<?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>67799</bug_id>
          
          <creation_ts>2011-09-08 13:31:11 -0700</creation_ts>
          <short_desc>[Qt][Mac] Build system can&apos;t handle dependencies for mm files</short_desc>
          <delta_ts>2012-02-02 10:12:10 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P1</priority>
          <bug_severity>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67839</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Csaba Osztrogonác">ossy</assigned_to>
          <cc>dihan.wickremasuriya</cc>
    
    <cc>kbalazs</cc>
    
    <cc>menard</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>ossy</cc>
    
    <cc>rafael.lobo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>464299</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-08 13:31:11 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/94774 broke the build on Qt-Mac platform:

Undefined symbols:
  &quot;JSC::JSCell::getUInt32(unsigned int&amp;) const&quot;, referenced from:
      vtable for JSC::JSCellin libwebcore.a(WebVideoFullscreenController.o)
      vtable for JSC::JSCellin libwebcore.a(WebVideoFullscreenHUDWindowController.o)
      vtable for JSC::JSCellin libwebcore.a(MediaPlayerPrivateQTKit.o)
ld: symbol(s) not found</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464300</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-08 13:32:25 -0700</bug_when>
    <thetext>Any idea why this is happening?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464304</commentid>
    <comment_count>2</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-08 13:33:41 -0700</bug_when>
    <thetext>I don&apos;t know anything about QtWebKit on Mac. Maybe Dihan or Alexis can check it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464329</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-08 13:52:49 -0700</bug_when>
    <thetext>Since this didn&apos;t break any of the other Qt bots, my guess would have to be that the bot is having an issue cleaning the build directory.  getUInt32 was removed from JSCell entirely and therefore should not be in the vtable for any class anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464738</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-09 04:58:15 -0700</bug_when>
    <thetext>Touching the folowing files solved the problem: 
platform/graphics/mac/MediaPlayerPrivateQTKit.mm
platform/mac/WebVideoFullscreenController.mm
platform/mac/WebVideoFullscreenHUDWindowController.mm

I touched them with r94845 and then I rolled out this hack with r94846.

It means that r94774 is correct, but our build system has a serious bug.
(I&apos;m afraid it is a qmake bug, not bug in WebKit pro files.) Alexis or Dihan, could you check the dependencies for these files in the Makefile?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465545</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-12 03:01:53 -0700</bug_when>
    <thetext>One more build broke the build because of this bug http://trac.webkit.org/changeset/94930</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466940</commentid>
    <comment_count>6</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-09-14 02:31:17 -0700</bug_when>
    <thetext>It seems like the dependency set of some mm files are really broken like these:

obj/release/WebVideoFullscreenController.o: ../../../Source/WebCore/platform/mac/WebVideoFullscreenController.mm
	$(CCACHE) /usr/bin/gcc-4.2 -c $(QMAKE_COMP_QMAKE_OBJECTIVE_CFLAGS) $(DEFINES) $(INCPATH) ../../../Source/WebCore/platform/mac/WebVideoFullscreenController.mm -o obj/release/WebVideoFullscreenController.o

obj/release/WebVideoFullscreenHUDWindowController.o: ../../../Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm
	$(CCACHE) /usr/bin/gcc-4.2 -c $(QMAKE_COMP_QMAKE_OBJECTIVE_CFLAGS) $(DEFINES) $(INCPATH) ../../../Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm -o obj/release/WebVideoFullscreenHUDWindowController.o

obj/release/WebWindowAnimation.o: ../../../Source/WebCore/platform/mac/WebWindowAnimation.mm
	$(CCACHE) /usr/bin/gcc-4.2 -c $(QMAKE_COMP_QMAKE_OBJECTIVE_CFLAGS) $(DEFINES) $(INCPATH) ../../../Source/WebCore/platform/mac/WebWindowAnimation.mm -o obj/release/WebWindowAnimation.o

However other mm files have correct dependencies like that:

obj/release/MediaPlayerPrivateQTKit.o: ../../../Source/WebCore/platform/graphics/GraphicsLayer.h \
		../../../Source/WebCore/platform/animation/Animation.h \
		../../../Source/WebCore/platform/text/PlatformString.h \
		../../../Source/JavaScriptCore/wtf/text/WTFString.h \
		../../../Source/JavaScriptCore/wtf/text/StringImpl.h \
		../../../Source/JavaScriptCore/wtf/ASCIICType.h \
		../../../Source/JavaScriptCore/wtf/Assertions.h \
		../../../Source/JavaScriptCore/wtf/Platform.h \
		../../../Source/JavaScriptCore/wtf/Compiler.h \
		../../../Source/JavaScriptCore/wtf/gobject/GTypedefs.h \
		../../../Source/JavaScriptCore/wtf/CrossThreadRefCounted.h \
		../../../Source/JavaScriptCore/wtf/PassRefPtr.h \
		../../../Source/JavaScriptCore/wtf/AlwaysInline.h \
		../../../Source/JavaScriptCore/wtf/NullPtr.h \
		../../../Source/JavaScriptCore/wtf/RefCounted.h \
		../../../Source/JavaScriptCore/wtf/FastAllocBase.h \
		../../../Source/JavaScriptCore/wtf/FastMalloc.h \
		../../../Source/JavaScriptCore/wtf/PossiblyNull.h \
		../../../Source/JavaScriptCore/wtf/TypeTraits.h \
		../../../Source/JavaScriptCore/wtf/ThreadRestrictionVerifier.h \
		../../../Source/JavaScriptCore/wtf/Threading.h \
		../../../Source/JavaScriptCore/wtf/Atomics.h \
		../../../Source/JavaScriptCore/wtf/Locker.h \
		../../../Source/JavaScriptCore/wtf/Noncopyable.h \
		../../../Source/JavaScriptCore/wtf/ThreadSafeRefCounted.h \
		../../../Source/JavaScriptCore/wtf/DynamicAnnotations.h \
		../../../Source/JavaScriptCore/wtf/ThreadingPrimitives.h \
		../../../Source/JavaScriptCore/wtf/gobject/GOwnPtr.h \
		/opt/local/include/QtCore/qglobal.h \
		/opt/local/include/QtCore/qconfig.h \
		/opt/local/include/QtCore/qfeatures.h \
		../../../Source/JavaScriptCore/wtf/OwnPtr.h \
		../../../Source/JavaScriptCore/wtf/OwnPtrCommon.h \
		../../../Source/JavaScriptCore/wtf/UnusedParam.h \
		../../../Source/JavaScriptCore/wtf/Forward.h \
		../../../Source/JavaScriptCore/wtf/OwnFastMallocPtr.h \
		../../../Source/JavaScriptCore/wtf/StdLibExtras.h \
		../../../Source/JavaScriptCore/wtf/StringHasher.h \
		../../../Source/JavaScriptCore/wtf/unicode/Unicode.h \
		../../../Source/JavaScriptCore/wtf/unicode/qt4/UnicodeQt4.h \
		../../../Source/JavaScriptCore/wtf/unicode/ScriptCodesFromICU.h \
		../../../Source/JavaScriptCore/wtf/unicode/UnicodeMacrosFromICU.h \
		/opt/local/include/QtCore/QChar \
		/opt/local/include/QtCore/qchar.h \
		/opt/local/include/QtCore/QString \
		/opt/local/include/QtCore/qstring.h \
		/opt/local/include/QtCore/qbytearray.h \
		/opt/local/include/QtCore/qatomic.h \
		/opt/local/include/QtCore/qbasicatomic.h \
		/opt/local/include/QtCore/qatomic_bootstrap.h \
		/opt/local/include/QtCore/qatomic_arch.h \
		/opt/local/include/QtCore/qatomic_vxworks.h \
		/opt/local/include/QtCore/qatomic_powerpc.h \
		/opt/local/include/QtCore/qatomic_alpha.h \
		/opt/local/include/QtCore/qatomic_arm.h \
		/opt/local/include/QtCore/qatomic_armv6.h \
		/opt/local/include/QtCore/qatomic_avr32.h \
		/opt/local/include/QtCore/qatomic_bfin.h \
		/opt/local/include/QtCore/qatomic_generic.h \
		/opt/local/include/QtCore/qatomic_i386.h \
		/opt/local/include/QtCore/qatomic_ia64.h \
		/opt/local/include/QtCore/qatomic_macosx.h \
		/opt/local/include/QtCore/qatomic_x86_64.h \
		/opt/local/include/QtCore/qatomic_mips.h \
		/opt/local/include/QtCore/qatomic_parisc.h \
		/opt/local/include/QtCore/qatomic_s390.h \
		/opt/local/include/QtCore/qatomic_sparc.h \
		/opt/local/include/QtCore/qatomic_windows.h \
		/opt/local/include/QtCore/qatomic_windowsce.h \
		/opt/local/include/QtCore/qatomic_symbian.h \
		/opt/local/include/QtCore/qatomic_sh.h \
		/opt/local/include/QtCore/qatomic_sh4a.h \
		/opt/local/include/QtCore/qnamespace.h \
		/opt/local/include/Qt3Support/q3cstring.h \
		/opt/local/include/QtCore/qstringbuilder.h \
		/opt/local/include/QtCore/qmap.h \
		/opt/local/include/QtCore/qiterator.h \
		/opt/local/include/QtCore/qlist.h \
		/opt/local/include/QtCore/qalgorithms.h \
		../../../Source/WebCore/config.h \
		../../../Source/JavaScriptCore/wtf/ExportMacros.h \
		../../../Source/JavaScriptCore/wtf/DisallowCType.h \
		../../../Source/WebCore/bridge/npruntime_internal.h \
		../../../Source/WebCore/plugins/npapi.h \
		../../../Source/WebCore/plugins/nptypes.h \
		/opt/local/include/QtCore/QEvent \
		/opt/local/include/QtCore/qcoreevent.h \
		/opt/local/include/QtCore/qobjectdefs.h \
		/opt/local/include/QtGui/QRegion \
		/opt/local/include/QtGui/qregion.h \
		/opt/local/include/QtCore/qrect.h \
		/opt/local/include/QtCore/qsize.h \
		/opt/local/include/QtCore/qpoint.h \
		/opt/local/include/QtGui/qwindowdefs.h \
		/opt/local/include/QtGui/qmacdefines_mac.h \
		/opt/local/include/QtGui/qwindowdefs_win.h \
		/opt/local/include/QtCore/qdatastream.h \
		/opt/local/include/QtCore/qscopedpointer.h \
		/opt/local/include/QtCore/qiodevice.h \
		/opt/local/include/QtCore/qobject.h \
		../../../Source/WebCore/plugins/npfunctions.h \
		../../../Source/WebCore/plugins/npruntime.h \
		../../../Source/JavaScriptCore/wtf/unicode/icu/UnicodeIcu.h \
		../../../Source/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h \
		../../../Source/JavaScriptCore/wtf/unicode/wince/UnicodeWinCE.h \
		../../../Source/JavaScriptCore/wtf/unicode/brew/UnicodeBrew.h \
		../../../Source/JavaScriptCore/wtf/Vector.h \
		../../../Source/JavaScriptCore/wtf/NotFound.h \
		../../../Source/JavaScriptCore/wtf/ValueCheck.h \
		../../../Source/JavaScriptCore/wtf/VectorTraits.h \
		../../../Source/JavaScriptCore/wtf/RefPtr.h \
		../../../Source/JavaScriptCore/wtf/Alignment.h \
		/opt/local/include/QtCore/QDataStream \
		../../../Source/JavaScriptCore/wtf/text/StringImplBase.h \
		../../../Source/JavaScriptCore/wtf/text/AtomicString.h \
		../../../Source/JavaScriptCore/wtf/text/AtomicStringImpl.h \
		../../../Source/JavaScriptCore/wtf/text/StringConcatenate.h \
		../../../Source/JavaScriptCore/wtf/text/StringOperators.h \
		../../../Source/WebCore/rendering/style/RenderStyleConstants.h \
		../../../Source/WebCore/platform/animation/TimingFunction.h \
		../../../Source/WebCore/platform/graphics/Color.h \
		../../../Source/WebCore/platform/graphics/ColorSpace.h \
		../../../Source/WebCore/platform/graphics/FloatPoint.h \
		../../../Source/WebCore/platform/graphics/FloatSize.h \
		../../../Source/WebCore/platform/graphics/IntPoint.h \
		../../../Source/WebCore/platform/graphics/IntSize.h \
		../../../Source/JavaScriptCore/wtf/MathExtras.h \
		../../../Source/WebCore/platform/graphics/FloatPoint3D.h \
		../../../Source/WebCore/platform/graphics/GraphicsLayerClient.h \
		../../../Source/WebCore/platform/graphics/IntRect.h \
		../../../Source/WebCore/platform/graphics/transforms/TransformationMatrix.h \
		/opt/local/include/QtGui/QTransform \
		/opt/local/include/QtGui/qtransform.h \
		/opt/local/include/QtGui/qmatrix.h \
		/opt/local/include/QtGui/qpolygon.h \
		/opt/local/include/QtCore/qvector.h \
		/opt/local/include/QtCore/QPointF \
		/opt/local/include/QtCore/QPoint \
		/opt/local/include/QtCore/qline.h \
		/opt/local/include/QtGui/qwmatrix.h \
		/opt/local/include/QtGui/qpainterpath.h \
		../../../Source/WebCore/platform/graphics/transforms/TransformOperations.h \
		../../../Source/WebCore/platform/graphics/transforms/TransformOperation.h \
		../../../Source/JavaScriptCore/wtf/PassOwnPtr.h \
		../../../Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm
	$(CCACHE) /usr/bin/gcc-4.2 -c $(QMAKE_COMP_QMAKE_OBJECTIVE_CFLAGS) $(DEFINES) $(INCPATH) ../../../Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm -o obj/release/MediaPlayerPrivateQTKit.o

In WebCore.pro these 4 files are in the same section so I don&apos;t know what is the difference between them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466948</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-14 02:41:44 -0700</bug_when>
    <thetext>Could you check the preprocessed source? (with -E -dD options)
It can help you to find where the missing header is included.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466979</commentid>
    <comment_count>8</comment_count>
      <attachid>107320</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-09-14 05:24:59 -0700</bug_when>
    <thetext>Created attachment 107320
preprocessed WebVideoFullscreenController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466980</commentid>
    <comment_count>9</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-09-14 05:26:00 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Could you check the preprocessed source? (with -E -dD options)
&gt; It can help you to find where the missing header is included.

I don&apos;t know how will we become smarter by this so I uploaded it for you :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466982</commentid>
    <comment_count>10</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-09-14 05:42:07 -0700</bug_when>
    <thetext>I have now idea how to fix this or what is the reason of this issue so I postpone it to somebody with a better knowledge in qmake and the build system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467708</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-15 02:00:38 -0700</bug_when>
    <thetext>One more build fail because of this bug: http://trac.webkit.org/changeset/95167</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467709</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-15 02:01:39 -0700</bug_when>
    <thetext>It is a blocker bug, because now our SL builder is absolutely unreliable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467740</commentid>
    <comment_count>13</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-09-15 05:12:20 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; It is a blocker bug, because now our SL builder is absolutely unreliable.

Come on. Don&apos;t be so dramatic, the bot worked absolutely fine until recent changes that shows up this bug. It did 1000+ builds without a glitch. Unless someone finds the time and the willing to fix the qmake bug, then I&apos;m fine with cleaning the build some time to time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467742</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-15 05:20:50 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; It is a blocker bug, because now our SL builder is absolutely unreliable.
&gt; 
&gt; Come on. Don&apos;t be so dramatic, the bot worked absolutely fine until recent changes that shows up this bug. It did 1000+ builds without a glitch. Unless someone finds the time and the willing to fix the qmake bug, then I&apos;m fine with cleaning the build some time to time.

There wasn&apos;t a problem for a long time. But this bug cause two false positive alarm in this week. And will do regularly when JSC developers touch JSCell.h, JSObject.h, ... Because of regularly false positive red bot, developers won&apos;t trust the SL bot. And if it turns red, they will say, it must be a flakiness, and won&apos;t think if they caused a regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473696</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-26 23:18:27 -0700</bug_when>
    <thetext>One more fail because of this bug: http://trac.webkit.org/changeset/96045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474193</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-27 13:36:20 -0700</bug_when>
    <thetext>One more fail because of http://trac.webkit.org/changeset/96143

I&apos;m fed up with this bug ... :-/ Tomorrow I&apos;ll fix it myself if nobody is interested in fixing it ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480867</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-10 01:20:02 -0700</bug_when>
    <thetext>I think I got it. It seems qmake can&apos;t handle the &quot;#import&quot; keyword.
I&apos;m going to fix it ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481622</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-11 07:38:51 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; I think I got it. It seems qmake can&apos;t handle the &quot;#import&quot; keyword.
&gt; I&apos;m going to fix it ASAP.

It is a qmake bug: https://bugreports.qt.nokia.com/browse/QTBUG-21965</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482675</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-10-12 13:52:11 -0700</bug_when>
    <thetext>Just a heads up, there&apos;s another patch that just landed that might trigger this bug (r97292).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482681</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-10-12 14:04:55 -0700</bug_when>
    <thetext>Nevermind, false alarm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484460</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-10-14 19:02:18 -0700</bug_when>
    <thetext>Another failure on the SL bot due to this bug.  Need a clean build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484561</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-15 02:27:20 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Another failure on the SL bot due to this bug.  Need a clean build.

Thanks for the heads-up. This bug is fixed in Qt trunk, we won&apos;t need clean build anymore after final Qt 4.8 release. (I hope it will be released in a month.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489082</commentid>
    <comment_count>23</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-10-23 17:23:59 -0700</bug_when>
    <thetext>Another failure @ r98203.  Sorry again guys.  There will probably be a few more of these within the next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489174</commentid>
    <comment_count>24</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-10-23 22:22:00 -0700</bug_when>
    <thetext>Rafael, could you please have a look when needed (make a clean build) while I&apos;m away.

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489677</commentid>
    <comment_count>25</comment_count>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2011-10-24 14:59:49 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Rafael, could you please have a look when needed (make a clean build) while I&apos;m away.
&gt; 
&gt; Thanks

When I came to the office today the build bot seemed to be working fine so I didn&apos;t touch it, but I&apos;ll keep an eye on it. If you need anything just give me a heads up via email.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547958</commentid>
    <comment_count>26</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-02 10:12:10 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; I think I got it. It seems qmake can&apos;t handle the &quot;#import&quot; keyword.
&gt; &gt; I&apos;m going to fix it ASAP.
&gt; 
&gt; It is a qmake bug: https://bugreports.qt.nokia.com/browse/QTBUG-21965

It is fixed in released Qt 4.8.0.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>107320</attachid>
            <date>2011-09-14 05:24:59 -0700</date>
            <delta_ts>2011-09-14 05:24:59 -0700</delta_ts>
            <desc>preprocessed WebVideoFullscreenController</desc>
            <filename>WebVideoFullscreenController.id</filename>
            <type>application/octet-stream</type>
            <size>6840774</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">IyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbSIKIyAxICIvVXNlcnMvYmFsYXpzL1dlYktpdEdpdC9xdEJ1aWxkL1Jl
bGVhc2UvV2ViQ29yZS8vIgojIDEgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TVERDX18gMQojZGVm
aW5lIF9fY3BsdXNwbHVzIDEKI2RlZmluZSBfX1NURENfSE9TVEVEX18gMQojZGVmaW5lIF9fT0JK
Q19fIDEKI2RlZmluZSBfX0dOVUNfXyA0CiNkZWZpbmUgX19HTlVHX18gNAojZGVmaW5lIF9fR05V
Q19NSU5PUl9fIDIKI2RlZmluZSBfX0dOVUNfUEFUQ0hMRVZFTF9fIDEKI2RlZmluZSBfX0FQUExF
X0NDX18gNTY2NgojZGVmaW5lIF9fU0laRV9UWVBFX18gbG9uZyB1bnNpZ25lZCBpbnQKI2RlZmlu
ZSBfX1BUUkRJRkZfVFlQRV9fIGxvbmcgaW50CiNkZWZpbmUgX19XQ0hBUl9UWVBFX18gaW50CiNk
ZWZpbmUgX19XSU5UX1RZUEVfXyBpbnQKI2RlZmluZSBfX0lOVE1BWF9UWVBFX18gbG9uZyBpbnQK
I2RlZmluZSBfX1VJTlRNQVhfVFlQRV9fIGxvbmcgdW5zaWduZWQgaW50CiNkZWZpbmUgX19HWFhf
V0VBS19fIDEKI2RlZmluZSBfX0RFUFJFQ0FURUQgMQojZGVmaW5lIF9fRVhDRVBUSU9OUyAxCiNk
ZWZpbmUgX19HWFhfQUJJX1ZFUlNJT04gMTAwMgojZGVmaW5lIF9fU0NIQVJfTUFYX18gMTI3CiNk
ZWZpbmUgX19TSFJUX01BWF9fIDMyNzY3CiNkZWZpbmUgX19JTlRfTUFYX18gMjE0NzQ4MzY0Nwoj
ZGVmaW5lIF9fTE9OR19NQVhfXyA5MjIzMzcyMDM2ODU0Nzc1ODA3TAojZGVmaW5lIF9fTE9OR19M
T05HX01BWF9fIDkyMjMzNzIwMzY4NTQ3NzU4MDdMTAojZGVmaW5lIF9fV0NIQVJfTUFYX18gMjE0
NzQ4MzY0NwojZGVmaW5lIF9fQ0hBUl9CSVRfXyA4CiNkZWZpbmUgX19JTlRNQVhfTUFYX18gOTIy
MzM3MjAzNjg1NDc3NTgwN0wKI2RlZmluZSBfX0ZMVF9FVkFMX01FVEhPRF9fIDAKI2RlZmluZSBf
X0RFQ19FVkFMX01FVEhPRF9fIDIKI2RlZmluZSBfX0ZMVF9SQURJWF9fIDIKI2RlZmluZSBfX0ZM
VF9NQU5UX0RJR19fIDI0CiNkZWZpbmUgX19GTFRfRElHX18gNgojZGVmaW5lIF9fRkxUX01JTl9F
WFBfXyAoLTEyNSkKI2RlZmluZSBfX0ZMVF9NSU5fMTBfRVhQX18gKC0zNykKI2RlZmluZSBfX0ZM
VF9NQVhfRVhQX18gMTI4CiNkZWZpbmUgX19GTFRfTUFYXzEwX0VYUF9fIDM4CiNkZWZpbmUgX19G
TFRfTUFYX18gMy40MDI4MjM0N2UrMzhGCiNkZWZpbmUgX19GTFRfTUlOX18gMS4xNzU0OTQzNWUt
MzhGCiNkZWZpbmUgX19GTFRfRVBTSUxPTl9fIDEuMTkyMDkyOTBlLTdGCiNkZWZpbmUgX19GTFRf
REVOT1JNX01JTl9fIDEuNDAxMjk4NDZlLTQ1RgojZGVmaW5lIF9fRkxUX0hBU19ERU5PUk1fXyAx
CiNkZWZpbmUgX19GTFRfSEFTX0lORklOSVRZX18gMQojZGVmaW5lIF9fRkxUX0hBU19RVUlFVF9O
QU5fXyAxCiNkZWZpbmUgX19EQkxfTUFOVF9ESUdfXyA1MwojZGVmaW5lIF9fREJMX0RJR19fIDE1
CiNkZWZpbmUgX19EQkxfTUlOX0VYUF9fICgtMTAyMSkKI2RlZmluZSBfX0RCTF9NSU5fMTBfRVhQ
X18gKC0zMDcpCiNkZWZpbmUgX19EQkxfTUFYX0VYUF9fIDEwMjQKI2RlZmluZSBfX0RCTF9NQVhf
MTBfRVhQX18gMzA4CiNkZWZpbmUgX19EQkxfTUFYX18gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgK
I2RlZmluZSBfX0RCTF9NSU5fXyAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOAojZGVmaW5lIF9fREJM
X0VQU0lMT05fXyAyLjIyMDQ0NjA0OTI1MDMxMzFlLTE2CiNkZWZpbmUgX19EQkxfREVOT1JNX01J
Tl9fIDQuOTQwNjU2NDU4NDEyNDY1NGUtMzI0CiNkZWZpbmUgX19EQkxfSEFTX0RFTk9STV9fIDEK
I2RlZmluZSBfX0RCTF9IQVNfSU5GSU5JVFlfXyAxCiNkZWZpbmUgX19EQkxfSEFTX1FVSUVUX05B
Tl9fIDEKI2RlZmluZSBfX0xEQkxfTUFOVF9ESUdfXyA2NAojZGVmaW5lIF9fTERCTF9ESUdfXyAx
OAojZGVmaW5lIF9fTERCTF9NSU5fRVhQX18gKC0xNjM4MSkKI2RlZmluZSBfX0xEQkxfTUlOXzEw
X0VYUF9fICgtNDkzMSkKI2RlZmluZSBfX0xEQkxfTUFYX0VYUF9fIDE2Mzg0CiNkZWZpbmUgX19M
REJMX01BWF8xMF9FWFBfXyA0OTMyCiNkZWZpbmUgX19ERUNJTUFMX0RJR19fIDIxCiNkZWZpbmUg
X19MREJMX01BWF9fIDEuMTg5NzMxNDk1MzU3MjMxNzY1MDJlKzQ5MzJMCiNkZWZpbmUgX19MREJM
X01JTl9fIDMuMzYyMTAzMTQzMTEyMDkzNTA2MjZlLTQ5MzJMCiNkZWZpbmUgX19MREJMX0VQU0lM
T05fXyAxLjA4NDIwMjE3MjQ4NTUwNDQzNDAxZS0xOUwKI2RlZmluZSBfX0xEQkxfREVOT1JNX01J
Tl9fIDMuNjQ1MTk5NTMxODgyNDc0NjAyNTNlLTQ5NTFMCiNkZWZpbmUgX19MREJMX0hBU19ERU5P
Uk1fXyAxCiNkZWZpbmUgX19MREJMX0hBU19JTkZJTklUWV9fIDEKI2RlZmluZSBfX0xEQkxfSEFT
X1FVSUVUX05BTl9fIDEKI2RlZmluZSBfX0RFQzMyX01BTlRfRElHX18gNwojZGVmaW5lIF9fREVD
MzJfTUlOX0VYUF9fICgtOTUpCiNkZWZpbmUgX19ERUMzMl9NQVhfRVhQX18gOTYKI2RlZmluZSBf
X0RFQzMyX01JTl9fIDFFLTk1REYKI2RlZmluZSBfX0RFQzMyX01BWF9fIDkuOTk5OTk5RTk2REYK
I2RlZmluZSBfX0RFQzMyX0VQU0lMT05fXyAxRS02REYKI2RlZmluZSBfX0RFQzMyX0RFTl9fIDAu
MDAwMDAxRS05NURGCiNkZWZpbmUgX19ERUM2NF9NQU5UX0RJR19fIDE2CiNkZWZpbmUgX19ERUM2
NF9NSU5fRVhQX18gKC0zODMpCiNkZWZpbmUgX19ERUM2NF9NQVhfRVhQX18gMzg0CiNkZWZpbmUg
X19ERUM2NF9NSU5fXyAxRS0zODNERAojZGVmaW5lIF9fREVDNjRfTUFYX18gOS45OTk5OTk5OTk5
OTk5OTlFMzg0REQKI2RlZmluZSBfX0RFQzY0X0VQU0lMT05fXyAxRS0xNURECiNkZWZpbmUgX19E
RUM2NF9ERU5fXyAwLjAwMDAwMDAwMDAwMDAwMUUtMzgzREQKI2RlZmluZSBfX0RFQzEyOF9NQU5U
X0RJR19fIDM0CiNkZWZpbmUgX19ERUMxMjhfTUlOX0VYUF9fICgtNjE0MykKI2RlZmluZSBfX0RF
QzEyOF9NQVhfRVhQX18gNjE0NAojZGVmaW5lIF9fREVDMTI4X01JTl9fIDFFLTYxNDNETAojZGVm
aW5lIF9fREVDMTI4X01BWF9fIDkuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5RTYx
NDRETAojZGVmaW5lIF9fREVDMTI4X0VQU0lMT05fXyAxRS0zM0RMCiNkZWZpbmUgX19ERUMxMjhf
REVOX18gMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFFLTYxNDNETAojZGVmaW5l
IF9fUkVHSVNURVJfUFJFRklYX18gCiNkZWZpbmUgX19VU0VSX0xBQkVMX1BSRUZJWF9fIF8KI2Rl
ZmluZSBfX1ZFUlNJT05fXyAiNC4yLjEgKEFwcGxlIEluYy4gYnVpbGQgNTY2NikgKGRvdCAzKSIK
I2RlZmluZSBfX0dOVUNfR05VX0lOTElORV9fIDEKI2RlZmluZSBfTFA2NCAxCiNkZWZpbmUgX19M
UDY0X18gMQojZGVmaW5lIF9fQkxPQ0tTX18gMQojZGVmaW5lIF9fTk9fSU5MSU5FX18gMQojZGVm
aW5lIF9fRklOSVRFX01BVEhfT05MWV9fIDAKI2RlZmluZSBfX3BpY19fIDIKI2RlZmluZSBfX1BJ
Q19fIDIKI2RlZmluZSBfX05FWFRfUlVOVElNRV9fIDEKI2RlZmluZSBfX1NTUF9fIDEKI2RlZmlu
ZSBfX2FtZDY0IDEKI2RlZmluZSBfX2FtZDY0X18gMQojZGVmaW5lIF9feDg2XzY0IDEKI2RlZmlu
ZSBfX3g4Nl82NF9fIDEKI2RlZmluZSBfX3R1bmVfY29yZTJfXyAxCiNkZWZpbmUgX19NTVhfXyAx
CiNkZWZpbmUgX19TU0VfXyAxCiNkZWZpbmUgX19TU0UyX18gMQojZGVmaW5lIF9fU1NFM19fIDEK
I2RlZmluZSBfX1NTRV9NQVRIX18gMQojZGVmaW5lIF9fU1NFMl9NQVRIX18gMQojZGVmaW5lIF9f
azggMQojZGVmaW5lIF9fazhfXyAxCiNkZWZpbmUgX19MSVRUTEVfRU5ESUFOX18gMQojZGVmaW5l
IF9fTUFDSF9fIDEKI2RlZmluZSBfX0FQUExFX18gMQojZGVmaW5lIF9fRU5WSVJPTk1FTlRfTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRURfXyAxMDYwCiNkZWZpbmUgX19DT05TVEFOVF9DRlNU
UklOR1NfXyAxCiNkZWZpbmUgX19zdHJvbmcgCiNkZWZpbmUgX193ZWFrIF9fYXR0cmlidXRlX18o
KG9iamNfZ2Mod2VhaykpKQojZGVmaW5lIF9fYmxvY2sgX19hdHRyaWJ1dGVfXygoX19ibG9ja3Nf
XyhieXJlZikpKQojZGVmaW5lIF9fT0JKQzJfXyAxCiNkZWZpbmUgT0JKQ19aRVJPQ09TVF9FWENF
UFRJT05TIDEKI2RlZmluZSBPQkpDX05FV19QUk9QRVJUSUVTIDEKIyAxICI8Y29tbWFuZC1saW5l
PiIKI2RlZmluZSBfX0RZTkFNSUNfXyAxCiNkZWZpbmUgX19BU1NFUlRfTUFDUk9TX0RFRklORV9W
RVJTSU9OU19XSVRIT1VUX1VOREVSU0NPUkVTIDAKI2RlZmluZSBCVUlMRElOR19RVF9fIDEKI2Rl
ZmluZSBRVF9BU0NJSV9DQVNUX1dBUk5JTkdTIDEKI2RlZmluZSBXVEZfVVNFX1FUNF9VTklDT0RF
IDEKI2RlZmluZSBFTkFCTEVfU1ZHX0ZPTlRTIDAKI2RlZmluZSBFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUiAxCiNkZWZpbmUgRU5BQkxFX0RBVEFCQVNFIDEKI2RlZmluZSBFTkFCTEVfRVZFTlRT
T1VSQ0UgMQojZGVmaW5lIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgMQojZGVmaW5l
IEVOQUJMRV9ET01fU1RPUkFHRSAxCiNkZWZpbmUgRU5BQkxFX0lDT05EQVRBQkFTRSAxCiNkZWZp
bmUgRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HIDEKI2RlZmluZSBFTkFCTEVfRElSRUNUT1JZX1VQ
TE9BRCAwCiNkZWZpbmUgRU5BQkxFX0ZJTEVfU1lTVEVNIDAKI2RlZmluZSBFTkFCTEVfUVVPVEEg
MAojZGVmaW5lIEVOQUJMRV9TUUxJVEUgMQojZGVmaW5lIEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9S
VCAwCiNkZWZpbmUgRU5BQkxFX0ZJTFRFUlMgMQojZGVmaW5lIEVOQUJMRV9YUEFUSCAxCiNkZWZp
bmUgRU5BQkxFX1dDU1MgMAojZGVmaW5lIEVOQUJMRV9TSEFSRURfV09SS0VSUyAxCiNkZWZpbmUg
RU5BQkxFX1dPUktFUlMgMQojZGVmaW5lIEVOQUJMRV9YSFRNTE1QIDAKI2RlZmluZSBFTkFCTEVf
REVUQUlMUyAxCiNkZWZpbmUgRU5BQkxFX01FVEVSX1RBRyAxCiNkZWZpbmUgRU5BQkxFX01IVE1M
IDAKI2RlZmluZSBFTkFCTEVfUFJPR1JFU1NfVEFHIDEKI2RlZmluZSBFTkFCTEVfQkxPQiAxCiNk
ZWZpbmUgRU5BQkxFX05PVElGSUNBVElPTlMgMQojZGVmaW5lIEVOQUJMRV9JTlBVVF9DT0xPUiAw
CiNkZWZpbmUgRU5BQkxFX0lOUFVUX1NQRUVDSCAwCiNkZWZpbmUgRU5BQkxFX0lOU1BFQ1RPUiAx
CiNkZWZpbmUgRU5BQkxFXzNEX1JFTkRFUklORyAxCiNkZWZpbmUgRU5BQkxFX1dFQl9BVURJTyAw
CiNkZWZpbmUgRU5BQkxFX01FRElBX1NPVVJDRSAwCiNkZWZpbmUgRU5BQkxFX01FRElBX1NUQVRJ
U1RJQ1MgMAojZGVmaW5lIEVOQUJMRV9NRURJQV9TVFJFQU0gMAojZGVmaW5lIEVOQUJMRV9WSURF
T19UUkFDSyAwCiNkZWZpbmUgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyAwCiNkZWZpbmUgRU5B
QkxFX0FOSU1BVElPTl9BUEkgMAojZGVmaW5lIEVOQUJMRV9TVkcgMQojZGVmaW5lIEVOQUJMRV9T
VkdfRk9SRUlHTl9PQkpFQ1QgMQojZGVmaW5lIEVOQUJMRV9TVkdfQU5JTUFUSU9OIDEKI2RlZmlu
ZSBFTkFCTEVfU1ZHX0FTX0lNQUdFIDEKI2RlZmluZSBFTkFCTEVfU1ZHX1VTRSAxCiNkZWZpbmUg
RU5BQkxFX0RBVEFMSVNUIDEKI2RlZmluZSBFTkFCTEVfVElMRURfQkFDS0lOR19TVE9SRSAxCiNk
ZWZpbmUgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgMQojZGVmaW5lIEVOQUJMRV9XRUJHTCAx
CiNkZWZpbmUgRU5BQkxFX1dFQl9TT0NLRVRTIDEKI2RlZmluZSBFTkFCTEVfV0VCX1RJTUlORyAx
CiNkZWZpbmUgRU5BQkxFX1hTTFQgMQojZGVmaW5lIEVOQUJMRV9HRU9MT0NBVElPTiAxCiNkZWZp
bmUgRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTiAxCiNkZWZpbmUgRU5BQkxFX09SSUVO
VEFUSU9OX0VWRU5UUyAxCiNkZWZpbmUgRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiAxCiNkZWZp
bmUgRU5BQkxFX1RPVUNIX0VWRU5UUyAxCiNkZWZpbmUgRU5BQkxFX1ZJREVPIDEKI2RlZmluZSBX
VEZfVVNFX1FUS0lUIDEKI2RlZmluZSBXVEZfVVNFX1RFWFRVUkVfTUFQUEVSIDEKI2RlZmluZSBX
VEZfVVNFX1RFWFRVUkVfTUFQUEVSX0dMIDEKI2RlZmluZSBCVUlMRElOR19KYXZhU2NyaXB0Q29y
ZSAxCiNkZWZpbmUgQlVJTERJTkdfV1RGIDEKI2RlZmluZSBXVEZfVVNFX1FUNF9VTklDT0RFIDEK
I2RlZmluZSBCVUlMRElOR19XRUJLSVQgMQojZGVmaW5lIFFUX01BS0VETEwgMQojZGVmaW5lIE5T
R0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTIDEKI2RlZmluZSBRVF9PUEVO
R0xfU0hJTVMgMQojZGVmaW5lIFFUX1hNTFBBVFRFUk5TX0xJQiAxCiNkZWZpbmUgUVRfT1BFTkdM
X0xJQiAxCiNkZWZpbmUgUVRfR1VJX0xJQiAxCiNkZWZpbmUgUVRfTkVUV09SS19MSUIgMQojZGVm
aW5lIFFUX0NPUkVfTElCIDEKI2RlZmluZSBRVF9TSEFSRUQgMQojZGVmaW5lIF9fcHJpdmF0ZV9l
eHRlcm5fXyBleHRlcm4KIyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSIKIyAyNiAiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0iCiMgMSAi
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvY29uZmlnLmgiIDEKIyAzMCAiLi4vLi4vLi4vU291cmNl
L1dlYkNvcmUvY29uZmlnLmgiCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oIiAxCiMgMjkgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaCIKI2RlZmluZSBXVEZfUGxhdGZvcm1faCAKCgojIDEgIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQ29tcGlsZXIuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0NvbXBpbGVyLmgiCiNkZWZpbmUgV1RGX0NvbXBpbGVyX2ggCgoK
I2RlZmluZSBDT01QSUxFUihXVEZfRkVBVFVSRSkgKGRlZmluZWQgV1RGX0NPTVBJTEVSXyAjI1dU
Rl9GRUFUVVJFICYmIFdURl9DT01QSUxFUl8gIyNXVEZfRkVBVFVSRSkKIyA1OCAiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Db21waWxlci5oIgojZGVmaW5lIFJWQ1RfVkVSU0lP
Tl9BVF9MRUFTVChtYWpvcixtaW5vcixwYXRjaCxidWlsZCkgMAojIDcxICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0NvbXBpbGVyLmgiCiNkZWZpbmUgV1RGX0NPTVBJTEVSX0dD
QyAxCiNkZWZpbmUgR0NDX1ZFUlNJT04gKF9fR05VQ19fICogMTAwMDAgKyBfX0dOVUNfTUlOT1Jf
XyAqIDEwMCArIF9fR05VQ19QQVRDSExFVkVMX18pCiNkZWZpbmUgR0NDX1ZFUlNJT05fQVRfTEVB
U1QobWFqb3IsbWlub3IscGF0Y2gpIChHQ0NfVkVSU0lPTiA+PSAobWFqb3IgKiAxMDAwMCArIG1p
bm9yICogMTAwICsgcGF0Y2gpKQojIDExOSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9Db21waWxlci5oIgojZGVmaW5lIEFMV0FZU19JTkxJTkUgaW5saW5lCiMgMTI4ICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NvbXBpbGVyLmgiCiNkZWZpbmUgTkVWRVJf
SU5MSU5FIF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpCiMgMTQxICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0NvbXBpbGVyLmgiCiNkZWZpbmUgVU5MSUtFTFkoeCkgX19i
dWlsdGluX2V4cGVjdCgoeCksIDApCiMgMTUyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0NvbXBpbGVyLmgiCiNkZWZpbmUgTElLRUxZKHgpIF9fYnVpbHRpbl9leHBlY3QoKHgp
LCAxKQojIDE2NCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Db21waWxlci5o
IgojZGVmaW5lIE5PX1JFVFVSTiBfX2F0dHJpYnV0ZSgoX19ub3JldHVybl9fKSkKIyAxNzcgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ29tcGlsZXIuaCIKI2RlZmluZSBOT19S
RVRVUk5fV0lUSF9WQUxVRSBOT19SRVRVUk4KIyAxODcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQ29tcGlsZXIuaCIKI2RlZmluZSBXQVJOX1VOVVNFRF9SRVRVUk4gX19hdHRy
aWJ1dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpCiMgMzMgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCIgMgoKCgoKI2RlZmluZSBQTEFURk9STShXVEZfRkVB
VFVSRSkgKGRlZmluZWQgV1RGX1BMQVRGT1JNXyAjI1dURl9GRUFUVVJFICYmIFdURl9QTEFURk9S
TV8gIyNXVEZfRkVBVFVSRSkKCgoKCgojZGVmaW5lIENQVShXVEZfRkVBVFVSRSkgKGRlZmluZWQg
V1RGX0NQVV8gIyNXVEZfRkVBVFVSRSAmJiBXVEZfQ1BVXyAjI1dURl9GRUFUVVJFKQoKI2RlZmlu
ZSBIQVZFKFdURl9GRUFUVVJFKSAoZGVmaW5lZCBIQVZFXyAjI1dURl9GRUFUVVJFICYmIEhBVkVf
ICMjV1RGX0ZFQVRVUkUpCgoKI2RlZmluZSBPUyhXVEZfRkVBVFVSRSkgKGRlZmluZWQgV1RGX09T
XyAjI1dURl9GRUFUVVJFICYmIFdURl9PU18gIyNXVEZfRkVBVFVSRSkKCgoKCgojZGVmaW5lIFVT
RShXVEZfRkVBVFVSRSkgKGRlZmluZWQgV1RGX1VTRV8gIyNXVEZfRkVBVFVSRSAmJiBXVEZfVVNF
XyAjI1dURl9GRUFUVVJFKQoKI2RlZmluZSBFTkFCTEUoV1RGX0ZFQVRVUkUpIChkZWZpbmVkIEVO
QUJMRV8gIyNXVEZfRkVBVFVSRSAmJiBFTkFCTEVfICMjV1RGX0ZFQVRVUkUpCiMgMTYzICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgV1RGX0NQ
VV9YODZfNjQgMQojIDMxOCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oIgojZGVmaW5lIFdURl9PU19EQVJXSU4gMQoKCiMgMSAiL3Vzci9pbmNsdWRlL0F2YWls
YWJpbGl0eU1hY3Jvcy5oIiAxIDMgNAojIDg2ICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5TWFj
cm9zLmgiIDMgNAojZGVmaW5lIF9fQVZBSUxBQklMSVRZTUFDUk9TX18gCgoKCgoKI2RlZmluZSBN
QUNfT1NfWF9WRVJTSU9OXzEwXzAgMTAwMAojZGVmaW5lIE1BQ19PU19YX1ZFUlNJT05fMTBfMSAx
MDEwCiNkZWZpbmUgTUFDX09TX1hfVkVSU0lPTl8xMF8yIDEwMjAKI2RlZmluZSBNQUNfT1NfWF9W
RVJTSU9OXzEwXzMgMTAzMAojZGVmaW5lIE1BQ19PU19YX1ZFUlNJT05fMTBfNCAxMDQwCiNkZWZp
bmUgTUFDX09TX1hfVkVSU0lPTl8xMF81IDEwNTAKI2RlZmluZSBNQUNfT1NfWF9WRVJTSU9OXzEw
XzYgMTA2MAojIDExMiAiL3Vzci9pbmNsdWRlL0F2YWlsYWJpbGl0eU1hY3Jvcy5oIiAzIDQKI2Rl
ZmluZSBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCBfX0VOVklST05NRU5UX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEX18KIyAxMzEgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlN
YWNyb3MuaCIgMyA0CiNkZWZpbmUgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCBNQUNfT1Nf
WF9WRVJTSU9OXzEwXzYKIyAxNDkgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlNYWNyb3MuaCIg
MyA0CiNkZWZpbmUgV0VBS19JTVBPUlRfQVRUUklCVVRFIF9fYXR0cmlidXRlX18oKHdlYWtfaW1w
b3J0KSkKIyAxNjAgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlNYWNyb3MuaCIgMyA0CiNkZWZp
bmUgREVQUkVDQVRFRF9BVFRSSUJVVEUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpCiMgMTY5
ICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5TWFjcm9zLmgiIDMgNAojZGVmaW5lIFVOQVZBSUxB
QkxFX0FUVFJJQlVURSBfX2F0dHJpYnV0ZV9fKCh1bmF2YWlsYWJsZSkpCiMgMTgxICIvdXNyL2lu
Y2x1ZGUvQXZhaWxhYmlsaXR5TWFjcm9zLmgiIDMgNAojZGVmaW5lIEFWQUlMQUJMRV9NQUNfT1Nf
WF9WRVJTSU9OXzEwXzBfQU5EX0xBVEVSIAoKCgoKCgoKI2RlZmluZSBBVkFJTEFCTEVfTUFDX09T
X1hfVkVSU0lPTl8xMF8wX0FORF9MQVRFUl9CVVRfREVQUkVDQVRFRCBERVBSRUNBVEVEX0FUVFJJ
QlVURQoKCgoKCgojZGVmaW5lIERFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF8wX0FO
RF9MQVRFUiBERVBSRUNBVEVEX0FUVFJJQlVURQojIDIxMyAiL3Vzci9pbmNsdWRlL0F2YWlsYWJp
bGl0eU1hY3Jvcy5oIiAzIDQKI2RlZmluZSBBVkFJTEFCTEVfTUFDX09TX1hfVkVSU0lPTl8xMF8x
X0FORF9MQVRFUiAKIyAyMjMgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlNYWNyb3MuaCIgMyA0
CiNkZWZpbmUgQVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05fMTBfMV9BTkRfTEFURVJfQlVUX0RF
UFJFQ0FURUQgREVQUkVDQVRFRF9BVFRSSUJVVEUKIyAyMzUgIi91c3IvaW5jbHVkZS9BdmFpbGFi
aWxpdHlNYWNyb3MuaCIgMyA0CiNkZWZpbmUgQVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05fMTBf
MF9BTkRfTEFURVJfQlVUX0RFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF8xIERFUFJF
Q0FURURfQVRUUklCVVRFCiMgMjQ2ICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5TWFjcm9zLmgi
IDMgNAojZGVmaW5lIERFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF8xX0FORF9MQVRF
UiBERVBSRUNBVEVEX0FUVFJJQlVURQojIDI2NyAiL3Vzci9pbmNsdWRlL0F2YWlsYWJpbGl0eU1h
Y3Jvcy5oIiAzIDQKI2RlZmluZSBBVkFJTEFCTEVfTUFDX09TX1hfVkVSU0lPTl8xMF8yX0FORF9M
QVRFUiAKIyAyNzcgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlNYWNyb3MuaCIgMyA0CiNkZWZp
bmUgQVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05fMTBfMl9BTkRfTEFURVJfQlVUX0RFUFJFQ0FU
RUQgREVQUkVDQVRFRF9BVFRSSUJVVEUKIyAyODkgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlN
YWNyb3MuaCIgMyA0CiNkZWZpbmUgQVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05fMTBfMF9BTkRf
TEFURVJfQlVUX0RFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF8yIERFUFJFQ0FURURf
QVRUUklCVVRFCiMgMzAxICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5TWFjcm9zLmgiIDMgNAoj
ZGVmaW5lIEFWQUlMQUJMRV9NQUNfT1NfWF9WRVJTSU9OXzEwXzFfQU5EX0xBVEVSX0JVVF9ERVBS
RUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfMiBERVBSRUNBVEVEX0FUVFJJQlVURQojIDMx
MiAiL3Vzci9pbmNsdWRlL0F2YWlsYWJpbGl0eU1hY3Jvcy5oIiAzIDQKI2RlZmluZSBERVBSRUNB
VEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfMl9BTkRfTEFURVIgREVQUkVDQVRFRF9BVFRSSUJV
VEUKIyAzMzEgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlNYWNyb3MuaCIgMyA0CiNkZWZpbmUg
QVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05fMTBfM19BTkRfTEFURVIgCiMgMzQxICIvdXNyL2lu
Y2x1ZGUvQXZhaWxhYmlsaXR5TWFjcm9zLmgiIDMgNAojZGVmaW5lIEFWQUlMQUJMRV9NQUNfT1Nf
WF9WRVJTSU9OXzEwXzNfQU5EX0xBVEVSX0JVVF9ERVBSRUNBVEVEIERFUFJFQ0FURURfQVRUUklC
VVRFCiMgMzUzICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5TWFjcm9zLmgiIDMgNAojZGVmaW5l
IEFWQUlMQUJMRV9NQUNfT1NfWF9WRVJTSU9OXzEwXzBfQU5EX0xBVEVSX0JVVF9ERVBSRUNBVEVE
X0lOX01BQ19PU19YX1ZFUlNJT05fMTBfMyBERVBSRUNBVEVEX0FUVFJJQlVURQojIDM2NSAiL3Vz
ci9pbmNsdWRlL0F2YWlsYWJpbGl0eU1hY3Jvcy5oIiAzIDQKI2RlZmluZSBBVkFJTEFCTEVfTUFD
X09TX1hfVkVSU0lPTl8xMF8xX0FORF9MQVRFUl9CVVRfREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9W
RVJTSU9OXzEwXzMgREVQUkVDQVRFRF9BVFRSSUJVVEUKIyAzNzcgIi91c3IvaW5jbHVkZS9BdmFp
bGFiaWxpdHlNYWNyb3MuaCIgMyA0CiNkZWZpbmUgQVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05f
MTBfMl9BTkRfTEFURVJfQlVUX0RFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF8zIERF
UFJFQ0FURURfQVRUUklCVVRFCiMgMzg4ICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5TWFjcm9z
LmgiIDMgNAojZGVmaW5lIERFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF8zX0FORF9M
QVRFUiBERVBSRUNBVEVEX0FUVFJJQlVURQojIDQwOCAiL3Vzci9pbmNsdWRlL0F2YWlsYWJpbGl0
eU1hY3Jvcy5oIiAzIDQKI2RlZmluZSBBVkFJTEFCTEVfTUFDX09TX1hfVkVSU0lPTl8xMF80X0FO
RF9MQVRFUiAKIyA0MTggIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlNYWNyb3MuaCIgMyA0CiNk
ZWZpbmUgQVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05fMTBfNF9BTkRfTEFURVJfQlVUX0RFUFJF
Q0FURUQgREVQUkVDQVRFRF9BVFRSSUJVVEUKIyA0MzAgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxp
dHlNYWNyb3MuaCIgMyA0CiNkZWZpbmUgQVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05fMTBfMF9B
TkRfTEFURVJfQlVUX0RFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF80IERFUFJFQ0FU
RURfQVRUUklCVVRFCiMgNDQyICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5TWFjcm9zLmgiIDMg
NAojZGVmaW5lIEFWQUlMQUJMRV9NQUNfT1NfWF9WRVJTSU9OXzEwXzFfQU5EX0xBVEVSX0JVVF9E
RVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfNCBERVBSRUNBVEVEX0FUVFJJQlVURQoj
IDQ1NCAiL3Vzci9pbmNsdWRlL0F2YWlsYWJpbGl0eU1hY3Jvcy5oIiAzIDQKI2RlZmluZSBBVkFJ
TEFCTEVfTUFDX09TX1hfVkVSU0lPTl8xMF8yX0FORF9MQVRFUl9CVVRfREVQUkVDQVRFRF9JTl9N
QUNfT1NfWF9WRVJTSU9OXzEwXzQgREVQUkVDQVRFRF9BVFRSSUJVVEUKIyA0NjYgIi91c3IvaW5j
bHVkZS9BdmFpbGFiaWxpdHlNYWNyb3MuaCIgMyA0CiNkZWZpbmUgQVZBSUxBQkxFX01BQ19PU19Y
X1ZFUlNJT05fMTBfM19BTkRfTEFURVJfQlVUX0RFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lP
Tl8xMF80IERFUFJFQ0FURURfQVRUUklCVVRFCiMgNDc3ICIvdXNyL2luY2x1ZGUvQXZhaWxhYmls
aXR5TWFjcm9zLmgiIDMgNAojZGVmaW5lIERFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8x
MF80X0FORF9MQVRFUiBERVBSRUNBVEVEX0FUVFJJQlVURQojIDQ5NiAiL3Vzci9pbmNsdWRlL0F2
YWlsYWJpbGl0eU1hY3Jvcy5oIiAzIDQKI2RlZmluZSBBVkFJTEFCTEVfTUFDX09TX1hfVkVSU0lP
Tl8xMF81X0FORF9MQVRFUiAKIyA1MDYgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlNYWNyb3Mu
aCIgMyA0CiNkZWZpbmUgQVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05fMTBfNV9BTkRfTEFURVJf
QlVUX0RFUFJFQ0FURUQgREVQUkVDQVRFRF9BVFRSSUJVVEUKIyA1MTggIi91c3IvaW5jbHVkZS9B
dmFpbGFiaWxpdHlNYWNyb3MuaCIgMyA0CiNkZWZpbmUgQVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJ
T05fMTBfMF9BTkRfTEFURVJfQlVUX0RFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF81
IERFUFJFQ0FURURfQVRUUklCVVRFCiMgNTMwICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5TWFj
cm9zLmgiIDMgNAojZGVmaW5lIEFWQUlMQUJMRV9NQUNfT1NfWF9WRVJTSU9OXzEwXzFfQU5EX0xB
VEVSX0JVVF9ERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfNSBERVBSRUNBVEVEX0FU
VFJJQlVURQojIDU0MiAiL3Vzci9pbmNsdWRlL0F2YWlsYWJpbGl0eU1hY3Jvcy5oIiAzIDQKI2Rl
ZmluZSBBVkFJTEFCTEVfTUFDX09TX1hfVkVSU0lPTl8xMF8yX0FORF9MQVRFUl9CVVRfREVQUkVD
QVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzUgREVQUkVDQVRFRF9BVFRSSUJVVEUKIyA1NTQg
Ii91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlNYWNyb3MuaCIgMyA0CiNkZWZpbmUgQVZBSUxBQkxF
X01BQ19PU19YX1ZFUlNJT05fMTBfM19BTkRfTEFURVJfQlVUX0RFUFJFQ0FURURfSU5fTUFDX09T
X1hfVkVSU0lPTl8xMF81IERFUFJFQ0FURURfQVRUUklCVVRFCiMgNTY2ICIvdXNyL2luY2x1ZGUv
QXZhaWxhYmlsaXR5TWFjcm9zLmgiIDMgNAojZGVmaW5lIEFWQUlMQUJMRV9NQUNfT1NfWF9WRVJT
SU9OXzEwXzRfQU5EX0xBVEVSX0JVVF9ERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBf
NSBERVBSRUNBVEVEX0FUVFJJQlVURQojIDU3NyAiL3Vzci9pbmNsdWRlL0F2YWlsYWJpbGl0eU1h
Y3Jvcy5oIiAzIDQKI2RlZmluZSBERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfNV9B
TkRfTEFURVIgREVQUkVDQVRFRF9BVFRSSUJVVEUKIyA1OTcgIi91c3IvaW5jbHVkZS9BdmFpbGFi
aWxpdHlNYWNyb3MuaCIgMyA0CiNkZWZpbmUgQVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05fMTBf
Nl9BTkRfTEFURVIgCiMgNjA3ICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5TWFjcm9zLmgiIDMg
NAojZGVmaW5lIEFWQUlMQUJMRV9NQUNfT1NfWF9WRVJTSU9OXzEwXzZfQU5EX0xBVEVSX0JVVF9E
RVBSRUNBVEVEIERFUFJFQ0FURURfQVRUUklCVVRFCiMgNjE5ICIvdXNyL2luY2x1ZGUvQXZhaWxh
YmlsaXR5TWFjcm9zLmgiIDMgNAojZGVmaW5lIEFWQUlMQUJMRV9NQUNfT1NfWF9WRVJTSU9OXzEw
XzBfQU5EX0xBVEVSX0JVVF9ERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfNiBERVBS
RUNBVEVEX0FUVFJJQlVURQojIDYzMSAiL3Vzci9pbmNsdWRlL0F2YWlsYWJpbGl0eU1hY3Jvcy5o
IiAzIDQKI2RlZmluZSBBVkFJTEFCTEVfTUFDX09TX1hfVkVSU0lPTl8xMF8xX0FORF9MQVRFUl9C
VVRfREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzYgREVQUkVDQVRFRF9BVFRSSUJV
VEUKIyA2NDMgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlNYWNyb3MuaCIgMyA0CiNkZWZpbmUg
QVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05fMTBfMl9BTkRfTEFURVJfQlVUX0RFUFJFQ0FURURf
SU5fTUFDX09TX1hfVkVSU0lPTl8xMF82IERFUFJFQ0FURURfQVRUUklCVVRFCiMgNjU1ICIvdXNy
L2luY2x1ZGUvQXZhaWxhYmlsaXR5TWFjcm9zLmgiIDMgNAojZGVmaW5lIEFWQUlMQUJMRV9NQUNf
T1NfWF9WRVJTSU9OXzEwXzNfQU5EX0xBVEVSX0JVVF9ERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZF
UlNJT05fMTBfNiBERVBSRUNBVEVEX0FUVFJJQlVURQojIDY2NyAiL3Vzci9pbmNsdWRlL0F2YWls
YWJpbGl0eU1hY3Jvcy5oIiAzIDQKI2RlZmluZSBBVkFJTEFCTEVfTUFDX09TX1hfVkVSU0lPTl8x
MF80X0FORF9MQVRFUl9CVVRfREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzYgREVQ
UkVDQVRFRF9BVFRSSUJVVEUKIyA2NzkgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHlNYWNyb3Mu
aCIgMyA0CiNkZWZpbmUgQVZBSUxBQkxFX01BQ19PU19YX1ZFUlNJT05fMTBfNV9BTkRfTEFURVJf
QlVUX0RFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF82IERFUFJFQ0FURURfQVRUUklC
VVRFCiMgNjkwICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5TWFjcm9zLmgiIDMgNAojZGVmaW5l
IERFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF82X0FORF9MQVRFUiBERVBSRUNBVEVE
X0FUVFJJQlVURQojIDMyMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oIiAyCgoKCiNkZWZpbmUgQlVJTERJTkdfT05fU05PV19MRU9QQVJEIDEKCgoKCiNkZWZp
bmUgVEFSR0VUSU5HX1NOT1dfTEVPUEFSRCAxCgojIDEgIi91c3IvaW5jbHVkZS9UYXJnZXRDb25k
aXRpb25hbHMuaCIgMSAzIDQKIyAzNiAiL3Vzci9pbmNsdWRlL1RhcmdldENvbmRpdGlvbmFscy5o
IiAzIDQKI2RlZmluZSBfX1RBUkdFVENPTkRJVElPTkFMU19fIAojIDg4ICIvdXNyL2luY2x1ZGUv
VGFyZ2V0Q29uZGl0aW9uYWxzLmgiIDMgNAojZGVmaW5lIFRBUkdFVF9PU19NQUMgMQojZGVmaW5l
IFRBUkdFVF9PU19XSU4zMiAwCiNkZWZpbmUgVEFSR0VUX09TX1VOSVggMAojZGVmaW5lIFRBUkdF
VF9PU19FTUJFRERFRCAwCiNkZWZpbmUgVEFSR0VUX09TX0lQSE9ORSAwCiNkZWZpbmUgVEFSR0VU
X0lQSE9ORV9TSU1VTEFUT1IgMAojIDE0NSAiL3Vzci9pbmNsdWRlL1RhcmdldENvbmRpdGlvbmFs
cy5oIiAzIDQKI2RlZmluZSBUQVJHRVRfQ1BVX1BQQyAwCiNkZWZpbmUgVEFSR0VUX0NQVV9QUEM2
NCAwCiNkZWZpbmUgVEFSR0VUX0NQVV82OEsgMAojZGVmaW5lIFRBUkdFVF9DUFVfWDg2IDAKI2Rl
ZmluZSBUQVJHRVRfQ1BVX1g4Nl82NCAxCiNkZWZpbmUgVEFSR0VUX0NQVV9BUk0gMAojZGVmaW5l
IFRBUkdFVF9DUFVfTUlQUyAwCiNkZWZpbmUgVEFSR0VUX0NQVV9TUEFSQyAwCiNkZWZpbmUgVEFS
R0VUX0NQVV9BTFBIQSAwCiNkZWZpbmUgVEFSR0VUX1JUX01BQ19DRk0gMAojZGVmaW5lIFRBUkdF
VF9SVF9NQUNfTUFDSE8gMQojZGVmaW5lIFRBUkdFVF9SVF9MSVRUTEVfRU5ESUFOIDEKI2RlZmlu
ZSBUQVJHRVRfUlRfQklHX0VORElBTiAwCiNkZWZpbmUgVEFSR0VUX1JUXzY0X0JJVCAxCiMgMzMz
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgiIDIKIyAzNDMg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBX
VEZfT1NfTUFDX09TX1ggMQojIDQxMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oIgojZGVmaW5lIFdURl9PU19VTklYIDEKIyA0MjcgIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBXVEZfUExBVEZPUk1fUVQg
MQojIDQ2MCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIgoj
ZGVmaW5lIFdURl9QTEFURk9STV9JT1NfU0lNVUxBVE9SIDAKCgoKI2RlZmluZSBXVEZfUExBVEZP
Uk1fSU9TIDAKIyA1NDcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaCIKI2RlZmluZSBXVEZfVVNFX1FUNF9VTklDT0RFIDEKIyA1OTMgIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBXVEZfVVNFX0NGIDEKIyA2
ODUgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCIKI2RlZmlu
ZSBIQVZFX1NJR05BTF9IIDEKCgoKCiNkZWZpbmUgSEFWRV9WQVNQUklOVEYgMQoKCgoKCiNkZWZp
bmUgSEFWRV9TVFJOU1RSIDEKCgoKCgoKI2RlZmluZSBIQVZFX1RNX0dNVE9GRiAxCiNkZWZpbmUg
SEFWRV9UTV9aT05FIDEKI2RlZmluZSBIQVZFX1RJTUVHTSAxCgoKCgojZGVmaW5lIEhBVkVfRVJS
Tk9fSCAxCiNkZWZpbmUgSEFWRV9MQU5HSU5GT19IIDEKI2RlZmluZSBIQVZFX01NQVAgMQojZGVm
aW5lIEhBVkVfTUVSR0VTT1JUIDEKI2RlZmluZSBIQVZFX1NCUksgMQojZGVmaW5lIEhBVkVfU1RS
SU5HU19IIDEKI2RlZmluZSBIQVZFX1NZU19QQVJBTV9IIDEKI2RlZmluZSBIQVZFX1NZU19USU1F
X0ggMQojZGVmaW5lIEhBVkVfU1lTX1RJTUVCX0ggMQojZGVmaW5lIFdURl9VU0VfQUNDRUxFUkFU
RSAxCgoKCiNkZWZpbmUgSEFWRV9ESVNQQVRDSF9IIDEKI2RlZmluZSBIQVZFX0hPU1RFRF9DT1JF
X0FOSU1BVElPTiAxCgoKI2RlZmluZSBIQVZFX01BRFZfRlJFRV9SRVVTRSAxCiNkZWZpbmUgSEFW
RV9NQURWX0ZSRUUgMQojZGVmaW5lIEhBVkVfUFRIUkVBRF9TRVROQU1FX05QIDEKIyA4MDYgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBFTkFC
TEVfR0xPQkFMX0ZBU1RNQUxMT0NfTkVXIDAKIyA4MTUgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBFTkFCTEVfRkFTVF9NQUxMT0NfTUFUQ0hf
VkFMSURBVElPTiAwCiMgODMxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmgiCiNkZWZpbmUgRU5BQkxFX0ZUUERJUiAxCgoKCiNkZWZpbmUgRU5BQkxFX0NPTlRF
WFRfTUVOVVMgMQoKCgojZGVmaW5lIEVOQUJMRV9EUkFHX1NVUFBPUlQgMQoKCgojZGVmaW5lIEVO
QUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TIDAKIyA4NTUgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBFTkFCTEVfSkFWQV9CUklER0UgMAoKCgoK
CgoKI2RlZmluZSBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFIDAKCgoKI2Rl
ZmluZSBFTkFCTEVfUFVSR0VBQkxFX01FTU9SWSAwCgoKCiNkZWZpbmUgV1RGX1VTRV9QTFVHSU5f
SE9TVF9QUk9DRVNTIDAKCgoKCgoKCiNkZWZpbmUgRU5BQkxFX09QQ09ERV9TVEFUUyAwCgoKCgoK
CiNkZWZpbmUgRU5BQkxFX0RFQlVHX1dJVEhfQlJFQUtQT0lOVCAwCiNkZWZpbmUgRU5BQkxFX1NB
TVBMSU5HX0NPVU5URVJTIDAKI2RlZmluZSBFTkFCTEVfU0FNUExJTkdfRkxBR1MgMAojZGVmaW5l
IEVOQUJMRV9PUENPREVfU0FNUExJTkcgMAojZGVmaW5lIEVOQUJMRV9DT0RFQkxPQ0tfU0FNUExJ
TkcgMAojIDkwMyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5o
IgojZGVmaW5lIEVOQUJMRV9HRVNUVVJFX1JFQ09HTklaRVIgMAojIDkxNSAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIgojZGVmaW5lIEVOQUJMRV9URVhUX0NB
UkVUIDEKCgoKI2RlZmluZSBFTkFCTEVfT05fRklSU1RfVEVYVEFSRUFfRk9DVVNfU0VMRUNUX0FM
TCAwCgoKCiNkZWZpbmUgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIDAKIyA5MzMgIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBXVEZfVVNFX0pTVkFM
VUU2NCAxCgoKCgoKCiNkZWZpbmUgRU5BQkxFX1JFUEFJTlRfVEhST1RUTElORyAwCiMgOTU5ICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgRU5B
QkxFX0pJVCAxCiMgOTY4ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgiCiNkZWZpbmUgRU5BQkxFX1RJRVJFRF9DT01QSUxBVElPTiAwCgoKCgojZGVmaW5lIEVO
QUJMRV9WQUxVRV9QUk9GSUxFUiBFTkFCTEVfVElFUkVEX0NPTVBJTEFUSU9OCgoKCiNkZWZpbmUg
RU5BQkxFX0RZTkFNSUNfT1BUSU1JWkFUSU9OIEVOQUJMRV9USUVSRURfQ09NUElMQVRJT04KCgoK
I2RlZmluZSBFTkFCTEVfRFlOQU1JQ19URVJNSU5BVEVfU1BFQ1VMQVRJT04gRU5BQkxFX0RZTkFN
SUNfT1BUSU1JWkFUSU9OCgoKCgoKCgojZGVmaW5lIEVOQUJMRV9TSU1QTEVfSEVBUF9QUk9GSUxJ
TkcgMAoKCgoKCiNkZWZpbmUgRU5BQkxFX1dSSVRFX0JBUlJJRVJfUFJPRklMSU5HIDAKIyAxMDIy
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUg
SlNDX0hPU1RfQ0FMTCAKCgoKCiNkZWZpbmUgSEFWRV9DT01QVVRFRF9HT1RPIDEKCgoKCgoKI2Rl
ZmluZSBFTkFCTEVfUkVHRVhQX1RSQUNJTkcgMAoKCgoKCgojZGVmaW5lIEVOQUJMRV9ZQVJSX0pJ
VCAxCgoKI2RlZmluZSBFTkFCTEVfWUFSUl9KSVRfREVCVUcgMAoKCgojZGVmaW5lIEVOQUJMRV9B
U1NFTUJMRVIgMQojIDEwNjAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaCIKI2RlZmluZSBFTkFCTEVfRVhFQ1VUQUJMRV9BTExPQ0FUT1JfRklYRUQgMQoKCgoK
CgoKI2RlZmluZSBFTkFCTEVfTEFSR0VfSEVBUCAxCiMgMTA3OSAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIgojZGVmaW5lIEVOQUJMRV9TTU9PVEhfU0NST0xM
SU5HIDAKCgoKI2RlZmluZSBFTkFCTEVfV0VCX0FSQ0hJVkUgMAoKCgoKCgojZGVmaW5lIFdURl9V
U0VfUVhNTFNUUkVBTSAxCiNkZWZpbmUgV1RGX1VTRV9RWE1MUVVFUlkgMQojIDExMDggIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBXVEZfVVNF
X0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIDEKCgoKCgoKCiNkZWZpbmUgRU5BQkxFX1BMVUdJTl9Q
QUNLQUdFX1NJTVBMRV9IQVNIIDEKCgoKI2RlZmluZSBXVEZfUExBVEZPUk1fQ0ZORVRXT1JLIEVy
cm9yIFVTRV9tYWNyb19zaG91bGRfYmVfdXNlZF93aXRoX0NGTkVUV09SSwoKCgojZGVmaW5lIFdU
Rl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUyAxCiMgMTEzNSAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIgojZGVmaW5lIFdURl9VU0VfUFJFRU1QVF9HRU9MT0NB
VElPTl9QRVJNSVNTSU9OIDEKIyAxMTU4ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgV1RGX1VTRV9FWFBPUlRfTUFDUk9TIDAKCgojZGVmaW5l
IFdURl9VU0VfVU5JWF9ET01BSU5fU09DS0VUUyAxCgoKCgojZGVmaW5lIEVOQUJMRV9HQ19WQUxJ
REFUSU9OIDEKIyAzMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvY29uZmlnLmgiIDIKIyA3NSAi
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvY29uZmlnLmgiCiNkZWZpbmUgSlNfRVhQT1JUREFUQSAK
I2RlZmluZSBKU19FWFBPUlRDTEFTUyAKI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSAKI2RlZmlu
ZSBXVEZfRVhQT1JUX1BSSVZBVEUgCiNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgCgoKCgoKI2Rl
ZmluZSBIQVZFX0ZVTkNfVVNMRUVQIDEKIyAxMjAgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2Nv
bmZpZy5oIgojdW5kZWYgbmV3CiN1bmRlZiBkZWxldGUKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaCIgMQojIDIyICIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaCIKI2RlZmluZSBXVEZfRmFzdE1hbGxvY19oIAoK
IyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgiIDEKIyAy
NSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgiIDIKIyAx
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bvc3NpYmx5TnVsbC5oIiAxCiMg
MjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUG9zc2libHlOdWxsLmgiCiNk
ZWZpbmUgUG9zc2libHlOdWxsX2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQXNzZXJ0aW9ucy5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQXNzZXJ0aW9ucy5oIgojZGVmaW5lIFdURl9Bc3NlcnRpb25zX2ggCiMgNDcgIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oIgojIDEgIi91c3IvbGli
L2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMg
NDMgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3RkZGVm
LmgiIDMgNAojZGVmaW5lIF9TVERERUZfSCAKI2RlZmluZSBfU1REREVGX0hfIAoKI2RlZmluZSBf
QU5TSV9TVERERUZfSCAKCiNkZWZpbmUgX19TVERERUZfSF9fIAojIDE0MSAiL3Vzci9saWIvZ2Nj
L2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiNkZWZpbmUg
X1BUUkRJRkZfVCAKI2RlZmluZSBfVF9QVFJESUZGXyAKI2RlZmluZSBfVF9QVFJESUZGIAojZGVm
aW5lIF9fUFRSRElGRl9UIAojZGVmaW5lIF9QVFJESUZGX1RfIAojZGVmaW5lIF9CU0RfUFRSRElG
Rl9UXyAKI2RlZmluZSBfX19pbnRfcHRyZGlmZl90X2ggCiNkZWZpbmUgX0dDQ19QVFJESUZGX1Qg
CgoKCnR5cGVkZWYgbG9uZyBpbnQgcHRyZGlmZl90OwojIDE2MyAiL3Vzci9saWIvZ2NjL2k2ODYt
YXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRf
cHRyZGlmZl90CiMgMTg5ICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9p
bmNsdWRlL3N0ZGRlZi5oIiAzIDQKI2RlZmluZSBfX3NpemVfdF9fIAojZGVmaW5lIF9fU0laRV9U
X18gCiNkZWZpbmUgX1NJWkVfVCAKI2RlZmluZSBfU1lTX1NJWkVfVF9IIAojZGVmaW5lIF9UX1NJ
WkVfIAojZGVmaW5lIF9UX1NJWkUgCiNkZWZpbmUgX19TSVpFX1QgCiNkZWZpbmUgX1NJWkVfVF8g
CiNkZWZpbmUgX0JTRF9TSVpFX1RfIAojZGVmaW5lIF9TSVpFX1RfREVGSU5FRF8gCiNkZWZpbmUg
X1NJWkVfVF9ERUZJTkVEIAojZGVmaW5lIF9CU0RfU0laRV9UX0RFRklORURfIAojZGVmaW5lIF9T
SVpFX1RfREVDTEFSRUQgCiNkZWZpbmUgX19faW50X3NpemVfdF9oIAojZGVmaW5lIF9HQ0NfU0la
RV9UIAojZGVmaW5lIF9TSVpFVF8gCgoKCiNkZWZpbmUgX19zaXplX3QgCgoKCgoKdHlwZWRlZiBs
b25nIHVuc2lnbmVkIGludCBzaXplX3Q7CiMgMjM2ICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1k
YXJ3aW4xMC80LjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9zaXplX3QK
IyAyNjUgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMgNAojZGVmaW5lIF9fd2NoYXJfdF9fIAojZGVmaW5lIF9fV0NIQVJfVF9fIAojZGVm
aW5lIF9XQ0hBUl9UIAojZGVmaW5lIF9UX1dDSEFSXyAKI2RlZmluZSBfVF9XQ0hBUiAKI2RlZmlu
ZSBfX1dDSEFSX1QgCiNkZWZpbmUgX1dDSEFSX1RfIAojZGVmaW5lIF9CU0RfV0NIQVJfVF8gCiNk
ZWZpbmUgX1dDSEFSX1RfREVGSU5FRF8gCiNkZWZpbmUgX1dDSEFSX1RfREVGSU5FRCAKI2RlZmlu
ZSBfV0NIQVJfVF9IIAojZGVmaW5lIF9fX2ludF93Y2hhcl90X2ggCiNkZWZpbmUgX19JTlRfV0NI
QVJfVF9IIAojZGVmaW5lIF9HQ0NfV0NIQVJfVCAKI2RlZmluZSBfV0NIQVJfVF9ERUNMQVJFRCAK
IyAyOTIgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMgNAojdW5kZWYgX0JTRF9XQ0hBUl9UXwojIDM0NSAiL3Vzci9saWIvZ2NjL2k2ODYt
YXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRf
d2NoYXJfdAojIDM5OCAiL3Vzci9saWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5j
bHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBOVUxMCgojZGVmaW5lIE5VTEwgX19udWxsCiMgNDA5
ICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL3N0ZGRlZi5o
IiAzIDQKI3VuZGVmIF9fbmVlZF9OVUxMCgoKCgojZGVmaW5lIG9mZnNldG9mKFRZUEUsTUVNQkVS
KSBfX2J1aWx0aW5fb2Zmc2V0b2YgKFRZUEUsIE1FTUJFUikKIyA0OCAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9p
bnR0eXBlcy5oIiAxIDMgNAojIDI1MSAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDMgNAojZGVm
aW5lIF9JTlRUWVBFU19IXyAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMgNAoj
IDY4ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9DREVGU19IXyAKCgoj
ZGVmaW5lIF9fQkVHSU5fREVDTFMgZXh0ZXJuICJDIiB7CiNkZWZpbmUgX19FTkRfREVDTFMgfQoj
IDg2ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fUChwcm90b3MpIHBy
b3RvcwojZGVmaW5lIF9fQ09OQ0FUKHgseSkgeCAjIyB5CiNkZWZpbmUgX19TVFJJTkcoeCkgI3gK
CiNkZWZpbmUgX19jb25zdCBjb25zdAojZGVmaW5lIF9fc2lnbmVkIHNpZ25lZAojZGVmaW5lIF9f
dm9sYXRpbGUgdm9sYXRpbGUKCiNkZWZpbmUgX19pbmxpbmUgaW5saW5lCiMgMTQwICIvdXNyL2lu
Y2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fZGVhZDIgX19hdHRyaWJ1dGVfXygoX19u
b3JldHVybl9fKSkKI2RlZmluZSBfX3B1cmUyIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpCgoK
CiNkZWZpbmUgX191bnVzZWQgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpCiMgMTU4ICIvdXNy
L2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fZGVhZCAKI2RlZmluZSBfX3B1cmUg
CiMgMTc1ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fcmVzdHJpY3Qg
CiMgMTkwICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fcHJpbnRmbGlr
ZShmbXRhcmcsZmlyc3R2YXJhcmcpIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIGZtdGFyZywgZmlyc3R2YXJhcmcpKSkKCiNkZWZpbmUgX19zY2FuZmxpa2UoZm10YXJnLGZp
cnN0dmFyYXJnKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIGZtdGFyZywg
Zmlyc3R2YXJhcmcpKSkKCgoKCgoKI2RlZmluZSBfX0lEU1RSSU5HKG5hbWUsc3RyaW5nKSBzdGF0
aWMgY29uc3QgY2hhciBuYW1lW10gX191bnVzZWQgPSBzdHJpbmcKCgojZGVmaW5lIF9fQ09QWVJJ
R0hUKHMpIF9fSURTVFJJTkcoY29weXJpZ2h0LHMpCgoKCiNkZWZpbmUgX19SQ1NJRChzKSBfX0lE
U1RSSU5HKHJjc2lkLHMpCgoKCiNkZWZpbmUgX19TQ0NTSUQocykgX19JRFNUUklORyhzY2NzaWQs
cykKCgoKI2RlZmluZSBfX1BST0pFQ1RfVkVSU0lPTihzKSBfX0lEU1RSSU5HKHByb2plY3RfdmVy
c2lvbixzKQojIDI1NiAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX0RB
UldJTl9PTkxZXzY0X0JJVF9JTk9fVCAwCgojZGVmaW5lIF9fREFSV0lOX09OTFlfVkVSU18xMDUw
IDAKIyAyODAgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19EQVJXSU5f
T05MWV9VTklYX0NPTkZPUk1BTkNFIDEKIyAyOTEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIg
MyA0CiNkZWZpbmUgX19EQVJXSU5fVU5JWDAzIDEKIyAzMjUgIi91c3IvaW5jbHVkZS9zeXMvY2Rl
ZnMuaCIgMyA0CiNkZWZpbmUgX19EQVJXSU5fNjRfQklUX0lOT19UIDEKIyAzMzYgIi91c3IvaW5j
bHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19EQVJXSU5fVkVSU18xMDUwIDEKCgoKCiNk
ZWZpbmUgX19EQVJXSU5fTk9OX0NBTkNFTEFCTEUgMAoKCgoKCgoKI2RlZmluZSBfX0RBUldJTl9T
VUZfVU5JWDAzIAojIDM1OCAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBf
X0RBUldJTl9TVUZfNjRfQklUX0lOT19UICIkSU5PREU2NCIKIyAzNjggIi91c3IvaW5jbHVkZS9z
eXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19EQVJXSU5fU1VGXzEwNTAgIiQxMDUwIgojIDM3NyAi
L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX0RBUldJTl9TVUZfTk9OX0NB
TkNFTEFCTEUgCiMgMzg3ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9f
REFSV0lOX1NVRl9FWFRTTiAiJERBUldJTl9FWFRTTiIKCgoKCiNkZWZpbmUgX19EQVJXSU5fQUxJ
QVMoc3ltKSBfX2FzbSgiXyIgX19TVFJJTkcoc3ltKSBfX0RBUldJTl9TVUZfVU5JWDAzKQojZGVm
aW5lIF9fREFSV0lOX0FMSUFTX0Moc3ltKSBfX2FzbSgiXyIgX19TVFJJTkcoc3ltKSBfX0RBUldJ
Tl9TVUZfTk9OX0NBTkNFTEFCTEUgX19EQVJXSU5fU1VGX1VOSVgwMykKI2RlZmluZSBfX0RBUldJ
Tl9BTElBU19JKHN5bSkgX19hc20oIl8iIF9fU1RSSU5HKHN5bSkgX19EQVJXSU5fU1VGXzY0X0JJ
VF9JTk9fVCBfX0RBUldJTl9TVUZfVU5JWDAzKQojZGVmaW5lIF9fREFSV0lOX0lOT0RFNjQoc3lt
KSBfX2FzbSgiXyIgX19TVFJJTkcoc3ltKSBfX0RBUldJTl9TVUZfNjRfQklUX0lOT19UKQoKI2Rl
ZmluZSBfX0RBUldJTl8xMDUwKHN5bSkgX19hc20oIl8iIF9fU1RSSU5HKHN5bSkgX19EQVJXSU5f
U1VGXzEwNTApCiNkZWZpbmUgX19EQVJXSU5fMTA1MEFMSUFTKHN5bSkgX19hc20oIl8iIF9fU1RS
SU5HKHN5bSkgX19EQVJXSU5fU1VGXzEwNTAgX19EQVJXSU5fU1VGX1VOSVgwMykKI2RlZmluZSBf
X0RBUldJTl8xMDUwQUxJQVNfQyhzeW0pIF9fYXNtKCJfIiBfX1NUUklORyhzeW0pIF9fREFSV0lO
X1NVRl8xMDUwIF9fREFSV0lOX1NVRl9OT05fQ0FOQ0VMQUJMRSBfX0RBUldJTl9TVUZfVU5JWDAz
KQojZGVmaW5lIF9fREFSV0lOXzEwNTBBTElBU19JKHN5bSkgX19hc20oIl8iIF9fU1RSSU5HKHN5
bSkgX19EQVJXSU5fU1VGXzEwNTAgX19EQVJXSU5fU1VGXzY0X0JJVF9JTk9fVCBfX0RBUldJTl9T
VUZfVU5JWDAzKQojZGVmaW5lIF9fREFSV0lOXzEwNTBJTk9ERTY0KHN5bSkgX19hc20oIl8iIF9f
U1RSSU5HKHN5bSkgX19EQVJXSU5fU1VGXzEwNTAgX19EQVJXSU5fU1VGXzY0X0JJVF9JTk9fVCkK
CiNkZWZpbmUgX19EQVJXSU5fRVhUU04oc3ltKSBfX2FzbSgiXyIgX19TVFJJTkcoc3ltKSBfX0RB
UldJTl9TVUZfRVhUU04pCiNkZWZpbmUgX19EQVJXSU5fRVhUU05fQyhzeW0pIF9fYXNtKCJfIiBf
X1NUUklORyhzeW0pIF9fREFSV0lOX1NVRl9FWFRTTiBfX0RBUldJTl9TVUZfTk9OX0NBTkNFTEFC
TEUpCiMgNDEzICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fREFSV0lO
XzEwXzZfQU5EX0xBVEVSIAojZGVmaW5lIF9fREFSV0lOXzEwXzZfQU5EX0xBVEVSX0FMSUFTKHgp
IHgKIyA0NzMgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19EQVJXSU5f
Tk9fTE9OR19MT05HIChkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykgJiYgKF9fU1REQ19WRVJTSU9O
X18tMCA8IDE5OTkwMUwpICYmICFkZWZpbmVkKF9fR05VR19fKSkKIyA1MDMgIi91c3IvaW5jbHVk
ZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19EQVJXSU5fTERCTF9DT01QQVQoeCkgCiNkZWZp
bmUgX19EQVJXSU5fTERCTF9DT01QQVQyKHgpIAojZGVmaW5lIF9fREFSV0lOX0xPTkdfRE9VQkxF
X0lTX0RPVUJMRSAwCiMgNTE0ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5l
IF9fZGVwcmVjYXRlZCBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSkKIyA1MjggIi91c3IvaW5j
bHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX0RBUldJTl9GRUFUVVJFXzY0X0JJVF9JTk9E
RSAxCiMgNTYyICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9EQVJXSU5f
RkVBVFVSRV9PTkxZX1VOSVhfQ09ORk9STUFOQ0UgMQoKCgoKCgoKI2RlZmluZSBfREFSV0lOX0ZF
QVRVUkVfVU5JWF9DT05GT1JNQU5DRSAzCiMgNTgwICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgi
IDMgNAojZGVmaW5lIF9fQ0FTVF9BV0FZX1FVQUxJRklFUih2YXJpYWJsZSxxdWFsaWZpZXIsdHlw
ZSkgKHR5cGUpICgoY2hhciAqKTAgKyAoKHF1YWxpZmllciBjaGFyICopKHZhcmlhYmxlKSAtIChx
dWFsaWZpZXIgY2hhciAqKTApICkKIyAyNTQgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAyIDMg
NAojIDEgIi91c3IvaW5jbHVkZS9fdHlwZXMuaCIgMSAzIDQKIyAyNSAiL3Vzci9pbmNsdWRlL190
eXBlcy5oIiAzIDQKI2RlZmluZSBfX1RZUEVTX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL190
eXBlcy5oIiAxIDMgNAojIDMwICIvdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIiAzIDQKI2RlZmlu
ZSBfU1lTX19UWVBFU19IXyAKCgojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL190eXBlcy5oIiAx
IDMgNAojIDI5ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCIgMyA0CiNkZWZpbmUgX0JT
RF9NQUNISU5FX19UWVBFU19IXyAKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2kzODYvX3R5cGVzLmgi
IDEgMyA0CiMgMjkgIi91c3IvaW5jbHVkZS9pMzg2L190eXBlcy5oIiAzIDQKI2RlZmluZSBfQlNE
X0kzODZfX1RZUEVTX0hfIAoKCgoKCgoKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKCgoK
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaG9ydCBfX2ludDE2X3Q7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191aW50MTZfdDsKdHlwZWRlZiBpbnQgX19pbnQzMl90
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90Owp0eXBlZGVmIGxvbmcgbG9uZyBfX2lu
dDY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdWludDY0X3Q7Cgp0eXBlZGVmIGxv
bmcgX19kYXJ3aW5faW50cHRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fZGFyd2luX25hdHVy
YWxfdDsKIyA3MCAiL3Vzci9pbmNsdWRlL2kzODYvX3R5cGVzLmgiIDMgNAp0eXBlZGVmIGludCBf
X2Rhcndpbl9jdF9ydW5lX3Q7CgoKCgoKdHlwZWRlZiB1bmlvbiB7CiBjaGFyIF9fbWJzdGF0ZThb
MTI4XTsKIGxvbmcgbG9uZyBfbWJzdGF0ZUw7Cn0gX19tYnN0YXRlX3Q7Cgp0eXBlZGVmIF9fbWJz
dGF0ZV90IF9fZGFyd2luX21ic3RhdGVfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fZGFyd2luX3B0
cmRpZmZfdDsKCgoKCgp0eXBlZGVmIGxvbmcgdW5zaWduZWQgaW50IF9fZGFyd2luX3NpemVfdDsK
CgoKCgp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZGFyd2luX3ZhX2xpc3Q7CgoKCgoKdHlw
ZWRlZiBpbnQgX19kYXJ3aW5fd2NoYXJfdDsKCgoKCnR5cGVkZWYgX19kYXJ3aW5fd2NoYXJfdCBf
X2Rhcndpbl9ydW5lX3Q7CgoKdHlwZWRlZiBpbnQgX19kYXJ3aW5fd2ludF90OwoKCgoKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIF9fZGFyd2luX2Nsb2NrX3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX2Rh
cndpbl9zb2NrbGVuX3Q7CnR5cGVkZWYgbG9uZyBfX2Rhcndpbl9zc2l6ZV90Owp0eXBlZGVmIGxv
bmcgX19kYXJ3aW5fdGltZV90OwojIDM1ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCIg
MiAzIDQKIyAzNCAiL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCIgMiAzIDQKCgoKI2RlZmluZSBf
X1BUSFJFQURfU0laRV9fIDExNjgKI2RlZmluZSBfX1BUSFJFQURfQVRUUl9TSVpFX18gNTYKI2Rl
ZmluZSBfX1BUSFJFQURfTVVURVhBVFRSX1NJWkVfXyA4CiNkZWZpbmUgX19QVEhSRUFEX01VVEVY
X1NJWkVfXyA1NgojZGVmaW5lIF9fUFRIUkVBRF9DT05EQVRUUl9TSVpFX18gOAojZGVmaW5lIF9f
UFRIUkVBRF9DT05EX1NJWkVfXyA0MAojZGVmaW5lIF9fUFRIUkVBRF9PTkNFX1NJWkVfXyA4CiNk
ZWZpbmUgX19QVEhSRUFEX1JXTE9DS19TSVpFX18gMTkyCiNkZWZpbmUgX19QVEhSRUFEX1JXTE9D
S0FUVFJfU0laRV9fIDE2CiMgNTggIi91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmgiIDMgNApzdHJ1
Y3QgX19kYXJ3aW5fcHRocmVhZF9oYW5kbGVyX3JlYwp7CiB2b2lkICgqX19yb3V0aW5lKSh2b2lk
ICopOwogdm9pZCAqX19hcmc7CiBzdHJ1Y3QgX19kYXJ3aW5fcHRocmVhZF9oYW5kbGVyX3JlYyAq
X19uZXh0Owp9OwpzdHJ1Y3QgX29wYXF1ZV9wdGhyZWFkX2F0dHJfdCB7IGxvbmcgX19zaWc7IGNo
YXIgX19vcGFxdWVbNTZdOyB9OwpzdHJ1Y3QgX29wYXF1ZV9wdGhyZWFkX2NvbmRfdCB7IGxvbmcg
X19zaWc7IGNoYXIgX19vcGFxdWVbNDBdOyB9OwpzdHJ1Y3QgX29wYXF1ZV9wdGhyZWFkX2NvbmRh
dHRyX3QgeyBsb25nIF9fc2lnOyBjaGFyIF9fb3BhcXVlWzhdOyB9OwpzdHJ1Y3QgX29wYXF1ZV9w
dGhyZWFkX211dGV4X3QgeyBsb25nIF9fc2lnOyBjaGFyIF9fb3BhcXVlWzU2XTsgfTsKc3RydWN0
IF9vcGFxdWVfcHRocmVhZF9tdXRleGF0dHJfdCB7IGxvbmcgX19zaWc7IGNoYXIgX19vcGFxdWVb
OF07IH07CnN0cnVjdCBfb3BhcXVlX3B0aHJlYWRfb25jZV90IHsgbG9uZyBfX3NpZzsgY2hhciBf
X29wYXF1ZVs4XTsgfTsKc3RydWN0IF9vcGFxdWVfcHRocmVhZF9yd2xvY2tfdCB7IGxvbmcgX19z
aWc7IGNoYXIgX19vcGFxdWVbMTkyXTsgfTsKc3RydWN0IF9vcGFxdWVfcHRocmVhZF9yd2xvY2th
dHRyX3QgeyBsb25nIF9fc2lnOyBjaGFyIF9fb3BhcXVlWzE2XTsgfTsKc3RydWN0IF9vcGFxdWVf
cHRocmVhZF90IHsgbG9uZyBfX3NpZzsgc3RydWN0IF9fZGFyd2luX3B0aHJlYWRfaGFuZGxlcl9y
ZWMgKl9fY2xlYW51cF9zdGFjazsgY2hhciBfX29wYXF1ZVsxMTY4XTsgfTsKIyA4MiAiL3Vzci9p
bmNsdWRlL3N5cy9fdHlwZXMuaCIgMyA0CiNkZWZpbmUgX19EQVJXSU5fTlVMTCBfX251bGwKIyA5
NCAiL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCIgMyA0CnR5cGVkZWYgX19pbnQ2NF90IF9fZGFy
d2luX2Jsa2NudF90Owp0eXBlZGVmIF9faW50MzJfdCBfX2Rhcndpbl9ibGtzaXplX3Q7CnR5cGVk
ZWYgX19pbnQzMl90IF9fZGFyd2luX2Rldl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2Rhcndp
bl9mc2Jsa2NudF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2Rhcndpbl9mc2ZpbGNudF90Owp0
eXBlZGVmIF9fdWludDMyX3QgX19kYXJ3aW5fZ2lkX3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX2Rh
cndpbl9pZF90Owp0eXBlZGVmIF9fdWludDY0X3QgX19kYXJ3aW5faW5vNjRfdDsKCnR5cGVkZWYg
X19kYXJ3aW5faW5vNjRfdCBfX2Rhcndpbl9pbm9fdDsKCgoKdHlwZWRlZiBfX2Rhcndpbl9uYXR1
cmFsX3QgX19kYXJ3aW5fbWFjaF9wb3J0X25hbWVfdDsKdHlwZWRlZiBfX2Rhcndpbl9tYWNoX3Bv
cnRfbmFtZV90IF9fZGFyd2luX21hY2hfcG9ydF90Owp0eXBlZGVmIF9fdWludDE2X3QgX19kYXJ3
aW5fbW9kZV90Owp0eXBlZGVmIF9faW50NjRfdCBfX2Rhcndpbl9vZmZfdDsKdHlwZWRlZiBfX2lu
dDMyX3QgX19kYXJ3aW5fcGlkX3Q7CnR5cGVkZWYgc3RydWN0IF9vcGFxdWVfcHRocmVhZF9hdHRy
X3QKICAgX19kYXJ3aW5fcHRocmVhZF9hdHRyX3Q7CnR5cGVkZWYgc3RydWN0IF9vcGFxdWVfcHRo
cmVhZF9jb25kX3QKICAgX19kYXJ3aW5fcHRocmVhZF9jb25kX3Q7CnR5cGVkZWYgc3RydWN0IF9v
cGFxdWVfcHRocmVhZF9jb25kYXR0cl90CiAgIF9fZGFyd2luX3B0aHJlYWRfY29uZGF0dHJfdDsK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fZGFyd2luX3B0aHJlYWRfa2V5X3Q7CnR5cGVkZWYgc3Ry
dWN0IF9vcGFxdWVfcHRocmVhZF9tdXRleF90CiAgIF9fZGFyd2luX3B0aHJlYWRfbXV0ZXhfdDsK
dHlwZWRlZiBzdHJ1Y3QgX29wYXF1ZV9wdGhyZWFkX211dGV4YXR0cl90CiAgIF9fZGFyd2luX3B0
aHJlYWRfbXV0ZXhhdHRyX3Q7CnR5cGVkZWYgc3RydWN0IF9vcGFxdWVfcHRocmVhZF9vbmNlX3QK
ICAgX19kYXJ3aW5fcHRocmVhZF9vbmNlX3Q7CnR5cGVkZWYgc3RydWN0IF9vcGFxdWVfcHRocmVh
ZF9yd2xvY2tfdAogICBfX2Rhcndpbl9wdGhyZWFkX3J3bG9ja190Owp0eXBlZGVmIHN0cnVjdCBf
b3BhcXVlX3B0aHJlYWRfcndsb2NrYXR0cl90CiAgIF9fZGFyd2luX3B0aHJlYWRfcndsb2NrYXR0
cl90Owp0eXBlZGVmIHN0cnVjdCBfb3BhcXVlX3B0aHJlYWRfdAogICAqX19kYXJ3aW5fcHRocmVh
ZF90Owp0eXBlZGVmIF9fdWludDMyX3QgX19kYXJ3aW5fc2lnc2V0X3Q7CnR5cGVkZWYgX19pbnQz
Ml90IF9fZGFyd2luX3N1c2Vjb25kc190Owp0eXBlZGVmIF9fdWludDMyX3QgX19kYXJ3aW5fdWlk
X3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX2Rhcndpbl91c2Vjb25kc190Owp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgX19kYXJ3aW5fdXVpZF90WzE2XTsKdHlwZWRlZiBjaGFyIF9fZGFyd2luX3V1aWRf
c3RyaW5nX3RbMzddOwojIDI4ICIvdXNyL2luY2x1ZGUvX3R5cGVzLmgiIDIgMyA0CgoKI2RlZmlu
ZSBfX3N0cmZtb25saWtlKGZtdGFyZyxmaXJzdHZhcmFyZykgX19hdHRyaWJ1dGVfXygoX19mb3Jt
YXRfXyAoX19zdHJmbW9uX18sIGZtdGFyZywgZmlyc3R2YXJhcmcpKSkKCiNkZWZpbmUgX19zdHJm
dGltZWxpa2UoZm10YXJnKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3N0cmZ0aW1lX18s
IGZtdGFyZywgMCkpKQoKCgoKCgp0eXBlZGVmIGludCBfX2Rhcndpbl9ubF9pdGVtOwp0eXBlZGVm
IGludCBfX2Rhcndpbl93Y3RyYW5zX3Q7Cgp0eXBlZGVmIF9fdWludDMyX3QgX19kYXJ3aW5fd2N0
eXBlX3Q7CgoKCgoKI2RlZmluZSBfX0RBUldJTl9XQ0hBUl9NQVggX19XQ0hBUl9NQVhfXwoKCgoK
CiNkZWZpbmUgX19EQVJXSU5fV0NIQVJfTUlOICgtMHg3ZmZmZmZmZiAtIDEpCgoKCiNkZWZpbmUg
X19EQVJXSU5fV0VPRiAoKF9fZGFyd2luX3dpbnRfdCktMSkKCgoKCgojZGVmaW5lIF9GT1JUSUZZ
X1NPVVJDRSAyCiMgMjU1ICIvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMiAzIDQKIyAxICIvdXNy
L2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL3N0ZGludC5oIiAxIDMg
NAoKCgoKCgojZGVmaW5lIF9TVERJTlRfSF8gCgoKI2RlZmluZSBfX1dPUkRTSVpFIDY0CiMgMTkg
Ii91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3RkaW50Lmgi
IDMgNAojZGVmaW5lIF9JTlQ4X1QgCnR5cGVkZWYgc2lnbmVkIGNoYXIgaW50OF90OwoKCgojZGVm
aW5lIF9JTlQxNl9UIAp0eXBlZGVmIHNob3J0IGludDE2X3Q7CgoKCiNkZWZpbmUgX0lOVDMyX1Qg
CnR5cGVkZWYgaW50IGludDMyX3Q7CgoKCiNkZWZpbmUgX0lOVDY0X1QgCnR5cGVkZWYgbG9uZyBs
b25nIGludDY0X3Q7CgoKCiNkZWZpbmUgX1VJTlQ4X1QgCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1
aW50OF90OwoKCgojZGVmaW5lIF9VSU5UMTZfVCAKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50
MTZfdDsKCgoKI2RlZmluZSBfVUlOVDMyX1QgCnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90
OwoKCgojZGVmaW5lIF9VSU5UNjRfVCAKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludDY0
X3Q7CgoKCnR5cGVkZWYgaW50OF90IGludF9sZWFzdDhfdDsKdHlwZWRlZiBpbnQxNl90IGludF9s
ZWFzdDE2X3Q7CnR5cGVkZWYgaW50MzJfdCBpbnRfbGVhc3QzMl90Owp0eXBlZGVmIGludDY0X3Qg
aW50X2xlYXN0NjRfdDsKdHlwZWRlZiB1aW50OF90IHVpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgdWlu
dDE2X3QgdWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgdWludDMyX3QgdWludF9sZWFzdDMyX3Q7CnR5
cGVkZWYgdWludDY0X3QgdWludF9sZWFzdDY0X3Q7CgoKCnR5cGVkZWYgaW50OF90IGludF9mYXN0
OF90Owp0eXBlZGVmIGludDE2X3QgaW50X2Zhc3QxNl90Owp0eXBlZGVmIGludDMyX3QgaW50X2Zh
c3QzMl90Owp0eXBlZGVmIGludDY0X3QgaW50X2Zhc3Q2NF90Owp0eXBlZGVmIHVpbnQ4X3QgdWlu
dF9mYXN0OF90Owp0eXBlZGVmIHVpbnQxNl90IHVpbnRfZmFzdDE2X3Q7CnR5cGVkZWYgdWludDMy
X3QgdWludF9mYXN0MzJfdDsKdHlwZWRlZiB1aW50NjRfdCB1aW50X2Zhc3Q2NF90OwoKCgoKCiNk
ZWZpbmUgX0lOVFBUUl9UIAp0eXBlZGVmIGxvbmcgaW50cHRyX3Q7CgoKCiNkZWZpbmUgX1VJTlRQ
VFJfVCAKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnRwdHJfdDsKCgoKCgojZGVmaW5lIF9JTlRN
QVhfVCAKCnR5cGVkZWYgbG9uZyBpbnQgaW50bWF4X3Q7CgoKCgoKCiNkZWZpbmUgX1VJTlRNQVhf
VCAKCnR5cGVkZWYgbG9uZyB1bnNpZ25lZCBpbnQgdWludG1heF90OwojIDExOSAiL3Vzci9saWIv
Z2NjL2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9zdGRpbnQuaCIgMyA0CiNkZWZp
bmUgSU5UOF9NQVggMTI3CiNkZWZpbmUgSU5UMTZfTUFYIDMyNzY3CiNkZWZpbmUgSU5UMzJfTUFY
IDIxNDc0ODM2NDcKI2RlZmluZSBJTlQ2NF9NQVggOTIyMzM3MjAzNjg1NDc3NTgwN0xMCgojZGVm
aW5lIElOVDhfTUlOIC0xMjgKI2RlZmluZSBJTlQxNl9NSU4gLTMyNzY4CgoKCgoKCiNkZWZpbmUg
SU5UMzJfTUlOICgtSU5UMzJfTUFYLTEpCiNkZWZpbmUgSU5UNjRfTUlOICgtSU5UNjRfTUFYLTEp
CgojZGVmaW5lIFVJTlQ4X01BWCAyNTUKI2RlZmluZSBVSU5UMTZfTUFYIDY1NTM1CiNkZWZpbmUg
VUlOVDMyX01BWCA0Mjk0OTY3Mjk1VQojZGVmaW5lIFVJTlQ2NF9NQVggMTg0NDY3NDQwNzM3MDk1
NTE2MTVVTEwKCgojZGVmaW5lIElOVF9MRUFTVDhfTUlOIElOVDhfTUlOCiNkZWZpbmUgSU5UX0xF
QVNUMTZfTUlOIElOVDE2X01JTgojZGVmaW5lIElOVF9MRUFTVDMyX01JTiBJTlQzMl9NSU4KI2Rl
ZmluZSBJTlRfTEVBU1Q2NF9NSU4gSU5UNjRfTUlOCgojZGVmaW5lIElOVF9MRUFTVDhfTUFYIElO
VDhfTUFYCiNkZWZpbmUgSU5UX0xFQVNUMTZfTUFYIElOVDE2X01BWAojZGVmaW5lIElOVF9MRUFT
VDMyX01BWCBJTlQzMl9NQVgKI2RlZmluZSBJTlRfTEVBU1Q2NF9NQVggSU5UNjRfTUFYCgojZGVm
aW5lIFVJTlRfTEVBU1Q4X01BWCBVSU5UOF9NQVgKI2RlZmluZSBVSU5UX0xFQVNUMTZfTUFYIFVJ
TlQxNl9NQVgKI2RlZmluZSBVSU5UX0xFQVNUMzJfTUFYIFVJTlQzMl9NQVgKI2RlZmluZSBVSU5U
X0xFQVNUNjRfTUFYIFVJTlQ2NF9NQVgKCgojZGVmaW5lIElOVF9GQVNUOF9NSU4gSU5UOF9NSU4K
I2RlZmluZSBJTlRfRkFTVDE2X01JTiBJTlQxNl9NSU4KI2RlZmluZSBJTlRfRkFTVDMyX01JTiBJ
TlQzMl9NSU4KI2RlZmluZSBJTlRfRkFTVDY0X01JTiBJTlQ2NF9NSU4KCiNkZWZpbmUgSU5UX0ZB
U1Q4X01BWCBJTlQ4X01BWAojZGVmaW5lIElOVF9GQVNUMTZfTUFYIElOVDE2X01BWAojZGVmaW5l
IElOVF9GQVNUMzJfTUFYIElOVDMyX01BWAojZGVmaW5lIElOVF9GQVNUNjRfTUFYIElOVDY0X01B
WAoKI2RlZmluZSBVSU5UX0ZBU1Q4X01BWCBVSU5UOF9NQVgKI2RlZmluZSBVSU5UX0ZBU1QxNl9N
QVggVUlOVDE2X01BWAojZGVmaW5lIFVJTlRfRkFTVDMyX01BWCBVSU5UMzJfTUFYCiNkZWZpbmUg
VUlOVF9GQVNUNjRfTUFYIFVJTlQ2NF9NQVgKCgoKCiNkZWZpbmUgSU5UUFRSX01JTiBJTlQ2NF9N
SU4KI2RlZmluZSBJTlRQVFJfTUFYIElOVDY0X01BWAoKCgoKCgojZGVmaW5lIFVJTlRQVFJfTUFY
IFVJTlQ2NF9NQVgKCgoKCgojZGVmaW5lIElOVE1BWF9NSU4gSU5UNjRfTUlOCiNkZWZpbmUgSU5U
TUFYX01BWCBJTlQ2NF9NQVgKCiNkZWZpbmUgVUlOVE1BWF9NQVggVUlOVDY0X01BWAoKCgojZGVm
aW5lIFBUUkRJRkZfTUlOIElOVDY0X01JTgojZGVmaW5lIFBUUkRJRkZfTUFYIElOVDY0X01BWAoj
IDIwOCAiL3Vzci9saWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9zdGRp
bnQuaCIgMyA0CiNkZWZpbmUgU0laRV9NQVggVUlOVDY0X01BWAoKCgoKCgojZGVmaW5lIFdDSEFS
X01BWCBfX1dDSEFSX01BWF9fCiMgMjI5ICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4x
MC80LjIuMS9pbmNsdWRlL3N0ZGludC5oIiAzIDQKI2RlZmluZSBXQ0hBUl9NSU4gKC1XQ0hBUl9N
QVgtMSkKCgoKI2RlZmluZSBXSU5UX01JTiBJTlQzMl9NSU4KI2RlZmluZSBXSU5UX01BWCBJTlQz
Ml9NQVgKCiNkZWZpbmUgU0lHX0FUT01JQ19NSU4gSU5UMzJfTUlOCiNkZWZpbmUgU0lHX0FUT01J
Q19NQVggSU5UMzJfTUFYCgoKI2RlZmluZSBJTlQ4X0ModikgKHYpCiNkZWZpbmUgSU5UMTZfQyh2
KSAodikKI2RlZmluZSBJTlQzMl9DKHYpICh2KQojZGVmaW5lIElOVDY0X0ModikgKHYgIyMgTEwp
CgojZGVmaW5lIFVJTlQ4X0ModikgKHYgIyMgVSkKI2RlZmluZSBVSU5UMTZfQyh2KSAodiAjIyBV
KQojZGVmaW5lIFVJTlQzMl9DKHYpICh2ICMjIFUpCiNkZWZpbmUgVUlOVDY0X0ModikgKHYgIyMg
VUxMKQoKI2RlZmluZSBJTlRNQVhfQyh2KSAodiAjIyBMTCkKI2RlZmluZSBVSU5UTUFYX0Modikg
KHYgIyMgVUxMKQojIDI1NiAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDIgMyA0CgoKCgojZGVm
aW5lIHJlc3RyaWN0IAojZGVmaW5lIF9fUkVTVFJJQ1RfS0VZV09SRF9ERUZJTkVEX18gCgoKCmV4
dGVybiAiQyIgewoKCiAgZXh0ZXJuIGludG1heF90IGltYXhhYnMoaW50bWF4X3Qgaik7CgoKICB0
eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50bWF4X3QgcXVvdDsKICAgICAgICBpbnRtYXhfdCBy
ZW07CiAgfSBpbWF4ZGl2X3Q7CgogIGV4dGVybiBpbWF4ZGl2X3QgaW1heGRpdihpbnRtYXhfdCBu
dW1lciwgaW50bWF4X3QgZGVub20pOwoKCiAgZXh0ZXJuIGludG1heF90IHN0cnRvaW1heChjb25z
dCBjaGFyICogbnB0ciwgY2hhciAqKiBlbmRwdHIsIGludCBiYXNlKTsKICBleHRlcm4gdWludG1h
eF90IHN0cnRvdW1heChjb25zdCBjaGFyICogbnB0ciwgY2hhciAqKiBlbmRwdHIsIGludCBiYXNl
KTsKIyAyOTAgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKICBleHRlcm4gaW50bWF4X3Qg
d2NzdG9pbWF4KGNvbnN0IHdjaGFyX3QgKiBucHRyLCB3Y2hhcl90ICoqIGVuZHB0ciwgaW50IGJh
c2UpOwogIGV4dGVybiB1aW50bWF4X3Qgd2NzdG91bWF4KGNvbnN0IHdjaGFyX3QgKiBucHRyLCB3
Y2hhcl90ICoqIGVuZHB0ciwgaW50IGJhc2UpOwoKCgoKCgp9CiMgMzE3ICIvdXNyL2luY2x1ZGUv
aW50dHlwZXMuaCIgMyA0CiN1bmRlZiByZXN0cmljdAojdW5kZWYgX19SRVNUUklDVF9LRVlXT1JE
X0RFRklORURfXwojIDUxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2Vy
dGlvbnMuaCIgMgojIDY3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2Vy
dGlvbnMuaCIKI2RlZmluZSBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQgMAoKCgoKCiNkZWZp
bmUgSEFWRV9WQVJJQURJQ19NQUNSTyAxCgoKCiNkZWZpbmUgQkFDS1RSQUNFX0RJU0FCTEVEIEFT
U0VSVElPTlNfRElTQUJMRURfREVGQVVMVAoKCgojZGVmaW5lIEFTU0VSVF9ESVNBQkxFRCBBU1NF
UlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKCgoKCiNkZWZpbmUgQVNTRVJUX01TR19ESVNBQkxFRCBB
U1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKCgoKCgoKI2RlZmluZSBBU1NFUlRfQVJHX0RJU0FC
TEVEIEFTU0VSVElPTlNfRElTQUJMRURfREVGQVVMVAoKCgoKI2RlZmluZSBGQVRBTF9ESVNBQkxF
RCBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKCgoKCgoKCiNkZWZpbmUgRVJST1JfRElTQUJM
RUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxUCgoKCgoKCgojZGVmaW5lIExPR19ESVNBQkxF
RCBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKCgoKCgoKI2RlZmluZSBXVEZfUFJFVFRZX0ZV
TkNUSU9OIF9fUFJFVFRZX0ZVTkNUSU9OX18KIyAxMzIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oIgojZGVmaW5lIFdURl9BVFRSSUJVVEVfUFJJTlRGKGZv
cm1hdFN0cmluZ0FyZ3VtZW50LGV4dHJhQXJndW1lbnRzKSAKCgoKCgpleHRlcm4gIkMiIHsKCgp0
eXBlZGVmIGVudW0geyBXVEZMb2dDaGFubmVsT2ZmLCBXVEZMb2dDaGFubmVsT24gfSBXVEZMb2dD
aGFubmVsU3RhdGU7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICB1bnNpZ25lZCBtYXNrOwogICAgY29u
c3QgY2hhciAqZGVmYXVsdE5hbWU7CiAgICBXVEZMb2dDaGFubmVsU3RhdGUgc3RhdGU7Cn0gV1RG
TG9nQ2hhbm5lbDsKCiB2b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRp
b24pOwogdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlV2l0aE1lc3NhZ2UoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3Nl
cnRpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSA7CiB2b2lkIFdURlJlcG9ydEFyZ3VtZW50
QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciog
ZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFyZ05hbWUsIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7CiB2
b2lkIFdURlJlcG9ydEJhY2t0cmFjZSgpOwogdm9pZCBXVEZSZXBvcnRGYXRhbEVycm9yKGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pIDsKIHZvaWQgV1RGUmVwb3J0RXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgOwog
dm9pZCBXVEZMb2coV1RGTG9nQ2hhbm5lbCosIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSA7CiB2
b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIDsKCgp9
CiMgMTg5ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCIK
I2RlZmluZSBDUkFTSCgpIGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpCiMg
MjAwICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCIKI2Rl
ZmluZSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIAojIDIxNSAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgQkFDS1RSQUNFKCkgZG8geyBXVEZS
ZXBvcnRCYWNrdHJhY2UoKTsgfSB3aGlsZShmYWxzZSkKIyAyNjUgIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oIgojZGVmaW5lIEFTU0VSVChhc3NlcnRpb24p
IGRvIGlmICghKGFzc2VydGlvbikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVf
XywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNhc3NlcnRpb24pOyBDUkFTSCgpOyB9
IHdoaWxlICgwKQoKCgoKCgojZGVmaW5lIEFTU0VSVF9BVChhc3NlcnRpb24sZmlsZSxsaW5lLGZ1
bmN0aW9uKSBkbyBpZiAoIShhc3NlcnRpb24pKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
ZmlsZSwgbGluZSwgZnVuY3Rpb24sICNhc3NlcnRpb24pOyBDUkFTSCgpOyB9IHdoaWxlICgwKQoK
CgoKCgojZGVmaW5lIEFTU0VSVF9OT1RfUkVBQ0hFRCgpIGRvIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sIDApOyBDUkFT
SCgpOyB9IHdoaWxlICgwKQoKCgoKI2RlZmluZSBBU1NFUlRfVU5VU0VEKHZhcmlhYmxlLGFzc2Vy
dGlvbikgQVNTRVJUKGFzc2VydGlvbikKCiNkZWZpbmUgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSAojIDI5OSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgQVNTRVJUX1dJVEhfTUVTU0FHRShhc3NlcnRp
b24sLi4uKSBkbyBpZiAoIShhc3NlcnRpb24pKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmVX
aXRoTWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNhc3Nl
cnRpb24sIF9fVkFfQVJHU19fKTsgQ1JBU0goKTsgfSB3aGlsZSAoMCkKIyAzMjIgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oIgojZGVmaW5lIEFTU0VSVF9X
SVRIX01FU1NBR0VfVU5VU0VEKHZhcmlhYmxlLGFzc2VydGlvbiwuLi4pIGRvIGlmICghKGFzc2Vy
dGlvbikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZVdpdGhNZXNzYWdlKF9fRklMRV9fLCBf
X0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgI2Fzc2VydGlvbiwgX19WQV9BUkdTX18pOyBD
UkFTSCgpOyB9IHdoaWxlICgwKQojIDMzOSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgQVNTRVJUX0FSRyhhcmdOYW1lLGFzc2VydGlvbikg
ZG8gaWYgKCEoYXNzZXJ0aW9uKSkgeyBXVEZSZXBvcnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUo
X19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCAjYXJnTmFtZSwgI2Fzc2Vy
dGlvbik7IENSQVNIKCk7IH0gd2hpbGUgKDApCiMgMzUwICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCIKI2RlZmluZSBDT01QSUxFX0FTU0VSVChleHAsbmFt
ZSkgdHlwZWRlZiBpbnQgZHVtbXkgIyNuYW1lIFsoZXhwKSA/IDEgOiAtMV0KIyAzNjIgIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oIgojZGVmaW5lIEZBVEFM
KC4uLikgZG8geyBXVEZSZXBvcnRGYXRhbEVycm9yKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BS
RVRUWV9GVU5DVElPTiwgX19WQV9BUkdTX18pOyBDUkFTSCgpOyB9IHdoaWxlICgwKQojIDM3NyAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUg
TE9HX0VSUk9SKC4uLikgV1RGUmVwb3J0RXJyb3IoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJF
VFRZX0ZVTkNUSU9OLCBfX1ZBX0FSR1NfXykKIyAzODkgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oIgojZGVmaW5lIExPRyhjaGFubmVsLC4uLikgV1RGTG9n
KCZKT0lOX0xPR19DSEFOTkVMX1dJVEhfUFJFRklYKExPR19DSEFOTkVMX1BSRUZJWCwgY2hhbm5l
bCksIF9fVkFfQVJHU19fKQojZGVmaW5lIEpPSU5fTE9HX0NIQU5ORUxfV0lUSF9QUkVGSVgocHJl
Zml4LGNoYW5uZWwpIEpPSU5fTE9HX0NIQU5ORUxfV0lUSF9QUkVGSVhfTEVWRUxfMihwcmVmaXgs
IGNoYW5uZWwpCiNkZWZpbmUgSk9JTl9MT0dfQ0hBTk5FTF9XSVRIX1BSRUZJWF9MRVZFTF8yKHBy
ZWZpeCxjaGFubmVsKSBwcmVmaXggIyMgY2hhbm5lbAojIDQwMyAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgTE9HX1ZFUkJPU0UoY2hhbm5l
bCwuLi4pIFdURkxvZ1ZlcmJvc2UoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNU
SU9OLCAmSk9JTl9MT0dfQ0hBTk5FTF9XSVRIX1BSRUZJWChMT0dfQ0hBTk5FTF9QUkVGSVgsIGNo
YW5uZWwpLCBfX1ZBX0FSR1NfXykKCgoKI2RlZmluZSBBU1NFUlRfR0NfT0JKRUNUX0xPT0tTX1ZB
TElEKGNlbGwpIGRvIHsgaWYgKCEoY2VsbCkpIENSQVNIKCk7IGlmIChjZWxsLT51bnZhbGlkYXRl
ZFN0cnVjdHVyZSgpLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpICE9IGNlbGwtPnVudmFsaWRhdGVk
U3RydWN0dXJlKCktPnVudmFsaWRhdGVkU3RydWN0dXJlKCktPnVudmFsaWRhdGVkU3RydWN0dXJl
KCkpIENSQVNIKCk7fSB3aGlsZSAoMCkKCgoKCgoKI2RlZmluZSBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKG9iamVjdCxjbGFzc0luZm8pIGRvIHsgQVNTRVJUX0dDX09CSkVDVF9MT09LU19WQUxJ
RChvYmplY3QpOyBpZiAoIW9iamVjdC0+aW5oZXJpdHMoY2xhc3NJbmZvKSkgQ1JBU0goKTt9IHdo
aWxlICgwKQojIDMwICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bvc3NpYmx5
TnVsbC5oIiAyCgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
UG9zc2libHlOdWxsIHsKICAgIFBvc3NpYmx5TnVsbChUIGRhdGEpCiAgICAgICAgOiBtX2RhdGEo
ZGF0YSkKICAgIHsKICAgIH0KICAgIFBvc3NpYmx5TnVsbChjb25zdCBQb3NzaWJseU51bGw8VD4m
IHNvdXJjZSkKICAgICAgICA6IG1fZGF0YShzb3VyY2UubV9kYXRhKQogICAgewogICAgICAgIHNv
dXJjZS5tX2RhdGEgPSAwOwogICAgfQogICAgflBvc3NpYmx5TnVsbCgpIHsgZG8gaWYgKCEoIW1f
ZGF0YSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9Qb3NzaWJseU51bGwuaCIsIDQzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAi
IW1fZGF0YSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3Qp
MHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGls
ZSAoMCk7IH0KICAgIGJvb2wgZ2V0VmFsdWUoVCYgb3V0KSBfX2F0dHJpYnV0ZV9fICgod2Fybl91
bnVzZWRfcmVzdWx0KSk7CnByaXZhdGU6CiAgICBtdXRhYmxlIFQgbV9kYXRhOwp9OwoKdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGJvb2wgUG9zc2libHlOdWxsPFQ+OjpnZXRWYWx1ZShUJiBvdXQpCnsK
ICAgIG91dCA9IG1fZGF0YTsKICAgIGJvb2wgcmVzdWx0ID0gISFtX2RhdGE7CiAgICBtX2RhdGEg
PSAwOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKfQojIDI2ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MSAzIDQKIyA1OSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKI2RlZmluZSBfU1RETElCX0hf
IAoKIyAxICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5LmgiIDEgMyA0CiMgMjUgIi91c3IvaW5j
bHVkZS9BdmFpbGFiaWxpdHkuaCIgMyA0CiNkZWZpbmUgX19BVkFJTEFCSUxJVFlfXyAKIyAxMTEg
Ii91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHkuaCIgMyA0CiNkZWZpbmUgX19NQUNfMTBfMCAxMDAw
CiNkZWZpbmUgX19NQUNfMTBfMSAxMDEwCiNkZWZpbmUgX19NQUNfMTBfMiAxMDIwCiNkZWZpbmUg
X19NQUNfMTBfMyAxMDMwCiNkZWZpbmUgX19NQUNfMTBfNCAxMDQwCiNkZWZpbmUgX19NQUNfMTBf
NSAxMDUwCiNkZWZpbmUgX19NQUNfMTBfNiAxMDYwCiNkZWZpbmUgX19NQUNfTkEgOTk5OQoKI2Rl
ZmluZSBfX0lQSE9ORV8yXzAgMjAwMDAKI2RlZmluZSBfX0lQSE9ORV8yXzEgMjAxMDAKI2RlZmlu
ZSBfX0lQSE9ORV8yXzIgMjAyMDAKI2RlZmluZSBfX0lQSE9ORV8zXzAgMzAwMDAKI2RlZmluZSBf
X0lQSE9ORV9OQSA5OTk5OQoKIyAxICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5SW50ZXJuYWwu
aCIgMSAzIDQKIyAzMSAiL3Vzci9pbmNsdWRlL0F2YWlsYWJpbGl0eUludGVybmFsLmgiIDMgNAoj
ZGVmaW5lIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX18gCgoKCgojZGVmaW5lIF9fQVZBSUxBQklM
SVRZX0lOVEVSTkFMX0RFUFJFQ0FURUQgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCx2aXNpYmls
aXR5KCJkZWZhdWx0IikpKQojZGVmaW5lIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX1VOQVZBSUxB
QkxFIF9fYXR0cmlidXRlX18oKHVuYXZhaWxhYmxlLHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCiNk
ZWZpbmUgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfV0VBS19JTVBPUlQgX19hdHRyaWJ1dGVfXygo
d2Vha19pbXBvcnQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKI2RlZmluZSBfX0FWQUlMQUJJTElU
WV9JTlRFUk5BTF9SRUdVTEFSIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
CiMgMTQ1ICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5SW50ZXJuYWwuaCIgMyA0CiNkZWZpbmUg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCBfX0VOVklST05NRU5UX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEX18KCgojZGVmaW5lIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxM
T1dFRCBfX01BQ18xMF82CiMgMTU3ICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5SW50ZXJuYWwu
aCIgMyA0CiNkZWZpbmUgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfX01BQ18xMF82IF9fQVZBSUxB
QklMSVRZX0lOVEVSTkFMX1JFR1VMQVIKCgoKCgoKI2RlZmluZSBfX0FWQUlMQUJJTElUWV9JTlRF
Uk5BTF9fTUFDXzEwXzUgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfUkVHVUxBUgoKCgoKCgojZGVm
aW5lIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX19NQUNfMTBfNCBfX0FWQUlMQUJJTElUWV9JTlRF
Uk5BTF9SRUdVTEFSCgoKCgoKCiNkZWZpbmUgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfX01BQ18x
MF8zIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX1JFR1VMQVIKCgoKCgoKI2RlZmluZSBfX0FWQUlM
QUJJTElUWV9JTlRFUk5BTF9fTUFDXzEwXzIgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfUkVHVUxB
UgoKCgoKCgojZGVmaW5lIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX19NQUNfMTBfMSBfX0FWQUlM
QUJJTElUWV9JTlRFUk5BTF9SRUdVTEFSCgoKCgoKCiNkZWZpbmUgX19BVkFJTEFCSUxJVFlfSU5U
RVJOQUxfX01BQ18xMF8wIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX1JFR1VMQVIKCiNkZWZpbmUg
X19BVkFJTEFCSUxJVFlfSU5URVJOQUxfX01BQ19OQSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9V
TkFWQUlMQUJMRQoKI2RlZmluZSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9fTUFDXzEwXzBfREVQ
X19NQUNfMTBfMSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9ERVBSRUNBVEVECgoKCgojZGVmaW5l
IF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX19NQUNfMTBfMF9ERVBfX01BQ18xMF8yIF9fQVZBSUxB
QklMSVRZX0lOVEVSTkFMX0RFUFJFQ0FURUQKI2RlZmluZSBfX0FWQUlMQUJJTElUWV9JTlRFUk5B
TF9fTUFDXzEwXzFfREVQX19NQUNfMTBfMiBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9ERVBSRUNB
VEVECgoKCgoKI2RlZmluZSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9fTUFDXzEwXzBfREVQX19N
QUNfMTBfMyBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9ERVBSRUNBVEVECiNkZWZpbmUgX19BVkFJ
TEFCSUxJVFlfSU5URVJOQUxfX01BQ18xMF8xX0RFUF9fTUFDXzEwXzMgX19BVkFJTEFCSUxJVFlf
SU5URVJOQUxfREVQUkVDQVRFRAojZGVmaW5lIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX19NQUNf
MTBfMl9ERVBfX01BQ18xMF8zIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX0RFUFJFQ0FURUQKCgoK
CgoKI2RlZmluZSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9fTUFDXzEwXzBfREVQX19NQUNfMTBf
NCBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9ERVBSRUNBVEVECiNkZWZpbmUgX19BVkFJTEFCSUxJ
VFlfSU5URVJOQUxfX01BQ18xMF8xX0RFUF9fTUFDXzEwXzQgX19BVkFJTEFCSUxJVFlfSU5URVJO
QUxfREVQUkVDQVRFRAojZGVmaW5lIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX19NQUNfMTBfMl9E
RVBfX01BQ18xMF80IF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX0RFUFJFQ0FURUQKI2RlZmluZSBf
X0FWQUlMQUJJTElUWV9JTlRFUk5BTF9fTUFDXzEwXzNfREVQX19NQUNfMTBfNCBfX0FWQUlMQUJJ
TElUWV9JTlRFUk5BTF9ERVBSRUNBVEVECgoKCgoKCgojZGVmaW5lIF9fQVZBSUxBQklMSVRZX0lO
VEVSTkFMX19NQUNfMTBfMF9ERVBfX01BQ18xMF81IF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX0RF
UFJFQ0FURUQKI2RlZmluZSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9fTUFDXzEwXzFfREVQX19N
QUNfMTBfNSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9ERVBSRUNBVEVECiNkZWZpbmUgX19BVkFJ
TEFCSUxJVFlfSU5URVJOQUxfX01BQ18xMF8yX0RFUF9fTUFDXzEwXzUgX19BVkFJTEFCSUxJVFlf
SU5URVJOQUxfREVQUkVDQVRFRAojZGVmaW5lIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX19NQUNf
MTBfM19ERVBfX01BQ18xMF81IF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX0RFUFJFQ0FURUQKI2Rl
ZmluZSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9fTUFDXzEwXzRfREVQX19NQUNfMTBfNSBfX0FW
QUlMQUJJTElUWV9JTlRFUk5BTF9ERVBSRUNBVEVECiMgMjQ4ICIvdXNyL2luY2x1ZGUvQXZhaWxh
YmlsaXR5SW50ZXJuYWwuaCIgMyA0CiNkZWZpbmUgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfX01B
Q18xMF8wX0RFUF9fTUFDXzEwXzYgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfREVQUkVDQVRFRAoj
ZGVmaW5lIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX19NQUNfMTBfMV9ERVBfX01BQ18xMF82IF9f
QVZBSUxBQklMSVRZX0lOVEVSTkFMX0RFUFJFQ0FURUQKI2RlZmluZSBfX0FWQUlMQUJJTElUWV9J
TlRFUk5BTF9fTUFDXzEwXzJfREVQX19NQUNfMTBfNiBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9E
RVBSRUNBVEVECiNkZWZpbmUgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfX01BQ18xMF8zX0RFUF9f
TUFDXzEwXzYgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfREVQUkVDQVRFRAojZGVmaW5lIF9fQVZB
SUxBQklMSVRZX0lOVEVSTkFMX19NQUNfMTBfNF9ERVBfX01BQ18xMF82IF9fQVZBSUxBQklMSVRZ
X0lOVEVSTkFMX0RFUFJFQ0FURUQKI2RlZmluZSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9fTUFD
XzEwXzVfREVQX19NQUNfMTBfNiBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9ERVBSRUNBVEVECiMg
MjYyICIvdXNyL2luY2x1ZGUvQXZhaWxhYmlsaXR5SW50ZXJuYWwuaCIgMyA0CiNkZWZpbmUgX19B
VkFJTEFCSUxJVFlfSU5URVJOQUxfX01BQ18xMF8wX0RFUF9fTUFDX05BIF9fQVZBSUxBQklMSVRZ
X0lOVEVSTkFMX19NQUNfMTBfMAojZGVmaW5lIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX19NQUNf
MTBfMV9ERVBfX01BQ19OQSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9fTUFDXzEwXzEKI2RlZmlu
ZSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTF9fTUFDXzEwXzJfREVQX19NQUNfTkEgX19BVkFJTEFC
SUxJVFlfSU5URVJOQUxfX01BQ18xMF8yCiNkZWZpbmUgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxf
X01BQ18xMF8zX0RFUF9fTUFDX05BIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX19NQUNfMTBfMwoj
ZGVmaW5lIF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX19NQUNfMTBfNF9ERVBfX01BQ19OQSBfX0FW
QUlMQUJJTElUWV9JTlRFUk5BTF9fTUFDXzEwXzQKI2RlZmluZSBfX0FWQUlMQUJJTElUWV9JTlRF
Uk5BTF9fTUFDXzEwXzVfREVQX19NQUNfTkEgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfX01BQ18x
MF81CiNkZWZpbmUgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfX01BQ18xMF82X0RFUF9fTUFDX05B
IF9fQVZBSUxBQklMSVRZX0lOVEVSTkFMX19NQUNfMTBfNgojZGVmaW5lIF9fQVZBSUxBQklMSVRZ
X0lOVEVSTkFMX19NQUNfTkFfREVQX19NQUNfTkEgX19BVkFJTEFCSUxJVFlfSU5URVJOQUxfVU5B
VkFJTEFCTEUKIyAxMjcgIi91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHkuaCIgMiAzIDQKIyAxMzUg
Ii91c3IvaW5jbHVkZS9BdmFpbGFiaWxpdHkuaCIgMyA0CiNkZWZpbmUgX19PU1hfQVZBSUxBQkxF
X1NUQVJUSU5HKF9tYWMsX2lwaG9uZSkgX19BVkFJTEFCSUxJVFlfSU5URVJOQUwgIyNfbWFjCiNk
ZWZpbmUgX19PU1hfQVZBSUxBQkxFX0JVVF9ERVBSRUNBVEVEKF9tYWNJbnRybyxfbWFjRGVwLF9p
cGhvbmVJbnRybyxfaXBob25lRGVwKSBfX0FWQUlMQUJJTElUWV9JTlRFUk5BTCAjI19tYWNJbnRy
byAjI19ERVAgIyNfbWFjRGVwCiMgNjIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKCgoK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMSAzIDQKIyA2NSAiL3Vzci9pbmNsdWRlL3N5
cy93YWl0LmgiIDMgNAojZGVmaW5lIF9TWVNfV0FJVF9IXyAKIyA3OSAiL3Vzci9pbmNsdWRlL3N5
cy93YWl0LmgiIDMgNAp0eXBlZGVmIGVudW0gewogUF9BTEwsCiBQX1BJRCwKIFBfUEdJRAp9IGlk
dHlwZV90OwoKCgoKCgp0eXBlZGVmIF9fZGFyd2luX3BpZF90IHBpZF90OwojZGVmaW5lIF9QSURf
VCAKCgoKdHlwZWRlZiBfX2Rhcndpbl9pZF90IGlkX3Q7CiNkZWZpbmUgX0lEX1QgCiMgMTE2ICIv
dXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwu
aCIgMSAzIDQKIyA3MCAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CiNkZWZpbmUgX1NZ
U19TSUdOQUxfSF8gCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2FwcGxlYXBpb3B0cy5oIiAxIDMg
NAojIDMwICIvdXNyL2luY2x1ZGUvc3lzL2FwcGxlYXBpb3B0cy5oIiAzIDQKI2RlZmluZSBfX1NZ
U19BUFBMRUFQSU9QVFNfSF9fIAoKCgojZGVmaW5lIF9fQVBQTEVfQVBJX1NUQU5EQVJEIAoKCgoj
ZGVmaW5lIF9fQVBQTEVfQVBJX1NUQUJMRSAKCgoKCgojZGVmaW5lIF9fQVBQTEVfQVBJX0VWT0xW
SU5HIAoKCgojZGVmaW5lIF9fQVBQTEVfQVBJX1VOU1RBQkxFIAoKCgojZGVmaW5lIF9fQVBQTEVf
QVBJX1BSSVZBVEUgCgoKCiNkZWZpbmUgX19BUFBMRV9BUElfT0JTT0xFVEUgCiMgNzQgIi91c3Iv
aW5jbHVkZS9zeXMvc2lnbmFsLmgiIDIgMyA0CgojZGVmaW5lIF9fREFSV0lOX05TSUcgMzIKCgoj
ZGVmaW5lIE5TSUcgX19EQVJXSU5fTlNJRwoKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvc2ln
bmFsLmgiIDEgMyA0CiMgMjkgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3NpZ25hbC5oIiAzIDQKI2Rl
ZmluZSBfQlNEX01BQ0hJTkVfU0lHTkFMX0hfIAoKCgoKIyAxICIvdXNyL2luY2x1ZGUvaTM4Ni9z
aWduYWwuaCIgMSAzIDQKIyAzNCAiL3Vzci9pbmNsdWRlL2kzODYvc2lnbmFsLmgiIDMgNAojZGVm
aW5lIF9JMzg2X1NJR05BTF9IXyAxCgoKCgp0eXBlZGVmIGludCBzaWdfYXRvbWljX3Q7CiMgNTQg
Ii91c3IvaW5jbHVkZS9pMzg2L3NpZ25hbC5oIiAzIDQKI2RlZmluZSBfX25lZWRfc3RydWN0X3Np
Z2NvbnRleHQgCiMgMSAiL3Vzci9pbmNsdWRlL2kzODYvX3N0cnVjdHMuaCIgMSAzIDQKIyAxMDIg
Ii91c3IvaW5jbHVkZS9pMzg2L19zdHJ1Y3RzLmgiIDMgNAojZGVmaW5lIEkzODZfTUNPTlRFWFRf
U0laRSBzaXplb2Yoc3RydWN0IG1jb250ZXh0KQojIDU2ICIvdXNyL2luY2x1ZGUvaTM4Ni9zaWdu
YWwuaCIgMiAzIDQKIyAzNSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvc2lnbmFsLmgiIDIgMyA0CiMg
ODIgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDIgMyA0CgojZGVmaW5lIFNJR0hVUCAxCiNk
ZWZpbmUgU0lHSU5UIDIKI2RlZmluZSBTSUdRVUlUIDMKI2RlZmluZSBTSUdJTEwgNAojZGVmaW5l
IFNJR1RSQVAgNQojZGVmaW5lIFNJR0FCUlQgNgoKCgojZGVmaW5lIFNJR0lPVCBTSUdBQlJUCiNk
ZWZpbmUgU0lHRU1UIDcKCiNkZWZpbmUgU0lHRlBFIDgKI2RlZmluZSBTSUdLSUxMIDkKI2RlZmlu
ZSBTSUdCVVMgMTAKI2RlZmluZSBTSUdTRUdWIDExCiNkZWZpbmUgU0lHU1lTIDEyCiNkZWZpbmUg
U0lHUElQRSAxMwojZGVmaW5lIFNJR0FMUk0gMTQKI2RlZmluZSBTSUdURVJNIDE1CiNkZWZpbmUg
U0lHVVJHIDE2CiNkZWZpbmUgU0lHU1RPUCAxNwojZGVmaW5lIFNJR1RTVFAgMTgKI2RlZmluZSBT
SUdDT05UIDE5CiNkZWZpbmUgU0lHQ0hMRCAyMAojZGVmaW5lIFNJR1RUSU4gMjEKI2RlZmluZSBT
SUdUVE9VIDIyCgojZGVmaW5lIFNJR0lPIDIzCgojZGVmaW5lIFNJR1hDUFUgMjQKI2RlZmluZSBT
SUdYRlNaIDI1CiNkZWZpbmUgU0lHVlRBTFJNIDI2CiNkZWZpbmUgU0lHUFJPRiAyNwoKI2RlZmlu
ZSBTSUdXSU5DSCAyOAojZGVmaW5lIFNJR0lORk8gMjkKCiNkZWZpbmUgU0lHVVNSMSAzMAojZGVm
aW5lIFNJR1VTUjIgMzEKCgoKCgoKCiNkZWZpbmUgU0lHX0RGTCAodm9pZCAoKikoaW50KSkwCiNk
ZWZpbmUgU0lHX0lHTiAodm9pZCAoKikoaW50KSkxCiNkZWZpbmUgU0lHX0hPTEQgKHZvaWQgKCop
KGludCkpNQojZGVmaW5lIFNJR19FUlIgKCh2b2lkICgqKShpbnQpKS0xKQojIDE0NSAiL3Vzci9p
bmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CiNkZWZpbmUgX19uZWVkX21jb250ZXh0X3QgCiNkZWZp
bmUgX19uZWVkX3N0YWNrX3QgCiNkZWZpbmUgX19uZWVkX3Vjb250ZXh0X3QgCgoKCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL3N5cy9fc3RydWN0cy5oIiAxIDMgNAojIDM0ICIvdXNyL2luY2x1ZGUvc3lz
L19zdHJ1Y3RzLmgiIDMgNAojZGVmaW5lIF9fbmVlZF9zdHJ1Y3RfdWNvbnRleHQgCiMgNDYgIi91
c3IvaW5jbHVkZS9zeXMvX3N0cnVjdHMuaCIgMyA0CiNkZWZpbmUgX19uZWVkX3N0cnVjdF9tY29u
dGV4dCAKIyA1NyAiL3Vzci9pbmNsdWRlL3N5cy9fc3RydWN0cy5oIiAzIDQKIyAxICIvdXNyL2lu
Y2x1ZGUvbWFjaGluZS9fc3RydWN0cy5oIiAxIDMgNAojIDMxICIvdXNyL2luY2x1ZGUvbWFjaGlu
ZS9fc3RydWN0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvaTM4Ni9fc3RydWN0cy5oIiAxIDMg
NAojIDM4ICIvdXNyL2luY2x1ZGUvaTM4Ni9fc3RydWN0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1
ZGUvbWFjaC9pMzg2L19zdHJ1Y3RzLmgiIDEgMyA0CiMgMzMgIi91c3IvaW5jbHVkZS9tYWNoL2kz
ODYvX3N0cnVjdHMuaCIgMyA0CiNkZWZpbmUgX01BQ0hfSTM4Nl9fU1RSVUNUU19IXyAKIyA0MiAi
L3Vzci9pbmNsdWRlL21hY2gvaTM4Ni9fc3RydWN0cy5oIiAzIDQKI2RlZmluZSBfU1RSVUNUX1g4
Nl9USFJFQURfU1RBVEUzMiBzdHJ1Y3QgX19kYXJ3aW5faTM4Nl90aHJlYWRfc3RhdGUKc3RydWN0
IF9fZGFyd2luX2kzODZfdGhyZWFkX3N0YXRlCnsKICAgIHVuc2lnbmVkIGludCBfX2VheDsKICAg
IHVuc2lnbmVkIGludCBfX2VieDsKICAgIHVuc2lnbmVkIGludCBfX2VjeDsKICAgIHVuc2lnbmVk
IGludCBfX2VkeDsKICAgIHVuc2lnbmVkIGludCBfX2VkaTsKICAgIHVuc2lnbmVkIGludCBfX2Vz
aTsKICAgIHVuc2lnbmVkIGludCBfX2VicDsKICAgIHVuc2lnbmVkIGludCBfX2VzcDsKICAgIHVu
c2lnbmVkIGludCBfX3NzOwogICAgdW5zaWduZWQgaW50IF9fZWZsYWdzOwogICAgdW5zaWduZWQg
aW50IF9fZWlwOwogICAgdW5zaWduZWQgaW50IF9fY3M7CiAgICB1bnNpZ25lZCBpbnQgX19kczsK
ICAgIHVuc2lnbmVkIGludCBfX2VzOwogICAgdW5zaWduZWQgaW50IF9fZnM7CiAgICB1bnNpZ25l
ZCBpbnQgX19nczsKfTsKIyA4OCAiL3Vzci9pbmNsdWRlL21hY2gvaTM4Ni9fc3RydWN0cy5oIiAz
IDQKI2RlZmluZSBfU1RSVUNUX0ZQX0NPTlRST0wgc3RydWN0IF9fZGFyd2luX2ZwX2NvbnRyb2wK
c3RydWN0IF9fZGFyd2luX2ZwX2NvbnRyb2wKewogICAgdW5zaWduZWQgc2hvcnQgX19pbnZhbGlk
IDoxLAogICAgICAgIF9fZGVub3JtIDoxLAogICAgX196ZGl2IDoxLAogICAgX19vdnJmbCA6MSwK
ICAgIF9fdW5kZmwgOjEsCiAgICBfX3ByZWNpcyA6MSwKICAgICAgOjIsCiAgICBfX3BjIDoyLAoK
I2RlZmluZSBGUF9QUkVDXzI0QiAwCiNkZWZpbmUgRlBfUFJFQ181M0IgMgojZGVmaW5lIEZQX1BS
RUNfNjRCIDMKCiAgICBfX3JjIDoyLAoKI2RlZmluZSBGUF9STkRfTkVBUiAwCiNkZWZpbmUgRlBf
Uk5EX0RPV04gMQojZGVmaW5lIEZQX1JORF9VUCAyCiNkZWZpbmUgRlBfQ0hPUCAzCgogICAgICAg
ICAgICAgOjEsCiAgICAgIDozOwp9Owp0eXBlZGVmIHN0cnVjdCBfX2Rhcndpbl9mcF9jb250cm9s
IF9fZGFyd2luX2ZwX2NvbnRyb2xfdDsKIyAxNDYgIi91c3IvaW5jbHVkZS9tYWNoL2kzODYvX3N0
cnVjdHMuaCIgMyA0CiNkZWZpbmUgX1NUUlVDVF9GUF9TVEFUVVMgc3RydWN0IF9fZGFyd2luX2Zw
X3N0YXR1cwpzdHJ1Y3QgX19kYXJ3aW5fZnBfc3RhdHVzCnsKICAgIHVuc2lnbmVkIHNob3J0IF9f
aW52YWxpZCA6MSwKICAgICAgICBfX2Rlbm9ybSA6MSwKICAgIF9femRpdiA6MSwKICAgIF9fb3Zy
ZmwgOjEsCiAgICBfX3VuZGZsIDoxLAogICAgX19wcmVjaXMgOjEsCiAgICBfX3N0a2ZsdCA6MSwK
ICAgIF9fZXJyc3VtbSA6MSwKICAgIF9fYzAgOjEsCiAgICBfX2MxIDoxLAogICAgX19jMiA6MSwK
ICAgIF9fdG9zIDozLAogICAgX19jMyA6MSwKICAgIF9fYnVzeSA6MTsKfTsKdHlwZWRlZiBzdHJ1
Y3QgX19kYXJ3aW5fZnBfc3RhdHVzIF9fZGFyd2luX2ZwX3N0YXR1c190OwojIDE5MCAiL3Vzci9p
bmNsdWRlL21hY2gvaTM4Ni9fc3RydWN0cy5oIiAzIDQKI2RlZmluZSBfU1RSVUNUX01NU1RfUkVH
IHN0cnVjdCBfX2Rhcndpbl9tbXN0X3JlZwpzdHJ1Y3QgX19kYXJ3aW5fbW1zdF9yZWcKewogY2hh
ciBfX21tc3RfcmVnWzEwXTsKIGNoYXIgX19tbXN0X3JzcnZbNl07Cn07CiMgMjA5ICIvdXNyL2lu
Y2x1ZGUvbWFjaC9pMzg2L19zdHJ1Y3RzLmgiIDMgNAojZGVmaW5lIF9TVFJVQ1RfWE1NX1JFRyBz
dHJ1Y3QgX19kYXJ3aW5feG1tX3JlZwpzdHJ1Y3QgX19kYXJ3aW5feG1tX3JlZwp7CiBjaGFyIF9f
eG1tX3JlZ1sxNl07Cn07CiMgMjI3ICIvdXNyL2luY2x1ZGUvbWFjaC9pMzg2L19zdHJ1Y3RzLmgi
IDMgNAojZGVmaW5lIEZQX1NUQVRFX0JZVEVTIDUxMgoKCgojZGVmaW5lIF9TVFJVQ1RfWDg2X0ZM
T0FUX1NUQVRFMzIgc3RydWN0IF9fZGFyd2luX2kzODZfZmxvYXRfc3RhdGUKc3RydWN0IF9fZGFy
d2luX2kzODZfZmxvYXRfc3RhdGUKewogaW50IF9fZnB1X3Jlc2VydmVkWzJdOwogc3RydWN0IF9f
ZGFyd2luX2ZwX2NvbnRyb2wgX19mcHVfZmN3Owogc3RydWN0IF9fZGFyd2luX2ZwX3N0YXR1cyBf
X2ZwdV9mc3c7CiBfX3VpbnQ4X3QgX19mcHVfZnR3OwogX191aW50OF90IF9fZnB1X3JzcnYxOwog
X191aW50MTZfdCBfX2ZwdV9mb3A7CiBfX3VpbnQzMl90IF9fZnB1X2lwOwogX191aW50MTZfdCBf
X2ZwdV9jczsKIF9fdWludDE2X3QgX19mcHVfcnNydjI7CiBfX3VpbnQzMl90IF9fZnB1X2RwOwog
X191aW50MTZfdCBfX2ZwdV9kczsKIF9fdWludDE2X3QgX19mcHVfcnNydjM7CiBfX3VpbnQzMl90
IF9fZnB1X214Y3NyOwogX191aW50MzJfdCBfX2ZwdV9teGNzcm1hc2s7CiBzdHJ1Y3QgX19kYXJ3
aW5fbW1zdF9yZWcgX19mcHVfc3RtbTA7CiBzdHJ1Y3QgX19kYXJ3aW5fbW1zdF9yZWcgX19mcHVf
c3RtbTE7CiBzdHJ1Y3QgX19kYXJ3aW5fbW1zdF9yZWcgX19mcHVfc3RtbTI7CiBzdHJ1Y3QgX19k
YXJ3aW5fbW1zdF9yZWcgX19mcHVfc3RtbTM7CiBzdHJ1Y3QgX19kYXJ3aW5fbW1zdF9yZWcgX19m
cHVfc3RtbTQ7CiBzdHJ1Y3QgX19kYXJ3aW5fbW1zdF9yZWcgX19mcHVfc3RtbTU7CiBzdHJ1Y3Qg
X19kYXJ3aW5fbW1zdF9yZWcgX19mcHVfc3RtbTY7CiBzdHJ1Y3QgX19kYXJ3aW5fbW1zdF9yZWcg
X19mcHVfc3RtbTc7CiBzdHJ1Y3QgX19kYXJ3aW5feG1tX3JlZyBfX2ZwdV94bW0wOwogc3RydWN0
IF9fZGFyd2luX3htbV9yZWcgX19mcHVfeG1tMTsKIHN0cnVjdCBfX2Rhcndpbl94bW1fcmVnIF9f
ZnB1X3htbTI7CiBzdHJ1Y3QgX19kYXJ3aW5feG1tX3JlZyBfX2ZwdV94bW0zOwogc3RydWN0IF9f
ZGFyd2luX3htbV9yZWcgX19mcHVfeG1tNDsKIHN0cnVjdCBfX2Rhcndpbl94bW1fcmVnIF9fZnB1
X3htbTU7CiBzdHJ1Y3QgX19kYXJ3aW5feG1tX3JlZyBfX2ZwdV94bW02Owogc3RydWN0IF9fZGFy
d2luX3htbV9yZWcgX19mcHVfeG1tNzsKIGNoYXIgX19mcHVfcnNydjRbMTQqMTZdOwogaW50IF9f
ZnB1X3Jlc2VydmVkMTsKfTsKIyAzMDcgIi91c3IvaW5jbHVkZS9tYWNoL2kzODYvX3N0cnVjdHMu
aCIgMyA0CiNkZWZpbmUgX1NUUlVDVF9YODZfRVhDRVBUSU9OX1NUQVRFMzIgc3RydWN0IF9fZGFy
d2luX2kzODZfZXhjZXB0aW9uX3N0YXRlCnN0cnVjdCBfX2Rhcndpbl9pMzg2X2V4Y2VwdGlvbl9z
dGF0ZQp7CiAgICB1bnNpZ25lZCBpbnQgX190cmFwbm87CiAgICB1bnNpZ25lZCBpbnQgX19lcnI7
CiAgICB1bnNpZ25lZCBpbnQgX19mYXVsdHZhZGRyOwp9OwojIDMyNSAiL3Vzci9pbmNsdWRlL21h
Y2gvaTM4Ni9fc3RydWN0cy5oIiAzIDQKI2RlZmluZSBfU1RSVUNUX1g4Nl9ERUJVR19TVEFURTMy
IHN0cnVjdCBfX2Rhcndpbl94ODZfZGVidWdfc3RhdGUzMgpzdHJ1Y3QgX19kYXJ3aW5feDg2X2Rl
YnVnX3N0YXRlMzIKewogdW5zaWduZWQgaW50IF9fZHIwOwogdW5zaWduZWQgaW50IF9fZHIxOwog
dW5zaWduZWQgaW50IF9fZHIyOwogdW5zaWduZWQgaW50IF9fZHIzOwogdW5zaWduZWQgaW50IF9f
ZHI0OwogdW5zaWduZWQgaW50IF9fZHI1OwogdW5zaWduZWQgaW50IF9fZHI2OwogdW5zaWduZWQg
aW50IF9fZHI3Owp9OwojIDM1NyAiL3Vzci9pbmNsdWRlL21hY2gvaTM4Ni9fc3RydWN0cy5oIiAz
IDQKI2RlZmluZSBfU1RSVUNUX1g4Nl9USFJFQURfU1RBVEU2NCBzdHJ1Y3QgX19kYXJ3aW5feDg2
X3RocmVhZF9zdGF0ZTY0CnN0cnVjdCBfX2Rhcndpbl94ODZfdGhyZWFkX3N0YXRlNjQKewogX191
aW50NjRfdCBfX3JheDsKIF9fdWludDY0X3QgX19yYng7CiBfX3VpbnQ2NF90IF9fcmN4OwogX191
aW50NjRfdCBfX3JkeDsKIF9fdWludDY0X3QgX19yZGk7CiBfX3VpbnQ2NF90IF9fcnNpOwogX191
aW50NjRfdCBfX3JicDsKIF9fdWludDY0X3QgX19yc3A7CiBfX3VpbnQ2NF90IF9fcjg7CiBfX3Vp
bnQ2NF90IF9fcjk7CiBfX3VpbnQ2NF90IF9fcjEwOwogX191aW50NjRfdCBfX3IxMTsKIF9fdWlu
dDY0X3QgX19yMTI7CiBfX3VpbnQ2NF90IF9fcjEzOwogX191aW50NjRfdCBfX3IxNDsKIF9fdWlu
dDY0X3QgX19yMTU7CiBfX3VpbnQ2NF90IF9fcmlwOwogX191aW50NjRfdCBfX3JmbGFnczsKIF9f
dWludDY0X3QgX19jczsKIF9fdWludDY0X3QgX19mczsKIF9fdWludDY0X3QgX19nczsKfTsKIyA0
MTIgIi91c3IvaW5jbHVkZS9tYWNoL2kzODYvX3N0cnVjdHMuaCIgMyA0CiNkZWZpbmUgX1NUUlVD
VF9YODZfRkxPQVRfU1RBVEU2NCBzdHJ1Y3QgX19kYXJ3aW5feDg2X2Zsb2F0X3N0YXRlNjQKc3Ry
dWN0IF9fZGFyd2luX3g4Nl9mbG9hdF9zdGF0ZTY0CnsKIGludCBfX2ZwdV9yZXNlcnZlZFsyXTsK
IHN0cnVjdCBfX2Rhcndpbl9mcF9jb250cm9sIF9fZnB1X2ZjdzsKIHN0cnVjdCBfX2Rhcndpbl9m
cF9zdGF0dXMgX19mcHVfZnN3OwogX191aW50OF90IF9fZnB1X2Z0dzsKIF9fdWludDhfdCBfX2Zw
dV9yc3J2MTsKIF9fdWludDE2X3QgX19mcHVfZm9wOwoKCiBfX3VpbnQzMl90IF9fZnB1X2lwOwog
X191aW50MTZfdCBfX2ZwdV9jczsKCiBfX3VpbnQxNl90IF9fZnB1X3JzcnYyOwoKCiBfX3VpbnQz
Ml90IF9fZnB1X2RwOwogX191aW50MTZfdCBfX2ZwdV9kczsKCiBfX3VpbnQxNl90IF9fZnB1X3Jz
cnYzOwogX191aW50MzJfdCBfX2ZwdV9teGNzcjsKIF9fdWludDMyX3QgX19mcHVfbXhjc3JtYXNr
Owogc3RydWN0IF9fZGFyd2luX21tc3RfcmVnIF9fZnB1X3N0bW0wOwogc3RydWN0IF9fZGFyd2lu
X21tc3RfcmVnIF9fZnB1X3N0bW0xOwogc3RydWN0IF9fZGFyd2luX21tc3RfcmVnIF9fZnB1X3N0
bW0yOwogc3RydWN0IF9fZGFyd2luX21tc3RfcmVnIF9fZnB1X3N0bW0zOwogc3RydWN0IF9fZGFy
d2luX21tc3RfcmVnIF9fZnB1X3N0bW00Owogc3RydWN0IF9fZGFyd2luX21tc3RfcmVnIF9fZnB1
X3N0bW01Owogc3RydWN0IF9fZGFyd2luX21tc3RfcmVnIF9fZnB1X3N0bW02Owogc3RydWN0IF9f
ZGFyd2luX21tc3RfcmVnIF9fZnB1X3N0bW03Owogc3RydWN0IF9fZGFyd2luX3htbV9yZWcgX19m
cHVfeG1tMDsKIHN0cnVjdCBfX2Rhcndpbl94bW1fcmVnIF9fZnB1X3htbTE7CiBzdHJ1Y3QgX19k
YXJ3aW5feG1tX3JlZyBfX2ZwdV94bW0yOwogc3RydWN0IF9fZGFyd2luX3htbV9yZWcgX19mcHVf
eG1tMzsKIHN0cnVjdCBfX2Rhcndpbl94bW1fcmVnIF9fZnB1X3htbTQ7CiBzdHJ1Y3QgX19kYXJ3
aW5feG1tX3JlZyBfX2ZwdV94bW01Owogc3RydWN0IF9fZGFyd2luX3htbV9yZWcgX19mcHVfeG1t
NjsKIHN0cnVjdCBfX2Rhcndpbl94bW1fcmVnIF9fZnB1X3htbTc7CiBzdHJ1Y3QgX19kYXJ3aW5f
eG1tX3JlZyBfX2ZwdV94bW04Owogc3RydWN0IF9fZGFyd2luX3htbV9yZWcgX19mcHVfeG1tOTsK
IHN0cnVjdCBfX2Rhcndpbl94bW1fcmVnIF9fZnB1X3htbTEwOwogc3RydWN0IF9fZGFyd2luX3ht
bV9yZWcgX19mcHVfeG1tMTE7CiBzdHJ1Y3QgX19kYXJ3aW5feG1tX3JlZyBfX2ZwdV94bW0xMjsK
IHN0cnVjdCBfX2Rhcndpbl94bW1fcmVnIF9fZnB1X3htbTEzOwogc3RydWN0IF9fZGFyd2luX3ht
bV9yZWcgX19mcHVfeG1tMTQ7CiBzdHJ1Y3QgX19kYXJ3aW5feG1tX3JlZyBfX2ZwdV94bW0xNTsK
IGNoYXIgX19mcHVfcnNydjRbNioxNl07CiBpbnQgX19mcHVfcmVzZXJ2ZWQxOwp9OwojIDUxNiAi
L3Vzci9pbmNsdWRlL21hY2gvaTM4Ni9fc3RydWN0cy5oIiAzIDQKI2RlZmluZSBfU1RSVUNUX1g4
Nl9FWENFUFRJT05fU1RBVEU2NCBzdHJ1Y3QgX19kYXJ3aW5feDg2X2V4Y2VwdGlvbl9zdGF0ZTY0
CnN0cnVjdCBfX2Rhcndpbl94ODZfZXhjZXB0aW9uX3N0YXRlNjQKewogICAgdW5zaWduZWQgaW50
IF9fdHJhcG5vOwogICAgdW5zaWduZWQgaW50IF9fZXJyOwogICAgX191aW50NjRfdCBfX2ZhdWx0
dmFkZHI7Cn07CiMgNTM0ICIvdXNyL2luY2x1ZGUvbWFjaC9pMzg2L19zdHJ1Y3RzLmgiIDMgNAoj
ZGVmaW5lIF9TVFJVQ1RfWDg2X0RFQlVHX1NUQVRFNjQgc3RydWN0IF9fZGFyd2luX3g4Nl9kZWJ1
Z19zdGF0ZTY0CnN0cnVjdCBfX2Rhcndpbl94ODZfZGVidWdfc3RhdGU2NAp7CiBfX3VpbnQ2NF90
IF9fZHIwOwogX191aW50NjRfdCBfX2RyMTsKIF9fdWludDY0X3QgX19kcjI7CiBfX3VpbnQ2NF90
IF9fZHIzOwogX191aW50NjRfdCBfX2RyNDsKIF9fdWludDY0X3QgX19kcjU7CiBfX3VpbnQ2NF90
IF9fZHI2OwogX191aW50NjRfdCBfX2RyNzsKfTsKIyAzOSAiL3Vzci9pbmNsdWRlL2kzODYvX3N0
cnVjdHMuaCIgMiAzIDQKCgoKCiN1bmRlZiBfX25lZWRfc3RydWN0X21jb250ZXh0CgoKCiNkZWZp
bmUgX1NUUlVDVF9NQ09OVEVYVDMyIHN0cnVjdCBfX2Rhcndpbl9tY29udGV4dDMyCnN0cnVjdCBf
X2Rhcndpbl9tY29udGV4dDMyCnsKIHN0cnVjdCBfX2Rhcndpbl9pMzg2X2V4Y2VwdGlvbl9zdGF0
ZSBfX2VzOwogc3RydWN0IF9fZGFyd2luX2kzODZfdGhyZWFkX3N0YXRlIF9fc3M7CiBzdHJ1Y3Qg
X19kYXJ3aW5faTM4Nl9mbG9hdF9zdGF0ZSBfX2ZzOwp9OwojIDY3ICIvdXNyL2luY2x1ZGUvaTM4
Ni9fc3RydWN0cy5oIiAzIDQKI2RlZmluZSBfU1RSVUNUX01DT05URVhUNjQgc3RydWN0IF9fZGFy
d2luX21jb250ZXh0NjQKc3RydWN0IF9fZGFyd2luX21jb250ZXh0NjQKewogc3RydWN0IF9fZGFy
d2luX3g4Nl9leGNlcHRpb25fc3RhdGU2NCBfX2VzOwogc3RydWN0IF9fZGFyd2luX3g4Nl90aHJl
YWRfc3RhdGU2NCBfX3NzOwogc3RydWN0IF9fZGFyd2luX3g4Nl9mbG9hdF9zdGF0ZTY0IF9fZnM7
Cn07CiMgODcgIi91c3IvaW5jbHVkZS9pMzg2L19zdHJ1Y3RzLmgiIDMgNAojdW5kZWYgX19uZWVk
X21jb250ZXh0X3QKCiNkZWZpbmUgX01DT05URVhUX1QgCgp0eXBlZGVmIHN0cnVjdCBfX2Rhcndp
bl9tY29udGV4dDY0ICptY29udGV4dF90OwojZGVmaW5lIF9TVFJVQ1RfTUNPTlRFWFQgX1NUUlVD
VF9NQ09OVEVYVDY0CiMgMzIgIi91c3IvaW5jbHVkZS9tYWNoaW5lL19zdHJ1Y3RzLmgiIDIgMyA0
CiMgNTggIi91c3IvaW5jbHVkZS9zeXMvX3N0cnVjdHMuaCIgMiAzIDQKCgoKCiNkZWZpbmUgX19u
ZWVkX3N0cnVjdF9zaWdhbHRzdGFjayAKCgoKCiN1bmRlZiBfX25lZWRfc3RydWN0X3NpZ2FsdHN0
YWNrCgoKCiNkZWZpbmUgX1NUUlVDVF9TSUdBTFRTVEFDSyBzdHJ1Y3QgX19kYXJ3aW5fc2lnYWx0
c3RhY2sKCgoKc3RydWN0IF9fZGFyd2luX3NpZ2FsdHN0YWNrCnsKIHZvaWQgKnNzX3NwOwogX19k
YXJ3aW5fc2l6ZV90IHNzX3NpemU7CiBpbnQgc3NfZmxhZ3M7Cn07CiMgMTIxICIvdXNyL2luY2x1
ZGUvc3lzL19zdHJ1Y3RzLmgiIDMgNAojdW5kZWYgX19uZWVkX3N0cnVjdF91Y29udGV4dAoKCiNk
ZWZpbmUgX1NUUlVDVF9VQ09OVEVYVCBzdHJ1Y3QgX19kYXJ3aW5fdWNvbnRleHQKCgoKc3RydWN0
IF9fZGFyd2luX3Vjb250ZXh0CnsKIGludCB1Y19vbnN0YWNrOwogX19kYXJ3aW5fc2lnc2V0X3Qg
dWNfc2lnbWFzazsKIHN0cnVjdCBfX2Rhcndpbl9zaWdhbHRzdGFjayB1Y19zdGFjazsKIHN0cnVj
dCBfX2Rhcndpbl91Y29udGV4dCAqdWNfbGluazsKIF9fZGFyd2luX3NpemVfdCB1Y19tY3NpemU7
CiBzdHJ1Y3QgX19kYXJ3aW5fbWNvbnRleHQ2NCAqdWNfbWNvbnRleHQ7CgoKCn07CiMgMjE1ICIv
dXNyL2luY2x1ZGUvc3lzL19zdHJ1Y3RzLmgiIDMgNAojdW5kZWYgX19uZWVkX3N0YWNrX3QKCiNk
ZWZpbmUgX1NUQUNLX1QgCnR5cGVkZWYgc3RydWN0IF9fZGFyd2luX3NpZ2FsdHN0YWNrIHN0YWNr
X3Q7CgoKCgojdW5kZWYgX19uZWVkX3Vjb250ZXh0X3QKCgojZGVmaW5lIF9VQ09OVEVYVF9UIAp0
eXBlZGVmIHN0cnVjdCBfX2Rhcndpbl91Y29udGV4dCB1Y29udGV4dF90OwojIDE1NSAiL3Vzci9p
bmNsdWRlL3N5cy9zaWduYWwuaCIgMiAzIDQKCgoKCgoKCiNkZWZpbmUgX1BUSFJFQURfQVRUUl9U
IAp0eXBlZGVmIF9fZGFyd2luX3B0aHJlYWRfYXR0cl90IHB0aHJlYWRfYXR0cl90OwoKCgojZGVm
aW5lIF9TSUdTRVRfVCAKdHlwZWRlZiBfX2Rhcndpbl9zaWdzZXRfdCBzaWdzZXRfdDsKIyAxNzcg
Ii91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAojZGVmaW5lIF9VSURfVCAKdHlwZWRlZiBf
X2Rhcndpbl91aWRfdCB1aWRfdDsKCgp1bmlvbiBzaWd2YWwgewoKIGludCBzaXZhbF9pbnQ7CiB2
b2lkICpzaXZhbF9wdHI7Cn07CgojZGVmaW5lIFNJR0VWX05PTkUgMAojZGVmaW5lIFNJR0VWX1NJ
R05BTCAxCiNkZWZpbmUgU0lHRVZfVEhSRUFEIDMKCnN0cnVjdCBzaWdldmVudCB7CiBpbnQgc2ln
ZXZfbm90aWZ5OwogaW50IHNpZ2V2X3NpZ25vOwogdW5pb24gc2lndmFsIHNpZ2V2X3ZhbHVlOwog
dm9pZCAoKnNpZ2V2X25vdGlmeV9mdW5jdGlvbikodW5pb24gc2lndmFsKTsKIHB0aHJlYWRfYXR0
cl90ICpzaWdldl9ub3RpZnlfYXR0cmlidXRlczsKfTsKCgp0eXBlZGVmIHN0cnVjdCBfX3NpZ2lu
Zm8gewogaW50IHNpX3NpZ25vOwogaW50IHNpX2Vycm5vOwogaW50IHNpX2NvZGU7CiBwaWRfdCBz
aV9waWQ7CiB1aWRfdCBzaV91aWQ7CiBpbnQgc2lfc3RhdHVzOwogdm9pZCAqc2lfYWRkcjsKIHVu
aW9uIHNpZ3ZhbCBzaV92YWx1ZTsKIGxvbmcgc2lfYmFuZDsKIHVuc2lnbmVkIGxvbmcgX19wYWRb
N107Cn0gc2lnaW5mb190OwojIDIyOSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CiNk
ZWZpbmUgSUxMX05PT1AgMAoKI2RlZmluZSBJTExfSUxMT1BDIDEKI2RlZmluZSBJTExfSUxMVFJQ
IDIKI2RlZmluZSBJTExfUFJWT1BDIDMKI2RlZmluZSBJTExfSUxMT1BOIDQKI2RlZmluZSBJTExf
SUxMQURSIDUKI2RlZmluZSBJTExfUFJWUkVHIDYKI2RlZmluZSBJTExfQ09QUk9DIDcKI2RlZmlu
ZSBJTExfQkFEU1RLIDgKCgoKI2RlZmluZSBGUEVfTk9PUCAwCgojZGVmaW5lIEZQRV9GTFRESVYg
MQojZGVmaW5lIEZQRV9GTFRPVkYgMgojZGVmaW5lIEZQRV9GTFRVTkQgMwojZGVmaW5lIEZQRV9G
TFRSRVMgNAojZGVmaW5lIEZQRV9GTFRJTlYgNQojZGVmaW5lIEZQRV9GTFRTVUIgNgojZGVmaW5l
IEZQRV9JTlRESVYgNwojZGVmaW5lIEZQRV9JTlRPVkYgOAoKCgojZGVmaW5lIFNFR1ZfTk9PUCAw
CgojZGVmaW5lIFNFR1ZfTUFQRVJSIDEKI2RlZmluZSBTRUdWX0FDQ0VSUiAyCgoKCiNkZWZpbmUg
QlVTX05PT1AgMAoKI2RlZmluZSBCVVNfQURSQUxOIDEKI2RlZmluZSBCVVNfQURSRVJSIDIKI2Rl
ZmluZSBCVVNfT0JKRVJSIDMKCgojZGVmaW5lIFRSQVBfQlJLUFQgMQojZGVmaW5lIFRSQVBfVFJB
Q0UgMgoKCgojZGVmaW5lIENMRF9OT09QIDAKCiNkZWZpbmUgQ0xEX0VYSVRFRCAxCiNkZWZpbmUg
Q0xEX0tJTExFRCAyCiNkZWZpbmUgQ0xEX0RVTVBFRCAzCiNkZWZpbmUgQ0xEX1RSQVBQRUQgNAoj
ZGVmaW5lIENMRF9TVE9QUEVEIDUKI2RlZmluZSBDTERfQ09OVElOVUVEIDYKCgojZGVmaW5lIFBP
TExfSU4gMQojZGVmaW5lIFBPTExfT1VUIDIKI2RlZmluZSBQT0xMX01TRyAzCiNkZWZpbmUgUE9M
TF9FUlIgNAojZGVmaW5lIFBPTExfUFJJIDUKI2RlZmluZSBQT0xMX0hVUCA2CgoKdW5pb24gX19z
aWdhY3Rpb25fdSB7CiB2b2lkICgqX19zYV9oYW5kbGVyKShpbnQpOwogdm9pZCAoKl9fc2Ffc2ln
YWN0aW9uKShpbnQsIHN0cnVjdCBfX3NpZ2luZm8gKiwKICAgICAgICAgdm9pZCAqKTsKfTsKCgpz
dHJ1Y3QgX19zaWdhY3Rpb24gewogdW5pb24gX19zaWdhY3Rpb25fdSBfX3NpZ2FjdGlvbl91Owog
dm9pZCAoKnNhX3RyYW1wKSh2b2lkICosIGludCwgaW50LCBzaWdpbmZvX3QgKiwgdm9pZCAqKTsK
IHNpZ3NldF90IHNhX21hc2s7CiBpbnQgc2FfZmxhZ3M7Cn07CgoKCgpzdHJ1Y3Qgc2lnYWN0aW9u
IHsKIHVuaW9uIF9fc2lnYWN0aW9uX3UgX19zaWdhY3Rpb25fdTsKIHNpZ3NldF90IHNhX21hc2s7
CiBpbnQgc2FfZmxhZ3M7Cn07CgoKCgojZGVmaW5lIHNhX2hhbmRsZXIgX19zaWdhY3Rpb25fdS5f
X3NhX2hhbmRsZXIKI2RlZmluZSBzYV9zaWdhY3Rpb24gX19zaWdhY3Rpb25fdS5fX3NhX3NpZ2Fj
dGlvbgoKI2RlZmluZSBTQV9PTlNUQUNLIDB4MDAwMQojZGVmaW5lIFNBX1JFU1RBUlQgMHgwMDAy
CiNkZWZpbmUgU0FfUkVTRVRIQU5EIDB4MDAwNAojZGVmaW5lIFNBX05PQ0xEU1RPUCAweDAwMDgK
I2RlZmluZSBTQV9OT0RFRkVSIDB4MDAxMAojZGVmaW5lIFNBX05PQ0xEV0FJVCAweDAwMjAKI2Rl
ZmluZSBTQV9TSUdJTkZPIDB4MDA0MAoKI2RlZmluZSBTQV9VU0VSVFJBTVAgMHgwMTAwCgojZGVm
aW5lIFNBXzY0UkVHU0VUIDB4MDIwMAoKCgoKCiNkZWZpbmUgU0FfVVNFUlNQQUNFX01BU0sgKFNB
X09OU1RBQ0sgfCBTQV9SRVNUQVJUIHwgU0FfUkVTRVRIQU5EIHwgU0FfTk9DTERTVE9QIHwgU0Ff
Tk9ERUZFUiB8IFNBX05PQ0xEV0FJVCB8IFNBX1NJR0lORk8pCgoKCgojZGVmaW5lIFNJR19CTE9D
SyAxCiNkZWZpbmUgU0lHX1VOQkxPQ0sgMgojZGVmaW5lIFNJR19TRVRNQVNLIDMKCgojZGVmaW5l
IFNJX1VTRVIgMHgxMDAwMQojZGVmaW5lIFNJX1FVRVVFIDB4MTAwMDIKI2RlZmluZSBTSV9USU1F
UiAweDEwMDAzCiNkZWZpbmUgU0lfQVNZTkNJTyAweDEwMDA0CiNkZWZpbmUgU0lfTUVTR1EgMHgx
MDAwNQoKCnR5cGVkZWYgdm9pZCAoKnNpZ190KShpbnQpOwoKCgoKCgojZGVmaW5lIFNTX09OU1RB
Q0sgMHgwMDAxCiNkZWZpbmUgU1NfRElTQUJMRSAweDAwMDQKI2RlZmluZSBNSU5TSUdTVEtTWiAz
Mjc2OAojZGVmaW5lIFNJR1NUS1NaIDEzMTA3MgoKCgoKCgpzdHJ1Y3Qgc2lndmVjIHsKIHZvaWQg
KCpzdl9oYW5kbGVyKShpbnQpOwogaW50IHN2X21hc2s7CiBpbnQgc3ZfZmxhZ3M7Cn07CgojZGVm
aW5lIFNWX09OU1RBQ0sgU0FfT05TVEFDSwojZGVmaW5lIFNWX0lOVEVSUlVQVCBTQV9SRVNUQVJU
CiNkZWZpbmUgU1ZfUkVTRVRIQU5EIFNBX1JFU0VUSEFORAojZGVmaW5lIFNWX05PREVGRVIgU0Ff
Tk9ERUZFUgojZGVmaW5lIFNWX05PQ0xEU1RPUCBTQV9OT0NMRFNUT1AKI2RlZmluZSBTVl9TSUdJ
TkZPIFNBX1NJR0lORk8KCiNkZWZpbmUgc3Zfb25zdGFjayBzdl9mbGFncwoKCgoKCnN0cnVjdCBz
aWdzdGFjayB7CiBjaGFyICpzc19zcDsKIGludCBzc19vbnN0YWNrOwp9OwoKCgoKCgojZGVmaW5l
IHNpZ21hc2sobSkgKDEgPDwgKChtKS0xKSkKCgojZGVmaW5lIEJBRFNJRyBTSUdfRVJSCiMgNDEy
ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKZXh0ZXJuICJDIiB7CnZvaWQgKCpzaWdu
YWwoaW50LCB2b2lkICgqKShpbnQpKSkoaW50KTsKfQojIDExNyAiL3Vzci9pbmNsdWRlL3N5cy93
YWl0LmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAxIDMgNAojIDY1
ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMgNAojZGVmaW5lIF9TWVNfUkVTT1VSQ0Vf
SF8gCiMgNzUgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CiNkZWZpbmUgX19uZWVk
X3N0cnVjdF90aW1ldmFsIAojIDEgIi91c3IvaW5jbHVkZS9zeXMvX3N0cnVjdHMuaCIgMSAzIDQK
IyA5NyAiL3Vzci9pbmNsdWRlL3N5cy9fc3RydWN0cy5oIiAzIDQKI3VuZGVmIF9fbmVlZF9zdHJ1
Y3RfdGltZXZhbAoKI2RlZmluZSBfU1RSVUNUX1RJTUVWQUwgc3RydWN0IHRpbWV2YWwKc3RydWN0
IHRpbWV2YWwKewogX19kYXJ3aW5fdGltZV90IHR2X3NlYzsKIF9fZGFyd2luX3N1c2Vjb25kc190
IHR2X3VzZWM7Cn07CiMgNzcgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMiAzIDQKIyA4
OCAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKdHlwZWRlZiBfX3VpbnQ2NF90IHJs
aW1fdDsKIyA5OSAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKI2RlZmluZSBQUklP
X1BST0NFU1MgMAojZGVmaW5lIFBSSU9fUEdSUCAxCiNkZWZpbmUgUFJJT19VU0VSIDIKCgojZGVm
aW5lIFBSSU9fREFSV0lOX1RIUkVBRCAzCiNkZWZpbmUgUFJJT19EQVJXSU5fUFJPQ0VTUyA0CgoK
CgojZGVmaW5lIFBSSU9fTUlOIC0yMAojZGVmaW5lIFBSSU9fTUFYIDIwCgoKCgoKCiNkZWZpbmUg
UFJJT19EQVJXSU5fQkcgMHgxMDAwCiMgMTMyICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgi
IDMgNAojZGVmaW5lIFJVU0FHRV9TRUxGIDAKI2RlZmluZSBSVVNBR0VfQ0hJTERSRU4gLTEKIyAx
NDQgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CnN0cnVjdCBydXNhZ2Ugewogc3Ry
dWN0IHRpbWV2YWwgcnVfdXRpbWU7CiBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKIyAxNTUgIi91
c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CiBsb25nIHJ1X21heHJzczsKI2RlZmluZSBy
dV9maXJzdCBydV9peHJzcwogbG9uZyBydV9peHJzczsKIGxvbmcgcnVfaWRyc3M7CiBsb25nIHJ1
X2lzcnNzOwogbG9uZyBydV9taW5mbHQ7CiBsb25nIHJ1X21hamZsdDsKIGxvbmcgcnVfbnN3YXA7
CiBsb25nIHJ1X2luYmxvY2s7CiBsb25nIHJ1X291YmxvY2s7CiBsb25nIHJ1X21zZ3NuZDsKIGxv
bmcgcnVfbXNncmN2OwogbG9uZyBydV9uc2lnbmFsczsKIGxvbmcgcnVfbnZjc3c7CiBsb25nIHJ1
X25pdmNzdzsKI2RlZmluZSBydV9sYXN0IHJ1X25pdmNzdwoKfTsKIyAxODYgIi91c3IvaW5jbHVk
ZS9zeXMvcmVzb3VyY2UuaCIgMyA0CiNkZWZpbmUgUkxJTV9JTkZJTklUWSAoKChfX3VpbnQ2NF90
KTEgPDwgNjMpIC0gMSkKI2RlZmluZSBSTElNX1NBVkVEX01BWCBSTElNX0lORklOSVRZCiNkZWZp
bmUgUkxJTV9TQVZFRF9DVVIgUkxJTV9JTkZJTklUWQoKCgoKCiNkZWZpbmUgUkxJTUlUX0NQVSAw
CiNkZWZpbmUgUkxJTUlUX0ZTSVpFIDEKI2RlZmluZSBSTElNSVRfREFUQSAyCiNkZWZpbmUgUkxJ
TUlUX1NUQUNLIDMKI2RlZmluZSBSTElNSVRfQ09SRSA0CiNkZWZpbmUgUkxJTUlUX0FTIDUKCiNk
ZWZpbmUgUkxJTUlUX1JTUyBSTElNSVRfQVMKI2RlZmluZSBSTElNSVRfTUVNTE9DSyA2CiNkZWZp
bmUgUkxJTUlUX05QUk9DIDcKCiNkZWZpbmUgUkxJTUlUX05PRklMRSA4CgojZGVmaW5lIFJMSU1f
TkxJTUlUUyA5CgojZGVmaW5lIF9STElNSVRfUE9TSVhfRkxBRyAweDEwMDAKCgoKCgpzdHJ1Y3Qg
cmxpbWl0IHsKIHJsaW1fdCBybGltX2N1cjsKIHJsaW1fdCBybGltX21heDsKfTsKCgoKI2RlZmlu
ZSBJT1BPTF9UWVBFX0RJU0sgMAoKCiNkZWZpbmUgSU9QT0xfU0NPUEVfUFJPQ0VTUyAwCiNkZWZp
bmUgSU9QT0xfU0NPUEVfVEhSRUFEIDEKCgojZGVmaW5lIElPUE9MX0RFRkFVTFQgMAojZGVmaW5l
IElPUE9MX05PUk1BTCAxCiNkZWZpbmUgSU9QT0xfUEFTU0lWRSAyCiNkZWZpbmUgSU9QT0xfVEhS
T1RUTEUgMwoKCgoKZXh0ZXJuICJDIiB7CmludCBnZXRwcmlvcml0eShpbnQsIGlkX3QpOwoKaW50
IGdldGlvcG9saWN5X25wKGludCwgaW50KTsKCmludCBnZXRybGltaXQoaW50LCBzdHJ1Y3Qgcmxp
bWl0ICopIF9fYXNtKCJfIiAiZ2V0cmxpbWl0IiApOwppbnQgZ2V0cnVzYWdlKGludCwgc3RydWN0
IHJ1c2FnZSAqKTsKaW50IHNldHByaW9yaXR5KGludCwgaWRfdCwgaW50KTsKCmludCBzZXRpb3Bv
bGljeV9ucChpbnQsIGludCwgaW50KTsKCmludCBzZXRybGltaXQoaW50LCBjb25zdCBzdHJ1Y3Qg
cmxpbWl0ICopIF9fYXNtKCJfIiAic2V0cmxpbWl0IiApOwp9CiMgMTE4ICIvdXNyL2luY2x1ZGUv
c3lzL3dhaXQuaCIgMiAzIDQKIyAxMjggIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAzIDQKI2Rl
ZmluZSBXTk9IQU5HIDB4MDAwMDAwMDEKI2RlZmluZSBXVU5UUkFDRUQgMHgwMDAwMDAwMgojIDEz
OCAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMgNAojZGVmaW5lIF9XX0lOVCh3KSAoKihpbnQg
KikmKHcpKQojZGVmaW5lIFdDT1JFRkxBRyAwMjAwCgoKCiNkZWZpbmUgX1dTVEFUVVMoeCkgKF9X
X0lOVCh4KSAmIDAxNzcpCiNkZWZpbmUgX1dTVE9QUEVEIDAxNzcKCgoKCgoKI2RlZmluZSBXRVhJ
VFNUQVRVUyh4KSAoKF9XX0lOVCh4KSA+PiA4KSAmIDB4MDAwMDAwZmYpCgoKCgojZGVmaW5lIFdT
VE9QU0lHKHgpIChfV19JTlQoeCkgPj4gOCkKI2RlZmluZSBXSUZDT05USU5VRUQoeCkgKF9XU1RB
VFVTKHgpID09IF9XU1RPUFBFRCAmJiBXU1RPUFNJRyh4KSA9PSAweDEzKQojZGVmaW5lIFdJRlNU
T1BQRUQoeCkgKF9XU1RBVFVTKHgpID09IF9XU1RPUFBFRCAmJiBXU1RPUFNJRyh4KSAhPSAweDEz
KQojZGVmaW5lIFdJRkVYSVRFRCh4KSAoX1dTVEFUVVMoeCkgPT0gMCkKI2RlZmluZSBXSUZTSUdO
QUxFRCh4KSAoX1dTVEFUVVMoeCkgIT0gX1dTVE9QUEVEICYmIF9XU1RBVFVTKHgpICE9IDApCiNk
ZWZpbmUgV1RFUk1TSUcoeCkgKF9XU1RBVFVTKHgpKQoKI2RlZmluZSBXQ09SRURVTVAoeCkgKF9X
X0lOVCh4KSAmIFdDT1JFRkxBRykKCiNkZWZpbmUgV19FWElUQ09ERShyZXQsc2lnKSAoKHJldCkg
PDwgOCB8IChzaWcpKQojZGVmaW5lIFdfU1RPUENPREUoc2lnKSAoKHNpZykgPDwgOCB8IF9XU1RP
UFBFRCkKIyAxNzUgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAzIDQKI2RlZmluZSBXRVhJVEVE
IDB4MDAwMDAwMDQKCgojZGVmaW5lIFdTVE9QUEVEIDB4MDAwMDAwMDgKCiNkZWZpbmUgV0NPTlRJ
TlVFRCAweDAwMDAwMDEwCiNkZWZpbmUgV05PV0FJVCAweDAwMDAwMDIwCiMgMTkwICIvdXNyL2lu
Y2x1ZGUvc3lzL3dhaXQuaCIgMyA0CiNkZWZpbmUgV0FJVF9BTlkgKC0xKQojZGVmaW5lIFdBSVRf
TVlQR1JQIDAKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvZW5kaWFuLmgiIDEgMyA0CiMgMzIg
Ii91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIiAzIDQKI2RlZmluZSBfQlNEX01BQ0hJTkVf
RU5ESUFOX0hfIAoKCgoKIyAxICIvdXNyL2luY2x1ZGUvaTM4Ni9lbmRpYW4uaCIgMSAzIDQKIyA2
NyAiL3Vzci9pbmNsdWRlL2kzODYvZW5kaWFuLmgiIDMgNAojZGVmaW5lIF9JMzg2X19FTkRJQU5f
SF8gCiMgNzggIi91c3IvaW5jbHVkZS9pMzg2L2VuZGlhbi5oIiAzIDQKI2RlZmluZSBfUVVBRF9I
SUdIV09SRCAxCiNkZWZpbmUgX1FVQURfTE9XV09SRCAwCgoKCgoKI2RlZmluZSBfX0RBUldJTl9M
SVRUTEVfRU5ESUFOIDEyMzQKI2RlZmluZSBfX0RBUldJTl9CSUdfRU5ESUFOIDQzMjEKI2RlZmlu
ZSBfX0RBUldJTl9QRFBfRU5ESUFOIDM0MTIKCiNkZWZpbmUgX19EQVJXSU5fQllURV9PUkRFUiBf
X0RBUldJTl9MSVRUTEVfRU5ESUFOCgoKCiNkZWZpbmUgTElUVExFX0VORElBTiBfX0RBUldJTl9M
SVRUTEVfRU5ESUFOCiNkZWZpbmUgQklHX0VORElBTiBfX0RBUldJTl9CSUdfRU5ESUFOCiNkZWZp
bmUgUERQX0VORElBTiBfX0RBUldJTl9QRFBfRU5ESUFOCgojZGVmaW5lIEJZVEVfT1JERVIgX19E
QVJXSU5fQllURV9PUkRFUgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL19lbmRpYW4uaCIgMSAzIDQK
IyA5MSAiL3Vzci9pbmNsdWRlL3N5cy9fZW5kaWFuLmgiIDMgNAojZGVmaW5lIF9TWVNfX0VORElB
Tl9IXyAKIyAxMjQgIi91c3IvaW5jbHVkZS9zeXMvX2VuZGlhbi5oIiAzIDQKIyAxICIvdXNyL2lu
Y2x1ZGUvbGlia2Vybi9fT1NCeXRlT3JkZXIuaCIgMSAzIDQKIyAzMCAiL3Vzci9pbmNsdWRlL2xp
Ymtlcm4vX09TQnl0ZU9yZGVyLmgiIDMgNAojZGVmaW5lIF9PU19fT1NCWVRFT1JERVJfSCAKIyA0
MyAiL3Vzci9pbmNsdWRlL2xpYmtlcm4vX09TQnl0ZU9yZGVyLmgiIDMgNAojZGVmaW5lIF9fREFS
V0lOX09TU3dhcENvbnN0SW50MTYoeCkgKChfX3VpbnQxNl90KSgoKChfX3VpbnQxNl90KSh4KSAm
IDB4ZmYwMCkgPj4gOCkgfCAoKChfX3VpbnQxNl90KSh4KSAmIDB4MDBmZikgPDwgOCkpKQoKCgoj
ZGVmaW5lIF9fREFSV0lOX09TU3dhcENvbnN0SW50MzIoeCkgKChfX3VpbnQzMl90KSgoKChfX3Vp
bnQzMl90KSh4KSAmIDB4ZmYwMDAwMDApID4+IDI0KSB8ICgoKF9fdWludDMyX3QpKHgpICYgMHgw
MGZmMDAwMCkgPj4gOCkgfCAoKChfX3VpbnQzMl90KSh4KSAmIDB4MDAwMGZmMDApIDw8IDgpIHwg
KCgoX191aW50MzJfdCkoeCkgJiAweDAwMDAwMGZmKSA8PCAyNCkpKQoKCgoKCiNkZWZpbmUgX19E
QVJXSU5fT1NTd2FwQ29uc3RJbnQ2NCh4KSAoKF9fdWludDY0X3QpKCgoKF9fdWludDY0X3QpKHgp
ICYgMHhmZjAwMDAwMDAwMDAwMDAwVUxMKSA+PiA1NikgfCAoKChfX3VpbnQ2NF90KSh4KSAmIDB4
MDBmZjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwgKCgoX191aW50NjRfdCkoeCkgJiAweDAwMDBm
ZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8ICgoKF9fdWludDY0X3QpKHgpICYgMHgwMDAwMDBmZjAw
MDAwMDAwVUxMKSA+PiA4KSB8ICgoKF9fdWludDY0X3QpKHgpICYgMHgwMDAwMDAwMGZmMDAwMDAw
VUxMKSA8PCA4KSB8ICgoKF9fdWludDY0X3QpKHgpICYgMHgwMDAwMDAwMDAwZmYwMDAwVUxMKSA8
PCAyNCkgfCAoKChfX3VpbnQ2NF90KSh4KSAmIDB4MDAwMDAwMDAwMDAwZmYwMFVMTCkgPDwgNDAp
IHwgKCgoX191aW50NjRfdCkoeCkgJiAweDAwMDAwMDAwMDAwMDAwZmZVTEwpIDw8IDU2KSkpCiMg
NjYgIi91c3IvaW5jbHVkZS9saWJrZXJuL19PU0J5dGVPcmRlci5oIiAzIDQKIyAxICIvdXNyL2lu
Y2x1ZGUvbGlia2Vybi9pMzg2L19PU0J5dGVPcmRlci5oIiAxIDMgNAojIDMwICIvdXNyL2luY2x1
ZGUvbGlia2Vybi9pMzg2L19PU0J5dGVPcmRlci5oIiAzIDQKI2RlZmluZSBfT1NfX09TQllURU9S
REVSSTM4Nl9IIAoKCgoKCiNkZWZpbmUgX19EQVJXSU5fT1NfSU5MSU5FIHN0YXRpYyBpbmxpbmUK
CgoKCgoKCnN0YXRpYyBpbmxpbmUKX191aW50MTZfdApfT1NTd2FwSW50MTYoCiAgICBfX3VpbnQx
Nl90IF9kYXRhCikKewogICAgcmV0dXJuICgoX2RhdGEgPDwgOCkgfCAoX2RhdGEgPj4gOCkpOwp9
CgpzdGF0aWMgaW5saW5lCl9fdWludDMyX3QKX09TU3dhcEludDMyKAogICAgX191aW50MzJfdCBf
ZGF0YQopCnsKCgoKICAgIF9fYXNtX18gKCJic3dhcCAgICUwIiA6ICIrciIgKF9kYXRhKSk7CiAg
ICByZXR1cm4gX2RhdGE7Cgp9CiMgOTEgIi91c3IvaW5jbHVkZS9saWJrZXJuL2kzODYvX09TQnl0
ZU9yZGVyLmgiIDMgNApzdGF0aWMgaW5saW5lCl9fdWludDY0X3QKX09TU3dhcEludDY0KAogICAg
X191aW50NjRfdCBfZGF0YQopCnsKICAgIF9fYXNtX18gKCJic3dhcCAgICUwIiA6ICIrciIgKF9k
YXRhKSk7CiAgICByZXR1cm4gX2RhdGE7Cn0KIyA2NyAiL3Vzci9pbmNsdWRlL2xpYmtlcm4vX09T
Qnl0ZU9yZGVyLmgiIDIgMyA0CgoKCgoKCgojZGVmaW5lIF9fREFSV0lOX09TU3dhcEludDE2KHgp
IChfX2J1aWx0aW5fY29uc3RhbnRfcCh4KSA/IF9fREFSV0lOX09TU3dhcENvbnN0SW50MTYoeCkg
OiBfT1NTd2FwSW50MTYoeCkpCgoKI2RlZmluZSBfX0RBUldJTl9PU1N3YXBJbnQzMih4KSAoX19i
dWlsdGluX2NvbnN0YW50X3AoeCkgPyBfX0RBUldJTl9PU1N3YXBDb25zdEludDMyKHgpIDogX09T
U3dhcEludDMyKHgpKQoKCiNkZWZpbmUgX19EQVJXSU5fT1NTd2FwSW50NjQoeCkgKF9fYnVpbHRp
bl9jb25zdGFudF9wKHgpID8gX19EQVJXSU5fT1NTd2FwQ29uc3RJbnQ2NCh4KSA6IF9PU1N3YXBJ
bnQ2NCh4KSkKIyAxMjUgIi91c3IvaW5jbHVkZS9zeXMvX2VuZGlhbi5oIiAyIDMgNAoKI2RlZmlu
ZSBudG9ocyh4KSBfX0RBUldJTl9PU1N3YXBJbnQxNih4KQojZGVmaW5lIGh0b25zKHgpIF9fREFS
V0lOX09TU3dhcEludDE2KHgpCgojZGVmaW5lIG50b2hsKHgpIF9fREFSV0lOX09TU3dhcEludDMy
KHgpCiNkZWZpbmUgaHRvbmwoeCkgX19EQVJXSU5fT1NTd2FwSW50MzIoeCkKCgojZGVmaW5lIE5U
T0hMKHgpICh4KSA9IG50b2hsKChfX3VpbnQzMl90KXgpCiNkZWZpbmUgTlRPSFMoeCkgKHgpID0g
bnRvaHMoKF9fdWludDE2X3QpeCkKI2RlZmluZSBIVE9OTCh4KSAoeCkgPSBodG9ubCgoX191aW50
MzJfdCl4KQojZGVmaW5lIEhUT05TKHgpICh4KSA9IGh0b25zKChfX3VpbnQxNl90KXgpCiMgMTAw
ICIvdXNyL2luY2x1ZGUvaTM4Ni9lbmRpYW4uaCIgMiAzIDQKIyAzOCAiL3Vzci9pbmNsdWRlL21h
Y2hpbmUvZW5kaWFuLmgiIDIgMyA0CiMgMTk0ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMiAz
IDQKCgoKCgoKCnVuaW9uIHdhaXQgewogaW50IHdfc3RhdHVzOwoKCgogc3RydWN0IHsKCiAgdW5z
aWduZWQgaW50IHdfVGVybXNpZzo3LAogICAgd19Db3JlZHVtcDoxLAogICAgd19SZXRjb2RlOjgs
CiAgICB3X0ZpbGxlcjoxNjsKCgoKCgoKCiB9IHdfVDsKCgoKCgogc3RydWN0IHsKCiAgdW5zaWdu
ZWQgaW50IHdfU3RvcHZhbDo4LAogICAgd19TdG9wc2lnOjgsCiAgICB3X0ZpbGxlcjoxNjsKCgoK
CgoKIH0gd19TOwp9OwojZGVmaW5lIHdfdGVybXNpZyB3X1Qud19UZXJtc2lnCiNkZWZpbmUgd19j
b3JlZHVtcCB3X1Qud19Db3JlZHVtcAojZGVmaW5lIHdfcmV0Y29kZSB3X1Qud19SZXRjb2RlCiNk
ZWZpbmUgd19zdG9wdmFsIHdfUy53X1N0b3B2YWwKI2RlZmluZSB3X3N0b3BzaWcgd19TLndfU3Rv
cHNpZwojIDI1NCAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMgNApleHRlcm4gIkMiIHsKcGlk
X3Qgd2FpdChpbnQgKikgX19hc20oIl8iICJ3YWl0IiApOwpwaWRfdCB3YWl0cGlkKHBpZF90LCBp
bnQgKiwgaW50KSBfX2FzbSgiXyIgIndhaXRwaWQiICk7CgppbnQgd2FpdGlkKGlkdHlwZV90LCBp
ZF90LCBzaWdpbmZvX3QgKiwgaW50KSBfX2FzbSgiXyIgIndhaXRpZCIgKTsKCgpwaWRfdCB3YWl0
MyhpbnQgKiwgaW50LCBzdHJ1Y3QgcnVzYWdlICopOwpwaWRfdCB3YWl0NChwaWRfdCwgaW50ICos
IGludCwgc3RydWN0IHJ1c2FnZSAqKTsKCn0KIyA2NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAy
IDMgNAoKIyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMyA0CiMgMjUgIi91c3IvaW5jbHVk
ZS9hbGxvY2EuaCIgMyA0CiNkZWZpbmUgX0FMTE9DQV9IXyAKIyAzNSAiL3Vzci9pbmNsdWRlL2Fs
bG9jYS5oIiAzIDQKZXh0ZXJuICJDIiB7CnZvaWQgKmFsbG9jYShzaXplX3QpOwp9CgoKCiN1bmRl
ZiBhbGxvY2EKI3VuZGVmIF9fYWxsb2NhCiNkZWZpbmUgYWxsb2NhKHNpemUpIF9fYWxsb2NhKHNp
emUpCiNkZWZpbmUgX19hbGxvY2Eoc2l6ZSkgX19idWlsdGluX2FsbG9jYShzaXplKQojIDY4ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CiMgODAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MyA0CiNkZWZpbmUgX0NUX1JVTkVfVCAKdHlwZWRlZiBfX2Rhcndpbl9jdF9ydW5lX3QgY3RfcnVu
ZV90OwoKCgojZGVmaW5lIF9SVU5FX1QgCnR5cGVkZWYgX19kYXJ3aW5fcnVuZV90IHJ1bmVfdDsK
IyA5NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewogaW50IHF1
b3Q7CiBpbnQgcmVtOwp9IGRpdl90OwoKdHlwZWRlZiBzdHJ1Y3QgewogbG9uZyBxdW90OwogbG9u
ZyByZW07Cn0gbGRpdl90OwoKCnR5cGVkZWYgc3RydWN0IHsKIGxvbmcgbG9uZyBxdW90OwogbG9u
ZyBsb25nIHJlbTsKfSBsbGRpdl90OwoKCgoKCgojZGVmaW5lIEVYSVRfRkFJTFVSRSAxCiNkZWZp
bmUgRVhJVF9TVUNDRVNTIDAKCiNkZWZpbmUgUkFORF9NQVggMHg3ZmZmZmZmZgojIDEzNCAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBfX21iX2N1cl9tYXg7CiNkZWZpbmUg
TUJfQ1VSX01BWCBfX21iX2N1cl9tYXgKIyAxNDQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0
CmV4dGVybiAiQyIgewp2b2lkIGFib3J0KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5f
XykpOwppbnQgYWJzKGludCkgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSk7CmludCBhdGV4aXQo
dm9pZCAoKikodm9pZCkpOwpkb3VibGUgYXRvZihjb25zdCBjaGFyICopOwppbnQgYXRvaShjb25z
dCBjaGFyICopOwpsb25nIGF0b2woY29uc3QgY2hhciAqKTsKCmxvbmcgbG9uZwogIGF0b2xsKGNv
bnN0IGNoYXIgKik7Cgp2b2lkICpic2VhcmNoKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBz
aXplX3QsCiAgICAgc2l6ZV90LCBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7
CnZvaWQgKmNhbGxvYyhzaXplX3QsIHNpemVfdCk7CmRpdl90IGRpdihpbnQsIGludCkgX19hdHRy
aWJ1dGVfXygoX19jb25zdF9fKSk7CnZvaWQgZXhpdChpbnQpIF9fYXR0cmlidXRlX18oKF9fbm9y
ZXR1cm5fXykpOwp2b2lkIGZyZWUodm9pZCAqKTsKY2hhciAqZ2V0ZW52KGNvbnN0IGNoYXIgKik7
CmxvbmcgbGFicyhsb25nKSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKTsKbGRpdl90IGxkaXYo
bG9uZywgbG9uZykgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSk7Cgpsb25nIGxvbmcKICBsbGFi
cyhsb25nIGxvbmcpOwpsbGRpdl90IGxsZGl2KGxvbmcgbG9uZywgbG9uZyBsb25nKTsKCnZvaWQg
Km1hbGxvYyhzaXplX3QpOwppbnQgbWJsZW4oY29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3Qg
bWJzdG93Y3Mod2NoYXJfdCAqICwgY29uc3QgY2hhciAqICwgc2l6ZV90KTsKaW50IG1idG93Yyh3
Y2hhcl90ICogLCBjb25zdCBjaGFyICogLCBzaXplX3QpOwppbnQgcG9zaXhfbWVtYWxpZ24odm9p
ZCAqKiwgc2l6ZV90LCBzaXplX3QpOwp2b2lkIHFzb3J0KHZvaWQgKiwgc2l6ZV90LCBzaXplX3Qs
CiAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwppbnQgcmFuZCh2b2lk
KTsKdm9pZCAqcmVhbGxvYyh2b2lkICosIHNpemVfdCk7CnZvaWQgc3JhbmQodW5zaWduZWQpOwpk
b3VibGUgc3RydG9kKGNvbnN0IGNoYXIgKiwgY2hhciAqKikgX19hc20oIl8iICJzdHJ0b2QiICk7
CmZsb2F0IHN0cnRvZihjb25zdCBjaGFyICosIGNoYXIgKiopIF9fYXNtKCJfIiAic3RydG9mIiAp
Owpsb25nIHN0cnRvbChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CmxvbmcgZG91YmxlCiAg
c3RydG9sZChjb25zdCBjaGFyICosIGNoYXIgKiopIDsKCmxvbmcgbG9uZwogIHN0cnRvbGwoY29u
c3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwoKdW5zaWduZWQgbG9uZwogIHN0cnRvdWwoY29uc3Qg
Y2hhciAqLCBjaGFyICoqLCBpbnQpOwoKdW5zaWduZWQgbG9uZyBsb25nCiAgc3RydG91bGwoY29u
c3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwoKaW50IHN5c3RlbShjb25zdCBjaGFyICopIF9fYXNt
KCJfIiAic3lzdGVtIiApOwpzaXplX3Qgd2NzdG9tYnMoY2hhciAqICwgY29uc3Qgd2NoYXJfdCAq
ICwgc2l6ZV90KTsKaW50IHdjdG9tYihjaGFyICosIHdjaGFyX3QpOwoKCnZvaWQgX0V4aXQoaW50
KSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKbG9uZyBhNjRsKGNvbnN0IGNoYXIgKik7
CmRvdWJsZSBkcmFuZDQ4KHZvaWQpOwpjaGFyICplY3Z0KGRvdWJsZSwgaW50LCBpbnQgKiwgaW50
ICopOwpkb3VibGUgZXJhbmQ0OCh1bnNpZ25lZCBzaG9ydFszXSk7CmNoYXIgKmZjdnQoZG91Ymxl
LCBpbnQsIGludCAqLCBpbnQgKik7CmNoYXIgKmdjdnQoZG91YmxlLCBpbnQsIGNoYXIgKik7Cmlu
dCBnZXRzdWJvcHQoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiopOwppbnQgZ3JhbnRw
dChpbnQpOwoKY2hhciAqaW5pdHN0YXRlKHVuc2lnbmVkLCBjaGFyICosIHNpemVfdCk7CgoKCmxv
bmcganJhbmQ0OCh1bnNpZ25lZCBzaG9ydFszXSk7CmNoYXIgKmw2NGEobG9uZyk7CnZvaWQgbGNv
bmc0OCh1bnNpZ25lZCBzaG9ydFs3XSk7CmxvbmcgbHJhbmQ0OCh2b2lkKTsKY2hhciAqbWt0ZW1w
KGNoYXIgKik7CmludCBta3N0ZW1wKGNoYXIgKik7CmxvbmcgbXJhbmQ0OCh2b2lkKTsKbG9uZyBu
cmFuZDQ4KHVuc2lnbmVkIHNob3J0WzNdKTsKaW50IHBvc2l4X29wZW5wdChpbnQpOwpjaGFyICpw
dHNuYW1lKGludCk7CmludCBwdXRlbnYoY2hhciAqKSBfX2FzbSgiXyIgInB1dGVudiIgKTsKbG9u
ZyByYW5kb20odm9pZCk7CmludCByYW5kX3IodW5zaWduZWQgKik7CgpjaGFyICpyZWFscGF0aChj
b25zdCBjaGFyICogLCBjaGFyICogKSBfX2FzbSgiXyIgInJlYWxwYXRoIiAiJERBUldJTl9FWFRT
TiIpOwoKCgp1bnNpZ25lZCBzaG9ydAogKnNlZWQ0OCh1bnNpZ25lZCBzaG9ydFszXSk7CmludCBz
ZXRlbnYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCkgX19hc20oIl8iICJzZXRlbnYi
ICk7Cgp2b2lkIHNldGtleShjb25zdCBjaGFyICopIF9fYXNtKCJfIiAic2V0a2V5IiApOwoKCgpj
aGFyICpzZXRzdGF0ZShjb25zdCBjaGFyICopOwp2b2lkIHNyYW5kNDgobG9uZyk7Cgp2b2lkIHNy
YW5kb20odW5zaWduZWQpOwoKCgppbnQgdW5sb2NrcHQoaW50KTsKCmludCB1bnNldGVudihjb25z
dCBjaGFyICopIF9fYXNtKCJfIiAidW5zZXRlbnYiICk7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L21hY2hpbmUvdHlwZXMuaCIgMSAzIDQKIyAzMiAiL3Vzci9pbmNsdWRlL21hY2hpbmUvdHlwZXMu
aCIgMyA0CiNkZWZpbmUgX0JTRF9NQUNISU5FX1RZUEVTX0hfIAoKCgoKIyAxICIvdXNyL2luY2x1
ZGUvaTM4Ni90eXBlcy5oIiAxIDMgNAojIDY3ICIvdXNyL2luY2x1ZGUvaTM4Ni90eXBlcy5oIiAz
IDQKI2RlZmluZSBfTUFDSFRZUEVTX0hfIAoKCiMgMSAiL3Vzci9pbmNsdWRlL2kzODYvX3R5cGVz
LmgiIDEgMyA0CiMgNzEgIi91c3IvaW5jbHVkZS9pMzg2L3R5cGVzLmgiIDIgMyA0CiMgODAgIi91
c3IvaW5jbHVkZS9pMzg2L3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9pbnQ4
X3Q7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfaW50MTZfdDsKCgoKCnR5cGVkZWYgdW5z
aWduZWQgaW50IHVfaW50MzJfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVfaW50
NjRfdDsKCgp0eXBlZGVmIGludDY0X3QgcmVnaXN0ZXJfdDsKIyAxMTQgIi91c3IvaW5jbHVkZS9p
Mzg2L3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVfaW50NjRfdCB1c2VyX2FkZHJfdDsKdHlwZWRlZiB1
X2ludDY0X3QgdXNlcl9zaXplX3Q7CnR5cGVkZWYgaW50NjRfdCB1c2VyX3NzaXplX3Q7CnR5cGVk
ZWYgaW50NjRfdCB1c2VyX2xvbmdfdDsKdHlwZWRlZiB1X2ludDY0X3QgdXNlcl91bG9uZ190Owp0
eXBlZGVmIGludDY0X3QgdXNlcl90aW1lX3Q7CnR5cGVkZWYgaW50NjRfdCB1c2VyX29mZl90Owoj
ZGVmaW5lIFVTRVJfQUREUl9OVUxMICgodXNlcl9hZGRyX3QpIDApCiNkZWZpbmUgQ0FTVF9VU0VS
X0FERFJfVChhX3B0cikgKCh1c2VyX2FkZHJfdCkoKHVpbnRwdHJfdCkoYV9wdHIpKSkKCgoKCgp0
eXBlZGVmIHVfaW50NjRfdCBzeXNjYWxsX2FyZ190OwoKCiNkZWZpbmUgX19vZmZzZXRvZih0eXBl
LGZpZWxkKSAoKHNpemVfdCkoJigodHlwZSAqKTApLT5maWVsZCkpCiMgMzggIi91c3IvaW5jbHVk
ZS9tYWNoaW5lL3R5cGVzLmgiIDIgMyA0CiMgMjU2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIg
MyA0CgoKdHlwZWRlZiBfX2Rhcndpbl9kZXZfdCBkZXZfdDsKI2RlZmluZSBfREVWX1QgCgoKCnR5
cGVkZWYgX19kYXJ3aW5fbW9kZV90IG1vZGVfdDsKI2RlZmluZSBfTU9ERV9UIAoKCnVfaW50MzJf
dAogIGFyYzRyYW5kb20odm9pZCk7CnZvaWQgYXJjNHJhbmRvbV9hZGRyYW5kb20odW5zaWduZWQg
Y2hhciAqZGF0LCBpbnQgZGF0bGVuKTsKdm9pZCBhcmM0cmFuZG9tX3N0aXIodm9pZCk7CgppbnQg
YXRleGl0X2Iodm9pZCAoXikodm9pZCkpOwp2b2lkICpic2VhcmNoX2IoY29uc3Qgdm9pZCAqLCBj
b25zdCB2b2lkICosIHNpemVfdCwKICAgICBzaXplX3QsIGludCAoXikoY29uc3Qgdm9pZCAqLCBj
b25zdCB2b2lkICopKTsKCgoKY2hhciAqY2dldGNhcChjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50
KTsKaW50IGNnZXRjbG9zZSh2b2lkKTsKaW50IGNnZXRlbnQoY2hhciAqKiwgY2hhciAqKiwgY29u
c3QgY2hhciAqKTsKaW50IGNnZXRmaXJzdChjaGFyICoqLCBjaGFyICoqKTsKaW50IGNnZXRtYXRj
aChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBjZ2V0bmV4dChjaGFyICoqLCBjaGFy
ICoqKTsKaW50IGNnZXRudW0oY2hhciAqLCBjb25zdCBjaGFyICosIGxvbmcgKik7CmludCBjZ2V0
c2V0KGNvbnN0IGNoYXIgKik7CmludCBjZ2V0c3RyKGNoYXIgKiwgY29uc3QgY2hhciAqLCBjaGFy
ICoqKTsKaW50IGNnZXR1c3RyKGNoYXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICoqKTsKCmludCBk
YWVtb24oaW50LCBpbnQpIF9fYXNtKCJfIiAiZGFlbW9uIiAiJDEwNTAiKSBfX2F0dHJpYnV0ZV9f
KChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpjaGFyICpkZXZuYW1lKGRldl90
LCBtb2RlX3QpOwpjaGFyICpkZXZuYW1lX3IoZGV2X3QsIG1vZGVfdCwgY2hhciAqYnVmLCBpbnQg
bGVuKTsKY2hhciAqZ2V0YnNpemUoaW50ICosIGxvbmcgKik7CmludCBnZXRsb2FkYXZnKGRvdWJs
ZSBbXSwgaW50KTsKY29uc3QgY2hhcgogKmdldHByb2duYW1lKHZvaWQpOwoKaW50IGhlYXBzb3J0
KHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsCiAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0
IHZvaWQgKikpOwoKaW50IGhlYXBzb3J0X2Iodm9pZCAqLCBzaXplX3QsIHNpemVfdCwKICAgICBp
bnQgKF4pKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CgppbnQgbWVyZ2Vzb3J0KHZvaWQg
Kiwgc2l6ZV90LCBzaXplX3QsCiAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQg
KikpOwoKaW50IG1lcmdlc29ydF9iKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsCiAgICAgaW50IChe
KShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKdm9pZCBwc29ydCh2b2lkICosIHNpemVf
dCwgc2l6ZV90LAogICAgIGludCAoKikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKCnZv
aWQgcHNvcnRfYih2b2lkICosIHNpemVfdCwgc2l6ZV90LAogICAgIGludCAoXikoY29uc3Qgdm9p
ZCAqLCBjb25zdCB2b2lkICopKTsKCnZvaWQgcHNvcnRfcih2b2lkICosIHNpemVfdCwgc2l6ZV90
LCB2b2lkICosCiAgICAgaW50ICgqKSh2b2lkICosIGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAq
KSk7Cgp2b2lkIHFzb3J0X2Iodm9pZCAqLCBzaXplX3QsIHNpemVfdCwKICAgICBpbnQgKF4pKGNv
bnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7Cgp2b2lkIHFzb3J0X3Iodm9pZCAqLCBzaXplX3Qs
IHNpemVfdCwgdm9pZCAqLAogICAgIGludCAoKikodm9pZCAqLCBjb25zdCB2b2lkICosIGNvbnN0
IHZvaWQgKikpOwppbnQgcmFkaXhzb3J0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiosIGludCwgY29u
c3QgdW5zaWduZWQgY2hhciAqLAogICAgIHVuc2lnbmVkKTsKdm9pZCBzZXRwcm9nbmFtZShjb25z
dCBjaGFyICopOwppbnQgc3JhZGl4c29ydChjb25zdCB1bnNpZ25lZCBjaGFyICoqLCBpbnQsIGNv
bnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICB1bnNpZ25lZCk7CnZvaWQgc3JhbmRkZXYodm9pZCk7
CnZvaWQgc3JhbmRvbWRldih2b2lkKTsKdm9pZCAqcmVhbGxvY2Yodm9pZCAqLCBzaXplX3QpOwoK
bG9uZyBsb25nCiAgc3RydG9xKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKdW5zaWduZWQg
bG9uZyBsb25nCiAgc3RydG91cShjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CgpleHRlcm4g
Y2hhciAqc3Vib3B0YXJnOwp2b2lkICp2YWxsb2Moc2l6ZV90KTsKCgoKCgoKfQojIDI3ICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaCIgMgojIDEgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvbmV3IiAxIDMKIyA0MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9u
ZXciIDMKI2RlZmluZSBfTkVXIAoKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2NzdGRkZWYi
IDEgMwojIDQ2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2NzdGRkZWYiIDMKI2RlZmluZSBfR0xJ
QkNYWF9DU1REREVGIDEKCiAgICAgICAKIyA0OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jc3Rk
ZGVmIiAzCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94
ODZfNjQvYml0cy9jKytjb25maWcuaCIgMSAzCiMgMzggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
aTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9jKytjb25maWcuaCIgMwojZGVmaW5lIF9D
WFhDT05GSUcgMQoKCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndp
bjEwL3g4Nl82NC9iaXRzL29zX2RlZmluZXMuaCIgMSAzCiMgMzIgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9vc19kZWZpbmVzLmgiIDMKI2Rl
ZmluZSBfR0xJQkNYWF9PU19ERUZJTkVTIDEKCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9HVEhSRUFE
X1VTRV9XRUFLIDAKCgoKCgojZGVmaW5lIF9HTElCQ1hYX1dFQUtfREVGSU5JVElPTiBfX2F0dHJp
YnV0ZV9fICgod2VhaykpCgoKI2RlZmluZSBfR0xJQkNYWF9WSVNJQklMSVRZX0RFRkFVTFQgCiMg
NTkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0
cy9vc19kZWZpbmVzLmgiIDMKI2RlZmluZSBfRFRSQUNFX0NYQV9SVU5USU1FX0ggCgojIDEgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMSAzIDQKIyA2OSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
IDQKI2RlZmluZSBfVU5JU1REX0hfIAoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCIg
MSAzIDQKIyA2NSAiL3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCIgMyA0CiNkZWZpbmUgX1NZU19V
TklTVERfSF8gCiMgNzkgIi91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDMgNAojZGVmaW5lIF9Q
T1NJWF9WRVJTSU9OIDIwMDExMkwKI2RlZmluZSBfUE9TSVgyX1ZFUlNJT04gMjAwMTEyTAoKCgoK
I2RlZmluZSBfUE9TSVhfVkRJU0FCTEUgKCh1bnNpZ25lZCBjaGFyKSdcMzc3JykKCgojZGVmaW5l
IF9QT1NJWF9USFJFQURfS0VZU19NQVggMTI4CgoKI2RlZmluZSBGX09LIDAKI2RlZmluZSBYX09L
ICgxPDwwKQojZGVmaW5lIFdfT0sgKDE8PDEpCiNkZWZpbmUgUl9PSyAoMTw8MikKCgoKCgoKCiNk
ZWZpbmUgX1JFQURfT0sgKDE8PDkpCiNkZWZpbmUgX1dSSVRFX09LICgxPDwxMCkKI2RlZmluZSBf
RVhFQ1VURV9PSyAoMTw8MTEpCiNkZWZpbmUgX0RFTEVURV9PSyAoMTw8MTIpCiNkZWZpbmUgX0FQ
UEVORF9PSyAoMTw8MTMpCiNkZWZpbmUgX1JNRklMRV9PSyAoMTw8MTQpCiNkZWZpbmUgX1JBVFRS
X09LICgxPDwxNSkKI2RlZmluZSBfV0FUVFJfT0sgKDE8PDE2KQojZGVmaW5lIF9SRVhUX09LICgx
PDwxNykKI2RlZmluZSBfV0VYVF9PSyAoMTw8MTgpCiNkZWZpbmUgX1JQRVJNX09LICgxPDwxOSkK
I2RlZmluZSBfV1BFUk1fT0sgKDE8PDIwKQojZGVmaW5lIF9DSE9XTl9PSyAoMTw8MjEpCgojZGVm
aW5lIF9BQ0NFU1NfRVhURU5ERURfTUFTSyAoX1JFQURfT0sgfCBfV1JJVEVfT0sgfCBfRVhFQ1VU
RV9PSyB8IF9ERUxFVEVfT0sgfCBfQVBQRU5EX09LIHwgX1JNRklMRV9PSyB8IF9SRVhUX09LIHwg
X1dFWFRfT0sgfCBfUkFUVFJfT0sgfCBfV0FUVFJfT0sgfCBfUlBFUk1fT0sgfCBfV1BFUk1fT0sg
fCBfQ0hPV05fT0spCiMgMTI1ICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAzIDQKI2RlZmlu
ZSBTRUVLX1NFVCAwCiNkZWZpbmUgU0VFS19DVVIgMQojZGVmaW5lIFNFRUtfRU5EIDIKCgoKCiNk
ZWZpbmUgTF9TRVQgU0VFS19TRVQKI2RlZmluZSBMX0lOQ1IgU0VFS19DVVIKI2RlZmluZSBMX1hU
TkQgU0VFS19FTkQKCgoKc3RydWN0IGFjY2Vzc3hfZGVzY3JpcHRvciB7CiB1bnNpZ25lZCBpbnQg
YWRfbmFtZV9vZmZzZXQ7CiBpbnQgYWRfZmxhZ3M7CiBpbnQgYWRfcGFkWzJdOwp9OwojZGVmaW5l
IEFDQ0VTU1hfTUFYX0RFU0NSSVBUT1JTIDEwMAojZGVmaW5lIEFDQ0VTU1hfTUFYX1RBQkxFU0la
RSAoMTYgKiAxMDI0KQoKCgojZGVmaW5lIF9QQ19MSU5LX01BWCAxCiNkZWZpbmUgX1BDX01BWF9D
QU5PTiAyCiNkZWZpbmUgX1BDX01BWF9JTlBVVCAzCiNkZWZpbmUgX1BDX05BTUVfTUFYIDQKI2Rl
ZmluZSBfUENfUEFUSF9NQVggNQojZGVmaW5lIF9QQ19QSVBFX0JVRiA2CiNkZWZpbmUgX1BDX0NI
T1dOX1JFU1RSSUNURUQgNwojZGVmaW5lIF9QQ19OT19UUlVOQyA4CiNkZWZpbmUgX1BDX1ZESVNB
QkxFIDkKCgojZGVmaW5lIF9QQ19OQU1FX0NIQVJTX01BWCAxMAojZGVmaW5lIF9QQ19DQVNFX1NF
TlNJVElWRSAxMQojZGVmaW5lIF9QQ19DQVNFX1BSRVNFUlZJTkcgMTIKI2RlZmluZSBfUENfRVhU
RU5ERURfU0VDVVJJVFlfTlAgMTMKI2RlZmluZSBfUENfQVVUSF9PUEFRVUVfTlAgMTQKCgojZGVm
aW5lIF9QQ18yX1NZTUxJTktTIDE1CiNkZWZpbmUgX1BDX0FMTE9DX1NJWkVfTUlOIDE2CiNkZWZp
bmUgX1BDX0FTWU5DX0lPIDE3CiNkZWZpbmUgX1BDX0ZJTEVTSVpFQklUUyAxOAojZGVmaW5lIF9Q
Q19QUklPX0lPIDE5CiNkZWZpbmUgX1BDX1JFQ19JTkNSX1hGRVJfU0laRSAyMAojZGVmaW5lIF9Q
Q19SRUNfTUFYX1hGRVJfU0laRSAyMQojZGVmaW5lIF9QQ19SRUNfTUlOX1hGRVJfU0laRSAyMgoj
ZGVmaW5lIF9QQ19SRUNfWEZFUl9BTElHTiAyMwojZGVmaW5lIF9QQ19TWU1MSU5LX01BWCAyNAoj
ZGVmaW5lIF9QQ19TWU5DX0lPIDI1CgoKI2RlZmluZSBfQ1NfUEFUSCAxCiMgNzMgIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMiAzIDQKIyA4MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKI2Rl
ZmluZSBfR0lEX1QgCnR5cGVkZWYgX19kYXJ3aW5fZ2lkX3QgZ2lkX3Q7CiMgOTkgIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMyA0CiNkZWZpbmUgX09GRl9UIAp0eXBlZGVmIF9fZGFyd2luX29mZl90
IG9mZl90OwojIDExNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKI2RlZmluZSBfU1NJWkVf
VCAKdHlwZWRlZiBfX2Rhcndpbl9zc2l6ZV90IHNzaXplX3Q7CiMgMTI2ICIvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDMgNAojZGVmaW5lIF9VU0VDT05EU19UIAp0eXBlZGVmIF9fZGFyd2luX3VzZWNv
bmRzX3QgdXNlY29uZHNfdDsKCgoKCiNkZWZpbmUgX1VVSURfVCAKdHlwZWRlZiBfX2Rhcndpbl91
dWlkX3QgdXVpZF90OwoKCgojZGVmaW5lIFNURElOX0ZJTEVOTyAwCiNkZWZpbmUgU1RET1VUX0ZJ
TEVOTyAxCiNkZWZpbmUgU1RERVJSX0ZJTEVOTyAyCgoKCgoKCgojZGVmaW5lIF9YT1BFTl9WRVJT
SU9OIDYwMAojZGVmaW5lIF9YT1BFTl9YQ1VfVkVSU0lPTiA0CgoKCiNkZWZpbmUgX1BPU0lYX0FE
VklTT1JZX0lORk8gKC0xKQojZGVmaW5lIF9QT1NJWF9BU1lOQ0hST05PVVNfSU8gKC0xKQojZGVm
aW5lIF9QT1NJWF9CQVJSSUVSUyAoLTEpCiNkZWZpbmUgX1BPU0lYX0NIT1dOX1JFU1RSSUNURUQg
MjAwMTEyTAojZGVmaW5lIF9QT1NJWF9DTE9DS19TRUxFQ1RJT04gKC0xKQojZGVmaW5lIF9QT1NJ
WF9DUFVUSU1FICgtMSkKI2RlZmluZSBfUE9TSVhfRlNZTkMgMjAwMTEyTAojZGVmaW5lIF9QT1NJ
WF9JUFY2IDIwMDExMkwKI2RlZmluZSBfUE9TSVhfSk9CX0NPTlRST0wgMjAwMTEyTAojZGVmaW5l
IF9QT1NJWF9NQVBQRURfRklMRVMgMjAwMTEyTAojZGVmaW5lIF9QT1NJWF9NRU1MT0NLICgtMSkK
I2RlZmluZSBfUE9TSVhfTUVNTE9DS19SQU5HRSAoLTEpCiNkZWZpbmUgX1BPU0lYX01FTU9SWV9Q
Uk9URUNUSU9OIDIwMDExMkwKI2RlZmluZSBfUE9TSVhfTUVTU0FHRV9QQVNTSU5HICgtMSkKI2Rl
ZmluZSBfUE9TSVhfTU9OT1RPTklDX0NMT0NLICgtMSkKI2RlZmluZSBfUE9TSVhfTk9fVFJVTkMg
MjAwMTEyTAojZGVmaW5lIF9QT1NJWF9QUklPUklUSVpFRF9JTyAoLTEpCiNkZWZpbmUgX1BPU0lY
X1BSSU9SSVRZX1NDSEVEVUxJTkcgKC0xKQojZGVmaW5lIF9QT1NJWF9SQVdfU09DS0VUUyAoLTEp
CiNkZWZpbmUgX1BPU0lYX1JFQURFUl9XUklURVJfTE9DS1MgMjAwMTEyTAojZGVmaW5lIF9QT1NJ
WF9SRUFMVElNRV9TSUdOQUxTICgtMSkKI2RlZmluZSBfUE9TSVhfUkVHRVhQIDIwMDExMkwKI2Rl
ZmluZSBfUE9TSVhfU0FWRURfSURTIDIwMDExMkwKI2RlZmluZSBfUE9TSVhfU0VNQVBIT1JFUyAo
LTEpCiNkZWZpbmUgX1BPU0lYX1NIQVJFRF9NRU1PUllfT0JKRUNUUyAoLTEpCiNkZWZpbmUgX1BP
U0lYX1NIRUxMIDIwMDExMkwKI2RlZmluZSBfUE9TSVhfU1BBV04gKC0xKQojZGVmaW5lIF9QT1NJ
WF9TUElOX0xPQ0tTICgtMSkKI2RlZmluZSBfUE9TSVhfU1BPUkFESUNfU0VSVkVSICgtMSkKI2Rl
ZmluZSBfUE9TSVhfU1lOQ0hST05JWkVEX0lPICgtMSkKI2RlZmluZSBfUE9TSVhfVEhSRUFEX0FU
VFJfU1RBQ0tBRERSIDIwMDExMkwKI2RlZmluZSBfUE9TSVhfVEhSRUFEX0FUVFJfU1RBQ0tTSVpF
IDIwMDExMkwKI2RlZmluZSBfUE9TSVhfVEhSRUFEX0NQVVRJTUUgKC0xKQojZGVmaW5lIF9QT1NJ
WF9USFJFQURfUFJJT19JTkhFUklUICgtMSkKI2RlZmluZSBfUE9TSVhfVEhSRUFEX1BSSU9fUFJP
VEVDVCAoLTEpCiNkZWZpbmUgX1BPU0lYX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HICgtMSkK
I2RlZmluZSBfUE9TSVhfVEhSRUFEX1BST0NFU1NfU0hBUkVEIDIwMDExMkwKI2RlZmluZSBfUE9T
SVhfVEhSRUFEX1NBRkVfRlVOQ1RJT05TIDIwMDExMkwKI2RlZmluZSBfUE9TSVhfVEhSRUFEX1NQ
T1JBRElDX1NFUlZFUiAoLTEpCiNkZWZpbmUgX1BPU0lYX1RIUkVBRFMgMjAwMTEyTAojZGVmaW5l
IF9QT1NJWF9USU1FT1VUUyAoLTEpCiNkZWZpbmUgX1BPU0lYX1RJTUVSUyAoLTEpCiNkZWZpbmUg
X1BPU0lYX1RSQUNFICgtMSkKI2RlZmluZSBfUE9TSVhfVFJBQ0VfRVZFTlRfRklMVEVSICgtMSkK
I2RlZmluZSBfUE9TSVhfVFJBQ0VfSU5IRVJJVCAoLTEpCiNkZWZpbmUgX1BPU0lYX1RSQUNFX0xP
RyAoLTEpCiNkZWZpbmUgX1BPU0lYX1RZUEVEX01FTU9SWV9PQkpFQ1RTICgtMSkKCgoKCiNkZWZp
bmUgX1BPU0lYMl9DX0JJTkQgMjAwMTEyTAojZGVmaW5lIF9QT1NJWDJfQ19ERVYgMjAwMTEyTAoj
ZGVmaW5lIF9QT1NJWDJfQ0hBUl9URVJNIDIwMDExMkwKI2RlZmluZSBfUE9TSVgyX0ZPUlRfREVW
ICgtMSkKI2RlZmluZSBfUE9TSVgyX0ZPUlRfUlVOIDIwMDExMkwKI2RlZmluZSBfUE9TSVgyX0xP
Q0FMRURFRiAyMDAxMTJMCiNkZWZpbmUgX1BPU0lYMl9QQlMgKC0xKQojZGVmaW5lIF9QT1NJWDJf
UEJTX0FDQ09VTlRJTkcgKC0xKQojZGVmaW5lIF9QT1NJWDJfUEJTX0NIRUNLUE9JTlQgKC0xKQoj
ZGVmaW5lIF9QT1NJWDJfUEJTX0xPQ0FURSAoLTEpCiNkZWZpbmUgX1BPU0lYMl9QQlNfTUVTU0FH
RSAoLTEpCiNkZWZpbmUgX1BPU0lYMl9QQlNfVFJBQ0sgKC0xKQojZGVmaW5lIF9QT1NJWDJfU1df
REVWIDIwMDExMkwKI2RlZmluZSBfUE9TSVgyX1VQRSAyMDAxMTJMCgojZGVmaW5lIF9WNl9JTFAz
Ml9PRkYzMiAoLTEpCiNkZWZpbmUgX1Y2X0lMUDMyX09GRkJJRyAoMSkKI2RlZmluZSBfVjZfTFA2
NF9PRkY2NCAoLTEpCiNkZWZpbmUgX1Y2X0xQQklHX09GRkJJRyAoLTEpCgojZGVmaW5lIF9YQlM1
X0lMUDMyX09GRjMyIF9WNl9JTFAzMl9PRkYzMgojZGVmaW5lIF9YQlM1X0lMUDMyX09GRkJJRyBf
VjZfSUxQMzJfT0ZGQklHCiNkZWZpbmUgX1hCUzVfTFA2NF9PRkY2NCBfVjZfTFA2NF9PRkY2NAoj
ZGVmaW5lIF9YQlM1X0xQQklHX09GRkJJRyBfVjZfTFBCSUdfT0ZGQklHCgojZGVmaW5lIF9YT1BF
Tl9DUllQVCAoMSkKI2RlZmluZSBfWE9QRU5fRU5IX0kxOE4gKDEpCiNkZWZpbmUgX1hPUEVOX0xF
R0FDWSAoLTEpCiNkZWZpbmUgX1hPUEVOX1JFQUxUSU1FICgtMSkKI2RlZmluZSBfWE9QRU5fUkVB
TFRJTUVfVEhSRUFEUyAoLTEpCiNkZWZpbmUgX1hPUEVOX1NITSAoMSkKI2RlZmluZSBfWE9QRU5f
U1RSRUFNUyAoLTEpCiNkZWZpbmUgX1hPUEVOX1VOSVggKDEpCgoKI2RlZmluZSBGX1VMT0NLIDAK
I2RlZmluZSBGX0xPQ0sgMQojZGVmaW5lIEZfVExPQ0sgMgojZGVmaW5lIEZfVEVTVCAzCgoKI2Rl
ZmluZSBfU0NfQVJHX01BWCAxCiNkZWZpbmUgX1NDX0NISUxEX01BWCAyCiNkZWZpbmUgX1NDX0NM
S19UQ0sgMwojZGVmaW5lIF9TQ19OR1JPVVBTX01BWCA0CiNkZWZpbmUgX1NDX09QRU5fTUFYIDUK
I2RlZmluZSBfU0NfSk9CX0NPTlRST0wgNgojZGVmaW5lIF9TQ19TQVZFRF9JRFMgNwojZGVmaW5l
IF9TQ19WRVJTSU9OIDgKI2RlZmluZSBfU0NfQkNfQkFTRV9NQVggOQojZGVmaW5lIF9TQ19CQ19E
SU1fTUFYIDEwCiNkZWZpbmUgX1NDX0JDX1NDQUxFX01BWCAxMQojZGVmaW5lIF9TQ19CQ19TVFJJ
TkdfTUFYIDEyCiNkZWZpbmUgX1NDX0NPTExfV0VJR0hUU19NQVggMTMKI2RlZmluZSBfU0NfRVhQ
Ul9ORVNUX01BWCAxNAojZGVmaW5lIF9TQ19MSU5FX01BWCAxNQojZGVmaW5lIF9TQ19SRV9EVVBf
TUFYIDE2CiNkZWZpbmUgX1NDXzJfVkVSU0lPTiAxNwojZGVmaW5lIF9TQ18yX0NfQklORCAxOAoj
ZGVmaW5lIF9TQ18yX0NfREVWIDE5CiNkZWZpbmUgX1NDXzJfQ0hBUl9URVJNIDIwCiNkZWZpbmUg
X1NDXzJfRk9SVF9ERVYgMjEKI2RlZmluZSBfU0NfMl9GT1JUX1JVTiAyMgojZGVmaW5lIF9TQ18y
X0xPQ0FMRURFRiAyMwojZGVmaW5lIF9TQ18yX1NXX0RFViAyNAojZGVmaW5lIF9TQ18yX1VQRSAy
NQojZGVmaW5lIF9TQ19TVFJFQU1fTUFYIDI2CiNkZWZpbmUgX1NDX1RaTkFNRV9NQVggMjcKI2Rl
ZmluZSBfU0NfQVNZTkNIUk9OT1VTX0lPIDI4CiNkZWZpbmUgX1NDX1BBR0VTSVpFIDI5CiNkZWZp
bmUgX1NDX01FTUxPQ0sgMzAKI2RlZmluZSBfU0NfTUVNTE9DS19SQU5HRSAzMQojZGVmaW5lIF9T
Q19NRU1PUllfUFJPVEVDVElPTiAzMgojZGVmaW5lIF9TQ19NRVNTQUdFX1BBU1NJTkcgMzMKI2Rl
ZmluZSBfU0NfUFJJT1JJVElaRURfSU8gMzQKI2RlZmluZSBfU0NfUFJJT1JJVFlfU0NIRURVTElO
RyAzNQojZGVmaW5lIF9TQ19SRUFMVElNRV9TSUdOQUxTIDM2CiNkZWZpbmUgX1NDX1NFTUFQSE9S
RVMgMzcKI2RlZmluZSBfU0NfRlNZTkMgMzgKI2RlZmluZSBfU0NfU0hBUkVEX01FTU9SWV9PQkpF
Q1RTIDM5CiNkZWZpbmUgX1NDX1NZTkNIUk9OSVpFRF9JTyA0MAojZGVmaW5lIF9TQ19USU1FUlMg
NDEKI2RlZmluZSBfU0NfQUlPX0xJU1RJT19NQVggNDIKI2RlZmluZSBfU0NfQUlPX01BWCA0Mwoj
ZGVmaW5lIF9TQ19BSU9fUFJJT19ERUxUQV9NQVggNDQKI2RlZmluZSBfU0NfREVMQVlUSU1FUl9N
QVggNDUKI2RlZmluZSBfU0NfTVFfT1BFTl9NQVggNDYKI2RlZmluZSBfU0NfTUFQUEVEX0ZJTEVT
IDQ3CiNkZWZpbmUgX1NDX1JUU0lHX01BWCA0OAojZGVmaW5lIF9TQ19TRU1fTlNFTVNfTUFYIDQ5
CiNkZWZpbmUgX1NDX1NFTV9WQUxVRV9NQVggNTAKI2RlZmluZSBfU0NfU0lHUVVFVUVfTUFYIDUx
CiNkZWZpbmUgX1NDX1RJTUVSX01BWCA1MgoKI2RlZmluZSBfU0NfTlBST0NFU1NPUlNfQ09ORiA1
NwojZGVmaW5lIF9TQ19OUFJPQ0VTU09SU19PTkxOIDU4CgojZGVmaW5lIF9TQ18yX1BCUyA1OQoj
ZGVmaW5lIF9TQ18yX1BCU19BQ0NPVU5USU5HIDYwCiNkZWZpbmUgX1NDXzJfUEJTX0NIRUNLUE9J
TlQgNjEKI2RlZmluZSBfU0NfMl9QQlNfTE9DQVRFIDYyCiNkZWZpbmUgX1NDXzJfUEJTX01FU1NB
R0UgNjMKI2RlZmluZSBfU0NfMl9QQlNfVFJBQ0sgNjQKI2RlZmluZSBfU0NfQURWSVNPUllfSU5G
TyA2NQojZGVmaW5lIF9TQ19CQVJSSUVSUyA2NgojZGVmaW5lIF9TQ19DTE9DS19TRUxFQ1RJT04g
NjcKI2RlZmluZSBfU0NfQ1BVVElNRSA2OAojZGVmaW5lIF9TQ19GSUxFX0xPQ0tJTkcgNjkKI2Rl
ZmluZSBfU0NfR0VUR1JfUl9TSVpFX01BWCA3MAojZGVmaW5lIF9TQ19HRVRQV19SX1NJWkVfTUFY
IDcxCiNkZWZpbmUgX1NDX0hPU1RfTkFNRV9NQVggNzIKI2RlZmluZSBfU0NfTE9HSU5fTkFNRV9N
QVggNzMKI2RlZmluZSBfU0NfTU9OT1RPTklDX0NMT0NLIDc0CiNkZWZpbmUgX1NDX01RX1BSSU9f
TUFYIDc1CiNkZWZpbmUgX1NDX1JFQURFUl9XUklURVJfTE9DS1MgNzYKI2RlZmluZSBfU0NfUkVH
RVhQIDc3CiNkZWZpbmUgX1NDX1NIRUxMIDc4CiNkZWZpbmUgX1NDX1NQQVdOIDc5CiNkZWZpbmUg
X1NDX1NQSU5fTE9DS1MgODAKI2RlZmluZSBfU0NfU1BPUkFESUNfU0VSVkVSIDgxCiNkZWZpbmUg
X1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiA4MgojZGVmaW5lIF9TQ19USFJFQURfQVRUUl9TVEFD
S1NJWkUgODMKI2RlZmluZSBfU0NfVEhSRUFEX0NQVVRJTUUgODQKI2RlZmluZSBfU0NfVEhSRUFE
X0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA4NQojZGVmaW5lIF9TQ19USFJFQURfS0VZU19NQVggODYK
I2RlZmluZSBfU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA4NwojZGVmaW5lIF9TQ19USFJFQURfUFJJ
T19QUk9URUNUIDg4CiNkZWZpbmUgX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HIDg5CiNk
ZWZpbmUgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCA5MAojZGVmaW5lIF9TQ19USFJFQURfU0FG
RV9GVU5DVElPTlMgOTEKI2RlZmluZSBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiA5MgojZGVm
aW5lIF9TQ19USFJFQURfU1RBQ0tfTUlOIDkzCiNkZWZpbmUgX1NDX1RIUkVBRF9USFJFQURTX01B
WCA5NAojZGVmaW5lIF9TQ19USU1FT1VUUyA5NQojZGVmaW5lIF9TQ19USFJFQURTIDk2CiNkZWZp
bmUgX1NDX1RSQUNFIDk3CiNkZWZpbmUgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiA5OAojZGVmaW5l
IF9TQ19UUkFDRV9JTkhFUklUIDk5CiNkZWZpbmUgX1NDX1RSQUNFX0xPRyAxMDAKI2RlZmluZSBf
U0NfVFRZX05BTUVfTUFYIDEwMQojZGVmaW5lIF9TQ19UWVBFRF9NRU1PUllfT0JKRUNUUyAxMDIK
I2RlZmluZSBfU0NfVjZfSUxQMzJfT0ZGMzIgMTAzCiNkZWZpbmUgX1NDX1Y2X0lMUDMyX09GRkJJ
RyAxMDQKI2RlZmluZSBfU0NfVjZfTFA2NF9PRkY2NCAxMDUKI2RlZmluZSBfU0NfVjZfTFBCSUdf
T0ZGQklHIDEwNgojZGVmaW5lIF9TQ19JUFY2IDExOAojZGVmaW5lIF9TQ19SQVdfU09DS0VUUyAx
MTkKI2RlZmluZSBfU0NfU1lNTE9PUF9NQVggMTIwCiNkZWZpbmUgX1NDX0FURVhJVF9NQVggMTA3
CiNkZWZpbmUgX1NDX0lPVl9NQVggNTYKI2RlZmluZSBfU0NfUEFHRV9TSVpFIF9TQ19QQUdFU0la
RQojZGVmaW5lIF9TQ19YT1BFTl9DUllQVCAxMDgKI2RlZmluZSBfU0NfWE9QRU5fRU5IX0kxOE4g
MTA5CiNkZWZpbmUgX1NDX1hPUEVOX0xFR0FDWSAxMTAKI2RlZmluZSBfU0NfWE9QRU5fUkVBTFRJ
TUUgMTExCiNkZWZpbmUgX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgMTEyCiNkZWZpbmUgX1ND
X1hPUEVOX1NITSAxMTMKI2RlZmluZSBfU0NfWE9QRU5fU1RSRUFNUyAxMTQKI2RlZmluZSBfU0Nf
WE9QRU5fVU5JWCAxMTUKI2RlZmluZSBfU0NfWE9QRU5fVkVSU0lPTiAxMTYKI2RlZmluZSBfU0Nf
WE9QRU5fWENVX1ZFUlNJT04gMTIxCiNkZWZpbmUgX1NDX1hCUzVfSUxQMzJfT0ZGMzIgMTIyCiNk
ZWZpbmUgX1NDX1hCUzVfSUxQMzJfT0ZGQklHIDEyMwojZGVmaW5lIF9TQ19YQlM1X0xQNjRfT0ZG
NjQgMTI0CiNkZWZpbmUgX1NDX1hCUzVfTFBCSUdfT0ZGQklHIDEyNQojZGVmaW5lIF9TQ19TU19S
RVBMX01BWCAxMjYKI2RlZmluZSBfU0NfVFJBQ0VfRVZFTlRfTkFNRV9NQVggMTI3CiNkZWZpbmUg
X1NDX1RSQUNFX05BTUVfTUFYIDEyOAojZGVmaW5lIF9TQ19UUkFDRV9TWVNfTUFYIDEyOQojZGVm
aW5lIF9TQ19UUkFDRV9VU0VSX0VWRU5UX01BWCAxMzAKI2RlZmluZSBfU0NfUEFTU19NQVggMTMx
CgoKCgojZGVmaW5lIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9DRkxBR1MgMgojZGVmaW5lIF9D
U19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MREZMQUdTIDMKI2RlZmluZSBfQ1NfUE9TSVhfVjZfSUxQ
MzJfT0ZGMzJfTElCUyA0CiNkZWZpbmUgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19DRkxBR1Mg
NQojZGVmaW5lIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTERGTEFHUyA2CiNkZWZpbmUgX0NT
X1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSUJTIDcKI2RlZmluZSBfQ1NfUE9TSVhfVjZfTFA2NF9P
RkY2NF9DRkxBR1MgOAojZGVmaW5lIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xERkxBR1MgOQoj
ZGVmaW5lIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xJQlMgMTAKI2RlZmluZSBfQ1NfUE9TSVhf
VjZfTFBCSUdfT0ZGQklHX0NGTEFHUyAxMQojZGVmaW5lIF9DU19QT1NJWF9WNl9MUEJJR19PRkZC
SUdfTERGTEFHUyAxMgojZGVmaW5lIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElCUyAxMwoj
ZGVmaW5lIF9DU19QT1NJWF9WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMgMTQKCgojZGVmaW5lIF9D
U19YQlM1X0lMUDMyX09GRjMyX0NGTEFHUyAyMAojZGVmaW5lIF9DU19YQlM1X0lMUDMyX09GRjMy
X0xERkxBR1MgMjEKI2RlZmluZSBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTIDIyCiNkZWZpbmUg
X0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElOVEZMQUdTIDIzCiNkZWZpbmUgX0NTX1hCUzVfSUxQMzJf
T0ZGQklHX0NGTEFHUyAyNAojZGVmaW5lIF9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTIDI1
CiNkZWZpbmUgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJQlMgMjYKI2RlZmluZSBfQ1NfWEJTNV9J
TFAzMl9PRkZCSUdfTElOVEZMQUdTIDI3CiNkZWZpbmUgX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxB
R1MgMjgKI2RlZmluZSBfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MgMjkKI2RlZmluZSBfQ1Nf
WEJTNV9MUDY0X09GRjY0X0xJQlMgMzAKI2RlZmluZSBfQ1NfWEJTNV9MUDY0X09GRjY0X0xJTlRG
TEFHUyAzMQojZGVmaW5lIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MgMzIKI2RlZmluZSBf
Q1NfWEJTNV9MUEJJR19PRkZCSUdfTERGTEFHUyAzMwojZGVmaW5lIF9DU19YQlM1X0xQQklHX09G
RkJJR19MSUJTIDM0CiNkZWZpbmUgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUyAzNQoK
I2RlZmluZSBfQ1NfREFSV0lOX1VTRVJfRElSIDY1NTM2CiNkZWZpbmUgX0NTX0RBUldJTl9VU0VS
X1RFTVBfRElSIDY1NTM3CiNkZWZpbmUgX0NTX0RBUldJTl9VU0VSX0NBQ0hFX0RJUiA2NTUzOAoK
ZXh0ZXJuICJDIiB7Cgp2b2lkIF9leGl0KGludCkgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9f
KSk7CmludCBhY2Nlc3MoY29uc3QgY2hhciAqLCBpbnQpOwp1bnNpZ25lZCBpbnQKICBhbGFybSh1
bnNpZ25lZCBpbnQpOwppbnQgY2hkaXIoY29uc3QgY2hhciAqKTsKaW50IGNob3duKGNvbnN0IGNo
YXIgKiwgdWlkX3QsIGdpZF90KTsKaW50IGNsb3NlKGludCkgX19hc20oIl8iICJjbG9zZSIgKTsK
c2l6ZV90IGNvbmZzdHIoaW50LCBjaGFyICosIHNpemVfdCkgX19hc20oIl8iICJjb25mc3RyIiAp
OwpjaGFyICpjcnlwdChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKmN0ZXJtaWQo
Y2hhciAqKTsKaW50IGR1cChpbnQpOwppbnQgZHVwMihpbnQsIGludCk7Cgp2b2lkIGVuY3J5cHQo
Y2hhciAqLCBpbnQpIF9fYXNtKCJfIiAiZW5jcnlwdCIgKTsKCgoKaW50IGV4ZWNsKGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZXhlY2xlKGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqLCAuLi4pOwppbnQgZXhlY2xwKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4p
OwppbnQgZXhlY3YoY29uc3QgY2hhciAqLCBjaGFyICogY29uc3QgKik7CmludCBleGVjdmUoY29u
c3QgY2hhciAqLCBjaGFyICogY29uc3QgKiwgY2hhciAqIGNvbnN0ICopOwppbnQgZXhlY3ZwKGNv
bnN0IGNoYXIgKiwgY2hhciAqIGNvbnN0ICopOwppbnQgZmNob3duKGludCwgdWlkX3QsIGdpZF90
KTsKaW50IGZjaGRpcihpbnQpOwpwaWRfdCBmb3JrKHZvaWQpOwpsb25nIGZwYXRoY29uZihpbnQs
IGludCk7CmludCBmc3luYyhpbnQpIF9fYXNtKCJfIiAiZnN5bmMiICk7CmludCBmdHJ1bmNhdGUo
aW50LCBvZmZfdCk7CmNoYXIgKmdldGN3ZChjaGFyICosIHNpemVfdCk7CmdpZF90IGdldGVnaWQo
dm9pZCk7CnVpZF90IGdldGV1aWQodm9pZCk7CmdpZF90IGdldGdpZCh2b2lkKTsKCgoKaW50IGdl
dGdyb3VwcyhpbnQsIGdpZF90IFtdKTsKCmxvbmcgZ2V0aG9zdGlkKHZvaWQpOwppbnQgZ2V0aG9z
dG5hbWUoY2hhciAqLCBzaXplX3QpOwpjaGFyICpnZXRsb2dpbih2b2lkKTsKaW50IGdldGxvZ2lu
X3IoY2hhciAqLCBzaXplX3QpOwppbnQgZ2V0b3B0KGludCwgY2hhciAqIGNvbnN0IFtdLCBjb25z
dCBjaGFyICopIF9fYXNtKCJfIiAiZ2V0b3B0IiApOwpwaWRfdCBnZXRwZ2lkKHBpZF90KTsKcGlk
X3QgZ2V0cGdycCh2b2lkKTsKcGlkX3QgZ2V0cGlkKHZvaWQpOwpwaWRfdCBnZXRwcGlkKHZvaWQp
OwpwaWRfdCBnZXRzaWQocGlkX3QpOwp1aWRfdCBnZXR1aWQodm9pZCk7CmNoYXIgKmdldHdkKGNo
YXIgKik7CmludCBpc2F0dHkoaW50KTsKaW50IGxjaG93bihjb25zdCBjaGFyICosIHVpZF90LCBn
aWRfdCkgX19hc20oIl8iICJsY2hvd24iICk7CmludCBsaW5rKGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqKTsKaW50IGxvY2tmKGludCwgaW50LCBvZmZfdCkgX19hc20oIl8iICJsb2NrZiIgKTsK
b2ZmX3QgbHNlZWsoaW50LCBvZmZfdCwgaW50KTsKaW50IG5pY2UoaW50KSBfX2FzbSgiXyIgIm5p
Y2UiICk7CmxvbmcgcGF0aGNvbmYoY29uc3QgY2hhciAqLCBpbnQpOwppbnQgcGF1c2Uodm9pZCkg
X19hc20oIl8iICJwYXVzZSIgKTsKaW50IHBpcGUoaW50IFsyXSk7CnNzaXplX3QgcHJlYWQoaW50
LCB2b2lkICosIHNpemVfdCwgb2ZmX3QpIF9fYXNtKCJfIiAicHJlYWQiICk7CnNzaXplX3QgcHdy
aXRlKGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIG9mZl90KSBfX2FzbSgiXyIgInB3cml0ZSIg
KTsKc3NpemVfdCByZWFkKGludCwgdm9pZCAqLCBzaXplX3QpIF9fYXNtKCJfIiAicmVhZCIgKTsK
c3NpemVfdCByZWFkbGluayhjb25zdCBjaGFyICogLCBjaGFyICogLCBzaXplX3QpOwppbnQgcm1k
aXIoY29uc3QgY2hhciAqKTsKaW50IHNldGVnaWQoZ2lkX3QpOwppbnQgc2V0ZXVpZCh1aWRfdCk7
CmludCBzZXRnaWQoZ2lkX3QpOwppbnQgc2V0cGdpZChwaWRfdCwgcGlkX3QpOwoKcGlkX3Qgc2V0
cGdycCh2b2lkKSBfX2FzbSgiXyIgInNldHBncnAiICk7CgoKCmludCBzZXRyZWdpZChnaWRfdCwg
Z2lkX3QpIF9fYXNtKCJfIiAic2V0cmVnaWQiICk7CmludCBzZXRyZXVpZCh1aWRfdCwgdWlkX3Qp
IF9fYXNtKCJfIiAic2V0cmV1aWQiICk7CnBpZF90IHNldHNpZCh2b2lkKTsKaW50IHNldHVpZCh1
aWRfdCk7CnVuc2lnbmVkIGludAogIHNsZWVwKHVuc2lnbmVkIGludCkgX19hc20oIl8iICJzbGVl
cCIgKTsKdm9pZCBzd2FiKGNvbnN0IHZvaWQgKiAsIHZvaWQgKiAsIHNzaXplX3QpOwppbnQgc3lt
bGluayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CnZvaWQgc3luYyh2b2lkKTsKbG9uZyBz
eXNjb25mKGludCk7CnBpZF90IHRjZ2V0cGdycChpbnQpOwppbnQgdGNzZXRwZ3JwKGludCwgcGlk
X3QpOwppbnQgdHJ1bmNhdGUoY29uc3QgY2hhciAqLCBvZmZfdCk7CmNoYXIgKnR0eW5hbWUoaW50
KTsKCmludCB0dHluYW1lX3IoaW50LCBjaGFyICosIHNpemVfdCkgX19hc20oIl8iICJ0dHluYW1l
X3IiICk7CgoKCnVzZWNvbmRzX3QKICB1YWxhcm0odXNlY29uZHNfdCwgdXNlY29uZHNfdCk7Cmlu
dCB1bmxpbmsoY29uc3QgY2hhciAqKTsKaW50IHVzbGVlcCh1c2Vjb25kc190KSBfX2FzbSgiXyIg
InVzbGVlcCIgKTsKcGlkX3QgdmZvcmsodm9pZCk7CnNzaXplX3Qgd3JpdGUoaW50LCBjb25zdCB2
b2lkICosIHNpemVfdCkgX19hc20oIl8iICJ3cml0ZSIgKTsKCmV4dGVybiBjaGFyICpvcHRhcmc7
CmV4dGVybiBpbnQgb3B0aW5kLCBvcHRlcnIsIG9wdG9wdDsKCgojIDEgIi91c3IvaW5jbHVkZS9z
eXMvc2VsZWN0LmgiIDEgMyA0CiMgNjQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAoj
ZGVmaW5lIF9TWVNfU0VMRUNUX0hfIAojIDc1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAz
IDQKI2RlZmluZSBfX25lZWRfZmRfc2V0IAojZGVmaW5lIF9fbmVlZF9zdHJ1Y3RfdGltZXNwZWMg
CiNkZWZpbmUgX19uZWVkX3N0cnVjdF90aW1ldmFsIAojIDEgIi91c3IvaW5jbHVkZS9zeXMvX3N0
cnVjdHMuaCIgMSAzIDQKIyA4NSAiL3Vzci9pbmNsdWRlL3N5cy9fc3RydWN0cy5oIiAzIDQKI3Vu
ZGVmIF9fbmVlZF9zdHJ1Y3RfdGltZXNwZWMKCiNkZWZpbmUgX1NUUlVDVF9USU1FU1BFQyBzdHJ1
Y3QgdGltZXNwZWMKc3RydWN0IHRpbWVzcGVjCnsKIF9fZGFyd2luX3RpbWVfdCB0dl9zZWM7CiBs
b25nIHR2X25zZWM7Cn07CgoKCgojdW5kZWYgX19uZWVkX3N0cnVjdF90aW1ldmFsCiMgMTY1ICIv
dXNyL2luY2x1ZGUvc3lzL19zdHJ1Y3RzLmgiIDMgNAojdW5kZWYgX19uZWVkX2ZkX3NldAoKI2Rl
ZmluZSBfRkRfU0VUIAojIDE3NyAiL3Vzci9pbmNsdWRlL3N5cy9fc3RydWN0cy5oIiAzIDQKI2Rl
ZmluZSBfX0RBUldJTl9GRF9TRVRTSVpFIDEwMjQKCiNkZWZpbmUgX19EQVJXSU5fTkJCWSA4CiNk
ZWZpbmUgX19EQVJXSU5fTkZEQklUUyAoc2l6ZW9mKF9faW50MzJfdCkgKiBfX0RBUldJTl9OQkJZ
KQojZGVmaW5lIF9fREFSV0lOX2hvd21hbnkoeCx5KSAoKCgoeCkgJSAoeSkpID09IDApID8gKCh4
KSAvICh5KSkgOiAoKCh4KSAvICh5KSkgKyAxKSkKCmV4dGVybiAiQyIgewp0eXBlZGVmIHN0cnVj
dCBmZF9zZXQgewogX19pbnQzMl90IGZkc19iaXRzWygoKCgxMDI0KSAlICgoc2l6ZW9mKF9faW50
MzJfdCkgKiA4KSkpID09IDApID8gKCgxMDI0KSAvICgoc2l6ZW9mKF9faW50MzJfdCkgKiA4KSkp
IDogKCgoMTAyNCkgLyAoKHNpemVvZihfX2ludDMyX3QpICogOCkpKSArIDEpKV07Cn0gZmRfc2V0
Owp9CgoKc3RhdGljIGlubGluZSBpbnQKX19kYXJ3aW5fZmRfaXNzZXQoaW50IF9uLCBjb25zdCBz
dHJ1Y3QgZmRfc2V0ICpfcCkKewogcmV0dXJuIChfcC0+ZmRzX2JpdHNbX24vKHNpemVvZihfX2lu
dDMyX3QpICogOCldICYgKDE8PChfbiAlIChzaXplb2YoX19pbnQzMl90KSAqIDgpKSkpOwp9Cgoj
ZGVmaW5lIF9fREFSV0lOX0ZEX1NFVChuLHApIGRvIHsgaW50IF9fZmQgPSAobik7ICgocCktPmZk
c19iaXRzW19fZmQvX19EQVJXSU5fTkZEQklUU10gfD0gKDE8PChfX2ZkICUgX19EQVJXSU5fTkZE
QklUUykpKTsgfSB3aGlsZSgwKQojZGVmaW5lIF9fREFSV0lOX0ZEX0NMUihuLHApIGRvIHsgaW50
IF9fZmQgPSAobik7ICgocCktPmZkc19iaXRzW19fZmQvX19EQVJXSU5fTkZEQklUU10gJj0gfigx
PDwoX19mZCAlIF9fREFSV0lOX05GREJJVFMpKSk7IH0gd2hpbGUoMCkKI2RlZmluZSBfX0RBUldJ
Tl9GRF9JU1NFVChuLHApIF9fZGFyd2luX2ZkX2lzc2V0KChuKSwgKHApKQoKCgoKCgojZGVmaW5l
IF9fREFSV0lOX0ZEX1pFUk8ocCkgX19idWlsdGluX2J6ZXJvKHAsIHNpemVvZigqKHApKSkKCgoK
CiNkZWZpbmUgX19EQVJXSU5fRkRfQ09QWShmLHQpIGJjb3B5KGYsIHQsIHNpemVvZigqKGYpKSkK
IyA3OSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQKCgoKCgoKCiNkZWZpbmUgX1RJ
TUVfVCAKdHlwZWRlZiBfX2Rhcndpbl90aW1lX3QgdGltZV90OwoKCgojZGVmaW5lIF9TVVNFQ09O
RFNfVCAKdHlwZWRlZiBfX2Rhcndpbl9zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKIyAxMTMgIi91
c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAojZGVmaW5lIEZEX1NFVFNJWkUgX19EQVJXSU5f
RkRfU0VUU0laRQoKCiNkZWZpbmUgRkRfU0VUKG4scCkgX19EQVJXSU5fRkRfU0VUKG4sIHApCgoK
I2RlZmluZSBGRF9DTFIobixwKSBfX0RBUldJTl9GRF9DTFIobiwgcCkKCgojZGVmaW5lIEZEX0lT
U0VUKG4scCkgX19EQVJXSU5fRkRfSVNTRVQobiwgcCkKCgojZGVmaW5lIEZEX1pFUk8ocCkgX19E
QVJXSU5fRkRfWkVSTyhwKQoKCgojZGVmaW5lIEZEX0NPUFkoZix0KSBfX0RBUldJTl9GRF9DT1BZ
KGYsIHQpCgoKCgpleHRlcm4gIkMiIHsKCgppbnQgcHNlbGVjdChpbnQsIGZkX3NldCAqICwgZmRf
c2V0ICogLAogIGZkX3NldCAqICwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICogLAogIGNvbnN0IHNp
Z3NldF90ICogKQoKCgoKICBfX2FzbSgiXyIgInBzZWxlY3QiICIkMTA1MCIpCgoKCgogIDsKCgoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvX3NlbGVjdC5oIiAxIDMgNAojIDM3ICIvdXNyL2luY2x1ZGUv
c3lzL19zZWxlY3QuaCIgMyA0CiNkZWZpbmUgX1NZU19fU0VMRUNUX0hfIAoKaW50IHNlbGVjdChp
bnQsIGZkX3NldCAqICwgZmRfc2V0ICogLAogIGZkX3NldCAqICwgc3RydWN0IHRpbWV2YWwgKiAp
CgoKCgogIF9fYXNtKCJfIiAic2VsZWN0IiAiJDEwNTAiKQoKCgoKICA7CiMgMTUzICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAoKfQojIDUyMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAyIDMgNAoKdm9pZCBfRXhpdChpbnQpIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwpp
bnQgYWNjZXNzeF9ucChjb25zdCBzdHJ1Y3QgYWNjZXNzeF9kZXNjcmlwdG9yICosIHNpemVfdCwg
aW50ICosIHVpZF90KTsKaW50IGFjY3QoY29uc3QgY2hhciAqKTsKaW50IGFkZF9wcm9maWwoY2hh
ciAqLCBzaXplX3QsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGludCk7CnZvaWQgKmJyayhjb25z
dCB2b2lkICopOwppbnQgY2hyb290KGNvbnN0IGNoYXIgKik7CnZvaWQgZW5kdXNlcnNoZWxsKHZv
aWQpOwppbnQgZXhlY3ZQKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICogY29uc3Qg
Kik7CmNoYXIgKmZmbGFnc3Rvc3RyKHVuc2lnbmVkIGxvbmcpOwppbnQgZ2V0ZHRhYmxlc2l6ZSh2
b2lkKTsKaW50IGdldGRvbWFpbm5hbWUoY2hhciAqLCBpbnQpOwppbnQgZ2V0Z3JvdXBsaXN0KGNv
bnN0IGNoYXIgKiwgaW50LCBpbnQgKiwgaW50ICopOwppbnQgZ2V0aG9zdHV1aWQodXVpZF90LCBj
b25zdCBzdHJ1Y3QgdGltZXNwZWMgKik7Cm1vZGVfdCBnZXRtb2RlKGNvbnN0IHZvaWQgKiwgbW9k
ZV90KTsKaW50IGdldHBhZ2VzaXplKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwpj
aGFyICpnZXRwYXNzKGNvbnN0IGNoYXIgKik7CmludCBnZXRwZWVyZWlkKGludCwgdWlkX3QgKiwg
Z2lkX3QgKik7CmludCBnZXRwZ2lkKHBpZF90IF9waWQpOwppbnQgZ2V0c2dyb3Vwc19ucChpbnQg
KiwgdXVpZF90KTsKaW50IGdldHNpZChwaWRfdCBfcGlkKTsKY2hhciAqZ2V0dXNlcnNoZWxsKHZv
aWQpOwppbnQgZ2V0d2dyb3Vwc19ucChpbnQgKiwgdXVpZF90KTsKaW50IGluaXRncm91cHMoY29u
c3QgY2hhciAqLCBpbnQpOwppbnQgaXJ1c2Vyb2sodW5zaWduZWQgbG9uZywgaW50LCBjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKik7CmludCBpcnVzZXJva19zYShjb25zdCB2b2lkICosIGludCwg
aW50LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBpc3NldHVnaWQodm9pZCk7CmNo
YXIgKm1rZHRlbXAoY2hhciAqKTsKaW50IG1rbm9kKGNvbnN0IGNoYXIgKiwgbW9kZV90LCBkZXZf
dCk7CmludCBta3N0ZW1wKGNoYXIgKik7CmludCBta3N0ZW1wcyhjaGFyICosIGludCk7CmNoYXIg
Km1rdGVtcChjaGFyICopOwppbnQgbmZzc3ZjKGludCwgdm9pZCAqKTsKaW50IHByb2ZpbChjaGFy
ICosIHNpemVfdCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgaW50KTsKaW50IHB0aHJlYWRfc2V0
dWdpZF9ucCh1aWRfdCwgZ2lkX3QpOwppbnQgcHRocmVhZF9nZXR1Z2lkX25wKCB1aWRfdCAqLCBn
aWRfdCAqKTsKaW50IHJjbWQoY2hhciAqKiwgaW50LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqLCBpbnQgKik7CmludCByY21kX2FmKGNoYXIgKiosIGludCwgY29uc3Qg
Y2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50ICosCiAgaW50KTsKaW50IHJl
Ym9vdChpbnQpOwppbnQgcmV2b2tlKGNvbnN0IGNoYXIgKik7CmludCBycmVzdnBvcnQoaW50ICop
OwppbnQgcnJlc3Zwb3J0X2FmKGludCAqLCBpbnQpOwppbnQgcnVzZXJvayhjb25zdCBjaGFyICos
IGludCwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwp2b2lkICpzYnJrKGludCk7CmludCBz
ZXRkb21haW5uYW1lKGNvbnN0IGNoYXIgKiwgaW50KTsKaW50IHNldGdyb3VwcyhpbnQsIGNvbnN0
IGdpZF90ICopOwp2b2lkIHNldGhvc3RpZChsb25nKTsKaW50IHNldGhvc3RuYW1lKGNvbnN0IGNo
YXIgKiwgaW50KTsKCnZvaWQgc2V0a2V5KGNvbnN0IGNoYXIgKikgX19hc20oIl8iICJzZXRrZXki
ICk7CgoKCmludCBzZXRsb2dpbihjb25zdCBjaGFyICopOwp2b2lkICpzZXRtb2RlKGNvbnN0IGNo
YXIgKikgX19hc20oIl8iICJzZXRtb2RlIiApOwppbnQgc2V0cmdpZChnaWRfdCk7CmludCBzZXRy
dWlkKHVpZF90KTsKaW50IHNldHNncm91cHNfbnAoaW50LCBjb25zdCB1dWlkX3QpOwp2b2lkIHNl
dHVzZXJzaGVsbCh2b2lkKTsKaW50IHNldHdncm91cHNfbnAoaW50LCBjb25zdCB1dWlkX3QpOwpp
bnQgc3RydG9mZmxhZ3MoY2hhciAqKiwgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICop
OwppbnQgc3dhcG9uKGNvbnN0IGNoYXIgKik7CmludCBzeXNjYWxsKGludCwgLi4uKTsKaW50IHR0
eXNsb3Qodm9pZCk7CmludCB1bmRlbGV0ZShjb25zdCBjaGFyICopOwppbnQgdW53aGl0ZW91dChj
b25zdCBjaGFyICopOwp2b2lkICp2YWxsb2Moc2l6ZV90KTsKCmV4dGVybiBjaGFyICpzdWJvcHRh
cmc7CmludCBnZXRzdWJvcHQoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiopOwoKCgpp
bnQgZmdldGF0dHJsaXN0KGludCx2b2lkKix2b2lkKixzaXplX3QsdW5zaWduZWQgaW50KTsKaW50
IGZzZXRhdHRybGlzdChpbnQsdm9pZCosdm9pZCosc2l6ZV90LHVuc2lnbmVkIGludCk7CmludCBn
ZXRhdHRybGlzdChjb25zdCBjaGFyKix2b2lkKix2b2lkKixzaXplX3QsdW5zaWduZWQgaW50KSBf
X2FzbSgiXyIgImdldGF0dHJsaXN0IiApOwppbnQgc2V0YXR0cmxpc3QoY29uc3QgY2hhciosdm9p
ZCosdm9pZCosc2l6ZV90LHVuc2lnbmVkIGludCkgX19hc20oIl8iICJzZXRhdHRybGlzdCIgKTsK
aW50IGV4Y2hhbmdlZGF0YShjb25zdCBjaGFyKixjb25zdCBjaGFyKix1bnNpZ25lZCBpbnQpOwpp
bnQgZ2V0ZGlyZW50cmllc2F0dHIoaW50LHZvaWQqLHZvaWQqLHNpemVfdCx1bnNpZ25lZCBpbnQq
LHVuc2lnbmVkIGludCosdW5zaWduZWQgaW50Kix1bnNpZ25lZCBpbnQpOwojIDYxMSAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzIDQKc3RydWN0IGZzc2VhcmNoYmxvY2s7CnN0cnVjdCBzZWFyY2hz
dGF0ZTsKCmludCBzZWFyY2hmcyhjb25zdCBjaGFyICosIHN0cnVjdCBmc3NlYXJjaGJsb2NrICos
IHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBzZWFy
Y2hzdGF0ZSAqKTsKaW50IGZzY3RsKGNvbnN0IGNoYXIgKix1bnNpZ25lZCBsb25nLHZvaWQqLHVu
c2lnbmVkIGludCk7CmludCBmZnNjdGwoaW50LHVuc2lnbmVkIGxvbmcsdm9pZCosdW5zaWduZWQg
aW50KTsKCmV4dGVybiBpbnQgb3B0cmVzZXQ7CgoKfQojIDYyICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2XzY0L2JpdHMvb3NfZGVmaW5lcy5oIiAyIDMKCgpl
eHRlcm4gIkMiIHsKCgojZGVmaW5lIENYQV9SVU5USU1FX1NUQUJJTElUWSAiX19fZHRyYWNlX3N0
YWJpbGl0eSRjeGFfcnVudGltZSR2MSQxXzFfMF8xXzFfMF8xXzFfMF8xXzFfMF8xXzFfMCIKCiNk
ZWZpbmUgQ1hBX1JVTlRJTUVfVFlQRURFRlMgIl9fX2R0cmFjZV90eXBlZGVmcyRjeGFfcnVudGlt
ZSR2MiIKCiNkZWZpbmUgQ1hBX1JVTlRJTUVfQ1hBX0VYQ0VQVElPTl9SRVRIUk9XKCkgZG8geyBf
X2FzbV9fIHZvbGF0aWxlKCIucmVmZXJlbmNlICIgQ1hBX1JVTlRJTUVfVFlQRURFRlMpOyBfX2R0
cmFjZV9wcm9iZSRjeGFfcnVudGltZSRjeGFfZXhjZXB0aW9uX3JldGhyb3ckdjEoKTsgX19hc21f
XyB2b2xhdGlsZSgiLnJlZmVyZW5jZSAiIENYQV9SVU5USU1FX1NUQUJJTElUWSk7IH0gd2hpbGUg
KDApCgoKCgoKI2RlZmluZSBDWEFfUlVOVElNRV9DWEFfRVhDRVBUSU9OX1JFVEhST1dfRU5BQkxF
RCgpIF9fZHRyYWNlX2lzZW5hYmxlZCRjeGFfcnVudGltZSRjeGFfZXhjZXB0aW9uX3JldGhyb3ck
djEoKQoKI2RlZmluZSBDWEFfUlVOVElNRV9DWEFfRVhDRVBUSU9OX1RIUk9XKGFyZzApIGRvIHsg
X19hc21fXyB2b2xhdGlsZSgiLnJlZmVyZW5jZSAiIENYQV9SVU5USU1FX1RZUEVERUZTKTsgX19k
dHJhY2VfcHJvYmUkY3hhX3J1bnRpbWUkY3hhX2V4Y2VwdGlvbl90aHJvdyR2MSQ3NjZmNjk2NDIw
MmEoYXJnMCk7IF9fYXNtX18gdm9sYXRpbGUoIi5yZWZlcmVuY2UgIiBDWEFfUlVOVElNRV9TVEFC
SUxJVFkpOyB9IHdoaWxlICgwKQoKCgoKCiNkZWZpbmUgQ1hBX1JVTlRJTUVfQ1hBX0VYQ0VQVElP
Tl9USFJPV19FTkFCTEVEKCkgX19kdHJhY2VfaXNlbmFibGVkJGN4YV9ydW50aW1lJGN4YV9leGNl
cHRpb25fdGhyb3ckdjEoKQoKCgpleHRlcm4gdm9pZCBfX2R0cmFjZV9wcm9iZSRjeGFfcnVudGlt
ZSRjeGFfZXhjZXB0aW9uX3JldGhyb3ckdjEodm9pZCk7CmV4dGVybiBpbnQgX19kdHJhY2VfaXNl
bmFibGVkJGN4YV9ydW50aW1lJGN4YV9leGNlcHRpb25fcmV0aHJvdyR2MSh2b2lkKTsKZXh0ZXJu
IHZvaWQgX19kdHJhY2VfcHJvYmUkY3hhX3J1bnRpbWUkY3hhX2V4Y2VwdGlvbl90aHJvdyR2MSQ3
NjZmNjk2NDIwMmEodm9pZCAqKTsKZXh0ZXJuIGludCBfX2R0cmFjZV9pc2VuYWJsZWQkY3hhX3J1
bnRpbWUkY3hhX2V4Y2VwdGlvbl90aHJvdyR2MSh2b2lkKTsKCgp9CiMgMTA0ICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2XzY0L2JpdHMvb3NfZGVmaW5lcy5o
IiAzCiNkZWZpbmUgX19HTlVDX0xJQlNURF9fIDQKI2RlZmluZSBfX0dOVUNfTElCU1REX01JTk9S
X18gMgojIDQyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2
XzY0L2JpdHMvYysrY29uZmlnLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9p
Njg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9iaXRzL2NwdV9kZWZpbmVzLmgiIDEgMwojIDM2ICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2XzY0L2JpdHMvY3B1
X2RlZmluZXMuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0NQVV9ERUZJTkVTIDEKIyA0NSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9iaXRzL2MrK2NvbmZp
Zy5oIiAyIDMKCgojZGVmaW5lIF9fR0xJQkNYWF9fIDIwMDcwNzE5CgoKI2RlZmluZSBfR0xJQkNY
WF9IQVZFX0FUVFJJQlVURV9WSVNJQklMSVRZIDEKCgojZGVmaW5lIF9HTElCQ1hYX1ZJU0lCSUxJ
VFkoVikgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgjVikpKQojIDYzICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2XzY0L2JpdHMvYysrY29uZmln
LmgiIDMKI2RlZmluZSBfR0xJQkNYWF9OQU1FU1BBQ0VfQVNTT0NJQVRJT05fVkVSU0lPTiAwCiMg
ODAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0
cy9jKytjb25maWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShYKSBuYW1l
c3BhY2UgWCBfR0xJQkNYWF9WSVNJQklMSVRZX0RFRkFVTFQgewojZGVmaW5lIF9HTElCQ1hYX0VO
RF9OQU1FU1BBQ0UgfQoKCgoKI2RlZmluZSBfR0xJQkNYWF9CRUdJTl9ORVNURURfTkFNRVNQQUNF
KFgsWSkgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKFgpCiNkZWZpbmUgX0dMSUJDWFhfRU5EX05F
U1RFRF9OQU1FU1BBQ0UgX0dMSUJDWFhfRU5EX05BTUVTUEFDRQojIDE0MyAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9iaXRzL2MrK2NvbmZpZy5oIiAz
CiNkZWZpbmUgX0dMSUJDWFhfU1REIHN0ZAojZGVmaW5lIF9HTElCQ1hYX0VYVCBfX2dudV9jeHgK
CgoKCiN1bmRlZiBfR0xJQkNYWF9MT05HX0RPVUJMRV9DT01QQVQKCgoKbmFtZXNwYWNlIHN0ZCB7
CgoKCgoKCgojZGVmaW5lIF9HTElCQ1hYX0xEQkxfTkFNRVNQQUNFIAojZGVmaW5lIF9HTElCQ1hY
X0JFR0lOX0xEQkxfTkFNRVNQQUNFIAojZGVmaW5lIF9HTElCQ1hYX0VORF9MREJMX05BTUVTUEFD
RSAKCn0KIyAxNzkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94
ODZfNjQvYml0cy9jKytjb25maWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0VYVEVSTl9URU1QTEFU
RSAxCiMgMTk3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2
XzY0L2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9GQVNUX01BVEggMAoKCgoK
CgojZGVmaW5lIF9fTihtc2dpZCkgKG1zZ2lkKQoKCiN1bmRlZiBtaW4KI3VuZGVmIG1heAoKCgoK
CgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQUNPU0YgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9B
Q09TTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0FTSU5GIDEKCgojZGVmaW5lIF9HTElCQ1hY
X0hBVkVfQVNJTkwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9BVEFOMkYgMQoKCiNkZWZpbmUg
X0dMSUJDWFhfSEFWRV9BVEFOMkwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9BVEFORiAxCgoK
I2RlZmluZSBfR0xJQkNYWF9IQVZFX0FUQU5MIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQ0VJ
TEYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9DRUlMTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9I
QVZFX0NPTVBMRVhfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0NPUFlTSUdOIDEKCgojZGVm
aW5lIF9HTElCQ1hYX0hBVkVfQ09QWVNJR05GIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQ09Q
WVNJR05MIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQ09TRiAxCgoKI2RlZmluZSBfR0xJQkNY
WF9IQVZFX0NPU0hGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQ09TSEwgMQoKCiNkZWZpbmUg
X0dMSUJDWFhfSEFWRV9DT1NMIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfRVhQRiAxCgoK
I2RlZmluZSBfR0xJQkNYWF9IQVZFX0VYUEwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9GQUJT
RiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0ZBQlNMIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hB
VkVfRkVOVl9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfRklOSVRFIDEKIyAyOTYgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9jKytjb25m
aWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0hBVkVfRkxPQVRfSCAxCgoKI2RlZmluZSBfR0xJQkNY
WF9IQVZFX0ZMT09SRiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0ZMT09STCAxCgoKI2RlZmlu
ZSBfR0xJQkNYWF9IQVZFX0ZNT0RGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfRk1PREwgMQoj
IDMxNyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9i
aXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9GUkVYUEYgMQoKCiNkZWZp
bmUgX0dMSUJDWFhfSEFWRV9GUkVYUEwgMQoKCgoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9HRVRJ
UElORk8gMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9HRVRQQUdFU0laRSAxCgoKCiNkZWZpbmUg
X0dMSUJDWFhfSEFWRV9HVEhSX0RFRkFVTFQgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9IWVBP
VCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0hZUE9URiAxCgoKI2RlZmluZSBfR0xJQkNYWF9I
QVZFX0hZUE9UTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0lDT05WIDEKCgojZGVmaW5lIF9H
TElCQ1hYX0hBVkVfSUNPTlZfQ0xPU0UgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9JQ09OVl9P
UEVOIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfSU5UNjRfVCAxCgoKI2RlZmluZSBfR0xJ
QkNYWF9IQVZFX0lOVFRZUEVTX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9JU0lORiAxCiMg
MzcyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2XzY0L2Jp
dHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0lTTkFOIDEKIyAzODEgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9jKytj
b25maWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0hBVkVfSVNXQkxBTksgMQoKCiNkZWZpbmUgX0dM
SUJDWFhfSEFWRV9MQ19NRVNTQUdFUyAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xERVhQRiAx
CgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xERVhQTCAxCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9I
QVZFX0xJQk0gMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9MSU1JVF9BUyAxCgoKI2RlZmluZSBf
R0xJQkNYWF9IQVZFX0xJTUlUX0RBVEEgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9MSU1JVF9G
U0laRSAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xJTUlUX1JTUyAxCgoKI2RlZmluZSBfR0xJ
QkNYWF9IQVZFX0xJTUlUX1ZNRU0gMAoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9MT0NBTEVfSCAx
CgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xPRzEwRiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZF
X0xPRzEwTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xPR0YgMQoKCiNkZWZpbmUgX0dMSUJD
WFhfSEFWRV9MT0dMIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfTUFDSElORV9FTkRJQU5fSCAx
CgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX01BQ0hJTkVfUEFSQU1fSCAxCgoKI2RlZmluZSBfR0xJ
QkNYWF9IQVZFX01CU1RBVEVfVCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX01FTU9SWV9IIDEK
CgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfTU9ERiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZF
X01PREZGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfTU9ERkwgMQoKCgoKCiNkZWZpbmUgX0dM
SUJDWFhfSEFWRV9OTF9MQU5HSU5GTyAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1BPTEwgMQoK
CiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9QT1dGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfUE9X
TCAxCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NFVEVOViAxCgoKI2RlZmluZSBfR0xJQkNY
WF9IQVZFX1NJR1NFVEpNUCAxCiMgNDg2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBw
bGUtZGFyd2luMTAveDg2XzY0L2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9I
QVZFX1NJTkYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TSU5IRiAxCgoKI2RlZmluZSBfR0xJ
QkNYWF9IQVZFX1NJTkhMIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU0lOTCAxCgoKI2RlZmlu
ZSBfR0xJQkNYWF9IQVZFX1NRUlRGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1FSVEwgMQoK
CiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TVERCT09MX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFW
RV9TVERJTlRfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NURExJQl9IIDEKCgoKCgojZGVm
aW5lIF9HTElCQ1hYX0hBVkVfU1RSRVJST1JfUiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NU
UklOR1NfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NUUklOR19IIDEKCgojZGVmaW5lIF9H
TElCQ1hYX0hBVkVfU1RSVE9GIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1RSVE9MRCAxCgoK
CgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NZU19GSUxJT19IIDEKCgojZGVmaW5lIF9HTElCQ1hY
X0hBVkVfU1lTX0lPQ1RMX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TWVNfSVBDX0ggMQoj
IDU1MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9i
aXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TWVNfUkVTT1VSQ0VfSCAx
CgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NZU19TRU1fSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9I
QVZFX1NZU19TVEFUX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TWVNfVElNRV9IIDEKCgoj
ZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1lTX1RZUEVTX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFW
RV9TWVNfVUlPX0ggMQoKCgoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TX0lTUkVHIDEKCgojZGVm
aW5lIF9HTElCQ1hYX0hBVkVfVEFORiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1RBTkhGIDEK
CgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfVEFOSEwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9U
QU5MIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfVU5JU1REX0ggMQoKCiNkZWZpbmUgX0dM
SUJDWFhfSEFWRV9WRldTQ0FORiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1ZTV1NDQU5GIDEK
CgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfVldTQ0FORiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZF
X1dDSEFSX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9XQ1NUT0YgMQoKCiNkZWZpbmUgX0dM
SUJDWFhfSEFWRV9XQ1RZUEVfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1dSSVRFViAxCiMg
ODA3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2XzY0L2Jp
dHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9IQVZFX19fQlVJTFRJTl9BQlMgMQoK
CiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9fX0JVSUxUSU5fQ09TIDEKCgojZGVmaW5lIF9HTElCQ1hY
X0hBVkVfX19CVUlMVElOX0NPU0YgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9fX0JVSUxUSU5f
Q09TTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX19fQlVJTFRJTl9GQUJTIDEKCgojZGVmaW5l
IF9HTElCQ1hYX0hBVkVfX19CVUlMVElOX0ZBQlNGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVf
X19CVUlMVElOX0ZBQlNMIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfX19CVUlMVElOX0xBQlMg
MQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9fX0JVSUxUSU5fU0lOIDEKCgojZGVmaW5lIF9HTElC
Q1hYX0hBVkVfX19CVUlMVElOX1NJTkYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9fX0JVSUxU
SU5fU0lOTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX19fQlVJTFRJTl9TUVJUIDEKCgojZGVm
aW5lIF9HTElCQ1hYX0hBVkVfX19CVUlMVElOX1NRUlRGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hB
VkVfX19CVUlMVElOX1NRUlRMIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfX19TSUdOQklU
RiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX19fU0lHTkJJVEwgMQoKCgoKCiNkZWZpbmUgX0dM
SUJDWFhfUEFDS0FHRV9CVUdSRVBPUlQgIiIKCgojZGVmaW5lIF9HTElCQ1hYX1BBQ0tBR0VfTkFN
RSAicGFja2FnZS11bnVzZWQiCgoKI2RlZmluZSBfR0xJQkNYWF9QQUNLQUdFX1NUUklORyAicGFj
a2FnZS11bnVzZWQgdmVyc2lvbi11bnVzZWQiCgoKI2RlZmluZSBfR0xJQkNYWF9QQUNLQUdFX1RB
Uk5BTUUgImxpYnN0ZGMrKyIKCgojZGVmaW5lIF9HTElCQ1hYX1BBQ0tBR0VfX0dMSUJDWFhfVkVS
U0lPTiAidmVyc2lvbi11bnVzZWQiCgoKI2RlZmluZSBTVERDX0hFQURFUlMgMQoKCgoKCiNkZWZp
bmUgX0dMSUJDWFhfQVRPTUlDX0JVSUxUSU5TIDEKIyA4OTEgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9jKytjb25maWcuaCIgMwojZGVmaW5l
IF9HTElCQ1hYX0hPU1RFRCAxCgoKCgoKCgojZGVmaW5lIF9HTElCQ1hYX1JFU19MSU1JVFMgMQoj
IDkwOCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9i
aXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfU1lNVkVSIDEKCgojZGVmaW5lIF9H
TElCQ1hYX1NZTVZFUl9EQVJXSU4gMQojIDkyMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pNjg2
LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9iaXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJD
WFhfVVNFX0M5OSAxCgoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfQ09NUExFWCAxCgoKCgoj
ZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfQ09NUExFWF9UUjEgMQoKCgojZGVmaW5lIF9HTElCQ1hY
X1VTRV9DOTlfQ1RZUEVfVFIxIDEKCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfQzk5X0ZFTlZfVFIx
IDEKCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfQzk5X0lOVFRZUEVTX1RSMSAxCgoKCiNkZWZpbmUg
X0dMSUJDWFhfVVNFX0M5OV9NQVRIIDEKCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfQzk5X01BVEhf
VFIxIDEKCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfQzk5X1NURElOVF9UUjEgMQoKCiNkZWZpbmUg
X0dMSUJDWFhfVVNFX0lDT05WIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9MT05HX0xPTkcg
MQojIDk3NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82
NC9iaXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfVVNFX1dDSEFSX1QgMQojIDUx
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2NzdGRkZWYiIDIgMwojIDEgIi91c3IvbGliL2djYy9p
Njg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgNTIgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvY3N0ZGRlZiIgMiAzCgpuYW1lc3BhY2Ugc3RkIHsKCiAgdXNp
bmcgOjpwdHJkaWZmX3Q7CiAgdXNpbmcgOjpzaXplX3Q7Cgp9CiMgNDUgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvbmV3IiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2V4Y2VwdGlvbiIg
MSAzCiMgMzggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvZXhjZXB0aW9uIiAzCiNkZWZpbmUgX19F
WENFUFRJT05fXyAKCiNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaChkZWZhdWx0KQoKCgpleHRl
cm4gIkMrKyIgewoKbmFtZXNwYWNlIHN0ZAp7CiMgNTYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
ZXhjZXB0aW9uIiAzCiAgY2xhc3MgZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIGV4Y2VwdGlv
bigpIHRocm93KCkgeyB9CiAgICB2aXJ0dWFsIH5leGNlcHRpb24oKSB0aHJvdygpOwoKCgogICAg
dmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3QgdGhyb3coKTsKICB9OwoKCgogIGNsYXNz
IGJhZF9leGNlcHRpb24gOiBwdWJsaWMgZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIGJhZF9l
eGNlcHRpb24oKSB0aHJvdygpIHsgfQoKCgogICAgdmlydHVhbCB+YmFkX2V4Y2VwdGlvbigpIHRo
cm93KCk7CgoKICAgIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCk7CiAg
fTsKCgogIHR5cGVkZWYgdm9pZCAoKnRlcm1pbmF0ZV9oYW5kbGVyKSAoKTsKCgogIHR5cGVkZWYg
dm9pZCAoKnVuZXhwZWN0ZWRfaGFuZGxlcikgKCk7CgoKICB0ZXJtaW5hdGVfaGFuZGxlciBzZXRf
dGVybWluYXRlKHRlcm1pbmF0ZV9oYW5kbGVyKSB0aHJvdygpOwoKCgogIHZvaWQgdGVybWluYXRl
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAgdW5leHBlY3RlZF9oYW5kbGVy
IHNldF91bmV4cGVjdGVkKHVuZXhwZWN0ZWRfaGFuZGxlcikgdGhyb3coKTsKCgoKICB2b2lkIHVu
ZXhwZWN0ZWQoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CiMgMTEyICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2V4Y2VwdGlvbiIgMwogIGJvb2wgdW5jYXVnaHRfZXhjZXB0aW9uKCkg
dGhyb3coKTsKfQoKbmFtZXNwYWNlIF9fZ251X2N4eCB7CiMgMTI3ICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL2V4Y2VwdGlvbiIgMwogIHZvaWQgX192ZXJib3NlX3Rlcm1pbmF0ZV9oYW5kbGVyICgp
OwoKfQoKfQoKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKIyA0NiAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9uZXciIDIgMwoKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGRlZmF1bHQpCgpl
eHRlcm4gIkMrKyIgewoKbmFtZXNwYWNlIHN0ZAp7CgoKCgoKICBjbGFzcyBiYWRfYWxsb2MgOiBw
dWJsaWMgZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIGJhZF9hbGxvYygpIHRocm93KCkgeyB9
CgoKCiAgICB2aXJ0dWFsIH5iYWRfYWxsb2MoKSB0aHJvdygpOwoKCiAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpOwogIH07CgogIHN0cnVjdCBub3Rocm93X3QgeyB9
OwoKICBleHRlcm4gY29uc3Qgbm90aHJvd190IG5vdGhyb3c7CgoKCiAgdHlwZWRlZiB2b2lkICgq
bmV3X2hhbmRsZXIpKCk7CgoKCiAgbmV3X2hhbmRsZXIgc2V0X25ld19oYW5kbGVyKG5ld19oYW5k
bGVyKSB0aHJvdygpOwp9CiMgOTUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvbmV3IiAzCnZvaWQq
IG9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCkgdGhyb3cgKHN0ZDo6YmFkX2FsbG9jKTsKdm9pZCog
b3BlcmF0b3IgbmV3W10oc3RkOjpzaXplX3QpIHRocm93IChzdGQ6OmJhZF9hbGxvYyk7CnZvaWQg
b3BlcmF0b3IgZGVsZXRlKHZvaWQqKSB0aHJvdygpOwp2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZv
aWQqKSB0aHJvdygpOwp2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6
bm90aHJvd190JikgdGhyb3coKTsKdm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpzaXplX3QsIGNv
bnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCos
IGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKiwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwoKCmlubGluZSB2b2lkKiBvcGVy
YXRvciBuZXcoc3RkOjpzaXplX3QsIHZvaWQqIF9fcCkgdGhyb3coKSB7IHJldHVybiBfX3A7IH0K
aW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHN0ZDo6c2l6ZV90LCB2b2lkKiBfX3ApIHRocm93
KCkgeyByZXR1cm4gX19wOyB9CgoKaW5saW5lIHZvaWQgb3BlcmF0b3IgZGVsZXRlICh2b2lkKiwg
dm9pZCopIHRocm93KCkgeyB9CmlubGluZSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqLCB2
b2lkKikgdGhyb3coKSB7IH0KCn0KCiNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcG9wCiMgMjggIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oIiAyCgpuYW1lc3Bh
Y2UgV1RGIHsKCgogICAgdm9pZCogZmFzdE1hbGxvYyhzaXplX3QpOwogICAgdm9pZCogZmFzdFpl
cm9lZE1hbGxvYyhzaXplX3QpOwogICAgdm9pZCogZmFzdENhbGxvYyhzaXplX3QgbnVtRWxlbWVu
dHMsIHNpemVfdCBlbGVtZW50U2l6ZSk7CiAgICB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiwgc2l6
ZV90KTsKICAgIGNoYXIqIGZhc3RTdHJEdXAoY29uc3QgY2hhciopOwogICAgc2l6ZV90IGZhc3RN
YWxsb2NTaXplKGNvbnN0IHZvaWQqKTsKCiAgICBzdHJ1Y3QgVHJ5TWFsbG9jUmV0dXJuVmFsdWUg
ewogICAgICAgIFRyeU1hbGxvY1JldHVyblZhbHVlKHZvaWQqIGRhdGEpCiAgICAgICAgICAgIDog
bV9kYXRhKGRhdGEpCiAgICAgICAgewogICAgICAgIH0KICAgICAgICBUcnlNYWxsb2NSZXR1cm5W
YWx1ZShjb25zdCBUcnlNYWxsb2NSZXR1cm5WYWx1ZSYgc291cmNlKQogICAgICAgICAgICA6IG1f
ZGF0YShzb3VyY2UubV9kYXRhKQogICAgICAgIHsKICAgICAgICAgICAgc291cmNlLm1fZGF0YSA9
IDA7CiAgICAgICAgfQogICAgICAgIH5UcnlNYWxsb2NSZXR1cm5WYWx1ZSgpIHsgZG8gaWYgKCEo
IW1fZGF0YSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgiLCA0OSwgX19QUkVUVFlfRlVOQ1RJT05fXywg
IiFtX2RhdGEiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90
KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOyB9CiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGJvb2wgZ2V0VmFsdWUoVCYg
ZGF0YSkgX19hdHRyaWJ1dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogICAgICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBvcGVyYXRvciBQb3NzaWJseU51bGw8VD4oKQogICAgICAgIHsKICAg
ICAgICAgICAgVCB2YWx1ZTsKICAgICAgICAgICAgZ2V0VmFsdWUodmFsdWUpOwogICAgICAgICAg
ICByZXR1cm4gUG9zc2libHlOdWxsPFQ+KHZhbHVlKTsKICAgICAgICB9CiAgICBwcml2YXRlOgog
ICAgICAgIG11dGFibGUgdm9pZCogbV9kYXRhOwogICAgfTsKCiAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gYm9vbCBUcnlNYWxsb2NSZXR1cm5WYWx1ZTo6Z2V0VmFsdWUoVCYgZGF0YSkKICAgIHsK
ICAgICAgICB1bmlvbiB1IHsgdm9pZCogZGF0YTsgVCB0YXJnZXQ7IH0gcmVzOwogICAgICAgIHJl
cy5kYXRhID0gbV9kYXRhOwogICAgICAgIGRhdGEgPSByZXMudGFyZ2V0OwogICAgICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSAhIW1fZGF0YTsKICAgICAgICBtX2RhdGEgPSAwOwogICAgICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKICAgIH0KCiAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0TWFs
bG9jKHNpemVfdCBuKTsKICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RaZXJvZWRNYWxs
b2Moc2l6ZV90IG4pOwogICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdENhbGxvYyhzaXpl
X3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7CiAgICBUcnlNYWxsb2NSZXR1cm5W
YWx1ZSB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7CgogICAgdm9pZCBmYXN0RnJl
ZSh2b2lkKik7CgoKICAgIHZvaWQgZmFzdE1hbGxvY0ZvcmJpZCgpOwogICAgdm9pZCBmYXN0TWFs
bG9jQWxsb3coKTsKCgogICAgdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsKCiAg
ICBzdHJ1Y3QgRmFzdE1hbGxvY1N0YXRpc3RpY3MgewogICAgICAgIHNpemVfdCByZXNlcnZlZFZN
Qnl0ZXM7CiAgICAgICAgc2l6ZV90IGNvbW1pdHRlZFZNQnl0ZXM7CiAgICAgICAgc2l6ZV90IGZy
ZWVMaXN0Qnl0ZXM7CiAgICB9OwogICAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0
YXRpc3RpY3MoKTsKCgoKICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEFsbG9jQWxpZ25t
ZW50SW50ZWdlcjsKCiAgICBuYW1lc3BhY2UgSW50ZXJuYWwgewogICAgICAgIGVudW0gQWxsb2NU
eXBlIHsKICAgICAgICAgICAgQWxsb2NUeXBlTWFsbG9jID0gMHgzNzVkNjc1MCwKICAgICAgICAg
ICAgQWxsb2NUeXBlQ2xhc3NOZXcsCiAgICAgICAgICAgIEFsbG9jVHlwZUNsYXNzTmV3QXJyYXks
CiAgICAgICAgICAgIEFsbG9jVHlwZUZhc3ROZXcsCiAgICAgICAgICAgIEFsbG9jVHlwZUZhc3RO
ZXdBcnJheSwKICAgICAgICAgICAgQWxsb2NUeXBlTmV3LAogICAgICAgICAgICBBbGxvY1R5cGVO
ZXdBcnJheQogICAgICAgIH07CgogICAgICAgIGVudW0gewogICAgICAgICAgICBWYWxpZGF0aW9u
UHJlZml4ID0gMHhmMDBkZjAwZCwKICAgICAgICAgICAgVmFsaWRhdGlvblN1ZmZpeCA9IDB4MGJh
ZGYwMGQKICAgICAgICB9OwoKICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIFZhbGlkYXRpb25UYWc7
CgogICAgICAgIHN0cnVjdCBWYWxpZGF0aW9uSGVhZGVyIHsKICAgICAgICAgICAgQWxsb2NUeXBl
IG1fdHlwZTsKICAgICAgICAgICAgdW5zaWduZWQgbV9zaXplOwogICAgICAgICAgICBWYWxpZGF0
aW9uVGFnIG1fcHJlZml4OwogICAgICAgICAgICB1bnNpZ25lZCBtX2FsaWdubWVudDsKICAgICAg
ICB9OwoKICAgICAgICBzdGF0aWMgY29uc3QgaW50IFZhbGlkYXRpb25CdWZmZXJTaXplID0gc2l6
ZW9mKFZhbGlkYXRpb25IZWFkZXIpICsgc2l6ZW9mKFZhbGlkYXRpb25UYWcpOwogICAgfQojIDIx
MSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgiCiAgICBp
bmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyh2b2lkKiwgSW50ZXJuYWw6
OkFsbG9jVHlwZSkKICAgIHsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hW
YWxpZGF0ZUZyZWUodm9pZCosIEludGVybmFsOjpBbGxvY1R5cGUpCiAgICB7CiAgICB9CgoKCn0K
CnVzaW5nIFdURjo6ZmFzdENhbGxvYzsKdXNpbmcgV1RGOjpmYXN0RnJlZTsKdXNpbmcgV1RGOjpm
YXN0TWFsbG9jOwp1c2luZyBXVEY6OmZhc3RNYWxsb2NTaXplOwp1c2luZyBXVEY6OmZhc3RSZWFs
bG9jOwp1c2luZyBXVEY6OmZhc3RTdHJEdXA7CnVzaW5nIFdURjo6ZmFzdFplcm9lZE1hbGxvYzsK
dXNpbmcgV1RGOjp0cnlGYXN0Q2FsbG9jOwp1c2luZyBXVEY6OnRyeUZhc3RNYWxsb2M7CnVzaW5n
IFdURjo6dHJ5RmFzdFJlYWxsb2M7CnVzaW5nIFdURjo6dHJ5RmFzdFplcm9lZE1hbGxvYzsKCgp1
c2luZyBXVEY6OmZhc3RNYWxsb2NGb3JiaWQ7CnVzaW5nIFdURjo6ZmFzdE1hbGxvY0FsbG93OwoK
CgojZGVmaW5lIFdURl9QUklWQVRFX0lOTElORSBfX3ByaXZhdGVfZXh0ZXJuX18gaW5saW5lIF9f
YXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQojIDEyMyAiLi4vLi4vLi4vU291cmNlL1dlYkNv
cmUvY29uZmlnLmgiIDIKIyAxNDQgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2NvbmZpZy5oIgoj
ZGVmaW5lIFNLSVBfU1RBVElDX0NPTlNUUlVDVE9SU19PTl9HQ0MgMQojIDE3MyAiLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvY29uZmlnLmgiCiNkZWZpbmUgV1RGX1VTRV9PU19SQU5ET01ORVNTIDEK
IyAxOTIgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2NvbmZpZy5oIgojZGVmaW5lIFdURl9VU0Vf
VjggMAoKCgoKI2RlZmluZSBXVEZfVVNFX0pTQyAhV1RGX1VTRV9WOAojIDI3ICIuLi8uLi8uLi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5t
bSIgMgoKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLmgiIDEKIyAyOCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCIKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNXaW5kb3dDb250
cm9sbGVyLmgiIDEgMwoKCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNSZXNwb25kZXIuaCIgMSAzCgoKCgoKCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNPYmpl
Y3QuaCIgMSAzCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvTlNPYmpDUnVudGltZS5oIiAxIDMKCgoKCgoKCiNkZWZpbmUgRk9V
TkRBVElPTl9FWFRFUk4gZXh0ZXJuICJDIgojIDI0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TT2JqQ1J1bnRpbWUuaCIgMwojZGVmaW5l
IEZPVU5EQVRJT05fRVhQT1JUIEZPVU5EQVRJT05fRVhURVJOCiNkZWZpbmUgRk9VTkRBVElPTl9J
TVBPUlQgRk9VTkRBVElPTl9FWFRFUk4KCgoKCiNkZWZpbmUgTlNfSU5MSU5FIHN0YXRpYyBfX2lu
bGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQojIDQxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TT2JqQ1J1bnRpbWUu
aCIgMwojZGVmaW5lIEZPVU5EQVRJT05fU1RBVElDX0lOTElORSBzdGF0aWMgX19pbmxpbmVfXwoK
CgojZGVmaW5lIEZPVU5EQVRJT05fRVhURVJOX0lOTElORSBleHRlcm4gX19pbmxpbmVfXwoKCgoK
CgoKI2RlZmluZSBOU19SRVFVSVJFU19OSUxfVEVSTUlOQVRJT04gX19hdHRyaWJ1dGVfXygoc2Vu
dGluZWwoMCwxKSkpCiMgNjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvTlNPYmpDUnVudGltZS5oIiAzCiNkZWZpbmUgTlNfQkxPQ0tTX0FW
QUlMQUJMRSAxCiMgNzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvTlNPYmpDUnVudGltZS5oIiAzCiNkZWZpbmUgTlNfTk9OQVRPTUlDX0lQ
SE9ORU9OTFkgCgoKCgoKCiNkZWZpbmUgTlNfRk9STUFUX0ZVTkNUSU9OKEYsQSkgX19hdHRyaWJ1
dGVfXygoZm9ybWF0KF9fTlNTdHJpbmdfXywgRiwgQSkpKQojIDg5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TT2JqQ1J1bnRpbWUuaCIg
MwojZGVmaW5lIE5TX0ZPUk1BVF9BUkdVTUVOVChBKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0X2Fy
ZyhBKSkpCiMgOTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvTlNPYmpDUnVudGltZS5oIiAzCiNkZWZpbmUgTlNfUkVUVVJOU19SRVRBSU5F
RCAKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL29iamMvb2JqYy5oIiAxIDMgNAojIDI5ICIvdXNyL2lu
Y2x1ZGUvb2JqYy9vYmpjLmgiIDMgNAojZGVmaW5lIF9PQkpDX09CSkNfSF8gCgojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzIDQKIyA3MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzIDQKI2RlZmluZSBfU1lTX1RZUEVTX0hfIAojIDg0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNo
b3J0IHVfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OwoKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIHVfbG9uZzsKI2RlZmluZSBfVV9MT05HIAoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1
c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CgoKdHlwZWRlZiB1X2ludDY0X3QgdV9x
dWFkX3Q7CnR5cGVkZWYgaW50NjRfdCBxdWFkX3Q7CnR5cGVkZWYgcXVhZF90ICogcWFkZHJfdDsK
CnR5cGVkZWYgY2hhciAqIGNhZGRyX3Q7CnR5cGVkZWYgaW50MzJfdCBkYWRkcl90OwoKCgoKCgp0
eXBlZGVmIHVfaW50MzJfdCBmaXhwdF90OwoKCnR5cGVkZWYgX19kYXJ3aW5fYmxrY250X3QgYmxr
Y250X3Q7CiNkZWZpbmUgX0JMS0NOVF9UIAoKCgp0eXBlZGVmIF9fZGFyd2luX2Jsa3NpemVfdCBi
bGtzaXplX3Q7CiNkZWZpbmUgX0JMS1NJWkVfVCAKIyAxMjUgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMyA0CiNkZWZpbmUgX0lOX0FERFJfVCAKdHlwZWRlZiBfX3VpbnQzMl90IGluX2FkZHJf
dDsKCgoKI2RlZmluZSBfSU5fUE9SVF9UIAp0eXBlZGVmIF9fdWludDE2X3QgaW5fcG9ydF90OwoK
Cgp0eXBlZGVmIF9fZGFyd2luX2lub190IGlub190OwojZGVmaW5lIF9JTk9fVCAKCgoKCnR5cGVk
ZWYgX19kYXJ3aW5faW5vNjRfdCBpbm82NF90OwojZGVmaW5lIF9JTk82NF9UIAoKCgoKI2RlZmlu
ZSBfS0VZX1QgCnR5cGVkZWYgX19pbnQzMl90IGtleV90OwojIDE1NyAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBfX3VpbnQxNl90IG5saW5rX3Q7CiNkZWZpbmUgX05MSU5L
X1QgCiMgMTc2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIGludDMyX3Qg
c2Vnc3pfdDsKdHlwZWRlZiBpbnQzMl90IHN3YmxrX3Q7CiMgMTk3ICIvdXNyL2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDMgNApzdGF0aWMgaW5saW5lIF9faW50MzJfdCBtYWpvcihfX3VpbnQzMl90IF94
KQp7CiByZXR1cm4gKF9faW50MzJfdCkoKChfX3VpbnQzMl90KV94ID4+IDI0KSAmIDB4ZmYpOwp9
CgpzdGF0aWMgaW5saW5lIF9faW50MzJfdCBtaW5vcihfX3VpbnQzMl90IF94KQp7CiByZXR1cm4g
KF9faW50MzJfdCkoKF94KSAmIDB4ZmZmZmZmKTsKfQoKc3RhdGljIGlubGluZSBkZXZfdCBtYWtl
ZGV2KF9fdWludDMyX3QgX21ham9yLCBfX3VpbnQzMl90IF9taW5vcikKewogcmV0dXJuIChkZXZf
dCkoKChfbWFqb3IpIDw8IDI0KSB8IChfbWlub3IpKTsKfQojIDIyMiAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAzIDQKI2RlZmluZSBfQ0xPQ0tfVCAKdHlwZWRlZiBfX2Rhcndpbl9jbG9ja190
IGNsb2NrX3Q7CiMgMjU5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAojZGVmaW5lIF9f
bmVlZF9mZF9zZXQgCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9fc3RydWN0cy5oIiAxIDMgNAojIDE2
NSAiL3Vzci9pbmNsdWRlL3N5cy9fc3RydWN0cy5oIiAzIDQKI3VuZGVmIF9fbmVlZF9mZF9zZXQK
IyAyNjEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCiNkZWZpbmUgTkJCWSBfX0RB
UldJTl9OQkJZCiNkZWZpbmUgTkZEQklUUyBfX0RBUldJTl9ORkRCSVRTCiNkZWZpbmUgaG93bWFu
eSh4LHkpIF9fREFSV0lOX2hvd21hbnkoeCwgeSkKdHlwZWRlZiBfX2ludDMyX3QgZmRfbWFzazsK
IyAzMjEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CiNkZWZpbmUgX1BUSFJFQURfQ09O
RF9UIAp0eXBlZGVmIF9fZGFyd2luX3B0aHJlYWRfY29uZF90IHB0aHJlYWRfY29uZF90OwoKCiNk
ZWZpbmUgX1BUSFJFQURfQ09OREFUVFJfVCAKdHlwZWRlZiBfX2Rhcndpbl9wdGhyZWFkX2NvbmRh
dHRyX3QgcHRocmVhZF9jb25kYXR0cl90OwoKCiNkZWZpbmUgX1BUSFJFQURfTVVURVhfVCAKdHlw
ZWRlZiBfX2Rhcndpbl9wdGhyZWFkX211dGV4X3QgcHRocmVhZF9tdXRleF90OwoKCiNkZWZpbmUg
X1BUSFJFQURfTVVURVhBVFRSX1QgCnR5cGVkZWYgX19kYXJ3aW5fcHRocmVhZF9tdXRleGF0dHJf
dCBwdGhyZWFkX211dGV4YXR0cl90OwoKCiNkZWZpbmUgX1BUSFJFQURfT05DRV9UIAp0eXBlZGVm
IF9fZGFyd2luX3B0aHJlYWRfb25jZV90IHB0aHJlYWRfb25jZV90OwoKCiNkZWZpbmUgX1BUSFJF
QURfUldMT0NLX1QgCnR5cGVkZWYgX19kYXJ3aW5fcHRocmVhZF9yd2xvY2tfdCBwdGhyZWFkX3J3
bG9ja190OwoKCiNkZWZpbmUgX1BUSFJFQURfUldMT0NLQVRUUl9UIAp0eXBlZGVmIF9fZGFyd2lu
X3B0aHJlYWRfcndsb2NrYXR0cl90IHB0aHJlYWRfcndsb2NrYXR0cl90OwoKCiNkZWZpbmUgX1BU
SFJFQURfVCAKdHlwZWRlZiBfX2Rhcndpbl9wdGhyZWFkX3QgcHRocmVhZF90OwoKCgoKCiNkZWZp
bmUgX1BUSFJFQURfS0VZX1QgCnR5cGVkZWYgX19kYXJ3aW5fcHRocmVhZF9rZXlfdCBwdGhyZWFk
X2tleV90OwoKCgoKI2RlZmluZSBfRlNCTEtDTlRfVCAKdHlwZWRlZiBfX2Rhcndpbl9mc2Jsa2Nu
dF90IGZzYmxrY250X3Q7CgoKCiNkZWZpbmUgX0ZTRklMQ05UX1QgCnR5cGVkZWYgX19kYXJ3aW5f
ZnNmaWxjbnRfdCBmc2ZpbGNudF90OwojIDMyICIvdXNyL2luY2x1ZGUvb2JqYy9vYmpjLmgiIDIg
MyA0CiMgMSAiL3Vzci9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMSAzIDQKIyAyNiAiL3Vzci9p
bmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMyA0CiNkZWZpbmUgX09CSkNfT0JKQ19BUElfSF8gCiMg
MzkgIi91c3IvaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiIDMgNAojZGVmaW5lIE9CSkNfQVBJX1ZF
UlNJT04gMgoKCgoKCgojZGVmaW5lIE9CSkMyX1VOQVZBSUxBQkxFIFVOQVZBSUxBQkxFX0FUVFJJ
QlVURQoKCgoKCgoKI2RlZmluZSBPQkpDX0VYVEVSTiBleHRlcm4gIkMiCiMgNjggIi91c3IvaW5j
bHVkZS9vYmpjL29iamMtYXBpLmgiIDMgNAojZGVmaW5lIE9CSkNfRVhQT1JUIE9CSkNfRVhURVJO
CgoKCgojZGVmaW5lIE9CSkNfSU1QT1JUIGV4dGVybgoKCgoKCgoKI2RlZmluZSBPQkpDX0lOTElO
RSBfX2lubGluZQojIDMzICIvdXNyL2luY2x1ZGUvb2JqYy9vYmpjLmgiIDIgMyA0CgoKdHlwZWRl
ZiBzdHJ1Y3Qgb2JqY19jbGFzcyAqQ2xhc3M7CnR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0IHsK
ICAgIENsYXNzIGlzYTsKfSAqaWQ7CgoKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19zZWxlY3RvciAqU0VM
Owp0eXBlZGVmIGlkICgqSU1QKShpZCwgU0VMLCAuLi4pOwp0eXBlZGVmIHNpZ25lZCBjaGFyIEJP
T0w7CgoKI2RlZmluZSBPQkpDX0JPT0xfREVGSU5FRCAKCgojZGVmaW5lIFlFUyAoQk9PTCkxCiNk
ZWZpbmUgTk8gKEJPT0wpMAoKCiNkZWZpbmUgTmlsIF9fREFSV0lOX05VTEwKCgoKI2RlZmluZSBu
aWwgX19EQVJXSU5fTlVMTAoKCgojZGVmaW5lIF9fc3Ryb25nIAoKCmV4dGVybiAiQyIgY29uc3Qg
Y2hhciAqc2VsX2dldE5hbWUoU0VMIHNlbCk7CmV4dGVybiAiQyIgU0VMIHNlbF9yZWdpc3Rlck5h
bWUoY29uc3QgY2hhciAqc3RyKTsKZXh0ZXJuICJDIiBjb25zdCBjaGFyICpvYmplY3RfZ2V0Q2xh
c3NOYW1lKGlkIG9iaik7CmV4dGVybiAiQyIgdm9pZCAqb2JqZWN0X2dldEluZGV4ZWRJdmFycyhp
ZCBvYmopOwojIDEwNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9OU09iakNSdW50aW1lLmgiIDIgMwojIDEgIi91c3IvbGliL2djYy9pNjg2
LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMyA0CiMgMzQgIi91c3Iv
bGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3RkYXJnLmgiIDMgNAoj
ZGVmaW5lIF9TVERBUkdfSCAKI2RlZmluZSBfQU5TSV9TVERBUkdfSF8gCgojdW5kZWYgX19uZWVk
X19fdmFfbGlzdAoKCgoKI2RlZmluZSBfX0dOVUNfVkFfTElTVCAKdHlwZWRlZiBfX2J1aWx0aW5f
dmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKCgoKCgoKI2RlZmluZSB2YV9zdGFydCh2LGwpIF9fYnVp
bHRpbl92YV9zdGFydCh2LGwpCiNkZWZpbmUgdmFfZW5kKHYpIF9fYnVpbHRpbl92YV9lbmQodikK
I2RlZmluZSB2YV9hcmcodixsKSBfX2J1aWx0aW5fdmFfYXJnKHYsbCkKCiNkZWZpbmUgdmFfY29w
eShkLHMpIF9fYnVpbHRpbl92YV9jb3B5KGQscykKCiNkZWZpbmUgX192YV9jb3B5KGQscykgX19i
dWlsdGluX3ZhX2NvcHkoZCxzKQojIDEwNSAiL3Vzci9saWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2lu
MTAvNC4yLjEvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFf
bGlzdDsKCgoKCgojZGVmaW5lIF9WQV9MSVNUXyAKCgojZGVmaW5lIF9WQV9MSVNUIAoKCiNkZWZp
bmUgX1ZBX0xJU1RfREVGSU5FRCAKCgojZGVmaW5lIF9WQV9MSVNUX1RfSCAKCgojZGVmaW5lIF9f
dmFfbGlzdF9fIAojIDEwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9OU09iakNSdW50aW1lLmgiIDIgMwoKIyAxICIvdXNyL2xpYi9nY2Mv
aTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL2xpbWl0cy5oIiAxIDMgNAoKCgoKCgoj
IDEgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3lzbGlt
aXRzLmgiIDEgMyA0CgoKCgoKI2RlZmluZSBfR0NDX05FWFRfTElNSVRTX0ggCiMgOCAiL3Vzci9s
aWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9saW1pdHMuaCIgMiAzIDQK
CgojIDEgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMSAzIDQKIyA2MSAiL3Vzci9pbmNsdWRlL2xp
bWl0cy5oIiAzIDQKI2RlZmluZSBfTElNSVRTX0hfIAoKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hp
bmUvbGltaXRzLmgiIDEgMyA0CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9pMzg2L2xpbWl0cy5o
IiAxIDMgNAojIDM3ICIvdXNyL2luY2x1ZGUvaTM4Ni9saW1pdHMuaCIgMyA0CiNkZWZpbmUgX0kz
ODZfTElNSVRTX0hfIAoKCiMgMSAiL3Vzci9pbmNsdWRlL2kzODYvX2xpbWl0cy5oIiAxIDMgNAoj
IDIzICIvdXNyL2luY2x1ZGUvaTM4Ni9fbGltaXRzLmgiIDMgNAojZGVmaW5lIF9JMzg2X19MSU1J
VFNfSF8gCgojZGVmaW5lIF9fREFSV0lOX0NMS19UQ0sgMTAwCiMgNDEgIi91c3IvaW5jbHVkZS9p
Mzg2L2xpbWl0cy5oIiAyIDMgNAoKI2RlZmluZSBDSEFSX0JJVCA4CiNkZWZpbmUgTUJfTEVOX01B
WCA2CgoKI2RlZmluZSBDTEtfVENLIF9fREFSV0lOX0NMS19UQ0sKIyA1OSAiL3Vzci9pbmNsdWRl
L2kzODYvbGltaXRzLmgiIDMgNAojZGVmaW5lIFNDSEFSX01BWCAxMjcKI2RlZmluZSBTQ0hBUl9N
SU4gKC0xMjgpCgojZGVmaW5lIFVDSEFSX01BWCAyNTUKI2RlZmluZSBDSEFSX01BWCAxMjcKI2Rl
ZmluZSBDSEFSX01JTiAoLTEyOCkKCiNkZWZpbmUgVVNIUlRfTUFYIDY1NTM1CiNkZWZpbmUgU0hS
VF9NQVggMzI3NjcKI2RlZmluZSBTSFJUX01JTiAoLTMyNzY4KQoKI2RlZmluZSBVSU5UX01BWCAw
eGZmZmZmZmZmCiNkZWZpbmUgSU5UX01BWCAyMTQ3NDgzNjQ3CiNkZWZpbmUgSU5UX01JTiAoLTIx
NDc0ODM2NDctMSkKCgojZGVmaW5lIFVMT05HX01BWCAweGZmZmZmZmZmZmZmZmZmZmZVTAojZGVm
aW5lIExPTkdfTUFYIDB4N2ZmZmZmZmZmZmZmZmZmZkwKI2RlZmluZSBMT05HX01JTiAoLTB4N2Zm
ZmZmZmZmZmZmZmZmZkwtMSkKCgoKCgoKI2RlZmluZSBVTExPTkdfTUFYIDB4ZmZmZmZmZmZmZmZm
ZmZmZlVMTAojZGVmaW5lIExMT05HX01BWCAweDdmZmZmZmZmZmZmZmZmZmZMTAojZGVmaW5lIExM
T05HX01JTiAoLTB4N2ZmZmZmZmZmZmZmZmZmZkxMLTEpCgoKCiNkZWZpbmUgTE9OR19CSVQgNjQK
CgoKI2RlZmluZSBTU0laRV9NQVggTE9OR19NQVgKI2RlZmluZSBXT1JEX0JJVCAzMgoKCiNkZWZp
bmUgU0laRV9UX01BWCBVTE9OR19NQVgKCiNkZWZpbmUgVVFVQURfTUFYIFVMTE9OR19NQVgKI2Rl
ZmluZSBRVUFEX01BWCBMTE9OR19NQVgKI2RlZmluZSBRVUFEX01JTiBMTE9OR19NSU4KIyA5ICIv
dXNyL2luY2x1ZGUvbWFjaGluZS9saW1pdHMuaCIgMiAzIDQKIyA2NSAiL3Vzci9pbmNsdWRlL2xp
bWl0cy5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmgiIDEgMyA0CiMg
NjYgIi91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmgiIDMgNAojZGVmaW5lIF9TWVNfU1lTTElN
SVRTX0hfIAojIDc1ICIvdXNyL2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIiAzIDQKI2RlZmluZSBB
UkdfTUFYICgyNTYgKiAxMDI0KQojZGVmaW5lIENISUxEX01BWCAyNjYKCiNkZWZpbmUgR0lEX01B
WCAyMTQ3NDgzNjQ3VQoKI2RlZmluZSBMSU5LX01BWCAzMjc2NwojZGVmaW5lIE1BWF9DQU5PTiAx
MDI0CiNkZWZpbmUgTUFYX0lOUFVUIDEwMjQKI2RlZmluZSBOQU1FX01BWCAyNTUKI2RlZmluZSBO
R1JPVVBTX01BWCAxNgoKI2RlZmluZSBVSURfTUFYIDIxNDc0ODM2NDdVCgojZGVmaW5lIE9QRU5f
TUFYIDEwMjQwCgoKI2RlZmluZSBQQVRIX01BWCAxMDI0CiNkZWZpbmUgUElQRV9CVUYgNTEyCgoj
ZGVmaW5lIEJDX0JBU0VfTUFYIDk5CiNkZWZpbmUgQkNfRElNX01BWCAyMDQ4CiNkZWZpbmUgQkNf
U0NBTEVfTUFYIDk5CiNkZWZpbmUgQkNfU1RSSU5HX01BWCAxMDAwCiNkZWZpbmUgQ0hBUkNMQVNT
X05BTUVfTUFYIDE0CiNkZWZpbmUgQ09MTF9XRUlHSFRTX01BWCAyCiNkZWZpbmUgRVFVSVZfQ0xB
U1NfTUFYIDIKI2RlZmluZSBFWFBSX05FU1RfTUFYIDMyCiNkZWZpbmUgTElORV9NQVggMjA0OAoj
ZGVmaW5lIFJFX0RVUF9NQVggMjU1CgoKI2RlZmluZSBOWkVSTyAyMAojIDY2ICIvdXNyL2luY2x1
ZGUvbGltaXRzLmgiIDIgMyA0CgoKI2RlZmluZSBfUE9TSVhfQUlPX0xJU1RJT19NQVggMgojZGVm
aW5lIF9QT1NJWF9BSU9fTUFYIDEKI2RlZmluZSBfUE9TSVhfREVMQVlUSU1FUl9NQVggMzIKI2Rl
ZmluZSBfUE9TSVhfSE9TVF9OQU1FX01BWCAyNTUKI2RlZmluZSBfUE9TSVhfTE9HSU5fTkFNRV9N
QVggOQojZGVmaW5lIF9QT1NJWF9NUV9PUEVOX01BWCA4CiNkZWZpbmUgX1BPU0lYX01RX1BSSU9f
TUFYIDMyCgojZGVmaW5lIF9QT1NJWF9BUkdfTUFYIDQwOTYKI2RlZmluZSBfUE9TSVhfQ0hJTERf
TUFYIDI1CiNkZWZpbmUgX1BPU0lYX0xJTktfTUFYIDgKI2RlZmluZSBfUE9TSVhfTUFYX0NBTk9O
IDI1NQojZGVmaW5lIF9QT1NJWF9NQVhfSU5QVVQgMjU1CiNkZWZpbmUgX1BPU0lYX05BTUVfTUFY
IDE0CiNkZWZpbmUgX1BPU0lYX05HUk9VUFNfTUFYIDgKI2RlZmluZSBfUE9TSVhfT1BFTl9NQVgg
MjAKI2RlZmluZSBfUE9TSVhfUEFUSF9NQVggMjU2CiNkZWZpbmUgX1BPU0lYX1BJUEVfQlVGIDUx
MgojZGVmaW5lIF9QT1NJWF9TU0laRV9NQVggMzI3NjcKI2RlZmluZSBfUE9TSVhfU1RSRUFNX01B
WCA4CiNkZWZpbmUgX1BPU0lYX1RaTkFNRV9NQVggNgoKI2RlZmluZSBfUE9TSVhfUkVfRFVQX01B
WCAyNTUKI2RlZmluZSBfUE9TSVhfUlRTSUdfTUFYIDgKI2RlZmluZSBfUE9TSVhfU0VNX05TRU1T
X01BWCAyNTYKI2RlZmluZSBfUE9TSVhfU0VNX1ZBTFVFX01BWCAzMjc2NwojZGVmaW5lIF9QT1NJ
WF9TSUdRVUVVRV9NQVggMzIKI2RlZmluZSBfUE9TSVhfU1NfUkVQTF9NQVggNAojZGVmaW5lIF9Q
T1NJWF9TWU1MSU5LX01BWCAyNTUKI2RlZmluZSBfUE9TSVhfU1lNTE9PUF9NQVggOAojZGVmaW5l
IF9QT1NJWF9USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TIDQKI2RlZmluZSBfUE9TSVhfVEhS
RUFEX0tFWVNfTUFYIDEyOAojZGVmaW5lIF9QT1NJWF9USFJFQURfVEhSRUFEU19NQVggNjQKI2Rl
ZmluZSBfUE9TSVhfVElNRVJfTUFYIDMyCiNkZWZpbmUgX1BPU0lYX1RSQUNFX0VWRU5UX05BTUVf
TUFYIDMwCiNkZWZpbmUgX1BPU0lYX1RSQUNFX05BTUVfTUFYIDgKI2RlZmluZSBfUE9TSVhfVFJB
Q0VfU1lTX01BWCA4CiNkZWZpbmUgX1BPU0lYX1RSQUNFX1VTRVJfRVZFTlRfTUFYIDMyCiNkZWZp
bmUgX1BPU0lYX1RUWV9OQU1FX01BWCA5CgojZGVmaW5lIF9QT1NJWDJfQkNfQkFTRV9NQVggOTkK
I2RlZmluZSBfUE9TSVgyX0JDX0RJTV9NQVggMjA0OAojZGVmaW5lIF9QT1NJWDJfQkNfU0NBTEVf
TUFYIDk5CiNkZWZpbmUgX1BPU0lYMl9CQ19TVFJJTkdfTUFYIDEwMDAKI2RlZmluZSBfUE9TSVgy
X0NIQVJDTEFTU19OQU1FX01BWCAxNAojZGVmaW5lIF9QT1NJWDJfQ09MTF9XRUlHSFRTX01BWCAy
CiNkZWZpbmUgX1BPU0lYMl9FUVVJVl9DTEFTU19NQVggMgojZGVmaW5lIF9QT1NJWDJfRVhQUl9O
RVNUX01BWCAzMgojZGVmaW5lIF9QT1NJWDJfTElORV9NQVggMjA0OAojZGVmaW5lIF9QT1NJWDJf
UkVfRFVQX01BWCAyNTUKCiNkZWZpbmUgUFRIUkVBRF9TVEFDS19NSU4gODE5MgojZGVmaW5lIFBU
SFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TIDQKI2RlZmluZSBQVEhSRUFEX0tFWVNfTUFYIDUx
MgoKCiNkZWZpbmUgUEFTU19NQVggMTI4CgoKI2RlZmluZSBOTF9BUkdNQVggOQojZGVmaW5lIE5M
X0xBTkdNQVggMTQKI2RlZmluZSBOTF9NU0dNQVggMzI3NjcKI2RlZmluZSBOTF9OTUFYIDEKI2Rl
ZmluZSBOTF9TRVRNQVggMjU1CiNkZWZpbmUgTkxfVEVYVE1BWCAyMDQ4CgojZGVmaW5lIF9YT1BF
Tl9JT1ZfTUFYIDE2CiNkZWZpbmUgSU9WX01BWCAxMDI0CiNkZWZpbmUgX1hPUEVOX05BTUVfTUFY
IDI1NQojZGVmaW5lIF9YT1BFTl9QQVRIX01BWCAxMDI0CiMgMTEgIi91c3IvbGliL2djYy9pNjg2
LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiN1bmRlZiBfR0ND
X05FWFRfTElNSVRTX0gKCgoKI2RlZmluZSBfTElNSVRTX0hfX18gCgoKI3VuZGVmIENIQVJfQklU
CiNkZWZpbmUgQ0hBUl9CSVQgX19DSEFSX0JJVF9fCgoKCgoKCgojdW5kZWYgU0NIQVJfTUlOCiNk
ZWZpbmUgU0NIQVJfTUlOICgtU0NIQVJfTUFYIC0gMSkKI3VuZGVmIFNDSEFSX01BWAojZGVmaW5l
IFNDSEFSX01BWCBfX1NDSEFSX01BWF9fCgoKI3VuZGVmIFVDSEFSX01BWAoKCgojZGVmaW5lIFVD
SEFSX01BWCAoU0NIQVJfTUFYICogMiArIDEpCiMgNTEgIi91c3IvbGliL2djYy9pNjg2LWFwcGxl
LWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvbGltaXRzLmgiIDMgNAojdW5kZWYgQ0hBUl9NSU4KI2Rl
ZmluZSBDSEFSX01JTiBTQ0hBUl9NSU4KI3VuZGVmIENIQVJfTUFYCiNkZWZpbmUgQ0hBUl9NQVgg
U0NIQVJfTUFYCgoKCiN1bmRlZiBTSFJUX01JTgojZGVmaW5lIFNIUlRfTUlOICgtU0hSVF9NQVgg
LSAxKQojdW5kZWYgU0hSVF9NQVgKI2RlZmluZSBTSFJUX01BWCBfX1NIUlRfTUFYX18KCgojdW5k
ZWYgVVNIUlRfTUFYCgoKCiNkZWZpbmUgVVNIUlRfTUFYIChTSFJUX01BWCAqIDIgKyAxKQoKCgoj
dW5kZWYgSU5UX01JTgojZGVmaW5lIElOVF9NSU4gKC1JTlRfTUFYIC0gMSkKI3VuZGVmIElOVF9N
QVgKI2RlZmluZSBJTlRfTUFYIF9fSU5UX01BWF9fCgoKI3VuZGVmIFVJTlRfTUFYCiNkZWZpbmUg
VUlOVF9NQVggKElOVF9NQVggKiAyVSArIDFVKQoKCgojdW5kZWYgTE9OR19NSU4KI2RlZmluZSBM
T05HX01JTiAoLUxPTkdfTUFYIC0gMUwpCiN1bmRlZiBMT05HX01BWAojZGVmaW5lIExPTkdfTUFY
IF9fTE9OR19NQVhfXwoKCiN1bmRlZiBVTE9OR19NQVgKI2RlZmluZSBVTE9OR19NQVggKExPTkdf
TUFYICogMlVMICsgMVVMKQojIDEwNiAiL3Vzci9saWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2luMTAv
NC4yLjEvaW5jbHVkZS9saW1pdHMuaCIgMyA0CiN1bmRlZiBMT05HX0xPTkdfTUlOCiNkZWZpbmUg
TE9OR19MT05HX01JTiAoLUxPTkdfTE9OR19NQVggLSAxTEwpCiN1bmRlZiBMT05HX0xPTkdfTUFY
CiNkZWZpbmUgTE9OR19MT05HX01BWCBfX0xPTkdfTE9OR19NQVhfXwoKCiN1bmRlZiBVTE9OR19M
T05HX01BWAojZGVmaW5lIFVMT05HX0xPTkdfTUFYIChMT05HX0xPTkdfTUFYICogMlVMTCArIDFV
TEwpCiMgMTA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL05TT2JqQ1J1bnRpbWUuaCIgMiAzCgoKZXh0ZXJuICJDIiBkb3VibGUgTlNGb3Vu
ZGF0aW9uVmVyc2lvbk51bWJlcjsKCgojZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1iZXIx
MF8wIDM5Ny40MAojZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF8xIDQyNS4wMAoj
ZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF8xXzEgNDI1LjAwCiNkZWZpbmUgTlNG
b3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzFfMiA0MjUuMDAKI2RlZmluZSBOU0ZvdW5kYXRpb25W
ZXJzaW9uTnVtYmVyMTBfMV8zIDQyNS4wMAojZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1i
ZXIxMF8xXzQgNDI1LjAwCiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzIgNDYy
LjAwCiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzJfMSA0NjIuMDAKI2RlZmlu
ZSBOU0ZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfMl8yIDQ2Mi4wMAojZGVmaW5lIE5TRm91bmRh
dGlvblZlcnNpb25OdW1iZXIxMF8yXzMgNDYyLjAwCiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lv
bk51bWJlcjEwXzJfNCA0NjIuMDAKI2RlZmluZSBOU0ZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBf
Ml81IDQ2Mi4wMAojZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF8yXzYgNDYyLjAw
CiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzJfNyA0NjIuNzAKI2RlZmluZSBO
U0ZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfMl84IDQ2Mi43MAojZGVmaW5lIE5TRm91bmRhdGlv
blZlcnNpb25OdW1iZXIxMF8zIDUwMC4wMAojZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1i
ZXIxMF8zXzEgNTAwLjAwCiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzNfMiA1
MDAuMzAKI2RlZmluZSBOU0ZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfM18zIDUwMC41NAojZGVm
aW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF8zXzQgNTAwLjU2CiNkZWZpbmUgTlNGb3Vu
ZGF0aW9uVmVyc2lvbk51bWJlcjEwXzNfNSA1MDAuNTYKI2RlZmluZSBOU0ZvdW5kYXRpb25WZXJz
aW9uTnVtYmVyMTBfM182IDUwMC41NgojZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1iZXIx
MF8zXzcgNTAwLjU2CiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzNfOCA1MDAu
NTYKI2RlZmluZSBOU0ZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfM185IDUwMC41OAojZGVmaW5l
IE5TRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF80IDU2Ny4wMAojZGVmaW5lIE5TRm91bmRhdGlv
blZlcnNpb25OdW1iZXIxMF80XzEgNTY3LjAwCiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbk51
bWJlcjEwXzRfMiA1NjcuMTIKI2RlZmluZSBOU0ZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfNF8z
IDU2Ny4yMQojZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF80XzRfSW50ZWwgNTY3
LjIzCiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzRfNF9Qb3dlclBDIDU2Ny4y
MQojZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF80XzUgNTY3LjI1CiNkZWZpbmUg
TlNGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzRfNiA1NjcuMjYKI2RlZmluZSBOU0ZvdW5kYXRp
b25WZXJzaW9uTnVtYmVyMTBfNF83IDU2Ny4yNwojZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25O
dW1iZXIxMF80XzggNTY3LjI4CiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzRf
OSA1NjcuMjkKI2RlZmluZSBOU0ZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfNF8xMCA1NjcuMjkK
I2RlZmluZSBOU0ZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfNF8xMSA1NjcuMzYKI2RlZmluZSBO
U0ZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfNSA2NzcuMDAKI2RlZmluZSBOU0ZvdW5kYXRpb25W
ZXJzaW9uTnVtYmVyMTBfNV8xIDY3Ny4xMAojZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1i
ZXIxMF81XzIgNjc3LjE1CiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzVfMyA2
NzcuMTkKI2RlZmluZSBOU0ZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfNV80IDY3Ny4xOQojZGVm
aW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF81XzUgNjc3LjIxCiNkZWZpbmUgTlNGb3Vu
ZGF0aW9uVmVyc2lvbk51bWJlcjEwXzVfNiA2NzcuMjIKI2RlZmluZSBOU0ZvdW5kYXRpb25WZXJz
aW9uTnVtYmVyMTBfNV83IDY3Ny4yNAojZGVmaW5lIE5TRm91bmRhdGlvblZlcnNpb25OdW1iZXIx
MF81XzggNjc3LjI2CiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzYgNzUxLjAw
CiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzZfMSA3NTEuMDAKI2RlZmluZSBO
U0ZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfNl8yIDc1MS4xNAojZGVmaW5lIE5TRm91bmRhdGlv
blZlcnNpb25OdW1iZXIxMF82XzMgNzUxLjIxCiMgMTc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TT2JqQ1J1bnRpbWUuaCIgMwp0eXBl
ZGVmIGxvbmcgTlNJbnRlZ2VyOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgTlNVSW50ZWdlcjsKCgoK
CgojZGVmaW5lIE5TSW50ZWdlck1heCBMT05HX01BWAojZGVmaW5lIE5TSW50ZWdlck1pbiBMT05H
X01JTgojZGVmaW5lIE5TVUludGVnZXJNYXggVUxPTkdfTUFYCgojZGVmaW5lIE5TSU5URUdFUl9E
RUZJTkVEIDEKCkBjbGFzcyBOU1N0cmluZywgUHJvdG9jb2w7CgpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU1N0cmluZ0Zyb21TZWxlY3RvcihTRUwgYVNlbGVjdG9yKTsKZXh0ZXJuICJDIiBTRUwgTlNT
ZWxlY3RvckZyb21TdHJpbmcoTlNTdHJpbmcgKmFTZWxlY3Rvck5hbWUpOwoKZXh0ZXJuICJDIiBO
U1N0cmluZyAqTlNTdHJpbmdGcm9tQ2xhc3MoQ2xhc3MgYUNsYXNzKTsKZXh0ZXJuICJDIiBDbGFz
cyBOU0NsYXNzRnJvbVN0cmluZyhOU1N0cmluZyAqYUNsYXNzTmFtZSk7CgpleHRlcm4gIkMiIE5T
U3RyaW5nICpOU1N0cmluZ0Zyb21Qcm90b2NvbChQcm90b2NvbCAqcHJvdG8pIDsKZXh0ZXJuICJD
IiBQcm90b2NvbCAqTlNQcm90b2NvbEZyb21TdHJpbmcoTlNTdHJpbmcgKm5hbWVzdHIpIDsKCmV4
dGVybiAiQyIgY29uc3QgY2hhciAqTlNHZXRTaXplQW5kQWxpZ25tZW50KGNvbnN0IGNoYXIgKnR5
cGVQdHIsIE5TVUludGVnZXIgKnNpemVwLCBOU1VJbnRlZ2VyICphbGlnbnApOwoKZXh0ZXJuICJD
IiB2b2lkIE5TTG9nKE5TU3RyaW5nICpmb3JtYXQsIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0
KF9fTlNTdHJpbmdfXywgMSwgMikpKTsKZXh0ZXJuICJDIiB2b2lkIE5TTG9ndihOU1N0cmluZyAq
Zm9ybWF0LCB2YV9saXN0IGFyZ3MpIF9fYXR0cmlidXRlX18oKGZvcm1hdChfX05TU3RyaW5nX18s
IDEsIDApKSk7CgplbnVtIF9OU0NvbXBhcmlzb25SZXN1bHQge05TT3JkZXJlZEFzY2VuZGluZyA9
IC0xLCBOU09yZGVyZWRTYW1lLCBOU09yZGVyZWREZXNjZW5kaW5nfTsKdHlwZWRlZiBOU0ludGVn
ZXIgTlNDb21wYXJpc29uUmVzdWx0OwoKCgp0eXBlZGVmIE5TQ29tcGFyaXNvblJlc3VsdCAoXk5T
Q29tcGFyYXRvcikoaWQgb2JqMSwgaWQgb2JqMik7CgplbnVtIHsKICAgIE5TRW51bWVyYXRpb25D
b25jdXJyZW50ID0gKDFVTCA8PCAwKSwKICAgIE5TRW51bWVyYXRpb25SZXZlcnNlID0gKDFVTCA8
PCAxKSwKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TRW51bWVyYXRpb25PcHRpb25zOwoKZW51bSB7
CiAgICBOU1NvcnRDb25jdXJyZW50ID0gKDFVTCA8PCAwKSwKICAgIE5TU29ydFN0YWJsZSA9ICgx
VUwgPDwgNCksCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1NvcnRPcHRpb25zOwoKCgoKZW51bSB7
TlNOb3RGb3VuZCA9IDkyMjMzNzIwMzY4NTQ3NzU4MDdMfTsKIyAyNDAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNPYmpDUnVudGltZS5o
IiAzCiNkZWZpbmUgTUlOKEEsQikgKHsgX190eXBlb2ZfXyhBKSBfX2EgPSAoQSk7IF9fdHlwZW9m
X18oQikgX19iID0gKEIpOyBfX2EgPCBfX2IgPyBfX2EgOiBfX2I7IH0pCgoKCiNkZWZpbmUgTUFY
KEEsQikgKHsgX190eXBlb2ZfXyhBKSBfX2EgPSAoQSk7IF9fdHlwZW9mX18oQikgX19iID0gKEIp
OyBfX2EgPCBfX2IgPyBfX2IgOiBfX2E7IH0pCgoKCiNkZWZpbmUgQUJTKEEpICh7IF9fdHlwZW9m
X18oQSkgX19hID0gKEEpOyBfX2EgPCAwID8gLV9fYSA6IF9fYTsgfSkKIyA2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TT2JqZWN0Lmgi
IDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvTlNab25lLmgiIDEgMwoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZCYXNlLmgiIDEgMwoKCgoKCiNk
ZWZpbmUgX19DT1JFRk9VTkRBVElPTl9DRkJBU0VfXyAxCiMgMzkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQmFzZS5oIiAzCiMg
MSAiL3Vzci9saWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9zdGRib29s
LmgiIDEgMyA0CiMgMzIgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2lu
Y2x1ZGUvc3RkYm9vbC5oIiAzIDQKI2RlZmluZSBfU1REQk9PTF9IIAojIDQzICIvdXNyL2xpYi9n
Y2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL3N0ZGJvb2wuaCIgMyA0CiNkZWZp
bmUgX0Jvb2wgYm9vbAojZGVmaW5lIGJvb2wgYm9vbAojZGVmaW5lIGZhbHNlIGZhbHNlCiNkZWZp
bmUgdHJ1ZSB0cnVlCgoKCgojZGVmaW5lIF9fYm9vbF90cnVlX2ZhbHNlX2FyZV9kZWZpbmVkIDEK
IyA0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvQ0ZCYXNlLmgiIDIgMwojIDQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkJhc2UuaCIgMwojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy8uLi9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjVHlwZXMuaCIgMSAzCiMgMTcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy8uLi9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjVHlwZXMuaCIg
MwojZGVmaW5lIF9fTUFDVFlQRVNfXyAKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0NvbmRpdGlvbmFsTWFjcm9zLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9Db25kaXRpb25hbE1hY3Jvcy5oIiAzCiNkZWZpbmUgX19DT05ESVRJT05B
TE1BQ1JPU19fIAojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db25kaXRp
b25hbE1hY3Jvcy5oIiAzCiNkZWZpbmUgVU5JVkVSU0FMX0lOVEVSRkFDRVNfVkVSU0lPTiAweDA0
MDAKIyA5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29uZGl0aW9uYWxNYWNy
b3MuaCIgMwojZGVmaW5lIFBSQUdNQV9JTVBPUlQgMAojZGVmaW5lIFBSQUdNQV9PTkNFIDAKCgoj
ZGVmaW5lIFBSQUdNQV9TVFJVQ1RfUEFDSyAxCiNkZWZpbmUgUFJBR01BX1NUUlVDVF9QQUNLUFVT
SCAxCgoKCgoKCiNkZWZpbmUgUFJBR01BX1NUUlVDVF9BTElHTiAwCgoKCgojZGVmaW5lIFBSQUdN
QV9FTlVNX1BBQ0sgMAojZGVmaW5lIFBSQUdNQV9FTlVNX0FMV0FZU0lOVCAwCiNkZWZpbmUgUFJB
R01BX0VOVU1fT1BUSU9OUyAwCiNkZWZpbmUgRk9VUl9DSEFSX0NPREUoeCkgKHgpCgojZGVmaW5l
IFRZUEVfRVhURU5ERUQgMAojIDEyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
Q29uZGl0aW9uYWxNYWNyb3MuaCIgMwojZGVmaW5lIFRZUEVfTE9OR0RPVUJMRV9JU19ET1VCTEUg
MAoKCiNkZWZpbmUgVFlQRV9MT05HTE9ORyAxCgojZGVmaW5lIFRZUEVfQk9PTCAxCgoKCgojZGVm
aW5lIEZVTkNUSU9OX1BBU0NBTCAwCiNkZWZpbmUgRlVOQ1RJT05fREVDTFNQRUMgMAojZGVmaW5l
IEZVTkNUSU9OX1dJTjMyQ0MgMAojIDM2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQ29uZGl0aW9uYWxNYWNyb3MuaCIgMwojZGVmaW5lIEVYVEVSTl9BUEkoX3R5cGUpIGV4dGVy
biBfdHlwZQojZGVmaW5lIEVYVEVSTl9BUElfQyhfdHlwZSkgZXh0ZXJuIF90eXBlCiNkZWZpbmUg
RVhURVJOX0FQSV9TVERDQUxMKF90eXBlKSBleHRlcm4gX3R5cGUKI2RlZmluZSBFWFRFUk5fQVBJ
X0NfU1REQ0FMTChfdHlwZSkgZXh0ZXJuIF90eXBlCgojZGVmaW5lIERFRklORV9BUEkoX3R5cGUp
IF90eXBlCiNkZWZpbmUgREVGSU5FX0FQSV9DKF90eXBlKSBfdHlwZQojZGVmaW5lIERFRklORV9B
UElfU1REQ0FMTChfdHlwZSkgX3R5cGUKI2RlZmluZSBERUZJTkVfQVBJX0NfU1REQ0FMTChfdHlw
ZSkgX3R5cGUKCiNkZWZpbmUgQ0FMTEJBQ0tfQVBJKF90eXBlLF9uYW1lKSBfdHlwZSAoICogX25h
bWUpCiNkZWZpbmUgQ0FMTEJBQ0tfQVBJX0MoX3R5cGUsX25hbWUpIF90eXBlICggKiBfbmFtZSkK
I2RlZmluZSBDQUxMQkFDS19BUElfU1REQ0FMTChfdHlwZSxfbmFtZSkgX3R5cGUgKCAqIF9uYW1l
KQojZGVmaW5lIENBTExCQUNLX0FQSV9DX1NURENBTEwoX3R5cGUsX25hbWUpIF90eXBlICggKiBf
bmFtZSkKI3VuZGVmIHBhc2NhbAojZGVmaW5lIHBhc2NhbCAKIyAzODkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0NvbmRpdGlvbmFsTWFjcm9zLmgiIDMKI2RlZmluZSBUQVJHRVRf
QVBJX01BQ19PUzggMAojZGVmaW5lIFRBUkdFVF9BUElfTUFDX0NBUkJPTiAxCiNkZWZpbmUgVEFS
R0VUX0FQSV9NQUNfT1NYIDEKIyA0MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L0NvbmRpdGlvbmFsTWFjcm9zLmgiIDMKI2RlZmluZSBUQVJHRVRfQ0FSQk9OIDEKIyA0NzMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbmRpdGlvbmFsTWFjcm9zLmgiIDMKI2Rl
ZmluZSBQUkFHTUFfQUxJR05fU1VQUE9SVEVEIC4uUFJBR01BX0FMSUdOX1NVUFBPUlRFRF9pc19v
YnNvbGV0ZS4uCiNkZWZpbmUgR0VORVJBVElOR1BPV0VSUEMgLi5HRU5FUkFUSU5HUE9XRVJQQ19p
c19vYnNvbGV0ZS4uCiNkZWZpbmUgR0VORVJBVElORzY4SyAuLkdFTkVSQVRJTkc2OEtfaXNfb2Jz
b2xldGUuLgojZGVmaW5lIEdFTkVSQVRJTkc2ODg4MSAuLkdFTkVSQVRJTkc2ODg4MV9pc19vYnNv
bGV0ZS4uCiNkZWZpbmUgR0VORVJBVElOR0NGTSAuLkdFTkVSQVRJTkdDRk1faXNfb2Jzb2xldGUu
LgojZGVmaW5lIENGTVNZU1RFTUNBTExTIC4uQ0ZNU1lTVEVNQ0FMTFNfaXNfb2Jzb2xldGUuLgoj
IDQ5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29uZGl0aW9uYWxNYWNyb3Mu
aCIgMwojZGVmaW5lIE9MRFJPVVRJTkVOQU1FUyAwCiMgNTMwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9Db25kaXRpb25hbE1hY3Jvcy5oIiAzCiNkZWZpbmUgT05FV09SRElOTElO
RSh3MSkgCiNkZWZpbmUgVFdPV09SRElOTElORSh3MSx3MikgCiNkZWZpbmUgVEhSRUVXT1JESU5M
SU5FKHcxLHcyLHczKSAKI2RlZmluZSBGT1VSV09SRElOTElORSh3MSx3Mix3Myx3NCkgCiNkZWZp
bmUgRklWRVdPUkRJTkxJTkUodzEsdzIsdzMsdzQsdzUpIAojZGVmaW5lIFNJWFdPUkRJTkxJTkUo
dzEsdzIsdzMsdzQsdzUsdzYpIAojZGVmaW5lIFNFVkVOV09SRElOTElORSh3MSx3Mix3Myx3NCx3
NSx3Nix3NykgCiNkZWZpbmUgRUlHSFRXT1JESU5MSU5FKHcxLHcyLHczLHc0LHc1LHc2LHc3LHc4
KSAKI2RlZmluZSBOSU5FV09SRElOTElORSh3MSx3Mix3Myx3NCx3NSx3Nix3Nyx3OCx3OSkgCiNk
ZWZpbmUgVEVOV09SRElOTElORSh3MSx3Mix3Myx3NCx3NSx3Nix3Nyx3OCx3OSx3MTApIAojZGVm
aW5lIEVMRVZFTldPUkRJTkxJTkUodzEsdzIsdzMsdzQsdzUsdzYsdzcsdzgsdzksdzEwLHcxMSkg
CiNkZWZpbmUgVFdFTFZFV09SRElOTElORSh3MSx3Mix3Myx3NCx3NSx3Nix3Nyx3OCx3OSx3MTAs
dzExLHcxMikgCiMgNTY4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db25kaXRp
b25hbE1hY3Jvcy5oIiAzCiNkZWZpbmUgT1BBUVVFX1RPT0xCT1hfU1RSVUNUUyAxCgoKCiNkZWZp
bmUgT1BBUVVFX1VQUF9UWVBFUyAxCgoKCiNkZWZpbmUgQUNDRVNTT1JfQ0FMTFNfQVJFX0ZVTkNU
SU9OUyAxCgoKCiNkZWZpbmUgQ0FMTF9OT1RfSU5fQ0FSQk9OIDAKCgoKI2RlZmluZSBNSVhFRE1P
REVfQ0FMTFNfQVJFX0ZVTkNUSU9OUyAxCiMgMjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy8uLi9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvTWFjVHlwZXMuaCIgMiAzCiMgMzQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy8uLi9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjVHlwZXMuaCIgMwpleHRlcm4gIkMiIHsKCgoj
cHJhZ21hIHBhY2socHVzaCwgMikKIyA1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzLy4uL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9NYWNUeXBlcy5oIiAzCiNkZWZpbmUgQUxMT1dfT0JTT0xFVEVfQ0FSQk9O
X01BQ01FTU9SWSAwCiNkZWZpbmUgQUxMT1dfT0JTT0xFVEVfQ0FSQk9OX09TVVRJTFMgMAojIDg1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvLi4vRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY1R5cGVzLmgi
IDMKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJbnQ4Owp0eXBlZGVmIHNpZ25lZCBjaGFyIFNJbnQ4
Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFVJbnQxNjsKdHlwZWRlZiBzaWduZWQgc2hvcnQgU0lu
dDE2OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IFVJbnQzMjsKdHlwZWRlZiBzaWduZWQgaW50IFNJ
bnQzMjsKIyAxMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy8uLi9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
TWFjVHlwZXMuaCIgMwpzdHJ1Y3Qgd2lkZSB7CiAgVUludDMyIGxvOwogIFNJbnQzMiBoaTsKfTsK
dHlwZWRlZiBzdHJ1Y3Qgd2lkZSB3aWRlOwpzdHJ1Y3QgVW5zaWduZWRXaWRlIHsKICBVSW50MzIg
bG87CiAgVUludDMyIGhpOwp9Owp0eXBlZGVmIHN0cnVjdCBVbnNpZ25lZFdpZGUgVW5zaWduZWRX
aWRlOwojIDE0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzLy4uL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9N
YWNUeXBlcy5oIiAzCiAgICAgIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBTSW50NjQ7CiAgICAg
ICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgVUludDY0OwojIDE2MyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzLy4uL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNUeXBlcy5oIiAzCnR5cGVkZWYgU0lu
dDMyIEZpeGVkOwp0eXBlZGVmIEZpeGVkICogRml4ZWRQdHI7CnR5cGVkZWYgU0ludDMyIEZyYWN0
Owp0eXBlZGVmIEZyYWN0ICogRnJhY3RQdHI7CnR5cGVkZWYgVUludDMyIFVuc2lnbmVkRml4ZWQ7
CnR5cGVkZWYgVW5zaWduZWRGaXhlZCAqIFVuc2lnbmVkRml4ZWRQdHI7CnR5cGVkZWYgc2hvcnQg
U2hvcnRGaXhlZDsKdHlwZWRlZiBTaG9ydEZpeGVkICogU2hvcnRGaXhlZFB0cjsKIyAxOTAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy8u
Li9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjVHlwZXMuaCIgMwp0
eXBlZGVmIGZsb2F0IEZsb2F0MzI7CnR5cGVkZWYgZG91YmxlIEZsb2F0NjQ7CnN0cnVjdCBGbG9h
dDgwIHsKICAgIFNJbnQxNiBleHA7CiAgICBVSW50MTYgbWFuWzRdOwp9Owp0eXBlZGVmIHN0cnVj
dCBGbG9hdDgwIEZsb2F0ODA7CgpzdHJ1Y3QgRmxvYXQ5NiB7CiAgICBTSW50MTYgZXhwWzJdOwog
ICAgVUludDE2IG1hbls0XTsKfTsKdHlwZWRlZiBzdHJ1Y3QgRmxvYXQ5NiBGbG9hdDk2OwpzdHJ1
Y3QgRmxvYXQzMlBvaW50IHsKICAgIEZsb2F0MzIgeDsKICAgIEZsb2F0MzIgeTsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgRmxvYXQzMlBvaW50IEZsb2F0MzJQb2ludDsKIyAyMTggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy8uLi9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjVHlwZXMuaCIgMwp0eXBlZGVmIGNoYXIg
KiBQdHI7CnR5cGVkZWYgUHRyICogSGFuZGxlOwp0eXBlZGVmIGxvbmcgU2l6ZTsKIyAyNDggIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy8u
Li9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjVHlwZXMuaCIgMwp0
eXBlZGVmIFNJbnQxNiBPU0VycjsKdHlwZWRlZiBTSW50MzIgT1NTdGF0dXM7CnR5cGVkZWYgdm9p
ZCAqIExvZ2ljYWxBZGRyZXNzOwp0eXBlZGVmIGNvbnN0IHZvaWQgKiBDb25zdExvZ2ljYWxBZGRy
ZXNzOwp0eXBlZGVmIHZvaWQgKiBQaHlzaWNhbEFkZHJlc3M7CnR5cGVkZWYgVUludDggKiBCeXRl
UHRyOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgQnl0ZUNvdW50Owp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgQnl0ZU9mZnNldDsKdHlwZWRlZiBTSW50MzIgRHVyYXRpb247CnR5cGVkZWYgVW5zaWduZWRX
aWRlIEFic29sdXRlVGltZTsKdHlwZWRlZiBVSW50MzIgT3B0aW9uQml0czsKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIEl0ZW1Db3VudDsKdHlwZWRlZiBVSW50MzIgUEJWZXJzaW9uOwp0eXBlZGVmIFNJ
bnQxNiBTY3JpcHRDb2RlOwp0eXBlZGVmIFNJbnQxNiBMYW5nQ29kZTsKdHlwZWRlZiBTSW50MTYg
UmVnaW9uQ29kZTsKdHlwZWRlZiBVSW50MzIgRm91ckNoYXJDb2RlOwp0eXBlZGVmIEZvdXJDaGFy
Q29kZSBPU1R5cGU7CnR5cGVkZWYgRm91ckNoYXJDb2RlIFJlc1R5cGU7CnR5cGVkZWYgT1NUeXBl
ICogT1NUeXBlUHRyOwp0eXBlZGVmIFJlc1R5cGUgKiBSZXNUeXBlUHRyOwojIDI3OSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzLy4uL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNUeXBlcy5oIiAzCnR5cGVk
ZWYgdW5zaWduZWQgY2hhciBCb29sZWFuOwojIDI5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzLy4uL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNUeXBlcy5oIiAzCnR5cGVkZWYgbG9uZyAoICogUHJvY1B0
cikoKTsKdHlwZWRlZiB2b2lkICggKiBSZWdpc3RlcjY4a1Byb2NQdHIpKCk7CgoKCgp0eXBlZGVm
IFByb2NQdHIgVW5pdmVyc2FsUHJvY1B0cjsKCgp0eXBlZGVmIFByb2NQdHIgKiBQcm9jSGFuZGxl
Owp0eXBlZGVmIFVuaXZlcnNhbFByb2NQdHIgKiBVbml2ZXJzYWxQcm9jSGFuZGxlOwojIDMxNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
Ly4uL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNUeXBlcy5oIiAz
CnR5cGVkZWYgdm9pZCAqIFBSZWZDb247Cgp0eXBlZGVmIHZvaWQgKiBVUmVmQ29uOwp0eXBlZGVm
IHZvaWQgKiBTUmVmQ29uOwojIDM0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzLy4uL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9NYWNUeXBlcy5oIiAzCmVudW0gewogIG5vRXJyID0gMAp9OwoKZW51bSB7CiAg
a05pbE9wdGlvbnMgPSAwCn07CgojZGVmaW5lIGtJbnZhbGlkSUQgMAplbnVtIHsKICBrVmFyaWFi
bGVMZW5ndGhBcnJheSA9IDEKfTsKCmVudW0gewogIGtVbmtub3duVHlwZSA9IDB4M0YzRjNGM0YK
fTsKIyA0MTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvSGVhZGVycy8uLi9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFj
VHlwZXMuaCIgMwp0eXBlZGVmIFVJbnQzMiBVbmljb2RlU2NhbGFyVmFsdWU7CnR5cGVkZWYgVUlu
dDMyIFVURjMyQ2hhcjsKdHlwZWRlZiBVSW50MTYgVW5pQ2hhcjsKdHlwZWRlZiBVSW50MTYgVVRG
MTZDaGFyOwp0eXBlZGVmIFVJbnQ4IFVURjhDaGFyOwp0eXBlZGVmIFVuaUNoYXIgKiBVbmlDaGFy
UHRyOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVW5pQ2hhckNvdW50Owp0eXBlZGVmIFVuaUNoYXJD
b3VudCAqIFVuaUNoYXJDb3VudFB0cjsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFN0cjI1NVsyNTZd
Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgU3RyNjNbNjRdOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
U3RyMzJbMzNdOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgU3RyMzFbMzJdOwp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgU3RyMjdbMjhdOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgU3RyMTVbMTZdOwojIDQz
OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9IZWFk
ZXJzLy4uL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNUeXBlcy5o
IiAzCnR5cGVkZWYgdW5zaWduZWQgY2hhciBTdHIzMkZpZWxkWzM0XTsKIyA0NDggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy8uLi9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjVHlwZXMuaCIgMwp0eXBlZGVm
IFN0cjYzIFN0ckZpbGVOYW1lOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgKiBTdHJpbmdQdHI7CnR5
cGVkZWYgU3RyaW5nUHRyICogU3RyaW5nSGFuZGxlOwp0eXBlZGVmIGNvbnN0IHVuc2lnbmVkIGNo
YXIgKiBDb25zdFN0cmluZ1B0cjsKdHlwZWRlZiBjb25zdCB1bnNpZ25lZCBjaGFyICogQ29uc3RT
dHIyNTVQYXJhbTsKdHlwZWRlZiBjb25zdCB1bnNpZ25lZCBjaGFyICogQ29uc3RTdHI2M1BhcmFt
Owp0eXBlZGVmIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBDb25zdFN0cjMyUGFyYW07CnR5cGVkZWYg
Y29uc3QgdW5zaWduZWQgY2hhciAqIENvbnN0U3RyMzFQYXJhbTsKdHlwZWRlZiBjb25zdCB1bnNp
Z25lZCBjaGFyICogQ29uc3RTdHIyN1BhcmFtOwp0eXBlZGVmIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KiBDb25zdFN0cjE1UGFyYW07CnR5cGVkZWYgQ29uc3RTdHI2M1BhcmFtIENvbnN0U3RyRmlsZU5h
bWVQYXJhbTsKCmlubGluZSB1bnNpZ25lZCBjaGFyIFN0ckxlbmd0aChDb25zdFN0cjI1NVBhcmFt
IHN0cmluZykgeyByZXR1cm4gKCpzdHJpbmcpOyB9CiMgNDc1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvLi4vRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY1R5cGVzLmgiIDMKc3RydWN0IFByb2Nlc3NTZXJp
YWxOdW1iZXIgewogIFVJbnQzMiBoaWdoTG9uZ09mUFNOOwogIFVJbnQzMiBsb3dMb25nT2ZQU047
Cn07CnR5cGVkZWYgc3RydWN0IFByb2Nlc3NTZXJpYWxOdW1iZXIgUHJvY2Vzc1NlcmlhbE51bWJl
cjsKdHlwZWRlZiBQcm9jZXNzU2VyaWFsTnVtYmVyICogUHJvY2Vzc1NlcmlhbE51bWJlclB0cjsK
IyA0OTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy8uLi9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjVHlw
ZXMuaCIgMwpzdHJ1Y3QgUG9pbnQgewogIHNob3J0IHY7CiAgc2hvcnQgaDsKfTsKdHlwZWRlZiBz
dHJ1Y3QgUG9pbnQgUG9pbnQ7CnR5cGVkZWYgUG9pbnQgKiBQb2ludFB0cjsKc3RydWN0IFJlY3Qg
ewogIHNob3J0IHRvcDsKICBzaG9ydCBsZWZ0OwogIHNob3J0IGJvdHRvbTsKICBzaG9ydCByaWdo
dDsKfTsKdHlwZWRlZiBzdHJ1Y3QgUmVjdCBSZWN0Owp0eXBlZGVmIFJlY3QgKiBSZWN0UHRyOwpz
dHJ1Y3QgRml4ZWRQb2ludCB7CiAgRml4ZWQgeDsKICBGaXhlZCB5Owp9Owp0eXBlZGVmIHN0cnVj
dCBGaXhlZFBvaW50IEZpeGVkUG9pbnQ7CnN0cnVjdCBGaXhlZFJlY3QgewogIEZpeGVkIGxlZnQ7
CiAgRml4ZWQgdG9wOwogIEZpeGVkIHJpZ2h0OwogIEZpeGVkIGJvdHRvbTsKfTsKdHlwZWRlZiBz
dHJ1Y3QgRml4ZWRSZWN0IEZpeGVkUmVjdDsKCnR5cGVkZWYgc2hvcnQgQ2hhclBhcmFtZXRlcjsK
ZW51bSB7CiAgbm9ybWFsID0gMCwKICBib2xkID0gMSwKICBpdGFsaWMgPSAyLAogIHVuZGVybGlu
ZSA9IDQsCiAgb3V0bGluZSA9IDgsCiAgc2hhZG93ID0gMHgxMCwKICBjb25kZW5zZSA9IDB4MjAs
CiAgZXh0ZW5kID0gMHg0MAp9OwoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFN0eWxlOwp0eXBlZGVm
IHNob3J0IFN0eWxlUGFyYW1ldGVyOwp0eXBlZGVmIFN0eWxlIFN0eWxlRmllbGQ7CiMgNTUzICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
Li4vRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY1R5cGVzLmgiIDMK
dHlwZWRlZiBTSW50MzIgVGltZVZhbHVlOwp0eXBlZGVmIFNJbnQzMiBUaW1lU2NhbGU7CnR5cGVk
ZWYgd2lkZSBDb21wVGltZVZhbHVlOwp0eXBlZGVmIFNJbnQ2NCBUaW1lVmFsdWU2NDsKdHlwZWRl
ZiBzdHJ1Y3QgVGltZUJhc2VSZWNvcmQqIFRpbWVCYXNlOwpzdHJ1Y3QgVGltZVJlY29yZCB7CiAg
Q29tcFRpbWVWYWx1ZSB2YWx1ZTsKICBUaW1lU2NhbGUgc2NhbGU7CiAgVGltZUJhc2UgYmFzZTsK
fTsKdHlwZWRlZiBzdHJ1Y3QgVGltZVJlY29yZCBUaW1lUmVjb3JkOwojIDYwNSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzLy4uL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNUeXBlcy5oIiAzCnN0cnVjdCBO
dW1WZXJzaW9uIHsKCiAgVUludDggbm9uUmVsUmV2OwogIFVJbnQ4IHN0YWdlOwogIFVJbnQ4IG1p
bm9yQW5kQnVnUmV2OwogIFVJbnQ4IG1ham9yUmV2Owp9Owp0eXBlZGVmIHN0cnVjdCBOdW1WZXJz
aW9uIE51bVZlcnNpb247CgoKZW51bSB7CgogIGRldmVsb3BTdGFnZSA9IDB4MjAsCiAgYWxwaGFT
dGFnZSA9IDB4NDAsCiAgYmV0YVN0YWdlID0gMHg2MCwKICBmaW5hbFN0YWdlID0gMHg4MAp9OwoK
dW5pb24gTnVtVmVyc2lvblZhcmlhbnQgewoKICBOdW1WZXJzaW9uIHBhcnRzOwogIFVJbnQzMiB3
aG9sZTsKfTsKdHlwZWRlZiB1bmlvbiBOdW1WZXJzaW9uVmFyaWFudCBOdW1WZXJzaW9uVmFyaWFu
dDsKdHlwZWRlZiBOdW1WZXJzaW9uVmFyaWFudCAqIE51bVZlcnNpb25WYXJpYW50UHRyOwp0eXBl
ZGVmIE51bVZlcnNpb25WYXJpYW50UHRyICogTnVtVmVyc2lvblZhcmlhbnRIYW5kbGU7CnN0cnVj
dCBWZXJzUmVjIHsKCiAgTnVtVmVyc2lvbiBudW1lcmljVmVyc2lvbjsKICBzaG9ydCBjb3VudHJ5
Q29kZTsKICBTdHIyNTUgc2hvcnRWZXJzaW9uOwogIFN0cjI1NSByZXNlcnZlZDsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgVmVyc1JlYyBWZXJzUmVjOwp0eXBlZGVmIFZlcnNSZWMgKiBWZXJzUmVjUHRyOwp0
eXBlZGVmIFZlcnNSZWNQdHIgKiBWZXJzUmVjSG5kbDsKCgoKCgp0eXBlZGVmIFVJbnQ4IEJ5dGU7
CnR5cGVkZWYgU0ludDggU2lnbmVkQnl0ZTsKdHlwZWRlZiB3aWRlICogV2lkZVB0cjsKdHlwZWRl
ZiBVbnNpZ25lZFdpZGUgKiBVbnNpZ25lZFdpZGVQdHI7CnR5cGVkZWYgRmxvYXQ4MCBleHRlbmRl
ZDgwOwp0eXBlZGVmIEZsb2F0OTYgZXh0ZW5kZWQ5NjsKdHlwZWRlZiBTSW50OCBWSFNlbGVjdDsK
IyA2NjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy8uLi9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjVHlw
ZXMuaCIgMwpleHRlcm4gdm9pZApEZWJ1Z2dlcih2b2lkKSA7CiMgNjc4ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvLi4vRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY1R5cGVzLmgiIDMKZXh0ZXJuIHZvaWQK
RGVidWdTdHIoQ29uc3RTdHIyNTVQYXJhbSBkZWJ1Z2dlck1zZykgOwojIDcyNSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzLy4uL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNUeXBlcy5oIiAzCmV4dGVybiB2
b2lkClN5c0JyZWFrKHZvaWQpIDsKIyA3MzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy8uLi9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvTWFjVHlwZXMuaCIgMwpleHRlcm4gdm9pZApTeXNCcmVha1N0cihDb25z
dFN0cjI1NVBhcmFtIGRlYnVnZ2VyTXNnKSA7CiMgNzQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvLi4vRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL01hY1R5cGVzLmgiIDMKZXh0ZXJuIHZvaWQKU3lzQnJlYWtG
dW5jKENvbnN0U3RyMjU1UGFyYW0gZGVidWdnZXJNc2cpIDsKIyA3NjAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy8uLi9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjVHlwZXMuaCIgMwojcHJhZ21hIHBhY2so
cG9wKQoKCn0KIyA0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZCYXNlLmgiIDIgMwojIDk3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkJhc2UuaCIgMwojZGVm
aW5lIENGX0VYVEVSTl9DX0JFR0lOIGV4dGVybiAiQyIgewojZGVmaW5lIENGX0VYVEVSTl9DX0VO
RCB9CiMgMTE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9DRkJhc2UuaCIgMwojZGVmaW5lIENGX0VYUE9SVCBleHRlcm4KCgpleHRl
cm4gIkMiIHsKIyAxMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL0NGQmFzZS5oIiAzCiNkZWZpbmUgVFJVRSAxCgoKCiNkZWZpbmUg
RkFMU0UgMAoKCgoKI2RlZmluZSBDRl9JTkxJTkUgc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1
dGVfXygoYWx3YXlzX2lubGluZSkpCiMgMTU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkJhc2UuaCIgMwojZGVmaW5lIENGX1JF
VFVSTlNfUkVUQUlORUQgCgoKCmV4dGVybiBkb3VibGUga0NGQ29yZUZvdW5kYXRpb25WZXJzaW9u
TnVtYmVyOwoKCiNkZWZpbmUga0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfMCAxOTYu
NDAKI2RlZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF8wXzMgMTk2LjUwCiNk
ZWZpbmUga0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfMSAyMjYuMDAKI2RlZmluZSBr
Q0ZDb3JlRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF8xXzEgMjI2LjAwCgojZGVmaW5lIGtDRkNv
cmVGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzFfMiAyMjcuMjAKI2RlZmluZSBrQ0ZDb3JlRm91
bmRhdGlvblZlcnNpb25OdW1iZXIxMF8xXzMgMjI3LjIwCiNkZWZpbmUga0NGQ29yZUZvdW5kYXRp
b25WZXJzaW9uTnVtYmVyMTBfMV80IDIyNy4zMAojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVy
c2lvbk51bWJlcjEwXzIgMjYzLjAwCiNkZWZpbmUga0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVt
YmVyMTBfMl8xIDI2My4xMAojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEw
XzJfMiAyNjMuMTAKI2RlZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF8yXzMg
MjYzLjMwCiNkZWZpbmUga0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfMl80IDI2My4z
MAojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzJfNSAyNjMuNTAKI2Rl
ZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF8yXzYgMjYzLjUwCiNkZWZpbmUg
a0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfMl83IDI2My41MAojZGVmaW5lIGtDRkNv
cmVGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzJfOCAyNjMuNTAKI2RlZmluZSBrQ0ZDb3JlRm91
bmRhdGlvblZlcnNpb25OdW1iZXIxMF8zIDI5OS4wMAojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9u
VmVyc2lvbk51bWJlcjEwXzNfMSAyOTkuMDAKI2RlZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNp
b25OdW1iZXIxMF8zXzIgMjk5LjAwCiNkZWZpbmUga0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVt
YmVyMTBfM18zIDI5OS4zMAojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEw
XzNfNCAyOTkuMzEKI2RlZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF8zXzUg
Mjk5LjMxCiNkZWZpbmUga0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfM182IDI5OS4z
MgojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzNfNyAyOTkuMzMKI2Rl
ZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF8zXzggMjk5LjMzCiNkZWZpbmUg
a0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfM185IDI5OS4zNQojZGVmaW5lIGtDRkNv
cmVGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzQgMzY4LjAwCiNkZWZpbmUga0NGQ29yZUZvdW5k
YXRpb25WZXJzaW9uTnVtYmVyMTBfNF8xIDM2OC4xMAojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9u
VmVyc2lvbk51bWJlcjEwXzRfMiAzNjguMTEKI2RlZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNp
b25OdW1iZXIxMF80XzMgMzY4LjE4CiNkZWZpbmUga0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVt
YmVyMTBfNF80X0ludGVsIDM2OC4yNgojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVyc2lvbk51
bWJlcjEwXzRfNF9Qb3dlclBDIDM2OC4yNQojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVyc2lv
bk51bWJlcjEwXzRfNV9JbnRlbCAzNjguMjYKI2RlZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNp
b25OdW1iZXIxMF80XzVfUG93ZXJQQyAzNjguMjUKI2RlZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZl
cnNpb25OdW1iZXIxMF80XzZfSW50ZWwgMzY4LjI2CiNkZWZpbmUga0NGQ29yZUZvdW5kYXRpb25W
ZXJzaW9uTnVtYmVyMTBfNF82X1Bvd2VyUEMgMzY4LjI1CiNkZWZpbmUga0NGQ29yZUZvdW5kYXRp
b25WZXJzaW9uTnVtYmVyMTBfNF83IDM2OC4yNwojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVy
c2lvbk51bWJlcjEwXzRfOCAzNjguMjcKI2RlZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNpb25O
dW1iZXIxMF80XzkgMzY4LjI4CiNkZWZpbmUga0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVtYmVy
MTBfNF8xMCAzNjguMjgKI2RlZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF80
XzExIDM2OC4zMQojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzUgNDc2
LjAwCiNkZWZpbmUga0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfNV8xIDQ3Ni4wMAoj
ZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzVfMiA0NzYuMTAKI2RlZmlu
ZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF81XzMgNDc2LjEzCiNkZWZpbmUga0NG
Q29yZUZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfNV80IDQ3Ni4xNAojZGVmaW5lIGtDRkNvcmVG
b3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzVfNSA0NzYuMTUKI2RlZmluZSBrQ0ZDb3JlRm91bmRh
dGlvblZlcnNpb25OdW1iZXIxMF81XzYgNDc2LjE3CiNkZWZpbmUga0NGQ29yZUZvdW5kYXRpb25W
ZXJzaW9uTnVtYmVyMTBfNV83IDQ3Ni4xOAojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVyc2lv
bk51bWJlcjEwXzVfOCA0NzYuMTkKI2RlZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNpb25OdW1i
ZXIxMF82IDU1MC4wMAojZGVmaW5lIGtDRkNvcmVGb3VuZGF0aW9uVmVyc2lvbk51bWJlcjEwXzZf
MSA1NTAuMDAKI2RlZmluZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNpb25OdW1iZXIxMF82XzIgNTUw
LjEzCiNkZWZpbmUga0NGQ29yZUZvdW5kYXRpb25WZXJzaW9uTnVtYmVyMTBfNl8zIDU1MC4xOQoj
IDIyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvQ0ZCYXNlLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBsb25nIENGVHlwZUlEOwp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgQ0ZPcHRpb25GbGFnczsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIENG
SGFzaENvZGU7CnR5cGVkZWYgc2lnbmVkIGxvbmcgQ0ZJbmRleDsKCgp0eXBlZGVmIGNvbnN0IHZv
aWQgKiBDRlR5cGVSZWY7Cgp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJp
bmdSZWY7CnR5cGVkZWYgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRk11dGFibGVTdHJpbmdSZWY7CgoK
CgoKCnR5cGVkZWYgQ0ZUeXBlUmVmIENGUHJvcGVydHlMaXN0UmVmOwoKCmVudW0gewogICAga0NG
Q29tcGFyZUxlc3NUaGFuID0gLTEsCiAgICBrQ0ZDb21wYXJlRXF1YWxUbyA9IDAsCiAgICBrQ0ZD
b21wYXJlR3JlYXRlclRoYW4gPSAxCn07CnR5cGVkZWYgQ0ZJbmRleCBDRkNvbXBhcmlzb25SZXN1
bHQ7CgoKdHlwZWRlZiBDRkNvbXBhcmlzb25SZXN1bHQgKCpDRkNvbXBhcmF0b3JGdW5jdGlvbiko
Y29uc3Qgdm9pZCAqdmFsMSwgY29uc3Qgdm9pZCAqdmFsMiwgdm9pZCAqY29udGV4dCk7CgoKCmVu
dW0gewogICAga0NGTm90Rm91bmQgPSAtMQp9OwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDRklu
ZGV4IGxvY2F0aW9uOwogICAgQ0ZJbmRleCBsZW5ndGg7Cn0gQ0ZSYW5nZTsKCgpzdGF0aWMgX19p
bmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgQ0ZSYW5nZSBDRlJhbmdlTWFr
ZShDRkluZGV4IGxvYywgQ0ZJbmRleCBsZW4pIHsKICAgIENGUmFuZ2UgcmFuZ2U7CiAgICByYW5n
ZS5sb2NhdGlvbiA9IGxvYzsKICAgIHJhbmdlLmxlbmd0aCA9IGxlbjsKICAgIHJldHVybiByYW5n
ZTsKfQoKCgoKCmV4dGVybgpDRlJhbmdlIF9fQ0ZSYW5nZU1ha2UoQ0ZJbmRleCBsb2MsIENGSW5k
ZXggbGVuKTsKCgoKCgp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGTnVsbCAqIENGTnVsbFJlZjsK
CmV4dGVybgpDRlR5cGVJRCBDRk51bGxHZXRUeXBlSUQodm9pZCk7CgpleHRlcm4KY29uc3QgQ0ZO
dWxsUmVmIGtDRk51bGw7CiMgMzA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91
bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkJhc2UuaCIgMwp0eXBlZGVmIGNvbnN0IHN0cnVj
dCBfX0NGQWxsb2NhdG9yICogQ0ZBbGxvY2F0b3JSZWY7CgoKZXh0ZXJuCmNvbnN0IENGQWxsb2Nh
dG9yUmVmIGtDRkFsbG9jYXRvckRlZmF1bHQ7CgoKZXh0ZXJuCmNvbnN0IENGQWxsb2NhdG9yUmVm
IGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQ7CgoKCgoKCgpleHRlcm4KY29uc3QgQ0ZBbGxvY2F0
b3JSZWYga0NGQWxsb2NhdG9yTWFsbG9jOwoKCgoKCmV4dGVybgpjb25zdCBDRkFsbG9jYXRvclJl
ZiBrQ0ZBbGxvY2F0b3JNYWxsb2Nab25lIDsKCgoKCgpleHRlcm4KY29uc3QgQ0ZBbGxvY2F0b3JS
ZWYga0NGQWxsb2NhdG9yTnVsbDsKCgoKCgpleHRlcm4KY29uc3QgQ0ZBbGxvY2F0b3JSZWYga0NG
QWxsb2NhdG9yVXNlQ29udGV4dDsKCnR5cGVkZWYgY29uc3Qgdm9pZCAqICgqQ0ZBbGxvY2F0b3JS
ZXRhaW5DYWxsQmFjaykoY29uc3Qgdm9pZCAqaW5mbyk7CnR5cGVkZWYgdm9pZCAoKkNGQWxsb2Nh
dG9yUmVsZWFzZUNhbGxCYWNrKShjb25zdCB2b2lkICppbmZvKTsKdHlwZWRlZiBDRlN0cmluZ1Jl
ZiAoKkNGQWxsb2NhdG9yQ29weURlc2NyaXB0aW9uQ2FsbEJhY2spKGNvbnN0IHZvaWQgKmluZm8p
Owp0eXBlZGVmIHZvaWQgKiAoKkNGQWxsb2NhdG9yQWxsb2NhdGVDYWxsQmFjaykoQ0ZJbmRleCBh
bGxvY1NpemUsIENGT3B0aW9uRmxhZ3MgaGludCwgdm9pZCAqaW5mbyk7CnR5cGVkZWYgdm9pZCAq
ICgqQ0ZBbGxvY2F0b3JSZWFsbG9jYXRlQ2FsbEJhY2spKHZvaWQgKnB0ciwgQ0ZJbmRleCBuZXdz
aXplLCBDRk9wdGlvbkZsYWdzIGhpbnQsIHZvaWQgKmluZm8pOwp0eXBlZGVmIHZvaWQgKCpDRkFs
bG9jYXRvckRlYWxsb2NhdGVDYWxsQmFjaykodm9pZCAqcHRyLCB2b2lkICppbmZvKTsKdHlwZWRl
ZiBDRkluZGV4ICgqQ0ZBbGxvY2F0b3JQcmVmZXJyZWRTaXplQ2FsbEJhY2spKENGSW5kZXggc2l6
ZSwgQ0ZPcHRpb25GbGFncyBoaW50LCB2b2lkICppbmZvKTsKdHlwZWRlZiBzdHJ1Y3QgewogICAg
Q0ZJbmRleCB2ZXJzaW9uOwogICAgdm9pZCAqIGluZm87CiAgICBDRkFsbG9jYXRvclJldGFpbkNh
bGxCYWNrIHJldGFpbjsKICAgIENGQWxsb2NhdG9yUmVsZWFzZUNhbGxCYWNrIHJlbGVhc2U7CiAg
ICBDRkFsbG9jYXRvckNvcHlEZXNjcmlwdGlvbkNhbGxCYWNrIGNvcHlEZXNjcmlwdGlvbjsKICAg
IENGQWxsb2NhdG9yQWxsb2NhdGVDYWxsQmFjayBhbGxvY2F0ZTsKICAgIENGQWxsb2NhdG9yUmVh
bGxvY2F0ZUNhbGxCYWNrIHJlYWxsb2NhdGU7CiAgICBDRkFsbG9jYXRvckRlYWxsb2NhdGVDYWxs
QmFjayBkZWFsbG9jYXRlOwogICAgQ0ZBbGxvY2F0b3JQcmVmZXJyZWRTaXplQ2FsbEJhY2sgcHJl
ZmVycmVkU2l6ZTsKfSBDRkFsbG9jYXRvckNvbnRleHQ7CgpleHRlcm4KQ0ZUeXBlSUQgQ0ZBbGxv
Y2F0b3JHZXRUeXBlSUQodm9pZCk7CiMgMzk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkJhc2UuaCIgMwpleHRlcm4Kdm9pZCBD
RkFsbG9jYXRvclNldERlZmF1bHQoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yKTsKCmV4dGVybgpD
RkFsbG9jYXRvclJlZiBDRkFsbG9jYXRvckdldERlZmF1bHQodm9pZCk7CgpleHRlcm4KQ0ZBbGxv
Y2F0b3JSZWYgQ0ZBbGxvY2F0b3JDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkFs
bG9jYXRvckNvbnRleHQgKmNvbnRleHQpOwoKZXh0ZXJuCnZvaWQgKkNGQWxsb2NhdG9yQWxsb2Nh
dGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkluZGV4IHNpemUsIENGT3B0aW9uRmxhZ3Mg
aGludCk7CgpleHRlcm4Kdm9pZCAqQ0ZBbGxvY2F0b3JSZWFsbG9jYXRlKENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciwgdm9pZCAqcHRyLCBDRkluZGV4IG5ld3NpemUsIENGT3B0aW9uRmxhZ3MgaGlu
dCk7CgpleHRlcm4Kdm9pZCBDRkFsbG9jYXRvckRlYWxsb2NhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yLCB2b2lkICpwdHIpOwoKZXh0ZXJuCkNGSW5kZXggQ0ZBbGxvY2F0b3JHZXRQcmVmZXJy
ZWRTaXplRm9yU2l6ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGSW5kZXggc2l6ZSwgQ0ZP
cHRpb25GbGFncyBoaW50KTsKCmV4dGVybgp2b2lkIENGQWxsb2NhdG9yR2V0Q29udGV4dChDRkFs
bG9jYXRvclJlZiBhbGxvY2F0b3IsIENGQWxsb2NhdG9yQ29udGV4dCAqY29udGV4dCk7CgoKCgpl
eHRlcm4KQ0ZUeXBlSUQgQ0ZHZXRUeXBlSUQoQ0ZUeXBlUmVmIGNmKTsKCmV4dGVybgpDRlN0cmlu
Z1JlZiBDRkNvcHlUeXBlSUREZXNjcmlwdGlvbihDRlR5cGVJRCB0eXBlX2lkKTsKCmV4dGVybgpD
RlR5cGVSZWYgQ0ZSZXRhaW4oQ0ZUeXBlUmVmIGNmKTsKCmV4dGVybgp2b2lkIENGUmVsZWFzZShD
RlR5cGVSZWYgY2YpOwoKZXh0ZXJuCkNGSW5kZXggQ0ZHZXRSZXRhaW5Db3VudChDRlR5cGVSZWYg
Y2YpOwoKZXh0ZXJuCkNGVHlwZVJlZiBDRk1ha2VDb2xsZWN0YWJsZShDRlR5cGVSZWYgY2YpIDsK
CmV4dGVybgpCb29sZWFuIENGRXF1YWwoQ0ZUeXBlUmVmIGNmMSwgQ0ZUeXBlUmVmIGNmMik7Cgpl
eHRlcm4KQ0ZIYXNoQ29kZSBDRkhhc2goQ0ZUeXBlUmVmIGNmKTsKCmV4dGVybgpDRlN0cmluZ1Jl
ZiBDRkNvcHlEZXNjcmlwdGlvbihDRlR5cGVSZWYgY2YpOwoKZXh0ZXJuCkNGQWxsb2NhdG9yUmVm
IENGR2V0QWxsb2NhdG9yKENGVHlwZVJlZiBjZik7Cgp9CiMgNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1pvbmUuaCIgMiAzCgpAY2xh
c3MgTlNTdHJpbmc7Cgp0eXBlZGVmIHN0cnVjdCBfTlNab25lIE5TWm9uZTsKCgpleHRlcm4gIkMi
IE5TWm9uZSAqTlNEZWZhdWx0TWFsbG9jWm9uZSh2b2lkKTsKZXh0ZXJuICJDIiBOU1pvbmUgKk5T
Q3JlYXRlWm9uZShOU1VJbnRlZ2VyIHN0YXJ0U2l6ZSwgTlNVSW50ZWdlciBncmFudWxhcml0eSwg
Qk9PTCBjYW5GcmVlKTsKZXh0ZXJuICJDIiB2b2lkIE5TUmVjeWNsZVpvbmUoTlNab25lICp6b25l
KTsKZXh0ZXJuICJDIiB2b2lkIE5TU2V0Wm9uZU5hbWUoTlNab25lICp6b25lLCBOU1N0cmluZyAq
bmFtZSk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TWm9uZU5hbWUoTlNab25lICp6b25lKTsKZXh0
ZXJuICJDIiBOU1pvbmUgKk5TWm9uZUZyb21Qb2ludGVyKHZvaWQgKnB0cik7CgpleHRlcm4gIkMi
IHZvaWQgKk5TWm9uZU1hbGxvYyhOU1pvbmUgKnpvbmUsIE5TVUludGVnZXIgc2l6ZSk7CmV4dGVy
biAiQyIgdm9pZCAqTlNab25lQ2FsbG9jKE5TWm9uZSAqem9uZSwgTlNVSW50ZWdlciBudW1FbGVt
cywgTlNVSW50ZWdlciBieXRlU2l6ZSk7CmV4dGVybiAiQyIgdm9pZCAqTlNab25lUmVhbGxvYyhO
U1pvbmUgKnpvbmUsIHZvaWQgKnB0ciwgTlNVSW50ZWdlciBzaXplKTsKZXh0ZXJuICJDIiB2b2lk
IE5TWm9uZUZyZWUoTlNab25lICp6b25lLCB2b2lkICpwdHIpOwojIDMyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TWm9uZS5oIiAzCmVu
dW0gewogICAgTlNTY2FubmVkT3B0aW9uID0gKDFVTCA8PCAwKSwKICAgIE5TQ29sbGVjdG9yRGlz
YWJsZWRPcHRpb24gPSAoMVVMIDw8IDEpLAp9OwoKZXh0ZXJuICJDIiB2b2lkICogTlNBbGxvY2F0
ZUNvbGxlY3RhYmxlKE5TVUludGVnZXIgc2l6ZSwgTlNVSW50ZWdlciBvcHRpb25zKSA7CmV4dGVy
biAiQyIgdm9pZCAqIE5TUmVhbGxvY2F0ZUNvbGxlY3RhYmxlKHZvaWQgKnB0ciwgTlNVSW50ZWdl
ciBzaXplLCBOU1VJbnRlZ2VyIG9wdGlvbnMpIDsKIyA0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1pvbmUuaCIgMwpzdGF0aWMgX19p
bmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgaWQgTlNNYWtlQ29sbGVjdGFi
bGUoQ0ZUeXBlUmVmIGNmKSB7CiAgICByZXR1cm4gY2YgPyAoaWQpQ0ZNYWtlQ29sbGVjdGFibGUo
Y2YpIDogX19udWxsOwp9CgoKZXh0ZXJuICJDIiBOU1VJbnRlZ2VyIE5TUGFnZVNpemUodm9pZCk7
CmV4dGVybiAiQyIgTlNVSW50ZWdlciBOU0xvZ1BhZ2VTaXplKHZvaWQpOwpleHRlcm4gIkMiIE5T
VUludGVnZXIgTlNSb3VuZFVwVG9NdWx0aXBsZU9mUGFnZVNpemUoTlNVSW50ZWdlciBieXRlcyk7
CmV4dGVybiAiQyIgTlNVSW50ZWdlciBOU1JvdW5kRG93blRvTXVsdGlwbGVPZlBhZ2VTaXplKE5T
VUludGVnZXIgYnl0ZXMpOwpleHRlcm4gIkMiIHZvaWQgKk5TQWxsb2NhdGVNZW1vcnlQYWdlcyhO
U1VJbnRlZ2VyIGJ5dGVzKTsKZXh0ZXJuICJDIiB2b2lkIE5TRGVhbGxvY2F0ZU1lbW9yeVBhZ2Vz
KHZvaWQgKnB0ciwgTlNVSW50ZWdlciBieXRlcyk7CmV4dGVybiAiQyIgdm9pZCBOU0NvcHlNZW1v
cnlQYWdlcyhjb25zdCB2b2lkICpzb3VyY2UsIHZvaWQgKmRlc3QsIE5TVUludGVnZXIgYnl0ZXMp
OwpleHRlcm4gIkMiIE5TVUludGVnZXIgTlNSZWFsTWVtb3J5QXZhaWxhYmxlKHZvaWQpOwojIDcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
TlNPYmplY3QuaCIgMiAzCgpAY2xhc3MgTlNJbnZvY2F0aW9uLCBOU01ldGhvZFNpZ25hdHVyZSwg
TlNDb2RlciwgTlNTdHJpbmcsIE5TRW51bWVyYXRvcjsKQGNsYXNzIFByb3RvY29sOwoKCgpAcHJv
dG9jb2wgTlNPYmplY3QKCi0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0OwotIChOU1VJbnRlZ2Vy
KWhhc2g7CgotIChDbGFzcylzdXBlcmNsYXNzOwotIChDbGFzcyljbGFzczsKLSAoaWQpc2VsZjsK
LSAoTlNab25lICopem9uZTsKCi0gKGlkKXBlcmZvcm1TZWxlY3RvcjooU0VMKWFTZWxlY3RvcjsK
LSAoaWQpcGVyZm9ybVNlbGVjdG9yOihTRUwpYVNlbGVjdG9yIHdpdGhPYmplY3Q6KGlkKW9iamVj
dDsKLSAoaWQpcGVyZm9ybVNlbGVjdG9yOihTRUwpYVNlbGVjdG9yIHdpdGhPYmplY3Q6KGlkKW9i
amVjdDEgd2l0aE9iamVjdDooaWQpb2JqZWN0MjsKCi0gKEJPT0wpaXNQcm94eTsKCi0gKEJPT0wp
aXNLaW5kT2ZDbGFzczooQ2xhc3MpYUNsYXNzOwotIChCT09MKWlzTWVtYmVyT2ZDbGFzczooQ2xh
c3MpYUNsYXNzOwotIChCT09MKWNvbmZvcm1zVG9Qcm90b2NvbDooUHJvdG9jb2wgKilhUHJvdG9j
b2w7CgotIChCT09MKXJlc3BvbmRzVG9TZWxlY3RvcjooU0VMKWFTZWxlY3RvcjsKCi0gKGlkKXJl
dGFpbjsKLSAob25ld2F5IHZvaWQpcmVsZWFzZTsKLSAoaWQpYXV0b3JlbGVhc2U7Ci0gKE5TVUlu
dGVnZXIpcmV0YWluQ291bnQ7CgotIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uOwoKQGVuZAoKQHBy
b3RvY29sIE5TQ29weWluZwoKLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lOwoKQGVu
ZAoKQHByb3RvY29sIE5TTXV0YWJsZUNvcHlpbmcKCi0gKGlkKW11dGFibGVDb3B5V2l0aFpvbmU6
KE5TWm9uZSAqKXpvbmU7CgpAZW5kCgpAcHJvdG9jb2wgTlNDb2RpbmcKCi0gKHZvaWQpZW5jb2Rl
V2l0aENvZGVyOihOU0NvZGVyICopYUNvZGVyOwotIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVy
ICopYURlY29kZXI7CgpAZW5kCgoKCkBpbnRlcmZhY2UgTlNPYmplY3QgPE5TT2JqZWN0PiB7CiAg
ICBDbGFzcyBpc2E7Cn0KCisgKHZvaWQpbG9hZDsKCisgKHZvaWQpaW5pdGlhbGl6ZTsKLSAoaWQp
aW5pdDsKCisgKGlkKW5ldzsKKyAoaWQpYWxsb2NXaXRoWm9uZTooTlNab25lICopem9uZTsKKyAo
aWQpYWxsb2M7Ci0gKHZvaWQpZGVhbGxvYzsKCi0gKHZvaWQpZmluYWxpemUgOwoKLSAoaWQpY29w
eTsKLSAoaWQpbXV0YWJsZUNvcHk7CgorIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmU7
CisgKGlkKW11dGFibGVDb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmU7CgorIChDbGFzcylzdXBl
cmNsYXNzOworIChDbGFzcyljbGFzczsKKyAoQk9PTClpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3Rv
cjooU0VMKWFTZWxlY3RvcjsKKyAoQk9PTCljb25mb3Jtc1RvUHJvdG9jb2w6KFByb3RvY29sICop
cHJvdG9jb2w7Ci0gKElNUCltZXRob2RGb3JTZWxlY3RvcjooU0VMKWFTZWxlY3RvcjsKKyAoSU1Q
KWluc3RhbmNlTWV0aG9kRm9yU2VsZWN0b3I6KFNFTClhU2VsZWN0b3I7Ci0gKHZvaWQpZG9lc05v
dFJlY29nbml6ZVNlbGVjdG9yOihTRUwpYVNlbGVjdG9yOwoKLSAoaWQpZm9yd2FyZGluZ1Rhcmdl
dEZvclNlbGVjdG9yOihTRUwpYVNlbGVjdG9yOwotICh2b2lkKWZvcndhcmRJbnZvY2F0aW9uOihO
U0ludm9jYXRpb24gKilhbkludm9jYXRpb247Ci0gKE5TTWV0aG9kU2lnbmF0dXJlICopbWV0aG9k
U2lnbmF0dXJlRm9yU2VsZWN0b3I6KFNFTClhU2VsZWN0b3I7CgorIChOU01ldGhvZFNpZ25hdHVy
ZSAqKWluc3RhbmNlTWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6KFNFTClhU2VsZWN0b3I7Cgor
IChOU1N0cmluZyAqKWRlc2NyaXB0aW9uOwoKKyAoQk9PTClpc1N1YmNsYXNzT2ZDbGFzczooQ2xh
c3MpYUNsYXNzIDsKCisgKEJPT0wpcmVzb2x2ZUNsYXNzTWV0aG9kOihTRUwpc2VsIDsKKyAoQk9P
TClyZXNvbHZlSW5zdGFuY2VNZXRob2Q6KFNFTClzZWwgOwoKQGVuZAoKQGludGVyZmFjZSBOU09i
amVjdCAoTlNDb2Rlck1ldGhvZHMpCgorIChOU0ludGVnZXIpdmVyc2lvbjsKKyAodm9pZClzZXRW
ZXJzaW9uOihOU0ludGVnZXIpYVZlcnNpb247Ci0gKENsYXNzKWNsYXNzRm9yQ29kZXI7Ci0gKGlk
KXJlcGxhY2VtZW50T2JqZWN0Rm9yQ29kZXI6KE5TQ29kZXIgKilhQ29kZXI7Ci0gKGlkKWF3YWtl
QWZ0ZXJVc2luZ0NvZGVyOihOU0NvZGVyICopYURlY29kZXI7CgpAZW5kCgoKQGludGVyZmFjZSBO
U09iamVjdCAoTlNEZXByZWNhdGVkTWV0aG9kcykKCisgKHZvaWQpcG9zZUFzQ2xhc3M6KENsYXNz
KWFDbGFzcyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSkKCl9fYXR0cmlidXRlX18oKHVuYXZh
aWxhYmxlKSkKCjsKCkBlbmQKCgoKCgoKCkBwcm90b2NvbCBOU0Rpc2NhcmRhYmxlQ29udGVudApA
cmVxdWlyZWQKLSAoQk9PTCliZWdpbkNvbnRlbnRBY2Nlc3M7Ci0gKHZvaWQpZW5kQ29udGVudEFj
Y2VzczsKLSAodm9pZClkaXNjYXJkQ29udGVudElmUG9zc2libGU7Ci0gKEJPT0wpaXNDb250ZW50
RGlzY2FyZGVkOwpAZW5kCgpAaW50ZXJmYWNlIE5TT2JqZWN0IChOU0Rpc2NhcmRhYmxlQ29udGVu
dFByb3h5KQotIChpZClhdXRvQ29udGVudEFjY2Vzc2luZ1Byb3h5IDsKQGVuZAoKCgoKCmV4dGVy
biAiQyIgaWQgTlNBbGxvY2F0ZU9iamVjdChDbGFzcyBhQ2xhc3MsIE5TVUludGVnZXIgZXh0cmFC
eXRlcywgTlNab25lICp6b25lKTsKCmV4dGVybiAiQyIgdm9pZCBOU0RlYWxsb2NhdGVPYmplY3Qo
aWQgb2JqZWN0KTsKCmV4dGVybiAiQyIgaWQgTlNDb3B5T2JqZWN0KGlkIG9iamVjdCwgTlNVSW50
ZWdlciBleHRyYUJ5dGVzLCBOU1pvbmUgKnpvbmUpOwoKZXh0ZXJuICJDIiBCT09MIE5TU2hvdWxk
UmV0YWluV2l0aFpvbmUoaWQgYW5PYmplY3QsIE5TWm9uZSAqcmVxdWVzdGVkWm9uZSk7CgpleHRl
cm4gIkMiIHZvaWQgTlNJbmNyZW1lbnRFeHRyYVJlZkNvdW50KGlkIG9iamVjdCk7CgpleHRlcm4g
IkMiIEJPT0wgTlNEZWNyZW1lbnRFeHRyYVJlZkNvdW50V2FzWmVybyhpZCBvYmplY3QpOwoKZXh0
ZXJuICJDIiBOU1VJbnRlZ2VyIE5TRXh0cmFSZWZDb3VudChpZCBvYmplY3QpOwojIDkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1Jlc3BvbmRl
ci5oIiAyIDMKCkBjbGFzcyBOU0FycmF5LCBOU0Vycm9yLCBOU0V2ZW50LCBOU01lbnUsIE5TVW5k
b01hbmFnZXIsIE5TV2luZG93OwoKQGludGVyZmFjZSBOU1Jlc3BvbmRlciA6IE5TT2JqZWN0IDxO
U0NvZGluZz4KewoKICAgIGlkIF9uZXh0UmVzcG9uZGVyOwp9CgotIChOU1Jlc3BvbmRlciAqKW5l
eHRSZXNwb25kZXI7Ci0gKHZvaWQpc2V0TmV4dFJlc3BvbmRlcjooTlNSZXNwb25kZXIgKilhUmVz
cG9uZGVyOwotIChCT09MKXRyeVRvUGVyZm9ybTooU0VMKWFuQWN0aW9uIHdpdGg6KGlkKWFuT2Jq
ZWN0OwotIChCT09MKXBlcmZvcm1LZXlFcXVpdmFsZW50OihOU0V2ZW50ICopdGhlRXZlbnQ7Ci0g
KGlkKXZhbGlkUmVxdWVzdG9yRm9yU2VuZFR5cGU6KE5TU3RyaW5nICopc2VuZFR5cGUgcmV0dXJu
VHlwZTooTlNTdHJpbmcgKilyZXR1cm5UeXBlOwotICh2b2lkKW1vdXNlRG93bjooTlNFdmVudCAq
KXRoZUV2ZW50OwotICh2b2lkKXJpZ2h0TW91c2VEb3duOihOU0V2ZW50ICopdGhlRXZlbnQ7Ci0g
KHZvaWQpb3RoZXJNb3VzZURvd246KE5TRXZlbnQgKil0aGVFdmVudDsKLSAodm9pZCltb3VzZVVw
OihOU0V2ZW50ICopdGhlRXZlbnQ7Ci0gKHZvaWQpcmlnaHRNb3VzZVVwOihOU0V2ZW50ICopdGhl
RXZlbnQ7Ci0gKHZvaWQpb3RoZXJNb3VzZVVwOihOU0V2ZW50ICopdGhlRXZlbnQ7Ci0gKHZvaWQp
bW91c2VNb3ZlZDooTlNFdmVudCAqKXRoZUV2ZW50OwotICh2b2lkKW1vdXNlRHJhZ2dlZDooTlNF
dmVudCAqKXRoZUV2ZW50OwotICh2b2lkKXNjcm9sbFdoZWVsOihOU0V2ZW50ICopdGhlRXZlbnQ7
Ci0gKHZvaWQpcmlnaHRNb3VzZURyYWdnZWQ6KE5TRXZlbnQgKil0aGVFdmVudDsKLSAodm9pZClv
dGhlck1vdXNlRHJhZ2dlZDooTlNFdmVudCAqKXRoZUV2ZW50OwotICh2b2lkKW1vdXNlRW50ZXJl
ZDooTlNFdmVudCAqKXRoZUV2ZW50OwotICh2b2lkKW1vdXNlRXhpdGVkOihOU0V2ZW50ICopdGhl
RXZlbnQ7Ci0gKHZvaWQpa2V5RG93bjooTlNFdmVudCAqKXRoZUV2ZW50OwotICh2b2lkKWtleVVw
OihOU0V2ZW50ICopdGhlRXZlbnQ7Ci0gKHZvaWQpZmxhZ3NDaGFuZ2VkOihOU0V2ZW50ICopdGhl
RXZlbnQ7CgotICh2b2lkKXRhYmxldFBvaW50OihOU0V2ZW50ICopdGhlRXZlbnQ7Ci0gKHZvaWQp
dGFibGV0UHJveGltaXR5OihOU0V2ZW50ICopdGhlRXZlbnQ7CgoKLSAodm9pZCljdXJzb3JVcGRh
dGU6KE5TRXZlbnQgKilldmVudDsKCgoKLSAodm9pZCltYWduaWZ5V2l0aEV2ZW50OihOU0V2ZW50
ICopZXZlbnQgOwotICh2b2lkKXJvdGF0ZVdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50IDsKLSAo
dm9pZClzd2lwZVdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50IDsKLSAodm9pZCliZWdpbkdlc3R1
cmVXaXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudCA7Ci0gKHZvaWQpZW5kR2VzdHVyZVdpdGhFdmVu
dDooTlNFdmVudCAqKWV2ZW50IDsKCgoKCi0gKHZvaWQpdG91Y2hlc0JlZ2FuV2l0aEV2ZW50OihO
U0V2ZW50ICopZXZlbnQgOwoKCgotICh2b2lkKXRvdWNoZXNNb3ZlZFdpdGhFdmVudDooTlNFdmVu
dCAqKWV2ZW50IDsKCgoKLSAodm9pZCl0b3VjaGVzRW5kZWRXaXRoRXZlbnQ6KE5TRXZlbnQgKill
dmVudCA7CgoKCi0gKHZvaWQpdG91Y2hlc0NhbmNlbGxlZFdpdGhFdmVudDooTlNFdmVudCAqKWV2
ZW50IDsKCi0gKHZvaWQpbm9SZXNwb25kZXJGb3I6KFNFTClldmVudFNlbGVjdG9yOwotIChCT09M
KWFjY2VwdHNGaXJzdFJlc3BvbmRlcjsKLSAoQk9PTCliZWNvbWVGaXJzdFJlc3BvbmRlcjsKLSAo
Qk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcjsKCi0gKHZvaWQpaW50ZXJwcmV0S2V5RXZlbnRzOihO
U0FycmF5ICopZXZlbnRBcnJheTsKLSAodm9pZClmbHVzaEJ1ZmZlcmVkS2V5RXZlbnRzOwoKLSAo
dm9pZClzZXRNZW51OihOU01lbnUgKiltZW51OwotIChOU01lbnUgKiltZW51OwoKLSAodm9pZClz
aG93Q29udGV4dEhlbHA6KGlkKXNlbmRlcjsKCi0gKHZvaWQpaGVscFJlcXVlc3RlZDooTlNFdmVu
dCAqKWV2ZW50UHRyOwoKCi0gKEJPT0wpc2hvdWxkQmVUcmVhdGVkQXNJbmtFdmVudDooTlNFdmVu
dCAqKXRoZUV2ZW50OwoKQGVuZAoKQGludGVyZmFjZSBOU1Jlc3BvbmRlcihOU0tleWJvYXJkVUkp
Ci0gKEJPT0wpcGVyZm9ybU1uZW1vbmljOihOU1N0cmluZyAqKXRoZVN0cmluZzsKQGVuZAoKQGlu
dGVyZmFjZSBOU1Jlc3BvbmRlciAoTlNTdGFuZGFyZEtleUJpbmRpbmdNZXRob2RzKQoKCgoKCi0g
KHZvaWQpaW5zZXJ0VGV4dDooaWQpaW5zZXJ0U3RyaW5nOwoKCi0gKHZvaWQpZG9Db21tYW5kQnlT
ZWxlY3RvcjooU0VMKWFTZWxlY3RvcjsKCgoKCgoKLSAodm9pZCltb3ZlRm9yd2FyZDooaWQpc2Vu
ZGVyOwotICh2b2lkKW1vdmVSaWdodDooaWQpc2VuZGVyOwotICh2b2lkKW1vdmVCYWNrd2FyZDoo
aWQpc2VuZGVyOwotICh2b2lkKW1vdmVMZWZ0OihpZClzZW5kZXI7Ci0gKHZvaWQpbW92ZVVwOihp
ZClzZW5kZXI7Ci0gKHZvaWQpbW92ZURvd246KGlkKXNlbmRlcjsKLSAodm9pZCltb3ZlV29yZEZv
cndhcmQ6KGlkKXNlbmRlcjsKLSAodm9pZCltb3ZlV29yZEJhY2t3YXJkOihpZClzZW5kZXI7Ci0g
KHZvaWQpbW92ZVRvQmVnaW5uaW5nT2ZMaW5lOihpZClzZW5kZXI7Ci0gKHZvaWQpbW92ZVRvRW5k
T2ZMaW5lOihpZClzZW5kZXI7Ci0gKHZvaWQpbW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6KGlk
KXNlbmRlcjsKLSAodm9pZCltb3ZlVG9FbmRPZlBhcmFncmFwaDooaWQpc2VuZGVyOwotICh2b2lk
KW1vdmVUb0VuZE9mRG9jdW1lbnQ6KGlkKXNlbmRlcjsKLSAodm9pZCltb3ZlVG9CZWdpbm5pbmdP
ZkRvY3VtZW50OihpZClzZW5kZXI7Ci0gKHZvaWQpcGFnZURvd246KGlkKXNlbmRlcjsKLSAodm9p
ZClwYWdlVXA6KGlkKXNlbmRlcjsKLSAodm9pZCljZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVh
OihpZClzZW5kZXI7CgotICh2b2lkKW1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjooaWQp
c2VuZGVyOwotICh2b2lkKW1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uOihpZClzZW5kZXI7
Ci0gKHZvaWQpbW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uOihpZClzZW5kZXI7Ci0g
KHZvaWQpbW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjooaWQpc2VuZGVyOwotICh2
b2lkKW1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbjooaWQpc2VuZGVyOwotICh2b2lkKW1vdmVEb3du
QW5kTW9kaWZ5U2VsZWN0aW9uOihpZClzZW5kZXI7CgotICh2b2lkKW1vdmVUb0JlZ2lubmluZ09m
TGluZUFuZE1vZGlmeVNlbGVjdGlvbjooaWQpc2VuZGVyOwotICh2b2lkKW1vdmVUb0VuZE9mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbjooaWQpc2VuZGVyOwotICh2b2lkKW1vdmVUb0JlZ2lubmluZ09m
UGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uOihpZClzZW5kZXI7Ci0gKHZvaWQpbW92ZVRvRW5k
T2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb246KGlkKXNlbmRlcjsKLSAodm9pZCltb3ZlVG9F
bmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uOihpZClzZW5kZXI7Ci0gKHZvaWQpbW92ZVRv
QmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbjooaWQpc2VuZGVyOwotICh2b2lk
KXBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uOihpZClzZW5kZXI7Ci0gKHZvaWQpcGFnZVVwQW5k
TW9kaWZ5U2VsZWN0aW9uOihpZClzZW5kZXI7Ci0gKHZvaWQpbW92ZVBhcmFncmFwaEZvcndhcmRB
bmRNb2RpZnlTZWxlY3Rpb246KGlkKXNlbmRlcjsKLSAodm9pZCltb3ZlUGFyYWdyYXBoQmFja3dh
cmRBbmRNb2RpZnlTZWxlY3Rpb246KGlkKXNlbmRlcjsKCgotICh2b2lkKW1vdmVXb3JkUmlnaHQ6
KGlkKXNlbmRlcjsKLSAodm9pZCltb3ZlV29yZExlZnQ6KGlkKXNlbmRlcjsKLSAodm9pZCltb3Zl
UmlnaHRBbmRNb2RpZnlTZWxlY3Rpb246KGlkKXNlbmRlcjsKLSAodm9pZCltb3ZlTGVmdEFuZE1v
ZGlmeVNlbGVjdGlvbjooaWQpc2VuZGVyOwotICh2b2lkKW1vdmVXb3JkUmlnaHRBbmRNb2RpZnlT
ZWxlY3Rpb246KGlkKXNlbmRlcjsKLSAodm9pZCltb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rp
b246KGlkKXNlbmRlcjsKCgoKLSAodm9pZCltb3ZlVG9MZWZ0RW5kT2ZMaW5lOihpZClzZW5kZXI7
Ci0gKHZvaWQpbW92ZVRvUmlnaHRFbmRPZkxpbmU6KGlkKXNlbmRlcjsKLSAodm9pZCltb3ZlVG9M
ZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uOihpZClzZW5kZXI7Ci0gKHZvaWQpbW92ZVRv
UmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb246KGlkKXNlbmRlcjsKCgotICh2b2lkKXNj
cm9sbFBhZ2VVcDooaWQpc2VuZGVyOwotICh2b2lkKXNjcm9sbFBhZ2VEb3duOihpZClzZW5kZXI7
Ci0gKHZvaWQpc2Nyb2xsTGluZVVwOihpZClzZW5kZXI7Ci0gKHZvaWQpc2Nyb2xsTGluZURvd246
KGlkKXNlbmRlcjsKCi0gKHZvaWQpc2Nyb2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50OihpZClzZW5k
ZXI7Ci0gKHZvaWQpc2Nyb2xsVG9FbmRPZkRvY3VtZW50OihpZClzZW5kZXI7CgoKCi0gKHZvaWQp
dHJhbnNwb3NlOihpZClzZW5kZXI7Ci0gKHZvaWQpdHJhbnNwb3NlV29yZHM6KGlkKXNlbmRlcjsK
CgoKLSAodm9pZClzZWxlY3RBbGw6KGlkKXNlbmRlcjsKLSAodm9pZClzZWxlY3RQYXJhZ3JhcGg6
KGlkKXNlbmRlcjsKLSAodm9pZClzZWxlY3RMaW5lOihpZClzZW5kZXI7Ci0gKHZvaWQpc2VsZWN0
V29yZDooaWQpc2VuZGVyOwoKCgotICh2b2lkKWluZGVudDooaWQpc2VuZGVyOwotICh2b2lkKWlu
c2VydFRhYjooaWQpc2VuZGVyOwotICh2b2lkKWluc2VydEJhY2t0YWI6KGlkKXNlbmRlcjsKLSAo
dm9pZClpbnNlcnROZXdsaW5lOihpZClzZW5kZXI7Ci0gKHZvaWQpaW5zZXJ0UGFyYWdyYXBoU2Vw
YXJhdG9yOihpZClzZW5kZXI7Ci0gKHZvaWQpaW5zZXJ0TmV3bGluZUlnbm9yaW5nRmllbGRFZGl0
b3I6KGlkKXNlbmRlcjsKLSAodm9pZClpbnNlcnRUYWJJZ25vcmluZ0ZpZWxkRWRpdG9yOihpZClz
ZW5kZXI7CgotICh2b2lkKWluc2VydExpbmVCcmVhazooaWQpc2VuZGVyOwotICh2b2lkKWluc2Vy
dENvbnRhaW5lckJyZWFrOihpZClzZW5kZXI7CgoKLSAodm9pZClpbnNlcnRTaW5nbGVRdW90ZUln
bm9yaW5nU3Vic3RpdHV0aW9uOihpZClzZW5kZXI7Ci0gKHZvaWQpaW5zZXJ0RG91YmxlUXVvdGVJ
Z25vcmluZ1N1YnN0aXR1dGlvbjooaWQpc2VuZGVyOwoKCgoKLSAodm9pZCljaGFuZ2VDYXNlT2ZM
ZXR0ZXI6KGlkKXNlbmRlcjsKLSAodm9pZCl1cHBlcmNhc2VXb3JkOihpZClzZW5kZXI7Ci0gKHZv
aWQpbG93ZXJjYXNlV29yZDooaWQpc2VuZGVyOwotICh2b2lkKWNhcGl0YWxpemVXb3JkOihpZClz
ZW5kZXI7CgoKCi0gKHZvaWQpZGVsZXRlRm9yd2FyZDooaWQpc2VuZGVyOwotICh2b2lkKWRlbGV0
ZUJhY2t3YXJkOihpZClzZW5kZXI7CgotICh2b2lkKWRlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2lu
Z1ByZXZpb3VzQ2hhcmFjdGVyOihpZClzZW5kZXI7CgotICh2b2lkKWRlbGV0ZVdvcmRGb3J3YXJk
OihpZClzZW5kZXI7Ci0gKHZvaWQpZGVsZXRlV29yZEJhY2t3YXJkOihpZClzZW5kZXI7Ci0gKHZv
aWQpZGVsZXRlVG9CZWdpbm5pbmdPZkxpbmU6KGlkKXNlbmRlcjsKLSAodm9pZClkZWxldGVUb0Vu
ZE9mTGluZTooaWQpc2VuZGVyOwotICh2b2lkKWRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6
KGlkKXNlbmRlcjsKLSAodm9pZClkZWxldGVUb0VuZE9mUGFyYWdyYXBoOihpZClzZW5kZXI7Cgot
ICh2b2lkKXlhbms6KGlkKXNlbmRlcjsKCgoKLSAodm9pZCljb21wbGV0ZTooaWQpc2VuZGVyOwoK
CgotICh2b2lkKXNldE1hcms6KGlkKXNlbmRlcjsKLSAodm9pZClkZWxldGVUb01hcms6KGlkKXNl
bmRlcjsKLSAodm9pZClzZWxlY3RUb01hcms6KGlkKXNlbmRlcjsKLSAodm9pZClzd2FwV2l0aE1h
cms6KGlkKXNlbmRlcjsKCgoKCi0gKHZvaWQpY2FuY2VsT3BlcmF0aW9uOihpZClzZW5kZXI7CgoK
CgoKLSAodm9pZCltYWtlQmFzZVdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsOihpZClzZW5kZXI7Ci0g
KHZvaWQpbWFrZUJhc2VXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQ6KGlkKXNlbmRlcjsKLSAo
dm9pZCltYWtlQmFzZVdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDooaWQpc2VuZGVyOwoKLSAo
dm9pZCltYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsOihpZClzZW5kZXI7Ci0gKHZvaWQp
bWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQ6KGlkKXNlbmRlcjsKLSAodm9pZClt
YWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDooaWQpc2VuZGVyOwoKCkBlbmQKCkBp
bnRlcmZhY2UgTlNSZXNwb25kZXIoTlNVbmRvU3VwcG9ydCkKLSAoTlNVbmRvTWFuYWdlciAqKXVu
ZG9NYW5hZ2VyOwpAZW5kCgoKCkBpbnRlcmZhY2UgTlNSZXNwb25kZXIoTlNFcnJvclByZXNlbnRh
dGlvbikKIyAyODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU1Jlc3BvbmRlci5oIiAzCi0gKHZvaWQpcHJlc2VudEVycm9yOihOU0Vycm9yICop
ZXJyb3IgbW9kYWxGb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93IGRlbGVnYXRlOihpZClkZWxl
Z2F0ZSBkaWRQcmVzZW50U2VsZWN0b3I6KFNFTClkaWRQcmVzZW50U2VsZWN0b3IgY29udGV4dElu
Zm86KHZvaWQgKiljb250ZXh0SW5mbzsKCgoKCgoKCi0gKEJPT0wpcHJlc2VudEVycm9yOihOU0Vy
cm9yICopZXJyb3I7CgoKCgoKLSAoTlNFcnJvciAqKXdpbGxQcmVzZW50RXJyb3I6KE5TRXJyb3Ig
KillcnJvcjsKCkBlbmQKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvTlNXaW5kb3dDb250cm9sbGVyLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU05pYkRlY2xhcmF0aW9u
cy5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvTlNOaWJEZWNsYXJhdGlvbnMuaCIgMwojZGVmaW5lIElCT3V0bGV0IAoKCgojZGVm
aW5lIElCQWN0aW9uIHZvaWQKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0
LmZyYW1ld29yay9IZWFkZXJzL05TV2luZG93Q29udHJvbGxlci5oIiAyIDMKCkBjbGFzcyBOU0Fy
cmF5LCBOU0RvY3VtZW50LCBOU1dpbmRvdzsKCkBpbnRlcmZhY2UgTlNXaW5kb3dDb250cm9sbGVy
IDogTlNSZXNwb25kZXIgPE5TQ29kaW5nPiB7CiAgICBAcHJpdmF0ZQogICAgTlNXaW5kb3cgKl93
aW5kb3c7CiAgICBOU1N0cmluZyAqX3dpbmRvd05pYk5hbWU7CiAgICBOU0RvY3VtZW50ICpfZG9j
dW1lbnQ7CiAgICBOU0FycmF5ICpfdG9wTGV2ZWxPYmplY3RzOwogICAgaWQgX293bmVyOwogICAg
c3RydWN0IF9fd2NGbGFncyB7CiAgICAgICAgdW5zaWduZWQgaW50IHNob3VsZENsb3NlRG9jdW1l
bnQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2hvdWxkQ2FzY2FkZToxOwogICAgICAgIHVuc2ln
bmVkIGludCBuaWJJc0xvYWRlZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBuaWJOYW1lSXNQYXRo
OjE7CiAgICAgICAgdW5zaWduZWQgaW50IFJFU0VSVkVEOjI4OwogICAgfSBfd2NGbGFnczsKICAg
IE5TU3RyaW5nICpfZnJhbWVBdXRvc2F2ZU5hbWU7CiAgICBpZCBfbW9yZVZhcnM7Cn0KCi0gKGlk
KWluaXRXaXRoV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdzsKCgotIChpZClpbml0V2l0aFdpbmRv
d05pYk5hbWU6KE5TU3RyaW5nICopd2luZG93TmliTmFtZTsKLSAoaWQpaW5pdFdpdGhXaW5kb3dO
aWJOYW1lOihOU1N0cmluZyAqKXdpbmRvd05pYk5hbWUgb3duZXI6KGlkKW93bmVyOwotIChpZClp
bml0V2l0aFdpbmRvd05pYlBhdGg6KE5TU3RyaW5nICopd2luZG93TmliUGF0aCBvd25lcjooaWQp
b3duZXI7CgoKCgoKCi0gKE5TU3RyaW5nICopd2luZG93TmliTmFtZTsKCgotIChOU1N0cmluZyAq
KXdpbmRvd05pYlBhdGg7CgoKLSAoaWQpb3duZXI7CgoKLSAodm9pZClzZXRXaW5kb3dGcmFtZUF1
dG9zYXZlTmFtZTooTlNTdHJpbmcgKiluYW1lOwotIChOU1N0cmluZyAqKXdpbmRvd0ZyYW1lQXV0
b3NhdmVOYW1lOwoKCi0gKHZvaWQpc2V0U2hvdWxkQ2FzY2FkZVdpbmRvd3M6KEJPT0wpZmxhZzsK
LSAoQk9PTClzaG91bGRDYXNjYWRlV2luZG93czsKCgoKCgoKLSAoaWQpZG9jdW1lbnQ7CgoKLSAo
dm9pZClzZXREb2N1bWVudDooTlNEb2N1bWVudCAqKWRvY3VtZW50OwoKCi0gKHZvaWQpc2V0RG9j
dW1lbnRFZGl0ZWQ6KEJPT0wpZGlydHlGbGFnOwoKCi0gKHZvaWQpc2V0U2hvdWxkQ2xvc2VEb2N1
bWVudDooQk9PTClmbGFnOwotIChCT09MKXNob3VsZENsb3NlRG9jdW1lbnQ7CgoKCgoKCi0gKHZv
aWQpc2V0V2luZG93OihOU1dpbmRvdyAqKXdpbmRvdzsKCgotIChOU1dpbmRvdyAqKXdpbmRvdzsK
CgotICh2b2lkKXN5bmNocm9uaXplV2luZG93VGl0bGVXaXRoRG9jdW1lbnROYW1lOwoKCi0gKE5T
U3RyaW5nICopd2luZG93VGl0bGVGb3JEb2N1bWVudERpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRp
c3BsYXlOYW1lOwoKCi0gKHZvaWQpY2xvc2U7CgoKLSAodm9pZClzaG93V2luZG93OihpZClzZW5k
ZXI7CgoKCgoKCi0gKEJPT0wpaXNXaW5kb3dMb2FkZWQ7CgoKLSAodm9pZCl3aW5kb3dXaWxsTG9h
ZDsKLSAodm9pZCl3aW5kb3dEaWRMb2FkOwoKCi0gKHZvaWQpbG9hZFdpbmRvdzsKCgpAZW5kCiMg
MjkgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyLmgiIDIKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNTY3JlZW4uaCIgMSAzCiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU2NyZWVuLmgiIDMKIyAxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TR2Vv
bWV0cnkuaCIgMSAzCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVmFsdWUuaCIgMSAzCgoKCgoKCkBjbGFzcyBOU1N0cmlu
ZywgTlNEaWN0aW9uYXJ5OwoKQGludGVyZmFjZSBOU1ZhbHVlIDogTlNPYmplY3QgPE5TQ29weWlu
ZywgTlNDb2Rpbmc+CgotICh2b2lkKWdldFZhbHVlOih2b2lkICopdmFsdWU7Ci0gKGNvbnN0IGNo
YXIgKilvYmpDVHlwZTsKCkBlbmQKCkBpbnRlcmZhY2UgTlNWYWx1ZSAoTlNWYWx1ZUNyZWF0aW9u
KQoKLSAoaWQpaW5pdFdpdGhCeXRlczooY29uc3Qgdm9pZCAqKXZhbHVlIG9iakNUeXBlOihjb25z
dCBjaGFyICopdHlwZTsKKyAoTlNWYWx1ZSAqKXZhbHVlV2l0aEJ5dGVzOihjb25zdCB2b2lkICop
dmFsdWUgb2JqQ1R5cGU6KGNvbnN0IGNoYXIgKil0eXBlOworIChOU1ZhbHVlICopdmFsdWU6KGNv
bnN0IHZvaWQgKil2YWx1ZSB3aXRoT2JqQ1R5cGU6KGNvbnN0IGNoYXIgKil0eXBlOwoKQGVuZAoK
QGludGVyZmFjZSBOU1ZhbHVlIChOU1ZhbHVlRXh0ZW5zaW9uTWV0aG9kcykKCisgKE5TVmFsdWUg
Kil2YWx1ZVdpdGhOb25yZXRhaW5lZE9iamVjdDooaWQpYW5PYmplY3Q7Ci0gKGlkKW5vbnJldGFp
bmVkT2JqZWN0VmFsdWU7CgorIChOU1ZhbHVlICopdmFsdWVXaXRoUG9pbnRlcjooY29uc3Qgdm9p
ZCAqKXBvaW50ZXI7Ci0gKHZvaWQgKilwb2ludGVyVmFsdWU7CgotIChCT09MKWlzRXF1YWxUb1Zh
bHVlOihOU1ZhbHVlICopdmFsdWU7CgpAZW5kCgpAaW50ZXJmYWNlIE5TTnVtYmVyIDogTlNWYWx1
ZQoKLSAoY2hhciljaGFyVmFsdWU7Ci0gKHVuc2lnbmVkIGNoYXIpdW5zaWduZWRDaGFyVmFsdWU7
Ci0gKHNob3J0KXNob3J0VmFsdWU7Ci0gKHVuc2lnbmVkIHNob3J0KXVuc2lnbmVkU2hvcnRWYWx1
ZTsKLSAoaW50KWludFZhbHVlOwotICh1bnNpZ25lZCBpbnQpdW5zaWduZWRJbnRWYWx1ZTsKLSAo
bG9uZylsb25nVmFsdWU7Ci0gKHVuc2lnbmVkIGxvbmcpdW5zaWduZWRMb25nVmFsdWU7Ci0gKGxv
bmcgbG9uZylsb25nTG9uZ1ZhbHVlOwotICh1bnNpZ25lZCBsb25nIGxvbmcpdW5zaWduZWRMb25n
TG9uZ1ZhbHVlOwotIChmbG9hdClmbG9hdFZhbHVlOwotIChkb3VibGUpZG91YmxlVmFsdWU7Ci0g
KEJPT0wpYm9vbFZhbHVlOwoKLSAoTlNJbnRlZ2VyKWludGVnZXJWYWx1ZTsKLSAoTlNVSW50ZWdl
cil1bnNpZ25lZEludGVnZXJWYWx1ZTsKCgotIChOU1N0cmluZyAqKXN0cmluZ1ZhbHVlOwoKLSAo
TlNDb21wYXJpc29uUmVzdWx0KWNvbXBhcmU6KE5TTnVtYmVyICopb3RoZXJOdW1iZXI7CgotIChC
T09MKWlzRXF1YWxUb051bWJlcjooTlNOdW1iZXIgKiludW1iZXI7CgotIChOU1N0cmluZyAqKWRl
c2NyaXB0aW9uV2l0aExvY2FsZTooaWQpbG9jYWxlOwoKQGVuZAoKQGludGVyZmFjZSBOU051bWJl
ciAoTlNOdW1iZXJDcmVhdGlvbikKCi0gKGlkKWluaXRXaXRoQ2hhcjooY2hhcil2YWx1ZTsKLSAo
aWQpaW5pdFdpdGhVbnNpZ25lZENoYXI6KHVuc2lnbmVkIGNoYXIpdmFsdWU7Ci0gKGlkKWluaXRX
aXRoU2hvcnQ6KHNob3J0KXZhbHVlOwotIChpZClpbml0V2l0aFVuc2lnbmVkU2hvcnQ6KHVuc2ln
bmVkIHNob3J0KXZhbHVlOwotIChpZClpbml0V2l0aEludDooaW50KXZhbHVlOwotIChpZClpbml0
V2l0aFVuc2lnbmVkSW50Oih1bnNpZ25lZCBpbnQpdmFsdWU7Ci0gKGlkKWluaXRXaXRoTG9uZzoo
bG9uZyl2YWx1ZTsKLSAoaWQpaW5pdFdpdGhVbnNpZ25lZExvbmc6KHVuc2lnbmVkIGxvbmcpdmFs
dWU7Ci0gKGlkKWluaXRXaXRoTG9uZ0xvbmc6KGxvbmcgbG9uZyl2YWx1ZTsKLSAoaWQpaW5pdFdp
dGhVbnNpZ25lZExvbmdMb25nOih1bnNpZ25lZCBsb25nIGxvbmcpdmFsdWU7Ci0gKGlkKWluaXRX
aXRoRmxvYXQ6KGZsb2F0KXZhbHVlOwotIChpZClpbml0V2l0aERvdWJsZTooZG91YmxlKXZhbHVl
OwotIChpZClpbml0V2l0aEJvb2w6KEJPT0wpdmFsdWU7CgotIChpZClpbml0V2l0aEludGVnZXI6
KE5TSW50ZWdlcil2YWx1ZTsKLSAoaWQpaW5pdFdpdGhVbnNpZ25lZEludGVnZXI6KE5TVUludGVn
ZXIpdmFsdWU7CgoKKyAoTlNOdW1iZXIgKiludW1iZXJXaXRoQ2hhcjooY2hhcil2YWx1ZTsKKyAo
TlNOdW1iZXIgKiludW1iZXJXaXRoVW5zaWduZWRDaGFyOih1bnNpZ25lZCBjaGFyKXZhbHVlOwor
IChOU051bWJlciAqKW51bWJlcldpdGhTaG9ydDooc2hvcnQpdmFsdWU7CisgKE5TTnVtYmVyICop
bnVtYmVyV2l0aFVuc2lnbmVkU2hvcnQ6KHVuc2lnbmVkIHNob3J0KXZhbHVlOworIChOU051bWJl
ciAqKW51bWJlcldpdGhJbnQ6KGludCl2YWx1ZTsKKyAoTlNOdW1iZXIgKiludW1iZXJXaXRoVW5z
aWduZWRJbnQ6KHVuc2lnbmVkIGludCl2YWx1ZTsKKyAoTlNOdW1iZXIgKiludW1iZXJXaXRoTG9u
ZzoobG9uZyl2YWx1ZTsKKyAoTlNOdW1iZXIgKiludW1iZXJXaXRoVW5zaWduZWRMb25nOih1bnNp
Z25lZCBsb25nKXZhbHVlOworIChOU051bWJlciAqKW51bWJlcldpdGhMb25nTG9uZzoobG9uZyBs
b25nKXZhbHVlOworIChOU051bWJlciAqKW51bWJlcldpdGhVbnNpZ25lZExvbmdMb25nOih1bnNp
Z25lZCBsb25nIGxvbmcpdmFsdWU7CisgKE5TTnVtYmVyICopbnVtYmVyV2l0aEZsb2F0OihmbG9h
dCl2YWx1ZTsKKyAoTlNOdW1iZXIgKiludW1iZXJXaXRoRG91YmxlOihkb3VibGUpdmFsdWU7Cisg
KE5TTnVtYmVyICopbnVtYmVyV2l0aEJvb2w6KEJPT0wpdmFsdWU7CgorIChOU051bWJlciAqKW51
bWJlcldpdGhJbnRlZ2VyOihOU0ludGVnZXIpdmFsdWU7CisgKE5TTnVtYmVyICopbnVtYmVyV2l0
aFVuc2lnbmVkSW50ZWdlcjooTlNVSW50ZWdlcil2YWx1ZTsKCgpAZW5kCiMgNyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0dlb21ldHJ5
LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvTlNDb2Rlci5oIiAxIDMKCgoKCgoKQGNsYXNzIE5TU3RyaW5nLCBOU0RhdGE7
CgpAaW50ZXJmYWNlIE5TQ29kZXIgOiBOU09iamVjdAoKLSAodm9pZCllbmNvZGVWYWx1ZU9mT2Jq
Q1R5cGU6KGNvbnN0IGNoYXIgKil0eXBlIGF0Oihjb25zdCB2b2lkICopYWRkcjsKLSAodm9pZCll
bmNvZGVEYXRhT2JqZWN0OihOU0RhdGEgKilkYXRhOwotICh2b2lkKWRlY29kZVZhbHVlT2ZPYmpD
VHlwZTooY29uc3QgY2hhciAqKXR5cGUgYXQ6KHZvaWQgKilkYXRhOwotIChOU0RhdGEgKilkZWNv
ZGVEYXRhT2JqZWN0OwotIChOU0ludGVnZXIpdmVyc2lvbkZvckNsYXNzTmFtZTooTlNTdHJpbmcg
KiljbGFzc05hbWU7CgpAZW5kCgpAaW50ZXJmYWNlIE5TQ29kZXIgKE5TRXh0ZW5kZWRDb2RlcikK
Ci0gKHZvaWQpZW5jb2RlT2JqZWN0OihpZClvYmplY3Q7Ci0gKHZvaWQpZW5jb2RlUm9vdE9iamVj
dDooaWQpcm9vdE9iamVjdDsKLSAodm9pZCllbmNvZGVCeWNvcHlPYmplY3Q6KGlkKWFuT2JqZWN0
OwotICh2b2lkKWVuY29kZUJ5cmVmT2JqZWN0OihpZClhbk9iamVjdDsKLSAodm9pZCllbmNvZGVD
b25kaXRpb25hbE9iamVjdDooaWQpb2JqZWN0OwotICh2b2lkKWVuY29kZVZhbHVlc09mT2JqQ1R5
cGVzOihjb25zdCBjaGFyICopdHlwZXMsIC4uLjsKLSAodm9pZCllbmNvZGVBcnJheU9mT2JqQ1R5
cGU6KGNvbnN0IGNoYXIgKil0eXBlIGNvdW50OihOU1VJbnRlZ2VyKWNvdW50IGF0Oihjb25zdCB2
b2lkICopYXJyYXk7Ci0gKHZvaWQpZW5jb2RlQnl0ZXM6KGNvbnN0IHZvaWQgKilieXRlYWRkciBs
ZW5ndGg6KE5TVUludGVnZXIpbGVuZ3RoOwoKLSAoaWQpZGVjb2RlT2JqZWN0OwotICh2b2lkKWRl
Y29kZVZhbHVlc09mT2JqQ1R5cGVzOihjb25zdCBjaGFyICopdHlwZXMsIC4uLjsKLSAodm9pZClk
ZWNvZGVBcnJheU9mT2JqQ1R5cGU6KGNvbnN0IGNoYXIgKilpdGVtVHlwZSBjb3VudDooTlNVSW50
ZWdlciljb3VudCBhdDoodm9pZCAqKWFycmF5OwotICh2b2lkICopZGVjb2RlQnl0ZXNXaXRoUmV0
dXJuZWRMZW5ndGg6KE5TVUludGVnZXIgKilsZW5ndGhwOwoKCi0gKHZvaWQpZW5jb2RlUHJvcGVy
dHlMaXN0OihpZClhUHJvcGVydHlMaXN0OwotIChpZClkZWNvZGVQcm9wZXJ0eUxpc3Q7CgoKLSAo
dm9pZClzZXRPYmplY3Rab25lOihOU1pvbmUgKil6b25lOwotIChOU1pvbmUgKilvYmplY3Rab25l
OwoKLSAodW5zaWduZWQpc3lzdGVtVmVyc2lvbjsKCgotIChCT09MKWFsbG93c0tleWVkQ29kaW5n
OwoKLSAodm9pZCllbmNvZGVPYmplY3Q6KGlkKW9ianYgZm9yS2V5OihOU1N0cmluZyAqKWtleTsK
LSAodm9pZCllbmNvZGVDb25kaXRpb25hbE9iamVjdDooaWQpb2JqdiBmb3JLZXk6KE5TU3RyaW5n
ICopa2V5OwotICh2b2lkKWVuY29kZUJvb2w6KEJPT0wpYm9vbHYgZm9yS2V5OihOU1N0cmluZyAq
KWtleTsKLSAodm9pZCllbmNvZGVJbnQ6KGludClpbnR2IGZvcktleTooTlNTdHJpbmcgKilrZXk7
Ci0gKHZvaWQpZW5jb2RlSW50MzI6KGludDMyX3QpaW50diBmb3JLZXk6KE5TU3RyaW5nICopa2V5
OwotICh2b2lkKWVuY29kZUludDY0OihpbnQ2NF90KWludHYgZm9yS2V5OihOU1N0cmluZyAqKWtl
eTsKLSAodm9pZCllbmNvZGVGbG9hdDooZmxvYXQpcmVhbHYgZm9yS2V5OihOU1N0cmluZyAqKWtl
eTsKLSAodm9pZCllbmNvZGVEb3VibGU6KGRvdWJsZSlyZWFsdiBmb3JLZXk6KE5TU3RyaW5nICop
a2V5OwotICh2b2lkKWVuY29kZUJ5dGVzOihjb25zdCB1aW50OF90ICopYnl0ZXNwIGxlbmd0aDoo
TlNVSW50ZWdlcilsZW52IGZvcktleTooTlNTdHJpbmcgKilrZXk7CgotIChCT09MKWNvbnRhaW5z
VmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5OwotIChpZClkZWNvZGVPYmplY3RGb3JLZXk6KE5T
U3RyaW5nICopa2V5OwotIChCT09MKWRlY29kZUJvb2xGb3JLZXk6KE5TU3RyaW5nICopa2V5Owot
IChpbnQpZGVjb2RlSW50Rm9yS2V5OihOU1N0cmluZyAqKWtleTsKLSAoaW50MzJfdClkZWNvZGVJ
bnQzMkZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0gKGludDY0X3QpZGVjb2RlSW50NjRGb3JLZXk6
KE5TU3RyaW5nICopa2V5OwotIChmbG9hdClkZWNvZGVGbG9hdEZvcktleTooTlNTdHJpbmcgKilr
ZXk7Ci0gKGRvdWJsZSlkZWNvZGVEb3VibGVGb3JLZXk6KE5TU3RyaW5nICopa2V5OwotIChjb25z
dCB1aW50OF90ICopZGVjb2RlQnl0ZXNGb3JLZXk6KE5TU3RyaW5nICopa2V5IHJldHVybmVkTGVu
Z3RoOihOU1VJbnRlZ2VyICopbGVuZ3RocDsKCgoKLSAodm9pZCllbmNvZGVJbnRlZ2VyOihOU0lu
dGVnZXIpaW50diBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotIChOU0ludGVnZXIpZGVjb2RlSW50
ZWdlckZvcktleTooTlNTdHJpbmcgKilrZXk7CgoKQGVuZAoKCmV4dGVybiAiQyIgTlNPYmplY3Qg
Kk5YUmVhZE5TT2JqZWN0RnJvbUNvZGVyKE5TQ29kZXIgKmRlY29kZXIpIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKCgoKQGludGVyZmFjZSBOU0NvZGVyIChOU1R5cGVkc3RyZWFtQ29tcGF0
aWJpbGl0eSkKCi0gKHZvaWQpZW5jb2RlTlhPYmplY3Q6KGlkKW9iamVjdCBfX2F0dHJpYnV0ZV9f
KChkZXByZWNhdGVkKSk7CgoKCgoKCgotIChpZClkZWNvZGVOWE9iamVjdCBfX2F0dHJpYnV0ZV9f
KChkZXByZWNhdGVkKSk7CiMgMTAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TQ29kZXIuaCIgMwpAZW5kCiMgOCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0dlb21ldHJ5Lmgi
IDIgMwoKCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzLy4uL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1l
d29yay9IZWFkZXJzL0NHQmFzZS5oIiAxIDMKCgoKCgojZGVmaW5lIENHQkFTRV9IXyAKCgojIDEg
Ii91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMyA0CiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvLi4vRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0dCYXNlLmgiIDIgMwojIDEgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndp
bjEwLzQuMi4xL2luY2x1ZGUvZmxvYXQuaCIgMSAzIDQKIyAzMiAiL3Vzci9saWIvZ2NjL2k2ODYt
YXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9mbG9hdC5oIiAzIDQKI2RlZmluZSBfRkxPQVRf
SF9fXyAKCgojdW5kZWYgRkxUX1JBRElYCiNkZWZpbmUgRkxUX1JBRElYIF9fRkxUX1JBRElYX18K
CgojdW5kZWYgRkxUX01BTlRfRElHCiN1bmRlZiBEQkxfTUFOVF9ESUcKI3VuZGVmIExEQkxfTUFO
VF9ESUcKI2RlZmluZSBGTFRfTUFOVF9ESUcgX19GTFRfTUFOVF9ESUdfXwojZGVmaW5lIERCTF9N
QU5UX0RJRyBfX0RCTF9NQU5UX0RJR19fCiNkZWZpbmUgTERCTF9NQU5UX0RJRyBfX0xEQkxfTUFO
VF9ESUdfXwojIDUzICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNs
dWRlL2Zsb2F0LmgiIDMgNAojdW5kZWYgRkxUX0RJRwojdW5kZWYgREJMX0RJRwojdW5kZWYgTERC
TF9ESUcKI2RlZmluZSBGTFRfRElHIF9fRkxUX0RJR19fCiNkZWZpbmUgREJMX0RJRyBfX0RCTF9E
SUdfXwojZGVmaW5lIExEQkxfRElHIF9fTERCTF9ESUdfXwoKCiN1bmRlZiBGTFRfTUlOX0VYUAoj
dW5kZWYgREJMX01JTl9FWFAKI3VuZGVmIExEQkxfTUlOX0VYUAojZGVmaW5lIEZMVF9NSU5fRVhQ
IF9fRkxUX01JTl9FWFBfXwojZGVmaW5lIERCTF9NSU5fRVhQIF9fREJMX01JTl9FWFBfXwojZGVm
aW5lIExEQkxfTUlOX0VYUCBfX0xEQkxfTUlOX0VYUF9fCgoKCgoKCiN1bmRlZiBGTFRfTUlOXzEw
X0VYUAojdW5kZWYgREJMX01JTl8xMF9FWFAKI3VuZGVmIExEQkxfTUlOXzEwX0VYUAojZGVmaW5l
IEZMVF9NSU5fMTBfRVhQIF9fRkxUX01JTl8xMF9FWFBfXwojZGVmaW5lIERCTF9NSU5fMTBfRVhQ
IF9fREJMX01JTl8xMF9FWFBfXwojZGVmaW5lIExEQkxfTUlOXzEwX0VYUCBfX0xEQkxfTUlOXzEw
X0VYUF9fCgoKI3VuZGVmIEZMVF9NQVhfRVhQCiN1bmRlZiBEQkxfTUFYX0VYUAojdW5kZWYgTERC
TF9NQVhfRVhQCiNkZWZpbmUgRkxUX01BWF9FWFAgX19GTFRfTUFYX0VYUF9fCiNkZWZpbmUgREJM
X01BWF9FWFAgX19EQkxfTUFYX0VYUF9fCiNkZWZpbmUgTERCTF9NQVhfRVhQIF9fTERCTF9NQVhf
RVhQX18KCgoKCgoKI3VuZGVmIEZMVF9NQVhfMTBfRVhQCiN1bmRlZiBEQkxfTUFYXzEwX0VYUAoj
dW5kZWYgTERCTF9NQVhfMTBfRVhQCiNkZWZpbmUgRkxUX01BWF8xMF9FWFAgX19GTFRfTUFYXzEw
X0VYUF9fCiNkZWZpbmUgREJMX01BWF8xMF9FWFAgX19EQkxfTUFYXzEwX0VYUF9fCiNkZWZpbmUg
TERCTF9NQVhfMTBfRVhQIF9fTERCTF9NQVhfMTBfRVhQX18KCgoKCgojdW5kZWYgRkxUX01BWAoj
dW5kZWYgREJMX01BWAojdW5kZWYgTERCTF9NQVgKI2RlZmluZSBGTFRfTUFYIF9fRkxUX01BWF9f
CiNkZWZpbmUgREJMX01BWCBfX0RCTF9NQVhfXwojZGVmaW5lIExEQkxfTUFYIF9fTERCTF9NQVhf
XwoKCgojdW5kZWYgRkxUX0VQU0lMT04KI3VuZGVmIERCTF9FUFNJTE9OCiN1bmRlZiBMREJMX0VQ
U0lMT04KI2RlZmluZSBGTFRfRVBTSUxPTiBfX0ZMVF9FUFNJTE9OX18KI2RlZmluZSBEQkxfRVBT
SUxPTiBfX0RCTF9FUFNJTE9OX18KI2RlZmluZSBMREJMX0VQU0lMT04gX19MREJMX0VQU0lMT05f
XwoKCiN1bmRlZiBGTFRfTUlOCiN1bmRlZiBEQkxfTUlOCiN1bmRlZiBMREJMX01JTgojZGVmaW5l
IEZMVF9NSU4gX19GTFRfTUlOX18KI2RlZmluZSBEQkxfTUlOIF9fREJMX01JTl9fCiNkZWZpbmUg
TERCTF9NSU4gX19MREJMX01JTl9fCgoKCgojdW5kZWYgRkxUX1JPVU5EUwojZGVmaW5lIEZMVF9S
T1VORFMgKF9fYnVpbHRpbl9mbHRfcm91bmRzICgpKQojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzLy4uL0ZyYW1ld29y
a3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHQmFzZS5oIiAyIDMKIyAyMyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy8uLi9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Jhc2Uu
aCIgMwojZGVmaW5lIENHX0FWQUlMQUJMRV9TVEFSVElORyBfX09TWF9BVkFJTEFCTEVfU1RBUlRJ
TkcKI2RlZmluZSBDR19BVkFJTEFCTEVfQlVUX0RFUFJFQ0FURUQgX19PU1hfQVZBSUxBQkxFX0JV
VF9ERVBSRUNBVEVECiMgNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvLi4vRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJh
bWV3b3JrL0hlYWRlcnMvQ0dCYXNlLmgiIDMKI2RlZmluZSBDR19FWFRFUk4gZXh0ZXJuICJDIgoj
IDUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzLy4uL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJz
L0NHQmFzZS5oIiAzCiNkZWZpbmUgQ0dfTE9DQUwgX19wcml2YXRlX2V4dGVybl9fCgoKCgoKCiNk
ZWZpbmUgQ0dfUFJJVkFURV9FWFRFUk4gQ0dfTE9DQUwKCgoKCgojZGVmaW5lIENHX09CU09MRVRF
IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKQojIDc5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzLy4uL0ZyYW1ld29ya3Mv
Q29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHQmFzZS5oIiAzCiNkZWZpbmUgQ0dfSU5M
SU5FIHN0YXRpYyBpbmxpbmUKIyA5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy8uLi9GcmFtZXdvcmtzL0NvcmVHcmFwaGlj
cy5mcmFtZXdvcmsvSGVhZGVycy9DR0Jhc2UuaCIgMwojZGVmaW5lIENHRkxPQVRfVFlQRSBkb3Vi
bGUKI2RlZmluZSBDR0ZMT0FUX0lTX0RPVUJMRSAxCiNkZWZpbmUgQ0dGTE9BVF9NSU4gREJMX01J
TgojZGVmaW5lIENHRkxPQVRfTUFYIERCTF9NQVgKCgoKCgoKCnR5cGVkZWYgZG91YmxlIENHRmxv
YXQ7CiNkZWZpbmUgQ0dGTE9BVF9ERUZJTkVEIDEKIyAxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0dlb21ldHJ5LmgiIDIgMwojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvLi4vRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dH
ZW9tZXRyeS5oIiAxIDMKCgoKCgojZGVmaW5lIENHR0VPTUVUUllfSF8gCgoKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkRp
Y3Rpb25hcnkuaCIgMSAzCiMgNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGRGljdGlvbmFyeS5oIiAzCiNkZWZpbmUgX19DT1JF
Rk9VTkRBVElPTl9DRkRJQ1RJT05BUllfXyAxCgoKCmV4dGVybiAiQyIgewojIDkxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkRp
Y3Rpb25hcnkuaCIgMwp0eXBlZGVmIGNvbnN0IHZvaWQgKiAoKkNGRGljdGlvbmFyeVJldGFpbkNh
bGxCYWNrKShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IHZvaWQgKnZhbHVlKTsKdHlw
ZWRlZiB2b2lkICgqQ0ZEaWN0aW9uYXJ5UmVsZWFzZUNhbGxCYWNrKShDRkFsbG9jYXRvclJlZiBh
bGxvY2F0b3IsIGNvbnN0IHZvaWQgKnZhbHVlKTsKdHlwZWRlZiBDRlN0cmluZ1JlZiAoKkNGRGlj
dGlvbmFyeUNvcHlEZXNjcmlwdGlvbkNhbGxCYWNrKShjb25zdCB2b2lkICp2YWx1ZSk7CnR5cGVk
ZWYgQm9vbGVhbiAoKkNGRGljdGlvbmFyeUVxdWFsQ2FsbEJhY2spKGNvbnN0IHZvaWQgKnZhbHVl
MSwgY29uc3Qgdm9pZCAqdmFsdWUyKTsKdHlwZWRlZiBDRkhhc2hDb2RlICgqQ0ZEaWN0aW9uYXJ5
SGFzaENhbGxCYWNrKShjb25zdCB2b2lkICp2YWx1ZSk7CnR5cGVkZWYgc3RydWN0IHsKICAgIENG
SW5kZXggdmVyc2lvbjsKICAgIENGRGljdGlvbmFyeVJldGFpbkNhbGxCYWNrIHJldGFpbjsKICAg
IENGRGljdGlvbmFyeVJlbGVhc2VDYWxsQmFjayByZWxlYXNlOwogICAgQ0ZEaWN0aW9uYXJ5Q29w
eURlc2NyaXB0aW9uQ2FsbEJhY2sgY29weURlc2NyaXB0aW9uOwogICAgQ0ZEaWN0aW9uYXJ5RXF1
YWxDYWxsQmFjayBlcXVhbDsKICAgIENGRGljdGlvbmFyeUhhc2hDYWxsQmFjayBoYXNoOwp9IENG
RGljdGlvbmFyeUtleUNhbGxCYWNrczsKCgoKCgoKCmV4dGVybgpjb25zdCBDRkRpY3Rpb25hcnlL
ZXlDYWxsQmFja3Mga0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3M7CiMgMTIyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkRp
Y3Rpb25hcnkuaCIgMwpleHRlcm4KY29uc3QgQ0ZEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzIGtDRkNv
cHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzOwojIDE0OCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZEaWN0aW9uYXJ5Lmgi
IDMKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0ZJbmRleCB2ZXJzaW9uOwogICAgQ0ZEaWN0aW9uYXJ5
UmV0YWluQ2FsbEJhY2sgcmV0YWluOwogICAgQ0ZEaWN0aW9uYXJ5UmVsZWFzZUNhbGxCYWNrIHJl
bGVhc2U7CiAgICBDRkRpY3Rpb25hcnlDb3B5RGVzY3JpcHRpb25DYWxsQmFjayBjb3B5RGVzY3Jp
cHRpb247CiAgICBDRkRpY3Rpb25hcnlFcXVhbENhbGxCYWNrIGVxdWFsOwp9IENGRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzOwoKCgoKCgoKZXh0ZXJuCmNvbnN0IENGRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzIGtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3M7CiMgMTc0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkRpY3Rp
b25hcnkuaCIgMwp0eXBlZGVmIHZvaWQgKCpDRkRpY3Rpb25hcnlBcHBsaWVyRnVuY3Rpb24pKGNv
bnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpOwoKCgoKCnR5
cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEaWN0aW9uYXJ5ICogQ0ZEaWN0aW9uYXJ5UmVmOwoKCgoK
CnR5cGVkZWYgc3RydWN0IF9fQ0ZEaWN0aW9uYXJ5ICogQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZjsK
CgoKCgpleHRlcm4KQ0ZUeXBlSUQgQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKHZvaWQpOwojIDI3NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZEaWN0aW9uYXJ5LmgiIDMKZXh0ZXJuCkNGRGljdGlvbmFyeVJlZiBDRkRpY3Rpb25hcnlD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBjb25zdCB2b2lkICoqa2V5cywgY29uc3Qg
dm9pZCAqKnZhbHVlcywgQ0ZJbmRleCBudW1WYWx1ZXMsIGNvbnN0IENGRGljdGlvbmFyeUtleUNh
bGxCYWNrcyAqa2V5Q2FsbEJhY2tzLCBjb25zdCBDRkRpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyAq
dmFsdWVDYWxsQmFja3MpOwojIDMwMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZEaWN0aW9uYXJ5LmgiIDMKZXh0ZXJuCkNGRGlj
dGlvbmFyeVJlZiBDRkRpY3Rpb25hcnlDcmVhdGVDb3B5KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
ciwgQ0ZEaWN0aW9uYXJ5UmVmIHRoZURpY3QpOwojIDM3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZEaWN0aW9uYXJ5LmgiIDMK
ZXh0ZXJuCkNGTXV0YWJsZURpY3Rpb25hcnlSZWYgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGSW5kZXggY2FwYWNpdHksIGNvbnN0IENGRGljdGlv
bmFyeUtleUNhbGxCYWNrcyAqa2V5Q2FsbEJhY2tzLCBjb25zdCBDRkRpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcyAqdmFsdWVDYWxsQmFja3MpOwojIDQwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZEaWN0aW9uYXJ5LmgiIDMKZXh0
ZXJuCkNGTXV0YWJsZURpY3Rpb25hcnlSZWYgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHko
Q0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkluZGV4IGNhcGFjaXR5LCBDRkRpY3Rpb25hcnlS
ZWYgdGhlRGljdCk7CiMgNDE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkRpY3Rpb25hcnkuaCIgMwpleHRlcm4KQ0ZJbmRleCBD
RkRpY3Rpb25hcnlHZXRDb3VudChDRkRpY3Rpb25hcnlSZWYgdGhlRGljdCk7CiMgNDM1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9D
RkRpY3Rpb25hcnkuaCIgMwpleHRlcm4KQ0ZJbmRleCBDRkRpY3Rpb25hcnlHZXRDb3VudE9mS2V5
KENGRGljdGlvbmFyeVJlZiB0aGVEaWN0LCBjb25zdCB2b2lkICprZXkpOwojIDQ1MSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZE
aWN0aW9uYXJ5LmgiIDMKZXh0ZXJuCkNGSW5kZXggQ0ZEaWN0aW9uYXJ5R2V0Q291bnRPZlZhbHVl
KENGRGljdGlvbmFyeVJlZiB0aGVEaWN0LCBjb25zdCB2b2lkICp2YWx1ZSk7CiMgNDY5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9D
RkRpY3Rpb25hcnkuaCIgMwpleHRlcm4KQm9vbGVhbiBDRkRpY3Rpb25hcnlDb250YWluc0tleShD
RkRpY3Rpb25hcnlSZWYgdGhlRGljdCwgY29uc3Qgdm9pZCAqa2V5KTsKIyA0ODUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGRGlj
dGlvbmFyeS5oIiAzCmV4dGVybgpCb29sZWFuIENGRGljdGlvbmFyeUNvbnRhaW5zVmFsdWUoQ0ZE
aWN0aW9uYXJ5UmVmIHRoZURpY3QsIGNvbnN0IHZvaWQgKnZhbHVlKTsKIyA1MDcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGRGlj
dGlvbmFyeS5oIiAzCmV4dGVybgpjb25zdCB2b2lkICpDRkRpY3Rpb25hcnlHZXRWYWx1ZShDRkRp
Y3Rpb25hcnlSZWYgdGhlRGljdCwgY29uc3Qgdm9pZCAqa2V5KTsKIyA1MzIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGRGljdGlv
bmFyeS5oIiAzCmV4dGVybgpCb29sZWFuIENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KENG
RGljdGlvbmFyeVJlZiB0aGVEaWN0LCBjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKip2YWx1
ZSk7CiMgNTU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9DRkRpY3Rpb25hcnkuaCIgMwpleHRlcm4Kdm9pZCBDRkRpY3Rpb25hcnlH
ZXRLZXlzQW5kVmFsdWVzKENGRGljdGlvbmFyeVJlZiB0aGVEaWN0LCBjb25zdCB2b2lkICoqa2V5
cywgY29uc3Qgdm9pZCAqKnZhbHVlcyk7CiMgNTc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkRpY3Rpb25hcnkuaCIgMwpleHRl
cm4Kdm9pZCBDRkRpY3Rpb25hcnlBcHBseUZ1bmN0aW9uKENGRGljdGlvbmFyeVJlZiB0aGVEaWN0
LCBDRkRpY3Rpb25hcnlBcHBsaWVyRnVuY3Rpb24gYXBwbGllciwgdm9pZCAqY29udGV4dCk7CiMg
NTk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9DRkRpY3Rpb25hcnkuaCIgMwpleHRlcm4Kdm9pZCBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHRoZURpY3QsIGNvbnN0IHZvaWQgKmtleSwgY29uc3Qg
dm9pZCAqdmFsdWUpOwojIDYxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZEaWN0aW9uYXJ5LmgiIDMKZXh0ZXJuCnZvaWQgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiB0aGVEaWN0LCBjb25zdCB2
b2lkICprZXksIGNvbnN0IHZvaWQgKnZhbHVlKTsKIyA2MzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGRGljdGlvbmFyeS5oIiAz
CmV4dGVybgp2b2lkIENGRGljdGlvbmFyeVJlcGxhY2VWYWx1ZShDRk11dGFibGVEaWN0aW9uYXJ5
UmVmIHRoZURpY3QsIGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqdmFsdWUpOwojIDY1MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZEaWN0aW9uYXJ5LmgiIDMKZXh0ZXJuCnZvaWQgQ0ZEaWN0aW9uYXJ5UmVtb3ZlVmFsdWUo
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZiB0aGVEaWN0LCBjb25zdCB2b2lkICprZXkpOwojIDY2MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZEaWN0aW9uYXJ5LmgiIDMKZXh0ZXJuCnZvaWQgQ0ZEaWN0aW9uYXJ5UmVtb3ZlQWxsVmFs
dWVzKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgdGhlRGljdCk7Cgp9CiMgMTAgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvLi4v
RnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dHZW9tZXRyeS5oIiAy
IDMKCgoKc3RydWN0IENHUG9pbnQgewogIENHRmxvYXQgeDsKICBDR0Zsb2F0IHk7Cn07CnR5cGVk
ZWYgc3RydWN0IENHUG9pbnQgQ0dQb2ludDsKCgoKc3RydWN0IENHU2l6ZSB7CiAgQ0dGbG9hdCB3
aWR0aDsKICBDR0Zsb2F0IGhlaWdodDsKfTsKdHlwZWRlZiBzdHJ1Y3QgQ0dTaXplIENHU2l6ZTsK
CgoKc3RydWN0IENHUmVjdCB7CiAgQ0dQb2ludCBvcmlnaW47CiAgQ0dTaXplIHNpemU7Cn07CnR5
cGVkZWYgc3RydWN0IENHUmVjdCBDR1JlY3Q7CgoKCmVudW0gQ0dSZWN0RWRnZSB7CiAgQ0dSZWN0
TWluWEVkZ2UsIENHUmVjdE1pbllFZGdlLCBDR1JlY3RNYXhYRWRnZSwgQ0dSZWN0TWF4WUVkZ2UK
fTsKdHlwZWRlZiBlbnVtIENHUmVjdEVkZ2UgQ0dSZWN0RWRnZTsKCgoKZXh0ZXJuICJDIiBjb25z
dCBDR1BvaW50IENHUG9pbnRaZXJvCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CgoKCmV4dGVybiAiQyIgY29uc3QgQ0dTaXplIENHU2l6ZVplcm8KICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBjb25zdCBDR1JlY3Qg
Q0dSZWN0WmVybwogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
CmV4dGVybiAiQyIgY29uc3QgQ0dSZWN0IENHUmVjdE51bGwKICBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBjb25zdCBDR1JlY3QgQ0dSZWN0SW5m
aW5pdGUKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKc3RhdGlj
IGlubGluZSBDR1BvaW50IENHUG9pbnRNYWtlKENHRmxvYXQgeCwgQ0dGbG9hdCB5KTsKCgoKc3Rh
dGljIGlubGluZSBDR1NpemUgQ0dTaXplTWFrZShDR0Zsb2F0IHdpZHRoLCBDR0Zsb2F0IGhlaWdo
dCk7CgoKCnN0YXRpYyBpbmxpbmUgQ0dSZWN0IENHUmVjdE1ha2UoQ0dGbG9hdCB4LCBDR0Zsb2F0
IHksIENHRmxvYXQgd2lkdGgsCiAgQ0dGbG9hdCBoZWlnaHQpOwoKCgpleHRlcm4gIkMiIENHRmxv
YXQgQ0dSZWN0R2V0TWluWChDR1JlY3QgcmVjdCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR0Zsb2F0IENHUmVjdEdldE1pZFgoQ0dSZWN0
IHJlY3QpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVy
biAiQyIgQ0dGbG9hdCBDR1JlY3RHZXRNYXhYKENHUmVjdCByZWN0KQogIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHRmxvYXQgQ0dSZWN0R2V0
TWluWShDR1JlY3QgcmVjdCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKCgoKZXh0ZXJuICJDIiBDR0Zsb2F0IENHUmVjdEdldE1pZFkoQ0dSZWN0IHJlY3QpCiAgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dGbG9h
dCBDR1JlY3RHZXRNYXhZKENHUmVjdCByZWN0KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHRmxvYXQgQ0dSZWN0R2V0V2lkdGgoQ0dSZWN0
IHJlY3QpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVy
biAiQyIgQ0dGbG9hdCBDR1JlY3RHZXRIZWlnaHQoQ0dSZWN0IHJlY3QpCiAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgYm9vbCBDR1BvaW50RXF1
YWxUb1BvaW50KENHUG9pbnQgcG9pbnQxLCBDR1BvaW50IHBvaW50MikKICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBib29sIENHU2l6ZUVxdWFs
VG9TaXplKENHU2l6ZSBzaXplMSwgQ0dTaXplIHNpemUyKQogIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIGJvb2wgQ0dSZWN0RXF1YWxUb1JlY3Qo
Q0dSZWN0IHJlY3QxLCBDR1JlY3QgcmVjdDIpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENHUmVjdCBDR1JlY3RTdGFuZGFyZGl6ZShDR1Jl
Y3QgcmVjdCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4
dGVybiAiQyIgYm9vbCBDR1JlY3RJc0VtcHR5KENHUmVjdCByZWN0KQogIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIGJvb2wgQ0dSZWN0SXNOdWxs
KENHUmVjdCByZWN0KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgpleHRlcm4gIkMiIGJvb2wgQ0dSZWN0SXNJbmZpbml0ZShDR1JlY3QgcmVjdCkKICBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgQ0dSZWN0IENH
UmVjdEluc2V0KENHUmVjdCByZWN0LCBDR0Zsb2F0IGR4LCBDR0Zsb2F0IGR5KQogIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDR1JlY3QgQ0dS
ZWN0SW50ZWdyYWwoQ0dSZWN0IHJlY3QpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dSZWN0IENHUmVjdFVuaW9uKENHUmVjdCByMSwgQ0dS
ZWN0IHIyKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRl
cm4gIkMiIENHUmVjdCBDR1JlY3RJbnRlcnNlY3Rpb24oQ0dSZWN0IHIxLCBDR1JlY3QgcjIpCiAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dS
ZWN0IENHUmVjdE9mZnNldChDR1JlY3QgcmVjdCwgQ0dGbG9hdCBkeCwgQ0dGbG9hdCBkeSkKICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiAiQyIg
dm9pZCBDR1JlY3REaXZpZGUoQ0dSZWN0IHJlY3QsIENHUmVjdCAqc2xpY2UsIENHUmVjdCAqcmVt
YWluZGVyLAogIENHRmxvYXQgYW1vdW50LCBDR1JlY3RFZGdlIGVkZ2UpCiAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgYm9vbCBDR1JlY3RDb250
YWluc1BvaW50KENHUmVjdCByZWN0LCBDR1BvaW50IHBvaW50KQogIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgYm9vbCBDR1JlY3RDb250YWlu
c1JlY3QoQ0dSZWN0IHJlY3QxLCBDR1JlY3QgcmVjdDIpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBib29sIENHUmVjdEludGVyc2VjdHNS
ZWN0KENHUmVjdCByZWN0MSwgQ0dSZWN0IHJlY3QyKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgQ0ZEaWN0aW9uYXJ5UmVmIENHUG9pbnRD
cmVhdGVEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oQ0dQb2ludCBwb2ludCkKICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIGJvb2wgQ0dQb2lu
dE1ha2VXaXRoRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZiBkaWN0LAog
IENHUG9pbnQgKnBvaW50KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKZXh0ZXJuICJDIiBDRkRpY3Rpb25hcnlSZWYgQ0dTaXplQ3JlYXRlRGljdGlvbmFyeVJlcHJl
c2VudGF0aW9uKENHU2l6ZSBzaXplKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgYm9vbCBDR1NpemVNYWtlV2l0aERpY3Rpb25hcnlSZXBy
ZXNlbnRhdGlvbihDRkRpY3Rpb25hcnlSZWYgZGljdCwKICBDR1NpemUgKnNpemUpIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENGRGljdGlvbmFy
eVJlZiBDR1JlY3RDcmVhdGVEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oQ0dSZWN0KQogIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgYm9vbCBD
R1JlY3RNYWtlV2l0aERpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihDRkRpY3Rpb25hcnlSZWYgZGlj
dCwKICBDR1JlY3QgKnJlY3QpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwoKCgpzdGF0aWMgaW5saW5lIENHUG9pbnQKQ0dQb2ludE1ha2UoQ0dGbG9hdCB4LCBDR0Zsb2F0
IHkpCnsKICBDR1BvaW50IHA7IHAueCA9IHg7IHAueSA9IHk7IHJldHVybiBwOwp9CgpzdGF0aWMg
aW5saW5lIENHU2l6ZQpDR1NpemVNYWtlKENHRmxvYXQgd2lkdGgsIENHRmxvYXQgaGVpZ2h0KQp7
CiAgQ0dTaXplIHNpemU7IHNpemUud2lkdGggPSB3aWR0aDsgc2l6ZS5oZWlnaHQgPSBoZWlnaHQ7
IHJldHVybiBzaXplOwp9CgpzdGF0aWMgaW5saW5lIENHUmVjdApDR1JlY3RNYWtlKENHRmxvYXQg
eCwgQ0dGbG9hdCB5LCBDR0Zsb2F0IHdpZHRoLCBDR0Zsb2F0IGhlaWdodCkKewogIENHUmVjdCBy
ZWN0OwogIHJlY3Qub3JpZ2luLnggPSB4OyByZWN0Lm9yaWdpbi55ID0geTsKICByZWN0LnNpemUu
d2lkdGggPSB3aWR0aDsgcmVjdC5zaXplLmhlaWdodCA9IGhlaWdodDsKICByZXR1cm4gcmVjdDsK
fQoKc3RhdGljIGlubGluZSBib29sCl9fQ0dQb2ludEVxdWFsVG9Qb2ludChDR1BvaW50IHBvaW50
MSwgQ0dQb2ludCBwb2ludDIpCnsKICByZXR1cm4gcG9pbnQxLnggPT0gcG9pbnQyLnggJiYgcG9p
bnQxLnkgPT0gcG9pbnQyLnk7Cn0KI2RlZmluZSBDR1BvaW50RXF1YWxUb1BvaW50IF9fQ0dQb2lu
dEVxdWFsVG9Qb2ludAoKc3RhdGljIGlubGluZSBib29sCl9fQ0dTaXplRXF1YWxUb1NpemUoQ0dT
aXplIHNpemUxLCBDR1NpemUgc2l6ZTIpCnsKICByZXR1cm4gc2l6ZTEud2lkdGggPT0gc2l6ZTIu
d2lkdGggJiYgc2l6ZTEuaGVpZ2h0ID09IHNpemUyLmhlaWdodDsKfQojZGVmaW5lIENHU2l6ZUVx
dWFsVG9TaXplIF9fQ0dTaXplRXF1YWxUb1NpemUKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0dlb21ldHJ5LmgiIDIgMwoKCgoK
dHlwZWRlZiBDR1BvaW50IE5TUG9pbnQ7Cgp0eXBlZGVmIE5TUG9pbnQgKk5TUG9pbnRQb2ludGVy
Owp0eXBlZGVmIE5TUG9pbnQgKk5TUG9pbnRBcnJheTsKCnR5cGVkZWYgQ0dTaXplIE5TU2l6ZTsK
CnR5cGVkZWYgTlNTaXplICpOU1NpemVQb2ludGVyOwp0eXBlZGVmIE5TU2l6ZSAqTlNTaXplQXJy
YXk7Cgp0eXBlZGVmIENHUmVjdCBOU1JlY3Q7Cgp0eXBlZGVmIE5TUmVjdCAqTlNSZWN0UG9pbnRl
cjsKdHlwZWRlZiBOU1JlY3QgKk5TUmVjdEFycmF5OwoKI2RlZmluZSBOU01pblhFZGdlIENHUmVj
dE1pblhFZGdlCiNkZWZpbmUgTlNNaW5ZRWRnZSBDR1JlY3RNaW5ZRWRnZQojZGVmaW5lIE5TTWF4
WEVkZ2UgQ0dSZWN0TWF4WEVkZ2UKI2RlZmluZSBOU01heFlFZGdlIENHUmVjdE1heFlFZGdlCgp0
eXBlZGVmIE5TVUludGVnZXIgTlNSZWN0RWRnZTsKCiNkZWZpbmUgTlNHRU9NRVRSWV9UWVBFU19T
QU1FX0FTX0NHR0VPTUVUUllfVFlQRVMgMQojIDgwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TR2VvbWV0cnkuaCIgMwpAY2xhc3MgTlNT
dHJpbmc7CgpleHRlcm4gIkMiIGNvbnN0IE5TUG9pbnQgTlNaZXJvUG9pbnQ7CmV4dGVybiAiQyIg
Y29uc3QgTlNTaXplIE5TWmVyb1NpemU7CmV4dGVybiAiQyIgY29uc3QgTlNSZWN0IE5TWmVyb1Jl
Y3Q7CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgTlNQ
b2ludCBOU01ha2VQb2ludChDR0Zsb2F0IHgsIENHRmxvYXQgeSkgewogICAgTlNQb2ludCBwOwog
ICAgcC54ID0geDsKICAgIHAueSA9IHk7CiAgICByZXR1cm4gcDsKfQoKc3RhdGljIF9faW5saW5l
X18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIE5TU2l6ZSBOU01ha2VTaXplKENHRmxv
YXQgdywgQ0dGbG9hdCBoKSB7CiAgICBOU1NpemUgczsKICAgIHMud2lkdGggPSB3OwogICAgcy5o
ZWlnaHQgPSBoOwogICAgcmV0dXJuIHM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRl
X18oKGFsd2F5c19pbmxpbmUpKSBOU1JlY3QgTlNNYWtlUmVjdChDR0Zsb2F0IHgsIENHRmxvYXQg
eSwgQ0dGbG9hdCB3LCBDR0Zsb2F0IGgpIHsKICAgIE5TUmVjdCByOwogICAgci5vcmlnaW4ueCA9
IHg7CiAgICByLm9yaWdpbi55ID0geTsKICAgIHIuc2l6ZS53aWR0aCA9IHc7CiAgICByLnNpemUu
aGVpZ2h0ID0gaDsKICAgIHJldHVybiByOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0
ZV9fKChhbHdheXNfaW5saW5lKSkgQ0dGbG9hdCBOU01heFgoTlNSZWN0IGFSZWN0KSB7CiAgICBy
ZXR1cm4gKGFSZWN0Lm9yaWdpbi54ICsgYVJlY3Quc2l6ZS53aWR0aCk7Cn0KCnN0YXRpYyBfX2lu
bGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBDR0Zsb2F0IE5TTWF4WShOU1Jl
Y3QgYVJlY3QpIHsKICAgIHJldHVybiAoYVJlY3Qub3JpZ2luLnkgKyBhUmVjdC5zaXplLmhlaWdo
dCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBD
R0Zsb2F0IE5TTWlkWChOU1JlY3QgYVJlY3QpIHsKICAgIHJldHVybiAoYVJlY3Qub3JpZ2luLngg
KyBhUmVjdC5zaXplLndpZHRoICogKENHRmxvYXQpMC41KTsKfQoKc3RhdGljIF9faW5saW5lX18g
X19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIENHRmxvYXQgTlNNaWRZKE5TUmVjdCBhUmVj
dCkgewogICAgcmV0dXJuIChhUmVjdC5vcmlnaW4ueSArIGFSZWN0LnNpemUuaGVpZ2h0ICogKENH
RmxvYXQpMC41KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lu
bGluZSkpIENHRmxvYXQgTlNNaW5YKE5TUmVjdCBhUmVjdCkgewogICAgcmV0dXJuIChhUmVjdC5v
cmlnaW4ueCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxp
bmUpKSBDR0Zsb2F0IE5TTWluWShOU1JlY3QgYVJlY3QpIHsKICAgIHJldHVybiAoYVJlY3Qub3Jp
Z2luLnkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5l
KSkgQ0dGbG9hdCBOU1dpZHRoKE5TUmVjdCBhUmVjdCkgewogICAgcmV0dXJuIChhUmVjdC5zaXpl
LndpZHRoKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGlu
ZSkpIENHRmxvYXQgTlNIZWlnaHQoTlNSZWN0IGFSZWN0KSB7CiAgICByZXR1cm4gKGFSZWN0LnNp
emUuaGVpZ2h0KTsKfQoKCgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNf
aW5saW5lKSkgTlNSZWN0IE5TUmVjdEZyb21DR1JlY3QoQ0dSZWN0IGNncmVjdCkgewogICAgdW5p
b24gXyB7TlNSZWN0IG5zOyBDR1JlY3QgY2c7fTsKICAgIHJldHVybiAoKHVuaW9uIF8gKikmY2dy
ZWN0KS0+bnM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxp
bmUpKSBDR1JlY3QgTlNSZWN0VG9DR1JlY3QoTlNSZWN0IG5zcmVjdCkgewogICAgdW5pb24gXyB7
TlNSZWN0IG5zOyBDR1JlY3QgY2c7fTsKICAgIHJldHVybiAoKHVuaW9uIF8gKikmbnNyZWN0KS0+
Y2c7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBO
U1BvaW50IE5TUG9pbnRGcm9tQ0dQb2ludChDR1BvaW50IGNncG9pbnQpIHsKICAgIHVuaW9uIF8g
e05TUG9pbnQgbnM7IENHUG9pbnQgY2c7fTsKICAgIHJldHVybiAoKHVuaW9uIF8gKikmY2dwb2lu
dCktPm5zOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5l
KSkgQ0dQb2ludCBOU1BvaW50VG9DR1BvaW50KE5TUG9pbnQgbnNwb2ludCkgewogICAgdW5pb24g
XyB7TlNQb2ludCBuczsgQ0dQb2ludCBjZzt9OwogICAgcmV0dXJuICgodW5pb24gXyAqKSZuc3Bv
aW50KS0+Y2c7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxp
bmUpKSBOU1NpemUgTlNTaXplRnJvbUNHU2l6ZShDR1NpemUgY2dzaXplKSB7CiAgICB1bmlvbiBf
IHtOU1NpemUgbnM7IENHU2l6ZSBjZzt9OwogICAgcmV0dXJuICgodW5pb24gXyAqKSZjZ3NpemUp
LT5uczsKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkp
IENHU2l6ZSBOU1NpemVUb0NHU2l6ZShOU1NpemUgbnNzaXplKSB7CiAgICB1bmlvbiBfIHtOU1Np
emUgbnM7IENHU2l6ZSBjZzt9OwogICAgcmV0dXJuICgodW5pb24gXyAqKSZuc3NpemUpLT5jZzsK
fQoKCgpleHRlcm4gIkMiIEJPT0wgTlNFcXVhbFBvaW50cyhOU1BvaW50IGFQb2ludCwgTlNQb2lu
dCBiUG9pbnQpOwpleHRlcm4gIkMiIEJPT0wgTlNFcXVhbFNpemVzKE5TU2l6ZSBhU2l6ZSwgTlNT
aXplIGJTaXplKTsKZXh0ZXJuICJDIiBCT09MIE5TRXF1YWxSZWN0cyhOU1JlY3QgYVJlY3QsIE5T
UmVjdCBiUmVjdCk7CmV4dGVybiAiQyIgQk9PTCBOU0lzRW1wdHlSZWN0KE5TUmVjdCBhUmVjdCk7
CgpleHRlcm4gIkMiIE5TUmVjdCBOU0luc2V0UmVjdChOU1JlY3QgYVJlY3QsIENHRmxvYXQgZFgs
IENHRmxvYXQgZFkpOwpleHRlcm4gIkMiIE5TUmVjdCBOU0ludGVncmFsUmVjdChOU1JlY3QgYVJl
Y3QpOwpleHRlcm4gIkMiIE5TUmVjdCBOU1VuaW9uUmVjdChOU1JlY3QgYVJlY3QsIE5TUmVjdCBi
UmVjdCk7CmV4dGVybiAiQyIgTlNSZWN0IE5TSW50ZXJzZWN0aW9uUmVjdChOU1JlY3QgYVJlY3Qs
IE5TUmVjdCBiUmVjdCk7CmV4dGVybiAiQyIgTlNSZWN0IE5TT2Zmc2V0UmVjdChOU1JlY3QgYVJl
Y3QsIENHRmxvYXQgZFgsIENHRmxvYXQgZFkpOwpleHRlcm4gIkMiIHZvaWQgTlNEaXZpZGVSZWN0
KE5TUmVjdCBpblJlY3QsIE5TUmVjdCAqc2xpY2UsIE5TUmVjdCAqcmVtLCBDR0Zsb2F0IGFtb3Vu
dCwgTlNSZWN0RWRnZSBlZGdlKTsKZXh0ZXJuICJDIiBCT09MIE5TUG9pbnRJblJlY3QoTlNQb2lu
dCBhUG9pbnQsIE5TUmVjdCBhUmVjdCk7CmV4dGVybiAiQyIgQk9PTCBOU01vdXNlSW5SZWN0KE5T
UG9pbnQgYVBvaW50LCBOU1JlY3QgYVJlY3QsIEJPT0wgZmxpcHBlZCk7CmV4dGVybiAiQyIgQk9P
TCBOU0NvbnRhaW5zUmVjdChOU1JlY3QgYVJlY3QsIE5TUmVjdCBiUmVjdCk7CmV4dGVybiAiQyIg
Qk9PTCBOU0ludGVyc2VjdHNSZWN0KE5TUmVjdCBhUmVjdCwgTlNSZWN0IGJSZWN0KTsKCmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TU3RyaW5nRnJvbVBvaW50KE5TUG9pbnQgYVBvaW50KTsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqTlNTdHJpbmdGcm9tU2l6ZShOU1NpemUgYVNpemUpOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpOU1N0cmluZ0Zyb21SZWN0KE5TUmVjdCBhUmVjdCk7CmV4dGVybiAiQyIgTlNQ
b2ludCBOU1BvaW50RnJvbVN0cmluZyhOU1N0cmluZyAqYVN0cmluZyk7CmV4dGVybiAiQyIgTlNT
aXplIE5TU2l6ZUZyb21TdHJpbmcoTlNTdHJpbmcgKmFTdHJpbmcpOwpleHRlcm4gIkMiIE5TUmVj
dCBOU1JlY3RGcm9tU3RyaW5nKE5TU3RyaW5nICphU3RyaW5nKTsKCkBpbnRlcmZhY2UgTlNWYWx1
ZSAoTlNWYWx1ZUdlb21ldHJ5RXh0ZW5zaW9ucykKCisgKE5TVmFsdWUgKil2YWx1ZVdpdGhQb2lu
dDooTlNQb2ludClwb2ludDsKKyAoTlNWYWx1ZSAqKXZhbHVlV2l0aFNpemU6KE5TU2l6ZSlzaXpl
OworIChOU1ZhbHVlICopdmFsdWVXaXRoUmVjdDooTlNSZWN0KXJlY3Q7CgotIChOU1BvaW50KXBv
aW50VmFsdWU7Ci0gKE5TU2l6ZSlzaXplVmFsdWU7Ci0gKE5TUmVjdClyZWN0VmFsdWU7CgpAZW5k
CgpAaW50ZXJmYWNlIE5TQ29kZXIgKE5TR2VvbWV0cnlDb2RpbmcpCgotICh2b2lkKWVuY29kZVBv
aW50OihOU1BvaW50KXBvaW50OwotIChOU1BvaW50KWRlY29kZVBvaW50OwoKLSAodm9pZCllbmNv
ZGVTaXplOihOU1NpemUpc2l6ZTsKLSAoTlNTaXplKWRlY29kZVNpemU7CgotICh2b2lkKWVuY29k
ZVJlY3Q6KE5TUmVjdClyZWN0OwotIChOU1JlY3QpZGVjb2RlUmVjdDsKCkBlbmQKCkBpbnRlcmZh
Y2UgTlNDb2RlciAoTlNHZW9tZXRyeUtleWVkQ29kaW5nKQoKLSAodm9pZCllbmNvZGVQb2ludDoo
TlNQb2ludClwb2ludCBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotICh2b2lkKWVuY29kZVNpemU6
KE5TU2l6ZSlzaXplIGZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0gKHZvaWQpZW5jb2RlUmVjdDoo
TlNSZWN0KXJlY3QgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKCi0gKE5TUG9pbnQpZGVjb2RlUG9p
bnRGb3JLZXk6KE5TU3RyaW5nICopa2V5OwotIChOU1NpemUpZGVjb2RlU2l6ZUZvcktleTooTlNT
dHJpbmcgKilrZXk7Ci0gKE5TUmVjdClkZWNvZGVSZWN0Rm9yS2V5OihOU1N0cmluZyAqKWtleTsK
CkBlbmQKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9I
ZWFkZXJzL05TU2NyZWVuLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0dyYXBoaWNzLmgiIDEgMwojIDkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0dyYXBoaWNzLmgiIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
QXBwS2l0RGVmaW5lcy5oIiAxIDMKCgoKCgoKCiNkZWZpbmUgX0FQUEtJVERFRklORVNfSCAKIyAy
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0Fw
cEtpdERlZmluZXMuaCIgMwojZGVmaW5lIEFQUEtJVF9FWFRFUk4gZXh0ZXJuICJDIgojZGVmaW5l
IEFQUEtJVF9QUklWQVRFX0VYVEVSTiBfX3ByaXZhdGVfZXh0ZXJuX18KIyAxMCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TR3JhcGhpY3MuaCIg
MiAzCgpAY2xhc3MgTlNDb2xvciwgTlNWaWV3OwoKCgoKZW51bSB7CiAgICBOU0NvbXBvc2l0ZUNs
ZWFyID0gMCwKICAgIE5TQ29tcG9zaXRlQ29weSA9IDEsCiAgICBOU0NvbXBvc2l0ZVNvdXJjZU92
ZXIgPSAyLAogICAgTlNDb21wb3NpdGVTb3VyY2VJbiA9IDMsCiAgICBOU0NvbXBvc2l0ZVNvdXJj
ZU91dCA9IDQsCiAgICBOU0NvbXBvc2l0ZVNvdXJjZUF0b3AgPSA1LAogICAgTlNDb21wb3NpdGVE
ZXN0aW5hdGlvbk92ZXIgPSA2LAogICAgTlNDb21wb3NpdGVEZXN0aW5hdGlvbkluID0gNywKICAg
IE5TQ29tcG9zaXRlRGVzdGluYXRpb25PdXQgPSA4LAogICAgTlNDb21wb3NpdGVEZXN0aW5hdGlv
bkF0b3AgPSA5LAogICAgTlNDb21wb3NpdGVYT1IgPSAxMCwKICAgIE5TQ29tcG9zaXRlUGx1c0Rh
cmtlciA9IDExLAogICAgTlNDb21wb3NpdGVIaWdobGlnaHQgPSAxMiwKICAgIE5TQ29tcG9zaXRl
UGx1c0xpZ2h0ZXIgPSAxMwp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNDb21wb3NpdGluZ09wZXJh
dGlvbjsKCgplbnVtIHsKICAgIE5TQmFja2luZ1N0b3JlUmV0YWluZWQgPSAwLAogICAgTlNCYWNr
aW5nU3RvcmVOb25yZXRhaW5lZCA9IDEsCiAgICBOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkID0gMgp9
Owp0eXBlZGVmIE5TVUludGVnZXIgTlNCYWNraW5nU3RvcmVUeXBlOwoKCmVudW0gewogICAgTlNX
aW5kb3dBYm92ZSA9IDEsCiAgICBOU1dpbmRvd0JlbG93ID0gLTEsCiAgICBOU1dpbmRvd091dCA9
IDAKfTsKdHlwZWRlZiBOU0ludGVnZXIgTlNXaW5kb3dPcmRlcmluZ01vZGU7CgoKZW51bSB7CiAg
ICBOU0ZvY3VzUmluZ09ubHkgPSAwLAogICAgTlNGb2N1c1JpbmdCZWxvdyA9IDEsCiAgICBOU0Zv
Y3VzUmluZ0Fib3ZlID0gMgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNGb2N1c1JpbmdQbGFjZW1l
bnQ7CgoKCmVudW0gewogICAgTlNGb2N1c1JpbmdUeXBlRGVmYXVsdCA9IDAsCiAgICBOU0ZvY3Vz
UmluZ1R5cGVOb25lID0gMSwKICAgIE5TRm9jdXNSaW5nVHlwZUV4dGVyaW9yID0gMgp9Owp0eXBl
ZGVmIE5TVUludGVnZXIgTlNGb2N1c1JpbmdUeXBlOwoKCgplbnVtIHsKICAgIE5TQ29sb3JSZW5k
ZXJpbmdJbnRlbnREZWZhdWx0LAogICAgTlNDb2xvclJlbmRlcmluZ0ludGVudEFic29sdXRlQ29s
b3JpbWV0cmljLAogICAgTlNDb2xvclJlbmRlcmluZ0ludGVudFJlbGF0aXZlQ29sb3JpbWV0cmlj
LAogICAgTlNDb2xvclJlbmRlcmluZ0ludGVudFBlcmNlcHR1YWwsCiAgICBOU0NvbG9yUmVuZGVy
aW5nSW50ZW50U2F0dXJhdGlvbgp9Owp0eXBlZGVmIE5TSW50ZWdlciBOU0NvbG9yUmVuZGVyaW5n
SW50ZW50OwoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNDYWxpYnJhdGVkV2hpdGVDb2xvclNw
YWNlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0NhbGlicmF0ZWRSR0JDb2xvclNwYWNlOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU0RldmljZVdoaXRlQ29sb3JTcGFjZTsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqTlNEZXZpY2VSR0JDb2xvclNwYWNlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0Rldmlj
ZUNNWUtDb2xvclNwYWNlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU05hbWVkQ29sb3JTcGFjZTsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNQYXR0ZXJuQ29sb3JTcGFjZTsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqTlNDdXN0b21Db2xvclNwYWNlOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0NhbGli
cmF0ZWRCbGFja0NvbG9yU3BhY2UgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpleHRlcm4g
IkMiIE5TU3RyaW5nICpOU0RldmljZUJsYWNrQ29sb3JTcGFjZSBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CiMgMTAzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvTlNHcmFwaGljcy5oIiAzCmVudW0gewogICAgTlNXaW5kb3dEZXB0aFR3ZW50
eWZvdXJCaXRSR0IgPSAweDIwOCwKICAgIE5TV2luZG93RGVwdGhTaXh0eWZvdXJCaXRSR0IgPSAw
eDIxMCwKICAgIE5TV2luZG93RGVwdGhPbmVodW5kcmVkdHdlbnR5ZWlnaHRCaXRSR0IgPSAweDIy
MAp9OwoKCnR5cGVkZWYgaW50IE5TV2luZG93RGVwdGg7CgpleHRlcm4gIkMiIE5TV2luZG93RGVw
dGggTlNCZXN0RGVwdGggKE5TU3RyaW5nICpjb2xvclNwYWNlLCBOU0ludGVnZXIgYnBzLCBOU0lu
dGVnZXIgYnBwLCBCT09MIHBsYW5hciwgQk9PTCAqZXhhY3RNYXRjaCk7CmV4dGVybiAiQyIgQk9P
TCBOU1BsYW5hckZyb21EZXB0aCAoTlNXaW5kb3dEZXB0aCBkZXB0aCk7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKk5TQ29sb3JTcGFjZUZyb21EZXB0aCAoTlNXaW5kb3dEZXB0aCBkZXB0aCk7CmV4dGVy
biAiQyIgTlNJbnRlZ2VyIE5TQml0c1BlclNhbXBsZUZyb21EZXB0aChOU1dpbmRvd0RlcHRoIGRl
cHRoKTsKZXh0ZXJuICJDIiBOU0ludGVnZXIgTlNCaXRzUGVyUGl4ZWxGcm9tRGVwdGgoTlNXaW5k
b3dEZXB0aCBkZXB0aCk7CmV4dGVybiAiQyIgTlNJbnRlZ2VyIE5TTnVtYmVyT2ZDb2xvckNvbXBv
bmVudHMoTlNTdHJpbmcgKmNvbG9yU3BhY2VOYW1lKTsKZXh0ZXJuICJDIiBjb25zdCBOU1dpbmRv
d0RlcHRoICpOU0F2YWlsYWJsZVdpbmRvd0RlcHRocyAodm9pZCk7CgoKCgpleHRlcm4gIkMiIGNv
bnN0IENHRmxvYXQgTlNXaGl0ZTsKZXh0ZXJuICJDIiBjb25zdCBDR0Zsb2F0IE5TTGlnaHRHcmF5
OwpleHRlcm4gIkMiIGNvbnN0IENHRmxvYXQgTlNEYXJrR3JheTsKZXh0ZXJuICJDIiBjb25zdCBD
R0Zsb2F0IE5TQmxhY2s7CgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0RldmljZVJlc29sdXRp
b247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRGV2aWNlQ29sb3JTcGFjZU5hbWU7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKk5TRGV2aWNlQml0c1BlclNhbXBsZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
TlNEZXZpY2VJc1NjcmVlbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNEZXZpY2VJc1ByaW50ZXI7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRGV2aWNlU2l6ZTsKCgoKCmV4dGVybiAiQyIgdm9pZCBO
U1JlY3RGaWxsKE5TUmVjdCBhUmVjdCk7CmV4dGVybiAiQyIgdm9pZCBOU1JlY3RGaWxsTGlzdChj
b25zdCBOU1JlY3QgKnJlY3RzLCBOU0ludGVnZXIgY291bnQpOwpleHRlcm4gIkMiIHZvaWQgTlNS
ZWN0RmlsbExpc3RXaXRoR3JheXMoY29uc3QgTlNSZWN0ICpyZWN0cywgY29uc3QgQ0dGbG9hdCAq
Z3JheXMsIE5TSW50ZWdlciBudW0pOwpleHRlcm4gIkMiIHZvaWQgTlNSZWN0RmlsbExpc3RXaXRo
Q29sb3JzKGNvbnN0IE5TUmVjdCAqcmVjdHMsIE5TQ29sb3IgKipjb2xvcnMsIE5TSW50ZWdlciBu
dW0pOwpleHRlcm4gIkMiIHZvaWQgTlNSZWN0RmlsbFVzaW5nT3BlcmF0aW9uKE5TUmVjdCBhUmVj
dCwgTlNDb21wb3NpdGluZ09wZXJhdGlvbiBvcCk7CmV4dGVybiAiQyIgdm9pZCBOU1JlY3RGaWxs
TGlzdFVzaW5nT3BlcmF0aW9uKGNvbnN0IE5TUmVjdCAqcmVjdHMsIE5TSW50ZWdlciBjb3VudCwg
TlNDb21wb3NpdGluZ09wZXJhdGlvbiBvcCk7CmV4dGVybiAiQyIgdm9pZCBOU1JlY3RGaWxsTGlz
dFdpdGhDb2xvcnNVc2luZ09wZXJhdGlvbihjb25zdCBOU1JlY3QgKnJlY3RzLCBOU0NvbG9yICoq
Y29sb3JzLCBOU0ludGVnZXIgbnVtLCBOU0NvbXBvc2l0aW5nT3BlcmF0aW9uIG9wKTsKZXh0ZXJu
ICJDIiB2b2lkIE5TRnJhbWVSZWN0KE5TUmVjdCBhUmVjdCk7CmV4dGVybiAiQyIgdm9pZCBOU0Zy
YW1lUmVjdFdpdGhXaWR0aChOU1JlY3QgYVJlY3QsIENHRmxvYXQgZnJhbWVXaWR0aCk7CmV4dGVy
biAiQyIgdm9pZCBOU0ZyYW1lUmVjdFdpdGhXaWR0aFVzaW5nT3BlcmF0aW9uKE5TUmVjdCBhUmVj
dCwgQ0dGbG9hdCBmcmFtZVdpZHRoLCBOU0NvbXBvc2l0aW5nT3BlcmF0aW9uIG9wKTsKZXh0ZXJu
ICJDIiB2b2lkIE5TUmVjdENsaXAoTlNSZWN0IGFSZWN0KTsKZXh0ZXJuICJDIiB2b2lkIE5TUmVj
dENsaXBMaXN0KGNvbnN0IE5TUmVjdCAqcmVjdHMsIE5TSW50ZWdlciBjb3VudCk7CmV4dGVybiAi
QyIgTlNSZWN0IE5TRHJhd1RpbGVkUmVjdHMoTlNSZWN0IGJvdW5kc1JlY3QsIE5TUmVjdCBjbGlw
UmVjdCwgY29uc3QgTlNSZWN0RWRnZSAqc2lkZXMsIGNvbnN0IENHRmxvYXQgKmdyYXlzLCBOU0lu
dGVnZXIgY291bnQpOwpleHRlcm4gIkMiIHZvaWQgTlNEcmF3R3JheUJlemVsKE5TUmVjdCBhUmVj
dCwgTlNSZWN0IGNsaXBSZWN0KTsKZXh0ZXJuICJDIiB2b2lkIE5TRHJhd0dyb292ZShOU1JlY3Qg
YVJlY3QsIE5TUmVjdCBjbGlwUmVjdCk7CmV4dGVybiAiQyIgdm9pZCBOU0RyYXdXaGl0ZUJlemVs
KE5TUmVjdCBhUmVjdCwgTlNSZWN0IGNsaXBSZWN0KTsKZXh0ZXJuICJDIiB2b2lkIE5TRHJhd0J1
dHRvbihOU1JlY3QgYVJlY3QsIE5TUmVjdCBjbGlwUmVjdCk7CmV4dGVybiAiQyIgdm9pZCBOU0Vy
YXNlUmVjdChOU1JlY3QgYVJlY3QpOwpleHRlcm4gIkMiIE5TQ29sb3IgKk5TUmVhZFBpeGVsKE5T
UG9pbnQgcGFzc2VkUG9pbnQpOwpleHRlcm4gIkMiIHZvaWQgTlNEcmF3Qml0bWFwKE5TUmVjdCBy
ZWN0LCBOU0ludGVnZXIgd2lkdGgsIE5TSW50ZWdlciBoZWlnaHQsIE5TSW50ZWdlciBicHMsIE5T
SW50ZWdlciBzcHAsIE5TSW50ZWdlciBicHAsIE5TSW50ZWdlciBicHIsIEJPT0wgaXNQbGFuYXIs
IEJPT0wgaGFzQWxwaGEsIE5TU3RyaW5nICpjb2xvclNwYWNlTmFtZSwgY29uc3QgdW5zaWduZWQg
Y2hhciAqY29uc3QgZGF0YVs1XSk7CmV4dGVybiAiQyIgdm9pZCBOU0NvcHlCaXRzKE5TSW50ZWdl
ciBzcmNHU3RhdGUsIE5TUmVjdCBzcmNSZWN0LCBOU1BvaW50IGRlc3RQb2ludCk7CmV4dGVybiAi
QyIgdm9pZCBOU0hpZ2hsaWdodFJlY3QoTlNSZWN0IGFSZWN0KTsKZXh0ZXJuICJDIiB2b2lkIE5T
QmVlcCh2b2lkKTsKCgpleHRlcm4gIkMiIE5TSW50ZWdlciBOU0dldFdpbmRvd1NlcnZlck1lbW9y
eShOU0ludGVnZXIgY29udGV4dCwgTlNJbnRlZ2VyICp2aXJ0dWFsTWVtb3J5LCBOU0ludGVnZXIg
KndpbmRvd0JhY2tpbmdNZW1vcnksIE5TU3RyaW5nICoqd2luZG93RHVtcFN0cmluZyk7CgpleHRl
cm4gIkMiIE5TUmVjdCBOU0RyYXdDb2xvclRpbGVkUmVjdHMoTlNSZWN0IGJvdW5kc1JlY3QsIE5T
UmVjdCBjbGlwUmVjdCwgY29uc3QgTlNSZWN0RWRnZSAqc2lkZXMsIE5TQ29sb3IgKipjb2xvcnMs
IE5TSW50ZWdlciBjb3VudCk7CmV4dGVybiAiQyIgdm9pZCBOU0RyYXdEYXJrQmV6ZWwoTlNSZWN0
IGFSZWN0LCBOU1JlY3QgY2xpcFJlY3QpOwpleHRlcm4gIkMiIHZvaWQgTlNEcmF3TGlnaHRCZXpl
bChOU1JlY3QgYVJlY3QsIE5TUmVjdCBjbGlwUmVjdCk7CmV4dGVybiAiQyIgdm9pZCBOU0RvdHRl
ZEZyYW1lUmVjdChOU1JlY3QgYVJlY3QpOwoKZXh0ZXJuICJDIiB2b2lkIE5TRHJhd1dpbmRvd0Jh
Y2tncm91bmQoTlNSZWN0IGFSZWN0KTsKZXh0ZXJuICJDIiB2b2lkIE5TU2V0Rm9jdXNSaW5nU3R5
bGUoTlNGb2N1c1JpbmdQbGFjZW1lbnQgcGxhY2VtZW50KTsKIyAxODYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0dyYXBoaWNzLmgiIDMKZXh0
ZXJuICJDIiB2b2lkIE5TRGlzYWJsZVNjcmVlblVwZGF0ZXModm9pZCkgOwpleHRlcm4gIkMiIHZv
aWQgTlNFbmFibGVTY3JlZW5VcGRhdGVzKHZvaWQpIDsKIyAyMDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0dyYXBoaWNzLmgiIDMKZW51bSB7
CgoKIE5TQW5pbWF0aW9uRWZmZWN0RGlzYXBwZWFyaW5nSXRlbURlZmF1bHQgPSAwLAoKCiBOU0Fu
aW1hdGlvbkVmZmVjdFBvb2YgPSAxMAp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNBbmltYXRpb25F
ZmZlY3Q7CgpleHRlcm4gIkMiIHZvaWQgTlNTaG93QW5pbWF0aW9uRWZmZWN0KE5TQW5pbWF0aW9u
RWZmZWN0IGFuaW1hdGlvbkVmZmVjdCwgTlNQb2ludCBjZW50ZXJMb2NhdGlvbiwgTlNTaXplIHNp
emUsIGlkIGFuaW1hdGlvbkRlbGVnYXRlLCBTRUwgZGlkRW5kU2VsZWN0b3IsIHZvaWQgKmNvbnRl
eHRJbmZvKSA7CgoKCgpleHRlcm4gIkMiIHZvaWQgTlNDb3VudFdpbmRvd3MoTlNJbnRlZ2VyICpj
b3VudCk7CmV4dGVybiAiQyIgdm9pZCBOU1dpbmRvd0xpc3QoTlNJbnRlZ2VyIHNpemUsIE5TSW50
ZWdlciBsaXN0W10pOwpleHRlcm4gIkMiIHZvaWQgTlNDb3VudFdpbmRvd3NGb3JDb250ZXh0KE5T
SW50ZWdlciBjb250ZXh0LCBOU0ludGVnZXIgKmNvdW50KTsKZXh0ZXJuICJDIiB2b2lkIE5TV2lu
ZG93TGlzdEZvckNvbnRleHQoTlNJbnRlZ2VyIGNvbnRleHQsIE5TSW50ZWdlciBzaXplLCBOU0lu
dGVnZXIgbGlzdFtdKTsKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZy
YW1ld29yay9IZWFkZXJzL05TU2NyZWVuLmgiIDIgMwoKQGNsYXNzIE5TQXJyYXksIE5TQ29sb3JT
cGFjZTsKCnR5cGVkZWYgc3RydWN0IE5TU2NyZWVuQXV4aWxpYXJ5IE5TU2NyZWVuQXV4aWxpYXJ5
T3BhcXVlOwoKQGludGVyZmFjZSBOU1NjcmVlbiA6IE5TT2JqZWN0IHsKCkBwcml2YXRlCiAgICBO
U1JlY3QgX2ZyYW1lOwogICAgTlNXaW5kb3dEZXB0aCBfZGVwdGg7CiAgICBpbnQgX3NjcmVlbk51
bWJlcjsKICAgIGlkIF9hdXhpbGlhcnlTdG9yYWdlOwp9CgorIChOU0FycmF5ICopc2NyZWVuczsK
KyAoTlNTY3JlZW4gKiltYWluU2NyZWVuOworIChOU1NjcmVlbiAqKWRlZXBlc3RTY3JlZW47Cgot
IChOU1dpbmRvd0RlcHRoKWRlcHRoOwotIChOU1JlY3QpZnJhbWU7Ci0gKE5TUmVjdCl2aXNpYmxl
RnJhbWU7Ci0gKE5TRGljdGlvbmFyeSAqKWRldmljZURlc2NyaXB0aW9uOwotIChOU0NvbG9yU3Bh
Y2UgKiljb2xvclNwYWNlIDsKCi0gKGNvbnN0IE5TV2luZG93RGVwdGggKilzdXBwb3J0ZWRXaW5k
b3dEZXB0aHM7CgoKCgotIChDR0Zsb2F0KXVzZXJTcGFjZVNjYWxlRmFjdG9yOwoKCgpAZW5kCgoK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TU2NyZWVuQ29sb3JTcGFjZURpZENoYW5nZU5v
dGlmaWNhdGlvbiA7CiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgiIDIKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVGltZXIuaCIgMSAzCgoKCgoK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFk
ZXJzL05TRGF0ZS5oIiAxIDMKCgoKCgoKQGNsYXNzIE5TU3RyaW5nOwoKZXh0ZXJuICJDIiBOU1N0
cmluZyAqIGNvbnN0IE5TU3lzdGVtQ2xvY2tEaWRDaGFuZ2VOb3RpZmljYXRpb24gOwoKdHlwZWRl
ZiBkb3VibGUgTlNUaW1lSW50ZXJ2YWw7CgojZGVmaW5lIE5TVGltZUludGVydmFsU2luY2UxOTcw
IDk3ODMwNzIwMC4wCgpAaW50ZXJmYWNlIE5TRGF0ZSA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5T
Q29kaW5nPgoKLSAoTlNUaW1lSW50ZXJ2YWwpdGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRl
OwoKQGVuZAoKQGludGVyZmFjZSBOU0RhdGUgKE5TRXh0ZW5kZWREYXRlKQoKLSAoTlNUaW1lSW50
ZXJ2YWwpdGltZUludGVydmFsU2luY2VEYXRlOihOU0RhdGUgKilhbm90aGVyRGF0ZTsKLSAoTlNU
aW1lSW50ZXJ2YWwpdGltZUludGVydmFsU2luY2VOb3c7Ci0gKE5TVGltZUludGVydmFsKXRpbWVJ
bnRlcnZhbFNpbmNlMTk3MDsKCi0gKGlkKWFkZFRpbWVJbnRlcnZhbDooTlNUaW1lSW50ZXJ2YWwp
c2Vjb25kcyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKGlkKWRhdGVCeUFkZGluZ1Rp
bWVJbnRlcnZhbDooTlNUaW1lSW50ZXJ2YWwpdGkgOwoKLSAoTlNEYXRlICopZWFybGllckRhdGU6
KE5TRGF0ZSAqKWFub3RoZXJEYXRlOwotIChOU0RhdGUgKilsYXRlckRhdGU6KE5TRGF0ZSAqKWFu
b3RoZXJEYXRlOwotIChOU0NvbXBhcmlzb25SZXN1bHQpY29tcGFyZTooTlNEYXRlICopb3RoZXI7
Ci0gKEJPT0wpaXNFcXVhbFRvRGF0ZTooTlNEYXRlICopb3RoZXJEYXRlOwoKLSAoTlNTdHJpbmcg
KilkZXNjcmlwdGlvbjsKLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbldpdGhMb2NhbGU6KGlkKWxv
Y2FsZTsKCisgKE5TVGltZUludGVydmFsKXRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTsK
CkBlbmQKCkBpbnRlcmZhY2UgTlNEYXRlIChOU0RhdGVDcmVhdGlvbikKCisgKGlkKWRhdGU7Cgor
IChpZClkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93OihOU1RpbWVJbnRlcnZhbClzZWNzOwor
IChpZClkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTooTlNUaW1lSW50ZXJ2
YWwpc2VjczsKKyAoaWQpZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6KE5TVGltZUludGVy
dmFsKXNlY3M7CisgKGlkKWRhdGVXaXRoVGltZUludGVydmFsOihOU1RpbWVJbnRlcnZhbCl0aSBz
aW5jZURhdGU6KE5TRGF0ZSAqKWRhdGUgOwoKKyAoaWQpZGlzdGFudEZ1dHVyZTsKKyAoaWQpZGlz
dGFudFBhc3Q7CgotIChpZClpbml0OwotIChpZClpbml0V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93
OihOU1RpbWVJbnRlcnZhbClzZWNzOwotIChpZClpbml0V2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVm
ZXJlbmNlRGF0ZTooTlNUaW1lSW50ZXJ2YWwpc2Vjc1RvQmVBZGRlZDsKLSAoaWQpaW5pdFdpdGhU
aW1lSW50ZXJ2YWxTaW5jZTE5NzA6KE5TVGltZUludGVydmFsKXRpIDsKLSAoaWQpaW5pdFdpdGhU
aW1lSW50ZXJ2YWw6KE5TVGltZUludGVydmFsKXNlY3NUb0JlQWRkZWQgc2luY2VEYXRlOihOU0Rh
dGUgKilhbm90aGVyRGF0ZTsKCkBlbmQKIyA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9G
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVGltZXIuaCIgMiAzCgpAaW50ZXJmYWNlIE5T
VGltZXIgOiBOU09iamVjdAoKKyAoTlNUaW1lciAqKXRpbWVyV2l0aFRpbWVJbnRlcnZhbDooTlNU
aW1lSW50ZXJ2YWwpdGkgaW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbiByZXBl
YXRzOihCT09MKXllc09yTm87CisgKE5TVGltZXIgKilzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50
ZXJ2YWw6KE5TVGltZUludGVydmFsKXRpIGludm9jYXRpb246KE5TSW52b2NhdGlvbiAqKWludm9j
YXRpb24gcmVwZWF0czooQk9PTCl5ZXNPck5vOwoKKyAoTlNUaW1lciAqKXRpbWVyV2l0aFRpbWVJ
bnRlcnZhbDooTlNUaW1lSW50ZXJ2YWwpdGkgdGFyZ2V0OihpZClhVGFyZ2V0IHNlbGVjdG9yOihT
RUwpYVNlbGVjdG9yIHVzZXJJbmZvOihpZCl1c2VySW5mbyByZXBlYXRzOihCT09MKXllc09yTm87
CisgKE5TVGltZXIgKilzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6KE5TVGltZUludGVy
dmFsKXRpIHRhcmdldDooaWQpYVRhcmdldCBzZWxlY3RvcjooU0VMKWFTZWxlY3RvciB1c2VySW5m
bzooaWQpdXNlckluZm8gcmVwZWF0czooQk9PTCl5ZXNPck5vOwoKCi0gKGlkKWluaXRXaXRoRmly
ZURhdGU6KE5TRGF0ZSAqKWRhdGUgaW50ZXJ2YWw6KE5TVGltZUludGVydmFsKXRpIHRhcmdldDoo
aWQpdCBzZWxlY3RvcjooU0VMKXMgdXNlckluZm86KGlkKXVpIHJlcGVhdHM6KEJPT0wpcmVwOwoK
Ci0gKHZvaWQpZmlyZTsKCi0gKE5TRGF0ZSAqKWZpcmVEYXRlOwoKLSAodm9pZClzZXRGaXJlRGF0
ZTooTlNEYXRlICopZGF0ZTsKCgotIChOU1RpbWVJbnRlcnZhbCl0aW1lSW50ZXJ2YWw7CgotICh2
b2lkKWludmFsaWRhdGU7Ci0gKEJPT0wpaXNWYWxpZDsKCi0gKGlkKXVzZXJJbmZvOwoKQGVuZAoj
IDMxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9SZWZQdHIuaCIgMQojIDI0ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Jl
ZlB0ci5oIgojZGVmaW5lIFdURl9SZWZQdHJfaCAKCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9hbGdvcml0aG0iIDEgMwojIDYxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2FsZ29yaXRobSIg
MwojZGVmaW5lIF9HTElCQ1hYX0FMR09SSVRITSAxCgogICAgICAgCiMgNjQgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYWxnb3JpdGhtIiAzCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0
cy9zdGxfYWxnb2Jhc2UuaCIgMSAzCiMgNjMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9z
dGxfYWxnb2Jhc2UuaCIgMwojZGVmaW5lIF9BTEdPQkFTRV9IIDEKCgojIDEgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvY3N0cmluZyIgMSAzCiMgNDYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvY3N0
cmluZyIgMwojZGVmaW5lIF9HTElCQ1hYX0NTVFJJTkcgMQoKICAgICAgIAojIDQ5ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2NzdHJpbmciIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi
IDEgMyA0CiMgNTkgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CiNkZWZpbmUgX1NUUklOR19I
XyAKIyA4MCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiB7CnZvaWQgKm1l
bWNocihjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKaW50IG1lbWNtcChjb25zdCB2b2lkICos
IGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKdm9pZCAqbWVtY3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAq
LCBzaXplX3QpOwp2b2lkICptZW1tb3ZlKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2
b2lkICptZW1zZXQodm9pZCAqLCBpbnQsIHNpemVfdCk7CgpjaGFyICpzdHBjcHkoY2hhciAqLCBj
b25zdCBjaGFyICopOwpjaGFyICpzdHJjYXNlc3RyKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
KTsKCmNoYXIgKnN0cmNhdChjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cmNocihjb25z
dCBjaGFyICosIGludCk7CmludCBzdHJjbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpp
bnQgc3RyY29sbChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cmNweShjaGFy
ICosIGNvbnN0IGNoYXIgKik7CnNpemVfdCBzdHJjc3BuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsKY2hhciAqc3RyZXJyb3IoaW50KSBfX2FzbSgiXyIgInN0cmVycm9yIiApOwppbnQgc3Ry
ZXJyb3JfcihpbnQsIGNoYXIgKiwgc2l6ZV90KTsKc2l6ZV90IHN0cmxlbihjb25zdCBjaGFyICop
OwpjaGFyICpzdHJuY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgc3RybmNt
cChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3RybmNweShjaGFy
ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKCmNoYXIgKnN0cm5zdHIoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICosIHNpemVfdCk7CgpjaGFyICpzdHJwYnJrKGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqKTsKY2hhciAqc3RycmNocihjb25zdCBjaGFyICosIGludCk7CnNpemVfdCBzdHJzcG4o
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpjaGFyICpzdHJzdHIoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICopOwpjaGFyICpzdHJ0b2soY2hhciAqLCBjb25zdCBjaGFyICopOwpzaXplX3Qg
c3RyeGZybShjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKCgoKdm9pZCAqbWVtY2NweSh2
b2lkICosIGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwpjaGFyICpzdHJ0b2tfcihjaGFyICos
IGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CmNoYXIgKnN0cmR1cChjb25zdCBjaGFyICopOwoKaW50
IGJjbXAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgYmNvcHkoY29u
c3Qgdm9pZCAqLCB2b2lkICosIHNpemVfdCk7CnZvaWQgYnplcm8odm9pZCAqLCBzaXplX3QpOwpp
bnQgZmZzKGludCk7CmludCBmZnNsKGxvbmcpOwppbnQgZmxzKGludCk7CmludCBmbHNsKGxvbmcp
OwpjaGFyICppbmRleChjb25zdCBjaGFyICosIGludCk7CnZvaWQgbWVtc2V0X3BhdHRlcm40KHZv
aWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkIG1lbXNldF9wYXR0ZXJuOCh2b2lkICos
IGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKdm9pZCBtZW1zZXRfcGF0dGVybjE2KHZvaWQgKiwgY29u
c3Qgdm9pZCAqLCBzaXplX3QpOwpjaGFyICpyaW5kZXgoY29uc3QgY2hhciAqLCBpbnQpOwppbnQg
c3RyY2FzZWNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CnNpemVfdCBzdHJsY2F0KGNo
YXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3Qgc3RybGNweShjaGFyICosIGNvbnN0
IGNoYXIgKiwgc2l6ZV90KTsKdm9pZCBzdHJtb2RlKGludCwgY2hhciAqKTsKaW50IHN0cm5jYXNl
Y21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpzdHJzZXAoY2hh
ciAqKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3Ryc2lnbmFsKGludCBzaWcpOwp2b2lkIHN3YWIo
Y29uc3Qgdm9pZCAqICwgdm9pZCAqICwgc3NpemVfdCk7CgoKfQojIDUzICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2NzdHJpbmciIDIgMwoKCiN1bmRlZiBtZW1jcHkKI3VuZGVmIG1lbW1vdmUKI3Vu
ZGVmIHN0cmNweQojdW5kZWYgc3RybmNweQojdW5kZWYgc3RyY2F0CiN1bmRlZiBzdHJuY2F0CiN1
bmRlZiBtZW1jbXAKI3VuZGVmIHN0cmNtcAojdW5kZWYgc3RyY29sbAojdW5kZWYgc3RybmNtcAoj
dW5kZWYgc3RyeGZybQojdW5kZWYgbWVtY2hyCiN1bmRlZiBzdHJjaHIKI3VuZGVmIHN0cmNzcG4K
I3VuZGVmIHN0cnBicmsKI3VuZGVmIHN0cnJjaHIKI3VuZGVmIHN0cnNwbgojdW5kZWYgc3Ryc3Ry
CiN1bmRlZiBzdHJ0b2sKI3VuZGVmIG1lbXNldAojdW5kZWYgc3RyZXJyb3IKI3VuZGVmIHN0cmxl
bgoKbmFtZXNwYWNlIHN0ZCB7CgogIHVzaW5nIDo6bWVtY3B5OwogIHVzaW5nIDo6bWVtbW92ZTsK
ICB1c2luZyA6OnN0cmNweTsKICB1c2luZyA6OnN0cm5jcHk7CiAgdXNpbmcgOjpzdHJjYXQ7CiAg
dXNpbmcgOjpzdHJuY2F0OwogIHVzaW5nIDo6bWVtY21wOwogIHVzaW5nIDo6c3RyY21wOwogIHVz
aW5nIDo6c3RyY29sbDsKICB1c2luZyA6OnN0cm5jbXA7CiAgdXNpbmcgOjpzdHJ4ZnJtOwogIHVz
aW5nIDo6c3RyY3NwbjsKICB1c2luZyA6OnN0cnNwbjsKICB1c2luZyA6OnN0cnRvazsKICB1c2lu
ZyA6Om1lbXNldDsKICB1c2luZyA6OnN0cmVycm9yOwogIHVzaW5nIDo6c3RybGVuOwoKICB1c2lu
ZyA6Om1lbWNocjsKCiAgaW5saW5lIHZvaWQqCiAgbWVtY2hyKHZvaWQqIF9fcCwgaW50IF9fYywg
c2l6ZV90IF9fbikKICB7IHJldHVybiBtZW1jaHIoY29uc3RfY2FzdDxjb25zdCB2b2lkKj4oX19w
KSwgX19jLCBfX24pOyB9CgogIHVzaW5nIDo6c3RyY2hyOwoKICBpbmxpbmUgY2hhcioKICBzdHJj
aHIoY2hhciogX19zMSwgaW50IF9fbikKICB7IHJldHVybiBfX2J1aWx0aW5fc3RyY2hyKGNvbnN0
X2Nhc3Q8Y29uc3QgY2hhcio+KF9fczEpLCBfX24pOyB9CgogIHVzaW5nIDo6c3RycGJyazsKCiAg
aW5saW5lIGNoYXIqCiAgc3RycGJyayhjaGFyKiBfX3MxLCBjb25zdCBjaGFyKiBfX3MyKQogIHsg
cmV0dXJuIF9fYnVpbHRpbl9zdHJwYnJrKGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KF9fczEpLCBf
X3MyKTsgfQoKICB1c2luZyA6OnN0cnJjaHI7CgogIGlubGluZSBjaGFyKgogIHN0cnJjaHIoY2hh
ciogX19zMSwgaW50IF9fbikKICB7IHJldHVybiBfX2J1aWx0aW5fc3RycmNocihjb25zdF9jYXN0
PGNvbnN0IGNoYXIqPihfX3MxKSwgX19uKTsgfQoKICB1c2luZyA6OnN0cnN0cjsKCiAgaW5saW5l
IGNoYXIqCiAgc3Ryc3RyKGNoYXIqIF9fczEsIGNvbnN0IGNoYXIqIF9fczIpCiAgeyByZXR1cm4g
X19idWlsdGluX3N0cnN0cihjb25zdF9jYXN0PGNvbnN0IGNoYXIqPihfX3MxKSwgX19zMik7IH0K
Cn0KIyA2NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMK
IyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2NsaW1pdHMiIDEgMwojIDQ2ICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2NsaW1pdHMiIDMKI2RlZmluZSBfR0xJQkNYWF9DTElNSVRTIDEKCiAgICAg
ICAKIyA0OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jbGltaXRzIiAzCgojIDEgIi91c3IvbGli
L2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CgoK
CgoKCiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9z
eXNsaW1pdHMuaCIgMSAzIDQKCgoKCgojZGVmaW5lIF9HQ0NfTkVYVF9MSU1JVFNfSCAKIyA4ICIv
dXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL2xpbWl0cy5oIiAy
IDMgNAoKCgojdW5kZWYgX0dDQ19ORVhUX0xJTUlUU19ICiMgNTEgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvY2xpbWl0cyIgMiAzCiMgNjggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxf
YWxnb2Jhc2UuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jc3RkbGliIiAxIDMK
IyA0NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jc3RkbGliIiAzCiNkZWZpbmUgX0dMSUJDWFhf
Q1NURExJQiAxCgogICAgICAgCiMgNDkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvY3N0ZGxpYiIg
MwojIDc1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2NzdGRsaWIiIDMKI3VuZGVmIGFib3J0CiN1
bmRlZiBhYnMKI3VuZGVmIGF0ZXhpdAojdW5kZWYgYXRvZgojdW5kZWYgYXRvaQojdW5kZWYgYXRv
bAojdW5kZWYgYnNlYXJjaAojdW5kZWYgY2FsbG9jCiN1bmRlZiBkaXYKI3VuZGVmIGV4aXQKI3Vu
ZGVmIGZyZWUKI3VuZGVmIGdldGVudgojdW5kZWYgbGFicwojdW5kZWYgbGRpdgojdW5kZWYgbWFs
bG9jCiN1bmRlZiBtYmxlbgojdW5kZWYgbWJzdG93Y3MKI3VuZGVmIG1idG93YwojdW5kZWYgcXNv
cnQKI3VuZGVmIHJhbmQKI3VuZGVmIHJlYWxsb2MKI3VuZGVmIHNyYW5kCiN1bmRlZiBzdHJ0b2QK
I3VuZGVmIHN0cnRvbAojdW5kZWYgc3RydG91bAojdW5kZWYgc3lzdGVtCiN1bmRlZiB3Y3N0b21i
cwojdW5kZWYgd2N0b21iCgpuYW1lc3BhY2Ugc3RkIHsKCiAgdXNpbmcgOjpkaXZfdDsKICB1c2lu
ZyA6OmxkaXZfdDsKCiAgdXNpbmcgOjphYm9ydDsKICB1c2luZyA6OmFiczsKICB1c2luZyA6OmF0
ZXhpdDsKICB1c2luZyA6OmF0b2Y7CiAgdXNpbmcgOjphdG9pOwogIHVzaW5nIDo6YXRvbDsKICB1
c2luZyA6OmJzZWFyY2g7CiAgdXNpbmcgOjpjYWxsb2M7CiAgdXNpbmcgOjpkaXY7CiAgdXNpbmcg
OjpleGl0OwogIHVzaW5nIDo6ZnJlZTsKICB1c2luZyA6OmdldGVudjsKICB1c2luZyA6OmxhYnM7
CiAgdXNpbmcgOjpsZGl2OwogIHVzaW5nIDo6bWFsbG9jOwoKICB1c2luZyA6Om1ibGVuOwogIHVz
aW5nIDo6bWJzdG93Y3M7CiAgdXNpbmcgOjptYnRvd2M7CgogIHVzaW5nIDo6cXNvcnQ7CiAgdXNp
bmcgOjpyYW5kOwogIHVzaW5nIDo6cmVhbGxvYzsKICB1c2luZyA6OnNyYW5kOwogIHVzaW5nIDo6
c3RydG9kOwogIHVzaW5nIDo6c3RydG9sOwogIHVzaW5nIDo6c3RydG91bDsKICB1c2luZyA6OnN5
c3RlbTsKCiAgdXNpbmcgOjp3Y3N0b21iczsKICB1c2luZyA6OndjdG9tYjsKCgogIGlubGluZSBs
b25nCiAgYWJzKGxvbmcgX19pKSB7IHJldHVybiBsYWJzKF9faSk7IH0KCiAgaW5saW5lIGxkaXZf
dAogIGRpdihsb25nIF9faSwgbG9uZyBfX2opIHsgcmV0dXJuIGxkaXYoX19pLCBfX2opOyB9Cgp9
CgoKCiN1bmRlZiBfRXhpdAojdW5kZWYgbGxhYnMKI3VuZGVmIGxsZGl2CiN1bmRlZiBhdG9sbAoj
dW5kZWYgc3RydG9sbAojdW5kZWYgc3RydG91bGwKI3VuZGVmIHN0cnRvZgojdW5kZWYgc3RydG9s
ZAoKbmFtZXNwYWNlIF9fZ251X2N4eCB7CgoKICB1c2luZyA6OmxsZGl2X3Q7CgoKCgoKICB1c2lu
ZyA6Ol9FeGl0OwoKCiAgaW5saW5lIGxvbmcgbG9uZwogIGFicyhsb25nIGxvbmcgX194KSB7IHJl
dHVybiBfX3ggPj0gMCA/IF9feCA6IC1fX3g7IH0KCgogIHVzaW5nIDo6bGxhYnM7CgogIGlubGlu
ZSBsbGRpdl90CiAgZGl2KGxvbmcgbG9uZyBfX24sIGxvbmcgbG9uZyBfX2QpCiAgeyBsbGRpdl90
IF9fcTsgX19xLnF1b3QgPSBfX24gLyBfX2Q7IF9fcS5yZW0gPSBfX24gJSBfX2Q7IHJldHVybiBf
X3E7IH0KCiAgdXNpbmcgOjpsbGRpdjsKIyAxOTQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvY3N0
ZGxpYiIgMwogIHVzaW5nIDo6YXRvbGw7CiAgdXNpbmcgOjpzdHJ0b2xsOwogIHVzaW5nIDo6c3Ry
dG91bGw7CgogIHVzaW5nIDo6c3RydG9mOwogIHVzaW5nIDo6c3RydG9sZDsKCn0KCm5hbWVzcGFj
ZSBzdGQgewoKCiAgdXNpbmcgOjpfX2dudV9jeHg6OmxsZGl2X3Q7CgogIHVzaW5nIDo6X19nbnVf
Y3h4OjpfRXhpdDsKICB1c2luZyA6Ol9fZ251X2N4eDo6YWJzOwoKICB1c2luZyA6Ol9fZ251X2N4
eDo6bGxhYnM7CiAgdXNpbmcgOjpfX2dudV9jeHg6OmRpdjsKICB1c2luZyA6Ol9fZ251X2N4eDo6
bGxkaXY7CgogIHVzaW5nIDo6X19nbnVfY3h4OjphdG9sbDsKICB1c2luZyA6Ol9fZ251X2N4eDo6
c3RydG9mOwogIHVzaW5nIDo6X19nbnVfY3h4OjpzdHJ0b2xsOwogIHVzaW5nIDo6X19nbnVfY3h4
OjpzdHJ0b3VsbDsKICB1c2luZyA6Ol9fZ251X2N4eDo6c3RydG9sZDsKCn0KIyA2OSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9pb3Nmd2QiIDEgMwojIDQwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2lv
c2Z3ZCIgMwojZGVmaW5lIF9HTElCQ1hYX0lPU0ZXRCAxCgogICAgICAgCiMgNDMgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvaW9zZndkIiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2
ODYtYXBwbGUtZGFyd2luMTAveDg2XzY0L2JpdHMvYysrbG9jYWxlLmgiIDEgMwojIDQzICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2XzY0L2JpdHMvYysrbG9j
YWxlLmgiIDMKI2RlZmluZSBfQ19MT0NBTEVfSCAxCgogICAgICAgCiMgNDYgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9jKytsb2NhbGUuaCIg
MwoKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Nsb2NhbGUiIDEgMwojIDQ2ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2Nsb2NhbGUiIDMKI2RlZmluZSBfR0xJQkNYWF9DTE9DQUxFIDEKCiAg
ICAgICAKIyA0OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jbG9jYWxlIiAzCgoKIyAxICIvdXNy
L2luY2x1ZGUvbG9jYWxlLmgiIDEgMyA0CiMgMzggIi91c3IvaW5jbHVkZS9sb2NhbGUuaCIgMyA0
CiNkZWZpbmUgX0xPQ0FMRV9IXyAKCiMgMSAiL3Vzci9pbmNsdWRlL19sb2NhbGUuaCIgMSAzIDQK
IyAzOCAiL3Vzci9pbmNsdWRlL19sb2NhbGUuaCIgMyA0CiNkZWZpbmUgX19MT0NBTEVfSF8gCgoK
CgpzdHJ1Y3QgbGNvbnYgewogY2hhciAqZGVjaW1hbF9wb2ludDsKIGNoYXIgKnRob3VzYW5kc19z
ZXA7CiBjaGFyICpncm91cGluZzsKIGNoYXIgKmludF9jdXJyX3N5bWJvbDsKIGNoYXIgKmN1cnJl
bmN5X3N5bWJvbDsKIGNoYXIgKm1vbl9kZWNpbWFsX3BvaW50OwogY2hhciAqbW9uX3Rob3VzYW5k
c19zZXA7CiBjaGFyICptb25fZ3JvdXBpbmc7CiBjaGFyICpwb3NpdGl2ZV9zaWduOwogY2hhciAq
bmVnYXRpdmVfc2lnbjsKIGNoYXIgaW50X2ZyYWNfZGlnaXRzOwogY2hhciBmcmFjX2RpZ2l0czsK
IGNoYXIgcF9jc19wcmVjZWRlczsKIGNoYXIgcF9zZXBfYnlfc3BhY2U7CiBjaGFyIG5fY3NfcHJl
Y2VkZXM7CiBjaGFyIG5fc2VwX2J5X3NwYWNlOwogY2hhciBwX3NpZ25fcG9zbjsKIGNoYXIgbl9z
aWduX3Bvc247CiBjaGFyIGludF9wX2NzX3ByZWNlZGVzOwogY2hhciBpbnRfbl9jc19wcmVjZWRl
czsKIGNoYXIgaW50X3Bfc2VwX2J5X3NwYWNlOwogY2hhciBpbnRfbl9zZXBfYnlfc3BhY2U7CiBj
aGFyIGludF9wX3NpZ25fcG9zbjsKIGNoYXIgaW50X25fc2lnbl9wb3NuOwp9OwoKCgoKCmV4dGVy
biAiQyIgewpzdHJ1Y3QgbGNvbnYgKmxvY2FsZWNvbnYodm9pZCk7Cn0KIyA0MSAiL3Vzci9pbmNs
dWRlL2xvY2FsZS5oIiAyIDMgNAoKI2RlZmluZSBMQ19BTEwgMAojZGVmaW5lIExDX0NPTExBVEUg
MQojZGVmaW5lIExDX0NUWVBFIDIKI2RlZmluZSBMQ19NT05FVEFSWSAzCiNkZWZpbmUgTENfTlVN
RVJJQyA0CiNkZWZpbmUgTENfVElNRSA1CiNkZWZpbmUgTENfTUVTU0FHRVMgNgoKI2RlZmluZSBf
TENfTEFTVCA3CgpleHRlcm4gIkMiIHsKY2hhciAqc2V0bG9jYWxlKGludCwgY29uc3QgY2hhciAq
KTsKfQojIDUyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Nsb2NhbGUiIDIgMwoKCiN1bmRlZiBz
ZXRsb2NhbGUKI3VuZGVmIGxvY2FsZWNvbnYKCm5hbWVzcGFjZSBzdGQgewoKICB1c2luZyA6Omxj
b252OwogIHVzaW5nIDo6c2V0bG9jYWxlOwogIHVzaW5nIDo6bG9jYWxlY29udjsKCn0KIyA0OCAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9iaXRzL2Mr
K2xvY2FsZS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jc3RkaW8iIDEgMwoj
IDQ2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2NzdGRpbyIgMwojZGVmaW5lIF9HTElCQ1hYX0NT
VERJTyAxCgogICAgICAgCiMgNDkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvY3N0ZGlvIiAzCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAxIDMgNAojIDYyICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMyA0CiNkZWZpbmUgX1NURElPX0hfIAojIDg3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MyA0CnR5cGVkZWYgX19kYXJ3aW5fb2ZmX3QgZnBvc190OwoKI2RlZmluZSBfRlNURElPIAojIDk4
ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CnN0cnVjdCBfX3NidWYgewogdW5zaWduZWQgY2hh
ciAqX2Jhc2U7CiBpbnQgX3NpemU7Cn07CgoKc3RydWN0IF9fc0ZJTEVYOwojIDEzMiAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBfX3NGSUxFIHsKIHVuc2lnbmVkIGNo
YXIgKl9wOwogaW50IF9yOwogaW50IF93Owogc2hvcnQgX2ZsYWdzOwogc2hvcnQgX2ZpbGU7CiBz
dHJ1Y3QgX19zYnVmIF9iZjsKIGludCBfbGJmc2l6ZTsKCgogdm9pZCAqX2Nvb2tpZTsKIGludCAo
Kl9jbG9zZSkodm9pZCAqKTsKIGludCAoKl9yZWFkKSAodm9pZCAqLCBjaGFyICosIGludCk7CiBm
cG9zX3QgKCpfc2VlaykgKHZvaWQgKiwgZnBvc190LCBpbnQpOwogaW50ICgqX3dyaXRlKSh2b2lk
ICosIGNvbnN0IGNoYXIgKiwgaW50KTsKCgogc3RydWN0IF9fc2J1ZiBfdWI7CiBzdHJ1Y3QgX19z
RklMRVggKl9leHRyYTsKIGludCBfdXI7CgoKIHVuc2lnbmVkIGNoYXIgX3VidWZbM107CiB1bnNp
Z25lZCBjaGFyIF9uYnVmWzFdOwoKCiBzdHJ1Y3QgX19zYnVmIF9sYjsKCgogaW50IF9ibGtzaXpl
OwogZnBvc190IF9vZmZzZXQ7Cn0gRklMRTsKCmV4dGVybiAiQyIgewoKZXh0ZXJuIEZJTEUgKl9f
c3RkaW5wOwpleHRlcm4gRklMRSAqX19zdGRvdXRwOwpleHRlcm4gRklMRSAqX19zdGRlcnJwOwoK
Cgp9CgojZGVmaW5lIF9fU0xCRiAweDAwMDEKI2RlZmluZSBfX1NOQkYgMHgwMDAyCiNkZWZpbmUg
X19TUkQgMHgwMDA0CiNkZWZpbmUgX19TV1IgMHgwMDA4CgojZGVmaW5lIF9fU1JXIDB4MDAxMAoj
ZGVmaW5lIF9fU0VPRiAweDAwMjAKI2RlZmluZSBfX1NFUlIgMHgwMDQwCiNkZWZpbmUgX19TTUJG
IDB4MDA4MAojZGVmaW5lIF9fU0FQUCAweDAxMDAKI2RlZmluZSBfX1NTVFIgMHgwMjAwCiNkZWZp
bmUgX19TT1BUIDB4MDQwMAojZGVmaW5lIF9fU05QVCAweDA4MDAKI2RlZmluZSBfX1NPRkYgMHgx
MDAwCiNkZWZpbmUgX19TTU9EIDB4MjAwMAojZGVmaW5lIF9fU0FMQyAweDQwMDAKI2RlZmluZSBf
X1NJR04gMHg4MDAwCiMgMjAyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CiNkZWZpbmUgX0lP
RkJGIDAKI2RlZmluZSBfSU9MQkYgMQojZGVmaW5lIF9JT05CRiAyCgojZGVmaW5lIEJVRlNJWiAx
MDI0CiNkZWZpbmUgRU9GICgtMSkKCgoKCgoKCiNkZWZpbmUgRk9QRU5fTUFYIDIwCiNkZWZpbmUg
RklMRU5BTUVfTUFYIDEwMjQKCgoKI2RlZmluZSBQX3RtcGRpciAiL3Zhci90bXAvIgoKI2RlZmlu
ZSBMX3RtcG5hbSAxMDI0CiNkZWZpbmUgVE1QX01BWCAzMDg5MTU3NzYKIyAyMzYgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzIDQKI2RlZmluZSBzdGRpbiBfX3N0ZGlucAojZGVmaW5lIHN0ZG91dCBf
X3N0ZG91dHAKI2RlZmluZSBzdGRlcnIgX19zdGRlcnJwCiMgMjQ4ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMyA0CmV4dGVybiAiQyIgewp2b2lkIGNsZWFyZXJyKEZJTEUgKik7CmludCBmY2xvc2Uo
RklMRSAqKTsKaW50IGZlb2YoRklMRSAqKTsKaW50IGZlcnJvcihGSUxFICopOwppbnQgZmZsdXNo
KEZJTEUgKik7CmludCBmZ2V0YyhGSUxFICopOwppbnQgZmdldHBvcyhGSUxFICogLCBmcG9zX3Qg
Kik7CmNoYXIgKmZnZXRzKGNoYXIgKiAsIGludCwgRklMRSAqKTsKCgoKRklMRSAqZm9wZW4oY29u
c3QgY2hhciAqICwgY29uc3QgY2hhciAqICkgX19hc20oIl8iICJmb3BlbiIgKTsKCmludCBmcHJp
bnRmKEZJTEUgKiAsIGNvbnN0IGNoYXIgKiAsIC4uLikgOwppbnQgZnB1dGMoaW50LCBGSUxFICop
OwppbnQgZnB1dHMoY29uc3QgY2hhciAqICwgRklMRSAqICkgX19hc20oIl8iICJmcHV0cyIgKTsK
c2l6ZV90IGZyZWFkKHZvaWQgKiAsIHNpemVfdCwgc2l6ZV90LCBGSUxFICogKTsKRklMRSAqZnJl
b3Blbihjb25zdCBjaGFyICogLCBjb25zdCBjaGFyICogLAogICAgIEZJTEUgKiApIF9fYXNtKCJf
IiAiZnJlb3BlbiIgKTsKaW50IGZzY2FuZihGSUxFICogLCBjb25zdCBjaGFyICogLCAuLi4pIDsK
aW50IGZzZWVrKEZJTEUgKiwgbG9uZywgaW50KTsKaW50IGZzZXRwb3MoRklMRSAqLCBjb25zdCBm
cG9zX3QgKik7CmxvbmcgZnRlbGwoRklMRSAqKTsKc2l6ZV90IGZ3cml0ZShjb25zdCB2b2lkICog
LCBzaXplX3QsIHNpemVfdCwgRklMRSAqICkgX19hc20oIl8iICJmd3JpdGUiICk7CmludCBnZXRj
KEZJTEUgKik7CmludCBnZXRjaGFyKHZvaWQpOwpjaGFyICpnZXRzKGNoYXIgKik7CgpleHRlcm4g
Y29uc3QgaW50IHN5c19uZXJyOwpleHRlcm4gY29uc3QgY2hhciAqY29uc3Qgc3lzX2Vycmxpc3Rb
XTsKCnZvaWQgcGVycm9yKGNvbnN0IGNoYXIgKik7CmludCBwcmludGYoY29uc3QgY2hhciAqICwg
Li4uKSA7CmludCBwdXRjKGludCwgRklMRSAqKTsKaW50IHB1dGNoYXIoaW50KTsKaW50IHB1dHMo
Y29uc3QgY2hhciAqKTsKaW50IHJlbW92ZShjb25zdCBjaGFyICopOwppbnQgcmVuYW1lIChjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKik7CnZvaWQgcmV3aW5kKEZJTEUgKik7CmludCBzY2FuZihj
b25zdCBjaGFyICogLCAuLi4pIDsKdm9pZCBzZXRidWYoRklMRSAqICwgY2hhciAqICk7CmludCBz
ZXR2YnVmKEZJTEUgKiAsIGNoYXIgKiAsIGludCwgc2l6ZV90KTsKaW50IHNwcmludGYoY2hhciAq
ICwgY29uc3QgY2hhciAqICwgLi4uKSA7CmludCBzc2NhbmYoY29uc3QgY2hhciAqICwgY29uc3Qg
Y2hhciAqICwgLi4uKSA7CkZJTEUgKnRtcGZpbGUodm9pZCk7CmNoYXIgKnRtcG5hbShjaGFyICop
OwppbnQgdW5nZXRjKGludCwgRklMRSAqKTsKaW50IHZmcHJpbnRmKEZJTEUgKiAsIGNvbnN0IGNo
YXIgKiAsIHZhX2xpc3QpIDsKaW50IHZwcmludGYoY29uc3QgY2hhciAqICwgdmFfbGlzdCkgOwpp
bnQgdnNwcmludGYoY2hhciAqICwgY29uc3QgY2hhciAqICwgdmFfbGlzdCkgOwoKaW50IGFzcHJp
bnRmKGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgLi4uKSA7CmludCB2YXNwcmludGYoY2hhciAqKiwg
Y29uc3QgY2hhciAqLCB2YV9saXN0KSA7Cgp9CgoKCgoKI2RlZmluZSBMX2N0ZXJtaWQgMTAyNAoK
ZXh0ZXJuICJDIiB7CmNoYXIgKmN0ZXJtaWQoY2hhciAqKTsKCmNoYXIgKmN0ZXJtaWRfcihjaGFy
ICopOwoKCgoKRklMRSAqZmRvcGVuKGludCwgY29uc3QgY2hhciAqKSBfX2FzbSgiXyIgImZkb3Bl
biIgKTsKCgpjaGFyICpmZ2V0bG4oRklMRSAqLCBzaXplX3QgKik7CgppbnQgZmlsZW5vKEZJTEUg
Kik7CnZvaWQgZmxvY2tmaWxlKEZJTEUgKik7Cgpjb25zdCBjaGFyCiAqZm10Y2hlY2soY29uc3Qg
Y2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgZnB1cmdlKEZJTEUgKik7CgppbnQgZnNlZWtvKEZJ
TEUgKiwgb2ZmX3QsIGludCk7Cm9mZl90IGZ0ZWxsbyhGSUxFICopOwppbnQgZnRyeWxvY2tmaWxl
KEZJTEUgKik7CnZvaWQgZnVubG9ja2ZpbGUoRklMRSAqKTsKaW50IGdldGNfdW5sb2NrZWQoRklM
RSAqKTsKaW50IGdldGNoYXJfdW5sb2NrZWQodm9pZCk7CgppbnQgZ2V0dyhGSUxFICopOwoKaW50
IHBjbG9zZShGSUxFICopOwoKCgpGSUxFICpwb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
KikgX19hc20oIl8iICJwb3BlbiIgKTsKCmludCBwdXRjX3VubG9ja2VkKGludCwgRklMRSAqKTsK
aW50IHB1dGNoYXJfdW5sb2NrZWQoaW50KTsKCmludCBwdXR3KGludCwgRklMRSAqKTsKdm9pZCBz
ZXRidWZmZXIoRklMRSAqLCBjaGFyICosIGludCk7CmludCBzZXRsaW5lYnVmKEZJTEUgKik7Cgpp
bnQgc25wcmludGYoY2hhciAqICwgc2l6ZV90LCBjb25zdCBjaGFyICogLCAuLi4pIDsKY2hhciAq
dGVtcG5hbShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikgX19hc20oIl8iICJ0ZW1wbmFtIiAp
OwppbnQgdmZzY2FuZihGSUxFICogLCBjb25zdCBjaGFyICogLCB2YV9saXN0KSA7CmludCB2c2Nh
bmYoY29uc3QgY2hhciAqICwgdmFfbGlzdCkgOwppbnQgdnNucHJpbnRmKGNoYXIgKiAsIHNpemVf
dCwgY29uc3QgY2hhciAqICwgdmFfbGlzdCkgOwppbnQgdnNzY2FuZihjb25zdCBjaGFyICogLCBj
b25zdCBjaGFyICogLCB2YV9saXN0KSA7CgpGSUxFICp6b3Blbihjb25zdCBjaGFyICosIGNvbnN0
IGNoYXIgKiwgaW50KTsKCn0KCgoKCgpleHRlcm4gIkMiIHsKRklMRSAqZnVub3Blbihjb25zdCB2
b2lkICosCiAgaW50ICgqKSh2b2lkICosIGNoYXIgKiwgaW50KSwKICBpbnQgKCopKHZvaWQgKiwg
Y29uc3QgY2hhciAqLCBpbnQpLAogIGZwb3NfdCAoKikodm9pZCAqLCBmcG9zX3QsIGludCksCiAg
aW50ICgqKSh2b2lkICopKTsKfQojZGVmaW5lIGZyb3Blbihjb29raWUsZm4pIGZ1bm9wZW4oY29v
a2llLCBmbiwgMCwgMCwgMCkKI2RlZmluZSBmd29wZW4oY29va2llLGZuKSBmdW5vcGVuKGNvb2tp
ZSwgMCwgZm4sIDAsIDApCgoKCgoKCmV4dGVybiAiQyIgewppbnQgX19zcmdldChGSUxFICopOwpp
bnQgX19zdmZzY2FuZihGSUxFICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCkgOwppbnQgX19zd2J1
ZihpbnQsIEZJTEUgKik7Cn0KCgoKCgojZGVmaW5lIF9fc2dldGMocCkgKC0tKHApLT5fciA8IDAg
PyBfX3NyZ2V0KHApIDogKGludCkoKihwKS0+X3ArKykpCgpzdGF0aWMgaW5saW5lIGludCBfX3Nw
dXRjKGludCBfYywgRklMRSAqX3ApIHsKIGlmICgtLV9wLT5fdyA+PSAwIHx8IChfcC0+X3cgPj0g
X3AtPl9sYmZzaXplICYmIChjaGFyKV9jICE9ICdcbicpKQogIHJldHVybiAoKl9wLT5fcCsrID0g
X2MpOwogZWxzZQogIHJldHVybiAoX19zd2J1ZihfYywgX3ApKTsKfQojIDQxNSAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMgNAojZGVmaW5lIF9fc2Zlb2YocCkgKCgocCktPl9mbGFncyAmIF9fU0VP
RikgIT0gMCkKI2RlZmluZSBfX3NmZXJyb3IocCkgKCgocCktPl9mbGFncyAmIF9fU0VSUikgIT0g
MCkKI2RlZmluZSBfX3NjbGVhcmVycihwKSAoKHZvaWQpKChwKS0+X2ZsYWdzICY9IH4oX19TRVJS
fF9fU0VPRikpKQojZGVmaW5lIF9fc2ZpbGVubyhwKSAoKHApLT5fZmlsZSkKCgoKI2RlZmluZSBm
ZW9mX3VubG9ja2VkKHApIF9fc2Zlb2YocCkKI2RlZmluZSBmZXJyb3JfdW5sb2NrZWQocCkgX19z
ZmVycm9yKHApCiNkZWZpbmUgY2xlYXJlcnJfdW5sb2NrZWQocCkgX19zY2xlYXJlcnIocCkKI2Rl
ZmluZSBmaWxlbm9fdW5sb2NrZWQocCkgX19zZmlsZW5vKHApCgoKCiNkZWZpbmUgZ2V0Y191bmxv
Y2tlZChmcCkgX19zZ2V0YyhmcCkKI2RlZmluZSBwdXRjX3VubG9ja2VkKHgsZnApIF9fc3B1dGMo
eCwgZnApCgoKI2RlZmluZSBnZXRjaGFyX3VubG9ja2VkKCkgZ2V0Y191bmxvY2tlZChzdGRpbikK
I2RlZmluZSBwdXRjaGFyX3VubG9ja2VkKHgpIHB1dGNfdW5sb2NrZWQoeCwgc3Rkb3V0KQojIDU0
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2NzdGRpbyIgMiAzCgoKI3VuZGVmIGNsZWFyZXJyCiN1
bmRlZiBmY2xvc2UKI3VuZGVmIGZlb2YKI3VuZGVmIGZlcnJvcgojdW5kZWYgZmZsdXNoCiN1bmRl
ZiBmZ2V0YwojdW5kZWYgZmdldHBvcwojdW5kZWYgZmdldHMKI3VuZGVmIGZvcGVuCiN1bmRlZiBm
cHJpbnRmCiN1bmRlZiBmcHV0YwojdW5kZWYgZnB1dHMKI3VuZGVmIGZyZWFkCiN1bmRlZiBmcmVv
cGVuCiN1bmRlZiBmc2NhbmYKI3VuZGVmIGZzZWVrCiN1bmRlZiBmc2V0cG9zCiN1bmRlZiBmdGVs
bAojdW5kZWYgZndyaXRlCiN1bmRlZiBnZXRjCiN1bmRlZiBnZXRjaGFyCiN1bmRlZiBnZXRzCiN1
bmRlZiBwZXJyb3IKI3VuZGVmIHByaW50ZgojdW5kZWYgcHV0YwojdW5kZWYgcHV0Y2hhcgojdW5k
ZWYgcHV0cwojdW5kZWYgcmVtb3ZlCiN1bmRlZiByZW5hbWUKI3VuZGVmIHJld2luZAojdW5kZWYg
c2NhbmYKI3VuZGVmIHNldGJ1ZgojdW5kZWYgc2V0dmJ1ZgojdW5kZWYgc3ByaW50ZgojdW5kZWYg
c3NjYW5mCiN1bmRlZiB0bXBmaWxlCiN1bmRlZiB0bXBuYW0KI3VuZGVmIHVuZ2V0YwojdW5kZWYg
dmZwcmludGYKI3VuZGVmIHZwcmludGYKI3VuZGVmIHZzcHJpbnRmCgpuYW1lc3BhY2Ugc3RkIHsK
CiAgdXNpbmcgOjpGSUxFOwogIHVzaW5nIDo6ZnBvc190OwoKICB1c2luZyA6OmNsZWFyZXJyOwog
IHVzaW5nIDo6ZmNsb3NlOwogIHVzaW5nIDo6ZmVvZjsKICB1c2luZyA6OmZlcnJvcjsKICB1c2lu
ZyA6OmZmbHVzaDsKICB1c2luZyA6OmZnZXRjOwogIHVzaW5nIDo6ZmdldHBvczsKICB1c2luZyA6
OmZnZXRzOwogIHVzaW5nIDo6Zm9wZW47CiAgdXNpbmcgOjpmcHJpbnRmOwogIHVzaW5nIDo6ZnB1
dGM7CiAgdXNpbmcgOjpmcHV0czsKICB1c2luZyA6OmZyZWFkOwogIHVzaW5nIDo6ZnJlb3BlbjsK
ICB1c2luZyA6OmZzY2FuZjsKICB1c2luZyA6OmZzZWVrOwogIHVzaW5nIDo6ZnNldHBvczsKICB1
c2luZyA6OmZ0ZWxsOwogIHVzaW5nIDo6ZndyaXRlOwogIHVzaW5nIDo6Z2V0YzsKICB1c2luZyA6
OmdldGNoYXI7CiAgdXNpbmcgOjpnZXRzOwogIHVzaW5nIDo6cGVycm9yOwogIHVzaW5nIDo6cHJp
bnRmOwogIHVzaW5nIDo6cHV0YzsKICB1c2luZyA6OnB1dGNoYXI7CiAgdXNpbmcgOjpwdXRzOwog
IHVzaW5nIDo6cmVtb3ZlOwogIHVzaW5nIDo6cmVuYW1lOwogIHVzaW5nIDo6cmV3aW5kOwogIHVz
aW5nIDo6c2NhbmY7CiAgdXNpbmcgOjpzZXRidWY7CiAgdXNpbmcgOjpzZXR2YnVmOwogIHVzaW5n
IDo6c3ByaW50ZjsKICB1c2luZyA6OnNzY2FuZjsKICB1c2luZyA6OnRtcGZpbGU7CiAgdXNpbmcg
Ojp0bXBuYW07CiAgdXNpbmcgOjp1bmdldGM7CiAgdXNpbmcgOjp2ZnByaW50ZjsKICB1c2luZyA6
OnZwcmludGY7CiAgdXNpbmcgOjp2c3ByaW50ZjsKCn0KCgoKI3VuZGVmIHNucHJpbnRmCiN1bmRl
ZiB2ZnNjYW5mCiN1bmRlZiB2c2NhbmYKI3VuZGVmIHZzbnByaW50ZgojdW5kZWYgdnNzY2FuZgoK
bmFtZXNwYWNlIF9fZ251X2N4eCB7CiMgMTcwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2NzdGRp
byIgMwogIHVzaW5nIDo6c25wcmludGY7CiAgdXNpbmcgOjp2ZnNjYW5mOwogIHVzaW5nIDo6dnNj
YW5mOwogIHVzaW5nIDo6dnNucHJpbnRmOwogIHVzaW5nIDo6dnNzY2FuZjsKCgp9CgpuYW1lc3Bh
Y2Ugc3RkIHsKCiAgdXNpbmcgOjpfX2dudV9jeHg6OnNucHJpbnRmOwogIHVzaW5nIDo6X19nbnVf
Y3h4Ojp2ZnNjYW5mOwogIHVzaW5nIDo6X19nbnVfY3h4Ojp2c2NhbmY7CiAgdXNpbmcgOjpfX2du
dV9jeHg6OnZzbnByaW50ZjsKICB1c2luZyA6Ol9fZ251X2N4eDo6dnNzY2FuZjsKCn0KIyA1MCAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9iaXRzL2Mr
K2xvY2FsZS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2NzdGRhcmciIDEgMwoj
IDQ2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2NzdGRhcmciIDMKI2RlZmluZSBfR0xJQkNYWF9D
U1REQVJHIDEKCiAgICAgICAKIyA0OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jc3RkYXJnIiAz
CiMgNTggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvY3N0ZGFyZyIgMwpuYW1lc3BhY2Ugc3RkIHsK
CiAgdXNpbmcgOjp2YV9saXN0OwoKfQojIDUxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYt
YXBwbGUtZGFyd2luMTAveDg2XzY0L2JpdHMvYysrbG9jYWxlLmgiIDIgMwoKI2RlZmluZSBfR0xJ
QkNYWF9OVU1fQ0FURUdPUklFUyAwCgpuYW1lc3BhY2Ugc3RkIHsKCiAgdHlwZWRlZiBpbnQqIF9f
Y19sb2NhbGU7CgoKCgoKICBpbmxpbmUgaW50CiAgX19jb252ZXJ0X2Zyb21fdihjb25zdCBfX2Nf
bG9jYWxlJiwgY2hhciogX19vdXQsCiAgICAgY29uc3QgaW50IF9fc2l6ZSBfX2F0dHJpYnV0ZV9f
KChfX3VudXNlZF9fKSksCiAgICAgY29uc3QgY2hhciogX19mbXQsIC4uLikKICB7CiAgICBjaGFy
KiBfX29sZCA9IHN0ZDo6c2V0bG9jYWxlKDQsIF9fbnVsbCk7CiAgICBjaGFyKiBfX3NhdiA9IF9f
bnVsbDsKICAgIGlmIChzdGQ6OnN0cmNtcChfX29sZCwgIkMiKSkKICAgICAgewogX19zYXYgPSBu
ZXcgY2hhcltzdGQ6OnN0cmxlbihfX29sZCkgKyAxXTsKIHN0ZDo6c3RyY3B5KF9fc2F2LCBfX29s
ZCk7CiBzdGQ6OnNldGxvY2FsZSg0LCAiQyIpOwogICAgICB9CgogICAgdmFfbGlzdCBfX2FyZ3M7
CiAgICBfX2J1aWx0aW5fdmFfc3RhcnQoX19hcmdzLF9fZm10KTsKCgogICAgY29uc3QgaW50IF9f
cmV0ID0gc3RkOjp2c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fYXJncyk7CgoKCgog
ICAgX19idWlsdGluX3ZhX2VuZChfX2FyZ3MpOwoKICAgIGlmIChfX3NhdikKICAgICAgewogc3Rk
OjpzZXRsb2NhbGUoNCwgX19zYXYpOwogZGVsZXRlIFtdIF9fc2F2OwogICAgICB9CiAgICByZXR1
cm4gX19yZXQ7CiAgfQoKfQojIDQ2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2lvc2Z3ZCIgMiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9i
aXRzL2MrK2lvLmgiIDEgMwojIDM5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUt
ZGFyd2luMTAveDg2XzY0L2JpdHMvYysraW8uaCIgMwojZGVmaW5lIF9DX0lPX1NURElPX0ggMQoK
CgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQv
Yml0cy9ndGhyLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUt
ZGFyd2luMTAveDg2XzY0L2JpdHMvZ3Roci5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfR0NDX0dUSFJf
SCAKCgojcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2goZGVmYXVsdCkKIyAxMTQgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9ndGhyLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2XzY0L2Jp
dHMvZ3Roci1kZWZhdWx0LmgiIDEgMwojIDMxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYt
YXBwbGUtZGFyd2luMTAveDg2XzY0L2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKI2RlZmluZSBfR0xJ
QkNYWF9HQ0NfR1RIUl9QT1NJWF9IIAoKCgoKI2RlZmluZSBfX0dUSFJFQURTIDEKCgoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAxIDMgNAojIDUzICIvdXNyL2luY2x1ZGUvcHRocmVh
ZC5oIiAzIDQKI2RlZmluZSBfUFRIUkVBRF9IIAoKCgojIDEgIi91c3IvaW5jbHVkZS9wdGhyZWFk
X2ltcGwuaCIgMSAzIDQKIyAyNSAiL3Vzci9pbmNsdWRlL3B0aHJlYWRfaW1wbC5oIiAzIDQKI2Rl
ZmluZSBfUFRIUkVBRF9JTVBMX0hfIAojIDM3ICIvdXNyL2luY2x1ZGUvcHRocmVhZF9pbXBsLmgi
IDMgNAojZGVmaW5lIF9QVEhSRUFEX01VVEVYX1NJR19pbml0IDB4MzJBQUFCQTcKI2RlZmluZSBf
UFRIUkVBRF9DT05EX1NJR19pbml0IDB4M0NCMEIxQkIKI2RlZmluZSBfUFRIUkVBRF9PTkNFX1NJ
R19pbml0IDB4MzBCMUJDQkEKI2RlZmluZSBfUFRIUkVBRF9SV0xPQ0tfU0lHX2luaXQgMHgyREE4
QjNCNAoKCgojZGVmaW5lIFNDSEVEX09USEVSIDEKI2RlZmluZSBTQ0hFRF9GSUZPIDQKI2RlZmlu
ZSBTQ0hFRF9SUiAyCgojZGVmaW5lIF9fU0NIRURfUEFSQU1fU0laRV9fIDQKIyA1OCAiL3Vzci9p
bmNsdWRlL3B0aHJlYWQuaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL3NjaGVkLmgiIDEgMyA0
CiMgMjUgIi91c3IvaW5jbHVkZS9zY2hlZC5oIiAzIDQKI2RlZmluZSBfU0NIRURfSF8gCgoKCgpl
eHRlcm4gIkMiIHsKCgoKCnN0cnVjdCBzY2hlZF9wYXJhbSB7IGludCBzY2hlZF9wcmlvcml0eTsg
Y2hhciBfX29wYXF1ZVs0XTsgfTsKCgpleHRlcm4gaW50IHNjaGVkX3lpZWxkKHZvaWQpOwpleHRl
cm4gaW50IHNjaGVkX2dldF9wcmlvcml0eV9taW4oaW50KTsKZXh0ZXJuIGludCBzY2hlZF9nZXRf
cHJpb3JpdHlfbWF4KGludCk7Cn0KIyA2MCAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMiAzIDQK
IyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAojIDY0ICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAzIDQKI2RlZmluZSBfVElNRV9IXyAKCgoKI2RlZmluZSBfX25lZWRfc3RydWN0X3RpbWVzcGVj
IAojIDEgIi91c3IvaW5jbHVkZS9fc3RydWN0cy5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUv
X3N0cnVjdHMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9fc3RydWN0cy5oIiAxIDMgNAoj
IDg1ICIvdXNyL2luY2x1ZGUvc3lzL19zdHJ1Y3RzLmgiIDMgNAojdW5kZWYgX19uZWVkX3N0cnVj
dF90aW1lc3BlYwojIDI1ICIvdXNyL2luY2x1ZGUvX3N0cnVjdHMuaCIgMiAzIDQKIyA3MCAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMiAzIDQKIyA5MCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CnN0
cnVjdCB0bSB7CiBpbnQgdG1fc2VjOwogaW50IHRtX21pbjsKIGludCB0bV9ob3VyOwogaW50IHRt
X21kYXk7CiBpbnQgdG1fbW9uOwogaW50IHRtX3llYXI7CiBpbnQgdG1fd2RheTsKIGludCB0bV95
ZGF5OwogaW50IHRtX2lzZHN0OwogbG9uZyB0bV9nbXRvZmY7CiBjaGFyICp0bV96b25lOwp9OwoK
CiNkZWZpbmUgQ0xPQ0tTX1BFUl9TRUMgMTAwMDAwMAoKCgoKCgoKZXh0ZXJuIGNoYXIgKnR6bmFt
ZVtdOwoKCmV4dGVybiBpbnQgZ2V0ZGF0ZV9lcnI7CgpleHRlcm4gbG9uZyB0aW1lem9uZSBfX2Fz
bSgiXyIgInRpbWV6b25lIiApOwoKZXh0ZXJuIGludCBkYXlsaWdodDsKCmV4dGVybiAiQyIgewpj
aGFyICphc2N0aW1lKGNvbnN0IHN0cnVjdCB0bSAqKTsKY2xvY2tfdCBjbG9jayh2b2lkKSBfX2Fz
bSgiXyIgImNsb2NrIiApOwpjaGFyICpjdGltZShjb25zdCB0aW1lX3QgKik7CmRvdWJsZSBkaWZm
dGltZSh0aW1lX3QsIHRpbWVfdCk7CnN0cnVjdCB0bSAqZ2V0ZGF0ZShjb25zdCBjaGFyICopOwpz
dHJ1Y3QgdG0gKmdtdGltZShjb25zdCB0aW1lX3QgKik7CnN0cnVjdCB0bSAqbG9jYWx0aW1lKGNv
bnN0IHRpbWVfdCAqKTsKdGltZV90IG1rdGltZShzdHJ1Y3QgdG0gKikgX19hc20oIl8iICJta3Rp
bWUiICk7CnNpemVfdCBzdHJmdGltZShjaGFyICogLCBzaXplX3QsIGNvbnN0IGNoYXIgKiAsIGNv
bnN0IHN0cnVjdCB0bSAqICkgX19hc20oIl8iICJzdHJmdGltZSIgKTsKY2hhciAqc3RycHRpbWUo
Y29uc3QgY2hhciAqICwgY29uc3QgY2hhciAqICwgc3RydWN0IHRtICogKSBfX2FzbSgiXyIgInN0
cnB0aW1lIiApOwp0aW1lX3QgdGltZSh0aW1lX3QgKik7CgoKdm9pZCB0enNldCh2b2lkKTsKCgoK
Y2hhciAqYXNjdGltZV9yKGNvbnN0IHN0cnVjdCB0bSAqICwgY2hhciAqICk7CmNoYXIgKmN0aW1l
X3IoY29uc3QgdGltZV90ICosIGNoYXIgKik7CnN0cnVjdCB0bSAqZ210aW1lX3IoY29uc3QgdGlt
ZV90ICogLCBzdHJ1Y3QgdG0gKiApOwpzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yKGNvbnN0IHRpbWVf
dCAqICwgc3RydWN0IHRtICogKTsKCgp0aW1lX3QgcG9zaXgydGltZSh0aW1lX3QpOwoKCgp2b2lk
IHR6c2V0d2FsbCh2b2lkKTsKdGltZV90IHRpbWUycG9zaXgodGltZV90KTsKdGltZV90IHRpbWVs
b2NhbChzdHJ1Y3QgdG0gKiBjb25zdCk7CnRpbWVfdCB0aW1lZ20oc3RydWN0IHRtICogY29uc3Qp
OwoKCgppbnQgbmFub3NsZWVwKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqLCBzdHJ1Y3QgdGltZXNw
ZWMgKikgX19hc20oIl8iICJuYW5vc2xlZXAiICk7Cgp9CiMgNjEgIi91c3IvaW5jbHVkZS9wdGhy
ZWFkLmgiIDIgMyA0CiMgMTE1ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKI2RlZmluZSBf
TUFDSF9QT1JUX1QgCnR5cGVkZWYgX19kYXJ3aW5fbWFjaF9wb3J0X3QgbWFjaF9wb3J0X3Q7CiMg
MTQ4ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKZXh0ZXJuICJDIiB7CiMgMTU5ICIvdXNy
L2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKI2RlZmluZSBwdGhyZWFkX2NsZWFudXBfcHVzaChmdW5j
LHZhbCkgeyBzdHJ1Y3QgX19kYXJ3aW5fcHRocmVhZF9oYW5kbGVyX3JlYyBfX2hhbmRsZXI7IHB0
aHJlYWRfdCBfX3NlbGYgPSBwdGhyZWFkX3NlbGYoKTsgX19oYW5kbGVyLl9fcm91dGluZSA9IGZ1
bmM7IF9faGFuZGxlci5fX2FyZyA9IHZhbDsgX19oYW5kbGVyLl9fbmV4dCA9IF9fc2VsZi0+X19j
bGVhbnVwX3N0YWNrOyBfX3NlbGYtPl9fY2xlYW51cF9zdGFjayA9ICZfX2hhbmRsZXI7CiMgMTY4
ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKI2RlZmluZSBwdGhyZWFkX2NsZWFudXBfcG9w
KGV4ZWN1dGUpIF9fc2VsZi0+X19jbGVhbnVwX3N0YWNrID0gX19oYW5kbGVyLl9fbmV4dDsgaWYg
KGV4ZWN1dGUpIChfX2hhbmRsZXIuX19yb3V0aW5lKShfX2hhbmRsZXIuX19hcmcpOyB9CiMgMTc4
ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKI2RlZmluZSBQVEhSRUFEX0NSRUFURV9KT0lO
QUJMRSAxCiNkZWZpbmUgUFRIUkVBRF9DUkVBVEVfREVUQUNIRUQgMgoKI2RlZmluZSBQVEhSRUFE
X0lOSEVSSVRfU0NIRUQgMQojZGVmaW5lIFBUSFJFQURfRVhQTElDSVRfU0NIRUQgMgoKI2RlZmlu
ZSBQVEhSRUFEX0NBTkNFTF9FTkFCTEUgMHgwMQojZGVmaW5lIFBUSFJFQURfQ0FOQ0VMX0RJU0FC
TEUgMHgwMAojZGVmaW5lIFBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVEIDB4MDIKI2RlZmluZSBQVEhS
RUFEX0NBTkNFTF9BU1lOQ0hST05PVVMgMHgwMAoKCiNkZWZpbmUgUFRIUkVBRF9DQU5DRUxFRCAo
KHZvaWQgKikgMSkKCgojZGVmaW5lIFBUSFJFQURfU0NPUEVfU1lTVEVNIDEKI2RlZmluZSBQVEhS
RUFEX1NDT1BFX1BST0NFU1MgMgoKCiNkZWZpbmUgUFRIUkVBRF9QUk9DRVNTX1NIQVJFRCAxCiNk
ZWZpbmUgUFRIUkVBRF9QUk9DRVNTX1BSSVZBVEUgMgoKCgoKI2RlZmluZSBQVEhSRUFEX1BSSU9f
Tk9ORSAwCiNkZWZpbmUgUFRIUkVBRF9QUklPX0lOSEVSSVQgMQojZGVmaW5lIFBUSFJFQURfUFJJ
T19QUk9URUNUIDIKCgoKCiNkZWZpbmUgUFRIUkVBRF9NVVRFWF9OT1JNQUwgMAojZGVmaW5lIFBU
SFJFQURfTVVURVhfRVJST1JDSEVDSyAxCiNkZWZpbmUgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUg
MgojZGVmaW5lIFBUSFJFQURfTVVURVhfREVGQVVMVCBQVEhSRUFEX01VVEVYX05PUk1BTAoKCgoK
I2RlZmluZSBQVEhSRUFEX1JXTE9DS19JTklUSUFMSVpFUiB7X1BUSFJFQURfUldMT0NLX1NJR19p
bml0LCB7MH19CgoKCgojZGVmaW5lIFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIge19QVEhSRUFE
X01VVEVYX1NJR19pbml0LCB7MH19CiMgMjMzICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQK
I2RlZmluZSBQVEhSRUFEX0NPTkRfSU5JVElBTElaRVIge19QVEhSRUFEX0NPTkRfU0lHX2luaXQs
IHswfX0KCgoKCgojZGVmaW5lIFBUSFJFQURfT05DRV9JTklUIHtfUFRIUkVBRF9PTkNFX1NJR19p
bml0LCB7MH19CgoKCgppbnQgcHRocmVhZF9hdGZvcmsodm9pZCAoKikodm9pZCksIHZvaWQgKCop
KHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKikodm9pZCkpOwppbnQgcHRocmVh
ZF9hdHRyX2Rlc3Ryb3kocHRocmVhZF9hdHRyX3QgKik7CmludCBwdGhyZWFkX2F0dHJfZ2V0ZGV0
YWNoc3RhdGUoY29uc3QgcHRocmVhZF9hdHRyX3QgKiwKICAgICAgICAgIGludCAqKTsKaW50IHB0
aHJlYWRfYXR0cl9nZXRndWFyZHNpemUoY29uc3QgcHRocmVhZF9hdHRyX3QgKiAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogKTsKaW50IHB0aHJlYWRfYXR0
cl9nZXRpbmhlcml0c2NoZWQoY29uc3QgcHRocmVhZF9hdHRyX3QgKiAsCiAgICAgICAgICAgaW50
ICogKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBhcmFtKGNvbnN0IHB0aHJlYWRfYXR0cl90
ICogLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjaGVkX3Bh
cmFtICogKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBvbGljeShjb25zdCBwdGhyZWFkX2F0
dHJfdCAqICwKICAgICAgICAgIGludCAqICk7CmludCBwdGhyZWFkX2F0dHJfZ2V0c2NvcGUoY29u
c3QgcHRocmVhZF9hdHRyX3QgKiAsIGludCAqICk7CmludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2so
Y29uc3QgcHRocmVhZF9hdHRyX3QgKiAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqKiAsIHNpemVfdCAqICk7CmludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2thZGRy
KGNvbnN0IHB0aHJlYWRfYXR0cl90ICogLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKiogKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRzdGFja3NpemUoY29uc3QgcHRo
cmVhZF9hdHRyX3QgKiAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90ICogKTsKaW50IHB0aHJlYWRfYXR0cl9pbml0KHB0aHJlYWRfYXR0cl90ICopOwppbnQgcHRo
cmVhZF9hdHRyX3NldGRldGFjaHN0YXRlKHB0aHJlYWRfYXR0cl90ICosCiAgICAgICAgICBpbnQg
KTsKaW50IHB0aHJlYWRfYXR0cl9zZXRndWFyZHNpemUocHRocmVhZF9hdHRyX3QgKiwgc2l6ZV90
ICk7CmludCBwdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkKHB0aHJlYWRfYXR0cl90ICosCiAg
ICAgICAgICAgaW50ICk7CmludCBwdGhyZWFkX2F0dHJfc2V0c2NoZWRwYXJhbShwdGhyZWFkX2F0
dHJfdCAqICwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj
dCBzY2hlZF9wYXJhbSAqICk7CmludCBwdGhyZWFkX2F0dHJfc2V0c2NoZWRwb2xpY3kocHRocmVh
ZF9hdHRyX3QgKiwKICAgICAgICAgIGludCApOwppbnQgcHRocmVhZF9hdHRyX3NldHNjb3BlKHB0
aHJlYWRfYXR0cl90ICosIGludCk7CmludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2socHRocmVhZF9h
dHRyX3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICosIHNp
emVfdCApOwppbnQgcHRocmVhZF9hdHRyX3NldHN0YWNrYWRkcihwdGhyZWFkX2F0dHJfdCAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKik7CmludCBwdGhyZWFk
X2F0dHJfc2V0c3RhY2tzaXplKHB0aHJlYWRfYXR0cl90ICosIHNpemVfdCApOwppbnQgcHRocmVh
ZF9jYW5jZWwocHRocmVhZF90ICkgX19hc20oIl8iICJwdGhyZWFkX2NhbmNlbCIgKTsKCmludCBw
dGhyZWFkX2NvbmRfYnJvYWRjYXN0KHB0aHJlYWRfY29uZF90ICopOwppbnQgcHRocmVhZF9jb25k
X2Rlc3Ryb3kocHRocmVhZF9jb25kX3QgKik7CmludCBwdGhyZWFkX2NvbmRfaW5pdChwdGhyZWFk
X2NvbmRfdCAqICwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHB0aHJlYWRfY29u
ZGF0dHJfdCAqICkgX19hc20oIl8iICJwdGhyZWFkX2NvbmRfaW5pdCIgKTsKaW50IHB0aHJlYWRf
Y29uZF9zaWduYWwocHRocmVhZF9jb25kX3QgKik7CmludCBwdGhyZWFkX2NvbmRfdGltZWR3YWl0
KHB0aHJlYWRfY29uZF90ICogLAogICAgIHB0aHJlYWRfbXV0ZXhfdCAqICwKICAgICBjb25zdCBz
dHJ1Y3QgdGltZXNwZWMgKiApIF9fYXNtKCJfIiAicHRocmVhZF9jb25kX3RpbWVkd2FpdCIgKTsK
aW50IHB0aHJlYWRfY29uZF93YWl0KHB0aHJlYWRfY29uZF90ICogLAogICAgICAgcHRocmVhZF9t
dXRleF90ICogKSBfX2FzbSgiXyIgInB0aHJlYWRfY29uZF93YWl0IiApOwppbnQgcHRocmVhZF9j
b25kYXR0cl9kZXN0cm95KHB0aHJlYWRfY29uZGF0dHJfdCAqKTsKaW50IHB0aHJlYWRfY29uZGF0
dHJfaW5pdChwdGhyZWFkX2NvbmRhdHRyX3QgKik7CmludCBwdGhyZWFkX2NvbmRhdHRyX2dldHBz
aGFyZWQoY29uc3QgcHRocmVhZF9jb25kYXR0cl90ICogLAogICBpbnQgKiApOwppbnQgcHRocmVh
ZF9jb25kYXR0cl9zZXRwc2hhcmVkKHB0aHJlYWRfY29uZGF0dHJfdCAqLAogICBpbnQgKTsKaW50
IHB0aHJlYWRfY3JlYXRlKHB0aHJlYWRfdCAqICwKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHB0aHJlYWRfYXR0cl90ICogLAogICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKCop
KHZvaWQgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICogKTsKaW50IHB0aHJlYWRf
ZGV0YWNoKHB0aHJlYWRfdCApOwppbnQgcHRocmVhZF9lcXVhbChwdGhyZWFkX3QgLAogICBwdGhy
ZWFkX3QgKTsKdm9pZCBwdGhyZWFkX2V4aXQodm9pZCAqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0
dXJuX18pKTsKaW50IHB0aHJlYWRfZ2V0Y29uY3VycmVuY3kodm9pZCk7CmludCBwdGhyZWFkX2dl
dHNjaGVkcGFyYW0ocHRocmVhZF90ICwgaW50ICogLCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKiApOwp2
b2lkICpwdGhyZWFkX2dldHNwZWNpZmljKHB0aHJlYWRfa2V5X3QgKTsKaW50IHB0aHJlYWRfam9p
bihwdGhyZWFkX3QgLCB2b2lkICoqKSBfX2FzbSgiXyIgInB0aHJlYWRfam9pbiIgKTsKaW50IHB0
aHJlYWRfa2V5X2NyZWF0ZShwdGhyZWFkX2tleV90ICosIHZvaWQgKCopKHZvaWQgKikpOwppbnQg
cHRocmVhZF9rZXlfZGVsZXRlKHB0aHJlYWRfa2V5X3QgKTsKaW50IHB0aHJlYWRfbXV0ZXhfZGVz
dHJveShwdGhyZWFkX211dGV4X3QgKik7CmludCBwdGhyZWFkX211dGV4X2dldHByaW9jZWlsaW5n
KGNvbnN0IHB0aHJlYWRfbXV0ZXhfdCAqICwgaW50ICogKTsKaW50IHB0aHJlYWRfbXV0ZXhfaW5p
dChwdGhyZWFkX211dGV4X3QgKiAsIGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKiApOwppbnQg
cHRocmVhZF9tdXRleF9sb2NrKHB0aHJlYWRfbXV0ZXhfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhf
c2V0cHJpb2NlaWxpbmcocHRocmVhZF9tdXRleF90ICogLCBpbnQsIGludCAqICk7CmludCBwdGhy
ZWFkX211dGV4X3RyeWxvY2socHRocmVhZF9tdXRleF90ICopOwppbnQgcHRocmVhZF9tdXRleF91
bmxvY2socHRocmVhZF9tdXRleF90ICopOwppbnQgcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveShw
dGhyZWFkX211dGV4YXR0cl90ICopIF9fYXNtKCJfIiAicHRocmVhZF9tdXRleGF0dHJfZGVzdHJv
eSIgKTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHByaW9jZWlsaW5nKGNvbnN0IHB0aHJlYWRf
bXV0ZXhhdHRyX3QgKiAsIGludCAqICk7CmludCBwdGhyZWFkX211dGV4YXR0cl9nZXRwcm90b2Nv
bChjb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICogLCBpbnQgKiApOwppbnQgcHRocmVhZF9tdXRl
eGF0dHJfZ2V0cHNoYXJlZChjb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICogLCBpbnQgKiApOwpp
bnQgcHRocmVhZF9tdXRleGF0dHJfZ2V0dHlwZShjb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICog
LCBpbnQgKiApOwppbnQgcHRocmVhZF9tdXRleGF0dHJfaW5pdChwdGhyZWFkX211dGV4YXR0cl90
ICopOwppbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0cHJpb2NlaWxpbmcocHRocmVhZF9tdXRleGF0
dHJfdCAqLCBpbnQpOwppbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0cHJvdG9jb2wocHRocmVhZF9t
dXRleGF0dHJfdCAqLCBpbnQpOwppbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0cHNoYXJlZChwdGhy
ZWFkX211dGV4YXR0cl90ICosIGludCApOwppbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZShw
dGhyZWFkX211dGV4YXR0cl90ICosIGludCk7CmludCBwdGhyZWFkX29uY2UocHRocmVhZF9vbmNl
X3QgKiwgdm9pZCAoKikodm9pZCkpOwppbnQgcHRocmVhZF9yd2xvY2tfZGVzdHJveShwdGhyZWFk
X3J3bG9ja190ICogKSBfX2FzbSgiXyIgInB0aHJlYWRfcndsb2NrX2Rlc3Ryb3kiICk7CmludCBw
dGhyZWFkX3J3bG9ja19pbml0KHB0aHJlYWRfcndsb2NrX3QgKiAsIGNvbnN0IHB0aHJlYWRfcnds
b2NrYXR0cl90ICogKSBfX2FzbSgiXyIgInB0aHJlYWRfcndsb2NrX2luaXQiICk7CmludCBwdGhy
ZWFkX3J3bG9ja19yZGxvY2socHRocmVhZF9yd2xvY2tfdCAqKSBfX2FzbSgiXyIgInB0aHJlYWRf
cndsb2NrX3JkbG9jayIgKTsKaW50IHB0aHJlYWRfcndsb2NrX3RyeXJkbG9jayhwdGhyZWFkX3J3
bG9ja190ICopIF9fYXNtKCJfIiAicHRocmVhZF9yd2xvY2tfdHJ5cmRsb2NrIiApOwppbnQgcHRo
cmVhZF9yd2xvY2tfdHJ5d3Jsb2NrKHB0aHJlYWRfcndsb2NrX3QgKikgX19hc20oIl8iICJwdGhy
ZWFkX3J3bG9ja190cnl3cmxvY2siICk7CmludCBwdGhyZWFkX3J3bG9ja193cmxvY2socHRocmVh
ZF9yd2xvY2tfdCAqKSBfX2FzbSgiXyIgInB0aHJlYWRfcndsb2NrX3dybG9jayIgKTsKaW50IHB0
aHJlYWRfcndsb2NrX3VubG9jayhwdGhyZWFkX3J3bG9ja190ICopIF9fYXNtKCJfIiAicHRocmVh
ZF9yd2xvY2tfdW5sb2NrIiApOwppbnQgcHRocmVhZF9yd2xvY2thdHRyX2Rlc3Ryb3kocHRocmVh
ZF9yd2xvY2thdHRyX3QgKik7CmludCBwdGhyZWFkX3J3bG9ja2F0dHJfZ2V0cHNoYXJlZChjb25z
dCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqICwKICAgaW50ICogKTsKaW50IHB0aHJlYWRfcndsb2Nr
YXR0cl9pbml0KHB0aHJlYWRfcndsb2NrYXR0cl90ICopOwppbnQgcHRocmVhZF9yd2xvY2thdHRy
X3NldHBzaGFyZWQocHRocmVhZF9yd2xvY2thdHRyX3QgKiwKICAgaW50ICk7CnB0aHJlYWRfdCBw
dGhyZWFkX3NlbGYodm9pZCk7CgppbnQgcHRocmVhZF9zZXRjYW5jZWxzdGF0ZShpbnQgLCBpbnQg
KikgX19hc20oIl8iICJwdGhyZWFkX3NldGNhbmNlbHN0YXRlIiApOwppbnQgcHRocmVhZF9zZXRj
YW5jZWx0eXBlKGludCAsIGludCAqKSBfX2FzbSgiXyIgInB0aHJlYWRfc2V0Y2FuY2VsdHlwZSIg
KTsKaW50IHB0aHJlYWRfc2V0Y29uY3VycmVuY3koaW50KTsKaW50IHB0aHJlYWRfc2V0c2NoZWRw
YXJhbShwdGhyZWFkX3QgLAogICAgaW50ICwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKik7CmludCBwdGhyZWFkX3NldHNwZWNpZmljKHB0
aHJlYWRfa2V5X3QgLAogICAgICAgICBjb25zdCB2b2lkICopOwp2b2lkIHB0aHJlYWRfdGVzdGNh
bmNlbCh2b2lkKSBfX2FzbSgiXyIgInB0aHJlYWRfdGVzdGNhbmNlbCIgKTsKCgoKaW50IHB0aHJl
YWRfaXNfdGhyZWFkZWRfbnAodm9pZCk7CgoKaW50IHB0aHJlYWRfdGhyZWFkaWRfbnAocHRocmVh
ZF90LF9fdWludDY0X3QqKTsKCgoKaW50IHB0aHJlYWRfZ2V0bmFtZV9ucChwdGhyZWFkX3QsY2hh
ciosc2l6ZV90KTsKaW50IHB0aHJlYWRfc2V0bmFtZV9ucChjb25zdCBjaGFyKik7CgppbnQgcHRo
cmVhZF9tYWluX25wKHZvaWQpOwoKCm1hY2hfcG9ydF90IHB0aHJlYWRfbWFjaF90aHJlYWRfbnAo
cHRocmVhZF90KTsKc2l6ZV90IHB0aHJlYWRfZ2V0X3N0YWNrc2l6ZV9ucChwdGhyZWFkX3QpOwp2
b2lkICogcHRocmVhZF9nZXRfc3RhY2thZGRyX25wKHB0aHJlYWRfdCk7CgoKaW50IHB0aHJlYWRf
Y29uZF9zaWduYWxfdGhyZWFkX25wKHB0aHJlYWRfY29uZF90ICosIHB0aHJlYWRfdCk7CgoKaW50
IHB0aHJlYWRfY29uZF90aW1lZHdhaXRfcmVsYXRpdmVfbnAocHRocmVhZF9jb25kX3QgKiwKICAg
ICBwdGhyZWFkX211dGV4X3QgKiwKICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKik7CgoKaW50
IHB0aHJlYWRfY3JlYXRlX3N1c3BlbmRlZF9ucChwdGhyZWFkX3QgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHB0aHJlYWRfYXR0cl90ICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICooKikodm9pZCAqKSwKICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKik7Cmlu
dCBwdGhyZWFkX2tpbGwocHRocmVhZF90LCBpbnQpOwoKcHRocmVhZF90IHB0aHJlYWRfZnJvbV9t
YWNoX3RocmVhZF9ucChtYWNoX3BvcnRfdCk7CgppbnQgcHRocmVhZF9zaWdtYXNrKGludCwgY29u
c3Qgc2lnc2V0X3QgKiwgc2lnc2V0X3QgKikgX19hc20oIl8iICJwdGhyZWFkX3NpZ21hc2siICk7
CnZvaWQgcHRocmVhZF95aWVsZF9ucCh2b2lkKTsKCn0KIyA0NCAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9iaXRzL2d0aHItZGVmYXVsdC5oIiAyIDMK
Cgp0eXBlZGVmIHB0aHJlYWRfa2V5X3QgX19ndGhyZWFkX2tleV90Owp0eXBlZGVmIHB0aHJlYWRf
b25jZV90IF9fZ3RocmVhZF9vbmNlX3Q7CnR5cGVkZWYgcHRocmVhZF9tdXRleF90IF9fZ3RocmVh
ZF9tdXRleF90Owp0eXBlZGVmIHB0aHJlYWRfbXV0ZXhfdCBfX2d0aHJlYWRfcmVjdXJzaXZlX211
dGV4X3Q7CgojZGVmaW5lIF9fR1RIUkVBRF9NVVRFWF9JTklUIFBUSFJFQURfTVVURVhfSU5JVElB
TElaRVIKI2RlZmluZSBfX0dUSFJFQURfT05DRV9JTklUIFBUSFJFQURfT05DRV9JTklUCgoKCgoK
I2RlZmluZSBfX0dUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRfRlVOQ1RJT04gX19ndGhyZWFk
X3JlY3Vyc2l2ZV9tdXRleF9pbml0X2Z1bmN0aW9uCiMgNzAgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9ndGhyLWRlZmF1bHQuaCIgMwojZGVm
aW5lIF9fZ3RocncyKG5hbWUsbmFtZTIsdHlwZSkgCiNkZWZpbmUgX19ndGhyd18obmFtZSkgbmFt
ZQoKCgojZGVmaW5lIF9fZ3RocncobmFtZSkgX19ndGhydzIoX19ndGhyd18gIyMgbmFtZSxuYW1l
LG5hbWUpCiMgOTIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94
ODZfNjQvYml0cy9ndGhyLWRlZmF1bHQuaCIgMwoKCgoKCgoKCgoKCgoKCgoKIyAyMTQgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9ndGhyLWRl
ZmF1bHQuaCIgMwpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfYWN0aXZlX3AgKHZvaWQpCnsK
ICByZXR1cm4gMTsKfQojIDU3MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRh
cndpbjEwL3g4Nl82NC9iaXRzL2d0aHItZGVmYXVsdC5oIiAzCnN0YXRpYyBpbmxpbmUgaW50Cl9f
Z3RocmVhZF9vbmNlIChfX2d0aHJlYWRfb25jZV90ICpvbmNlLCB2b2lkICgqZnVuYykgKHZvaWQp
KQp7CiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVfcCAoKSkKICAgIHJldHVybiBwdGhyZWFkX29uY2Ug
KG9uY2UsIGZ1bmMpOwogIGVsc2UKICAgIHJldHVybiAtMTsKfQoKc3RhdGljIGlubGluZSBpbnQK
X19ndGhyZWFkX2tleV9jcmVhdGUgKF9fZ3RocmVhZF9rZXlfdCAqa2V5LCB2b2lkICgqZHRvcikg
KHZvaWQgKikpCnsKICByZXR1cm4gcHRocmVhZF9rZXlfY3JlYXRlIChrZXksIGR0b3IpOwp9Cgpz
dGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfa2V5X2RlbGV0ZSAoX19ndGhyZWFkX2tleV90IGtl
eSkKewogIHJldHVybiBwdGhyZWFkX2tleV9kZWxldGUgKGtleSk7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCAqCl9fZ3RocmVhZF9nZXRzcGVjaWZpYyAoX19ndGhyZWFkX2tleV90IGtleSkKewogIHJl
dHVybiBwdGhyZWFkX2dldHNwZWNpZmljIChrZXkpOwp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0
aHJlYWRfc2V0c3BlY2lmaWMgKF9fZ3RocmVhZF9rZXlfdCBrZXksIGNvbnN0IHZvaWQgKnB0cikK
ewogIHJldHVybiBwdGhyZWFkX3NldHNwZWNpZmljIChrZXksIHB0cik7Cn0KCnN0YXRpYyBpbmxp
bmUgaW50Cl9fZ3RocmVhZF9tdXRleF9sb2NrIChfX2d0aHJlYWRfbXV0ZXhfdCAqbXV0ZXgpCnsK
ICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wICgpKQogICAgcmV0dXJuIHB0aHJlYWRfbXV0ZXhfbG9j
ayAobXV0ZXgpOwogIGVsc2UKICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0
aHJlYWRfbXV0ZXhfdHJ5bG9jayAoX19ndGhyZWFkX211dGV4X3QgKm11dGV4KQp7CiAgaWYgKF9f
Z3RocmVhZF9hY3RpdmVfcCAoKSkKICAgIHJldHVybiBwdGhyZWFkX211dGV4X3RyeWxvY2sgKG11
dGV4KTsKICBlbHNlCiAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFk
X211dGV4X3VubG9jayAoX19ndGhyZWFkX211dGV4X3QgKm11dGV4KQp7CiAgaWYgKF9fZ3RocmVh
ZF9hY3RpdmVfcCAoKSkKICAgIHJldHVybiBwdGhyZWFkX211dGV4X3VubG9jayAobXV0ZXgpOwog
IGVsc2UKICAgIHJldHVybiAwOwp9CgoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX3JlY3Vy
c2l2ZV9tdXRleF9pbml0X2Z1bmN0aW9uIChfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3QgKm11
dGV4KQp7CiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVfcCAoKSkKICAgIHsKICAgICAgcHRocmVhZF9t
dXRleGF0dHJfdCBhdHRyOwogICAgICBpbnQgcjsKCiAgICAgIHIgPSBwdGhyZWFkX211dGV4YXR0
cl9pbml0ICgmYXR0cik7CiAgICAgIGlmICghcikKIHIgPSBwdGhyZWFkX211dGV4YXR0cl9zZXR0
eXBlICgmYXR0ciwgMik7CiAgICAgIGlmICghcikKIHIgPSBwdGhyZWFkX211dGV4X2luaXQgKG11
dGV4LCAmYXR0cik7CiAgICAgIGlmICghcikKIHIgPSBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95
ICgmYXR0cik7CiAgICAgIHJldHVybiByOwogICAgfQogIHJldHVybiAwOwp9CgoKc3RhdGljIGlu
bGluZSBpbnQKX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF9sb2NrIChfX2d0aHJlYWRfcmVjdXJz
aXZlX211dGV4X3QgKm11dGV4KQp7CiAgcmV0dXJuIF9fZ3RocmVhZF9tdXRleF9sb2NrIChtdXRl
eCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdHJ5bG9j
ayAoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90ICptdXRleCkKewogIHJldHVybiBfX2d0aHJl
YWRfbXV0ZXhfdHJ5bG9jayAobXV0ZXgpOwp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRf
cmVjdXJzaXZlX211dGV4X3VubG9jayAoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90ICptdXRl
eCkKewogIHJldHVybiBfX2d0aHJlYWRfbXV0ZXhfdW5sb2NrIChtdXRleCk7Cn0KIyAxMTUgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9ndGhy
LmgiIDIgMwoKCgoKCgoKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKIyA0NCAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9iaXRzL2MrK2lvLmgiIDIg
MwoKbmFtZXNwYWNlIHN0ZCB7CgogIHR5cGVkZWYgX19ndGhyZWFkX211dGV4X3QgX19jX2xvY2s7
CgoKICB0eXBlZGVmIEZJTEUgX19jX2ZpbGU7Cgp9CiMgNDcgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvaW9zZndkIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2NjdHlwZSIgMSAzCiMg
NDYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvY2N0eXBlIiAzCiNkZWZpbmUgX0dMSUJDWFhfQ0NU
WVBFIDEKCiAgICAgICAKIyA0OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jY3R5cGUiIDMKCgoj
IDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMgNAojIDY3ICIvdXNyL2luY2x1ZGUvY3R5cGUu
aCIgMyA0CiNkZWZpbmUgX0NUWVBFX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvcnVuZXR5cGUuaCIg
MSAzIDQKIyA0MCAiL3Vzci9pbmNsdWRlL3J1bmV0eXBlLmgiIDMgNAojZGVmaW5lIF9SVU5FVFlQ
RV9IXyAKIyA2OSAiL3Vzci9pbmNsdWRlL3J1bmV0eXBlLmgiIDMgNAojZGVmaW5lIF9XSU5UX1Qg
CnR5cGVkZWYgX19kYXJ3aW5fd2ludF90IHdpbnRfdDsKCgoKCiNkZWZpbmUgX0NBQ0hFRF9SVU5F
UyAoMSA8PDggKQojZGVmaW5lIF9DUk1BU0sgKH4oX0NBQ0hFRF9SVU5FUyAtIDEpKQoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgewogX19kYXJ3aW5fcnVuZV90IF9fbWluOwogX19kYXJ3aW5fcnVuZV90IF9f
bWF4OwogX19kYXJ3aW5fcnVuZV90IF9fbWFwOwogX191aW50MzJfdCAqX190eXBlczsKfSBfUnVu
ZUVudHJ5OwoKdHlwZWRlZiBzdHJ1Y3QgewogaW50IF9fbnJhbmdlczsKIF9SdW5lRW50cnkgKl9f
cmFuZ2VzOwp9IF9SdW5lUmFuZ2U7Cgp0eXBlZGVmIHN0cnVjdCB7CiBjaGFyIF9fbmFtZVsxNF07
CiBfX3VpbnQzMl90IF9fbWFzazsKfSBfUnVuZUNoYXJDbGFzczsKCnR5cGVkZWYgc3RydWN0IHsK
IGNoYXIgX19tYWdpY1s4XTsKIGNoYXIgX19lbmNvZGluZ1szMl07CgogX19kYXJ3aW5fcnVuZV90
ICgqX19zZ2V0cnVuZSkoY29uc3QgY2hhciAqLCBfX2Rhcndpbl9zaXplX3QsIGNoYXIgY29uc3Qg
KiopOwogaW50ICgqX19zcHV0cnVuZSkoX19kYXJ3aW5fcnVuZV90LCBjaGFyICosIF9fZGFyd2lu
X3NpemVfdCwgY2hhciAqKik7CiBfX2Rhcndpbl9ydW5lX3QgX19pbnZhbGlkX3J1bmU7CgogX191
aW50MzJfdCBfX3J1bmV0eXBlWygxIDw8OCApXTsKIF9fZGFyd2luX3J1bmVfdCBfX21hcGxvd2Vy
WygxIDw8OCApXTsKIF9fZGFyd2luX3J1bmVfdCBfX21hcHVwcGVyWygxIDw8OCApXTsKCgoKCgoK
IF9SdW5lUmFuZ2UgX19ydW5ldHlwZV9leHQ7CiBfUnVuZVJhbmdlIF9fbWFwbG93ZXJfZXh0Owog
X1J1bmVSYW5nZSBfX21hcHVwcGVyX2V4dDsKCiB2b2lkICpfX3ZhcmlhYmxlOwogaW50IF9fdmFy
aWFibGVfbGVuOwoKCgoKIGludCBfX25jaGFyY2xhc3NlczsKIF9SdW5lQ2hhckNsYXNzICpfX2No
YXJjbGFzc2VzOwp9IF9SdW5lTG9jYWxlOwoKI2RlZmluZSBfUlVORV9NQUdJQ19BICJSdW5lTWFn
QSIKCmV4dGVybiAiQyIgewpleHRlcm4gX1J1bmVMb2NhbGUgX0RlZmF1bHRSdW5lTG9jYWxlOwpl
eHRlcm4gX1J1bmVMb2NhbGUgKl9DdXJyZW50UnVuZUxvY2FsZTsKfQojIDcwICIvdXNyL2luY2x1
ZGUvY3R5cGUuaCIgMiAzIDQKCiNkZWZpbmUgX0NUWVBFX0EgMHgwMDAwMDEwMEwKI2RlZmluZSBf
Q1RZUEVfQyAweDAwMDAwMjAwTAojZGVmaW5lIF9DVFlQRV9EIDB4MDAwMDA0MDBMCiNkZWZpbmUg
X0NUWVBFX0cgMHgwMDAwMDgwMEwKI2RlZmluZSBfQ1RZUEVfTCAweDAwMDAxMDAwTAojZGVmaW5l
IF9DVFlQRV9QIDB4MDAwMDIwMDBMCiNkZWZpbmUgX0NUWVBFX1MgMHgwMDAwNDAwMEwKI2RlZmlu
ZSBfQ1RZUEVfVSAweDAwMDA4MDAwTAojZGVmaW5lIF9DVFlQRV9YIDB4MDAwMTAwMDBMCiNkZWZp
bmUgX0NUWVBFX0IgMHgwMDAyMDAwMEwKI2RlZmluZSBfQ1RZUEVfUiAweDAwMDQwMDAwTAojZGVm
aW5lIF9DVFlQRV9JIDB4MDAwODAwMDBMCiNkZWZpbmUgX0NUWVBFX1QgMHgwMDEwMDAwMEwKI2Rl
ZmluZSBfQ1RZUEVfUSAweDAwMjAwMDAwTAojZGVmaW5lIF9DVFlQRV9TVzAgMHgyMDAwMDAwMEwK
I2RlZmluZSBfQ1RZUEVfU1cxIDB4NDAwMDAwMDBMCiNkZWZpbmUgX0NUWVBFX1NXMiAweDgwMDAw
MDAwTAojZGVmaW5lIF9DVFlQRV9TVzMgMHhjMDAwMDAwMEwKI2RlZmluZSBfQ1RZUEVfU1dNIDB4
ZTAwMDAwMDBMCiNkZWZpbmUgX0NUWVBFX1NXUyAzMAojIDEyNCAiL3Vzci9pbmNsdWRlL2N0eXBl
LmgiIDMgNAojZGVmaW5lIF9fREFSV0lOX0NUWVBFX3N0YXRpY19pbmxpbmUgc3RhdGljIF9faW5s
aW5lCiMgMTM1ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0CiNkZWZpbmUgX19EQVJXSU5fQ1RZ
UEVfVE9QX3N0YXRpY19pbmxpbmUgc3RhdGljIF9faW5saW5lCiMgMTQ1ICIvdXNyL2luY2x1ZGUv
Y3R5cGUuaCIgMyA0CmV4dGVybiAiQyIgewp1bnNpZ25lZCBsb25nIF9fX3J1bmV0eXBlKF9fZGFy
d2luX2N0X3J1bmVfdCk7Cl9fZGFyd2luX2N0X3J1bmVfdCBfX190b2xvd2VyKF9fZGFyd2luX2N0
X3J1bmVfdCk7Cl9fZGFyd2luX2N0X3J1bmVfdCBfX190b3VwcGVyKF9fZGFyd2luX2N0X3J1bmVf
dCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50CmlzYXNjaWkoaW50IF9jKQp7CiByZXR1cm4gKChfYyAm
IH4weDdGKSA9PSAwKTsKfQojIDE2NCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNApleHRlcm4g
IkMiIHsKaW50IF9fbWFza3J1bmUoX19kYXJ3aW5fY3RfcnVuZV90LCB1bnNpZ25lZCBsb25nKTsK
fQoKCnN0YXRpYyBpbmxpbmUgaW50Cl9faXN0eXBlKF9fZGFyd2luX2N0X3J1bmVfdCBfYywgdW5z
aWduZWQgbG9uZyBfZikKewoKCgogcmV0dXJuIChpc2FzY2lpKF9jKSA/ICEhKF9EZWZhdWx0UnVu
ZUxvY2FsZS5fX3J1bmV0eXBlW19jXSAmIF9mKQogIDogISFfX21hc2tydW5lKF9jLCBfZikpOwoK
fQoKc3RhdGljIGlubGluZSBfX2Rhcndpbl9jdF9ydW5lX3QKX19pc2N0eXBlKF9fZGFyd2luX2N0
X3J1bmVfdCBfYywgdW5zaWduZWQgbG9uZyBfZikKewoKCgogcmV0dXJuIChfYyA8IDAgfHwgX2Mg
Pj0gKDEgPDw4ICkpID8gMCA6CiAgISEoX0RlZmF1bHRSdW5lTG9jYWxlLl9fcnVuZXR5cGVbX2Nd
ICYgX2YpOwoKfQojIDIwNCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNApleHRlcm4gIkMiIHsK
X19kYXJ3aW5fY3RfcnVuZV90IF9fdG91cHBlcihfX2Rhcndpbl9jdF9ydW5lX3QpOwpfX2Rhcndp
bl9jdF9ydW5lX3QgX190b2xvd2VyKF9fZGFyd2luX2N0X3J1bmVfdCk7Cn0KCgpzdGF0aWMgaW5s
aW5lIGludApfX3djd2lkdGgoX19kYXJ3aW5fY3RfcnVuZV90IF9jKQp7CiB1bnNpZ25lZCBpbnQg
X3g7CgogaWYgKF9jID09IDApCiAgcmV0dXJuICgwKTsKIF94ID0gKHVuc2lnbmVkIGludClfX21h
c2tydW5lKF9jLCAweGUwMDAwMDAwTHwweDAwMDQwMDAwTCk7CiBpZiAoKF94ICYgMHhlMDAwMDAw
MEwpICE9IDApCiAgcmV0dXJuICgoX3ggJiAweGUwMDAwMDAwTCkgPj4gMzApOwogcmV0dXJuICgo
X3ggJiAweDAwMDQwMDAwTCkgIT0gMCA/IDEgOiAtMSk7Cn0KCgoKI2RlZmluZSBfdG9sb3dlcihj
KSBfX3RvbG93ZXIoYykKI2RlZmluZSBfdG91cHBlcihjKSBfX3RvdXBwZXIoYykKCnN0YXRpYyBp
bmxpbmUgaW50CmlzYWxudW0oaW50IF9jKQp7CiByZXR1cm4gKF9faXN0eXBlKF9jLCAweDAwMDAw
MTAwTHwweDAwMDAwNDAwTCkpOwp9CgpzdGF0aWMgaW5saW5lIGludAppc2FscGhhKGludCBfYykK
ewogcmV0dXJuIChfX2lzdHlwZShfYywgMHgwMDAwMDEwMEwpKTsKfQoKc3RhdGljIGlubGluZSBp
bnQKaXNibGFuayhpbnQgX2MpCnsKIHJldHVybiAoX19pc3R5cGUoX2MsIDB4MDAwMjAwMDBMKSk7
Cn0KCnN0YXRpYyBpbmxpbmUgaW50CmlzY250cmwoaW50IF9jKQp7CiByZXR1cm4gKF9faXN0eXBl
KF9jLCAweDAwMDAwMjAwTCkpOwp9CgoKc3RhdGljIGlubGluZSBpbnQKaXNkaWdpdChpbnQgX2Mp
CnsKIHJldHVybiAoX19pc2N0eXBlKF9jLCAweDAwMDAwNDAwTCkpOwp9CgpzdGF0aWMgaW5saW5l
IGludAppc2dyYXBoKGludCBfYykKewogcmV0dXJuIChfX2lzdHlwZShfYywgMHgwMDAwMDgwMEwp
KTsKfQoKc3RhdGljIGlubGluZSBpbnQKaXNsb3dlcihpbnQgX2MpCnsKIHJldHVybiAoX19pc3R5
cGUoX2MsIDB4MDAwMDEwMDBMKSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50CmlzcHJpbnQoaW50IF9j
KQp7CiByZXR1cm4gKF9faXN0eXBlKF9jLCAweDAwMDQwMDAwTCkpOwp9CgpzdGF0aWMgaW5saW5l
IGludAppc3B1bmN0KGludCBfYykKewogcmV0dXJuIChfX2lzdHlwZShfYywgMHgwMDAwMjAwMEwp
KTsKfQoKc3RhdGljIGlubGluZSBpbnQKaXNzcGFjZShpbnQgX2MpCnsKIHJldHVybiAoX19pc3R5
cGUoX2MsIDB4MDAwMDQwMDBMKSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50CmlzdXBwZXIoaW50IF9j
KQp7CiByZXR1cm4gKF9faXN0eXBlKF9jLCAweDAwMDA4MDAwTCkpOwp9CgoKc3RhdGljIGlubGlu
ZSBpbnQKaXN4ZGlnaXQoaW50IF9jKQp7CiByZXR1cm4gKF9faXNjdHlwZShfYywgMHgwMDAxMDAw
MEwpKTsKfQoKc3RhdGljIGlubGluZSBpbnQKdG9hc2NpaShpbnQgX2MpCnsKIHJldHVybiAoX2Mg
JiAweDdGKTsKfQoKc3RhdGljIGlubGluZSBpbnQKdG9sb3dlcihpbnQgX2MpCnsKICAgICAgICBy
ZXR1cm4gKF9fdG9sb3dlcihfYykpOwp9CgpzdGF0aWMgaW5saW5lIGludAp0b3VwcGVyKGludCBf
YykKewogICAgICAgIHJldHVybiAoX190b3VwcGVyKF9jKSk7Cn0KCgpzdGF0aWMgaW5saW5lIGlu
dApkaWdpdHRvaW50KGludCBfYykKewogcmV0dXJuIChfX21hc2tydW5lKF9jLCAweDBGKSk7Cn0K
CnN0YXRpYyBpbmxpbmUgaW50CmlzaGV4bnVtYmVyKGludCBfYykKewogcmV0dXJuIChfX2lzdHlw
ZShfYywgMHgwMDAxMDAwMEwpKTsKfQoKc3RhdGljIGlubGluZSBpbnQKaXNpZGVvZ3JhbShpbnQg
X2MpCnsKIHJldHVybiAoX19pc3R5cGUoX2MsIDB4MDAwODAwMDBMKSk7Cn0KCnN0YXRpYyBpbmxp
bmUgaW50CmlzbnVtYmVyKGludCBfYykKewogcmV0dXJuIChfX2lzdHlwZShfYywgMHgwMDAwMDQw
MEwpKTsKfQoKc3RhdGljIGlubGluZSBpbnQKaXNwaG9ub2dyYW0oaW50IF9jKQp7CiByZXR1cm4g
KF9faXN0eXBlKF9jLCAweDAwMjAwMDAwTCkpOwp9CgpzdGF0aWMgaW5saW5lIGludAppc3J1bmUo
aW50IF9jKQp7CiByZXR1cm4gKF9faXN0eXBlKF9jLCAweEZGRkZGRkYwTCkpOwp9CgpzdGF0aWMg
aW5saW5lIGludAppc3NwZWNpYWwoaW50IF9jKQp7CiByZXR1cm4gKF9faXN0eXBlKF9jLCAweDAw
MTAwMDAwTCkpOwp9CiMgNTIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvY2N0eXBlIiAyIDMKCgoj
dW5kZWYgaXNhbG51bQojdW5kZWYgaXNhbHBoYQojdW5kZWYgaXNjbnRybAojdW5kZWYgaXNkaWdp
dAojdW5kZWYgaXNncmFwaAojdW5kZWYgaXNsb3dlcgojdW5kZWYgaXNwcmludAojdW5kZWYgaXNw
dW5jdAojdW5kZWYgaXNzcGFjZQojdW5kZWYgaXN1cHBlcgojdW5kZWYgaXN4ZGlnaXQKI3VuZGVm
IHRvbG93ZXIKI3VuZGVmIHRvdXBwZXIKCm5hbWVzcGFjZSBzdGQgewoKICB1c2luZyA6OmlzYWxu
dW07CiAgdXNpbmcgOjppc2FscGhhOwogIHVzaW5nIDo6aXNjbnRybDsKICB1c2luZyA6OmlzZGln
aXQ7CiAgdXNpbmcgOjppc2dyYXBoOwogIHVzaW5nIDo6aXNsb3dlcjsKICB1c2luZyA6OmlzcHJp
bnQ7CiAgdXNpbmcgOjppc3B1bmN0OwogIHVzaW5nIDo6aXNzcGFjZTsKICB1c2luZyA6OmlzdXBw
ZXI7CiAgdXNpbmcgOjppc3hkaWdpdDsKICB1c2luZyA6OnRvbG93ZXI7CiAgdXNpbmcgOjp0b3Vw
cGVyOwoKfQojIDQ4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2lvc2Z3ZCIgMiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0cmluZ2Z3ZC5oIiAxIDMKIyA0MCAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL3N0cmluZ2Z3ZC5oIiAzCiNkZWZpbmUgX1NUUklOR0ZXRF9IIDEK
CiAgICAgICAKIyA0MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0cmluZ2Z3ZC5oIiAz
CgoKCm5hbWVzcGFjZSBzdGQgewoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICBjbGFz
cyBhbGxvY2F0b3I7CgogIHRlbXBsYXRlPGNsYXNzIF9DaGFyVD4KICAgIHN0cnVjdCBjaGFyX3Ry
YWl0czsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hh
cl90cmFpdHM8X0NoYXJUPiwKICAgICAgICAgICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8
X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJpbmc7CgogIHRlbXBsYXRlPD4gc3RydWN0IGNo
YXJfdHJhaXRzPGNoYXI+OwoKICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyPiBzdHJpbmc7CgoK
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBjaGFyX3RyYWl0czx3Y2hhcl90PjsKCiAgdHlwZWRlZiBiYXNp
Y19zdHJpbmc8d2NoYXJfdD4gd3N0cmluZzsKCgp9CiMgNDkgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvaW9zZndkIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvcG9zdHlwZXMu
aCIgMSAzCiMgNDIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9wb3N0eXBlcy5oIiAzCiNk
ZWZpbmUgX0dMSUJDWFhfUE9TVFlQRVNfSCAxCgogICAgICAgCiMgNDUgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvYml0cy9wb3N0eXBlcy5oIiAzCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Y3djaGFyIiAxIDMKIyA0NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jd2NoYXIiIDMKI2RlZmlu
ZSBfR0xJQkNYWF9DV0NIQVIgMQoKICAgICAgIAojIDQ5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2N3Y2hhciIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvY3RpbWUiIDEgMwojIDQ2
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2N0aW1lIiAzCiNkZWZpbmUgX0dMSUJDWFhfQ1RJTUUg
MQoKICAgICAgIAojIDQ5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2N0aW1lIiAzCgoKCgoKI3Vu
ZGVmIGNsb2NrCiN1bmRlZiBkaWZmdGltZQojdW5kZWYgbWt0aW1lCiN1bmRlZiB0aW1lCiN1bmRl
ZiBhc2N0aW1lCiN1bmRlZiBjdGltZQojdW5kZWYgZ210aW1lCiN1bmRlZiBsb2NhbHRpbWUKI3Vu
ZGVmIHN0cmZ0aW1lCgpuYW1lc3BhY2Ugc3RkIHsKCiAgdXNpbmcgOjpjbG9ja190OwogIHVzaW5n
IDo6dGltZV90OwogIHVzaW5nIDo6dG07CgogIHVzaW5nIDo6Y2xvY2s7CiAgdXNpbmcgOjpkaWZm
dGltZTsKICB1c2luZyA6Om1rdGltZTsKICB1c2luZyA6OnRpbWU7CiAgdXNpbmcgOjphc2N0aW1l
OwogIHVzaW5nIDo6Y3RpbWU7CiAgdXNpbmcgOjpnbXRpbWU7CiAgdXNpbmcgOjpsb2NhbHRpbWU7
CiAgdXNpbmcgOjpzdHJmdGltZTsKCn0KIyA1MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jd2No
YXIiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMyA0CiMgNjggIi91c3IvaW5j
bHVkZS93Y2hhci5oIiAzIDQKI2RlZmluZSBfV0NIQVJfSF8gCiMgODIgIi91c3IvaW5jbHVkZS93
Y2hhci5oIiAzIDQKI2RlZmluZSBfTUJTVEFURV9UIAp0eXBlZGVmIF9fZGFyd2luX21ic3RhdGVf
dCBtYnN0YXRlX3Q7CiMgMTE0ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CiMgMSAiL3Vzci9p
bmNsdWRlL193Y3R5cGUuaCIgMSAzIDQKIyA0MCAiL3Vzci9pbmNsdWRlL193Y3R5cGUuaCIgMyA0
CiNkZWZpbmUgX19XQ1RZUEVfSF8gCiMgNTEgIi91c3IvaW5jbHVkZS9fd2N0eXBlLmgiIDMgNAoj
ZGVmaW5lIF9XQ1RZUEVfVCAKdHlwZWRlZiBfX2Rhcndpbl93Y3R5cGVfdCB3Y3R5cGVfdDsKCgoK
I2RlZmluZSBXRU9GIF9fREFSV0lOX1dFT0YKCgoKI2RlZmluZSBfX0RBUldJTl9XQ1RZUEVfVE9Q
X3N0YXRpY19pbmxpbmUgc3RhdGljIF9faW5saW5lCiMgNzEgIi91c3IvaW5jbHVkZS9fd2N0eXBl
LmgiIDMgNApzdGF0aWMgaW5saW5lIGludAppc3dhbG51bSh3aW50X3QgX3djKQp7CiByZXR1cm4g
KF9faXN0eXBlKF93YywgMHgwMDAwMDEwMEx8MHgwMDAwMDQwMEwpKTsKfQoKc3RhdGljIGlubGlu
ZSBpbnQKaXN3YWxwaGEod2ludF90IF93YykKewogcmV0dXJuIChfX2lzdHlwZShfd2MsIDB4MDAw
MDAxMDBMKSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cmlzd2NudHJsKHdpbnRfdCBfd2MpCnsKIHJl
dHVybiAoX19pc3R5cGUoX3djLCAweDAwMDAwMjAwTCkpOwp9CgpzdGF0aWMgaW5saW5lIGludApp
c3djdHlwZSh3aW50X3QgX3djLCB3Y3R5cGVfdCBfY2hhcmNsYXNzKQp7CiByZXR1cm4gKF9faXN0
eXBlKF93YywgX2NoYXJjbGFzcykpOwp9CgpzdGF0aWMgaW5saW5lIGludAppc3dkaWdpdCh3aW50
X3QgX3djKQp7CiByZXR1cm4gKF9faXNjdHlwZShfd2MsIDB4MDAwMDA0MDBMKSk7Cn0KCnN0YXRp
YyBpbmxpbmUgaW50Cmlzd2dyYXBoKHdpbnRfdCBfd2MpCnsKIHJldHVybiAoX19pc3R5cGUoX3dj
LCAweDAwMDAwODAwTCkpOwp9CgpzdGF0aWMgaW5saW5lIGludAppc3dsb3dlcih3aW50X3QgX3dj
KQp7CiByZXR1cm4gKF9faXN0eXBlKF93YywgMHgwMDAwMTAwMEwpKTsKfQoKc3RhdGljIGlubGlu
ZSBpbnQKaXN3cHJpbnQod2ludF90IF93YykKewogcmV0dXJuIChfX2lzdHlwZShfd2MsIDB4MDAw
NDAwMDBMKSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cmlzd3B1bmN0KHdpbnRfdCBfd2MpCnsKIHJl
dHVybiAoX19pc3R5cGUoX3djLCAweDAwMDAyMDAwTCkpOwp9CgpzdGF0aWMgaW5saW5lIGludApp
c3dzcGFjZSh3aW50X3QgX3djKQp7CiByZXR1cm4gKF9faXN0eXBlKF93YywgMHgwMDAwNDAwMEwp
KTsKfQoKc3RhdGljIGlubGluZSBpbnQKaXN3dXBwZXIod2ludF90IF93YykKewogcmV0dXJuIChf
X2lzdHlwZShfd2MsIDB4MDAwMDgwMDBMKSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cmlzd3hkaWdp
dCh3aW50X3QgX3djKQp7CiByZXR1cm4gKF9faXNjdHlwZShfd2MsIDB4MDAwMTAwMDBMKSk7Cn0K
CnN0YXRpYyBpbmxpbmUgd2ludF90CnRvd2xvd2VyKHdpbnRfdCBfd2MpCnsKICAgICAgICByZXR1
cm4gKF9fdG9sb3dlcihfd2MpKTsKfQoKc3RhdGljIGlubGluZSB3aW50X3QKdG93dXBwZXIod2lu
dF90IF93YykKewogICAgICAgIHJldHVybiAoX190b3VwcGVyKF93YykpOwp9CiMgMTc2ICIvdXNy
L2luY2x1ZGUvX3djdHlwZS5oIiAzIDQKZXh0ZXJuICJDIiB7CndjdHlwZV90CiB3Y3R5cGUoY29u
c3QgY2hhciAqKTsKfQojIDExNSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMyA0CgpleHRlcm4g
IkMiIHsKd2ludF90IGJ0b3djKGludCk7CndpbnRfdCBmZ2V0d2MoRklMRSAqKTsKd2NoYXJfdCAq
ZmdldHdzKHdjaGFyX3QgKiAsIGludCwgRklMRSAqICk7CndpbnRfdCBmcHV0d2Mod2NoYXJfdCwg
RklMRSAqKTsKaW50IGZwdXR3cyhjb25zdCB3Y2hhcl90ICogLCBGSUxFICogKTsKaW50IGZ3aWRl
KEZJTEUgKiwgaW50KTsKaW50IGZ3cHJpbnRmKEZJTEUgKiAsIGNvbnN0IHdjaGFyX3QgKiAsIC4u
LikgOwppbnQgZndzY2FuZihGSUxFICogLCBjb25zdCB3Y2hhcl90ICogLCAuLi4pIDsKd2ludF90
IGdldHdjKEZJTEUgKik7CndpbnRfdCBnZXR3Y2hhcih2b2lkKTsKc2l6ZV90IG1icmxlbihjb25z
dCBjaGFyICogLCBzaXplX3QsIG1ic3RhdGVfdCAqICk7CnNpemVfdCBtYnJ0b3djKHdjaGFyX3Qg
KiAsIGNvbnN0IGNoYXIgKiAsIHNpemVfdCwKICAgICBtYnN0YXRlX3QgKiApOwppbnQgbWJzaW5p
dChjb25zdCBtYnN0YXRlX3QgKik7CnNpemVfdCBtYnNydG93Y3Mod2NoYXJfdCAqICwgY29uc3Qg
Y2hhciAqKiAsIHNpemVfdCwKICAgICBtYnN0YXRlX3QgKiApOwp3aW50X3QgcHV0d2Mod2NoYXJf
dCwgRklMRSAqKTsKd2ludF90IHB1dHdjaGFyKHdjaGFyX3QpOwppbnQgc3dwcmludGYod2NoYXJf
dCAqICwgc2l6ZV90LCBjb25zdCB3Y2hhcl90ICogLAogICAgIC4uLikgOwppbnQgc3dzY2FuZihj
b25zdCB3Y2hhcl90ICogLCBjb25zdCB3Y2hhcl90ICogLCAuLi4pIDsKd2ludF90IHVuZ2V0d2Mo
d2ludF90LCBGSUxFICopOwppbnQgdmZ3cHJpbnRmKEZJTEUgKiAsIGNvbnN0IHdjaGFyX3QgKiAs
CiAgICAgX19kYXJ3aW5fdmFfbGlzdCkgOwppbnQgdnN3cHJpbnRmKHdjaGFyX3QgKiAsIHNpemVf
dCwgY29uc3Qgd2NoYXJfdCAqICwKICAgICBfX2Rhcndpbl92YV9saXN0KSA7CmludCB2d3ByaW50
Zihjb25zdCB3Y2hhcl90ICogLCBfX2Rhcndpbl92YV9saXN0KSA7CnNpemVfdCB3Y3J0b21iKGNo
YXIgKiAsIHdjaGFyX3QsIG1ic3RhdGVfdCAqICk7CndjaGFyX3QgKndjc2NhdCh3Y2hhcl90ICog
LCBjb25zdCB3Y2hhcl90ICogKTsKd2NoYXJfdCAqd2NzY2hyKGNvbnN0IHdjaGFyX3QgKiwgd2No
YXJfdCk7CmludCB3Y3NjbXAoY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwppbnQg
d2NzY29sbChjb25zdCB3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKik7CndjaGFyX3QgKndjc2Nw
eSh3Y2hhcl90ICogLCBjb25zdCB3Y2hhcl90ICogKTsKc2l6ZV90IHdjc2NzcG4oY29uc3Qgd2No
YXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpzaXplX3Qgd2NzZnRpbWUod2NoYXJfdCAqICwgc2l6
ZV90LCBjb25zdCB3Y2hhcl90ICogLAogICAgIGNvbnN0IHN0cnVjdCB0bSAqICkgX19hc20oIl8i
ICJ3Y3NmdGltZSIgKTsKc2l6ZV90IHdjc2xlbihjb25zdCB3Y2hhcl90ICopOwp3Y2hhcl90ICp3
Y3NuY2F0KHdjaGFyX3QgKiAsIGNvbnN0IHdjaGFyX3QgKiAsIHNpemVfdCk7CmludCB3Y3NuY21w
KGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpOwp3Y2hhcl90ICp3Y3Nu
Y3B5KHdjaGFyX3QgKiAsIGNvbnN0IHdjaGFyX3QgKiAsIHNpemVfdCk7CndjaGFyX3QgKndjc3Bi
cmsoY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwp3Y2hhcl90ICp3Y3NyY2hyKGNv
bnN0IHdjaGFyX3QgKiwgd2NoYXJfdCk7CnNpemVfdCB3Y3NydG9tYnMoY2hhciAqICwgY29uc3Qg
d2NoYXJfdCAqKiAsIHNpemVfdCwKICAgICBtYnN0YXRlX3QgKiApOwpzaXplX3Qgd2Nzc3BuKGNv
bnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKd2NoYXJfdCAqd2Nzc3RyKGNvbnN0IHdj
aGFyX3QgKiAsIGNvbnN0IHdjaGFyX3QgKiApOwpzaXplX3Qgd2NzeGZybSh3Y2hhcl90ICogLCBj
b25zdCB3Y2hhcl90ICogLCBzaXplX3QpOwppbnQgd2N0b2Iod2ludF90KTsKZG91YmxlIHdjc3Rv
ZChjb25zdCB3Y2hhcl90ICogLCB3Y2hhcl90ICoqICk7CndjaGFyX3QgKndjc3Rvayh3Y2hhcl90
ICogLCBjb25zdCB3Y2hhcl90ICogLAogICAgIHdjaGFyX3QgKiogKTsKbG9uZyB3Y3N0b2woY29u
c3Qgd2NoYXJfdCAqICwgd2NoYXJfdCAqKiAsIGludCk7CnVuc2lnbmVkIGxvbmcKICB3Y3N0b3Vs
KGNvbnN0IHdjaGFyX3QgKiAsIHdjaGFyX3QgKiogLCBpbnQpOwp3Y2hhcl90ICp3bWVtY2hyKGNv
bnN0IHdjaGFyX3QgKiwgd2NoYXJfdCwgc2l6ZV90KTsKaW50IHdtZW1jbXAoY29uc3Qgd2NoYXJf
dCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CndjaGFyX3QgKndtZW1jcHkod2NoYXJfdCAq
ICwgY29uc3Qgd2NoYXJfdCAqICwgc2l6ZV90KTsKd2NoYXJfdCAqd21lbW1vdmUod2NoYXJfdCAq
LCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CndjaGFyX3QgKndtZW1zZXQod2NoYXJfdCAqLCB3
Y2hhcl90LCBzaXplX3QpOwppbnQgd3ByaW50Zihjb25zdCB3Y2hhcl90ICogLCAuLi4pIDsKaW50
IHdzY2FuZihjb25zdCB3Y2hhcl90ICogLCAuLi4pIDsKCgppbnQgdmZ3c2NhbmYoRklMRSAqICwg
Y29uc3Qgd2NoYXJfdCAqICwKICAgICBfX2Rhcndpbl92YV9saXN0KSA7CmludCB2c3dzY2FuZihj
b25zdCB3Y2hhcl90ICogLCBjb25zdCB3Y2hhcl90ICogLAogICAgIF9fZGFyd2luX3ZhX2xpc3Qp
IDsKaW50IHZ3c2NhbmYoY29uc3Qgd2NoYXJfdCAqICwgX19kYXJ3aW5fdmFfbGlzdCkgOwpmbG9h
dCB3Y3N0b2YoY29uc3Qgd2NoYXJfdCAqICwgd2NoYXJfdCAqKiApOwpsb25nIGRvdWJsZQogd2Nz
dG9sZChjb25zdCB3Y2hhcl90ICogLCB3Y2hhcl90ICoqICkgOwoKbG9uZyBsb25nCiB3Y3N0b2xs
KGNvbnN0IHdjaGFyX3QgKiAsIHdjaGFyX3QgKiogLCBpbnQpOwp1bnNpZ25lZCBsb25nIGxvbmcK
IHdjc3RvdWxsKGNvbnN0IHdjaGFyX3QgKiAsIHdjaGFyX3QgKiogLCBpbnQpOwoKaW50IHdjc3dp
ZHRoKGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKaW50IHdjd2lkdGgod2NoYXJfdCk7CgoKCnNp
emVfdCBtYnNucnRvd2NzKHdjaGFyX3QgKiAsIGNvbnN0IGNoYXIgKiogLCBzaXplX3QsCiAgICAg
c2l6ZV90LCBtYnN0YXRlX3QgKiApOwpzaXplX3Qgd2NzbGNhdCh3Y2hhcl90ICosIGNvbnN0IHdj
aGFyX3QgKiwgc2l6ZV90KTsKc2l6ZV90IHdjc2xjcHkod2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90
ICosIHNpemVfdCk7CnNpemVfdCB3Y3NucnRvbWJzKGNoYXIgKiAsIGNvbnN0IHdjaGFyX3QgKiog
LCBzaXplX3QsCiAgICAgc2l6ZV90LCBtYnN0YXRlX3QgKiApOwoKCgoKCgp9CiMgNTYgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvY3djaGFyIiAyIDMKIyA3MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9jd2NoYXIiIDMKbmFtZXNwYWNlIHN0ZCB7CgogIHVzaW5nIDo6bWJzdGF0ZV90OwoKfQoKCiN1
bmRlZiBidG93YwojdW5kZWYgZmdldHdjCiN1bmRlZiBmZ2V0d3MKI3VuZGVmIGZwdXR3YwojdW5k
ZWYgZnB1dHdzCiN1bmRlZiBmd2lkZQojdW5kZWYgZndwcmludGYKI3VuZGVmIGZ3c2NhbmYKI3Vu
ZGVmIGdldHdjCiN1bmRlZiBnZXR3Y2hhcgojdW5kZWYgbWJybGVuCiN1bmRlZiBtYnJ0b3djCiN1
bmRlZiBtYnNpbml0CiN1bmRlZiBtYnNydG93Y3MKI3VuZGVmIHB1dHdjCiN1bmRlZiBwdXR3Y2hh
cgojdW5kZWYgc3dwcmludGYKI3VuZGVmIHN3c2NhbmYKI3VuZGVmIHVuZ2V0d2MKI3VuZGVmIHZm
d3ByaW50ZgoKI3VuZGVmIHZmd3NjYW5mCgojdW5kZWYgdnN3cHJpbnRmCgojdW5kZWYgdnN3c2Nh
bmYKCiN1bmRlZiB2d3ByaW50ZgoKI3VuZGVmIHZ3c2NhbmYKCiN1bmRlZiB3Y3J0b21iCiN1bmRl
ZiB3Y3NjYXQKI3VuZGVmIHdjc2NocgojdW5kZWYgd2NzY21wCiN1bmRlZiB3Y3Njb2xsCiN1bmRl
ZiB3Y3NjcHkKI3VuZGVmIHdjc2NzcG4KI3VuZGVmIHdjc2Z0aW1lCiN1bmRlZiB3Y3NsZW4KI3Vu
ZGVmIHdjc25jYXQKI3VuZGVmIHdjc25jbXAKI3VuZGVmIHdjc25jcHkKI3VuZGVmIHdjc3BicmsK
I3VuZGVmIHdjc3JjaHIKI3VuZGVmIHdjc3J0b21icwojdW5kZWYgd2Nzc3BuCiN1bmRlZiB3Y3Nz
dHIKI3VuZGVmIHdjc3RvZAoKI3VuZGVmIHdjc3RvZgoKI3VuZGVmIHdjc3RvawojdW5kZWYgd2Nz
dG9sCiN1bmRlZiB3Y3N0b3VsCiN1bmRlZiB3Y3N4ZnJtCiN1bmRlZiB3Y3RvYgojdW5kZWYgd21l
bWNocgojdW5kZWYgd21lbWNtcAojdW5kZWYgd21lbWNweQojdW5kZWYgd21lbW1vdmUKI3VuZGVm
IHdtZW1zZXQKI3VuZGVmIHdwcmludGYKI3VuZGVmIHdzY2FuZgoKCgpuYW1lc3BhY2Ugc3RkIHsK
CiAgdXNpbmcgOjp3aW50X3Q7CgogIHVzaW5nIDo6YnRvd2M7CiAgdXNpbmcgOjpmZ2V0d2M7CiAg
dXNpbmcgOjpmZ2V0d3M7CiAgdXNpbmcgOjpmcHV0d2M7CiAgdXNpbmcgOjpmcHV0d3M7CiAgdXNp
bmcgOjpmd2lkZTsKICB1c2luZyA6OmZ3cHJpbnRmOwogIHVzaW5nIDo6ZndzY2FuZjsKICB1c2lu
ZyA6OmdldHdjOwogIHVzaW5nIDo6Z2V0d2NoYXI7CiAgdXNpbmcgOjptYnJsZW47CiAgdXNpbmcg
OjptYnJ0b3djOwogIHVzaW5nIDo6bWJzaW5pdDsKICB1c2luZyA6Om1ic3J0b3djczsKICB1c2lu
ZyA6OnB1dHdjOwogIHVzaW5nIDo6cHV0d2NoYXI7CiAgdXNpbmcgOjpzd3ByaW50ZjsKICB1c2lu
ZyA6OnN3c2NhbmY7CiAgdXNpbmcgOjp1bmdldHdjOwogIHVzaW5nIDo6dmZ3cHJpbnRmOwoKICB1
c2luZyA6OnZmd3NjYW5mOwoKICB1c2luZyA6OnZzd3ByaW50ZjsKCiAgdXNpbmcgOjp2c3dzY2Fu
ZjsKCiAgdXNpbmcgOjp2d3ByaW50ZjsKCiAgdXNpbmcgOjp2d3NjYW5mOwoKICB1c2luZyA6Ondj
cnRvbWI7CiAgdXNpbmcgOjp3Y3NjYXQ7CiAgdXNpbmcgOjp3Y3NjbXA7CiAgdXNpbmcgOjp3Y3Nj
b2xsOwogIHVzaW5nIDo6d2NzY3B5OwogIHVzaW5nIDo6d2NzY3NwbjsKICB1c2luZyA6Ondjc2Z0
aW1lOwogIHVzaW5nIDo6d2NzbGVuOwogIHVzaW5nIDo6d2NzbmNhdDsKICB1c2luZyA6Ondjc25j
bXA7CiAgdXNpbmcgOjp3Y3NuY3B5OwogIHVzaW5nIDo6d2NzcnRvbWJzOwogIHVzaW5nIDo6d2Nz
c3BuOwogIHVzaW5nIDo6d2NzdG9kOwoKICB1c2luZyA6Ondjc3RvZjsKCiAgdXNpbmcgOjp3Y3N0
b2s7CiAgdXNpbmcgOjp3Y3N0b2w7CiAgdXNpbmcgOjp3Y3N0b3VsOwogIHVzaW5nIDo6d2NzeGZy
bTsKICB1c2luZyA6OndjdG9iOwogIHVzaW5nIDo6d21lbWNtcDsKICB1c2luZyA6OndtZW1jcHk7
CiAgdXNpbmcgOjp3bWVtbW92ZTsKICB1c2luZyA6OndtZW1zZXQ7CiAgdXNpbmcgOjp3cHJpbnRm
OwogIHVzaW5nIDo6d3NjYW5mOwoKICB1c2luZyA6Ondjc2NocjsKCiAgaW5saW5lIHdjaGFyX3Qq
CiAgd2NzY2hyKHdjaGFyX3QqIF9fcCwgd2NoYXJfdCBfX2MpCiAgeyByZXR1cm4gd2NzY2hyKGNv
bnN0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KF9fcCksIF9fYyk7IH0KCiAgdXNpbmcgOjp3Y3NwYnJr
OwoKICBpbmxpbmUgd2NoYXJfdCoKICB3Y3NwYnJrKHdjaGFyX3QqIF9fczEsIGNvbnN0IHdjaGFy
X3QqIF9fczIpCiAgeyByZXR1cm4gd2NzcGJyayhjb25zdF9jYXN0PGNvbnN0IHdjaGFyX3QqPihf
X3MxKSwgX19zMik7IH0KCiAgdXNpbmcgOjp3Y3NyY2hyOwoKICBpbmxpbmUgd2NoYXJfdCoKICB3
Y3NyY2hyKHdjaGFyX3QqIF9fcCwgd2NoYXJfdCBfX2MpCiAgeyByZXR1cm4gd2NzcmNocihjb25z
dF9jYXN0PGNvbnN0IHdjaGFyX3QqPihfX3ApLCBfX2MpOyB9CgogIHVzaW5nIDo6d2Nzc3RyOwoK
ICBpbmxpbmUgd2NoYXJfdCoKICB3Y3NzdHIod2NoYXJfdCogX19zMSwgY29uc3Qgd2NoYXJfdCog
X19zMikKICB7IHJldHVybiB3Y3NzdHIoY29uc3RfY2FzdDxjb25zdCB3Y2hhcl90Kj4oX19zMSks
IF9fczIpOyB9CgogIHVzaW5nIDo6d21lbWNocjsKCiAgaW5saW5lIHdjaGFyX3QqCiAgd21lbWNo
cih3Y2hhcl90KiBfX3AsIHdjaGFyX3QgX19jLCBzaXplX3QgX19uKQogIHsgcmV0dXJuIHdtZW1j
aHIoY29uc3RfY2FzdDxjb25zdCB3Y2hhcl90Kj4oX19wKSwgX19jLCBfX24pOyB9Cgp9CgoKCiN1
bmRlZiB3Y3N0b2xkCiN1bmRlZiB3Y3N0b2xsCiN1bmRlZiB3Y3N0b3VsbAoKbmFtZXNwYWNlIF9f
Z251X2N4eCB7CgoKCgoKCiAgdXNpbmcgOjp3Y3N0b2xkOwojIDI2MiAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9jd2NoYXIiIDMKICB1c2luZyA6Ondjc3RvbGw7CiAgdXNpbmcgOjp3Y3N0b3VsbDsK
Cgp9CgpuYW1lc3BhY2Ugc3RkIHsKCiAgdXNpbmcgOjpfX2dudV9jeHg6Ondjc3RvbGQ7CiAgdXNp
bmcgOjpfX2dudV9jeHg6Ondjc3RvbGw7CiAgdXNpbmcgOjpfX2dudV9jeHg6Ondjc3RvdWxsOwoK
fQojIDQ3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvcG9zdHlwZXMuaCIgMiAzCgoKCgoK
bmFtZXNwYWNlIHN0ZCB7CiMgNzIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9wb3N0eXBl
cy5oIiAzCiAgdHlwZWRlZiBpbnQ2NF90IHN0cmVhbW9mZjsKCgoKCgogIHR5cGVkZWYgcHRyZGlm
Zl90IHN0cmVhbXNpemU7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9TdGF0ZVQ+CiAgICBjbGFzcyBm
cG9zOwojIDk0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvcG9zdHlwZXMuaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9TdGF0ZVQ+CiAgICBjbGFzcyBmcG9zCiAgICB7CiAgICBwcml2YXRl
OgogICAgICBzdHJlYW1vZmYgX01fb2ZmOwogICAgICBfU3RhdGVUIF9NX3N0YXRlOwoKICAgIHB1
YmxpYzoKCgoKCiAgICAgIGZwb3MoKQogICAgICA6IF9NX29mZigwKSwgX01fc3RhdGUoKSB7IH0K
IyAxMTYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9wb3N0eXBlcy5oIiAzCiAgICAgIGZw
b3Moc3RyZWFtb2ZmIF9fb2ZmKQogICAgICA6IF9NX29mZihfX29mZiksIF9NX3N0YXRlKCkgeyB9
CgoKICAgICAgb3BlcmF0b3Igc3RyZWFtb2ZmKCkgY29uc3QgeyByZXR1cm4gX01fb2ZmOyB9CgoK
ICAgICAgdm9pZAogICAgICBzdGF0ZShfU3RhdGVUIF9fc3QpCiAgICAgIHsgX01fc3RhdGUgPSBf
X3N0OyB9CgoKICAgICAgX1N0YXRlVAogICAgICBzdGF0ZSgpIGNvbnN0CiAgICAgIHsgcmV0dXJu
IF9NX3N0YXRlOyB9CgoKCgoKICAgICAgZnBvcyYKICAgICAgb3BlcmF0b3IrPShzdHJlYW1vZmYg
X19vZmYpCiAgICAgIHsKIF9NX29mZiArPSBfX29mZjsKIHJldHVybiAqdGhpczsKICAgICAgfQoK
CgoKCiAgICAgIGZwb3MmCiAgICAgIG9wZXJhdG9yLT0oc3RyZWFtb2ZmIF9fb2ZmKQogICAgICB7
CiBfTV9vZmYgLT0gX19vZmY7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCgoKCgoKCiAgICAgIGZw
b3MKICAgICAgb3BlcmF0b3IrKHN0cmVhbW9mZiBfX29mZikgY29uc3QKICAgICAgewogZnBvcyBf
X3BvcygqdGhpcyk7CiBfX3BvcyArPSBfX29mZjsKIHJldHVybiBfX3BvczsKICAgICAgfQoKCgoK
CgoKICAgICAgZnBvcwogICAgICBvcGVyYXRvci0oc3RyZWFtb2ZmIF9fb2ZmKSBjb25zdAogICAg
ICB7CiBmcG9zIF9fcG9zKCp0aGlzKTsKIF9fcG9zIC09IF9fb2ZmOwogcmV0dXJuIF9fcG9zOwog
ICAgICB9CgoKCgoKCiAgICAgIHN0cmVhbW9mZgogICAgICBvcGVyYXRvci0oY29uc3QgZnBvcyYg
X19vdGhlcikgY29uc3QKICAgICAgeyByZXR1cm4gX01fb2ZmIC0gX19vdGhlci5fTV9vZmY7IH0K
ICAgIH07CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1N0YXRlVD4KICAgIGlubGluZSBib29s
CiAgICBvcGVyYXRvcj09KGNvbnN0IGZwb3M8X1N0YXRlVD4mIF9fbGhzLCBjb25zdCBmcG9zPF9T
dGF0ZVQ+JiBfX3JocykKICAgIHsgcmV0dXJuIHN0cmVhbW9mZihfX2xocykgPT0gc3RyZWFtb2Zm
KF9fcmhzKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3RhdGVUPgogICAgaW5saW5lIGJvb2wK
ICAgIG9wZXJhdG9yIT0oY29uc3QgZnBvczxfU3RhdGVUPiYgX19saHMsIGNvbnN0IGZwb3M8X1N0
YXRlVD4mIF9fcmhzKQogICAgeyByZXR1cm4gc3RyZWFtb2ZmKF9fbGhzKSAhPSBzdHJlYW1vZmYo
X19yaHMpOyB9CgoKCgoKICB0eXBlZGVmIGZwb3M8bWJzdGF0ZV90PiBzdHJlYW1wb3M7CgogIHR5
cGVkZWYgZnBvczxtYnN0YXRlX3Q+IHdzdHJlYW1wb3M7Cgp9CiMgNTAgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvaW9zZndkIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvZnVu
Y3RleGNlcHQuaCIgMSAzCiMgMzkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9mdW5jdGV4
Y2VwdC5oIiAzCiNkZWZpbmUgX0ZVTkNURVhDRVBUX0ggMQoKCiMgMSAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9leGNlcHRpb25fZGVmaW5lcy5oIiAxIDMKIyAzOSAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9leGNlcHRpb25fZGVmaW5lcy5oIiAzCiNkZWZpbmUgX0VYQ0VQVElPTl9ERUZJTkVTX0gg
MQojIDQ4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2V4Y2VwdGlvbl9kZWZpbmVzLmgiIDMKI2Rl
ZmluZSBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbiB0aHJvdwojIDQzICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL2JpdHMvZnVuY3RleGNlcHQuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIHsKCgogIHZvaWQK
ICBfX3Rocm93X2JhZF9leGNlcHRpb24odm9pZCkgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9f
KSk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfYWxsb2Modm9pZCkgX19hdHRyaWJ1dGVfXygoX19u
b3JldHVybl9fKSk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfY2FzdCh2b2lkKSBfX2F0dHJpYnV0
ZV9fKChfX25vcmV0dXJuX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfYmFkX3R5cGVpZCh2b2lkKSBf
X2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCgogIHZvaWQKICBfX3Rocm93X2xvZ2ljX2Vy
cm9yKGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCiAgdm9pZAog
IF9fdGhyb3dfZG9tYWluX2Vycm9yKGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0
dXJuX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfaW52YWxpZF9hcmd1bWVudChjb25zdCBjaGFyKikg
X19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CgogIHZvaWQKICBfX3Rocm93X2xlbmd0aF9l
cnJvcihjb25zdCBjaGFyKikgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CgogIHZvaWQK
ICBfX3Rocm93X291dF9vZl9yYW5nZShjb25zdCBjaGFyKikgX19hdHRyaWJ1dGVfXygoX19ub3Jl
dHVybl9fKSk7CgogIHZvaWQKICBfX3Rocm93X3J1bnRpbWVfZXJyb3IoY29uc3QgY2hhciopIF9f
YXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwoKICB2b2lkCiAgX190aHJvd19yYW5nZV9lcnJv
cihjb25zdCBjaGFyKikgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CgogIHZvaWQKICBf
X3Rocm93X292ZXJmbG93X2Vycm9yKGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0
dXJuX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfdW5kZXJmbG93X2Vycm9yKGNvbnN0IGNoYXIqKSBf
X2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCgogIHZvaWQKICBfX3Rocm93X2lvc19mYWls
dXJlKGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCn0KIyA1MSAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pb3Nmd2QiIDIgMwoKbmFtZXNwYWNlIHN0ZCB7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9D
aGFyVD4gPgogICAgY2xhc3MgYmFzaWNfaW9zOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2lj
X3N0cmVhbWJ1ZjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
ID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19pc3RyZWFtOwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hh
clQ+ID4KICAgIGNsYXNzIGJhc2ljX29zdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFz
aWNfaW9zdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAgICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9y
PF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfc3RyaW5nYnVmOwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+LAogICAgdHlw
ZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfaXN0cmlu
Z3N0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0g
Y2hhcl90cmFpdHM8X0NoYXJUPiwKICAgIHR5cGVuYW1lIF9BbGxvYyA9IGFsbG9jYXRvcjxfQ2hh
clQ+ID4KICAgIGNsYXNzIGJhc2ljX29zdHJpbmdzdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAgICB0eXBl
bmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJpbmdz
dHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNo
YXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfZmlsZWJ1ZjsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+
CiAgICBjbGFzcyBiYXNpY19pZnN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19v
ZnN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0g
Y2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19mc3RyZWFtOwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+
ID4KICAgIGNsYXNzIGlzdHJlYW1idWZfaXRlcmF0b3I7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3Mg
b3N0cmVhbWJ1Zl9pdGVyYXRvcjsKCgoKICBjbGFzcyBpb3NfYmFzZTsKIyAxMzUgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvaW9zZndkIiAzCiAgdHlwZWRlZiBiYXNpY19pb3M8Y2hhcj4gaW9zOwog
IHR5cGVkZWYgYmFzaWNfc3RyZWFtYnVmPGNoYXI+IHN0cmVhbWJ1ZjsKICB0eXBlZGVmIGJhc2lj
X2lzdHJlYW08Y2hhcj4gaXN0cmVhbTsKICB0eXBlZGVmIGJhc2ljX29zdHJlYW08Y2hhcj4gb3N0
cmVhbTsKICB0eXBlZGVmIGJhc2ljX2lvc3RyZWFtPGNoYXI+IGlvc3RyZWFtOwogIHR5cGVkZWYg
YmFzaWNfc3RyaW5nYnVmPGNoYXI+IHN0cmluZ2J1ZjsKICB0eXBlZGVmIGJhc2ljX2lzdHJpbmdz
dHJlYW08Y2hhcj4gaXN0cmluZ3N0cmVhbTsKICB0eXBlZGVmIGJhc2ljX29zdHJpbmdzdHJlYW08
Y2hhcj4gb3N0cmluZ3N0cmVhbTsKICB0eXBlZGVmIGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyPiBz
dHJpbmdzdHJlYW07CiAgdHlwZWRlZiBiYXNpY19maWxlYnVmPGNoYXI+IGZpbGVidWY7CiAgdHlw
ZWRlZiBiYXNpY19pZnN0cmVhbTxjaGFyPiBpZnN0cmVhbTsKICB0eXBlZGVmIGJhc2ljX29mc3Ry
ZWFtPGNoYXI+IG9mc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfZnN0cmVhbTxjaGFyPiBmc3RyZWFt
OwoKCiAgdHlwZWRlZiBiYXNpY19pb3M8d2NoYXJfdD4gd2lvczsKICB0eXBlZGVmIGJhc2ljX3N0
cmVhbWJ1Zjx3Y2hhcl90PiB3c3RyZWFtYnVmOwogIHR5cGVkZWYgYmFzaWNfaXN0cmVhbTx3Y2hh
cl90PiB3aXN0cmVhbTsKICB0eXBlZGVmIGJhc2ljX29zdHJlYW08d2NoYXJfdD4gd29zdHJlYW07
CiAgdHlwZWRlZiBiYXNpY19pb3N0cmVhbTx3Y2hhcl90PiB3aW9zdHJlYW07CiAgdHlwZWRlZiBi
YXNpY19zdHJpbmdidWY8d2NoYXJfdD4gd3N0cmluZ2J1ZjsKICB0eXBlZGVmIGJhc2ljX2lzdHJp
bmdzdHJlYW08d2NoYXJfdD4gd2lzdHJpbmdzdHJlYW07CiAgdHlwZWRlZiBiYXNpY19vc3RyaW5n
c3RyZWFtPHdjaGFyX3Q+IHdvc3RyaW5nc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfc3RyaW5nc3Ry
ZWFtPHdjaGFyX3Q+IHdzdHJpbmdzdHJlYW07CiAgdHlwZWRlZiBiYXNpY19maWxlYnVmPHdjaGFy
X3Q+IHdmaWxlYnVmOwogIHR5cGVkZWYgYmFzaWNfaWZzdHJlYW08d2NoYXJfdD4gd2lmc3RyZWFt
OwogIHR5cGVkZWYgYmFzaWNfb2ZzdHJlYW08d2NoYXJfdD4gd29mc3RyZWFtOwogIHR5cGVkZWYg
YmFzaWNfZnN0cmVhbTx3Y2hhcl90PiB3ZnN0cmVhbTsKCgoKfQojIDcxICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvYml0cy9zdGxfcGFpci5oIiAxIDMKIyA2MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL3N0bF9wYWlyLmgiIDMKI2RlZmluZSBfUEFJUl9IIDEKCm5hbWVzcGFjZSBzdGQgewoKCiAg
dGVtcGxhdGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CiAgICBzdHJ1Y3QgcGFpcgogICAgewogICAg
ICB0eXBlZGVmIF9UMSBmaXJzdF90eXBlOwogICAgICB0eXBlZGVmIF9UMiBzZWNvbmRfdHlwZTsK
CiAgICAgIF9UMSBmaXJzdDsKICAgICAgX1QyIHNlY29uZDsKCgoKCgogICAgICBwYWlyKCkKICAg
ICAgOiBmaXJzdCgpLCBzZWNvbmQoKSB7IH0KCgogICAgICBwYWlyKGNvbnN0IF9UMSYgX19hLCBj
b25zdCBfVDImIF9fYikKICAgICAgOiBmaXJzdChfX2EpLCBzZWNvbmQoX19iKSB7IH0KCgogICAg
ICB0ZW1wbGF0ZTxjbGFzcyBfVTEsIGNsYXNzIF9VMj4KICAgICAgICBwYWlyKGNvbnN0IHBhaXI8
X1UxLCBfVTI+JiBfX3ApCiA6IGZpcnN0KF9fcC5maXJzdCksIHNlY29uZChfX3Auc2Vjb25kKSB7
IH0KICAgIH07CgoKICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KICAgIGlubGluZSBi
b29sCiAgICBvcGVyYXRvcj09KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3kpCiAgICB7IHJldHVybiBfX3guZmlyc3QgPT0gX195LmZpcnN0ICYmIF9f
eC5zZWNvbmQgPT0gX195LnNlY29uZDsgfQoKCiAgdGVtcGxhdGU8Y2xhc3MgX1QxLCBjbGFzcyBf
VDI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBf
X3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCiAgICB7IHJldHVybiBfX3guZmlyc3QgPCBf
X3kuZmlyc3QKICAgICAgfHwgKCEoX195LmZpcnN0IDwgX194LmZpcnN0KSAmJiBfX3guc2Vjb25k
IDwgX195LnNlY29uZCk7IH0KCgogIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgogICAg
aW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29u
c3QgcGFpcjxfVDEsIF9UMj4mIF9feSkKICAgIHsgcmV0dXJuICEoX194ID09IF9feSk7IH0KCgog
IHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJh
dG9yPihjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195
KQogICAgeyByZXR1cm4gX195IDwgX194OyB9CgoKICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNz
IF9UMj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9KGNvbnN0IHBhaXI8X1QxLCBfVDI+
JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCiAgICB7IHJldHVybiAhKF9feSA8IF9f
eCk7IH0KCgogIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgogICAgaW5saW5lIGJvb2wK
ICAgIG9wZXJhdG9yPj0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEs
IF9UMj4mIF9feSkKICAgIHsgcmV0dXJuICEoX194IDwgX195KTsgfQojIDE0MiAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL3N0bF9wYWlyLmgiIDMKICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNs
YXNzIF9UMj4KICAgIGlubGluZSBwYWlyPF9UMSwgX1QyPgogICAgbWFrZV9wYWlyKF9UMSBfX3gs
IF9UMiBfX3kpCiAgICB7IHJldHVybiBwYWlyPF9UMSwgX1QyPihfX3gsIF9feSk7IH0KCn0KIyA3
MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMKIyAxICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvY3BwX3R5cGVfdHJhaXRzLmgiIDEgMwojIDM5ICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvY3BwX3R5cGVfdHJhaXRzLmgiIDMKI2RlZmluZSBf
Q1BQX1RZUEVfVFJBSVRTX0ggMQoKICAgICAgIAojIDQyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2JpdHMvY3BwX3R5cGVfdHJhaXRzLmgiIDMKIyA3NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL2NwcF90eXBlX3RyYWl0cy5oIiAzCm5hbWVzcGFjZSBfX2dudV9jeHggewoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBjbGFzcyBfX25v
cm1hbF9pdGVyYXRvcjsKCn0KCm5hbWVzcGFjZSBzdGQgewoKbmFtZXNwYWNlIF9fZGV0YWlsCnsK
CgogIHR5cGVkZWYgY2hhciBfX29uZTsKICB0eXBlZGVmIGNoYXIgX190d29bMl07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICBfX29uZSBfX3Rlc3RfdHlwZShpbnQgX1RwOjoqKTsKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgX190d28mIF9fdGVzdF90eXBlKC4uLik7Cn0KCgogIHN0cnVj
dCBfX3RydWVfdHlwZSB7IH07CiAgc3RydWN0IF9fZmFsc2VfdHlwZSB7IH07CgogIHRlbXBsYXRl
PGJvb2w+CiAgICBzdHJ1Y3QgX190cnV0aF90eXBlCiAgICB7IHR5cGVkZWYgX19mYWxzZV90eXBl
IF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fdHJ1dGhfdHlwZTx0cnVlPgog
ICAgeyB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsgfTsKCgoKICB0ZW1wbGF0ZTxjbGFzcyBf
U3AsIGNsYXNzIF9UcD4KICAgIHN0cnVjdCBfX3RyYWl0b3IKICAgIHsKICAgICAgZW51bSB7IF9f
dmFsdWUgPSBib29sKF9TcDo6X192YWx1ZSkgfHwgYm9vbChfVHA6Ol9fdmFsdWUpIH07CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgX190cnV0aF90eXBlPF9fdmFsdWU+OjpfX3R5cGUgX190eXBlOwog
ICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4KICAgIHN0cnVjdCBfX2FyZV9z
YW1lCiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMCB9OwogICAgICB0eXBlZGVmIF9fZmFs
c2VfdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgX19hcmVfc2FtZTxfVHAsIF9UcD4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07
CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX3ZvaWQKICAgIHsKICAgICAgZW51bSB7IF9fdmFs
dWUgPSAwIH07CiAgICAgIHR5cGVkZWYgX19mYWxzZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRl
bXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX3ZvaWQ8dm9pZD4KICAgIHsKICAgICAgZW51bSB7IF9f
dmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfaW50ZWdlcgogICAgewog
ICAgICBlbnVtIHsgX192YWx1ZSA9IDAgfTsKICAgICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgX190
eXBlOwogICAgfTsKCgoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdlcjxib29s
PgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVf
dHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2Vy
PGNoYXI+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2lu
dGVnZXI8c2lnbmVkIGNoYXI+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAg
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBfX2lzX2ludGVnZXI8dW5zaWduZWQgY2hhcj4KICAgIHsKICAgICAgZW51bSB7IF9fdmFs
dWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgogIHRl
bXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVnZXI8d2NoYXJfdD4KICAgIHsKICAgICAgZW51
bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAg
fTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVnZXI8c2hvcnQ+CiAgICB7CiAg
ICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlw
ZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVnZXI8dW5zaWduZWQg
c2hvcnQ+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2lu
dGVnZXI8aW50PgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19p
c19pbnRlZ2VyPHVuc2lnbmVkIGludD4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07
CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8Pgog
ICAgc3RydWN0IF9faXNfaW50ZWdlcjxsb25nPgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9
IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0
ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPHVuc2lnbmVkIGxvbmc+CiAgICB7CiAgICAgIGVu
dW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAg
IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVnZXI8bG9uZyBsb25nPgogICAg
ewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBf
X3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPHVuc2ln
bmVkIGxvbmcgbG9uZz4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5
cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgc3RydWN0IF9faXNfZmxvYXRpbmcKICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUg
PSAwIH07CiAgICAgIHR5cGVkZWYgX19mYWxzZV90eXBlIF9fdHlwZTsKICAgIH07CgoKICB0ZW1w
bGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19mbG9hdGluZzxmbG9hdD4KICAgIHsKICAgICAgZW51bSB7
IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsK
CiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfZmxvYXRpbmc8ZG91YmxlPgogICAgewogICAg
ICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7
CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19mbG9hdGluZzxsb25nIGRvdWJs
ZT4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVl
X3R5cGUgX190eXBlOwogICAgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3Ry
dWN0IF9faXNfcG9pbnRlcgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDAgfTsKICAgICAg
dHlwZWRlZiBfX2ZhbHNlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgc3RydWN0IF9faXNfcG9pbnRlcjxfVHAqPgogICAgewogICAgICBlbnVtIHsgX192
YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19ub3JtYWxfaXRlcmF0b3IK
ICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAwIH07CiAgICAgIHR5cGVkZWYgX19mYWxzZV90
eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5h
bWUgX0NvbnRhaW5lcj4KICAgIHN0cnVjdCBfX2lzX25vcm1hbF9pdGVyYXRvcjwgX19nbnVfY3h4
OjpfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsCiAgICAgICAgICAgICBfQ29udGFpbmVyPiA+
CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90
eXBlIF9fdHlwZTsKICAgIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVj
dCBfX2lzX2FyaXRobWV0aWMKICAgIDogcHVibGljIF9fdHJhaXRvcjxfX2lzX2ludGVnZXI8X1Rw
PiwgX19pc19mbG9hdGluZzxfVHA+ID4KICAgIHsgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgc3RydWN0IF9faXNfZnVuZGFtZW50YWwKICAgIDogcHVibGljIF9fdHJhaXRvcjxf
X2lzX3ZvaWQ8X1RwPiwgX19pc19hcml0aG1ldGljPF9UcD4gPgogICAgeyB9OwoKCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19zY2FsYXIKICAgIDogcHVibGljIF9f
dHJhaXRvcjxfX2lzX2FyaXRobWV0aWM8X1RwPiwgX19pc19wb2ludGVyPF9UcD4gPgogICAgeyB9
OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfcG9kCiAgICB7CiAg
ICAgIGVudW0KIHsKICAgX192YWx1ZSA9IChzaXplb2YoX19kZXRhaWw6Ol9fdGVzdF90eXBlPF9U
cD4oMCkpCiAgICAgICAhPSBzaXplb2YoX19kZXRhaWw6Ol9fb25lKSkKIH07CiAgICB9OwoKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19lbXB0eQogICAgewogICAg
cHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICAgICAgc3RydWN0IF9fZmlyc3Qg
eyB9OwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+CiAgICAgICAgc3RydWN0IF9fc2Vjb25k
CiAgICAgICAgOiBwdWJsaWMgX1VwIHsgfTsKCiAgICBwdWJsaWM6CiAgICAgIGVudW0KIHsKICAg
X192YWx1ZSA9IHNpemVvZihfX2ZpcnN0PF9UcD4pID09IHNpemVvZihfX3NlY29uZDxfVHA+KQog
fTsKICAgIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX2No
YXIKICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAwIH07CiAgICAgIHR5cGVkZWYgX19mYWxz
ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2NoYXI8
Y2hhcj4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190
cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2No
YXI8d2NoYXJfdD4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgp9CiMgNzMgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9leHQvdHlwZV90cmFpdHMuaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvZXh0
L3R5cGVfdHJhaXRzLmgiIDMKI2RlZmluZSBfRVhUX1RZUEVfVFJBSVRTIDEKCiAgICAgICAKIyAz
OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9leHQvdHlwZV90cmFpdHMuaCIgMwoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS91dGlsaXR5IiAxIDMKIyA2MSAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS91dGlsaXR5IiAzCiNkZWZpbmUgX0dMSUJDWFhfVVRJTElUWSAxCgogICAgICAgCiMgNjQg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvdXRpbGl0eSIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL3N0bF9yZWxvcHMuaCIgMSAzCiMgNzIgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvYml0cy9zdGxfcmVsb3BzLmgiIDMKI2RlZmluZSBfU1RMX1JFTE9QU19IIDEKCm5hbWVzcGFj
ZSBzdGQgewoKICBuYW1lc3BhY2UgcmVsX29wcwogIHsKIyA5MCAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL3N0bF9yZWxvcHMuaCIgMwogICAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KICAgICAg
aW5saW5lIGJvb2wKICAgICAgb3BlcmF0b3IhPShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBf
X3kpCiAgICAgIHsgcmV0dXJuICEoX194ID09IF9feSk7IH0KIyAxMDMgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvYml0cy9zdGxfcmVsb3BzLmgiIDMKICAgIHRlbXBsYXRlIDxjbGFzcyBfVHA+CiAg
ICAgIGlubGluZSBib29sCiAgICAgIG9wZXJhdG9yPihjb25zdCBfVHAmIF9feCwgY29uc3QgX1Rw
JiBfX3kpCiAgICAgIHsgcmV0dXJuIF9feSA8IF9feDsgfQojIDExNiAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL3N0bF9yZWxvcHMuaCIgMwogICAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KICAg
ICAgaW5saW5lIGJvb2wKICAgICAgb3BlcmF0b3I8PShjb25zdCBfVHAmIF9feCwgY29uc3QgX1Rw
JiBfX3kpCiAgICAgIHsgcmV0dXJuICEoX195IDwgX194KTsgfQojIDEyOSAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9iaXRzL3N0bF9yZWxvcHMuaCIgMwogICAgdGVtcGxhdGUgPGNsYXNzIF9UcD4K
ICAgICAgaW5saW5lIGJvb2wKICAgICAgb3BlcmF0b3I+PShjb25zdCBfVHAmIF9feCwgY29uc3Qg
X1RwJiBfX3kpCiAgICAgIHsgcmV0dXJuICEoX194IDwgX195KTsgfQoKICB9Cgp9CiMgNjcgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvdXRpbGl0eSIgMiAzCiMgNDIgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvZXh0L3R5cGVfdHJhaXRzLmgiIDIgMwoKCm5hbWVzcGFjZSBfX2dudV9jeHggewoKCiAg
dGVtcGxhdGU8Ym9vbCwgdHlwZW5hbWU+CiAgICBzdHJ1Y3QgX19lbmFibGVfaWYKICAgIHsgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fZW5hYmxlX2lmPHRydWUsIF9U
cD4KICAgIHsgdHlwZWRlZiBfVHAgX190eXBlOyB9OwoKCgogIHRlbXBsYXRlPGJvb2wgX0NvbmQs
IHR5cGVuYW1lIF9JZnRydWUsIHR5cGVuYW1lIF9JZmZhbHNlPgogICAgc3RydWN0IF9fY29uZGl0
aW9uYWxfdHlwZQogICAgeyB0eXBlZGVmIF9JZnRydWUgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSWZ0cnVlLCB0eXBlbmFtZSBfSWZmYWxzZT4KICAgIHN0cnVjdCBfX2NvbmRpdGlv
bmFsX3R5cGU8ZmFsc2UsIF9JZnRydWUsIF9JZmZhbHNlPgogICAgeyB0eXBlZGVmIF9JZmZhbHNl
IF9fdHlwZTsgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19hZGRf
dW5zaWduZWQKICAgIHsKICAgIHByaXZhdGU6CiAgICAgIHR5cGVkZWYgX19lbmFibGVfaWY8c3Rk
OjpfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwgX1RwPiBfX2lmX3R5cGU7CgogICAgcHVibGlj
OgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faWZfdHlwZTo6X190eXBlIF9fdHlwZTsKICAgIH07
CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2FkZF91bnNpZ25lZDxjaGFyPgogICAgeyB0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19h
ZGRfdW5zaWduZWQ8c2lnbmVkIGNoYXI+CiAgICB7IHR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3R5
cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2FkZF91bnNpZ25lZDxzaG9ydD4KICAg
IHsgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBfX2FkZF91bnNpZ25lZDxpbnQ+CiAgICB7IHR5cGVkZWYgdW5zaWduZWQgaW50IF9fdHlw
ZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fYWRkX3Vuc2lnbmVkPGxvbmc+CiAgICB7
IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVj
dCBfX2FkZF91bnNpZ25lZDxsb25nIGxvbmc+CiAgICB7IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBs
b25nIF9fdHlwZTsgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2FkZF91bnNpZ25lZDxi
b29sPjsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fYWRkX3Vuc2lnbmVkPHdjaGFyX3Q+OwoK
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX3JlbW92ZV91bnNpZ25lZAog
ICAgewogICAgcHJpdmF0ZToKICAgICAgdHlwZWRlZiBfX2VuYWJsZV9pZjxzdGQ6Ol9faXNfaW50
ZWdlcjxfVHA+OjpfX3ZhbHVlLCBfVHA+IF9faWZfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX19pZl90eXBlOjpfX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxh
dGU8PgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVkPGNoYXI+CiAgICB7IHR5cGVkZWYgc2ln
bmVkIGNoYXIgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19yZW1vdmVfdW5z
aWduZWQ8dW5zaWduZWQgY2hhcj4KICAgIHsgdHlwZWRlZiBzaWduZWQgY2hhciBfX3R5cGU7IH07
CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX3JlbW92ZV91bnNpZ25lZDx1bnNpZ25lZCBzaG9y
dD4KICAgIHsgdHlwZWRlZiBzaG9ydCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVj
dCBfX3JlbW92ZV91bnNpZ25lZDx1bnNpZ25lZCBpbnQ+CiAgICB7IHR5cGVkZWYgaW50IF9fdHlw
ZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVkPHVuc2lnbmVk
IGxvbmc+CiAgICB7IHR5cGVkZWYgbG9uZyBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBfX3JlbW92ZV91bnNpZ25lZDx1bnNpZ25lZCBsb25nIGxvbmc+CiAgICB7IHR5cGVkZWYg
bG9uZyBsb25nIF9fdHlwZTsgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX3JlbW92ZV91
bnNpZ25lZDxib29sPjsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVk
PHdjaGFyX3Q+OwoKfQojIDc0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ29i
YXNlLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfaXRlcmF0b3Jf
YmFzZV90eXBlcy5oIiAxIDMKIyA2NSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9p
dGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKI2RlZmluZSBfSVRFUkFUT1JfQkFTRV9UWVBFU19IIDEK
CiAgICAgICAKIyA2OCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9pdGVyYXRvcl9i
YXNlX3R5cGVzLmgiIDMKCm5hbWVzcGFjZSBzdGQgewojIDgwICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaCIgMwogIHN0cnVjdCBpbnB1dF9pdGVy
YXRvcl90YWcge307CgogIHN0cnVjdCBvdXRwdXRfaXRlcmF0b3JfdGFnIHt9OwoKICBzdHJ1Y3Qg
Zm9yd2FyZF9pdGVyYXRvcl90YWcgOiBwdWJsaWMgaW5wdXRfaXRlcmF0b3JfdGFnIHt9OwoKCiAg
c3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0
b3JfdGFnIHt9OwoKCiAgc3RydWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIDogcHVibGlj
IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIHt9OwojIDEwNCAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2F0ZWdvcnksIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0Rpc3RhbmNlID0gcHRyZGlmZl90
LAogICAgICAgICAgIHR5cGVuYW1lIF9Qb2ludGVyID0gX1RwKiwgdHlwZW5hbWUgX1JlZmVyZW5j
ZSA9IF9UcCY+CiAgICBzdHJ1Y3QgaXRlcmF0b3IKICAgIHsKCiAgICAgIHR5cGVkZWYgX0NhdGVn
b3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwoKICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKCiAg
ICAgIHR5cGVkZWYgX0Rpc3RhbmNlIGRpZmZlcmVuY2VfdHlwZTsKCiAgICAgIHR5cGVkZWYgX1Bv
aW50ZXIgcG9pbnRlcjsKCiAgICAgIHR5cGVkZWYgX1JlZmVyZW5jZSByZWZlcmVuY2U7CiAgICB9
OwoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBzdHJ1Y3QgaXRlcmF0
b3JfdHJhaXRzCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjppdGVyYXRv
cl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRl
cmF0b3I6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRl
cmF0b3I6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX0l0ZXJhdG9yOjpwb2ludGVyIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X0l0ZXJhdG9yOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxfVHAqPgogICAgewogICAgICB0eXBl
ZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogICAgICB0
eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwogICAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNl
X3R5cGU7CiAgICAgIHR5cGVkZWYgX1RwKiBwb2ludGVyOwogICAgICB0eXBlZGVmIF9UcCYgcmVm
ZXJlbmNlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGl0ZXJh
dG9yX3RyYWl0czxjb25zdCBfVHAqPgogICAgewogICAgICB0eXBlZGVmIHJhbmRvbV9hY2Nlc3Nf
aXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogICAgICB0eXBlZGVmIF9UcCB2YWx1ZV90
eXBlOwogICAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVk
ZWYgY29uc3QgX1RwKiBwb2ludGVyOwogICAgICB0eXBlZGVmIGNvbnN0IF9UcCYgcmVmZXJlbmNl
OwogICAgfTsKCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXI+CiAgICBpbmxpbmUgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkKICAgIF9faXRl
cmF0b3JfY2F0ZWdvcnkoY29uc3QgX0l0ZXImKQogICAgeyByZXR1cm4gdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9JdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkoKTsgfQoKfQojIDc1ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMwojIDEgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV9mdW5jcy5oIiAxIDMKIyA2NiAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX2Z1bmNzLmgiIDMKI2Rl
ZmluZSBfSVRFUkFUT1JfQkFTRV9GVU5DU19IIDEKCiAgICAgICAKIyA2OSAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX2Z1bmNzLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvY29uY2VwdF9jaGVjay5oIiAxIDMKIyAzNiAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2NvbmNlcHRfY2hlY2suaCIgMwojZGVmaW5lIF9DT05DRVBUX0NI
RUNLX0ggMQoKICAgICAgIAojIDM5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvY29uY2Vw
dF9jaGVjay5oIiAzCiMgNTIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9jb25jZXB0X2No
ZWNrLmgiIDMKI2RlZmluZSBfX2dsaWJjeHhfZnVuY3Rpb25fcmVxdWlyZXMoLi4uKSAKI2RlZmlu
ZSBfX2dsaWJjeHhfY2xhc3NfcmVxdWlyZXMoX2EsX2IpIAojZGVmaW5lIF9fZ2xpYmN4eF9jbGFz
c19yZXF1aXJlczIoX2EsX2IsX2MpIAojZGVmaW5lIF9fZ2xpYmN4eF9jbGFzc19yZXF1aXJlczMo
X2EsX2IsX2MsX2QpIAojZGVmaW5lIF9fZ2xpYmN4eF9jbGFzc19yZXF1aXJlczQoX2EsX2IsX2Ms
X2QsX2UpIAojIDcwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2l0ZXJhdG9yX2Jh
c2VfZnVuY3MuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIHsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
cHV0SXRlcmF0b3I+CiAgICBpbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0
ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiAgICBfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9f
Zmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0
b3JfdGFnKQogICAgewoKICAgICAKCiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5w
dXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBfX24gPSAwOwogICAgICB3aGlsZSAoX19maXJz
dCAhPSBfX2xhc3QpCiB7CiAgICsrX19maXJzdDsKICAgKytfX247CiB9CiAgICAgIHJldHVybiBf
X247CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAg
IGlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6
ZGlmZmVyZW5jZV90eXBlCiAgICBfX2Rpc3RhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2Zp
cnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICByYW5kb21f
YWNjZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgCgogICAgICByZXR1cm4gX19sYXN0IC0g
X19maXJzdDsKICAgIH0KIyAxMTMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfaXRl
cmF0b3JfYmFzZV9mdW5jcy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+
CiAgICBpbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlm
ZmVyZW5jZV90eXBlCiAgICBkaXN0YW5jZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyYXRvciBfX2xhc3QpCiAgICB7CgogICAgICByZXR1cm4gc3RkOjpfX2Rpc3RhbmNlKF9fZmly
c3QsIF9fbGFzdCwKICAgICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOwog
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3Rh
bmNlPgogICAgaW5saW5lIHZvaWQKICAgIF9fYWR2YW5jZShfSW5wdXRJdGVyYXRvciYgX19pLCBf
RGlzdGFuY2UgX19uLCBpbnB1dF9pdGVyYXRvcl90YWcpCiAgICB7CgogICAgIAogICAgICB3aGls
ZSAoX19uLS0pCiArK19faTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9u
YWxJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlPgogICAgaW5saW5lIHZvaWQKICAgIF9fYWR2
YW5jZShfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yJiBfX2ksIF9EaXN0YW5jZSBfX24sCiAgICAgICBi
aWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgCgogICAgICBpZiAoX19uID4g
MCkKICAgICAgICB3aGlsZSAoX19uLS0pCiAgICsrX19pOwogICAgICBlbHNlCiAgICAgICAgd2hp
bGUgKF9fbisrKQogICAtLV9faTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2U+CiAgICBpbmxpbmUgdm9pZAogICAgX19h
ZHZhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uLAogICAgICAg
ICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKQogICAgewoKICAgICAKCiAgICAgIF9f
aSArPSBfX247CiAgICB9CiMgMTcxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2l0
ZXJhdG9yX2Jhc2VfZnVuY3MuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
LCB0eXBlbmFtZSBfRGlzdGFuY2U+CiAgICBpbmxpbmUgdm9pZAogICAgYWR2YW5jZShfSW5wdXRJ
dGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uKQogICAgewoKICAgICAgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fZCA9IF9fbjsKICAg
ICAgc3RkOjpfX2FkdmFuY2UoX19pLCBfX2QsIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2kp
KTsKICAgIH0KCn0KIyA3NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvYmFz
ZS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2l0ZXJhdG9yLmgi
IDEgMwojIDY3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMK
I2RlZmluZSBfSVRFUkFUT1JfSCAxCgoKCgpuYW1lc3BhY2Ugc3RkIHsKIyA5MyAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0l0ZXJhdG9yPgogICAgY2xhc3MgcmV2ZXJzZV9pdGVyYXRvcgogICAgOiBwdWJsaWMgaXRlcmF0
b3I8dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5
LAogICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+Ojp2YWx1ZV90eXBl
LAogICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjpkaWZmZXJlbmNl
X3R5cGUsCiAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnBvaW50
ZXIsCiAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJh
dG9yPjo6cmVmZXJlbmNlPgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfSXRlcmF0b3IgY3Vy
cmVudDsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX0l0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OmRpZmZl
cmVuY2VfdHlwZQogICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cmVmZXJlbmNlIHJlZmVyZW5jZTsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cG9pbnRl
ciBwb2ludGVyOwoKICAgIHB1YmxpYzoKCgoKCgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvcigpIDog
Y3VycmVudCgpIHsgfQoKCgoKICAgICAgZXhwbGljaXQKICAgICAgcmV2ZXJzZV9pdGVyYXRvcihp
dGVyYXRvcl90eXBlIF9feCkgOiBjdXJyZW50KF9feCkgeyB9CgoKCgogICAgICByZXZlcnNlX2l0
ZXJhdG9yKGNvbnN0IHJldmVyc2VfaXRlcmF0b3ImIF9feCkKICAgICAgOiBjdXJyZW50KF9feC5j
dXJyZW50KSB7IH0KCgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcj4KICAgICAgICBy
ZXZlcnNlX2l0ZXJhdG9yKGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXI+JiBfX3gpCiA6IGN1
cnJlbnQoX194LmJhc2UoKSkgeyB9CgoKCgogICAgICBpdGVyYXRvcl90eXBlCiAgICAgIGJhc2Uo
KSBjb25zdAogICAgICB7IHJldHVybiBjdXJyZW50OyB9CgoKCgoKCiAgICAgIHJlZmVyZW5jZQog
ICAgICBvcGVyYXRvciooKSBjb25zdAogICAgICB7CiBfSXRlcmF0b3IgX190bXAgPSBjdXJyZW50
OwogcmV0dXJuICotLV9fdG1wOwogICAgICB9CgoKCgoKCiAgICAgIHBvaW50ZXIKICAgICAgb3Bl
cmF0b3ItPigpIGNvbnN0CiAgICAgIHsgcmV0dXJuICYob3BlcmF0b3IqKCkpOyB9CgoKCgoKCiAg
ICAgIHJldmVyc2VfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoKQogICAgICB7CiAtLWN1cnJl
bnQ7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCgoKCgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvcgog
ICAgICBvcGVyYXRvcisrKGludCkKICAgICAgewogcmV2ZXJzZV9pdGVyYXRvciBfX3RtcCA9ICp0
aGlzOwogLS1jdXJyZW50OwogcmV0dXJuIF9fdG1wOwogICAgICB9CgoKCgoKCiAgICAgIHJldmVy
c2VfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yLS0oKQogICAgICB7CiArK2N1cnJlbnQ7CiByZXR1
cm4gKnRoaXM7CiAgICAgIH0KCgoKCgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvcgogICAgICBvcGVy
YXRvci0tKGludCkKICAgICAgewogcmV2ZXJzZV9pdGVyYXRvciBfX3RtcCA9ICp0aGlzOwogKytj
dXJyZW50OwogcmV0dXJuIF9fdG1wOwogICAgICB9CgoKCgoKCiAgICAgIHJldmVyc2VfaXRlcmF0
b3IKICAgICAgb3BlcmF0b3IrKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNvbnN0CiAgICAgIHsgcmV0
dXJuIHJldmVyc2VfaXRlcmF0b3IoY3VycmVudCAtIF9fbik7IH0KCgoKCgoKICAgICAgcmV2ZXJz
ZV9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IrPShkaWZmZXJlbmNlX3R5cGUgX19uKQogICAgICB7
CiBjdXJyZW50IC09IF9fbjsKIHJldHVybiAqdGhpczsKICAgICAgfQoKCgoKCgogICAgICByZXZl
cnNlX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yLShkaWZmZXJlbmNlX3R5cGUgX19uKSBjb25zdAog
ICAgICB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGN1cnJlbnQgKyBfX24pOyB9CgoKCgoKCiAg
ICAgIHJldmVyc2VfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yLT0oZGlmZmVyZW5jZV90eXBlIF9f
bikKICAgICAgewogY3VycmVudCArPSBfX247CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCgoKCgoK
ICAgICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9yW10oZGlmZmVyZW5jZV90eXBlIF9fbikgY29u
c3QKICAgICAgeyByZXR1cm4gKigqdGhpcyArIF9fbik7IH0KICAgIH07CiMgMjgwICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShjb25zdCByZXZlcnNl
X2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwKICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9y
PF9JdGVyYXRvcj4mIF9feSkKICAgIHsgcmV0dXJuIF9feC5iYXNlKCkgPT0gX195LmJhc2UoKTsg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgb3Bl
cmF0b3I8KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgY29u
c3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7IHJldHVybiBfX3kuYmFz
ZSgpIDwgX194LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBp
bmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRv
cj4mIF9feCwKICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkK
ICAgIHsgcmV0dXJuICEoX194ID09IF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJh
dG9yPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCByZXZlcnNlX2l0ZXJhdG9y
PF9JdGVyYXRvcj4mIF9feCwKICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9y
PiYgX195KQogICAgeyByZXR1cm4gX195IDwgX194OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
dGVyYXRvcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9KGNvbnN0IHJldmVyc2VfaXRl
cmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0
ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4gIShfX3kgPCBfX3gpOyB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0IHJl
dmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgIGNvbnN0IHJldmVyc2VfaXRl
cmF0b3I8X0l0ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4gIShfX3ggPCBfX3kpOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSB0eXBlbmFtZSByZXZlcnNlX2l0
ZXJhdG9yPF9JdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICAgb3BlcmF0b3ItKGNvbnN0IHJl
dmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgY29uc3QgcmV2ZXJzZV9pdGVy
YXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7IHJldHVybiBfX3kuYmFzZSgpIC0gX194LmJhc2Uo
KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgcmV2ZXJzZV9p
dGVyYXRvcjxfSXRlcmF0b3I+CiAgICBvcGVyYXRvcisodHlwZW5hbWUgcmV2ZXJzZV9pdGVyYXRv
cjxfSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgX19uLAogICAgICAgY29uc3QgcmV2ZXJzZV9p
dGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gpCiAgICB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yPF9J
dGVyYXRvcj4oX194LmJhc2UoKSAtIF9fbik7IH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRl
cmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9y
PT0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JMPiYgX194LAogICAgICAgIGNvbnN0
IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yUj4mIF9feSkKICAgIHsgcmV0dXJuIF9feC5iYXNl
KCkgPT0gX195LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBl
bmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPChjb25zdCByZXZl
cnNlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJh
dG9yPF9JdGVyYXRvclI+JiBfX3kpCiAgICB7IHJldHVybiBfX3kuYmFzZSgpIDwgX194LmJhc2Uo
KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JS
PgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxf
SXRlcmF0b3JMPiYgX194LAogICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9y
Uj4mIF9feSkKICAgIHsgcmV0dXJuICEoX194ID09IF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUj4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvcj4oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JMPiYgX194LAogICAgICAg
Y29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JSPiYgX195KQogICAgeyByZXR1cm4gX195
IDwgX194OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVy
YXRvclI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8PShjb25zdCByZXZlcnNlX2l0ZXJh
dG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRl
cmF0b3JSPiYgX195KQogICAgeyByZXR1cm4gIShfX3kgPCBfX3gpOyB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclI+CiAgICBpbmxpbmUgYm9vbAog
ICAgb3BlcmF0b3I+PShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gsCiAg
ICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JSPiYgX195KQogICAgeyByZXR1
cm4gIShfX3ggPCBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVu
YW1lIF9JdGVyYXRvclI+CiAgICBpbmxpbmUgdHlwZW5hbWUgcmV2ZXJzZV9pdGVyYXRvcjxfSXRl
cmF0b3JMPjo6ZGlmZmVyZW5jZV90eXBlCiAgICBvcGVyYXRvci0oY29uc3QgcmV2ZXJzZV9pdGVy
YXRvcjxfSXRlcmF0b3JMPiYgX194LAogICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRl
cmF0b3JSPiYgX195KQogICAgeyByZXR1cm4gX195LmJhc2UoKSAtIF9feC5iYXNlKCk7IH0KIyAz
ODQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBjbGFzcyBiYWNrX2luc2VydF9pdGVyYXRvcgog
ICAgOiBwdWJsaWMgaXRlcmF0b3I8b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9p
ZCwgdm9pZD4KICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAgX0NvbnRhaW5lciogY29udGFpbmVy
OwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX0NvbnRhaW5lciBjb250YWluZXJfdHlwZTsK
CgogICAgICBleHBsaWNpdAogICAgICBiYWNrX2luc2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBf
X3gpIDogY29udGFpbmVyKCZfX3gpIHsgfQojIDQxMCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgICAgIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yJgogICAgICBv
cGVyYXRvcj0odHlwZW5hbWUgX0NvbnRhaW5lcjo6Y29uc3RfcmVmZXJlbmNlIF9fdmFsdWUpCiAg
ICAgIHsKIGNvbnRhaW5lci0+cHVzaF9iYWNrKF9fdmFsdWUpOwogcmV0dXJuICp0aGlzOwogICAg
ICB9CgoKICAgICAgYmFja19pbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKigpCiAgICAg
IHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgYmFja19pbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9w
ZXJhdG9yKysoKQogICAgICB7IHJldHVybiAqdGhpczsgfQoKCiAgICAgIGJhY2tfaW5zZXJ0X2l0
ZXJhdG9yCiAgICAgIG9wZXJhdG9yKysoaW50KQogICAgICB7IHJldHVybiAqdGhpczsgfQogICAg
fTsKIyA0NDQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwog
IHRlbXBsYXRlPHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUgYmFja19pbnNlcnRfaXRl
cmF0b3I8X0NvbnRhaW5lcj4KICAgIGJhY2tfaW5zZXJ0ZXIoX0NvbnRhaW5lciYgX194KQogICAg
eyByZXR1cm4gYmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4oX194KTsgfQojIDQ1OSAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGNsYXNzIGZyb250X2luc2VydF9pdGVyYXRvcgogICAg
OiBwdWJsaWMgaXRlcmF0b3I8b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwg
dm9pZD4KICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAgX0NvbnRhaW5lciogY29udGFpbmVyOwoK
ICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX0NvbnRhaW5lciBjb250YWluZXJfdHlwZTsKCgog
ICAgICBleHBsaWNpdCBmcm9udF9pbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYgX194KSA6IGNv
bnRhaW5lcigmX194KSB7IH0KIyA0ODQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxf
aXRlcmF0b3IuaCIgMwogICAgICBmcm9udF9pbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9y
PSh0eXBlbmFtZSBfQ29udGFpbmVyOjpjb25zdF9yZWZlcmVuY2UgX192YWx1ZSkKICAgICAgewog
Y29udGFpbmVyLT5wdXNoX2Zyb250KF9fdmFsdWUpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgoK
ICAgICAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yJgogICAgICBvcGVyYXRvciooKQogICAgICB7IHJl
dHVybiAqdGhpczsgfQoKCiAgICAgIGZyb250X2luc2VydF9pdGVyYXRvciYKICAgICAgb3BlcmF0
b3IrKygpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgZnJvbnRfaW5zZXJ0X2l0ZXJh
dG9yCiAgICAgIG9wZXJhdG9yKysoaW50KQogICAgICB7IHJldHVybiAqdGhpczsgfQogICAgfTsK
IyA1MTggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUgZnJvbnRfaW5zZXJ0X2l0ZXJh
dG9yPF9Db250YWluZXI+CiAgICBmcm9udF9pbnNlcnRlcihfQ29udGFpbmVyJiBfX3gpCiAgICB7
IHJldHVybiBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4oX194KTsgfQojIDUzNyAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGNsYXNzIGluc2VydF9pdGVyYXRvcgogICAgOiBwdWJs
aWMgaXRlcmF0b3I8b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZD4K
ICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAgX0NvbnRhaW5lciogY29udGFpbmVyOwogICAgICB0
eXBlbmFtZSBfQ29udGFpbmVyOjppdGVyYXRvciBpdGVyOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5
cGVkZWYgX0NvbnRhaW5lciBjb250YWluZXJfdHlwZTsKCgoKCgogICAgICBpbnNlcnRfaXRlcmF0
b3IoX0NvbnRhaW5lciYgX194LCB0eXBlbmFtZSBfQ29udGFpbmVyOjppdGVyYXRvciBfX2kpCiAg
ICAgIDogY29udGFpbmVyKCZfX3gpLCBpdGVyKF9faSkge30KIyA1NzkgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogICAgICBpbnNlcnRfaXRlcmF0b3ImCiAg
ICAgIG9wZXJhdG9yPShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjpjb25zdF9yZWZlcmVuY2Ug
X192YWx1ZSkKICAgICAgewogaXRlciA9IGNvbnRhaW5lci0+aW5zZXJ0KGl0ZXIsIF9fdmFsdWUp
OwogKytpdGVyOwogcmV0dXJuICp0aGlzOwogICAgICB9CgoKICAgICAgaW5zZXJ0X2l0ZXJhdG9y
JgogICAgICBvcGVyYXRvciooKQogICAgICB7IHJldHVybiAqdGhpczsgfQoKCiAgICAgIGluc2Vy
dF9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IrKygpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoK
ICAgICAgaW5zZXJ0X2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcisrKGludCkKICAgICAgeyByZXR1
cm4gKnRoaXM7IH0KICAgIH07CiMgNjE0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3Rs
X2l0ZXJhdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyLCB0eXBlbmFtZSBf
SXRlcmF0b3I+CiAgICBpbmxpbmUgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+CiAgICBpbnNl
cnRlcihfQ29udGFpbmVyJiBfX3gsIF9JdGVyYXRvciBfX2kpCiAgICB7CiAgICAgIHJldHVybiBp
bnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4oX194LAogICAgICB0eXBlbmFtZSBfQ29udGFpbmVy
OjppdGVyYXRvcihfX2kpKTsKICAgIH0KCn0KCm5hbWVzcGFjZSBfX2dudV9jeHggewojIDYzMyAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgdXNpbmcgc3Rk
OjppdGVyYXRvcl90cmFpdHM7CiAgdXNpbmcgc3RkOjppdGVyYXRvcjsKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBjbGFzcyBfX25vcm1hbF9p
dGVyYXRvcgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfSXRlcmF0b3IgX01fY3VycmVudDsK
CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVy
YXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl9jYXRlZ29yeTsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1
ZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+
OjpkaWZmZXJlbmNlX3R5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cG9pbnRlciBw
b2ludGVyOwoKICAgICAgX19ub3JtYWxfaXRlcmF0b3IoKSA6IF9NX2N1cnJlbnQoX0l0ZXJhdG9y
KCkpIHsgfQoKICAgICAgZXhwbGljaXQKICAgICAgX19ub3JtYWxfaXRlcmF0b3IoY29uc3QgX0l0
ZXJhdG9yJiBfX2kpIDogX01fY3VycmVudChfX2kpIHsgfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9JdGVyPgogICAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yKGNvbnN0IF9fbm9ybWFsX2l0ZXJh
dG9yPF9JdGVyLAogICAgIHR5cGVuYW1lIF9fZW5hYmxlX2lmPAogICAgICAgICAgICAgIChzdGQ6
Ol9fYXJlX3NhbWU8X0l0ZXIsIHR5cGVuYW1lIF9Db250YWluZXI6OnBvaW50ZXI+OjpfX3ZhbHVl
KSwKICAgICAgICBfQ29udGFpbmVyPjo6X190eXBlPiYgX19pKQogICAgICAgIDogX01fY3VycmVu
dChfX2kuYmFzZSgpKSB7IH0KCgogICAgICByZWZlcmVuY2UKICAgICAgb3BlcmF0b3IqKCkgY29u
c3QKICAgICAgeyByZXR1cm4gKl9NX2N1cnJlbnQ7IH0KCiAgICAgIHBvaW50ZXIKICAgICAgb3Bl
cmF0b3ItPigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2N1cnJlbnQ7IH0KCiAgICAgIF9fbm9y
bWFsX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcisrKCkKICAgICAgewogKytfTV9jdXJyZW50Owog
cmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBfX25vcm1hbF9pdGVyYXRvcgogICAgICBvcGVy
YXRvcisrKGludCkKICAgICAgeyByZXR1cm4gX19ub3JtYWxfaXRlcmF0b3IoX01fY3VycmVudCsr
KTsgfQoKCiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvci0tKCkKICAgICAg
ewogLS1fTV9jdXJyZW50OwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBfX25vcm1hbF9p
dGVyYXRvcgogICAgICBvcGVyYXRvci0tKGludCkKICAgICAgeyByZXR1cm4gX19ub3JtYWxfaXRl
cmF0b3IoX01fY3VycmVudC0tKTsgfQoKCiAgICAgIHJlZmVyZW5jZQogICAgICBvcGVyYXRvcltd
KGNvbnN0IGRpZmZlcmVuY2VfdHlwZSYgX19uKSBjb25zdAogICAgICB7IHJldHVybiBfTV9jdXJy
ZW50W19fbl07IH0KCiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcis9KGNv
bnN0IGRpZmZlcmVuY2VfdHlwZSYgX19uKQogICAgICB7IF9NX2N1cnJlbnQgKz0gX19uOyByZXR1
cm4gKnRoaXM7IH0KCiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yKyhjb25z
dCBkaWZmZXJlbmNlX3R5cGUmIF9fbikgY29uc3QKICAgICAgeyByZXR1cm4gX19ub3JtYWxfaXRl
cmF0b3IoX01fY3VycmVudCArIF9fbik7IH0KCiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yJgogICAg
ICBvcGVyYXRvci09KGNvbnN0IGRpZmZlcmVuY2VfdHlwZSYgX19uKQogICAgICB7IF9NX2N1cnJl
bnQgLT0gX19uOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yCiAgICAg
IG9wZXJhdG9yLShjb25zdCBkaWZmZXJlbmNlX3R5cGUmIF9fbikgY29uc3QKICAgICAgeyByZXR1
cm4gX19ub3JtYWxfaXRlcmF0b3IoX01fY3VycmVudCAtIF9fbik7IH0KCiAgICAgIGNvbnN0IF9J
dGVyYXRvciYKICAgICAgYmFzZSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2N1cnJlbnQ7IH0K
ICAgIH07CiMgNzMwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2l0ZXJhdG9yLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSLCB0
eXBlbmFtZSBfQ29udGFpbmVyPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3Qg
X19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAg
IGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykK
ICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA9PSBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgaW5saW5lIGJvb2wK
ICAgIG9wZXJhdG9yPT0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFp
bmVyPiYgX19saHMsCiAgICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBf
Q29udGFpbmVyPiYgX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5iYXNlKCkgPT0gX19yaHMuYmFz
ZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRv
clIsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShj
b25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JMLCBfQ29udGFpbmVyPiYgX19saHMsCiAg
ICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yUiwgX0NvbnRhaW5lcj4mIF9f
cmhzKQogICAgeyByZXR1cm4gX19saHMuYmFzZSgpICE9IF9fcmhzLmJhc2UoKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUg
Ym9vbAogICAgb3BlcmF0b3IhPShjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9D
b250YWluZXI+JiBfX2xocywKICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0
b3IsIF9Db250YWluZXI+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSAhPSBfX3Jo
cy5iYXNlKCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9J
dGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0
b3I8KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvckwsIF9Db250YWluZXI+JiBfX2xo
cywKICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+
JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA8IF9fcmhzLmJhc2UoKTsgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxp
bmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwg
X0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJh
dG9yLCBfQ29udGFpbmVyPiYgX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5iYXNlKCkgPCBfX3Jo
cy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0
ZXJhdG9yUiwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRv
cj4oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhz
LAogICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yUiwgX0NvbnRhaW5lcj4m
IF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuYmFzZSgpID4gX19yaHMuYmFzZSgpOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGlubGlu
ZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBf
Q29udGFpbmVyPiYgX19saHMsCiAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0
b3IsIF9Db250YWluZXI+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA+IF9fcmhz
LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRl
cmF0b3JSLCB0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9y
PD0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhz
LAogICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+
JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA8PSBfX3Jocy5iYXNlKCk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgaW5s
aW5lIGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9y
LCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0
ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5iYXNlKCkgPD0g
X19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1l
IF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUgYm9vbAogICAgb3Bl
cmF0b3I+PShjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JMLCBfQ29udGFpbmVyPiYg
X19saHMsCiAgICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yUiwgX0NvbnRh
aW5lcj4mIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuYmFzZSgpID49IF9fcmhzLmJhc2UoKTsg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAg
ICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRl
cmF0b3IsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRv
cjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2Uo
KSA+PSBfX3Jocy5iYXNlKCk7IH0KCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckws
IHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUgdHlw
ZW5hbWUgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwgX0NvbnRhaW5lcj46OmRpZmZlcmVu
Y2VfdHlwZQogICAgb3BlcmF0b3ItKGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvckws
IF9Db250YWluZXI+JiBfX2xocywKICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVy
YXRvclIsIF9Db250YWluZXI+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSAtIF9f
cmhzLmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9D
b250YWluZXI+CiAgICBpbmxpbmUgdHlwZW5hbWUgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9y
LCBfQ29udGFpbmVyPjo6ZGlmZmVyZW5jZV90eXBlCiAgICBvcGVyYXRvci0oY29uc3QgX19ub3Jt
YWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAgICBjb25zdCBf
X25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX3JocykKICAgIHsgcmV0
dXJuIF9fbGhzLmJhc2UoKSAtIF9fcmhzLmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUgX19ub3JtYWxfaXRlcmF0
b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPgogICAgb3BlcmF0b3IrKHR5cGVuYW1lIF9fbm9ybWFs
X2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj46OmRpZmZlcmVuY2VfdHlwZQogICAgICAg
X19uLCBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2kp
CiAgICB7IHJldHVybiBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+KF9f
aS5iYXNlKCkgKyBfX24pOyB9Cgp9CiMgNzcgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9z
dGxfYWxnb2Jhc2UuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvZGVidWcvZGVi
dWcuaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvZGVidWcvZGVidWcuaCIgMwoj
ZGVmaW5lIF9HTElCQ1hYX0RFQlVHX01BQ1JPX1NXSVRDSF9IIDEKIyA0NyAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9kZWJ1Zy9kZWJ1Zy5oIiAzCm5hbWVzcGFjZSBzdGQKewogIG5hbWVzcGFjZSBf
X2RlYnVnIHsgfQp9CgpuYW1lc3BhY2UgX19nbnVfY3h4CnsKICBuYW1lc3BhY2UgX19kZWJ1ZyB7
IH07Cn0KCm5hbWVzcGFjZSBfX2dudV9kZWJ1Zwp7CiAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6X19k
ZWJ1ZzsKICB1c2luZyBuYW1lc3BhY2UgX19nbnVfY3h4OjpfX2RlYnVnOwp9CgoKCiNkZWZpbmUg
X0dMSUJDWFhfREVCVUdfQVNTRVJUKF9Db25kaXRpb24pIAojZGVmaW5lIF9HTElCQ1hYX0RFQlVH
X1BFREFTU0VSVChfQ29uZGl0aW9uKSAKI2RlZmluZSBfR0xJQkNYWF9ERUJVR19PTkxZKF9TdGF0
ZW1lbnQpIDsKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfY29uZChfQ29uZCxfTXNnKSAKI2Rl
ZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX0ZpcnN0LF9MYXN0KSAKI2RlZmlu
ZSBfX2dsaWJjeHhfcmVxdWlyZXNfc29ydGVkKF9GaXJzdCxfTGFzdCkgCiNkZWZpbmUgX19nbGli
Y3h4X3JlcXVpcmVzX3NvcnRlZF9wcmVkKF9GaXJzdCxfTGFzdCxfUHJlZCkgCiNkZWZpbmUgX19n
bGliY3h4X3JlcXVpcmVzX3BhcnRpdGlvbmVkKF9GaXJzdCxfTGFzdCxfVmFsdWUpIAojZGVmaW5l
IF9fZ2xpYmN4eF9yZXF1aXJlc19wYXJ0aXRpb25lZF9wcmVkKF9GaXJzdCxfTGFzdCxfVmFsdWUs
X1ByZWQpIAojZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9GaXJzdCxfTGFzdCkgCiNk
ZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX2hlYXBfcHJlZChfRmlyc3QsX0xhc3QsX1ByZWQpIAoj
ZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19ub25lbXB0eSgpIAojZGVmaW5lIF9fZ2xpYmN4eF9y
ZXF1aXJlc19zdHJpbmcoX1N0cmluZykgCiNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX3N0cmlu
Z19sZW4oX1N0cmluZyxfTGVuKSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfc3Vic2NyaXB0
KF9OKSAKIyA3OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvYmFzZS5oIiAy
IDMKCm5hbWVzcGFjZSBzdGQgewojIDkxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3Rs
X2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdm9pZAog
ICAgc3dhcChfVHAmIF9fYSwgX1RwJiBfX2IpCiAgICB7CgogICAgIAoKICAgICAgX1RwIF9fdG1w
ID0gX19hOwogICAgICBfX2EgPSBfX2I7CiAgICAgIF9fYiA9IF9fdG1wOwogICAgfQoKCgoKICB0
ZW1wbGF0ZTxib29sIF9Cb29sVHlwZT4KICAgIHN0cnVjdCBfX2l0ZXJfc3dhcAogICAgewogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvcjI+CiAgICAgICAgc3RhdGljIHZvaWQKICAgICAgICBpdGVyX3N3YXAoX0ZvcndhcmRJ
dGVyYXRvcjEgX19hLCBfRm9yd2FyZEl0ZXJhdG9yMiBfX2IpCiAgICAgICAgewogICAgICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcjE+Ojp2YWx1
ZV90eXBlCiAgICAgICAgICAgIF9WYWx1ZVR5cGUxOwogICAgICAgICAgX1ZhbHVlVHlwZTEgX190
bXAgPSAqX19hOwogICAgICAgICAgKl9fYSA9ICpfX2I7CiAgICAgICAgICAqX19iID0gX190bXA7
CiB9CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pdGVyX3N3YXA8dHJ1ZT4KICAg
IHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIF9G
b3J3YXJkSXRlcmF0b3IyPgogICAgICAgIHN0YXRpYyB2b2lkCiAgICAgICAgaXRlcl9zd2FwKF9G
b3J3YXJkSXRlcmF0b3IxIF9fYSwgX0ZvcndhcmRJdGVyYXRvcjIgX19iKQogICAgICAgIHsKICAg
ICAgICAgIHN3YXAoKl9fYSwgKl9fYik7CiAgICAgICAgfQogICAgfTsKIyAxNDEgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMj4KICAgIGlubGlu
ZSB2b2lkCiAgICBpdGVyX3N3YXAoX0ZvcndhcmRJdGVyYXRvcjEgX19hLCBfRm9yd2FyZEl0ZXJh
dG9yMiBfX2IpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9G
b3J3YXJkSXRlcmF0b3IxPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTE7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3IyPjo6dmFsdWVfdHlwZQog
X1ZhbHVlVHlwZTI7CgoKICAgICAKCiAgICAgCgogICAgIAoKICAgICAKCgogICAgICB0eXBlZGVm
IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yMT46OnJlZmVyZW5jZQog
X1JlZmVyZW5jZVR5cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
Rm9yd2FyZEl0ZXJhdG9yMj46OnJlZmVyZW5jZQogX1JlZmVyZW5jZVR5cGUyOwogICAgICBzdGQ6
Ol9faXRlcl9zd2FwPF9fYXJlX3NhbWU8X1ZhbHVlVHlwZTEsIF9WYWx1ZVR5cGUyPjo6X192YWx1
ZSAmJgogX19hcmVfc2FtZTxfVmFsdWVUeXBlMSAmLCBfUmVmZXJlbmNlVHlwZTE+OjpfX3ZhbHVl
ICYmCiBfX2FyZV9zYW1lPF9WYWx1ZVR5cGUyICYsIF9SZWZlcmVuY2VUeXBlMj46Ol9fdmFsdWU+
OjoKIGl0ZXJfc3dhcChfX2EsIF9fYik7CiAgICB9CiMgMTgwICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBp
bmxpbmUgY29uc3QgX1RwJgogICAgbWluKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikK
ICAgIHsKCiAgICAgCgogICAgICBpZiAoX19iIDwgX19hKQogcmV0dXJuIF9fYjsKICAgICAgcmV0
dXJuIF9fYTsKICAgIH0KIyAyMDIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxn
b2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25zdCBfVHAm
CiAgICBtYXgoY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iKQogICAgewoKICAgICAKCiAg
ICAgIGlmIChfX2EgPCBfX2IpCiByZXR1cm4gX19iOwogICAgICByZXR1cm4gX19hOwogICAgfQoj
IDIyNCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSBjb25zdCBf
VHAmCiAgICBtaW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iLCBfQ29tcGFyZSBfX2Nv
bXApCiAgICB7CgogICAgICBpZiAoX19jb21wKF9fYiwgX19hKSkKIHJldHVybiBfX2I7CiAgICAg
IHJldHVybiBfX2E7CiAgICB9CiMgMjQ0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3Rs
X2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJl
PgogICAgaW5saW5lIGNvbnN0IF9UcCYKICAgIG1heChjb25zdCBfVHAmIF9fYSwgY29uc3QgX1Rw
JiBfX2IsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKCiAgICAgIGlmIChfX2NvbXAoX19hLCBfX2Ip
KQogcmV0dXJuIF9fYjsKICAgICAgcmV0dXJuIF9fYTsKICAgIH0KCgoKCgoKCiAgdGVtcGxhdGU8
Ym9vbCwgdHlwZW5hbWU+CiAgICBzdHJ1Y3QgX19jb3B5CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9JSSwgdHlwZW5hbWUgX09JPgogICAgICAgIHN0YXRpYyBfT0kKICAgICAgICBjb3B5
KF9JSSBfX2ZpcnN0LCBfSUkgX19sYXN0LCBfT0kgX19yZXN1bHQpCiAgICAgICAgewogICBmb3Ig
KDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19yZXN1bHQsICsrX19maXJzdCkKICAgICAqX19yZXN1
bHQgPSAqX19maXJzdDsKICAgcmV0dXJuIF9fcmVzdWx0OwogfQogICAgfTsKCiAgdGVtcGxhdGU8
Ym9vbCBfQm9vbFR5cGU+CiAgICBzdHJ1Y3QgX19jb3B5PF9Cb29sVHlwZSwgcmFuZG9tX2FjY2Vz
c19pdGVyYXRvcl90YWc+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JSSwgdHlwZW5h
bWUgX09JPgogICAgICAgIHN0YXRpYyBfT0kKICAgICAgICBjb3B5KF9JSSBfX2ZpcnN0LCBfSUkg
X19sYXN0LCBfT0kgX19yZXN1bHQpCiAgICAgICAgewogICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfSUk+OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlOwogICBmb3IoX0Rpc3Rh
bmNlIF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+IDA7IC0tX19uKQogICAgIHsKICAgICAg
ICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgICAgKytfX2ZpcnN0OwogICAgICAgKytfX3Jlc3Vs
dDsKICAgICB9CiAgIHJldHVybiBfX3Jlc3VsdDsKIH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAg
IHN0cnVjdCBfX2NvcHk8dHJ1ZSwgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWc+CiAgICB7CiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAgICBzdGF0aWMgX1RwKgogICAgICAgIGNv
cHkoY29uc3QgX1RwKiBfX2ZpcnN0LCBjb25zdCBfVHAqIF9fbGFzdCwgX1RwKiBfX3Jlc3VsdCkK
ICAgICAgICB7CiAgIHN0ZDo6bWVtbW92ZShfX3Jlc3VsdCwgX19maXJzdCwgc2l6ZW9mKF9UcCkg
KiAoX19sYXN0IC0gX19maXJzdCkpOwogICByZXR1cm4gX19yZXN1bHQgKyAoX19sYXN0IC0gX19m
aXJzdCk7CiB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUksIHR5cGVuYW1lIF9PST4K
ICAgIGlubGluZSBfT0kKICAgIF9fY29weV9hdXgoX0lJIF9fZmlyc3QsIF9JSSBfX2xhc3QsIF9P
SSBfX3Jlc3VsdCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X0lJPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlSTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X09JPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlTzsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lJPjo6aXRlcmF0b3JfY2F0ZWdvcnkgX0NhdGVnb3J5
OwogICAgICBjb25zdCBib29sIF9fc2ltcGxlID0gKF9faXNfc2NhbGFyPF9WYWx1ZVR5cGVJPjo6
X192YWx1ZQogICAgICAgICAgICAgICAgICAgICAgJiYgX19pc19wb2ludGVyPF9JST46Ol9fdmFs
dWUKICAgICAgICAgICAgICAgICAgICAgICYmIF9faXNfcG9pbnRlcjxfT0k+OjpfX3ZhbHVlCiAg
ICAgICAgJiYgX19hcmVfc2FtZTxfVmFsdWVUeXBlSSwgX1ZhbHVlVHlwZU8+OjpfX3ZhbHVlKTsK
CiAgICAgIHJldHVybiBzdGQ6Ol9fY29weTxfX3NpbXBsZSwgX0NhdGVnb3J5Pjo6Y29weShfX2Zp
cnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VD4KICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQ+Ojpf
X3ZhbHVlLAogICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPjo6X190eXBlCiAgICBf
X2NvcHlfYXV4KF9DaGFyVCosIF9DaGFyVCosIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPik7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19l
bmFibGVfaWY8X19pc19jaGFyPF9DaGFyVD46Ol9fdmFsdWUsCiAgICAgICAgb3N0cmVhbWJ1Zl9p
dGVyYXRvcjxfQ2hhclQ+ID46Ol9fdHlwZQogICAgX19jb3B5X2F1eChjb25zdCBfQ2hhclQqLCBj
b25zdCBfQ2hhclQqLCBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4pOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQ+CiAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2No
YXI8X0NoYXJUPjo6X192YWx1ZSwgX0NoYXJUKj46Ol9fdHlwZQogICAgX19jb3B5X2F1eChpc3Ry
ZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4sIGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiwKICAg
ICAgICBfQ2hhclQqKTsKCiAgdGVtcGxhdGU8Ym9vbCwgYm9vbD4KICAgIHN0cnVjdCBfX2NvcHlf
bm9ybWFsCiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JSSwgdHlwZW5hbWUgX09JPgog
ICAgICAgIHN0YXRpYyBfT0kKICAgICAgICBfX2NvcHlfbihfSUkgX19maXJzdCwgX0lJIF9fbGFz
dCwgX09JIF9fcmVzdWx0KQogICAgICAgIHsgcmV0dXJuIHN0ZDo6X19jb3B5X2F1eChfX2ZpcnN0
LCBfX2xhc3QsIF9fcmVzdWx0KTsgfQogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9f
Y29weV9ub3JtYWw8dHJ1ZSwgZmFsc2U+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9J
SSwgdHlwZW5hbWUgX09JPgogICAgICAgIHN0YXRpYyBfT0kKICAgICAgICBfX2NvcHlfbihfSUkg
X19maXJzdCwgX0lJIF9fbGFzdCwgX09JIF9fcmVzdWx0KQogICAgICAgIHsgcmV0dXJuIHN0ZDo6
X19jb3B5X2F1eChfX2ZpcnN0LmJhc2UoKSwgX19sYXN0LmJhc2UoKSwgX19yZXN1bHQpOyB9CiAg
ICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19jb3B5X25vcm1hbDxmYWxzZSwgdHJ1ZT4K
ICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJLCB0eXBlbmFtZSBfT0k+CiAgICAgICAg
c3RhdGljIF9PSQogICAgICAgIF9fY29weV9uKF9JSSBfX2ZpcnN0LCBfSUkgX19sYXN0LCBfT0kg
X19yZXN1bHQpCiAgICAgICAgeyByZXR1cm4gX09JKHN0ZDo6X19jb3B5X2F1eChfX2ZpcnN0LCBf
X2xhc3QsIF9fcmVzdWx0LmJhc2UoKSkpOyB9CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1
Y3QgX19jb3B5X25vcm1hbDx0cnVlLCB0cnVlPgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSUksIHR5cGVuYW1lIF9PST4KICAgICAgICBzdGF0aWMgX09JCiAgICAgICAgX19jb3B5X24o
X0lJIF9fZmlyc3QsIF9JSSBfX2xhc3QsIF9PSSBfX3Jlc3VsdCkKICAgICAgICB7IHJldHVybiBf
T0koc3RkOjpfX2NvcHlfYXV4KF9fZmlyc3QuYmFzZSgpLCBfX2xhc3QuYmFzZSgpLAogICAgICAg
ICBfX3Jlc3VsdC5iYXNlKCkpKTsgfQogICAgfTsKIyAzODcgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJh
dG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAgICBpbmxpbmUgX091dHB1dEl0ZXJhdG9y
CiAgICBjb3B5KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwK
ICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwoK
ICAgICAgIGNvbnN0IGJvb2wgX19pbiA9IF9faXNfbm9ybWFsX2l0ZXJhdG9yPF9JbnB1dEl0ZXJh
dG9yPjo6X192YWx1ZTsKICAgICAgIGNvbnN0IGJvb2wgX19vdXQgPSBfX2lzX25vcm1hbF9pdGVy
YXRvcjxfT3V0cHV0SXRlcmF0b3I+OjpfX3ZhbHVlOwogICAgICAgcmV0dXJuIHN0ZDo6X19jb3B5
X25vcm1hbDxfX2luLCBfX291dD46Ol9fY29weV9uKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgIF9f
cmVzdWx0KTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1l
IF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19jaGFyPF9DaGFyVD46Ol9fdmFsdWUsCiAgICAg
ICAgICAgICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID46Ol9fdHlwZQogICAgY29w
eShpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4sIGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJU
PiwKICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4pOwoKICB0ZW1wbGF0ZTxib29sLCB0eXBl
bmFtZT4KICAgIHN0cnVjdCBfX2NvcHlfYmFja3dhcmQKICAgIHsKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0JJMSwgdHlwZW5hbWUgX0JJMj4KICAgICAgICBzdGF0aWMgX0JJMgogICAgICAgIF9f
Y29weV9iKF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3QsIF9CSTIgX19yZXN1bHQpCiAgICAgICAg
ewogICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpCiAgICAgKi0tX19yZXN1bHQgPSAqLS1fX2xh
c3Q7CiAgIHJldHVybiBfX3Jlc3VsdDsKIH0KICAgIH07CgogIHRlbXBsYXRlPGJvb2wgX0Jvb2xU
eXBlPgogICAgc3RydWN0IF9fY29weV9iYWNrd2FyZDxfQm9vbFR5cGUsIHJhbmRvbV9hY2Nlc3Nf
aXRlcmF0b3JfdGFnPgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQkkxLCB0eXBlbmFt
ZSBfQkkyPgogICAgICAgIHN0YXRpYyBfQkkyCiAgICAgICAgX19jb3B5X2IoX0JJMSBfX2ZpcnN0
LCBfQkkxIF9fbGFzdCwgX0JJMiBfX3Jlc3VsdCkKICAgICAgICB7CiAgIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfQkkxPjo6ZGlmZmVyZW5jZV90eXBlIF9fbjsKICAgZm9yIChfX24gPSBfX2xh
c3QgLSBfX2ZpcnN0OyBfX24gPiAwOyAtLV9fbikKICAgICAqLS1fX3Jlc3VsdCA9ICotLV9fbGFz
dDsKICAgcmV0dXJuIF9fcmVzdWx0OwogfQogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0
IF9fY29weV9iYWNrd2FyZDx0cnVlLCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZz4KICAgIHsK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgICAgIHN0YXRpYyBfVHAqCiAgICAgICAg
X19jb3B5X2IoY29uc3QgX1RwKiBfX2ZpcnN0LCBjb25zdCBfVHAqIF9fbGFzdCwgX1RwKiBfX3Jl
c3VsdCkKICAgICAgICB7CiAgIGNvbnN0IHB0cmRpZmZfdCBfTnVtID0gX19sYXN0IC0gX19maXJz
dDsKICAgc3RkOjptZW1tb3ZlKF9fcmVzdWx0IC0gX051bSwgX19maXJzdCwgc2l6ZW9mKF9UcCkg
KiBfTnVtKTsKICAgcmV0dXJuIF9fcmVzdWx0IC0gX051bTsKIH0KICAgIH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+CiAgICBpbmxpbmUgX0JJMgogICAgX19jb3B5
X2JhY2t3YXJkX2F1eChfQkkxIF9fZmlyc3QsIF9CSTEgX19sYXN0LCBfQkkyIF9fcmVzdWx0KQog
ICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQkkxPjo6dmFsdWVf
dHlwZSBfVmFsdWVUeXBlMTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X0JJMj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTI7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRl
cmF0b3JfdHJhaXRzPF9CSTE+OjppdGVyYXRvcl9jYXRlZ29yeSBfQ2F0ZWdvcnk7CiAgICAgIGNv
bnN0IGJvb2wgX19zaW1wbGUgPSAoX19pc19zY2FsYXI8X1ZhbHVlVHlwZTE+OjpfX3ZhbHVlCiAg
ICAgICAgICAgICAgICAgICAgICAmJiBfX2lzX3BvaW50ZXI8X0JJMT46Ol9fdmFsdWUKICAgICAg
ICAgICAgICAgICAgICAgICYmIF9faXNfcG9pbnRlcjxfQkkyPjo6X192YWx1ZQogICAgICAgICYm
IF9fYXJlX3NhbWU8X1ZhbHVlVHlwZTEsIF9WYWx1ZVR5cGUyPjo6X192YWx1ZSk7CgogICAgICBy
ZXR1cm4gc3RkOjpfX2NvcHlfYmFja3dhcmQ8X19zaW1wbGUsIF9DYXRlZ29yeT46Ol9fY29weV9i
KF9fZmlyc3QsCiAgICAgICAgIF9fbGFzdCwKICAgICAgICAgX19yZXN1bHQpOwogICAgfQoKICB0
ZW1wbGF0ZTxib29sLCBib29sPgogICAgc3RydWN0IF9fY29weV9iYWNrd2FyZF9ub3JtYWwKICAg
IHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0JJMSwgdHlwZW5hbWUgX0JJMj4KICAgICAgICBz
dGF0aWMgX0JJMgogICAgICAgIF9fY29weV9iX24oX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwg
X0JJMiBfX3Jlc3VsdCkKICAgICAgICB7IHJldHVybiBzdGQ6Ol9fY29weV9iYWNrd2FyZF9hdXgo
X19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7IH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBfX2NvcHlfYmFja3dhcmRfbm9ybWFsPHRydWUsIGZhbHNlPgogICAgewogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQkkxLCB0eXBlbmFtZSBfQkkyPgogICAgICAgIHN0YXRpYyBfQkkyCiAg
ICAgICAgX19jb3B5X2JfbihfQkkxIF9fZmlyc3QsIF9CSTEgX19sYXN0LCBfQkkyIF9fcmVzdWx0
KQogICAgICAgIHsgcmV0dXJuIHN0ZDo6X19jb3B5X2JhY2t3YXJkX2F1eChfX2ZpcnN0LmJhc2Uo
KSwgX19sYXN0LmJhc2UoKSwKICAgICAgIF9fcmVzdWx0KTsgfQogICAgfTsKCiAgdGVtcGxhdGU8
PgogICAgc3RydWN0IF9fY29weV9iYWNrd2FyZF9ub3JtYWw8ZmFsc2UsIHRydWU+CiAgICB7CiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+CiAgICAgICAgc3RhdGlj
IF9CSTIKICAgICAgICBfX2NvcHlfYl9uKF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3QsIF9CSTIg
X19yZXN1bHQpCiAgICAgICAgeyByZXR1cm4gX0JJMihzdGQ6Ol9fY29weV9iYWNrd2FyZF9hdXgo
X19maXJzdCwgX19sYXN0LAogICAgICAgICAgICBfX3Jlc3VsdC5iYXNlKCkpKTsgfQogICAgfTsK
CiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fY29weV9iYWNrd2FyZF9ub3JtYWw8dHJ1ZSwgdHJ1
ZT4KICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0JJMSwgdHlwZW5hbWUgX0JJMj4KICAg
ICAgICBzdGF0aWMgX0JJMgogICAgICAgIF9fY29weV9iX24oX0JJMSBfX2ZpcnN0LCBfQkkxIF9f
bGFzdCwgX0JJMiBfX3Jlc3VsdCkKICAgICAgICB7IHJldHVybiBfQkkyKHN0ZDo6X19jb3B5X2Jh
Y2t3YXJkX2F1eChfX2ZpcnN0LmJhc2UoKSwgX19sYXN0LmJhc2UoKSwKICAgICAgICAgICAgX19y
ZXN1bHQuYmFzZSgpKSk7IH0KICAgIH07CiMgNTI0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX0JJMSwgdHlwZW5hbWUg
X0JJMj4KICAgIGlubGluZSBfQkkyCiAgICBjb3B5X2JhY2t3YXJkKF9CSTEgX19maXJzdCwgX0JJ
MSBfX2xhc3QsIF9CSTIgX19yZXN1bHQpCiAgICB7CgogICAgIAogICAgIAogICAgIAoKCiAgICAg
IDsKCiAgICAgIGNvbnN0IGJvb2wgX19iaTEgPSBfX2lzX25vcm1hbF9pdGVyYXRvcjxfQkkxPjo6
X192YWx1ZTsKICAgICAgY29uc3QgYm9vbCBfX2JpMiA9IF9faXNfbm9ybWFsX2l0ZXJhdG9yPF9C
STI+OjpfX3ZhbHVlOwogICAgICByZXR1cm4gc3RkOjpfX2NvcHlfYmFja3dhcmRfbm9ybWFsPF9f
YmkxLCBfX2JpMj46Ol9fY29weV9iX24oX19maXJzdCwKICAgICAgICAgICBfX2xhc3QsCiAgICAg
ICAgICAgX19yZXN1bHQpOwogICAgfQoKICB0ZW1wbGF0ZTxib29sPgogICAgc3RydWN0IF9fZmls
bAogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFt
ZSBfVHA+CiAgICAgICAgc3RhdGljIHZvaWQKICAgICAgICBmaWxsKF9Gb3J3YXJkSXRlcmF0b3Ig
X19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIGNvbnN0IF9UcCYgX192YWx1
ZSkKICAgICAgICB7CiAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAg
ICpfX2ZpcnN0ID0gX192YWx1ZTsKIH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBf
X2ZpbGw8dHJ1ZT4KICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
ciwgdHlwZW5hbWUgX1RwPgogICAgICAgIHN0YXRpYyB2b2lkCiAgICAgICAgZmlsbChfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICBjb25zdCBf
VHAmIF9fdmFsdWUpCiAgICAgICAgewogICBjb25zdCBfVHAgX190bXAgPSBfX3ZhbHVlOwogICBm
b3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgICAqX19maXJzdCA9IF9fdG1w
OwogfQogICAgfTsKIyA1ODEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnb2Jh
c2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9U
cD4KICAgIHZvaWQKICAgIGZpbGwoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbHVlKQogICAgewoKICAgICAKCiAgICAgIDsK
CiAgICAgIGNvbnN0IGJvb2wgX19zY2FsYXIgPSBfX2lzX3NjYWxhcjxfVHA+OjpfX3ZhbHVlOwog
ICAgICBzdGQ6Ol9fZmlsbDxfX3NjYWxhcj46OmZpbGwoX19maXJzdCwgX19sYXN0LCBfX3ZhbHVl
KTsKICAgIH0KCgogIGlubGluZSB2b2lkCiAgZmlsbCh1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0LCB1
bnNpZ25lZCBjaGFyKiBfX2xhc3QsIGNvbnN0IHVuc2lnbmVkIGNoYXImIF9fYykKICB7CiAgICA7
CiAgICBjb25zdCB1bnNpZ25lZCBjaGFyIF9fdG1wID0gX19jOwogICAgc3RkOjptZW1zZXQoX19m
aXJzdCwgX190bXAsIF9fbGFzdCAtIF9fZmlyc3QpOwogIH0KCiAgaW5saW5lIHZvaWQKICBmaWxs
KHNpZ25lZCBjaGFyKiBfX2ZpcnN0LCBzaWduZWQgY2hhciogX19sYXN0LCBjb25zdCBzaWduZWQg
Y2hhciYgX19jKQogIHsKICAgIDsKICAgIGNvbnN0IHNpZ25lZCBjaGFyIF9fdG1wID0gX19jOwog
ICAgc3RkOjptZW1zZXQoX19maXJzdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX190bXAp
LCBfX2xhc3QgLSBfX2ZpcnN0KTsKICB9CgogIGlubGluZSB2b2lkCiAgZmlsbChjaGFyKiBfX2Zp
cnN0LCBjaGFyKiBfX2xhc3QsIGNvbnN0IGNoYXImIF9fYykKICB7CiAgICA7CiAgICBjb25zdCBj
aGFyIF9fdG1wID0gX19jOwogICAgc3RkOjptZW1zZXQoX19maXJzdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oX190bXApLCBfX2xhc3QgLSBfX2ZpcnN0KTsKICB9CgogIHRlbXBsYXRlPGJv
b2w+CiAgICBzdHJ1Y3QgX19maWxsX24KICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX091
dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX1RwPgogICAgICAgIHN0YXRp
YyBfT3V0cHV0SXRlcmF0b3IKICAgICAgICBmaWxsX24oX091dHB1dEl0ZXJhdG9yIF9fZmlyc3Qs
IF9TaXplIF9fbiwgY29uc3QgX1RwJiBfX3ZhbHVlKQogICAgICAgIHsKICAgZm9yICg7IF9fbiA+
IDA7IC0tX19uLCArK19fZmlyc3QpCiAgICAgKl9fZmlyc3QgPSBfX3ZhbHVlOwogICByZXR1cm4g
X19maXJzdDsKIH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2ZpbGxfbjx0cnVl
PgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1l
IF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgICAgICAgc3RhdGljIF9PdXRwdXRJdGVyYXRvcgogICAg
ICAgIGZpbGxfbihfT3V0cHV0SXRlcmF0b3IgX19maXJzdCwgX1NpemUgX19uLCBjb25zdCBfVHAm
IF9fdmFsdWUpCiAgICAgICAgewogICBjb25zdCBfVHAgX190bXAgPSBfX3ZhbHVlOwogICBmb3Ig
KDsgX19uID4gMDsgLS1fX24sICsrX19maXJzdCkKICAgICAqX19maXJzdCA9IF9fdG1wOwogICBy
ZXR1cm4gX19maXJzdDsKIH0KICAgIH07CiMgNjU3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3Is
IHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgICBfT3V0cHV0SXRlcmF0b3IKICAgIGZp
bGxfbihfT3V0cHV0SXRlcmF0b3IgX19maXJzdCwgX1NpemUgX19uLCBjb25zdCBfVHAmIF9fdmFs
dWUpCiAgICB7CgogICAgIAoKICAgICAgY29uc3QgYm9vbCBfX3NjYWxhciA9IF9faXNfc2NhbGFy
PF9UcD46Ol9fdmFsdWU7CiAgICAgIHJldHVybiBzdGQ6Ol9fZmlsbF9uPF9fc2NhbGFyPjo6Zmls
bF9uKF9fZmlyc3QsIF9fbiwgX192YWx1ZSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9T
aXplPgogICAgaW5saW5lIHVuc2lnbmVkIGNoYXIqCiAgICBmaWxsX24odW5zaWduZWQgY2hhciog
X19maXJzdCwgX1NpemUgX19uLCBjb25zdCB1bnNpZ25lZCBjaGFyJiBfX2MpCiAgICB7CiAgICAg
IHN0ZDo6ZmlsbChfX2ZpcnN0LCBfX2ZpcnN0ICsgX19uLCBfX2MpOwogICAgICByZXR1cm4gX19m
aXJzdCArIF9fbjsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1NpemU+CiAgICBpbmxpbmUg
c2lnbmVkIGNoYXIqCiAgICBmaWxsX24oc2lnbmVkIGNoYXIqIF9fZmlyc3QsIF9TaXplIF9fbiwg
Y29uc3Qgc2lnbmVkIGNoYXImIF9fYykKICAgIHsKICAgICAgc3RkOjpmaWxsKF9fZmlyc3QsIF9f
Zmlyc3QgKyBfX24sIF9fYyk7CiAgICAgIHJldHVybiBfX2ZpcnN0ICsgX19uOwogICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfU2l6ZT4KICAgIGlubGluZSBjaGFyKgogICAgZmlsbF9uKGNoYXIq
IF9fZmlyc3QsIF9TaXplIF9fbiwgY29uc3QgY2hhciYgX19jKQogICAgewogICAgICBzdGQ6OmZp
bGwoX19maXJzdCwgX19maXJzdCArIF9fbiwgX19jKTsKICAgICAgcmV0dXJuIF9fZmlyc3QgKyBf
X247CiAgICB9CiMgNzA0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ29iYXNl
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yMj4KICAgIHBhaXI8X0lucHV0SXRlcmF0b3IxLCBfSW5wdXRJdGVyYXRvcjI+CiAg
ICBtaXNtYXRjaChfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xh
c3QxLAogICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIpCiAgICB7CgogICAgIAogICAgIAog
ICAgIAoKCiAgICAgIDsKCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmICpfX2Zp
cnN0MSA9PSAqX19maXJzdDIpCiAgICAgICAgewogICArK19fZmlyc3QxOwogICArK19fZmlyc3Qy
OwogICAgICAgIH0KICAgICAgcmV0dXJuIHBhaXI8X0lucHV0SXRlcmF0b3IxLCBfSW5wdXRJdGVy
YXRvcjI+KF9fZmlyc3QxLCBfX2ZpcnN0Mik7CiAgICB9CiMgNzM5ICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJ
dGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9CaW5hcnlQ
cmVkaWNhdGU+CiAgICBwYWlyPF9JbnB1dEl0ZXJhdG9yMSwgX0lucHV0SXRlcmF0b3IyPgogICAg
bWlzbWF0Y2goX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0
MSwKICAgICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfQmluYXJ5UHJlZGljYXRlIF9fYmlu
YXJ5X3ByZWQpCiAgICB7CgogICAgIAogICAgIAogICAgICA7CgogICAgICB3aGlsZSAoX19maXJz
dDEgIT0gX19sYXN0MSAmJiBfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAg
ICAgICB7CiAgICsrX19maXJzdDE7CiAgICsrX19maXJzdDI7CiAgICAgICAgfQogICAgICByZXR1
cm4gcGFpcjxfSW5wdXRJdGVyYXRvcjEsIF9JbnB1dEl0ZXJhdG9yMj4oX19maXJzdDEsIF9fZmly
c3QyKTsKICAgIH0KIyA3NjkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnb2Jh
c2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lu
cHV0SXRlcmF0b3IyPgogICAgaW5saW5lIGJvb2wKICAgIGVxdWFsKF9JbnB1dEl0ZXJhdG9yMSBf
X2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgIF9JbnB1dEl0ZXJhdG9yMiBfX2Zp
cnN0MikKICAgIHsKCiAgICAgCiAgICAgCiAgICAgCgoKICAgICAgOwoKICAgICAgZm9yICg7IF9f
Zmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICsrX19maXJzdDIpCiBpZiAoISgqX19maXJz
dDEgPT0gKl9fZmlyc3QyKSkKICAgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdHJ1ZTsKICAg
IH0KIyA4MDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwog
IHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0
b3IyLAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIGlubGluZSBib29sCiAgICBl
cXVhbChfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3QxLAog
ICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsCiAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlf
cHJlZCkKICAgIHsKCiAgICAgCiAgICAgCiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0MSAh
PSBfX2xhc3QxOyArK19fZmlyc3QxLCArK19fZmlyc3QyKQogaWYgKCFfX2JpbmFyeV9wcmVkKCpf
X2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdHJ1ZTsK
ICAgIH0KIyA4MzMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnb2Jhc2UuaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRl
cmF0b3IyPgogICAgYm9vbAogICAgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoX0lucHV0SXRlcmF0
b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgIF9JbnB1dEl0ZXJh
dG9yMiBfX2ZpcnN0MiwgX0lucHV0SXRlcmF0b3IyIF9fbGFzdDIpCiAgICB7CgogICAgIAogICAg
IAogICAgIAoKCiAgICAgCgoKICAgICAgOwogICAgICA7CgogICAgICBmb3IgKDsgX19maXJzdDEg
IT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyOwogICAgKytfX2ZpcnN0MSwgKytfX2Zp
cnN0MikKIHsKICAgaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikKICAgICByZXR1cm4gdHJ1ZTsK
ICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAg
IHJldHVybiBfX2ZpcnN0MSA9PSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDI7CiAgICB9
CiMgODczICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
MiwKICAgIHR5cGVuYW1lIF9Db21wYXJlPgogICAgYm9vbAogICAgbGV4aWNvZ3JhcGhpY2FsX2Nv
bXBhcmUoX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwK
ICAgICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0lucHV0SXRlcmF0b3IyIF9fbGFzdDIs
CiAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAogICAgIAogICAgICA7CiAgICAg
IDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFz
dDI7CiAgICArK19fZmlyc3QxLCArK19fZmlyc3QyKQogewogICBpZiAoX19jb21wKCpfX2ZpcnN0
MSwgKl9fZmlyc3QyKSkKICAgICByZXR1cm4gdHJ1ZTsKICAgaWYgKF9fY29tcCgqX19maXJzdDIs
ICpfX2ZpcnN0MSkpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgICByZXR1cm4gX19maXJzdDEg
PT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyOwogICAgfQoKICBpbmxpbmUgYm9vbAog
IGxleGljb2dyYXBoaWNhbF9jb21wYXJlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fZmlyc3QxLAog
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fbGFzdDEsCiAgICAgY29uc3QgdW5zaWduZWQgY2hh
ciogX19maXJzdDIsCiAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0MikKICB7CiAgICA7
CiAgICA7CgogICAgY29uc3Qgc2l6ZV90IF9fbGVuMSA9IF9fbGFzdDEgLSBfX2ZpcnN0MTsKICAg
IGNvbnN0IHNpemVfdCBfX2xlbjIgPSBfX2xhc3QyIC0gX19maXJzdDI7CiAgICBjb25zdCBpbnQg
X19yZXN1bHQgPSBzdGQ6Om1lbWNtcChfX2ZpcnN0MSwgX19maXJzdDIsCiAgICAgICAgIHN0ZDo6
bWluKF9fbGVuMSwgX19sZW4yKSk7CiAgICByZXR1cm4gX19yZXN1bHQgIT0gMCA/IF9fcmVzdWx0
IDwgMCA6IF9fbGVuMSA8IF9fbGVuMjsKICB9CgogIGlubGluZSBib29sCiAgbGV4aWNvZ3JhcGhp
Y2FsX2NvbXBhcmUoY29uc3QgY2hhciogX19maXJzdDEsIGNvbnN0IGNoYXIqIF9fbGFzdDEsCiAg
ICAgY29uc3QgY2hhciogX19maXJzdDIsIGNvbnN0IGNoYXIqIF9fbGFzdDIpCiAgewogICAgOwog
ICAgOwoKCiAgICByZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZSgoY29uc3Qgc2ln
bmVkIGNoYXIqKSBfX2ZpcnN0MSwKICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2xhc3QxLAog
ICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fZmlyc3QyLAogICAgIChjb25zdCBzaWduZWQgY2hh
ciopIF9fbGFzdDIpOwoKCgoKCgogIH0KCn0KIyA2NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9h
bGdvcml0aG0iIDIgMwojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfY29uc3Ry
dWN0LmgiIDEgMwojIDYyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2NvbnN0cnVj
dC5oIiAzCiNkZWZpbmUgX1NUTF9DT05TVFJVQ1RfSCAxCgoKCgpuYW1lc3BhY2Ugc3RkIHsKCgoK
CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1QxLCB0eXBlbmFtZSBfVDI+CiAgICBpbmxpbmUgdm9p
ZAogICAgX0NvbnN0cnVjdChfVDEqIF9fcCwgY29uc3QgX1QyJiBfX3ZhbHVlKQogICAgewoKCiAg
ICAgIDo6bmV3KHN0YXRpY19jYXN0PHZvaWQqPihfX3ApKSBfVDEoX192YWx1ZSk7CiAgICB9CgoK
CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UMT4KICAgIGlubGluZSB2b2lkCiAgICBfQ29uc3Ry
dWN0KF9UMSogX19wKQogICAgewoKCiAgICAgIDo6bmV3KHN0YXRpY19jYXN0PHZvaWQqPihfX3Ap
KSBfVDEoKTsKICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUg
dm9pZAogICAgX0Rlc3Ryb3koX1RwKiBfX3BvaW50ZXIpCiAgICB7IF9fcG9pbnRlci0+fl9UcCgp
OyB9CiMgMTE2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2NvbnN0cnVjdC5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgIGlubGluZSB2b2lkCiAg
ICBfX2Rlc3Ryb3lfYXV4KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRv
ciBfX2xhc3QsCiAgICBfX2ZhbHNlX3R5cGUpCiAgICB7CiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9
IF9fbGFzdDsgKytfX2ZpcnN0KQogc3RkOjpfRGVzdHJveSgmKl9fZmlyc3QpOwogICAgfQojIDEz
NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9jb25zdHJ1Y3QuaCIgMwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBpbmxpbmUgdm9pZAogICAgX19kZXN0
cm95X2F1eChfRm9yd2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJhdG9yLCBfX3RydWVfdHlwZSkK
ICAgIHsgfQojIDE0NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9jb25zdHJ1Y3Qu
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBpbmxpbmUgdm9p
ZAogICAgX0Rlc3Ryb3koX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9y
IF9fbGFzdCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0Zv
cndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKICAgICAgICAgICAgICAgICAgICAgICBfVmFsdWVf
dHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Ol9faXNfc2NhbGFyPF9WYWx1ZV90eXBl
Pjo6X190eXBlCiAgICAgICAgICAgICAgICBfSGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKCiAgICAg
IHN0ZDo6X19kZXN0cm95X2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9IYXNfdHJpdmlhbF9kZXN0cnVj
dG9yKCkpOwogICAgfQojIDE2NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9jb25z
dHJ1Y3QuaCIgMwogIHRlbXBsYXRlIDx0eXBlbmFtZSBfVHA+IGNsYXNzIGFsbG9jYXRvcjsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX0FsbG9jYXRvcj4K
ICAgIHZvaWQKICAgIF9EZXN0cm95KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJ
dGVyYXRvciBfX2xhc3QsCiAgICAgIF9BbGxvY2F0b3IgX19hbGxvYykKICAgIHsKICAgICAgZm9y
ICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiBfX2FsbG9jLmRlc3Ryb3koJipfX2Zp
cnN0KTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5h
bWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIF9EZXN0cm95KF9Gb3J3YXJkSXRlcmF0b3IgX19m
aXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIGFsbG9jYXRvcjxfVHA+KQogICAg
ewogICAgICBfRGVzdHJveShfX2ZpcnN0LCBfX2xhc3QpOwogICAgfQoKfQojIDY3ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2FsZ29yaXRobSIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9iaXRzL3N0bF91bmluaXRpYWxpemVkLmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvc3RsX3VuaW5pdGlhbGl6ZWQuaCIgMwojZGVmaW5lIF9TVExfVU5JTklUSUFMSVpF
RF9IIDEKCgoKbmFtZXNwYWNlIHN0ZCB7CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVy
YXRvciwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgIGlubGluZSBfRm9yd2FyZEl0ZXJh
dG9yCiAgICBfX3VuaW5pdGlhbGl6ZWRfY29weV9hdXgoX0lucHV0SXRlcmF0b3IgX19maXJzdCwg
X0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQs
CiAgICAgICAgX190cnVlX3R5cGUpCiAgICB7IHJldHVybiBzdGQ6OmNvcHkoX19maXJzdCwgX19s
YXN0LCBfX3Jlc3VsdCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAg
X191bmluaXRpYWxpemVkX2NvcHlfYXV4KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0
ZXJhdG9yIF9fbGFzdCwKICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0LAogICAgICAg
IF9fZmFsc2VfdHlwZSkKICAgIHsKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2N1ciA9IF9fcmVz
dWx0OwogICAgICB0cnkKIHsKICAgZm9yICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3Qs
ICsrX19jdXIpCiAgICAgc3RkOjpfQ29uc3RydWN0KCYqX19jdXIsICpfX2ZpcnN0KTsKICAgcmV0
dXJuIF9fY3VyOwogfQogICAgICBjYXRjaCguLi4pCiB7CiAgIHN0ZDo6X0Rlc3Ryb3koX19yZXN1
bHQsIF9fY3VyKTsKICAgdGhyb3c7CiB9CiAgICB9CiMgMTA2ICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvc3RsX3VuaW5pdGlhbGl6ZWQuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgaW5saW5lIF9Gb3J3YXJk
SXRlcmF0b3IKICAgIHVuaW5pdGlhbGl6ZWRfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBf
SW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQp
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRl
cmF0b3I+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3Rk
OjpfX2lzX3NjYWxhcjxfVmFsdWVUeXBlPjo6X190eXBlIF9Jc19QT0Q7CiAgICAgIHJldHVybiBz
dGQ6Ol9fdW5pbml0aWFsaXplZF9jb3B5X2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LAog
ICAgICAgIF9Jc19QT0QoKSk7CiAgICB9CgogIGlubGluZSBjaGFyKgogIHVuaW5pdGlhbGl6ZWRf
Y29weShjb25zdCBjaGFyKiBfX2ZpcnN0LCBjb25zdCBjaGFyKiBfX2xhc3QsIGNoYXIqIF9fcmVz
dWx0KQogIHsKICAgIHN0ZDo6bWVtbW92ZShfX3Jlc3VsdCwgX19maXJzdCwgX19sYXN0IC0gX19m
aXJzdCk7CiAgICByZXR1cm4gX19yZXN1bHQgKyAoX19sYXN0IC0gX19maXJzdCk7CiAgfQoKICBp
bmxpbmUgd2NoYXJfdCoKICB1bmluaXRpYWxpemVkX2NvcHkoY29uc3Qgd2NoYXJfdCogX19maXJz
dCwgY29uc3Qgd2NoYXJfdCogX19sYXN0LAogICAgICAgd2NoYXJfdCogX19yZXN1bHQpCiAgewog
ICAgc3RkOjptZW1tb3ZlKF9fcmVzdWx0LCBfX2ZpcnN0LCBzaXplb2Yod2NoYXJfdCkgKiAoX19s
YXN0IC0gX19maXJzdCkpOwogICAgcmV0dXJuIF9fcmVzdWx0ICsgKF9fbGFzdCAtIF9fZmlyc3Qp
OwogIH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBf
VHA+CiAgICBpbmxpbmUgdm9pZAogICAgX191bmluaXRpYWxpemVkX2ZpbGxfYXV4KF9Gb3J3YXJk
SXRlcmF0b3IgX19maXJzdCwKICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAg
ICBjb25zdCBfVHAmIF9feCwgX190cnVlX3R5cGUpCiAgICB7IHN0ZDo6ZmlsbChfX2ZpcnN0LCBf
X2xhc3QsIF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlw
ZW5hbWUgX1RwPgogICAgdm9pZAogICAgX191bmluaXRpYWxpemVkX2ZpbGxfYXV4KF9Gb3J3YXJk
SXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgY29uc3Qg
X1RwJiBfX3gsIF9fZmFsc2VfdHlwZSkKICAgIHsKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2N1
ciA9IF9fZmlyc3Q7CiAgICAgIHRyeQogewogICBmb3IgKDsgX19jdXIgIT0gX19sYXN0OyArK19f
Y3VyKQogICAgIHN0ZDo6X0NvbnN0cnVjdCgmKl9fY3VyLCBfX3gpOwogfQogICAgICBjYXRjaCgu
Li4pCiB7CiAgIHN0ZDo6X0Rlc3Ryb3koX19maXJzdCwgX19jdXIpOwogICB0aHJvdzsKIH0KICAg
IH0KIyAxNjggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfdW5pbml0aWFsaXplZC5o
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgog
ICAgaW5saW5lIHZvaWQKICAgIHVuaW5pdGlhbGl6ZWRfZmlsbChfRm9yd2FyZEl0ZXJhdG9yIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgICBjb25zdCBfVHAmIF9feCkK
ICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVy
YXRvcj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6
Ol9faXNfc2NhbGFyPF9WYWx1ZVR5cGU+OjpfX3R5cGUgX0lzX1BPRDsKICAgICAgc3RkOjpfX3Vu
aW5pdGlhbGl6ZWRfZmlsbF9hdXgoX19maXJzdCwgX19sYXN0LCBfX3gsIF9Jc19QT0QoKSk7CiAg
ICB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1Np
emUsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRfZmls
bF9uX2F1eChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9TaXplIF9fbiwKICAgICAgICAgIGNv
bnN0IF9UcCYgX194LCBfX3RydWVfdHlwZSkKICAgIHsgc3RkOjpmaWxsX24oX19maXJzdCwgX19u
LCBfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1l
IF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgICB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9u
X2F1eChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9TaXplIF9fbiwKICAgICAgICAgIGNvbnN0
IF9UcCYgX194LCBfX2ZhbHNlX3R5cGUpCiAgICB7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19j
dXIgPSBfX2ZpcnN0OwogICAgICB0cnkKIHsKICAgZm9yICg7IF9fbiA+IDA7IC0tX19uLCArK19f
Y3VyKQogICAgIHN0ZDo6X0NvbnN0cnVjdCgmKl9fY3VyLCBfX3gpOwogfQogICAgICBjYXRjaCgu
Li4pCiB7CiAgIHN0ZDo6X0Rlc3Ryb3koX19maXJzdCwgX19jdXIpOwogICB0aHJvdzsKIH0KICAg
IH0KIyAyMTMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfdW5pbml0aWFsaXplZC5o
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1NpemUs
IHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB2b2lkCiAgICB1bmluaXRpYWxpemVkX2ZpbGxfbihf
Rm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9TaXplIF9fbiwgY29uc3QgX1RwJiBfX3gpCiAgICB7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+
Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpfX2lz
X3NjYWxhcjxfVmFsdWVUeXBlPjo6X190eXBlIF9Jc19QT0Q7CiAgICAgIHN0ZDo6X191bmluaXRp
YWxpemVkX2ZpbGxfbl9hdXgoX19maXJzdCwgX19uLCBfX3gsIF9Jc19QT0QoKSk7CiAgICB9CgoK
CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRm9yd2Fy
ZEl0ZXJhdG9yLAogICAgdHlwZW5hbWUgX0FsbG9jYXRvcj4KICAgIF9Gb3J3YXJkSXRlcmF0b3IK
ICAgIF9fdW5pbml0aWFsaXplZF9jb3B5X2EoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0
SXRlcmF0b3IgX19sYXN0LAogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0LAogICAgICBf
QWxsb2NhdG9yIF9fYWxsb2MpCiAgICB7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19jdXIgPSBf
X3Jlc3VsdDsKICAgICAgdHJ5CiB7CiAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2Zp
cnN0LCArK19fY3VyKQogICAgIF9fYWxsb2MuY29uc3RydWN0KCYqX19jdXIsICpfX2ZpcnN0KTsK
ICAgcmV0dXJuIF9fY3VyOwogfQogICAgICBjYXRjaCguLi4pCiB7CiAgIHN0ZDo6X0Rlc3Ryb3ko
X19yZXN1bHQsIF9fY3VyLCBfX2FsbG9jKTsKICAgdGhyb3c7CiB9CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBl
bmFtZSBfVHA+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAgX191bmluaXRpYWxpemVk
X2NvcHlfYShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAg
ICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQsCiAgICAgIGFsbG9jYXRvcjxfVHA+KQogICAg
eyByZXR1cm4gc3RkOjp1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3Vs
dCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1Rw
LCB0eXBlbmFtZSBfQWxsb2NhdG9yPgogICAgdm9pZAogICAgX191bmluaXRpYWxpemVkX2ZpbGxf
YShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAg
ICBjb25zdCBfVHAmIF9feCwgX0FsbG9jYXRvciBfX2FsbG9jKQogICAgewogICAgICBfRm9yd2Fy
ZEl0ZXJhdG9yIF9fY3VyID0gX19maXJzdDsKICAgICAgdHJ5CiB7CiAgIGZvciAoOyBfX2N1ciAh
PSBfX2xhc3Q7ICsrX19jdXIpCiAgICAgX19hbGxvYy5jb25zdHJ1Y3QoJipfX2N1ciwgX194KTsK
IH0KICAgICAgY2F0Y2goLi4uKQogewogICBzdGQ6Ol9EZXN0cm95KF9fZmlyc3QsIF9fY3VyLCBf
X2FsbG9jKTsKICAgdGhyb3c7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJk
SXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1RwMj4KICAgIGlubGluZSB2b2lkCiAg
ICBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9hKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zvcndh
cmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIGNvbnN0IF9UcCYgX194LCBhbGxvY2F0b3I8X1RwMj4p
CiAgICB7IHN0ZDo6dW5pbml0aWFsaXplZF9maWxsKF9fZmlyc3QsIF9fbGFzdCwgX194KTsgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfU2l6ZSwgdHlw
ZW5hbWUgX1RwLAogICAgdHlwZW5hbWUgX0FsbG9jYXRvcj4KICAgIHZvaWQKICAgIF9fdW5pbml0
aWFsaXplZF9maWxsX25fYShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9TaXplIF9fbiwKICAg
ICAgICBjb25zdCBfVHAmIF9feCwKICAgICAgICBfQWxsb2NhdG9yIF9fYWxsb2MpCiAgICB7CiAg
ICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19jdXIgPSBfX2ZpcnN0OwogICAgICB0cnkKIHsKICAgZm9y
ICg7IF9fbiA+IDA7IC0tX19uLCArK19fY3VyKQogICAgIF9fYWxsb2MuY29uc3RydWN0KCYqX19j
dXIsIF9feCk7CiB9CiAgICAgIGNhdGNoKC4uLikKIHsKICAgc3RkOjpfRGVzdHJveShfX2ZpcnN0
LCBfX2N1ciwgX19hbGxvYyk7CiAgIHRocm93OwogfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX1RwLAogICAgdHlw
ZW5hbWUgX1RwMj4KICAgIGlubGluZSB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2Eo
X0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sCiAgICAgICAgY29uc3QgX1RwJiBf
X3gsCiAgICAgICAgYWxsb2NhdG9yPF9UcDI+KQogICAgeyBzdGQ6OnVuaW5pdGlhbGl6ZWRfZmls
bF9uKF9fZmlyc3QsIF9fbiwgX194KTsgfQojIDMxOCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL3N0bF91bmluaXRpYWxpemVkLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVy
YXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3IsIHR5cGVuYW1lIF9BbGxvY2F0b3I+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgog
ICAgX191bmluaXRpYWxpemVkX2NvcHlfY29weShfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsCiAg
ICAgICAgIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgICAgICBfSW5wdXRJdGVyYXRvcjIg
X19maXJzdDIsCiAgICAgICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgICBfRm9y
d2FyZEl0ZXJhdG9yIF9fcmVzdWx0LAogICAgICAgICBfQWxsb2NhdG9yIF9fYWxsb2MpCiAgICB7
CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWQgPSBzdGQ6Ol9fdW5pbml0aWFsaXplZF9jb3B5
X2EoX19maXJzdDEsIF9fbGFzdDEsCiAgICAgICAgICBfX3Jlc3VsdCwKICAgICAgICAgIF9fYWxs
b2MpOwogICAgICB0cnkKIHsKICAgcmV0dXJuIHN0ZDo6X191bmluaXRpYWxpemVkX2NvcHlfYShf
X2ZpcnN0MiwgX19sYXN0MiwgX19taWQsIF9fYWxsb2MpOwogfQogICAgICBjYXRjaCguLi4pCiB7
CiAgIHN0ZDo6X0Rlc3Ryb3koX19yZXN1bHQsIF9fbWlkLCBfX2FsbG9jKTsKICAgdGhyb3c7CiB9
CiAgICB9CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1l
IF9UcCwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsCiAgICB0eXBlbmFtZSBfQWxsb2NhdG9yPgog
ICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fdW5pbml0aWFsaXplZF9maWxsX2NvcHko
X0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdCwgX0ZvcndhcmRJdGVyYXRvciBfX21pZCwKICAgICAg
ICAgY29uc3QgX1RwJiBfX3gsIF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgIF9JbnB1
dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgX0FsbG9jYXRvciBfX2FsbG9jKQogICAgewogICAg
ICBzdGQ6Ol9fdW5pbml0aWFsaXplZF9maWxsX2EoX19yZXN1bHQsIF9fbWlkLCBfX3gsIF9fYWxs
b2MpOwogICAgICB0cnkKIHsKICAgcmV0dXJuIHN0ZDo6X191bmluaXRpYWxpemVkX2NvcHlfYShf
X2ZpcnN0LCBfX2xhc3QsIF9fbWlkLCBfX2FsbG9jKTsKIH0KICAgICAgY2F0Y2goLi4uKQogewog
ICBzdGQ6Ol9EZXN0cm95KF9fcmVzdWx0LCBfX21pZCwgX19hbGxvYyk7CiAgIHRocm93OwogfQog
ICAgfQoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX0Zv
cndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwLAogICAgdHlwZW5hbWUgX0FsbG9jYXRvcj4KICAg
IGlubGluZSB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRfY29weV9maWxsKF9JbnB1dEl0ZXJhdG9y
IF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvciBfX2xhc3QxLAogICAgICAgICBfRm9yd2FyZEl0ZXJh
dG9yIF9fZmlyc3QyLAogICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdDIsIGNvbnN0IF9U
cCYgX194LAogICAgICAgICBfQWxsb2NhdG9yIF9fYWxsb2MpCiAgICB7CiAgICAgIF9Gb3J3YXJk
SXRlcmF0b3IgX19taWQyID0gc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKF9fZmlyc3QxLCBf
X2xhc3QxLAogICAgICAgICAgIF9fZmlyc3QyLAogICAgICAgICAgIF9fYWxsb2MpOwogICAgICB0
cnkKIHsKICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9hKF9fbWlkMiwgX19sYXN0MiwgX194
LCBfX2FsbG9jKTsKIH0KICAgICAgY2F0Y2goLi4uKQogewogICBzdGQ6Ol9EZXN0cm95KF9fZmly
c3QyLCBfX21pZDIsIF9fYWxsb2MpOwogICB0aHJvdzsKIH0KICAgIH0KCn0KIyA2OCAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9hbGdvcml0aG0iIDIgMwojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvYml0cy9zdGxfYWxnby5oIiAxIDMKIyA2MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L3N0bF9hbGdvLmgiIDMKI2RlZmluZSBfQUxHT19IIDEKCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL3N0bF9oZWFwLmgiIDEgMwojIDYxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvc3RsX2hlYXAuaCIgMwojZGVmaW5lIF9TVExfSEVBUF9IIDEKCgoKbmFtZXNwYWNlIHN0ZCB7
CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUg
X0Rpc3RhbmNlPgogICAgYm9vbAogICAgX19pc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LCBfRGlzdGFuY2UgX19uKQogICAgewogICAgICBfRGlzdGFuY2UgX19wYXJlbnQgPSAw
OwogICAgICBmb3IgKF9EaXN0YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2No
aWxkKQogewogICBpZiAoX19maXJzdFtfX3BhcmVudF0gPCBfX2ZpcnN0W19fY2hpbGRdKQogICAg
IHJldHVybiBmYWxzZTsKICAgaWYgKChfX2NoaWxkICYgMSkgPT0gMCkKICAgICArK19fcGFyZW50
OwogfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2UsCiAgICAgICAgICAgdHlwZW5hbWUg
X1N0cmljdFdlYWtPcmRlcmluZz4KICAgIGJvb2wKICAgIF9faXNfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwgX1N0cmljdFdlYWtPcmRlcmluZyBfX2NvbXAsCiAgICAgICBfRGlz
dGFuY2UgX19uKQogICAgewogICAgICBfRGlzdGFuY2UgX19wYXJlbnQgPSAwOwogICAgICBmb3Ig
KF9EaXN0YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2NoaWxkKQogewogICBp
ZiAoX19jb21wKF9fZmlyc3RbX19wYXJlbnRdLCBfX2ZpcnN0W19fY2hpbGRdKSkKICAgICByZXR1
cm4gZmFsc2U7CiAgIGlmICgoX19jaGlsZCAmIDEpID09IDApCiAgICAgKytfX3BhcmVudDsKIH0K
ICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nl
c3NJdGVyYXRvcj4KICAgIGJvb2wKICAgIF9faXNfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsgcmV0dXJuIHN0ZDo6
X19pc19oZWFwKF9fZmlyc3QsIHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwgX19sYXN0KSk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfU3RyaWN0
V2Vha09yZGVyaW5nPgogICAgYm9vbAogICAgX19pc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgIF9TdHJpY3RXZWFr
T3JkZXJpbmcgX19jb21wKQogICAgeyByZXR1cm4gc3RkOjpfX2lzX2hlYXAoX19maXJzdCwgX19j
b21wLCBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCkpOyB9CgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2UsIHR5cGVuYW1l
IF9UcD4KICAgIHZvaWQKICAgIF9fcHVzaF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2Zp
cnN0LAogIF9EaXN0YW5jZSBfX2hvbGVJbmRleCwgX0Rpc3RhbmNlIF9fdG9wSW5kZXgsIF9UcCBf
X3ZhbHVlKQogICAgewogICAgICBfRGlzdGFuY2UgX19wYXJlbnQgPSAoX19ob2xlSW5kZXggLSAx
KSAvIDI7CiAgICAgIHdoaWxlIChfX2hvbGVJbmRleCA+IF9fdG9wSW5kZXggJiYgKihfX2ZpcnN0
ICsgX19wYXJlbnQpIDwgX192YWx1ZSkKIHsKICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0g
KihfX2ZpcnN0ICsgX19wYXJlbnQpOwogICBfX2hvbGVJbmRleCA9IF9fcGFyZW50OwogICBfX3Bh
cmVudCA9IChfX2hvbGVJbmRleCAtIDEpIC8gMjsKIH0KICAgICAgKihfX2ZpcnN0ICsgX19ob2xl
SW5kZXgpID0gX192YWx1ZTsKICAgIH0KIyAxMzkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0
cy9zdGxfaGVhcC5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
PgogICAgaW5saW5lIHZvaWQKICAgIHB1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19m
aXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlw
ZQogICBfVmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
UmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgX0Rpc3RhbmNlVHlwZTsK
CgogICAgIAoKICAgICAKICAgICAgOwoKCiAgICAgIHN0ZDo6X19wdXNoX2hlYXAoX19maXJzdCwg
X0Rpc3RhbmNlVHlwZSgoX19sYXN0IC0gX19maXJzdCkgLSAxKSwKICAgICAgICAgX0Rpc3RhbmNl
VHlwZSgwKSwgX1ZhbHVlVHlwZSgqKF9fbGFzdCAtIDEpKSk7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlLCB0eXBlbmFt
ZSBfVHAsCiAgICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX3B1c2hfaGVhcChf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rpc3RhbmNlIF9faG9sZUluZGV4LAogIF9E
aXN0YW5jZSBfX3RvcEluZGV4LCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wKQogICAgewog
ICAgICBfRGlzdGFuY2UgX19wYXJlbnQgPSAoX19ob2xlSW5kZXggLSAxKSAvIDI7CiAgICAgIHdo
aWxlIChfX2hvbGVJbmRleCA+IF9fdG9wSW5kZXgKICAgICAgJiYgX19jb21wKCooX19maXJzdCAr
IF9fcGFyZW50KSwgX192YWx1ZSkpCiB7CiAgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICoo
X19maXJzdCArIF9fcGFyZW50KTsKICAgX19ob2xlSW5kZXggPSBfX3BhcmVudDsKICAgX19wYXJl
bnQgPSAoX19ob2xlSW5kZXggLSAxKSAvIDI7CiB9CiAgICAgICooX19maXJzdCArIF9faG9sZUlu
ZGV4KSA9IF9fdmFsdWU7CiAgICB9CiMgMTg3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMv
c3RsX2hlYXAuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
dHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgdm9pZAogICAgcHVzaF9oZWFwKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAg
ICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiAgIF9WYWx1ZVR5cGU7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVy
YXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICBfRGlzdGFuY2VUeXBlOwoKCiAgICAgCgogICAgICA7
CiAgICAgIDsKCiAgICAgIHN0ZDo6X19wdXNoX2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlVHlwZSgo
X19sYXN0IC0gX19maXJzdCkgLSAxKSwKICAgICAgICAgX0Rpc3RhbmNlVHlwZSgwKSwgX1ZhbHVl
VHlwZSgqKF9fbGFzdCAtIDEpKSwgX19jb21wKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2UsIHR5cGVuYW1lIF9UcD4K
ICAgIHZvaWQKICAgIF9fYWRqdXN0X2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3Qs
IF9EaXN0YW5jZSBfX2hvbGVJbmRleCwKICAgIF9EaXN0YW5jZSBfX2xlbiwgX1RwIF9fdmFsdWUp
CiAgICB7CiAgICAgIGNvbnN0IF9EaXN0YW5jZSBfX3RvcEluZGV4ID0gX19ob2xlSW5kZXg7CiAg
ICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9faG9sZUluZGV4ICsgMjsKICAgICAg
d2hpbGUgKF9fc2Vjb25kQ2hpbGQgPCBfX2xlbikKIHsKICAgaWYgKCooX19maXJzdCArIF9fc2Vj
b25kQ2hpbGQpIDwgKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSkpCiAgICAgX19zZWNv
bmRDaGlsZC0tOwogICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyBfX3Nl
Y29uZENoaWxkKTsKICAgX19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkOwogICBfX3NlY29uZENo
aWxkID0gMiAqIChfX3NlY29uZENoaWxkICsgMSk7CiB9CiAgICAgIGlmIChfX3NlY29uZENoaWxk
ID09IF9fbGVuKQogewogICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyAo
X19zZWNvbmRDaGlsZCAtIDEpKTsKICAgX19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkIC0gMTsK
IH0KICAgICAgc3RkOjpfX3B1c2hfaGVhcChfX2ZpcnN0LCBfX2hvbGVJbmRleCwgX190b3BJbmRl
eCwgX192YWx1ZSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIF9fcG9wX2hlYXAoX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAg
ICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fcmVzdWx0LCBfVHAgX192YWx1ZSkKICAgIHsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlzdGFuY2U7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2Zp
cnN0OwogICAgICBzdGQ6Ol9fYWRqdXN0X2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlKDApLCBfRGlz
dGFuY2UoX19sYXN0IC0gX19maXJzdCksCiAgICBfX3ZhbHVlKTsKICAgIH0KIyAyNTEgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfaGVhcC5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAgaW5saW5lIHZvaWQKICAgIHBvcF9oZWFwKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQog
ICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNz
SXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwoKCiAgICAgCgogICAgIAogICAgICA7
CiAgICAgIDsKCiAgICAgIHN0ZDo6X19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QgLSAxLCBfX2xh
c3QgLSAxLAogICAgICAgIF9WYWx1ZVR5cGUoKihfX2xhc3QgLSAxKSkpOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwK
ICAgIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2FkanVz
dF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19ob2xlSW5k
ZXgsCiAgICBfRGlzdGFuY2UgX19sZW4sIF9UcCBfX3ZhbHVlLCBfQ29tcGFyZSBfX2NvbXApCiAg
ICB7CiAgICAgIGNvbnN0IF9EaXN0YW5jZSBfX3RvcEluZGV4ID0gX19ob2xlSW5kZXg7CiAgICAg
IF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9faG9sZUluZGV4ICsgMjsKICAgICAgd2hp
bGUgKF9fc2Vjb25kQ2hpbGQgPCBfX2xlbikKIHsKICAgaWYgKF9fY29tcCgqKF9fZmlyc3QgKyBf
X3NlY29uZENoaWxkKSwKICAgICAgICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkpKSkK
ICAgICBfX3NlY29uZENoaWxkLS07CiAgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19m
aXJzdCArIF9fc2Vjb25kQ2hpbGQpOwogICBfX2hvbGVJbmRleCA9IF9fc2Vjb25kQ2hpbGQ7CiAg
IF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hpbGQgKyAxKTsKIH0KICAgICAgaWYgKF9f
c2Vjb25kQ2hpbGQgPT0gX19sZW4pCiB7CiAgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICoo
X19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkpOwogICBfX2hvbGVJbmRleCA9IF9fc2Vjb25k
Q2hpbGQgLSAxOwogfQogICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9faG9sZUluZGV4
LCBfX3RvcEluZGV4LCBfX3ZhbHVlLCBfX2NvbXApOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+
CiAgICBpbmxpbmUgdm9pZAogICAgX19wb3BfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19m
aXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgICBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19yZXN1bHQsIF9UcCBfX3ZhbHVlLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRv
cj46OmRpZmZlcmVuY2VfdHlwZQogX0Rpc3RhbmNlOwogICAgICAqX19yZXN1bHQgPSAqX19maXJz
dDsKICAgICAgc3RkOjpfX2FkanVzdF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZSgwKSwgX0Rpc3Rh
bmNlKF9fbGFzdCAtIF9fZmlyc3QpLAogICAgX192YWx1ZSwgX19jb21wKTsKICAgIH0KIyAzMTcg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfaGVhcC5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGlu
ZSB2b2lkCiAgICBwb3BfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAg
ICAKCiAgICAgIDsKICAgICAgOwoKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKICAgICAg
c3RkOjpfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbGFzdCAtIDEsIF9fbGFzdCAtIDEsCiAgICAgICAg
X1ZhbHVlVHlwZSgqKF9fbGFzdCAtIDEpKSwgX19jb21wKTsKICAgIH0KIyAzNDIgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9zdGxfaGVhcC5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAgdm9pZAogICAgbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQogICAgewogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+
Ojp2YWx1ZV90eXBlCiAgIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICBfRGlz
dGFuY2VUeXBlOwoKCiAgICAgCgogICAgIAogICAgICA7CgogICAgICBpZiAoX19sYXN0IC0gX19m
aXJzdCA8IDIpCiByZXR1cm47CgogICAgICBjb25zdCBfRGlzdGFuY2VUeXBlIF9fbGVuID0gX19s
YXN0IC0gX19maXJzdDsKICAgICAgX0Rpc3RhbmNlVHlwZSBfX3BhcmVudCA9IChfX2xlbiAtIDIp
IC8gMjsKICAgICAgd2hpbGUgKHRydWUpCiB7CiAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0
LCBfX3BhcmVudCwgX19sZW4sCiAgICAgICAgX1ZhbHVlVHlwZSgqKF9fZmlyc3QgKyBfX3BhcmVu
dCkpKTsKICAgaWYgKF9fcGFyZW50ID09IDApCiAgICAgcmV0dXJuOwogICBfX3BhcmVudC0tOwog
fQogICAgfQojIDM4MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9oZWFwLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21w
YXJlPgogICAgaW5saW5lIHZvaWQKICAgIG1ha2VfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9Db21wYXJlIF9f
Y29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICBfVmFsdWVUeXBlOwogICAgICB0eXBlZGVm
IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJl
bmNlX3R5cGUKICAgX0Rpc3RhbmNlVHlwZTsKCgogICAgIAoKICAgICAgOwoKICAgICAgaWYgKF9f
bGFzdCAtIF9fZmlyc3QgPCAyKQogcmV0dXJuOwoKICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBf
X2xlbiA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgICAgIF9EaXN0YW5jZVR5cGUgX19wYXJlbnQgPSAo
X19sZW4gLSAyKSAvIDI7CiAgICAgIHdoaWxlICh0cnVlKQogewogICBzdGQ6Ol9fYWRqdXN0X2hl
YXAoX19maXJzdCwgX19wYXJlbnQsIF9fbGVuLAogICAgICAgIF9WYWx1ZVR5cGUoKihfX2ZpcnN0
ICsgX19wYXJlbnQpKSwgX19jb21wKTsKICAgaWYgKF9fcGFyZW50ID09IDApCiAgICAgcmV0dXJu
OwogICBfX3BhcmVudC0tOwogfQogICAgfQojIDQyMCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL3N0bF9oZWFwLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+CiAgICB2b2lkCiAgICBzb3J0X2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3Qs
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpCiAgICB7CgogICAgIAoKICAgICAKCiAgICAg
IDsKCgogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+IDEpCiBzdGQ6OnBvcF9oZWFwKF9f
Zmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvcihfX2xhc3QtLSkpOwogICAgfQojIDQ0NiAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9oZWFwLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAg
c29ydF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19sYXN0LAogICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAgICAKCiAgICAg
IDsKICAgICAgOwoKICAgICAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAxKQogc3RkOjpwb3Bf
aGVhcChfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IoX19sYXN0LS0pLCBfX2NvbXApOwog
ICAgfQoKfQojIDY2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF90ZW1wYnVmLmgiIDEgMwojIDYz
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX3RlbXBidWYuaCIgMwojZGVmaW5lIF9U
RU1QQlVGX0ggMQoKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL21lbW9yeSIgMSAzCiMgNDkg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvbWVtb3J5IiAzCiNkZWZpbmUgX0dMSUJDWFhfTUVNT1JZ
IDEKCiAgICAgICAKIyA1MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9tZW1vcnkiIDMKCgojIDEg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9hbGxvY2F0b3IuaCIgMSAzCiMgNTAgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvYml0cy9hbGxvY2F0b3IuaCIgMwojZGVmaW5lIF9BTExPQ0FUT1Jf
SCAxCgoKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2
XzY0L2JpdHMvYysrYWxsb2NhdG9yLmgiIDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2k2ODYtYXBwbGUtZGFyd2luMTAveDg2XzY0L2JpdHMvYysrYWxsb2NhdG9yLmgiIDMKI2RlZmlu
ZSBfQ1hYX0FMTE9DQVRPUl9IIDEKCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvZXh0L25l
d19hbGxvY2F0b3IuaCIgMSAzCiMgMzUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvZXh0L25ld19h
bGxvY2F0b3IuaCIgMwojZGVmaW5lIF9ORVdfQUxMT0NBVE9SX0ggMQoKCgoKbmFtZXNwYWNlIF9f
Z251X2N4eCB7CgogIHVzaW5nIHN0ZDo6c2l6ZV90OwogIHVzaW5nIHN0ZDo6cHRyZGlmZl90Owoj
IDUyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2V4dC9uZXdfYWxsb2NhdG9yLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjbGFzcyBuZXdfYWxsb2NhdG9yCiAgICB7CiAgICBwdWJs
aWM6CiAgICAgIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICAgICAgdHlwZWRlZiBwdHJkaWZm
X3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIF9UcCogcG9pbnRlcjsKICAgICAgdHlw
ZWRlZiBjb25zdCBfVHAqIGNvbnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgX1RwJiByZWZlcmVu
Y2U7CiAgICAgIHR5cGVkZWYgY29uc3QgX1RwJiBjb25zdF9yZWZlcmVuY2U7CiAgICAgIHR5cGVk
ZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogICAgICAg
IHN0cnVjdCByZWJpbmQKICAgICAgICB7IHR5cGVkZWYgbmV3X2FsbG9jYXRvcjxfVHAxPiBvdGhl
cjsgfTsKCiAgICAgIG5ld19hbGxvY2F0b3IoKSB0aHJvdygpIHsgfQoKICAgICAgbmV3X2FsbG9j
YXRvcihjb25zdCBuZXdfYWxsb2NhdG9yJikgdGhyb3coKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcDE+CiAgICAgICAgbmV3X2FsbG9jYXRvcihjb25zdCBuZXdfYWxsb2NhdG9yPF9U
cDE+JikgdGhyb3coKSB7IH0KCiAgICAgIH5uZXdfYWxsb2NhdG9yKCkgdGhyb3coKSB7IH0KCiAg
ICAgIHBvaW50ZXIKICAgICAgYWRkcmVzcyhyZWZlcmVuY2UgX194KSBjb25zdCB7IHJldHVybiAm
X194OyB9CgogICAgICBjb25zdF9wb2ludGVyCiAgICAgIGFkZHJlc3MoY29uc3RfcmVmZXJlbmNl
IF9feCkgY29uc3QgeyByZXR1cm4gJl9feDsgfQoKCgogICAgICBwb2ludGVyCiAgICAgIGFsbG9j
YXRlKHNpemVfdHlwZSBfX24sIGNvbnN0IHZvaWQqID0gMCkKICAgICAgewogaWYgKF9fYnVpbHRp
bl9leHBlY3QoX19uID4gdGhpcy0+bWF4X3NpemUoKSwgZmFsc2UpKQogICBzdGQ6Ol9fdGhyb3df
YmFkX2FsbG9jKCk7CgogcmV0dXJuIHN0YXRpY19jYXN0PF9UcCo+KDo6b3BlcmF0b3IgbmV3KF9f
biAqIHNpemVvZihfVHApKSk7CiAgICAgIH0KCgogICAgICB2b2lkCiAgICAgIGRlYWxsb2NhdGUo
cG9pbnRlciBfX3AsIHNpemVfdHlwZSkKICAgICAgeyA6Om9wZXJhdG9yIGRlbGV0ZShfX3ApOyB9
CgogICAgICBzaXplX3R5cGUKICAgICAgbWF4X3NpemUoKSBjb25zdCB0aHJvdygpCiAgICAgIHsg
cmV0dXJuIHNpemVfdCgtMSkgLyBzaXplb2YoX1RwKTsgfQoKCgogICAgICB2b2lkCiAgICAgIGNv
bnN0cnVjdChwb2ludGVyIF9fcCwgY29uc3QgX1RwJiBfX3ZhbCkKICAgICAgeyA6Om5ldyhfX3Ap
IF9UcChfX3ZhbCk7IH0KCiAgICAgIHZvaWQKICAgICAgZGVzdHJveShwb2ludGVyIF9fcCkgeyBf
X3AtPn5fVHAoKTsgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgbmV3X2FsbG9jYXRvcjxfVHA+JiwgY29uc3QgbmV3
X2FsbG9jYXRvcjxfVHA+JikKICAgIHsgcmV0dXJuIHRydWU7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgbmV3X2FsbG9jYXRv
cjxfVHA+JiwgY29uc3QgbmV3X2FsbG9jYXRvcjxfVHA+JikKICAgIHsgcmV0dXJuIGZhbHNlOyB9
Cgp9CiMgNDAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZf
NjQvYml0cy9jKythbGxvY2F0b3IuaCIgMiAzCiNkZWZpbmUgX19nbGliY3h4X2Jhc2VfYWxsb2Nh
dG9yIF9fZ251X2N4eDo6bmV3X2FsbG9jYXRvcgojIDU0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2JpdHMvYWxsb2NhdG9yLmgiIDIgMwoKCgpuYW1lc3BhY2Ugc3RkIHsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgY2xhc3MgYWxsb2NhdG9yOwoKCiAgdGVtcGxhdGU8PgogICAgY2xhc3Mg
YWxsb2NhdG9yPHZvaWQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgc2l6ZV90IHNp
emVfdHlwZTsKICAgICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0
eXBlZGVmIHZvaWQqIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgY29uc3Qgdm9pZCogY29uc3RfcG9p
bnRlcjsKICAgICAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHAxPgogICAgICAgIHN0cnVjdCByZWJpbmQKICAgICAgICB7IHR5cGVkZWYgYWxsb2Nh
dG9yPF9UcDE+IG90aGVyOyB9OwogICAgfTsKCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgY2xhc3MgYWxsb2NhdG9yOiBwdWJsaWMgX19nbnVfY3h4OjpuZXdfYWxsb2NhdG9yPF9U
cD4KICAgIHsKICAgcHVibGljOgogICAgICB0eXBlZGVmIHNpemVfdCBzaXplX3R5cGU7CiAgICAg
IHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiBfVHAqIHBv
aW50ZXI7CiAgICAgIHR5cGVkZWYgY29uc3QgX1RwKiBjb25zdF9wb2ludGVyOwogICAgICB0eXBl
ZGVmIF9UcCYgcmVmZXJlbmNlOwogICAgICB0eXBlZGVmIGNvbnN0IF9UcCYgY29uc3RfcmVmZXJl
bmNlOwogICAgICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwMT4KICAgICAgICBzdHJ1Y3QgcmViaW5kCiAgICAgICAgeyB0eXBlZGVmIGFsbG9jYXRv
cjxfVHAxPiBvdGhlcjsgfTsKCiAgICAgIGFsbG9jYXRvcigpIHRocm93KCkgeyB9CgogICAgICBh
bGxvY2F0b3IoY29uc3QgYWxsb2NhdG9yJiBfX2EpIHRocm93KCkKICAgICAgOiBfX2dudV9jeHg6
Om5ld19hbGxvY2F0b3I8X1RwPihfX2EpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
MT4KICAgICAgICBhbGxvY2F0b3IoY29uc3QgYWxsb2NhdG9yPF9UcDE+JikgdGhyb3coKSB7IH0K
CiAgICAgIH5hbGxvY2F0b3IoKSB0aHJvdygpIHsgfQoKCiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNv
bnN0IGFsbG9jYXRvcjxfVDE+JiwgY29uc3QgYWxsb2NhdG9yPF9UMj4mKQogICAgeyByZXR1cm4g
dHJ1ZTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIGlubGlu
ZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IGFsbG9jYXRvcjxfVDE+JiwgY29uc3QgYWxsb2Nh
dG9yPF9UMj4mKQogICAgeyByZXR1cm4gZmFsc2U7IH0KCgoKCgogIGV4dGVybiB0ZW1wbGF0ZSBj
bGFzcyBhbGxvY2F0b3I8Y2hhcj47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGFsbG9jYXRvcjx3
Y2hhcl90PjsKCgoKI3VuZGVmIF9fZ2xpYmN4eF9iYXNlX2FsbG9jYXRvcgoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0FsbG9jLCBib29sID0gc3RkOjpfX2lzX2VtcHR5PF9BbGxvYz46Ol9fdmFsdWU+
CiAgICBzdHJ1Y3QgX19hbGxvY19zd2FwCiAgICB7IHN0YXRpYyB2b2lkIF9TX2RvX2l0KF9BbGxv
YyYsIF9BbGxvYyYpIHsgfSB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICBzdHJ1
Y3QgX19hbGxvY19zd2FwPF9BbGxvYywgZmFsc2U+CiAgICB7CiAgICAgIHN0YXRpYyB2b2lkCiAg
ICAgIF9TX2RvX2l0KF9BbGxvYyYgX19vbmUsIF9BbGxvYyYgX190d28pCiAgICAgIHsKCiBpZiAo
X19vbmUgIT0gX190d28pCiAgIHN3YXAoX19vbmUsIF9fdHdvKTsKICAgICAgfQogICAgfTsKCn0K
IyA1NSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9tZW1vcnkiIDIgMwoKCgojIDEgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9zdGxfcmF3X3N0b3JhZ2VfaXRlci5oIiAxIDMKIyA2MiAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9yYXdfc3RvcmFnZV9pdGVyLmgiIDMKI2RlZmlu
ZSBfU1RMX1JBV19TVE9SQUdFX0lURVJBVE9SX0ggMQoKbmFtZXNwYWNlIHN0ZCB7CgoKCgoKICB0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvciwgY2xhc3MgX1RwPgogICAgY2xhc3MgcmF3
X3N0b3JhZ2VfaXRlcmF0b3IKICAgIDogcHVibGljIGl0ZXJhdG9yPG91dHB1dF9pdGVyYXRvcl90
YWcsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQ+CiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9G
b3J3YXJkSXRlcmF0b3IgX01faXRlcjsKCiAgICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAg
IHJhd19zdG9yYWdlX2l0ZXJhdG9yKF9Gb3J3YXJkSXRlcmF0b3IgX194KQogICAgICA6IF9NX2l0
ZXIoX194KSB7fQoKICAgICAgcmF3X3N0b3JhZ2VfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKigp
IHsgcmV0dXJuICp0aGlzOyB9CgogICAgICByYXdfc3RvcmFnZV9pdGVyYXRvciYKICAgICAgb3Bl
cmF0b3I9KGNvbnN0IF9UcCYgX19lbGVtZW50KQogICAgICB7CiBzdGQ6Ol9Db25zdHJ1Y3QoJipf
TV9pdGVyLCBfX2VsZW1lbnQpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICByYXdfc3Rv
cmFnZV9pdGVyYXRvcjxfRm9yd2FyZEl0ZXJhdG9yLCBfVHA+JgogICAgICBvcGVyYXRvcisrKCkK
ICAgICAgewogKytfTV9pdGVyOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICByYXdfc3Rv
cmFnZV9pdGVyYXRvcjxfRm9yd2FyZEl0ZXJhdG9yLCBfVHA+CiAgICAgIG9wZXJhdG9yKysoaW50
KQogICAgICB7CiByYXdfc3RvcmFnZV9pdGVyYXRvcjxfRm9yd2FyZEl0ZXJhdG9yLCBfVHA+IF9f
dG1wID0gKnRoaXM7CiArK19NX2l0ZXI7CiByZXR1cm4gX190bXA7CiAgICAgIH0KICAgIH07Cgp9
CiMgNTkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvbWVtb3J5IiAyIDMKCiMgMSAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9saW1pdHMiIDEgMwojIDQ0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2xp
bWl0cyIgMwojZGVmaW5lIF9HTElCQ1hYX05VTUVSSUNfTElNSVRTIDEKCiAgICAgICAKIyA0NyAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9saW1pdHMiIDMKIyA4NiAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9saW1pdHMiIDMKI2RlZmluZSBfX2dsaWJjeHhfaW50ZWdyYWxfdHJhcHMgdHJ1ZQojIDk1
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2xpbWl0cyIgMwojZGVmaW5lIF9fZ2xpYmN4eF9mbG9h
dF9oYXNfZGVub3JtX2xvc3MgZmFsc2UKCgojZGVmaW5lIF9fZ2xpYmN4eF9mbG9hdF90cmFwcyBm
YWxzZQoKCiNkZWZpbmUgX19nbGliY3h4X2Zsb2F0X3RpbnluZXNzX2JlZm9yZSBmYWxzZQoKCgoK
CgoKI2RlZmluZSBfX2dsaWJjeHhfZG91YmxlX2hhc19kZW5vcm1fbG9zcyBmYWxzZQoKCiNkZWZp
bmUgX19nbGliY3h4X2RvdWJsZV90cmFwcyBmYWxzZQoKCiNkZWZpbmUgX19nbGliY3h4X2RvdWJs
ZV90aW55bmVzc19iZWZvcmUgZmFsc2UKCgoKCgoKCiNkZWZpbmUgX19nbGliY3h4X2xvbmdfZG91
YmxlX2hhc19kZW5vcm1fbG9zcyBmYWxzZQoKCiNkZWZpbmUgX19nbGliY3h4X2xvbmdfZG91Ymxl
X3RyYXBzIGZhbHNlCgoKI2RlZmluZSBfX2dsaWJjeHhfbG9uZ19kb3VibGVfdGlueW5lc3NfYmVm
b3JlIGZhbHNlCgoKCgojZGVmaW5lIF9fZ2xpYmN4eF9zaWduZWQoVCkgKChUKSgtMSkgPCAwKQoK
I2RlZmluZSBfX2dsaWJjeHhfbWluKFQpIChfX2dsaWJjeHhfc2lnbmVkIChUKSA/IChUKTEgPDwg
X19nbGliY3h4X2RpZ2l0cyAoVCkgOiAoVCkwKQoKCiNkZWZpbmUgX19nbGliY3h4X21heChUKSAo
X19nbGliY3h4X3NpZ25lZCAoVCkgPyAoKFQpMSA8PCBfX2dsaWJjeHhfZGlnaXRzIChUKSkgLSAx
IDogfihUKTApCgoKI2RlZmluZSBfX2dsaWJjeHhfZGlnaXRzKFQpIChzaXplb2YoVCkgKiBfX0NI
QVJfQklUX18gLSBfX2dsaWJjeHhfc2lnbmVkIChUKSkKCgoKI2RlZmluZSBfX2dsaWJjeHhfZGln
aXRzMTAoVCkgKF9fZ2xpYmN4eF9kaWdpdHMgKFQpICogNjQzIC8gMjEzNikKCgoKbmFtZXNwYWNl
IHN0ZCB7CgoKCgoKCiAgZW51bSBmbG9hdF9yb3VuZF9zdHlsZQogIHsKICAgIHJvdW5kX2luZGV0
ZXJtaW5hdGUgPSAtMSwKICAgIHJvdW5kX3Rvd2FyZF96ZXJvID0gMCwKICAgIHJvdW5kX3RvX25l
YXJlc3QgPSAxLAogICAgcm91bmRfdG93YXJkX2luZmluaXR5ID0gMiwKICAgIHJvdW5kX3Rvd2Fy
ZF9uZWdfaW5maW5pdHkgPSAzCiAgfTsKCgoKCgoKCiAgZW51bSBmbG9hdF9kZW5vcm1fc3R5bGUK
ICB7CgogICAgZGVub3JtX2luZGV0ZXJtaW5hdGUgPSAtMSwKCiAgICBkZW5vcm1fYWJzZW50ID0g
MCwKCiAgICBkZW5vcm1fcHJlc2VudCA9IDEKICB9OwojIDE5MiAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9saW1pdHMiIDMKICBzdHJ1Y3QgX19udW1lcmljX2xpbWl0c19iYXNlCiAgewoKCiAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc19zcGVjaWFsaXplZCA9IGZhbHNlOwoKCgoKICAgIHN0YXRpYyBj
b25zdCBpbnQgZGlnaXRzID0gMDsKCiAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0czEwID0gMDsK
CiAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zaWduZWQgPSBmYWxzZTsKCgoKCgogICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9IGZhbHNlOwoKCgoKICAgIHN0YXRpYyBjb25zdCBib29s
IGlzX2V4YWN0ID0gZmFsc2U7CgoKICAgIHN0YXRpYyBjb25zdCBpbnQgcmFkaXggPSAwOwoKCgog
ICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQgPSAwOwoKCiAgICBzdGF0aWMgY29uc3Qg
aW50IG1pbl9leHBvbmVudDEwID0gMDsKCgoKICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4X2V4cG9u
ZW50ID0gMDsKCgogICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQxMCA9IDA7CgoKICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc19pbmZpbml0eSA9IGZhbHNlOwoKCiAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7CgoKICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c19zaWduYWxpbmdfTmFOID0gZmFsc2U7CgogICAgc3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9z
dHlsZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2VudDsKCgogICAgc3RhdGljIGNvbnN0IGJvb2wg
aGFzX2Rlbm9ybV9sb3NzID0gZmFsc2U7CgoKCiAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pZWM1
NTkgPSBmYWxzZTsKCgoKICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2JvdW5kZWQgPSBmYWxzZTsK
CgoKCiAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19tb2R1bG8gPSBmYWxzZTsKCgogICAgc3RhdGlj
IGNvbnN0IGJvb2wgdHJhcHMgPSBmYWxzZTsKCiAgICBzdGF0aWMgY29uc3QgYm9vbCB0aW55bmVz
c19iZWZvcmUgPSBmYWxzZTsKCgoKICAgIHN0YXRpYyBjb25zdCBmbG9hdF9yb3VuZF9zdHlsZSBy
b3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96ZXJvOwogIH07CiMgMjg1ICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2xpbWl0cyIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBu
dW1lcmljX2xpbWl0cyA6IHB1YmxpYyBfX251bWVyaWNfbGltaXRzX2Jhc2UKICAgIHsKCgogICAg
ICBzdGF0aWMgX1RwIG1pbigpIHRocm93KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8X1RwPigwKTsg
fQoKICAgICAgc3RhdGljIF9UcCBtYXgoKSB0aHJvdygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PF9U
cD4oMCk7IH0KCgogICAgICBzdGF0aWMgX1RwIGVwc2lsb24oKSB0aHJvdygpIHsgcmV0dXJuIHN0
YXRpY19jYXN0PF9UcD4oMCk7IH0KCiAgICAgIHN0YXRpYyBfVHAgcm91bmRfZXJyb3IoKSB0aHJv
dygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PF9UcD4oMCk7IH0KCiAgICAgIHN0YXRpYyBfVHAgaW5m
aW5pdHkoKSB0aHJvdygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PF9UcD4oMCk7IH0KCiAgICAgIHN0
YXRpYyBfVHAgcXVpZXRfTmFOKCkgdGhyb3coKSB7IHJldHVybiBzdGF0aWNfY2FzdDxfVHA+KDAp
OyB9CgoKICAgICAgc3RhdGljIF9UcCBzaWduYWxpbmdfTmFOKCkgdGhyb3coKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxfVHA+KDApOyB9CgoKCiAgICAgIHN0YXRpYyBfVHAgZGVub3JtX21pbigpIHRo
cm93KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8X1RwPigwKTsgfQogICAgfTsKCgoKCgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czxib29sPgogICAgewogICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRydWU7CgogICAgICBzdGF0aWMgYm9vbCBtaW4o
KSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgIHN0YXRpYyBib29sIG1heCgp
IHRocm93KCkKICAgICAgeyByZXR1cm4gdHJ1ZTsgfQoKICAgICAgc3RhdGljIGNvbnN0IGludCBk
aWdpdHMgPSAxOwogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0czEwID0gMDsKICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNfc2lnbmVkID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBib29s
IGlzX2ludGVnZXIgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19leGFjdCA9IHRy
dWU7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgcmFkaXggPSAyOwogICAgICBzdGF0aWMgYm9vbCBl
cHNpbG9uKCkgdGhyb3coKQogICAgICB7IHJldHVybiBmYWxzZTsgfQogICAgICBzdGF0aWMgYm9v
bCByb3VuZF9lcnJvcigpIHRocm93KCkKICAgICAgeyByZXR1cm4gZmFsc2U7IH0KCiAgICAgIHN0
YXRpYyBjb25zdCBpbnQgbWluX2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0IGludCBt
aW5fZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4X2V4cG9uZW50ID0g
MDsKICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQxMCA9IDA7CgogICAgICBzdGF0
aWMgY29uc3QgYm9vbCBoYXNfaW5maW5pdHkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfc2ln
bmFsaW5nX05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgZmxvYXRfZGVub3JtX3N0eWxl
IGhhc19kZW5vcm0gPSBkZW5vcm1fYWJzZW50OwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNf
ZGVub3JtX2xvc3MgPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBib29sIGluZmluaXR5KCkgdGhyb3co
KQogICAgICB7IHJldHVybiBmYWxzZTsgfQogICAgICBzdGF0aWMgYm9vbCBxdWlldF9OYU4oKSB0
aHJvdygpCiAgICAgIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgIHN0YXRpYyBib29sIHNpZ25hbGlu
Z19OYU4oKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgIHN0YXRpYyBib29s
IGRlbm9ybV9taW4oKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIGZhbHNlOyB9CgogICAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNfYm91bmRlZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX21vZHVsbyA9IGZh
bHNlOwoKCgoKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdHJhcHMgPSB0cnVlOwogICAgICBzdGF0
aWMgY29uc3QgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0
IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlID0gcm91bmRfdG93YXJkX3plcm87CiAgICB9
OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPGNoYXI+CiAgICB7CiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRp
YyBjaGFyIG1pbigpIHRocm93KCkKICAgICAgeyByZXR1cm4gKCgoY2hhcikoLTEpIDwgMCkgPyAo
Y2hhcikxIDw8IChzaXplb2YoY2hhcikgKiA4IC0gKChjaGFyKSgtMSkgPCAwKSkgOiAoY2hhcikw
KTsgfQogICAgICBzdGF0aWMgY2hhciBtYXgoKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuICgoKGNo
YXIpKC0xKSA8IDApID8gKChjaGFyKTEgPDwgKHNpemVvZihjaGFyKSAqIDggLSAoKGNoYXIpKC0x
KSA8IDApKSkgLSAxIDogfihjaGFyKTApOyB9CgogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0
cyA9IChzaXplb2YoY2hhcikgKiA4IC0gKChjaGFyKSgtMSkgPCAwKSk7CiAgICAgIHN0YXRpYyBj
b25zdCBpbnQgZGlnaXRzMTAgPSAoKHNpemVvZihjaGFyKSAqIDggLSAoKGNoYXIpKC0xKSA8IDAp
KSAqIDY0MyAvIDIxMzYpOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zaWduZWQgPSAoKGNo
YXIpKC0xKSA8IDApOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsK
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29u
c3QgaW50IHJhZGl4ID0gMjsKICAgICAgc3RhdGljIGNoYXIgZXBzaWxvbigpIHRocm93KCkKICAg
ICAgeyByZXR1cm4gMDsgfQogICAgICBzdGF0aWMgY2hhciByb3VuZF9lcnJvcigpIHRocm93KCkK
ICAgICAgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQg
PSAwOwogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAgc3Rh
dGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3QgaW50IG1h
eF9leHBvbmVudDEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19pbmZpbml0eSA9
IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7CiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CiAgICAgIHN0
YXRpYyBjb25zdCBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybSA9IGRlbm9ybV9hYnNlbnQ7
CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAg
c3RhdGljIGNoYXIgaW5maW5pdHkoKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIGNoYXIoKTsgfQog
ICAgICBzdGF0aWMgY2hhciBxdWlldF9OYU4oKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIGNoYXIo
KTsgfQogICAgICBzdGF0aWMgY2hhciBzaWduYWxpbmdfTmFOKCkgdGhyb3coKQogICAgICB7IHJl
dHVybiBjaGFyKCk7IH0KICAgICAgc3RhdGljIGNoYXIgZGVub3JtX21pbigpIHRocm93KCkKICAg
ICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19ib3VuZGVk
ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfbW9kdWxvID0gdHJ1ZTsKCiAgICAg
IHN0YXRpYyBjb25zdCBib29sIHRyYXBzID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
dGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBmbG9hdF9yb3VuZF9z
dHlsZSByb3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96ZXJvOwogICAgfTsKCgogIHRlbXBsYXRl
PD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czxzaWduZWQgY2hhcj4KICAgIHsKICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOwoKICAgICAgc3RhdGljIHNpZ25l
ZCBjaGFyIG1pbigpIHRocm93KCkKICAgICAgeyByZXR1cm4gLTEyNyAtIDE7IH0KICAgICAgc3Rh
dGljIHNpZ25lZCBjaGFyIG1heCgpIHRocm93KCkKICAgICAgeyByZXR1cm4gMTI3OyB9CgogICAg
ICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0cyA9IChzaXplb2Yoc2lnbmVkIGNoYXIpICogOCAtICgo
c2lnbmVkIGNoYXIpKC0xKSA8IDApKTsKICAgICAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMxMCA9
ICgoc2l6ZW9mKHNpZ25lZCBjaGFyKSAqIDggLSAoKHNpZ25lZCBjaGFyKSgtMSkgPCAwKSkgKiA2
NDMgLyAyMTM2KTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsKICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGlzX2V4YWN0ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGludCByYWRpeCA9IDI7
CiAgICAgIHN0YXRpYyBzaWduZWQgY2hhciBlcHNpbG9uKCkgdGhyb3coKQogICAgICB7IHJldHVy
biAwOyB9CiAgICAgIHN0YXRpYyBzaWduZWQgY2hhciByb3VuZF9lcnJvcigpIHRocm93KCkKICAg
ICAgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQgPSAw
OwogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAgc3RhdGlj
IGNvbnN0IGludCBtYXhfZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9l
eHBvbmVudDEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19pbmZpbml0eSA9IGZh
bHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7CiAgICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRp
YyBjb25zdCBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybSA9IGRlbm9ybV9hYnNlbnQ7CiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3Rh
dGljIHNpZ25lZCBjaGFyIGluZmluaXR5KCkgdGhyb3coKQogICAgICB7IHJldHVybiBzdGF0aWNf
Y2FzdDxzaWduZWQgY2hhcj4oMCk7IH0KICAgICAgc3RhdGljIHNpZ25lZCBjaGFyIHF1aWV0X05h
TigpIHRocm93KCkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KDApOyB9
CiAgICAgIHN0YXRpYyBzaWduZWQgY2hhciBzaWduYWxpbmdfTmFOKCkgdGhyb3coKQogICAgICB7
IHJldHVybiBzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oMCk7IH0KICAgICAgc3RhdGljIHNpZ25l
ZCBjaGFyIGRlbm9ybV9taW4oKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHNp
Z25lZCBjaGFyPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaWVjNTU5ID0gZmFs
c2U7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2JvdW5kZWQgPSB0cnVlOwogICAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc19tb2R1bG8gPSB0cnVlOwoKICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
dHJhcHMgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBm
YWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlID0g
cm91bmRfdG93YXJkX3plcm87CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVy
aWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlz
X3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIG1pbigpIHRo
cm93KCkKICAgICAgeyByZXR1cm4gMDsgfQogICAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBtYXgo
KSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIDEyNyAqIDJVICsgMTsgfQoKICAgICAgc3RhdGljIGNv
bnN0IGludCBkaWdpdHMgPSAoc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogOCAtICgodW5zaWduZWQg
Y2hhcikoLTEpIDwgMCkpOwogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0czEwID0gKChzaXpl
b2YodW5zaWduZWQgY2hhcikgKiA4IC0gKCh1bnNpZ25lZCBjaGFyKSgtMSkgPCAwKSkgKiA2NDMg
LyAyMTM2KTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc2lnbmVkID0gZmFsc2U7CiAgICAg
IHN0YXRpYyBjb25zdCBib29sIGlzX2ludGVnZXIgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc19leGFjdCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgcmFkaXggPSAyOwog
ICAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBlcHNpbG9uKCkgdGhyb3coKQogICAgICB7IHJldHVy
biAwOyB9CiAgICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHJvdW5kX2Vycm9yKCkgdGhyb3coKQog
ICAgICB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudCA9
IDA7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWluX2V4cG9uZW50MTAgPSAwOwogICAgICBzdGF0
aWMgY29uc3QgaW50IG1heF9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4
X2V4cG9uZW50MTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2luZmluaXR5ID0g
ZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19xdWlldF9OYU4gPSBmYWxzZTsKICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZTsKICAgICAgc3Rh
dGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2VudDsK
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2Rlbm9ybV9sb3NzID0gZmFsc2U7CgogICAgICBz
dGF0aWMgdW5zaWduZWQgY2hhciBpbmZpbml0eSgpIHRocm93KCkKICAgICAgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMCk7IH0KICAgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIg
cXVpZXRfTmFOKCkgdGhyb3coKQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPigwKTsgfQogICAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBzaWduYWxpbmdfTmFOKCkgdGhy
b3coKQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwKTsgfQogICAg
ICBzdGF0aWMgdW5zaWduZWQgY2hhciBkZW5vcm1fbWluKCkgdGhyb3coKQogICAgICB7IHJldHVy
biBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNfaWVjNTU5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2JvdW5kZWQg
PSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19tb2R1bG8gPSB0cnVlOwoKICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgdHJhcHMgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCB0
aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X3JvdW5kX3N0
eWxlIHJvdW5kX3N0eWxlID0gcm91bmRfdG93YXJkX3plcm87CiAgICB9OwoKCiAgdGVtcGxhdGU8
PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPHdjaGFyX3Q+CiAgICB7CiAgICAgIHN0YXRpYyBj
b25zdCBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyB3Y2hhcl90IG1p
bigpIHRocm93KCkKICAgICAgeyByZXR1cm4gKCgod2NoYXJfdCkoLTEpIDwgMCkgPyAod2NoYXJf
dCkxIDw8IChzaXplb2Yod2NoYXJfdCkgKiA4IC0gKCh3Y2hhcl90KSgtMSkgPCAwKSkgOiAod2No
YXJfdCkwKTsgfQogICAgICBzdGF0aWMgd2NoYXJfdCBtYXgoKSB0aHJvdygpCiAgICAgIHsgcmV0
dXJuICgoKHdjaGFyX3QpKC0xKSA8IDApID8gKCh3Y2hhcl90KTEgPDwgKHNpemVvZih3Y2hhcl90
KSAqIDggLSAoKHdjaGFyX3QpKC0xKSA8IDApKSkgLSAxIDogfih3Y2hhcl90KTApOyB9CgogICAg
ICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0cyA9IChzaXplb2Yod2NoYXJfdCkgKiA4IC0gKCh3Y2hh
cl90KSgtMSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzMTAgPSAoKHNpemVv
Zih3Y2hhcl90KSAqIDggLSAoKHdjaGFyX3QpKC0xKSA8IDApKSAqIDY0MyAvIDIxMzYpOwogICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc19zaWduZWQgPSAoKHdjaGFyX3QpKC0xKSA8IDApOwogICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgaW50IHJhZGl4ID0gMjsK
ICAgICAgc3RhdGljIHdjaGFyX3QgZXBzaWxvbigpIHRocm93KCkKICAgICAgeyByZXR1cm4gMDsg
fQogICAgICBzdGF0aWMgd2NoYXJfdCByb3VuZF9lcnJvcigpIHRocm93KCkKICAgICAgeyByZXR1
cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQgPSAwOwogICAgICBz
dGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAgc3RhdGljIGNvbnN0IGlu
dCBtYXhfZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudDEw
ID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19pbmZpbml0eSA9IGZhbHNlOwogICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBm
bG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybSA9IGRlbm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRp
YyBjb25zdCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3RhdGljIHdjaGFy
X3QgaW5maW5pdHkoKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIHdjaGFyX3QoKTsgfQogICAgICBz
dGF0aWMgd2NoYXJfdCBxdWlldF9OYU4oKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIHdjaGFyX3Qo
KTsgfQogICAgICBzdGF0aWMgd2NoYXJfdCBzaWduYWxpbmdfTmFOKCkgdGhyb3coKQogICAgICB7
IHJldHVybiB3Y2hhcl90KCk7IH0KICAgICAgc3RhdGljIHdjaGFyX3QgZGVub3JtX21pbigpIHRo
cm93KCkKICAgICAgeyByZXR1cm4gd2NoYXJfdCgpOyB9CgogICAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc19pZWM1NTkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfYm91bmRlZCA9
IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX21vZHVsbyA9IHRydWU7CgogICAgICBz
dGF0aWMgY29uc3QgYm9vbCB0cmFwcyA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRp
bnluZXNzX2JlZm9yZSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgZmxvYXRfcm91bmRfc3R5
bGUgcm91bmRfc3R5bGUgPSByb3VuZF90b3dhcmRfemVybzsKICAgIH07CgoKICB0ZW1wbGF0ZTw+
CiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8c2hvcnQ+CiAgICB7CiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBzaG9ydCBtaW4oKSB0
aHJvdygpCiAgICAgIHsgcmV0dXJuIC0zMjc2NyAtIDE7IH0KICAgICAgc3RhdGljIHNob3J0IG1h
eCgpIHRocm93KCkKICAgICAgeyByZXR1cm4gMzI3Njc7IH0KCiAgICAgIHN0YXRpYyBjb25zdCBp
bnQgZGlnaXRzID0gKHNpemVvZihzaG9ydCkgKiA4IC0gKChzaG9ydCkoLTEpIDwgMCkpOwogICAg
ICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0czEwID0gKChzaXplb2Yoc2hvcnQpICogOCAtICgoc2hv
cnQpKC0xKSA8IDApKSAqIDY0MyAvIDIxMzYpOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19z
aWduZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsK
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29u
c3QgaW50IHJhZGl4ID0gMjsKICAgICAgc3RhdGljIHNob3J0IGVwc2lsb24oKSB0aHJvdygpCiAg
ICAgIHsgcmV0dXJuIDA7IH0KICAgICAgc3RhdGljIHNob3J0IHJvdW5kX2Vycm9yKCkgdGhyb3co
KQogICAgICB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVu
dCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWluX2V4cG9uZW50MTAgPSAwOwogICAgICBz
dGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQg
bWF4X2V4cG9uZW50MTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2luZmluaXR5
ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19xdWlldF9OYU4gPSBmYWxzZTsK
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZTsKICAgICAg
c3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2Vu
dDsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2Rlbm9ybV9sb3NzID0gZmFsc2U7CgogICAg
ICBzdGF0aWMgc2hvcnQgaW5maW5pdHkoKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIHNob3J0KCk7
IH0KICAgICAgc3RhdGljIHNob3J0IHF1aWV0X05hTigpIHRocm93KCkKICAgICAgeyByZXR1cm4g
c2hvcnQoKTsgfQogICAgICBzdGF0aWMgc2hvcnQgc2lnbmFsaW5nX05hTigpIHRocm93KCkKICAg
ICAgeyByZXR1cm4gc2hvcnQoKTsgfQogICAgICBzdGF0aWMgc2hvcnQgZGVub3JtX21pbigpIHRo
cm93KCkKICAgICAgeyByZXR1cm4gc2hvcnQoKTsgfQoKICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNfaWVjNTU5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2JvdW5kZWQgPSB0
cnVlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19tb2R1bG8gPSB0cnVlOwoKICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgdHJhcHMgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCB0aW55
bmVzc19iZWZvcmUgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X3JvdW5kX3N0eWxl
IHJvdW5kX3N0eWxlID0gcm91bmRfdG93YXJkX3plcm87CiAgICB9OwoKCiAgdGVtcGxhdGU8Pgog
ICAgc3RydWN0IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIHNob3J0PgogICAgewogICAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRydWU7CgogICAgICBzdGF0aWMgdW5zaWdu
ZWQgc2hvcnQgbWluKCkgdGhyb3coKQogICAgICB7IHJldHVybiAwOyB9CiAgICAgIHN0YXRpYyB1
bnNpZ25lZCBzaG9ydCBtYXgoKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIDMyNzY3ICogMlUgKyAx
OyB9CgogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0cyA9IChzaXplb2YodW5zaWduZWQgc2hv
cnQpICogOCAtICgodW5zaWduZWQgc2hvcnQpKC0xKSA8IDApKTsKICAgICAgc3RhdGljIGNvbnN0
IGludCBkaWdpdHMxMCA9ICgoc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSAqIDggLSAoKHVuc2lnbmVk
IHNob3J0KSgtMSkgPCAwKSkgKiA2NDMgLyAyMTM2KTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNfc2lnbmVkID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2ludGVnZXIgPSB0
cnVlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19leGFjdCA9IHRydWU7CiAgICAgIHN0YXRp
YyBjb25zdCBpbnQgcmFkaXggPSAyOwogICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgZXBzaWxv
bigpIHRocm93KCkKICAgICAgeyByZXR1cm4gMDsgfQogICAgICBzdGF0aWMgdW5zaWduZWQgc2hv
cnQgcm91bmRfZXJyb3IoKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRp
YyBjb25zdCBpbnQgbWluX2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5f
ZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4X2V4cG9uZW50ID0gMDsK
ICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQxMCA9IDA7CgogICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNfaW5maW5pdHkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aGFzX3F1aWV0X05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfc2lnbmFs
aW5nX05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgZmxvYXRfZGVub3JtX3N0eWxlIGhh
c19kZW5vcm0gPSBkZW5vcm1fYWJzZW50OwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfZGVu
b3JtX2xvc3MgPSBmYWxzZTsKCiAgICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbmZpbml0eSgp
IHRocm93KCkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDApOyB9
CiAgICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBxdWlldF9OYU4oKSB0aHJvdygpCiAgICAgIHsg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PigwKTsgfQogICAgICBzdGF0aWMgdW5z
aWduZWQgc2hvcnQgc2lnbmFsaW5nX05hTigpIHRocm93KCkKICAgICAgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDApOyB9CiAgICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBk
ZW5vcm1fbWluKCkgdGhyb3coKQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBz
aG9ydD4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSA9IGZhbHNlOwog
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19ib3VuZGVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNfbW9kdWxvID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRyYXBz
ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7
CiAgICAgIHN0YXRpYyBjb25zdCBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZSA9IHJvdW5k
X3Rvd2FyZF96ZXJvOwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xp
bWl0czxpbnQ+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NwZWNpYWxpemVkID0g
dHJ1ZTsKCiAgICAgIHN0YXRpYyBpbnQgbWluKCkgdGhyb3coKQogICAgICB7IHJldHVybiAtMjE0
NzQ4MzY0NyAtIDE7IH0KICAgICAgc3RhdGljIGludCBtYXgoKSB0aHJvdygpCiAgICAgIHsgcmV0
dXJuIDIxNDc0ODM2NDc7IH0KCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzID0gKHNpemVv
ZihpbnQpICogOCAtICgoaW50KSgtMSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGln
aXRzMTAgPSAoKHNpemVvZihpbnQpICogOCAtICgoaW50KSgtMSkgPCAwKSkgKiA2NDMgLyAyMTM2
KTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsKICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlz
X2V4YWN0ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGludCByYWRpeCA9IDI7CiAgICAgIHN0
YXRpYyBpbnQgZXBzaWxvbigpIHRocm93KCkKICAgICAgeyByZXR1cm4gMDsgfQogICAgICBzdGF0
aWMgaW50IHJvdW5kX2Vycm9yKCkgdGhyb3coKQogICAgICB7IHJldHVybiAwOyB9CgogICAgICBz
dGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQg
bWluX2V4cG9uZW50MTAgPSAwOwogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudCA9
IDA7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4X2V4cG9uZW50MTAgPSAwOwoKICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc19xdWlldF9OYU4gPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX3Np
Z25hbGluZ19OYU4gPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHls
ZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2VudDsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFz
X2Rlbm9ybV9sb3NzID0gZmFsc2U7CgogICAgICBzdGF0aWMgaW50IGluZmluaXR5KCkgdGhyb3co
KQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDApOyB9CiAgICAgIHN0YXRpYyBpbnQg
cXVpZXRfTmFOKCkgdGhyb3coKQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDApOyB9
CiAgICAgIHN0YXRpYyBpbnQgc2lnbmFsaW5nX05hTigpIHRocm93KCkKICAgICAgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PigwKTsgfQogICAgICBzdGF0aWMgaW50IGRlbm9ybV9taW4oKSB0aHJv
dygpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oMCk7IH0KCiAgICAgIHN0YXRpYyBj
b25zdCBib29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19i
b3VuZGVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfbW9kdWxvID0gdHJ1ZTsK
CiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRyYXBzID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBmbG9hdF9y
b3VuZF9zdHlsZSByb3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96ZXJvOwogICAgfTsKCgogIHRl
bXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+CiAgICB7CiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRp
YyB1bnNpZ25lZCBpbnQgbWluKCkgdGhyb3coKQogICAgICB7IHJldHVybiAwOyB9CiAgICAgIHN0
YXRpYyB1bnNpZ25lZCBpbnQgbWF4KCkgdGhyb3coKQogICAgICB7IHJldHVybiAyMTQ3NDgzNjQ3
ICogMlUgKyAxOyB9CgogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0cyA9IChzaXplb2YodW5z
aWduZWQgaW50KSAqIDggLSAoKHVuc2lnbmVkIGludCkoLTEpIDwgMCkpOwogICAgICBzdGF0aWMg
Y29uc3QgaW50IGRpZ2l0czEwID0gKChzaXplb2YodW5zaWduZWQgaW50KSAqIDggLSAoKHVuc2ln
bmVkIGludCkoLTEpIDwgMCkpICogNjQzIC8gMjEzNik7CiAgICAgIHN0YXRpYyBjb25zdCBib29s
IGlzX3NpZ25lZCA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0g
dHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0
aWMgY29uc3QgaW50IHJhZGl4ID0gMjsKICAgICAgc3RhdGljIHVuc2lnbmVkIGludCBlcHNpbG9u
KCkgdGhyb3coKQogICAgICB7IHJldHVybiAwOyB9CiAgICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQg
cm91bmRfZXJyb3IoKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBj
b25zdCBpbnQgbWluX2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhw
b25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4X2V4cG9uZW50ID0gMDsKICAg
ICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQxMCA9IDA7CgogICAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNfaW5maW5pdHkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFz
X3F1aWV0X05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfc2lnbmFsaW5n
X05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19k
ZW5vcm0gPSBkZW5vcm1fYWJzZW50OwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfZGVub3Jt
X2xvc3MgPSBmYWxzZTsKCiAgICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW5maW5pdHkoKSB0aHJv
dygpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oMCk7IH0KICAgICAg
c3RhdGljIHVuc2lnbmVkIGludCBxdWlldF9OYU4oKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oMCk7IH0KICAgICAgc3RhdGljIHVuc2lnbmVkIGludCBz
aWduYWxpbmdfTmFOKCkgdGhyb3coKQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KDApOyB9CiAgICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgZGVub3JtX21pbigpIHRocm93
KCkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PigwKTsgfQoKICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNfaWVjNTU5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzX2JvdW5kZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19tb2R1bG8g
PSB0cnVlOwoKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdHJhcHMgPSB0cnVlOwogICAgICBzdGF0
aWMgY29uc3QgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0
IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlID0gcm91bmRfdG93YXJkX3plcm87CiAgICB9
OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPGxvbmc+CiAgICB7CiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRp
YyBsb25nIG1pbigpIHRocm93KCkKICAgICAgeyByZXR1cm4gLTkyMjMzNzIwMzY4NTQ3NzU4MDdM
IC0gMTsgfQogICAgICBzdGF0aWMgbG9uZyBtYXgoKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIDky
MjMzNzIwMzY4NTQ3NzU4MDdMOyB9CgogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0cyA9IChz
aXplb2YobG9uZykgKiA4IC0gKChsb25nKSgtMSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdCBp
bnQgZGlnaXRzMTAgPSAoKHNpemVvZihsb25nKSAqIDggLSAoKGxvbmcpKC0xKSA8IDApKSAqIDY0
MyAvIDIxMzYpOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zaWduZWQgPSB0cnVlOwogICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgaW50IHJhZGl4ID0gMjsK
ICAgICAgc3RhdGljIGxvbmcgZXBzaWxvbigpIHRocm93KCkKICAgICAgeyByZXR1cm4gMDsgfQog
ICAgICBzdGF0aWMgbG9uZyByb3VuZF9lcnJvcigpIHRocm93KCkKICAgICAgeyByZXR1cm4gMDsg
fQoKICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMg
Y29uc3QgaW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhf
ZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudDEwID0gMDsK
CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19pbmZpbml0eSA9IGZhbHNlOwogICAgICBzdGF0
aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBmbG9hdF9k
ZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybSA9IGRlbm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGxvbmcgaW5maW5p
dHkoKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KDApOyB9CiAgICAg
IHN0YXRpYyBsb25nIHF1aWV0X05hTigpIHRocm93KCkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8bG9uZz4oMCk7IH0KICAgICAgc3RhdGljIGxvbmcgc2lnbmFsaW5nX05hTigpIHRocm93KCkK
ICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4oMCk7IH0KICAgICAgc3RhdGljIGxvbmcg
ZGVub3JtX21pbigpIHRocm93KCkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4oMCk7
IH0KCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc19ib3VuZGVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNfbW9kdWxvID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRyYXBzID0gdHJ1ZTsK
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0
YXRpYyBjb25zdCBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96
ZXJvOwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czx1bnNp
Z25lZCBsb25nPgogICAgewogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zcGVjaWFsaXplZCA9
IHRydWU7CgogICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBtaW4oKSB0aHJvdygpCiAgICAgIHsg
cmV0dXJuIDA7IH0KICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbWF4KCkgdGhyb3coKQogICAg
ICB7IHJldHVybiA5MjIzMzcyMDM2ODU0Nzc1ODA3TCAqIDJVTCArIDE7IH0KCiAgICAgIHN0YXRp
YyBjb25zdCBpbnQgZGlnaXRzID0gKHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDggLSAoKHVuc2ln
bmVkIGxvbmcpKC0xKSA8IDApKTsKICAgICAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMxMCA9ICgo
c2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogOCAtICgodW5zaWduZWQgbG9uZykoLTEpIDwgMCkpICog
NjQzIC8gMjEzNik7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9IGZhbHNlOwog
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsKICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgaW50IHJhZGl4ID0g
MjsKICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZXBzaWxvbigpIHRocm93KCkKICAgICAgeyBy
ZXR1cm4gMDsgfQogICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyByb3VuZF9lcnJvcigpIHRocm93
KCkKICAgICAgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25l
bnQgPSAwOwogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAg
c3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3QgaW50
IG1heF9leHBvbmVudDEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19pbmZpbml0
eSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7
CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CiAgICAg
IHN0YXRpYyBjb25zdCBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybSA9IGRlbm9ybV9hYnNl
bnQ7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAg
ICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaW5maW5pdHkoKSB0aHJvdygpCiAgICAgIHsgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KDApOyB9CiAgICAgIHN0YXRpYyB1bnNpZ25lZCBs
b25nIHF1aWV0X05hTigpIHRocm93KCkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZz4oMCk7IH0KICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc2lnbmFsaW5nX05hTigp
IHRocm93KCkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oMCk7IH0K
ICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGVub3JtX21pbigpIHRocm93KCkKICAgICAgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19ib3Vu
ZGVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfbW9kdWxvID0gdHJ1ZTsKCiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIHRyYXBzID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBmbG9hdF9yb3Vu
ZF9zdHlsZSByb3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96ZXJvOwogICAgfTsKCgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czxsb25nIGxvbmc+CiAgICB7CiAgICAgIHN0
YXRpYyBjb25zdCBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBsb25n
IGxvbmcgbWluKCkgdGhyb3coKQogICAgICB7IHJldHVybiAtOTIyMzM3MjAzNjg1NDc3NTgwN0xM
IC0gMTsgfQogICAgICBzdGF0aWMgbG9uZyBsb25nIG1heCgpIHRocm93KCkKICAgICAgeyByZXR1
cm4gOTIyMzM3MjAzNjg1NDc3NTgwN0xMOyB9CgogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0
cyA9IChzaXplb2YobG9uZyBsb25nKSAqIDggLSAoKGxvbmcgbG9uZykoLTEpIDwgMCkpOwogICAg
ICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0czEwID0gKChzaXplb2YobG9uZyBsb25nKSAqIDggLSAo
KGxvbmcgbG9uZykoLTEpIDwgMCkpICogNjQzIC8gMjEzNik7CiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzX3NpZ25lZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2ludGVnZXIg
PSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19leGFjdCA9IHRydWU7CiAgICAgIHN0
YXRpYyBjb25zdCBpbnQgcmFkaXggPSAyOwogICAgICBzdGF0aWMgbG9uZyBsb25nIGVwc2lsb24o
KSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIDA7IH0KICAgICAgc3RhdGljIGxvbmcgbG9uZyByb3Vu
ZF9lcnJvcigpIHRocm93KCkKICAgICAgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0
IGludCBtaW5fZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVu
dDEwID0gMDsKICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQgPSAwOwogICAgICBz
dGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudDEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc19pbmZpbml0eSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVp
ZXRfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFO
ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9y
bSA9IGRlbm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19kZW5vcm1fbG9z
cyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGxvbmcgbG9uZyBpbmZpbml0eSgpIHRocm93KCkKICAg
ICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigwKTsgfQogICAgICBzdGF0aWMgbG9u
ZyBsb25nIHF1aWV0X05hTigpIHRocm93KCkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8bG9u
ZyBsb25nPigwKTsgfQogICAgICBzdGF0aWMgbG9uZyBsb25nIHNpZ25hbGluZ19OYU4oKSB0aHJv
dygpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMCk7IH0KICAgICAgc3Rh
dGljIGxvbmcgbG9uZyBkZW5vcm1fbWluKCkgdGhyb3coKQogICAgICB7IHJldHVybiBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pZWM1NTkg
PSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfYm91bmRlZCA9IHRydWU7CiAgICAg
IHN0YXRpYyBjb25zdCBib29sIGlzX21vZHVsbyA9IHRydWU7CgogICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCB0cmFwcyA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRpbnluZXNzX2JlZm9y
ZSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5
bGUgPSByb3VuZF90b3dhcmRfemVybzsKICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3Qg
bnVtZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZyBsb25nPgogICAgewogICAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRydWU7CgogICAgICBzdGF0aWMgdW5zaWduZWQgbG9u
ZyBsb25nIG1pbigpIHRocm93KCkKICAgICAgeyByZXR1cm4gMDsgfQogICAgICBzdGF0aWMgdW5z
aWduZWQgbG9uZyBsb25nIG1heCgpIHRocm93KCkKICAgICAgeyByZXR1cm4gOTIyMzM3MjAzNjg1
NDc3NTgwN0xMICogMlVMTCArIDE7IH0KCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzID0g
KHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpICogOCAtICgodW5zaWduZWQgbG9uZyBsb25nKSgt
MSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzMTAgPSAoKHNpemVvZih1bnNp
Z25lZCBsb25nIGxvbmcpICogOCAtICgodW5zaWduZWQgbG9uZyBsb25nKSgtMSkgPCAwKSkgKiA2
NDMgLyAyMTM2KTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc2lnbmVkID0gZmFsc2U7CiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2ludGVnZXIgPSB0cnVlOwogICAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc19leGFjdCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgcmFkaXggPSAy
OwogICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGVwc2lsb24oKSB0aHJvdygpCiAgICAg
IHsgcmV0dXJuIDA7IH0KICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyByb3VuZF9lcnJv
cigpIHRocm93KCkKICAgICAgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0IGludCBt
aW5fZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudDEwID0g
MDsKICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMg
Y29uc3QgaW50IG1heF9leHBvbmVudDEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c19pbmZpbml0eSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFO
ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFs
c2U7CiAgICAgIHN0YXRpYyBjb25zdCBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybSA9IGRl
bm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZh
bHNlOwoKICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmZpbml0eSgpIHRocm93KCkK
ICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPigwKTsgfQogICAg
ICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHF1aWV0X05hTigpIHRocm93KCkKICAgICAgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPigwKTsgfQogICAgICBzdGF0aWMg
dW5zaWduZWQgbG9uZyBsb25nIHNpZ25hbGluZ19OYU4oKSB0aHJvdygpCiAgICAgIHsgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oMCk7IH0KICAgICAgc3RhdGljIHVuc2ln
bmVkIGxvbmcgbG9uZyBkZW5vcm1fbWluKCkgdGhyb3coKQogICAgICB7IHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c19pZWM1NTkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfYm91bmRlZCA9IHRy
dWU7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX21vZHVsbyA9IHRydWU7CgogICAgICBzdGF0
aWMgY29uc3QgYm9vbCB0cmFwcyA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRpbnlu
ZXNzX2JlZm9yZSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3QgZmxvYXRfcm91bmRfc3R5bGUg
cm91bmRfc3R5bGUgPSByb3VuZF90b3dhcmRfemVybzsKICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAg
ICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8ZmxvYXQ+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBmbG9hdCBtaW4oKSB0aHJv
dygpCiAgICAgIHsgcmV0dXJuIDEuMTc1NDk0MzVlLTM4RjsgfQogICAgICBzdGF0aWMgZmxvYXQg
bWF4KCkgdGhyb3coKQogICAgICB7IHJldHVybiAzLjQwMjgyMzQ3ZSszOEY7IH0KCiAgICAgIHN0
YXRpYyBjb25zdCBpbnQgZGlnaXRzID0gMjQ7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRz
MTAgPSA2OwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zaWduZWQgPSB0cnVlOwogICAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzX2V4YWN0ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgcmFkaXggPSAyOwog
ICAgICBzdGF0aWMgZmxvYXQgZXBzaWxvbigpIHRocm93KCkKICAgICAgeyByZXR1cm4gMS4xOTIw
OTI5MGUtN0Y7IH0KICAgICAgc3RhdGljIGZsb2F0IHJvdW5kX2Vycm9yKCkgdGhyb3coKQogICAg
ICB7IHJldHVybiAwLjVGOyB9CgogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudCA9
ICgtMTI1KTsKICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQxMCA9ICgtMzcpOwog
ICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudCA9IDEyODsKICAgICAgc3RhdGljIGNv
bnN0IGludCBtYXhfZXhwb25lbnQxMCA9IDM4OwoKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFz
X2luZmluaXR5ID0gMTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX3F1aWV0X05hTiA9IDE7
CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gaGFzX3F1aWV0X05h
TjsKICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtCiA9IGJv
b2woMSkgPyBkZW5vcm1fcHJlc2VudCA6IGRlbm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGZsb2F0IGluZmlu
aXR5KCkgdGhyb3coKQogICAgICB7IHJldHVybiBfX2J1aWx0aW5faHVnZV92YWxmICgpOyB9CiAg
ICAgIHN0YXRpYyBmbG9hdCBxdWlldF9OYU4oKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIF9fYnVp
bHRpbl9uYW5mICgiIik7IH0KICAgICAgc3RhdGljIGZsb2F0IHNpZ25hbGluZ19OYU4oKSB0aHJv
dygpCiAgICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9uYW5zZiAoIiIpOyB9CiAgICAgIHN0YXRpYyBm
bG9hdCBkZW5vcm1fbWluKCkgdGhyb3coKQogICAgICB7IHJldHVybiAxLjQwMTI5ODQ2ZS00NUY7
IH0KCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2llYzU1OQogPSBoYXNfaW5maW5pdHkgJiYg
aGFzX3F1aWV0X05hTiAmJiBoYXNfZGVub3JtID09IGRlbm9ybV9wcmVzZW50OwogICAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc19ib3VuZGVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNfbW9kdWxvID0gZmFsc2U7CgogICAgICBzdGF0aWMgY29uc3QgYm9vbCB0cmFwcyA9IGZhbHNl
OwogICAgICBzdGF0aWMgY29uc3QgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICAgICAg
c3RhdGljIGNvbnN0IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlID0gcm91bmRfdG9fbmVh
cmVzdDsKICAgIH07CgojdW5kZWYgX19nbGliY3h4X2Zsb2F0X2hhc19kZW5vcm1fbG9zcwojdW5k
ZWYgX19nbGliY3h4X2Zsb2F0X3RyYXBzCiN1bmRlZiBfX2dsaWJjeHhfZmxvYXRfdGlueW5lc3Nf
YmVmb3JlCgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8ZG91YmxlPgog
ICAgewogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRydWU7CgogICAg
ICBzdGF0aWMgZG91YmxlIG1pbigpIHRocm93KCkKICAgICAgeyByZXR1cm4gMi4yMjUwNzM4NTg1
MDcyMDE0ZS0zMDg7IH0KICAgICAgc3RhdGljIGRvdWJsZSBtYXgoKSB0aHJvdygpCiAgICAgIHsg
cmV0dXJuIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4OyB9CgogICAgICBzdGF0aWMgY29uc3QgaW50
IGRpZ2l0cyA9IDUzOwogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0czEwID0gMTU7CiAgICAg
IHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzX2ludGVnZXIgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfZXhhY3Qg
PSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0IGludCByYWRpeCA9IDI7CiAgICAgIHN0YXRpYyBk
b3VibGUgZXBzaWxvbigpIHRocm93KCkKICAgICAgeyByZXR1cm4gMi4yMjA0NDYwNDkyNTAzMTMx
ZS0xNjsgfQogICAgICBzdGF0aWMgZG91YmxlIHJvdW5kX2Vycm9yKCkgdGhyb3coKQogICAgICB7
IHJldHVybiAwLjU7IH0KCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWluX2V4cG9uZW50ID0gKC0x
MDIxKTsKICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQxMCA9ICgtMzA3KTsKICAg
ICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQgPSAxMDI0OwogICAgICBzdGF0aWMgY29u
c3QgaW50IG1heF9leHBvbmVudDEwID0gMzA4OwoKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFz
X2luZmluaXR5ID0gMTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX3F1aWV0X05hTiA9IDE7
CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gaGFzX3F1aWV0X05h
TjsKICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtCiA9IGJv
b2woMSkgPyBkZW5vcm1fcHJlc2VudCA6IGRlbm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGRvdWJsZSBpbmZp
bml0eSgpIHRocm93KCkKICAgICAgeyByZXR1cm4gX19idWlsdGluX2h1Z2VfdmFsKCk7IH0KICAg
ICAgc3RhdGljIGRvdWJsZSBxdWlldF9OYU4oKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIF9fYnVp
bHRpbl9uYW4gKCIiKTsgfQogICAgICBzdGF0aWMgZG91YmxlIHNpZ25hbGluZ19OYU4oKSB0aHJv
dygpCiAgICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9uYW5zICgiIik7IH0KICAgICAgc3RhdGljIGRv
dWJsZSBkZW5vcm1fbWluKCkgdGhyb3coKQogICAgICB7IHJldHVybiA0Ljk0MDY1NjQ1ODQxMjQ2
NTRlLTMyNDsgfQoKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaWVjNTU5CiA9IGhhc19pbmZp
bml0eSAmJiBoYXNfcXVpZXRfTmFOICYmIGhhc19kZW5vcm0gPT0gZGVub3JtX3ByZXNlbnQ7CiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2JvdW5kZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc19tb2R1bG8gPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRyYXBz
ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNl
OwogICAgICBzdGF0aWMgY29uc3QgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUgPSByb3Vu
ZF90b19uZWFyZXN0OwogICAgfTsKCiN1bmRlZiBfX2dsaWJjeHhfZG91YmxlX2hhc19kZW5vcm1f
bG9zcwojdW5kZWYgX19nbGliY3h4X2RvdWJsZV90cmFwcwojdW5kZWYgX19nbGliY3h4X2RvdWJs
ZV90aW55bmVzc19iZWZvcmUKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0
czxsb25nIGRvdWJsZT4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc3BlY2lhbGl6
ZWQgPSB0cnVlOwoKICAgICAgc3RhdGljIGxvbmcgZG91YmxlIG1pbigpIHRocm93KCkKICAgICAg
eyByZXR1cm4gMy4zNjIxMDMxNDMxMTIwOTM1MDYyNmUtNDkzMkw7IH0KICAgICAgc3RhdGljIGxv
bmcgZG91YmxlIG1heCgpIHRocm93KCkKICAgICAgeyByZXR1cm4gMS4xODk3MzE0OTUzNTcyMzE3
NjUwMmUrNDkzMkw7IH0KCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzID0gNjQ7CiAgICAg
IHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzMTAgPSAxODsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNfc2lnbmVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9IGZh
bHNlOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19leGFjdCA9IGZhbHNlOwogICAgICBzdGF0
aWMgY29uc3QgaW50IHJhZGl4ID0gMjsKICAgICAgc3RhdGljIGxvbmcgZG91YmxlIGVwc2lsb24o
KSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIDEuMDg0MjAyMTcyNDg1NTA0NDM0MDFlLTE5TDsgfQog
ICAgICBzdGF0aWMgbG9uZyBkb3VibGUgcm91bmRfZXJyb3IoKSB0aHJvdygpCiAgICAgIHsgcmV0
dXJuIDAuNUw7IH0KCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWluX2V4cG9uZW50ID0gKC0xNjM4
MSk7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWluX2V4cG9uZW50MTAgPSAoLTQ5MzEpOwogICAg
ICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudCA9IDE2Mzg0OwogICAgICBzdGF0aWMgY29u
c3QgaW50IG1heF9leHBvbmVudDEwID0gNDkzMjsKCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c19pbmZpbml0eSA9IDE7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19xdWlldF9OYU4gPSAx
OwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGhhc19xdWlldF9O
YU47CiAgICAgIHN0YXRpYyBjb25zdCBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybQogPSBi
b29sKDEpID8gZGVub3JtX3ByZXNlbnQgOiBkZW5vcm1fYWJzZW50OwogICAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNfZGVub3JtX2xvc3MKID0gZmFsc2U7CgogICAgICBzdGF0aWMgbG9uZyBkb3Vi
bGUgaW5maW5pdHkoKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9odWdlX3ZhbGwg
KCk7IH0KICAgICAgc3RhdGljIGxvbmcgZG91YmxlIHF1aWV0X05hTigpIHRocm93KCkKICAgICAg
eyByZXR1cm4gX19idWlsdGluX25hbmwgKCIiKTsgfQogICAgICBzdGF0aWMgbG9uZyBkb3VibGUg
c2lnbmFsaW5nX05hTigpIHRocm93KCkKICAgICAgeyByZXR1cm4gX19idWlsdGluX25hbnNsICgi
Iik7IH0KICAgICAgc3RhdGljIGxvbmcgZG91YmxlIGRlbm9ybV9taW4oKSB0aHJvdygpCiAgICAg
IHsgcmV0dXJuIDMuNjQ1MTk5NTMxODgyNDc0NjAyNTNlLTQ5NTFMOyB9CgogICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc19pZWM1NTkKID0gaGFzX2luZmluaXR5ICYmIGhhc19xdWlldF9OYU4gJiYg
aGFzX2Rlbm9ybSA9PSBkZW5vcm1fcHJlc2VudDsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNf
Ym91bmRlZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX21vZHVsbyA9IGZhbHNl
OwoKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdHJhcHMgPSBmYWxzZTsKICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdCBmbG9h
dF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZSA9IHJvdW5kX3RvX25lYXJlc3Q7CiAgICB9OwoKI3Vu
ZGVmIF9fZ2xpYmN4eF9sb25nX2RvdWJsZV9oYXNfZGVub3JtX2xvc3MKI3VuZGVmIF9fZ2xpYmN4
eF9sb25nX2RvdWJsZV90cmFwcwojdW5kZWYgX19nbGliY3h4X2xvbmdfZG91YmxlX3RpbnluZXNz
X2JlZm9yZQoKfQoKI3VuZGVmIF9fZ2xpYmN4eF9zaWduZWQKI3VuZGVmIF9fZ2xpYmN4eF9taW4K
I3VuZGVmIF9fZ2xpYmN4eF9tYXgKI3VuZGVmIF9fZ2xpYmN4eF9kaWdpdHMKI3VuZGVmIF9fZ2xp
YmN4eF9kaWdpdHMxMAojIDYxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL21lbW9yeSIgMiAzCgpu
YW1lc3BhY2Ugc3RkIHsKIyA3MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9tZW1vcnkiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBwYWlyPF9UcCosIHB0cmRpZmZfdD4KICAgIF9fZ2V0
X3RlbXBvcmFyeV9idWZmZXIocHRyZGlmZl90IF9fbGVuLCBfVHAqKQogICAgewogICAgICBjb25z
dCBwdHJkaWZmX3QgX19tYXggPSBudW1lcmljX2xpbWl0czxwdHJkaWZmX3Q+OjptYXgoKSAvIHNp
emVvZihfVHApOwogICAgICBpZiAoX19sZW4gPiBfX21heCkKIF9fbGVuID0gX19tYXg7CgogICAg
ICB3aGlsZSAoX19sZW4gPiAwKQogewogICBfVHAqIF9fdG1wID0gc3RhdGljX2Nhc3Q8X1RwKj4o
OjpvcGVyYXRvciBuZXcoX19sZW4gKiBzaXplb2YoX1RwKSwKICAgICAgIG5vdGhyb3cpKTsKICAg
aWYgKF9fdG1wICE9IDApCiAgICAgcmV0dXJuIHBhaXI8X1RwKiwgcHRyZGlmZl90PihfX3RtcCwg
X19sZW4pOwogICBfX2xlbiAvPSAyOwogfQogICAgICByZXR1cm4gcGFpcjxfVHAqLCBwdHJkaWZm
X3Q+KHN0YXRpY19jYXN0PF9UcCo+KDApLCAwKTsKICAgIH0KIyAxMDggIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvbWVtb3J5IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHBh
aXI8X1RwKiwgcHRyZGlmZl90PgogICAgZ2V0X3RlbXBvcmFyeV9idWZmZXIocHRyZGlmZl90IF9f
bGVuKQogICAgeyByZXR1cm4gc3RkOjpfX2dldF90ZW1wb3JhcnlfYnVmZmVyKF9fbGVuLCBzdGF0
aWNfY2FzdDxfVHAqPigwKSk7IH0KIyAxMjAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvbWVtb3J5
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgdm9pZAogICAgcmV0dXJuX3RlbXBvcmFy
eV9idWZmZXIoX1RwKiBfX3ApCiAgICB7IDo6b3BlcmF0b3IgZGVsZXRlKF9fcCwgbm90aHJvdyk7
IH0KIyAxMzIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvbWVtb3J5IiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwMT4KICAgIHN0cnVjdCBhdXRvX3B0cl9yZWYKICAgIHsKICAgICAgX1RwMSogX01f
cHRyOwoKICAgICAgZXhwbGljaXQKICAgICAgYXV0b19wdHJfcmVmKF9UcDEqIF9fcCk6IF9NX3B0
cihfX3ApIHsgfQogICAgfTsKIyAxNzMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvbWVtb3J5IiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY2xhc3MgYXV0b19wdHIKICAgIHsKICAgIHBy
aXZhdGU6CiAgICAgIF9UcCogX01fcHRyOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX1Rw
IGVsZW1lbnRfdHlwZTsKCgoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIGF1dG9fcHRyKGVsZW1l
bnRfdHlwZSogX19wID0gMCkgdGhyb3coKSA6IF9NX3B0cihfX3ApIHsgfQojIDE5OSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9tZW1vcnkiIDMKICAgICAgYXV0b19wdHIoYXV0b19wdHImIF9fYSkg
dGhyb3coKSA6IF9NX3B0cihfX2EucmVsZWFzZSgpKSB7IH0KIyAyMTEgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvbWVtb3J5IiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiAgICAgICAg
YXV0b19wdHIoYXV0b19wdHI8X1RwMT4mIF9fYSkgdGhyb3coKSA6IF9NX3B0cihfX2EucmVsZWFz
ZSgpKSB7IH0KIyAyMjIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvbWVtb3J5IiAzCiAgICAgIGF1
dG9fcHRyJgogICAgICBvcGVyYXRvcj0oYXV0b19wdHImIF9fYSkgdGhyb3coKQogICAgICB7CiBy
ZXNldChfX2EucmVsZWFzZSgpKTsKIHJldHVybiAqdGhpczsKICAgICAgfQojIDIzOSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9tZW1vcnkiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4K
ICAgICAgICBhdXRvX3B0ciYKICAgICAgICBvcGVyYXRvcj0oYXV0b19wdHI8X1RwMT4mIF9fYSkg
dGhyb3coKQogICAgICAgIHsKICAgcmVzZXQoX19hLnJlbGVhc2UoKSk7CiAgIHJldHVybiAqdGhp
czsKIH0KIyAyNTkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvbWVtb3J5IiAzCiAgICAgIH5hdXRv
X3B0cigpIHsgZGVsZXRlIF9NX3B0cjsgfQojIDI2OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9t
ZW1vcnkiIDMKICAgICAgZWxlbWVudF90eXBlJgogICAgICBvcGVyYXRvciooKSBjb25zdCB0aHJv
dygpCiAgICAgIHsKIDsKIHJldHVybiAqX01fcHRyOwogICAgICB9CgoKCgoKCgogICAgICBlbGVt
ZW50X3R5cGUqCiAgICAgIG9wZXJhdG9yLT4oKSBjb25zdCB0aHJvdygpCiAgICAgIHsKIDsKIHJl
dHVybiBfTV9wdHI7CiAgICAgIH0KIyAyOTkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvbWVtb3J5
IiAzCiAgICAgIGVsZW1lbnRfdHlwZSoKICAgICAgZ2V0KCkgY29uc3QgdGhyb3coKSB7IHJldHVy
biBfTV9wdHI7IH0KIyAzMTMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvbWVtb3J5IiAzCiAgICAg
IGVsZW1lbnRfdHlwZSoKICAgICAgcmVsZWFzZSgpIHRocm93KCkKICAgICAgewogZWxlbWVudF90
eXBlKiBfX3RtcCA9IF9NX3B0cjsKIF9NX3B0ciA9IDA7CiByZXR1cm4gX190bXA7CiAgICAgIH0K
IyAzMjggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvbWVtb3J5IiAzCiAgICAgIHZvaWQKICAgICAg
cmVzZXQoZWxlbWVudF90eXBlKiBfX3AgPSAwKSB0aHJvdygpCiAgICAgIHsKIGlmIChfX3AgIT0g
X01fcHRyKQogICB7CiAgICAgZGVsZXRlIF9NX3B0cjsKICAgICBfTV9wdHIgPSBfX3A7CiAgIH0K
ICAgICAgfQojIDM0OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9tZW1vcnkiIDMKICAgICAgYXV0
b19wdHIoYXV0b19wdHJfcmVmPGVsZW1lbnRfdHlwZT4gX19yZWYpIHRocm93KCkKICAgICAgOiBf
TV9wdHIoX19yZWYuX01fcHRyKSB7IH0KCiAgICAgIGF1dG9fcHRyJgogICAgICBvcGVyYXRvcj0o
YXV0b19wdHJfcmVmPGVsZW1lbnRfdHlwZT4gX19yZWYpIHRocm93KCkKICAgICAgewogaWYgKF9f
cmVmLl9NX3B0ciAhPSB0aGlzLT5nZXQoKSkKICAgewogICAgIGRlbGV0ZSBfTV9wdHI7CiAgICAg
X01fcHRyID0gX19yZWYuX01fcHRyOwogICB9CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiAgICAgICAgb3BlcmF0b3IgYXV0b19wdHJfcmVmPF9U
cDE+KCkgdGhyb3coKQogICAgICAgIHsgcmV0dXJuIGF1dG9fcHRyX3JlZjxfVHAxPih0aGlzLT5y
ZWxlYXNlKCkpOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogICAgICAgIG9wZXJh
dG9yIGF1dG9fcHRyPF9UcDE+KCkgdGhyb3coKQogICAgICAgIHsgcmV0dXJuIGF1dG9fcHRyPF9U
cDE+KHRoaXMtPnJlbGVhc2UoKSk7IH0KICB9OwoKfQojIDY2ICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvc3RsX3RlbXBidWYuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIHsKIyA3NiAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF90ZW1wYnVmLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICBjbGFzcyBfVGVtcG9yYXJ5X2J1
ZmZlcgogICAgewoKICAgICAKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5
cGU7CiAgICAgIHR5cGVkZWYgdmFsdWVfdHlwZSogcG9pbnRlcjsKICAgICAgdHlwZWRlZiBwb2lu
dGVyIGl0ZXJhdG9yOwogICAgICB0eXBlZGVmIHB0cmRpZmZfdCBzaXplX3R5cGU7CgogICAgcHJv
dGVjdGVkOgogICAgICBzaXplX3R5cGUgX01fb3JpZ2luYWxfbGVuOwogICAgICBzaXplX3R5cGUg
X01fbGVuOwogICAgICBwb2ludGVyIF9NX2J1ZmZlcjsKCiAgICAgIHZvaWQKICAgICAgX01faW5p
dGlhbGl6ZV9idWZmZXIoY29uc3QgX1RwJiwgX190cnVlX3R5cGUpIHsgfQoKICAgICAgdm9pZAog
ICAgICBfTV9pbml0aWFsaXplX2J1ZmZlcihjb25zdCBfVHAmIF9fdmFsLCBfX2ZhbHNlX3R5cGUp
CiAgICAgIHsgc3RkOjp1bmluaXRpYWxpemVkX2ZpbGxfbihfTV9idWZmZXIsIF9NX2xlbiwgX192
YWwpOyB9CgogICAgcHVibGljOgoKICAgICAgc2l6ZV90eXBlCiAgICAgIHNpemUoKSBjb25zdAog
ICAgICB7IHJldHVybiBfTV9sZW47IH0KCgogICAgICBzaXplX3R5cGUKICAgICAgcmVxdWVzdGVk
X3NpemUoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9vcmlnaW5hbF9sZW47IH0KCgogICAgICBp
dGVyYXRvcgogICAgICBiZWdpbigpCiAgICAgIHsgcmV0dXJuIF9NX2J1ZmZlcjsgfQoKCiAgICAg
IGl0ZXJhdG9yCiAgICAgIGVuZCgpCiAgICAgIHsgcmV0dXJuIF9NX2J1ZmZlciArIF9NX2xlbjsg
fQoKCgoKCiAgICAgIF9UZW1wb3JhcnlfYnVmZmVyKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwg
X0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpOwoKICAgICAgfl9UZW1wb3JhcnlfYnVmZmVyKCkKICAg
ICAgewogc3RkOjpfRGVzdHJveShfTV9idWZmZXIsIF9NX2J1ZmZlciArIF9NX2xlbik7CiBzdGQ6
OnJldHVybl90ZW1wb3JhcnlfYnVmZmVyKF9NX2J1ZmZlcik7CiAgICAgIH0KCiAgICBwcml2YXRl
OgoKICAgICAgX1RlbXBvcmFyeV9idWZmZXIoY29uc3QgX1RlbXBvcmFyeV9idWZmZXImKTsKCiAg
ICAgIHZvaWQKICAgICAgb3BlcmF0b3I9KGNvbnN0IF9UZW1wb3JhcnlfYnVmZmVyJik7CiAgICB9
OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgog
ICAgX1RlbXBvcmFyeV9idWZmZXI8X0ZvcndhcmRJdGVyYXRvciwgX1RwPjo6CiAgICBfVGVtcG9y
YXJ5X2J1ZmZlcihfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19s
YXN0KQogICAgOiBfTV9vcmlnaW5hbF9sZW4oc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3Qp
KSwKICAgICAgX01fbGVuKDApLCBfTV9idWZmZXIoMCkKICAgIHsKCiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgc3RkOjpfX2lzX3NjYWxhcjxfVHA+OjpfX3R5cGUgX1RyaXZpYWw7CgogICAgICB0cnkK
IHsKICAgcGFpcjxwb2ludGVyLCBzaXplX3R5cGU+IF9fcChnZXRfdGVtcG9yYXJ5X2J1ZmZlcjwK
ICAgICAgICAgICB2YWx1ZV90eXBlPihfTV9vcmlnaW5hbF9sZW4pKTsKICAgX01fYnVmZmVyID0g
X19wLmZpcnN0OwogICBfTV9sZW4gPSBfX3Auc2Vjb25kOwogICBpZiAoX01fbGVuID4gMCkKICAg
ICBfTV9pbml0aWFsaXplX2J1ZmZlcigqX19maXJzdCwgX1RyaXZpYWwoKSk7CiB9CiAgICAgIGNh
dGNoKC4uLikKIHsKICAgc3RkOjpyZXR1cm5fdGVtcG9yYXJ5X2J1ZmZlcihfTV9idWZmZXIpOwog
ICBfTV9idWZmZXIgPSAwOwogICBfTV9sZW4gPSAwOwogICB0aHJvdzsKIH0KICAgIH0KCn0KIyA2
NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDIgMwoKCgoKbmFtZXNw
YWNlIHN0ZCB7CiMgODUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbnN0IF9UcCYKICAgIF9fbWVk
aWFuKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYiwgY29uc3QgX1RwJiBfX2MpCiAgICB7
CgogICAgIAogICAgICBpZiAoX19hIDwgX19iKQogaWYgKF9fYiA8IF9fYykKICAgcmV0dXJuIF9f
YjsKIGVsc2UgaWYgKF9fYSA8IF9fYykKICAgcmV0dXJuIF9fYzsKIGVsc2UKICAgcmV0dXJuIF9f
YTsKICAgICAgZWxzZSBpZiAoX19hIDwgX19jKQogcmV0dXJuIF9fYTsKICAgICAgZWxzZSBpZiAo
X19iIDwgX19jKQogcmV0dXJuIF9fYzsKICAgICAgZWxzZQogcmV0dXJuIF9fYjsKICAgIH0KIyAx
MTkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSBjb25zdCBfVHAmCiAg
ICBfX21lZGlhbihjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IsIGNvbnN0IF9UcCYgX19j
LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAogICAgICBpZiAoX19jb21wKF9fYSwgX19i
KSkKIGlmIChfX2NvbXAoX19iLCBfX2MpKQogICByZXR1cm4gX19iOwogZWxzZSBpZiAoX19jb21w
KF9fYSwgX19jKSkKICAgcmV0dXJuIF9fYzsKIGVsc2UKICAgcmV0dXJuIF9fYTsKICAgICAgZWxz
ZSBpZiAoX19jb21wKF9fYSwgX19jKSkKIHJldHVybiBfX2E7CiAgICAgIGVsc2UgaWYgKF9fY29t
cChfX2IsIF9fYykpCiByZXR1cm4gX19jOwogICAgICBlbHNlCiByZXR1cm4gX19iOwogICAgfQoj
IDE1MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX0Z1bmN0aW9uPgogICAgX0Z1bmN0
aW9uCiAgICBmb3JfZWFjaChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBf
X2xhc3QsIF9GdW5jdGlvbiBfX2YpCiAgICB7CgogICAgIAogICAgICA7CiAgICAgIGZvciAoIDsg
X19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKIF9fZigqX19maXJzdCk7CiAgICAgIHJldHVy
biBfX2Y7CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5
cGVuYW1lIF9UcD4KICAgIGlubGluZSBfSW5wdXRJdGVyYXRvcgogICAgX19maW5kKF9JbnB1dEl0
ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgIGNvbnN0IF9UcCYgX192
YWwsIGlucHV0X2l0ZXJhdG9yX3RhZykKICAgIHsKICAgICAgd2hpbGUgKF9fZmlyc3QgIT0gX19s
YXN0ICYmICEoKl9fZmlyc3QgPT0gX192YWwpKQogKytfX2ZpcnN0OwogICAgICByZXR1cm4gX19m
aXJzdDsKICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlw
ZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGlubGluZSBfSW5wdXRJdGVyYXRvcgogICAgX19maW5kX2lm
KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9Q
cmVkaWNhdGUgX19wcmVkLCBpbnB1dF9pdGVyYXRvcl90YWcpCiAgICB7CiAgICAgIHdoaWxlIChf
X2ZpcnN0ICE9IF9fbGFzdCAmJiAhX19wcmVkKCpfX2ZpcnN0KSkKICsrX19maXJzdDsKICAgICAg
cmV0dXJuIF9fZmlyc3Q7CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IKICAg
IF9fZmluZChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fbGFzdCwKICAgIGNvbnN0IF9UcCYgX192YWwsIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3Jf
dGFnKQogICAgewogICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfX3RyaXBfY291bnQgPSAoX19sYXN0IC0gX19maXJz
dCkgPj4gMjsKCiAgICAgIGZvciAoIDsgX190cmlwX2NvdW50ID4gMCA7IC0tX190cmlwX2NvdW50
KQogewogICBpZiAoKl9fZmlyc3QgPT0gX192YWwpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICsr
X19maXJzdDsKCiAgIGlmICgqX19maXJzdCA9PSBfX3ZhbCkKICAgICByZXR1cm4gX19maXJzdDsK
ICAgKytfX2ZpcnN0OwoKICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKQogICAgIHJldHVybiBfX2Zp
cnN0OwogICArK19fZmlyc3Q7CgogICBpZiAoKl9fZmlyc3QgPT0gX192YWwpCiAgICAgcmV0dXJu
IF9fZmlyc3Q7CiAgICsrX19maXJzdDsKIH0KCiAgICAgIHN3aXRjaCAoX19sYXN0IC0gX19maXJz
dCkKIHsKIGNhc2UgMzoKICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKQogICAgIHJldHVybiBfX2Zp
cnN0OwogICArK19fZmlyc3Q7CiBjYXNlIDI6CiAgIGlmICgqX19maXJzdCA9PSBfX3ZhbCkKICAg
ICByZXR1cm4gX19maXJzdDsKICAgKytfX2ZpcnN0OwogY2FzZSAxOgogICBpZiAoKl9fZmlyc3Qg
PT0gX192YWwpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICsrX19maXJzdDsKIGNhc2UgMDoKIGRl
ZmF1bHQ6CiAgIHJldHVybiBfX2xhc3Q7CiB9CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yCiAgICBfX2ZpbmRfaWYoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmly
c3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgICBfUHJlZGljYXRlIF9fcHJl
ZCwgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpCiAgICB7CiAgICAgIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKIF9fdHJp
cF9jb3VudCA9IChfX2xhc3QgLSBfX2ZpcnN0KSA+PiAyOwoKICAgICAgZm9yICggOyBfX3RyaXBf
Y291bnQgPiAwIDsgLS1fX3RyaXBfY291bnQpCiB7CiAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKQog
ICAgIHJldHVybiBfX2ZpcnN0OwogICArK19fZmlyc3Q7CgogICBpZiAoX19wcmVkKCpfX2ZpcnN0
KSkKICAgICByZXR1cm4gX19maXJzdDsKICAgKytfX2ZpcnN0OwoKICAgaWYgKF9fcHJlZCgqX19m
aXJzdCkpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICsrX19maXJzdDsKCiAgIGlmIChfX3ByZWQo
Kl9fZmlyc3QpKQogICAgIHJldHVybiBfX2ZpcnN0OwogICArK19fZmlyc3Q7CiB9CgogICAgICBz
d2l0Y2ggKF9fbGFzdCAtIF9fZmlyc3QpCiB7CiBjYXNlIDM6CiAgIGlmIChfX3ByZWQoKl9fZmly
c3QpKQogICAgIHJldHVybiBfX2ZpcnN0OwogICArK19fZmlyc3Q7CiBjYXNlIDI6CiAgIGlmIChf
X3ByZWQoKl9fZmlyc3QpKQogICAgIHJldHVybiBfX2ZpcnN0OwogICArK19fZmlyc3Q7CiBjYXNl
IDE6CiAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKQogICAgIHJldHVybiBfX2ZpcnN0OwogICArK19f
Zmlyc3Q7CiBjYXNlIDA6CiBkZWZhdWx0OgogICByZXR1cm4gX19sYXN0OwogfQogICAgfQoKCgoK
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19l
bmFibGVfaWY8X19pc19jaGFyPF9DaGFyVD46Ol9fdmFsdWUsCiAgICAgICAgaXN0cmVhbWJ1Zl9p
dGVyYXRvcjxfQ2hhclQ+ID46Ol9fdHlwZQogICAgZmluZChpc3RyZWFtYnVmX2l0ZXJhdG9yPF9D
aGFyVD4sIGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiwKICBjb25zdCBfQ2hhclQmKTsKIyAz
MTYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfSW5wdXRJ
dGVyYXRvcgogICAgZmluZChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBf
X2xhc3QsCiAgY29uc3QgX1RwJiBfX3ZhbCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7CiAg
ICAgIHJldHVybiBzdGQ6Ol9fZmluZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsLAogICAgICAgICAg
IHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7CiAgICB9CiMgMzM4ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgaW5saW5lIF9JbnB1dEl0ZXJh
dG9yCiAgICBmaW5kX2lmKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9f
bGFzdCwKICAgICBfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7
CiAgICAgIHJldHVybiBzdGQ6Ol9fZmluZF9pZihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwKICAg
ICAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7CiAgICB9CiMgMzYwICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBhZGphY2VudF9maW5k
KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiAgICB7
CgogICAgIAogICAgIAoKICAgICAgOwogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiByZXR1
cm4gX19sYXN0OwogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbmV4dCA9IF9fZmlyc3Q7CiAgICAg
IHdoaWxlKCsrX19uZXh0ICE9IF9fbGFzdCkKIHsKICAgaWYgKCpfX2ZpcnN0ID09ICpfX25leHQp
CiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgIF9fZmlyc3QgPSBfX25leHQ7CiB9CiAgICAgIHJldHVy
biBfX2xhc3Q7CiAgICB9CiMgMzkxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2Fs
Z28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9C
aW5hcnlQcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBhZGphY2VudF9maW5kKF9G
b3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICBfQmlu
YXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQpCiAgICB7CgogICAgIAogICAgIAoKCiAgICAgIDsK
ICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogcmV0dXJuIF9fbGFzdDsKICAgICAgX0Zvcndh
cmRJdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogICAgICB3aGlsZSgrK19fbmV4dCAhPSBfX2xh
c3QpCiB7CiAgIGlmIChfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0LCAqX19uZXh0KSkKICAgICByZXR1
cm4gX19maXJzdDsKICAgX19maXJzdCA9IF9fbmV4dDsKIH0KICAgICAgcmV0dXJuIF9fbGFzdDsK
ICAgIH0KIyA0MjIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4KICAgIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICAg
Y291bnQoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBjb25z
dCBfVHAmIF9fdmFsdWUpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwogICAgICB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgX19uID0g
MDsKICAgICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogaWYgKCpfX2Zp
cnN0ID09IF9fdmFsdWUpCiAgICsrX19uOwogICAgICByZXR1cm4gX19uOwogICAgfQojIDQ0NiAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICAgY291bnRf
aWYoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBfUHJlZGlj
YXRlIF9fcHJlZCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7CiAgICAgIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBfX24gPSAwOwog
ICAgICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiBpZiAoX19wcmVkKCpf
X2ZpcnN0KSkKICAgKytfX247CiAgICAgIHJldHVybiBfX247CiAgICB9CiMgNDg1ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9G
b3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMj4KICAgIF9Gb3J3YXJk
SXRlcmF0b3IxCiAgICBzZWFyY2goX0ZvcndhcmRJdGVyYXRvcjEgX19maXJzdDEsIF9Gb3J3YXJk
SXRlcmF0b3IxIF9fbGFzdDEsCiAgICBfRm9yd2FyZEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0Zvcndh
cmRJdGVyYXRvcjIgX19sYXN0MikKICAgIHsKCiAgICAgCiAgICAgCiAgICAgCgoKICAgICAgOwog
ICAgICA7CgogICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSB8fCBfX2ZpcnN0MiA9PSBfX2xh
c3QyKQogcmV0dXJuIF9fZmlyc3QxOwoKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fdG1wKF9f
Zmlyc3QyKTsKICAgICAgKytfX3RtcDsKICAgICAgaWYgKF9fdG1wID09IF9fbGFzdDIpCiByZXR1
cm4gc3RkOjpmaW5kKF9fZmlyc3QxLCBfX2xhc3QxLCAqX19maXJzdDIpOwoKCiAgICAgIF9Gb3J3
YXJkSXRlcmF0b3IyIF9fcDEsIF9fcDsKICAgICAgX19wMSA9IF9fZmlyc3QyOyArK19fcDE7CiAg
ICAgIF9Gb3J3YXJkSXRlcmF0b3IxIF9fY3VycmVudCA9IF9fZmlyc3QxOwoKICAgICAgd2hpbGUg
KF9fZmlyc3QxICE9IF9fbGFzdDEpCiB7CiAgIF9fZmlyc3QxID0gc3RkOjpmaW5kKF9fZmlyc3Qx
LCBfX2xhc3QxLCAqX19maXJzdDIpOwogICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKICAgICBy
ZXR1cm4gX19sYXN0MTsKCiAgIF9fcCA9IF9fcDE7CiAgIF9fY3VycmVudCA9IF9fZmlyc3QxOwog
ICBpZiAoKytfX2N1cnJlbnQgPT0gX19sYXN0MSkKICAgICByZXR1cm4gX19sYXN0MTsKCiAgIHdo
aWxlICgqX19jdXJyZW50ID09ICpfX3ApCiAgICAgewogICAgICAgaWYgKCsrX19wID09IF9fbGFz
dDIpCiAgcmV0dXJuIF9fZmlyc3QxOwogICAgICAgaWYgKCsrX19jdXJyZW50ID09IF9fbGFzdDEp
CiAgcmV0dXJuIF9fbGFzdDE7CiAgICAgfQogICArK19fZmlyc3QxOwogfQogICAgICByZXR1cm4g
X19maXJzdDE7CiAgICB9CiMgNTU2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2Fs
Z28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfRm9y
d2FyZEl0ZXJhdG9yMQogICAgc2VhcmNoKF9Gb3J3YXJkSXRlcmF0b3IxIF9fZmlyc3QxLCBfRm9y
d2FyZEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgX0ZvcndhcmRJdGVyYXRvcjIgX19maXJzdDIsIF9G
b3J3YXJkSXRlcmF0b3IyIF9fbGFzdDIsCiAgICBfQmluYXJ5UHJlZGljYXRlIF9fcHJlZGljYXRl
KQogICAgewoKICAgICAKICAgICAKICAgICAKCgogICAgICA7CiAgICAgIDsKCgogICAgICBpZiAo
X19maXJzdDEgPT0gX19sYXN0MSB8fCBfX2ZpcnN0MiA9PSBfX2xhc3QyKQogcmV0dXJuIF9fZmly
c3QxOwoKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fdG1wKF9fZmlyc3QyKTsKICAgICAgKytf
X3RtcDsKICAgICAgaWYgKF9fdG1wID09IF9fbGFzdDIpCiB7CiAgIHdoaWxlIChfX2ZpcnN0MSAh
PSBfX2xhc3QxICYmICFfX3ByZWRpY2F0ZSgqX19maXJzdDEsICpfX2ZpcnN0MikpCiAgICAgKytf
X2ZpcnN0MTsKICAgcmV0dXJuIF9fZmlyc3QxOwogfQoKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3Iy
IF9fcDEsIF9fcDsKICAgICAgX19wMSA9IF9fZmlyc3QyOyArK19fcDE7CiAgICAgIF9Gb3J3YXJk
SXRlcmF0b3IxIF9fY3VycmVudCA9IF9fZmlyc3QxOwoKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9
IF9fbGFzdDEpCiB7CiAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxKQogICAgIHsKICAgICAg
IGlmIChfX3ByZWRpY2F0ZSgqX19maXJzdDEsICpfX2ZpcnN0MikpCiAgYnJlYWs7CiAgICAgICAr
K19fZmlyc3QxOwogICAgIH0KICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgIV9fcHJl
ZGljYXRlKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAgICArK19fZmlyc3QxOwogICBpZiAoX19m
aXJzdDEgPT0gX19sYXN0MSkKICAgICByZXR1cm4gX19sYXN0MTsKCiAgIF9fcCA9IF9fcDE7CiAg
IF9fY3VycmVudCA9IF9fZmlyc3QxOwogICBpZiAoKytfX2N1cnJlbnQgPT0gX19sYXN0MSkKICAg
ICByZXR1cm4gX19sYXN0MTsKCiAgIHdoaWxlIChfX3ByZWRpY2F0ZSgqX19jdXJyZW50LCAqX19w
KSkKICAgICB7CiAgICAgICBpZiAoKytfX3AgPT0gX19sYXN0MikKICByZXR1cm4gX19maXJzdDE7
CiAgICAgICBpZiAoKytfX2N1cnJlbnQgPT0gX19sYXN0MSkKICByZXR1cm4gX19sYXN0MTsKICAg
ICB9CiAgICsrX19maXJzdDE7CiB9CiAgICAgIHJldHVybiBfX2ZpcnN0MTsKICAgIH0KIyA2Mjgg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX0ludGVnZXIsIHR5cGVuYW1lIF9UcD4K
ICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fc2VhcmNoX24oX0ZvcndhcmRJdGVyYXRvciBfX2Zp
cnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICBfSW50ZWdlciBfX2NvdW50LCBj
b25zdCBfVHAmIF9fdmFsLAogICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpCiAgICB7
CiAgICAgIF9fZmlyc3QgPSBzdGQ6OmZpbmQoX19maXJzdCwgX19sYXN0LCBfX3ZhbCk7CiAgICAg
IHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkKIHsKICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRz
PF9Gb3J3YXJkSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgICBfX24gPSBfX2NvdW50Owog
ICBfRm9yd2FyZEl0ZXJhdG9yIF9faSA9IF9fZmlyc3Q7CiAgICsrX19pOwogICB3aGlsZSAoX19p
ICE9IF9fbGFzdCAmJiBfX24gIT0gMSAmJiAqX19pID09IF9fdmFsKQogICAgIHsKICAgICAgICsr
X19pOwogICAgICAgLS1fX247CiAgICAgfQogICBpZiAoX19uID09IDEpCiAgICAgcmV0dXJuIF9f
Zmlyc3Q7CiAgIGlmIChfX2kgPT0gX19sYXN0KQogICAgIHJldHVybiBfX2xhc3Q7CiAgIF9fZmly
c3QgPSBzdGQ6OmZpbmQoKytfX2ksIF9fbGFzdCwgX192YWwpOwogfQogICAgICByZXR1cm4gX19s
YXN0OwogICAgfQojIDY2MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlwZW5hbWUgX0ludGVn
ZXIsIHR5cGVuYW1lIF9UcD4KICAgIF9SYW5kb21BY2Nlc3NJdGVyCiAgICBfX3NlYXJjaF9uKF9S
YW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAg
ICBfSW50ZWdlciBfX2NvdW50LCBjb25zdCBfVHAmIF9fdmFsLAogICAgICAgIHN0ZDo6cmFuZG9t
X2FjY2Vzc19pdGVyYXRvcl90YWcpCiAgICB7CgogICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6
aXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlz
dGFuY2VUeXBlOwoKICAgICAgX0Rpc3RhbmNlVHlwZSBfX3RhaWxTaXplID0gX19sYXN0IC0gX19m
aXJzdDsKICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBfX3BhdHRTaXplID0gX19jb3VudDsKCiAg
ICAgIGlmIChfX3RhaWxTaXplIDwgX19wYXR0U2l6ZSkKICAgICAgICByZXR1cm4gX19sYXN0OwoK
ICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBfX3NraXBPZmZzZXQgPSBfX3BhdHRTaXplIC0gMTsK
ICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sb29rQWhlYWQgPSBfX2ZpcnN0ICsgX19za2lwT2Zm
c2V0OwogICAgICBfX3RhaWxTaXplIC09IF9fcGF0dFNpemU7CgogICAgICB3aGlsZSAoMSkKIHsK
CgogICB3aGlsZSAoISgqX19sb29rQWhlYWQgPT0gX192YWwpKQogICAgIHsKICAgICAgIGlmIChf
X3RhaWxTaXplIDwgX19wYXR0U2l6ZSkKICByZXR1cm4gX19sYXN0OwogICAgICAgX19sb29rQWhl
YWQgKz0gX19wYXR0U2l6ZTsKICAgICAgIF9fdGFpbFNpemUgLT0gX19wYXR0U2l6ZTsKICAgICB9
CiAgIF9EaXN0YW5jZVR5cGUgX19yZW1haW5kZXIgPSBfX3NraXBPZmZzZXQ7CiAgIGZvciAoX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19iYWNrVHJhY2sgPSBfX2xvb2tBaGVhZCAtIDE7CiAgICAgICAgKl9f
YmFja1RyYWNrID09IF9fdmFsOyAtLV9fYmFja1RyYWNrKQogICAgIHsKICAgICAgIGlmICgtLV9f
cmVtYWluZGVyID09IDApCiAgcmV0dXJuIChfX2xvb2tBaGVhZCAtIF9fc2tpcE9mZnNldCk7CiAg
ICAgfQogICBpZiAoX19yZW1haW5kZXIgPiBfX3RhaWxTaXplKQogICAgIHJldHVybiBfX2xhc3Q7
CiAgIF9fbG9va0FoZWFkICs9IF9fcmVtYWluZGVyOwogICBfX3RhaWxTaXplIC09IF9fcmVtYWlu
ZGVyOwogfQogICAgfQojIDcyMCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdv
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfSW50
ZWdlciwgdHlwZW5hbWUgX1RwPgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAgc2VhcmNoX24oX0Zv
cndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgX0lu
dGVnZXIgX19jb3VudCwgY29uc3QgX1RwJiBfX3ZhbCkKICAgIHsKCiAgICAgCiAgICAgCgogICAg
ICA7CgogICAgICBpZiAoX19jb3VudCA8PSAwKQogcmV0dXJuIF9fZmlyc3Q7CiAgICAgIGlmIChf
X2NvdW50ID09IDEpCiByZXR1cm4gc3RkOjpmaW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWwpOwog
ICAgICByZXR1cm4gc3RkOjpfX3NlYXJjaF9uKF9fZmlyc3QsIF9fbGFzdCwgX19jb3VudCwgX192
YWwsCiAgICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKICAgIH0KIyA3
NDcgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX0ludGVnZXIsIHR5cGVuYW1lIF9U
cCwKICAgICAgICAgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgX0ZvcndhcmRJdGVy
YXRvcgogICAgX19zZWFyY2hfbihfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
cmF0b3IgX19sYXN0LAogICAgICAgIF9JbnRlZ2VyIF9fY291bnQsIGNvbnN0IF9UcCYgX192YWws
CiAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkLCBzdGQ6OmZvcndhcmRfaXRl
cmF0b3JfdGFnKQogICAgewogICAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QgJiYgIV9fYmlu
YXJ5X3ByZWQoKl9fZmlyc3QsIF9fdmFsKSkKICAgICAgICArK19fZmlyc3Q7CgogICAgICB3aGls
ZSAoX19maXJzdCAhPSBfX2xhc3QpCiB7CiAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9y
d2FyZEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiAgICAgX19uID0gX19jb3VudDsKICAgX0Zv
cndhcmRJdGVyYXRvciBfX2kgPSBfX2ZpcnN0OwogICArK19faTsKICAgd2hpbGUgKF9faSAhPSBf
X2xhc3QgJiYgX19uICE9IDEgJiYgX19iaW5hcnlfcHJlZCgqX19pLCBfX3ZhbCkpCiAgICAgewog
ICAgICAgKytfX2k7CiAgICAgICAtLV9fbjsKICAgICB9CiAgIGlmIChfX24gPT0gMSkKICAgICBy
ZXR1cm4gX19maXJzdDsKICAgaWYgKF9faSA9PSBfX2xhc3QpCiAgICAgcmV0dXJuIF9fbGFzdDsK
ICAgX19maXJzdCA9ICsrX19pOwogICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QgJiYgIV9fYmlu
YXJ5X3ByZWQoKl9fZmlyc3QsIF9fdmFsKSkKICAgICArK19fZmlyc3Q7CiB9CiAgICAgIHJldHVy
biBfX2xhc3Q7CiAgICB9CiMgNzg3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2Fs
Z28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBf
SW50ZWdlciwgdHlwZW5hbWUgX1RwLAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAg
IF9SYW5kb21BY2Nlc3NJdGVyCiAgICBfX3NlYXJjaF9uKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmly
c3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICBfSW50ZWdlciBfX2NvdW50LCBj
b25zdCBfVHAmIF9fdmFsLAogICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCwg
c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+OjpkaWZmZXJlbmNl
X3R5cGUKIF9EaXN0YW5jZVR5cGU7CgogICAgICBfRGlzdGFuY2VUeXBlIF9fdGFpbFNpemUgPSBf
X2xhc3QgLSBfX2ZpcnN0OwogICAgICBjb25zdCBfRGlzdGFuY2VUeXBlIF9fcGF0dFNpemUgPSBf
X2NvdW50OwoKICAgICAgaWYgKF9fdGFpbFNpemUgPCBfX3BhdHRTaXplKQogICAgICAgIHJldHVy
biBfX2xhc3Q7CgogICAgICBjb25zdCBfRGlzdGFuY2VUeXBlIF9fc2tpcE9mZnNldCA9IF9fcGF0
dFNpemUgLSAxOwogICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xvb2tBaGVhZCA9IF9fZmlyc3Qg
KyBfX3NraXBPZmZzZXQ7CiAgICAgIF9fdGFpbFNpemUgLT0gX19wYXR0U2l6ZTsKCiAgICAgIHdo
aWxlICgxKQogewoKCiAgIHdoaWxlICghX19iaW5hcnlfcHJlZCgqX19sb29rQWhlYWQsIF9fdmFs
KSkKICAgICB7CiAgICAgICBpZiAoX190YWlsU2l6ZSA8IF9fcGF0dFNpemUpCiAgcmV0dXJuIF9f
bGFzdDsKICAgICAgIF9fbG9va0FoZWFkICs9IF9fcGF0dFNpemU7CiAgICAgICBfX3RhaWxTaXpl
IC09IF9fcGF0dFNpemU7CiAgICAgfQogICBfRGlzdGFuY2VUeXBlIF9fcmVtYWluZGVyID0gX19z
a2lwT2Zmc2V0OwogICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9fYmFja1RyYWNrID0gX19sb29r
QWhlYWQgLSAxOwogICAgICAgIF9fYmluYXJ5X3ByZWQoKl9fYmFja1RyYWNrLCBfX3ZhbCk7IC0t
X19iYWNrVHJhY2spCiAgICAgewogICAgICAgaWYgKC0tX19yZW1haW5kZXIgPT0gMCkKICByZXR1
cm4gKF9fbG9va0FoZWFkIC0gX19za2lwT2Zmc2V0KTsKICAgICB9CiAgIGlmIChfX3JlbWFpbmRl
ciA+IF9fdGFpbFNpemUpCiAgICAgcmV0dXJuIF9fbGFzdDsKICAgX19sb29rQWhlYWQgKz0gX19y
ZW1haW5kZXI7CiAgIF9fdGFpbFNpemUgLT0gX19yZW1haW5kZXI7CiB9CiAgICB9CiMgODQ4ICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9JbnRlZ2VyLCB0eXBlbmFtZSBfVHAsCiAg
ICAgICAgICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIF9Gb3J3YXJkSXRlcmF0b3IK
ICAgIHNlYXJjaF9uKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBf
X2xhc3QsCiAgICAgIF9JbnRlZ2VyIF9fY291bnQsIGNvbnN0IF9UcCYgX192YWwsCiAgICAgIF9C
aW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7
CgogICAgICBpZiAoX19jb3VudCA8PSAwKQogcmV0dXJuIF9fZmlyc3Q7CiAgICAgIGlmIChfX2Nv
dW50ID09IDEpCiB7CiAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCAmJiAhX19iaW5hcnlfcHJl
ZCgqX19maXJzdCwgX192YWwpKQogICAgICsrX19maXJzdDsKICAgcmV0dXJuIF9fZmlyc3Q7CiB9
CiAgICAgIHJldHVybiBzdGQ6Ol9fc2VhcmNoX24oX19maXJzdCwgX19sYXN0LCBfX2NvdW50LCBf
X3ZhbCwgX19iaW5hcnlfcHJlZCwKICAgICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnkoX19m
aXJzdCkpOwogICAgfQojIDg4NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdv
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0Zv
cndhcmRJdGVyYXRvcjI+CiAgICBfRm9yd2FyZEl0ZXJhdG9yMgogICAgc3dhcF9yYW5nZXMoX0Zv
cndhcmRJdGVyYXRvcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcmF0b3IxIF9fbGFzdDEsCiAgX0Zv
cndhcmRJdGVyYXRvcjIgX19maXJzdDIpCiAgICB7CgogICAgIAoKICAgICAKCiAgICAgCgoKICAg
ICAKCgogICAgICA7CgogICAgICBmb3IgKCA7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJz
dDEsICsrX19maXJzdDIpCiBzdGQ6Oml0ZXJfc3dhcChfX2ZpcnN0MSwgX19maXJzdDIpOwogICAg
ICByZXR1cm4gX19maXJzdDI7CiAgICB9CiMgOTIyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBl
bmFtZSBfT3V0cHV0SXRlcmF0b3IsCiAgICB0eXBlbmFtZSBfVW5hcnlPcGVyYXRpb24+CiAgICBf
T3V0cHV0SXRlcmF0b3IKICAgIHRyYW5zZm9ybShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5w
dXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsIF9VbmFy
eU9wZXJhdGlvbiBfX3VuYXJ5X29wKQogICAgewoKICAgICAKICAgICAKCgogICAgICA7CgogICAg
ICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QsICsrX19yZXN1bHQpCiAqX19y
ZXN1bHQgPSBfX3VuYXJ5X29wKCpfX2ZpcnN0KTsKICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAg
fQojIDk1NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwK
ICAgIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgX0JpbmFyeU9wZXJhdGlvbj4K
ICAgIF9PdXRwdXRJdGVyYXRvcgogICAgdHJhbnNmb3JtKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0
MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJz
dDIsIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwKICAgICAgIF9CaW5hcnlPcGVyYXRpb24gX19i
aW5hcnlfb3ApCiAgICB7CgogICAgIAogICAgIAogICAgIAoKCiAgICAgIDsKCiAgICAgIGZvciAo
IDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MiwgKytfX3Jlc3Vs
dCkKICpfX3Jlc3VsdCA9IF9fYmluYXJ5X29wKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKTsKICAgICAg
cmV0dXJuIF9fcmVzdWx0OwogICAgfQojIDk4OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBl
bmFtZSBfVHA+CiAgICB2b2lkCiAgICByZXBsYWNlKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwg
X0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgY29uc3QgX1RwJiBfX29sZF92YWx1ZSwgY29u
c3QgX1RwJiBfX25ld192YWx1ZSkKICAgIHsKCiAgICAgCgogICAgIAoKICAgICAKCiAgICAgIDsK
CiAgICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKIGlmICgqX19maXJz
dCA9PSBfX29sZF92YWx1ZSkKICAgKl9fZmlyc3QgPSBfX25ld192YWx1ZTsKICAgIH0KIyAxMDIw
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGUsIHR5cGVuYW1lIF9U
cD4KICAgIHZvaWQKICAgIHJlcGxhY2VfaWYoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9y
d2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwgY29uc3QgX1Rw
JiBfX25ld192YWx1ZSkKICAgIHsKCiAgICAgCgogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAg
IGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKIGlmIChfX3ByZWQoKl9fZmly
c3QpKQogICAqX19maXJzdCA9IF9fbmV3X3ZhbHVlOwogICAgfQojIDEwNTMgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0
SXRlcmF0b3IsIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgX091
dHB1dEl0ZXJhdG9yCiAgICByZXBsYWNlX2NvcHkoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lu
cHV0SXRlcmF0b3IgX19sYXN0LAogICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsCiAgIGNvbnN0
IF9UcCYgX19vbGRfdmFsdWUsIGNvbnN0IF9UcCYgX19uZXdfdmFsdWUpCiAgICB7CgogICAgIAog
ICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsr
X19maXJzdCwgKytfX3Jlc3VsdCkKIGlmICgqX19maXJzdCA9PSBfX29sZF92YWx1ZSkKICAgKl9f
cmVzdWx0ID0gX19uZXdfdmFsdWU7CiBlbHNlCiAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAg
ICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMgMTA4OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlw
ZW5hbWUgX091dHB1dEl0ZXJhdG9yLAogICAgdHlwZW5hbWUgX1ByZWRpY2F0ZSwgdHlwZW5hbWUg
X1RwPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICByZXBsYWNlX2NvcHlfaWYoX0lucHV0SXRlcmF0
b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICBfT3V0cHV0SXRlcmF0b3Ig
X19yZXN1bHQsCiAgICAgIF9QcmVkaWNhdGUgX19wcmVkLCBjb25zdCBfVHAmIF9fbmV3X3ZhbHVl
KQogICAgewoKICAgICAKICAgICAKCiAgICAgCgogICAgICA7CgogICAgICBmb3IgKCA7IF9fZmly
c3QgIT0gX19sYXN0OyArK19fZmlyc3QsICsrX19yZXN1bHQpCiBpZiAoX19wcmVkKCpfX2ZpcnN0
KSkKICAgKl9fcmVzdWx0ID0gX19uZXdfdmFsdWU7CiBlbHNlCiAgICpfX3Jlc3VsdCA9ICpfX2Zp
cnN0OwogICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMgMTEyMyAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0
ZXJhdG9yLCB0eXBlbmFtZSBfR2VuZXJhdG9yPgogICAgdm9pZAogICAgZ2VuZXJhdGUoX0Zvcndh
cmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgX0dlbmVy
YXRvciBfX2dlbikKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7CgogICAgICBmb3IgKCA7IF9f
Zmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAqX19maXJzdCA9IF9fZ2VuKCk7CiAgICB9CiMg
MTE0OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfR2Vu
ZXJhdG9yPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBnZW5lcmF0ZV9uKF9PdXRwdXRJdGVyYXRv
ciBfX2ZpcnN0LCBfU2l6ZSBfX24sIF9HZW5lcmF0b3IgX19nZW4pCiAgICB7CgogICAgIAoKCgog
ICAgICBmb3IgKCA7IF9fbiA+IDA7IC0tX19uLCArK19fZmlyc3QpCiAqX19maXJzdCA9IF9fZ2Vu
KCk7CiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgfQojIDExNzYgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0
b3IsIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgX091dHB1dEl0
ZXJhdG9yCiAgICByZW1vdmVfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVy
YXRvciBfX2xhc3QsCiAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBjb25zdCBfVHAmIF9fdmFs
dWUpCiAgICB7CgogICAgIAogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIGZvciAoIDsgX19m
aXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKIGlmICghKCpfX2ZpcnN0ID09IF9fdmFsdWUpKQog
ICB7CiAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgKytfX3Jlc3VsdDsKICAgfQogICAg
ICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMgMTIxMiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlw
ZW5hbWUgX091dHB1dEl0ZXJhdG9yLAogICAgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIF9PdXRw
dXRJdGVyYXRvcgogICAgcmVtb3ZlX2NvcHlfaWYoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lu
cHV0SXRlcmF0b3IgX19sYXN0LAogICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwgX1ByZWRp
Y2F0ZSBfX3ByZWQpCiAgICB7CgogICAgIAogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIGZv
ciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKIGlmICghX19wcmVkKCpfX2ZpcnN0
KSkKICAgewogICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgICsrX19yZXN1bHQ7CiAgIH0K
ICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQojIDEyNTEgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
ciwgdHlwZW5hbWUgX1RwPgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAgcmVtb3ZlKF9Gb3J3YXJk
SXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICBjb25zdCBfVHAm
IF9fdmFsdWUpCiAgICB7CgogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIF9fZmlyc3QgPSBz
dGQ6OmZpbmQoX19maXJzdCwgX19sYXN0LCBfX3ZhbHVlKTsKICAgICAgX0ZvcndhcmRJdGVyYXRv
ciBfX2kgPSBfX2ZpcnN0OwogICAgICByZXR1cm4gX19maXJzdCA9PSBfX2xhc3QgPyBfX2ZpcnN0
CiAgICAgICAgICA6IHN0ZDo6cmVtb3ZlX2NvcHkoKytfX2ksIF9fbGFzdCwKICAgICAgICBfX2Zp
cnN0LCBfX3ZhbHVlKTsKICAgIH0KIyAxMjg2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMv
c3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVu
YW1lIF9QcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICByZW1vdmVfaWYoX0Zvcndh
cmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9QcmVk
aWNhdGUgX19wcmVkKQogICAgewoKICAgICAKCiAgICAgCgogICAgICA7CgogICAgICBfX2ZpcnN0
ID0gc3RkOjpmaW5kX2lmKF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkKTsKICAgICAgX0ZvcndhcmRJ
dGVyYXRvciBfX2kgPSBfX2ZpcnN0OwogICAgICByZXR1cm4gX19maXJzdCA9PSBfX2xhc3QgPyBf
X2ZpcnN0CiAgICAgICAgICA6IHN0ZDo6cmVtb3ZlX2NvcHlfaWYoKytfX2ksIF9fbGFzdCwKICAg
ICAgICAgICBfX2ZpcnN0LCBfX3ByZWQpOwogICAgfQojIDEzMTIgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVy
YXRvciwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBf
X3VuaXF1ZV9jb3B5KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBf
X2xhc3QsCiAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsCiAgICBmb3J3YXJkX2l0ZXJhdG9y
X3RhZywgb3V0cHV0X2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3Ig
X19uZXh0ID0gX19maXJzdDsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgIHdoaWxl
ICgrK19fbmV4dCAhPSBfX2xhc3QpCiBpZiAoISgqX19maXJzdCA9PSAqX19uZXh0KSkKICAgewog
ICAgIF9fZmlyc3QgPSBfX25leHQ7CiAgICAgKisrX19yZXN1bHQgPSAqX19maXJzdDsKICAgfQog
ICAgICByZXR1cm4gKytfX3Jlc3VsdDsKICAgIH0KIyAxMzM3ICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
LCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAgICBfT3V0cHV0SXRlcmF0b3IKICAgIF9fdW5p
cXVlX2NvcHkoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAog
ICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LAogICAgaW5wdXRfaXRlcmF0b3JfdGFnLCBvdXRw
dXRfaXRlcmF0b3JfdGFnKQogICAgewoKICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J
bnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgICAgICpfX3Jl
c3VsdCA9IF9fdmFsdWU7CiAgICAgIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogaWYgKCEo
X192YWx1ZSA9PSAqX19maXJzdCkpCiAgIHsKICAgICBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgICAg
KisrX19yZXN1bHQgPSBfX3ZhbHVlOwogICB9CiAgICAgIHJldHVybiArK19fcmVzdWx0OwogICAg
fQojIDEzNjIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+
CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBfX3VuaXF1ZV9jb3B5KF9JbnB1dEl0ZXJhdG9yIF9f
Zmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1
bHQsCiAgICBpbnB1dF9pdGVyYXRvcl90YWcsIGZvcndhcmRfaXRlcmF0b3JfdGFnKQogICAgewoK
ICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgIHdoaWxlICgrK19fZmlyc3QgIT0gX19s
YXN0KQogaWYgKCEoKl9fcmVzdWx0ID09ICpfX2ZpcnN0KSkKICAgKisrX19yZXN1bHQgPSAqX19m
aXJzdDsKICAgICAgcmV0dXJuICsrX19yZXN1bHQ7CiAgICB9CiMgMTM4NCAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2Fy
ZEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsCiAgICB0eXBlbmFtZSBfQmluYXJ5
UHJlZGljYXRlPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBfX3VuaXF1ZV9jb3B5KF9Gb3J3YXJk
SXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICBfT3V0cHV0SXRl
cmF0b3IgX19yZXN1bHQsIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCwKICAgIGZvcndh
cmRfaXRlcmF0b3JfdGFnLCBvdXRwdXRfaXRlcmF0b3JfdGFnKQogICAgewoKICAgICAKCgoKICAg
ICAgX0ZvcndhcmRJdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogICAgICAqX19yZXN1bHQgPSAq
X19maXJzdDsKICAgICAgd2hpbGUgKCsrX19uZXh0ICE9IF9fbGFzdCkKIGlmICghX19iaW5hcnlf
cHJlZCgqX19maXJzdCwgKl9fbmV4dCkpCiAgIHsKICAgICBfX2ZpcnN0ID0gX19uZXh0OwogICAg
ICorK19fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgIH0KICAgICAgcmV0dXJuICsrX19yZXN1bHQ7CiAg
ICB9CiMgMTQxNSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9y
LAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAg
X191bmlxdWVfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xh
c3QsCiAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5h
cnlfcHJlZCwKICAgIGlucHV0X2l0ZXJhdG9yX3RhZywgb3V0cHV0X2l0ZXJhdG9yX3RhZykKICAg
IHsKCiAgICAgCgoKCiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRv
cj46OnZhbHVlX3R5cGUgX192YWx1ZSA9ICpfX2ZpcnN0OwogICAgICAqX19yZXN1bHQgPSBfX3Zh
bHVlOwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkKIGlmICghX19iaW5hcnlfcHJl
ZChfX3ZhbHVlLCAqX19maXJzdCkpCiAgIHsKICAgICBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgICAg
KisrX19yZXN1bHQgPSBfX3ZhbHVlOwogICB9CiAgICAgIHJldHVybiArK19fcmVzdWx0OwogICAg
fQojIDE0NDYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3Is
CiAgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAg
X191bmlxdWVfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xh
c3QsCiAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0LCBfQmluYXJ5UHJlZGljYXRlIF9fYmlu
YXJ5X3ByZWQsCiAgICBpbnB1dF9pdGVyYXRvcl90YWcsIGZvcndhcmRfaXRlcmF0b3JfdGFnKQog
ICAgewoKICAgICAKCgoKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgIHdoaWxlICgr
K19fZmlyc3QgIT0gX19sYXN0KQogaWYgKCFfX2JpbmFyeV9wcmVkKCpfX3Jlc3VsdCwgKl9fZmly
c3QpKQogICAqKytfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgICByZXR1cm4gKytfX3Jlc3VsdDsK
ICAgIH0KIyAxNDg3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwog
IHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0
b3I+CiAgICBpbmxpbmUgX091dHB1dEl0ZXJhdG9yCiAgICB1bmlxdWVfY29weShfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgX091dHB1dEl0ZXJhdG9yIF9f
cmVzdWx0KQogICAgewoKICAgICAKICAgICAKCiAgICAgCgogICAgICA7CgogICAgICBpZiAoX19m
aXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gX19yZXN1bHQ7CiAgICAgIHJldHVybiBzdGQ6Ol9fdW5p
cXVlX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwKICAgIHN0ZDo6X19pdGVyYXRvcl9j
YXRlZ29yeShfX2ZpcnN0KSwKICAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX3Jlc3VsdCkp
OwogICAgfQojIDE1MjcgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9PdXRwdXRJdGVy
YXRvciwKICAgIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBpbmxpbmUgX091dHB1dEl0
ZXJhdG9yCiAgICB1bmlxdWVfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVy
YXRvciBfX2xhc3QsCiAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LAogIF9CaW5hcnlQcmVkaWNh
dGUgX19iaW5hcnlfcHJlZCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7CgogICAgICBpZiAo
X19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gX19yZXN1bHQ7CiAgICAgIHJldHVybiBzdGQ6Ol9f
dW5pcXVlX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX19iaW5hcnlfcHJlZCwKICAg
IHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSwKICAgIHN0ZDo6X19pdGVyYXRvcl9j
YXRlZ29yeShfX3Jlc3VsdCkpOwogICAgfQojIDE1NjAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4K
ICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIHVuaXF1ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3Qs
IF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0KQogICAgewoKICAgICAKCiAgICAgCgogICAgICA7CgoK
ICAgICAgX19maXJzdCA9IHN0ZDo6YWRqYWNlbnRfZmluZChfX2ZpcnN0LCBfX2xhc3QpOwogICAg
ICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gX19sYXN0OwoKCiAgICAgIF9Gb3J3YXJk
SXRlcmF0b3IgX19kZXN0ID0gX19maXJzdDsKICAgICAgKytfX2ZpcnN0OwogICAgICB3aGlsZSAo
KytfX2ZpcnN0ICE9IF9fbGFzdCkKIGlmICghKCpfX2Rlc3QgPT0gKl9fZmlyc3QpKQogICAqKytf
X2Rlc3QgPSAqX19maXJzdDsKICAgICAgcmV0dXJuICsrX19kZXN0OwogICAgfQojIDE1OTkgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIF9Gb3J3
YXJkSXRlcmF0b3IKICAgIHVuaXF1ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJl
ZCkKICAgIHsKCiAgICAgCgogICAgIAoKCiAgICAgIDsKCgogICAgICBfX2ZpcnN0ID0gc3RkOjph
ZGphY2VudF9maW5kKF9fZmlyc3QsIF9fbGFzdCwgX19iaW5hcnlfcHJlZCk7CiAgICAgIGlmIChf
X2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBfX2xhc3Q7CgoKICAgICAgX0ZvcndhcmRJdGVyYXRv
ciBfX2Rlc3QgPSBfX2ZpcnN0OwogICAgICArK19fZmlyc3Q7CiAgICAgIHdoaWxlICgrK19fZmly
c3QgIT0gX19sYXN0KQogaWYgKCFfX2JpbmFyeV9wcmVkKCpfX2Rlc3QsICpfX2ZpcnN0KSkKICAg
KisrX19kZXN0ID0gKl9fZmlyc3Q7CiAgICAgIHJldHVybiArK19fZGVzdDsKICAgIH0KIyAxNjMz
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3I+CiAgICB2b2lkCiAgICBfX3JldmVyc2UoX0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ZpcnN0LCBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbGFz
dCwKICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKQogICAgewogICAgICB3aGlsZSAo
dHJ1ZSkKIGlmIChfX2ZpcnN0ID09IF9fbGFzdCB8fCBfX2ZpcnN0ID09IC0tX19sYXN0KQogICBy
ZXR1cm47CiBlbHNlCiAgIHsKICAgICBzdGQ6Oml0ZXJfc3dhcChfX2ZpcnN0LCBfX2xhc3QpOwog
ICAgICsrX19maXJzdDsKICAgfQogICAgfQojIDE2NTUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yPgogICAgdm9pZAogICAgX19yZXZlcnNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0
LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgcmFuZG9tX2FjY2Vzc19pdGVy
YXRvcl90YWcpCiAgICB7CiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybjsKICAg
ICAgLS1fX2xhc3Q7CiAgICAgIHdoaWxlIChfX2ZpcnN0IDwgX19sYXN0KQogewogICBzdGQ6Oml0
ZXJfc3dhcChfX2ZpcnN0LCBfX2xhc3QpOwogICArK19fZmlyc3Q7CiAgIC0tX19sYXN0OwogfQog
ICAgfQojIDE2ODIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcj4KICAgIGlubGluZSB2b2lk
CiAgICByZXZlcnNlKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwgX0JpZGlyZWN0aW9u
YWxJdGVyYXRvciBfX2xhc3QpCiAgICB7CgogICAgIAoKICAgICAgOwogICAgICBzdGQ6Ol9fcmV2
ZXJzZShfX2ZpcnN0LCBfX2xhc3QsIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7
CiAgICB9CiMgMTcwOCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0
cHV0SXRlcmF0b3I+CiAgICBfT3V0cHV0SXRlcmF0b3IKICAgIHJldmVyc2VfY29weShfQmlkaXJl
Y3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19sYXN0LAog
ICAgICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCkKICAgIHsKCiAgICAgCgogICAgIAoKICAg
ICAgOwoKICAgICAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KQogewogICAtLV9fbGFzdDsKICAg
Kl9fcmVzdWx0ID0gKl9fbGFzdDsKICAgKytfX3Jlc3VsdDsKIH0KICAgICAgcmV0dXJuIF9fcmVz
dWx0OwogICAgfQojIDE3MzYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5o
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0V1Y2xpZGVhblJpbmdFbGVtZW50PgogICAgX0V1Y2xp
ZGVhblJpbmdFbGVtZW50CiAgICBfX2djZChfRXVjbGlkZWFuUmluZ0VsZW1lbnQgX19tLCBfRXVj
bGlkZWFuUmluZ0VsZW1lbnQgX19uKQogICAgewogICAgICB3aGlsZSAoX19uICE9IDApCiB7CiAg
IF9FdWNsaWRlYW5SaW5nRWxlbWVudCBfX3QgPSBfX20gJSBfX247CiAgIF9fbSA9IF9fbjsKICAg
X19uID0gX190OwogfQogICAgICByZXR1cm4gX19tOwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICB2b2lkCiAgICBfX3JvdGF0ZShfRm9yd2FyZEl0
ZXJhdG9yIF9fZmlyc3QsCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWRkbGUsCiAgICAgIF9G
b3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICBmb3J3YXJkX2l0ZXJhdG9yX3RhZykKICAgIHsK
ICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUgfHwgX19sYXN0ID09IF9fbWlkZGxlKQogcmV0
dXJuOwoKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0MiA9IF9fbWlkZGxlOwogICAgICBk
bwogewogICBzd2FwKCpfX2ZpcnN0LCAqX19maXJzdDIpOwogICArK19fZmlyc3Q7CiAgICsrX19m
aXJzdDI7CiAgIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlKQogICAgIF9fbWlkZGxlID0gX19maXJz
dDI7CiB9CiAgICAgIHdoaWxlIChfX2ZpcnN0MiAhPSBfX2xhc3QpOwoKICAgICAgX19maXJzdDIg
PSBfX21pZGRsZTsKCiAgICAgIHdoaWxlIChfX2ZpcnN0MiAhPSBfX2xhc3QpCiB7CiAgIHN3YXAo
Kl9fZmlyc3QsICpfX2ZpcnN0Mik7CiAgICsrX19maXJzdDsKICAgKytfX2ZpcnN0MjsKICAgaWYg
KF9fZmlyc3QgPT0gX19taWRkbGUpCiAgICAgX19taWRkbGUgPSBfX2ZpcnN0MjsKICAgZWxzZSBp
ZiAoX19maXJzdDIgPT0gX19sYXN0KQogICAgIF9fZmlyc3QyID0gX19taWRkbGU7CiB9CiAgICB9
CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcj4KICAgIHZv
aWQKICAgIF9fcm90YXRlKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwKICAgICAgX0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvciBfX21pZGRsZSwKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRv
ciBfX2xhc3QsCiAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAg
CgoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUgfHwgX19sYXN0ID09IF9fbWlkZGxlKQog
cmV0dXJuOwoKICAgICAgc3RkOjpfX3JldmVyc2UoX19maXJzdCwgX19taWRkbGUsIGJpZGlyZWN0
aW9uYWxfaXRlcmF0b3JfdGFnKCkpOwogICAgICBzdGQ6Ol9fcmV2ZXJzZShfX21pZGRsZSwgX19s
YXN0LCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZygpKTsKCiAgICAgIHdoaWxlIChfX2ZpcnN0
ICE9IF9fbWlkZGxlICYmIF9fbWlkZGxlICE9IF9fbGFzdCkKIHsKICAgc3dhcCgqX19maXJzdCwg
Ki0tX19sYXN0KTsKICAgKytfX2ZpcnN0OwogfQoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRk
bGUpCiBzdGQ6Ol9fcmV2ZXJzZShfX21pZGRsZSwgX19sYXN0LCBiaWRpcmVjdGlvbmFsX2l0ZXJh
dG9yX3RhZygpKTsKICAgICAgZWxzZQogc3RkOjpfX3JldmVyc2UoX19maXJzdCwgX19taWRkbGUs
IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKCkpOwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIHZvaWQKICAgIF9fcm90YXRlKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19t
aWRkbGUsCiAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgIHJhbmRvbV9h
Y2Nlc3NfaXRlcmF0b3JfdGFnKQogICAgewoKICAgICAKCgogICAgICBpZiAoX19maXJzdCA9PSBf
X21pZGRsZSB8fCBfX2xhc3QgPT0gX19taWRkbGUpCiByZXR1cm47CgogICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNl
X3R5cGUKIF9EaXN0YW5jZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKCiAgICAgIGNv
bnN0IF9EaXN0YW5jZSBfX24gPSBfX2xhc3QgLSBfX2ZpcnN0OwogICAgICBjb25zdCBfRGlzdGFu
Y2UgX19rID0gX19taWRkbGUgLSBfX2ZpcnN0OwogICAgICBjb25zdCBfRGlzdGFuY2UgX19sID0g
X19uIC0gX19rOwoKICAgICAgaWYgKF9fayA9PSBfX2wpCiB7CiAgIHN0ZDo6c3dhcF9yYW5nZXMo
X19maXJzdCwgX19taWRkbGUsIF9fbWlkZGxlKTsKICAgcmV0dXJuOwogfQoKICAgICAgY29uc3Qg
X0Rpc3RhbmNlIF9fZCA9IF9fZ2NkKF9fbiwgX19rKTsKCiAgICAgIGZvciAoX0Rpc3RhbmNlIF9f
aSA9IDA7IF9faSA8IF9fZDsgX19pKyspCiB7CiAgIF9WYWx1ZVR5cGUgX190bXAgPSAqX19maXJz
dDsKICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fcCA9IF9fZmlyc3Q7CgogICBpZiAoX19rIDwg
X19sKQogICAgIHsKICAgICAgIGZvciAoX0Rpc3RhbmNlIF9faiA9IDA7IF9faiA8IF9fbCAvIF9f
ZDsgX19qKyspCiAgewogICAgaWYgKF9fcCA+IF9fZmlyc3QgKyBfX2wpCiAgICAgIHsKICAgICAg
ICAqX19wID0gKihfX3AgLSBfX2wpOwogICAgICAgIF9fcCAtPSBfX2w7CiAgICAgIH0KCiAgICAq
X19wID0gKihfX3AgKyBfX2spOwogICAgX19wICs9IF9fazsKICB9CiAgICAgfQogICBlbHNlCiAg
ICAgewogICAgICAgZm9yIChfRGlzdGFuY2UgX19qID0gMDsgX19qIDwgX19rIC8gX19kIC0gMTsg
X19qICsrKQogIHsKICAgIGlmIChfX3AgPCBfX2xhc3QgLSBfX2spCiAgICAgIHsKICAgICAgICAq
X19wID0gKihfX3AgKyBfX2spOwogICAgICAgIF9fcCArPSBfX2s7CiAgICAgIH0KICAgICpfX3Ag
PSAqIChfX3AgLSBfX2wpOwogICAgX19wIC09IF9fbDsKICB9CiAgICAgfQoKICAgKl9fcCA9IF9f
dG1wOwogICArK19fZmlyc3Q7CiB9CiAgICB9CiMgMTkxNSAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9y
PgogICAgaW5saW5lIHZvaWQKICAgIHJvdGF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9G
b3J3YXJkSXRlcmF0b3IgX19taWRkbGUsCiAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCkKICAg
IHsKCiAgICAgCgogICAgICA7CiAgICAgIDsKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeQogX0l0ZXJUeXBl
OwogICAgICBzdGQ6Ol9fcm90YXRlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsIF9JdGVyVHlw
ZSgpKTsKICAgIH0KIyAxOTQ4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9PdXRw
dXRJdGVyYXRvcj4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgcm90YXRlX2NvcHkoX0ZvcndhcmRJ
dGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlkZGxlLAogICAgICAgICAgICAg
ICAgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCkKICAg
IHsKCiAgICAgCiAgICAgCgogICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6OmNvcHko
X19maXJzdCwgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpjb3B5KF9fbWlk
ZGxlLCBfX2xhc3QsIF9fcmVzdWx0KSk7CiAgICB9CiMgMTk3NCAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNz
SXRlcmF0b3I+CiAgICBpbmxpbmUgdm9pZAogICAgcmFuZG9tX3NodWZmbGUoX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpCiAgICB7Cgog
ICAgIAoKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3QgIT0gX19sYXN0KQogZm9yIChfUmFuZG9t
QWNjZXNzSXRlcmF0b3IgX19pID0gX19maXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQog
ICBzdGQ6Oml0ZXJfc3dhcChfX2ksIF9fZmlyc3QgKyAoc3RkOjpyYW5kKCkgJSAoKF9faSAtIF9f
Zmlyc3QpICsgMSkpKTsKICAgIH0KIyAyMDAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMv
c3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
dHlwZW5hbWUgX1JhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgIHZvaWQKICAgIHJhbmRvbV9zaHVm
ZmxlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19sYXN0LAogICAgIF9SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fcmFuZCkKICAgIHsKCiAgICAg
CgogICAgICA7CgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm47CiAgICAgIGZv
ciAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9faSA9IF9fZmlyc3QgKyAxOyBfX2kgIT0gX19sYXN0
OyArK19faSkKIHN0ZDo6aXRlcl9zd2FwKF9faSwgX19maXJzdCArIF9fcmFuZCgoX19pIC0gX19m
aXJzdCkgKyAxKSk7CiAgICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBfX3Bh
cnRpdGlvbihfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0
LAogIF9QcmVkaWNhdGUgX19wcmVkLAogIGZvcndhcmRfaXRlcmF0b3JfdGFnKQogICAgewogICAg
ICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gX19maXJzdDsKCiAgICAgIHdoaWxlIChf
X3ByZWQoKl9fZmlyc3QpKQogaWYgKCsrX19maXJzdCA9PSBfX2xhc3QpCiAgIHJldHVybiBfX2Zp
cnN0OwoKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwoKICAgICAgd2hp
bGUgKCsrX19uZXh0ICE9IF9fbGFzdCkKIGlmIChfX3ByZWQoKl9fbmV4dCkpCiAgIHsKICAgICBz
d2FwKCpfX2ZpcnN0LCAqX19uZXh0KTsKICAgICArK19fZmlyc3Q7CiAgIH0KCiAgICAgIHJldHVy
biBfX2ZpcnN0OwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFs
SXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9y
CiAgICBfX3BhcnRpdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsIF9CaWRpcmVj
dGlvbmFsSXRlcmF0b3IgX19sYXN0LAogIF9QcmVkaWNhdGUgX19wcmVkLAogIGJpZGlyZWN0aW9u
YWxfaXRlcmF0b3JfdGFnKQogICAgewogICAgICB3aGlsZSAodHJ1ZSkKIHsKICAgd2hpbGUgKHRy
dWUpCiAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAg
ICAgZWxzZSBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICAgICsrX19maXJzdDsKICAgICBlbHNl
CiAgICAgICBicmVhazsKICAgLS1fX2xhc3Q7CiAgIHdoaWxlICh0cnVlKQogICAgIGlmIChfX2Zp
cnN0ID09IF9fbGFzdCkKICAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgIGVsc2UgaWYgKCFfX3By
ZWQoKl9fbGFzdCkpCiAgICAgICAtLV9fbGFzdDsKICAgICBlbHNlCiAgICAgICBicmVhazsKICAg
c3RkOjppdGVyX3N3YXAoX19maXJzdCwgX19sYXN0KTsKICAgKytfX2ZpcnN0OwogfQogICAgfQoj
IDIwOTUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGlu
bGluZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICBwYXJ0aXRpb24oX0ZvcndhcmRJdGVyYXRvciBfX2Zp
cnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9QcmVkaWNhdGUgX19wcmVkKQog
ICAgewoKICAgICAKCiAgICAgCgogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX3BhcnRpdGlv
bihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwKICAgICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVn
b3J5KF9fZmlyc3QpKTsKICAgIH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZSwgdHlwZW5hbWUgX0Rpc3RhbmNlPgogICAgX0Zv
cndhcmRJdGVyYXRvcgogICAgX19pbnBsYWNlX3N0YWJsZV9wYXJ0aXRpb24oX0ZvcndhcmRJdGVy
YXRvciBfX2ZpcnN0LAogICAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAg
ICBfUHJlZGljYXRlIF9fcHJlZCwgX0Rpc3RhbmNlIF9fbGVuKQogICAgewogICAgICBpZiAoX19s
ZW4gPT0gMSkKIHJldHVybiBfX3ByZWQoKl9fZmlyc3QpID8gX19sYXN0IDogX19maXJzdDsKICAg
ICAgX0ZvcndhcmRJdGVyYXRvciBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICAgIHN0ZDo6YWR2YW5j
ZShfX21pZGRsZSwgX19sZW4gLyAyKTsKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2JlZ2luID0g
c3RkOjpfX2lucGxhY2Vfc3RhYmxlX3BhcnRpdGlvbihfX2ZpcnN0LAogICAgICAgICBfX21pZGRs
ZSwKICAgICAgICAgX19wcmVkLAogICAgICAgICBfX2xlbiAvIDIpOwogICAgICBfRm9yd2FyZEl0
ZXJhdG9yIF9fZW5kID0gc3RkOjpfX2lucGxhY2Vfc3RhYmxlX3BhcnRpdGlvbihfX21pZGRsZSwg
X19sYXN0LAogICAgICAgICAgICAgIF9fcHJlZCwKICAgICAgICAgICAgICBfX2xlbgogICAgICAg
ICAgICAgIC0gX19sZW4gLyAyKTsKICAgICAgc3RkOjpyb3RhdGUoX19iZWdpbiwgX19taWRkbGUs
IF9fZW5kKTsKICAgICAgc3RkOjphZHZhbmNlKF9fYmVnaW4sIHN0ZDo6ZGlzdGFuY2UoX19taWRk
bGUsIF9fZW5kKSk7CiAgICAgIHJldHVybiBfX2JlZ2luOwogICAgfQoKCgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9Qb2ludGVyLCB0eXBlbmFtZSBf
UHJlZGljYXRlLAogICAgdHlwZW5hbWUgX0Rpc3RhbmNlPgogICAgX0ZvcndhcmRJdGVyYXRvcgog
ICAgX19zdGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwK
ICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgX1ByZWRpY2F0ZSBfX3ByZWQsIF9EaXN0
YW5jZSBfX2xlbiwKICAgIF9Qb2ludGVyIF9fYnVmZmVyLAogICAgX0Rpc3RhbmNlIF9fYnVmZmVy
X3NpemUpCiAgICB7CiAgICAgIGlmIChfX2xlbiA8PSBfX2J1ZmZlcl9zaXplKQogewogICBfRm9y
d2FyZEl0ZXJhdG9yIF9fcmVzdWx0MSA9IF9fZmlyc3Q7CiAgIF9Qb2ludGVyIF9fcmVzdWx0MiA9
IF9fYnVmZmVyOwogICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0IDsgKytfX2ZpcnN0KQogICAg
IGlmIChfX3ByZWQoKl9fZmlyc3QpKQogICAgICAgewogICpfX3Jlc3VsdDEgPSAqX19maXJzdDsK
ICArK19fcmVzdWx0MTsKICAgICAgIH0KICAgICBlbHNlCiAgICAgICB7CiAgKl9fcmVzdWx0MiA9
ICpfX2ZpcnN0OwogICsrX19yZXN1bHQyOwogICAgICAgfQogICBzdGQ6OmNvcHkoX19idWZmZXIs
IF9fcmVzdWx0MiwgX19yZXN1bHQxKTsKICAgcmV0dXJuIF9fcmVzdWx0MTsKIH0KICAgICAgZWxz
ZQogewogICBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlkZGxlID0gX19maXJzdDsKICAgc3RkOjphZHZh
bmNlKF9fbWlkZGxlLCBfX2xlbiAvIDIpOwogICBfRm9yd2FyZEl0ZXJhdG9yIF9fYmVnaW4gPQog
ICAgIHN0ZDo6X19zdGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKF9fZmlyc3QsIF9fbWlkZGxlLCBf
X3ByZWQsCiAgICAgICAgICBfX2xlbiAvIDIsIF9fYnVmZmVyLAogICAgICAgICAgX19idWZmZXJf
c2l6ZSk7CiAgIF9Gb3J3YXJkSXRlcmF0b3IgX19lbmQgPQogICAgIHN0ZDo6X19zdGFibGVfcGFy
dGl0aW9uX2FkYXB0aXZlKF9fbWlkZGxlLCBfX2xhc3QsIF9fcHJlZCwKICAgICAgICAgIF9fbGVu
IC0gX19sZW4gLyAyLAogICAgICAgICAgX19idWZmZXIsIF9fYnVmZmVyX3NpemUpOwogICBzdGQ6
OnJvdGF0ZShfX2JlZ2luLCBfX21pZGRsZSwgX19lbmQpOwogICBzdGQ6OmFkdmFuY2UoX19iZWdp
biwgc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19lbmQpKTsKICAgcmV0dXJuIF9fYmVnaW47CiB9
CiAgICB9CiMgMjIwNiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfUHJlZGljYXRl
PgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAgc3RhYmxlX3BhcnRpdGlvbihfRm9yd2FyZEl0ZXJh
dG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgX1ByZWRpY2F0ZSBf
X3ByZWQpCiAgICB7CgogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIGlmIChfX2ZpcnN0ID09
IF9fbGFzdCkKIHJldHVybiBfX2ZpcnN0OwogICAgICBlbHNlCiB7CiAgIHR5cGVkZWYgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiAgICAgX1Zh
bHVlVHlwZTsKICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVy
YXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICAgIF9EaXN0YW5jZVR5cGU7CgogICBfVGVtcG9yYXJ5
X2J1ZmZlcjxfRm9yd2FyZEl0ZXJhdG9yLCBfVmFsdWVUeXBlPiBfX2J1ZihfX2ZpcnN0LAogICAg
ICAgIF9fbGFzdCk7CiBpZiAoX19idWYuc2l6ZSgpID4gMCkKICAgcmV0dXJuCiAgICAgc3RkOjpf
X3N0YWJsZV9wYXJ0aXRpb25fYWRhcHRpdmUoX19maXJzdCwgX19sYXN0LCBfX3ByZWQsCiAgICAg
ICBfRGlzdGFuY2VUeXBlKF9fYnVmLnJlcXVlc3RlZF9zaXplKCkpLAogICAgICAgX19idWYuYmVn
aW4oKSwgX19idWYuc2l6ZSgpKTsKIGVsc2UKICAgcmV0dXJuCiAgICAgc3RkOjpfX2lucGxhY2Vf
c3RhYmxlX3BhcnRpdGlvbihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwKICAgICAgX0Rpc3RhbmNl
VHlwZShfX2J1Zi5yZXF1ZXN0ZWRfc2l6ZSgpKSk7CiB9CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICBfUmFuZG9t
QWNjZXNzSXRlcmF0b3IKICAgIF9fdW5ndWFyZGVkX3BhcnRpdGlvbihfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19maXJzdCwKICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfVHAgX19w
aXZvdCkKICAgIHsKICAgICAgd2hpbGUgKHRydWUpCiB7CiAgIHdoaWxlICgqX19maXJzdCA8IF9f
cGl2b3QpCiAgICAgKytfX2ZpcnN0OwogICAtLV9fbGFzdDsKICAgd2hpbGUgKF9fcGl2b3QgPCAq
X19sYXN0KQogICAgIC0tX19sYXN0OwogICBpZiAoIShfX2ZpcnN0IDwgX19sYXN0KSkKICAgICBy
ZXR1cm4gX19maXJzdDsKICAgc3RkOjppdGVyX3N3YXAoX19maXJzdCwgX19sYXN0KTsKICAgKytf
X2ZpcnN0OwogfQogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9SYW5kb21BY2Nl
c3NJdGVyYXRvcgogICAgX191bmd1YXJkZWRfcGFydGl0aW9uKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LAogICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgX1RwIF9f
cGl2b3QsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgd2hpbGUgKHRydWUpCiB7CiAgIHdo
aWxlIChfX2NvbXAoKl9fZmlyc3QsIF9fcGl2b3QpKQogICAgICsrX19maXJzdDsKICAgLS1fX2xh
c3Q7CiAgIHdoaWxlIChfX2NvbXAoX19waXZvdCwgKl9fbGFzdCkpCiAgICAgLS1fX2xhc3Q7CiAg
IGlmICghKF9fZmlyc3QgPCBfX2xhc3QpKQogICAgIHJldHVybiBfX2ZpcnN0OwogICBzdGQ6Oml0
ZXJfc3dhcChfX2ZpcnN0LCBfX2xhc3QpOwogICArK19fZmlyc3Q7CiB9CiAgICB9CgoKCgoKCgog
IGVudW0geyBfU190aHJlc2hvbGQgPSAxNiB9OwoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgdm9pZAogICAgX191bmd1YXJk
ZWRfbGluZWFyX2luc2VydChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfVHAgX192YWwp
CiAgICB7CiAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX25leHQgPSBfX2xhc3Q7CiAgICAg
IC0tX19uZXh0OwogICAgICB3aGlsZSAoX192YWwgPCAqX19uZXh0KQogewogICAqX19sYXN0ID0g
Kl9fbmV4dDsKICAgX19sYXN0ID0gX19uZXh0OwogICAtLV9fbmV4dDsKIH0KICAgICAgKl9fbGFz
dCA9IF9fdmFsOwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIF9f
dW5ndWFyZGVkX2xpbmVhcl9pbnNlcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX1Rw
IF9fdmFsLAogICAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIF9SYW5kb21BY2Nl
c3NJdGVyYXRvciBfX25leHQgPSBfX2xhc3Q7CiAgICAgIC0tX19uZXh0OwogICAgICB3aGlsZSAo
X19jb21wKF9fdmFsLCAqX19uZXh0KSkKIHsKICAgKl9fbGFzdCA9ICpfX25leHQ7CiAgIF9fbGFz
dCA9IF9fbmV4dDsKICAgLS1fX25leHQ7CiB9CiAgICAgICpfX2xhc3QgPSBfX3ZhbDsKICAgIH0K
CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAgICB2b2lk
CiAgICBfX2luc2VydGlvbl9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAg
ICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgaWYgKF9fZmlyc3Qg
PT0gX19sYXN0KQogcmV0dXJuOwoKICAgICAgZm9yIChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19p
ID0gX19maXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogewogICB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICAgIF9fdmFs
ID0gKl9faTsKICAgaWYgKF9fdmFsIDwgKl9fZmlyc3QpCiAgICAgewogICAgICAgc3RkOjpjb3B5
X2JhY2t3YXJkKF9fZmlyc3QsIF9faSwgX19pICsgMSk7CiAgICAgICAqX19maXJzdCA9IF9fdmFs
OwogICAgIH0KICAgZWxzZQogICAgIHN0ZDo6X191bmd1YXJkZWRfbGluZWFyX2luc2VydChfX2ks
IF9fdmFsKTsKIH0KICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19pbnNlcnRpb25fc29y
dChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgaWYgKF9fZmlyc3QgPT0g
X19sYXN0KSByZXR1cm47CgogICAgICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2kgPSBf
X2ZpcnN0ICsgMTsgX19pICE9IF9fbGFzdDsgKytfX2kpCiB7CiAgIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiAgICAgX192YWwgPSAq
X19pOwogICBpZiAoX19jb21wKF9fdmFsLCAqX19maXJzdCkpCiAgICAgewogICAgICAgc3RkOjpj
b3B5X2JhY2t3YXJkKF9fZmlyc3QsIF9faSwgX19pICsgMSk7CiAgICAgICAqX19maXJzdCA9IF9f
dmFsOwogICAgIH0KICAgZWxzZQogICAgIHN0ZDo6X191bmd1YXJkZWRfbGluZWFyX2luc2VydChf
X2ksIF9fdmFsLCBfX2NvbXApOwogfQogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
YW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlubGluZSB2b2lkCiAgICBfX3VuZ3VhcmRlZF9pbnNl
cnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRl
cmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5
cGU7CgogICAgICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2kgPSBfX2ZpcnN0OyBfX2kg
IT0gX19sYXN0OyArK19faSkKIHN0ZDo6X191bmd1YXJkZWRfbGluZWFyX2luc2VydChfX2ksIF9W
YWx1ZVR5cGUoKl9faSkpOwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgdm9pZAogICAgX191
bmd1YXJkZWRfaW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAg
ICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApCiAg
ICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJ
dGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CgogICAgICBmb3IgKF9SYW5kb21BY2Nl
c3NJdGVyYXRvciBfX2kgPSBfX2ZpcnN0OyBfX2kgIT0gX19sYXN0OyArK19faSkKIHN0ZDo6X191
bmd1YXJkZWRfbGluZWFyX2luc2VydChfX2ksIF9WYWx1ZVR5cGUoKl9faSksIF9fY29tcCk7CiAg
ICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAg
dm9pZAogICAgX19maW5hbF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19m
aXJzdCwKICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgaWYg
KF9fbGFzdCAtIF9fZmlyc3QgPiBpbnQoX1NfdGhyZXNob2xkKSkKIHsKICAgc3RkOjpfX2luc2Vy
dGlvbl9zb3J0KF9fZmlyc3QsIF9fZmlyc3QgKyBpbnQoX1NfdGhyZXNob2xkKSk7CiAgIHN0ZDo6
X191bmd1YXJkZWRfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCArIGludChfU190aHJlc2hvbGQpLCBf
X2xhc3QpOwogfQogICAgICBlbHNlCiBzdGQ6Ol9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19s
YXN0KTsKICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19maW5hbF9pbnNlcnRpb25fc29y
dChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICBpZiAoX19sYXN0IC0gX19m
aXJzdCA+IGludChfU190aHJlc2hvbGQpKQogewogICBzdGQ6Ol9faW5zZXJ0aW9uX3NvcnQoX19m
aXJzdCwgX19maXJzdCArIGludChfU190aHJlc2hvbGQpLCBfX2NvbXApOwogICBzdGQ6Ol9fdW5n
dWFyZGVkX2luc2VydGlvbl9zb3J0KF9fZmlyc3QgKyBpbnQoX1NfdGhyZXNob2xkKSwgX19sYXN0
LAogICAgICAgX19jb21wKTsKIH0KICAgICAgZWxzZQogc3RkOjpfX2luc2VydGlvbl9zb3J0KF9f
Zmlyc3QsIF9fbGFzdCwgX19jb21wKTsKICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAgICB2b2lkCiAgICBfX2hlYXBfc2VsZWN0KF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbWlkZGxl
LAogICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlw
ZQogX1ZhbHVlVHlwZTsKCiAgICAgIHN0ZDo6bWFrZV9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlKTsK
ICAgICAgZm9yIChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19pID0gX19taWRkbGU7IF9faSA8IF9f
bGFzdDsgKytfX2kpCiBpZiAoKl9faSA8ICpfX2ZpcnN0KQogICBzdGQ6Ol9fcG9wX2hlYXAoX19m
aXJzdCwgX19taWRkbGUsIF9faSwgX1ZhbHVlVHlwZSgqX19pKSk7CiAgICB9CgoKCgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4K
ICAgIHZvaWQKICAgIF9faGVhcF9zZWxlY3QoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3Qs
CiAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19taWRkbGUsCiAgICBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9W
YWx1ZVR5cGU7CgogICAgICBzdGQ6Om1ha2VfaGVhcChfX2ZpcnN0LCBfX21pZGRsZSwgX19jb21w
KTsKICAgICAgZm9yIChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19pID0gX19taWRkbGU7IF9faSA8
IF9fbGFzdDsgKytfX2kpCiBpZiAoX19jb21wKCpfX2ksICpfX2ZpcnN0KSkKICAgc3RkOjpfX3Bv
cF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2ksIF9WYWx1ZVR5cGUoKl9faSksIF9fY29tcCk7
CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1NpemU+CiAgICBpbmxpbmUgX1NpemUK
ICAgIF9fbGcoX1NpemUgX19uKQogICAgewogICAgICBfU2l6ZSBfX2s7CiAgICAgIGZvciAoX19r
ID0gMDsgX19uICE9IDE7IF9fbiA+Pj0gMSkKICsrX19rOwogICAgICByZXR1cm4gX19rOwogICAg
fQojIDI1MzUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAgaW5saW5lIHZvaWQKICAg
IHBhcnRpYWxfc29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fbWlkZGxlLAogICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQog
ICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNz
SXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwoKCiAgICAgCgogICAgIAogICAgICA7
CiAgICAgIDsKCiAgICAgIHN0ZDo6X19oZWFwX3NlbGVjdChfX2ZpcnN0LCBfX21pZGRsZSwgX19s
YXN0KTsKICAgICAgc3RkOjpzb3J0X2hlYXAoX19maXJzdCwgX19taWRkbGUpOwogICAgfQojIDI1
NzMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlu
bGluZSB2b2lkCiAgICBwYXJ0aWFsX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3Qs
CiAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX21pZGRsZSwKICAgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fbGFzdCwKICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBf
VmFsdWVUeXBlOwoKCiAgICAgCgogICAgIAoKICAgICAgOwogICAgICA7CgogICAgICBzdGQ6Ol9f
aGVhcF9zZWxlY3QoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX19jb21wKTsKICAgICAgc3Rk
Ojpzb3J0X2hlYXAoX19maXJzdCwgX19taWRkbGUsIF9fY29tcCk7CiAgICB9CiMgMjYxMiAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yCiAgICBwYXJ0aWFsX3NvcnRfY29weShfSW5wdXRJdGVyYXRvciBf
X2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fcmVzdWx0X2ZpcnN0LAogICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jlc3Vs
dF9sYXN0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5w
dXRJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9JbnB1dFZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlw
ZQogX091dHB1dFZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlzdGFuY2VUeXBl
OwoKCiAgICAgCiAgICAgCgogICAgIAoKICAgICAKICAgICAgOwogICAgICA7CgogICAgICBpZiAo
X19yZXN1bHRfZmlyc3QgPT0gX19yZXN1bHRfbGFzdCkKIHJldHVybiBfX3Jlc3VsdF9sYXN0Owog
ICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHRfcmVhbF9sYXN0ID0gX19yZXN1bHRf
Zmlyc3Q7CiAgICAgIHdoaWxlKF9fZmlyc3QgIT0gX19sYXN0ICYmIF9fcmVzdWx0X3JlYWxfbGFz
dCAhPSBfX3Jlc3VsdF9sYXN0KQogewogICAqX19yZXN1bHRfcmVhbF9sYXN0ID0gKl9fZmlyc3Q7
CiAgICsrX19yZXN1bHRfcmVhbF9sYXN0OwogICArK19fZmlyc3Q7CiB9CiAgICAgIHN0ZDo6bWFr
ZV9oZWFwKF9fcmVzdWx0X2ZpcnN0LCBfX3Jlc3VsdF9yZWFsX2xhc3QpOwogICAgICB3aGlsZSAo
X19maXJzdCAhPSBfX2xhc3QpCiB7CiAgIGlmICgqX19maXJzdCA8ICpfX3Jlc3VsdF9maXJzdCkK
ICAgICBzdGQ6Ol9fYWRqdXN0X2hlYXAoX19yZXN1bHRfZmlyc3QsIF9EaXN0YW5jZVR5cGUoMCks
CiAgICAgICAgICBfRGlzdGFuY2VUeXBlKF9fcmVzdWx0X3JlYWxfbGFzdAogICAgICAgICAgLSBf
X3Jlc3VsdF9maXJzdCksCiAgICAgICAgICBfSW5wdXRWYWx1ZVR5cGUoKl9fZmlyc3QpKTsKICAg
KytfX2ZpcnN0OwogfQogICAgICBzdGQ6OnNvcnRfaGVhcChfX3Jlc3VsdF9maXJzdCwgX19yZXN1
bHRfcmVhbF9sYXN0KTsKICAgICAgcmV0dXJuIF9fcmVzdWx0X3JlYWxfbGFzdDsKICAgIH0KIyAy
Njc3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3Is
IHR5cGVuYW1lIF9Db21wYXJlPgogICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yCiAgICBwYXJ0aWFs
X3NvcnRfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3Qs
CiAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fcmVzdWx0X2ZpcnN0LAogICAgICAgIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jlc3VsdF9sYXN0LAogICAgICAgIF9Db21wYXJlIF9fY29t
cCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRl
cmF0b3I+Ojp2YWx1ZV90eXBlCiBfSW5wdXRWYWx1ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9P
dXRwdXRWYWx1ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9S
YW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogX0Rpc3RhbmNlVHlwZTsKCgog
ICAgIAogICAgIAoKICAgICAKCiAgICAgCgogICAgIAoKICAgICAgOwogICAgICA7CgogICAgICBp
ZiAoX19yZXN1bHRfZmlyc3QgPT0gX19yZXN1bHRfbGFzdCkKIHJldHVybiBfX3Jlc3VsdF9sYXN0
OwogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHRfcmVhbF9sYXN0ID0gX19yZXN1
bHRfZmlyc3Q7CiAgICAgIHdoaWxlKF9fZmlyc3QgIT0gX19sYXN0ICYmIF9fcmVzdWx0X3JlYWxf
bGFzdCAhPSBfX3Jlc3VsdF9sYXN0KQogewogICAqX19yZXN1bHRfcmVhbF9sYXN0ID0gKl9fZmly
c3Q7CiAgICsrX19yZXN1bHRfcmVhbF9sYXN0OwogICArK19fZmlyc3Q7CiB9CiAgICAgIHN0ZDo6
bWFrZV9oZWFwKF9fcmVzdWx0X2ZpcnN0LCBfX3Jlc3VsdF9yZWFsX2xhc3QsIF9fY29tcCk7CiAg
ICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkKIHsKICAgaWYgKF9fY29tcCgqX19maXJzdCwg
Kl9fcmVzdWx0X2ZpcnN0KSkKICAgICBzdGQ6Ol9fYWRqdXN0X2hlYXAoX19yZXN1bHRfZmlyc3Qs
IF9EaXN0YW5jZVR5cGUoMCksCiAgICAgICAgICBfRGlzdGFuY2VUeXBlKF9fcmVzdWx0X3JlYWxf
bGFzdAogICAgICAgICAgLSBfX3Jlc3VsdF9maXJzdCksCiAgICAgICAgICBfSW5wdXRWYWx1ZVR5
cGUoKl9fZmlyc3QpLAogICAgICAgICAgX19jb21wKTsKICAgKytfX2ZpcnN0OwogfQogICAgICBz
dGQ6OnNvcnRfaGVhcChfX3Jlc3VsdF9maXJzdCwgX19yZXN1bHRfcmVhbF9sYXN0LCBfX2NvbXAp
OwogICAgICByZXR1cm4gX19yZXN1bHRfcmVhbF9sYXN0OwogICAgfQoKCgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX1NpemU+CiAgICB2b2lk
CiAgICBfX2ludHJvc29ydF9sb29wKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAg
ICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9TaXplIF9fZGVwdGhfbGlt
aXQpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21B
Y2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CgogICAgICB3aGlsZSAoX19s
YXN0IC0gX19maXJzdCA+IGludChfU190aHJlc2hvbGQpKQogewogICBpZiAoX19kZXB0aF9saW1p
dCA9PSAwKQogICAgIHsKICAgICAgIHN0ZDo6cGFydGlhbF9zb3J0KF9fZmlyc3QsIF9fbGFzdCwg
X19sYXN0KTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIC0tX19kZXB0aF9saW1pdDsKICAgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fY3V0ID0KICAgICBzdGQ6Ol9fdW5ndWFyZGVkX3BhcnRpdGlv
bihfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgICAgX1ZhbHVlVHlwZShzdGQ6Ol9fbWVkaWFuKCpf
X2ZpcnN0LAogICAgICAgICooX19maXJzdAogICAgICAgICAgKyAoX19sYXN0CiAgICAgICAgICAg
ICAtIF9fZmlyc3QpCiAgICAgICAgICAvIDIpLAogICAgICAgICooX19sYXN0CiAgICAgICAgICAt
IDEpKSkpOwogICBzdGQ6Ol9faW50cm9zb3J0X2xvb3AoX19jdXQsIF9fbGFzdCwgX19kZXB0aF9s
aW1pdCk7CiAgIF9fbGFzdCA9IF9fY3V0OwogfQogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9Db21w
YXJlPgogICAgdm9pZAogICAgX19pbnRyb3NvcnRfbG9vcChfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19maXJzdCwKICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgICBfU2l6
ZSBfX2RlcHRoX2xpbWl0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUK
IF9WYWx1ZVR5cGU7CgogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+IGludChfU190aHJl
c2hvbGQpKQogewogICBpZiAoX19kZXB0aF9saW1pdCA9PSAwKQogICAgIHsKICAgICAgIHN0ZDo6
cGFydGlhbF9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19sYXN0LCBfX2NvbXApOwogICAgICAgcmV0
dXJuOwogICAgIH0KICAgLS1fX2RlcHRoX2xpbWl0OwogICBfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19jdXQgPQogICAgIHN0ZDo6X191bmd1YXJkZWRfcGFydGl0aW9uKF9fZmlyc3QsIF9fbGFzdCwK
ICAgICAgICAgICBfVmFsdWVUeXBlKHN0ZDo6X19tZWRpYW4oKl9fZmlyc3QsCiAgICAgICAgKihf
X2ZpcnN0CiAgICAgICAgICArIChfX2xhc3QKICAgICAgICAgICAgIC0gX19maXJzdCkKICAgICAg
ICAgIC8gMiksCiAgICAgICAgKihfX2xhc3QgLSAxKSwKICAgICAgICBfX2NvbXApKSwKICAgICAg
ICAgICBfX2NvbXApOwogICBzdGQ6Ol9faW50cm9zb3J0X2xvb3AoX19jdXQsIF9fbGFzdCwgX19k
ZXB0aF9saW1pdCwgX19jb21wKTsKICAgX19sYXN0ID0gX19jdXQ7CiB9CiAgICB9CiMgMjgxNCAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAgICBpbmxpbmUgdm9pZAogICAgc29ydChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkK
ICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKCgogICAgIAoKICAgICAKICAgICAg
OwoKICAgICAgaWYgKF9fZmlyc3QgIT0gX19sYXN0KQogewogICBzdGQ6Ol9faW50cm9zb3J0X2xv
b3AoX19maXJzdCwgX19sYXN0LAogICAgc3RkOjpfX2xnKF9fbGFzdCAtIF9fZmlyc3QpICogMik7
CiAgIHN0ZDo6X19maW5hbF9pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QpOwogfQogICAg
fQojIDI4NDkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4K
ICAgIGlubGluZSB2b2lkCiAgICBzb3J0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKCgogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAg
IGlmIChfX2ZpcnN0ICE9IF9fbGFzdCkKIHsKICAgc3RkOjpfX2ludHJvc29ydF9sb29wKF9fZmly
c3QsIF9fbGFzdCwKICAgIHN0ZDo6X19sZyhfX2xhc3QgLSBfX2ZpcnN0KSAqIDIsIF9fY29tcCk7
CiAgIHN0ZDo6X19maW5hbF9pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7
CiB9CiAgICB9CiMgMjg4MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAg
ICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBsb3dlcl9ib3VuZChfRm9yd2FyZEl0ZXJhdG9yIF9fZmly
c3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogIGNvbnN0IF9UcCYgX192YWwpCiAgICB7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2
YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlzdGFuY2VUeXBlOwoK
CiAgICAgCiAgICAgCiAgICAgIDsKCiAgICAgIF9EaXN0YW5jZVR5cGUgX19sZW4gPSBzdGQ6OmRp
c3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgIF9EaXN0YW5jZVR5cGUgX19oYWxmOwogICAg
ICBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlkZGxlOwoKICAgICAgd2hpbGUgKF9fbGVuID4gMCkKIHsK
ICAgX19oYWxmID0gX19sZW4gPj4gMTsKICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICBzdGQ6OmFk
dmFuY2UoX19taWRkbGUsIF9faGFsZik7CiAgIGlmICgqX19taWRkbGUgPCBfX3ZhbCkKICAgICB7
CiAgICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICArK19fZmlyc3Q7CiAgICAgICBfX2xl
biA9IF9fbGVuIC0gX19oYWxmIC0gMTsKICAgICB9CiAgIGVsc2UKICAgICBfX2xlbiA9IF9faGFs
ZjsKIH0KICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICB9CiMgMjkzMiAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0
ZXJhdG9yLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX0ZvcndhcmRJdGVy
YXRvcgogICAgbG93ZXJfYm91bmQoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCwKICBjb25zdCBfVHAmIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+
Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlzdGFuY2VUeXBl
OwoKCiAgICAgCiAgICAgCgogICAgICA7CgogICAgICBfRGlzdGFuY2VUeXBlIF9fbGVuID0gc3Rk
OjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgICBfRGlzdGFuY2VUeXBlIF9faGFsZjsK
ICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX21pZGRsZTsKCiAgICAgIHdoaWxlIChfX2xlbiA+IDAp
CiB7CiAgIF9faGFsZiA9IF9fbGVuID4+IDE7CiAgIF9fbWlkZGxlID0gX19maXJzdDsKICAgc3Rk
OjphZHZhbmNlKF9fbWlkZGxlLCBfX2hhbGYpOwogICBpZiAoX19jb21wKCpfX21pZGRsZSwgX192
YWwpKQogICAgIHsKICAgICAgIF9fZmlyc3QgPSBfX21pZGRsZTsKICAgICAgICsrX19maXJzdDsK
ICAgICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgIH0KICAgZWxzZQogICAgIF9f
bGVuID0gX19oYWxmOwogfQogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KIyAyOTc5ICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAg
IHVwcGVyX2JvdW5kKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBf
X2xhc3QsCiAgY29uc3QgX1RwJiBfX3ZhbCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+
OjpkaWZmZXJlbmNlX3R5cGUKIF9EaXN0YW5jZVR5cGU7CgoKICAgICAKICAgICAKICAgICAgOwoK
ICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbiA9IHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwgX19sYXN0
KTsKICAgICAgX0Rpc3RhbmNlVHlwZSBfX2hhbGY7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19t
aWRkbGU7CgogICAgICB3aGlsZSAoX19sZW4gPiAwKQogewogICBfX2hhbGYgPSBfX2xlbiA+PiAx
OwogICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgIHN0ZDo6YWR2YW5jZShfX21pZGRsZSwgX19oYWxm
KTsKICAgaWYgKF9fdmFsIDwgKl9fbWlkZGxlKQogICAgIF9fbGVuID0gX19oYWxmOwogICBlbHNl
CiAgICAgewogICAgICAgX19maXJzdCA9IF9fbWlkZGxlOwogICAgICAgKytfX2ZpcnN0OwogICAg
ICAgX19sZW4gPSBfX2xlbiAtIF9faGFsZiAtIDE7CiAgICAgfQogfQogICAgICByZXR1cm4gX19m
aXJzdDsKICAgIH0KIyAzMDI5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwg
dHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICB1cHBlcl9ib3VuZChf
Rm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogIGNvbnN0
IF9UcCYgX192YWwsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5
cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0
b3I+OjpkaWZmZXJlbmNlX3R5cGUKIF9EaXN0YW5jZVR5cGU7CgoKICAgICAKICAgICAKCiAgICAg
IDsKCiAgICAgIF9EaXN0YW5jZVR5cGUgX19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9f
bGFzdCk7CiAgICAgIF9EaXN0YW5jZVR5cGUgX19oYWxmOwogICAgICBfRm9yd2FyZEl0ZXJhdG9y
IF9fbWlkZGxlOwoKICAgICAgd2hpbGUgKF9fbGVuID4gMCkKIHsKICAgX19oYWxmID0gX19sZW4g
Pj4gMTsKICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICBzdGQ6OmFkdmFuY2UoX19taWRkbGUsIF9f
aGFsZik7CiAgIGlmIChfX2NvbXAoX192YWwsICpfX21pZGRsZSkpCiAgICAgX19sZW4gPSBfX2hh
bGY7CiAgIGVsc2UKICAgICB7CiAgICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICArK19f
Zmlyc3Q7CiAgICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxmIC0gMTsKICAgICB9CiB9CiAgICAg
IHJldHVybiBfX2ZpcnN0OwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVj
dGlvbmFsSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZT4KICAgIHZvaWQKICAgIF9fbWVyZ2Vf
d2l0aG91dF9idWZmZXIoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ZpcnN0LAogICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXJhdG9yIF9fbWlkZGxlLAogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9y
IF9fbGFzdCwKICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMikKICAgIHsK
ICAgICAgaWYgKF9fbGVuMSA9PSAwIHx8IF9fbGVuMiA9PSAwKQogcmV0dXJuOwogICAgICBpZiAo
X19sZW4xICsgX19sZW4yID09IDIpCiB7CiAgIGlmICgqX19taWRkbGUgPCAqX19maXJzdCkKICAg
ICBzdGQ6Oml0ZXJfc3dhcChfX2ZpcnN0LCBfX21pZGRsZSk7CiAgIHJldHVybjsKIH0KICAgICAg
X0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ZpcnN0X2N1dCA9IF9fZmlyc3Q7CiAgICAgIF9CaWRp
cmVjdGlvbmFsSXRlcmF0b3IgX19zZWNvbmRfY3V0ID0gX19taWRkbGU7CiAgICAgIF9EaXN0YW5j
ZSBfX2xlbjExID0gMDsKICAgICAgX0Rpc3RhbmNlIF9fbGVuMjIgPSAwOwogICAgICBpZiAoX19s
ZW4xID4gX19sZW4yKQogewogICBfX2xlbjExID0gX19sZW4xIC8gMjsKICAgc3RkOjphZHZhbmNl
KF9fZmlyc3RfY3V0LCBfX2xlbjExKTsKICAgX19zZWNvbmRfY3V0ID0gc3RkOjpsb3dlcl9ib3Vu
ZChfX21pZGRsZSwgX19sYXN0LCAqX19maXJzdF9jdXQpOwogICBfX2xlbjIyID0gc3RkOjpkaXN0
YW5jZShfX21pZGRsZSwgX19zZWNvbmRfY3V0KTsKIH0KICAgICAgZWxzZQogewogICBfX2xlbjIy
ID0gX19sZW4yIC8gMjsKICAgc3RkOjphZHZhbmNlKF9fc2Vjb25kX2N1dCwgX19sZW4yMik7CiAg
IF9fZmlyc3RfY3V0ID0gc3RkOjp1cHBlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgKl9fc2Vj
b25kX2N1dCk7CiAgIF9fbGVuMTEgPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0
KTsKIH0KICAgICAgc3RkOjpyb3RhdGUoX19maXJzdF9jdXQsIF9fbWlkZGxlLCBfX3NlY29uZF9j
dXQpOwogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbmV3X21pZGRsZSA9IF9fZmlyc3Rf
Y3V0OwogICAgICBzdGQ6OmFkdmFuY2UoX19uZXdfbWlkZGxlLCBzdGQ6OmRpc3RhbmNlKF9fbWlk
ZGxlLCBfX3NlY29uZF9jdXQpKTsKICAgICAgc3RkOjpfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9f
Zmlyc3QsIF9fZmlyc3RfY3V0LCBfX25ld19taWRkbGUsCiAgICAgIF9fbGVuMTEsIF9fbGVuMjIp
OwogICAgICBzdGQ6Ol9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19uZXdfbWlkZGxlLCBfX3NlY29u
ZF9jdXQsIF9fbGFzdCwKICAgICAgX19sZW4xIC0gX19sZW4xMSwgX19sZW4yIC0gX19sZW4yMik7
CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciwg
dHlwZW5hbWUgX0Rpc3RhbmNlLAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBf
X21lcmdlX3dpdGhvdXRfYnVmZmVyKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX21pZGRsZSwK
ICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2xhc3QsCiAgICAgIF9EaXN0YW5jZSBfX2xl
bjEsIF9EaXN0YW5jZSBfX2xlbjIsCiAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAg
aWYgKF9fbGVuMSA9PSAwIHx8IF9fbGVuMiA9PSAwKQogcmV0dXJuOwogICAgICBpZiAoX19sZW4x
ICsgX19sZW4yID09IDIpCiB7CiAgIGlmIChfX2NvbXAoKl9fbWlkZGxlLCAqX19maXJzdCkpCiAg
ICAgc3RkOjppdGVyX3N3YXAoX19maXJzdCwgX19taWRkbGUpOwogICByZXR1cm47CiB9CiAgICAg
IF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdF9jdXQgPSBfX2ZpcnN0OwogICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXJhdG9yIF9fc2Vjb25kX2N1dCA9IF9fbWlkZGxlOwogICAgICBfRGlzdGFu
Y2UgX19sZW4xMSA9IDA7CiAgICAgIF9EaXN0YW5jZSBfX2xlbjIyID0gMDsKICAgICAgaWYgKF9f
bGVuMSA+IF9fbGVuMikKIHsKICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7CiAgIHN0ZDo6YWR2YW5j
ZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgIF9fc2Vjb25kX2N1dCA9IHN0ZDo6bG93ZXJfYm91
bmQoX19taWRkbGUsIF9fbGFzdCwgKl9fZmlyc3RfY3V0LAogICAgICAgX19jb21wKTsKICAgX19s
ZW4yMiA9IHN0ZDo6ZGlzdGFuY2UoX19taWRkbGUsIF9fc2Vjb25kX2N1dCk7CiB9CiAgICAgIGVs
c2UKIHsKICAgX19sZW4yMiA9IF9fbGVuMiAvIDI7CiAgIHN0ZDo6YWR2YW5jZShfX3NlY29uZF9j
dXQsIF9fbGVuMjIpOwogICBfX2ZpcnN0X2N1dCA9IHN0ZDo6dXBwZXJfYm91bmQoX19maXJzdCwg
X19taWRkbGUsICpfX3NlY29uZF9jdXQsCiAgICAgIF9fY29tcCk7CiAgIF9fbGVuMTEgPSBzdGQ6
OmRpc3RhbmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0KTsKIH0KICAgICAgc3RkOjpyb3RhdGUoX19m
aXJzdF9jdXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQpOwogICAgICBfQmlkaXJlY3Rpb25hbEl0
ZXJhdG9yIF9fbmV3X21pZGRsZSA9IF9fZmlyc3RfY3V0OwogICAgICBzdGQ6OmFkdmFuY2UoX19u
ZXdfbWlkZGxlLCBzdGQ6OmRpc3RhbmNlKF9fbWlkZGxlLCBfX3NlY29uZF9jdXQpKTsKICAgICAg
c3RkOjpfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX25ld19t
aWRkbGUsCiAgICAgIF9fbGVuMTEsIF9fbGVuMjIsIF9fY29tcCk7CiAgICAgIHN0ZDo6X19tZXJn
ZV93aXRob3V0X2J1ZmZlcihfX25ld19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sYXN0LAogICAg
ICBfX2xlbjEgLSBfX2xlbjExLCBfX2xlbjIgLSBfX2xlbjIyLCBfX2NvbXApOwogICAgfQoKCgoK
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIHZvaWQKICAg
IF9faW5wbGFjZV9zdGFibGVfc29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAg
ICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQogICAgewogICAgICBpZiAoX19sYXN0IC0g
X19maXJzdCA8IDE1KQogewogICBzdGQ6Ol9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0
KTsKICAgcmV0dXJuOwogfQogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19taWRkbGUgPSBf
X2ZpcnN0ICsgKF9fbGFzdCAtIF9fZmlyc3QpIC8gMjsKICAgICAgc3RkOjpfX2lucGxhY2Vfc3Rh
YmxlX3NvcnQoX19maXJzdCwgX19taWRkbGUpOwogICAgICBzdGQ6Ol9faW5wbGFjZV9zdGFibGVf
c29ydChfX21pZGRsZSwgX19sYXN0KTsKICAgICAgc3RkOjpfX21lcmdlX3dpdGhvdXRfYnVmZmVy
KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsCiAgICAgIF9fbWlkZGxlIC0gX19maXJzdCwKICAg
ICAgX19sYXN0IC0gX19taWRkbGUpOwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2lu
cGxhY2Vfc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICBp
ZiAoX19sYXN0IC0gX19maXJzdCA8IDE1KQogewogICBzdGQ6Ol9faW5zZXJ0aW9uX3NvcnQoX19m
aXJzdCwgX19sYXN0LCBfX2NvbXApOwogICByZXR1cm47CiB9CiAgICAgIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciBfX21pZGRsZSA9IF9fZmlyc3QgKyAoX19sYXN0IC0gX19maXJzdCkgLyAyOwogICAg
ICBzdGQ6Ol9faW5wbGFjZV9zdGFibGVfc29ydChfX2ZpcnN0LCBfX21pZGRsZSwgX19jb21wKTsK
ICAgICAgc3RkOjpfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX19taWRkbGUsIF9fbGFzdCwgX19jb21w
KTsKICAgICAgc3RkOjpfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9fbWlkZGxlLCBf
X2xhc3QsCiAgICAgIF9fbWlkZGxlIC0gX19maXJzdCwKICAgICAgX19sYXN0IC0gX19taWRkbGUs
CiAgICAgIF9fY29tcCk7CiAgICB9CiMgMzIyNyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVu
YW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvcj4KICAgIF9P
dXRwdXRJdGVyYXRvcgogICAgbWVyZ2UoX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJ
dGVyYXRvcjEgX19sYXN0MSwKICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVy
YXRvcjIgX19sYXN0MiwKICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewogICAgICB0
eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcjE+Ojp2YWx1ZV90
eXBlCiBfVmFsdWVUeXBlMTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X0lucHV0SXRlcmF0b3IyPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTI7CgoKICAgICAKICAgICAK
ICAgICAKCiAgICAgCgogICAgIAogICAgICA7CiAgICAgIDsKCiAgICAgIHdoaWxlIChfX2ZpcnN0
MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiB7CiAgIGlmICgqX19maXJzdDIg
PCAqX19maXJzdDEpCiAgICAgewogICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QyOwogICAgICAg
KytfX2ZpcnN0MjsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICAqX19yZXN1bHQgPSAqX19m
aXJzdDE7CiAgICAgICArK19fZmlyc3QxOwogICAgIH0KICAgKytfX3Jlc3VsdDsKIH0KICAgICAg
cmV0dXJuIHN0ZDo6Y29weShfX2ZpcnN0MiwgX19sYXN0Miwgc3RkOjpjb3B5KF9fZmlyc3QxLCBf
X2xhc3QxLAogICAgICAgICAgX19yZXN1bHQpKTsKICAgIH0KIyAzMjg4ICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0
ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX091dHB1dEl0
ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgbWVyZ2Uo
X0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgX0lu
cHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwKICAgX091dHB1
dEl0ZXJhdG9yIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yMT46OnZhbHVlX3R5cGUKIF9W
YWx1ZVR5cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJ
dGVyYXRvcjI+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlMjsKCgogICAgIAogICAgIAogICAgIAoK
ICAgICAKCiAgICAgCgogICAgICA7CiAgICAgIDsKCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBf
X2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiB7CiAgIGlmIChfX2NvbXAoKl9fZmlyc3Qy
LCAqX19maXJzdDEpKQogICAgIHsKICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsKICAgICAg
ICsrX19maXJzdDI7CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgKl9fcmVzdWx0ID0gKl9f
Zmlyc3QxOwogICAgICAgKytfX2ZpcnN0MTsKICAgICB9CiAgICsrX19yZXN1bHQ7CiB9CiAgICAg
IHJldHVybiBzdGQ6OmNvcHkoX19maXJzdDIsIF9fbGFzdDIsIHN0ZDo6Y29weShfX2ZpcnN0MSwg
X19sYXN0MSwKICAgICAgICAgIF9fcmVzdWx0KSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcjEsIHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcjIs
CiAgICB0eXBlbmFtZSBfRGlzdGFuY2U+CiAgICB2b2lkCiAgICBfX21lcmdlX3NvcnRfbG9vcChf
UmFuZG9tQWNjZXNzSXRlcmF0b3IxIF9fZmlyc3QsCiAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yMSBfX2xhc3QsCiAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yMiBfX3Jlc3VsdCwKICAg
ICAgICBfRGlzdGFuY2UgX19zdGVwX3NpemUpCiAgICB7CiAgICAgIGNvbnN0IF9EaXN0YW5jZSBf
X3R3b19zdGVwID0gMiAqIF9fc3RlcF9zaXplOwoKICAgICAgd2hpbGUgKF9fbGFzdCAtIF9fZmly
c3QgPj0gX190d29fc3RlcCkKIHsKICAgX19yZXN1bHQgPSBzdGQ6Om1lcmdlKF9fZmlyc3QsIF9f
Zmlyc3QgKyBfX3N0ZXBfc2l6ZSwKICAgIF9fZmlyc3QgKyBfX3N0ZXBfc2l6ZSwgX19maXJzdCAr
IF9fdHdvX3N0ZXAsCiAgICBfX3Jlc3VsdCk7CiAgIF9fZmlyc3QgKz0gX190d29fc3RlcDsKIH0K
CiAgICAgIF9fc3RlcF9zaXplID0gc3RkOjptaW4oX0Rpc3RhbmNlKF9fbGFzdCAtIF9fZmlyc3Qp
LCBfX3N0ZXBfc2l6ZSk7CiAgICAgIHN0ZDo6bWVyZ2UoX19maXJzdCwgX19maXJzdCArIF9fc3Rl
cF9zaXplLCBfX2ZpcnN0ICsgX19zdGVwX3NpemUsIF9fbGFzdCwKICAgX19yZXN1bHQpOwogICAg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IxLCB0eXBlbmFtZSBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0Rpc3RhbmNlLCB0eXBlbmFtZSBf
Q29tcGFyZT4KICAgIHZvaWQKICAgIF9fbWVyZ2Vfc29ydF9sb29wKF9SYW5kb21BY2Nlc3NJdGVy
YXRvcjEgX19maXJzdCwKICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IxIF9fbGFzdCwKICAg
ICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IyIF9fcmVzdWx0LCBfRGlzdGFuY2UgX19zdGVwX3Np
emUsCiAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICBjb25zdCBfRGlzdGFuY2Ug
X190d29fc3RlcCA9IDIgKiBfX3N0ZXBfc2l6ZTsKCiAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2Zp
cnN0ID49IF9fdHdvX3N0ZXApCiB7CiAgIF9fcmVzdWx0ID0gc3RkOjptZXJnZShfX2ZpcnN0LCBf
X2ZpcnN0ICsgX19zdGVwX3NpemUsCiAgICBfX2ZpcnN0ICsgX19zdGVwX3NpemUsIF9fZmlyc3Qg
KyBfX3R3b19zdGVwLAogICAgX19yZXN1bHQsCiAgICBfX2NvbXApOwogICBfX2ZpcnN0ICs9IF9f
dHdvX3N0ZXA7CiB9CiAgICAgIF9fc3RlcF9zaXplID0gc3RkOjptaW4oX0Rpc3RhbmNlKF9fbGFz
dCAtIF9fZmlyc3QpLCBfX3N0ZXBfc2l6ZSk7CgogICAgICBzdGQ6Om1lcmdlKF9fZmlyc3QsIF9f
Zmlyc3QgKyBfX3N0ZXBfc2l6ZSwKICAgX19maXJzdCArIF9fc3RlcF9zaXplLCBfX2xhc3QsCiAg
IF9fcmVzdWx0LAogICBfX2NvbXApOwogICAgfQoKICBlbnVtIHsgX1NfY2h1bmtfc2l6ZSA9IDcg
fTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBf
RGlzdGFuY2U+CiAgICB2b2lkCiAgICBfX2NodW5rX2luc2VydGlvbl9zb3J0KF9SYW5kb21BY2Nl
c3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAog
ICAgICBfRGlzdGFuY2UgX19jaHVua19zaXplKQogICAgewogICAgICB3aGlsZSAoX19sYXN0IC0g
X19maXJzdCA+PSBfX2NodW5rX3NpemUpCiB7CiAgIHN0ZDo6X19pbnNlcnRpb25fc29ydChfX2Zp
cnN0LCBfX2ZpcnN0ICsgX19jaHVua19zaXplKTsKICAgX19maXJzdCArPSBfX2NodW5rX3NpemU7
CiB9CiAgICAgIHN0ZDo6X19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QpOwogICAgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0
YW5jZSwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2NodW5rX2luc2VydGlvbl9z
b3J0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19sYXN0LAogICAgICBfRGlzdGFuY2UgX19jaHVua19zaXplLCBfQ29tcGFyZSBfX2Nv
bXApCiAgICB7CiAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID49IF9fY2h1bmtfc2l6ZSkK
IHsKICAgc3RkOjpfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fZmlyc3QgKyBfX2NodW5rX3Np
emUsIF9fY29tcCk7CiAgIF9fZmlyc3QgKz0gX19jaHVua19zaXplOwogfQogICAgICBzdGQ6Ol9f
aW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2NvbXApOwogICAgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Qb2ludGVyPgogICAg
dm9pZAogICAgX19tZXJnZV9zb3J0X3dpdGhfYnVmZmVyKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LAogICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX1BvaW50ZXIgX19idWZmZXIpCiAgICB7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVu
Y2VfdHlwZQogX0Rpc3RhbmNlOwoKICAgICAgY29uc3QgX0Rpc3RhbmNlIF9fbGVuID0gX19sYXN0
IC0gX19maXJzdDsKICAgICAgY29uc3QgX1BvaW50ZXIgX19idWZmZXJfbGFzdCA9IF9fYnVmZmVy
ICsgX19sZW47CgogICAgICBfRGlzdGFuY2UgX19zdGVwX3NpemUgPSBfU19jaHVua19zaXplOwog
ICAgICBzdGQ6Ol9fY2h1bmtfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX3N0ZXBf
c2l6ZSk7CgogICAgICB3aGlsZSAoX19zdGVwX3NpemUgPCBfX2xlbikKIHsKICAgc3RkOjpfX21l
cmdlX3NvcnRfbG9vcChfX2ZpcnN0LCBfX2xhc3QsIF9fYnVmZmVyLCBfX3N0ZXBfc2l6ZSk7CiAg
IF9fc3RlcF9zaXplICo9IDI7CiAgIHN0ZDo6X19tZXJnZV9zb3J0X2xvb3AoX19idWZmZXIsIF9f
YnVmZmVyX2xhc3QsIF9fZmlyc3QsIF9fc3RlcF9zaXplKTsKICAgX19zdGVwX3NpemUgKj0gMjsK
IH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBl
bmFtZSBfUG9pbnRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX21lcmdlX3Nv
cnRfd2l0aF9idWZmZXIoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
UG9pbnRlciBfX2J1ZmZlciwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNl
X3R5cGUKIF9EaXN0YW5jZTsKCiAgICAgIGNvbnN0IF9EaXN0YW5jZSBfX2xlbiA9IF9fbGFzdCAt
IF9fZmlyc3Q7CiAgICAgIGNvbnN0IF9Qb2ludGVyIF9fYnVmZmVyX2xhc3QgPSBfX2J1ZmZlciAr
IF9fbGVuOwoKICAgICAgX0Rpc3RhbmNlIF9fc3RlcF9zaXplID0gX1NfY2h1bmtfc2l6ZTsKICAg
ICAgc3RkOjpfX2NodW5rX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19zdGVwX3Np
emUsIF9fY29tcCk7CgogICAgICB3aGlsZSAoX19zdGVwX3NpemUgPCBfX2xlbikKIHsKICAgc3Rk
OjpfX21lcmdlX3NvcnRfbG9vcChfX2ZpcnN0LCBfX2xhc3QsIF9fYnVmZmVyLAogICAgIF9fc3Rl
cF9zaXplLCBfX2NvbXApOwogICBfX3N0ZXBfc2l6ZSAqPSAyOwogICBzdGQ6Ol9fbWVyZ2Vfc29y
dF9sb29wKF9fYnVmZmVyLCBfX2J1ZmZlcl9sYXN0LCBfX2ZpcnN0LAogICAgIF9fc3RlcF9zaXpl
LCBfX2NvbXApOwogICBfX3N0ZXBfc2l6ZSAqPSAyOwogfQogICAgfQoKCgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IxLCB0eXBlbmFtZSBfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IzPgogICAgX0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvcjMKICAgIF9fbWVyZ2VfYmFja3dhcmQoX0JpZGlyZWN0aW9uYWxJ
dGVyYXRvcjEgX19maXJzdDEsCiAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBfX2xhc3Qx
LAogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIgX19maXJzdDIsCiAgICAgICBfQmlkaXJl
Y3Rpb25hbEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjMg
X19yZXN1bHQpCiAgICB7CiAgICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxKQogcmV0dXJuIHN0
ZDo6Y29weV9iYWNrd2FyZChfX2ZpcnN0MiwgX19sYXN0MiwgX19yZXN1bHQpOwogICAgICBpZiAo
X19maXJzdDIgPT0gX19sYXN0MikKIHJldHVybiBzdGQ6OmNvcHlfYmFja3dhcmQoX19maXJzdDEs
IF9fbGFzdDEsIF9fcmVzdWx0KTsKICAgICAgLS1fX2xhc3QxOwogICAgICAtLV9fbGFzdDI7CiAg
ICAgIHdoaWxlICh0cnVlKQogewogICBpZiAoKl9fbGFzdDIgPCAqX19sYXN0MSkKICAgICB7CiAg
ICAgICAqLS1fX3Jlc3VsdCA9ICpfX2xhc3QxOwogICAgICAgaWYgKF9fZmlyc3QxID09IF9fbGFz
dDEpCiAgcmV0dXJuIHN0ZDo6Y29weV9iYWNrd2FyZChfX2ZpcnN0MiwgKytfX2xhc3QyLCBfX3Jl
c3VsdCk7CiAgICAgICAtLV9fbGFzdDE7CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgKi0t
X19yZXN1bHQgPSAqX19sYXN0MjsKICAgICAgIGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QyKQogIHJl
dHVybiBzdGQ6OmNvcHlfYmFja3dhcmQoX19maXJzdDEsICsrX19sYXN0MSwgX19yZXN1bHQpOwog
ICAgICAgLS1fX2xhc3QyOwogICAgIH0KIH0KICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRv
cjIsCiAgICB0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMywgdHlwZW5hbWUgX0NvbXBh
cmU+CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMwogICAgX19tZXJnZV9iYWNrd2FyZChfQmlk
aXJlY3Rpb25hbEl0ZXJhdG9yMSBfX2ZpcnN0MSwKICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0
b3IxIF9fbGFzdDEsCiAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMiBfX2ZpcnN0MiwKICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IyIF9fbGFzdDIsCiAgICAgICBfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yMyBfX3Jlc3VsdCwKICAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAg
aWYgKF9fZmlyc3QxID09IF9fbGFzdDEpCiByZXR1cm4gc3RkOjpjb3B5X2JhY2t3YXJkKF9fZmly
c3QyLCBfX2xhc3QyLCBfX3Jlc3VsdCk7CiAgICAgIGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QyKQog
cmV0dXJuIHN0ZDo6Y29weV9iYWNrd2FyZChfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpOwog
ICAgICAtLV9fbGFzdDE7CiAgICAgIC0tX19sYXN0MjsKICAgICAgd2hpbGUgKHRydWUpCiB7CiAg
IGlmIChfX2NvbXAoKl9fbGFzdDIsICpfX2xhc3QxKSkKICAgICB7CiAgICAgICAqLS1fX3Jlc3Vs
dCA9ICpfX2xhc3QxOwogICAgICAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEpCiAgcmV0dXJuIHN0
ZDo6Y29weV9iYWNrd2FyZChfX2ZpcnN0MiwgKytfX2xhc3QyLCBfX3Jlc3VsdCk7CiAgICAgICAt
LV9fbGFzdDE7CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgKi0tX19yZXN1bHQgPSAqX19s
YXN0MjsKICAgICAgIGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QyKQogIHJldHVybiBzdGQ6OmNvcHlf
YmFja3dhcmQoX19maXJzdDEsICsrX19sYXN0MSwgX19yZXN1bHQpOwogICAgICAgLS1fX2xhc3Qy
OwogICAgIH0KIH0KICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIsCiAgICB0eXBlbmFt
ZSBfRGlzdGFuY2U+CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMQogICAgX19yb3RhdGVfYWRh
cHRpdmUoX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjEgX19maXJzdCwKICAgICAgICBfQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yMSBfX21pZGRsZSwKICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBf
X2xhc3QsCiAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwKICAgICAg
ICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMiBfX2J1ZmZlciwKICAgICAgICBfRGlzdGFuY2UgX19i
dWZmZXJfc2l6ZSkKICAgIHsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIgX19idWZmZXJf
ZW5kOwogICAgICBpZiAoX19sZW4xID4gX19sZW4yICYmIF9fbGVuMiA8PSBfX2J1ZmZlcl9zaXpl
KQogewogICBfX2J1ZmZlcl9lbmQgPSBzdGQ6OmNvcHkoX19taWRkbGUsIF9fbGFzdCwgX19idWZm
ZXIpOwogICBzdGQ6OmNvcHlfYmFja3dhcmQoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCk7CiAg
IHJldHVybiBzdGQ6OmNvcHkoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwgX19maXJzdCk7CiB9CiAg
ICAgIGVsc2UgaWYgKF9fbGVuMSA8PSBfX2J1ZmZlcl9zaXplKQogewogICBfX2J1ZmZlcl9lbmQg
PSBzdGQ6OmNvcHkoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyKTsKICAgc3RkOjpjb3B5KF9f
bWlkZGxlLCBfX2xhc3QsIF9fZmlyc3QpOwogICByZXR1cm4gc3RkOjpjb3B5X2JhY2t3YXJkKF9f
YnVmZmVyLCBfX2J1ZmZlcl9lbmQsIF9fbGFzdCk7CiB9CiAgICAgIGVsc2UKIHsKICAgc3RkOjpy
b3RhdGUoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCk7CiAgIHN0ZDo6YWR2YW5jZShfX2ZpcnN0
LCBzdGQ6OmRpc3RhbmNlKF9fbWlkZGxlLCBfX2xhc3QpKTsKICAgcmV0dXJuIF9fZmlyc3Q7CiB9
CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciwg
dHlwZW5hbWUgX0Rpc3RhbmNlLAogICAgdHlwZW5hbWUgX1BvaW50ZXI+CiAgICB2b2lkCiAgICBf
X21lcmdlX2FkYXB0aXZlKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAg
ICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX21pZGRsZSwKICAgICAgIF9CaWRp
cmVjdGlvbmFsSXRlcmF0b3IgX19sYXN0LAogICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3Rh
bmNlIF9fbGVuMiwKICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UgX19idWZmZXJf
c2l6ZSkKICAgIHsKICAgICAgaWYgKF9fbGVuMSA8PSBfX2xlbjIgJiYgX19sZW4xIDw9IF9fYnVm
ZmVyX3NpemUpCiB7CiAgIF9Qb2ludGVyIF9fYnVmZmVyX2VuZCA9IHN0ZDo6Y29weShfX2ZpcnN0
LCBfX21pZGRsZSwgX19idWZmZXIpOwogICBzdGQ6Om1lcmdlKF9fYnVmZmVyLCBfX2J1ZmZlcl9l
bmQsIF9fbWlkZGxlLCBfX2xhc3QsIF9fZmlyc3QpOwogfQogICAgICBlbHNlIGlmIChfX2xlbjIg
PD0gX19idWZmZXJfc2l6ZSkKIHsKICAgX1BvaW50ZXIgX19idWZmZXJfZW5kID0gc3RkOjpjb3B5
KF9fbWlkZGxlLCBfX2xhc3QsIF9fYnVmZmVyKTsKICAgc3RkOjpfX21lcmdlX2JhY2t3YXJkKF9f
Zmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwKICAgIF9fYnVmZmVyX2VuZCwgX19sYXN0KTsKIH0K
ICAgICAgZWxzZQogewogICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3RfY3V0ID0gX19m
aXJzdDsKICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX3NlY29uZF9jdXQgPSBfX21pZGRsZTsK
ICAgX0Rpc3RhbmNlIF9fbGVuMTEgPSAwOwogICBfRGlzdGFuY2UgX19sZW4yMiA9IDA7CiAgIGlm
IChfX2xlbjEgPiBfX2xlbjIpCiAgICAgewogICAgICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7CiAg
ICAgICBzdGQ6OmFkdmFuY2UoX19maXJzdF9jdXQsIF9fbGVuMTEpOwogICAgICAgX19zZWNvbmRf
Y3V0ID0gc3RkOjpsb3dlcl9ib3VuZChfX21pZGRsZSwgX19sYXN0LAogICAgICAgICAgICpfX2Zp
cnN0X2N1dCk7CiAgICAgICBfX2xlbjIyID0gc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19zZWNv
bmRfY3V0KTsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBfX2xlbjIyID0gX19sZW4yIC8g
MjsKICAgICAgIHN0ZDo6YWR2YW5jZShfX3NlY29uZF9jdXQsIF9fbGVuMjIpOwogICAgICAgX19m
aXJzdF9jdXQgPSBzdGQ6OnVwcGVyX2JvdW5kKF9fZmlyc3QsIF9fbWlkZGxlLAogICAgICAgICAg
Kl9fc2Vjb25kX2N1dCk7CiAgICAgICBfX2xlbjExID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBf
X2ZpcnN0X2N1dCk7CiAgICAgfQogICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbmV3X21pZGRs
ZSA9CiAgICAgc3RkOjpfX3JvdGF0ZV9hZGFwdGl2ZShfX2ZpcnN0X2N1dCwgX19taWRkbGUsIF9f
c2Vjb25kX2N1dCwKICAgICAgIF9fbGVuMSAtIF9fbGVuMTEsIF9fbGVuMjIsIF9fYnVmZmVyLAog
ICAgICAgX19idWZmZXJfc2l6ZSk7CiAgIHN0ZDo6X19tZXJnZV9hZGFwdGl2ZShfX2ZpcnN0LCBf
X2ZpcnN0X2N1dCwgX19uZXdfbWlkZGxlLCBfX2xlbjExLAogICAgX19sZW4yMiwgX19idWZmZXIs
IF9fYnVmZmVyX3NpemUpOwogICBzdGQ6Ol9fbWVyZ2VfYWRhcHRpdmUoX19uZXdfbWlkZGxlLCBf
X3NlY29uZF9jdXQsIF9fbGFzdCwKICAgIF9fbGVuMSAtIF9fbGVuMTEsCiAgICBfX2xlbjIgLSBf
X2xlbjIyLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7CiB9CiAgICB9CgoKCgoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlLCB0
eXBlbmFtZSBfUG9pbnRlciwKICAgIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19t
ZXJnZV9hZGFwdGl2ZShfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgICAg
ICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19taWRkbGUsCiAgICAgICBfQmlkaXJl
Y3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0YW5j
ZSBfX2xlbjIsCiAgICAgICBfUG9pbnRlciBfX2J1ZmZlciwgX0Rpc3RhbmNlIF9fYnVmZmVyX3Np
emUsCiAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIGlmIChfX2xlbjEgPD0gX19s
ZW4yICYmIF9fbGVuMSA8PSBfX2J1ZmZlcl9zaXplKQogewogICBfUG9pbnRlciBfX2J1ZmZlcl9l
bmQgPSBzdGQ6OmNvcHkoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyKTsKICAgc3RkOjptZXJn
ZShfX2J1ZmZlciwgX19idWZmZXJfZW5kLCBfX21pZGRsZSwgX19sYXN0LCBfX2ZpcnN0LCBfX2Nv
bXApOwogfQogICAgICBlbHNlIGlmIChfX2xlbjIgPD0gX19idWZmZXJfc2l6ZSkKIHsKICAgX1Bv
aW50ZXIgX19idWZmZXJfZW5kID0gc3RkOjpjb3B5KF9fbWlkZGxlLCBfX2xhc3QsIF9fYnVmZmVy
KTsKICAgc3RkOjpfX21lcmdlX2JhY2t3YXJkKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwg
X19idWZmZXJfZW5kLAogICAgX19sYXN0LCBfX2NvbXApOwogfQogICAgICBlbHNlCiB7CiAgIF9C
aWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdF9jdXQgPSBfX2ZpcnN0OwogICBfQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yIF9fc2Vjb25kX2N1dCA9IF9fbWlkZGxlOwogICBfRGlzdGFuY2UgX19sZW4x
MSA9IDA7CiAgIF9EaXN0YW5jZSBfX2xlbjIyID0gMDsKICAgaWYgKF9fbGVuMSA+IF9fbGVuMikK
ICAgICB7CiAgICAgICBfX2xlbjExID0gX19sZW4xIC8gMjsKICAgICAgIHN0ZDo6YWR2YW5jZShf
X2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgICAgICBfX3NlY29uZF9jdXQgPSBzdGQ6Omxvd2VyX2Jv
dW5kKF9fbWlkZGxlLCBfX2xhc3QsICpfX2ZpcnN0X2N1dCwKICAgICAgICAgICBfX2NvbXApOwog
ICAgICAgX19sZW4yMiA9IHN0ZDo6ZGlzdGFuY2UoX19taWRkbGUsIF9fc2Vjb25kX2N1dCk7CiAg
ICAgfQogICBlbHNlCiAgICAgewogICAgICAgX19sZW4yMiA9IF9fbGVuMiAvIDI7CiAgICAgICBz
dGQ6OmFkdmFuY2UoX19zZWNvbmRfY3V0LCBfX2xlbjIyKTsKICAgICAgIF9fZmlyc3RfY3V0ID0g
c3RkOjp1cHBlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1dCwKICAgICAg
ICAgIF9fY29tcCk7CiAgICAgICBfX2xlbjExID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2Zp
cnN0X2N1dCk7CiAgICAgfQogICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbmV3X21pZGRsZSA9
CiAgICAgc3RkOjpfX3JvdGF0ZV9hZGFwdGl2ZShfX2ZpcnN0X2N1dCwgX19taWRkbGUsIF9fc2Vj
b25kX2N1dCwKICAgICAgIF9fbGVuMSAtIF9fbGVuMTEsIF9fbGVuMjIsIF9fYnVmZmVyLAogICAg
ICAgX19idWZmZXJfc2l6ZSk7CiAgIHN0ZDo6X19tZXJnZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX2Zp
cnN0X2N1dCwgX19uZXdfbWlkZGxlLCBfX2xlbjExLAogICAgX19sZW4yMiwgX19idWZmZXIsIF9f
YnVmZmVyX3NpemUsIF9fY29tcCk7CiAgIHN0ZDo6X19tZXJnZV9hZGFwdGl2ZShfX25ld19taWRk
bGUsIF9fc2Vjb25kX2N1dCwgX19sYXN0LAogICAgX19sZW4xIC0gX19sZW4xMSwKICAgIF9fbGVu
MiAtIF9fbGVuMjIsIF9fYnVmZmVyLAogICAgX19idWZmZXJfc2l6ZSwgX19jb21wKTsKIH0KICAg
IH0KIyAzNzExICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3I+CiAgICB2b2lkCiAgICBpbnBs
YWNlX21lcmdlKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwKICAgIF9CaWRpcmVjdGlv
bmFsSXRlcmF0b3IgX19taWRkbGUsCiAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCkK
ICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0JpZGlyZWN0aW9u
YWxJdGVyYXRvcj46OnZhbHVlX3R5cGUKICAgICAgICAgIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9CaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZm
ZXJlbmNlX3R5cGUKICAgICAgICAgIF9EaXN0YW5jZVR5cGU7CgoKICAgICAKCiAgICAgCiAgICAg
IDsKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUgfHwgX19taWRkbGUgPT0g
X19sYXN0KQogcmV0dXJuOwoKICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbjEgPSBzdGQ6OmRpc3Rh
bmNlKF9fZmlyc3QsIF9fbWlkZGxlKTsKICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbjIgPSBzdGQ6
OmRpc3RhbmNlKF9fbWlkZGxlLCBfX2xhc3QpOwoKICAgICAgX1RlbXBvcmFyeV9idWZmZXI8X0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvciwgX1ZhbHVlVHlwZT4gX19idWYoX19maXJzdCwKICAgICAgICAg
IF9fbGFzdCk7CiAgICAgIGlmIChfX2J1Zi5iZWdpbigpID09IDApCiBzdGQ6Ol9fbWVyZ2Vfd2l0
aG91dF9idWZmZXIoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX19sZW4xLCBfX2xlbjIpOwog
ICAgICBlbHNlCiBzdGQ6Ol9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19taWRkbGUsIF9fbGFz
dCwgX19sZW4xLCBfX2xlbjIsCiAgICAgICAgIF9fYnVmLmJlZ2luKCksIF9EaXN0YW5jZVR5cGUo
X19idWYuc2l6ZSgpKSk7CiAgICB9CiMgMzc2NSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9y
LCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIGlucGxhY2VfbWVyZ2UoX0JpZGlyZWN0
aW9uYWxJdGVyYXRvciBfX2ZpcnN0LAogICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX21pZGRs
ZSwKICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19sYXN0LAogICAgX0NvbXBhcmUgX19jb21w
KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICAgICAgICAgX1ZhbHVlVHlwZTsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0JpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRp
ZmZlcmVuY2VfdHlwZQogICAgICAgICAgX0Rpc3RhbmNlVHlwZTsKCgogICAgIAoKICAgICAKCiAg
ICAgIDsKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUgfHwgX19taWRkbGUg
PT0gX19sYXN0KQogcmV0dXJuOwoKICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBfX2xlbjEgPSBz
dGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbWlkZGxlKTsKICAgICAgY29uc3QgX0Rpc3RhbmNlVHlw
ZSBfX2xlbjIgPSBzdGQ6OmRpc3RhbmNlKF9fbWlkZGxlLCBfX2xhc3QpOwoKICAgICAgX1RlbXBv
cmFyeV9idWZmZXI8X0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgX1ZhbHVlVHlwZT4gX19idWYoX19m
aXJzdCwKICAgICAgICAgIF9fbGFzdCk7CiAgICAgIGlmIChfX2J1Zi5iZWdpbigpID09IDApCiBz
dGQ6Ol9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX19s
ZW4xLAogICAgICAgIF9fbGVuMiwgX19jb21wKTsKICAgICAgZWxzZQogc3RkOjpfX21lcmdlX2Fk
YXB0aXZlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsIF9fbGVuMSwgX19sZW4yLAogICAgICAg
ICBfX2J1Zi5iZWdpbigpLCBfRGlzdGFuY2VUeXBlKF9fYnVmLnNpemUoKSksCiAgICAgICAgIF9f
Y29tcCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
dHlwZW5hbWUgX1BvaW50ZXIsCiAgICB0eXBlbmFtZSBfRGlzdGFuY2U+CiAgICB2b2lkCiAgICBf
X3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAg
ICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBfUG9pbnRlciBfX2J1ZmZlciwgX0Rpc3RhbmNlIF9fYnVmZmVyX3NpemUpCiAgICB7CiAgICAg
IGNvbnN0IF9EaXN0YW5jZSBfX2xlbiA9IChfX2xhc3QgLSBfX2ZpcnN0ICsgMSkgLyAyOwogICAg
ICBjb25zdCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19taWRkbGUgPSBfX2ZpcnN0ICsgX19sZW47
CiAgICAgIGlmIChfX2xlbiA+IF9fYnVmZmVyX3NpemUpCiB7CiAgIHN0ZDo6X19zdGFibGVfc29y
dF9hZGFwdGl2ZShfX2ZpcnN0LCBfX21pZGRsZSwKICAgICAgICAgIF9fYnVmZmVyLCBfX2J1ZmZl
cl9zaXplKTsKICAgc3RkOjpfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fbWlkZGxlLCBfX2xhc3Qs
CiAgICAgICAgICBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7CiB9CiAgICAgIGVsc2UKIHsKICAg
c3RkOjpfX21lcmdlX3NvcnRfd2l0aF9idWZmZXIoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVy
KTsKICAgc3RkOjpfX21lcmdlX3NvcnRfd2l0aF9idWZmZXIoX19taWRkbGUsIF9fbGFzdCwgX19i
dWZmZXIpOwogfQogICAgICBzdGQ6Ol9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19taWRkbGUs
IF9fbGFzdCwKICAgICAgIF9EaXN0YW5jZShfX21pZGRsZSAtIF9fZmlyc3QpLAogICAgICAgX0Rp
c3RhbmNlKF9fbGFzdCAtIF9fbWlkZGxlKSwKICAgICAgIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXpl
KTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBl
bmFtZSBfUG9pbnRlciwKICAgIHR5cGVuYW1lIF9EaXN0YW5jZSwgdHlwZW5hbWUgX0NvbXBhcmU+
CiAgICB2b2lkCiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LAogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBfUG9pbnRlciBfX2J1ZmZlciwgX0Rpc3RhbmNlIF9fYnVmZmVyX3Np
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAg
ICAgY29uc3QgX0Rpc3RhbmNlIF9fbGVuID0gKF9fbGFzdCAtIF9fZmlyc3QgKyAxKSAvIDI7CiAg
ICAgIGNvbnN0IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX21pZGRsZSA9IF9fZmlyc3QgKyBfX2xl
bjsKICAgICAgaWYgKF9fbGVuID4gX19idWZmZXJfc2l6ZSkKIHsKICAgc3RkOjpfX3N0YWJsZV9z
b3J0X2FkYXB0aXZlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwKICAgICAgICAgIF9fYnVm
ZmVyX3NpemUsIF9fY29tcCk7CiAgIHN0ZDo6X19zdGFibGVfc29ydF9hZGFwdGl2ZShfX21pZGRs
ZSwgX19sYXN0LCBfX2J1ZmZlciwKICAgICAgICAgIF9fYnVmZmVyX3NpemUsIF9fY29tcCk7CiB9
CiAgICAgIGVsc2UKIHsKICAgc3RkOjpfX21lcmdlX3NvcnRfd2l0aF9idWZmZXIoX19maXJzdCwg
X19taWRkbGUsIF9fYnVmZmVyLCBfX2NvbXApOwogICBzdGQ6Ol9fbWVyZ2Vfc29ydF93aXRoX2J1
ZmZlcihfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlciwgX19jb21wKTsKIH0KICAgICAgc3RkOjpf
X21lcmdlX2FkYXB0aXZlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsCiAgICAgICBfRGlzdGFu
Y2UoX19taWRkbGUgLSBfX2ZpcnN0KSwKICAgICAgIF9EaXN0YW5jZShfX2xhc3QgLSBfX21pZGRs
ZSksCiAgICAgICBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSwKICAgICAgIF9fY29tcCk7CiAgICB9
CiMgMzg3NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAgICBpbmxpbmUgdm9pZAogICAg
c3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciBfX2xhc3QpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46
OmRpZmZlcmVuY2VfdHlwZQogX0Rpc3RhbmNlVHlwZTsKCgogICAgIAoKICAgICAKICAgICAgOwoK
ICAgICAgX1RlbXBvcmFyeV9idWZmZXI8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBfVmFsdWVUeXBl
PiBfX2J1ZihfX2ZpcnN0LAogICAgICAgICBfX2xhc3QpOwogICAgICBpZiAoX19idWYuYmVnaW4o
KSA9PSAwKQogc3RkOjpfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX19maXJzdCwgX19sYXN0KTsKICAg
ICAgZWxzZQogc3RkOjpfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fZmlyc3QsIF9fbGFzdCwgX19i
dWYuYmVnaW4oKSwKICAgICAgICBfRGlzdGFuY2VUeXBlKF9fYnVmLnNpemUoKSkpOwogICAgfQoj
IDM5MTUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAg
IGlubGluZSB2b2lkCiAgICBzdGFibGVfc29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJz
dCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICBfQ29tcGFyZSBfX2NvbXApCiAgICB7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVy
YXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRl
cmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogX0Rp
c3RhbmNlVHlwZTsKCgogICAgIAoKICAgICAKCgogICAgICA7CgogICAgICBfVGVtcG9yYXJ5X2J1
ZmZlcjxfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIF9WYWx1ZVR5cGU+IF9fYnVmKF9fZmlyc3QsCiAg
ICAgICAgIF9fbGFzdCk7CiAgICAgIGlmIChfX2J1Zi5iZWdpbigpID09IDApCiBzdGQ6Ol9faW5w
bGFjZV9zdGFibGVfc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7CiAgICAgIGVsc2UKIHN0
ZDo6X19zdGFibGVfc29ydF9hZGFwdGl2ZShfX2ZpcnN0LCBfX2xhc3QsIF9fYnVmLmJlZ2luKCks
CiAgICAgICAgX0Rpc3RhbmNlVHlwZShfX2J1Zi5zaXplKCkpLCBfX2NvbXApOwogICAgfQoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfU2l6ZT4K
ICAgIHZvaWQKICAgIF9faW50cm9zZWxlY3QoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3Qs
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX250aCwKICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2xhc3QsIF9TaXplIF9fZGVwdGhfbGltaXQpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1
ZVR5cGU7CgogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+IDMpCiB7CiAgIGlmIChfX2Rl
cHRoX2xpbWl0ID09IDApCiAgICAgewogICAgICAgc3RkOjpfX2hlYXBfc2VsZWN0KF9fZmlyc3Qs
IF9fbnRoICsgMSwgX19sYXN0KTsKCiAgICAgICBzdGQ6Oml0ZXJfc3dhcChfX2ZpcnN0LCBfX250
aCk7CiAgICAgICByZXR1cm47CiAgICAgfQogICAtLV9fZGVwdGhfbGltaXQ7CiAgIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2N1dCA9CiAgICAgc3RkOjpfX3VuZ3VhcmRlZF9wYXJ0aXRpb24oX19m
aXJzdCwgX19sYXN0LAogICAgICAgICAgIF9WYWx1ZVR5cGUoc3RkOjpfX21lZGlhbigqX19maXJz
dCwKICAgICAgICAqKF9fZmlyc3QKICAgICAgICAgICsgKF9fbGFzdAogICAgICAgICAgICAgLSBf
X2ZpcnN0KQogICAgICAgICAgLyAyKSwKICAgICAgICAqKF9fbGFzdAogICAgICAgICAgLSAxKSkp
KTsKICAgaWYgKF9fY3V0IDw9IF9fbnRoKQogICAgIF9fZmlyc3QgPSBfX2N1dDsKICAgZWxzZQog
ICAgIF9fbGFzdCA9IF9fY3V0OwogfQogICAgICBzdGQ6Ol9faW5zZXJ0aW9uX3NvcnQoX19maXJz
dCwgX19sYXN0KTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2lu
dHJvc2VsZWN0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19udGgsCiAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfU2l6ZSBfX2Rl
cHRoX2xpbWl0LAogICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBf
VmFsdWVUeXBlOwoKICAgICAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAzKQogewogICBpZiAo
X19kZXB0aF9saW1pdCA9PSAwKQogICAgIHsKICAgICAgIHN0ZDo6X19oZWFwX3NlbGVjdChfX2Zp
cnN0LCBfX250aCArIDEsIF9fbGFzdCwgX19jb21wKTsKCiAgICAgICBzdGQ6Oml0ZXJfc3dhcChf
X2ZpcnN0LCBfX250aCk7CiAgICAgICByZXR1cm47CiAgICAgfQogICAtLV9fZGVwdGhfbGltaXQ7
CiAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2N1dCA9CiAgICAgc3RkOjpfX3VuZ3VhcmRlZF9w
YXJ0aXRpb24oX19maXJzdCwgX19sYXN0LAogICAgICAgICAgIF9WYWx1ZVR5cGUoc3RkOjpfX21l
ZGlhbigqX19maXJzdCwKICAgICAgICAqKF9fZmlyc3QKICAgICAgICAgICsgKF9fbGFzdAogICAg
ICAgICAgICAgLSBfX2ZpcnN0KQogICAgICAgICAgLyAyKSwKICAgICAgICAqKF9fbGFzdCAtIDEp
LAogICAgICAgIF9fY29tcCkpLAogICAgICAgICAgIF9fY29tcCk7CiAgIGlmIChfX2N1dCA8PSBf
X250aCkKICAgICBfX2ZpcnN0ID0gX19jdXQ7CiAgIGVsc2UKICAgICBfX2xhc3QgPSBfX2N1dDsK
IH0KICAgICAgc3RkOjpfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsK
ICAgIH0KIyA0MDMwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwog
IHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlubGluZSB2b2lk
CiAgICBudGhfZWxlbWVudChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fbnRoLAogIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpCiAgICB7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVy
YXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CgoKICAgICAKCiAgICAgCiAgICAgIDsKICAg
ICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0IHx8IF9fbnRoID09IF9fbGFzdCkKIHJl
dHVybjsKCiAgICAgIHN0ZDo6X19pbnRyb3NlbGVjdChfX2ZpcnN0LCBfX250aCwgX19sYXN0LAog
ICAgc3RkOjpfX2xnKF9fbGFzdCAtIF9fZmlyc3QpICogMik7CiAgICB9CiMgNDA2OCAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5lIHZvaWQK
ICAgIG50aF9lbGVtZW50KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19udGgsCiAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX0NvbXBh
cmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwoKCiAgICAgCgog
ICAgIAoKICAgICAgOwogICAgICA7CgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QgfHwgX19u
dGggPT0gX19sYXN0KQogcmV0dXJuOwoKICAgICAgc3RkOjpfX2ludHJvc2VsZWN0KF9fZmlyc3Qs
IF9fbnRoLCBfX2xhc3QsCiAgICBzdGQ6Ol9fbGcoX19sYXN0IC0gX19maXJzdCkgKiAyLCBfX2Nv
bXApOwogICAgfQojIDQxMDcgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5o
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgog
ICAgcGFpcjxfRm9yd2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJhdG9yPgogICAgZXF1YWxfcmFu
Z2UoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICBj
b25zdCBfVHAmIF9fdmFsKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OmRpZmZlcmVu
Y2VfdHlwZQogX0Rpc3RhbmNlVHlwZTsKCgogICAgIAogICAgIAogICAgIAogICAgICA7CgogICAg
ICBfRGlzdGFuY2VUeXBlIF9fbGVuID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwog
ICAgICBfRGlzdGFuY2VUeXBlIF9faGFsZjsKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX21pZGRs
ZSwgX19sZWZ0LCBfX3JpZ2h0OwoKICAgICAgd2hpbGUgKF9fbGVuID4gMCkKIHsKICAgX19oYWxm
ID0gX19sZW4gPj4gMTsKICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICBzdGQ6OmFkdmFuY2UoX19t
aWRkbGUsIF9faGFsZik7CiAgIGlmICgqX19taWRkbGUgPCBfX3ZhbCkKICAgICB7CiAgICAgICBf
X2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICArK19fZmlyc3Q7CiAgICAgICBfX2xlbiA9IF9fbGVu
IC0gX19oYWxmIC0gMTsKICAgICB9CiAgIGVsc2UgaWYgKF9fdmFsIDwgKl9fbWlkZGxlKQogICAg
IF9fbGVuID0gX19oYWxmOwogICBlbHNlCiAgICAgewogICAgICAgX19sZWZ0ID0gc3RkOjpsb3dl
cl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgX192YWwpOwogICAgICAgc3RkOjphZHZhbmNlKF9f
Zmlyc3QsIF9fbGVuKTsKICAgICAgIF9fcmlnaHQgPSBzdGQ6OnVwcGVyX2JvdW5kKCsrX19taWRk
bGUsIF9fZmlyc3QsIF9fdmFsKTsKICAgICAgIHJldHVybiBwYWlyPF9Gb3J3YXJkSXRlcmF0b3Is
IF9Gb3J3YXJkSXRlcmF0b3I+KF9fbGVmdCwgX19yaWdodCk7CiAgICAgfQogfQogICAgICByZXR1
cm4gcGFpcjxfRm9yd2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJhdG9yPihfX2ZpcnN0LCBfX2Zp
cnN0KTsKICAgIH0KIyA0MTY4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwg
dHlwZW5hbWUgX0NvbXBhcmU+CiAgICBwYWlyPF9Gb3J3YXJkSXRlcmF0b3IsIF9Gb3J3YXJkSXRl
cmF0b3I+CiAgICBlcXVhbF9yYW5nZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlcmF0b3IgX19sYXN0LAogIGNvbnN0IF9UcCYgX192YWwsCiAgX0NvbXBhcmUgX19jb21wKQog
ICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJh
dG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogX0Rpc3RhbmNl
VHlwZTsKCgogICAgIAogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIF9EaXN0YW5jZVR5cGUg
X19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgIF9EaXN0YW5jZVR5
cGUgX19oYWxmOwogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlkZGxlLCBfX2xlZnQsIF9fcmln
aHQ7CgogICAgICB3aGlsZSAoX19sZW4gPiAwKQogewogICBfX2hhbGYgPSBfX2xlbiA+PiAxOwog
ICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgIHN0ZDo6YWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsK
ICAgaWYgKF9fY29tcCgqX19taWRkbGUsIF9fdmFsKSkKICAgICB7CiAgICAgICBfX2ZpcnN0ID0g
X19taWRkbGU7CiAgICAgICArK19fZmlyc3Q7CiAgICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxm
IC0gMTsKICAgICB9CiAgIGVsc2UgaWYgKF9fY29tcChfX3ZhbCwgKl9fbWlkZGxlKSkKICAgICBf
X2xlbiA9IF9faGFsZjsKICAgZWxzZQogICAgIHsKICAgICAgIF9fbGVmdCA9IHN0ZDo6bG93ZXJf
Ym91bmQoX19maXJzdCwgX19taWRkbGUsIF9fdmFsLCBfX2NvbXApOwogICAgICAgc3RkOjphZHZh
bmNlKF9fZmlyc3QsIF9fbGVuKTsKICAgICAgIF9fcmlnaHQgPSBzdGQ6OnVwcGVyX2JvdW5kKCsr
X19taWRkbGUsIF9fZmlyc3QsIF9fdmFsLCBfX2NvbXApOwogICAgICAgcmV0dXJuIHBhaXI8X0Zv
cndhcmRJdGVyYXRvciwgX0ZvcndhcmRJdGVyYXRvcj4oX19sZWZ0LCBfX3JpZ2h0KTsKICAgICB9
CiB9CiAgICAgIHJldHVybiBwYWlyPF9Gb3J3YXJkSXRlcmF0b3IsIF9Gb3J3YXJkSXRlcmF0b3I+
KF9fZmlyc3QsIF9fZmlyc3QpOwogICAgfQojIDQyMjYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwg
dHlwZW5hbWUgX1RwPgogICAgYm9vbAogICAgYmluYXJ5X3NlYXJjaChfRm9yd2FyZEl0ZXJhdG9y
IF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICBjb25z
dCBfVHAmIF9fdmFsKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKCgogICAgIAogICAg
IAogICAgICA7CgogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9faSA9IHN0ZDo6bG93ZXJfYm91bmQo
X19maXJzdCwgX19sYXN0LCBfX3ZhbCk7CiAgICAgIHJldHVybiBfX2kgIT0gX19sYXN0ICYmICEo
X192YWwgPCAqX19pKTsKICAgIH0KIyA0MjU4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMv
c3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBib29sCiAgICBiaW5hcnlfc2VhcmNoKF9G
b3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OnZhbHVl
X3R5cGUKIF9WYWx1ZVR5cGU7CgoKICAgICAKICAgICAKCiAgICAgIDsKCiAgICAgIF9Gb3J3YXJk
SXRlcmF0b3IgX19pID0gc3RkOjpsb3dlcl9ib3VuZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsLCBf
X2NvbXApOwogICAgICByZXR1cm4gX19pICE9IF9fbGFzdCAmJiAhX19jb21wKF9fdmFsLCAqX19p
KTsKICAgIH0KIyA0Mjk3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRl
cmF0b3IyPgogICAgYm9vbAogICAgaW5jbHVkZXMoX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBf
SW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBf
SW5wdXRJdGVyYXRvcjIgX19sYXN0MikKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3IxPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTE7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yMj46OnZh
bHVlX3R5cGUKIF9WYWx1ZVR5cGUyOwoKCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgIDsK
ICAgICAgOwoKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0g
X19sYXN0MikKIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpCiAgIHJldHVybiBmYWxzZTsKIGVs
c2UgaWYoKl9fZmlyc3QxIDwgKl9fZmlyc3QyKQogICArK19fZmlyc3QxOwogZWxzZQogICArK19f
Zmlyc3QxLCArK19fZmlyc3QyOwoKICAgICAgcmV0dXJuIF9fZmlyc3QyID09IF9fbGFzdDI7CiAg
ICB9CiMgNDM0NSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
MiwKICAgIHR5cGVuYW1lIF9Db21wYXJlPgogICAgYm9vbAogICAgaW5jbHVkZXMoX0lucHV0SXRl
cmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgX0lucHV0SXRl
cmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwgX0NvbXBhcmUgX19jb21w
KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVy
YXRvcjE+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlMTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3IyPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTI7
CgoKICAgICAKICAgICAKICAgICAKCiAgICAgCgogICAgICA7CiAgICAgIDsKCiAgICAgIHdoaWxl
IChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiBpZiAoX19jb21w
KCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkKICAgcmV0dXJuIGZhbHNlOwogZWxzZSBpZihfX2NvbXAo
Kl9fZmlyc3QxLCAqX19maXJzdDIpKQogICArK19fZmlyc3QxOwogZWxzZQogICArK19fZmlyc3Qx
LCArK19fZmlyc3QyOwoKICAgICAgcmV0dXJuIF9fZmlyc3QyID09IF9fbGFzdDI7CiAgICB9CiMg
NDM5NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAg
IHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvcj4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgc2V0X3Vu
aW9uKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAg
ICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAog
ICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcjE+Ojp2YWx1ZV90eXBlCiBfVmFsdWVU
eXBlMTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0
b3IyPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTI7CgoKICAgICAKICAgICAKICAgICAKCiAgICAg
CgogICAgIAogICAgIAogICAgICA7CiAgICAgIDsKCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBf
X2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiB7CiAgIGlmICgqX19maXJzdDEgPCAqX19m
aXJzdDIpCiAgICAgewogICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICAgKytfX2Zp
cnN0MTsKICAgICB9CiAgIGVsc2UgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICB7CiAg
ICAgICAqX19yZXN1bHQgPSAqX19maXJzdDI7CiAgICAgICArK19fZmlyc3QyOwogICAgIH0KICAg
ZWxzZQogICAgIHsKICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAgICsrX19maXJz
dDE7CiAgICAgICArK19fZmlyc3QyOwogICAgIH0KICAgKytfX3Jlc3VsdDsKIH0KICAgICAgcmV0
dXJuIHN0ZDo6Y29weShfX2ZpcnN0MiwgX19sYXN0Miwgc3RkOjpjb3B5KF9fZmlyc3QxLCBfX2xh
c3QxLAogICAgICAgICAgX19yZXN1bHQpKTsKICAgIH0KIyA0NDYwICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJh
dG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX091dHB1dEl0ZXJh
dG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgc2V0X3VuaW9u
KF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAg
ICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAg
ICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yMT46OnZhbHVl
X3R5cGUKIF9WYWx1ZVR5cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfSW5wdXRJdGVyYXRvcjI+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlMjsKCgogICAgIAogICAg
IAogICAgIAoKICAgICAKCiAgICAgCgogICAgIAoKICAgICAgOwogICAgICA7CgogICAgICB3aGls
ZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogewogICBpZiAo
X19jb21wKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAgICB7CiAgICAgICAqX19yZXN1bHQgPSAq
X19maXJzdDE7CiAgICAgICArK19fZmlyc3QxOwogICAgIH0KICAgZWxzZSBpZiAoX19jb21wKCpf
X2ZpcnN0MiwgKl9fZmlyc3QxKSkKICAgICB7CiAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDI7
CiAgICAgICArK19fZmlyc3QyOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgICpfX3Jlc3Vs
dCA9ICpfX2ZpcnN0MTsKICAgICAgICsrX19maXJzdDE7CiAgICAgICArK19fZmlyc3QyOwogICAg
IH0KICAgKytfX3Jlc3VsdDsKIH0KICAgICAgcmV0dXJuIHN0ZDo6Y29weShfX2ZpcnN0MiwgX19s
YXN0Miwgc3RkOjpjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLAogICAgICAgICAgX19yZXN1bHQpKTsK
ICAgIH0KIyA0NTI2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwog
IHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0
b3IyLAogICAgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yPgogICAgX091dHB1dEl0ZXJhdG9yCiAg
ICBzZXRfaW50ZXJzZWN0aW9uKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0
b3IxIF9fbGFzdDEsCiAgICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJh
dG9yMiBfX2xhc3QyLAogICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcjE+Ojp2YWx1
ZV90eXBlCiBfVmFsdWVUeXBlMTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X0lucHV0SXRlcmF0b3IyPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTI7CgoKICAgICAKICAg
ICAKICAgICAKCiAgICAgCiAgICAgCiAgICAgIDsKICAgICAgOwoKICAgICAgd2hpbGUgKF9fZmly
c3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikKIGlmICgqX19maXJzdDEgPCAq
X19maXJzdDIpCiAgICsrX19maXJzdDE7CiBlbHNlIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEp
CiAgICsrX19maXJzdDI7CiBlbHNlCiAgIHsKICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAg
ICAgKytfX2ZpcnN0MTsKICAgICArK19fZmlyc3QyOwogICAgICsrX19yZXN1bHQ7CiAgIH0KICAg
ICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQojIDQ1ODIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0
eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5
cGVuYW1lIF9Db21wYXJlPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBzZXRfaW50ZXJzZWN0aW9u
KF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAg
ICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAg
ICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yMT46OnZhbHVl
X3R5cGUKIF9WYWx1ZVR5cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfSW5wdXRJdGVyYXRvcjI+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlMjsKCgogICAgIAogICAg
IAogICAgIAoKICAgICAKCiAgICAgCgogICAgICA7CiAgICAgIDsKCiAgICAgIHdoaWxlIChfX2Zp
cnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiBpZiAoX19jb21wKCpfX2Zp
cnN0MSwgKl9fZmlyc3QyKSkKICAgKytfX2ZpcnN0MTsKIGVsc2UgaWYgKF9fY29tcCgqX19maXJz
dDIsICpfX2ZpcnN0MSkpCiAgICsrX19maXJzdDI7CiBlbHNlCiAgIHsKICAgICAqX19yZXN1bHQg
PSAqX19maXJzdDE7CiAgICAgKytfX2ZpcnN0MTsKICAgICArK19fZmlyc3QyOwogICAgICsrX19y
ZXN1bHQ7CiAgIH0KICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQojIDQ2MzkgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
cHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfT3V0
cHV0SXRlcmF0b3I+CiAgICBfT3V0cHV0SXRlcmF0b3IKICAgIHNldF9kaWZmZXJlbmNlKF9JbnB1
dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgX0lucHV0
SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwKICAgICBfT3V0cHV0
SXRlcmF0b3IgX19yZXN1bHQpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9JbnB1dEl0ZXJhdG9yMT46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUxOwogICAgICB0
eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcjI+Ojp2YWx1ZV90
eXBlCiBfVmFsdWVUeXBlMjsKCgogICAgIAogICAgIAogICAgIAoKICAgICAKICAgICAKICAgICAg
OwogICAgICA7CgogICAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAh
PSBfX2xhc3QyKQogaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikKICAgewogICAgICpfX3Jlc3Vs
dCA9ICpfX2ZpcnN0MTsKICAgICArK19fZmlyc3QxOwogICAgICsrX19yZXN1bHQ7CiAgIH0KIGVs
c2UgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgKytfX2ZpcnN0MjsKIGVsc2UKICAgewog
ICAgICsrX19maXJzdDE7CiAgICAgKytfX2ZpcnN0MjsKICAgfQogICAgICByZXR1cm4gc3RkOjpj
b3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCk7CiAgICB9CiMgNDY5OSAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5w
dXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9PdXRw
dXRJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfT3V0cHV0SXRlcmF0b3IKICAgIHNl
dF9kaWZmZXJlbmNlKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9f
bGFzdDEsCiAgICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19s
YXN0MiwKICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsIF9Db21wYXJlIF9fY29tcCkKICAg
IHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3Ix
Pjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTE7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yMj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUyOwoKCiAg
ICAgCiAgICAgCiAgICAgCgogICAgIAoKICAgICAKCiAgICAgIDsKICAgICAgOwoKICAgICAgd2hp
bGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikKIGlmIChfX2Nv
bXAoKl9fZmlyc3QxLCAqX19maXJzdDIpKQogICB7CiAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Qx
OwogICAgICsrX19maXJzdDE7CiAgICAgKytfX3Jlc3VsdDsKICAgfQogZWxzZSBpZiAoX19jb21w
KCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkKICAgKytfX2ZpcnN0MjsKIGVsc2UKICAgewogICAgICsr
X19maXJzdDE7CiAgICAgKytfX2ZpcnN0MjsKICAgfQogICAgICByZXR1cm4gc3RkOjpjb3B5KF9f
Zmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCk7CiAgICB9CiMgNDc1NiAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVy
YXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9PdXRwdXRJdGVy
YXRvcj4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9J
bnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICAg
X0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwKICAgICAg
ICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yMT46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUx
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcjI+
Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlMjsKCgogICAgIAogICAgIAogICAgIAoKICAgICAKCiAg
ICAgCiAgICAgCiAgICAgIDsKICAgICAgOwoKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFz
dDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikKIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpCiAg
IHsKICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgKytfX2ZpcnN0MTsKICAgICArK19f
cmVzdWx0OwogICB9CiBlbHNlIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpCiAgIHsKICAgICAq
X19yZXN1bHQgPSAqX19maXJzdDI7CiAgICAgKytfX2ZpcnN0MjsKICAgICArK19fcmVzdWx0Owog
ICB9CiBlbHNlCiAgIHsKICAgICArK19fZmlyc3QxOwogICAgICsrX19maXJzdDI7CiAgIH0KICAg
ICAgcmV0dXJuIHN0ZDo6Y29weShfX2ZpcnN0MiwgX19sYXN0Miwgc3RkOjpjb3B5KF9fZmlyc3Qx
LAogICAgICAgICAgX19sYXN0MSwgX19yZXN1bHQpKTsKICAgIH0KIyA0ODIxICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX091dHB1
dEl0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgc2V0
X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRl
cmF0b3IxIF9fbGFzdDEsCiAgICAgICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJ
dGVyYXRvcjIgX19sYXN0MiwKICAgICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsCiAgICAg
ICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfSW5wdXRJdGVyYXRvcjE+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlMTsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3IyPjo6dmFsdWVf
dHlwZQogX1ZhbHVlVHlwZTI7CgoKICAgICAKICAgICAKICAgICAKCiAgICAgCgogICAgIAoKICAg
ICAKCiAgICAgIDsKICAgICAgOwoKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYg
X19maXJzdDIgIT0gX19sYXN0MikKIGlmIChfX2NvbXAoKl9fZmlyc3QxLCAqX19maXJzdDIpKQog
ICB7CiAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICsrX19maXJzdDE7CiAgICAgKytf
X3Jlc3VsdDsKICAgfQogZWxzZSBpZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkKICAg
ewogICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsKICAgICArK19fZmlyc3QyOwogICAgICsrX19y
ZXN1bHQ7CiAgIH0KIGVsc2UKICAgewogICAgICsrX19maXJzdDE7CiAgICAgKytfX2ZpcnN0MjsK
ICAgfQogICAgICByZXR1cm4gc3RkOjpjb3B5KF9fZmlyc3QyLCBfX2xhc3QyLCBzdGQ6OmNvcHko
X19maXJzdDEsCiAgICAgICAgICBfX2xhc3QxLCBfX3Jlc3VsdCkpOwogICAgfQojIDQ4NzkgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIG1heF9lbGVtZW50
KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiAgICB7
CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogcmV0
dXJuIF9fZmlyc3Q7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQgPSBfX2ZpcnN0Owog
ICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkKIGlmICgqX19yZXN1bHQgPCAqX19maXJz
dCkKICAgX19yZXN1bHQgPSBfX2ZpcnN0OwogICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMg
NDkwNiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9Gb3J3
YXJkSXRlcmF0b3IKICAgIG1heF9lbGVtZW50KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zv
cndhcmRJdGVyYXRvciBfX2xhc3QsCiAgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAgICAKICAg
ICAKCgogICAgICA7CgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0
OwogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0ID0gX19maXJzdDsKICAgICAgd2hpbGUg
KCsrX19maXJzdCAhPSBfX2xhc3QpCiBpZiAoX19jb21wKCpfX3Jlc3VsdCwgKl9fZmlyc3QpKSBf
X3Jlc3VsdCA9IF9fZmlyc3Q7CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KCgoKCgoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgIF9Gb3J3YXJkSXRlcmF0b3IK
ICAgIG1pbl9lbGVtZW50KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRv
ciBfX2xhc3QpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3Qg
PT0gX19sYXN0KQogcmV0dXJuIF9fZmlyc3Q7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1
bHQgPSBfX2ZpcnN0OwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkKIGlmICgqX19m
aXJzdCA8ICpfX3Jlc3VsdCkKICAgX19yZXN1bHQgPSBfX2ZpcnN0OwogICAgICByZXR1cm4gX19y
ZXN1bHQ7CiAgICB9CiMgNDk1OCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdv
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQ29t
cGFyZT4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIG1pbl9lbGVtZW50KF9Gb3J3YXJkSXRlcmF0
b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgX0NvbXBhcmUgX19jb21wKQog
ICAgewoKICAgICAKICAgICAKCgogICAgICA7CgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3Qp
CiByZXR1cm4gX19maXJzdDsKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdCA9IF9fZmly
c3Q7CiAgICAgIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogaWYgKF9fY29tcCgqX19maXJz
dCwgKl9fcmVzdWx0KSkKICAgX19yZXN1bHQgPSBfX2ZpcnN0OwogICAgICByZXR1cm4gX19yZXN1
bHQ7CiAgICB9CiMgNDk5MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgogICAgYm9vbAog
ICAgbmV4dF9wZXJtdXRhdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAg
ICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgCgogICAgIAoKICAg
ICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogcmV0dXJuIGZhbHNlOwogICAgICBf
QmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9faSA9IF9fZmlyc3Q7CiAgICAgICsrX19pOwogICAgICBp
ZiAoX19pID09IF9fbGFzdCkKIHJldHVybiBmYWxzZTsKICAgICAgX19pID0gX19sYXN0OwogICAg
ICAtLV9faTsKCiAgICAgIGZvcig7OykKIHsKICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2lp
ID0gX19pOwogICAtLV9faTsKICAgaWYgKCpfX2kgPCAqX19paSkKICAgICB7CiAgICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXJhdG9yIF9faiA9IF9fbGFzdDsKICAgICAgIHdoaWxlICghKCpfX2kgPCAq
LS1fX2opKQogIHt9CiAgICAgICBzdGQ6Oml0ZXJfc3dhcChfX2ksIF9faik7CiAgICAgICBzdGQ6
OnJldmVyc2UoX19paSwgX19sYXN0KTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgaWYg
KF9faSA9PSBfX2ZpcnN0KQogICAgIHsKICAgICAgIHN0ZDo6cmV2ZXJzZShfX2ZpcnN0LCBfX2xh
c3QpOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KICAgIH0KIyA1MDQ5ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9C
aWRpcmVjdGlvbmFsSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgYm9vbAogICAgbmV4
dF9wZXJtdXRhdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAgICAK
CiAgICAgCgoKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogcmV0dXJuIGZh
bHNlOwogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9faSA9IF9fZmlyc3Q7CiAgICAgICsr
X19pOwogICAgICBpZiAoX19pID09IF9fbGFzdCkKIHJldHVybiBmYWxzZTsKICAgICAgX19pID0g
X19sYXN0OwogICAgICAtLV9faTsKCiAgICAgIGZvcig7OykKIHsKICAgX0JpZGlyZWN0aW9uYWxJ
dGVyYXRvciBfX2lpID0gX19pOwogICAtLV9faTsKICAgaWYgKF9fY29tcCgqX19pLCAqX19paSkp
CiAgICAgewogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ogPSBfX2xhc3Q7CiAgICAg
ICB3aGlsZSAoIV9fY29tcCgqX19pLCAqLS1fX2opKQogIHt9CiAgICAgICBzdGQ6Oml0ZXJfc3dh
cChfX2ksIF9faik7CiAgICAgICBzdGQ6OnJldmVyc2UoX19paSwgX19sYXN0KTsKICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgaWYgKF9faSA9PSBfX2ZpcnN0KQogICAgIHsKICAgICAgIHN0
ZDo6cmV2ZXJzZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IH0KICAgIH0KIyA1MTA0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3I+CiAgICBib29sCiAg
ICBwcmV2X3Blcm11dGF0aW9uKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwKICAgICAg
IF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19sYXN0KQogICAgewoKICAgICAKCiAgICAgCgogICAg
ICA7CgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gZmFsc2U7CiAgICAgIF9C
aWRpcmVjdGlvbmFsSXRlcmF0b3IgX19pID0gX19maXJzdDsKICAgICAgKytfX2k7CiAgICAgIGlm
IChfX2kgPT0gX19sYXN0KQogcmV0dXJuIGZhbHNlOwogICAgICBfX2kgPSBfX2xhc3Q7CiAgICAg
IC0tX19pOwoKICAgICAgZm9yKDs7KQogewogICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9faWkg
PSBfX2k7CiAgIC0tX19pOwogICBpZiAoKl9faWkgPCAqX19pKQogICAgIHsKICAgICAgIF9CaWRp
cmVjdGlvbmFsSXRlcmF0b3IgX19qID0gX19sYXN0OwogICAgICAgd2hpbGUgKCEoKi0tX19qIDwg
Kl9faSkpCiAge30KICAgICAgIHN0ZDo6aXRlcl9zd2FwKF9faSwgX19qKTsKICAgICAgIHN0ZDo6
cmV2ZXJzZShfX2lpLCBfX2xhc3QpOwogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICBpZiAo
X19pID09IF9fZmlyc3QpCiAgICAgewogICAgICAgc3RkOjpyZXZlcnNlKF9fZmlyc3QsIF9fbGFz
dCk7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogICAgfQojIDUxNjAgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBib29sCiAgICBwcmV2
X3Blcm11dGF0aW9uKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwKICAgICAgIF9CaWRp
cmVjdGlvbmFsSXRlcmF0b3IgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAoK
ICAgICAKCgogICAgICA7CgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gZmFs
c2U7CiAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19pID0gX19maXJzdDsKICAgICAgKytf
X2k7CiAgICAgIGlmIChfX2kgPT0gX19sYXN0KQogcmV0dXJuIGZhbHNlOwogICAgICBfX2kgPSBf
X2xhc3Q7CiAgICAgIC0tX19pOwoKICAgICAgZm9yKDs7KQogewogICBfQmlkaXJlY3Rpb25hbEl0
ZXJhdG9yIF9faWkgPSBfX2k7CiAgIC0tX19pOwogICBpZiAoX19jb21wKCpfX2lpLCAqX19pKSkK
ICAgICB7CiAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9faiA9IF9fbGFzdDsKICAgICAg
IHdoaWxlICghX19jb21wKCotLV9faiwgKl9faSkpCiAge30KICAgICAgIHN0ZDo6aXRlcl9zd2Fw
KF9faSwgX19qKTsKICAgICAgIHN0ZDo6cmV2ZXJzZShfX2lpLCBfX2xhc3QpOwogICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICBpZiAoX19pID09IF9fZmlyc3QpCiAgICAgewogICAgICAgc3Rk
OjpyZXZlcnNlKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
fQogICAgfQojIDUyMTkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfYWxnby5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3I+CiAgICBfSW5wdXRJdGVyYXRvcgogICAgZmluZF9maXJzdF9vZihfSW5wdXRJdGVyYXRv
ciBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IgX19sYXN0MSwKICAgIF9Gb3J3YXJkSXRlcmF0b3Ig
X19maXJzdDIsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0MikKICAgIHsKCiAgICAgCiAgICAgCiAg
ICAgCgoKICAgICAgOwogICAgICA7CgogICAgICBmb3IgKCA7IF9fZmlyc3QxICE9IF9fbGFzdDE7
ICsrX19maXJzdDEpCiBmb3IgKF9Gb3J3YXJkSXRlcmF0b3IgX19pdGVyID0gX19maXJzdDI7IF9f
aXRlciAhPSBfX2xhc3QyOyArK19faXRlcikKICAgaWYgKCpfX2ZpcnN0MSA9PSAqX19pdGVyKQog
ICAgIHJldHVybiBfX2ZpcnN0MTsKICAgICAgcmV0dXJuIF9fbGFzdDE7CiAgICB9CiMgNTI1NSAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgIHR5cGVu
YW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfSW5wdXRJdGVyYXRvcgogICAgZmluZF9maXJzdF9v
ZihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IgX19sYXN0MSwKICAgIF9G
b3J3YXJkSXRlcmF0b3IgX19maXJzdDIsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0MiwKICAgIF9C
aW5hcnlQcmVkaWNhdGUgX19jb21wKQogICAgewoKICAgICAKICAgICAKICAgICAKCgogICAgICA7
CiAgICAgIDsKCiAgICAgIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSkK
IGZvciAoX0ZvcndhcmRJdGVyYXRvciBfX2l0ZXIgPSBfX2ZpcnN0MjsgX19pdGVyICE9IF9fbGFz
dDI7ICsrX19pdGVyKQogICBpZiAoX19jb21wKCpfX2ZpcnN0MSwgKl9faXRlcikpCiAgICAgcmV0
dXJuIF9fZmlyc3QxOwogICAgICByZXR1cm4gX19sYXN0MTsKICAgIH0KIyA1Mjg1ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9G
b3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMj4KICAgIF9Gb3J3YXJk
SXRlcmF0b3IxCiAgICBfX2ZpbmRfZW5kKF9Gb3J3YXJkSXRlcmF0b3IxIF9fZmlyc3QxLCBfRm9y
d2FyZEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmlyc3Qy
LCBfRm9yd2FyZEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgIGZvcndhcmRfaXRlcmF0b3JfdGFn
LCBmb3J3YXJkX2l0ZXJhdG9yX3RhZykKICAgIHsKICAgICAgaWYgKF9fZmlyc3QyID09IF9fbGFz
dDIpCiByZXR1cm4gX19sYXN0MTsKICAgICAgZWxzZQogewogICBfRm9yd2FyZEl0ZXJhdG9yMSBf
X3Jlc3VsdCA9IF9fbGFzdDE7CiAgIHdoaWxlICgxKQogICAgIHsKICAgICAgIF9Gb3J3YXJkSXRl
cmF0b3IxIF9fbmV3X3Jlc3VsdAogID0gc3RkOjpzZWFyY2goX19maXJzdDEsIF9fbGFzdDEsIF9f
Zmlyc3QyLCBfX2xhc3QyKTsKICAgICAgIGlmIChfX25ld19yZXN1bHQgPT0gX19sYXN0MSkKICBy
ZXR1cm4gX19yZXN1bHQ7CiAgICAgICBlbHNlCiAgewogICAgX19yZXN1bHQgPSBfX25ld19yZXN1
bHQ7CiAgICBfX2ZpcnN0MSA9IF9fbmV3X3Jlc3VsdDsKICAgICsrX19maXJzdDE7CiAgfQogICAg
IH0KIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVu
YW1lIF9Gb3J3YXJkSXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAg
IF9Gb3J3YXJkSXRlcmF0b3IxCiAgICBfX2ZpbmRfZW5kKF9Gb3J3YXJkSXRlcmF0b3IxIF9fZmly
c3QxLCBfRm9yd2FyZEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgICAgIF9Gb3J3YXJkSXRlcmF0b3Iy
IF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgIGZvcndhcmRfaXRl
cmF0b3JfdGFnLCBmb3J3YXJkX2l0ZXJhdG9yX3RhZywKICAgICAgICBfQmluYXJ5UHJlZGljYXRl
IF9fY29tcCkKICAgIHsKICAgICAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIpCiByZXR1cm4gX19s
YXN0MTsKICAgICAgZWxzZQogewogICBfRm9yd2FyZEl0ZXJhdG9yMSBfX3Jlc3VsdCA9IF9fbGFz
dDE7CiAgIHdoaWxlICgxKQogICAgIHsKICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IxIF9fbmV3X3Jl
c3VsdAogID0gc3RkOjpzZWFyY2goX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3Qy
LCBfX2NvbXApOwogICAgICAgaWYgKF9fbmV3X3Jlc3VsdCA9PSBfX2xhc3QxKQogIHJldHVybiBf
X3Jlc3VsdDsKICAgICAgIGVsc2UKICB7CiAgICBfX3Jlc3VsdCA9IF9fbmV3X3Jlc3VsdDsKICAg
IF9fZmlyc3QxID0gX19uZXdfcmVzdWx0OwogICAgKytfX2ZpcnN0MTsKICB9CiAgICAgfQogfQog
ICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjEsIHR5cGVu
YW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IyPgogICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjEK
ICAgIF9fZmluZF9lbmQoX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjEgX19maXJzdDEsCiAgICAgICAg
X0JpZGlyZWN0aW9uYWxJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgICBfQmlkaXJlY3Rpb25hbEl0
ZXJhdG9yMiBfX2ZpcnN0MiwKICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMiBfX2xhc3Qy
LAogICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBiaWRpcmVjdGlvbmFsX2l0ZXJh
dG9yX3RhZykKICAgIHsKCiAgICAgCgogICAgIAoKCiAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVy
YXRvcjxfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMT4gX1Jldkl0ZXJhdG9yMTsKICAgICAgdHlwZWRl
ZiByZXZlcnNlX2l0ZXJhdG9yPF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IyPiBfUmV2SXRlcmF0b3Iy
OwoKICAgICAgX1Jldkl0ZXJhdG9yMSBfX3JsYXN0MShfX2ZpcnN0MSk7CiAgICAgIF9SZXZJdGVy
YXRvcjIgX19ybGFzdDIoX19maXJzdDIpOwogICAgICBfUmV2SXRlcmF0b3IxIF9fcnJlc3VsdCA9
IHN0ZDo6c2VhcmNoKF9SZXZJdGVyYXRvcjEoX19sYXN0MSksIF9fcmxhc3QxLAogICAgICAgICBf
UmV2SXRlcmF0b3IyKF9fbGFzdDIpLCBfX3JsYXN0Mik7CgogICAgICBpZiAoX19ycmVzdWx0ID09
IF9fcmxhc3QxKQogcmV0dXJuIF9fbGFzdDE7CiAgICAgIGVsc2UKIHsKICAgX0JpZGlyZWN0aW9u
YWxJdGVyYXRvcjEgX19yZXN1bHQgPSBfX3JyZXN1bHQuYmFzZSgpOwogICBzdGQ6OmFkdmFuY2Uo
X19yZXN1bHQsIC1zdGQ6OmRpc3RhbmNlKF9fZmlyc3QyLCBfX2xhc3QyKSk7CiAgIHJldHVybiBf
X3Jlc3VsdDsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvcjEsIHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0Jp
bmFyeVByZWRpY2F0ZT4KICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IxCiAgICBfX2ZpbmRfZW5k
KF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IxIF9fZmlyc3QxLAogICAgICAgIF9CaWRpcmVjdGlvbmFs
SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIgX19maXJz
dDIsCiAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIgX19sYXN0MiwKICAgICAgICBiaWRp
cmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsCiAgICAg
ICAgX0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApCiAgICB7CgogICAgIAoKICAgICAKCgogICAgICB0
eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVyYXRvcjE+IF9SZXZJdGVy
YXRvcjE7CiAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxfQmlkaXJlY3Rpb25hbEl0ZXJh
dG9yMj4gX1Jldkl0ZXJhdG9yMjsKCiAgICAgIF9SZXZJdGVyYXRvcjEgX19ybGFzdDEoX19maXJz
dDEpOwogICAgICBfUmV2SXRlcmF0b3IyIF9fcmxhc3QyKF9fZmlyc3QyKTsKICAgICAgX1Jldkl0
ZXJhdG9yMSBfX3JyZXN1bHQgPSBzdGQ6OnNlYXJjaChfUmV2SXRlcmF0b3IxKF9fbGFzdDEpLCBf
X3JsYXN0MSwKICAgICAgICAgX1Jldkl0ZXJhdG9yMihfX2xhc3QyKSwgX19ybGFzdDIsCiAgICAg
ICAgIF9fY29tcCk7CgogICAgICBpZiAoX19ycmVzdWx0ID09IF9fcmxhc3QxKQogcmV0dXJuIF9f
bGFzdDE7CiAgICAgIGVsc2UKIHsKICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjEgX19yZXN1bHQg
PSBfX3JyZXN1bHQuYmFzZSgpOwogICBzdGQ6OmFkdmFuY2UoX19yZXN1bHQsIC1zdGQ6OmRpc3Rh
bmNlKF9fZmlyc3QyLCBfX2xhc3QyKSk7CiAgIHJldHVybiBfX3Jlc3VsdDsKIH0KICAgIH0KIyA1
NDM1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMj4K
ICAgIGlubGluZSBfRm9yd2FyZEl0ZXJhdG9yMQogICAgZmluZF9lbmQoX0ZvcndhcmRJdGVyYXRv
cjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgIF9Gb3J3YXJkSXRl
cmF0b3IyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXJhdG9yMiBfX2xhc3QyKQogICAgewoKICAgICAK
ICAgICAKICAgICAKCgogICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fZmluZF9l
bmQoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyLAogICAgICAgIHN0ZDo6X19p
dGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0MSksCiAgICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVn
b3J5KF9fZmlyc3QyKSk7CiAgICB9CiMgNTQ4MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMSwgdHlw
ZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgog
ICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0b3IxCiAgICBmaW5kX2VuZChfRm9yd2FyZEl0ZXJhdG9y
MSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgX0ZvcndhcmRJdGVy
YXRvcjIgX19maXJzdDIsIF9Gb3J3YXJkSXRlcmF0b3IyIF9fbGFzdDIsCiAgICAgIF9CaW5hcnlQ
cmVkaWNhdGUgX19jb21wKQogICAgewoKICAgICAKICAgICAKICAgICAKCgogICAgICA7CiAgICAg
IDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fZmluZF9lbmQoX19maXJzdDEsIF9fbGFzdDEsIF9fZmly
c3QyLCBfX2xhc3QyLAogICAgICAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0MSks
CiAgICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QyKSwKICAgICAgICBfX2Nv
bXApOwogICAgfQoKfQojIDY5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2FsZ29yaXRobSIgMiAz
CiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRyLmgiIDIKIyAx
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RBbGxvY0Jhc2UuaCIgMQoj
IDMwICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RBbGxvY0Jhc2UuaCIK
I2RlZmluZSBGYXN0QWxsb2NCYXNlX2ggCiMgOTIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5oIgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvRmFzdE1hbGxvYy5oIiAxCiMgOTMgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UeXBlVHJhaXRzLmgiIDEKIyAyMyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UeXBlVHJhaXRzLmgiCiNkZWZpbmUgVHlwZVRyYWl0c19oIAojIDM0ICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1R5cGVUcmFpdHMuaCIKbmFtZXNwYWNlIFdU
RiB7CiMgNTIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVHlwZVRyYWl0cy5o
IgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElzSW50ZWdlciB7IHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gZmFsc2U7IH07CiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8
Ym9vbD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CiAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBJc0ludGVnZXI8Y2hhcj4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7
IH07CiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8c2lnbmVkIGNoYXI+IHsgc3RhdGlj
IGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRl
Z2VyPHVuc2lnbmVkIGNoYXI+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Owog
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHNob3J0PiB7IHN0YXRpYyBjb25zdCBib29s
IHZhbHVlID0gdHJ1ZTsgfTsKICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25l
ZCBzaG9ydD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CiAgICB0ZW1wbGF0
ZTw+IHN0cnVjdCBJc0ludGVnZXI8aW50PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1
ZTsgfTsKICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBpbnQ+IHsgc3Rh
dGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJ
bnRlZ2VyPGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwogICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJv
b2wgdmFsdWUgPSB0cnVlOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPGxvbmcg
bG9uZz4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CiAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgbG9uZyBsb25nPiB7IHN0YXRpYyBjb25zdCBib29s
IHZhbHVlID0gdHJ1ZTsgfTsKCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8d2NoYXJf
dD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CgoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBJc0Zsb2F0aW5nUG9pbnQgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IGZhbHNlOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNGbG9hdGluZ1BvaW50PGZsb2F0
PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IElzRmxvYXRpbmdQb2ludDxkb3VibGU+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0
cnVlOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNGbG9hdGluZ1BvaW50PGxvbmcgZG91Ymxl
PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSXNBcml0aG1ldGljIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBJ
c0ludGVnZXI8VD46OnZhbHVlIHx8IElzRmxvYXRpbmdQb2ludDxUPjo6dmFsdWU7IH07CgoKCiAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzUG9kIHsgc3RhdGljIGNvbnN0IGJvb2wg
dmFsdWUgPSBJc0FyaXRobWV0aWM8VD46OnZhbHVlOyB9OwogICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFA+IHN0cnVjdCBJc1BvZDxQKj4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgSXNDb252ZXJ0aWJsZVRvSW50ZWdlciB7
CgoKICAgICAgICB0ZW1wbGF0ZTxib29sIHBlcmZvcm1DaGVjaywgdHlwZW5hbWUgVT4gY2xhc3Mg
SXNDb252ZXJ0aWJsZVRvRG91YmxlOwogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGNsYXNz
IElzQ29udmVydGlibGVUb0RvdWJsZTxmYWxzZSwgVT4gewogICAgICAgIHB1YmxpYzoKICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsKICAgICAgICB9OwoKICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBjbGFzcyBJc0NvbnZlcnRpYmxlVG9Eb3VibGU8dHJ1ZSwg
VT4gewogICAgICAgICAgICB0eXBlZGVmIGNoYXIgWWVzVHlwZTsKICAgICAgICAgICAgc3RydWN0
IE5vVHlwZSB7CiAgICAgICAgICAgICAgICBjaGFyIHBhZGRpbmdbOF07CiAgICAgICAgICAgIH07
CgogICAgICAgICAgICBzdGF0aWMgWWVzVHlwZSBmbG9hdENoZWNrKGxvbmcgZG91YmxlKTsKICAg
ICAgICAgICAgc3RhdGljIE5vVHlwZSBmbG9hdENoZWNrKC4uLik7CiAgICAgICAgICAgIHN0YXRp
YyBUJiB0OwogICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSBzaXplb2YoZmxvYXRDaGVjayh0KSkgPT0gc2l6ZW9mKFllc1R5cGUpOwogICAgICAgIH07
CgogICAgcHVibGljOgogICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gSXNJbnRlZ2Vy
PFQ+Ojp2YWx1ZSB8fCBJc0NvbnZlcnRpYmxlVG9Eb3VibGU8IUlzSW50ZWdlcjxUPjo6dmFsdWUs
IFQ+Ojp2YWx1ZTsKICAgIH07CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IHN0cnVjdCBJc1NhbWVUeXBlIHsKICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZh
bHNlOwogICAgfTsKCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzU2FtZVR5cGU8
VCwgVD4gewogICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKICAgIH07Cgog
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGNsYXNzIElzU3ViY2xhc3Mgewog
ICAgICAgIHR5cGVkZWYgY2hhciBZZXNUeXBlOwogICAgICAgIHN0cnVjdCBOb1R5cGUgewogICAg
ICAgICAgICBjaGFyIHBhZGRpbmdbOF07CiAgICAgICAgfTsKCiAgICAgICAgc3RhdGljIFllc1R5
cGUgc3ViY2xhc3NDaGVjayhVKik7CiAgICAgICAgc3RhdGljIE5vVHlwZSBzdWJjbGFzc0NoZWNr
KC4uLik7CiAgICAgICAgc3RhdGljIFQqIHQ7CiAgICBwdWJsaWM6CiAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgdmFsdWUgPSBzaXplb2Yoc3ViY2xhc3NDaGVjayh0KSkgPT0gc2l6ZW9mKFllc1R5
cGUpOwogICAgfTsKCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdGVtcGxhdGU8Y2xhc3MgVj4g
Y2xhc3MgVT4gY2xhc3MgSXNTdWJjbGFzc09mVGVtcGxhdGUgewogICAgICAgIHR5cGVkZWYgY2hh
ciBZZXNUeXBlOwogICAgICAgIHN0cnVjdCBOb1R5cGUgewogICAgICAgICAgICBjaGFyIHBhZGRp
bmdbOF07CiAgICAgICAgfTsKCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVz4gc3RhdGljIFll
c1R5cGUgc3ViY2xhc3NDaGVjayhVPFc+Kik7CiAgICAgICAgc3RhdGljIE5vVHlwZSBzdWJjbGFz
c0NoZWNrKC4uLik7CiAgICAgICAgc3RhdGljIFQqIHQ7CiAgICBwdWJsaWM6CiAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgdmFsdWUgPSBzaXplb2Yoc3ViY2xhc3NDaGVjayh0KSkgPT0gc2l6ZW9m
KFllc1R5cGUpOwogICAgfTsKCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdGVtcGxhdGUgPGNs
YXNzIFY+IGNsYXNzIE91dGVyVGVtcGxhdGU+IHN0cnVjdCBSZW1vdmVUZW1wbGF0ZSB7CiAgICAg
ICAgdHlwZWRlZiBUIFR5cGU7CiAgICB9OwoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0ZW1w
bGF0ZSA8Y2xhc3MgVj4gY2xhc3MgT3V0ZXJUZW1wbGF0ZT4gc3RydWN0IFJlbW92ZVRlbXBsYXRl
PE91dGVyVGVtcGxhdGU8VD4sIE91dGVyVGVtcGxhdGU+IHsKICAgICAgICB0eXBlZGVmIFQgVHlw
ZTsKICAgIH07CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDb25zdCB7
CiAgICAgICAgdHlwZWRlZiBUIFR5cGU7CiAgICB9OwoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdHJ1Y3QgUmVtb3ZlQ29uc3Q8Y29uc3QgVD4gewogICAgICAgIHR5cGVkZWYgVCBUeXBlOwog
ICAgfTsKCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZVZvbGF0aWxlIHsK
ICAgICAgICB0eXBlZGVmIFQgVHlwZTsKICAgIH07CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0cnVjdCBSZW1vdmVWb2xhdGlsZTx2b2xhdGlsZSBUPiB7CiAgICAgICAgdHlwZWRlZiBUIFR5
cGU7CiAgICB9OwoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ29uc3RW
b2xhdGlsZSB7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBSZW1vdmVWb2xhdGlsZTx0eXBlbmFt
ZSBSZW1vdmVDb25zdDxUPjo6VHlwZT46OlR5cGUgVHlwZTsKICAgIH07CgogICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVQb2ludGVyIHsKICAgICAgICB0eXBlZGVmIFQgVHlw
ZTsKICAgIH07CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVQb2ludGVy
PFQqPiB7CiAgICAgICAgdHlwZWRlZiBUIFR5cGU7CiAgICB9OwoKICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlUmVmZXJlbmNlIHsKICAgICAgICB0eXBlZGVmIFQgVHlwZTsK
ICAgIH07CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVSZWZlcmVuY2U8
VCY+IHsKICAgICAgICB0eXBlZGVmIFQgVHlwZTsKICAgIH07CiMgMTk4ICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1R5cGVUcmFpdHMuaCIKICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBULCBUIHY+CiAgICBzdHJ1Y3QgSW50ZWdyYWxDb25zdGFudCB7CiAgICAgICAgc3RhdGljIGNv
bnN0IFQgdmFsdWUgPSB2OwogICAgICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwogICAgICAgIHR5
cGVkZWYgSW50ZWdyYWxDb25zdGFudDxULCB2PiB0eXBlOwogICAgfTsKCiAgICB0eXBlZGVmIElu
dGVncmFsQ29uc3RhbnQ8Ym9vbCwgdHJ1ZT4gdHJ1ZV90eXBlOwogICAgdHlwZWRlZiBJbnRlZ3Jh
bENvbnN0YW50PGJvb2wsIGZhbHNlPiBmYWxzZV90eXBlOwoKCgoKCgoKICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yIDogcHVibGljIGZhbHNlX3R5
cGV7IH07CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVj
dG9yIDogcHVibGljIGZhbHNlX3R5cGV7IH07CgoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPFQqPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPFQqPiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07CgogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxD
b25zdHJ1Y3RvcjxmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4g
c3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xh
dGlsZSBmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBmbG9hdD4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9OwoKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8
ZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFz
VHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Owog
ICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSBkb3Vi
bGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2
aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07CgogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxsb25nIGRv
dWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1Ry
aXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBsb25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSBs
b25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBsb25nIGRvdWJsZT4gOiBwdWJs
aWMgdHJ1ZV90eXBleyB9OwoKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3Ry
dWN0b3I8dW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBjaGFyPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0
cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUg
dW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoKICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVf
dHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29u
c3QgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgc2hvcnQ+IDog
cHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29u
c3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlw
ZXsgfTsKCiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHVuc2ln
bmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhh
c1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlw
ZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRp
bGUgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGludD4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
Q29uc3RydWN0b3I8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVt
cGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25n
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bENvbnN0cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsg
fTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9s
YXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoKICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dW5zaWduZWQgbG9uZyBsb25nPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0
cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Owog
ICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNp
Z25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyBs
b25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CgogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1Ry
aXZpYWxDb25zdHJ1Y3RvcjxzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAg
dGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgY2hh
cj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZp
YWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xh
dGlsZSBzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoKICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8c2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNv
bnN0IHNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4g
c3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQgc2hvcnQ+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3Ry
dWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
CgogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3RvcjxzaWduZWQgaW50
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bENvbnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVk
IGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1Ry
aXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07CgogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxz
aWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xh
dGlsZSBzaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4g
c3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgbG9uZz4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
Q29uc3RydWN0b3I8c2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAg
dGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgbG9u
ZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFz
VHJpdmlhbENvbnN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8
Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoK
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Ym9vbD4gOiBwdWJs
aWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1
Y3Rvcjxjb25zdCBib29sPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHZvbGF0aWxlIGJvb2w+IDogcHVibGljIHRydWVf
dHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29u
c3Qgdm9sYXRpbGUgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoKICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBjaGFy
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bENvbnN0cnVjdG9yPHZvbGF0aWxlIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgY2hh
cj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoKCiAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhh
c1RyaXZpYWxDb25zdHJ1Y3Rvcjx3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICAg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB3Y2hhcl90
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1Ry
aXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
CiAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2
b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CgoKICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3RvcjxmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IGZsb2F0
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bERlc3RydWN0b3I8dm9sYXRpbGUgZmxvYXQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBmbG9h
dD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2
aWFsRGVzdHJ1Y3Rvcjxkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCBkb3VibGU+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2
b2xhdGlsZSBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBkb3VibGU+IDogcHVibGlj
IHRydWVfdHlwZXsgfTsKCiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0
b3I8bG9uZyBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCBsb25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZv
bGF0aWxlIGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgbG9uZyBkb3VibGU+
IDogcHVibGljIHRydWVfdHlwZXsgfTsKCiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bERlc3RydWN0b3I8dW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVt
cGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGNoYXI+
IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
RGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRp
bGUgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoKICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNv
bnN0IHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgc2hvcnQ+IDog
cHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVz
dHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9OwoKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx1bnNpZ25l
ZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNU
cml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsg
fTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1
bnNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBpbnQ+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsKCiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3Ry
dWN0b3I8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmc+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1
Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5z
aWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoKICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVf
dHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25z
dCB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxv
bmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2
aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGlj
IHRydWVfdHlwZXsgfTsKCiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0
b3I8c2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCBzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZv
bGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGNoYXI+
IDogcHVibGljIHRydWVfdHlwZXsgfTsKCiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bERlc3RydWN0b3I8c2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgc2lnbmVkIHNob3J0PiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERl
c3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUg
c2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CgogICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsg
fTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCBzaWdu
ZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFz
VHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHZv
bGF0aWxlIHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKCiAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8c2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVf
dHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25z
dCBzaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8
Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsKCiAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8c2lnbmVkIGxvbmcgbG9uZz4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxE
ZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsK
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSBzaWdu
ZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9uZz4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9OwoKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
RGVzdHJ1Y3Rvcjxib29sPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3QgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxl
IGJvb2w+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNU
cml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBib29sPiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07CgogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNoYXI+IDog
cHVibGljIHRydWVfdHlwZXsgfTsKICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVz
dHJ1Y3Rvcjxjb25zdCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CiAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9OwogICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNv
bnN0IHZvbGF0aWxlIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsKCgogICAgICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx3Y2hhcl90PiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07CiAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9y
PGNvbnN0IHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXsgfTsKICAgICAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgd2NoYXJfdD4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1
Y3Rvcjxjb25zdCB2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CgoKCgp9
CiMgOTQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5o
IiAyCgojZGVmaW5lIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIHB1YmxpYzogdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCBzaXplKSB7IHZvaWQqIHAgPSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xh
c3NOZXcpOyByZXR1cm4gcDsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5
cGVDbGFzc05ldyk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlw
ZUNsYXNzTmV3QXJyYXkpOyByZXR1cm4gcDsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQq
IHApIHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJu
YWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gcHJpdmF0
ZTogdHlwZWRlZiBpbnQgVGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8K
IyAxMjggIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5o
IgpuYW1lc3BhY2UgV1RGIHsKCgoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgaW5saW5l
IFQqIGZhc3ROZXcoKQogICAgewogICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihU
KSk7CgogICAgICAgIGlmICghcCkKICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIGZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsK
ICAgICAgICByZXR1cm4gOjpuZXcocCkgVDsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgQXJnMT4KICAgIGlubGluZSBUKiBmYXN0TmV3KEFyZzEgYXJnMSkKICAgIHsK
ICAgICAgICB2b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoVCkpOwoKICAgICAgICBpZiAoIXAp
CiAgICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1h
bGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7CiAgICAgICAgcmV0dXJuIDo6bmV3
KHApIFQoYXJnMSk7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFy
ZzEsIHR5cGVuYW1lIEFyZzI+CiAgICBpbmxpbmUgVCogZmFzdE5ldyhBcmcxIGFyZzEsIEFyZzIg
YXJnMikKICAgIHsKICAgICAgICB2b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoVCkpOwoKICAg
ICAgICBpZiAoIXApCiAgICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICBmYXN0TWFsbG9jTWF0
Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7CiAgICAgICAg
cmV0dXJuIDo6bmV3KHApIFQoYXJnMSwgYXJnMik7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHR5cGVuYW1lIEFyZzM+CiAgICBp
bmxpbmUgVCogZmFzdE5ldyhBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJnMyBhcmczKQogICAgewog
ICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihUKSk7CgogICAgICAgIGlmICghcCkK
ICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFs
bG9jKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsKICAgICAgICByZXR1cm4gOjpuZXco
cCkgVChhcmcxLCBhcmcyLCBhcmczKTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdHlwZW5hbWUgQXJnMywgdHlwZW5hbWUgQXJn
ND4KICAgIGlubGluZSBUKiBmYXN0TmV3KEFyZzEgYXJnMSwgQXJnMiBhcmcyLCBBcmczIGFyZzMs
IEFyZzQgYXJnNCkKICAgIHsKICAgICAgICB2b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoVCkp
OwoKICAgICAgICBpZiAoIXApCiAgICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICBmYXN0TWFs
bG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7CiAg
ICAgICAgcmV0dXJuIDo6bmV3KHApIFQoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CiAgICB9Cgog
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHR5
cGVuYW1lIEFyZzMsIHR5cGVuYW1lIEFyZzQsIHR5cGVuYW1lIEFyZzU+CiAgICBpbmxpbmUgVCog
ZmFzdE5ldyhBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJnMyBhcmczLCBBcmc0IGFyZzQsIEFyZzUg
YXJnNSkKICAgIHsKICAgICAgICB2b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoVCkpOwoKICAg
ICAgICBpZiAoIXApCiAgICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICBmYXN0TWFsbG9jTWF0
Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7CiAgICAgICAg
cmV0dXJuIDo6bmV3KHApIFQoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CiAgICB9Cgog
ICAgbmFtZXNwYWNlIEludGVybmFsIHsKIyAyMTUgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5oIgogICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICAgICAgIHVuaW9uIEFycmF5U2l6ZSB7CiAgICAgICAgICAgIEFsbG9jQWxpZ25tZW50SW50ZWdl
ciogc2l6ZTsKICAgICAgICAgICAgVCogdDsKICAgICAgICB9OwoKCgogICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBULCBib29sIHRyaXZpYWxDdG9yLCBib29sIHRyaXZpYWxEdG9yPgogICAgICAg
IHN0cnVjdCBOZXdBcnJheUltcGwgewogICAgICAgICAgICBzdGF0aWMgVCogZmFzdE5ld0FycmF5
KHNpemVfdCBjb3VudCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVCogcCA9IHN0YXRp
Y19jYXN0PFQqPihmYXN0TWFsbG9jKHNpemVvZihUKSAqIGNvdW50KSk7CiAgICAgICAgICAgICAg
ICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFz
dE5ld0FycmF5KTsKICAgICAgICAgICAgICAgIHJldHVybiBwOwogICAgICAgICAgICB9CiAgICAg
ICAgfTsKCgoKICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICAgICBzdHJ1Y3QgTmV3
QXJyYXlJbXBsPFQsIGZhbHNlLCB0cnVlPiB7CiAgICAgICAgICAgIHN0YXRpYyBUKiBmYXN0TmV3
QXJyYXkoc2l6ZV90IGNvdW50KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUKiBwID0g
c3RhdGljX2Nhc3Q8VCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFQpICogY291bnQpKTsKCiAgICAgICAg
ICAgICAgICBpZiAoIXApCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgICAg
ICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgSW50ZXJuYWw6OkFsbG9jVHlw
ZUZhc3ROZXdBcnJheSk7CgogICAgICAgICAgICAgICAgZm9yIChUKiBwT2JqZWN0ID0gcCwgKnBP
YmplY3RFbmQgPSBwT2JqZWN0ICsgY291bnQ7IHBPYmplY3QgIT0gcE9iamVjdEVuZDsgKytwT2Jq
ZWN0KQogICAgICAgICAgICAgICAgICAgIDo6bmV3KHBPYmplY3QpIFQ7CgogICAgICAgICAgICAg
ICAgcmV0dXJuIHA7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKCgogICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICAgICAgIHN0cnVjdCBOZXdBcnJheUltcGw8VCwgdHJ1ZSwgZmFsc2U+
IHsKICAgICAgICAgICAgc3RhdGljIFQqIGZhc3ROZXdBcnJheShzaXplX3QgY291bnQpCiAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihBbGxv
Y0FsaWdubWVudEludGVnZXIpICsgKHNpemVvZihUKSAqIGNvdW50KSk7CiAgICAgICAgICAgICAg
ICBBcnJheVNpemU8VD4gYSA9IHsgc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4o
cCkgfTsKCiAgICAgICAgICAgICAgICBpZiAoIXApCiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CgogICAgICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgSW50
ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXdBcnJheSk7CiAgICAgICAgICAgICAgICAqYS5zaXplKysg
PSBjb3VudDsKCgogICAgICAgICAgICAgICAgcmV0dXJuIGEudDsKICAgICAgICAgICAgfQogICAg
ICAgIH07CgoKCiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgICAgc3RydWN0IE5l
d0FycmF5SW1wbDxULCBmYWxzZSwgZmFsc2U+IHsKICAgICAgICAgICAgc3RhdGljIFQqIGZhc3RO
ZXdBcnJheShzaXplX3QgY291bnQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZvaWQq
IHAgPSBmYXN0TWFsbG9jKHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpICsgKHNpemVvZihU
KSAqIGNvdW50KSk7CiAgICAgICAgICAgICAgICBBcnJheVNpemU8VD4gYSA9IHsgc3RhdGljX2Nh
c3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgfTsKCiAgICAgICAgICAgICAgICBpZiAoIXAp
CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgICAgICAgICAgZmFzdE1hbGxv
Y01hdGNoVmFsaWRhdGVNYWxsb2MocCwgSW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXdBcnJheSk7
CiAgICAgICAgICAgICAgICAqYS5zaXplKysgPSBjb3VudDsKCiAgICAgICAgICAgICAgICBmb3Ig
KFQqIHBUID0gYS50LCAqcFRFbmQgPSBwVCArIGNvdW50OyBwVCAhPSBwVEVuZDsgKytwVCkKICAg
ICAgICAgICAgICAgICAgICA6Om5ldyhwVCkgVDsKCiAgICAgICAgICAgICAgICByZXR1cm4gYS50
OwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KICAgIGlubGluZSBUKiBmYXN0TmV3QXJyYXkoc2l6ZV90IGNvdW50KQogICAgewogICAgICAg
IHJldHVybiBJbnRlcm5hbDo6TmV3QXJyYXlJbXBsPFQsIFdURjo6SGFzVHJpdmlhbENvbnN0cnVj
dG9yPFQ+Ojp2YWx1ZSwgV1RGOjpIYXNUcml2aWFsRGVzdHJ1Y3RvcjxUPjo6dmFsdWU+OjpmYXN0
TmV3QXJyYXkoY291bnQpOwogICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgaW5s
aW5lIHZvaWQgZmFzdERlbGV0ZShUKiBwKQogICAgewogICAgICAgIGlmICghcCkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgSW50ZXJu
YWw6OkFsbG9jVHlwZUZhc3ROZXcpOwogICAgICAgIHAtPn5UKCk7CiAgICAgICAgZmFzdEZyZWUo
cCk7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICBpbmxpbmUgdm9pZCBmYXN0
RGVsZXRlU2tpcHBpbmdEZXN0cnVjdG9yKFQqIHApCiAgICB7CiAgICAgICAgaWYgKCFwKQogICAg
ICAgICAgICByZXR1cm47CgogICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCBJ
bnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7CiAgICAgICAgZmFzdEZyZWUocCk7CiAgICB9Cgog
ICAgbmFtZXNwYWNlIEludGVybmFsIHsKCgogICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBi
b29sIHRyaXZpYWxEdG9yPgogICAgICAgIHN0cnVjdCBEZWxldGVBcnJheUltcGwgewogICAgICAg
ICAgICBzdGF0aWMgdm9pZCBmYXN0RGVsZXRlQXJyYXkodm9pZCogcCkKICAgICAgICAgICAgewoK
CiAgICAgICAgICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgSW50ZXJuYWw6
OkFsbG9jVHlwZUZhc3ROZXdBcnJheSk7CiAgICAgICAgICAgICAgICBmYXN0RnJlZShwKTsKICAg
ICAgICAgICAgfQogICAgICAgIH07CgoKCiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAg
ICAgICAgc3RydWN0IERlbGV0ZUFycmF5SW1wbDxULCBmYWxzZT4gewogICAgICAgICAgICBzdGF0
aWMgdm9pZCBmYXN0RGVsZXRlQXJyYXkoVCogcCkKICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgaWYgKCFwKQogICAgICAgICAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgICAgICAgICBB
cnJheVNpemU8VD4gYTsKICAgICAgICAgICAgICAgIGEudCA9IHA7CiAgICAgICAgICAgICAgICBh
LnNpemUtLTsKCiAgICAgICAgICAgICAgICBUKiBwRW5kID0gcCArICphLnNpemU7CiAgICAgICAg
ICAgICAgICB3aGlsZSAocEVuZC0tICE9IHApCiAgICAgICAgICAgICAgICAgICAgcEVuZC0+flQo
KTsKCiAgICAgICAgICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUoYS5zaXplLCBJ
bnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5KTsKICAgICAgICAgICAgICAgIGZhc3RGcmVl
KGEuc2l6ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgIH0KCiAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgIHZvaWQgZmFzdERlbGV0ZUFycmF5KFQqIHApCiAgICB7CiAgICAgICAg
SW50ZXJuYWw6OkRlbGV0ZUFycmF5SW1wbDxULCBXVEY6Okhhc1RyaXZpYWxEZXN0cnVjdG9yPFQ+
Ojp2YWx1ZT46OmZhc3REZWxldGVBcnJheShwKTsKICAgIH0KCgogICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgICBpbmxpbmUgdm9pZCBmYXN0Tm9uTnVsbERlbGV0ZShUKiBwKQogICAgewogICAg
ICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFz
dE5ldyk7CiAgICAgICAgcC0+flQoKTsKICAgICAgICBmYXN0RnJlZShwKTsKICAgIH0KCiAgICBu
YW1lc3BhY2UgSW50ZXJuYWwgewoKCiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wg
dHJpdmlhbER0b3I+CiAgICAgICAgc3RydWN0IE5vbk51bGxEZWxldGVBcnJheUltcGwgewogICAg
ICAgICAgICBzdGF0aWMgdm9pZCBmYXN0Tm9uTnVsbERlbGV0ZUFycmF5KHZvaWQqIHApCiAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCBJ
bnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5KTsKCiAgICAgICAgICAgICAgICBmYXN0RnJl
ZShwKTsKICAgICAgICAgICAgfQogICAgICAgIH07CgoKCiAgICAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgICAgICAgc3RydWN0IE5vbk51bGxEZWxldGVBcnJheUltcGw8VCwgZmFsc2U+IHsK
ICAgICAgICAgICAgc3RhdGljIHZvaWQgZmFzdE5vbk51bGxEZWxldGVBcnJheShUKiBwKQogICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICBBcnJheVNpemU8VD4gYTsKICAgICAgICAgICAgICAg
IGEudCA9IHA7CiAgICAgICAgICAgICAgICBhLnNpemUtLTsKCiAgICAgICAgICAgICAgICBUKiBw
RW5kID0gcCArICphLnNpemU7CiAgICAgICAgICAgICAgICB3aGlsZSAocEVuZC0tICE9IHApCiAg
ICAgICAgICAgICAgICAgICAgcEVuZC0+flQoKTsKCiAgICAgICAgICAgICAgICBmYXN0TWFsbG9j
TWF0Y2hWYWxpZGF0ZUZyZWUoYS5zaXplLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5
KTsKICAgICAgICAgICAgICAgIGZhc3RGcmVlKGEuc2l6ZSk7CiAgICAgICAgICAgIH0KICAgICAg
ICB9OwoKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgIHZvaWQgZmFzdE5vbk51
bGxEZWxldGVBcnJheShUKiBwKQogICAgewogICAgICAgIEludGVybmFsOjpOb25OdWxsRGVsZXRl
QXJyYXlJbXBsPFQsIFdURjo6SGFzVHJpdmlhbERlc3RydWN0b3I8VD46OnZhbHVlPjo6ZmFzdE5v
bk51bGxEZWxldGVBcnJheShwKTsKICAgIH0KCgp9Cgp1c2luZyBXVEY6OmZhc3REZWxldGVTa2lw
cGluZ0Rlc3RydWN0b3I7CiMgMjggIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UmVmUHRyLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NS
ZWZQdHIuaCIgMQojIDIyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NS
ZWZQdHIuaCIKI2RlZmluZSBXVEZfUGFzc1JlZlB0cl9oIAoKIyAxICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0Fsd2F5c0lubGluZS5oIiAxCiMgMjUgIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFzc1JlZlB0ci5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgiIDEKIyAyOCAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgiCiNkZWZpbmUgTnVsbFB0cl9oIAoKCgoKCgojZGVm
aW5lIF9faGFzX2ZlYXR1cmUoZmVhdHVyZSkgMAojIDQ2ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL051bGxQdHIuaCIKbmFtZXNwYWNlIHN0ZCB7CiAgICBjbGFzcyBudWxscHRy
X3QgeyB9Owp9CgpleHRlcm4gc3RkOjpudWxscHRyX3QgbnVsbHB0cjsKIyAyNiAiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXNzUmVmUHRyLmgiIDIKCm5hbWVzcGFjZSBXVEYg
ewoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cjsKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNz
UmVmUHRyPFQ+IGFkb3B0UmVmKFQqKTsKCiAgICBpbmxpbmUgdm9pZCBhZG9wdGVkKGNvbnN0IHZv
aWQqKSB7IH0KCgoKCgoKCiNkZWZpbmUgUkVGX0RFUkVGX0lOTElORSBpbmxpbmUKIyA1MCAiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXNzUmVmUHRyLmgiCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCByZWZJZk5vdE51bGwoVCogcHRyKQogICAgewogICAg
ICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KChwdHIgIT0gMCksIDEpKQogICAgICAgICAgICBwdHIt
PnJlZigpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGRlcmVm
SWZOb3ROdWxsKFQqIHB0cikKICAgIHsKICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCgocHRy
ICE9IDApLCAxKSkKICAgICAgICAgICAgcHRyLT5kZXJlZigpOwogICAgfQoKI3VuZGVmIFJFRl9E
RVJFRl9JTkxJTkUKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyIHsK
ICAgIHB1YmxpYzoKICAgICAgICBQYXNzUmVmUHRyKCkgOiBtX3B0cigwKSB7IH0KICAgICAgICBQ
YXNzUmVmUHRyKFQqIHB0cikgOiBtX3B0cihwdHIpIHsgcmVmSWZOb3ROdWxsKHB0cik7IH0KCgoK
ICAgICAgICBQYXNzUmVmUHRyKGNvbnN0IFBhc3NSZWZQdHImIG8pIDogbV9wdHIoby5sZWFrUmVm
KCkpIHsgfQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHIoY29uc3QgUGFz
c1JlZlB0cjxVPiYgbykgOiBtX3B0cihvLmxlYWtSZWYoKSkgeyB9CgogICAgICAgIGlubGluZSB+
UGFzc1JlZlB0cigpIHsgZGVyZWZJZk5vdE51bGwobV9wdHIpOyB9CgogICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IFBhc3NSZWZQdHIoY29uc3QgUmVmUHRyPFU+Jik7CgogICAgICAgIFQqIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CgogICAgICAgIFQqIGxlYWtSZWYoKSBjb25zdCBf
X2F0dHJpYnV0ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSk7CgogICAgICAgIFQmIG9wZXJhdG9y
KigpIGNvbnN0IHsgcmV0dXJuICptX3B0cjsgfQogICAgICAgIFQqIG9wZXJhdG9yLT4oKSBjb25z
dCB7IHJldHVybiBtX3B0cjsgfQoKICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFtX3B0cjsgfQoKCiAgICAgICAgdHlwZWRlZiBUKiAoUGFzc1JlZlB0cjo6KlVuc3BlY2lm
aWVkQm9vbFR5cGUpOwogICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3B0ciA/ICZQYXNzUmVmUHRyOjptX3B0ciA6IDA7IH0KCiAgICAgICAgUGFz
c1JlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHImKSB7IHR5cGVkZWYgaW50IGR1bW15
UGFzc1JlZlB0cl9zaG91bGRfbmV2ZXJfYmVfYXNzaWduZWRfdG8gWyghc2l6ZW9mKFQqKSkgPyAx
IDogLTFdOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgICAgZnJpZW5kIFBhc3NSZWZQdHIgYWRvcHRS
ZWY8VD4oVCopOwoKCiAgICAgICAgVCogcmVsZWFzZVJlZigpIGNvbnN0IF9fYXR0cmlidXRlX18g
KCh3YXJuX3VudXNlZF9yZXN1bHQpKSB7IHJldHVybiBsZWFrUmVmKCk7IH0KCiAgICBwcml2YXRl
OgoKICAgICAgICBQYXNzUmVmUHRyKFQqIHB0ciwgYm9vbCkgOiBtX3B0cihwdHIpIHsgfQoKICAg
ICAgICBtdXRhYmxlIFQqIG1fcHRyOwogICAgfTsKIyAxMTMgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGFzc1JlZlB0ci5oIgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xh
c3MgTm9uTnVsbFBhc3NSZWZQdHIgewogICAgcHVibGljOgogICAgICAgIE5vbk51bGxQYXNzUmVm
UHRyKFQqIHB0cikKICAgICAgICAgICAgOiBtX3B0cihwdHIpCiAgICAgICAgewogICAgICAgICAg
ICBkbyBpZiAoIShtX3B0cikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXNzUmVmUHRyLmgiLCAxMTgsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJtX3B0ciIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgIG1fcHRyLT5yZWYoKTsKICAgICAgICB9CgogICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE5vbk51bGxQYXNzUmVmUHRyKGNvbnN0IFJlZlB0cjxV
PiYgbykKICAgICAgICAgICAgOiBtX3B0cihvLmdldCgpKQogICAgICAgIHsKICAgICAgICAgICAg
ZG8gaWYgKCEobV9wdHIpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFzc1JlZlB0ci5oIiwgMTI1LCBfX1BSRVRUWV9GVU5D
VElPTl9fLCAibV9wdHIiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWlu
dHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7
IH0gd2hpbGUgKDApOwogICAgICAgICAgICBtX3B0ci0+cmVmKCk7CiAgICAgICAgfQoKICAgICAg
ICBOb25OdWxsUGFzc1JlZlB0cihjb25zdCBOb25OdWxsUGFzc1JlZlB0ciYgbykKICAgICAgICAg
ICAgOiBtX3B0cihvLmxlYWtSZWYoKSkKICAgICAgICB7CiAgICAgICAgICAgIGRvIGlmICghKG1f
cHRyKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1Bhc3NSZWZQdHIuaCIsIDEzMiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1f
cHRyIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICB9CgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE5vbk51bGxQYXNzUmVm
UHRyKGNvbnN0IE5vbk51bGxQYXNzUmVmUHRyPFU+JiBvKQogICAgICAgICAgICA6IG1fcHRyKG8u
bGVha1JlZigpKQogICAgICAgIHsKICAgICAgICAgICAgZG8gaWYgKCEobV9wdHIpKSB7IFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGFzc1JlZlB0ci5oIiwgMTM4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9wdHIiKTsgZG8geyBX
VEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAo
KHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIH0K
CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gTm9uTnVsbFBhc3NSZWZQdHIoY29uc3QgUGFz
c1JlZlB0cjxVPiYgbykKICAgICAgICAgICAgOiBtX3B0cihvLmxlYWtSZWYoKSkKICAgICAgICB7
CiAgICAgICAgICAgIGRvIGlmICghKG1fcHRyKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJl
KCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NSZWZQdHIuaCIsIDE0NCwg
X19QUkVUVFlfRlVOQ1RJT05fXywgIm1fcHRyIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7
ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICB9CgogICAgICAgIGlubGluZSB+Tm9u
TnVsbFBhc3NSZWZQdHIoKSB7IGRlcmVmSWZOb3ROdWxsKG1fcHRyKTsgfQoKICAgICAgICBUKiBn
ZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQoKICAgICAgICBUKiBsZWFrUmVmKCkgY29uc3Qg
X19hdHRyaWJ1dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpIHsgVCogdG1wID0gbV9wdHI7IG1f
cHRyID0gMDsgcmV0dXJuIHRtcDsgfQoKICAgICAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJl
dHVybiAqbV9wdHI7IH0KICAgICAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9w
dHI7IH0KCiAgICAgICAgTm9uTnVsbFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBOb25OdWxs
UGFzc1JlZlB0ciYpIHsgdHlwZWRlZiBpbnQgZHVtbXlOb25OdWxsUGFzc1JlZlB0cl9zaG91bGRf
bmV2ZXJfYmVfYXNzaWduZWRfdG8gWyghc2l6ZW9mKFQqKSkgPyAxIDogLTFdOyByZXR1cm4gKnRo
aXM7IH0KCgogICAgICAgIFQqIHJlbGVhc2VSZWYoKSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fy
bl91bnVzZWRfcmVzdWx0KSkgeyByZXR1cm4gbGVha1JlZigpOyB9CgogICAgcHJpdmF0ZToKICAg
ICAgICBtdXRhYmxlIFQqIG1fcHRyOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPjo6UGFzc1JlZlB0cihjb25z
dCBSZWZQdHI8VT4mIG8pCiAgICAgICAgOiBtX3B0cihvLmdldCgpKQogICAgewogICAgICAgIFQq
IHB0ciA9IG1fcHRyOwogICAgICAgIHJlZklmTm90TnVsbChwdHIpOwogICAgfQoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBQYXNzUmVmUHRyPFQ+OjpsZWFrUmVmKCkgY29uc3QK
ICAgIHsKICAgICAgICBUKiBwdHIgPSBtX3B0cjsKICAgICAgICBtX3B0ciA9IDA7CiAgICAgICAg
cmV0dXJuIHB0cjsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIGNvbnN0IFBhc3NS
ZWZQdHI8VT4mIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsKICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIGNvbnN0IFJlZlB0cjxVPiYgYikKICAgIHsK
ICAgICAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRy
PFQ+JiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKQogICAgewogICAgICAgIHJldHVybiBhLmdl
dCgpID09IGIuZ2V0KCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBVKiBiKQog
ICAgewogICAgICAgIHJldHVybiBhLmdldCgpID09IGI7CiAgICB9CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBQ
YXNzUmVmUHRyPFU+JiBiKQogICAgewogICAgICAgIHJldHVybiBhID09IGIuZ2V0KCk7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKQogICAg
ewogICAgICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNz
UmVmUHRyPFQ+JiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEu
Z2V0KCkgIT0gYi5nZXQoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZlB0cjxUPiYgYSwgY29uc3QgUGFz
c1JlZlB0cjxVPiYgYikKICAgIHsKICAgICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgVSogYikKICAgIHsKICAgICAgICByZXR1
cm4gYS5nZXQoKSAhPSBiOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCogYSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikK
ICAgIHsKICAgICAgICByZXR1cm4gYSAhPSBiLmdldCgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBQYXNzUmVmUHRyPFQ+IGFkb3B0UmVmKFQqIHApCiAgICB7CiAgICAg
ICAgYWRvcHRlZChwKTsKICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxUPihwLCB0cnVlKTsKICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0
cjxUPiBzdGF0aWNfcG9pbnRlcl9jYXN0KGNvbnN0IFBhc3NSZWZQdHI8VT4mIHApCiAgICB7CiAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKHN0YXRpY19jYXN0PFQqPihwLmxlYWtSZWYoKSkpOwogICAg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmUHRy
PFQ+IGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBQYXNzUmVmUHRyPFU+JiBwKQogICAgewogICAg
ICAgIHJldHVybiBhZG9wdFJlZihjb25zdF9jYXN0PFQqPihwLmxlYWtSZWYoKSkpOwogICAgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHIoY29uc3QgUGFzc1JlZlB0
cjxUPiYgcCkKICAgIHsKICAgICAgICByZXR1cm4gcC5nZXQoKTsKICAgIH0KCn0KCnVzaW5nIFdU
Rjo6UGFzc1JlZlB0cjsKdXNpbmcgV1RGOjpOb25OdWxsUGFzc1JlZlB0cjsKdXNpbmcgV1RGOjph
ZG9wdFJlZjsKdXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0Owp1c2luZyBXVEY6OmNvbnN0
X3BvaW50ZXJfY2FzdDsKIyAyOSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9S
ZWZQdHIuaCIgMgoKbmFtZXNwYWNlIFdURiB7CgogICAgZW51bSBQbGFjZW1lbnROZXdBZG9wdFR5
cGUgeyBQbGFjZW1lbnROZXdBZG9wdCB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IFBhc3NSZWZQdHI7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBOb25OdWxsUGFzc1Jl
ZlB0cjsKCiAgICBlbnVtIEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUgeyBIYXNoVGFibGVEZWxl
dGVkVmFsdWUgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWZQdHIgewogICAg
ICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHZvaWQqIHAgPSA6OldURjo6ZmFzdE1h
bGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIDo6V1RG
OjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyByZXR1cm4gcDsgfSB2b2lkIG9wZXJhdG9y
IGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwg
OjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZh
c3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6
OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyByZXR1cm4gcDsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlk
YXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyA6OldU
Rjo6ZmFzdEZyZWUocCk7IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgVGhpc0lzSGVyZVRvRm9yY2VB
U2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CiAgICBwdWJsaWM6CiAgICAgICAgaW5saW5lIFJlZlB0
cigpIDogbV9wdHIoMCkgeyB9CiAgICAgICAgaW5saW5lIFJlZlB0cihUKiBwdHIpIDogbV9wdHIo
cHRyKSB7IHJlZklmTm90TnVsbChwdHIpOyB9CiAgICAgICAgaW5saW5lIFJlZlB0cihjb25zdCBS
ZWZQdHImIG8pIDogbV9wdHIoby5tX3B0cikgeyByZWZJZk5vdE51bGwobV9wdHIpOyB9CiAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyKGNvbnN0IFJlZlB0cjxVPiYgbykgOiBtX3B0
cihvLmdldCgpKSB7IHJlZklmTm90TnVsbChtX3B0cik7IH0KCgogICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IFJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+Jik7CiAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gUmVmUHRyKGNvbnN0IE5vbk51bGxQYXNzUmVmUHRyPFU+Jik7CgoKICAgICAg
ICBpbmxpbmUgUmVmUHRyKFBsYWNlbWVudE5ld0Fkb3B0VHlwZSkgeyB9CgoKICAgICAgICBSZWZQ
dHIoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3B0cihoYXNoVGFibGVEZWxldGVkVmFs
dWUoKSkgeyB9CiAgICAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHRyID09IGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CgogICAgICAgIGlubGlu
ZSB+UmVmUHRyKCkgeyBkZXJlZklmTm90TnVsbChtX3B0cik7IH0KCiAgICAgICAgVCogZ2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9wdHI7IH0KCiAgICAgICAgdm9pZCBjbGVhcigpOwogICAgICAgIFBh
c3NSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUGFzc1JlZlB0cjxUPiB0bXAgPSBhZG9wdFJlZihtX3B0
cik7IG1fcHRyID0gMDsgcmV0dXJuIHRtcDsgfQoKICAgICAgICBUJiBvcGVyYXRvciooKSBjb25z
dCB7IHJldHVybiAqbV9wdHI7IH0KICAgICAgICBpbmxpbmUgVCogb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuIG1fcHRyOyB9CgogICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1
cm4gIW1fcHRyOyB9CgoKICAgICAgICB0eXBlZGVmIFQqIChSZWZQdHI6OipVbnNwZWNpZmllZEJv
b2xUeXBlKTsKICAgICAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wdHIgPyAmUmVmUHRyOjptX3B0ciA6IDA7IH0KCiAgICAgICAgUmVmUHRyJiBvcGVy
YXRvcj0oY29uc3QgUmVmUHRyJik7CiAgICAgICAgUmVmUHRyJiBvcGVyYXRvcj0oVCopOwogICAg
ICAgIFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VD4mKTsKICAgICAgICBSZWZQ
dHImIG9wZXJhdG9yPShjb25zdCBOb25OdWxsUGFzc1JlZlB0cjxUPiYpOwoKICAgICAgICBSZWZQ
dHImIG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCkgeyBjbGVhcigpOyByZXR1cm4gKnRoaXM7IH0K
CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUmVm
UHRyPFU+Jik7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0o
Y29uc3QgUGFzc1JlZlB0cjxVPiYpOwogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0
ciYgb3BlcmF0b3I9KGNvbnN0IE5vbk51bGxQYXNzUmVmUHRyPFU+Jik7CgogICAgICAgIHZvaWQg
c3dhcChSZWZQdHImKTsKCiAgICAgICAgc3RhdGljIFQqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KC0xKTsgfQoKICAgIHByaXZhdGU6CiAgICAg
ICAgVCogbV9wdHI7CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5
cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD46OlJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+JiBv
KQogICAgICAgIDogbV9wdHIoby5sZWFrUmVmKCkpCiAgICB7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0cjxUPjo6UmVmUHRy
KGNvbnN0IE5vbk51bGxQYXNzUmVmUHRyPFU+JiBvKQogICAgICAgIDogbV9wdHIoby5sZWFrUmVm
KCkpCiAgICB7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgUmVm
UHRyPFQ+OjpjbGVhcigpCiAgICB7CiAgICAgICAgVCogcHRyID0gbV9wdHI7CiAgICAgICAgbV9w
dHIgPSAwOwogICAgICAgIGRlcmVmSWZOb3ROdWxsKHB0cik7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3Qg
UmVmUHRyPFQ+JiBvKQogICAgewogICAgICAgIFQqIG9wdHIgPSBvLmdldCgpOwogICAgICAgIHJl
ZklmTm90TnVsbChvcHRyKTsKICAgICAgICBUKiBwdHIgPSBtX3B0cjsKICAgICAgICBtX3B0ciA9
IG9wdHI7CiAgICAgICAgZGVyZWZJZk5vdE51bGwocHRyKTsKICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5s
aW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+JiBvKQog
ICAgewogICAgICAgIFQqIG9wdHIgPSBvLmdldCgpOwogICAgICAgIHJlZklmTm90TnVsbChvcHRy
KTsKICAgICAgICBUKiBwdHIgPSBtX3B0cjsKICAgICAgICBtX3B0ciA9IG9wdHI7CiAgICAgICAg
ZGVyZWZJZk5vdE51bGwocHRyKTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0o
VCogb3B0cikKICAgIHsKICAgICAgICByZWZJZk5vdE51bGwob3B0cik7CiAgICAgICAgVCogcHRy
ID0gbV9wdHI7CiAgICAgICAgbV9wdHIgPSBvcHRyOwogICAgICAgIGRlcmVmSWZOb3ROdWxsKHB0
cik7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8
VD4mIG8pCiAgICB7CiAgICAgICAgVCogcHRyID0gbV9wdHI7CiAgICAgICAgbV9wdHIgPSBvLmxl
YWtSZWYoKTsKICAgICAgICBkZXJlZklmTm90TnVsbChwdHIpOwogICAgICAgIHJldHVybiAqdGhp
czsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQ
dHI8VD46Om9wZXJhdG9yPShjb25zdCBOb25OdWxsUGFzc1JlZlB0cjxUPiYgbykKICAgIHsKICAg
ICAgICBUKiBwdHIgPSBtX3B0cjsKICAgICAgICBtX3B0ciA9IG8ubGVha1JlZigpOwogICAgICAg
IGRlcmVmSWZOb3ROdWxsKHB0cik7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4m
IFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mIG8pCiAgICB7CiAgICAg
ICAgVCogcHRyID0gbV9wdHI7CiAgICAgICAgbV9wdHIgPSBvLmxlYWtSZWYoKTsKICAgICAgICBk
ZXJlZklmTm90TnVsbChwdHIpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+JiBS
ZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBOb25OdWxsUGFzc1JlZlB0cjxVPiYgbykKICAgIHsK
ICAgICAgICBUKiBwdHIgPSBtX3B0cjsKICAgICAgICBtX3B0ciA9IG8ubGVha1JlZigpOwogICAg
ICAgIGRlcmVmSWZOb3ROdWxsKHB0cik7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAg
IHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIFJlZlB0cjxUPjo6c3dhcChSZWZQdHI8VD4m
IG8pCiAgICB7CiAgICAgICAgc3RkOjpzd2FwKG1fcHRyLCBvLm1fcHRyKTsKICAgIH0KCiAgICB0
ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKFJlZlB0cjxUPiYgYSwgUmVmUHRyPFQ+
JiBiKQogICAgewogICAgICAgIGEuc3dhcChiKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZlB0cjxUPiYg
YSwgY29uc3QgUmVmUHRyPFU+JiBiKQogICAgewogICAgICAgIHJldHVybiBhLmdldCgpID09IGIu
Z2V0KCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VD4mIGEsIFUqIGIpCiAgICB7CiAgICAgICAg
cmV0dXJuIGEuZ2V0KCkgPT0gYjsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IFJlZlB0cjxVPiYgYikK
ICAgIHsKICAgICAgICByZXR1cm4gYSA9PSBiLmdldCgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRy
PFQ+JiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEuZ2V0KCkg
IT0gYi5nZXQoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZlB0cjxUPiYgYSwgVSogYikKICAgIHsKICAg
ICAgICByZXR1cm4gYS5nZXQoKSAhPSBiOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCogYSwgY29uc3QgUmVmUHRyPFU+
JiBiKQogICAgewogICAgICAgIHJldHVybiBhICE9IGIuZ2V0KCk7CiAgICB9CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0cjxUPiBzdGF0aWNfcG9pbnRl
cl9jYXN0KGNvbnN0IFJlZlB0cjxVPiYgcCkKICAgIHsKICAgICAgICByZXR1cm4gUmVmUHRyPFQ+
KHN0YXRpY19jYXN0PFQqPihwLmdldCgpKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0cjxUPiBjb25zdF9wb2ludGVyX2Nhc3QoY29uc3Qg
UmVmUHRyPFU+JiBwKQogICAgewogICAgICAgIHJldHVybiBSZWZQdHI8VD4oY29uc3RfY2FzdDxU
Kj4ocC5nZXQoKSkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBn
ZXRQdHIoY29uc3QgUmVmUHRyPFQ+JiBwKQogICAgewogICAgICAgIHJldHVybiBwLmdldCgpOwog
ICAgfQoKfQoKdXNpbmcgV1RGOjpSZWZQdHI7CnVzaW5nIFdURjo6c3RhdGljX3BvaW50ZXJfY2Fz
dDsKdXNpbmcgV1RGOjpjb25zdF9wb2ludGVyX2Nhc3Q7CiMgMzIgIi4uLy4uLy4uL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgiIDIKCm5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Cn0KCkBwcm90b2Nv
bCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyRGVsZWdhdGU7CkBjbGFzcyBXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyOwpAY2xhc3MgV2ViV2luZG93RmFkZUFuaW1hdGlv
bjsKQGNsYXNzIFFUTW92aWVMYXllcjsKCkBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlciB7CkBwcml2YXRlCiAgICBSZWZQdHI8V2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudD4gX21lZGlhRWxlbWVudDsKICAgIGlkIDxXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKCiAgICBOU1dpbmRvdyAqX2JhY2tn
cm91bmRGdWxsc2NyZWVuV2luZG93OwogICAgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlciAqX2h1ZENvbnRyb2xsZXI7CgogICAgV2ViV2luZG93RmFkZUFuaW1hdGlvbiAqX2Zh
ZGVBbmltYXRpb247CgogICAgQk9PTCBfaXNFbmRpbmdGdWxsc2NyZWVuOwogICAgQk9PTCBfZm9y
Y2VEaXNhYmxlQW5pbWF0aW9uOwogICAgdWludDMyX3QgX2lkbGVEaXNwbGF5U2xlZXBBc3NlcnRp
b247CiAgICB1aW50MzJfdCBfaWRsZVN5c3RlbVNsZWVwQXNzZXJ0aW9uOwogICAgTlNUaW1lciAq
X3RpY2tsZVRpbWVyOwp9CgotIChpZCA8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckRlbGVn
YXRlPilkZWxlZ2F0ZTsKLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7CgotICh2b2lkKXNldHVwVmlkZW9PdmVybGF5
OihRVE1vdmllTGF5ZXIqKWxheWVyOwotICh2b2lkKXNldE1lZGlhRWxlbWVudDooV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudCopbWVkaWFFbGVtZW50OwotIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50KiltZWRpYUVsZW1lbnQ7CgotICh2b2lkKWVudGVyRnVsbHNjcmVlbjooTlNTY3JlZW4gKilz
Y3JlZW47Ci0gKHZvaWQpZXhpdEZ1bGxzY3JlZW47CgpAZW5kCiMgMzEgIi4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tIiAy
CgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmgiIDEKIyAyOCAiLi4vLi4vLi4vU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaCIK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
TlNCdXR0b24uaCIgMSAzCgoKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0NvbnRyb2wuaCIgMSAzCgoKCgoKCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1ZpZXcuaCIg
MSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9OU1ZpZXcuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvTlNSYW5nZS5oIiAxIDMKCgoKCgoKCkBjbGFzcyBOU1N0cmlu
ZzsKCnR5cGVkZWYgc3RydWN0IF9OU1JhbmdlIHsKICAgIE5TVUludGVnZXIgbG9jYXRpb247CiAg
ICBOU1VJbnRlZ2VyIGxlbmd0aDsKfSBOU1JhbmdlOwoKdHlwZWRlZiBOU1JhbmdlICpOU1Jhbmdl
UG9pbnRlcjsKCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUp
KSBOU1JhbmdlIE5TTWFrZVJhbmdlKE5TVUludGVnZXIgbG9jLCBOU1VJbnRlZ2VyIGxlbikgewog
ICAgTlNSYW5nZSByOwogICAgci5sb2NhdGlvbiA9IGxvYzsKICAgIHIubGVuZ3RoID0gbGVuOwog
ICAgcmV0dXJuIHI7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19p
bmxpbmUpKSBOU1VJbnRlZ2VyIE5TTWF4UmFuZ2UoTlNSYW5nZSByYW5nZSkgewogICAgcmV0dXJu
IChyYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9f
YXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBCT09MIE5TTG9jYXRpb25JblJhbmdlKE5TVUlu
dGVnZXIgbG9jLCBOU1JhbmdlIHJhbmdlKSB7CiAgICByZXR1cm4gKGxvYyAtIHJhbmdlLmxvY2F0
aW9uIDwgcmFuZ2UubGVuZ3RoKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygo
YWx3YXlzX2lubGluZSkpIEJPT0wgTlNFcXVhbFJhbmdlcyhOU1JhbmdlIHJhbmdlMSwgTlNSYW5n
ZSByYW5nZTIpIHsKICAgIHJldHVybiAocmFuZ2UxLmxvY2F0aW9uID09IHJhbmdlMi5sb2NhdGlv
biAmJiByYW5nZTEubGVuZ3RoID09IHJhbmdlMi5sZW5ndGgpOwp9CgpleHRlcm4gIkMiIE5TUmFu
Z2UgTlNVbmlvblJhbmdlKE5TUmFuZ2UgcmFuZ2UxLCBOU1JhbmdlIHJhbmdlMik7CmV4dGVybiAi
QyIgTlNSYW5nZSBOU0ludGVyc2VjdGlvblJhbmdlKE5TUmFuZ2UgcmFuZ2UxLCBOU1JhbmdlIHJh
bmdlMik7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TU3RyaW5nRnJvbVJhbmdlKE5TUmFuZ2UgcmFu
Z2UpOwpleHRlcm4gIkMiIE5TUmFuZ2UgTlNSYW5nZUZyb21TdHJpbmcoTlNTdHJpbmcgKmFTdHJp
bmcpOwoKQGludGVyZmFjZSBOU1ZhbHVlIChOU1ZhbHVlUmFuZ2VFeHRlbnNpb25zKQoKKyAoTlNW
YWx1ZSAqKXZhbHVlV2l0aFJhbmdlOihOU1JhbmdlKXJhbmdlOwotIChOU1JhbmdlKXJhbmdlVmFs
dWU7CgpAZW5kCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9OU1ZpZXcuaCIgMiAzCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNBbmltYXRpb24uaCIgMSAzCiMgOSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQW5pbWF0aW9u
LmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMSAzCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRm91bmRhdGlvbi5o
IiAxIDMKCgoKCgojZGVmaW5lIF9fQ09SRUZPVU5EQVRJT05fQ09SRUZPVU5EQVRJT05fXyAxCiNk
ZWZpbmUgX19DT1JFRk9VTkRBVElPTl9fIDEKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQu
aCIgMSAzIDQKIyA1MiAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVmIGFzc2VydAoj
dW5kZWYgX19hc3NlcnQKIyA3NSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKZXh0ZXJuICJD
IiB7CnZvaWQgX19hc3NlcnRfcnRuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQsIGNv
bnN0IGNoYXIgKikgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CnZvaWQgX19lcHJpbnRm
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCwgY29uc3QgY2hhciAqKSBfX2F0
dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKfQoKI2RlZmluZSBfX2Fzc2VydChlLGZpbGUsbGlu
ZSkgX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgZmlsZSwgbGlu
ZSwgZSkKCgoKI2RlZmluZSBhc3NlcnQoZSkgKF9fYnVpbHRpbl9leHBlY3QoIShlKSwgMCkgPyBf
X2Fzc2VydF9ydG4oX19mdW5jX18sIF9fRklMRV9fLCBfX0xJTkVfXywgI2UpIDogKHZvaWQpMCkK
IyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvQ29yZUZvdW5kYXRpb24uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9lcnJuby5o
IiAxIDMgNAojIDIzICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRl
L3N5cy9lcnJuby5oIiAxIDMgNAojIDcwICIvdXNyL2luY2x1ZGUvc3lzL2Vycm5vLmgiIDMgNAoj
ZGVmaW5lIF9TWVNfRVJSTk9fSF8gCgoKZXh0ZXJuICJDIiB7CmV4dGVybiBpbnQgKiBfX2Vycm9y
KHZvaWQpOwojZGVmaW5lIGVycm5vICgqX19lcnJvcigpKQp9CgoKCgoKI2RlZmluZSBFUEVSTSAx
CiNkZWZpbmUgRU5PRU5UIDIKI2RlZmluZSBFU1JDSCAzCiNkZWZpbmUgRUlOVFIgNAojZGVmaW5l
IEVJTyA1CiNkZWZpbmUgRU5YSU8gNgojZGVmaW5lIEUyQklHIDcKI2RlZmluZSBFTk9FWEVDIDgK
I2RlZmluZSBFQkFERiA5CiNkZWZpbmUgRUNISUxEIDEwCiNkZWZpbmUgRURFQURMSyAxMQoKI2Rl
ZmluZSBFTk9NRU0gMTIKI2RlZmluZSBFQUNDRVMgMTMKI2RlZmluZSBFRkFVTFQgMTQKCiNkZWZp
bmUgRU5PVEJMSyAxNQoKI2RlZmluZSBFQlVTWSAxNgojZGVmaW5lIEVFWElTVCAxNwojZGVmaW5l
IEVYREVWIDE4CiNkZWZpbmUgRU5PREVWIDE5CiNkZWZpbmUgRU5PVERJUiAyMAojZGVmaW5lIEVJ
U0RJUiAyMQojZGVmaW5lIEVJTlZBTCAyMgojZGVmaW5lIEVORklMRSAyMwojZGVmaW5lIEVNRklM
RSAyNAojZGVmaW5lIEVOT1RUWSAyNQojZGVmaW5lIEVUWFRCU1kgMjYKI2RlZmluZSBFRkJJRyAy
NwojZGVmaW5lIEVOT1NQQyAyOAojZGVmaW5lIEVTUElQRSAyOQojZGVmaW5lIEVST0ZTIDMwCiNk
ZWZpbmUgRU1MSU5LIDMxCiNkZWZpbmUgRVBJUEUgMzIKCgojZGVmaW5lIEVET00gMzMKI2RlZmlu
ZSBFUkFOR0UgMzQKCgojZGVmaW5lIEVBR0FJTiAzNQojZGVmaW5lIEVXT1VMREJMT0NLIEVBR0FJ
TgojZGVmaW5lIEVJTlBST0dSRVNTIDM2CiNkZWZpbmUgRUFMUkVBRFkgMzcKCgojZGVmaW5lIEVO
T1RTT0NLIDM4CiNkZWZpbmUgRURFU1RBRERSUkVRIDM5CiNkZWZpbmUgRU1TR1NJWkUgNDAKI2Rl
ZmluZSBFUFJPVE9UWVBFIDQxCiNkZWZpbmUgRU5PUFJPVE9PUFQgNDIKI2RlZmluZSBFUFJPVE9O
T1NVUFBPUlQgNDMKCiNkZWZpbmUgRVNPQ0tUTk9TVVBQT1JUIDQ0CgojZGVmaW5lIEVOT1RTVVAg
NDUKIyAxNTIgIi91c3IvaW5jbHVkZS9zeXMvZXJybm8uaCIgMyA0CiNkZWZpbmUgRVBGTk9TVVBQ
T1JUIDQ2CgojZGVmaW5lIEVBRk5PU1VQUE9SVCA0NwojZGVmaW5lIEVBRERSSU5VU0UgNDgKI2Rl
ZmluZSBFQUREUk5PVEFWQUlMIDQ5CgoKI2RlZmluZSBFTkVURE9XTiA1MAojZGVmaW5lIEVORVRV
TlJFQUNIIDUxCiNkZWZpbmUgRU5FVFJFU0VUIDUyCiNkZWZpbmUgRUNPTk5BQk9SVEVEIDUzCiNk
ZWZpbmUgRUNPTk5SRVNFVCA1NAojZGVmaW5lIEVOT0JVRlMgNTUKI2RlZmluZSBFSVNDT05OIDU2
CiNkZWZpbmUgRU5PVENPTk4gNTcKCiNkZWZpbmUgRVNIVVRET1dOIDU4CiNkZWZpbmUgRVRPT01B
TllSRUZTIDU5CgojZGVmaW5lIEVUSU1FRE9VVCA2MAojZGVmaW5lIEVDT05OUkVGVVNFRCA2MQoK
I2RlZmluZSBFTE9PUCA2MgojZGVmaW5lIEVOQU1FVE9PTE9ORyA2MwoKCgojZGVmaW5lIEVIT1NU
RE9XTiA2NAoKI2RlZmluZSBFSE9TVFVOUkVBQ0ggNjUKI2RlZmluZSBFTk9URU1QVFkgNjYKCgoK
I2RlZmluZSBFUFJPQ0xJTSA2NwojZGVmaW5lIEVVU0VSUyA2OAoKI2RlZmluZSBFRFFVT1QgNjkK
CgojZGVmaW5lIEVTVEFMRSA3MAoKI2RlZmluZSBFUkVNT1RFIDcxCiNkZWZpbmUgRUJBRFJQQyA3
MgojZGVmaW5lIEVSUENNSVNNQVRDSCA3MwojZGVmaW5lIEVQUk9HVU5BVkFJTCA3NAojZGVmaW5l
IEVQUk9HTUlTTUFUQ0ggNzUKI2RlZmluZSBFUFJPQ1VOQVZBSUwgNzYKCgojZGVmaW5lIEVOT0xD
SyA3NwojZGVmaW5lIEVOT1NZUyA3OAoKCiNkZWZpbmUgRUZUWVBFIDc5CiNkZWZpbmUgRUFVVEgg
ODAKI2RlZmluZSBFTkVFREFVVEggODEKCgojZGVmaW5lIEVQV1JPRkYgODIKI2RlZmluZSBFREVW
RVJSIDgzCgoKI2RlZmluZSBFT1ZFUkZMT1cgODQKCgoKI2RlZmluZSBFQkFERVhFQyA4NQojZGVm
aW5lIEVCQURBUkNIIDg2CiNkZWZpbmUgRVNITElCVkVSUyA4NwojZGVmaW5lIEVCQURNQUNITyA4
OAoKCiNkZWZpbmUgRUNBTkNFTEVEIDg5CgojZGVmaW5lIEVJRFJNIDkwCiNkZWZpbmUgRU5PTVNH
IDkxCiNkZWZpbmUgRUlMU0VRIDkyCgojZGVmaW5lIEVOT0FUVFIgOTMKCgojZGVmaW5lIEVCQURN
U0cgOTQKI2RlZmluZSBFTVVMVElIT1AgOTUKI2RlZmluZSBFTk9EQVRBIDk2CiNkZWZpbmUgRU5P
TElOSyA5NwojZGVmaW5lIEVOT1NSIDk4CiNkZWZpbmUgRU5PU1RSIDk5CiNkZWZpbmUgRVBST1RP
IDEwMAojZGVmaW5lIEVUSU1FIDEwMQoKCgojZGVmaW5lIEVPUE5PVFNVUFAgMTAyCgoKI2RlZmlu
ZSBFTk9QT0xJQ1kgMTAzCgoKI2RlZmluZSBFTEFTVCAxMDMKIyAyNCAiL3Vzci9pbmNsdWRlL2Vy
cm5vLmgiIDIgMyA0CiMgMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL0NvcmVGb3VuZGF0aW9uLmgiIDIgMwoKIyAxICIvdXNyL2xp
Yi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL2xpbWl0cy5oIiAxIDMgNAoK
CgoKCgojIDEgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUv
c3lzbGltaXRzLmgiIDEgMyA0CgoKCgoKI2RlZmluZSBfR0NDX05FWFRfTElNSVRTX0ggCiMgOCAi
L3Vzci9saWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9saW1pdHMuaCIg
MiAzIDQKCgoKI3VuZGVmIF9HQ0NfTkVYVF9MSU1JVFNfSAojIDE4ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRm91bmRhdGlv
bi5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMSAzIDQKIyAyMyAiL3Vzci9pbmNs
dWRlL21hdGguaCIgMyA0CiNkZWZpbmUgX19NQVRIX0hfXyAKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L2FyY2hpdGVjdHVyZS9pMzg2L21hdGguaCIgMSAzIDQKIyAzMSAiL3Vzci9pbmNsdWRlL2FyY2hp
dGVjdHVyZS9pMzg2L21hdGguaCIgMyA0CiNkZWZpbmUgX19NQVRIX18gCgoKCgpleHRlcm4gIkMi
IHsKIyA0OSAiL3Vzci9pbmNsdWRlL2FyY2hpdGVjdHVyZS9pMzg2L21hdGguaCIgMyA0CiB0eXBl
ZGVmIGZsb2F0IGZsb2F0X3Q7CiB0eXBlZGVmIGRvdWJsZSBkb3VibGVfdDsKIyA2MyAiL3Vzci9p
bmNsdWRlL2FyY2hpdGVjdHVyZS9pMzg2L21hdGguaCIgMyA0CiNkZWZpbmUgSFVHRV9WQUwgX19i
dWlsdGluX2h1Z2VfdmFsKCkKI2RlZmluZSBIVUdFX1ZBTEYgX19idWlsdGluX2h1Z2VfdmFsZigp
CiNkZWZpbmUgSFVHRV9WQUxMIF9fYnVpbHRpbl9odWdlX3ZhbGwoKQojZGVmaW5lIE5BTiBfX2J1
aWx0aW5fbmFuZigiMHg3ZmMwMDAwMCIpCiNkZWZpbmUgX19NQVRIX0hfQUxXQVlTX0lOTElORV9f
IF9fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKIyA3NiAiL3Vzci9pbmNsdWRlL2FyY2hp
dGVjdHVyZS9pMzg2L21hdGguaCIgMyA0CiNkZWZpbmUgSU5GSU5JVFkgSFVHRV9WQUxGCgoKCgoK
CiNkZWZpbmUgRlBfTkFOIDEKI2RlZmluZSBGUF9JTkZJTklURSAyCiNkZWZpbmUgRlBfWkVSTyAz
CiNkZWZpbmUgRlBfTk9STUFMIDQKI2RlZmluZSBGUF9TVUJOT1JNQUwgNQojZGVmaW5lIEZQX1NV
UEVSTk9STUFMIDYKCgoKCgoKI3VuZGVmIEZQX0ZBU1RfRk1BCiN1bmRlZiBGUF9GQVNUX0ZNQUYK
I3VuZGVmIEZQX0ZBU1RfRk1BTAoKCiNkZWZpbmUgRlBfSUxPR0IwICgtMjE0NzQ4MzY0NyAtIDEp
CiNkZWZpbmUgRlBfSUxPR0JOQU4gKC0yMTQ3NDgzNjQ3IC0gMSkKCgojZGVmaW5lIE1BVEhfRVJS
Tk8gMQojZGVmaW5lIE1BVEhfRVJSRVhDRVBUIDIKCiNkZWZpbmUgbWF0aF9lcnJoYW5kbGluZyAo
X19tYXRoX2VycmhhbmRsaW5nKCkpCmV4dGVybiB1bnNpZ25lZCBpbnQgX19tYXRoX2VycmhhbmRs
aW5nICggdm9pZCApOwojIDEyMyAiL3Vzci9pbmNsdWRlL2FyY2hpdGVjdHVyZS9pMzg2L21hdGgu
aCIgMyA0CiNkZWZpbmUgZnBjbGFzc2lmeSh4KSAoIHNpemVvZiAoeCkgPT0gc2l6ZW9mKGZsb2F0
ICkgPyBfX2ZwY2xhc3NpZnlmKChmbG9hdCkoeCkpIDogc2l6ZW9mICh4KSA9PSBzaXplb2YoZG91
YmxlKSA/IF9fZnBjbGFzc2lmeWQoKGRvdWJsZSkoeCkpIDogX19mcGNsYXNzaWZ5ICgobG9uZyBk
b3VibGUpKHgpKSkKCgoKCmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5ZihmbG9hdCApOwpleHRlcm4g
aW50IF9fZnBjbGFzc2lmeWQoZG91YmxlICk7CmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5IChsb25n
IGRvdWJsZSk7CgoKCgoKCgojZGVmaW5lIGlzbm9ybWFsKHgpICggc2l6ZW9mICh4KSA9PSBzaXpl
b2YoZmxvYXQgKSA/IF9faW5saW5lX2lzbm9ybWFsZigoZmxvYXQpKHgpKSA6IHNpemVvZiAoeCkg
PT0gc2l6ZW9mKGRvdWJsZSkgPyBfX2lubGluZV9pc25vcm1hbGQoKGRvdWJsZSkoeCkpIDogX19p
bmxpbmVfaXNub3JtYWwgKChsb25nIGRvdWJsZSkoeCkpKQoKCgoKI2RlZmluZSBpc2Zpbml0ZSh4
KSAoIHNpemVvZiAoeCkgPT0gc2l6ZW9mKGZsb2F0ICkgPyBfX2lubGluZV9pc2Zpbml0ZWYoKGZs
b2F0KSh4KSkgOiBzaXplb2YgKHgpID09IHNpemVvZihkb3VibGUpID8gX19pbmxpbmVfaXNmaW5p
dGVkKChkb3VibGUpKHgpKSA6IF9faW5saW5lX2lzZmluaXRlICgobG9uZyBkb3VibGUpKHgpKSkK
CgoKCiNkZWZpbmUgaXNpbmYoeCkgKCBzaXplb2YgKHgpID09IHNpemVvZihmbG9hdCApID8gX19p
bmxpbmVfaXNpbmZmKChmbG9hdCkoeCkpIDogc2l6ZW9mICh4KSA9PSBzaXplb2YoZG91YmxlKSA/
IF9faW5saW5lX2lzaW5mZCgoZG91YmxlKSh4KSkgOiBfX2lubGluZV9pc2luZiAoKGxvbmcgZG91
YmxlKSh4KSkpCgoKCgojZGVmaW5lIGlzbmFuKHgpICggc2l6ZW9mICh4KSA9PSBzaXplb2YoZmxv
YXQgKSA/IF9faW5saW5lX2lzbmFuZigoZmxvYXQpKHgpKSA6IHNpemVvZiAoeCkgPT0gc2l6ZW9m
KGRvdWJsZSkgPyBfX2lubGluZV9pc25hbmQoKGRvdWJsZSkoeCkpIDogX19pbmxpbmVfaXNuYW4g
KChsb25nIGRvdWJsZSkoeCkpKQoKCgoKI2RlZmluZSBzaWduYml0KHgpICggc2l6ZW9mICh4KSA9
PSBzaXplb2YoZmxvYXQgKSA/IF9faW5saW5lX3NpZ25iaXRmKChmbG9hdCkoeCkpIDogc2l6ZW9m
ICh4KSA9PSBzaXplb2YoZG91YmxlKSA/IF9faW5saW5lX3NpZ25iaXRkKChkb3VibGUpKHgpKSA6
IF9faW5saW5lX3NpZ25iaXQoKGxvbmcgZG91YmxlKSh4KSkpCgoKCgogc3RhdGljIF9faW5saW5l
X18gaW50IF9faW5saW5lX2lzZmluaXRlZiAoZmxvYXQgKSBfX2F0dHJpYnV0ZV9fICgoYWx3YXlz
X2lubGluZSkpOwogc3RhdGljIF9faW5saW5lX18gaW50IF9faW5saW5lX2lzZmluaXRlZCAoZG91
YmxlICkgX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKTsKIHN0YXRpYyBfX2lubGluZV9f
IGludCBfX2lubGluZV9pc2Zpbml0ZSAobG9uZyBkb3VibGUpIF9fYXR0cmlidXRlX18gKChhbHdh
eXNfaW5saW5lKSk7CiBzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19pbmxpbmVfaXNpbmZmIChmbG9h
dCApIF9fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSk7CiBzdGF0aWMgX19pbmxpbmVfXyBp
bnQgX19pbmxpbmVfaXNpbmZkIChkb3VibGUgKSBfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGlu
ZSkpOwogc3RhdGljIF9faW5saW5lX18gaW50IF9faW5saW5lX2lzaW5mIChsb25nIGRvdWJsZSkg
X19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKTsKIHN0YXRpYyBfX2lubGluZV9fIGludCBf
X2lubGluZV9pc25hbmYgKGZsb2F0ICkgX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKTsK
IHN0YXRpYyBfX2lubGluZV9fIGludCBfX2lubGluZV9pc25hbmQgKGRvdWJsZSApIF9fYXR0cmli
dXRlX18gKChhbHdheXNfaW5saW5lKSk7CiBzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19pbmxpbmVf
aXNuYW4gKGxvbmcgZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpOwogc3Rh
dGljIF9faW5saW5lX18gaW50IF9faW5saW5lX2lzbm9ybWFsZiAoZmxvYXQgKSBfX2F0dHJpYnV0
ZV9fICgoYWx3YXlzX2lubGluZSkpOwogc3RhdGljIF9faW5saW5lX18gaW50IF9faW5saW5lX2lz
bm9ybWFsZCAoZG91YmxlICkgX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKTsKIHN0YXRp
YyBfX2lubGluZV9fIGludCBfX2lubGluZV9pc25vcm1hbCAobG9uZyBkb3VibGUpIF9fYXR0cmli
dXRlX18gKChhbHdheXNfaW5saW5lKSk7CiBzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19pbmxpbmVf
c2lnbmJpdGYgKGZsb2F0ICkgX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKTsKIHN0YXRp
YyBfX2lubGluZV9fIGludCBfX2lubGluZV9zaWduYml0ZCAoZG91YmxlICkgX19hdHRyaWJ1dGVf
XyAoKGFsd2F5c19pbmxpbmUpKTsKIHN0YXRpYyBfX2lubGluZV9fIGludCBfX2lubGluZV9zaWdu
Yml0IChsb25nIGRvdWJsZSkgX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKTsKCiBzdGF0
aWMgX19pbmxpbmVfXyBpbnQgX19pbmxpbmVfaXNpbmZmKCBmbG9hdCBfX3ggKSB7IHJldHVybiBf
X2J1aWx0aW5fZmFic2YoX194KSA9PSBfX2J1aWx0aW5faW5mZigpOyB9CiBzdGF0aWMgX19pbmxp
bmVfXyBpbnQgX19pbmxpbmVfaXNpbmZkKCBkb3VibGUgX194ICkgeyByZXR1cm4gX19idWlsdGlu
X2ZhYnMoX194KSA9PSBfX2J1aWx0aW5faW5mKCk7IH0KIHN0YXRpYyBfX2lubGluZV9fIGludCBf
X2lubGluZV9pc2luZiggbG9uZyBkb3VibGUgX194ICkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNs
KF9feCkgPT0gX19idWlsdGluX2luZmwoKTsgfQogc3RhdGljIF9faW5saW5lX18gaW50IF9faW5s
aW5lX2lzZmluaXRlZiggZmxvYXQgX194ICkgeyByZXR1cm4gX194ID09IF9feCAmJiBfX2J1aWx0
aW5fZmFic2YoX194KSAhPSBfX2J1aWx0aW5faW5mZigpOyB9CiBzdGF0aWMgX19pbmxpbmVfXyBp
bnQgX19pbmxpbmVfaXNmaW5pdGVkKCBkb3VibGUgX194ICkgeyByZXR1cm4gX194ID09IF9feCAm
JiBfX2J1aWx0aW5fZmFicyhfX3gpICE9IF9fYnVpbHRpbl9pbmYoKTsgfQogc3RhdGljIF9faW5s
aW5lX18gaW50IF9faW5saW5lX2lzZmluaXRlKCBsb25nIGRvdWJsZSBfX3ggKSB7IHJldHVybiBf
X3ggPT0gX194ICYmIF9fYnVpbHRpbl9mYWJzbChfX3gpICE9IF9fYnVpbHRpbl9pbmZsKCk7IH0K
IHN0YXRpYyBfX2lubGluZV9fIGludCBfX2lubGluZV9pc25hbmYoIGZsb2F0IF9feCApIHsgcmV0
dXJuIF9feCAhPSBfX3g7IH0KIHN0YXRpYyBfX2lubGluZV9fIGludCBfX2lubGluZV9pc25hbmQo
IGRvdWJsZSBfX3ggKSB7IHJldHVybiBfX3ggIT0gX194OyB9CiBzdGF0aWMgX19pbmxpbmVfXyBp
bnQgX19pbmxpbmVfaXNuYW4oIGxvbmcgZG91YmxlIF9feCApIHsgcmV0dXJuIF9feCAhPSBfX3g7
IH0KIHN0YXRpYyBfX2lubGluZV9fIGludCBfX2lubGluZV9zaWduYml0ZiggZmxvYXQgX194ICkg
eyB1bmlvbnsgZmxvYXQgX19mOyB1bnNpZ25lZCBpbnQgX191OyB9X191OyBfX3UuX19mID0gX194
OyByZXR1cm4gKGludCkoX191Ll9fdSA+PiAzMSk7IH0KIHN0YXRpYyBfX2lubGluZV9fIGludCBf
X2lubGluZV9zaWduYml0ZCggZG91YmxlIF9feCApIHsgdW5pb257IGRvdWJsZSBfX2Y7IHVuc2ln
bmVkIGludCBfX3VbMl07IH1fX3U7IF9fdS5fX2YgPSBfX3g7IHJldHVybiAoaW50KShfX3UuX191
WzFdID4+IDMxKTsgfQogc3RhdGljIF9faW5saW5lX18gaW50IF9faW5saW5lX3NpZ25iaXQoIGxv
bmcgZG91YmxlIF9feCApeyB1bmlvbnsgbG9uZyBkb3VibGUgX19sZDsgc3RydWN0eyB1bnNpZ25l
ZCBpbnQgX19tWzJdOyBzaG9ydCBfX3NleHA7IH1fX3A7IH1fX3U7IF9fdS5fX2xkID0gX194OyBy
ZXR1cm4gKGludCkgKCgodW5zaWduZWQgc2hvcnQpIF9fdS5fX3AuX19zZXhwKSA+PiAxNSk7IH0K
IHN0YXRpYyBfX2lubGluZV9fIGludCBfX2lubGluZV9pc25vcm1hbGYoIGZsb2F0IF9feCApIHsg
ZmxvYXQgZmFic2YgPSBfX2J1aWx0aW5fZmFic2YoX194KTsgaWYoIF9feCAhPSBfX3ggKSByZXR1
cm4gMDsgcmV0dXJuIGZhYnNmIDwgX19idWlsdGluX2luZmYoKSAmJiBmYWJzZiA+PSAxLjE3NTQ5
NDM1ZS0zOEY7IH0KIHN0YXRpYyBfX2lubGluZV9fIGludCBfX2lubGluZV9pc25vcm1hbGQoIGRv
dWJsZSBfX3ggKSB7IGRvdWJsZSBmYWJzZiA9IF9fYnVpbHRpbl9mYWJzKF9feCk7IGlmKCBfX3gg
IT0gX194ICkgcmV0dXJuIDA7IHJldHVybiBmYWJzZiA8IF9fYnVpbHRpbl9pbmYoKSAmJiBmYWJz
ZiA+PSAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwODsgfQogc3RhdGljIF9faW5saW5lX18gaW50IF9f
aW5saW5lX2lzbm9ybWFsKCBsb25nIGRvdWJsZSBfX3ggKSB7IGxvbmcgZG91YmxlIGZhYnNmID0g
X19idWlsdGluX2ZhYnNsKF9feCk7IGlmKCBfX3ggIT0gX194ICkgcmV0dXJuIDA7IHJldHVybiBm
YWJzZiA8IF9fYnVpbHRpbl9pbmZsKCkgJiYgZmFic2YgPj0gMy4zNjIxMDMxNDMxMTIwOTM1MDYy
NmUtNDkzMkw7IH0KIyAyNTMgIi91c3IvaW5jbHVkZS9hcmNoaXRlY3R1cmUvaTM4Ni9tYXRoLmgi
IDMgNApleHRlcm4gZG91YmxlIGFjb3MoIGRvdWJsZSApOwpleHRlcm4gZmxvYXQgYWNvc2YoIGZs
b2F0ICk7CgpleHRlcm4gZG91YmxlIGFzaW4oIGRvdWJsZSApOwpleHRlcm4gZmxvYXQgYXNpbmYo
IGZsb2F0ICk7CgpleHRlcm4gZG91YmxlIGF0YW4oIGRvdWJsZSApOwpleHRlcm4gZmxvYXQgYXRh
bmYoIGZsb2F0ICk7CgpleHRlcm4gZG91YmxlIGF0YW4yKCBkb3VibGUsIGRvdWJsZSApOwpleHRl
cm4gZmxvYXQgYXRhbjJmKCBmbG9hdCwgZmxvYXQgKTsKCmV4dGVybiBkb3VibGUgY29zKCBkb3Vi
bGUgKTsKZXh0ZXJuIGZsb2F0IGNvc2YoIGZsb2F0ICk7CgpleHRlcm4gZG91YmxlIHNpbiggZG91
YmxlICk7CmV4dGVybiBmbG9hdCBzaW5mKCBmbG9hdCApOwoKZXh0ZXJuIGRvdWJsZSB0YW4oIGRv
dWJsZSApOwpleHRlcm4gZmxvYXQgdGFuZiggZmxvYXQgKTsKCmV4dGVybiBkb3VibGUgYWNvc2go
IGRvdWJsZSApOwpleHRlcm4gZmxvYXQgYWNvc2hmKCBmbG9hdCApOwoKZXh0ZXJuIGRvdWJsZSBh
c2luaCggZG91YmxlICk7CmV4dGVybiBmbG9hdCBhc2luaGYoIGZsb2F0ICk7CgpleHRlcm4gZG91
YmxlIGF0YW5oKCBkb3VibGUgKTsKZXh0ZXJuIGZsb2F0IGF0YW5oZiggZmxvYXQgKTsKCmV4dGVy
biBkb3VibGUgY29zaCggZG91YmxlICk7CmV4dGVybiBmbG9hdCBjb3NoZiggZmxvYXQgKTsKCmV4
dGVybiBkb3VibGUgc2luaCggZG91YmxlICk7CmV4dGVybiBmbG9hdCBzaW5oZiggZmxvYXQgKTsK
CmV4dGVybiBkb3VibGUgdGFuaCggZG91YmxlICk7CmV4dGVybiBmbG9hdCB0YW5oZiggZmxvYXQg
KTsKCmV4dGVybiBkb3VibGUgZXhwICggZG91YmxlICk7CmV4dGVybiBmbG9hdCBleHBmICggZmxv
YXQgKTsKCmV4dGVybiBkb3VibGUgZXhwMiAoIGRvdWJsZSApOwpleHRlcm4gZmxvYXQgZXhwMmYg
KCBmbG9hdCApOwoKZXh0ZXJuIGRvdWJsZSBleHBtMSAoIGRvdWJsZSApOwpleHRlcm4gZmxvYXQg
ZXhwbTFmICggZmxvYXQgKTsKCmV4dGVybiBkb3VibGUgbG9nICggZG91YmxlICk7CmV4dGVybiBm
bG9hdCBsb2dmICggZmxvYXQgKTsKCmV4dGVybiBkb3VibGUgbG9nMTAgKCBkb3VibGUgKTsKZXh0
ZXJuIGZsb2F0IGxvZzEwZiAoIGZsb2F0ICk7CgpleHRlcm4gZG91YmxlIGxvZzIgKCBkb3VibGUg
KTsKZXh0ZXJuIGZsb2F0IGxvZzJmICggZmxvYXQgKTsKCmV4dGVybiBkb3VibGUgbG9nMXAgKCBk
b3VibGUgKTsKZXh0ZXJuIGZsb2F0IGxvZzFwZiAoIGZsb2F0ICk7CgpleHRlcm4gZG91YmxlIGxv
Z2IgKCBkb3VibGUgKTsKZXh0ZXJuIGZsb2F0IGxvZ2JmICggZmxvYXQgKTsKCmV4dGVybiBkb3Vi
bGUgbW9kZiAoIGRvdWJsZSwgZG91YmxlICogKTsKZXh0ZXJuIGZsb2F0IG1vZGZmICggZmxvYXQs
IGZsb2F0ICogKTsKCmV4dGVybiBkb3VibGUgbGRleHAgKCBkb3VibGUsIGludCApOwpleHRlcm4g
ZmxvYXQgbGRleHBmICggZmxvYXQsIGludCApOwoKZXh0ZXJuIGRvdWJsZSBmcmV4cCAoIGRvdWJs
ZSwgaW50ICogKTsKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoIGZsb2F0LCBpbnQgKiApOwoKZXh0ZXJu
IGludCBpbG9nYiAoIGRvdWJsZSApOwpleHRlcm4gaW50IGlsb2diZiAoIGZsb2F0ICk7CgpleHRl
cm4gZG91YmxlIHNjYWxibiAoIGRvdWJsZSwgaW50ICk7CmV4dGVybiBmbG9hdCBzY2FsYm5mICgg
ZmxvYXQsIGludCApOwoKZXh0ZXJuIGRvdWJsZSBzY2FsYmxuICggZG91YmxlLCBsb25nIGludCAp
OwpleHRlcm4gZmxvYXQgc2NhbGJsbmYgKCBmbG9hdCwgbG9uZyBpbnQgKTsKCmV4dGVybiBkb3Vi
bGUgZmFicyggZG91YmxlICk7CmV4dGVybiBmbG9hdCBmYWJzZiggZmxvYXQgKTsKCmV4dGVybiBk
b3VibGUgY2JydCggZG91YmxlICk7CmV4dGVybiBmbG9hdCBjYnJ0ZiggZmxvYXQgKTsKCmV4dGVy
biBkb3VibGUgaHlwb3QgKCBkb3VibGUsIGRvdWJsZSApOwpleHRlcm4gZmxvYXQgaHlwb3RmICgg
ZmxvYXQsIGZsb2F0ICk7CgpleHRlcm4gZG91YmxlIHBvdyAoIGRvdWJsZSwgZG91YmxlICk7CmV4
dGVybiBmbG9hdCBwb3dmICggZmxvYXQsIGZsb2F0ICk7CgpleHRlcm4gZG91YmxlIHNxcnQoIGRv
dWJsZSApOwpleHRlcm4gZmxvYXQgc3FydGYoIGZsb2F0ICk7CgpleHRlcm4gZG91YmxlIGVyZigg
ZG91YmxlICk7CmV4dGVybiBmbG9hdCBlcmZmKCBmbG9hdCApOwoKZXh0ZXJuIGRvdWJsZSBlcmZj
KCBkb3VibGUgKTsKZXh0ZXJuIGZsb2F0IGVyZmNmKCBmbG9hdCApOwoKCgoKCgpleHRlcm4gZG91
YmxlIGxnYW1tYSggZG91YmxlICk7CmV4dGVybiBmbG9hdCBsZ2FtbWFmKCBmbG9hdCApOwoKZXh0
ZXJuIGRvdWJsZSB0Z2FtbWEoIGRvdWJsZSApOwpleHRlcm4gZmxvYXQgdGdhbW1hZiggZmxvYXQg
KTsKCmV4dGVybiBkb3VibGUgY2VpbCAoIGRvdWJsZSApOwpleHRlcm4gZmxvYXQgY2VpbGYgKCBm
bG9hdCApOwoKZXh0ZXJuIGRvdWJsZSBmbG9vciAoIGRvdWJsZSApOwpleHRlcm4gZmxvYXQgZmxv
b3JmICggZmxvYXQgKTsKCmV4dGVybiBkb3VibGUgbmVhcmJ5aW50ICggZG91YmxlICk7CmV4dGVy
biBmbG9hdCBuZWFyYnlpbnRmICggZmxvYXQgKTsKCmV4dGVybiBkb3VibGUgcmludCAoIGRvdWJs
ZSApOwpleHRlcm4gZmxvYXQgcmludGYgKCBmbG9hdCApOwoKZXh0ZXJuIGxvbmcgaW50IGxyaW50
ICggZG91YmxlICk7CmV4dGVybiBsb25nIGludCBscmludGYgKCBmbG9hdCApOwoKZXh0ZXJuIGRv
dWJsZSByb3VuZCAoIGRvdWJsZSApOwpleHRlcm4gZmxvYXQgcm91bmRmICggZmxvYXQgKTsKCmV4
dGVybiBsb25nIGludCBscm91bmQgKCBkb3VibGUgKTsKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZGYg
KCBmbG9hdCApOwoKCgoKICAgIGV4dGVybiBsb25nIGxvbmcgaW50IGxscmludCAoIGRvdWJsZSAp
OwogICAgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50ZiAoIGZsb2F0ICk7CgogICAgZXh0ZXJu
IGxvbmcgbG9uZyBpbnQgbGxyb3VuZCAoIGRvdWJsZSApOwogICAgZXh0ZXJuIGxvbmcgbG9uZyBp
bnQgbGxyb3VuZGYgKCBmbG9hdCApOwoKCgpleHRlcm4gZG91YmxlIHRydW5jICggZG91YmxlICk7
CmV4dGVybiBmbG9hdCB0cnVuY2YgKCBmbG9hdCApOwoKZXh0ZXJuIGRvdWJsZSBmbW9kICggZG91
YmxlLCBkb3VibGUgKTsKZXh0ZXJuIGZsb2F0IGZtb2RmICggZmxvYXQsIGZsb2F0ICk7CgpleHRl
cm4gZG91YmxlIHJlbWFpbmRlciAoIGRvdWJsZSwgZG91YmxlICk7CmV4dGVybiBmbG9hdCByZW1h
aW5kZXJmICggZmxvYXQsIGZsb2F0ICk7CgpleHRlcm4gZG91YmxlIHJlbXF1byAoIGRvdWJsZSwg
ZG91YmxlLCBpbnQgKiApOwpleHRlcm4gZmxvYXQgcmVtcXVvZiAoIGZsb2F0LCBmbG9hdCwgaW50
ICogKTsKCmV4dGVybiBkb3VibGUgY29weXNpZ24gKCBkb3VibGUsIGRvdWJsZSApOwpleHRlcm4g
ZmxvYXQgY29weXNpZ25mICggZmxvYXQsIGZsb2F0ICk7CgpleHRlcm4gZG91YmxlIG5hbiggY29u
c3QgY2hhciAqICk7CmV4dGVybiBmbG9hdCBuYW5mKCBjb25zdCBjaGFyICogKTsKCmV4dGVybiBk
b3VibGUgbmV4dGFmdGVyICggZG91YmxlLCBkb3VibGUgKTsKZXh0ZXJuIGZsb2F0IG5leHRhZnRl
cmYgKCBmbG9hdCwgZmxvYXQgKTsKCmV4dGVybiBkb3VibGUgZmRpbSAoIGRvdWJsZSwgZG91Ymxl
ICk7CmV4dGVybiBmbG9hdCBmZGltZiAoIGZsb2F0LCBmbG9hdCApOwoKZXh0ZXJuIGRvdWJsZSBm
bWF4ICggZG91YmxlLCBkb3VibGUgKTsKZXh0ZXJuIGZsb2F0IGZtYXhmICggZmxvYXQsIGZsb2F0
ICk7CgpleHRlcm4gZG91YmxlIGZtaW4gKCBkb3VibGUsIGRvdWJsZSApOwpleHRlcm4gZmxvYXQg
Zm1pbmYgKCBmbG9hdCwgZmxvYXQgKTsKCmV4dGVybiBkb3VibGUgZm1hICggZG91YmxlLCBkb3Vi
bGUsIGRvdWJsZSApOwpleHRlcm4gZmxvYXQgZm1hZiAoIGZsb2F0LCBmbG9hdCwgZmxvYXQgKTsK
CmV4dGVybiBsb25nIGRvdWJsZSBhY29zbChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJs
ZSBhc2lubChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSBhdGFubChsb25nIGRvdWJs
ZSk7CmV4dGVybiBsb25nIGRvdWJsZSBhdGFuMmwobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsK
ZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2wobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUg
c2lubChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSB0YW5sKGxvbmcgZG91YmxlKTsK
ZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NobChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJs
ZSBhc2luaGwobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgYXRhbmhsKGxvbmcgZG91
YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2hsKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcg
ZG91YmxlIHNpbmhsKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmhsKGxvbmcg
ZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cGwobG9uZyBkb3VibGUpOwpleHRlcm4gbG9u
ZyBkb3VibGUgZXhwMmwobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgZXhwbTFsKGxv
bmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2wobG9uZyBkb3VibGUpOwpleHRlcm4g
bG9uZyBkb3VibGUgbG9nMTBsKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzJs
KGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzFwbChsb25nIGRvdWJsZSk7CmV4
dGVybiBsb25nIGRvdWJsZSBsb2dibChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSBt
b2RmbChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUgKik7CmV4dGVybiBsb25nIGRvdWJsZSBsZGV4
cGwobG9uZyBkb3VibGUsIGludCk7CmV4dGVybiBsb25nIGRvdWJsZSBmcmV4cGwobG9uZyBkb3Vi
bGUsIGludCAqKTsKZXh0ZXJuIGludCBpbG9nYmwobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBk
b3VibGUgc2NhbGJubChsb25nIGRvdWJsZSwgaW50KTsKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxi
bG5sKGxvbmcgZG91YmxlLCBsb25nIGludCk7CmV4dGVybiBsb25nIGRvdWJsZSBmYWJzbChsb25n
IGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSBjYnJ0bChsb25nIGRvdWJsZSk7CmV4dGVybiBs
b25nIGRvdWJsZSBoeXBvdGwobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcg
ZG91YmxlIHBvd2wobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNxcnRsKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmwobG9uZyBkb3VibGUp
OwpleHRlcm4gbG9uZyBkb3VibGUgZXJmY2wobG9uZyBkb3VibGUpOwoKCgoKCgpleHRlcm4gbG9u
ZyBkb3VibGUgbGdhbW1hbChsb25nIGRvdWJsZSk7CgpleHRlcm4gbG9uZyBkb3VibGUgdGdhbW1h
bChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSBjZWlsbChsb25nIGRvdWJsZSk7CmV4
dGVybiBsb25nIGRvdWJsZSBmbG9vcmwobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUg
bmVhcmJ5aW50bChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSByaW50bChsb25nIGRv
dWJsZSk7CmV4dGVybiBsb25nIGludCBscmludGwobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBk
b3VibGUgcm91bmRsKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZGwobG9uZyBk
b3VibGUpOwoKCgogICAgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50bChsb25nIGRvdWJsZSk7
CiAgICBleHRlcm4gbG9uZyBsb25nIGludCBsbHJvdW5kbChsb25nIGRvdWJsZSk7CgoKZXh0ZXJu
IGxvbmcgZG91YmxlIHRydW5jbChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSBmbW9k
bChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgcmVtYWluZGVy
bChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgcmVtcXVvbChs
b25nIGRvdWJsZSwgbG9uZyBkb3VibGUsIGludCAqKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGNvcHlz
aWdubChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgbmFubChj
b25zdCBjaGFyICopOwpleHRlcm4gbG9uZyBkb3VibGUgbmV4dGFmdGVybChsb25nIGRvdWJsZSwg
bG9uZyBkb3VibGUpOwpleHRlcm4gZG91YmxlIG5leHR0b3dhcmQoZG91YmxlLCBsb25nIGRvdWJs
ZSk7CmV4dGVybiBmbG9hdCBuZXh0dG93YXJkZihmbG9hdCwgbG9uZyBkb3VibGUpOwpleHRlcm4g
bG9uZyBkb3VibGUgbmV4dHRvd2FyZGwobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKZXh0ZXJu
IGxvbmcgZG91YmxlIGZkaW1sKGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZSk7CmV4dGVybiBsb25n
IGRvdWJsZSBmbWF4bChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3Vi
bGUgZm1pbmwobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGZt
YWwobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZSk7CgojZGVmaW5lIGlzZ3Jl
YXRlcih4LHkpIF9fYnVpbHRpbl9pc2dyZWF0ZXIgKCh4KSwoeSkpCiNkZWZpbmUgaXNncmVhdGVy
ZXF1YWwoeCx5KSBfX2J1aWx0aW5faXNncmVhdGVyZXF1YWwgKCh4KSwoeSkpCiNkZWZpbmUgaXNs
ZXNzKHgseSkgX19idWlsdGluX2lzbGVzcyAoKHgpLCh5KSkKI2RlZmluZSBpc2xlc3NlcXVhbCh4
LHkpIF9fYnVpbHRpbl9pc2xlc3NlcXVhbCAoKHgpLCh5KSkKI2RlZmluZSBpc2xlc3NncmVhdGVy
KHgseSkgX19idWlsdGluX2lzbGVzc2dyZWF0ZXIgKCh4KSwoeSkpCiNkZWZpbmUgaXN1bm9yZGVy
ZWQoeCx5KSBfX2J1aWx0aW5faXN1bm9yZGVyZWQgKCh4KSwoeSkpCgpleHRlcm4gZG91YmxlIF9f
aW5mKCB2b2lkICk7CmV4dGVybiBmbG9hdCBfX2luZmYoIHZvaWQgKTsKZXh0ZXJuIGxvbmcgZG91
YmxlIF9faW5mbCggdm9pZCApOwpleHRlcm4gZmxvYXQgX19uYW4oIHZvaWQgKTsKCgpleHRlcm4g
ZG91YmxlIGowICggZG91YmxlICk7CgpleHRlcm4gZG91YmxlIGoxICggZG91YmxlICk7CgpleHRl
cm4gZG91YmxlIGpuICggaW50LCBkb3VibGUgKTsKCmV4dGVybiBkb3VibGUgeTAgKCBkb3VibGUg
KTsKCmV4dGVybiBkb3VibGUgeTEgKCBkb3VibGUgKTsKCmV4dGVybiBkb3VibGUgeW4gKCBpbnQs
IGRvdWJsZSApOwoKZXh0ZXJuIGRvdWJsZSBzY2FsYiAoIGRvdWJsZSwgZG91YmxlICk7CgoKI2Rl
ZmluZSBNX0UgMi43MTgyODE4Mjg0NTkwNDUyMzUzNjAyODc0NzEzNTI2NjI1MAojZGVmaW5lIE1f
TE9HMkUgMS40NDI2OTUwNDA4ODg5NjM0MDczNTk5MjQ2ODEwMDE4OTIxNAojZGVmaW5lIE1fTE9H
MTBFIDAuNDM0Mjk0NDgxOTAzMjUxODI3NjUxMTI4OTE4OTE2NjA1MDgyCiNkZWZpbmUgTV9MTjIg
MC42OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIxMjE0NTgxNzY1NjgKI2RlZmluZSBNX0xOMTAgMi4z
MDI1ODUwOTI5OTQwNDU2ODQwMTc5OTE0NTQ2ODQzNjQyMQojZGVmaW5lIE1fUEkgMy4xNDE1OTI2
NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1MDI4OAojZGVmaW5lIE1fUElfMiAxLjU3MDc5NjMyNjc5
NDg5NjYxOTIzMTMyMTY5MTYzOTc1MTQ0CiNkZWZpbmUgTV9QSV80IDAuNzg1Mzk4MTYzMzk3NDQ4
MzA5NjE1NjYwODQ1ODE5ODc1NzIxCiNkZWZpbmUgTV8xX1BJIDAuMzE4MzA5ODg2MTgzNzkwNjcx
NTM3NzY3NTI2NzQ1MDI4NzI0CiNkZWZpbmUgTV8yX1BJIDAuNjM2NjE5NzcyMzY3NTgxMzQzMDc1
NTM1MDUzNDkwMDU3NDQ4CiNkZWZpbmUgTV8yX1NRUlRQSSAxLjEyODM3OTE2NzA5NTUxMjU3Mzg5
NjE1ODkwMzEyMTU0NTE3CiNkZWZpbmUgTV9TUVJUMiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwMTY4
ODcyNDIwOTY5ODA4CiNkZWZpbmUgTV9TUVJUMV8yIDAuNzA3MTA2NzgxMTg2NTQ3NTI0NDAwODQ0
MzYyMTA0ODQ5MDM5CgojZGVmaW5lIE1BWEZMT0FUICgoZmxvYXQpMy40MDI4MjM0NjYzODUyODg2
MGUrMzgpCmV4dGVybiBpbnQgc2lnbmdhbTsKCgoKCgojZGVmaW5lIF9fV0FOVF9FWFRFTlNJT05T
X18gCgoKCgojZGVmaW5lIEZQX1NOQU4gRlBfTkFOCiNkZWZpbmUgRlBfUU5BTiBGUF9OQU4KCmV4
dGVybiBsb25nIGludCByaW50dG9sICggZG91YmxlICk7CgpleHRlcm4gbG9uZyBpbnQgcm91bmR0
b2wgKCBkb3VibGUgKTsKIyA1ODAgIi91c3IvaW5jbHVkZS9hcmNoaXRlY3R1cmUvaTM4Ni9tYXRo
LmgiIDMgNAojZGVmaW5lIEhVR0UgTUFYRkxPQVQKCgoKCgoKI2RlZmluZSBYX1RMT1NTIDEuNDE0
ODQ3NTUwNDA1Njg4MDAwMDBlKzE2CgojZGVmaW5lIERPTUFJTiAxCiNkZWZpbmUgU0lORyAyCiNk
ZWZpbmUgT1ZFUkZMT1cgMwojZGVmaW5lIFVOREVSRkxPVyA0CiNkZWZpbmUgVExPU1MgNQojZGVm
aW5lIFBMT1NTIDYKCgoKCgpleHRlcm4gaW50IGZpbml0ZSAoIGRvdWJsZSApOwoKZXh0ZXJuIGRv
dWJsZSBnYW1tYSAoIGRvdWJsZSApOwojIDYxMyAiL3Vzci9pbmNsdWRlL2FyY2hpdGVjdHVyZS9p
Mzg2L21hdGguaCIgMyA0CmV4dGVybiBkb3VibGUgc2lnbmlmaWNhbmQgKCBkb3VibGUgKTsKCgoK
CmV4dGVybiBkb3VibGUgZHJlbSAoIGRvdWJsZSwgZG91YmxlICk7CiMgNjM5ICIvdXNyL2luY2x1
ZGUvYXJjaGl0ZWN0dXJlL2kzODYvbWF0aC5oIiAzIDQKfQojIDI5ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAyIDMgNAojIDIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvdXNyL2luY2x1
ZGUvc2V0am1wLmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMyA0CiNkZWZp
bmUgX0JTRF9TRVRKTVBfSCAKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvc2V0am1wLmgiIDEg
MyA0CiMgMzIgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3NldGptcC5oIiAzIDQKI2RlZmluZSBfTUFD
SElORV9TRVRKTVBfSF8gCgoKCgojIDEgIi91c3IvaW5jbHVkZS9pMzg2L3NldGptcC5oIiAxIDMg
NAojIDM1ICIvdXNyL2luY2x1ZGUvaTM4Ni9zZXRqbXAuaCIgMyA0CiNkZWZpbmUgX0JTRF9JMzg2
X1NFVEpNUF9IIAojIDQ2ICIvdXNyL2luY2x1ZGUvaTM4Ni9zZXRqbXAuaCIgMyA0CiNkZWZpbmUg
X0pCTEVOICgoOSAqIDIpICsgMyArIDE2KQp0eXBlZGVmIGludCBqbXBfYnVmWygoOSAqIDIpICsg
MyArIDE2KV07CnR5cGVkZWYgaW50IHNpZ2ptcF9idWZbKCg5ICogMikgKyAzICsgMTYpICsgMV07
CiMgNjUgIi91c3IvaW5jbHVkZS9pMzg2L3NldGptcC5oIiAzIDQKZXh0ZXJuICJDIiB7CmludCBz
ZXRqbXAoam1wX2J1Zik7CnZvaWQgbG9uZ2ptcChqbXBfYnVmLCBpbnQpOwoKCmludCBfc2V0am1w
KGptcF9idWYpOwp2b2lkIF9sb25nam1wKGptcF9idWYsIGludCk7CmludCBzaWdzZXRqbXAoc2ln
am1wX2J1ZiwgaW50KTsKdm9pZCBzaWdsb25nam1wKHNpZ2ptcF9idWYsIGludCk7CgoKCnZvaWQg
bG9uZ2ptcGVycm9yKHZvaWQpOwoKfQojIDM4ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zZXRqbXAu
aCIgMiAzIDQKIyAyNyAiL3Vzci9pbmNsdWRlL3NldGptcC5oIiAyIDMgNAojIDIxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Db3Jl
Rm91bmRhdGlvbi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDEgMyA0CiMgNTkg
Ii91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CiNkZWZpbmUgX1VTRVJfU0lHTkFMX0ggCiMgNzEg
Ii91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CmV4dGVybiBjb25zdCBjaGFyICpjb25zdCBzeXNf
c2lnbmFtZVszMl07CmV4dGVybiBjb25zdCBjaGFyICpjb25zdCBzeXNfc2lnbGlzdFszMl07CgoK
ZXh0ZXJuICJDIiB7CmludCByYWlzZShpbnQpOwp9CgoKZXh0ZXJuICJDIiB7CnZvaWQgKCpic2Rf
c2lnbmFsKGludCwgdm9pZCAoKikoaW50KSkpKGludCk7CmludCBraWxsKHBpZF90LCBpbnQpIF9f
YXNtKCJfIiAia2lsbCIgKTsKaW50IGtpbGxwZyhwaWRfdCwgaW50KSBfX2FzbSgiXyIgImtpbGxw
ZyIgKTsKaW50IHB0aHJlYWRfa2lsbChwdGhyZWFkX3QsIGludCk7CmludCBwdGhyZWFkX3NpZ21h
c2soaW50LCBjb25zdCBzaWdzZXRfdCAqLCBzaWdzZXRfdCAqKSBfX2FzbSgiXyIgInB0aHJlYWRf
c2lnbWFzayIgKTsKaW50IHNpZ2FjdGlvbihpbnQsIGNvbnN0IHN0cnVjdCBzaWdhY3Rpb24gKiAs
CiAgICAgc3RydWN0IHNpZ2FjdGlvbiAqICk7CmludCBzaWdhZGRzZXQoc2lnc2V0X3QgKiwgaW50
KTsKaW50IHNpZ2FsdHN0YWNrKGNvbnN0IHN0YWNrX3QgKiAsIHN0YWNrX3QgKiApIF9fYXNtKCJf
IiAic2lnYWx0c3RhY2siICk7CmludCBzaWdkZWxzZXQoc2lnc2V0X3QgKiwgaW50KTsKaW50IHNp
Z2VtcHR5c2V0KHNpZ3NldF90ICopOwppbnQgc2lnZmlsbHNldChzaWdzZXRfdCAqKTsKaW50IHNp
Z2hvbGQoaW50KTsKaW50IHNpZ2lnbm9yZShpbnQpOwppbnQgc2lnaW50ZXJydXB0KGludCwgaW50
KTsKaW50IHNpZ2lzbWVtYmVyKGNvbnN0IHNpZ3NldF90ICosIGludCk7CmludCBzaWdwYXVzZShp
bnQpIF9fYXNtKCJfIiAic2lncGF1c2UiICk7CmludCBzaWdwZW5kaW5nKHNpZ3NldF90ICopOwpp
bnQgc2lncHJvY21hc2soaW50LCBjb25zdCBzaWdzZXRfdCAqICwgc2lnc2V0X3QgKiApOwppbnQg
c2lncmVsc2UoaW50KTsKdm9pZCAoKnNpZ3NldChpbnQsIHZvaWQgKCopKGludCkpKShpbnQpOwpp
bnQgc2lnc3VzcGVuZChjb25zdCBzaWdzZXRfdCAqKSBfX2FzbSgiXyIgInNpZ3N1c3BlbmQiICk7
CmludCBzaWd3YWl0KGNvbnN0IHNpZ3NldF90ICogLCBpbnQgKiApIF9fYXNtKCJfIiAic2lnd2Fp
dCIgKTsKCnZvaWQgcHNpZ25hbCh1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKik7CmludCBzaWdi
bG9jayhpbnQpOwppbnQgc2lnc2V0bWFzayhpbnQpOwppbnQgc2lndmVjKGludCwgc3RydWN0IHNp
Z3ZlYyAqLCBzdHJ1Y3Qgc2lndmVjICopOwoKfQoKCgoKc3RhdGljIGlubGluZSBpbnQKX19zaWdi
aXRzKGludCBfX3NpZ25vKQp7CiAgICByZXR1cm4gX19zaWdubyA+IDMyID8gMCA6ICgxIDw8IChf
X3NpZ25vIC0gMSkpOwp9CgoKCgojZGVmaW5lIHNpZ2FkZHNldChzZXQsc2lnbm8pICgqKHNldCkg
fD0gX19zaWdiaXRzKHNpZ25vKSwgMCkKI2RlZmluZSBzaWdkZWxzZXQoc2V0LHNpZ25vKSAoKihz
ZXQpICY9IH5fX3NpZ2JpdHMoc2lnbm8pLCAwKQojZGVmaW5lIHNpZ2lzbWVtYmVyKHNldCxzaWdu
bykgKCgqKHNldCkgJiBfX3NpZ2JpdHMoc2lnbm8pKSAhPSAwKQojZGVmaW5lIHNpZ2VtcHR5c2V0
KHNldCkgKCooc2V0KSA9IDAsIDApCiNkZWZpbmUgc2lnZmlsbHNldChzZXQpICgqKHNldCkgPSB+
KHNpZ3NldF90KTAsIDApCiMgMjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NvcmVGb3VuZGF0aW9uLmgiIDIgMwojIDEgIi91c3Iv
bGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0
CiMgMjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0NvcmVGb3VuZGF0aW9uLmgiIDIgMwojIDM5ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRm91bmRhdGlvbi5o
IiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvQ0ZBcnJheS5oIiAxIDMKIyA0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZBcnJheS5oIiAzCiNkZWZpbmUg
X19DT1JFRk9VTkRBVElPTl9DRkFSUkFZX18gMQoKCgpleHRlcm4gIkMiIHsKIyA3MyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZB
cnJheS5oIiAzCnR5cGVkZWYgY29uc3Qgdm9pZCAqICgqQ0ZBcnJheVJldGFpbkNhbGxCYWNrKShD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IHZvaWQgKnZhbHVlKTsKdHlwZWRlZiB2b2lk
ICgqQ0ZBcnJheVJlbGVhc2VDYWxsQmFjaykoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBjb25z
dCB2b2lkICp2YWx1ZSk7CnR5cGVkZWYgQ0ZTdHJpbmdSZWYgKCpDRkFycmF5Q29weURlc2NyaXB0
aW9uQ2FsbEJhY2spKGNvbnN0IHZvaWQgKnZhbHVlKTsKdHlwZWRlZiBCb29sZWFuICgqQ0ZBcnJh
eUVxdWFsQ2FsbEJhY2spKGNvbnN0IHZvaWQgKnZhbHVlMSwgY29uc3Qgdm9pZCAqdmFsdWUyKTsK
dHlwZWRlZiBzdHJ1Y3QgewogICAgQ0ZJbmRleCB2ZXJzaW9uOwogICAgQ0ZBcnJheVJldGFpbkNh
bGxCYWNrIHJldGFpbjsKICAgIENGQXJyYXlSZWxlYXNlQ2FsbEJhY2sgcmVsZWFzZTsKICAgIENG
QXJyYXlDb3B5RGVzY3JpcHRpb25DYWxsQmFjayBjb3B5RGVzY3JpcHRpb247CiAgICBDRkFycmF5
RXF1YWxDYWxsQmFjayBlcXVhbDsKfSBDRkFycmF5Q2FsbEJhY2tzOwoKCgoKCgpleHRlcm4KY29u
c3QgQ0ZBcnJheUNhbGxCYWNrcyBrQ0ZUeXBlQXJyYXlDYWxsQmFja3M7CiMgMTAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkFy
cmF5LmgiIDMKdHlwZWRlZiB2b2lkICgqQ0ZBcnJheUFwcGxpZXJGdW5jdGlvbikoY29uc3Qgdm9p
ZCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpOwoKCgoKCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZB
cnJheSAqIENGQXJyYXlSZWY7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19DRkFycmF5ICogQ0ZNdXRh
YmxlQXJyYXlSZWY7CgoKCgoKZXh0ZXJuCkNGVHlwZUlEIENGQXJyYXlHZXRUeXBlSUQodm9pZCk7
CiMgMTcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9DRkFycmF5LmgiIDMKZXh0ZXJuCkNGQXJyYXlSZWYgQ0ZBcnJheUNyZWF0ZShD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IHZvaWQgKip2YWx1ZXMsIENGSW5kZXggbnVt
VmFsdWVzLCBjb25zdCBDRkFycmF5Q2FsbEJhY2tzICpjYWxsQmFja3MpOwojIDE5MyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZB
cnJheS5oIiAzCmV4dGVybgpDRkFycmF5UmVmIENGQXJyYXlDcmVhdGVDb3B5KENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvciwgQ0ZBcnJheVJlZiB0aGVBcnJheSk7CiMgMjM3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkFycmF5Lmgi
IDMKZXh0ZXJuCkNGTXV0YWJsZUFycmF5UmVmIENGQXJyYXlDcmVhdGVNdXRhYmxlKENGQWxsb2Nh
dG9yUmVmIGFsbG9jYXRvciwgQ0ZJbmRleCBjYXBhY2l0eSwgY29uc3QgQ0ZBcnJheUNhbGxCYWNr
cyAqY2FsbEJhY2tzKTsKIyAyNjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQXJyYXkuaCIgMwpleHRlcm4KQ0ZNdXRhYmxlQXJy
YXlSZWYgQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwg
Q0ZJbmRleCBjYXBhY2l0eSwgQ0ZBcnJheVJlZiB0aGVBcnJheSk7CiMgMjc3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkFycmF5
LmgiIDMKZXh0ZXJuCkNGSW5kZXggQ0ZBcnJheUdldENvdW50KENGQXJyYXlSZWYgdGhlQXJyYXkp
OwojIDMwMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvQ0ZBcnJheS5oIiAzCmV4dGVybgpDRkluZGV4IENGQXJyYXlHZXRDb3VudE9m
VmFsdWUoQ0ZBcnJheVJlZiB0aGVBcnJheSwgQ0ZSYW5nZSByYW5nZSwgY29uc3Qgdm9pZCAqdmFs
dWUpOwojIDMyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvQ0ZBcnJheS5oIiAzCmV4dGVybgpCb29sZWFuIENGQXJyYXlDb250YWlu
c1ZhbHVlKENGQXJyYXlSZWYgdGhlQXJyYXksIENGUmFuZ2UgcmFuZ2UsIGNvbnN0IHZvaWQgKnZh
bHVlKTsKIyAzMzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL0NGQXJyYXkuaCIgMwpleHRlcm4KY29uc3Qgdm9pZCAqQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleChDRkFycmF5UmVmIHRoZUFycmF5LCBDRkluZGV4IGlkeCk7CiMgMzU4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9DRkFycmF5LmgiIDMKZXh0ZXJuCnZvaWQgQ0ZBcnJheUdldFZhbHVlcyhDRkFycmF5UmVmIHRo
ZUFycmF5LCBDRlJhbmdlIHJhbmdlLCBjb25zdCB2b2lkICoqdmFsdWVzKTsKIyAzODUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NG
QXJyYXkuaCIgMwpleHRlcm4Kdm9pZCBDRkFycmF5QXBwbHlGdW5jdGlvbihDRkFycmF5UmVmIHRo
ZUFycmF5LCBDRlJhbmdlIHJhbmdlLCBDRkFycmF5QXBwbGllckZ1bmN0aW9uIGFwcGxpZXIsIHZv
aWQgKmNvbnRleHQpOwojIDQxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZBcnJheS5oIiAzCmV4dGVybgpDRkluZGV4IENGQXJy
YXlHZXRGaXJzdEluZGV4T2ZWYWx1ZShDRkFycmF5UmVmIHRoZUFycmF5LCBDRlJhbmdlIHJhbmdl
LCBjb25zdCB2b2lkICp2YWx1ZSk7CiMgNDM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkFycmF5LmgiIDMKZXh0ZXJuCkNGSW5k
ZXggQ0ZBcnJheUdldExhc3RJbmRleE9mVmFsdWUoQ0ZBcnJheVJlZiB0aGVBcnJheSwgQ0ZSYW5n
ZSByYW5nZSwgY29uc3Qgdm9pZCAqdmFsdWUpOwojIDQ3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZBcnJheS5oIiAzCmV4dGVy
bgpDRkluZGV4IENGQXJyYXlCU2VhcmNoVmFsdWVzKENGQXJyYXlSZWYgdGhlQXJyYXksIENGUmFu
Z2UgcmFuZ2UsIGNvbnN0IHZvaWQgKnZhbHVlLCBDRkNvbXBhcmF0b3JGdW5jdGlvbiBjb21wYXJh
dG9yLCB2b2lkICpjb250ZXh0KTsKIyA0OTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQXJyYXkuaCIgMwpleHRlcm4Kdm9pZCBD
RkFycmF5QXBwZW5kVmFsdWUoQ0ZNdXRhYmxlQXJyYXlSZWYgdGhlQXJyYXksIGNvbnN0IHZvaWQg
KnZhbHVlKTsKIyA1MTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL0NGQXJyYXkuaCIgMwpleHRlcm4Kdm9pZCBDRkFycmF5SW5zZXJ0
VmFsdWVBdEluZGV4KENGTXV0YWJsZUFycmF5UmVmIHRoZUFycmF5LCBDRkluZGV4IGlkeCwgY29u
c3Qgdm9pZCAqdmFsdWUpOwojIDUzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZBcnJheS5oIiAzCmV4dGVybgp2b2lkIENGQXJy
YXlTZXRWYWx1ZUF0SW5kZXgoQ0ZNdXRhYmxlQXJyYXlSZWYgdGhlQXJyYXksIENGSW5kZXggaWR4
LCBjb25zdCB2b2lkICp2YWx1ZSk7CiMgNTQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkFycmF5LmgiIDMKZXh0ZXJuCnZvaWQg
Q0ZBcnJheVJlbW92ZVZhbHVlQXRJbmRleChDRk11dGFibGVBcnJheVJlZiB0aGVBcnJheSwgQ0ZJ
bmRleCBpZHgpOwojIDU1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZBcnJheS5oIiAzCmV4dGVybgp2b2lkIENGQXJyYXlSZW1v
dmVBbGxWYWx1ZXMoQ0ZNdXRhYmxlQXJyYXlSZWYgdGhlQXJyYXkpOwojIDU5MCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZBcnJh
eS5oIiAzCmV4dGVybgp2b2lkIENGQXJyYXlSZXBsYWNlVmFsdWVzKENGTXV0YWJsZUFycmF5UmVm
IHRoZUFycmF5LCBDRlJhbmdlIHJhbmdlLCBjb25zdCB2b2lkICoqbmV3VmFsdWVzLCBDRkluZGV4
IG5ld0NvdW50KTsKIyA2MDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQXJyYXkuaCIgMwpleHRlcm4Kdm9pZCBDRkFycmF5RXhj
aGFuZ2VWYWx1ZXNBdEluZGljZXMoQ0ZNdXRhYmxlQXJyYXlSZWYgdGhlQXJyYXksIENGSW5kZXgg
aWR4MSwgQ0ZJbmRleCBpZHgyKTsKIyA2MzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQXJyYXkuaCIgMwpleHRlcm4Kdm9pZCBD
RkFycmF5U29ydFZhbHVlcyhDRk11dGFibGVBcnJheVJlZiB0aGVBcnJheSwgQ0ZSYW5nZSByYW5n
ZSwgQ0ZDb21wYXJhdG9yRnVuY3Rpb24gY29tcGFyYXRvciwgdm9pZCAqY29udGV4dCk7CiMgNjY1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9DRkFycmF5LmgiIDMKZXh0ZXJuCnZvaWQgQ0ZBcnJheUFwcGVuZEFycmF5KENGTXV0YWJs
ZUFycmF5UmVmIHRoZUFycmF5LCBDRkFycmF5UmVmIG90aGVyQXJyYXksIENGUmFuZ2Ugb3RoZXJS
YW5nZSk7Cgp9CiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL0NvcmVGb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQmFnLmgi
IDEgMwoKCgoKCiNkZWZpbmUgX19DT1JFRk9VTkRBVElPTl9DRkJBR19fIDEKCgoKZXh0ZXJuICJD
IiB7Cgp0eXBlZGVmIGNvbnN0IHZvaWQgKiAoKkNGQmFnUmV0YWluQ2FsbEJhY2spKENGQWxsb2Nh
dG9yUmVmIGFsbG9jYXRvciwgY29uc3Qgdm9pZCAqdmFsdWUpOwp0eXBlZGVmIHZvaWQgKCpDRkJh
Z1JlbGVhc2VDYWxsQmFjaykoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBjb25zdCB2b2lkICp2
YWx1ZSk7CnR5cGVkZWYgQ0ZTdHJpbmdSZWYgKCpDRkJhZ0NvcHlEZXNjcmlwdGlvbkNhbGxCYWNr
KShjb25zdCB2b2lkICp2YWx1ZSk7CnR5cGVkZWYgQm9vbGVhbiAoKkNGQmFnRXF1YWxDYWxsQmFj
aykoY29uc3Qgdm9pZCAqdmFsdWUxLCBjb25zdCB2b2lkICp2YWx1ZTIpOwp0eXBlZGVmIENGSGFz
aENvZGUgKCpDRkJhZ0hhc2hDYWxsQmFjaykoY29uc3Qgdm9pZCAqdmFsdWUpOwp0eXBlZGVmIHN0
cnVjdCB7CiAgICBDRkluZGV4IHZlcnNpb247CiAgICBDRkJhZ1JldGFpbkNhbGxCYWNrIHJldGFp
bjsKICAgIENGQmFnUmVsZWFzZUNhbGxCYWNrIHJlbGVhc2U7CiAgICBDRkJhZ0NvcHlEZXNjcmlw
dGlvbkNhbGxCYWNrIGNvcHlEZXNjcmlwdGlvbjsKICAgIENGQmFnRXF1YWxDYWxsQmFjayBlcXVh
bDsKICAgIENGQmFnSGFzaENhbGxCYWNrIGhhc2g7Cn0gQ0ZCYWdDYWxsQmFja3M7CgpleHRlcm4K
Y29uc3QgQ0ZCYWdDYWxsQmFja3Mga0NGVHlwZUJhZ0NhbGxCYWNrczsKZXh0ZXJuCmNvbnN0IENG
QmFnQ2FsbEJhY2tzIGtDRkNvcHlTdHJpbmdCYWdDYWxsQmFja3M7Cgp0eXBlZGVmIHZvaWQgKCpD
RkJhZ0FwcGxpZXJGdW5jdGlvbikoY29uc3Qgdm9pZCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpOwoK
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkJhZyAqIENGQmFnUmVmOwp0eXBlZGVmIHN0cnVjdCBf
X0NGQmFnICogQ0ZNdXRhYmxlQmFnUmVmOwoKZXh0ZXJuCkNGVHlwZUlEIENGQmFnR2V0VHlwZUlE
KHZvaWQpOwoKZXh0ZXJuCkNGQmFnUmVmIENGQmFnQ3JlYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvciwgY29uc3Qgdm9pZCAqKnZhbHVlcywgQ0ZJbmRleCBudW1WYWx1ZXMsIGNvbnN0IENGQmFn
Q2FsbEJhY2tzICpjYWxsQmFja3MpOwoKZXh0ZXJuCkNGQmFnUmVmIENGQmFnQ3JlYXRlQ29weShD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGQmFnUmVmIHRoZUJhZyk7CgpleHRlcm4KQ0ZNdXRh
YmxlQmFnUmVmIENGQmFnQ3JlYXRlTXV0YWJsZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENG
SW5kZXggY2FwYWNpdHksIGNvbnN0IENGQmFnQ2FsbEJhY2tzICpjYWxsQmFja3MpOwoKZXh0ZXJu
CkNGTXV0YWJsZUJhZ1JlZiBDRkJhZ0NyZWF0ZU11dGFibGVDb3B5KENGQWxsb2NhdG9yUmVmIGFs
bG9jYXRvciwgQ0ZJbmRleCBjYXBhY2l0eSwgQ0ZCYWdSZWYgdGhlQmFnKTsKCmV4dGVybgpDRklu
ZGV4IENGQmFnR2V0Q291bnQoQ0ZCYWdSZWYgdGhlQmFnKTsKCmV4dGVybgpDRkluZGV4IENGQmFn
R2V0Q291bnRPZlZhbHVlKENGQmFnUmVmIHRoZUJhZywgY29uc3Qgdm9pZCAqdmFsdWUpOwoKZXh0
ZXJuCkJvb2xlYW4gQ0ZCYWdDb250YWluc1ZhbHVlKENGQmFnUmVmIHRoZUJhZywgY29uc3Qgdm9p
ZCAqdmFsdWUpOwoKZXh0ZXJuCmNvbnN0IHZvaWQgKkNGQmFnR2V0VmFsdWUoQ0ZCYWdSZWYgdGhl
QmFnLCBjb25zdCB2b2lkICp2YWx1ZSk7CgpleHRlcm4KQm9vbGVhbiBDRkJhZ0dldFZhbHVlSWZQ
cmVzZW50KENGQmFnUmVmIHRoZUJhZywgY29uc3Qgdm9pZCAqY2FuZGlkYXRlLCBjb25zdCB2b2lk
ICoqdmFsdWUpOwoKZXh0ZXJuCnZvaWQgQ0ZCYWdHZXRWYWx1ZXMoQ0ZCYWdSZWYgdGhlQmFnLCBj
b25zdCB2b2lkICoqdmFsdWVzKTsKCmV4dGVybgp2b2lkIENGQmFnQXBwbHlGdW5jdGlvbihDRkJh
Z1JlZiB0aGVCYWcsIENGQmFnQXBwbGllckZ1bmN0aW9uIGFwcGxpZXIsIHZvaWQgKmNvbnRleHQp
OwoKZXh0ZXJuCnZvaWQgQ0ZCYWdBZGRWYWx1ZShDRk11dGFibGVCYWdSZWYgdGhlQmFnLCBjb25z
dCB2b2lkICp2YWx1ZSk7CgpleHRlcm4Kdm9pZCBDRkJhZ1JlcGxhY2VWYWx1ZShDRk11dGFibGVC
YWdSZWYgdGhlQmFnLCBjb25zdCB2b2lkICp2YWx1ZSk7CgpleHRlcm4Kdm9pZCBDRkJhZ1NldFZh
bHVlKENGTXV0YWJsZUJhZ1JlZiB0aGVCYWcsIGNvbnN0IHZvaWQgKnZhbHVlKTsKCmV4dGVybgp2
b2lkIENGQmFnUmVtb3ZlVmFsdWUoQ0ZNdXRhYmxlQmFnUmVmIHRoZUJhZywgY29uc3Qgdm9pZCAq
dmFsdWUpOwoKZXh0ZXJuCnZvaWQgQ0ZCYWdSZW1vdmVBbGxWYWx1ZXMoQ0ZNdXRhYmxlQmFnUmVm
IHRoZUJhZyk7Cgp9CiMgNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL0NvcmVGb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQmlu
YXJ5SGVhcC5oIiAxIDMKIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZCaW5hcnlIZWFwLmgiIDMKI2RlZmluZSBfX0NPUkVG
T1VOREFUSU9OX0NGQklOQVJZSEVBUF9fIDEKCgoKZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIHN0cnVj
dCB7CiAgICBDRkluZGV4IHZlcnNpb247CiAgICB2b2lkICogaW5mbzsKICAgIGNvbnN0IHZvaWQg
KigqcmV0YWluKShjb25zdCB2b2lkICppbmZvKTsKICAgIHZvaWQgKCpyZWxlYXNlKShjb25zdCB2
b2lkICppbmZvKTsKICAgIENGU3RyaW5nUmVmICgqY29weURlc2NyaXB0aW9uKShjb25zdCB2b2lk
ICppbmZvKTsKfSBDRkJpbmFyeUhlYXBDb21wYXJlQ29udGV4dDsKIyA0OSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZCaW5hcnlI
ZWFwLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0ZJbmRleCB2ZXJzaW9uOwogICAgY29uc3Qg
dm9pZCAqKCpyZXRhaW4pKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3Qgdm9pZCAqcHRy
KTsKICAgIHZvaWQgKCpyZWxlYXNlKShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IHZv
aWQgKnB0cik7CiAgICBDRlN0cmluZ1JlZiAoKmNvcHlEZXNjcmlwdGlvbikoY29uc3Qgdm9pZCAq
cHRyKTsKICAgIENGQ29tcGFyaXNvblJlc3VsdCAoKmNvbXBhcmUpKGNvbnN0IHZvaWQgKnB0cjEs
IGNvbnN0IHZvaWQgKnB0cjIsIHZvaWQgKmNvbnRleHQpOwp9IENGQmluYXJ5SGVhcENhbGxCYWNr
czsKCgoKCgoKCmV4dGVybiBjb25zdCBDRkJpbmFyeUhlYXBDYWxsQmFja3Mga0NGU3RyaW5nQmlu
YXJ5SGVhcENhbGxCYWNrczsKIyA3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZCaW5hcnlIZWFwLmgiIDMKdHlwZWRlZiB2b2lk
ICgqQ0ZCaW5hcnlIZWFwQXBwbGllckZ1bmN0aW9uKShjb25zdCB2b2lkICp2YWwsIHZvaWQgKmNv
bnRleHQpOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9fQ0ZCaW5hcnlIZWFwICogQ0ZCaW5hcnlIZWFw
UmVmOwoKCgoKCmV4dGVybiBDRlR5cGVJRCBDRkJpbmFyeUhlYXBHZXRUeXBlSUQodm9pZCk7CiMg
MTI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9DRkJpbmFyeUhlYXAuaCIgMwpleHRlcm4gQ0ZCaW5hcnlIZWFwUmVmIENGQmluYXJ5
SGVhcENyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGSW5kZXggY2FwYWNpdHksIGNv
bnN0IENGQmluYXJ5SGVhcENhbGxCYWNrcyAqY2FsbEJhY2tzLCBjb25zdCBDRkJpbmFyeUhlYXBD
b21wYXJlQ29udGV4dCAqY29tcGFyZUNvbnRleHQpOwojIDE1OCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZCaW5hcnlIZWFwLmgi
IDMKZXh0ZXJuIENGQmluYXJ5SGVhcFJlZiBDRkJpbmFyeUhlYXBDcmVhdGVDb3B5KENGQWxsb2Nh
dG9yUmVmIGFsbG9jYXRvciwgQ0ZJbmRleCBjYXBhY2l0eSwgQ0ZCaW5hcnlIZWFwUmVmIGhlYXAp
OwojIDE2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvQ0ZCaW5hcnlIZWFwLmgiIDMKZXh0ZXJuIENGSW5kZXggQ0ZCaW5hcnlIZWFw
R2V0Q291bnQoQ0ZCaW5hcnlIZWFwUmVmIGhlYXApOwojIDE4MiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZCaW5hcnlIZWFwLmgi
IDMKZXh0ZXJuIENGSW5kZXggQ0ZCaW5hcnlIZWFwR2V0Q291bnRPZlZhbHVlKENGQmluYXJ5SGVh
cFJlZiBoZWFwLCBjb25zdCB2b2lkICp2YWx1ZSk7CiMgMTk3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkJpbmFyeUhlYXAuaCIg
MwpleHRlcm4gQm9vbGVhbiBDRkJpbmFyeUhlYXBDb250YWluc1ZhbHVlKENGQmluYXJ5SGVhcFJl
ZiBoZWFwLCBjb25zdCB2b2lkICp2YWx1ZSk7CiMgMjA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkJpbmFyeUhlYXAuaCIgMwpl
eHRlcm4gY29uc3Qgdm9pZCAqIENGQmluYXJ5SGVhcEdldE1pbmltdW0oQ0ZCaW5hcnlIZWFwUmVm
IGhlYXApOwojIDIyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZCaW5hcnlIZWFwLmgiIDMKZXh0ZXJuIEJvb2xlYW4gQ0ZCaW5h
cnlIZWFwR2V0TWluaW11bUlmUHJlc2VudChDRkJpbmFyeUhlYXBSZWYgaGVhcCwgY29uc3Qgdm9p
ZCAqKnZhbHVlKTsKIyAyMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQmluYXJ5SGVhcC5oIiAzCmV4dGVybiB2b2lkIENGQmlu
YXJ5SGVhcEdldFZhbHVlcyhDRkJpbmFyeUhlYXBSZWYgaGVhcCwgY29uc3Qgdm9pZCAqKnZhbHVl
cyk7CiMgMjUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9DRkJpbmFyeUhlYXAuaCIgMwpleHRlcm4gdm9pZCBDRkJpbmFyeUhlYXBB
cHBseUZ1bmN0aW9uKENGQmluYXJ5SGVhcFJlZiBoZWFwLCBDRkJpbmFyeUhlYXBBcHBsaWVyRnVu
Y3Rpb24gYXBwbGllciwgdm9pZCAqY29udGV4dCk7CiMgMjY1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkJpbmFyeUhlYXAuaCIg
MwpleHRlcm4gdm9pZCBDRkJpbmFyeUhlYXBBZGRWYWx1ZShDRkJpbmFyeUhlYXBSZWYgaGVhcCwg
Y29uc3Qgdm9pZCAqdmFsdWUpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgQ0ZCaW5hcnlIZWFwUmVtb3Zl
TWluaW11bVZhbHVlKENGQmluYXJ5SGVhcFJlZiBoZWFwKTsKIyAyODIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQmluYXJ5SGVh
cC5oIiAzCmV4dGVybiB2b2lkIENGQmluYXJ5SGVhcFJlbW92ZUFsbFZhbHVlcyhDRkJpbmFyeUhl
YXBSZWYgaGVhcCk7Cgp9CiMgNDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NvcmVGb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NG
Qml0VmVjdG9yLmgiIDEgMwoKCgoKCiNkZWZpbmUgX19DT1JFRk9VTkRBVElPTl9DRkJJVFZFQ1RP
Ul9fIDEKCgoKZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIFVJbnQzMiBDRkJpdDsKCnR5cGVkZWYgY29u
c3Qgc3RydWN0IF9fQ0ZCaXRWZWN0b3IgKiBDRkJpdFZlY3RvclJlZjsKdHlwZWRlZiBzdHJ1Y3Qg
X19DRkJpdFZlY3RvciAqIENGTXV0YWJsZUJpdFZlY3RvclJlZjsKCmV4dGVybiBDRlR5cGVJRCBD
RkJpdFZlY3RvckdldFR5cGVJRCh2b2lkKTsKCmV4dGVybiBDRkJpdFZlY3RvclJlZiBDRkJpdFZl
Y3RvckNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IFVJbnQ4ICpieXRlcywg
Q0ZJbmRleCBudW1CaXRzKTsKZXh0ZXJuIENGQml0VmVjdG9yUmVmIENGQml0VmVjdG9yQ3JlYXRl
Q29weShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGQml0VmVjdG9yUmVmIGJ2KTsKZXh0ZXJu
IENGTXV0YWJsZUJpdFZlY3RvclJlZiBDRkJpdFZlY3RvckNyZWF0ZU11dGFibGUoQ0ZBbGxvY2F0
b3JSZWYgYWxsb2NhdG9yLCBDRkluZGV4IGNhcGFjaXR5KTsKZXh0ZXJuIENGTXV0YWJsZUJpdFZl
Y3RvclJlZiBDRkJpdFZlY3RvckNyZWF0ZU11dGFibGVDb3B5KENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvciwgQ0ZJbmRleCBjYXBhY2l0eSwgQ0ZCaXRWZWN0b3JSZWYgYnYpOwoKZXh0ZXJuIENGSW5k
ZXggQ0ZCaXRWZWN0b3JHZXRDb3VudChDRkJpdFZlY3RvclJlZiBidik7CmV4dGVybiBDRkluZGV4
IENGQml0VmVjdG9yR2V0Q291bnRPZkJpdChDRkJpdFZlY3RvclJlZiBidiwgQ0ZSYW5nZSByYW5n
ZSwgQ0ZCaXQgdmFsdWUpOwpleHRlcm4gQm9vbGVhbiBDRkJpdFZlY3RvckNvbnRhaW5zQml0KENG
Qml0VmVjdG9yUmVmIGJ2LCBDRlJhbmdlIHJhbmdlLCBDRkJpdCB2YWx1ZSk7CmV4dGVybiBDRkJp
dCBDRkJpdFZlY3RvckdldEJpdEF0SW5kZXgoQ0ZCaXRWZWN0b3JSZWYgYnYsIENGSW5kZXggaWR4
KTsKZXh0ZXJuIHZvaWQgQ0ZCaXRWZWN0b3JHZXRCaXRzKENGQml0VmVjdG9yUmVmIGJ2LCBDRlJh
bmdlIHJhbmdlLCBVSW50OCAqYnl0ZXMpOwpleHRlcm4gQ0ZJbmRleCBDRkJpdFZlY3RvckdldEZp
cnN0SW5kZXhPZkJpdChDRkJpdFZlY3RvclJlZiBidiwgQ0ZSYW5nZSByYW5nZSwgQ0ZCaXQgdmFs
dWUpOwpleHRlcm4gQ0ZJbmRleCBDRkJpdFZlY3RvckdldExhc3RJbmRleE9mQml0KENGQml0VmVj
dG9yUmVmIGJ2LCBDRlJhbmdlIHJhbmdlLCBDRkJpdCB2YWx1ZSk7CgpleHRlcm4gdm9pZCBDRkJp
dFZlY3RvclNldENvdW50KENGTXV0YWJsZUJpdFZlY3RvclJlZiBidiwgQ0ZJbmRleCBjb3VudCk7
CmV4dGVybiB2b2lkIENGQml0VmVjdG9yRmxpcEJpdEF0SW5kZXgoQ0ZNdXRhYmxlQml0VmVjdG9y
UmVmIGJ2LCBDRkluZGV4IGlkeCk7CmV4dGVybiB2b2lkIENGQml0VmVjdG9yRmxpcEJpdHMoQ0ZN
dXRhYmxlQml0VmVjdG9yUmVmIGJ2LCBDRlJhbmdlIHJhbmdlKTsKZXh0ZXJuIHZvaWQgQ0ZCaXRW
ZWN0b3JTZXRCaXRBdEluZGV4KENGTXV0YWJsZUJpdFZlY3RvclJlZiBidiwgQ0ZJbmRleCBpZHgs
IENGQml0IHZhbHVlKTsKZXh0ZXJuIHZvaWQgQ0ZCaXRWZWN0b3JTZXRCaXRzKENGTXV0YWJsZUJp
dFZlY3RvclJlZiBidiwgQ0ZSYW5nZSByYW5nZSwgQ0ZCaXQgdmFsdWUpOwpleHRlcm4gdm9pZCBD
RkJpdFZlY3RvclNldEFsbEJpdHMoQ0ZNdXRhYmxlQml0VmVjdG9yUmVmIGJ2LCBDRkJpdCB2YWx1
ZSk7Cgp9CiMgNDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL0NvcmVGb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQnVuZGxlLmgi
IDEgMwoKCgoKCiNkZWZpbmUgX19DT1JFRk9VTkRBVElPTl9DRkJVTkRMRV9fIDEKCgoKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZFcnJvci5oIiAxIDMKIyAzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZFcnJvci5oIiAzCiNkZWZpbmUgX19DT1JFRk9V
TkRBVElPTl9DRkVSUk9SX18gMQoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTdHJpbmcuaCIgMSAzCgoKCgoKI2RlZmlu
ZSBfX0NPUkVGT1VOREFUSU9OX0NGU1RSSU5HX18gMQoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGRGF0YS5oIiAxIDMK
CgoKCgojZGVmaW5lIF9fQ09SRUZPVU5EQVRJT05fQ0ZEQVRBX18gMQoKCgpleHRlcm4gIkMiIHsK
CnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhICogQ0ZEYXRhUmVmOwp0eXBlZGVmIHN0cnVj
dCBfX0NGRGF0YSAqIENGTXV0YWJsZURhdGFSZWY7CgpleHRlcm4KQ0ZUeXBlSUQgQ0ZEYXRhR2V0
VHlwZUlEKHZvaWQpOwoKZXh0ZXJuCkNGRGF0YVJlZiBDRkRhdGFDcmVhdGUoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBjb25zdCBVSW50OCAqYnl0ZXMsIENGSW5kZXggbGVuZ3RoKTsKCmV4dGVy
bgpDRkRhdGFSZWYgQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KENGQWxsb2NhdG9yUmVmIGFs
bG9jYXRvciwgY29uc3QgVUludDggKmJ5dGVzLCBDRkluZGV4IGxlbmd0aCwgQ0ZBbGxvY2F0b3JS
ZWYgYnl0ZXNEZWFsbG9jYXRvcik7CgoKZXh0ZXJuCkNGRGF0YVJlZiBDRkRhdGFDcmVhdGVDb3B5
KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZEYXRhUmVmIHRoZURhdGEpOwoKZXh0ZXJuCkNG
TXV0YWJsZURhdGFSZWYgQ0ZEYXRhQ3JlYXRlTXV0YWJsZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0
b3IsIENGSW5kZXggY2FwYWNpdHkpOwoKZXh0ZXJuCkNGTXV0YWJsZURhdGFSZWYgQ0ZEYXRhQ3Jl
YXRlTXV0YWJsZUNvcHkoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkluZGV4IGNhcGFjaXR5
LCBDRkRhdGFSZWYgdGhlRGF0YSk7CgpleHRlcm4KQ0ZJbmRleCBDRkRhdGFHZXRMZW5ndGgoQ0ZE
YXRhUmVmIHRoZURhdGEpOwoKZXh0ZXJuCmNvbnN0IFVJbnQ4ICpDRkRhdGFHZXRCeXRlUHRyKENG
RGF0YVJlZiB0aGVEYXRhKTsKCmV4dGVybgpVSW50OCAqQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIo
Q0ZNdXRhYmxlRGF0YVJlZiB0aGVEYXRhKTsKCmV4dGVybgp2b2lkIENGRGF0YUdldEJ5dGVzKENG
RGF0YVJlZiB0aGVEYXRhLCBDRlJhbmdlIHJhbmdlLCBVSW50OCAqYnVmZmVyKTsKCmV4dGVybgp2
b2lkIENGRGF0YVNldExlbmd0aChDRk11dGFibGVEYXRhUmVmIHRoZURhdGEsIENGSW5kZXggbGVu
Z3RoKTsKCmV4dGVybgp2b2lkIENGRGF0YUluY3JlYXNlTGVuZ3RoKENGTXV0YWJsZURhdGFSZWYg
dGhlRGF0YSwgQ0ZJbmRleCBleHRyYUxlbmd0aCk7CgpleHRlcm4Kdm9pZCBDRkRhdGFBcHBlbmRC
eXRlcyhDRk11dGFibGVEYXRhUmVmIHRoZURhdGEsIGNvbnN0IFVJbnQ4ICpieXRlcywgQ0ZJbmRl
eCBsZW5ndGgpOwoKZXh0ZXJuCnZvaWQgQ0ZEYXRhUmVwbGFjZUJ5dGVzKENGTXV0YWJsZURhdGFS
ZWYgdGhlRGF0YSwgQ0ZSYW5nZSByYW5nZSwgY29uc3QgVUludDggKm5ld0J5dGVzLCBDRkluZGV4
IG5ld0xlbmd0aCk7CgpleHRlcm4Kdm9pZCBDRkRhdGFEZWxldGVCeXRlcyhDRk11dGFibGVEYXRh
UmVmIHRoZURhdGEsIENGUmFuZ2UgcmFuZ2UpOwoKCmVudW0gewogICAga0NGRGF0YVNlYXJjaEJh
Y2t3YXJkcyA9IDFVTCA8PCAwLAogICAga0NGRGF0YVNlYXJjaEFuY2hvcmVkID0gMVVMIDw8IDEK
fTsKCnR5cGVkZWYgQ0ZPcHRpb25GbGFncyBDRkRhdGFTZWFyY2hGbGFnczsKCmV4dGVybgpDRlJh
bmdlIENGRGF0YUZpbmQoQ0ZEYXRhUmVmIHRoZURhdGEsIENGRGF0YVJlZiBkYXRhVG9GaW5kLCBD
RlJhbmdlIHNlYXJjaFJhbmdlLCBDRkRhdGFTZWFyY2hGbGFncyBjb21wYXJlT3B0aW9ucykgOwoK
fQojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9DRlN0cmluZy5oIiAyIDMKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZDaGFyYWN0ZXJTZXQuaCIgMSAz
CiMgMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0NGQ2hhcmFjdGVyU2V0LmgiIDMKI2RlZmluZSBfX0NPUkVGT1VOREFUSU9OX0NG
Q0hBUkFDVEVSU0VUX18gMQoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX19DRkNoYXJhY3RlclNldCAqIENGQ2hhcmFjdGVyU2V0UmVmOwoKCgoKCnR5cGVkZWYgc3Ry
dWN0IF9fQ0ZDaGFyYWN0ZXJTZXQgKiBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWY7CgoKCgoKCmVu
dW0gewogICAga0NGQ2hhcmFjdGVyU2V0Q29udHJvbCA9IDEsCiAgICBrQ0ZDaGFyYWN0ZXJTZXRX
aGl0ZXNwYWNlLAogICAga0NGQ2hhcmFjdGVyU2V0V2hpdGVzcGFjZUFuZE5ld2xpbmUsCiAgICBr
Q0ZDaGFyYWN0ZXJTZXREZWNpbWFsRGlnaXQsCiAgICBrQ0ZDaGFyYWN0ZXJTZXRMZXR0ZXIsCiAg
ICBrQ0ZDaGFyYWN0ZXJTZXRMb3dlcmNhc2VMZXR0ZXIsCiAgICBrQ0ZDaGFyYWN0ZXJTZXRVcHBl
cmNhc2VMZXR0ZXIsCiAgICBrQ0ZDaGFyYWN0ZXJTZXROb25CYXNlLAogICAga0NGQ2hhcmFjdGVy
U2V0RGVjb21wb3NhYmxlLAogICAga0NGQ2hhcmFjdGVyU2V0QWxwaGFOdW1lcmljLAogICAga0NG
Q2hhcmFjdGVyU2V0UHVuY3R1YXRpb24sCgogICAga0NGQ2hhcmFjdGVyU2V0Q2FwaXRhbGl6ZWRM
ZXR0ZXIgPSAxMywKCgogICAga0NGQ2hhcmFjdGVyU2V0U3ltYm9sID0gMTQsCgoKICAgIGtDRkNo
YXJhY3RlclNldE5ld2xpbmUgPSAxNSwKCiAgICBrQ0ZDaGFyYWN0ZXJTZXRJbGxlZ2FsID0gMTIK
fTsKdHlwZWRlZiBDRkluZGV4IENGQ2hhcmFjdGVyU2V0UHJlZGVmaW5lZFNldDsKCgoKCgpleHRl
cm4KQ0ZUeXBlSUQgQ0ZDaGFyYWN0ZXJTZXRHZXRUeXBlSUQodm9pZCk7CiMgOTggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQ2hh
cmFjdGVyU2V0LmgiIDMKZXh0ZXJuCkNGQ2hhcmFjdGVyU2V0UmVmIENGQ2hhcmFjdGVyU2V0R2V0
UHJlZGVmaW5lZChDRkNoYXJhY3RlclNldFByZWRlZmluZWRTZXQgdGhlU2V0SWRlbnRpZmllcik7
CiMgMTE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9DRkNoYXJhY3RlclNldC5oIiAzCmV4dGVybgpDRkNoYXJhY3RlclNldFJlZiBD
RkNoYXJhY3RlclNldENyZWF0ZVdpdGhDaGFyYWN0ZXJzSW5SYW5nZShDRkFsbG9jYXRvclJlZiBh
bGxvYywgQ0ZSYW5nZSB0aGVSYW5nZSk7CiMgMTM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkNoYXJhY3RlclNldC5oIiAzCmV4
dGVybgpDRkNoYXJhY3RlclNldFJlZiBDRkNoYXJhY3RlclNldENyZWF0ZVdpdGhDaGFyYWN0ZXJz
SW5TdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGU3RyaW5nUmVmIHRoZVN0cmluZyk7CiMg
MTYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9DRkNoYXJhY3RlclNldC5oIiAzCmV4dGVybgpDRkNoYXJhY3RlclNldFJlZiBDRkNo
YXJhY3RlclNldENyZWF0ZVdpdGhCaXRtYXBSZXByZXNlbnRhdGlvbihDRkFsbG9jYXRvclJlZiBh
bGxvYywgQ0ZEYXRhUmVmIHRoZURhdGEpOwojIDE3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZDaGFyYWN0ZXJTZXQuaCIgMwpl
eHRlcm4gQ0ZDaGFyYWN0ZXJTZXRSZWYgQ0ZDaGFyYWN0ZXJTZXRDcmVhdGVJbnZlcnRlZFNldChD
RkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZDaGFyYWN0ZXJTZXRSZWYgdGhlU2V0KTsKIyAxODkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJz
L0NGQ2hhcmFjdGVyU2V0LmgiIDMKZXh0ZXJuIEJvb2xlYW4gQ0ZDaGFyYWN0ZXJTZXRJc1N1cGVy
c2V0T2ZTZXQoQ0ZDaGFyYWN0ZXJTZXRSZWYgdGhlU2V0LCBDRkNoYXJhY3RlclNldFJlZiB0aGVP
dGhlcnNldCk7CiMgMjAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9DRkNoYXJhY3RlclNldC5oIiAzCmV4dGVybiBCb29sZWFuIENG
Q2hhcmFjdGVyU2V0SGFzTWVtYmVySW5QbGFuZShDRkNoYXJhY3RlclNldFJlZiB0aGVTZXQsIENG
SW5kZXggdGhlUGxhbmUpOwojIDIxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZDaGFyYWN0ZXJTZXQuaCIgMwpleHRlcm4KQ0ZN
dXRhYmxlQ2hhcmFjdGVyU2V0UmVmIENGQ2hhcmFjdGVyU2V0Q3JlYXRlTXV0YWJsZShDRkFsbG9j
YXRvclJlZiBhbGxvYyk7CiMgMjMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91
bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkNoYXJhY3RlclNldC5oIiAzCmV4dGVybgpDRkNo
YXJhY3RlclNldFJlZiBDRkNoYXJhY3RlclNldENyZWF0ZUNvcHkoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2MsIENGQ2hhcmFjdGVyU2V0UmVmIHRoZVNldCkgOwojIDI0NyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZDaGFyYWN0ZXJTZXQu
aCIgMwpleHRlcm4KQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIENGQ2hhcmFjdGVyU2V0Q3JlYXRl
TXV0YWJsZUNvcHkoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGQ2hhcmFjdGVyU2V0UmVmIHRoZVNl
dCk7CiMgMjYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9DRkNoYXJhY3RlclNldC5oIiAzCmV4dGVybgpCb29sZWFuIENGQ2hhcmFj
dGVyU2V0SXNDaGFyYWN0ZXJNZW1iZXIoQ0ZDaGFyYWN0ZXJTZXRSZWYgdGhlU2V0LCBVbmlDaGFy
IHRoZUNoYXIpOwojIDI3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZDaGFyYWN0ZXJTZXQuaCIgMwpleHRlcm4gQm9vbGVhbiBD
RkNoYXJhY3RlclNldElzTG9uZ0NoYXJhY3Rlck1lbWJlcihDRkNoYXJhY3RlclNldFJlZiB0aGVT
ZXQsIFVURjMyQ2hhciB0aGVDaGFyKTsKIyAyOTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQ2hhcmFjdGVyU2V0LmgiIDMKZXh0
ZXJuCkNGRGF0YVJlZiBDRkNoYXJhY3RlclNldENyZWF0ZUJpdG1hcFJlcHJlc2VudGF0aW9uKENG
QWxsb2NhdG9yUmVmIGFsbG9jLCBDRkNoYXJhY3RlclNldFJlZiB0aGVTZXQpOwojIDMwOCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
Q0ZDaGFyYWN0ZXJTZXQuaCIgMwpleHRlcm4Kdm9pZCBDRkNoYXJhY3RlclNldEFkZENoYXJhY3Rl
cnNJblJhbmdlKENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiB0aGVTZXQsIENGUmFuZ2UgdGhlUmFu
Z2UpOwojIDMyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvQ0ZDaGFyYWN0ZXJTZXQuaCIgMwpleHRlcm4Kdm9pZCBDRkNoYXJhY3Rl
clNldFJlbW92ZUNoYXJhY3RlcnNJblJhbmdlKENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiB0aGVT
ZXQsIENGUmFuZ2UgdGhlUmFuZ2UpOwojIDMzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZDaGFyYWN0ZXJTZXQuaCIgMwpleHRl
cm4Kdm9pZCBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblN0cmluZyhDRk11dGFibGVDaGFy
YWN0ZXJTZXRSZWYgdGhlU2V0LCBDRlN0cmluZ1JlZiB0aGVTdHJpbmcpOwojIDM0OSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZD
aGFyYWN0ZXJTZXQuaCIgMwpleHRlcm4Kdm9pZCBDRkNoYXJhY3RlclNldFJlbW92ZUNoYXJhY3Rl
cnNJblN0cmluZyhDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgdGhlU2V0LCBDRlN0cmluZ1JlZiB0
aGVTdHJpbmcpOwojIDM2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZDaGFyYWN0ZXJTZXQuaCIgMwpleHRlcm4Kdm9pZCBDRkNo
YXJhY3RlclNldFVuaW9uKENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiB0aGVTZXQsIENGQ2hhcmFj
dGVyU2V0UmVmIHRoZU90aGVyU2V0KTsKIyAzNzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQ2hhcmFjdGVyU2V0LmgiIDMKZXh0
ZXJuCnZvaWQgQ0ZDaGFyYWN0ZXJTZXRJbnRlcnNlY3QoQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVm
IHRoZVNldCwgQ0ZDaGFyYWN0ZXJTZXRSZWYgdGhlT3RoZXJTZXQpOwojIDM4NyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZDaGFy
YWN0ZXJTZXQuaCIgMwpleHRlcm4Kdm9pZCBDRkNoYXJhY3RlclNldEludmVydChDRk11dGFibGVD
aGFyYWN0ZXJTZXRSZWYgdGhlU2V0KTsKCn0KIyAxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTdHJpbmcuaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZMb2NhbGUuaCIgMSAzCgoKCgoKI2RlZmluZSBfX0NPUkVGT1VOREFUSU9OX0NGTE9DQUxF
X18gMQoKCgoKCgoKZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGTG9jYWxl
ICpDRkxvY2FsZVJlZjsKCmV4dGVybgpDRlR5cGVJRCBDRkxvY2FsZUdldFR5cGVJRCh2b2lkKSA7
CgpleHRlcm4KQ0ZMb2NhbGVSZWYgQ0ZMb2NhbGVHZXRTeXN0ZW0odm9pZCkgOwoKCmV4dGVybgpD
RkxvY2FsZVJlZiBDRkxvY2FsZUNvcHlDdXJyZW50KHZvaWQpIDsKIyAzNiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZMb2NhbGUu
aCIgMwpleHRlcm4KQ0ZBcnJheVJlZiBDRkxvY2FsZUNvcHlBdmFpbGFibGVMb2NhbGVJZGVudGlm
aWVycyh2b2lkKSA7CgoKCmV4dGVybgpDRkFycmF5UmVmIENGTG9jYWxlQ29weUlTT0xhbmd1YWdl
Q29kZXModm9pZCkgOwoKCgoKZXh0ZXJuCkNGQXJyYXlSZWYgQ0ZMb2NhbGVDb3B5SVNPQ291bnRy
eUNvZGVzKHZvaWQpIDsKCgoKCmV4dGVybgpDRkFycmF5UmVmIENGTG9jYWxlQ29weUlTT0N1cnJl
bmN5Q29kZXModm9pZCkgOwoKCgoKZXh0ZXJuCkNGQXJyYXlSZWYgQ0ZMb2NhbGVDb3B5Q29tbW9u
SVNPQ3VycmVuY3lDb2Rlcyh2b2lkKSA7CgoKCmV4dGVybgpDRkFycmF5UmVmIENGTG9jYWxlQ29w
eVByZWZlcnJlZExhbmd1YWdlcyh2b2lkKSA7CgoKZXh0ZXJuCkNGU3RyaW5nUmVmIENGTG9jYWxl
Q3JlYXRlQ2Fub25pY2FsTGFuZ3VhZ2VJZGVudGlmaWVyRnJvbVN0cmluZyhDRkFsbG9jYXRvclJl
ZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIGxvY2FsZUlkZW50aWZpZXIpIDsKCgoKZXh0ZXJuCkNG
U3RyaW5nUmVmIENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmllckZyb21TdHJp
bmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBsb2NhbGVJZGVudGlmaWVy
KSA7CgoKCmV4dGVybgpDRlN0cmluZ1JlZiBDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExvY2FsZUlk
ZW50aWZpZXJGcm9tU2NyaXB0TWFuYWdlckNvZGVzKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwg
TGFuZ0NvZGUgbGNvZGUsIFJlZ2lvbkNvZGUgcmNvZGUpIDsKCgpleHRlcm4KQ0ZTdHJpbmdSZWYg
Q0ZMb2NhbGVDcmVhdGVMb2NhbGVJZGVudGlmaWVyRnJvbVdpbmRvd3NMb2NhbGVDb2RlKENGQWxs
b2NhdG9yUmVmIGFsbG9jYXRvciwgdWludDMyX3QgbGNpZCkgOwoKCmV4dGVybgp1aW50MzJfdCBD
RkxvY2FsZUdldFdpbmRvd3NMb2NhbGVDb2RlRnJvbUxvY2FsZUlkZW50aWZpZXIoQ0ZTdHJpbmdS
ZWYgbG9jYWxlSWRlbnRpZmllcikgOwoKCmVudW0gewogICAga0NGTG9jYWxlTGFuZ3VhZ2VEaXJl
Y3Rpb25Vbmtub3duID0gMCwKICAgIGtDRkxvY2FsZUxhbmd1YWdlRGlyZWN0aW9uTGVmdFRvUmln
aHQgPSAxLAogICAga0NGTG9jYWxlTGFuZ3VhZ2VEaXJlY3Rpb25SaWdodFRvTGVmdCA9IDIsCiAg
ICBrQ0ZMb2NhbGVMYW5ndWFnZURpcmVjdGlvblRvcFRvQm90dG9tID0gMywKICAgIGtDRkxvY2Fs
ZUxhbmd1YWdlRGlyZWN0aW9uQm90dG9tVG9Ub3AgPSA0Cn07CnR5cGVkZWYgQ0ZJbmRleCBDRkxv
Y2FsZUxhbmd1YWdlRGlyZWN0aW9uOwoKZXh0ZXJuCkNGTG9jYWxlTGFuZ3VhZ2VEaXJlY3Rpb24g
Q0ZMb2NhbGVHZXRMYW5ndWFnZUNoYXJhY3RlckRpcmVjdGlvbihDRlN0cmluZ1JlZiBpc29MYW5n
Q29kZSkgOwoKZXh0ZXJuCkNGTG9jYWxlTGFuZ3VhZ2VEaXJlY3Rpb24gQ0ZMb2NhbGVHZXRMYW5n
dWFnZUxpbmVEaXJlY3Rpb24oQ0ZTdHJpbmdSZWYgaXNvTGFuZ0NvZGUpIDsKCmV4dGVybgpDRkRp
Y3Rpb25hcnlSZWYgQ0ZMb2NhbGVDcmVhdGVDb21wb25lbnRzRnJvbUxvY2FsZUlkZW50aWZpZXIo
Q0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBsb2NhbGVJRCkgOwojIDExNSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZMb2NhbGUuaCIgMwpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZMb2NhbGVDcmVhdGVMb2NhbGVJ
ZGVudGlmaWVyRnJvbUNvbXBvbmVudHMoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkgOwoKCgoKCgpleHRlcm4KQ0ZMb2NhbGVSZWYgQ0ZMb2NhbGVD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBsb2NhbGVJZGVudGlm
aWVyKSA7CgoKZXh0ZXJuCkNGTG9jYWxlUmVmIENGTG9jYWxlQ3JlYXRlQ29weShDRkFsbG9jYXRv
clJlZiBhbGxvY2F0b3IsIENGTG9jYWxlUmVmIGxvY2FsZSkgOwoKCgoKZXh0ZXJuCkNGU3RyaW5n
UmVmIENGTG9jYWxlR2V0SWRlbnRpZmllcihDRkxvY2FsZVJlZiBsb2NhbGUpIDsKCgoKZXh0ZXJu
CkNGVHlwZVJlZiBDRkxvY2FsZUdldFZhbHVlKENGTG9jYWxlUmVmIGxvY2FsZSwgQ0ZTdHJpbmdS
ZWYga2V5KSA7CgoKCmV4dGVybgpDRlN0cmluZ1JlZiBDRkxvY2FsZUNvcHlEaXNwbGF5TmFtZUZv
clByb3BlcnR5VmFsdWUoQ0ZMb2NhbGVSZWYgZGlzcGxheUxvY2FsZSwgQ0ZTdHJpbmdSZWYga2V5
LCBDRlN0cmluZ1JlZiB2YWx1ZSkgOwoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZM
b2NhbGVDdXJyZW50TG9jYWxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIDsKCgoKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDRkxvY2FsZUlkZW50aWZpZXIgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga0NGTG9jYWxlTGFuZ3VhZ2VDb2RlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxv
Y2FsZUNvdW50cnlDb2RlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZVNjcmlw
dENvZGUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGTG9jYWxlVmFyaWFudENvZGUgOwoK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZUV4ZW1wbGFyQ2hhcmFjdGVyU2V0IDsK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZUNhbGVuZGFySWRlbnRpZmllciA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZMb2NhbGVDYWxlbmRhciA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZMb2NhbGVDb2xsYXRpb25JZGVudGlmaWVyIDsKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtDRkxvY2FsZVVzZXNNZXRyaWNTeXN0ZW0gOwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NGTG9jYWxlTWVhc3VyZW1lbnRTeXN0ZW0gOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga0NGTG9jYWxlRGVjaW1hbFNlcGFyYXRvciA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZMb2NhbGVHcm91cGluZ1NlcGFyYXRvciA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZM
b2NhbGVDdXJyZW5jeVN5bWJvbCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZMb2NhbGVD
dXJyZW5jeUNvZGUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGTG9jYWxlQ29sbGF0b3JJ
ZGVudGlmaWVyIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZVF1b3RhdGlvbkJl
Z2luRGVsaW1pdGVyS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZVF1b3Rh
dGlvbkVuZERlbGltaXRlcktleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZMb2NhbGVB
bHRlcm5hdGVRdW90YXRpb25CZWdpbkRlbGltaXRlcktleSA7CmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZMb2NhbGVBbHRlcm5hdGVRdW90YXRpb25FbmREZWxpbWl0ZXJLZXkgOwoKCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZHcmVnb3JpYW5DYWxlbmRhciA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZCdWRkaGlzdENhbGVuZGFyIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDRkNoaW5lc2VDYWxlbmRhciA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZIZWJyZXdD
YWxlbmRhciA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZJc2xhbWljQ2FsZW5kYXIgOwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGSXNsYW1pY0NpdmlsQ2FsZW5kYXIgOwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0NGSmFwYW5lc2VDYWxlbmRhciA7CmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZSZXB1YmxpY09mQ2hpbmFDYWxlbmRhciA7CmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZQZXJzaWFuQ2FsZW5kYXIgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGSW5k
aWFuQ2FsZW5kYXIgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGSVNPODYwMUNhbGVuZGFy
IDsKCn0KIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvQ0ZTdHJpbmcuaCIgMiAzCgoKZXh0ZXJuICJDIiB7CiMgOTIgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NG
U3RyaW5nLmgiIDMKdHlwZWRlZiBVSW50MzIgQ0ZTdHJpbmdFbmNvZGluZzsKCgoKCiNkZWZpbmUg
a0NGU3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQgKDB4ZmZmZmZmZmZVKQplbnVtIHsKICAgIGtDRlN0
cmluZ0VuY29kaW5nTWFjUm9tYW4gPSAwLAogICAga0NGU3RyaW5nRW5jb2RpbmdXaW5kb3dzTGF0
aW4xID0gMHgwNTAwLAogICAga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEgPSAweDAyMDEsCiAg
ICBrQ0ZTdHJpbmdFbmNvZGluZ05leHRTdGVwTGF0aW4gPSAweDBCMDEsCiAgICBrQ0ZTdHJpbmdF
bmNvZGluZ0FTQ0lJID0gMHgwNjAwLAogICAga0NGU3RyaW5nRW5jb2RpbmdVbmljb2RlID0gMHgw
MTAwLAogICAga0NGU3RyaW5nRW5jb2RpbmdVVEY4ID0gMHgwODAwMDEwMCwKICAgIGtDRlN0cmlu
Z0VuY29kaW5nTm9uTG9zc3lBU0NJSSA9IDB4MEJGRgoKICAgICwKICAgIGtDRlN0cmluZ0VuY29k
aW5nVVRGMTYgPSAweDAxMDAsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1VURjE2QkUgPSAweDEwMDAw
MTAwLAogICAga0NGU3RyaW5nRW5jb2RpbmdVVEYxNkxFID0gMHgxNDAwMDEwMCwKCiAgICBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjMyID0gMHgwYzAwMDEwMCwKICAgIGtDRlN0cmluZ0VuY29kaW5nVVRG
MzJCRSA9IDB4MTgwMDAxMDAsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1VURjMyTEUgPSAweDFjMDAw
MTAwCgp9Owp0eXBlZGVmIENGU3RyaW5nRW5jb2RpbmcgQ0ZTdHJpbmdCdWlsdEluRW5jb2Rpbmdz
OwoKCgpleHRlcm4KQ0ZUeXBlSUQgQ0ZTdHJpbmdHZXRUeXBlSUQodm9pZCk7CiMgMTUxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9D
RlN0cmluZy5oIiAzCiNkZWZpbmUgQ0ZTVFIoY1N0cikgKChDRlN0cmluZ1JlZikgX19idWlsdGlu
X19fQ0ZTdHJpbmdNYWtlQ29uc3RhbnRTdHJpbmcgKCIiIGNTdHIgIiIpKQoKCgoKCiNkZWZpbmUg
Q0ZfRk9STUFUX0ZVTkNUSU9OKEYsQSkgX19hdHRyaWJ1dGVfXygoZm9ybWF0KENGU3RyaW5nLCBG
LCBBKSkpCiNkZWZpbmUgQ0ZfRk9STUFUX0FSR1VNRU5UKEEpIF9fYXR0cmlidXRlX18oKGZvcm1h
dF9hcmcoQSkpKQojIDE3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTdHJpbmcuaCIgMwpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZT
dHJpbmdDcmVhdGVXaXRoUGFzY2FsU3RyaW5nKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDb25zdFN0
cjI1NVBhcmFtIHBTdHIsIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpOwoKZXh0ZXJuCkNGU3Ry
aW5nUmVmIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIGNv
bnN0IGNoYXIgKmNTdHIsIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpOwoKCgpleHRlcm4KQ0ZT
dHJpbmdSZWYgQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIGNv
bnN0IFVJbnQ4ICpieXRlcywgQ0ZJbmRleCBudW1CeXRlcywgQ0ZTdHJpbmdFbmNvZGluZyBlbmNv
ZGluZywgQm9vbGVhbiBpc0V4dGVybmFsUmVwcmVzZW50YXRpb24pOwoKZXh0ZXJuCkNGU3RyaW5n
UmVmIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIGNv
bnN0IFVuaUNoYXIgKmNoYXJzLCBDRkluZGV4IG51bUNoYXJzKTsKIyAyMDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU3RyaW5n
LmgiIDMKZXh0ZXJuCkNGU3RyaW5nUmVmIENGU3RyaW5nQ3JlYXRlV2l0aFBhc2NhbFN0cmluZ05v
Q29weShDRkFsbG9jYXRvclJlZiBhbGxvYywgQ29uc3RTdHIyNTVQYXJhbSBwU3RyLCBDRlN0cmlu
Z0VuY29kaW5nIGVuY29kaW5nLCBDRkFsbG9jYXRvclJlZiBjb250ZW50c0RlYWxsb2NhdG9yKTsK
CmV4dGVybgpDRlN0cmluZ1JlZiBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KENGQWxs
b2NhdG9yUmVmIGFsbG9jLCBjb25zdCBjaGFyICpjU3RyLCBDRlN0cmluZ0VuY29kaW5nIGVuY29k
aW5nLCBDRkFsbG9jYXRvclJlZiBjb250ZW50c0RlYWxsb2NhdG9yKTsKCgoKCmV4dGVybgpDRlN0
cmluZ1JlZiBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShDRkFsbG9jYXRvclJlZiBhbGxv
YywgY29uc3QgVUludDggKmJ5dGVzLCBDRkluZGV4IG51bUJ5dGVzLCBDRlN0cmluZ0VuY29kaW5n
IGVuY29kaW5nLCBCb29sZWFuIGlzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbiwgQ0ZBbGxvY2F0b3JS
ZWYgY29udGVudHNEZWFsbG9jYXRvcikgOwoKCmV4dGVybgpDRlN0cmluZ1JlZiBDRlN0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBjb25zdCBVbmlD
aGFyICpjaGFycywgQ0ZJbmRleCBudW1DaGFycywgQ0ZBbGxvY2F0b3JSZWYgY29udGVudHNEZWFs
bG9jYXRvcik7CgoKCmV4dGVybgpDRlN0cmluZ1JlZiBDRlN0cmluZ0NyZWF0ZVdpdGhTdWJzdHJp
bmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGU3RyaW5nUmVmIHN0ciwgQ0ZSYW5nZSByYW5nZSk7
CgpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZTdHJpbmdDcmVhdGVDb3B5KENGQWxsb2NhdG9yUmVmIGFs
bG9jLCBDRlN0cmluZ1JlZiB0aGVTdHJpbmcpOwoKCgpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZTdHJp
bmdDcmVhdGVXaXRoRm9ybWF0KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRkRpY3Rpb25hcnlSZWYg
Zm9ybWF0T3B0aW9ucywgQ0ZTdHJpbmdSZWYgZm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18oKGZv
cm1hdChDRlN0cmluZywgMywgNCkpKTsKCmV4dGVybgpDRlN0cmluZ1JlZiBDRlN0cmluZ0NyZWF0
ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGRGljdGlvbmFy
eVJlZiBmb3JtYXRPcHRpb25zLCBDRlN0cmluZ1JlZiBmb3JtYXQsIHZhX2xpc3QgYXJndW1lbnRz
KSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQoQ0ZTdHJpbmcsIDMsIDApKSk7CgoKCmV4dGVybgpDRk11
dGFibGVTdHJpbmdSZWYgQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKENGQWxsb2NhdG9yUmVmIGFsbG9j
LCBDRkluZGV4IG1heExlbmd0aCk7CgpleHRlcm4KQ0ZNdXRhYmxlU3RyaW5nUmVmIENGU3RyaW5n
Q3JlYXRlTXV0YWJsZUNvcHkoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGSW5kZXggbWF4TGVuZ3Ro
LCBDRlN0cmluZ1JlZiB0aGVTdHJpbmcpOwoKCgoKCgoKZXh0ZXJuCkNGTXV0YWJsZVN0cmluZ1Jl
ZiBDRlN0cmluZ0NyZWF0ZU11dGFibGVXaXRoRXh0ZXJuYWxDaGFyYWN0ZXJzTm9Db3B5KENGQWxs
b2NhdG9yUmVmIGFsbG9jLCBVbmlDaGFyICpjaGFycywgQ0ZJbmRleCBudW1DaGFycywgQ0ZJbmRl
eCBjYXBhY2l0eSwgQ0ZBbGxvY2F0b3JSZWYgZXh0ZXJuYWxDaGFyYWN0ZXJzQWxsb2NhdG9yKTsK
CgoKCgpleHRlcm4KQ0ZJbmRleCBDRlN0cmluZ0dldExlbmd0aChDRlN0cmluZ1JlZiB0aGVTdHJp
bmcpOwoKCgoKCgpleHRlcm4KVW5pQ2hhciBDRlN0cmluZ0dldENoYXJhY3RlckF0SW5kZXgoQ0ZT
dHJpbmdSZWYgdGhlU3RyaW5nLCBDRkluZGV4IGlkeCk7CgpleHRlcm4Kdm9pZCBDRlN0cmluZ0dl
dENoYXJhY3RlcnMoQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nLCBDRlJhbmdlIHJhbmdlLCBVbmlDaGFy
ICpidWZmZXIpOwojIDI3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTdHJpbmcuaCIgMwpleHRlcm4KQm9vbGVhbiBDRlN0cmlu
Z0dldFBhc2NhbFN0cmluZyhDRlN0cmluZ1JlZiB0aGVTdHJpbmcsIFN0cmluZ1B0ciBidWZmZXIs
IENGSW5kZXggYnVmZmVyU2l6ZSwgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7CgpleHRlcm4K
Qm9vbGVhbiBDRlN0cmluZ0dldENTdHJpbmcoQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nLCBjaGFyICpi
dWZmZXIsIENGSW5kZXggYnVmZmVyU2l6ZSwgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7CgoK
CgoKCmV4dGVybgpDb25zdFN0cmluZ1B0ciBDRlN0cmluZ0dldFBhc2NhbFN0cmluZ1B0cihDRlN0
cmluZ1JlZiB0aGVTdHJpbmcsIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpOwoKZXh0ZXJuCmNv
bnN0IGNoYXIgKkNGU3RyaW5nR2V0Q1N0cmluZ1B0cihDRlN0cmluZ1JlZiB0aGVTdHJpbmcsIENG
U3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpOwoKZXh0ZXJuCmNvbnN0IFVuaUNoYXIgKkNGU3RyaW5n
R2V0Q2hhcmFjdGVyc1B0cihDRlN0cmluZ1JlZiB0aGVTdHJpbmcpOwojIDMxNSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTdHJp
bmcuaCIgMwpleHRlcm4KQ0ZJbmRleCBDRlN0cmluZ0dldEJ5dGVzKENGU3RyaW5nUmVmIHRoZVN0
cmluZywgQ0ZSYW5nZSByYW5nZSwgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZywgVUludDggbG9z
c0J5dGUsIEJvb2xlYW4gaXNFeHRlcm5hbFJlcHJlc2VudGF0aW9uLCBVSW50OCAqYnVmZmVyLCBD
RkluZGV4IG1heEJ1ZkxlbiwgQ0ZJbmRleCAqdXNlZEJ1Zkxlbik7CgoKCgoKCgpleHRlcm4KQ0ZT
dHJpbmdSZWYgQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDRkFsbG9j
YXRvclJlZiBhbGxvYywgQ0ZEYXRhUmVmIGRhdGEsIENGU3RyaW5nRW5jb2RpbmcgZW5jb2Rpbmcp
OwoKZXh0ZXJuCkNGRGF0YVJlZiBDRlN0cmluZ0NyZWF0ZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
Q0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZTdHJpbmdFbmNv
ZGluZyBlbmNvZGluZywgVUludDggbG9zc0J5dGUpOwoKCgpleHRlcm4KQ0ZTdHJpbmdFbmNvZGlu
ZyBDRlN0cmluZ0dldFNtYWxsZXN0RW5jb2RpbmcoQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nKTsKCmV4
dGVybgpDRlN0cmluZ0VuY29kaW5nIENGU3RyaW5nR2V0RmFzdGVzdEVuY29kaW5nKENGU3RyaW5n
UmVmIHRoZVN0cmluZyk7CgoKCmV4dGVybgpDRlN0cmluZ0VuY29kaW5nIENGU3RyaW5nR2V0U3lz
dGVtRW5jb2Rpbmcodm9pZCk7CgpleHRlcm4KQ0ZJbmRleCBDRlN0cmluZ0dldE1heGltdW1TaXpl
Rm9yRW5jb2RpbmcoQ0ZJbmRleCBsZW5ndGgsIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpOwoK
CgoKCgpleHRlcm4KQm9vbGVhbiBDRlN0cmluZ0dldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihD
RlN0cmluZ1JlZiBzdHJpbmcsIGNoYXIgKmJ1ZmZlciwgQ0ZJbmRleCBtYXhCdWZMZW4pIDsKCgoK
ZXh0ZXJuCkNGSW5kZXggQ0ZTdHJpbmdHZXRNYXhpbXVtU2l6ZU9mRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKENGU3RyaW5nUmVmIHN0cmluZykgOwoKCgpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZTdHJp
bmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKENGQWxsb2NhdG9yUmVmIGFsbG9j
LCBjb25zdCBjaGFyICpidWZmZXIpIDsKCgoKCgoKZW51bSB7CiAgICBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlID0gMSwKICAgIGtDRkNvbXBhcmVCYWNrd2FyZHMgPSA0LAogICAga0NGQ29tcGFy
ZUFuY2hvcmVkID0gOCwKICAgIGtDRkNvbXBhcmVOb25saXRlcmFsID0gMTYsCiAgICBrQ0ZDb21w
YXJlTG9jYWxpemVkID0gMzIsCiAgICBrQ0ZDb21wYXJlTnVtZXJpY2FsbHkgPSA2NAoKICAgICwK
ICAgIGtDRkNvbXBhcmVEaWFjcml0aWNJbnNlbnNpdGl2ZSA9IDEyOCwKICAgIGtDRkNvbXBhcmVX
aWR0aEluc2Vuc2l0aXZlID0gMjU2LAogICAga0NGQ29tcGFyZUZvcmNlZE9yZGVyaW5nID0gNTEy
Cgp9Owp0eXBlZGVmIENGT3B0aW9uRmxhZ3MgQ0ZTdHJpbmdDb21wYXJlRmxhZ3M7CgoKCgoKCgpl
eHRlcm4KQ0ZDb21wYXJpc29uUmVzdWx0IENGU3RyaW5nQ29tcGFyZVdpdGhPcHRpb25zQW5kTG9j
YWxlKENGU3RyaW5nUmVmIHRoZVN0cmluZzEsIENGU3RyaW5nUmVmIHRoZVN0cmluZzIsIENGUmFu
Z2UgcmFuZ2VUb0NvbXBhcmUsIENGU3RyaW5nQ29tcGFyZUZsYWdzIGNvbXBhcmVPcHRpb25zLCBD
RkxvY2FsZVJlZiBsb2NhbGUpIDsKCgoKCmV4dGVybgpDRkNvbXBhcmlzb25SZXN1bHQgQ0ZTdHJp
bmdDb21wYXJlV2l0aE9wdGlvbnMoQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nMSwgQ0ZTdHJpbmdSZWYg
dGhlU3RyaW5nMiwgQ0ZSYW5nZSByYW5nZVRvQ29tcGFyZSwgQ0ZTdHJpbmdDb21wYXJlRmxhZ3Mg
Y29tcGFyZU9wdGlvbnMpOwoKCgoKCmV4dGVybgpDRkNvbXBhcmlzb25SZXN1bHQgQ0ZTdHJpbmdD
b21wYXJlKENGU3RyaW5nUmVmIHRoZVN0cmluZzEsIENGU3RyaW5nUmVmIHRoZVN0cmluZzIsIENG
U3RyaW5nQ29tcGFyZUZsYWdzIGNvbXBhcmVPcHRpb25zKTsKCgoKCgoKCmV4dGVybgpCb29sZWFu
IENGU3RyaW5nRmluZFdpdGhPcHRpb25zQW5kTG9jYWxlKENGU3RyaW5nUmVmIHRoZVN0cmluZywg
Q0ZTdHJpbmdSZWYgc3RyaW5nVG9GaW5kLCBDRlJhbmdlIHJhbmdlVG9TZWFyY2gsIENGU3RyaW5n
Q29tcGFyZUZsYWdzIHNlYXJjaE9wdGlvbnMsIENGTG9jYWxlUmVmIGxvY2FsZSwgQ0ZSYW5nZSAq
cmVzdWx0KSA7CgoKCgpleHRlcm4KQm9vbGVhbiBDRlN0cmluZ0ZpbmRXaXRoT3B0aW9ucyhDRlN0
cmluZ1JlZiB0aGVTdHJpbmcsIENGU3RyaW5nUmVmIHN0cmluZ1RvRmluZCwgQ0ZSYW5nZSByYW5n
ZVRvU2VhcmNoLCBDRlN0cmluZ0NvbXBhcmVGbGFncyBzZWFyY2hPcHRpb25zLCBDRlJhbmdlICpy
ZXN1bHQpOwojIDQzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTdHJpbmcuaCIgMwpleHRlcm4KQ0ZBcnJheVJlZiBDRlN0cmlu
Z0NyZWF0ZUFycmF5V2l0aEZpbmRSZXN1bHRzKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRlN0cmlu
Z1JlZiB0aGVTdHJpbmcsIENGU3RyaW5nUmVmIHN0cmluZ1RvRmluZCwgQ0ZSYW5nZSByYW5nZVRv
U2VhcmNoLCBDRlN0cmluZ0NvbXBhcmVGbGFncyBjb21wYXJlT3B0aW9ucyk7CgoKCmV4dGVybgpD
RlJhbmdlIENGU3RyaW5nRmluZChDRlN0cmluZ1JlZiB0aGVTdHJpbmcsIENGU3RyaW5nUmVmIHN0
cmluZ1RvRmluZCwgQ0ZTdHJpbmdDb21wYXJlRmxhZ3MgY29tcGFyZU9wdGlvbnMpOwoKZXh0ZXJu
CkJvb2xlYW4gQ0ZTdHJpbmdIYXNQcmVmaXgoQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nLCBDRlN0cmlu
Z1JlZiBwcmVmaXgpOwoKZXh0ZXJuCkJvb2xlYW4gQ0ZTdHJpbmdIYXNTdWZmaXgoQ0ZTdHJpbmdS
ZWYgdGhlU3RyaW5nLCBDRlN0cmluZ1JlZiBzdWZmaXgpOwojIDQ1OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTdHJpbmcuaCIg
MwpleHRlcm4gQ0ZSYW5nZSBDRlN0cmluZ0dldFJhbmdlT2ZDb21wb3NlZENoYXJhY3RlcnNBdElu
ZGV4KENGU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZJbmRleCB0aGVJbmRleCk7CiMgNDg5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9D
RlN0cmluZy5oIiAzCmV4dGVybiBCb29sZWFuIENGU3RyaW5nRmluZENoYXJhY3RlckZyb21TZXQo
Q0ZTdHJpbmdSZWYgdGhlU3RyaW5nLCBDRkNoYXJhY3RlclNldFJlZiB0aGVTZXQsIENGUmFuZ2Ug
cmFuZ2VUb1NlYXJjaCwgQ0ZTdHJpbmdDb21wYXJlRmxhZ3Mgc2VhcmNoT3B0aW9ucywgQ0ZSYW5n
ZSAqcmVzdWx0KTsKIyA1MDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU3RyaW5nLmgiIDMKZXh0ZXJuCnZvaWQgQ0ZTdHJpbmdH
ZXRMaW5lQm91bmRzKENGU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZSYW5nZSByYW5nZSwgQ0ZJbmRl
eCAqbGluZUJlZ2luSW5kZXgsIENGSW5kZXggKmxpbmVFbmRJbmRleCwgQ0ZJbmRleCAqY29udGVu
dHNFbmRJbmRleCk7CgoKCmV4dGVybgp2b2lkIENGU3RyaW5nR2V0UGFyYWdyYXBoQm91bmRzKENG
U3RyaW5nUmVmIHN0cmluZywgQ0ZSYW5nZSByYW5nZSwgQ0ZJbmRleCAqcGFyQmVnaW5JbmRleCwg
Q0ZJbmRleCAqcGFyRW5kSW5kZXgsIENGSW5kZXggKmNvbnRlbnRzRW5kSW5kZXgpIDsKCgoKZXh0
ZXJuCkNGU3RyaW5nUmVmIENGU3RyaW5nQ3JlYXRlQnlDb21iaW5pbmdTdHJpbmdzKENGQWxsb2Nh
dG9yUmVmIGFsbG9jLCBDRkFycmF5UmVmIHRoZUFycmF5LCBDRlN0cmluZ1JlZiBzZXBhcmF0b3JT
dHJpbmcpOwoKZXh0ZXJuCkNGQXJyYXlSZWYgQ0ZTdHJpbmdDcmVhdGVBcnJheUJ5U2VwYXJhdGlu
Z1N0cmluZ3MoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZT
dHJpbmdSZWYgc2VwYXJhdG9yU3RyaW5nKTsKCgoKCmV4dGVybgpTSW50MzIgQ0ZTdHJpbmdHZXRJ
bnRWYWx1ZShDRlN0cmluZ1JlZiBzdHIpOwoKZXh0ZXJuCmRvdWJsZSBDRlN0cmluZ0dldERvdWJs
ZVZhbHVlKENGU3RyaW5nUmVmIHN0cik7CiMgNTM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlN0cmluZy5oIiAzCmV4dGVybgp2
b2lkIENGU3RyaW5nQXBwZW5kKENGTXV0YWJsZVN0cmluZ1JlZiB0aGVTdHJpbmcsIENGU3RyaW5n
UmVmIGFwcGVuZGVkU3RyaW5nKTsKCmV4dGVybgp2b2lkIENGU3RyaW5nQXBwZW5kQ2hhcmFjdGVy
cyhDRk11dGFibGVTdHJpbmdSZWYgdGhlU3RyaW5nLCBjb25zdCBVbmlDaGFyICpjaGFycywgQ0ZJ
bmRleCBudW1DaGFycyk7CgpleHRlcm4Kdm9pZCBDRlN0cmluZ0FwcGVuZFBhc2NhbFN0cmluZyhD
Rk11dGFibGVTdHJpbmdSZWYgdGhlU3RyaW5nLCBDb25zdFN0cjI1NVBhcmFtIHBTdHIsIENGU3Ry
aW5nRW5jb2RpbmcgZW5jb2RpbmcpOwoKZXh0ZXJuCnZvaWQgQ0ZTdHJpbmdBcHBlbmRDU3RyaW5n
KENGTXV0YWJsZVN0cmluZ1JlZiB0aGVTdHJpbmcsIGNvbnN0IGNoYXIgKmNTdHIsIENGU3RyaW5n
RW5jb2RpbmcgZW5jb2RpbmcpOwoKZXh0ZXJuCnZvaWQgQ0ZTdHJpbmdBcHBlbmRGb3JtYXQoQ0ZN
dXRhYmxlU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZEaWN0aW9uYXJ5UmVmIGZvcm1hdE9wdGlvbnMs
IENGU3RyaW5nUmVmIGZvcm1hdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQoQ0ZTdHJpbmcs
IDMsIDQpKSk7CgpleHRlcm4Kdm9pZCBDRlN0cmluZ0FwcGVuZEZvcm1hdEFuZEFyZ3VtZW50cyhD
Rk11dGFibGVTdHJpbmdSZWYgdGhlU3RyaW5nLCBDRkRpY3Rpb25hcnlSZWYgZm9ybWF0T3B0aW9u
cywgQ0ZTdHJpbmdSZWYgZm9ybWF0LCB2YV9saXN0IGFyZ3VtZW50cykgX19hdHRyaWJ1dGVfXygo
Zm9ybWF0KENGU3RyaW5nLCAzLCAwKSkpOwoKZXh0ZXJuCnZvaWQgQ0ZTdHJpbmdJbnNlcnQoQ0ZN
dXRhYmxlU3RyaW5nUmVmIHN0ciwgQ0ZJbmRleCBpZHgsIENGU3RyaW5nUmVmIGluc2VydGVkU3Ry
KTsKCmV4dGVybgp2b2lkIENGU3RyaW5nRGVsZXRlKENGTXV0YWJsZVN0cmluZ1JlZiB0aGVTdHJp
bmcsIENGUmFuZ2UgcmFuZ2UpOwoKZXh0ZXJuCnZvaWQgQ0ZTdHJpbmdSZXBsYWNlKENGTXV0YWJs
ZVN0cmluZ1JlZiB0aGVTdHJpbmcsIENGUmFuZ2UgcmFuZ2UsIENGU3RyaW5nUmVmIHJlcGxhY2Vt
ZW50KTsKCmV4dGVybgp2b2lkIENGU3RyaW5nUmVwbGFjZUFsbChDRk11dGFibGVTdHJpbmdSZWYg
dGhlU3RyaW5nLCBDRlN0cmluZ1JlZiByZXBsYWNlbWVudCk7CiMgNTczICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlN0cmluZy5o
IiAzCmV4dGVybgpDRkluZGV4IENGU3RyaW5nRmluZEFuZFJlcGxhY2UoQ0ZNdXRhYmxlU3RyaW5n
UmVmIHRoZVN0cmluZywgQ0ZTdHJpbmdSZWYgc3RyaW5nVG9GaW5kLCBDRlN0cmluZ1JlZiByZXBs
YWNlbWVudFN0cmluZywgQ0ZSYW5nZSByYW5nZVRvU2VhcmNoLCBDRlN0cmluZ0NvbXBhcmVGbGFn
cyBjb21wYXJlT3B0aW9ucyk7CiMgNTg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlN0cmluZy5oIiAzCmV4dGVybgp2b2lkIENG
U3RyaW5nU2V0RXh0ZXJuYWxDaGFyYWN0ZXJzTm9Db3B5KENGTXV0YWJsZVN0cmluZ1JlZiB0aGVT
dHJpbmcsIFVuaUNoYXIgKmNoYXJzLCBDRkluZGV4IGxlbmd0aCwgQ0ZJbmRleCBjYXBhY2l0eSk7
CiMgNTk5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9DRlN0cmluZy5oIiAzCmV4dGVybgp2b2lkIENGU3RyaW5nUGFkKENGTXV0YWJs
ZVN0cmluZ1JlZiB0aGVTdHJpbmcsIENGU3RyaW5nUmVmIHBhZFN0cmluZywgQ0ZJbmRleCBsZW5n
dGgsIENGSW5kZXggaW5kZXhJbnRvUGFkKTsKCmV4dGVybgp2b2lkIENGU3RyaW5nVHJpbShDRk11
dGFibGVTdHJpbmdSZWYgdGhlU3RyaW5nLCBDRlN0cmluZ1JlZiB0cmltU3RyaW5nKTsKCmV4dGVy
bgp2b2lkIENGU3RyaW5nVHJpbVdoaXRlc3BhY2UoQ0ZNdXRhYmxlU3RyaW5nUmVmIHRoZVN0cmlu
Zyk7CgoKZXh0ZXJuCnZvaWQgQ0ZTdHJpbmdMb3dlcmNhc2UoQ0ZNdXRhYmxlU3RyaW5nUmVmIHRo
ZVN0cmluZywgQ0ZMb2NhbGVSZWYgbG9jYWxlKTsKCmV4dGVybgp2b2lkIENGU3RyaW5nVXBwZXJj
YXNlKENGTXV0YWJsZVN0cmluZ1JlZiB0aGVTdHJpbmcsIENGTG9jYWxlUmVmIGxvY2FsZSk7Cgpl
eHRlcm4Kdm9pZCBDRlN0cmluZ0NhcGl0YWxpemUoQ0ZNdXRhYmxlU3RyaW5nUmVmIHRoZVN0cmlu
ZywgQ0ZMb2NhbGVSZWYgbG9jYWxlKTsKIyA2MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU3RyaW5nLmgiIDMKZW51bSB7CiBr
Q0ZTdHJpbmdOb3JtYWxpemF0aW9uRm9ybUQgPSAwLAoga0NGU3RyaW5nTm9ybWFsaXphdGlvbkZv
cm1LRCwKIGtDRlN0cmluZ05vcm1hbGl6YXRpb25Gb3JtQywKIGtDRlN0cmluZ05vcm1hbGl6YXRp
b25Gb3JtS0MKfTsKdHlwZWRlZiBDRkluZGV4IENGU3RyaW5nTm9ybWFsaXphdGlvbkZvcm07CiMg
NjU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9DRlN0cmluZy5oIiAzCmV4dGVybiB2b2lkIENGU3RyaW5nTm9ybWFsaXplKENGTXV0
YWJsZVN0cmluZ1JlZiB0aGVTdHJpbmcsIENGU3RyaW5nTm9ybWFsaXphdGlvbkZvcm0gdGhlRm9y
bSk7CiMgNjgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9DRlN0cmluZy5oIiAzCmV4dGVybgp2b2lkIENGU3RyaW5nRm9sZChDRk11
dGFibGVTdHJpbmdSZWYgdGhlU3RyaW5nLCBDRk9wdGlvbkZsYWdzIHRoZUZsYWdzLCBDRkxvY2Fs
ZVJlZiB0aGVMb2NhbGUpIDsKCgoKCgoKZXh0ZXJuCkJvb2xlYW4gQ0ZTdHJpbmdUcmFuc2Zvcm0o
Q0ZNdXRhYmxlU3RyaW5nUmVmIHN0cmluZywgQ0ZSYW5nZSAqcmFuZ2UsIENGU3RyaW5nUmVmIHRy
YW5zZm9ybSwgQm9vbGVhbiByZXZlcnNlKSA7CgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZTdHJpbmdUcmFuc2Zvcm1TdHJpcENvbWJpbmluZ01hcmtzIDsKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtDRlN0cmluZ1RyYW5zZm9ybVRvTGF0aW4gOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga0NGU3RyaW5nVHJhbnNmb3JtRnVsbHdpZHRoSGFsZndpZHRoIDsKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtDRlN0cmluZ1RyYW5zZm9ybUxhdGluS2F0YWthbmEgOwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NGU3RyaW5nVHJhbnNmb3JtTGF0aW5IaXJhZ2FuYSA7CmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrQ0ZTdHJpbmdUcmFuc2Zvcm1IaXJhZ2FuYUthdGFrYW5hIDsKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmluZ1RyYW5zZm9ybU1hbmRhcmluTGF0aW4gOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyaW5nVHJhbnNmb3JtTGF0aW5IYW5ndWwgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyaW5nVHJhbnNmb3JtTGF0aW5BcmFiaWMgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyaW5nVHJhbnNmb3JtTGF0aW5IZWJyZXcgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyaW5nVHJhbnNmb3JtTGF0aW5UaGFpIDsKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmluZ1RyYW5zZm9ybUxhdGluQ3lyaWxsaWMgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyaW5nVHJhbnNmb3JtTGF0aW5HcmVlayA7CmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJpbmdUcmFuc2Zvcm1Ub1hNTEhleCA7CmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJpbmdUcmFuc2Zvcm1Ub1VuaWNvZGVOYW1lIDsKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmluZ1RyYW5zZm9ybVN0cmlwRGlhY3JpdGljcyA7CgoK
CgoKCmV4dGVybgpCb29sZWFuIENGU3RyaW5nSXNFbmNvZGluZ0F2YWlsYWJsZShDRlN0cmluZ0Vu
Y29kaW5nIGVuY29kaW5nKTsKCgoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nRW5jb2RpbmcgKkNGU3Ry
aW5nR2V0TGlzdE9mQXZhaWxhYmxlRW5jb2RpbmdzKHZvaWQpOwoKCgpleHRlcm4KQ0ZTdHJpbmdS
ZWYgQ0ZTdHJpbmdHZXROYW1lT2ZFbmNvZGluZyhDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nKTsK
CgoKZXh0ZXJuCnVuc2lnbmVkIGxvbmcgQ0ZTdHJpbmdDb252ZXJ0RW5jb2RpbmdUb05TU3RyaW5n
RW5jb2RpbmcoQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7CgpleHRlcm4KQ0ZTdHJpbmdFbmNv
ZGluZyBDRlN0cmluZ0NvbnZlcnROU1N0cmluZ0VuY29kaW5nVG9FbmNvZGluZyh1bnNpZ25lZCBs
b25nIGVuY29kaW5nKTsKCgoKZXh0ZXJuClVJbnQzMiBDRlN0cmluZ0NvbnZlcnRFbmNvZGluZ1Rv
V2luZG93c0NvZGVwYWdlKENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpOwoKZXh0ZXJuCkNGU3Ry
aW5nRW5jb2RpbmcgQ0ZTdHJpbmdDb252ZXJ0V2luZG93c0NvZGVwYWdlVG9FbmNvZGluZyhVSW50
MzIgY29kZXBhZ2UpOwoKCgpleHRlcm4KQ0ZTdHJpbmdFbmNvZGluZyBDRlN0cmluZ0NvbnZlcnRJ
QU5BQ2hhclNldE5hbWVUb0VuY29kaW5nKENGU3RyaW5nUmVmIHRoZVN0cmluZyk7CgpleHRlcm4K
Q0ZTdHJpbmdSZWYgQ0ZTdHJpbmdDb252ZXJ0RW5jb2RpbmdUb0lBTkFDaGFyU2V0TmFtZShDRlN0
cmluZ0VuY29kaW5nIGVuY29kaW5nKTsKCgoKCgpleHRlcm4KQ0ZTdHJpbmdFbmNvZGluZyBDRlN0
cmluZ0dldE1vc3RDb21wYXRpYmxlTWFjU3RyaW5nRW5jb2RpbmcoQ0ZTdHJpbmdFbmNvZGluZyBl
bmNvZGluZyk7CiMgNzcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9DRlN0cmluZy5oIiAzCiNkZWZpbmUgX19rQ0ZTdHJpbmdJbmxp
bmVCdWZmZXJMZW5ndGggNjQKdHlwZWRlZiBzdHJ1Y3QgewogICAgVW5pQ2hhciBidWZmZXJbNjRd
OwogICAgQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nOwogICAgY29uc3QgVW5pQ2hhciAqZGlyZWN0QnVm
ZmVyOwogICAgQ0ZSYW5nZSByYW5nZVRvQnVmZmVyOwogICAgQ0ZJbmRleCBidWZmZXJlZFJhbmdl
U3RhcnQ7CiAgICBDRkluZGV4IGJ1ZmZlcmVkUmFuZ2VFbmQ7Cn0gQ0ZTdHJpbmdJbmxpbmVCdWZm
ZXI7CgoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIHZv
aWQgQ0ZTdHJpbmdJbml0SW5saW5lQnVmZmVyKENGU3RyaW5nUmVmIHN0ciwgQ0ZTdHJpbmdJbmxp
bmVCdWZmZXIgKmJ1ZiwgQ0ZSYW5nZSByYW5nZSkgewogICAgYnVmLT50aGVTdHJpbmcgPSBzdHI7
CiAgICBidWYtPnJhbmdlVG9CdWZmZXIgPSByYW5nZTsKICAgIGJ1Zi0+ZGlyZWN0QnVmZmVyID0g
Q0ZTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyKHN0cik7CiAgICBidWYtPmJ1ZmZlcmVkUmFuZ2VTdGFy
dCA9IGJ1Zi0+YnVmZmVyZWRSYW5nZUVuZCA9IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0
cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBVbmlDaGFyIENGU3RyaW5nR2V0Q2hhcmFjdGVyRnJv
bUlubGluZUJ1ZmZlcihDRlN0cmluZ0lubGluZUJ1ZmZlciAqYnVmLCBDRkluZGV4IGlkeCkgewog
ICAgaWYgKGJ1Zi0+ZGlyZWN0QnVmZmVyKSB7CiBpZiAoaWR4IDwgMCB8fCBpZHggPj0gYnVmLT5y
YW5nZVRvQnVmZmVyLmxlbmd0aCkgcmV0dXJuIDA7CiAgICAgICAgcmV0dXJuIGJ1Zi0+ZGlyZWN0
QnVmZmVyW2lkeCArIGJ1Zi0+cmFuZ2VUb0J1ZmZlci5sb2NhdGlvbl07CiAgICB9CiAgICBpZiAo
aWR4ID49IGJ1Zi0+YnVmZmVyZWRSYW5nZUVuZCB8fCBpZHggPCBidWYtPmJ1ZmZlcmVkUmFuZ2VT
dGFydCkgewogaWYgKGlkeCA8IDAgfHwgaWR4ID49IGJ1Zi0+cmFuZ2VUb0J1ZmZlci5sZW5ndGgp
IHJldHVybiAwOwogaWYgKChidWYtPmJ1ZmZlcmVkUmFuZ2VTdGFydCA9IGlkeCAtIDQpIDwgMCkg
YnVmLT5idWZmZXJlZFJhbmdlU3RhcnQgPSAwOwogYnVmLT5idWZmZXJlZFJhbmdlRW5kID0gYnVm
LT5idWZmZXJlZFJhbmdlU3RhcnQgKyA2NDsKIGlmIChidWYtPmJ1ZmZlcmVkUmFuZ2VFbmQgPiBi
dWYtPnJhbmdlVG9CdWZmZXIubGVuZ3RoKSBidWYtPmJ1ZmZlcmVkUmFuZ2VFbmQgPSBidWYtPnJh
bmdlVG9CdWZmZXIubGVuZ3RoOwogQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKGJ1Zi0+dGhlU3RyaW5n
LCBDRlJhbmdlTWFrZShidWYtPnJhbmdlVG9CdWZmZXIubG9jYXRpb24gKyBidWYtPmJ1ZmZlcmVk
UmFuZ2VTdGFydCwgYnVmLT5idWZmZXJlZFJhbmdlRW5kIC0gYnVmLT5idWZmZXJlZFJhbmdlU3Rh
cnQpLCBidWYtPmJ1ZmZlcik7CiAgICB9CiAgICByZXR1cm4gYnVmLT5idWZmZXJbaWR4IC0gYnVm
LT5idWZmZXJlZFJhbmdlU3RhcnRdOwp9CiMgODIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlN0cmluZy5oIiAzCnN0YXRpYyBf
X2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBCb29sZWFuIENGU3RyaW5n
SXNTdXJyb2dhdGVIaWdoQ2hhcmFjdGVyKFVuaUNoYXIgY2hhcmFjdGVyKSB7CiAgICByZXR1cm4g
KChjaGFyYWN0ZXIgPj0gMHhEODAwVUwpICYmIChjaGFyYWN0ZXIgPD0gMHhEQkZGVUwpID8gdHJ1
ZSA6IGZhbHNlKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lu
bGluZSkpIEJvb2xlYW4gQ0ZTdHJpbmdJc1N1cnJvZ2F0ZUxvd0NoYXJhY3RlcihVbmlDaGFyIGNo
YXJhY3RlcikgewogICAgcmV0dXJuICgoY2hhcmFjdGVyID49IDB4REMwMFVMKSAmJiAoY2hhcmFj
dGVyIDw9IDB4REZGRlVMKSA/IHRydWUgOiBmYWxzZSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9f
YXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBVVEYzMkNoYXIgQ0ZTdHJpbmdHZXRMb25nQ2hh
cmFjdGVyRm9yU3Vycm9nYXRlUGFpcihVbmlDaGFyIHN1cnJvZ2F0ZUhpZ2gsIFVuaUNoYXIgc3Vy
cm9nYXRlTG93KSB7CiAgICByZXR1cm4gKChzdXJyb2dhdGVIaWdoIC0gMHhEODAwVUwpIDw8IDEw
KSArIChzdXJyb2dhdGVMb3cgLSAweERDMDBVTCkgKyAweDAwMTAwMDBVTDsKfQoKCnN0YXRpYyBf
X2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBCb29sZWFuIENGU3RyaW5n
R2V0U3Vycm9nYXRlUGFpckZvckxvbmdDaGFyYWN0ZXIoVVRGMzJDaGFyIGNoYXJhY3RlciwgVW5p
Q2hhciAqc3Vycm9nYXRlcykgewogICAgaWYgKChjaGFyYWN0ZXIgPiAweEZGRkZVTCkgJiYgKGNo
YXJhY3RlciA8IDB4MTEwMDAwVUwpKSB7CiAgICAgICAgY2hhcmFjdGVyIC09IDB4MTAwMDA7CiAg
ICAgICAgaWYgKF9fbnVsbCAhPSBzdXJyb2dhdGVzKSB7CiAgICAgICAgICAgIHN1cnJvZ2F0ZXNb
MF0gPSAoVW5pQ2hhcikoKGNoYXJhY3RlciA+PiAxMCkgKyAweEQ4MDBVTCk7CiAgICAgICAgICAg
IHN1cnJvZ2F0ZXNbMV0gPSAoVW5pQ2hhcikoKGNoYXJhY3RlciAmIDB4M0ZGKSArIDB4REMwMFVM
KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9IGVsc2UgewogICAgICAgIGlm
IChfX251bGwgIT0gc3Vycm9nYXRlcykgKnN1cnJvZ2F0ZXMgPSAoVW5pQ2hhciljaGFyYWN0ZXI7
CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9CgoKCgoKCgpleHRlcm4Kdm9pZCBDRlNob3co
Q0ZUeXBlUmVmIG9iaik7CgpleHRlcm4Kdm9pZCBDRlNob3dTdHIoQ0ZTdHJpbmdSZWYgc3RyKTsK
CgpleHRlcm4KQ0ZTdHJpbmdSZWYgX19DRlN0cmluZ01ha2VDb25zdGFudFN0cmluZyhjb25zdCBj
aGFyICpjU3RyKTsKCn0KIyAzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZFcnJvci5oIiAyIDMKCgpleHRlcm4gIkMiIHsKCgoK
Cgp0eXBlZGVmIHN0cnVjdCBfX0NGRXJyb3IgKiBDRkVycm9yUmVmOwoKCgoKCmV4dGVybgpDRlR5
cGVJRCBDRkVycm9yR2V0VHlwZUlEKHZvaWQpIDsKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDRkVycm9yRG9tYWluUE9TSVggOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGRXJyb3JE
b21haW5PU1N0YXR1cyA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZFcnJvckRvbWFpbk1h
Y2ggOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGRXJyb3JEb21haW5Db2NvYSA7CgoKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXkgOwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGRXJyb3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5
IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkVycm9yTG9jYWxpemVkUmVjb3ZlcnlTdWdn
ZXN0aW9uS2V5IDsKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGRXJyb3JEZXNjcmlwdGlv
bktleSA7CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkVycm9yVW5kZXJseWluZ0Vycm9y
S2V5IDsKIyA4MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvQ0ZFcnJvci5oIiAzCmV4dGVybgpDRkVycm9yUmVmIENGRXJyb3JDcmVh
dGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBkb21haW4sIENGSW5kZXgg
Y29kZSwgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvKSA7CiMgOTYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGRXJyb3IuaCIgMwpl
eHRlcm4KQ0ZFcnJvclJlZiBDRkVycm9yQ3JlYXRlV2l0aFVzZXJJbmZvS2V5c0FuZFZhbHVlcyhD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIGRvbWFpbiwgQ0ZJbmRleCBjb2Rl
LCBjb25zdCB2b2lkICpjb25zdCAqdXNlckluZm9LZXlzLCBjb25zdCB2b2lkICpjb25zdCAqdXNl
ckluZm9WYWx1ZXMsIENGSW5kZXggbnVtVXNlckluZm9WYWx1ZXMpIDsKCgoKCgoKCmV4dGVybgpD
RlN0cmluZ1JlZiBDRkVycm9yR2V0RG9tYWluKENGRXJyb3JSZWYgZXJyKSA7CgoKCgoKCgpleHRl
cm4KQ0ZJbmRleCBDRkVycm9yR2V0Q29kZShDRkVycm9yUmVmIGVycikgOwojIDEyNCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZF
cnJvci5oIiAzCmV4dGVybgpDRkRpY3Rpb25hcnlSZWYgQ0ZFcnJvckNvcHlVc2VySW5mbyhDRkVy
cm9yUmVmIGVycikgOwojIDEzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZFcnJvci5oIiAzCmV4dGVybgpDRlN0cmluZ1JlZiBD
RkVycm9yQ29weURlc2NyaXB0aW9uKENGRXJyb3JSZWYgZXJyKSA7CiMgMTUwICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkVycm9y
LmgiIDMKZXh0ZXJuCkNGU3RyaW5nUmVmIENGRXJyb3JDb3B5RmFpbHVyZVJlYXNvbihDRkVycm9y
UmVmIGVycikgOwojIDE2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZFcnJvci5oIiAzCmV4dGVybgpDRlN0cmluZ1JlZiBDRkVy
cm9yQ29weVJlY292ZXJ5U3VnZ2VzdGlvbihDRkVycm9yUmVmIGVycikgOwoKCgp9CiMgMTIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJz
L0NGQnVuZGxlLmgiIDIgMwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91
bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlVSTC5oIiAxIDMKCgoKCgojZGVmaW5lIF9fQ09S
RUZPVU5EQVRJT05fQ0ZVUkxfXyAxCgoKCgoKCmV4dGVybiAiQyIgewoKZW51bSB7CiAgICBrQ0ZV
UkxQT1NJWFBhdGhTdHlsZSA9IDAsCiAgICBrQ0ZVUkxIRlNQYXRoU3R5bGUsCiAgICBrQ0ZVUkxX
aW5kb3dzUGF0aFN0eWxlCn07CnR5cGVkZWYgQ0ZJbmRleCBDRlVSTFBhdGhTdHlsZTsKCnR5cGVk
ZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkwgKiBDRlVSTFJlZjsKIyAzOCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZVUkwuaCIgMwpl
eHRlcm4KQ0ZUeXBlSUQgQ0ZVUkxHZXRUeXBlSUQodm9pZCk7CgoKCmV4dGVybgpDRlVSTFJlZiBD
RlVSTENyZWF0ZVdpdGhCeXRlcyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IFVJbnQ4
ICpVUkxCeXRlcywgQ0ZJbmRleCBsZW5ndGgsIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcsIENG
VVJMUmVmIGJhc2VVUkwpOwoKCgoKCmV4dGVybgpDRkRhdGFSZWYgQ0ZVUkxDcmVhdGVEYXRhKENG
QWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZVUkxSZWYgdXJsLCBDRlN0cmluZ0VuY29kaW5nIGVu
Y29kaW5nLCBCb29sZWFuIGVzY2FwZVdoaXRlc3BhY2UpOwoKCmV4dGVybgpDRlVSTFJlZiBDRlVS
TENyZWF0ZVdpdGhTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBV
UkxTdHJpbmcsIENGVVJMUmVmIGJhc2VVUkwpOwojIDcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlVSTC5oIiAzCmV4dGVybgpD
RlVSTFJlZiBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKENGQWxsb2NhdG9yUmVmIGFs
bG9jLCBjb25zdCBVSW50OCAqcmVsYXRpdmVVUkxCeXRlcywgQ0ZJbmRleCBsZW5ndGgsIENGU3Ry
aW5nRW5jb2RpbmcgZW5jb2RpbmcsIENGVVJMUmVmIGJhc2VVUkwsIEJvb2xlYW4gdXNlQ29tcGF0
aWJpbGl0eU1vZGUpIDsKIyA4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZVUkwuaCIgMwpleHRlcm4KQ0ZVUkxSZWYgQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmlu
Z1JlZiBmaWxlUGF0aCwgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlLCBCb29sZWFuIGlzRGlyZWN0
b3J5KTsKCmV4dGVybgpDRlVSTFJlZiBDRlVSTENyZWF0ZUZyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBjb25zdCBVSW50OCAqYnVmZmVyLCBDRklu
ZGV4IGJ1ZkxlbiwgQm9vbGVhbiBpc0RpcmVjdG9yeSk7CgoKCgoKCgpleHRlcm4KQ0ZVUkxSZWYg
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGhSZWxhdGl2ZVRvQmFzZShDRkFsbG9jYXRvclJl
ZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIGZpbGVQYXRoLCBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5
bGUsIEJvb2xlYW4gaXNEaXJlY3RvcnksIENGVVJMUmVmIGJhc2VVUkwpOwoKZXh0ZXJuCkNGVVJM
UmVmIENGVVJMQ3JlYXRlRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvblJlbGF0aXZlVG9CYXNl
KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgVUludDggKmJ1ZmZlciwgQ0ZJbmRleCBi
dWZMZW4sIEJvb2xlYW4gaXNEaXJlY3RvcnksIENGVVJMUmVmIGJhc2VVUkwpOwojIDEwNSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
Q0ZVUkwuaCIgMwpleHRlcm4KQm9vbGVhbiBDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihDRlVSTFJlZiB1cmwsIEJvb2xlYW4gcmVzb2x2ZUFnYWluc3RCYXNlLCBVSW50OCAqYnVmZmVy
LCBDRkluZGV4IG1heEJ1Zkxlbik7CgoKZXh0ZXJuCkNGVVJMUmVmIENGVVJMQ29weUFic29sdXRl
VVJMKENGVVJMUmVmIHJlbGF0aXZlVVJMKTsKCgpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZVUkxHZXRT
dHJpbmcoQ0ZVUkxSZWYgYW5VUkwpOwoKCmV4dGVybgpDRlVSTFJlZiBDRlVSTEdldEJhc2VVUkwo
Q0ZVUkxSZWYgYW5VUkwpOwojIDE4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZVUkwuaCIgMwpleHRlcm4KQm9vbGVhbiBDRlVS
TENhbkJlRGVjb21wb3NlZChDRlVSTFJlZiBhblVSTCk7CgoKCmV4dGVybgpDRlN0cmluZ1JlZiBD
RlVSTENvcHlTY2hlbWUoQ0ZVUkxSZWYgYW5VUkwpOwoKCmV4dGVybgpDRlN0cmluZ1JlZiBDRlVS
TENvcHlOZXRMb2NhdGlvbihDRlVSTFJlZiBhblVSTCk7CiMgMjAzICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlVSTC5oIiAzCmV4
dGVybgpDRlN0cmluZ1JlZiBDRlVSTENvcHlQYXRoKENGVVJMUmVmIGFuVVJMKTsKCmV4dGVybgpD
RlN0cmluZ1JlZiBDRlVSTENvcHlTdHJpY3RQYXRoKENGVVJMUmVmIGFuVVJMLCBCb29sZWFuICpp
c0Fic29sdXRlKTsKCmV4dGVybgpDRlN0cmluZ1JlZiBDRlVSTENvcHlGaWxlU3lzdGVtUGF0aChD
RlVSTFJlZiBhblVSTCwgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlKTsKCgoKZXh0ZXJuCkJvb2xl
YW4gQ0ZVUkxIYXNEaXJlY3RvcnlQYXRoKENGVVJMUmVmIGFuVVJMKTsKCgoKZXh0ZXJuCkNGU3Ry
aW5nUmVmIENGVVJMQ29weVJlc291cmNlU3BlY2lmaWVyKENGVVJMUmVmIGFuVVJMKTsKCmV4dGVy
bgpDRlN0cmluZ1JlZiBDRlVSTENvcHlIb3N0TmFtZShDRlVSTFJlZiBhblVSTCk7CgpleHRlcm4K
U0ludDMyIENGVVJMR2V0UG9ydE51bWJlcihDRlVSTFJlZiBhblVSTCk7CgpleHRlcm4KQ0ZTdHJp
bmdSZWYgQ0ZVUkxDb3B5VXNlck5hbWUoQ0ZVUkxSZWYgYW5VUkwpOwoKZXh0ZXJuCkNGU3RyaW5n
UmVmIENGVVJMQ29weVBhc3N3b3JkKENGVVJMUmVmIGFuVVJMKTsKCgoKCgoKZXh0ZXJuCkNGU3Ry
aW5nUmVmIENGVVJMQ29weVBhcmFtZXRlclN0cmluZyhDRlVSTFJlZiBhblVSTCwgQ0ZTdHJpbmdS
ZWYgY2hhcmFjdGVyc1RvTGVhdmVFc2NhcGVkKTsKCmV4dGVybgpDRlN0cmluZ1JlZiBDRlVSTENv
cHlRdWVyeVN0cmluZyhDRlVSTFJlZiBhblVSTCwgQ0ZTdHJpbmdSZWYgY2hhcmFjdGVyc1RvTGVh
dmVFc2NhcGVkKTsKCmV4dGVybgpDRlN0cmluZ1JlZiBDRlVSTENvcHlGcmFnbWVudChDRlVSTFJl
ZiBhblVSTCwgQ0ZTdHJpbmdSZWYgY2hhcmFjdGVyc1RvTGVhdmVFc2NhcGVkKTsKCmV4dGVybgpD
RlN0cmluZ1JlZiBDRlVSTENvcHlMYXN0UGF0aENvbXBvbmVudChDRlVSTFJlZiB1cmwpOwoKZXh0
ZXJuCkNGU3RyaW5nUmVmIENGVVJMQ29weVBhdGhFeHRlbnNpb24oQ0ZVUkxSZWYgdXJsKTsKCgoK
CgpleHRlcm4KQ0ZVUkxSZWYgQ0ZVUkxDcmVhdGVDb3B5QXBwZW5kaW5nUGF0aENvbXBvbmVudChD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGVVJMUmVmIHVybCwgQ0ZTdHJpbmdSZWYgcGF0aENv
bXBvbmVudCwgQm9vbGVhbiBpc0RpcmVjdG9yeSk7CgpleHRlcm4KQ0ZVUkxSZWYgQ0ZVUkxDcmVh
dGVDb3B5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IENGVVJMUmVmIHVybCk7CgpleHRlcm4KQ0ZVUkxSZWYgQ0ZVUkxDcmVhdGVDb3B5QXBwZW5kaW5n
UGF0aEV4dGVuc2lvbihDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGVVJMUmVmIHVybCwgQ0ZT
dHJpbmdSZWYgZXh0ZW5zaW9uKTsKCmV4dGVybgpDRlVSTFJlZiBDRlVSTENyZWF0ZUNvcHlEZWxl
dGluZ1BhdGhFeHRlbnNpb24oQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlVSTFJlZiB1cmwp
OwojIDI3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvQ0ZVUkwuaCIgMwpleHRlcm4KQ0ZJbmRleCBDRlVSTEdldEJ5dGVzKENGVVJM
UmVmIHVybCwgVUludDggKmJ1ZmZlciwgQ0ZJbmRleCBidWZmZXJMZW5ndGgpIDsKCmVudW0gewog
a0NGVVJMQ29tcG9uZW50U2NoZW1lID0gMSwKIGtDRlVSTENvbXBvbmVudE5ldExvY2F0aW9uID0g
MiwKIGtDRlVSTENvbXBvbmVudFBhdGggPSAzLAoga0NGVVJMQ29tcG9uZW50UmVzb3VyY2VTcGVj
aWZpZXIgPSA0LAoKIGtDRlVSTENvbXBvbmVudFVzZXIgPSA1LAoga0NGVVJMQ29tcG9uZW50UGFz
c3dvcmQgPSA2LAoga0NGVVJMQ29tcG9uZW50VXNlckluZm8gPSA3LAoga0NGVVJMQ29tcG9uZW50
SG9zdCA9IDgsCiBrQ0ZVUkxDb21wb25lbnRQb3J0ID0gOSwKIGtDRlVSTENvbXBvbmVudFBhcmFt
ZXRlclN0cmluZyA9IDEwLAoga0NGVVJMQ29tcG9uZW50UXVlcnkgPSAxMSwKIGtDRlVSTENvbXBv
bmVudEZyYWdtZW50ID0gMTIKfTsKdHlwZWRlZiBDRkluZGV4IENGVVJMQ29tcG9uZW50VHlwZTsK
IyAzNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0NGVVJMLmgiIDMKZXh0ZXJuCkNGUmFuZ2UgQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JD
b21wb25lbnQoQ0ZVUkxSZWYgdXJsLCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50LCBDRlJh
bmdlICpyYW5nZUluY2x1ZGluZ1NlcGFyYXRvcnMpIDsKIyAzNzEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVVJMLmgiIDMKZXh0
ZXJuCkNGU3RyaW5nUmVmIENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNpbmdQZXJjZW50RXNjYXBl
cyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIG9yaWdpbmFsU3RyaW5nLCBD
RlN0cmluZ1JlZiBjaGFyYWN0ZXJzVG9MZWF2ZUVzY2FwZWQpOwoKCgpleHRlcm4KQ0ZTdHJpbmdS
ZWYgQ0ZVUkxDcmVhdGVTdHJpbmdCeVJlcGxhY2luZ1BlcmNlbnRFc2NhcGVzVXNpbmdFbmNvZGlu
ZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIG9yaWdTdHJpbmcsIENGU3Ry
aW5nUmVmIGNoYXJzVG9MZWF2ZUVzY2FwZWQsIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpIDsK
IyAzOTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0NGVVJMLmgiIDMKZXh0ZXJuCkNGU3RyaW5nUmVmIENGVVJMQ3JlYXRlU3RyaW5n
QnlBZGRpbmdQZXJjZW50RXNjYXBlcyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5n
UmVmIG9yaWdpbmFsU3RyaW5nLCBDRlN0cmluZ1JlZiBjaGFyYWN0ZXJzVG9MZWF2ZVVuZXNjYXBl
ZCwgQ0ZTdHJpbmdSZWYgbGVnYWxVUkxDaGFyYWN0ZXJzVG9CZUVzY2FwZWQsIENGU3RyaW5nRW5j
b2RpbmcgZW5jb2RpbmcpOwoKCgoKCgoKZXh0ZXJuCkNGVVJMUmVmIENGVVJMQ3JlYXRlRmlsZVJl
ZmVyZW5jZVVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGVVJMUmVmIHVybCwgQ0ZFcnJv
clJlZiAqZXJyb3IpIDsKCgoKCgoKCmV4dGVybgpDRlVSTFJlZiBDRlVSTENyZWF0ZUZpbGVQYXRo
VVJMKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZVUkxSZWYgdXJsLCBDRkVycm9yUmVmICpl
cnJvcikgOwoKCgoKCnN0cnVjdCBGU1JlZjsKCmV4dGVybgpDRlVSTFJlZiBDRlVSTENyZWF0ZUZy
b21GU1JlZihDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IHN0cnVjdCBGU1JlZiAqZnNS
ZWYpOwoKZXh0ZXJuCkJvb2xlYW4gQ0ZVUkxHZXRGU1JlZihDRlVSTFJlZiB1cmwsIHN0cnVjdCBG
U1JlZiAqZnNSZWYpOwojIDQ1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZVUkwuaCIgMwpleHRlcm4KQm9vbGVhbiBDRlVSTENv
cHlSZXNvdXJjZVByb3BlcnR5Rm9yS2V5KENGVVJMUmVmIHVybCwgQ0ZTdHJpbmdSZWYga2V5LCB2
b2lkICpwcm9wZXJ0eVZhbHVlVHlwZVJlZlB0ciwgQ0ZFcnJvclJlZiAqZXJyb3IpIDsKIyA0NjMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFk
ZXJzL0NGVVJMLmgiIDMKZXh0ZXJuCkNGRGljdGlvbmFyeVJlZiBDRlVSTENvcHlSZXNvdXJjZVBy
b3BlcnRpZXNGb3JLZXlzKENGVVJMUmVmIHVybCwgQ0ZBcnJheVJlZiBrZXlzLCBDRkVycm9yUmVm
ICplcnJvcikgOwojIDQ3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZVUkwuaCIgMwpleHRlcm4KQm9vbGVhbiBDRlVSTFNldFJl
c291cmNlUHJvcGVydHlGb3JLZXkoQ0ZVUkxSZWYgdXJsLCBDRlN0cmluZ1JlZiBrZXksIENGVHlw
ZVJlZiBwcm9wZXJ0VmFsdWUsIENGRXJyb3JSZWYgKmVycm9yKSA7CiMgNDg2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlVSTC5o
IiAzCmV4dGVybgpCb29sZWFuIENGVVJMU2V0UmVzb3VyY2VQcm9wZXJ0aWVzRm9yS2V5cyhDRlVS
TFJlZiB1cmwsIENGRGljdGlvbmFyeVJlZiBrZXllZFByb3BlcnR5VmFsdWVzLCBDRkVycm9yUmVm
ICplcnJvcikgOwoKCgpleHRlcm4Kdm9pZCBDRlVSTENsZWFyUmVzb3VyY2VQcm9wZXJ0eUNhY2hl
Rm9yS2V5KENGVVJMUmVmIHVybCwgQ0ZTdHJpbmdSZWYga2V5KSA7CgoKCmV4dGVybgp2b2lkIENG
VVJMQ2xlYXJSZXNvdXJjZVByb3BlcnR5Q2FjaGUoQ0ZVUkxSZWYgdXJsKSA7CgoKCgoKCgpleHRl
cm4Kdm9pZCBDRlVSTFNldFRlbXBvcmFyeVJlc291cmNlUHJvcGVydHlGb3JLZXkoQ0ZVUkxSZWYg
dXJsLCBDRlN0cmluZ1JlZiBrZXksIENGVHlwZVJlZiBwcm9wZXJ0eVZhbHVlKSA7CiMgNTE4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9DRlVSTC5oIiAzCmV4dGVybgpCb29sZWFuIENGVVJMUmVzb3VyY2VJc1JlYWNoYWJsZShDRlVS
TFJlZiB1cmwsIENGRXJyb3JSZWYgKmVycm9yKSA7CgoKCgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdS
ZWYga0NGVVJMTmFtZUtleSA7CgoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTExvY2Fs
aXplZE5hbWVLZXkgOwoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxJc1JlZ3VsYXJG
aWxlS2V5IDsKCgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMSXNEaXJlY3RvcnlLZXkg
OwoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxJc1N5bWJvbGljTGlua0tleSA7CgoK
ZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTElzVm9sdW1lS2V5IDsKCgpleHRlcm4KY29u
c3QgQ0ZTdHJpbmdSZWYga0NGVVJMSXNQYWNrYWdlS2V5IDsKCgpleHRlcm4KY29uc3QgQ0ZTdHJp
bmdSZWYga0NGVVJMSXNTeXN0ZW1JbW11dGFibGVLZXkgOwoKCmV4dGVybgpjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZVUkxJc1VzZXJJbW11dGFibGVLZXkgOwoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0ZVUkxJc0hpZGRlbktleSA7CgoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTEhh
c0hpZGRlbkV4dGVuc2lvbktleSA7CgoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTENy
ZWF0aW9uRGF0ZUtleSA7CgoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTENvbnRlbnRB
Y2Nlc3NEYXRlS2V5IDsKCgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMQ29udGVudE1v
ZGlmaWNhdGlvbkRhdGVLZXkgOwoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxBdHRy
aWJ1dGVNb2RpZmljYXRpb25EYXRlS2V5IDsKCgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NG
VVJMTGlua0NvdW50S2V5IDsKCgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMUGFyZW50
RGlyZWN0b3J5VVJMS2V5IDsKCgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMVm9sdW1l
VVJMS2V5IDsKCgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMVHlwZUlkZW50aWZpZXJL
ZXkgOwoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxMb2NhbGl6ZWRUeXBlRGVzY3Jp
cHRpb25LZXkgOwoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxMYWJlbE51bWJlcktl
eSA7CgoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTExhYmVsQ29sb3JLZXkgOwoKCmV4
dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxMb2NhbGl6ZWRMYWJlbEtleSA7CgoKZXh0ZXJu
CmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTEVmZmVjdGl2ZUljb25LZXkgOwoKCmV4dGVybgpjb25z
dCBDRlN0cmluZ1JlZiBrQ0ZVUkxDdXN0b21JY29uS2V5IDsKCgoKCgpleHRlcm4KY29uc3QgQ0ZT
dHJpbmdSZWYga0NGVVJMRmlsZVNpemVLZXkgOwoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZVUkxGaWxlQWxsb2NhdGVkU2l6ZUtleSA7CgoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtD
RlVSTElzQWxpYXNGaWxlS2V5IDsKCgoKCgoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZV
UkxWb2x1bWVMb2NhbGl6ZWRGb3JtYXREZXNjcmlwdGlvbktleSA7CgoKZXh0ZXJuCmNvbnN0IENG
U3RyaW5nUmVmIGtDRlVSTFZvbHVtZVRvdGFsQ2FwYWNpdHlLZXkgOwoKCmV4dGVybgpjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZVUkxWb2x1bWVBdmFpbGFibGVDYXBhY2l0eUtleSA7CgoKZXh0ZXJuCmNv
bnN0IENGU3RyaW5nUmVmIGtDRlVSTFZvbHVtZVJlc291cmNlQ291bnRLZXkgOwoKCmV4dGVybgpj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxWb2x1bWVTdXBwb3J0c1BlcnNpc3RlbnRJRHNLZXkgOwoK
CmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxWb2x1bWVTdXBwb3J0c1N5bWJvbGljTGlu
a3NLZXkgOwoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxWb2x1bWVTdXBwb3J0c0hh
cmRMaW5rc0tleSA7CgoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTFZvbHVtZVN1cHBv
cnRzSm91cm5hbGluZ0tleSA7CgoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTFZvbHVt
ZUlzSm91cm5hbGluZ0tleSA7CgoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTFZvbHVt
ZVN1cHBvcnRzU3BhcnNlRmlsZXNLZXkgOwoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZV
UkxWb2x1bWVTdXBwb3J0c1plcm9SdW5zS2V5IDsKCgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYg
a0NGVVJMVm9sdW1lU3VwcG9ydHNDYXNlU2Vuc2l0aXZlTmFtZXNLZXkgOwoKCmV4dGVybgpjb25z
dCBDRlN0cmluZ1JlZiBrQ0ZVUkxWb2x1bWVTdXBwb3J0c0Nhc2VQcmVzZXJ2ZWROYW1lc0tleSA7
CgoKZW51bSB7CiAgICBrQ0ZVUkxCb29rbWFya0NyZWF0aW9uUHJlZmVyRmlsZUlEUmVzb2x1dGlv
bk1hc2sgPSAoIDFVTCA8PCA4ICksCiAgICBrQ0ZVUkxCb29rbWFya0NyZWF0aW9uTWluaW1hbEJv
b2ttYXJrTWFzayA9ICggMVVMIDw8IDkgKSwKICAgIGtDRlVSTEJvb2ttYXJrQ3JlYXRpb25TdWl0
YWJsZUZvckJvb2ttYXJrRmlsZSA9ICggMVVMIDw8IDEwICksCn07CnR5cGVkZWYgQ0ZPcHRpb25G
bGFncyBDRlVSTEJvb2ttYXJrQ3JlYXRpb25PcHRpb25zOwoKZW51bSB7CiAgICBrQ0ZCb29rbWFy
a1Jlc29sdXRpb25XaXRob3V0VUlNYXNrID0gKCAxVUwgPDwgOCApLAogICAga0NGQm9va21hcmtS
ZXNvbHV0aW9uV2l0aG91dE1vdW50aW5nTWFzayA9ICggMVVMIDw8IDkgKSwKfTsKdHlwZWRlZiBD
Rk9wdGlvbkZsYWdzIENGVVJMQm9va21hcmtSZXNvbHV0aW9uT3B0aW9uczsKCnR5cGVkZWYgQ0ZP
cHRpb25GbGFncyBDRlVSTEJvb2ttYXJrRmlsZUNyZWF0aW9uT3B0aW9uczsKIyA3MjEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NG
VVJMLmgiIDMKQ0ZEYXRhUmVmIENGVVJMQ3JlYXRlQm9va21hcmtEYXRhICggQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBDRlVSTFJlZiB1cmwsIENGVVJMQm9va21hcmtDcmVhdGlvbk9wdGlvbnMg
b3B0aW9ucywgQ0ZBcnJheVJlZiByZXNvdXJjZVByb3BlcnRpZXNUb0luY2x1ZGUsIENGVVJMUmVm
IHJlbGF0aXZlVG9VUkwsIENGRXJyb3JSZWYqIGVycm9yICkgOwojIDczOSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZVUkwuaCIg
MwpDRlVSTFJlZiBDRlVSTENyZWF0ZUJ5UmVzb2x2aW5nQm9va21hcmtEYXRhICggQ0ZBbGxvY2F0
b3JSZWYgYWxsb2NhdG9yLCBDRkRhdGFSZWYgYm9va21hcmssIENGVVJMQm9va21hcmtSZXNvbHV0
aW9uT3B0aW9ucyBvcHRpb25zLCBDRlVSTFJlZiByZWxhdGl2ZVRvVVJMLCBDRkFycmF5UmVmIHJl
c291cmNlUHJvcGVydGllc1RvSW5jbHVkZSwgQm9vbGVhbiogaXNTdGFsZSwgQ0ZFcnJvclJlZiog
ZXJyb3IgKSA7CiMgNzQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9DRlVSTC5oIiAzCkNGRGljdGlvbmFyeVJlZiBDRlVSTENyZWF0
ZVJlc291cmNlUHJvcGVydGllc0ZvcktleXNGcm9tQm9va21hcmtEYXRhICggQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBDRkFycmF5UmVmIHJlc291cmNlUHJvcGVydGllc1RvUmV0dXJuLCBDRkRh
dGFSZWYgYm9va21hcmsgKSA7CiMgNzU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlVSTC5oIiAzCkNGVHlwZVJlZiBDRlVSTENy
ZWF0ZVJlc291cmNlUHJvcGVydHlGb3JLZXlGcm9tQm9va21hcmtEYXRhKCBDRkFsbG9jYXRvclJl
ZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIHJlc291cmNlUHJvcGVydHlLZXksIENGRGF0YVJlZiBi
b29rbWFyayApIDsKIyA3NjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVVJMLmgiIDMKQ0ZEYXRhUmVmIENGVVJMQ3JlYXRlQm9v
a21hcmtEYXRhRnJvbUZpbGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlVSTFJlZiBmaWxl
VVJMLCBDRkVycm9yUmVmICplcnJvclJlZiApOwojIDc4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZVUkwuaCIgMwpCb29sZWFu
IENGVVJMV3JpdGVCb29rbWFya0RhdGFUb0ZpbGUoIENGRGF0YVJlZiBib29rbWFya1JlZiwgQ0ZV
UkxSZWYgZmlsZVVSTCwgQ0ZVUkxCb29rbWFya0ZpbGVDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucywg
Q0ZFcnJvclJlZiAqZXJyb3JSZWYgKTsKIyA3OTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVVJMLmgiIDMKQ0ZEYXRhUmVmIENG
VVJMQ3JlYXRlQm9va21hcmtEYXRhRnJvbUFsaWFzUmVjb3JkICggQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yUmVmLCBDRkRhdGFSZWYgYWxpYXNSZWNvcmREYXRhUmVmICk7CgoKCn0KIyAxNCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
Q0ZCdW5kbGUuaCIgMiAzCgpleHRlcm4gIkMiIHsKCnR5cGVkZWYgc3RydWN0IF9fQ0ZCdW5kbGUg
KkNGQnVuZGxlUmVmOwp0eXBlZGVmIHN0cnVjdCBfX0NGQnVuZGxlICpDRlBsdWdJblJlZjsKCgpl
eHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9uS2V5
OwoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRkJ1bmRsZUV4ZWN1dGFibGVLZXk7CgpleHRl
cm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGQnVuZGxlSWRlbnRpZmllcktleTsKCmV4dGVybgpjb25z
dCBDRlN0cmluZ1JlZiBrQ0ZCdW5kbGVWZXJzaW9uS2V5OwoKCgpleHRlcm4KY29uc3QgQ0ZTdHJp
bmdSZWYga0NGQnVuZGxlRGV2ZWxvcG1lbnRSZWdpb25LZXk7CgpleHRlcm4KY29uc3QgQ0ZTdHJp
bmdSZWYga0NGQnVuZGxlTmFtZUtleTsKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZCdW5k
bGVMb2NhbGl6YXRpb25zS2V5IDsKCgoKCmV4dGVybgpDRkJ1bmRsZVJlZiBDRkJ1bmRsZUdldE1h
aW5CdW5kbGUodm9pZCk7CgpleHRlcm4KQ0ZCdW5kbGVSZWYgQ0ZCdW5kbGVHZXRCdW5kbGVXaXRo
SWRlbnRpZmllcihDRlN0cmluZ1JlZiBidW5kbGVJRCk7CgoKCgoKCgpleHRlcm4KQ0ZBcnJheVJl
ZiBDRkJ1bmRsZUdldEFsbEJ1bmRsZXModm9pZCk7CgoKCgoKZXh0ZXJuCkNGVHlwZUlEIENGQnVu
ZGxlR2V0VHlwZUlEKHZvaWQpOwoKZXh0ZXJuCkNGQnVuZGxlUmVmIENGQnVuZGxlQ3JlYXRlKENG
QWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZVUkxSZWYgYnVuZGxlVVJMKTsKCgpleHRlcm4KQ0ZB
cnJheVJlZiBDRkJ1bmRsZUNyZWF0ZUJ1bmRsZXNGcm9tRGlyZWN0b3J5KENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciwgQ0ZVUkxSZWYgZGlyZWN0b3J5VVJMLCBDRlN0cmluZ1JlZiBidW5kbGVUeXBl
KTsKCgoKCgpleHRlcm4KQ0ZVUkxSZWYgQ0ZCdW5kbGVDb3B5QnVuZGxlVVJMKENGQnVuZGxlUmVm
IGJ1bmRsZSk7CgpleHRlcm4KQ0ZUeXBlUmVmIENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlv
bmFyeUtleShDRkJ1bmRsZVJlZiBidW5kbGUsIENGU3RyaW5nUmVmIGtleSk7CgoKCmV4dGVybgpD
RkRpY3Rpb25hcnlSZWYgQ0ZCdW5kbGVHZXRJbmZvRGljdGlvbmFyeShDRkJ1bmRsZVJlZiBidW5k
bGUpOwoKCgpleHRlcm4KQ0ZEaWN0aW9uYXJ5UmVmIENGQnVuZGxlR2V0TG9jYWxJbmZvRGljdGlv
bmFyeShDRkJ1bmRsZVJlZiBidW5kbGUpOwoKCmV4dGVybgp2b2lkIENGQnVuZGxlR2V0UGFja2Fn
ZUluZm8oQ0ZCdW5kbGVSZWYgYnVuZGxlLCBVSW50MzIgKnBhY2thZ2VUeXBlLCBVSW50MzIgKnBh
Y2thZ2VDcmVhdG9yKTsKCmV4dGVybgpDRlN0cmluZ1JlZiBDRkJ1bmRsZUdldElkZW50aWZpZXIo
Q0ZCdW5kbGVSZWYgYnVuZGxlKTsKCmV4dGVybgpVSW50MzIgQ0ZCdW5kbGVHZXRWZXJzaW9uTnVt
YmVyKENGQnVuZGxlUmVmIGJ1bmRsZSk7CgpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZCdW5kbGVHZXRE
ZXZlbG9wbWVudFJlZ2lvbihDRkJ1bmRsZVJlZiBidW5kbGUpOwoKZXh0ZXJuCkNGVVJMUmVmIENG
QnVuZGxlQ29weVN1cHBvcnRGaWxlc0RpcmVjdG9yeVVSTChDRkJ1bmRsZVJlZiBidW5kbGUpOwoK
ZXh0ZXJuCkNGVVJMUmVmIENGQnVuZGxlQ29weVJlc291cmNlc0RpcmVjdG9yeVVSTChDRkJ1bmRs
ZVJlZiBidW5kbGUpOwoKZXh0ZXJuCkNGVVJMUmVmIENGQnVuZGxlQ29weVByaXZhdGVGcmFtZXdv
cmtzVVJMKENGQnVuZGxlUmVmIGJ1bmRsZSk7CgpleHRlcm4KQ0ZVUkxSZWYgQ0ZCdW5kbGVDb3B5
U2hhcmVkRnJhbWV3b3Jrc1VSTChDRkJ1bmRsZVJlZiBidW5kbGUpOwoKZXh0ZXJuCkNGVVJMUmVm
IENGQnVuZGxlQ29weVNoYXJlZFN1cHBvcnRVUkwoQ0ZCdW5kbGVSZWYgYnVuZGxlKTsKCmV4dGVy
bgpDRlVSTFJlZiBDRkJ1bmRsZUNvcHlCdWlsdEluUGx1Z0luc1VSTChDRkJ1bmRsZVJlZiBidW5k
bGUpOwoKCgoKCgpleHRlcm4KQ0ZEaWN0aW9uYXJ5UmVmIENGQnVuZGxlQ29weUluZm9EaWN0aW9u
YXJ5SW5EaXJlY3RvcnkoQ0ZVUkxSZWYgYnVuZGxlVVJMKTsKCmV4dGVybgpCb29sZWFuIENGQnVu
ZGxlR2V0UGFja2FnZUluZm9JbkRpcmVjdG9yeShDRlVSTFJlZiB1cmwsIFVJbnQzMiAqcGFja2Fn
ZVR5cGUsIFVJbnQzMiAqcGFja2FnZUNyZWF0b3IpOwoKCgpleHRlcm4KQ0ZVUkxSZWYgQ0ZCdW5k
bGVDb3B5UmVzb3VyY2VVUkwoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBDRlN0cmluZ1JlZiByZXNvdXJj
ZU5hbWUsIENGU3RyaW5nUmVmIHJlc291cmNlVHlwZSwgQ0ZTdHJpbmdSZWYgc3ViRGlyTmFtZSk7
CgpleHRlcm4KQ0ZBcnJheVJlZiBDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTHNPZlR5cGUoQ0ZCdW5k
bGVSZWYgYnVuZGxlLCBDRlN0cmluZ1JlZiByZXNvdXJjZVR5cGUsIENGU3RyaW5nUmVmIHN1YkRp
ck5hbWUpOwoKZXh0ZXJuCkNGU3RyaW5nUmVmIENGQnVuZGxlQ29weUxvY2FsaXplZFN0cmluZyhD
RkJ1bmRsZVJlZiBidW5kbGUsIENGU3RyaW5nUmVmIGtleSwgQ0ZTdHJpbmdSZWYgdmFsdWUsIENG
U3RyaW5nUmVmIHRhYmxlTmFtZSkgX19hdHRyaWJ1dGVfXygoZm9ybWF0X2FyZygyKSkpOwoKI2Rl
ZmluZSBDRkNvcHlMb2NhbGl6ZWRTdHJpbmcoa2V5LGNvbW1lbnQpIENGQnVuZGxlQ29weUxvY2Fs
aXplZFN0cmluZyhDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSwgKGtleSksIChrZXkpLCBOVUxMKQoK
I2RlZmluZSBDRkNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tVGFibGUoa2V5LHRibCxjb21tZW50KSBD
RkJ1bmRsZUNvcHlMb2NhbGl6ZWRTdHJpbmcoQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCksIChrZXkp
LCAoa2V5KSwgKHRibCkpCgojZGVmaW5lIENGQ29weUxvY2FsaXplZFN0cmluZ0Zyb21UYWJsZUlu
QnVuZGxlKGtleSx0YmwsYnVuZGxlLGNvbW1lbnQpIENGQnVuZGxlQ29weUxvY2FsaXplZFN0cmlu
ZygoYnVuZGxlKSwgKGtleSksIChrZXkpLCAodGJsKSkKCiNkZWZpbmUgQ0ZDb3B5TG9jYWxpemVk
U3RyaW5nV2l0aERlZmF1bHRWYWx1ZShrZXksdGJsLGJ1bmRsZSx2YWx1ZSxjb21tZW50KSBDRkJ1
bmRsZUNvcHlMb2NhbGl6ZWRTdHJpbmcoKGJ1bmRsZSksIChrZXkpLCAodmFsdWUpLCAodGJsKSkK
IyAxNjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0NGQnVuZGxlLmgiIDMKZXh0ZXJuCkNGVVJMUmVmIENGQnVuZGxlQ29weVJlc291
cmNlVVJMSW5EaXJlY3RvcnkoQ0ZVUkxSZWYgYnVuZGxlVVJMLCBDRlN0cmluZ1JlZiByZXNvdXJj
ZU5hbWUsIENGU3RyaW5nUmVmIHJlc291cmNlVHlwZSwgQ0ZTdHJpbmdSZWYgc3ViRGlyTmFtZSk7
CgpleHRlcm4KQ0ZBcnJheVJlZiBDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTHNPZlR5cGVJbkRpcmVj
dG9yeShDRlVSTFJlZiBidW5kbGVVUkwsIENGU3RyaW5nUmVmIHJlc291cmNlVHlwZSwgQ0ZTdHJp
bmdSZWYgc3ViRGlyTmFtZSk7CgoKCgoKCmV4dGVybgpDRkFycmF5UmVmIENGQnVuZGxlQ29weUJ1
bmRsZUxvY2FsaXphdGlvbnMoQ0ZCdW5kbGVSZWYgYnVuZGxlKTsKCgpleHRlcm4KQ0ZBcnJheVJl
ZiBDRkJ1bmRsZUNvcHlQcmVmZXJyZWRMb2NhbGl6YXRpb25zRnJvbUFycmF5KENGQXJyYXlSZWYg
bG9jQXJyYXkpOwoKCgoKCgpleHRlcm4KQ0ZBcnJheVJlZiBDRkJ1bmRsZUNvcHlMb2NhbGl6YXRp
b25zRm9yUHJlZmVyZW5jZXMoQ0ZBcnJheVJlZiBsb2NBcnJheSwgQ0ZBcnJheVJlZiBwcmVmQXJy
YXkpIDsKIyAxOTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL0NGQnVuZGxlLmgiIDMKZXh0ZXJuCkNGVVJMUmVmIENGQnVuZGxlQ29w
eVJlc291cmNlVVJMRm9yTG9jYWxpemF0aW9uKENGQnVuZGxlUmVmIGJ1bmRsZSwgQ0ZTdHJpbmdS
ZWYgcmVzb3VyY2VOYW1lLCBDRlN0cmluZ1JlZiByZXNvdXJjZVR5cGUsIENGU3RyaW5nUmVmIHN1
YkRpck5hbWUsIENGU3RyaW5nUmVmIGxvY2FsaXphdGlvbk5hbWUpOwoKZXh0ZXJuCkNGQXJyYXlS
ZWYgQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkxzT2ZUeXBlRm9yTG9jYWxpemF0aW9uKENGQnVuZGxl
UmVmIGJ1bmRsZSwgQ0ZTdHJpbmdSZWYgcmVzb3VyY2VUeXBlLCBDRlN0cmluZ1JlZiBzdWJEaXJO
YW1lLCBDRlN0cmluZ1JlZiBsb2NhbGl6YXRpb25OYW1lKTsKIyAyMTIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQnVuZGxlLmgi
IDMKZXh0ZXJuCkNGRGljdGlvbmFyeVJlZiBDRkJ1bmRsZUNvcHlJbmZvRGljdGlvbmFyeUZvclVS
TChDRlVSTFJlZiB1cmwpIDsKCgoKCgpleHRlcm4KQ0ZBcnJheVJlZiBDRkJ1bmRsZUNvcHlMb2Nh
bGl6YXRpb25zRm9yVVJMKENGVVJMUmVmIHVybCkgOwoKCgoKCgpleHRlcm4KQ0ZBcnJheVJlZiBD
RkJ1bmRsZUNvcHlFeGVjdXRhYmxlQXJjaGl0ZWN0dXJlc0ZvclVSTChDRlVSTFJlZiB1cmwpIDsK
IyAyMzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0NGQnVuZGxlLmgiIDMKZXh0ZXJuCkNGVVJMUmVmIENGQnVuZGxlQ29weUV4ZWN1
dGFibGVVUkwoQ0ZCdW5kbGVSZWYgYnVuZGxlKTsKCgplbnVtIHsKICAgIGtDRkJ1bmRsZUV4ZWN1
dGFibGVBcmNoaXRlY3R1cmVJMzg2ID0gMHgwMDAwMDAwNywKICAgIGtDRkJ1bmRsZUV4ZWN1dGFi
bGVBcmNoaXRlY3R1cmVQUEMgPSAweDAwMDAwMDEyLAogICAga0NGQnVuZGxlRXhlY3V0YWJsZUFy
Y2hpdGVjdHVyZVg4Nl82NCA9IDB4MDEwMDAwMDcsCiAgICBrQ0ZCdW5kbGVFeGVjdXRhYmxlQXJj
aGl0ZWN0dXJlUFBDNjQgPSAweDAxMDAwMDEyCn07CgoKZXh0ZXJuCkNGQXJyYXlSZWYgQ0ZCdW5k
bGVDb3B5RXhlY3V0YWJsZUFyY2hpdGVjdHVyZXMoQ0ZCdW5kbGVSZWYgYnVuZGxlKSA7CgoKCgoK
ZXh0ZXJuCkJvb2xlYW4gQ0ZCdW5kbGVQcmVmbGlnaHRFeGVjdXRhYmxlKENGQnVuZGxlUmVmIGJ1
bmRsZSwgQ0ZFcnJvclJlZiAqZXJyb3IpIDsKCgoKCgoKZXh0ZXJuCkJvb2xlYW4gQ0ZCdW5kbGVM
b2FkRXhlY3V0YWJsZUFuZFJldHVybkVycm9yKENGQnVuZGxlUmVmIGJ1bmRsZSwgQ0ZFcnJvclJl
ZiAqZXJyb3IpIDsKCgoKCgpleHRlcm4KQm9vbGVhbiBDRkJ1bmRsZUxvYWRFeGVjdXRhYmxlKENG
QnVuZGxlUmVmIGJ1bmRsZSk7CgpleHRlcm4KQm9vbGVhbiBDRkJ1bmRsZUlzRXhlY3V0YWJsZUxv
YWRlZChDRkJ1bmRsZVJlZiBidW5kbGUpOwoKZXh0ZXJuCnZvaWQgQ0ZCdW5kbGVVbmxvYWRFeGVj
dXRhYmxlKENGQnVuZGxlUmVmIGJ1bmRsZSk7CgpleHRlcm4Kdm9pZCAqQ0ZCdW5kbGVHZXRGdW5j
dGlvblBvaW50ZXJGb3JOYW1lKENGQnVuZGxlUmVmIGJ1bmRsZSwgQ0ZTdHJpbmdSZWYgZnVuY3Rp
b25OYW1lKTsKCmV4dGVybgp2b2lkIENGQnVuZGxlR2V0RnVuY3Rpb25Qb2ludGVyc0Zvck5hbWVz
KENGQnVuZGxlUmVmIGJ1bmRsZSwgQ0ZBcnJheVJlZiBmdW5jdGlvbk5hbWVzLCB2b2lkICpmdGJs
W10pOwoKZXh0ZXJuCnZvaWQgKkNGQnVuZGxlR2V0RGF0YVBvaW50ZXJGb3JOYW1lKENGQnVuZGxl
UmVmIGJ1bmRsZSwgQ0ZTdHJpbmdSZWYgc3ltYm9sTmFtZSk7CgpleHRlcm4Kdm9pZCBDRkJ1bmRs
ZUdldERhdGFQb2ludGVyc0Zvck5hbWVzKENGQnVuZGxlUmVmIGJ1bmRsZSwgQ0ZBcnJheVJlZiBz
eW1ib2xOYW1lcywgdm9pZCAqc3RibFtdKTsKCmV4dGVybgpDRlVSTFJlZiBDRkJ1bmRsZUNvcHlB
dXhpbGlhcnlFeGVjdXRhYmxlVVJMKENGQnVuZGxlUmVmIGJ1bmRsZSwgQ0ZTdHJpbmdSZWYgZXhl
Y3V0YWJsZU5hbWUpOwojIDMwNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZCdW5kbGUuaCIgMwpleHRlcm4KQ0ZQbHVnSW5SZWYg
Q0ZCdW5kbGVHZXRQbHVnSW4oQ0ZCdW5kbGVSZWYgYnVuZGxlKTsKCgoKCnR5cGVkZWYgaW50IENG
QnVuZGxlUmVmTnVtOwoKCgoKZXh0ZXJuCkNGQnVuZGxlUmVmTnVtIENGQnVuZGxlT3BlbkJ1bmRs
ZVJlc291cmNlTWFwKENGQnVuZGxlUmVmIGJ1bmRsZSk7CgoKCgoKCmV4dGVybgpTSW50MzIgQ0ZC
dW5kbGVPcGVuQnVuZGxlUmVzb3VyY2VGaWxlcyhDRkJ1bmRsZVJlZiBidW5kbGUsIENGQnVuZGxl
UmVmTnVtICpyZWZOdW0sIENGQnVuZGxlUmVmTnVtICpsb2NhbGl6ZWRSZWZOdW0pOwoKCgpleHRl
cm4Kdm9pZCBDRkJ1bmRsZUNsb3NlQnVuZGxlUmVzb3VyY2VNYXAoQ0ZCdW5kbGVSZWYgYnVuZGxl
LCBDRkJ1bmRsZVJlZk51bSByZWZOdW0pOwoKfQojIDQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRm91bmRhdGlvbi5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9DRkJ5dGVPcmRlci5oIiAxIDMKCgoKCgojZGVmaW5lIF9fQ09SRUZPVU5EQVRJ
T05fQ0ZCWVRFT1JERVJfXyAxCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmtlcm4vT1NCeXRlT3Jk
ZXIuaCIgMSAzIDQKIyAzMCAiL3Vzci9pbmNsdWRlL2xpYmtlcm4vT1NCeXRlT3JkZXIuaCIgMyA0
CiNkZWZpbmUgX09TX09TQllURU9SREVSX0ggCgoKCgoKI2RlZmluZSBPU1N3YXBDb25zdEludDE2
KHgpIF9fREFSV0lOX09TU3dhcENvbnN0SW50MTYoeCkKI2RlZmluZSBPU1N3YXBDb25zdEludDMy
KHgpIF9fREFSV0lOX09TU3dhcENvbnN0SW50MzIoeCkKI2RlZmluZSBPU1N3YXBDb25zdEludDY0
KHgpIF9fREFSV0lOX09TU3dhcENvbnN0SW50NjQoeCkKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
bGlia2Vybi9pMzg2L09TQnl0ZU9yZGVyLmgiIDEgMyA0CiMgMzAgIi91c3IvaW5jbHVkZS9saWJr
ZXJuL2kzODYvT1NCeXRlT3JkZXIuaCIgMyA0CiNkZWZpbmUgX09TX09TQllURU9SREVSSTM4Nl9I
IAoKCgoKCiNkZWZpbmUgT1NfSU5MSU5FIF9fREFSV0lOX09TX0lOTElORQoKCgoKc3RhdGljIGlu
bGluZQp1aW50MTZfdApPU1JlYWRTd2FwSW50MTYoCiAgICBjb25zdCB2b2xhdGlsZSB2b2lkICog
YmFzZSwKICAgIHVpbnRwdHJfdCBieXRlT2Zmc2V0CikKewogICAgdWludDE2X3QgcmVzdWx0OwoK
ICAgIHJlc3VsdCA9ICoodm9sYXRpbGUgdWludDE2X3QgKikoKHVpbnRwdHJfdCliYXNlICsgYnl0
ZU9mZnNldCk7CiAgICByZXR1cm4gX09TU3dhcEludDE2KHJlc3VsdCk7Cn0KCnN0YXRpYyBpbmxp
bmUKdWludDMyX3QKT1NSZWFkU3dhcEludDMyKAogICAgY29uc3Qgdm9sYXRpbGUgdm9pZCAqIGJh
c2UsCiAgICB1aW50cHRyX3QgYnl0ZU9mZnNldAopCnsKICAgIHVpbnQzMl90IHJlc3VsdDsKCiAg
ICByZXN1bHQgPSAqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh1aW50cHRyX3QpYmFzZSArIGJ5dGVP
ZmZzZXQpOwogICAgcmV0dXJuIF9PU1N3YXBJbnQzMihyZXN1bHQpOwp9CgpzdGF0aWMgaW5saW5l
CnVpbnQ2NF90Ck9TUmVhZFN3YXBJbnQ2NCgKICAgIGNvbnN0IHZvbGF0aWxlIHZvaWQgKiBiYXNl
LAogICAgdWludHB0cl90IGJ5dGVPZmZzZXQKKQp7CiAgICB1aW50NjRfdCByZXN1bHQ7CgogICAg
cmVzdWx0ID0gKih2b2xhdGlsZSB1aW50NjRfdCAqKSgodWludHB0cl90KWJhc2UgKyBieXRlT2Zm
c2V0KTsKICAgIHJldHVybiBfT1NTd2FwSW50NjQocmVzdWx0KTsKfQoKCgpzdGF0aWMgaW5saW5l
CnZvaWQKT1NXcml0ZVN3YXBJbnQxNigKICAgIHZvbGF0aWxlIHZvaWQgKiBiYXNlLAogICAgdWlu
dHB0cl90IGJ5dGVPZmZzZXQsCiAgICB1aW50MTZfdCBkYXRhCikKewogICAgKih2b2xhdGlsZSB1
aW50MTZfdCAqKSgodWludHB0cl90KWJhc2UgKyBieXRlT2Zmc2V0KSA9IF9PU1N3YXBJbnQxNihk
YXRhKTsKfQoKc3RhdGljIGlubGluZQp2b2lkCk9TV3JpdGVTd2FwSW50MzIoCiAgICB2b2xhdGls
ZSB2b2lkICogYmFzZSwKICAgIHVpbnRwdHJfdCBieXRlT2Zmc2V0LAogICAgdWludDMyX3QgZGF0
YQopCnsKICAgICoodm9sYXRpbGUgdWludDMyX3QgKikoKHVpbnRwdHJfdCliYXNlICsgYnl0ZU9m
ZnNldCkgPSBfT1NTd2FwSW50MzIoZGF0YSk7Cn0KCnN0YXRpYyBpbmxpbmUKdm9pZApPU1dyaXRl
U3dhcEludDY0KAogICAgdm9sYXRpbGUgdm9pZCAqIGJhc2UsCiAgICB1aW50cHRyX3QgYnl0ZU9m
ZnNldCwKICAgIHVpbnQ2NF90IGRhdGEKKQp7CiAgICAqKHZvbGF0aWxlIHVpbnQ2NF90ICopKCh1
aW50cHRyX3QpYmFzZSArIGJ5dGVPZmZzZXQpID0gX09TU3dhcEludDY0KGRhdGEpOwp9CiMgNDYg
Ii91c3IvaW5jbHVkZS9saWJrZXJuL09TQnl0ZU9yZGVyLmgiIDIgMyA0CiMgNTggIi91c3IvaW5j
bHVkZS9saWJrZXJuL09TQnl0ZU9yZGVyLmgiIDMgNAojZGVmaW5lIE9TU3dhcEludDE2KHgpIF9f
REFSV0lOX09TU3dhcEludDE2KHgpCiNkZWZpbmUgT1NTd2FwSW50MzIoeCkgX19EQVJXSU5fT1NT
d2FwSW50MzIoeCkKI2RlZmluZSBPU1N3YXBJbnQ2NCh4KSBfX0RBUldJTl9PU1N3YXBJbnQ2NCh4
KQoKZW51bSB7CiAgICBPU1Vua25vd25CeXRlT3JkZXIsCiAgICBPU0xpdHRsZUVuZGlhbiwKICAg
IE9TQmlnRW5kaWFuCn07CgpzdGF0aWMgaW5saW5lCmludDMyX3QKT1NIb3N0Qnl0ZU9yZGVyKHZv
aWQpIHsKCiAgICByZXR1cm4gT1NMaXR0bGVFbmRpYW47CgoKCgoKfQoKI2RlZmluZSBPU1JlYWRC
aWdJbnQoeCx5KSBPU1JlYWRCaWdJbnQzMih4LCB5KQojZGVmaW5lIE9TV3JpdGVCaWdJbnQoeCx5
LHopIE9TV3JpdGVCaWdJbnQzMih4LCB5LCB6KQojZGVmaW5lIE9TU3dhcEJpZ1RvSG9zdEludCh4
KSBPU1N3YXBCaWdUb0hvc3RJbnQzMih4KQojZGVmaW5lIE9TU3dhcEhvc3RUb0JpZ0ludCh4KSBP
U1N3YXBIb3N0VG9CaWdJbnQzMih4KQojZGVmaW5lIE9TUmVhZExpdHRsZUludCh4LHkpIE9TUmVh
ZExpdHRsZUludDMyKHgsIHkpCiNkZWZpbmUgT1NXcml0ZUxpdHRsZUludCh4LHkseikgT1NXcml0
ZUxpdHRsZUludDMyKHgsIHksIHopCiNkZWZpbmUgT1NTd2FwSG9zdFRvTGl0dGxlSW50KHgpIE9T
U3dhcEhvc3RUb0xpdHRsZUludDMyKHgpCiNkZWZpbmUgT1NTd2FwTGl0dGxlVG9Ib3N0SW50KHgp
IE9TU3dhcExpdHRsZVRvSG9zdEludDMyKHgpCgoKCnN0YXRpYyBpbmxpbmUKdWludDE2X3QKX09T
UmVhZEludDE2KAogICAgY29uc3Qgdm9sYXRpbGUgdm9pZCAqIGJhc2UsCiAgICB1aW50cHRyX3Qg
Ynl0ZU9mZnNldAopCnsKICAgIHJldHVybiAqKHZvbGF0aWxlIHVpbnQxNl90ICopKCh1aW50cHRy
X3QpYmFzZSArIGJ5dGVPZmZzZXQpOwp9CgpzdGF0aWMgaW5saW5lCnVpbnQzMl90Cl9PU1JlYWRJ
bnQzMigKICAgIGNvbnN0IHZvbGF0aWxlIHZvaWQgKiBiYXNlLAogICAgdWludHB0cl90IGJ5dGVP
ZmZzZXQKKQp7CiAgICByZXR1cm4gKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodWludHB0cl90KWJh
c2UgKyBieXRlT2Zmc2V0KTsKfQoKc3RhdGljIGlubGluZQp1aW50NjRfdApfT1NSZWFkSW50NjQo
CiAgICBjb25zdCB2b2xhdGlsZSB2b2lkICogYmFzZSwKICAgIHVpbnRwdHJfdCBieXRlT2Zmc2V0
CikKewogICAgcmV0dXJuICoodm9sYXRpbGUgdWludDY0X3QgKikoKHVpbnRwdHJfdCliYXNlICsg
Ynl0ZU9mZnNldCk7Cn0KCgoKc3RhdGljIGlubGluZQp2b2lkCl9PU1dyaXRlSW50MTYoCiAgICB2
b2xhdGlsZSB2b2lkICogYmFzZSwKICAgIHVpbnRwdHJfdCBieXRlT2Zmc2V0LAogICAgdWludDE2
X3QgZGF0YQopCnsKICAgICoodm9sYXRpbGUgdWludDE2X3QgKikoKHVpbnRwdHJfdCliYXNlICsg
Ynl0ZU9mZnNldCkgPSBkYXRhOwp9CgpzdGF0aWMgaW5saW5lCnZvaWQKX09TV3JpdGVJbnQzMigK
ICAgIHZvbGF0aWxlIHZvaWQgKiBiYXNlLAogICAgdWludHB0cl90IGJ5dGVPZmZzZXQsCiAgICB1
aW50MzJfdCBkYXRhCikKewogICAgKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodWludHB0cl90KWJh
c2UgKyBieXRlT2Zmc2V0KSA9IGRhdGE7Cn0KCnN0YXRpYyBpbmxpbmUKdm9pZApfT1NXcml0ZUlu
dDY0KAogICAgdm9sYXRpbGUgdm9pZCAqIGJhc2UsCiAgICB1aW50cHRyX3QgYnl0ZU9mZnNldCwK
ICAgIHVpbnQ2NF90IGRhdGEKKQp7CiAgICAqKHZvbGF0aWxlIHVpbnQ2NF90ICopKCh1aW50cHRy
X3QpYmFzZSArIGJ5dGVPZmZzZXQpID0gZGF0YTsKfQojIDIzNCAiL3Vzci9pbmNsdWRlL2xpYmtl
cm4vT1NCeXRlT3JkZXIuaCIgMyA0CiNkZWZpbmUgT1NSZWFkQmlnSW50MTYoYmFzZSxieXRlT2Zm
c2V0KSBPU1JlYWRTd2FwSW50MTYoYmFzZSwgYnl0ZU9mZnNldCkKI2RlZmluZSBPU1JlYWRCaWdJ
bnQzMihiYXNlLGJ5dGVPZmZzZXQpIE9TUmVhZFN3YXBJbnQzMihiYXNlLCBieXRlT2Zmc2V0KQoj
ZGVmaW5lIE9TUmVhZEJpZ0ludDY0KGJhc2UsYnl0ZU9mZnNldCkgT1NSZWFkU3dhcEludDY0KGJh
c2UsIGJ5dGVPZmZzZXQpCgoKCiNkZWZpbmUgT1NXcml0ZUJpZ0ludDE2KGJhc2UsYnl0ZU9mZnNl
dCxkYXRhKSBPU1dyaXRlU3dhcEludDE2KGJhc2UsIGJ5dGVPZmZzZXQsIGRhdGEpCiNkZWZpbmUg
T1NXcml0ZUJpZ0ludDMyKGJhc2UsYnl0ZU9mZnNldCxkYXRhKSBPU1dyaXRlU3dhcEludDMyKGJh
c2UsIGJ5dGVPZmZzZXQsIGRhdGEpCiNkZWZpbmUgT1NXcml0ZUJpZ0ludDY0KGJhc2UsYnl0ZU9m
ZnNldCxkYXRhKSBPU1dyaXRlU3dhcEludDY0KGJhc2UsIGJ5dGVPZmZzZXQsIGRhdGEpCgoKCiNk
ZWZpbmUgT1NSZWFkTGl0dGxlSW50MTYoYmFzZSxieXRlT2Zmc2V0KSBfT1NSZWFkSW50MTYoYmFz
ZSwgYnl0ZU9mZnNldCkKI2RlZmluZSBPU1JlYWRMaXR0bGVJbnQzMihiYXNlLGJ5dGVPZmZzZXQp
IF9PU1JlYWRJbnQzMihiYXNlLCBieXRlT2Zmc2V0KQojZGVmaW5lIE9TUmVhZExpdHRsZUludDY0
KGJhc2UsYnl0ZU9mZnNldCkgX09TUmVhZEludDY0KGJhc2UsIGJ5dGVPZmZzZXQpCgoKCiNkZWZp
bmUgT1NXcml0ZUxpdHRsZUludDE2KGJhc2UsYnl0ZU9mZnNldCxkYXRhKSBfT1NXcml0ZUludDE2
KGJhc2UsIGJ5dGVPZmZzZXQsIGRhdGEpCiNkZWZpbmUgT1NXcml0ZUxpdHRsZUludDMyKGJhc2Us
Ynl0ZU9mZnNldCxkYXRhKSBfT1NXcml0ZUludDMyKGJhc2UsIGJ5dGVPZmZzZXQsIGRhdGEpCiNk
ZWZpbmUgT1NXcml0ZUxpdHRsZUludDY0KGJhc2UsYnl0ZU9mZnNldCxkYXRhKSBfT1NXcml0ZUlu
dDY0KGJhc2UsIGJ5dGVPZmZzZXQsIGRhdGEpCgoKCiNkZWZpbmUgT1NTd2FwSG9zdFRvQmlnQ29u
c3RJbnQxNih4KSBPU1N3YXBDb25zdEludDE2KHgpCiNkZWZpbmUgT1NTd2FwSG9zdFRvQmlnQ29u
c3RJbnQzMih4KSBPU1N3YXBDb25zdEludDMyKHgpCiNkZWZpbmUgT1NTd2FwSG9zdFRvQmlnQ29u
c3RJbnQ2NCh4KSBPU1N3YXBDb25zdEludDY0KHgpCgoKCiNkZWZpbmUgT1NTd2FwSG9zdFRvQmln
SW50MTYoeCkgT1NTd2FwSW50MTYoeCkKI2RlZmluZSBPU1N3YXBIb3N0VG9CaWdJbnQzMih4KSBP
U1N3YXBJbnQzMih4KQojZGVmaW5lIE9TU3dhcEhvc3RUb0JpZ0ludDY0KHgpIE9TU3dhcEludDY0
KHgpCgoKCiNkZWZpbmUgT1NTd2FwSG9zdFRvTGl0dGxlQ29uc3RJbnQxNih4KSAoKHVpbnQxNl90
KSh4KSkKI2RlZmluZSBPU1N3YXBIb3N0VG9MaXR0bGVDb25zdEludDMyKHgpICgodWludDMyX3Qp
KHgpKQojZGVmaW5lIE9TU3dhcEhvc3RUb0xpdHRsZUNvbnN0SW50NjQoeCkgKCh1aW50NjRfdCko
eCkpCgoKCiNkZWZpbmUgT1NTd2FwSG9zdFRvTGl0dGxlSW50MTYoeCkgKCh1aW50MTZfdCkoeCkp
CiNkZWZpbmUgT1NTd2FwSG9zdFRvTGl0dGxlSW50MzIoeCkgKCh1aW50MzJfdCkoeCkpCiNkZWZp
bmUgT1NTd2FwSG9zdFRvTGl0dGxlSW50NjQoeCkgKCh1aW50NjRfdCkoeCkpCgoKCiNkZWZpbmUg
T1NTd2FwQmlnVG9Ib3N0Q29uc3RJbnQxNih4KSBPU1N3YXBDb25zdEludDE2KHgpCiNkZWZpbmUg
T1NTd2FwQmlnVG9Ib3N0Q29uc3RJbnQzMih4KSBPU1N3YXBDb25zdEludDMyKHgpCiNkZWZpbmUg
T1NTd2FwQmlnVG9Ib3N0Q29uc3RJbnQ2NCh4KSBPU1N3YXBDb25zdEludDY0KHgpCgoKCiNkZWZp
bmUgT1NTd2FwQmlnVG9Ib3N0SW50MTYoeCkgT1NTd2FwSW50MTYoeCkKI2RlZmluZSBPU1N3YXBC
aWdUb0hvc3RJbnQzMih4KSBPU1N3YXBJbnQzMih4KQojZGVmaW5lIE9TU3dhcEJpZ1RvSG9zdElu
dDY0KHgpIE9TU3dhcEludDY0KHgpCgoKCiNkZWZpbmUgT1NTd2FwTGl0dGxlVG9Ib3N0Q29uc3RJ
bnQxNih4KSAoKHVpbnQxNl90KSh4KSkKI2RlZmluZSBPU1N3YXBMaXR0bGVUb0hvc3RDb25zdElu
dDMyKHgpICgodWludDMyX3QpKHgpKQojZGVmaW5lIE9TU3dhcExpdHRsZVRvSG9zdENvbnN0SW50
NjQoeCkgKCh1aW50NjRfdCkoeCkpCgoKCiNkZWZpbmUgT1NTd2FwTGl0dGxlVG9Ib3N0SW50MTYo
eCkgKCh1aW50MTZfdCkoeCkpCiNkZWZpbmUgT1NTd2FwTGl0dGxlVG9Ib3N0SW50MzIoeCkgKCh1
aW50MzJfdCkoeCkpCiNkZWZpbmUgT1NTd2FwTGl0dGxlVG9Ib3N0SW50NjQoeCkgKCh1aW50NjRf
dCkoeCkpCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL0NGQnl0ZU9yZGVyLmgiIDIgMwojZGVmaW5lIENGX1VTRV9PU0JZVEVP
UkRFUl9IIDEKCgpleHRlcm4gIkMiIHsKCmVudW0gX19DRkJ5dGVPcmRlciB7CiAgICBDRkJ5dGVP
cmRlclVua25vd24sCiAgICBDRkJ5dGVPcmRlckxpdHRsZUVuZGlhbiwKICAgIENGQnl0ZU9yZGVy
QmlnRW5kaWFuCn07CnR5cGVkZWYgQ0ZJbmRleCBDRkJ5dGVPcmRlcjsKCnN0YXRpYyBfX2lubGlu
ZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBDRkJ5dGVPcmRlciBDRkJ5dGVPcmRl
ckdldEN1cnJlbnQodm9pZCkgewoKICAgIGludDMyX3QgYnl0ZU9yZGVyID0gT1NIb3N0Qnl0ZU9y
ZGVyKCk7CiAgICBzd2l0Y2ggKGJ5dGVPcmRlcikgewogICAgY2FzZSBPU0xpdHRsZUVuZGlhbjog
cmV0dXJuIENGQnl0ZU9yZGVyTGl0dGxlRW5kaWFuOwogICAgY2FzZSBPU0JpZ0VuZGlhbjogcmV0
dXJuIENGQnl0ZU9yZGVyQmlnRW5kaWFuOwogICAgZGVmYXVsdDogYnJlYWs7CiAgICB9CiAgICBy
ZXR1cm4gQ0ZCeXRlT3JkZXJVbmtub3duOwojIDQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkJ5dGVPcmRlci5oIiAzCn0KCnN0
YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSB1aW50MTZfdCBD
RlN3YXBJbnQxNih1aW50MTZfdCBhcmcpIHsKCiAgICByZXR1cm4gKF9fYnVpbHRpbl9jb25zdGFu
dF9wKGFyZykgPyAoKF9fdWludDE2X3QpKCgoKF9fdWludDE2X3QpKGFyZykgJiAweGZmMDApID4+
IDgpIHwgKCgoX191aW50MTZfdCkoYXJnKSAmIDB4MDBmZikgPDwgOCkpKSA6IF9PU1N3YXBJbnQx
NihhcmcpKTsKCgoKCgp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNf
aW5saW5lKSkgdWludDMyX3QgQ0ZTd2FwSW50MzIodWludDMyX3QgYXJnKSB7CgogICAgcmV0dXJu
IChfX2J1aWx0aW5fY29uc3RhbnRfcChhcmcpID8gKChfX3VpbnQzMl90KSgoKChfX3VpbnQzMl90
KShhcmcpICYgMHhmZjAwMDAwMCkgPj4gMjQpIHwgKCgoX191aW50MzJfdCkoYXJnKSAmIDB4MDBm
ZjAwMDApID4+IDgpIHwgKCgoX191aW50MzJfdCkoYXJnKSAmIDB4MDAwMGZmMDApIDw8IDgpIHwg
KCgoX191aW50MzJfdCkoYXJnKSAmIDB4MDAwMDAwZmYpIDw8IDI0KSkpIDogX09TU3dhcEludDMy
KGFyZykpOwoKCgoKCn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19p
bmxpbmUpKSB1aW50NjRfdCBDRlN3YXBJbnQ2NCh1aW50NjRfdCBhcmcpIHsKCiAgICByZXR1cm4g
KF9fYnVpbHRpbl9jb25zdGFudF9wKGFyZykgPyAoKF9fdWludDY0X3QpKCgoKF9fdWludDY0X3Qp
KGFyZykgJiAweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSB8ICgoKF9fdWludDY0X3QpKGFy
ZykgJiAweDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8ICgoKF9fdWludDY0X3QpKGFyZykg
JiAweDAwMDBmZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8ICgoKF9fdWludDY0X3QpKGFyZykgJiAw
eDAwMDAwMGZmMDAwMDAwMDBVTEwpID4+IDgpIHwgKCgoX191aW50NjRfdCkoYXJnKSAmIDB4MDAw
MDAwMDBmZjAwMDAwMFVMTCkgPDwgOCkgfCAoKChfX3VpbnQ2NF90KShhcmcpICYgMHgwMDAwMDAw
MDAwZmYwMDAwVUxMKSA8PCAyNCkgfCAoKChfX3VpbnQ2NF90KShhcmcpICYgMHgwMDAwMDAwMDAw
MDBmZjAwVUxMKSA8PCA0MCkgfCAoKChfX3VpbnQ2NF90KShhcmcpICYgMHgwMDAwMDAwMDAwMDAw
MGZmVUxMKSA8PCA1NikpKSA6IF9PU1N3YXBJbnQ2NChhcmcpKTsKIyA3NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZCeXRlT3Jk
ZXIuaCIgMwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5l
KSkgdWludDE2X3QgQ0ZTd2FwSW50MTZCaWdUb0hvc3QodWludDE2X3QgYXJnKSB7CgogICAgcmV0
dXJuIChfX2J1aWx0aW5fY29uc3RhbnRfcChhcmcpID8gKChfX3VpbnQxNl90KSgoKChfX3VpbnQx
Nl90KShhcmcpICYgMHhmZjAwKSA+PiA4KSB8ICgoKF9fdWludDE2X3QpKGFyZykgJiAweDAwZmYp
IDw8IDgpKSkgOiBfT1NTd2FwSW50MTYoYXJnKSk7CgoKCgoKfQoKc3RhdGljIF9faW5saW5lX18g
X19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIHVpbnQzMl90IENGU3dhcEludDMyQmlnVG9I
b3N0KHVpbnQzMl90IGFyZykgewoKICAgIHJldHVybiAoX19idWlsdGluX2NvbnN0YW50X3AoYXJn
KSA/ICgoX191aW50MzJfdCkoKCgoX191aW50MzJfdCkoYXJnKSAmIDB4ZmYwMDAwMDApID4+IDI0
KSB8ICgoKF9fdWludDMyX3QpKGFyZykgJiAweDAwZmYwMDAwKSA+PiA4KSB8ICgoKF9fdWludDMy
X3QpKGFyZykgJiAweDAwMDBmZjAwKSA8PCA4KSB8ICgoKF9fdWludDMyX3QpKGFyZykgJiAweDAw
MDAwMGZmKSA8PCAyNCkpKSA6IF9PU1N3YXBJbnQzMihhcmcpKTsKCgoKCgp9CgpzdGF0aWMgX19p
bmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdWludDY0X3QgQ0ZTd2FwSW50
NjRCaWdUb0hvc3QodWludDY0X3QgYXJnKSB7CgogICAgcmV0dXJuIChfX2J1aWx0aW5fY29uc3Rh
bnRfcChhcmcpID8gKChfX3VpbnQ2NF90KSgoKChfX3VpbnQ2NF90KShhcmcpICYgMHhmZjAwMDAw
MDAwMDAwMDAwVUxMKSA+PiA1NikgfCAoKChfX3VpbnQ2NF90KShhcmcpICYgMHgwMGZmMDAwMDAw
MDAwMDAwVUxMKSA+PiA0MCkgfCAoKChfX3VpbnQ2NF90KShhcmcpICYgMHgwMDAwZmYwMDAwMDAw
MDAwVUxMKSA+PiAyNCkgfCAoKChfX3VpbnQ2NF90KShhcmcpICYgMHgwMDAwMDBmZjAwMDAwMDAw
VUxMKSA+PiA4KSB8ICgoKF9fdWludDY0X3QpKGFyZykgJiAweDAwMDAwMDAwZmYwMDAwMDBVTEwp
IDw8IDgpIHwgKCgoX191aW50NjRfdCkoYXJnKSAmIDB4MDAwMDAwMDAwMGZmMDAwMFVMTCkgPDwg
MjQpIHwgKCgoX191aW50NjRfdCkoYXJnKSAmIDB4MDAwMDAwMDAwMDAwZmYwMFVMTCkgPDwgNDAp
IHwgKCgoX191aW50NjRfdCkoYXJnKSAmIDB4MDAwMDAwMDAwMDAwMDBmZlVMTCkgPDwgNTYpKSkg
OiBfT1NTd2FwSW50NjQoYXJnKSk7CgoKCgoKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1
dGVfXygoYWx3YXlzX2lubGluZSkpIHVpbnQxNl90IENGU3dhcEludDE2SG9zdFRvQmlnKHVpbnQx
Nl90IGFyZykgewoKICAgIHJldHVybiAoX19idWlsdGluX2NvbnN0YW50X3AoYXJnKSA/ICgoX191
aW50MTZfdCkoKCgoX191aW50MTZfdCkoYXJnKSAmIDB4ZmYwMCkgPj4gOCkgfCAoKChfX3VpbnQx
Nl90KShhcmcpICYgMHgwMGZmKSA8PCA4KSkpIDogX09TU3dhcEludDE2KGFyZykpOwoKCgoKCn0K
CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSB1aW50MzJf
dCBDRlN3YXBJbnQzMkhvc3RUb0JpZyh1aW50MzJfdCBhcmcpIHsKCiAgICByZXR1cm4gKF9fYnVp
bHRpbl9jb25zdGFudF9wKGFyZykgPyAoKF9fdWludDMyX3QpKCgoKF9fdWludDMyX3QpKGFyZykg
JiAweGZmMDAwMDAwKSA+PiAyNCkgfCAoKChfX3VpbnQzMl90KShhcmcpICYgMHgwMGZmMDAwMCkg
Pj4gOCkgfCAoKChfX3VpbnQzMl90KShhcmcpICYgMHgwMDAwZmYwMCkgPDwgOCkgfCAoKChfX3Vp
bnQzMl90KShhcmcpICYgMHgwMDAwMDBmZikgPDwgMjQpKSkgOiBfT1NTd2FwSW50MzIoYXJnKSk7
CgoKCgoKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkp
IHVpbnQ2NF90IENGU3dhcEludDY0SG9zdFRvQmlnKHVpbnQ2NF90IGFyZykgewoKICAgIHJldHVy
biAoX19idWlsdGluX2NvbnN0YW50X3AoYXJnKSA/ICgoX191aW50NjRfdCkoKCgoX191aW50NjRf
dCkoYXJnKSAmIDB4ZmYwMDAwMDAwMDAwMDAwMFVMTCkgPj4gNTYpIHwgKCgoX191aW50NjRfdCko
YXJnKSAmIDB4MDBmZjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwgKCgoX191aW50NjRfdCkoYXJn
KSAmIDB4MDAwMGZmMDAwMDAwMDAwMFVMTCkgPj4gMjQpIHwgKCgoX191aW50NjRfdCkoYXJnKSAm
IDB4MDAwMDAwZmYwMDAwMDAwMFVMTCkgPj4gOCkgfCAoKChfX3VpbnQ2NF90KShhcmcpICYgMHgw
MDAwMDAwMGZmMDAwMDAwVUxMKSA8PCA4KSB8ICgoKF9fdWludDY0X3QpKGFyZykgJiAweDAwMDAw
MDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8ICgoKF9fdWludDY0X3QpKGFyZykgJiAweDAwMDAwMDAw
MDAwMGZmMDBVTEwpIDw8IDQwKSB8ICgoKF9fdWludDY0X3QpKGFyZykgJiAweDAwMDAwMDAwMDAw
MDAwZmZVTEwpIDw8IDU2KSkpIDogX09TU3dhcEludDY0KGFyZykpOwoKCgoKCn0KCnN0YXRpYyBf
X2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSB1aW50MTZfdCBDRlN3YXBJ
bnQxNkxpdHRsZVRvSG9zdCh1aW50MTZfdCBhcmcpIHsKCiAgICByZXR1cm4gKCh1aW50MTZfdCko
YXJnKSk7CgoKCgoKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lu
bGluZSkpIHVpbnQzMl90IENGU3dhcEludDMyTGl0dGxlVG9Ib3N0KHVpbnQzMl90IGFyZykgewoK
ICAgIHJldHVybiAoKHVpbnQzMl90KShhcmcpKTsKCgoKCgp9CgpzdGF0aWMgX19pbmxpbmVfXyBf
X2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdWludDY0X3QgQ0ZTd2FwSW50NjRMaXR0bGVU
b0hvc3QodWludDY0X3QgYXJnKSB7CgogICAgcmV0dXJuICgodWludDY0X3QpKGFyZykpOwoKCgoK
Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSB1aW50
MTZfdCBDRlN3YXBJbnQxNkhvc3RUb0xpdHRsZSh1aW50MTZfdCBhcmcpIHsKCiAgICByZXR1cm4g
KCh1aW50MTZfdCkoYXJnKSk7CgoKCgoKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVf
XygoYWx3YXlzX2lubGluZSkpIHVpbnQzMl90IENGU3dhcEludDMySG9zdFRvTGl0dGxlKHVpbnQz
Ml90IGFyZykgewoKICAgIHJldHVybiAoKHVpbnQzMl90KShhcmcpKTsKCgoKCgp9CgpzdGF0aWMg
X19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdWludDY0X3QgQ0ZTd2Fw
SW50NjRIb3N0VG9MaXR0bGUodWludDY0X3QgYXJnKSB7CgogICAgcmV0dXJuICgodWludDY0X3Qp
KGFyZykpOwoKCgoKCn0KCnR5cGVkZWYgc3RydWN0IHt1aW50MzJfdCB2O30gQ0ZTd2FwcGVkRmxv
YXQzMjsKdHlwZWRlZiBzdHJ1Y3Qge3VpbnQ2NF90IHY7fSBDRlN3YXBwZWRGbG9hdDY0OwoKc3Rh
dGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIENGU3dhcHBlZEZs
b2F0MzIgQ0ZDb252ZXJ0RmxvYXQzMkhvc3RUb1N3YXBwZWQoRmxvYXQzMiBhcmcpIHsKICAgIHVu
aW9uIENGU3dhcCB7CiBGbG9hdDMyIHY7CiBDRlN3YXBwZWRGbG9hdDMyIHN2OwogICAgfSByZXN1
bHQ7CiAgICByZXN1bHQudiA9IGFyZzsKCiAgICByZXN1bHQuc3YudiA9IENGU3dhcEludDMyKHJl
c3VsdC5zdi52KTsKCiAgICByZXR1cm4gcmVzdWx0LnN2Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBf
X2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgRmxvYXQzMiBDRkNvbnZlcnRGbG9hdDMyU3dh
cHBlZFRvSG9zdChDRlN3YXBwZWRGbG9hdDMyIGFyZykgewogICAgdW5pb24gQ0ZTd2FwIHsKIEZs
b2F0MzIgdjsKIENGU3dhcHBlZEZsb2F0MzIgc3Y7CiAgICB9IHJlc3VsdDsKICAgIHJlc3VsdC5z
diA9IGFyZzsKCiAgICByZXN1bHQuc3YudiA9IENGU3dhcEludDMyKHJlc3VsdC5zdi52KTsKCiAg
ICByZXR1cm4gcmVzdWx0LnY7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFs
d2F5c19pbmxpbmUpKSBDRlN3YXBwZWRGbG9hdDY0IENGQ29udmVydEZsb2F0NjRIb3N0VG9Td2Fw
cGVkKEZsb2F0NjQgYXJnKSB7CiAgICB1bmlvbiBDRlN3YXAgewogRmxvYXQ2NCB2OwogQ0ZTd2Fw
cGVkRmxvYXQ2NCBzdjsKICAgIH0gcmVzdWx0OwogICAgcmVzdWx0LnYgPSBhcmc7CgogICAgcmVz
dWx0LnN2LnYgPSBDRlN3YXBJbnQ2NChyZXN1bHQuc3Yudik7CgogICAgcmV0dXJuIHJlc3VsdC5z
djsKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIEZs
b2F0NjQgQ0ZDb252ZXJ0RmxvYXQ2NFN3YXBwZWRUb0hvc3QoQ0ZTd2FwcGVkRmxvYXQ2NCBhcmcp
IHsKICAgIHVuaW9uIENGU3dhcCB7CiBGbG9hdDY0IHY7CiBDRlN3YXBwZWRGbG9hdDY0IHN2Owog
ICAgfSByZXN1bHQ7CiAgICByZXN1bHQuc3YgPSBhcmc7CgogICAgcmVzdWx0LnN2LnYgPSBDRlN3
YXBJbnQ2NChyZXN1bHQuc3Yudik7CgogICAgcmV0dXJuIHJlc3VsdC52Owp9CgpzdGF0aWMgX19p
bmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgQ0ZTd2FwcGVkRmxvYXQzMiBD
RkNvbnZlcnRGbG9hdEhvc3RUb1N3YXBwZWQoZmxvYXQgYXJnKSB7CiAgICB1bmlvbiBDRlN3YXAg
ewogZmxvYXQgdjsKIENGU3dhcHBlZEZsb2F0MzIgc3Y7CiAgICB9IHJlc3VsdDsKICAgIHJlc3Vs
dC52ID0gYXJnOwoKICAgIHJlc3VsdC5zdi52ID0gQ0ZTd2FwSW50MzIocmVzdWx0LnN2LnYpOwoK
ICAgIHJldHVybiByZXN1bHQuc3Y7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18o
KGFsd2F5c19pbmxpbmUpKSBmbG9hdCBDRkNvbnZlcnRGbG9hdFN3YXBwZWRUb0hvc3QoQ0ZTd2Fw
cGVkRmxvYXQzMiBhcmcpIHsKICAgIHVuaW9uIENGU3dhcCB7CiBmbG9hdCB2OwogQ0ZTd2FwcGVk
RmxvYXQzMiBzdjsKICAgIH0gcmVzdWx0OwogICAgcmVzdWx0LnN2ID0gYXJnOwoKICAgIHJlc3Vs
dC5zdi52ID0gQ0ZTd2FwSW50MzIocmVzdWx0LnN2LnYpOwoKICAgIHJldHVybiByZXN1bHQudjsK
fQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIENGU3dh
cHBlZEZsb2F0NjQgQ0ZDb252ZXJ0RG91YmxlSG9zdFRvU3dhcHBlZChkb3VibGUgYXJnKSB7CiAg
ICB1bmlvbiBDRlN3YXAgewogZG91YmxlIHY7CiBDRlN3YXBwZWRGbG9hdDY0IHN2OwogICAgfSBy
ZXN1bHQ7CiAgICByZXN1bHQudiA9IGFyZzsKCiAgICByZXN1bHQuc3YudiA9IENGU3dhcEludDY0
KHJlc3VsdC5zdi52KTsKCiAgICByZXR1cm4gcmVzdWx0LnN2Owp9CgpzdGF0aWMgX19pbmxpbmVf
XyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgZG91YmxlIENGQ29udmVydERvdWJsZVN3
YXBwZWRUb0hvc3QoQ0ZTd2FwcGVkRmxvYXQ2NCBhcmcpIHsKICAgIHVuaW9uIENGU3dhcCB7CiBk
b3VibGUgdjsKIENGU3dhcHBlZEZsb2F0NjQgc3Y7CiAgICB9IHJlc3VsdDsKICAgIHJlc3VsdC5z
diA9IGFyZzsKCiAgICByZXN1bHQuc3YudiA9IENGU3dhcEludDY0KHJlc3VsdC5zdi52KTsKCiAg
ICByZXR1cm4gcmVzdWx0LnY7Cn0KCn0KIyA0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUZvdW5kYXRpb24uaCIgMiAzCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvQ0ZDYWxlbmRhci5oIiAxIDMKCgoKCgojZGVmaW5lIF9fQ09SRUZPVU5EQVRJT05fQ0ZD
QUxFTkRBUl9fIDEKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkRhdGUuaCIgMSAzCgoKCgoKI2RlZmluZSBfX0NPUkVG
T1VOREFUSU9OX0NGREFURV9fIDEKCgoKZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIGRvdWJsZSBDRlRp
bWVJbnRlcnZhbDsKdHlwZWRlZiBDRlRpbWVJbnRlcnZhbCBDRkFic29sdXRlVGltZTsKCgoKZXh0
ZXJuCkNGQWJzb2x1dGVUaW1lIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCh2b2lkKTsKCmV4dGVy
bgpjb25zdCBDRlRpbWVJbnRlcnZhbCBrQ0ZBYnNvbHV0ZVRpbWVJbnRlcnZhbFNpbmNlMTk3MDsK
ZXh0ZXJuCmNvbnN0IENGVGltZUludGVydmFsIGtDRkFic29sdXRlVGltZUludGVydmFsU2luY2Ux
OTA0OwoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGUgKiBDRkRhdGVSZWY7CgpleHRlcm4K
Q0ZUeXBlSUQgQ0ZEYXRlR2V0VHlwZUlEKHZvaWQpOwoKZXh0ZXJuCkNGRGF0ZVJlZiBDRkRhdGVD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkFic29sdXRlVGltZSBhdCk7CgpleHRl
cm4KQ0ZBYnNvbHV0ZVRpbWUgQ0ZEYXRlR2V0QWJzb2x1dGVUaW1lKENGRGF0ZVJlZiB0aGVEYXRl
KTsKCmV4dGVybgpDRlRpbWVJbnRlcnZhbCBDRkRhdGVHZXRUaW1lSW50ZXJ2YWxTaW5jZURhdGUo
Q0ZEYXRlUmVmIHRoZURhdGUsIENGRGF0ZVJlZiBvdGhlckRhdGUpOwoKZXh0ZXJuCkNGQ29tcGFy
aXNvblJlc3VsdCBDRkRhdGVDb21wYXJlKENGRGF0ZVJlZiB0aGVEYXRlLCBDRkRhdGVSZWYgb3Ro
ZXJEYXRlLCB2b2lkICpjb250ZXh0KTsKCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZUaW1lWm9u
ZSAqIENGVGltZVpvbmVSZWY7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBTSW50MzIgeWVhcjsKICAg
IFNJbnQ4IG1vbnRoOwogICAgU0ludDggZGF5OwogICAgU0ludDggaG91cjsKICAgIFNJbnQ4IG1p
bnV0ZTsKICAgIGRvdWJsZSBzZWNvbmQ7Cn0gQ0ZHcmVnb3JpYW5EYXRlOwoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgU0ludDMyIHllYXJzOwogICAgU0ludDMyIG1vbnRoczsKICAgIFNJbnQzMiBkYXlz
OwogICAgU0ludDMyIGhvdXJzOwogICAgU0ludDMyIG1pbnV0ZXM7CiAgICBkb3VibGUgc2Vjb25k
czsKfSBDRkdyZWdvcmlhblVuaXRzOwoKZW51bSB7CiAgICBrQ0ZHcmVnb3JpYW5Vbml0c1llYXJz
ID0gKDFVTCA8PCAwKSwKICAgIGtDRkdyZWdvcmlhblVuaXRzTW9udGhzID0gKDFVTCA8PCAxKSwK
ICAgIGtDRkdyZWdvcmlhblVuaXRzRGF5cyA9ICgxVUwgPDwgMiksCiAgICBrQ0ZHcmVnb3JpYW5V
bml0c0hvdXJzID0gKDFVTCA8PCAzKSwKICAgIGtDRkdyZWdvcmlhblVuaXRzTWludXRlcyA9ICgx
VUwgPDwgNCksCiAgICBrQ0ZHcmVnb3JpYW5Vbml0c1NlY29uZHMgPSAoMVVMIDw8IDUpLAogICAg
a0NGR3JlZ29yaWFuQWxsVW5pdHMgPSAweDAwRkZGRkZGCn07CnR5cGVkZWYgQ0ZPcHRpb25GbGFn
cyBDRkdyZWdvcmlhblVuaXRGbGFnczsKCmV4dGVybgpCb29sZWFuIENGR3JlZ29yaWFuRGF0ZUlz
VmFsaWQoQ0ZHcmVnb3JpYW5EYXRlIGdkYXRlLCBDRk9wdGlvbkZsYWdzIHVuaXRGbGFncyk7Cgpl
eHRlcm4KQ0ZBYnNvbHV0ZVRpbWUgQ0ZHcmVnb3JpYW5EYXRlR2V0QWJzb2x1dGVUaW1lKENGR3Jl
Z29yaWFuRGF0ZSBnZGF0ZSwgQ0ZUaW1lWm9uZVJlZiB0eik7CgpleHRlcm4KQ0ZHcmVnb3JpYW5E
YXRlIENGQWJzb2x1dGVUaW1lR2V0R3JlZ29yaWFuRGF0ZShDRkFic29sdXRlVGltZSBhdCwgQ0ZU
aW1lWm9uZVJlZiB0eik7CgpleHRlcm4KQ0ZBYnNvbHV0ZVRpbWUgQ0ZBYnNvbHV0ZVRpbWVBZGRH
cmVnb3JpYW5Vbml0cyhDRkFic29sdXRlVGltZSBhdCwgQ0ZUaW1lWm9uZVJlZiB0eiwgQ0ZHcmVn
b3JpYW5Vbml0cyB1bml0cyk7CgpleHRlcm4KQ0ZHcmVnb3JpYW5Vbml0cyBDRkFic29sdXRlVGlt
ZUdldERpZmZlcmVuY2VBc0dyZWdvcmlhblVuaXRzKENGQWJzb2x1dGVUaW1lIGF0MSwgQ0ZBYnNv
bHV0ZVRpbWUgYXQyLCBDRlRpbWVab25lUmVmIHR6LCBDRk9wdGlvbkZsYWdzIHVuaXRGbGFncyk7
CgpleHRlcm4KU0ludDMyIENGQWJzb2x1dGVUaW1lR2V0RGF5T2ZXZWVrKENGQWJzb2x1dGVUaW1l
IGF0LCBDRlRpbWVab25lUmVmIHR6KTsKCmV4dGVybgpTSW50MzIgQ0ZBYnNvbHV0ZVRpbWVHZXRE
YXlPZlllYXIoQ0ZBYnNvbHV0ZVRpbWUgYXQsIENGVGltZVpvbmVSZWYgdHopOwoKZXh0ZXJuClNJ
bnQzMiBDRkFic29sdXRlVGltZUdldFdlZWtPZlllYXIoQ0ZBYnNvbHV0ZVRpbWUgYXQsIENGVGlt
ZVpvbmVSZWYgdHopOwoKfQojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91
bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkNhbGVuZGFyLmgiIDIgMwojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVGlt
ZVpvbmUuaCIgMSAzCgoKCgoKI2RlZmluZSBfX0NPUkVGT1VOREFUSU9OX0NGVElNRVpPTkVfXyAx
CiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0NGVGltZVpvbmUuaCIgMwpleHRlcm4gIkMiIHsKCmV4dGVybgpDRlR5cGVJRCBD
RlRpbWVab25lR2V0VHlwZUlEKHZvaWQpOwoKZXh0ZXJuCkNGVGltZVpvbmVSZWYgQ0ZUaW1lWm9u
ZUNvcHlTeXN0ZW0odm9pZCk7CgpleHRlcm4Kdm9pZCBDRlRpbWVab25lUmVzZXRTeXN0ZW0odm9p
ZCk7CgpleHRlcm4KQ0ZUaW1lWm9uZVJlZiBDRlRpbWVab25lQ29weURlZmF1bHQodm9pZCk7Cgpl
eHRlcm4Kdm9pZCBDRlRpbWVab25lU2V0RGVmYXVsdChDRlRpbWVab25lUmVmIHR6KTsKCmV4dGVy
bgpDRkFycmF5UmVmIENGVGltZVpvbmVDb3B5S25vd25OYW1lcyh2b2lkKTsKCmV4dGVybgpDRkRp
Y3Rpb25hcnlSZWYgQ0ZUaW1lWm9uZUNvcHlBYmJyZXZpYXRpb25EaWN0aW9uYXJ5KHZvaWQpOwoK
ZXh0ZXJuCnZvaWQgQ0ZUaW1lWm9uZVNldEFiYnJldmlhdGlvbkRpY3Rpb25hcnkoQ0ZEaWN0aW9u
YXJ5UmVmIGRpY3QpOwoKZXh0ZXJuCkNGVGltZVpvbmVSZWYgQ0ZUaW1lWm9uZUNyZWF0ZShDRkFs
bG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIG5hbWUsIENGRGF0YVJlZiBkYXRhKTsK
CmV4dGVybgpDRlRpbWVab25lUmVmIENGVGltZVpvbmVDcmVhdGVXaXRoVGltZUludGVydmFsRnJv
bUdNVChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGVGltZUludGVydmFsIHRpKTsKCmV4dGVy
bgpDRlRpbWVab25lUmVmIENGVGltZVpvbmVDcmVhdGVXaXRoTmFtZShDRkFsbG9jYXRvclJlZiBh
bGxvY2F0b3IsIENGU3RyaW5nUmVmIG5hbWUsIEJvb2xlYW4gdHJ5QWJicmV2KTsKCmV4dGVybgpD
RlN0cmluZ1JlZiBDRlRpbWVab25lR2V0TmFtZShDRlRpbWVab25lUmVmIHR6KTsKCmV4dGVybgpD
RkRhdGFSZWYgQ0ZUaW1lWm9uZUdldERhdGEoQ0ZUaW1lWm9uZVJlZiB0eik7CgpleHRlcm4KQ0ZU
aW1lSW50ZXJ2YWwgQ0ZUaW1lWm9uZUdldFNlY29uZHNGcm9tR01UKENGVGltZVpvbmVSZWYgdHos
IENGQWJzb2x1dGVUaW1lIGF0KTsKCmV4dGVybgpDRlN0cmluZ1JlZiBDRlRpbWVab25lQ29weUFi
YnJldmlhdGlvbihDRlRpbWVab25lUmVmIHR6LCBDRkFic29sdXRlVGltZSBhdCk7CgpleHRlcm4K
Qm9vbGVhbiBDRlRpbWVab25lSXNEYXlsaWdodFNhdmluZ1RpbWUoQ0ZUaW1lWm9uZVJlZiB0eiwg
Q0ZBYnNvbHV0ZVRpbWUgYXQpOwoKZXh0ZXJuCkNGVGltZUludGVydmFsIENGVGltZVpvbmVHZXRE
YXlsaWdodFNhdmluZ1RpbWVPZmZzZXQoQ0ZUaW1lWm9uZVJlZiB0eiwgQ0ZBYnNvbHV0ZVRpbWUg
YXQpIDsKCmV4dGVybgpDRkFic29sdXRlVGltZSBDRlRpbWVab25lR2V0TmV4dERheWxpZ2h0U2F2
aW5nVGltZVRyYW5zaXRpb24oQ0ZUaW1lWm9uZVJlZiB0eiwgQ0ZBYnNvbHV0ZVRpbWUgYXQpIDsK
CgplbnVtIHsKIGtDRlRpbWVab25lTmFtZVN0eWxlU3RhbmRhcmQsCiBrQ0ZUaW1lWm9uZU5hbWVT
dHlsZVNob3J0U3RhbmRhcmQsCiBrQ0ZUaW1lWm9uZU5hbWVTdHlsZURheWxpZ2h0U2F2aW5nLAog
a0NGVGltZVpvbmVOYW1lU3R5bGVTaG9ydERheWxpZ2h0U2F2aW5nLAoga0NGVGltZVpvbmVOYW1l
U3R5bGVHZW5lcmljLAoga0NGVGltZVpvbmVOYW1lU3R5bGVTaG9ydEdlbmVyaWMKfTsKdHlwZWRl
ZiBDRkluZGV4IENGVGltZVpvbmVOYW1lU3R5bGU7CgpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZUaW1l
Wm9uZUNvcHlMb2NhbGl6ZWROYW1lKENGVGltZVpvbmVSZWYgdHosIENGVGltZVpvbmVOYW1lU3R5
bGUgc3R5bGUsIENGTG9jYWxlUmVmIGxvY2FsZSkgOwoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0ZUaW1lWm9uZVN5c3RlbVRpbWVab25lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIDsKCn0KIyAx
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvQ0ZDYWxlbmRhci5oIiAyIDMKCgoKZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIHN0cnVjdCBf
X0NGQ2FsZW5kYXIgKiBDRkNhbGVuZGFyUmVmOwoKZXh0ZXJuCkNGVHlwZUlEIENGQ2FsZW5kYXJH
ZXRUeXBlSUQodm9pZCkgOwoKZXh0ZXJuCkNGQ2FsZW5kYXJSZWYgQ0ZDYWxlbmRhckNvcHlDdXJy
ZW50KHZvaWQpIDsKCmV4dGVybgpDRkNhbGVuZGFyUmVmIENGQ2FsZW5kYXJDcmVhdGVXaXRoSWRl
bnRpZmllcihDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIGlkZW50aWZpZXIp
IDsKCgoKZXh0ZXJuCkNGU3RyaW5nUmVmIENGQ2FsZW5kYXJHZXRJZGVudGlmaWVyKENGQ2FsZW5k
YXJSZWYgY2FsZW5kYXIpIDsKCgpleHRlcm4KQ0ZMb2NhbGVSZWYgQ0ZDYWxlbmRhckNvcHlMb2Nh
bGUoQ0ZDYWxlbmRhclJlZiBjYWxlbmRhcikgOwoKZXh0ZXJuCnZvaWQgQ0ZDYWxlbmRhclNldExv
Y2FsZShDRkNhbGVuZGFyUmVmIGNhbGVuZGFyLCBDRkxvY2FsZVJlZiBsb2NhbGUpIDsKCmV4dGVy
bgpDRlRpbWVab25lUmVmIENGQ2FsZW5kYXJDb3B5VGltZVpvbmUoQ0ZDYWxlbmRhclJlZiBjYWxl
bmRhcikgOwoKZXh0ZXJuCnZvaWQgQ0ZDYWxlbmRhclNldFRpbWVab25lKENGQ2FsZW5kYXJSZWYg
Y2FsZW5kYXIsIENGVGltZVpvbmVSZWYgdHopIDsKCmV4dGVybgpDRkluZGV4IENGQ2FsZW5kYXJH
ZXRGaXJzdFdlZWtkYXkoQ0ZDYWxlbmRhclJlZiBjYWxlbmRhcikgOwoKZXh0ZXJuCnZvaWQgQ0ZD
YWxlbmRhclNldEZpcnN0V2Vla2RheShDRkNhbGVuZGFyUmVmIGNhbGVuZGFyLCBDRkluZGV4IHdr
ZHkpIDsKCmV4dGVybgpDRkluZGV4IENGQ2FsZW5kYXJHZXRNaW5pbXVtRGF5c0luRmlyc3RXZWVr
KENGQ2FsZW5kYXJSZWYgY2FsZW5kYXIpIDsKCmV4dGVybgp2b2lkIENGQ2FsZW5kYXJTZXRNaW5p
bXVtRGF5c0luRmlyc3RXZWVrKENGQ2FsZW5kYXJSZWYgY2FsZW5kYXIsIENGSW5kZXggbXdkKSA7
CgoKZW51bSB7CiBrQ0ZDYWxlbmRhclVuaXRFcmEgPSAoMVVMIDw8IDEpLAoga0NGQ2FsZW5kYXJV
bml0WWVhciA9ICgxVUwgPDwgMiksCiBrQ0ZDYWxlbmRhclVuaXRNb250aCA9ICgxVUwgPDwgMyks
CiBrQ0ZDYWxlbmRhclVuaXREYXkgPSAoMVVMIDw8IDQpLAoga0NGQ2FsZW5kYXJVbml0SG91ciA9
ICgxVUwgPDwgNSksCiBrQ0ZDYWxlbmRhclVuaXRNaW51dGUgPSAoMVVMIDw8IDYpLAoga0NGQ2Fs
ZW5kYXJVbml0U2Vjb25kID0gKDFVTCA8PCA3KSwKIGtDRkNhbGVuZGFyVW5pdFdlZWsgPSAoMVVM
IDw8IDgpLAoga0NGQ2FsZW5kYXJVbml0V2Vla2RheSA9ICgxVUwgPDwgOSksCiBrQ0ZDYWxlbmRh
clVuaXRXZWVrZGF5T3JkaW5hbCA9ICgxVUwgPDwgMTApLAoKIGtDRkNhbGVuZGFyVW5pdFF1YXJ0
ZXIgPSAoMVVMIDw8IDExKSwKCn07CnR5cGVkZWYgQ0ZPcHRpb25GbGFncyBDRkNhbGVuZGFyVW5p
dDsKCmV4dGVybgpDRlJhbmdlIENGQ2FsZW5kYXJHZXRNaW5pbXVtUmFuZ2VPZlVuaXQoQ0ZDYWxl
bmRhclJlZiBjYWxlbmRhciwgQ0ZDYWxlbmRhclVuaXQgdW5pdCkgOwoKZXh0ZXJuCkNGUmFuZ2Ug
Q0ZDYWxlbmRhckdldE1heGltdW1SYW5nZU9mVW5pdChDRkNhbGVuZGFyUmVmIGNhbGVuZGFyLCBD
RkNhbGVuZGFyVW5pdCB1bml0KSA7CgpleHRlcm4KQ0ZSYW5nZSBDRkNhbGVuZGFyR2V0UmFuZ2VP
ZlVuaXQoQ0ZDYWxlbmRhclJlZiBjYWxlbmRhciwgQ0ZDYWxlbmRhclVuaXQgc21hbGxlclVuaXQs
IENGQ2FsZW5kYXJVbml0IGJpZ2dlclVuaXQsIENGQWJzb2x1dGVUaW1lIGF0KSA7CgpleHRlcm4K
Q0ZJbmRleCBDRkNhbGVuZGFyR2V0T3JkaW5hbGl0eU9mVW5pdChDRkNhbGVuZGFyUmVmIGNhbGVu
ZGFyLCBDRkNhbGVuZGFyVW5pdCBzbWFsbGVyVW5pdCwgQ0ZDYWxlbmRhclVuaXQgYmlnZ2VyVW5p
dCwgQ0ZBYnNvbHV0ZVRpbWUgYXQpIDsKCmV4dGVybgpCb29sZWFuIENGQ2FsZW5kYXJHZXRUaW1l
UmFuZ2VPZlVuaXQoQ0ZDYWxlbmRhclJlZiBjYWxlbmRhciwgQ0ZDYWxlbmRhclVuaXQgdW5pdCwg
Q0ZBYnNvbHV0ZVRpbWUgYXQsIENGQWJzb2x1dGVUaW1lICpzdGFydHAsIENGVGltZUludGVydmFs
ICp0aXApIDsKCmV4dGVybgpCb29sZWFuIENGQ2FsZW5kYXJDb21wb3NlQWJzb2x1dGVUaW1lKENG
Q2FsZW5kYXJSZWYgY2FsZW5kYXIsIENGQWJzb2x1dGVUaW1lICphdCwgY29uc3QgY2hhciAqY29t
cG9uZW50RGVzYywgLi4uKSA7CgpleHRlcm4KQm9vbGVhbiBDRkNhbGVuZGFyRGVjb21wb3NlQWJz
b2x1dGVUaW1lKENGQ2FsZW5kYXJSZWYgY2FsZW5kYXIsIENGQWJzb2x1dGVUaW1lIGF0LCBjb25z
dCBjaGFyICpjb21wb25lbnREZXNjLCAuLi4pIDsKCgplbnVtIHsKICAgIGtDRkNhbGVuZGFyQ29t
cG9uZW50c1dyYXAgPSAoMVVMIDw8IDApCn07CgpleHRlcm4KQm9vbGVhbiBDRkNhbGVuZGFyQWRk
Q29tcG9uZW50cyhDRkNhbGVuZGFyUmVmIGNhbGVuZGFyLCBDRkFic29sdXRlVGltZSAqYXQsIENG
T3B0aW9uRmxhZ3Mgb3B0aW9ucywgY29uc3QgY2hhciAqY29tcG9uZW50RGVzYywgLi4uKSA7Cgpl
eHRlcm4KQm9vbGVhbiBDRkNhbGVuZGFyR2V0Q29tcG9uZW50RGlmZmVyZW5jZShDRkNhbGVuZGFy
UmVmIGNhbGVuZGFyLCBDRkFic29sdXRlVGltZSBzdGFydGluZ0FULCBDRkFic29sdXRlVGltZSBy
ZXN1bHRBVCwgQ0ZPcHRpb25GbGFncyBvcHRpb25zLCBjb25zdCBjaGFyICpjb21wb25lbnREZXNj
LCAuLi4pIDsKCgp9CiMgNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL0NvcmVGb3VuZGF0aW9uLmgiIDIgMwoKCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NG
RGF0ZUZvcm1hdHRlci5oIiAxIDMKCgoKCgojZGVmaW5lIF9fQ09SRUZPVU5EQVRJT05fQ0ZEQVRF
Rk9STUFUVEVSX18gMQoKCgoKCgoKZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIHN0cnVjdCBfX0NGRGF0
ZUZvcm1hdHRlciAqQ0ZEYXRlRm9ybWF0dGVyUmVmOwoKCgpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZE
YXRlRm9ybWF0dGVyQ3JlYXRlRGF0ZUZvcm1hdEZyb21UZW1wbGF0ZShDRkFsbG9jYXRvclJlZiBh
bGxvY2F0b3IsIENGU3RyaW5nUmVmIHRtcGxhdGUsIENGT3B0aW9uRmxhZ3Mgb3B0aW9ucywgQ0ZM
b2NhbGVSZWYgbG9jYWxlKSA7CgoKZXh0ZXJuCkNGVHlwZUlEIENGRGF0ZUZvcm1hdHRlckdldFR5
cGVJRCh2b2lkKSA7CgplbnVtIHsKIGtDRkRhdGVGb3JtYXR0ZXJOb1N0eWxlID0gMCwKIGtDRkRh
dGVGb3JtYXR0ZXJTaG9ydFN0eWxlID0gMSwKIGtDRkRhdGVGb3JtYXR0ZXJNZWRpdW1TdHlsZSA9
IDIsCiBrQ0ZEYXRlRm9ybWF0dGVyTG9uZ1N0eWxlID0gMywKIGtDRkRhdGVGb3JtYXR0ZXJGdWxs
U3R5bGUgPSA0Cn07CnR5cGVkZWYgQ0ZJbmRleCBDRkRhdGVGb3JtYXR0ZXJTdHlsZTsKIyA0OCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZEYXRlRm9ybWF0dGVyLmgiIDMKZXh0ZXJuCkNGRGF0ZUZvcm1hdHRlclJlZiBDRkRhdGVG
b3JtYXR0ZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkxvY2FsZVJlZiBsb2Nh
bGUsIENGRGF0ZUZvcm1hdHRlclN0eWxlIGRhdGVTdHlsZSwgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUg
dGltZVN0eWxlKSA7CgoKCmV4dGVybgpDRkxvY2FsZVJlZiBDRkRhdGVGb3JtYXR0ZXJHZXRMb2Nh
bGUoQ0ZEYXRlRm9ybWF0dGVyUmVmIGZvcm1hdHRlcikgOwoKZXh0ZXJuCkNGRGF0ZUZvcm1hdHRl
clN0eWxlIENGRGF0ZUZvcm1hdHRlckdldERhdGVTdHlsZShDRkRhdGVGb3JtYXR0ZXJSZWYgZm9y
bWF0dGVyKSA7CgpleHRlcm4KQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgQ0ZEYXRlRm9ybWF0dGVyR2V0
VGltZVN0eWxlKENGRGF0ZUZvcm1hdHRlclJlZiBmb3JtYXR0ZXIpIDsKCgpleHRlcm4KQ0ZTdHJp
bmdSZWYgQ0ZEYXRlRm9ybWF0dGVyR2V0Rm9ybWF0KENGRGF0ZUZvcm1hdHRlclJlZiBmb3JtYXR0
ZXIpIDsKCmV4dGVybgp2b2lkIENGRGF0ZUZvcm1hdHRlclNldEZvcm1hdChDRkRhdGVGb3JtYXR0
ZXJSZWYgZm9ybWF0dGVyLCBDRlN0cmluZ1JlZiBmb3JtYXRTdHJpbmcpIDsKCgoKCgoKCmV4dGVy
bgpDRlN0cmluZ1JlZiBDRkRhdGVGb3JtYXR0ZXJDcmVhdGVTdHJpbmdXaXRoRGF0ZShDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IsIENGRGF0ZUZvcm1hdHRlclJlZiBmb3JtYXR0ZXIsIENGRGF0ZVJl
ZiBkYXRlKSA7CgpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZEYXRlRm9ybWF0dGVyQ3JlYXRlU3RyaW5n
V2l0aEFic29sdXRlVGltZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGF0ZUZvcm1hdHRl
clJlZiBmb3JtYXR0ZXIsIENGQWJzb2x1dGVUaW1lIGF0KSA7CgoKCgpleHRlcm4KQ0ZEYXRlUmVm
IENGRGF0ZUZvcm1hdHRlckNyZWF0ZURhdGVGcm9tU3RyaW5nKENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvciwgQ0ZEYXRlRm9ybWF0dGVyUmVmIGZvcm1hdHRlciwgQ0ZTdHJpbmdSZWYgc3RyaW5nLCBD
RlJhbmdlICpyYW5nZXApIDsKCmV4dGVybgpCb29sZWFuIENGRGF0ZUZvcm1hdHRlckdldEFic29s
dXRlVGltZUZyb21TdHJpbmcoQ0ZEYXRlRm9ybWF0dGVyUmVmIGZvcm1hdHRlciwgQ0ZTdHJpbmdS
ZWYgc3RyaW5nLCBDRlJhbmdlICpyYW5nZXAsIENGQWJzb2x1dGVUaW1lICphdHApIDsKIyA5OCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZEYXRlRm9ybWF0dGVyLmgiIDMKZXh0ZXJuCnZvaWQgQ0ZEYXRlRm9ybWF0dGVyU2V0UHJv
cGVydHkoQ0ZEYXRlRm9ybWF0dGVyUmVmIGZvcm1hdHRlciwgQ0ZTdHJpbmdSZWYga2V5LCBDRlR5
cGVSZWYgdmFsdWUpIDsKCmV4dGVybgpDRlR5cGVSZWYgQ0ZEYXRlRm9ybWF0dGVyQ29weVByb3Bl
cnR5KENGRGF0ZUZvcm1hdHRlclJlZiBmb3JtYXR0ZXIsIENGU3RyaW5nUmVmIGtleSkgOwoKCgpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlcklzTGVuaWVudCA7CmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyVGltZVpvbmUgOwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlckNhbGVuZGFyTmFtZSA7CmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyRGVmYXVsdEZvcm1hdCA7CmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyVHdvRGlnaXRTdGFydERhdGUgOwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlckRlZmF1bHREYXRlIDsKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtDRkRhdGVGb3JtYXR0ZXJDYWxlbmRhciA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyRXJhU3ltYm9scyA7CmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyTW9udGhTeW1ib2xzIDsKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtDRkRhdGVGb3JtYXR0ZXJTaG9ydE1vbnRoU3ltYm9scyA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyV2Vla2RheVN5bWJvbHMgOwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlclNob3J0V2Vla2RheVN5bWJvbHMgOwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlckFNU3ltYm9sIDsKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDRkRhdGVGb3JtYXR0ZXJQTVN5bWJvbCA7CmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyTG9uZ0VyYVN5bWJvbHMgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlclZlcnlTaG9ydE1vbnRoU3ltYm9scyA7CmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyU3RhbmRhbG9uZU1vbnRoU3ltYm9scyA7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyU2hvcnRTdGFuZGFsb25l
TW9udGhTeW1ib2xzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkRhdGVGb3JtYXR0ZXJW
ZXJ5U2hvcnRTdGFuZGFsb25lTW9udGhTeW1ib2xzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDRkRhdGVGb3JtYXR0ZXJWZXJ5U2hvcnRXZWVrZGF5U3ltYm9scyA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyU3RhbmRhbG9uZVdlZWtkYXlTeW1ib2xzIDsKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkRhdGVGb3JtYXR0ZXJTaG9ydFN0YW5kYWxvbmVXZWVr
ZGF5U3ltYm9scyA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyVmVy
eVNob3J0U3RhbmRhbG9uZVdlZWtkYXlTeW1ib2xzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDRkRhdGVGb3JtYXR0ZXJRdWFydGVyU3ltYm9scyA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0ZEYXRlRm9ybWF0dGVyU2hvcnRRdWFydGVyU3ltYm9scyA7CmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyU3RhbmRhbG9uZVF1YXJ0ZXJTeW1ib2xzIDsKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDRkRhdGVGb3JtYXR0ZXJTaG9ydFN0YW5kYWxvbmVRdWFydGVy
U3ltYm9scyA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyR3JlZ29y
aWFuU3RhcnREYXRlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkRhdGVGb3JtYXR0ZXJE
b2VzUmVsYXRpdmVEYXRlRm9ybWF0dGluZ0tleSA7CiMgMTQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkRhdGVGb3JtYXR0ZXIu
aCIgMwp9CiMgNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL0NvcmVGb3VuZGF0aW9uLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGTWVzc2Fn
ZVBvcnQuaCIgMSAzCgoKCgoKI2RlZmluZSBfX0NPUkVGT1VOREFUSU9OX0NGTUVTU0FHRVBPUlRf
XyAxCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9DRlJ1bkxvb3AuaCIgMSAzCgoKCgoKI2RlZmluZSBfX0NPUkVGT1VOREFU
SU9OX0NGUlVOTE9PUF9fIDEKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaC9wb3J0LmgiIDEg
MyA0CiMgODcgIi91c3IvaW5jbHVkZS9tYWNoL3BvcnQuaCIgMyA0CiNkZWZpbmUgX01BQ0hfUE9S
VF9IXyAKCgoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaC9ib29sZWFuLmgiIDEgMyA0CiMgNjYgIi91
c3IvaW5jbHVkZS9tYWNoL2Jvb2xlYW4uaCIgMyA0CiNkZWZpbmUgX01BQ0hfQk9PTEVBTl9IXyAK
CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lL2Jvb2xlYW4uaCIgMSAzIDQKIyAz
MCAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaGluZS9ib29sZWFuLmgiIDMgNAojZGVmaW5lIF9NQUNI
X01BQ0hJTkVfQk9PTEVBTl9IXyAKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvaTM4Ni9ib29s
ZWFuLmgiIDEgMyA0CiMgNjYgIi91c3IvaW5jbHVkZS9tYWNoL2kzODYvYm9vbGVhbi5oIiAzIDQK
I2RlZmluZSBfTUFDSF9JMzg2X0JPT0xFQU5fSF8gCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgYm9v
bGVhbl90OwojIDM2ICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lL2Jvb2xlYW4uaCIgMiAzIDQK
IyA3NCAiL3Vzci9pbmNsdWRlL21hY2gvYm9vbGVhbi5oIiAyIDMgNAojIDkyICIvdXNyL2luY2x1
ZGUvbWFjaC9wb3J0LmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaGluZS92bV90
eXBlcy5oIiAxIDMgNAojIDMwICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lL3ZtX3R5cGVzLmgi
IDMgNAojZGVmaW5lIF9NQUNIX01BQ0hJTkVfVk1fVFlQRVNfSF8gCgoKCgojIDEgIi91c3IvaW5j
bHVkZS9tYWNoL2kzODYvdm1fdHlwZXMuaCIgMSAzIDQKIyA2OCAiL3Vzci9pbmNsdWRlL21hY2gv
aTM4Ni92bV90eXBlcy5oIiAzIDQKI2RlZmluZSBfTUFDSF9JMzg2X1ZNX1RZUEVTX0hfIAoKCgoK
IyAxICIvdXNyL2luY2x1ZGUvbWFjaC9pMzg2L3ZtX3BhcmFtLmgiIDEgMyA0CiMgOTEgIi91c3Iv
aW5jbHVkZS9tYWNoL2kzODYvdm1fcGFyYW0uaCIgMyA0CiNkZWZpbmUgX01BQ0hfSTM4Nl9WTV9Q
QVJBTV9IXyAKCiNkZWZpbmUgQllURV9TSVpFIDgKCiNkZWZpbmUgSTM4Nl9QR0JZVEVTIDQwOTYK
I2RlZmluZSBJMzg2X1BHU0hJRlQgMTIKCiNkZWZpbmUgUEFHRV9TSVpFIEkzODZfUEdCWVRFUwoj
ZGVmaW5lIFBBR0VfU0hJRlQgSTM4Nl9QR1NISUZUCiNkZWZpbmUgUEFHRV9NQVNLIChQQUdFX1NJ
WkUgLSAxKQoKI2RlZmluZSBJMzg2X0xQR0JZVEVTIDIqMTAyNCoxMDI0CiNkZWZpbmUgSTM4Nl9M
UEdTSElGVCAyMQojZGVmaW5lIEkzODZfTFBHTUFTSyAoSTM4Nl9MUEdCWVRFUy0xKQoKCgoKCgoj
ZGVmaW5lIGkzODZfYnRvcCh4KSAoKHBwbnVtX3QpKCh4KSA+PiBJMzg2X1BHU0hJRlQpKQojZGVm
aW5lIG1hY2hpbmVfYnRvcCh4KSBpMzg2X2J0b3AoeCkKI2RlZmluZSBpMzg2X3B0b2IoeCkgKCgo
cG1hcF9wYWRkcl90KSh4KSkgPDwgSTM4Nl9QR1NISUZUKQoKCgoKCgoKI2RlZmluZSBpMzg2X3Jv
dW5kX3BhZ2UoeCkgKCgoKHBtYXBfcGFkZHJfdCkoeCkpICsgSTM4Nl9QR0JZVEVTIC0gMSkgJiB+
KEkzODZfUEdCWVRFUy0xKSkKCiNkZWZpbmUgaTM4Nl90cnVuY19wYWdlKHgpICgoKHBtYXBfcGFk
ZHJfdCkoeCkpICYgfihJMzg2X1BHQllURVMtMSkpCgoKCiNkZWZpbmUgVk1fTUlOX0FERFJFU1M2
NCAoKHVzZXJfYWRkcl90KSAweDAwMDAwMDAwMDAwMDAwMDBVTEwpCgoKCiNkZWZpbmUgVk1fVVNS
U1RBQ0s2NCAoKHVzZXJfYWRkcl90KSAweDAwMDA3RkZGNUZDMDAwMDBVTEwpCiNkZWZpbmUgVk1f
RFlMRDY0ICgodXNlcl9hZGRyX3QpIDB4MDAwMDdGRkY1RkMwMDAwMFVMTCkKI2RlZmluZSBWTV9M
SUI2NF9TSFJfREFUQSAoKHVzZXJfYWRkcl90KSAweDAwMDA3RkZGNjAwMDAwMDBVTEwpCiNkZWZp
bmUgVk1fTElCNjRfU0hSX1RFWFQgKCh1c2VyX2FkZHJfdCkgMHgwMDAwN0ZGRjgwMDAwMDAwVUxM
KQoKCgoKI2RlZmluZSBWTV9NQVhfUEFHRV9BRERSRVNTICgodXNlcl9hZGRyX3QpIDB4MDAwMDdG
RkZGRkUwMDAwMFVMTCkKCgoKI2RlZmluZSBWTV9NQVhfVVNFUl9QQUdFX0FERFJFU1MgKCh1c2Vy
X2FkZHJfdCkweDAwMDA3RkZGRkZGRkYwMDBVTEwpCgoKCiNkZWZpbmUgTUFDSF9WTV9NSU5fQURE
UkVTUyAoKG1hY2hfdm1fb2Zmc2V0X3QpIDApCiNkZWZpbmUgTUFDSF9WTV9NQVhfQUREUkVTUyAo
KG1hY2hfdm1fb2Zmc2V0X3QpIFZNX01BWF9QQUdFX0FERFJFU1MpCgoKI2RlZmluZSBWTV9NSU5f
QUREUkVTUyAoKHZtX29mZnNldF90KSAwKQojZGVmaW5lIFZNX1VTUlNUQUNLMzIgKCh2bV9vZmZz
ZXRfdCkgMHhDMDAwMDAwMCkKI2RlZmluZSBWTV9NQVhfQUREUkVTUyAoKHZtX29mZnNldF90KSAw
eEZGRTAwMDAwKQojIDc0ICIvdXNyL2luY2x1ZGUvbWFjaC9pMzg2L3ZtX3R5cGVzLmgiIDIgMyA0
CiMgOTMgIi91c3IvaW5jbHVkZS9tYWNoL2kzODYvdm1fdHlwZXMuaCIgMyA0CnR5cGVkZWYgX19k
YXJ3aW5fbmF0dXJhbF90IG5hdHVyYWxfdDsKdHlwZWRlZiBpbnQgaW50ZWdlcl90OwoKCgoKCgp0
eXBlZGVmIHVpbnRwdHJfdCB2bV9vZmZzZXRfdDsKIyAxMTIgIi91c3IvaW5jbHVkZS9tYWNoL2kz
ODYvdm1fdHlwZXMuaCIgMyA0CnR5cGVkZWYgdWludHB0cl90IHZtX3NpemVfdDsKIyAxMjQgIi91
c3IvaW5jbHVkZS9tYWNoL2kzODYvdm1fdHlwZXMuaCIgMyA0CnR5cGVkZWYgdWludDY0X3QgbWFj
aF92bV9hZGRyZXNzX3Q7CnR5cGVkZWYgdWludDY0X3QgbWFjaF92bV9vZmZzZXRfdDsKdHlwZWRl
ZiB1aW50NjRfdCBtYWNoX3ZtX3NpemVfdDsKCnR5cGVkZWYgdWludDY0X3Qgdm1fbWFwX29mZnNl
dF90Owp0eXBlZGVmIHVpbnQ2NF90IHZtX21hcF9hZGRyZXNzX3Q7CnR5cGVkZWYgdWludDY0X3Qg
dm1fbWFwX3NpemVfdDsKCgoKCgoKCiNkZWZpbmUgTUFDSF9NU0dfVFlQRV9JTlRFR0VSX1QgTUFD
SF9NU0dfVFlQRV9JTlRFR0VSXzMyCiMgMzYgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hpbmUvdm1f
dHlwZXMuaCIgMiAzIDQKIyA5MyAiL3Vzci9pbmNsdWRlL21hY2gvcG9ydC5oIiAyIDMgNAojIDEw
NiAiL3Vzci9pbmNsdWRlL21hY2gvcG9ydC5oIiAzIDQKdHlwZWRlZiBuYXR1cmFsX3QgbWFjaF9w
b3J0X25hbWVfdDsKdHlwZWRlZiBtYWNoX3BvcnRfbmFtZV90ICptYWNoX3BvcnRfbmFtZV9hcnJh
eV90OwojIDEzMiAiL3Vzci9pbmNsdWRlL21hY2gvcG9ydC5oIiAzIDQKdHlwZWRlZiBtYWNoX3Bv
cnRfdCAqbWFjaF9wb3J0X2FycmF5X3Q7CiMgMTQzICIvdXNyL2luY2x1ZGUvbWFjaC9wb3J0Lmgi
IDMgNAojZGVmaW5lIE1BQ0hfUE9SVF9OVUxMIDAKI2RlZmluZSBNQUNIX1BPUlRfREVBRCAoKG1h
Y2hfcG9ydF9uYW1lX3QpIH4wKQojZGVmaW5lIE1BQ0hfUE9SVF9WQUxJRChuYW1lKSAoKChuYW1l
KSAhPSBNQUNIX1BPUlRfTlVMTCkgJiYgKChuYW1lKSAhPSBNQUNIX1BPUlRfREVBRCkpCiMgMTY2
ICIvdXNyL2luY2x1ZGUvbWFjaC9wb3J0LmgiIDMgNAojZGVmaW5lIE1BQ0hfUE9SVF9JTkRFWChu
YW1lKSAoKG5hbWUpID4+IDgpCiNkZWZpbmUgTUFDSF9QT1JUX0dFTihuYW1lKSAoKChuYW1lKSAm
IDB4ZmYpIDw8IDI0KQojZGVmaW5lIE1BQ0hfUE9SVF9NQUtFKGluZGV4LGdlbikgKCgoaW5kZXgp
IDw8IDgpIHwgKGdlbikgPj4gMjQpCiMgMTkwICIvdXNyL2luY2x1ZGUvbWFjaC9wb3J0LmgiIDMg
NAp0eXBlZGVmIG5hdHVyYWxfdCBtYWNoX3BvcnRfcmlnaHRfdDsKCiNkZWZpbmUgTUFDSF9QT1JU
X1JJR0hUX1NFTkQgKChtYWNoX3BvcnRfcmlnaHRfdCkgMCkKI2RlZmluZSBNQUNIX1BPUlRfUklH
SFRfUkVDRUlWRSAoKG1hY2hfcG9ydF9yaWdodF90KSAxKQojZGVmaW5lIE1BQ0hfUE9SVF9SSUdI
VF9TRU5EX09OQ0UgKChtYWNoX3BvcnRfcmlnaHRfdCkgMikKI2RlZmluZSBNQUNIX1BPUlRfUklH
SFRfUE9SVF9TRVQgKChtYWNoX3BvcnRfcmlnaHRfdCkgMykKI2RlZmluZSBNQUNIX1BPUlRfUklH
SFRfREVBRF9OQU1FICgobWFjaF9wb3J0X3JpZ2h0X3QpIDQpCiNkZWZpbmUgTUFDSF9QT1JUX1JJ
R0hUX0xBQkVMSCAoKG1hY2hfcG9ydF9yaWdodF90KSA1KQojZGVmaW5lIE1BQ0hfUE9SVF9SSUdI
VF9OVU1CRVIgKChtYWNoX3BvcnRfcmlnaHRfdCkgNikKCnR5cGVkZWYgbmF0dXJhbF90IG1hY2hf
cG9ydF90eXBlX3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3R5cGVfdCAqbWFjaF9wb3J0X3R5cGVfYXJy
YXlfdDsKCiNkZWZpbmUgTUFDSF9QT1JUX1RZUEUocmlnaHQpICgobWFjaF9wb3J0X3R5cGVfdCko
KChtYWNoX3BvcnRfdHlwZV90KSAxKSA8PCAoKHJpZ2h0KSArICgobWFjaF9wb3J0X3JpZ2h0X3Qp
IDE2KSkpKQoKCiNkZWZpbmUgTUFDSF9QT1JUX1RZUEVfTk9ORSAoKG1hY2hfcG9ydF90eXBlX3Qp
IDBMKQojZGVmaW5lIE1BQ0hfUE9SVF9UWVBFX1NFTkQgTUFDSF9QT1JUX1RZUEUoTUFDSF9QT1JU
X1JJR0hUX1NFTkQpCiNkZWZpbmUgTUFDSF9QT1JUX1RZUEVfUkVDRUlWRSBNQUNIX1BPUlRfVFlQ
RShNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSkKI2RlZmluZSBNQUNIX1BPUlRfVFlQRV9TRU5EX09O
Q0UgTUFDSF9QT1JUX1RZUEUoTUFDSF9QT1JUX1JJR0hUX1NFTkRfT05DRSkKI2RlZmluZSBNQUNI
X1BPUlRfVFlQRV9QT1JUX1NFVCBNQUNIX1BPUlRfVFlQRShNQUNIX1BPUlRfUklHSFRfUE9SVF9T
RVQpCiNkZWZpbmUgTUFDSF9QT1JUX1RZUEVfREVBRF9OQU1FIE1BQ0hfUE9SVF9UWVBFKE1BQ0hf
UE9SVF9SSUdIVF9ERUFEX05BTUUpCiNkZWZpbmUgTUFDSF9QT1JUX1RZUEVfTEFCRUxIIE1BQ0hf
UE9SVF9UWVBFKE1BQ0hfUE9SVF9SSUdIVF9MQUJFTEgpCgoKCiNkZWZpbmUgTUFDSF9QT1JUX1RZ
UEVfU0VORF9SRUNFSVZFIChNQUNIX1BPUlRfVFlQRV9TRU5EfE1BQ0hfUE9SVF9UWVBFX1JFQ0VJ
VkUpCgojZGVmaW5lIE1BQ0hfUE9SVF9UWVBFX1NFTkRfUklHSFRTIChNQUNIX1BPUlRfVFlQRV9T
RU5EfE1BQ0hfUE9SVF9UWVBFX1NFTkRfT05DRSkKCiNkZWZpbmUgTUFDSF9QT1JUX1RZUEVfUE9S
VF9SSUdIVFMgKE1BQ0hfUE9SVF9UWVBFX1NFTkRfUklHSFRTfE1BQ0hfUE9SVF9UWVBFX1JFQ0VJ
VkUpCgojZGVmaW5lIE1BQ0hfUE9SVF9UWVBFX1BPUlRfT1JfREVBRCAoTUFDSF9QT1JUX1RZUEVf
UE9SVF9SSUdIVFN8TUFDSF9QT1JUX1RZUEVfREVBRF9OQU1FKQoKI2RlZmluZSBNQUNIX1BPUlRf
VFlQRV9BTExfUklHSFRTIChNQUNIX1BPUlRfVFlQRV9QT1JUX09SX0RFQUR8TUFDSF9QT1JUX1RZ
UEVfUE9SVF9TRVQpCgoKCgojZGVmaW5lIE1BQ0hfUE9SVF9UWVBFX0ROUkVRVUVTVCAweDgwMDAw
MDAwCgoKCnR5cGVkZWYgbmF0dXJhbF90IG1hY2hfcG9ydF91cmVmc190Owp0eXBlZGVmIGludGVn
ZXJfdCBtYWNoX3BvcnRfZGVsdGFfdDsKCgoKdHlwZWRlZiBuYXR1cmFsX3QgbWFjaF9wb3J0X3Nl
cW5vX3Q7CnR5cGVkZWYgbmF0dXJhbF90IG1hY2hfcG9ydF9tc2NvdW50X3Q7CnR5cGVkZWYgbmF0
dXJhbF90IG1hY2hfcG9ydF9tc2djb3VudF90Owp0eXBlZGVmIG5hdHVyYWxfdCBtYWNoX3BvcnRf
cmlnaHRzX3Q7CgoKCgojZGVmaW5lIE1BQ0hfUE9SVF9TUklHSFRTX05PTkUgMAojZGVmaW5lIE1B
Q0hfUE9SVF9TUklHSFRTX1BSRVNFTlQgMQp0eXBlZGVmIHVuc2lnbmVkIGludCBtYWNoX3BvcnRf
c3JpZ2h0c190OwoKdHlwZWRlZiBzdHJ1Y3QgbWFjaF9wb3J0X3N0YXR1cyB7CiBtYWNoX3BvcnRf
cmlnaHRzX3QgbXBzX3BzZXQ7CiBtYWNoX3BvcnRfc2Vxbm9fdCBtcHNfc2Vxbm87CiBtYWNoX3Bv
cnRfbXNjb3VudF90IG1wc19tc2NvdW50OwogbWFjaF9wb3J0X21zZ2NvdW50X3QgbXBzX3FsaW1p
dDsKIG1hY2hfcG9ydF9tc2djb3VudF90IG1wc19tc2djb3VudDsKIG1hY2hfcG9ydF9yaWdodHNf
dCBtcHNfc29yaWdodHM7CiBib29sZWFuX3QgbXBzX3NyaWdodHM7CiBib29sZWFuX3QgbXBzX3Bk
cmVxdWVzdDsKIGJvb2xlYW5fdCBtcHNfbnNyZXF1ZXN0OwogbmF0dXJhbF90IG1wc19mbGFnczsK
fSBtYWNoX3BvcnRfc3RhdHVzX3Q7CgoKI2RlZmluZSBNQUNIX1BPUlRfUUxJTUlUX1pFUk8gKCht
YWNoX3BvcnRfbXNnY291bnRfdCkgMCkKI2RlZmluZSBNQUNIX1BPUlRfUUxJTUlUX0JBU0lDICgo
bWFjaF9wb3J0X21zZ2NvdW50X3QpIDUpCiNkZWZpbmUgTUFDSF9QT1JUX1FMSU1JVF9TTUFMTCAo
KG1hY2hfcG9ydF9tc2djb3VudF90KSAxNikKI2RlZmluZSBNQUNIX1BPUlRfUUxJTUlUX0xBUkdF
ICgobWFjaF9wb3J0X21zZ2NvdW50X3QpIDEwMjQpCiNkZWZpbmUgTUFDSF9QT1JUX1FMSU1JVF9L
RVJORUwgKChtYWNoX3BvcnRfbXNnY291bnRfdCkgNjU1MzYpCiNkZWZpbmUgTUFDSF9QT1JUX1FM
SU1JVF9NSU4gTUFDSF9QT1JUX1FMSU1JVF9aRVJPCiNkZWZpbmUgTUFDSF9QT1JUX1FMSU1JVF9E
RUZBVUxUIE1BQ0hfUE9SVF9RTElNSVRfQkFTSUMKI2RlZmluZSBNQUNIX1BPUlRfUUxJTUlUX01B
WCBNQUNIX1BPUlRfUUxJTUlUX0xBUkdFCgp0eXBlZGVmIHN0cnVjdCBtYWNoX3BvcnRfbGltaXRz
IHsKIG1hY2hfcG9ydF9tc2djb3VudF90IG1wbF9xbGltaXQ7Cn0gbWFjaF9wb3J0X2xpbWl0c190
OwoKdHlwZWRlZiBpbnRlZ2VyX3QgKm1hY2hfcG9ydF9pbmZvX3Q7CgoKdHlwZWRlZiBpbnQgbWFj
aF9wb3J0X2ZsYXZvcl90OwojZGVmaW5lIE1BQ0hfUE9SVF9MSU1JVFNfSU5GTyAxCiNkZWZpbmUg
TUFDSF9QT1JUX1JFQ0VJVkVfU1RBVFVTIDIKI2RlZmluZSBNQUNIX1BPUlRfRE5SRVFVRVNUU19T
SVpFIDMKCiNkZWZpbmUgTUFDSF9QT1JUX0xJTUlUU19JTkZPX0NPVU5UICgobmF0dXJhbF90KSAo
c2l6ZW9mKG1hY2hfcG9ydF9saW1pdHNfdCkvc2l6ZW9mKG5hdHVyYWxfdCkpKQoKI2RlZmluZSBN
QUNIX1BPUlRfUkVDRUlWRV9TVEFUVVNfQ09VTlQgKChuYXR1cmFsX3QpIChzaXplb2YobWFjaF9w
b3J0X3N0YXR1c190KS9zaXplb2YobmF0dXJhbF90KSkpCgojZGVmaW5lIE1BQ0hfUE9SVF9ETlJF
UVVFU1RTX1NJWkVfQ09VTlQgMQoKCgoKCnR5cGVkZWYgc3RydWN0IG1hY2hfcG9ydF9xb3Mgewog
dW5zaWduZWQgaW50IG5hbWU6MTsKIHVuc2lnbmVkIGludCBwcmVhbGxvYzoxOwogYm9vbGVhbl90
IHBhZDE6MzA7CiBuYXR1cmFsX3QgbGVuOwp9IG1hY2hfcG9ydF9xb3NfdDsKIyAxNCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZS
dW5Mb29wLmgiIDIgMwoKCmV4dGVybiAiQyIgewoKdHlwZWRlZiBzdHJ1Y3QgX19DRlJ1bkxvb3Ag
KiBDRlJ1bkxvb3BSZWY7Cgp0eXBlZGVmIHN0cnVjdCBfX0NGUnVuTG9vcFNvdXJjZSAqIENGUnVu
TG9vcFNvdXJjZVJlZjsKCnR5cGVkZWYgc3RydWN0IF9fQ0ZSdW5Mb29wT2JzZXJ2ZXIgKiBDRlJ1
bkxvb3BPYnNlcnZlclJlZjsKCnR5cGVkZWYgc3RydWN0IF9fQ0ZSdW5Mb29wVGltZXIgKiBDRlJ1
bkxvb3BUaW1lclJlZjsKCgplbnVtIHsKICAgIGtDRlJ1bkxvb3BSdW5GaW5pc2hlZCA9IDEsCiAg
ICBrQ0ZSdW5Mb29wUnVuU3RvcHBlZCA9IDIsCiAgICBrQ0ZSdW5Mb29wUnVuVGltZWRPdXQgPSAz
LAogICAga0NGUnVuTG9vcFJ1bkhhbmRsZWRTb3VyY2UgPSA0Cn07CgoKZW51bSB7CiAgICBrQ0ZS
dW5Mb29wRW50cnkgPSAoMVVMIDw8IDApLAogICAga0NGUnVuTG9vcEJlZm9yZVRpbWVycyA9ICgx
VUwgPDwgMSksCiAgICBrQ0ZSdW5Mb29wQmVmb3JlU291cmNlcyA9ICgxVUwgPDwgMiksCiAgICBr
Q0ZSdW5Mb29wQmVmb3JlV2FpdGluZyA9ICgxVUwgPDwgNSksCiAgICBrQ0ZSdW5Mb29wQWZ0ZXJX
YWl0aW5nID0gKDFVTCA8PCA2KSwKICAgIGtDRlJ1bkxvb3BFeGl0ID0gKDFVTCA8PCA3KSwKICAg
IGtDRlJ1bkxvb3BBbGxBY3Rpdml0aWVzID0gMHgwRkZGRkZGRlUKfTsKdHlwZWRlZiBDRk9wdGlv
bkZsYWdzIENGUnVuTG9vcEFjdGl2aXR5OwoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZTsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlJ1bkxvb3BDb21t
b25Nb2RlczsKCmV4dGVybiBDRlR5cGVJRCBDRlJ1bkxvb3BHZXRUeXBlSUQodm9pZCk7CgpleHRl
cm4gQ0ZSdW5Mb29wUmVmIENGUnVuTG9vcEdldEN1cnJlbnQodm9pZCk7CmV4dGVybiBDRlJ1bkxv
b3BSZWYgQ0ZSdW5Mb29wR2V0TWFpbih2b2lkKSA7CgpleHRlcm4gQ0ZTdHJpbmdSZWYgQ0ZSdW5M
b29wQ29weUN1cnJlbnRNb2RlKENGUnVuTG9vcFJlZiBybCk7CgpleHRlcm4gQ0ZBcnJheVJlZiBD
RlJ1bkxvb3BDb3B5QWxsTW9kZXMoQ0ZSdW5Mb29wUmVmIHJsKTsKCmV4dGVybiB2b2lkIENGUnVu
TG9vcEFkZENvbW1vbk1vZGUoQ0ZSdW5Mb29wUmVmIHJsLCBDRlN0cmluZ1JlZiBtb2RlKTsKCmV4
dGVybiBDRkFic29sdXRlVGltZSBDRlJ1bkxvb3BHZXROZXh0VGltZXJGaXJlRGF0ZShDRlJ1bkxv
b3BSZWYgcmwsIENGU3RyaW5nUmVmIG1vZGUpOwoKZXh0ZXJuIHZvaWQgQ0ZSdW5Mb29wUnVuKHZv
aWQpOwpleHRlcm4gU0ludDMyIENGUnVuTG9vcFJ1bkluTW9kZShDRlN0cmluZ1JlZiBtb2RlLCBD
RlRpbWVJbnRlcnZhbCBzZWNvbmRzLCBCb29sZWFuIHJldHVybkFmdGVyU291cmNlSGFuZGxlZCk7
CmV4dGVybiBCb29sZWFuIENGUnVuTG9vcElzV2FpdGluZyhDRlJ1bkxvb3BSZWYgcmwpOwpleHRl
cm4gdm9pZCBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29wUmVmIHJsKTsKZXh0ZXJuIHZvaWQgQ0ZS
dW5Mb29wU3RvcChDRlJ1bkxvb3BSZWYgcmwpOwoKCmV4dGVybiB2b2lkIENGUnVuTG9vcFBlcmZv
cm1CbG9jayhDRlJ1bkxvb3BSZWYgcmwsIENGVHlwZVJlZiBtb2RlLCB2b2lkICheYmxvY2spKHZv
aWQpKSA7CgoKZXh0ZXJuIEJvb2xlYW4gQ0ZSdW5Mb29wQ29udGFpbnNTb3VyY2UoQ0ZSdW5Mb29w
UmVmIHJsLCBDRlJ1bkxvb3BTb3VyY2VSZWYgc291cmNlLCBDRlN0cmluZ1JlZiBtb2RlKTsKZXh0
ZXJuIHZvaWQgQ0ZSdW5Mb29wQWRkU291cmNlKENGUnVuTG9vcFJlZiBybCwgQ0ZSdW5Mb29wU291
cmNlUmVmIHNvdXJjZSwgQ0ZTdHJpbmdSZWYgbW9kZSk7CmV4dGVybiB2b2lkIENGUnVuTG9vcFJl
bW92ZVNvdXJjZShDRlJ1bkxvb3BSZWYgcmwsIENGUnVuTG9vcFNvdXJjZVJlZiBzb3VyY2UsIENG
U3RyaW5nUmVmIG1vZGUpOwoKZXh0ZXJuIEJvb2xlYW4gQ0ZSdW5Mb29wQ29udGFpbnNPYnNlcnZl
cihDRlJ1bkxvb3BSZWYgcmwsIENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlN0cmlu
Z1JlZiBtb2RlKTsKZXh0ZXJuIHZvaWQgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wUmVm
IHJsLCBDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZTdHJpbmdSZWYgbW9kZSk7CmV4
dGVybiB2b2lkIENGUnVuTG9vcFJlbW92ZU9ic2VydmVyKENGUnVuTG9vcFJlZiBybCwgQ0ZSdW5M
b29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGU3RyaW5nUmVmIG1vZGUpOwoKZXh0ZXJuIEJvb2xl
YW4gQ0ZSdW5Mb29wQ29udGFpbnNUaW1lcihDRlJ1bkxvb3BSZWYgcmwsIENGUnVuTG9vcFRpbWVy
UmVmIHRpbWVyLCBDRlN0cmluZ1JlZiBtb2RlKTsKZXh0ZXJuIHZvaWQgQ0ZSdW5Mb29wQWRkVGlt
ZXIoQ0ZSdW5Mb29wUmVmIHJsLCBDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgQ0ZTdHJpbmdSZWYg
bW9kZSk7CmV4dGVybiB2b2lkIENGUnVuTG9vcFJlbW92ZVRpbWVyKENGUnVuTG9vcFJlZiBybCwg
Q0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIENGU3RyaW5nUmVmIG1vZGUpOwoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgQ0ZJbmRleCB2ZXJzaW9uOwogICAgdm9pZCAqIGluZm87CiAgICBjb25zdCB2b2lk
ICooKnJldGFpbikoY29uc3Qgdm9pZCAqaW5mbyk7CiAgICB2b2lkICgqcmVsZWFzZSkoY29uc3Qg
dm9pZCAqaW5mbyk7CiAgICBDRlN0cmluZ1JlZiAoKmNvcHlEZXNjcmlwdGlvbikoY29uc3Qgdm9p
ZCAqaW5mbyk7CiAgICBCb29sZWFuICgqZXF1YWwpKGNvbnN0IHZvaWQgKmluZm8xLCBjb25zdCB2
b2lkICppbmZvMik7CiAgICBDRkhhc2hDb2RlICgqaGFzaCkoY29uc3Qgdm9pZCAqaW5mbyk7CiAg
ICB2b2lkICgqc2NoZWR1bGUpKHZvaWQgKmluZm8sIENGUnVuTG9vcFJlZiBybCwgQ0ZTdHJpbmdS
ZWYgbW9kZSk7CiAgICB2b2lkICgqY2FuY2VsKSh2b2lkICppbmZvLCBDRlJ1bkxvb3BSZWYgcmws
IENGU3RyaW5nUmVmIG1vZGUpOwogICAgdm9pZCAoKnBlcmZvcm0pKHZvaWQgKmluZm8pOwp9IENG
UnVuTG9vcFNvdXJjZUNvbnRleHQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDRkluZGV4IHZlcnNp
b247CiAgICB2b2lkICogaW5mbzsKICAgIGNvbnN0IHZvaWQgKigqcmV0YWluKShjb25zdCB2b2lk
ICppbmZvKTsKICAgIHZvaWQgKCpyZWxlYXNlKShjb25zdCB2b2lkICppbmZvKTsKICAgIENGU3Ry
aW5nUmVmICgqY29weURlc2NyaXB0aW9uKShjb25zdCB2b2lkICppbmZvKTsKICAgIEJvb2xlYW4g
KCplcXVhbCkoY29uc3Qgdm9pZCAqaW5mbzEsIGNvbnN0IHZvaWQgKmluZm8yKTsKICAgIENGSGFz
aENvZGUgKCpoYXNoKShjb25zdCB2b2lkICppbmZvKTsKCiAgICBtYWNoX3BvcnRfdCAoKmdldFBv
cnQpKHZvaWQgKmluZm8pOwogICAgdm9pZCAqICgqcGVyZm9ybSkodm9pZCAqbXNnLCBDRkluZGV4
IHNpemUsIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgdm9pZCAqaW5mbyk7CgoKCgp9IENGUnVu
TG9vcFNvdXJjZUNvbnRleHQxOwoKZXh0ZXJuIENGVHlwZUlEIENGUnVuTG9vcFNvdXJjZUdldFR5
cGVJRCh2b2lkKTsKCmV4dGVybiBDRlJ1bkxvb3BTb3VyY2VSZWYgQ0ZSdW5Mb29wU291cmNlQ3Jl
YXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZJbmRleCBvcmRlciwgQ0ZSdW5Mb29wU291
cmNlQ29udGV4dCAqY29udGV4dCk7CgpleHRlcm4gQ0ZJbmRleCBDRlJ1bkxvb3BTb3VyY2VHZXRP
cmRlcihDRlJ1bkxvb3BTb3VyY2VSZWYgc291cmNlKTsKZXh0ZXJuIHZvaWQgQ0ZSdW5Mb29wU291
cmNlSW52YWxpZGF0ZShDRlJ1bkxvb3BTb3VyY2VSZWYgc291cmNlKTsKZXh0ZXJuIEJvb2xlYW4g
Q0ZSdW5Mb29wU291cmNlSXNWYWxpZChDRlJ1bkxvb3BTb3VyY2VSZWYgc291cmNlKTsKZXh0ZXJu
IHZvaWQgQ0ZSdW5Mb29wU291cmNlR2V0Q29udGV4dChDRlJ1bkxvb3BTb3VyY2VSZWYgc291cmNl
LCBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0ICpjb250ZXh0KTsKZXh0ZXJuIHZvaWQgQ0ZSdW5Mb29w
U291cmNlU2lnbmFsKENGUnVuTG9vcFNvdXJjZVJlZiBzb3VyY2UpOwoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgQ0ZJbmRleCB2ZXJzaW9uOwogICAgdm9pZCAqIGluZm87CiAgICBjb25zdCB2b2lkICoo
KnJldGFpbikoY29uc3Qgdm9pZCAqaW5mbyk7CiAgICB2b2lkICgqcmVsZWFzZSkoY29uc3Qgdm9p
ZCAqaW5mbyk7CiAgICBDRlN0cmluZ1JlZiAoKmNvcHlEZXNjcmlwdGlvbikoY29uc3Qgdm9pZCAq
aW5mbyk7Cn0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDb250ZXh0OwoKdHlwZWRlZiB2b2lkICgqQ0ZSdW5M
b29wT2JzZXJ2ZXJDYWxsQmFjaykoQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGUnVu
TG9vcEFjdGl2aXR5IGFjdGl2aXR5LCB2b2lkICppbmZvKTsKCmV4dGVybiBDRlR5cGVJRCBDRlJ1
bkxvb3BPYnNlcnZlckdldFR5cGVJRCh2b2lkKTsKCmV4dGVybiBDRlJ1bkxvb3BPYnNlcnZlclJl
ZiBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGT3B0
aW9uRmxhZ3MgYWN0aXZpdGllcywgQm9vbGVhbiByZXBlYXRzLCBDRkluZGV4IG9yZGVyLCBDRlJ1
bkxvb3BPYnNlcnZlckNhbGxCYWNrIGNhbGxvdXQsIENGUnVuTG9vcE9ic2VydmVyQ29udGV4dCAq
Y29udGV4dCk7CgpleHRlcm4gQ0ZPcHRpb25GbGFncyBDRlJ1bkxvb3BPYnNlcnZlckdldEFjdGl2
aXRpZXMoQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIpOwpleHRlcm4gQm9vbGVhbiBDRlJ1
bkxvb3BPYnNlcnZlckRvZXNSZXBlYXQoQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIpOwpl
eHRlcm4gQ0ZJbmRleCBDRlJ1bkxvb3BPYnNlcnZlckdldE9yZGVyKENGUnVuTG9vcE9ic2VydmVy
UmVmIG9ic2VydmVyKTsKZXh0ZXJuIHZvaWQgQ0ZSdW5Mb29wT2JzZXJ2ZXJJbnZhbGlkYXRlKENG
UnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVyKTsKZXh0ZXJuIEJvb2xlYW4gQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJJc1ZhbGlkKENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVyKTsKZXh0ZXJuIHZvaWQg
Q0ZSdW5Mb29wT2JzZXJ2ZXJHZXRDb250ZXh0KENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVy
LCBDRlJ1bkxvb3BPYnNlcnZlckNvbnRleHQgKmNvbnRleHQpOwoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgQ0ZJbmRleCB2ZXJzaW9uOwogICAgdm9pZCAqIGluZm87CiAgICBjb25zdCB2b2lkICooKnJl
dGFpbikoY29uc3Qgdm9pZCAqaW5mbyk7CiAgICB2b2lkICgqcmVsZWFzZSkoY29uc3Qgdm9pZCAq
aW5mbyk7CiAgICBDRlN0cmluZ1JlZiAoKmNvcHlEZXNjcmlwdGlvbikoY29uc3Qgdm9pZCAqaW5m
byk7Cn0gQ0ZSdW5Mb29wVGltZXJDb250ZXh0OwoKdHlwZWRlZiB2b2lkICgqQ0ZSdW5Mb29wVGlt
ZXJDYWxsQmFjaykoQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQgKmluZm8pOwoKZXh0ZXJu
IENGVHlwZUlEIENGUnVuTG9vcFRpbWVyR2V0VHlwZUlEKHZvaWQpOwoKZXh0ZXJuIENGUnVuTG9v
cFRpbWVyUmVmIENGUnVuTG9vcFRpbWVyQ3JlYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwg
Q0ZBYnNvbHV0ZVRpbWUgZmlyZURhdGUsIENGVGltZUludGVydmFsIGludGVydmFsLCBDRk9wdGlv
bkZsYWdzIGZsYWdzLCBDRkluZGV4IG9yZGVyLCBDRlJ1bkxvb3BUaW1lckNhbGxCYWNrIGNhbGxv
dXQsIENGUnVuTG9vcFRpbWVyQ29udGV4dCAqY29udGV4dCk7CmV4dGVybiBDRkFic29sdXRlVGlt
ZSBDRlJ1bkxvb3BUaW1lckdldE5leHRGaXJlRGF0ZShDRlJ1bkxvb3BUaW1lclJlZiB0aW1lcik7
CmV4dGVybiB2b2lkIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKENGUnVuTG9vcFRpbWVy
UmVmIHRpbWVyLCBDRkFic29sdXRlVGltZSBmaXJlRGF0ZSk7CmV4dGVybiBDRlRpbWVJbnRlcnZh
bCBDRlJ1bkxvb3BUaW1lckdldEludGVydmFsKENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyKTsKZXh0
ZXJuIEJvb2xlYW4gQ0ZSdW5Mb29wVGltZXJEb2VzUmVwZWF0KENGUnVuTG9vcFRpbWVyUmVmIHRp
bWVyKTsKZXh0ZXJuIENGSW5kZXggQ0ZSdW5Mb29wVGltZXJHZXRPcmRlcihDRlJ1bkxvb3BUaW1l
clJlZiB0aW1lcik7CmV4dGVybiB2b2lkIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShDRlJ1bkxv
b3BUaW1lclJlZiB0aW1lcik7CmV4dGVybiBCb29sZWFuIENGUnVuTG9vcFRpbWVySXNWYWxpZChD
RlJ1bkxvb3BUaW1lclJlZiB0aW1lcik7CmV4dGVybiB2b2lkIENGUnVuTG9vcFRpbWVyR2V0Q29u
dGV4dChDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgQ0ZSdW5Mb29wVGltZXJDb250ZXh0ICpjb250
ZXh0KTsKCn0KIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZNZXNzYWdlUG9ydC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVk
ZS9kaXNwYXRjaC9kaXNwYXRjaC5oIiAxIDMgNAojIDIyICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gv
ZGlzcGF0Y2guaCIgMyA0CiNkZWZpbmUgX19ESVNQQVRDSF9QVUJMSUNfXyAKCgoKIyAxICIvdXNy
L2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMg
NAojIDI3ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvZGlzcGF0Y2guaCIgMiAzIDQKCgoKCiNkZWZp
bmUgRElTUEFUQ0hfQVBJX1ZFUlNJT04gMjAwOTA1MDEKCgoKCiNkZWZpbmUgX19ESVNQQVRDSF9J
TkRJUkVDVF9fIAoKCiMgMSAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL2Jhc2UuaCIgMSAzIDQKIyAy
MiAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL2Jhc2UuaCIgMyA0CiNkZWZpbmUgX19ESVNQQVRDSF9C
QVNFX18gCiMgMzMgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9iYXNlLmgiIDMgNAp0eXBlZGVmIHN0
cnVjdCBkaXNwYXRjaF9vYmplY3RfcyB7CnByaXZhdGU6CiBkaXNwYXRjaF9vYmplY3RfcygpOwog
fmRpc3BhdGNoX29iamVjdF9zKCk7CiBkaXNwYXRjaF9vYmplY3Rfcyhjb25zdCBkaXNwYXRjaF9v
YmplY3RfcyAmKTsKIHZvaWQgb3BlcmF0b3I9KGNvbnN0IGRpc3BhdGNoX29iamVjdF9zICYpOwp9
ICpkaXNwYXRjaF9vYmplY3RfdDsKIyA1MyAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL2Jhc2UuaCIg
MyA0CnR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX2Z1bmN0aW9uX3QpKHZvaWQgKik7CgoKI2RlZmlu
ZSBESVNQQVRDSF9ERUNMKG5hbWUpIHR5cGVkZWYgc3RydWN0IG5hbWUgIyNfcyA6IHB1YmxpYyBk
aXNwYXRjaF9vYmplY3RfcyB7fSAqbmFtZSAjI190OwoKCgoKCgojZGVmaW5lIERJU1BBVENIX05P
UkVUVVJOIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpCiNkZWZpbmUgRElTUEFUQ0hfTk9U
SFJPVyBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3dfXykpCiNkZWZpbmUgRElTUEFUQ0hfTk9OTlVM
TDEgX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oMSkpKQojZGVmaW5lIERJU1BBVENIX05PTk5V
TEwyIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKDIpKSkKI2RlZmluZSBESVNQQVRDSF9OT05O
VUxMMyBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXygzKSkpCiNkZWZpbmUgRElTUEFUQ0hfTk9O
TlVMTDQgX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oNCkpKQojZGVmaW5lIERJU1BBVENIX05P
Tk5VTEw1IF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKDUpKSkKI2RlZmluZSBESVNQQVRDSF9O
T05OVUxMNiBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyg2KSkpCiNkZWZpbmUgRElTUEFUQ0hf
Tk9OTlVMTDcgX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oNykpKQoKCgoKI2RlZmluZSBESVNQ
QVRDSF9OT05OVUxMX0FMTCBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXykpCgojZGVmaW5lIERJ
U1BBVENIX1NFTlRJTkVMIF9fYXR0cmlidXRlX18oKF9fc2VudGluZWxfXykpCiNkZWZpbmUgRElT
UEFUQ0hfUFVSRSBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpCiNkZWZpbmUgRElTUEFUQ0hfV0FS
Tl9SRVNVTFQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCiNkZWZpbmUg
RElTUEFUQ0hfTUFMTE9DIF9fYXR0cmlidXRlX18oKF9fbWFsbG9jX18pKQojIDQwICIvdXNyL2lu
Y2x1ZGUvZGlzcGF0Y2gvZGlzcGF0Y2guaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvZGlzcGF0
Y2gvb2JqZWN0LmgiIDEgMyA0CiMgMjIgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9vYmplY3QuaCIg
MyA0CiNkZWZpbmUgX19ESVNQQVRDSF9PQkpFQ1RfXyAKCgoKCgoKZXh0ZXJuICJDIiB7CiMgNDMg
Ii91c3IvaW5jbHVkZS9kaXNwYXRjaC9vYmplY3QuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpCl9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKDIpKSkgX19hdHRy
aWJ1dGVfXygoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50Ziwy
LDMpKSkKdm9pZApkaXNwYXRjaF9kZWJ1ZyhkaXNwYXRjaF9vYmplY3RfdCBvYmplY3QsIGNvbnN0
IGNoYXIgKm1lc3NhZ2UsIC4uLik7CgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKQpfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXygyKSkpIF9fYXR0cmlidXRlX18oKF9fbm90
aHJvd19fKSkgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsMiwwKSkpCnZvaWQKZGlz
cGF0Y2hfZGVidWd2KGRpc3BhdGNoX29iamVjdF90IG9iamVjdCwgY29uc3QgY2hhciAqbWVzc2Fn
ZSwgdmFfbGlzdCBhcCk7CiMgNjcgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9vYmplY3QuaCIgMyA0
Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCl9fYXR0cmlidXRlX18oKF9f
bm9ubnVsbF9fKSkgX19hdHRyaWJ1dGVfXygoX19ub3Rocm93X18pKQp2b2lkCmRpc3BhdGNoX3Jl
dGFpbihkaXNwYXRjaF9vYmplY3RfdCBvYmplY3QpOwojIDg4ICIvdXNyL2luY2x1ZGUvZGlzcGF0
Y2gvb2JqZWN0LmgiIDMgNApfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQpf
X2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXykpIF9fYXR0cmlidXRlX18oKF9fbm90aHJvd19fKSkK
dm9pZApkaXNwYXRjaF9yZWxlYXNlKGRpc3BhdGNoX29iamVjdF90IG9iamVjdCk7CiMgMTA1ICIv
dXNyL2luY2x1ZGUvZGlzcGF0Y2gvb2JqZWN0LmgiIDMgNApfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKQpfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXykpIF9fYXR0cmlidXRl
X18oKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIF9f
YXR0cmlidXRlX18oKF9fbm90aHJvd19fKSkKdm9pZCAqCmRpc3BhdGNoX2dldF9jb250ZXh0KGRp
c3BhdGNoX29iamVjdF90IG9iamVjdCk7CiMgMTIzICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvb2Jq
ZWN0LmgiIDMgNApfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQpfX2F0dHJp
YnV0ZV9fKChfX25vdGhyb3dfXykpCnZvaWQKZGlzcGF0Y2hfc2V0X2NvbnRleHQoZGlzcGF0Y2hf
b2JqZWN0X3Qgb2JqZWN0LCB2b2lkICpjb250ZXh0KTsKIyAxNDkgIi91c3IvaW5jbHVkZS9kaXNw
YXRjaC9vYmplY3QuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
Cl9fYXR0cmlidXRlX18oKF9fbm90aHJvd19fKSkKdm9pZApkaXNwYXRjaF9zZXRfZmluYWxpemVy
X2YoZGlzcGF0Y2hfb2JqZWN0X3Qgb2JqZWN0LAogZGlzcGF0Y2hfZnVuY3Rpb25fdCBmaW5hbGl6
ZXIpOwojIDE3MyAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL29iamVjdC5oIiAzIDQKX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18p
KSBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3dfXykpCnZvaWQKZGlzcGF0Y2hfc3VzcGVuZChkaXNw
YXRjaF9vYmplY3RfdCBvYmplY3QpOwojIDE4OCAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL29iamVj
dC5oIiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1
dGVfXygoX19ub25udWxsX18pKSBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3dfXykpCnZvaWQKZGlz
cGF0Y2hfcmVzdW1lKGRpc3BhdGNoX29iamVjdF90IG9iamVjdCk7Cgp9CiMgNDEgIi91c3IvaW5j
bHVkZS9kaXNwYXRjaC9kaXNwYXRjaC5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9kaXNwYXRj
aC90aW1lLmgiIDEgMyA0CiMgMjIgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC90aW1lLmgiIDMgNAoj
ZGVmaW5lIF9fRElTUEFUQ0hfVElNRV9fIAojIDMxICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvdGlt
ZS5oIiAzIDQKZXh0ZXJuICJDIiB7CgpzdHJ1Y3QgdGltZXNwZWM7CiMgNDUgIi91c3IvaW5jbHVk
ZS9kaXNwYXRjaC90aW1lLmgiIDMgNAojZGVmaW5lIE5TRUNfUEVSX1NFQyAxMDAwMDAwMDAwdWxs
CiNkZWZpbmUgVVNFQ19QRVJfU0VDIDEwMDAwMDB1bGwKI2RlZmluZSBOU0VDX1BFUl9VU0VDIDEw
MDB1bGwKIyA1NyAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3RpbWUuaCIgMyA0CnR5cGVkZWYgdWlu
dDY0X3QgZGlzcGF0Y2hfdGltZV90OwoKI2RlZmluZSBESVNQQVRDSF9USU1FX05PVyAwCiNkZWZp
bmUgRElTUEFUQ0hfVElNRV9GT1JFVkVSICh+MHVsbCkKIyA4MiAiL3Vzci9pbmNsdWRlL2Rpc3Bh
dGNoL3RpbWUuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCl9f
YXR0cmlidXRlX18oKF9fbm90aHJvd19fKSkKZGlzcGF0Y2hfdGltZV90CmRpc3BhdGNoX3RpbWUo
ZGlzcGF0Y2hfdGltZV90IHdoZW4sIGludDY0X3QgZGVsdGEpOwojIDEwNiAiL3Vzci9pbmNsdWRl
L2Rpc3BhdGNoL3RpbWUuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpCl9fYXR0cmlidXRlX18oKF9fbm90aHJvd19fKSkKZGlzcGF0Y2hfdGltZV90CmRpc3BhdGNo
X3dhbGx0aW1lKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqd2hlbiwgaW50NjRfdCBkZWx0YSk7Cgp9
CiMgNDIgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9kaXNwYXRjaC5oIiAyIDMgNAojIDEgIi91c3Iv
aW5jbHVkZS9kaXNwYXRjaC9xdWV1ZS5oIiAxIDMgNAojIDIyICIvdXNyL2luY2x1ZGUvZGlzcGF0
Y2gvcXVldWUuaCIgMyA0CiNkZWZpbmUgX19ESVNQQVRDSF9RVUVVRV9fIAojIDY3ICIvdXNyL2lu
Y2x1ZGUvZGlzcGF0Y2gvcXVldWUuaCIgMyA0CnR5cGVkZWYgc3RydWN0IGRpc3BhdGNoX3F1ZXVl
X3MgOiBwdWJsaWMgZGlzcGF0Y2hfb2JqZWN0X3Mge30gKmRpc3BhdGNoX3F1ZXVlX3Q7OwoKCgoK
CgoKdHlwZWRlZiBzdHJ1Y3QgZGlzcGF0Y2hfcXVldWVfYXR0cl9zIDogcHVibGljIGRpc3BhdGNo
X29iamVjdF9zIHt9ICpkaXNwYXRjaF9xdWV1ZV9hdHRyX3Q7OwojIDExMSAiL3Vzci9pbmNsdWRl
L2Rpc3BhdGNoL3F1ZXVlLmgiIDMgNAp0eXBlZGVmIHZvaWQgKF5kaXNwYXRjaF9ibG9ja190KSh2
b2lkKTsKCgpleHRlcm4gIkMiIHsKIyAxNDUgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9xdWV1ZS5o
IiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1dGVf
XygoX19ub25udWxsX18pKSBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3dfXykpCnZvaWQKZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSwgZGlzcGF0Y2hfYmxvY2tfdCBibG9jayk7
CiMgMTc1ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvcXVldWUuaCIgMyA0Cl9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCl9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKDEpKSkg
X19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oMykpKSBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3df
XykpCnZvaWQKZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlLAogdm9pZCAq
Y29udGV4dCwKIGRpc3BhdGNoX2Z1bmN0aW9uX3Qgd29yayk7CiMgMjEzICIvdXNyL2luY2x1ZGUv
ZGlzcGF0Y2gvcXVldWUuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpCl9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKSkgX19hdHRyaWJ1dGVfXygoX19ub3Rocm93
X18pKQp2b2lkCmRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSwgZGlzcGF0Y2hf
YmxvY2tfdCBibG9jayk7CiMgMjQxICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvcXVldWUuaCIgMyA0
Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCl9fYXR0cmlidXRlX18oKF9f
bm9ubnVsbF9fKDEpKSkgX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oMykpKSBfX2F0dHJpYnV0
ZV9fKChfX25vdGhyb3dfXykpCnZvaWQKZGlzcGF0Y2hfc3luY19mKGRpc3BhdGNoX3F1ZXVlX3Qg
cXVldWUsCiB2b2lkICpjb250ZXh0LAogZGlzcGF0Y2hfZnVuY3Rpb25fdCB3b3JrKTsKIyAyNzQg
Ii91c3IvaW5jbHVkZS9kaXNwYXRjaC9xdWV1ZS5oIiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18pKSBfX2F0dHJpYnV0
ZV9fKChfX25vdGhyb3dfXykpCnZvaWQKZGlzcGF0Y2hfYXBwbHkoc2l6ZV90IGl0ZXJhdGlvbnMs
IGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsIHZvaWQgKF5ibG9jaykoc2l6ZV90KSk7CiMgMzA2ICIv
dXNyL2luY2x1ZGUvZGlzcGF0Y2gvcXVldWUuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpCl9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKDIpKSkgX19hdHRyaWJ1
dGVfXygoX19ub25udWxsX18oNCkpKSBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3dfXykpCnZvaWQK
ZGlzcGF0Y2hfYXBwbHlfZihzaXplX3QgaXRlcmF0aW9ucywgZGlzcGF0Y2hfcXVldWVfdCBxdWV1
ZSwKIHZvaWQgKmNvbnRleHQsCiB2b2lkICgqd29yaykodm9pZCAqLCBzaXplX3QpKTsKIyAzMjgg
Ii91c3IvaW5jbHVkZS9kaXNwYXRjaC9xdWV1ZS5oIiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1dGVfXygoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9f
KChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX19hdHRyaWJ1dGVfXygoX19ub3Rocm93X18pKQpk
aXNwYXRjaF9xdWV1ZV90CmRpc3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKHZvaWQpOwojIDM0OCAi
L3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3F1ZXVlLmgiIDMgNApfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKQpleHRlcm4gc3RydWN0IGRpc3BhdGNoX3F1ZXVlX3MgX2Rpc3BhdGNo
X21haW5fcTsKI2RlZmluZSBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpICgmX2Rpc3BhdGNoX21h
aW5fcSkKIyAzNzIgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9xdWV1ZS5oIiAzIDQKZW51bSB7CiBE
SVNQQVRDSF9RVUVVRV9QUklPUklUWV9ISUdIID0gMiwKIERJU1BBVENIX1FVRVVFX1BSSU9SSVRZ
X0RFRkFVTFQgPSAwLAogRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfTE9XID0gLTIsCn07CiMgMzk5
ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvcXVldWUuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpCl9fYXR0cmlidXRlX18oKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVf
XygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIF9fYXR0cmlidXRlX18oKF9fbm90aHJvd19fKSkK
ZGlzcGF0Y2hfcXVldWVfdApkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKGxvbmcgcHJpb3JpdHks
IHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwojIDQyOCAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3F1ZXVl
LmgiIDMgNApfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQpfX2F0dHJpYnV0
ZV9fKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp
IF9fYXR0cmlidXRlX18oKF9fbm90aHJvd19fKSkKZGlzcGF0Y2hfcXVldWVfdApkaXNwYXRjaF9x
dWV1ZV9jcmVhdGUoY29uc3QgY2hhciAqbGFiZWwsIGRpc3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRy
KTsKIyA0NDYgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9xdWV1ZS5oIiAzIDQKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18pKSBf
X2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVz
dWx0X18pKSBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3dfXykpCmNvbnN0IGNoYXIgKgpkaXNwYXRj
aF9xdWV1ZV9nZXRfbGFiZWwoZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSk7CiMgNDc5ICIvdXNyL2lu
Y2x1ZGUvZGlzcGF0Y2gvcXVldWUuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpCl9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKSkgX19hdHRyaWJ1dGVfXygoX19u
b3Rocm93X18pKQp2b2lkCmRpc3BhdGNoX3NldF90YXJnZXRfcXVldWUoZGlzcGF0Y2hfb2JqZWN0
X3Qgb2JqZWN0LCBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlKTsKIyA0OTcgIi91c3IvaW5jbHVkZS9k
aXNwYXRjaC9xdWV1ZS5oIiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkKX19hdHRyaWJ1dGVfXygoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJu
X18pKQp2b2lkCmRpc3BhdGNoX21haW4odm9pZCk7CiMgNTI1ICIvdXNyL2luY2x1ZGUvZGlzcGF0
Y2gvcXVldWUuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCl9f
YXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKDIpKSkgX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18o
MykpKSBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3dfXykpCnZvaWQKZGlzcGF0Y2hfYWZ0ZXIoZGlz
cGF0Y2hfdGltZV90IHdoZW4sCiBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlLAogZGlzcGF0Y2hfYmxv
Y2tfdCBibG9jayk7CiMgNTU4ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvcXVldWUuaCIgMyA0Cl9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCl9fYXR0cmlidXRlX18oKF9fbm9u
bnVsbF9fKDIpKSkgX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oNCkpKSBfX2F0dHJpYnV0ZV9f
KChfX25vdGhyb3dfXykpCnZvaWQKZGlzcGF0Y2hfYWZ0ZXJfZihkaXNwYXRjaF90aW1lX3Qgd2hl
biwKIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsCiB2b2lkICpjb250ZXh0LAogZGlzcGF0Y2hfZnVu
Y3Rpb25fdCB3b3JrKTsKCn0KIyA0MyAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL2Rpc3BhdGNoLmgi
IDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAxIDMgNAojIDIyICIv
dXNyL2luY2x1ZGUvZGlzcGF0Y2gvc291cmNlLmgiIDMgNAojZGVmaW5lIF9fRElTUEFUQ0hfU09V
UkNFX18gCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9tYWNoL21lc3NhZ2UuaCIgMSAzIDQKIyA3
MiAiL3Vzci9pbmNsdWRlL21hY2gvbWVzc2FnZS5oIiAzIDQKI2RlZmluZSBfTUFDSF9NRVNTQUdF
X0hfIAoKCgoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaC9rZXJuX3JldHVybi5oIiAxIDMgNAojIDY4
ICIvdXNyL2luY2x1ZGUvbWFjaC9rZXJuX3JldHVybi5oIiAzIDQKI2RlZmluZSBfTUFDSF9LRVJO
X1JFVFVSTl9IXyAKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaGluZS9rZXJuX3JldHVybi5o
IiAxIDMgNAojIDMwICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lL2tlcm5fcmV0dXJuLmgiIDMg
NAojZGVmaW5lIF9NQUNIX01BQ0hJTkVfS0VSTl9SRVRVUk5fSF8gCgoKCgojIDEgIi91c3IvaW5j
bHVkZS9tYWNoL2kzODYva2Vybl9yZXR1cm4uaCIgMSAzIDQKIyA2OCAiL3Vzci9pbmNsdWRlL21h
Y2gvaTM4Ni9rZXJuX3JldHVybi5oIiAzIDQKI2RlZmluZSBfTUFDSF9JMzg2X0tFUk5fUkVUVVJO
X0hfIAoKCnR5cGVkZWYgaW50IGtlcm5fcmV0dXJuX3Q7CiMgMzYgIi91c3IvaW5jbHVkZS9tYWNo
L21hY2hpbmUva2Vybl9yZXR1cm4uaCIgMiAzIDQKIyA3MSAiL3Vzci9pbmNsdWRlL21hY2gva2Vy
bl9yZXR1cm4uaCIgMiAzIDQKCiNkZWZpbmUgS0VSTl9TVUNDRVNTIDAKCiNkZWZpbmUgS0VSTl9J
TlZBTElEX0FERFJFU1MgMQoKCgojZGVmaW5lIEtFUk5fUFJPVEVDVElPTl9GQUlMVVJFIDIKCgoK
CiNkZWZpbmUgS0VSTl9OT19TUEFDRSAzCgoKCgoKI2RlZmluZSBLRVJOX0lOVkFMSURfQVJHVU1F
TlQgNAoKCgoKI2RlZmluZSBLRVJOX0ZBSUxVUkUgNQoKCgojZGVmaW5lIEtFUk5fUkVTT1VSQ0Vf
U0hPUlRBR0UgNgoKCgoKI2RlZmluZSBLRVJOX05PVF9SRUNFSVZFUiA3CgoKCgojZGVmaW5lIEtF
Uk5fTk9fQUNDRVNTIDgKCgoKI2RlZmluZSBLRVJOX01FTU9SWV9GQUlMVVJFIDkKCgoKCgojZGVm
aW5lIEtFUk5fTUVNT1JZX0VSUk9SIDEwCgoKCgoKCgojZGVmaW5lIEtFUk5fQUxSRUFEWV9JTl9T
RVQgMTEKCgoKI2RlZmluZSBLRVJOX05PVF9JTl9TRVQgMTIKCgoKI2RlZmluZSBLRVJOX05BTUVf
RVhJU1RTIDEzCgoKCiNkZWZpbmUgS0VSTl9BQk9SVEVEIDE0CgoKCgojZGVmaW5lIEtFUk5fSU5W
QUxJRF9OQU1FIDE1CgoKCiNkZWZpbmUgS0VSTl9JTlZBTElEX1RBU0sgMTYKCgoKI2RlZmluZSBL
RVJOX0lOVkFMSURfUklHSFQgMTcKCgoKI2RlZmluZSBLRVJOX0lOVkFMSURfVkFMVUUgMTgKCgoK
I2RlZmluZSBLRVJOX1VSRUZTX09WRVJGTE9XIDE5CgoKCiNkZWZpbmUgS0VSTl9JTlZBTElEX0NB
UEFCSUxJVFkgMjAKCgoKI2RlZmluZSBLRVJOX1JJR0hUX0VYSVNUUyAyMQoKCgoKI2RlZmluZSBL
RVJOX0lOVkFMSURfSE9TVCAyMgoKCgojZGVmaW5lIEtFUk5fTUVNT1JZX1BSRVNFTlQgMjMKCgoK
CgojZGVmaW5lIEtFUk5fTUVNT1JZX0RBVEFfTU9WRUQgMjQKIyAxOTggIi91c3IvaW5jbHVkZS9t
YWNoL2tlcm5fcmV0dXJuLmgiIDMgNAojZGVmaW5lIEtFUk5fTUVNT1JZX1JFU1RBUlRfQ09QWSAy
NQoKCgoKCgoKI2RlZmluZSBLRVJOX0lOVkFMSURfUFJPQ0VTU09SX1NFVCAyNgoKCgoKI2RlZmlu
ZSBLRVJOX1BPTElDWV9MSU1JVCAyNwoKCgoKI2RlZmluZSBLRVJOX0lOVkFMSURfUE9MSUNZIDI4
CgoKCgojZGVmaW5lIEtFUk5fSU5WQUxJRF9PQkpFQ1QgMjkKCgoKCiNkZWZpbmUgS0VSTl9BTFJF
QURZX1dBSVRJTkcgMzAKCgoKCiNkZWZpbmUgS0VSTl9ERUZBVUxUX1NFVCAzMQoKCgoKI2RlZmlu
ZSBLRVJOX0VYQ0VQVElPTl9QUk9URUNURUQgMzIKCgoKCgojZGVmaW5lIEtFUk5fSU5WQUxJRF9M
RURHRVIgMzMKCgoKI2RlZmluZSBLRVJOX0lOVkFMSURfTUVNT1JZX0NPTlRST0wgMzQKCgoKI2Rl
ZmluZSBLRVJOX0lOVkFMSURfU0VDVVJJVFkgMzUKCgoKCiNkZWZpbmUgS0VSTl9OT1RfREVQUkVT
U0VEIDM2CgoKCgojZGVmaW5lIEtFUk5fVEVSTUlOQVRFRCAzNwoKCgojZGVmaW5lIEtFUk5fTE9D
S19TRVRfREVTVFJPWUVEIDM4CgoKCiNkZWZpbmUgS0VSTl9MT0NLX1VOU1RBQkxFIDM5CgoKCgoj
ZGVmaW5lIEtFUk5fTE9DS19PV05FRCA0MAoKCgojZGVmaW5lIEtFUk5fTE9DS19PV05FRF9TRUxG
IDQxCgoKCiNkZWZpbmUgS0VSTl9TRU1BUEhPUkVfREVTVFJPWUVEIDQyCgoKCiNkZWZpbmUgS0VS
Tl9SUENfU0VSVkVSX1RFUk1JTkFURUQgNDMKCgoKCiNkZWZpbmUgS0VSTl9SUENfVEVSTUlOQVRF
X09SUEhBTiA0NAoKCgojZGVmaW5lIEtFUk5fUlBDX0NPTlRJTlVFX09SUEhBTiA0NQoKCgojZGVm
aW5lIEtFUk5fTk9UX1NVUFBPUlRFRCA0NgoKCgojZGVmaW5lIEtFUk5fTk9ERV9ET1dOIDQ3CgoK
CiNkZWZpbmUgS0VSTl9OT1RfV0FJVElORyA0OAoKCiNkZWZpbmUgS0VSTl9PUEVSQVRJT05fVElN
RURfT1VUIDQ5CgoKCiNkZWZpbmUgS0VSTl9DT0RFU0lHTl9FUlJPUiA1MAoKCgoKI2RlZmluZSBL
RVJOX1JFVFVSTl9NQVggMHgxMDAKIyA3OCAiL3Vzci9pbmNsdWRlL21hY2gvbWVzc2FnZS5oIiAy
IDMgNAojIDg5ICIvdXNyL2luY2x1ZGUvbWFjaC9tZXNzYWdlLmgiIDMgNAp0eXBlZGVmIG5hdHVy
YWxfdCBtYWNoX21zZ190aW1lb3V0X3Q7CgoKCgoKCiNkZWZpbmUgTUFDSF9NU0dfVElNRU9VVF9O
T05FICgobWFjaF9tc2dfdGltZW91dF90KSAwKQojIDEyMyAiL3Vzci9pbmNsdWRlL21hY2gvbWVz
c2FnZS5oIiAzIDQKI2RlZmluZSBNQUNIX01TR0hfQklUU19aRVJPIDB4MDAwMDAwMDAKI2RlZmlu
ZSBNQUNIX01TR0hfQklUU19SRU1PVEVfTUFTSyAweDAwMDAwMGZmCiNkZWZpbmUgTUFDSF9NU0dI
X0JJVFNfTE9DQUxfTUFTSyAweDAwMDBmZjAwCiNkZWZpbmUgTUFDSF9NU0dIX0JJVFNfQ09NUExF
WCAweDgwMDAwMDAwVQojZGVmaW5lIE1BQ0hfTVNHSF9CSVRTX1VTRVIgMHg4MDAwZmZmZlUKCiNk
ZWZpbmUgTUFDSF9NU0dIX0JJVFNfQ0lSQ1VMQVIgMHg0MDAwMDAwMAojZGVmaW5lIE1BQ0hfTVNH
SF9CSVRTX1VTRUQgMHhjMDAwZmZmZlUKCiNkZWZpbmUgTUFDSF9NU0dIX0JJVFNfUE9SVFNfTUFT
SyAoTUFDSF9NU0dIX0JJVFNfUkVNT1RFX01BU0t8TUFDSF9NU0dIX0JJVFNfTE9DQUxfTUFTSykK
CgojZGVmaW5lIE1BQ0hfTVNHSF9CSVRTKHJlbW90ZSxsb2NhbCkgKChyZW1vdGUpIHwgKChsb2Nh
bCkgPDwgOCkpCgojZGVmaW5lIE1BQ0hfTVNHSF9CSVRTX1JFTU9URShiaXRzKSAoKGJpdHMpICYg
TUFDSF9NU0dIX0JJVFNfUkVNT1RFX01BU0spCgojZGVmaW5lIE1BQ0hfTVNHSF9CSVRTX0xPQ0FM
KGJpdHMpICgoKGJpdHMpICYgTUFDSF9NU0dIX0JJVFNfTE9DQUxfTUFTSykgPj4gOCkKCiNkZWZp
bmUgTUFDSF9NU0dIX0JJVFNfUE9SVFMoYml0cykgKChiaXRzKSAmIE1BQ0hfTVNHSF9CSVRTX1BP
UlRTX01BU0spCgojZGVmaW5lIE1BQ0hfTVNHSF9CSVRTX09USEVSKGJpdHMpICgoYml0cykgJn4g
TUFDSF9NU0dIX0JJVFNfUE9SVFNfTUFTSykKIyAxNzIgIi91c3IvaW5jbHVkZS9tYWNoL21lc3Nh
Z2UuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgaW50IG1hY2hfbXNnX2JpdHNfdDsKdHlwZWRlZiBu
YXR1cmFsX3QgbWFjaF9tc2dfc2l6ZV90Owp0eXBlZGVmIGludGVnZXJfdCBtYWNoX21zZ19pZF90
OwoKCiNkZWZpbmUgTUFDSF9NU0dfU0laRV9OVUxMIChtYWNoX21zZ19zaXplX3QgKikgMAoKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgbWFjaF9tc2dfdHlwZV9uYW1lX3Q7CgojZGVmaW5lIE1BQ0hfTVNH
X1RZUEVfTU9WRV9SRUNFSVZFIDE2CiNkZWZpbmUgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQgMTcK
I2RlZmluZSBNQUNIX01TR19UWVBFX01PVkVfU0VORF9PTkNFIDE4CiNkZWZpbmUgTUFDSF9NU0df
VFlQRV9DT1BZX1NFTkQgMTkKI2RlZmluZSBNQUNIX01TR19UWVBFX01BS0VfU0VORCAyMAojZGVm
aW5lIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EX09OQ0UgMjEKI2RlZmluZSBNQUNIX01TR19UWVBF
X0NPUFlfUkVDRUlWRSAyMgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgbWFjaF9tc2dfY29weV9vcHRp
b25zX3Q7CgojZGVmaW5lIE1BQ0hfTVNHX1BIWVNJQ0FMX0NPUFkgMAojZGVmaW5lIE1BQ0hfTVNH
X1ZJUlRVQUxfQ09QWSAxCiNkZWZpbmUgTUFDSF9NU0dfQUxMT0NBVEUgMgojZGVmaW5lIE1BQ0hf
TVNHX09WRVJXUklURSAzCiMgMjExICIvdXNyL2luY2x1ZGUvbWFjaC9tZXNzYWdlLmgiIDMgNAp0
eXBlZGVmIHVuc2lnbmVkIGludCBtYWNoX21zZ19kZXNjcmlwdG9yX3R5cGVfdDsKCiNkZWZpbmUg
TUFDSF9NU0dfUE9SVF9ERVNDUklQVE9SIDAKI2RlZmluZSBNQUNIX01TR19PT0xfREVTQ1JJUFRP
UiAxCiNkZWZpbmUgTUFDSF9NU0dfT09MX1BPUlRTX0RFU0NSSVBUT1IgMgojZGVmaW5lIE1BQ0hf
TVNHX09PTF9WT0xBVElMRV9ERVNDUklQVE9SIDMKCiNwcmFnbWEgcGFjayg0KQoKdHlwZWRlZiBz
dHJ1Y3QKewogIG5hdHVyYWxfdCBwYWQxOwogIG1hY2hfbXNnX3NpemVfdCBwYWQyOwogIHVuc2ln
bmVkIGludCBwYWQzIDogMjQ7CiAgbWFjaF9tc2dfZGVzY3JpcHRvcl90eXBlX3QgdHlwZSA6IDg7
Cn0gbWFjaF9tc2dfdHlwZV9kZXNjcmlwdG9yX3Q7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgbWFjaF9w
b3J0X3QgbmFtZTsKCgogIG1hY2hfbXNnX3NpemVfdCBwYWQxOwoKICB1bnNpZ25lZCBpbnQgcGFk
MiA6IDE2OwogIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9uIDogODsKICBtYWNoX21z
Z19kZXNjcmlwdG9yX3R5cGVfdCB0eXBlIDogODsKfSBtYWNoX21zZ19wb3J0X2Rlc2NyaXB0b3Jf
dDsKCnR5cGVkZWYgc3RydWN0CnsKICB1aW50MzJfdCBhZGRyZXNzOwogIG1hY2hfbXNnX3NpemVf
dCBzaXplOwogIGJvb2xlYW5fdCBkZWFsbG9jYXRlOiA4OwogIG1hY2hfbXNnX2NvcHlfb3B0aW9u
c190IGNvcHk6IDg7CiAgdW5zaWduZWQgaW50IHBhZDE6IDg7CiAgbWFjaF9tc2dfZGVzY3JpcHRv
cl90eXBlX3QgdHlwZTogODsKfSBtYWNoX21zZ19vb2xfZGVzY3JpcHRvcjMyX3Q7Cgp0eXBlZGVm
IHN0cnVjdAp7CiAgdWludDY0X3QgYWRkcmVzczsKICBib29sZWFuX3QgZGVhbGxvY2F0ZTogODsK
ICBtYWNoX21zZ19jb3B5X29wdGlvbnNfdCBjb3B5OiA4OwogIHVuc2lnbmVkIGludCBwYWQxOiA4
OwogIG1hY2hfbXNnX2Rlc2NyaXB0b3JfdHlwZV90IHR5cGU6IDg7CiAgbWFjaF9tc2dfc2l6ZV90
IHNpemU7Cn0gbWFjaF9tc2dfb29sX2Rlc2NyaXB0b3I2NF90OwoKdHlwZWRlZiBzdHJ1Y3QKewog
IHZvaWQqIGFkZHJlc3M7CgoKCiAgYm9vbGVhbl90IGRlYWxsb2NhdGU6IDg7CiAgbWFjaF9tc2df
Y29weV9vcHRpb25zX3QgY29weTogODsKICB1bnNpZ25lZCBpbnQgcGFkMTogODsKICBtYWNoX21z
Z19kZXNjcmlwdG9yX3R5cGVfdCB0eXBlOiA4OwoKICBtYWNoX21zZ19zaXplX3Qgc2l6ZTsKCgoK
Cn0gbWFjaF9tc2dfb29sX2Rlc2NyaXB0b3JfdDsKCnR5cGVkZWYgc3RydWN0CnsKICB1aW50MzJf
dCBhZGRyZXNzOwogIG1hY2hfbXNnX3NpemVfdCBjb3VudDsKICBib29sZWFuX3QgZGVhbGxvY2F0
ZTogODsKICBtYWNoX21zZ19jb3B5X29wdGlvbnNfdCBjb3B5OiA4OwogIG1hY2hfbXNnX3R5cGVf
bmFtZV90IGRpc3Bvc2l0aW9uIDogODsKICBtYWNoX21zZ19kZXNjcmlwdG9yX3R5cGVfdCB0eXBl
IDogODsKfSBtYWNoX21zZ19vb2xfcG9ydHNfZGVzY3JpcHRvcjMyX3Q7Cgp0eXBlZGVmIHN0cnVj
dAp7CiAgdWludDY0X3QgYWRkcmVzczsKICBib29sZWFuX3QgZGVhbGxvY2F0ZTogODsKICBtYWNo
X21zZ19jb3B5X29wdGlvbnNfdCBjb3B5OiA4OwogIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bv
c2l0aW9uIDogODsKICBtYWNoX21zZ19kZXNjcmlwdG9yX3R5cGVfdCB0eXBlIDogODsKICBtYWNo
X21zZ19zaXplX3QgY291bnQ7Cn0gbWFjaF9tc2dfb29sX3BvcnRzX2Rlc2NyaXB0b3I2NF90OwoK
dHlwZWRlZiBzdHJ1Y3QKewogIHZvaWQqIGFkZHJlc3M7CgoKCiAgYm9vbGVhbl90IGRlYWxsb2Nh
dGU6IDg7CiAgbWFjaF9tc2dfY29weV9vcHRpb25zX3QgY29weTogODsKICBtYWNoX21zZ190eXBl
X25hbWVfdCBkaXNwb3NpdGlvbiA6IDg7CiAgbWFjaF9tc2dfZGVzY3JpcHRvcl90eXBlX3QgdHlw
ZSA6IDg7CgogIG1hY2hfbXNnX3NpemVfdCBjb3VudDsKCgoKCn0gbWFjaF9tc2dfb29sX3BvcnRz
X2Rlc2NyaXB0b3JfdDsKIyAzMzAgIi91c3IvaW5jbHVkZS9tYWNoL21lc3NhZ2UuaCIgMyA0CnR5
cGVkZWYgdW5pb24KewogIG1hY2hfbXNnX3BvcnRfZGVzY3JpcHRvcl90IHBvcnQ7CiAgbWFjaF9t
c2dfb29sX2Rlc2NyaXB0b3JfdCBvdXRfb2ZfbGluZTsKICBtYWNoX21zZ19vb2xfcG9ydHNfZGVz
Y3JpcHRvcl90IG9vbF9wb3J0czsKICBtYWNoX21zZ190eXBlX2Rlc2NyaXB0b3JfdCB0eXBlOwp9
IG1hY2hfbXNnX2Rlc2NyaXB0b3JfdDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgICAgICAgbWFjaF9t
c2dfc2l6ZV90IG1zZ2hfZGVzY3JpcHRvcl9jb3VudDsKfSBtYWNoX21zZ19ib2R5X3Q7CgojZGVm
aW5lIE1BQ0hfTVNHX0JPRFlfTlVMTCAobWFjaF9tc2dfYm9keV90ICopIDAKI2RlZmluZSBNQUNI
X01TR19ERVNDUklQVE9SX05VTEwgKG1hY2hfbXNnX2Rlc2NyaXB0b3JfdCAqKSAwCgp0eXBlZGVm
IHN0cnVjdAp7CiAgbWFjaF9tc2dfYml0c190IG1zZ2hfYml0czsKICBtYWNoX21zZ19zaXplX3Qg
bXNnaF9zaXplOwogIG1hY2hfcG9ydF90IG1zZ2hfcmVtb3RlX3BvcnQ7CiAgbWFjaF9wb3J0X3Qg
bXNnaF9sb2NhbF9wb3J0OwogIG1hY2hfbXNnX3NpemVfdCBtc2doX3Jlc2VydmVkOwogIG1hY2hf
bXNnX2lkX3QgbXNnaF9pZDsKfSBtYWNoX21zZ19oZWFkZXJfdDsKCiNkZWZpbmUgTUFDSF9NU0df
TlVMTCAobWFjaF9tc2dfaGVhZGVyX3QgKikgMAoKdHlwZWRlZiBzdHJ1Y3QKewogICAgICAgIG1h
Y2hfbXNnX2hlYWRlcl90IGhlYWRlcjsKICAgICAgICBtYWNoX21zZ19ib2R5X3QgYm9keTsKfSBt
YWNoX21zZ19iYXNlX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBtYWNoX21zZ190cmFpbGVyX3R5
cGVfdDsKCiNkZWZpbmUgTUFDSF9NU0dfVFJBSUxFUl9GT1JNQVRfMCAwCgp0eXBlZGVmIHVuc2ln
bmVkIGludCBtYWNoX21zZ190cmFpbGVyX3NpemVfdDsKCnR5cGVkZWYgc3RydWN0CnsKICBtYWNo
X21zZ190cmFpbGVyX3R5cGVfdCBtc2doX3RyYWlsZXJfdHlwZTsKICBtYWNoX21zZ190cmFpbGVy
X3NpemVfdCBtc2doX3RyYWlsZXJfc2l6ZTsKfSBtYWNoX21zZ190cmFpbGVyX3Q7Cgp0eXBlZGVm
IHN0cnVjdAp7CiAgbWFjaF9tc2dfdHJhaWxlcl90eXBlX3QgbXNnaF90cmFpbGVyX3R5cGU7CiAg
bWFjaF9tc2dfdHJhaWxlcl9zaXplX3QgbXNnaF90cmFpbGVyX3NpemU7CiAgbWFjaF9wb3J0X3Nl
cW5vX3QgbXNnaF9zZXFubzsKfSBtYWNoX21zZ19zZXFub190cmFpbGVyX3Q7Cgp0eXBlZGVmIHN0
cnVjdAp7CiAgdW5zaWduZWQgaW50IHZhbFsyXTsKfSBzZWN1cml0eV90b2tlbl90OwoKdHlwZWRl
ZiBzdHJ1Y3QKewogIG1hY2hfbXNnX3RyYWlsZXJfdHlwZV90IG1zZ2hfdHJhaWxlcl90eXBlOwog
IG1hY2hfbXNnX3RyYWlsZXJfc2l6ZV90IG1zZ2hfdHJhaWxlcl9zaXplOwogIG1hY2hfcG9ydF9z
ZXFub190IG1zZ2hfc2Vxbm87CiAgc2VjdXJpdHlfdG9rZW5fdCBtc2doX3NlbmRlcjsKfSBtYWNo
X21zZ19zZWN1cml0eV90cmFpbGVyX3Q7CiMgNDA2ICIvdXNyL2luY2x1ZGUvbWFjaC9tZXNzYWdl
LmgiIDMgNAp0eXBlZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgaW50IHZhbFs4XTsKfSBhdWRpdF90
b2tlbl90OwoKdHlwZWRlZiBzdHJ1Y3QKewogIG1hY2hfbXNnX3RyYWlsZXJfdHlwZV90IG1zZ2hf
dHJhaWxlcl90eXBlOwogIG1hY2hfbXNnX3RyYWlsZXJfc2l6ZV90IG1zZ2hfdHJhaWxlcl9zaXpl
OwogIG1hY2hfcG9ydF9zZXFub190IG1zZ2hfc2Vxbm87CiAgc2VjdXJpdHlfdG9rZW5fdCBtc2do
X3NlbmRlcjsKICBhdWRpdF90b2tlbl90IG1zZ2hfYXVkaXQ7Cn0gbWFjaF9tc2dfYXVkaXRfdHJh
aWxlcl90OwoKdHlwZWRlZiBzdHJ1Y3QKewogIG1hY2hfbXNnX3RyYWlsZXJfdHlwZV90IG1zZ2hf
dHJhaWxlcl90eXBlOwogIG1hY2hfbXNnX3RyYWlsZXJfc2l6ZV90IG1zZ2hfdHJhaWxlcl9zaXpl
OwogIG1hY2hfcG9ydF9zZXFub190IG1zZ2hfc2Vxbm87CiAgc2VjdXJpdHlfdG9rZW5fdCBtc2do
X3NlbmRlcjsKICBhdWRpdF90b2tlbl90IG1zZ2hfYXVkaXQ7CiAgbWFjaF92bV9hZGRyZXNzX3Qg
bXNnaF9jb250ZXh0Owp9IG1hY2hfbXNnX2NvbnRleHRfdHJhaWxlcl90OwoKCnR5cGVkZWYgc3Ry
dWN0CnsKICBtYWNoX3BvcnRfbmFtZV90IHNlbmRlcjsKfSBtc2dfbGFiZWxzX3Q7CgoKCgoKCnR5
cGVkZWYgc3RydWN0CnsKICBtYWNoX21zZ190cmFpbGVyX3R5cGVfdCBtc2doX3RyYWlsZXJfdHlw
ZTsKICBtYWNoX21zZ190cmFpbGVyX3NpemVfdCBtc2doX3RyYWlsZXJfc2l6ZTsKICBtYWNoX3Bv
cnRfc2Vxbm9fdCBtc2doX3NlcW5vOwogIHNlY3VyaXR5X3Rva2VuX3QgbXNnaF9zZW5kZXI7CiAg
YXVkaXRfdG9rZW5fdCBtc2doX2F1ZGl0OwogIG1hY2hfdm1fYWRkcmVzc190IG1zZ2hfY29udGV4
dDsKICBpbnQgbXNnaF9hZDsKICBtc2dfbGFiZWxzX3QgbXNnaF9sYWJlbHM7Cn0gbWFjaF9tc2df
bWFjX3RyYWlsZXJfdDsKCiNkZWZpbmUgTUFDSF9NU0dfVFJBSUxFUl9NSU5JTVVNX1NJWkUgc2l6
ZW9mKG1hY2hfbXNnX3RyYWlsZXJfdCkKIyA0NjQgIi91c3IvaW5jbHVkZS9tYWNoL21lc3NhZ2Uu
aCIgMyA0CnR5cGVkZWYgbWFjaF9tc2dfbWFjX3RyYWlsZXJfdCBtYWNoX21zZ19tYXhfdHJhaWxl
cl90OwojZGVmaW5lIE1BWF9UUkFJTEVSX1NJWkUgKChtYWNoX21zZ19zaXplX3Qpc2l6ZW9mKG1h
Y2hfbXNnX21heF90cmFpbGVyX3QpKQojIDQ3NCAiL3Vzci9pbmNsdWRlL21hY2gvbWVzc2FnZS5o
IiAzIDQKdHlwZWRlZiBtYWNoX21zZ19zZWN1cml0eV90cmFpbGVyX3QgbWFjaF9tc2dfZm9ybWF0
XzBfdHJhaWxlcl90OwoKCgoKI2RlZmluZSBNQUNIX01TR19UUkFJTEVSX0ZPUk1BVF8wX1NJWkUg
c2l6ZW9mKG1hY2hfbXNnX2Zvcm1hdF8wX3RyYWlsZXJfdCkKCiNkZWZpbmUgS0VSTkVMX1NFQ1VS
SVRZX1RPS0VOX1ZBTFVFIHsgezAsIDF9IH0KZXh0ZXJuIHNlY3VyaXR5X3Rva2VuX3QgS0VSTkVM
X1NFQ1VSSVRZX1RPS0VOOwoKI2RlZmluZSBLRVJORUxfQVVESVRfVE9LRU5fVkFMVUUgeyB7MCwg
MCwgMCwgMCwgMCwgMCwgMCwgMH0gfQpleHRlcm4gYXVkaXRfdG9rZW5fdCBLRVJORUxfQVVESVRf
VE9LRU47Cgp0eXBlZGVmIGludGVnZXJfdCBtYWNoX21zZ19vcHRpb25zX3Q7Cgp0eXBlZGVmIHN0
cnVjdAp7CiAgbWFjaF9tc2dfaGVhZGVyX3QgaGVhZGVyOwp9IG1hY2hfbXNnX2VtcHR5X3NlbmRf
dDsKCnR5cGVkZWYgc3RydWN0CnsKICBtYWNoX21zZ19oZWFkZXJfdCBoZWFkZXI7CiAgbWFjaF9t
c2dfdHJhaWxlcl90IHRyYWlsZXI7Cn0gbWFjaF9tc2dfZW1wdHlfcmN2X3Q7Cgp0eXBlZGVmIHVu
aW9uCnsKICBtYWNoX21zZ19lbXB0eV9zZW5kX3Qgc2VuZDsKICBtYWNoX21zZ19lbXB0eV9yY3Zf
dCByY3Y7Cn0gbWFjaF9tc2dfZW1wdHlfdDsKCiNwcmFnbWEgcGFjaygpCgoKI2RlZmluZSByb3Vu
ZF9tc2coeCkgKCgobWFjaF9tc2dfc2l6ZV90KSh4KSArIHNpemVvZiAobmF0dXJhbF90KSAtIDEp
ICYgfihzaXplb2YgKG5hdHVyYWxfdCkgLSAxKSkKCgoKCgoKI2RlZmluZSBNQUNIX01TR19TSVpF
X01BWCAoKG1hY2hfbXNnX3NpemVfdCkgfjApCgoKCgoKI2RlZmluZSBNQUNIX01TR0hfS0lORF9O
T1JNQUwgMHgwMDAwMDAwMAojZGVmaW5lIE1BQ0hfTVNHSF9LSU5EX05PVElGSUNBVElPTiAweDAw
MDAwMDAxCiNkZWZpbmUgbXNnaF9raW5kIG1zZ2hfc2Vxbm8KI2RlZmluZSBtYWNoX21zZ19raW5k
X3QgbWFjaF9wb3J0X3NlcW5vX3QKCnR5cGVkZWYgbmF0dXJhbF90IG1hY2hfbXNnX3R5cGVfc2l6
ZV90Owp0eXBlZGVmIG5hdHVyYWxfdCBtYWNoX21zZ190eXBlX251bWJlcl90OwojIDUzOSAiL3Vz
ci9pbmNsdWRlL21hY2gvbWVzc2FnZS5oIiAzIDQKI2RlZmluZSBNQUNIX01TR19UWVBFX1BPUlRf
Tk9ORSAwCgojZGVmaW5lIE1BQ0hfTVNHX1RZUEVfUE9SVF9OQU1FIDE1CiNkZWZpbmUgTUFDSF9N
U0dfVFlQRV9QT1JUX1JFQ0VJVkUgTUFDSF9NU0dfVFlQRV9NT1ZFX1JFQ0VJVkUKI2RlZmluZSBN
QUNIX01TR19UWVBFX1BPUlRfU0VORCBNQUNIX01TR19UWVBFX01PVkVfU0VORAojZGVmaW5lIE1B
Q0hfTVNHX1RZUEVfUE9SVF9TRU5EX09OQ0UgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkRfT05DRQoK
I2RlZmluZSBNQUNIX01TR19UWVBFX0xBU1QgMjIKCgoKCgoKI2RlZmluZSBNQUNIX01TR19UWVBF
X1BPTFlNT1JQSElDICgobWFjaF9tc2dfdHlwZV9uYW1lX3QpIC0xKQoKCgoKCiNkZWZpbmUgTUFD
SF9NU0dfVFlQRV9QT1JUX0FOWSh4KSAoKCh4KSA+PSBNQUNIX01TR19UWVBFX01PVkVfUkVDRUlW
RSkgJiYgKCh4KSA8PSBNQUNIX01TR19UWVBFX01BS0VfU0VORF9PTkNFKSkKCgoKI2RlZmluZSBN
QUNIX01TR19UWVBFX1BPUlRfQU5ZX1NFTkQoeCkgKCgoeCkgPj0gTUFDSF9NU0dfVFlQRV9NT1ZF
X1NFTkQpICYmICgoeCkgPD0gTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkRfT05DRSkpCgoKCiNkZWZp
bmUgTUFDSF9NU0dfVFlQRV9QT1JUX0FOWV9SSUdIVCh4KSAoKCh4KSA+PSBNQUNIX01TR19UWVBF
X01PVkVfUkVDRUlWRSkgJiYgKCh4KSA8PSBNQUNIX01TR19UWVBFX01PVkVfU0VORF9PTkNFKSkK
CgoKdHlwZWRlZiBpbnRlZ2VyX3QgbWFjaF9tc2dfb3B0aW9uX3Q7CgojZGVmaW5lIE1BQ0hfTVNH
X09QVElPTl9OT05FIDB4MDAwMDAwMDAKCiNkZWZpbmUgTUFDSF9TRU5EX01TRyAweDAwMDAwMDAx
CiNkZWZpbmUgTUFDSF9SQ1ZfTVNHIDB4MDAwMDAwMDIKI2RlZmluZSBNQUNIX1JDVl9MQVJHRSAw
eDAwMDAwMDA0CgojZGVmaW5lIE1BQ0hfU0VORF9USU1FT1VUIDB4MDAwMDAwMTAKI2RlZmluZSBN
QUNIX1NFTkRfSU5URVJSVVBUIDB4MDAwMDAwNDAKI2RlZmluZSBNQUNIX1NFTkRfQ0FOQ0VMIDB4
MDAwMDAwODAKI2RlZmluZSBNQUNIX1NFTkRfQUxXQVlTIDB4MDAwMTAwMDAKI2RlZmluZSBNQUNI
X1NFTkRfVFJBSUxFUiAweDAwMDIwMDAwCgojZGVmaW5lIE1BQ0hfUkNWX1RJTUVPVVQgMHgwMDAw
MDEwMAojZGVmaW5lIE1BQ0hfUkNWX05PVElGWSAweDAwMDAwMjAwCiNkZWZpbmUgTUFDSF9SQ1Zf
SU5URVJSVVBUIDB4MDAwMDA0MDAKI2RlZmluZSBNQUNIX1JDVl9PVkVSV1JJVEUgMHgwMDAwMTAw
MAojIDU5OSAiL3Vzci9pbmNsdWRlL21hY2gvbWVzc2FnZS5oIiAzIDQKI2RlZmluZSBNQUNIX1JD
Vl9UUkFJTEVSX05VTEwgMAojZGVmaW5lIE1BQ0hfUkNWX1RSQUlMRVJfU0VRTk8gMQojZGVmaW5l
IE1BQ0hfUkNWX1RSQUlMRVJfU0VOREVSIDIKI2RlZmluZSBNQUNIX1JDVl9UUkFJTEVSX0FVRElU
IDMKI2RlZmluZSBNQUNIX1JDVl9UUkFJTEVSX0NUWCA0CiNkZWZpbmUgTUFDSF9SQ1ZfVFJBSUxF
Ul9BViA3CiNkZWZpbmUgTUFDSF9SQ1ZfVFJBSUxFUl9MQUJFTFMgOAoKI2RlZmluZSBNQUNIX1JD
Vl9UUkFJTEVSX1RZUEUoeCkgKCgoeCkgJiAweGYpIDw8IDI4KQojZGVmaW5lIE1BQ0hfUkNWX1RS
QUlMRVJfRUxFTUVOVFMoeCkgKCgoeCkgJiAweGYpIDw8IDI0KQojZGVmaW5lIE1BQ0hfUkNWX1RS
QUlMRVJfTUFTSyAoKDB4ZmYgPDwgMjQpKQoKI2RlZmluZSBHRVRfUkNWX0VMRU1FTlRTKHkpICgo
KHkpID4+IDI0KSAmIDB4ZikKIyA2MjEgIi91c3IvaW5jbHVkZS9tYWNoL21lc3NhZ2UuaCIgMyA0
CiNkZWZpbmUgUkVRVUVTVEVEX1RSQUlMRVJfU0laRSh5KSAoKG1hY2hfbXNnX3RyYWlsZXJfc2l6
ZV90KSAoKEdFVF9SQ1ZfRUxFTUVOVFMoeSkgPT0gTUFDSF9SQ1ZfVFJBSUxFUl9OVUxMKSA/IHNp
emVvZihtYWNoX21zZ190cmFpbGVyX3QpIDogKChHRVRfUkNWX0VMRU1FTlRTKHkpID09IE1BQ0hf
UkNWX1RSQUlMRVJfU0VRTk8pID8gc2l6ZW9mKG1hY2hfbXNnX3NlcW5vX3RyYWlsZXJfdCkgOiAo
KEdFVF9SQ1ZfRUxFTUVOVFMoeSkgPT0gTUFDSF9SQ1ZfVFJBSUxFUl9TRU5ERVIpID8gc2l6ZW9m
KG1hY2hfbXNnX3NlY3VyaXR5X3RyYWlsZXJfdCkgOiAoKEdFVF9SQ1ZfRUxFTUVOVFMoeSkgPT0g
TUFDSF9SQ1ZfVFJBSUxFUl9BVURJVCkgPyBzaXplb2YobWFjaF9tc2dfYXVkaXRfdHJhaWxlcl90
KSA6ICgoR0VUX1JDVl9FTEVNRU5UUyh5KSA9PSBNQUNIX1JDVl9UUkFJTEVSX0NUWCkgPyBzaXpl
b2YobWFjaF9tc2dfY29udGV4dF90cmFpbGVyX3QpIDogKChHRVRfUkNWX0VMRU1FTlRTKHkpID09
IE1BQ0hfUkNWX1RSQUlMRVJfQVYpID8gc2l6ZW9mKG1hY2hfbXNnX21hY190cmFpbGVyX3QpIDog
c2l6ZW9mKG1hY2hfbXNnX21heF90cmFpbGVyX3QpKSkpKSkpKQojIDY0OCAiL3Vzci9pbmNsdWRl
L21hY2gvbWVzc2FnZS5oIiAzIDQKdHlwZWRlZiBrZXJuX3JldHVybl90IG1hY2hfbXNnX3JldHVy
bl90OwoKI2RlZmluZSBNQUNIX01TR19TVUNDRVNTIDB4MDAwMDAwMDAKCgojZGVmaW5lIE1BQ0hf
TVNHX01BU0sgMHgwMDAwM2UwMAoKI2RlZmluZSBNQUNIX01TR19JUENfU1BBQ0UgMHgwMDAwMjAw
MAoKI2RlZmluZSBNQUNIX01TR19WTV9TUEFDRSAweDAwMDAxMDAwCgojZGVmaW5lIE1BQ0hfTVNH
X0lQQ19LRVJORUwgMHgwMDAwMDgwMAoKI2RlZmluZSBNQUNIX01TR19WTV9LRVJORUwgMHgwMDAw
MDQwMAoKCiNkZWZpbmUgTUFDSF9TRU5EX0lOX1BST0dSRVNTIDB4MTAwMDAwMDEKCiNkZWZpbmUg
TUFDSF9TRU5EX0lOVkFMSURfREFUQSAweDEwMDAwMDAyCgojZGVmaW5lIE1BQ0hfU0VORF9JTlZB
TElEX0RFU1QgMHgxMDAwMDAwMwoKI2RlZmluZSBNQUNIX1NFTkRfVElNRURfT1VUIDB4MTAwMDAw
MDQKCiNkZWZpbmUgTUFDSF9TRU5EX0lOVEVSUlVQVEVEIDB4MTAwMDAwMDcKCiNkZWZpbmUgTUFD
SF9TRU5EX01TR19UT09fU01BTEwgMHgxMDAwMDAwOAoKI2RlZmluZSBNQUNIX1NFTkRfSU5WQUxJ
RF9SRVBMWSAweDEwMDAwMDA5CgojZGVmaW5lIE1BQ0hfU0VORF9JTlZBTElEX1JJR0hUIDB4MTAw
MDAwMGEKCiNkZWZpbmUgTUFDSF9TRU5EX0lOVkFMSURfTk9USUZZIDB4MTAwMDAwMGIKCiNkZWZp
bmUgTUFDSF9TRU5EX0lOVkFMSURfTUVNT1JZIDB4MTAwMDAwMGMKCiNkZWZpbmUgTUFDSF9TRU5E
X05PX0JVRkZFUiAweDEwMDAwMDBkCgojZGVmaW5lIE1BQ0hfU0VORF9UT09fTEFSR0UgMHgxMDAw
MDAwZQoKI2RlZmluZSBNQUNIX1NFTkRfSU5WQUxJRF9UWVBFIDB4MTAwMDAwMGYKCiNkZWZpbmUg
TUFDSF9TRU5EX0lOVkFMSURfSEVBREVSIDB4MTAwMDAwMTAKCiNkZWZpbmUgTUFDSF9TRU5EX0lO
VkFMSURfVFJBSUxFUiAweDEwMDAwMDExCgojZGVmaW5lIE1BQ0hfU0VORF9JTlZBTElEX1JUX09P
TF9TSVpFIDB4MTAwMDAwMTUKCgojZGVmaW5lIE1BQ0hfUkNWX0lOX1BST0dSRVNTIDB4MTAwMDQw
MDEKCiNkZWZpbmUgTUFDSF9SQ1ZfSU5WQUxJRF9OQU1FIDB4MTAwMDQwMDIKCiNkZWZpbmUgTUFD
SF9SQ1ZfVElNRURfT1VUIDB4MTAwMDQwMDMKCiNkZWZpbmUgTUFDSF9SQ1ZfVE9PX0xBUkdFIDB4
MTAwMDQwMDQKCiNkZWZpbmUgTUFDSF9SQ1ZfSU5URVJSVVBURUQgMHgxMDAwNDAwNQoKI2RlZmlu
ZSBNQUNIX1JDVl9QT1JUX0NIQU5HRUQgMHgxMDAwNDAwNgoKI2RlZmluZSBNQUNIX1JDVl9JTlZB
TElEX05PVElGWSAweDEwMDA0MDA3CgojZGVmaW5lIE1BQ0hfUkNWX0lOVkFMSURfREFUQSAweDEw
MDA0MDA4CgojZGVmaW5lIE1BQ0hfUkNWX1BPUlRfRElFRCAweDEwMDA0MDA5CgojZGVmaW5lIE1B
Q0hfUkNWX0lOX1NFVCAweDEwMDA0MDBhCgojZGVmaW5lIE1BQ0hfUkNWX0hFQURFUl9FUlJPUiAw
eDEwMDA0MDBiCgojZGVmaW5lIE1BQ0hfUkNWX0JPRFlfRVJST1IgMHgxMDAwNDAwYwoKI2RlZmlu
ZSBNQUNIX1JDVl9JTlZBTElEX1RZUEUgMHgxMDAwNDAwZAoKI2RlZmluZSBNQUNIX1JDVl9TQ0FU
VEVSX1NNQUxMIDB4MTAwMDQwMGUKCiNkZWZpbmUgTUFDSF9SQ1ZfSU5WQUxJRF9UUkFJTEVSIDB4
MTAwMDQwMGYKCiNkZWZpbmUgTUFDSF9SQ1ZfSU5fUFJPR1JFU1NfVElNRUQgMHgxMDAwNDAxMQoK
CgpleHRlcm4gIkMiIHsKIyA3NTAgIi91c3IvaW5jbHVkZS9tYWNoL21lc3NhZ2UuaCIgMyA0CmV4
dGVybiBtYWNoX21zZ19yZXR1cm5fdCBtYWNoX21zZ19vdmVyd3JpdGUoCiAgICAgbWFjaF9tc2df
aGVhZGVyX3QgKm1zZywKICAgICBtYWNoX21zZ19vcHRpb25fdCBvcHRpb24sCiAgICAgbWFjaF9t
c2dfc2l6ZV90IHNlbmRfc2l6ZSwKICAgICBtYWNoX21zZ19zaXplX3QgcmN2X3NpemUsCiAgICAg
bWFjaF9wb3J0X25hbWVfdCByY3ZfbmFtZSwKICAgICBtYWNoX21zZ190aW1lb3V0X3QgdGltZW91
dCwKICAgICBtYWNoX3BvcnRfbmFtZV90IG5vdGlmeSwKICAgICBtYWNoX21zZ19oZWFkZXJfdCAq
cmN2X21zZywKICAgICBtYWNoX21zZ19zaXplX3QgcmN2X2xpbWl0KTsKIyA3NzAgIi91c3IvaW5j
bHVkZS9tYWNoL21lc3NhZ2UuaCIgMyA0CmV4dGVybiBtYWNoX21zZ19yZXR1cm5fdCBtYWNoX21z
ZygKICAgICBtYWNoX21zZ19oZWFkZXJfdCAqbXNnLAogICAgIG1hY2hfbXNnX29wdGlvbl90IG9w
dGlvbiwKICAgICBtYWNoX21zZ19zaXplX3Qgc2VuZF9zaXplLAogICAgIG1hY2hfbXNnX3NpemVf
dCByY3Zfc2l6ZSwKICAgICBtYWNoX3BvcnRfbmFtZV90IHJjdl9uYW1lLAogICAgIG1hY2hfbXNn
X3RpbWVvdXRfdCB0aW1lb3V0LAogICAgIG1hY2hfcG9ydF9uYW1lX3Qgbm90aWZ5KTsKCgp9CiMg
MzEgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9zb3VyY2UuaCIgMiAzIDQKIyA1MCAiL3Vzci9pbmNs
dWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgZGlzcGF0Y2hfc291cmNl
X3MgOiBwdWJsaWMgZGlzcGF0Y2hfb2JqZWN0X3Mge30gKmRpc3BhdGNoX3NvdXJjZV90OzsKIyA2
MyAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgZGlzcGF0Y2hfc291cmNlX3R5cGVfcyAqZGlzcGF0Y2hfc291cmNlX3R5cGVfdDsKIyA3MiAi
L3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKI2RlZmluZSBESVNQQVRDSF9TT1VS
Q0VfVFlQRV9EQVRBX0FERCAoJl9kaXNwYXRjaF9zb3VyY2VfdHlwZV9kYXRhX2FkZCkKX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKZXh0ZXJuIGNvbnN0IHN0cnVjdCBkaXNw
YXRjaF9zb3VyY2VfdHlwZV9zIF9kaXNwYXRjaF9zb3VyY2VfdHlwZV9kYXRhX2FkZDsKIyA4NCAi
L3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKI2RlZmluZSBESVNQQVRDSF9TT1VS
Q0VfVFlQRV9EQVRBX09SICgmX2Rpc3BhdGNoX3NvdXJjZV90eXBlX2RhdGFfb3IpCl9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCmV4dGVybiBjb25zdCBzdHJ1Y3QgZGlzcGF0
Y2hfc291cmNlX3R5cGVfcyBfZGlzcGF0Y2hfc291cmNlX3R5cGVfZGF0YV9vcjsKIyA5NSAiL3Vz
ci9pbmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKI2RlZmluZSBESVNQQVRDSF9TT1VSQ0Vf
VFlQRV9NQUNIX1NFTkQgKCZfZGlzcGF0Y2hfc291cmNlX3R5cGVfbWFjaF9zZW5kKQpfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQpleHRlcm4gY29uc3Qgc3RydWN0IGRpc3Bh
dGNoX3NvdXJjZV90eXBlX3MgX2Rpc3BhdGNoX3NvdXJjZV90eXBlX21hY2hfc2VuZDsKCgoKCgoK
CiNkZWZpbmUgRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9SRUNWICgmX2Rpc3BhdGNoX3NvdXJj
ZV90eXBlX21hY2hfcmVjdikKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkK
ZXh0ZXJuIGNvbnN0IHN0cnVjdCBkaXNwYXRjaF9zb3VyY2VfdHlwZV9zIF9kaXNwYXRjaF9zb3Vy
Y2VfdHlwZV9tYWNoX3JlY3Y7CiMgMTE2ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvc291cmNlLmgi
IDMgNAojZGVmaW5lIERJU1BBVENIX1NPVVJDRV9UWVBFX1BST0MgKCZfZGlzcGF0Y2hfc291cmNl
X3R5cGVfcHJvYykKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKZXh0ZXJu
IGNvbnN0IHN0cnVjdCBkaXNwYXRjaF9zb3VyY2VfdHlwZV9zIF9kaXNwYXRjaF9zb3VyY2VfdHlw
ZV9wcm9jOwojIDEyNyAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKI2RlZmlu
ZSBESVNQQVRDSF9TT1VSQ0VfVFlQRV9SRUFEICgmX2Rpc3BhdGNoX3NvdXJjZV90eXBlX3JlYWQp
Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCmV4dGVybiBjb25zdCBzdHJ1
Y3QgZGlzcGF0Y2hfc291cmNlX3R5cGVfcyBfZGlzcGF0Y2hfc291cmNlX3R5cGVfcmVhZDsKCgoK
CgoKCiNkZWZpbmUgRElTUEFUQ0hfU09VUkNFX1RZUEVfU0lHTkFMICgmX2Rpc3BhdGNoX3NvdXJj
ZV90eXBlX3NpZ25hbCkKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKZXh0
ZXJuIGNvbnN0IHN0cnVjdCBkaXNwYXRjaF9zb3VyY2VfdHlwZV9zIF9kaXNwYXRjaF9zb3VyY2Vf
dHlwZV9zaWduYWw7CiMgMTQ4ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvc291cmNlLmgiIDMgNAoj
ZGVmaW5lIERJU1BBVENIX1NPVVJDRV9UWVBFX1RJTUVSICgmX2Rpc3BhdGNoX3NvdXJjZV90eXBl
X3RpbWVyKQpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQpleHRlcm4gY29u
c3Qgc3RydWN0IGRpc3BhdGNoX3NvdXJjZV90eXBlX3MgX2Rpc3BhdGNoX3NvdXJjZV90eXBlX3Rp
bWVyOwojIDE1OSAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKI2RlZmluZSBE
SVNQQVRDSF9TT1VSQ0VfVFlQRV9WTk9ERSAoJl9kaXNwYXRjaF9zb3VyY2VfdHlwZV92bm9kZSkK
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKZXh0ZXJuIGNvbnN0IHN0cnVj
dCBkaXNwYXRjaF9zb3VyY2VfdHlwZV9zIF9kaXNwYXRjaF9zb3VyY2VfdHlwZV92bm9kZTsKIyAx
NzAgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9zb3VyY2UuaCIgMyA0CiNkZWZpbmUgRElTUEFUQ0hf
U09VUkNFX1RZUEVfV1JJVEUgKCZfZGlzcGF0Y2hfc291cmNlX3R5cGVfd3JpdGUpCl9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCmV4dGVybiBjb25zdCBzdHJ1Y3QgZGlzcGF0
Y2hfc291cmNlX3R5cGVfcyBfZGlzcGF0Y2hfc291cmNlX3R5cGVfd3JpdGU7CgoKCgoKCgplbnVt
IHsKIERJU1BBVENIX01BQ0hfU0VORF9ERUFEID0gMHgxLAp9OwojIDIwMCAiL3Vzci9pbmNsdWRl
L2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKZW51bSB7CiBESVNQQVRDSF9QUk9DX0VYSVQgPSAweDgw
MDAwMDAwLAogRElTUEFUQ0hfUFJPQ19GT1JLID0gMHg0MDAwMDAwMCwKIERJU1BBVENIX1BST0Nf
RVhFQyA9IDB4MjAwMDAwMDAsCiBESVNQQVRDSF9QUk9DX1NJR05BTCA9IDB4MDgwMDAwMDAsCn07
CiMgMjMxICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvc291cmNlLmgiIDMgNAplbnVtIHsKIERJU1BB
VENIX1ZOT0RFX0RFTEVURSA9IDB4MSwKIERJU1BBVENIX1ZOT0RFX1dSSVRFID0gMHgyLAogRElT
UEFUQ0hfVk5PREVfRVhURU5EID0gMHg0LAogRElTUEFUQ0hfVk5PREVfQVRUUklCID0gMHg4LAog
RElTUEFUQ0hfVk5PREVfTElOSyA9IDB4MTAsCiBESVNQQVRDSF9WTk9ERV9SRU5BTUUgPSAweDIw
LAogRElTUEFUQ0hfVk5PREVfUkVWT0tFID0gMHg0MCwKfTsKCmV4dGVybiAiQyIgewojIDI3MiAi
L3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpIF9fYXR0cmlidXRl
X18oKF9fbm90aHJvd19fKSkKZGlzcGF0Y2hfc291cmNlX3QKZGlzcGF0Y2hfc291cmNlX2NyZWF0
ZShkaXNwYXRjaF9zb3VyY2VfdHlwZV90IHR5cGUsCiB1aW50cHRyX3QgaGFuZGxlLAogdW5zaWdu
ZWQgbG9uZyBtYXNrLAogZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSk7CiMgMjk0ICIvdXNyL2luY2x1
ZGUvZGlzcGF0Y2gvc291cmNlLmgiIDMgNApfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKQpfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXygxKSkpIF9fYXR0cmlidXRlX18oKF9f
bm90aHJvd19fKSkKdm9pZApkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIoZGlzcGF0
Y2hfc291cmNlX3Qgc291cmNlLAogZGlzcGF0Y2hfYmxvY2tfdCBoYW5kbGVyKTsKIyAzMTcgIi91
c3IvaW5jbHVkZS9kaXNwYXRjaC9zb3VyY2UuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpCl9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKDEpKSkgX19hdHRyaWJ1
dGVfXygoX19ub3Rocm93X18pKQp2b2lkCmRpc3BhdGNoX3NvdXJjZV9zZXRfZXZlbnRfaGFuZGxl
cl9mKGRpc3BhdGNoX3NvdXJjZV90IHNvdXJjZSwKIGRpc3BhdGNoX2Z1bmN0aW9uX3QgaGFuZGxl
cik7CiMgMzUxICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvc291cmNlLmgiIDMgNApfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQpfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXygx
KSkpIF9fYXR0cmlidXRlX18oKF9fbm90aHJvd19fKSkKdm9pZApkaXNwYXRjaF9zb3VyY2Vfc2V0
X2NhbmNlbF9oYW5kbGVyKGRpc3BhdGNoX3NvdXJjZV90IHNvdXJjZSwKIGRpc3BhdGNoX2Jsb2Nr
X3QgY2FuY2VsX2hhbmRsZXIpOwojIDM3NiAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5o
IiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1dGVf
XygoX19ub25udWxsX18oMSkpKSBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3dfXykpCnZvaWQKZGlz
cGF0Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcl9mKGRpc3BhdGNoX3NvdXJjZV90IHNvdXJj
ZSwKIGRpc3BhdGNoX2Z1bmN0aW9uX3QgY2FuY2VsX2hhbmRsZXIpOwojIDQwNCAiL3Vzci9pbmNs
dWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkKX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18pKSBfX2F0dHJpYnV0ZV9fKChfX25v
dGhyb3dfXykpCnZvaWQKZGlzcGF0Y2hfc291cmNlX2NhbmNlbChkaXNwYXRjaF9zb3VyY2VfdCBz
b3VyY2UpOwojIDQyMiAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1dGVfXygoX19ub25udWxs
X18pKSBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3dfXykpCmxvbmcKZGlzcGF0Y2hfc291cmNlX3Rl
c3RjYW5jZWwoZGlzcGF0Y2hfc291cmNlX3Qgc291cmNlKTsKIyA0NTEgIi91c3IvaW5jbHVkZS9k
aXNwYXRjaC9zb3VyY2UuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpCl9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu
dXNlZF9yZXN1bHRfXykpIF9fYXR0cmlidXRlX18oKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXygo
X19ub3Rocm93X18pKQp1aW50cHRyX3QKZGlzcGF0Y2hfc291cmNlX2dldF9oYW5kbGUoZGlzcGF0
Y2hfc291cmNlX3Qgc291cmNlKTsKIyA0ODAgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9zb3VyY2Uu
aCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCl9fYXR0cmlidXRl
X18oKF9fbm9ubnVsbF9fKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp
IF9fYXR0cmlidXRlX18oKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXygoX19ub3Rocm93X18pKQp1
bnNpZ25lZCBsb25nCmRpc3BhdGNoX3NvdXJjZV9nZXRfbWFzayhkaXNwYXRjaF9zb3VyY2VfdCBz
b3VyY2UpOwojIDUxNiAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1dGVfXygoX19ub25udWxs
X18pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX19hdHRyaWJ1dGVf
XygoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3dfXykpCnVuc2lnbmVkIGxvbmcK
ZGlzcGF0Y2hfc291cmNlX2dldF9kYXRhKGRpc3BhdGNoX3NvdXJjZV90IHNvdXJjZSk7CiMgNTM3
ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvc291cmNlLmgiIDMgNApfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKQpfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXykpIF9fYXR0cmli
dXRlX18oKF9fbm90aHJvd19fKSkKdm9pZApkaXNwYXRjaF9zb3VyY2VfbWVyZ2VfZGF0YShkaXNw
YXRjaF9zb3VyY2VfdCBzb3VyY2UsIHVuc2lnbmVkIGxvbmcgdmFsdWUpOwojIDU3MyAiL3Vzci9p
bmNsdWRlL2Rpc3BhdGNoL3NvdXJjZS5oIiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSkKX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18pKSBfX2F0dHJpYnV0ZV9fKChf
X25vdGhyb3dfXykpCnZvaWQKZGlzcGF0Y2hfc291cmNlX3NldF90aW1lcihkaXNwYXRjaF9zb3Vy
Y2VfdCBzb3VyY2UsCiBkaXNwYXRjaF90aW1lX3Qgc3RhcnQsCiB1aW50NjRfdCBpbnRlcnZhbCwK
IHVpbnQ2NF90IGxlZXdheSk7Cgp9CiMgNDQgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9kaXNwYXRj
aC5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9ncm91cC5oIiAxIDMgNAojIDIy
ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvZ3JvdXAuaCIgMyA0CiNkZWZpbmUgX19ESVNQQVRDSF9H
Uk9VUF9fIAojIDM0ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvZ3JvdXAuaCIgMyA0CnR5cGVkZWYg
c3RydWN0IGRpc3BhdGNoX2dyb3VwX3MgOiBwdWJsaWMgZGlzcGF0Y2hfb2JqZWN0X3Mge30gKmRp
c3BhdGNoX2dyb3VwX3Q7OwoKZXh0ZXJuICJDIiB7CiMgNTIgIi91c3IvaW5jbHVkZS9kaXNwYXRj
aC9ncm91cC5oIiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKX19h
dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCmRpc3BhdGNoX2dyb3VwX3QKZGlz
cGF0Y2hfZ3JvdXBfY3JlYXRlKHZvaWQpOwojIDgxICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvZ3Jv
dXAuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCl9fYXR0cmli
dXRlX18oKF9fbm9ubnVsbF9fKSkKdm9pZApkaXNwYXRjaF9ncm91cF9hc3luYyhkaXNwYXRjaF9n
cm91cF90IGdyb3VwLAogZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSwKIGRpc3BhdGNoX2Jsb2NrX3Qg
YmxvY2spOwojIDExNSAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL2dyb3VwLmgiIDMgNApfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQpfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxf
XygxKSkpIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKDIpKSkgX19hdHRyaWJ1dGVfXygoX19u
b25udWxsX18oNCkpKQp2b2lkCmRpc3BhdGNoX2dyb3VwX2FzeW5jX2YoZGlzcGF0Y2hfZ3JvdXBf
dCBncm91cCwKIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsCiB2b2lkICpjb250ZXh0LAogZGlzcGF0
Y2hfZnVuY3Rpb25fdCB3b3JrKTsKIyAxNTggIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9ncm91cC5o
IiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1dGVf
XygoX19ub25udWxsX18pKQpsb25nCmRpc3BhdGNoX2dyb3VwX3dhaXQoZGlzcGF0Y2hfZ3JvdXBf
dCBncm91cCwgZGlzcGF0Y2hfdGltZV90IHRpbWVvdXQpOwojIDE5NCAiL3Vzci9pbmNsdWRlL2Rp
c3BhdGNoL2dyb3VwLmgiIDMgNApfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KQpfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXykpCnZvaWQKZGlzcGF0Y2hfZ3JvdXBfbm90aWZ5
KGRpc3BhdGNoX2dyb3VwX3QgZ3JvdXAsCiBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlLAogZGlzcGF0
Y2hfYmxvY2tfdCBibG9jayk7CiMgMjI0ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvZ3JvdXAuaCIg
MyA0Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCl9fYXR0cmlidXRlX18o
KF9fbm9ubnVsbF9fKDEpKSkgX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oMikpKSBfX2F0dHJp
YnV0ZV9fKChfX25vbm51bGxfXyg0KSkpCnZvaWQKZGlzcGF0Y2hfZ3JvdXBfbm90aWZ5X2YoZGlz
cGF0Y2hfZ3JvdXBfdCBncm91cCwKIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsCiB2b2lkICpjb250
ZXh0LAogZGlzcGF0Y2hfZnVuY3Rpb25fdCB3b3JrKTsKIyAyNDcgIi91c3IvaW5jbHVkZS9kaXNw
YXRjaC9ncm91cC5oIiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkK
X19hdHRyaWJ1dGVfXygoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXykp
CnZvaWQKZGlzcGF0Y2hfZ3JvdXBfZW50ZXIoZGlzcGF0Y2hfZ3JvdXBfdCBncm91cCk7CiMgMjY2
ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvZ3JvdXAuaCIgMyA0Cl9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpCl9fYXR0cmlidXRlX18oKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1
dGVfXygoX19ub25udWxsX18pKQp2b2lkCmRpc3BhdGNoX2dyb3VwX2xlYXZlKGRpc3BhdGNoX2dy
b3VwX3QgZ3JvdXApOwoKfQojIDQ1ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvZGlzcGF0Y2guaCIg
MiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvc2VtYXBob3JlLmgiIDEgMyA0CiMgMjIg
Ii91c3IvaW5jbHVkZS9kaXNwYXRjaC9zZW1hcGhvcmUuaCIgMyA0CiNkZWZpbmUgX19ESVNQQVRD
SF9TRU1BUEhPUkVfXyAKIyAzNSAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NlbWFwaG9yZS5oIiAz
IDQKdHlwZWRlZiBzdHJ1Y3QgZGlzcGF0Y2hfc2VtYXBob3JlX3MgOiBwdWJsaWMgZGlzcGF0Y2hf
b2JqZWN0X3Mge30gKmRpc3BhdGNoX3NlbWFwaG9yZV90OzsKCmV4dGVybiAiQyIgewojIDU4ICIv
dXNyL2luY2x1ZGUvZGlzcGF0Y2gvc2VtYXBob3JlLmgiIDMgNApfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKQpfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSkgX19hdHRyaWJ1
dGVfXygoX19ub3Rocm93X18pKQpkaXNwYXRjaF9zZW1hcGhvcmVfdApkaXNwYXRjaF9zZW1hcGhv
cmVfY3JlYXRlKGxvbmcgdmFsdWUpOwojIDgzICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvc2VtYXBo
b3JlLmgiIDMgNApfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQpfX2F0dHJp
YnV0ZV9fKChfX25vbm51bGxfXykpIF9fYXR0cmlidXRlX18oKF9fbm90aHJvd19fKSkKbG9uZwpk
aXNwYXRjaF9zZW1hcGhvcmVfd2FpdChkaXNwYXRjaF9zZW1hcGhvcmVfdCBkc2VtYSwgZGlzcGF0
Y2hfdGltZV90IHRpbWVvdXQpOwojIDEwNSAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL3NlbWFwaG9y
ZS5oIiAzIDQKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKX19hdHRyaWJ1
dGVfXygoX19ub25udWxsX18pKSBfX2F0dHJpYnV0ZV9fKChfX25vdGhyb3dfXykpCmxvbmcKZGlz
cGF0Y2hfc2VtYXBob3JlX3NpZ25hbChkaXNwYXRjaF9zZW1hcGhvcmVfdCBkc2VtYSk7Cgp9CiMg
NDYgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9kaXNwYXRjaC5oIiAyIDMgNAojIDEgIi91c3IvaW5j
bHVkZS9kaXNwYXRjaC9vbmNlLmgiIDEgMyA0CiMgMjIgIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9v
bmNlLmgiIDMgNAojZGVmaW5lIF9fRElTUEFUQ0hfT05DRV9fIAoKCgoKCgpleHRlcm4gIkMiIHsK
IyAzOCAiL3Vzci9pbmNsdWRlL2Rpc3BhdGNoL29uY2UuaCIgMyA0CnR5cGVkZWYgbG9uZyBkaXNw
YXRjaF9vbmNlX3Q7CiMgNTggIi91c3IvaW5jbHVkZS9kaXNwYXRjaC9vbmNlLmgiIDMgNApfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQpfX2F0dHJpYnV0ZV9fKChfX25vbm51
bGxfXykpIF9fYXR0cmlidXRlX18oKF9fbm90aHJvd19fKSkKdm9pZApkaXNwYXRjaF9vbmNlKGRp
c3BhdGNoX29uY2VfdCAqcHJlZGljYXRlLCBkaXNwYXRjaF9ibG9ja190IGJsb2NrKTsKCiNkZWZp
bmUgZGlzcGF0Y2hfb25jZSh4LC4uLikgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCgqKHgpLCB+
MGwpICE9IH4wbCkgZGlzcGF0Y2hfb25jZSgoeCksIChfX1ZBX0FSR1NfXykpOyB9IHdoaWxlICgw
KQoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQpfX2F0dHJpYnV0ZV9f
KChfX25vbm51bGxfXygxKSkpIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKDMpKSkgX19hdHRy
aWJ1dGVfXygoX19ub3Rocm93X18pKQp2b2lkCmRpc3BhdGNoX29uY2VfZihkaXNwYXRjaF9vbmNl
X3QgKnByZWRpY2F0ZSwgdm9pZCAqY29udGV4dCwgdm9pZCAoKmZ1bmN0aW9uKSh2b2lkICopKTsK
CiNkZWZpbmUgZGlzcGF0Y2hfb25jZV9mKHgseSx6KSBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0
KCooeCksIH4wbCkgIT0gfjBsKSBkaXNwYXRjaF9vbmNlX2YoKHgpLCAoeSksICh6KSk7IH0gd2hp
bGUgKDApCgoKfQojIDQ3ICIvdXNyL2luY2x1ZGUvZGlzcGF0Y2gvZGlzcGF0Y2guaCIgMiAzIDQK
CiN1bmRlZiBfX0RJU1BBVENIX0lORElSRUNUX18KIyAxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZNZXNzYWdlUG9ydC5oIiAy
IDMKCgpleHRlcm4gIkMiIHsKCnR5cGVkZWYgc3RydWN0IF9fQ0ZNZXNzYWdlUG9ydCAqIENGTWVz
c2FnZVBvcnRSZWY7CgplbnVtIHsKICAgIGtDRk1lc3NhZ2VQb3J0U3VjY2VzcyA9IDAsCiAgICBr
Q0ZNZXNzYWdlUG9ydFNlbmRUaW1lb3V0ID0gLTEsCiAgICBrQ0ZNZXNzYWdlUG9ydFJlY2VpdmVU
aW1lb3V0ID0gLTIsCiAgICBrQ0ZNZXNzYWdlUG9ydElzSW52YWxpZCA9IC0zLAogICAga0NGTWVz
c2FnZVBvcnRUcmFuc3BvcnRFcnJvciA9IC00LAogICAga0NGTWVzc2FnZVBvcnRCZWNhbWVJbnZh
bGlkRXJyb3IgPSAtNQp9OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0ZJbmRleCB2ZXJzaW9uOwog
ICAgdm9pZCAqIGluZm87CiAgICBjb25zdCB2b2lkICooKnJldGFpbikoY29uc3Qgdm9pZCAqaW5m
byk7CiAgICB2b2lkICgqcmVsZWFzZSkoY29uc3Qgdm9pZCAqaW5mbyk7CiAgICBDRlN0cmluZ1Jl
ZiAoKmNvcHlEZXNjcmlwdGlvbikoY29uc3Qgdm9pZCAqaW5mbyk7Cn0gQ0ZNZXNzYWdlUG9ydENv
bnRleHQ7Cgp0eXBlZGVmIENGRGF0YVJlZiAoKkNGTWVzc2FnZVBvcnRDYWxsQmFjaykoQ0ZNZXNz
YWdlUG9ydFJlZiBsb2NhbCwgU0ludDMyIG1zZ2lkLCBDRkRhdGFSZWYgZGF0YSwgdm9pZCAqaW5m
byk7Cgp0eXBlZGVmIHZvaWQgKCpDRk1lc3NhZ2VQb3J0SW52YWxpZGF0aW9uQ2FsbEJhY2spKENG
TWVzc2FnZVBvcnRSZWYgbXMsIHZvaWQgKmluZm8pOwoKZXh0ZXJuIENGVHlwZUlEIENGTWVzc2Fn
ZVBvcnRHZXRUeXBlSUQodm9pZCk7CgpleHRlcm4gQ0ZNZXNzYWdlUG9ydFJlZiBDRk1lc3NhZ2VQ
b3J0Q3JlYXRlTG9jYWwoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBuYW1l
LCBDRk1lc3NhZ2VQb3J0Q2FsbEJhY2sgY2FsbG91dCwgQ0ZNZXNzYWdlUG9ydENvbnRleHQgKmNv
bnRleHQsIEJvb2xlYW4gKnNob3VsZEZyZWVJbmZvKTsKZXh0ZXJuIENGTWVzc2FnZVBvcnRSZWYg
Q0ZNZXNzYWdlUG9ydENyZWF0ZVJlbW90ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3Ry
aW5nUmVmIG5hbWUpOwoKZXh0ZXJuIEJvb2xlYW4gQ0ZNZXNzYWdlUG9ydElzUmVtb3RlKENGTWVz
c2FnZVBvcnRSZWYgbXMpOwpleHRlcm4gQ0ZTdHJpbmdSZWYgQ0ZNZXNzYWdlUG9ydEdldE5hbWUo
Q0ZNZXNzYWdlUG9ydFJlZiBtcyk7CmV4dGVybiBCb29sZWFuIENGTWVzc2FnZVBvcnRTZXROYW1l
KENGTWVzc2FnZVBvcnRSZWYgbXMsIENGU3RyaW5nUmVmIG5ld05hbWUpOwpleHRlcm4gdm9pZCBD
Rk1lc3NhZ2VQb3J0R2V0Q29udGV4dChDRk1lc3NhZ2VQb3J0UmVmIG1zLCBDRk1lc3NhZ2VQb3J0
Q29udGV4dCAqY29udGV4dCk7CmV4dGVybiB2b2lkIENGTWVzc2FnZVBvcnRJbnZhbGlkYXRlKENG
TWVzc2FnZVBvcnRSZWYgbXMpOwpleHRlcm4gQm9vbGVhbiBDRk1lc3NhZ2VQb3J0SXNWYWxpZChD
Rk1lc3NhZ2VQb3J0UmVmIG1zKTsKZXh0ZXJuIENGTWVzc2FnZVBvcnRJbnZhbGlkYXRpb25DYWxs
QmFjayBDRk1lc3NhZ2VQb3J0R2V0SW52YWxpZGF0aW9uQ2FsbEJhY2soQ0ZNZXNzYWdlUG9ydFJl
ZiBtcyk7CmV4dGVybiB2b2lkIENGTWVzc2FnZVBvcnRTZXRJbnZhbGlkYXRpb25DYWxsQmFjayhD
Rk1lc3NhZ2VQb3J0UmVmIG1zLCBDRk1lc3NhZ2VQb3J0SW52YWxpZGF0aW9uQ2FsbEJhY2sgY2Fs
bG91dCk7CgoKZXh0ZXJuIFNJbnQzMiBDRk1lc3NhZ2VQb3J0U2VuZFJlcXVlc3QoQ0ZNZXNzYWdl
UG9ydFJlZiByZW1vdGUsIFNJbnQzMiBtc2dpZCwgQ0ZEYXRhUmVmIGRhdGEsIENGVGltZUludGVy
dmFsIHNlbmRUaW1lb3V0LCBDRlRpbWVJbnRlcnZhbCByY3ZUaW1lb3V0LCBDRlN0cmluZ1JlZiBy
ZXBseU1vZGUsIENGRGF0YVJlZiAqcmV0dXJuRGF0YSk7CgpleHRlcm4gQ0ZSdW5Mb29wU291cmNl
UmVmIENGTWVzc2FnZVBvcnRDcmVhdGVSdW5Mb29wU291cmNlKENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvciwgQ0ZNZXNzYWdlUG9ydFJlZiBsb2NhbCwgQ0ZJbmRleCBvcmRlcik7CgoKZXh0ZXJuIHZv
aWQgQ0ZNZXNzYWdlUG9ydFNldERpc3BhdGNoUXVldWUoQ0ZNZXNzYWdlUG9ydFJlZiBtcywgZGlz
cGF0Y2hfcXVldWVfdCBxdWV1ZSkgOwoKCn0KIyA1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUZvdW5kYXRpb24uaCIgMiAz
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvQ0ZOdW1iZXIuaCIgMSAzCgoKCgoKI2RlZmluZSBfX0NPUkVGT1VOREFUSU9OX0NG
TlVNQkVSX18gMQoKCgpleHRlcm4gIkMiIHsKCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZCb29s
ZWFuICogQ0ZCb29sZWFuUmVmOwoKZXh0ZXJuCmNvbnN0IENGQm9vbGVhblJlZiBrQ0ZCb29sZWFu
VHJ1ZTsKZXh0ZXJuCmNvbnN0IENGQm9vbGVhblJlZiBrQ0ZCb29sZWFuRmFsc2U7CgpleHRlcm4K
Q0ZUeXBlSUQgQ0ZCb29sZWFuR2V0VHlwZUlEKHZvaWQpOwoKZXh0ZXJuCkJvb2xlYW4gQ0ZCb29s
ZWFuR2V0VmFsdWUoQ0ZCb29sZWFuUmVmIGJvb2xlYW4pOwoKZW51bSB7CgogICAga0NGTnVtYmVy
U0ludDhUeXBlID0gMSwKICAgIGtDRk51bWJlclNJbnQxNlR5cGUgPSAyLAogICAga0NGTnVtYmVy
U0ludDMyVHlwZSA9IDMsCiAgICBrQ0ZOdW1iZXJTSW50NjRUeXBlID0gNCwKICAgIGtDRk51bWJl
ckZsb2F0MzJUeXBlID0gNSwKICAgIGtDRk51bWJlckZsb2F0NjRUeXBlID0gNiwKCiAgICBrQ0ZO
dW1iZXJDaGFyVHlwZSA9IDcsCiAgICBrQ0ZOdW1iZXJTaG9ydFR5cGUgPSA4LAogICAga0NGTnVt
YmVySW50VHlwZSA9IDksCiAgICBrQ0ZOdW1iZXJMb25nVHlwZSA9IDEwLAogICAga0NGTnVtYmVy
TG9uZ0xvbmdUeXBlID0gMTEsCiAgICBrQ0ZOdW1iZXJGbG9hdFR5cGUgPSAxMiwKICAgIGtDRk51
bWJlckRvdWJsZVR5cGUgPSAxMywKCiAgICBrQ0ZOdW1iZXJDRkluZGV4VHlwZSA9IDE0LAoKICAg
IGtDRk51bWJlck5TSW50ZWdlclR5cGUgPSAxNSwKICAgIGtDRk51bWJlckNHRmxvYXRUeXBlID0g
MTYsCiAgICBrQ0ZOdW1iZXJNYXhUeXBlID0gMTYKCgoKfTsKdHlwZWRlZiBDRkluZGV4IENGTnVt
YmVyVHlwZTsKCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZOdW1iZXIgKiBDRk51bWJlclJlZjsK
CmV4dGVybgpjb25zdCBDRk51bWJlclJlZiBrQ0ZOdW1iZXJQb3NpdGl2ZUluZmluaXR5OwpleHRl
cm4KY29uc3QgQ0ZOdW1iZXJSZWYga0NGTnVtYmVyTmVnYXRpdmVJbmZpbml0eTsKZXh0ZXJuCmNv
bnN0IENGTnVtYmVyUmVmIGtDRk51bWJlck5hTjsKCmV4dGVybgpDRlR5cGVJRCBDRk51bWJlckdl
dFR5cGVJRCh2b2lkKTsKIyA3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOdW1iZXIuaCIgMwpleHRlcm4KQ0ZOdW1iZXJSZWYg
Q0ZOdW1iZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRk51bWJlclR5cGUgdGhl
VHlwZSwgY29uc3Qgdm9pZCAqdmFsdWVQdHIpOwoKCgoKCmV4dGVybgpDRk51bWJlclR5cGUgQ0ZO
dW1iZXJHZXRUeXBlKENGTnVtYmVyUmVmIG51bWJlcik7CgoKCgpleHRlcm4KQ0ZJbmRleCBDRk51
bWJlckdldEJ5dGVTaXplKENGTnVtYmVyUmVmIG51bWJlcik7CgoKCgoKZXh0ZXJuCkJvb2xlYW4g
Q0ZOdW1iZXJJc0Zsb2F0VHlwZShDRk51bWJlclJlZiBudW1iZXIpOwojIDEwMyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOdW1i
ZXIuaCIgMwpleHRlcm4KQm9vbGVhbiBDRk51bWJlckdldFZhbHVlKENGTnVtYmVyUmVmIG51bWJl
ciwgQ0ZOdW1iZXJUeXBlIHRoZVR5cGUsIHZvaWQgKnZhbHVlUHRyKTsKIyAxMjEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGTnVt
YmVyLmgiIDMKZXh0ZXJuCkNGQ29tcGFyaXNvblJlc3VsdCBDRk51bWJlckNvbXBhcmUoQ0ZOdW1i
ZXJSZWYgbnVtYmVyLCBDRk51bWJlclJlZiBvdGhlck51bWJlciwgdm9pZCAqY29udGV4dCk7Cgp9
CiMgNTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0NvcmVGb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGTnVtYmVyRm9ybWF0dGVy
LmgiIDEgMwoKCgoKCiNkZWZpbmUgX19DT1JFRk9VTkRBVElPTl9DRk5VTUJFUkZPUk1BVFRFUl9f
IDEKCgoKCgoKCmV4dGVybiAiQyIgewoKdHlwZWRlZiBzdHJ1Y3QgX19DRk51bWJlckZvcm1hdHRl
ciAqQ0ZOdW1iZXJGb3JtYXR0ZXJSZWY7CgoKCmV4dGVybgpDRlR5cGVJRCBDRk51bWJlckZvcm1h
dHRlckdldFR5cGVJRCh2b2lkKSA7CgplbnVtIHsKIGtDRk51bWJlckZvcm1hdHRlck5vU3R5bGUg
PSAwLAoga0NGTnVtYmVyRm9ybWF0dGVyRGVjaW1hbFN0eWxlID0gMSwKIGtDRk51bWJlckZvcm1h
dHRlckN1cnJlbmN5U3R5bGUgPSAyLAoga0NGTnVtYmVyRm9ybWF0dGVyUGVyY2VudFN0eWxlID0g
MywKIGtDRk51bWJlckZvcm1hdHRlclNjaWVudGlmaWNTdHlsZSA9IDQsCiBrQ0ZOdW1iZXJGb3Jt
YXR0ZXJTcGVsbE91dFN0eWxlID0gNQp9Owp0eXBlZGVmIENGSW5kZXggQ0ZOdW1iZXJGb3JtYXR0
ZXJTdHlsZTsKCgpleHRlcm4KQ0ZOdW1iZXJGb3JtYXR0ZXJSZWYgQ0ZOdW1iZXJGb3JtYXR0ZXJD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkxvY2FsZVJlZiBsb2NhbGUsIENGTnVt
YmVyRm9ybWF0dGVyU3R5bGUgc3R5bGUpIDsKCgoKZXh0ZXJuCkNGTG9jYWxlUmVmIENGTnVtYmVy
Rm9ybWF0dGVyR2V0TG9jYWxlKENGTnVtYmVyRm9ybWF0dGVyUmVmIGZvcm1hdHRlcikgOwoKZXh0
ZXJuCkNGTnVtYmVyRm9ybWF0dGVyU3R5bGUgQ0ZOdW1iZXJGb3JtYXR0ZXJHZXRTdHlsZShDRk51
bWJlckZvcm1hdHRlclJlZiBmb3JtYXR0ZXIpIDsKCgpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZOdW1i
ZXJGb3JtYXR0ZXJHZXRGb3JtYXQoQ0ZOdW1iZXJGb3JtYXR0ZXJSZWYgZm9ybWF0dGVyKSA7Cgpl
eHRlcm4Kdm9pZCBDRk51bWJlckZvcm1hdHRlclNldEZvcm1hdChDRk51bWJlckZvcm1hdHRlclJl
ZiBmb3JtYXR0ZXIsIENGU3RyaW5nUmVmIGZvcm1hdFN0cmluZykgOwojIDU5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRk51bWJl
ckZvcm1hdHRlci5oIiAzCmV4dGVybgpDRlN0cmluZ1JlZiBDRk51bWJlckZvcm1hdHRlckNyZWF0
ZVN0cmluZ1dpdGhOdW1iZXIoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRk51bWJlckZvcm1h
dHRlclJlZiBmb3JtYXR0ZXIsIENGTnVtYmVyUmVmIG51bWJlcikgOwoKZXh0ZXJuCkNGU3RyaW5n
UmVmIENGTnVtYmVyRm9ybWF0dGVyQ3JlYXRlU3RyaW5nV2l0aFZhbHVlKENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciwgQ0ZOdW1iZXJGb3JtYXR0ZXJSZWYgZm9ybWF0dGVyLCBDRk51bWJlclR5cGUg
bnVtYmVyVHlwZSwgY29uc3Qgdm9pZCAqdmFsdWVQdHIpIDsKCgoKCmVudW0gewogICAga0NGTnVt
YmVyRm9ybWF0dGVyUGFyc2VJbnRlZ2Vyc09ubHkgPSAxCn07CnR5cGVkZWYgQ0ZPcHRpb25GbGFn
cyBDRk51bWJlckZvcm1hdHRlck9wdGlvbkZsYWdzOwoKZXh0ZXJuCkNGTnVtYmVyUmVmIENGTnVt
YmVyRm9ybWF0dGVyQ3JlYXRlTnVtYmVyRnJvbVN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0
b3IsIENGTnVtYmVyRm9ybWF0dGVyUmVmIGZvcm1hdHRlciwgQ0ZTdHJpbmdSZWYgc3RyaW5nLCBD
RlJhbmdlICpyYW5nZXAsIENGT3B0aW9uRmxhZ3Mgb3B0aW9ucykgOwoKZXh0ZXJuCkJvb2xlYW4g
Q0ZOdW1iZXJGb3JtYXR0ZXJHZXRWYWx1ZUZyb21TdHJpbmcoQ0ZOdW1iZXJGb3JtYXR0ZXJSZWYg
Zm9ybWF0dGVyLCBDRlN0cmluZ1JlZiBzdHJpbmcsIENGUmFuZ2UgKnJhbmdlcCwgQ0ZOdW1iZXJU
eXBlIG51bWJlclR5cGUsIHZvaWQgKnZhbHVlUHRyKSA7CiMgODkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGTnVtYmVyRm9ybWF0
dGVyLmgiIDMKZXh0ZXJuCnZvaWQgQ0ZOdW1iZXJGb3JtYXR0ZXJTZXRQcm9wZXJ0eShDRk51bWJl
ckZvcm1hdHRlclJlZiBmb3JtYXR0ZXIsIENGU3RyaW5nUmVmIGtleSwgQ0ZUeXBlUmVmIHZhbHVl
KSA7CgpleHRlcm4KQ0ZUeXBlUmVmIENGTnVtYmVyRm9ybWF0dGVyQ29weVByb3BlcnR5KENGTnVt
YmVyRm9ybWF0dGVyUmVmIGZvcm1hdHRlciwgQ0ZTdHJpbmdSZWYga2V5KSA7CgoKCmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJDdXJyZW5jeUNvZGUgOwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyRGVjaW1hbFNlcGFyYXRvciA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJDdXJyZW5jeURlY2ltYWxT
ZXBhcmF0b3IgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyQWx3
YXlzU2hvd0RlY2ltYWxTZXBhcmF0b3IgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGTnVt
YmVyRm9ybWF0dGVyR3JvdXBpbmdTZXBhcmF0b3IgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0NGTnVtYmVyRm9ybWF0dGVyVXNlR3JvdXBpbmdTZXBhcmF0b3IgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyUGVyY2VudFN5bWJvbCA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJaZXJvU3ltYm9sIDsKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlck5hTlN5bWJvbCA7CmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJJbmZpbml0eVN5bWJvbCA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJNaW51c1NpZ24gOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyUGx1c1NpZ24gOwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyQ3VycmVuY3lTeW1ib2wgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyRXhwb25lbnRTeW1ib2wgOwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyTWluSW50ZWdlckRpZ2l0cyA7CmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJNYXhJbnRlZ2VyRGlnaXRzIDsKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlck1pbkZyYWN0aW9uRGlnaXRz
IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlck1heEZyYWN0aW9u
RGlnaXRzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlckdyb3Vw
aW5nU2l6ZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJTZWNv
bmRhcnlHcm91cGluZ1NpemUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9y
bWF0dGVyUm91bmRpbmdNb2RlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZv
cm1hdHRlclJvdW5kaW5nSW5jcmVtZW50IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51
bWJlckZvcm1hdHRlckZvcm1hdFdpZHRoIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51
bWJlckZvcm1hdHRlclBhZGRpbmdQb3NpdGlvbiA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZOdW1iZXJGb3JtYXR0ZXJQYWRkaW5nQ2hhcmFjdGVyIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtDRk51bWJlckZvcm1hdHRlckRlZmF1bHRGb3JtYXQgOwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyTXVsdGlwbGllciA7CmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJQb3NpdGl2ZVByZWZpeCA7CmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJQb3NpdGl2ZVN1ZmZpeCA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJOZWdhdGl2ZVByZWZpeCA7CmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJOZWdhdGl2ZVN1ZmZpeCA7CmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJQZXJNaWxsU3ltYm9sIDsKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlckludGVybmF0aW9uYWxDdXJyZW5j
eVN5bWJvbCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJDdXJy
ZW5jeUdyb3VwaW5nU2VwYXJhdG9yIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJl
ckZvcm1hdHRlcklzTGVuaWVudCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJG
b3JtYXR0ZXJVc2VTaWduaWZpY2FudERpZ2l0cyA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZOdW1iZXJGb3JtYXR0ZXJNaW5TaWduaWZpY2FudERpZ2l0cyA7CmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJNYXhTaWduaWZpY2FudERpZ2l0cyA7CgplbnVtIHsK
ICAgIGtDRk51bWJlckZvcm1hdHRlclJvdW5kQ2VpbGluZyA9IDAsCiAgICBrQ0ZOdW1iZXJGb3Jt
YXR0ZXJSb3VuZEZsb29yID0gMSwKICAgIGtDRk51bWJlckZvcm1hdHRlclJvdW5kRG93biA9IDIs
CiAgICBrQ0ZOdW1iZXJGb3JtYXR0ZXJSb3VuZFVwID0gMywKICAgIGtDRk51bWJlckZvcm1hdHRl
clJvdW5kSGFsZkV2ZW4gPSA0LAogICAga0NGTnVtYmVyRm9ybWF0dGVyUm91bmRIYWxmRG93biA9
IDUsCiAgICBrQ0ZOdW1iZXJGb3JtYXR0ZXJSb3VuZEhhbGZVcCA9IDYKfTsKdHlwZWRlZiBDRklu
ZGV4IENGTnVtYmVyRm9ybWF0dGVyUm91bmRpbmdNb2RlOwoKZW51bSB7CiAgICBrQ0ZOdW1iZXJG
b3JtYXR0ZXJQYWRCZWZvcmVQcmVmaXggPSAwLAogICAga0NGTnVtYmVyRm9ybWF0dGVyUGFkQWZ0
ZXJQcmVmaXggPSAxLAogICAga0NGTnVtYmVyRm9ybWF0dGVyUGFkQmVmb3JlU3VmZml4ID0gMiwK
ICAgIGtDRk51bWJlckZvcm1hdHRlclBhZEFmdGVyU3VmZml4ID0gMwp9Owp0eXBlZGVmIENGSW5k
ZXggQ0ZOdW1iZXJGb3JtYXR0ZXJQYWRQb3NpdGlvbjsKCgpleHRlcm4KQm9vbGVhbiBDRk51bWJl
ckZvcm1hdHRlckdldERlY2ltYWxJbmZvRm9yQ3VycmVuY3lDb2RlKENGU3RyaW5nUmVmIGN1cnJl
bmN5Q29kZSwgaW50MzJfdCAqZGVmYXVsdEZyYWN0aW9uRGlnaXRzLCBkb3VibGUgKnJvdW5kaW5n
SW5jcmVtZW50KSA7CgoKCgoKCn0KIyA1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUZvdW5kYXRpb24uaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZQbHVnSW4uaCIgMSAzCgoKCgoKI2RlZmluZSBfX0NPUkVGT1VOREFUSU9OX0NGUExVR0lO
X18gMQoKCiNkZWZpbmUgQ09SRUZPVU5EQVRJT05fQ0ZQTFVHSU5DT01fU0VQQVJBVEUgMQoKCgoK
CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9DRlVVSUQuaCIgMSAzCgoKCgoKI2RlZmluZSBfX0NPUkVGT1VOREFUSU9OX0NG
VVVJRF9fIDEKCgoKCmV4dGVybiAiQyIgewoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVVSUQg
KiBDRlVVSURSZWY7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBVSW50OCBieXRlMDsKICAgIFVJbnQ4
IGJ5dGUxOwogICAgVUludDggYnl0ZTI7CiAgICBVSW50OCBieXRlMzsKICAgIFVJbnQ4IGJ5dGU0
OwogICAgVUludDggYnl0ZTU7CiAgICBVSW50OCBieXRlNjsKICAgIFVJbnQ4IGJ5dGU3OwogICAg
VUludDggYnl0ZTg7CiAgICBVSW50OCBieXRlOTsKICAgIFVJbnQ4IGJ5dGUxMDsKICAgIFVJbnQ4
IGJ5dGUxMTsKICAgIFVJbnQ4IGJ5dGUxMjsKICAgIFVJbnQ4IGJ5dGUxMzsKICAgIFVJbnQ4IGJ5
dGUxNDsKICAgIFVJbnQ4IGJ5dGUxNTsKfSBDRlVVSURCeXRlczsKCgoKCgoKZXh0ZXJuCkNGVHlw
ZUlEIENGVVVJREdldFR5cGVJRCh2b2lkKTsKCmV4dGVybgpDRlVVSURSZWYgQ0ZVVUlEQ3JlYXRl
KENGQWxsb2NhdG9yUmVmIGFsbG9jKTsKCgpleHRlcm4KQ0ZVVUlEUmVmIENGVVVJRENyZWF0ZVdp
dGhCeXRlcyhDRkFsbG9jYXRvclJlZiBhbGxvYywgVUludDggYnl0ZTAsIFVJbnQ4IGJ5dGUxLCBV
SW50OCBieXRlMiwgVUludDggYnl0ZTMsIFVJbnQ4IGJ5dGU0LCBVSW50OCBieXRlNSwgVUludDgg
Ynl0ZTYsIFVJbnQ4IGJ5dGU3LCBVSW50OCBieXRlOCwgVUludDggYnl0ZTksIFVJbnQ4IGJ5dGUx
MCwgVUludDggYnl0ZTExLCBVSW50OCBieXRlMTIsIFVJbnQ4IGJ5dGUxMywgVUludDggYnl0ZTE0
LCBVSW50OCBieXRlMTUpOwoKCmV4dGVybgpDRlVVSURSZWYgQ0ZVVUlEQ3JlYXRlRnJvbVN0cmlu
ZyhDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZTdHJpbmdSZWYgdXVpZFN0cik7CgoKZXh0ZXJuCkNG
U3RyaW5nUmVmIENGVVVJRENyZWF0ZVN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZVVUlE
UmVmIHV1aWQpOwoKCmV4dGVybgpDRlVVSURSZWYgQ0ZVVUlER2V0Q29uc3RhbnRVVUlEV2l0aEJ5
dGVzKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBVSW50OCBieXRlMCwgVUludDggYnl0ZTEsIFVJbnQ4
IGJ5dGUyLCBVSW50OCBieXRlMywgVUludDggYnl0ZTQsIFVJbnQ4IGJ5dGU1LCBVSW50OCBieXRl
NiwgVUludDggYnl0ZTcsIFVJbnQ4IGJ5dGU4LCBVSW50OCBieXRlOSwgVUludDggYnl0ZTEwLCBV
SW50OCBieXRlMTEsIFVJbnQ4IGJ5dGUxMiwgVUludDggYnl0ZTEzLCBVSW50OCBieXRlMTQsIFVJ
bnQ4IGJ5dGUxNSk7CgoKZXh0ZXJuCkNGVVVJREJ5dGVzIENGVVVJREdldFVVSURCeXRlcyhDRlVV
SURSZWYgdXVpZCk7CgpleHRlcm4KQ0ZVVUlEUmVmIENGVVVJRENyZWF0ZUZyb21VVUlEQnl0ZXMo
Q0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGVVVJREJ5dGVzIGJ5dGVzKTsKCn0KIyAxOCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZQ
bHVnSW4uaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtD
RlBsdWdJbkR5bmFtaWNSZWdpc3RyYXRpb25LZXk7CmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZQbHVnSW5EeW5hbWljUmVnaXN0ZXJGdW5jdGlvbktleTsKZXh0ZXJuCmNvbnN0IENGU3RyaW5n
UmVmIGtDRlBsdWdJblVubG9hZEZ1bmN0aW9uS2V5OwpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYg
a0NGUGx1Z0luRmFjdG9yaWVzS2V5OwpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGUGx1Z0lu
VHlwZXNLZXk7CgoKCgp0eXBlZGVmIHZvaWQgKCpDRlBsdWdJbkR5bmFtaWNSZWdpc3RlckZ1bmN0
aW9uKShDRlBsdWdJblJlZiBwbHVnSW4pOwp0eXBlZGVmIHZvaWQgKCpDRlBsdWdJblVubG9hZEZ1
bmN0aW9uKShDRlBsdWdJblJlZiBwbHVnSW4pOwp0eXBlZGVmIHZvaWQgKigqQ0ZQbHVnSW5GYWN0
b3J5RnVuY3Rpb24pKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZVVUlEUmVmIHR5cGVVVUlE
KTsKCgoKZXh0ZXJuCkNGVHlwZUlEIENGUGx1Z0luR2V0VHlwZUlEKHZvaWQpOwoKZXh0ZXJuCkNG
UGx1Z0luUmVmIENGUGx1Z0luQ3JlYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZVUkxS
ZWYgcGx1Z0luVVJMKTsKCgpleHRlcm4KQ0ZCdW5kbGVSZWYgQ0ZQbHVnSW5HZXRCdW5kbGUoQ0ZQ
bHVnSW5SZWYgcGx1Z0luKTsKCgoKCgoKCmV4dGVybgp2b2lkIENGUGx1Z0luU2V0TG9hZE9uRGVt
YW5kKENGUGx1Z0luUmVmIHBsdWdJbiwgQm9vbGVhbiBmbGFnKTsKCmV4dGVybgpCb29sZWFuIENG
UGx1Z0luSXNMb2FkT25EZW1hbmQoQ0ZQbHVnSW5SZWYgcGx1Z0luKTsKCgoKCgpleHRlcm4KQ0ZB
cnJheVJlZiBDRlBsdWdJbkZpbmRGYWN0b3JpZXNGb3JQbHVnSW5UeXBlKENGVVVJRFJlZiB0eXBl
VVVJRCk7CgoKZXh0ZXJuCkNGQXJyYXlSZWYgQ0ZQbHVnSW5GaW5kRmFjdG9yaWVzRm9yUGx1Z0lu
VHlwZUluUGx1Z0luKENGVVVJRFJlZiB0eXBlVVVJRCwgQ0ZQbHVnSW5SZWYgcGx1Z0luKTsKCgpl
eHRlcm4Kdm9pZCAqQ0ZQbHVnSW5JbnN0YW5jZUNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0
b3IsIENGVVVJRFJlZiBmYWN0b3J5VVVJRCwgQ0ZVVUlEUmVmIHR5cGVVVUlEKTsKCgoKCgoKZXh0
ZXJuCkJvb2xlYW4gQ0ZQbHVnSW5SZWdpc3RlckZhY3RvcnlGdW5jdGlvbihDRlVVSURSZWYgZmFj
dG9yeVVVSUQsIENGUGx1Z0luRmFjdG9yeUZ1bmN0aW9uIGZ1bmMpOwoKZXh0ZXJuCkJvb2xlYW4g
Q0ZQbHVnSW5SZWdpc3RlckZhY3RvcnlGdW5jdGlvbkJ5TmFtZShDRlVVSURSZWYgZmFjdG9yeVVV
SUQsIENGUGx1Z0luUmVmIHBsdWdJbiwgQ0ZTdHJpbmdSZWYgZnVuY3Rpb25OYW1lKTsKCmV4dGVy
bgpCb29sZWFuIENGUGx1Z0luVW5yZWdpc3RlckZhY3RvcnkoQ0ZVVUlEUmVmIGZhY3RvcnlVVUlE
KTsKCmV4dGVybgpCb29sZWFuIENGUGx1Z0luUmVnaXN0ZXJQbHVnSW5UeXBlKENGVVVJRFJlZiBm
YWN0b3J5VVVJRCwgQ0ZVVUlEUmVmIHR5cGVVVUlEKTsKCmV4dGVybgpCb29sZWFuIENGUGx1Z0lu
VW5yZWdpc3RlclBsdWdJblR5cGUoQ0ZVVUlEUmVmIGZhY3RvcnlVVUlELCBDRlVVSURSZWYgdHlw
ZVVVSUQpOwoKCgoKCmV4dGVybgp2b2lkIENGUGx1Z0luQWRkSW5zdGFuY2VGb3JGYWN0b3J5KENG
VVVJRFJlZiBmYWN0b3J5SUQpOwoKZXh0ZXJuCnZvaWQgQ0ZQbHVnSW5SZW1vdmVJbnN0YW5jZUZv
ckZhY3RvcnkoQ0ZVVUlEUmVmIGZhY3RvcnlJRCk7CgoKCgp0eXBlZGVmIHN0cnVjdCBfX0NGUGx1
Z0luSW5zdGFuY2UgKkNGUGx1Z0luSW5zdGFuY2VSZWY7Cgp0eXBlZGVmIEJvb2xlYW4gKCpDRlBs
dWdJbkluc3RhbmNlR2V0SW50ZXJmYWNlRnVuY3Rpb24pKENGUGx1Z0luSW5zdGFuY2VSZWYgaW5z
dGFuY2UsIENGU3RyaW5nUmVmIGludGVyZmFjZU5hbWUsIHZvaWQgKipmdGJsKTsKdHlwZWRlZiB2
b2lkICgqQ0ZQbHVnSW5JbnN0YW5jZURlYWxsb2NhdGVJbnN0YW5jZURhdGFGdW5jdGlvbikodm9p
ZCAqaW5zdGFuY2VEYXRhKTsKCmV4dGVybgpCb29sZWFuIENGUGx1Z0luSW5zdGFuY2VHZXRJbnRl
cmZhY2VGdW5jdGlvblRhYmxlKENGUGx1Z0luSW5zdGFuY2VSZWYgaW5zdGFuY2UsIENGU3RyaW5n
UmVmIGludGVyZmFjZU5hbWUsIHZvaWQgKipmdGJsKTsKZXh0ZXJuCkNGU3RyaW5nUmVmIENGUGx1
Z0luSW5zdGFuY2VHZXRGYWN0b3J5TmFtZShDRlBsdWdJbkluc3RhbmNlUmVmIGluc3RhbmNlKTsK
ZXh0ZXJuCnZvaWQgKkNGUGx1Z0luSW5zdGFuY2VHZXRJbnN0YW5jZURhdGEoQ0ZQbHVnSW5JbnN0
YW5jZVJlZiBpbnN0YW5jZSk7CmV4dGVybgpDRlR5cGVJRCBDRlBsdWdJbkluc3RhbmNlR2V0VHlw
ZUlEKHZvaWQpOwpleHRlcm4KQ0ZQbHVnSW5JbnN0YW5jZVJlZiBDRlBsdWdJbkluc3RhbmNlQ3Jl
YXRlV2l0aEluc3RhbmNlRGF0YVNpemUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkluZGV4
IGluc3RhbmNlRGF0YVNpemUsIENGUGx1Z0luSW5zdGFuY2VEZWFsbG9jYXRlSW5zdGFuY2VEYXRh
RnVuY3Rpb24gZGVhbGxvY2F0ZUluc3RhbmNlRnVuY3Rpb24sIENGU3RyaW5nUmVmIGZhY3RvcnlO
YW1lLCBDRlBsdWdJbkluc3RhbmNlR2V0SW50ZXJmYWNlRnVuY3Rpb24gZ2V0SW50ZXJmYWNlRnVu
Y3Rpb24pOwoKfQojIDU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlByZWZl
cmVuY2VzLmgiIDEgMwoKCgoKCiNkZWZpbmUgX19DT1JFRk9VTkRBVElPTl9DRlBSRUZFUkVOQ0VT
X18gMQoKCgoKCmV4dGVybiAiQyIgewoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlByZWZl
cmVuY2VzQW55QXBwbGljYXRpb247CmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZQcmVmZXJl
bmNlc0N1cnJlbnRBcHBsaWNhdGlvbjsKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlByZWZl
cmVuY2VzQW55SG9zdDsKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlByZWZlcmVuY2VzQ3Vy
cmVudEhvc3Q7CmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZQcmVmZXJlbmNlc0FueVVzZXI7
CmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyOwojIDQx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9DRlByZWZlcmVuY2VzLmgiIDMKZXh0ZXJuCkNGUHJvcGVydHlMaXN0UmVmIENGUHJlZmVy
ZW5jZXNDb3B5QXBwVmFsdWUoQ0ZTdHJpbmdSZWYga2V5LCBDRlN0cmluZ1JlZiBhcHBsaWNhdGlv
bklEKTsKCgoKCmV4dGVybgpCb29sZWFuIENGUHJlZmVyZW5jZXNHZXRBcHBCb29sZWFuVmFsdWUo
Q0ZTdHJpbmdSZWYga2V5LCBDRlN0cmluZ1JlZiBhcHBsaWNhdGlvbklELCBCb29sZWFuICprZXlF
eGlzdHNBbmRIYXNWYWxpZEZvcm1hdCk7CgoKCgpleHRlcm4KQ0ZJbmRleCBDRlByZWZlcmVuY2Vz
R2V0QXBwSW50ZWdlclZhbHVlKENGU3RyaW5nUmVmIGtleSwgQ0ZTdHJpbmdSZWYgYXBwbGljYXRp
b25JRCwgQm9vbGVhbiAqa2V5RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQpOwoKCgoKZXh0ZXJuCnZv
aWQgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKENGU3RyaW5nUmVmIGtleSwgQ0ZQcm9wZXJ0eUxp
c3RSZWYgdmFsdWUsIENGU3RyaW5nUmVmIGFwcGxpY2F0aW9uSUQpOwoKCgoKCmV4dGVybgp2b2lk
IENGUHJlZmVyZW5jZXNBZGRTdWl0ZVByZWZlcmVuY2VzVG9BcHAoQ0ZTdHJpbmdSZWYgYXBwbGlj
YXRpb25JRCwgQ0ZTdHJpbmdSZWYgc3VpdGVJRCk7CgpleHRlcm4Kdm9pZCBDRlByZWZlcmVuY2Vz
UmVtb3ZlU3VpdGVQcmVmZXJlbmNlc0Zyb21BcHAoQ0ZTdHJpbmdSZWYgYXBwbGljYXRpb25JRCwg
Q0ZTdHJpbmdSZWYgc3VpdGVJRCk7CgoKCmV4dGVybgpCb29sZWFuIENGUHJlZmVyZW5jZXNBcHBT
eW5jaHJvbml6ZShDRlN0cmluZ1JlZiBhcHBsaWNhdGlvbklEKTsKCgoKCgpleHRlcm4KQ0ZQcm9w
ZXJ0eUxpc3RSZWYgQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZShDRlN0cmluZ1JlZiBrZXksIENGU3Ry
aW5nUmVmIGFwcGxpY2F0aW9uSUQsIENGU3RyaW5nUmVmIHVzZXJOYW1lLCBDRlN0cmluZ1JlZiBo
b3N0TmFtZSk7CgoKCgoKZXh0ZXJuCkNGRGljdGlvbmFyeVJlZiBDRlByZWZlcmVuY2VzQ29weU11
bHRpcGxlKENGQXJyYXlSZWYga2V5c1RvRmV0Y2gsIENGU3RyaW5nUmVmIGFwcGxpY2F0aW9uSUQs
IENGU3RyaW5nUmVmIHVzZXJOYW1lLCBDRlN0cmluZ1JlZiBob3N0TmFtZSk7CgoKCmV4dGVybgp2
b2lkIENGUHJlZmVyZW5jZXNTZXRWYWx1ZShDRlN0cmluZ1JlZiBrZXksIENGUHJvcGVydHlMaXN0
UmVmIHZhbHVlLCBDRlN0cmluZ1JlZiBhcHBsaWNhdGlvbklELCBDRlN0cmluZ1JlZiB1c2VyTmFt
ZSwgQ0ZTdHJpbmdSZWYgaG9zdE5hbWUpOwoKCgpleHRlcm4Kdm9pZCBDRlByZWZlcmVuY2VzU2V0
TXVsdGlwbGUoQ0ZEaWN0aW9uYXJ5UmVmIGtleXNUb1NldCwgQ0ZBcnJheVJlZiBrZXlzVG9SZW1v
dmUsIENGU3RyaW5nUmVmIGFwcGxpY2F0aW9uSUQsIENGU3RyaW5nUmVmIHVzZXJOYW1lLCBDRlN0
cmluZ1JlZiBob3N0TmFtZSk7CgpleHRlcm4KQm9vbGVhbiBDRlByZWZlcmVuY2VzU3luY2hyb25p
emUoQ0ZTdHJpbmdSZWYgYXBwbGljYXRpb25JRCwgQ0ZTdHJpbmdSZWYgdXNlck5hbWUsIENGU3Ry
aW5nUmVmIGhvc3ROYW1lKTsKCgoKCgpleHRlcm4KQ0ZBcnJheVJlZiBDRlByZWZlcmVuY2VzQ29w
eUFwcGxpY2F0aW9uTGlzdChDRlN0cmluZ1JlZiB1c2VyTmFtZSwgQ0ZTdHJpbmdSZWYgaG9zdE5h
bWUpOwoKCgoKZXh0ZXJuCkNGQXJyYXlSZWYgQ0ZQcmVmZXJlbmNlc0NvcHlLZXlMaXN0KENGU3Ry
aW5nUmVmIGFwcGxpY2F0aW9uSUQsIENGU3RyaW5nUmVmIHVzZXJOYW1lLCBDRlN0cmluZ1JlZiBo
b3N0TmFtZSk7CiMgMTI0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9DRlByZWZlcmVuY2VzLmgiIDMKZXh0ZXJuCkJvb2xlYW4gQ0ZQ
cmVmZXJlbmNlc0FwcFZhbHVlSXNGb3JjZWQoQ0ZTdHJpbmdSZWYga2V5LCBDRlN0cmluZ1JlZiBh
cHBsaWNhdGlvbklEKTsKCgoKCn0KIyA1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUZvdW5kYXRpb24uaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZQcm9wZXJ0eUxpc3QuaCIgMSAzCgoKCgoKI2RlZmluZSBfX0NPUkVGT1VOREFUSU9OX0NG
UFJPUEVSVFlMSVNUX18gMQoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlN0cmVhbS5oIiAxIDMKCgoKCgojZGVmaW5l
IF9fQ09SRUZPVU5EQVRJT05fQ0ZTVFJFQU1fXyAxCgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTb2NrZXQuaCIg
MSAzCgoKCgoKI2RlZmluZSBfX0NPUkVGT1VOREFUSU9OX0NGU09DS0VUX18gMQoKCgoKCgp0eXBl
ZGVmIGludCBDRlNvY2tldE5hdGl2ZUhhbmRsZTsKCgoKCgpleHRlcm4gIkMiIHsKCnR5cGVkZWYg
c3RydWN0IF9fQ0ZTb2NrZXQgKiBDRlNvY2tldFJlZjsKIyAxMDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0LmgiIDMK
ZW51bSB7CiAgICBrQ0ZTb2NrZXRTdWNjZXNzID0gMCwKICAgIGtDRlNvY2tldEVycm9yID0gLTEs
CiAgICBrQ0ZTb2NrZXRUaW1lb3V0ID0gLTIKfTsKdHlwZWRlZiBDRkluZGV4IENGU29ja2V0RXJy
b3I7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBTSW50MzIgcHJvdG9jb2xGYW1pbHk7CiAgICBTSW50
MzIgc29ja2V0VHlwZTsKICAgIFNJbnQzMiBwcm90b2NvbDsKICAgIENGRGF0YVJlZiBhZGRyZXNz
Owp9IENGU29ja2V0U2lnbmF0dXJlOwoKCmVudW0gewogICAga0NGU29ja2V0Tm9DYWxsQmFjayA9
IDAsCiAgICBrQ0ZTb2NrZXRSZWFkQ2FsbEJhY2sgPSAxLAogICAga0NGU29ja2V0QWNjZXB0Q2Fs
bEJhY2sgPSAyLAogICAga0NGU29ja2V0RGF0YUNhbGxCYWNrID0gMywKICAgIGtDRlNvY2tldENv
bm5lY3RDYWxsQmFjayA9IDQKCiAgICAsCiAgICBrQ0ZTb2NrZXRXcml0ZUNhbGxCYWNrID0gOAoK
fTsKdHlwZWRlZiBDRk9wdGlvbkZsYWdzIENGU29ja2V0Q2FsbEJhY2tUeXBlOwoKCgplbnVtIHsK
ICAgIGtDRlNvY2tldEF1dG9tYXRpY2FsbHlSZWVuYWJsZVJlYWRDYWxsQmFjayA9IDEsCiAgICBr
Q0ZTb2NrZXRBdXRvbWF0aWNhbGx5UmVlbmFibGVBY2NlcHRDYWxsQmFjayA9IDIsCiAgICBrQ0ZT
b2NrZXRBdXRvbWF0aWNhbGx5UmVlbmFibGVEYXRhQ2FsbEJhY2sgPSAzLAogICAga0NGU29ja2V0
QXV0b21hdGljYWxseVJlZW5hYmxlV3JpdGVDYWxsQmFjayA9IDgsCgogICAga0NGU29ja2V0TGVh
dmVFcnJvcnMgPSA2NCwKCiAgICBrQ0ZTb2NrZXRDbG9zZU9uSW52YWxpZGF0ZSA9IDEyOAp9OwoK
CnR5cGVkZWYgdm9pZCAoKkNGU29ja2V0Q2FsbEJhY2spKENGU29ja2V0UmVmIHMsIENGU29ja2V0
Q2FsbEJhY2tUeXBlIHR5cGUsIENGRGF0YVJlZiBhZGRyZXNzLCBjb25zdCB2b2lkICpkYXRhLCB2
b2lkICppbmZvKTsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDRkluZGV4IHZlcnNpb247CiAgICB2
b2lkICogaW5mbzsKICAgIGNvbnN0IHZvaWQgKigqcmV0YWluKShjb25zdCB2b2lkICppbmZvKTsK
ICAgIHZvaWQgKCpyZWxlYXNlKShjb25zdCB2b2lkICppbmZvKTsKICAgIENGU3RyaW5nUmVmICgq
Y29weURlc2NyaXB0aW9uKShjb25zdCB2b2lkICppbmZvKTsKfSBDRlNvY2tldENvbnRleHQ7Cgpl
eHRlcm4gQ0ZUeXBlSUQgQ0ZTb2NrZXRHZXRUeXBlSUQodm9pZCk7CgpleHRlcm4gQ0ZTb2NrZXRS
ZWYgQ0ZTb2NrZXRDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBTSW50MzIgcHJvdG9j
b2xGYW1pbHksIFNJbnQzMiBzb2NrZXRUeXBlLCBTSW50MzIgcHJvdG9jb2wsIENGT3B0aW9uRmxh
Z3MgY2FsbEJhY2tUeXBlcywgQ0ZTb2NrZXRDYWxsQmFjayBjYWxsb3V0LCBjb25zdCBDRlNvY2tl
dENvbnRleHQgKmNvbnRleHQpOwpleHRlcm4gQ0ZTb2NrZXRSZWYgQ0ZTb2NrZXRDcmVhdGVXaXRo
TmF0aXZlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZTb2NrZXROYXRpdmVIYW5kbGUgc29j
aywgQ0ZPcHRpb25GbGFncyBjYWxsQmFja1R5cGVzLCBDRlNvY2tldENhbGxCYWNrIGNhbGxvdXQs
IGNvbnN0IENGU29ja2V0Q29udGV4dCAqY29udGV4dCk7CmV4dGVybiBDRlNvY2tldFJlZiBDRlNv
Y2tldENyZWF0ZVdpdGhTb2NrZXRTaWduYXR1cmUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBj
b25zdCBDRlNvY2tldFNpZ25hdHVyZSAqc2lnbmF0dXJlLCBDRk9wdGlvbkZsYWdzIGNhbGxCYWNr
VHlwZXMsIENGU29ja2V0Q2FsbEJhY2sgY2FsbG91dCwgY29uc3QgQ0ZTb2NrZXRDb250ZXh0ICpj
b250ZXh0KTsKZXh0ZXJuIENGU29ja2V0UmVmIENGU29ja2V0Q3JlYXRlQ29ubmVjdGVkVG9Tb2Nr
ZXRTaWduYXR1cmUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBjb25zdCBDRlNvY2tldFNpZ25h
dHVyZSAqc2lnbmF0dXJlLCBDRk9wdGlvbkZsYWdzIGNhbGxCYWNrVHlwZXMsIENGU29ja2V0Q2Fs
bEJhY2sgY2FsbG91dCwgY29uc3QgQ0ZTb2NrZXRDb250ZXh0ICpjb250ZXh0LCBDRlRpbWVJbnRl
cnZhbCB0aW1lb3V0KTsKCgpleHRlcm4gQ0ZTb2NrZXRFcnJvciBDRlNvY2tldFNldEFkZHJlc3Mo
Q0ZTb2NrZXRSZWYgcywgQ0ZEYXRhUmVmIGFkZHJlc3MpOwpleHRlcm4gQ0ZTb2NrZXRFcnJvciBD
RlNvY2tldENvbm5lY3RUb0FkZHJlc3MoQ0ZTb2NrZXRSZWYgcywgQ0ZEYXRhUmVmIGFkZHJlc3Ms
IENGVGltZUludGVydmFsIHRpbWVvdXQpOwpleHRlcm4gdm9pZCBDRlNvY2tldEludmFsaWRhdGUo
Q0ZTb2NrZXRSZWYgcyk7CgpleHRlcm4gQm9vbGVhbiBDRlNvY2tldElzVmFsaWQoQ0ZTb2NrZXRS
ZWYgcyk7CmV4dGVybiBDRkRhdGFSZWYgQ0ZTb2NrZXRDb3B5QWRkcmVzcyhDRlNvY2tldFJlZiBz
KTsKZXh0ZXJuIENGRGF0YVJlZiBDRlNvY2tldENvcHlQZWVyQWRkcmVzcyhDRlNvY2tldFJlZiBz
KTsKZXh0ZXJuIHZvaWQgQ0ZTb2NrZXRHZXRDb250ZXh0KENGU29ja2V0UmVmIHMsIENGU29ja2V0
Q29udGV4dCAqY29udGV4dCk7CmV4dGVybiBDRlNvY2tldE5hdGl2ZUhhbmRsZSBDRlNvY2tldEdl
dE5hdGl2ZShDRlNvY2tldFJlZiBzKTsKCmV4dGVybiBDRlJ1bkxvb3BTb3VyY2VSZWYgQ0ZTb2Nr
ZXRDcmVhdGVSdW5Mb29wU291cmNlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZTb2NrZXRS
ZWYgcywgQ0ZJbmRleCBvcmRlcik7CgoKZXh0ZXJuIENGT3B0aW9uRmxhZ3MgQ0ZTb2NrZXRHZXRT
b2NrZXRGbGFncyhDRlNvY2tldFJlZiBzKTsKZXh0ZXJuIHZvaWQgQ0ZTb2NrZXRTZXRTb2NrZXRG
bGFncyhDRlNvY2tldFJlZiBzLCBDRk9wdGlvbkZsYWdzIGZsYWdzKTsKZXh0ZXJuIHZvaWQgQ0ZT
b2NrZXREaXNhYmxlQ2FsbEJhY2tzKENGU29ja2V0UmVmIHMsIENGT3B0aW9uRmxhZ3MgY2FsbEJh
Y2tUeXBlcyk7CmV4dGVybiB2b2lkIENGU29ja2V0RW5hYmxlQ2FsbEJhY2tzKENGU29ja2V0UmVm
IHMsIENGT3B0aW9uRmxhZ3MgY2FsbEJhY2tUeXBlcyk7CgoKCmV4dGVybiBDRlNvY2tldEVycm9y
IENGU29ja2V0U2VuZERhdGEoQ0ZTb2NrZXRSZWYgcywgQ0ZEYXRhUmVmIGFkZHJlc3MsIENGRGF0
YVJlZiBkYXRhLCBDRlRpbWVJbnRlcnZhbCB0aW1lb3V0KTsKIyAyMDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0Lmgi
IDMKZXh0ZXJuIENGU29ja2V0RXJyb3IgQ0ZTb2NrZXRSZWdpc3RlclZhbHVlKGNvbnN0IENGU29j
a2V0U2lnbmF0dXJlICpuYW1lU2VydmVyU2lnbmF0dXJlLCBDRlRpbWVJbnRlcnZhbCB0aW1lb3V0
LCBDRlN0cmluZ1JlZiBuYW1lLCBDRlByb3BlcnR5TGlzdFJlZiB2YWx1ZSk7CmV4dGVybiBDRlNv
Y2tldEVycm9yIENGU29ja2V0Q29weVJlZ2lzdGVyZWRWYWx1ZShjb25zdCBDRlNvY2tldFNpZ25h
dHVyZSAqbmFtZVNlcnZlclNpZ25hdHVyZSwgQ0ZUaW1lSW50ZXJ2YWwgdGltZW91dCwgQ0ZTdHJp
bmdSZWYgbmFtZSwgQ0ZQcm9wZXJ0eUxpc3RSZWYgKnZhbHVlLCBDRkRhdGFSZWYgKm5hbWVTZXJ2
ZXJBZGRyZXNzKTsKCmV4dGVybiBDRlNvY2tldEVycm9yIENGU29ja2V0UmVnaXN0ZXJTb2NrZXRT
aWduYXR1cmUoY29uc3QgQ0ZTb2NrZXRTaWduYXR1cmUgKm5hbWVTZXJ2ZXJTaWduYXR1cmUsIENG
VGltZUludGVydmFsIHRpbWVvdXQsIENGU3RyaW5nUmVmIG5hbWUsIGNvbnN0IENGU29ja2V0U2ln
bmF0dXJlICpzaWduYXR1cmUpOwpleHRlcm4gQ0ZTb2NrZXRFcnJvciBDRlNvY2tldENvcHlSZWdp
c3RlcmVkU29ja2V0U2lnbmF0dXJlKGNvbnN0IENGU29ja2V0U2lnbmF0dXJlICpuYW1lU2VydmVy
U2lnbmF0dXJlLCBDRlRpbWVJbnRlcnZhbCB0aW1lb3V0LCBDRlN0cmluZ1JlZiBuYW1lLCBDRlNv
Y2tldFNpZ25hdHVyZSAqc2lnbmF0dXJlLCBDRkRhdGFSZWYgKm5hbWVTZXJ2ZXJBZGRyZXNzKTsK
CmV4dGVybiBDRlNvY2tldEVycm9yIENGU29ja2V0VW5yZWdpc3Rlcihjb25zdCBDRlNvY2tldFNp
Z25hdHVyZSAqbmFtZVNlcnZlclNpZ25hdHVyZSwgQ0ZUaW1lSW50ZXJ2YWwgdGltZW91dCwgQ0ZT
dHJpbmdSZWYgbmFtZSk7CgpleHRlcm4gdm9pZCBDRlNvY2tldFNldERlZmF1bHROYW1lUmVnaXN0
cnlQb3J0TnVtYmVyKFVJbnQxNiBwb3J0KTsKZXh0ZXJuIFVJbnQxNiBDRlNvY2tldEdldERlZmF1
bHROYW1lUmVnaXN0cnlQb3J0TnVtYmVyKHZvaWQpOwoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0ZTb2NrZXRDb21tYW5kS2V5OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU29ja2V0
TmFtZUtleTsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlNvY2tldFZhbHVlS2V5OwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU29ja2V0UmVzdWx0S2V5OwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0NGU29ja2V0RXJyb3JLZXk7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZT
b2NrZXRSZWdpc3RlckNvbW1hbmQ7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTb2NrZXRS
ZXRyaWV2ZUNvbW1hbmQ7Cgp9CiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVG
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU3RyZWFtLmgiIDIgMwoKCmV4dGVybiAiQyIg
ewoKZW51bSB7CiAgICBrQ0ZTdHJlYW1TdGF0dXNOb3RPcGVuID0gMCwKICAgIGtDRlN0cmVhbVN0
YXR1c09wZW5pbmcsCiAgICBrQ0ZTdHJlYW1TdGF0dXNPcGVuLAogICAga0NGU3RyZWFtU3RhdHVz
UmVhZGluZywKICAgIGtDRlN0cmVhbVN0YXR1c1dyaXRpbmcsCiAgICBrQ0ZTdHJlYW1TdGF0dXNB
dEVuZCwKICAgIGtDRlN0cmVhbVN0YXR1c0Nsb3NlZCwKICAgIGtDRlN0cmVhbVN0YXR1c0Vycm9y
Cn07CnR5cGVkZWYgQ0ZJbmRleCBDRlN0cmVhbVN0YXR1czsKCmVudW0gewogICAga0NGU3RyZWFt
RXZlbnROb25lID0gMCwKICAgIGtDRlN0cmVhbUV2ZW50T3BlbkNvbXBsZXRlZCA9IDEsCiAgICBr
Q0ZTdHJlYW1FdmVudEhhc0J5dGVzQXZhaWxhYmxlID0gMiwKICAgIGtDRlN0cmVhbUV2ZW50Q2Fu
QWNjZXB0Qnl0ZXMgPSA0LAogICAga0NGU3RyZWFtRXZlbnRFcnJvck9jY3VycmVkID0gOCwKICAg
IGtDRlN0cmVhbUV2ZW50RW5kRW5jb3VudGVyZWQgPSAxNgp9Owp0eXBlZGVmIENGT3B0aW9uRmxh
Z3MgQ0ZTdHJlYW1FdmVudFR5cGU7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDRkluZGV4IHZlcnNp
b247CiAgICB2b2lkICppbmZvOwogICAgdm9pZCAqKCpyZXRhaW4pKHZvaWQgKmluZm8pOwogICAg
dm9pZCAoKnJlbGVhc2UpKHZvaWQgKmluZm8pOwogICAgQ0ZTdHJpbmdSZWYgKCpjb3B5RGVzY3Jp
cHRpb24pKHZvaWQgKmluZm8pOwp9IENGU3RyZWFtQ2xpZW50Q29udGV4dDsKCnR5cGVkZWYgc3Ry
dWN0IF9fQ0ZSZWFkU3RyZWFtICogQ0ZSZWFkU3RyZWFtUmVmOwp0eXBlZGVmIHN0cnVjdCBfX0NG
V3JpdGVTdHJlYW0gKiBDRldyaXRlU3RyZWFtUmVmOwoKdHlwZWRlZiB2b2lkICgqQ0ZSZWFkU3Ry
ZWFtQ2xpZW50Q2FsbEJhY2spKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3RyZWFtRXZlbnRU
eXBlIHR5cGUsIHZvaWQgKmNsaWVudENhbGxCYWNrSW5mbyk7CnR5cGVkZWYgdm9pZCAoKkNGV3Jp
dGVTdHJlYW1DbGllbnRDYWxsQmFjaykoQ0ZXcml0ZVN0cmVhbVJlZiBzdHJlYW0sIENGU3RyZWFt
RXZlbnRUeXBlIHR5cGUsIHZvaWQgKmNsaWVudENhbGxCYWNrSW5mbyk7CgpleHRlcm4KQ0ZUeXBl
SUQgQ0ZSZWFkU3RyZWFtR2V0VHlwZUlEKHZvaWQpOwpleHRlcm4KQ0ZUeXBlSUQgQ0ZXcml0ZVN0
cmVhbUdldFR5cGVJRCh2b2lkKTsKCgoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJl
YW1Qcm9wZXJ0eURhdGFXcml0dGVuOwoKCmV4dGVybgpDRlJlYWRTdHJlYW1SZWYgQ0ZSZWFkU3Ry
ZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBjb25zdCBVSW50
OCAqYnl0ZXMsIENGSW5kZXggbGVuZ3RoLCBDRkFsbG9jYXRvclJlZiBieXRlc0RlYWxsb2NhdG9y
KTsKCgpleHRlcm4KQ0ZXcml0ZVN0cmVhbVJlZiBDRldyaXRlU3RyZWFtQ3JlYXRlV2l0aEJ1ZmZl
cihDRkFsbG9jYXRvclJlZiBhbGxvYywgVUludDggKmJ1ZmZlciwgQ0ZJbmRleCBidWZmZXJDYXBh
Y2l0eSk7CgoKZXh0ZXJuCkNGV3JpdGVTdHJlYW1SZWYgQ0ZXcml0ZVN0cmVhbUNyZWF0ZVdpdGhB
bGxvY2F0ZWRCdWZmZXJzKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRkFsbG9jYXRvclJlZiBidWZm
ZXJBbGxvY2F0b3IpOwoKCmV4dGVybgpDRlJlYWRTdHJlYW1SZWYgQ0ZSZWFkU3RyZWFtQ3JlYXRl
V2l0aEZpbGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGVVJMUmVmIGZpbGVVUkwpOwpleHRlcm4K
Q0ZXcml0ZVN0cmVhbVJlZiBDRldyaXRlU3RyZWFtQ3JlYXRlV2l0aEZpbGUoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2MsIENGVVJMUmVmIGZpbGVVUkwpOwpleHRlcm4Kdm9pZCBDRlN0cmVhbUNyZWF0ZUJv
dW5kUGFpcihDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZSZWFkU3RyZWFtUmVmICpyZWFkU3RyZWFt
LCBDRldyaXRlU3RyZWFtUmVmICp3cml0ZVN0cmVhbSwgQ0ZJbmRleCB0cmFuc2ZlckJ1ZmZlclNp
emUpOwoKCgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlBcHBlbmRU
b0ZpbGU7CgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlGaWxl
Q3VycmVudE9mZnNldCA7CgoKCgoKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Q
cm9wZXJ0eVNvY2tldE5hdGl2ZUhhbmRsZTsKCgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NG
U3RyZWFtUHJvcGVydHlTb2NrZXRSZW1vdGVIb3N0TmFtZTsKCgpleHRlcm4KY29uc3QgQ0ZTdHJp
bmdSZWYga0NGU3RyZWFtUHJvcGVydHlTb2NrZXRSZW1vdGVQb3J0TnVtYmVyOwoKCmV4dGVybgp2
b2lkIENGU3RyZWFtQ3JlYXRlUGFpcldpdGhTb2NrZXQoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENG
U29ja2V0TmF0aXZlSGFuZGxlIHNvY2ssIENGUmVhZFN0cmVhbVJlZiAqcmVhZFN0cmVhbSwgQ0ZX
cml0ZVN0cmVhbVJlZiAqd3JpdGVTdHJlYW0pOwpleHRlcm4Kdm9pZCBDRlN0cmVhbUNyZWF0ZVBh
aXJXaXRoU29ja2V0VG9Ib3N0KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRlN0cmluZ1JlZiBob3N0
LCBVSW50MzIgcG9ydCwgQ0ZSZWFkU3RyZWFtUmVmICpyZWFkU3RyZWFtLCBDRldyaXRlU3RyZWFt
UmVmICp3cml0ZVN0cmVhbSk7CgpleHRlcm4Kdm9pZCBDRlN0cmVhbUNyZWF0ZVBhaXJXaXRoUGVl
clNvY2tldFNpZ25hdHVyZShDRkFsbG9jYXRvclJlZiBhbGxvYywgY29uc3QgQ0ZTb2NrZXRTaWdu
YXR1cmUgKnNpZ25hdHVyZSwgQ0ZSZWFkU3RyZWFtUmVmICpyZWFkU3RyZWFtLCBDRldyaXRlU3Ry
ZWFtUmVmICp3cml0ZVN0cmVhbSk7CgoKCgpleHRlcm4KQ0ZTdHJlYW1TdGF0dXMgQ0ZSZWFkU3Ry
ZWFtR2V0U3RhdHVzKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0pOwpleHRlcm4KQ0ZTdHJlYW1TdGF0
dXMgQ0ZXcml0ZVN0cmVhbUdldFN0YXR1cyhDRldyaXRlU3RyZWFtUmVmIHN0cmVhbSk7CgoKZXh0
ZXJuCkNGRXJyb3JSZWYgQ0ZSZWFkU3RyZWFtQ29weUVycm9yKENGUmVhZFN0cmVhbVJlZiBzdHJl
YW0pIDsKZXh0ZXJuCkNGRXJyb3JSZWYgQ0ZXcml0ZVN0cmVhbUNvcHlFcnJvcihDRldyaXRlU3Ry
ZWFtUmVmIHN0cmVhbSkgOwoKCgoKCgpleHRlcm4KQm9vbGVhbiBDRlJlYWRTdHJlYW1PcGVuKENG
UmVhZFN0cmVhbVJlZiBzdHJlYW0pOwpleHRlcm4KQm9vbGVhbiBDRldyaXRlU3RyZWFtT3BlbihD
RldyaXRlU3RyZWFtUmVmIHN0cmVhbSk7CgoKCgpleHRlcm4Kdm9pZCBDRlJlYWRTdHJlYW1DbG9z
ZShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtKTsKZXh0ZXJuCnZvaWQgQ0ZXcml0ZVN0cmVhbUNsb3Nl
KENGV3JpdGVTdHJlYW1SZWYgc3RyZWFtKTsKCgoKZXh0ZXJuCkJvb2xlYW4gQ0ZSZWFkU3RyZWFt
SGFzQnl0ZXNBdmFpbGFibGUoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSk7CiMgMTY0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlN0
cmVhbS5oIiAzCmV4dGVybgpDRkluZGV4IENGUmVhZFN0cmVhbVJlYWQoQ0ZSZWFkU3RyZWFtUmVm
IHN0cmVhbSwgVUludDggKmJ1ZmZlciwgQ0ZJbmRleCBidWZmZXJMZW5ndGgpOwojIDE3NiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
Q0ZTdHJlYW0uaCIgMwpleHRlcm4KY29uc3QgVUludDggKkNGUmVhZFN0cmVhbUdldEJ1ZmZlcihD
RlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRkluZGV4IG1heEJ5dGVzVG9SZWFkLCBDRkluZGV4ICpu
dW1CeXRlc1JlYWQpOwoKCgpleHRlcm4KQm9vbGVhbiBDRldyaXRlU3RyZWFtQ2FuQWNjZXB0Qnl0
ZXMoQ0ZXcml0ZVN0cmVhbVJlZiBzdHJlYW0pOwoKCgoKCgpleHRlcm4KQ0ZJbmRleCBDRldyaXRl
U3RyZWFtV3JpdGUoQ0ZXcml0ZVN0cmVhbVJlZiBzdHJlYW0sIGNvbnN0IFVJbnQ4ICpidWZmZXIs
IENGSW5kZXggYnVmZmVyTGVuZ3RoKTsKIyAyMDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU3RyZWFtLmgiIDMKZXh0ZXJuCkNG
VHlwZVJlZiBDRlJlYWRTdHJlYW1Db3B5UHJvcGVydHkoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwg
Q0ZTdHJpbmdSZWYgcHJvcGVydHlOYW1lKTsKZXh0ZXJuCkNGVHlwZVJlZiBDRldyaXRlU3RyZWFt
Q29weVByb3BlcnR5KENGV3JpdGVTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmluZ1JlZiBwcm9wZXJ0
eU5hbWUpOwoKCgoKZXh0ZXJuCkJvb2xlYW4gQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkoQ0ZSZWFk
U3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBDRlR5cGVSZWYgcHJv
cGVydHlWYWx1ZSk7CmV4dGVybgpCb29sZWFuIENGV3JpdGVTdHJlYW1TZXRQcm9wZXJ0eShDRldy
aXRlU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBDRlR5cGVSZWYg
cHJvcGVydHlWYWx1ZSk7CiMgMjMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91
bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlN0cmVhbS5oIiAzCmV4dGVybgpCb29sZWFuIENG
UmVhZFN0cmVhbVNldENsaWVudChDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRk9wdGlvbkZsYWdz
IHN0cmVhbUV2ZW50cywgQ0ZSZWFkU3RyZWFtQ2xpZW50Q2FsbEJhY2sgY2xpZW50Q0IsIENGU3Ry
ZWFtQ2xpZW50Q29udGV4dCAqY2xpZW50Q29udGV4dCk7CmV4dGVybgpCb29sZWFuIENGV3JpdGVT
dHJlYW1TZXRDbGllbnQoQ0ZXcml0ZVN0cmVhbVJlZiBzdHJlYW0sIENGT3B0aW9uRmxhZ3Mgc3Ry
ZWFtRXZlbnRzLCBDRldyaXRlU3RyZWFtQ2xpZW50Q2FsbEJhY2sgY2xpZW50Q0IsIENGU3RyZWFt
Q2xpZW50Q29udGV4dCAqY2xpZW50Q29udGV4dCk7CgpleHRlcm4Kdm9pZCBDRlJlYWRTdHJlYW1T
Y2hlZHVsZVdpdGhSdW5Mb29wKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGUnVuTG9vcFJlZiBy
dW5Mb29wLCBDRlN0cmluZ1JlZiBydW5Mb29wTW9kZSk7CmV4dGVybgp2b2lkIENGV3JpdGVTdHJl
YW1TY2hlZHVsZVdpdGhSdW5Mb29wKENGV3JpdGVTdHJlYW1SZWYgc3RyZWFtLCBDRlJ1bkxvb3BS
ZWYgcnVuTG9vcCwgQ0ZTdHJpbmdSZWYgcnVuTG9vcE1vZGUpOwoKZXh0ZXJuCnZvaWQgQ0ZSZWFk
U3RyZWFtVW5zY2hlZHVsZUZyb21SdW5Mb29wKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGUnVu
TG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydW5Mb29wTW9kZSk7CmV4dGVybgp2b2lkIENG
V3JpdGVTdHJlYW1VbnNjaGVkdWxlRnJvbVJ1bkxvb3AoQ0ZXcml0ZVN0cmVhbVJlZiBzdHJlYW0s
IENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydW5Mb29wTW9kZSk7CgoKCmVudW0g
ewogICAga0NGU3RyZWFtRXJyb3JEb21haW5DdXN0b20gPSAtMSwKICAgIGtDRlN0cmVhbUVycm9y
RG9tYWluUE9TSVggPSAxLAogICAga0NGU3RyZWFtRXJyb3JEb21haW5NYWNPU1N0YXR1cwp9Owp0
eXBlZGVmIENGSW5kZXggQ0ZTdHJlYW1FcnJvckRvbWFpbjsKCnR5cGVkZWYgc3RydWN0IHsKICAg
IENGSW5kZXggZG9tYWluOwogICAgU0ludDMyIGVycm9yOwp9IENGU3RyZWFtRXJyb3I7CmV4dGVy
bgpDRlN0cmVhbUVycm9yIENGUmVhZFN0cmVhbUdldEVycm9yKENGUmVhZFN0cmVhbVJlZiBzdHJl
YW0pOwpleHRlcm4KQ0ZTdHJlYW1FcnJvciBDRldyaXRlU3RyZWFtR2V0RXJyb3IoQ0ZXcml0ZVN0
cmVhbVJlZiBzdHJlYW0pOwoKCn0KIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZQcm9wZXJ0eUxpc3QuaCIgMiAzCgpleHRl
cm4gIkMiIHsKCmVudW0gewogICAga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlID0gMCwKICAgIGtD
RlByb3BlcnR5TGlzdE11dGFibGVDb250YWluZXJzLAogICAga0NGUHJvcGVydHlMaXN0TXV0YWJs
ZUNvbnRhaW5lcnNBbmRMZWF2ZXMKfTsKdHlwZWRlZiBDRk9wdGlvbkZsYWdzIENGUHJvcGVydHlM
aXN0TXV0YWJpbGl0eU9wdGlvbnM7CiMgMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGUHJvcGVydHlMaXN0LmgiIDMKZXh0ZXJu
CkNGUHJvcGVydHlMaXN0UmVmIENGUHJvcGVydHlMaXN0Q3JlYXRlRnJvbVhNTERhdGEoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLCBDRkRhdGFSZWYgeG1sRGF0YSwgQ0ZPcHRpb25GbGFncyBtdXRh
YmlsaXR5T3B0aW9uLCBDRlN0cmluZ1JlZiAqZXJyb3JTdHJpbmcpOwojIDQ3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlByb3Bl
cnR5TGlzdC5oIiAzCmV4dGVybgpDRkRhdGFSZWYgQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVYTUxEYXRh
KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZQcm9wZXJ0eUxpc3RSZWYgcHJvcGVydHlMaXN0
KTsKCgoKCgoKCmV4dGVybgpDRlByb3BlcnR5TGlzdFJlZiBDRlByb3BlcnR5TGlzdENyZWF0ZURl
ZXBDb3B5KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZQcm9wZXJ0eUxpc3RSZWYgcHJvcGVy
dHlMaXN0LCBDRk9wdGlvbkZsYWdzIG11dGFiaWxpdHlPcHRpb24pOwoKCgplbnVtIHsKICAgIGtD
RlByb3BlcnR5TGlzdE9wZW5TdGVwRm9ybWF0ID0gMSwKICAgIGtDRlByb3BlcnR5TGlzdFhNTEZv
cm1hdF92MV8wID0gMTAwLAogICAga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgPSAy
MDAKfTsKdHlwZWRlZiBDRkluZGV4IENGUHJvcGVydHlMaXN0Rm9ybWF0OwoKCgoKCgpleHRlcm4K
Qm9vbGVhbiBDRlByb3BlcnR5TGlzdElzVmFsaWQoQ0ZQcm9wZXJ0eUxpc3RSZWYgcGxpc3QsIENG
UHJvcGVydHlMaXN0Rm9ybWF0IGZvcm1hdCk7CiMgODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGUHJvcGVydHlMaXN0LmgiIDMK
ZXh0ZXJuCkNGSW5kZXggQ0ZQcm9wZXJ0eUxpc3RXcml0ZVRvU3RyZWFtKENGUHJvcGVydHlMaXN0
UmVmIHByb3BlcnR5TGlzdCwgQ0ZXcml0ZVN0cmVhbVJlZiBzdHJlYW0sIENGUHJvcGVydHlMaXN0
Rm9ybWF0IGZvcm1hdCwgQ0ZTdHJpbmdSZWYgKmVycm9yU3RyaW5nKTsKIyAxMDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGUHJv
cGVydHlMaXN0LmgiIDMKZXh0ZXJuCkNGUHJvcGVydHlMaXN0UmVmIENGUHJvcGVydHlMaXN0Q3Jl
YXRlRnJvbVN0cmVhbShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGUmVhZFN0cmVhbVJlZiBz
dHJlYW0sIENGSW5kZXggc3RyZWFtTGVuZ3RoLCBDRk9wdGlvbkZsYWdzIG11dGFiaWxpdHlPcHRp
b24sIENGUHJvcGVydHlMaXN0Rm9ybWF0ICpmb3JtYXQsIENGU3RyaW5nUmVmICplcnJvclN0cmlu
Zyk7CgoKCgplbnVtIHsKICAgIGtDRlByb3BlcnR5TGlzdFJlYWRDb3JydXB0RXJyb3IgPSAzODQw
LAogICAga0NGUHJvcGVydHlMaXN0UmVhZFVua25vd25WZXJzaW9uRXJyb3IgPSAzODQxLAogICAg
a0NGUHJvcGVydHlMaXN0UmVhZFN0cmVhbUVycm9yID0gMzg0MiwKICAgIGtDRlByb3BlcnR5TGlz
dFdyaXRlU3RyZWFtRXJyb3IgPSAzODUxLAp9OwoKCgoKZXh0ZXJuCkNGUHJvcGVydHlMaXN0UmVm
IENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBD
RkRhdGFSZWYgZGF0YSwgQ0ZPcHRpb25GbGFncyBvcHRpb25zLCBDRlByb3BlcnR5TGlzdEZvcm1h
dCAqZm9ybWF0LCBDRkVycm9yUmVmICplcnJvcikgOwoKCgpleHRlcm4KQ0ZQcm9wZXJ0eUxpc3RS
ZWYgQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoU3RyZWFtKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
ciwgQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZJbmRleCBzdHJlYW1MZW5ndGgsIENGT3B0aW9u
RmxhZ3Mgb3B0aW9ucywgQ0ZQcm9wZXJ0eUxpc3RGb3JtYXQgKmZvcm1hdCwgQ0ZFcnJvclJlZiAq
ZXJyb3IpIDsKCgoKZXh0ZXJuCkNGSW5kZXggQ0ZQcm9wZXJ0eUxpc3RXcml0ZShDRlByb3BlcnR5
TGlzdFJlZiBwcm9wZXJ0eUxpc3QsIENGV3JpdGVTdHJlYW1SZWYgc3RyZWFtLCBDRlByb3BlcnR5
TGlzdEZvcm1hdCBmb3JtYXQsIENGT3B0aW9uRmxhZ3Mgb3B0aW9ucywgQ0ZFcnJvclJlZiAqZXJy
b3IpIDsKCgoKZXh0ZXJuCkNGRGF0YVJlZiBDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLCBDRlByb3BlcnR5TGlzdFJlZiBwcm9wZXJ0eUxpc3QsIENGUHJv
cGVydHlMaXN0Rm9ybWF0IGZvcm1hdCwgQ0ZPcHRpb25GbGFncyBvcHRpb25zLCBDRkVycm9yUmVm
ICplcnJvcikgOwoKCn0KIyA1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUZvdW5kYXRpb24uaCIgMiAzCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NG
U2V0LmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9DRlNldC5oIiAzCiNkZWZpbmUgX19DT1JFRk9VTkRBVElPTl9D
RlNFVF9fIDEKCgoKZXh0ZXJuICJDIiB7CiMgMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU2V0LmgiIDMKdHlwZWRlZiBjb25z
dCB2b2lkICogKCpDRlNldFJldGFpbkNhbGxCYWNrKShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IGNvbnN0IHZvaWQgKnZhbHVlKTsKCgoKCgoKCnR5cGVkZWYgdm9pZCAoKkNGU2V0UmVsZWFzZUNh
bGxCYWNrKShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IHZvaWQgKnZhbHVlKTsKCgoK
CgoKCnR5cGVkZWYgQ0ZTdHJpbmdSZWYgKCpDRlNldENvcHlEZXNjcmlwdGlvbkNhbGxCYWNrKShj
b25zdCB2b2lkICp2YWx1ZSk7CiMgNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVG
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU2V0LmgiIDMKdHlwZWRlZiBCb29sZWFuICgq
Q0ZTZXRFcXVhbENhbGxCYWNrKShjb25zdCB2b2lkICp2YWx1ZTEsIGNvbnN0IHZvaWQgKnZhbHVl
Mik7CgoKCgoKCgp0eXBlZGVmIENGSGFzaENvZGUgKCpDRlNldEhhc2hDYWxsQmFjaykoY29uc3Qg
dm9pZCAqdmFsdWUpOwojIDg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlNldC5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgIENG
SW5kZXggdmVyc2lvbjsKICAgIENGU2V0UmV0YWluQ2FsbEJhY2sgcmV0YWluOwogICAgQ0ZTZXRS
ZWxlYXNlQ2FsbEJhY2sgcmVsZWFzZTsKICAgIENGU2V0Q29weURlc2NyaXB0aW9uQ2FsbEJhY2sg
Y29weURlc2NyaXB0aW9uOwogICAgQ0ZTZXRFcXVhbENhbGxCYWNrIGVxdWFsOwogICAgQ0ZTZXRI
YXNoQ2FsbEJhY2sgaGFzaDsKfSBDRlNldENhbGxCYWNrczsKCgoKCgoKZXh0ZXJuCmNvbnN0IENG
U2V0Q2FsbEJhY2tzIGtDRlR5cGVTZXRDYWxsQmFja3M7CgoKCgoKCgpleHRlcm4KY29uc3QgQ0ZT
ZXRDYWxsQmFja3Mga0NGQ29weVN0cmluZ1NldENhbGxCYWNrczsKIyAxMTggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU2V0Lmgi
IDMKdHlwZWRlZiB2b2lkICgqQ0ZTZXRBcHBsaWVyRnVuY3Rpb24pKGNvbnN0IHZvaWQgKnZhbHVl
LCB2b2lkICpjb250ZXh0KTsKCgoKCgp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU2V0ICogQ0ZT
ZXRSZWY7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19DRlNldCAqIENGTXV0YWJsZVNldFJlZjsKCgoK
CgpleHRlcm4KQ0ZUeXBlSUQgQ0ZTZXRHZXRUeXBlSUQodm9pZCk7CiMgMTg1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlNldC5o
IiAzCmV4dGVybgpDRlNldFJlZiBDRlNldENyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IGNvbnN0IHZvaWQgKip2YWx1ZXMsIENGSW5kZXggbnVtVmFsdWVzLCBjb25zdCBDRlNldENhbGxC
YWNrcyAqY2FsbEJhY2tzKTsKIyAyMDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVG
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU2V0LmgiIDMKZXh0ZXJuCkNGU2V0UmVmIENG
U2V0Q3JlYXRlQ29weShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU2V0UmVmIHRoZVNldCk7
CiMgMjUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9DRlNldC5oIiAzCmV4dGVybgpDRk11dGFibGVTZXRSZWYgQ0ZTZXRDcmVhdGVN
dXRhYmxlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZJbmRleCBjYXBhY2l0eSwgY29uc3Qg
Q0ZTZXRDYWxsQmFja3MgKmNhbGxCYWNrcyk7CiMgMjgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlNldC5oIiAzCmV4dGVybgpD
Rk11dGFibGVTZXRSZWYgQ0ZTZXRDcmVhdGVNdXRhYmxlQ29weShDRkFsbG9jYXRvclJlZiBhbGxv
Y2F0b3IsIENGSW5kZXggY2FwYWNpdHksIENGU2V0UmVmIHRoZVNldCk7CiMgMjkyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlNl
dC5oIiAzCmV4dGVybgpDRkluZGV4IENGU2V0R2V0Q291bnQoQ0ZTZXRSZWYgdGhlU2V0KTsKIyAz
MTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL0NGU2V0LmgiIDMKZXh0ZXJuCkNGSW5kZXggQ0ZTZXRHZXRDb3VudE9mVmFsdWUoQ0ZT
ZXRSZWYgdGhlU2V0LCBjb25zdCB2b2lkICp2YWx1ZSk7CiMgMzI2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlNldC5oIiAzCmV4
dGVybgpCb29sZWFuIENGU2V0Q29udGFpbnNWYWx1ZShDRlNldFJlZiB0aGVTZXQsIGNvbnN0IHZv
aWQgKnZhbHVlKTsKIyAzNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU2V0LmgiIDMKZXh0ZXJuCmNvbnN0IHZvaWQgKkNGU2V0
R2V0VmFsdWUoQ0ZTZXRSZWYgdGhlU2V0LCBjb25zdCB2b2lkICp2YWx1ZSk7CiMgMzY1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9D
RlNldC5oIiAzCmV4dGVybgpCb29sZWFuIENGU2V0R2V0VmFsdWVJZlByZXNlbnQoQ0ZTZXRSZWYg
dGhlU2V0LCBjb25zdCB2b2lkICpjYW5kaWRhdGUsIGNvbnN0IHZvaWQgKip2YWx1ZSk7CiMgMzc5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9DRlNldC5oIiAzCmV4dGVybgp2b2lkIENGU2V0R2V0VmFsdWVzKENGU2V0UmVmIHRoZVNl
dCwgY29uc3Qgdm9pZCAqKnZhbHVlcyk7CiMgMzk5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlNldC5oIiAzCmV4dGVybgp2b2lk
IENGU2V0QXBwbHlGdW5jdGlvbihDRlNldFJlZiB0aGVTZXQsIENGU2V0QXBwbGllckZ1bmN0aW9u
IGFwcGxpZXIsIHZvaWQgKmNvbnRleHQpOwojIDQxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTZXQuaCIgMwpleHRlcm4Kdm9p
ZCBDRlNldEFkZFZhbHVlKENGTXV0YWJsZVNldFJlZiB0aGVTZXQsIGNvbnN0IHZvaWQgKnZhbHVl
KTsKIyA0MzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL0NGU2V0LmgiIDMKZXh0ZXJuCnZvaWQgQ0ZTZXRSZXBsYWNlVmFsdWUoQ0ZN
dXRhYmxlU2V0UmVmIHRoZVNldCwgY29uc3Qgdm9pZCAqdmFsdWUpOwojIDQ1MyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTZXQu
aCIgMwpleHRlcm4Kdm9pZCBDRlNldFNldFZhbHVlKENGTXV0YWJsZVNldFJlZiB0aGVTZXQsIGNv
bnN0IHZvaWQgKnZhbHVlKTsKIyA0NjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVG
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU2V0LmgiIDMKZXh0ZXJuCnZvaWQgQ0ZTZXRS
ZW1vdmVWYWx1ZShDRk11dGFibGVTZXRSZWYgdGhlU2V0LCBjb25zdCB2b2lkICp2YWx1ZSk7CiMg
NDc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9DRlNldC5oIiAzCmV4dGVybgp2b2lkIENGU2V0UmVtb3ZlQWxsVmFsdWVzKENGTXV0
YWJsZVNldFJlZiB0aGVTZXQpOwoKfQojIDYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRm91bmRhdGlvbi5oIiAyIDMKCgoK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9DRlN0cmluZ0VuY29kaW5nRXh0LmgiIDEgMwoKCgoKCiNkZWZpbmUgX19DT1JFRk9V
TkRBVElPTl9DRlNUUklOR0VOQ09ESU5HRVhUX18gMQoKCgpleHRlcm4gIkMiIHsKCmVudW0gewoK
ICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjSmFwYW5lc2UgPSAxLAogICAga0NGU3RyaW5nRW5jb2Rp
bmdNYWNDaGluZXNlVHJhZCA9IDIsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0tvcmVhbiA9IDMs
CiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0FyYWJpYyA9IDQsCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z01hY0hlYnJldyA9IDUsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0dyZWVrID0gNiwKICAgIGtD
RlN0cmluZ0VuY29kaW5nTWFjQ3lyaWxsaWMgPSA3LAogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNE
ZXZhbmFnYXJpID0gOSwKICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjR3VybXVraGkgPSAxMCwKICAg
IGtDRlN0cmluZ0VuY29kaW5nTWFjR3VqYXJhdGkgPSAxMSwKICAgIGtDRlN0cmluZ0VuY29kaW5n
TWFjT3JpeWEgPSAxMiwKICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjQmVuZ2FsaSA9IDEzLAogICAg
a0NGU3RyaW5nRW5jb2RpbmdNYWNUYW1pbCA9IDE0LAogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNU
ZWx1Z3UgPSAxNSwKICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjS2FubmFkYSA9IDE2LAogICAga0NG
U3RyaW5nRW5jb2RpbmdNYWNNYWxheWFsYW0gPSAxNywKICAgIGtDRlN0cmluZ0VuY29kaW5nTWFj
U2luaGFsZXNlID0gMTgsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0J1cm1lc2UgPSAxOSwKICAg
IGtDRlN0cmluZ0VuY29kaW5nTWFjS2htZXIgPSAyMCwKICAgIGtDRlN0cmluZ0VuY29kaW5nTWFj
VGhhaSA9IDIxLAogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNMYW90aWFuID0gMjIsCiAgICBrQ0ZT
dHJpbmdFbmNvZGluZ01hY0dlb3JnaWFuID0gMjMsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0Fy
bWVuaWFuID0gMjQsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0NoaW5lc2VTaW1wID0gMjUsCiAg
ICBrQ0ZTdHJpbmdFbmNvZGluZ01hY1RpYmV0YW4gPSAyNiwKICAgIGtDRlN0cmluZ0VuY29kaW5n
TWFjTW9uZ29saWFuID0gMjcsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0V0aGlvcGljID0gMjgs
CiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0NlbnRyYWxFdXJSb21hbiA9IDI5LAogICAga0NGU3Ry
aW5nRW5jb2RpbmdNYWNWaWV0bmFtZXNlID0gMzAsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0V4
dEFyYWJpYyA9IDMxLAoKICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjU3ltYm9sID0gMzMsCiAgICBr
Q0ZTdHJpbmdFbmNvZGluZ01hY0RpbmdiYXRzID0gMzQsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01h
Y1R1cmtpc2ggPSAzNSwKICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjQ3JvYXRpYW4gPSAzNiwKICAg
IGtDRlN0cmluZ0VuY29kaW5nTWFjSWNlbGFuZGljID0gMzcsCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z01hY1JvbWFuaWFuID0gMzgsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0NlbHRpYyA9IDM5LAog
ICAga0NGU3RyaW5nRW5jb2RpbmdNYWNHYWVsaWMgPSA0MCwKCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z01hY0ZhcnNpID0gMHg4QywKCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY1VrcmFpbmlhbiA9IDB4
OTgsCgogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNJbnVpdCA9IDB4RUMsCiAgICBrQ0ZTdHJpbmdF
bmNvZGluZ01hY1ZUMTAwID0gMHhGQywKCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0hGUyA9IDB4
RkYsCgoKCgoKCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMiA9IDB4MDIwMiwKICAgIGtD
RlN0cmluZ0VuY29kaW5nSVNPTGF0aW4zID0gMHgwMjAzLAogICAga0NGU3RyaW5nRW5jb2RpbmdJ
U09MYXRpbjQgPSAweDAyMDQsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluQ3lyaWxsaWMg
PSAweDAyMDUsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluQXJhYmljID0gMHgwMjA2LAog
ICAga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbkdyZWVrID0gMHgwMjA3LAogICAga0NGU3RyaW5n
RW5jb2RpbmdJU09MYXRpbkhlYnJldyA9IDB4MDIwOCwKICAgIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW41ID0gMHgwMjA5LAogICAga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjYgPSAweDAyMEEs
CiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluVGhhaSA9IDB4MDIwQiwKICAgIGtDRlN0cmlu
Z0VuY29kaW5nSVNPTGF0aW43ID0gMHgwMjBELAogICAga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRp
bjggPSAweDAyMEUsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluOSA9IDB4MDIwRiwKCiAg
ICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMTAgPSAweDAyMTAsCgoKCiAgICBrQ0ZTdHJpbmdF
bmNvZGluZ0RPU0xhdGluVVMgPSAweDA0MDAsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU0dyZWVr
ID0gMHgwNDA1LAogICAga0NGU3RyaW5nRW5jb2RpbmdET1NCYWx0aWNSaW0gPSAweDA0MDYsCiAg
ICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU0xhdGluMSA9IDB4MDQxMCwKICAgIGtDRlN0cmluZ0VuY29k
aW5nRE9TR3JlZWsxID0gMHgwNDExLAogICAga0NGU3RyaW5nRW5jb2RpbmdET1NMYXRpbjIgPSAw
eDA0MTIsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU0N5cmlsbGljID0gMHgwNDEzLAogICAga0NG
U3RyaW5nRW5jb2RpbmdET1NUdXJraXNoID0gMHgwNDE0LAogICAga0NGU3RyaW5nRW5jb2RpbmdE
T1NQb3J0dWd1ZXNlID0gMHgwNDE1LAogICAga0NGU3RyaW5nRW5jb2RpbmdET1NJY2VsYW5kaWMg
PSAweDA0MTYsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU0hlYnJldyA9IDB4MDQxNywKICAgIGtD
RlN0cmluZ0VuY29kaW5nRE9TQ2FuYWRpYW5GcmVuY2ggPSAweDA0MTgsCiAgICBrQ0ZTdHJpbmdF
bmNvZGluZ0RPU0FyYWJpYyA9IDB4MDQxOSwKICAgIGtDRlN0cmluZ0VuY29kaW5nRE9TTm9yZGlj
ID0gMHgwNDFBLAogICAga0NGU3RyaW5nRW5jb2RpbmdET1NSdXNzaWFuID0gMHgwNDFCLAogICAg
a0NGU3RyaW5nRW5jb2RpbmdET1NHcmVlazIgPSAweDA0MUMsCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z0RPU1RoYWkgPSAweDA0MUQsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU0phcGFuZXNlID0gMHgw
NDIwLAogICAga0NGU3RyaW5nRW5jb2RpbmdET1NDaGluZXNlU2ltcGxpZiA9IDB4MDQyMSwKICAg
IGtDRlN0cmluZ0VuY29kaW5nRE9TS29yZWFuID0gMHgwNDIyLAogICAga0NGU3RyaW5nRW5jb2Rp
bmdET1NDaGluZXNlVHJhZCA9IDB4MDQyMywKCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1dpbmRvd3NM
YXRpbjIgPSAweDA1MDEsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1dpbmRvd3NDeXJpbGxpYyA9IDB4
MDUwMiwKICAgIGtDRlN0cmluZ0VuY29kaW5nV2luZG93c0dyZWVrID0gMHgwNTAzLAogICAga0NG
U3RyaW5nRW5jb2RpbmdXaW5kb3dzTGF0aW41ID0gMHgwNTA0LAogICAga0NGU3RyaW5nRW5jb2Rp
bmdXaW5kb3dzSGVicmV3ID0gMHgwNTA1LAogICAga0NGU3RyaW5nRW5jb2RpbmdXaW5kb3dzQXJh
YmljID0gMHgwNTA2LAogICAga0NGU3RyaW5nRW5jb2RpbmdXaW5kb3dzQmFsdGljUmltID0gMHgw
NTA3LAogICAga0NGU3RyaW5nRW5jb2RpbmdXaW5kb3dzVmlldG5hbWVzZSA9IDB4MDUwOCwKICAg
IGtDRlN0cmluZ0VuY29kaW5nV2luZG93c0tvcmVhbkpvaGFiID0gMHgwNTEwLAoKCgoKICAgIGtD
RlN0cmluZ0VuY29kaW5nQU5TRUwgPSAweDA2MDEsCgogICAga0NGU3RyaW5nRW5jb2RpbmdKSVNf
WDAyMDFfNzYgPSAweDA2MjAsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0pJU19YMDIwOF84MyA9IDB4
MDYyMSwKICAgIGtDRlN0cmluZ0VuY29kaW5nSklTX1gwMjA4XzkwID0gMHgwNjIyLAogICAga0NG
U3RyaW5nRW5jb2RpbmdKSVNfWDAyMTJfOTAgPSAweDA2MjMsCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z0pJU19DNjIyNl83OCA9IDB4MDYyNCwKCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1NoaWZ0SklTX1gw
MjEzID0gMHgwNjI4LAoKCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1NoaWZ0SklTX1gwMjEzX01lbkt1
VGVuID0gMHgwNjI5LAoKICAgIGtDRlN0cmluZ0VuY29kaW5nR0JfMjMxMl84MCA9IDB4MDYzMCwK
ICAgIGtDRlN0cmluZ0VuY29kaW5nR0JLXzk1ID0gMHgwNjMxLAogICAga0NGU3RyaW5nRW5jb2Rp
bmdHQl8xODAzMF8yMDAwID0gMHgwNjMyLAogICAga0NGU3RyaW5nRW5jb2RpbmdLU0NfNTYwMV84
NyA9IDB4MDY0MCwKICAgIGtDRlN0cmluZ0VuY29kaW5nS1NDXzU2MDFfOTJfSm9oYWIgPSAweDA2
NDEsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0NOU18xMTY0M185Ml9QMSA9IDB4MDY1MSwKICAgIGtD
RlN0cmluZ0VuY29kaW5nQ05TXzExNjQzXzkyX1AyID0gMHgwNjUyLAogICAga0NGU3RyaW5nRW5j
b2RpbmdDTlNfMTE2NDNfOTJfUDMgPSAweDA2NTMsCgoKICAgIGtDRlN0cmluZ0VuY29kaW5nSVNP
XzIwMjJfSlAgPSAweDA4MjAsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT18yMDIyX0pQXzIgPSAw
eDA4MjEsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT18yMDIyX0pQXzEgPSAweDA4MjIsCiAgICBr
Q0ZTdHJpbmdFbmNvZGluZ0lTT18yMDIyX0pQXzMgPSAweDA4MjMsCiAgICBrQ0ZTdHJpbmdFbmNv
ZGluZ0lTT18yMDIyX0NOID0gMHgwODMwLAogICAga0NGU3RyaW5nRW5jb2RpbmdJU09fMjAyMl9D
Tl9FWFQgPSAweDA4MzEsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT18yMDIyX0tSID0gMHgwODQw
LAoKCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0VVQ19KUCA9IDB4MDkyMCwKICAgIGtDRlN0cmluZ0Vu
Y29kaW5nRVVDX0NOID0gMHgwOTMwLAogICAga0NGU3RyaW5nRW5jb2RpbmdFVUNfVFcgPSAweDA5
MzEsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0VVQ19LUiA9IDB4MDk0MCwKCgogICAga0NGU3RyaW5n
RW5jb2RpbmdTaGlmdEpJUyA9IDB4MEEwMSwKICAgIGtDRlN0cmluZ0VuY29kaW5nS09JOF9SID0g
MHgwQTAyLAogICAga0NGU3RyaW5nRW5jb2RpbmdCaWc1ID0gMHgwQTAzLAogICAga0NGU3RyaW5n
RW5jb2RpbmdNYWNSb21hbkxhdGluMSA9IDB4MEEwNCwKICAgIGtDRlN0cmluZ0VuY29kaW5nSFpf
R0JfMjMxMiA9IDB4MEEwNSwKICAgIGtDRlN0cmluZ0VuY29kaW5nQmlnNV9IS1NDU18xOTk5ID0g
MHgwQTA2LAoKICAgIGtDRlN0cmluZ0VuY29kaW5nVklTQ0lJID0gMHgwQTA3LAogICAga0NGU3Ry
aW5nRW5jb2RpbmdLT0k4X1UgPSAweDBBMDgsCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0JpZzVfRSA9
IDB4MEEwOSwKCgoKCgogICAga0NGU3RyaW5nRW5jb2RpbmdOZXh0U3RlcEphcGFuZXNlID0gMHgw
QjAyLAoKCgogICAga0NGU3RyaW5nRW5jb2RpbmdFQkNESUNfVVMgPSAweDBDMDEsCiAgICBrQ0ZT
dHJpbmdFbmNvZGluZ0VCQ0RJQ19DUDAzNyA9IDB4MEMwMiwKCgogICAga0NGU3RyaW5nRW5jb2Rp
bmdVVEY3ID0gMHgwNDAwMDEwMCwKICAgIGtDRlN0cmluZ0VuY29kaW5nVVRGN19JTUFQID0gMHgw
QTEwLAoKCgogICAga0NGU3RyaW5nRW5jb2RpbmdTaGlmdEpJU19YMDIxM18wMCA9IDB4MDYyOAp9
Owp0eXBlZGVmIENGSW5kZXggQ0ZTdHJpbmdFbmNvZGluZ3M7Cgp9CiMgNjUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NvcmVGb3Vu
ZGF0aW9uLmgiIDIgMwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlRyZWUuaCIgMSAzCiMgMTEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVHJlZS5oIiAz
CiNkZWZpbmUgX19DT1JFRk9VTkRBVElPTl9DRlRSRUVfXyAxCgoKCmV4dGVybiAiQyIgewojIDI3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9DRlRyZWUuaCIgMwp0eXBlZGVmIGNvbnN0IHZvaWQgKiAoKkNGVHJlZVJldGFpbkNhbGxC
YWNrKShjb25zdCB2b2lkICppbmZvKTsKCgoKCgoKCnR5cGVkZWYgdm9pZCAoKkNGVHJlZVJlbGVh
c2VDYWxsQmFjaykoY29uc3Qgdm9pZCAqaW5mbyk7CiMgNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVHJlZS5oIiAzCnR5cGVk
ZWYgQ0ZTdHJpbmdSZWYgKCpDRlRyZWVDb3B5RGVzY3JpcHRpb25DYWxsQmFjaykoY29uc3Qgdm9p
ZCAqaW5mbyk7CiMgNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL0NGVHJlZS5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgIENGSW5k
ZXggdmVyc2lvbjsKICAgIHZvaWQgKiBpbmZvOwogICAgQ0ZUcmVlUmV0YWluQ2FsbEJhY2sgcmV0
YWluOwogICAgQ0ZUcmVlUmVsZWFzZUNhbGxCYWNrIHJlbGVhc2U7CiAgICBDRlRyZWVDb3B5RGVz
Y3JpcHRpb25DYWxsQmFjayBjb3B5RGVzY3JpcHRpb247Cn0gQ0ZUcmVlQ29udGV4dDsKIyA3OSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZUcmVlLmgiIDMKdHlwZWRlZiB2b2lkICgqQ0ZUcmVlQXBwbGllckZ1bmN0aW9uKShjb25z
dCB2b2lkICp2YWx1ZSwgdm9pZCAqY29udGV4dCk7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19DRlRy
ZWUgKiBDRlRyZWVSZWY7CgoKCgoKZXh0ZXJuCkNGVHlwZUlEIENGVHJlZUdldFR5cGVJRCh2b2lk
KTsKIyAxMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL0NGVHJlZS5oIiAzCmV4dGVybgpDRlRyZWVSZWYgQ0ZUcmVlQ3JlYXRlKENG
QWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgQ0ZUcmVlQ29udGV4dCAqY29udGV4dCk7CiMg
MTIxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9DRlRyZWUuaCIgMwpleHRlcm4KQ0ZUcmVlUmVmIENGVHJlZUdldFBhcmVudChDRlRy
ZWVSZWYgdHJlZSk7CiMgMTMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlRyZWUuaCIgMwpleHRlcm4KQ0ZUcmVlUmVmIENGVHJl
ZUdldE5leHRTaWJsaW5nKENGVHJlZVJlZiB0cmVlKTsKIyAxNDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVHJlZS5oIiAzCmV4
dGVybgpDRlRyZWVSZWYgQ0ZUcmVlR2V0Rmlyc3RDaGlsZChDRlRyZWVSZWYgdHJlZSk7CiMgMTU1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9DRlRyZWUuaCIgMwpleHRlcm4Kdm9pZCBDRlRyZWVHZXRDb250ZXh0KENGVHJlZVJlZiB0
cmVlLCBDRlRyZWVDb250ZXh0ICpjb250ZXh0KTsKIyAxNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVHJlZS5oIiAzCmV4dGVy
bgpDRkluZGV4IENGVHJlZUdldENoaWxkQ291bnQoQ0ZUcmVlUmVmIHRyZWUpOwojIDE3OCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
Q0ZUcmVlLmgiIDMKZXh0ZXJuCkNGVHJlZVJlZiBDRlRyZWVHZXRDaGlsZEF0SW5kZXgoQ0ZUcmVl
UmVmIHRyZWUsIENGSW5kZXggaWR4KTsKIyAxOTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVHJlZS5oIiAzCmV4dGVybgp2b2lk
IENGVHJlZUdldENoaWxkcmVuKENGVHJlZVJlZiB0cmVlLCBDRlRyZWVSZWYgKmNoaWxkcmVuKTsK
IyAyMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0NGVHJlZS5oIiAzCmV4dGVybgp2b2lkIENGVHJlZUFwcGx5RnVuY3Rpb25Ub0No
aWxkcmVuKENGVHJlZVJlZiB0cmVlLCBDRlRyZWVBcHBsaWVyRnVuY3Rpb24gYXBwbGllciwgdm9p
ZCAqY29udGV4dCk7CiMgMjIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlRyZWUuaCIgMwpleHRlcm4KQ0ZUcmVlUmVmIENGVHJl
ZUZpbmRSb290KENGVHJlZVJlZiB0cmVlKTsKIyAyMzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVHJlZS5oIiAzCmV4dGVybgp2
b2lkIENGVHJlZVNldENvbnRleHQoQ0ZUcmVlUmVmIHRyZWUsIGNvbnN0IENGVHJlZUNvbnRleHQg
KmNvbnRleHQpOwojIDI1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZUcmVlLmgiIDMKZXh0ZXJuCnZvaWQgQ0ZUcmVlUHJlcGVu
ZENoaWxkKENGVHJlZVJlZiB0cmVlLCBDRlRyZWVSZWYgbmV3Q2hpbGQpOwojIDI2NSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZU
cmVlLmgiIDMKZXh0ZXJuCnZvaWQgQ0ZUcmVlQXBwZW5kQ2hpbGQoQ0ZUcmVlUmVmIHRyZWUsIENG
VHJlZVJlZiBuZXdDaGlsZCk7CiMgMjgwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlRyZWUuaCIgMwpleHRlcm4Kdm9pZCBDRlRy
ZWVJbnNlcnRTaWJsaW5nKENGVHJlZVJlZiB0cmVlLCBDRlRyZWVSZWYgbmV3U2libGluZyk7CgoK
CgoKCgpleHRlcm4Kdm9pZCBDRlRyZWVSZW1vdmUoQ0ZUcmVlUmVmIHRyZWUpOwoKCgoKCgoKZXh0
ZXJuCnZvaWQgQ0ZUcmVlUmVtb3ZlQWxsQ2hpbGRyZW4oQ0ZUcmVlUmVmIHRyZWUpOwojIDMxOCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZUcmVlLmgiIDMKZXh0ZXJuCnZvaWQgQ0ZUcmVlU29ydENoaWxkcmVuKENGVHJlZVJlZiB0
cmVlLCBDRkNvbXBhcmF0b3JGdW5jdGlvbiBjb21wYXJhdG9yLCB2b2lkICpjb250ZXh0KTsKCn0K
IyA2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvQ29yZUZvdW5kYXRpb24uaCIgMiAzCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVVJMQWNjZXNzLmgiIDEg
MwoKCgoKCiNkZWZpbmUgX19DT1JFRk9VTkRBVElPTl9DRlVSTEFDQ0VTU19fIDEKIyAxNiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
Q0ZVUkxBY2Nlc3MuaCIgMwpleHRlcm4gIkMiIHsKIyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZVUkxBY2Nlc3MuaCIgMwpl
eHRlcm4KQm9vbGVhbiBDRlVSTENyZWF0ZURhdGFBbmRQcm9wZXJ0aWVzRnJvbVJlc291cmNlKENG
QWxsb2NhdG9yUmVmIGFsbG9jLCBDRlVSTFJlZiB1cmwsIENGRGF0YVJlZiAqcmVzb3VyY2VEYXRh
LCBDRkRpY3Rpb25hcnlSZWYgKnByb3BlcnRpZXMsIENGQXJyYXlSZWYgZGVzaXJlZFByb3BlcnRp
ZXMsIFNJbnQzMiAqZXJyb3JDb2RlKSA7CiMgNTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVVJMQWNjZXNzLmgiIDMKZXh0ZXJu
CkJvb2xlYW4gQ0ZVUkxXcml0ZURhdGFBbmRQcm9wZXJ0aWVzVG9SZXNvdXJjZShDRlVSTFJlZiB1
cmwsIENGRGF0YVJlZiBkYXRhVG9Xcml0ZSwgQ0ZEaWN0aW9uYXJ5UmVmIHByb3BlcnRpZXNUb1dy
aXRlLCBTSW50MzIgKmVycm9yQ29kZSkgOwoKCgpleHRlcm4KQm9vbGVhbiBDRlVSTERlc3Ryb3lS
ZXNvdXJjZShDRlVSTFJlZiB1cmwsIFNJbnQzMiAqZXJyb3JDb2RlKSA7CgoKCmV4dGVybgpDRlR5
cGVSZWYgQ0ZVUkxDcmVhdGVQcm9wZXJ0eUZyb21SZXNvdXJjZShDRkFsbG9jYXRvclJlZiBhbGxv
YywgQ0ZVUkxSZWYgdXJsLCBDRlN0cmluZ1JlZiBwcm9wZXJ0eSwgU0ludDMyICplcnJvckNvZGUp
IDsKCgoKZW51bSB7CiAgICBrQ0ZVUkxVbmtub3duRXJyb3IgPSAtMTAsCiAgICBrQ0ZVUkxVbmtu
b3duU2NoZW1lRXJyb3IgPSAtMTEsCiAgICBrQ0ZVUkxSZXNvdXJjZU5vdEZvdW5kRXJyb3IgPSAt
MTIsCiAgICBrQ0ZVUkxSZXNvdXJjZUFjY2Vzc1Zpb2xhdGlvbkVycm9yID0gLTEzLAogICAga0NG
VVJMUmVtb3RlSG9zdFVuYXZhaWxhYmxlRXJyb3IgPSAtMTQsCiAgICBrQ0ZVUkxJbXByb3BlckFy
Z3VtZW50c0Vycm9yID0gLTE1LAogICAga0NGVVJMVW5rbm93blByb3BlcnR5S2V5RXJyb3IgPSAt
MTYsCiAgICBrQ0ZVUkxQcm9wZXJ0eUtleVVuYXZhaWxhYmxlRXJyb3IgPSAtMTcsCiAgICBrQ0ZV
UkxUaW1lb3V0RXJyb3IgPSAtMTgKfTsKdHlwZWRlZiBDRkluZGV4IENGVVJMRXJyb3I7CgoKCmV4
dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxGaWxlRXhpc3RzIDsKZXh0ZXJuCmNvbnN0IENG
U3RyaW5nUmVmIGtDRlVSTEZpbGVEaXJlY3RvcnlDb250ZW50cyA7CmV4dGVybgpjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZVUkxGaWxlTGVuZ3RoIDsKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVS
TEZpbGVMYXN0TW9kaWZpY2F0aW9uVGltZSA7CmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZV
UkxGaWxlUE9TSVhNb2RlIDsKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTEZpbGVPd25l
cklEIDsKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTEhUVFBTdGF0dXNDb2RlIDsKZXh0
ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTEhUVFBTdGF0dXNMaW5lIDsKIyAxMTEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NG
VVJMQWNjZXNzLmgiIDMKfQojIDY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91
bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRm91bmRhdGlvbi5oIiAyIDMKCgoKIyAxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9DRkF0dHJpYnV0ZWRTdHJpbmcuaCIgMSAzCiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQXR0cmlidXRlZFN0cmluZy5o
IiAzCiNkZWZpbmUgX19DT1JFRk9VTkRBVElPTl9DRkFUVFJJQlVURURTVFJJTkdfXyAxCgoKCgoK
ZXh0ZXJuICJDIiB7CgoKCgp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGQXR0cmlidXRlZFN0cmlu
ZyAqQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmOwp0eXBlZGVmIHN0cnVjdCBfX0NGQXR0cmlidXRlZFN0
cmluZyAqQ0ZNdXRhYmxlQXR0cmlidXRlZFN0cmluZ1JlZjsKCgoKCmV4dGVybiBDRlR5cGVJRCBD
RkF0dHJpYnV0ZWRTdHJpbmdHZXRUeXBlSUQodm9pZCkgOwojIDQwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkF0dHJpYnV0ZWRT
dHJpbmcuaCIgMwpleHRlcm4gQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIENGQXR0cmlidXRlZFN0cmlu
Z0NyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZTdHJpbmdSZWYgc3RyLCBDRkRpY3Rpb25h
cnlSZWYgYXR0cmlidXRlcykgOwoKCgoKZXh0ZXJuIENGQXR0cmlidXRlZFN0cmluZ1JlZiBDRkF0
dHJpYnV0ZWRTdHJpbmdDcmVhdGVXaXRoU3Vic3RyaW5nKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBD
RkF0dHJpYnV0ZWRTdHJpbmdSZWYgYVN0ciwgQ0ZSYW5nZSByYW5nZSkgOwoKCgoKZXh0ZXJuIENG
QXR0cmlidXRlZFN0cmluZ1JlZiBDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGVDb3B5KENGQWxsb2Nh
dG9yUmVmIGFsbG9jLCBDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYVN0cikgOwoKCgoKZXh0ZXJuIENG
U3RyaW5nUmVmIENGQXR0cmlidXRlZFN0cmluZ0dldFN0cmluZyhDRkF0dHJpYnV0ZWRTdHJpbmdS
ZWYgYVN0cikgOwoKCgoKZXh0ZXJuIENGSW5kZXggQ0ZBdHRyaWJ1dGVkU3RyaW5nR2V0TGVuZ3Ro
KENGQXR0cmlidXRlZFN0cmluZ1JlZiBhU3RyKSA7CgoKCgoKCmV4dGVybiBDRkRpY3Rpb25hcnlS
ZWYgQ0ZBdHRyaWJ1dGVkU3RyaW5nR2V0QXR0cmlidXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYg
YVN0ciwgQ0ZJbmRleCBsb2MsIENGUmFuZ2UgKmVmZmVjdGl2ZVJhbmdlKSA7CgoKCgpleHRlcm4g
Q0ZUeXBlUmVmIENGQXR0cmlidXRlZFN0cmluZ0dldEF0dHJpYnV0ZShDRkF0dHJpYnV0ZWRTdHJp
bmdSZWYgYVN0ciwgQ0ZJbmRleCBsb2MsIENGU3RyaW5nUmVmIGF0dHJOYW1lLCBDRlJhbmdlICpl
ZmZlY3RpdmVSYW5nZSkgOwoKCgoKZXh0ZXJuIENGRGljdGlvbmFyeVJlZiBDRkF0dHJpYnV0ZWRT
dHJpbmdHZXRBdHRyaWJ1dGVzQW5kTG9uZ2VzdEVmZmVjdGl2ZVJhbmdlKENGQXR0cmlidXRlZFN0
cmluZ1JlZiBhU3RyLCBDRkluZGV4IGxvYywgQ0ZSYW5nZSBpblJhbmdlLCBDRlJhbmdlICpsb25n
ZXN0RWZmZWN0aXZlUmFuZ2UpIDsKCgoKCmV4dGVybiBDRlR5cGVSZWYgQ0ZBdHRyaWJ1dGVkU3Ry
aW5nR2V0QXR0cmlidXRlQW5kTG9uZ2VzdEVmZmVjdGl2ZVJhbmdlKENGQXR0cmlidXRlZFN0cmlu
Z1JlZiBhU3RyLCBDRkluZGV4IGxvYywgQ0ZTdHJpbmdSZWYgYXR0ck5hbWUsIENGUmFuZ2UgaW5S
YW5nZSwgQ0ZSYW5nZSAqbG9uZ2VzdEVmZmVjdGl2ZVJhbmdlKSA7CiMgOTEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGQXR0cmli
dXRlZFN0cmluZy5oIiAzCmV4dGVybiBDRk11dGFibGVBdHRyaWJ1dGVkU3RyaW5nUmVmIENGQXR0
cmlidXRlZFN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRklu
ZGV4IG1heExlbmd0aCwgQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGFTdHIpIDsKCgoKCmV4dGVybiBD
Rk11dGFibGVBdHRyaWJ1dGVkU3RyaW5nUmVmIENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZU11dGFi
bGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGSW5kZXggbWF4TGVuZ3RoKSA7CgoKCgoKCmV4dGVy
biB2b2lkIENGQXR0cmlidXRlZFN0cmluZ1JlcGxhY2VTdHJpbmcoQ0ZNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZ1JlZiBhU3RyLCBDRlJhbmdlIHJhbmdlLCBDRlN0cmluZ1JlZiByZXBsYWNlbWVudCkg
OwoKCgoKCgpleHRlcm4gQ0ZNdXRhYmxlU3RyaW5nUmVmIENGQXR0cmlidXRlZFN0cmluZ0dldE11
dGFibGVTdHJpbmcoQ0ZNdXRhYmxlQXR0cmlidXRlZFN0cmluZ1JlZiBhU3RyKSA7CgoKCgpleHRl
cm4gdm9pZCBDRkF0dHJpYnV0ZWRTdHJpbmdTZXRBdHRyaWJ1dGVzKENGTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmdSZWYgYVN0ciwgQ0ZSYW5nZSByYW5nZSwgQ0ZEaWN0aW9uYXJ5UmVmIHJlcGxhY2Vt
ZW50LCBCb29sZWFuIGNsZWFyT3RoZXJBdHRyaWJ1dGVzKSA7CgoKCgpleHRlcm4gdm9pZCBDRkF0
dHJpYnV0ZWRTdHJpbmdTZXRBdHRyaWJ1dGUoQ0ZNdXRhYmxlQXR0cmlidXRlZFN0cmluZ1JlZiBh
U3RyLCBDRlJhbmdlIHJhbmdlLCBDRlN0cmluZ1JlZiBhdHRyTmFtZSwgQ0ZUeXBlUmVmIHZhbHVl
KSA7CgoKCgpleHRlcm4gdm9pZCBDRkF0dHJpYnV0ZWRTdHJpbmdSZW1vdmVBdHRyaWJ1dGUoQ0ZN
dXRhYmxlQXR0cmlidXRlZFN0cmluZ1JlZiBhU3RyLCBDRlJhbmdlIHJhbmdlLCBDRlN0cmluZ1Jl
ZiBhdHRyTmFtZSkgOwoKCgoKZXh0ZXJuIHZvaWQgQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVwbGFjZUF0
dHJpYnV0ZWRTdHJpbmcoQ0ZNdXRhYmxlQXR0cmlidXRlZFN0cmluZ1JlZiBhU3RyLCBDRlJhbmdl
IHJhbmdlLCBDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgcmVwbGFjZW1lbnQpIDsKCgoKCmV4dGVybiB2
b2lkIENGQXR0cmlidXRlZFN0cmluZ0JlZ2luRWRpdGluZyhDRk11dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nUmVmIGFTdHIpIDsKCgoKCmV4dGVybiB2b2lkIENGQXR0cmlidXRlZFN0cmluZ0VuZEVkaXRp
bmcoQ0ZNdXRhYmxlQXR0cmlidXRlZFN0cmluZ1JlZiBhU3RyKSA7CgoKfQojIDczICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Db3Jl
Rm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91
bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRk5vdGlmaWNhdGlvbkNlbnRlci5oIiAxIDMKCgoK
CgojZGVmaW5lIF9fQ09SRUZPVU5EQVRJT05fQ0ZOT1RJRklDQVRJT05DRU5URVJfXyAxCgoKCgpl
eHRlcm4gIkMiIHsKCnR5cGVkZWYgc3RydWN0IF9fQ0ZOb3RpZmljYXRpb25DZW50ZXIgKiBDRk5v
dGlmaWNhdGlvbkNlbnRlclJlZjsKCnR5cGVkZWYgdm9pZCAoKkNGTm90aWZpY2F0aW9uQ2FsbGJh
Y2spKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciwgdm9pZCAqb2JzZXJ2ZXIsIENGU3Ry
aW5nUmVmIG5hbWUsIGNvbnN0IHZvaWQgKm9iamVjdCwgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZv
KTsKCmVudW0gewogICAgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEcm9wID0gMSwK
CiAgICBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNvYWxlc2NlID0gMiwKCiAgICBD
Rk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckhvbGQgPSAzLAoKICAgIENGTm90aWZpY2F0
aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5ID0gNAoKfTsKdHlwZWRlZiBD
RkluZGV4IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yOwoKZXh0ZXJuIENGVHlwZUlE
IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0VHlwZUlEKHZvaWQpOwoKZXh0ZXJuIENGTm90aWZpY2F0
aW9uQ2VudGVyUmVmIENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIodm9pZCkgOwoK
CmV4dGVybiBDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBDRk5vdGlmaWNhdGlvbkNlbnRlckdldERp
c3RyaWJ1dGVkQ2VudGVyKHZvaWQpOwoKCmV4dGVybiBDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBD
Rk5vdGlmaWNhdGlvbkNlbnRlckdldERhcndpbk5vdGlmeUNlbnRlcih2b2lkKSA7CiMgNTUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJz
L0NGTm90aWZpY2F0aW9uQ2VudGVyLmgiIDMKZXh0ZXJuIHZvaWQgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBjZW50ZXIsIGNvbnN0IHZvaWQg
Km9ic2VydmVyLCBDRk5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxCYWNrLCBDRlN0cmluZ1JlZiBu
YW1lLCBjb25zdCB2b2lkICpvYmplY3QsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9y
IHN1c3BlbnNpb25CZWhhdmlvcik7CgpleHRlcm4gdm9pZCBDRk5vdGlmaWNhdGlvbkNlbnRlclJl
bW92ZU9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciwgY29uc3Qgdm9pZCAq
b2JzZXJ2ZXIsIENGU3RyaW5nUmVmIG5hbWUsIGNvbnN0IHZvaWQgKm9iamVjdCk7CmV4dGVybiB2
b2lkIENGTm90aWZpY2F0aW9uQ2VudGVyUmVtb3ZlRXZlcnlPYnNlcnZlcihDRk5vdGlmaWNhdGlv
bkNlbnRlclJlZiBjZW50ZXIsIGNvbnN0IHZvaWQgKm9ic2VydmVyKTsKCmV4dGVybiB2b2lkIENG
Tm90aWZpY2F0aW9uQ2VudGVyUG9zdE5vdGlmaWNhdGlvbihDRk5vdGlmaWNhdGlvbkNlbnRlclJl
ZiBjZW50ZXIsIENGU3RyaW5nUmVmIG5hbWUsIGNvbnN0IHZvaWQgKm9iamVjdCwgQ0ZEaWN0aW9u
YXJ5UmVmIHVzZXJJbmZvLCBCb29sZWFuIGRlbGl2ZXJJbW1lZGlhdGVseSk7CgoKCmVudW0gewog
ICAga0NGTm90aWZpY2F0aW9uRGVsaXZlckltbWVkaWF0ZWx5ID0gKDFVTCA8PCAwKSwKICAgIGtD
Rk5vdGlmaWNhdGlvblBvc3RUb0FsbFNlc3Npb25zID0gKDFVTCA8PCAxKQp9OwoKdm9pZCBDRk5v
dGlmaWNhdGlvbkNlbnRlclBvc3ROb3RpZmljYXRpb25XaXRoT3B0aW9ucyhDRk5vdGlmaWNhdGlv
bkNlbnRlclJlZiBjZW50ZXIsIENGU3RyaW5nUmVmIG5hbWUsIGNvbnN0IHZvaWQgKm9iamVjdCwg
Q0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvLCBDRk9wdGlvbkZsYWdzIG9wdGlvbnMpIDsKCgoKCn0K
IyA3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvQ29yZUZvdW5kYXRpb24uaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZVUkxFbnVtZXJhdG9y
LmgiIDEgMwoKCgoKCgojZGVmaW5lIF9fQ09SRUZPVU5EQVRJT05fQ0ZVUkxFTlVNRVJBVE9SX18g
MQoKCgoKCgpleHRlcm4gIkMiIHsKCgp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMRW51bWVy
YXRvciAqQ0ZVUkxFbnVtZXJhdG9yUmVmOwoKCmV4dGVybgpDRlR5cGVJRCBDRlVSTEVudW1lcmF0
b3JHZXRUeXBlSUQoIHZvaWQgKSA7CgoKCmVudW0gewogICAga0NGVVJMRW51bWVyYXRvckRlc2Nl
bmRSZWN1cnNpdmVseSA9IDFVTCA8PCAwLAogICAga0NGVVJMRW51bWVyYXRvclNraXBJbnZpc2li
bGVzID0gMVVMIDw8IDEsCiAgICBrQ0ZVUkxFbnVtZXJhdG9yR2VuZXJhdGVGaWxlUmVmZXJlbmNl
VVJMcyA9IDFVTCA8PCAyLAogICAga0NGVVJMRW51bWVyYXRvclNraXBQYWNrYWdlQ29udGVudHMg
PSAxVUwgPDwgMywKfTsKdHlwZWRlZiBDRk9wdGlvbkZsYWdzIENGVVJMRW51bWVyYXRvck9wdGlv
bnM7CgoKCgoKCgpleHRlcm4KQ0ZVUkxFbnVtZXJhdG9yUmVmIENGVVJMRW51bWVyYXRvckNyZWF0
ZUZvckRpcmVjdG9yeVVSTCggQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGVVJMUmVmIGRpcmVjdG9y
eVVSTCwgQ0ZVUkxFbnVtZXJhdG9yT3B0aW9ucyBvcHRpb24sIENGQXJyYXlSZWYgcHJvcGVydHlL
ZXlzICkgOwojIDQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9DRlVSTEVudW1lcmF0b3IuaCIgMwpleHRlcm4KQ0ZVUkxFbnVtZXJh
dG9yUmVmIENGVVJMRW51bWVyYXRvckNyZWF0ZUZvck1vdW50ZWRWb2x1bWVzKCBDRkFsbG9jYXRv
clJlZiBhbGxvYywgQ0ZVUkxFbnVtZXJhdG9yT3B0aW9ucyBvcHRpb24sIENGQXJyYXlSZWYgcHJv
cGVydHlLZXlzICkgOwoKCgplbnVtIHsKICAgIGtDRlVSTEVudW1lcmF0b3JTdWNjZXNzID0gMSwK
ICAgIGtDRlVSTEVudW1lcmF0b3JFbmQgPSAyLAogICAga0NGVVJMRW51bWVyYXRvckVycm9yID0g
Mwp9Owp0eXBlZGVmIENGSW5kZXggQ0ZVUkxFbnVtZXJhdG9yUmVzdWx0OwoKCgoKCmV4dGVybgpD
RlVSTEVudW1lcmF0b3JSZXN1bHQgQ0ZVUkxFbnVtZXJhdG9yR2V0TmV4dFVSTCggQ0ZVUkxFbnVt
ZXJhdG9yUmVmIGVudW1lcmF0b3IsIENGVVJMUmVmICp1cmwsIENGRXJyb3JSZWYgKmVycm9yICkg
OwojIDc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9DRlVSTEVudW1lcmF0b3IuaCIgMwpleHRlcm4Kdm9pZCBDRlVSTEVudW1lcmF0
b3JTa2lwRGVzY2VuZGVudHMoIENGVVJMRW51bWVyYXRvclJlZiBlbnVtZXJhdG9yICkgOwoKCgoK
ZXh0ZXJuCkNGSW5kZXggQ0ZVUkxFbnVtZXJhdG9yR2V0RGVzY2VuZGVudExldmVsKCBDRlVSTEVu
dW1lcmF0b3JSZWYgZW51bWVyYXRvciApIDsKCgoKCmV4dGVybgpCb29sZWFuIENGVVJMRW51bWVy
YXRvckdldFNvdXJjZURpZENoYW5nZSggQ0ZVUkxFbnVtZXJhdG9yUmVmIGVudW1lcmF0b3IgKSA7
CgoKfQojIDc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9Db3JlRm91bmRhdGlvbi5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRkZpbGVEZXNj
cmlwdG9yLmgiIDEgMwoKCgoKCiNkZWZpbmUgX19DT1JFRk9VTkRBVElPTl9DRkZJTEVERVNDUklQ
VE9SX18gMQoKCgoKCmV4dGVybiAiQyIgewoKdHlwZWRlZiBpbnQgQ0ZGaWxlRGVzY3JpcHRvck5h
dGl2ZURlc2NyaXB0b3I7Cgp0eXBlZGVmIHN0cnVjdCBfX0NGRmlsZURlc2NyaXB0b3IgKiBDRkZp
bGVEZXNjcmlwdG9yUmVmOwoKCmVudW0gewogICAga0NGRmlsZURlc2NyaXB0b3JSZWFkQ2FsbEJh
Y2sgPSAxVUwgPDwgMCwKICAgIGtDRkZpbGVEZXNjcmlwdG9yV3JpdGVDYWxsQmFjayA9IDFVTCA8
PCAxCn07Cgp0eXBlZGVmIHZvaWQgKCpDRkZpbGVEZXNjcmlwdG9yQ2FsbEJhY2spKENGRmlsZURl
c2NyaXB0b3JSZWYgZiwgQ0ZPcHRpb25GbGFncyBjYWxsQmFja1R5cGVzLCB2b2lkICppbmZvKTsK
CnR5cGVkZWYgc3RydWN0IHsKICAgIENGSW5kZXggdmVyc2lvbjsKICAgIHZvaWQgKiBpbmZvOwog
ICAgdm9pZCAqICgqcmV0YWluKSh2b2lkICppbmZvKTsKICAgIHZvaWQgKCpyZWxlYXNlKSh2b2lk
ICppbmZvKTsKICAgIENGU3RyaW5nUmVmICgqY29weURlc2NyaXB0aW9uKSh2b2lkICppbmZvKTsK
fSBDRkZpbGVEZXNjcmlwdG9yQ29udGV4dDsKCmV4dGVybiBDRlR5cGVJRCBDRkZpbGVEZXNjcmlw
dG9yR2V0VHlwZUlEKHZvaWQpOwoKZXh0ZXJuIENGRmlsZURlc2NyaXB0b3JSZWYgQ0ZGaWxlRGVz
Y3JpcHRvckNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRmlsZURlc2NyaXB0b3JO
YXRpdmVEZXNjcmlwdG9yIGZkLCBCb29sZWFuIGNsb3NlT25JbnZhbGlkYXRlLCBDRkZpbGVEZXNj
cmlwdG9yQ2FsbEJhY2sgY2FsbG91dCwgY29uc3QgQ0ZGaWxlRGVzY3JpcHRvckNvbnRleHQgKmNv
bnRleHQpOwoKZXh0ZXJuIENGRmlsZURlc2NyaXB0b3JOYXRpdmVEZXNjcmlwdG9yIENGRmlsZURl
c2NyaXB0b3JHZXROYXRpdmVEZXNjcmlwdG9yKENGRmlsZURlc2NyaXB0b3JSZWYgZik7CgpleHRl
cm4gdm9pZCBDRkZpbGVEZXNjcmlwdG9yR2V0Q29udGV4dChDRkZpbGVEZXNjcmlwdG9yUmVmIGYs
IENGRmlsZURlc2NyaXB0b3JDb250ZXh0ICpjb250ZXh0KTsKCmV4dGVybiB2b2lkIENGRmlsZURl
c2NyaXB0b3JFbmFibGVDYWxsQmFja3MoQ0ZGaWxlRGVzY3JpcHRvclJlZiBmLCBDRk9wdGlvbkZs
YWdzIGNhbGxCYWNrVHlwZXMpOwpleHRlcm4gdm9pZCBDRkZpbGVEZXNjcmlwdG9yRGlzYWJsZUNh
bGxCYWNrcyhDRkZpbGVEZXNjcmlwdG9yUmVmIGYsIENGT3B0aW9uRmxhZ3MgY2FsbEJhY2tUeXBl
cyk7CgpleHRlcm4gdm9pZCBDRkZpbGVEZXNjcmlwdG9ySW52YWxpZGF0ZShDRkZpbGVEZXNjcmlw
dG9yUmVmIGYpOwpleHRlcm4gQm9vbGVhbiBDRkZpbGVEZXNjcmlwdG9ySXNWYWxpZChDRkZpbGVE
ZXNjcmlwdG9yUmVmIGYpOwoKZXh0ZXJuIENGUnVuTG9vcFNvdXJjZVJlZiBDRkZpbGVEZXNjcmlw
dG9yQ3JlYXRlUnVuTG9vcFNvdXJjZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRmlsZURl
c2NyaXB0b3JSZWYgZiwgQ0ZJbmRleCBvcmRlcik7CgoKfQojIDgyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRm91bmRhdGlv
bi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9DRk1hY2hQb3J0LmgiIDEgMwoKCgoKCiNkZWZpbmUgX19DT1JFRk9V
TkRBVElPTl9DRk1BQ0hQT1JUX18gMQoKCgoKZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIHN0cnVjdCBf
X0NGTWFjaFBvcnQgKiBDRk1hY2hQb3J0UmVmOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0ZJbmRl
eCB2ZXJzaW9uOwogICAgdm9pZCAqIGluZm87CiAgICBjb25zdCB2b2lkICooKnJldGFpbikoY29u
c3Qgdm9pZCAqaW5mbyk7CiAgICB2b2lkICgqcmVsZWFzZSkoY29uc3Qgdm9pZCAqaW5mbyk7CiAg
ICBDRlN0cmluZ1JlZiAoKmNvcHlEZXNjcmlwdGlvbikoY29uc3Qgdm9pZCAqaW5mbyk7Cn0gQ0ZN
YWNoUG9ydENvbnRleHQ7Cgp0eXBlZGVmIHZvaWQgKCpDRk1hY2hQb3J0Q2FsbEJhY2spKENGTWFj
aFBvcnRSZWYgcG9ydCwgdm9pZCAqbXNnLCBDRkluZGV4IHNpemUsIHZvaWQgKmluZm8pOwp0eXBl
ZGVmIHZvaWQgKCpDRk1hY2hQb3J0SW52YWxpZGF0aW9uQ2FsbEJhY2spKENGTWFjaFBvcnRSZWYg
cG9ydCwgdm9pZCAqaW5mbyk7CgpleHRlcm4gQ0ZUeXBlSUQgQ0ZNYWNoUG9ydEdldFR5cGVJRCh2
b2lkKTsKCmV4dGVybiBDRk1hY2hQb3J0UmVmIENGTWFjaFBvcnRDcmVhdGUoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBDRk1hY2hQb3J0Q2FsbEJhY2sgY2FsbG91dCwgQ0ZNYWNoUG9ydENvbnRl
eHQgKmNvbnRleHQsIEJvb2xlYW4gKnNob3VsZEZyZWVJbmZvKTsKZXh0ZXJuIENGTWFjaFBvcnRS
ZWYgQ0ZNYWNoUG9ydENyZWF0ZVdpdGhQb3J0KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgbWFj
aF9wb3J0X3QgcG9ydE51bSwgQ0ZNYWNoUG9ydENhbGxCYWNrIGNhbGxvdXQsIENGTWFjaFBvcnRD
b250ZXh0ICpjb250ZXh0LCBCb29sZWFuICpzaG91bGRGcmVlSW5mbyk7CgpleHRlcm4gbWFjaF9w
b3J0X3QgQ0ZNYWNoUG9ydEdldFBvcnQoQ0ZNYWNoUG9ydFJlZiBwb3J0KTsKZXh0ZXJuIHZvaWQg
Q0ZNYWNoUG9ydEdldENvbnRleHQoQ0ZNYWNoUG9ydFJlZiBwb3J0LCBDRk1hY2hQb3J0Q29udGV4
dCAqY29udGV4dCk7CmV4dGVybiB2b2lkIENGTWFjaFBvcnRJbnZhbGlkYXRlKENGTWFjaFBvcnRS
ZWYgcG9ydCk7CmV4dGVybiBCb29sZWFuIENGTWFjaFBvcnRJc1ZhbGlkKENGTWFjaFBvcnRSZWYg
cG9ydCk7CmV4dGVybiBDRk1hY2hQb3J0SW52YWxpZGF0aW9uQ2FsbEJhY2sgQ0ZNYWNoUG9ydEdl
dEludmFsaWRhdGlvbkNhbGxCYWNrKENGTWFjaFBvcnRSZWYgcG9ydCk7CmV4dGVybiB2b2lkIENG
TWFjaFBvcnRTZXRJbnZhbGlkYXRpb25DYWxsQmFjayhDRk1hY2hQb3J0UmVmIHBvcnQsIENGTWFj
aFBvcnRJbnZhbGlkYXRpb25DYWxsQmFjayBjYWxsb3V0KTsKCmV4dGVybiBDRlJ1bkxvb3BTb3Vy
Y2VSZWYgQ0ZNYWNoUG9ydENyZWF0ZVJ1bkxvb3BTb3VyY2UoQ0ZBbGxvY2F0b3JSZWYgYWxsb2Nh
dG9yLCBDRk1hY2hQb3J0UmVmIHBvcnQsIENGSW5kZXggb3JkZXIpOwoKfQojIDgzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Db3Jl
Rm91bmRhdGlvbi5oIiAyIDMKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVG
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVXNlck5vdGlmaWNhdGlvbi5oIiAxIDMKCgoK
CgojZGVmaW5lIF9fQ09SRUZPVU5EQVRJT05fQ0ZVU0VSTk9USUZJQ0FUSU9OX18gMQojIDE1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9DRlVzZXJOb3RpZmljYXRpb24uaCIgMwpleHRlcm4gIkMiIHsKCnR5cGVkZWYgc3RydWN0IF9f
Q0ZVc2VyTm90aWZpY2F0aW9uICogQ0ZVc2VyTm90aWZpY2F0aW9uUmVmOwojIDYzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlVz
ZXJOb3RpZmljYXRpb24uaCIgMwp0eXBlZGVmIHZvaWQgKCpDRlVzZXJOb3RpZmljYXRpb25DYWxs
QmFjaykoQ0ZVc2VyTm90aWZpY2F0aW9uUmVmIHVzZXJOb3RpZmljYXRpb24sIENGT3B0aW9uRmxh
Z3MgcmVzcG9uc2VGbGFncyk7CgpleHRlcm4KQ0ZUeXBlSUQgQ0ZVc2VyTm90aWZpY2F0aW9uR2V0
VHlwZUlEKHZvaWQpOwoKZXh0ZXJuCkNGVXNlck5vdGlmaWNhdGlvblJlZiBDRlVzZXJOb3RpZmlj
YXRpb25DcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlRpbWVJbnRlcnZhbCB0aW1l
b3V0LCBDRk9wdGlvbkZsYWdzIGZsYWdzLCBTSW50MzIgKmVycm9yLCBDRkRpY3Rpb25hcnlSZWYg
ZGljdGlvbmFyeSk7CgpleHRlcm4KU0ludDMyIENGVXNlck5vdGlmaWNhdGlvblJlY2VpdmVSZXNw
b25zZShDRlVzZXJOb3RpZmljYXRpb25SZWYgdXNlck5vdGlmaWNhdGlvbiwgQ0ZUaW1lSW50ZXJ2
YWwgdGltZW91dCwgQ0ZPcHRpb25GbGFncyAqcmVzcG9uc2VGbGFncyk7CgpleHRlcm4KQ0ZTdHJp
bmdSZWYgQ0ZVc2VyTm90aWZpY2F0aW9uR2V0UmVzcG9uc2VWYWx1ZShDRlVzZXJOb3RpZmljYXRp
b25SZWYgdXNlck5vdGlmaWNhdGlvbiwgQ0ZTdHJpbmdSZWYga2V5LCBDRkluZGV4IGlkeCk7Cgpl
eHRlcm4KQ0ZEaWN0aW9uYXJ5UmVmIENGVXNlck5vdGlmaWNhdGlvbkdldFJlc3BvbnNlRGljdGlv
bmFyeShDRlVzZXJOb3RpZmljYXRpb25SZWYgdXNlck5vdGlmaWNhdGlvbik7CgpleHRlcm4KU0lu
dDMyIENGVXNlck5vdGlmaWNhdGlvblVwZGF0ZShDRlVzZXJOb3RpZmljYXRpb25SZWYgdXNlck5v
dGlmaWNhdGlvbiwgQ0ZUaW1lSW50ZXJ2YWwgdGltZW91dCwgQ0ZPcHRpb25GbGFncyBmbGFncywg
Q0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpOwoKZXh0ZXJuClNJbnQzMiBDRlVzZXJOb3RpZmlj
YXRpb25DYW5jZWwoQ0ZVc2VyTm90aWZpY2F0aW9uUmVmIHVzZXJOb3RpZmljYXRpb24pOwoKZXh0
ZXJuCkNGUnVuTG9vcFNvdXJjZVJlZiBDRlVzZXJOb3RpZmljYXRpb25DcmVhdGVSdW5Mb29wU291
cmNlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZVc2VyTm90aWZpY2F0aW9uUmVmIHVzZXJO
b3RpZmljYXRpb24sIENGVXNlck5vdGlmaWNhdGlvbkNhbGxCYWNrIGNhbGxvdXQsIENGSW5kZXgg
b3JkZXIpOwoKCgoKZXh0ZXJuClNJbnQzMiBDRlVzZXJOb3RpZmljYXRpb25EaXNwbGF5Tm90aWNl
KENGVGltZUludGVydmFsIHRpbWVvdXQsIENGT3B0aW9uRmxhZ3MgZmxhZ3MsIENGVVJMUmVmIGlj
b25VUkwsIENGVVJMUmVmIHNvdW5kVVJMLCBDRlVSTFJlZiBsb2NhbGl6YXRpb25VUkwsIENGU3Ry
aW5nUmVmIGFsZXJ0SGVhZGVyLCBDRlN0cmluZ1JlZiBhbGVydE1lc3NhZ2UsIENGU3RyaW5nUmVm
IGRlZmF1bHRCdXR0b25UaXRsZSk7CgpleHRlcm4KU0ludDMyIENGVXNlck5vdGlmaWNhdGlvbkRp
c3BsYXlBbGVydChDRlRpbWVJbnRlcnZhbCB0aW1lb3V0LCBDRk9wdGlvbkZsYWdzIGZsYWdzLCBD
RlVSTFJlZiBpY29uVVJMLCBDRlVSTFJlZiBzb3VuZFVSTCwgQ0ZVUkxSZWYgbG9jYWxpemF0aW9u
VVJMLCBDRlN0cmluZ1JlZiBhbGVydEhlYWRlciwgQ0ZTdHJpbmdSZWYgYWxlcnRNZXNzYWdlLCBD
RlN0cmluZ1JlZiBkZWZhdWx0QnV0dG9uVGl0bGUsIENGU3RyaW5nUmVmIGFsdGVybmF0ZUJ1dHRv
blRpdGxlLCBDRlN0cmluZ1JlZiBvdGhlckJ1dHRvblRpdGxlLCBDRk9wdGlvbkZsYWdzICpyZXNw
b25zZUZsYWdzKTsKCgoKCmVudW0gewogICAga0NGVXNlck5vdGlmaWNhdGlvblN0b3BBbGVydExl
dmVsID0gMCwKICAgIGtDRlVzZXJOb3RpZmljYXRpb25Ob3RlQWxlcnRMZXZlbCA9IDEsCiAgICBr
Q0ZVc2VyTm90aWZpY2F0aW9uQ2F1dGlvbkFsZXJ0TGV2ZWwgPSAyLAogICAga0NGVXNlck5vdGlm
aWNhdGlvblBsYWluQWxlcnRMZXZlbCA9IDMKfTsKCmVudW0gewogICAga0NGVXNlck5vdGlmaWNh
dGlvbkRlZmF1bHRSZXNwb25zZSA9IDAsCiAgICBrQ0ZVc2VyTm90aWZpY2F0aW9uQWx0ZXJuYXRl
UmVzcG9uc2UgPSAxLAogICAga0NGVXNlck5vdGlmaWNhdGlvbk90aGVyUmVzcG9uc2UgPSAyLAog
ICAga0NGVXNlck5vdGlmaWNhdGlvbkNhbmNlbFJlc3BvbnNlID0gMwp9OwoKZW51bSB7CiAgICBr
Q0ZVc2VyTm90aWZpY2F0aW9uTm9EZWZhdWx0QnV0dG9uRmxhZyA9ICgxVUwgPDwgNSksCiAgICBr
Q0ZVc2VyTm90aWZpY2F0aW9uVXNlUmFkaW9CdXR0b25zRmxhZyA9ICgxVUwgPDwgNikKfTsKCnN0
YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBDRk9wdGlvbkZs
YWdzIENGVXNlck5vdGlmaWNhdGlvbkNoZWNrQm94Q2hlY2tlZChDRkluZGV4IGkpIHtyZXR1cm4g
KChDRk9wdGlvbkZsYWdzKSgxVUwgPDwgKDggKyBpKSkpO30Kc3RhdGljIF9faW5saW5lX18gX19h
dHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIENGT3B0aW9uRmxhZ3MgQ0ZVc2VyTm90aWZpY2F0
aW9uU2VjdXJlVGV4dEZpZWxkKENGSW5kZXggaSkge3JldHVybiAoKENGT3B0aW9uRmxhZ3MpKDFV
TCA8PCAoMTYgKyBpKSkpO30Kc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlz
X2lubGluZSkpIENGT3B0aW9uRmxhZ3MgQ0ZVc2VyTm90aWZpY2F0aW9uUG9wVXBTZWxlY3Rpb24o
Q0ZJbmRleCBuKSB7cmV0dXJuICgoQ0ZPcHRpb25GbGFncykobiA8PCAyNCkpO30KCgoKCmV4dGVy
bgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVc2VyTm90aWZpY2F0aW9uSWNvblVSTEtleTsKCmV4dGVy
bgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVc2VyTm90aWZpY2F0aW9uU291bmRVUkxLZXk7CgpleHRl
cm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGVXNlck5vdGlmaWNhdGlvbkxvY2FsaXphdGlvblVSTEtl
eTsKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVc2VyTm90aWZpY2F0aW9uQWxlcnRIZWFk
ZXJLZXk7CgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGVXNlck5vdGlmaWNhdGlvbkFsZXJ0
TWVzc2FnZUtleTsKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVc2VyTm90aWZpY2F0aW9u
RGVmYXVsdEJ1dHRvblRpdGxlS2V5OwoKZXh0ZXJuCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVzZXJO
b3RpZmljYXRpb25BbHRlcm5hdGVCdXR0b25UaXRsZUtleTsKCmV4dGVybgpjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZVc2VyTm90aWZpY2F0aW9uT3RoZXJCdXR0b25UaXRsZUtleTsKCmV4dGVybgpjb25z
dCBDRlN0cmluZ1JlZiBrQ0ZVc2VyTm90aWZpY2F0aW9uUHJvZ3Jlc3NJbmRpY2F0b3JWYWx1ZUtl
eTsKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVc2VyTm90aWZpY2F0aW9uUG9wVXBUaXRs
ZXNLZXk7CgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGVXNlck5vdGlmaWNhdGlvblRleHRG
aWVsZFRpdGxlc0tleTsKCmV4dGVybgpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVc2VyTm90aWZpY2F0
aW9uQ2hlY2tCb3hUaXRsZXNLZXk7CgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYga0NGVXNlck5v
dGlmaWNhdGlvblRleHRGaWVsZFZhbHVlc0tleTsKCgpleHRlcm4KY29uc3QgQ0ZTdHJpbmdSZWYg
a0NGVXNlck5vdGlmaWNhdGlvblBvcFVwU2VsZWN0aW9uS2V5IDsKIyAxNzkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGVXNlck5v
dGlmaWNhdGlvbi5oIiAzCn0KIyA4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
Q0ZYTUxOb2RlLmgiIDEgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91
bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlhNTE5vZGUuaCIgMwojZGVmaW5lIF9fQ09SRUZP
VU5EQVRJT05fQ0ZYTUxOT0RFX18gMQoKCgoKCgoKZXh0ZXJuICJDIiB7CgplbnVtIHsKIGtDRlhN
TE5vZGVDdXJyZW50VmVyc2lvbiA9IDEKfTsKCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZYTUxO
b2RlICogQ0ZYTUxOb2RlUmVmOwp0eXBlZGVmIENGVHJlZVJlZiBDRlhNTFRyZWVSZWY7CiMgNTAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFk
ZXJzL0NGWE1MTm9kZS5oIiAzCmVudW0gewogICAga0NGWE1MTm9kZVR5cGVEb2N1bWVudCA9IDEs
CiAgICBrQ0ZYTUxOb2RlVHlwZUVsZW1lbnQgPSAyLAogICAga0NGWE1MTm9kZVR5cGVBdHRyaWJ1
dGUgPSAzLAogICAga0NGWE1MTm9kZVR5cGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSA0LAogICAg
a0NGWE1MTm9kZVR5cGVDb21tZW50ID0gNSwKICAgIGtDRlhNTE5vZGVUeXBlVGV4dCA9IDYsCiAg
ICBrQ0ZYTUxOb2RlVHlwZUNEQVRBU2VjdGlvbiA9IDcsCiAgICBrQ0ZYTUxOb2RlVHlwZURvY3Vt
ZW50RnJhZ21lbnQgPSA4LAogICAga0NGWE1MTm9kZVR5cGVFbnRpdHkgPSA5LAogICAga0NGWE1M
Tm9kZVR5cGVFbnRpdHlSZWZlcmVuY2UgPSAxMCwKICAgIGtDRlhNTE5vZGVUeXBlRG9jdW1lbnRU
eXBlID0gMTEsCiAgICBrQ0ZYTUxOb2RlVHlwZVdoaXRlc3BhY2UgPSAxMiwKICAgIGtDRlhNTE5v
ZGVUeXBlTm90YXRpb24gPSAxMywKICAgIGtDRlhNTE5vZGVUeXBlRWxlbWVudFR5cGVEZWNsYXJh
dGlvbiA9IDE0LAogICAga0NGWE1MTm9kZVR5cGVBdHRyaWJ1dGVMaXN0RGVjbGFyYXRpb24gPSAx
NQp9Owp0eXBlZGVmIENGSW5kZXggQ0ZYTUxOb2RlVHlwZUNvZGU7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlczsKICAgIENGQXJyYXlSZWYgYXR0cmlidXRl
T3JkZXI7CiAgICBCb29sZWFuIGlzRW1wdHk7CiAgICBjaGFyIF9yZXNlcnZlZFszXTsKfSBDRlhN
TEVsZW1lbnRJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0ZTdHJpbmdSZWYgZGF0YVN0cmlu
ZzsKfSBDRlhNTFByb2Nlc3NpbmdJbnN0cnVjdGlvbkluZm87Cgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICBDRlVSTFJlZiBzb3VyY2VVUkw7CiAgICBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nOwp9IENG
WE1MRG9jdW1lbnRJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0ZVUkxSZWYgc3lzdGVtSUQ7
CiAgICBDRlN0cmluZ1JlZiBwdWJsaWNJRDsKfSBDRlhNTEV4dGVybmFsSUQ7Cgp0eXBlZGVmIHN0
cnVjdCB7CiAgICBDRlhNTEV4dGVybmFsSUQgZXh0ZXJuYWxJRDsKfSBDRlhNTERvY3VtZW50VHlw
ZUluZm87Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDRlhNTEV4dGVybmFsSUQgZXh0ZXJuYWxJRDsK
fSBDRlhNTE5vdGF0aW9uSW5mbzsKCnR5cGVkZWYgc3RydWN0IHsKCiAgICBDRlN0cmluZ1JlZiBj
b250ZW50RGVzY3JpcHRpb247Cn0gQ0ZYTUxFbGVtZW50VHlwZURlY2xhcmF0aW9uSW5mbzsKCnR5
cGVkZWYgc3RydWN0IHsKCiAgICBDRlN0cmluZ1JlZiBhdHRyaWJ1dGVOYW1lOwogICAgQ0ZTdHJp
bmdSZWYgdHlwZVN0cmluZzsKICAgIENGU3RyaW5nUmVmIGRlZmF1bHRTdHJpbmc7Cn0gQ0ZYTUxB
dHRyaWJ1dGVEZWNsYXJhdGlvbkluZm87Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDRkluZGV4IG51
bWJlck9mQXR0cmlidXRlczsKICAgIENGWE1MQXR0cmlidXRlRGVjbGFyYXRpb25JbmZvICphdHRy
aWJ1dGVzOwp9IENGWE1MQXR0cmlidXRlTGlzdERlY2xhcmF0aW9uSW5mbzsKCmVudW0gewogICAg
a0NGWE1MRW50aXR5VHlwZVBhcmFtZXRlciwKICAgIGtDRlhNTEVudGl0eVR5cGVQYXJzZWRJbnRl
cm5hbCwKICAgIGtDRlhNTEVudGl0eVR5cGVQYXJzZWRFeHRlcm5hbCwKICAgIGtDRlhNTEVudGl0
eVR5cGVVbnBhcnNlZCwKICAgIGtDRlhNTEVudGl0eVR5cGVDaGFyYWN0ZXIKfTsKdHlwZWRlZiBD
RkluZGV4IENGWE1MRW50aXR5VHlwZUNvZGU7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDRlhNTEVu
dGl0eVR5cGVDb2RlIGVudGl0eVR5cGU7CiAgICBDRlN0cmluZ1JlZiByZXBsYWNlbWVudFRleHQ7
CiAgICBDRlhNTEV4dGVybmFsSUQgZW50aXR5SUQ7CiAgICBDRlN0cmluZ1JlZiBub3RhdGlvbk5h
bWU7Cn0gQ0ZYTUxFbnRpdHlJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0ZYTUxFbnRpdHlU
eXBlQ29kZSBlbnRpdHlUeXBlOwp9IENGWE1MRW50aXR5UmVmZXJlbmNlSW5mbzsKIyAxNTUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJz
L0NGWE1MTm9kZS5oIiAzCmV4dGVybgpDRlR5cGVJRCBDRlhNTE5vZGVHZXRUeXBlSUQodm9pZCk7
CgoKZXh0ZXJuCkNGWE1MTm9kZVJlZiBDRlhNTE5vZGVDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2MsIENGWE1MTm9kZVR5cGVDb2RlIHhtbFR5cGUsIENGU3RyaW5nUmVmIGRhdGFTdHJpbmcsIGNv
bnN0IHZvaWQgKmFkZGl0aW9uYWxJbmZvUHRyLCBDRkluZGV4IHZlcnNpb24pOwoKCmV4dGVybgpD
RlhNTE5vZGVSZWYgQ0ZYTUxOb2RlQ3JlYXRlQ29weShDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZY
TUxOb2RlUmVmIG9yaWdOb2RlKTsKCmV4dGVybgpDRlhNTE5vZGVUeXBlQ29kZSBDRlhNTE5vZGVH
ZXRUeXBlQ29kZShDRlhNTE5vZGVSZWYgbm9kZSk7CgpleHRlcm4KQ0ZTdHJpbmdSZWYgQ0ZYTUxO
b2RlR2V0U3RyaW5nKENGWE1MTm9kZVJlZiBub2RlKTsKCmV4dGVybgpjb25zdCB2b2lkICpDRlhN
TE5vZGVHZXRJbmZvUHRyKENGWE1MTm9kZVJlZiBub2RlKTsKCmV4dGVybgpDRkluZGV4IENGWE1M
Tm9kZUdldFZlcnNpb24oQ0ZYTUxOb2RlUmVmIG5vZGUpOwoKCgoKZXh0ZXJuCkNGWE1MVHJlZVJl
ZiBDRlhNTFRyZWVDcmVhdGVXaXRoTm9kZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGWE1M
Tm9kZVJlZiBub2RlKTsKCgpleHRlcm4KQ0ZYTUxOb2RlUmVmIENGWE1MVHJlZUdldE5vZGUoQ0ZY
TUxUcmVlUmVmIHhtbFRyZWUpOwoKfQojIDg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRm91bmRhdGlvbi5oIiAyIDMKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9DRlhNTFBhcnNlci5oIiAxIDMKIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZYTUxQYXJzZXIuaCIgMwojZGVmaW5l
IF9fQ09SRUZPVU5EQVRJT05fQ0ZYTUxQQVJTRVJfXyAxCiMgMjIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGWE1MUGFyc2VyLmgi
IDMKZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIHN0cnVjdCBfX0NGWE1MUGFyc2VyICogQ0ZYTUxQYXJz
ZXJSZWY7CiMgNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL0NGWE1MUGFyc2VyLmgiIDMKZW51bSB7CiAgICBrQ0ZYTUxQYXJzZXJW
YWxpZGF0ZURvY3VtZW50ID0gKDFVTCA8PCAwKSwKICAgIGtDRlhNTFBhcnNlclNraXBNZXRhRGF0
YSA9ICgxVUwgPDwgMSksCiAgICBrQ0ZYTUxQYXJzZXJSZXBsYWNlUGh5c2ljYWxFbnRpdGllcyA9
ICgxVUwgPDwgMiksCiAgICBrQ0ZYTUxQYXJzZXJTa2lwV2hpdGVzcGFjZSA9ICgxVUwgPDwgMyks
CiAgICBrQ0ZYTUxQYXJzZXJSZXNvbHZlRXh0ZXJuYWxFbnRpdGllcyA9ICgxVUwgPDwgNCksCiAg
ICBrQ0ZYTUxQYXJzZXJBZGRJbXBsaWVkQXR0cmlidXRlcyA9ICgxVUwgPDwgNSksCiAgICBrQ0ZY
TUxQYXJzZXJBbGxPcHRpb25zID0gMHgwMEZGRkZGRiwKICAgIGtDRlhNTFBhcnNlck5vT3B0aW9u
cyA9IDAKfTsKdHlwZWRlZiBDRk9wdGlvbkZsYWdzIENGWE1MUGFyc2VyT3B0aW9uczsKCgplbnVt
IHsKICAgIGtDRlhNTFN0YXR1c1BhcnNlTm90QmVndW4gPSAtMiwKICAgIGtDRlhNTFN0YXR1c1Bh
cnNlSW5Qcm9ncmVzcyA9IC0xLAogICAga0NGWE1MU3RhdHVzUGFyc2VTdWNjZXNzZnVsID0gMCwK
ICAgIGtDRlhNTEVycm9yVW5leHBlY3RlZEVPRiA9IDEsCiAgICBrQ0ZYTUxFcnJvclVua25vd25F
bmNvZGluZywKICAgIGtDRlhNTEVycm9yRW5jb2RpbmdDb252ZXJzaW9uRmFpbHVyZSwKICAgIGtD
RlhNTEVycm9yTWFsZm9ybWVkUHJvY2Vzc2luZ0luc3RydWN0aW9uLAogICAga0NGWE1MRXJyb3JN
YWxmb3JtZWREVEQsCiAgICBrQ0ZYTUxFcnJvck1hbGZvcm1lZE5hbWUsCiAgICBrQ0ZYTUxFcnJv
ck1hbGZvcm1lZENEU2VjdCwKICAgIGtDRlhNTEVycm9yTWFsZm9ybWVkQ2xvc2VUYWcsCiAgICBr
Q0ZYTUxFcnJvck1hbGZvcm1lZFN0YXJ0VGFnLAogICAga0NGWE1MRXJyb3JNYWxmb3JtZWREb2N1
bWVudCwKICAgIGtDRlhNTEVycm9yRWxlbWVudGxlc3NEb2N1bWVudCwKICAgIGtDRlhNTEVycm9y
TWFsZm9ybWVkQ29tbWVudCwKICAgIGtDRlhNTEVycm9yTWFsZm9ybWVkQ2hhcmFjdGVyUmVmZXJl
bmNlLAogICAga0NGWE1MRXJyb3JNYWxmb3JtZWRQYXJzZWRDaGFyYWN0ZXJEYXRhLAogICAga0NG
WE1MRXJyb3JOb0RhdGEKfTsKdHlwZWRlZiBDRkluZGV4IENGWE1MUGFyc2VyU3RhdHVzQ29kZTsK
IyAxMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0NGWE1MUGFyc2VyLmgiIDMKdHlwZWRlZiB2b2lkICogKCpDRlhNTFBhcnNlckNy
ZWF0ZVhNTFN0cnVjdHVyZUNhbGxCYWNrKShDRlhNTFBhcnNlclJlZiBwYXJzZXIsIENGWE1MTm9k
ZVJlZiBub2RlRGVzYywgdm9pZCAqaW5mbyk7CnR5cGVkZWYgdm9pZCAoKkNGWE1MUGFyc2VyQWRk
Q2hpbGRDYWxsQmFjaykoQ0ZYTUxQYXJzZXJSZWYgcGFyc2VyLCB2b2lkICpwYXJlbnQsIHZvaWQg
KmNoaWxkLCB2b2lkICppbmZvKTsKdHlwZWRlZiB2b2lkICgqQ0ZYTUxQYXJzZXJFbmRYTUxTdHJ1
Y3R1cmVDYWxsQmFjaykoQ0ZYTUxQYXJzZXJSZWYgcGFyc2VyLCB2b2lkICp4bWxUeXBlLCB2b2lk
ICppbmZvKTsKdHlwZWRlZiBDRkRhdGFSZWYgKCpDRlhNTFBhcnNlclJlc29sdmVFeHRlcm5hbEVu
dGl0eUNhbGxCYWNrKShDRlhNTFBhcnNlclJlZiBwYXJzZXIsIENGWE1MRXh0ZXJuYWxJRCAqZXh0
SUQsIHZvaWQgKmluZm8pOwp0eXBlZGVmIEJvb2xlYW4gKCpDRlhNTFBhcnNlckhhbmRsZUVycm9y
Q2FsbEJhY2spKENGWE1MUGFyc2VyUmVmIHBhcnNlciwgQ0ZYTUxQYXJzZXJTdGF0dXNDb2RlIGVy
cm9yLCB2b2lkICppbmZvKTsKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0ZJbmRleCB2ZXJzaW9uOwog
ICAgQ0ZYTUxQYXJzZXJDcmVhdGVYTUxTdHJ1Y3R1cmVDYWxsQmFjayBjcmVhdGVYTUxTdHJ1Y3R1
cmU7CiAgICBDRlhNTFBhcnNlckFkZENoaWxkQ2FsbEJhY2sgYWRkQ2hpbGQ7CiAgICBDRlhNTFBh
cnNlckVuZFhNTFN0cnVjdHVyZUNhbGxCYWNrIGVuZFhNTFN0cnVjdHVyZTsKICAgIENGWE1MUGFy
c2VyUmVzb2x2ZUV4dGVybmFsRW50aXR5Q2FsbEJhY2sgcmVzb2x2ZUV4dGVybmFsRW50aXR5Owog
ICAgQ0ZYTUxQYXJzZXJIYW5kbGVFcnJvckNhbGxCYWNrIGhhbmRsZUVycm9yOwp9IENGWE1MUGFy
c2VyQ2FsbEJhY2tzOwoKdHlwZWRlZiBjb25zdCB2b2lkICogKCpDRlhNTFBhcnNlclJldGFpbkNh
bGxCYWNrKShjb25zdCB2b2lkICppbmZvKTsKdHlwZWRlZiB2b2lkICgqQ0ZYTUxQYXJzZXJSZWxl
YXNlQ2FsbEJhY2spKGNvbnN0IHZvaWQgKmluZm8pOwp0eXBlZGVmIENGU3RyaW5nUmVmICgqQ0ZY
TUxQYXJzZXJDb3B5RGVzY3JpcHRpb25DYWxsQmFjaykoY29uc3Qgdm9pZCAqaW5mbyk7CnR5cGVk
ZWYgc3RydWN0IHsKICAgIENGSW5kZXggdmVyc2lvbjsKICAgIHZvaWQgKiBpbmZvOwogICAgQ0ZY
TUxQYXJzZXJSZXRhaW5DYWxsQmFjayByZXRhaW47CiAgICBDRlhNTFBhcnNlclJlbGVhc2VDYWxs
QmFjayByZWxlYXNlOwogICAgQ0ZYTUxQYXJzZXJDb3B5RGVzY3JpcHRpb25DYWxsQmFjayBjb3B5
RGVzY3JpcHRpb247Cn0gQ0ZYTUxQYXJzZXJDb250ZXh0OwoKZXh0ZXJuCkNGVHlwZUlEIENGWE1M
UGFyc2VyR2V0VHlwZUlEKHZvaWQpOwojIDE2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZYTUxQYXJzZXIuaCIgMwpleHRlcm4K
Q0ZYTUxQYXJzZXJSZWYgQ0ZYTUxQYXJzZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9y
LCBDRkRhdGFSZWYgeG1sRGF0YSwgQ0ZVUkxSZWYgZGF0YVNvdXJjZSwgQ0ZPcHRpb25GbGFncyBw
YXJzZU9wdGlvbnMsIENGSW5kZXggdmVyc2lvbk9mTm9kZXMsIENGWE1MUGFyc2VyQ2FsbEJhY2tz
ICpjYWxsQmFja3MsIENGWE1MUGFyc2VyQ29udGV4dCAqY29udGV4dCk7CgoKCmV4dGVybgpDRlhN
TFBhcnNlclJlZiBDRlhNTFBhcnNlckNyZWF0ZVdpdGhEYXRhRnJvbVVSTChDRkFsbG9jYXRvclJl
ZiBhbGxvY2F0b3IsIENGVVJMUmVmIGRhdGFTb3VyY2UsIENGT3B0aW9uRmxhZ3MgcGFyc2VPcHRp
b25zLCBDRkluZGV4IHZlcnNpb25PZk5vZGVzLCBDRlhNTFBhcnNlckNhbGxCYWNrcyAqY2FsbEJh
Y2tzLCBDRlhNTFBhcnNlckNvbnRleHQgKmNvbnRleHQpOwoKZXh0ZXJuCnZvaWQgQ0ZYTUxQYXJz
ZXJHZXRDb250ZXh0KENGWE1MUGFyc2VyUmVmIHBhcnNlciwgQ0ZYTUxQYXJzZXJDb250ZXh0ICpj
b250ZXh0KTsKCmV4dGVybgp2b2lkIENGWE1MUGFyc2VyR2V0Q2FsbEJhY2tzKENGWE1MUGFyc2Vy
UmVmIHBhcnNlciwgQ0ZYTUxQYXJzZXJDYWxsQmFja3MgKmNhbGxCYWNrcyk7CgpleHRlcm4KQ0ZV
UkxSZWYgQ0ZYTUxQYXJzZXJHZXRTb3VyY2VVUkwoQ0ZYTUxQYXJzZXJSZWYgcGFyc2VyKTsKCgpl
eHRlcm4KQ0ZJbmRleCBDRlhNTFBhcnNlckdldExvY2F0aW9uKENGWE1MUGFyc2VyUmVmIHBhcnNl
cik7CgoKZXh0ZXJuCkNGSW5kZXggQ0ZYTUxQYXJzZXJHZXRMaW5lTnVtYmVyKENGWE1MUGFyc2Vy
UmVmIHBhcnNlcik7CgoKZXh0ZXJuCnZvaWQgKkNGWE1MUGFyc2VyR2V0RG9jdW1lbnQoQ0ZYTUxQ
YXJzZXJSZWYgcGFyc2VyKTsKCgoKCmV4dGVybgpDRlhNTFBhcnNlclN0YXR1c0NvZGUgQ0ZYTUxQ
YXJzZXJHZXRTdGF0dXNDb2RlKENGWE1MUGFyc2VyUmVmIHBhcnNlcik7CgpleHRlcm4KQ0ZTdHJp
bmdSZWYgQ0ZYTUxQYXJzZXJDb3B5RXJyb3JEZXNjcmlwdGlvbihDRlhNTFBhcnNlclJlZiBwYXJz
ZXIpOwoKCgoKZXh0ZXJuCnZvaWQgQ0ZYTUxQYXJzZXJBYm9ydChDRlhNTFBhcnNlclJlZiBwYXJz
ZXIsIENGWE1MUGFyc2VyU3RhdHVzQ29kZSBlcnJvckNvZGUsIENGU3RyaW5nUmVmIGVycm9yRGVz
Y3JpcHRpb24pOwoKCgoKCgpleHRlcm4KQm9vbGVhbiBDRlhNTFBhcnNlclBhcnNlKENGWE1MUGFy
c2VyUmVmIHBhcnNlcik7CgoKCgoKCgpleHRlcm4KQ0ZYTUxUcmVlUmVmIENGWE1MVHJlZUNyZWF0
ZUZyb21EYXRhKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZEYXRhUmVmIHhtbERhdGEsIENG
VVJMUmVmIGRhdGFTb3VyY2UsIENGT3B0aW9uRmxhZ3MgcGFyc2VPcHRpb25zLCBDRkluZGV4IHZl
cnNpb25PZk5vZGVzKTsKCgoKCmV4dGVybgpDRlhNTFRyZWVSZWYgQ0ZYTUxUcmVlQ3JlYXRlRnJv
bURhdGFXaXRoRXJyb3IoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkRhdGFSZWYgeG1sRGF0
YSwgQ0ZVUkxSZWYgZGF0YVNvdXJjZSwgQ0ZPcHRpb25GbGFncyBwYXJzZU9wdGlvbnMsIENGSW5k
ZXggdmVyc2lvbk9mTm9kZXMsIENGRGljdGlvbmFyeVJlZiAqZXJyb3JEaWN0KSA7CgoKZXh0ZXJu
CkNGWE1MVHJlZVJlZiBDRlhNTFRyZWVDcmVhdGVXaXRoRGF0YUZyb21VUkwoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBDRlVSTFJlZiBkYXRhU291cmNlLCBDRk9wdGlvbkZsYWdzIHBhcnNlT3B0
aW9ucywgQ0ZJbmRleCB2ZXJzaW9uT2ZOb2Rlcyk7CgoKCgoKCmV4dGVybgpDRkRhdGFSZWYgQ0ZY
TUxUcmVlQ3JlYXRlWE1MRGF0YShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGWE1MVHJlZVJl
ZiB4bWxUcmVlKTsKCgoKCgoKCmV4dGVybgpDRlN0cmluZ1JlZiBDRlhNTENyZWF0ZVN0cmluZ0J5
RXNjYXBpbmdFbnRpdGllcyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIHN0
cmluZywgQ0ZEaWN0aW9uYXJ5UmVmIGVudGl0aWVzRGljdGlvbmFyeSkgOwoKZXh0ZXJuCkNGU3Ry
aW5nUmVmIENGWE1MQ3JlYXRlU3RyaW5nQnlVbmVzY2FwaW5nRW50aXRpZXMoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBzdHJpbmcsIENGRGljdGlvbmFyeVJlZiBlbnRpdGll
c0RpY3Rpb25hcnkpIDsKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGWE1MVHJlZUVycm9y
RGVzY3JpcHRpb24gOwoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZYTUxUcmVlRXJyb3JM
aW5lTnVtYmVyIDsKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGWE1MVHJlZUVycm9yTG9j
YXRpb24gOwoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZYTUxUcmVlRXJyb3JTdGF0dXND
b2RlIDsKCgp9CiMgODggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL0NvcmVGb3VuZGF0aW9uLmgiIDIgMwoKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlN0cmlu
Z1Rva2VuaXplci5oIiAxIDMKIyAyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTdHJpbmdUb2tlbml6ZXIuaCIgMwojZGVmaW5l
IF9fQ09SRUZPVU5EQVRJT05fQ0ZTVFJJTkdUT0tFTklaRVJfXyAxCgoKCgoKZXh0ZXJuICJDIiB7
CiMgNTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0NGU3RyaW5nVG9rZW5pemVyLmgiIDMKZXh0ZXJuCkNGU3RyaW5nUmVmIENGU3Ry
aW5nVG9rZW5pemVyQ29weUJlc3RTdHJpbmdMYW5ndWFnZShDRlN0cmluZ1JlZiBzdHJpbmcsIENG
UmFuZ2UgcmFuZ2UpIDsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9fQ0ZTdHJpbmdUb2tlbml6ZXIg
KiBDRlN0cmluZ1Rva2VuaXplclJlZjsKCgoKCmVudW0gewoKCgoKCgoKICAgIGtDRlN0cmluZ1Rv
a2VuaXplclVuaXRXb3JkID0gMCwKICAgIGtDRlN0cmluZ1Rva2VuaXplclVuaXRTZW50ZW5jZSA9
IDEsCiAgICBrQ0ZTdHJpbmdUb2tlbml6ZXJVbml0UGFyYWdyYXBoID0gMiwKICAgIGtDRlN0cmlu
Z1Rva2VuaXplclVuaXRMaW5lQnJlYWsgPSAzLAoKCgoKICAgIGtDRlN0cmluZ1Rva2VuaXplclVu
aXRXb3JkQm91bmRhcnkgPSA0LAojIDkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlN0cmluZ1Rva2VuaXplci5oIiAzCiAgICBr
Q0ZTdHJpbmdUb2tlbml6ZXJBdHRyaWJ1dGVMYXRpblRyYW5zY3JpcHRpb24gPSAxVUwgPDwgMTYs
CgoKICAgIGtDRlN0cmluZ1Rva2VuaXplckF0dHJpYnV0ZUxhbmd1YWdlID0gMVVMIDw8IDE3Cn07
CgoKCgoKCmVudW0gewoKICAgIGtDRlN0cmluZ1Rva2VuaXplclRva2VuTm9uZSA9IDAsCgoKICAg
IGtDRlN0cmluZ1Rva2VuaXplclRva2VuTm9ybWFsID0gMVVMIDw8IDAsCgoKCgoKICAgIGtDRlN0
cmluZ1Rva2VuaXplclRva2VuSGFzU3ViVG9rZW5zTWFzayA9IDFVTCA8PCAxLAoKCgoKCgogICAg
a0NGU3RyaW5nVG9rZW5pemVyVG9rZW5IYXNEZXJpdmVkU3ViVG9rZW5zTWFzayA9IDFVTCA8PCAy
LAoKICAgIGtDRlN0cmluZ1Rva2VuaXplclRva2VuSGFzSGFzTnVtYmVyc01hc2sgPSAxVUwgPDwg
MywKICAgIGtDRlN0cmluZ1Rva2VuaXplclRva2VuSGFzTm9uTGV0dGVyc01hc2sgPSAxVUwgPDwg
NCwKICAgIGtDRlN0cmluZ1Rva2VuaXplclRva2VuSXNDSldvcmRNYXNrID0gMVVMIDw8IDUKfTsK
dHlwZWRlZiBDRk9wdGlvbkZsYWdzIENGU3RyaW5nVG9rZW5pemVyVG9rZW5UeXBlOwoKCgoKCgpl
eHRlcm4KQ0ZUeXBlSUQgQ0ZTdHJpbmdUb2tlbml6ZXJHZXRUeXBlSUQodm9pZCkgOwojIDE1NiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZTdHJpbmdUb2tlbml6ZXIuaCIgMwpleHRlcm4KQ0ZTdHJpbmdUb2tlbml6ZXJSZWYgQ0ZT
dHJpbmdUb2tlbml6ZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGU3RyaW5nUmVmIHN0
cmluZywgQ0ZSYW5nZSByYW5nZSwgQ0ZPcHRpb25GbGFncyBvcHRpb25zLCBDRkxvY2FsZVJlZiBs
b2NhbGUpIDsKIyAxNjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL0NGU3RyaW5nVG9rZW5pemVyLmgiIDMKZXh0ZXJuCnZvaWQgQ0ZT
dHJpbmdUb2tlbml6ZXJTZXRTdHJpbmcoQ0ZTdHJpbmdUb2tlbml6ZXJSZWYgdG9rZW5pemVyLCBD
RlN0cmluZ1JlZiBzdHJpbmcsIENGUmFuZ2UgcmFuZ2UpIDsKIyAxODYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU3RyaW5nVG9r
ZW5pemVyLmgiIDMKZXh0ZXJuCkNGU3RyaW5nVG9rZW5pemVyVG9rZW5UeXBlIENGU3RyaW5nVG9r
ZW5pemVyR29Ub1Rva2VuQXRJbmRleChDRlN0cmluZ1Rva2VuaXplclJlZiB0b2tlbml6ZXIsIENG
SW5kZXggaW5kZXgpIDsKIyAyMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0NGU3RyaW5nVG9rZW5pemVyLmgiIDMKZXh0ZXJuCkNG
U3RyaW5nVG9rZW5pemVyVG9rZW5UeXBlIENGU3RyaW5nVG9rZW5pemVyQWR2YW5jZVRvTmV4dFRv
a2VuKENGU3RyaW5nVG9rZW5pemVyUmVmIHRva2VuaXplcikgOwojIDIyMCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTdHJpbmdU
b2tlbml6ZXIuaCIgMwpleHRlcm4KQ0ZSYW5nZSBDRlN0cmluZ1Rva2VuaXplckdldEN1cnJlbnRU
b2tlblJhbmdlKENGU3RyaW5nVG9rZW5pemVyUmVmIHRva2VuaXplcikgOwojIDIzNCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvQ0ZT
dHJpbmdUb2tlbml6ZXIuaCIgMwpleHRlcm4KQ0ZUeXBlUmVmIENGU3RyaW5nVG9rZW5pemVyQ29w
eUN1cnJlbnRUb2tlbkF0dHJpYnV0ZShDRlN0cmluZ1Rva2VuaXplclJlZiB0b2tlbml6ZXIsIENG
T3B0aW9uRmxhZ3MgYXR0cmlidXRlKSA7CiMgMjYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9DRlN0cmluZ1Rva2VuaXplci5oIiAz
CmV4dGVybgpDRkluZGV4IENGU3RyaW5nVG9rZW5pemVyR2V0Q3VycmVudFN1YlRva2VucyhDRlN0
cmluZ1Rva2VuaXplclJlZiB0b2tlbml6ZXIsIENGUmFuZ2UgKnJhbmdlcywgQ0ZJbmRleCBtYXhS
YW5nZUxlbmd0aCwgQ0ZNdXRhYmxlQXJyYXlSZWYgZGVyaXZlZFN1YlRva2VucykgOwoKfQojIDkw
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9Db3JlRm91bmRhdGlvbi5oIiAyIDMKIyA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCgoKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9O
U0FycmF5LmgiIDEgMwoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0VudW1lcmF0b3IuaCIgMSAzCgoKCgoKCkBjbGFzcyBO
U0FycmF5OwojIDE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL05TRW51bWVyYXRvci5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2ln
bmVkIGxvbmcgc3RhdGU7CiAgICBpZCAqaXRlbXNQdHI7CiAgICB1bnNpZ25lZCBsb25nICptdXRh
dGlvbnNQdHI7CiAgICB1bnNpZ25lZCBsb25nIGV4dHJhWzVdOwp9IE5TRmFzdEVudW1lcmF0aW9u
U3RhdGU7CgpAcHJvdG9jb2wgTlNGYXN0RW51bWVyYXRpb24KCi0gKE5TVUludGVnZXIpY291bnRC
eUVudW1lcmF0aW5nV2l0aFN0YXRlOihOU0Zhc3RFbnVtZXJhdGlvblN0YXRlICopc3RhdGUgb2Jq
ZWN0czooaWQgKilzdGFja2J1ZiBjb3VudDooTlNVSW50ZWdlcilsZW47CgpAZW5kCgpAaW50ZXJm
YWNlIE5TRW51bWVyYXRvciA6IE5TT2JqZWN0IDxOU0Zhc3RFbnVtZXJhdGlvbj4KCi0gKGlkKW5l
eHRPYmplY3Q7CgpAZW5kCgpAaW50ZXJmYWNlIE5TRW51bWVyYXRvciAoTlNFeHRlbmRlZEVudW1l
cmF0b3IpCgotIChOU0FycmF5ICopYWxsT2JqZWN0czsKCkBlbmQKIyA3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TQXJyYXkuaCIgMiAz
CgoKCkBjbGFzcyBOU0RhdGEsIE5TSW5kZXhTZXQsIE5TU3RyaW5nLCBOU1VSTDsKCgoKQGludGVy
ZmFjZSBOU0FycmF5IDogTlNPYmplY3QgPE5TQ29weWluZywgTlNNdXRhYmxlQ29weWluZywgTlND
b2RpbmcsIE5TRmFzdEVudW1lcmF0aW9uPgoKLSAoTlNVSW50ZWdlciljb3VudDsKLSAoaWQpb2Jq
ZWN0QXRJbmRleDooTlNVSW50ZWdlcilpbmRleDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNBcnJheSAo
TlNFeHRlbmRlZEFycmF5KQoKLSAoTlNBcnJheSAqKWFycmF5QnlBZGRpbmdPYmplY3Q6KGlkKWFu
T2JqZWN0OwotIChOU0FycmF5ICopYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6KE5TQXJy
YXkgKilvdGhlckFycmF5OwotIChOU1N0cmluZyAqKWNvbXBvbmVudHNKb2luZWRCeVN0cmluZzoo
TlNTdHJpbmcgKilzZXBhcmF0b3I7Ci0gKEJPT0wpY29udGFpbnNPYmplY3Q6KGlkKWFuT2JqZWN0
OwotIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uOwotIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uV2l0
aExvY2FsZTooaWQpbG9jYWxlOwotIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uV2l0aExvY2FsZToo
aWQpbG9jYWxlIGluZGVudDooTlNVSW50ZWdlcilsZXZlbDsKLSAoaWQpZmlyc3RPYmplY3RDb21t
b25XaXRoQXJyYXk6KE5TQXJyYXkgKilvdGhlckFycmF5OwotICh2b2lkKWdldE9iamVjdHM6KGlk
ICopb2JqZWN0cyByYW5nZTooTlNSYW5nZSlyYW5nZTsKLSAoTlNVSW50ZWdlcilpbmRleE9mT2Jq
ZWN0OihpZClhbk9iamVjdDsKLSAoTlNVSW50ZWdlcilpbmRleE9mT2JqZWN0OihpZClhbk9iamVj
dCBpblJhbmdlOihOU1JhbmdlKXJhbmdlOwotIChOU1VJbnRlZ2VyKWluZGV4T2ZPYmplY3RJZGVu
dGljYWxUbzooaWQpYW5PYmplY3Q7Ci0gKE5TVUludGVnZXIpaW5kZXhPZk9iamVjdElkZW50aWNh
bFRvOihpZClhbk9iamVjdCBpblJhbmdlOihOU1JhbmdlKXJhbmdlOwotIChCT09MKWlzRXF1YWxU
b0FycmF5OihOU0FycmF5ICopb3RoZXJBcnJheTsKLSAoaWQpbGFzdE9iamVjdDsKLSAoTlNFbnVt
ZXJhdG9yICopb2JqZWN0RW51bWVyYXRvcjsKLSAoTlNFbnVtZXJhdG9yICopcmV2ZXJzZU9iamVj
dEVudW1lcmF0b3I7Ci0gKE5TRGF0YSAqKXNvcnRlZEFycmF5SGludDsKLSAoTlNBcnJheSAqKXNv
cnRlZEFycmF5VXNpbmdGdW5jdGlvbjooTlNJbnRlZ2VyICgqKShpZCwgaWQsIHZvaWQgKikpY29t
cGFyYXRvciBjb250ZXh0Oih2b2lkICopY29udGV4dDsKLSAoTlNBcnJheSAqKXNvcnRlZEFycmF5
VXNpbmdGdW5jdGlvbjooTlNJbnRlZ2VyICgqKShpZCwgaWQsIHZvaWQgKikpY29tcGFyYXRvciBj
b250ZXh0Oih2b2lkICopY29udGV4dCBoaW50OihOU0RhdGEgKiloaW50OwotIChOU0FycmF5ICop
c29ydGVkQXJyYXlVc2luZ1NlbGVjdG9yOihTRUwpY29tcGFyYXRvcjsKLSAoTlNBcnJheSAqKXN1
YmFycmF5V2l0aFJhbmdlOihOU1JhbmdlKXJhbmdlOwotIChCT09MKXdyaXRlVG9GaWxlOihOU1N0
cmluZyAqKXBhdGggYXRvbWljYWxseTooQk9PTCl1c2VBdXhpbGlhcnlGaWxlOwotIChCT09MKXdy
aXRlVG9VUkw6KE5TVVJMICopdXJsIGF0b21pY2FsbHk6KEJPT0wpYXRvbWljYWxseTsKCi0gKHZv
aWQpbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6KFNFTClhU2VsZWN0b3I7Ci0gKHZvaWQpbWFr
ZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6KFNFTClhU2VsZWN0b3Igd2l0aE9iamVjdDooaWQpYXJn
dW1lbnQ7CgotIChOU0FycmF5ICopb2JqZWN0c0F0SW5kZXhlczooTlNJbmRleFNldCAqKWluZGV4
ZXMgOwoKCi0gKHZvaWQpZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6KHZvaWQgKF4pKGlkIG9i
aiwgTlNVSW50ZWdlciBpZHgsIEJPT0wgKnN0b3ApKWJsb2NrIDsKLSAodm9pZCllbnVtZXJhdGVP
YmplY3RzV2l0aE9wdGlvbnM6KE5TRW51bWVyYXRpb25PcHRpb25zKW9wdHMgdXNpbmdCbG9jazoo
dm9pZCAoXikoaWQgb2JqLCBOU1VJbnRlZ2VyIGlkeCwgQk9PTCAqc3RvcCkpYmxvY2sgOwotICh2
b2lkKWVudW1lcmF0ZU9iamVjdHNBdEluZGV4ZXM6KE5TSW5kZXhTZXQgKilzIG9wdGlvbnM6KE5T
RW51bWVyYXRpb25PcHRpb25zKW9wdHMgdXNpbmdCbG9jazoodm9pZCAoXikoaWQgb2JqLCBOU1VJ
bnRlZ2VyIGlkeCwgQk9PTCAqc3RvcCkpYmxvY2sgOwoKLSAoTlNVSW50ZWdlcilpbmRleE9mT2Jq
ZWN0UGFzc2luZ1Rlc3Q6KEJPT0wgKF4pKGlkIG9iaiwgTlNVSW50ZWdlciBpZHgsIEJPT0wgKnN0
b3ApKXByZWRpY2F0ZSA7Ci0gKE5TVUludGVnZXIpaW5kZXhPZk9iamVjdFdpdGhPcHRpb25zOihO
U0VudW1lcmF0aW9uT3B0aW9ucylvcHRzIHBhc3NpbmdUZXN0OihCT09MICheKShpZCBvYmosIE5T
VUludGVnZXIgaWR4LCBCT09MICpzdG9wKSlwcmVkaWNhdGUgOwotIChOU1VJbnRlZ2VyKWluZGV4
T2ZPYmplY3RBdEluZGV4ZXM6KE5TSW5kZXhTZXQgKilzIG9wdGlvbnM6KE5TRW51bWVyYXRpb25P
cHRpb25zKW9wdHMgcGFzc2luZ1Rlc3Q6KEJPT0wgKF4pKGlkIG9iaiwgTlNVSW50ZWdlciBpZHgs
IEJPT0wgKnN0b3ApKXByZWRpY2F0ZSA7CgotIChOU0luZGV4U2V0ICopaW5kZXhlc09mT2JqZWN0
c1Bhc3NpbmdUZXN0OihCT09MICheKShpZCBvYmosIE5TVUludGVnZXIgaWR4LCBCT09MICpzdG9w
KSlwcmVkaWNhdGUgOwotIChOU0luZGV4U2V0ICopaW5kZXhlc09mT2JqZWN0c1dpdGhPcHRpb25z
OihOU0VudW1lcmF0aW9uT3B0aW9ucylvcHRzIHBhc3NpbmdUZXN0OihCT09MICheKShpZCBvYmos
IE5TVUludGVnZXIgaWR4LCBCT09MICpzdG9wKSlwcmVkaWNhdGUgOwotIChOU0luZGV4U2V0ICop
aW5kZXhlc09mT2JqZWN0c0F0SW5kZXhlczooTlNJbmRleFNldCAqKXMgb3B0aW9uczooTlNFbnVt
ZXJhdGlvbk9wdGlvbnMpb3B0cyBwYXNzaW5nVGVzdDooQk9PTCAoXikoaWQgb2JqLCBOU1VJbnRl
Z2VyIGlkeCwgQk9PTCAqc3RvcCkpcHJlZGljYXRlIDsKCi0gKE5TQXJyYXkgKilzb3J0ZWRBcnJh
eVVzaW5nQ29tcGFyYXRvcjooTlNDb21wYXJhdG9yKWNtcHRyIDsKLSAoTlNBcnJheSAqKXNvcnRl
ZEFycmF5V2l0aE9wdGlvbnM6KE5TU29ydE9wdGlvbnMpb3B0cyB1c2luZ0NvbXBhcmF0b3I6KE5T
Q29tcGFyYXRvciljbXB0ciA7CgplbnVtIHsKIE5TQmluYXJ5U2VhcmNoaW5nRmlyc3RFcXVhbCA9
ICgxVUwgPDwgOCksCiBOU0JpbmFyeVNlYXJjaGluZ0xhc3RFcXVhbCA9ICgxVUwgPDwgOSksCiBO
U0JpbmFyeVNlYXJjaGluZ0luc2VydGlvbkluZGV4ID0gKDFVTCA8PCAxMCksCn07CnR5cGVkZWYg
TlNVSW50ZWdlciBOU0JpbmFyeVNlYXJjaGluZ09wdGlvbnM7CgotIChOU1VJbnRlZ2VyKWluZGV4
T2ZPYmplY3Q6KGlkKW9iaiBpblNvcnRlZFJhbmdlOihOU1JhbmdlKXIgb3B0aW9uczooTlNCaW5h
cnlTZWFyY2hpbmdPcHRpb25zKW9wdHMgdXNpbmdDb21wYXJhdG9yOihOU0NvbXBhcmF0b3IpY21w
IDsKCgoKQGVuZAoKQGludGVyZmFjZSBOU0FycmF5IChOU0FycmF5Q3JlYXRpb24pCgorIChpZClh
cnJheTsKKyAoaWQpYXJyYXlXaXRoT2JqZWN0OihpZClhbk9iamVjdDsKKyAoaWQpYXJyYXlXaXRo
T2JqZWN0czooY29uc3QgaWQgKilvYmplY3RzIGNvdW50OihOU1VJbnRlZ2VyKWNudDsKKyAoaWQp
YXJyYXlXaXRoT2JqZWN0czooaWQpZmlyc3RPYmosIC4uLiBfX2F0dHJpYnV0ZV9fKChzZW50aW5l
bCgwLDEpKSk7CisgKGlkKWFycmF5V2l0aEFycmF5OihOU0FycmF5ICopYXJyYXk7CgotIChpZClp
bml0V2l0aE9iamVjdHM6KGNvbnN0IGlkICopb2JqZWN0cyBjb3VudDooTlNVSW50ZWdlciljbnQ7
Ci0gKGlkKWluaXRXaXRoT2JqZWN0czooaWQpZmlyc3RPYmosIC4uLiBfX2F0dHJpYnV0ZV9fKChz
ZW50aW5lbCgwLDEpKSk7Ci0gKGlkKWluaXRXaXRoQXJyYXk6KE5TQXJyYXkgKilhcnJheTsKLSAo
aWQpaW5pdFdpdGhBcnJheTooTlNBcnJheSAqKWFycmF5IGNvcHlJdGVtczooQk9PTClmbGFnIDsK
CisgKGlkKWFycmF5V2l0aENvbnRlbnRzT2ZGaWxlOihOU1N0cmluZyAqKXBhdGg7CisgKGlkKWFy
cmF5V2l0aENvbnRlbnRzT2ZVUkw6KE5TVVJMICopdXJsOwotIChpZClpbml0V2l0aENvbnRlbnRz
T2ZGaWxlOihOU1N0cmluZyAqKXBhdGg7Ci0gKGlkKWluaXRXaXRoQ29udGVudHNPZlVSTDooTlNV
UkwgKil1cmw7CgpAZW5kCgpAaW50ZXJmYWNlIE5TQXJyYXkgKE5TRGVwcmVjYXRlZCkKCgoKLSAo
dm9pZClnZXRPYmplY3RzOihpZCAqKW9iamVjdHM7CgpAZW5kCgoKCkBpbnRlcmZhY2UgTlNNdXRh
YmxlQXJyYXkgOiBOU0FycmF5CgotICh2b2lkKWFkZE9iamVjdDooaWQpYW5PYmplY3Q7Ci0gKHZv
aWQpaW5zZXJ0T2JqZWN0OihpZClhbk9iamVjdCBhdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4Owot
ICh2b2lkKXJlbW92ZUxhc3RPYmplY3Q7Ci0gKHZvaWQpcmVtb3ZlT2JqZWN0QXRJbmRleDooTlNV
SW50ZWdlcilpbmRleDsKLSAodm9pZClyZXBsYWNlT2JqZWN0QXRJbmRleDooTlNVSW50ZWdlcilp
bmRleCB3aXRoT2JqZWN0OihpZClhbk9iamVjdDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNNdXRhYmxl
QXJyYXkgKE5TRXh0ZW5kZWRNdXRhYmxlQXJyYXkpCgotICh2b2lkKWFkZE9iamVjdHNGcm9tQXJy
YXk6KE5TQXJyYXkgKilvdGhlckFycmF5OwotICh2b2lkKWV4Y2hhbmdlT2JqZWN0QXRJbmRleDoo
TlNVSW50ZWdlcilpZHgxIHdpdGhPYmplY3RBdEluZGV4OihOU1VJbnRlZ2VyKWlkeDI7Ci0gKHZv
aWQpcmVtb3ZlQWxsT2JqZWN0czsKLSAodm9pZClyZW1vdmVPYmplY3Q6KGlkKWFuT2JqZWN0IGlu
UmFuZ2U6KE5TUmFuZ2UpcmFuZ2U7Ci0gKHZvaWQpcmVtb3ZlT2JqZWN0OihpZClhbk9iamVjdDsK
LSAodm9pZClyZW1vdmVPYmplY3RJZGVudGljYWxUbzooaWQpYW5PYmplY3QgaW5SYW5nZTooTlNS
YW5nZSlyYW5nZTsKLSAodm9pZClyZW1vdmVPYmplY3RJZGVudGljYWxUbzooaWQpYW5PYmplY3Q7
Ci0gKHZvaWQpcmVtb3ZlT2JqZWN0c0Zyb21JbmRpY2VzOihOU1VJbnRlZ2VyICopaW5kaWNlcyBu
dW1JbmRpY2VzOihOU1VJbnRlZ2VyKWNudCBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0g
KHZvaWQpcmVtb3ZlT2JqZWN0c0luQXJyYXk6KE5TQXJyYXkgKilvdGhlckFycmF5OwotICh2b2lk
KXJlbW92ZU9iamVjdHNJblJhbmdlOihOU1JhbmdlKXJhbmdlOwotICh2b2lkKXJlcGxhY2VPYmpl
Y3RzSW5SYW5nZTooTlNSYW5nZSlyYW5nZSB3aXRoT2JqZWN0c0Zyb21BcnJheTooTlNBcnJheSAq
KW90aGVyQXJyYXkgcmFuZ2U6KE5TUmFuZ2Upb3RoZXJSYW5nZTsKLSAodm9pZClyZXBsYWNlT2Jq
ZWN0c0luUmFuZ2U6KE5TUmFuZ2UpcmFuZ2Ugd2l0aE9iamVjdHNGcm9tQXJyYXk6KE5TQXJyYXkg
KilvdGhlckFycmF5OwotICh2b2lkKXNldEFycmF5OihOU0FycmF5ICopb3RoZXJBcnJheTsKLSAo
dm9pZClzb3J0VXNpbmdGdW5jdGlvbjooTlNJbnRlZ2VyICgqKShpZCwgaWQsIHZvaWQgKikpY29t
cGFyZSBjb250ZXh0Oih2b2lkICopY29udGV4dDsKLSAodm9pZClzb3J0VXNpbmdTZWxlY3Rvcjoo
U0VMKWNvbXBhcmF0b3I7CgotICh2b2lkKWluc2VydE9iamVjdHM6KE5TQXJyYXkgKilvYmplY3Rz
IGF0SW5kZXhlczooTlNJbmRleFNldCAqKWluZGV4ZXMgOwotICh2b2lkKXJlbW92ZU9iamVjdHNB
dEluZGV4ZXM6KE5TSW5kZXhTZXQgKilpbmRleGVzIDsKLSAodm9pZClyZXBsYWNlT2JqZWN0c0F0
SW5kZXhlczooTlNJbmRleFNldCAqKWluZGV4ZXMgd2l0aE9iamVjdHM6KE5TQXJyYXkgKilvYmpl
Y3RzIDsKCgotICh2b2lkKXNvcnRVc2luZ0NvbXBhcmF0b3I6KE5TQ29tcGFyYXRvciljbXB0ciA7
Ci0gKHZvaWQpc29ydFdpdGhPcHRpb25zOihOU1NvcnRPcHRpb25zKW9wdHMgdXNpbmdDb21wYXJh
dG9yOihOU0NvbXBhcmF0b3IpY21wdHIgOwoKCkBlbmQKCkBpbnRlcmZhY2UgTlNNdXRhYmxlQXJy
YXkgKE5TTXV0YWJsZUFycmF5Q3JlYXRpb24pCgorIChpZClhcnJheVdpdGhDYXBhY2l0eTooTlNV
SW50ZWdlciludW1JdGVtczsKLSAoaWQpaW5pdFdpdGhDYXBhY2l0eTooTlNVSW50ZWdlciludW1J
dGVtczsKCkBlbmQKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNBdXRvcmVsZWFzZVBvb2wu
aCIgMSAzCgoKCgoKCkBpbnRlcmZhY2UgTlNBdXRvcmVsZWFzZVBvb2wgOiBOU09iamVjdCB7CkBw
cml2YXRlCiAgICB2b2lkICpfdG9rZW47CiAgICB2b2lkICpfcmVzZXJ2ZWQzOwogICAgdm9pZCAq
X3Jlc2VydmVkMjsKICAgIHZvaWQgKl9yZXNlcnZlZDsKfQoKKyAodm9pZClhZGRPYmplY3Q6KGlk
KWFuT2JqZWN0OwoKLSAodm9pZClhZGRPYmplY3Q6KGlkKWFuT2JqZWN0OwoKCi0gKHZvaWQpZHJh
aW47CgoKQGVuZAojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0J1bmRsZS5oIiAxIDMKCgoK
CgoKQGNsYXNzIE5TQXJyYXksIE5TRGljdGlvbmFyeSwgTlNTdHJpbmcsIE5TVVJMLCBOU0Vycm9y
OwoKCgpAaW50ZXJmYWNlIE5TQnVuZGxlIDogTlNPYmplY3QgewpAcHJpdmF0ZQogICAgTlNVSW50
ZWdlciBfZmxhZ3M7CiAgICBpZCBfY2ZCdW5kbGU7CiAgICBOU1VJbnRlZ2VyIF9yZWZDb3VudDsK
ICAgIENsYXNzIF9wcmluY2lwYWxDbGFzczsKICAgIGlkIF90bXAxOwogICAgaWQgX3RtcDI7CiAg
ICB2b2lkICpfcmVzZXJ2ZWQxOwogICAgdm9pZCAqX3Jlc2VydmVkMDsKfQoKCisgKE5TQnVuZGxl
ICopbWFpbkJ1bmRsZTsKKyAoTlNCdW5kbGUgKilidW5kbGVXaXRoUGF0aDooTlNTdHJpbmcgKilw
YXRoOwotIChpZClpbml0V2l0aFBhdGg6KE5TU3RyaW5nICopcGF0aDsKCisgKE5TQnVuZGxlICop
YnVuZGxlV2l0aFVSTDooTlNVUkwgKil1cmwgOwotIChpZClpbml0V2l0aFVSTDooTlNVUkwgKil1
cmwgOwoKKyAoTlNCdW5kbGUgKilidW5kbGVGb3JDbGFzczooQ2xhc3MpYUNsYXNzOworIChOU0J1
bmRsZSAqKWJ1bmRsZVdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXI7CgorIChO
U0FycmF5ICopYWxsQnVuZGxlczsKKyAoTlNBcnJheSAqKWFsbEZyYW1ld29ya3M7CgoKLSAoQk9P
TClsb2FkOwotIChCT09MKWlzTG9hZGVkIDsKLSAoQk9PTCl1bmxvYWQgOwoKLSAoQk9PTClwcmVm
bGlnaHRBbmRSZXR1cm5FcnJvcjooTlNFcnJvciAqKillcnJvciA7Ci0gKEJPT0wpbG9hZEFuZFJl
dHVybkVycm9yOihOU0Vycm9yICoqKWVycm9yIDsKCgotIChOU1VSTCAqKWJ1bmRsZVVSTCA7Ci0g
KE5TVVJMICopcmVzb3VyY2VVUkwgOwotIChOU1VSTCAqKWV4ZWN1dGFibGVVUkwgOwotIChOU1VS
TCAqKVVSTEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6KE5TU3RyaW5nICopZXhlY3V0YWJsZU5hbWUg
OwoKLSAoTlNVUkwgKilwcml2YXRlRnJhbWV3b3Jrc1VSTCA7Ci0gKE5TVVJMICopc2hhcmVkRnJh
bWV3b3Jrc1VSTCA7Ci0gKE5TVVJMICopc2hhcmVkU3VwcG9ydFVSTCA7Ci0gKE5TVVJMICopYnVp
bHRJblBsdWdJbnNVUkwgOwoKLSAoTlNTdHJpbmcgKilidW5kbGVQYXRoOwotIChOU1N0cmluZyAq
KXJlc291cmNlUGF0aDsKLSAoTlNTdHJpbmcgKilleGVjdXRhYmxlUGF0aDsKLSAoTlNTdHJpbmcg
KilwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTooTlNTdHJpbmcgKilleGVjdXRhYmxlTmFtZTsK
Ci0gKE5TU3RyaW5nICopcHJpdmF0ZUZyYW1ld29ya3NQYXRoOwotIChOU1N0cmluZyAqKXNoYXJl
ZEZyYW1ld29ya3NQYXRoOwotIChOU1N0cmluZyAqKXNoYXJlZFN1cHBvcnRQYXRoOwotIChOU1N0
cmluZyAqKWJ1aWx0SW5QbHVnSW5zUGF0aDsKCgoKKyAoTlNVUkwgKilVUkxGb3JSZXNvdXJjZToo
TlNTdHJpbmcgKiluYW1lIHdpdGhFeHRlbnNpb246KE5TU3RyaW5nICopZXh0IHN1YmRpcmVjdG9y
eTooTlNTdHJpbmcgKilzdWJwYXRoIGluQnVuZGxlV2l0aFVSTDooTlNVUkwgKilidW5kbGVVUkwg
OworIChOU0FycmF5ICopVVJMc0ZvclJlc291cmNlc1dpdGhFeHRlbnNpb246KE5TU3RyaW5nICop
ZXh0IHN1YmRpcmVjdG9yeTooTlNTdHJpbmcgKilzdWJwYXRoIGluQnVuZGxlV2l0aFVSTDooTlNV
UkwgKilidW5kbGVVUkwgOwoKLSAoTlNVUkwgKilVUkxGb3JSZXNvdXJjZTooTlNTdHJpbmcgKilu
YW1lIHdpdGhFeHRlbnNpb246KE5TU3RyaW5nICopZXh0IDsKLSAoTlNVUkwgKilVUkxGb3JSZXNv
dXJjZTooTlNTdHJpbmcgKiluYW1lIHdpdGhFeHRlbnNpb246KE5TU3RyaW5nICopZXh0IHN1YmRp
cmVjdG9yeTooTlNTdHJpbmcgKilzdWJwYXRoIDsKLSAoTlNVUkwgKilVUkxGb3JSZXNvdXJjZToo
TlNTdHJpbmcgKiluYW1lIHdpdGhFeHRlbnNpb246KE5TU3RyaW5nICopZXh0IHN1YmRpcmVjdG9y
eTooTlNTdHJpbmcgKilzdWJwYXRoIGxvY2FsaXphdGlvbjooTlNTdHJpbmcgKilsb2NhbGl6YXRp
b25OYW1lIDsKCi0gKE5TQXJyYXkgKilVUkxzRm9yUmVzb3VyY2VzV2l0aEV4dGVuc2lvbjooTlNT
dHJpbmcgKilleHQgc3ViZGlyZWN0b3J5OihOU1N0cmluZyAqKXN1YnBhdGggOwotIChOU0FycmF5
ICopVVJMc0ZvclJlc291cmNlc1dpdGhFeHRlbnNpb246KE5TU3RyaW5nICopZXh0IHN1YmRpcmVj
dG9yeTooTlNTdHJpbmcgKilzdWJwYXRoIGxvY2FsaXphdGlvbjooTlNTdHJpbmcgKilsb2NhbGl6
YXRpb25OYW1lIDsKCisgKE5TU3RyaW5nICopcGF0aEZvclJlc291cmNlOihOU1N0cmluZyAqKW5h
bWUgb2ZUeXBlOihOU1N0cmluZyAqKWV4dCBpbkRpcmVjdG9yeTooTlNTdHJpbmcgKilidW5kbGVQ
YXRoOworIChOU0FycmF5ICopcGF0aHNGb3JSZXNvdXJjZXNPZlR5cGU6KE5TU3RyaW5nICopZXh0
IGluRGlyZWN0b3J5OihOU1N0cmluZyAqKWJ1bmRsZVBhdGg7CgotIChOU1N0cmluZyAqKXBhdGhG
b3JSZXNvdXJjZTooTlNTdHJpbmcgKiluYW1lIG9mVHlwZTooTlNTdHJpbmcgKilleHQ7Ci0gKE5T
U3RyaW5nICopcGF0aEZvclJlc291cmNlOihOU1N0cmluZyAqKW5hbWUgb2ZUeXBlOihOU1N0cmlu
ZyAqKWV4dCBpbkRpcmVjdG9yeTooTlNTdHJpbmcgKilzdWJwYXRoOwotIChOU1N0cmluZyAqKXBh
dGhGb3JSZXNvdXJjZTooTlNTdHJpbmcgKiluYW1lIG9mVHlwZTooTlNTdHJpbmcgKilleHQgaW5E
aXJlY3Rvcnk6KE5TU3RyaW5nICopc3VicGF0aCBmb3JMb2NhbGl6YXRpb246KE5TU3RyaW5nICop
bG9jYWxpemF0aW9uTmFtZTsKCi0gKE5TQXJyYXkgKilwYXRoc0ZvclJlc291cmNlc09mVHlwZToo
TlNTdHJpbmcgKilleHQgaW5EaXJlY3Rvcnk6KE5TU3RyaW5nICopc3VicGF0aDsKLSAoTlNBcnJh
eSAqKXBhdGhzRm9yUmVzb3VyY2VzT2ZUeXBlOihOU1N0cmluZyAqKWV4dCBpbkRpcmVjdG9yeToo
TlNTdHJpbmcgKilzdWJwYXRoIGZvckxvY2FsaXphdGlvbjooTlNTdHJpbmcgKilsb2NhbGl6YXRp
b25OYW1lOwoKCi0gKE5TU3RyaW5nICopbG9jYWxpemVkU3RyaW5nRm9yS2V5OihOU1N0cmluZyAq
KWtleSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSB0YWJsZTooTlNTdHJpbmcgKil0YWJsZU5hbWU7
CgoKLSAoTlNTdHJpbmcgKilidW5kbGVJZGVudGlmaWVyOwotIChOU0RpY3Rpb25hcnkgKilpbmZv
RGljdGlvbmFyeTsKLSAoTlNEaWN0aW9uYXJ5ICopbG9jYWxpemVkSW5mb0RpY3Rpb25hcnkgOwot
IChpZClvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleTooTlNTdHJpbmcgKilrZXkgOwotIChDbGFz
cyljbGFzc05hbWVkOihOU1N0cmluZyAqKWNsYXNzTmFtZTsKLSAoQ2xhc3MpcHJpbmNpcGFsQ2xh
c3M7CgoKLSAoTlNBcnJheSAqKWxvY2FsaXphdGlvbnM7Ci0gKE5TQXJyYXkgKilwcmVmZXJyZWRM
b2NhbGl6YXRpb25zOwotIChOU1N0cmluZyAqKWRldmVsb3BtZW50TG9jYWxpemF0aW9uIDsKCisg
KE5TQXJyYXkgKilwcmVmZXJyZWRMb2NhbGl6YXRpb25zRnJvbUFycmF5OihOU0FycmF5ICopbG9j
YWxpemF0aW9uc0FycmF5OworIChOU0FycmF5ICopcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zyb21B
cnJheTooTlNBcnJheSAqKWxvY2FsaXphdGlvbnNBcnJheSBmb3JQcmVmZXJlbmNlczooTlNBcnJh
eSAqKXByZWZlcmVuY2VzQXJyYXkgOwoKCmVudW0gewogICAgTlNCdW5kbGVFeGVjdXRhYmxlQXJj
aGl0ZWN0dXJlSTM4NiA9IDB4MDAwMDAwMDcsCiAgICBOU0J1bmRsZUV4ZWN1dGFibGVBcmNoaXRl
Y3R1cmVQUEMgPSAweDAwMDAwMDEyLAogICAgTlNCdW5kbGVFeGVjdXRhYmxlQXJjaGl0ZWN0dXJl
WDg2XzY0ID0gMHgwMTAwMDAwNywKICAgIE5TQnVuZGxlRXhlY3V0YWJsZUFyY2hpdGVjdHVyZVBQ
QzY0ID0gMHgwMTAwMDAxMgp9OwoKLSAoTlNBcnJheSAqKWV4ZWN1dGFibGVBcmNoaXRlY3R1cmVz
IDsKCkBlbmQKCiNkZWZpbmUgTlNMb2NhbGl6ZWRTdHJpbmcoa2V5LGNvbW1lbnQpIFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gbG9jYWxpemVkU3RyaW5nRm9yS2V5OihrZXkpIHZhbHVlOkAiIiB0YWJs
ZTpuaWxdCgojZGVmaW5lIE5TTG9jYWxpemVkU3RyaW5nRnJvbVRhYmxlKGtleSx0YmwsY29tbWVu
dCkgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6KGtleSkgdmFs
dWU6QCIiIHRhYmxlOih0YmwpXQoKI2RlZmluZSBOU0xvY2FsaXplZFN0cmluZ0Zyb21UYWJsZUlu
QnVuZGxlKGtleSx0YmwsYnVuZGxlLGNvbW1lbnQpIFtidW5kbGUgbG9jYWxpemVkU3RyaW5nRm9y
S2V5OihrZXkpIHZhbHVlOkAiIiB0YWJsZToodGJsKV0KCiNkZWZpbmUgTlNMb2NhbGl6ZWRTdHJp
bmdXaXRoRGVmYXVsdFZhbHVlKGtleSx0YmwsYnVuZGxlLHZhbCxjb21tZW50KSBbYnVuZGxlIGxv
Y2FsaXplZFN0cmluZ0ZvcktleTooa2V5KSB2YWx1ZToodmFsKSB0YWJsZToodGJsKV0KCgpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNCdW5kbGVEaWRMb2FkTm90aWZpY2F0aW9uOwpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNMb2FkZWRDbGFzc2VzOwojIDEzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24u
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9OU0J5dGVPcmRlci5oIiAxIDMKCgoKCgoKCmVudW0gewogICAgTlNfVW5rbm93
bkJ5dGVPcmRlciA9IENGQnl0ZU9yZGVyVW5rbm93biwKICAgIE5TX0xpdHRsZUVuZGlhbiA9IENG
Qnl0ZU9yZGVyTGl0dGxlRW5kaWFuLAogICAgTlNfQmlnRW5kaWFuID0gQ0ZCeXRlT3JkZXJCaWdF
bmRpYW4KfTsKCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUp
KSBsb25nIE5TSG9zdEJ5dGVPcmRlcih2b2lkKSB7CiAgICByZXR1cm4gQ0ZCeXRlT3JkZXJHZXRD
dXJyZW50KCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxp
bmUpKSB1bnNpZ25lZCBzaG9ydCBOU1N3YXBTaG9ydCh1bnNpZ25lZCBzaG9ydCBpbnYpIHsKICAg
IHJldHVybiBDRlN3YXBJbnQxNihpbnYpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0
ZV9fKChhbHdheXNfaW5saW5lKSkgdW5zaWduZWQgaW50IE5TU3dhcEludCh1bnNpZ25lZCBpbnQg
aW52KSB7CiAgICByZXR1cm4gQ0ZTd2FwSW50MzIoaW52KTsKfQoKc3RhdGljIF9faW5saW5lX18g
X19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIHVuc2lnbmVkIGxvbmcgTlNTd2FwTG9uZyh1
bnNpZ25lZCBsb25nIGludikgewoKICAgIHJldHVybiBDRlN3YXBJbnQ2NChpbnYpOwoKCgp9Cgpz
dGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdW5zaWduZWQg
bG9uZyBsb25nIE5TU3dhcExvbmdMb25nKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnYpIHsKICAgIHJl
dHVybiBDRlN3YXBJbnQ2NChpbnYpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9f
KChhbHdheXNfaW5saW5lKSkgdW5zaWduZWQgc2hvcnQgTlNTd2FwQmlnU2hvcnRUb0hvc3QodW5z
aWduZWQgc2hvcnQgeCkgewogICAgcmV0dXJuIENGU3dhcEludDE2QmlnVG9Ib3N0KHgpOwp9Cgpz
dGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdW5zaWduZWQg
aW50IE5TU3dhcEJpZ0ludFRvSG9zdCh1bnNpZ25lZCBpbnQgeCkgewogICAgcmV0dXJuIENGU3dh
cEludDMyQmlnVG9Ib3N0KHgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChh
bHdheXNfaW5saW5lKSkgdW5zaWduZWQgbG9uZyBOU1N3YXBCaWdMb25nVG9Ib3N0KHVuc2lnbmVk
IGxvbmcgeCkgewoKICAgIHJldHVybiBDRlN3YXBJbnQ2NEJpZ1RvSG9zdCh4KTsKCgoKfQoKc3Rh
dGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIHVuc2lnbmVkIGxv
bmcgbG9uZyBOU1N3YXBCaWdMb25nTG9uZ1RvSG9zdCh1bnNpZ25lZCBsb25nIGxvbmcgeCkgewog
ICAgcmV0dXJuIENGU3dhcEludDY0QmlnVG9Ib3N0KHgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBf
X2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdW5zaWduZWQgc2hvcnQgTlNTd2FwSG9zdFNo
b3J0VG9CaWcodW5zaWduZWQgc2hvcnQgeCkgewogICAgcmV0dXJuIENGU3dhcEludDE2SG9zdFRv
QmlnKHgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5l
KSkgdW5zaWduZWQgaW50IE5TU3dhcEhvc3RJbnRUb0JpZyh1bnNpZ25lZCBpbnQgeCkgewogICAg
cmV0dXJuIENGU3dhcEludDMySG9zdFRvQmlnKHgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0
dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdW5zaWduZWQgbG9uZyBOU1N3YXBIb3N0TG9uZ1Rv
QmlnKHVuc2lnbmVkIGxvbmcgeCkgewoKICAgIHJldHVybiBDRlN3YXBJbnQ2NEhvc3RUb0JpZyh4
KTsKCgoKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkp
IHVuc2lnbmVkIGxvbmcgbG9uZyBOU1N3YXBIb3N0TG9uZ0xvbmdUb0JpZyh1bnNpZ25lZCBsb25n
IGxvbmcgeCkgewogICAgcmV0dXJuIENGU3dhcEludDY0SG9zdFRvQmlnKHgpOwp9CgpzdGF0aWMg
X19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdW5zaWduZWQgc2hvcnQg
TlNTd2FwTGl0dGxlU2hvcnRUb0hvc3QodW5zaWduZWQgc2hvcnQgeCkgewogICAgcmV0dXJuIENG
U3dhcEludDE2TGl0dGxlVG9Ib3N0KHgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0
ZV9fKChhbHdheXNfaW5saW5lKSkgdW5zaWduZWQgaW50IE5TU3dhcExpdHRsZUludFRvSG9zdCh1
bnNpZ25lZCBpbnQgeCkgewogICAgcmV0dXJuIENGU3dhcEludDMyTGl0dGxlVG9Ib3N0KHgpOwp9
CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdW5zaWdu
ZWQgbG9uZyBOU1N3YXBMaXR0bGVMb25nVG9Ib3N0KHVuc2lnbmVkIGxvbmcgeCkgewoKICAgIHJl
dHVybiBDRlN3YXBJbnQ2NExpdHRsZVRvSG9zdCh4KTsKCgoKfQoKc3RhdGljIF9faW5saW5lX18g
X19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIHVuc2lnbmVkIGxvbmcgbG9uZyBOU1N3YXBM
aXR0bGVMb25nTG9uZ1RvSG9zdCh1bnNpZ25lZCBsb25nIGxvbmcgeCkgewogICAgcmV0dXJuIENG
U3dhcEludDY0TGl0dGxlVG9Ib3N0KHgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0
ZV9fKChhbHdheXNfaW5saW5lKSkgdW5zaWduZWQgc2hvcnQgTlNTd2FwSG9zdFNob3J0VG9MaXR0
bGUodW5zaWduZWQgc2hvcnQgeCkgewogICAgcmV0dXJuIENGU3dhcEludDE2SG9zdFRvTGl0dGxl
KHgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkg
dW5zaWduZWQgaW50IE5TU3dhcEhvc3RJbnRUb0xpdHRsZSh1bnNpZ25lZCBpbnQgeCkgewogICAg
cmV0dXJuIENGU3dhcEludDMySG9zdFRvTGl0dGxlKHgpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBf
X2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdW5zaWduZWQgbG9uZyBOU1N3YXBIb3N0TG9u
Z1RvTGl0dGxlKHVuc2lnbmVkIGxvbmcgeCkgewoKICAgIHJldHVybiBDRlN3YXBJbnQ2NEhvc3RU
b0xpdHRsZSh4KTsKCgoKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlz
X2lubGluZSkpIHVuc2lnbmVkIGxvbmcgbG9uZyBOU1N3YXBIb3N0TG9uZ0xvbmdUb0xpdHRsZSh1
bnNpZ25lZCBsb25nIGxvbmcgeCkgewogICAgcmV0dXJuIENGU3dhcEludDY0SG9zdFRvTGl0dGxl
KHgpOwp9CgoKdHlwZWRlZiBzdHJ1Y3Qge3Vuc2lnbmVkIGludCB2O30gTlNTd2FwcGVkRmxvYXQ7
CnR5cGVkZWYgc3RydWN0IHt1bnNpZ25lZCBsb25nIGxvbmcgdjt9IE5TU3dhcHBlZERvdWJsZTsK
CnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBOU1N3YXBw
ZWRGbG9hdCBOU0NvbnZlcnRIb3N0RmxvYXRUb1N3YXBwZWQoZmxvYXQgeCkgewogICAgdW5pb24g
ZmNvbnYgewogZmxvYXQgbnVtYmVyOwogTlNTd2FwcGVkRmxvYXQgc2Y7CiAgICB9OwogICAgcmV0
dXJuICgodW5pb24gZmNvbnYgKikmeCktPnNmOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJp
YnV0ZV9fKChhbHdheXNfaW5saW5lKSkgZmxvYXQgTlNDb252ZXJ0U3dhcHBlZEZsb2F0VG9Ib3N0
KE5TU3dhcHBlZEZsb2F0IHgpIHsKICAgIHVuaW9uIGZjb252IHsKIGZsb2F0IG51bWJlcjsKIE5T
U3dhcHBlZEZsb2F0IHNmOwogICAgfTsKICAgIHJldHVybiAoKHVuaW9uIGZjb252ICopJngpLT5u
dW1iZXI7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUp
KSBOU1N3YXBwZWREb3VibGUgTlNDb252ZXJ0SG9zdERvdWJsZVRvU3dhcHBlZChkb3VibGUgeCkg
ewogICAgdW5pb24gZGNvbnYgewogZG91YmxlIG51bWJlcjsKIE5TU3dhcHBlZERvdWJsZSBzZDsK
ICAgIH07CiAgICByZXR1cm4gKCh1bmlvbiBkY29udiAqKSZ4KS0+c2Q7Cn0KCnN0YXRpYyBfX2lu
bGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBkb3VibGUgTlNDb252ZXJ0U3dh
cHBlZERvdWJsZVRvSG9zdChOU1N3YXBwZWREb3VibGUgeCkgewogICAgdW5pb24gZGNvbnYgewog
ZG91YmxlIG51bWJlcjsKIE5TU3dhcHBlZERvdWJsZSBzZDsKICAgIH07CiAgICByZXR1cm4gKCh1
bmlvbiBkY29udiAqKSZ4KS0+bnVtYmVyOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0
ZV9fKChhbHdheXNfaW5saW5lKSkgTlNTd2FwcGVkRmxvYXQgTlNTd2FwRmxvYXQoTlNTd2FwcGVk
RmxvYXQgeCkgewogICAgeC52ID0gTlNTd2FwSW50KHgudik7CiAgICByZXR1cm4geDsKfQoKc3Rh
dGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIE5TU3dhcHBlZERv
dWJsZSBOU1N3YXBEb3VibGUoTlNTd2FwcGVkRG91YmxlIHgpIHsKICAgIHgudiA9IE5TU3dhcExv
bmdMb25nKHgudik7CiAgICByZXR1cm4geDsKfQojIDIwMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0J5dGVPcmRlci5oIiAzCnN0YXRp
YyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBkb3VibGUgTlNTd2Fw
QmlnRG91YmxlVG9Ib3N0KE5TU3dhcHBlZERvdWJsZSB4KSB7CiAgICByZXR1cm4gTlNDb252ZXJ0
U3dhcHBlZERvdWJsZVRvSG9zdChOU1N3YXBEb3VibGUoeCkpOwp9CgpzdGF0aWMgX19pbmxpbmVf
XyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgZmxvYXQgTlNTd2FwQmlnRmxvYXRUb0hv
c3QoTlNTd2FwcGVkRmxvYXQgeCkgewogICAgcmV0dXJuIE5TQ29udmVydFN3YXBwZWRGbG9hdFRv
SG9zdChOU1N3YXBGbG9hdCh4KSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18o
KGFsd2F5c19pbmxpbmUpKSBOU1N3YXBwZWREb3VibGUgTlNTd2FwSG9zdERvdWJsZVRvQmlnKGRv
dWJsZSB4KSB7CiAgICByZXR1cm4gTlNTd2FwRG91YmxlKE5TQ29udmVydEhvc3REb3VibGVUb1N3
YXBwZWQoeCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5s
aW5lKSkgTlNTd2FwcGVkRmxvYXQgTlNTd2FwSG9zdEZsb2F0VG9CaWcoZmxvYXQgeCkgewogICAg
cmV0dXJuIE5TU3dhcEZsb2F0KE5TQ29udmVydEhvc3RGbG9hdFRvU3dhcHBlZCh4KSk7Cn0KCnN0
YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBkb3VibGUgTlNT
d2FwTGl0dGxlRG91YmxlVG9Ib3N0KE5TU3dhcHBlZERvdWJsZSB4KSB7CiAgICByZXR1cm4gTlND
b252ZXJ0U3dhcHBlZERvdWJsZVRvSG9zdCh4KTsKfQoKc3RhdGljIF9faW5saW5lX18gX19hdHRy
aWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIGZsb2F0IE5TU3dhcExpdHRsZUZsb2F0VG9Ib3N0KE5T
U3dhcHBlZEZsb2F0IHgpIHsKICAgIHJldHVybiBOU0NvbnZlcnRTd2FwcGVkRmxvYXRUb0hvc3Qo
eCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBO
U1N3YXBwZWREb3VibGUgTlNTd2FwSG9zdERvdWJsZVRvTGl0dGxlKGRvdWJsZSB4KSB7CiAgICBy
ZXR1cm4gTlNDb252ZXJ0SG9zdERvdWJsZVRvU3dhcHBlZCh4KTsKfQoKc3RhdGljIF9faW5saW5l
X18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIE5TU3dhcHBlZEZsb2F0IE5TU3dhcEhv
c3RGbG9hdFRvTGl0dGxlKGZsb2F0IHgpIHsKICAgIHJldHVybiBOU0NvbnZlcnRIb3N0RmxvYXRU
b1N3YXBwZWQoeCk7Cn0KIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNDYWxlbmRhci5oIiAx
IDMKIyAxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9OU0NhbGVuZGFyLmgiIDMKQGNsYXNzIE5TRGF0ZUNvbXBvbmVudHMsIE5TTG9jYWxl
LCBOU1RpbWVab25lLCBOU1N0cmluZzsKCmVudW0gewogTlNFcmFDYWxlbmRhclVuaXQgPSBrQ0ZD
YWxlbmRhclVuaXRFcmEsCiBOU1llYXJDYWxlbmRhclVuaXQgPSBrQ0ZDYWxlbmRhclVuaXRZZWFy
LAogTlNNb250aENhbGVuZGFyVW5pdCA9IGtDRkNhbGVuZGFyVW5pdE1vbnRoLAogTlNEYXlDYWxl
bmRhclVuaXQgPSBrQ0ZDYWxlbmRhclVuaXREYXksCiBOU0hvdXJDYWxlbmRhclVuaXQgPSBrQ0ZD
YWxlbmRhclVuaXRIb3VyLAogTlNNaW51dGVDYWxlbmRhclVuaXQgPSBrQ0ZDYWxlbmRhclVuaXRN
aW51dGUsCiBOU1NlY29uZENhbGVuZGFyVW5pdCA9IGtDRkNhbGVuZGFyVW5pdFNlY29uZCwKIE5T
V2Vla0NhbGVuZGFyVW5pdCA9IGtDRkNhbGVuZGFyVW5pdFdlZWssCiBOU1dlZWtkYXlDYWxlbmRh
clVuaXQgPSBrQ0ZDYWxlbmRhclVuaXRXZWVrZGF5LAogTlNXZWVrZGF5T3JkaW5hbENhbGVuZGFy
VW5pdCA9IGtDRkNhbGVuZGFyVW5pdFdlZWtkYXlPcmRpbmFsLAoKIE5TUXVhcnRlckNhbGVuZGFy
VW5pdCA9IGtDRkNhbGVuZGFyVW5pdFF1YXJ0ZXIsCgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlND
YWxlbmRhclVuaXQ7CgpAaW50ZXJmYWNlIE5TQ2FsZW5kYXIgOiBOU09iamVjdCA8TlNDb3B5aW5n
LCBOU0NvZGluZz4KCisgKGlkKWN1cnJlbnRDYWxlbmRhcjsKKyAoaWQpYXV0b3VwZGF0aW5nQ3Vy
cmVudENhbGVuZGFyIDsKCi0gKGlkKWluaXRXaXRoQ2FsZW5kYXJJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWlkZW50OwoKLSAoTlNTdHJpbmcgKiljYWxlbmRhcklkZW50aWZpZXI7CgoKLSAodm9pZClz
ZXRMb2NhbGU6KE5TTG9jYWxlICopbG9jYWxlOwotIChOU0xvY2FsZSAqKWxvY2FsZTsKCi0gKHZv
aWQpc2V0VGltZVpvbmU6KE5TVGltZVpvbmUgKil0ejsKLSAoTlNUaW1lWm9uZSAqKXRpbWVab25l
OwoKLSAodm9pZClzZXRGaXJzdFdlZWtkYXk6KE5TVUludGVnZXIpd2Vla2RheTsKLSAoTlNVSW50
ZWdlcilmaXJzdFdlZWtkYXk7CgotICh2b2lkKXNldE1pbmltdW1EYXlzSW5GaXJzdFdlZWs6KE5T
VUludGVnZXIpbWR3OwotIChOU1VJbnRlZ2VyKW1pbmltdW1EYXlzSW5GaXJzdFdlZWs7CgoKLSAo
TlNSYW5nZSltaW5pbXVtUmFuZ2VPZlVuaXQ6KE5TQ2FsZW5kYXJVbml0KXVuaXQ7Ci0gKE5TUmFu
Z2UpbWF4aW11bVJhbmdlT2ZVbml0OihOU0NhbGVuZGFyVW5pdCl1bml0OwoKLSAoTlNSYW5nZSly
YW5nZU9mVW5pdDooTlNDYWxlbmRhclVuaXQpc21hbGxlciBpblVuaXQ6KE5TQ2FsZW5kYXJVbml0
KWxhcmdlciBmb3JEYXRlOihOU0RhdGUgKilkYXRlOwotIChOU1VJbnRlZ2VyKW9yZGluYWxpdHlP
ZlVuaXQ6KE5TQ2FsZW5kYXJVbml0KXNtYWxsZXIgaW5Vbml0OihOU0NhbGVuZGFyVW5pdClsYXJn
ZXIgZm9yRGF0ZTooTlNEYXRlICopZGF0ZTsKCi0gKEJPT0wpcmFuZ2VPZlVuaXQ6KE5TQ2FsZW5k
YXJVbml0KXVuaXQgc3RhcnREYXRlOihOU0RhdGUgKiopZGF0ZXAgaW50ZXJ2YWw6KE5TVGltZUlu
dGVydmFsICopdGlwIGZvckRhdGU6KE5TRGF0ZSAqKWRhdGUgOwoKLSAoTlNEYXRlICopZGF0ZUZy
b21Db21wb25lbnRzOihOU0RhdGVDb21wb25lbnRzICopY29tcHM7Ci0gKE5TRGF0ZUNvbXBvbmVu
dHMgKiljb21wb25lbnRzOihOU1VJbnRlZ2VyKXVuaXRGbGFncyBmcm9tRGF0ZTooTlNEYXRlICop
ZGF0ZTsKCi0gKE5TRGF0ZSAqKWRhdGVCeUFkZGluZ0NvbXBvbmVudHM6KE5TRGF0ZUNvbXBvbmVu
dHMgKiljb21wcyB0b0RhdGU6KE5TRGF0ZSAqKWRhdGUgb3B0aW9uczooTlNVSW50ZWdlcilvcHRz
OwoKLSAoTlNEYXRlQ29tcG9uZW50cyAqKWNvbXBvbmVudHM6KE5TVUludGVnZXIpdW5pdEZsYWdz
IGZyb21EYXRlOihOU0RhdGUgKilzdGFydGluZ0RhdGUgdG9EYXRlOihOU0RhdGUgKilyZXN1bHRE
YXRlIG9wdGlvbnM6KE5TVUludGVnZXIpb3B0czsKCkBlbmQKCmVudW0gewogTlNXcmFwQ2FsZW5k
YXJDb21wb25lbnRzID0ga0NGQ2FsZW5kYXJDb21wb25lbnRzV3JhcCwKfTsKIyA5NCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0NhbGVu
ZGFyLmgiIDMKZW51bSB7CiBOU1VuZGVmaW5lZERhdGVDb21wb25lbnQgPSA5MjIzMzcyMDM2ODU0
Nzc1ODA3TAp9OwoKQGludGVyZmFjZSBOU0RhdGVDb21wb25lbnRzIDogTlNPYmplY3QgPE5TQ29w
eWluZywgTlNDb2Rpbmc+CgotIChOU0ludGVnZXIpZXJhOwotIChOU0ludGVnZXIpeWVhcjsKLSAo
TlNJbnRlZ2VyKW1vbnRoOwotIChOU0ludGVnZXIpZGF5OwotIChOU0ludGVnZXIpaG91cjsKLSAo
TlNJbnRlZ2VyKW1pbnV0ZTsKLSAoTlNJbnRlZ2VyKXNlY29uZDsKLSAoTlNJbnRlZ2VyKXdlZWs7
Ci0gKE5TSW50ZWdlcil3ZWVrZGF5OwotIChOU0ludGVnZXIpd2Vla2RheU9yZGluYWw7CgotIChO
U0ludGVnZXIpcXVhcnRlcjsKCgotICh2b2lkKXNldEVyYTooTlNJbnRlZ2VyKXY7Ci0gKHZvaWQp
c2V0WWVhcjooTlNJbnRlZ2VyKXY7Ci0gKHZvaWQpc2V0TW9udGg6KE5TSW50ZWdlcil2OwotICh2
b2lkKXNldERheTooTlNJbnRlZ2VyKXY7Ci0gKHZvaWQpc2V0SG91cjooTlNJbnRlZ2VyKXY7Ci0g
KHZvaWQpc2V0TWludXRlOihOU0ludGVnZXIpdjsKLSAodm9pZClzZXRTZWNvbmQ6KE5TSW50ZWdl
cil2OwotICh2b2lkKXNldFdlZWs6KE5TSW50ZWdlcil2OwotICh2b2lkKXNldFdlZWtkYXk6KE5T
SW50ZWdlcil2OwotICh2b2lkKXNldFdlZWtkYXlPcmRpbmFsOihOU0ludGVnZXIpdjsKCi0gKHZv
aWQpc2V0UXVhcnRlcjooTlNJbnRlZ2VyKXY7CgoKQGVuZAojIDE1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAz
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9OU0NoYXJhY3RlclNldC5oIiAxIDMKCgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1N0cmluZy5oIiAxIDMKCgoK
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdW5pY2hhcjsKCgoKCgoKQGNsYXNzIE5TRGF0YSwgTlNB
cnJheSwgTlNEaWN0aW9uYXJ5LCBOU0NoYXJhY3RlclNldCwgTlNVUkwsIE5TRXJyb3IsIE5TTG9j
YWxlOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TUGFyc2VFcnJvckV4Y2VwdGlvbjsK
CgoKCgoKCmVudW0gewogICAgTlNDYXNlSW5zZW5zaXRpdmVTZWFyY2ggPSAxLAogICAgTlNMaXRl
cmFsU2VhcmNoID0gMiwKICAgIE5TQmFja3dhcmRzU2VhcmNoID0gNCwKICAgIE5TQW5jaG9yZWRT
ZWFyY2ggPSA4LAogICAgTlNOdW1lcmljU2VhcmNoID0gNjQKCiAgICAsCiAgICBOU0RpYWNyaXRp
Y0luc2Vuc2l0aXZlU2VhcmNoID0gMTI4LAogICAgTlNXaWR0aEluc2Vuc2l0aXZlU2VhcmNoID0g
MjU2LAogICAgTlNGb3JjZWRPcmRlcmluZ1NlYXJjaCA9IDUxMgoKfTsKdHlwZWRlZiBOU1VJbnRl
Z2VyIE5TU3RyaW5nQ29tcGFyZU9wdGlvbnM7CgoKCgoKZW51bSB7CiAgICBOU0FTQ0lJU3RyaW5n
RW5jb2RpbmcgPSAxLAogICAgTlNORVhUU1RFUFN0cmluZ0VuY29kaW5nID0gMiwKICAgIE5TSmFw
YW5lc2VFVUNTdHJpbmdFbmNvZGluZyA9IDMsCiAgICBOU1VURjhTdHJpbmdFbmNvZGluZyA9IDQs
CiAgICBOU0lTT0xhdGluMVN0cmluZ0VuY29kaW5nID0gNSwKICAgIE5TU3ltYm9sU3RyaW5nRW5j
b2RpbmcgPSA2LAogICAgTlNOb25Mb3NzeUFTQ0lJU3RyaW5nRW5jb2RpbmcgPSA3LAogICAgTlNT
aGlmdEpJU1N0cmluZ0VuY29kaW5nID0gOCwKICAgIE5TSVNPTGF0aW4yU3RyaW5nRW5jb2Rpbmcg
PSA5LAogICAgTlNVbmljb2RlU3RyaW5nRW5jb2RpbmcgPSAxMCwKICAgIE5TV2luZG93c0NQMTI1
MVN0cmluZ0VuY29kaW5nID0gMTEsCiAgICBOU1dpbmRvd3NDUDEyNTJTdHJpbmdFbmNvZGluZyA9
IDEyLAogICAgTlNXaW5kb3dzQ1AxMjUzU3RyaW5nRW5jb2RpbmcgPSAxMywKICAgIE5TV2luZG93
c0NQMTI1NFN0cmluZ0VuY29kaW5nID0gMTQsCiAgICBOU1dpbmRvd3NDUDEyNTBTdHJpbmdFbmNv
ZGluZyA9IDE1LAogICAgTlNJU08yMDIySlBTdHJpbmdFbmNvZGluZyA9IDIxLAogICAgTlNNYWNP
U1JvbWFuU3RyaW5nRW5jb2RpbmcgPSAzMCwKCiAgICBOU1VURjE2U3RyaW5nRW5jb2RpbmcgPSBO
U1VuaWNvZGVTdHJpbmdFbmNvZGluZywKCgogICAgTlNVVEYxNkJpZ0VuZGlhblN0cmluZ0VuY29k
aW5nID0gMHg5MDAwMDEwMCwKICAgIE5TVVRGMTZMaXR0bGVFbmRpYW5TdHJpbmdFbmNvZGluZyA9
IDB4OTQwMDAxMDAsCgogICAgTlNVVEYzMlN0cmluZ0VuY29kaW5nID0gMHg4YzAwMDEwMCwKICAg
IE5TVVRGMzJCaWdFbmRpYW5TdHJpbmdFbmNvZGluZyA9IDB4OTgwMDAxMDAsCiAgICBOU1VURjMy
TGl0dGxlRW5kaWFuU3RyaW5nRW5jb2RpbmcgPSAweDljMDAwMTAwCgp9Owp0eXBlZGVmIE5TVUlu
dGVnZXIgTlNTdHJpbmdFbmNvZGluZzsKCgplbnVtIHsKICAgIE5TU3RyaW5nRW5jb2RpbmdDb252
ZXJzaW9uQWxsb3dMb3NzeSA9IDEsCiAgICBOU1N0cmluZ0VuY29kaW5nQ29udmVyc2lvbkV4dGVy
bmFsUmVwcmVzZW50YXRpb24gPSAyCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1N0cmluZ0VuY29k
aW5nQ29udmVyc2lvbk9wdGlvbnM7CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TQ2hh
cmFjdGVyQ29udmVyc2lvbkV4Y2VwdGlvbjsKCgpAaW50ZXJmYWNlIE5TU3RyaW5nIDogTlNPYmpl
Y3QgPE5TQ29weWluZywgTlNNdXRhYmxlQ29weWluZywgTlNDb2Rpbmc+CgoKCi0gKE5TVUludGVn
ZXIpbGVuZ3RoOwotICh1bmljaGFyKWNoYXJhY3RlckF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7
CgpAZW5kCgpAaW50ZXJmYWNlIE5TU3RyaW5nIChOU1N0cmluZ0V4dGVuc2lvbk1ldGhvZHMpCgot
ICh2b2lkKWdldENoYXJhY3RlcnM6KHVuaWNoYXIgKilidWZmZXIgcmFuZ2U6KE5TUmFuZ2UpYVJh
bmdlOwoKLSAoTlNTdHJpbmcgKilzdWJzdHJpbmdGcm9tSW5kZXg6KE5TVUludGVnZXIpZnJvbTsK
LSAoTlNTdHJpbmcgKilzdWJzdHJpbmdUb0luZGV4OihOU1VJbnRlZ2VyKXRvOwotIChOU1N0cmlu
ZyAqKXN1YnN0cmluZ1dpdGhSYW5nZTooTlNSYW5nZSlyYW5nZTsKCi0gKE5TQ29tcGFyaXNvblJl
c3VsdCljb21wYXJlOihOU1N0cmluZyAqKXN0cmluZzsKLSAoTlNDb21wYXJpc29uUmVzdWx0KWNv
bXBhcmU6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMp
bWFzazsKLSAoTlNDb21wYXJpc29uUmVzdWx0KWNvbXBhcmU6KE5TU3RyaW5nICopc3RyaW5nIG9w
dGlvbnM6KE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMpbWFzayByYW5nZTooTlNSYW5nZSljb21wYXJl
UmFuZ2U7Ci0gKE5TQ29tcGFyaXNvblJlc3VsdCljb21wYXJlOihOU1N0cmluZyAqKXN0cmluZyBv
cHRpb25zOihOU1N0cmluZ0NvbXBhcmVPcHRpb25zKW1hc2sgcmFuZ2U6KE5TUmFuZ2UpY29tcGFy
ZVJhbmdlIGxvY2FsZTooaWQpbG9jYWxlOwotIChOU0NvbXBhcmlzb25SZXN1bHQpY2FzZUluc2Vu
c2l0aXZlQ29tcGFyZTooTlNTdHJpbmcgKilzdHJpbmc7Ci0gKE5TQ29tcGFyaXNvblJlc3VsdCls
b2NhbGl6ZWRDb21wYXJlOihOU1N0cmluZyAqKXN0cmluZzsKLSAoTlNDb21wYXJpc29uUmVzdWx0
KWxvY2FsaXplZENhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6KE5TU3RyaW5nICopc3RyaW5nOwoKCgot
IChOU0NvbXBhcmlzb25SZXN1bHQpbG9jYWxpemVkU3RhbmRhcmRDb21wYXJlOihOU1N0cmluZyAq
KXN0cmluZyA7CgotIChCT09MKWlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilhU3RyaW5nOwoK
LSAoQk9PTCloYXNQcmVmaXg6KE5TU3RyaW5nICopYVN0cmluZzsKLSAoQk9PTCloYXNTdWZmaXg6
KE5TU3RyaW5nICopYVN0cmluZzsKCgoKLSAoTlNSYW5nZSlyYW5nZU9mU3RyaW5nOihOU1N0cmlu
ZyAqKWFTdHJpbmc7Ci0gKE5TUmFuZ2UpcmFuZ2VPZlN0cmluZzooTlNTdHJpbmcgKilhU3RyaW5n
IG9wdGlvbnM6KE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMpbWFzazsKLSAoTlNSYW5nZSlyYW5nZU9m
U3RyaW5nOihOU1N0cmluZyAqKWFTdHJpbmcgb3B0aW9uczooTlNTdHJpbmdDb21wYXJlT3B0aW9u
cyltYXNrIHJhbmdlOihOU1JhbmdlKXNlYXJjaFJhbmdlOwoKLSAoTlNSYW5nZSlyYW5nZU9mU3Ry
aW5nOihOU1N0cmluZyAqKWFTdHJpbmcgb3B0aW9uczooTlNTdHJpbmdDb21wYXJlT3B0aW9ucylt
YXNrIHJhbmdlOihOU1JhbmdlKXNlYXJjaFJhbmdlIGxvY2FsZTooTlNMb2NhbGUgKilsb2NhbGU7
CgoKCgotIChOU1JhbmdlKXJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OihOU0NoYXJhY3RlclNldCAq
KWFTZXQ7Ci0gKE5TUmFuZ2UpcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6KE5TQ2hhcmFjdGVyU2V0
ICopYVNldCBvcHRpb25zOihOU1N0cmluZ0NvbXBhcmVPcHRpb25zKW1hc2s7Ci0gKE5TUmFuZ2Up
cmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6KE5TQ2hhcmFjdGVyU2V0ICopYVNldCBvcHRpb25zOihO
U1N0cmluZ0NvbXBhcmVPcHRpb25zKW1hc2sgcmFuZ2U6KE5TUmFuZ2Upc2VhcmNoUmFuZ2U7Cgot
IChOU1JhbmdlKXJhbmdlT2ZDb21wb3NlZENoYXJhY3RlclNlcXVlbmNlQXRJbmRleDooTlNVSW50
ZWdlcilpbmRleDsKCi0gKE5TUmFuZ2UpcmFuZ2VPZkNvbXBvc2VkQ2hhcmFjdGVyU2VxdWVuY2Vz
Rm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2U7CgoKLSAoTlNTdHJpbmcgKilzdHJpbmdCeUFwcGVuZGlu
Z1N0cmluZzooTlNTdHJpbmcgKilhU3RyaW5nOwotIChOU1N0cmluZyAqKXN0cmluZ0J5QXBwZW5k
aW5nRm9ybWF0OihOU1N0cmluZyAqKWZvcm1hdCwgLi4uIF9fYXR0cmlidXRlX18oKGZvcm1hdChf
X05TU3RyaW5nX18sIDEsIDIpKSk7CgoKCi0gKGRvdWJsZSlkb3VibGVWYWx1ZTsKLSAoZmxvYXQp
ZmxvYXRWYWx1ZTsKLSAoaW50KWludFZhbHVlOwoKLSAoTlNJbnRlZ2VyKWludGVnZXJWYWx1ZTsK
LSAobG9uZyBsb25nKWxvbmdMb25nVmFsdWU7Ci0gKEJPT0wpYm9vbFZhbHVlOwoKCi0gKE5TQXJy
YXkgKiljb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6KE5TU3RyaW5nICopc2VwYXJhdG9yOwoK
LSAoTlNBcnJheSAqKWNvbXBvbmVudHNTZXBhcmF0ZWRCeUNoYXJhY3RlcnNJblNldDooTlNDaGFy
YWN0ZXJTZXQgKilzZXBhcmF0b3I7CgoKLSAoTlNTdHJpbmcgKiljb21tb25QcmVmaXhXaXRoU3Ry
aW5nOihOU1N0cmluZyAqKWFTdHJpbmcgb3B0aW9uczooTlNTdHJpbmdDb21wYXJlT3B0aW9ucylt
YXNrOwoKLSAoTlNTdHJpbmcgKil1cHBlcmNhc2VTdHJpbmc7Ci0gKE5TU3RyaW5nICopbG93ZXJj
YXNlU3RyaW5nOwotIChOU1N0cmluZyAqKWNhcGl0YWxpemVkU3RyaW5nOwoKCi0gKE5TU3RyaW5n
ICopc3RyaW5nQnlUcmltbWluZ0NoYXJhY3RlcnNJblNldDooTlNDaGFyYWN0ZXJTZXQgKilzZXQ7
Ci0gKE5TU3RyaW5nICopc3RyaW5nQnlQYWRkaW5nVG9MZW5ndGg6KE5TVUludGVnZXIpbmV3TGVu
Z3RoIHdpdGhTdHJpbmc6KE5TU3RyaW5nICopcGFkU3RyaW5nIHN0YXJ0aW5nQXRJbmRleDooTlNV
SW50ZWdlcilwYWRJbmRleDsKCgotICh2b2lkKWdldExpbmVTdGFydDooTlNVSW50ZWdlciAqKXN0
YXJ0UHRyIGVuZDooTlNVSW50ZWdlciAqKWxpbmVFbmRQdHIgY29udGVudHNFbmQ6KE5TVUludGVn
ZXIgKiljb250ZW50c0VuZFB0ciBmb3JSYW5nZTooTlNSYW5nZSlyYW5nZTsKLSAoTlNSYW5nZSls
aW5lUmFuZ2VGb3JSYW5nZTooTlNSYW5nZSlyYW5nZTsKCgotICh2b2lkKWdldFBhcmFncmFwaFN0
YXJ0OihOU1VJbnRlZ2VyICopc3RhcnRQdHIgZW5kOihOU1VJbnRlZ2VyICopcGFyRW5kUHRyIGNv
bnRlbnRzRW5kOihOU1VJbnRlZ2VyICopY29udGVudHNFbmRQdHIgZm9yUmFuZ2U6KE5TUmFuZ2Up
cmFuZ2U7Ci0gKE5TUmFuZ2UpcGFyYWdyYXBoUmFuZ2VGb3JSYW5nZTooTlNSYW5nZSlyYW5nZTsK
CgoKZW51bSB7CgogTlNTdHJpbmdFbnVtZXJhdGlvbkJ5TGluZXMgPSAwLAogICAgICAgIE5TU3Ry
aW5nRW51bWVyYXRpb25CeVBhcmFncmFwaHMgPSAxLAogTlNTdHJpbmdFbnVtZXJhdGlvbkJ5Q29t
cG9zZWRDaGFyYWN0ZXJTZXF1ZW5jZXMgPSAyLAogTlNTdHJpbmdFbnVtZXJhdGlvbkJ5V29yZHMg
PSAzLAogICAgICAgIE5TU3RyaW5nRW51bWVyYXRpb25CeVNlbnRlbmNlcyA9IDQsCgogTlNTdHJp
bmdFbnVtZXJhdGlvblJldmVyc2UgPSAxVUwgPDwgOCwKIE5TU3RyaW5nRW51bWVyYXRpb25TdWJz
dHJpbmdOb3RSZXF1aXJlZCA9IDFVTCA8PCA5LAogTlNTdHJpbmdFbnVtZXJhdGlvbkxvY2FsaXpl
ZCA9IDFVTCA8PCAxMAp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNTdHJpbmdFbnVtZXJhdGlvbk9w
dGlvbnM7CgotICh2b2lkKWVudW1lcmF0ZVN1YnN0cmluZ3NJblJhbmdlOihOU1JhbmdlKXJhbmdl
IG9wdGlvbnM6KE5TU3RyaW5nRW51bWVyYXRpb25PcHRpb25zKW9wdHMgdXNpbmdCbG9jazoodm9p
ZCAoXikoTlNTdHJpbmcgKnN1YnN0cmluZywgTlNSYW5nZSBzdWJzdHJpbmdSYW5nZSwgTlNSYW5n
ZSBlbmNsb3NpbmdSYW5nZSwgQk9PTCAqc3RvcCkpYmxvY2sgOwotICh2b2lkKWVudW1lcmF0ZUxp
bmVzVXNpbmdCbG9jazoodm9pZCAoXikoTlNTdHJpbmcgKmxpbmUsIEJPT0wgKnN0b3ApKWJsb2Nr
IDsKCgotIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uOwoKLSAoTlNVSW50ZWdlciloYXNoOwoKCgot
IChOU1N0cmluZ0VuY29kaW5nKWZhc3Rlc3RFbmNvZGluZzsKLSAoTlNTdHJpbmdFbmNvZGluZylz
bWFsbGVzdEVuY29kaW5nOwoKLSAoTlNEYXRhICopZGF0YVVzaW5nRW5jb2Rpbmc6KE5TU3RyaW5n
RW5jb2RpbmcpZW5jb2RpbmcgYWxsb3dMb3NzeUNvbnZlcnNpb246KEJPT0wpbG9zc3k7Ci0gKE5T
RGF0YSAqKWRhdGFVc2luZ0VuY29kaW5nOihOU1N0cmluZ0VuY29kaW5nKWVuY29kaW5nOwoKLSAo
Qk9PTCljYW5CZUNvbnZlcnRlZFRvRW5jb2Rpbmc6KE5TU3RyaW5nRW5jb2RpbmcpZW5jb2Rpbmc7
CgoKCgotICggY29uc3QgY2hhciAqKWNTdHJpbmdVc2luZ0VuY29kaW5nOihOU1N0cmluZ0VuY29k
aW5nKWVuY29kaW5nOwotIChCT09MKWdldENTdHJpbmc6KGNoYXIgKilidWZmZXIgbWF4TGVuZ3Ro
OihOU1VJbnRlZ2VyKW1heEJ1ZmZlckNvdW50IGVuY29kaW5nOihOU1N0cmluZ0VuY29kaW5nKWVu
Y29kaW5nOwojIDIyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9OU1N0cmluZy5oIiAzCi0gKEJPT0wpZ2V0Qnl0ZXM6KHZvaWQgKilidWZm
ZXIgbWF4TGVuZ3RoOihOU1VJbnRlZ2VyKW1heEJ1ZmZlckNvdW50IHVzZWRMZW5ndGg6KE5TVUlu
dGVnZXIgKil1c2VkQnVmZmVyQ291bnQgZW5jb2Rpbmc6KE5TU3RyaW5nRW5jb2RpbmcpZW5jb2Rp
bmcgb3B0aW9uczooTlNTdHJpbmdFbmNvZGluZ0NvbnZlcnNpb25PcHRpb25zKW9wdGlvbnMgcmFu
Z2U6KE5TUmFuZ2UpcmFuZ2UgcmVtYWluaW5nUmFuZ2U6KE5TUmFuZ2VQb2ludGVyKWxlZnRvdmVy
OwoKCgotIChOU1VJbnRlZ2VyKW1heGltdW1MZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzooTlNT
dHJpbmdFbmNvZGluZyllbmM7Ci0gKE5TVUludGVnZXIpbGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rp
bmc6KE5TU3RyaW5nRW5jb2RpbmcpZW5jOwoKCgotIChOU1N0cmluZyAqKWRlY29tcG9zZWRTdHJp
bmdXaXRoQ2Fub25pY2FsTWFwcGluZzsKLSAoTlNTdHJpbmcgKilwcmVjb21wb3NlZFN0cmluZ1dp
dGhDYW5vbmljYWxNYXBwaW5nOwotIChOU1N0cmluZyAqKWRlY29tcG9zZWRTdHJpbmdXaXRoQ29t
cGF0aWJpbGl0eU1hcHBpbmc7Ci0gKE5TU3RyaW5nICopcHJlY29tcG9zZWRTdHJpbmdXaXRoQ29t
cGF0aWJpbGl0eU1hcHBpbmc7CgoKCgoKLSAoTlNTdHJpbmcgKilzdHJpbmdCeUZvbGRpbmdXaXRo
T3B0aW9uczooTlNTdHJpbmdDb21wYXJlT3B0aW9ucylvcHRpb25zIGxvY2FsZTooTlNMb2NhbGUg
Kilsb2NhbGU7CgoKCi0gKE5TU3RyaW5nICopc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNlc09m
U3RyaW5nOihOU1N0cmluZyAqKXRhcmdldCB3aXRoU3RyaW5nOihOU1N0cmluZyAqKXJlcGxhY2Vt
ZW50IG9wdGlvbnM6KE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMpb3B0aW9ucyByYW5nZTooTlNSYW5n
ZSlzZWFyY2hSYW5nZTsKCgoKLSAoTlNTdHJpbmcgKilzdHJpbmdCeVJlcGxhY2luZ09jY3VycmVu
Y2VzT2ZTdHJpbmc6KE5TU3RyaW5nICopdGFyZ2V0IHdpdGhTdHJpbmc6KE5TU3RyaW5nICopcmVw
bGFjZW1lbnQ7CgoKCi0gKE5TU3RyaW5nICopc3RyaW5nQnlSZXBsYWNpbmdDaGFyYWN0ZXJzSW5S
YW5nZTooTlNSYW5nZSlyYW5nZSB3aXRoU3RyaW5nOihOU1N0cmluZyAqKXJlcGxhY2VtZW50OwoK
Ci0gKCBjb25zdCBjaGFyICopVVRGOFN0cmluZzsKCgoKKyAoTlNTdHJpbmdFbmNvZGluZylkZWZh
dWx0Q1N0cmluZ0VuY29kaW5nOwoKKyAoY29uc3QgTlNTdHJpbmdFbmNvZGluZyAqKWF2YWlsYWJs
ZVN0cmluZ0VuY29kaW5nczsKKyAoTlNTdHJpbmcgKilsb2NhbGl6ZWROYW1lT2ZTdHJpbmdFbmNv
ZGluZzooTlNTdHJpbmdFbmNvZGluZyllbmNvZGluZzsKCgoKCgotIChpZClpbml0OwotIChpZClp
bml0V2l0aENoYXJhY3RlcnNOb0NvcHk6KHVuaWNoYXIgKiljaGFyYWN0ZXJzIGxlbmd0aDooTlNV
SW50ZWdlcilsZW5ndGggZnJlZVdoZW5Eb25lOihCT09MKWZyZWVCdWZmZXI7Ci0gKGlkKWluaXRX
aXRoQ2hhcmFjdGVyczooY29uc3QgdW5pY2hhciAqKWNoYXJhY3RlcnMgbGVuZ3RoOihOU1VJbnRl
Z2VyKWxlbmd0aDsKLSAoaWQpaW5pdFdpdGhVVEY4U3RyaW5nOihjb25zdCBjaGFyICopbnVsbFRl
cm1pbmF0ZWRDU3RyaW5nOwotIChpZClpbml0V2l0aFN0cmluZzooTlNTdHJpbmcgKilhU3RyaW5n
OwotIChpZClpbml0V2l0aEZvcm1hdDooTlNTdHJpbmcgKilmb3JtYXQsIC4uLiBfX2F0dHJpYnV0
ZV9fKChmb3JtYXQoX19OU1N0cmluZ19fLCAxLCAyKSkpOwotIChpZClpbml0V2l0aEZvcm1hdDoo
TlNTdHJpbmcgKilmb3JtYXQgYXJndW1lbnRzOih2YV9saXN0KWFyZ0xpc3QgX19hdHRyaWJ1dGVf
XygoZm9ybWF0KF9fTlNTdHJpbmdfXywgMSwgMCkpKTsKLSAoaWQpaW5pdFdpdGhGb3JtYXQ6KE5T
U3RyaW5nICopZm9ybWF0IGxvY2FsZTooaWQpbG9jYWxlLCAuLi4gX19hdHRyaWJ1dGVfXygoZm9y
bWF0KF9fTlNTdHJpbmdfXywgMSwgMykpKTsKLSAoaWQpaW5pdFdpdGhGb3JtYXQ6KE5TU3RyaW5n
ICopZm9ybWF0IGxvY2FsZTooaWQpbG9jYWxlIGFyZ3VtZW50czoodmFfbGlzdClhcmdMaXN0IF9f
YXR0cmlidXRlX18oKGZvcm1hdChfX05TU3RyaW5nX18sIDEsIDApKSk7Ci0gKGlkKWluaXRXaXRo
RGF0YTooTlNEYXRhICopZGF0YSBlbmNvZGluZzooTlNTdHJpbmdFbmNvZGluZyllbmNvZGluZzsK
LSAoaWQpaW5pdFdpdGhCeXRlczooY29uc3Qgdm9pZCAqKWJ5dGVzIGxlbmd0aDooTlNVSW50ZWdl
cilsZW4gZW5jb2Rpbmc6KE5TU3RyaW5nRW5jb2RpbmcpZW5jb2Rpbmc7CgotIChpZClpbml0V2l0
aEJ5dGVzTm9Db3B5Oih2b2lkICopYnl0ZXMgbGVuZ3RoOihOU1VJbnRlZ2VyKWxlbiBlbmNvZGlu
ZzooTlNTdHJpbmdFbmNvZGluZyllbmNvZGluZyBmcmVlV2hlbkRvbmU6KEJPT0wpZnJlZUJ1ZmZl
cjsKCgorIChpZClzdHJpbmc7CisgKGlkKXN0cmluZ1dpdGhTdHJpbmc6KE5TU3RyaW5nICopc3Ry
aW5nOworIChpZClzdHJpbmdXaXRoQ2hhcmFjdGVyczooY29uc3QgdW5pY2hhciAqKWNoYXJhY3Rl
cnMgbGVuZ3RoOihOU1VJbnRlZ2VyKWxlbmd0aDsKKyAoaWQpc3RyaW5nV2l0aFVURjhTdHJpbmc6
KGNvbnN0IGNoYXIgKiludWxsVGVybWluYXRlZENTdHJpbmc7CisgKGlkKXN0cmluZ1dpdGhGb3Jt
YXQ6KE5TU3RyaW5nICopZm9ybWF0LCAuLi4gX19hdHRyaWJ1dGVfXygoZm9ybWF0KF9fTlNTdHJp
bmdfXywgMSwgMikpKTsKKyAoaWQpbG9jYWxpemVkU3RyaW5nV2l0aEZvcm1hdDooTlNTdHJpbmcg
Kilmb3JtYXQsIC4uLiBfX2F0dHJpYnV0ZV9fKChmb3JtYXQoX19OU1N0cmluZ19fLCAxLCAyKSkp
OwoKCi0gKGlkKWluaXRXaXRoQ1N0cmluZzooY29uc3QgY2hhciAqKW51bGxUZXJtaW5hdGVkQ1N0
cmluZyBlbmNvZGluZzooTlNTdHJpbmdFbmNvZGluZyllbmNvZGluZzsKKyAoaWQpc3RyaW5nV2l0
aENTdHJpbmc6KGNvbnN0IGNoYXIgKiljU3RyaW5nIGVuY29kaW5nOihOU1N0cmluZ0VuY29kaW5n
KWVuYzsKCgoKLSAoaWQpaW5pdFdpdGhDb250ZW50c09mVVJMOihOU1VSTCAqKXVybCBlbmNvZGlu
ZzooTlNTdHJpbmdFbmNvZGluZyllbmMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7Ci0gKGlkKWlu
aXRXaXRoQ29udGVudHNPZkZpbGU6KE5TU3RyaW5nICopcGF0aCBlbmNvZGluZzooTlNTdHJpbmdF
bmNvZGluZyllbmMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CisgKGlkKXN0cmluZ1dpdGhDb250
ZW50c09mVVJMOihOU1VSTCAqKXVybCBlbmNvZGluZzooTlNTdHJpbmdFbmNvZGluZyllbmMgZXJy
b3I6KE5TRXJyb3IgKiopZXJyb3I7CisgKGlkKXN0cmluZ1dpdGhDb250ZW50c09mRmlsZTooTlNT
dHJpbmcgKilwYXRoIGVuY29kaW5nOihOU1N0cmluZ0VuY29kaW5nKWVuYyBlcnJvcjooTlNFcnJv
ciAqKillcnJvcjsKCgoKLSAoaWQpaW5pdFdpdGhDb250ZW50c09mVVJMOihOU1VSTCAqKXVybCB1
c2VkRW5jb2Rpbmc6KE5TU3RyaW5nRW5jb2RpbmcgKillbmMgZXJyb3I6KE5TRXJyb3IgKiopZXJy
b3I7Ci0gKGlkKWluaXRXaXRoQ29udGVudHNPZkZpbGU6KE5TU3RyaW5nICopcGF0aCB1c2VkRW5j
b2Rpbmc6KE5TU3RyaW5nRW5jb2RpbmcgKillbmMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7Cisg
KGlkKXN0cmluZ1dpdGhDb250ZW50c09mVVJMOihOU1VSTCAqKXVybCB1c2VkRW5jb2Rpbmc6KE5T
U3RyaW5nRW5jb2RpbmcgKillbmMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CisgKGlkKXN0cmlu
Z1dpdGhDb250ZW50c09mRmlsZTooTlNTdHJpbmcgKilwYXRoIHVzZWRFbmNvZGluZzooTlNTdHJp
bmdFbmNvZGluZyAqKWVuYyBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKCgoKLSAoQk9PTCl3cml0
ZVRvVVJMOihOU1VSTCAqKXVybCBhdG9taWNhbGx5OihCT09MKXVzZUF1eGlsaWFyeUZpbGUgZW5j
b2Rpbmc6KE5TU3RyaW5nRW5jb2RpbmcpZW5jIGVycm9yOihOU0Vycm9yICoqKWVycm9yOwotIChC
T09MKXdyaXRlVG9GaWxlOihOU1N0cmluZyAqKXBhdGggYXRvbWljYWxseTooQk9PTCl1c2VBdXhp
bGlhcnlGaWxlIGVuY29kaW5nOihOU1N0cmluZ0VuY29kaW5nKWVuYyBlcnJvcjooTlNFcnJvciAq
KillcnJvcjsKCgoKCkBlbmQKCgpAaW50ZXJmYWNlIE5TTXV0YWJsZVN0cmluZyA6IE5TU3RyaW5n
CgoKCi0gKHZvaWQpcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOihOU1JhbmdlKXJhbmdlIHdpdGhT
dHJpbmc6KE5TU3RyaW5nICopYVN0cmluZzsKCkBlbmQKCkBpbnRlcmZhY2UgTlNNdXRhYmxlU3Ry
aW5nIChOU011dGFibGVTdHJpbmdFeHRlbnNpb25NZXRob2RzKQoKLSAodm9pZClpbnNlcnRTdHJp
bmc6KE5TU3RyaW5nICopYVN0cmluZyBhdEluZGV4OihOU1VJbnRlZ2VyKWxvYzsKLSAodm9pZClk
ZWxldGVDaGFyYWN0ZXJzSW5SYW5nZTooTlNSYW5nZSlyYW5nZTsKLSAodm9pZClhcHBlbmRTdHJp
bmc6KE5TU3RyaW5nICopYVN0cmluZzsKLSAodm9pZClhcHBlbmRGb3JtYXQ6KE5TU3RyaW5nICop
Zm9ybWF0LCAuLi4gX19hdHRyaWJ1dGVfXygoZm9ybWF0KF9fTlNTdHJpbmdfXywgMSwgMikpKTsK
LSAodm9pZClzZXRTdHJpbmc6KE5TU3RyaW5nICopYVN0cmluZzsKCgoKLSAoaWQpaW5pdFdpdGhD
YXBhY2l0eTooTlNVSW50ZWdlciljYXBhY2l0eTsKKyAoaWQpc3RyaW5nV2l0aENhcGFjaXR5OihO
U1VJbnRlZ2VyKWNhcGFjaXR5OwoKCgoKLSAoTlNVSW50ZWdlcilyZXBsYWNlT2NjdXJyZW5jZXNP
ZlN0cmluZzooTlNTdHJpbmcgKil0YXJnZXQgd2l0aFN0cmluZzooTlNTdHJpbmcgKilyZXBsYWNl
bWVudCBvcHRpb25zOihOU1N0cmluZ0NvbXBhcmVPcHRpb25zKW9wdGlvbnMgcmFuZ2U6KE5TUmFu
Z2Upc2VhcmNoUmFuZ2U7CgoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TU3RyaW5nIChOU0V4dGVuZGVk
U3RyaW5nUHJvcGVydHlMaXN0UGFyc2luZykKCi0gKGlkKXByb3BlcnR5TGlzdDsKLSAoTlNEaWN0
aW9uYXJ5ICopcHJvcGVydHlMaXN0RnJvbVN0cmluZ3NGaWxlRm9ybWF0OwoKQGVuZAoKCgpAaW50
ZXJmYWNlIE5TU3RyaW5nIChOU1N0cmluZ0RlcHJlY2F0ZWQpCgoKCi0gKGNvbnN0IGNoYXIgKilj
U3RyaW5nIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoY29uc3QgY2hhciAqKWxvc3N5
Q1N0cmluZyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKE5TVUludGVnZXIpY1N0cmlu
Z0xlbmd0aCBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKHZvaWQpZ2V0Q1N0cmluZzoo
Y2hhciAqKWJ5dGVzIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZClnZXRDU3Ry
aW5nOihjaGFyICopYnl0ZXMgbWF4TGVuZ3RoOihOU1VJbnRlZ2VyKW1heExlbmd0aCBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKHZvaWQpZ2V0Q1N0cmluZzooY2hhciAqKWJ5dGVzIG1h
eExlbmd0aDooTlNVSW50ZWdlciltYXhMZW5ndGggcmFuZ2U6KE5TUmFuZ2UpYVJhbmdlIHJlbWFp
bmluZ1JhbmdlOihOU1JhbmdlUG9pbnRlcilsZWZ0b3ZlclJhbmdlIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKCi0gKEJPT0wpd3JpdGVUb0ZpbGU6KE5TU3RyaW5nICopcGF0aCBhdG9taWNh
bGx5OihCT09MKXVzZUF1eGlsaWFyeUZpbGUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwot
IChCT09MKXdyaXRlVG9VUkw6KE5TVVJMICopdXJsIGF0b21pY2FsbHk6KEJPT0wpYXRvbWljYWxs
eSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgotIChpZClpbml0V2l0aENvbnRlbnRzT2ZG
aWxlOihOU1N0cmluZyAqKXBhdGggX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChpZClp
bml0V2l0aENvbnRlbnRzT2ZVUkw6KE5TVVJMICopdXJsIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKKyAoaWQpc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOihOU1N0cmluZyAqKXBhdGggX19h
dHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOworIChpZClzdHJpbmdXaXRoQ29udGVudHNPZlVSTDoo
TlNVUkwgKil1cmwgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKLSAoaWQpaW5pdFdpdGhD
U3RyaW5nTm9Db3B5OihjaGFyICopYnl0ZXMgbGVuZ3RoOihOU1VJbnRlZ2VyKWxlbmd0aCBmcmVl
V2hlbkRvbmU6KEJPT0wpZnJlZUJ1ZmZlciBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0g
KGlkKWluaXRXaXRoQ1N0cmluZzooY29uc3QgY2hhciAqKWJ5dGVzIGxlbmd0aDooTlNVSW50ZWdl
cilsZW5ndGggX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChpZClpbml0V2l0aENTdHJp
bmc6KGNvbnN0IGNoYXIgKilieXRlcyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CisgKGlk
KXN0cmluZ1dpdGhDU3RyaW5nOihjb25zdCBjaGFyICopYnl0ZXMgbGVuZ3RoOihOU1VJbnRlZ2Vy
KWxlbmd0aCBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CisgKGlkKXN0cmluZ1dpdGhDU3Ry
aW5nOihjb25zdCBjaGFyICopYnl0ZXMgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCgot
ICh2b2lkKWdldENoYXJhY3RlcnM6KHVuaWNoYXIgKilidWZmZXI7CgpAZW5kCiMgNDA2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TU3Ry
aW5nLmgiIDMKI2RlZmluZSBfT0JKQ19VTklDSEFSX0hfIAoKI2RlZmluZSBOU19VTklDSEFSX0lT
X0VJR0hUX0JJVCAwCgpAaW50ZXJmYWNlIE5TU2ltcGxlQ1N0cmluZyA6IE5TU3RyaW5nIHsKQHBh
Y2thZ2UKICAgIGNoYXIgKmJ5dGVzOwogICAgaW50IG51bUJ5dGVzOwoKICAgIGludCBfdW51c2Vk
OwoKfQpAZW5kCgpAaW50ZXJmYWNlIE5TQ29uc3RhbnRTdHJpbmcgOiBOU1NpbXBsZUNTdHJpbmcK
QGVuZAojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvTlNDaGFyYWN0ZXJTZXQuaCIgMiAzCgpAY2xhc3MgTlNEYXRhOwoKZW51bSB7CiAg
ICBOU09wZW5TdGVwVW5pY29kZVJlc2VydmVkQmFzZSA9IDB4RjQwMAp9OwoKQGludGVyZmFjZSBO
U0NoYXJhY3RlclNldCA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TTXV0YWJsZUNvcHlpbmcsIE5T
Q29kaW5nPgoKKyAoaWQpY29udHJvbENoYXJhY3RlclNldDsKKyAoaWQpd2hpdGVzcGFjZUNoYXJh
Y3RlclNldDsKKyAoaWQpd2hpdGVzcGFjZUFuZE5ld2xpbmVDaGFyYWN0ZXJTZXQ7CisgKGlkKWRl
Y2ltYWxEaWdpdENoYXJhY3RlclNldDsKKyAoaWQpbGV0dGVyQ2hhcmFjdGVyU2V0OworIChpZCls
b3dlcmNhc2VMZXR0ZXJDaGFyYWN0ZXJTZXQ7CisgKGlkKXVwcGVyY2FzZUxldHRlckNoYXJhY3Rl
clNldDsKKyAoaWQpbm9uQmFzZUNoYXJhY3RlclNldDsKKyAoaWQpYWxwaGFudW1lcmljQ2hhcmFj
dGVyU2V0OworIChpZClkZWNvbXBvc2FibGVDaGFyYWN0ZXJTZXQ7CisgKGlkKWlsbGVnYWxDaGFy
YWN0ZXJTZXQ7CisgKGlkKXB1bmN0dWF0aW9uQ2hhcmFjdGVyU2V0OwoKKyAoaWQpY2FwaXRhbGl6
ZWRMZXR0ZXJDaGFyYWN0ZXJTZXQ7CgoKKyAoaWQpc3ltYm9sQ2hhcmFjdGVyU2V0OwoKCisgKGlk
KW5ld2xpbmVDaGFyYWN0ZXJTZXQ7CgoKKyAoaWQpY2hhcmFjdGVyU2V0V2l0aFJhbmdlOihOU1Jh
bmdlKWFSYW5nZTsKKyAoaWQpY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzooTlNT
dHJpbmcgKilhU3RyaW5nOworIChpZCljaGFyYWN0ZXJTZXRXaXRoQml0bWFwUmVwcmVzZW50YXRp
b246KE5TRGF0YSAqKWRhdGE7CisgKGlkKWNoYXJhY3RlclNldFdpdGhDb250ZW50c09mRmlsZToo
TlNTdHJpbmcgKilmTmFtZTsKCi0gKEJPT0wpY2hhcmFjdGVySXNNZW1iZXI6KHVuaWNoYXIpYUNo
YXJhY3RlcjsKLSAoTlNEYXRhICopYml0bWFwUmVwcmVzZW50YXRpb247Ci0gKE5TQ2hhcmFjdGVy
U2V0ICopaW52ZXJ0ZWRTZXQ7CgoKLSAoQk9PTClsb25nQ2hhcmFjdGVySXNNZW1iZXI6KFVURjMy
Q2hhcil0aGVMb25nQ2hhcjsKCi0gKEJPT0wpaXNTdXBlcnNldE9mU2V0OihOU0NoYXJhY3RlclNl
dCAqKXRoZU90aGVyU2V0OwotIChCT09MKWhhc01lbWJlckluUGxhbmU6KHVpbnQ4X3QpdGhlUGxh
bmU7CgpAZW5kCgpAaW50ZXJmYWNlIE5TTXV0YWJsZUNoYXJhY3RlclNldCA6IE5TQ2hhcmFjdGVy
U2V0IDxOU0NvcHlpbmcsIE5TTXV0YWJsZUNvcHlpbmc+CgotICh2b2lkKWFkZENoYXJhY3RlcnNJ
blJhbmdlOihOU1JhbmdlKWFSYW5nZTsKLSAodm9pZClyZW1vdmVDaGFyYWN0ZXJzSW5SYW5nZToo
TlNSYW5nZSlhUmFuZ2U7Ci0gKHZvaWQpYWRkQ2hhcmFjdGVyc0luU3RyaW5nOihOU1N0cmluZyAq
KWFTdHJpbmc7Ci0gKHZvaWQpcmVtb3ZlQ2hhcmFjdGVyc0luU3RyaW5nOihOU1N0cmluZyAqKWFT
dHJpbmc7Ci0gKHZvaWQpZm9ybVVuaW9uV2l0aENoYXJhY3RlclNldDooTlNDaGFyYWN0ZXJTZXQg
KilvdGhlclNldDsKLSAodm9pZClmb3JtSW50ZXJzZWN0aW9uV2l0aENoYXJhY3RlclNldDooTlND
aGFyYWN0ZXJTZXQgKilvdGhlclNldDsKLSAodm9pZClpbnZlcnQ7CgpAZW5kCiMgMTYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRh
dGlvbi5oIiAyIDMKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9OU0RhdGEuaCIgMSAzCgoKCgoKCgpAY2xhc3MgTlNTdHJpbmcsIE5T
VVJMLCBOU0Vycm9yOwoKCgoKZW51bSB7CiAgICBOU0RhdGFSZWFkaW5nTWFwcGVkID0gMVVMIDw8
IDAsCiAgICBOU0RhdGFSZWFkaW5nVW5jYWNoZWQgPSAxVUwgPDwgMQp9Owp0eXBlZGVmIE5TVUlu
dGVnZXIgTlNEYXRhUmVhZGluZ09wdGlvbnM7CgplbnVtIHsKICAgIE5TRGF0YVdyaXRpbmdBdG9t
aWMgPSAxVUwgPDwgMAp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNEYXRhV3JpdGluZ09wdGlvbnM7
CgoKZW51bSB7CiAgICBOU01hcHBlZFJlYWQgPSBOU0RhdGFSZWFkaW5nTWFwcGVkLAogICAgTlNV
bmNhY2hlZFJlYWQgPSBOU0RhdGFSZWFkaW5nVW5jYWNoZWQKfTsKCmVudW0gewogICAgTlNBdG9t
aWNXcml0ZSA9IE5TRGF0YVdyaXRpbmdBdG9taWMKfTsKCgoKZW51bSB7CiAgICBOU0RhdGFTZWFy
Y2hCYWNrd2FyZHMgPSAxVUwgPDwgMCwKICAgIE5TRGF0YVNlYXJjaEFuY2hvcmVkID0gMVVMIDw8
IDEKfTsKCnR5cGVkZWYgTlNVSW50ZWdlciBOU0RhdGFTZWFyY2hPcHRpb25zOwoKCgpAaW50ZXJm
YWNlIE5TRGF0YSA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TTXV0YWJsZUNvcHlpbmcsIE5TQ29k
aW5nPgoKLSAoTlNVSW50ZWdlcilsZW5ndGg7Ci0gKGNvbnN0IHZvaWQgKilieXRlczsKCkBlbmQK
CkBpbnRlcmZhY2UgTlNEYXRhIChOU0V4dGVuZGVkRGF0YSkKCi0gKE5TU3RyaW5nICopZGVzY3Jp
cHRpb247Ci0gKHZvaWQpZ2V0Qnl0ZXM6KHZvaWQgKilidWZmZXIgbGVuZ3RoOihOU1VJbnRlZ2Vy
KWxlbmd0aDsKLSAodm9pZClnZXRCeXRlczoodm9pZCAqKWJ1ZmZlciByYW5nZTooTlNSYW5nZSly
YW5nZTsKLSAoQk9PTClpc0VxdWFsVG9EYXRhOihOU0RhdGEgKilvdGhlcjsKLSAoTlNEYXRhICop
c3ViZGF0YVdpdGhSYW5nZTooTlNSYW5nZSlyYW5nZTsKLSAoQk9PTCl3cml0ZVRvRmlsZTooTlNT
dHJpbmcgKilwYXRoIGF0b21pY2FsbHk6KEJPT0wpdXNlQXV4aWxpYXJ5RmlsZTsKLSAoQk9PTCl3
cml0ZVRvVVJMOihOU1VSTCAqKXVybCBhdG9taWNhbGx5OihCT09MKWF0b21pY2FsbHk7CgotIChC
T09MKXdyaXRlVG9GaWxlOihOU1N0cmluZyAqKXBhdGggb3B0aW9uczooTlNEYXRhV3JpdGluZ09w
dGlvbnMpd3JpdGVPcHRpb25zTWFzayBlcnJvcjooTlNFcnJvciAqKillcnJvclB0cjsKLSAoQk9P
TCl3cml0ZVRvVVJMOihOU1VSTCAqKXVybCBvcHRpb25zOihOU0RhdGFXcml0aW5nT3B0aW9ucyl3
cml0ZU9wdGlvbnNNYXNrIGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwoKLSAoTlNSYW5nZSly
YW5nZU9mRGF0YTooTlNEYXRhICopZGF0YVRvRmluZCBvcHRpb25zOihOU0RhdGFTZWFyY2hPcHRp
b25zKW1hc2sgcmFuZ2U6KE5TUmFuZ2Upc2VhcmNoUmFuZ2UgOwoKQGVuZAoKQGludGVyZmFjZSBO
U0RhdGEgKE5TRGF0YUNyZWF0aW9uKQoKKyAoaWQpZGF0YTsKKyAoaWQpZGF0YVdpdGhCeXRlczoo
Y29uc3Qgdm9pZCAqKWJ5dGVzIGxlbmd0aDooTlNVSW50ZWdlcilsZW5ndGg7CisgKGlkKWRhdGFX
aXRoQnl0ZXNOb0NvcHk6KHZvaWQgKilieXRlcyBsZW5ndGg6KE5TVUludGVnZXIpbGVuZ3RoOwoK
KyAoaWQpZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCAqKWJ5dGVzIGxlbmd0aDooTlNVSW50ZWdl
cilsZW5ndGggZnJlZVdoZW5Eb25lOihCT09MKWI7CgoKKyAoaWQpZGF0YVdpdGhDb250ZW50c09m
RmlsZTooTlNTdHJpbmcgKilwYXRoIG9wdGlvbnM6KE5TRGF0YVJlYWRpbmdPcHRpb25zKXJlYWRP
cHRpb25zTWFzayBlcnJvcjooTlNFcnJvciAqKillcnJvclB0cjsKKyAoaWQpZGF0YVdpdGhDb250
ZW50c09mVVJMOihOU1VSTCAqKXVybCBvcHRpb25zOihOU0RhdGFSZWFkaW5nT3B0aW9ucylyZWFk
T3B0aW9uc01hc2sgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7CgorIChpZClkYXRhV2l0aENv
bnRlbnRzT2ZGaWxlOihOU1N0cmluZyAqKXBhdGg7CisgKGlkKWRhdGFXaXRoQ29udGVudHNPZlVS
TDooTlNVUkwgKil1cmw7CisgKGlkKWRhdGFXaXRoQ29udGVudHNPZk1hcHBlZEZpbGU6KE5TU3Ry
aW5nICopcGF0aDsKLSAoaWQpaW5pdFdpdGhCeXRlczooY29uc3Qgdm9pZCAqKWJ5dGVzIGxlbmd0
aDooTlNVSW50ZWdlcilsZW5ndGg7Ci0gKGlkKWluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQgKili
eXRlcyBsZW5ndGg6KE5TVUludGVnZXIpbGVuZ3RoOwoKLSAoaWQpaW5pdFdpdGhCeXRlc05vQ29w
eToodm9pZCAqKWJ5dGVzIGxlbmd0aDooTlNVSW50ZWdlcilsZW5ndGggZnJlZVdoZW5Eb25lOihC
T09MKWI7CgoKLSAoaWQpaW5pdFdpdGhDb250ZW50c09mRmlsZTooTlNTdHJpbmcgKilwYXRoIG9w
dGlvbnM6KE5TRGF0YVJlYWRpbmdPcHRpb25zKXJlYWRPcHRpb25zTWFzayBlcnJvcjooTlNFcnJv
ciAqKillcnJvclB0cjsKLSAoaWQpaW5pdFdpdGhDb250ZW50c09mVVJMOihOU1VSTCAqKXVybCBv
cHRpb25zOihOU0RhdGFSZWFkaW5nT3B0aW9ucylyZWFkT3B0aW9uc01hc2sgZXJyb3I6KE5TRXJy
b3IgKiopZXJyb3JQdHI7CgotIChpZClpbml0V2l0aENvbnRlbnRzT2ZGaWxlOihOU1N0cmluZyAq
KXBhdGg7Ci0gKGlkKWluaXRXaXRoQ29udGVudHNPZlVSTDooTlNVUkwgKil1cmw7Ci0gKGlkKWlu
aXRXaXRoQ29udGVudHNPZk1hcHBlZEZpbGU6KE5TU3RyaW5nICopcGF0aDsKLSAoaWQpaW5pdFdp
dGhEYXRhOihOU0RhdGEgKilkYXRhOworIChpZClkYXRhV2l0aERhdGE6KE5TRGF0YSAqKWRhdGE7
CgpAZW5kCgpAaW50ZXJmYWNlIE5TRGF0YSAoTlNEZXByZWNhdGVkKQoKCgotICh2b2lkKWdldEJ5
dGVzOih2b2lkICopYnVmZmVyOwoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TTXV0YWJsZURhdGEgOiBO
U0RhdGEKCi0gKHZvaWQgKiltdXRhYmxlQnl0ZXM7Ci0gKHZvaWQpc2V0TGVuZ3RoOihOU1VJbnRl
Z2VyKWxlbmd0aDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNNdXRhYmxlRGF0YSAoTlNFeHRlbmRlZE11
dGFibGVEYXRhKQoKLSAodm9pZClhcHBlbmRCeXRlczooY29uc3Qgdm9pZCAqKWJ5dGVzIGxlbmd0
aDooTlNVSW50ZWdlcilsZW5ndGg7Ci0gKHZvaWQpYXBwZW5kRGF0YTooTlNEYXRhICopb3RoZXI7
Ci0gKHZvaWQpaW5jcmVhc2VMZW5ndGhCeTooTlNVSW50ZWdlcilleHRyYUxlbmd0aDsKLSAodm9p
ZClyZXBsYWNlQnl0ZXNJblJhbmdlOihOU1JhbmdlKXJhbmdlIHdpdGhCeXRlczooY29uc3Qgdm9p
ZCAqKWJ5dGVzOwotICh2b2lkKXJlc2V0Qnl0ZXNJblJhbmdlOihOU1JhbmdlKXJhbmdlOwotICh2
b2lkKXNldERhdGE6KE5TRGF0YSAqKWRhdGE7CgotICh2b2lkKXJlcGxhY2VCeXRlc0luUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2Ugd2l0aEJ5dGVzOihjb25zdCB2b2lkICopcmVwbGFjZW1lbnRCeXRlcyBs
ZW5ndGg6KE5TVUludGVnZXIpcmVwbGFjZW1lbnRMZW5ndGg7CgoKQGVuZAoKQGludGVyZmFjZSBO
U011dGFibGVEYXRhIChOU011dGFibGVEYXRhQ3JlYXRpb24pCgorIChpZClkYXRhV2l0aENhcGFj
aXR5OihOU1VJbnRlZ2VyKWFOdW1JdGVtczsKKyAoaWQpZGF0YVdpdGhMZW5ndGg6KE5TVUludGVn
ZXIpbGVuZ3RoOwotIChpZClpbml0V2l0aENhcGFjaXR5OihOU1VJbnRlZ2VyKWNhcGFjaXR5Owot
IChpZClpbml0V2l0aExlbmd0aDooTlNVSW50ZWdlcilsZW5ndGg7CgpAZW5kCgoKCgoKQGludGVy
ZmFjZSBOU1B1cmdlYWJsZURhdGEgOiBOU011dGFibGVEYXRhIDxOU0Rpc2NhcmRhYmxlQ29udGVu
dD4gewpAcHJpdmF0ZQogICAgTlNVSW50ZWdlciBfbGVuZ3RoOwogICAgaW50MzJfdCBfYWNjZXNz
Q291bnQ7CiAgICB1aW50OF90IF9wcml2YXRlWzMyXTsKICAgIHZvaWQgKl9yZXNlcnZlZDsKfQoK
QGVuZAojIDE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNEYXRlRm9ybWF0dGVyLmgiIDEgMwoK
CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL05TRm9ybWF0dGVyLmgiIDEgMwoKCgoKCgoKQGNsYXNzIE5TU3RyaW5nOwpAY2xhc3Mg
TlNBdHRyaWJ1dGVkU3RyaW5nOwpAY2xhc3MgTlNEaWN0aW9uYXJ5OwoKQGludGVyZmFjZSBOU0Zv
cm1hdHRlciA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TQ29kaW5nPgoKLSAoTlNTdHJpbmcgKilz
dHJpbmdGb3JPYmplY3RWYWx1ZTooaWQpb2JqOwoKLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0
cmlidXRlZFN0cmluZ0Zvck9iamVjdFZhbHVlOihpZClvYmogd2l0aERlZmF1bHRBdHRyaWJ1dGVz
OihOU0RpY3Rpb25hcnkgKilhdHRyczsKCi0gKE5TU3RyaW5nICopZWRpdGluZ1N0cmluZ0Zvck9i
amVjdFZhbHVlOihpZClvYmo7CgotIChCT09MKWdldE9iamVjdFZhbHVlOihvdXQgaWQgKilvYmog
Zm9yU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBlcnJvckRlc2NyaXB0aW9uOihvdXQgTlNTdHJp
bmcgKiopZXJyb3I7CgotIChCT09MKWlzUGFydGlhbFN0cmluZ1ZhbGlkOihOU1N0cmluZyAqKXBh
cnRpYWxTdHJpbmcgbmV3RWRpdGluZ1N0cmluZzooTlNTdHJpbmcgKiopbmV3U3RyaW5nIGVycm9y
RGVzY3JpcHRpb246KE5TU3RyaW5nICoqKWVycm9yOwoKCi0gKEJPT0wpaXNQYXJ0aWFsU3RyaW5n
VmFsaWQ6KE5TU3RyaW5nICoqKXBhcnRpYWxTdHJpbmdQdHIgcHJvcG9zZWRTZWxlY3RlZFJhbmdl
OihOU1JhbmdlUG9pbnRlcilwcm9wb3NlZFNlbFJhbmdlUHRyIG9yaWdpbmFsU3RyaW5nOihOU1N0
cmluZyAqKW9yaWdTdHJpbmcgb3JpZ2luYWxTZWxlY3RlZFJhbmdlOihOU1JhbmdlKW9yaWdTZWxS
YW5nZSBlcnJvckRlc2NyaXB0aW9uOihOU1N0cmluZyAqKillcnJvcjsKCkBlbmQKIyA2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TRGF0
ZUZvcm1hdHRlci5oIiAyIDMKCgpAY2xhc3MgTlNMb2NhbGUsIE5TRGF0ZSwgTlNDYWxlbmRhciwg
TlNUaW1lWm9uZSwgTlNFcnJvciwgTlNBcnJheSwgTlNNdXRhYmxlRGljdGlvbmFyeTsKCkBpbnRl
cmZhY2UgTlNEYXRlRm9ybWF0dGVyIDogTlNGb3JtYXR0ZXIgewpAcHJpdmF0ZQogICAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqX2F0dHJpYnV0ZXM7CiAgICBDRkRhdGVGb3JtYXR0ZXJSZWYgX2Zvcm1h
dHRlcjsKICAgIE5TVUludGVnZXIgX2NvdW50ZXI7Cn0KCgoKCgotIChCT09MKWdldE9iamVjdFZh
bHVlOihvdXQgaWQgKilvYmogZm9yU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyByYW5nZTooaW5v
dXQgTlNSYW5nZSAqKXJhbmdlcCBlcnJvcjoob3V0IE5TRXJyb3IgKiopZXJyb3IgOwoKCgoKLSAo
TlNTdHJpbmcgKilzdHJpbmdGcm9tRGF0ZTooTlNEYXRlICopZGF0ZSA7Ci0gKE5TRGF0ZSAqKWRh
dGVGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyA7CgoKCmVudW0gewogICAgTlNEYXRlRm9y
bWF0dGVyTm9TdHlsZSA9IGtDRkRhdGVGb3JtYXR0ZXJOb1N0eWxlLAogICAgTlNEYXRlRm9ybWF0
dGVyU2hvcnRTdHlsZSA9IGtDRkRhdGVGb3JtYXR0ZXJTaG9ydFN0eWxlLAogICAgTlNEYXRlRm9y
bWF0dGVyTWVkaXVtU3R5bGUgPSBrQ0ZEYXRlRm9ybWF0dGVyTWVkaXVtU3R5bGUsCiAgICBOU0Rh
dGVGb3JtYXR0ZXJMb25nU3R5bGUgPSBrQ0ZEYXRlRm9ybWF0dGVyTG9uZ1N0eWxlLAogICAgTlNE
YXRlRm9ybWF0dGVyRnVsbFN0eWxlID0ga0NGRGF0ZUZvcm1hdHRlckZ1bGxTdHlsZQp9Owp0eXBl
ZGVmIE5TVUludGVnZXIgTlNEYXRlRm9ybWF0dGVyU3R5bGU7CgplbnVtIHsKICAgIE5TRGF0ZUZv
cm1hdHRlckJlaGF2aW9yRGVmYXVsdCA9IDAsCgogICAgTlNEYXRlRm9ybWF0dGVyQmVoYXZpb3Ix
MF8wID0gMTAwMCwKCiAgICBOU0RhdGVGb3JtYXR0ZXJCZWhhdmlvcjEwXzQgPSAxMDQwLAp9Owp0
eXBlZGVmIE5TVUludGVnZXIgTlNEYXRlRm9ybWF0dGVyQmVoYXZpb3I7CgoKCisgKE5TU3RyaW5n
ICopbG9jYWxpemVkU3RyaW5nRnJvbURhdGU6KE5TRGF0ZSAqKWRhdGUgZGF0ZVN0eWxlOihOU0Rh
dGVGb3JtYXR0ZXJTdHlsZSlkc3R5bGUgdGltZVN0eWxlOihOU0RhdGVGb3JtYXR0ZXJTdHlsZSl0
c3R5bGUgOwoKKyAoTlNTdHJpbmcgKilkYXRlRm9ybWF0RnJvbVRlbXBsYXRlOihOU1N0cmluZyAq
KXRtcGxhdGUgb3B0aW9uczooTlNVSW50ZWdlcilvcHRzIGxvY2FsZTooTlNMb2NhbGUgKilsb2Nh
bGUgOwoKCgoKLSAoTlNTdHJpbmcgKilkYXRlRm9ybWF0OwoKLSAoTlNEYXRlRm9ybWF0dGVyU3R5
bGUpZGF0ZVN0eWxlIDsKLSAodm9pZClzZXREYXRlU3R5bGU6KE5TRGF0ZUZvcm1hdHRlclN0eWxl
KXN0eWxlIDsKCi0gKE5TRGF0ZUZvcm1hdHRlclN0eWxlKXRpbWVTdHlsZSA7Ci0gKHZvaWQpc2V0
VGltZVN0eWxlOihOU0RhdGVGb3JtYXR0ZXJTdHlsZSlzdHlsZSA7CgotIChOU0xvY2FsZSAqKWxv
Y2FsZSA7Ci0gKHZvaWQpc2V0TG9jYWxlOihOU0xvY2FsZSAqKWxvY2FsZSA7CgotIChCT09MKWdl
bmVyYXRlc0NhbGVuZGFyRGF0ZXMgOwotICh2b2lkKXNldEdlbmVyYXRlc0NhbGVuZGFyRGF0ZXM6
KEJPT0wpYiA7CgotIChOU0RhdGVGb3JtYXR0ZXJCZWhhdmlvcilmb3JtYXR0ZXJCZWhhdmlvciA7
Ci0gKHZvaWQpc2V0Rm9ybWF0dGVyQmVoYXZpb3I6KE5TRGF0ZUZvcm1hdHRlckJlaGF2aW9yKWJl
aGF2aW9yIDsKCisgKE5TRGF0ZUZvcm1hdHRlckJlaGF2aW9yKWRlZmF1bHRGb3JtYXR0ZXJCZWhh
dmlvciA7CisgKHZvaWQpc2V0RGVmYXVsdEZvcm1hdHRlckJlaGF2aW9yOihOU0RhdGVGb3JtYXR0
ZXJCZWhhdmlvciliZWhhdmlvciA7CgotICh2b2lkKXNldERhdGVGb3JtYXQ6KE5TU3RyaW5nICop
c3RyaW5nIDsKCi0gKE5TVGltZVpvbmUgKil0aW1lWm9uZSA7Ci0gKHZvaWQpc2V0VGltZVpvbmU6
KE5TVGltZVpvbmUgKil0eiA7CgotIChOU0NhbGVuZGFyICopY2FsZW5kYXIgOwotICh2b2lkKXNl
dENhbGVuZGFyOihOU0NhbGVuZGFyICopY2FsZW5kYXIgOwoKLSAoQk9PTClpc0xlbmllbnQgOwot
ICh2b2lkKXNldExlbmllbnQ6KEJPT0wpYiA7CgotIChOU0RhdGUgKil0d29EaWdpdFN0YXJ0RGF0
ZSA7Ci0gKHZvaWQpc2V0VHdvRGlnaXRTdGFydERhdGU6KE5TRGF0ZSAqKWRhdGUgOwoKLSAoTlNE
YXRlICopZGVmYXVsdERhdGUgOwotICh2b2lkKXNldERlZmF1bHREYXRlOihOU0RhdGUgKilkYXRl
IDsKCi0gKE5TQXJyYXkgKillcmFTeW1ib2xzIDsKLSAodm9pZClzZXRFcmFTeW1ib2xzOihOU0Fy
cmF5ICopYXJyYXkgOwoKLSAoTlNBcnJheSAqKW1vbnRoU3ltYm9scyA7Ci0gKHZvaWQpc2V0TW9u
dGhTeW1ib2xzOihOU0FycmF5ICopYXJyYXkgOwoKLSAoTlNBcnJheSAqKXNob3J0TW9udGhTeW1i
b2xzIDsKLSAodm9pZClzZXRTaG9ydE1vbnRoU3ltYm9sczooTlNBcnJheSAqKWFycmF5IDsKCi0g
KE5TQXJyYXkgKil3ZWVrZGF5U3ltYm9scyA7Ci0gKHZvaWQpc2V0V2Vla2RheVN5bWJvbHM6KE5T
QXJyYXkgKilhcnJheSA7CgotIChOU0FycmF5ICopc2hvcnRXZWVrZGF5U3ltYm9scyA7Ci0gKHZv
aWQpc2V0U2hvcnRXZWVrZGF5U3ltYm9sczooTlNBcnJheSAqKWFycmF5IDsKCi0gKE5TU3RyaW5n
ICopQU1TeW1ib2wgOwotICh2b2lkKXNldEFNU3ltYm9sOihOU1N0cmluZyAqKXN0cmluZyA7Cgot
IChOU1N0cmluZyAqKVBNU3ltYm9sIDsKLSAodm9pZClzZXRQTVN5bWJvbDooTlNTdHJpbmcgKilz
dHJpbmcgOwoKLSAoTlNBcnJheSAqKWxvbmdFcmFTeW1ib2xzIDsKLSAodm9pZClzZXRMb25nRXJh
U3ltYm9sczooTlNBcnJheSAqKWFycmF5IDsKCi0gKE5TQXJyYXkgKil2ZXJ5U2hvcnRNb250aFN5
bWJvbHMgOwotICh2b2lkKXNldFZlcnlTaG9ydE1vbnRoU3ltYm9sczooTlNBcnJheSAqKWFycmF5
IDsKCi0gKE5TQXJyYXkgKilzdGFuZGFsb25lTW9udGhTeW1ib2xzIDsKLSAodm9pZClzZXRTdGFu
ZGFsb25lTW9udGhTeW1ib2xzOihOU0FycmF5ICopYXJyYXkgOwoKLSAoTlNBcnJheSAqKXNob3J0
U3RhbmRhbG9uZU1vbnRoU3ltYm9scyA7Ci0gKHZvaWQpc2V0U2hvcnRTdGFuZGFsb25lTW9udGhT
eW1ib2xzOihOU0FycmF5ICopYXJyYXkgOwoKLSAoTlNBcnJheSAqKXZlcnlTaG9ydFN0YW5kYWxv
bmVNb250aFN5bWJvbHMgOwotICh2b2lkKXNldFZlcnlTaG9ydFN0YW5kYWxvbmVNb250aFN5bWJv
bHM6KE5TQXJyYXkgKilhcnJheSA7CgotIChOU0FycmF5ICopdmVyeVNob3J0V2Vla2RheVN5bWJv
bHMgOwotICh2b2lkKXNldFZlcnlTaG9ydFdlZWtkYXlTeW1ib2xzOihOU0FycmF5ICopYXJyYXkg
OwoKLSAoTlNBcnJheSAqKXN0YW5kYWxvbmVXZWVrZGF5U3ltYm9scyA7Ci0gKHZvaWQpc2V0U3Rh
bmRhbG9uZVdlZWtkYXlTeW1ib2xzOihOU0FycmF5ICopYXJyYXkgOwoKLSAoTlNBcnJheSAqKXNo
b3J0U3RhbmRhbG9uZVdlZWtkYXlTeW1ib2xzIDsKLSAodm9pZClzZXRTaG9ydFN0YW5kYWxvbmVX
ZWVrZGF5U3ltYm9sczooTlNBcnJheSAqKWFycmF5IDsKCi0gKE5TQXJyYXkgKil2ZXJ5U2hvcnRT
dGFuZGFsb25lV2Vla2RheVN5bWJvbHMgOwotICh2b2lkKXNldFZlcnlTaG9ydFN0YW5kYWxvbmVX
ZWVrZGF5U3ltYm9sczooTlNBcnJheSAqKWFycmF5IDsKCi0gKE5TQXJyYXkgKilxdWFydGVyU3lt
Ym9scyA7Ci0gKHZvaWQpc2V0UXVhcnRlclN5bWJvbHM6KE5TQXJyYXkgKilhcnJheSA7CgotIChO
U0FycmF5ICopc2hvcnRRdWFydGVyU3ltYm9scyA7Ci0gKHZvaWQpc2V0U2hvcnRRdWFydGVyU3lt
Ym9sczooTlNBcnJheSAqKWFycmF5IDsKCi0gKE5TQXJyYXkgKilzdGFuZGFsb25lUXVhcnRlclN5
bWJvbHMgOwotICh2b2lkKXNldFN0YW5kYWxvbmVRdWFydGVyU3ltYm9sczooTlNBcnJheSAqKWFy
cmF5IDsKCi0gKE5TQXJyYXkgKilzaG9ydFN0YW5kYWxvbmVRdWFydGVyU3ltYm9scyA7Ci0gKHZv
aWQpc2V0U2hvcnRTdGFuZGFsb25lUXVhcnRlclN5bWJvbHM6KE5TQXJyYXkgKilhcnJheSA7Cgot
IChOU0RhdGUgKilncmVnb3JpYW5TdGFydERhdGUgOwotICh2b2lkKXNldEdyZWdvcmlhblN0YXJ0
RGF0ZTooTlNEYXRlICopZGF0ZSA7CgotIChCT09MKWRvZXNSZWxhdGl2ZURhdGVGb3JtYXR0aW5n
IDsKLSAodm9pZClzZXREb2VzUmVsYXRpdmVEYXRlRm9ybWF0dGluZzooQk9PTCliIDsKCkBlbmQK
CgpAaW50ZXJmYWNlIE5TRGF0ZUZvcm1hdHRlciAoTlNEYXRlRm9ybWF0dGVyQ29tcGF0aWJpbGl0
eSkKCi0gKGlkKWluaXRXaXRoRGF0ZUZvcm1hdDooTlNTdHJpbmcgKilmb3JtYXQgYWxsb3dOYXR1
cmFsTGFuZ3VhZ2U6KEJPT0wpZmxhZzsKLSAoQk9PTClhbGxvd3NOYXR1cmFsTGFuZ3VhZ2U7CgpA
ZW5kCiMgMjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TRGVjaW1hbC5oIiAxIDMKCgoKCgoKCkBj
bGFzcyBOU0RpY3Rpb25hcnk7CiMgMjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNEZWNpbWFsLmgiIDMKZW51bSB7CiAgICBOU1JvdW5k
UGxhaW4sCiAgICBOU1JvdW5kRG93biwKICAgIE5TUm91bmRVcCwKICAgIE5TUm91bmRCYW5rZXJz
Cn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1JvdW5kaW5nTW9kZTsKCmVudW0gewogICAgTlNDYWxj
dWxhdGlvbk5vRXJyb3IgPSAwLAogICAgTlNDYWxjdWxhdGlvbkxvc3NPZlByZWNpc2lvbiwKICAg
IE5TQ2FsY3VsYXRpb25VbmRlcmZsb3csCiAgICBOU0NhbGN1bGF0aW9uT3ZlcmZsb3csCiAgICBO
U0NhbGN1bGF0aW9uRGl2aWRlQnlaZXJvCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU0NhbGN1bGF0
aW9uRXJyb3I7CgojZGVmaW5lIE5TRGVjaW1hbE1heFNpemUgKDgpCgoKI2RlZmluZSBOU0RlY2lt
YWxOb1NjYWxlIFNIUlRfTUFYCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBzaWduZWQgaW50IF9leHBv
bmVudDo4OwogICAgdW5zaWduZWQgaW50IF9sZW5ndGg6NDsKICAgIHVuc2lnbmVkIGludCBfaXNO
ZWdhdGl2ZToxOwogICAgdW5zaWduZWQgaW50IF9pc0NvbXBhY3Q6MTsKICAgIHVuc2lnbmVkIGlu
dCBfcmVzZXJ2ZWQ6MTg7CiAgICB1bnNpZ25lZCBzaG9ydCBfbWFudGlzc2FbKDgpXTsKfSBOU0Rl
Y2ltYWw7CgpzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkg
Qk9PTCBOU0RlY2ltYWxJc05vdEFOdW1iZXIoY29uc3QgTlNEZWNpbWFsICpkY20pCiAgeyByZXR1
cm4gKChkY20tPl9sZW5ndGggPT0gMCkgJiYgZGNtLT5faXNOZWdhdGl2ZSk7IH0KCgoKZXh0ZXJu
ICJDIiB2b2lkIE5TRGVjaW1hbENvcHkoTlNEZWNpbWFsICpkZXN0aW5hdGlvbiwgY29uc3QgTlNE
ZWNpbWFsICpzb3VyY2UpOwoKZXh0ZXJuICJDIiB2b2lkIE5TRGVjaW1hbENvbXBhY3QoTlNEZWNp
bWFsICpudW1iZXIpOwoKZXh0ZXJuICJDIiBOU0NvbXBhcmlzb25SZXN1bHQgTlNEZWNpbWFsQ29t
cGFyZShjb25zdCBOU0RlY2ltYWwgKmxlZnRPcGVyYW5kLCBjb25zdCBOU0RlY2ltYWwgKnJpZ2h0
T3BlcmFuZCk7CgoKZXh0ZXJuICJDIiB2b2lkIE5TRGVjaW1hbFJvdW5kKE5TRGVjaW1hbCAqcmVz
dWx0LCBjb25zdCBOU0RlY2ltYWwgKm51bWJlciwgTlNJbnRlZ2VyIHNjYWxlLCBOU1JvdW5kaW5n
TW9kZSByb3VuZGluZ01vZGUpOwoKCgoKZXh0ZXJuICJDIiBOU0NhbGN1bGF0aW9uRXJyb3IgTlNE
ZWNpbWFsTm9ybWFsaXplKE5TRGVjaW1hbCAqbnVtYmVyMSwgTlNEZWNpbWFsICpudW1iZXIyLCBO
U1JvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpOwoKZXh0ZXJuICJDIiBOU0NhbGN1bGF0aW9uRXJy
b3IgTlNEZWNpbWFsQWRkKE5TRGVjaW1hbCAqcmVzdWx0LCBjb25zdCBOU0RlY2ltYWwgKmxlZnRP
cGVyYW5kLCBjb25zdCBOU0RlY2ltYWwgKnJpZ2h0T3BlcmFuZCwgTlNSb3VuZGluZ01vZGUgcm91
bmRpbmdNb2RlKTsKCgpleHRlcm4gIkMiIE5TQ2FsY3VsYXRpb25FcnJvciBOU0RlY2ltYWxTdWJ0
cmFjdChOU0RlY2ltYWwgKnJlc3VsdCwgY29uc3QgTlNEZWNpbWFsICpsZWZ0T3BlcmFuZCwgY29u
c3QgTlNEZWNpbWFsICpyaWdodE9wZXJhbmQsIE5TUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSk7
CgoKZXh0ZXJuICJDIiBOU0NhbGN1bGF0aW9uRXJyb3IgTlNEZWNpbWFsTXVsdGlwbHkoTlNEZWNp
bWFsICpyZXN1bHQsIGNvbnN0IE5TRGVjaW1hbCAqbGVmdE9wZXJhbmQsIGNvbnN0IE5TRGVjaW1h
bCAqcmlnaHRPcGVyYW5kLCBOU1JvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpOwoKCmV4dGVybiAi
QyIgTlNDYWxjdWxhdGlvbkVycm9yIE5TRGVjaW1hbERpdmlkZShOU0RlY2ltYWwgKnJlc3VsdCwg
Y29uc3QgTlNEZWNpbWFsICpsZWZ0T3BlcmFuZCwgY29uc3QgTlNEZWNpbWFsICpyaWdodE9wZXJh
bmQsIE5TUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSk7CgoKCmV4dGVybiAiQyIgTlNDYWxjdWxh
dGlvbkVycm9yIE5TRGVjaW1hbFBvd2VyKE5TRGVjaW1hbCAqcmVzdWx0LCBjb25zdCBOU0RlY2lt
YWwgKm51bWJlciwgTlNVSW50ZWdlciBwb3dlciwgTlNSb3VuZGluZ01vZGUgcm91bmRpbmdNb2Rl
KTsKCmV4dGVybiAiQyIgTlNDYWxjdWxhdGlvbkVycm9yIE5TRGVjaW1hbE11bHRpcGx5QnlQb3dl
ck9mMTAoTlNEZWNpbWFsICpyZXN1bHQsIGNvbnN0IE5TRGVjaW1hbCAqbnVtYmVyLCBzaG9ydCBw
b3dlciwgTlNSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKTsKCmV4dGVybiAiQyIgTlNTdHJpbmcg
Kk5TRGVjaW1hbFN0cmluZyhjb25zdCBOU0RlY2ltYWwgKmRjbSwgaWQgbG9jYWxlKTsKIyAyMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9G
b3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvTlNEZWNpbWFsTnVtYmVyLmgiIDEgMwoKCgoKCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1Nj
YW5uZXIuaCIgMSAzCgoKCgoKCkBjbGFzcyBOU1N0cmluZywgTlNDaGFyYWN0ZXJTZXQsIE5TRGlj
dGlvbmFyeTsKCkBpbnRlcmZhY2UgTlNTY2FubmVyIDogTlNPYmplY3QgPE5TQ29weWluZz4KCi0g
KE5TU3RyaW5nICopc3RyaW5nOwotIChOU1VJbnRlZ2VyKXNjYW5Mb2NhdGlvbjsKLSAodm9pZClz
ZXRTY2FuTG9jYXRpb246KE5TVUludGVnZXIpcG9zOwotICh2b2lkKXNldENoYXJhY3RlcnNUb0Jl
U2tpcHBlZDooTlNDaGFyYWN0ZXJTZXQgKilzZXQ7Ci0gKHZvaWQpc2V0Q2FzZVNlbnNpdGl2ZToo
Qk9PTClmbGFnOwotICh2b2lkKXNldExvY2FsZTooaWQpbG9jYWxlOwoKQGVuZAoKQGludGVyZmFj
ZSBOU1NjYW5uZXIgKE5TRXh0ZW5kZWRTY2FubmVyKQoKLSAoTlNDaGFyYWN0ZXJTZXQgKiljaGFy
YWN0ZXJzVG9CZVNraXBwZWQ7Ci0gKEJPT0wpY2FzZVNlbnNpdGl2ZTsKLSAoaWQpbG9jYWxlOwoK
LSAoQk9PTClzY2FuSW50OihpbnQgKil2YWx1ZTsKCi0gKEJPT0wpc2NhbkludGVnZXI6KE5TSW50
ZWdlciAqKXZhbHVlOwotIChCT09MKXNjYW5IZXhMb25nTG9uZzoodW5zaWduZWQgbG9uZyBsb25n
ICopcmVzdWx0OwotIChCT09MKXNjYW5IZXhGbG9hdDooZmxvYXQgKilyZXN1bHQ7Ci0gKEJPT0wp
c2NhbkhleERvdWJsZTooZG91YmxlICopcmVzdWx0OwoKLSAoQk9PTClzY2FuSGV4SW50Oih1bnNp
Z25lZCAqKXZhbHVlOwotIChCT09MKXNjYW5Mb25nTG9uZzoobG9uZyBsb25nICopdmFsdWU7Ci0g
KEJPT0wpc2NhbkZsb2F0OihmbG9hdCAqKXZhbHVlOwotIChCT09MKXNjYW5Eb3VibGU6KGRvdWJs
ZSAqKXZhbHVlOwoKLSAoQk9PTClzY2FuU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBpbnRvU3Ry
aW5nOihOU1N0cmluZyAqKil2YWx1ZTsKLSAoQk9PTClzY2FuQ2hhcmFjdGVyc0Zyb21TZXQ6KE5T
Q2hhcmFjdGVyU2V0ICopc2V0IGludG9TdHJpbmc6KE5TU3RyaW5nICoqKXZhbHVlOwoKLSAoQk9P
TClzY2FuVXBUb1N0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgaW50b1N0cmluZzooTlNTdHJpbmcg
KiopdmFsdWU7Ci0gKEJPT0wpc2NhblVwVG9DaGFyYWN0ZXJzRnJvbVNldDooTlNDaGFyYWN0ZXJT
ZXQgKilzZXQgaW50b1N0cmluZzooTlNTdHJpbmcgKiopdmFsdWU7CgotIChCT09MKWlzQXRFbmQ7
CgotIChpZClpbml0V2l0aFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmc7CisgKGlkKXNjYW5uZXJX
aXRoU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZzsKKyAoaWQpbG9jYWxpemVkU2Nhbm5lcldpdGhT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nOwoKQGVuZAojIDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNEZWNpbWFsTnVtYmVyLmgiIDIg
MwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL05TRGljdGlvbmFyeS5oIiAxIDMKCgoKCgoKCkBjbGFzcyBOU0FycmF5LCBOU1NldCwg
TlNTdHJpbmcsIE5TVVJMOwoKCgpAaW50ZXJmYWNlIE5TRGljdGlvbmFyeSA6IE5TT2JqZWN0IDxO
U0NvcHlpbmcsIE5TTXV0YWJsZUNvcHlpbmcsIE5TQ29kaW5nLCBOU0Zhc3RFbnVtZXJhdGlvbj4K
Ci0gKE5TVUludGVnZXIpY291bnQ7Ci0gKGlkKW9iamVjdEZvcktleTooaWQpYUtleTsKLSAoTlNF
bnVtZXJhdG9yICopa2V5RW51bWVyYXRvcjsKCkBlbmQKCkBpbnRlcmZhY2UgTlNEaWN0aW9uYXJ5
IChOU0V4dGVuZGVkRGljdGlvbmFyeSkKCi0gKE5TQXJyYXkgKilhbGxLZXlzOwotIChOU0FycmF5
ICopYWxsS2V5c0Zvck9iamVjdDooaWQpYW5PYmplY3Q7Ci0gKE5TQXJyYXkgKilhbGxWYWx1ZXM7
Ci0gKE5TU3RyaW5nICopZGVzY3JpcHRpb247Ci0gKE5TU3RyaW5nICopZGVzY3JpcHRpb25JblN0
cmluZ3NGaWxlRm9ybWF0OwotIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uV2l0aExvY2FsZTooaWQp
bG9jYWxlOwotIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uV2l0aExvY2FsZTooaWQpbG9jYWxlIGlu
ZGVudDooTlNVSW50ZWdlcilsZXZlbDsKLSAoQk9PTClpc0VxdWFsVG9EaWN0aW9uYXJ5OihOU0Rp
Y3Rpb25hcnkgKilvdGhlckRpY3Rpb25hcnk7Ci0gKE5TRW51bWVyYXRvciAqKW9iamVjdEVudW1l
cmF0b3I7Ci0gKE5TQXJyYXkgKilvYmplY3RzRm9yS2V5czooTlNBcnJheSAqKWtleXMgbm90Rm91
bmRNYXJrZXI6KGlkKW1hcmtlcjsKLSAoQk9PTCl3cml0ZVRvRmlsZTooTlNTdHJpbmcgKilwYXRo
IGF0b21pY2FsbHk6KEJPT0wpdXNlQXV4aWxpYXJ5RmlsZTsKLSAoQk9PTCl3cml0ZVRvVVJMOihO
U1VSTCAqKXVybCBhdG9taWNhbGx5OihCT09MKWF0b21pY2FsbHk7CgotIChOU0FycmF5ICopa2V5
c1NvcnRlZEJ5VmFsdWVVc2luZ1NlbGVjdG9yOihTRUwpY29tcGFyYXRvcjsKLSAodm9pZClnZXRP
YmplY3RzOihpZCAqKW9iamVjdHMgYW5kS2V5czooaWQgKilrZXlzOwoKCi0gKHZvaWQpZW51bWVy
YXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOih2b2lkICheKShpZCBrZXksIGlkIG9iaiwgQk9P
TCAqc3RvcCkpYmxvY2sgOwotICh2b2lkKWVudW1lcmF0ZUtleXNBbmRPYmplY3RzV2l0aE9wdGlv
bnM6KE5TRW51bWVyYXRpb25PcHRpb25zKW9wdHMgdXNpbmdCbG9jazoodm9pZCAoXikoaWQga2V5
LCBpZCBvYmosIEJPT0wgKnN0b3ApKWJsb2NrIDsKCi0gKE5TQXJyYXkgKilrZXlzU29ydGVkQnlW
YWx1ZVVzaW5nQ29tcGFyYXRvcjooTlNDb21wYXJhdG9yKWNtcHRyIDsKLSAoTlNBcnJheSAqKWtl
eXNTb3J0ZWRCeVZhbHVlV2l0aE9wdGlvbnM6KE5TU29ydE9wdGlvbnMpb3B0cyB1c2luZ0NvbXBh
cmF0b3I6KE5TQ29tcGFyYXRvciljbXB0ciA7CgotIChOU1NldCAqKWtleXNPZkVudHJpZXNQYXNz
aW5nVGVzdDooQk9PTCAoXikoaWQga2V5LCBpZCBvYmosIEJPT0wgKnN0b3ApKXByZWRpY2F0ZSA7
Ci0gKE5TU2V0ICopa2V5c09mRW50cmllc1dpdGhPcHRpb25zOihOU0VudW1lcmF0aW9uT3B0aW9u
cylvcHRzIHBhc3NpbmdUZXN0OihCT09MICheKShpZCBrZXksIGlkIG9iaiwgQk9PTCAqc3RvcCkp
cHJlZGljYXRlIDsKCgpAZW5kCgpAaW50ZXJmYWNlIE5TRGljdGlvbmFyeSAoTlNEaWN0aW9uYXJ5
Q3JlYXRpb24pCgorIChpZClkaWN0aW9uYXJ5OworIChpZClkaWN0aW9uYXJ5V2l0aE9iamVjdDoo
aWQpb2JqZWN0IGZvcktleTooaWQpa2V5OworIChpZClkaWN0aW9uYXJ5V2l0aE9iamVjdHM6KGlk
ICopb2JqZWN0cyBmb3JLZXlzOihpZCAqKWtleXMgY291bnQ6KE5TVUludGVnZXIpY250OworIChp
ZClkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOihpZClmaXJzdE9iamVjdCwgLi4uIF9fYXR0
cmlidXRlX18oKHNlbnRpbmVsKDAsMSkpKTsKKyAoaWQpZGljdGlvbmFyeVdpdGhEaWN0aW9uYXJ5
OihOU0RpY3Rpb25hcnkgKilkaWN0OworIChpZClkaWN0aW9uYXJ5V2l0aE9iamVjdHM6KE5TQXJy
YXkgKilvYmplY3RzIGZvcktleXM6KE5TQXJyYXkgKilrZXlzOwoKLSAoaWQpaW5pdFdpdGhPYmpl
Y3RzOihpZCAqKW9iamVjdHMgZm9yS2V5czooaWQgKilrZXlzIGNvdW50OihOU1VJbnRlZ2VyKWNu
dDsKLSAoaWQpaW5pdFdpdGhPYmplY3RzQW5kS2V5czooaWQpZmlyc3RPYmplY3QsIC4uLiBfX2F0
dHJpYnV0ZV9fKChzZW50aW5lbCgwLDEpKSk7Ci0gKGlkKWluaXRXaXRoRGljdGlvbmFyeTooTlNE
aWN0aW9uYXJ5ICopb3RoZXJEaWN0aW9uYXJ5OwotIChpZClpbml0V2l0aERpY3Rpb25hcnk6KE5T
RGljdGlvbmFyeSAqKW90aGVyRGljdGlvbmFyeSBjb3B5SXRlbXM6KEJPT0wpZmxhZzsKLSAoaWQp
aW5pdFdpdGhPYmplY3RzOihOU0FycmF5ICopb2JqZWN0cyBmb3JLZXlzOihOU0FycmF5ICopa2V5
czsKCisgKGlkKWRpY3Rpb25hcnlXaXRoQ29udGVudHNPZkZpbGU6KE5TU3RyaW5nICopcGF0aDsK
KyAoaWQpZGljdGlvbmFyeVdpdGhDb250ZW50c09mVVJMOihOU1VSTCAqKXVybDsKLSAoaWQpaW5p
dFdpdGhDb250ZW50c09mRmlsZTooTlNTdHJpbmcgKilwYXRoOwotIChpZClpbml0V2l0aENvbnRl
bnRzT2ZVUkw6KE5TVVJMICopdXJsOwoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TTXV0YWJsZURpY3Rp
b25hcnkgOiBOU0RpY3Rpb25hcnkKCi0gKHZvaWQpcmVtb3ZlT2JqZWN0Rm9yS2V5OihpZClhS2V5
OwotICh2b2lkKXNldE9iamVjdDooaWQpYW5PYmplY3QgZm9yS2V5OihpZClhS2V5OwoKQGVuZAoK
QGludGVyZmFjZSBOU011dGFibGVEaWN0aW9uYXJ5IChOU0V4dGVuZGVkTXV0YWJsZURpY3Rpb25h
cnkpCgotICh2b2lkKWFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5ICopb3Ro
ZXJEaWN0aW9uYXJ5OwotICh2b2lkKXJlbW92ZUFsbE9iamVjdHM7Ci0gKHZvaWQpcmVtb3ZlT2Jq
ZWN0c0ZvcktleXM6KE5TQXJyYXkgKilrZXlBcnJheTsKLSAodm9pZClzZXREaWN0aW9uYXJ5OihO
U0RpY3Rpb25hcnkgKilvdGhlckRpY3Rpb25hcnk7CgpAZW5kCgpAaW50ZXJmYWNlIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKE5TTXV0YWJsZURpY3Rpb25hcnlDcmVhdGlvbikKCisgKGlkKWRpY3Rpb25h
cnlXaXRoQ2FwYWNpdHk6KE5TVUludGVnZXIpbnVtSXRlbXM7Ci0gKGlkKWluaXRXaXRoQ2FwYWNp
dHk6KE5TVUludGVnZXIpbnVtSXRlbXM7CgpAZW5kCiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0RlY2ltYWxOdW1iZXIuaCIgMiAz
CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0RlY2ltYWxOdW1iZXJFeGFjdG5lc3NF
eGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0RlY2ltYWxOdW1iZXJPdmVy
Zmxvd0V4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TRGVjaW1hbE51bWJl
clVuZGVyZmxvd0V4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TRGVjaW1h
bE51bWJlckRpdmlkZUJ5WmVyb0V4Y2VwdGlvbjsKCgoKQGNsYXNzIE5TRGVjaW1hbE51bWJlcjsK
CkBwcm90b2NvbCBOU0RlY2ltYWxOdW1iZXJCZWhhdmlvcnMKCi0gKE5TUm91bmRpbmdNb2RlKXJv
dW5kaW5nTW9kZTsKCi0gKHNob3J0KXNjYWxlOwoKCi0gKE5TRGVjaW1hbE51bWJlciAqKWV4Y2Vw
dGlvbkR1cmluZ09wZXJhdGlvbjooU0VMKW9wZXJhdGlvbiBlcnJvcjooTlNDYWxjdWxhdGlvbkVy
cm9yKWVycm9yIGxlZnRPcGVyYW5kOihOU0RlY2ltYWxOdW1iZXIgKilsZWZ0T3BlcmFuZCByaWdo
dE9wZXJhbmQ6KE5TRGVjaW1hbE51bWJlciAqKXJpZ2h0T3BlcmFuZDsKCgpAZW5kCgoKCkBpbnRl
cmZhY2UgTlNEZWNpbWFsTnVtYmVyIDogTlNOdW1iZXIgewpAcHJpdmF0ZQogICAgc2lnbmVkIGlu
dCBfZXhwb25lbnQ6ODsKICAgIHVuc2lnbmVkIGludCBfbGVuZ3RoOjQ7CiAgICB1bnNpZ25lZCBp
bnQgX2lzTmVnYXRpdmU6MTsKICAgIHVuc2lnbmVkIGludCBfaXNDb21wYWN0OjE7CiAgICB1bnNp
Z25lZCBpbnQgX3Jlc2VydmVkOjE7CiAgICB1bnNpZ25lZCBpbnQgX2hhc0V4dGVybmFsUmVmQ291
bnQ6MTsKICAgIHVuc2lnbmVkIGludCBfcmVmczoxNjsKICAgIHVuc2lnbmVkIHNob3J0IF9tYW50
aXNzYVswXTsKfQoKLSAoaWQpaW5pdFdpdGhNYW50aXNzYToodW5zaWduZWQgbG9uZyBsb25nKW1h
bnRpc3NhIGV4cG9uZW50OihzaG9ydClleHBvbmVudCBpc05lZ2F0aXZlOihCT09MKWZsYWc7Ci0g
KGlkKWluaXRXaXRoRGVjaW1hbDooTlNEZWNpbWFsKWRjbTsKLSAoaWQpaW5pdFdpdGhTdHJpbmc6
KE5TU3RyaW5nICopbnVtYmVyVmFsdWU7Ci0gKGlkKWluaXRXaXRoU3RyaW5nOihOU1N0cmluZyAq
KW51bWJlclZhbHVlIGxvY2FsZTooaWQpbG9jYWxlOwoKLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlv
bldpdGhMb2NhbGU6KGlkKWxvY2FsZTsKCi0gKE5TRGVjaW1hbClkZWNpbWFsVmFsdWU7CgorIChO
U0RlY2ltYWxOdW1iZXIgKilkZWNpbWFsTnVtYmVyV2l0aE1hbnRpc3NhOih1bnNpZ25lZCBsb25n
IGxvbmcpbWFudGlzc2EgZXhwb25lbnQ6KHNob3J0KWV4cG9uZW50IGlzTmVnYXRpdmU6KEJPT0wp
ZmxhZzsKKyAoTlNEZWNpbWFsTnVtYmVyICopZGVjaW1hbE51bWJlcldpdGhEZWNpbWFsOihOU0Rl
Y2ltYWwpZGNtOworIChOU0RlY2ltYWxOdW1iZXIgKilkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzoo
TlNTdHJpbmcgKiludW1iZXJWYWx1ZTsKKyAoTlNEZWNpbWFsTnVtYmVyICopZGVjaW1hbE51bWJl
cldpdGhTdHJpbmc6KE5TU3RyaW5nICopbnVtYmVyVmFsdWUgbG9jYWxlOihpZClsb2NhbGU7Cgor
IChOU0RlY2ltYWxOdW1iZXIgKil6ZXJvOworIChOU0RlY2ltYWxOdW1iZXIgKilvbmU7CisgKE5T
RGVjaW1hbE51bWJlciAqKW1pbmltdW1EZWNpbWFsTnVtYmVyOworIChOU0RlY2ltYWxOdW1iZXIg
KiltYXhpbXVtRGVjaW1hbE51bWJlcjsKKyAoTlNEZWNpbWFsTnVtYmVyICopbm90QU51bWJlcjsK
Ci0gKE5TRGVjaW1hbE51bWJlciAqKWRlY2ltYWxOdW1iZXJCeUFkZGluZzooTlNEZWNpbWFsTnVt
YmVyICopZGVjaW1hbE51bWJlcjsKLSAoTlNEZWNpbWFsTnVtYmVyICopZGVjaW1hbE51bWJlckJ5
QWRkaW5nOihOU0RlY2ltYWxOdW1iZXIgKilkZWNpbWFsTnVtYmVyIHdpdGhCZWhhdmlvcjooaWQg
PE5TRGVjaW1hbE51bWJlckJlaGF2aW9ycz4pYmVoYXZpb3I7CgotIChOU0RlY2ltYWxOdW1iZXIg
KilkZWNpbWFsTnVtYmVyQnlTdWJ0cmFjdGluZzooTlNEZWNpbWFsTnVtYmVyICopZGVjaW1hbE51
bWJlcjsKLSAoTlNEZWNpbWFsTnVtYmVyICopZGVjaW1hbE51bWJlckJ5U3VidHJhY3Rpbmc6KE5T
RGVjaW1hbE51bWJlciAqKWRlY2ltYWxOdW1iZXIgd2l0aEJlaGF2aW9yOihpZCA8TlNEZWNpbWFs
TnVtYmVyQmVoYXZpb3JzPiliZWhhdmlvcjsKCi0gKE5TRGVjaW1hbE51bWJlciAqKWRlY2ltYWxO
dW1iZXJCeU11bHRpcGx5aW5nQnk6KE5TRGVjaW1hbE51bWJlciAqKWRlY2ltYWxOdW1iZXI7Ci0g
KE5TRGVjaW1hbE51bWJlciAqKWRlY2ltYWxOdW1iZXJCeU11bHRpcGx5aW5nQnk6KE5TRGVjaW1h
bE51bWJlciAqKWRlY2ltYWxOdW1iZXIgd2l0aEJlaGF2aW9yOihpZCA8TlNEZWNpbWFsTnVtYmVy
QmVoYXZpb3JzPiliZWhhdmlvcjsKCi0gKE5TRGVjaW1hbE51bWJlciAqKWRlY2ltYWxOdW1iZXJC
eURpdmlkaW5nQnk6KE5TRGVjaW1hbE51bWJlciAqKWRlY2ltYWxOdW1iZXI7Ci0gKE5TRGVjaW1h
bE51bWJlciAqKWRlY2ltYWxOdW1iZXJCeURpdmlkaW5nQnk6KE5TRGVjaW1hbE51bWJlciAqKWRl
Y2ltYWxOdW1iZXIgd2l0aEJlaGF2aW9yOihpZCA8TlNEZWNpbWFsTnVtYmVyQmVoYXZpb3JzPili
ZWhhdmlvcjsKCi0gKE5TRGVjaW1hbE51bWJlciAqKWRlY2ltYWxOdW1iZXJCeVJhaXNpbmdUb1Bv
d2VyOihOU1VJbnRlZ2VyKXBvd2VyOwotIChOU0RlY2ltYWxOdW1iZXIgKilkZWNpbWFsTnVtYmVy
QnlSYWlzaW5nVG9Qb3dlcjooTlNVSW50ZWdlcilwb3dlciB3aXRoQmVoYXZpb3I6KGlkIDxOU0Rl
Y2ltYWxOdW1iZXJCZWhhdmlvcnM+KWJlaGF2aW9yOwoKLSAoTlNEZWNpbWFsTnVtYmVyICopZGVj
aW1hbE51bWJlckJ5TXVsdGlwbHlpbmdCeVBvd2VyT2YxMDooc2hvcnQpcG93ZXI7Ci0gKE5TRGVj
aW1hbE51bWJlciAqKWRlY2ltYWxOdW1iZXJCeU11bHRpcGx5aW5nQnlQb3dlck9mMTA6KHNob3J0
KXBvd2VyIHdpdGhCZWhhdmlvcjooaWQgPE5TRGVjaW1hbE51bWJlckJlaGF2aW9ycz4pYmVoYXZp
b3I7CgoKLSAoTlNEZWNpbWFsTnVtYmVyICopZGVjaW1hbE51bWJlckJ5Um91bmRpbmdBY2NvcmRp
bmdUb0JlaGF2aW9yOihpZCA8TlNEZWNpbWFsTnVtYmVyQmVoYXZpb3JzPiliZWhhdmlvcjsKCgot
IChOU0NvbXBhcmlzb25SZXN1bHQpY29tcGFyZTooTlNOdW1iZXIgKilkZWNpbWFsTnVtYmVyOwoK
CisgKHZvaWQpc2V0RGVmYXVsdEJlaGF2aW9yOihpZCA8TlNEZWNpbWFsTnVtYmVyQmVoYXZpb3Jz
PiliZWhhdmlvcjsKCisgKGlkIDxOU0RlY2ltYWxOdW1iZXJCZWhhdmlvcnM+KWRlZmF1bHRCZWhh
dmlvcjsKCgoKCgoKLSAoY29uc3QgY2hhciAqKW9iakNUeXBlOwoKCi0gKGRvdWJsZSlkb3VibGVW
YWx1ZTsKCgpAZW5kCgoKCkBpbnRlcmZhY2UgTlNEZWNpbWFsTnVtYmVySGFuZGxlciA6IE5TT2Jq
ZWN0IDxOU0RlY2ltYWxOdW1iZXJCZWhhdmlvcnMsIE5TQ29kaW5nPiB7CiAgQHByaXZhdGUKICAg
IHNpZ25lZCBpbnQgX3NjYWxlOjE2OwogICAgdW5zaWduZWQgX3JvdW5kaW5nTW9kZTozOwogICAg
dW5zaWduZWQgX3JhaXNlT25FeGFjdG5lc3M6MTsKICAgIHVuc2lnbmVkIF9yYWlzZU9uT3ZlcmZs
b3c6MTsKICAgIHVuc2lnbmVkIF9yYWlzZU9uVW5kZXJmbG93OjE7CiAgICB1bnNpZ25lZCBfcmFp
c2VPbkRpdmlkZUJ5WmVybzoxOwogICAgdW5zaWduZWQgX3VudXNlZDo5OwogICAgdm9pZCAqX3Jl
c2VydmVkMjsKICAgIHZvaWQgKl9yZXNlcnZlZDsKfQoKKyAoaWQpZGVmYXVsdERlY2ltYWxOdW1i
ZXJIYW5kbGVyOwoKCgoKCi0gKGlkKWluaXRXaXRoUm91bmRpbmdNb2RlOihOU1JvdW5kaW5nTW9k
ZSlyb3VuZGluZ01vZGUgc2NhbGU6KHNob3J0KXNjYWxlIHJhaXNlT25FeGFjdG5lc3M6KEJPT0wp
ZXhhY3QgcmFpc2VPbk92ZXJmbG93OihCT09MKW92ZXJmbG93IHJhaXNlT25VbmRlcmZsb3c6KEJP
T0wpdW5kZXJmbG93IHJhaXNlT25EaXZpZGVCeVplcm86KEJPT0wpZGl2aWRlQnlaZXJvOwoKKyAo
aWQpZGVjaW1hbE51bWJlckhhbmRsZXJXaXRoUm91bmRpbmdNb2RlOihOU1JvdW5kaW5nTW9kZSly
b3VuZGluZ01vZGUgc2NhbGU6KHNob3J0KXNjYWxlIHJhaXNlT25FeGFjdG5lc3M6KEJPT0wpZXhh
Y3QgcmFpc2VPbk92ZXJmbG93OihCT09MKW92ZXJmbG93IHJhaXNlT25VbmRlcmZsb3c6KEJPT0wp
dW5kZXJmbG93IHJhaXNlT25EaXZpZGVCeVplcm86KEJPT0wpZGl2aWRlQnlaZXJvOwoKQGVuZAoK
CgpAaW50ZXJmYWNlIE5TTnVtYmVyIChOU0RlY2ltYWxOdW1iZXJFeHRlbnNpb25zKQoKLSAoTlNE
ZWNpbWFsKWRlY2ltYWxWYWx1ZTsKCgpAZW5kCgpAaW50ZXJmYWNlIE5TU2Nhbm5lciAoTlNEZWNp
bWFsTnVtYmVyU2Nhbm5pbmcpCgotIChCT09MKXNjYW5EZWNpbWFsOihOU0RlY2ltYWwgKilkY207
CgpAZW5kCiMgMjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNFcnJvci5oIiAxIDMKIyA5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05T
RXJyb3IuaCIgMwpAY2xhc3MgTlNEaWN0aW9uYXJ5LCBOU0FycmF5OwoKCgpleHRlcm4gIkMiIE5T
U3RyaW5nICpjb25zdCBOU0NvY29hRXJyb3JEb21haW4gOwoKCmV4dGVybiAiQyIgTlNTdHJpbmcg
KmNvbnN0IE5TUE9TSVhFcnJvckRvbWFpbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5T
T1NTdGF0dXNFcnJvckRvbWFpbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TTWFjaEVy
cm9yRG9tYWluIDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1VuZGVybHlpbmdFcnJv
cktleSA7CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNMb2NhbGl6ZWREZXNjcmlwdGlv
bktleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNv
bkVycm9yS2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNMb2NhbGl6ZWRSZWNvdmVy
eVN1Z2dlc3Rpb25FcnJvcktleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TTG9jYWxp
emVkUmVjb3ZlcnlPcHRpb25zRXJyb3JLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBO
U1JlY292ZXJ5QXR0ZW1wdGVyRXJyb3JLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBO
U0hlbHBBbmNob3JFcnJvcktleSA7CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNTdHJp
bmdFbmNvZGluZ0Vycm9yS2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNVUkxFcnJv
cktleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TRmlsZVBhdGhFcnJvcktleSA7CgoK
CkBpbnRlcmZhY2UgTlNFcnJvciA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TQ29kaW5nPiB7CiAg
ICBAcHJpdmF0ZQogICAgdm9pZCAqX3Jlc2VydmVkOwogICAgTlNJbnRlZ2VyIF9jb2RlOwogICAg
TlNTdHJpbmcgKl9kb21haW47CiAgICBOU0RpY3Rpb25hcnkgKl91c2VySW5mbzsKfQoKCgotIChp
ZClpbml0V2l0aERvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29kZTooTlNJbnRlZ2VyKWNvZGUg
dXNlckluZm86KE5TRGljdGlvbmFyeSAqKWRpY3Q7CisgKGlkKWVycm9yV2l0aERvbWFpbjooTlNT
dHJpbmcgKilkb21haW4gY29kZTooTlNJbnRlZ2VyKWNvZGUgdXNlckluZm86KE5TRGljdGlvbmFy
eSAqKWRpY3Q7CgoKCi0gKE5TU3RyaW5nICopZG9tYWluOwotIChOU0ludGVnZXIpY29kZTsKCgoK
LSAoTlNEaWN0aW9uYXJ5ICopdXNlckluZm87CgoKCi0gKE5TU3RyaW5nICopbG9jYWxpemVkRGVz
Y3JpcHRpb247CgoKCgoKLSAoTlNTdHJpbmcgKilsb2NhbGl6ZWRGYWlsdXJlUmVhc29uOwoKCgot
IChOU1N0cmluZyAqKWxvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbjsKCgoKLSAoTlNBcnJheSAq
KWxvY2FsaXplZFJlY292ZXJ5T3B0aW9uczsKCgoKLSAoaWQpcmVjb3ZlcnlBdHRlbXB0ZXI7CgoK
Ci0gKE5TU3RyaW5nICopaGVscEFuY2hvcjsKCgoKCkBlbmQKCgoKQGludGVyZmFjZSBOU09iamVj
dChOU0Vycm9yUmVjb3ZlcnlBdHRlbXB0aW5nKQoKCgoKCgoKLSAodm9pZClhdHRlbXB0UmVjb3Zl
cnlGcm9tRXJyb3I6KE5TRXJyb3IgKillcnJvciBvcHRpb25JbmRleDooTlNVSW50ZWdlcilyZWNv
dmVyeU9wdGlvbkluZGV4IGRlbGVnYXRlOihpZClkZWxlZ2F0ZSBkaWRSZWNvdmVyU2VsZWN0b3I6
KFNFTClkaWRSZWNvdmVyU2VsZWN0b3IgY29udGV4dEluZm86KHZvaWQgKiljb250ZXh0SW5mbzsK
CgoKLSAoQk9PTClhdHRlbXB0UmVjb3ZlcnlGcm9tRXJyb3I6KE5TRXJyb3IgKillcnJvciBvcHRp
b25JbmRleDooTlNVSW50ZWdlcilyZWNvdmVyeU9wdGlvbkluZGV4OwoKQGVuZAojIDI1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5k
YXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9OU0V4Y2VwdGlvbi5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TRXhjZXB0aW9uLmgiIDMK
QGNsYXNzIE5TU3RyaW5nLCBOU0RpY3Rpb25hcnksIE5TQXJyYXk7CgoKCmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBOU0dlbmVyaWNFeGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBj
b25zdCBOU1JhbmdlRXhjZXB0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0ludGVy
bmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbjsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBO
U01hbGxvY0V4Y2VwdGlvbjsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU09iamVjdElu
YWNjZXNzaWJsZUV4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TT2JqZWN0
Tm90QXZhaWxhYmxlRXhjZXB0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNEZXN0
aW5hdGlvbkludmFsaWRFeGNlcHRpb247CgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNQ
b3J0VGltZW91dEV4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TSW52YWxp
ZFNlbmRQb3J0RXhjZXB0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNJbnZhbGlk
UmVjZWl2ZVBvcnRFeGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1BvcnRT
ZW5kRXhjZXB0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNQb3J0UmVjZWl2ZUV4
Y2VwdGlvbjsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU09sZFN0eWxlRXhjZXB0aW9u
OwoKCgoKX19hdHRyaWJ1dGVfXygoX19vYmpjX2V4Y2VwdGlvbl9fKSkKCkBpbnRlcmZhY2UgTlNF
eGNlcHRpb24gOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4gewogICAgQHByaXZhdGUK
ICAgIE5TU3RyaW5nICpuYW1lOwogICAgTlNTdHJpbmcgKnJlYXNvbjsKICAgIE5TRGljdGlvbmFy
eSAqdXNlckluZm87CiAgICBpZCByZXNlcnZlZDsKfQoKKyAoTlNFeGNlcHRpb24gKilleGNlcHRp
b25XaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lIHJlYXNvbjooTlNTdHJpbmcgKilyZWFzb24gdXNl
ckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwotIChpZClpbml0V2l0aE5hbWU6KE5TU3Ry
aW5nICopYU5hbWUgcmVhc29uOihOU1N0cmluZyAqKWFSZWFzb24gdXNlckluZm86KE5TRGljdGlv
bmFyeSAqKWFVc2VySW5mbzsKCi0gKE5TU3RyaW5nICopbmFtZTsKLSAoTlNTdHJpbmcgKilyZWFz
b247Ci0gKE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwoKLSAoTlNBcnJheSAqKWNhbGxTdGFja1Jl
dHVybkFkZHJlc3NlcyA7Ci0gKE5TQXJyYXkgKiljYWxsU3RhY2tTeW1ib2xzIDsKCi0gKHZvaWQp
cmFpc2U7CgpAZW5kCgpAaW50ZXJmYWNlIE5TRXhjZXB0aW9uIChOU0V4Y2VwdGlvblJhaXNpbmdD
b252ZW5pZW5jZXMpCgorICh2b2lkKXJhaXNlOihOU1N0cmluZyAqKW5hbWUgZm9ybWF0OihOU1N0
cmluZyAqKWZvcm1hdCwgLi4uIF9fYXR0cmlidXRlX18oKGZvcm1hdChfX05TU3RyaW5nX18sIDIs
IDMpKSk7CisgKHZvaWQpcmFpc2U6KE5TU3RyaW5nICopbmFtZSBmb3JtYXQ6KE5TU3RyaW5nICop
Zm9ybWF0IGFyZ3VtZW50czoodmFfbGlzdClhcmdMaXN0IF9fYXR0cmlidXRlX18oKGZvcm1hdChf
X05TU3RyaW5nX18sIDIsIDApKSk7CgpAZW5kCgoKI2RlZmluZSBOU19EVVJJTkcgQHRyeSB7CiNk
ZWZpbmUgTlNfSEFORExFUiB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmxvY2FsRXhjZXB0aW9uKSB7
CiNkZWZpbmUgTlNfRU5ESEFORExFUiB9CiNkZWZpbmUgTlNfVkFMVUVSRVRVUk4odix0KSByZXR1
cm4gKHYpCiNkZWZpbmUgTlNfVk9JRFJFVFVSTiByZXR1cm4KCgp0eXBlZGVmIHZvaWQgTlNVbmNh
dWdodEV4Y2VwdGlvbkhhbmRsZXIoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbik7CgpleHRlcm4gIkMi
IE5TVW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyICpOU0dldFVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxl
cih2b2lkKTsKZXh0ZXJuICJDIiB2b2lkIE5TU2V0VW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyKE5T
VW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyICopOwoKCkBjbGFzcyBOU0Fzc2VydGlvbkhhbmRsZXI7
CiMgMTMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL05TRXhjZXB0aW9uLmgiIDMKI2RlZmluZSBfTlNBc3NlcnRCb2R5KGNvbmRpdGlvbixk
ZXNjLGFyZzEsYXJnMixhcmczLGFyZzQsYXJnNSkgZG8geyBpZiAoIShjb25kaXRpb24pKSB7IFtb
TlNBc3NlcnRpb25IYW5kbGVyIGN1cnJlbnRIYW5kbGVyXSBoYW5kbGVGYWlsdXJlSW5NZXRob2Q6
X2NtZCBvYmplY3Q6c2VsZiBmaWxlOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpfX0ZJ
TEVfX10gbGluZU51bWJlcjpfX0xJTkVfXyBkZXNjcmlwdGlvbjooZGVzYyksIChhcmcxKSwgKGFy
ZzIpLCAoYXJnMyksIChhcmc0KSwgKGFyZzUpXTsgfSB9IHdoaWxlKDApCiMgMTQxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TRXhjZXB0
aW9uLmgiIDMKI2RlZmluZSBfTlNDQXNzZXJ0Qm9keShjb25kaXRpb24sZGVzYyxhcmcxLGFyZzIs
YXJnMyxhcmc0LGFyZzUpIGRvIHsgaWYgKCEoY29uZGl0aW9uKSkgeyBbW05TQXNzZXJ0aW9uSGFu
ZGxlciBjdXJyZW50SGFuZGxlcl0gaGFuZGxlRmFpbHVyZUluRnVuY3Rpb246W05TU3RyaW5nIHN0
cmluZ1dpdGhVVEY4U3RyaW5nOl9fUFJFVFRZX0ZVTkNUSU9OX19dIGZpbGU6W05TU3RyaW5nIHN0
cmluZ1dpdGhVVEY4U3RyaW5nOl9fRklMRV9fXSBsaW5lTnVtYmVyOl9fTElORV9fIGRlc2NyaXB0
aW9uOihkZXNjKSwgKGFyZzEpLCAoYXJnMiksIChhcmczKSwgKGFyZzQpLCAoYXJnNSldOyB9IH0g
d2hpbGUoMCkKIyAxNjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvTlNFeGNlcHRpb24uaCIgMwojZGVmaW5lIE5TQXNzZXJ0NShjb25kaXRp
b24sZGVzYyxhcmcxLGFyZzIsYXJnMyxhcmc0LGFyZzUpIF9OU0Fzc2VydEJvZHkoKGNvbmRpdGlv
biksIChkZXNjKSwgKGFyZzEpLCAoYXJnMiksIChhcmczKSwgKGFyZzQpLCAoYXJnNSkpCgoKI2Rl
ZmluZSBOU0Fzc2VydDQoY29uZGl0aW9uLGRlc2MsYXJnMSxhcmcyLGFyZzMsYXJnNCkgX05TQXNz
ZXJ0Qm9keSgoY29uZGl0aW9uKSwgKGRlc2MpLCAoYXJnMSksIChhcmcyKSwgKGFyZzMpLCAoYXJn
NCksIDApCgoKI2RlZmluZSBOU0Fzc2VydDMoY29uZGl0aW9uLGRlc2MsYXJnMSxhcmcyLGFyZzMp
IF9OU0Fzc2VydEJvZHkoKGNvbmRpdGlvbiksIChkZXNjKSwgKGFyZzEpLCAoYXJnMiksIChhcmcz
KSwgMCwgMCkKCgojZGVmaW5lIE5TQXNzZXJ0Mihjb25kaXRpb24sZGVzYyxhcmcxLGFyZzIpIF9O
U0Fzc2VydEJvZHkoKGNvbmRpdGlvbiksIChkZXNjKSwgKGFyZzEpLCAoYXJnMiksIDAsIDAsIDAp
CgoKI2RlZmluZSBOU0Fzc2VydDEoY29uZGl0aW9uLGRlc2MsYXJnMSkgX05TQXNzZXJ0Qm9keSgo
Y29uZGl0aW9uKSwgKGRlc2MpLCAoYXJnMSksIDAsIDAsIDAsIDApCgoKI2RlZmluZSBOU0Fzc2Vy
dChjb25kaXRpb24sZGVzYykgX05TQXNzZXJ0Qm9keSgoY29uZGl0aW9uKSwgKGRlc2MpLCAwLCAw
LCAwLCAwLCAwKQoKCgoKI2RlZmluZSBOU1BhcmFtZXRlckFzc2VydChjb25kaXRpb24pIF9OU0Fz
c2VydEJvZHkoKGNvbmRpdGlvbiksIEAiSW52YWxpZCBwYXJhbWV0ZXIgbm90IHNhdGlzZnlpbmc6
ICVzIiwgI2NvbmRpdGlvbiwgMCwgMCwgMCwgMCkKCgoKCgojZGVmaW5lIE5TQ0Fzc2VydDUoY29u
ZGl0aW9uLGRlc2MsYXJnMSxhcmcyLGFyZzMsYXJnNCxhcmc1KSBfTlNDQXNzZXJ0Qm9keSgoY29u
ZGl0aW9uKSwgKGRlc2MpLCAoYXJnMSksIChhcmcyKSwgKGFyZzMpLCAoYXJnNCksIChhcmc1KSkK
CgojZGVmaW5lIE5TQ0Fzc2VydDQoY29uZGl0aW9uLGRlc2MsYXJnMSxhcmcyLGFyZzMsYXJnNCkg
X05TQ0Fzc2VydEJvZHkoKGNvbmRpdGlvbiksIChkZXNjKSwgKGFyZzEpLCAoYXJnMiksIChhcmcz
KSwgKGFyZzQpLCAwKQoKCiNkZWZpbmUgTlNDQXNzZXJ0Myhjb25kaXRpb24sZGVzYyxhcmcxLGFy
ZzIsYXJnMykgX05TQ0Fzc2VydEJvZHkoKGNvbmRpdGlvbiksIChkZXNjKSwgKGFyZzEpLCAoYXJn
MiksIChhcmczKSwgMCwgMCkKCgojZGVmaW5lIE5TQ0Fzc2VydDIoY29uZGl0aW9uLGRlc2MsYXJn
MSxhcmcyKSBfTlNDQXNzZXJ0Qm9keSgoY29uZGl0aW9uKSwgKGRlc2MpLCAoYXJnMSksIChhcmcy
KSwgMCwgMCwgMCkKCgojZGVmaW5lIE5TQ0Fzc2VydDEoY29uZGl0aW9uLGRlc2MsYXJnMSkgX05T
Q0Fzc2VydEJvZHkoKGNvbmRpdGlvbiksIChkZXNjKSwgKGFyZzEpLCAwLCAwLCAwLCAwKQoKCiNk
ZWZpbmUgTlNDQXNzZXJ0KGNvbmRpdGlvbixkZXNjKSBfTlNDQXNzZXJ0Qm9keSgoY29uZGl0aW9u
KSwgKGRlc2MpLCAwLCAwLCAwLCAwLCAwKQoKCgoKI2RlZmluZSBOU0NQYXJhbWV0ZXJBc3NlcnQo
Y29uZGl0aW9uKSBfTlNDQXNzZXJ0Qm9keSgoY29uZGl0aW9uKSwgQCJJbnZhbGlkIHBhcmFtZXRl
ciBub3Qgc2F0aXNmeWluZzogJXMiLCAjY29uZGl0aW9uLCAwLCAwLCAwLCAwKQoKCgoKZXh0ZXJu
IE5TU3RyaW5nICogY29uc3QgTlNBc3NlcnRpb25IYW5kbGVyS2V5IDsKCkBpbnRlcmZhY2UgTlNB
c3NlcnRpb25IYW5kbGVyIDogTlNPYmplY3QgewogICAgQHByaXZhdGUKICAgIHZvaWQgKl9yZXNl
cnZlZDsKfQoKKyAoTlNBc3NlcnRpb25IYW5kbGVyICopY3VycmVudEhhbmRsZXI7CgotICh2b2lk
KWhhbmRsZUZhaWx1cmVJbk1ldGhvZDooU0VMKXNlbGVjdG9yIG9iamVjdDooaWQpb2JqZWN0IGZp
bGU6KE5TU3RyaW5nICopZmlsZU5hbWUgbGluZU51bWJlcjooTlNJbnRlZ2VyKWxpbmUgZGVzY3Jp
cHRpb246KE5TU3RyaW5nICopZm9ybWF0LC4uLjsKCi0gKHZvaWQpaGFuZGxlRmFpbHVyZUluRnVu
Y3Rpb246KE5TU3RyaW5nICopZnVuY3Rpb25OYW1lIGZpbGU6KE5TU3RyaW5nICopZmlsZU5hbWUg
bGluZU51bWJlcjooTlNJbnRlZ2VyKWxpbmUgZGVzY3JpcHRpb246KE5TU3RyaW5nICopZm9ybWF0
LC4uLjsKCkBlbmQKIyAyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNGaWxlSGFuZGxlLmgiIDEg
MwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvTlNGaWxlSGFuZGxlLmgiIDMKQGNsYXNzIE5TU3RyaW5nLCBOU0RhdGEsIE5TRXJyb3I7
CgpAaW50ZXJmYWNlIE5TRmlsZUhhbmRsZSA6IE5TT2JqZWN0CgotIChOU0RhdGEgKilhdmFpbGFi
bGVEYXRhOwoKLSAoTlNEYXRhICopcmVhZERhdGFUb0VuZE9mRmlsZTsKLSAoTlNEYXRhICopcmVh
ZERhdGFPZkxlbmd0aDooTlNVSW50ZWdlcilsZW5ndGg7CgotICh2b2lkKXdyaXRlRGF0YTooTlNE
YXRhICopZGF0YTsKCi0gKHVuc2lnbmVkIGxvbmcgbG9uZylvZmZzZXRJbkZpbGU7Ci0gKHVuc2ln
bmVkIGxvbmcgbG9uZylzZWVrVG9FbmRPZkZpbGU7Ci0gKHZvaWQpc2Vla1RvRmlsZU9mZnNldDoo
dW5zaWduZWQgbG9uZyBsb25nKW9mZnNldDsKCi0gKHZvaWQpdHJ1bmNhdGVGaWxlQXRPZmZzZXQ6
KHVuc2lnbmVkIGxvbmcgbG9uZylvZmZzZXQ7Ci0gKHZvaWQpc3luY2hyb25pemVGaWxlOwotICh2
b2lkKWNsb3NlRmlsZTsKCkBlbmQKCkBpbnRlcmZhY2UgTlNGaWxlSGFuZGxlIChOU0ZpbGVIYW5k
bGVDcmVhdGlvbikKCisgKGlkKWZpbGVIYW5kbGVXaXRoU3RhbmRhcmRJbnB1dDsKKyAoaWQpZmls
ZUhhbmRsZVdpdGhTdGFuZGFyZE91dHB1dDsKKyAoaWQpZmlsZUhhbmRsZVdpdGhTdGFuZGFyZEVy
cm9yOworIChpZClmaWxlSGFuZGxlV2l0aE51bGxEZXZpY2U7CgorIChpZClmaWxlSGFuZGxlRm9y
UmVhZGluZ0F0UGF0aDooTlNTdHJpbmcgKilwYXRoOworIChpZClmaWxlSGFuZGxlRm9yV3JpdGlu
Z0F0UGF0aDooTlNTdHJpbmcgKilwYXRoOworIChpZClmaWxlSGFuZGxlRm9yVXBkYXRpbmdBdFBh
dGg6KE5TU3RyaW5nICopcGF0aDsKCisgKGlkKWZpbGVIYW5kbGVGb3JSZWFkaW5nRnJvbVVSTDoo
TlNVUkwgKil1cmwgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3IgOworIChpZClmaWxlSGFuZGxlRm9y
V3JpdGluZ1RvVVJMOihOU1VSTCAqKXVybCBlcnJvcjooTlNFcnJvciAqKillcnJvciA7CisgKGlk
KWZpbGVIYW5kbGVGb3JVcGRhdGluZ1VSTDooTlNVUkwgKil1cmwgZXJyb3I6KE5TRXJyb3IgKiop
ZXJyb3IgOwoKQGVuZAoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TRmlsZUhhbmRsZU9w
ZXJhdGlvbkV4Y2VwdGlvbjsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVIYW5k
bGVSZWFkQ29tcGxldGlvbk5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0
IE5TRmlsZUhhbmRsZVJlYWRUb0VuZE9mRmlsZUNvbXBsZXRpb25Ob3RpZmljYXRpb247CmV4dGVy
biAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVIYW5kbGVDb25uZWN0aW9uQWNjZXB0ZWROb3Rp
ZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVIYW5kbGVEYXRhQXZh
aWxhYmxlTm90aWZpY2F0aW9uOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TRmlsZUhh
bmRsZU5vdGlmaWNhdGlvbkRhdGFJdGVtOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNG
aWxlSGFuZGxlTm90aWZpY2F0aW9uRmlsZUhhbmRsZUl0ZW07CmV4dGVybiAiQyIgTlNTdHJpbmcg
KiBjb25zdCBOU0ZpbGVIYW5kbGVOb3RpZmljYXRpb25Nb25pdG9yTW9kZXM7CgpAaW50ZXJmYWNl
IE5TRmlsZUhhbmRsZSAoTlNGaWxlSGFuZGxlQXN5bmNocm9ub3VzQWNjZXNzKQoKLSAodm9pZCly
ZWFkSW5CYWNrZ3JvdW5kQW5kTm90aWZ5Rm9yTW9kZXM6KE5TQXJyYXkgKiltb2RlczsKLSAodm9p
ZClyZWFkSW5CYWNrZ3JvdW5kQW5kTm90aWZ5OwoKLSAodm9pZClyZWFkVG9FbmRPZkZpbGVJbkJh
Y2tncm91bmRBbmROb3RpZnlGb3JNb2RlczooTlNBcnJheSAqKW1vZGVzOwotICh2b2lkKXJlYWRU
b0VuZE9mRmlsZUluQmFja2dyb3VuZEFuZE5vdGlmeTsKCi0gKHZvaWQpYWNjZXB0Q29ubmVjdGlv
bkluQmFja2dyb3VuZEFuZE5vdGlmeUZvck1vZGVzOihOU0FycmF5ICopbW9kZXM7Ci0gKHZvaWQp
YWNjZXB0Q29ubmVjdGlvbkluQmFja2dyb3VuZEFuZE5vdGlmeTsKCi0gKHZvaWQpd2FpdEZvckRh
dGFJbkJhY2tncm91bmRBbmROb3RpZnlGb3JNb2RlczooTlNBcnJheSAqKW1vZGVzOwotICh2b2lk
KXdhaXRGb3JEYXRhSW5CYWNrZ3JvdW5kQW5kTm90aWZ5OwoKQGVuZAoKQGludGVyZmFjZSBOU0Zp
bGVIYW5kbGUgKE5TRmlsZUhhbmRsZVBsYXRmb3JtU3BlY2lmaWMpCgotIChpZClpbml0V2l0aEZp
bGVEZXNjcmlwdG9yOihpbnQpZmQgY2xvc2VPbkRlYWxsb2M6KEJPT0wpY2xvc2VvcHQ7Ci0gKGlk
KWluaXRXaXRoRmlsZURlc2NyaXB0b3I6KGludClmZDsKLSAoaW50KWZpbGVEZXNjcmlwdG9yOwoK
QGVuZAoKQGludGVyZmFjZSBOU1BpcGUgOiBOU09iamVjdAoKLSAoTlNGaWxlSGFuZGxlICopZmls
ZUhhbmRsZUZvclJlYWRpbmc7Ci0gKE5TRmlsZUhhbmRsZSAqKWZpbGVIYW5kbGVGb3JXcml0aW5n
OwoKLSAoaWQpaW5pdDsKKyAoaWQpcGlwZTsKCkBlbmQKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvTlNGaWxlTWFuYWdlci5oIiAxIDMKCgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1BhdGhVdGlsaXRpZXMuaCIgMSAz
CgoKCgoKCgpAaW50ZXJmYWNlIE5TU3RyaW5nIChOU1N0cmluZ1BhdGhFeHRlbnNpb25zKQoKKyAo
TlNTdHJpbmcgKilwYXRoV2l0aENvbXBvbmVudHM6KE5TQXJyYXkgKiljb21wb25lbnRzOwotIChO
U0FycmF5ICopcGF0aENvbXBvbmVudHM7CgotIChCT09MKWlzQWJzb2x1dGVQYXRoOwoKLSAoTlNT
dHJpbmcgKilsYXN0UGF0aENvbXBvbmVudDsKLSAoTlNTdHJpbmcgKilzdHJpbmdCeURlbGV0aW5n
TGFzdFBhdGhDb21wb25lbnQ7Ci0gKE5TU3RyaW5nICopc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OihOU1N0cmluZyAqKXN0cjsKCi0gKE5TU3RyaW5nICopcGF0aEV4dGVuc2lvbjsKLSAo
TlNTdHJpbmcgKilzdHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbjsKLSAoTlNTdHJpbmcgKilz
dHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246KE5TU3RyaW5nICopc3RyOwoKLSAoTlNTdHJp
bmcgKilzdHJpbmdCeUFiYnJldmlhdGluZ1dpdGhUaWxkZUluUGF0aDsKLSAoTlNTdHJpbmcgKilz
dHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoOwoKLSAoTlNTdHJpbmcgKilzdHJpbmdCeVN0YW5k
YXJkaXppbmdQYXRoOwoKLSAoTlNTdHJpbmcgKilzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5Q
YXRoOwoKLSAoTlNBcnJheSAqKXN0cmluZ3NCeUFwcGVuZGluZ1BhdGhzOihOU0FycmF5ICopcGF0
aHM7CgotIChOU1VJbnRlZ2VyKWNvbXBsZXRlUGF0aEludG9TdHJpbmc6KE5TU3RyaW5nICoqKW91
dHB1dE5hbWUgY2FzZVNlbnNpdGl2ZTooQk9PTClmbGFnIG1hdGNoZXNJbnRvQXJyYXk6KE5TQXJy
YXkgKiopb3V0cHV0QXJyYXkgZmlsdGVyVHlwZXM6KE5TQXJyYXkgKilmaWx0ZXJUeXBlczsKCi0g
KCBjb25zdCBjaGFyICopZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotIChCT09MKWdldEZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbjooY2hhciAqKWNuYW1lIG1heExlbmd0aDooTlNVSW50ZWdlcilt
YXg7CgpAZW5kCgpAaW50ZXJmYWNlIE5TQXJyYXkgKE5TQXJyYXlQYXRoRXh0ZW5zaW9ucykKCi0g
KE5TQXJyYXkgKilwYXRoc01hdGNoaW5nRXh0ZW5zaW9uczooTlNBcnJheSAqKWZpbHRlclR5cGVz
OwoKQGVuZAoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNVc2VyTmFtZSh2b2lkKTsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNGdWxsVXNlck5hbWUodm9pZCk7CgpleHRlcm4gIkMiIE5TU3RyaW5nICpO
U0hvbWVEaXJlY3Rvcnkodm9pZCk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TSG9tZURpcmVjdG9y
eUZvclVzZXIoTlNTdHJpbmcgKnVzZXJOYW1lKTsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVGVt
cG9yYXJ5RGlyZWN0b3J5KHZvaWQpOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNPcGVuU3RlcFJv
b3REaXJlY3Rvcnkodm9pZCk7CgplbnVtIHsKICAgIE5TQXBwbGljYXRpb25EaXJlY3RvcnkgPSAx
LAogICAgTlNEZW1vQXBwbGljYXRpb25EaXJlY3RvcnksCiAgICBOU0RldmVsb3BlckFwcGxpY2F0
aW9uRGlyZWN0b3J5LAogICAgTlNBZG1pbkFwcGxpY2F0aW9uRGlyZWN0b3J5LAogICAgTlNMaWJy
YXJ5RGlyZWN0b3J5LAogICAgTlNEZXZlbG9wZXJEaXJlY3RvcnksCiAgICBOU1VzZXJEaXJlY3Rv
cnksCiAgICBOU0RvY3VtZW50YXRpb25EaXJlY3RvcnksCgogICAgTlNEb2N1bWVudERpcmVjdG9y
eSwKCgogICAgTlNDb3JlU2VydmljZURpcmVjdG9yeSwKCgogICAgTlNBdXRvc2F2ZWRJbmZvcm1h
dGlvbkRpcmVjdG9yeSA9IDExLAoKCiAgICBOU0Rlc2t0b3BEaXJlY3RvcnkgPSAxMiwKICAgIE5T
Q2FjaGVzRGlyZWN0b3J5ID0gMTMsCiAgICBOU0FwcGxpY2F0aW9uU3VwcG9ydERpcmVjdG9yeSA9
IDE0LAoKCiAgICBOU0Rvd25sb2Fkc0RpcmVjdG9yeSA9IDE1LAoKCiAgICBOU0lucHV0TWV0aG9k
c0RpcmVjdG9yeSA9IDE2LAogICAgTlNNb3ZpZXNEaXJlY3RvcnkgPSAxNywKICAgIE5TTXVzaWNE
aXJlY3RvcnkgPSAxOCwKICAgIE5TUGljdHVyZXNEaXJlY3RvcnkgPSAxOSwKICAgIE5TUHJpbnRl
ckRlc2NyaXB0aW9uRGlyZWN0b3J5ID0gMjAsCiAgICBOU1NoYXJlZFB1YmxpY0RpcmVjdG9yeSA9
IDIxLAogICAgTlNQcmVmZXJlbmNlUGFuZXNEaXJlY3RvcnkgPSAyMiwKICAgIE5TSXRlbVJlcGxh
Y2VtZW50RGlyZWN0b3J5ID0gOTksCgogICAgTlNBbGxBcHBsaWNhdGlvbnNEaXJlY3RvcnkgPSAx
MDAsCiAgICBOU0FsbExpYnJhcmllc0RpcmVjdG9yeSA9IDEwMQp9Owp0eXBlZGVmIE5TVUludGVn
ZXIgTlNTZWFyY2hQYXRoRGlyZWN0b3J5OwoKZW51bSB7CiAgICBOU1VzZXJEb21haW5NYXNrID0g
MSwKICAgIE5TTG9jYWxEb21haW5NYXNrID0gMiwKICAgIE5TTmV0d29ya0RvbWFpbk1hc2sgPSA0
LAogICAgTlNTeXN0ZW1Eb21haW5NYXNrID0gOCwKICAgIE5TQWxsRG9tYWluc01hc2sgPSAweDBm
ZmZmCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1NlYXJjaFBhdGhEb21haW5NYXNrOwoKZXh0ZXJu
ICJDIiBOU0FycmF5ICpOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU1NlYXJj
aFBhdGhEaXJlY3RvcnkgZGlyZWN0b3J5LCBOU1NlYXJjaFBhdGhEb21haW5NYXNrIGRvbWFpbk1h
c2ssIEJPT0wgZXhwYW5kVGlsZGUpOwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Zv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNGaWxlTWFuYWdlci5oIiAyIDMKCgpAY2xhc3Mg
TlNBcnJheSwgTlNEYXRhLCBOU0RhdGUsIE5TRGlyZWN0b3J5RW51bWVyYXRvciwgTlNFcnJvciwg
TlNOdW1iZXI7CgoKCiNkZWZpbmUgTlNGb3VuZGF0aW9uVmVyc2lvbldpdGhGaWxlTWFuYWdlclJl
c291cmNlRm9ya1N1cHBvcnQgNDEyCgoKZW51bSB7CgoKICAgIE5TVm9sdW1lRW51bWVyYXRpb25T
a2lwSGlkZGVuVm9sdW1lcyA9IDFVTCA8PCAxLAoKCgogICAgTlNWb2x1bWVFbnVtZXJhdGlvblBy
b2R1Y2VGaWxlUmVmZXJlbmNlVVJMcyA9IDFVTCA8PCAyCn07Cgp0eXBlZGVmIE5TVUludGVnZXIg
TlNWb2x1bWVFbnVtZXJhdGlvbk9wdGlvbnM7CgoKZW51bSB7CgoKICAgIE5TRGlyZWN0b3J5RW51
bWVyYXRpb25Ta2lwc1N1YmRpcmVjdG9yeURlc2NlbmRhbnRzID0gMVVMIDw8IDAsCgoKCiAgICBO
U0RpcmVjdG9yeUVudW1lcmF0aW9uU2tpcHNQYWNrYWdlRGVzY2VuZGFudHMgPSAxVUwgPDwgMSwK
CgoKICAgIE5TRGlyZWN0b3J5RW51bWVyYXRpb25Ta2lwc0hpZGRlbkZpbGVzID0gMVVMIDw8IDIK
fTsKCnR5cGVkZWYgTlNVSW50ZWdlciBOU0RpcmVjdG9yeUVudW1lcmF0aW9uT3B0aW9uczsKCgpl
bnVtIHsKCgogICAgTlNGaWxlTWFuYWdlckl0ZW1SZXBsYWNlbWVudFVzaW5nTmV3TWV0YWRhdGFP
bmx5ID0gMVVMIDw8IDAsCgoKCiAgICAgTlNGaWxlTWFuYWdlckl0ZW1SZXBsYWNlbWVudFdpdGhv
dXREZWxldGluZ0JhY2t1cEl0ZW0gPSAxVUwgPDwgMQp9OwoKdHlwZWRlZiBOU1VJbnRlZ2VyIE5T
RmlsZU1hbmFnZXJJdGVtUmVwbGFjZW1lbnRPcHRpb25zOwoKQGludGVyZmFjZSBOU0ZpbGVNYW5h
Z2VyIDogTlNPYmplY3QKCgoKKyAoTlNGaWxlTWFuYWdlciAqKWRlZmF1bHRNYW5hZ2VyOwoKCgot
IChOU0FycmF5ICopbW91bnRlZFZvbHVtZVVSTHNJbmNsdWRpbmdSZXNvdXJjZVZhbHVlc0Zvcktl
eXM6KE5TQXJyYXkgKilwcm9wZXJ0eUtleXMgb3B0aW9uczooTlNWb2x1bWVFbnVtZXJhdGlvbk9w
dGlvbnMpb3B0aW9ucyA7CgoKCgoKCgotIChOU0FycmF5ICopY29udGVudHNPZkRpcmVjdG9yeUF0
VVJMOihOU1VSTCAqKXVybCBpbmNsdWRpbmdQcm9wZXJ0aWVzRm9yS2V5czooTlNBcnJheSAqKWtl
eXMgb3B0aW9uczooTlNEaXJlY3RvcnlFbnVtZXJhdGlvbk9wdGlvbnMpbWFzayBlcnJvcjooTlNF
cnJvciAqKillcnJvciA7CgoKCgotIChOU0FycmF5ICopVVJMc0ZvckRpcmVjdG9yeTooTlNTZWFy
Y2hQYXRoRGlyZWN0b3J5KWRpcmVjdG9yeSBpbkRvbWFpbnM6KE5TU2VhcmNoUGF0aERvbWFpbk1h
c2spZG9tYWluTWFzayA7CgoKCgoKLSAoTlNVUkwgKilVUkxGb3JEaXJlY3Rvcnk6KE5TU2VhcmNo
UGF0aERpcmVjdG9yeSlkaXJlY3RvcnkgaW5Eb21haW46KE5TU2VhcmNoUGF0aERvbWFpbk1hc2sp
ZG9tYWluIGFwcHJvcHJpYXRlRm9yVVJMOihOU1VSTCAqKXVybCBjcmVhdGU6KEJPT0wpc2hvdWxk
Q3JlYXRlIGVycm9yOihOU0Vycm9yICoqKWVycm9yIDsKCgoKCgotICh2b2lkKXNldERlbGVnYXRl
OihpZClkZWxlZ2F0ZTsKLSAoaWQpZGVsZWdhdGU7CgoKCgoKLSAoQk9PTClzZXRBdHRyaWJ1dGVz
OihOU0RpY3Rpb25hcnkgKilhdHRyaWJ1dGVzIG9mSXRlbUF0UGF0aDooTlNTdHJpbmcgKilwYXRo
IGVycm9yOihOU0Vycm9yICoqKWVycm9yOwoKCgoKCi0gKEJPT0wpY3JlYXRlRGlyZWN0b3J5QXRQ
YXRoOihOU1N0cmluZyAqKXBhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOihCT09MKWNy
ZWF0ZUludGVybWVkaWF0ZXMgYXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlcyBl
cnJvcjooTlNFcnJvciAqKillcnJvcjsKCgoKCgotIChOU0FycmF5ICopY29udGVudHNPZkRpcmVj
dG9yeUF0UGF0aDooTlNTdHJpbmcgKilwYXRoIGVycm9yOihOU0Vycm9yICoqKWVycm9yOwoKCgoK
Ci0gKE5TQXJyYXkgKilzdWJwYXRoc09mRGlyZWN0b3J5QXRQYXRoOihOU1N0cmluZyAqKXBhdGgg
ZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CgoKCgoKLSAoTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRl
c09mSXRlbUF0UGF0aDooTlNTdHJpbmcgKilwYXRoIGVycm9yOihOU0Vycm9yICoqKWVycm9yOwoK
CgoKCi0gKE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXNPZkZpbGVTeXN0ZW1Gb3JQYXRoOihOU1N0
cmluZyAqKXBhdGggZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CgoKCgoKLSAoQk9PTCljcmVhdGVT
eW1ib2xpY0xpbmtBdFBhdGg6KE5TU3RyaW5nICopcGF0aCB3aXRoRGVzdGluYXRpb25QYXRoOihO
U1N0cmluZyAqKWRlc3RQYXRoIGVycm9yOihOU0Vycm9yICoqKWVycm9yOwoKCgoKCi0gKE5TU3Ry
aW5nICopZGVzdGluYXRpb25PZlN5bWJvbGljTGlua0F0UGF0aDooTlNTdHJpbmcgKilwYXRoIGVy
cm9yOihOU0Vycm9yICoqKWVycm9yOwoKCgotIChCT09MKWNvcHlJdGVtQXRQYXRoOihOU1N0cmlu
ZyAqKXNyY1BhdGggdG9QYXRoOihOU1N0cmluZyAqKWRzdFBhdGggZXJyb3I6KE5TRXJyb3IgKiop
ZXJyb3I7Ci0gKEJPT0wpbW92ZUl0ZW1BdFBhdGg6KE5TU3RyaW5nICopc3JjUGF0aCB0b1BhdGg6
KE5TU3RyaW5nICopZHN0UGF0aCBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKLSAoQk9PTClsaW5r
SXRlbUF0UGF0aDooTlNTdHJpbmcgKilzcmNQYXRoIHRvUGF0aDooTlNTdHJpbmcgKilkc3RQYXRo
IGVycm9yOihOU0Vycm9yICoqKWVycm9yOwotIChCT09MKXJlbW92ZUl0ZW1BdFBhdGg6KE5TU3Ry
aW5nICopcGF0aCBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKCgoKCgotIChCT09MKWNvcHlJdGVt
QXRVUkw6KE5TVVJMICopc3JjVVJMIHRvVVJMOihOU1VSTCAqKWRzdFVSTCBlcnJvcjooTlNFcnJv
ciAqKillcnJvciA7Ci0gKEJPT0wpbW92ZUl0ZW1BdFVSTDooTlNVUkwgKilzcmNVUkwgdG9VUkw6
KE5TVVJMICopZHN0VVJMIGVycm9yOihOU0Vycm9yICoqKWVycm9yIDsKLSAoQk9PTClsaW5rSXRl
bUF0VVJMOihOU1VSTCAqKXNyY1VSTCB0b1VSTDooTlNVUkwgKilkc3RVUkwgZXJyb3I6KE5TRXJy
b3IgKiopZXJyb3IgOwotIChCT09MKXJlbW92ZUl0ZW1BdFVSTDooTlNVUkwgKilVUkwgZXJyb3I6
KE5TRXJyb3IgKiopZXJyb3IgOwoKCgotIChOU0RpY3Rpb25hcnkgKilmaWxlQXR0cmlidXRlc0F0
UGF0aDooTlNTdHJpbmcgKilwYXRoIHRyYXZlcnNlTGluazooQk9PTCl5b3JuIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKLSAoQk9PTCljaGFuZ2VGaWxlQXR0cmlidXRlczooTlNEaWN0aW9u
YXJ5ICopYXR0cmlidXRlcyBhdFBhdGg6KE5TU3RyaW5nICopcGF0aCBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7Ci0gKE5TQXJyYXkgKilkaXJlY3RvcnlDb250ZW50c0F0UGF0aDooTlNTdHJp
bmcgKilwYXRoIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoTlNEaWN0aW9uYXJ5ICop
ZmlsZVN5c3RlbUF0dHJpYnV0ZXNBdFBhdGg6KE5TU3RyaW5nICopcGF0aCBfX2F0dHJpYnV0ZV9f
KChkZXByZWNhdGVkKSk7Ci0gKE5TU3RyaW5nICopcGF0aENvbnRlbnRPZlN5bWJvbGljTGlua0F0
UGF0aDooTlNTdHJpbmcgKilwYXRoIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoQk9P
TCljcmVhdGVTeW1ib2xpY0xpbmtBdFBhdGg6KE5TU3RyaW5nICopcGF0aCBwYXRoQ29udGVudDoo
TlNTdHJpbmcgKilvdGhlcnBhdGggX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChCT09M
KWNyZWF0ZURpcmVjdG9yeUF0UGF0aDooTlNTdHJpbmcgKilwYXRoIGF0dHJpYnV0ZXM6KE5TRGlj
dGlvbmFyeSAqKWF0dHJpYnV0ZXMgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCi0gKEJP
T0wpbGlua1BhdGg6KE5TU3RyaW5nICopc3JjIHRvUGF0aDooTlNTdHJpbmcgKilkZXN0IGhhbmRs
ZXI6KGlkKWhhbmRsZXIgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChCT09MKWNvcHlQ
YXRoOihOU1N0cmluZyAqKXNyYyB0b1BhdGg6KE5TU3RyaW5nICopZGVzdCBoYW5kbGVyOihpZClo
YW5kbGVyIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoQk9PTCltb3ZlUGF0aDooTlNT
dHJpbmcgKilzcmMgdG9QYXRoOihOU1N0cmluZyAqKWRlc3QgaGFuZGxlcjooaWQpaGFuZGxlciBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKEJPT0wpcmVtb3ZlRmlsZUF0UGF0aDooTlNT
dHJpbmcgKilwYXRoIGhhbmRsZXI6KGlkKWhhbmRsZXIgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwoKCgoKLSAoTlNTdHJpbmcgKiljdXJyZW50RGlyZWN0b3J5UGF0aDsKLSAoQk9PTCljaGFu
Z2VDdXJyZW50RGlyZWN0b3J5UGF0aDooTlNTdHJpbmcgKilwYXRoOwoKCgotIChCT09MKWZpbGVF
eGlzdHNBdFBhdGg6KE5TU3RyaW5nICopcGF0aDsKLSAoQk9PTClmaWxlRXhpc3RzQXRQYXRoOihO
U1N0cmluZyAqKXBhdGggaXNEaXJlY3Rvcnk6KEJPT0wgKilpc0RpcmVjdG9yeTsKLSAoQk9PTClp
c1JlYWRhYmxlRmlsZUF0UGF0aDooTlNTdHJpbmcgKilwYXRoOwotIChCT09MKWlzV3JpdGFibGVG
aWxlQXRQYXRoOihOU1N0cmluZyAqKXBhdGg7Ci0gKEJPT0wpaXNFeGVjdXRhYmxlRmlsZUF0UGF0
aDooTlNTdHJpbmcgKilwYXRoOwotIChCT09MKWlzRGVsZXRhYmxlRmlsZUF0UGF0aDooTlNTdHJp
bmcgKilwYXRoOwoKCgotIChCT09MKWNvbnRlbnRzRXF1YWxBdFBhdGg6KE5TU3RyaW5nICopcGF0
aDEgYW5kUGF0aDooTlNTdHJpbmcgKilwYXRoMjsKCgoKLSAoTlNTdHJpbmcgKilkaXNwbGF5TmFt
ZUF0UGF0aDooTlNTdHJpbmcgKilwYXRoOwoKCgoKLSAoTlNBcnJheSAqKWNvbXBvbmVudHNUb0Rp
c3BsYXlGb3JQYXRoOihOU1N0cmluZyAqKXBhdGg7CgoKCgotIChOU0RpcmVjdG9yeUVudW1lcmF0
b3IgKillbnVtZXJhdG9yQXRQYXRoOihOU1N0cmluZyAqKXBhdGg7CgoKCgoKCi0gKE5TRGlyZWN0
b3J5RW51bWVyYXRvciAqKWVudW1lcmF0b3JBdFVSTDooTlNVUkwgKil1cmwgaW5jbHVkaW5nUHJv
cGVydGllc0ZvcktleXM6KE5TQXJyYXkgKilrZXlzIG9wdGlvbnM6KE5TRGlyZWN0b3J5RW51bWVy
YXRpb25PcHRpb25zKW1hc2sgZXJyb3JIYW5kbGVyOihCT09MICheKShOU1VSTCAqdXJsLCBOU0Vy
cm9yICplcnJvcikpaGFuZGxlciA7CgoKCgotIChOU0FycmF5ICopc3VicGF0aHNBdFBhdGg6KE5T
U3RyaW5nICopcGF0aDsKCgoKLSAoTlNEYXRhICopY29udGVudHNBdFBhdGg6KE5TU3RyaW5nICop
cGF0aDsKLSAoQk9PTCljcmVhdGVGaWxlQXRQYXRoOihOU1N0cmluZyAqKXBhdGggY29udGVudHM6
KE5TRGF0YSAqKWRhdGEgYXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cjsKCgoKLSAoIGNv
bnN0IGNoYXIgKilmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25XaXRoUGF0aDooTlNTdHJpbmcgKilw
YXRoOwoKCgotIChOU1N0cmluZyAqKXN0cmluZ1dpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb246
KGNvbnN0IGNoYXIgKilzdHIgbGVuZ3RoOihOU1VJbnRlZ2VyKWxlbjsKIyAyNDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNGaWxlTWFu
YWdlci5oIiAzCi0gKEJPT0wpcmVwbGFjZUl0ZW1BdFVSTDooTlNVUkwgKilvcmlnaW5hbEl0ZW1V
Ukwgd2l0aEl0ZW1BdFVSTDooTlNVUkwgKiluZXdJdGVtVVJMIGJhY2t1cEl0ZW1OYW1lOihOU1N0
cmluZyAqKWJhY2t1cEl0ZW1OYW1lIG9wdGlvbnM6KE5TRmlsZU1hbmFnZXJJdGVtUmVwbGFjZW1l
bnRPcHRpb25zKW9wdGlvbnMgcmVzdWx0aW5nSXRlbVVSTDooTlNVUkwgKiopcmVzdWx0aW5nVVJM
IGVycm9yOihOU0Vycm9yICoqKWVycm9yIDsKCkBlbmQKCgoKQGludGVyZmFjZSBOU09iamVjdCAo
TlNDb3B5TGlua01vdmVIYW5kbGVyKQotIChCT09MKWZpbGVNYW5hZ2VyOihOU0ZpbGVNYW5hZ2Vy
ICopZm0gc2hvdWxkUHJvY2VlZEFmdGVyRXJyb3I6KE5TRGljdGlvbmFyeSAqKWVycm9ySW5mbyBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKHZvaWQpZmlsZU1hbmFnZXI6KE5TRmlsZU1h
bmFnZXIgKilmbSB3aWxsUHJvY2Vzc1BhdGg6KE5TU3RyaW5nICopcGF0aCBfX2F0dHJpYnV0ZV9f
KChkZXByZWNhdGVkKSk7CkBlbmQKCgoKQGludGVyZmFjZSBOU09iamVjdCAoTlNGaWxlTWFuYWdl
ckZpbGVPcGVyYXRpb25BZGRpdGlvbnMpCgoKCgoKLSAoQk9PTClmaWxlTWFuYWdlcjooTlNGaWxl
TWFuYWdlciAqKWZpbGVNYW5hZ2VyIHNob3VsZENvcHlJdGVtQXRQYXRoOihOU1N0cmluZyAqKXNy
Y1BhdGggdG9QYXRoOihOU1N0cmluZyAqKWRzdFBhdGg7Ci0gKEJPT0wpZmlsZU1hbmFnZXI6KE5T
RmlsZU1hbmFnZXIgKilmaWxlTWFuYWdlciBzaG91bGRDb3B5SXRlbUF0VVJMOihOU1VSTCAqKXNy
Y1VSTCB0b1VSTDooTlNVUkwgKilkc3RVUkwgOwoKCgoKCi0gKEJPT0wpZmlsZU1hbmFnZXI6KE5T
RmlsZU1hbmFnZXIgKilmaWxlTWFuYWdlciBzaG91bGRQcm9jZWVkQWZ0ZXJFcnJvcjooTlNFcnJv
ciAqKWVycm9yIGNvcHlpbmdJdGVtQXRQYXRoOihOU1N0cmluZyAqKXNyY1BhdGggdG9QYXRoOihO
U1N0cmluZyAqKWRzdFBhdGg7Ci0gKEJPT0wpZmlsZU1hbmFnZXI6KE5TRmlsZU1hbmFnZXIgKilm
aWxlTWFuYWdlciBzaG91bGRQcm9jZWVkQWZ0ZXJFcnJvcjooTlNFcnJvciAqKWVycm9yIGNvcHlp
bmdJdGVtQXRVUkw6KE5TVVJMICopc3JjVVJMIHRvVVJMOihOU1VSTCAqKWRzdFVSTCA7CgoKCgoK
LSAoQk9PTClmaWxlTWFuYWdlcjooTlNGaWxlTWFuYWdlciAqKWZpbGVNYW5hZ2VyIHNob3VsZE1v
dmVJdGVtQXRQYXRoOihOU1N0cmluZyAqKXNyY1BhdGggdG9QYXRoOihOU1N0cmluZyAqKWRzdFBh
dGg7Ci0gKEJPT0wpZmlsZU1hbmFnZXI6KE5TRmlsZU1hbmFnZXIgKilmaWxlTWFuYWdlciBzaG91
bGRNb3ZlSXRlbUF0VVJMOihOU1VSTCAqKXNyY1VSTCB0b1VSTDooTlNVUkwgKilkc3RVUkwgOwoK
CgoKCi0gKEJPT0wpZmlsZU1hbmFnZXI6KE5TRmlsZU1hbmFnZXIgKilmaWxlTWFuYWdlciBzaG91
bGRQcm9jZWVkQWZ0ZXJFcnJvcjooTlNFcnJvciAqKWVycm9yIG1vdmluZ0l0ZW1BdFBhdGg6KE5T
U3RyaW5nICopc3JjUGF0aCB0b1BhdGg6KE5TU3RyaW5nICopZHN0UGF0aDsKLSAoQk9PTClmaWxl
TWFuYWdlcjooTlNGaWxlTWFuYWdlciAqKWZpbGVNYW5hZ2VyIHNob3VsZFByb2NlZWRBZnRlckVy
cm9yOihOU0Vycm9yICopZXJyb3IgbW92aW5nSXRlbUF0VVJMOihOU1VSTCAqKXNyY1VSTCB0b1VS
TDooTlNVUkwgKilkc3RVUkwgOwoKCgoKCi0gKEJPT0wpZmlsZU1hbmFnZXI6KE5TRmlsZU1hbmFn
ZXIgKilmaWxlTWFuYWdlciBzaG91bGRMaW5rSXRlbUF0UGF0aDooTlNTdHJpbmcgKilzcmNQYXRo
IHRvUGF0aDooTlNTdHJpbmcgKilkc3RQYXRoOwotIChCT09MKWZpbGVNYW5hZ2VyOihOU0ZpbGVN
YW5hZ2VyICopZmlsZU1hbmFnZXIgc2hvdWxkTGlua0l0ZW1BdFVSTDooTlNVUkwgKilzcmNVUkwg
dG9VUkw6KE5TVVJMICopZHN0VVJMIDsKCgoKCgotIChCT09MKWZpbGVNYW5hZ2VyOihOU0ZpbGVN
YW5hZ2VyICopZmlsZU1hbmFnZXIgc2hvdWxkUHJvY2VlZEFmdGVyRXJyb3I6KE5TRXJyb3IgKill
cnJvciBsaW5raW5nSXRlbUF0UGF0aDooTlNTdHJpbmcgKilzcmNQYXRoIHRvUGF0aDooTlNTdHJp
bmcgKilkc3RQYXRoOwotIChCT09MKWZpbGVNYW5hZ2VyOihOU0ZpbGVNYW5hZ2VyICopZmlsZU1h
bmFnZXIgc2hvdWxkUHJvY2VlZEFmdGVyRXJyb3I6KE5TRXJyb3IgKillcnJvciBsaW5raW5nSXRl
bUF0VVJMOihOU1VSTCAqKXNyY1VSTCB0b1VSTDooTlNVUkwgKilkc3RVUkwgOwoKCgoKCi0gKEJP
T0wpZmlsZU1hbmFnZXI6KE5TRmlsZU1hbmFnZXIgKilmaWxlTWFuYWdlciBzaG91bGRSZW1vdmVJ
dGVtQXRQYXRoOihOU1N0cmluZyAqKXBhdGg7Ci0gKEJPT0wpZmlsZU1hbmFnZXI6KE5TRmlsZU1h
bmFnZXIgKilmaWxlTWFuYWdlciBzaG91bGRSZW1vdmVJdGVtQXRVUkw6KE5TVVJMICopVVJMIDsK
CgoKCgotIChCT09MKWZpbGVNYW5hZ2VyOihOU0ZpbGVNYW5hZ2VyICopZmlsZU1hbmFnZXIgc2hv
dWxkUHJvY2VlZEFmdGVyRXJyb3I6KE5TRXJyb3IgKillcnJvciByZW1vdmluZ0l0ZW1BdFBhdGg6
KE5TU3RyaW5nICopcGF0aDsKLSAoQk9PTClmaWxlTWFuYWdlcjooTlNGaWxlTWFuYWdlciAqKWZp
bGVNYW5hZ2VyIHNob3VsZFByb2NlZWRBZnRlckVycm9yOihOU0Vycm9yICopZXJyb3IgcmVtb3Zp
bmdJdGVtQXRVUkw6KE5TVVJMICopVVJMIDsKCkBlbmQKCgoKQGludGVyZmFjZSBOU0RpcmVjdG9y
eUVudW1lcmF0b3IgOiBOU0VudW1lcmF0b3IKCgoKLSAoTlNEaWN0aW9uYXJ5ICopZmlsZUF0dHJp
YnV0ZXM7Ci0gKE5TRGljdGlvbmFyeSAqKWRpcmVjdG9yeUF0dHJpYnV0ZXM7CgotICh2b2lkKXNr
aXBEZXNjZW5kZW50czsKCgoKLSAoTlNVSW50ZWdlcilsZXZlbCA7CgoKCi0gKHZvaWQpc2tpcERl
c2NlbmRhbnRzIDsKCkBlbmQKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVUeXBl
OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNGaWxlVHlwZURpcmVjdG9yeTsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TRmlsZVR5cGVSZWd1bGFyOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICogY29uc3QgTlNGaWxlVHlwZVN5bWJvbGljTGluazsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
IGNvbnN0IE5TRmlsZVR5cGVTb2NrZXQ7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0Zp
bGVUeXBlQ2hhcmFjdGVyU3BlY2lhbDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TRmls
ZVR5cGVCbG9ja1NwZWNpYWw7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVUeXBl
VW5rbm93bjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TRmlsZVNpemU7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVNb2RpZmljYXRpb25EYXRlOwpleHRlcm4gIkMiIE5T
U3RyaW5nICogY29uc3QgTlNGaWxlUmVmZXJlbmNlQ291bnQ7CmV4dGVybiAiQyIgTlNTdHJpbmcg
KiBjb25zdCBOU0ZpbGVEZXZpY2VJZGVudGlmaWVyOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29u
c3QgTlNGaWxlT3duZXJBY2NvdW50TmFtZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5T
RmlsZUdyb3VwT3duZXJBY2NvdW50TmFtZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5T
RmlsZVBvc2l4UGVybWlzc2lvbnM7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVT
eXN0ZW1OdW1iZXI7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVTeXN0ZW1GaWxl
TnVtYmVyOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNGaWxlRXh0ZW5zaW9uSGlkZGVu
OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNGaWxlSEZTQ3JlYXRvckNvZGU7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVIRlNUeXBlQ29kZTsKCmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBOU0ZpbGVJbW11dGFibGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25z
dCBOU0ZpbGVBcHBlbmRPbmx5OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNGaWxlQ3Jl
YXRpb25EYXRlOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNGaWxlT3duZXJBY2NvdW50
SUQ7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVHcm91cE93bmVyQWNjb3VudElE
OwoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVCdXN5OwoKCmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU0ZpbGVTeXN0ZW1TaXplOwpleHRlcm4gIkMiIE5TU3RyaW5nICog
Y29uc3QgTlNGaWxlU3lzdGVtRnJlZVNpemU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBO
U0ZpbGVTeXN0ZW1Ob2RlczsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TRmlsZVN5c3Rl
bUZyZWVOb2RlczsKCkBpbnRlcmZhY2UgTlNEaWN0aW9uYXJ5IChOU0ZpbGVBdHRyaWJ1dGVzKQoK
LSAodW5zaWduZWQgbG9uZyBsb25nKWZpbGVTaXplOwotIChOU0RhdGUgKilmaWxlTW9kaWZpY2F0
aW9uRGF0ZTsKLSAoTlNTdHJpbmcgKilmaWxlVHlwZTsKLSAoTlNVSW50ZWdlcilmaWxlUG9zaXhQ
ZXJtaXNzaW9uczsKLSAoTlNTdHJpbmcgKilmaWxlT3duZXJBY2NvdW50TmFtZTsKLSAoTlNTdHJp
bmcgKilmaWxlR3JvdXBPd25lckFjY291bnROYW1lOwotIChOU0ludGVnZXIpZmlsZVN5c3RlbU51
bWJlcjsKLSAoTlNVSW50ZWdlcilmaWxlU3lzdGVtRmlsZU51bWJlcjsKLSAoQk9PTClmaWxlRXh0
ZW5zaW9uSGlkZGVuOwotIChPU1R5cGUpZmlsZUhGU0NyZWF0b3JDb2RlOwotIChPU1R5cGUpZmls
ZUhGU1R5cGVDb2RlOwoKLSAoQk9PTClmaWxlSXNJbW11dGFibGU7Ci0gKEJPT0wpZmlsZUlzQXBw
ZW5kT25seTsKLSAoTlNEYXRlICopZmlsZUNyZWF0aW9uRGF0ZTsKLSAoTlNOdW1iZXIgKilmaWxl
T3duZXJBY2NvdW50SUQ7Ci0gKE5TTnVtYmVyICopZmlsZUdyb3VwT3duZXJBY2NvdW50SUQ7CgpA
ZW5kCiMgMjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0luZGV4UGF0aC5oIiAxIDMKIyA5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05T
SW5kZXhQYXRoLmgiIDMKQGludGVyZmFjZSBOU0luZGV4UGF0aCA6IE5TT2JqZWN0IDxOU0NvcHlp
bmcsIE5TQ29kaW5nPiB7CiBAcHJpdmF0ZQogTlNVSW50ZWdlciAqX2luZGV4ZXM7CiBOU1VJbnRl
Z2VyIF9oYXNoOwogTlNVSW50ZWdlciBfbGVuZ3RoOwogICAgICAgIHZvaWQgKl9yZXNlcnZlZDsK
fQoKKyAoaWQpaW5kZXhQYXRoV2l0aEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OworIChpZClpbmRl
eFBhdGhXaXRoSW5kZXhlczooTlNVSW50ZWdlciAqKWluZGV4ZXMgbGVuZ3RoOihOU1VJbnRlZ2Vy
KWxlbmd0aDsKCi0gKGlkKWluaXRXaXRoSW5kZXg6KE5TVUludGVnZXIpaW5kZXg7Ci0gKGlkKWlu
aXRXaXRoSW5kZXhlczooTlNVSW50ZWdlciAqKWluZGV4ZXMgbGVuZ3RoOihOU1VJbnRlZ2VyKWxl
bmd0aDsKCi0gKE5TSW5kZXhQYXRoICopaW5kZXhQYXRoQnlBZGRpbmdJbmRleDooTlNVSW50ZWdl
cilpbmRleDsKLSAoTlNJbmRleFBhdGggKilpbmRleFBhdGhCeVJlbW92aW5nTGFzdEluZGV4OwoK
LSAoTlNVSW50ZWdlcilpbmRleEF0UG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb247Ci0gKE5T
VUludGVnZXIpbGVuZ3RoOwoKLSAodm9pZClnZXRJbmRleGVzOihOU1VJbnRlZ2VyICopaW5kZXhl
czsKCgotIChOU0NvbXBhcmlzb25SZXN1bHQpY29tcGFyZTooTlNJbmRleFBhdGggKilvdGhlck9i
amVjdDsKCkBlbmQKIyAzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNJbmRleFNldC5oIiAxIDMK
IyAzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9OU0luZGV4U2V0LmgiIDMKQGludGVyZmFjZSBOU0luZGV4U2V0IDogTlNPYmplY3QgPE5T
Q29weWluZywgTlNNdXRhYmxlQ29weWluZywgTlNDb2Rpbmc+IHsKICAgIEBwcm90ZWN0ZWQKICAg
IHN0cnVjdCB7CiAgICAgICAgTlNVSW50ZWdlciBfaXNFbXB0eToxOwogICAgICAgIE5TVUludGVn
ZXIgX2hhc1NpbmdsZVJhbmdlOjE7CiAgICAgICAgTlNVSW50ZWdlciBfY2FjaGVWYWxpZDoxOwog
ICAgICAgIE5TVUludGVnZXIgX3Jlc2VydmVkQXJyYXlCaW5kZXJDb250cm9sbGVyOjI5OwogICAg
fSBfaW5kZXhTZXRGbGFnczsKICAgIHVuaW9uIHsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICBOU1JhbmdlIF9yYW5nZTsKICAgICAgICB9IF9zaW5nbGVSYW5nZTsKICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICB2b2lkICogX2RhdGE7CiAgICAgICAgICAgIHZvaWQgKl9yZXNlcnZlZDsK
ICAgICAgICB9IF9tdWx0aXBsZVJhbmdlczsKICAgIH0gX2ludGVybmFsOwp9CgorIChpZClpbmRl
eFNldDsKKyAoaWQpaW5kZXhTZXRXaXRoSW5kZXg6KE5TVUludGVnZXIpdmFsdWU7CisgKGlkKWlu
ZGV4U2V0V2l0aEluZGV4ZXNJblJhbmdlOihOU1JhbmdlKXJhbmdlOwoKLSAoaWQpaW5pdDsKLSAo
aWQpaW5pdFdpdGhJbmRleDooTlNVSW50ZWdlcil2YWx1ZTsKLSAoaWQpaW5pdFdpdGhJbmRleGVz
SW5SYW5nZTooTlNSYW5nZSlyYW5nZTsKLSAoaWQpaW5pdFdpdGhJbmRleFNldDooTlNJbmRleFNl
dCAqKWluZGV4U2V0OwoKLSAoQk9PTClpc0VxdWFsVG9JbmRleFNldDooTlNJbmRleFNldCAqKWlu
ZGV4U2V0OwoKLSAoTlNVSW50ZWdlciljb3VudDsKCgoKLSAoTlNVSW50ZWdlcilmaXJzdEluZGV4
OwotIChOU1VJbnRlZ2VyKWxhc3RJbmRleDsKLSAoTlNVSW50ZWdlcilpbmRleEdyZWF0ZXJUaGFu
SW5kZXg6KE5TVUludGVnZXIpdmFsdWU7Ci0gKE5TVUludGVnZXIpaW5kZXhMZXNzVGhhbkluZGV4
OihOU1VJbnRlZ2VyKXZhbHVlOwotIChOU1VJbnRlZ2VyKWluZGV4R3JlYXRlclRoYW5PckVxdWFs
VG9JbmRleDooTlNVSW50ZWdlcil2YWx1ZTsKLSAoTlNVSW50ZWdlcilpbmRleExlc3NUaGFuT3JF
cXVhbFRvSW5kZXg6KE5TVUludGVnZXIpdmFsdWU7CgoKCi0gKE5TVUludGVnZXIpZ2V0SW5kZXhl
czooTlNVSW50ZWdlciAqKWluZGV4QnVmZmVyIG1heENvdW50OihOU1VJbnRlZ2VyKWJ1ZmZlclNp
emUgaW5JbmRleFJhbmdlOihOU1JhbmdlUG9pbnRlcilyYW5nZTsKCgotIChOU1VJbnRlZ2VyKWNv
dW50T2ZJbmRleGVzSW5SYW5nZTooTlNSYW5nZSlyYW5nZTsKCgotIChCT09MKWNvbnRhaW5zSW5k
ZXg6KE5TVUludGVnZXIpdmFsdWU7Ci0gKEJPT0wpY29udGFpbnNJbmRleGVzSW5SYW5nZTooTlNS
YW5nZSlyYW5nZTsKLSAoQk9PTCljb250YWluc0luZGV4ZXM6KE5TSW5kZXhTZXQgKilpbmRleFNl
dDsKCi0gKEJPT0wpaW50ZXJzZWN0c0luZGV4ZXNJblJhbmdlOihOU1JhbmdlKXJhbmdlOwoKCi0g
KHZvaWQpZW51bWVyYXRlSW5kZXhlc1VzaW5nQmxvY2s6KHZvaWQgKF4pKE5TVUludGVnZXIgaWR4
LCBCT09MICpzdG9wKSlibG9jayA7Ci0gKHZvaWQpZW51bWVyYXRlSW5kZXhlc1dpdGhPcHRpb25z
OihOU0VudW1lcmF0aW9uT3B0aW9ucylvcHRzIHVzaW5nQmxvY2s6KHZvaWQgKF4pKE5TVUludGVn
ZXIgaWR4LCBCT09MICpzdG9wKSlibG9jayA7Ci0gKHZvaWQpZW51bWVyYXRlSW5kZXhlc0luUmFu
Z2U6KE5TUmFuZ2UpcmFuZ2Ugb3B0aW9uczooTlNFbnVtZXJhdGlvbk9wdGlvbnMpb3B0cyB1c2lu
Z0Jsb2NrOih2b2lkICheKShOU1VJbnRlZ2VyIGlkeCwgQk9PTCAqc3RvcCkpYmxvY2sgOwoKLSAo
TlNVSW50ZWdlcilpbmRleFBhc3NpbmdUZXN0OihCT09MICheKShOU1VJbnRlZ2VyIGlkeCwgQk9P
TCAqc3RvcCkpcHJlZGljYXRlIDsKLSAoTlNVSW50ZWdlcilpbmRleFdpdGhPcHRpb25zOihOU0Vu
dW1lcmF0aW9uT3B0aW9ucylvcHRzIHBhc3NpbmdUZXN0OihCT09MICheKShOU1VJbnRlZ2VyIGlk
eCwgQk9PTCAqc3RvcCkpcHJlZGljYXRlIDsKLSAoTlNVSW50ZWdlcilpbmRleEluUmFuZ2U6KE5T
UmFuZ2UpcmFuZ2Ugb3B0aW9uczooTlNFbnVtZXJhdGlvbk9wdGlvbnMpb3B0cyBwYXNzaW5nVGVz
dDooQk9PTCAoXikoTlNVSW50ZWdlciBpZHgsIEJPT0wgKnN0b3ApKXByZWRpY2F0ZSA7CgotIChO
U0luZGV4U2V0ICopaW5kZXhlc1Bhc3NpbmdUZXN0OihCT09MICheKShOU1VJbnRlZ2VyIGlkeCwg
Qk9PTCAqc3RvcCkpcHJlZGljYXRlIDsKLSAoTlNJbmRleFNldCAqKWluZGV4ZXNXaXRoT3B0aW9u
czooTlNFbnVtZXJhdGlvbk9wdGlvbnMpb3B0cyBwYXNzaW5nVGVzdDooQk9PTCAoXikoTlNVSW50
ZWdlciBpZHgsIEJPT0wgKnN0b3ApKXByZWRpY2F0ZSA7Ci0gKE5TSW5kZXhTZXQgKilpbmRleGVz
SW5SYW5nZTooTlNSYW5nZSlyYW5nZSBvcHRpb25zOihOU0VudW1lcmF0aW9uT3B0aW9ucylvcHRz
IHBhc3NpbmdUZXN0OihCT09MICheKShOU1VJbnRlZ2VyIGlkeCwgQk9PTCAqc3RvcCkpcHJlZGlj
YXRlIDsKCgpAZW5kCgoKQGludGVyZmFjZSBOU011dGFibGVJbmRleFNldCA6IE5TSW5kZXhTZXQg
ewogICAgQHByb3RlY3RlZAogICAgdm9pZCAqX3Jlc2VydmVkOwp9CgotICh2b2lkKWFkZEluZGV4
ZXM6KE5TSW5kZXhTZXQgKilpbmRleFNldDsKLSAodm9pZClyZW1vdmVJbmRleGVzOihOU0luZGV4
U2V0ICopaW5kZXhTZXQ7Ci0gKHZvaWQpcmVtb3ZlQWxsSW5kZXhlczsKLSAodm9pZClhZGRJbmRl
eDooTlNVSW50ZWdlcil2YWx1ZTsKLSAodm9pZClyZW1vdmVJbmRleDooTlNVSW50ZWdlcil2YWx1
ZTsKLSAodm9pZClhZGRJbmRleGVzSW5SYW5nZTooTlNSYW5nZSlyYW5nZTsKLSAodm9pZClyZW1v
dmVJbmRleGVzSW5SYW5nZTooTlNSYW5nZSlyYW5nZTsKCgoKLSAodm9pZClzaGlmdEluZGV4ZXNT
dGFydGluZ0F0SW5kZXg6KE5TVUludGVnZXIpaW5kZXggYnk6KE5TSW50ZWdlcilkZWx0YTsKCkBl
bmQKIyAzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNJbnZvY2F0aW9uLmgiIDEgMwoKCgoKCgoK
QGNsYXNzIE5TTWV0aG9kU2lnbmF0dXJlOwoKQGludGVyZmFjZSBOU0ludm9jYXRpb24gOiBOU09i
amVjdCB7CkBwcml2YXRlCiAgICB2b2lkICpfZnJhbWU7CiAgICB2b2lkICpfcmV0ZGF0YTsKICAg
IGlkIF9zaWduYXR1cmU7CiAgICBpZCBfY29udGFpbmVyOwogICAgdWludDhfdCBfcmV0YWluZWRB
cmdzOwogICAgdWludDhfdCBfcmVzZXJ2ZWRbMTVdOwp9CgorIChOU0ludm9jYXRpb24gKilpbnZv
Y2F0aW9uV2l0aE1ldGhvZFNpZ25hdHVyZTooTlNNZXRob2RTaWduYXR1cmUgKilzaWc7CgotIChO
U01ldGhvZFNpZ25hdHVyZSAqKW1ldGhvZFNpZ25hdHVyZTsKCi0gKHZvaWQpcmV0YWluQXJndW1l
bnRzOwotIChCT09MKWFyZ3VtZW50c1JldGFpbmVkOwoKLSAoaWQpdGFyZ2V0OwotICh2b2lkKXNl
dFRhcmdldDooaWQpdGFyZ2V0OwoKLSAoU0VMKXNlbGVjdG9yOwotICh2b2lkKXNldFNlbGVjdG9y
OihTRUwpc2VsZWN0b3I7CgotICh2b2lkKWdldFJldHVyblZhbHVlOih2b2lkICopcmV0TG9jOwot
ICh2b2lkKXNldFJldHVyblZhbHVlOih2b2lkICopcmV0TG9jOwoKLSAodm9pZClnZXRBcmd1bWVu
dDoodm9pZCAqKWFyZ3VtZW50TG9jYXRpb24gYXRJbmRleDooTlNJbnRlZ2VyKWlkeDsKLSAodm9p
ZClzZXRBcmd1bWVudDoodm9pZCAqKWFyZ3VtZW50TG9jYXRpb24gYXRJbmRleDooTlNJbnRlZ2Vy
KWlkeDsKCi0gKHZvaWQpaW52b2tlOwotICh2b2lkKWludm9rZVdpdGhUYXJnZXQ6KGlkKXRhcmdl
dDsKCkBlbmQKIyAzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNLZXlWYWx1ZUNvZGluZy5oIiAx
IDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL05TS2V5VmFsdWVDb2RpbmcuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNTZXQuaCIgMSAzCgoKCgoKCgpAY2xh
c3MgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBOU1N0cmluZzsKCgoKQGludGVyZmFjZSBOU1NldCA6
IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TTXV0YWJsZUNvcHlpbmcsIE5TQ29kaW5nLCBOU0Zhc3RF
bnVtZXJhdGlvbj4KCi0gKE5TVUludGVnZXIpY291bnQ7Ci0gKGlkKW1lbWJlcjooaWQpb2JqZWN0
OwotIChOU0VudW1lcmF0b3IgKilvYmplY3RFbnVtZXJhdG9yOwoKQGVuZAoKQGludGVyZmFjZSBO
U1NldCAoTlNFeHRlbmRlZFNldCkKCi0gKE5TQXJyYXkgKilhbGxPYmplY3RzOwotIChpZClhbnlP
YmplY3Q7Ci0gKEJPT0wpY29udGFpbnNPYmplY3Q6KGlkKWFuT2JqZWN0OwotIChOU1N0cmluZyAq
KWRlc2NyaXB0aW9uOwotIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uV2l0aExvY2FsZTooaWQpbG9j
YWxlOwotIChCT09MKWludGVyc2VjdHNTZXQ6KE5TU2V0ICopb3RoZXJTZXQ7Ci0gKEJPT0wpaXNF
cXVhbFRvU2V0OihOU1NldCAqKW90aGVyU2V0OwotIChCT09MKWlzU3Vic2V0T2ZTZXQ6KE5TU2V0
ICopb3RoZXJTZXQ7CgotICh2b2lkKW1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOihTRUwpYVNl
bGVjdG9yOwotICh2b2lkKW1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOihTRUwpYVNlbGVjdG9y
IHdpdGhPYmplY3Q6KGlkKWFyZ3VtZW50OwoKLSAoTlNTZXQgKilzZXRCeUFkZGluZ09iamVjdDoo
aWQpYW5PYmplY3QgOwotIChOU1NldCAqKXNldEJ5QWRkaW5nT2JqZWN0c0Zyb21TZXQ6KE5TU2V0
ICopb3RoZXIgOwotIChOU1NldCAqKXNldEJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTooTlNBcnJh
eSAqKW90aGVyIDsKCgotICh2b2lkKWVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOih2b2lkIChe
KShpZCBvYmosIEJPT0wgKnN0b3ApKWJsb2NrIDsKLSAodm9pZCllbnVtZXJhdGVPYmplY3RzV2l0
aE9wdGlvbnM6KE5TRW51bWVyYXRpb25PcHRpb25zKW9wdHMgdXNpbmdCbG9jazoodm9pZCAoXiko
aWQgb2JqLCBCT09MICpzdG9wKSlibG9jayA7CgotIChOU1NldCAqKW9iamVjdHNQYXNzaW5nVGVz
dDooQk9PTCAoXikoaWQgb2JqLCBCT09MICpzdG9wKSlwcmVkaWNhdGUgOwotIChOU1NldCAqKW9i
amVjdHNXaXRoT3B0aW9uczooTlNFbnVtZXJhdGlvbk9wdGlvbnMpb3B0cyBwYXNzaW5nVGVzdDoo
Qk9PTCAoXikoaWQgb2JqLCBCT09MICpzdG9wKSlwcmVkaWNhdGUgOwoKCkBlbmQKCkBpbnRlcmZh
Y2UgTlNTZXQgKE5TU2V0Q3JlYXRpb24pCgorIChpZClzZXQ7CisgKGlkKXNldFdpdGhPYmplY3Q6
KGlkKW9iamVjdDsKKyAoaWQpc2V0V2l0aE9iamVjdHM6KGlkICopb2JqZWN0cyBjb3VudDooTlNV
SW50ZWdlciljbnQ7CisgKGlkKXNldFdpdGhPYmplY3RzOihpZClmaXJzdE9iaiwgLi4uIF9fYXR0
cmlidXRlX18oKHNlbnRpbmVsKDAsMSkpKTsKKyAoaWQpc2V0V2l0aFNldDooTlNTZXQgKilzZXQ7
CisgKGlkKXNldFdpdGhBcnJheTooTlNBcnJheSAqKWFycmF5OwoKLSAoaWQpaW5pdFdpdGhPYmpl
Y3RzOihpZCAqKW9iamVjdHMgY291bnQ6KE5TVUludGVnZXIpY250OwotIChpZClpbml0V2l0aE9i
amVjdHM6KGlkKWZpcnN0T2JqLCAuLi4gX19hdHRyaWJ1dGVfXygoc2VudGluZWwoMCwxKSkpOwot
IChpZClpbml0V2l0aFNldDooTlNTZXQgKilzZXQ7Ci0gKGlkKWluaXRXaXRoU2V0OihOU1NldCAq
KXNldCBjb3B5SXRlbXM6KEJPT0wpZmxhZzsKLSAoaWQpaW5pdFdpdGhBcnJheTooTlNBcnJheSAq
KWFycmF5OwoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TTXV0YWJsZVNldCA6IE5TU2V0CgotICh2b2lk
KWFkZE9iamVjdDooaWQpb2JqZWN0OwotICh2b2lkKXJlbW92ZU9iamVjdDooaWQpb2JqZWN0OwoK
QGVuZAoKQGludGVyZmFjZSBOU011dGFibGVTZXQgKE5TRXh0ZW5kZWRNdXRhYmxlU2V0KQoKLSAo
dm9pZClhZGRPYmplY3RzRnJvbUFycmF5OihOU0FycmF5ICopYXJyYXk7Ci0gKHZvaWQpaW50ZXJz
ZWN0U2V0OihOU1NldCAqKW90aGVyU2V0OwotICh2b2lkKW1pbnVzU2V0OihOU1NldCAqKW90aGVy
U2V0OwotICh2b2lkKXJlbW92ZUFsbE9iamVjdHM7Ci0gKHZvaWQpdW5pb25TZXQ6KE5TU2V0ICop
b3RoZXJTZXQ7CgotICh2b2lkKXNldFNldDooTlNTZXQgKilvdGhlclNldDsKCkBlbmQKCkBpbnRl
cmZhY2UgTlNNdXRhYmxlU2V0IChOU011dGFibGVTZXRDcmVhdGlvbikKCisgKGlkKXNldFdpdGhD
YXBhY2l0eTooTlNVSW50ZWdlciludW1JdGVtczsKLSAoaWQpaW5pdFdpdGhDYXBhY2l0eTooTlNV
SW50ZWdlciludW1JdGVtczsKCkBlbmQKCgoKQGludGVyZmFjZSBOU0NvdW50ZWRTZXQgOiBOU011
dGFibGVTZXQgewogICAgQHByaXZhdGUKICAgIGlkIF90YWJsZTsKICAgIHZvaWQgKl9yZXNlcnZl
ZDsKfQoKLSAoaWQpaW5pdFdpdGhDYXBhY2l0eTooTlNVSW50ZWdlciludW1JdGVtczsKCi0gKGlk
KWluaXRXaXRoQXJyYXk6KE5TQXJyYXkgKilhcnJheTsKLSAoaWQpaW5pdFdpdGhTZXQ6KE5TU2V0
ICopc2V0OwoKLSAoTlNVSW50ZWdlciljb3VudEZvck9iamVjdDooaWQpb2JqZWN0OwoKLSAoTlNF
bnVtZXJhdG9yICopb2JqZWN0RW51bWVyYXRvcjsKLSAodm9pZClhZGRPYmplY3Q6KGlkKW9iamVj
dDsKLSAodm9pZClyZW1vdmVPYmplY3Q6KGlkKW9iamVjdDsKCkBlbmQKIyAxMCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0tleVZhbHVl
Q29kaW5nLmgiIDIgMwoKQGNsYXNzIE5TRXJyb3IsIE5TU3RyaW5nOwoKCgoKCgoKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNVbmRlZmluZWRLZXlFeGNlcHRpb24gOwoKCgpleHRlcm4gIkMi
IE5TU3RyaW5nICpjb25zdCBOU0F2ZXJhZ2VLZXlWYWx1ZU9wZXJhdG9yIDsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqY29uc3QgTlNDb3VudEtleVZhbHVlT3BlcmF0b3IgOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICpjb25zdCBOU0Rpc3RpbmN0VW5pb25PZkFycmF5c0tleVZhbHVlT3BlcmF0b3IgOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0Rpc3RpbmN0VW5pb25PZk9iamVjdHNLZXlWYWx1ZU9w
ZXJhdG9yIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNEaXN0aW5jdFVuaW9uT2ZTZXRz
S2V5VmFsdWVPcGVyYXRvciA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TTWF4aW11bUtl
eVZhbHVlT3BlcmF0b3IgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU01pbmltdW1LZXlW
YWx1ZU9wZXJhdG9yIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNTdW1LZXlWYWx1ZU9w
ZXJhdG9yIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNVbmlvbk9mQXJyYXlzS2V5VmFs
dWVPcGVyYXRvciA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TVW5pb25PZk9iamVjdHNL
ZXlWYWx1ZU9wZXJhdG9yIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNVbmlvbk9mU2V0
c0tleVZhbHVlT3BlcmF0b3IgOwoKQGludGVyZmFjZSBOU09iamVjdChOU0tleVZhbHVlQ29kaW5n
KQoKCgorIChCT09MKWFjY2Vzc0luc3RhbmNlVmFyaWFibGVzRGlyZWN0bHk7CiMgNTUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNLZXlW
YWx1ZUNvZGluZy5oIiAzCi0gKGlkKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleTsKIyA3MCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9O
U0tleVZhbHVlQ29kaW5nLmgiIDMKLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleSA7CgoKCgoKLSAoQk9PTCl2YWxpZGF0ZVZhbHVlOihpZCAqKWlvVmFsdWUg
Zm9yS2V5OihOU1N0cmluZyAqKWluS2V5IGVycm9yOihOU0Vycm9yICoqKW91dEVycm9yIDsKIyA4
OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9OU0tleVZhbHVlQ29kaW5nLmgiIDMKLSAoTlNNdXRhYmxlQXJyYXkgKiltdXRhYmxlQXJyYXlW
YWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXkgOwojIDEwMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0tleVZhbHVlQ29kaW5nLmgiIDMK
LSAoTlNNdXRhYmxlU2V0ICopbXV0YWJsZVNldFZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleSA7
CgoKCi0gKGlkKXZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoOwotICh2b2lkKXNl
dFZhbHVlOihpZCl2YWx1ZSBmb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggOwotIChCT09M
KXZhbGlkYXRlVmFsdWU6KGlkICopaW9WYWx1ZSBmb3JLZXlQYXRoOihOU1N0cmluZyAqKWluS2V5
UGF0aCBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvciA7Ci0gKE5TTXV0YWJsZUFycmF5ICopbXV0
YWJsZUFycmF5VmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggOwotIChOU011dGFi
bGVTZXQgKiltdXRhYmxlU2V0VmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggOwoK
CgotIChpZCl2YWx1ZUZvclVuZGVmaW5lZEtleTooTlNTdHJpbmcgKilrZXkgOwoKCgotICh2b2lk
KXNldFZhbHVlOihpZCl2YWx1ZSBmb3JVbmRlZmluZWRLZXk6KE5TU3RyaW5nICopa2V5IDsKCgoK
LSAodm9pZClzZXROaWxWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXkgOwoKCgotIChOU0RpY3Rp
b25hcnkgKilkaWN0aW9uYXJ5V2l0aFZhbHVlc0ZvcktleXM6KE5TQXJyYXkgKilrZXlzIDsKCgoK
LSAodm9pZClzZXRWYWx1ZXNGb3JLZXlzV2l0aERpY3Rpb25hcnk6KE5TRGljdGlvbmFyeSAqKWtl
eWVkVmFsdWVzIDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNBcnJheShOU0tleVZhbHVlQ29kaW5nKQoK
CgotIChpZCl2YWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXkgOwoKCgotICh2b2lkKXNldFZhbHVl
OihpZCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5IDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNE
aWN0aW9uYXJ5KE5TS2V5VmFsdWVDb2RpbmcpCgoKCi0gKGlkKXZhbHVlRm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKCkBlbmQKCkBpbnRlcmZhY2UgTlNNdXRhYmxlRGljdGlvbmFyeShOU0tleVZhbHVl
Q29kaW5nKQoKCgotICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICop
a2V5IDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNTZXQoTlNLZXlWYWx1ZUNvZGluZykKCgoKLSAoaWQp
dmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5IDsKCgoKLSAodm9pZClzZXRWYWx1ZTooaWQpdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleSA7CgpAZW5kCgoKCkBpbnRlcmZhY2UgTlNPYmplY3Qo
TlNEZXByZWNhdGVkS2V5VmFsdWVDb2RpbmcpCgoKCisgKEJPT0wpdXNlU3RvcmVkQWNjZXNzb3Ig
X19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChpZClzdG9yZWRWYWx1ZUZvcktleTooTlNT
dHJpbmcgKilrZXkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotICh2b2lkKXRha2VTdG9y
ZWRWYWx1ZTooaWQpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleSBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7CgoKCi0gKHZvaWQpdGFrZVZhbHVlOihpZCl2YWx1ZSBmb3JLZXk6KE5TU3Ry
aW5nICopa2V5IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZCl0YWtlVmFsdWU6
KGlkKXZhbHVlIGZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7Ci0gKGlkKWhhbmRsZVF1ZXJ5V2l0aFVuYm91bmRLZXk6KE5TU3RyaW5nICop
a2V5IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZCloYW5kbGVUYWtlVmFsdWU6
KGlkKXZhbHVlIGZvclVuYm91bmRLZXk6KE5TU3RyaW5nICopa2V5IF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKLSAodm9pZCl1bmFibGVUb1NldE5pbEZvcktleTooTlNTdHJpbmcgKilrZXkg
X19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChOU0RpY3Rpb25hcnkgKil2YWx1ZXNGb3JL
ZXlzOihOU0FycmF5ICopa2V5cyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKHZvaWQp
dGFrZVZhbHVlc0Zyb21EaWN0aW9uYXJ5OihOU0RpY3Rpb25hcnkgKilwcm9wZXJ0aWVzIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCkBlbmQKIyAzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
TlNLZXlWYWx1ZU9ic2VydmluZy5oIiAxIDMKIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0tleVZhbHVlT2JzZXJ2aW5nLmgiIDMK
QGNsYXNzIE5TSW5kZXhTZXQsIE5TU3RyaW5nOwoKCgplbnVtIHsKCgoKICAgIE5TS2V5VmFsdWVP
YnNlcnZpbmdPcHRpb25OZXcgPSAweDAxLAogICAgTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk9s
ZCA9IDB4MDIsCgoKCgoKICAgIE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25Jbml0aWFsID0gMHgw
NCwKCgoKICAgIE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25QcmlvciA9IDB4MDgKCgoKfTsKdHlw
ZWRlZiBOU1VJbnRlZ2VyIE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25zOwoKCgplbnVtIHsKICAg
IE5TS2V5VmFsdWVDaGFuZ2VTZXR0aW5nID0gMSwKICAgIE5TS2V5VmFsdWVDaGFuZ2VJbnNlcnRp
b24gPSAyLAogICAgTlNLZXlWYWx1ZUNoYW5nZVJlbW92YWwgPSAzLAogICAgTlNLZXlWYWx1ZUNo
YW5nZVJlcGxhY2VtZW50ID0gNAp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNLZXlWYWx1ZUNoYW5n
ZTsKCgoKCgplbnVtIHsKICAgIE5TS2V5VmFsdWVVbmlvblNldE11dGF0aW9uID0gMSwKICAgIE5T
S2V5VmFsdWVNaW51c1NldE11dGF0aW9uID0gMiwKICAgIE5TS2V5VmFsdWVJbnRlcnNlY3RTZXRN
dXRhdGlvbiA9IDMsCiAgICBOU0tleVZhbHVlU2V0U2V0TXV0YXRpb24gPSA0Cn07CnR5cGVkZWYg
TlNVSW50ZWdlciBOU0tleVZhbHVlU2V0TXV0YXRpb25LaW5kOwoKCgoKCmV4dGVybiAiQyIgTlNT
dHJpbmcgKmNvbnN0IE5TS2V5VmFsdWVDaGFuZ2VLaW5kS2V5IDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqY29uc3QgTlNLZXlWYWx1ZUNoYW5nZU5ld0tleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TS2V5VmFsdWVDaGFuZ2VPbGRLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBO
U0tleVZhbHVlQ2hhbmdlSW5kZXhlc0tleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5T
S2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5IDsKCkBpbnRlcmZhY2UgTlNPYmpl
Y3QoTlNLZXlWYWx1ZU9ic2VydmluZykKIyA4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0tleVZhbHVlT2JzZXJ2aW5nLmgiIDMKLSAo
dm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6
KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICop
Y29udGV4dDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNPYmplY3QoTlNLZXlWYWx1ZU9ic2VydmVyUmVn
aXN0cmF0aW9uKQoKCgotICh2b2lkKWFkZE9ic2VydmVyOihOU09iamVjdCAqKW9ic2VydmVyIGZv
cktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvcHRpb25zOihOU0tleVZhbHVlT2JzZXJ2aW5n
T3B0aW9ucylvcHRpb25zIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0OwotICh2b2lkKXJlbW92ZU9i
c2VydmVyOihOU09iamVjdCAqKW9ic2VydmVyIGZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0
aDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNBcnJheShOU0tleVZhbHVlT2JzZXJ2ZXJSZWdpc3RyYXRp
b24pCgoKCi0gKHZvaWQpYWRkT2JzZXJ2ZXI6KE5TT2JqZWN0ICopb2JzZXJ2ZXIgdG9PYmplY3Rz
QXRJbmRleGVzOihOU0luZGV4U2V0ICopaW5kZXhlcyBmb3JLZXlQYXRoOihOU1N0cmluZyAqKWtl
eVBhdGggb3B0aW9uczooTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbnMpb3B0aW9ucyBjb250ZXh0
Oih2b2lkICopY29udGV4dDsKLSAodm9pZClyZW1vdmVPYnNlcnZlcjooTlNPYmplY3QgKilvYnNl
cnZlciBmcm9tT2JqZWN0c0F0SW5kZXhlczooTlNJbmRleFNldCAqKWluZGV4ZXMgZm9yS2V5UGF0
aDooTlNTdHJpbmcgKilrZXlQYXRoOwoKCgotICh2b2lkKWFkZE9ic2VydmVyOihOU09iamVjdCAq
KW9ic2VydmVyIGZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvcHRpb25zOihOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9ucylvcHRpb25zIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0OwotICh2
b2lkKXJlbW92ZU9ic2VydmVyOihOU09iamVjdCAqKW9ic2VydmVyIGZvcktleVBhdGg6KE5TU3Ry
aW5nICopa2V5UGF0aDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNTZXQoTlNLZXlWYWx1ZU9ic2VydmVy
UmVnaXN0cmF0aW9uKQoKCgotICh2b2lkKWFkZE9ic2VydmVyOihOU09iamVjdCAqKW9ic2VydmVy
IGZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvcHRpb25zOihOU0tleVZhbHVlT2JzZXJ2
aW5nT3B0aW9ucylvcHRpb25zIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0IDsKLSAodm9pZClyZW1v
dmVPYnNlcnZlcjooTlNPYmplY3QgKilvYnNlcnZlciBmb3JLZXlQYXRoOihOU1N0cmluZyAqKWtl
eVBhdGggOwoKQGVuZAoKQGludGVyZmFjZSBOU09iamVjdChOU0tleVZhbHVlT2JzZXJ2ZXJOb3Rp
ZmljYXRpb24pCgoKCgoKCgotICh2b2lkKXdpbGxDaGFuZ2VWYWx1ZUZvcktleTooTlNTdHJpbmcg
KilrZXk7Ci0gKHZvaWQpZGlkQ2hhbmdlVmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5OwoKCgoK
CgoKLSAodm9pZCl3aWxsQ2hhbmdlOihOU0tleVZhbHVlQ2hhbmdlKWNoYW5nZUtpbmQgdmFsdWVz
QXRJbmRleGVzOihOU0luZGV4U2V0ICopaW5kZXhlcyBmb3JLZXk6KE5TU3RyaW5nICopa2V5Owot
ICh2b2lkKWRpZENoYW5nZTooTlNLZXlWYWx1ZUNoYW5nZSljaGFuZ2VLaW5kIHZhbHVlc0F0SW5k
ZXhlczooTlNJbmRleFNldCAqKWluZGV4ZXMgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKIyAxNTUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
TlNLZXlWYWx1ZU9ic2VydmluZy5oIiAzCi0gKHZvaWQpd2lsbENoYW5nZVZhbHVlRm9yS2V5OihO
U1N0cmluZyAqKWtleSB3aXRoU2V0TXV0YXRpb246KE5TS2V5VmFsdWVTZXRNdXRhdGlvbktpbmQp
bXV0YXRpb25LaW5kIHVzaW5nT2JqZWN0czooTlNTZXQgKilvYmplY3RzIDsKLSAodm9pZClkaWRD
aGFuZ2VWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXkgd2l0aFNldE11dGF0aW9uOihOU0tleVZh
bHVlU2V0TXV0YXRpb25LaW5kKW11dGF0aW9uS2luZCB1c2luZ09iamVjdHM6KE5TU2V0ICopb2Jq
ZWN0cyA7CgpAZW5kCgpAaW50ZXJmYWNlIE5TT2JqZWN0KE5TS2V5VmFsdWVPYnNlcnZpbmdDdXN0
b21pemF0aW9uKQojIDE3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9OU0tleVZhbHVlT2JzZXJ2aW5nLmgiIDMKKyAoTlNTZXQgKilrZXlQ
YXRoc0ZvclZhbHVlc0FmZmVjdGluZ1ZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleSA7CgoKCisg
KEJPT0wpYXV0b21hdGljYWxseU5vdGlmaWVzT2JzZXJ2ZXJzRm9yS2V5OihOU1N0cmluZyAqKWtl
eTsKCgoKLSAodm9pZClzZXRPYnNlcnZhdGlvbkluZm86KHZvaWQgKilvYnNlcnZhdGlvbkluZm87
Ci0gKHZvaWQgKilvYnNlcnZhdGlvbkluZm87CgpAZW5kCgoKCkBpbnRlcmZhY2UgTlNPYmplY3Qo
TlNEZXByZWNhdGVkS2V5VmFsdWVPYnNlcnZpbmdDdXN0b21pemF0aW9uKQoKCgorICh2b2lkKXNl
dEtleXM6KE5TQXJyYXkgKilrZXlzIHRyaWdnZXJDaGFuZ2VOb3RpZmljYXRpb25zRm9yRGVwZW5k
ZW50S2V5OihOU1N0cmluZyAqKWRlcGVuZGVudEtleSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7CgpAZW5kCiMgMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TS2V5ZWRBcmNoaXZlci5oIiAx
IDMKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvTlNQcm9wZXJ0eUxpc3QuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNQcm9wZXJ0eUxpc3QuaCIg
MwpAY2xhc3MgTlNEYXRhLCBOU1N0cmluZywgTlNFcnJvciwgTlNJbnB1dFN0cmVhbSwgTlNPdXRw
dXRTdHJlYW07CgplbnVtIHsKICAgIE5TUHJvcGVydHlMaXN0SW1tdXRhYmxlID0ga0NGUHJvcGVy
dHlMaXN0SW1tdXRhYmxlLAogICAgTlNQcm9wZXJ0eUxpc3RNdXRhYmxlQ29udGFpbmVycyA9IGtD
RlByb3BlcnR5TGlzdE11dGFibGVDb250YWluZXJzLAogICAgTlNQcm9wZXJ0eUxpc3RNdXRhYmxl
Q29udGFpbmVyc0FuZExlYXZlcyA9IGtDRlByb3BlcnR5TGlzdE11dGFibGVDb250YWluZXJzQW5k
TGVhdmVzCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1Byb3BlcnR5TGlzdE11dGFiaWxpdHlPcHRp
b25zOwoKZW51bSB7CiAgICBOU1Byb3BlcnR5TGlzdE9wZW5TdGVwRm9ybWF0ID0ga0NGUHJvcGVy
dHlMaXN0T3BlblN0ZXBGb3JtYXQsCiAgICBOU1Byb3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wID0g
a0NGUHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAsCiAgICBOU1Byb3BlcnR5TGlzdEJpbmFyeUZv
cm1hdF92MV8wID0ga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAKfTsKdHlwZWRlZiBO
U1VJbnRlZ2VyIE5TUHJvcGVydHlMaXN0Rm9ybWF0OwoKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TUHJv
cGVydHlMaXN0UmVhZE9wdGlvbnM7CnR5cGVkZWYgTlNVSW50ZWdlciBOU1Byb3BlcnR5TGlzdFdy
aXRlT3B0aW9uczsKCkBpbnRlcmZhY2UgTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIDogTlNP
YmplY3QgewogICAgdm9pZCAqcmVzZXJ2ZWRbNl07Cn0KCgoKKyAoQk9PTClwcm9wZXJ0eUxpc3Q6
KGlkKXBsaXN0IGlzVmFsaWRGb3JGb3JtYXQ6KE5TUHJvcGVydHlMaXN0Rm9ybWF0KWZvcm1hdDsK
CgoKKyAoTlNEYXRhICopZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6KGlkKXBsaXN0IGZvcm1hdDooTlNQ
cm9wZXJ0eUxpc3RGb3JtYXQpZm9ybWF0IG9wdGlvbnM6KE5TUHJvcGVydHlMaXN0V3JpdGVPcHRp
b25zKW9wdCBlcnJvcjooTlNFcnJvciAqKillcnJvciA7CgoKCisgKE5TSW50ZWdlcil3cml0ZVBy
b3BlcnR5TGlzdDooaWQpcGxpc3QgdG9TdHJlYW06KE5TT3V0cHV0U3RyZWFtICopc3RyZWFtIGZv
cm1hdDooTlNQcm9wZXJ0eUxpc3RGb3JtYXQpZm9ybWF0IG9wdGlvbnM6KE5TUHJvcGVydHlMaXN0
V3JpdGVPcHRpb25zKW9wdCBlcnJvcjooTlNFcnJvciAqKillcnJvciA7CgoKCisgKGlkKXByb3Bl
cnR5TGlzdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIG9wdGlvbnM6KE5TUHJvcGVydHlMaXN0UmVh
ZE9wdGlvbnMpb3B0IGZvcm1hdDooTlNQcm9wZXJ0eUxpc3RGb3JtYXQgKilmb3JtYXQgZXJyb3I6
KE5TRXJyb3IgKiopZXJyb3IgOwoKCgorIChpZClwcm9wZXJ0eUxpc3RXaXRoU3RyZWFtOihOU0lu
cHV0U3RyZWFtICopc3RyZWFtIG9wdGlvbnM6KE5TUHJvcGVydHlMaXN0UmVhZE9wdGlvbnMpb3B0
IGZvcm1hdDooTlNQcm9wZXJ0eUxpc3RGb3JtYXQgKilmb3JtYXQgZXJyb3I6KE5TRXJyb3IgKiop
ZXJyb3IgOwoKCgoKKyAoTlNEYXRhICopZGF0YUZyb21Qcm9wZXJ0eUxpc3Q6KGlkKXBsaXN0IGZv
cm1hdDooTlNQcm9wZXJ0eUxpc3RGb3JtYXQpZm9ybWF0IGVycm9yRGVzY3JpcHRpb246KE5TU3Ry
aW5nICoqKWVycm9yU3RyaW5nOwoKCgorIChpZClwcm9wZXJ0eUxpc3RGcm9tRGF0YTooTlNEYXRh
ICopZGF0YSBtdXRhYmlsaXR5T3B0aW9uOihOU1Byb3BlcnR5TGlzdE11dGFiaWxpdHlPcHRpb25z
KW9wdCBmb3JtYXQ6KE5TUHJvcGVydHlMaXN0Rm9ybWF0ICopZm9ybWF0IGVycm9yRGVzY3JpcHRp
b246KE5TU3RyaW5nICoqKWVycm9yU3RyaW5nOwoKQGVuZAojIDcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNLZXllZEFyY2hpdmVyLmgi
IDIgMwoKCgoKCgpAY2xhc3MgTlNBcnJheSwgTlNNdXRhYmxlRGF0YSwgTlNEYXRhOwpAcHJvdG9j
b2wgTlNLZXllZEFyY2hpdmVyRGVsZWdhdGUsIE5TS2V5ZWRVbmFyY2hpdmVyRGVsZWdhdGU7Cgpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNJbnZhbGlkQXJjaGl2ZU9wZXJhdGlvbkV4Y2Vw
dGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TSW52YWxpZFVuYXJjaGl2ZU9wZXJh
dGlvbkV4Y2VwdGlvbjsKCkBpbnRlcmZhY2UgTlNLZXllZEFyY2hpdmVyIDogTlNDb2RlciB7CkBw
cml2YXRlCiAgICB2b2lkICpfc3RyZWFtOwogICAgTlNVSW50ZWdlciBfZmxhZ3M7CiAgICBpZCBf
ZGVsZWdhdGU7CiAgICBpZCBfY29udGFpbmVyczsKICAgIGlkIF9vYmplY3RzOwogICAgaWQgX29i
alJlZk1hcDsKICAgIGlkIF9yZXBsYWNlbWVudE1hcDsKICAgIGlkIF9jbGFzc05hbWVNYXA7CiAg
ICBpZCBfY29uZGl0aW9uYWxzOwogICAgaWQgX2NsYXNzZXM7CiAgICBOU1VJbnRlZ2VyIF9nZW5l
cmljS2V5OwogICAgdm9pZCAqX2NhY2hlOwogICAgTlNVSW50ZWdlciBfY2FjaGVTaXplOwogICAg
TlNVSW50ZWdlciBfZXN0aW1hdGVkQ291bnQ7CiAgICB2b2lkICpfcmVzZXJ2ZWQyOwogICAgaWQg
X3Zpc2l0ZWQ7CiAgICB2b2lkICogX3Jlc2VydmVkMDsKfQoKKyAoTlNEYXRhICopYXJjaGl2ZWRE
YXRhV2l0aFJvb3RPYmplY3Q6KGlkKXJvb3RPYmplY3Q7CisgKEJPT0wpYXJjaGl2ZVJvb3RPYmpl
Y3Q6KGlkKXJvb3RPYmplY3QgdG9GaWxlOihOU1N0cmluZyAqKXBhdGg7CgotIChpZClpbml0Rm9y
V3JpdGluZ1dpdGhNdXRhYmxlRGF0YTooTlNNdXRhYmxlRGF0YSAqKWRhdGE7CgotICh2b2lkKXNl
dERlbGVnYXRlOihpZCA8TlNLZXllZEFyY2hpdmVyRGVsZWdhdGU+KWRlbGVnYXRlOwotIChpZCA8
TlNLZXllZEFyY2hpdmVyRGVsZWdhdGU+KWRlbGVnYXRlOwoKLSAodm9pZClzZXRPdXRwdXRGb3Jt
YXQ6KE5TUHJvcGVydHlMaXN0Rm9ybWF0KWZvcm1hdDsKLSAoTlNQcm9wZXJ0eUxpc3RGb3JtYXQp
b3V0cHV0Rm9ybWF0OwoKLSAodm9pZClmaW5pc2hFbmNvZGluZzsKCisgKHZvaWQpc2V0Q2xhc3NO
YW1lOihOU1N0cmluZyAqKWNvZGVkTmFtZSBmb3JDbGFzczooQ2xhc3MpY2xzOwotICh2b2lkKXNl
dENsYXNzTmFtZTooTlNTdHJpbmcgKiljb2RlZE5hbWUgZm9yQ2xhc3M6KENsYXNzKWNsczsKCgoK
KyAoTlNTdHJpbmcgKiljbGFzc05hbWVGb3JDbGFzczooQ2xhc3MpY2xzOwotIChOU1N0cmluZyAq
KWNsYXNzTmFtZUZvckNsYXNzOihDbGFzcyljbHM7CgotICh2b2lkKWVuY29kZU9iamVjdDooaWQp
b2JqdiBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotICh2b2lkKWVuY29kZUNvbmRpdGlvbmFsT2Jq
ZWN0OihpZClvYmp2IGZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0gKHZvaWQpZW5jb2RlQm9vbDoo
Qk9PTClib29sdiBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotICh2b2lkKWVuY29kZUludDooaW50
KWludHYgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLSAodm9pZCllbmNvZGVJbnQzMjooaW50MzJf
dClpbnR2IGZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0gKHZvaWQpZW5jb2RlSW50NjQ6KGludDY0
X3QpaW50diBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotICh2b2lkKWVuY29kZUZsb2F0OihmbG9h
dClyZWFsdiBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotICh2b2lkKWVuY29kZURvdWJsZTooZG91
YmxlKXJlYWx2IGZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0gKHZvaWQpZW5jb2RlQnl0ZXM6KGNv
bnN0IHVpbnQ4X3QgKilieXRlc3AgbGVuZ3RoOihOU1VJbnRlZ2VyKWxlbnYgZm9yS2V5OihOU1N0
cmluZyAqKWtleTsKCkBlbmQKCkBpbnRlcmZhY2UgTlNLZXllZFVuYXJjaGl2ZXIgOiBOU0NvZGVy
IHsKQHByaXZhdGUKICAgIGlkIF9kZWxlZ2F0ZTsKICAgIHVpbnQzMl90IF9mbGFnczsKICAgIGlk
IF9vYmpSZWZNYXA7CiAgICBpZCBfcmVwbGFjZW1lbnRNYXA7CiAgICBpZCBfbmFtZUNsYXNzTWFw
OwogICAgaWQgX3RtcFJlZk9iak1hcDsKICAgIGlkIF9yZWZPYmpNYXA7CiAgICBpbnQzMl90IF9n
ZW5lcmljS2V5OwogICAgaWQgX2RhdGE7CiAgICB2b2lkICpfb2Zmc2V0RGF0YTsKICAgIGlkIF9j
b250YWluZXJzOwogICAgaWQgX29iamVjdHM7CiAgICBjb25zdCB1aW50OF90ICpfYnl0ZXM7CiAg
ICB1aW50NjRfdCBfbGVuOwogICAgaWQgX3doaXRlOwogICAgdm9pZCAqIF9yZXNlcnZlZDA7Cn0K
CisgKGlkKXVuYXJjaGl2ZU9iamVjdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhOworIChpZCl1bmFy
Y2hpdmVPYmplY3RXaXRoRmlsZTooTlNTdHJpbmcgKilwYXRoOwoKLSAoaWQpaW5pdEZvclJlYWRp
bmdXaXRoRGF0YTooTlNEYXRhICopZGF0YTsKCi0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxOU0tl
eWVkVW5hcmNoaXZlckRlbGVnYXRlPilkZWxlZ2F0ZTsKLSAoaWQgPE5TS2V5ZWRVbmFyY2hpdmVy
RGVsZWdhdGU+KWRlbGVnYXRlOwoKLSAodm9pZClmaW5pc2hEZWNvZGluZzsKCisgKHZvaWQpc2V0
Q2xhc3M6KENsYXNzKWNscyBmb3JDbGFzc05hbWU6KE5TU3RyaW5nICopY29kZWROYW1lOwotICh2
b2lkKXNldENsYXNzOihDbGFzcyljbHMgZm9yQ2xhc3NOYW1lOihOU1N0cmluZyAqKWNvZGVkTmFt
ZTsKCgoKKyAoQ2xhc3MpY2xhc3NGb3JDbGFzc05hbWU6KE5TU3RyaW5nICopY29kZWROYW1lOwot
IChDbGFzcyljbGFzc0ZvckNsYXNzTmFtZTooTlNTdHJpbmcgKiljb2RlZE5hbWU7CgotIChCT09M
KWNvbnRhaW5zVmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5OwoKLSAoaWQpZGVjb2RlT2JqZWN0
Rm9yS2V5OihOU1N0cmluZyAqKWtleTsKLSAoQk9PTClkZWNvZGVCb29sRm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKLSAoaW50KWRlY29kZUludEZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0gKGludDMy
X3QpZGVjb2RlSW50MzJGb3JLZXk6KE5TU3RyaW5nICopa2V5OwotIChpbnQ2NF90KWRlY29kZUlu
dDY0Rm9yS2V5OihOU1N0cmluZyAqKWtleTsKLSAoZmxvYXQpZGVjb2RlRmxvYXRGb3JLZXk6KE5T
U3RyaW5nICopa2V5OwotIChkb3VibGUpZGVjb2RlRG91YmxlRm9yS2V5OihOU1N0cmluZyAqKWtl
eTsKLSAoY29uc3QgdWludDhfdCAqKWRlY29kZUJ5dGVzRm9yS2V5OihOU1N0cmluZyAqKWtleSBy
ZXR1cm5lZExlbmd0aDooTlNVSW50ZWdlciAqKWxlbmd0aHA7CgpAZW5kCgpAcHJvdG9jb2wgTlNL
ZXllZEFyY2hpdmVyRGVsZWdhdGUgPE5TT2JqZWN0PgpAb3B0aW9uYWwKCgotIChpZClhcmNoaXZl
cjooTlNLZXllZEFyY2hpdmVyICopYXJjaGl2ZXIgd2lsbEVuY29kZU9iamVjdDooaWQpb2JqZWN0
OwojIDEzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9OU0tleWVkQXJjaGl2ZXIuaCIgMwotICh2b2lkKWFyY2hpdmVyOihOU0tleWVkQXJj
aGl2ZXIgKilhcmNoaXZlciBkaWRFbmNvZGVPYmplY3Q6KGlkKW9iamVjdDsKCgoKCgoKLSAodm9p
ZClhcmNoaXZlcjooTlNLZXllZEFyY2hpdmVyICopYXJjaGl2ZXIgd2lsbFJlcGxhY2VPYmplY3Q6
KGlkKW9iamVjdCB3aXRoT2JqZWN0OihpZCluZXdPYmplY3Q7CgoKCgoKLSAodm9pZClhcmNoaXZl
cldpbGxGaW5pc2g6KE5TS2V5ZWRBcmNoaXZlciAqKWFyY2hpdmVyOwoKCi0gKHZvaWQpYXJjaGl2
ZXJEaWRGaW5pc2g6KE5TS2V5ZWRBcmNoaXZlciAqKWFyY2hpdmVyOwoKCkBlbmQKCkBwcm90b2Nv
bCBOU0tleWVkVW5hcmNoaXZlckRlbGVnYXRlIDxOU09iamVjdD4KQG9wdGlvbmFsCgoKLSAoQ2xh
c3MpdW5hcmNoaXZlcjooTlNLZXllZFVuYXJjaGl2ZXIgKil1bmFyY2hpdmVyIGNhbm5vdERlY29k
ZU9iamVjdE9mQ2xhc3NOYW1lOihOU1N0cmluZyAqKW5hbWUgb3JpZ2luYWxDbGFzc2VzOihOU0Fy
cmF5ICopY2xhc3NOYW1lczsKIyAxNzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNLZXllZEFyY2hpdmVyLmgiIDMKLSAoaWQpdW5hcmNo
aXZlcjooTlNLZXllZFVuYXJjaGl2ZXIgKil1bmFyY2hpdmVyIGRpZERlY29kZU9iamVjdDooaWQp
b2JqZWN0OwoKCgoKCgoKLSAodm9pZCl1bmFyY2hpdmVyOihOU0tleWVkVW5hcmNoaXZlciAqKXVu
YXJjaGl2ZXIgd2lsbFJlcGxhY2VPYmplY3Q6KGlkKW9iamVjdCB3aXRoT2JqZWN0OihpZCluZXdP
YmplY3Q7CgoKCgoKLSAodm9pZCl1bmFyY2hpdmVyV2lsbEZpbmlzaDooTlNLZXllZFVuYXJjaGl2
ZXIgKil1bmFyY2hpdmVyOwoKCi0gKHZvaWQpdW5hcmNoaXZlckRpZEZpbmlzaDooTlNLZXllZFVu
YXJjaGl2ZXIgKil1bmFyY2hpdmVyOwoKCkBlbmQKCkBpbnRlcmZhY2UgTlNPYmplY3QgKE5TS2V5
ZWRBcmNoaXZlck9iamVjdFN1YnN0aXR1dGlvbikKCi0gKENsYXNzKWNsYXNzRm9yS2V5ZWRBcmNo
aXZlcjsKIyAyMDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvTlNLZXllZEFyY2hpdmVyLmgiIDMKLSAoaWQpcmVwbGFjZW1lbnRPYmplY3RG
b3JLZXllZEFyY2hpdmVyOihOU0tleWVkQXJjaGl2ZXIgKilhcmNoaXZlcjsKIyAyMTkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNLZXll
ZEFyY2hpdmVyLmgiIDMKKyAoTlNBcnJheSAqKWNsYXNzRmFsbGJhY2tzRm9yS2V5ZWRBcmNoaXZl
cjsKCgoKQGVuZAoKQGludGVyZmFjZSBOU09iamVjdCAoTlNLZXllZFVuYXJjaGl2ZXJPYmplY3RT
dWJzdGl0dXRpb24pCgorIChDbGFzcyljbGFzc0ZvcktleWVkVW5hcmNoaXZlcjsKCgoKCgpAZW5k
CiMgMzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9G
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TTG9jYWxlLmgiIDEgMwojIDEwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TTG9jYWxl
LmgiIDMKQGNsYXNzIE5TQXJyYXksIE5TRGljdGlvbmFyeSwgTlNTdHJpbmc7CgoKCkBpbnRlcmZh
Y2UgTlNMb2NhbGUgOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4KCi0gKGlkKW9iamVj
dEZvcktleTooaWQpa2V5OwoKLSAoTlNTdHJpbmcgKilkaXNwbGF5TmFtZUZvcktleTooaWQpa2V5
IHZhbHVlOihpZCl2YWx1ZTsKCkBlbmQKCkBpbnRlcmZhY2UgTlNMb2NhbGUgKE5TRXh0ZW5kZWRM
b2NhbGUpCgotIChOU1N0cmluZyAqKWxvY2FsZUlkZW50aWZpZXI7CgpAZW5kCgpAaW50ZXJmYWNl
IE5TTG9jYWxlIChOU0xvY2FsZUNyZWF0aW9uKQoKKyAoaWQpc3lzdGVtTG9jYWxlOworIChpZClj
dXJyZW50TG9jYWxlOworIChpZClhdXRvdXBkYXRpbmdDdXJyZW50TG9jYWxlIDsKCi0gKGlkKWlu
aXRXaXRoTG9jYWxlSWRlbnRpZmllcjooTlNTdHJpbmcgKilzdHJpbmc7CgpAZW5kCgpAaW50ZXJm
YWNlIE5TTG9jYWxlIChOU0xvY2FsZUdlbmVyYWxJbmZvKQoKKyAoTlNBcnJheSAqKWF2YWlsYWJs
ZUxvY2FsZUlkZW50aWZpZXJzOworIChOU0FycmF5ICopSVNPTGFuZ3VhZ2VDb2RlczsKKyAoTlNB
cnJheSAqKUlTT0NvdW50cnlDb2RlczsKKyAoTlNBcnJheSAqKUlTT0N1cnJlbmN5Q29kZXM7Cisg
KE5TQXJyYXkgKiljb21tb25JU09DdXJyZW5jeUNvZGVzIDsKKyAoTlNBcnJheSAqKXByZWZlcnJl
ZExhbmd1YWdlcyA7CgorIChOU0RpY3Rpb25hcnkgKiljb21wb25lbnRzRnJvbUxvY2FsZUlkZW50
aWZpZXI6KE5TU3RyaW5nICopc3RyaW5nOworIChOU1N0cmluZyAqKWxvY2FsZUlkZW50aWZpZXJG
cm9tQ29tcG9uZW50czooTlNEaWN0aW9uYXJ5ICopZGljdDsKCisgKE5TU3RyaW5nICopY2Fub25p
Y2FsTG9jYWxlSWRlbnRpZmllckZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nOworIChOU1N0
cmluZyAqKWNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmllckZyb21TdHJpbmc6KE5TU3RyaW5nICop
c3RyaW5nOwoKKyAoTlNTdHJpbmcgKilsb2NhbGVJZGVudGlmaWVyRnJvbVdpbmRvd3NMb2NhbGVD
b2RlOih1aW50MzJfdClsY2lkIDsKKyAodWludDMyX3Qpd2luZG93c0xvY2FsZUNvZGVGcm9tTG9j
YWxlSWRlbnRpZmllcjooTlNTdHJpbmcgKilsb2NhbGVJZGVudGlmaWVyIDsKCmVudW0gewogICAg
TlNMb2NhbGVMYW5ndWFnZURpcmVjdGlvblVua25vd24gPSBrQ0ZMb2NhbGVMYW5ndWFnZURpcmVj
dGlvblVua25vd24sCiAgICBOU0xvY2FsZUxhbmd1YWdlRGlyZWN0aW9uTGVmdFRvUmlnaHQgPSBr
Q0ZMb2NhbGVMYW5ndWFnZURpcmVjdGlvbkxlZnRUb1JpZ2h0LAogICAgTlNMb2NhbGVMYW5ndWFn
ZURpcmVjdGlvblJpZ2h0VG9MZWZ0ID0ga0NGTG9jYWxlTGFuZ3VhZ2VEaXJlY3Rpb25SaWdodFRv
TGVmdCwKICAgIE5TTG9jYWxlTGFuZ3VhZ2VEaXJlY3Rpb25Ub3BUb0JvdHRvbSA9IGtDRkxvY2Fs
ZUxhbmd1YWdlRGlyZWN0aW9uVG9wVG9Cb3R0b20sCiAgICBOU0xvY2FsZUxhbmd1YWdlRGlyZWN0
aW9uQm90dG9tVG9Ub3AgPSBrQ0ZMb2NhbGVMYW5ndWFnZURpcmVjdGlvbkJvdHRvbVRvVG9wCn07
CnR5cGVkZWYgTlNVSW50ZWdlciBOU0xvY2FsZUxhbmd1YWdlRGlyZWN0aW9uOwoKKyAoTlNMb2Nh
bGVMYW5ndWFnZURpcmVjdGlvbiljaGFyYWN0ZXJEaXJlY3Rpb25Gb3JMYW5ndWFnZTooTlNTdHJp
bmcgKilpc29MYW5nQ29kZSA7CisgKE5TTG9jYWxlTGFuZ3VhZ2VEaXJlY3Rpb24pbGluZURpcmVj
dGlvbkZvckxhbmd1YWdlOihOU1N0cmluZyAqKWlzb0xhbmdDb2RlIDsKCkBlbmQKCgpleHRlcm4g
IkMiIE5TU3RyaW5nICogY29uc3QgTlNDdXJyZW50TG9jYWxlRGlkQ2hhbmdlTm90aWZpY2F0aW9u
IDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNMb2NhbGVJZGVudGlmaWVyIDsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TTG9jYWxlTGFuZ3VhZ2VDb2RlIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqIGNvbnN0IE5TTG9jYWxlQ291bnRyeUNvZGUgOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICogY29uc3QgTlNMb2NhbGVTY3JpcHRDb2RlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNv
bnN0IE5TTG9jYWxlVmFyaWFudENvZGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNM
b2NhbGVFeGVtcGxhckNoYXJhY3RlclNldCA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBO
U0xvY2FsZUNhbGVuZGFyIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TTG9jYWxlQ29s
bGF0aW9uSWRlbnRpZmllciA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0xvY2FsZVVz
ZXNNZXRyaWNTeXN0ZW0gOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNMb2NhbGVNZWFz
dXJlbWVudFN5c3RlbSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0xvY2FsZURlY2lt
YWxTZXBhcmF0b3IgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNMb2NhbGVHcm91cGlu
Z1NlcGFyYXRvciA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0xvY2FsZUN1cnJlbmN5
U3ltYm9sIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TTG9jYWxlQ3VycmVuY3lDb2Rl
IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TTG9jYWxlQ29sbGF0b3JJZGVudGlmaWVy
IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TTG9jYWxlUXVvdGF0aW9uQmVnaW5EZWxp
bWl0ZXJLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNMb2NhbGVRdW90YXRpb25F
bmREZWxpbWl0ZXJLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNMb2NhbGVBbHRl
cm5hdGVRdW90YXRpb25CZWdpbkRlbGltaXRlcktleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBj
b25zdCBOU0xvY2FsZUFsdGVybmF0ZVF1b3RhdGlvbkVuZERlbGltaXRlcktleSA7CgoKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TR3JlZ29yaWFuQ2FsZW5kYXIgOwpleHRlcm4gIkMiIE5T
U3RyaW5nICogY29uc3QgTlNCdWRkaGlzdENhbGVuZGFyIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
IGNvbnN0IE5TQ2hpbmVzZUNhbGVuZGFyIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5T
SGVicmV3Q2FsZW5kYXIgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNJc2xhbWljQ2Fs
ZW5kYXIgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNJc2xhbWljQ2l2aWxDYWxlbmRh
ciA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0phcGFuZXNlQ2FsZW5kYXIgOwpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNSZXB1YmxpY09mQ2hpbmFDYWxlbmRhciA7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1BlcnNpYW5DYWxlbmRhciA7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBOU0luZGlhbkNhbGVuZGFyIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNv
bnN0IE5TSVNPODYwMUNhbGVuZGFyIDsKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNMb2Nr
LmgiIDEgMwoKCgoKCgpAY2xhc3MgTlNEYXRlOwoKQHByb3RvY29sIE5TTG9ja2luZwoKLSAodm9p
ZClsb2NrOwotICh2b2lkKXVubG9jazsKCkBlbmQKCkBpbnRlcmZhY2UgTlNMb2NrIDogTlNPYmpl
Y3QgPE5TTG9ja2luZz4gewpAcHJpdmF0ZQogICAgdm9pZCAqX3ByaXY7Cn0KCi0gKEJPT0wpdHJ5
TG9jazsKLSAoQk9PTClsb2NrQmVmb3JlRGF0ZTooTlNEYXRlICopbGltaXQ7CgotICh2b2lkKXNl
dE5hbWU6KE5TU3RyaW5nICopbiA7Ci0gKE5TU3RyaW5nICopbmFtZSA7CgpAZW5kCgpAaW50ZXJm
YWNlIE5TQ29uZGl0aW9uTG9jayA6IE5TT2JqZWN0IDxOU0xvY2tpbmc+IHsKQHByaXZhdGUKICAg
IHZvaWQgKl9wcml2Owp9CgotIChpZClpbml0V2l0aENvbmRpdGlvbjooTlNJbnRlZ2VyKWNvbmRp
dGlvbjsKCi0gKE5TSW50ZWdlciljb25kaXRpb247Ci0gKHZvaWQpbG9ja1doZW5Db25kaXRpb246
KE5TSW50ZWdlciljb25kaXRpb247Ci0gKEJPT0wpdHJ5TG9jazsKLSAoQk9PTCl0cnlMb2NrV2hl
bkNvbmRpdGlvbjooTlNJbnRlZ2VyKWNvbmRpdGlvbjsKLSAodm9pZCl1bmxvY2tXaXRoQ29uZGl0
aW9uOihOU0ludGVnZXIpY29uZGl0aW9uOwotIChCT09MKWxvY2tCZWZvcmVEYXRlOihOU0RhdGUg
KilsaW1pdDsKLSAoQk9PTClsb2NrV2hlbkNvbmRpdGlvbjooTlNJbnRlZ2VyKWNvbmRpdGlvbiBi
ZWZvcmVEYXRlOihOU0RhdGUgKilsaW1pdDsKCi0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKilu
IDsKLSAoTlNTdHJpbmcgKiluYW1lIDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNSZWN1cnNpdmVMb2Nr
IDogTlNPYmplY3QgPE5TTG9ja2luZz4gewpAcHJpdmF0ZQogICAgdm9pZCAqX3ByaXY7Cn0KCi0g
KEJPT0wpdHJ5TG9jazsKLSAoQk9PTClsb2NrQmVmb3JlRGF0ZTooTlNEYXRlICopbGltaXQ7Cgot
ICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbiA7Ci0gKE5TU3RyaW5nICopbmFtZSA7CgpAZW5k
CgoKCgpAaW50ZXJmYWNlIE5TQ29uZGl0aW9uIDogTlNPYmplY3QgPE5TTG9ja2luZz4gewpAcHJp
dmF0ZQogICAgdm9pZCAqX3ByaXY7Cn0KCi0gKHZvaWQpd2FpdDsKLSAoQk9PTCl3YWl0VW50aWxE
YXRlOihOU0RhdGUgKilsaW1pdDsKLSAodm9pZClzaWduYWw7Ci0gKHZvaWQpYnJvYWRjYXN0OwoK
LSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW4gOwotIChOU1N0cmluZyAqKW5hbWUgOwoKQGVu
ZAojIDM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU01ldGhvZFNpZ25hdHVyZS5oIiAxIDMKCgoK
CgoKQGludGVyZmFjZSBOU01ldGhvZFNpZ25hdHVyZSA6IE5TT2JqZWN0IHsKQHByaXZhdGUKICAg
IHZvaWQgKl9wcml2YXRlOwogICAgdm9pZCAqX3Jlc2VydmVkWzZdOwp9CgorIChOU01ldGhvZFNp
Z25hdHVyZSAqKXNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6KGNvbnN0IGNoYXIgKil0eXBlczsKCi0g
KE5TVUludGVnZXIpbnVtYmVyT2ZBcmd1bWVudHM7Ci0gKGNvbnN0IGNoYXIgKilnZXRBcmd1bWVu
dFR5cGVBdEluZGV4OihOU1VJbnRlZ2VyKWlkeDsKCi0gKE5TVUludGVnZXIpZnJhbWVMZW5ndGg7
CgotIChCT09MKWlzT25ld2F5OwoKLSAoY29uc3QgY2hhciAqKW1ldGhvZFJldHVyblR5cGU7Ci0g
KE5TVUludGVnZXIpbWV0aG9kUmV0dXJuTGVuZ3RoOwoKQGVuZAojIDM4ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIg
MiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9OU05vdGlmaWNhdGlvbi5oIiAxIDMKCgoKCgoKQGNsYXNzIE5TU3RyaW5nLCBOU0Rp
Y3Rpb25hcnksIE5TT3BlcmF0aW9uUXVldWU7CgoKCkBpbnRlcmZhY2UgTlNOb3RpZmljYXRpb24g
OiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4KCi0gKE5TU3RyaW5nICopbmFtZTsKLSAo
aWQpb2JqZWN0OwotIChOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKCkBlbmQKCkBpbnRlcmZhY2Ug
TlNOb3RpZmljYXRpb24gKE5TTm90aWZpY2F0aW9uQ3JlYXRpb24pCgorIChpZClub3RpZmljYXRp
b25XaXRoTmFtZTooTlNTdHJpbmcgKilhTmFtZSBvYmplY3Q6KGlkKWFuT2JqZWN0OworIChpZClu
b3RpZmljYXRpb25XaXRoTmFtZTooTlNTdHJpbmcgKilhTmFtZSBvYmplY3Q6KGlkKWFuT2JqZWN0
IHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKilhVXNlckluZm87CgpAZW5kCgoKCkBpbnRlcmZhY2Ug
TlNOb3RpZmljYXRpb25DZW50ZXIgOiBOU09iamVjdCB7CiAgICBAcGFja2FnZQogICAgdm9pZCAq
IF9pbXBsOwogICAgdm9pZCAqX2NhbGxiYWNrX2Jsb2NrWzRdOwogICAgdm9pZCAqX3BhZFs4XTsK
fQoKKyAoaWQpZGVmYXVsdENlbnRlcjsKCi0gKHZvaWQpYWRkT2JzZXJ2ZXI6KGlkKW9ic2VydmVy
IHNlbGVjdG9yOihTRUwpYVNlbGVjdG9yIG5hbWU6KE5TU3RyaW5nICopYU5hbWUgb2JqZWN0Oihp
ZClhbk9iamVjdDsKCi0gKHZvaWQpcG9zdE5vdGlmaWNhdGlvbjooTlNOb3RpZmljYXRpb24gKilu
b3RpZmljYXRpb247Ci0gKHZvaWQpcG9zdE5vdGlmaWNhdGlvbk5hbWU6KE5TU3RyaW5nICopYU5h
bWUgb2JqZWN0OihpZClhbk9iamVjdDsKLSAodm9pZClwb3N0Tm90aWZpY2F0aW9uTmFtZTooTlNT
dHJpbmcgKilhTmFtZSBvYmplY3Q6KGlkKWFuT2JqZWN0IHVzZXJJbmZvOihOU0RpY3Rpb25hcnkg
KilhVXNlckluZm87CgotICh2b2lkKXJlbW92ZU9ic2VydmVyOihpZClvYnNlcnZlcjsKLSAodm9p
ZClyZW1vdmVPYnNlcnZlcjooaWQpb2JzZXJ2ZXIgbmFtZTooTlNTdHJpbmcgKilhTmFtZSBvYmpl
Y3Q6KGlkKWFuT2JqZWN0OwoKCi0gKGlkKWFkZE9ic2VydmVyRm9yTmFtZTooTlNTdHJpbmcgKilu
YW1lIG9iamVjdDooaWQpb2JqIHF1ZXVlOihOU09wZXJhdGlvblF1ZXVlICopcXVldWUgdXNpbmdC
bG9jazoodm9pZCAoXikoTlNOb3RpZmljYXRpb24gKikpYmxvY2sgOwoKCkBlbmQKIyAzOSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3Vu
ZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvTlNOb3RpZmljYXRpb25RdWV1ZS5oIiAxIDMKCgoKCgoKQGNsYXNz
IE5TTm90aWZpY2F0aW9uLCBOU05vdGlmaWNhdGlvbkNlbnRlciwgTlNBcnJheTsKCmVudW0gewog
ICAgTlNQb3N0V2hlbklkbGUgPSAxLAogICAgTlNQb3N0QVNBUCA9IDIsCiAgICBOU1Bvc3ROb3cg
PSAzCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1Bvc3RpbmdTdHlsZTsKCmVudW0gewogICAgTlNO
b3RpZmljYXRpb25Ob0NvYWxlc2NpbmcgPSAwLAogICAgTlNOb3RpZmljYXRpb25Db2FsZXNjaW5n
T25OYW1lID0gMSwKICAgIE5TTm90aWZpY2F0aW9uQ29hbGVzY2luZ09uU2VuZGVyID0gMgp9Owp0
eXBlZGVmIE5TVUludGVnZXIgTlNOb3RpZmljYXRpb25Db2FsZXNjaW5nOwoKQGludGVyZmFjZSBO
U05vdGlmaWNhdGlvblF1ZXVlIDogTlNPYmplY3QgewpAcHJpdmF0ZQogICAgaWQgX25vdGlmaWNh
dGlvbkNlbnRlcjsKICAgIGlkIF9hc2FwUXVldWU7CiAgICBpZCBfYXNhcE9iczsKICAgIGlkIF9p
ZGxlUXVldWU7CiAgICBpZCBfaWRsZU9iczsKfQoKKyAoaWQpZGVmYXVsdFF1ZXVlOwoKLSAoaWQp
aW5pdFdpdGhOb3RpZmljYXRpb25DZW50ZXI6KE5TTm90aWZpY2F0aW9uQ2VudGVyICopbm90aWZp
Y2F0aW9uQ2VudGVyOwoKLSAodm9pZCllbnF1ZXVlTm90aWZpY2F0aW9uOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbiBwb3N0aW5nU3R5bGU6KE5TUG9zdGluZ1N0eWxlKXBvc3RpbmdTdHls
ZTsKLSAodm9pZCllbnF1ZXVlTm90aWZpY2F0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbiBwb3N0aW5nU3R5bGU6KE5TUG9zdGluZ1N0eWxlKXBvc3RpbmdTdHlsZSBjb2FsZXNjZU1h
c2s6KE5TVUludGVnZXIpY29hbGVzY2VNYXNrIGZvck1vZGVzOihOU0FycmF5ICopbW9kZXM7Cgot
ICh2b2lkKWRlcXVldWVOb3RpZmljYXRpb25zTWF0Y2hpbmc6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uIGNvYWxlc2NlTWFzazooTlNVSW50ZWdlciljb2FsZXNjZU1hc2s7CgpAZW5kCiMg
NDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TTnVsbC5oIiAxIDMKCgoKCgoKQGludGVyZmFjZSBO
U051bGwgOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4KCisgKE5TTnVsbCAqKW51bGw7
CgpAZW5kCiMgNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TTnVtYmVyRm9ybWF0dGVyLmgiIDEg
MwoKCgoKCgoKQGNsYXNzIE5TTG9jYWxlLCBOU0Vycm9yLCBOU011dGFibGVEaWN0aW9uYXJ5OwoK
QGludGVyZmFjZSBOU051bWJlckZvcm1hdHRlciA6IE5TRm9ybWF0dGVyIHsKQHByaXZhdGUKICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkgKl9hdHRyaWJ1dGVzOwogICAgQ0ZOdW1iZXJGb3JtYXR0ZXJS
ZWYgX2Zvcm1hdHRlcjsKICAgIE5TVUludGVnZXIgX2NvdW50ZXI7CiAgICB2b2lkICpfcmVzZXJ2
ZWRbMTJdOwp9CgoKCgoKLSAoQk9PTClnZXRPYmplY3RWYWx1ZToob3V0IGlkICopb2JqIGZvclN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcgcmFuZ2U6KGlub3V0IE5TUmFuZ2UgKilyYW5nZXAgZXJy
b3I6KG91dCBOU0Vycm9yICoqKWVycm9yIDsKCgoKCi0gKE5TU3RyaW5nICopc3RyaW5nRnJvbU51
bWJlcjooTlNOdW1iZXIgKiludW1iZXIgOwotIChOU051bWJlciAqKW51bWJlckZyb21TdHJpbmc6
KE5TU3RyaW5nICopc3RyaW5nIDsKCgoKZW51bSB7CiAgICBOU051bWJlckZvcm1hdHRlck5vU3R5
bGUgPSBrQ0ZOdW1iZXJGb3JtYXR0ZXJOb1N0eWxlLAogICAgTlNOdW1iZXJGb3JtYXR0ZXJEZWNp
bWFsU3R5bGUgPSBrQ0ZOdW1iZXJGb3JtYXR0ZXJEZWNpbWFsU3R5bGUsCiAgICBOU051bWJlckZv
cm1hdHRlckN1cnJlbmN5U3R5bGUgPSBrQ0ZOdW1iZXJGb3JtYXR0ZXJDdXJyZW5jeVN0eWxlLAog
ICAgTlNOdW1iZXJGb3JtYXR0ZXJQZXJjZW50U3R5bGUgPSBrQ0ZOdW1iZXJGb3JtYXR0ZXJQZXJj
ZW50U3R5bGUsCiAgICBOU051bWJlckZvcm1hdHRlclNjaWVudGlmaWNTdHlsZSA9IGtDRk51bWJl
ckZvcm1hdHRlclNjaWVudGlmaWNTdHlsZSwKICAgIE5TTnVtYmVyRm9ybWF0dGVyU3BlbGxPdXRT
dHlsZSA9IGtDRk51bWJlckZvcm1hdHRlclNwZWxsT3V0U3R5bGUKfTsKdHlwZWRlZiBOU1VJbnRl
Z2VyIE5TTnVtYmVyRm9ybWF0dGVyU3R5bGU7CgplbnVtIHsKICAgIE5TTnVtYmVyRm9ybWF0dGVy
QmVoYXZpb3JEZWZhdWx0ID0gMCwKCiAgICBOU051bWJlckZvcm1hdHRlckJlaGF2aW9yMTBfMCA9
IDEwMDAsCgogICAgTlNOdW1iZXJGb3JtYXR0ZXJCZWhhdmlvcjEwXzQgPSAxMDQwLAp9Owp0eXBl
ZGVmIE5TVUludGVnZXIgTlNOdW1iZXJGb3JtYXR0ZXJCZWhhdmlvcjsKCgoKKyAoTlNTdHJpbmcg
Kilsb2NhbGl6ZWRTdHJpbmdGcm9tTnVtYmVyOihOU051bWJlciAqKW51bSBudW1iZXJTdHlsZToo
TlNOdW1iZXJGb3JtYXR0ZXJTdHlsZSluc3R5bGUgOwoKCgotIChOU051bWJlckZvcm1hdHRlclN0
eWxlKW51bWJlclN0eWxlIDsKLSAodm9pZClzZXROdW1iZXJTdHlsZTooTlNOdW1iZXJGb3JtYXR0
ZXJTdHlsZSlzdHlsZSA7CgotIChOU0xvY2FsZSAqKWxvY2FsZSA7Ci0gKHZvaWQpc2V0TG9jYWxl
OihOU0xvY2FsZSAqKWxvY2FsZSA7CgotIChCT09MKWdlbmVyYXRlc0RlY2ltYWxOdW1iZXJzIDsK
LSAodm9pZClzZXRHZW5lcmF0ZXNEZWNpbWFsTnVtYmVyczooQk9PTCliIDsKCi0gKE5TTnVtYmVy
Rm9ybWF0dGVyQmVoYXZpb3IpZm9ybWF0dGVyQmVoYXZpb3IgOwotICh2b2lkKXNldEZvcm1hdHRl
ckJlaGF2aW9yOihOU051bWJlckZvcm1hdHRlckJlaGF2aW9yKWJlaGF2aW9yIDsKCisgKE5TTnVt
YmVyRm9ybWF0dGVyQmVoYXZpb3IpZGVmYXVsdEZvcm1hdHRlckJlaGF2aW9yIDsKKyAodm9pZClz
ZXREZWZhdWx0Rm9ybWF0dGVyQmVoYXZpb3I6KE5TTnVtYmVyRm9ybWF0dGVyQmVoYXZpb3IpYmVo
YXZpb3IgOwoKLSAoTlNTdHJpbmcgKiluZWdhdGl2ZUZvcm1hdDsKLSAodm9pZClzZXROZWdhdGl2
ZUZvcm1hdDooTlNTdHJpbmcgKilmb3JtYXQ7CgotIChOU0RpY3Rpb25hcnkgKil0ZXh0QXR0cmli
dXRlc0Zvck5lZ2F0aXZlVmFsdWVzOwotICh2b2lkKXNldFRleHRBdHRyaWJ1dGVzRm9yTmVnYXRp
dmVWYWx1ZXM6KE5TRGljdGlvbmFyeSAqKW5ld0F0dHJpYnV0ZXM7CgotIChOU1N0cmluZyAqKXBv
c2l0aXZlRm9ybWF0OwotICh2b2lkKXNldFBvc2l0aXZlRm9ybWF0OihOU1N0cmluZyAqKWZvcm1h
dDsKCi0gKE5TRGljdGlvbmFyeSAqKXRleHRBdHRyaWJ1dGVzRm9yUG9zaXRpdmVWYWx1ZXM7Ci0g
KHZvaWQpc2V0VGV4dEF0dHJpYnV0ZXNGb3JQb3NpdGl2ZVZhbHVlczooTlNEaWN0aW9uYXJ5ICop
bmV3QXR0cmlidXRlczsKCi0gKEJPT0wpYWxsb3dzRmxvYXRzOwotICh2b2lkKXNldEFsbG93c0Zs
b2F0czooQk9PTClmbGFnOwoKLSAoTlNTdHJpbmcgKilkZWNpbWFsU2VwYXJhdG9yOwotICh2b2lk
KXNldERlY2ltYWxTZXBhcmF0b3I6KE5TU3RyaW5nICopc3RyaW5nOwoKLSAoQk9PTClhbHdheXNT
aG93c0RlY2ltYWxTZXBhcmF0b3IgOwotICh2b2lkKXNldEFsd2F5c1Nob3dzRGVjaW1hbFNlcGFy
YXRvcjooQk9PTCliIDsKCi0gKE5TU3RyaW5nICopY3VycmVuY3lEZWNpbWFsU2VwYXJhdG9yIDsK
LSAodm9pZClzZXRDdXJyZW5jeURlY2ltYWxTZXBhcmF0b3I6KE5TU3RyaW5nICopc3RyaW5nIDsK
Ci0gKEJPT0wpdXNlc0dyb3VwaW5nU2VwYXJhdG9yIDsKLSAodm9pZClzZXRVc2VzR3JvdXBpbmdT
ZXBhcmF0b3I6KEJPT0wpYiA7CgotIChOU1N0cmluZyAqKWdyb3VwaW5nU2VwYXJhdG9yIDsKLSAo
dm9pZClzZXRHcm91cGluZ1NlcGFyYXRvcjooTlNTdHJpbmcgKilzdHJpbmcgOwoKCi0gKE5TU3Ry
aW5nICopemVyb1N5bWJvbCA7Ci0gKHZvaWQpc2V0WmVyb1N5bWJvbDooTlNTdHJpbmcgKilzdHJp
bmcgOwoKLSAoTlNEaWN0aW9uYXJ5ICopdGV4dEF0dHJpYnV0ZXNGb3JaZXJvIDsKLSAodm9pZClz
ZXRUZXh0QXR0cmlidXRlc0Zvclplcm86KE5TRGljdGlvbmFyeSAqKW5ld0F0dHJpYnV0ZXMgOwoK
LSAoTlNTdHJpbmcgKiluaWxTeW1ib2wgOwotICh2b2lkKXNldE5pbFN5bWJvbDooTlNTdHJpbmcg
KilzdHJpbmcgOwoKLSAoTlNEaWN0aW9uYXJ5ICopdGV4dEF0dHJpYnV0ZXNGb3JOaWwgOwotICh2
b2lkKXNldFRleHRBdHRyaWJ1dGVzRm9yTmlsOihOU0RpY3Rpb25hcnkgKiluZXdBdHRyaWJ1dGVz
IDsKCi0gKE5TU3RyaW5nICopbm90QU51bWJlclN5bWJvbCA7Ci0gKHZvaWQpc2V0Tm90QU51bWJl
clN5bWJvbDooTlNTdHJpbmcgKilzdHJpbmcgOwoKLSAoTlNEaWN0aW9uYXJ5ICopdGV4dEF0dHJp
YnV0ZXNGb3JOb3RBTnVtYmVyIDsKLSAodm9pZClzZXRUZXh0QXR0cmlidXRlc0Zvck5vdEFOdW1i
ZXI6KE5TRGljdGlvbmFyeSAqKW5ld0F0dHJpYnV0ZXMgOwoKLSAoTlNTdHJpbmcgKilwb3NpdGl2
ZUluZmluaXR5U3ltYm9sIDsKLSAodm9pZClzZXRQb3NpdGl2ZUluZmluaXR5U3ltYm9sOihOU1N0
cmluZyAqKXN0cmluZyA7CgotIChOU0RpY3Rpb25hcnkgKil0ZXh0QXR0cmlidXRlc0ZvclBvc2l0
aXZlSW5maW5pdHkgOwotICh2b2lkKXNldFRleHRBdHRyaWJ1dGVzRm9yUG9zaXRpdmVJbmZpbml0
eTooTlNEaWN0aW9uYXJ5ICopbmV3QXR0cmlidXRlcyA7CgotIChOU1N0cmluZyAqKW5lZ2F0aXZl
SW5maW5pdHlTeW1ib2wgOwotICh2b2lkKXNldE5lZ2F0aXZlSW5maW5pdHlTeW1ib2w6KE5TU3Ry
aW5nICopc3RyaW5nIDsKCi0gKE5TRGljdGlvbmFyeSAqKXRleHRBdHRyaWJ1dGVzRm9yTmVnYXRp
dmVJbmZpbml0eSA7Ci0gKHZvaWQpc2V0VGV4dEF0dHJpYnV0ZXNGb3JOZWdhdGl2ZUluZmluaXR5
OihOU0RpY3Rpb25hcnkgKiluZXdBdHRyaWJ1dGVzIDsKCgotIChOU1N0cmluZyAqKXBvc2l0aXZl
UHJlZml4IDsKLSAodm9pZClzZXRQb3NpdGl2ZVByZWZpeDooTlNTdHJpbmcgKilzdHJpbmcgOwoK
LSAoTlNTdHJpbmcgKilwb3NpdGl2ZVN1ZmZpeCA7Ci0gKHZvaWQpc2V0UG9zaXRpdmVTdWZmaXg6
KE5TU3RyaW5nICopc3RyaW5nIDsKCi0gKE5TU3RyaW5nICopbmVnYXRpdmVQcmVmaXggOwotICh2
b2lkKXNldE5lZ2F0aXZlUHJlZml4OihOU1N0cmluZyAqKXN0cmluZyA7CgotIChOU1N0cmluZyAq
KW5lZ2F0aXZlU3VmZml4IDsKLSAodm9pZClzZXROZWdhdGl2ZVN1ZmZpeDooTlNTdHJpbmcgKilz
dHJpbmcgOwoKLSAoTlNTdHJpbmcgKiljdXJyZW5jeUNvZGUgOwotICh2b2lkKXNldEN1cnJlbmN5
Q29kZTooTlNTdHJpbmcgKilzdHJpbmcgOwoKLSAoTlNTdHJpbmcgKiljdXJyZW5jeVN5bWJvbCA7
Ci0gKHZvaWQpc2V0Q3VycmVuY3lTeW1ib2w6KE5TU3RyaW5nICopc3RyaW5nIDsKCi0gKE5TU3Ry
aW5nICopaW50ZXJuYXRpb25hbEN1cnJlbmN5U3ltYm9sIDsKLSAodm9pZClzZXRJbnRlcm5hdGlv
bmFsQ3VycmVuY3lTeW1ib2w6KE5TU3RyaW5nICopc3RyaW5nIDsKCi0gKE5TU3RyaW5nICopcGVy
Y2VudFN5bWJvbCA7Ci0gKHZvaWQpc2V0UGVyY2VudFN5bWJvbDooTlNTdHJpbmcgKilzdHJpbmcg
OwoKLSAoTlNTdHJpbmcgKilwZXJNaWxsU3ltYm9sIDsKLSAodm9pZClzZXRQZXJNaWxsU3ltYm9s
OihOU1N0cmluZyAqKXN0cmluZyA7CgotIChOU1N0cmluZyAqKW1pbnVzU2lnbiA7Ci0gKHZvaWQp
c2V0TWludXNTaWduOihOU1N0cmluZyAqKXN0cmluZyA7CgotIChOU1N0cmluZyAqKXBsdXNTaWdu
IDsKLSAodm9pZClzZXRQbHVzU2lnbjooTlNTdHJpbmcgKilzdHJpbmcgOwoKLSAoTlNTdHJpbmcg
KilleHBvbmVudFN5bWJvbCA7Ci0gKHZvaWQpc2V0RXhwb25lbnRTeW1ib2w6KE5TU3RyaW5nICop
c3RyaW5nIDsKCgotIChOU1VJbnRlZ2VyKWdyb3VwaW5nU2l6ZSA7Ci0gKHZvaWQpc2V0R3JvdXBp
bmdTaXplOihOU1VJbnRlZ2VyKW51bWJlciA7CgotIChOU1VJbnRlZ2VyKXNlY29uZGFyeUdyb3Vw
aW5nU2l6ZSA7Ci0gKHZvaWQpc2V0U2Vjb25kYXJ5R3JvdXBpbmdTaXplOihOU1VJbnRlZ2VyKW51
bWJlciA7CgotIChOU051bWJlciAqKW11bHRpcGxpZXIgOwotICh2b2lkKXNldE11bHRpcGxpZXI6
KE5TTnVtYmVyICopbnVtYmVyIDsKCi0gKE5TVUludGVnZXIpZm9ybWF0V2lkdGggOwotICh2b2lk
KXNldEZvcm1hdFdpZHRoOihOU1VJbnRlZ2VyKW51bWJlciA7CgotIChOU1N0cmluZyAqKXBhZGRp
bmdDaGFyYWN0ZXIgOwotICh2b2lkKXNldFBhZGRpbmdDaGFyYWN0ZXI6KE5TU3RyaW5nICopc3Ry
aW5nIDsKCgoKZW51bSB7CiAgICBOU051bWJlckZvcm1hdHRlclBhZEJlZm9yZVByZWZpeCA9IGtD
Rk51bWJlckZvcm1hdHRlclBhZEJlZm9yZVByZWZpeCwKICAgIE5TTnVtYmVyRm9ybWF0dGVyUGFk
QWZ0ZXJQcmVmaXggPSBrQ0ZOdW1iZXJGb3JtYXR0ZXJQYWRBZnRlclByZWZpeCwKICAgIE5TTnVt
YmVyRm9ybWF0dGVyUGFkQmVmb3JlU3VmZml4ID0ga0NGTnVtYmVyRm9ybWF0dGVyUGFkQmVmb3Jl
U3VmZml4LAogICAgTlNOdW1iZXJGb3JtYXR0ZXJQYWRBZnRlclN1ZmZpeCA9IGtDRk51bWJlckZv
cm1hdHRlclBhZEFmdGVyU3VmZml4Cn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU051bWJlckZvcm1h
dHRlclBhZFBvc2l0aW9uOwoKZW51bSB7CiAgICBOU051bWJlckZvcm1hdHRlclJvdW5kQ2VpbGlu
ZyA9IGtDRk51bWJlckZvcm1hdHRlclJvdW5kQ2VpbGluZywKICAgIE5TTnVtYmVyRm9ybWF0dGVy
Um91bmRGbG9vciA9IGtDRk51bWJlckZvcm1hdHRlclJvdW5kRmxvb3IsCiAgICBOU051bWJlckZv
cm1hdHRlclJvdW5kRG93biA9IGtDRk51bWJlckZvcm1hdHRlclJvdW5kRG93biwKICAgIE5TTnVt
YmVyRm9ybWF0dGVyUm91bmRVcCA9IGtDRk51bWJlckZvcm1hdHRlclJvdW5kVXAsCiAgICBOU051
bWJlckZvcm1hdHRlclJvdW5kSGFsZkV2ZW4gPSBrQ0ZOdW1iZXJGb3JtYXR0ZXJSb3VuZEhhbGZF
dmVuLAogICAgTlNOdW1iZXJGb3JtYXR0ZXJSb3VuZEhhbGZEb3duID0ga0NGTnVtYmVyRm9ybWF0
dGVyUm91bmRIYWxmRG93biwKICAgIE5TTnVtYmVyRm9ybWF0dGVyUm91bmRIYWxmVXAgPSBrQ0ZO
dW1iZXJGb3JtYXR0ZXJSb3VuZEhhbGZVcAp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNOdW1iZXJG
b3JtYXR0ZXJSb3VuZGluZ01vZGU7CgoKCi0gKE5TTnVtYmVyRm9ybWF0dGVyUGFkUG9zaXRpb24p
cGFkZGluZ1Bvc2l0aW9uIDsKLSAodm9pZClzZXRQYWRkaW5nUG9zaXRpb246KE5TTnVtYmVyRm9y
bWF0dGVyUGFkUG9zaXRpb24pcG9zaXRpb24gOwoKLSAoTlNOdW1iZXJGb3JtYXR0ZXJSb3VuZGlu
Z01vZGUpcm91bmRpbmdNb2RlIDsKLSAodm9pZClzZXRSb3VuZGluZ01vZGU6KE5TTnVtYmVyRm9y
bWF0dGVyUm91bmRpbmdNb2RlKW1vZGUgOwoKLSAoTlNOdW1iZXIgKilyb3VuZGluZ0luY3JlbWVu
dCA7Ci0gKHZvaWQpc2V0Um91bmRpbmdJbmNyZW1lbnQ6KE5TTnVtYmVyICopbnVtYmVyIDsKCi0g
KE5TVUludGVnZXIpbWluaW11bUludGVnZXJEaWdpdHMgOwotICh2b2lkKXNldE1pbmltdW1JbnRl
Z2VyRGlnaXRzOihOU1VJbnRlZ2VyKW51bWJlciA7CgotIChOU1VJbnRlZ2VyKW1heGltdW1JbnRl
Z2VyRGlnaXRzIDsKLSAodm9pZClzZXRNYXhpbXVtSW50ZWdlckRpZ2l0czooTlNVSW50ZWdlcilu
dW1iZXIgOwoKLSAoTlNVSW50ZWdlciltaW5pbXVtRnJhY3Rpb25EaWdpdHMgOwotICh2b2lkKXNl
dE1pbmltdW1GcmFjdGlvbkRpZ2l0czooTlNVSW50ZWdlciludW1iZXIgOwoKLSAoTlNVSW50ZWdl
ciltYXhpbXVtRnJhY3Rpb25EaWdpdHMgOwotICh2b2lkKXNldE1heGltdW1GcmFjdGlvbkRpZ2l0
czooTlNVSW50ZWdlciludW1iZXIgOwoKCgotIChOU051bWJlciAqKW1pbmltdW07Ci0gKHZvaWQp
c2V0TWluaW11bTooTlNOdW1iZXIgKiludW1iZXI7CgotIChOU051bWJlciAqKW1heGltdW07Ci0g
KHZvaWQpc2V0TWF4aW11bTooTlNOdW1iZXIgKiludW1iZXI7CgoKCi0gKE5TU3RyaW5nICopY3Vy
cmVuY3lHcm91cGluZ1NlcGFyYXRvciA7Ci0gKHZvaWQpc2V0Q3VycmVuY3lHcm91cGluZ1NlcGFy
YXRvcjooTlNTdHJpbmcgKilzdHJpbmcgOwoKLSAoQk9PTClpc0xlbmllbnQgOwotICh2b2lkKXNl
dExlbmllbnQ6KEJPT0wpYiA7CgotIChCT09MKXVzZXNTaWduaWZpY2FudERpZ2l0cyA7Ci0gKHZv
aWQpc2V0VXNlc1NpZ25pZmljYW50RGlnaXRzOihCT09MKWIgOwoKLSAoTlNVSW50ZWdlciltaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMgOwotICh2b2lkKXNldE1pbmltdW1TaWduaWZpY2FudERpZ2l0
czooTlNVSW50ZWdlciludW1iZXIgOwoKLSAoTlNVSW50ZWdlciltYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgOwotICh2b2lkKXNldE1heGltdW1TaWduaWZpY2FudERpZ2l0czooTlNVSW50ZWdlcilu
dW1iZXIgOwoKLSAoQk9PTClpc1BhcnRpYWxTdHJpbmdWYWxpZGF0aW9uRW5hYmxlZCA7Ci0gKHZv
aWQpc2V0UGFydGlhbFN0cmluZ1ZhbGlkYXRpb25FbmFibGVkOihCT09MKWIgOwoKQGVuZAoKQGNs
YXNzIE5TRGVjaW1hbE51bWJlckhhbmRsZXI7CgoKQGludGVyZmFjZSBOU051bWJlckZvcm1hdHRl
ciAoTlNOdW1iZXJGb3JtYXR0ZXJDb21wYXRpYmlsaXR5KQoKLSAoQk9PTCloYXNUaG91c2FuZFNl
cGFyYXRvcnM7Ci0gKHZvaWQpc2V0SGFzVGhvdXNhbmRTZXBhcmF0b3JzOihCT09MKWZsYWc7Ci0g
KE5TU3RyaW5nICopdGhvdXNhbmRTZXBhcmF0b3I7Ci0gKHZvaWQpc2V0VGhvdXNhbmRTZXBhcmF0
b3I6KE5TU3RyaW5nICopbmV3U2VwYXJhdG9yOwoKLSAoQk9PTClsb2NhbGl6ZXNGb3JtYXQ7Ci0g
KHZvaWQpc2V0TG9jYWxpemVzRm9ybWF0OihCT09MKWZsYWc7CgotIChOU1N0cmluZyAqKWZvcm1h
dDsKLSAodm9pZClzZXRGb3JtYXQ6KE5TU3RyaW5nICopc3RyaW5nOwoKLSAoTlNBdHRyaWJ1dGVk
U3RyaW5nICopYXR0cmlidXRlZFN0cmluZ0Zvclplcm87Ci0gKHZvaWQpc2V0QXR0cmlidXRlZFN0
cmluZ0Zvclplcm86KE5TQXR0cmlidXRlZFN0cmluZyAqKW5ld0F0dHJpYnV0ZWRTdHJpbmc7Ci0g
KE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmdGb3JOaWw7Ci0gKHZvaWQpc2V0
QXR0cmlidXRlZFN0cmluZ0Zvck5pbDooTlNBdHRyaWJ1dGVkU3RyaW5nICopbmV3QXR0cmlidXRl
ZFN0cmluZzsKLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZ0Zvck5vdEFO
dW1iZXI7Ci0gKHZvaWQpc2V0QXR0cmlidXRlZFN0cmluZ0Zvck5vdEFOdW1iZXI6KE5TQXR0cmli
dXRlZFN0cmluZyAqKW5ld0F0dHJpYnV0ZWRTdHJpbmc7CgotIChOU0RlY2ltYWxOdW1iZXJIYW5k
bGVyICopcm91bmRpbmdCZWhhdmlvcjsKLSAodm9pZClzZXRSb3VuZGluZ0JlaGF2aW9yOihOU0Rl
Y2ltYWxOdW1iZXJIYW5kbGVyICopbmV3Um91bmRpbmdCZWhhdmlvcjsKIyAyOTUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNOdW1iZXJG
b3JtYXR0ZXIuaCIgMwpAZW5kCiMgNDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKCgojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNQb3J0Lmgi
IDEgMwoKCgoKCgp0eXBlZGVmIGludCBOU1NvY2tldE5hdGl2ZUhhbmRsZTsKCkBjbGFzcyBOU1J1
bkxvb3AsIE5TTXV0YWJsZUFycmF5LCBOU0RhdGU7CkBjbGFzcyBOU0Nvbm5lY3Rpb24sIE5TUG9y
dE1lc3NhZ2U7CkBjbGFzcyBOU0RhdGE7CkBwcm90b2NvbCBOU1BvcnREZWxlZ2F0ZSwgTlNNYWNo
UG9ydERlbGVnYXRlOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TUG9ydERpZEJlY29t
ZUludmFsaWROb3RpZmljYXRpb247CgpAaW50ZXJmYWNlIE5TUG9ydCA6IE5TT2JqZWN0IDxOU0Nv
cHlpbmcsIE5TQ29kaW5nPgoKCgoKCgorIChpZClhbGxvY1dpdGhab25lOihOU1pvbmUgKil6b25l
OwoKKyAoTlNQb3J0ICopcG9ydDsKCi0gKHZvaWQpaW52YWxpZGF0ZTsKLSAoQk9PTClpc1ZhbGlk
OwoKLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPE5TUG9ydERlbGVnYXRlPilhbk9iamVjdDsKLSAo
aWQgPE5TUG9ydERlbGVnYXRlPilkZWxlZ2F0ZTsKCgoKCgotICh2b2lkKXNjaGVkdWxlSW5SdW5M
b29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZTsKLSAodm9p
ZClyZW1vdmVGcm9tUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmlu
ZyAqKW1vZGU7CgoKLSAoTlNVSW50ZWdlcilyZXNlcnZlZFNwYWNlTGVuZ3RoOwotIChCT09MKXNl
bmRCZWZvcmVEYXRlOihOU0RhdGUgKilsaW1pdERhdGUgY29tcG9uZW50czooTlNNdXRhYmxlQXJy
YXkgKiljb21wb25lbnRzIGZyb206KE5TUG9ydCAqKSByZWNlaXZlUG9ydCByZXNlcnZlZDooTlNV
SW50ZWdlciloZWFkZXJTcGFjZVJlc2VydmVkOwotIChCT09MKXNlbmRCZWZvcmVEYXRlOihOU0Rh
dGUgKilsaW1pdERhdGUgbXNnaWQ6KE5TVUludGVnZXIpbXNnSUQgY29tcG9uZW50czooTlNNdXRh
YmxlQXJyYXkgKiljb21wb25lbnRzIGZyb206KE5TUG9ydCAqKXJlY2VpdmVQb3J0IHJlc2VydmVk
OihOU1VJbnRlZ2VyKWhlYWRlclNwYWNlUmVzZXJ2ZWQ7CiMgNTYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNQb3J0LmgiIDMKLSAodm9p
ZClhZGRDb25uZWN0aW9uOihOU0Nvbm5lY3Rpb24gKiljb25uIHRvUnVuTG9vcDooTlNSdW5Mb29w
ICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7Ci0gKHZvaWQpcmVtb3ZlQ29ubmVj
dGlvbjooTlNDb25uZWN0aW9uICopY29ubiBmcm9tUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9v
cCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7CgoKCgoKCkBlbmQKCkBwcm90b2NvbCBOU1BvcnRE
ZWxlZ2F0ZSA8TlNPYmplY3Q+CkBvcHRpb25hbAoKLSAodm9pZCloYW5kbGVQb3J0TWVzc2FnZToo
TlNQb3J0TWVzc2FnZSAqKW1lc3NhZ2U7CgoKCkBlbmQKCgoKQGludGVyZmFjZSBOU01hY2hQb3J0
IDogTlNQb3J0IHsKICAgIEBwcml2YXRlCiAgICBpZCBfZGVsZWdhdGU7CiAgICBOU1VJbnRlZ2Vy
IF9mbGFnczsKICAgIHVpbnQzMl90IF9tYWNoUG9ydDsKICAgIE5TVUludGVnZXIgX3Jlc2VydmVk
Owp9CgorIChOU1BvcnQgKilwb3J0V2l0aE1hY2hQb3J0Oih1aW50MzJfdCltYWNoUG9ydDsKLSAo
aWQpaW5pdFdpdGhNYWNoUG9ydDoodWludDMyX3QpbWFjaFBvcnQ7CgotICh2b2lkKXNldERlbGVn
YXRlOihpZCA8TlNNYWNoUG9ydERlbGVnYXRlPilhbk9iamVjdDsKLSAoaWQgPE5TTWFjaFBvcnRE
ZWxlZ2F0ZT4pZGVsZWdhdGU7CgoKZW51bSB7CiAgICBOU01hY2hQb3J0RGVhbGxvY2F0ZU5vbmUg
PSAwLAogICAgTlNNYWNoUG9ydERlYWxsb2NhdGVTZW5kUmlnaHQgPSAoMVVMIDw8IDApLAogICAg
TlNNYWNoUG9ydERlYWxsb2NhdGVSZWNlaXZlUmlnaHQgPSAoMVVMIDw8IDEpCn07CgorIChOU1Bv
cnQgKilwb3J0V2l0aE1hY2hQb3J0Oih1aW50MzJfdCltYWNoUG9ydCBvcHRpb25zOihOU1VJbnRl
Z2VyKWYgOwotIChpZClpbml0V2l0aE1hY2hQb3J0Oih1aW50MzJfdCltYWNoUG9ydCBvcHRpb25z
OihOU1VJbnRlZ2VyKWYgOwoKCi0gKHVpbnQzMl90KW1hY2hQb3J0OwoKLSAodm9pZClzY2hlZHVs
ZUluUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7
Ci0gKHZvaWQpcmVtb3ZlRnJvbVJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZToo
TlNTdHJpbmcgKiltb2RlOwoKCgoKQGVuZAoKQHByb3RvY29sIE5TTWFjaFBvcnREZWxlZ2F0ZSA8
TlNQb3J0RGVsZWdhdGU+CkBvcHRpb25hbAoKCgotICh2b2lkKWhhbmRsZU1hY2hNZXNzYWdlOih2
b2lkICopbXNnOwoKQGVuZAoKCgoKCkBpbnRlcmZhY2UgTlNNZXNzYWdlUG9ydCA6IE5TUG9ydCB7
CiAgICBAcHJpdmF0ZQogICAgdm9pZCAqIF9wb3J0OwogICAgaWQgX2RlbGVnYXRlOwp9CgpAZW5k
CgoKCgoKCkBpbnRlcmZhY2UgTlNTb2NrZXRQb3J0IDogTlNQb3J0IHsKICAgIEBwcml2YXRlCiAg
ICB2b2lkICogX3JlY2VpdmVyOwogICAgdm9pZCAqIF9jb25uZWN0b3JzOwogICAgdm9pZCAqIF9s
b29wczsKICAgIHZvaWQgKiBfZGF0YTsKICAgIGlkIF9zaWduYXR1cmU7CiAgICBpZCBfZGVsZWdh
dGU7CiAgICBpZCBfbG9jazsKICAgIE5TVUludGVnZXIgX21heFNpemU7CiAgICBOU1VJbnRlZ2Vy
IF91c2VDb3VudDsKICAgIE5TVUludGVnZXIgX3Jlc2VydmVkOwp9CgotIChpZClpbml0OwotIChp
ZClpbml0V2l0aFRDUFBvcnQ6KHVuc2lnbmVkIHNob3J0KXBvcnQ7Ci0gKGlkKWluaXRXaXRoUHJv
dG9jb2xGYW1pbHk6KGludClmYW1pbHkgc29ja2V0VHlwZTooaW50KXR5cGUgcHJvdG9jb2w6KGlu
dClwcm90b2NvbCBhZGRyZXNzOihOU0RhdGEgKilhZGRyZXNzOwotIChpZClpbml0V2l0aFByb3Rv
Y29sRmFtaWx5OihpbnQpZmFtaWx5IHNvY2tldFR5cGU6KGludCl0eXBlIHByb3RvY29sOihpbnQp
cHJvdG9jb2wgc29ja2V0OihOU1NvY2tldE5hdGl2ZUhhbmRsZSlzb2NrOwotIChpZClpbml0UmVt
b3RlV2l0aFRDUFBvcnQ6KHVuc2lnbmVkIHNob3J0KXBvcnQgaG9zdDooTlNTdHJpbmcgKilob3N0
TmFtZTsKLSAoaWQpaW5pdFJlbW90ZVdpdGhQcm90b2NvbEZhbWlseTooaW50KWZhbWlseSBzb2Nr
ZXRUeXBlOihpbnQpdHlwZSBwcm90b2NvbDooaW50KXByb3RvY29sIGFkZHJlc3M6KE5TRGF0YSAq
KWFkZHJlc3M7Ci0gKGludClwcm90b2NvbEZhbWlseTsKLSAoaW50KXNvY2tldFR5cGU7Ci0gKGlu
dClwcm90b2NvbDsKLSAoTlNEYXRhICopYWRkcmVzczsKLSAoTlNTb2NrZXROYXRpdmVIYW5kbGUp
c29ja2V0OwoKQGVuZAojIDQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1Byb2Nlc3NJbmZvLmgi
IDEgMwoKCgoKCgoKZW51bSB7CiBOU1dpbmRvd3NOVE9wZXJhdGluZ1N5c3RlbSA9IDEsCiBOU1dp
bmRvd3M5NU9wZXJhdGluZ1N5c3RlbSwKIE5TU29sYXJpc09wZXJhdGluZ1N5c3RlbSwKIE5TSFBV
WE9wZXJhdGluZ1N5c3RlbSwKIE5TTUFDSE9wZXJhdGluZ1N5c3RlbSwKIE5TU3VuT1NPcGVyYXRp
bmdTeXN0ZW0sCiBOU09TRjFPcGVyYXRpbmdTeXN0ZW0KfTsKCkBjbGFzcyBOU0FycmF5LCBOU1N0
cmluZywgTlNEaWN0aW9uYXJ5OwoKQGludGVyZmFjZSBOU1Byb2Nlc3NJbmZvIDogTlNPYmplY3Qg
ewogICAgQHByaXZhdGUKICAgIE5TRGljdGlvbmFyeSAqZW52aXJvbm1lbnQ7CiAgICBOU0FycmF5
ICphcmd1bWVudHM7CiAgICBOU1N0cmluZyAqaG9zdE5hbWU7CiAgICBOU1N0cmluZyAqbmFtZTsK
ICAgIHZvaWQgKnJlc2VydmVkOwp9CgorIChOU1Byb2Nlc3NJbmZvICopcHJvY2Vzc0luZm87Cgot
IChOU0RpY3Rpb25hcnkgKillbnZpcm9ubWVudDsKCi0gKE5TQXJyYXkgKilhcmd1bWVudHM7Cgot
IChOU1N0cmluZyAqKWhvc3ROYW1lOwoKLSAoTlNTdHJpbmcgKilwcm9jZXNzTmFtZTsKCi0gKGlu
dClwcm9jZXNzSWRlbnRpZmllcjsKCi0gKHZvaWQpc2V0UHJvY2Vzc05hbWU6KE5TU3RyaW5nICop
bmV3TmFtZTsKCi0gKE5TU3RyaW5nICopZ2xvYmFsbHlVbmlxdWVTdHJpbmc7CgotIChOU1VJbnRl
Z2VyKW9wZXJhdGluZ1N5c3RlbTsKLSAoTlNTdHJpbmcgKilvcGVyYXRpbmdTeXN0ZW1OYW1lOwoK
LSAoTlNTdHJpbmcgKilvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nIDsKCgotIChOU1VJbnRl
Z2VyKXByb2Nlc3NvckNvdW50IDsKLSAoTlNVSW50ZWdlcilhY3RpdmVQcm9jZXNzb3JDb3VudCA7
Ci0gKHVuc2lnbmVkIGxvbmcgbG9uZylwaHlzaWNhbE1lbW9yeSA7CgotIChOU1RpbWVJbnRlcnZh
bClzeXN0ZW1VcHRpbWUgOwojIDY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TUHJvY2Vzc0luZm8uaCIgMwotICh2b2lkKWRpc2FibGVT
dWRkZW5UZXJtaW5hdGlvbiA7Ci0gKHZvaWQpZW5hYmxlU3VkZGVuVGVybWluYXRpb24gOwoKCgpA
ZW5kCiMgNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1Byb3h5LmgiIDEgMwoKCgoKCgpAY2xh
c3MgTlNNZXRob2RTaWduYXR1cmUsIE5TSW52b2NhdGlvbjsKCkBpbnRlcmZhY2UgTlNQcm94eSA8
TlNPYmplY3Q+IHsKICAgIENsYXNzIGlzYTsKfQoKKyAoaWQpYWxsb2M7CisgKGlkKWFsbG9jV2l0
aFpvbmU6KE5TWm9uZSAqKXpvbmU7CisgKENsYXNzKWNsYXNzOwoKLSAodm9pZClmb3J3YXJkSW52
b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbjsKLSAoTlNNZXRob2RTaWduYXR1cmUg
KiltZXRob2RTaWduYXR1cmVGb3JTZWxlY3RvcjooU0VMKXNlbDsKLSAodm9pZClkZWFsbG9jOwot
ICh2b2lkKWZpbmFsaXplOwotIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uOworIChCT09MKXJlc3Bv
bmRzVG9TZWxlY3RvcjooU0VMKWFTZWxlY3RvcjsKCkBlbmQKIyA0OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIg
MwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL05TUnVuTG9vcC5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9G
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TUnVuTG9vcC5oIiAzCkBjbGFzcyBOU1RpbWVy
LCBOU1BvcnQsIE5TQXJyYXk7CgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNEZWZhdWx0
UnVuTG9vcE1vZGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1J1bkxvb3BDb21tb25N
b2RlcyA7CgpAaW50ZXJmYWNlIE5TUnVuTG9vcCA6IE5TT2JqZWN0IHsKQHByaXZhdGUKICAgIGlk
IF9ybDsKICAgIGlkIF9kcGVyZjsKICAgIGlkIF9wZXJmdDsKICAgIGlkIF9pbmZvOwogICAgaWQg
X3BvcnRzOwogICAgdm9pZCAqX3Jlc2VydmVkWzZdOwp9CgorIChOU1J1bkxvb3AgKiljdXJyZW50
UnVuTG9vcDsKKyAoTlNSdW5Mb29wICopbWFpblJ1bkxvb3AgOwoKLSAoTlNTdHJpbmcgKiljdXJy
ZW50TW9kZTsKLSAoQ0ZSdW5Mb29wUmVmKWdldENGUnVuTG9vcDsKCi0gKHZvaWQpYWRkVGltZXI6
KE5TVGltZXIgKil0aW1lciBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7CgotICh2b2lkKWFkZFBv
cnQ6KE5TUG9ydCAqKWFQb3J0IGZvck1vZGU6KE5TU3RyaW5nICopbW9kZTsKLSAodm9pZClyZW1v
dmVQb3J0OihOU1BvcnQgKilhUG9ydCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7CgotIChOU0Rh
dGUgKilsaW1pdERhdGVGb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7Ci0gKHZvaWQpYWNjZXB0SW5w
dXRGb3JNb2RlOihOU1N0cmluZyAqKW1vZGUgYmVmb3JlRGF0ZTooTlNEYXRlICopbGltaXREYXRl
OwoKQGVuZAoKQGludGVyZmFjZSBOU1J1bkxvb3AgKE5TUnVuTG9vcENvbnZlbmllbmNlcykKCi0g
KHZvaWQpcnVuOwotICh2b2lkKXJ1blVudGlsRGF0ZTooTlNEYXRlICopbGltaXREYXRlOwotIChC
T09MKXJ1bk1vZGU6KE5TU3RyaW5nICopbW9kZSBiZWZvcmVEYXRlOihOU0RhdGUgKilsaW1pdERh
dGU7CgoKLSAodm9pZCljb25maWd1cmVBc1NlcnZlciBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7CgoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TT2JqZWN0IChOU0RlbGF5ZWRQZXJmb3JtaW5nKQoK
LSAodm9pZClwZXJmb3JtU2VsZWN0b3I6KFNFTClhU2VsZWN0b3Igd2l0aE9iamVjdDooaWQpYW5B
cmd1bWVudCBhZnRlckRlbGF5OihOU1RpbWVJbnRlcnZhbClkZWxheSBpbk1vZGVzOihOU0FycmF5
ICopbW9kZXM7Ci0gKHZvaWQpcGVyZm9ybVNlbGVjdG9yOihTRUwpYVNlbGVjdG9yIHdpdGhPYmpl
Y3Q6KGlkKWFuQXJndW1lbnQgYWZ0ZXJEZWxheTooTlNUaW1lSW50ZXJ2YWwpZGVsYXk7CisgKHZv
aWQpY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OihpZClhVGFyZ2V0IHNl
bGVjdG9yOihTRUwpYVNlbGVjdG9yIG9iamVjdDooaWQpYW5Bcmd1bWVudDsKCisgKHZvaWQpY2Fu
Y2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OihpZClhVGFyZ2V0OwoKCkBlbmQK
CkBpbnRlcmZhY2UgTlNSdW5Mb29wIChOU09yZGVyZWRQZXJmb3JtKQoKLSAodm9pZClwZXJmb3Jt
U2VsZWN0b3I6KFNFTClhU2VsZWN0b3IgdGFyZ2V0OihpZCl0YXJnZXQgYXJndW1lbnQ6KGlkKWFy
ZyBvcmRlcjooTlNVSW50ZWdlcilvcmRlciBtb2RlczooTlNBcnJheSAqKW1vZGVzOwotICh2b2lk
KWNhbmNlbFBlcmZvcm1TZWxlY3RvcjooU0VMKWFTZWxlY3RvciB0YXJnZXQ6KGlkKXRhcmdldCBh
cmd1bWVudDooaWQpYXJnOwoKLSAodm9pZCljYW5jZWxQZXJmb3JtU2VsZWN0b3JzV2l0aFRhcmdl
dDooaWQpdGFyZ2V0OwoKCkBlbmQKIyA1MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91
bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwoKCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1NvcnRE
ZXNjcmlwdG9yLmgiIDEgMwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TU29ydERlc2NyaXB0b3IuaCIgMwpAaW50ZXJmYWNlIE5T
U29ydERlc2NyaXB0b3IgOiBOU09iamVjdCA8TlNDb2RpbmcsIE5TQ29weWluZz4gewpAcHJpdmF0
ZQogICAgTlNVSW50ZWdlciBfc29ydERlc2NyaXB0b3JGbGFnczsKICAgIE5TU3RyaW5nICpfa2V5
OwogICAgU0VMIF9zZWxlY3RvcjsKICAgIGlkIF9zZWxlY3Rvck9yQmxvY2s7Cn0KCisgKGlkKXNv
cnREZXNjcmlwdG9yV2l0aEtleTooTlNTdHJpbmcgKilrZXkgYXNjZW5kaW5nOihCT09MKWFzY2Vu
ZGluZyA7CisgKGlkKXNvcnREZXNjcmlwdG9yV2l0aEtleTooTlNTdHJpbmcgKilrZXkgYXNjZW5k
aW5nOihCT09MKWFzY2VuZGluZyBzZWxlY3RvcjooU0VMKXNlbGVjdG9yIDsKCgotIChpZClpbml0
V2l0aEtleTooTlNTdHJpbmcgKilrZXkgYXNjZW5kaW5nOihCT09MKWFzY2VuZGluZzsKLSAoaWQp
aW5pdFdpdGhLZXk6KE5TU3RyaW5nICopa2V5IGFzY2VuZGluZzooQk9PTClhc2NlbmRpbmcgc2Vs
ZWN0b3I6KFNFTClzZWxlY3RvcjsKCi0gKE5TU3RyaW5nICopa2V5OwotIChCT09MKWFzY2VuZGlu
ZzsKLSAoU0VMKXNlbGVjdG9yOwoKCisgKGlkKXNvcnREZXNjcmlwdG9yV2l0aEtleTooTlNTdHJp
bmcgKilrZXkgYXNjZW5kaW5nOihCT09MKWFzY2VuZGluZyBjb21wYXJhdG9yOihOU0NvbXBhcmF0
b3IpY21wdHIgOwoKLSAoaWQpaW5pdFdpdGhLZXk6KE5TU3RyaW5nICopa2V5IGFzY2VuZGluZzoo
Qk9PTClhc2NlbmRpbmcgY29tcGFyYXRvcjooTlNDb21wYXJhdG9yKWNtcHRyIDsKLSAoTlNDb21w
YXJhdG9yKWNvbXBhcmF0b3IgOwoKCi0gKE5TQ29tcGFyaXNvblJlc3VsdCljb21wYXJlT2JqZWN0
OihpZClvYmplY3QxIHRvT2JqZWN0OihpZClvYmplY3QyOwotIChpZClyZXZlcnNlZFNvcnREZXNj
cmlwdG9yOwoKQGVuZAoKQGludGVyZmFjZSBOU1NldCAoTlNTb3J0RGVzY3JpcHRvclNvcnRpbmcp
CgotIChOU0FycmF5ICopc29ydGVkQXJyYXlVc2luZ0Rlc2NyaXB0b3JzOihOU0FycmF5ICopc29y
dERlc2NyaXB0b3JzIDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNBcnJheSAoTlNTb3J0RGVzY3JpcHRv
clNvcnRpbmcpCgotIChOU0FycmF5ICopc29ydGVkQXJyYXlVc2luZ0Rlc2NyaXB0b3JzOihOU0Fy
cmF5ICopc29ydERlc2NyaXB0b3JzOwoKQGVuZAoKQGludGVyZmFjZSBOU011dGFibGVBcnJheSAo
TlNTb3J0RGVzY3JpcHRvclNvcnRpbmcpCgotICh2b2lkKXNvcnRVc2luZ0Rlc2NyaXB0b3JzOihO
U0FycmF5ICopc29ydERlc2NyaXB0b3JzOwoKQGVuZAojIDUzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9OU1N0cmVhbS5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TU3RyZWFtLmgiIDMKQGNsYXNzIE5TRGF0YSwgTlNEaWN0
aW9uYXJ5LCBOU0Vycm9yLCBOU0hvc3QsIE5TSW5wdXRTdHJlYW0sIE5TT3V0cHV0U3RyZWFtLCBO
U1J1bkxvb3AsIE5TU3RyaW5nLCBOU1VSTDsKQHByb3RvY29sIE5TU3RyZWFtRGVsZWdhdGU7Cgpl
bnVtIHsKICAgIE5TU3RyZWFtU3RhdHVzTm90T3BlbiA9IDAsCiAgICBOU1N0cmVhbVN0YXR1c09w
ZW5pbmcgPSAxLAogICAgTlNTdHJlYW1TdGF0dXNPcGVuID0gMiwKICAgIE5TU3RyZWFtU3RhdHVz
UmVhZGluZyA9IDMsCiAgICBOU1N0cmVhbVN0YXR1c1dyaXRpbmcgPSA0LAogICAgTlNTdHJlYW1T
dGF0dXNBdEVuZCA9IDUsCiAgICBOU1N0cmVhbVN0YXR1c0Nsb3NlZCA9IDYsCiAgICBOU1N0cmVh
bVN0YXR1c0Vycm9yID0gNwp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNTdHJlYW1TdGF0dXM7Cgpl
bnVtIHsKICAgIE5TU3RyZWFtRXZlbnROb25lID0gMCwKICAgIE5TU3RyZWFtRXZlbnRPcGVuQ29t
cGxldGVkID0gMVVMIDw8IDAsCiAgICBOU1N0cmVhbUV2ZW50SGFzQnl0ZXNBdmFpbGFibGUgPSAx
VUwgPDwgMSwKICAgIE5TU3RyZWFtRXZlbnRIYXNTcGFjZUF2YWlsYWJsZSA9IDFVTCA8PCAyLAog
ICAgTlNTdHJlYW1FdmVudEVycm9yT2NjdXJyZWQgPSAxVUwgPDwgMywKICAgIE5TU3RyZWFtRXZl
bnRFbmRFbmNvdW50ZXJlZCA9IDFVTCA8PCA0Cn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1N0cmVh
bUV2ZW50OwoKCgpAaW50ZXJmYWNlIE5TU3RyZWFtIDogTlNPYmplY3QKLSAodm9pZClvcGVuOwot
ICh2b2lkKWNsb3NlOwoKLSAoaWQgPE5TU3RyZWFtRGVsZWdhdGU+KWRlbGVnYXRlOwotICh2b2lk
KXNldERlbGVnYXRlOihpZCA8TlNTdHJlYW1EZWxlZ2F0ZT4pZGVsZWdhdGU7CgoKLSAoaWQpcHJv
cGVydHlGb3JLZXk6KE5TU3RyaW5nICopa2V5OwotIChCT09MKXNldFByb3BlcnR5OihpZClwcm9w
ZXJ0eSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwoKLSAodm9pZClzY2hlZHVsZUluUnVuTG9vcDoo
TlNSdW5Mb29wICopYVJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2RlOwotICh2b2lkKXJl
bW92ZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKilhUnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAq
KW1vZGU7CgotIChOU1N0cmVhbVN0YXR1cylzdHJlYW1TdGF0dXM7Ci0gKE5TRXJyb3IgKilzdHJl
YW1FcnJvcjsKQGVuZAoKCgpAaW50ZXJmYWNlIE5TSW5wdXRTdHJlYW0gOiBOU1N0cmVhbQotIChO
U0ludGVnZXIpcmVhZDoodWludDhfdCAqKWJ1ZmZlciBtYXhMZW5ndGg6KE5TVUludGVnZXIpbGVu
OwoKCi0gKEJPT0wpZ2V0QnVmZmVyOih1aW50OF90ICoqKWJ1ZmZlciBsZW5ndGg6KE5TVUludGVn
ZXIgKilsZW47CgoKLSAoQk9PTCloYXNCeXRlc0F2YWlsYWJsZTsKCkBlbmQKCgoKQGludGVyZmFj
ZSBOU091dHB1dFN0cmVhbSA6IE5TU3RyZWFtCi0gKE5TSW50ZWdlcil3cml0ZTooY29uc3QgdWlu
dDhfdCAqKWJ1ZmZlciBtYXhMZW5ndGg6KE5TVUludGVnZXIpbGVuOwoKCi0gKEJPT0wpaGFzU3Bh
Y2VBdmFpbGFibGU7CgpAZW5kCgoKQGludGVyZmFjZSBOU1N0cmVhbSAoTlNTb2NrZXRTdHJlYW1D
cmVhdGlvbkV4dGVuc2lvbnMpCisgKHZvaWQpZ2V0U3RyZWFtc1RvSG9zdDooTlNIb3N0ICopaG9z
dCBwb3J0OihOU0ludGVnZXIpcG9ydCBpbnB1dFN0cmVhbTooTlNJbnB1dFN0cmVhbSAqKilpbnB1
dFN0cmVhbSBvdXRwdXRTdHJlYW06KE5TT3V0cHV0U3RyZWFtICoqKW91dHB1dFN0cmVhbTsKQGVu
ZAoKCgpAaW50ZXJmYWNlIE5TSW5wdXRTdHJlYW0gKE5TSW5wdXRTdHJlYW1FeHRlbnNpb25zKQot
IChpZClpbml0V2l0aERhdGE6KE5TRGF0YSAqKWRhdGE7Ci0gKGlkKWluaXRXaXRoRmlsZUF0UGF0
aDooTlNTdHJpbmcgKilwYXRoOwotIChpZClpbml0V2l0aFVSTDooTlNVUkwgKil1cmwgOwoKKyAo
aWQpaW5wdXRTdHJlYW1XaXRoRGF0YTooTlNEYXRhICopZGF0YTsKKyAoaWQpaW5wdXRTdHJlYW1X
aXRoRmlsZUF0UGF0aDooTlNTdHJpbmcgKilwYXRoOworIChpZClpbnB1dFN0cmVhbVdpdGhVUkw6
KE5TVVJMICopdXJsIDsKQGVuZAoKCkBpbnRlcmZhY2UgTlNPdXRwdXRTdHJlYW0gKE5TT3V0cHV0
U3RyZWFtRXh0ZW5zaW9ucykKLSAoaWQpaW5pdFRvTWVtb3J5OwotIChpZClpbml0VG9CdWZmZXI6
KHVpbnQ4X3QgKilidWZmZXIgY2FwYWNpdHk6KE5TVUludGVnZXIpY2FwYWNpdHk7Ci0gKGlkKWlu
aXRUb0ZpbGVBdFBhdGg6KE5TU3RyaW5nICopcGF0aCBhcHBlbmQ6KEJPT0wpc2hvdWxkQXBwZW5k
OwotIChpZClpbml0V2l0aFVSTDooTlNVUkwgKil1cmwgYXBwZW5kOihCT09MKXNob3VsZEFwcGVu
ZCA7CgorIChpZClvdXRwdXRTdHJlYW1Ub01lbW9yeTsKKyAoaWQpb3V0cHV0U3RyZWFtVG9CdWZm
ZXI6KHVpbnQ4X3QgKilidWZmZXIgY2FwYWNpdHk6KE5TVUludGVnZXIpY2FwYWNpdHk7CisgKGlk
KW91dHB1dFN0cmVhbVRvRmlsZUF0UGF0aDooTlNTdHJpbmcgKilwYXRoIGFwcGVuZDooQk9PTClz
aG91bGRBcHBlbmQ7CisgKGlkKW91dHB1dFN0cmVhbVdpdGhVUkw6KE5TVVJMICopdXJsIGFwcGVu
ZDooQk9PTClzaG91bGRBcHBlbmQgOwpAZW5kCgpAcHJvdG9jb2wgTlNTdHJlYW1EZWxlZ2F0ZSA8
TlNPYmplY3Q+CkBvcHRpb25hbAotICh2b2lkKXN0cmVhbTooTlNTdHJlYW0gKilhU3RyZWFtIGhh
bmRsZUV2ZW50OihOU1N0cmVhbUV2ZW50KWV2ZW50Q29kZTsKQGVuZAoKCgpleHRlcm4gIkMiIE5T
U3RyaW5nICogY29uc3QgTlNTdHJlYW1Tb2NrZXRTZWN1cml0eUxldmVsS2V5IDsKCmV4dGVybiAi
QyIgTlNTdHJpbmcgKiBjb25zdCBOU1N0cmVhbVNvY2tldFNlY3VyaXR5TGV2ZWxOb25lIDsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TU3RyZWFtU29ja2V0U2VjdXJpdHlMZXZlbFNTTHYy
IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TU3RyZWFtU29ja2V0U2VjdXJpdHlMZXZl
bFNTTHYzIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TU3RyZWFtU29ja2V0U2VjdXJp
dHlMZXZlbFRMU3YxIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TU3RyZWFtU29ja2V0
U2VjdXJpdHlMZXZlbE5lZ290aWF0ZWRTU0wgOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0
IE5TU3RyZWFtU09DS1NQcm94eUNvbmZpZ3VyYXRpb25LZXkgOwoKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IE5TU3RyZWFtU09DS1NQcm94eUhvc3RLZXkgOwoKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IE5TU3RyZWFtU09DS1NQcm94eVBvcnRLZXkgOwoKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IE5TU3RyZWFtU09DS1NQcm94eVZlcnNpb25LZXkgOwoKZXh0ZXJuICJDIiBOU1N0
cmluZyAqIGNvbnN0IE5TU3RyZWFtU09DS1NQcm94eVVzZXJLZXkgOwoKZXh0ZXJuICJDIiBOU1N0
cmluZyAqIGNvbnN0IE5TU3RyZWFtU09DS1NQcm94eVBhc3N3b3JkS2V5IDsKCgpleHRlcm4gIkMi
IE5TU3RyaW5nICogY29uc3QgTlNTdHJlYW1TT0NLU1Byb3h5VmVyc2lvbjQgOwoKZXh0ZXJuICJD
IiBOU1N0cmluZyAqIGNvbnN0IE5TU3RyZWFtU09DS1NQcm94eVZlcnNpb241IDsKCgpleHRlcm4g
IkMiIE5TU3RyaW5nICogY29uc3QgTlNTdHJlYW1EYXRhV3JpdHRlblRvTWVtb3J5U3RyZWFtS2V5
IDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNTdHJlYW1GaWxlQ3VycmVudE9mZnNl
dEtleSA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1N0cmVhbVNvY2tldFNTTEVy
cm9yRG9tYWluIDsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1N0cmVhbVNPQ0tTRXJy
b3JEb21haW4gOwojIDU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNUaHJlYWQuaCIgMSAzCgoK
CgoKCgpAY2xhc3MgTlNBcnJheSwgTlNNdXRhYmxlRGljdGlvbmFyeSwgTlNEYXRlOwoKQGludGVy
ZmFjZSBOU1RocmVhZCA6IE5TT2JqZWN0IHsKQHByaXZhdGUKICAgIGlkIF9wcml2YXRlOwogICAg
dWludDhfdCBfYnl0ZXNbNDRdOwp9CgorIChOU1RocmVhZCAqKWN1cnJlbnRUaHJlYWQ7CgorICh2
b2lkKWRldGFjaE5ld1RocmVhZFNlbGVjdG9yOihTRUwpc2VsZWN0b3IgdG9UYXJnZXQ6KGlkKXRh
cmdldCB3aXRoT2JqZWN0OihpZClhcmd1bWVudDsKCisgKEJPT0wpaXNNdWx0aVRocmVhZGVkOwoK
LSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKXRocmVhZERpY3Rpb25hcnk7CgorICh2b2lkKXNsZWVw
VW50aWxEYXRlOihOU0RhdGUgKilkYXRlOworICh2b2lkKXNsZWVwRm9yVGltZUludGVydmFsOihO
U1RpbWVJbnRlcnZhbCl0aTsKCisgKHZvaWQpZXhpdDsKCisgKGRvdWJsZSl0aHJlYWRQcmlvcml0
eSA7CisgKEJPT0wpc2V0VGhyZWFkUHJpb3JpdHk6KGRvdWJsZSlwIDsKCgoKLSAoZG91YmxlKXRo
cmVhZFByaW9yaXR5IDsKLSAodm9pZClzZXRUaHJlYWRQcmlvcml0eTooZG91YmxlKXAgOwoKKyAo
TlNBcnJheSAqKWNhbGxTdGFja1JldHVybkFkZHJlc3NlczsKKyAoTlNBcnJheSAqKWNhbGxTdGFj
a1N5bWJvbHMgOwoKLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW47Ci0gKE5TU3RyaW5nICop
bmFtZTsKCi0gKE5TVUludGVnZXIpc3RhY2tTaXplOwotICh2b2lkKXNldFN0YWNrU2l6ZTooTlNV
SW50ZWdlcilzOwoKLSAoQk9PTClpc01haW5UaHJlYWQ7CisgKEJPT0wpaXNNYWluVGhyZWFkOwor
IChOU1RocmVhZCAqKW1haW5UaHJlYWQ7CgotIChpZClpbml0OwotIChpZClpbml0V2l0aFRhcmdl
dDooaWQpdGFyZ2V0IHNlbGVjdG9yOihTRUwpc2VsZWN0b3Igb2JqZWN0OihpZClhcmd1bWVudDsK
Ci0gKEJPT0wpaXNFeGVjdXRpbmc7Ci0gKEJPT0wpaXNGaW5pc2hlZDsKCi0gKEJPT0wpaXNDYW5j
ZWxsZWQ7Ci0gKHZvaWQpY2FuY2VsOwoKLSAodm9pZClzdGFydDsKCi0gKHZvaWQpbWFpbjsKCgoK
QGVuZAoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TV2lsbEJlY29tZU11bHRpVGhyZWFk
ZWROb3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0RpZEJlY29tZVNp
bmdsZVRocmVhZGVkTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNU
aHJlYWRXaWxsRXhpdE5vdGlmaWNhdGlvbjsKCkBpbnRlcmZhY2UgTlNPYmplY3QgKE5TVGhyZWFk
UGVyZm9ybUFkZGl0aW9ucykKCgotICh2b2lkKXBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDoo
U0VMKWFTZWxlY3RvciB3aXRoT2JqZWN0OihpZClhcmcgd2FpdFVudGlsRG9uZTooQk9PTCl3YWl0
IG1vZGVzOihOU0FycmF5ICopYXJyYXk7Ci0gKHZvaWQpcGVyZm9ybVNlbGVjdG9yT25NYWluVGhy
ZWFkOihTRUwpYVNlbGVjdG9yIHdpdGhPYmplY3Q6KGlkKWFyZyB3YWl0VW50aWxEb25lOihCT09M
KXdhaXQ7CgoKCgotICh2b2lkKXBlcmZvcm1TZWxlY3RvcjooU0VMKWFTZWxlY3RvciBvblRocmVh
ZDooTlNUaHJlYWQgKil0aHIgd2l0aE9iamVjdDooaWQpYXJnIHdhaXRVbnRpbERvbmU6KEJPT0wp
d2FpdCBtb2RlczooTlNBcnJheSAqKWFycmF5OwotICh2b2lkKXBlcmZvcm1TZWxlY3RvcjooU0VM
KWFTZWxlY3RvciBvblRocmVhZDooTlNUaHJlYWQgKil0aHIgd2l0aE9iamVjdDooaWQpYXJnIHdh
aXRVbnRpbERvbmU6KEJPT0wpd2FpdDsKCi0gKHZvaWQpcGVyZm9ybVNlbGVjdG9ySW5CYWNrZ3Jv
dW5kOihTRUwpYVNlbGVjdG9yIHdpdGhPYmplY3Q6KGlkKWFyZzsKCgpAZW5kCiMgNTYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRh
dGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL05TVGltZVpvbmUuaCIgMSAzCgoKCgoKCgpAY2xhc3MgTlNTdHJpbmcs
IE5TQXJyYXksIE5TRGljdGlvbmFyeSwgTlNEYXRlLCBOU0RhdGEsIE5TTG9jYWxlOwoKQGludGVy
ZmFjZSBOU1RpbWVab25lIDogTlNPYmplY3QgPE5TQ29weWluZywgTlNDb2Rpbmc+CgotIChOU1N0
cmluZyAqKW5hbWU7Ci0gKE5TRGF0YSAqKWRhdGE7CgotIChOU0ludGVnZXIpc2Vjb25kc0Zyb21H
TVRGb3JEYXRlOihOU0RhdGUgKilhRGF0ZTsKLSAoTlNTdHJpbmcgKilhYmJyZXZpYXRpb25Gb3JE
YXRlOihOU0RhdGUgKilhRGF0ZTsKLSAoQk9PTClpc0RheWxpZ2h0U2F2aW5nVGltZUZvckRhdGU6
KE5TRGF0ZSAqKWFEYXRlOwotIChOU1RpbWVJbnRlcnZhbClkYXlsaWdodFNhdmluZ1RpbWVPZmZz
ZXRGb3JEYXRlOihOU0RhdGUgKilhRGF0ZSA7Ci0gKE5TRGF0ZSAqKW5leHREYXlsaWdodFNhdmlu
Z1RpbWVUcmFuc2l0aW9uQWZ0ZXJEYXRlOihOU0RhdGUgKilhRGF0ZSA7CgpAZW5kCgpAaW50ZXJm
YWNlIE5TVGltZVpvbmUgKE5TRXh0ZW5kZWRUaW1lWm9uZSkKCisgKE5TVGltZVpvbmUgKilzeXN0
ZW1UaW1lWm9uZTsKKyAodm9pZClyZXNldFN5c3RlbVRpbWVab25lOwoKKyAoTlNUaW1lWm9uZSAq
KWRlZmF1bHRUaW1lWm9uZTsKKyAodm9pZClzZXREZWZhdWx0VGltZVpvbmU6KE5TVGltZVpvbmUg
KilhVGltZVpvbmU7CgorIChOU1RpbWVab25lICopbG9jYWxUaW1lWm9uZTsKCisgKE5TQXJyYXkg
Kilrbm93blRpbWVab25lTmFtZXM7CgorIChOU0RpY3Rpb25hcnkgKilhYmJyZXZpYXRpb25EaWN0
aW9uYXJ5OworICh2b2lkKXNldEFiYnJldmlhdGlvbkRpY3Rpb25hcnk6KE5TRGljdGlvbmFyeSAq
KWRpY3QgOwoKKyAoTlNTdHJpbmcgKil0aW1lWm9uZURhdGFWZXJzaW9uIDsKCi0gKE5TSW50ZWdl
cilzZWNvbmRzRnJvbUdNVDsKLSAoTlNTdHJpbmcgKilhYmJyZXZpYXRpb247Ci0gKEJPT0wpaXNE
YXlsaWdodFNhdmluZ1RpbWU7Ci0gKE5TVGltZUludGVydmFsKWRheWxpZ2h0U2F2aW5nVGltZU9m
ZnNldCA7Ci0gKE5TRGF0ZSAqKW5leHREYXlsaWdodFNhdmluZ1RpbWVUcmFuc2l0aW9uIDsKCi0g
KE5TU3RyaW5nICopZGVzY3JpcHRpb247CgotIChCT09MKWlzRXF1YWxUb1RpbWVab25lOihOU1Rp
bWVab25lICopYVRpbWVab25lOwoKZW51bSB7CiBOU1RpbWVab25lTmFtZVN0eWxlU3RhbmRhcmQs
CiBOU1RpbWVab25lTmFtZVN0eWxlU2hvcnRTdGFuZGFyZCwKIE5TVGltZVpvbmVOYW1lU3R5bGVE
YXlsaWdodFNhdmluZywKIE5TVGltZVpvbmVOYW1lU3R5bGVTaG9ydERheWxpZ2h0U2F2aW5nLAog
TlNUaW1lWm9uZU5hbWVTdHlsZUdlbmVyaWMsCiBOU1RpbWVab25lTmFtZVN0eWxlU2hvcnRHZW5l
cmljCn07CnR5cGVkZWYgTlNJbnRlZ2VyIE5TVGltZVpvbmVOYW1lU3R5bGU7CgotIChOU1N0cmlu
ZyAqKWxvY2FsaXplZE5hbWU6KE5TVGltZVpvbmVOYW1lU3R5bGUpc3R5bGUgbG9jYWxlOihOU0xv
Y2FsZSAqKWxvY2FsZSA7CgpAZW5kCgpAaW50ZXJmYWNlIE5TVGltZVpvbmUgKE5TVGltZVpvbmVD
cmVhdGlvbikKCgoKCisgKGlkKXRpbWVab25lV2l0aE5hbWU6KE5TU3RyaW5nICopdHpOYW1lOwor
IChpZCl0aW1lWm9uZVdpdGhOYW1lOihOU1N0cmluZyAqKXR6TmFtZSBkYXRhOihOU0RhdGEgKilh
RGF0YTsKCi0gKGlkKWluaXRXaXRoTmFtZTooTlNTdHJpbmcgKil0ek5hbWU7Ci0gKGlkKWluaXRX
aXRoTmFtZTooTlNTdHJpbmcgKil0ek5hbWUgZGF0YTooTlNEYXRhICopYURhdGE7CgoKCgorIChp
ZCl0aW1lWm9uZUZvclNlY29uZHNGcm9tR01UOihOU0ludGVnZXIpc2Vjb25kczsKCisgKGlkKXRp
bWVab25lV2l0aEFiYnJldmlhdGlvbjooTlNTdHJpbmcgKilhYmJyZXZpYXRpb247CgpAZW5kCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNTeXN0ZW1UaW1lWm9uZURpZENoYW5nZU5vdGlm
aWNhdGlvbiA7CiMgNTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTC5oIiAxIDMKCgoKCgoK
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9OU1VSTEhhbmRsZS5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9G
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMSGFuZGxlLmgiIDMKQGNsYXNzIE5TVVJM
SGFuZGxlLCBOU011dGFibGVBcnJheSwgTlNNdXRhYmxlRGF0YSwgTlNEYXRhLCBOU1VSTDsKCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICpOU0hUVFBQcm9wZXJ0eVN0YXR1c0NvZGVLZXkgX19hdHRyaWJ1
dGVfXygoZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0hUVFBQcm9wZXJ0eVN0
YXR1c1JlYXNvbktleSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKk5TSFRUUFByb3BlcnR5U2VydmVySFRUUFZlcnNpb25LZXkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0hUVFBQcm9wZXJ0eVJlZGlyZWN0
aW9uSGVhZGVyc0tleSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKk5TSFRUUFByb3BlcnR5RXJyb3JQYWdlRGF0YUtleSBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0hUVFBQcm9wZXJ0eUhUVFBQcm94eSBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxIYW5kbGUuaCIgMwpleHRlcm4g
IkMiIE5TU3RyaW5nICpOU0ZUUFByb3BlcnR5VXNlckxvZ2luS2V5IF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGVFBQcm9wZXJ0eVVzZXJQYXNzd29y
ZEtleSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5T
RlRQUHJvcGVydHlBY3RpdmVUcmFuc2Zlck1vZGVLZXkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0ZUUFByb3BlcnR5RmlsZU9mZnNldEtleSBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0ZU
UFByb3BlcnR5RlRQUHJveHkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCgoKZW51bSB7
CiAgICBOU1VSTEhhbmRsZU5vdExvYWRlZCA9IDAsCiAgICBOU1VSTEhhbmRsZUxvYWRTdWNjZWVk
ZWQsCiAgICBOU1VSTEhhbmRsZUxvYWRJblByb2dyZXNzLAogICAgTlNVUkxIYW5kbGVMb2FkRmFp
bGVkCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1VSTEhhbmRsZVN0YXR1czsKCkBwcm90b2NvbCBO
U1VSTEhhbmRsZUNsaWVudAotICh2b2lkKVVSTEhhbmRsZTooTlNVUkxIYW5kbGUgKilzZW5kZXIg
cmVzb3VyY2VEYXRhRGlkQmVjb21lQXZhaWxhYmxlOihOU0RhdGEgKiluZXdCeXRlcyBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKHZvaWQpVVJMSGFuZGxlUmVzb3VyY2VEaWRCZWdpbkxv
YWRpbmc6KE5TVVJMSGFuZGxlICopc2VuZGVyIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsK
LSAodm9pZClVUkxIYW5kbGVSZXNvdXJjZURpZEZpbmlzaExvYWRpbmc6KE5TVVJMSGFuZGxlICop
c2VuZGVyIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZClVUkxIYW5kbGVSZXNv
dXJjZURpZENhbmNlbExvYWRpbmc6KE5TVVJMSGFuZGxlICopc2VuZGVyIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKLSAodm9pZClVUkxIYW5kbGU6KE5TVVJMSGFuZGxlICopc2VuZGVyIHJl
c291cmNlRGlkRmFpbExvYWRpbmdXaXRoUmVhc29uOihOU1N0cmluZyAqKXJlYXNvbiBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CkBlbmQKCkBpbnRlcmZhY2UgTlNVUkxIYW5kbGU6TlNPYmpl
Y3QKewogICAgTlNNdXRhYmxlQXJyYXkgKl9jbGllbnRzOwogICAgaWQgX2RhdGE7CiAgICBOU1VS
TEhhbmRsZVN0YXR1cyBfc3RhdHVzOwogICAgTlNJbnRlZ2VyIF9yZXNlcnZlZDsKfQoKKyAodm9p
ZClyZWdpc3RlclVSTEhhbmRsZUNsYXNzOihDbGFzcylhblVSTEhhbmRsZVN1YmNsYXNzIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKKyAoQ2xhc3MpVVJMSGFuZGxlQ2xhc3NGb3JVUkw6KE5T
VVJMICopYW5VUkwgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKLSAoTlNVUkxIYW5kbGVT
dGF0dXMpc3RhdHVzIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoTlNTdHJpbmcgKilm
YWlsdXJlUmVhc29uIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCi0gKHZvaWQpYWRkQ2xp
ZW50OihpZCA8TlNVUkxIYW5kbGVDbGllbnQ+KWNsaWVudCBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7Ci0gKHZvaWQpcmVtb3ZlQ2xpZW50OihpZCA8TlNVUkxIYW5kbGVDbGllbnQ+KWNsaWVu
dCBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgotICh2b2lkKWxvYWRJbkJhY2tncm91bmQg
X19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotICh2b2lkKWNhbmNlbExvYWRJbkJhY2tncm91
bmQgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKLSAoTlNEYXRhICopcmVzb3VyY2VEYXRh
IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoTlNEYXRhICopYXZhaWxhYmxlUmVzb3Vy
Y2VEYXRhIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgotIChsb25nIGxvbmcpIGV4cGVj
dGVkUmVzb3VyY2VEYXRhU2l6ZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKLSAodm9p
ZClmbHVzaENhY2hlZERhdGEgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCi0gKHZvaWQp
YmFja2dyb3VuZExvYWREaWRGYWlsV2l0aFJlYXNvbjooTlNTdHJpbmcgKilyZWFzb24gX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotICh2b2lkKWRpZExvYWRCeXRlczooTlNEYXRhICopbmV3
Qnl0ZXMgbG9hZENvbXBsZXRlOihCT09MKXlvcm4gX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
OwoKCisgKEJPT0wpY2FuSW5pdFdpdGhVUkw6KE5TVVJMICopYW5VUkwgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOworIChOU1VSTEhhbmRsZSAqKWNhY2hlZEhhbmRsZUZvclVSTDooTlNVUkwg
KilhblVSTCBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gaW5pdFdpdGhVUkw6KE5TVVJM
ICopYW5VUkwgY2FjaGVkOihCT09MKXdpbGxDYWNoZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7CgotIChpZClwcm9wZXJ0eUZvcktleTooTlNTdHJpbmcgKilwcm9wZXJ0eUtleSBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKGlkKXByb3BlcnR5Rm9yS2V5SWZBdmFpbGFibGU6KE5T
U3RyaW5nICopcHJvcGVydHlLZXkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChCT09M
KXdyaXRlUHJvcGVydHk6KGlkKXByb3BlcnR5VmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKXByb3Bl
cnR5S2V5IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoQk9PTCl3cml0ZURhdGE6KE5T
RGF0YSAqKWRhdGEgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKLSAoTlNEYXRhICopbG9h
ZEluRm9yZWdyb3VuZCBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKHZvaWQpYmVnaW5M
b2FkSW5CYWNrZ3JvdW5kIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZCllbmRM
b2FkSW5CYWNrZ3JvdW5kIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCkBlbmQKIyA5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05T
VVJMLmgiIDIgMwoKCgplbnVtIHsKICAgIE5TVVJMQm9va21hcmtDcmVhdGlvblByZWZlckZpbGVJ
RFJlc29sdXRpb24gPSAoIDFVTCA8PCA4ICksCiAgICBOU1VSTEJvb2ttYXJrQ3JlYXRpb25NaW5p
bWFsQm9va21hcmsgPSAoIDFVTCA8PCA5ICksCiAgICBOU1VSTEJvb2ttYXJrQ3JlYXRpb25TdWl0
YWJsZUZvckJvb2ttYXJrRmlsZSA9ICggMVVMIDw8IDEwICksCn07CgplbnVtIHsKICAgIE5TVVJM
Qm9va21hcmtSZXNvbHV0aW9uV2l0aG91dFVJID0gKCAxVUwgPDwgOCApLAogICAgTlNVUkxCb29r
bWFya1Jlc29sdXRpb25XaXRob3V0TW91bnRpbmcgPSAoIDFVTCA8PCA5ICksCn07CgoKdHlwZWRl
ZiBOU1VJbnRlZ2VyIE5TVVJMQm9va21hcmtDcmVhdGlvbk9wdGlvbnM7CnR5cGVkZWYgTlNVSW50
ZWdlciBOU1VSTEJvb2ttYXJrUmVzb2x1dGlvbk9wdGlvbnM7CnR5cGVkZWYgTlNVSW50ZWdlciBO
U1VSTEJvb2ttYXJrRmlsZUNyZWF0aW9uT3B0aW9uczsKCkBjbGFzcyBOU051bWJlciwgTlNEYXRh
LCBOU0RpY3Rpb25hcnk7CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNVUkxGaWxlU2NoZW1lOwoK
CgoKQGludGVyZmFjZSBOU1VSTDogTlNPYmplY3QgPE5TQ29kaW5nLCBOU0NvcHlpbmcsIE5TVVJM
SGFuZGxlQ2xpZW50PgoKewogICAgTlNTdHJpbmcgKl91cmxTdHJpbmc7CiAgICBOU1VSTCAqX2Jh
c2VVUkw7CiAgICB2b2lkICpfY2xpZW50czsKICAgIHZvaWQgKl9yZXNlcnZlZDsKfQoKCi0gKGlk
KWluaXRXaXRoU2NoZW1lOihOU1N0cmluZyAqKXNjaGVtZSBob3N0OihOU1N0cmluZyAqKWhvc3Qg
cGF0aDooTlNTdHJpbmcgKilwYXRoOwoKLSAoaWQpaW5pdEZpbGVVUkxXaXRoUGF0aDooTlNTdHJp
bmcgKilwYXRoIGlzRGlyZWN0b3J5OihCT09MKWlzRGlyIDsKLSAoaWQpaW5pdEZpbGVVUkxXaXRo
UGF0aDooTlNTdHJpbmcgKilwYXRoOwoKKyAoaWQpZmlsZVVSTFdpdGhQYXRoOihOU1N0cmluZyAq
KXBhdGggaXNEaXJlY3Rvcnk6KEJPT0wpIGlzRGlyIDsKKyAoaWQpZmlsZVVSTFdpdGhQYXRoOihO
U1N0cmluZyAqKXBhdGg7CgoKLSBpbml0V2l0aFN0cmluZzooTlNTdHJpbmcgKilVUkxTdHJpbmc7
Ci0gaW5pdFdpdGhTdHJpbmc6KE5TU3RyaW5nICopVVJMU3RyaW5nIHJlbGF0aXZlVG9VUkw6KE5T
VVJMICopYmFzZVVSTDsKKyAoaWQpVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKilVUkxTdHJpbmc7
CisgKGlkKVVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopVVJMU3RyaW5nIHJlbGF0aXZlVG9VUkw6
KE5TVVJMICopYmFzZVVSTDsKCi0gKE5TU3RyaW5nICopYWJzb2x1dGVTdHJpbmc7Ci0gKE5TU3Ry
aW5nICopcmVsYXRpdmVTdHJpbmc7Ci0gKE5TVVJMICopYmFzZVVSTDsKLSAoTlNVUkwgKilhYnNv
bHV0ZVVSTDsKCgotIChOU1N0cmluZyAqKXNjaGVtZTsKLSAoTlNTdHJpbmcgKilyZXNvdXJjZVNw
ZWNpZmllcjsKCgotIChOU1N0cmluZyAqKWhvc3Q7Ci0gKE5TTnVtYmVyICopcG9ydDsKLSAoTlNT
dHJpbmcgKil1c2VyOwotIChOU1N0cmluZyAqKXBhc3N3b3JkOwotIChOU1N0cmluZyAqKXBhdGg7
Ci0gKE5TU3RyaW5nICopZnJhZ21lbnQ7Ci0gKE5TU3RyaW5nICopcGFyYW1ldGVyU3RyaW5nOwot
IChOU1N0cmluZyAqKXF1ZXJ5OwotIChOU1N0cmluZyAqKXJlbGF0aXZlUGF0aDsKCi0gKEJPT0wp
aXNGaWxlVVJMOwoKLSAoTlNVUkwgKilzdGFuZGFyZGl6ZWRVUkw7CgoKCgoKCgotIChCT09MKWdl
dFJlc291cmNlVmFsdWU6KGlkICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleSBlcnJvcjoo
TlNFcnJvciAqKillcnJvciA7CgoKCgotIChOU0RpY3Rpb25hcnkgKilyZXNvdXJjZVZhbHVlc0Zv
cktleXM6KE5TQXJyYXkgKilrZXlzIGVycm9yOihOU0Vycm9yICoqKWVycm9yIDsKCgoKCi0gKEJP
T0wpc2V0UmVzb3VyY2VWYWx1ZTooaWQpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleSBlcnJv
cjooTlNFcnJvciAqKillcnJvciA7Ci0gKEJPT0wpc2V0UmVzb3VyY2VWYWx1ZXM6KE5TRGljdGlv
bmFyeSAqKWtleWVkVmFsdWVzIGVycm9yOihOU0Vycm9yICoqKWVycm9yIDsKCgoKCi0gKEJPT0wp
Y2hlY2tSZXNvdXJjZUlzUmVhY2hhYmxlQW5kUmV0dXJuRXJyb3I6KE5TRXJyb3IgKiopZXJyb3Ig
OwoKCgoKCgoKLSAoQk9PTClpc0ZpbGVSZWZlcmVuY2VVUkwgOwoKCgotIChOU1VSTCAqKWZpbGVS
ZWZlcmVuY2VVUkwgOwoKCgotIChOU1VSTCAqKWZpbGVQYXRoVVJMIDsKCgoKCgotIChOU0RhdGEg
Kilib29rbWFya0RhdGFXaXRoT3B0aW9uczooTlNVUkxCb29rbWFya0NyZWF0aW9uT3B0aW9ucylv
cHRpb25zIGluY2x1ZGluZ1Jlc291cmNlVmFsdWVzRm9yS2V5czooTlNBcnJheSAqKWtleXMgcmVs
YXRpdmVUb1VSTDooTlNVUkwgKilyZWxhdGl2ZVVSTCBlcnJvcjooTlNFcnJvciAqKillcnJvciA7
CgoKLSAoaWQpaW5pdEJ5UmVzb2x2aW5nQm9va21hcmtEYXRhOihOU0RhdGEgKilib29rbWFya0Rh
dGEgb3B0aW9uczooTlNVUkxCb29rbWFya1Jlc29sdXRpb25PcHRpb25zKW9wdGlvbnMgcmVsYXRp
dmVUb1VSTDooTlNVUkwgKilyZWxhdGl2ZVVSTCBib29rbWFya0RhdGFJc1N0YWxlOihCT09MICop
aXNTdGFsZSBlcnJvcjooTlNFcnJvciAqKillcnJvciA7CisgKGlkKVVSTEJ5UmVzb2x2aW5nQm9v
a21hcmtEYXRhOihOU0RhdGEgKilib29rbWFya0RhdGEgb3B0aW9uczooTlNVUkxCb29rbWFya1Jl
c29sdXRpb25PcHRpb25zKW9wdGlvbnMgcmVsYXRpdmVUb1VSTDooTlNVUkwgKilyZWxhdGl2ZVVS
TCBib29rbWFya0RhdGFJc1N0YWxlOihCT09MICopaXNTdGFsZSBlcnJvcjooTlNFcnJvciAqKill
cnJvciA7CgoKKyAoTlNEaWN0aW9uYXJ5ICopcmVzb3VyY2VWYWx1ZXNGb3JLZXlzOihOU0FycmF5
ICopa2V5cyBmcm9tQm9va21hcmtEYXRhOihOU0RhdGEgKilib29rbWFya0RhdGEgOwoKCgorIChC
T09MKXdyaXRlQm9va21hcmtEYXRhOihOU0RhdGEgKikgYm9va21hcmtEYXRhIHRvVVJMOihOU1VS
TCAqKWJvb2ttYXJrRmlsZVVSTCBvcHRpb25zOihOU1VSTEJvb2ttYXJrRmlsZUNyZWF0aW9uT3B0
aW9ucylvcHRpb25zIGVycm9yOihOU0Vycm9yICoqKWVycm9yOwoKCgorIChOU0RhdGEgKilib29r
bWFya0RhdGFXaXRoQ29udGVudHNPZlVSTDooTlNVUkwgKilib29rbWFya0ZpbGVVUkwgZXJyb3I6
KE5TRXJyb3IgKiopZXJyb3I7CgpAZW5kCgpAaW50ZXJmYWNlIE5TU3RyaW5nIChOU1VSTFV0aWxp
dGllcykKCgotIChOU1N0cmluZyAqKXN0cmluZ0J5QWRkaW5nUGVyY2VudEVzY2FwZXNVc2luZ0Vu
Y29kaW5nOihOU1N0cmluZ0VuY29kaW5nKWVuYyA7CgoKLSAoTlNTdHJpbmcgKilzdHJpbmdCeVJl
cGxhY2luZ1BlcmNlbnRFc2NhcGVzVXNpbmdFbmNvZGluZzooTlNTdHJpbmdFbmNvZGluZyllbmMg
OwoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TT2JqZWN0KE5TVVJMQ2xpZW50KQotICh2b2lkKVVSTDoo
TlNVUkwgKilzZW5kZXIgcmVzb3VyY2VEYXRhRGlkQmVjb21lQXZhaWxhYmxlOihOU0RhdGEgKilu
ZXdCeXRlcyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKHZvaWQpVVJMUmVzb3VyY2VE
aWRGaW5pc2hMb2FkaW5nOihOU1VSTCAqKXNlbmRlciBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7Ci0gKHZvaWQpVVJMUmVzb3VyY2VEaWRDYW5jZWxMb2FkaW5nOihOU1VSTCAqKXNlbmRlciBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKHZvaWQpVVJMOihOU1VSTCAqKXNlbmRlciBy
ZXNvdXJjZURpZEZhaWxMb2FkaW5nV2l0aFJlYXNvbjooTlNTdHJpbmcgKilyZWFzb24gX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpAZW5kCgoKQGludGVyZmFjZSBOU1VSTCAoTlNVUkxMb2Fk
aW5nKQotIChOU0RhdGEgKilyZXNvdXJjZURhdGFVc2luZ0NhY2hlOihCT09MKXNob3VsZFVzZUNh
Y2hlIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZClsb2FkUmVzb3VyY2VEYXRh
Tm90aWZ5aW5nQ2xpZW50OihpZCljbGllbnQgdXNpbmdDYWNoZTooQk9PTClzaG91bGRVc2VDYWNo
ZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKGlkKXByb3BlcnR5Rm9yS2V5OihOU1N0
cmluZyAqKXByb3BlcnR5S2V5IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgotIChCT09M
KXNldFJlc291cmNlRGF0YTooTlNEYXRhICopZGF0YSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7Ci0gKEJPT0wpc2V0UHJvcGVydHk6KGlkKXByb3BlcnR5IGZvcktleTooTlNTdHJpbmcgKilw
cm9wZXJ0eUtleSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgotIChOU1VSTEhhbmRsZSAq
KVVSTEhhbmRsZVVzaW5nQ2FjaGU6KEJPT0wpc2hvdWxkVXNlQ2FjaGUgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwoKQGVuZAoKCkBpbnRlcmZhY2UgTlNVUkwgKE5TVVJMUGF0aFV0aWxpdGll
cykKCgoKKyAoTlNVUkwgKilmaWxlVVJMV2l0aFBhdGhDb21wb25lbnRzOihOU0FycmF5ICopY29t
cG9uZW50cyA7Ci0gKE5TQXJyYXkgKilwYXRoQ29tcG9uZW50cyA7Ci0gKE5TU3RyaW5nICopbGFz
dFBhdGhDb21wb25lbnQgOwotIChOU1N0cmluZyAqKXBhdGhFeHRlbnNpb24gOwotIChOU1VSTCAq
KVVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDooTlNTdHJpbmcgKilwYXRoQ29tcG9uZW50IDsK
LSAoTlNVUkwgKilVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnQgOwotIChOU1VSTCAqKVVS
TEJ5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjooTlNTdHJpbmcgKilwYXRoRXh0ZW5zaW9uIDsKLSAo
TlNVUkwgKilVUkxCeURlbGV0aW5nUGF0aEV4dGVuc2lvbiA7CgoKCi0gKE5TVVJMICopVVJMQnlT
dGFuZGFyZGl6aW5nUGF0aCA7Ci0gKE5TVVJMICopVVJMQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0
aCA7CgpAZW5kCiMgMjA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL05TVVJMLmgiIDMKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5T
VVJMTmFtZUtleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTExvY2FsaXplZE5h
bWVLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNVUkxJc1JlZ3VsYXJGaWxlS2V5
IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMSXNEaXJlY3RvcnlLZXkgOwpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNVUkxJc1N5bWJvbGljTGlua0tleSA7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTElzVm9sdW1lS2V5IDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IE5TVVJMSXNQYWNrYWdlS2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0
IE5TVVJMSXNTeXN0ZW1JbW11dGFibGVLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
TlNVUkxJc1VzZXJJbW11dGFibGVLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNV
UkxJc0hpZGRlbktleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTEhhc0hpZGRl
bkV4dGVuc2lvbktleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTENyZWF0aW9u
RGF0ZUtleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTENvbnRlbnRBY2Nlc3NE
YXRlS2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMQ29udGVudE1vZGlmaWNh
dGlvbkRhdGVLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNVUkxBdHRyaWJ1dGVN
b2RpZmljYXRpb25EYXRlS2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMTGlu
a0NvdW50S2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMUGFyZW50RGlyZWN0
b3J5VVJMS2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMVm9sdW1lVVJMS2V5
IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMVHlwZUlkZW50aWZpZXJLZXkgOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNVUkxMb2NhbGl6ZWRUeXBlRGVzY3JpcHRpb25L
ZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNVUkxMYWJlbE51bWJlcktleSA7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTExhYmVsQ29sb3JLZXkgOwpleHRlcm4gIkMi
IE5TU3RyaW5nICogY29uc3QgTlNVUkxMb2NhbGl6ZWRMYWJlbEtleSA7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBOU1VSTEVmZmVjdGl2ZUljb25LZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICogY29uc3QgTlNVUkxDdXN0b21JY29uS2V5IDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNv
bnN0IE5TVVJMRmlsZVNpemVLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNVUkxG
aWxlQWxsb2NhdGVkU2l6ZUtleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTElz
QWxpYXNGaWxlS2V5IDsKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNVUkxWb2x1
bWVMb2NhbGl6ZWRGb3JtYXREZXNjcmlwdGlvbktleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBj
b25zdCBOU1VSTFZvbHVtZVRvdGFsQ2FwYWNpdHlLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICog
Y29uc3QgTlNVUkxWb2x1bWVBdmFpbGFibGVDYXBhY2l0eUtleSA7CmV4dGVybiAiQyIgTlNTdHJp
bmcgKiBjb25zdCBOU1VSTFZvbHVtZVJlc291cmNlQ291bnRLZXkgOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICogY29uc3QgTlNVUkxWb2x1bWVTdXBwb3J0c1BlcnNpc3RlbnRJRHNLZXkgOwpleHRlcm4g
IkMiIE5TU3RyaW5nICogY29uc3QgTlNVUkxWb2x1bWVTdXBwb3J0c1N5bWJvbGljTGlua3NLZXkg
OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNVUkxWb2x1bWVTdXBwb3J0c0hhcmRMaW5r
c0tleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTFZvbHVtZVN1cHBvcnRzSm91
cm5hbGluZ0tleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTFZvbHVtZUlzSm91
cm5hbGluZ0tleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTFZvbHVtZVN1cHBv
cnRzU3BhcnNlRmlsZXNLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNVUkxWb2x1
bWVTdXBwb3J0c1plcm9SdW5zS2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVVJM
Vm9sdW1lU3VwcG9ydHNDYXNlU2Vuc2l0aXZlTmFtZXNLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICogY29uc3QgTlNVUkxWb2x1bWVTdXBwb3J0c0Nhc2VQcmVzZXJ2ZWROYW1lc0tleSA7CiMgNTkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
Rm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVXNlckRlZmF1bHRzLmgiIDEgMwoKCgoKCgpAY2xhc3Mg
TlNBcnJheSwgTlNEYXRhLCBOU0RpY3Rpb25hcnksIE5TTXV0YWJsZURpY3Rpb25hcnksIE5TU3Ry
aW5nLCBOU1VSTDsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0dsb2JhbERvbWFpbjsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TQXJndW1lbnREb21haW47CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU1JlZ2lzdHJhdGlvbkRvbWFpbjsKCkBpbnRlcmZhY2UgTlNVc2Vy
RGVmYXVsdHMgOiBOU09iamVjdCB7CkBwcml2YXRlCiAgICBpZCBfcHJpdmF0ZTsKICAgIHZvaWQg
Kl9yZXNlcnZlZFs0XTsKfQoKKyAoTlNVc2VyRGVmYXVsdHMgKilzdGFuZGFyZFVzZXJEZWZhdWx0
czsKKyAodm9pZClyZXNldFN0YW5kYXJkVXNlckRlZmF1bHRzOwoKLSAoaWQpaW5pdDsKLSAoaWQp
aW5pdFdpdGhVc2VyOihOU1N0cmluZyAqKXVzZXJuYW1lOwoKLSAoaWQpb2JqZWN0Rm9yS2V5OihO
U1N0cmluZyAqKWRlZmF1bHROYW1lOwotICh2b2lkKXNldE9iamVjdDooaWQpdmFsdWUgZm9yS2V5
OihOU1N0cmluZyAqKWRlZmF1bHROYW1lOwotICh2b2lkKXJlbW92ZU9iamVjdEZvcktleTooTlNT
dHJpbmcgKilkZWZhdWx0TmFtZTsKCi0gKE5TU3RyaW5nICopc3RyaW5nRm9yS2V5OihOU1N0cmlu
ZyAqKWRlZmF1bHROYW1lOwotIChOU0FycmF5ICopYXJyYXlGb3JLZXk6KE5TU3RyaW5nICopZGVm
YXVsdE5hbWU7Ci0gKE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnlGb3JLZXk6KE5TU3RyaW5nICop
ZGVmYXVsdE5hbWU7Ci0gKE5TRGF0YSAqKWRhdGFGb3JLZXk6KE5TU3RyaW5nICopZGVmYXVsdE5h
bWU7Ci0gKE5TQXJyYXkgKilzdHJpbmdBcnJheUZvcktleTooTlNTdHJpbmcgKilkZWZhdWx0TmFt
ZTsKLSAoTlNJbnRlZ2VyKWludGVnZXJGb3JLZXk6KE5TU3RyaW5nICopZGVmYXVsdE5hbWU7Ci0g
KGZsb2F0KWZsb2F0Rm9yS2V5OihOU1N0cmluZyAqKWRlZmF1bHROYW1lOwotIChkb3VibGUpZG91
YmxlRm9yS2V5OihOU1N0cmluZyAqKWRlZmF1bHROYW1lOwotIChCT09MKWJvb2xGb3JLZXk6KE5T
U3RyaW5nICopZGVmYXVsdE5hbWU7Ci0gKE5TVVJMICopVVJMRm9yS2V5OihOU1N0cmluZyAqKWRl
ZmF1bHROYW1lIDsKCi0gKHZvaWQpc2V0SW50ZWdlcjooTlNJbnRlZ2VyKXZhbHVlIGZvcktleToo
TlNTdHJpbmcgKilkZWZhdWx0TmFtZTsKLSAodm9pZClzZXRGbG9hdDooZmxvYXQpdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWRlZmF1bHROYW1lOwotICh2b2lkKXNldERvdWJsZTooZG91YmxlKXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilkZWZhdWx0TmFtZTsKLSAodm9pZClzZXRCb29sOihCT09M
KXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilkZWZhdWx0TmFtZTsKLSAodm9pZClzZXRVUkw6KE5T
VVJMICopdXJsIGZvcktleTooTlNTdHJpbmcgKilkZWZhdWx0TmFtZSA7CgotICh2b2lkKXJlZ2lz
dGVyRGVmYXVsdHM6KE5TRGljdGlvbmFyeSAqKXJlZ2lzdHJhdGlvbkRpY3Rpb25hcnk7CgotICh2
b2lkKWFkZFN1aXRlTmFtZWQ6KE5TU3RyaW5nICopc3VpdGVOYW1lOwotICh2b2lkKXJlbW92ZVN1
aXRlTmFtZWQ6KE5TU3RyaW5nICopc3VpdGVOYW1lOwoKLSAoTlNEaWN0aW9uYXJ5ICopZGljdGlv
bmFyeVJlcHJlc2VudGF0aW9uOwoKLSAoTlNBcnJheSAqKXZvbGF0aWxlRG9tYWluTmFtZXM7Ci0g
KE5TRGljdGlvbmFyeSAqKXZvbGF0aWxlRG9tYWluRm9yTmFtZTooTlNTdHJpbmcgKilkb21haW5O
YW1lOwotICh2b2lkKXNldFZvbGF0aWxlRG9tYWluOihOU0RpY3Rpb25hcnkgKilkb21haW4gZm9y
TmFtZTooTlNTdHJpbmcgKilkb21haW5OYW1lOwotICh2b2lkKXJlbW92ZVZvbGF0aWxlRG9tYWlu
Rm9yTmFtZTooTlNTdHJpbmcgKilkb21haW5OYW1lOwoKLSAoTlNBcnJheSAqKXBlcnNpc3RlbnRE
b21haW5OYW1lczsKLSAoTlNEaWN0aW9uYXJ5ICopcGVyc2lzdGVudERvbWFpbkZvck5hbWU6KE5T
U3RyaW5nICopZG9tYWluTmFtZTsKLSAodm9pZClzZXRQZXJzaXN0ZW50RG9tYWluOihOU0RpY3Rp
b25hcnkgKilkb21haW4gZm9yTmFtZTooTlNTdHJpbmcgKilkb21haW5OYW1lOwotICh2b2lkKXJl
bW92ZVBlcnNpc3RlbnREb21haW5Gb3JOYW1lOihOU1N0cmluZyAqKWRvbWFpbk5hbWU7CgotIChC
T09MKXN5bmNocm9uaXplOwoKCi0gKEJPT0wpb2JqZWN0SXNGb3JjZWRGb3JLZXk6KE5TU3RyaW5n
ICopa2V5OwotIChCT09MKW9iamVjdElzRm9yY2VkRm9yS2V5OihOU1N0cmluZyAqKWtleSBpbkRv
bWFpbjooTlNTdHJpbmcgKilkb21haW47CgoKCkBlbmQKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBj
b25zdCBOU1VzZXJEZWZhdWx0c0RpZENoYW5nZU5vdGlmaWNhdGlvbjsKCgoKCmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU1dlZWtEYXlOYW1lQXJyYXkgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNTaG9ydFdlZWtEYXlOYW1lQXJy
YXkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29u
c3QgTlNNb250aE5hbWVBcnJheSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKiBjb25zdCBOU1Nob3J0TW9udGhOYW1lQXJyYXkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNUaW1lRm9ybWF0U3Ry
aW5nIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNv
bnN0IE5TRGF0ZUZvcm1hdFN0cmluZyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1RpbWVEYXRlRm9ybWF0U3RyaW5nIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TU2hvcnRUaW1l
RGF0ZUZvcm1hdFN0cmluZyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU0N1cnJlbmN5U3ltYm9sIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TRGVjaW1hbFNlcGFyYXRvciBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1Ro
b3VzYW5kc1NlcGFyYXRvciBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU0RlY2ltYWxEaWdpdHMgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNBTVBNRGVzaWduYXRpb24gX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNIb3Vy
TmFtZURlc2lnbmF0aW9ucyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU1llYXJNb250aFdlZWtEZXNpZ25hdGlvbnMgX19hdHRyaWJ1dGVf
XygoZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNFYXJsaWVyVGlt
ZURlc2lnbmF0aW9ucyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBOU0xhdGVyVGltZURlc2lnbmF0aW9ucyBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1RoaXNEYXlEZXNpZ25hdGlv
bnMgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29u
c3QgTlNOZXh0RGF5RGVzaWduYXRpb25zIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TTmV4dE5leHREYXlEZXNpZ25hdGlvbnMgX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNQcmlv
ckRheURlc2lnbmF0aW9ucyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU0RhdGVUaW1lT3JkZXJpbmcgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNJbnRlcm5hdGlvbmFsQ3VycmVu
Y3lTdHJpbmcgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICogY29uc3QgTlNTaG9ydERhdGVGb3JtYXRTdHJpbmcgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNQb3NpdGl2ZUN1cnJlbmN5Rm9ybWF0
U3RyaW5nIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
IGNvbnN0IE5TTmVnYXRpdmVDdXJyZW5jeUZvcm1hdFN0cmluZyBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CiMgNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb25FcnJvcnMu
aCIgMSAzCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvRm91bmRhdGlvbkVycm9ycy5oIiAzCmVudW0gewoKICAgIE5TRmlsZU5vU3Vj
aEZpbGVFcnJvciA9IDQsCiAgICBOU0ZpbGVMb2NraW5nRXJyb3IgPSAyNTUsCiAgICBOU0ZpbGVS
ZWFkVW5rbm93bkVycm9yID0gMjU2LAogICAgTlNGaWxlUmVhZE5vUGVybWlzc2lvbkVycm9yID0g
MjU3LAogICAgTlNGaWxlUmVhZEludmFsaWRGaWxlTmFtZUVycm9yID0gMjU4LAogICAgTlNGaWxl
UmVhZENvcnJ1cHRGaWxlRXJyb3IgPSAyNTksCiAgICBOU0ZpbGVSZWFkTm9TdWNoRmlsZUVycm9y
ID0gMjYwLAogICAgTlNGaWxlUmVhZEluYXBwbGljYWJsZVN0cmluZ0VuY29kaW5nRXJyb3IgPSAy
NjEsCiAgICBOU0ZpbGVSZWFkVW5zdXBwb3J0ZWRTY2hlbWVFcnJvciA9IDI2MiwKCiAgICBOU0Zp
bGVSZWFkVG9vTGFyZ2VFcnJvciA9IDI2MywKICAgIE5TRmlsZVJlYWRVbmtub3duU3RyaW5nRW5j
b2RpbmdFcnJvciA9IDI2NCwKCiAgICBOU0ZpbGVXcml0ZVVua25vd25FcnJvciA9IDUxMiwKICAg
IE5TRmlsZVdyaXRlTm9QZXJtaXNzaW9uRXJyb3IgPSA1MTMsCiAgICBOU0ZpbGVXcml0ZUludmFs
aWRGaWxlTmFtZUVycm9yID0gNTE0LAogICAgTlNGaWxlV3JpdGVJbmFwcGxpY2FibGVTdHJpbmdF
bmNvZGluZ0Vycm9yID0gNTE3LAogICAgTlNGaWxlV3JpdGVVbnN1cHBvcnRlZFNjaGVtZUVycm9y
ID0gNTE4LAogICAgTlNGaWxlV3JpdGVPdXRPZlNwYWNlRXJyb3IgPSA2NDAsCgogICAgTlNGaWxl
V3JpdGVWb2x1bWVSZWFkT25seUVycm9yID0gNjQyLAoKCgogICAgTlNLZXlWYWx1ZVZhbGlkYXRp
b25FcnJvciA9IDEwMjQsCiAgICBOU0Zvcm1hdHRpbmdFcnJvciA9IDIwNDgsCiAgICBOU1VzZXJD
YW5jZWxsZWRFcnJvciA9IDMwNzIsCgoKCiAgICBOU0V4ZWN1dGFibGVOb3RMb2FkYWJsZUVycm9y
ID0gMzU4NCwKICAgIE5TRXhlY3V0YWJsZUFyY2hpdGVjdHVyZU1pc21hdGNoRXJyb3IgPSAzNTg1
LAogICAgTlNFeGVjdXRhYmxlUnVudGltZU1pc21hdGNoRXJyb3IgPSAzNTg2LAogICAgTlNFeGVj
dXRhYmxlTG9hZEVycm9yID0gMzU4NywKICAgIE5TRXhlY3V0YWJsZUxpbmtFcnJvciA9IDM1ODgs
CgoKCiAgICBOU0ZpbGVFcnJvck1pbmltdW0gPSAwLAogICAgTlNGaWxlRXJyb3JNYXhpbXVtID0g
MTAyMywKCiAgICBOU1ZhbGlkYXRpb25FcnJvck1pbmltdW0gPSAxMDI0LAogICAgTlNWYWxpZGF0
aW9uRXJyb3JNYXhpbXVtID0gMjA0NywKCgogICAgTlNFeGVjdXRhYmxlRXJyb3JNaW5pbXVtID0g
MzU4NCwKICAgIE5TRXhlY3V0YWJsZUVycm9yTWF4aW11bSA9IDM4MzksCgoKICAgIE5TRm9ybWF0
dGluZ0Vycm9yTWluaW11bSA9IDIwNDgsCiAgICBOU0Zvcm1hdHRpbmdFcnJvck1heGltdW0gPSAy
NTU5LAoKCiAgICBOU1Byb3BlcnR5TGlzdFJlYWRDb3JydXB0RXJyb3IgPSAzODQwLAogICAgTlNQ
cm9wZXJ0eUxpc3RSZWFkVW5rbm93blZlcnNpb25FcnJvciA9IDM4NDEsCiAgICBOU1Byb3BlcnR5
TGlzdFJlYWRTdHJlYW1FcnJvciA9IDM4NDIsCiAgICBOU1Byb3BlcnR5TGlzdFdyaXRlU3RyZWFt
RXJyb3IgPSAzODUxLAoKICAgIE5TUHJvcGVydHlMaXN0RXJyb3JNaW5pbXVtID0gMzg0MCwKICAg
IE5TUHJvcGVydHlMaXN0RXJyb3JNYXhpbXVtID0gNDA5NQoKCn07CiMgNjQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5o
IiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL05TT3BlcmF0aW9uLmgiIDEgMwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNPcGVyYXRpb24uaCIgMwpAY2xh
c3MgTlNBcnJheSwgTlNTZXQ7CgpAaW50ZXJmYWNlIE5TT3BlcmF0aW9uIDogTlNPYmplY3QgewpA
cHJpdmF0ZQogICAgaWQgX3ByaXZhdGU7CiAgICB2b2lkICpfcmVzZXJ2ZWQ7Cn0KCi0gKGlkKWlu
aXQ7CgotICh2b2lkKXN0YXJ0OwotICh2b2lkKW1haW47CgotIChCT09MKWlzQ2FuY2VsbGVkOwot
ICh2b2lkKWNhbmNlbDsKCi0gKEJPT0wpaXNFeGVjdXRpbmc7Ci0gKEJPT0wpaXNGaW5pc2hlZDsK
Ci0gKEJPT0wpaXNDb25jdXJyZW50OwoKLSAoQk9PTClpc1JlYWR5OwoKLSAodm9pZClhZGREZXBl
bmRlbmN5OihOU09wZXJhdGlvbiAqKW9wOwotICh2b2lkKXJlbW92ZURlcGVuZGVuY3k6KE5TT3Bl
cmF0aW9uICopb3A7CgotIChOU0FycmF5ICopZGVwZW5kZW5jaWVzOwoKZW51bSB7CiBOU09wZXJh
dGlvblF1ZXVlUHJpb3JpdHlWZXJ5TG93ID0gLTgsCiBOU09wZXJhdGlvblF1ZXVlUHJpb3JpdHlM
b3cgPSAtNCwKIE5TT3BlcmF0aW9uUXVldWVQcmlvcml0eU5vcm1hbCA9IDAsCiBOU09wZXJhdGlv
blF1ZXVlUHJpb3JpdHlIaWdoID0gNCwKIE5TT3BlcmF0aW9uUXVldWVQcmlvcml0eVZlcnlIaWdo
ID0gOAp9Owp0eXBlZGVmIE5TSW50ZWdlciBOU09wZXJhdGlvblF1ZXVlUHJpb3JpdHk7CgotIChO
U09wZXJhdGlvblF1ZXVlUHJpb3JpdHkpcXVldWVQcmlvcml0eTsKLSAodm9pZClzZXRRdWV1ZVBy
aW9yaXR5OihOU09wZXJhdGlvblF1ZXVlUHJpb3JpdHkpcDsKCgotICh2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uQmxvY2sgOwotICh2b2lkKXNldENvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9p
ZCkpYmxvY2sgOwoKCi0gKHZvaWQpd2FpdFVudGlsRmluaXNoZWQgOwoKLSAoZG91YmxlKXRocmVh
ZFByaW9yaXR5IDsKLSAodm9pZClzZXRUaHJlYWRQcmlvcml0eTooZG91YmxlKXAgOwoKQGVuZAoK
CgoKCkBpbnRlcmZhY2UgTlNCbG9ja09wZXJhdGlvbiA6IE5TT3BlcmF0aW9uIHsKQHByaXZhdGUK
ICAgIGlkIF9wcml2YXRlMjsKICAgIHZvaWQgKl9yZXNlcnZlZDI7Cn0KCisgKGlkKWJsb2NrT3Bl
cmF0aW9uV2l0aEJsb2NrOih2b2lkICheKSh2b2lkKSlibG9jayA7CgotICh2b2lkKWFkZEV4ZWN1
dGlvbkJsb2NrOih2b2lkICheKSh2b2lkKSlibG9jayA7Ci0gKE5TQXJyYXkgKilleGVjdXRpb25C
bG9ja3MgOwoKQGVuZAoKCgoKCkBpbnRlcmZhY2UgTlNJbnZvY2F0aW9uT3BlcmF0aW9uIDogTlNP
cGVyYXRpb24gewpAcHJpdmF0ZQogICAgaWQgX2ludjsKICAgIGlkIF9leGNlcHRpb247CiAgICB2
b2lkICpfcmVzZXJ2ZWQyOwp9CgotIChpZClpbml0V2l0aFRhcmdldDooaWQpdGFyZ2V0IHNlbGVj
dG9yOihTRUwpc2VsIG9iamVjdDooaWQpYXJnOwotIChpZClpbml0V2l0aEludm9jYXRpb246KE5T
SW52b2NhdGlvbiAqKWludjsKCi0gKE5TSW52b2NhdGlvbiAqKWludm9jYXRpb247CgotIChpZCly
ZXN1bHQ7CgpAZW5kCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNJbnZvY2F0aW9uT3Bl
cmF0aW9uVm9pZFJlc3VsdEV4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5T
SW52b2NhdGlvbk9wZXJhdGlvbkNhbmNlbGxlZEV4Y2VwdGlvbjsKCgpAaW50ZXJmYWNlIE5TT3Bl
cmF0aW9uUXVldWUgOiBOU09iamVjdCB7CkBwcml2YXRlCiAgICBpZCBfcHJpdmF0ZTsKICAgIHZv
aWQgKl9yZXNlcnZlZDsKfQoKLSAodm9pZClhZGRPcGVyYXRpb246KE5TT3BlcmF0aW9uICopb3A7
Ci0gKHZvaWQpYWRkT3BlcmF0aW9uczooTlNBcnJheSAqKW9wcyB3YWl0VW50aWxGaW5pc2hlZDoo
Qk9PTCl3YWl0IDsKCgotICh2b2lkKWFkZE9wZXJhdGlvbldpdGhCbG9jazoodm9pZCAoXikodm9p
ZCkpYmxvY2sgOwoKCi0gKE5TQXJyYXkgKilvcGVyYXRpb25zOwotIChOU1VJbnRlZ2VyKW9wZXJh
dGlvbkNvdW50IDsKCi0gKE5TSW50ZWdlciltYXhDb25jdXJyZW50T3BlcmF0aW9uQ291bnQ7Ci0g
KHZvaWQpc2V0TWF4Q29uY3VycmVudE9wZXJhdGlvbkNvdW50OihOU0ludGVnZXIpY250OwoKZW51
bSB7CiAgICBOU09wZXJhdGlvblF1ZXVlRGVmYXVsdE1heENvbmN1cnJlbnRPcGVyYXRpb25Db3Vu
dCA9IC0xCn07CgotICh2b2lkKXNldFN1c3BlbmRlZDooQk9PTCliOwotIChCT09MKWlzU3VzcGVu
ZGVkOwoKLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW4gOwotIChOU1N0cmluZyAqKW5hbWUg
OwoKLSAodm9pZCljYW5jZWxBbGxPcGVyYXRpb25zOwoKLSAodm9pZCl3YWl0VW50aWxBbGxPcGVy
YXRpb25zQXJlRmluaXNoZWQ7CgorIChpZCljdXJyZW50UXVldWUgOworIChpZCltYWluUXVldWUg
OwoKQGVuZAojIDY4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TSFRUUENvb2tpZS5oIiAx
IDMKIyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9OU0hUVFBDb29raWUuaCIgMwpAY2xhc3MgTlNBcnJheTsKQGNsYXNzIE5TRGF0ZTsK
QGNsYXNzIE5TRGljdGlvbmFyeTsKQGNsYXNzIE5TU3RyaW5nOwpAY2xhc3MgTlNVUkw7CgoKCgoK
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgTlNIVFRQQ29va2llTmFtZTsKCgoKCgpleHRlcm4gTlNT
dHJpbmcgKiBjb25zdCBOU0hUVFBDb29raWVWYWx1ZTsKCgoKCgpleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBOU0hUVFBDb29raWVPcmlnaW5VUkw7CgoKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qg
TlNIVFRQQ29va2llVmVyc2lvbjsKCgoKCgpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBOU0hUVFBD
b29raWVEb21haW47CgoKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgTlNIVFRQQ29va2llUGF0
aDsKCgoKCgpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBOU0hUVFBDb29raWVTZWN1cmU7CgoKCgoK
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgTlNIVFRQQ29va2llRXhwaXJlczsKCgoKCgpleHRlcm4g
TlNTdHJpbmcgKiBjb25zdCBOU0hUVFBDb29raWVDb21tZW50OwoKCgoKCmV4dGVybiBOU1N0cmlu
ZyAqIGNvbnN0IE5TSFRUUENvb2tpZUNvbW1lbnRVUkw7CgoKCgoKZXh0ZXJuIE5TU3RyaW5nICog
Y29uc3QgTlNIVFRQQ29va2llRGlzY2FyZDsKCgoKCgpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBO
U0hUVFBDb29raWVNYXhpbXVtQWdlOwoKCgoKCmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IE5TSFRU
UENvb2tpZVBvcnQ7CgoKQGNsYXNzIE5TSFRUUENvb2tpZUludGVybmFsOwojIDExMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0hUVFBD
b29raWUuaCIgMwpAaW50ZXJmYWNlIE5TSFRUUENvb2tpZSA6IE5TT2JqZWN0CnsKQHByaXZhdGUK
ICAgIE5TSFRUUENvb2tpZUludGVybmFsICogX2Nvb2tpZVByaXZhdGU7Cn0KIyAyNDAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNIVFRQ
Q29va2llLmgiIDMKLSAoaWQpaW5pdFdpdGhQcm9wZXJ0aWVzOihOU0RpY3Rpb25hcnkgKilwcm9w
ZXJ0aWVzOwojIDI1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9OU0hUVFBDb29raWUuaCIgMworIChpZCljb29raWVXaXRoUHJvcGVydGll
czooTlNEaWN0aW9uYXJ5ICopcHJvcGVydGllczsKIyAyNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNIVFRQQ29va2llLmgiIDMKKyAo
TlNEaWN0aW9uYXJ5ICopcmVxdWVzdEhlYWRlckZpZWxkc1dpdGhDb29raWVzOihOU0FycmF5ICop
Y29va2llczsKIyAyNzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvTlNIVFRQQ29va2llLmgiIDMKKyAoTlNBcnJheSAqKWNvb2tpZXNXaXRo
UmVzcG9uc2VIZWFkZXJGaWVsZHM6KE5TRGljdGlvbmFyeSAqKWhlYWRlckZpZWxkcyBmb3JVUkw6
KE5TVVJMICopVVJMOwojIDI5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9OU0hUVFBDb29raWUuaCIgMwotIChOU0RpY3Rpb25hcnkgKilw
cm9wZXJ0aWVzOwojIDI5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9OU0hUVFBDb29raWUuaCIgMwotIChOU1VJbnRlZ2VyKXZlcnNpb247
CgoKCgoKCi0gKE5TU3RyaW5nICopbmFtZTsKCgoKCgoKLSAoTlNTdHJpbmcgKil2YWx1ZTsKIyAz
MjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvTlNIVFRQQ29va2llLmgiIDMKLSAoTlNEYXRlICopZXhwaXJlc0RhdGU7CiMgMzMzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TSFRU
UENvb2tpZS5oIiAzCi0gKEJPT0wpaXNTZXNzaW9uT25seTsKIyAzNDQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNIVFRQQ29va2llLmgi
IDMKLSAoTlNTdHJpbmcgKilkb21haW47CiMgMzU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TSFRUUENvb2tpZS5oIiAzCi0gKE5TU3Ry
aW5nICopcGF0aDsKIyAzNjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvTlNIVFRQQ29va2llLmgiIDMKLSAoQk9PTClpc1NlY3VyZTsKIyAz
ODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvTlNIVFRQQ29va2llLmgiIDMKLSAoQk9PTClpc0hUVFBPbmx5OwojIDM5MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0hUVFBDb29r
aWUuaCIgMwotIChOU1N0cmluZyAqKWNvbW1lbnQ7CiMgNDAzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TSFRUUENvb2tpZS5oIiAzCi0g
KE5TVVJMICopY29tbWVudFVSTDsKIyA0MTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Zv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNIVFRQQ29va2llLmgiIDMKLSAoTlNBcnJheSAq
KXBvcnRMaXN0OwoKQGVuZAojIDc0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0hUVFBDb29raWVT
dG9yYWdlLmgiIDEgMwojIDE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL05TSFRUUENvb2tpZVN0b3JhZ2UuaCIgMwpAY2xhc3MgTlNBcnJh
eTsKQGNsYXNzIE5TSFRUUENvb2tpZTsKQGNsYXNzIE5TVVJMOwojIDI3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TSFRUUENvb2tpZVN0
b3JhZ2UuaCIgMwplbnVtIHsKICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5cywKICAg
IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyLAogICAgTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4KfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TSFRU
UENvb2tpZUFjY2VwdFBvbGljeTsKCgpAY2xhc3MgTlNIVFRQQ29va2llU3RvcmFnZUludGVybmFs
OwojIDQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL05TSFRUUENvb2tpZVN0b3JhZ2UuaCIgMwpAaW50ZXJmYWNlIE5TSFRUUENvb2tpZVN0
b3JhZ2UgOiBOU09iamVjdAp7CiAgICBAcHJpdmF0ZQogICAgTlNIVFRQQ29va2llU3RvcmFnZUlu
dGVybmFsICpfaW50ZXJuYWw7Cn0KCgoKCgoKKyAoTlNIVFRQQ29va2llU3RvcmFnZSAqKXNoYXJl
ZEhUVFBDb29raWVTdG9yYWdlOwoKCgoKCgoKLSAoaWQpaW5pdFdpdGhTdG9yYWdlTG9jYXRpb246
KE5TVVJMKilzdG9yYWdlRmlsZVVSTDsKCgoKCgoKLSAoTlNBcnJheSAqKWNvb2tpZXM7CgoKCgoK
CgotICh2b2lkKXNldENvb2tpZTooTlNIVFRQQ29va2llICopY29va2llOwoKCgoKCi0gKHZvaWQp
ZGVsZXRlQ29va2llOihOU0hUVFBDb29raWUgKiljb29raWU7CiMgOTggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNIVFRQQ29va2llU3Rv
cmFnZS5oIiAzCi0gKE5TQXJyYXkgKiljb29raWVzRm9yVVJMOihOU1VSTCAqKVVSTDsKIyAxMTcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
TlNIVFRQQ29va2llU3RvcmFnZS5oIiAzCi0gKHZvaWQpc2V0Q29va2llczooTlNBcnJheSAqKWNv
b2tpZXMgZm9yVVJMOihOU1VSTCAqKVVSTCBtYWluRG9jdW1lbnRVUkw6KE5TVVJMICopbWFpbkRv
Y3VtZW50VVJMOwoKCgoKCgoKLSAoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KWNvb2tpZUFjY2Vw
dFBvbGljeTsKCgoKCgoKCi0gKHZvaWQpc2V0Q29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0UG9saWN5OwoKQGVuZAoKCgoKCgoKZXh0ZXJuIE5T
U3RyaW5nICogY29uc3QgTlNIVFRQQ29va2llTWFuYWdlckFjY2VwdFBvbGljeUNoYW5nZWROb3Rp
ZmljYXRpb247CgoKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgTlNIVFRQQ29va2llTWFuYWdl
ckNvb2tpZXNDaGFuZ2VkTm90aWZpY2F0aW9uOwojIDc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9O
U05ldFNlcnZpY2VzLmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TTmV0U2VydmljZXMuaCIgMwpAY2xhc3MgTlNBcnJh
eSwgTlNEYXRhLCBOU0RpY3Rpb25hcnksIE5TSW5wdXRTdHJlYW0sIE5TT3V0cHV0U3RyZWFtLCBO
U1J1bkxvb3AsIE5TU3RyaW5nOwpAcHJvdG9jb2wgTlNOZXRTZXJ2aWNlRGVsZWdhdGUsIE5TTmV0
U2VydmljZUJyb3dzZXJEZWxlZ2F0ZTsKCiAgICAgICAKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBj
b25zdCBOU05ldFNlcnZpY2VzRXJyb3JDb2RlOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
TlNOZXRTZXJ2aWNlc0Vycm9yRG9tYWluOwoKZW51bSB7CgoKCiAgICBOU05ldFNlcnZpY2VzVW5r
bm93bkVycm9yID0gLTcyMDAwLAoKCgogICAgTlNOZXRTZXJ2aWNlc0NvbGxpc2lvbkVycm9yID0g
LTcyMDAxLAoKCgogICAgTlNOZXRTZXJ2aWNlc05vdEZvdW5kRXJyb3IgPSAtNzIwMDIsCgoKCiAg
ICBOU05ldFNlcnZpY2VzQWN0aXZpdHlJblByb2dyZXNzID0gLTcyMDAzLAoKCgogICAgTlNOZXRT
ZXJ2aWNlc0JhZEFyZ3VtZW50RXJyb3IgPSAtNzIwMDQsCgoKCiAgICBOU05ldFNlcnZpY2VzQ2Fu
Y2VsbGVkRXJyb3IgPSAtNzIwMDUsCgoKCiAgICBOU05ldFNlcnZpY2VzSW52YWxpZEVycm9yID0g
LTcyMDA2LAoKCgoKCiAgICBOU05ldFNlcnZpY2VzVGltZW91dEVycm9yID0gLTcyMDA3LAoKCgp9
Owp0eXBlZGVmIE5TSW50ZWdlciBOU05ldFNlcnZpY2VzRXJyb3I7CgoKZW51bSB7CgoKICAgIE5T
TmV0U2VydmljZU5vQXV0b1JlbmFtZSA9IDFVTCA8PCAwCn07CnR5cGVkZWYgTlNVSW50ZWdlciBO
U05ldFNlcnZpY2VPcHRpb25zOwoKCiAgICAgICAKCkBpbnRlcmZhY2UgTlNOZXRTZXJ2aWNlIDog
TlNPYmplY3QgewpAcHJpdmF0ZQogICAgaWQgX25ldFNlcnZpY2U7CiAgICBpZCBfZGVsZWdhdGU7
CiAgICBpZCBfcmVzZXJ2ZWQ7Cn0KCgoKLSAoaWQpaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICop
ZG9tYWluIHR5cGU6KE5TU3RyaW5nICopdHlwZSBuYW1lOihOU1N0cmluZyAqKW5hbWUgcG9ydDoo
aW50KXBvcnQ7CgoKCgoKLSAoaWQpaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIHR5
cGU6KE5TU3RyaW5nICopdHlwZSBuYW1lOihOU1N0cmluZyAqKW5hbWU7CgotIChpZCA8TlNOZXRT
ZXJ2aWNlRGVsZWdhdGU+KWRlbGVnYXRlOwotICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNOZXRT
ZXJ2aWNlRGVsZWdhdGU+KWRlbGVnYXRlOwoKCgotICh2b2lkKXNjaGVkdWxlSW5SdW5Mb29wOihO
U1J1bkxvb3AgKilhUnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7Ci0gKHZvaWQpcmVt
b3ZlRnJvbVJ1bkxvb3A6KE5TUnVuTG9vcCAqKWFSdW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICop
bW9kZTsKCgoKLSAoTlNTdHJpbmcgKilkb21haW47CgoKCi0gKE5TU3RyaW5nICopdHlwZTsKCgoK
LSAoTlNTdHJpbmcgKiluYW1lOwoKCgotIChOU0FycmF5ICopYWRkcmVzc2VzOwoKCgoKLSAoTlNJ
bnRlZ2VyKXBvcnQ7CgoKCgoKCgotICh2b2lkKXB1Ymxpc2g7CgoKCgoKCgotICh2b2lkKXB1Ymxp
c2hXaXRoT3B0aW9uczooTlNOZXRTZXJ2aWNlT3B0aW9ucylvcHRpb25zOwoKCgoKCi0gKHZvaWQp
cmVzb2x2ZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCi0gKHZvaWQpc3RvcDsKCgoK
CgorIChOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5RnJvbVRYVFJlY29yZERhdGE6KE5TRGF0YSAq
KXR4dERhdGE7CgoKCisgKE5TRGF0YSAqKWRhdGFGcm9tVFhUUmVjb3JkRGljdGlvbmFyeTooTlNE
aWN0aW9uYXJ5ICopdHh0RGljdGlvbmFyeTsKCgoKLSAoTlNTdHJpbmcgKilob3N0TmFtZTsKCgoK
LSAodm9pZClyZXNvbHZlV2l0aFRpbWVvdXQ6KE5TVGltZUludGVydmFsKXRpbWVvdXQ7CgoKCi0g
KEJPT0wpZ2V0SW5wdXRTdHJlYW06KE5TSW5wdXRTdHJlYW0gKiopaW5wdXRTdHJlYW0gb3V0cHV0
U3RyZWFtOihOU091dHB1dFN0cmVhbSAqKilvdXRwdXRTdHJlYW07CgoKCi0gKEJPT0wpc2V0VFhU
UmVjb3JkRGF0YTooTlNEYXRhICopcmVjb3JkRGF0YTsKCgoKLSAoTlNEYXRhICopVFhUUmVjb3Jk
RGF0YTsKCgoKLSAodm9pZClzdGFydE1vbml0b3Jpbmc7CgoKCi0gKHZvaWQpc3RvcE1vbml0b3Jp
bmc7CgoKCkBlbmQKCiAgICAgICAKCkBpbnRlcmZhY2UgTlNOZXRTZXJ2aWNlQnJvd3NlciA6IE5T
T2JqZWN0IHsKQHByaXZhdGUKICAgIGlkIF9uZXRTZXJ2aWNlQnJvd3NlcjsKICAgIGlkIF9kZWxl
Z2F0ZTsKICAgIHZvaWQgKiBfcmVzZXJ2ZWQ7Cn0KCi0gKGlkKWluaXQ7CgotIChpZCA8TlNOZXRT
ZXJ2aWNlQnJvd3NlckRlbGVnYXRlPilkZWxlZ2F0ZTsKLSAodm9pZClzZXREZWxlZ2F0ZTooaWQg
PE5TTmV0U2VydmljZUJyb3dzZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7CgoKCi0gKHZvaWQpc2NoZWR1
bGVJblJ1bkxvb3A6KE5TUnVuTG9vcCAqKWFSdW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9k
ZTsKLSAodm9pZClyZW1vdmVGcm9tUnVuTG9vcDooTlNSdW5Mb29wICopYVJ1bkxvb3AgZm9yTW9k
ZTooTlNTdHJpbmcgKiltb2RlOwoKCgoKCi0gKHZvaWQpc2VhcmNoRm9yQnJvd3NhYmxlRG9tYWlu
czsKCgoKCgotICh2b2lkKXNlYXJjaEZvclJlZ2lzdHJhdGlvbkRvbWFpbnM7CgoKCi0gKHZvaWQp
c2VhcmNoRm9yU2VydmljZXNPZlR5cGU6KE5TU3RyaW5nICopdHlwZSBpbkRvbWFpbjooTlNTdHJp
bmcgKilkb21haW5TdHJpbmc7CgoKCi0gKHZvaWQpc3RvcDsKCkBlbmQKCiAgICAgICAKCkBwcm90
b2NvbCBOU05ldFNlcnZpY2VEZWxlZ2F0ZSA8TlNPYmplY3Q+CkBvcHRpb25hbAoKCgotICh2b2lk
KW5ldFNlcnZpY2VXaWxsUHVibGlzaDooTlNOZXRTZXJ2aWNlICopc2VuZGVyOwoKCgoKCi0gKHZv
aWQpbmV0U2VydmljZURpZFB1Ymxpc2g6KE5TTmV0U2VydmljZSAqKXNlbmRlcjsKCgoKCgotICh2
b2lkKW5ldFNlcnZpY2U6KE5TTmV0U2VydmljZSAqKXNlbmRlciBkaWROb3RQdWJsaXNoOihOU0Rp
Y3Rpb25hcnkgKillcnJvckRpY3Q7CgoKCi0gKHZvaWQpbmV0U2VydmljZVdpbGxSZXNvbHZlOihO
U05ldFNlcnZpY2UgKilzZW5kZXI7CgoKCi0gKHZvaWQpbmV0U2VydmljZURpZFJlc29sdmVBZGRy
ZXNzOihOU05ldFNlcnZpY2UgKilzZW5kZXI7CgoKCi0gKHZvaWQpbmV0U2VydmljZTooTlNOZXRT
ZXJ2aWNlICopc2VuZGVyIGRpZE5vdFJlc29sdmU6KE5TRGljdGlvbmFyeSAqKWVycm9yRGljdDsK
CgoKLSAodm9pZCluZXRTZXJ2aWNlRGlkU3RvcDooTlNOZXRTZXJ2aWNlICopc2VuZGVyOwoKCgoK
Ci0gKHZvaWQpbmV0U2VydmljZTooTlNOZXRTZXJ2aWNlICopc2VuZGVyIGRpZFVwZGF0ZVRYVFJl
Y29yZERhdGE6KE5TRGF0YSAqKWRhdGE7CgoKCkBlbmQKCiAgICAgICAKCkBwcm90b2NvbCBOU05l
dFNlcnZpY2VCcm93c2VyRGVsZWdhdGUgPE5TT2JqZWN0PgpAb3B0aW9uYWwKCgoKLSAodm9pZClu
ZXRTZXJ2aWNlQnJvd3NlcldpbGxTZWFyY2g6KE5TTmV0U2VydmljZUJyb3dzZXIgKilhTmV0U2Vy
dmljZUJyb3dzZXI7CgoKCi0gKHZvaWQpbmV0U2VydmljZUJyb3dzZXJEaWRTdG9wU2VhcmNoOihO
U05ldFNlcnZpY2VCcm93c2VyICopYU5ldFNlcnZpY2VCcm93c2VyOwoKCgotICh2b2lkKW5ldFNl
cnZpY2VCcm93c2VyOihOU05ldFNlcnZpY2VCcm93c2VyICopYU5ldFNlcnZpY2VCcm93c2VyIGRp
ZE5vdFNlYXJjaDooTlNEaWN0aW9uYXJ5ICopZXJyb3JEaWN0OwoKCgotICh2b2lkKW5ldFNlcnZp
Y2VCcm93c2VyOihOU05ldFNlcnZpY2VCcm93c2VyICopYU5ldFNlcnZpY2VCcm93c2VyIGRpZEZp
bmREb21haW46KE5TU3RyaW5nICopZG9tYWluU3RyaW5nIG1vcmVDb21pbmc6KEJPT0wpbW9yZUNv
bWluZzsKCgoKLSAodm9pZCluZXRTZXJ2aWNlQnJvd3NlcjooTlNOZXRTZXJ2aWNlQnJvd3NlciAq
KWFOZXRTZXJ2aWNlQnJvd3NlciBkaWRGaW5kU2VydmljZTooTlNOZXRTZXJ2aWNlICopYU5ldFNl
cnZpY2UgbW9yZUNvbWluZzooQk9PTCltb3JlQ29taW5nOwoKCgotICh2b2lkKW5ldFNlcnZpY2VC
cm93c2VyOihOU05ldFNlcnZpY2VCcm93c2VyICopYU5ldFNlcnZpY2VCcm93c2VyIGRpZFJlbW92
ZURvbWFpbjooTlNTdHJpbmcgKilkb21haW5TdHJpbmcgbW9yZUNvbWluZzooQk9PTCltb3JlQ29t
aW5nOwoKCgotICh2b2lkKW5ldFNlcnZpY2VCcm93c2VyOihOU05ldFNlcnZpY2VCcm93c2VyICop
YU5ldFNlcnZpY2VCcm93c2VyIGRpZFJlbW92ZVNlcnZpY2U6KE5TTmV0U2VydmljZSAqKWFOZXRT
ZXJ2aWNlIG1vcmVDb21pbmc6KEJPT0wpbW9yZUNvbWluZzsKCkBlbmQKCiAgICAgICAKICAgICAg
IAoKCgoKCgpAaW50ZXJmYWNlIE5TTmV0U2VydmljZSAoTlNEZXByZWNhdGVkKQoKCgoKCi0gKE5T
U3RyaW5nICopcHJvdG9jb2xTcGVjaWZpY0luZm9ybWF0aW9uIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKCgoKCgotICh2b2lkKXNldFByb3RvY29sU3BlY2lmaWNJbmZvcm1hdGlvbjooTlNT
dHJpbmcgKilzcGVjaWZpY0luZm9ybWF0aW9uIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsK
CkBlbmQKCkBpbnRlcmZhY2UgTlNOZXRTZXJ2aWNlQnJvd3NlciAoTlNEZXByZWNhdGVkKQoKCgoK
Ci0gKHZvaWQpc2VhcmNoRm9yQWxsRG9tYWlucyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CgpAZW5kCiMgNzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIiAzCkBjbGFz
cyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwpAY2xhc3MgTlNVUkxDcmVkZW50aWFsOwpA
Y2xhc3MgTlNVUkxQcm90ZWN0aW9uU3BhY2U7CkBjbGFzcyBOU1VSTFJlc3BvbnNlOwpAY2xhc3Mg
TlNFcnJvcjsKIyAyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiIDMKQHByb3RvY29s
IE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgPE5TT2JqZWN0PgoKCgoKLSAodm9p
ZCl1c2VDcmVkZW50aWFsOihOU1VSTENyZWRlbnRpYWwgKiljcmVkZW50aWFsIGZvckF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdl
OwoKCgoKLSAodm9pZCljb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2U7CgoKCgot
ICh2b2lkKWNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICopY2hhbGxlbmdlOwoKQGVuZAoKQGNsYXNzIE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VJbnRlcm5hbDsKIyA1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiIDMK
QGludGVyZmFjZSBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogTlNPYmplY3QKewpAcHJp
dmF0ZQogICAgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUludGVybmFsICpfaW50ZXJuYWw7
Cn0KIyA3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiIDMKLSAoaWQpaW5pdFdpdGhQ
cm90ZWN0aW9uU3BhY2U6KE5TVVJMUHJvdGVjdGlvblNwYWNlICopc3BhY2UgcHJvcG9zZWRDcmVk
ZW50aWFsOihOU1VSTENyZWRlbnRpYWwgKiljcmVkZW50aWFsIHByZXZpb3VzRmFpbHVyZUNvdW50
OihOU0ludGVnZXIpcHJldmlvdXNGYWlsdXJlQ291bnQgZmFpbHVyZVJlc3BvbnNlOihOU1VSTFJl
c3BvbnNlICopcmVzcG9uc2UgZXJyb3I6KE5TRXJyb3IgKillcnJvciBzZW5kZXI6KGlkPE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+KXNlbmRlcjsKIyA4MyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgiIDMKLSAoaWQpaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBzZW5kZXI6KGlkPE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+KXNlbmRlcjsKCgoKCgoKLSAoTlNVUkxQ
cm90ZWN0aW9uU3BhY2UgKilwcm90ZWN0aW9uU3BhY2U7CiMgMTA0ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaCIgMwotIChOU1VSTENyZWRlbnRpYWwgKilwcm9wb3NlZENyZWRlbnRpYWw7
CgoKCgoKCi0gKE5TSW50ZWdlcilwcmV2aW91c0ZhaWx1cmVDb3VudDsKIyAxMjIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oIiAzCi0gKE5TVVJMUmVzcG9uc2UgKilmYWlsdXJlUmVzcG9u
c2U7CiMgMTMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIgMwotIChOU0Vycm9yICop
ZXJyb3I7CgoKCgoKCgotIChpZDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPilz
ZW5kZXI7CgpAZW5kCiMgNzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMQ2FjaGUuaCIgMSAz
CiMgMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvTlNVUkxDYWNoZS5oIiAzCmVudW0KewogICAgTlNVUkxDYWNoZVN0b3JhZ2VBbGxvd2Vk
LAogICAgTlNVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkSW5NZW1vcnlPbmx5LAogICAgTlNVUkxDYWNo
ZVN0b3JhZ2VOb3RBbGxvd2VkLAp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNVUkxDYWNoZVN0b3Jh
Z2VQb2xpY3k7CgoKQGNsYXNzIE5TQ2FjaGVkVVJMUmVzcG9uc2VJbnRlcm5hbDsKQGNsYXNzIE5T
RGF0YTsKQGNsYXNzIE5TRGljdGlvbmFyeTsKQGNsYXNzIE5TVVJMUmVxdWVzdDsKQGNsYXNzIE5T
VVJMUmVzcG9uc2U7CiMgNTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDYWNoZS5oIiAzCkBpbnRlcmZhY2UgTlNDYWNoZWRVUkxS
ZXNwb25zZSA6IE5TT2JqZWN0IDxOU0NvZGluZywgTlNDb3B5aW5nPgp7CiAgICBAcHJpdmF0ZQog
ICAgTlNDYWNoZWRVUkxSZXNwb25zZUludGVybmFsICpfaW50ZXJuYWw7Cn0KIyA3MyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTENh
Y2hlLmgiIDMKLSAoaWQpaW5pdFdpdGhSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNl
IGRhdGE6KE5TRGF0YSAqKWRhdGE7CiMgODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Zv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDYWNoZS5oIiAzCi0gKGlkKWluaXRXaXRo
UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBkYXRhOihOU0RhdGEgKilkYXRhIHVz
ZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbyBzdG9yYWdlUG9saWN5OihOU1VSTENhY2hl
U3RvcmFnZVBvbGljeSlzdG9yYWdlUG9saWN5OwoKCgoKCgotIChOU1VSTFJlc3BvbnNlICopcmVz
cG9uc2U7CgoKCgoKCi0gKE5TRGF0YSAqKWRhdGE7CgoKCgoKCi0gKE5TRGljdGlvbmFyeSAqKXVz
ZXJJbmZvOwoKCgoKCgotIChOU1VSTENhY2hlU3RvcmFnZVBvbGljeSlzdG9yYWdlUG9saWN5OwoK
QGVuZAoKCkBjbGFzcyBOU1VSTFJlcXVlc3Q7CkBjbGFzcyBOU1VSTENhY2hlSW50ZXJuYWw7CgpA
aW50ZXJmYWNlIE5TVVJMQ2FjaGUgOiBOU09iamVjdAp7CiAgICBAcHJpdmF0ZQogICAgTlNVUkxD
YWNoZUludGVybmFsICpfaW50ZXJuYWw7Cn0KIyAxNTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDYWNoZS5oIiAzCisgKE5TVVJM
Q2FjaGUgKilzaGFyZWRVUkxDYWNoZTsKIyAxNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDYWNoZS5oIiAzCisgKHZvaWQpc2V0
U2hhcmVkVVJMQ2FjaGU6KE5TVVJMQ2FjaGUgKiljYWNoZTsKIyAxODAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDYWNoZS5oIiAz
Ci0gKGlkKWluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6KE5TVUludGVnZXIpbWVtb3J5Q2FwYWNpdHkg
ZGlza0NhcGFjaXR5OihOU1VJbnRlZ2VyKWRpc2tDYXBhY2l0eSBkaXNrUGF0aDooTlNTdHJpbmcg
KilwYXRoOwojIDE5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9OU1VSTENhY2hlLmgiIDMKLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKWNh
Y2hlZFJlc3BvbnNlRm9yUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIyAyMDIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNV
UkxDYWNoZS5oIiAzCi0gKHZvaWQpc3RvcmVDYWNoZWRSZXNwb25zZTooTlNDYWNoZWRVUkxSZXNw
b25zZSAqKWNhY2hlZFJlc3BvbnNlIGZvclJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Q7
CiMgMjEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL05TVVJMQ2FjaGUuaCIgMwotICh2b2lkKXJlbW92ZUNhY2hlZFJlc3BvbnNlRm9yUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKCgoKCgoKLSAodm9pZClyZW1vdmVBbGxDYWNo
ZWRSZXNwb25zZXM7CgoKCgoKCi0gKE5TVUludGVnZXIpbWVtb3J5Q2FwYWNpdHk7CgoKCgoKCi0g
KE5TVUludGVnZXIpZGlza0NhcGFjaXR5OwojIDI0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTENhY2hlLmgiIDMKLSAodm9pZClz
ZXRNZW1vcnlDYXBhY2l0eTooTlNVSW50ZWdlciltZW1vcnlDYXBhY2l0eTsKIyAyNTMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxD
YWNoZS5oIiAzCi0gKHZvaWQpc2V0RGlza0NhcGFjaXR5OihOU1VJbnRlZ2VyKWRpc2tDYXBhY2l0
eTsKIyAyNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvTlNVUkxDYWNoZS5oIiAzCi0gKE5TVUludGVnZXIpY3VycmVudE1lbW9yeVVzYWdl
OwojIDI3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9OU1VSTENhY2hlLmgiIDMKLSAoTlNVSW50ZWdlciljdXJyZW50RGlza1VzYWdlOwoK
QGVuZAojIDc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTENvbm5lY3Rpb24uaCIgMSAzCiMg
MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvTlNVUkxDb25uZWN0aW9uLmgiIDMKQGNsYXNzIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CkBjbGFz
cyBOU0RhdGE7CkBjbGFzcyBOU0Vycm9yOwpAY2xhc3MgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTsKQGNsYXNzIE5TVVJMQ29ubmVjdGlvbkludGVybmFsOwpAY2xhc3MgTlNVUkxSZXF1ZXN0
OwpAY2xhc3MgTlNVUkxSZXNwb25zZTsKQGNsYXNzIE5TUnVuTG9vcDsKQGNsYXNzIE5TSW5wdXRT
dHJlYW07CkBjbGFzcyBOU1VSTFByb3RlY3Rpb25TcGFjZTsKIyA0MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTENvbm5lY3Rpb24u
aCIgMwpAaW50ZXJmYWNlIE5TVVJMQ29ubmVjdGlvbiA6IE5TT2JqZWN0CnsKICAgIEBwcml2YXRl
CiAgICBOU1VSTENvbm5lY3Rpb25JbnRlcm5hbCAqX2ludGVybmFsOwp9CiMgNjMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDb25u
ZWN0aW9uLmgiIDMKKyAoQk9PTCljYW5IYW5kbGVSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0OwojIDg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL05TVVJMQ29ubmVjdGlvbi5oIiAzCisgKE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb25XaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWxlZ2F0ZTooaWQpZGVs
ZWdhdGU7CiMgMTA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL05TVVJMQ29ubmVjdGlvbi5oIiAzCi0gKGlkKWluaXRXaXRoUmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWxlZ2F0ZTooaWQpZGVsZWdhdGU7CiMgMTI4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJM
Q29ubmVjdGlvbi5oIiAzCi0gKGlkKWluaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdCBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUgc3RhcnRJbW1lZGlhdGVseTooQk9PTClzdGFydElt
bWVkaWF0ZWx5IDsKCgoKCgotICh2b2lkKXN0YXJ0IDsKIyAxNDQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDb25uZWN0aW9uLmgi
IDMKLSAodm9pZCljYW5jZWw7CiMgMTU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMQ29ubmVjdGlvbi5oIiAzCi0gKHZvaWQpc2No
ZWR1bGVJblJ1bkxvb3A6KE5TUnVuTG9vcCAqKWFSdW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICop
bW9kZSA7Ci0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKilhUnVuTG9v
cCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGUgOwoKQGVuZAojIDIxNyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTENvbm5lY3Rpb24u
aCIgMwpAaW50ZXJmYWNlIE5TT2JqZWN0IChOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSkKIyAyNTUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
TlNVUkxDb25uZWN0aW9uLmgiIDMKLSAoTlNVUkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxD
b25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlOwojIDI3NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9O
U1VSTENvbm5lY3Rpb24uaCIgMwotIChOU0lucHV0U3RyZWFtICopY29ubmVjdGlvbjooTlNVUkxD
b25uZWN0aW9uICopY29ubmVjdGlvbiBuZWVkTmV3Qm9keVN0cmVhbTooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdDsKIyAyOTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvTlNVUkxDb25uZWN0aW9uLmgiIDMKLSAoQk9PTCljb25uZWN0aW9uOihO
U1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2U6KE5TVVJMUHJvdGVjdGlvblNwYWNlICopcHJvdGVjdGlvblNwYWNlOwojIDMwMyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9O
U1VSTENvbm5lY3Rpb24uaCIgMwotICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAq
KWNvbm5lY3Rpb24gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlOwoKCgoKCgoKLSAodm9pZCljb25uZWN0aW9u
OihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlOwojIDMyNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9O
U1VSTENvbm5lY3Rpb24uaCIgMwotIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZTooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbjsKIyAzNDQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDb25uZWN0
aW9uLmgiIDMKLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
IGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlOwojIDM2NCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VS
TENvbm5lY3Rpb24uaCIgMwotICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGE7CiMgMzgzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMQ29ubmVj
dGlvbi5oIiAzCi0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRTZW5kQm9keURhdGE6KE5TSW50ZWdlcilieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0
ZW46KE5TSW50ZWdlcil0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
OihOU0ludGVnZXIpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTsKIyAzOTUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDb25uZWN0
aW9uLmgiIDMKLSAodm9pZCljb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0
aW9uICopY29ubmVjdGlvbjsKIyA0MDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDb25uZWN0aW9uLmgiIDMKLSAodm9pZCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5T
RXJyb3IgKillcnJvcjsKIyA0MjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDb25uZWN0aW9uLmgiIDMKLSAoTlNDYWNoZWRVUkxS
ZXNwb25zZSAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gd2lsbENh
Y2hlUmVzcG9uc2U6KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljYWNoZWRSZXNwb25zZTsKCkBlbmQK
IyA0MzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvTlNVUkxDb25uZWN0aW9uLmgiIDMKQGludGVyZmFjZSBOU1VSTENvbm5lY3Rpb24gKE5T
VVJMQ29ubmVjdGlvblN5bmNocm9ub3VzTG9hZGluZykKIyA0NjUgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDb25uZWN0aW9uLmgi
IDMKKyAoTlNEYXRhICopc2VuZFN5bmNocm9ub3VzUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdCByZXR1cm5pbmdSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKilyZXNwb25zZSBlcnJvcjoo
TlNFcnJvciAqKillcnJvcjsKCkBlbmQKIyA3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxD
cmVkZW50aWFsLmgiIDEgMwojIDE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMQ3JlZGVudGlhbC5oIiAzCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHkuaCIg
MSAzCiMgMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9I
ZWFkZXJzL1NlY3VyaXR5LmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1
cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jc3NtY29uZmlnLmgiIDEgMwojIDI3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jc3NtY29uZmlnLmgi
IDMKI2RlZmluZSBfQ1NTTUNPTkZJR19IXyAxCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvLi4vRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbmRpdGlvbmFsTWFjcm9zLmgiIDEgMwojIDM0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jc3Nt
Y29uZmlnLmgiIDIgMwojIDQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5m
cmFtZXdvcmsvSGVhZGVycy9jc3NtY29uZmlnLmgiIDMKZXh0ZXJuICJDIiB7CgoKCnR5cGVkZWYg
aW50NjRfdCBzaW50NjQ7CiNkZWZpbmUgX1NJTlQ2NCAKCgp0eXBlZGVmIHVpbnQ2NF90IHVpbnQ2
NDsKI2RlZmluZSBfVUlOVDY0IAoKCnR5cGVkZWYgaW50MzJfdCBzaW50MzI7CiNkZWZpbmUgX1NJ
TlQzMiAKCgp0eXBlZGVmIGludDE2X3Qgc2ludDE2OwojZGVmaW5lIF9TSU5UMTYgCgoKdHlwZWRl
ZiBpbnQ4X3Qgc2ludDg7CiNkZWZpbmUgX1NJTlQ4IAoKCnR5cGVkZWYgdWludDMyX3QgdWludDMy
OwojZGVmaW5lIF9VSU5UMzIgCgoKdHlwZWRlZiB1aW50MTZfdCB1aW50MTY7CiNkZWZpbmUgX1VJ
TlQxNiAKCgp0eXBlZGVmIHVpbnQ4X3QgdWludDg7CiNkZWZpbmUgX1VJTlQ4IAoKCnR5cGVkZWYg
aW50cHRyX3QgQ1NTTV9JTlRQVFI7CnR5cGVkZWYgc2l6ZV90IENTU01fU0laRTsKCiNkZWZpbmUg
Q1NTTUFDSSAKI2RlZmluZSBDU1NNQVBJIAojZGVmaW5lIENTU01DTEkgCiNkZWZpbmUgQ1NTTUNT
UEkgCiNkZWZpbmUgQ1NTTURMSSAKI2RlZmluZSBDU1NNS1JJIAojZGVmaW5lIENTU01TUEkgCiNk
ZWZpbmUgQ1NTTVRQSSAKCgp9CiMgMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL2Nzc21hcHBsZS5oIiAxIDMK
IyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRl
cnMvY3NzbWFwcGxlLmgiIDMKI2RlZmluZSBfQ1NTTUFQUExFX0hfIDEKCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvY3NzbWVyci5oIiAx
IDMKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hl
YWRlcnMvY3NzbWVyci5oIiAzCiNkZWZpbmUgX0NTU01FUlJfSF8gMQoKCmV4dGVybiAiQyIgewoj
IDQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVy
cy9jc3NtZXJyLmgiIDMKZW51bSB7CiBDU1NNX0JBU0VfRVJST1IgPSAtMHg3RkZGMDAwMAp9OwoK
ZW51bSB7CiBDU1NNX0VSUk9SQ09ERV9NT0RVTEVfRVhURU5UID0gMHgwMDAwMDgwMCwKIENTU01f
RVJST1JDT0RFX0NVU1RPTV9PRkZTRVQgPSAweDAwMDAwNDAwLAogQ1NTTV9FUlJPUkNPREVfQ09N
TU9OX0VYVEVOVCA9IDB4MTAwCn07CgoKI2RlZmluZSBDU1NNX0VSUkNPREUoQ09ERSkgKCgoQ09E
RSkgLSBDU1NNX0JBU0VfRVJST1IpICYgKENTU01fRVJST1JDT0RFX01PRFVMRV9FWFRFTlQgLSAx
KSkKCgojZGVmaW5lIENTU01fRVJSQkFTRShDT0RFKSAoKCgoQ09ERSkgLSBDU1NNX0JBU0VfRVJS
T1IpICYgfihDU1NNX0VSUk9SQ09ERV9NT0RVTEVfRVhURU5UIC0gMSkpICsgQ1NTTV9CQVNFX0VS
Uk9SKQoKCiNkZWZpbmUgQ1NTTV9FUlJfSVNfQ09OVkVSVElCTEUoQ09ERSkgKENTU01fRVJSQ09E
RShDT0RFKSA8IENTU01fRVJST1JDT0RFX0NPTU1PTl9FWFRFTlQpCgoKI2RlZmluZSBDU1NNX0VS
Ul9UQUcoQ09ERSxCQVNFKSAoQ1NTTV9FUlJDT0RFKENPREUpICsgKEJBU0UpKQoKCgplbnVtIHsK
IENTU01fQ1NTTV9CQVNFX0VSUk9SID0gQ1NTTV9CQVNFX0VSUk9SLAogQ1NTTV9DU1NNX1BSSVZB
VEVfRVJST1IgPSBDU1NNX0JBU0VfRVJST1IgKyBDU1NNX0VSUk9SQ09ERV9DVVNUT01fT0ZGU0VU
LAogQ1NTTV9DU1BfQkFTRV9FUlJPUiA9IENTU01fQ1NTTV9CQVNFX0VSUk9SICsgQ1NTTV9FUlJP
UkNPREVfTU9EVUxFX0VYVEVOVCwKIENTU01fQ1NQX1BSSVZBVEVfRVJST1IgPSBDU1NNX0NTUF9C
QVNFX0VSUk9SICsgQ1NTTV9FUlJPUkNPREVfQ1VTVE9NX09GRlNFVCwKIENTU01fRExfQkFTRV9F
UlJPUiA9IENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VSUk9SQ09ERV9NT0RVTEVfRVhURU5U
LAogQ1NTTV9ETF9QUklWQVRFX0VSUk9SID0gQ1NTTV9ETF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJP
UkNPREVfQ1VTVE9NX09GRlNFVCwKIENTU01fQ0xfQkFTRV9FUlJPUiA9IENTU01fRExfQkFTRV9F
UlJPUiArIENTU01fRVJST1JDT0RFX01PRFVMRV9FWFRFTlQsCiBDU1NNX0NMX1BSSVZBVEVfRVJS
T1IgPSBDU1NNX0NMX0JBU0VfRVJST1IgKyBDU1NNX0VSUk9SQ09ERV9DVVNUT01fT0ZGU0VULAog
Q1NTTV9UUF9CQVNFX0VSUk9SID0gQ1NTTV9DTF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJPUkNPREVf
TU9EVUxFX0VYVEVOVCwKIENTU01fVFBfUFJJVkFURV9FUlJPUiA9IENTU01fVFBfQkFTRV9FUlJP
UiArIENTU01fRVJST1JDT0RFX0NVU1RPTV9PRkZTRVQgLAogQ1NTTV9LUl9CQVNFX0VSUk9SID0g
Q1NTTV9UUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJPUkNPREVfTU9EVUxFX0VYVEVOVCwKIENTU01f
S1JfUFJJVkFURV9FUlJPUiA9IENTU01fS1JfQkFTRV9FUlJPUiArIENTU01fRVJST1JDT0RFX0NV
U1RPTV9PRkZTRVQsCiBDU1NNX0FDX0JBU0VfRVJST1IgPSBDU1NNX0tSX0JBU0VfRVJST1IgKyBD
U1NNX0VSUk9SQ09ERV9NT0RVTEVfRVhURU5ULAogQ1NTTV9BQ19QUklWQVRFX0VSUk9SID0gQ1NT
TV9BQ19CQVNFX0VSUk9SICsgQ1NTTV9FUlJPUkNPREVfQ1VTVE9NX09GRlNFVAp9OwoKCmVudW0g
ewogQ1NTTV9NRFNfQkFTRV9FUlJPUiA9IENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VSUk9S
Q09ERV9NT0RVTEVfRVhURU5ULAogQ1NTTV9NRFNfUFJJVkFURV9FUlJPUiA9IENTU01fTURTX0JB
U0VfRVJST1IgKyBDU1NNX0VSUk9SQ09ERV9DVVNUT01fT0ZGU0VUCn07CgoKZW51bSB7CiBDU1NN
RVJSX0NTU01fSU5WQUxJRF9BRERJTl9IQU5ETEUgPQogIENTU01fQ1NTTV9CQVNFX0VSUk9SICsg
Q1NTTV9FUlJPUkNPREVfQ09NTU9OX0VYVEVOVCArIDEsCiBDU1NNRVJSX0NTU01fTk9UX0lOSVRJ
QUxJWkVEID0KICBDU1NNX0NTU01fQkFTRV9FUlJPUiArIENTU01fRVJST1JDT0RFX0NPTU1PTl9F
WFRFTlQgKyAyLAogQ1NTTUVSUl9DU1NNX0lOVkFMSURfSEFORExFX1VTQUdFID0KICBDU1NNX0NT
U01fQkFTRV9FUlJPUiArIENTU01fRVJST1JDT0RFX0NPTU1PTl9FWFRFTlQgKyAzLAogQ1NTTUVS
Ul9DU1NNX1BWQ19SRUZFUkVOVF9OT1RfRk9VTkQgPQogIENTU01fQ1NTTV9CQVNFX0VSUk9SICsg
Q1NTTV9FUlJPUkNPREVfQ09NTU9OX0VYVEVOVCArIDQsCiBDU1NNRVJSX0NTU01fRlVOQ1RJT05f
SU5URUdSSVRZX0ZBSUwgPQogIENTU01fQ1NTTV9CQVNFX0VSUk9SICsgQ1NTTV9FUlJPUkNPREVf
Q09NTU9OX0VYVEVOVCArIDUKfTsKCgplbnVtIHsKIENTU01fRVJSQ09ERV9JTlRFUk5BTF9FUlJP
UiA9IDB4MDAwMSwKIENTU01fRVJSQ09ERV9NRU1PUllfRVJST1IgPSAweDAwMDIsCiBDU1NNX0VS
UkNPREVfTURTX0VSUk9SID0gMHgwMDAzLAogQ1NTTV9FUlJDT0RFX0lOVkFMSURfUE9JTlRFUiA9
IDB4MDAwNCwKIENTU01fRVJSQ09ERV9JTlZBTElEX0lOUFVUX1BPSU5URVIgPSAweDAwMDUsCiBD
U1NNX0VSUkNPREVfSU5WQUxJRF9PVVRQVVRfUE9JTlRFUiA9IDB4MDAwNiwKIENTU01fRVJSQ09E
RV9GVU5DVElPTl9OT1RfSU1QTEVNRU5URUQgPSAweDAwMDcsCiBDU1NNX0VSUkNPREVfU0VMRl9D
SEVDS19GQUlMRUQgPSAweDAwMDgsCiBDU1NNX0VSUkNPREVfT1NfQUNDRVNTX0RFTklFRCA9IDB4
MDAwOSwKIENTU01fRVJSQ09ERV9GVU5DVElPTl9GQUlMRUQgPSAweDAwMEEsCiBDU1NNX0VSUkNP
REVfTU9EVUxFX01BTklGRVNUX1ZFUklGWV9GQUlMRUQgPSAweDAwMEIsCiBDU1NNX0VSUkNPREVf
SU5WQUxJRF9HVUlEID0gMHgwMDBDCn07CgoKZW51bSB7CiBDU1NNX0VSUkNPREVfT1BFUkFUSU9O
X0FVVEhfREVOSUVEID0gMHgwMDIwLAogQ1NTTV9FUlJDT0RFX09CSkVDVF9VU0VfQVVUSF9ERU5J
RUQgPSAweDAwMjEsCiBDU1NNX0VSUkNPREVfT0JKRUNUX01BTklQX0FVVEhfREVOSUVEID0gMHgw
MDIyLAogQ1NTTV9FUlJDT0RFX09CSkVDVF9BQ0xfTk9UX1NVUFBPUlRFRCA9IDB4MDAyMywKIENT
U01fRVJSQ09ERV9PQkpFQ1RfQUNMX1JFUVVJUkVEID0gMHgwMDI0LAogQ1NTTV9FUlJDT0RFX0lO
VkFMSURfQUNDRVNTX0NSRURFTlRJQUxTID0gMHgwMDI1LAogQ1NTTV9FUlJDT0RFX0lOVkFMSURf
QUNMX0JBU0VfQ0VSVFMgPSAweDAwMjYsCiBDU1NNX0VSUkNPREVfQUNMX0JBU0VfQ0VSVFNfTk9U
X1NVUFBPUlRFRCA9IDB4MDAyNywKIENTU01fRVJSQ09ERV9JTlZBTElEX1NBTVBMRV9WQUxVRSA9
IDB4MDAyOCwKIENTU01fRVJSQ09ERV9TQU1QTEVfVkFMVUVfTk9UX1NVUFBPUlRFRCA9IDB4MDAy
OSwKIENTU01fRVJSQ09ERV9JTlZBTElEX0FDTF9TVUJKRUNUX1ZBTFVFID0gMHgwMDJBLAogQ1NT
TV9FUlJDT0RFX0FDTF9TVUJKRUNUX1RZUEVfTk9UX1NVUFBPUlRFRCA9IDB4MDAyQiwKIENTU01f
RVJSQ09ERV9JTlZBTElEX0FDTF9DSEFMTEVOR0VfQ0FMTEJBQ0sgPSAweDAwMkMsCiBDU1NNX0VS
UkNPREVfQUNMX0NIQUxMRU5HRV9DQUxMQkFDS19GQUlMRUQgPSAweDAwMkQsCiBDU1NNX0VSUkNP
REVfSU5WQUxJRF9BQ0xfRU5UUllfVEFHID0gMHgwMDJFLAogQ1NTTV9FUlJDT0RFX0FDTF9FTlRS
WV9UQUdfTk9UX0ZPVU5EID0gMHgwMDJGLAogQ1NTTV9FUlJDT0RFX0lOVkFMSURfQUNMX0VESVRf
TU9ERSA9IDB4MDAzMCwKIENTU01fRVJSQ09ERV9BQ0xfQ0hBTkdFX0ZBSUxFRCA9IDB4MDAzMSwK
IENTU01fRVJSQ09ERV9JTlZBTElEX05FV19BQ0xfRU5UUlkgPSAweDAwMzIsCiBDU1NNX0VSUkNP
REVfSU5WQUxJRF9ORVdfQUNMX09XTkVSID0gMHgwMDMzLAogQ1NTTV9FUlJDT0RFX0FDTF9ERUxF
VEVfRkFJTEVEID0gMHgwMDM0LAogQ1NTTV9FUlJDT0RFX0FDTF9SRVBMQUNFX0ZBSUxFRCA9IDB4
MDAzNSwKIENTU01fRVJSQ09ERV9BQ0xfQUREX0ZBSUxFRCA9IDB4MDAzNgp9OwoKCmVudW0gewog
Q1NTTV9FUlJDT0RFX0lOVkFMSURfQ09OVEVYVF9IQU5ETEUgPSAweDAwNDAsCiBDU1NNX0VSUkNP
REVfSU5DT01QQVRJQkxFX1ZFUlNJT04gPSAweDAwNDEsCiBDU1NNX0VSUkNPREVfSU5WQUxJRF9D
RVJUR1JPVVBfUE9JTlRFUiA9IDB4MDA0MiwKIENTU01fRVJSQ09ERV9JTlZBTElEX0NFUlRfUE9J
TlRFUiA9IDB4MDA0MywKIENTU01fRVJSQ09ERV9JTlZBTElEX0NSTF9QT0lOVEVSID0gMHgwMDQ0
LAogQ1NTTV9FUlJDT0RFX0lOVkFMSURfRklFTERfUE9JTlRFUiA9IDB4MDA0NSwKIENTU01fRVJS
Q09ERV9JTlZBTElEX0RBVEEgPSAweDAwNDYsCiBDU1NNX0VSUkNPREVfQ1JMX0FMUkVBRFlfU0lH
TkVEID0gMHgwMDQ3LAogQ1NTTV9FUlJDT0RFX0lOVkFMSURfTlVNQkVSX09GX0ZJRUxEUyA9IDB4
MDA0OCwKIENTU01fRVJSQ09ERV9WRVJJRklDQVRJT05fRkFJTFVSRSA9IDB4MDA0OSwKIENTU01f
RVJSQ09ERV9JTlZBTElEX0RCX0hBTkRMRSA9IDB4MDA0QSwKIENTU01fRVJSQ09ERV9QUklWSUxF
R0VfTk9UX0dSQU5URUQgPSAweDAwNEIsCiBDU1NNX0VSUkNPREVfSU5WQUxJRF9EQl9MSVNUID0g
MHgwMDRDLAogQ1NTTV9FUlJDT0RFX0lOVkFMSURfREJfTElTVF9QT0lOVEVSID0gMHgwMDRELAog
Q1NTTV9FUlJDT0RFX1VOS05PV05fRk9STUFUID0gMHgwMDRFLAogQ1NTTV9FUlJDT0RFX1VOS05P
V05fVEFHID0gMHgwMDRGLAogQ1NTTV9FUlJDT0RFX0lOVkFMSURfQ1NQX0hBTkRMRSA9IDB4MDA1
MCwKIENTU01fRVJSQ09ERV9JTlZBTElEX0RMX0hBTkRMRSA9IDB4MDA1MSwKIENTU01fRVJSQ09E
RV9JTlZBTElEX0NMX0hBTkRMRSA9IDB4MDA1MiwKIENTU01fRVJSQ09ERV9JTlZBTElEX1RQX0hB
TkRMRSA9IDB4MDA1MywKIENTU01fRVJSQ09ERV9JTlZBTElEX0tSX0hBTkRMRSA9IDB4MDA1NCwK
IENTU01fRVJSQ09ERV9JTlZBTElEX0FDX0hBTkRMRSA9IDB4MDA1NSwKIENTU01fRVJSQ09ERV9J
TlZBTElEX1BBU1NUSFJPVUdIX0lEID0gMHgwMDU2LAogQ1NTTV9FUlJDT0RFX0lOVkFMSURfTkVU
V09SS19BRERSID0gMHgwMDU3LAogQ1NTTV9FUlJDT0RFX0lOVkFMSURfQ1JZUFRPX0RBVEEgPSAw
eDAwNTgKfTsKCgplbnVtIHsKIENTU01FUlJfQ1NTTV9JTlRFUk5BTF9FUlJPUiA9CiAgQ1NTTV9D
U1NNX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5URVJOQUxfRVJST1IsCiBDU1NNRVJSX0NT
U01fTUVNT1JZX0VSUk9SID0KICBDU1NNX0NTU01fQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9N
RU1PUllfRVJST1IsCiBDU1NNRVJSX0NTU01fTURTX0VSUk9SID0KICBDU1NNX0NTU01fQkFTRV9F
UlJPUiArIENTU01fRVJSQ09ERV9NRFNfRVJST1IsCiBDU1NNRVJSX0NTU01fSU5WQUxJRF9QT0lO
VEVSID0KICBDU1NNX0NTU01fQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlZBTElEX1BPSU5U
RVIsCiBDU1NNRVJSX0NTU01fSU5WQUxJRF9JTlBVVF9QT0lOVEVSID0KICBDU1NNX0NTU01fQkFT
RV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlZBTElEX0lOUFVUX1BPSU5URVIsCiBDU1NNRVJSX0NT
U01fSU5WQUxJRF9PVVRQVVRfUE9JTlRFUiA9CiAgQ1NTTV9DU1NNX0JBU0VfRVJST1IgKyBDU1NN
X0VSUkNPREVfSU5WQUxJRF9PVVRQVVRfUE9JTlRFUiwKIENTU01FUlJfQ1NTTV9GVU5DVElPTl9O
T1RfSU1QTEVNRU5URUQgPQogIENTU01fQ1NTTV9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0ZV
TkNUSU9OX05PVF9JTVBMRU1FTlRFRCwKIENTU01FUlJfQ1NTTV9TRUxGX0NIRUNLX0ZBSUxFRCA9
CiAgQ1NTTV9DU1NNX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfU0VMRl9DSEVDS19GQUlMRUQs
CiBDU1NNRVJSX0NTU01fT1NfQUNDRVNTX0RFTklFRCA9CiAgQ1NTTV9DU1NNX0JBU0VfRVJST1Ig
KyBDU1NNX0VSUkNPREVfT1NfQUNDRVNTX0RFTklFRCwKIENTU01FUlJfQ1NTTV9GVU5DVElPTl9G
QUlMRUQgPQogIENTU01fQ1NTTV9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0ZVTkNUSU9OX0ZB
SUxFRCwKIENTU01FUlJfQ1NTTV9NT0RVTEVfTUFOSUZFU1RfVkVSSUZZX0ZBSUxFRCA9CiAgQ1NT
TV9DU1NNX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfTU9EVUxFX01BTklGRVNUX1ZFUklGWV9G
QUlMRUQsCiBDU1NNRVJSX0NTU01fSU5WQUxJRF9HVUlEID0KICBDU1NNX0NTU01fQkFTRV9FUlJP
UiArIENTU01fRVJSQ09ERV9JTlZBTElEX0dVSUQKfTsKCgplbnVtIHsKIENTU01FUlJfQ1NTTV9J
TlZBTElEX0NPTlRFWFRfSEFORExFID0KICBDU1NNX0NTU01fQkFTRV9FUlJPUiArIENTU01fRVJS
Q09ERV9JTlZBTElEX0NPTlRFWFRfSEFORExFLAogQ1NTTUVSUl9DU1NNX0lOQ09NUEFUSUJMRV9W
RVJTSU9OID0KICBDU1NNX0NTU01fQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTkNPTVBBVElC
TEVfVkVSU0lPTiwKIENTU01FUlJfQ1NTTV9QUklWSUxFR0VfTk9UX0dSQU5URUQgPQogIENTU01f
Q1NTTV9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX1BSSVZJTEVHRV9OT1RfR1JBTlRFRAp9OwoK
CmVudW0gewogQ1NTTV9DU1NNX0JBU0VfQ1NTTV9FUlJPUiA9CiAgQ1NTTV9DU1NNX0JBU0VfRVJS
T1IgKyBDU1NNX0VSUk9SQ09ERV9DT01NT05fRVhURU5UICsgMHgxMCwKIENTU01FUlJfQ1NTTV9T
Q09QRV9OT1RfU1VQUE9SVEVEID0gQ1NTTV9DU1NNX0JBU0VfQ1NTTV9FUlJPUiArIDEsCiBDU1NN
RVJSX0NTU01fUFZDX0FMUkVBRFlfQ09ORklHVVJFRCA9IENTU01fQ1NTTV9CQVNFX0NTU01fRVJS
T1IgKyAyLAogQ1NTTUVSUl9DU1NNX0lOVkFMSURfUFZDID0gQ1NTTV9DU1NNX0JBU0VfQ1NTTV9F
UlJPUiArIDMsCiBDU1NNRVJSX0NTU01fRU1NX0xPQURfRkFJTEVEID0gQ1NTTV9DU1NNX0JBU0Vf
Q1NTTV9FUlJPUiArIDQsCiBDU1NNRVJSX0NTU01fRU1NX1VOTE9BRF9GQUlMRUQgPSBDU1NNX0NT
U01fQkFTRV9DU1NNX0VSUk9SICsgNSwKIENTU01FUlJfQ1NTTV9BRERJTl9MT0FEX0ZBSUxFRCA9
IENTU01fQ1NTTV9CQVNFX0NTU01fRVJST1IgKyA2LAogQ1NTTUVSUl9DU1NNX0lOVkFMSURfS0VZ
X0hJRVJBUkNIWSA9IENTU01fQ1NTTV9CQVNFX0NTU01fRVJST1IgKyA3LAogQ1NTTUVSUl9DU1NN
X0FERElOX1VOTE9BRF9GQUlMRUQgPSBDU1NNX0NTU01fQkFTRV9DU1NNX0VSUk9SICsgOCwKIENT
U01FUlJfQ1NTTV9MSUJfUkVGX05PVF9GT1VORCA9IENTU01fQ1NTTV9CQVNFX0NTU01fRVJST1Ig
KyA5LAogQ1NTTUVSUl9DU1NNX0lOVkFMSURfQURESU5fRlVOQ1RJT05fVEFCTEUgPSBDU1NNX0NT
U01fQkFTRV9DU1NNX0VSUk9SICsgMTAsCiBDU1NNRVJSX0NTU01fRU1NX0FVVEhFTlRJQ0FURV9G
QUlMRUQgPSBDU1NNX0NTU01fQkFTRV9DU1NNX0VSUk9SICsgMTEsCiBDU1NNRVJSX0NTU01fQURE
SU5fQVVUSEVOVElDQVRFX0ZBSUxFRCA9IENTU01fQ1NTTV9CQVNFX0NTU01fRVJST1IgKyAxMiwK
IENTU01FUlJfQ1NTTV9JTlZBTElEX1NFUlZJQ0VfTUFTSyA9IENTU01fQ1NTTV9CQVNFX0NTU01f
RVJST1IgKyAxMywKIENTU01FUlJfQ1NTTV9NT0RVTEVfTk9UX0xPQURFRCA9IENTU01fQ1NTTV9C
QVNFX0NTU01fRVJST1IgKyAxNCwKIENTU01FUlJfQ1NTTV9JTlZBTElEX1NVQlNFUlZJQ0VJRCA9
IENTU01fQ1NTTV9CQVNFX0NTU01fRVJST1IgKyAxNSwKIENTU01FUlJfQ1NTTV9CVUZGRVJfVE9P
X1NNQUxMID0gQ1NTTV9DU1NNX0JBU0VfQ1NTTV9FUlJPUiArIDE2LAogQ1NTTUVSUl9DU1NNX0lO
VkFMSURfQVRUUklCVVRFID0gQ1NTTV9DU1NNX0JBU0VfQ1NTTV9FUlJPUiArIDE3LAogQ1NTTUVS
Ul9DU1NNX0FUVFJJQlVURV9OT1RfSU5fQ09OVEVYVCA9IENTU01fQ1NTTV9CQVNFX0NTU01fRVJS
T1IgKyAxOCwKIENTU01FUlJfQ1NTTV9NT0RVTEVfTUFOQUdFUl9JTklUSUFMSVpFX0ZBSUwgPSBD
U1NNX0NTU01fQkFTRV9DU1NNX0VSUk9SICsgMTksCiBDU1NNRVJSX0NTU01fTU9EVUxFX01BTkFH
RVJfTk9UX0ZPVU5EID0gQ1NTTV9DU1NNX0JBU0VfQ1NTTV9FUlJPUiArIDIwLAogQ1NTTUVSUl9D
U1NNX0VWRU5UX05PVElGSUNBVElPTl9DQUxMQkFDS19OT1RfRk9VTkQgPSBDU1NNX0NTU01fQkFT
RV9DU1NNX0VSUk9SICsgMjEKfTsKCgplbnVtIHsKIENTU01FUlJfQ1NQX0lOVEVSTkFMX0VSUk9S
ID0KICBDU1NNX0NTUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVEVSTkFMX0VSUk9SLAog
Q1NTTUVSUl9DU1BfTUVNT1JZX0VSUk9SID0KICBDU1NNX0NTUF9CQVNFX0VSUk9SICsgQ1NTTV9F
UlJDT0RFX01FTU9SWV9FUlJPUiwKIENTU01FUlJfQ1NQX01EU19FUlJPUiA9CiAgQ1NTTV9DU1Bf
QkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9NRFNfRVJST1IsCiBDU1NNRVJSX0NTUF9JTlZBTElE
X1BPSU5URVIgPQogIENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9Q
T0lOVEVSLAogQ1NTTUVSUl9DU1BfSU5WQUxJRF9JTlBVVF9QT0lOVEVSID0KICBDU1NNX0NTUF9C
QVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURfSU5QVVRfUE9JTlRFUiwKIENTU01FUlJf
Q1NQX0lOVkFMSURfT1VUUFVUX1BPSU5URVIgPQogIENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NN
X0VSUkNPREVfSU5WQUxJRF9PVVRQVVRfUE9JTlRFUiwKIENTU01FUlJfQ1NQX0ZVTkNUSU9OX05P
VF9JTVBMRU1FTlRFRCA9CiAgQ1NTTV9DU1BfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9GVU5D
VElPTl9OT1RfSU1QTEVNRU5URUQsCiBDU1NNRVJSX0NTUF9TRUxGX0NIRUNLX0ZBSUxFRCA9CiAg
Q1NTTV9DU1BfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9TRUxGX0NIRUNLX0ZBSUxFRCwKIENT
U01FUlJfQ1NQX09TX0FDQ0VTU19ERU5JRUQgPQogIENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NN
X0VSUkNPREVfT1NfQUNDRVNTX0RFTklFRCwKIENTU01FUlJfQ1NQX0ZVTkNUSU9OX0ZBSUxFRCA9
CiAgQ1NTTV9DU1BfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9GVU5DVElPTl9GQUlMRUQKfTsK
CgplbnVtIHsKIENTU01FUlJfQ1NQX09QRVJBVElPTl9BVVRIX0RFTklFRCA9CiAgQ1NTTV9DU1Bf
QkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9PUEVSQVRJT05fQVVUSF9ERU5JRUQsCiBDU1NNRVJS
X0NTUF9PQkpFQ1RfVVNFX0FVVEhfREVOSUVEID0KICBDU1NNX0NTUF9CQVNFX0VSUk9SICsgQ1NT
TV9FUlJDT0RFX09CSkVDVF9VU0VfQVVUSF9ERU5JRUQsCiBDU1NNRVJSX0NTUF9PQkpFQ1RfTUFO
SVBfQVVUSF9ERU5JRUQgPQogIENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfT0JK
RUNUX01BTklQX0FVVEhfREVOSUVELAogQ1NTTUVSUl9DU1BfT0JKRUNUX0FDTF9OT1RfU1VQUE9S
VEVEID0KICBDU1NNX0NTUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX09CSkVDVF9BQ0xfTk9U
X1NVUFBPUlRFRCwKIENTU01FUlJfQ1NQX09CSkVDVF9BQ0xfUkVRVUlSRUQgPQogIENTU01fQ1NQ
X0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfT0JKRUNUX0FDTF9SRVFVSVJFRCwKIENTU01FUlJf
Q1NQX0lOVkFMSURfQUNDRVNTX0NSRURFTlRJQUxTID0KICBDU1NNX0NTUF9CQVNFX0VSUk9SICsg
Q1NTTV9FUlJDT0RFX0lOVkFMSURfQUNDRVNTX0NSRURFTlRJQUxTLAogQ1NTTUVSUl9DU1BfSU5W
QUxJRF9BQ0xfQkFTRV9DRVJUUyA9CiAgQ1NTTV9DU1BfQkFTRV9FUlJPUiArIENTU01fRVJSQ09E
RV9JTlZBTElEX0FDTF9CQVNFX0NFUlRTLAogQ1NTTUVSUl9DU1BfQUNMX0JBU0VfQ0VSVFNfTk9U
X1NVUFBPUlRFRCA9CiAgQ1NTTV9DU1BfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9BQ0xfQkFT
RV9DRVJUU19OT1RfU1VQUE9SVEVELAogQ1NTTUVSUl9DU1BfSU5WQUxJRF9TQU1QTEVfVkFMVUUg
PQogIENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9TQU1QTEVfVkFM
VUUsCiBDU1NNRVJSX0NTUF9TQU1QTEVfVkFMVUVfTk9UX1NVUFBPUlRFRCA9CiAgQ1NTTV9DU1Bf
QkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9TQU1QTEVfVkFMVUVfTk9UX1NVUFBPUlRFRCwKIENT
U01FUlJfQ1NQX0lOVkFMSURfQUNMX1NVQkpFQ1RfVkFMVUUgPQogIENTU01fQ1NQX0JBU0VfRVJS
T1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9BQ0xfU1VCSkVDVF9WQUxVRSwKIENTU01FUlJfQ1NQ
X0FDTF9TVUJKRUNUX1RZUEVfTk9UX1NVUFBPUlRFRCA9CiAgQ1NTTV9DU1BfQkFTRV9FUlJPUiAr
IENTU01fRVJSQ09ERV9BQ0xfU1VCSkVDVF9UWVBFX05PVF9TVVBQT1JURUQsCiBDU1NNRVJSX0NT
UF9JTlZBTElEX0FDTF9DSEFMTEVOR0VfQ0FMTEJBQ0sgPQogIENTU01fQ1NQX0JBU0VfRVJST1Ig
KyBDU1NNX0VSUkNPREVfSU5WQUxJRF9BQ0xfQ0hBTExFTkdFX0NBTExCQUNLLAogQ1NTTUVSUl9D
U1BfQUNMX0NIQUxMRU5HRV9DQUxMQkFDS19GQUlMRUQgPQogIENTU01fQ1NQX0JBU0VfRVJST1Ig
KyBDU1NNX0VSUkNPREVfQUNMX0NIQUxMRU5HRV9DQUxMQkFDS19GQUlMRUQsCiBDU1NNRVJSX0NT
UF9JTlZBTElEX0FDTF9FTlRSWV9UQUcgPQogIENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VS
UkNPREVfSU5WQUxJRF9BQ0xfRU5UUllfVEFHLAogQ1NTTUVSUl9DU1BfQUNMX0VOVFJZX1RBR19O
T1RfRk9VTkQgPQogIENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfQUNMX0VOVFJZ
X1RBR19OT1RfRk9VTkQsCiBDU1NNRVJSX0NTUF9JTlZBTElEX0FDTF9FRElUX01PREUgPQogIENT
U01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9BQ0xfRURJVF9NT0RFLAog
Q1NTTUVSUl9DU1BfQUNMX0NIQU5HRV9GQUlMRUQgPQogIENTU01fQ1NQX0JBU0VfRVJST1IgKyBD
U1NNX0VSUkNPREVfQUNMX0NIQU5HRV9GQUlMRUQsCiBDU1NNRVJSX0NTUF9JTlZBTElEX05FV19B
Q0xfRU5UUlkgPQogIENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9O
RVdfQUNMX0VOVFJZLAogQ1NTTUVSUl9DU1BfSU5WQUxJRF9ORVdfQUNMX09XTkVSID0KICBDU1NN
X0NTUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURfTkVXX0FDTF9PV05FUiwKIENT
U01FUlJfQ1NQX0FDTF9ERUxFVEVfRkFJTEVEID0KICBDU1NNX0NTUF9CQVNFX0VSUk9SICsgQ1NT
TV9FUlJDT0RFX0FDTF9ERUxFVEVfRkFJTEVELAogQ1NTTUVSUl9DU1BfQUNMX1JFUExBQ0VfRkFJ
TEVEID0KICBDU1NNX0NTUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0FDTF9SRVBMQUNFX0ZB
SUxFRCwKIENTU01FUlJfQ1NQX0FDTF9BRERfRkFJTEVEID0KICBDU1NNX0NTUF9CQVNFX0VSUk9S
ICsgQ1NTTV9FUlJDT0RFX0FDTF9BRERfRkFJTEVECn07CgoKZW51bSB7CiBDU1NNRVJSX0NTUF9J
TlZBTElEX0NPTlRFWFRfSEFORExFID0KICBDU1NNX0NTUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJD
T0RFX0lOVkFMSURfQ09OVEVYVF9IQU5ETEUsCiBDU1NNRVJSX0NTUF9QUklWSUxFR0VfTk9UX0dS
QU5URUQgPQogIENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfUFJJVklMRUdFX05P
VF9HUkFOVEVELAogQ1NTTUVSUl9DU1BfSU5WQUxJRF9EQVRBID0KICBDU1NNX0NTUF9CQVNFX0VS
Uk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURfREFUQSwKIENTU01FUlJfQ1NQX0lOVkFMSURfUEFT
U1RIUk9VR0hfSUQgPQogIENTU01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJ
RF9QQVNTVEhST1VHSF9JRCwKIENTU01FUlJfQ1NQX0lOVkFMSURfQ1JZUFRPX0RBVEEgPQogIENT
U01fQ1NQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9DUllQVE9fREFUQQp9OwoK
CmVudW0gewoKIENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SID0KICBDU1NNX0NTUF9CQVNFX0VSUk9S
ICsgQ1NTTV9FUlJPUkNPREVfQ09NTU9OX0VYVEVOVCwKIENTU01FUlJfQ1NQX0lOUFVUX0xFTkdU
SF9FUlJPUiA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMSwKIENTU01FUlJfQ1NQX09VVFBV
VF9MRU5HVEhfRVJST1IgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDIsCiBDU1NNRVJSX0NT
UF9QUklWSUxFR0VfTk9UX1NVUFBPUlRFRCA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMywK
IENTU01FUlJfQ1NQX0RFVklDRV9FUlJPUiA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgNCwK
IENTU01FUlJfQ1NQX0RFVklDRV9NRU1PUllfRVJST1IgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJP
UiArIDUsCiBDU1NNRVJSX0NTUF9BVFRBQ0hfSEFORExFX0JVU1kgPSBDU1NNX0NTUF9CQVNFX0NT
UF9FUlJPUiArIDYsCiBDU1NNRVJSX0NTUF9OT1RfTE9HR0VEX0lOID0gQ1NTTV9DU1BfQkFTRV9D
U1BfRVJST1IgKyA3LAogQ1NTTUVSUl9DU1BfSU5WQUxJRF9LRVkgPSBDU1NNX0NTUF9CQVNFX0NT
UF9FUlJPUiArIDE2LAogQ1NTTUVSUl9DU1BfSU5WQUxJRF9LRVlfUkVGRVJFTkNFID0gQ1NTTV9D
U1BfQkFTRV9DU1BfRVJST1IgKyAxNywKIENTU01FUlJfQ1NQX0lOVkFMSURfS0VZX0NMQVNTID0g
Q1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxOCwKIENTU01FUlJfQ1NQX0FMR0lEX01JU01BVENI
ID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxOSwKIENTU01FUlJfQ1NQX0tFWV9VU0FHRV9J
TkNPUlJFQ1QgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDIwLAogQ1NTTUVSUl9DU1BfS0VZ
X0JMT0JfVFlQRV9JTkNPUlJFQ1QgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDIxLAogQ1NT
TUVSUl9DU1BfS0VZX0hFQURFUl9JTkNPTlNJU1RFTlQgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJP
UiArIDIyLAogQ1NTTUVSUl9DU1BfVU5TVVBQT1JURURfS0VZX0ZPUk1BVCA9IENTU01fQ1NQX0JB
U0VfQ1NQX0VSUk9SICsgMjMsCiBDU1NNRVJSX0NTUF9VTlNVUFBPUlRFRF9LRVlfU0laRSA9IENT
U01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMjQsCiBDU1NNRVJSX0NTUF9JTlZBTElEX0tFWV9QT0lO
VEVSID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAyNSwKIENTU01FUlJfQ1NQX0lOVkFMSURf
S0VZVVNBR0VfTUFTSyA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMjYsCiBDU1NNRVJSX0NT
UF9VTlNVUFBPUlRFRF9LRVlVU0FHRV9NQVNLID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAy
NywKIENTU01FUlJfQ1NQX0lOVkFMSURfS0VZQVRUUl9NQVNLID0gQ1NTTV9DU1BfQkFTRV9DU1Bf
RVJST1IgKyAyOCwKIENTU01FUlJfQ1NQX1VOU1VQUE9SVEVEX0tFWUFUVFJfTUFTSyA9IENTU01f
Q1NQX0JBU0VfQ1NQX0VSUk9SICsgMjksCiBDU1NNRVJSX0NTUF9JTlZBTElEX0tFWV9MQUJFTCA9
IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMzAsCiBDU1NNRVJSX0NTUF9VTlNVUFBPUlRFRF9L
RVlfTEFCRUwgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDMxLAogQ1NTTUVSUl9DU1BfSU5W
QUxJRF9LRVlfRk9STUFUID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAzMiwKCgogQ1NTTUVS
Ul9DU1BfSU5WQUxJRF9EQVRBX0NPVU5UID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyA0MCwK
IENTU01FUlJfQ1NQX1ZFQ1RPUl9PRl9CVUZTX1VOU1VQUE9SVEVEID0gQ1NTTV9DU1BfQkFTRV9D
U1BfRVJST1IgKyA0MSwKIENTU01FUlJfQ1NQX0lOVkFMSURfSU5QVVRfVkVDVE9SID0gQ1NTTV9D
U1BfQkFTRV9DU1BfRVJST1IgKyA0MiwKIENTU01FUlJfQ1NQX0lOVkFMSURfT1VUUFVUX1ZFQ1RP
UiA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgNDMsCgoKIENTU01FUlJfQ1NQX0lOVkFMSURf
Q09OVEVYVCA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgNDgsCiBDU1NNRVJSX0NTUF9JTlZB
TElEX0FMR09SSVRITSA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgNDksCiBDU1NNRVJSX0NT
UF9JTlZBTElEX0FUVFJfS0VZID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyA1NCwKIENTU01F
UlJfQ1NQX01JU1NJTkdfQVRUUl9LRVkgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDU1LAog
Q1NTTUVSUl9DU1BfSU5WQUxJRF9BVFRSX0lOSVRfVkVDVE9SID0gQ1NTTV9DU1BfQkFTRV9DU1Bf
RVJST1IgKyA1NiwKIENTU01FUlJfQ1NQX01JU1NJTkdfQVRUUl9JTklUX1ZFQ1RPUiA9IENTU01f
Q1NQX0JBU0VfQ1NQX0VSUk9SICsgNTcsCiBDU1NNRVJSX0NTUF9JTlZBTElEX0FUVFJfU0FMVCA9
IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgNTgsCiBDU1NNRVJSX0NTUF9NSVNTSU5HX0FUVFJf
U0FMVCA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgNTksCiBDU1NNRVJSX0NTUF9JTlZBTElE
X0FUVFJfUEFERElORyA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgNjAsCiBDU1NNRVJSX0NT
UF9NSVNTSU5HX0FUVFJfUEFERElORyA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgNjEsCiBD
U1NNRVJSX0NTUF9JTlZBTElEX0FUVFJfUkFORE9NID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1Ig
KyA2MiwKIENTU01FUlJfQ1NQX01JU1NJTkdfQVRUUl9SQU5ET00gPSBDU1NNX0NTUF9CQVNFX0NT
UF9FUlJPUiArIDYzLAogQ1NTTUVSUl9DU1BfSU5WQUxJRF9BVFRSX1NFRUQgPSBDU1NNX0NTUF9C
QVNFX0NTUF9FUlJPUiArIDY0LAogQ1NTTUVSUl9DU1BfTUlTU0lOR19BVFRSX1NFRUQgPSBDU1NN
X0NTUF9CQVNFX0NTUF9FUlJPUiArIDY1LAogQ1NTTUVSUl9DU1BfSU5WQUxJRF9BVFRSX1BBU1NQ
SFJBU0UgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDY2LAogQ1NTTUVSUl9DU1BfTUlTU0lO
R19BVFRSX1BBU1NQSFJBU0UgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDY3LAogQ1NTTUVS
Ul9DU1BfSU5WQUxJRF9BVFRSX0tFWV9MRU5HVEggPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiAr
IDY4LAogQ1NTTUVSUl9DU1BfTUlTU0lOR19BVFRSX0tFWV9MRU5HVEggPSBDU1NNX0NTUF9CQVNF
X0NTUF9FUlJPUiArIDY5LAogQ1NTTUVSUl9DU1BfSU5WQUxJRF9BVFRSX0JMT0NLX1NJWkUgPSBD
U1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDcwLAogQ1NTTUVSUl9DU1BfTUlTU0lOR19BVFRSX0JM
T0NLX1NJWkUgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDcxLAogQ1NTTUVSUl9DU1BfSU5W
QUxJRF9BVFRSX09VVFBVVF9TSVpFID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxMDAsCiBD
U1NNRVJSX0NTUF9NSVNTSU5HX0FUVFJfT1VUUFVUX1NJWkUgPSBDU1NNX0NTUF9CQVNFX0NTUF9F
UlJPUiArIDEwMSwKIENTU01FUlJfQ1NQX0lOVkFMSURfQVRUUl9ST1VORFMgPSBDU1NNX0NTUF9C
QVNFX0NTUF9FUlJPUiArIDEwMiwKIENTU01FUlJfQ1NQX01JU1NJTkdfQVRUUl9ST1VORFMgPSBD
U1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDEwMywKIENTU01FUlJfQ1NQX0lOVkFMSURfQVRUUl9B
TEdfUEFSQU1TID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxMDQsCiBDU1NNRVJSX0NTUF9N
SVNTSU5HX0FUVFJfQUxHX1BBUkFNUyA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMTA1LAog
Q1NTTUVSUl9DU1BfSU5WQUxJRF9BVFRSX0xBQkVMID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1Ig
KyAxMDYsCiBDU1NNRVJSX0NTUF9NSVNTSU5HX0FUVFJfTEFCRUwgPSBDU1NNX0NTUF9CQVNFX0NT
UF9FUlJPUiArIDEwNywKIENTU01FUlJfQ1NQX0lOVkFMSURfQVRUUl9LRVlfVFlQRSA9IENTU01f
Q1NQX0JBU0VfQ1NQX0VSUk9SICsgMTA4LAogQ1NTTUVSUl9DU1BfTUlTU0lOR19BVFRSX0tFWV9U
WVBFID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxMDksCiBDU1NNRVJSX0NTUF9JTlZBTElE
X0FUVFJfTU9ERSA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMTEwLAogQ1NTTUVSUl9DU1Bf
TUlTU0lOR19BVFRSX01PREUgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDExMSwKIENTU01F
UlJfQ1NQX0lOVkFMSURfQVRUUl9FRkZFQ1RJVkVfQklUUyA9IENTU01fQ1NQX0JBU0VfQ1NQX0VS
Uk9SICsgMTEyLAogQ1NTTUVSUl9DU1BfTUlTU0lOR19BVFRSX0VGRkVDVElWRV9CSVRTID0gQ1NT
TV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxMTMsCiBDU1NNRVJSX0NTUF9JTlZBTElEX0FUVFJfU1RB
UlRfREFURSA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMTE0LAogQ1NTTUVSUl9DU1BfTUlT
U0lOR19BVFRSX1NUQVJUX0RBVEUgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDExNSwKIENT
U01FUlJfQ1NQX0lOVkFMSURfQVRUUl9FTkRfREFURSA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9S
ICsgMTE2LAogQ1NTTUVSUl9DU1BfTUlTU0lOR19BVFRSX0VORF9EQVRFID0gQ1NTTV9DU1BfQkFT
RV9DU1BfRVJST1IgKyAxMTcsCiBDU1NNRVJSX0NTUF9JTlZBTElEX0FUVFJfVkVSU0lPTiA9IENT
U01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMTE4LAogQ1NTTUVSUl9DU1BfTUlTU0lOR19BVFRSX1ZF
UlNJT04gPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDExOSwKIENTU01FUlJfQ1NQX0lOVkFM
SURfQVRUUl9QUklNRSA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMTIwLAogQ1NTTUVSUl9D
U1BfTUlTU0lOR19BVFRSX1BSSU1FID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxMjEsCiBD
U1NNRVJSX0NTUF9JTlZBTElEX0FUVFJfQkFTRSA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsg
MTIyLAogQ1NTTUVSUl9DU1BfTUlTU0lOR19BVFRSX0JBU0UgPSBDU1NNX0NTUF9CQVNFX0NTUF9F
UlJPUiArIDEyMywKIENTU01FUlJfQ1NQX0lOVkFMSURfQVRUUl9TVUJQUklNRSA9IENTU01fQ1NQ
X0JBU0VfQ1NQX0VSUk9SICsgMTI0LAogQ1NTTUVSUl9DU1BfTUlTU0lOR19BVFRSX1NVQlBSSU1F
ID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxMjUsCiBDU1NNRVJSX0NTUF9JTlZBTElEX0FU
VFJfSVRFUkFUSU9OX0NPVU5UID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxMjYsCiBDU1NN
RVJSX0NTUF9NSVNTSU5HX0FUVFJfSVRFUkFUSU9OX0NPVU5UID0gQ1NTTV9DU1BfQkFTRV9DU1Bf
RVJST1IgKyAxMjcsCiBDU1NNRVJSX0NTUF9JTlZBTElEX0FUVFJfRExfREJfSEFORExFID0gQ1NT
TV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxMjgsCiBDU1NNRVJSX0NTUF9NSVNTSU5HX0FUVFJfRExf
REJfSEFORExFID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxMjksCiBDU1NNRVJSX0NTUF9J
TlZBTElEX0FUVFJfQUNDRVNTX0NSRURFTlRJQUxTID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1Ig
KyAxMzAsCiBDU1NNRVJSX0NTUF9NSVNTSU5HX0FUVFJfQUNDRVNTX0NSRURFTlRJQUxTID0gQ1NT
TV9DU1BfQkFTRV9DU1BfRVJST1IgKyAxMzEsCiBDU1NNRVJSX0NTUF9JTlZBTElEX0FUVFJfUFVC
TElDX0tFWV9GT1JNQVQgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDEzMiwKIENTU01FUlJf
Q1NQX01JU1NJTkdfQVRUUl9QVUJMSUNfS0VZX0ZPUk1BVCA9IENTU01fQ1NQX0JBU0VfQ1NQX0VS
Uk9SICsgMTMzLAogQ1NTTUVSUl9DU1BfSU5WQUxJRF9BVFRSX1BSSVZBVEVfS0VZX0ZPUk1BVCA9
IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMTM0LAogQ1NTTUVSUl9DU1BfTUlTU0lOR19BVFRS
X1BSSVZBVEVfS0VZX0ZPUk1BVCA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgMTM1LAogQ1NT
TUVSUl9DU1BfSU5WQUxJRF9BVFRSX1NZTU1FVFJJQ19LRVlfRk9STUFUID0gQ1NTTV9DU1BfQkFT
RV9DU1BfRVJST1IgKyAxMzYsCiBDU1NNRVJSX0NTUF9NSVNTSU5HX0FUVFJfU1lNTUVUUklDX0tF
WV9GT1JNQVQgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDEzNywKIENTU01FUlJfQ1NQX0lO
VkFMSURfQVRUUl9XUkFQUEVEX0tFWV9GT1JNQVQgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiAr
IDEzOCwKIENTU01FUlJfQ1NQX01JU1NJTkdfQVRUUl9XUkFQUEVEX0tFWV9GT1JNQVQgPSBDU1NN
X0NTUF9CQVNFX0NTUF9FUlJPUiArIDEzOSwKCgogQ1NTTUVSUl9DU1BfU1RBR0VEX09QRVJBVElP
Tl9JTl9QUk9HUkVTUyA9IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgNzIsCiBDU1NNRVJSX0NT
UF9TVEFHRURfT1BFUkFUSU9OX05PVF9TVEFSVEVEID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1Ig
KyA3MywKIENTU01FUlJfQ1NQX1ZFUklGWV9GQUlMRUQgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJP
UiArIDc0LAogQ1NTTUVSUl9DU1BfSU5WQUxJRF9TSUdOQVRVUkUgPSBDU1NNX0NTUF9CQVNFX0NT
UF9FUlJPUiArIDc1LAogQ1NTTUVSUl9DU1BfUVVFUllfU0laRV9VTktOT1dOID0gQ1NTTV9DU1Bf
QkFTRV9DU1BfRVJST1IgKyA3NiwKIENTU01FUlJfQ1NQX0JMT0NLX1NJWkVfTUlTTUFUQ0ggPSBD
U1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDc3LAogQ1NTTUVSUl9DU1BfUFJJVkFURV9LRVlfTk9U
X0ZPVU5EID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyA3OCwKIENTU01FUlJfQ1NQX1BVQkxJ
Q19LRVlfSU5DT05TSVNURU5UID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyA3OSwKIENTU01F
UlJfQ1NQX0RFVklDRV9WRVJJRllfRkFJTEVEID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyA4
MCwKIENTU01FUlJfQ1NQX0lOVkFMSURfTE9HSU5fTkFNRSA9IENTU01fQ1NQX0JBU0VfQ1NQX0VS
Uk9SICsgODEsCiBDU1NNRVJSX0NTUF9BTFJFQURZX0xPR0dFRF9JTiA9IENTU01fQ1NQX0JBU0Vf
Q1NQX0VSUk9SICsgODIsCiBDU1NNRVJSX0NTUF9QUklWQVRFX0tFWV9BTFJFQURZX0VYSVNUUyA9
IENTU01fQ1NQX0JBU0VfQ1NQX0VSUk9SICsgODMsCiBDU1NNRVJSX0NTUF9LRVlfTEFCRUxfQUxS
RUFEWV9FWElTVFMgPSBDU1NNX0NTUF9CQVNFX0NTUF9FUlJPUiArIDg0LAogQ1NTTUVSUl9DU1Bf
SU5WQUxJRF9ESUdFU1RfQUxHT1JJVEhNID0gQ1NTTV9DU1BfQkFTRV9DU1BfRVJST1IgKyA4NSwK
IENTU01FUlJfQ1NQX0NSWVBUT19EQVRBX0NBTExCQUNLX0ZBSUxFRCA9IENTU01fQ1NQX0JBU0Vf
Q1NQX0VSUk9SICsgODYKfTsKCgoKZW51bSB7CiBDU1NNRVJSX1RQX0lOVEVSTkFMX0VSUk9SID0K
ICBDU1NNX1RQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5URVJOQUxfRVJST1IsCiBDU1NN
RVJSX1RQX01FTU9SWV9FUlJPUiA9CiAgQ1NTTV9UUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RF
X01FTU9SWV9FUlJPUiwKIENTU01FUlJfVFBfTURTX0VSUk9SID0KICBDU1NNX1RQX0JBU0VfRVJS
T1IgKyBDU1NNX0VSUkNPREVfTURTX0VSUk9SLAogQ1NTTUVSUl9UUF9JTlZBTElEX1BPSU5URVIg
PQogIENTU01fVFBfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlZBTElEX1BPSU5URVIsCiBD
U1NNRVJSX1RQX0lOVkFMSURfSU5QVVRfUE9JTlRFUiA9CiAgQ1NTTV9UUF9CQVNFX0VSUk9SICsg
Q1NTTV9FUlJDT0RFX0lOVkFMSURfSU5QVVRfUE9JTlRFUiwKIENTU01FUlJfVFBfSU5WQUxJRF9P
VVRQVVRfUE9JTlRFUiA9CiAgQ1NTTV9UUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFM
SURfT1VUUFVUX1BPSU5URVIsCiBDU1NNRVJSX1RQX0ZVTkNUSU9OX05PVF9JTVBMRU1FTlRFRCA9
CiAgQ1NTTV9UUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0ZVTkNUSU9OX05PVF9JTVBMRU1F
TlRFRCwKIENTU01FUlJfVFBfU0VMRl9DSEVDS19GQUlMRUQgPQogIENTU01fVFBfQkFTRV9FUlJP
UiArIENTU01fRVJSQ09ERV9TRUxGX0NIRUNLX0ZBSUxFRCwKIENTU01FUlJfVFBfT1NfQUNDRVNT
X0RFTklFRCA9CiAgQ1NTTV9UUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX09TX0FDQ0VTU19E
RU5JRUQsCiBDU1NNRVJSX1RQX0ZVTkNUSU9OX0ZBSUxFRCA9CiAgQ1NTTV9UUF9CQVNFX0VSUk9S
ICsgQ1NTTV9FUlJDT0RFX0ZVTkNUSU9OX0ZBSUxFRCwKIENTU01FUlJfVFBfSU5WQUxJRF9DT05U
RVhUX0hBTkRMRSA9CiAgQ1NTTV9UUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURf
Q09OVEVYVF9IQU5ETEUsCiBDU1NNRVJSX1RQX0lOVkFMSURfREFUQSA9CiAgQ1NTTV9UUF9CQVNF
X0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURfREFUQSwKIENTU01FUlJfVFBfSU5WQUxJRF9E
Ql9MSVNUID0KICBDU1NNX1RQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9EQl9M
SVNULAogQ1NTTUVSUl9UUF9JTlZBTElEX0NFUlRHUk9VUF9QT0lOVEVSID0KICBDU1NNX1RQX0JB
U0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9DRVJUR1JPVVBfUE9JTlRFUiwKIENTU01F
UlJfVFBfSU5WQUxJRF9DRVJUX1BPSU5URVIgPQogIENTU01fVFBfQkFTRV9FUlJPUiArIENTU01f
RVJSQ09ERV9JTlZBTElEX0NFUlRfUE9JTlRFUiwKIENTU01FUlJfVFBfSU5WQUxJRF9DUkxfUE9J
TlRFUiA9CiAgQ1NTTV9UUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURfQ1JMX1BP
SU5URVIsCiBDU1NNRVJSX1RQX0lOVkFMSURfRklFTERfUE9JTlRFUiA9CiAgQ1NTTV9UUF9CQVNF
X0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURfRklFTERfUE9JTlRFUiwKIENTU01FUlJfVFBf
SU5WQUxJRF9ORVRXT1JLX0FERFIgPQogIENTU01fVFBfQkFTRV9FUlJPUiArIENTU01fRVJSQ09E
RV9JTlZBTElEX05FVFdPUktfQUREUiwKIENTU01FUlJfVFBfQ1JMX0FMUkVBRFlfU0lHTkVEID0K
ICBDU1NNX1RQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfQ1JMX0FMUkVBRFlfU0lHTkVELAog
Q1NTTUVSUl9UUF9JTlZBTElEX05VTUJFUl9PRl9GSUVMRFMgPQogIENTU01fVFBfQkFTRV9FUlJP
UiArIENTU01fRVJSQ09ERV9JTlZBTElEX05VTUJFUl9PRl9GSUVMRFMsCiBDU1NNRVJSX1RQX1ZF
UklGSUNBVElPTl9GQUlMVVJFID0KICBDU1NNX1RQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVf
VkVSSUZJQ0FUSU9OX0ZBSUxVUkUsCiBDU1NNRVJSX1RQX0lOVkFMSURfREJfSEFORExFID0KICBD
U1NNX1RQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9EQl9IQU5ETEUsCiBDU1NN
RVJSX1RQX1VOS05PV05fRk9STUFUID0KICBDU1NNX1RQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNP
REVfVU5LTk9XTl9GT1JNQVQsCiBDU1NNRVJSX1RQX1VOS05PV05fVEFHID0KICBDU1NNX1RQX0JB
U0VfRVJST1IgKyBDU1NNX0VSUkNPREVfVU5LTk9XTl9UQUcsCiBDU1NNRVJSX1RQX0lOVkFMSURf
UEFTU1RIUk9VR0hfSUQgPQogIENTU01fVFBfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlZB
TElEX1BBU1NUSFJPVUdIX0lELAogQ1NTTUVSUl9UUF9JTlZBTElEX0NTUF9IQU5ETEUgPQogIENT
U01fVFBfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlZBTElEX0NTUF9IQU5ETEUsCiBDU1NN
RVJSX1RQX0lOVkFMSURfRExfSEFORExFID0KICBDU1NNX1RQX0JBU0VfRVJST1IgKyBDU1NNX0VS
UkNPREVfSU5WQUxJRF9ETF9IQU5ETEUsCiBDU1NNRVJSX1RQX0lOVkFMSURfQ0xfSEFORExFID0K
ICBDU1NNX1RQX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9DTF9IQU5ETEUsCiBD
U1NNRVJSX1RQX0lOVkFMSURfREJfTElTVF9QT0lOVEVSID0KICBDU1NNX1RQX0JBU0VfRVJST1Ig
KyBDU1NNX0VSUkNPREVfSU5WQUxJRF9EQl9MSVNUX1BPSU5URVIKfTsKCgplbnVtIHsKIENTU01f
VFBfQkFTRV9UUF9FUlJPUiA9CiAgQ1NTTV9UUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJPUkNPREVf
Q09NTU9OX0VYVEVOVCwKIENTU01FUlJfVFBfSU5WQUxJRF9DQUxMRVJBVVRIX0NPTlRFWFRfUE9J
TlRFUiA9IENTU01fVFBfQkFTRV9UUF9FUlJPUiArIDEsCiBDU1NNRVJSX1RQX0lOVkFMSURfSURF
TlRJRklFUl9QT0lOVEVSID0gQ1NTTV9UUF9CQVNFX1RQX0VSUk9SICsgMiwKIENTU01FUlJfVFBf
SU5WQUxJRF9LRVlDQUNIRV9IQU5ETEUgPSBDU1NNX1RQX0JBU0VfVFBfRVJST1IgKyAzLAogQ1NT
TUVSUl9UUF9JTlZBTElEX0NFUlRHUk9VUCA9IENTU01fVFBfQkFTRV9UUF9FUlJPUiArIDQsCiBD
U1NNRVJSX1RQX0lOVkFMSURfQ1JMR1JPVVAgPSBDU1NNX1RQX0JBU0VfVFBfRVJST1IgKyA1LAog
Q1NTTUVSUl9UUF9JTlZBTElEX0NSTEdST1VQX1BPSU5URVIgPSBDU1NNX1RQX0JBU0VfVFBfRVJS
T1IgKyA2LAogQ1NTTUVSUl9UUF9BVVRIRU5USUNBVElPTl9GQUlMRUQgPSBDU1NNX1RQX0JBU0Vf
VFBfRVJST1IgKyA3LAogQ1NTTUVSUl9UUF9DRVJUR1JPVVBfSU5DT01QTEVURSA9IENTU01fVFBf
QkFTRV9UUF9FUlJPUiArIDgsCiBDU1NNRVJSX1RQX0NFUlRJRklDQVRFX0NBTlRfT1BFUkFURSA9
IENTU01fVFBfQkFTRV9UUF9FUlJPUiArIDksCiBDU1NNRVJSX1RQX0NFUlRfRVhQSVJFRCA9IENT
U01fVFBfQkFTRV9UUF9FUlJPUiArIDEwLAogQ1NTTUVSUl9UUF9DRVJUX05PVF9WQUxJRF9ZRVQg
PSBDU1NNX1RQX0JBU0VfVFBfRVJST1IgKyAxMSwKIENTU01FUlJfVFBfQ0VSVF9SRVZPS0VEID0g
Q1NTTV9UUF9CQVNFX1RQX0VSUk9SICsgMTIsCiBDU1NNRVJSX1RQX0NFUlRfU1VTUEVOREVEID0g
Q1NTTV9UUF9CQVNFX1RQX0VSUk9SICsgMTMsCiBDU1NNRVJSX1RQX0lOU1VGRklDSUVOVF9DUkVE
RU5USUFMUyA9IENTU01fVFBfQkFTRV9UUF9FUlJPUiArIDE0LAogQ1NTTUVSUl9UUF9JTlZBTElE
X0FDVElPTiA9IENTU01fVFBfQkFTRV9UUF9FUlJPUiArIDE1LAogQ1NTTUVSUl9UUF9JTlZBTElE
X0FDVElPTl9EQVRBID0gQ1NTTV9UUF9CQVNFX1RQX0VSUk9SICsgMTYsCiBDU1NNRVJSX1RQX0lO
VkFMSURfQU5DSE9SX0NFUlQgPSBDU1NNX1RQX0JBU0VfVFBfRVJST1IgKyAxOCwKIENTU01FUlJf
VFBfSU5WQUxJRF9BVVRIT1JJVFkgPSBDU1NNX1RQX0JBU0VfVFBfRVJST1IgKyAxOSwKIENTU01F
UlJfVFBfVkVSSUZZX0FDVElPTl9GQUlMRUQgPSBDU1NNX1RQX0JBU0VfVFBfRVJST1IgKyAyMCwK
IENTU01FUlJfVFBfSU5WQUxJRF9DRVJUSUZJQ0FURSA9IENTU01fVFBfQkFTRV9UUF9FUlJPUiAr
IDIxLAogQ1NTTUVSUl9UUF9JTlZBTElEX0NFUlRfQVVUSE9SSVRZID0gQ1NTTV9UUF9CQVNFX1RQ
X0VSUk9SICsgMjIsCiBDU1NNRVJSX1RQX0lOVkFMSURfQ1JMX0FVVEhPUklUWSA9IENTU01fVFBf
QkFTRV9UUF9FUlJPUiArIDIzLAogQ1NTTUVSUl9UUF9JTlZBTElEX0NSTF9FTkNPRElORyA9IENT
U01fVFBfQkFTRV9UUF9FUlJPUiArIDI0LAogQ1NTTUVSUl9UUF9JTlZBTElEX0NSTF9UWVBFID0g
Q1NTTV9UUF9CQVNFX1RQX0VSUk9SICsgMjUsCiBDU1NNRVJSX1RQX0lOVkFMSURfQ1JMID0gQ1NT
TV9UUF9CQVNFX1RQX0VSUk9SICsgMjYsCiBDU1NNRVJSX1RQX0lOVkFMSURfRk9STV9UWVBFID0g
Q1NTTV9UUF9CQVNFX1RQX0VSUk9SICsgMjcsCiBDU1NNRVJSX1RQX0lOVkFMSURfSUQgPSBDU1NN
X1RQX0JBU0VfVFBfRVJST1IgKyAyOCwKIENTU01FUlJfVFBfSU5WQUxJRF9JREVOVElGSUVSID0g
Q1NTTV9UUF9CQVNFX1RQX0VSUk9SICsgMjksCiBDU1NNRVJSX1RQX0lOVkFMSURfSU5ERVggPSBD
U1NNX1RQX0JBU0VfVFBfRVJST1IgKyAzMCwKIENTU01FUlJfVFBfSU5WQUxJRF9OQU1FID0gQ1NT
TV9UUF9CQVNFX1RQX0VSUk9SICsgMzEsCiBDU1NNRVJSX1RQX0lOVkFMSURfUE9MSUNZX0lERU5U
SUZJRVJTID0gQ1NTTV9UUF9CQVNFX1RQX0VSUk9SICsgMzIsCiBDU1NNRVJSX1RQX0lOVkFMSURf
VElNRVNUUklORyA9IENTU01fVFBfQkFTRV9UUF9FUlJPUiArIDMzLAogQ1NTTUVSUl9UUF9JTlZB
TElEX1JFQVNPTiA9IENTU01fVFBfQkFTRV9UUF9FUlJPUiArIDM0LAogQ1NTTUVSUl9UUF9JTlZB
TElEX1JFUVVFU1RfSU5QVVRTID0gQ1NTTV9UUF9CQVNFX1RQX0VSUk9SICsgMzUsCiBDU1NNRVJS
X1RQX0lOVkFMSURfUkVTUE9OU0VfVkVDVE9SID0gQ1NTTV9UUF9CQVNFX1RQX0VSUk9SICsgMzYs
CiBDU1NNRVJSX1RQX0lOVkFMSURfU0lHTkFUVVJFID0gQ1NTTV9UUF9CQVNFX1RQX0VSUk9SICsg
MzcsCiBDU1NNRVJSX1RQX0lOVkFMSURfU1RPUF9PTl9QT0xJQ1kgPSBDU1NNX1RQX0JBU0VfVFBf
RVJST1IgKyAzOCwKIENTU01FUlJfVFBfSU5WQUxJRF9DQUxMQkFDSyA9IENTU01fVFBfQkFTRV9U
UF9FUlJPUiArIDM5LAogQ1NTTUVSUl9UUF9JTlZBTElEX1RVUExFID0gQ1NTTV9UUF9CQVNFX1RQ
X0VSUk9SICsgNDAsCiBDU1NNRVJSX1RQX05PVF9TSUdORVIgPSBDU1NNX1RQX0JBU0VfVFBfRVJS
T1IgKyA0MSwKIENTU01FUlJfVFBfTk9UX1RSVVNURUQgPSBDU1NNX1RQX0JBU0VfVFBfRVJST1Ig
KyA0MiwKIENTU01FUlJfVFBfTk9fREVGQVVMVF9BVVRIT1JJVFkgPSBDU1NNX1RQX0JBU0VfVFBf
RVJST1IgKyA0MywKIENTU01FUlJfVFBfUkVKRUNURURfRk9STSA9IENTU01fVFBfQkFTRV9UUF9F
UlJPUiArIDQ0LAogQ1NTTUVSUl9UUF9SRVFVRVNUX0xPU1QgPSBDU1NNX1RQX0JBU0VfVFBfRVJS
T1IgKyA0NSwKIENTU01FUlJfVFBfUkVRVUVTVF9SRUpFQ1RFRCA9IENTU01fVFBfQkFTRV9UUF9F
UlJPUiArIDQ2LAogQ1NTTUVSUl9UUF9VTlNVUFBPUlRFRF9BRERSX1RZUEUgPSBDU1NNX1RQX0JB
U0VfVFBfRVJST1IgKyA0NywKIENTU01FUlJfVFBfVU5TVVBQT1JURURfU0VSVklDRSA9IENTU01f
VFBfQkFTRV9UUF9FUlJPUiArIDQ4LAogQ1NTTUVSUl9UUF9JTlZBTElEX1RVUExFR1JPVVBfUE9J
TlRFUiA9IENTU01fVFBfQkFTRV9UUF9FUlJPUiArIDQ5LAogQ1NTTUVSUl9UUF9JTlZBTElEX1RV
UExFR1JPVVAgPSBDU1NNX1RQX0JBU0VfVFBfRVJST1IgKyA1MAp9OwoKCmVudW0gewogQ1NTTUVS
Ul9BQ19JTlRFUk5BTF9FUlJPUiA9CiAgQ1NTTV9BQ19CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RF
X0lOVEVSTkFMX0VSUk9SLAogQ1NTTUVSUl9BQ19NRU1PUllfRVJST1IgPQogIENTU01fQUNfQkFT
RV9FUlJPUiArIENTU01fRVJSQ09ERV9NRU1PUllfRVJST1IsCiBDU1NNRVJSX0FDX01EU19FUlJP
UiA9CiAgQ1NTTV9BQ19CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX01EU19FUlJPUiwKIENTU01F
UlJfQUNfSU5WQUxJRF9QT0lOVEVSID0KICBDU1NNX0FDX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNP
REVfSU5WQUxJRF9QT0lOVEVSLAogQ1NTTUVSUl9BQ19JTlZBTElEX0lOUFVUX1BPSU5URVIgPQog
IENTU01fQUNfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlZBTElEX0lOUFVUX1BPSU5URVIs
CiBDU1NNRVJSX0FDX0lOVkFMSURfT1VUUFVUX1BPSU5URVIgPQogIENTU01fQUNfQkFTRV9FUlJP
UiArIENTU01fRVJSQ09ERV9JTlZBTElEX09VVFBVVF9QT0lOVEVSLAogQ1NTTUVSUl9BQ19GVU5D
VElPTl9OT1RfSU1QTEVNRU5URUQgPQogIENTU01fQUNfQkFTRV9FUlJPUiArIENTU01fRVJSQ09E
RV9GVU5DVElPTl9OT1RfSU1QTEVNRU5URUQsCiBDU1NNRVJSX0FDX1NFTEZfQ0hFQ0tfRkFJTEVE
ID0KICBDU1NNX0FDX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfU0VMRl9DSEVDS19GQUlMRUQs
CiBDU1NNRVJSX0FDX09TX0FDQ0VTU19ERU5JRUQgPQogIENTU01fQUNfQkFTRV9FUlJPUiArIENT
U01fRVJSQ09ERV9PU19BQ0NFU1NfREVOSUVELAogQ1NTTUVSUl9BQ19GVU5DVElPTl9GQUlMRUQg
PQogIENTU01fQUNfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9GVU5DVElPTl9GQUlMRUQsCiBD
U1NNRVJSX0FDX0lOVkFMSURfQ09OVEVYVF9IQU5ETEUgPQogIENTU01fQUNfQkFTRV9FUlJPUiAr
IENTU01fRVJSQ09ERV9JTlZBTElEX0NPTlRFWFRfSEFORExFLAogQ1NTTUVSUl9BQ19JTlZBTElE
X0RBVEEgPQogIENTU01fQUNfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlZBTElEX0RBVEEs
CiBDU1NNRVJSX0FDX0lOVkFMSURfREJfTElTVCA9CiAgQ1NTTV9BQ19CQVNFX0VSUk9SICsgQ1NT
TV9FUlJDT0RFX0lOVkFMSURfREJfTElTVCwKIENTU01FUlJfQUNfSU5WQUxJRF9QQVNTVEhST1VH
SF9JRCA9CiAgQ1NTTV9BQ19CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURfUEFTU1RI
Uk9VR0hfSUQsCiBDU1NNRVJSX0FDX0lOVkFMSURfRExfSEFORExFID0KICBDU1NNX0FDX0JBU0Vf
RVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9ETF9IQU5ETEUsCiBDU1NNRVJSX0FDX0lOVkFM
SURfQ0xfSEFORExFID0KICBDU1NNX0FDX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJ
RF9DTF9IQU5ETEUsCiBDU1NNRVJSX0FDX0lOVkFMSURfVFBfSEFORExFID0KICBDU1NNX0FDX0JB
U0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9UUF9IQU5ETEUsCiBDU1NNRVJSX0FDX0lO
VkFMSURfREJfSEFORExFID0KICBDU1NNX0FDX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5W
QUxJRF9EQl9IQU5ETEUsCiBDU1NNRVJSX0FDX0lOVkFMSURfREJfTElTVF9QT0lOVEVSID0KICBD
U1NNX0FDX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9EQl9MSVNUX1BPSU5URVIK
fTsKCgplbnVtIHsKIENTU01fQUNfQkFTRV9BQ19FUlJPUiA9CiAgQ1NTTV9BQ19CQVNFX0VSUk9S
ICsgQ1NTTV9FUlJPUkNPREVfQ09NTU9OX0VYVEVOVCwKIENTU01FUlJfQUNfSU5WQUxJRF9CQVNF
X0FDTFMgPSBDU1NNX0FDX0JBU0VfQUNfRVJST1IgKyAxLAogQ1NTTUVSUl9BQ19JTlZBTElEX1RV
UExFX0NSRURFTlRJQUxTID0gQ1NTTV9BQ19CQVNFX0FDX0VSUk9SICsgMiwKIENTU01FUlJfQUNf
SU5WQUxJRF9FTkNPRElORyA9IENTU01fQUNfQkFTRV9BQ19FUlJPUiArIDMsCiBDU1NNRVJSX0FD
X0lOVkFMSURfVkFMSURJVFlfUEVSSU9EID0gQ1NTTV9BQ19CQVNFX0FDX0VSUk9SICsgNCwKIENT
U01FUlJfQUNfSU5WQUxJRF9SRVFVRVNUT1IgPSBDU1NNX0FDX0JBU0VfQUNfRVJST1IgKyA1LAog
Q1NTTUVSUl9BQ19JTlZBTElEX1JFUVVFU1RfREVTQ1JJUFRPUiA9IENTU01fQUNfQkFTRV9BQ19F
UlJPUiArIDYKfTsKCgplbnVtIHsKIENTU01FUlJfQ0xfSU5URVJOQUxfRVJST1IgPQogIENTU01f
Q0xfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlRFUk5BTF9FUlJPUiwKIENTU01FUlJfQ0xf
TUVNT1JZX0VSUk9SID0KICBDU1NNX0NMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfTUVNT1JZ
X0VSUk9SLAogQ1NTTUVSUl9DTF9NRFNfRVJST1IgPQogIENTU01fQ0xfQkFTRV9FUlJPUiArIENT
U01fRVJSQ09ERV9NRFNfRVJST1IsCiBDU1NNRVJSX0NMX0lOVkFMSURfUE9JTlRFUiA9CiAgQ1NT
TV9DTF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURfUE9JTlRFUiwKIENTU01FUlJf
Q0xfSU5WQUxJRF9JTlBVVF9QT0lOVEVSID0KICBDU1NNX0NMX0JBU0VfRVJST1IgKyBDU1NNX0VS
UkNPREVfSU5WQUxJRF9JTlBVVF9QT0lOVEVSLAogQ1NTTUVSUl9DTF9JTlZBTElEX09VVFBVVF9Q
T0lOVEVSID0KICBDU1NNX0NMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9PVVRQ
VVRfUE9JTlRFUiwKIENTU01FUlJfQ0xfRlVOQ1RJT05fTk9UX0lNUExFTUVOVEVEID0KICBDU1NN
X0NMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfRlVOQ1RJT05fTk9UX0lNUExFTUVOVEVELAog
Q1NTTUVSUl9DTF9TRUxGX0NIRUNLX0ZBSUxFRCA9CiAgQ1NTTV9DTF9CQVNFX0VSUk9SICsgQ1NT
TV9FUlJDT0RFX1NFTEZfQ0hFQ0tfRkFJTEVELAogQ1NTTUVSUl9DTF9PU19BQ0NFU1NfREVOSUVE
ID0KICBDU1NNX0NMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfT1NfQUNDRVNTX0RFTklFRCwK
IENTU01FUlJfQ0xfRlVOQ1RJT05fRkFJTEVEID0KICBDU1NNX0NMX0JBU0VfRVJST1IgKyBDU1NN
X0VSUkNPREVfRlVOQ1RJT05fRkFJTEVELAogQ1NTTUVSUl9DTF9JTlZBTElEX0NPTlRFWFRfSEFO
RExFID0KICBDU1NNX0NMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9DT05URVhU
X0hBTkRMRSwKIENTU01FUlJfQ0xfSU5WQUxJRF9DRVJUR1JPVVBfUE9JTlRFUiA9CiAgQ1NTTV9D
TF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURfQ0VSVEdST1VQX1BPSU5URVIsCiBD
U1NNRVJSX0NMX0lOVkFMSURfQ0VSVF9QT0lOVEVSID0KICBDU1NNX0NMX0JBU0VfRVJST1IgKyBD
U1NNX0VSUkNPREVfSU5WQUxJRF9DRVJUX1BPSU5URVIsCiBDU1NNRVJSX0NMX0lOVkFMSURfQ1JM
X1BPSU5URVIgPQogIENTU01fQ0xfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlZBTElEX0NS
TF9QT0lOVEVSLAogQ1NTTUVSUl9DTF9JTlZBTElEX0ZJRUxEX1BPSU5URVIgPQogIENTU01fQ0xf
QkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlZBTElEX0ZJRUxEX1BPSU5URVIsCiBDU1NNRVJS
X0NMX0lOVkFMSURfREFUQSA9CiAgQ1NTTV9DTF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lO
VkFMSURfREFUQSwKIENTU01FUlJfQ0xfQ1JMX0FMUkVBRFlfU0lHTkVEID0KICBDU1NNX0NMX0JB
U0VfRVJST1IgKyBDU1NNX0VSUkNPREVfQ1JMX0FMUkVBRFlfU0lHTkVELAogQ1NTTUVSUl9DTF9J
TlZBTElEX05VTUJFUl9PRl9GSUVMRFMgPQogIENTU01fQ0xfQkFTRV9FUlJPUiArIENTU01fRVJS
Q09ERV9JTlZBTElEX05VTUJFUl9PRl9GSUVMRFMsCiBDU1NNRVJSX0NMX1ZFUklGSUNBVElPTl9G
QUlMVVJFID0KICBDU1NNX0NMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfVkVSSUZJQ0FUSU9O
X0ZBSUxVUkUsCiBDU1NNRVJSX0NMX1VOS05PV05fRk9STUFUID0KICBDU1NNX0NMX0JBU0VfRVJS
T1IgKyBDU1NNX0VSUkNPREVfVU5LTk9XTl9GT1JNQVQsCiBDU1NNRVJSX0NMX1VOS05PV05fVEFH
ID0KICBDU1NNX0NMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfVU5LTk9XTl9UQUcsCiBDU1NN
RVJSX0NMX0lOVkFMSURfUEFTU1RIUk9VR0hfSUQgPQogIENTU01fQ0xfQkFTRV9FUlJPUiArIENT
U01fRVJSQ09ERV9JTlZBTElEX1BBU1NUSFJPVUdIX0lECn07CgoKZW51bSB7CiBDU1NNX0NMX0JB
U0VfQ0xfRVJST1IgPQogIENTU01fQ0xfQkFTRV9FUlJPUiArIENTU01fRVJST1JDT0RFX0NPTU1P
Tl9FWFRFTlQsCiBDU1NNRVJSX0NMX0lOVkFMSURfQlVORExFX1BPSU5URVIgPSBDU1NNX0NMX0JB
U0VfQ0xfRVJST1IgKyAxLAogQ1NTTUVSUl9DTF9JTlZBTElEX0NBQ0hFX0hBTkRMRSA9IENTU01f
Q0xfQkFTRV9DTF9FUlJPUiArIDIsCiBDU1NNRVJSX0NMX0lOVkFMSURfUkVTVUxUU19IQU5ETEUg
PSBDU1NNX0NMX0JBU0VfQ0xfRVJST1IgKyAzLAogQ1NTTUVSUl9DTF9JTlZBTElEX0JVTkRMRV9J
TkZPID0gQ1NTTV9DTF9CQVNFX0NMX0VSUk9SICsgNCwKIENTU01FUlJfQ0xfSU5WQUxJRF9DUkxf
SU5ERVggPSBDU1NNX0NMX0JBU0VfQ0xfRVJST1IgKyA1LAogQ1NTTUVSUl9DTF9JTlZBTElEX1ND
T1BFID0gQ1NTTV9DTF9CQVNFX0NMX0VSUk9SICsgNiwKIENTU01FUlJfQ0xfTk9fRklFTERfVkFM
VUVTID0gQ1NTTV9DTF9CQVNFX0NMX0VSUk9SICsgNywKIENTU01FUlJfQ0xfU0NPUEVfTk9UX1NV
UFBPUlRFRCA9IENTU01fQ0xfQkFTRV9DTF9FUlJPUiArIDgKfTsKCgplbnVtIHsKIENTU01FUlJf
RExfSU5URVJOQUxfRVJST1IgPQogIENTU01fRExfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9J
TlRFUk5BTF9FUlJPUiwKIENTU01FUlJfRExfTUVNT1JZX0VSUk9SID0KICBDU1NNX0RMX0JBU0Vf
RVJST1IgKyBDU1NNX0VSUkNPREVfTUVNT1JZX0VSUk9SLAogQ1NTTUVSUl9ETF9NRFNfRVJST1Ig
PQogIENTU01fRExfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9NRFNfRVJST1IsCiBDU1NNRVJS
X0RMX0lOVkFMSURfUE9JTlRFUiA9CiAgQ1NTTV9ETF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RF
X0lOVkFMSURfUE9JTlRFUiwKIENTU01FUlJfRExfSU5WQUxJRF9JTlBVVF9QT0lOVEVSID0KICBD
U1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9JTlBVVF9QT0lOVEVSLAog
Q1NTTUVSUl9ETF9JTlZBTElEX09VVFBVVF9QT0lOVEVSID0KICBDU1NNX0RMX0JBU0VfRVJST1Ig
KyBDU1NNX0VSUkNPREVfSU5WQUxJRF9PVVRQVVRfUE9JTlRFUiwKIENTU01FUlJfRExfRlVOQ1RJ
T05fTk9UX0lNUExFTUVOVEVEID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVf
RlVOQ1RJT05fTk9UX0lNUExFTUVOVEVELAogQ1NTTUVSUl9ETF9TRUxGX0NIRUNLX0ZBSUxFRCA9
CiAgQ1NTTV9ETF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX1NFTEZfQ0hFQ0tfRkFJTEVELAog
Q1NTTUVSUl9ETF9PU19BQ0NFU1NfREVOSUVEID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NN
X0VSUkNPREVfT1NfQUNDRVNTX0RFTklFRCwKIENTU01FUlJfRExfRlVOQ1RJT05fRkFJTEVEID0K
ICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfRlVOQ1RJT05fRkFJTEVELAogQ1NT
TUVSUl9ETF9JTlZBTElEX0NTUF9IQU5ETEUgPQogIENTU01fRExfQkFTRV9FUlJPUiArIENTU01f
RVJSQ09ERV9JTlZBTElEX0NTUF9IQU5ETEUsCiBDU1NNRVJSX0RMX0lOVkFMSURfRExfSEFORExF
ID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9ETF9IQU5ETEUs
CiBDU1NNRVJSX0RMX0lOVkFMSURfQ0xfSEFORExFID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBD
U1NNX0VSUkNPREVfSU5WQUxJRF9DTF9IQU5ETEUsCiBDU1NNRVJSX0RMX0lOVkFMSURfREJfTElT
VF9QT0lOVEVSID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9E
Ql9MSVNUX1BPSU5URVIKfTsKCgplbnVtIHsKIENTU01FUlJfRExfT1BFUkFUSU9OX0FVVEhfREVO
SUVEID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfT1BFUkFUSU9OX0FVVEhf
REVOSUVELAogQ1NTTUVSUl9ETF9PQkpFQ1RfVVNFX0FVVEhfREVOSUVEID0KICBDU1NNX0RMX0JB
U0VfRVJST1IgKyBDU1NNX0VSUkNPREVfT0JKRUNUX1VTRV9BVVRIX0RFTklFRCwKIENTU01FUlJf
RExfT0JKRUNUX01BTklQX0FVVEhfREVOSUVEID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NN
X0VSUkNPREVfT0JKRUNUX01BTklQX0FVVEhfREVOSUVELAogQ1NTTUVSUl9ETF9PQkpFQ1RfQUNM
X05PVF9TVVBQT1JURUQgPQogIENTU01fRExfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9PQkpF
Q1RfQUNMX05PVF9TVVBQT1JURUQsCiBDU1NNRVJSX0RMX09CSkVDVF9BQ0xfUkVRVUlSRUQgPQog
IENTU01fRExfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9PQkpFQ1RfQUNMX1JFUVVJUkVELAog
Q1NTTUVSUl9ETF9JTlZBTElEX0FDQ0VTU19DUkVERU5USUFMUyA9CiAgQ1NTTV9ETF9CQVNFX0VS
Uk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURfQUNDRVNTX0NSRURFTlRJQUxTLAogQ1NTTUVSUl9E
TF9JTlZBTElEX0FDTF9CQVNFX0NFUlRTID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VS
UkNPREVfSU5WQUxJRF9BQ0xfQkFTRV9DRVJUUywKIENTU01FUlJfRExfQUNMX0JBU0VfQ0VSVFNf
Tk9UX1NVUFBPUlRFRCA9CiAgQ1NTTV9ETF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0FDTF9C
QVNFX0NFUlRTX05PVF9TVVBQT1JURUQsCiBDU1NNRVJSX0RMX0lOVkFMSURfU0FNUExFX1ZBTFVF
ID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9TQU1QTEVfVkFM
VUUsCiBDU1NNRVJSX0RMX1NBTVBMRV9WQUxVRV9OT1RfU1VQUE9SVEVEID0KICBDU1NNX0RMX0JB
U0VfRVJST1IgKyBDU1NNX0VSUkNPREVfU0FNUExFX1ZBTFVFX05PVF9TVVBQT1JURUQsCiBDU1NN
RVJSX0RMX0lOVkFMSURfQUNMX1NVQkpFQ1RfVkFMVUUgPQogIENTU01fRExfQkFTRV9FUlJPUiAr
IENTU01fRVJSQ09ERV9JTlZBTElEX0FDTF9TVUJKRUNUX1ZBTFVFLAogQ1NTTUVSUl9ETF9BQ0xf
U1VCSkVDVF9UWVBFX05PVF9TVVBQT1JURUQgPQogIENTU01fRExfQkFTRV9FUlJPUiArIENTU01f
RVJSQ09ERV9BQ0xfU1VCSkVDVF9UWVBFX05PVF9TVVBQT1JURUQsCiBDU1NNRVJSX0RMX0lOVkFM
SURfQUNMX0NIQUxMRU5HRV9DQUxMQkFDSyA9CiAgQ1NTTV9ETF9CQVNFX0VSUk9SICsgQ1NTTV9F
UlJDT0RFX0lOVkFMSURfQUNMX0NIQUxMRU5HRV9DQUxMQkFDSywKIENTU01FUlJfRExfQUNMX0NI
QUxMRU5HRV9DQUxMQkFDS19GQUlMRUQgPQogIENTU01fRExfQkFTRV9FUlJPUiArIENTU01fRVJS
Q09ERV9BQ0xfQ0hBTExFTkdFX0NBTExCQUNLX0ZBSUxFRCwKIENTU01FUlJfRExfSU5WQUxJRF9B
Q0xfRU5UUllfVEFHID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJ
RF9BQ0xfRU5UUllfVEFHLAogQ1NTTUVSUl9ETF9BQ0xfRU5UUllfVEFHX05PVF9GT1VORCA9CiAg
Q1NTTV9ETF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0FDTF9FTlRSWV9UQUdfTk9UX0ZPVU5E
LAogQ1NTTUVSUl9ETF9JTlZBTElEX0FDTF9FRElUX01PREUgPQogIENTU01fRExfQkFTRV9FUlJP
UiArIENTU01fRVJSQ09ERV9JTlZBTElEX0FDTF9FRElUX01PREUsCiBDU1NNRVJSX0RMX0FDTF9D
SEFOR0VfRkFJTEVEID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfQUNMX0NI
QU5HRV9GQUlMRUQsCiBDU1NNRVJSX0RMX0lOVkFMSURfTkVXX0FDTF9FTlRSWSA9CiAgQ1NTTV9E
TF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0lOVkFMSURfTkVXX0FDTF9FTlRSWSwKIENTU01F
UlJfRExfSU5WQUxJRF9ORVdfQUNMX09XTkVSID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NN
X0VSUkNPREVfSU5WQUxJRF9ORVdfQUNMX09XTkVSLAogQ1NTTUVSUl9ETF9BQ0xfREVMRVRFX0ZB
SUxFRCA9CiAgQ1NTTV9ETF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0FDTF9ERUxFVEVfRkFJ
TEVELAogQ1NTTUVSUl9ETF9BQ0xfUkVQTEFDRV9GQUlMRUQgPQogIENTU01fRExfQkFTRV9FUlJP
UiArIENTU01fRVJSQ09ERV9BQ0xfUkVQTEFDRV9GQUlMRUQsCiBDU1NNRVJSX0RMX0FDTF9BRERf
RkFJTEVEID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfQUNMX0FERF9GQUlM
RUQKfTsKCgplbnVtIHsKIENTU01FUlJfRExfSU5WQUxJRF9EQl9IQU5ETEUgPQogIENTU01fRExf
QkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlZBTElEX0RCX0hBTkRMRSwKIENTU01FUlJfRExf
SU5WQUxJRF9QQVNTVEhST1VHSF9JRCA9CiAgQ1NTTV9ETF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJD
T0RFX0lOVkFMSURfUEFTU1RIUk9VR0hfSUQsCiBDU1NNRVJSX0RMX0lOVkFMSURfTkVUV09SS19B
RERSID0KICBDU1NNX0RMX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfSU5WQUxJRF9ORVRXT1JL
X0FERFIKfTsKCgplbnVtIHsKIENTU01fRExfQkFTRV9ETF9FUlJPUiA9CiAgQ1NTTV9ETF9CQVNF
X0VSUk9SICsgQ1NTTV9FUlJPUkNPREVfQ09NTU9OX0VYVEVOVCwKIENTU01FUlJfRExfREFUQUJB
U0VfQ09SUlVQVCA9IENTU01fRExfQkFTRV9ETF9FUlJPUiArIDEsCiBDU1NNRVJSX0RMX0lOVkFM
SURfUkVDT1JEX0lOREVYID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgOCwKIENTU01FUlJfRExf
SU5WQUxJRF9SRUNPUkRUWVBFID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgOSwKIENTU01FUlJf
RExfSU5WQUxJRF9GSUVMRF9OQU1FID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgMTAsCiBDU1NN
RVJSX0RMX1VOU1VQUE9SVEVEX0ZJRUxEX0ZPUk1BVCA9IENTU01fRExfQkFTRV9ETF9FUlJPUiAr
IDExLAogQ1NTTUVSUl9ETF9VTlNVUFBPUlRFRF9JTkRFWF9JTkZPID0gQ1NTTV9ETF9CQVNFX0RM
X0VSUk9SICsgMTIsCiBDU1NNRVJSX0RMX1VOU1VQUE9SVEVEX0xPQ0FMSVRZID0gQ1NTTV9ETF9C
QVNFX0RMX0VSUk9SICsgMTMsCiBDU1NNRVJSX0RMX1VOU1VQUE9SVEVEX05VTV9BVFRSSUJVVEVT
ID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgMTQsCiBDU1NNRVJSX0RMX1VOU1VQUE9SVEVEX05V
TV9JTkRFWEVTID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgMTUsCiBDU1NNRVJSX0RMX1VOU1VQ
UE9SVEVEX05VTV9SRUNPUkRUWVBFUyA9IENTU01fRExfQkFTRV9ETF9FUlJPUiArIDE2LAogQ1NT
TUVSUl9ETF9VTlNVUFBPUlRFRF9SRUNPUkRUWVBFID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsg
MTcsCiBDU1NNRVJSX0RMX0ZJRUxEX1NQRUNJRklFRF9NVUxUSVBMRSA9IENTU01fRExfQkFTRV9E
TF9FUlJPUiArIDE4LAogQ1NTTUVSUl9ETF9JTkNPTVBBVElCTEVfRklFTERfRk9STUFUID0gQ1NT
TV9ETF9CQVNFX0RMX0VSUk9SICsgMTksCiBDU1NNRVJSX0RMX0lOVkFMSURfUEFSU0lOR19NT0RV
TEUgPSBDU1NNX0RMX0JBU0VfRExfRVJST1IgKyAyMCwKIENTU01FUlJfRExfSU5WQUxJRF9EQl9O
QU1FID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgMjIsCiBDU1NNRVJSX0RMX0RBVEFTVE9SRV9E
T0VTTk9UX0VYSVNUID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgMjMsCiBDU1NNRVJSX0RMX0RB
VEFTVE9SRV9BTFJFQURZX0VYSVNUUyA9IENTU01fRExfQkFTRV9ETF9FUlJPUiArIDI0LAogQ1NT
TUVSUl9ETF9EQl9MT0NLRUQgPSBDU1NNX0RMX0JBU0VfRExfRVJST1IgKyAyNSwKIENTU01FUlJf
RExfREFUQVNUT1JFX0lTX09QRU4gPSBDU1NNX0RMX0JBU0VfRExfRVJST1IgKyAyNiwKIENTU01F
UlJfRExfUkVDT1JEX05PVF9GT1VORCA9IENTU01fRExfQkFTRV9ETF9FUlJPUiArIDI3LAogQ1NT
TUVSUl9ETF9NSVNTSU5HX1ZBTFVFID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgMjgsCiBDU1NN
RVJSX0RMX1VOU1VQUE9SVEVEX1FVRVJZID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgMjksCiBD
U1NNRVJSX0RMX1VOU1VQUE9SVEVEX1FVRVJZX0xJTUlUUyA9IENTU01fRExfQkFTRV9ETF9FUlJP
UiArIDMwLAogQ1NTTUVSUl9ETF9VTlNVUFBPUlRFRF9OVU1fU0VMRUNUSU9OX1BSRURTID0gQ1NT
TV9ETF9CQVNFX0RMX0VSUk9SICsgMzEsCiBDU1NNRVJSX0RMX1VOU1VQUE9SVEVEX09QRVJBVE9S
ID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgMzMsCiBDU1NNRVJSX0RMX0lOVkFMSURfUkVTVUxU
U19IQU5ETEUgPSBDU1NNX0RMX0JBU0VfRExfRVJST1IgKyAzNCwKIENTU01FUlJfRExfSU5WQUxJ
RF9EQl9MT0NBVElPTiA9IENTU01fRExfQkFTRV9ETF9FUlJPUiArIDM1LAogQ1NTTUVSUl9ETF9J
TlZBTElEX0FDQ0VTU19SRVFVRVNUID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgMzYsCiBDU1NN
RVJSX0RMX0lOVkFMSURfSU5ERVhfSU5GTyA9IENTU01fRExfQkFTRV9ETF9FUlJPUiArIDM3LAog
Q1NTTUVSUl9ETF9JTlZBTElEX1NFTEVDVElPTl9UQUcgPSBDU1NNX0RMX0JBU0VfRExfRVJST1Ig
KyAzOCwKIENTU01FUlJfRExfSU5WQUxJRF9ORVdfT1dORVIgPSBDU1NNX0RMX0JBU0VfRExfRVJS
T1IgKyAzOSwKIENTU01FUlJfRExfSU5WQUxJRF9SRUNPUkRfVUlEID0gQ1NTTV9ETF9CQVNFX0RM
X0VSUk9SICsgNDAsCiBDU1NNRVJSX0RMX0lOVkFMSURfVU5JUVVFX0lOREVYX0RBVEEgPSBDU1NN
X0RMX0JBU0VfRExfRVJST1IgKyA0MSwKIENTU01FUlJfRExfSU5WQUxJRF9NT0RJRllfTU9ERSA9
IENTU01fRExfQkFTRV9ETF9FUlJPUiArIDQyLAogQ1NTTUVSUl9ETF9JTlZBTElEX09QRU5fUEFS
QU1FVEVSUyA9IENTU01fRExfQkFTRV9ETF9FUlJPUiArIDQzLAogQ1NTTUVSUl9ETF9SRUNPUkRf
TU9ESUZJRUQgPSBDU1NNX0RMX0JBU0VfRExfRVJST1IgKyA0NCwKIENTU01FUlJfRExfRU5ET0ZE
QVRBID0gQ1NTTV9ETF9CQVNFX0RMX0VSUk9SICsgNDUsCiBDU1NNRVJSX0RMX0lOVkFMSURfUVVF
UlkgPSBDU1NNX0RMX0JBU0VfRExfRVJST1IgKyA0NiwKIENTU01FUlJfRExfSU5WQUxJRF9WQUxV
RSA9IENTU01fRExfQkFTRV9ETF9FUlJPUiArIDQ3LAogQ1NTTUVSUl9ETF9NVUxUSVBMRV9WQUxV
RVNfVU5TVVBQT1JURUQgPSBDU1NNX0RMX0JBU0VfRExfRVJST1IgKyA0OCwKIENTU01FUlJfRExf
U1RBTEVfVU5JUVVFX1JFQ09SRCA9IENTU01fRExfQkFTRV9ETF9FUlJPUiArIDQ5Cn07CgoKCn0K
IyAzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRl
cnMvY3NzbWFwcGxlLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL2Nzc210eXBlLmgiIDEgMwojIDI3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jc3NtdHlwZS5oIiAzCiNk
ZWZpbmUgX0NTU01UWVBFX0hfIDEKCgoKCmV4dGVybiAiQyIgewoKCgoKdHlwZWRlZiBDU1NNX0lO
VFBUUiBDU1NNX0hBTkRMRSwgKkNTU01fSEFORExFX1BUUjsKCnR5cGVkZWYgdWludDY0IENTU01f
TE9OR19IQU5ETEUsICpDU1NNX0xPTkdfSEFORExFX1BUUjsKCnR5cGVkZWYgQ1NTTV9IQU5ETEUg
Q1NTTV9NT0RVTEVfSEFORExFLCAqQ1NTTV9NT0RVTEVfSEFORExFX1BUUjsKCnR5cGVkZWYgQ1NT
TV9MT05HX0hBTkRMRSBDU1NNX0NDX0hBTkRMRTsKCnR5cGVkZWYgQ1NTTV9NT0RVTEVfSEFORExF
IENTU01fQ1NQX0hBTkRMRTsKCnR5cGVkZWYgQ1NTTV9NT0RVTEVfSEFORExFIENTU01fVFBfSEFO
RExFOwoKdHlwZWRlZiBDU1NNX01PRFVMRV9IQU5ETEUgQ1NTTV9BQ19IQU5ETEU7Cgp0eXBlZGVm
IENTU01fTU9EVUxFX0hBTkRMRSBDU1NNX0NMX0hBTkRMRTsKCnR5cGVkZWYgQ1NTTV9NT0RVTEVf
SEFORExFIENTU01fRExfSEFORExFOwoKdHlwZWRlZiBDU1NNX01PRFVMRV9IQU5ETEUgQ1NTTV9E
Ql9IQU5ETEU7CgoKCmVudW0gewogICAgQ1NTTV9JTlZBTElEX0hBTkRMRSA9IDAKfTsKCgoKCnR5
cGVkZWYgc2ludDMyIENTU01fQk9PTDsKZW51bSB7CiBDU1NNX0ZBTFNFID0gMCwKIENTU01fVFJV
RSA9ICFDU1NNX0ZBTFNFCn07CgoKdHlwZWRlZiBzaW50MzIgQ1NTTV9SRVRVUk47CmVudW0gewog
Q1NTTV9PSyA9IDAKfTsKCmVudW0gewogQ1NTTV9NT0RVTEVfU1RSSU5HX1NJWkUgPSA2NAp9Owp0
eXBlZGVmIGNoYXIgQ1NTTV9TVFJJTkcgW0NTU01fTU9EVUxFX1NUUklOR19TSVpFICsgNF07Cgp0
eXBlZGVmIHN0cnVjdCBjc3NtX2RhdGEgewogICAgQ1NTTV9TSVpFIExlbmd0aDsKICAgIHVpbnQ4
ICpEYXRhOwp9IENTU01fREFUQSwgKkNTU01fREFUQV9QVFI7Cgp0eXBlZGVmIHN0cnVjdCBjc3Nt
X2d1aWQgewogICAgdWludDMyIERhdGExOwogICAgdWludDE2IERhdGEyOwogICAgdWludDE2IERh
dGEzOwogICAgdWludDggRGF0YTRbOF07Cn0gQ1NTTV9HVUlELCAqQ1NTTV9HVUlEX1BUUjsKCnR5
cGVkZWYgdWludDMyIENTU01fQklUTUFTSzsKdHlwZWRlZiBDU1NNX0JJVE1BU0sgQ1NTTV9LRVlf
SElFUkFSQ0hZOwplbnVtIHsKIENTU01fS0VZX0hJRVJBUkNIWV9OT05FID0gMCwKIENTU01fS0VZ
X0hJRVJBUkNIWV9JTlRFRyA9IDEsCiBDU1NNX0tFWV9ISUVSQVJDSFlfRVhQT1JUID0gMgp9OwoK
dHlwZWRlZiBDU1NNX0JJVE1BU0sgQ1NTTV9QVkNfTU9ERTsKZW51bSB7CiBDU1NNX1BWQ19OT05F
ID0gMCwKIENTU01fUFZDX0FQUCA9IDEsCiBDU1NNX1BWQ19TUCA9IDIKfTsKCnR5cGVkZWYgdWlu
dDMyIENTU01fUFJJVklMRUdFX1NDT1BFOwplbnVtIHsKIENTU01fUFJJVklMRUdFX1NDT1BFX05P
TkUgPSAwLAogQ1NTTV9QUklWSUxFR0VfU0NPUEVfUFJPQ0VTUyA9IDEsCiBDU1NNX1BSSVZJTEVH
RV9TQ09QRV9USFJFQUQgPSAyCn07Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX3ZlcnNpb24gewogICAg
dWludDMyIE1ham9yOwogICAgdWludDMyIE1pbm9yOwp9IENTU01fVkVSU0lPTiwgKkNTU01fVkVS
U0lPTl9QVFI7Cgp0eXBlZGVmIHVpbnQzMiBDU1NNX1NFUlZJQ0VfTUFTSzsKZW51bSB7CiBDU1NN
X1NFUlZJQ0VfQ1NTTSA9IDB4MSwKIENTU01fU0VSVklDRV9DU1AgPSAweDIsCiBDU1NNX1NFUlZJ
Q0VfREwgPSAweDQsCiBDU1NNX1NFUlZJQ0VfQ0wgPSAweDgsCiBDU1NNX1NFUlZJQ0VfVFAgPSAw
eDEwLAogQ1NTTV9TRVJWSUNFX0FDID0gMHgyMCwKIENTU01fU0VSVklDRV9LUiA9IDB4NDAKfTsK
CnR5cGVkZWYgQ1NTTV9TRVJWSUNFX01BU0sgQ1NTTV9TRVJWSUNFX1RZUEU7Cgp0eXBlZGVmIHN0
cnVjdCBjc3NtX3N1YnNlcnZpY2VfdWlkIHsKICAgIENTU01fR1VJRCBHdWlkOwogICAgQ1NTTV9W
RVJTSU9OIFZlcnNpb247CiAgICB1aW50MzIgU3Vic2VydmljZUlkOwogICAgQ1NTTV9TRVJWSUNF
X1RZUEUgU3Vic2VydmljZVR5cGU7Cn0gQ1NTTV9TVUJTRVJWSUNFX1VJRCwgKkNTU01fU1VCU0VS
VklDRV9VSURfUFRSOwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9NT0RVTEVfRVZFTlQsICpDU1NNX01P
RFVMRV9FVkVOVF9QVFI7CmVudW0gewogICAgQ1NTTV9OT1RJRllfSU5TRVJUID0gMSwKICAgIENT
U01fTk9USUZZX1JFTU9WRSA9IDIsCiAgICBDU1NNX05PVElGWV9GQVVMVCA9IDMKfTsKCnR5cGVk
ZWYgQ1NTTV9SRVRVUk4gKCAqQ1NTTV9BUElfTW9kdWxlRXZlbnRIYW5kbGVyKQogICAgKGNvbnN0
IENTU01fR1VJRCAqTW9kdWxlR3VpZCwKICAgICB2b2lkKiBBcHBOb3RpZnlDYWxsYmFja0N0eCwK
ICAgICB1aW50MzIgU3Vic2VydmljZUlkLAogICAgIENTU01fU0VSVklDRV9UWVBFIFNlcnZpY2VU
eXBlLAogICAgIENTU01fTU9EVUxFX0VWRU5UIEV2ZW50VHlwZSk7Cgp0eXBlZGVmIHVpbnQzMiBD
U1NNX0FUVEFDSF9GTEFHUzsKZW51bSB7CiBDU1NNX0FUVEFDSF9SRUFEX09OTFkgPSAweDAwMDAw
MDAxCn07CgoKCnR5cGVkZWYgdWludDY0IENTU01fUFJJVklMRUdFOwp0eXBlZGVmIENTU01fUFJJ
VklMRUdFIENTU01fVVNFRV9UQUc7CmVudW0gewogQ1NTTV9VU0VFX0xBU1QgPSAweEZGLAogQ1NT
TV9VU0VFX05PTkUgPSAwLAogQ1NTTV9VU0VFX0RPTUVTVElDID0gMSwKIENTU01fVVNFRV9GSU5B
TkNJQUwgPSAyLAogQ1NTTV9VU0VFX0tSTEUgPSAzLAogQ1NTTV9VU0VFX0tSRU5UID0gNCwKIENT
U01fVVNFRV9TU0wgPSA1LAogQ1NTTV9VU0VFX0FVVEhFTlRJQ0FUSU9OID0gNiwKIENTU01fVVNF
RV9LRVlFWENIID0gNywKIENTU01fVVNFRV9NRURJQ0FMID0gOCwKIENTU01fVVNFRV9JTlNVUkFO
Q0UgPSA5LAogQ1NTTV9VU0VFX1dFQUsgPSAxMAp9OwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9ORVRf
QUREUkVTU19UWVBFOwplbnVtIHsKICAgIENTU01fQUREUl9OT05FID0gMCwKICAgIENTU01fQURE
Ul9DVVNUT00gPSAxLAogICAgQ1NTTV9BRERSX1VSTCA9IDIsCiAgICBDU1NNX0FERFJfU09DS0FE
RFIgPSAzLAogICAgQ1NTTV9BRERSX05BTUUgPSA0Cn07Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX25l
dF9hZGRyZXNzIHsKICAgIENTU01fTkVUX0FERFJFU1NfVFlQRSBBZGRyZXNzVHlwZTsKICAgIENT
U01fREFUQSBBZGRyZXNzOwp9IENTU01fTkVUX0FERFJFU1MsICpDU1NNX05FVF9BRERSRVNTX1BU
UjsKCnR5cGVkZWYgdWludDMyIENTU01fTkVUX1BST1RPQ09MOwplbnVtIHsKIENTU01fTkVUX1BS
T1RPX05PTkUgPSAwLAogQ1NTTV9ORVRfUFJPVE9fQ1VTVE9NID0gMSwKIENTU01fTkVUX1BST1RP
X1VOU1BFQ0lGSUVEID0gMiwKIENTU01fTkVUX1BST1RPX0xEQVAgPSAzLAogQ1NTTV9ORVRfUFJP
VE9fTERBUFMgPSA0LAogQ1NTTV9ORVRfUFJPVE9fTERBUE5TID0gNSwKIENTU01fTkVUX1BST1RP
X1g1MDBEQVAgPSA2LAogQ1NTTV9ORVRfUFJPVE9fRlRQID0gNywKIENTU01fTkVUX1BST1RPX0ZU
UFMgPSA4LAogQ1NTTV9ORVRfUFJPVE9fT0NTUCA9IDksCiBDU1NNX05FVF9QUk9UT19DTVAgPSAx
MCwKIENTU01fTkVUX1BST1RPX0NNUFMgPSAxMQp9OwoKdHlwZWRlZiBDU1NNX1JFVFVSTiAoICpD
U1NNX0NBTExCQUNLKQogICAgKENTU01fREFUQV9QVFIgT3V0RGF0YSwgdm9pZCAqQ2FsbGVyQ3R4
KTsKCnR5cGVkZWYgc3RydWN0IGNzc21fY3J5cHRvX2RhdGEgewogICAgQ1NTTV9EQVRBIFBhcmFt
OwogICAgQ1NTTV9DQUxMQkFDSyBDYWxsYmFjazsKICAgIHZvaWQgKkNhbGxlckN0eDsKfSBDU1NN
X0NSWVBUT19EQVRBLCAqQ1NTTV9DUllQVE9fREFUQV9QVFI7Cgp0eXBlZGVmIHNpbnQzMiBDU1NN
X1dPUkRJRF9UWVBFOwplbnVtIHsKIENTU01fV09SRElEX19VTktfID0gLTEsCiBDU1NNX1dPUkRJ
RF9fTkxVXyA9IDAsCiBDU1NNX1dPUkRJRF9fU1RBUl8gPSAxLAogQ1NTTV9XT1JESURfQSA9IDIs
CiBDU1NNX1dPUkRJRF9BQ0wgPSAzLAogQ1NTTV9XT1JESURfQUxQSEEgPSA0LAogQ1NTTV9XT1JE
SURfQiA9IDUsCiBDU1NNX1dPUkRJRF9CRVIgPSA2LAogQ1NTTV9XT1JESURfQklOQVJZID0gNywK
IENTU01fV09SRElEX0JJT01FVFJJQyA9IDgsCiBDU1NNX1dPUkRJRF9DID0gOSwKIENTU01fV09S
RElEX0NBTkNFTEVEID0gMTAsCiBDU1NNX1dPUkRJRF9DRVJUID0gMTEsCiBDU1NNX1dPUkRJRF9D
T01NRU5UID0gMTIsCiBDU1NNX1dPUkRJRF9DUkwgPSAxMywKIENTU01fV09SRElEX0NVU1RPTSA9
IDE0LAogQ1NTTV9XT1JESURfRCA9IDE1LAogQ1NTTV9XT1JESURfREFURSA9IDE2LAogQ1NTTV9X
T1JESURfREJfREVMRVRFID0gMTcsCiBDU1NNX1dPUkRJRF9EQl9FWEVDX1NUT1JFRF9RVUVSWSA9
IDE4LAogQ1NTTV9XT1JESURfREJfSU5TRVJUID0gMTksCiBDU1NNX1dPUkRJRF9EQl9NT0RJRlkg
PSAyMCwKIENTU01fV09SRElEX0RCX1JFQUQgPSAyMSwKIENTU01fV09SRElEX0RCU19DUkVBVEUg
PSAyMiwKIENTU01fV09SRElEX0RCU19ERUxFVEUgPSAyMywKIENTU01fV09SRElEX0RFQ1JZUFQg
PSAyNCwKIENTU01fV09SRElEX0RFTEVURSA9IDI1LAogQ1NTTV9XT1JESURfREVMVEFfQ1JMID0g
MjYsCiBDU1NNX1dPUkRJRF9ERVIgPSAyNywKIENTU01fV09SRElEX0RFUklWRSA9IDI4LAogQ1NT
TV9XT1JESURfRElTUExBWSA9IDI5LAogQ1NTTV9XT1JESURfRE8gPSAzMCwKIENTU01fV09SRElE
X0RTQSA9IDMxLAogQ1NTTV9XT1JESURfRFNBX1NIQTEgPSAzMiwKIENTU01fV09SRElEX0UgPSAz
MywKIENTU01fV09SRElEX0VMR0FNQUwgPSAzNCwKIENTU01fV09SRElEX0VOQ1JZUFQgPSAzNSwK
IENTU01fV09SRElEX0VOVFJZID0gMzYsCiBDU1NNX1dPUkRJRF9FWFBPUlRfQ0xFQVIgPSAzNywK
IENTU01fV09SRElEX0VYUE9SVF9XUkFQUEVEID0gMzgsCiBDU1NNX1dPUkRJRF9HID0gMzksCiBD
U1NNX1dPUkRJRF9HRSA9IDQwLAogQ1NTTV9XT1JESURfR0VOS0VZID0gNDEsCiBDU1NNX1dPUkRJ
RF9IQVNIID0gNDIsCiBDU1NNX1dPUkRJRF9IQVNIRURfUEFTU1dPUkQgPSA0MywKIENTU01fV09S
RElEX0hBU0hFRF9TVUJKRUNUID0gNDQsCiBDU1NNX1dPUkRJRF9IQVZBTCA9IDQ1LAogQ1NTTV9X
T1JESURfSUJDSEFTSCA9IDQ2LAogQ1NTTV9XT1JESURfSU1QT1JUX0NMRUFSID0gNDcsCiBDU1NN
X1dPUkRJRF9JTVBPUlRfV1JBUFBFRCA9IDQ4LAogQ1NTTV9XT1JESURfSU5URUwgPSA0OSwKIENT
U01fV09SRElEX0lTU1VFUiA9IDUwLAogQ1NTTV9XT1JESURfSVNTVUVSX0lORk8gPSA1MSwKIENT
U01fV09SRElEX0tfT0ZfTiA9IDUyLAogQ1NTTV9XT1JESURfS0VBID0gNTMsCiBDU1NNX1dPUkRJ
RF9LRVlIT0xERVIgPSA1NCwKIENTU01fV09SRElEX0wgPSA1NSwKIENTU01fV09SRElEX0xFID0g
NTYsCiBDU1NNX1dPUkRJRF9MT0dJTiA9IDU3LAogQ1NTTV9XT1JESURfTE9HSU5fTkFNRSA9IDU4
LAogQ1NTTV9XT1JESURfTUFDID0gNTksCiBDU1NNX1dPUkRJRF9NRDIgPSA2MCwKIENTU01fV09S
RElEX01EMldJVEhSU0EgPSA2MSwKIENTU01fV09SRElEX01ENCA9IDYyLAogQ1NTTV9XT1JESURf
TUQ1ID0gNjMsCiBDU1NNX1dPUkRJRF9NRDVXSVRIUlNBID0gNjQsCiBDU1NNX1dPUkRJRF9OID0g
NjUsCiBDU1NNX1dPUkRJRF9OQU1FID0gNjYsCiBDU1NNX1dPUkRJRF9ORFIgPSA2NywKIENTU01f
V09SRElEX05IQVNIID0gNjgsCiBDU1NNX1dPUkRJRF9OT1RfQUZURVIgPSA2OSwKIENTU01fV09S
RElEX05PVF9CRUZPUkUgPSA3MCwKIENTU01fV09SRElEX05VTEwgPSA3MSwKIENTU01fV09SRElE
X05VTUVSSUMgPSA3MiwKIENTU01fV09SRElEX09CSkVDVF9IQVNIID0gNzMsCiBDU1NNX1dPUkRJ
RF9PTkVfVElNRSA9IDc0LAogQ1NTTV9XT1JESURfT05MSU5FID0gNzUsCiBDU1NNX1dPUkRJRF9P
V05FUiA9IDc2LAogQ1NTTV9XT1JESURfUCA9IDc3LAogQ1NTTV9XT1JESURfUEFNX05BTUUgPSA3
OCwKIENTU01fV09SRElEX1BBU1NXT1JEID0gNzksCiBDU1NNX1dPUkRJRF9QR1AgPSA4MCwKIENT
U01fV09SRElEX1BSRUZJWCA9IDgxLAogQ1NTTV9XT1JESURfUFJJVkFURV9LRVkgPSA4MiwKIENT
U01fV09SRElEX1BST01QVEVEX0JJT01FVFJJQyA9IDgzLAogQ1NTTV9XT1JESURfUFJPTVBURURf
UEFTU1dPUkQgPSA4NCwKIENTU01fV09SRElEX1BST1BBR0FURSA9IDg1LAogQ1NTTV9XT1JESURf
UFJPVEVDVEVEX0JJT01FVFJJQyA9IDg2LAogQ1NTTV9XT1JESURfUFJPVEVDVEVEX1BBU1NXT1JE
ID0gODcsCiBDU1NNX1dPUkRJRF9QUk9URUNURURfUElOID0gODgsCiBDU1NNX1dPUkRJRF9QVUJM
SUNfS0VZID0gODksCiBDU1NNX1dPUkRJRF9QVUJMSUNfS0VZX0ZST01fQ0VSVCA9IDkwLAogQ1NT
TV9XT1JESURfUSA9IDkxLAogQ1NTTV9XT1JESURfUkFOR0UgPSA5MiwKIENTU01fV09SRElEX1JF
VkFMID0gOTMsCiBDU1NNX1dPUkRJRF9SSVBFTUFDID0gOTQsCiBDU1NNX1dPUkRJRF9SSVBFTUQg
PSA5NSwKIENTU01fV09SRElEX1JJUEVNRDE2MCA9IDk2LAogQ1NTTV9XT1JESURfUlNBID0gOTcs
CiBDU1NNX1dPUkRJRF9SU0FfSVNPOTc5NiA9IDk4LAogQ1NTTV9XT1JESURfUlNBX1BLQ1MgPSA5
OSwKIENTU01fV09SRElEX1JTQV9QS0NTX01ENSA9IDEwMCwKIENTU01fV09SRElEX1JTQV9QS0NT
X1NIQTEgPSAxMDEsCiBDU1NNX1dPUkRJRF9SU0FfUEtDUzEgPSAxMDIsCiBDU1NNX1dPUkRJRF9S
U0FfUEtDUzFfTUQ1ID0gMTAzLAogQ1NTTV9XT1JESURfUlNBX1BLQ1MxX1NIQTEgPSAxMDQsCiBD
U1NNX1dPUkRJRF9SU0FfUEtDUzFfU0lHID0gMTA1LAogQ1NTTV9XT1JESURfUlNBX1JBVyA9IDEw
NiwKIENTU01fV09SRElEX1NEU0lWMSA9IDEwNywKIENTU01fV09SRElEX1NFUVVFTkNFID0gMTA4
LAogQ1NTTV9XT1JESURfU0VUID0gMTA5LAogQ1NTTV9XT1JESURfU0VYUFIgPSAxMTAsCiBDU1NN
X1dPUkRJRF9TSEExID0gMTExLAogQ1NTTV9XT1JESURfU0hBMVdJVEhEU0EgPSAxMTIsCiBDU1NN
X1dPUkRJRF9TSEExV0lUSEVDRFNBID0gMTEzLAogQ1NTTV9XT1JESURfU0hBMVdJVEhSU0EgPSAx
MTQsCiBDU1NNX1dPUkRJRF9TSUdOID0gMTE1LAogQ1NTTV9XT1JESURfU0lHTkFUVVJFID0gMTE2
LAogQ1NTTV9XT1JESURfU0lHTkVEX05PTkNFID0gMTE3LAogQ1NTTV9XT1JESURfU0lHTkVEX1NF
Q1JFVCA9IDExOCwKIENTU01fV09SRElEX1NQS0kgPSAxMTksCiBDU1NNX1dPUkRJRF9TVUJKRUNU
ID0gMTIwLAogQ1NTTV9XT1JESURfU1VCSkVDVF9JTkZPID0gMTIxLAogQ1NTTV9XT1JESURfVEFH
ID0gMTIyLAogQ1NTTV9XT1JESURfVEhSRVNIT0xEID0gMTIzLAogQ1NTTV9XT1JESURfVElNRSA9
IDEyNCwKIENTU01fV09SRElEX1VSSSA9IDEyNSwKIENTU01fV09SRElEX1ZFUlNJT04gPSAxMjYs
CiBDU1NNX1dPUkRJRF9YNTA5X0FUVFJJQlVURSA9IDEyNywKIENTU01fV09SRElEX1g1MDlWMSA9
IDEyOCwKIENTU01fV09SRElEX1g1MDlWMiA9IDEyOSwKIENTU01fV09SRElEX1g1MDlWMyA9IDEz
MCwKIENTU01fV09SRElEX1g5X0FUVFJJQlVURSA9IDEzMSwKIENTU01fV09SRElEX1ZFTkRPUl9T
VEFSVCA9IDB4MDAwMTAwMDAsCiBDU1NNX1dPUkRJRF9WRU5ET1JfRU5EID0gMHg3RkZGMDAwMAp9
OwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9MSVNUX0VMRU1FTlRfVFlQRSwgKkNTU01fTElTVF9FTEVN
RU5UX1RZUEVfUFRSOwplbnVtIHsKIENTU01fTElTVF9FTEVNRU5UX0RBVFVNID0gMHgwMCwKIENT
U01fTElTVF9FTEVNRU5UX1NVQkxJU1QgPSAweDAxLAogQ1NTTV9MSVNUX0VMRU1FTlRfV09SRElE
ID0gMHgwMgp9OwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9MSVNUX1RZUEUsICpDU1NNX0xJU1RfVFlQ
RV9QVFI7CmVudW0gewogQ1NTTV9MSVNUX1RZUEVfVU5LTk9XTiA9IDAsCiBDU1NNX0xJU1RfVFlQ
RV9DVVNUT00gPSAxLAogQ1NTTV9MSVNUX1RZUEVfU0VYUFIgPSAyCn07Cgp0eXBlZGVmIHN0cnVj
dCBjc3NtX2xpc3RfZWxlbWVudCAqQ1NTTV9MSVNUX0VMRU1FTlRfUFRSOwoKdHlwZWRlZiBzdHJ1
Y3QgY3NzbV9saXN0IHsKICAgIENTU01fTElTVF9UWVBFIExpc3RUeXBlOwogICAgQ1NTTV9MSVNU
X0VMRU1FTlRfUFRSIEhlYWQ7CiAgICBDU1NNX0xJU1RfRUxFTUVOVF9QVFIgVGFpbDsKfSBDU1NN
X0xJU1QsICpDU1NNX0xJU1RfUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9saXN0X2VsZW1lbnQg
ewogICAgc3RydWN0IGNzc21fbGlzdF9lbGVtZW50ICpOZXh0RWxlbWVudDsKIENTU01fV09SRElE
X1RZUEUgV29yZElEOwoKICAgIENTU01fTElTVF9FTEVNRU5UX1RZUEUgRWxlbWVudFR5cGU7CiAg
ICB1bmlvbiB7CiAgICAgICAgQ1NTTV9MSVNUIFN1Ymxpc3Q7CiAgICAgICAgQ1NTTV9EQVRBIFdv
cmQ7CiAgICB9IEVsZW1lbnQ7Cn0gQ1NTTV9MSVNUX0VMRU1FTlQ7Cgp0eXBlZGVmIHN0cnVjdCB7
CiBDU1NNX0xJU1QgSXNzdWVyOwogQ1NTTV9MSVNUIFN1YmplY3Q7CiBDU1NNX0JPT0wgRGVsZWdh
dGU7CiBDU1NNX0xJU1QgQXV0aG9yaXphdGlvblRhZzsKIENTU01fTElTVCBWYWxpZGl0eVBlcmlv
ZDsKfSBDU1NNX1RVUExFLCAqQ1NTTV9UVVBMRV9QVFI7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX3R1
cGxlZ3JvdXAgewogICAgdWludDMyIE51bWJlck9mVHVwbGVzOwogICAgQ1NTTV9UVVBMRV9QVFIg
VHVwbGVzOwp9IENTU01fVFVQTEVHUk9VUCwgKkNTU01fVFVQTEVHUk9VUF9QVFI7Cgp0eXBlZGVm
IENTU01fV09SRElEX1RZUEUgQ1NTTV9TQU1QTEVfVFlQRTsKZW51bSB7CiBDU1NNX1NBTVBMRV9U
WVBFX1BBU1NXT1JEID0gQ1NTTV9XT1JESURfUEFTU1dPUkQsCiBDU1NNX1NBTVBMRV9UWVBFX0hB
U0hFRF9QQVNTV09SRCA9IENTU01fV09SRElEX0hBU0hFRF9QQVNTV09SRCwKIENTU01fU0FNUExF
X1RZUEVfUFJPVEVDVEVEX1BBU1NXT1JEID0gQ1NTTV9XT1JESURfUFJPVEVDVEVEX1BBU1NXT1JE
LAogQ1NTTV9TQU1QTEVfVFlQRV9QUk9NUFRFRF9QQVNTV09SRCA9IENTU01fV09SRElEX1BST01Q
VEVEX1BBU1NXT1JELAogQ1NTTV9TQU1QTEVfVFlQRV9TSUdORURfTk9OQ0UgPSBDU1NNX1dPUkRJ
RF9TSUdORURfTk9OQ0UsCiBDU1NNX1NBTVBMRV9UWVBFX1NJR05FRF9TRUNSRVQgPSBDU1NNX1dP
UkRJRF9TSUdORURfU0VDUkVULAogQ1NTTV9TQU1QTEVfVFlQRV9CSU9NRVRSSUMgPSBDU1NNX1dP
UkRJRF9CSU9NRVRSSUMsCiBDU1NNX1NBTVBMRV9UWVBFX1BST1RFQ1RFRF9CSU9NRVRSSUMgPSBD
U1NNX1dPUkRJRF9QUk9URUNURURfQklPTUVUUklDLAogQ1NTTV9TQU1QTEVfVFlQRV9QUk9NUFRF
RF9CSU9NRVRSSUMgPSBDU1NNX1dPUkRJRF9QUk9NUFRFRF9CSU9NRVRSSUMsCiBDU1NNX1NBTVBM
RV9UWVBFX1RIUkVTSE9MRCA9IENTU01fV09SRElEX1RIUkVTSE9MRAp9OwoKdHlwZWRlZiBzdHJ1
Y3QgY3NzbV9zYW1wbGUgewogICAgQ1NTTV9MSVNUIFR5cGVkU2FtcGxlOwogICAgY29uc3QgQ1NT
TV9TVUJTRVJWSUNFX1VJRCAqVmVyaWZpZXI7Cn0gQ1NTTV9TQU1QTEUsICpDU1NNX1NBTVBMRV9Q
VFI7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX3NhbXBsZWdyb3VwIHsKICAgIHVpbnQzMiBOdW1iZXJP
ZlNhbXBsZXM7CiAgICBjb25zdCBDU1NNX1NBTVBMRSAqU2FtcGxlczsKfSBDU1NNX1NBTVBMRUdS
T1VQLCAqQ1NTTV9TQU1QTEVHUk9VUF9QVFI7Cgp0eXBlZGVmIHZvaWQgKiggKkNTU01fTUFMTE9D
KQogICAgKENTU01fU0laRSBzaXplLAogICAgIHZvaWQgKmFsbG9jcmVmKTsKCnR5cGVkZWYgdm9p
ZCAoICpDU1NNX0ZSRUUpCiAgICAodm9pZCAqbWVtYmxvY2ssCiAgICAgdm9pZCAqYWxsb2NyZWYp
OwoKdHlwZWRlZiB2b2lkICooICpDU1NNX1JFQUxMT0MpCiAgICAodm9pZCAqbWVtYmxvY2ssCiAg
ICAgQ1NTTV9TSVpFIHNpemUsCiAgICAgdm9pZCAqYWxsb2NyZWYpOwoKdHlwZWRlZiB2b2lkICoo
ICpDU1NNX0NBTExPQykKICAgICh1aW50MzIgbnVtLAogICAgIENTU01fU0laRSBzaXplLAogICAg
IHZvaWQgKmFsbG9jcmVmKTsKCnR5cGVkZWYgc3RydWN0IGNzc21fbWVtb3J5X2Z1bmNzIHsKICAg
IENTU01fTUFMTE9DIG1hbGxvY19mdW5jOwogICAgQ1NTTV9GUkVFIGZyZWVfZnVuYzsKICAgIENT
U01fUkVBTExPQyByZWFsbG9jX2Z1bmM7CiAgICBDU1NNX0NBTExPQyBjYWxsb2NfZnVuYzsKICAg
IHZvaWQgKkFsbG9jUmVmOwp9IENTU01fTUVNT1JZX0ZVTkNTLCAqQ1NTTV9NRU1PUllfRlVOQ1Nf
UFRSOwoKdHlwZWRlZiBDU1NNX01FTU9SWV9GVU5DUyBDU1NNX0FQSV9NRU1PUllfRlVOQ1M7CnR5
cGVkZWYgQ1NTTV9BUElfTUVNT1JZX0ZVTkNTICpDU1NNX0FQSV9NRU1PUllfRlVOQ1NfUFRSOwoK
dHlwZWRlZiBDU1NNX1JFVFVSTiAoICogQ1NTTV9DSEFMTEVOR0VfQ0FMTEJBQ0spCiAgICAoY29u
c3QgQ1NTTV9MSVNUICpDaGFsbGVuZ2UsCiAgICAgQ1NTTV9TQU1QTEVHUk9VUF9QVFIgUmVzcG9u
c2UsCiAgICAgdm9pZCAqQ2FsbGVyQ3R4LAogICAgIGNvbnN0IENTU01fTUVNT1JZX0ZVTkNTICpN
ZW1GdW5jcyk7Cgp0eXBlZGVmIHVpbnQzMiBDU1NNX0NFUlRfVFlQRSwgKkNTU01fQ0VSVF9UWVBF
X1BUUjsKZW51bSB7CiAgICBDU1NNX0NFUlRfVU5LTk9XTiA9IDB4MDAsCiAgICBDU1NNX0NFUlRf
WF81MDl2MSA9IDB4MDEsCiAgICBDU1NNX0NFUlRfWF81MDl2MiA9IDB4MDIsCiAgICBDU1NNX0NF
UlRfWF81MDl2MyA9IDB4MDMsCiAgICBDU1NNX0NFUlRfUEdQID0gMHgwNCwKICAgIENTU01fQ0VS
VF9TUEtJID0gMHgwNSwKICAgIENTU01fQ0VSVF9TRFNJdjEgPSAweDA2LAogICAgQ1NTTV9DRVJU
X0ludGVsID0gMHgwOCwKICAgIENTU01fQ0VSVF9YXzUwOV9BVFRSSUJVVEUgPSAweDA5LAogICAg
Q1NTTV9DRVJUX1g5X0FUVFJJQlVURSA9IDB4MEEsCiAgICBDU1NNX0NFUlRfVFVQTEUgPSAweDBC
LAogICAgQ1NTTV9DRVJUX0FDTF9FTlRSWSA9IDB4MEMsCiAgICBDU1NNX0NFUlRfTVVMVElQTEUg
PSAweDdGRkUsCiAgICBDU1NNX0NFUlRfTEFTVCA9IDB4N0ZGRiwKCgoKIENTU01fQ0xfQ1VTVE9N
X0NFUlRfVFlQRSA9IDB4MDgwMDAKfTsKCnR5cGVkZWYgdWludDMyIENTU01fQ0VSVF9FTkNPRElO
RywgKkNTU01fQ0VSVF9FTkNPRElOR19QVFI7CmVudW0gewogICAgQ1NTTV9DRVJUX0VOQ09ESU5H
X1VOS05PV04gPSAweDAwLAogICAgQ1NTTV9DRVJUX0VOQ09ESU5HX0NVU1RPTSA9IDB4MDEsCiAg
ICBDU1NNX0NFUlRfRU5DT0RJTkdfQkVSID0gMHgwMiwKICAgIENTU01fQ0VSVF9FTkNPRElOR19E
RVIgPSAweDAzLAogICAgQ1NTTV9DRVJUX0VOQ09ESU5HX05EUiA9IDB4MDQsCiAgICBDU1NNX0NF
UlRfRU5DT0RJTkdfU0VYUFIgPSAweDA1LAogICAgQ1NTTV9DRVJUX0VOQ09ESU5HX1BHUCA9IDB4
MDYsCiAgICBDU1NNX0NFUlRfRU5DT0RJTkdfTVVMVElQTEUgPSAweDdGRkUsCiAgICBDU1NNX0NF
UlRfRU5DT0RJTkdfTEFTVCA9IDB4N0ZGRiwKCgoKIENTU01fQ0xfQ1VTVE9NX0NFUlRfRU5DT0RJ
TkcgPSAweDgwMDAKfTsKCnR5cGVkZWYgc3RydWN0IGNzc21fZW5jb2RlZF9jZXJ0IHsKICAgIENT
U01fQ0VSVF9UWVBFIENlcnRUeXBlOwogICAgQ1NTTV9DRVJUX0VOQ09ESU5HIENlcnRFbmNvZGlu
ZzsKICAgIENTU01fREFUQSBDZXJ0QmxvYjsKfSBDU1NNX0VOQ09ERURfQ0VSVCwgKkNTU01fRU5D
T0RFRF9DRVJUX1BUUjsKCnR5cGVkZWYgdWludDMyIENTU01fQ0VSVF9QQVJTRV9GT1JNQVQsICpD
U1NNX0NFUlRfUEFSU0VfRk9STUFUX1BUUjsKZW51bSB7CiBDU1NNX0NFUlRfUEFSU0VfRk9STUFU
X05PTkUgPSAweDAwLAogQ1NTTV9DRVJUX1BBUlNFX0ZPUk1BVF9DVVNUT00gPSAweDAxLAogQ1NT
TV9DRVJUX1BBUlNFX0ZPUk1BVF9TRVhQUiA9IDB4MDIsCiBDU1NNX0NFUlRfUEFSU0VfRk9STUFU
X0NPTVBMRVggPSAweDAzLAogQ1NTTV9DRVJUX1BBUlNFX0ZPUk1BVF9PSURfTkFNRUQgPSAweDA0
LAogQ1NTTV9DRVJUX1BBUlNFX0ZPUk1BVF9UVVBMRSA9IDB4MDUsCiBDU1NNX0NFUlRfUEFSU0Vf
Rk9STUFUX01VTFRJUExFID0gMHg3RkZFLAoKCiBDU1NNX0NFUlRfUEFSU0VfRk9STUFUX0xBU1Qg
PSAweDdGRkYsCgoKCgogQ1NTTV9DTF9DVVNUT01fQ0VSVF9QQVJTRV9GT1JNQVQgPSAweDgwMDAK
fTsKCnR5cGVkZWYgc3RydWN0IGNzc21fcGFyc2VkX2NlcnQgewogICAgQ1NTTV9DRVJUX1RZUEUg
Q2VydFR5cGU7CiAgICBDU1NNX0NFUlRfUEFSU0VfRk9STUFUIFBhcnNlZENlcnRGb3JtYXQ7Cgog
ICAgdm9pZCAqUGFyc2VkQ2VydDsKfSBDU1NNX1BBUlNFRF9DRVJULCAqQ1NTTV9QQVJTRURfQ0VS
VF9QVFI7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2NlcnRfcGFpciB7CiAgICBDU1NNX0VOQ09ERURf
Q0VSVCBFbmNvZGVkQ2VydDsKICAgIENTU01fUEFSU0VEX0NFUlQgUGFyc2VkQ2VydDsKfSBDU1NN
X0NFUlRfUEFJUiwgKkNTU01fQ0VSVF9QQUlSX1BUUjsKCnR5cGVkZWYgdWludDMyIENTU01fQ0VS
VEdST1VQX1RZUEUsICpDU1NNX0NFUlRHUk9VUF9UWVBFX1BUUjsKZW51bSB7CiBDU1NNX0NFUlRH
Uk9VUF9EQVRBID0gMHgwMCwKIENTU01fQ0VSVEdST1VQX0VOQ09ERURfQ0VSVCA9IDB4MDEsCiBD
U1NNX0NFUlRHUk9VUF9QQVJTRURfQ0VSVCA9IDB4MDIsCiBDU1NNX0NFUlRHUk9VUF9DRVJUX1BB
SVIgPSAweDAzCn07Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2NlcnRncm91cCB7CiAgICBDU1NNX0NF
UlRfVFlQRSBDZXJ0VHlwZTsKICAgIENTU01fQ0VSVF9FTkNPRElORyBDZXJ0RW5jb2Rpbmc7CiAg
ICB1aW50MzIgTnVtQ2VydHM7CiAgICB1bmlvbiB7CiAgICAgICAgQ1NTTV9EQVRBX1BUUiBDZXJ0
TGlzdDsKICAgICAgICBDU1NNX0VOQ09ERURfQ0VSVF9QVFIgRW5jb2RlZENlcnRMaXN0OwoKICAg
ICAgICBDU1NNX1BBUlNFRF9DRVJUX1BUUiBQYXJzZWRDZXJ0TGlzdDsKCiAgICAgICAgQ1NTTV9D
RVJUX1BBSVJfUFRSIFBhaXJDZXJ0TGlzdDsKCiAgICB9IEdyb3VwTGlzdDsKICAgIENTU01fQ0VS
VEdST1VQX1RZUEUgQ2VydEdyb3VwVHlwZTsKCiAgICB2b2lkICpSZXNlcnZlZDsKfSBDU1NNX0NF
UlRHUk9VUCwgKkNTU01fQ0VSVEdST1VQX1BUUjsKCnR5cGVkZWYgc3RydWN0IGNzc21fYmFzZV9j
ZXJ0cyB7CiAgICBDU1NNX1RQX0hBTkRMRSBUUEhhbmRsZTsKICAgIENTU01fQ0xfSEFORExFIENM
SGFuZGxlOwogICAgQ1NTTV9DRVJUR1JPVVAgQ2VydHM7Cn0gQ1NTTV9CQVNFX0NFUlRTLCAqQ1NT
TV9CQVNFX0NFUlRTX1BUUjsKCnR5cGVkZWYgc3RydWN0IGNzc21fYWNjZXNzX2NyZWRlbnRpYWxz
IHsKICAgIENTU01fU1RSSU5HIEVudHJ5VGFnOwogICAgQ1NTTV9CQVNFX0NFUlRTIEJhc2VDZXJ0
czsKICAgIENTU01fU0FNUExFR1JPVVAgU2FtcGxlczsKICAgIENTU01fQ0hBTExFTkdFX0NBTExC
QUNLIENhbGxiYWNrOwogICAgdm9pZCAqQ2FsbGVyQ3R4Owp9IENTU01fQUNDRVNTX0NSRURFTlRJ
QUxTLCAqQ1NTTV9BQ0NFU1NfQ1JFREVOVElBTFNfUFRSOwoKdHlwZWRlZiBzaW50MzIgQ1NTTV9B
Q0xfU1VCSkVDVF9UWVBFOwplbnVtIHsKIENTU01fQUNMX1NVQkpFQ1RfVFlQRV9BTlkgPSBDU1NN
X1dPUkRJRF9fU1RBUl8sCiBDU1NNX0FDTF9TVUJKRUNUX1RZUEVfVEhSRVNIT0xEID0gQ1NTTV9X
T1JESURfVEhSRVNIT0xELAogQ1NTTV9BQ0xfU1VCSkVDVF9UWVBFX1BBU1NXT1JEID0gQ1NTTV9X
T1JESURfUEFTU1dPUkQsCiBDU1NNX0FDTF9TVUJKRUNUX1RZUEVfUFJPVEVDVEVEX1BBU1NXT1JE
ID0gQ1NTTV9XT1JESURfUFJPVEVDVEVEX1BBU1NXT1JELAogQ1NTTV9BQ0xfU1VCSkVDVF9UWVBF
X1BST01QVEVEX1BBU1NXT1JEID0gQ1NTTV9XT1JESURfUFJPTVBURURfUEFTU1dPUkQsCiBDU1NN
X0FDTF9TVUJKRUNUX1RZUEVfUFVCTElDX0tFWSA9IENTU01fV09SRElEX1BVQkxJQ19LRVksCiBD
U1NNX0FDTF9TVUJKRUNUX1RZUEVfSEFTSEVEX1NVQkpFQ1QgPSBDU1NNX1dPUkRJRF9IQVNIRURf
U1VCSkVDVCwKIENTU01fQUNMX1NVQkpFQ1RfVFlQRV9CSU9NRVRSSUMgPSBDU1NNX1dPUkRJRF9C
SU9NRVRSSUMsCiBDU1NNX0FDTF9TVUJKRUNUX1RZUEVfUFJPVEVDVEVEX0JJT01FVFJJQyA9IENT
U01fV09SRElEX1BST1RFQ1RFRF9CSU9NRVRSSUMsCiBDU1NNX0FDTF9TVUJKRUNUX1RZUEVfUFJP
TVBURURfQklPTUVUUklDID0gQ1NTTV9XT1JESURfUFJPTVBURURfQklPTUVUUklDLAogQ1NTTV9B
Q0xfU1VCSkVDVF9UWVBFX0xPR0lOX05BTUUgPSBDU1NNX1dPUkRJRF9MT0dJTl9OQU1FLAogQ1NT
TV9BQ0xfU1VCSkVDVF9UWVBFX0VYVF9QQU1fTkFNRSA9IENTU01fV09SRElEX1BBTV9OQU1FCn07
CgoKdHlwZWRlZiBzaW50MzIgQ1NTTV9BQ0xfQVVUSE9SSVpBVElPTl9UQUc7CmVudW0gewoKCiBD
U1NNX0FDTF9BVVRIT1JJWkFUSU9OX1RBR19WRU5ET1JfREVGSU5FRF9TVEFSVCA9IDB4MDAwMTAw
MDAsCgoKIENTU01fQUNMX0FVVEhPUklaQVRJT05fQU5ZID0gQ1NTTV9XT1JESURfX1NUQVJfLAoK
IENTU01fQUNMX0FVVEhPUklaQVRJT05fTE9HSU4gPSBDU1NNX1dPUkRJRF9MT0dJTiwKIENTU01f
QUNMX0FVVEhPUklaQVRJT05fR0VOS0VZID0gQ1NTTV9XT1JESURfR0VOS0VZLAogQ1NTTV9BQ0xf
QVVUSE9SSVpBVElPTl9ERUxFVEUgPSBDU1NNX1dPUkRJRF9ERUxFVEUsCiBDU1NNX0FDTF9BVVRI
T1JJWkFUSU9OX0VYUE9SVF9XUkFQUEVEID0gQ1NTTV9XT1JESURfRVhQT1JUX1dSQVBQRUQsCiBD
U1NNX0FDTF9BVVRIT1JJWkFUSU9OX0VYUE9SVF9DTEVBUiA9IENTU01fV09SRElEX0VYUE9SVF9D
TEVBUiwKIENTU01fQUNMX0FVVEhPUklaQVRJT05fSU1QT1JUX1dSQVBQRUQgPSBDU1NNX1dPUkRJ
RF9JTVBPUlRfV1JBUFBFRCwKIENTU01fQUNMX0FVVEhPUklaQVRJT05fSU1QT1JUX0NMRUFSID0g
Q1NTTV9XT1JESURfSU1QT1JUX0NMRUFSLAogQ1NTTV9BQ0xfQVVUSE9SSVpBVElPTl9TSUdOID0g
Q1NTTV9XT1JESURfU0lHTiwKIENTU01fQUNMX0FVVEhPUklaQVRJT05fRU5DUllQVCA9IENTU01f
V09SRElEX0VOQ1JZUFQsCiBDU1NNX0FDTF9BVVRIT1JJWkFUSU9OX0RFQ1JZUFQgPSBDU1NNX1dP
UkRJRF9ERUNSWVBULAogQ1NTTV9BQ0xfQVVUSE9SSVpBVElPTl9NQUMgPSBDU1NNX1dPUkRJRF9N
QUMsCiBDU1NNX0FDTF9BVVRIT1JJWkFUSU9OX0RFUklWRSA9IENTU01fV09SRElEX0RFUklWRSwK
CiBDU1NNX0FDTF9BVVRIT1JJWkFUSU9OX0RCU19DUkVBVEUgPSBDU1NNX1dPUkRJRF9EQlNfQ1JF
QVRFLAogQ1NTTV9BQ0xfQVVUSE9SSVpBVElPTl9EQlNfREVMRVRFID0gQ1NTTV9XT1JESURfREJT
X0RFTEVURSwKIENTU01fQUNMX0FVVEhPUklaQVRJT05fREJfUkVBRCA9IENTU01fV09SRElEX0RC
X1JFQUQsCiBDU1NNX0FDTF9BVVRIT1JJWkFUSU9OX0RCX0lOU0VSVCA9IENTU01fV09SRElEX0RC
X0lOU0VSVCwKIENTU01fQUNMX0FVVEhPUklaQVRJT05fREJfTU9ESUZZID0gQ1NTTV9XT1JESURf
REJfTU9ESUZZLAogQ1NTTV9BQ0xfQVVUSE9SSVpBVElPTl9EQl9ERUxFVEUgPSBDU1NNX1dPUkRJ
RF9EQl9ERUxFVEUKfTsKCnR5cGVkZWYgc3RydWN0IGNzc21fYXV0aG9yaXphdGlvbmdyb3VwIHsK
ICAgIHVpbnQzMiBOdW1iZXJPZkF1dGhUYWdzOwogICAgQ1NTTV9BQ0xfQVVUSE9SSVpBVElPTl9U
QUcgKkF1dGhUYWdzOwp9IENTU01fQVVUSE9SSVpBVElPTkdST1VQLCAqQ1NTTV9BVVRIT1JJWkFU
SU9OR1JPVVBfUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9hY2xfdmFsaWRpdHlfcGVyaW9kIHsK
ICAgIENTU01fREFUQSBTdGFydERhdGU7CiAgICBDU1NNX0RBVEEgRW5kRGF0ZTsKfSBDU1NNX0FD
TF9WQUxJRElUWV9QRVJJT0QsICpDU1NNX0FDTF9WQUxJRElUWV9QRVJJT0RfUFRSOwoKdHlwZWRl
ZiBzdHJ1Y3QgY3NzbV9hY2xfZW50cnlfcHJvdG90eXBlIHsKICAgIENTU01fTElTVCBUeXBlZFN1
YmplY3Q7CiAgICBDU1NNX0JPT0wgRGVsZWdhdGU7CiAgICBDU1NNX0FVVEhPUklaQVRJT05HUk9V
UCBBdXRob3JpemF0aW9uOwogICAgQ1NTTV9BQ0xfVkFMSURJVFlfUEVSSU9EIFRpbWVSYW5nZTsK
ICAgIENTU01fU1RSSU5HIEVudHJ5VGFnOwp9IENTU01fQUNMX0VOVFJZX1BST1RPVFlQRSwgKkNT
U01fQUNMX0VOVFJZX1BST1RPVFlQRV9QVFI7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2FjbF9vd25l
cl9wcm90b3R5cGUgewogICAgQ1NTTV9MSVNUIFR5cGVkU3ViamVjdDsKICAgIENTU01fQk9PTCBE
ZWxlZ2F0ZTsKfSBDU1NNX0FDTF9PV05FUl9QUk9UT1RZUEUsICpDU1NNX0FDTF9PV05FUl9QUk9U
T1RZUEVfUFRSOwoKdHlwZWRlZiBDU1NNX1JFVFVSTiAoICogQ1NTTV9BQ0xfU1VCSkVDVF9DQUxM
QkFDSykKICAgIChjb25zdCBDU1NNX0xJU1QgKlN1YmplY3RSZXF1ZXN0LAogICAgIENTU01fTElT
VF9QVFIgU3ViamVjdFJlc3BvbnNlLAogICAgIHZvaWQgKkNhbGxlckNvbnRleHQsCiAgICAgY29u
c3QgQ1NTTV9NRU1PUllfRlVOQ1MgKk1lbUZ1bmNzKTsKCnR5cGVkZWYgc3RydWN0IGNzc21fYWNs
X2VudHJ5X2lucHV0IHsKICAgIENTU01fQUNMX0VOVFJZX1BST1RPVFlQRSBQcm90b3R5cGU7CiAg
ICBDU1NNX0FDTF9TVUJKRUNUX0NBTExCQUNLIENhbGxiYWNrOwogICAgdm9pZCAqQ2FsbGVyQ29u
dGV4dDsKfSBDU1NNX0FDTF9FTlRSWV9JTlBVVCwgKkNTU01fQUNMX0VOVFJZX0lOUFVUX1BUUjsK
CnR5cGVkZWYgc3RydWN0IGNzc21fcmVzb3VyY2VfY29udHJvbF9jb250ZXh0IHsKICAgIENTU01f
QUNDRVNTX0NSRURFTlRJQUxTX1BUUiBBY2Nlc3NDcmVkOwogICAgQ1NTTV9BQ0xfRU5UUllfSU5Q
VVQgSW5pdGlhbEFjbEVudHJ5Owp9IENTU01fUkVTT1VSQ0VfQ09OVFJPTF9DT05URVhULCAqQ1NT
TV9SRVNPVVJDRV9DT05UUk9MX0NPTlRFWFRfUFRSOwoKdHlwZWRlZiBDU1NNX0hBTkRMRSBDU1NN
X0FDTF9IQU5ETEU7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2FjbF9lbnRyeV9pbmZvIHsKICAgIENT
U01fQUNMX0VOVFJZX1BST1RPVFlQRSBFbnRyeVB1YmxpY0luZm87CiAgICBDU1NNX0FDTF9IQU5E
TEUgRW50cnlIYW5kbGU7Cn0gQ1NTTV9BQ0xfRU5UUllfSU5GTywgKkNTU01fQUNMX0VOVFJZX0lO
Rk9fUFRSOwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9BQ0xfRURJVF9NT0RFOwplbnVtIHsKIENTU01f
QUNMX0VESVRfTU9ERV9BREQgPSAxLAogQ1NTTV9BQ0xfRURJVF9NT0RFX0RFTEVURSA9IDIsCiBD
U1NNX0FDTF9FRElUX01PREVfUkVQTEFDRSA9IDMKfTsKCnR5cGVkZWYgc3RydWN0IGNzc21fYWNs
X2VkaXQgewogICAgQ1NTTV9BQ0xfRURJVF9NT0RFIEVkaXRNb2RlOwogICAgQ1NTTV9BQ0xfSEFO
RExFIE9sZEVudHJ5SGFuZGxlOwogICAgY29uc3QgQ1NTTV9BQ0xfRU5UUllfSU5QVVQgKk5ld0Vu
dHJ5Owp9IENTU01fQUNMX0VESVQsICpDU1NNX0FDTF9FRElUX1BUUjsKCgoKCnR5cGVkZWYgdm9p
ZCAoICpDU1NNX1BST0NfQUREUikgKCk7Cgp0eXBlZGVmIENTU01fUFJPQ19BRERSICpDU1NNX1BS
T0NfQUREUl9QVFI7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2Z1bmNfbmFtZV9hZGRyIHsKICAgIENT
U01fU1RSSU5HIE5hbWU7CiAgICBDU1NNX1BST0NfQUREUiBBZGRyZXNzOwp9IENTU01fRlVOQ19O
QU1FX0FERFIsICpDU1NNX0ZVTkNfTkFNRV9BRERSX1BUUjsKCgoKCnR5cGVkZWYgc3RydWN0IGNz
c21fZGF0ZSB7CiAgICB1aW50OCBZZWFyWzRdOwogICAgdWludDggTW9udGhbMl07CiAgICB1aW50
OCBEYXlbMl07Cn0gQ1NTTV9EQVRFLCAqQ1NTTV9EQVRFX1BUUjsKCnR5cGVkZWYgc3RydWN0IGNz
c21fcmFuZ2UgewogICAgdWludDMyIE1pbjsKICAgIHVpbnQzMiBNYXg7Cn0gQ1NTTV9SQU5HRSwg
KkNTU01fUkFOR0VfUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9xdWVyeV9zaXplX2RhdGEgewog
ICAgdWludDMyIFNpemVJbnB1dEJsb2NrOwogICAgdWludDMyIFNpemVPdXRwdXRCbG9jazsKfSBD
U1NNX1FVRVJZX1NJWkVfREFUQSwgKkNTU01fUVVFUllfU0laRV9EQVRBX1BUUjsKCnR5cGVkZWYg
dWludDMyIENTU01fSEVBREVSVkVSU0lPTjsKZW51bSB7CiBDU1NNX0tFWUhFQURFUl9WRVJTSU9O
ID0gMgp9OwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9rZXlfc2l6ZSB7CiAgICB1aW50MzIgTG9naWNh
bEtleVNpemVJbkJpdHM7CiAgICB1aW50MzIgRWZmZWN0aXZlS2V5U2l6ZUluQml0czsKfSBDU1NN
X0tFWV9TSVpFLCAqQ1NTTV9LRVlfU0laRV9QVFI7Cgp0eXBlZGVmIHVpbnQzMiBDU1NNX0tFWUJM
T0JfVFlQRTsKZW51bSB7CiBDU1NNX0tFWUJMT0JfUkFXID0gMCwKIENTU01fS0VZQkxPQl9SRUZF
UkVOQ0UgPSAyLAogQ1NTTV9LRVlCTE9CX1dSQVBQRUQgPSAzLAogQ1NTTV9LRVlCTE9CX09USEVS
ID0gMHhGRkZGRkZGRgp9OwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9LRVlCTE9CX0ZPUk1BVDsKZW51
bSB7CgogQ1NTTV9LRVlCTE9CX1JBV19GT1JNQVRfTk9ORSA9IDAsCgogQ1NTTV9LRVlCTE9CX1JB
V19GT1JNQVRfUEtDUzEgPSAxLAogQ1NTTV9LRVlCTE9CX1JBV19GT1JNQVRfUEtDUzMgPSAyLAog
Q1NTTV9LRVlCTE9CX1JBV19GT1JNQVRfTVNDQVBJID0gMywKIENTU01fS0VZQkxPQl9SQVdfRk9S
TUFUX1BHUCA9IDQsCiBDU1NNX0tFWUJMT0JfUkFXX0ZPUk1BVF9GSVBTMTg2ID0gNSwKIENTU01f
S0VZQkxPQl9SQVdfRk9STUFUX0JTQUZFID0gNiwKIENTU01fS0VZQkxPQl9SQVdfRk9STUFUX0ND
QSA9IDksCiBDU1NNX0tFWUJMT0JfUkFXX0ZPUk1BVF9QS0NTOCA9IDEwLAogQ1NTTV9LRVlCTE9C
X1JBV19GT1JNQVRfU1BLSSA9IDExLAogQ1NTTV9LRVlCTE9CX1JBV19GT1JNQVRfT0NURVRfU1RS
SU5HID0gMTIsCiBDU1NNX0tFWUJMT0JfUkFXX0ZPUk1BVF9PVEhFUiA9IDB4RkZGRkZGRkYKfTsK
ZW51bSB7CgogQ1NTTV9LRVlCTE9CX1dSQVBQRURfRk9STUFUX05PTkUgPSAwLAoKIENTU01fS0VZ
QkxPQl9XUkFQUEVEX0ZPUk1BVF9QS0NTOCA9IDEsCiBDU1NNX0tFWUJMT0JfV1JBUFBFRF9GT1JN
QVRfUEtDUzcgPSAyLAogQ1NTTV9LRVlCTE9CX1dSQVBQRURfRk9STUFUX01TQ0FQSSA9IDMsCiBD
U1NNX0tFWUJMT0JfV1JBUFBFRF9GT1JNQVRfT1RIRVIgPSAweEZGRkZGRkZGCn07CmVudW0gewoK
IENTU01fS0VZQkxPQl9SRUZfRk9STUFUX0lOVEVHRVIgPSAwLAogQ1NTTV9LRVlCTE9CX1JFRl9G
T1JNQVRfU1RSSU5HID0gMSwKIENTU01fS0VZQkxPQl9SRUZfRk9STUFUX1NQS0kgPSAyLAoKIENT
U01fS0VZQkxPQl9SRUZfRk9STUFUX09USEVSID0gMHhGRkZGRkZGRgp9OwoKdHlwZWRlZiB1aW50
MzIgQ1NTTV9LRVlDTEFTUzsKZW51bSB7CiBDU1NNX0tFWUNMQVNTX1BVQkxJQ19LRVkgPSAwLAog
Q1NTTV9LRVlDTEFTU19QUklWQVRFX0tFWSA9IDEsCiBDU1NNX0tFWUNMQVNTX1NFU1NJT05fS0VZ
ID0gMiwKIENTU01fS0VZQ0xBU1NfU0VDUkVUX1BBUlQgPSAzLAogQ1NTTV9LRVlDTEFTU19PVEhF
UiA9IDB4RkZGRkZGRkYKfTsKCnR5cGVkZWYgdWludDMyIENTU01fS0VZQVRUUl9GTEFHUzsKZW51
bSB7CgogQ1NTTV9LRVlBVFRSX1JFVFVSTl9ERUZBVUxUID0gMHgwMDAwMDAwMCwKIENTU01fS0VZ
QVRUUl9SRVRVUk5fREFUQSA9IDB4MTAwMDAwMDAsCiBDU1NNX0tFWUFUVFJfUkVUVVJOX1JFRiA9
IDB4MjAwMDAwMDAsCiBDU1NNX0tFWUFUVFJfUkVUVVJOX05PTkUgPSAweDQwMDAwMDAwLAoKIENT
U01fS0VZQVRUUl9QRVJNQU5FTlQgPSAweDAwMDAwMDAxLAogQ1NTTV9LRVlBVFRSX1BSSVZBVEUg
PSAweDAwMDAwMDAyLAogQ1NTTV9LRVlBVFRSX01PRElGSUFCTEUgPSAweDAwMDAwMDA0LAogQ1NT
TV9LRVlBVFRSX1NFTlNJVElWRSA9IDB4MDAwMDAwMDgsCiBDU1NNX0tFWUFUVFJfRVhUUkFDVEFC
TEUgPSAweDAwMDAwMDIwLAoKIENTU01fS0VZQVRUUl9BTFdBWVNfU0VOU0lUSVZFID0gMHgwMDAw
MDAxMCwKIENTU01fS0VZQVRUUl9ORVZFUl9FWFRSQUNUQUJMRSA9IDB4MDAwMDAwNDAKfTsKCnR5
cGVkZWYgdWludDMyIENTU01fS0VZVVNFOwplbnVtIHsKIENTU01fS0VZVVNFX0FOWSA9IDB4ODAw
MDAwMDAsCiBDU1NNX0tFWVVTRV9FTkNSWVBUID0gMHgwMDAwMDAwMSwKIENTU01fS0VZVVNFX0RF
Q1JZUFQgPSAweDAwMDAwMDAyLAogQ1NTTV9LRVlVU0VfU0lHTiA9IDB4MDAwMDAwMDQsCiBDU1NN
X0tFWVVTRV9WRVJJRlkgPSAweDAwMDAwMDA4LAogQ1NTTV9LRVlVU0VfU0lHTl9SRUNPVkVSID0g
MHgwMDAwMDAxMCwKIENTU01fS0VZVVNFX1ZFUklGWV9SRUNPVkVSID0gMHgwMDAwMDAyMCwKIENT
U01fS0VZVVNFX1dSQVAgPSAweDAwMDAwMDQwLAogQ1NTTV9LRVlVU0VfVU5XUkFQID0gMHgwMDAw
MDA4MCwKIENTU01fS0VZVVNFX0RFUklWRSA9IDB4MDAwMDAxMDAKfTsKCnR5cGVkZWYgdWludDMy
IENTU01fQUxHT1JJVEhNUzsKZW51bSB7CiBDU1NNX0FMR0lEX05PTkUgPSAwLAogQ1NTTV9BTEdJ
RF9DVVNUT00gPSBDU1NNX0FMR0lEX05PTkUgKyAxLAogQ1NTTV9BTEdJRF9ESCA9IENTU01fQUxH
SURfTk9ORSArIDIsCiBDU1NNX0FMR0lEX1BIID0gQ1NTTV9BTEdJRF9OT05FICsgMywKIENTU01f
QUxHSURfS0VBID0gQ1NTTV9BTEdJRF9OT05FICsgNCwKIENTU01fQUxHSURfTUQyID0gQ1NTTV9B
TEdJRF9OT05FICsgNSwKIENTU01fQUxHSURfTUQ0ID0gQ1NTTV9BTEdJRF9OT05FICsgNiwKIENT
U01fQUxHSURfTUQ1ID0gQ1NTTV9BTEdJRF9OT05FICsgNywKIENTU01fQUxHSURfU0hBMSA9IENT
U01fQUxHSURfTk9ORSArIDgsCiBDU1NNX0FMR0lEX05IQVNIID0gQ1NTTV9BTEdJRF9OT05FICsg
OSwKIENTU01fQUxHSURfSEFWQUwgPSBDU1NNX0FMR0lEX05PTkUgKyAxMCwKIENTU01fQUxHSURf
UklQRU1EID0gQ1NTTV9BTEdJRF9OT05FICsgMTEsCiBDU1NNX0FMR0lEX0lCQ0hBU0ggPSBDU1NN
X0FMR0lEX05PTkUgKyAxMiwKIENTU01fQUxHSURfUklQRU1BQyA9IENTU01fQUxHSURfTk9ORSAr
IDEzLAogQ1NTTV9BTEdJRF9ERVMgPSBDU1NNX0FMR0lEX05PTkUgKyAxNCwKIENTU01fQUxHSURf
REVTWCA9IENTU01fQUxHSURfTk9ORSArIDE1LAogQ1NTTV9BTEdJRF9SREVTID0gQ1NTTV9BTEdJ
RF9OT05FICsgMTYsCiBDU1NNX0FMR0lEXzNERVNfM0tFWV9FREUgPSBDU1NNX0FMR0lEX05PTkUg
KyAxNywKIENTU01fQUxHSURfM0RFU18yS0VZX0VERSA9IENTU01fQUxHSURfTk9ORSArIDE4LAog
Q1NTTV9BTEdJRF8zREVTXzFLRVlfRUVFID0gQ1NTTV9BTEdJRF9OT05FICsgMTksCiBDU1NNX0FM
R0lEXzNERVNfM0tFWSA9IENTU01fQUxHSURfM0RFU18zS0VZX0VERSwKIENTU01fQUxHSURfM0RF
U18zS0VZX0VFRSA9IENTU01fQUxHSURfTk9ORSArIDIwLAogQ1NTTV9BTEdJRF8zREVTXzJLRVkg
PSBDU1NNX0FMR0lEXzNERVNfMktFWV9FREUsCiBDU1NNX0FMR0lEXzNERVNfMktFWV9FRUUgPSBD
U1NNX0FMR0lEX05PTkUgKyAyMSwKIENTU01fQUxHSURfM0RFU18xS0VZID0gQ1NTTV9BTEdJRF8z
REVTXzNLRVlfRUVFLAogQ1NTTV9BTEdJRF9JREVBID0gQ1NTTV9BTEdJRF9OT05FICsgMjIsCiBD
U1NNX0FMR0lEX1JDMiA9IENTU01fQUxHSURfTk9ORSArIDIzLAogQ1NTTV9BTEdJRF9SQzUgPSBD
U1NNX0FMR0lEX05PTkUgKyAyNCwKIENTU01fQUxHSURfUkM0ID0gQ1NTTV9BTEdJRF9OT05FICsg
MjUsCiBDU1NNX0FMR0lEX1NFQUwgPSBDU1NNX0FMR0lEX05PTkUgKyAyNiwKIENTU01fQUxHSURf
Q0FTVCA9IENTU01fQUxHSURfTk9ORSArIDI3LAogQ1NTTV9BTEdJRF9CTE9XRklTSCA9IENTU01f
QUxHSURfTk9ORSArIDI4LAogQ1NTTV9BTEdJRF9TS0lQSkFDSyA9IENTU01fQUxHSURfTk9ORSAr
IDI5LAogQ1NTTV9BTEdJRF9MVUNJRkVSID0gQ1NTTV9BTEdJRF9OT05FICsgMzAsCiBDU1NNX0FM
R0lEX01BRFJZR0EgPSBDU1NNX0FMR0lEX05PTkUgKyAzMSwKIENTU01fQUxHSURfRkVBTCA9IENT
U01fQUxHSURfTk9ORSArIDMyLAogQ1NTTV9BTEdJRF9SRURPQyA9IENTU01fQUxHSURfTk9ORSAr
IDMzLAogQ1NTTV9BTEdJRF9SRURPQzMgPSBDU1NNX0FMR0lEX05PTkUgKyAzNCwKIENTU01fQUxH
SURfTE9LSSA9IENTU01fQUxHSURfTk9ORSArIDM1LAogQ1NTTV9BTEdJRF9LSFVGVSA9IENTU01f
QUxHSURfTk9ORSArIDM2LAogQ1NTTV9BTEdJRF9LSEFGUkUgPSBDU1NNX0FMR0lEX05PTkUgKyAz
NywKIENTU01fQUxHSURfTU1CID0gQ1NTTV9BTEdJRF9OT05FICsgMzgsCiBDU1NNX0FMR0lEX0dP
U1QgPSBDU1NNX0FMR0lEX05PTkUgKyAzOSwKIENTU01fQUxHSURfU0FGRVIgPSBDU1NNX0FMR0lE
X05PTkUgKyA0MCwKIENTU01fQUxHSURfQ1JBQiA9IENTU01fQUxHSURfTk9ORSArIDQxLAogQ1NT
TV9BTEdJRF9SU0EgPSBDU1NNX0FMR0lEX05PTkUgKyA0MiwKIENTU01fQUxHSURfRFNBID0gQ1NT
TV9BTEdJRF9OT05FICsgNDMsCiBDU1NNX0FMR0lEX01ENVdpdGhSU0EgPSBDU1NNX0FMR0lEX05P
TkUgKyA0NCwKIENTU01fQUxHSURfTUQyV2l0aFJTQSA9IENTU01fQUxHSURfTk9ORSArIDQ1LAog
Q1NTTV9BTEdJRF9FbEdhbWFsID0gQ1NTTV9BTEdJRF9OT05FICsgNDYsCiBDU1NNX0FMR0lEX01E
MlJhbmRvbSA9IENTU01fQUxHSURfTk9ORSArIDQ3LAogQ1NTTV9BTEdJRF9NRDVSYW5kb20gPSBD
U1NNX0FMR0lEX05PTkUgKyA0OCwKIENTU01fQUxHSURfU0hBUmFuZG9tID0gQ1NTTV9BTEdJRF9O
T05FICsgNDksCiBDU1NNX0FMR0lEX0RFU1JhbmRvbSA9IENTU01fQUxHSURfTk9ORSArIDUwLAog
Q1NTTV9BTEdJRF9TSEExV2l0aFJTQSA9IENTU01fQUxHSURfTk9ORSArIDUxLAogQ1NTTV9BTEdJ
RF9DRE1GID0gQ1NTTV9BTEdJRF9OT05FICsgNTIsCiBDU1NNX0FMR0lEX0NBU1QzID0gQ1NTTV9B
TEdJRF9OT05FICsgNTMsCiBDU1NNX0FMR0lEX0NBU1Q1ID0gQ1NTTV9BTEdJRF9OT05FICsgNTQs
CiBDU1NNX0FMR0lEX0dlbmVyaWNTZWNyZXQgPSBDU1NNX0FMR0lEX05PTkUgKyA1NSwKIENTU01f
QUxHSURfQ29uY2F0QmFzZUFuZEtleSA9IENTU01fQUxHSURfTk9ORSArIDU2LAogQ1NTTV9BTEdJ
RF9Db25jYXRLZXlBbmRCYXNlID0gQ1NTTV9BTEdJRF9OT05FICsgNTcsCiBDU1NNX0FMR0lEX0Nv
bmNhdEJhc2VBbmREYXRhID0gQ1NTTV9BTEdJRF9OT05FICsgNTgsCiBDU1NNX0FMR0lEX0NvbmNh
dERhdGFBbmRCYXNlID0gQ1NTTV9BTEdJRF9OT05FICsgNTksCiBDU1NNX0FMR0lEX1hPUkJhc2VB
bmREYXRhID0gQ1NTTV9BTEdJRF9OT05FICsgNjAsCiBDU1NNX0FMR0lEX0V4dHJhY3RGcm9tS2V5
ID0gQ1NTTV9BTEdJRF9OT05FICsgNjEsCiBDU1NNX0FMR0lEX1NTTDNQcmVNYXN0ZXJHZW4gPSBD
U1NNX0FMR0lEX05PTkUgKyA2MiwKIENTU01fQUxHSURfU1NMM01hc3RlckRlcml2ZSA9IENTU01f
QUxHSURfTk9ORSArIDYzLAogQ1NTTV9BTEdJRF9TU0wzS2V5QW5kTWFjRGVyaXZlID0gQ1NTTV9B
TEdJRF9OT05FICsgNjQsCiBDU1NNX0FMR0lEX1NTTDNNRDVfTUFDID0gQ1NTTV9BTEdJRF9OT05F
ICsgNjUsCiBDU1NNX0FMR0lEX1NTTDNTSEExX01BQyA9IENTU01fQUxHSURfTk9ORSArIDY2LAog
Q1NTTV9BTEdJRF9QS0NTNV9QQktERjFfTUQ1ID0gQ1NTTV9BTEdJRF9OT05FICsgNjcsCiBDU1NN
X0FMR0lEX1BLQ1M1X1BCS0RGMV9NRDIgPSBDU1NNX0FMR0lEX05PTkUgKyA2OCwKIENTU01fQUxH
SURfUEtDUzVfUEJLREYxX1NIQTEgPSBDU1NNX0FMR0lEX05PTkUgKyA2OSwKIENTU01fQUxHSURf
V3JhcEx5bmtzID0gQ1NTTV9BTEdJRF9OT05FICsgNzAsCiBDU1NNX0FMR0lEX1dyYXBTRVRfT0FF
UCA9IENTU01fQUxHSURfTk9ORSArIDcxLAogQ1NTTV9BTEdJRF9CQVRPTiA9IENTU01fQUxHSURf
Tk9ORSArIDcyLAogQ1NTTV9BTEdJRF9FQ0RTQSA9IENTU01fQUxHSURfTk9ORSArIDczLAogQ1NT
TV9BTEdJRF9NQVlGTFkgPSBDU1NNX0FMR0lEX05PTkUgKyA3NCwKIENTU01fQUxHSURfSlVOSVBF
UiA9IENTU01fQUxHSURfTk9ORSArIDc1LAogQ1NTTV9BTEdJRF9GQVNUSEFTSCA9IENTU01fQUxH
SURfTk9ORSArIDc2LAogQ1NTTV9BTEdJRF8zREVTID0gQ1NTTV9BTEdJRF9OT05FICsgNzcsCiBD
U1NNX0FMR0lEX1NTTDNNRDUgPSBDU1NNX0FMR0lEX05PTkUgKyA3OCwKIENTU01fQUxHSURfU1NM
M1NIQTEgPSBDU1NNX0FMR0lEX05PTkUgKyA3OSwKIENTU01fQUxHSURfRm9ydGV6emFUaW1lc3Rh
bXAgPSBDU1NNX0FMR0lEX05PTkUgKyA4MCwKIENTU01fQUxHSURfU0hBMVdpdGhEU0EgPSBDU1NN
X0FMR0lEX05PTkUgKyA4MSwKIENTU01fQUxHSURfU0hBMVdpdGhFQ0RTQSA9IENTU01fQUxHSURf
Tk9ORSArIDgyLAogQ1NTTV9BTEdJRF9EU0FfQlNBRkUgPSBDU1NNX0FMR0lEX05PTkUgKyA4MywK
IENTU01fQUxHSURfRUNESCA9IENTU01fQUxHSURfTk9ORSArIDg0LAogQ1NTTV9BTEdJRF9FQ01R
ViA9IENTU01fQUxHSURfTk9ORSArIDg1LAogQ1NTTV9BTEdJRF9QS0NTMTJfU0hBMV9QQkUgPSBD
U1NNX0FMR0lEX05PTkUgKyA4NiwKIENTU01fQUxHSURfRUNOUkEgPSBDU1NNX0FMR0lEX05PTkUg
KyA4NywKIENTU01fQUxHSURfU0hBMVdpdGhFQ05SQSA9IENTU01fQUxHSURfTk9ORSArIDg4LAog
Q1NTTV9BTEdJRF9FQ0VTID0gQ1NTTV9BTEdJRF9OT05FICsgODksCiBDU1NNX0FMR0lEX0VDQUVT
ID0gQ1NTTV9BTEdJRF9OT05FICsgOTAsCiBDU1NNX0FMR0lEX1NIQTFITUFDID0gQ1NTTV9BTEdJ
RF9OT05FICsgOTEsCiBDU1NNX0FMR0lEX0ZJUFMxODZSYW5kb20gPSBDU1NNX0FMR0lEX05PTkUg
KyA5MiwKIENTU01fQUxHSURfRUNDID0gQ1NTTV9BTEdJRF9OT05FICsgOTMsCiBDU1NNX0FMR0lE
X01RViA9IENTU01fQUxHSURfTk9ORSArIDk0LAogQ1NTTV9BTEdJRF9OUkEgPSBDU1NNX0FMR0lE
X05PTkUgKyA5NSwKIENTU01fQUxHSURfSW50ZWxQbGF0Zm9ybVJhbmRvbSA9IENTU01fQUxHSURf
Tk9ORSArIDk2LAogQ1NTTV9BTEdJRF9VVEMgPSBDU1NNX0FMR0lEX05PTkUgKyA5NywKIENTU01f
QUxHSURfSEFWQUwzID0gQ1NTTV9BTEdJRF9OT05FICsgOTgsCiBDU1NNX0FMR0lEX0hBVkFMNCA9
IENTU01fQUxHSURfTk9ORSArIDk5LAogQ1NTTV9BTEdJRF9IQVZBTDUgPSBDU1NNX0FMR0lEX05P
TkUgKyAxMDAsCiBDU1NNX0FMR0lEX1RJR0VSID0gQ1NTTV9BTEdJRF9OT05FICsgMTAxLAogQ1NT
TV9BTEdJRF9NRDVITUFDID0gQ1NTTV9BTEdJRF9OT05FICsgMTAyLAogQ1NTTV9BTEdJRF9QS0NT
NV9QQktERjIgPSBDU1NNX0FMR0lEX05PTkUgKyAxMDMsCiBDU1NNX0FMR0lEX1JVTk5JTkdfQ09V
TlRFUiA9IENTU01fQUxHSURfTk9ORSArIDEwNCwKIENTU01fQUxHSURfTEFTVCA9IENTU01fQUxH
SURfTk9ORSArIDB4N0ZGRkZGRkYsCgoKCiBDU1NNX0FMR0lEX1ZFTkRPUl9ERUZJTkVEID0gQ1NT
TV9BTEdJRF9OT05FICsgMHg4MDAwMDAwMAp9OwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9FTkNSWVBU
X01PREU7CmVudW0gewogQ1NTTV9BTEdNT0RFX05PTkUgPSAwLAogQ1NTTV9BTEdNT0RFX0NVU1RP
TSA9IENTU01fQUxHTU9ERV9OT05FICsgMSwKIENTU01fQUxHTU9ERV9FQ0IgPSBDU1NNX0FMR01P
REVfTk9ORSArIDIsCiBDU1NNX0FMR01PREVfRUNCUGFkID0gQ1NTTV9BTEdNT0RFX05PTkUgKyAz
LAogQ1NTTV9BTEdNT0RFX0NCQyA9IENTU01fQUxHTU9ERV9OT05FICsgNCwKIENTU01fQUxHTU9E
RV9DQkNfSVY4ID0gQ1NTTV9BTEdNT0RFX05PTkUgKyA1LAogQ1NTTV9BTEdNT0RFX0NCQ1BhZElW
OCA9IENTU01fQUxHTU9ERV9OT05FICsgNiwKIENTU01fQUxHTU9ERV9DRkIgPSBDU1NNX0FMR01P
REVfTk9ORSArIDcsCiBDU1NNX0FMR01PREVfQ0ZCX0lWOCA9IENTU01fQUxHTU9ERV9OT05FICsg
OCwKIENTU01fQUxHTU9ERV9DRkJQYWRJVjggPSBDU1NNX0FMR01PREVfTk9ORSArIDksCiBDU1NN
X0FMR01PREVfT0ZCID0gQ1NTTV9BTEdNT0RFX05PTkUgKyAxMCwKIENTU01fQUxHTU9ERV9PRkJf
SVY4ID0gQ1NTTV9BTEdNT0RFX05PTkUgKyAxMSwKIENTU01fQUxHTU9ERV9PRkJQYWRJVjggPSBD
U1NNX0FMR01PREVfTk9ORSArIDEyLAogQ1NTTV9BTEdNT0RFX0NPVU5URVIgPSBDU1NNX0FMR01P
REVfTk9ORSArIDEzLAogQ1NTTV9BTEdNT0RFX0JDID0gQ1NTTV9BTEdNT0RFX05PTkUgKyAxNCwK
IENTU01fQUxHTU9ERV9QQ0JDID0gQ1NTTV9BTEdNT0RFX05PTkUgKyAxNSwKIENTU01fQUxHTU9E
RV9DQkNDID0gQ1NTTV9BTEdNT0RFX05PTkUgKyAxNiwKIENTU01fQUxHTU9ERV9PRkJOTEYgPSBD
U1NNX0FMR01PREVfTk9ORSArIDE3LAogQ1NTTV9BTEdNT0RFX1BCQyA9IENTU01fQUxHTU9ERV9O
T05FICsgMTgsCiBDU1NNX0FMR01PREVfUEZCID0gQ1NTTV9BTEdNT0RFX05PTkUgKyAxOSwKIENT
U01fQUxHTU9ERV9DQkNQRCA9IENTU01fQUxHTU9ERV9OT05FICsgMjAsCiBDU1NNX0FMR01PREVf
UFVCTElDX0tFWSA9IENTU01fQUxHTU9ERV9OT05FICsgMjEsCiBDU1NNX0FMR01PREVfUFJJVkFU
RV9LRVkgPSBDU1NNX0FMR01PREVfTk9ORSArIDIyLAogQ1NTTV9BTEdNT0RFX1NIVUZGTEUgPSBD
U1NNX0FMR01PREVfTk9ORSArIDIzLAogQ1NTTV9BTEdNT0RFX0VDQjY0ID0gQ1NTTV9BTEdNT0RF
X05PTkUgKyAyNCwKIENTU01fQUxHTU9ERV9DQkM2NCA9IENTU01fQUxHTU9ERV9OT05FICsgMjUs
CiBDU1NNX0FMR01PREVfT0ZCNjQgPSBDU1NNX0FMR01PREVfTk9ORSArIDI2LAogQ1NTTV9BTEdN
T0RFX0NGQjMyID0gQ1NTTV9BTEdNT0RFX05PTkUgKyAyOCwKIENTU01fQUxHTU9ERV9DRkIxNiA9
IENTU01fQUxHTU9ERV9OT05FICsgMjksCiBDU1NNX0FMR01PREVfQ0ZCOCA9IENTU01fQUxHTU9E
RV9OT05FICsgMzAsCiBDU1NNX0FMR01PREVfV1JBUCA9IENTU01fQUxHTU9ERV9OT05FICsgMzEs
CiBDU1NNX0FMR01PREVfUFJJVkFURV9XUkFQID0gQ1NTTV9BTEdNT0RFX05PTkUgKyAzMiwKIENT
U01fQUxHTU9ERV9SRUxBWVggPSBDU1NNX0FMR01PREVfTk9ORSArIDMzLAogQ1NTTV9BTEdNT0RF
X0VDQjEyOCA9IENTU01fQUxHTU9ERV9OT05FICsgMzQsCiBDU1NNX0FMR01PREVfRUNCOTYgPSBD
U1NNX0FMR01PREVfTk9ORSArIDM1LAogQ1NTTV9BTEdNT0RFX0NCQzEyOCA9IENTU01fQUxHTU9E
RV9OT05FICsgMzYsCiBDU1NNX0FMR01PREVfT0FFUF9IQVNIID0gQ1NTTV9BTEdNT0RFX05PTkUg
KyAzNywKIENTU01fQUxHTU9ERV9QS0NTMV9FTUVfVjE1ID0gQ1NTTV9BTEdNT0RFX05PTkUgKyAz
OCwKIENTU01fQUxHTU9ERV9QS0NTMV9FTUVfT0FFUCA9IENTU01fQUxHTU9ERV9OT05FICsgMzks
CiBDU1NNX0FMR01PREVfUEtDUzFfRU1TQV9WMTUgPSBDU1NNX0FMR01PREVfTk9ORSArIDQwLAog
Q1NTTV9BTEdNT0RFX0lTT185Nzk2ID0gQ1NTTV9BTEdNT0RFX05PTkUgKyA0MSwKIENTU01fQUxH
TU9ERV9YOV8zMSA9IENTU01fQUxHTU9ERV9OT05FICsgNDIsCiBDU1NNX0FMR01PREVfTEFTVCA9
IENTU01fQUxHTU9ERV9OT05FICsgMHg3RkZGRkZGRiwKCgoKIENTU01fQUxHTU9ERV9WRU5ET1Jf
REVGSU5FRCA9IENTU01fQUxHTU9ERV9OT05FICsgMHg4MDAwMDAwMAp9OwoKdHlwZWRlZiBzdHJ1
Y3QgY3NzbV9rZXloZWFkZXIgewogICAgQ1NTTV9IRUFERVJWRVJTSU9OIEhlYWRlclZlcnNpb247
CiAgICBDU1NNX0dVSUQgQ3NwSWQ7CiAgICBDU1NNX0tFWUJMT0JfVFlQRSBCbG9iVHlwZTsKICAg
IENTU01fS0VZQkxPQl9GT1JNQVQgRm9ybWF0OwogICAgQ1NTTV9BTEdPUklUSE1TIEFsZ29yaXRo
bUlkOwogICAgQ1NTTV9LRVlDTEFTUyBLZXlDbGFzczsKICAgIHVpbnQzMiBMb2dpY2FsS2V5U2l6
ZUluQml0czsKICAgIENTU01fS0VZQVRUUl9GTEFHUyBLZXlBdHRyOwogICAgQ1NTTV9LRVlVU0Ug
S2V5VXNhZ2U7CiAgICBDU1NNX0RBVEUgU3RhcnREYXRlOwogICAgQ1NTTV9EQVRFIEVuZERhdGU7
CiAgICBDU1NNX0FMR09SSVRITVMgV3JhcEFsZ29yaXRobUlkOwogICAgQ1NTTV9FTkNSWVBUX01P
REUgV3JhcE1vZGU7CiAgICB1aW50MzIgUmVzZXJ2ZWQ7Cn0gQ1NTTV9LRVlIRUFERVIsICpDU1NN
X0tFWUhFQURFUl9QVFI7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2tleSB7CiAgICBDU1NNX0tFWUhF
QURFUiBLZXlIZWFkZXI7CiAgICBDU1NNX0RBVEEgS2V5RGF0YTsKfSBDU1NNX0tFWSwgKkNTU01f
S0VZX1BUUjsKCnR5cGVkZWYgQ1NTTV9LRVkgQ1NTTV9XUkFQX0tFWSwgKkNTU01fV1JBUF9LRVlf
UFRSOwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9DU1BUWVBFOwplbnVtIHsKICAgIENTU01fQ1NQX1NP
RlRXQVJFID0gMSwKICAgIENTU01fQ1NQX0hBUkRXQVJFID0gQ1NTTV9DU1BfU09GVFdBUkUgKyAx
LAogICAgQ1NTTV9DU1BfSFlCUklEID0gQ1NTTV9DU1BfU09GVFdBUkUgKyAyCn07CgoKdHlwZWRl
ZiBzdHJ1Y3QgY3NzbV9kbF9kYl9oYW5kbGUgewogICAgQ1NTTV9ETF9IQU5ETEUgRExIYW5kbGU7
CiAgICBDU1NNX0RCX0hBTkRMRSBEQkhhbmRsZTsKfSBDU1NNX0RMX0RCX0hBTkRMRSwgKkNTU01f
RExfREJfSEFORExFX1BUUjsKCnR5cGVkZWYgdWludDMyIENTU01fQ09OVEVYVF9UWVBFOwplbnVt
IHsKIENTU01fQUxHQ0xBU1NfTk9ORSA9IDAsCiBDU1NNX0FMR0NMQVNTX0NVU1RPTSA9IENTU01f
QUxHQ0xBU1NfTk9ORSArIDEsCiBDU1NNX0FMR0NMQVNTX1NJR05BVFVSRSA9IENTU01fQUxHQ0xB
U1NfTk9ORSArIDIsCiBDU1NNX0FMR0NMQVNTX1NZTU1FVFJJQyA9IENTU01fQUxHQ0xBU1NfTk9O
RSArIDMsCiBDU1NNX0FMR0NMQVNTX0RJR0VTVCA9IENTU01fQUxHQ0xBU1NfTk9ORSArIDQsCiBD
U1NNX0FMR0NMQVNTX1JBTkRPTUdFTiA9IENTU01fQUxHQ0xBU1NfTk9ORSArIDUsCiBDU1NNX0FM
R0NMQVNTX1VOSVFVRUdFTiA9IENTU01fQUxHQ0xBU1NfTk9ORSArIDYsCiBDU1NNX0FMR0NMQVNT
X01BQyA9IENTU01fQUxHQ0xBU1NfTk9ORSArIDcsCiBDU1NNX0FMR0NMQVNTX0FTWU1NRVRSSUMg
PSBDU1NNX0FMR0NMQVNTX05PTkUgKyA4LAogQ1NTTV9BTEdDTEFTU19LRVlHRU4gPSBDU1NNX0FM
R0NMQVNTX05PTkUgKyA5LAogQ1NTTV9BTEdDTEFTU19ERVJJVkVLRVkgPSBDU1NNX0FMR0NMQVNT
X05PTkUgKyAxMAp9OwoKCmVudW0gewogQ1NTTV9BVFRSSUJVVEVfREFUQV9OT05FID0gMHgwMDAw
MDAwMCwKIENTU01fQVRUUklCVVRFX0RBVEFfVUlOVDMyID0gMHgxMDAwMDAwMCwKIENTU01fQVRU
UklCVVRFX0RBVEFfQ1NTTV9EQVRBID0gMHgyMDAwMDAwMCwKIENTU01fQVRUUklCVVRFX0RBVEFf
Q1JZUFRPX0RBVEEgPSAweDMwMDAwMDAwLAogQ1NTTV9BVFRSSUJVVEVfREFUQV9LRVkgPSAweDQw
MDAwMDAwLAogQ1NTTV9BVFRSSUJVVEVfREFUQV9TVFJJTkcgPSAweDUwMDAwMDAwLAogQ1NTTV9B
VFRSSUJVVEVfREFUQV9EQVRFID0gMHg2MDAwMDAwMCwKIENTU01fQVRUUklCVVRFX0RBVEFfUkFO
R0UgPSAweDcwMDAwMDAwLAogQ1NTTV9BVFRSSUJVVEVfREFUQV9BQ0NFU1NfQ1JFREVOVElBTFMg
PSAweDgwMDAwMDAwLAogQ1NTTV9BVFRSSUJVVEVfREFUQV9WRVJTSU9OID0gMHgwMTAwMDAwMCwK
IENTU01fQVRUUklCVVRFX0RBVEFfRExfREJfSEFORExFID0gMHgwMjAwMDAwMCwKIENTU01fQVRU
UklCVVRFX0RBVEFfS1JfUFJPRklMRSA9IDB4MDMwMDAwMDAsCiBDU1NNX0FUVFJJQlVURV9UWVBF
X01BU0sgPSAweEZGMDAwMDAwCn07Cgp0eXBlZGVmIHVpbnQzMiBDU1NNX0FUVFJJQlVURV9UWVBF
OwplbnVtIHsKICAgIENTU01fQVRUUklCVVRFX05PTkUgPSAwLAogICAgQ1NTTV9BVFRSSUJVVEVf
Q1VTVE9NID0gQ1NTTV9BVFRSSUJVVEVfREFUQV9DU1NNX0RBVEEgfCAxLAogICAgQ1NTTV9BVFRS
SUJVVEVfREVTQ1JJUFRJT04gPSBDU1NNX0FUVFJJQlVURV9EQVRBX1NUUklORyB8IDIsCiAgICBD
U1NNX0FUVFJJQlVURV9LRVkgPSBDU1NNX0FUVFJJQlVURV9EQVRBX0tFWSB8IDMsCiAgICBDU1NN
X0FUVFJJQlVURV9JTklUX1ZFQ1RPUiA9IENTU01fQVRUUklCVVRFX0RBVEFfQ1NTTV9EQVRBIHwg
NCwKICAgIENTU01fQVRUUklCVVRFX1NBTFQgPSBDU1NNX0FUVFJJQlVURV9EQVRBX0NTU01fREFU
QSB8IDUsCiAgICBDU1NNX0FUVFJJQlVURV9QQURESU5HID0gQ1NTTV9BVFRSSUJVVEVfREFUQV9V
SU5UMzIgfCA2LAogICAgQ1NTTV9BVFRSSUJVVEVfUkFORE9NID0gQ1NTTV9BVFRSSUJVVEVfREFU
QV9DU1NNX0RBVEEgfCA3LAogICAgQ1NTTV9BVFRSSUJVVEVfU0VFRCA9IENTU01fQVRUUklCVVRF
X0RBVEFfQ1JZUFRPX0RBVEEgfCA4LAogICAgQ1NTTV9BVFRSSUJVVEVfUEFTU1BIUkFTRSA9IENT
U01fQVRUUklCVVRFX0RBVEFfQ1JZUFRPX0RBVEEgfCA5LAogICAgQ1NTTV9BVFRSSUJVVEVfS0VZ
X0xFTkdUSCA9IENTU01fQVRUUklCVVRFX0RBVEFfVUlOVDMyIHwgMTAsCiAgICBDU1NNX0FUVFJJ
QlVURV9LRVlfTEVOR1RIX1JBTkdFID0gQ1NTTV9BVFRSSUJVVEVfREFUQV9SQU5HRSB8IDExLAog
ICAgQ1NTTV9BVFRSSUJVVEVfQkxPQ0tfU0laRSA9IENTU01fQVRUUklCVVRFX0RBVEFfVUlOVDMy
IHwgMTIsCiAgICBDU1NNX0FUVFJJQlVURV9PVVRQVVRfU0laRSA9IENTU01fQVRUUklCVVRFX0RB
VEFfVUlOVDMyIHwgMTMsCiAgICBDU1NNX0FUVFJJQlVURV9ST1VORFMgPSBDU1NNX0FUVFJJQlVU
RV9EQVRBX1VJTlQzMiB8IDE0LAogICAgQ1NTTV9BVFRSSUJVVEVfSVZfU0laRSA9IENTU01fQVRU
UklCVVRFX0RBVEFfVUlOVDMyIHwgMTUsCiAgICBDU1NNX0FUVFJJQlVURV9BTEdfUEFSQU1TID0g
Q1NTTV9BVFRSSUJVVEVfREFUQV9DU1NNX0RBVEEgfCAxNiwKICAgIENTU01fQVRUUklCVVRFX0xB
QkVMID0gQ1NTTV9BVFRSSUJVVEVfREFUQV9DU1NNX0RBVEEgfCAxNywKICAgIENTU01fQVRUUklC
VVRFX0tFWV9UWVBFID0gQ1NTTV9BVFRSSUJVVEVfREFUQV9VSU5UMzIgfCAxOCwKICAgIENTU01f
QVRUUklCVVRFX01PREUgPSBDU1NNX0FUVFJJQlVURV9EQVRBX1VJTlQzMiB8IDE5LAogICAgQ1NT
TV9BVFRSSUJVVEVfRUZGRUNUSVZFX0JJVFMgPSBDU1NNX0FUVFJJQlVURV9EQVRBX1VJTlQzMiB8
IDIwLAogICAgQ1NTTV9BVFRSSUJVVEVfU1RBUlRfREFURSA9IENTU01fQVRUUklCVVRFX0RBVEFf
REFURSB8IDIxLAogICAgQ1NTTV9BVFRSSUJVVEVfRU5EX0RBVEUgPSBDU1NNX0FUVFJJQlVURV9E
QVRBX0RBVEUgfCAyMiwKICAgIENTU01fQVRUUklCVVRFX0tFWVVTQUdFID0gQ1NTTV9BVFRSSUJV
VEVfREFUQV9VSU5UMzIgfCAyMywKICAgIENTU01fQVRUUklCVVRFX0tFWUFUVFIgPSBDU1NNX0FU
VFJJQlVURV9EQVRBX1VJTlQzMiB8IDI0LAogICAgQ1NTTV9BVFRSSUJVVEVfVkVSU0lPTiA9IENT
U01fQVRUUklCVVRFX0RBVEFfVkVSU0lPTiB8IDI1LAogICAgQ1NTTV9BVFRSSUJVVEVfUFJJTUUg
PSBDU1NNX0FUVFJJQlVURV9EQVRBX0NTU01fREFUQSB8IDI2LAogICAgQ1NTTV9BVFRSSUJVVEVf
QkFTRSA9IENTU01fQVRUUklCVVRFX0RBVEFfQ1NTTV9EQVRBIHwgMjcsCiAgICBDU1NNX0FUVFJJ
QlVURV9TVUJQUklNRSA9IENTU01fQVRUUklCVVRFX0RBVEFfQ1NTTV9EQVRBIHwgMjgsCiAgICBD
U1NNX0FUVFJJQlVURV9BTEdfSUQgPSBDU1NNX0FUVFJJQlVURV9EQVRBX1VJTlQzMiB8IDI5LAog
ICAgQ1NTTV9BVFRSSUJVVEVfSVRFUkFUSU9OX0NPVU5UID0gQ1NTTV9BVFRSSUJVVEVfREFUQV9V
SU5UMzIgfCAzMCwKICAgIENTU01fQVRUUklCVVRFX1JPVU5EU19SQU5HRSA9IENTU01fQVRUUklC
VVRFX0RBVEFfUkFOR0UgfCAzMSwKIENTU01fQVRUUklCVVRFX0tSUFJPRklMRV9MT0NBTCA9IENT
U01fQVRUUklCVVRFX0RBVEFfS1JfUFJPRklMRSB8IDMyLAogQ1NTTV9BVFRSSUJVVEVfS1JQUk9G
SUxFX1JFTU9URSA9IENTU01fQVRUUklCVVRFX0RBVEFfS1JfUFJPRklMRSB8IDMzLAogICAgQ1NT
TV9BVFRSSUJVVEVfQ1NQX0hBTkRMRSA9IENTU01fQVRUUklCVVRFX0RBVEFfVUlOVDMyIHwgMzQs
CiAgICBDU1NNX0FUVFJJQlVURV9ETF9EQl9IQU5ETEUgPSBDU1NNX0FUVFJJQlVURV9EQVRBX0RM
X0RCX0hBTkRMRSB8IDM1LAogICAgQ1NTTV9BVFRSSUJVVEVfQUNDRVNTX0NSRURFTlRJQUxTID0g
Q1NTTV9BVFRSSUJVVEVfREFUQV9BQ0NFU1NfQ1JFREVOVElBTFMgfCAzNiwKICAgIENTU01fQVRU
UklCVVRFX1BVQkxJQ19LRVlfRk9STUFUID0gQ1NTTV9BVFRSSUJVVEVfREFUQV9VSU5UMzIgfCAz
NywKICAgIENTU01fQVRUUklCVVRFX1BSSVZBVEVfS0VZX0ZPUk1BVCA9IENTU01fQVRUUklCVVRF
X0RBVEFfVUlOVDMyIHwgMzgsCiAgICBDU1NNX0FUVFJJQlVURV9TWU1NRVRSSUNfS0VZX0ZPUk1B
VD1DU1NNX0FUVFJJQlVURV9EQVRBX1VJTlQzMiB8IDM5LAogICAgQ1NTTV9BVFRSSUJVVEVfV1JB
UFBFRF9LRVlfRk9STUFUID0gQ1NTTV9BVFRSSUJVVEVfREFUQV9VSU5UMzIgfCA0MAp9OwoKdHlw
ZWRlZiB1aW50MzIgQ1NTTV9QQURESU5HOwplbnVtIHsKIENTU01fUEFERElOR19OT05FID0gMCwK
IENTU01fUEFERElOR19DVVNUT00gPSBDU1NNX1BBRERJTkdfTk9ORSArIDEsCiBDU1NNX1BBRERJ
TkdfWkVSTyA9IENTU01fUEFERElOR19OT05FICsgMiwKIENTU01fUEFERElOR19PTkUgPSBDU1NN
X1BBRERJTkdfTk9ORSArIDMsCiBDU1NNX1BBRERJTkdfQUxURVJOQVRFID0gQ1NTTV9QQURESU5H
X05PTkUgKyA0LAogQ1NTTV9QQURESU5HX0ZGID0gQ1NTTV9QQURESU5HX05PTkUgKyA1LAogQ1NT
TV9QQURESU5HX1BLQ1M1ID0gQ1NTTV9QQURESU5HX05PTkUgKyA2LAogQ1NTTV9QQURESU5HX1BL
Q1M3ID0gQ1NTTV9QQURESU5HX05PTkUgKyA3LAogQ1NTTV9QQURESU5HX0NJUEhFUlNURUFMSU5H
ID0gQ1NTTV9QQURESU5HX05PTkUgKyA4LAogQ1NTTV9QQURESU5HX1JBTkRPTSA9IENTU01fUEFE
RElOR19OT05FICsgOSwKIENTU01fUEFERElOR19QS0NTMSA9IENTU01fUEFERElOR19OT05FICsg
MTAsCgoKCiBDU1NNX1BBRERJTkdfVkVORE9SX0RFRklORUQgPSBDU1NNX1BBRERJTkdfTk9ORSAr
IDB4ODAwMDAwMDAKfTsKCnR5cGVkZWYgQ1NTTV9BTEdPUklUSE1TIENTU01fS0VZX1RZUEU7Cgp0
eXBlZGVmIHN0cnVjdCBjc3NtX2NvbnRleHRfYXR0cmlidXRlIHsKICAgIENTU01fQVRUUklCVVRF
X1RZUEUgQXR0cmlidXRlVHlwZTsKICAgIHVpbnQzMiBBdHRyaWJ1dGVMZW5ndGg7CiAgICB1bmlv
biBjc3NtX2NvbnRleHRfYXR0cmlidXRlX3ZhbHVlIHsKICAgICAgICBjaGFyICpTdHJpbmc7CiAg
ICAgICAgdWludDMyIFVpbnQzMjsKICAgICAgICBDU1NNX0FDQ0VTU19DUkVERU5USUFMU19QVFIg
QWNjZXNzQ3JlZGVudGlhbHM7CiAgICAgICAgQ1NTTV9LRVlfUFRSIEtleTsKICAgICAgICBDU1NN
X0RBVEFfUFRSIERhdGE7CiAgICAgICAgQ1NTTV9QQURESU5HIFBhZGRpbmc7CiAgICAgICAgQ1NT
TV9EQVRFX1BUUiBEYXRlOwogICAgICAgIENTU01fUkFOR0VfUFRSIFJhbmdlOwogICAgICAgIENT
U01fQ1JZUFRPX0RBVEFfUFRSIENyeXB0b0RhdGE7CiAgICAgICAgQ1NTTV9WRVJTSU9OX1BUUiBW
ZXJzaW9uOwogICAgICAgIENTU01fRExfREJfSEFORExFX1BUUiBETERCSGFuZGxlOwogICAgICAg
IHN0cnVjdCBjc3NtX2tyX3Byb2ZpbGUgKktSUHJvZmlsZTsKICAgIH0gQXR0cmlidXRlOwp9IENT
U01fQ09OVEVYVF9BVFRSSUJVVEUsICpDU1NNX0NPTlRFWFRfQVRUUklCVVRFX1BUUjsKCnR5cGVk
ZWYgc3RydWN0IGNzc21fY29udGV4dCB7CiAgICBDU1NNX0NPTlRFWFRfVFlQRSBDb250ZXh0VHlw
ZTsKICAgIENTU01fQUxHT1JJVEhNUyBBbGdvcml0aG1UeXBlOwogICAgdWludDMyIE51bWJlck9m
QXR0cmlidXRlczsKICAgIENTU01fQ09OVEVYVF9BVFRSSUJVVEVfUFRSIENvbnRleHRBdHRyaWJ1
dGVzOwogICAgQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZTsKIENTU01fQk9PTCBQcml2aWxlZ2Vk
OwogdWludDMyIEVuY3J5cHRpb25Qcm9oaWJpdGVkOwogdWludDMyIFdvcmtGYWN0b3I7CiB1aW50
MzIgUmVzZXJ2ZWQ7Cn0gQ1NTTV9DT05URVhULCAqQ1NTTV9DT05URVhUX1BUUjsKCnR5cGVkZWYg
dWludDMyIENTU01fU0NfRkxBR1M7CmVudW0gewogQ1NTTV9DU1BfVE9LX1JORyA9IDB4MDAwMDAw
MDEsCiBDU1NNX0NTUF9UT0tfQ0xPQ0tfRVhJU1RTID0gMHgwMDAwMDA0MAp9OwoKdHlwZWRlZiB1
aW50MzIgQ1NTTV9DU1BfUkVBREVSX0ZMQUdTOwplbnVtIHsKIENTU01fQ1NQX1JEUl9UT0tFTlBS
RVNFTlQgPSAweDAwMDAwMDAxLAoKIENTU01fQ1NQX1JEUl9FWElTVFMgPSAweDAwMDAwMDAyLAoK
CiBDU1NNX0NTUF9SRFJfSFcgPSAweDAwMDAwMDA0Cgp9OwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9D
U1BfRkxBR1M7CmVudW0gewogQ1NTTV9DU1BfVE9LX1dSSVRFX1BST1RFQ1RFRCA9IDB4MDAwMDAw
MDIsCiBDU1NNX0NTUF9UT0tfTE9HSU5fUkVRVUlSRUQgPSAweDAwMDAwMDA0LAogQ1NTTV9DU1Bf
VE9LX1VTRVJfUElOX0lOSVRJQUxJWkVEID0gMHgwMDAwMDAwOCwKIENTU01fQ1NQX1RPS19QUk9U
X0FVVEhFTlRJQ0FUSU9OID0gMHgwMDAwMDEwMCwKIENTU01fQ1NQX1RPS19VU0VSX1BJTl9FWFBJ
UkVEID0gMHgwMDEwMDAwMCwKIENTU01fQ1NQX1RPS19TRVNTSU9OX0tFWV9QQVNTV09SRCA9IDB4
MDAyMDAwMDAsCiBDU1NNX0NTUF9UT0tfUFJJVkFURV9LRVlfUEFTU1dPUkQgPSAweDAwNDAwMDAw
LAogQ1NTTV9DU1BfU1RPUkVTX1BSSVZBVEVfS0VZUyA9IDB4MDEwMDAwMDAsCiBDU1NNX0NTUF9T
VE9SRVNfUFVCTElDX0tFWVMgPSAweDAyMDAwMDAwLAogQ1NTTV9DU1BfU1RPUkVTX1NFU1NJT05f
S0VZUyA9IDB4MDQwMDAwMDAsCiBDU1NNX0NTUF9TVE9SRVNfQ0VSVElGSUNBVEVTID0gMHgwODAw
MDAwMCwKIENTU01fQ1NQX1NUT1JFU19HRU5FUklDID0gMHgxMDAwMDAwMAp9OwoKdHlwZWRlZiB1
aW50MzIgQ1NTTV9QS0NTX09BRVBfTUdGOwplbnVtIHsKIENTU01fUEtDU19PQUVQX01HRl9OT05F
ID0gMCwKIENTU01fUEtDU19PQUVQX01HRjFfU0hBMSA9IENTU01fUEtDU19PQUVQX01HRl9OT05F
ICsgMSwKIENTU01fUEtDU19PQUVQX01HRjFfTUQ1ID0gQ1NTTV9QS0NTX09BRVBfTUdGX05PTkUg
KyAyCn07Cgp0eXBlZGVmIHVpbnQzMiBDU1NNX1BLQ1NfT0FFUF9QU09VUkNFOwplbnVtIHsKIENT
U01fUEtDU19PQUVQX1BTT1VSQ0VfTk9ORSA9IDAsCiBDU1NNX1BLQ1NfT0FFUF9QU09VUkNFX1Bz
cGVjaWZpZWQgPSBDU1NNX1BLQ1NfT0FFUF9QU09VUkNFX05PTkUgKyAxCn07Cgp0eXBlZGVmIHN0
cnVjdCBjc3NtX3BrY3MxX29hZXBfcGFyYW1zIHsKICAgIHVpbnQzMiBIYXNoQWxnb3JpdGhtOwog
ICAgQ1NTTV9EQVRBIEhhc2hQYXJhbXM7CiAgICBDU1NNX1BLQ1NfT0FFUF9NR0YgTUdGOwogICAg
Q1NTTV9EQVRBIE1HRlBhcmFtczsKICAgIENTU01fUEtDU19PQUVQX1BTT1VSQ0UgUFNvdXJjZTsK
ICAgIENTU01fREFUQSBQU291cmNlUGFyYW1zOwp9IENTU01fUEtDUzFfT0FFUF9QQVJBTVMsICpD
U1NNX1BLQ1MxX09BRVBfUEFSQU1TX1BUUjsKCnR5cGVkZWYgc3RydWN0IGNzc21fY3NwX29wZXJh
dGlvbmFsX3N0YXRpc3RpY3MgewogICAgQ1NTTV9CT09MIFVzZXJBdXRoZW50aWNhdGVkOwoKICAg
IENTU01fQ1NQX0ZMQUdTIERldmljZUZsYWdzOwogICAgdWludDMyIFRva2VuTWF4U2Vzc2lvbkNv
dW50OwogICAgdWludDMyIFRva2VuT3BlbmVkU2Vzc2lvbkNvdW50OwogICAgdWludDMyIFRva2Vu
TWF4UldTZXNzaW9uQ291bnQ7CiAgICB1aW50MzIgVG9rZW5PcGVuZWRSV1Nlc3Npb25Db3VudDsK
ICAgIHVpbnQzMiBUb2tlblRvdGFsUHVibGljTWVtOwogICAgdWludDMyIFRva2VuRnJlZVB1Ymxp
Y01lbTsKICAgIHVpbnQzMiBUb2tlblRvdGFsUHJpdmF0ZU1lbTsKICAgIHVpbnQzMiBUb2tlbkZy
ZWVQcml2YXRlTWVtOwp9IENTU01fQ1NQX09QRVJBVElPTkFMX1NUQVRJU1RJQ1MsICpDU1NNX0NT
UF9PUEVSQVRJT05BTF9TVEFUSVNUSUNTX1BUUjsKCgoKZW51bSB7CiBDU1NNX1ZBTFVFX05PVF9B
VkFJTEFCTEUgPSAodWludDMyKSh+MCkKfTsKCnR5cGVkZWYgc3RydWN0IGNzc21fcGtjczVfcGJr
ZGYxX3BhcmFtcyB7CiAgICBDU1NNX0RBVEEgUGFzc3BocmFzZTsKICAgIENTU01fREFUQSBJbml0
VmVjdG9yOwp9IENTU01fUEtDUzVfUEJLREYxX1BBUkFNUywgKkNTU01fUEtDUzVfUEJLREYxX1BB
UkFNU19QVFI7Cgp0eXBlZGVmIHVpbnQzMiBDU1NNX1BLQ1M1X1BCS0RGMl9QUkY7CmVudW0gewog
Q1NTTV9QS0NTNV9QQktERjJfUFJGX0hNQUNfU0hBMSA9IDAKfTsKCnR5cGVkZWYgc3RydWN0IGNz
c21fcGtjczVfcGJrZGYyX3BhcmFtcyB7CiBDU1NNX0RBVEEgUGFzc3BocmFzZTsKIENTU01fUEtD
UzVfUEJLREYyX1BSRiBQc2V1ZG9SYW5kb21GdW5jdGlvbjsKfSBDU1NNX1BLQ1M1X1BCS0RGMl9Q
QVJBTVMsICpDU1NNX1BLQ1M1X1BCS0RGMl9QQVJBTVNfUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3Nz
bV9rZWFfZGVyaXZlX3BhcmFtcyB7CiAgICBDU1NNX0RBVEEgUmI7CiAgICBDU1NNX0RBVEEgWWI7
Cn0gQ1NTTV9LRUFfREVSSVZFX1BBUkFNUywgKkNTU01fS0VBX0RFUklWRV9QQVJBTVNfUFRSOwoK
CgoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV90cF9hdXRob3JpdHlfaWQgewogICAgQ1NTTV9EQVRBICpB
dXRob3JpdHlDZXJ0OwogICAgQ1NTTV9ORVRfQUREUkVTU19QVFIgQXV0aG9yaXR5TG9jYXRpb247
Cn0gQ1NTTV9UUF9BVVRIT1JJVFlfSUQsICpDU1NNX1RQX0FVVEhPUklUWV9JRF9QVFI7Cgp0eXBl
ZGVmIHVpbnQzMiBDU1NNX1RQX0FVVEhPUklUWV9SRVFVRVNUX1RZUEUsICpDU1NNX1RQX0FVVEhP
UklUWV9SRVFVRVNUX1RZUEVfUFRSOwplbnVtIHsKIENTU01fVFBfQVVUSE9SSVRZX1JFUVVFU1Rf
Q0VSVElTU1VFID0gMHgwMSwKIENTU01fVFBfQVVUSE9SSVRZX1JFUVVFU1RfQ0VSVFJFVk9LRSA9
IDB4MDIsCiBDU1NNX1RQX0FVVEhPUklUWV9SRVFVRVNUX0NFUlRTVVNQRU5EID0gMHgwMywKIENT
U01fVFBfQVVUSE9SSVRZX1JFUVVFU1RfQ0VSVFJFU1VNRSA9IDB4MDQsCiBDU1NNX1RQX0FVVEhP
UklUWV9SRVFVRVNUX0NFUlRWRVJJRlkgPSAweDA1LAogQ1NTTV9UUF9BVVRIT1JJVFlfUkVRVUVT
VF9DRVJUTk9UQVJJWkUgPSAweDA2LAogQ1NTTV9UUF9BVVRIT1JJVFlfUkVRVUVTVF9DRVJUVVNF
UkVDT1ZFUiA9IDB4MDcsCiBDU1NNX1RQX0FVVEhPUklUWV9SRVFVRVNUX0NSTElTU1VFID0gMHgx
MDAKfTsKCnR5cGVkZWYgQ1NTTV9SRVRVUk4gKCAqIENTU01fVFBfVkVSSUZJQ0FUSU9OX1JFU1VM
VFNfQ0FMTEJBQ0spCiAoQ1NTTV9NT0RVTEVfSEFORExFIE1vZHVsZUhhbmRsZSwKICB2b2lkICpD
YWxsZXJDdHgsCiAgQ1NTTV9EQVRBX1BUUiBWZXJpZmllZENlcnQpOwoKCnR5cGVkZWYgQ1NTTV9E
QVRBIENTU01fT0lELCAqQ1NTTV9PSURfUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9maWVsZCB7
CiAgICBDU1NNX09JRCBGaWVsZE9pZDsKICAgIENTU01fREFUQSBGaWVsZFZhbHVlOwp9IENTU01f
RklFTEQsICpDU1NNX0ZJRUxEX1BUUjsKCgp0eXBlZGVmIHN0cnVjdCBjc3NtX3RwX3BvbGljeWlu
Zm8gewogICAgdWludDMyIE51bWJlck9mUG9saWN5SWRzOwogICAgQ1NTTV9GSUVMRF9QVFIgUG9s
aWN5SWRzOwogICAgdm9pZCAqUG9saWN5Q29udHJvbDsKfSBDU1NNX1RQX1BPTElDWUlORk8sICpD
U1NNX1RQX1BPTElDWUlORk9fUFRSOwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9UUF9TRVJWSUNFUzsK
ZW51bSB7CgogQ1NTTV9UUF9LRVlfQVJDSElWRSA9IDB4MDAwMSwKIENTU01fVFBfQ0VSVF9QVUJM
SVNIID0gMHgwMDAyLAogQ1NTTV9UUF9DRVJUX05PVElGWV9SRU5FVyA9IDB4MDAwNCwKIENTU01f
VFBfQ0VSVF9ESVJfVVBEQVRFID0gMHgwMDA4LAogQ1NTTV9UUF9DUkxfRElTVFJJQlVURSA9IDB4
MDAxMAp9OwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9UUF9BQ1RJT047CmVudW0gewogQ1NTTV9UUF9B
Q1RJT05fREVGQVVMVCA9IDAKfTsKCnR5cGVkZWYgdWludDMyIENTU01fVFBfU1RPUF9PTjsKZW51
bSB7CiAgICBDU1NNX1RQX1NUT1BfT05fUE9MSUNZID0gMCwKICAgIENTU01fVFBfU1RPUF9PTl9O
T05FID0gMSwKICAgIENTU01fVFBfU1RPUF9PTl9GSVJTVF9QQVNTID0gMiwKICAgIENTU01fVFBf
U1RPUF9PTl9GSVJTVF9GQUlMID0gMwp9OwoKdHlwZWRlZiBjaGFyICpDU1NNX1RJTUVTVFJJTkc7
CgoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9kbF9kYl9saXN0IHsKICAgIHVpbnQzMiBOdW1IYW5kbGVz
OwogICAgQ1NTTV9ETF9EQl9IQU5ETEVfUFRSIERMREJIYW5kbGU7Cn0gQ1NTTV9ETF9EQl9MSVNU
LCAqQ1NTTV9ETF9EQl9MSVNUX1BUUjsKCgp0eXBlZGVmIHN0cnVjdCBjc3NtX3RwX2NhbGxlcmF1
dGhfY29udGV4dCB7CiAgICBDU1NNX1RQX1BPTElDWUlORk8gUG9saWN5OwogICAgQ1NTTV9USU1F
U1RSSU5HIFZlcmlmeVRpbWU7CiAgICBDU1NNX1RQX1NUT1BfT04gVmVyaWZpY2F0aW9uQWJvcnRP
bjsKICAgIENTU01fVFBfVkVSSUZJQ0FUSU9OX1JFU1VMVFNfQ0FMTEJBQ0sgQ2FsbGJhY2tXaXRo
VmVyaWZpZWRDZXJ0OwogICAgdWludDMyIE51bWJlck9mQW5jaG9yQ2VydHM7CiAgICBDU1NNX0RB
VEFfUFRSIEFuY2hvckNlcnRzOwogICAgQ1NTTV9ETF9EQl9MSVNUX1BUUiBEQkxpc3Q7CiAgICBD
U1NNX0FDQ0VTU19DUkVERU5USUFMU19QVFIgQ2FsbGVyQ3JlZGVudGlhbHM7Cn0gQ1NTTV9UUF9D
QUxMRVJBVVRIX0NPTlRFWFQsICpDU1NNX1RQX0NBTExFUkFVVEhfQ09OVEVYVF9QVFI7Cgp0eXBl
ZGVmIHVpbnQzMiBDU1NNX0NSTF9QQVJTRV9GT1JNQVQsICogQ1NTTV9DUkxfUEFSU0VfRk9STUFU
X1BUUjsKZW51bSB7CiBDU1NNX0NSTF9QQVJTRV9GT1JNQVRfTk9ORSA9IDB4MDAsCiBDU1NNX0NS
TF9QQVJTRV9GT1JNQVRfQ1VTVE9NID0gMHgwMSwKIENTU01fQ1JMX1BBUlNFX0ZPUk1BVF9TRVhQ
UiA9IDB4MDIsCiBDU1NNX0NSTF9QQVJTRV9GT1JNQVRfQ09NUExFWCA9IDB4MDMsCiBDU1NNX0NS
TF9QQVJTRV9GT1JNQVRfT0lEX05BTUVEID0gMHgwNCwKIENTU01fQ1JMX1BBUlNFX0ZPUk1BVF9U
VVBMRSA9IDB4MDUsCiBDU1NNX0NSTF9QQVJTRV9GT1JNQVRfTVVMVElQTEUgPSAweDdGRkUsCiBD
U1NNX0NSTF9QQVJTRV9GT1JNQVRfTEFTVCA9IDB4N0ZGRiwKCgoKIENTU01fQ0xfQ1VTVE9NX0NS
TF9QQVJTRV9GT1JNQVQgPSAweDgwMDAKfTsKCgp0eXBlZGVmIHVpbnQzMiBDU1NNX0NSTF9UWVBF
LCAqQ1NTTV9DUkxfVFlQRV9QVFI7CmVudW0gewogICAgQ1NTTV9DUkxfVFlQRV9VTktOT1dOID0g
MHgwMCwKICAgIENTU01fQ1JMX1RZUEVfWF81MDl2MSA9IDB4MDEsCiAgICBDU1NNX0NSTF9UWVBF
X1hfNTA5djIgPSAweDAyLAogICAgQ1NTTV9DUkxfVFlQRV9TUEtJID0gMHgwMywKICAgIENTU01f
Q1JMX1RZUEVfTVVMVElQTEUgPSAweDdGRkUKfTsKCnR5cGVkZWYgdWludDMyIENTU01fQ1JMX0VO
Q09ESU5HLCAqQ1NTTV9DUkxfRU5DT0RJTkdfUFRSOwplbnVtIHsKICAgIENTU01fQ1JMX0VOQ09E
SU5HX1VOS05PV04gPSAweDAwLAogICAgQ1NTTV9DUkxfRU5DT0RJTkdfQ1VTVE9NID0gMHgwMSwK
ICAgIENTU01fQ1JMX0VOQ09ESU5HX0JFUiA9IDB4MDIsCiAgICBDU1NNX0NSTF9FTkNPRElOR19E
RVIgPSAweDAzLAogICAgQ1NTTV9DUkxfRU5DT0RJTkdfQkxPT00gPSAweDA0LAogICAgQ1NTTV9D
UkxfRU5DT0RJTkdfU0VYUFIgPSAweDA1LAogICAgQ1NTTV9DUkxfRU5DT0RJTkdfTVVMVElQTEUg
PSAweDdGRkUKfTsKCnR5cGVkZWYgc3RydWN0IGNzc21fZW5jb2RlZF9jcmwgewogICAgQ1NTTV9D
UkxfVFlQRSBDcmxUeXBlOwogICAgQ1NTTV9DUkxfRU5DT0RJTkcgQ3JsRW5jb2Rpbmc7CiAgICBD
U1NNX0RBVEEgQ3JsQmxvYjsKfSBDU1NNX0VOQ09ERURfQ1JMLCAqQ1NTTV9FTkNPREVEX0NSTF9Q
VFI7CgoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9wYXJzZWRfY3JsIHsKICAgIENTU01fQ1JMX1RZUEUg
Q3JsVHlwZTsKICAgIENTU01fQ1JMX1BBUlNFX0ZPUk1BVCBQYXJzZWRDcmxGb3JtYXQ7CgogICAg
dm9pZCAqUGFyc2VkQ3JsOwp9IENTU01fUEFSU0VEX0NSTCwgKkNTU01fUEFSU0VEX0NSTF9QVFI7
Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2NybF9wYWlyIHsKICAgIENTU01fRU5DT0RFRF9DUkwgRW5j
b2RlZENybDsKICAgIENTU01fUEFSU0VEX0NSTCBQYXJzZWRDcmw7Cn0gQ1NTTV9DUkxfUEFJUiwg
KkNTU01fQ1JMX1BBSVJfUFRSOwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9DUkxHUk9VUF9UWVBFLCAq
IENTU01fQ1JMR1JPVVBfVFlQRV9QVFI7CmVudW0gewogQ1NTTV9DUkxHUk9VUF9EQVRBID0gMHgw
MCwKIENTU01fQ1JMR1JPVVBfRU5DT0RFRF9DUkwgPSAweDAxLAogQ1NTTV9DUkxHUk9VUF9QQVJT
RURfQ1JMID0gMHgwMiwKIENTU01fQ1JMR1JPVVBfQ1JMX1BBSVIgPSAweDAzCn07Cgp0eXBlZGVm
IHN0cnVjdCBjc3NtX2NybGdyb3VwIHsKICAgIENTU01fQ1JMX1RZUEUgQ3JsVHlwZTsKICAgIENT
U01fQ1JMX0VOQ09ESU5HIENybEVuY29kaW5nOwogICAgdWludDMyIE51bWJlck9mQ3JsczsKICAg
IHVuaW9uIHsKICAgICAgICBDU1NNX0RBVEFfUFRSIENybExpc3Q7CiAgICAgICAgQ1NTTV9FTkNP
REVEX0NSTF9QVFIgRW5jb2RlZENybExpc3Q7CiAgICAgICAgQ1NTTV9QQVJTRURfQ1JMX1BUUiBQ
YXJzZWRDcmxMaXN0OwogICAgICAgIENTU01fQ1JMX1BBSVJfUFRSIFBhaXJDcmxMaXN0OwogICAg
fSBHcm91cENybExpc3Q7CiAgICBDU1NNX0NSTEdST1VQX1RZUEUgQ3JsR3JvdXBUeXBlOwp9IENT
U01fQ1JMR1JPVVAsICpDU1NNX0NSTEdST1VQX1BUUjsKCnR5cGVkZWYgc3RydWN0IGNzc21fZmll
bGRncm91cCB7CiAgICBpbnQgTnVtYmVyT2ZGaWVsZHM7CiAgICBDU1NNX0ZJRUxEX1BUUiBGaWVs
ZHM7Cn0gQ1NTTV9GSUVMREdST1VQLCAqQ1NTTV9GSUVMREdST1VQX1BUUjsKCnR5cGVkZWYgdWlu
dDMyIENTU01fRVZJREVOQ0VfRk9STTsKZW51bSB7CiBDU1NNX0VWSURFTkNFX0ZPUk1fVU5TUEVD
SUZJQyA9IDB4MCwKIENTU01fRVZJREVOQ0VfRk9STV9DRVJUID0gMHgxLAogQ1NTTV9FVklERU5D
RV9GT1JNX0NSTCA9IDB4MiwKIENTU01fRVZJREVOQ0VfRk9STV9DRVJUX0lEID0gMHgzLAogQ1NT
TV9FVklERU5DRV9GT1JNX0NSTF9JRCA9IDB4NCwKIENTU01fRVZJREVOQ0VfRk9STV9WRVJJRklF
Ul9USU1FID0gMHg1LAogQ1NTTV9FVklERU5DRV9GT1JNX0NSTF9USElTVElNRSA9IDB4NiwKIENT
U01fRVZJREVOQ0VfRk9STV9DUkxfTkVYVFRJTUUgPSAweDcsCiBDU1NNX0VWSURFTkNFX0ZPUk1f
UE9MSUNZSU5GTyA9IDB4OCwKIENTU01fRVZJREVOQ0VfRk9STV9UVVBMRUdST1VQID0gMHg5Cn07
Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2V2aWRlbmNlIHsKICAgIENTU01fRVZJREVOQ0VfRk9STSBF
dmlkZW5jZUZvcm07CiAgICB2b2lkICpFdmlkZW5jZTsKfSBDU1NNX0VWSURFTkNFLCAqQ1NTTV9F
VklERU5DRV9QVFI7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX3RwX3ZlcmlmeV9jb250ZXh0IHsKICAg
IENTU01fVFBfQUNUSU9OIEFjdGlvbjsKICAgIENTU01fREFUQSBBY3Rpb25EYXRhOwogICAgQ1NT
TV9DUkxHUk9VUCBDcmxzOwogICAgQ1NTTV9UUF9DQUxMRVJBVVRIX0NPTlRFWFRfUFRSIENyZWQ7
Cn0gQ1NTTV9UUF9WRVJJRllfQ09OVEVYVCwgKkNTU01fVFBfVkVSSUZZX0NPTlRFWFRfUFRSOwoK
dHlwZWRlZiBzdHJ1Y3QgY3NzbV90cF92ZXJpZnlfY29udGV4dF9yZXN1bHQgewogICAgdWludDMy
IE51bWJlck9mRXZpZGVuY2VzOwogICAgQ1NTTV9FVklERU5DRV9QVFIgRXZpZGVuY2U7Cn0gQ1NT
TV9UUF9WRVJJRllfQ09OVEVYVF9SRVNVTFQsICpDU1NNX1RQX1ZFUklGWV9DT05URVhUX1JFU1VM
VF9QVFI7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX3RwX3JlcXVlc3Rfc2V0IHsKICAgIHVpbnQzMiBO
dW1iZXJPZlJlcXVlc3RzOwogICAgdm9pZCAqUmVxdWVzdHM7Cn0gQ1NTTV9UUF9SRVFVRVNUX1NF
VCwgKkNTU01fVFBfUkVRVUVTVF9TRVRfUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV90cF9yZXN1
bHRfc2V0IHsKICAgIHVpbnQzMiBOdW1iZXJPZlJlc3VsdHM7CiAgICB2b2lkICpSZXN1bHRzOwp9
IENTU01fVFBfUkVTVUxUX1NFVCwgKkNTU01fVFBfUkVTVUxUX1NFVF9QVFI7Cgp0eXBlZGVmIHVp
bnQzMiBDU1NNX1RQX0NPTkZJUk1fU1RBVFVTLCAqQ1NTTV9UUF9DT05GSVJNX1NUQVRVU19QVFI7
CmVudW0gewogQ1NTTV9UUF9DT05GSVJNX1NUQVRVU19VTktOT1dOID0gMHgwLAoKIENTU01fVFBf
Q09ORklSTV9BQ0NFUFQgPSAweDEsCgoKIENTU01fVFBfQ09ORklSTV9SRUpFQ1QgPSAweDIKCgp9
OwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV90cF9jb25maXJtX3Jlc3BvbnNlIHsKICAgIHVpbnQzMiBO
dW1iZXJPZlJlc3BvbnNlczsKICAgIENTU01fVFBfQ09ORklSTV9TVEFUVVNfUFRSIFJlc3BvbnNl
czsKfSBDU1NNX1RQX0NPTkZJUk1fUkVTUE9OU0UsICpDU1NNX1RQX0NPTkZJUk1fUkVTUE9OU0Vf
UFRSOwoKZW51bSB7CiBDU1NNX0VTVElNQVRFRF9USU1FX1VOS05PV04gPSAtMQp9OwoKZW51bSB7
CiBDU1NNX0VMQVBTRURfVElNRV9VTktOT1dOID0gLTEsCiBDU1NNX0VMQVBTRURfVElNRV9DT01Q
TEVURSA9IC0yCn07Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX3RwX2NlcnRpc3N1ZV9pbnB1dCB7CiAg
ICBDU1NNX1NVQlNFUlZJQ0VfVUlEIENTUFN1YnNlcnZpY2VVaWQ7CiAgICBDU1NNX0NMX0hBTkRM
RSBDTEhhbmRsZTsKICAgIHVpbnQzMiBOdW1iZXJPZlRlbXBsYXRlRmllbGRzOwogICAgQ1NTTV9G
SUVMRF9QVFIgU3ViamVjdENlcnRGaWVsZHM7CiAgICBDU1NNX1RQX1NFUlZJQ0VTIE1vcmVTZXJ2
aWNlUmVxdWVzdHM7CiAgICB1aW50MzIgTnVtYmVyT2ZTZXJ2aWNlQ29udHJvbHM7CiAgICBDU1NN
X0ZJRUxEX1BUUiBTZXJ2aWNlQ29udHJvbHM7CiAgICBDU1NNX0FDQ0VTU19DUkVERU5USUFMU19Q
VFIgVXNlckNyZWRlbnRpYWxzOwp9IENTU01fVFBfQ0VSVElTU1VFX0lOUFVULCAqQ1NTTV9UUF9D
RVJUSVNTVUVfSU5QVVRfUFRSOwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9UUF9DRVJUSVNTVUVfU1RB
VFVTOwplbnVtIHsKIENTU01fVFBfQ0VSVElTU1VFX1NUQVRVU19VTktOT1dOID0gMHgwLAoKIENT
U01fVFBfQ0VSVElTU1VFX09LID0gMHgxLAoKIENTU01fVFBfQ0VSVElTU1VFX09LV0lUSENFUlRN
T0RTID0gMHgyLAoKCiBDU1NNX1RQX0NFUlRJU1NVRV9PS1dJVEhTRVJWSUNFTU9EUyA9IDB4MywK
CgoKIENTU01fVFBfQ0VSVElTU1VFX1JFSkVDVEVEID0gMHg0LAoKCiBDU1NNX1RQX0NFUlRJU1NV
RV9OT1RfQVVUSE9SSVpFRCA9IDB4NSwKCgogQ1NTTV9UUF9DRVJUSVNTVUVfV0lMTF9CRV9SRVZP
S0VEID0gMHg2CgoKfTsKCnR5cGVkZWYgc3RydWN0IGNzc21fdHBfY2VydGlzc3VlX291dHB1dCB7
CiAgICBDU1NNX1RQX0NFUlRJU1NVRV9TVEFUVVMgSXNzdWVTdGF0dXM7CiAgICBDU1NNX0NFUlRH
Uk9VUF9QVFIgQ2VydEdyb3VwOwogICAgQ1NTTV9UUF9TRVJWSUNFUyBQZXJmb3JtZWRTZXJ2aWNl
UmVxdWVzdHM7Cn0gQ1NTTV9UUF9DRVJUSVNTVUVfT1VUUFVULCAqQ1NTTV9UUF9DRVJUSVNTVUVf
T1VUUFVUX1BUUjsKCnR5cGVkZWYgdWludDMyIENTU01fVFBfQ0VSVENIQU5HRV9BQ1RJT047CmVu
dW0gewogQ1NTTV9UUF9DRVJUQ0hBTkdFX05PTkUgPSAweDAsCiBDU1NNX1RQX0NFUlRDSEFOR0Vf
UkVWT0tFID0gMHgxLAoKCgoKIENTU01fVFBfQ0VSVENIQU5HRV9IT0xEID0gMHgyLAojIDE1MzIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL2Nz
c210eXBlLmgiIDMKIENTU01fVFBfQ0VSVENIQU5HRV9SRUxFQVNFID0gMHgzCgoKCgoKfTsKCnR5
cGVkZWYgdWludDMyIENTU01fVFBfQ0VSVENIQU5HRV9SRUFTT047CmVudW0gewogQ1NTTV9UUF9D
RVJUQ0hBTkdFX1JFQVNPTl9VTktOT1dOID0gMHgwLAoKIENTU01fVFBfQ0VSVENIQU5HRV9SRUFT
T05fS0VZQ09NUFJPTUlTRSA9IDB4MSwKCiBDU1NNX1RQX0NFUlRDSEFOR0VfUkVBU09OX0NBQ09N
UFJPTUlTRSA9IDB4MiwKCiBDU1NNX1RQX0NFUlRDSEFOR0VfUkVBU09OX0NFQVNFT1BFUkFUSU9O
ID0gMHgzLAoKCiBDU1NNX1RQX0NFUlRDSEFOR0VfUkVBU09OX0FGRklMSUFUSU9OQ0hBTkdFID0g
MHg0LAoKCiBDU1NNX1RQX0NFUlRDSEFOR0VfUkVBU09OX1NVUEVSQ0VERUQgPSAweDUsCgoKIENT
U01fVFBfQ0VSVENIQU5HRV9SRUFTT05fU1VTUEVDVEVEQ09NUFJPTUlTRSA9IDB4NiwKCiBDU1NN
X1RQX0NFUlRDSEFOR0VfUkVBU09OX0hPTERSRUxFQVNFID0gMHg3CgoKfTsKCnR5cGVkZWYgc3Ry
dWN0IGNzc21fdHBfY2VydGNoYW5nZV9pbnB1dCB7CiAgICBDU1NNX1RQX0NFUlRDSEFOR0VfQUNU
SU9OIEFjdGlvbjsKICAgIENTU01fVFBfQ0VSVENIQU5HRV9SRUFTT04gUmVhc29uOwogICAgQ1NT
TV9DTF9IQU5ETEUgQ0xIYW5kbGU7CiAgICBDU1NNX0RBVEFfUFRSIENlcnQ7CiAgICBDU1NNX0ZJ
RUxEX1BUUiBDaGFuZ2VJbmZvOwogICAgQ1NTTV9USU1FU1RSSU5HIFN0YXJ0VGltZTsKICAgIENT
U01fQUNDRVNTX0NSRURFTlRJQUxTX1BUUiBDYWxsZXJDcmVkZW50aWFsczsKfSBDU1NNX1RQX0NF
UlRDSEFOR0VfSU5QVVQsICpDU1NNX1RQX0NFUlRDSEFOR0VfSU5QVVRfUFRSOwoKdHlwZWRlZiB1
aW50MzIgQ1NTTV9UUF9DRVJUQ0hBTkdFX1NUQVRVUzsKZW51bSB7CiBDU1NNX1RQX0NFUlRDSEFO
R0VfU1RBVFVTX1VOS05PV04gPSAweDAsCgogQ1NTTV9UUF9DRVJUQ0hBTkdFX09LID0gMHgxLAoK
CiBDU1NNX1RQX0NFUlRDSEFOR0VfT0tXSVRITkVXVElNRSA9IDB4MiwKCgogQ1NTTV9UUF9DRVJU
Q0hBTkdFX1dST05HQ0EgPSAweDMsCgoKCiBDU1NNX1RQX0NFUlRDSEFOR0VfUkVKRUNURUQgPSAw
eDQsCgoKIENTU01fVFBfQ0VSVENIQU5HRV9OT1RfQVVUSE9SSVpFRCA9IDB4NQoKCgp9OwoKdHlw
ZWRlZiBzdHJ1Y3QgY3NzbV90cF9jZXJ0Y2hhbmdlX291dHB1dCB7CiAgICBDU1NNX1RQX0NFUlRD
SEFOR0VfU1RBVFVTIEFjdGlvblN0YXR1czsKICAgIENTU01fRklFTEQgUmV2b2tlSW5mbzsKfSBD
U1NNX1RQX0NFUlRDSEFOR0VfT1VUUFVULCAqQ1NTTV9UUF9DRVJUQ0hBTkdFX09VVFBVVF9QVFI7
Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX3RwX2NlcnR2ZXJpZnlfaW5wdXQgewogICAgQ1NTTV9DTF9I
QU5ETEUgQ0xIYW5kbGU7CiAgICBDU1NNX0RBVEFfUFRSIENlcnQ7CiAgICBDU1NNX1RQX1ZFUklG
WV9DT05URVhUX1BUUiBWZXJpZnlDb250ZXh0Owp9IENTU01fVFBfQ0VSVFZFUklGWV9JTlBVVCwg
KkNTU01fVFBfQ0VSVFZFUklGWV9JTlBVVF9QVFI7Cgp0eXBlZGVmIHVpbnQzMiBDU1NNX1RQX0NF
UlRWRVJJRllfU1RBVFVTOwplbnVtIHsKIENTU01fVFBfQ0VSVFZFUklGWV9VTktOT1dOID0gMHgw
LAogQ1NTTV9UUF9DRVJUVkVSSUZZX1ZBTElEID0gMHgxLAogQ1NTTV9UUF9DRVJUVkVSSUZZX0lO
VkFMSUQgPSAweDIsCiBDU1NNX1RQX0NFUlRWRVJJRllfUkVWT0tFRCA9IDB4MywKIENTU01fVFBf
Q0VSVFZFUklGWV9TVVNQRU5ERUQgPSAweDQsCiBDU1NNX1RQX0NFUlRWRVJJRllfRVhQSVJFRCA9
IDB4NSwKIENTU01fVFBfQ0VSVFZFUklGWV9OT1RfVkFMSURfWUVUID0gMHg2LAogQ1NTTV9UUF9D
RVJUVkVSSUZZX0lOVkFMSURfQVVUSE9SSVRZID0gMHg3LAogQ1NTTV9UUF9DRVJUVkVSSUZZX0lO
VkFMSURfU0lHTkFUVVJFID0gMHg4LAogQ1NTTV9UUF9DRVJUVkVSSUZZX0lOVkFMSURfQ0VSVF9W
QUxVRSA9IDB4OSwKIENTU01fVFBfQ0VSVFZFUklGWV9JTlZBTElEX0NFUlRHUk9VUCA9IDB4QSwK
IENTU01fVFBfQ0VSVFZFUklGWV9JTlZBTElEX1BPTElDWSA9IDB4QiwKIENTU01fVFBfQ0VSVFZF
UklGWV9JTlZBTElEX1BPTElDWV9JRFMgPSAweEMsCiBDU1NNX1RQX0NFUlRWRVJJRllfSU5WQUxJ
RF9CQVNJQ19DT05TVFJBSU5UUyA9IDB4RCwKIENTU01fVFBfQ0VSVFZFUklGWV9JTlZBTElEX0NS
TF9ESVNUX1BUID0gMHhFLAogQ1NTTV9UUF9DRVJUVkVSSUZZX0lOVkFMSURfTkFNRV9UUkVFID0g
MHhGLAogQ1NTTV9UUF9DRVJUVkVSSUZZX1VOS05PV05fQ1JJVElDQUxfRVhUID0gMHgxMAp9OwoK
dHlwZWRlZiBzdHJ1Y3QgY3NzbV90cF9jZXJ0dmVyaWZ5X291dHB1dCB7CiAgICBDU1NNX1RQX0NF
UlRWRVJJRllfU1RBVFVTIFZlcmlmeVN0YXR1czsKICAgIHVpbnQzMiBOdW1iZXJPZkV2aWRlbmNl
OwogICAgQ1NTTV9FVklERU5DRV9QVFIgRXZpZGVuY2U7Cn0gQ1NTTV9UUF9DRVJUVkVSSUZZX09V
VFBVVCwgKkNTU01fVFBfQ0VSVFZFUklGWV9PVVRQVVRfUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3Nz
bV90cF9jZXJ0bm90YXJpemVfaW5wdXQgewogICAgQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGU7CiAg
ICB1aW50MzIgTnVtYmVyT2ZGaWVsZHM7CiAgICBDU1NNX0ZJRUxEX1BUUiBNb3JlRmllbGRzOwog
ICAgQ1NTTV9GSUVMRF9QVFIgU2lnblNjb3BlOwogICAgdWludDMyIFNjb3BlU2l6ZTsKICAgIENT
U01fVFBfU0VSVklDRVMgTW9yZVNlcnZpY2VSZXF1ZXN0czsKICAgIHVpbnQzMiBOdW1iZXJPZlNl
cnZpY2VDb250cm9sczsKICAgIENTU01fRklFTERfUFRSIFNlcnZpY2VDb250cm9sczsKICAgIENT
U01fQUNDRVNTX0NSRURFTlRJQUxTX1BUUiBVc2VyQ3JlZGVudGlhbHM7Cn0gQ1NTTV9UUF9DRVJU
Tk9UQVJJWkVfSU5QVVQsICpDU1NNX1RQX0NFUlROT1RBUklaRV9JTlBVVF9QVFI7Cgp0eXBlZGVm
IHVpbnQzMiBDU1NNX1RQX0NFUlROT1RBUklaRV9TVEFUVVM7CmVudW0gewogQ1NTTV9UUF9DRVJU
Tk9UQVJJWkVfU1RBVFVTX1VOS05PV04gPSAweDAsCgogQ1NTTV9UUF9DRVJUTk9UQVJJWkVfT0sg
PSAweDEsCgoKIENTU01fVFBfQ0VSVE5PVEFSSVpFX09LV0lUSE9VVEZJRUxEUyA9IDB4MiwKCgoK
IENTU01fVFBfQ0VSVE5PVEFSSVpFX09LV0lUSFNFUlZJQ0VNT0RTID0gMHgzLAoKCgoKIENTU01f
VFBfQ0VSVE5PVEFSSVpFX1JFSkVDVEVEID0gMHg0LAoKCiBDU1NNX1RQX0NFUlROT1RBUklaRV9O
T1RfQVVUSE9SSVpFRCA9IDB4NQoKCn07Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX3RwX2NlcnRub3Rh
cml6ZV9vdXRwdXQgewogICAgQ1NTTV9UUF9DRVJUTk9UQVJJWkVfU1RBVFVTIE5vdGFyaXplU3Rh
dHVzOwogICAgQ1NTTV9DRVJUR1JPVVBfUFRSIE5vdGFyaXplZENlcnRHcm91cDsKICAgIENTU01f
VFBfU0VSVklDRVMgUGVyZm9ybWVkU2VydmljZVJlcXVlc3RzOwp9IENTU01fVFBfQ0VSVE5PVEFS
SVpFX09VVFBVVCwgKkNTU01fVFBfQ0VSVE5PVEFSSVpFX09VVFBVVF9QVFI7Cgp0eXBlZGVmIHN0
cnVjdCBjc3NtX3RwX2NlcnRyZWNsYWltX2lucHV0IHsKICAgIENTU01fQ0xfSEFORExFIENMSGFu
ZGxlOwogICAgdWludDMyIE51bWJlck9mU2VsZWN0aW9uRmllbGRzOwogICAgQ1NTTV9GSUVMRF9Q
VFIgU2VsZWN0aW9uRmllbGRzOwogICAgQ1NTTV9BQ0NFU1NfQ1JFREVOVElBTFNfUFRSIFVzZXJD
cmVkZW50aWFsczsKfSBDU1NNX1RQX0NFUlRSRUNMQUlNX0lOUFVULCAqQ1NTTV9UUF9DRVJUUkVD
TEFJTV9JTlBVVF9QVFI7Cgp0eXBlZGVmIHVpbnQzMiBDU1NNX1RQX0NFUlRSRUNMQUlNX1NUQVRV
UzsKZW51bSB7CiBDU1NNX1RQX0NFUlRSRUNMQUlNX1NUQVRVU19VTktOT1dOID0gMHgwLAoKIENT
U01fVFBfQ0VSVFJFQ0xBSU1fT0sgPSAweDEsCgoKCiBDU1NNX1RQX0NFUlRSRUNMQUlNX05PTUFU
Q0ggPSAweDIsCgoKCiBDU1NNX1RQX0NFUlRSRUNMQUlNX1JFSkVDVEVEID0gMHgzLAoKCiBDU1NN
X1RQX0NFUlRSRUNMQUlNX05PVF9BVVRIT1JJWkVEID0gMHg0CgoKCn07Cgp0eXBlZGVmIHN0cnVj
dCBjc3NtX3RwX2NlcnRyZWNsYWltX291dHB1dCB7CiAgICBDU1NNX1RQX0NFUlRSRUNMQUlNX1NU
QVRVUyBSZWNsYWltU3RhdHVzOwogICAgQ1NTTV9DRVJUR1JPVVBfUFRSIFJlY2xhaW1lZENlcnRH
cm91cDsKICAgIENTU01fTE9OR19IQU5ETEUgS2V5Q2FjaGVIYW5kbGU7Cn0gQ1NTTV9UUF9DRVJU
UkVDTEFJTV9PVVRQVVQsICpDU1NNX1RQX0NFUlRSRUNMQUlNX09VVFBVVF9QVFI7Cgp0eXBlZGVm
IHN0cnVjdCBjc3NtX3RwX2NybGlzc3VlX2lucHV0IHsKICAgIENTU01fQ0xfSEFORExFIENMSGFu
ZGxlOwogICAgdWludDMyIENybElkZW50aWZpZXI7CiAgICBDU1NNX1RJTUVTVFJJTkcgQ3JsVGhp
c1RpbWU7CiAgICBDU1NNX0ZJRUxEX1BUUiBQb2xpY3lJZGVudGlmaWVyOwogICAgQ1NTTV9BQ0NF
U1NfQ1JFREVOVElBTFNfUFRSIENhbGxlckNyZWRlbnRpYWxzOwp9IENTU01fVFBfQ1JMSVNTVUVf
SU5QVVQsICpDU1NNX1RQX0NSTElTU1VFX0lOUFVUX1BUUjsKCnR5cGVkZWYgdWludDMyIENTU01f
VFBfQ1JMSVNTVUVfU1RBVFVTOwplbnVtIHsKIENTU01fVFBfQ1JMSVNTVUVfU1RBVFVTX1VOS05P
V04gPSAweDAsCgogQ1NTTV9UUF9DUkxJU1NVRV9PSyA9IDB4MSwKCgoKIENTU01fVFBfQ1JMSVNT
VUVfTk9UX0NVUlJFTlQgPSAweDIsCgoKCgoKCiBDU1NNX1RQX0NSTElTU1VFX0lOVkFMSURfRE9N
QUlOID0gMHgzLAoKCgoKIENTU01fVFBfQ1JMSVNTVUVfVU5LTk9XTl9JREVOVElGSUVSID0gMHg0
LAoKCgogQ1NTTV9UUF9DUkxJU1NVRV9SRUpFQ1RFRCA9IDB4NSwKCgoKIENTU01fVFBfQ1JMSVNT
VUVfTk9UX0FVVEhPUklaRUQgPSAweDYKCgoKfTsKCnR5cGVkZWYgc3RydWN0IGNzc21fdHBfY3Js
aXNzdWVfb3V0cHV0IHsKICAgIENTU01fVFBfQ1JMSVNTVUVfU1RBVFVTIElzc3VlU3RhdHVzOwog
ICAgQ1NTTV9FTkNPREVEX0NSTF9QVFIgQ3JsOwogICAgQ1NTTV9USU1FU1RSSU5HIENybE5leHRU
aW1lOwp9IENTU01fVFBfQ1JMSVNTVUVfT1VUUFVULCAqQ1NTTV9UUF9DUkxJU1NVRV9PVVRQVVRf
UFRSOwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9UUF9GT1JNX1RZUEU7CmVudW0gewogQ1NTTV9UUF9G
T1JNX1RZUEVfR0VORVJJQyA9IDB4MCwKIENTU01fVFBfRk9STV9UWVBFX1JFR0lTVFJBVElPTiA9
IDB4MQp9OwoKCgp0eXBlZGVmIHVpbnQzMiBDU1NNX0NMX1RFTVBMQVRFX1RZUEU7CmVudW0gewog
Q1NTTV9DTF9URU1QTEFURV9JTlRFUk1FRElBVEVfQ0VSVCA9IDEsCgoKIENTU01fQ0xfVEVNUExB
VEVfUEtJWF9DRVJUVEVNUExBVEUgPSAyCgp9OwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9DRVJUX0JV
TkRMRV9UWVBFOwplbnVtIHsKICAgIENTU01fQ0VSVF9CVU5ETEVfVU5LTk9XTiA9IDB4MDAsCiAg
ICBDU1NNX0NFUlRfQlVORExFX0NVU1RPTSA9IDB4MDEsCiAgICBDU1NNX0NFUlRfQlVORExFX1BL
Q1M3X1NJR05FRF9EQVRBID0gMHgwMiwKICAgIENTU01fQ0VSVF9CVU5ETEVfUEtDUzdfU0lHTkVE
X0VOVkVMT1BFRF9EQVRBID0gMHgwMywKICAgIENTU01fQ0VSVF9CVU5ETEVfUEtDUzEyID0gMHgw
NCwKICAgIENTU01fQ0VSVF9CVU5ETEVfUEZYID0gMHgwNSwKICAgIENTU01fQ0VSVF9CVU5ETEVf
U1BLSV9TRVFVRU5DRSA9IDB4MDYsCiAgICBDU1NNX0NFUlRfQlVORExFX1BHUF9LRVlSSU5HID0g
MHgwNywKICAgIENTU01fQ0VSVF9CVU5ETEVfTEFTVCA9IDB4N0ZGRiwKCgoKIENTU01fQ0xfQ1VT
VE9NX0NFUlRfQlVORExFX1RZUEUgPSAweDgwMDAKfTsKCnR5cGVkZWYgdWludDMyIENTU01fQ0VS
VF9CVU5ETEVfRU5DT0RJTkc7CmVudW0gewogICAgQ1NTTV9DRVJUX0JVTkRMRV9FTkNPRElOR19V
TktOT1dOID0gMHgwMCwKICAgIENTU01fQ0VSVF9CVU5ETEVfRU5DT0RJTkdfQ1VTVE9NID0gMHgw
MSwKICAgIENTU01fQ0VSVF9CVU5ETEVfRU5DT0RJTkdfQkVSID0gMHgwMiwKICAgIENTU01fQ0VS
VF9CVU5ETEVfRU5DT0RJTkdfREVSID0gMHgwMywKICAgIENTU01fQ0VSVF9CVU5ETEVfRU5DT0RJ
TkdfU0VYUFIgPSAweDA0LAogICAgQ1NTTV9DRVJUX0JVTkRMRV9FTkNPRElOR19QR1AgPSAweDA1
Cn07Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2NlcnRfYnVuZGxlX2hlYWRlciB7CiAgICBDU1NNX0NF
UlRfQlVORExFX1RZUEUgQnVuZGxlVHlwZTsKICAgIENTU01fQ0VSVF9CVU5ETEVfRU5DT0RJTkcg
QnVuZGxlRW5jb2Rpbmc7Cn0gQ1NTTV9DRVJUX0JVTkRMRV9IRUFERVIsICpDU1NNX0NFUlRfQlVO
RExFX0hFQURFUl9QVFI7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2NlcnRfYnVuZGxlIHsKICAgIENT
U01fQ0VSVF9CVU5ETEVfSEVBREVSIEJ1bmRsZUhlYWRlcjsKICAgIENTU01fREFUQSBCdW5kbGU7
Cn0gQ1NTTV9DRVJUX0JVTkRMRSwgKkNTU01fQ0VSVF9CVU5ETEVfUFRSOwoKZW51bSB7CiBDU1NN
X0ZJRUxEVkFMVUVfQ09NUExFWF9EQVRBX1RZUEUgPSAweEZGRkZGRkZGCn07CgoKCnR5cGVkZWYg
dWludDMyIENTU01fREJfQVRUUklCVVRFX05BTUVfRk9STUFULCAqQ1NTTV9EQl9BVFRSSUJVVEVf
TkFNRV9GT1JNQVRfUFRSOwplbnVtIHsKICAgIENTU01fREJfQVRUUklCVVRFX05BTUVfQVNfU1RS
SU5HID0gMCwKICAgIENTU01fREJfQVRUUklCVVRFX05BTUVfQVNfT0lEID0gMSwKIENTU01fREJf
QVRUUklCVVRFX05BTUVfQVNfSU5URUdFUiA9IDIKfTsKCnR5cGVkZWYgdWludDMyIENTU01fREJf
QVRUUklCVVRFX0ZPUk1BVCwgKkNTU01fREJfQVRUUklCVVRFX0ZPUk1BVF9QVFI7CmVudW0gewog
ICAgQ1NTTV9EQl9BVFRSSUJVVEVfRk9STUFUX1NUUklORyA9IDAsCiAgICBDU1NNX0RCX0FUVFJJ
QlVURV9GT1JNQVRfU0lOVDMyID0gMSwKICAgIENTU01fREJfQVRUUklCVVRFX0ZPUk1BVF9VSU5U
MzIgPSAyLAogICAgQ1NTTV9EQl9BVFRSSUJVVEVfRk9STUFUX0JJR19OVU0gPSAzLAogICAgQ1NT
TV9EQl9BVFRSSUJVVEVfRk9STUFUX1JFQUwgPSA0LAogICAgQ1NTTV9EQl9BVFRSSUJVVEVfRk9S
TUFUX1RJTUVfREFURSA9IDUsCiAgICBDU1NNX0RCX0FUVFJJQlVURV9GT1JNQVRfQkxPQiA9IDYs
CiAgICBDU1NNX0RCX0FUVFJJQlVURV9GT1JNQVRfTVVMVElfVUlOVDMyID0gNywKICAgIENTU01f
REJfQVRUUklCVVRFX0ZPUk1BVF9DT01QTEVYID0gOAp9OwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9k
Yl9hdHRyaWJ1dGVfaW5mbyB7CiAgICBDU1NNX0RCX0FUVFJJQlVURV9OQU1FX0ZPUk1BVCBBdHRy
aWJ1dGVOYW1lRm9ybWF0OwogICAgdW5pb24gY3NzbV9kYl9hdHRyaWJ1dGVfbGFiZWwgewogICAg
ICAgIGNoYXIgKkF0dHJpYnV0ZU5hbWU7CiAgICAgICAgQ1NTTV9PSUQgQXR0cmlidXRlT0lEOwog
ICAgICAgIHVpbnQzMiBBdHRyaWJ1dGVJRDsKICAgIH0gTGFiZWw7CiAgICBDU1NNX0RCX0FUVFJJ
QlVURV9GT1JNQVQgQXR0cmlidXRlRm9ybWF0Owp9IENTU01fREJfQVRUUklCVVRFX0lORk8sICpD
U1NNX0RCX0FUVFJJQlVURV9JTkZPX1BUUjsKCnR5cGVkZWYgc3RydWN0IGNzc21fZGJfYXR0cmli
dXRlX2RhdGEgewogICAgQ1NTTV9EQl9BVFRSSUJVVEVfSU5GTyBJbmZvOwogICAgdWludDMyIE51
bWJlck9mVmFsdWVzOwogICAgQ1NTTV9EQVRBX1BUUiBWYWx1ZTsKfSBDU1NNX0RCX0FUVFJJQlVU
RV9EQVRBLCAqQ1NTTV9EQl9BVFRSSUJVVEVfREFUQV9QVFI7Cgp0eXBlZGVmIHVpbnQzMiBDU1NN
X0RCX1JFQ09SRFRZUEU7CmVudW0gewoKIENTU01fREJfUkVDT1JEVFlQRV9TQ0hFTUFfU1RBUlQg
PSAweDAwMDAwMDAwLAogQ1NTTV9EQl9SRUNPUkRUWVBFX1NDSEVNQV9FTkQgPSBDU1NNX0RCX1JF
Q09SRFRZUEVfU0NIRU1BX1NUQVJUICsgNCwKCiBDU1NNX0RCX1JFQ09SRFRZUEVfT1BFTl9HUk9V
UF9TVEFSVCA9IDB4MDAwMDAwMEEsCiBDU1NNX0RCX1JFQ09SRFRZUEVfT1BFTl9HUk9VUF9FTkQg
PSBDU1NNX0RCX1JFQ09SRFRZUEVfT1BFTl9HUk9VUF9TVEFSVCArIDgsCgogQ1NTTV9EQl9SRUNP
UkRUWVBFX0FQUF9ERUZJTkVEX1NUQVJUID0gMHg4MDAwMDAwMCwKIENTU01fREJfUkVDT1JEVFlQ
RV9BUFBfREVGSU5FRF9FTkQgPSAweGZmZmZmZmZmLAoKIENTU01fRExfREJfU0NIRU1BX0lORk8g
PSBDU1NNX0RCX1JFQ09SRFRZUEVfU0NIRU1BX1NUQVJUICsgMCwKIENTU01fRExfREJfU0NIRU1B
X0lOREVYRVMgPSBDU1NNX0RCX1JFQ09SRFRZUEVfU0NIRU1BX1NUQVJUICsgMSwKIENTU01fRExf
REJfU0NIRU1BX0FUVFJJQlVURVMgPSBDU1NNX0RCX1JFQ09SRFRZUEVfU0NIRU1BX1NUQVJUICsg
MiwKIENTU01fRExfREJfU0NIRU1BX1BBUlNJTkdfTU9EVUxFID0gQ1NTTV9EQl9SRUNPUkRUWVBF
X1NDSEVNQV9TVEFSVCArIDMsCgogQ1NTTV9ETF9EQl9SRUNPUkRfQU5ZID0gQ1NTTV9EQl9SRUNP
UkRUWVBFX09QRU5fR1JPVVBfU1RBUlQgKyAwLAogQ1NTTV9ETF9EQl9SRUNPUkRfQ0VSVCA9IENT
U01fREJfUkVDT1JEVFlQRV9PUEVOX0dST1VQX1NUQVJUICsgMSwKIENTU01fRExfREJfUkVDT1JE
X0NSTCA9IENTU01fREJfUkVDT1JEVFlQRV9PUEVOX0dST1VQX1NUQVJUICsgMiwKIENTU01fRExf
REJfUkVDT1JEX1BPTElDWSA9IENTU01fREJfUkVDT1JEVFlQRV9PUEVOX0dST1VQX1NUQVJUICsg
MywKIENTU01fRExfREJfUkVDT1JEX0dFTkVSSUMgPSBDU1NNX0RCX1JFQ09SRFRZUEVfT1BFTl9H
Uk9VUF9TVEFSVCArIDQsCiBDU1NNX0RMX0RCX1JFQ09SRF9QVUJMSUNfS0VZID0gQ1NTTV9EQl9S
RUNPUkRUWVBFX09QRU5fR1JPVVBfU1RBUlQgKyA1LAogQ1NTTV9ETF9EQl9SRUNPUkRfUFJJVkFU
RV9LRVkgPSBDU1NNX0RCX1JFQ09SRFRZUEVfT1BFTl9HUk9VUF9TVEFSVCArIDYsCiBDU1NNX0RM
X0RCX1JFQ09SRF9TWU1NRVRSSUNfS0VZID0gQ1NTTV9EQl9SRUNPUkRUWVBFX09QRU5fR1JPVVBf
U1RBUlQgKyA3LAogQ1NTTV9ETF9EQl9SRUNPUkRfQUxMX0tFWVMgPSBDU1NNX0RCX1JFQ09SRFRZ
UEVfT1BFTl9HUk9VUF9TVEFSVCArIDgKfTsKCmVudW0gewogQ1NTTV9EQl9DRVJUX1VTRV9UUlVT
VEVEID0gMHgwMDAwMDAwMSwKIENTU01fREJfQ0VSVF9VU0VfU1lTVEVNID0gMHgwMDAwMDAwMiwK
IENTU01fREJfQ0VSVF9VU0VfT1dORVIgPSAweDAwMDAwMDA0LAogQ1NTTV9EQl9DRVJUX1VTRV9S
RVZPS0VEID0gMHgwMDAwMDAwOCwKIENTU01fREJfQ0VSVF9VU0VfU0lHTklORyA9IDB4MDAwMDAw
MTAsCiBDU1NNX0RCX0NFUlRfVVNFX1BSSVZBQ1kgPSAweDAwMDAwMDIwCn07Cgp0eXBlZGVmIHN0
cnVjdCBjc3NtX2RiX3JlY29yZF9hdHRyaWJ1dGVfaW5mbyB7CiAgICBDU1NNX0RCX1JFQ09SRFRZ
UEUgRGF0YVJlY29yZFR5cGU7CiAgICB1aW50MzIgTnVtYmVyT2ZBdHRyaWJ1dGVzOwogICAgQ1NT
TV9EQl9BVFRSSUJVVEVfSU5GT19QVFIgQXR0cmlidXRlSW5mbzsKfSBDU1NNX0RCX1JFQ09SRF9B
VFRSSUJVVEVfSU5GTywgKkNTU01fREJfUkVDT1JEX0FUVFJJQlVURV9JTkZPX1BUUjsKCnR5cGVk
ZWYgc3RydWN0IGNzc21fZGJfcmVjb3JkX2F0dHJpYnV0ZV9kYXRhIHsKICAgIENTU01fREJfUkVD
T1JEVFlQRSBEYXRhUmVjb3JkVHlwZTsKICAgIHVpbnQzMiBTZW1hbnRpY0luZm9ybWF0aW9uOwog
ICAgdWludDMyIE51bWJlck9mQXR0cmlidXRlczsKICAgIENTU01fREJfQVRUUklCVVRFX0RBVEFf
UFRSIEF0dHJpYnV0ZURhdGE7Cn0gQ1NTTV9EQl9SRUNPUkRfQVRUUklCVVRFX0RBVEEsICpDU1NN
X0RCX1JFQ09SRF9BVFRSSUJVVEVfREFUQV9QVFI7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2RiX3Bh
cnNpbmdfbW9kdWxlX2luZm8gewogICAgQ1NTTV9EQl9SRUNPUkRUWVBFIFJlY29yZFR5cGU7CiAg
ICBDU1NNX1NVQlNFUlZJQ0VfVUlEIE1vZHVsZVN1YnNlcnZpY2VVaWQ7Cn0gQ1NTTV9EQl9QQVJT
SU5HX01PRFVMRV9JTkZPLCAqQ1NTTV9EQl9QQVJTSU5HX01PRFVMRV9JTkZPX1BUUjsKCnR5cGVk
ZWYgdWludDMyIENTU01fREJfSU5ERVhfVFlQRTsKZW51bSB7CiAgICBDU1NNX0RCX0lOREVYX1VO
SVFVRSA9IDAsCiAgICBDU1NNX0RCX0lOREVYX05PTlVOSVFVRSA9IDEKfTsKCnR5cGVkZWYgdWlu
dDMyIENTU01fREJfSU5ERVhFRF9EQVRBX0xPQ0FUSU9OOwplbnVtIHsKICAgIENTU01fREJfSU5E
RVhfT05fVU5LTk9XTiA9IDAsCiAgICBDU1NNX0RCX0lOREVYX09OX0FUVFJJQlVURSA9IDEsCiAg
ICBDU1NNX0RCX0lOREVYX09OX1JFQ09SRCA9IDIKfTsKCnR5cGVkZWYgc3RydWN0IGNzc21fZGJf
aW5kZXhfaW5mbyB7CiAgICBDU1NNX0RCX0lOREVYX1RZUEUgSW5kZXhUeXBlOwogICAgQ1NTTV9E
Ql9JTkRFWEVEX0RBVEFfTE9DQVRJT04gSW5kZXhlZERhdGFMb2NhdGlvbjsKICAgIENTU01fREJf
QVRUUklCVVRFX0lORk8gSW5mbzsKfSBDU1NNX0RCX0lOREVYX0lORk8sICpDU1NNX0RCX0lOREVY
X0lORk9fUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9kYl91bmlxdWVfcmVjb3JkIHsKICAgIENT
U01fREJfSU5ERVhfSU5GTyBSZWNvcmRMb2NhdG9yOwogICAgQ1NTTV9EQVRBIFJlY29yZElkZW50
aWZpZXI7Cn0gQ1NTTV9EQl9VTklRVUVfUkVDT1JELCAqQ1NTTV9EQl9VTklRVUVfUkVDT1JEX1BU
UjsKCnR5cGVkZWYgc3RydWN0IGNzc21fZGJfcmVjb3JkX2luZGV4X2luZm8gewogICAgQ1NTTV9E
Ql9SRUNPUkRUWVBFIERhdGFSZWNvcmRUeXBlOwogICAgdWludDMyIE51bWJlck9mSW5kZXhlczsK
ICAgIENTU01fREJfSU5ERVhfSU5GT19QVFIgSW5kZXhJbmZvOwp9IENTU01fREJfUkVDT1JEX0lO
REVYX0lORk8sICpDU1NNX0RCX1JFQ09SRF9JTkRFWF9JTkZPX1BUUjsKCnR5cGVkZWYgdWludDMy
IENTU01fREJfQUNDRVNTX1RZUEUsICpDU1NNX0RCX0FDQ0VTU19UWVBFX1BUUjsKZW51bSB7CiBD
U1NNX0RCX0FDQ0VTU19SRUFEID0gMHgwMDAwMSwKIENTU01fREJfQUNDRVNTX1dSSVRFID0gMHgw
MDAwMiwKIENTU01fREJfQUNDRVNTX1BSSVZJTEVHRUQgPSAweDAwMDA0Cn07Cgp0eXBlZGVmIHVp
bnQzMiBDU1NNX0RCX01PRElGWV9NT0RFOwplbnVtIHsKIENTU01fREJfTU9ESUZZX0FUVFJJQlVU
RV9OT05FID0gMCwKIENTU01fREJfTU9ESUZZX0FUVFJJQlVURV9BREQgPSBDU1NNX0RCX01PRElG
WV9BVFRSSUJVVEVfTk9ORSArIDEsCiBDU1NNX0RCX01PRElGWV9BVFRSSUJVVEVfREVMRVRFID0g
Q1NTTV9EQl9NT0RJRllfQVRUUklCVVRFX05PTkUgKyAyLAogQ1NTTV9EQl9NT0RJRllfQVRUUklC
VVRFX1JFUExBQ0UgPSBDU1NNX0RCX01PRElGWV9BVFRSSUJVVEVfTk9ORSArIDMKfTsKCnR5cGVk
ZWYgc3RydWN0IGNzc21fZGJpbmZvIHsKCgoKICAgIHVpbnQzMiBOdW1iZXJPZlJlY29yZFR5cGVz
OwogICAgQ1NTTV9EQl9QQVJTSU5HX01PRFVMRV9JTkZPX1BUUiBEZWZhdWx0UGFyc2luZ01vZHVs
ZXM7CiAgICBDU1NNX0RCX1JFQ09SRF9BVFRSSUJVVEVfSU5GT19QVFIgUmVjb3JkQXR0cmlidXRl
TmFtZXM7CiAgICBDU1NNX0RCX1JFQ09SRF9JTkRFWF9JTkZPX1BUUiBSZWNvcmRJbmRleGVzOwoK
ICAgIENTU01fQk9PTCBJc0xvY2FsOwogICAgY2hhciAqQWNjZXNzUGF0aDsKICAgIHZvaWQgKlJl
c2VydmVkOwp9IENTU01fREJJTkZPLCAqQ1NTTV9EQklORk9fUFRSOwoKdHlwZWRlZiB1aW50MzIg
Q1NTTV9EQl9PUEVSQVRPUiwgKkNTU01fREJfT1BFUkFUT1JfUFRSOwplbnVtIHsKICAgIENTU01f
REJfRVFVQUwgPSAwLAogICAgQ1NTTV9EQl9OT1RfRVFVQUwgPSAxLAogICAgQ1NTTV9EQl9MRVNT
X1RIQU4gPSAyLAogICAgQ1NTTV9EQl9HUkVBVEVSX1RIQU4gPSAzLAogICAgQ1NTTV9EQl9DT05U
QUlOUyA9IDQsCiAgICBDU1NNX0RCX0NPTlRBSU5TX0lOSVRJQUxfU1VCU1RSSU5HID0gNSwKICAg
IENTU01fREJfQ09OVEFJTlNfRklOQUxfU1VCU1RSSU5HID0gNgp9OwoKdHlwZWRlZiB1aW50MzIg
Q1NTTV9EQl9DT05KVU5DVElWRSwgKkNTU01fREJfQ09OSlVOQ1RJVkVfUFRSOwplbnVtIHsKICAg
IENTU01fREJfTk9ORSA9IDAsCiAgICBDU1NNX0RCX0FORCA9IDEsCiAgICBDU1NNX0RCX09SID0g
Mgp9OwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9zZWxlY3Rpb25fcHJlZGljYXRlIHsKICAgIENTU01f
REJfT1BFUkFUT1IgRGJPcGVyYXRvcjsKICAgIENTU01fREJfQVRUUklCVVRFX0RBVEEgQXR0cmli
dXRlOwp9IENTU01fU0VMRUNUSU9OX1BSRURJQ0FURSwgKkNTU01fU0VMRUNUSU9OX1BSRURJQ0FU
RV9QVFI7CgplbnVtIHsKIENTU01fUVVFUllfVElNRUxJTUlUX05PTkUgPSAwCn07CgplbnVtIHsK
IENTU01fUVVFUllfU0laRUxJTUlUX05PTkUgPSAwCn07Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX3F1
ZXJ5X2xpbWl0cyB7CiAgICB1aW50MzIgVGltZUxpbWl0OwogICAgdWludDMyIFNpemVMaW1pdDsK
fSBDU1NNX1FVRVJZX0xJTUlUUywgKkNTU01fUVVFUllfTElNSVRTX1BUUjsKCnR5cGVkZWYgdWlu
dDMyIENTU01fUVVFUllfRkxBR1M7CmVudW0gewogQ1NTTV9RVUVSWV9SRVRVUk5fREFUQSA9IDB4
MDEKfTsKCnR5cGVkZWYgc3RydWN0IGNzc21fcXVlcnkgewogICAgQ1NTTV9EQl9SRUNPUkRUWVBF
IFJlY29yZFR5cGU7CiAgICBDU1NNX0RCX0NPTkpVTkNUSVZFIENvbmp1bmN0aXZlOwogICAgdWlu
dDMyIE51bVNlbGVjdGlvblByZWRpY2F0ZXM7CiAgICBDU1NNX1NFTEVDVElPTl9QUkVESUNBVEVf
UFRSIFNlbGVjdGlvblByZWRpY2F0ZTsKICAgIENTU01fUVVFUllfTElNSVRTIFF1ZXJ5TGltaXRz
OwogICAgQ1NTTV9RVUVSWV9GTEFHUyBRdWVyeUZsYWdzOwp9IENTU01fUVVFUlksICpDU1NNX1FV
RVJZX1BUUjsKCnR5cGVkZWYgdWludDMyIENTU01fRExUWVBFLCAqQ1NTTV9ETFRZUEVfUFRSOwpl
bnVtIHsKICAgIENTU01fRExfVU5LTk9XTiA9IDAsCiAgICBDU1NNX0RMX0NVU1RPTSA9IDEsCiAg
ICBDU1NNX0RMX0xEQVAgPSAyLAogICAgQ1NTTV9ETF9PREJDID0gMywKICAgIENTU01fRExfUEtD
UzExID0gNCwKICAgIENTU01fRExfRkZTID0gNSwKICAgIENTU01fRExfTUVNT1JZID0gNiwKICAg
IENTU01fRExfUkVNT1RFRElSID0gNwp9OwoKdHlwZWRlZiB2b2lkICpDU1NNX0RMX0NVU1RPTV9B
VFRSSUJVVEVTOwp0eXBlZGVmIHZvaWQgKkNTU01fRExfTERBUF9BVFRSSUJVVEVTOwp0eXBlZGVm
IHZvaWQgKkNTU01fRExfT0RCQ19BVFRSSUJVVEVTOwp0eXBlZGVmIHZvaWQgKkNTU01fRExfRkZT
X0FUVFJJQlVURVM7Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2RsX3BrY3MxMV9hdHRyaWJ1dGVzIHsK
ICAgIHVpbnQzMiBEZXZpY2VBY2Nlc3NGbGFnczsKfSAqQ1NTTV9ETF9QS0NTMTFfQVRUUklCVVRF
LCAqQ1NTTV9ETF9QS0NTMTFfQVRUUklCVVRFX1BUUjsKCmVudW0gewogQ1NTTV9EQl9EQVRBU1RP
UkVTX1VOS05PV04gPSAweEZGRkZGRkZGCn07Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX25hbWVfbGlz
dCB7CiAgICB1aW50MzIgTnVtU3RyaW5nczsKICAgIGNoYXIgKipTdHJpbmc7Cn0gQ1NTTV9OQU1F
X0xJU1QsICpDU1NNX05BTUVfTElTVF9QVFI7Cgp0eXBlZGVmIHVpbnQzMiBDU1NNX0RCX1JFVFJJ
RVZBTF9NT0RFUzsKZW51bSB7CiBDU1NNX0RCX1RSQU5TQUNUSU9OQUxfTU9ERSA9IDAsCiBDU1NN
X0RCX0ZJTEVTWVNURU1TQ0FOX01PREUgPSAxCn07Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX2RiX3Nj
aGVtYV9hdHRyaWJ1dGVfaW5mbyB7CiAgICB1aW50MzIgQXR0cmlidXRlSWQ7CiAgICBjaGFyICpB
dHRyaWJ1dGVOYW1lOwogICAgQ1NTTV9PSUQgQXR0cmlidXRlTmFtZUlEOwogICAgQ1NTTV9EQl9B
VFRSSUJVVEVfRk9STUFUIERhdGFUeXBlOwp9IENTU01fREJfU0NIRU1BX0FUVFJJQlVURV9JTkZP
LCAqQ1NTTV9EQl9TQ0hFTUFfQVRUUklCVVRFX0lORk9fUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3Nz
bV9kYl9zY2hlbWFfaW5kZXhfaW5mbyB7CiAgICB1aW50MzIgQXR0cmlidXRlSWQ7CiAgICB1aW50
MzIgSW5kZXhJZDsKICAgIENTU01fREJfSU5ERVhfVFlQRSBJbmRleFR5cGU7CiAgICBDU1NNX0RC
X0lOREVYRURfREFUQV9MT0NBVElPTiBJbmRleGVkRGF0YUxvY2F0aW9uOwp9IENTU01fREJfU0NI
RU1BX0lOREVYX0lORk8sICpDU1NNX0RCX1NDSEVNQV9JTkRFWF9JTkZPX1BUUjsKCgp9CiMgMzEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL2Nz
c21hcHBsZS5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5m
cmFtZXdvcmsvSGVhZGVycy94NTA5ZGVmcy5oIiAxIDMKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMveDUwOWRlZnMuaCIgMwojZGVmaW5l
IF9YNTA5REVGU19IXyAxCgoKCgpleHRlcm4gIkMiIHsKCgp0eXBlZGVmIHVpbnQ4IENTU01fQkVS
X1RBRzsKI2RlZmluZSBCRVJfVEFHX1VOS05PV04gMAojZGVmaW5lIEJFUl9UQUdfQk9PTEVBTiAx
CiNkZWZpbmUgQkVSX1RBR19JTlRFR0VSIDIKI2RlZmluZSBCRVJfVEFHX0JJVF9TVFJJTkcgMwoj
ZGVmaW5lIEJFUl9UQUdfT0NURVRfU1RSSU5HIDQKI2RlZmluZSBCRVJfVEFHX05VTEwgNQojZGVm
aW5lIEJFUl9UQUdfT0lEIDYKI2RlZmluZSBCRVJfVEFHX09CSkVDVF9ERVNDUklQVE9SIDcKI2Rl
ZmluZSBCRVJfVEFHX0VYVEVSTkFMIDgKI2RlZmluZSBCRVJfVEFHX1JFQUwgOQojZGVmaW5lIEJF
Ul9UQUdfRU5VTUVSQVRFRCAxMAoKI2RlZmluZSBCRVJfVEFHX1BLSVhfVVRGOF9TVFJJTkcgMTIK
I2RlZmluZSBCRVJfVEFHX1NFUVVFTkNFIDE2CiNkZWZpbmUgQkVSX1RBR19TRVQgMTcKI2RlZmlu
ZSBCRVJfVEFHX05VTUVSSUNfU1RSSU5HIDE4CiNkZWZpbmUgQkVSX1RBR19QUklOVEFCTEVfU1RS
SU5HIDE5CiNkZWZpbmUgQkVSX1RBR19UNjFfU1RSSU5HIDIwCiNkZWZpbmUgQkVSX1RBR19URUxF
VEVYX1NUUklORyBCRVJfVEFHX1Q2MV9TVFJJTkcKI2RlZmluZSBCRVJfVEFHX1ZJREVPVEVYX1NU
UklORyAyMQojZGVmaW5lIEJFUl9UQUdfSUE1X1NUUklORyAyMgojZGVmaW5lIEJFUl9UQUdfVVRD
X1RJTUUgMjMKI2RlZmluZSBCRVJfVEFHX0dFTkVSQUxJWkVEX1RJTUUgMjQKI2RlZmluZSBCRVJf
VEFHX0dSQVBISUNfU1RSSU5HIDI1CiNkZWZpbmUgQkVSX1RBR19JU082NDZfU1RSSU5HIDI2CiNk
ZWZpbmUgQkVSX1RBR19HRU5FUkFMX1NUUklORyAyNwojZGVmaW5lIEJFUl9UQUdfVklTSUJMRV9T
VFJJTkcgQkVSX1RBR19JU082NDZfU1RSSU5HCgojZGVmaW5lIEJFUl9UQUdfUEtJWF9VTklWRVJT
QUxfU1RSSU5HIDI4CiNkZWZpbmUgQkVSX1RBR19QS0lYX0JNUF9TVFJJTkcgMzAKCgoKCnR5cGVk
ZWYgc3RydWN0IGNzc21feDUwOV9hbGdvcml0aG1faWRlbnRpZmllciB7CiAgICBDU1NNX09JRCBh
bGdvcml0aG07CiAgICBDU1NNX0RBVEEgcGFyYW1ldGVyczsKfSBDU1NNX1g1MDlfQUxHT1JJVEhN
X0lERU5USUZJRVIsICpDU1NNX1g1MDlfQUxHT1JJVEhNX0lERU5USUZJRVJfUFRSOwoKCnR5cGVk
ZWYgc3RydWN0IGNzc21feDUwOV90eXBlX3ZhbHVlX3BhaXIgewogICAgQ1NTTV9PSUQgdHlwZTsK
ICAgIENTU01fQkVSX1RBRyB2YWx1ZVR5cGU7CgogICAgQ1NTTV9EQVRBIHZhbHVlOwp9IENTU01f
WDUwOV9UWVBFX1ZBTFVFX1BBSVIsICpDU1NNX1g1MDlfVFlQRV9WQUxVRV9QQUlSX1BUUjsKCnR5
cGVkZWYgc3RydWN0IGNzc21feDUwOV9yZG4gewogICAgdWludDMyIG51bWJlck9mUGFpcnM7CiAg
ICBDU1NNX1g1MDlfVFlQRV9WQUxVRV9QQUlSX1BUUiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWU7Cn0g
Q1NTTV9YNTA5X1JETiwgKkNTU01fWDUwOV9SRE5fUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV94
NTA5X25hbWUgewogICAgdWludDMyIG51bWJlck9mUkROczsKICAgIENTU01fWDUwOV9SRE5fUFRS
IFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWU7Cn0gQ1NTTV9YNTA5X05BTUUsICpDU1NNX1g1MDlf
TkFNRV9QVFI7CgoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV94NTA5X3N1YmplY3RfcHVibGljX2tleV9p
bmZvIHsKICAgIENTU01fWDUwOV9BTEdPUklUSE1fSURFTlRJRklFUiBhbGdvcml0aG07CiAgICBD
U1NNX0RBVEEgc3ViamVjdFB1YmxpY0tleTsKfSBDU1NNX1g1MDlfU1VCSkVDVF9QVUJMSUNfS0VZ
X0lORk8sICpDU1NNX1g1MDlfU1VCSkVDVF9QVUJMSUNfS0VZX0lORk9fUFRSOwoKdHlwZWRlZiBz
dHJ1Y3QgY3NzbV94NTA5X3RpbWUgewogICAgQ1NTTV9CRVJfVEFHIHRpbWVUeXBlOwogICAgQ1NT
TV9EQVRBIHRpbWU7Cn0gQ1NTTV9YNTA5X1RJTUUsICpDU1NNX1g1MDlfVElNRV9QVFI7CgoKdHlw
ZWRlZiBzdHJ1Y3QgeDUwOV92YWxpZGl0eSB7CiAgICBDU1NNX1g1MDlfVElNRSBub3RCZWZvcmU7
CiAgICBDU1NNX1g1MDlfVElNRSBub3RBZnRlcjsKfSBDU1NNX1g1MDlfVkFMSURJVFksICpDU1NN
X1g1MDlfVkFMSURJVFlfUFRSOwoKI2RlZmluZSBDU1NNX1g1MDlfT1BUSU9OX1BSRVNFTlQgQ1NT
TV9UUlVFCiNkZWZpbmUgQ1NTTV9YNTA5X09QVElPTl9OT1RfUFJFU0VOVCBDU1NNX0ZBTFNFCnR5
cGVkZWYgQ1NTTV9CT09MIENTU01fWDUwOV9PUFRJT047Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX3g1
MDlleHRfYmFzaWNDb25zdHJhaW50cyB7CiAgICBDU1NNX0JPT0wgY0E7CiAgICBDU1NNX1g1MDlf
T1BUSU9OIHBhdGhMZW5Db25zdHJhaW50UHJlc2VudDsKICAgIHVpbnQzMiBwYXRoTGVuQ29uc3Ry
YWludDsKfSBDU1NNX1g1MDlFWFRfQkFTSUNDT05TVFJBSU5UUywgKkNTU01fWDUwOUVYVF9CQVNJ
Q0NPTlNUUkFJTlRTX1BUUjsKCnR5cGVkZWYgZW51bSBleHRlbnNpb25fZGF0YV9mb3JtYXQgewog
ICAgQ1NTTV9YNTA5X0RBVEFGT1JNQVRfRU5DT0RFRCA9IDAsCiAgICBDU1NNX1g1MDlfREFUQUZP
Uk1BVF9QQVJTRUQsCiAgICBDU1NNX1g1MDlfREFUQUZPUk1BVF9QQUlSCn0gQ1NTTV9YNTA5RVhU
X0RBVEFfRk9STUFUOwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV94NTA5X2V4dGVuc2lvblRhZ0FuZFZh
bHVlIHsKICAgIENTU01fQkVSX1RBRyB0eXBlOwogICAgQ1NTTV9EQVRBIHZhbHVlOwp9IENTU01f
WDUwOUVYVF9UQUdhbmRWQUxVRSwgKkNTU01fWDUwOUVYVF9UQUdhbmRWQUxVRV9QVFI7Cgp0eXBl
ZGVmIHN0cnVjdCBjc3NtX3g1MDlleHRfcGFpciB7CiAgICBDU1NNX1g1MDlFWFRfVEFHYW5kVkFM
VUUgdGFnQW5kVmFsdWU7CiAgICB2b2lkICpwYXJzZWRWYWx1ZTsKfSBDU1NNX1g1MDlFWFRfUEFJ
UiwgKkNTU01fWDUwOUVYVF9QQUlSX1BUUjsKCgp0eXBlZGVmIHN0cnVjdCBjc3NtX3g1MDlfZXh0
ZW5zaW9uIHsKICAgIENTU01fT0lEIGV4dG5JZDsKICAgIENTU01fQk9PTCBjcml0aWNhbDsKICAg
IENTU01fWDUwOUVYVF9EQVRBX0ZPUk1BVCBmb3JtYXQ7CiAgICB1bmlvbiBjc3NtX3g1MDlleHRf
dmFsdWUgewogICAgICAgIENTU01fWDUwOUVYVF9UQUdhbmRWQUxVRSAqdGFnQW5kVmFsdWU7CiAg
ICAgICAgdm9pZCAqcGFyc2VkVmFsdWU7CiAgICAgICAgQ1NTTV9YNTA5RVhUX1BBSVIgKnZhbHVl
UGFpcjsKICAgIH0gdmFsdWU7CiAgICBDU1NNX0RBVEEgQkVSdmFsdWU7Cn0gQ1NTTV9YNTA5X0VY
VEVOU0lPTiwgKkNTU01fWDUwOV9FWFRFTlNJT05fUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV94
NTA5X2V4dGVuc2lvbnMgewogICAgdWludDMyIG51bWJlck9mRXh0ZW5zaW9uczsKICAgIENTU01f
WDUwOV9FWFRFTlNJT05fUFRSIGV4dGVuc2lvbnM7Cn0gQ1NTTV9YNTA5X0VYVEVOU0lPTlMsICpD
U1NNX1g1MDlfRVhURU5TSU9OU19QVFI7CgoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV94NTA5X3Ric19j
ZXJ0aWZpY2F0ZSB7CiAgICBDU1NNX0RBVEEgdmVyc2lvbjsKICAgIENTU01fREFUQSBzZXJpYWxO
dW1iZXI7CiAgICBDU1NNX1g1MDlfQUxHT1JJVEhNX0lERU5USUZJRVIgc2lnbmF0dXJlOwogICAg
Q1NTTV9YNTA5X05BTUUgaXNzdWVyOwogICAgQ1NTTV9YNTA5X1ZBTElESVRZIHZhbGlkaXR5Owog
ICAgQ1NTTV9YNTA5X05BTUUgc3ViamVjdDsKICAgIENTU01fWDUwOV9TVUJKRUNUX1BVQkxJQ19L
RVlfSU5GTyBzdWJqZWN0UHVibGljS2V5SW5mbzsKICAgIENTU01fREFUQSBpc3N1ZXJVbmlxdWVJ
ZGVudGlmaWVyOwogICAgQ1NTTV9EQVRBIHN1YmplY3RVbmlxdWVJZGVudGlmaWVyOwogICAgQ1NT
TV9YNTA5X0VYVEVOU0lPTlMgZXh0ZW5zaW9uczsKfSBDU1NNX1g1MDlfVEJTX0NFUlRJRklDQVRF
LCAqQ1NTTV9YNTA5X1RCU19DRVJUSUZJQ0FURV9QVFI7CgoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV94
NTA5X3NpZ25hdHVyZSB7CiAgICBDU1NNX1g1MDlfQUxHT1JJVEhNX0lERU5USUZJRVIgYWxnb3Jp
dGhtSWRlbnRpZmllcjsKICAgIENTU01fREFUQSBlbmNyeXB0ZWQ7Cn0gQ1NTTV9YNTA5X1NJR05B
VFVSRSwgKkNTU01fWDUwOV9TSUdOQVRVUkVfUFRSOwoKCnR5cGVkZWYgc3RydWN0IGNzc21feDUw
OV9zaWduZWRfY2VydGlmaWNhdGUgewogICAgQ1NTTV9YNTA5X1RCU19DRVJUSUZJQ0FURSBjZXJ0
aWZpY2F0ZTsKICAgIENTU01fWDUwOV9TSUdOQVRVUkUgc2lnbmF0dXJlOwp9IENTU01fWDUwOV9T
SUdORURfQ0VSVElGSUNBVEUsICpDU1NNX1g1MDlfU0lHTkVEX0NFUlRJRklDQVRFX1BUUjsKCnR5
cGVkZWYgc3RydWN0IGNzc21feDUwOWV4dF9wb2xpY3lRdWFsaWZpZXJJbmZvIHsKICAgIENTU01f
T0lEIHBvbGljeVF1YWxpZmllcklkOwogICAgQ1NTTV9EQVRBIHZhbHVlOwp9IENTU01fWDUwOUVY
VF9QT0xJQ1lRVUFMSUZJRVJJTkZPLCAqQ1NTTV9YNTA5RVhUX1BPTElDWVFVQUxJRklFUklORk9f
UFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV94NTA5ZXh0X3BvbGljeVF1YWxpZmllcnMgewogICAg
dWludDMyIG51bWJlck9mUG9saWN5UXVhbGlmaWVyczsKICAgIENTU01fWDUwOUVYVF9QT0xJQ1lR
VUFMSUZJRVJJTkZPICpwb2xpY3lRdWFsaWZpZXI7Cn0gQ1NTTV9YNTA5RVhUX1BPTElDWVFVQUxJ
RklFUlMsICpDU1NNX1g1MDlFWFRfUE9MSUNZUVVBTElGSUVSU19QVFI7Cgp0eXBlZGVmIHN0cnVj
dCBjc3NtX3g1MDlleHRfcG9saWN5SW5mbyB7CiAgICBDU1NNX09JRCBwb2xpY3lJZGVudGlmaWVy
OwogICAgQ1NTTV9YNTA5RVhUX1BPTElDWVFVQUxJRklFUlMgcG9saWN5UXVhbGlmaWVyczsKfSBD
U1NNX1g1MDlFWFRfUE9MSUNZSU5GTywgKkNTU01fWDUwOUVYVF9QT0xJQ1lJTkZPX1BUUjsKCgoK
Cgp0eXBlZGVmIHN0cnVjdCBjc3NtX3g1MDlfcmV2b2tlZF9jZXJ0X2VudHJ5IHsKICAgIENTU01f
REFUQSBjZXJ0aWZpY2F0ZVNlcmlhbE51bWJlcjsKICAgIENTU01fWDUwOV9USU1FIHJldm9jYXRp
b25EYXRlOwogICAgQ1NTTV9YNTA5X0VYVEVOU0lPTlMgZXh0ZW5zaW9uczsKfSBDU1NNX1g1MDlf
UkVWT0tFRF9DRVJUX0VOVFJZLCAqQ1NTTV9YNTA5X1JFVk9LRURfQ0VSVF9FTlRSWV9QVFI7Cgp0
eXBlZGVmIHN0cnVjdCBjc3NtX3g1MDlfcmV2b2tlZF9jZXJ0X2xpc3QgewogICAgdWludDMyIG51
bWJlck9mUmV2b2tlZENlcnRFbnRyaWVzOwogICAgQ1NTTV9YNTA5X1JFVk9LRURfQ0VSVF9FTlRS
WV9QVFIgcmV2b2tlZENlcnRFbnRyeTsKfSBDU1NNX1g1MDlfUkVWT0tFRF9DRVJUX0xJU1QsICpD
U1NNX1g1MDlfUkVWT0tFRF9DRVJUX0xJU1RfUFRSOwoKCnR5cGVkZWYgc3RydWN0IGNzc21feDUw
OV90YnNfY2VydGxpc3QgewogICAgQ1NTTV9EQVRBIHZlcnNpb247CiAgICBDU1NNX1g1MDlfQUxH
T1JJVEhNX0lERU5USUZJRVIgc2lnbmF0dXJlOwogICAgQ1NTTV9YNTA5X05BTUUgaXNzdWVyOwog
ICAgQ1NTTV9YNTA5X1RJTUUgdGhpc1VwZGF0ZTsKICAgIENTU01fWDUwOV9USU1FIG5leHRVcGRh
dGU7CiAgICBDU1NNX1g1MDlfUkVWT0tFRF9DRVJUX0xJU1RfUFRSIHJldm9rZWRDZXJ0aWZpY2F0
ZXM7CiAgICBDU1NNX1g1MDlfRVhURU5TSU9OUyBleHRlbnNpb25zOwp9IENTU01fWDUwOV9UQlNf
Q0VSVExJU1QsICpDU1NNX1g1MDlfVEJTX0NFUlRMSVNUX1BUUjsKCnR5cGVkZWYgc3RydWN0IGNz
c21feDUwOV9zaWduZWRfY3JsIHsKICAgIENTU01fWDUwOV9UQlNfQ0VSVExJU1QgdGJzQ2VydExp
c3Q7CiAgICBDU1NNX1g1MDlfU0lHTkFUVVJFIHNpZ25hdHVyZTsKfSBDU1NNX1g1MDlfU0lHTkVE
X0NSTCwgKkNTU01fWDUwOV9TSUdORURfQ1JMX1BUUjsKCgp9CiMgMzIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL2Nzc21hcHBsZS5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVy
cy9jZXJ0ZXh0ZW5zaW9ucy5oIiAxIDMKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
U2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvY2VydGV4dGVuc2lvbnMuaCIgMwojZGVmaW5lIF9D
RVJUX0VYVEVOU0lPTlNfSF8gCiMgODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL2NlcnRleHRlbnNpb25zLmgiIDMKdHlwZWRlZiBlbnVtIHsK
IEdOVF9PdGhlck5hbWUgPSAwLAogR05UX1JGQzgyMk5hbWUsCiBHTlRfRE5TTmFtZSwKIEdOVF9Y
NDAwQWRkcmVzcywKIEdOVF9EaXJlY3RvcnlOYW1lLAogR05UX0VkaVBhcnR5TmFtZSwKIEdOVF9V
UkksCiBHTlRfSVBBZGRyZXNzLAogR05UX1JlZ2lzdGVyZWRJRAp9IENFX0dlbmVyYWxOYW1lVHlw
ZTsKCnR5cGVkZWYgc3RydWN0IHsKIENTU01fT0lEIHR5cGVJZDsKIENTU01fREFUQSB2YWx1ZTsK
fSBDRV9PdGhlck5hbWU7Cgp0eXBlZGVmIHN0cnVjdCB7CiBDRV9HZW5lcmFsTmFtZVR5cGUgbmFt
ZVR5cGU7CiBDU1NNX0JPT0wgYmVyRW5jb2RlZDsKIENTU01fREFUQSBuYW1lOwp9IENFX0dlbmVy
YWxOYW1lOwoKdHlwZWRlZiBzdHJ1Y3QgewogdWludDMyIG51bU5hbWVzOwogQ0VfR2VuZXJhbE5h
bWUgKmdlbmVyYWxOYW1lOwp9IENFX0dlbmVyYWxOYW1lczsKIyAxMjAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL2NlcnRleHRlbnNpb25zLmgi
IDMKdHlwZWRlZiBzdHJ1Y3QgewogQ1NTTV9CT09MIGtleUlkZW50aWZpZXJQcmVzZW50OwogQ1NT
TV9EQVRBIGtleUlkZW50aWZpZXI7CiBDU1NNX0JPT0wgZ2VuZXJhbE5hbWVzUHJlc2VudDsKIENF
X0dlbmVyYWxOYW1lcyAqZ2VuZXJhbE5hbWVzOwogQ1NTTV9CT09MIHNlcmlhbE51bWJlclByZXNl
bnQ7CiBDU1NNX0RBVEEgc2VyaWFsTnVtYmVyOwp9IENFX0F1dGhvcml0eUtleUlEOwoKCgoKCgoK
dHlwZWRlZiBDU1NNX0RBVEEgQ0VfU3ViamVjdEtleUlEOwojIDE1NCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvY2VydGV4dGVuc2lvbnMuaCIg
Mwp0eXBlZGVmIHVpbnQxNiBDRV9LZXlVc2FnZTsKCiNkZWZpbmUgQ0VfS1VfRGlnaXRhbFNpZ25h
dHVyZSAweDgwMDAKI2RlZmluZSBDRV9LVV9Ob25SZXB1ZGlhdGlvbiAweDQwMDAKI2RlZmluZSBD
RV9LVV9LZXlFbmNpcGhlcm1lbnQgMHgyMDAwCiNkZWZpbmUgQ0VfS1VfRGF0YUVuY2lwaGVybWVu
dCAweDEwMDAKI2RlZmluZSBDRV9LVV9LZXlBZ3JlZW1lbnQgMHgwODAwCiNkZWZpbmUgQ0VfS1Vf
S2V5Q2VydFNpZ24gMHgwNDAwCiNkZWZpbmUgQ0VfS1VfQ1JMU2lnbiAweDAyMDAKI2RlZmluZSBD
RV9LVV9FbmNpcGhlck9ubHkgMHgwMTAwCiNkZWZpbmUgQ0VfS1VfRGVjaXBoZXJPbmx5IDB4MDA4
MAojIDE4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hl
YWRlcnMvY2VydGV4dGVuc2lvbnMuaCIgMwp0eXBlZGVmIHVpbnQzMiBDRV9DcmxSZWFzb247Cgoj
ZGVmaW5lIENFX0NSX1Vuc3BlY2lmaWVkIDAKI2RlZmluZSBDRV9DUl9LZXlDb21wcm9taXNlIDEK
I2RlZmluZSBDRV9DUl9DQUNvbXByb21pc2UgMgojZGVmaW5lIENFX0NSX0FmZmlsaWF0aW9uQ2hh
bmdlZCAzCiNkZWZpbmUgQ0VfQ1JfU3VwZXJzZWRlZCA0CiNkZWZpbmUgQ0VfQ1JfQ2Vzc2F0aW9u
T2ZPcGVyYXRpb24gNQojZGVmaW5lIENFX0NSX0NlcnRpZmljYXRlSG9sZCA2CiNkZWZpbmUgQ0Vf
Q1JfUmVtb3ZlRnJvbUNSTCA4CiMgMjE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1
cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jZXJ0ZXh0ZW5zaW9ucy5oIiAzCnR5cGVkZWYgc3RydWN0
IHsKIHVpbnQzMiBudW1QdXJwb3NlczsKIENTU01fT0lEX1BUUiBwdXJwb3NlczsKfSBDRV9FeHRl
bmRlZEtleVVzYWdlOwojIDIyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHku
ZnJhbWV3b3JrL0hlYWRlcnMvY2VydGV4dGVuc2lvbnMuaCIgMwp0eXBlZGVmIHN0cnVjdCB7CiBD
U1NNX0JPT0wgY0E7CiBDU1NNX0JPT0wgcGF0aExlbkNvbnN0cmFpbnRQcmVzZW50OwogdWludDMy
IHBhdGhMZW5Db25zdHJhaW50Owp9IENFX0Jhc2ljQ29uc3RyYWludHM7CiMgMjg1ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jZXJ0ZXh0ZW5z
aW9ucy5oIiAzCnR5cGVkZWYgc3RydWN0IHsKIENTU01fT0lEIHBvbGljeVF1YWxpZmllcklkOwog
Q1NTTV9EQVRBIHF1YWxpZmllcjsKCn0gQ0VfUG9saWN5UXVhbGlmaWVySW5mbzsKCnR5cGVkZWYg
c3RydWN0IHsKIENTU01fT0lEIGNlcnRQb2xpY3lJZDsKIHVpbnQzMiBudW1Qb2xpY3lRdWFsaWZp
ZXJzOwogQ0VfUG9saWN5UXVhbGlmaWVySW5mbyAqcG9saWN5UXVhbGlmaWVyczsKfSBDRV9Qb2xp
Y3lJbmZvcm1hdGlvbjsKCnR5cGVkZWYgc3RydWN0IHsKIHVpbnQzMiBudW1Qb2xpY2llczsKIENF
X1BvbGljeUluZm9ybWF0aW9uICpwb2xpY2llczsKfSBDRV9DZXJ0UG9saWNpZXM7CiMgMzA5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jZXJ0
ZXh0ZW5zaW9ucy5oIiAzCnR5cGVkZWYgdWludDE2IENFX05ldHNjYXBlQ2VydFR5cGU7CiMgMzUx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9j
ZXJ0ZXh0ZW5zaW9ucy5oIiAzCnR5cGVkZWYgdWludDggQ0VfQ3JsRGlzdFJlYXNvbkZsYWdzOwoK
I2RlZmluZSBDRV9DRF9VbnNwZWNpZmllZCAweDgwCiNkZWZpbmUgQ0VfQ0RfS2V5Q29tcHJvbWlz
ZSAweDQwCiNkZWZpbmUgQ0VfQ0RfQ0FDb21wcm9taXNlIDB4MjAKI2RlZmluZSBDRV9DRF9BZmZp
bGlhdGlvbkNoYW5nZWQgMHgxMAojZGVmaW5lIENFX0NEX1N1cGVyc2VkZWQgMHgwOAojZGVmaW5l
IENFX0NEX0Nlc3NhdGlvbk9mT3BlcmF0aW9uIDB4MDQKI2RlZmluZSBDRV9DRF9DZXJ0aWZpY2F0
ZUhvbGQgMHgwMgoKdHlwZWRlZiBlbnVtIHsKIENFX0NETlRfRnVsbE5hbWUsCiBDRV9DRE5UX05h
bWVSZWxhdGl2ZVRvQ3JsSXNzdWVyCn0gQ0VfQ3JsRGlzdHJpYnV0aW9uUG9pbnROYW1lVHlwZTsK
CnR5cGVkZWYgc3RydWN0IHsKIENFX0NybERpc3RyaWJ1dGlvblBvaW50TmFtZVR5cGUgbmFtZVR5
cGU7CiB1bmlvbiB7CiAgQ0VfR2VuZXJhbE5hbWVzICpmdWxsTmFtZTsKICBDU1NNX1g1MDlfUkRO
X1BUUiByZG47CiB9IGRwbjsKfSBDRV9EaXN0cmlidXRpb25Qb2ludE5hbWU7CgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgewogQ0VfRGlzdHJpYnV0aW9uUG9pbnROYW1lICpkaXN0UG9pbnROYW1lOwogQ1NT
TV9CT09MIHJlYXNvbnNQcmVzZW50OwogQ0VfQ3JsRGlzdFJlYXNvbkZsYWdzIHJlYXNvbnM7CiBD
RV9HZW5lcmFsTmFtZXMgKmNybElzc3VlcjsKfSBDRV9DUkxEaXN0cmlidXRpb25Qb2ludDsKCnR5
cGVkZWYgc3RydWN0IHsKIHVpbnQzMiBudW1EaXN0UG9pbnRzOwogQ0VfQ1JMRGlzdHJpYnV0aW9u
UG9pbnQgKmRpc3RQb2ludHM7Cn0gQ0VfQ1JMRGlzdFBvaW50c1N5bnRheDsKIyA0MDMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL2NlcnRleHRl
bnNpb25zLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogQ1NTTV9PSUQgYWNjZXNzTWV0aG9kOwogQ0Vf
R2VuZXJhbE5hbWUgYWNjZXNzTG9jYXRpb247Cn0gQ0VfQWNjZXNzRGVzY3JpcHRpb247Cgp0eXBl
ZGVmIHN0cnVjdCB7CiB1aW50MzIgbnVtQWNjZXNzRGVzY3JpcHRpb25zOwogQ0VfQWNjZXNzRGVz
Y3JpcHRpb24gKmFjY2Vzc0Rlc2NyaXB0aW9uczsKfSBDRV9BdXRob3JpdHlJbmZvQWNjZXNzOwoj
IDQyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRl
cnMvY2VydGV4dGVuc2lvbnMuaCIgMwp0eXBlZGVmIENFX0dlbmVyYWxOYW1lcyBDRV9OYW1lUmVn
aXN0cmF0aW9uQXV0aG9yaXRpZXM7CgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKIENTU01fT0lEICpz
ZW1hbnRpY3NJZGVudGlmaWVyOwogQ0VfTmFtZVJlZ2lzdHJhdGlvbkF1dGhvcml0aWVzICpuYW1l
UmVnaXN0cmF0aW9uQXV0aG9yaXRpZXM7Cn0gQ0VfU2VtYW50aWNzSW5mb3JtYXRpb247CiMgNDQx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9j
ZXJ0ZXh0ZW5zaW9ucy5oIiAzCnR5cGVkZWYgc3RydWN0IHsKIENTU01fT0lEIHN0YXRlbWVudElk
OwogQ0VfU2VtYW50aWNzSW5mb3JtYXRpb24gKnNlbWFudGljc0luZm87CiBDU1NNX0RBVEEgKm90
aGVySW5mbzsKfSBDRV9RQ19TdGF0ZW1lbnQ7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiB1aW50MzIg
bnVtUUNTdGF0ZW1lbnRzOwogQ0VfUUNfU3RhdGVtZW50ICpxY1N0YXRlbWVudHM7Cn0gQ0VfUUNf
U3RhdGVtZW50czsKIyA0NjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZy
YW1ld29yay9IZWFkZXJzL2NlcnRleHRlbnNpb25zLmgiIDMKdHlwZWRlZiB1aW50MzIgQ0VfQ3Js
TnVtYmVyOwoKCgoKCgp0eXBlZGVmIHVpbnQzMiBDRV9EZWx0YUNybDsKIyA0ODUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL2NlcnRleHRlbnNp
b25zLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogQ0VfRGlzdHJpYnV0aW9uUG9pbnROYW1lICpkaXN0
UG9pbnROYW1lOwogQ1NTTV9CT09MIG9ubHlVc2VyQ2VydHNQcmVzZW50OwogQ1NTTV9CT09MIG9u
bHlVc2VyQ2VydHM7CiBDU1NNX0JPT0wgb25seUNBQ2VydHNQcmVzZW50OwogQ1NTTV9CT09MIG9u
bHlDQUNlcnRzOwogQ1NTTV9CT09MIG9ubHlTb21lUmVhc29uc1ByZXNlbnQ7CiBDRV9DcmxEaXN0
UmVhc29uRmxhZ3Mgb25seVNvbWVSZWFzb25zOwogQ1NTTV9CT09MIGluZGlyZWN0Q3JsUHJlc2Vu
dDsKIENTU01fQk9PTCBpbmRpcmVjdENybDsKfSBDRV9Jc3N1aW5nRGlzdHJpYnV0aW9uUG9pbnQ7
CgoKCgoKdHlwZWRlZiBlbnVtIHsKIERUX0F1dGhvcml0eUtleUlELAogRFRfU3ViamVjdEtleUlE
LAogRFRfS2V5VXNhZ2UsCiBEVF9TdWJqZWN0QWx0TmFtZSwKIERUX0lzc3VlckFsdE5hbWUsCiBE
VF9FeHRlbmRlZEtleVVzYWdlLAogRFRfQmFzaWNDb25zdHJhaW50cywKIERUX0NlcnRQb2xpY2ll
cywKIERUX05ldHNjYXBlQ2VydFR5cGUsCiBEVF9DcmxOdW1iZXIsCiBEVF9EZWx0YUNybCwKIERU
X0NybFJlYXNvbiwKIERUX0NybERpc3RyaWJ1dGlvblBvaW50cywKIERUX0lzc3VpbmdEaXN0cmli
dXRpb25Qb2ludCwKIERUX0F1dGhvcml0eUluZm9BY2Nlc3MsCiBEVF9PdGhlciwKIERUX1FDX1N0
YXRlbWVudHMKfSBDRV9EYXRhVHlwZTsKCgoKCnR5cGVkZWYgdW5pb24gewogQ0VfQXV0aG9yaXR5
S2V5SUQgYXV0aG9yaXR5S2V5SUQ7CiBDRV9TdWJqZWN0S2V5SUQgc3ViamVjdEtleUlEOwogQ0Vf
S2V5VXNhZ2Uga2V5VXNhZ2U7CiBDRV9HZW5lcmFsTmFtZXMgc3ViamVjdEFsdE5hbWU7CiBDRV9H
ZW5lcmFsTmFtZXMgaXNzdWVyQWx0TmFtZTsKIENFX0V4dGVuZGVkS2V5VXNhZ2UgZXh0ZW5kZWRL
ZXlVc2FnZTsKIENFX0Jhc2ljQ29uc3RyYWludHMgYmFzaWNDb25zdHJhaW50czsKIENFX0NlcnRQ
b2xpY2llcyBjZXJ0UG9saWNpZXM7CiBDRV9OZXRzY2FwZUNlcnRUeXBlIG5ldHNjYXBlQ2VydFR5
cGU7CiBDRV9DcmxOdW1iZXIgY3JsTnVtYmVyOwogQ0VfRGVsdGFDcmwgZGVsdGFDcmw7CiBDRV9D
cmxSZWFzb24gY3JsUmVhc29uOwogQ0VfQ1JMRGlzdFBvaW50c1N5bnRheCBjcmxEaXN0UG9pbnRz
OwogQ0VfSXNzdWluZ0Rpc3RyaWJ1dGlvblBvaW50IGlzc3VpbmdEaXN0UG9pbnQ7CiBDRV9BdXRo
b3JpdHlJbmZvQWNjZXNzIGF1dGhvcml0eUluZm9BY2Nlc3M7CiBDRV9RQ19TdGF0ZW1lbnRzIHF1
YWxpZmllZENlcnRTdGF0ZW1lbnRzOwogQ1NTTV9EQVRBIHJhd0RhdGE7Cn0gQ0VfRGF0YTsKCnR5
cGVkZWYgc3RydWN0IHsKIENFX0RhdGFUeXBlIHR5cGU7CiBDRV9EYXRhIGV4dGVuc2lvbjsKIENT
U01fQk9PTCBjcml0aWNhbDsKfSBDRV9EYXRhQW5kVHlwZTsKIyAzMyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvY3NzbWFwcGxlLmgiIDIgMwoK
CgoKZXh0ZXJuICJDIiB7CgoKCgoKZXh0ZXJuIGNvbnN0IENTU01fR1VJRCBnR3VpZENzc207CgoK
ZXh0ZXJuIGNvbnN0IENTU01fR1VJRCBnR3VpZEFwcGxlRmlsZURMOwoKCmV4dGVybiBjb25zdCBD
U1NNX0dVSUQgZ0d1aWRBcHBsZUNTUDsKCgpleHRlcm4gY29uc3QgQ1NTTV9HVUlEIGdHdWlkQXBw
bGVDU1BETDsKCgpleHRlcm4gY29uc3QgQ1NTTV9HVUlEIGdHdWlkQXBwbGVYNTA5Q0w7CgoKZXh0
ZXJuIGNvbnN0IENTU01fR1VJRCBnR3VpZEFwcGxlWDUwOVRQOwoKCmV4dGVybiBjb25zdCBDU1NN
X0dVSUQgZ0d1aWRBcHBsZUxEQVBETDsKCgpleHRlcm4gY29uc3QgQ1NTTV9HVUlEIGdHdWlkQXBw
bGVEb3RNYWNUUDsKCgpleHRlcm4gY29uc3QgQ1NTTV9HVUlEIGdHdWlkQXBwbGVTZENTUERMOwoK
CmV4dGVybiBjb25zdCBDU1NNX0dVSUQgZ0d1aWRBcHBsZURvdE1hY0RMOwoKCgplbnVtCnsKIENT
U01fV09SRElEX0tFWUNIQUlOX1BST01QVCA9IENTU01fV09SRElEX1ZFTkRPUl9TVEFSVCwKICAg
IENTU01fV09SRElEX0tFWUNIQUlOX0xPQ0ssCiAgICBDU1NNX1dPUkRJRF9LRVlDSEFJTl9DSEFO
R0VfTE9DSywKIENTU01fV09SRElEX1BST0NFU1MsCiBDU1NNX1dPUkRJRF9fUkVTRVJWRURfMSwK
IENTU01fV09SRElEX1NZTU1FVFJJQ19LRVksCiBDU1NNX1dPUkRJRF9TWVNURU0sCiBDU1NNX1dP
UkRJRF9LRVksCiBDU1NNX1dPUkRJRF9QSU4sCiBDU1NNX1dPUkRJRF9QUkVBVVRILAogQ1NTTV9X
T1JESURfUFJFQVVUSF9TT1VSQ0UsCiBDU1NNX1dPUkRJRF9BU1lNTUVUUklDX0tFWSwKIENTU01f
V09SRElEX19GSVJTVF9VTlVTRUQKfTsKCgplbnVtCnsKIENTU01fQUNMX1NVQkpFQ1RfVFlQRV9L
RVlDSEFJTl9QUk9NUFQgPSBDU1NNX1dPUkRJRF9LRVlDSEFJTl9QUk9NUFQsCiBDU1NNX0FDTF9T
VUJKRUNUX1RZUEVfUFJPQ0VTUyA9IENTU01fV09SRElEX1BST0NFU1MsCiBDU1NNX0FDTF9TVUJK
RUNUX1RZUEVfQ09ERV9TSUdOQVRVUkUgPSBDU1NNX1dPUkRJRF9TSUdOQVRVUkUsCiBDU1NNX0FD
TF9TVUJKRUNUX1RZUEVfQ09NTUVOVCA9IENTU01fV09SRElEX0NPTU1FTlQsCiBDU1NNX0FDTF9T
VUJKRUNUX1RZUEVfU1lNTUVUUklDX0tFWSA9IENTU01fV09SRElEX1NZTU1FVFJJQ19LRVksCiBD
U1NNX0FDTF9TVUJKRUNUX1RZUEVfUFJFQVVUSCA9IENTU01fV09SRElEX1BSRUFVVEgsCiBDU1NN
X0FDTF9TVUJKRUNUX1RZUEVfUFJFQVVUSF9TT1VSQ0UgPSBDU1NNX1dPUkRJRF9QUkVBVVRIX1NP
VVJDRSwKIENTU01fQUNMX1NVQkpFQ1RfVFlQRV9BU1lNTUVUUklDX0tFWSA9IENTU01fV09SRElE
X0FTWU1NRVRSSUNfS0VZCn07CgplbnVtCnsKIENTU01fU0FNUExFX1RZUEVfS0VZQ0hBSU5fUFJP
TVBUID0gQ1NTTV9XT1JESURfS0VZQ0hBSU5fUFJPTVBULAogICAgQ1NTTV9TQU1QTEVfVFlQRV9L
RVlDSEFJTl9MT0NLID0gQ1NTTV9XT1JESURfS0VZQ0hBSU5fTE9DSywKICAgIENTU01fU0FNUExF
X1RZUEVfS0VZQ0hBSU5fQ0hBTkdFX0xPQ0sgPSBDU1NNX1dPUkRJRF9LRVlDSEFJTl9DSEFOR0Vf
TE9DSywKIENTU01fU0FNUExFX1RZUEVfUFJPQ0VTUyA9IENTU01fV09SRElEX1BST0NFU1MsCiBD
U1NNX1NBTVBMRV9UWVBFX0NPTU1FTlQgPSBDU1NNX1dPUkRJRF9DT01NRU5ULAogQ1NTTV9TQU1Q
TEVfVFlQRV9SRVRSWV9JRCA9IENTU01fV09SRElEX1BST1BBR0FURSwKIENTU01fU0FNUExFX1RZ
UEVfU1lNTUVUUklDX0tFWSA9IENTU01fV09SRElEX1NZTU1FVFJJQ19LRVksCiBDU1NNX1NBTVBM
RV9UWVBFX1BSRUFVVEggPSBDU1NNX1dPUkRJRF9QUkVBVVRILAogQ1NTTV9TQU1QTEVfVFlQRV9B
U1lNTUVUUklDX0tFWSA9IENTU01fV09SRElEX0FTWU1NRVRSSUNfS0VZCgp9OwoKCgplbnVtIHsK
IENTU01fQUNMX0FVVEhPUklaQVRJT05fQ0hBTkdFX0FDTCA9IENTU01fQUNMX0FVVEhPUklaQVRJ
T05fVEFHX1ZFTkRPUl9ERUZJTkVEX1NUQVJULAogQ1NTTV9BQ0xfQVVUSE9SSVpBVElPTl9DSEFO
R0VfT1dORVIsCgoKIENTU01fQUNMX0FVVEhPUklaQVRJT05fUFJFQVVUSF9CQVNFID0KICBDU1NN
X0FDTF9BVVRIT1JJWkFUSU9OX1RBR19WRU5ET1JfREVGSU5FRF9TVEFSVCArIDB4MTAwMDAwMCwK
IENTU01fQUNMX0FVVEhPUklaQVRJT05fUFJFQVVUSF9FTkQgPSBDU1NNX0FDTF9BVVRIT1JJWkFU
SU9OX1BSRUFVVEhfQkFTRSArIDB4MTAwMDAKfTsKCgojZGVmaW5lIENTU01fQUNMX0FVVEhPUkla
QVRJT05fUFJFQVVUSChzbG90KSAoQ1NTTV9BQ0xfQVVUSE9SSVpBVElPTl9QUkVBVVRIX0JBU0Ug
KyAoc2xvdCkpCgojZGVmaW5lIENTU01fQUNMX0FVVEhPUklaQVRJT05fUFJFQVVUSF9TTE9UKGF1
dGgpICgoYXV0aCkgLSBDU1NNX0FDTF9BVVRIT1JJWkFUSU9OX1BSRUFVVEhfQkFTRSkKCiNkZWZp
bmUgQ1NTTV9BQ0xfQVVUSE9SSVpBVElPTl9JU19QUkVBVVRIKGF1dGgpICgoYXV0aCkgPj0gQ1NT
TV9BQ0xfQVVUSE9SSVpBVElPTl9QUkVBVVRIX0JBU0UgJiYgKGF1dGgpIDwgQ1NTTV9BQ0xfQVVU
SE9SSVpBVElPTl9QUkVBVVRIX0VORCkKCgoKCgoKZW51bSB7CiAgICBDU1NNX0FDTF9DT0RFX1NJ
R05BVFVSRV9JTlZBTElEID0gMCwKICAgIENTU01fQUNMX0NPREVfU0lHTkFUVVJFX09TWCA9IDEK
fTsKCgoKZW51bSB7CiAgICBDU1NNX0FDTF9NQVRDSF9VSUQgPSAweDAxLAogICAgQ1NTTV9BQ0xf
TUFUQ0hfR0lEID0gMHgwMiwKICAgIENTU01fQUNMX01BVENIX0hPTk9SX1JPT1QgPSAweDEwMCwK
ICAgIENTU01fQUNMX01BVENIX0JJVFMgPSBDU1NNX0FDTF9NQVRDSF9VSUQgfCBDU1NNX0FDTF9N
QVRDSF9HSUQKfTsKCmVudW0gewogICAgQ1NTTV9BQ0xfUFJPQ0VTU19TRUxFQ1RPUl9DVVJSRU5U
X1ZFUlNJT04gPSAweDEwMQp9OwoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9hY2xfcHJvY2Vzc19zdWJq
ZWN0X3NlbGVjdG9yIHsKICAgIHVpbnQxNiB2ZXJzaW9uOwogICAgdWludDE2IG1hc2s7CiAgICB1
aW50MzIgdWlkOwogICAgdWludDMyIGdpZDsKfSBDU1NNX0FDTF9QUk9DRVNTX1NVQkpFQ1RfU0VM
RUNUT1I7CgoKCmVudW0gewogQ1NTTV9BQ0xfS0VZQ0hBSU5fUFJPTVBUX0NVUlJFTlRfVkVSU0lP
TiA9IDB4MTAxCn07CgplbnVtIHsKIENTU01fQUNMX0tFWUNIQUlOX1BST01QVF9SRVFVSVJFX1BB
U1NQSFJBU0UgPSAweDAwMDEsCgogQ1NTTV9BQ0xfS0VZQ0hBSU5fUFJPTVBUX1VOU0lHTkVEID0g
MHgwMDEwLAogQ1NTTV9BQ0xfS0VZQ0hBSU5fUFJPTVBUX1VOU0lHTkVEX0FDVCA9IDB4MDAyMCwK
IENTU01fQUNMX0tFWUNIQUlOX1BST01QVF9JTlZBTElEID0gMHgwMDQwLAogQ1NTTV9BQ0xfS0VZ
Q0hBSU5fUFJPTVBUX0lOVkFMSURfQUNUID0gMHgwMDgwLAp9OwoKdHlwZWRlZiBzdHJ1Y3QgY3Nz
bV9hY2xfa2V5Y2hhaW5fcHJvbXB0X3NlbGVjdG9yIHsKIHVpbnQxNiB2ZXJzaW9uOwogdWludDE2
IGZsYWdzOwp9IENTU01fQUNMX0tFWUNIQUlOX1BST01QVF9TRUxFQ1RPUjsKCgp0eXBlZGVmIHVp
bnQzMiBDU1NNX0FDTF9QUkVBVVRIX1RSQUNLSU5HX1NUQVRFOwplbnVtIHsKIENTU01fQUNMX1BS
RUFVVEhfVFJBQ0tJTkdfQ09VTlRfTUFTSyA9IDB4ZmYsCiBDU1NNX0FDTF9QUkVBVVRIX1RSQUNL
SU5HX0JMT0NLRUQgPSAwLAoKCgogQ1NTTV9BQ0xfUFJFQVVUSF9UUkFDS0lOR19VTktOT1dOID0g
MHg0MDAwMDAwMCwKIENTU01fQUNMX1BSRUFVVEhfVFJBQ0tJTkdfQVVUSE9SSVpFRCA9IDB4ODAw
MDAwMDAKfTsKCgoKZW51bSB7CiBDU1NNX0RCX0FDQ0VTU19SRVNFVCA9IDB4MTAwMDAKfTsKCgoK
ZW51bQp7CiAgICBDU1NNX0FMR0lEX0FQUExFX1lBUlJPVyA9IENTU01fQUxHSURfVkVORE9SX0RF
RklORUQsCiBDU1NNX0FMR0lEX0FFUywKIENTU01fQUxHSURfRkVFLAogQ1NTTV9BTEdJRF9GRUVf
TUQ1LAogQ1NTTV9BTEdJRF9GRUVfU0hBMSwKIENTU01fQUxHSURfRkVFRCwKIENTU01fQUxHSURf
RkVFREVYUCwKIENTU01fQUxHSURfQVNDLAogQ1NTTV9BTEdJRF9TSEExSE1BQ19MRUdBQ1ksCiBD
U1NNX0FMR0lEX0tFWUNIQUlOX0tFWSwKIENTU01fQUxHSURfUEtDUzEyX1BCRV9FTkNSLAogQ1NT
TV9BTEdJRF9QS0NTMTJfUEJFX01BQywKIENTU01fQUxHSURfU0VDVVJFX1BBU1NQSFJBU0UsCiBD
U1NNX0FMR0lEX1BCRV9PUEVOU1NMX01ENSwKIENTU01fQUxHSURfU0hBMjU2LAogQ1NTTV9BTEdJ
RF9TSEEzODQsCiBDU1NNX0FMR0lEX1NIQTUxMiwKIENTU01fQUxHSURfRU5UUk9QWV9ERUZBVUxU
LAogQ1NTTV9BTEdJRF9TSEEyMjQsCiBDU1NNX0FMR0lEX1NIQTIyNFdpdGhSU0EsCiBDU1NNX0FM
R0lEX1NIQTI1NldpdGhSU0EsCiBDU1NNX0FMR0lEX1NIQTM4NFdpdGhSU0EsCiBDU1NNX0FMR0lE
X1NIQTUxMldpdGhSU0EsCiBDU1NNX0FMR0lEX09QRU5TU0gxLAogQ1NTTV9BTEdJRF9TSEEyMjRX
aXRoRUNEU0EsCiBDU1NNX0FMR0lEX1NIQTI1NldpdGhFQ0RTQSwKIENTU01fQUxHSURfU0hBMzg0
V2l0aEVDRFNBLAogQ1NTTV9BTEdJRF9TSEE1MTJXaXRoRUNEU0EsCiBDU1NNX0FMR0lEX0VDRFNB
X1NQRUNJRklFRCwKIENTU01fQUxHSURfRUNESF9YOTYzX0tERiwKICAgIENTU01fQUxHSURfX0ZJ
UlNUX1VOVVNFRAp9OwoKCmVudW0KewoKICAgIENTU01fUEFERElOR19BUFBMRV9TU0x2MiA9IENT
U01fUEFERElOR19WRU5ET1JfREVGSU5FRAp9OwoKCgplbnVtIHsKIENTU01fS0VZQkxPQl9SQVdf
Rk9STUFUX1ZFTkRPUl9ERUZJTkVEID0gMHg4MDAwMDAwMAp9OwplbnVtIHsKCiBDU1NNX0tFWUJM
T0JfUkFXX0ZPUk1BVF9YNTA5ID0gQ1NTTV9LRVlCTE9CX1JBV19GT1JNQVRfVkVORE9SX0RFRklO
RUQsCgogQ1NTTV9LRVlCTE9CX1JBV19GT1JNQVRfT1BFTlNTSCwKCiBDU1NNX0tFWUJMT0JfUkFX
X0ZPUk1BVF9PUEVOU1NMLAoKIENTU01fS0VZQkxPQl9SQVdfRk9STUFUX09QRU5TU0gyCn07CgoK
ZW51bQp7CiAgICBDU1NNX0NVU1RPTV9DT01NT05fRVJST1JfRVhURU5UID0gMHgwMGUwLAoKICAg
IENTU01fRVJSQ09ERV9OT19VU0VSX0lOVEVSQUNUSU9OID0gMHgwMGUwLAogICAgQ1NTTV9FUlJD
T0RFX1VTRVJfQ0FOQ0VMRUQgPSAweDAwZTEsCiBDU1NNX0VSUkNPREVfU0VSVklDRV9OT1RfQVZB
SUxBQkxFID0gMHgwMGUyLAogQ1NTTV9FUlJDT0RFX0lOU1VGRklDSUVOVF9DTElFTlRfSURFTlRJ
RklDQVRJT04gPSAweDAwZTMsCiBDU1NNX0VSUkNPREVfREVWSUNFX1JFU0VUID0gMHgwMGU0LAog
Q1NTTV9FUlJDT0RFX0RFVklDRV9GQUlMRUQgPSAweDAwZTUKfTsKCmVudW0gewogQ1NTTUVSUl9D
U1NNX05PX1VTRVJfSU5URVJBQ1RJT04gPSBDU1NNX0NTU01fQkFTRV9FUlJPUiArIENTU01fRVJS
Q09ERV9OT19VU0VSX0lOVEVSQUNUSU9OLAogQ1NTTUVSUl9BQ19OT19VU0VSX0lOVEVSQUNUSU9O
ID0gQ1NTTV9BQ19CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX05PX1VTRVJfSU5URVJBQ1RJT04s
CiBDU1NNRVJSX0NTUF9OT19VU0VSX0lOVEVSQUNUSU9OID0gQ1NTTV9DU1BfQkFTRV9FUlJPUiAr
IENTU01fRVJSQ09ERV9OT19VU0VSX0lOVEVSQUNUSU9OLAogQ1NTTUVSUl9DTF9OT19VU0VSX0lO
VEVSQUNUSU9OID0gQ1NTTV9DTF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX05PX1VTRVJfSU5U
RVJBQ1RJT04sCiBDU1NNRVJSX0RMX05PX1VTRVJfSU5URVJBQ1RJT04gPSBDU1NNX0RMX0JBU0Vf
RVJST1IgKyBDU1NNX0VSUkNPREVfTk9fVVNFUl9JTlRFUkFDVElPTiwKIENTU01FUlJfVFBfTk9f
VVNFUl9JTlRFUkFDVElPTiA9IENTU01fVFBfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9OT19V
U0VSX0lOVEVSQUNUSU9OLAoKIENTU01FUlJfQ1NTTV9VU0VSX0NBTkNFTEVEID0gQ1NTTV9DU1NN
X0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfVVNFUl9DQU5DRUxFRCwKIENTU01FUlJfQUNfVVNF
Ul9DQU5DRUxFRCA9IENTU01fQUNfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9VU0VSX0NBTkNF
TEVELAogQ1NTTUVSUl9DU1BfVVNFUl9DQU5DRUxFRCA9IENTU01fQ1NQX0JBU0VfRVJST1IgKyBD
U1NNX0VSUkNPREVfVVNFUl9DQU5DRUxFRCwKIENTU01FUlJfQ0xfVVNFUl9DQU5DRUxFRCA9IENT
U01fQ0xfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9VU0VSX0NBTkNFTEVELAogQ1NTTUVSUl9E
TF9VU0VSX0NBTkNFTEVEID0gQ1NTTV9ETF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX1VTRVJf
Q0FOQ0VMRUQsCiBDU1NNRVJSX1RQX1VTRVJfQ0FOQ0VMRUQgPSBDU1NNX1RQX0JBU0VfRVJST1Ig
KyBDU1NNX0VSUkNPREVfVVNFUl9DQU5DRUxFRCwKCiBDU1NNRVJSX0NTU01fU0VSVklDRV9OT1Rf
QVZBSUxBQkxFID0gQ1NTTV9DU1NNX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfU0VSVklDRV9O
T1RfQVZBSUxBQkxFLAogQ1NTTUVSUl9BQ19TRVJWSUNFX05PVF9BVkFJTEFCTEUgPSBDU1NNX0FD
X0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfU0VSVklDRV9OT1RfQVZBSUxBQkxFLAogQ1NTTUVS
Ul9DU1BfU0VSVklDRV9OT1RfQVZBSUxBQkxFID0gQ1NTTV9DU1BfQkFTRV9FUlJPUiArIENTU01f
RVJSQ09ERV9TRVJWSUNFX05PVF9BVkFJTEFCTEUsCiBDU1NNRVJSX0NMX1NFUlZJQ0VfTk9UX0FW
QUlMQUJMRSA9IENTU01fQ0xfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9TRVJWSUNFX05PVF9B
VkFJTEFCTEUsCiBDU1NNRVJSX0RMX1NFUlZJQ0VfTk9UX0FWQUlMQUJMRSA9IENTU01fRExfQkFT
RV9FUlJPUiArIENTU01fRVJSQ09ERV9TRVJWSUNFX05PVF9BVkFJTEFCTEUsCiBDU1NNRVJSX1RQ
X1NFUlZJQ0VfTk9UX0FWQUlMQUJMRSA9IENTU01fVFBfQkFTRV9FUlJPUiArIENTU01fRVJSQ09E
RV9TRVJWSUNFX05PVF9BVkFJTEFCTEUsCgogQ1NTTUVSUl9DU1NNX0lOU1VGRklDSUVOVF9DTElF
TlRfSURFTlRJRklDQVRJT04gPSBDU1NNX0NTU01fQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9J
TlNVRkZJQ0lFTlRfQ0xJRU5UX0lERU5USUZJQ0FUSU9OLAogQ1NTTUVSUl9BQ19JTlNVRkZJQ0lF
TlRfQ0xJRU5UX0lERU5USUZJQ0FUSU9OID0gQ1NTTV9BQ19CQVNFX0VSUk9SICsgQ1NTTV9FUlJD
T0RFX0lOU1VGRklDSUVOVF9DTElFTlRfSURFTlRJRklDQVRJT04sCiBDU1NNRVJSX0NTUF9JTlNV
RkZJQ0lFTlRfQ0xJRU5UX0lERU5USUZJQ0FUSU9OID0gQ1NTTV9DU1BfQkFTRV9FUlJPUiArIENT
U01fRVJSQ09ERV9JTlNVRkZJQ0lFTlRfQ0xJRU5UX0lERU5USUZJQ0FUSU9OLAogQ1NTTUVSUl9D
TF9JTlNVRkZJQ0lFTlRfQ0xJRU5UX0lERU5USUZJQ0FUSU9OID0gQ1NTTV9DTF9CQVNFX0VSUk9S
ICsgQ1NTTV9FUlJDT0RFX0lOU1VGRklDSUVOVF9DTElFTlRfSURFTlRJRklDQVRJT04sCiBDU1NN
RVJSX0RMX0lOU1VGRklDSUVOVF9DTElFTlRfSURFTlRJRklDQVRJT04gPSBDU1NNX0RMX0JBU0Vf
RVJST1IgKyBDU1NNX0VSUkNPREVfSU5TVUZGSUNJRU5UX0NMSUVOVF9JREVOVElGSUNBVElPTiwK
IENTU01FUlJfVFBfSU5TVUZGSUNJRU5UX0NMSUVOVF9JREVOVElGSUNBVElPTiA9IENTU01fVFBf
QkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9JTlNVRkZJQ0lFTlRfQ0xJRU5UX0lERU5USUZJQ0FU
SU9OLAoKIENTU01FUlJfQ1NTTV9ERVZJQ0VfUkVTRVQgPSBDU1NNX0NTU01fQkFTRV9FUlJPUiAr
IENTU01fRVJSQ09ERV9ERVZJQ0VfUkVTRVQsCiBDU1NNRVJSX0FDX0RFVklDRV9SRVNFVCA9IENT
U01fQUNfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9ERVZJQ0VfUkVTRVQsCiBDU1NNRVJSX0NT
UF9ERVZJQ0VfUkVTRVQgPSBDU1NNX0NTUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0RFVklD
RV9SRVNFVCwKIENTU01FUlJfQ0xfREVWSUNFX1JFU0VUID0gQ1NTTV9DTF9CQVNFX0VSUk9SICsg
Q1NTTV9FUlJDT0RFX0RFVklDRV9SRVNFVCwKIENTU01FUlJfRExfREVWSUNFX1JFU0VUID0gQ1NT
TV9ETF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0RFVklDRV9SRVNFVCwKIENTU01FUlJfVFBf
REVWSUNFX1JFU0VUID0gQ1NTTV9UUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RFX0RFVklDRV9S
RVNFVCwKCiBDU1NNRVJSX0NTU01fREVWSUNFX0ZBSUxFRCA9IENTU01fQ1NTTV9CQVNFX0VSUk9S
ICsgQ1NTTV9FUlJDT0RFX0RFVklDRV9GQUlMRUQsCiBDU1NNRVJSX0FDX0RFVklDRV9GQUlMRUQg
PSBDU1NNX0FDX0JBU0VfRVJST1IgKyBDU1NNX0VSUkNPREVfREVWSUNFX0ZBSUxFRCwKIENTU01F
UlJfQ1NQX0RFVklDRV9GQUlMRUQgPSBDU1NNX0NTUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJDT0RF
X0RFVklDRV9GQUlMRUQsCiBDU1NNRVJSX0NMX0RFVklDRV9GQUlMRUQgPSBDU1NNX0NMX0JBU0Vf
RVJST1IgKyBDU1NNX0VSUkNPREVfREVWSUNFX0ZBSUxFRCwKIENTU01FUlJfRExfREVWSUNFX0ZB
SUxFRCA9IENTU01fRExfQkFTRV9FUlJPUiArIENTU01fRVJSQ09ERV9ERVZJQ0VfRkFJTEVELAog
Q1NTTUVSUl9UUF9ERVZJQ0VfRkFJTEVEID0gQ1NTTV9UUF9CQVNFX0VSUk9SICsgQ1NTTV9FUlJD
T0RFX0RFVklDRV9GQUlMRUQKfTsKCgplbnVtIHsKIENTU01FUlJfQ1NQX0FQUExFX0FERF9BUFBM
SUNBVElPTl9BQ0xfU1VCSkVDVCA9IENTU01fQ1NQX1BSSVZBVEVfRVJST1IgKyAwLAoKCgoKIENT
U01FUlJfQ1NQX0FQUExFX1BVQkxJQ19LRVlfSU5DT01QTEVURSA9IENTU01fQ1NQX1BSSVZBVEVf
RVJST1IgKyAxLAoKCiBDU1NNRVJSX0NTUF9BUFBMRV9TSUdOQVRVUkVfTUlTTUFUQ0ggPSBDU1NN
X0NTUF9QUklWQVRFX0VSUk9SICsgMiwKCgogQ1NTTUVSUl9DU1BfQVBQTEVfSU5WQUxJRF9LRVlf
U1RBUlRfREFURSA9IENTU01fQ1NQX1BSSVZBVEVfRVJST1IgKyAzLAogQ1NTTUVSUl9DU1BfQVBQ
TEVfSU5WQUxJRF9LRVlfRU5EX0RBVEUgPSBDU1NNX0NTUF9QUklWQVRFX0VSUk9SICsgNCwKCgog
Q1NTTUVSUl9DU1BETF9BUFBMRV9ETF9DT05WRVJTSU9OX0VSUk9SID0gQ1NTTV9DU1BfUFJJVkFU
RV9FUlJPUiArIDUsCgoKIENTU01FUlJfQ1NQX0FQUExFX1NTTHYyX1JPTExCQUNLID0gQ1NTTV9D
U1BfUFJJVkFURV9FUlJPUiArIDYKfTsKCgoKZW51bQp7CiAgICBDU1NNX0RMX0RCX1JFQ09SRF9H
RU5FUklDX1BBU1NXT1JEID0gQ1NTTV9EQl9SRUNPUkRUWVBFX0FQUF9ERUZJTkVEX1NUQVJUICsg
MCwKICAgIENTU01fRExfREJfUkVDT1JEX0lOVEVSTkVUX1BBU1NXT1JEID0gQ1NTTV9EQl9SRUNP
UkRUWVBFX0FQUF9ERUZJTkVEX1NUQVJUICsgMSwKICAgIENTU01fRExfREJfUkVDT1JEX0FQUExF
U0hBUkVfUEFTU1dPUkQgPSBDU1NNX0RCX1JFQ09SRFRZUEVfQVBQX0RFRklORURfU1RBUlQgKyAy
LAoKICAgIENTU01fRExfREJfUkVDT1JEX1g1MDlfQ0VSVElGSUNBVEUgPSBDU1NNX0RCX1JFQ09S
RFRZUEVfQVBQX0RFRklORURfU1RBUlQgKyAweDEwMDAsCiBDU1NNX0RMX0RCX1JFQ09SRF9VU0VS
X1RSVVNULAogQ1NTTV9ETF9EQl9SRUNPUkRfWDUwOV9DUkwsCiBDU1NNX0RMX0RCX1JFQ09SRF9V
TkxPQ0tfUkVGRVJSQUwsCiBDU1NNX0RMX0RCX1JFQ09SRF9FWFRFTkRFRF9BVFRSSUJVVEUsCiAg
ICBDU1NNX0RMX0RCX1JFQ09SRF9NRVRBREFUQSA9IENTU01fREJfUkVDT1JEVFlQRV9BUFBfREVG
SU5FRF9TVEFSVCArIDB4ODAwMAp9OwoKCmVudW0gewoKCgogQ1NTTV9BUFBMRUZJTEVETF9UT0dH
TEVfQVVUT0NPTU1JVCwKCgogQ1NTTV9BUFBMRUZJTEVETF9DT01NSVQsCgoKIENTU01fQVBQTEVG
SUxFRExfUk9MTEJBQ0sKfTsKCgplbnVtIHsKIENTU01fQVBQTEVfVU5MT0NLX1RZUEVfS0VZX0RJ
UkVDVCA9IDEsCiBDU1NNX0FQUExFX1VOTE9DS19UWVBFX1dSQVBQRURfUFJJVkFURSA9IDIKfTsK
CgplbnVtCnsKCgoKIENTU01FUlJfQVBQTEVETF9JTlZBTElEX09QRU5fUEFSQU1FVEVSUyA9IENT
U01fRExfUFJJVkFURV9FUlJPUiArIDAsCgoKIENTU01FUlJfQVBQTEVETF9ESVNLX0ZVTEwgPSBD
U1NNX0RMX1BSSVZBVEVfRVJST1IgKyAxLAoKCiBDU1NNRVJSX0FQUExFRExfUVVPVEFfRVhDRUVE
RUQgPSBDU1NNX0RMX1BSSVZBVEVfRVJST1IgKyAyLAoKCiBDU1NNRVJSX0FQUExFRExfRklMRV9U
T09fQklHID0gQ1NTTV9ETF9QUklWQVRFX0VSUk9SICsgMywKCgogICAgQ1NTTUVSUl9BUFBMRURM
X0lOVkFMSURfREFUQUJBU0VfQkxPQiA9IENTU01fRExfUFJJVkFURV9FUlJPUiArIDQsCiAgICBD
U1NNRVJSX0FQUExFRExfSU5WQUxJRF9LRVlfQkxPQiA9IENTU01fRExfUFJJVkFURV9FUlJPUiAr
IDUsCgoKICAgIENTU01FUlJfQVBQTEVETF9JTkNPTVBBVElCTEVfREFUQUJBU0VfQkxPQiA9IENT
U01fRExfUFJJVkFURV9FUlJPUiArIDYsCiAgICBDU1NNRVJSX0FQUExFRExfSU5DT01QQVRJQkxF
X0tFWV9CTE9CID0gQ1NTTV9ETF9QUklWQVRFX0VSUk9SICsgNywKfTsKCgplbnVtCnsKCiBDU1NN
RVJSX0FQUExFVFBfSE9TVE5BTUVfTUlTTUFUQ0ggPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyAw
LAoKIENTU01FUlJfQVBQTEVUUF9VTktOT1dOX0NSSVRJQ0FMX0VYVEVOID0gQ1NTTV9UUF9QUklW
QVRFX0VSUk9SICsgMSwKCiBDU1NNRVJSX0FQUExFVFBfTk9fQkFTSUNfQ09OU1RSQUlOVFMgPSBD
U1NNX1RQX1BSSVZBVEVfRVJST1IgKyAyLAoKIENTU01FUlJfQVBQTEVUUF9JTlZBTElEX0NBID0g
Q1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMywKCiBDU1NNRVJSX0FQUExFVFBfSU5WQUxJRF9BVVRI
T1JJVFlfSUQgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyA0LAoKIENTU01FUlJfQVBQTEVUUF9J
TlZBTElEX1NVQkpFQ1RfSUQgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyA1LAoKIENTU01FUlJf
QVBQTEVUUF9JTlZBTElEX0tFWV9VU0FHRSA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDYsCgog
Q1NTTUVSUl9BUFBMRVRQX0lOVkFMSURfRVhURU5ERURfS0VZX1VTQUdFID0gQ1NTTV9UUF9QUklW
QVRFX0VSUk9SICsgNywKCiBDU1NNRVJSX0FQUExFVFBfSU5WQUxJRF9JRF9MSU5LQUdFID0gQ1NT
TV9UUF9QUklWQVRFX0VSUk9SICsgOCwKCiBDU1NNRVJSX0FQUExFVFBfUEFUSF9MRU5fQ09OU1RS
QUlOVCA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDksCgogQ1NTTUVSUl9BUFBMRVRQX0lOVkFM
SURfUk9PVCA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDEwLAoKIENTU01FUlJfQVBQTEVUUF9D
UkxfRVhQSVJFRCA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDExLAogQ1NTTUVSUl9BUFBMRVRQ
X0NSTF9OT1RfVkFMSURfWUVUID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMTIsCgogQ1NTTUVS
Ul9BUFBMRVRQX0NSTF9OT1RfRk9VTkQgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyAxMywKCiBD
U1NNRVJSX0FQUExFVFBfQ1JMX1NFUlZFUl9ET1dOID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsg
MTQsCgogQ1NTTUVSUl9BUFBMRVRQX0NSTF9CQURfVVJJID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9S
ICsgMTUsCgogQ1NTTUVSUl9BUFBMRVRQX1VOS05PV05fQ0VSVF9FWFRFTiA9IENTU01fVFBfUFJJ
VkFURV9FUlJPUiArIDE2LAogQ1NTTUVSUl9BUFBMRVRQX1VOS05PV05fQ1JMX0VYVEVOID0gQ1NT
TV9UUF9QUklWQVRFX0VSUk9SICsgMTcsCgogQ1NTTUVSUl9BUFBMRVRQX0NSTF9OT1RfVFJVU1RF
RCA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDE4LAoKIENTU01FUlJfQVBQTEVUUF9DUkxfSU5W
QUxJRF9BTkNIT1JfQ0VSVCA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDE5LAoKIENTU01FUlJf
QVBQTEVUUF9DUkxfUE9MSUNZX0ZBSUwgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyAyMCwKCiBD
U1NNRVJSX0FQUExFVFBfSURQX0ZBSUwgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyAyMSwKCiBD
U1NNRVJSX0FQUExFVFBfQ0VSVF9OT1RfRk9VTkRfRlJPTV9JU1NVRVIgPSBDU1NNX1RQX1BSSVZB
VEVfRVJST1IgKyAyMiwKCiBDU1NNRVJSX0FQUExFVFBfQkFEX0NFUlRfRlJPTV9JU1NVRVIgPSBD
U1NNX1RQX1BSSVZBVEVfRVJST1IgKyAyMywKCiBDU1NNRVJSX0FQUExFVFBfU01JTUVfRU1BSUxf
QUREUlNfTk9UX0ZPVU5EID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMjQsCgogQ1NTTUVSUl9B
UFBMRVRQX1NNSU1FX0JBRF9FWFRfS0VZX1VTRSA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDI1
LAoKIENTU01FUlJfQVBQTEVUUF9TTUlNRV9CQURfS0VZX1VTRSA9IENTU01fVFBfUFJJVkFURV9F
UlJPUiArIDI2LAoKIENTU01FUlJfQVBQTEVUUF9TTUlNRV9LRVlVU0FHRV9OT1RfQ1JJVElDQUwg
PSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyAyNywKCgogQ1NTTUVSUl9BUFBMRVRQX1NNSU1FX05P
X0VNQUlMX0FERFJTID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMjgsCgoKIENTU01FUlJfQVBQ
TEVUUF9TTUlNRV9TVUJKX0FMVF9OQU1FX05PVF9DUklUID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9S
ICsgMjksCgogQ1NTTUVSUl9BUFBMRVRQX1NTTF9CQURfRVhUX0tFWV9VU0UgPSBDU1NNX1RQX1BS
SVZBVEVfRVJST1IgKyAzMCwKCiBDU1NNRVJSX0FQUExFVFBfT0NTUF9CQURfUkVTUE9OU0UgPSBD
U1NNX1RQX1BSSVZBVEVfRVJST1IgKyAzMSwKCiBDU1NNRVJSX0FQUExFVFBfT0NTUF9CQURfUkVR
VUVTVCA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDMyLAoKIENTU01FUlJfQVBQTEVUUF9PQ1NQ
X1VOQVZBSUxBQkxFID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMzMsCgogQ1NTTUVSUl9BUFBM
RVRQX09DU1BfU1RBVFVTX1VOUkVDT0dOSVpFRCA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDM0
LAoKIENTU01FUlJfQVBQTEVUUF9JTkNPTVBMRVRFX1JFVk9DQVRJT05fQ0hFQ0sgPSBDU1NNX1RQ
X1BSSVZBVEVfRVJST1IgKyAzNSwKCiBDU1NNRVJSX0FQUExFVFBfTkVUV09SS19GQUlMVVJFID0g
Q1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMzYsCgogQ1NTTUVSUl9BUFBMRVRQX09DU1BfTk9UX1RS
VVNURUQgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyAzNywKCiBDU1NNRVJSX0FQUExFVFBfT0NT
UF9JTlZBTElEX0FOQ0hPUl9DRVJUID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMzgsCgogQ1NT
TUVSUl9BUFBMRVRQX09DU1BfU0lHX0VSUk9SID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMzks
CgogQ1NTTUVSUl9BUFBMRVRQX09DU1BfTk9fU0lHTkVSID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9S
ICsgNDAsCgogQ1NTTUVSUl9BUFBMRVRQX09DU1BfUkVTUF9NQUxGT1JNRURfUkVRID0gQ1NTTV9U
UF9QUklWQVRFX0VSUk9SICsgNDEsCgogQ1NTTUVSUl9BUFBMRVRQX09DU1BfUkVTUF9JTlRFUk5B
TF9FUlIgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyA0MiwKCiBDU1NNRVJSX0FQUExFVFBfT0NT
UF9SRVNQX1RSWV9MQVRFUiA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDQzLAoKIENTU01FUlJf
QVBQTEVUUF9PQ1NQX1JFU1BfU0lHX1JFUVVJUkVEID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsg
NDQsCgogQ1NTTUVSUl9BUFBMRVRQX09DU1BfUkVTUF9VTkFVVEhPUklaRUQgPSBDU1NNX1RQX1BS
SVZBVEVfRVJST1IgKyA0NSwKCiBDU1NNRVJSX0FQUExFVFBfT0NTUF9OT05DRV9NSVNNQVRDSCA9
IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDQ2LAoKIENTU01FUlJfQVBQTEVUUF9DU19CQURfQ0VS
VF9DSEFJTl9MRU5HVEggPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyA0NywKCiBDU1NNRVJSX0FQ
UExFVFBfQ1NfTk9fQkFTSUNfQ09OU1RSQUlOVFMgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyA0
OCwKCiBDU1NNRVJSX0FQUExFVFBfQ1NfQkFEX1BBVEhfTEVOR1RIID0gQ1NTTV9UUF9QUklWQVRF
X0VSUk9SICsgNDksCgogQ1NTTUVSUl9BUFBMRVRQX0NTX05PX0VYVEVOREVEX0tFWV9VU0FHRSA9
IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDUwLAoKIENTU01FUlJfQVBQTEVUUF9DT0RFX1NJR05f
REVWRUxPUE1FTlQgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyA1MSwKCiBDU1NNRVJSX0FQUExF
VFBfUlNfQkFEX0NFUlRfQ0hBSU5fTEVOR1RIID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsgNTIs
CgogQ1NTTUVSUl9BUFBMRVRQX1JTX0JBRF9FWFRFTkRFRF9LRVlfVVNBR0UgPSBDU1NNX1RQX1BS
SVZBVEVfRVJST1IgKyA1MywKCiBDU1NNRVJSX0FQUExFVFBfVFJVU1RfU0VUVElOR19ERU5ZID0g
Q1NTTV9UUF9QUklWQVRFX0VSUk9SICsgNTQsCgogQ1NTTUVSUl9BUFBMRVRQX0lOVkFMSURfRU1Q
VFlfU1VCSkVDVCA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDU1LAoKIENTU01FUlJfQVBQTEVU
UF9VTktOT1dOX1FVQUxfQ0VSVF9TVEFURU1FTlQgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyA1
Ngp9OwoKCmVudW0KewoKIENTU01FUlJfQVBQTEVfRE9UTUFDX1JFUV9RVUVVRUQgPSBDU1NNX1RQ
X1BSSVZBVEVfRVJST1IgKyAxMDAsCgogQ1NTTUVSUl9BUFBMRV9ET1RNQUNfUkVRX1JFRElSRUNU
ID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMTAxLAoKIENTU01FUlJfQVBQTEVfRE9UTUFDX1JF
UV9TRVJWRVJfRVJSID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMTAyLAoKIENTU01FUlJfQVBQ
TEVfRE9UTUFDX1JFUV9TRVJWRVJfUEFSQU0gPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyAxMDMs
CgogQ1NTTUVSUl9BUFBMRV9ET1RNQUNfUkVRX1NFUlZFUl9BVVRIID0gQ1NTTV9UUF9QUklWQVRF
X0VSUk9SICsgMTA0LAoKIENTU01FUlJfQVBQTEVfRE9UTUFDX1JFUV9TRVJWRVJfVU5JTVBMID0g
Q1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMTA1LAoKIENTU01FUlJfQVBQTEVfRE9UTUFDX1JFUV9T
RVJWRVJfTk9UX0FWQUlMID0gQ1NTTV9UUF9QUklWQVRFX0VSUk9SICsgMTA2LAoKIENTU01FUlJf
QVBQTEVfRE9UTUFDX1JFUV9TRVJWRVJfQUxSRUFEWV9FWElTVCA9IENTU01fVFBfUFJJVkFURV9F
UlJPUiArIDEwNywKCiBDU1NNRVJSX0FQUExFX0RPVE1BQ19SRVFfU0VSVkVSX1NFUlZJQ0VfRVJS
T1IgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyAxMDgsCgogQ1NTTUVSUl9BUFBMRV9ET1RNQUNf
UkVRX0lTX1BFTkRJTkcgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyAxMDksCgogQ1NTTUVSUl9B
UFBMRV9ET1RNQUNfTk9fUkVRX1BFTkRJTkcgPSBDU1NNX1RQX1BSSVZBVEVfRVJST1IgKyAxMTAs
CgogQ1NTTUVSUl9BUFBMRV9ET1RNQUNfQ1NSX1ZFUklGWV9GQUlMID0gQ1NTTV9UUF9QUklWQVRF
X0VSUk9SICsgMTExLAoKIENTU01FUlJfQVBQTEVfRE9UTUFDX0ZBSUxFRF9DT05TSVNURU5DWV9D
SEVDSyA9IENTU01fVFBfUFJJVkFURV9FUlJPUiArIDExMgp9OwoKZW51bQp7CiBDU1NNX0FQUExF
RExfT1BFTl9QQVJBTUVURVJTX1ZFUlNJT04gPSAxCn07CgplbnVtIGNzc21fYXBwbGVkbF9vcGVu
X3BhcmFtZXRlcnNfbWFzawp7CiBrQ1NTTV9BUFBMRURMX01BU0tfTU9ERSA9ICgxIDw8IDApCn07
CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9hcHBsZWRsX29wZW5fcGFyYW1ldGVycwp7CiB1aW50
MzIgbGVuZ3RoOwogdWludDMyIHZlcnNpb247CiMgNTgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jc3NtYXBwbGUuaCIgMwogQ1NTTV9CT09M
IGF1dG9Db21taXQ7CgoKIHVpbnQzMiBtYXNrOwoKCiBtb2RlX3QgbW9kZTsKfSBDU1NNX0FQUExF
RExfT1BFTl9QQVJBTUVURVJTLCAqQ1NTTV9BUFBMRURMX09QRU5fUEFSQU1FVEVSU19QVFI7CgoK
CmVudW0KewoKCiBDU1NNX0FQUExFQ1NQRExfREJfTE9DSyA9IDAsCgoKCgoKCgogQ1NTTV9BUFBM
RUNTUERMX0RCX1VOTE9DSyA9IDEsCiMgNjE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9T
ZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jc3NtYXBwbGUuaCIgMwogQ1NTTV9BUFBMRUNTUERM
X0RCX0dFVF9TRVRUSU5HUyA9IDIsCgoKCgoKCgogQ1NTTV9BUFBMRUNTUERMX0RCX1NFVF9TRVRU
SU5HUyA9IDMsCiMgNjM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFt
ZXdvcmsvSGVhZGVycy9jc3NtYXBwbGUuaCIgMwogQ1NTTV9BUFBMRUNTUERMX0RCX0lTX0xPQ0tF
RCA9IDQsCiMgNjUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdv
cmsvSGVhZGVycy9jc3NtYXBwbGUuaCIgMwogQ1NTTV9BUFBMRUNTUERMX0RCX0NIQU5HRV9QQVNT
V09SRCA9NSwKCgogQ1NTTV9BUFBMRUNTUERMX0RCX0dFVF9IQU5ETEUgPSA2LAoKCiBDU1NNX0FQ
UExFU0NQRExfQ1NQX0dFVF9LRVlIQU5ETEUgPSA3LAoKIENTU01fQVBQTEVfUFJJVkFURV9DU1BE
TF9DT0RFXzggPSA4LAogQ1NTTV9BUFBMRV9QUklWQVRFX0NTUERMX0NPREVfOSA9IDksCiBDU1NN
X0FQUExFX1BSSVZBVEVfQ1NQRExfQ09ERV8xMCA9IDEwLAogQ1NTTV9BUFBMRV9QUklWQVRFX0NT
UERMX0NPREVfMTEgPSAxMSwKIENTU01fQVBQTEVfUFJJVkFURV9DU1BETF9DT0RFXzEyID0gMTIs
CiBDU1NNX0FQUExFX1BSSVZBVEVfQ1NQRExfQ09ERV8xMyA9IDEzLAogQ1NTTV9BUFBMRV9QUklW
QVRFX0NTUERMX0NPREVfMTQgPSAxNCwKIENTU01fQVBQTEVfUFJJVkFURV9DU1BETF9DT0RFXzE1
ID0gMTUsCiBDU1NNX0FQUExFX1BSSVZBVEVfQ1NQRExfQ09ERV8xNiA9IDE2LAoKCgoKCgogQ1NT
TV9BUFBMRUNTUF9LRVlESUdFU1QgPSAweDEwMAp9OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9h
cHBsZWNzcGRsX2RiX3NldHRpbmdzX3BhcmFtZXRlcnMKewogdWludDMyIGlkbGVUaW1lb3V0Owog
dWludDggbG9ja09uU2xlZXA7Cn0gQ1NTTV9BUFBMRUNTUERMX0RCX1NFVFRJTkdTX1BBUkFNRVRF
UlMsICpDU1NNX0FQUExFQ1NQRExfREJfU0VUVElOR1NfUEFSQU1FVEVSU19QVFI7CgoKdHlwZWRl
ZiBzdHJ1Y3QgY3NzbV9hcHBsZWNzcGRsX2RiX2lzX2xvY2tlZF9wYXJhbWV0ZXJzCnsKIHVpbnQ4
IGlzTG9ja2VkOwp9IENTU01fQVBQTEVDU1BETF9EQl9JU19MT0NLRURfUEFSQU1FVEVSUywgKkNT
U01fQVBQTEVDU1BETF9EQl9JU19MT0NLRURfUEFSQU1FVEVSU19QVFI7CgoKdHlwZWRlZiBzdHJ1
Y3QgY3NzbV9hcHBsZWNzcGRsX2RiX2NoYW5nZV9wYXNzd29yZF9wYXJhbWV0ZXJzCnsKIENTU01f
QUNDRVNTX0NSRURFTlRJQUxTICphY2Nlc3NDcmVkZW50aWFsczsKfSBDU1NNX0FQUExFQ1NQRExf
REJfQ0hBTkdFX1BBU1NXT1JEX1BBUkFNRVRFUlMsICpDU1NNX0FQUExFQ1NQRExfREJfQ0hBTkdF
X1BBU1NXT1JEX1BBUkFNRVRFUlNfUFRSOwoKCmVudW0gewogQ1NTTV9LRVlCTE9CX1dSQVBQRURf
Rk9STUFUX0FQUExFX0NVU1RPTSA9IDEwMCwKIENTU01fS0VZQkxPQl9XUkFQUEVEX0ZPUk1BVF9P
UEVOU1NMLAogQ1NTTV9LRVlCTE9CX1dSQVBQRURfRk9STUFUX09QRU5TU0gxCn07CgoKCgplbnVt
IHsKIENTU01fQVRUUklCVVRFX1ZFTkRPUl9ERUZJTkVEID0gMHg4MDAwMDAKfTsKCmVudW0gewoK
CgogICAgQ1NTTV9BVFRSSUJVVEVfUFVCTElDX0tFWSA9CiAgIChDU1NNX0FUVFJJQlVURV9EQVRB
X0tFWSB8IChDU1NNX0FUVFJJQlVURV9WRU5ET1JfREVGSU5FRCArIDApKSwKCgoKCgogQ1NTTV9B
VFRSSUJVVEVfRkVFX1BSSU1FX1RZUEUgPQogICAoQ1NTTV9BVFRSSUJVVEVfREFUQV9VSU5UMzIg
fCAoQ1NTTV9BVFRSSUJVVEVfVkVORE9SX0RFRklORUQgKyAxKSksCiBDU1NNX0FUVFJJQlVURV9G
RUVfQ1VSVkVfVFlQRSA9CiAgIChDU1NNX0FUVFJJQlVURV9EQVRBX1VJTlQzMiB8IChDU1NNX0FU
VFJJQlVURV9WRU5ET1JfREVGSU5FRCArIDIpKSwKCgoKCgogQ1NTTV9BVFRSSUJVVEVfQVNDX09Q
VElNSVpBVElPTiA9CiAgIChDU1NNX0FUVFJJQlVURV9EQVRBX1VJTlQzMiB8IChDU1NNX0FUVFJJ
QlVURV9WRU5ET1JfREVGSU5FRCArIDMpKSwKCgoKCiBDU1NNX0FUVFJJQlVURV9SU0FfQkxJTkRJ
TkcgPQogICAoQ1NTTV9BVFRSSUJVVEVfREFUQV9VSU5UMzIgfCAoQ1NTTV9BVFRSSUJVVEVfVkVO
RE9SX0RFRklORUQgKyA0KSksCgoKCgoKIENTU01fQVRUUklCVVRFX1BBUkFNX0tFWSA9CiAgIChD
U1NNX0FUVFJJQlVURV9EQVRBX0tFWSB8IChDU1NNX0FUVFJJQlVURV9WRU5ET1JfREVGSU5FRCAr
IDUpKSwKCgoKCgogQ1NTTV9BVFRSSUJVVEVfUFJPTVBUID0KICAgKENTU01fQVRUUklCVVRFX0RB
VEFfQ1NTTV9EQVRBIHwgKENTU01fQVRUUklCVVRFX1ZFTkRPUl9ERUZJTkVEICsgNikpLAoKCgoK
CiBDU1NNX0FUVFJJQlVURV9BTEVSVF9USVRMRSA9CiAgIChDU1NNX0FUVFJJQlVURV9EQVRBX0NT
U01fREFUQSB8IChDU1NNX0FUVFJJQlVURV9WRU5ET1JfREVGSU5FRCArIDcpKSwKCgoKCgoKIENT
U01fQVRUUklCVVRFX1ZFUklGWV9QQVNTUEhSQVNFID0KICAgKENTU01fQVRUUklCVVRFX0RBVEFf
VUlOVDMyIHwgKENTU01fQVRUUklCVVRFX1ZFTkRPUl9ERUZJTkVEICsgOCkpCgp9OwoKCgoKZW51
bSB7CiBDU1NNX0ZFRV9QUklNRV9UWVBFX0RFRkFVTFQgPSAwLAogQ1NTTV9GRUVfUFJJTUVfVFlQ
RV9NRVJTRU5ORSwKIENTU01fRkVFX1BSSU1FX1RZUEVfRkVFLAogQ1NTTV9GRUVfUFJJTUVfVFlQ
RV9HRU5FUkFMCn07CgoKCgoKCmVudW0gewogQ1NTTV9GRUVfQ1VSVkVfVFlQRV9ERUZBVUxUID0g
MCwKIENTU01fRkVFX0NVUlZFX1RZUEVfTU9OVEdPTUVSWSwKIENTU01fRkVFX0NVUlZFX1RZUEVf
V0VJRVJTVFJBU1MsCiBDU1NNX0ZFRV9DVVJWRV9UWVBFX0FOU0lfWDlfNjIKfTsKCgoKCmVudW0g
ewogQ1NTTV9BU0NfT1BUSU1JWkVfREVGQVVMVCA9IDAsCiBDU1NNX0FTQ19PUFRJTUlaRV9TSVpF
LAogQ1NTTV9BU0NfT1BUSU1JWkVfU0VDVVJJVFksCiBDU1NNX0FTQ19PUFRJTUlaRV9USU1FLAog
Q1NTTV9BU0NfT1BUSU1JWkVfVElNRV9TSVpFLAogQ1NTTV9BU0NfT1BUSU1JWkVfQVNDSUksCn07
CgoKCgplbnVtIHsKCgoKCiBDU1NNX0tFWUFUVFJfUEFSVElBTCA9IDB4MDAwMTAwMDAsCgoKCgoK
IENTU01fS0VZQVRUUl9QVUJMSUNfS0VZX0VOQ1JZUFQgPSAweDAwMDIwMDAwCn07CgoKCgp0eXBl
ZGVmIHN0cnVjdCB7CiBjb25zdCBjaGFyICpzdHJpbmc7CiBjb25zdCBDU1NNX09JRCAqb2lkOwp9
IENTU01fQVBQTEVfVFBfTkFNRV9PSUQ7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiBDU1NNX0NT
UF9IQU5ETEUgY3NwSGFuZDsKIENTU01fQ0xfSEFORExFIGNsSGFuZDsKIHVpbnQzMiBzZXJpYWxO
dW1iZXI7CiB1aW50MzIgbnVtU3ViamVjdE5hbWVzOwogQ1NTTV9BUFBMRV9UUF9OQU1FX09JRCAq
c3ViamVjdE5hbWVzOwoKCgoKCgoKIHVpbnQzMiBudW1Jc3N1ZXJOYW1lczsKIENTU01fQVBQTEVf
VFBfTkFNRV9PSUQgKmlzc3Vlck5hbWVzOwoKIENTU01fWDUwOV9OQU1FX1BUUiBpc3N1ZXJOYW1l
WDUwOTsKIGNvbnN0IENTU01fS0VZICpjZXJ0UHVibGljS2V5OwogY29uc3QgQ1NTTV9LRVkgKmlz
c3VlclByaXZhdGVLZXk7CgoKCiBDU1NNX0FMR09SSVRITVMgc2lnbmF0dXJlQWxnOwogQ1NTTV9P
SUQgc2lnbmF0dXJlT2lkOwogdWludDMyIG5vdEJlZm9yZTsKIHVpbnQzMiBub3RBZnRlcjsKIHVp
bnQzMiBudW1FeHRlbnNpb25zOwogQ0VfRGF0YUFuZFR5cGUgKmV4dGVuc2lvbnM7CgoKCgogY29u
c3QgY2hhciAqY2hhbGxlbmdlU3RyaW5nOwp9IENTU01fQVBQTEVfVFBfQ0VSVF9SRVFVRVNUOwoK
CgoKCgojZGVmaW5lIENTU01fQVBQTEVfVFBfU1NMX09QVFNfVkVSU0lPTiAxCgoKCgoKCiNkZWZp
bmUgQ1NTTV9BUFBMRV9UUF9TU0xfQ0xJRU5UIDB4MDAwMDAwMDEKCnR5cGVkZWYgc3RydWN0IHsK
IHVpbnQzMiBWZXJzaW9uOwoKCgoKCgoKIHVpbnQzMiBTZXJ2ZXJOYW1lTGVuOwogY29uc3QgY2hh
ciAqU2VydmVyTmFtZTsKCgogdWludDMyIEZsYWdzOwp9IENTU01fQVBQTEVfVFBfU1NMX09QVElP
TlM7CgoKCgoKCgojZGVmaW5lIENTU01fQVBQTEVfVFBfQ1JMX09QVFNfVkVSU0lPTiAwCgp0eXBl
ZGVmIHVpbnQzMiBDU1NNX0FQUExFX1RQX0NSTF9PUFRfRkxBR1M7CmVudW0gewoKIENTU01fVFBf
QUNUSU9OX1JFUVVJUkVfQ1JMX1BFUl9DRVJUID0gMHgwMDAwMDAwMSwKCiBDU1NNX1RQX0FDVElP
Tl9GRVRDSF9DUkxfRlJPTV9ORVQgPSAweDAwMDAwMDAyLAoKCiBDU1NNX1RQX0FDVElPTl9DUkxf
U1VGRklDSUVOVCA9IDB4MDAwMDAwMDQsCgogQ1NTTV9UUF9BQ1RJT05fUkVRVUlSRV9DUkxfSUZf
UFJFU0VOVCA9IDB4MDAwMDAwMDgKfTsKCnR5cGVkZWYgc3RydWN0IHsKIHVpbnQzMiBWZXJzaW9u
OwogQ1NTTV9BUFBMRV9UUF9DUkxfT1BUX0ZMQUdTIENybEZsYWdzOwoKCgoKCgoKIENTU01fRExf
REJfSEFORExFX1BUUiBjcmxTdG9yZTsKfSBDU1NNX0FQUExFX1RQX0NSTF9PUFRJT05TOwoKCgoK
CgoKI2RlZmluZSBDU1NNX0FQUExFX1RQX1NNSU1FX09QVFNfVkVSU0lPTiAwCnR5cGVkZWYgc3Ry
dWN0IHsKIHVpbnQzMiBWZXJzaW9uOwoKCgoKCiBDRV9LZXlVc2FnZSBJbnRlbmRlZFVzYWdlOwoj
IDk2MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRl
cnMvY3NzbWFwcGxlLmgiIDMKIHVpbnQzMiBTZW5kZXJFbWFpbExlbjsKIGNvbnN0IGNoYXIgKlNl
bmRlckVtYWlsOwp9IENTU01fQVBQTEVfVFBfU01JTUVfT1BUSU9OUzsKCgoKCgoKCnR5cGVkZWYg
dWludDMyIENTU01fQVBQTEVfVFBfQUNUSU9OX0ZMQUdTOwplbnVtIHsKIENTU01fVFBfQUNUSU9O
X0FMTE9XX0VYUElSRUQgPSAweDAwMDAwMDAxLAogQ1NTTV9UUF9BQ1RJT05fTEVBRl9JU19DQSA9
IDB4MDAwMDAwMDIsCiBDU1NNX1RQX0FDVElPTl9GRVRDSF9DRVJUX0ZST01fTkVUID0gMHgwMDAw
MDAwNCwKIENTU01fVFBfQUNUSU9OX0FMTE9XX0VYUElSRURfUk9PVCA9IDB4MDAwMDAwMDgsCiBD
U1NNX1RQX0FDVElPTl9SRVFVSVJFX1JFVl9QRVJfQ0VSVCA9IDB4MDAwMDAwMTAsCgogQ1NTTV9U
UF9BQ1RJT05fVFJVU1RfU0VUVElOR1MgPSAweDAwMDAwMDIwLAoKIENTU01fVFBfQUNUSU9OX0lN
UExJQ0lUX0FOQ0hPUlMgPSAweDAwMDAwMDQwCgp9OwoKI2RlZmluZSBDU1NNX0FQUExFX1RQX0FD
VElPTl9WRVJTSU9OIDAKdHlwZWRlZiBzdHJ1Y3QgewogdWludDMyIFZlcnNpb247CiBDU1NNX0FQ
UExFX1RQX0FDVElPTl9GTEFHUyBBY3Rpb25GbGFnczsKfSBDU1NNX0FQUExFX1RQX0FDVElPTl9E
QVRBOwojIDk5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3Jr
L0hlYWRlcnMvY3NzbWFwcGxlLmgiIDMKdHlwZWRlZiB1aW50MzIgQ1NTTV9UUF9BUFBMRV9DRVJU
X1NUQVRVUzsKZW51bQp7CiBDU1NNX0NFUlRfU1RBVFVTX0VYUElSRUQgPSAweDAwMDAwMDAxLAog
Q1NTTV9DRVJUX1NUQVRVU19OT1RfVkFMSURfWUVUID0gMHgwMDAwMDAwMiwKIENTU01fQ0VSVF9T
VEFUVVNfSVNfSU5fSU5QVVRfQ0VSVFMgPSAweDAwMDAwMDA0LAogQ1NTTV9DRVJUX1NUQVRVU19J
U19JTl9BTkNIT1JTID0gMHgwMDAwMDAwOCwKIENTU01fQ0VSVF9TVEFUVVNfSVNfUk9PVCA9IDB4
MDAwMDAwMTAsCiBDU1NNX0NFUlRfU1RBVFVTX0lTX0ZST01fTkVUID0gMHgwMDAwMDAyMCwKCiBD
U1NNX0NFUlRfU1RBVFVTX1RSVVNUX1NFVFRJTkdTX0ZPVU5EX1VTRVIgPSAweDAwMDAwMDQwLAoK
IENTU01fQ0VSVF9TVEFUVVNfVFJVU1RfU0VUVElOR1NfRk9VTkRfQURNSU4gPSAweDAwMDAwMDgw
LAoKIENTU01fQ0VSVF9TVEFUVVNfVFJVU1RfU0VUVElOR1NfRk9VTkRfU1lTVEVNID0gMHgwMDAw
MDEwMCwKCiBDU1NNX0NFUlRfU1RBVFVTX1RSVVNUX1NFVFRJTkdTX1RSVVNUID0gMHgwMDAwMDIw
MCwKCiBDU1NNX0NFUlRfU1RBVFVTX1RSVVNUX1NFVFRJTkdTX0RFTlkgPSAweDAwMDAwNDAwLAoK
IENTU01fQ0VSVF9TVEFUVVNfVFJVU1RfU0VUVElOR1NfSUdOT1JFRF9FUlJPUiA9IDB4MDAwMDA4
MDAKfTsKCnR5cGVkZWYgc3RydWN0IHsKIENTU01fVFBfQVBQTEVfQ0VSVF9TVEFUVVMgU3RhdHVz
Qml0czsKIHVpbnQzMiBOdW1TdGF0dXNDb2RlczsKIENTU01fUkVUVVJOICpTdGF0dXNDb2RlczsK
CgogdWludDMyIEluZGV4OwoKCiBDU1NNX0RMX0RCX0hBTkRMRSBEbERiSGFuZGxlOwogQ1NTTV9E
Ql9VTklRVUVfUkVDT1JEX1BUUiBVbmlxdWVSZWNvcmQ7Cn0gQ1NTTV9UUF9BUFBMRV9FVklERU5D
RV9JTkZPOwoKCgoKCiNkZWZpbmUgQ1NTTV9UUF9BUFBMRV9FVklERU5DRV9WRVJTSU9OIDAKdHlw
ZWRlZiBzdHJ1Y3QKewogdWludDMyIFZlcnNpb247Cn0gQ1NTTV9UUF9BUFBMRV9FVklERU5DRV9I
RUFERVI7CiMgMTA1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrL0hlYWRlcnMvY3NzbWFwcGxlLmgiIDMKI2RlZmluZSBDU1NNX0VWSURFTkNFX0ZPUk1fQVBQ
TEVfQ1VTVE9NIDB4ODAwMDAwMDAKZW51bQp7CiBDU1NNX0VWSURFTkNFX0ZPUk1fQVBQTEVfSEVB
REVSID0gMHg4MDAwMDAwMCArIDAsCiBDU1NNX0VWSURFTkNFX0ZPUk1fQVBQTEVfQ0VSVEdST1VQ
ID0gMHg4MDAwMDAwMCArIDEsCiBDU1NNX0VWSURFTkNFX0ZPUk1fQVBQTEVfQ0VSVF9JTkZPID0g
MHg4MDAwMDAwMCArIDIKfTsKCgplbnVtIHsKCgoKCgogQ1NTTV9BUFBMRVg1MDlDTF9PQlRBSU5f
Q1NSLAoKCgoKCgoKIENTU01fQVBQTEVYNTA5Q0xfVkVSSUZZX0NTUgp9OwoKCgoKCgp0eXBlZGVm
IHN0cnVjdCB7CiBDU1NNX1g1MDlfTkFNRV9QVFIgc3ViamVjdE5hbWVYNTA5OwoKCgogQ1NTTV9B
TEdPUklUSE1TIHNpZ25hdHVyZUFsZzsKIENTU01fT0lEIHNpZ25hdHVyZU9pZDsKCiBDU1NNX0NT
UF9IQU5ETEUgY3NwSGFuZDsKIGNvbnN0IENTU01fS0VZICpzdWJqZWN0UHVibGljS2V5OwogY29u
c3QgQ1NTTV9LRVkgKnN1YmplY3RQcml2YXRlS2V5OwoKCgoKIGNvbnN0IGNoYXIgKmNoYWxsZW5n
ZVN0cmluZzsKfSBDU1NNX0FQUExFX0NMX0NTUl9SRVFVRVNUOwoKCgoKCgojZGVmaW5lIENTU01f
QVBQTEVfQ1JMX0VORF9PRl9USU1FICI5OTk5MTIzMTIzNTk1OSIKCgoKCgojZGVmaW5lIGtLZXlj
aGFpblN1ZmZpeCAiLmtleWNoYWluIgojZGVmaW5lIGtTeXN0ZW1LZXljaGFpbk5hbWUgIlN5c3Rl
bS5rZXljaGFpbiIKI2RlZmluZSBrU3lzdGVtS2V5Y2hhaW5EaXIgIi9MaWJyYXJ5L0tleWNoYWlu
cy8iCiNkZWZpbmUga1N5c3RlbVVubG9ja0ZpbGUgIi92YXIvZGIvU3lzdGVtS2V5IgoKCnZvaWQg
Y3NzbVBlcnJvcihjb25zdCBjaGFyICpob3csIENTU01fUkVUVVJOIGVycm9yKTsKCgpib29sIGNz
c21PaWRUb0FsZyhjb25zdCBDU1NNX09JRCAqb2lkLCBDU1NNX0FMR09SSVRITVMgKmFsZyk7CmNv
bnN0IENTU01fT0lEICpjc3NtQWxnVG9PaWQoQ1NTTV9BTEdPUklUSE1TIGFsZ0lkKTsKCgoKCgoK
I2RlZmluZSBlcnJTZWNFcnJub0Jhc2UgMTAwMDAwCiNkZWZpbmUgZXJyU2VjRXJybm9MaW1pdCAx
MDAyNTUKCgp9CiMgMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1l
d29yay9IZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jc3NtLmgiIDEgMwojIDI3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jc3NtLmgiIDMK
I2RlZmluZSBfQ1NTTV9IXyAxCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1
cml0eS5mcmFtZXdvcmsvSGVhZGVycy9lbW10eXBlLmgiIDEgMwojIDI3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9lbW10eXBlLmgiIDMKI2Rl
ZmluZSBfRU1NVFlQRV9IXyAxCgoKCgpleHRlcm4gIkMiIHsKCgojZGVmaW5lIENTU01fSElOVF9D
QUxMQkFDSyAoMSkKCnR5cGVkZWYgdWludDMyIENTU01fTUFOQUdFUl9FVkVOVF9UWVBFUzsKI2Rl
ZmluZSBDU1NNX01BTkFHRVJfU0VSVklDRV9SRVFVRVNUIDEKI2RlZmluZSBDU1NNX01BTkFHRVJf
UkVQTFkgMgoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9tYW5hZ2VyX2V2ZW50X25vdGlmaWNhdGlvbiB7
CiAgICBDU1NNX1NFUlZJQ0VfTUFTSyBEZXN0aW5hdGlvbk1vZHVsZU1hbmFnZXJUeXBlOwogICAg
Q1NTTV9TRVJWSUNFX01BU0sgU291cmNlTW9kdWxlTWFuYWdlclR5cGU7CiAgICBDU1NNX01BTkFH
RVJfRVZFTlRfVFlQRVMgRXZlbnQ7CiAgICB1aW50MzIgRXZlbnRJZDsKICAgIENTU01fREFUQSBF
dmVudERhdGE7Cn0gQ1NTTV9NQU5BR0VSX0VWRU5UX05PVElGSUNBVElPTiwgKkNTU01fTUFOQUdF
Ul9FVkVOVF9OT1RJRklDQVRJT05fUFRSOwoKCn0KIyAzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvY3NzbS5oIiAyIDMKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jc3NtYXBpLmgi
IDEgMwojIDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsv
SGVhZGVycy9jc3NtYXBpLmgiIDMKI2RlZmluZSBfQ1NTTUFQSV9IXyAxCgoKCgpleHRlcm4gIkMi
IHsKCgoKCkNTU01fUkVUVVJOCkNTU01fSW5pdCAoY29uc3QgQ1NTTV9WRVJTSU9OICpWZXJzaW9u
LAogICAgICAgICAgIENTU01fUFJJVklMRUdFX1NDT1BFIFNjb3BlLAogICAgICAgICAgIGNvbnN0
IENTU01fR1VJRCAqQ2FsbGVyR3VpZCwKICAgICAgICAgICBDU1NNX0tFWV9ISUVSQVJDSFkgS2V5
SGllcmFyY2h5LAogICAgICAgICAgIENTU01fUFZDX01PREUgKlB2Y1BvbGljeSwKICAgICAgICAg
ICBjb25zdCB2b2lkICpSZXNlcnZlZCk7CgpDU1NNX1JFVFVSTgpDU1NNX1Rlcm1pbmF0ZSAodm9p
ZCk7CgpDU1NNX1JFVFVSTgpDU1NNX01vZHVsZUxvYWQgKGNvbnN0IENTU01fR1VJRCAqTW9kdWxl
R3VpZCwKICAgICAgICAgICAgICAgICBDU1NNX0tFWV9ISUVSQVJDSFkgS2V5SGllcmFyY2h5LAog
ICAgICAgICAgICAgICAgIENTU01fQVBJX01vZHVsZUV2ZW50SGFuZGxlciBBcHBOb3RpZnlDYWxs
YmFjaywKICAgICAgICAgICAgICAgICB2b2lkICpBcHBOb3RpZnlDYWxsYmFja0N0eCk7CgpDU1NN
X1JFVFVSTgpDU1NNX01vZHVsZVVubG9hZCAoY29uc3QgQ1NTTV9HVUlEICpNb2R1bGVHdWlkLAog
ICAgICAgICAgICAgICAgICAgQ1NTTV9BUElfTW9kdWxlRXZlbnRIYW5kbGVyIEFwcE5vdGlmeUNh
bGxiYWNrLAogICAgICAgICAgICAgICAgICAgdm9pZCAqQXBwTm90aWZ5Q2FsbGJhY2tDdHgpOwoK
Q1NTTV9SRVRVUk4KQ1NTTV9JbnRyb2R1Y2UgKGNvbnN0IENTU01fR1VJRCAqTW9kdWxlSUQsCiAg
ICAgICAgICAgICAgICBDU1NNX0tFWV9ISUVSQVJDSFkgS2V5SGllcmFyY2h5KTsKCkNTU01fUkVU
VVJOCkNTU01fVW5pbnRyb2R1Y2UgKGNvbnN0IENTU01fR1VJRCAqTW9kdWxlSUQpOwoKQ1NTTV9S
RVRVUk4KQ1NTTV9Nb2R1bGVBdHRhY2ggKGNvbnN0IENTU01fR1VJRCAqTW9kdWxlR3VpZCwKICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENTU01fVkVSU0lPTiAqVmVyc2lvbiwKICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENTU01fQVBJX01FTU9SWV9GVU5DUyAqTWVtb3J5RnVuY3MsCiAgICAgICAg
ICAgICAgICAgICB1aW50MzIgU3Vic2VydmljZUlELAogICAgICAgICAgICAgICAgICAgQ1NTTV9T
RVJWSUNFX1RZUEUgU3ViU2VydmljZVR5cGUsCiAgICAgICAgICAgICAgICAgICBDU1NNX0FUVEFD
SF9GTEFHUyBBdHRhY2hGbGFncywKICAgICAgICAgICAgICAgICAgIENTU01fS0VZX0hJRVJBUkNI
WSBLZXlIaWVyYXJjaHksCiAgICAgICAgICAgICAgICAgICBDU1NNX0ZVTkNfTkFNRV9BRERSICpG
dW5jdGlvblRhYmxlLAogICAgICAgICAgICAgICAgICAgdWludDMyIE51bUZ1bmN0aW9uVGFibGUs
CiAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpSZXNlcnZlZCwKICAgICAgICAgICAgICAg
ICAgIENTU01fTU9EVUxFX0hBTkRMRV9QVFIgTmV3TW9kdWxlSGFuZGxlKTsKCkNTU01fUkVUVVJO
CkNTU01fTW9kdWxlRGV0YWNoIChDU1NNX01PRFVMRV9IQU5ETEUgTW9kdWxlSGFuZGxlKTsKCkNT
U01fUkVUVVJOCkNTU01fU2V0UHJpdmlsZWdlIChDU1NNX1BSSVZJTEVHRSBQcml2aWxlZ2UpOwoK
Q1NTTV9SRVRVUk4KQ1NTTV9HZXRQcml2aWxlZ2UgKENTU01fUFJJVklMRUdFICpQcml2aWxlZ2Up
OwoKQ1NTTV9SRVRVUk4KQ1NTTV9HZXRNb2R1bGVHVUlERnJvbUhhbmRsZSAoQ1NTTV9NT0RVTEVf
SEFORExFIE1vZHVsZUhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9H
VUlEX1BUUiBNb2R1bGVHVUlEKTsKCkNTU01fUkVUVVJOCkNTU01fR2V0U3Vic2VydmljZVVJREZy
b21IYW5kbGUgKENTU01fTU9EVUxFX0hBTkRMRSBNb2R1bGVIYW5kbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU01fU1VCU0VSVklDRV9VSURfUFRSIFN1YnNlcnZpY2VVSUQp
OwoKQ1NTTV9SRVRVUk4KQ1NTTV9MaXN0QXR0YWNoZWRNb2R1bGVNYW5hZ2VycyAodWludDMyICpO
dW1iZXJPZk1vZHVsZU1hbmFnZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NNX0dVSURfUFRSIE1vZHVsZU1hbmFnZXJHdWlkcyk7CgpDU1NNX1JFVFVSTgpDU1NNX0dldEFQ
SU1lbW9yeUZ1bmN0aW9ucyAoQ1NTTV9NT0RVTEVfSEFORExFIEFkZEluSGFuZGxlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTTV9BUElfTUVNT1JZX0ZVTkNTX1BUUiBBcHBNZW1vcnlG
dW5jcyk7CgoKCgpDU1NNX1JFVFVSTgpDU1NNX0NTUF9DcmVhdGVTaWduYXR1cmVDb250ZXh0IChD
U1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NNX0FMR09SSVRITVMgQWxnb3JpdGhtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENTU01fQUNDRVNTX0NSRURFTlRJQUxTICpBY2Nlc3NDcmVkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0tFWSAqS2V5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSAqTmV3Q29udGV4dEhhbmRsZSk7
CgpDU1NNX1JFVFVSTgpDU1NNX0NTUF9DcmVhdGVTeW1tZXRyaWNDb250ZXh0IChDU1NNX0NTUF9I
QU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0FM
R09SSVRITVMgQWxnb3JpdGhtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENT
U01fRU5DUllQVF9NT0RFIE1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENTU01fQUNDRVNTX0NSRURFTlRJQUxTICpBY2Nlc3NDcmVkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0tFWSAqS2V5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkluaXRWZWN0b3IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU01fUEFERElORyBQYWRkaW5nLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkICpSZXNlcnZlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgKk5ld0NvbnRleHRIYW5kbGUpOwoKQ1NTTV9SRVRVUk4K
Q1NTTV9DU1BfQ3JlYXRlRGlnZXN0Q29udGV4dCAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9BTEdPUklUSE1TIEFsZ29yaXRobUlE
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSAqTmV3Q29udGV4
dEhhbmRsZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0NTUF9DcmVhdGVNYWNDb250ZXh0IChDU1NNX0NT
UF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0FMR09S
SVRITVMgQWxnb3JpdGhtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01f
S0VZICpLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fQ0NfSEFORExFICpOZXdD
b250ZXh0SGFuZGxlKTsKCkNTU01fUkVUVVJOCkNTU01fQ1NQX0NyZWF0ZVJhbmRvbUdlbkNvbnRl
eHQgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU01fQUxHT1JJVEhNUyBBbGdvcml0aG1JRCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ1NTTV9DUllQVE9fREFUQSAqU2VlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTTV9TSVpFIExlbmd0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgKk5ld0NvbnRleHRIYW5kbGUpOwoKQ1NTTV9SRVRV
Uk4KQ1NTTV9DU1BfQ3JlYXRlQXN5bW1ldHJpY0NvbnRleHQgKENTU01fQ1NQX0hBTkRMRSBDU1BI
YW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0FMR09SSVRITVMg
QWxnb3JpdGhtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NN
X0FDQ0VTU19DUkVERU5USUFMUyAqQWNjZXNzQ3JlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENTU01fS0VZICpLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NNX1BBRERJTkcgUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU01fQ0NfSEFORExFICpOZXdDb250ZXh0SGFuZGxlKTsKCkNTU01fUkVUVVJOCkNT
U01fQ1NQX0NyZWF0ZURlcml2ZUtleUNvbnRleHQgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fQUxHT1JJVEhNUyBBbGdvcml0
aG1JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9LRVlfVFlQRSBEZXJp
dmVLZXlUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzIgRGVyaXZl
S2V5TGVuZ3RoSW5CaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
U1NNX0FDQ0VTU19DUkVERU5USUFMUyAqQWNjZXNzQ3JlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ1NTTV9LRVkgKkJhc2VLZXksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMiBJdGVyYXRpb25Db3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpTYWx0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDU1NNX0NSWVBUT19EQVRBICpTZWVkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSAqTmV3Q29udGV4dEhhbmRsZSk7CgpDU1NN
X1JFVFVSTgpDU1NNX0NTUF9DcmVhdGVLZXlHZW5Db250ZXh0IChDU1NNX0NTUF9IQU5ETEUgQ1NQ
SGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0FMR09SSVRITVMgQWxn
b3JpdGhtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiBLZXlTaXplSW5C
aXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0NSWVBUT19EQVRB
ICpTZWVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKlNh
bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFURSAqU3RhcnRE
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEUgKkVuZERh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqUGFyYW1z
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSAqTmV3Q29udGV4
dEhhbmRsZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0NTUF9DcmVhdGVQYXNzVGhyb3VnaENvbnRleHQg
KENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQ1NTTV9LRVkgKktleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NNX0NDX0hBTkRMRSAqTmV3Q29udGV4dEhhbmRsZSk7CgpDU1NNX1JFVFVSTgpDU1NN
X0dldENvbnRleHQgKENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAgICAgICAgIENT
U01fQ09OVEVYVF9QVFIgKkNvbnRleHQpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9GcmVlQ29udGV4dCAo
Q1NTTV9DT05URVhUX1BUUiBDb250ZXh0KTsKCkNTU01fUkVUVVJOCkNTU01fU2V0Q29udGV4dCAo
Q1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9DT05U
RVhUICpDb250ZXh0KTsKCkNTU01fUkVUVVJOCkNTU01fRGVsZXRlQ29udGV4dCAoQ1NTTV9DQ19I
QU5ETEUgQ0NIYW5kbGUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9HZXRDb250ZXh0QXR0cmlidXRlIChj
b25zdCBDU1NNX0NPTlRFWFQgKkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyIEF0dHJpYnV0ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9DT05URVhU
X0FUVFJJQlVURV9QVFIgKkNvbnRleHRBdHRyaWJ1dGUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9VcGRh
dGVDb250ZXh0QXR0cmlidXRlcyAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMiBOdW1iZXJPZkF0dHJpYnV0ZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fQ09OVEVYVF9BVFRSSUJVVEUgKkNvbnRleHRB
dHRyaWJ1dGVzKTsKCkNTU01fUkVUVVJOCkNTU01fRGVsZXRlQ29udGV4dEF0dHJpYnV0ZXMgKENT
U01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzIgTnVtYmVyT2ZBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDU1NNX0NPTlRFWFRfQVRUUklCVVRFICpDb250ZXh0QXR0cmlidXRlcyk7CgoKCgpDU1NNX1JF
VFVSTgpDU1NNX0NTUF9Mb2dpbiAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAg
ICAgICAgIGNvbnN0IENTU01fQUNDRVNTX0NSRURFTlRJQUxTICpBY2Nlc3NDcmVkLAogICAgICAg
ICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpMb2dpbk5hbWUsCiAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpSZXNlcnZlZCk7CgpDU1NNX1JFVFVSTgpDU1NNX0NTUF9Mb2dvdXQgKENTU01fQ1NQ
X0hBTkRMRSBDU1BIYW5kbGUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DU1BfR2V0TG9naW5BY2wgKENT
U01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NN
X1NUUklORyAqU2VsZWN0aW9uVGFnLAogICAgICAgICAgICAgICAgICAgICAgdWludDMyICpOdW1i
ZXJPZkFjbEluZm9zLAogICAgICAgICAgICAgICAgICAgICAgQ1NTTV9BQ0xfRU5UUllfSU5GT19Q
VFIgKkFjbEluZm9zKTsKCkNTU01fUkVUVVJOCkNTU01fQ1NQX0NoYW5nZUxvZ2luQWNsIChDU1NN
X0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NT
TV9BQ0NFU1NfQ1JFREVOVElBTFMgKkFjY2Vzc0NyZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDU1NNX0FDTF9FRElUICpBY2xFZGl0KTsKCkNTU01fUkVUVVJOCkNTU01fR2V0S2V5
QWNsIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICAgICAgICAgY29uc3QgQ1NT
TV9LRVkgKktleSwKICAgICAgICAgICAgICAgIGNvbnN0IENTU01fU1RSSU5HICpTZWxlY3Rpb25U
YWcsCiAgICAgICAgICAgICAgICB1aW50MzIgKk51bWJlck9mQWNsSW5mb3MsCiAgICAgICAgICAg
ICAgICBDU1NNX0FDTF9FTlRSWV9JTkZPX1BUUiAqQWNsSW5mb3MpOwoKQ1NTTV9SRVRVUk4KQ1NT
TV9DaGFuZ2VLZXlBY2wgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgICAgICAg
ICAgICBjb25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFMUyAqQWNjZXNzQ3JlZCwKICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENTU01fQUNMX0VESVQgKkFjbEVkaXQsCiAgICAgICAgICAgICAgICAg
ICBjb25zdCBDU1NNX0tFWSAqS2V5KTsKCkNTU01fUkVUVVJOCkNTU01fR2V0S2V5T3duZXIgKENT
U01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fS0VZ
ICpLZXksCiAgICAgICAgICAgICAgICAgIENTU01fQUNMX09XTkVSX1BST1RPVFlQRV9QVFIgT3du
ZXIpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DaGFuZ2VLZXlPd25lciAoQ1NTTV9DU1BfSEFORExFIENT
UEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9BQ0NFU1NfQ1JFREVOVElB
TFMgKkFjY2Vzc0NyZWQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fS0VZICpLZXks
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fQUNMX09XTkVSX1BST1RPVFlQRSAqTmV3
T3duZXIpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DU1BfR2V0TG9naW5Pd25lciAoQ1NTTV9DU1BfSEFO
RExFIENTUEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9BQ0xfT1dORVJfUFJP
VE9UWVBFX1BUUiBPd25lcik7CgpDU1NNX1JFVFVSTgpDU1NNX0NTUF9DaGFuZ2VMb2dpbk93bmVy
IChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFMUyAqQWNjZXNzQ3JlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ1NTTV9BQ0xfT1dORVJfUFJPVE9UWVBFICpOZXdPd25lcik7CgpD
U1NNX1JFVFVSTgpDU1NNX1NpZ25EYXRhIChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAg
ICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEYXRhQnVmcywKICAgICAgICAgICAgICAgdWludDMy
IERhdGFCdWZDb3VudCwKICAgICAgICAgICAgICAgQ1NTTV9BTEdPUklUSE1TIERpZ2VzdEFsZ29y
aXRobSwKICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BUUiBTaWduYXR1cmUpOwoKQ1NTTV9SRVRV
Uk4KQ1NTTV9TaWduRGF0YUluaXQgKENTU01fQ0NfSEFORExFIENDSGFuZGxlKTsKCkNTU01fUkVU
VVJOCkNTU01fU2lnbkRhdGFVcGRhdGUgKENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkRhdGFCdWZzLAogICAgICAgICAgICAgICAg
ICAgICB1aW50MzIgRGF0YUJ1ZkNvdW50KTsKCkNTU01fUkVUVVJOCkNTU01fU2lnbkRhdGFGaW5h
bCAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgQ1NTTV9EQVRB
X1BUUiBTaWduYXR1cmUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9WZXJpZnlEYXRhIChDU1NNX0NDX0hB
TkRMRSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkRhdGFCdWZz
LAogICAgICAgICAgICAgICAgIHVpbnQzMiBEYXRhQnVmQ291bnQsCiAgICAgICAgICAgICAgICAg
Q1NTTV9BTEdPUklUSE1TIERpZ2VzdEFsZ29yaXRobSwKICAgICAgICAgICAgICAgICBjb25zdCBD
U1NNX0RBVEEgKlNpZ25hdHVyZSk7CgpDU1NNX1JFVFVSTgpDU1NNX1ZlcmlmeURhdGFJbml0IChD
U1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSk7CgpDU1NNX1JFVFVSTgpDU1NNX1ZlcmlmeURhdGFVcGRh
dGUgKENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENTU01fREFUQSAqRGF0YUJ1ZnMsCiAgICAgICAgICAgICAgICAgICAgICAgdWludDMyIERhdGFC
dWZDb3VudCk7CgpDU1NNX1JFVFVSTgpDU1NNX1ZlcmlmeURhdGFGaW5hbCAoQ1NTTV9DQ19IQU5E
TEUgQ0NIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKlNpZ25h
dHVyZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0RpZ2VzdERhdGEgKENTU01fQ0NfSEFORExFIENDSGFu
ZGxlLAogICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqRGF0YUJ1ZnMsCiAgICAgICAg
ICAgICAgICAgdWludDMyIERhdGFCdWZDb3VudCwKICAgICAgICAgICAgICAgICBDU1NNX0RBVEFf
UFRSIERpZ2VzdCk7CgpDU1NNX1JFVFVSTgpDU1NNX0RpZ2VzdERhdGFJbml0IChDU1NNX0NDX0hB
TkRMRSBDQ0hhbmRsZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0RpZ2VzdERhdGFVcGRhdGUgKENTU01f
Q0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFU
QSAqRGF0YUJ1ZnMsCiAgICAgICAgICAgICAgICAgICAgICAgdWludDMyIERhdGFCdWZDb3VudCk7
CgpDU1NNX1JFVFVSTgpDU1NNX0RpZ2VzdERhdGFDbG9uZSAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5k
bGUsCiAgICAgICAgICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSAqQ2xvbmVkbmV3Q0NIYW5k
bGUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9EaWdlc3REYXRhRmluYWwgKENTU01fQ0NfSEFORExFIEND
SGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BUUiBEaWdlc3QpOwoKQ1NT
TV9SRVRVUk4KQ1NTTV9HZW5lcmF0ZU1hYyAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAg
ICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqRGF0YUJ1ZnMsCiAgICAgICAgICAgICAgICAg
IHVpbnQzMiBEYXRhQnVmQ291bnQsCiAgICAgICAgICAgICAgICAgIENTU01fREFUQV9QVFIgTWFj
KTsKCkNTU01fUkVUVVJOCkNTU01fR2VuZXJhdGVNYWNJbml0IChDU1NNX0NDX0hBTkRMRSBDQ0hh
bmRsZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0dlbmVyYXRlTWFjVXBkYXRlIChDU1NNX0NDX0hBTkRM
RSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEYXRh
QnVmcywKICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyIERhdGFCdWZDb3VudCk7CgpDU1NN
X1JFVFVSTgpDU1NNX0dlbmVyYXRlTWFjRmluYWwgKENTU01fQ0NfSEFORExFIENDSGFuZGxlLAog
ICAgICAgICAgICAgICAgICAgICAgIENTU01fREFUQV9QVFIgTWFjKTsKCkNTU01fUkVUVVJOCkNT
U01fVmVyaWZ5TWFjIChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAgIGNv
bnN0IENTU01fREFUQSAqRGF0YUJ1ZnMsCiAgICAgICAgICAgICAgICB1aW50MzIgRGF0YUJ1ZkNv
dW50LAogICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpNYWMpOwoKQ1NTTV9SRVRVUk4K
Q1NTTV9WZXJpZnlNYWNJbml0IChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSk7CgpDU1NNX1JFVFVS
TgpDU1NNX1ZlcmlmeU1hY1VwZGF0ZSAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkRhdGFCdWZzLAogICAgICAgICAgICAgICAg
ICAgICAgdWludDMyIERhdGFCdWZDb3VudCk7CgpDU1NNX1JFVFVSTgpDU1NNX1ZlcmlmeU1hY0Zp
bmFsIChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q1NTTV9EQVRBICpNYWMpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9RdWVyeVNpemUgKENTU01fQ0NfSEFO
RExFIENDSGFuZGxlLAogICAgICAgICAgICAgICAgQ1NTTV9CT09MIEVuY3J5cHQsCiAgICAgICAg
ICAgICAgICB1aW50MzIgUXVlcnlTaXplQ291bnQsCiAgICAgICAgICAgICAgICBDU1NNX1FVRVJZ
X1NJWkVfREFUQV9QVFIgRGF0YUJsb2NrU2l6ZXMpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9FbmNyeXB0
RGF0YSAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgICAgICAgICAgIGNvbnN0IENT
U01fREFUQSAqQ2xlYXJCdWZzLAogICAgICAgICAgICAgICAgICB1aW50MzIgQ2xlYXJCdWZDb3Vu
dCwKICAgICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BUUiBDaXBoZXJCdWZzLAogICAgICAgICAg
ICAgICAgICB1aW50MzIgQ2lwaGVyQnVmQ291bnQsCiAgICAgICAgICAgICAgICAgIENTU01fU0la
RSAqYnl0ZXNFbmNyeXB0ZWQsCiAgICAgICAgICAgICAgICAgIENTU01fREFUQV9QVFIgUmVtRGF0
YSk7CgpDU1NNX1JFVFVSTgpDU1NNX0VuY3J5cHREYXRhUCAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5k
bGUsCiAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNsZWFyQnVmcywKICAgICAg
ICAgICAgICAgICAgIHVpbnQzMiBDbGVhckJ1ZkNvdW50LAogICAgICAgICAgICAgICAgICAgQ1NT
TV9EQVRBX1BUUiBDaXBoZXJCdWZzLAogICAgICAgICAgICAgICAgICAgdWludDMyIENpcGhlckJ1
ZkNvdW50LAogICAgICAgICAgICAgICAgICAgQ1NTTV9TSVpFICpieXRlc0VuY3J5cHRlZCwKICAg
ICAgICAgICAgICAgICAgIENTU01fREFUQV9QVFIgUmVtRGF0YSwKICAgICAgICAgICAgICAgICAg
IENTU01fUFJJVklMRUdFIFByaXZpbGVnZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0VuY3J5cHREYXRh
SW5pdCAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9FbmNyeXB0
RGF0YUluaXRQIChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAg
ICBDU1NNX1BSSVZJTEVHRSBQcml2aWxlZ2UpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9FbmNyeXB0RGF0
YVVwZGF0ZSAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENTU01fREFUQSAqQ2xlYXJCdWZzLAogICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzIgQ2xlYXJCdWZDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BUUiBD
aXBoZXJCdWZzLAogICAgICAgICAgICAgICAgICAgICAgICB1aW50MzIgQ2lwaGVyQnVmQ291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgIENTU01fU0laRSAqYnl0ZXNFbmNyeXB0ZWQpOwoKQ1NT
TV9SRVRVUk4KQ1NTTV9FbmNyeXB0RGF0YUZpbmFsIChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwK
ICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSIFJlbURhdGEpOwoKQ1NTTV9SRVRV
Uk4KQ1NTTV9EZWNyeXB0RGF0YSAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IENTU01fREFUQSAqQ2lwaGVyQnVmcywKICAgICAgICAgICAgICAgICAgdWlu
dDMyIENpcGhlckJ1ZkNvdW50LAogICAgICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSIENsZWFy
QnVmcywKICAgICAgICAgICAgICAgICAgdWludDMyIENsZWFyQnVmQ291bnQsCiAgICAgICAgICAg
ICAgICAgIENTU01fU0laRSAqYnl0ZXNEZWNyeXB0ZWQsCiAgICAgICAgICAgICAgICAgIENTU01f
REFUQV9QVFIgUmVtRGF0YSk7CgpDU1NNX1JFVFVSTgpDU1NNX0RlY3J5cHREYXRhUCAoQ1NTTV9D
Q19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNp
cGhlckJ1ZnMsCiAgICAgICAgICAgICAgICAgICB1aW50MzIgQ2lwaGVyQnVmQ291bnQsCiAgICAg
ICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSIENsZWFyQnVmcywKICAgICAgICAgICAgICAgICAg
IHVpbnQzMiBDbGVhckJ1ZkNvdW50LAogICAgICAgICAgICAgICAgICAgQ1NTTV9TSVpFICpieXRl
c0RlY3J5cHRlZCwKICAgICAgICAgICAgICAgICAgIENTU01fREFUQV9QVFIgUmVtRGF0YSwKICAg
ICAgICAgICAgICAgICAgIENTU01fUFJJVklMRUdFIFByaXZpbGVnZSk7CgpDU1NNX1JFVFVSTgpD
U1NNX0RlY3J5cHREYXRhSW5pdCAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUpOwoKQ1NTTV9SRVRV
Uk4KQ1NTTV9EZWNyeXB0RGF0YUluaXRQIChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAg
ICAgICAgICAgICAgICAgICBDU1NNX1BSSVZJTEVHRSBQcml2aWxlZ2UpOwoKQ1NTTV9SRVRVUk4K
Q1NTTV9EZWNyeXB0RGF0YVVwZGF0ZSAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqQ2lwaGVyQnVmcywKICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyIENpcGhlckJ1ZkNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICBDU1NNX0RBVEFfUFRSIENsZWFyQnVmcywKICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
IENsZWFyQnVmQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgIENTU01fU0laRSAqYnl0ZXNE
ZWNyeXB0ZWQpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9EZWNyeXB0RGF0YUZpbmFsIChDU1NNX0NDX0hB
TkRMRSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSIFJlbURh
dGEpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9RdWVyeUtleVNpemVJbkJpdHMgKENTU01fQ1NQX0hBTkRM
RSBDU1BIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hh
bmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fS0VZICpLZXksCiAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NNX0tFWV9TSVpFX1BUUiBLZXlTaXplKTsKCkNTU01fUkVU
VVJOCkNTU01fR2VuZXJhdGVLZXkgKENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAg
ICAgICAgICB1aW50MzIgS2V5VXNhZ2UsCiAgICAgICAgICAgICAgICAgIHVpbnQzMiBLZXlBdHRy
LAogICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKktleUxhYmVsLAogICAgICAgICAg
ICAgICAgICBjb25zdCBDU1NNX1JFU09VUkNFX0NPTlRST0xfQ09OVEVYVCAqQ3JlZEFuZEFjbEVu
dHJ5LAogICAgICAgICAgICAgICAgICBDU1NNX0tFWV9QVFIgS2V5KTsKCkNTU01fUkVUVVJOCkNT
U01fR2VuZXJhdGVLZXlQIChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAg
ICAgIHVpbnQzMiBLZXlVc2FnZSwKICAgICAgICAgICAgICAgICAgIHVpbnQzMiBLZXlBdHRyLAog
ICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpLZXlMYWJlbCwKICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENTU01fUkVTT1VSQ0VfQ09OVFJPTF9DT05URVhUICpDcmVkQW5kQWNsRW50
cnksCiAgICAgICAgICAgICAgICAgICBDU1NNX0tFWV9QVFIgS2V5LAogICAgICAgICAgICAgICAg
ICAgQ1NTTV9QUklWSUxFR0UgUHJpdmlsZWdlKTsKCkNTU01fUkVUVVJOCkNTU01fR2VuZXJhdGVL
ZXlQYWlyIChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMiBQdWJsaWNLZXlVc2FnZSwKICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiBQdWJsaWNL
ZXlBdHRyLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpQdWJsaWNLZXlM
YWJlbCwKICAgICAgICAgICAgICAgICAgICAgIENTU01fS0VZX1BUUiBQdWJsaWNLZXksCiAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzIgUHJpdmF0ZUtleVVzYWdlLAogICAgICAgICAgICAgICAg
ICAgICAgdWludDMyIFByaXZhdGVLZXlBdHRyLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q1NTTV9EQVRBICpQcml2YXRlS2V5TGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
U1NNX1JFU09VUkNFX0NPTlRST0xfQ09OVEVYVCAqQ3JlZEFuZEFjbEVudHJ5LAogICAgICAgICAg
ICAgICAgICAgICAgQ1NTTV9LRVlfUFRSIFByaXZhdGVLZXkpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9H
ZW5lcmF0ZUtleVBhaXJQIChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzIgUHVibGljS2V5VXNhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyIFB1YmxpY0tleUF0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRB
ICpQdWJsaWNLZXlMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0tFWV9QVFIgUHVi
bGljS2V5LAogICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiBQcml2YXRlS2V5VXNhZ2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyIFByaXZhdGVLZXlBdHRyLAogICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqUHJpdmF0ZUtleUxhYmVsLAogICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENTU01fUkVTT1VSQ0VfQ09OVFJPTF9DT05URVhUICpDcmVkQW5kQWNs
RW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9LRVlfUFRSIFByaXZhdGVLZXksCiAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTTV9QUklWSUxFR0UgUHJpdmlsZWdlKTsKCkNTU01fUkVU
VVJOCkNTU01fR2VuZXJhdGVSYW5kb20gKENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAg
ICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSIFJhbmRvbU51bWJlcik7CgpDU1NNX1JFVFVSTgpD
U1NNX0NTUF9PYnRhaW5Qcml2YXRlS2V5RnJvbVB1YmxpY0tleSAoQ1NTTV9DU1BfSEFORExFIENT
UEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENT
U01fS0VZICpQdWJsaWNLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NNX0tFWV9QVFIgUHJpdmF0ZUtleSk7CgpDU1NNX1JFVFVSTgpDU1NNX1dyYXBLZXkgKENT
U01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAgICAgIGNvbnN0IENTU01fQUNDRVNTX0NS
RURFTlRJQUxTICpBY2Nlc3NDcmVkLAogICAgICAgICAgICAgIGNvbnN0IENTU01fS0VZICpLZXks
CiAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEZXNjcmlwdGl2ZURhdGEsCiAgICAgICAg
ICAgICAgQ1NTTV9XUkFQX0tFWV9QVFIgV3JhcHBlZEtleSk7CgpDU1NNX1JFVFVSTgpDU1NNX1Vu
d3JhcEtleSAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgICAgICAgICBjb25zdCBD
U1NNX0tFWSAqUHVibGljS2V5LAogICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9XUkFQX0tFWSAq
V3JhcHBlZEtleSwKICAgICAgICAgICAgICAgIHVpbnQzMiBLZXlVc2FnZSwKICAgICAgICAgICAg
ICAgIHVpbnQzMiBLZXlBdHRyLAogICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpLZXlM
YWJlbCwKICAgICAgICAgICAgICAgIGNvbnN0IENTU01fUkVTT1VSQ0VfQ09OVFJPTF9DT05URVhU
ICpDcmVkQW5kQWNsRW50cnksCiAgICAgICAgICAgICAgICBDU1NNX0tFWV9QVFIgVW53cmFwcGVk
S2V5LAogICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BUUiBEZXNjcmlwdGl2ZURhdGEpOwoKQ1NT
TV9SRVRVUk4KQ1NTTV9XcmFwS2V5UCAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAg
ICAgICAgIGNvbnN0IENTU01fQUNDRVNTX0NSRURFTlRJQUxTICpBY2Nlc3NDcmVkLAogICAgICAg
ICAgICAgICBjb25zdCBDU1NNX0tFWSAqS2V5LAogICAgICAgICAgICAgICBjb25zdCBDU1NNX0RB
VEEgKkRlc2NyaXB0aXZlRGF0YSwKICAgICAgICAgICAgICAgQ1NTTV9XUkFQX0tFWV9QVFIgV3Jh
cHBlZEtleSwKICAgICAgICAgICAgICAgQ1NTTV9QUklWSUxFR0UgUHJpdmlsZWdlKTsKCkNTU01f
UkVUVVJOCkNTU01fVW53cmFwS2V5UCAoQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAg
ICAgICAgICAgY29uc3QgQ1NTTV9LRVkgKlB1YmxpY0tleSwKICAgICAgICAgICAgICAgICBjb25z
dCBDU1NNX1dSQVBfS0VZICpXcmFwcGVkS2V5LAogICAgICAgICAgICAgICAgIHVpbnQzMiBLZXlV
c2FnZSwKICAgICAgICAgICAgICAgICB1aW50MzIgS2V5QXR0ciwKICAgICAgICAgICAgICAgICBj
b25zdCBDU1NNX0RBVEEgKktleUxhYmVsLAogICAgICAgICAgICAgICAgIGNvbnN0IENTU01fUkVT
T1VSQ0VfQ09OVFJPTF9DT05URVhUICpDcmVkQW5kQWNsRW50cnksCiAgICAgICAgICAgICAgICAg
Q1NTTV9LRVlfUFRSIFVud3JhcHBlZEtleSwKICAgICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRS
IERlc2NyaXB0aXZlRGF0YSwKICAgICAgICAgICAgICAgICBDU1NNX1BSSVZJTEVHRSBQcml2aWxl
Z2UpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9EZXJpdmVLZXkgKENTU01fQ0NfSEFORExFIENDSGFuZGxl
LAogICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BUUiBQYXJhbSwKICAgICAgICAgICAgICAgIHVp
bnQzMiBLZXlVc2FnZSwKICAgICAgICAgICAgICAgIHVpbnQzMiBLZXlBdHRyLAogICAgICAgICAg
ICAgICAgY29uc3QgQ1NTTV9EQVRBICpLZXlMYWJlbCwKICAgICAgICAgICAgICAgIGNvbnN0IENT
U01fUkVTT1VSQ0VfQ09OVFJPTF9DT05URVhUICpDcmVkQW5kQWNsRW50cnksCiAgICAgICAgICAg
ICAgICBDU1NNX0tFWV9QVFIgRGVyaXZlZEtleSk7CgpDU1NNX1JFVFVSTgpDU1NNX0ZyZWVLZXkg
KENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgICAgICAgY29uc3QgQ1NTTV9BQ0NF
U1NfQ1JFREVOVElBTFMgKkFjY2Vzc0NyZWQsCiAgICAgICAgICAgICAgQ1NTTV9LRVlfUFRSIEtl
eVB0ciwKICAgICAgICAgICAgICBDU1NNX0JPT0wgRGVsZXRlKTsKCkNTU01fUkVUVVJOCkNTU01f
R2VuZXJhdGVBbGdvcml0aG1QYXJhbXMgKENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzIgUGFyYW1CaXRzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSIFBhcmFtKTsKCgoKCkNTU01fUkVUVVJOCkNTU01f
Q1NQX0dldE9wZXJhdGlvbmFsU3RhdGlzdGljcyAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0NTUF9PUEVSQVRJT05BTF9T
VEFUSVNUSUNTICpTdGF0aXN0aWNzKTsKCkNTU01fUkVUVVJOCkNTU01fR2V0VGltZVZhbHVlIChD
U1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgQ1NTTV9BTEdPUklU
SE1TIFRpbWVBbGdvcml0aG0sCiAgICAgICAgICAgICAgICAgICBDU1NNX0RBVEEgKlRpbWVEYXRh
KTsKCkNTU01fUkVUVVJOCkNTU01fUmV0cmlldmVVbmlxdWVJZCAoQ1NTTV9DU1BfSEFORExFIENT
UEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSIFVuaXF1ZUlEKTsK
CkNTU01fUkVUVVJOCkNTU01fUmV0cmlldmVDb3VudGVyIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFu
ZGxlLAogICAgICAgICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BUUiBDb3VudGVyKTsKCkNTU01f
UkVUVVJOCkNTU01fVmVyaWZ5RGV2aWNlIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAg
ICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEZXZpY2VDZXJ0KTsKCgoKCkNTU01fUkVU
VVJOCkNTU01fQ1NQX1Bhc3NUaHJvdWdoIChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMiBQYXNzVGhyb3VnaElkLAogICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqSW5EYXRhLAogICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKk91dERh
dGEpOwoKCgoKQ1NTTV9SRVRVUk4KQ1NTTV9UUF9TdWJtaXRDcmVkUmVxdWVzdCAoQ1NTTV9UUF9I
QU5ETEUgVFBIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fVFBf
QVVUSE9SSVRZX0lEICpQcmVmZXJyZWRBdXRob3JpdHksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU01fVFBfQVVUSE9SSVRZX1JFUVVFU1RfVFlQRSBSZXF1ZXN0VHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9UUF9SRVFVRVNUX1NFVCAqUmVxdWVzdElucHV0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX1RQX0NBTExFUkFVVEhfQ09O
VEVYVCAqQ2FsbGVyQXV0aENvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbnQz
MiAqRXN0aW1hdGVkVGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BU
UiBSZWZlcmVuY2VJZGVudGlmaWVyKTsKCkNTU01fUkVUVVJOCkNTU01fVFBfUmV0cmlldmVDcmVk
UmVzdWx0IChDU1NNX1RQX0hBTkRMRSBUUEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENTU01fREFUQSAqUmVmZXJlbmNlSWRlbnRpZmllciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENTU01fVFBfQ0FMTEVSQVVUSF9DT05URVhUICpDYWxsZXJBdXRo
Q3JlZGVudGlhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW50MzIgKkVzdGltYXRl
ZFRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0JPT0wgKkNvbmZpcm1hdGlv
blJlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9UUF9SRVNVTFRfU0VU
X1BUUiAqUmV0cmlldmVPdXRwdXQpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9UUF9Db25maXJtQ3JlZFJl
c3VsdCAoQ1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENTU01fREFUQSAqUmVmZXJlbmNlSWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ1NTTV9UUF9DQUxMRVJBVVRIX0NPTlRFWFQgKkNhbGxlckF1dGhDcmVk
ZW50aWFscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9UUF9DT05GSVJN
X1JFU1BPTlNFICpSZXNwb25zZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENT
U01fVFBfQVVUSE9SSVRZX0lEICpQcmVmZXJyZWRBdXRob3JpdHkpOwoKQ1NTTV9SRVRVUk4KQ1NT
TV9UUF9SZWNlaXZlQ29uZmlybWF0aW9uIChDU1NNX1RQX0hBTkRMRSBUUEhhbmRsZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKlJlZmVyZW5jZUlkZW50aWZp
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9UUF9DT05GSVJNX1JFU1BPTlNF
X1BUUiAqUmVzcG9uc2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbnQzMiAqRWxh
cHNlZFRpbWUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9UUF9DZXJ0UmVjbGFpbUtleSAoQ1NTTV9UUF9I
QU5ETEUgVFBIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fQ0VSVEdS
T1VQICpDZXJ0R3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiBDZXJ0SW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgIENTU01fTE9OR19IQU5ETEUgS2V5Q2FjaGVIYW5kbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgIENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fUkVTT1VSQ0VfQ09OVFJPTF9DT05URVhUICpD
cmVkQW5kQWNsRW50cnkpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9UUF9DZXJ0UmVjbGFpbUFib3J0IChD
U1NNX1RQX0hBTkRMRSBUUEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0xP
TkdfSEFORExFIEtleUNhY2hlSGFuZGxlKTsKCkNTU01fUkVUVVJOCkNTU01fVFBfRm9ybVJlcXVl
c3QgKENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBD
U1NNX1RQX0FVVEhPUklUWV9JRCAqUHJlZmVycmVkQXV0aG9yaXR5LAogICAgICAgICAgICAgICAg
ICAgICBDU1NNX1RQX0ZPUk1fVFlQRSBGb3JtVHlwZSwKICAgICAgICAgICAgICAgICAgICAgQ1NT
TV9EQVRBX1BUUiBCbGFua0Zvcm0pOwoKQ1NTTV9SRVRVUk4KQ1NTTV9UUF9Gb3JtU3VibWl0IChD
U1NNX1RQX0hBTkRMRSBUUEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICBDU1NNX1RQX0ZPUk1f
VFlQRSBGb3JtVHlwZSwKICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkZvcm0s
CiAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9UUF9BVVRIT1JJVFlfSUQgKkNsZWFyYW5j
ZUF1dGhvcml0eSwKICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX1RQX0FVVEhPUklUWV9J
RCAqUmVwcmVzZW50ZWRBdXRob3JpdHksCiAgICAgICAgICAgICAgICAgICAgQ1NTTV9BQ0NFU1Nf
Q1JFREVOVElBTFNfUFRSIENyZWRlbnRpYWxzKTsKCkNTU01fUkVUVVJOCkNTU01fVFBfQ2VydEdy
b3VwVmVyaWZ5IChDU1NNX1RQX0hBTkRMRSBUUEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
TV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENT
U01fQ0VSVEdST1VQICpDZXJ0R3JvdXBUb0JlVmVyaWZpZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBDU1NNX1RQX1ZFUklGWV9DT05URVhUICpWZXJpZnlDb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTTV9UUF9WRVJJRllfQ09OVEVYVF9SRVNVTFRfUFRSIFZlcmlm
eUNvbnRleHRSZXN1bHQpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9UUF9DZXJ0Q3JlYXRlVGVtcGxhdGUg
KENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
TV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzIg
TnVtYmVyT2ZGaWVsZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0ZJ
RUxEICpDZXJ0RmllbGRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BU
UiBDZXJ0VGVtcGxhdGUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9UUF9DZXJ0R2V0QWxsVGVtcGxhdGVG
aWVsZHMgKENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNlcnRUZW1wbGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMiAqTnVtYmVyT2ZGaWVsZHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NNX0ZJRUxEX1BUUiAqQ2VydEZpZWxkcyk7CgpDU1NNX1JF
VFVSTgpDU1NNX1RQX0NlcnRTaWduIChDU1NNX1RQX0hBTkRMRSBUUEhhbmRsZSwKICAgICAgICAg
ICAgICAgICAgQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAgIENTU01f
Q0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNl
cnRUZW1wbGF0ZVRvQmVTaWduZWQsCiAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fQ0VSVEdS
T1VQICpTaWduZXJDZXJ0R3JvdXAsCiAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fVFBfVkVS
SUZZX0NPTlRFWFQgKlNpZ25lclZlcmlmeUNvbnRleHQsCiAgICAgICAgICAgICAgICAgIENTU01f
VFBfVkVSSUZZX0NPTlRFWFRfUkVTVUxUX1BUUiBTaWduZXJWZXJpZnlSZXN1bHQsCiAgICAgICAg
ICAgICAgICAgIENTU01fREFUQV9QVFIgU2lnbmVkQ2VydCk7CgpDU1NNX1JFVFVSTgpDU1NNX1RQ
X0NybFZlcmlmeSAoQ1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUsCiAgICAgICAgICAgICAgICAgICBD
U1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAgIENTU01fQ1NQX0hBTkRM
RSBDU1BIYW5kbGUsCiAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0VOQ09ERURfQ1JMICpD
cmxUb0JlVmVyaWZpZWQsCiAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0NFUlRHUk9VUCAq
U2lnbmVyQ2VydEdyb3VwLAogICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9UUF9WRVJJRllf
Q09OVEVYVCAqVmVyaWZ5Q29udGV4dCwKICAgICAgICAgICAgICAgICAgIENTU01fVFBfVkVSSUZZ
X0NPTlRFWFRfUkVTVUxUX1BUUiBSZXZva2VyVmVyaWZ5UmVzdWx0KTsKCkNTU01fUkVUVVJOCkNT
U01fVFBfQ3JsQ3JlYXRlVGVtcGxhdGUgKENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyIE51bWJlck9mRmllbGRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDU1NNX0ZJRUxEICpDcmxGaWVsZHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU01fREFUQV9QVFIgTmV3Q3JsVGVtcGxhdGUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9U
UF9DZXJ0UmV2b2tlIChDU1NNX1RQX0hBTkRMRSBUUEhhbmRsZSwKICAgICAgICAgICAgICAgICAg
ICBDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICBDU1NNX0NTUF9I
QU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqT2xk
Q3JsVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9DRVJUR1JPVVAgKkNl
cnRHcm91cFRvQmVSZXZva2VkLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fQ0VSVEdS
T1VQICpSZXZva2VyQ2VydEdyb3VwLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fVFBf
VkVSSUZZX0NPTlRFWFQgKlJldm9rZXJWZXJpZnlDb250ZXh0LAogICAgICAgICAgICAgICAgICAg
IENTU01fVFBfVkVSSUZZX0NPTlRFWFRfUkVTVUxUX1BUUiBSZXZva2VyVmVyaWZ5UmVzdWx0LAog
ICAgICAgICAgICAgICAgICAgIENTU01fVFBfQ0VSVENIQU5HRV9SRUFTT04gUmVhc29uLAogICAg
ICAgICAgICAgICAgICAgIENTU01fREFUQV9QVFIgTmV3Q3JsVGVtcGxhdGUpOwoKQ1NTTV9SRVRV
Uk4KQ1NTTV9UUF9DZXJ0UmVtb3ZlRnJvbUNybFRlbXBsYXRlIChDU1NNX1RQX0hBTkRMRSBUUEhh
bmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0NMX0hBTkRMRSBD
TEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0NTUF9IQU5E
TEUgQ1NQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENT
U01fREFUQSAqT2xkQ3JsVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ1NTTV9DRVJUR1JPVVAgKkNlcnRHcm91cFRvQmVSZW1vdmVkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fQ0VSVEdST1VQICpSZXZva2VyQ2Vy
dEdyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fVFBf
VkVSSUZZX0NPTlRFWFQgKlJldm9rZXJWZXJpZnlDb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENTU01fVFBfVkVSSUZZX0NPTlRFWFRfUkVTVUxUX1BUUiBSZXZva2Vy
VmVyaWZ5UmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fREFU
QV9QVFIgTmV3Q3JsVGVtcGxhdGUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9UUF9DcmxTaWduIChDU1NN
X1RQX0hBTkRMRSBUUEhhbmRsZSwKICAgICAgICAgICAgICAgICBDU1NNX0NMX0hBTkRMRSBDTEhh
bmRsZSwKICAgICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAg
ICAgICAgICBjb25zdCBDU1NNX0VOQ09ERURfQ1JMICpDcmxUb0JlU2lnbmVkLAogICAgICAgICAg
ICAgICAgIGNvbnN0IENTU01fQ0VSVEdST1VQICpTaWduZXJDZXJ0R3JvdXAsCiAgICAgICAgICAg
ICAgICAgY29uc3QgQ1NTTV9UUF9WRVJJRllfQ09OVEVYVCAqU2lnbmVyVmVyaWZ5Q29udGV4dCwK
ICAgICAgICAgICAgICAgICBDU1NNX1RQX1ZFUklGWV9DT05URVhUX1JFU1VMVF9QVFIgU2lnbmVy
VmVyaWZ5UmVzdWx0LAogICAgICAgICAgICAgICAgIENTU01fREFUQV9QVFIgU2lnbmVkQ3JsKTsK
CkNTU01fUkVUVVJOCkNTU01fVFBfQXBwbHlDcmxUb0RiIChDU1NNX1RQX0hBTkRMRSBUUEhhbmRs
ZSwKICAgICAgICAgICAgICAgICAgICAgIENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAg
ICAgICAgICAgICAgICAgQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENTU01fRU5DT0RFRF9DUkwgKkNybFRvQmVBcHBsaWVkLAogICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ1NTTV9DRVJUR1JPVVAgKlNpZ25lckNlcnRHcm91cCwKICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENTU01fVFBfVkVSSUZZX0NPTlRFWFQgKkFwcGx5Q3JsVmVy
aWZ5Q29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgIENTU01fVFBfVkVSSUZZX0NPTlRFWFRf
UkVTVUxUX1BUUiBBcHBseUNybFZlcmlmeVJlc3VsdCk7CgpDU1NNX1JFVFVSTgpDU1NNX1RQX0Nl
cnRHcm91cENvbnN0cnVjdCAoQ1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDU1NNX0RMX0RCX0xJU1QgKkRCTGlzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKkNvbnN0cnVjdFBhcmFtcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENTU01fQ0VSVEdST1VQICpDZXJ0R3JvdXBGcmFnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTTV9DRVJUR1JPVVBfUFRSICpDZXJ0R3JvdXApOwoKQ1NTTV9S
RVRVUk4KQ1NTTV9UUF9DZXJ0R3JvdXBQcnVuZSAoQ1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgIENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDU1NNX0RMX0RCX0xJU1QgKkRCTGlzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ1NTTV9DRVJUR1JPVVAgKk9yZGVyZWRDZXJ0R3JvdXAsCiAgICAg
ICAgICAgICAgICAgICAgICAgIENTU01fQ0VSVEdST1VQX1BUUiAqUHJ1bmVkQ2VydEdyb3VwKTsK
CkNTU01fUkVUVVJOCkNTU01fVFBfQ2VydEdyb3VwVG9UdXBsZUdyb3VwIChDU1NNX1RQX0hBTkRM
RSBUUEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fQ0xfSEFORExF
IENMSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9DRVJU
R1JPVVAgKkNlcnRHcm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fVFVQ
TEVHUk9VUF9QVFIgKlR1cGxlR3JvdXApOwoKQ1NTTV9SRVRVUk4KQ1NTTV9UUF9UdXBsZUdyb3Vw
VG9DZXJ0R3JvdXAgKENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDU1NNX1RVUExFR1JPVVAgKlR1cGxlR3JvdXAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NNX0NFUlRHUk9VUF9QVFIgKkNlcnRUZW1wbGF0ZXMpOwoK
Q1NTTV9SRVRVUk4KQ1NTTV9UUF9QYXNzVGhyb3VnaCAoQ1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUs
CiAgICAgICAgICAgICAgICAgICAgIENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICAg
ICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ1NTTV9ETF9EQl9MSVNUICpEQkxpc3QsCiAgICAgICAgICAgICAgICAgICAgIHVpbnQz
MiBQYXNzVGhyb3VnaElkLAogICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpJbnB1dFBh
cmFtcywKICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKk91dHB1dFBhcmFtcyk7CgoKCgpDU1NN
X1JFVFVSTgpDU1NNX0FDX0F1dGhDb21wdXRlIChDU1NNX0FDX0hBTkRMRSBBQ0hhbmRsZSwKICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9UVVBMRUdST1VQICpCYXNlQXV0aG9yaXphdGlv
bnMsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fVFVQTEVHUk9VUCAqQ3JlZGVudGlh
bHMsCiAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiBOdW1iZXJPZlJlcXVlc3RvcnMsCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENTU01fTElTVCAqUmVxdWVzdG9ycywKICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ1NTTV9MSVNUICpSZXF1ZXN0ZWRBdXRob3JpemF0aW9uUGVyaW9kLAog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0xJU1QgKlJlcXVlc3RlZEF1dGhvcml6YXRp
b24sCiAgICAgICAgICAgICAgICAgICAgIENTU01fVFVQTEVHUk9VUF9QVFIgQXV0aG9yaXphdGlv
blJlc3VsdCk7CgpDU1NNX1JFVFVSTgpDU1NNX0FDX1Bhc3NUaHJvdWdoIChDU1NNX0FDX0hBTkRM
RSBBQ0hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgQ1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUs
CiAgICAgICAgICAgICAgICAgICAgIENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICAg
ICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ1NTTV9ETF9EQl9MSVNUICpEQkxpc3QsCiAgICAgICAgICAgICAgICAgICAgIHVpbnQz
MiBQYXNzVGhyb3VnaElkLAogICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpJbnB1dFBh
cmFtcywKICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKk91dHB1dFBhcmFtcyk7CgoKCgpDU1NN
X1JFVFVSTgpDU1NNX0NMX0NlcnRDcmVhdGVUZW1wbGF0ZSAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5k
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzIgTnVtYmVyT2ZGaWVsZHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0ZJRUxEICpDZXJ0RmllbGRzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BUUiBDZXJ0VGVtcGxhdGUpOwoK
Q1NTTV9SRVRVUk4KQ1NTTV9DTF9DZXJ0R2V0QWxsVGVtcGxhdGVGaWVsZHMgKENTU01fQ0xfSEFO
RExFIENMSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NT
TV9EQVRBICpDZXJ0VGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzIgKk51bWJlck9mRmllbGRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTTV9GSUVMRF9QVFIgKkNlcnRGaWVsZHMpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DTF9DZXJ0U2ln
biAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAgIENTU01fQ0NfSEFO
RExFIENDSGFuZGxlLAogICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNlcnRUZW1w
bGF0ZSwKICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9GSUVMRCAqU2lnblNjb3BlLAogICAg
ICAgICAgICAgICAgICB1aW50MzIgU2NvcGVTaXplLAogICAgICAgICAgICAgICAgICBDU1NNX0RB
VEFfUFRSIFNpZ25lZENlcnQpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DTF9DZXJ0VmVyaWZ5IChDU1NN
X0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSBD
Q0hhbmRsZSwKICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNlcnRUb0JlVmVy
aWZpZWQsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpTaWduZXJDZXJ0LAog
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fRklFTEQgKlZlcmlmeVNjb3BlLAogICAgICAg
ICAgICAgICAgICAgIHVpbnQzMiBTY29wZVNpemUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DTF9DZXJ0
VmVyaWZ5V2l0aEtleSAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBDU1NNX0RBVEEgKkNlcnRUb0JlVmVyaWZpZWQpOwoKQ1NTTV9SRVRVUk4KQ1NT
TV9DTF9DZXJ0R2V0Rmlyc3RGaWVsZFZhbHVlIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNlcnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9PSUQgKkNlcnRGaWVsZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0hBTkRMRV9QVFIgUmVzdWx0c0hhbmRs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzIgKk51bWJlck9mTWF0Y2hl
ZEZpZWxkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSICpW
YWx1ZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0NMX0NlcnRHZXROZXh0RmllbGRWYWx1ZSAoQ1NTTV9D
TF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0hB
TkRMRSBSZXN1bHRzSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9E
QVRBX1BUUiAqVmFsdWUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DTF9DZXJ0QWJvcnRRdWVyeSAoQ1NT
TV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIENTU01fSEFORExF
IFJlc3VsdHNIYW5kbGUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DTF9DZXJ0R2V0S2V5SW5mbyAoQ1NT
TV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01f
REFUQSAqQ2VydCwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9LRVlfUFRSICpLZXkpOwoK
Q1NTTV9SRVRVUk4KQ1NTTV9DTF9DZXJ0R2V0QWxsRmllbGRzIChDU1NNX0NMX0hBTkRMRSBDTEhh
bmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNlcnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyICpOdW1iZXJPZkZpZWxkcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NNX0ZJRUxEX1BUUiAqQ2VydEZpZWxkcyk7CgpDU1NNX1JFVFVS
TgpDU1NNX0NMX0ZyZWVGaWVsZHMgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICAg
ICAgICAgICAgIHVpbnQzMiBOdW1iZXJPZkZpZWxkcywKICAgICAgICAgICAgICAgICAgICBDU1NN
X0ZJRUxEX1BUUiAqRmllbGRzKTsKCkNTU01fUkVUVVJOCkNTU01fQ0xfRnJlZUZpZWxkVmFsdWUg
KENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
U1NNX09JRCAqQ2VydE9yQ3JsT2lkLAogICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0RBVEFf
UFRSIFZhbHVlKTsKCkNTU01fUkVUVVJOCkNTU01fQ0xfQ2VydENhY2hlIChDU1NNX0NMX0hBTkRM
RSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqQ2VydCwKICAg
ICAgICAgICAgICAgICAgIENTU01fSEFORExFX1BUUiBDZXJ0SGFuZGxlKTsKCkNTU01fUkVUVVJO
CkNTU01fQ0xfQ2VydEdldEZpcnN0Q2FjaGVkRmllbGRWYWx1ZSAoQ1NTTV9DTF9IQU5ETEUgQ0xI
YW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9IQU5ETEUg
Q2VydEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
U1NNX09JRCAqQ2VydEZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU01fSEFORExFX1BUUiBSZXN1bHRzSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMiAqTnVtYmVyT2ZNYXRjaGVkRmllbGRzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fREFUQV9QVFIgKlZhbHVlKTsKCkNTU01fUkVU
VVJOCkNTU01fQ0xfQ2VydEdldE5leHRDYWNoZWRGaWVsZFZhbHVlIChDU1NNX0NMX0hBTkRMRSBD
TEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fSEFORExF
IFJlc3VsdHNIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NN
X0RBVEFfUFRSICpWYWx1ZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0NMX0NlcnRBYm9ydENhY2hlIChD
U1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9IQU5E
TEUgQ2VydEhhbmRsZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0NMX0NlcnRHcm91cFRvU2lnbmVkQnVu
ZGxlIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENTU01fQ0VSVEdST1VQICpDZXJ0R3JvdXBUb0J1bmRsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9DRVJUX0JVTkRMRV9IRUFERVIgKkJ1
bmRsZUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fREFUQV9QVFIg
U2lnbmVkQnVuZGxlKTsKCkNTU01fUkVUVVJOCkNTU01fQ0xfQ2VydEdyb3VwRnJvbVZlcmlmaWVk
QnVuZGxlIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9DRVJUX0JVTkRMRSAqQ2VydEJ1bmRsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqU2lnbmVy
Q2VydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fQ0VSVEdST1VQ
X1BUUiAqQ2VydEdyb3VwKTsKCkNTU01fUkVUVVJOCkNTU01fQ0xfQ2VydERlc2NyaWJlRm9ybWF0
IChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMiAqTnVtYmVyT2ZGaWVsZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX09J
RF9QVFIgKk9pZExpc3QpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DTF9DcmxDcmVhdGVUZW1wbGF0ZSAo
Q1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
MiBOdW1iZXJPZkZpZWxkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9G
SUVMRCAqQ3JsVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fREFUQV9Q
VFIgTmV3Q3JsKTsKCkNTU01fUkVUVVJOCkNTU01fQ0xfQ3JsU2V0RmllbGRzIChDU1NNX0NMX0hB
TkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiBOdW1iZXJPZkZpZWxk
cywKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fRklFTEQgKkNybFRlbXBsYXRlLAog
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpPbGRDcmwsCiAgICAgICAgICAg
ICAgICAgICAgICBDU1NNX0RBVEFfUFRSIE1vZGlmaWVkQ3JsKTsKCkNTU01fUkVUVVJOCkNTU01f
Q0xfQ3JsQWRkQ2VydCAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAg
ICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NT
TV9EQVRBICpDZXJ0LAogICAgICAgICAgICAgICAgICAgIHVpbnQzMiBOdW1iZXJPZkZpZWxkcywK
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0ZJRUxEICpDcmxFbnRyeUZpZWxkcywKICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKk9sZENybCwKICAgICAgICAgICAgICAg
ICAgICBDU1NNX0RBVEFfUFRSIE5ld0NybCk7CgpDU1NNX1JFVFVSTgpDU1NNX0NMX0NybFJlbW92
ZUNlcnQgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENTU01fREFUQSAqQ2VydCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RB
VEEgKk9sZENybCwKICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSIE5ld0NybCk7
CgpDU1NNX1JFVFVSTgpDU1NNX0NMX0NybFNpZ24gKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAog
ICAgICAgICAgICAgICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAgICAgICAg
IGNvbnN0IENTU01fREFUQSAqVW5zaWduZWRDcmwsCiAgICAgICAgICAgICAgICAgY29uc3QgQ1NT
TV9GSUVMRCAqU2lnblNjb3BlLAogICAgICAgICAgICAgICAgIHVpbnQzMiBTY29wZVNpemUsCiAg
ICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BUUiBTaWduZWRDcmwpOwoKQ1NTTV9SRVRVUk4KQ1NT
TV9DTF9DcmxWZXJpZnkgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICAgICAgICAg
ICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NN
X0RBVEEgKkNybFRvQmVWZXJpZmllZCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFU
QSAqU2lnbmVyQ2VydCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fRklFTEQgKlZlcmlm
eVNjb3BlLAogICAgICAgICAgICAgICAgICAgdWludDMyIFNjb3BlU2l6ZSk7CgpDU1NNX1JFVFVS
TgpDU1NNX0NMX0NybFZlcmlmeVdpdGhLZXkgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqQ3JsVG9CZVZlcmlmaWVkKTsKCkNTU01f
UkVUVVJOCkNTU01fQ0xfSXNDZXJ0SW5DcmwgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNlcnQsCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENTU01fREFUQSAqQ3JsLAogICAgICAgICAgICAgICAgICAgICBDU1NNX0JPT0wg
KkNlcnRGb3VuZCk7CgpDU1NNX1JFVFVSTgpDU1NNX0NMX0NybEdldEZpcnN0RmllbGRWYWx1ZSAo
Q1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDU1NNX0RBVEEgKkNybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENTU01fT0lEICpDcmxGaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01f
SEFORExFX1BUUiBSZXN1bHRzSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyICpOdW1iZXJPZk1hdGNoZWRGaWVsZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NNX0RBVEFfUFRSICpWYWx1ZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0NMX0NybEdldE5l
eHRGaWVsZFZhbHVlIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTTV9IQU5ETEUgUmVzdWx0c0hhbmRsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTTV9EQVRBX1BUUiAqVmFsdWUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DTF9D
cmxBYm9ydFF1ZXJ5IChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAg
ICAgICBDU1NNX0hBTkRMRSBSZXN1bHRzSGFuZGxlKTsKCkNTU01fUkVUVVJOCkNTU01fQ0xfQ3Js
R2V0QWxsRmllbGRzIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENTU01fREFUQSAqQ3JsLAogICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyICpOdW1iZXJPZkNybEZpZWxkcywKICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fRklF
TERfUFRSICpDcmxGaWVsZHMpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DTF9DcmxDYWNoZSAoQ1NTTV9D
TF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqQ3Js
LAogICAgICAgICAgICAgICAgICBDU1NNX0hBTkRMRV9QVFIgQ3JsSGFuZGxlKTsKCkNTU01fUkVU
VVJOCkNTU01fQ0xfSXNDZXJ0SW5DYWNoZWRDcmwgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNlcnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU01fSEFORExFIENybEhhbmRsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTTV9CT09MICpDZXJ0Rm91bmQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU01fREFUQV9QVFIgQ3JsUmVjb3JkSW5kZXgpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DTF9D
cmxHZXRGaXJzdENhY2hlZEZpZWxkVmFsdWUgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9IQU5ETEUgQ3JsSGFuZGxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpDcmxS
ZWNvcmRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENT
U01fT0lEICpDcmxGaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENT
U01fSEFORExFX1BUUiBSZXN1bHRzSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyICpOdW1iZXJPZk1hdGNoZWRGaWVsZHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSICpWYWx1ZSk7CgpDU1NNX1JFVFVSTgpD
U1NNX0NMX0NybEdldE5leHRDYWNoZWRGaWVsZFZhbHVlIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9IQU5ETEUgUmVzdWx0
c0hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BU
UiAqVmFsdWUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9DTF9DcmxHZXRBbGxDYWNoZWRSZWNvcmRGaWVs
ZHMgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTTV9IQU5ETEUgQ3JsSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpDcmxSZWNvcmRJbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiAqTnVtYmVyT2ZGaWVsZHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0ZJRUxEX1BUUiAqQ3JsRmllbGRzKTsK
CkNTU01fUkVUVVJOCkNTU01fQ0xfQ3JsQWJvcnRDYWNoZSAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5k
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9IQU5ETEUgQ3JsSGFuZGxlKTsKCkNTU01f
UkVUVVJOCkNTU01fQ0xfQ3JsRGVzY3JpYmVGb3JtYXQgKENTU01fQ0xfSEFORExFIENMSGFuZGxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzIgKk51bWJlck9mRmllbGRzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NNX09JRF9QVFIgKk9pZExpc3QpOwoKQ1NTTV9SRVRV
Uk4KQ1NTTV9DTF9QYXNzVGhyb3VnaCAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAg
ICAgICAgICAgICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICAgICAgICAgICAg
ICB1aW50MzIgUGFzc1Rocm91Z2hJZCwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
SW5wdXRQYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipPdXRwdXRQYXJhbXMpOwoK
CgoKQ1NTTV9SRVRVUk4KQ1NTTV9ETF9EYk9wZW4gKENTU01fRExfSEFORExFIERMSGFuZGxlLAog
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqRGJOYW1lLAogICAgICAgICAgICAgICAgY29uc3Qg
Q1NTTV9ORVRfQUREUkVTUyAqRGJMb2NhdGlvbiwKICAgICAgICAgICAgICAgIENTU01fREJfQUND
RVNTX1RZUEUgQWNjZXNzUmVxdWVzdCwKICAgICAgICAgICAgICAgIGNvbnN0IENTU01fQUNDRVNT
X0NSRURFTlRJQUxTICpBY2Nlc3NDcmVkLAogICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqT3Bl
blBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICBDU1NNX0RCX0hBTkRMRSAqRGJIYW5kbGUpOwoK
Q1NTTV9SRVRVUk4KQ1NTTV9ETF9EYkNsb3NlIChDU1NNX0RMX0RCX0hBTkRMRSBETERCSGFuZGxl
KTsKCkNTU01fUkVUVVJOCkNTU01fRExfRGJDcmVhdGUgKENTU01fRExfSEFORExFIERMSGFuZGxl
LAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpEYk5hbWUsCiAgICAgICAgICAgICAgICAg
IGNvbnN0IENTU01fTkVUX0FERFJFU1MgKkRiTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgIGNv
bnN0IENTU01fREJJTkZPICpEQkluZm8sCiAgICAgICAgICAgICAgICAgIENTU01fREJfQUNDRVNT
X1RZUEUgQWNjZXNzUmVxdWVzdCwKICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9SRVNPVVJD
RV9DT05UUk9MX0NPTlRFWFQgKkNyZWRBbmRBY2xFbnRyeSwKICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqT3BlblBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICAgIENTU01fREJfSEFORExF
ICpEYkhhbmRsZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0RMX0RiRGVsZXRlIChDU1NNX0RMX0hBTkRM
RSBETEhhbmRsZSwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqRGJOYW1lLAogICAgICAg
ICAgICAgICAgICBjb25zdCBDU1NNX05FVF9BRERSRVNTICpEYkxvY2F0aW9uLAogICAgICAgICAg
ICAgICAgICBjb25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFMUyAqQWNjZXNzQ3JlZCk7CgpDU1NN
X1JFVFVSTgpDU1NNX0RMX0NyZWF0ZVJlbGF0aW9uIChDU1NNX0RMX0RCX0hBTkRMRSBETERCSGFu
ZGxlLAogICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0RCX1JFQ09SRFRZUEUgUmVsYXRpb25J
RCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqUmVsYXRpb25OYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzIgTnVtYmVyT2ZBdHRyaWJ1dGVzLAogICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDU1NNX0RCX1NDSEVNQV9BVFRSSUJVVEVfSU5GTyAqcEF0dHJp
YnV0ZUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiBOdW1iZXJPZkluZGV4ZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREJfU0NIRU1BX0lOREVYX0lORk8g
KnBJbmRleEluZm8pOwoKQ1NTTV9SRVRVUk4KQ1NTTV9ETF9EZXN0cm95UmVsYXRpb24gKENTU01f
RExfREJfSEFORExFIERMREJIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0RC
X1JFQ09SRFRZUEUgUmVsYXRpb25JRCk7CgpDU1NNX1JFVFVSTgpDU1NNX0RMX0F1dGhlbnRpY2F0
ZSAoQ1NTTV9ETF9EQl9IQU5ETEUgRExEQkhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgIENT
U01fREJfQUNDRVNTX1RZUEUgQWNjZXNzUmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENTU01fQUNDRVNTX0NSRURFTlRJQUxTICpBY2Nlc3NDcmVkKTsKCkNTU01fUkVUVVJOCkNT
U01fRExfR2V0RGJBY2wgKENTU01fRExfREJfSEFORExFIERMREJIYW5kbGUsCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IENTU01fU1RSSU5HICpTZWxlY3Rpb25UYWcsCiAgICAgICAgICAgICAgICAg
IHVpbnQzMiAqTnVtYmVyT2ZBY2xJbmZvcywKICAgICAgICAgICAgICAgICAgQ1NTTV9BQ0xfRU5U
UllfSU5GT19QVFIgKkFjbEluZm9zKTsKCkNTU01fUkVUVVJOCkNTU01fRExfQ2hhbmdlRGJBY2wg
KENTU01fRExfREJfSEFORExFIERMREJIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENTU01fQUNDRVNTX0NSRURFTlRJQUxTICpBY2Nlc3NDcmVkLAogICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDU1NNX0FDTF9FRElUICpBY2xFZGl0KTsKCkNTU01fUkVUVVJOCkNTU01fRExfR2V0
RGJPd25lciAoQ1NTTV9ETF9EQl9IQU5ETEUgRExEQkhhbmRsZSwKICAgICAgICAgICAgICAgICAg
ICBDU1NNX0FDTF9PV05FUl9QUk9UT1RZUEVfUFRSIE93bmVyKTsKCkNTU01fUkVUVVJOCkNTU01f
RExfQ2hhbmdlRGJPd25lciAoQ1NTTV9ETF9EQl9IQU5ETEUgRExEQkhhbmRsZSwKICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFMUyAqQWNjZXNzQ3JlZCwK
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0FDTF9PV05FUl9QUk9UT1RZUEUgKk5l
d093bmVyKTsKCkNTU01fUkVUVVJOCkNTU01fRExfR2V0RGJOYW1lcyAoQ1NTTV9ETF9IQU5ETEUg
RExIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgQ1NTTV9OQU1FX0xJU1RfUFRSICpOYW1lTGlz
dCk7CgpDU1NNX1JFVFVSTgpDU1NNX0RMX0dldERiTmFtZUZyb21IYW5kbGUgKENTU01fRExfREJf
SEFORExFIERMREJIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKkRi
TmFtZSk7CgpDU1NNX1JFVFVSTgpDU1NNX0RMX0ZyZWVOYW1lTGlzdCAoQ1NTTV9ETF9IQU5ETEUg
RExIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICBDU1NNX05BTUVfTElTVF9QVFIgTmFtZUxp
c3QpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9ETF9EYXRhSW5zZXJ0IChDU1NNX0RMX0RCX0hBTkRMRSBE
TERCSGFuZGxlLAogICAgICAgICAgICAgICAgICAgIENTU01fREJfUkVDT1JEVFlQRSBSZWNvcmRU
eXBlLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREJfUkVDT1JEX0FUVFJJQlVURV9E
QVRBICpBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqRGF0
YSwKICAgICAgICAgICAgICAgICAgICBDU1NNX0RCX1VOSVFVRV9SRUNPUkRfUFRSICpVbmlxdWVJ
ZCk7CgpDU1NNX1JFVFVSTgpDU1NNX0RMX0RhdGFEZWxldGUgKENTU01fRExfREJfSEFORExFIERM
REJIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQl9VTklRVUVfUkVDT1JE
ICpVbmlxdWVSZWNvcmRJZGVudGlmaWVyKTsKCkNTU01fUkVUVVJOCkNTU01fRExfRGF0YU1vZGlm
eSAoQ1NTTV9ETF9EQl9IQU5ETEUgRExEQkhhbmRsZSwKICAgICAgICAgICAgICAgICAgICBDU1NN
X0RCX1JFQ09SRFRZUEUgUmVjb3JkVHlwZSwKICAgICAgICAgICAgICAgICAgICBDU1NNX0RCX1VO
SVFVRV9SRUNPUkRfUFRSIFVuaXF1ZVJlY29yZElkZW50aWZpZXIsCiAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ1NTTV9EQl9SRUNPUkRfQVRUUklCVVRFX0RBVEEgKkF0dHJpYnV0ZXNUb0JlTW9k
aWZpZWQsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEYXRhVG9CZU1vZGlm
aWVkLAogICAgICAgICAgICAgICAgICAgIENTU01fREJfTU9ESUZZX01PREUgTW9kaWZ5TW9kZSk7
CgpDU1NNX1JFVFVSTgpDU1NNX0RMX0RhdGFHZXRGaXJzdCAoQ1NTTV9ETF9EQl9IQU5ETEUgRExE
QkhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fUVVFUlkgKlF1ZXJ5LAog
ICAgICAgICAgICAgICAgICAgICAgQ1NTTV9IQU5ETEVfUFRSIFJlc3VsdHNIYW5kbGUsCiAgICAg
ICAgICAgICAgICAgICAgICBDU1NNX0RCX1JFQ09SRF9BVFRSSUJVVEVfREFUQV9QVFIgQXR0cmli
dXRlcywKICAgICAgICAgICAgICAgICAgICAgIENTU01fREFUQV9QVFIgRGF0YSwKICAgICAgICAg
ICAgICAgICAgICAgIENTU01fREJfVU5JUVVFX1JFQ09SRF9QVFIgKlVuaXF1ZUlkKTsKCkNTU01f
UkVUVVJOCkNTU01fRExfRGF0YUdldE5leHQgKENTU01fRExfREJfSEFORExFIERMREJIYW5kbGUs
CiAgICAgICAgICAgICAgICAgICAgIENTU01fSEFORExFIFJlc3VsdHNIYW5kbGUsCiAgICAgICAg
ICAgICAgICAgICAgIENTU01fREJfUkVDT1JEX0FUVFJJQlVURV9EQVRBX1BUUiBBdHRyaWJ1dGVz
LAogICAgICAgICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSIERhdGEsCiAgICAgICAgICAgICAg
ICAgICAgIENTU01fREJfVU5JUVVFX1JFQ09SRF9QVFIgKlVuaXF1ZUlkKTsKCkNTU01fUkVUVVJO
CkNTU01fRExfRGF0YUFib3J0UXVlcnkgKENTU01fRExfREJfSEFORExFIERMREJIYW5kbGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgIENTU01fSEFORExFIFJlc3VsdHNIYW5kbGUpOwoKQ1NTTV9S
RVRVUk4KQ1NTTV9ETF9EYXRhR2V0RnJvbVVuaXF1ZVJlY29yZElkIChDU1NNX0RMX0RCX0hBTkRM
RSBETERCSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RC
X1VOSVFVRV9SRUNPUkQgKlVuaXF1ZVJlY29yZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTTV9EQl9SRUNPUkRfQVRUUklCVVRFX0RBVEFfUFRSIEF0dHJpYnV0ZXMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU01fREFUQV9QVFIgRGF0YSk7CgpDU1NNX1JFVFVSTgpD
U1NNX0RMX0ZyZWVVbmlxdWVSZWNvcmQgKENTU01fRExfREJfSEFORExFIERMREJIYW5kbGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9EQl9VTklRVUVfUkVDT1JEX1BUUiBVbmlxdWVS
ZWNvcmQpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9ETF9QYXNzVGhyb3VnaCAoQ1NTTV9ETF9EQl9IQU5E
TEUgRExEQkhhbmRsZSwKICAgICAgICAgICAgICAgIHVpbnQzMiBQYXNzVGhyb3VnaElkLAogICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqSW5wdXRQYXJhbXMsCiAgICAgICAgICAgICAgICB2b2lk
ICoqT3V0cHV0UGFyYW1zKTsKCgp9CiMgMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Nl
Y3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL2Nzc20uaCIgMiAzCiMgMjggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJz
L2Nzc21hY2kuaCIgMSAzCiMgMjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5
LmZyYW1ld29yay9IZWFkZXJzL2Nzc21hY2kuaCIgMwojZGVmaW5lIF9DU1NNQUNJX0hfIDEKCgoK
CmV4dGVybiAiQyIgewoKCnR5cGVkZWYgc3RydWN0IGNzc21fc3BpX2FjX2Z1bmNzIHsKICAgIENT
U01fUkVUVVJOICggKkF1dGhDb21wdXRlKQogICAgICAgIChDU1NNX0FDX0hBTkRMRSBBQ0hhbmRs
ZSwKICAgICAgICAgY29uc3QgQ1NTTV9UVVBMRUdST1VQICpCYXNlQXV0aG9yaXphdGlvbnMsCiAg
ICAgICAgIGNvbnN0IENTU01fVFVQTEVHUk9VUCAqQ3JlZGVudGlhbHMsCiAgICAgICAgIHVpbnQz
MiBOdW1iZXJPZlJlcXVlc3RvcnMsCiAgICAgICAgIGNvbnN0IENTU01fTElTVCAqUmVxdWVzdG9y
cywKICAgICAgICAgY29uc3QgQ1NTTV9MSVNUICpSZXF1ZXN0ZWRBdXRob3JpemF0aW9uUGVyaW9k
LAogICAgICAgICBjb25zdCBDU1NNX0xJU1QgKlJlcXVlc3RlZEF1dGhvcml6YXRpb24sCiAgICAg
ICAgIENTU01fVFVQTEVHUk9VUF9QVFIgQXV0aG9yaXphdGlvblJlc3VsdCk7CiAgICBDU1NNX1JF
VFVSTiAoICpQYXNzVGhyb3VnaCkKICAgICAgICAoQ1NTTV9BQ19IQU5ETEUgQUNIYW5kbGUsCiAg
ICAgICAgIENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAgICAgICBDU1NNX0NMX0hBTkRMRSBD
TEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0
IENTU01fRExfREJfTElTVCAqREJMaXN0LAogICAgICAgICB1aW50MzIgUGFzc1Rocm91Z2hJZCwK
ICAgICAgICAgY29uc3Qgdm9pZCAqSW5wdXRQYXJhbXMsCiAgICAgICAgIHZvaWQgKipPdXRwdXRQ
YXJhbXMpOwp9IENTU01fU1BJX0FDX0ZVTkNTLCAqQ1NTTV9TUElfQUNfRlVOQ1NfUFRSOwoKCn0K
IyAyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRl
cnMvU2VjdXJpdHkuaCIgMiAzCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL2Nzc21jbGkuaCIgMSAzCiMgMjcgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL2Nzc21jbGkuaCIgMwojZGVm
aW5lIF9DU1NNQ0xJX0hfIDEKCgoKCmV4dGVybiAiQyIgewoKCnR5cGVkZWYgc3RydWN0IGNzc21f
c3BpX2NsX2Z1bmNzIHsKICAgIENTU01fUkVUVVJOICggKkNlcnRDcmVhdGVUZW1wbGF0ZSkKICAg
ICAgICAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgIHVpbnQzMiBOdW1iZXJPZkZp
ZWxkcywKICAgICAgICAgY29uc3QgQ1NTTV9GSUVMRCAqQ2VydEZpZWxkcywKICAgICAgICAgQ1NT
TV9EQVRBX1BUUiBDZXJ0VGVtcGxhdGUpOwogICAgQ1NTTV9SRVRVUk4gKCAqQ2VydEdldEFsbFRl
bXBsYXRlRmllbGRzKQogICAgICAgIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAg
Y29uc3QgQ1NTTV9EQVRBICpDZXJ0VGVtcGxhdGUsCiAgICAgICAgIHVpbnQzMiAqTnVtYmVyT2ZG
aWVsZHMsCiAgICAgICAgIENTU01fRklFTERfUFRSICpDZXJ0RmllbGRzKTsKICAgIENTU01fUkVU
VVJOICggKkNlcnRTaWduKQogICAgICAgIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAg
ICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqQ2Vy
dFRlbXBsYXRlLAogICAgICAgICBjb25zdCBDU1NNX0ZJRUxEICpTaWduU2NvcGUsCiAgICAgICAg
IHVpbnQzMiBTY29wZVNpemUsCiAgICAgICAgIENTU01fREFUQV9QVFIgU2lnbmVkQ2VydCk7CiAg
ICBDU1NNX1JFVFVSTiAoICpDZXJ0VmVyaWZ5KQogICAgICAgIChDU1NNX0NMX0hBTkRMRSBDTEhh
bmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENT
U01fREFUQSAqQ2VydFRvQmVWZXJpZmllZCwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpTaWdu
ZXJDZXJ0LAogICAgICAgICBjb25zdCBDU1NNX0ZJRUxEICpWZXJpZnlTY29wZSwKICAgICAgICAg
dWludDMyIFNjb3BlU2l6ZSk7CiAgICBDU1NNX1JFVFVSTiAoICpDZXJ0VmVyaWZ5V2l0aEtleSkK
ICAgICAgICAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgIENTU01fQ0NfSEFORExF
IENDSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNlcnRUb0JlVmVyaWZpZWQpOwog
ICAgQ1NTTV9SRVRVUk4gKCAqQ2VydEdldEZpcnN0RmllbGRWYWx1ZSkKICAgICAgICAoQ1NTTV9D
TF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqQ2VydCwKICAgICAg
ICAgY29uc3QgQ1NTTV9PSUQgKkNlcnRGaWVsZCwKICAgICAgICAgQ1NTTV9IQU5ETEVfUFRSIFJl
c3VsdHNIYW5kbGUsCiAgICAgICAgIHVpbnQzMiAqTnVtYmVyT2ZNYXRjaGVkRmllbGRzLAogICAg
ICAgICBDU1NNX0RBVEFfUFRSICpWYWx1ZSk7CiAgICBDU1NNX1JFVFVSTiAoICpDZXJ0R2V0TmV4
dEZpZWxkVmFsdWUpCiAgICAgICAgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICBD
U1NNX0hBTkRMRSBSZXN1bHRzSGFuZGxlLAogICAgICAgICBDU1NNX0RBVEFfUFRSICpWYWx1ZSk7
CiAgICBDU1NNX1JFVFVSTiAoICpDZXJ0QWJvcnRRdWVyeSkKICAgICAgICAoQ1NTTV9DTF9IQU5E
TEUgQ0xIYW5kbGUsCiAgICAgICAgIENTU01fSEFORExFIFJlc3VsdHNIYW5kbGUpOwogICAgQ1NT
TV9SRVRVUk4gKCAqQ2VydEdldEtleUluZm8pCiAgICAgICAgKENTU01fQ0xfSEFORExFIENMSGFu
ZGxlLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNlcnQsCiAgICAgICAgIENTU01fS0VZX1BU
UiAqS2V5KTsKICAgIENTU01fUkVUVVJOICggKkNlcnRHZXRBbGxGaWVsZHMpCiAgICAgICAgKENT
U01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNlcnQsCiAg
ICAgICAgIHVpbnQzMiAqTnVtYmVyT2ZGaWVsZHMsCiAgICAgICAgIENTU01fRklFTERfUFRSICpD
ZXJ0RmllbGRzKTsKIENTU01fUkVUVVJOICggKkZyZWVGaWVsZHMpCiAgKENTU01fQ0xfSEFORExF
IENMSGFuZGxlLAogICB1aW50MzIgTnVtYmVyT2ZGaWVsZHMsCiAgIENTU01fRklFTERfUFRSICpG
aWVsZEFycmF5KTsKICAgIENTU01fUkVUVVJOICggKkZyZWVGaWVsZFZhbHVlKQogICAgICAgIChD
U1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9PSUQgKkNlcnRPckNy
bE9pZCwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBWYWx1ZSk7CiAgICBDU1NNX1JFVFVSTiAoICpD
ZXJ0Q2FjaGUpCiAgICAgICAgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICBjb25z
dCBDU1NNX0RBVEEgKkNlcnQsCiAgICAgICAgIENTU01fSEFORExFX1BUUiBDZXJ0SGFuZGxlKTsK
ICAgIENTU01fUkVUVVJOICggKkNlcnRHZXRGaXJzdENhY2hlZEZpZWxkVmFsdWUpCiAgICAgICAg
KENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICBDU1NNX0hBTkRMRSBDZXJ0SGFuZGxl
LAogICAgICAgICBjb25zdCBDU1NNX09JRCAqQ2VydEZpZWxkLAogICAgICAgICBDU1NNX0hBTkRM
RV9QVFIgUmVzdWx0c0hhbmRsZSwKICAgICAgICAgdWludDMyICpOdW1iZXJPZk1hdGNoZWRGaWVs
ZHMsCiAgICAgICAgIENTU01fREFUQV9QVFIgKlZhbHVlKTsKICAgIENTU01fUkVUVVJOICggKkNl
cnRHZXROZXh0Q2FjaGVkRmllbGRWYWx1ZSkKICAgICAgICAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5k
bGUsCiAgICAgICAgIENTU01fSEFORExFIFJlc3VsdHNIYW5kbGUsCiAgICAgICAgIENTU01fREFU
QV9QVFIgKlZhbHVlKTsKICAgIENTU01fUkVUVVJOICggKkNlcnRBYm9ydENhY2hlKQogICAgICAg
IChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgQ1NTTV9IQU5ETEUgQ2VydEhhbmRs
ZSk7CiAgICBDU1NNX1JFVFVSTiAoICpDZXJ0R3JvdXBUb1NpZ25lZEJ1bmRsZSkKICAgICAgICAo
Q1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxl
LAogICAgICAgICBjb25zdCBDU1NNX0NFUlRHUk9VUCAqQ2VydEdyb3VwVG9CdW5kbGUsCiAgICAg
ICAgIGNvbnN0IENTU01fQ0VSVF9CVU5ETEVfSEVBREVSICpCdW5kbGVJbmZvLAogICAgICAgICBD
U1NNX0RBVEFfUFRSIFNpZ25lZEJ1bmRsZSk7CiAgICBDU1NNX1JFVFVSTiAoICpDZXJ0R3JvdXBG
cm9tVmVyaWZpZWRCdW5kbGUpCiAgICAgICAgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAg
ICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9DRVJUX0JV
TkRMRSAqQ2VydEJ1bmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpTaWduZXJDZXJ0LAog
ICAgICAgICBDU1NNX0NFUlRHUk9VUF9QVFIgKkNlcnRHcm91cCk7CiAgICBDU1NNX1JFVFVSTiAo
ICpDZXJ0RGVzY3JpYmVGb3JtYXQpCiAgICAgICAgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAog
ICAgICAgICB1aW50MzIgKk51bWJlck9mRmllbGRzLAogICAgICAgICBDU1NNX09JRF9QVFIgKk9p
ZExpc3QpOwogICAgQ1NTTV9SRVRVUk4gKCAqQ3JsQ3JlYXRlVGVtcGxhdGUpCiAgICAgICAgKENT
U01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICB1aW50MzIgTnVtYmVyT2ZGaWVsZHMsCiAg
ICAgICAgIGNvbnN0IENTU01fRklFTEQgKkNybFRlbXBsYXRlLAogICAgICAgICBDU1NNX0RBVEFf
UFRSIE5ld0NybCk7CiAgICBDU1NNX1JFVFVSTiAoICpDcmxTZXRGaWVsZHMpCiAgICAgICAgKENT
U01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICB1aW50MzIgTnVtYmVyT2ZGaWVsZHMsCiAg
ICAgICAgIGNvbnN0IENTU01fRklFTEQgKkNybFRlbXBsYXRlLAogICAgICAgICBjb25zdCBDU1NN
X0RBVEEgKk9sZENybCwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBNb2RpZmllZENybCk7CiAgICBD
U1NNX1JFVFVSTiAoICpDcmxBZGRDZXJ0KQogICAgICAgIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRs
ZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01f
REFUQSAqQ2VydCwKICAgICAgICAgdWludDMyIE51bWJlck9mRmllbGRzLAogICAgICAgICBjb25z
dCBDU1NNX0ZJRUxEICpDcmxFbnRyeUZpZWxkcywKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpP
bGRDcmwsCiAgICAgICAgIENTU01fREFUQV9QVFIgTmV3Q3JsKTsKICAgIENTU01fUkVUVVJOICgg
KkNybFJlbW92ZUNlcnQpCiAgICAgICAgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAg
ICBjb25zdCBDU1NNX0RBVEEgKkNlcnQsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqT2xkQ3Js
LAogICAgICAgICBDU1NNX0RBVEFfUFRSIE5ld0NybCk7CiAgICBDU1NNX1JFVFVSTiAoICpDcmxT
aWduKQogICAgICAgIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19I
QU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqVW5zaWduZWRDcmwsCiAg
ICAgICAgIGNvbnN0IENTU01fRklFTEQgKlNpZ25TY29wZSwKICAgICAgICAgdWludDMyIFNjb3Bl
U2l6ZSwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBTaWduZWRDcmwpOwogICAgQ1NTTV9SRVRVUk4g
KCAqQ3JsVmVyaWZ5KQogICAgICAgIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAg
Q1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqQ3JsVG9C
ZVZlcmlmaWVkLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKlNpZ25lckNlcnQsCiAgICAgICAg
IGNvbnN0IENTU01fRklFTEQgKlZlcmlmeVNjb3BlLAogICAgICAgICB1aW50MzIgU2NvcGVTaXpl
KTsKICAgIENTU01fUkVUVVJOICggKkNybFZlcmlmeVdpdGhLZXkpCiAgICAgICAgKENTU01fQ0xf
SEFORExFIENMSGFuZGxlLAogICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAg
ICAgY29uc3QgQ1NTTV9EQVRBICpDcmxUb0JlVmVyaWZpZWQpOwogICAgQ1NTTV9SRVRVUk4gKCAq
SXNDZXJ0SW5DcmwpCiAgICAgICAgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICBj
b25zdCBDU1NNX0RBVEEgKkNlcnQsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqQ3JsLAogICAg
ICAgICBDU1NNX0JPT0wgKkNlcnRGb3VuZCk7CiAgICBDU1NNX1JFVFVSTiAoICpDcmxHZXRGaXJz
dEZpZWxkVmFsdWUpCiAgICAgICAgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICBj
b25zdCBDU1NNX0RBVEEgKkNybCwKICAgICAgICAgY29uc3QgQ1NTTV9PSUQgKkNybEZpZWxkLAog
ICAgICAgICBDU1NNX0hBTkRMRV9QVFIgUmVzdWx0c0hhbmRsZSwKICAgICAgICAgdWludDMyICpO
dW1iZXJPZk1hdGNoZWRGaWVsZHMsCiAgICAgICAgIENTU01fREFUQV9QVFIgKlZhbHVlKTsKICAg
IENTU01fUkVUVVJOICggKkNybEdldE5leHRGaWVsZFZhbHVlKQogICAgICAgIChDU1NNX0NMX0hB
TkRMRSBDTEhhbmRsZSwKICAgICAgICAgQ1NTTV9IQU5ETEUgUmVzdWx0c0hhbmRsZSwKICAgICAg
ICAgQ1NTTV9EQVRBX1BUUiAqVmFsdWUpOwogICAgQ1NTTV9SRVRVUk4gKCAqQ3JsQWJvcnRRdWVy
eSkKICAgICAgICAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgIENTU01fSEFORExF
IFJlc3VsdHNIYW5kbGUpOwogICAgQ1NTTV9SRVRVUk4gKCAqQ3JsR2V0QWxsRmllbGRzKQogICAg
ICAgIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpD
cmwsCiAgICAgICAgIHVpbnQzMiAqTnVtYmVyT2ZDcmxGaWVsZHMsCiAgICAgICAgIENTU01fRklF
TERfUFRSICpDcmxGaWVsZHMpOwogICAgQ1NTTV9SRVRVUk4gKCAqQ3JsQ2FjaGUpCiAgICAgICAg
KENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNybCwK
ICAgICAgICAgQ1NTTV9IQU5ETEVfUFRSIENybEhhbmRsZSk7CiAgICBDU1NNX1JFVFVSTiAoICpJ
c0NlcnRJbkNhY2hlZENybCkKICAgICAgICAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAg
ICAgIGNvbnN0IENTU01fREFUQSAqQ2VydCwKICAgICAgICAgQ1NTTV9IQU5ETEUgQ3JsSGFuZGxl
LAogICAgICAgICBDU1NNX0JPT0wgKkNlcnRGb3VuZCwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBD
cmxSZWNvcmRJbmRleCk7CiAgICBDU1NNX1JFVFVSTiAoICpDcmxHZXRGaXJzdENhY2hlZEZpZWxk
VmFsdWUpCiAgICAgICAgKENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICBDU1NNX0hB
TkRMRSBDcmxIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqQ3JsUmVjb3JkSW5kZXgs
CiAgICAgICAgIGNvbnN0IENTU01fT0lEICpDcmxGaWVsZCwKICAgICAgICAgQ1NTTV9IQU5ETEVf
UFRSIFJlc3VsdHNIYW5kbGUsCiAgICAgICAgIHVpbnQzMiAqTnVtYmVyT2ZNYXRjaGVkRmllbGRz
LAogICAgICAgICBDU1NNX0RBVEFfUFRSICpWYWx1ZSk7CiAgICBDU1NNX1JFVFVSTiAoICpDcmxH
ZXROZXh0Q2FjaGVkRmllbGRWYWx1ZSkKICAgICAgICAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUs
CiAgICAgICAgIENTU01fSEFORExFIFJlc3VsdHNIYW5kbGUsCiAgICAgICAgIENTU01fREFUQV9Q
VFIgKlZhbHVlKTsKICAgIENTU01fUkVUVVJOICggKkNybEdldEFsbENhY2hlZFJlY29yZEZpZWxk
cykKICAgICAgICAoQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgIENTU01fSEFORExF
IENybEhhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpDcmxSZWNvcmRJbmRleCwKICAg
ICAgICAgdWludDMyICpOdW1iZXJPZkZpZWxkcywKICAgICAgICAgQ1NTTV9GSUVMRF9QVFIgKkNy
bEZpZWxkcyk7CiAgICBDU1NNX1JFVFVSTiAoICpDcmxBYm9ydENhY2hlKQogICAgICAgIChDU1NN
X0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgQ1NTTV9IQU5ETEUgQ3JsSGFuZGxlKTsKICAg
IENTU01fUkVUVVJOICggKkNybERlc2NyaWJlRm9ybWF0KQogICAgICAgIChDU1NNX0NMX0hBTkRM
RSBDTEhhbmRsZSwKICAgICAgICAgdWludDMyICpOdW1iZXJPZkZpZWxkcywKICAgICAgICAgQ1NT
TV9PSURfUFRSICpPaWRMaXN0KTsKICAgIENTU01fUkVUVVJOICggKlBhc3NUaHJvdWdoKQogICAg
ICAgIChDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NI
YW5kbGUsCiAgICAgICAgIHVpbnQzMiBQYXNzVGhyb3VnaElkLAogICAgICAgICBjb25zdCB2b2lk
ICpJbnB1dFBhcmFtcywKICAgICAgICAgdm9pZCAqKk91dHB1dFBhcmFtcyk7Cn0gQ1NTTV9TUElf
Q0xfRlVOQ1MsICpDU1NNX1NQSV9DTF9GVU5DU19QVFI7CgoKfQojIDMxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cml0eS5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVy
cy9jc3NtY3NwaS5oIiAxIDMKIyAyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJp
dHkuZnJhbWV3b3JrL0hlYWRlcnMvY3NzbWNzcGkuaCIgMwojZGVmaW5lIF9DU1NNQ1NQSV9IXyAx
CgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFk
ZXJzL2Nzc21zcGkuaCIgMSAzCiMgMjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL2Nzc21zcGkuaCIgMwojZGVmaW5lIF9DU1NNU1BJX0hfIDEK
CgoKCmV4dGVybiAiQyIgewoKCnR5cGVkZWYgQ1NTTV9SRVRVUk4gKCAqQ1NTTV9TUElfTW9kdWxl
RXZlbnRIYW5kbGVyKQogICAgKGNvbnN0IENTU01fR1VJRCAqTW9kdWxlR3VpZCwKICAgICB2b2lk
ICpDc3NtTm90aWZ5Q2FsbGJhY2tDdHgsCiAgICAgdWludDMyIFN1YnNlcnZpY2VJZCwKICAgICBD
U1NNX1NFUlZJQ0VfVFlQRSBTZXJ2aWNlVHlwZSwKICAgICBDU1NNX01PRFVMRV9FVkVOVCBFdmVu
dFR5cGUpOwoKdHlwZWRlZiB1aW50MzIgQ1NTTV9DT05URVhUX0VWRU5UOwplbnVtIHsKICAgIENT
U01fQ09OVEVYVF9FVkVOVF9DUkVBVEUgPSAxLAogICAgQ1NTTV9DT05URVhUX0VWRU5UX0RFTEVU
RSA9IDIsCiAgICBDU1NNX0NPTlRFWFRfRVZFTlRfVVBEQVRFID0gMwp9OwoKdHlwZWRlZiBzdHJ1
Y3QgY3NzbV9tb2R1bGVfZnVuY3MgewogICAgQ1NTTV9TRVJWSUNFX1RZUEUgU2VydmljZVR5cGU7
CiAgICB1aW50MzIgTnVtYmVyT2ZTZXJ2aWNlRnVuY3M7CiAgICBjb25zdCBDU1NNX1BST0NfQURE
UiAqU2VydmljZUZ1bmNzOwp9IENTU01fTU9EVUxFX0ZVTkNTLCAqQ1NTTV9NT0RVTEVfRlVOQ1Nf
UFRSOwoKdHlwZWRlZiB2b2lkICooICpDU1NNX1VQQ0FMTFNfTUFMTE9DKQogICAgKENTU01fSEFO
RExFIEFkZEluSGFuZGxlLAogICAgIHVpbnQzMiBzaXplKTsKCnR5cGVkZWYgdm9pZCAoICpDU1NN
X1VQQ0FMTFNfRlJFRSkKICAgIChDU1NNX0hBTkRMRSBBZGRJbkhhbmRsZSwKICAgICB2b2lkICpt
ZW1ibG9jayk7Cgp0eXBlZGVmIHZvaWQgKiggKkNTU01fVVBDQUxMU19SRUFMTE9DKQogICAgKENT
U01fSEFORExFIEFkZEluSGFuZGxlLAogICAgIHZvaWQgKm1lbWJsb2NrLAogICAgIHVpbnQzMiBz
aXplKTsKCnR5cGVkZWYgdm9pZCAqKCAqQ1NTTV9VUENBTExTX0NBTExPQykKICAgIChDU1NNX0hB
TkRMRSBBZGRJbkhhbmRsZSwKICAgICB1aW50MzIgbnVtLAogICAgIHVpbnQzMiBzaXplKTsKCnR5
cGVkZWYgc3RydWN0IGNzc21fdXBjYWxscyB7CiAgICBDU1NNX1VQQ0FMTFNfTUFMTE9DIG1hbGxv
Y19mdW5jOwogICAgQ1NTTV9VUENBTExTX0ZSRUUgZnJlZV9mdW5jOwogICAgQ1NTTV9VUENBTExT
X1JFQUxMT0MgcmVhbGxvY19mdW5jOwogICAgQ1NTTV9VUENBTExTX0NBTExPQyBjYWxsb2NfZnVu
YzsKICAgIENTU01fUkVUVVJOICggKkNjVG9IYW5kbGVfZnVuYykKICAgICAgICAoQ1NTTV9DQ19I
QU5ETEUgQ2MsCiAgICAgICAgIENTU01fTU9EVUxFX0hBTkRMRV9QVFIgTW9kdWxlSGFuZGxlKTsK
ICAgIENTU01fUkVUVVJOICggKkdldE1vZHVsZUluZm9fZnVuYykKICAgICAgICAoQ1NTTV9NT0RV
TEVfSEFORExFIE1vZHVsZSwKICAgICAgICAgQ1NTTV9HVUlEX1BUUiBHdWlkLAogICAgICAgICBD
U1NNX1ZFUlNJT05fUFRSIFZlcnNpb24sCiAgICAgICAgIHVpbnQzMiAqU3ViU2VydmljZUlkLAog
ICAgICAgICBDU1NNX1NFUlZJQ0VfVFlQRSAqU3ViU2VydmljZVR5cGUsCiAgICAgICAgIENTU01f
QVRUQUNIX0ZMQUdTICpBdHRhY2hGbGFncywKICAgICAgICAgQ1NTTV9LRVlfSElFUkFSQ0hZICpL
ZXlIaWVyYXJjaHksCiAgICAgICAgIENTU01fQVBJX01FTU9SWV9GVU5DU19QVFIgQXR0YWNoZWRN
ZW1GdW5jcywKICAgICAgICAgQ1NTTV9GVU5DX05BTUVfQUREUl9QVFIgRnVuY3Rpb25UYWJsZSwK
ICAgICAgICAgdWludDMyIE51bUZ1bmN0aW9ucyk7Cn0gQ1NTTV9VUENBTExTLCAqQ1NTTV9VUENB
TExTX1BUUjsKCkNTU01fUkVUVVJOCkNTU01fU1BJX01vZHVsZUxvYWQgKGNvbnN0IENTU01fR1VJ
RCAqQ3NzbUd1aWQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fR1VJRCAqTW9kdWxl
R3VpZCwKICAgICAgICAgICAgICAgICAgICAgQ1NTTV9TUElfTW9kdWxlRXZlbnRIYW5kbGVyIENz
c21Ob3RpZnlDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgdm9pZCAqQ3NzbU5vdGlmeUNh
bGxiYWNrQ3R4KTsKCkNTU01fUkVUVVJOCkNTU01fU1BJX01vZHVsZVVubG9hZCAoY29uc3QgQ1NT
TV9HVUlEICpDc3NtR3VpZCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0dVSUQg
Kk1vZHVsZUd1aWQsCiAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9TUElfTW9kdWxlRXZlbnRI
YW5kbGVyIENzc21Ob3RpZnlDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpD
c3NtTm90aWZ5Q2FsbGJhY2tDdHgpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9TUElfTW9kdWxlQXR0YWNo
IChjb25zdCBDU1NNX0dVSUQgKk1vZHVsZUd1aWQsCiAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQ1NTTV9WRVJTSU9OICpWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiBT
dWJzZXJ2aWNlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9TRVJWSUNFX1RZUEUgU3Vi
U2VydmljZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9BVFRBQ0hfRkxBR1MgQXR0
YWNoRmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9NT0RVTEVfSEFORExFIE1vZHVs
ZUhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0tFWV9ISUVSQVJDSFkgS2V5SGll
cmFyY2h5LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fR1VJRCAqQ3NzbUd1aWQs
CiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9HVUlEICpNb2R1bGVNYW5hZ2VyR3Vp
ZCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0dVSUQgKkNhbGxlckd1aWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9VUENBTExTICpVcGNhbGxzLAogICAgICAg
ICAgICAgICAgICAgICAgIENTU01fTU9EVUxFX0ZVTkNTX1BUUiAqRnVuY1RibCk7CgpDU1NNX1JF
VFVSTgpDU1NNX1NQSV9Nb2R1bGVEZXRhY2ggKENTU01fTU9EVUxFX0hBTkRMRSBNb2R1bGVIYW5k
bGUpOwoKCgp9CiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1l
d29yay9IZWFkZXJzL2Nzc21jc3BpLmgiIDIgMwoKCmV4dGVybiAiQyIgewoKCnR5cGVkZWYgc3Ry
dWN0IGNzc21fc3BpX2NzcF9mdW5jcyB7CiAgICBDU1NNX1JFVFVSTiAoICpFdmVudE5vdGlmeSkK
ICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DT05URVhU
X0VWRU5UIEV2ZW50LAogICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAg
Y29uc3QgQ1NTTV9DT05URVhUICpDb250ZXh0KTsKICAgIENTU01fUkVUVVJOICggKlF1ZXJ5U2l6
ZSkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19I
QU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ09OVEVYVCAqQ29udGV4dCwKICAg
ICAgICAgQ1NTTV9CT09MIEVuY3J5cHQsCiAgICAgICAgIHVpbnQzMiBRdWVyeVNpemVDb3VudCwK
ICAgICAgICAgQ1NTTV9RVUVSWV9TSVpFX0RBVEFfUFRSIERhdGFCbG9jayk7CiAgICBDU1NNX1JF
VFVSTiAoICpTaWduRGF0YSkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAg
ICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ09OVEVY
VCAqQ29udGV4dCwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEYXRhQnVmcywKICAgICAgICAg
dWludDMyIERhdGFCdWZDb3VudCwKICAgICAgICAgQ1NTTV9BTEdPUklUSE1TIERpZ2VzdEFsZ29y
aXRobSwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBTaWduYXR1cmUpOwogICAgQ1NTTV9SRVRVUk4g
KCAqU2lnbkRhdGFJbml0KQogICAgICAgIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAg
ICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9DT05URVhU
ICpDb250ZXh0KTsKICAgIENTU01fUkVUVVJOICggKlNpZ25EYXRhVXBkYXRlKQogICAgICAgIChD
U1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRs
ZSwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEYXRhQnVmcywKICAgICAgICAgdWludDMyIERh
dGFCdWZDb3VudCk7CiAgICBDU1NNX1JFVFVSTiAoICpTaWduRGF0YUZpbmFsKQogICAgICAgIChD
U1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRs
ZSwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBTaWduYXR1cmUpOwogICAgQ1NTTV9SRVRVUk4gKCAq
VmVyaWZ5RGF0YSkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAg
Q1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ09OVEVYVCAqQ29u
dGV4dCwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEYXRhQnVmcywKICAgICAgICAgdWludDMy
IERhdGFCdWZDb3VudCwKICAgICAgICAgQ1NTTV9BTEdPUklUSE1TIERpZ2VzdEFsZ29yaXRobSwK
ICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpTaWduYXR1cmUpOwogICAgQ1NTTV9SRVRVUk4gKCAq
VmVyaWZ5RGF0YUluaXQpCiAgICAgICAgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAg
ICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0NPTlRFWFQg
KkNvbnRleHQpOwogICAgQ1NTTV9SRVRVUk4gKCAqVmVyaWZ5RGF0YVVwZGF0ZSkKICAgICAgICAo
Q1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5k
bGUsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqRGF0YUJ1ZnMsCiAgICAgICAgIHVpbnQzMiBE
YXRhQnVmQ291bnQpOwogICAgQ1NTTV9SRVRVUk4gKCAqVmVyaWZ5RGF0YUZpbmFsKQogICAgICAg
IChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hh
bmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpTaWduYXR1cmUpOwogICAgQ1NTTV9SRVRV
Uk4gKCAqRGlnZXN0RGF0YSkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAg
ICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ09OVEVY
VCAqQ29udGV4dCwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEYXRhQnVmcywKICAgICAgICAg
dWludDMyIERhdGFCdWZDb3VudCwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBEaWdlc3QpOwogICAg
Q1NTTV9SRVRVUk4gKCAqRGlnZXN0RGF0YUluaXQpCiAgICAgICAgKENTU01fQ1NQX0hBTkRMRSBD
U1BIYW5kbGUsCiAgICAgICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICBjb25z
dCBDU1NNX0NPTlRFWFQgKkNvbnRleHQpOwogICAgQ1NTTV9SRVRVUk4gKCAqRGlnZXN0RGF0YVVw
ZGF0ZSkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9D
Q19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqRGF0YUJ1ZnMsCiAg
ICAgICAgIHVpbnQzMiBEYXRhQnVmQ291bnQpOwogICAgQ1NTTV9SRVRVUk4gKCAqRGlnZXN0RGF0
YUNsb25lKQogICAgICAgIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBDU1NN
X0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ2xvbmVkQ0NIYW5k
bGUpOwogICAgQ1NTTV9SRVRVUk4gKCAqRGlnZXN0RGF0YUZpbmFsKQogICAgICAgIChDU1NNX0NT
UF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAg
ICAgICAgQ1NTTV9EQVRBX1BUUiBEaWdlc3QpOwogICAgQ1NTTV9SRVRVUk4gKCAqR2VuZXJhdGVN
YWMpCiAgICAgICAgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIENTU01fQ0Nf
SEFORExFIENDSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0NPTlRFWFQgKkNvbnRleHQsCiAg
ICAgICAgIGNvbnN0IENTU01fREFUQSAqRGF0YUJ1ZnMsCiAgICAgICAgIHVpbnQzMiBEYXRhQnVm
Q291bnQsCiAgICAgICAgIENTU01fREFUQV9QVFIgTWFjKTsKICAgIENTU01fUkVUVVJOICggKkdl
bmVyYXRlTWFjSW5pdCkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAg
ICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ09OVEVYVCAq
Q29udGV4dCk7CiAgICBDU1NNX1JFVFVSTiAoICpHZW5lcmF0ZU1hY1VwZGF0ZSkKICAgICAgICAo
Q1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5k
bGUsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqRGF0YUJ1ZnMsCiAgICAgICAgIHVpbnQzMiBE
YXRhQnVmQ291bnQpOwogICAgQ1NTTV9SRVRVUk4gKCAqR2VuZXJhdGVNYWNGaW5hbCkKICAgICAg
ICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NI
YW5kbGUsCiAgICAgICAgIENTU01fREFUQV9QVFIgTWFjKTsKICAgIENTU01fUkVUVVJOICggKlZl
cmlmeU1hYykKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgQ1NT
TV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ09OVEVYVCAqQ29udGV4
dCwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEYXRhQnVmcywKICAgICAgICAgdWludDMyIERh
dGFCdWZDb3VudCwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpNYWMpOwogICAgQ1NTTV9SRVRV
Uk4gKCAqVmVyaWZ5TWFjSW5pdCkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwK
ICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ09O
VEVYVCAqQ29udGV4dCk7CiAgICBDU1NNX1JFVFVSTiAoICpWZXJpZnlNYWNVcGRhdGUpCiAgICAg
ICAgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIENTU01fQ0NfSEFORExFIEND
SGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkRhdGFCdWZzLAogICAgICAgICB1aW50
MzIgRGF0YUJ1ZkNvdW50KTsKICAgIENTU01fUkVUVVJOICggKlZlcmlmeU1hY0ZpbmFsKQogICAg
ICAgIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBDU1NNX0NDX0hBTkRMRSBD
Q0hhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpNYWMpOwogICAgQ1NTTV9SRVRVUk4g
KCAqRW5jcnlwdERhdGEpCiAgICAgICAgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAg
ICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0NPTlRFWFQg
KkNvbnRleHQsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqQ2xlYXJCdWZzLAogICAgICAgICB1
aW50MzIgQ2xlYXJCdWZDb3VudCwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBDaXBoZXJCdWZzLAog
ICAgICAgICB1aW50MzIgQ2lwaGVyQnVmQ291bnQsCiAgICAgICAgIENTU01fU0laRSAqYnl0ZXNF
bmNyeXB0ZWQsCiAgICAgICAgIENTU01fREFUQV9QVFIgUmVtRGF0YSwKICAgICAgICAgQ1NTTV9Q
UklWSUxFR0UgUHJpdmlsZWdlKTsKICAgIENTU01fUkVUVVJOICggKkVuY3J5cHREYXRhSW5pdCkK
ICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5E
TEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ09OVEVYVCAqQ29udGV4dCwKICAgICAg
ICAgQ1NTTV9QUklWSUxFR0UgUHJpdmlsZWdlKTsKICAgIENTU01fUkVUVVJOICggKkVuY3J5cHRE
YXRhVXBkYXRlKQogICAgICAgIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBD
U1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpDbGVhckJ1
ZnMsCiAgICAgICAgIHVpbnQzMiBDbGVhckJ1ZkNvdW50LAogICAgICAgICBDU1NNX0RBVEFfUFRS
IENpcGhlckJ1ZnMsCiAgICAgICAgIHVpbnQzMiBDaXBoZXJCdWZDb3VudCwKICAgICAgICAgQ1NT
TV9TSVpFICpieXRlc0VuY3J5cHRlZCk7CiAgICBDU1NNX1JFVFVSTiAoICpFbmNyeXB0RGF0YUZp
bmFsKQogICAgICAgIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBDU1NNX0ND
X0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBSZW1EYXRhKTsKICAgIENT
U01fUkVUVVJOICggKkRlY3J5cHREYXRhKQogICAgICAgIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFu
ZGxlLAogICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgY29uc3QgQ1NT
TV9DT05URVhUICpDb250ZXh0LAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNpcGhlckJ1ZnMs
CiAgICAgICAgIHVpbnQzMiBDaXBoZXJCdWZDb3VudCwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBD
bGVhckJ1ZnMsCiAgICAgICAgIHVpbnQzMiBDbGVhckJ1ZkNvdW50LAogICAgICAgICBDU1NNX1NJ
WkUgKmJ5dGVzRGVjcnlwdGVkLAogICAgICAgICBDU1NNX0RBVEFfUFRSIFJlbURhdGEsCiAgICAg
ICAgIENTU01fUFJJVklMRUdFIFByaXZpbGVnZSk7CiAgICBDU1NNX1JFVFVSTiAoICpEZWNyeXB0
RGF0YUluaXQpCiAgICAgICAgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIENT
U01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0NPTlRFWFQgKkNvbnRl
eHQsCiAgICAgICAgIENTU01fUFJJVklMRUdFIFByaXZpbGVnZSk7CiAgICBDU1NNX1JFVFVSTiAo
ICpEZWNyeXB0RGF0YVVwZGF0ZSkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwK
ICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fREFU
QSAqQ2lwaGVyQnVmcywKICAgICAgICAgdWludDMyIENpcGhlckJ1ZkNvdW50LAogICAgICAgICBD
U1NNX0RBVEFfUFRSIENsZWFyQnVmcywKICAgICAgICAgdWludDMyIENsZWFyQnVmQ291bnQsCiAg
ICAgICAgIENTU01fU0laRSAqYnl0ZXNEZWNyeXB0ZWQpOwogICAgQ1NTTV9SRVRVUk4gKCAqRGVj
cnlwdERhdGFGaW5hbCkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAg
ICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIENTU01fREFUQV9QVFIgUmVtRGF0
YSk7CiAgICBDU1NNX1JFVFVSTiAoICpRdWVyeUtleVNpemVJbkJpdHMpCiAgICAgICAgKENTU01f
Q1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAog
ICAgICAgICBjb25zdCBDU1NNX0NPTlRFWFQgKkNvbnRleHQsCiAgICAgICAgIGNvbnN0IENTU01f
S0VZICpLZXksCiAgICAgICAgIENTU01fS0VZX1NJWkVfUFRSIEtleVNpemUpOwogICAgQ1NTTV9S
RVRVUk4gKCAqR2VuZXJhdGVLZXkpCiAgICAgICAgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUs
CiAgICAgICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0NP
TlRFWFQgKkNvbnRleHQsCiAgICAgICAgIHVpbnQzMiBLZXlVc2FnZSwKICAgICAgICAgdWludDMy
IEtleUF0dHIsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqS2V5TGFiZWwsCiAgICAgICAgIGNv
bnN0IENTU01fUkVTT1VSQ0VfQ09OVFJPTF9DT05URVhUICpDcmVkQW5kQWNsRW50cnksCiAgICAg
ICAgIENTU01fS0VZX1BUUiBLZXksCiAgICAgICAgIENTU01fUFJJVklMRUdFIFByaXZpbGVnZSk7
CiAgICBDU1NNX1JFVFVSTiAoICpHZW5lcmF0ZUtleVBhaXIpCiAgICAgICAgKENTU01fQ1NQX0hB
TkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAg
ICBjb25zdCBDU1NNX0NPTlRFWFQgKkNvbnRleHQsCiAgICAgICAgIHVpbnQzMiBQdWJsaWNLZXlV
c2FnZSwKICAgICAgICAgdWludDMyIFB1YmxpY0tleUF0dHIsCiAgICAgICAgIGNvbnN0IENTU01f
REFUQSAqUHVibGljS2V5TGFiZWwsCiAgICAgICAgIENTU01fS0VZX1BUUiBQdWJsaWNLZXksCiAg
ICAgICAgIHVpbnQzMiBQcml2YXRlS2V5VXNhZ2UsCiAgICAgICAgIHVpbnQzMiBQcml2YXRlS2V5
QXR0ciwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpQcml2YXRlS2V5TGFiZWwsCiAgICAgICAg
IGNvbnN0IENTU01fUkVTT1VSQ0VfQ09OVFJPTF9DT05URVhUICpDcmVkQW5kQWNsRW50cnksCiAg
ICAgICAgIENTU01fS0VZX1BUUiBQcml2YXRlS2V5LAogICAgICAgICBDU1NNX1BSSVZJTEVHRSBQ
cml2aWxlZ2UpOwogICBDU1NNX1JFVFVSTiAoICpHZW5lcmF0ZVJhbmRvbSkKICAgICAgICAoQ1NT
TV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUs
CiAgICAgICAgIGNvbnN0IENTU01fQ09OVEVYVCAqQ29udGV4dCwKICAgICAgICAgQ1NTTV9EQVRB
X1BUUiBSYW5kb21OdW1iZXIpOwogICAgQ1NTTV9SRVRVUk4gKCAqR2VuZXJhdGVBbGdvcml0aG1Q
YXJhbXMpCiAgICAgICAgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIENTU01f
Q0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0NPTlRFWFQgKkNvbnRleHQs
CiAgICAgICAgIHVpbnQzMiBQYXJhbUJpdHMsCiAgICAgICAgIENTU01fREFUQV9QVFIgUGFyYW0s
CiAgICAgICAgIHVpbnQzMiAqTnVtYmVyT2ZVcGRhdGVkQXR0aWJ1dGVzLAogICAgICAgICBDU1NN
X0NPTlRFWFRfQVRUUklCVVRFX1BUUiAqVXBkYXRlZEF0dHJpYnV0ZXMpOwogICAgQ1NTTV9SRVRV
Uk4gKCAqV3JhcEtleSkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAg
ICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ09OVEVYVCAq
Q29udGV4dCwKICAgICAgICAgY29uc3QgQ1NTTV9BQ0NFU1NfQ1JFREVOVElBTFMgKkFjY2Vzc0Ny
ZWQsCiAgICAgICAgIGNvbnN0IENTU01fS0VZICpLZXksCiAgICAgICAgIGNvbnN0IENTU01fREFU
QSAqRGVzY3JpcHRpdmVEYXRhLAogICAgICAgICBDU1NNX1dSQVBfS0VZX1BUUiBXcmFwcGVkS2V5
LAogICAgICAgICBDU1NNX1BSSVZJTEVHRSBQcml2aWxlZ2UpOwogICAgQ1NTTV9SRVRVUk4gKCAq
VW53cmFwS2V5KQogICAgICAgIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBD
U1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9DT05URVhUICpDb250
ZXh0LAogICAgICAgICBjb25zdCBDU1NNX0tFWSAqUHVibGljS2V5LAogICAgICAgICBjb25zdCBD
U1NNX1dSQVBfS0VZICpXcmFwcGVkS2V5LAogICAgICAgICB1aW50MzIgS2V5VXNhZ2UsCiAgICAg
ICAgIHVpbnQzMiBLZXlBdHRyLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKktleUxhYmVsLAog
ICAgICAgICBjb25zdCBDU1NNX1JFU09VUkNFX0NPTlRST0xfQ09OVEVYVCAqQ3JlZEFuZEFjbEVu
dHJ5LAogICAgICAgICBDU1NNX0tFWV9QVFIgVW53cmFwcGVkS2V5LAogICAgICAgICBDU1NNX0RB
VEFfUFRSIERlc2NyaXB0aXZlRGF0YSwKICAgICAgICAgQ1NTTV9QUklWSUxFR0UgUHJpdmlsZWdl
KTsKICAgIENTU01fUkVUVVJOICggKkRlcml2ZUtleSkKICAgICAgICAoQ1NTTV9DU1BfSEFORExF
IENTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ0NIYW5kbGUsCiAgICAgICAgIGNv
bnN0IENTU01fQ09OVEVYVCAqQ29udGV4dCwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBQYXJhbSwK
ICAgICAgICAgdWludDMyIEtleVVzYWdlLAogICAgICAgICB1aW50MzIgS2V5QXR0ciwKICAgICAg
ICAgY29uc3QgQ1NTTV9EQVRBICpLZXlMYWJlbCwKICAgICAgICAgY29uc3QgQ1NTTV9SRVNPVVJD
RV9DT05UUk9MX0NPTlRFWFQgKkNyZWRBbmRBY2xFbnRyeSwKICAgICAgICAgQ1NTTV9LRVlfUFRS
IERlcml2ZWRLZXkpOwogICAgQ1NTTV9SRVRVUk4gKCAqRnJlZUtleSkKICAgICAgICAoQ1NTTV9D
U1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9BQ0NFU1NfQ1JFREVOVElB
TFMgKkFjY2Vzc0NyZWQsCiAgICAgICAgIENTU01fS0VZX1BUUiBLZXlQdHIsCiAgICAgICAgIENT
U01fQk9PTCBEZWxldGUpOwogICAgQ1NTTV9SRVRVUk4gKCAqUGFzc1Rocm91Z2gpCiAgICAgICAg
KENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIENTU01fQ0NfSEFORExFIENDSGFu
ZGxlLAogICAgICAgICBjb25zdCBDU1NNX0NPTlRFWFQgKkNvbnRleHQsCiAgICAgICAgIHVpbnQz
MiBQYXNzVGhyb3VnaElkLAogICAgICAgICBjb25zdCB2b2lkICpJbkRhdGEsCiAgICAgICAgIHZv
aWQgKipPdXREYXRhKTsKICAgIENTU01fUkVUVVJOICggKkxvZ2luKQogICAgICAgIChDU1NNX0NT
UF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFM
UyAqQWNjZXNzQ3JlZCwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpMb2dpbk5hbWUsCiAgICAg
ICAgIGNvbnN0IHZvaWQgKlJlc2VydmVkKTsKICAgIENTU01fUkVUVVJOICggKkxvZ291dCkKICAg
ICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSk7CiAgICBDU1NNX1JFVFVSTiAoICpDaGFu
Z2VMb2dpbkFjbCkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAg
Y29uc3QgQ1NTTV9BQ0NFU1NfQ1JFREVOVElBTFMgKkFjY2Vzc0NyZWQsCiAgICAgICAgIGNvbnN0
IENTU01fQUNMX0VESVQgKkFjbEVkaXQpOwogICAgQ1NTTV9SRVRVUk4gKCAqT2J0YWluUHJpdmF0
ZUtleUZyb21QdWJsaWNLZXkpCiAgICAgICAgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAg
ICAgICAgIGNvbnN0IENTU01fS0VZICpQdWJsaWNLZXksCiAgICAgICAgIENTU01fS0VZX1BUUiBQ
cml2YXRlS2V5KTsKICAgIENTU01fUkVUVVJOICggKlJldHJpZXZlVW5pcXVlSWQpCiAgICAgICAg
KENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIENTU01fREFUQV9QVFIgVW5pcXVl
SUQpOwogICAgQ1NTTV9SRVRVUk4gKCAqUmV0cmlldmVDb3VudGVyKQogICAgICAgIChDU1NNX0NT
UF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBDU1NNX0RBVEFfUFRSIENvdW50ZXIpOwogICAg
Q1NTTV9SRVRVUk4gKCAqVmVyaWZ5RGV2aWNlKQogICAgICAgIChDU1NNX0NTUF9IQU5ETEUgQ1NQ
SGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkRldmljZUNlcnQpOwogICAgQ1NTTV9S
RVRVUk4gKCAqR2V0VGltZVZhbHVlKQogICAgICAgIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxl
LAogICAgICAgICBDU1NNX0FMR09SSVRITVMgVGltZUFsZ29yaXRobSwKICAgICAgICAgQ1NTTV9E
QVRBICpUaW1lRGF0YSk7CiAgICBDU1NNX1JFVFVSTiAoICpHZXRPcGVyYXRpb25hbFN0YXRpc3Rp
Y3MpCiAgICAgICAgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIENTU01fQ1NQ
X09QRVJBVElPTkFMX1NUQVRJU1RJQ1MgKlN0YXRpc3RpY3MpOwogICAgQ1NTTV9SRVRVUk4gKCAq
R2V0TG9naW5BY2wpCiAgICAgICAgKENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAg
IGNvbnN0IENTU01fU1RSSU5HICpTZWxlY3Rpb25UYWcsCiAgICAgICAgIHVpbnQzMiAqTnVtYmVy
T2ZBY2xJbmZvcywKICAgICAgICAgQ1NTTV9BQ0xfRU5UUllfSU5GT19QVFIgKkFjbEluZm9zKTsK
ICAgIENTU01fUkVUVVJOICggKkdldEtleUFjbCkKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENT
UEhhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9LRVkgKktleSwKICAgICAgICAgY29uc3QgQ1NT
TV9TVFJJTkcgKlNlbGVjdGlvblRhZywKICAgICAgICAgdWludDMyICpOdW1iZXJPZkFjbEluZm9z
LAogICAgICAgICBDU1NNX0FDTF9FTlRSWV9JTkZPX1BUUiAqQWNsSW5mb3MpOwogICAgQ1NTTV9S
RVRVUk4gKCAqQ2hhbmdlS2V5QWNsKQogICAgICAgIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxl
LAogICAgICAgICBjb25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFMUyAqQWNjZXNzQ3JlZCwKICAg
ICAgICAgY29uc3QgQ1NTTV9BQ0xfRURJVCAqQWNsRWRpdCwKICAgICAgICAgY29uc3QgQ1NTTV9L
RVkgKktleSk7CiAgICBDU1NNX1JFVFVSTiAoICpHZXRLZXlPd25lcikKICAgICAgICAoQ1NTTV9D
U1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9LRVkgKktleSwKICAgICAg
ICAgQ1NTTV9BQ0xfT1dORVJfUFJPVE9UWVBFX1BUUiBPd25lcik7CiAgICBDU1NNX1JFVFVSTiAo
ICpDaGFuZ2VLZXlPd25lcikKICAgICAgICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAg
ICAgICAgY29uc3QgQ1NTTV9BQ0NFU1NfQ1JFREVOVElBTFMgKkFjY2Vzc0NyZWQsCiAgICAgICAg
IGNvbnN0IENTU01fS0VZICpLZXksCiAgICAgICAgIGNvbnN0IENTU01fQUNMX09XTkVSX1BST1RP
VFlQRSAqTmV3T3duZXIpOwogICAgQ1NTTV9SRVRVUk4gKCAqR2V0TG9naW5Pd25lcikKICAgICAg
ICAoQ1NTTV9DU1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9BQ0xfT1dORVJfUFJP
VE9UWVBFX1BUUiBPd25lcik7CiAgICBDU1NNX1JFVFVSTiAoICpDaGFuZ2VMb2dpbk93bmVyKQog
ICAgICAgIChDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0FD
Q0VTU19DUkVERU5USUFMUyAqQWNjZXNzQ3JlZCwKICAgICAgICAgY29uc3QgQ1NTTV9BQ0xfT1dO
RVJfUFJPVE9UWVBFICpOZXdPd25lcik7Cn0gQ1NTTV9TUElfQ1NQX0ZVTkNTLCAqQ1NTTV9TUElf
Q1NQX0ZVTkNTX1BUUjsKCgp9CiMgMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL2Nzc21kbGkuaCIgMSAzCiMg
MjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJz
L2Nzc21kbGkuaCIgMwojZGVmaW5lIF9DU1NNRExJX0hfIDEKCgoKCmV4dGVybiAiQyIgewoKCnR5
cGVkZWYgc3RydWN0IGNzc21fc3BpX2RsX2Z1bmNzIHsKICAgIENTU01fUkVUVVJOICggKkRiT3Bl
bikKICAgICAgICAoQ1NTTV9ETF9IQU5ETEUgRExIYW5kbGUsCiAgICAgICAgIGNvbnN0IGNoYXIg
KkRiTmFtZSwKICAgICAgICAgY29uc3QgQ1NTTV9ORVRfQUREUkVTUyAqRGJMb2NhdGlvbiwKICAg
ICAgICAgQ1NTTV9EQl9BQ0NFU1NfVFlQRSBBY2Nlc3NSZXF1ZXN0LAogICAgICAgICBjb25zdCBD
U1NNX0FDQ0VTU19DUkVERU5USUFMUyAqQWNjZXNzQ3JlZCwKICAgICAgICAgY29uc3Qgdm9pZCAq
T3BlblBhcmFtZXRlcnMsCiAgICAgICAgIENTU01fREJfSEFORExFICpEYkhhbmRsZSk7CiAgICBD
U1NNX1JFVFVSTiAoICpEYkNsb3NlKQogICAgICAgIChDU1NNX0RMX0RCX0hBTkRMRSBETERCSGFu
ZGxlKTsKICAgIENTU01fUkVUVVJOICggKkRiQ3JlYXRlKQogICAgICAgIChDU1NNX0RMX0hBTkRM
RSBETEhhbmRsZSwKICAgICAgICAgY29uc3QgY2hhciAqRGJOYW1lLAogICAgICAgICBjb25zdCBD
U1NNX05FVF9BRERSRVNTICpEYkxvY2F0aW9uLAogICAgICAgICBjb25zdCBDU1NNX0RCSU5GTyAq
REJJbmZvLAogICAgICAgICBDU1NNX0RCX0FDQ0VTU19UWVBFIEFjY2Vzc1JlcXVlc3QsCiAgICAg
ICAgIGNvbnN0IENTU01fUkVTT1VSQ0VfQ09OVFJPTF9DT05URVhUICpDcmVkQW5kQWNsRW50cnks
CiAgICAgICAgIGNvbnN0IHZvaWQgKk9wZW5QYXJhbWV0ZXJzLAogICAgICAgICBDU1NNX0RCX0hB
TkRMRSAqRGJIYW5kbGUpOwogICAgQ1NTTV9SRVRVUk4gKCAqRGJEZWxldGUpCiAgICAgICAgKENT
U01fRExfSEFORExFIERMSGFuZGxlLAogICAgICAgICBjb25zdCBjaGFyICpEYk5hbWUsCiAgICAg
ICAgIGNvbnN0IENTU01fTkVUX0FERFJFU1MgKkRiTG9jYXRpb24sCiAgICAgICAgIGNvbnN0IENT
U01fQUNDRVNTX0NSRURFTlRJQUxTICpBY2Nlc3NDcmVkKTsKICAgIENTU01fUkVUVVJOICggKkNy
ZWF0ZVJlbGF0aW9uKQogICAgICAgIChDU1NNX0RMX0RCX0hBTkRMRSBETERCSGFuZGxlLAogICAg
ICAgICBDU1NNX0RCX1JFQ09SRFRZUEUgUmVsYXRpb25JRCwKICAgICAgICAgY29uc3QgY2hhciAq
UmVsYXRpb25OYW1lLAogICAgICAgICB1aW50MzIgTnVtYmVyT2ZBdHRyaWJ1dGVzLAogICAgICAg
ICBjb25zdCBDU1NNX0RCX1NDSEVNQV9BVFRSSUJVVEVfSU5GTyAqcEF0dHJpYnV0ZUluZm8sCiAg
ICAgICAgIHVpbnQzMiBOdW1iZXJPZkluZGV4ZXMsCiAgICAgICAgIGNvbnN0IENTU01fREJfU0NI
RU1BX0lOREVYX0lORk8gKnBJbmRleEluZm8pOwogICAgQ1NTTV9SRVRVUk4gKCAqRGVzdHJveVJl
bGF0aW9uKQogICAgICAgIChDU1NNX0RMX0RCX0hBTkRMRSBETERCSGFuZGxlLAogICAgICAgICBD
U1NNX0RCX1JFQ09SRFRZUEUgUmVsYXRpb25JRCk7CiAgICBDU1NNX1JFVFVSTiAoICpBdXRoZW50
aWNhdGUpCiAgICAgICAgKENTU01fRExfREJfSEFORExFIERMREJIYW5kbGUsCiAgICAgICAgIENT
U01fREJfQUNDRVNTX1RZUEUgQWNjZXNzUmVxdWVzdCwKICAgICAgICAgY29uc3QgQ1NTTV9BQ0NF
U1NfQ1JFREVOVElBTFMgKkFjY2Vzc0NyZWQpOwogICAgQ1NTTV9SRVRVUk4gKCAqR2V0RGJBY2wp
CiAgICAgICAgKENTU01fRExfREJfSEFORExFIERMREJIYW5kbGUsCiAgICAgICAgIGNvbnN0IENT
U01fU1RSSU5HICpTZWxlY3Rpb25UYWcsCiAgICAgICAgIHVpbnQzMiAqTnVtYmVyT2ZBY2xJbmZv
cywKICAgICAgICAgQ1NTTV9BQ0xfRU5UUllfSU5GT19QVFIgKkFjbEluZm9zKTsKICAgIENTU01f
UkVUVVJOICggKkNoYW5nZURiQWNsKQogICAgICAgIChDU1NNX0RMX0RCX0hBTkRMRSBETERCSGFu
ZGxlLAogICAgICAgICBjb25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFMUyAqQWNjZXNzQ3JlZCwK
ICAgICAgICAgY29uc3QgQ1NTTV9BQ0xfRURJVCAqQWNsRWRpdCk7CiAgICBDU1NNX1JFVFVSTiAo
ICpHZXREYk93bmVyKQogICAgICAgIChDU1NNX0RMX0RCX0hBTkRMRSBETERCSGFuZGxlLAogICAg
ICAgICBDU1NNX0FDTF9PV05FUl9QUk9UT1RZUEVfUFRSIE93bmVyKTsKICAgIENTU01fUkVUVVJO
ICggKkNoYW5nZURiT3duZXIpCiAgICAgICAgKENTU01fRExfREJfSEFORExFIERMREJIYW5kbGUs
CiAgICAgICAgIGNvbnN0IENTU01fQUNDRVNTX0NSRURFTlRJQUxTICpBY2Nlc3NDcmVkLAogICAg
ICAgICBjb25zdCBDU1NNX0FDTF9PV05FUl9QUk9UT1RZUEUgKk5ld093bmVyKTsKICAgIENTU01f
UkVUVVJOICggKkdldERiTmFtZXMpCiAgICAgICAgKENTU01fRExfSEFORExFIERMSGFuZGxlLAog
ICAgICAgICBDU1NNX05BTUVfTElTVF9QVFIgKk5hbWVMaXN0KTsKICAgIENTU01fUkVUVVJOICgg
KkdldERiTmFtZUZyb21IYW5kbGUpCiAgICAgICAgKENTU01fRExfREJfSEFORExFIERMREJIYW5k
bGUsCiAgICAgICAgIGNoYXIgKipEYk5hbWUpOwogICAgQ1NTTV9SRVRVUk4gKCAqRnJlZU5hbWVM
aXN0KQogICAgICAgIChDU1NNX0RMX0hBTkRMRSBETEhhbmRsZSwKICAgICAgICAgQ1NTTV9OQU1F
X0xJU1RfUFRSIE5hbWVMaXN0KTsKICAgIENTU01fUkVUVVJOICggKkRhdGFJbnNlcnQpCiAgICAg
ICAgKENTU01fRExfREJfSEFORExFIERMREJIYW5kbGUsCiAgICAgICAgIENTU01fREJfUkVDT1JE
VFlQRSBSZWNvcmRUeXBlLAogICAgICAgICBjb25zdCBDU1NNX0RCX1JFQ09SRF9BVFRSSUJVVEVf
REFUQSAqQXR0cmlidXRlcywKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEYXRhLAogICAgICAg
ICBDU1NNX0RCX1VOSVFVRV9SRUNPUkRfUFRSICpVbmlxdWVJZCk7CiAgICBDU1NNX1JFVFVSTiAo
ICpEYXRhRGVsZXRlKQogICAgICAgIChDU1NNX0RMX0RCX0hBTkRMRSBETERCSGFuZGxlLAogICAg
ICAgICBjb25zdCBDU1NNX0RCX1VOSVFVRV9SRUNPUkQgKlVuaXF1ZVJlY29yZElkZW50aWZpZXIp
OwogICAgQ1NTTV9SRVRVUk4gKCAqRGF0YU1vZGlmeSkKICAgICAgICAoQ1NTTV9ETF9EQl9IQU5E
TEUgRExEQkhhbmRsZSwKICAgICAgICAgQ1NTTV9EQl9SRUNPUkRUWVBFIFJlY29yZFR5cGUsCiAg
ICAgICAgIENTU01fREJfVU5JUVVFX1JFQ09SRF9QVFIgVW5pcXVlUmVjb3JkSWRlbnRpZmllciwK
ICAgICAgICAgY29uc3QgQ1NTTV9EQl9SRUNPUkRfQVRUUklCVVRFX0RBVEEgKkF0dHJpYnV0ZXNU
b0JlTW9kaWZpZWQsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqRGF0YVRvQmVNb2RpZmllZCwK
ICAgICAgICAgQ1NTTV9EQl9NT0RJRllfTU9ERSBNb2RpZnlNb2RlKTsKICAgIENTU01fUkVUVVJO
ICggKkRhdGFHZXRGaXJzdCkKICAgICAgICAoQ1NTTV9ETF9EQl9IQU5ETEUgRExEQkhhbmRsZSwK
ICAgICAgICAgY29uc3QgQ1NTTV9RVUVSWSAqUXVlcnksCiAgICAgICAgIENTU01fSEFORExFX1BU
UiBSZXN1bHRzSGFuZGxlLAogICAgICAgICBDU1NNX0RCX1JFQ09SRF9BVFRSSUJVVEVfREFUQV9Q
VFIgQXR0cmlidXRlcywKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBEYXRhLAogICAgICAgICBDU1NN
X0RCX1VOSVFVRV9SRUNPUkRfUFRSICpVbmlxdWVJZCk7CiAgICBDU1NNX1JFVFVSTiAoICpEYXRh
R2V0TmV4dCkKICAgICAgICAoQ1NTTV9ETF9EQl9IQU5ETEUgRExEQkhhbmRsZSwKICAgICAgICAg
Q1NTTV9IQU5ETEUgUmVzdWx0c0hhbmRsZSwKICAgICAgICAgQ1NTTV9EQl9SRUNPUkRfQVRUUklC
VVRFX0RBVEFfUFRSIEF0dHJpYnV0ZXMsCiAgICAgICAgIENTU01fREFUQV9QVFIgRGF0YSwKICAg
ICAgICAgQ1NTTV9EQl9VTklRVUVfUkVDT1JEX1BUUiAqVW5pcXVlSWQpOwogICAgQ1NTTV9SRVRV
Uk4gKCAqRGF0YUFib3J0UXVlcnkpCiAgICAgICAgKENTU01fRExfREJfSEFORExFIERMREJIYW5k
bGUsCiAgICAgICAgIENTU01fSEFORExFIFJlc3VsdHNIYW5kbGUpOwogICAgQ1NTTV9SRVRVUk4g
KCAqRGF0YUdldEZyb21VbmlxdWVSZWNvcmRJZCkKICAgICAgICAoQ1NTTV9ETF9EQl9IQU5ETEUg
RExEQkhhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9EQl9VTklRVUVfUkVDT1JEICpVbmlxdWVS
ZWNvcmQsCiAgICAgICAgIENTU01fREJfUkVDT1JEX0FUVFJJQlVURV9EQVRBX1BUUiBBdHRyaWJ1
dGVzLAogICAgICAgICBDU1NNX0RBVEFfUFRSIERhdGEpOwogICAgQ1NTTV9SRVRVUk4gKCAqRnJl
ZVVuaXF1ZVJlY29yZCkKICAgICAgICAoQ1NTTV9ETF9EQl9IQU5ETEUgRExEQkhhbmRsZSwKICAg
ICAgICAgQ1NTTV9EQl9VTklRVUVfUkVDT1JEX1BUUiBVbmlxdWVSZWNvcmQpOwogICAgQ1NTTV9S
RVRVUk4gKCAqUGFzc1Rocm91Z2gpCiAgICAgICAgKENTU01fRExfREJfSEFORExFIERMREJIYW5k
bGUsCiAgICAgICAgIHVpbnQzMiBQYXNzVGhyb3VnaElkLAogICAgICAgICBjb25zdCB2b2lkICpJ
bnB1dFBhcmFtcywKICAgICAgICAgdm9pZCAqKk91dHB1dFBhcmFtcyk7Cn0gQ1NTTV9TUElfRExf
RlVOQ1MsICpDU1NNX1NQSV9ETF9GVU5DU19QVFI7CgoKfQojIDMzICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cml0eS5oIiAyIDMKCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMv
Y3NzbWtyYXBpLmgiIDEgMwojIDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0
eS5mcmFtZXdvcmsvSGVhZGVycy9jc3Nta3JhcGkuaCIgMwojZGVmaW5lIF9DU1NNS1JBUElfSF8g
MQoKCgoKZXh0ZXJuICJDIiB7CgoKdHlwZWRlZiB1aW50MzIgQ1NTTV9LUlNQX0hBTkRMRTsKCnR5
cGVkZWYgc3RydWN0IGNzc21fa3JfbmFtZSB7CiAgICB1aW50OCBUeXBlOwogICAgdWludDggTGVu
Z3RoOwogICAgY2hhciAqTmFtZTsKfSBDU1NNX0tSX05BTUU7Cgp0eXBlZGVmIHN0cnVjdCBjc3Nt
X2tyX3Byb2ZpbGUgewogICAgQ1NTTV9LUl9OQU1FIFVzZXJOYW1lOwogICAgQ1NTTV9DRVJUR1JP
VVBfUFRSIFVzZXJDZXJ0aWZpY2F0ZTsKICAgIENTU01fQ0VSVEdST1VQX1BUUiBLUlNDZXJ0Q2hh
aW47CiAgICB1aW50OCBMRV9LUkFOdW07CiAgICBDU1NNX0NFUlRHUk9VUF9QVFIgTEVfS1JBQ2Vy
dENoYWluTGlzdDsKICAgIHVpbnQ4IEVOVF9LUkFOdW07CiAgICBDU1NNX0NFUlRHUk9VUF9QVFIg
RU5UX0tSQUNlcnRDaGFpbkxpc3Q7CiAgICB1aW50OCBJTkRJVl9LUkFOdW07CiAgICBDU1NNX0NF
UlRHUk9VUF9QVFIgSU5ESVZfS1JBQ2VydENoYWluTGlzdDsKICAgIENTU01fREFUQV9QVFIgSU5E
SVZfQXV0aGVudGljYXRpb25JbmZvOwogICAgdWludDMyIEtSU1BGbGFnczsKICAgIENTU01fREFU
QV9QVFIgS1JTUEV4dGVuc2lvbnM7Cn0gQ1NTTV9LUl9QUk9GSUxFLCAqQ1NTTV9LUl9QUk9GSUxF
X1BUUjsKCnR5cGVkZWYgc3RydWN0IGNzc21fa3Jfd3JhcHBlZHByb2R1Y3RpbmZvIHsKICAgIENT
U01fVkVSU0lPTiBTdGFuZGFyZFZlcnNpb247CiAgICBDU1NNX1NUUklORyBTdGFuZGFyZERlc2Ny
aXB0aW9uOwogICAgQ1NTTV9WRVJTSU9OIFByb2R1Y3RWZXJzaW9uOwogICAgQ1NTTV9TVFJJTkcg
UHJvZHVjdERlc2NyaXB0aW9uOwogICAgQ1NTTV9TVFJJTkcgUHJvZHVjdFZlbmRvcjsKICAgIHVp
bnQzMiBQcm9kdWN0RmxhZ3M7Cn0gQ1NTTV9LUl9XUkFQUEVEUFJPRFVDVF9JTkZPLCAqQ1NTTV9L
Ul9XUkFQUEVEUFJPRFVDVF9JTkZPX1BUUjsKCnR5cGVkZWYgc3RydWN0IGNzc21fa3JzdWJzZXJ2
aWNlIHsKICAgIHVpbnQzMiBTdWJTZXJ2aWNlSWQ7CiAgICBjaGFyICpEZXNjcmlwdGlvbjsKICAg
IENTU01fS1JfV1JBUFBFRFBST0RVQ1RfSU5GTyBXcmFwcGVkUHJvZHVjdDsKfSBDU1NNX0tSU1VC
U0VSVklDRSwgKkNTU01fS1JTVUJTRVJWSUNFX1BUUjsKCnR5cGVkZWYgdWludDMyIENTU01fS1Jf
UE9MSUNZX1RZUEU7CiNkZWZpbmUgQ1NTTV9LUl9JTkRJVl9QT0xJQ1kgKDB4MDAwMDAwMDEpCiNk
ZWZpbmUgQ1NTTV9LUl9FTlRfUE9MSUNZICgweDAwMDAwMDAyKQojZGVmaW5lIENTU01fS1JfTEVf
TUFOX1BPTElDWSAoMHgwMDAwMDAwMykKI2RlZmluZSBDU1NNX0tSX0xFX1VTRV9QT0xJQ1kgKDB4
MDAwMDAwMDQpCgp0eXBlZGVmIHVpbnQzMiBDU1NNX0tSX1BPTElDWV9GTEFHUzsKCiNkZWZpbmUg
Q1NTTV9LUl9JTkRJViAoMHgwMDAwMDAwMSkKI2RlZmluZSBDU1NNX0tSX0VOVCAoMHgwMDAwMDAw
MikKI2RlZmluZSBDU1NNX0tSX0xFX01BTiAoMHgwMDAwMDAwNCkKI2RlZmluZSBDU1NNX0tSX0xF
X1VTRSAoMHgwMDAwMDAwOCkKI2RlZmluZSBDU1NNX0tSX0xFIChDU1NNX0tSX0xFX01BTiB8IENT
U01fS1JfTEVfVVNFKQojZGVmaW5lIENTU01fS1JfT1BUSU1JWkUgKDB4MDAwMDAwMTApCiNkZWZp
bmUgQ1NTTV9LUl9EUk9QX1dPUktGQUNUT1IgKDB4MDAwMDAwMjApCgp0eXBlZGVmIHN0cnVjdCBj
c3NtX2tyX3BvbGljeV9saXN0X2l0ZW0gewogICAgc3RydWN0IGtyX3BvbGljeV9saXN0X2l0ZW0g
Km5leHQ7CiAgICBDU1NNX0FMR09SSVRITVMgQWxnb3JpdGhtSWQ7CiAgICBDU1NNX0VOQ1JZUFRf
TU9ERSBNb2RlOwogICAgdWludDMyIE1heEtleUxlbmd0aDsKICAgIHVpbnQzMiBNYXhSb3VuZHM7
CiAgICB1aW50OCBXb3JrRmFjdG9yOwogICAgQ1NTTV9LUl9QT0xJQ1lfRkxBR1MgUG9saWN5Rmxh
Z3M7CiAgICBDU1NNX0NPTlRFWFRfVFlQRSBBbGdDbGFzczsKfSBDU1NNX0tSX1BPTElDWV9MSVNU
X0lURU0sICpDU1NNX0tSX1BPTElDWV9MSVNUX0lURU1fUFRSOwoKdHlwZWRlZiBzdHJ1Y3QgY3Nz
bV9rcl9wb2xpY3lfaW5mbyB7CiAgICBDU1NNX0JPT0wga3JiTm90QWxsb3dlZDsKICAgIHVpbnQz
MiBudW1iZXJPZkVudHJpZXM7CiAgICBDU1NNX0tSX1BPTElDWV9MSVNUX0lURU0gKnBvbGljeUVu
dHJ5Owp9IENTU01fS1JfUE9MSUNZX0lORk8sICpDU1NNX0tSX1BPTElDWV9JTkZPX1BUUjsKCgoK
CkNTU01fUkVUVVJOCkNTU01fS1JfU2V0RW50ZXJwcmlzZVJlY292ZXJ5UG9saWN5IChjb25zdCBD
U1NNX0RBVEEgKlJlY292ZXJ5UG9saWN5RmlsZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFMUyAqT2xkUGFzc1BocmFz
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fQUNDRVNT
X0NSRURFTlRJQUxTICpOZXdQYXNzUGhyYXNlKTsKCgoKCkNTU01fUkVUVVJOCkNTU01fS1JfQ3Jl
YXRlUmVjb3ZlcnlSZWdpc3RyYXRpb25Db250ZXh0IChDU1NNX0tSU1BfSEFORExFIEtSU1BIYW5k
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0NDX0hB
TkRMRSAqTmV3Q29udGV4dCk7CgpDU1NNX1JFVFVSTgpDU1NNX0tSX0NyZWF0ZVJlY292ZXJ5RW5h
YmxlbWVudENvbnRleHQgKENTU01fS1JTUF9IQU5ETEUgS1JTUEhhbmRsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0tSX1BST0ZJTEUgKkxvY2Fs
UHJvZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
U1NNX0tSX1BST0ZJTEUgKlJlbW90ZVByb2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgKk5ld0NvbnRleHQpOwoKQ1NTTV9SRVRVUk4K
Q1NTTV9LUl9DcmVhdGVSZWNvdmVyeVJlcXVlc3RDb250ZXh0IChDU1NNX0tSU1BfSEFORExFIEtS
U1BIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NT
TV9LUl9QUk9GSUxFICpMb2NhbFByb2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgKk5ld0NvbnRleHQpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9L
Ul9HZXRQb2xpY3lJbmZvIChDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAgICAgICAg
ICAgICAgICBDU1NNX0tSX1BPTElDWV9GTEFHUyAqRW5jcnlwdGlvblByb2hpYml0ZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyICpXb3JrRmFjdG9yKTsKCgoKCkNTU01fUkVUVVJOCkNT
U01fS1JfUmVnaXN0cmF0aW9uUmVxdWVzdCAoQ1NTTV9DQ19IQU5ETEUgUmVjb3ZlcnlSZWdpc3Ry
YXRpb25Db250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFU
QSAqS1JJbkRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1NTTV9BQ0NF
U1NfQ1JFREVOVElBTFMgKkFjY2Vzc0NyZWRlbnRpYWxzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU01fS1JfUE9MSUNZX0ZMQUdTIEtSRmxhZ3MsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2ludDMyICpFc3RpbWF0ZWRUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU01fSEFORExFX1BUUiBSZWZlcmVuY2VIYW5kbGUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9L
Ul9SZWdpc3RyYXRpb25SZXRyaWV2ZSAoQ1NTTV9LUlNQX0hBTkRMRSBLUlNQSGFuZGxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0hBTkRMRSBSZWZlcmVuY2VIYW5kbGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fQUNDRVNTX0NSRURFTlRJQUxT
ICpBY2Nlc3NDcmVkZW50aWFscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ludDMy
ICpFc3RpbWF0ZWRUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0tSX1BS
T0ZJTEVfUFRSIEtSUHJvZmlsZSk7CgoKCgpDU1NNX1JFVFVSTgpDU1NNX0tSX0dlbmVyYXRlUmVj
b3ZlcnlGaWVsZHMgKENTU01fQ0NfSEFORExFIEtleVJlY292ZXJ5Q29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0RBVEEgKktSU1BPcHRpb25zLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fS1JfUE9MSUNZX0ZMQUdTIEtSRmxhZ3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9EQVRBX1BUUiBLUkZpZWxkcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSAqTmV3Q0NIYW5k
bGUpOwoKQ1NTTV9SRVRVUk4KQ1NTTV9LUl9Qcm9jZXNzUmVjb3ZlcnlGaWVsZHMgKENTU01fQ0Nf
SEFORExFIEtleVJlY292ZXJ5Q29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU01fQ0NfSEFORExFIENyeXB0b0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBDU1NNX0RBVEEgKktSU1BPcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTTV9LUl9QT0xJQ1lfRkxBR1MgS1JGbGFncywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAqS1JGaWVsZHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSAqTmV3Q3J5cHRvQ29udGV4dCk7CgoKCgpDU1NN
X1JFVFVSTgpDU1NNX0tSX1JlY292ZXJ5UmVxdWVzdCAoQ1NTTV9DQ19IQU5ETEUgUmVjb3ZlcnlS
ZXF1ZXN0Q29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fREFUQSAq
S1JJbkRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDU1NNX0FDQ0VTU19DUkVE
RU5USUFMUyAqQWNjZXNzQ3JlZGVudGlhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBzaW50
MzIgKkVzdGltYXRlZFRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0hBTkRMRV9Q
VFIgUmVmZXJlbmNlSGFuZGxlKTsKCkNTU01fUkVUVVJOCkNTU01fS1JfUmVjb3ZlcnlSZXRyaWV2
ZSAoQ1NTTV9LUlNQX0hBTkRMRSBLUlNQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
IENTU01fSEFORExFIFJlZmVyZW5jZUhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFMUyAqQWNjZXNzQ3JlZGVudGlhbHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2ludDMyICpFc3RpbWF0ZWRUaW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU01fSEFORExFX1BUUiBDYWNoZUhhbmRsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzIgKk51bWJlck9mUmVjb3ZlcmVkS2V5cyk7CgpDU1NNX1JFVFVSTgpDU1NN
X0tSX0dldFJlY292ZXJlZE9iamVjdCAoQ1NTTV9LUlNQX0hBTkRMRSBLUlNQSGFuZGxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9IQU5ETEUgQ2FjaGVIYW5kbGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzIgSW5kZXhJblJlc3VsdHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ1NTTV9SRVNPVVJDRV9DT05UUk9MX0NPTlRFWFQgKkNyZWRBbmRB
Y2xFbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiBGbGFncywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU01fS0VZX1BUUiBSZWNvdmVyZWRLZXksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NNX0RBVEFfUFRSIE90aGVySW5mbyk7CgpDU1NNX1JFVFVS
TgpDU1NNX0tSX1JlY292ZXJ5UmVxdWVzdEFib3J0IChDU1NNX0tSU1BfSEFORExFIEtSU1BIYW5k
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU01fSEFORExFIENhY2hlSGFuZGxl
KTsKCkNTU01fUkVUVVJOCkNTU01fS1JfUXVlcnlQb2xpY3lJbmZvIChDU1NNX0tSU1BfSEFORExF
IEtSU1BIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0FMR09SSVRITVMgQWxn
b3JpdGhtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICBDU1NNX0VOQ1JZUFRfTU9ERSBNb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9DT05URVhUX1RZUEUgQ2xhc3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NNX0tSX1BPTElDWV9JTkZPX1BUUiAqUG9saWN5SW5mb0Rh
dGEpOwoKCgoKQ1NTTV9SRVRVUk4KQ1NTTV9LUl9QYXNzVGhyb3VnaCAoQ1NTTV9LUlNQX0hBTkRM
RSBLUlNQSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICBDU1NNX0NDX0hBTkRMRSBLZXlSZWNv
dmVyeUNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgIENTU01fQ0NfSEFORExFIENyeXB0b0Nv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiBQYXNzVGhyb3VnaElkLAogICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpJbnB1dFBhcmFtcywKICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqKk91dHB1dFBhcmFtcyk7CgoKfQojIDM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cml0eS5oIiAyIDMKIyAxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9jc3Nta3Jz
cGkuaCIgMSAzCiMgMjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1l
d29yay9IZWFkZXJzL2Nzc21rcnNwaS5oIiAzCiNkZWZpbmUgX0NTU01LUlNQSV9IXyAxCgoKCgpl
eHRlcm4gIkMiIHsKCgoKCnR5cGVkZWYgc3RydWN0IGNzc21fc3BpX2tyX2Z1bmNzIHsKICAgIENT
U01fUkVUVVJOICggKlJlZ2lzdHJhdGlvblJlcXVlc3QpCiAgICAgICAgKENTU01fS1JTUF9IQU5E
TEUgS1JTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgS1JSZWdpc3RyYXRpb25Db250
ZXh0SGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0NPTlRFWFQgKktSUmVnaXN0cmF0aW9uQ29u
dGV4dCwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpLUkluRGF0YSwKICAgICAgICAgY29uc3Qg
Q1NTTV9BQ0NFU1NfQ1JFREVOVElBTFMgKkFjY2Vzc0NyZWRlbnRpYWxzLAogICAgICAgICBDU1NN
X0tSX1BPTElDWV9GTEFHUyBLUkZsYWdzLAogICAgICAgICBzaW50MzIgKkVzdGltYXRlZFRpbWUs
CiAgICAgICAgIENTU01fSEFORExFX1BUUiBSZWZlcmVuY2VIYW5kbGUpOwogICAgQ1NTTV9SRVRV
Uk4gKCAqUmVnaXN0cmF0aW9uUmV0cmlldmUpCiAgICAgICAgKENTU01fS1JTUF9IQU5ETEUgS1JT
UEhhbmRsZSwKICAgICAgICAgQ1NTTV9IQU5ETEUgUmVmZXJlbmNlSGFuZGxlLAogICAgICAgICBz
aW50MzIgKkVzdGltYXRlZFRpbWUsCiAgICAgICAgIENTU01fS1JfUFJPRklMRV9QVFIgS1JQcm9m
aWxlKTsKICAgIENTU01fUkVUVVJOICggKkdlbmVyYXRlUmVjb3ZlcnlGaWVsZHMpCiAgICAgICAg
KENTU01fS1JTUF9IQU5ETEUgS1JTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgS1JF
bmFibGVtZW50Q29udGV4dEhhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9DT05URVhUICpLUkVu
YWJsZW1lbnRDb250ZXh0LAogICAgICAgICBDU1NNX0NDX0hBTkRMRSBDcnlwdG9Db250ZXh0SGFu
ZGxlLAogICAgICAgICBjb25zdCBDU1NNX0NPTlRFWFQgKkNyeXB0b0NvbnRleHQsCiAgICAgICAg
IGNvbnN0IENTU01fREFUQSAqS1JTUE9wdGlvbnMsCiAgICAgICAgIENTU01fS1JfUE9MSUNZX0ZM
QUdTIEtSRmxhZ3MsCiAgICAgICAgIENTU01fREFUQV9QVFIgS1JGaWVsZHMpOwogICAgQ1NTTV9S
RVRVUk4gKCAqUHJvY2Vzc1JlY292ZXJ5RmllbGRzKQogICAgICAgIChDU1NNX0tSU1BfSEFORExF
IEtSU1BIYW5kbGUsCiAgICAgICAgIENTU01fQ0NfSEFORExFIEtSRW5hYmxlbWVudENvbnRleHRI
YW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ09OVEVYVCAqS1JFbmFibGVtZW50Q29udGV4dCwK
ICAgICAgICAgQ1NTTV9DQ19IQU5ETEUgQ3J5cHRvQ29udGV4dEhhbmRsZSwKICAgICAgICAgY29u
c3QgQ1NTTV9DT05URVhUICpDcnlwdG9Db250ZXh0LAogICAgICAgICBjb25zdCBDU1NNX0RBVEEg
KktSU1BPcHRpb25zLAogICAgICAgICBDU1NNX0tSX1BPTElDWV9GTEFHUyBLUkZsYWdzLAogICAg
ICAgICBjb25zdCBDU1NNX0RBVEEgKktSRmllbGRzKTsKICAgIENTU01fUkVUVVJOICggKlJlY292
ZXJ5UmVxdWVzdCkKICAgICAgICAoQ1NTTV9LUlNQX0hBTkRMRSBLUlNQSGFuZGxlLAogICAgICAg
ICBDU1NNX0NDX0hBTkRMRSBLUlJlcXVlc3RDb250ZXh0SGFuZGxlLAogICAgICAgICBjb25zdCBD
U1NNX0NPTlRFWFQgKktSUmVxdWVzdENvbnRleHQsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAq
S1JJbkRhdGEsCiAgICAgICAgIGNvbnN0IENTU01fQUNDRVNTX0NSRURFTlRJQUxTICpBY2Nlc3ND
cmVkZW50aWFscywKICAgICAgICAgc2ludDMyICpFc3RpbWF0ZWRUaW1lLAogICAgICAgICBDU1NN
X0hBTkRMRV9QVFIgUmVmZXJlbmNlSGFuZGxlKTsKICAgIENTU01fUkVUVVJOICggKlJlY292ZXJ5
UmV0cmlldmUpCiAgICAgICAgKENTU01fS1JTUF9IQU5ETEUgS1JTUEhhbmRsZSwKICAgICAgICAg
Q1NTTV9IQU5ETEUgUmVmZXJlbmNlSGFuZGxlLAogICAgICAgICBzaW50MzIgKkVzdGltYXRlZFRp
bWUsCiAgICAgICAgIENTU01fSEFORExFX1BUUiBDYWNoZUhhbmRsZSwKICAgICAgICAgdWludDMy
ICpOdW1iZXJPZlJlY292ZXJlZEtleXMpOwogICAgQ1NTTV9SRVRVUk4gKCAqR2V0UmVjb3ZlcmVk
T2JqZWN0KQogICAgICAgIChDU1NNX0tSU1BfSEFORExFIEtSU1BIYW5kbGUsCiAgICAgICAgIENT
U01fSEFORExFIENhY2hlSGFuZGxlLAogICAgICAgICB1aW50MzIgSW5kZXhJblJlc3VsdHMsCiAg
ICAgICAgIENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fUkVT
T1VSQ0VfQ09OVFJPTF9DT05URVhUICpDcmVkQW5kQWNsRW50cnksCiAgICAgICAgIHVpbnQzMiBG
bGFncywKICAgICAgICAgQ1NTTV9LRVlfUFRSIFJlY292ZXJlZEtleSwKICAgICAgICAgQ1NTTV9E
QVRBX1BUUiBPdGhlckluZm8pOwogICAgQ1NTTV9SRVRVUk4gKCAqUmVjb3ZlcnlSZXF1ZXN0QWJv
cnQpCiAgICAgICAgKENTU01fS1JTUF9IQU5ETEUgS1JTUEhhbmRsZSwKICAgICAgICAgQ1NTTV9I
QU5ETEUgUmVzdWx0c0hhbmRsZSk7CiAgICBDU1NNX1JFVFVSTiAoICpQYXNzVGhyb3VnaCkKICAg
ICAgICAoQ1NTTV9LUlNQX0hBTkRMRSBLUlNQSGFuZGxlLAogICAgICAgICBDU1NNX0NDX0hBTkRM
RSBLZXlSZWNvdmVyeUNvbnRleHRIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ09OVEVYVCAq
S2V5UmVjb3ZlcnlDb250ZXh0LAogICAgICAgICBDU1NNX0NDX0hBTkRMRSBDcnlwdG9Db250ZXh0
SGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0NPTlRFWFQgKkNyeXB0b0NvbnRleHQsCiAgICAg
ICAgIHVpbnQzMiBQYXNzVGhyb3VnaElkLAogICAgICAgICBjb25zdCB2b2lkICpJbnB1dFBhcmFt
cywKICAgICAgICAgdm9pZCAqKk91dHB1dFBhcmFtcyk7Cn0gQ1NTTV9TUElfS1JfRlVOQ1MsICpD
U1NNX1NQSV9LUl9GVU5DU19QVFI7CgoKfQojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cml0eS5oIiAyIDMKCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvY3NzbXRwaS5o
IiAxIDMKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3Jr
L0hlYWRlcnMvY3NzbXRwaS5oIiAzCiNkZWZpbmUgX0NTU01UUElfSF8gMQoKCgoKZXh0ZXJuICJD
IiB7CgoKdHlwZWRlZiBzdHJ1Y3QgY3NzbV9zcGlfdHBfZnVuY3MgewogICAgQ1NTTV9SRVRVUk4g
KCAqU3VibWl0Q3JlZFJlcXVlc3QpCiAgICAgICAgKENTU01fVFBfSEFORExFIFRQSGFuZGxlLAog
ICAgICAgICBjb25zdCBDU1NNX1RQX0FVVEhPUklUWV9JRCAqUHJlZmVycmVkQXV0aG9yaXR5LAog
ICAgICAgICBDU1NNX1RQX0FVVEhPUklUWV9SRVFVRVNUX1RZUEUgUmVxdWVzdFR5cGUsCiAgICAg
ICAgIGNvbnN0IENTU01fVFBfUkVRVUVTVF9TRVQgKlJlcXVlc3RJbnB1dCwKICAgICAgICAgY29u
c3QgQ1NTTV9UUF9DQUxMRVJBVVRIX0NPTlRFWFQgKkNhbGxlckF1dGhDb250ZXh0LAogICAgICAg
ICBzaW50MzIgKkVzdGltYXRlZFRpbWUsCiAgICAgICAgIENTU01fREFUQV9QVFIgUmVmZXJlbmNl
SWRlbnRpZmllcik7CiAgICBDU1NNX1JFVFVSTiAoICpSZXRyaWV2ZUNyZWRSZXN1bHQpCiAgICAg
ICAgKENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKlJl
ZmVyZW5jZUlkZW50aWZpZXIsCiAgICAgICAgIGNvbnN0IENTU01fVFBfQ0FMTEVSQVVUSF9DT05U
RVhUICpDYWxsZXJBdXRoQ3JlZGVudGlhbHMsCiAgICAgICAgIHNpbnQzMiAqRXN0aW1hdGVkVGlt
ZSwKICAgICAgICAgQ1NTTV9CT09MICpDb25maXJtYXRpb25SZXF1aXJlZCwKICAgICAgICAgQ1NT
TV9UUF9SRVNVTFRfU0VUX1BUUiAqUmV0cmlldmVPdXRwdXQpOwogICAgQ1NTTV9SRVRVUk4gKCAq
Q29uZmlybUNyZWRSZXN1bHQpCiAgICAgICAgKENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAg
ICAgICBjb25zdCBDU1NNX0RBVEEgKlJlZmVyZW5jZUlkZW50aWZpZXIsCiAgICAgICAgIGNvbnN0
IENTU01fVFBfQ0FMTEVSQVVUSF9DT05URVhUICpDYWxsZXJBdXRoQ3JlZGVudGlhbHMsCiAgICAg
ICAgIGNvbnN0IENTU01fVFBfQ09ORklSTV9SRVNQT05TRSAqUmVzcG9uc2VzLAogICAgICAgICBj
b25zdCBDU1NNX1RQX0FVVEhPUklUWV9JRCAqUHJlZmVycmVkQXV0aG9yaXR5KTsKICAgIENTU01f
UkVUVVJOICggKlJlY2VpdmVDb25maXJtYXRpb24pCiAgICAgICAgKENTU01fVFBfSEFORExFIFRQ
SGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKlJlZmVyZW5jZUlkZW50aWZpZXIsCiAg
ICAgICAgIENTU01fVFBfQ09ORklSTV9SRVNQT05TRV9QVFIgKlJlc3BvbnNlcywKICAgICAgICAg
c2ludDMyICpFbGFwc2VkVGltZSk7CiAgICBDU1NNX1JFVFVSTiAoICpDZXJ0UmVjbGFpbUtleSkK
ICAgICAgICAoQ1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ0VS
VEdST1VQICpDZXJ0R3JvdXAsCiAgICAgICAgIHVpbnQzMiBDZXJ0SW5kZXgsCiAgICAgICAgIENT
U01fTE9OR19IQU5ETEUgS2V5Q2FjaGVIYW5kbGUsCiAgICAgICAgIENTU01fQ1NQX0hBTkRMRSBD
U1BIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fUkVTT1VSQ0VfQ09OVFJPTF9DT05URVhUICpD
cmVkQW5kQWNsRW50cnkpOwogICAgQ1NTTV9SRVRVUk4gKCAqQ2VydFJlY2xhaW1BYm9ydCkKICAg
ICAgICAoQ1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUsCiAgICAgICAgIENTU01fTE9OR19IQU5ETEUg
S2V5Q2FjaGVIYW5kbGUpOwogICAgQ1NTTV9SRVRVUk4gKCAqRm9ybVJlcXVlc3QpCiAgICAgICAg
KENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX1RQX0FVVEhPUklU
WV9JRCAqUHJlZmVycmVkQXV0aG9yaXR5LAogICAgICAgICBDU1NNX1RQX0ZPUk1fVFlQRSBGb3Jt
VHlwZSwKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBCbGFua0Zvcm0pOwogICAgQ1NTTV9SRVRVUk4g
KCAqRm9ybVN1Ym1pdCkKICAgICAgICAoQ1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUsCiAgICAgICAg
IENTU01fVFBfRk9STV9UWVBFIEZvcm1UeXBlLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkZv
cm0sCiAgICAgICAgIGNvbnN0IENTU01fVFBfQVVUSE9SSVRZX0lEICpDbGVhcmFuY2VBdXRob3Jp
dHksCiAgICAgICAgIGNvbnN0IENTU01fVFBfQVVUSE9SSVRZX0lEICpSZXByZXNlbnRlZEF1dGhv
cml0eSwKICAgICAgICAgQ1NTTV9BQ0NFU1NfQ1JFREVOVElBTFNfUFRSIENyZWRlbnRpYWxzKTsK
ICAgIENTU01fUkVUVVJOICggKkNlcnRHcm91cFZlcmlmeSkKICAgICAgICAoQ1NTTV9UUF9IQU5E
TEUgVFBIYW5kbGUsCiAgICAgICAgIENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICBD
U1NNX0NTUF9IQU5ETEUgQ1NQSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0NFUlRHUk9VUCAq
Q2VydEdyb3VwVG9CZVZlcmlmaWVkLAogICAgICAgICBjb25zdCBDU1NNX1RQX1ZFUklGWV9DT05U
RVhUICpWZXJpZnlDb250ZXh0LAogICAgICAgICBDU1NNX1RQX1ZFUklGWV9DT05URVhUX1JFU1VM
VF9QVFIgVmVyaWZ5Q29udGV4dFJlc3VsdCk7CiAgICBDU1NNX1JFVFVSTiAoICpDZXJ0Q3JlYXRl
VGVtcGxhdGUpCiAgICAgICAgKENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAgICAgICBDU1NN
X0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgdWludDMyIE51bWJlck9mRmllbGRzLAogICAg
ICAgICBjb25zdCBDU1NNX0ZJRUxEICpDZXJ0RmllbGRzLAogICAgICAgICBDU1NNX0RBVEFfUFRS
IENlcnRUZW1wbGF0ZSk7CiAgICBDU1NNX1JFVFVSTiAoICpDZXJ0R2V0QWxsVGVtcGxhdGVGaWVs
ZHMpCiAgICAgICAgKENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAgICAgICBDU1NNX0NMX0hB
TkRMRSBDTEhhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpDZXJ0VGVtcGxhdGUsCiAg
ICAgICAgIHVpbnQzMiAqTnVtYmVyT2ZGaWVsZHMsCiAgICAgICAgIENTU01fRklFTERfUFRSICpD
ZXJ0RmllbGRzKTsKICAgIENTU01fUkVUVVJOICggKkNlcnRTaWduKQogICAgICAgIChDU1NNX1RQ
X0hBTkRMRSBUUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAg
ICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKkNl
cnRUZW1wbGF0ZVRvQmVTaWduZWQsCiAgICAgICAgIGNvbnN0IENTU01fQ0VSVEdST1VQICpTaWdu
ZXJDZXJ0R3JvdXAsCiAgICAgICAgIGNvbnN0IENTU01fVFBfVkVSSUZZX0NPTlRFWFQgKlNpZ25l
clZlcmlmeUNvbnRleHQsCiAgICAgICAgIENTU01fVFBfVkVSSUZZX0NPTlRFWFRfUkVTVUxUX1BU
UiBTaWduZXJWZXJpZnlSZXN1bHQsCiAgICAgICAgIENTU01fREFUQV9QVFIgU2lnbmVkQ2VydCk7
CiAgICBDU1NNX1JFVFVSTiAoICpDcmxWZXJpZnkpCiAgICAgICAgKENTU01fVFBfSEFORExFIFRQ
SGFuZGxlLAogICAgICAgICBDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgQ1NTTV9D
U1BfSEFORExFIENTUEhhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9FTkNPREVEX0NSTCAqQ3Js
VG9CZVZlcmlmaWVkLAogICAgICAgICBjb25zdCBDU1NNX0NFUlRHUk9VUCAqU2lnbmVyQ2VydEdy
b3VwLAogICAgICAgICBjb25zdCBDU1NNX1RQX1ZFUklGWV9DT05URVhUICpWZXJpZnlDb250ZXh0
LAogICAgICAgICBDU1NNX1RQX1ZFUklGWV9DT05URVhUX1JFU1VMVF9QVFIgUmV2b2tlclZlcmlm
eVJlc3VsdCk7CiAgICBDU1NNX1JFVFVSTiAoICpDcmxDcmVhdGVUZW1wbGF0ZSkKICAgICAgICAo
Q1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUsCiAgICAgICAgIENTU01fQ0xfSEFORExFIENMSGFuZGxl
LAogICAgICAgICB1aW50MzIgTnVtYmVyT2ZGaWVsZHMsCiAgICAgICAgIGNvbnN0IENTU01fRklF
TEQgKkNybEZpZWxkcywKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBOZXdDcmxUZW1wbGF0ZSk7CiAg
ICBDU1NNX1JFVFVSTiAoICpDZXJ0UmV2b2tlKQogICAgICAgIChDU1NNX1RQX0hBTkRMRSBUUEhh
bmRsZSwKICAgICAgICAgQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgIENTU01fQ1NQ
X0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fREFUQSAqT2xkQ3JsVGVtcGxh
dGUsCiAgICAgICAgIGNvbnN0IENTU01fQ0VSVEdST1VQICpDZXJ0R3JvdXBUb0JlUmV2b2tlZCwK
ICAgICAgICAgY29uc3QgQ1NTTV9DRVJUR1JPVVAgKlJldm9rZXJDZXJ0R3JvdXAsCiAgICAgICAg
IGNvbnN0IENTU01fVFBfVkVSSUZZX0NPTlRFWFQgKlJldm9rZXJWZXJpZnlDb250ZXh0LAogICAg
ICAgICBDU1NNX1RQX1ZFUklGWV9DT05URVhUX1JFU1VMVF9QVFIgUmV2b2tlclZlcmlmeVJlc3Vs
dCwKICAgICAgICAgQ1NTTV9UUF9DRVJUQ0hBTkdFX1JFQVNPTiBSZWFzb24sCiAgICAgICAgIENT
U01fREFUQV9QVFIgTmV3Q3JsVGVtcGxhdGUpOwogICAgQ1NTTV9SRVRVUk4gKCAqQ2VydFJlbW92
ZUZyb21DcmxUZW1wbGF0ZSkKICAgICAgICAoQ1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUsCiAgICAg
ICAgIENTU01fQ0xfSEFORExFIENMSGFuZGxlLAogICAgICAgICBDU1NNX0NTUF9IQU5ETEUgQ1NQ
SGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0RBVEEgKk9sZENybFRlbXBsYXRlLAogICAgICAg
ICBjb25zdCBDU1NNX0NFUlRHUk9VUCAqQ2VydEdyb3VwVG9CZVJlbW92ZWQsCiAgICAgICAgIGNv
bnN0IENTU01fQ0VSVEdST1VQICpSZXZva2VyQ2VydEdyb3VwLAogICAgICAgICBjb25zdCBDU1NN
X1RQX1ZFUklGWV9DT05URVhUICpSZXZva2VyVmVyaWZ5Q29udGV4dCwKICAgICAgICAgQ1NTTV9U
UF9WRVJJRllfQ09OVEVYVF9SRVNVTFRfUFRSIFJldm9rZXJWZXJpZnlSZXN1bHQsCiAgICAgICAg
IENTU01fREFUQV9QVFIgTmV3Q3JsVGVtcGxhdGUpOwogICAgQ1NTTV9SRVRVUk4gKCAqQ3JsU2ln
bikKICAgICAgICAoQ1NTTV9UUF9IQU5ETEUgVFBIYW5kbGUsCiAgICAgICAgIENTU01fQ0xfSEFO
RExFIENMSGFuZGxlLAogICAgICAgICBDU1NNX0NDX0hBTkRMRSBDQ0hhbmRsZSwKICAgICAgICAg
Y29uc3QgQ1NTTV9FTkNPREVEX0NSTCAqQ3JsVG9CZVNpZ25lZCwKICAgICAgICAgY29uc3QgQ1NT
TV9DRVJUR1JPVVAgKlNpZ25lckNlcnRHcm91cCwKICAgICAgICAgY29uc3QgQ1NTTV9UUF9WRVJJ
RllfQ09OVEVYVCAqU2lnbmVyVmVyaWZ5Q29udGV4dCwKICAgICAgICAgQ1NTTV9UUF9WRVJJRllf
Q09OVEVYVF9SRVNVTFRfUFRSIFNpZ25lclZlcmlmeVJlc3VsdCwKICAgICAgICAgQ1NTTV9EQVRB
X1BUUiBTaWduZWRDcmwpOwogICAgQ1NTTV9SRVRVUk4gKCAqQXBwbHlDcmxUb0RiKQogICAgICAg
IChDU1NNX1RQX0hBTkRMRSBUUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DTF9IQU5ETEUgQ0xIYW5k
bGUsCiAgICAgICAgIENTU01fQ1NQX0hBTkRMRSBDU1BIYW5kbGUsCiAgICAgICAgIGNvbnN0IENT
U01fRU5DT0RFRF9DUkwgKkNybFRvQmVBcHBsaWVkLAogICAgICAgICBjb25zdCBDU1NNX0NFUlRH
Uk9VUCAqU2lnbmVyQ2VydEdyb3VwLAogICAgICAgICBjb25zdCBDU1NNX1RQX1ZFUklGWV9DT05U
RVhUICpBcHBseUNybFZlcmlmeUNvbnRleHQsCiAgICAgICAgIENTU01fVFBfVkVSSUZZX0NPTlRF
WFRfUkVTVUxUX1BUUiBBcHBseUNybFZlcmlmeVJlc3VsdCk7CiAgICBDU1NNX1JFVFVSTiAoICpD
ZXJ0R3JvdXBDb25zdHJ1Y3QpCiAgICAgICAgKENTU01fVFBfSEFORExFIFRQSGFuZGxlLAogICAg
ICAgICBDU1NNX0NMX0hBTkRMRSBDTEhhbmRsZSwKICAgICAgICAgQ1NTTV9DU1BfSEFORExFIENT
UEhhbmRsZSwKICAgICAgICAgY29uc3QgQ1NTTV9ETF9EQl9MSVNUICpEQkxpc3QsCiAgICAgICAg
IGNvbnN0IHZvaWQgKkNvbnN0cnVjdFBhcmFtcywKICAgICAgICAgY29uc3QgQ1NTTV9DRVJUR1JP
VVAgKkNlcnRHcm91cEZyYWcsCiAgICAgICAgIENTU01fQ0VSVEdST1VQX1BUUiAqQ2VydEdyb3Vw
KTsKICAgIENTU01fUkVUVVJOICggKkNlcnRHcm91cFBydW5lKQogICAgICAgIChDU1NNX1RQX0hB
TkRMRSBUUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAg
IGNvbnN0IENTU01fRExfREJfTElTVCAqREJMaXN0LAogICAgICAgICBjb25zdCBDU1NNX0NFUlRH
Uk9VUCAqT3JkZXJlZENlcnRHcm91cCwKICAgICAgICAgQ1NTTV9DRVJUR1JPVVBfUFRSICpQcnVu
ZWRDZXJ0R3JvdXApOwogICAgQ1NTTV9SRVRVUk4gKCAqQ2VydEdyb3VwVG9UdXBsZUdyb3VwKQog
ICAgICAgIChDU1NNX1RQX0hBTkRMRSBUUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DTF9IQU5ETEUg
Q0xIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fQ0VSVEdST1VQICpDZXJ0R3JvdXAsCiAgICAg
ICAgIENTU01fVFVQTEVHUk9VUF9QVFIgKlR1cGxlR3JvdXApOwogICAgQ1NTTV9SRVRVUk4gKCAq
VHVwbGVHcm91cFRvQ2VydEdyb3VwKQogICAgICAgIChDU1NNX1RQX0hBTkRMRSBUUEhhbmRsZSwK
ICAgICAgICAgQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAgICAgIGNvbnN0IENTU01fVFVQ
TEVHUk9VUCAqVHVwbGVHcm91cCwKICAgICAgICAgQ1NTTV9DRVJUR1JPVVBfUFRSICpDZXJ0VGVt
cGxhdGVzKTsKICAgIENTU01fUkVUVVJOICggKlBhc3NUaHJvdWdoKQogICAgICAgIChDU1NNX1RQ
X0hBTkRMRSBUUEhhbmRsZSwKICAgICAgICAgQ1NTTV9DTF9IQU5ETEUgQ0xIYW5kbGUsCiAgICAg
ICAgIENTU01fQ0NfSEFORExFIENDSGFuZGxlLAogICAgICAgICBjb25zdCBDU1NNX0RMX0RCX0xJ
U1QgKkRCTGlzdCwKICAgICAgICAgdWludDMyIFBhc3NUaHJvdWdoSWQsCiAgICAgICAgIGNvbnN0
IHZvaWQgKklucHV0UGFyYW1zLAogICAgICAgICB2b2lkICoqT3V0cHV0UGFyYW1zKTsKfSBDU1NN
X1NQSV9UUF9GVU5DUywgKkNTU01fU1BJX1RQX0ZVTkNTX1BUUjsKCgp9CiMgMzggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5Lmgi
IDIgMwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsv
SGVhZGVycy9lbW1zcGkuaCIgMSAzCiMgMjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Nl
Y3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL2VtbXNwaS5oIiAzCiNkZWZpbmUgX0VNTVNQSV9IXyAx
CgoKCgpleHRlcm4gIkMiIHsKCgp0eXBlZGVmIHN0cnVjdCBjc3NtX3N0YXRlX2Z1bmNzIHsKICAg
IENTU01fUkVUVVJOICggKmNzc21fR2V0QXR0YWNoRnVuY3Rpb25zKQogICAgICAgIChDU1NNX01P
RFVMRV9IQU5ETEUgaEFkZEluLAogICAgICAgICBDU1NNX1NFUlZJQ0VfTUFTSyBBZGRpblR5cGUs
CiAgICAgICAgIHZvaWQgKipTUEZ1bmN0aW9ucywKICAgICAgICAgQ1NTTV9HVUlEX1BUUiBHdWlk
LAogIENTU01fQk9PTCAqU2VyaWFsaXplZCk7CiAgICBDU1NNX1JFVFVSTiAoICpjc3NtX1JlbGVh
c2VBdHRhY2hGdW5jdGlvbnMpCiAgICAgICAgKENTU01fTU9EVUxFX0hBTkRMRSBoQWRkSW4pOwog
ICAgQ1NTTV9SRVRVUk4gKCAqY3NzbV9HZXRBcHBNZW1vcnlGdW5jdGlvbnMpCiAgICAgICAgKENT
U01fTU9EVUxFX0hBTkRMRSBoQWRkSW4sCiAgICAgICAgIENTU01fVVBDQUxMU19QVFIgVXBjYWxs
VGFibGUpOwogICAgQ1NTTV9SRVRVUk4gKCAqY3NzbV9Jc0Z1bmNDYWxsVmFsaWQpCiAgICAgICAg
KENTU01fTU9EVUxFX0hBTkRMRSBoQWRkaW4sCiAgICAgICAgIENTU01fUFJPQ19BRERSIFNyY0Fk
ZHJlc3MsCiAgICAgICAgIENTU01fUFJPQ19BRERSIERlc3RBZGRyZXNzLAogICAgICAgICBDU1NN
X1BSSVZJTEVHRSBJblByaXYsCiAgICAgICAgIENTU01fUFJJVklMRUdFICpPdXRQcml2LAogICAg
ICAgICBDU1NNX0JJVE1BU0sgSGludHMsCiAgICAgICAgIENTU01fQk9PTCAqSXNPSyk7CiAgICBD
U1NNX1JFVFVSTiAoICpjc3NtX0RlcmVnaXN0ZXJNYW5hZ2VyU2VydmljZXMpCiAgICAgICAgKGNv
bnN0IENTU01fR1VJRCAqR1VJRCk7CiAgICBDU1NNX1JFVFVSTiAoICpjc3NtX0RlbGl2ZXJNb2R1
bGVNYW5hZ2VyRXZlbnQpCiAgICAgICAgKGNvbnN0IENTU01fTUFOQUdFUl9FVkVOVF9OT1RJRklD
QVRJT04gKkV2ZW50RGVzY3JpcHRpb24pOwp9IENTU01fU1RBVEVfRlVOQ1MsICpDU1NNX1NUQVRF
X0ZVTkNTX1BUUjsKCnR5cGVkZWYgc3RydWN0IGNzc21fbWFuYWdlcl9yZWdpc3RyYXRpb25faW5m
byB7CgogICAgQ1NTTV9SRVRVUk4gKCAqSW5pdGlhbGl6ZSkKICAgICAgICAodWludDMyIFZlck1h
am9yLAogICAgICAgICB1aW50MzIgVmVyTWlub3IpOwogICAgQ1NTTV9SRVRVUk4gKCAqVGVybWlu
YXRlKSAodm9pZCk7CiAgICBDU1NNX1JFVFVSTiAoICpSZWdpc3RlckRpc3BhdGNoVGFibGUpCiAg
ICAgICAgKENTU01fU1RBVEVfRlVOQ1NfUFRSIENzc21TdGF0ZUNhbGxUYWJsZSk7CiAgICBDU1NN
X1JFVFVSTiAoICpEZXJlZ2lzdGVyRGlzcGF0Y2hUYWJsZSkgKHZvaWQpOwogICAgQ1NTTV9SRVRV
Uk4gKCAqRXZlbnROb3RpZnlNYW5hZ2VyKQogICAgICAgIChjb25zdCBDU1NNX01BTkFHRVJfRVZF
TlRfTk9USUZJQ0FUSU9OICpFdmVudERlc2NyaXB0aW9uKTsKICAgIENTU01fUkVUVVJOICggKlJl
ZnJlc2hGdW5jdGlvblRhYmxlKQogICAgICAgIChDU1NNX0ZVTkNfTkFNRV9BRERSX1BUUiBGdW5j
TmFtZUFkZHJQdHIsCiAgICAgICAgIHVpbnQzMiBOdW1PZkZ1bmNOYW1lQWRkcik7Cn0gQ1NTTV9N
QU5BR0VSX1JFR0lTVFJBVElPTl9JTkZPLCAqQ1NTTV9NQU5BR0VSX1JFR0lTVFJBVElPTl9JTkZP
X1BUUjsKCmVudW0gewogQ1NTTV9ISU5UX05PTkUgPSAwLAogQ1NTTV9ISU5UX0FERFJFU1NfQVBQ
ID0gMSA8PCAwLAogQ1NTTV9ISU5UX0FERFJFU1NfU1AgPSAxIDw8IDEKfTsKCkNTU01fUkVUVVJO
Ck1vZHVsZU1hbmFnZXJBdXRoZW50aWNhdGUgKENTU01fS0VZX0hJRVJBUkNIWSBLZXlIaWVyYXJj
aHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fR1VJRCAqQ3NzbUd1aWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU01fR1VJRCAqQXBwR3VpZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTTV9NQU5BR0VSX1JFR0lTVFJBVElPTl9JTkZPX1BU
UiBGdW5jdGlvblRhYmxlKTsKCgp9CiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Nl
Y3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwoKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9tZHMuaCIgMSAzCiMg
MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJz
L21kcy5oIiAzCiNkZWZpbmUgX01EU19IXyAxCgoKCgpleHRlcm4gIkMiIHsKCgp0eXBlZGVmIENT
U01fRExfSEFORExFIE1EU19IQU5ETEU7Cgp0eXBlZGVmIENTU01fRExfREJfSEFORExFIE1EU19E
Ql9IQU5ETEU7Cgp0eXBlZGVmIHN0cnVjdCBtZHNfZnVuY3MgewogICAgQ1NTTV9SRVRVUk4gKCAq
RGJPcGVuKQogICAgICAgIChNRFNfSEFORExFIE1kc0hhbmRsZSwKICAgICAgICAgY29uc3QgY2hh
ciAqRGJOYW1lLAogICAgICAgICBjb25zdCBDU1NNX05FVF9BRERSRVNTICpEYkxvY2F0aW9uLAog
ICAgICAgICBDU1NNX0RCX0FDQ0VTU19UWVBFIEFjY2Vzc1JlcXVlc3QsCiAgICAgICAgIGNvbnN0
IENTU01fQUNDRVNTX0NSRURFTlRJQUxTICpBY2Nlc3NDcmVkLAogICAgICAgICBjb25zdCB2b2lk
ICpPcGVuUGFyYW1ldGVycywKICAgICAgICAgQ1NTTV9EQl9IQU5ETEUgKmhNZHMpOwoKICAgIENT
U01fUkVUVVJOICggKkRiQ2xvc2UpCiAgICAgICAgKE1EU19EQl9IQU5ETEUgTWRzRGJIYW5kbGUp
OwoKICAgIENTU01fUkVUVVJOICggKkdldERiTmFtZXMpCiAgICAgICAgKE1EU19IQU5ETEUgTWRz
SGFuZGxlLAogICAgICAgICBDU1NNX05BTUVfTElTVF9QVFIgKk5hbWVMaXN0KTsKCiAgICBDU1NN
X1JFVFVSTiAoICpHZXREYk5hbWVGcm9tSGFuZGxlKQogICAgICAgIChNRFNfREJfSEFORExFIE1k
c0RiSGFuZGxlLAogICAgICAgICBjaGFyICoqRGJOYW1lKTsKCiAgICBDU1NNX1JFVFVSTiAoICpG
cmVlTmFtZUxpc3QpCiAgICAgICAgKE1EU19IQU5ETEUgTWRzSGFuZGxlLAogICAgICAgICBDU1NN
X05BTUVfTElTVF9QVFIgTmFtZUxpc3QpOwoKICAgIENTU01fUkVUVVJOICggKkRhdGFJbnNlcnQp
CiAgICAgICAgKE1EU19EQl9IQU5ETEUgTWRzRGJIYW5kbGUsCiAgICAgICAgIENTU01fREJfUkVD
T1JEVFlQRSBSZWNvcmRUeXBlLAogICAgICAgICBjb25zdCBDU1NNX0RCX1JFQ09SRF9BVFRSSUJV
VEVfREFUQSAqQXR0cmlidXRlcywKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEYXRhLAogICAg
ICAgICBDU1NNX0RCX1VOSVFVRV9SRUNPUkRfUFRSICpVbmlxdWVJZCk7CgogICAgQ1NTTV9SRVRV
Uk4gKCAqRGF0YURlbGV0ZSkKICAgICAgICAoTURTX0RCX0hBTkRMRSBNZHNEYkhhbmRsZSwKICAg
ICAgICAgY29uc3QgQ1NTTV9EQl9VTklRVUVfUkVDT1JEICpVbmlxdWVSZWNvcmRJZGVudGlmaWVy
KTsKCiAgICBDU1NNX1JFVFVSTiAoICpEYXRhTW9kaWZ5KQogICAgICAgIChNRFNfREJfSEFORExF
IE1kc0RiSGFuZGxlLAogICAgICAgICBDU1NNX0RCX1JFQ09SRFRZUEUgUmVjb3JkVHlwZSwKICAg
ICAgICAgQ1NTTV9EQl9VTklRVUVfUkVDT1JEX1BUUiBVbmlxdWVSZWNvcmRJZGVudGlmaWVyLAog
ICAgICAgICBjb25zdCBDU1NNX0RCX1JFQ09SRF9BVFRSSUJVVEVfREFUQSAqQXR0cmlidXRlc1Rv
QmVNb2RpZmllZCwKICAgICAgICAgY29uc3QgQ1NTTV9EQVRBICpEYXRhVG9CZU1vZGlmaWVkLAog
ICAgICAgICBDU1NNX0RCX01PRElGWV9NT0RFIE1vZGlmeU1vZGUpOwoKICAgIENTU01fUkVUVVJO
ICggKkRhdGFHZXRGaXJzdCkKICAgICAgICAoTURTX0RCX0hBTkRMRSBNZHNEYkhhbmRsZSwKICAg
ICAgICAgY29uc3QgQ1NTTV9RVUVSWSAqUXVlcnksCiAgICAgICAgIENTU01fSEFORExFX1BUUiBS
ZXN1bHRzSGFuZGxlLAogICAgICAgICBDU1NNX0RCX1JFQ09SRF9BVFRSSUJVVEVfREFUQV9QVFIg
QXR0cmlidXRlcywKICAgICAgICAgQ1NTTV9EQVRBX1BUUiBEYXRhLAogICAgICAgICBDU1NNX0RC
X1VOSVFVRV9SRUNPUkRfUFRSICpVbmlxdWVJZCk7CgogICAgQ1NTTV9SRVRVUk4gKCAqRGF0YUdl
dE5leHQpCiAgICAgICAgKE1EU19EQl9IQU5ETEUgTWRzRGJIYW5kbGUsCiAgICAgICAgIENTU01f
SEFORExFIFJlc3VsdHNIYW5kbGUsCiAgICAgICAgIENTU01fREJfUkVDT1JEX0FUVFJJQlVURV9E
QVRBX1BUUiBBdHRyaWJ1dGVzLAogICAgICAgICBDU1NNX0RBVEFfUFRSIERhdGEsCiAgICAgICAg
IENTU01fREJfVU5JUVVFX1JFQ09SRF9QVFIgKlVuaXF1ZUlkKTsKCiAgICBDU1NNX1JFVFVSTiAo
ICpEYXRhQWJvcnRRdWVyeSkKICAgICAgICAoTURTX0RCX0hBTkRMRSBNZHNEYkhhbmRsZSwKICAg
ICAgICAgQ1NTTV9IQU5ETEUgUmVzdWx0c0hhbmRsZSk7CgogICAgQ1NTTV9SRVRVUk4gKCAqRGF0
YUdldEZyb21VbmlxdWVSZWNvcmRJZCkKICAgICAgICAoTURTX0RCX0hBTkRMRSBNZHNEYkhhbmRs
ZSwKICAgICAgICAgY29uc3QgQ1NTTV9EQl9VTklRVUVfUkVDT1JEICpVbmlxdWVSZWNvcmQsCiAg
ICAgICAgIENTU01fREJfUkVDT1JEX0FUVFJJQlVURV9EQVRBX1BUUiBBdHRyaWJ1dGVzLAogICAg
ICAgICBDU1NNX0RBVEFfUFRSIERhdGEpOwoKICAgIENTU01fUkVUVVJOICggKkZyZWVVbmlxdWVS
ZWNvcmQpCiAgICAgICAgKE1EU19EQl9IQU5ETEUgTWRzRGJIYW5kbGUsCiAgICAgICAgIENTU01f
REJfVU5JUVVFX1JFQ09SRF9QVFIgVW5pcXVlUmVjb3JkKTsKCiAgICBDU1NNX1JFVFVSTiAoICpD
cmVhdGVSZWxhdGlvbikKICAgICAgICAoTURTX0RCX0hBTkRMRSBNZHNEYkhhbmRsZSwKICAgICAg
ICAgQ1NTTV9EQl9SRUNPUkRUWVBFIFJlbGF0aW9uSUQsCiAgICAgICAgIGNvbnN0IGNoYXIgKlJl
bGF0aW9uTmFtZSwKICAgICAgICAgdWludDMyIE51bWJlck9mQXR0cmlidXRlcywKICAgICAgICAg
Y29uc3QgQ1NTTV9EQl9TQ0hFTUFfQVRUUklCVVRFX0lORk8gKnBBdHRyaWJ1dGVJbmZvLAogICAg
ICAgICB1aW50MzIgTnVtYmVyT2ZJbmRleGVzLAogICAgICAgICBjb25zdCBDU1NNX0RCX1NDSEVN
QV9JTkRFWF9JTkZPICpwSW5kZXhJbmZvKTsKCiAgICBDU1NNX1JFVFVSTiAoICpEZXN0cm95UmVs
YXRpb24pCiAgICAgICAgKE1EU19EQl9IQU5ETEUgTWRzRGJIYW5kbGUsCiAgICAgICAgIENTU01f
REJfUkVDT1JEVFlQRSBSZWxhdGlvbklEKTsKfSBNRFNfRlVOQ1MsICpNRFNfRlVOQ1NfUFRSOwoK
CgoKQ1NTTV9SRVRVUk4KTURTX0luaXRpYWxpemUgKGNvbnN0IENTU01fR1VJRCAqcENhbGxlckd1
aWQsCiAgICAgICAgICAgICAgICBjb25zdCBDU1NNX01FTU9SWV9GVU5DUyAqcE1lbW9yeUZ1bmN0
aW9ucywKICAgICAgICAgICAgICAgIE1EU19GVU5DU19QVFIgcERsRnVuY3Rpb25zLAogICAgICAg
ICAgICAgICAgTURTX0hBTkRMRSAqaE1kcyk7CgpDU1NNX1JFVFVSTgpNRFNfVGVybWluYXRlIChN
RFNfSEFORExFIE1kc0hhbmRsZSk7CgpDU1NNX1JFVFVSTgpNRFNfSW5zdGFsbCAoTURTX0hBTkRM
RSBNZHNIYW5kbGUpOwoKQ1NTTV9SRVRVUk4KTURTX1VuaW5zdGFsbCAoTURTX0hBTkRMRSBNZHNI
YW5kbGUpOwoKCn0KIyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJh
bWV3b3JrL0hlYWRlcnMvU2VjdXJpdHkuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvbWRzX3NjaGVtYS5oIiAxIDMKIyAyOCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvbWRz
X3NjaGVtYS5oIiAzCiNkZWZpbmUgX01EU19TQ0hFTUFfSF8gMQoKCgoKZXh0ZXJuICJDIiB7CgoK
CiNkZWZpbmUgTURTX09CSkVDVF9ESVJFQ1RPUllfTkFNRSAiTURTIE9iamVjdCBEaXJlY3Rvcnki
CiNkZWZpbmUgTURTX0NEU0FfRElSRUNUT1JZX05BTUUgIk1EUyBDRFNBIERpcmVjdG9yeSIKCgoj
ZGVmaW5lIENTU01fREJfUkVMQVRJT05JRF9NRFNfU1RBUlQgKDB4NDAwMDAwMDApCiNkZWZpbmUg
Q1NTTV9EQl9SRUxBVElPTklEX01EU19FTkQgKDB4NDAwMDQwMDApCgojZGVmaW5lIE1EU19PQkpF
Q1RfUkVDT1JEVFlQRSAoQ1NTTV9EQl9SRUxBVElPTklEX01EU19TVEFSVCkKCiNkZWZpbmUgTURT
X0NEU0FfU0NIRU1BX1NUQVJUIChNRFNfT0JKRUNUX1JFQ09SRFRZUEUpCiNkZWZpbmUgTURTX0NE
U0FESVJfQ1NTTV9SRUNPUkRUWVBFIChNRFNfQ0RTQV9TQ0hFTUFfU1RBUlQgKyAxKQojZGVmaW5l
IE1EU19DRFNBRElSX0tSTU1fUkVDT1JEVFlQRSAoTURTX0NEU0FfU0NIRU1BX1NUQVJUICsgMikK
I2RlZmluZSBNRFNfQ0RTQURJUl9FTU1fUkVDT1JEVFlQRSAoTURTX0NEU0FfU0NIRU1BX1NUQVJU
ICsgMykKI2RlZmluZSBNRFNfQ0RTQURJUl9DT01NT05fUkVDT1JEVFlQRSAoTURTX0NEU0FfU0NI
RU1BX1NUQVJUICsgNCkKI2RlZmluZSBNRFNfQ0RTQURJUl9DU1BfUFJJTUFSWV9SRUNPUkRUWVBF
IChNRFNfQ0RTQV9TQ0hFTUFfU1RBUlQgKyA1KQojZGVmaW5lIE1EU19DRFNBRElSX0NTUF9DQVBB
QklMSVRZX1JFQ09SRFRZUEUgKE1EU19DRFNBX1NDSEVNQV9TVEFSVCArIDYpCiNkZWZpbmUgTURT
X0NEU0FESVJfQ1NQX0VOQ0FQU1VMQVRFRF9QUk9EVUNUX1JFQ09SRFRZUEUgKE1EU19DRFNBX1ND
SEVNQV9TVEFSVCArIDcpCiNkZWZpbmUgTURTX0NEU0FESVJfQ1NQX1NDX0lORk9fUkVDT1JEVFlQ
RSAoTURTX0NEU0FfU0NIRU1BX1NUQVJUICsgOCkKI2RlZmluZSBNRFNfQ0RTQURJUl9ETF9QUklN
QVJZX1JFQ09SRFRZUEUgKE1EU19DRFNBX1NDSEVNQV9TVEFSVCArIDkpCiNkZWZpbmUgTURTX0NE
U0FESVJfRExfRU5DQVBTVUxBVEVEX1BST0RVQ1RfUkVDT1JEVFlQRSAoTURTX0NEU0FfU0NIRU1B
X1NUQVJUICsgMTApCiNkZWZpbmUgTURTX0NEU0FESVJfQ0xfUFJJTUFSWV9SRUNPUkRUWVBFIChN
RFNfQ0RTQV9TQ0hFTUFfU1RBUlQgKyAxMSkKI2RlZmluZSBNRFNfQ0RTQURJUl9DTF9FTkNBUFNV
TEFURURfUFJPRFVDVF9SRUNPUkRUWVBFIChNRFNfQ0RTQV9TQ0hFTUFfU1RBUlQgKyAxMikKI2Rl
ZmluZSBNRFNfQ0RTQURJUl9UUF9QUklNQVJZX1JFQ09SRFRZUEUgKE1EU19DRFNBX1NDSEVNQV9T
VEFSVCArIDEzKQojZGVmaW5lIE1EU19DRFNBRElSX1RQX09JRFNfUkVDT1JEVFlQRSAoTURTX0NE
U0FfU0NIRU1BX1NUQVJUICsgMTQpCiNkZWZpbmUgTURTX0NEU0FESVJfVFBfRU5DQVBTVUxBVEVE
X1BST0RVQ1RfUkVDT1JEVFlQRSAoTURTX0NEU0FfU0NIRU1BX1NUQVJUICsgMTUpCiNkZWZpbmUg
TURTX0NEU0FESVJfRU1NX1BSSU1BUllfUkVDT1JEVFlQRSAoTURTX0NEU0FfU0NIRU1BX1NUQVJU
ICsgMTYpCiNkZWZpbmUgTURTX0NEU0FESVJfQUNfUFJJTUFSWV9SRUNPUkRUWVBFIChNRFNfQ0RT
QV9TQ0hFTUFfU1RBUlQgKyAxNykKI2RlZmluZSBNRFNfQ0RTQURJUl9LUl9QUklNQVJZX1JFQ09S
RFRZUEUgKE1EU19DRFNBX1NDSEVNQV9TVEFSVCArIDE4KQojZGVmaW5lIE1EU19DRFNBRElSX01E
U19TQ0hFTUFfUkVMQVRJT05TIChNRFNfQ0RTQV9TQ0hFTUFfU1RBUlQgKyAxOSkKI2RlZmluZSBN
RFNfQ0RTQURJUl9NRFNfU0NIRU1BX0FUVFJJQlVURVMgKE1EU19DRFNBX1NDSEVNQV9TVEFSVCAr
IDIwKQojZGVmaW5lIE1EU19DRFNBRElSX01EU19TQ0hFTUFfSU5ERVhFUyAoTURTX0NEU0FfU0NI
RU1BX1NUQVJUICsgMjEpCgoKI2RlZmluZSBDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKDB4
NDAwMDAwMDApCiNkZWZpbmUgQ1NTTV9EQl9BVFRSSUJVVEVfTURTX0VORCAoMHg0MDAwNDAwMCkK
I2RlZmluZSBNRFNfQ0RTQUFUVFJfTU9EVUxFX0lEIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RB
UlQgKyAxKQojZGVmaW5lIE1EU19DRFNBQVRUUl9NQU5JRkVTVCAoQ1NTTV9EQl9BVFRSSUJVVEVf
TURTX1NUQVJUICsgMikKI2RlZmluZSBNRFNfQ0RTQUFUVFJfTU9EVUxFX05BTUUgKENTU01fREJf
QVRUUklCVVRFX01EU19TVEFSVCArIDMpCiNkZWZpbmUgTURTX0NEU0FBVFRSX1BBVEggKENTU01f
REJfQVRUUklCVVRFX01EU19TVEFSVCArIDQpCiNkZWZpbmUgTURTX0NEU0FBVFRSX0NEU0FWRVJT
SU9OIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyA1KQojZGVmaW5lIE1EU19DRFNBQVRU
Ul9WRU5ET1IgKENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDYpCiNkZWZpbmUgTURTX0NE
U0FBVFRSX0RFU0MgKENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDgpCiNkZWZpbmUgTURT
X0NEU0FBVFRSX0lOVEVSRkFDRV9HVUlEIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyA5
KQojZGVmaW5lIE1EU19DRFNBQVRUUl9QT0xJQ1lfU1RNVCAoQ1NTTV9EQl9BVFRSSUJVVEVfTURT
X1NUQVJUICsgMTApCiNkZWZpbmUgTURTX0NEU0FBVFRSX0VNTVNQRUNWRVJTSU9OIChDU1NNX0RC
X0FUVFJJQlVURV9NRFNfU1RBUlQgKyAxMSkKI2RlZmluZSBNRFNfQ0RTQUFUVFJfRU1NX1ZFUlNJ
T04gKENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDEyKQojZGVmaW5lIE1EU19DRFNBQVRU
Ul9FTU1fVkVORE9SIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyAxMykKI2RlZmluZSBN
RFNfQ0RTQUFUVFJfRU1NX1RZUEUgKENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDE0KQoj
ZGVmaW5lIE1EU19DRFNBQVRUUl9TU0lEIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyAx
NSkKI2RlZmluZSBNRFNfQ0RTQUFUVFJfU0VSVklDRV9UWVBFIChDU1NNX0RCX0FUVFJJQlVURV9N
RFNfU1RBUlQgKyAxNikKI2RlZmluZSBNRFNfQ0RTQUFUVFJfTkFUSVZFX1NFUlZJQ0VTIChDU1NN
X0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyAxNykKI2RlZmluZSBNRFNfQ0RTQUFUVFJfRFlOQU1J
Q19GTEFHIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyAxOCkKI2RlZmluZSBNRFNfQ0RT
QUFUVFJfTVVMVElUSFJFQURfRkxBRyAoQ1NTTV9EQl9BVFRSSUJVVEVfTURTX1NUQVJUICsgMTkp
CiNkZWZpbmUgTURTX0NEU0FBVFRSX1NFUlZJQ0VfTUFTSyAoQ1NTTV9EQl9BVFRSSUJVVEVfTURT
X1NUQVJUICsgMjApCiNkZWZpbmUgTURTX0NEU0FBVFRSX0NTUF9UWVBFIChDU1NNX0RCX0FUVFJJ
QlVURV9NRFNfU1RBUlQgKyAyMSkKI2RlZmluZSBNRFNfQ0RTQUFUVFJfQ1NQX0ZMQUdTIChDU1NN
X0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyAyMikKI2RlZmluZSBNRFNfQ0RTQUFUVFJfQ1NQX0NV
U1RPTUZMQUdTIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyAyMykKI2RlZmluZSBNRFNf
Q0RTQUFUVFJfVVNFRV9UQUdTIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyAyNCkKI2Rl
ZmluZSBNRFNfQ0RTQUFUVFJfQ09OVEVYVF9UWVBFIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RB
UlQgKyAyNSkKI2RlZmluZSBNRFNfQ0RTQUFUVFJfQUxHX1RZUEUgKENTU01fREJfQVRUUklCVVRF
X01EU19TVEFSVCArIDI2KQojZGVmaW5lIE1EU19DRFNBQVRUUl9HUk9VUF9JRCAoQ1NTTV9EQl9B
VFRSSUJVVEVfTURTX1NUQVJUICsgMjcpCiNkZWZpbmUgTURTX0NEU0FBVFRSX0FUVFJJQlVURV9U
WVBFIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyAyOCkKI2RlZmluZSBNRFNfQ0RTQUFU
VFJfQVRUUklCVVRFX1ZBTFVFIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyAyOSkKI2Rl
ZmluZSBNRFNfQ0RTQUFUVFJfUFJPRFVDVF9ERVNDIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RB
UlQgKyAzMCkKI2RlZmluZSBNRFNfQ0RTQUFUVFJfUFJPRFVDVF9WRU5ET1IgKENTU01fREJfQVRU
UklCVVRFX01EU19TVEFSVCArIDMxKQojZGVmaW5lIE1EU19DRFNBQVRUUl9QUk9EVUNUX1ZFUlNJ
T04gKENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDMyKQojZGVmaW5lIE1EU19DRFNBQVRU
Ul9QUk9EVUNUX0ZMQUdTIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyAzMykKI2RlZmlu
ZSBNRFNfQ0RTQUFUVFJfUFJPRFVDVF9DVVNUT01GTEFHUyAoQ1NTTV9EQl9BVFRSSUJVVEVfTURT
X1NUQVJUICsgMzQpCiNkZWZpbmUgTURTX0NEU0FBVFRSX1NUQU5EQVJEX0RFU0MgKENTU01fREJf
QVRUUklCVVRFX01EU19TVEFSVCArIDM1KQojZGVmaW5lIE1EU19DRFNBQVRUUl9TVEFOREFSRF9W
RVJTSU9OIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyAzNikKI2RlZmluZSBNRFNfQ0RT
QUFUVFJfUkVBREVSX0RFU0MgKENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDM3KQojZGVm
aW5lIE1EU19DRFNBQVRUUl9SRUFERVJfVkVORE9SIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RB
UlQgKyAzOCkKI2RlZmluZSBNRFNfQ0RTQUFUVFJfUkVBREVSX1ZFUlNJT04gKENTU01fREJfQVRU
UklCVVRFX01EU19TVEFSVCArIDM5KQojZGVmaW5lIE1EU19DRFNBQVRUUl9SRUFERVJfRldWRVJT
SU9OIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyA0MCkKI2RlZmluZSBNRFNfQ0RTQUFU
VFJfUkVBREVSX0ZMQUdTIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyA0MSkKI2RlZmlu
ZSBNRFNfQ0RTQUFUVFJfUkVBREVSX0NVU1RPTUZMQUdTIChDU1NNX0RCX0FUVFJJQlVURV9NRFNf
U1RBUlQgKyA0MikKI2RlZmluZSBNRFNfQ0RTQUFUVFJfUkVBREVSX1NFUklBTE5VTUJFUiAoQ1NT
TV9EQl9BVFRSSUJVVEVfTURTX1NUQVJUICsgNDMpCiNkZWZpbmUgTURTX0NEU0FBVFRSX1NDX0RF
U0MgKENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDQ0KQojZGVmaW5lIE1EU19DRFNBQVRU
Ul9TQ19WRU5ET1IgKENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDQ1KQojZGVmaW5lIE1E
U19DRFNBQVRUUl9TQ19WRVJTSU9OIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyA0NikK
I2RlZmluZSBNRFNfQ0RTQUFUVFJfU0NfRldWRVJTSU9OIChDU1NNX0RCX0FUVFJJQlVURV9NRFNf
U1RBUlQgKyA0NykKI2RlZmluZSBNRFNfQ0RTQUFUVFJfU0NfRkxBR1MgKENTU01fREJfQVRUUklC
VVRFX01EU19TVEFSVCArIDQ4KQojZGVmaW5lIE1EU19DRFNBQVRUUl9TQ19DVVNUT01GTEFHUyAo
Q1NTTV9EQl9BVFRSSUJVVEVfTURTX1NUQVJUICsgNDkpCiNkZWZpbmUgTURTX0NEU0FBVFRSX1ND
X1NFUklBTE5VTUJFUiAoQ1NTTV9EQl9BVFRSSUJVVEVfTURTX1NUQVJUICsgNTApCiNkZWZpbmUg
TURTX0NEU0FBVFRSX0RMX1RZUEUgKENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDUxKQoj
ZGVmaW5lIE1EU19DRFNBQVRUUl9RVUVSWV9MSU1JVFMgKENTU01fREJfQVRUUklCVVRFX01EU19T
VEFSVCArIDUyKQojZGVmaW5lIE1EU19DRFNBQVRUUl9DT05KVU5DVElWRV9PUFMgKENTU01fREJf
QVRUUklCVVRFX01EU19TVEFSVCArIDUzKQojZGVmaW5lIE1EU19DRFNBQVRUUl9SRUxBVElPTkFM
X09QUyAoQ1NTTV9EQl9BVFRSSUJVVEVfTURTX1NUQVJUICsgNTQpCiNkZWZpbmUgTURTX0NEU0FB
VFRSX1BST1RPQ09MIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyA1NSkKI2RlZmluZSBN
RFNfQ0RTQUFUVFJfQ0VSVF9UWVBFRk9STUFUIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQg
KyA1NikKI2RlZmluZSBNRFNfQ0RTQUFUVFJfQ1JMX1RZUEVGT1JNQVQgKENTU01fREJfQVRUUklC
VVRFX01EU19TVEFSVCArIDU3KQojZGVmaW5lIE1EU19DRFNBQVRUUl9DRVJUX0ZJRUxETkFNRVMg
KENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDU4KQojZGVmaW5lIE1EU19DRFNBQVRUUl9C
VU5ETEVfVFlQRUZPUk1BVCAoQ1NTTV9EQl9BVFRSSUJVVEVfTURTX1NUQVJUICsgNTkpCiNkZWZp
bmUgTURTX0NEU0FBVFRSX0NFUlRfQ0xBU1NOQU1FIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RB
UlQgKyA2MCkKI2RlZmluZSBNRFNfQ0RTQUFUVFJfUk9PVENFUlQgKENTU01fREJfQVRUUklCVVRF
X01EU19TVEFSVCArIDYxKQojZGVmaW5lIE1EU19DRFNBQVRUUl9ST09UQ0VSVF9UWVBFRk9STUFU
IChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyA2MikKI2RlZmluZSBNRFNfQ0RTQUFUVFJf
VkFMVUUgKENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDYzKQojZGVmaW5lIE1EU19DRFNB
QVRUUl9SRVFDUkVERU5USUFMUyAoQ1NTTV9EQl9BVFRSSUJVVEVfTURTX1NUQVJUICsgNjQpCiNk
ZWZpbmUgTURTX0NEU0FBVFRSX1NBTVBMRVRZUEVTIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RB
UlQgKyA2NSkKI2RlZmluZSBNRFNfQ0RTQUFUVFJfQUNMU1VCSkVDVFRZUEVTIChDU1NNX0RCX0FU
VFJJQlVURV9NRFNfU1RBUlQgKyA2NikKI2RlZmluZSBNRFNfQ0RTQUFUVFJfQVVUSFRBR1MgKENT
U01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDY3KQojZGVmaW5lIE1EU19DRFNBQVRUUl9VU0VF
VEFHIChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyA2OCkKI2RlZmluZSBNRFNfQ0RTQUFU
VFJfUkVUUklFVkFMTU9ERSAoQ1NTTV9EQl9BVFRSSUJVVEVfTURTX1NUQVJUICsgNjkpCiNkZWZp
bmUgTURTX0NEU0FBVFRSX09JRCAoQ1NTTV9EQl9BVFRSSUJVVEVfTURTX1NUQVJUICsgNzApCiNk
ZWZpbmUgTURTX0NEU0FBVFRSX1hMQVRJT05UWVBFRk9STUFUIChDU1NNX0RCX0FUVFJJQlVURV9N
RFNfU1RBUlQgKyA3MSkKI2RlZmluZSBNRFNfQ0RTQUFUVFJfREVGQVVMVF9URU1QTEFURV9UWVBF
IChDU1NNX0RCX0FUVFJJQlVURV9NRFNfU1RBUlQgKyA3MikKI2RlZmluZSBNRFNfQ0RTQUFUVFJf
VEVNUExBVEVfRklFTERfTkFNRVMgKENTU01fREJfQVRUUklCVVRFX01EU19TVEFSVCArIDczKQoj
ZGVmaW5lIE1EU19DRFNBQVRUUl9BVVRIT1JJVFlfUkVRVUVTVF9UWVBFIChDU1NNX0RCX0FUVFJJ
QlVURV9NRFNfU1RBUlQgKyA3NCkKCgojZGVmaW5lIE1EU19PQkpFQ1RfTlVNX1JFTEFUSU9OUyAo
MSkKI2RlZmluZSBNRFNfT0JKRUNUX05VTV9BVFRSSUJVVEVTICg0KQoKI2RlZmluZSBNRFNfQ0RT
QURJUl9OVU1fUkVMQVRJT05TICgxOSkKCiNkZWZpbmUgTURTX0NEU0FESVJfQ1NTTV9OVU1fQVRU
UklCVVRFUyAoNCkKCiNkZWZpbmUgTURTX0NEU0FESVJfRU1NX05VTV9BVFRSSUJVVEVTICgxMSkK
CiNkZWZpbmUgTURTX0NEU0FESVJfQ09NTU9OX05VTV9BVFRSSUJVVEVTICg5KQoKI2RlZmluZSBN
RFNfQ0RTQURJUl9DU1BfUFJJTUFSWV9OVU1fQVRUUklCVVRFUyAoMTMpCgojZGVmaW5lIE1EU19D
RFNBRElSX0NTUF9DQVBBQklMSVRZX05VTV9BVFRSSUJVVEVTICg5KQoKI2RlZmluZSBNRFNfQ0RT
QURJUl9DU1BfRU5DQVBTVUxBVEVEX1BST0RVQ1RfTlVNX0FUVFJJQlVURVMgKDE2KQoKI2RlZmlu
ZSBNRFNfQ0RTQURJUl9DU1BfU0NfSU5GT19OVU1fQVRUUklCVVRFUyAoOSkKCiNkZWZpbmUgTURT
X0NEU0FESVJfRExfUFJJTUFSWV9OVU1fQVRUUklCVVRFUyAoMTMpCgojZGVmaW5lIE1EU19DRFNB
RElSX0RMX0VOQ0FQU1VMQVRFRF9QUk9EVUNUX05VTV9BVFRSSUJVVEVTICgxMCkKCiNkZWZpbmUg
TURTX0NEU0FESVJfQ0xfUFJJTUFSWV9OVU1fQVRUUklCVVRFUyAoMTMpCgojZGVmaW5lIE1EU19D
RFNBRElSX0NMX0VOQ0FQU1VMQVRFRF9QUk9EVUNUX05VTV9BVFRSSUJVVEVTICg4KQoKI2RlZmlu
ZSBNRFNfQ0RTQURJUl9UUF9QUklNQVJZX05VTV9BVFRSSUJVVEVTICgxMCkKCiNkZWZpbmUgTURT
X0NEU0FESVJfVFBfT0lEU19OVU1fQVRUUklCVVRFUyAoNCkKCiNkZWZpbmUgTURTX0NEU0FESVJf
VFBfRU5DQVBTVUxBVEVEX1BST0RVQ1RfTlVNX0FUVFJJQlVURVMgKDE0KQoKI2RlZmluZSBNRFNf
Q0RTQURJUl9FTU1fUFJJTUFSWV9OVU1fQVRUUklCVVRFUyAoOSkKCiNkZWZpbmUgTURTX0NEU0FE
SVJfQUNfUFJJTUFSWV9OVU1fQVRUUklCVVRFUyAoNikKCiNkZWZpbmUgTURTX0NEU0FESVJfU0NI
RU1BX1JFTEFUT05TX05VTV9BVFRSSUJVVEVTICgyKQojZGVmaW5lIE1EU19DRFNBRElSX1NDSEVN
QV9BVFRSSUJVVEVTX05VTV9BVFRSSUJVVEVTICg2KQojZGVmaW5lIE1EU19DRFNBRElSX1NDSEVN
QV9JTkRFWEVTX05VTV9BVFRSSUJVVEVTICg1KQoKCn0KIyA0MyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHkuaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvb2lk
c2FsZy5oIiAxIDMKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJh
bWV3b3JrL0hlYWRlcnMvb2lkc2FsZy5oIiAzCiNkZWZpbmUgX09JRFNfQUxHX0hfIAoKCgoKZXh0
ZXJuICJDIiB7CgoKZXh0ZXJuIGNvbnN0IENTU01fT0lECiBDU1NNT0lEX01EMiwKIENTU01PSURf
TUQ0LAogQ1NTTU9JRF9NRDUsCiBDU1NNT0lEX1JTQSwKIENTU01PSURfTUQyV2l0aFJTQSwKIENT
U01PSURfTUQ0V2l0aFJTQSwKIENTU01PSURfTUQ1V2l0aFJTQSwKIENTU01PSURfU0hBMVdpdGhS
U0EsCiBDU1NNT0lEX1NIQTIyNFdpdGhSU0EsCiBDU1NNT0lEX1NIQTI1NldpdGhSU0EsCiBDU1NN
T0lEX1NIQTM4NFdpdGhSU0EsCiBDU1NNT0lEX1NIQTUxMldpdGhSU0EsCiBDU1NNT0lEX1NIQTFX
aXRoUlNBX09JVywKIENTU01PSURfUlNBV2l0aE9BRVAsCiBDU1NNT0lEX09BRVBfTUdGMSwKIENT
U01PSURfT0FFUF9JRF9QU1BFQ0lGSUVELAogQ1NTTU9JRF9ERVNfQ0JDLAogQ1NTTU9JRF9BTlNJ
X0RIX1BVQl9OVU1CRVIsCiBDU1NNT0lEX0FOU0lfREhfU1RBVElDLAogQ1NTTU9JRF9BTlNJX0RI
X09ORV9GTE9XLAogQ1NTTU9JRF9BTlNJX0RIX0VQSEVNLAogQ1NTTU9JRF9BTlNJX0RIX0hZQlJJ
RDEsCiBDU1NNT0lEX0FOU0lfREhfSFlCUklEMiwKIENTU01PSURfQU5TSV9ESF9IWUJSSURfT05F
RkxPVywKIENTU01PSURfQU5TSV9NUVYxLAogQ1NTTU9JRF9BTlNJX01RVjIsCiBDU1NNT0lEX0FO
U0lfREhfU1RBVElDX1NIQTEsCiBDU1NNT0lEX0FOU0lfREhfT05FX0ZMT1dfU0hBMSwKIENTU01P
SURfQU5TSV9ESF9FUEhFTV9TSEExLAogQ1NTTU9JRF9BTlNJX0RIX0hZQlJJRDFfU0hBMSwKIENT
U01PSURfQU5TSV9ESF9IWUJSSUQyX1NIQTEsCiBDU1NNT0lEX0FOU0lfTVFWMV9TSEExLAogQ1NT
TU9JRF9BTlNJX01RVjJfU0hBMSwKIENTU01PSURfUEtDUzMsCiBDU1NNT0lEX0RILAogQ1NTTU9J
RF9EU0EsCiBDU1NNT0lEX0RTQV9DTVMsCiBDU1NNT0lEX0RTQV9KREssCiBDU1NNT0lEX1NIQTFX
aXRoRFNBLAogQ1NTTU9JRF9TSEExV2l0aERTQV9DTVMsCiBDU1NNT0lEX1NIQTFXaXRoRFNBX0pE
SywKIENTU01PSURfU0hBMSwKIENTU01PSURfU0hBMjI0LAogQ1NTTU9JRF9TSEEyNTYsCiBDU1NN
T0lEX1NIQTM4NCwKIENTU01PSURfU0hBNTEyLAogQ1NTTU9JRF9lY1B1YmxpY0tleSwKIENTU01P
SURfRUNEU0FfV2l0aFNIQTEsCiBDU1NNT0lEX0VDRFNBX1dpdGhTSEEyMjQsCiBDU1NNT0lEX0VD
RFNBX1dpdGhTSEEyNTYsCiBDU1NNT0lEX0VDRFNBX1dpdGhTSEEzODQsCiBDU1NNT0lEX0VDRFNB
X1dpdGhTSEE1MTIsCiBDU1NNT0lEX0VDRFNBX1dpdGhTcGVjaWZpZWQsCiBDU1NNT0lEX0FQUExF
X0lTSUdOLAogQ1NTTU9JRF9BUFBMRV9YNTA5X0JBU0lDLAogQ1NTTU9JRF9BUFBMRV9UUF9TU0ws
CiBDU1NNT0lEX0FQUExFX1RQX0xPQ0FMX0NFUlRfR0VOLAogQ1NTTU9JRF9BUFBMRV9UUF9DU1Jf
R0VOLAogQ1NTTU9JRF9BUFBMRV9UUF9SRVZPQ0FUSU9OX0NSTCwKIENTU01PSURfQVBQTEVfVFBf
UkVWT0NBVElPTl9PQ1NQLAogQ1NTTU9JRF9BUFBMRV9UUF9TTUlNRSwKIENTU01PSURfQVBQTEVf
VFBfRUFQLAogQ1NTTU9JRF9BUFBMRV9UUF9DT0RFX1NJR04sCiBDU1NNT0lEX0FQUExFX1RQX1NX
X1VQREFURV9TSUdOSU5HLAogQ1NTTU9JRF9BUFBMRV9UUF9JUF9TRUMsCiBDU1NNT0lEX0FQUExF
X1RQX0lDSEFULAogQ1NTTU9JRF9BUFBMRV9UUF9SRVNPVVJDRV9TSUdOLAogQ1NTTU9JRF9BUFBM
RV9UUF9QS0lOSVRfQ0xJRU5ULAogQ1NTTU9JRF9BUFBMRV9UUF9QS0lOSVRfU0VSVkVSLAogQ1NT
TU9JRF9BUFBMRV9UUF9DT0RFX1NJR05JTkcsCiBDU1NNT0lEX0FQUExFX1RQX1BBQ0tBR0VfU0lH
TklORywKIENTU01PSURfQVBQTEVfRkVFLAogQ1NTTU9JRF9BUFBMRV9BU0MsCiBDU1NNT0lEX0FQ
UExFX0ZFRV9NRDUsCiBDU1NNT0lEX0FQUExFX0ZFRV9TSEExLAogQ1NTTU9JRF9BUFBMRV9GRUVE
LAogQ1NTTU9JRF9BUFBMRV9GRUVERVhQLAogQ1NTTU9JRF9BUFBMRV9FQ0RTQSwKIENTU01PSURf
RE9UTUFDX0NFUlQsCiBDU1NNT0lEX0RPVE1BQ19DRVJUX1JFUSwKIENTU01PSURfRE9UTUFDX0NF
UlRfUkVRX0lERU5USVRZLAogQ1NTTU9JRF9ET1RNQUNfQ0VSVF9SRVFfRU1BSUxfU0lHTiwKIENT
U01PSURfRE9UTUFDX0NFUlRfUkVRX0VNQUlMX0VOQ1JZUFQsCiBDU1NNT0lEX0RPVE1BQ19DRVJU
X1JFUV9BUkNISVZFX0xJU1QsCiBDU1NNT0lEX0RPVE1BQ19DRVJUX1JFUV9BUkNISVZFX1NUT1JF
LAogQ1NTTU9JRF9ET1RNQUNfQ0VSVF9SRVFfQVJDSElWRV9GRVRDSCwKIENTU01PSURfRE9UTUFD
X0NFUlRfUkVRX0FSQ0hJVkVfUkVNT1ZFLAogQ1NTTU9JRF9ET1RNQUNfQ0VSVF9SRVFfU0hBUkVE
X1NFUlZJQ0VTLAogQ1NTTU9JRF9ET1RNQUNfQ0VSVF9SRVFfVkFMVUVfVVNFUk5BTUUsCiBDU1NN
T0lEX0RPVE1BQ19DRVJUX1JFUV9WQUxVRV9QQVNTV09SRCwKIENTU01PSURfRE9UTUFDX0NFUlRf
UkVRX1ZBTFVFX0hPU1ROQU1FLAogQ1NTTU9JRF9ET1RNQUNfQ0VSVF9SRVFfVkFMVUVfUkVORVcs
CiBDU1NNT0lEX0RPVE1BQ19DRVJUX1JFUV9WQUxVRV9BU1lOQywKIENTU01PSURfRE9UTUFDX0NF
UlRfUkVRX1ZBTFVFX0lTX1BFTkRJTkcsCiBDU1NNT0lEX1BLQ1M1X0RJR0VTVF9BTEcsCiBDU1NN
T0lEX1BLQ1M1X0VOQ1JZUFRfQUxHLAogQ1NTTU9JRF9QS0NTNV9ITUFDX1NIQTEsCiBDU1NNT0lE
X1BLQ1M1X3BiZVdpdGhNRDJBbmRERVMsCiBDU1NNT0lEX1BLQ1M1X3BiZVdpdGhNRDJBbmRSQzIs
CiBDU1NNT0lEX1BLQ1M1X3BiZVdpdGhNRDVBbmRERVMsCiBDU1NNT0lEX1BLQ1M1X3BiZVdpdGhN
RDVBbmRSQzIsCiBDU1NNT0lEX1BLQ1M1X3BiZVdpdGhTSEExQW5kREVTLAogQ1NTTU9JRF9QS0NT
NV9wYmVXaXRoU0hBMUFuZFJDMiwKIENTU01PSURfUEtDUzVfUEJLREYyLAogQ1NTTU9JRF9QS0NT
NV9QQkVTMiwKIENTU01PSURfUEtDUzVfUEJNQUMxLAogQ1NTTU9JRF9QS0NTNV9SQzJfQ0JDLAog
Q1NTTU9JRF9QS0NTNV9ERVNfRURFM19DQkMsCiBDU1NNT0lEX1BLQ1M1X1JDNV9DQkMsCiBDU1NN
T0lEX1BLQ1MxMl9wYmVXaXRoU0hBQW5kMTI4Qml0UkM0LAogQ1NTTU9JRF9QS0NTMTJfcGJlV2l0
aFNIQUFuZDQwQml0UkM0LAogQ1NTTU9JRF9QS0NTMTJfcGJlV2l0aFNIQUFuZDNLZXkzREVTQ0JD
LAogQ1NTTU9JRF9QS0NTMTJfcGJlV2l0aFNIQUFuZDJLZXkzREVTQ0JDLAogQ1NTTU9JRF9QS0NT
MTJfcGJlV2l0aFNIQUFuZDEyOEJpdFJDMkNCQywKIENTU01PSURfUEtDUzEyX3BiZXdpdGhTSEFB
bmQ0MEJpdFJDMkNCQzsKCgp9CiMgNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL29pZHNhdHRyLmgiIDEgMwoj
IDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVy
cy9vaWRzYXR0ci5oIiAzCiNkZWZpbmUgX0NEU0FfT0lEU0FUVFJfSF8gCgoKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9vaWRzYmFzZS5o
IiAxIDMKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3Jr
L0hlYWRlcnMvb2lkc2Jhc2UuaCIgMwojZGVmaW5lIF9PSURTQkFTRV9IXyAxCgoKZXh0ZXJuICJD
IiB7CgoKCgojZGVmaW5lIElOVEVMIDk2LCAxMzQsIDcyLCAxLCAxMzQsIDI0OCwgNzcKI2RlZmlu
ZSBJTlRFTF9MRU5HVEggNwoKI2RlZmluZSBJTlRFTF9DRFNBU0VDVVJJVFkgSU5URUwsIDIKI2Rl
ZmluZSBJTlRFTF9DRFNBU0VDVVJJVFlfTEVOR1RIIChJTlRFTF9MRU5HVEggKyAxKQoKI2RlZmlu
ZSBJTlRFTF9TRUNfRk9STUFUUyBJTlRFTF9DRFNBU0VDVVJJVFksIDEKI2RlZmluZSBJTlRFTF9T
RUNfRk9STUFUU19MRU5HVEggKElOVEVMX0NEU0FTRUNVUklUWV9MRU5HVEggKyAxKQoKI2RlZmlu
ZSBJTlRFTF9TRUNfQUxHUyBJTlRFTF9DRFNBU0VDVVJJVFksIDIsIDUKI2RlZmluZSBJTlRFTF9T
RUNfQUxHU19MRU5HVEggKElOVEVMX0NEU0FTRUNVUklUWV9MRU5HVEggKyAyKQoKI2RlZmluZSBJ
TlRFTF9TRUNfT0JKRUNUX0JVTkRMRSBJTlRFTF9TRUNfRk9STUFUUywgNAojZGVmaW5lIElOVEVM
X1NFQ19PQkpFQ1RfQlVORExFX0xFTkdUSCAoSU5URUxfU0VDX0ZPUk1BVFNfTEVOR1RIICsgMSkK
CiNkZWZpbmUgSU5URUxfQ0VSVF9BTkRfUFJJVkFURV9LRVlfMl8wIElOVEVMX1NFQ19PQkpFQ1Rf
QlVORExFLCAxCiNkZWZpbmUgSU5URUxfQ0VSVF9BTkRfUFJJVkFURV9LRVlfMl8wX0xFTkdUSCAo
SU5URUxfU0VDX09CSkVDVF9CVU5ETEVfTEVOR1RIICsgMSkKCgoKCiNkZWZpbmUgSU5URUxfWDUw
OV9DX0RBVEFUWVBFIDEKI2RlZmluZSBJTlRFTF9YNTA5X0xEQVBTVFJJTkdfREFUQVRZUEUgMgoK
I2RlZmluZSBPSURfSVNPX0NDSVRUX0RJUl9TRVJWSUNFIDg1CiNkZWZpbmUgT0lEX0RTIE9JRF9J
U09fQ0NJVFRfRElSX1NFUlZJQ0UKI2RlZmluZSBPSURfRFNfTEVOR1RIIDEKI2RlZmluZSBPSURf
QVRUUl9UWVBFIE9JRF9EUywgNAojZGVmaW5lIE9JRF9BVFRSX1RZUEVfTEVOR1RIIE9JRF9EU19M
RU5HVEggKyAxCiNkZWZpbmUgT0lEX0VYVEVOU0lPTiBPSURfRFMsIDI5CiNkZWZpbmUgT0lEX0VY
VEVOU0lPTl9MRU5HVEggT0lEX0RTX0xFTkdUSCArIDEKI2RlZmluZSBPSURfSVNPX1NUQU5EQVJE
IDQwCiNkZWZpbmUgT0lEX0lTT19NRU1CRVIgNDIKI2RlZmluZSBPSURfVVMgT0lEX0lTT19NRU1C
RVIsIDEzNCwgNzIKCiNkZWZpbmUgT0lEX0lTT19JREVOVElGSUVEX09SRyA0MwojZGVmaW5lIE9J
RF9PU0lORVQgT0lEX0lTT19JREVOVElGSUVEX09SRywgNAojZGVmaW5lIE9JRF9HT1NJUCBPSURf
SVNPX0lERU5USUZJRURfT1JHLCA1CiNkZWZpbmUgT0lEX0RPRCBPSURfSVNPX0lERU5USUZJRURf
T1JHLCA2CiNkZWZpbmUgT0lEX09JVyBPSURfSVNPX0lERU5USUZJRURfT1JHLCAxNAoKI2RlZmlu
ZSBPSURfSVRVX1JGQ0RBVEFfTUVNQkVSX0xFTkdUSCAxCiNkZWZpbmUgT0lEX0lUVV9SRkNEQVRB
IDkKCgojZGVmaW5lIE9JRF9JU09fTUVNQkVSX0xFTkdUSCAxCiNkZWZpbmUgT0lEX1VTX0xFTkdU
SCBPSURfSVNPX01FTUJFUl9MRU5HVEggKyAyCiNkZWZpbmUgT0lEX1JTQSBPSURfVVMsIDEzNCwg
MjQ3LCAxMwojZGVmaW5lIE9JRF9SU0FfTEVOR1RIIE9JRF9VU19MRU5HVEggKyAzCiNkZWZpbmUg
T0lEX1JTQV9IQVNIIE9JRF9SU0EsIDIKI2RlZmluZSBPSURfUlNBX0hBU0hfTEVOR1RIIE9JRF9S
U0FfTEVOR1RIICsgMQojZGVmaW5lIE9JRF9SU0FfRU5DUllQVCBPSURfUlNBLCAzCiNkZWZpbmUg
T0lEX1JTQV9FTkNSWVBUX0xFTkdUSCBPSURfUlNBX0xFTkdUSCArIDEKI2RlZmluZSBPSURfUEtD
UyBPSURfUlNBLCAxCiNkZWZpbmUgT0lEX1BLQ1NfTEVOR1RIIE9JRF9SU0FfTEVOR1RIICsxCiNk
ZWZpbmUgT0lEX1BLQ1NfMSBPSURfUEtDUywgMQojZGVmaW5lIE9JRF9QS0NTXzFfTEVOR1RIIE9J
RF9QS0NTX0xFTkdUSCArMQojZGVmaW5lIE9JRF9QS0NTXzIgT0lEX1BLQ1MsIDIKI2RlZmluZSBP
SURfUEtDU18zIE9JRF9QS0NTLCAzCiNkZWZpbmUgT0lEX1BLQ1NfM19MRU5HVEggT0lEX1BLQ1Nf
TEVOR1RIICsxCiNkZWZpbmUgT0lEX1BLQ1NfNCBPSURfUEtDUywgNAojZGVmaW5lIE9JRF9QS0NT
XzUgT0lEX1BLQ1MsIDUKI2RlZmluZSBPSURfUEtDU181X0xFTkdUSCBPSURfUEtDU19MRU5HVEgg
KzEKI2RlZmluZSBPSURfUEtDU182IE9JRF9QS0NTLCA2CiNkZWZpbmUgT0lEX1BLQ1NfNyBPSURf
UEtDUywgNwojZGVmaW5lIE9JRF9QS0NTXzdfTEVOR1RIIE9JRF9QS0NTX0xFTkdUSCArMQojZGVm
aW5lIE9JRF9QS0NTXzggT0lEX1BLQ1MsIDgKI2RlZmluZSBPSURfUEtDU185IE9JRF9QS0NTLCA5
CiNkZWZpbmUgT0lEX1BLQ1NfOV9MRU5HVEggT0lEX1BLQ1NfTEVOR1RIICsxCiNkZWZpbmUgT0lE
X1BLQ1NfMTAgT0lEX1BLQ1MsIDEwCiNkZWZpbmUgT0lEX1BLQ1NfMTEgT0lEX1BLQ1MsIDExCiNk
ZWZpbmUgT0lEX1BLQ1NfMTFfTEVOR1RIIE9JRF9QS0NTX0xFTkdUSCArMQojZGVmaW5lIE9JRF9Q
S0NTXzEyIE9JRF9QS0NTLCAxMgojZGVmaW5lIE9JRF9QS0NTXzEyX0xFTkdUSCBPSURfUEtDU19M
RU5HVEggKzEKCgojZGVmaW5lIE9JRF9BTlNJX1g5XzQyIE9JRF9VUywgMjA2LCA2MiwgMgojZGVm
aW5lIE9JRF9BTlNJX1g5XzQyX0xFTiBPSURfVVNfTEVOR1RIICsgMwojZGVmaW5lIE9JRF9BTlNJ
X1g5XzQyX1NDSEVNRSBPSURfQU5TSV9YOV80MiwgMwojZGVmaW5lIE9JRF9BTlNJX1g5XzQyX1ND
SEVNRV9MRU4gT0lEX0FOU0lfWDlfNDJfTEVOICsgMQojZGVmaW5lIE9JRF9BTlNJX1g5XzQyX05B
TUVEX1NDSEVNRSBPSURfQU5TSV9YOV80MiwgNAojZGVmaW5lIE9JRF9BTlNJX1g5XzQyX05BTUVE
X1NDSEVNRV9MRU4gT0lEX0FOU0lfWDlfNDJfTEVOICsgMQoKCiNkZWZpbmUgT0lEX0FOU0lfWDlf
NjIgMHgyQSwgMHg4NiwgMHg0OCwgMHhDRSwgMHgzRAojZGVmaW5lIE9JRF9BTlNJX1g5XzYyX0xF
TiA1CiNkZWZpbmUgT0lEX0FOU0lfWDlfNjJfRklFTERfVFlQRSBPSURfQU5TSV9YOV82MiwgMQoj
ZGVmaW5lIE9JRF9BTlNJX1g5XzYyX1BVQktFWV9UWVBFIE9JRF9BTlNJX1g5XzYyLCAyCiNkZWZp
bmUgT0lEX0FOU0lfWDlfNjJfRUxMX0NVUlZFIE9JRF9BTlNJX1g5XzYyLCAzCiNkZWZpbmUgT0lE
X0FOU0lfWDlfNjJfRUxMX0NVUlZFX0xFTiBPSURfQU5TSV9YOV82Ml9MRU4rMQojZGVmaW5lIE9J
RF9BTlNJX1g5XzYyX0NfVFdPX0NVUlZFIE9JRF9BTlNJX1g5XzYyX0VMTF9DVVJWRSwgMAojZGVm
aW5lIE9JRF9BTlNJX1g5XzYyX1BSSU1FX0NVUlZFIE9JRF9BTlNJX1g5XzYyX0VMTF9DVVJWRSwg
MQojZGVmaW5lIE9JRF9BTlNJX1g5XzYyX1NJR19UWVBFIE9JRF9BTlNJX1g5XzYyLCA0CiNkZWZp
bmUgT0lEX0FOU0lfWDlfNjJfU0lHX1RZUEVfTEVOIE9JRF9BTlNJX1g5XzYyX0xFTisxCgoKI2Rl
ZmluZSBPSURfUEtJWCBPSURfRE9ELCAxLCA1LCA1LCA3CiNkZWZpbmUgT0lEX1BLSVhfTEVOR1RI
IDYKI2RlZmluZSBPSURfUEUgT0lEX1BLSVgsIDEKI2RlZmluZSBPSURfUEVfTEVOR1RIIE9JRF9Q
S0lYX0xFTkdUSCArIDEKI2RlZmluZSBPSURfUVQgT0lEX1BLSVgsIDIKI2RlZmluZSBPSURfUVRf
TEVOR1RIIE9JRF9QS0lYX0xFTkdUSCArIDEKI2RlZmluZSBPSURfS1AgT0lEX1BLSVgsIDMKI2Rl
ZmluZSBPSURfS1BfTEVOR1RIIE9JRF9QS0lYX0xFTkdUSCArIDEKI2RlZmluZSBPSURfT1RIRVJf
TkFNRSBPSURfUEtJWCwgOAojZGVmaW5lIE9JRF9PVEhFUl9OQU1FX0xFTkdUSCBPSURfUEtJWF9M
RU5HVEggKyAxCiNkZWZpbmUgT0lEX1BEQSBPSURfUEtJWCwgOQojZGVmaW5lIE9JRF9QREFfTEVO
R1RIIE9JRF9QS0lYX0xFTkdUSCArIDEKI2RlZmluZSBPSURfUUNTIE9JRF9QS0lYLCAxMQojZGVm
aW5lIE9JRF9RQ1NfTEVOR1RIIE9JRF9QS0lYX0xFTkdUSCArIDEKI2RlZmluZSBPSURfQUQgT0lE
X1BLSVgsIDQ4CiNkZWZpbmUgT0lEX0FEX0xFTkdUSCBPSURfUEtJWF9MRU5HVEggKyAxCiNkZWZp
bmUgT0lEX0FEX09DU1AgT0lEX0FELCAxCiNkZWZpbmUgT0lEX0FEX09DU1BfTEVOR1RIIE9JRF9B
RF9MRU5HVEggKyAxCgoKI2RlZmluZSBPSURfRVRTSSAweDA0LCAweDAwCiNkZWZpbmUgT0lEX0VU
U0lfTEVOR1RIIDIKI2RlZmluZSBPSURfRVRTSV9RQ1MgMHgwNCwgMHgwMCwgMHg4RSwgMHg0Niwg
MHgwMQojZGVmaW5lIE9JRF9FVFNJX1FDU19MRU5HVEggNQoKI2RlZmluZSBPSURfT0lXX1NFQ1NJ
RyBPSURfT0lXLCAzCiNkZWZpbmUgT0lEX09JV19MRU5HVEggMgojZGVmaW5lIE9JRF9PSVdfU0VD
U0lHX0xFTkdUSCBPSURfT0lXX0xFTkdUSCArMQoKI2RlZmluZSBPSURfT0lXX0FMR09SSVRITSBP
SURfT0lXX1NFQ1NJRywgMgojZGVmaW5lIE9JRF9PSVdfQUxHT1JJVEhNX0xFTkdUSCBPSURfT0lX
X1NFQ1NJR19MRU5HVEggKzEKCgojZGVmaW5lIE9JRF9OSVNUX0hBU0hBTEcgMHg2MCwgMHg4Niwg
MHg0OCwgMHgwMSwgMHg2NSwgMHgwMywgMHgwNCwgMHgwMgojZGVmaW5lIE9JRF9OSVNUX0hBU0hB
TEdfTEVOR1RIIDgKCgojZGVmaW5lIE9JRF9LRVJCdjUgMHgyYiwgNiwgMSwgNSwgMgojZGVmaW5l
IE9JRF9LRVJCdjVfTEVOIDUKI2RlZmluZSBPSURfS0VSQnY1X1BLSU5JVCBPSURfS0VSQnY1LCAz
CiNkZWZpbmUgT0lEX0tFUkJ2NV9QS0lOSVRfTEVOIE9JRF9LRVJCdjVfTEVOICsgMQoKCiNkZWZp
bmUgT0lEX0NFUlRJQ09NIDB4MkIsIDB4ODEsIDB4MDQKI2RlZmluZSBPSURfQ0VSVElDT01fTEVO
IDMKI2RlZmluZSBPSURfQ0VSVElDT01fRUxMX0NVUlZFIE9JRF9DRVJUSUNPTSwgMAojZGVmaW5l
IE9JRF9DRVJUSUNPTV9FTExfQ1VSVkVfTEVOIE9JRF9DRVJUSUNPTV9MRU4rMQojIDE4OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvb2lkc2Jh
c2UuaCIgMwojZGVmaW5lIEFQUExFX09JRCBPSURfVVMsIDB4ODYsIDB4ZjcsIDB4NjMKI2RlZmlu
ZSBBUFBMRV9PSURfTEVOR1RIIE9JRF9VU19MRU5HVEggKyAzCgoKCgoKCgojZGVmaW5lIEFQUExF
X0FEU19PSUQgQVBQTEVfT0lELCAweDY0CiNkZWZpbmUgQVBQTEVfQURTX09JRF9MRU5HVEggQVBQ
TEVfT0lEX0xFTkdUSCArIDEKIyAyMDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL29pZHNiYXNlLmgiIDMKI2RlZmluZSBBUFBMRV9UUF9PSUQg
QVBQTEVfQURTX09JRCwgMQojZGVmaW5lIEFQUExFX1RQX09JRF9MRU5HVEggQVBQTEVfQURTX09J
RF9MRU5HVEggKyAxCiMgMjE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5m
cmFtZXdvcmsvSGVhZGVycy9vaWRzYmFzZS5oIiAzCiNkZWZpbmUgQVBQTEVfQUxHX09JRCBBUFBM
RV9BRFNfT0lELCAyCiNkZWZpbmUgQVBQTEVfQUxHX09JRF9MRU5HVEggQVBQTEVfQURTX09JRF9M
RU5HVEggKyAxCgoKCgoKCiNkZWZpbmUgQVBQTEVfRE9UTUFDX0NFUlRfT0lEIEFQUExFX0FEU19P
SUQsIDMKI2RlZmluZSBBUFBMRV9ET1RNQUNfQ0VSVF9PSURfTEVOR1RIIEFQUExFX0FEU19PSURf
TEVOR1RIICsgMQojIDIzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJh
bWV3b3JrL0hlYWRlcnMvb2lkc2Jhc2UuaCIgMwojZGVmaW5lIEFQUExFX0RPVE1BQ19DRVJUX1JF
UV9PSUQgQVBQTEVfRE9UTUFDX0NFUlRfT0lELCAxCiNkZWZpbmUgQVBQTEVfRE9UTUFDX0NFUlRf
UkVRX09JRF9MRU5HVEggQVBQTEVfRE9UTUFDX0NFUlRfT0lEX0xFTkdUSCArIDEKIyAyNDYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL29pZHNi
YXNlLmgiIDMKI2RlZmluZSBBUFBMRV9ET1RNQUNfQ0VSVF9FWFRFTl9PSUQgQVBQTEVfRE9UTUFD
X0NFUlRfT0lELCAyCiNkZWZpbmUgQVBQTEVfRE9UTUFDX0NFUlRfRVhURU5fT0lEX0xFTkdUSCBB
UFBMRV9ET1RNQUNfQ0VSVF9PSURfTEVOR1RIICsgMQojIDI1NiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvb2lkc2Jhc2UuaCIgMwojZGVmaW5l
IEFQUExFX0RPVE1BQ19DRVJUX1JFUV9WQUxVRV9PSUQgQVBQTEVfRE9UTUFDX0NFUlRfT0lELCAz
CiNkZWZpbmUgQVBQTEVfRE9UTUFDX0NFUlRfUkVRX1ZBTFVFX09JRF9MRU5HVEggQVBQTEVfRE9U
TUFDX0NFUlRfT0lEX0xFTkdUSCArIDEKIyAyNjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL29pZHNiYXNlLmgiIDMKI2RlZmluZSBBUFBMRV9F
S1VfT0lEIEFQUExFX0FEU19PSUQsIDQKI2RlZmluZSBBUFBMRV9FS1VfT0lEX0xFTkdUSCBBUFBM
RV9BRFNfT0lEX0xFTkdUSCArIDEKCgoKCgoKCiNkZWZpbmUgQVBQTEVfRUtVX0NPREVfU0lHTklO
RyBBUFBMRV9FS1VfT0lELCAxCiNkZWZpbmUgQVBQTEVfRUtVX0NPREVfU0lHTklOR19MRU5HVEgg
QVBQTEVfRUtVX09JRF9MRU5HVEggKyAxCgoKCgoKCgojZGVmaW5lIEFQUExFX0NFUlRfUE9MSUNJ
RVMgQVBQTEVfQURTX09JRCwgNQojZGVmaW5lIEFQUExFX0NFUlRfUE9MSUNJRVNfTEVOR1RIIEFQ
UExFX0FEU19PSURfTEVOR1RIICsgMQoKCgoKCgoKI2RlZmluZSBBUFBMRV9FWFRFTlNJT05fT0lE
IEFQUExFX0FEU19PSUQsIDYKI2RlZmluZSBBUFBMRV9FWFRFTlNJT05fT0lEX0xFTkdUSCBBUFBM
RV9BRFNfT0lEX0xFTkdUSCArIDEKCgoKCgoKCiNkZWZpbmUgQVBQTEVfRVhURU5TSU9OX0NPREVf
U0lHTklORyBBUFBMRV9FWFRFTlNJT05fT0lELCAxCiNkZWZpbmUgQVBQTEVfRVhURU5TSU9OX0NP
REVfU0lHTklOR19MRU5HVEggQVBQTEVfRVhURU5TSU9OX09JRF9MRU5HVEggKyAxCgoKCgojZGVm
aW5lIE5FVFNDQVBFX0JBU0VfT0lEIDB4NjAsIDB4ODYsIDB4NDgsIDB4MDEsIDB4ODYsIDB4Zjgs
IDB4NDIKI2RlZmluZSBORVRTQ0FQRV9CQVNFX09JRF9MRU4gNwojIDMxOSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvb2lkc2Jhc2UuaCIgMwoj
ZGVmaW5lIE5FVFNDQVBFX0NFUlRfRVhURU4gTkVUU0NBUEVfQkFTRV9PSUQsIDB4MDEKI2RlZmlu
ZSBORVRTQ0FQRV9DRVJUX0VYVEVOX0xFTkdUSCBORVRTQ0FQRV9CQVNFX09JRF9MRU4gKyAxCgoj
ZGVmaW5lIE5FVFNDQVBFX0NFUlRfUE9MSUNZIE5FVFNDQVBFX0JBU0VfT0lELCAweDA0CiNkZWZp
bmUgTkVUU0NBUEVfQ0VSVF9QT0xJQ1lfTEVOR1RIIE5FVFNDQVBFX0JBU0VfT0lEX0xFTiArIDEK
CgoKCiNkZWZpbmUgT0lEX0lUVV9SRkNEQVRBXzIzNDIgT0lEX0lUVV9SRkNEQVRBLCAweDQ5LCAw
eDg2CiNkZWZpbmUgT0lEX0lUVV9SRkNEQVRBXzIzNDJfTEVOR1RIIE9JRF9JVFVfUkZDREFUQV9N
RU1CRVJfTEVOR1RIICsgMgoKI2RlZmluZSBPSURfSVRVX1JGQ0RBVEFfMjM0Ml9VQ0wgT0lEX0lU
VV9SRkNEQVRBXzIzNDIsIDB4NDksIDB4MUYsIDB4MTIsIDB4OEMKI2RlZmluZSBPSURfSVRVX1JG
Q0RBVEFfMjM0Ml9VQ0xfTEVOR1RIIE9JRF9JVFVfUkZDREFUQV8yMzQyX0xFTkdUSCArIDQKCiNk
ZWZpbmUgT0lEX0lUVV9SRkNEQVRBXzIzNDJfVUNMX0RJUkVDVE9SWVBJTE9UIE9JRF9JVFVfUkZD
REFUQV8yMzQyX1VDTCwgMHhFNAojZGVmaW5lIE9JRF9JVFVfUkZDREFUQV8yMzQyX1VDTF9ESVJF
Q1RPUllQSUxPVF9MRU5HVEggT0lEX0lUVV9SRkNEQVRBXzIzNDJfVUNMX0xFTkdUSCArIDEKCiNk
ZWZpbmUgT0lEX0lUVV9SRkNEQVRBXzIzNDJfVUNMX0RJUkVDVE9SWVBJTE9UX0FUVFJJQlVURVMg
T0lEX0lUVV9SRkNEQVRBXzIzNDJfVUNMX0RJUkVDVE9SWVBJTE9ULCAweDgxCiNkZWZpbmUgT0lE
X0lUVV9SRkNEQVRBXzIzNDJfVUNMX0RJUkVDVE9SWVBJTE9UX0FUVFJJQlVURVNfTEVOR1RIIE9J
RF9JVFVfUkZDREFUQV8yMzQyX1VDTF9ESVJFQ1RPUllQSUxPVF9MRU5HVEggKyAxCgojZGVmaW5l
IE9JRF9JVFVfUkZDREFUQV8yMzQyX1VDTF9ESVJFQ1RPUllQSUxPVF9BVFRSSUJVVEVTX0RPTUFJ
TkNPTVBPTkVOVCBPSURfSVRVX1JGQ0RBVEFfMjM0Ml9VQ0xfRElSRUNUT1JZUElMT1RfQVRUUklC
VVRFUywgMHg5OQojZGVmaW5lIE9JRF9JVFVfUkZDREFUQV8yMzQyX1VDTF9ESVJFQ1RPUllQSUxP
VF9BVFRSSUJVVEVTX0RPTUFJTkNPTVBPTkVOVF9MRU5HVEggT0lEX0lUVV9SRkNEQVRBXzIzNDJf
VUNMX0RJUkVDVE9SWVBJTE9UX0FUVFJJQlVURVNfTEVOR1RIICsgMQoKI2RlZmluZSBPSURfSVRV
X1JGQ0RBVEFfMjM0Ml9VQ0xfRElSRUNUT1JZUElMT1RfQVRUUklCVVRFU19VU0VSSUQgT0lEX0lU
VV9SRkNEQVRBXzIzNDJfVUNMX0RJUkVDVE9SWVBJTE9UX0FUVFJJQlVURVMsIDB4ODEKI2RlZmlu
ZSBPSURfSVRVX1JGQ0RBVEFfMjM0Ml9VQ0xfRElSRUNUT1JZUElMT1RfQVRUUklCVVRFU19VU0VS
SURfTEVOR1RIIE9JRF9JVFVfUkZDREFUQV8yMzQyX1VDTF9ESVJFQ1RPUllQSUxPVF9BVFRSSUJV
VEVTX0xFTkdUSCArIDEKCgp9CiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL29pZHNhdHRyLmgiIDIgMwoKCgoKZXh0ZXJuIGNvbnN0IENT
U01fT0lECiBDU1NNT0lEX09iamVjdENsYXNzLAogQ1NTTU9JRF9BbGlhc2VkRW50cnlOYW1lLAog
Q1NTTU9JRF9Lbm93bGVkZ2VJbmZvcm1hdGlvbiwKIENTU01PSURfQ29tbW9uTmFtZSwKIENTU01P
SURfU3VybmFtZSwKIENTU01PSURfU2VyaWFsTnVtYmVyLAogQ1NTTU9JRF9Db3VudHJ5TmFtZSwK
IENTU01PSURfTG9jYWxpdHlOYW1lLAogQ1NTTU9JRF9TdGF0ZVByb3ZpbmNlTmFtZSwKIENTU01P
SURfQ29sbGVjdGl2ZVN0YXRlUHJvdmluY2VOYW1lLAogQ1NTTU9JRF9TdHJlZXRBZGRyZXNzLAog
Q1NTTU9JRF9Db2xsZWN0aXZlU3RyZWV0QWRkcmVzcywKIENTU01PSURfT3JnYW5pemF0aW9uTmFt
ZSwKIENTU01PSURfQ29sbGVjdGl2ZU9yZ2FuaXphdGlvbk5hbWUsCiBDU1NNT0lEX09yZ2FuaXph
dGlvbmFsVW5pdE5hbWUsCiBDU1NNT0lEX0NvbGxlY3RpdmVPcmdhbml6YXRpb25hbFVuaXROYW1l
LAogQ1NTTU9JRF9UaXRsZSwKIENTU01PSURfRGVzY3JpcHRpb24sCiBDU1NNT0lEX1NlYXJjaEd1
aWRlLAogQ1NTTU9JRF9CdXNpbmVzc0NhdGVnb3J5LAogQ1NTTU9JRF9Qb3N0YWxBZGRyZXNzLAog
Q1NTTU9JRF9Db2xsZWN0aXZlUG9zdGFsQWRkcmVzcywKIENTU01PSURfUG9zdGFsQ29kZSwKIENT
U01PSURfQ29sbGVjdGl2ZVBvc3RhbENvZGUsCiBDU1NNT0lEX1Bvc3RPZmZpY2VCb3gsCiBDU1NN
T0lEX0NvbGxlY3RpdmVQb3N0T2ZmaWNlQm94LAogQ1NTTU9JRF9QaHlzaWNhbERlbGl2ZXJ5T2Zm
aWNlTmFtZSwKIENTU01PSURfQ29sbGVjdGl2ZVBoeXNpY2FsRGVsaXZlcnlPZmZpY2VOYW1lLAog
Q1NTTU9JRF9UZWxlcGhvbmVOdW1iZXIsCiBDU1NNT0lEX0NvbGxlY3RpdmVUZWxlcGhvbmVOdW1i
ZXIsCiBDU1NNT0lEX1RlbGV4TnVtYmVyLAogQ1NTTU9JRF9Db2xsZWN0aXZlVGVsZXhOdW1iZXIs
CiBDU1NNT0lEX1RlbGV4VGVybWluYWxJZGVudGlmaWVyLAogQ1NTTU9JRF9Db2xsZWN0aXZlVGVs
ZXhUZXJtaW5hbElkZW50aWZpZXIsCiBDU1NNT0lEX0ZhY3NpbWlsZVRlbGVwaG9uZU51bWJlciwK
IENTU01PSURfQ29sbGVjdGl2ZUZhY3NpbWlsZVRlbGVwaG9uZU51bWJlciwKIENTU01PSURfWF8x
MjFBZGRyZXNzLAogQ1NTTU9JRF9JbnRlcm5hdGlvbmFsSVNETk51bWJlciwKIENTU01PSURfQ29s
bGVjdGl2ZUludGVybmF0aW9uYWxJU0ROTnVtYmVyLAogQ1NTTU9JRF9SZWdpc3RlcmVkQWRkcmVz
cywKIENTU01PSURfRGVzdGluYXRpb25JbmRpY2F0b3IsCiBDU1NNT0lEX1ByZWZlcnJlZERlbGl2
ZXJ5TWV0aG9kLAogQ1NTTU9JRF9QcmVzZW50YXRpb25BZGRyZXNzLAogQ1NTTU9JRF9TdXBwb3J0
ZWRBcHBsaWNhdGlvbkNvbnRleHQsCiBDU1NNT0lEX01lbWJlciwKIENTU01PSURfT3duZXIsCiBD
U1NNT0lEX1JvbGVPY2N1cGFudCwKIENTU01PSURfU2VlQWxzbywKIENTU01PSURfVXNlclBhc3N3
b3JkLAogQ1NTTU9JRF9Vc2VyQ2VydGlmaWNhdGUsCiBDU1NNT0lEX0NBQ2VydGlmaWNhdGUsCiBD
U1NNT0lEX0F1dGhvcml0eVJldm9jYXRpb25MaXN0LAogQ1NTTU9JRF9DZXJ0aWZpY2F0ZVJldm9j
YXRpb25MaXN0LAogQ1NTTU9JRF9Dcm9zc0NlcnRpZmljYXRlUGFpciwKIENTU01PSURfTmFtZSwK
IENTU01PSURfR2l2ZW5OYW1lLAogQ1NTTU9JRF9Jbml0aWFscywKIENTU01PSURfR2VuZXJhdGlv
blF1YWxpZmllciwKIENTU01PSURfVW5pcXVlSWRlbnRpZmllciwKIENTU01PSURfRE5RdWFsaWZp
ZXIsCiBDU1NNT0lEX0VuaGFuY2VkU2VhcmNoR3VpZGUsCiBDU1NNT0lEX1Byb3RvY29sSW5mb3Jt
YXRpb24sCiBDU1NNT0lEX0Rpc3Rpbmd1aXNoZWROYW1lLAogQ1NTTU9JRF9VbmlxdWVNZW1iZXIs
CiBDU1NNT0lEX0hvdXNlSWRlbnRpZmllcjsKCgpleHRlcm4gY29uc3QgQ1NTTV9PSUQKIENTU01P
SURfRW1haWxBZGRyZXNzLAogQ1NTTU9JRF9VbnN0cnVjdHVyZWROYW1lLAogQ1NTTU9JRF9Db250
ZW50VHlwZSwKIENTU01PSURfTWVzc2FnZURpZ2VzdCwKIENTU01PSURfU2lnbmluZ1RpbWUsCiBD
U1NNT0lEX0NvdW50ZXJTaWduYXR1cmUsCiBDU1NNT0lEX0NoYWxsZW5nZVBhc3N3b3JkLAogQ1NT
TU9JRF9VbnN0cnVjdHVyZWRBZGRyZXNzLAogQ1NTTU9JRF9FeHRlbmRlZENlcnRpZmljYXRlQXR0
cmlidXRlczsKCgpleHRlcm4gY29uc3QgQ1NTTV9PSUQKIENTU01PSURfUVRfQ1BTLAogQ1NTTU9J
RF9RVF9VTk9USUNFLAogQ1NTTU9JRF9BRF9PQ1NQLAogQ1NTTU9JRF9BRF9DQV9JU1NVRVJTLAog
Q1NTTU9JRF9BRF9USU1FX1NUQU1QSU5HLAogQ1NTTU9JRF9BRF9DQV9SRVBPU0lUT1JZLAogQ1NT
TU9JRF9QREFfREFURV9PRl9CSVJUSCwKIENTU01PSURfUERBX1BMQUNFX09GX0JJUlRILAogQ1NT
TU9JRF9QREFfR0VOREVSLAogQ1NTTU9JRF9QREFfQ09VTlRSWV9DSVRJWkVOLAogQ1NTTU9JRF9Q
REFfQ09VTlRSWV9SRVNJREVOQ0UsCiBDU1NNT0lEX09JRF9RQ1NfU1lOVEFYX1YxLAogQ1NTTU9J
RF9PSURfUUNTX1NZTlRBWF9WMjsKCgpleHRlcm4gY29uc3QgQ1NTTV9PSUQKIENTU01PSURfRVRT
SV9RQ1NfUUNfQ09NUExJQU5DRSwKIENTU01PSURfRVRTSV9RQ1NfUUNfTElNSVRfVkFMVUUsCiBD
U1NNT0lEX0VUU0lfUUNTX1FDX1JFVEVOVElPTiwKIENTU01PSURfRVRTSV9RQ1NfUUNfU1NDRDsK
CgpleHRlcm4gY29uc3QgQ1NTTV9PSUQKIENTU01PSURfUEtDUzdfRGF0YSwKIENTU01PSURfUEtD
UzdfU2lnbmVkRGF0YSwKIENTU01PSURfUEtDUzdfRW52ZWxvcGVkRGF0YSwKIENTU01PSURfUEtD
UzdfU2lnbmVkQW5kRW52ZWxvcGVkRGF0YSwKIENTU01PSURfUEtDUzdfRGlnZXN0ZWREYXRhLAog
Q1NTTU9JRF9QS0NTN19FbmNyeXB0ZWREYXRhLAogQ1NTTU9JRF9QS0NTN19EYXRhV2l0aEF0dHJp
YnV0ZXMsCiBDU1NNT0lEX1BLQ1M3X0VuY3J5cHRlZFByaXZhdGVLZXlJbmZvLAoKCiBDU1NNT0lE
X1BLQ1M5X0ZyaWVuZGx5TmFtZSwKIENTU01PSURfUEtDUzlfTG9jYWxLZXlJZCwKIENTU01PSURf
UEtDUzlfQ2VydFR5cGVzLAogQ1NTTU9JRF9QS0NTOV9DcmxUeXBlcywKIENTU01PSURfUEtDUzlf
WDUwOUNlcnRpZmljYXRlLAogQ1NTTU9JRF9QS0NTOV9TZHNpQ2VydGlmaWNhdGUsCiBDU1NNT0lE
X1BLQ1M5X1g1MDlDcmwsCgoKIENTU01PSURfUEtDUzEyX2tleUJhZywKIENTU01PSURfUEtDUzEy
X3Nocm91ZGVkS2V5QmFnLAogQ1NTTU9JRF9QS0NTMTJfY2VydEJhZywKIENTU01PSURfUEtDUzEy
X2NybEJhZywKIENTU01PSURfUEtDUzEyX3NlY3JldEJhZywKIENTU01PSURfUEtDUzEyX3NhZmVD
b250ZW50c0JhZywKCgogQ1NTTU9JRF9Vc2VySUQsCgoKIENTU01PSURfRG9tYWluQ29tcG9uZW50
LAoKCiBDU1NNT0lEX0tFUkJ2NV9QS0lOSVRfQVVUSF9EQVRBLAogQ1NTTU9JRF9LRVJCdjVfUEtJ
TklUX0RIX0tFWV9EQVRBLAogQ1NTTU9JRF9LRVJCdjVfUEtJTklUX1JLRVlfREFUQTsKCgpleHRl
cm4gY29uc3QgQ1NTTV9PSUQKIENTU01PSURfWDlfNjIsCiBDU1NNT0lEX1g5XzYyX0ZpZWxkVHlw
ZSwKIENTU01PSURfWDlfNjJfUHViS2V5VHlwZSwKIENTU01PSURfWDlfNjJfRWxsQ3VydmUsCiBD
U1NNT0lEX1g5XzYyX0NfVHdvQ3VydmUsCiBDU1NNT0lEX1g5XzYyX1ByaW1lQ3VydmUsCiBDU1NN
T0lEX1g5XzYyX1NpZ1R5cGUsCiBDU1NNT0lEX3NlY3AxOTJyMSwKIENTU01PSURfc2VjcDI1NnIx
LAogQ1NTTU9JRF9DZXJ0aWNvbSwKIENTU01PSURfQ2VydGljb21FbGxDdXJ2ZSwKIENTU01PSURf
c2VjcDExMnIxLAogQ1NTTU9JRF9zZWNwMTEycjIsCiBDU1NNT0lEX3NlY3AxMjhyMSwKIENTU01P
SURfc2VjcDEyOHIyLAogQ1NTTU9JRF9zZWNwMTYwazEsCiBDU1NNT0lEX3NlY3AxNjByMSwKIENT
U01PSURfc2VjcDE2MHIyLAogQ1NTTU9JRF9zZWNwMTkyazEsCiBDU1NNT0lEX3NlY3AyMjRrMSwK
IENTU01PSURfc2VjcDIyNHIxLAogQ1NTTU9JRF9zZWNwMjU2azEsCiBDU1NNT0lEX3NlY3AzODRy
MSwKIENTU01PSURfc2VjcDUyMXIxLAogQ1NTTU9JRF9zZWN0MTEzcjEsCiBDU1NNT0lEX3NlY3Qx
MTNyMiwKIENTU01PSURfc2VjdDEzMXIxLAogQ1NTTU9JRF9zZWN0MTMxcjIsCiBDU1NNT0lEX3Nl
Y3QxNjNrMSwKIENTU01PSURfc2VjdDE2M3IxLAogQ1NTTU9JRF9zZWN0MTYzcjIsCiBDU1NNT0lE
X3NlY3QxOTNyMSwKIENTU01PSURfc2VjdDE5M3IyLAogQ1NTTU9JRF9zZWN0MjMzazEsCiBDU1NN
T0lEX3NlY3QyMzNyMSwKIENTU01PSURfc2VjdDIzOWsxLAogQ1NTTU9JRF9zZWN0MjgzazEsCiBD
U1NNT0lEX3NlY3QyODNyMSwKIENTU01PSURfc2VjdDQwOWsxLAogQ1NTTU9JRF9zZWN0NDA5cjEs
CiBDU1NNT0lEX3NlY3Q1NzFrMSwKIENTU01PSURfc2VjdDU3MXIxOwojIDQ1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cml0eS5oIiAy
IDMKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hl
YWRlcnMvb2lkc2NlcnQuaCIgMSAzCiMgMjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Nl
Y3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL29pZHNjZXJ0LmgiIDMKI2RlZmluZSBfT0lEU0NFUlRf
SF8gMQoKCgoKCgpleHRlcm4gIkMiIHsKCgojZGVmaW5lIElOVEVMX1g1MDlWM19DRVJUX1IwOCBJ
TlRFTF9TRUNfRk9STUFUUywgMSwgMQojZGVmaW5lIElOVEVMX1g1MDlWM19DRVJUX1IwOF9MRU5H
VEggSU5URUxfU0VDX0ZPUk1BVFNfTEVOR1RIICsgMgoKCiNkZWZpbmUgSU5URUxfWDUwOVYzX0NF
UlRfUFJJVkFURV9FWFRFTlNJT05TIElOVEVMX1g1MDlWM19DRVJUX1IwOCwgNTAKI2RlZmluZSBJ
TlRFTF9YNTA5VjNfQ0VSVF9QUklWQVRFX0VYVEVOU0lPTlNfTEVOR1RIIElOVEVMX1g1MDlWM19D
RVJUX1IwOF9MRU5HVEggKyAxCgoKI2RlZmluZSBJTlRFTF9YNTA5VjNfU0lHTl9SMDggSU5URUxf
U0VDX0ZPUk1BVFMsIDMsIDIKI2RlZmluZSBJTlRFTF9YNTA5VjNfU0lHTl9SMDhfTEVOR1RIIElO
VEVMX1NFQ19GT1JNQVRTX0xFTkdUSCArIDIKCgoKCiNkZWZpbmUgSU5URUxfWDUwOV9DX0RBVEFU
WVBFIDEKI2RlZmluZSBJTlRFTF9YNTA5X0xEQVBTVFJJTkdfREFUQVRZUEUgMgoKCmV4dGVybiBj
b25zdCBDU1NNX09JRAoKIENTU01PSURfWDUwOVYzU2lnbmVkQ2VydGlmaWNhdGUsCiBDU1NNT0lE
X1g1MDlWM1NpZ25lZENlcnRpZmljYXRlQ1N0cnVjdCwKIENTU01PSURfWDUwOVYzQ2VydGlmaWNh
dGUsCiBDU1NNT0lEX1g1MDlWM0NlcnRpZmljYXRlQ1N0cnVjdCwKIENTU01PSURfWDUwOVYxVmVy
c2lvbiwKIENTU01PSURfWDUwOVYxU2VyaWFsTnVtYmVyLAogQ1NTTU9JRF9YNTA5VjFJc3N1ZXJO
YW1lLAogQ1NTTU9JRF9YNTA5VjFJc3N1ZXJOYW1lU3RkLAogQ1NTTU9JRF9YNTA5VjFJc3N1ZXJO
YW1lQ1N0cnVjdCwKIENTU01PSURfWDUwOVYxSXNzdWVyTmFtZUxEQVAsCiBDU1NNT0lEX1g1MDlW
MVZhbGlkaXR5Tm90QmVmb3JlLAogQ1NTTU9JRF9YNTA5VjFWYWxpZGl0eU5vdEFmdGVyLAogQ1NT
TU9JRF9YNTA5VjFTdWJqZWN0TmFtZSwKIENTU01PSURfWDUwOVYxU3ViamVjdE5hbWVTdGQsCiBD
U1NNT0lEX1g1MDlWMVN1YmplY3ROYW1lQ1N0cnVjdCwKIENTU01PSURfWDUwOVYxU3ViamVjdE5h
bWVMREFQLAogQ1NTTU9JRF9DU1NNS2V5U3RydWN0LAogQ1NTTU9JRF9YNTA5VjFTdWJqZWN0UHVi
bGljS2V5Q1N0cnVjdCwKIENTU01PSURfWDUwOVYxU3ViamVjdFB1YmxpY0tleUFsZ29yaXRobSwK
IENTU01PSURfWDUwOVYxU3ViamVjdFB1YmxpY0tleUFsZ29yaXRobVBhcmFtZXRlcnMsCiBDU1NN
T0lEX1g1MDlWMVN1YmplY3RQdWJsaWNLZXksCiBDU1NNT0lEX1g1MDlWMUNlcnRpZmljYXRlSXNz
dWVyVW5pcXVlSWQsCiBDU1NNT0lEX1g1MDlWMUNlcnRpZmljYXRlU3ViamVjdFVuaXF1ZUlkLAog
Q1NTTU9JRF9YNTA5VjNDZXJ0aWZpY2F0ZUV4dGVuc2lvbnNTdHJ1Y3QsCiBDU1NNT0lEX1g1MDlW
M0NlcnRpZmljYXRlRXh0ZW5zaW9uc0NTdHJ1Y3QsCiBDU1NNT0lEX1g1MDlWM0NlcnRpZmljYXRl
TnVtYmVyT2ZFeHRlbnNpb25zLAogQ1NTTU9JRF9YNTA5VjNDZXJ0aWZpY2F0ZUV4dGVuc2lvblN0
cnVjdCwKIENTU01PSURfWDUwOVYzQ2VydGlmaWNhdGVFeHRlbnNpb25DU3RydWN0LAogQ1NTTU9J
RF9YNTA5VjNDZXJ0aWZpY2F0ZUV4dGVuc2lvbklkLAogQ1NTTU9JRF9YNTA5VjNDZXJ0aWZpY2F0
ZUV4dGVuc2lvbkNyaXRpY2FsLAogQ1NTTU9JRF9YNTA5VjNDZXJ0aWZpY2F0ZUV4dGVuc2lvblR5
cGUsCiBDU1NNT0lEX1g1MDlWM0NlcnRpZmljYXRlRXh0ZW5zaW9uVmFsdWUsCgoKIENTU01PSURf
WDUwOVYxU2lnbmF0dXJlU3RydWN0LAogQ1NTTU9JRF9YNTA5VjFTaWduYXR1cmVDU3RydWN0LAog
Q1NTTU9JRF9YNTA5VjFTaWduYXR1cmVBbGdvcml0aG0sCiBDU1NNT0lEX1g1MDlWMVNpZ25hdHVy
ZUFsZ29yaXRobVRCUywKIENTU01PSURfWDUwOVYxU2lnbmF0dXJlQWxnb3JpdGhtUGFyYW1ldGVy
cywKIENTU01PSURfWDUwOVYxU2lnbmF0dXJlLAoKCiBDU1NNT0lEX1N1YmplY3RTaWduYXR1cmVC
aXRtYXAsCiBDU1NNT0lEX1N1YmplY3RQaWN0dXJlLAogQ1NTTU9JRF9TdWJqZWN0RW1haWxBZGRy
ZXNzLAogQ1NTTU9JRF9Vc2VFeGVtcHRpb25zOwojIDExMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvb2lkc2NlcnQuaCIgMwpleHRlcm4gY29u
c3QgQ1NTTV9PSUQKIENTU01PSURfU3ViamVjdERpcmVjdG9yeUF0dHJpYnV0ZXMsCiBDU1NNT0lE
X1N1YmplY3RLZXlJZGVudGlmaWVyLAogQ1NTTU9JRF9LZXlVc2FnZSwKIENTU01PSURfUHJpdmF0
ZUtleVVzYWdlUGVyaW9kLAogQ1NTTU9JRF9TdWJqZWN0QWx0TmFtZSwKIENTU01PSURfSXNzdWVy
QWx0TmFtZSwKIENTU01PSURfQmFzaWNDb25zdHJhaW50cywKIENTU01PSURfQ3JsTnVtYmVyLAog
Q1NTTU9JRF9DcmxSZWFzb24sCiBDU1NNT0lEX0hvbGRJbnN0cnVjdGlvbkNvZGUsCiBDU1NNT0lE
X0ludmFsaWRpdHlEYXRlLAogQ1NTTU9JRF9EZWx0YUNybEluZGljYXRvciwKIENTU01PSURfSXNz
dWluZ0Rpc3RyaWJ1dGlvblBvaW50LAogQ1NTTU9JRF9Jc3N1aW5nRGlzdHJpYnV0aW9uUG9pbnRz
LAogQ1NTTU9JRF9DZXJ0SXNzdWVyLAogQ1NTTU9JRF9OYW1lQ29uc3RyYWludHMsCiBDU1NNT0lE
X0NybERpc3RyaWJ1dGlvblBvaW50cywKIENTU01PSURfQ2VydGlmaWNhdGVQb2xpY2llcywKIENT
U01PSURfUG9saWN5TWFwcGluZ3MsCiBDU1NNT0lEX1BvbGljeUNvbnN0cmFpbnRzLAogQ1NTTU9J
RF9BdXRob3JpdHlLZXlJZGVudGlmaWVyLAogQ1NTTU9JRF9FeHRlbmRlZEtleVVzYWdlLAogQ1NT
TU9JRF9BdXRob3JpdHlJbmZvQWNjZXNzLAogQ1NTTU9JRF9CaW9tZXRyaWNJbmZvLAogQ1NTTU9J
RF9RQ19TdGF0ZW1lbnRzLAogQ1NTTU9JRF9TdWJqZWN0SW5mb0FjY2VzcywKIENTU01PSURfRXh0
ZW5kZWRLZXlVc2FnZUFueSwKIENTU01PSURfU2VydmVyQXV0aCwKIENTU01PSURfQ2xpZW50QXV0
aCwKIENTU01PSURfRXh0ZW5kZWRVc2VDb2RlU2lnbmluZywKIENTU01PSURfRW1haWxQcm90ZWN0
aW9uLAogQ1NTTU9JRF9UaW1lU3RhbXBpbmcsCiBDU1NNT0lEX09DU1BTaWduaW5nLAogQ1NTTU9J
RF9LRVJCdjVfUEtJTklUX0tQX0NMSUVOVF9BVVRILAogQ1NTTU9JRF9LRVJCdjVfUEtJTklUX0tQ
X0tEQywKIENTU01PSURfRUtVX0lQU2VjLAogQ1NTTU9JRF9ET1RNQUNfQ0VSVF9FWFRFTlNJT04s
CiBDU1NNT0lEX0RPVE1BQ19DRVJUX0lERU5USVRZLAogQ1NTTU9JRF9ET1RNQUNfQ0VSVF9FTUFJ
TF9TSUdOLAogQ1NTTU9JRF9ET1RNQUNfQ0VSVF9FTUFJTF9FTkNSWVBULAogQ1NTTU9JRF9BUFBM
RV9DRVJUX1BPTElDWSwKIENTU01PSURfRE9UTUFDX0NFUlRfUE9MSUNZLAogQ1NTTU9JRF9BRENf
Q0VSVF9QT0xJQ1ksCiBDU1NNT0lEX0FQUExFX0VLVV9DT0RFX1NJR05JTkcsCiBDU1NNT0lEX0FQ
UExFX0VLVV9DT0RFX1NJR05JTkdfREVWLAogQ1NTTU9JRF9BUFBMRV9FS1VfUkVTT1VSQ0VfU0lH
TklORywKIENTU01PSURfQVBQTEVfRUtVX0lDSEFUX1NJR05JTkcsCiBDU1NNT0lEX0FQUExFX0VL
VV9JQ0hBVF9FTkNSWVBUSU9OLAogQ1NTTU9JRF9BUFBMRV9FS1VfU1lTVEVNX0lERU5USVRZLAog
Q1NTTU9JRF9BUFBMRV9FWFRFTlNJT04sCiBDU1NNT0lEX0FQUExFX0VYVEVOU0lPTl9DT0RFX1NJ
R05JTkcsCiBDU1NNT0lEX0FQUExFX0VYVEVOU0lPTl9BUFBMRV9TSUdOSU5HLAogQ1NTTU9JRF9B
UFBMRV9FWFRFTlNJT05fQURDX0RFVl9TSUdOSU5HLAogQ1NTTU9JRF9BUFBMRV9FWFRFTlNJT05f
QURDX0FQUExFX1NJR05JTkcKOwoKCgoKZXh0ZXJuIGNvbnN0IENTU01fT0lECiBDU1NNT0lEX05l
dHNjYXBlQ2VydFR5cGUsCiBDU1NNT0lEX05ldHNjYXBlQ2VydFNlcXVlbmNlLAogQ1NTTU9JRF9O
ZXRzY2FwZVNHQzsKCmV4dGVybiBjb25zdCBDU1NNX09JRCBDU1NNT0lEX01pY3Jvc29mdFNHQzsK
CgoKCgoKI2RlZmluZSBDRV9OQ1RfU1NMX0NsaWVudCAweDgwMDAKI2RlZmluZSBDRV9OQ1RfU1NM
X1NlcnZlciAweDQwMDAKI2RlZmluZSBDRV9OQ1RfU01JTUUgMHgyMDAwCiNkZWZpbmUgQ0VfTkNU
X09ialNpZ24gMHgxMDAwCiNkZWZpbmUgQ0VfTkNUX1Jlc2VydmVkIDB4MDgwMAojZGVmaW5lIENF
X05DVF9TU0xfQ0EgMHgwNDAwCiNkZWZpbmUgQ0VfTkNUX1NNSU1FX0NBIDB4MDIwMAojZGVmaW5l
IENFX05DVF9PYmpTaWduQ0EgMHgwMTAwCgoKfQojIDQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cml0eS5oIiAyIDMKIyAxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9vaWRzY3Js
LmgiIDEgMwojIDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdv
cmsvSGVhZGVycy9vaWRzY3JsLmgiIDMKI2RlZmluZSBfT0lEU0NSTF9IXyAxCgoKCgoKCmV4dGVy
biAiQyIgewoKCiNkZWZpbmUgSU5URUxfWDUwOVYyX0NSTF9SMDggSU5URUxfU0VDX0ZPUk1BVFMs
IDIsIDEKI2RlZmluZSBJTlRFTF9YNTA5VjJfQ1JMX1IwOF9MRU5HVEggSU5URUxfU0VDX0ZPUk1B
VFNfTEVOR1RIKzIKCgpleHRlcm4gY29uc3QgQ1NTTV9PSUQKCiBDU1NNT0lEX1g1MDlWMkNSTFNp
Z25lZENybFN0cnVjdCwKIENTU01PSURfWDUwOVYyQ1JMU2lnbmVkQ3JsQ1N0cnVjdCwKIENTU01P
SURfWDUwOVYyQ1JMVGJzQ2VydExpc3RTdHJ1Y3QsCiBDU1NNT0lEX1g1MDlWMkNSTFRic0NlcnRM
aXN0Q1N0cnVjdCwKIENTU01PSURfWDUwOVYyQ1JMVmVyc2lvbiwKIENTU01PSURfWDUwOVYxQ1JM
SXNzdWVyU3RydWN0LAogQ1NTTU9JRF9YNTA5VjFDUkxJc3N1ZXJOYW1lQ1N0cnVjdCwKIENTU01P
SURfWDUwOVYxQ1JMSXNzdWVyTmFtZUxEQVAsCiBDU1NNT0lEX1g1MDlWMUNSTFRoaXNVcGRhdGUs
CiBDU1NNT0lEX1g1MDlWMUNSTE5leHRVcGRhdGUsCgoKIENTU01PSURfWDUwOVYxQ1JMUmV2b2tl
ZENlcnRpZmljYXRlc1N0cnVjdCwKIENTU01PSURfWDUwOVYxQ1JMUmV2b2tlZENlcnRpZmljYXRl
c0NTdHJ1Y3QsCiBDU1NNT0lEX1g1MDlWMUNSTE51bWJlck9mUmV2b2tlZENlcnRFbnRyaWVzLAog
Q1NTTU9JRF9YNTA5VjFDUkxSZXZva2VkRW50cnlTdHJ1Y3QsCiBDU1NNT0lEX1g1MDlWMUNSTFJl
dm9rZWRFbnRyeUNTdHJ1Y3QsCiBDU1NNT0lEX1g1MDlWMUNSTFJldm9rZWRFbnRyeVNlcmlhbE51
bWJlciwKIENTU01PSURfWDUwOVYxQ1JMUmV2b2tlZEVudHJ5UmV2b2NhdGlvbkRhdGUsCgoKIENT
U01PSURfWDUwOVYyQ1JMUmV2b2tlZEVudHJ5QWxsRXh0ZW5zaW9uc1N0cnVjdCwKIENTU01PSURf
WDUwOVYyQ1JMUmV2b2tlZEVudHJ5QWxsRXh0ZW5zaW9uc0NTdHJ1Y3QsCiBDU1NNT0lEX1g1MDlW
MkNSTFJldm9rZWRFbnRyeU51bWJlck9mRXh0ZW5zaW9ucywKIENTU01PSURfWDUwOVYyQ1JMUmV2
b2tlZEVudHJ5U2luZ2xlRXh0ZW5zaW9uU3RydWN0LAogQ1NTTU9JRF9YNTA5VjJDUkxSZXZva2Vk
RW50cnlTaW5nbGVFeHRlbnNpb25DU3RydWN0LAogQ1NTTU9JRF9YNTA5VjJDUkxSZXZva2VkRW50
cnlFeHRlbnNpb25JZCwKIENTU01PSURfWDUwOVYyQ1JMUmV2b2tlZEVudHJ5RXh0ZW5zaW9uQ3Jp
dGljYWwsCiBDU1NNT0lEX1g1MDlWMkNSTFJldm9rZWRFbnRyeUV4dGVuc2lvblR5cGUsCiBDU1NN
T0lEX1g1MDlWMkNSTFJldm9rZWRFbnRyeUV4dGVuc2lvblZhbHVlLAoKCiBDU1NNT0lEX1g1MDlW
MkNSTEFsbEV4dGVuc2lvbnNTdHJ1Y3QsCiBDU1NNT0lEX1g1MDlWMkNSTEFsbEV4dGVuc2lvbnND
U3RydWN0LAogQ1NTTU9JRF9YNTA5VjJDUkxOdW1iZXJPZkV4dGVuc2lvbnMsCiBDU1NNT0lEX1g1
MDlWMkNSTFNpbmdsZUV4dGVuc2lvblN0cnVjdCwKIENTU01PSURfWDUwOVYyQ1JMU2luZ2xlRXh0
ZW5zaW9uQ1N0cnVjdCwKIENTU01PSURfWDUwOVYyQ1JMRXh0ZW5zaW9uSWQsCiBDU1NNT0lEX1g1
MDlWMkNSTEV4dGVuc2lvbkNyaXRpY2FsLAogQ1NTTU9JRF9YNTA5VjJDUkxFeHRlbnNpb25UeXBl
LAoKCiBDU1NNT0lEX1BLSVhfT0NTUCwKIENTU01PSURfUEtJWF9PQ1NQX0JBU0lDLAogQ1NTTU9J
RF9QS0lYX09DU1BfTk9OQ0UsCiBDU1NNT0lEX1BLSVhfT0NTUF9DUkwsCiBDU1NNT0lEX1BLSVhf
T0NTUF9SRVNQT05TRSwKIENTU01PSURfUEtJWF9PQ1NQX05PQ0hFQ0ssCiBDU1NNT0lEX1BLSVhf
T0NTUF9BUkNISVZFX0NVVE9GRiwKIENTU01PSURfUEtJWF9PQ1NQX1NFUlZJQ0VfTE9DQVRPUjsK
CgoKfQojIDQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsv
SGVhZGVycy9TZWN1cml0eS5oIiAyIDMKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0Jhc2UuaCIgMSAzCiMgMzAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0Jhc2UuaCIg
MwojZGVmaW5lIF9TRUNVUklUWV9TRUNCQVNFX0hfIAoKCgoKZXh0ZXJuICJDIiB7CgoKCiNkZWZp
bmUgX19TRUNfVFlQRVNfXyAKCgoKCgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVTZWNLZXljaGFpblJl
ZiAqU2VjS2V5Y2hhaW5SZWY7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlU2VjS2V5Y2hhaW5J
dGVtUmVmICpTZWNLZXljaGFpbkl0ZW1SZWY7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlU2Vj
S2V5Y2hhaW5TZWFyY2hSZWYgKlNlY0tleWNoYWluU2VhcmNoUmVmOwoKCgoKCnR5cGVkZWYgT1NU
eXBlIFNlY0tleWNoYWluQXR0clR5cGU7CiMgNzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0Jhc2UuaCIgMwpzdHJ1Y3QgU2VjS2V5Y2hh
aW5BdHRyaWJ1dGUKewogICAgU2VjS2V5Y2hhaW5BdHRyVHlwZSB0YWc7CiAgICBVSW50MzIgbGVu
Z3RoOwogICAgdm9pZCAqZGF0YTsKfTsKdHlwZWRlZiBzdHJ1Y3QgU2VjS2V5Y2hhaW5BdHRyaWJ1
dGUgU2VjS2V5Y2hhaW5BdHRyaWJ1dGU7CgoKCgoKdHlwZWRlZiBTZWNLZXljaGFpbkF0dHJpYnV0
ZSAqU2VjS2V5Y2hhaW5BdHRyaWJ1dGVQdHI7CgoKCgoKCgpzdHJ1Y3QgU2VjS2V5Y2hhaW5BdHRy
aWJ1dGVMaXN0CnsKICAgIFVJbnQzMiBjb3VudDsKICAgIFNlY0tleWNoYWluQXR0cmlidXRlICph
dHRyOwp9Owp0eXBlZGVmIHN0cnVjdCBTZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3QgU2VjS2V5Y2hh
aW5BdHRyaWJ1dGVMaXN0OwoKCgoKCnR5cGVkZWYgVUludDMyIFNlY0tleWNoYWluU3RhdHVzOwoK
CgoKCgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVTZWNUcnVzdGVkQXBwbGljYXRpb25SZWYgKlNlY1Ry
dXN0ZWRBcHBsaWNhdGlvblJlZjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVTZWNQb2xpY3lS
ZWYgKlNlY1BvbGljeVJlZjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVTZWNDZXJ0aWZpY2F0
ZVJlZiAqU2VjQ2VydGlmaWNhdGVSZWY7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlU2VjQWNj
ZXNzUmVmICpTZWNBY2Nlc3NSZWY7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlU2VjSWRlbnRp
dHlSZWYgKlNlY0lkZW50aXR5UmVmOwoKCgoKCnR5cGVkZWYgc3RydWN0IE9wYXF1ZVNlY0tleVJl
ZiAqU2VjS2V5UmVmOwoKCgoKCnR5cGVkZWYgc3RydWN0IE9wYXF1ZVNlY1RydXN0UmVmICpTZWNB
Q0xSZWY7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlU2VjUGFzc3dvcmRSZWYgKlNlY1Bhc3N3
b3JkUmVmOwojIDE2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrL0hlYWRlcnMvU2VjQmFzZS5oIiAzCnN0cnVjdCBTZWNLZXljaGFpbkF0dHJpYnV0ZUluZm8K
ewogICAgVUludDMyIGNvdW50OwogICAgVUludDMyICp0YWc7CiBVSW50MzIgKmZvcm1hdDsKfTsK
dHlwZWRlZiBzdHJ1Y3QgU2VjS2V5Y2hhaW5BdHRyaWJ1dGVJbmZvIFNlY0tleWNoYWluQXR0cmli
dXRlSW5mbzsKIyAxNzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1l
d29yay9IZWFkZXJzL1NlY0Jhc2UuaCIgMwpDRlN0cmluZ1JlZiBTZWNDb3B5RXJyb3JNZXNzYWdl
U3RyaW5nKE9TU3RhdHVzIHN0YXR1cywgdm9pZCAqcmVzZXJ2ZWQpOwojIDI0MSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjQmFzZS5oIiAz
CmVudW0KewogICAgZXJyU2VjU3VjY2VzcyA9IDAsCiAgICBlcnJTZWNVbmltcGxlbWVudGVkID0g
LTQsCiAgICBlcnJTZWNQYXJhbSA9IC01MCwKICAgIGVyclNlY0FsbG9jYXRlID0gLTEwOCwKCiAg
ICBlcnJTZWNOb3RBdmFpbGFibGUgPSAtMjUyOTEsCiAgICBlcnJTZWNSZWFkT25seSA9IC0yNTI5
MiwKICAgIGVyclNlY0F1dGhGYWlsZWQgPSAtMjUyOTMsCiAgICBlcnJTZWNOb1N1Y2hLZXljaGFp
biA9IC0yNTI5NCwKICAgIGVyclNlY0ludmFsaWRLZXljaGFpbiA9IC0yNTI5NSwKICAgIGVyclNl
Y0R1cGxpY2F0ZUtleWNoYWluID0gLTI1Mjk2LAogICAgZXJyU2VjRHVwbGljYXRlQ2FsbGJhY2sg
PSAtMjUyOTcsCiAgICBlcnJTZWNJbnZhbGlkQ2FsbGJhY2sgPSAtMjUyOTgsCiAgICBlcnJTZWNE
dXBsaWNhdGVJdGVtID0gLTI1Mjk5LAogICAgZXJyU2VjSXRlbU5vdEZvdW5kID0gLTI1MzAwLAog
ICAgZXJyU2VjQnVmZmVyVG9vU21hbGwgPSAtMjUzMDEsCiAgICBlcnJTZWNEYXRhVG9vTGFyZ2Ug
PSAtMjUzMDIsCiAgICBlcnJTZWNOb1N1Y2hBdHRyID0gLTI1MzAzLAogICAgZXJyU2VjSW52YWxp
ZEl0ZW1SZWYgPSAtMjUzMDQsCiAgICBlcnJTZWNJbnZhbGlkU2VhcmNoUmVmID0gLTI1MzA1LAog
ICAgZXJyU2VjTm9TdWNoQ2xhc3MgPSAtMjUzMDYsCiAgICBlcnJTZWNOb0RlZmF1bHRLZXljaGFp
biA9IC0yNTMwNywKICAgIGVyclNlY0ludGVyYWN0aW9uTm90QWxsb3dlZCA9IC0yNTMwOCwKICAg
IGVyclNlY1JlYWRPbmx5QXR0ciA9IC0yNTMwOSwKICAgIGVyclNlY1dyb25nU2VjVmVyc2lvbiA9
IC0yNTMxMCwKICAgIGVyclNlY0tleVNpemVOb3RBbGxvd2VkID0gLTI1MzExLAogICAgZXJyU2Vj
Tm9TdG9yYWdlTW9kdWxlID0gLTI1MzEyLAogICAgZXJyU2VjTm9DZXJ0aWZpY2F0ZU1vZHVsZSA9
IC0yNTMxMywKICAgIGVyclNlY05vUG9saWN5TW9kdWxlID0gLTI1MzE0LAogICAgZXJyU2VjSW50
ZXJhY3Rpb25SZXF1aXJlZCA9IC0yNTMxNSwKICAgIGVyclNlY0RhdGFOb3RBdmFpbGFibGUgPSAt
MjUzMTYsCiAgICBlcnJTZWNEYXRhTm90TW9kaWZpYWJsZSA9IC0yNTMxNywKICAgIGVyclNlY0Ny
ZWF0ZUNoYWluRmFpbGVkID0gLTI1MzE4LAogZXJyU2VjSW52YWxpZFByZWZzRG9tYWluID0gLTI1
MzE5LAoKIGVyclNlY0FDTE5vdFNpbXBsZSA9IC0yNTI0MCwKIGVyclNlY1BvbGljeU5vdEZvdW5k
ID0gLTI1MjQxLAogZXJyU2VjSW52YWxpZFRydXN0U2V0dGluZyA9IC0yNTI0MiwKIGVyclNlY05v
QWNjZXNzRm9ySXRlbSA9IC0yNTI0MywKIGVyclNlY0ludmFsaWRPd25lckVkaXQgPSAtMjUyNDQs
CiBlcnJTZWNUcnVzdE5vdEF2YWlsYWJsZSA9IC0yNTI0NSwKIGVyclNlY1Vuc3VwcG9ydGVkRm9y
bWF0ID0gLTI1MjU2LAogZXJyU2VjVW5rbm93bkZvcm1hdCA9IC0yNTI1NywKIGVyclNlY0tleUlz
U2Vuc2l0aXZlID0gLTI1MjU4LAogZXJyU2VjTXVsdGlwbGVQcml2S2V5cyA9IC0yNTI1OSwKIGVy
clNlY1Bhc3NwaHJhc2VSZXF1aXJlZCA9IC0yNTI2MCwKIGVyclNlY0ludmFsaWRQYXNzd29yZFJl
ZiA9IC0yNTI2MSwKIGVyclNlY0ludmFsaWRUcnVzdFNldHRpbmdzID0gLTI1MjYyLAogZXJyU2Vj
Tm9UcnVzdFNldHRpbmdzID0gLTI1MjYzLAogZXJyU2VjUGtjczEyVmVyaWZ5RmFpbHVyZSA9IC0y
NTI2NCwKCiAgICBlcnJTZWNEZWNvZGUgPSAtMjYyNzUsCn07CgoKfQojIDUxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cml0eS5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVh
ZGVycy9TZWNBY2Nlc3MuaCIgMSAzCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Nl
Y3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0FjY2Vzcy5oIiAzCiNkZWZpbmUgX1NFQ1VSSVRZ
X1NFQ0FDQ0VTU19IXyAKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKQ0ZUeXBlSUQgU2VjQWNj
ZXNzR2V0VHlwZUlEKHZvaWQpOwojIDYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1
cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNBY2Nlc3MuaCIgMwpPU1N0YXR1cyBTZWNBY2Nlc3ND
cmVhdGUoQ0ZTdHJpbmdSZWYgZGVzY3JpcHRvciwgQ0ZBcnJheVJlZiB0cnVzdGVkbGlzdCwgU2Vj
QWNjZXNzUmVmICphY2Nlc3NSZWYpOwojIDczICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9T
ZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNBY2Nlc3MuaCIgMwpPU1N0YXR1cyBTZWNBY2Nl
c3NDcmVhdGVGcm9tT3duZXJBbmRBQ0woY29uc3QgQ1NTTV9BQ0xfT1dORVJfUFJPVE9UWVBFICpv
d25lciwgdWludDMyIGFjbENvdW50LCBjb25zdCBDU1NNX0FDTF9FTlRSWV9JTkZPICphY2xzLCBT
ZWNBY2Nlc3NSZWYgKmFjY2Vzc1JlZik7CiMgODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0FjY2Vzcy5oIiAzCk9TU3RhdHVzIFNlY0Fj
Y2Vzc0dldE93bmVyQW5kQUNMKFNlY0FjY2Vzc1JlZiBhY2Nlc3NSZWYsIENTU01fQUNMX09XTkVS
X1BST1RPVFlQRV9QVFIgKm93bmVyLCB1aW50MzIgKmFjbENvdW50LCBDU1NNX0FDTF9FTlRSWV9J
TkZPX1BUUiAqYWNscyk7CiMgOTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5
LmZyYW1ld29yay9IZWFkZXJzL1NlY0FjY2Vzcy5oIiAzCk9TU3RhdHVzIFNlY0FjY2Vzc0NvcHlB
Q0xMaXN0KFNlY0FjY2Vzc1JlZiBhY2Nlc3NSZWYsIENGQXJyYXlSZWYgKmFjbExpc3QpOwojIDEw
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMv
U2VjQWNjZXNzLmgiIDMKT1NTdGF0dXMgU2VjQWNjZXNzQ29weVNlbGVjdGVkQUNMTGlzdChTZWNB
Y2Nlc3NSZWYgYWNjZXNzUmVmLCBDU1NNX0FDTF9BVVRIT1JJWkFUSU9OX1RBRyBhY3Rpb24sIENG
QXJyYXlSZWYgKmFjbExpc3QpOwoKCgp9CiMgNTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0FDTC5oIiAx
IDMKIyAzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hl
YWRlcnMvU2VjQUNMLmgiIDMKI2RlZmluZSBfU0VDVVJJVFlfU0VDQUNMX0hfIAojIDM5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNBQ0wu
aCIgMwpleHRlcm4gIkMiIHsKCgoKCgoKCkNGVHlwZUlEIFNlY0FDTEdldFR5cGVJRCh2b2lkKTsK
IyA1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRl
cnMvU2VjQUNMLmgiIDMKT1NTdGF0dXMgU2VjQUNMQ3JlYXRlRnJvbVNpbXBsZUNvbnRlbnRzKFNl
Y0FjY2Vzc1JlZiBhY2Nlc3MsCiBDRkFycmF5UmVmIGFwcGxpY2F0aW9uTGlzdCwKIENGU3RyaW5n
UmVmIGRlc2NyaXB0aW9uLCBjb25zdCBDU1NNX0FDTF9LRVlDSEFJTl9QUk9NUFRfU0VMRUNUT1Ig
KnByb21wdFNlbGVjdG9yLAogU2VjQUNMUmVmICpuZXdBY2wpOwoKCgoKCgoKT1NTdGF0dXMgU2Vj
QUNMUmVtb3ZlKFNlY0FDTFJlZiBhY2xSZWYpOwojIDgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNBQ0wuaCIgMwpPU1N0YXR1cyBTZWNB
Q0xDb3B5U2ltcGxlQ29udGVudHMoU2VjQUNMUmVmIGFjbCwKIENGQXJyYXlSZWYgKmFwcGxpY2F0
aW9uTGlzdCwKIENGU3RyaW5nUmVmICpkZXNjcmlwdGlvbiwgQ1NTTV9BQ0xfS0VZQ0hBSU5fUFJP
TVBUX1NFTEVDVE9SICpwcm9tcHRTZWxlY3Rvcik7CiMgOTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0FDTC5oIiAzCk9TU3RhdHVzIFNl
Y0FDTFNldFNpbXBsZUNvbnRlbnRzKFNlY0FDTFJlZiBhY2wsCiBDRkFycmF5UmVmIGFwcGxpY2F0
aW9uTGlzdCwKIENGU3RyaW5nUmVmIGRlc2NyaXB0aW9uLCBjb25zdCBDU1NNX0FDTF9LRVlDSEFJ
Tl9QUk9NUFRfU0VMRUNUT1IgKnByb21wdFNlbGVjdG9yKTsKIyAxMDYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0FDTC5oIiAzCk9TU3Rh
dHVzIFNlY0FDTEdldEF1dGhvcml6YXRpb25zKFNlY0FDTFJlZiBhY2wsCiBDU1NNX0FDTF9BVVRI
T1JJWkFUSU9OX1RBRyAqdGFncywgdWludDMyICp0YWdDb3VudCk7CiMgMTE3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNBQ0wuaCIgMwpP
U1N0YXR1cyBTZWNBQ0xTZXRBdXRob3JpemF0aW9ucyhTZWNBQ0xSZWYgYWNsLAogQ1NTTV9BQ0xf
QVVUSE9SSVpBVElPTl9UQUcgKnRhZ3MsIHVpbnQzMiB0YWdDb3VudCk7CgoKCn0KIyA1MyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJp
dHkuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrL0hlYWRlcnMvU2VjQ2VydGlmaWNhdGUuaCIgMSAzCiMgMzIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0NlcnRpZmljYXRlLmgiIDMK
I2RlZmluZSBfU0VDVVJJVFlfU0VDQ0VSVElGSUNBVEVfSF8gCiMgNDQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0NlcnRpZmljYXRlLmgi
IDMKZXh0ZXJuICJDIiB7CiMgNTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5
LmZyYW1ld29yay9IZWFkZXJzL1NlY0NlcnRpZmljYXRlLmgiIDMKZW51bQp7CiAgICBrU2VjU3Vi
amVjdEl0ZW1BdHRyID0gJ3N1YmonLAogICAga1NlY0lzc3Vlckl0ZW1BdHRyID0gJ2lzc3UnLAog
ICAga1NlY1NlcmlhbE51bWJlckl0ZW1BdHRyID0gJ3NuYnInLAogICAga1NlY1B1YmxpY0tleUhh
c2hJdGVtQXR0ciA9ICdocGt5JywKICAgIGtTZWNTdWJqZWN0S2V5SWRlbnRpZmllckl0ZW1BdHRy
ID0gJ3NraWQnLAoga1NlY0NlcnRUeXBlSXRlbUF0dHIgPSAnY3R5cCcsCiBrU2VjQ2VydEVuY29k
aW5nSXRlbUF0dHIgPSAnY2VuYycKfTsKCgoKCgoKQ0ZUeXBlSUQgU2VjQ2VydGlmaWNhdGVHZXRU
eXBlSUQodm9pZCk7CgogICAgICAgCiMgODggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Nl
Y3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0NlcnRpZmljYXRlLmgiIDMKT1NTdGF0dXMgU2Vj
Q2VydGlmaWNhdGVDcmVhdGVGcm9tRGF0YShjb25zdCBDU1NNX0RBVEEgKmRhdGEsIENTU01fQ0VS
VF9UWVBFIHR5cGUsIENTU01fQ0VSVF9FTkNPRElORyBlbmNvZGluZywgU2VjQ2VydGlmaWNhdGVS
ZWYgKmNlcnRpZmljYXRlKTsKIyA5NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJp
dHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjQ2VydGlmaWNhdGUuaCIgMwpTZWNDZXJ0aWZpY2F0ZVJl
ZiBTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwg
Q0ZEYXRhUmVmIGRhdGEpOwojIDEwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJp
dHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjQ2VydGlmaWNhdGUuaCIgMwpPU1N0YXR1cyBTZWNDZXJ0
aWZpY2F0ZUFkZFRvS2V5Y2hhaW4oU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGUsIFNlY0tl
eWNoYWluUmVmIGtleWNoYWluKTsKIyAxMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Nl
Y3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0NlcnRpZmljYXRlLmgiIDMKT1NTdGF0dXMgU2Vj
Q2VydGlmaWNhdGVHZXREYXRhKFNlY0NlcnRpZmljYXRlUmVmIGNlcnRpZmljYXRlLCBDU1NNX0RB
VEFfUFRSIGRhdGEpOwoKCgoKCgoKQ0ZEYXRhUmVmIFNlY0NlcnRpZmljYXRlQ29weURhdGEoU2Vj
Q2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGUpOwojIDEzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjQ2VydGlmaWNhdGUuaCIgMwpPU1N0
YXR1cyBTZWNDZXJ0aWZpY2F0ZUdldFR5cGUoU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGUs
IENTU01fQ0VSVF9UWVBFICpjZXJ0aWZpY2F0ZVR5cGUpOwojIDE0OSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjQ2VydGlmaWNhdGUuaCIg
MwpPU1N0YXR1cyBTZWNDZXJ0aWZpY2F0ZUdldFN1YmplY3QoU2VjQ2VydGlmaWNhdGVSZWYgY2Vy
dGlmaWNhdGUsIGNvbnN0IENTU01fWDUwOV9OQU1FICoqc3ViamVjdCk7CiMgMTY1ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNDZXJ0aWZp
Y2F0ZS5oIiAzCk9TU3RhdHVzIFNlY0NlcnRpZmljYXRlR2V0SXNzdWVyKFNlY0NlcnRpZmljYXRl
UmVmIGNlcnRpZmljYXRlLCBjb25zdCBDU1NNX1g1MDlfTkFNRSAqKmlzc3Vlcik7CiMgMTc0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWND
ZXJ0aWZpY2F0ZS5oIiAzCk9TU3RhdHVzIFNlY0NlcnRpZmljYXRlR2V0Q0xIYW5kbGUoU2VjQ2Vy
dGlmaWNhdGVSZWYgY2VydGlmaWNhdGUsIENTU01fQ0xfSEFORExFICpjbEhhbmRsZSk7CiMgMTgz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9T
ZWNDZXJ0aWZpY2F0ZS5oIiAzCk9TU3RhdHVzIFNlY0NlcnRpZmljYXRlR2V0QWxnb3JpdGhtSUQo
U2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGUsIGNvbnN0IENTU01fWDUwOV9BTEdPUklUSE1f
SURFTlRJRklFUiAqKmFsZ2lkKTsKIyAxOTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Nl
Y3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0NlcnRpZmljYXRlLmgiIDMKT1NTdGF0dXMgU2Vj
Q2VydGlmaWNhdGVDb3B5UHVibGljS2V5KFNlY0NlcnRpZmljYXRlUmVmIGNlcnRpZmljYXRlLCBT
ZWNLZXlSZWYgKmtleSk7CiMgMjAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0
eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNDZXJ0aWZpY2F0ZS5oIiAzCk9TU3RhdHVzIFNlY0NlcnRp
ZmljYXRlQ29weUNvbW1vbk5hbWUoU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGUsIENGU3Ry
aW5nUmVmICpjb21tb25OYW1lKTsKIyAyMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Nl
Y3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0NlcnRpZmljYXRlLmgiIDMKQ0ZTdHJpbmdSZWYg
U2VjQ2VydGlmaWNhdGVDb3B5U3ViamVjdFN1bW1hcnkoU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlm
aWNhdGUpOwojIDIxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrL0hlYWRlcnMvU2VjQ2VydGlmaWNhdGUuaCIgMwpPU1N0YXR1cyBTZWNDZXJ0aWZpY2F0ZUNv
cHlFbWFpbEFkZHJlc3NlcyhTZWNDZXJ0aWZpY2F0ZVJlZiBjZXJ0aWZpY2F0ZSwgQ0ZBcnJheVJl
ZiAqZW1haWxBZGRyZXNzZXMpOwojIDIzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2Vj
dXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjQ2VydGlmaWNhdGUuaCIgMwpPU1N0YXR1cyBTZWND
ZXJ0aWZpY2F0ZUNvcHlQcmVmZXJlbmNlKENGU3RyaW5nUmVmIG5hbWUsIENTU01fS0VZVVNFIGtl
eVVzYWdlLCBTZWNDZXJ0aWZpY2F0ZVJlZiAqY2VydGlmaWNhdGUpOwojIDI0MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjQ2VydGlmaWNh
dGUuaCIgMwpPU1N0YXR1cyBTZWNDZXJ0aWZpY2F0ZVNldFByZWZlcmVuY2UoU2VjQ2VydGlmaWNh
dGVSZWYgY2VydGlmaWNhdGUsIENGU3RyaW5nUmVmIG5hbWUsIENTU01fS0VZVVNFIGtleVVzYWdl
LCBDRkRhdGVSZWYgZGF0ZSk7CgoKCn0KIyA1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
U2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHkuaCIgMiAzCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjSWRlbnRpdHku
aCIgMSAzCiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29y
ay9IZWFkZXJzL1NlY0lkZW50aXR5LmgiIDMKI2RlZmluZSBfU0VDVVJJVFlfU0VDSURFTlRJVFlf
SF8gCiMgMzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9I
ZWFkZXJzL1NlY0lkZW50aXR5LmgiIDMKZXh0ZXJuICJDIiB7CgoKCgoKCgpDRlR5cGVJRCBTZWNJ
ZGVudGl0eUdldFR5cGVJRCh2b2lkKTsKIyA1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
U2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjSWRlbnRpdHkuaCIgMwpPU1N0YXR1cyBTZWNJ
ZGVudGl0eUNyZWF0ZVdpdGhDZXJ0aWZpY2F0ZSgKICAgQ0ZUeXBlUmVmIGtleWNoYWluT3JBcnJh
eSwKICAgU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGVSZWYsCiAgICAgICAgICAgIFNlY0lk
ZW50aXR5UmVmICppZGVudGl0eVJlZik7CiMgNjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0lkZW50aXR5LmgiIDMKT1NTdGF0dXMgU2Vj
SWRlbnRpdHlDb3B5Q2VydGlmaWNhdGUoCiAgICAgICAgICAgIFNlY0lkZW50aXR5UmVmIGlkZW50
aXR5UmVmLAogICAgICAgICAgICBTZWNDZXJ0aWZpY2F0ZVJlZiAqY2VydGlmaWNhdGVSZWYpOwoj
IDgwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVy
cy9TZWNJZGVudGl0eS5oIiAzCk9TU3RhdHVzIFNlY0lkZW50aXR5Q29weVByaXZhdGVLZXkoCiAg
ICAgICAgICAgIFNlY0lkZW50aXR5UmVmIGlkZW50aXR5UmVmLAogICAgICAgICAgICBTZWNLZXlS
ZWYgKnByaXZhdGVLZXlSZWYpOwojIDk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1
cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNJZGVudGl0eS5oIiAzCk9TU3RhdHVzIFNlY0lkZW50
aXR5Q29weVByZWZlcmVuY2UoQ0ZTdHJpbmdSZWYgbmFtZSwgQ1NTTV9LRVlVU0Uga2V5VXNhZ2Us
IENGQXJyYXlSZWYgdmFsaWRJc3N1ZXJzLCBTZWNJZGVudGl0eVJlZiAqaWRlbnRpdHkpOwojIDEw
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMv
U2VjSWRlbnRpdHkuaCIgMwpPU1N0YXR1cyBTZWNJZGVudGl0eVNldFByZWZlcmVuY2UoU2VjSWRl
bnRpdHlSZWYgaWRlbnRpdHksIENGU3RyaW5nUmVmIG5hbWUsIENTU01fS0VZVVNFIGtleVVzYWdl
KTsKIyAxMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9I
ZWFkZXJzL1NlY0lkZW50aXR5LmgiIDMKT1NTdGF0dXMgU2VjSWRlbnRpdHlDb3B5U3lzdGVtSWRl
bnRpdHkoCiAgIENGU3RyaW5nUmVmIGRvbWFpbiwKICAgU2VjSWRlbnRpdHlSZWYgKmlkUmVmLAog
ICBDRlN0cmluZ1JlZiAqYWN0dWFsRG9tYWluKTsKIyAxNDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0lkZW50aXR5LmgiIDMKT1NTdGF0
dXMgU2VjSWRlbnRpdHlTZXRTeXN0ZW1JZGVudGl0eSgKICAgQ0ZTdHJpbmdSZWYgZG9tYWluLAog
ICBTZWNJZGVudGl0eVJlZiBpZFJlZik7CiMgMTU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNJZGVudGl0eS5oIiAzCmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrU2VjSWRlbnRpdHlEb21haW5EZWZhdWx0OwoKCgoKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtTZWNJZGVudGl0eURvbWFpbktlcmJlcm9zS0RDOwoKCn0KIyA1NSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJp
dHkuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrL0hlYWRlcnMvU2VjSWRlbnRpdHlTZWFyY2guaCIgMSAzCiMgMzAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0lkZW50aXR5U2VhcmNo
LmgiIDMKI2RlZmluZSBfU0VDVVJJVFlfU0VDSURFTlRJVFlTRUFSQ0hfSF8gCiMgNDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0lkZW50
aXR5U2VhcmNoLmgiIDMKZXh0ZXJuICJDIiB7CgoKCgoKCnR5cGVkZWYgc3RydWN0IE9wYXF1ZVNl
Y0lkZW50aXR5U2VhcmNoUmVmICpTZWNJZGVudGl0eVNlYXJjaFJlZjsKCgoKCgoKQ0ZUeXBlSUQg
U2VjSWRlbnRpdHlTZWFyY2hHZXRUeXBlSUQodm9pZCk7CiMgNjYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0lkZW50aXR5U2VhcmNoLmgi
IDMKT1NTdGF0dXMgU2VjSWRlbnRpdHlTZWFyY2hDcmVhdGUoQ0ZUeXBlUmVmIGtleWNoYWluT3JB
cnJheSwgQ1NTTV9LRVlVU0Uga2V5VXNhZ2UsIFNlY0lkZW50aXR5U2VhcmNoUmVmICpzZWFyY2hS
ZWYpOwojIDc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsv
SGVhZGVycy9TZWNJZGVudGl0eVNlYXJjaC5oIiAzCk9TU3RhdHVzIFNlY0lkZW50aXR5U2VhcmNo
Q29weU5leHQoU2VjSWRlbnRpdHlTZWFyY2hSZWYgc2VhcmNoUmVmLCBTZWNJZGVudGl0eVJlZiAq
aWRlbnRpdHkpOwoKCn0KIyA1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHku
ZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHkuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5LmgiIDEgMwojIDM0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNL
ZXkuaCIgMwojZGVmaW5lIF9TRUNVUklUWV9TRUNLRVlfSF8gCgoKCgoKCgpleHRlcm4gIkMiIHsK
IyAxMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFk
ZXJzL1NlY0tleS5oIiAzCmVudW0KewogICAga1NlY0tleUtleUNsYXNzID0gMCwKICAgIGtTZWNL
ZXlQcmludE5hbWUgPSAxLAogICAga1NlY0tleUFsaWFzID0gMiwKICAgIGtTZWNLZXlQZXJtYW5l
bnQgPSAzLAogICAga1NlY0tleVByaXZhdGUgPSA0LAogICAga1NlY0tleU1vZGlmaWFibGUgPSA1
LAogICAga1NlY0tleUxhYmVsID0gNiwKICAgIGtTZWNLZXlBcHBsaWNhdGlvblRhZyA9IDcsCiAg
ICBrU2VjS2V5S2V5Q3JlYXRvciA9IDgsCiAgICBrU2VjS2V5S2V5VHlwZSA9IDksCiAgICBrU2Vj
S2V5S2V5U2l6ZUluQml0cyA9IDEwLAogICAga1NlY0tleUVmZmVjdGl2ZUtleVNpemUgPSAxMSwK
ICAgIGtTZWNLZXlTdGFydERhdGUgPSAxMiwKICAgIGtTZWNLZXlFbmREYXRlID0gMTMsCiAgICBr
U2VjS2V5U2Vuc2l0aXZlID0gMTQsCiAgICBrU2VjS2V5QWx3YXlzU2Vuc2l0aXZlID0gMTUsCiAg
ICBrU2VjS2V5RXh0cmFjdGFibGUgPSAxNiwKICAgIGtTZWNLZXlOZXZlckV4dHJhY3RhYmxlID0g
MTcsCiAgICBrU2VjS2V5RW5jcnlwdCA9IDE4LAogICAga1NlY0tleURlY3J5cHQgPSAxOSwKICAg
IGtTZWNLZXlEZXJpdmUgPSAyMCwKICAgIGtTZWNLZXlTaWduID0gMjEsCiAgICBrU2VjS2V5VmVy
aWZ5ID0gMjIsCiAgICBrU2VjS2V5U2lnblJlY292ZXIgPSAyMywKICAgIGtTZWNLZXlWZXJpZnlS
ZWNvdmVyID0gMjQsCiAgICBrU2VjS2V5V3JhcCA9IDI1LAogICAga1NlY0tleVVud3JhcCA9IDI2
Cn07CgoKCgoKdHlwZWRlZiB1aW50MzIgU2VjQ3JlZGVudGlhbFR5cGU7CiMgMTU3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNLZXkuaCIg
MwplbnVtCnsKIGtTZWNDcmVkZW50aWFsVHlwZURlZmF1bHQgPSAwLAoga1NlY0NyZWRlbnRpYWxU
eXBlV2l0aFVJLAoga1NlY0NyZWRlbnRpYWxUeXBlTm9VSQp9OwoKCgoKCnR5cGVkZWYgdWludDMy
X3QgU2VjUGFkZGluZzsKZW51bQp7CiAgICBrU2VjUGFkZGluZ05vbmUgPSAwLAogICAga1NlY1Bh
ZGRpbmdQS0NTMSA9IDEsCgoKCgogICAga1NlY1BhZGRpbmdQS0NTMU1EMiA9IDB4ODAwMCwKCgoK
CiAgICBrU2VjUGFkZGluZ1BLQ1MxTUQ1ID0gMHg4MDAxLAoKCgoKICAgIGtTZWNQYWRkaW5nUEtD
UzFTSEExID0gMHg4MDAyLAp9OwoKCgoKCgoKQ0ZUeXBlSUQgU2VjS2V5R2V0VHlwZUlEKHZvaWQp
OwojIDIxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hl
YWRlcnMvU2VjS2V5LmgiIDMKT1NTdGF0dXMgU2VjS2V5Q3JlYXRlUGFpcigKICAgICAgICBTZWNL
ZXljaGFpblJlZiBrZXljaGFpblJlZiwKICAgICAgICBDU1NNX0FMR09SSVRITVMgYWxnb3JpdGht
LAogICAgICAgIHVpbnQzMiBrZXlTaXplSW5CaXRzLAogICAgICAgIENTU01fQ0NfSEFORExFIGNv
bnRleHRIYW5kbGUsCiAgICAgICAgQ1NTTV9LRVlVU0UgcHVibGljS2V5VXNhZ2UsCiAgICAgICAg
dWludDMyIHB1YmxpY0tleUF0dHIsCiAgICAgICAgQ1NTTV9LRVlVU0UgcHJpdmF0ZUtleVVzYWdl
LAogICAgICAgIHVpbnQzMiBwcml2YXRlS2V5QXR0ciwKICAgICAgICBTZWNBY2Nlc3NSZWYgaW5p
dGlhbEFjY2VzcywKICAgICAgICBTZWNLZXlSZWYqIHB1YmxpY0tleSwKICAgICAgICBTZWNLZXlS
ZWYqIHByaXZhdGVLZXkpOwojIDI0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJp
dHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5LmgiIDMKT1NTdGF0dXMgU2VjS2V5R2VuZXJhdGUo
CiAgICAgICAgU2VjS2V5Y2hhaW5SZWYga2V5Y2hhaW5SZWYsCiAgICAgICAgQ1NTTV9BTEdPUklU
SE1TIGFsZ29yaXRobSwKICAgICAgICB1aW50MzIga2V5U2l6ZUluQml0cywKICAgICAgICBDU1NN
X0NDX0hBTkRMRSBjb250ZXh0SGFuZGxlLAogICAgICAgIENTU01fS0VZVVNFIGtleVVzYWdlLAog
ICAgICAgIHVpbnQzMiBrZXlBdHRyLAogICAgICAgIFNlY0FjY2Vzc1JlZiBpbml0aWFsQWNjZXNz
LAogICAgICAgIFNlY0tleVJlZioga2V5UmVmKTsKIyAyNTggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0tleS5oIiAzCk9TU3RhdHVzIFNl
Y0tleUdldENTU01LZXkoU2VjS2V5UmVmIGtleSwgY29uc3QgQ1NTTV9LRVkgKipjc3NtS2V5KTsK
IyAyNjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFk
ZXJzL1NlY0tleS5oIiAzCk9TU3RhdHVzIFNlY0tleUdldENTUEhhbmRsZShTZWNLZXlSZWYga2V5
UmVmLCBDU1NNX0NTUF9IQU5ETEUgKmNzcEhhbmRsZSk7CiMgMjc4ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNLZXkuaCIgMwpPU1N0YXR1
cyBTZWNLZXlHZXRDcmVkZW50aWFscygKICAgICAgICBTZWNLZXlSZWYga2V5UmVmLAogICAgICAg
IENTU01fQUNMX0FVVEhPUklaQVRJT05fVEFHIG9wZXJhdGlvbiwKICAgICAgICBTZWNDcmVkZW50
aWFsVHlwZSBjcmVkZW50aWFsVHlwZSwKICAgICAgICBjb25zdCBDU1NNX0FDQ0VTU19DUkVERU5U
SUFMUyAqKm91dENyZWRlbnRpYWxzKTsKIyAyOTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0tleS5oIiAzCnNpemVfdCBTZWNLZXlHZXRC
bG9ja1NpemUoU2VjS2V5UmVmIGtleSk7CgoKCn0KIyA1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHkuaCIgMiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5
Y2hhaW4uaCIgMSAzCiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZy
YW1ld29yay9IZWFkZXJzL1NlY0tleWNoYWluLmgiIDMKI2RlZmluZSBfU0VDVVJJVFlfU0VDS0VZ
Q0hBSU5fSF8gCgoKCgoKCmV4dGVybiAiQyIgewojIDQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNLZXljaGFpbi5oIiAzCmVudW0Kewog
ICAga1NlY1VubG9ja1N0YXRlU3RhdHVzID0gMSwKICAgIGtTZWNSZWFkUGVybVN0YXR1cyA9IDIs
CiAgICBrU2VjV3JpdGVQZXJtU3RhdHVzID0gNAp9OwoKI2RlZmluZSBTRUNfS0VZQ0hBSU5fU0VU
VElOR1NfVkVSUzEgMQojIDY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5m
cmFtZXdvcmsvSGVhZGVycy9TZWNLZXljaGFpbi5oIiAzCnN0cnVjdCBTZWNLZXljaGFpblNldHRp
bmdzCnsKIFVJbnQzMiB2ZXJzaW9uOwogQm9vbGVhbiBsb2NrT25TbGVlcDsKIEJvb2xlYW4gdXNl
TG9ja0ludGVydmFsOwogVUludDMyIGxvY2tJbnRlcnZhbDsKfTsKdHlwZWRlZiBzdHJ1Y3QgU2Vj
S2V5Y2hhaW5TZXR0aW5ncyBTZWNLZXljaGFpblNldHRpbmdzOwoKCgoKCnR5cGVkZWYgRm91ckNo
YXJDb2RlIFNlY0F1dGhlbnRpY2F0aW9uVHlwZTsKIyA5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW4uaCIgMwojZGVmaW5l
IEFVVEhfVFlQRV9GSVhfKHgpICgoeCA+PiAyNCkgfCAoKHggPj4gOCkgJiAweGZmMDApIHwgKCh4
IDw8IDgpICYgMHhmZjAwMDApIHwgKHggJiAweGZmKSA8PCAyNCkKCgoKCgplbnVtCnsKICAgIGtT
ZWNBdXRoZW50aWNhdGlvblR5cGVOVExNID0gKCgnbnRsbScgPj4gMjQpIHwgKCgnbnRsbScgPj4g
OCkgJiAweGZmMDApIHwgKCgnbnRsbScgPDwgOCkgJiAweGZmMDAwMCkgfCAoJ250bG0nICYgMHhm
ZikgPDwgMjQpLAogICAga1NlY0F1dGhlbnRpY2F0aW9uVHlwZU1TTiA9ICgoJ21zbmEnID4+IDI0
KSB8ICgoJ21zbmEnID4+IDgpICYgMHhmZjAwKSB8ICgoJ21zbmEnIDw8IDgpICYgMHhmZjAwMDAp
IHwgKCdtc25hJyAmIDB4ZmYpIDw8IDI0KSwKICAgIGtTZWNBdXRoZW50aWNhdGlvblR5cGVEUEEg
PSAoKCdkcGFhJyA+PiAyNCkgfCAoKCdkcGFhJyA+PiA4KSAmIDB4ZmYwMCkgfCAoKCdkcGFhJyA8
PCA4KSAmIDB4ZmYwMDAwKSB8ICgnZHBhYScgJiAweGZmKSA8PCAyNCksCiAgICBrU2VjQXV0aGVu
dGljYXRpb25UeXBlUlBBID0gKCgncnBhYScgPj4gMjQpIHwgKCgncnBhYScgPj4gOCkgJiAweGZm
MDApIHwgKCgncnBhYScgPDwgOCkgJiAweGZmMDAwMCkgfCAoJ3JwYWEnICYgMHhmZikgPDwgMjQp
LAogICAga1NlY0F1dGhlbnRpY2F0aW9uVHlwZUhUVFBCYXNpYyA9ICgoJ2h0dHAnID4+IDI0KSB8
ICgoJ2h0dHAnID4+IDgpICYgMHhmZjAwKSB8ICgoJ2h0dHAnIDw8IDgpICYgMHhmZjAwMDApIHwg
KCdodHRwJyAmIDB4ZmYpIDw8IDI0KSwKICAgIGtTZWNBdXRoZW50aWNhdGlvblR5cGVIVFRQRGln
ZXN0ID0gKCgnaHR0ZCcgPj4gMjQpIHwgKCgnaHR0ZCcgPj4gOCkgJiAweGZmMDApIHwgKCgnaHR0
ZCcgPDwgOCkgJiAweGZmMDAwMCkgfCAoJ2h0dGQnICYgMHhmZikgPDwgMjQpLAogICAga1NlY0F1
dGhlbnRpY2F0aW9uVHlwZUhUTUxGb3JtID0gKCgnZm9ybScgPj4gMjQpIHwgKCgnZm9ybScgPj4g
OCkgJiAweGZmMDApIHwgKCgnZm9ybScgPDwgOCkgJiAweGZmMDAwMCkgfCAoJ2Zvcm0nICYgMHhm
ZikgPDwgMjQpLAogICAga1NlY0F1dGhlbnRpY2F0aW9uVHlwZURlZmF1bHQgPSAoKCdkZmx0JyA+
PiAyNCkgfCAoKCdkZmx0JyA+PiA4KSAmIDB4ZmYwMCkgfCAoKCdkZmx0JyA8PCA4KSAmIDB4ZmYw
MDAwKSB8ICgnZGZsdCcgJiAweGZmKSA8PCAyNCksCiAgICBrU2VjQXV0aGVudGljYXRpb25UeXBl
QW55ID0gKCgwID4+IDI0KSB8ICgoMCA+PiA4KSAmIDB4ZmYwMCkgfCAoKDAgPDwgOCkgJiAweGZm
MDAwMCkgfCAoMCAmIDB4ZmYpIDw8IDI0KQp9OwoKCgoKCnR5cGVkZWYgRm91ckNoYXJDb2RlIFNl
Y1Byb3RvY29sVHlwZTsKIyAxNTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5
LmZyYW1ld29yay9IZWFkZXJzL1NlY0tleWNoYWluLmgiIDMKZW51bQp7CiAgICBrU2VjUHJvdG9j
b2xUeXBlRlRQID0gJ2Z0cCAnLAogICAga1NlY1Byb3RvY29sVHlwZUZUUEFjY291bnQgPSAnZnRw
YScsCiAgICBrU2VjUHJvdG9jb2xUeXBlSFRUUCA9ICdodHRwJywKICAgIGtTZWNQcm90b2NvbFR5
cGVJUkMgPSAnaXJjICcsCiAgICBrU2VjUHJvdG9jb2xUeXBlTk5UUCA9ICdubnRwJywKICAgIGtT
ZWNQcm90b2NvbFR5cGVQT1AzID0gJ3BvcDMnLAogICAga1NlY1Byb3RvY29sVHlwZVNNVFAgPSAn
c210cCcsCiAgICBrU2VjUHJvdG9jb2xUeXBlU09DS1MgPSAnc294ICcsCiAgICBrU2VjUHJvdG9j
b2xUeXBlSU1BUCA9ICdpbWFwJywKICAgIGtTZWNQcm90b2NvbFR5cGVMREFQID0gJ2xkYXAnLAog
ICAga1NlY1Byb3RvY29sVHlwZUFwcGxlVGFsayA9ICdhdGxrJywKICAgIGtTZWNQcm90b2NvbFR5
cGVBRlAgPSAnYWZwICcsCiAgICBrU2VjUHJvdG9jb2xUeXBlVGVsbmV0ID0gJ3RlbG4nLAogICAg
a1NlY1Byb3RvY29sVHlwZVNTSCA9ICdzc2ggJywKICAgIGtTZWNQcm90b2NvbFR5cGVGVFBTID0g
J2Z0cHMnLAogICAga1NlY1Byb3RvY29sVHlwZUhUVFBTID0gJ2h0cHMnLAogICAga1NlY1Byb3Rv
Y29sVHlwZUhUVFBQcm94eSA9ICdodHB4JywKICAgIGtTZWNQcm90b2NvbFR5cGVIVFRQU1Byb3h5
ID0gJ2h0c3gnLAogICAga1NlY1Byb3RvY29sVHlwZUZUUFByb3h5ID0gJ2Z0cHgnLAogICAga1Nl
Y1Byb3RvY29sVHlwZUNJRlMgPSAnY2lmcycsCiAgICBrU2VjUHJvdG9jb2xUeXBlU01CID0gJ3Nt
YiAnLAogICAga1NlY1Byb3RvY29sVHlwZVJUU1AgPSAncnRzcCcsCiAgICBrU2VjUHJvdG9jb2xU
eXBlUlRTUFByb3h5ID0gJ3J0c3gnLAogICAga1NlY1Byb3RvY29sVHlwZURBQVAgPSAnZGFhcCcs
CiAgICBrU2VjUHJvdG9jb2xUeXBlRVBQQyA9ICdlcHBjJywKICAgIGtTZWNQcm90b2NvbFR5cGVJ
UFAgPSAnaXBwICcsCiAgICBrU2VjUHJvdG9jb2xUeXBlTk5UUFMgPSAnbnRwcycsCiAgICBrU2Vj
UHJvdG9jb2xUeXBlTERBUFMgPSAnbGRwcycsCiAgICBrU2VjUHJvdG9jb2xUeXBlVGVsbmV0UyA9
ICd0ZWxzJywKICAgIGtTZWNQcm90b2NvbFR5cGVJTUFQUyA9ICdpbXBzJywKICAgIGtTZWNQcm90
b2NvbFR5cGVJUkNTID0gJ2lyY3MnLAogICAga1NlY1Byb3RvY29sVHlwZVBPUDNTID0gJ3BvcHMn
LAogICAga1NlY1Byb3RvY29sVHlwZUNWU3BzZXJ2ZXIgPSAnY3ZzcCcsCiAgICBrU2VjUHJvdG9j
b2xUeXBlU1ZOID0gJ3N2biAnLAogICAga1NlY1Byb3RvY29sVHlwZUFueSA9IDAKfTsKCgoKCgp0
eXBlZGVmIFVJbnQzMiBTZWNLZXljaGFpbkV2ZW50OwojIDIxNiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW4uaCIgMwplbnVt
CnsKICAgIGtTZWNMb2NrRXZlbnQgPSAxLAogICAga1NlY1VubG9ja0V2ZW50ID0gMiwKICAgIGtT
ZWNBZGRFdmVudCA9IDMsCiAgICBrU2VjRGVsZXRlRXZlbnQgPSA0LAogICAga1NlY1VwZGF0ZUV2
ZW50ID0gNSwKICAgIGtTZWNQYXNzd29yZENoYW5nZWRFdmVudCA9IDYsCiAgICBrU2VjRGVmYXVs
dENoYW5nZWRFdmVudCA9IDksCiAgICBrU2VjRGF0YUFjY2Vzc0V2ZW50ID0gMTAsCiAgICBrU2Vj
S2V5Y2hhaW5MaXN0Q2hhbmdlZEV2ZW50ID0gMTEsCiBrU2VjVHJ1c3RTZXR0aW5nc0NoYW5nZWRF
dmVudCA9IDEyCn07CgoKCgoKdHlwZWRlZiBVSW50MzIgU2VjS2V5Y2hhaW5FdmVudE1hc2s7CiMg
MjUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVy
cy9TZWNLZXljaGFpbi5oIiAzCmVudW0KewogICAga1NlY0xvY2tFdmVudE1hc2sgPSAxIDw8IGtT
ZWNMb2NrRXZlbnQsCiAgICBrU2VjVW5sb2NrRXZlbnRNYXNrID0gMSA8PCBrU2VjVW5sb2NrRXZl
bnQsCiAgICBrU2VjQWRkRXZlbnRNYXNrID0gMSA8PCBrU2VjQWRkRXZlbnQsCiAgICBrU2VjRGVs
ZXRlRXZlbnRNYXNrID0gMSA8PCBrU2VjRGVsZXRlRXZlbnQsCiAgICBrU2VjVXBkYXRlRXZlbnRN
YXNrID0gMSA8PCBrU2VjVXBkYXRlRXZlbnQsCiAgICBrU2VjUGFzc3dvcmRDaGFuZ2VkRXZlbnRN
YXNrID0gMSA8PCBrU2VjUGFzc3dvcmRDaGFuZ2VkRXZlbnQsCiAgICBrU2VjRGVmYXVsdENoYW5n
ZWRFdmVudE1hc2sgPSAxIDw8IGtTZWNEZWZhdWx0Q2hhbmdlZEV2ZW50LAogICAga1NlY0RhdGFB
Y2Nlc3NFdmVudE1hc2sgPSAxIDw8IGtTZWNEYXRhQWNjZXNzRXZlbnQsCiAgICBrU2VjS2V5Y2hh
aW5MaXN0Q2hhbmdlZE1hc2sgPSAxIDw8IGtTZWNLZXljaGFpbkxpc3RDaGFuZ2VkRXZlbnQsCiBr
U2VjVHJ1c3RTZXR0aW5nc0NoYW5nZWRFdmVudE1hc2sgPSAxIDw8IGtTZWNUcnVzdFNldHRpbmdz
Q2hhbmdlZEV2ZW50LAogICAga1NlY0V2ZXJ5RXZlbnRNYXNrID0gMHhmZmZmZmZmZgp9OwojIDI3
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMv
U2VjS2V5Y2hhaW4uaCIgMwpzdHJ1Y3QgU2VjS2V5Y2hhaW5DYWxsYmFja0luZm8KewogICAgVUlu
dDMyIHZlcnNpb247CiAgICBTZWNLZXljaGFpbkl0ZW1SZWYgaXRlbTsKICAgIFNlY0tleWNoYWlu
UmVmIGtleWNoYWluOwogcGlkX3QgcGlkOwp9Owp0eXBlZGVmIHN0cnVjdCBTZWNLZXljaGFpbkNh
bGxiYWNrSW5mbyBTZWNLZXljaGFpbkNhbGxiYWNrSW5mbzsKCgoKCgoKQ0ZUeXBlSUQgU2VjS2V5
Y2hhaW5HZXRUeXBlSUQodm9pZCk7CgoKCgoKCgpPU1N0YXR1cyBTZWNLZXljaGFpbkdldFZlcnNp
b24oVUludDMyICpyZXR1cm5WZXJzKTsKCiAgICAgICAKIyAzMDggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0tleWNoYWluLmgiIDMKT1NT
dGF0dXMgU2VjS2V5Y2hhaW5PcGVuKGNvbnN0IGNoYXIgKnBhdGhOYW1lLCBTZWNLZXljaGFpblJl
ZiAqa2V5Y2hhaW4pOwojIDMyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHku
ZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW4uaCIgMwpPU1N0YXR1cyBTZWNLZXljaGFpbkNy
ZWF0ZShjb25zdCBjaGFyICpwYXRoTmFtZSwgVUludDMyIHBhc3N3b3JkTGVuZ3RoLCBjb25zdCB2
b2lkICpwYXNzd29yZCwgQm9vbGVhbiBwcm9tcHRVc2VyLCBTZWNBY2Nlc3NSZWYgaW5pdGlhbEFj
Y2VzcywgU2VjS2V5Y2hhaW5SZWYgKmtleWNoYWluKTsKCgoKCgoKCk9TU3RhdHVzIFNlY0tleWNo
YWluRGVsZXRlKFNlY0tleWNoYWluUmVmIGtleWNoYWluT3JBcnJheSk7CiMgMzM4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNLZXljaGFp
bi5oIiAzCk9TU3RhdHVzIFNlY0tleWNoYWluU2V0U2V0dGluZ3MoU2VjS2V5Y2hhaW5SZWYga2V5
Y2hhaW4sIGNvbnN0IFNlY0tleWNoYWluU2V0dGluZ3MgKm5ld1NldHRpbmdzKTsKIyAzNDcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0tl
eWNoYWluLmgiIDMKT1NTdGF0dXMgU2VjS2V5Y2hhaW5Db3B5U2V0dGluZ3MoU2VjS2V5Y2hhaW5S
ZWYga2V5Y2hhaW4sIFNlY0tleWNoYWluU2V0dGluZ3MgKm91dFNldHRpbmdzKTsKIyAzNTkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0tl
eWNoYWluLmgiIDMKT1NTdGF0dXMgU2VjS2V5Y2hhaW5VbmxvY2soU2VjS2V5Y2hhaW5SZWYga2V5
Y2hhaW4sIFVJbnQzMiBwYXNzd29yZExlbmd0aCwgY29uc3Qgdm9pZCAqcGFzc3dvcmQsIEJvb2xl
YW4gdXNlUGFzc3dvcmQpOwoKCgoKCgoKT1NTdGF0dXMgU2VjS2V5Y2hhaW5Mb2NrKFNlY0tleWNo
YWluUmVmIGtleWNoYWluKTsKCgoKCgoKT1NTdGF0dXMgU2VjS2V5Y2hhaW5Mb2NrQWxsKHZvaWQp
OwoKCgoKCgoKT1NTdGF0dXMgU2VjS2V5Y2hhaW5Db3B5RGVmYXVsdChTZWNLZXljaGFpblJlZiAq
a2V5Y2hhaW4pOwoKCgoKCgoKT1NTdGF0dXMgU2VjS2V5Y2hhaW5TZXREZWZhdWx0KFNlY0tleWNo
YWluUmVmIGtleWNoYWluKTsKCgoKCgoKCk9TU3RhdHVzIFNlY0tleWNoYWluQ29weVNlYXJjaExp
c3QoQ0ZBcnJheVJlZiAqc2VhcmNoTGlzdCk7CgoKCgoKCgpPU1N0YXR1cyBTZWNLZXljaGFpblNl
dFNlYXJjaExpc3QoQ0ZBcnJheVJlZiBzZWFyY2hMaXN0KTsKCgoKCgoKdHlwZWRlZiBlbnVtIHsK
IGtTZWNQcmVmZXJlbmNlc0RvbWFpblVzZXIsCiBrU2VjUHJlZmVyZW5jZXNEb21haW5TeXN0ZW0s
CiBrU2VjUHJlZmVyZW5jZXNEb21haW5Db21tb24sCiBrU2VjUHJlZmVyZW5jZXNEb21haW5EeW5h
bWljCn0gU2VjUHJlZmVyZW5jZXNEb21haW47CgpPU1N0YXR1cyBTZWNLZXljaGFpbkNvcHlEb21h
aW5EZWZhdWx0KFNlY1ByZWZlcmVuY2VzRG9tYWluIGRvbWFpbiwgU2VjS2V5Y2hhaW5SZWYgKmtl
eWNoYWluKTsKT1NTdGF0dXMgU2VjS2V5Y2hhaW5TZXREb21haW5EZWZhdWx0KFNlY1ByZWZlcmVu
Y2VzRG9tYWluIGRvbWFpbiwgU2VjS2V5Y2hhaW5SZWYga2V5Y2hhaW4pOwpPU1N0YXR1cyBTZWNL
ZXljaGFpbkNvcHlEb21haW5TZWFyY2hMaXN0KFNlY1ByZWZlcmVuY2VzRG9tYWluIGRvbWFpbiwg
Q0ZBcnJheVJlZiAqc2VhcmNoTGlzdCk7Ck9TU3RhdHVzIFNlY0tleWNoYWluU2V0RG9tYWluU2Vh
cmNoTGlzdChTZWNQcmVmZXJlbmNlc0RvbWFpbiBkb21haW4sIENGQXJyYXlSZWYgc2VhcmNoTGlz
dCk7Ck9TU3RhdHVzIFNlY0tleWNoYWluU2V0UHJlZmVyZW5jZURvbWFpbihTZWNQcmVmZXJlbmNl
c0RvbWFpbiBkb21haW4pOwpPU1N0YXR1cyBTZWNLZXljaGFpbkdldFByZWZlcmVuY2VEb21haW4o
U2VjUHJlZmVyZW5jZXNEb21haW4gKmRvbWFpbik7CiMgNDM1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNLZXljaGFpbi5oIiAzCk9TU3Rh
dHVzIFNlY0tleWNoYWluR2V0U3RhdHVzKFNlY0tleWNoYWluUmVmIGtleWNoYWluLCBTZWNLZXlj
aGFpblN0YXR1cyAqa2V5Y2hhaW5TdGF0dXMpOwojIDQ0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW4uaCIgMwpPU1N0YXR1
cyBTZWNLZXljaGFpbkdldFBhdGgoU2VjS2V5Y2hhaW5SZWYga2V5Y2hhaW4sIFVJbnQzMiAqaW9Q
YXRoTGVuZ3RoLCBjaGFyICpwYXRoTmFtZSk7CgogICAgICAgCiMgNDU3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNLZXljaGFpbi5oIiAz
Ck9TU3RhdHVzIFNlY0tleWNoYWluQXR0cmlidXRlSW5mb0Zvckl0ZW1JRChTZWNLZXljaGFpblJl
ZiBrZXljaGFpbiwgVUludDMyIGl0ZW1JRCwgU2VjS2V5Y2hhaW5BdHRyaWJ1dGVJbmZvICoqaW5m
byk7CgoKCgoKCgpPU1N0YXR1cyBTZWNLZXljaGFpbkZyZWVBdHRyaWJ1dGVJbmZvKFNlY0tleWNo
YWluQXR0cmlidXRlSW5mbyAqaW5mbyk7CgogICAgICAgCiMgNDg0ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNLZXljaGFpbi5oIiAzCnR5
cGVkZWYgT1NTdGF0dXMgKCpTZWNLZXljaGFpbkNhbGxiYWNrKShTZWNLZXljaGFpbkV2ZW50IGtl
eWNoYWluRXZlbnQsIFNlY0tleWNoYWluQ2FsbGJhY2tJbmZvICppbmZvLCB2b2lkICpjb250ZXh0
KTsKIyA0OTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9I
ZWFkZXJzL1NlY0tleWNoYWluLmgiIDMKT1NTdGF0dXMgU2VjS2V5Y2hhaW5BZGRDYWxsYmFjayhT
ZWNLZXljaGFpbkNhbGxiYWNrIGNhbGxiYWNrRnVuY3Rpb24sIFNlY0tleWNoYWluRXZlbnRNYXNr
IGV2ZW50TWFzaywgdm9pZCogdXNlckNvbnRleHQpOwoKCgoKCgoKT1NTdGF0dXMgU2VjS2V5Y2hh
aW5SZW1vdmVDYWxsYmFjayhTZWNLZXljaGFpbkNhbGxiYWNrIGNhbGxiYWNrRnVuY3Rpb24pOwoK
ICAgICAgIAojIDUyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW4uaCIgMwpPU1N0YXR1cyBTZWNLZXljaGFpbkFkZEludGVy
bmV0UGFzc3dvcmQoU2VjS2V5Y2hhaW5SZWYga2V5Y2hhaW4sIFVJbnQzMiBzZXJ2ZXJOYW1lTGVu
Z3RoLCBjb25zdCBjaGFyICpzZXJ2ZXJOYW1lLCBVSW50MzIgc2VjdXJpdHlEb21haW5MZW5ndGgs
IGNvbnN0IGNoYXIgKnNlY3VyaXR5RG9tYWluLCBVSW50MzIgYWNjb3VudE5hbWVMZW5ndGgsIGNv
bnN0IGNoYXIgKmFjY291bnROYW1lLCBVSW50MzIgcGF0aExlbmd0aCwgY29uc3QgY2hhciAqcGF0
aCwgVUludDE2IHBvcnQsIFNlY1Byb3RvY29sVHlwZSBwcm90b2NvbCwgU2VjQXV0aGVudGljYXRp
b25UeXBlIGF1dGhlbnRpY2F0aW9uVHlwZSwgVUludDMyIHBhc3N3b3JkTGVuZ3RoLCBjb25zdCB2
b2lkICpwYXNzd29yZERhdGEsIFNlY0tleWNoYWluSXRlbVJlZiAqaXRlbVJlZik7CiMgNTQ5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNL
ZXljaGFpbi5oIiAzCk9TU3RhdHVzIFNlY0tleWNoYWluRmluZEludGVybmV0UGFzc3dvcmQoQ0ZU
eXBlUmVmIGtleWNoYWluT3JBcnJheSwgVUludDMyIHNlcnZlck5hbWVMZW5ndGgsIGNvbnN0IGNo
YXIgKnNlcnZlck5hbWUsIFVJbnQzMiBzZWN1cml0eURvbWFpbkxlbmd0aCwgY29uc3QgY2hhciAq
c2VjdXJpdHlEb21haW4sIFVJbnQzMiBhY2NvdW50TmFtZUxlbmd0aCwgY29uc3QgY2hhciAqYWNj
b3VudE5hbWUsIFVJbnQzMiBwYXRoTGVuZ3RoLCBjb25zdCBjaGFyICpwYXRoLCBVSW50MTYgcG9y
dCwgU2VjUHJvdG9jb2xUeXBlIHByb3RvY29sLCBTZWNBdXRoZW50aWNhdGlvblR5cGUgYXV0aGVu
dGljYXRpb25UeXBlLCBVSW50MzIgKnBhc3N3b3JkTGVuZ3RoLCB2b2lkICoqcGFzc3dvcmREYXRh
LCBTZWNLZXljaGFpbkl0ZW1SZWYgKml0ZW1SZWYpOwojIDU2NSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW4uaCIgMwpPU1N0
YXR1cyBTZWNLZXljaGFpbkFkZEdlbmVyaWNQYXNzd29yZChTZWNLZXljaGFpblJlZiBrZXljaGFp
biwgVUludDMyIHNlcnZpY2VOYW1lTGVuZ3RoLCBjb25zdCBjaGFyICpzZXJ2aWNlTmFtZSwgVUlu
dDMyIGFjY291bnROYW1lTGVuZ3RoLCBjb25zdCBjaGFyICphY2NvdW50TmFtZSwgVUludDMyIHBh
c3N3b3JkTGVuZ3RoLCBjb25zdCB2b2lkICpwYXNzd29yZERhdGEsIFNlY0tleWNoYWluSXRlbVJl
ZiAqaXRlbVJlZik7CiMgNTgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5m
cmFtZXdvcmsvSGVhZGVycy9TZWNLZXljaGFpbi5oIiAzCk9TU3RhdHVzIFNlY0tleWNoYWluRmlu
ZEdlbmVyaWNQYXNzd29yZChDRlR5cGVSZWYga2V5Y2hhaW5PckFycmF5LCBVSW50MzIgc2Vydmlj
ZU5hbWVMZW5ndGgsIGNvbnN0IGNoYXIgKnNlcnZpY2VOYW1lLCBVSW50MzIgYWNjb3VudE5hbWVM
ZW5ndGgsIGNvbnN0IGNoYXIgKmFjY291bnROYW1lLCBVSW50MzIgKnBhc3N3b3JkTGVuZ3RoLCB2
b2lkICoqcGFzc3dvcmREYXRhLCBTZWNLZXljaGFpbkl0ZW1SZWYgKml0ZW1SZWYpOwoKICAgICAg
IAoKCgoKCgpPU1N0YXR1cyBTZWNLZXljaGFpblNldFVzZXJJbnRlcmFjdGlvbkFsbG93ZWQoQm9v
bGVhbiBzdGF0ZSk7CgoKCgoKCgpPU1N0YXR1cyBTZWNLZXljaGFpbkdldFVzZXJJbnRlcmFjdGlv
bkFsbG93ZWQoQm9vbGVhbiAqc3RhdGUpOwoKICAgICAgIAoKCgoKCgoKT1NTdGF0dXMgU2VjS2V5
Y2hhaW5HZXRDU1BIYW5kbGUoU2VjS2V5Y2hhaW5SZWYga2V5Y2hhaW4sIENTU01fQ1NQX0hBTkRM
RSAqY3NwSGFuZGxlKTsKIyA2MTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5
LmZyYW1ld29yay9IZWFkZXJzL1NlY0tleWNoYWluLmgiIDMKT1NTdGF0dXMgU2VjS2V5Y2hhaW5H
ZXRETERCSGFuZGxlKFNlY0tleWNoYWluUmVmIGtleWNoYWluLCBDU1NNX0RMX0RCX0hBTkRMRSAq
ZGxkYkhhbmRsZSk7CgogICAgICAgCgoKCgoKCgpPU1N0YXR1cyBTZWNLZXljaGFpbkNvcHlBY2Nl
c3MoU2VjS2V5Y2hhaW5SZWYga2V5Y2hhaW4sIFNlY0FjY2Vzc1JlZiAqYWNjZXNzKTsKIyA2MzYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1Nl
Y0tleWNoYWluLmgiIDMKT1NTdGF0dXMgU2VjS2V5Y2hhaW5TZXRBY2Nlc3MoU2VjS2V5Y2hhaW5S
ZWYga2V5Y2hhaW4sIFNlY0FjY2Vzc1JlZiBhY2Nlc3MpOwoKCn0KIyA1OCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHkuaCIgMiAz
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRl
cnMvU2VjS2V5Y2hhaW5JdGVtLmgiIDEgMwojIDMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNLZXljaGFpbkl0ZW0uaCIgMwojZGVmaW5l
IF9TRUNVUklUWV9TRUNLRVlDSEFJTklURU1fSF8gCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgp0
eXBlZGVmIEZvdXJDaGFyQ29kZSBTZWNJdGVtQ2xhc3M7CiMgNjAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0tleWNoYWluSXRlbS5oIiAz
CmVudW0KewogICAga1NlY0ludGVybmV0UGFzc3dvcmRJdGVtQ2xhc3MgPSAnaW5ldCcsCiAgICBr
U2VjR2VuZXJpY1Bhc3N3b3JkSXRlbUNsYXNzID0gJ2dlbnAnLAogICAga1NlY0FwcGxlU2hhcmVQ
YXNzd29yZEl0ZW1DbGFzcyA9ICdhc2hwJywKICAgIGtTZWNDZXJ0aWZpY2F0ZUl0ZW1DbGFzcyA9
IENTU01fRExfREJfUkVDT1JEX1g1MDlfQ0VSVElGSUNBVEUsCiAgICBrU2VjUHVibGljS2V5SXRl
bUNsYXNzID0gQ1NTTV9ETF9EQl9SRUNPUkRfUFVCTElDX0tFWSwKICAgIGtTZWNQcml2YXRlS2V5
SXRlbUNsYXNzID0gQ1NTTV9ETF9EQl9SRUNPUkRfUFJJVkFURV9LRVksCiAgICBrU2VjU3ltbWV0
cmljS2V5SXRlbUNsYXNzID0gQ1NTTV9ETF9EQl9SRUNPUkRfU1lNTUVUUklDX0tFWQp9OwoKCgoK
Cgp0eXBlZGVmIEZvdXJDaGFyQ29kZSBTZWNJdGVtQXR0cjsKIyAxMTEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0tleWNoYWluSXRlbS5o
IiAzCmVudW0KewogICAga1NlY0NyZWF0aW9uRGF0ZUl0ZW1BdHRyID0gJ2NkYXQnLAogICAga1Nl
Y01vZERhdGVJdGVtQXR0ciA9ICdtZGF0JywKICAgIGtTZWNEZXNjcmlwdGlvbkl0ZW1BdHRyID0g
J2Rlc2MnLAogICAga1NlY0NvbW1lbnRJdGVtQXR0ciA9ICdpY210JywKICAgIGtTZWNDcmVhdG9y
SXRlbUF0dHIgPSAnY3J0cicsCiAgICBrU2VjVHlwZUl0ZW1BdHRyID0gJ3R5cGUnLAogICAga1Nl
Y1NjcmlwdENvZGVJdGVtQXR0ciA9ICdzY3JwJywKICAgIGtTZWNMYWJlbEl0ZW1BdHRyID0gJ2xh
YmwnLAogICAga1NlY0ludmlzaWJsZUl0ZW1BdHRyID0gJ2ludmknLAogICAga1NlY05lZ2F0aXZl
SXRlbUF0dHIgPSAnbmVnYScsCiAgICBrU2VjQ3VzdG9tSWNvbkl0ZW1BdHRyID0gJ2N1c2knLAog
ICAga1NlY0FjY291bnRJdGVtQXR0ciA9ICdhY2N0JywKICAgIGtTZWNTZXJ2aWNlSXRlbUF0dHIg
PSAnc3ZjZScsCiAgICBrU2VjR2VuZXJpY0l0ZW1BdHRyID0gJ2dlbmEnLAogICAga1NlY1NlY3Vy
aXR5RG9tYWluSXRlbUF0dHIgPSAnc2RtbicsCiAgICBrU2VjU2VydmVySXRlbUF0dHIgPSAnc3J2
cicsCiAgICBrU2VjQXV0aGVudGljYXRpb25UeXBlSXRlbUF0dHIgPSAnYXR5cCcsCiAgICBrU2Vj
UG9ydEl0ZW1BdHRyID0gJ3BvcnQnLAogICAga1NlY1BhdGhJdGVtQXR0ciA9ICdwYXRoJywKICAg
IGtTZWNWb2x1bWVJdGVtQXR0ciA9ICd2bG1lJywKICAgIGtTZWNBZGRyZXNzSXRlbUF0dHIgPSAn
YWRkcicsCiAgICBrU2VjU2lnbmF0dXJlSXRlbUF0dHIgPSAnc3NpZycsCiAgICBrU2VjUHJvdG9j
b2xJdGVtQXR0ciA9ICdwdGNsJywKIGtTZWNDZXJ0aWZpY2F0ZVR5cGUgPSAnY3R5cCcsCiBrU2Vj
Q2VydGlmaWNhdGVFbmNvZGluZyA9ICdjZW5jJywKIGtTZWNDcmxUeXBlID0gJ2NydHAnLAoga1Nl
Y0NybEVuY29kaW5nID0gJ2NybmMnLAoga1NlY0FsaWFzID0gJ2FsaXMnCn07CgoKCgoKdHlwZWRl
ZiBVSW50OCBTZWNBRlBTZXJ2ZXJTaWduYXR1cmVbMTZdOwoKCgoKCnR5cGVkZWYgVUludDggU2Vj
UHVibGljS2V5SGFzaFsyMF07CgogICAgICAgCgoKCgoKQ0ZUeXBlSUQgU2VjS2V5Y2hhaW5JdGVt
R2V0VHlwZUlEKHZvaWQpOwojIDE3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJp
dHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW5JdGVtLmgiIDMKT1NTdGF0dXMgU2VjS2V5
Y2hhaW5JdGVtTW9kaWZ5QXR0cmlidXRlc0FuZERhdGEoU2VjS2V5Y2hhaW5JdGVtUmVmIGl0ZW1S
ZWYsIGNvbnN0IFNlY0tleWNoYWluQXR0cmlidXRlTGlzdCAqYXR0ckxpc3QsIFVJbnQzMiBsZW5n
dGgsIGNvbnN0IHZvaWQgKmRhdGEpOwojIDE4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
U2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW5JdGVtLmgiIDMKT1NTdGF0dXMg
U2VjS2V5Y2hhaW5JdGVtQ3JlYXRlRnJvbUNvbnRlbnQoU2VjSXRlbUNsYXNzIGl0ZW1DbGFzcywg
U2VjS2V5Y2hhaW5BdHRyaWJ1dGVMaXN0ICphdHRyTGlzdCwKICBVSW50MzIgbGVuZ3RoLCBjb25z
dCB2b2lkICpkYXRhLCBTZWNLZXljaGFpblJlZiBrZXljaGFpblJlZiwKICBTZWNBY2Nlc3NSZWYg
aW5pdGlhbEFjY2VzcywgU2VjS2V5Y2hhaW5JdGVtUmVmICppdGVtUmVmKTsKIyAyMDAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0tleWNo
YWluSXRlbS5oIiAzCk9TU3RhdHVzIFNlY0tleWNoYWluSXRlbU1vZGlmeUNvbnRlbnQoU2VjS2V5
Y2hhaW5JdGVtUmVmIGl0ZW1SZWYsIGNvbnN0IFNlY0tleWNoYWluQXR0cmlidXRlTGlzdCAqYXR0
ckxpc3QsIFVJbnQzMiBsZW5ndGgsIGNvbnN0IHZvaWQgKmRhdGEpOwojIDIxMiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW5J
dGVtLmgiIDMKT1NTdGF0dXMgU2VjS2V5Y2hhaW5JdGVtQ29weUNvbnRlbnQoU2VjS2V5Y2hhaW5J
dGVtUmVmIGl0ZW1SZWYsIFNlY0l0ZW1DbGFzcyAqaXRlbUNsYXNzLCBTZWNLZXljaGFpbkF0dHJp
YnV0ZUxpc3QgKmF0dHJMaXN0LCBVSW50MzIgKmxlbmd0aCwgdm9pZCAqKm91dERhdGEpOwoKCgoK
CgoKT1NTdGF0dXMgU2VjS2V5Y2hhaW5JdGVtRnJlZUNvbnRlbnQoU2VjS2V5Y2hhaW5BdHRyaWJ1
dGVMaXN0ICphdHRyTGlzdCwgdm9pZCAqZGF0YSk7CiMgMjMzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNLZXljaGFpbkl0ZW0uaCIgMwpP
U1N0YXR1cyBTZWNLZXljaGFpbkl0ZW1Db3B5QXR0cmlidXRlc0FuZERhdGEoU2VjS2V5Y2hhaW5J
dGVtUmVmIGl0ZW1SZWYsIFNlY0tleWNoYWluQXR0cmlidXRlSW5mbyAqaW5mbywgU2VjSXRlbUNs
YXNzICppdGVtQ2xhc3MsIFNlY0tleWNoYWluQXR0cmlidXRlTGlzdCAqKmF0dHJMaXN0LCBVSW50
MzIgKmxlbmd0aCwgdm9pZCAqKm91dERhdGEpOwojIDI0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW5JdGVtLmgiIDMKT1NT
dGF0dXMgU2VjS2V5Y2hhaW5JdGVtRnJlZUF0dHJpYnV0ZXNBbmREYXRhKFNlY0tleWNoYWluQXR0
cmlidXRlTGlzdCAqYXR0ckxpc3QsIHZvaWQgKmRhdGEpOwojIDI1MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW5JdGVtLmgi
IDMKT1NTdGF0dXMgU2VjS2V5Y2hhaW5JdGVtRGVsZXRlKFNlY0tleWNoYWluSXRlbVJlZiBpdGVt
UmVmKTsKIyAyNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29y
ay9IZWFkZXJzL1NlY0tleWNoYWluSXRlbS5oIiAzCk9TU3RhdHVzIFNlY0tleWNoYWluSXRlbUNv
cHlLZXljaGFpbihTZWNLZXljaGFpbkl0ZW1SZWYgaXRlbVJlZiwgU2VjS2V5Y2hhaW5SZWYgKmtl
eWNoYWluUmVmKTsKIyAyNzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZy
YW1ld29yay9IZWFkZXJzL1NlY0tleWNoYWluSXRlbS5oIiAzCk9TU3RhdHVzIFNlY0tleWNoYWlu
SXRlbUNyZWF0ZUNvcHkoU2VjS2V5Y2hhaW5JdGVtUmVmIGl0ZW1SZWYsIFNlY0tleWNoYWluUmVm
IGRlc3RLZXljaGFpblJlZiwKIFNlY0FjY2Vzc1JlZiBpbml0aWFsQWNjZXNzLCBTZWNLZXljaGFp
bkl0ZW1SZWYgKml0ZW1Db3B5KTsKIyAyODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Nl
Y3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0tleWNoYWluSXRlbS5oIiAzCk9TU3RhdHVzIFNl
Y0tleWNoYWluSXRlbUNyZWF0ZVBlcnNpc3RlbnRSZWZlcmVuY2UoU2VjS2V5Y2hhaW5JdGVtUmVm
IGl0ZW1SZWYsIENGRGF0YVJlZiAqcGVyc2lzdGVudEl0ZW1SZWYpOwojIDI5MSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW5J
dGVtLmgiIDMKT1NTdGF0dXMgU2VjS2V5Y2hhaW5JdGVtQ29weUZyb21QZXJzaXN0ZW50UmVmZXJl
bmNlKENGRGF0YVJlZiBwZXJzaXN0ZW50SXRlbVJlZiwgU2VjS2V5Y2hhaW5JdGVtUmVmICppdGVt
UmVmKTsKCgogICAgICAgCgoKCgoKCgpPU1N0YXR1cyBTZWNLZXljaGFpbkl0ZW1HZXRETERCSGFu
ZGxlKFNlY0tleWNoYWluSXRlbVJlZiBrZXlJdGVtUmVmLCBDU1NNX0RMX0RCX0hBTkRMRSAqZGxk
YkhhbmRsZSk7CiMgMzExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFt
ZXdvcmsvSGVhZGVycy9TZWNLZXljaGFpbkl0ZW0uaCIgMwpPU1N0YXR1cyBTZWNLZXljaGFpbkl0
ZW1HZXRVbmlxdWVSZWNvcmRJRChTZWNLZXljaGFpbkl0ZW1SZWYgaXRlbVJlZiwgY29uc3QgQ1NT
TV9EQl9VTklRVUVfUkVDT1JEICoqdW5pcXVlUmVjb3JkSUQpOwoKICAgICAgIAoKCgoKCgoKT1NT
dGF0dXMgU2VjS2V5Y2hhaW5JdGVtQ29weUFjY2VzcyhTZWNLZXljaGFpbkl0ZW1SZWYgaXRlbVJl
ZiwgU2VjQWNjZXNzUmVmICphY2Nlc3MpOwojIDMzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjS2V5Y2hhaW5JdGVtLmgiIDMKT1NTdGF0
dXMgU2VjS2V5Y2hhaW5JdGVtU2V0QWNjZXNzKFNlY0tleWNoYWluSXRlbVJlZiBpdGVtUmVmLCBT
ZWNBY2Nlc3NSZWYgYWNjZXNzKTsKCgp9CiMgNTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0tleWNoYWlu
U2VhcmNoLmgiIDEgMwojIDMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5m
cmFtZXdvcmsvSGVhZGVycy9TZWNLZXljaGFpblNlYXJjaC5oIiAzCiNkZWZpbmUgX1NFQ1VSSVRZ
X1NFQ0tFWUNIQUlOU0VBUkNIX0hfIAoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKQ0ZUeXBlSUQg
U2VjS2V5Y2hhaW5TZWFyY2hHZXRUeXBlSUQodm9pZCk7CiMgNTUgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0tleWNoYWluU2VhcmNoLmgi
IDMKT1NTdGF0dXMgU2VjS2V5Y2hhaW5TZWFyY2hDcmVhdGVGcm9tQXR0cmlidXRlcyhDRlR5cGVS
ZWYga2V5Y2hhaW5PckFycmF5LCBTZWNJdGVtQ2xhc3MgaXRlbUNsYXNzLCBjb25zdCBTZWNLZXlj
aGFpbkF0dHJpYnV0ZUxpc3QgKmF0dHJMaXN0LCBTZWNLZXljaGFpblNlYXJjaFJlZiAqc2VhcmNo
UmVmKTsKIyA2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3Jr
L0hlYWRlcnMvU2VjS2V5Y2hhaW5TZWFyY2guaCIgMwpPU1N0YXR1cyBTZWNLZXljaGFpblNlYXJj
aENvcHlOZXh0KFNlY0tleWNoYWluU2VhcmNoUmVmIHNlYXJjaFJlZiwgU2VjS2V5Y2hhaW5JdGVt
UmVmICppdGVtUmVmKTsKCgp9CiMgNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY1BvbGljeS5oIiAxIDMK
IyAzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRl
cnMvU2VjUG9saWN5LmgiIDMKI2RlZmluZSBfU0VDVVJJVFlfU0VDUE9MSUNZX0hfIAoKCgoKCgoK
ZXh0ZXJuICJDIiB7CgoKCgoKCgpDRlR5cGVJRCBTZWNQb2xpY3lHZXRUeXBlSUQodm9pZCk7CiMg
NTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJz
L1NlY1BvbGljeS5oIiAzCk9TU3RhdHVzIFNlY1BvbGljeUdldE9JRChTZWNQb2xpY3lSZWYgcG9s
aWN5UmVmLCBDU1NNX09JRCAqb2lkKTsKIyA2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
U2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjUG9saWN5LmgiIDMKT1NTdGF0dXMgU2VjUG9s
aWN5R2V0VmFsdWUoU2VjUG9saWN5UmVmIHBvbGljeVJlZiwgQ1NTTV9EQVRBICp2YWx1ZSk7CiMg
NzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJz
L1NlY1BvbGljeS5oIiAzCk9TU3RhdHVzIFNlY1BvbGljeVNldFZhbHVlKFNlY1BvbGljeVJlZiBw
b2xpY3lSZWYsIGNvbnN0IENTU01fREFUQSAqdmFsdWUpOwojIDgzICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNQb2xpY3kuaCIgMwpPU1N0
YXR1cyBTZWNQb2xpY3lHZXRUUEhhbmRsZShTZWNQb2xpY3lSZWYgcG9saWN5UmVmLCBDU1NNX1RQ
X0hBTkRMRSAqdHBIYW5kbGUpOwoKCgoKCgoKU2VjUG9saWN5UmVmIFNlY1BvbGljeUNyZWF0ZUJh
c2ljWDUwOSh2b2lkKTsKIyAxMDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5
LmZyYW1ld29yay9IZWFkZXJzL1NlY1BvbGljeS5oIiAzClNlY1BvbGljeVJlZiBTZWNQb2xpY3lD
cmVhdGVTU0woQm9vbGVhbiBzZXJ2ZXIsIENGU3RyaW5nUmVmIGhvc3RuYW1lKTsKCgp9CiMgNjEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1Nl
Y3VyaXR5LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZy
YW1ld29yay9IZWFkZXJzL1NlY1BvbGljeVNlYXJjaC5oIiAxIDMKIyAzMCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjUG9saWN5U2VhcmNo
LmgiIDMKI2RlZmluZSBfU0VDVVJJVFlfU0VDUE9MSUNZU0VBUkNIX0hfIAoKCgoKCgpleHRlcm4g
IkMiIHsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlUG9saWN5U2VhcmNoUmVmICpTZWNQb2xp
Y3lTZWFyY2hSZWY7CgoKCgoKCkNGVHlwZUlEIFNlY1BvbGljeVNlYXJjaEdldFR5cGVJRCh2b2lk
KTsKIyA2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hl
YWRlcnMvU2VjUG9saWN5U2VhcmNoLmgiIDMKT1NTdGF0dXMgU2VjUG9saWN5U2VhcmNoQ3JlYXRl
KENTU01fQ0VSVF9UWVBFIGNlcnRUeXBlLCBjb25zdCBDU1NNX09JRCAqcG9saWN5T0lELCBjb25z
dCBDU1NNX0RBVEEgKnZhbHVlLCBTZWNQb2xpY3lTZWFyY2hSZWYgKnNlYXJjaFJlZik7CiMgNzEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1Nl
Y1BvbGljeVNlYXJjaC5oIiAzCk9TU3RhdHVzIFNlY1BvbGljeVNlYXJjaENvcHlOZXh0KFNlY1Bv
bGljeVNlYXJjaFJlZiBzZWFyY2hSZWYsIFNlY1BvbGljeVJlZiAqcG9saWN5UmVmKTsKCgp9CiMg
NjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJz
L1NlY3VyaXR5LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5
LmZyYW1ld29yay9IZWFkZXJzL1NlY1RydXN0LmgiIDEgMwojIDMwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNUcnVzdC5oIiAzCiNkZWZp
bmUgX1NFQ1VSSVRZX1NFQ1RSVVNUX0hfIAojIDQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNUcnVzdC5oIiAzCmV4dGVybiAiQyIgewoj
IDU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVy
cy9TZWNUcnVzdC5oIiAzCnR5cGVkZWYgdWludDMyX3QgU2VjVHJ1c3RSZXN1bHRUeXBlOwoKZW51
bSB7CiAgICBrU2VjVHJ1c3RSZXN1bHRJbnZhbGlkLAogICAga1NlY1RydXN0UmVzdWx0UHJvY2Vl
ZCwKICAgIGtTZWNUcnVzdFJlc3VsdENvbmZpcm0sCiAgICBrU2VjVHJ1c3RSZXN1bHREZW55LAog
ICAga1NlY1RydXN0UmVzdWx0VW5zcGVjaWZpZWQsCiAgICBrU2VjVHJ1c3RSZXN1bHRSZWNvdmVy
YWJsZVRydXN0RmFpbHVyZSwKICAgIGtTZWNUcnVzdFJlc3VsdEZhdGFsVHJ1c3RGYWlsdXJlLAog
ICAga1NlY1RydXN0UmVzdWx0T3RoZXJFcnJvcgp9OwoKCgoKCnR5cGVkZWYgU2VjVHJ1c3RSZXN1
bHRUeXBlIFNlY1RydXN0VXNlclNldHRpbmc7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlU2Vj
VHJ1c3RSZWYgKlNlY1RydXN0UmVmOwoKCgoKCgpDRlR5cGVJRCBTZWNUcnVzdEdldFR5cGVJRCh2
b2lkKTsKIyA5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3Jr
L0hlYWRlcnMvU2VjVHJ1c3QuaCIgMwpPU1N0YXR1cyBTZWNUcnVzdENyZWF0ZVdpdGhDZXJ0aWZp
Y2F0ZXMoQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZXMsIENGVHlwZVJlZiBwb2xpY2llcywgU2VjVHJ1
c3RSZWYgKnRydXN0UmVmKTsKIyAxMDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY1RydXN0LmgiIDMKT1NTdGF0dXMgU2VjVHJ1c3RTZXRQ
b2xpY2llcyhTZWNUcnVzdFJlZiB0cnVzdCwgQ0ZUeXBlUmVmIHBvbGljaWVzKTsKIyAxMTQgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY1Ry
dXN0LmgiIDMKT1NTdGF0dXMgU2VjVHJ1c3RTZXRQYXJhbWV0ZXJzKFNlY1RydXN0UmVmIHRydXN0
UmVmLCBDU1NNX1RQX0FDVElPTiBhY3Rpb24sIENGRGF0YVJlZiBhY3Rpb25EYXRhKTsKIyAxMjMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1Nl
Y1RydXN0LmgiIDMKT1NTdGF0dXMgU2VjVHJ1c3RTZXRBbmNob3JDZXJ0aWZpY2F0ZXMoU2VjVHJ1
c3RSZWYgdHJ1c3QsIENGQXJyYXlSZWYgYW5jaG9yQ2VydGlmaWNhdGVzKTsKIyAxMzUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY1RydXN0
LmgiIDMKT1NTdGF0dXMgU2VjVHJ1c3RTZXRBbmNob3JDZXJ0aWZpY2F0ZXNPbmx5KFNlY1RydXN0
UmVmIHRydXN0LAogICAgQm9vbGVhbiBhbmNob3JDZXJ0aWZpY2F0ZXNPbmx5KTsKIyAxNDUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY1Ry
dXN0LmgiIDMKT1NTdGF0dXMgU2VjVHJ1c3RTZXRLZXljaGFpbnMoU2VjVHJ1c3RSZWYgdHJ1c3Qs
IENGVHlwZVJlZiBrZXljaGFpbk9yQXJyYXkpOwojIDE1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjVHJ1c3QuaCIgMwpPU1N0YXR1cyBT
ZWNUcnVzdFNldFZlcmlmeURhdGUoU2VjVHJ1c3RSZWYgdHJ1c3QsIENGRGF0ZVJlZiB2ZXJpZnlE
YXRlKTsKIyAxNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29y
ay9IZWFkZXJzL1NlY1RydXN0LmgiIDMKQ0ZBYnNvbHV0ZVRpbWUgU2VjVHJ1c3RHZXRWZXJpZnlU
aW1lKFNlY1RydXN0UmVmIHRydXN0KTsKIyAxNzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY1RydXN0LmgiIDMKT1NTdGF0dXMgU2VjVHJ1
c3RFdmFsdWF0ZShTZWNUcnVzdFJlZiB0cnVzdCwgU2VjVHJ1c3RSZXN1bHRUeXBlICpyZXN1bHQp
OwojIDE4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hl
YWRlcnMvU2VjVHJ1c3QuaCIgMwpPU1N0YXR1cyBTZWNUcnVzdEdldFJlc3VsdChTZWNUcnVzdFJl
ZiB0cnVzdFJlZiwgU2VjVHJ1c3RSZXN1bHRUeXBlICpyZXN1bHQsIENGQXJyYXlSZWYgKmNlcnRD
aGFpbiwgQ1NTTV9UUF9BUFBMRV9FVklERU5DRV9JTkZPICoqc3RhdHVzQ2hhaW4pOwojIDE5MiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2Vj
VHJ1c3QuaCIgMwpPU1N0YXR1cyBTZWNUcnVzdEdldENzc21SZXN1bHQoU2VjVHJ1c3RSZWYgdHJ1
c3QsIENTU01fVFBfVkVSSUZZX0NPTlRFWFRfUkVTVUxUX1BUUiAqcmVzdWx0KTsKIyAyMDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY1Ry
dXN0LmgiIDMKT1NTdGF0dXMgU2VjVHJ1c3RHZXRDc3NtUmVzdWx0Q29kZShTZWNUcnVzdFJlZiB0
cnVzdCwgT1NTdGF0dXMgKnJlc3VsdENvZGUpOwojIDIxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjVHJ1c3QuaCIgMwpPU1N0YXR1cyBT
ZWNUcnVzdEdldFRQSGFuZGxlKFNlY1RydXN0UmVmIHRydXN0LCBDU1NNX1RQX0hBTkRMRSAqaGFu
ZGxlKTsKIyAyMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29y
ay9IZWFkZXJzL1NlY1RydXN0LmgiIDMKT1NTdGF0dXMgU2VjVHJ1c3RDb3B5UG9saWNpZXMoU2Vj
VHJ1c3RSZWYgdHJ1c3QsIENGQXJyYXlSZWYgKnBvbGljaWVzKTsKIyAyMjkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY1RydXN0LmgiIDMK
T1NTdGF0dXMgU2VjVHJ1c3RDb3B5Q3VzdG9tQW5jaG9yQ2VydGlmaWNhdGVzKFNlY1RydXN0UmVm
IHRydXN0LCBDRkFycmF5UmVmICphbmNob3JzKTsKCgoKCgoKCk9TU3RhdHVzIFNlY1RydXN0Q29w
eUFuY2hvckNlcnRpZmljYXRlcyhDRkFycmF5UmVmICphbmNob3JzKTsKIyAyNDcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY1RydXN0Lmgi
IDMKT1NTdGF0dXMgU2VjVHJ1c3RHZXRDU1NNQW5jaG9yQ2VydGlmaWNhdGVzKGNvbnN0IENTU01f
REFUQSAqKmNzc21BbmNob3JzLCB1aW50MzIgKmNzc21BbmNob3JDb3VudCkKIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKIyAyNTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY1RydXN0LmgiIDMKT1NTdGF0dXMgU2VjVHJ1c3RHZXRV
c2VyVHJ1c3QoU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGUsIFNlY1BvbGljeVJlZiBwb2xp
Y3ksIFNlY1RydXN0VXNlclNldHRpbmcgKnRydXN0U2V0dGluZykKIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKIyAyNzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZy
YW1ld29yay9IZWFkZXJzL1NlY1RydXN0LmgiIDMKT1NTdGF0dXMgU2VjVHJ1c3RTZXRVc2VyVHJ1
c3QoU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGUsIFNlY1BvbGljeVJlZiBwb2xpY3ksIFNl
Y1RydXN0VXNlclNldHRpbmcgdHJ1c3RTZXR0aW5nKQogX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwoKCgp9CiMgNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1l
d29yay9IZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY1RydXN0ZWRBcHBsaWNhdGlvbi5oIiAx
IDMKIyAzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hl
YWRlcnMvU2VjVHJ1c3RlZEFwcGxpY2F0aW9uLmgiIDMKI2RlZmluZSBfU0VDVVJJVFlfU0VDVFJV
U1RFREFQUExJQ0FUSU9OX0hfIAoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCkNGVHlwZUlEIFNl
Y1RydXN0ZWRBcHBsaWNhdGlvbkdldFR5cGVJRCh2b2lkKTsKIyA1NyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjVHJ1c3RlZEFwcGxpY2F0
aW9uLmgiIDMKT1NTdGF0dXMgU2VjVHJ1c3RlZEFwcGxpY2F0aW9uQ3JlYXRlRnJvbVBhdGgoY29u
c3QgY2hhciAqcGF0aCwgU2VjVHJ1c3RlZEFwcGxpY2F0aW9uUmVmICphcHApOwojIDY2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNUcnVz
dGVkQXBwbGljYXRpb24uaCIgMwpPU1N0YXR1cyBTZWNUcnVzdGVkQXBwbGljYXRpb25Db3B5RGF0
YShTZWNUcnVzdGVkQXBwbGljYXRpb25SZWYgYXBwUmVmLCBDRkRhdGFSZWYgKmRhdGEpOwojIDc1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9T
ZWNUcnVzdGVkQXBwbGljYXRpb24uaCIgMwpPU1N0YXR1cyBTZWNUcnVzdGVkQXBwbGljYXRpb25T
ZXREYXRhKFNlY1RydXN0ZWRBcHBsaWNhdGlvblJlZiBhcHBSZWYsIENGRGF0YVJlZiBkYXRhKTsK
CgoKfQojIDY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsv
SGVhZGVycy9TZWN1cml0eS5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9T
ZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNUcnVzdFNldHRpbmdzLmgiIDEgMwojIDMwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNU
cnVzdFNldHRpbmdzLmgiIDMKI2RlZmluZSBfU0VDVVJJVFlfU0VDX1RSVVNUX1NFVFRJTkdTX0hf
IAojIDM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVh
ZGVycy9TZWNUcnVzdFNldHRpbmdzLmgiIDMKZXh0ZXJuICJDIiB7CiMgMTcxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNUcnVzdFNldHRp
bmdzLmgiIDMKI2RlZmluZSBrU2VjVHJ1c3RTZXR0aW5nc1BvbGljeSBDRlNUUigia1NlY1RydXN0
U2V0dGluZ3NQb2xpY3kiKQojZGVmaW5lIGtTZWNUcnVzdFNldHRpbmdzQXBwbGljYXRpb24gQ0ZT
VFIoImtTZWNUcnVzdFNldHRpbmdzQXBwbGljYXRpb24iKQojZGVmaW5lIGtTZWNUcnVzdFNldHRp
bmdzUG9saWN5U3RyaW5nIENGU1RSKCJrU2VjVHJ1c3RTZXR0aW5nc1BvbGljeVN0cmluZyIpCiNk
ZWZpbmUga1NlY1RydXN0U2V0dGluZ3NLZXlVc2FnZSBDRlNUUigia1NlY1RydXN0U2V0dGluZ3NL
ZXlVc2FnZSIpCiNkZWZpbmUga1NlY1RydXN0U2V0dGluZ3NBbGxvd2VkRXJyb3IgQ0ZTVFIoImtT
ZWNUcnVzdFNldHRpbmdzQWxsb3dlZEVycm9yIikKI2RlZmluZSBrU2VjVHJ1c3RTZXR0aW5nc1Jl
c3VsdCBDRlNUUigia1NlY1RydXN0U2V0dGluZ3NSZXN1bHQiKQoKCgoKZW51bSB7Cgoga1NlY1Ry
dXN0U2V0dGluZ3NLZXlVc2VTaWduYXR1cmUgPSAweDAwMDAwMDAxLAoKIGtTZWNUcnVzdFNldHRp
bmdzS2V5VXNlRW5EZWNyeXB0RGF0YSA9IDB4MDAwMDAwMDIsCgoga1NlY1RydXN0U2V0dGluZ3NL
ZXlVc2VFbkRlY3J5cHRLZXkgPSAweDAwMDAwMDA0LAoKIGtTZWNUcnVzdFNldHRpbmdzS2V5VXNl
U2lnbkNlcnQgPSAweDAwMDAwMDA4LAoKIGtTZWNUcnVzdFNldHRpbmdzS2V5VXNlU2lnblJldm9j
YXRpb24gPSAweDAwMDAwMDEwLAoKIGtTZWNUcnVzdFNldHRpbmdzS2V5VXNlS2V5RXhjaGFuZ2Ug
PSAweDAwMDAwMDIwLAoKIGtTZWNUcnVzdFNldHRpbmdzS2V5VXNlQW55ID0gMHhmZmZmZmZmZgp9
Owp0eXBlZGVmIHVpbnQzMiBTZWNUcnVzdFNldHRpbmdzS2V5VXNhZ2U7CgoKCgplbnVtIHsKIGtT
ZWNUcnVzdFNldHRpbmdzUmVzdWx0SW52YWxpZCA9IDAsCgoga1NlY1RydXN0U2V0dGluZ3NSZXN1
bHRUcnVzdFJvb3QsCiBrU2VjVHJ1c3RTZXR0aW5nc1Jlc3VsdFRydXN0QXNSb290LAoga1NlY1Ry
dXN0U2V0dGluZ3NSZXN1bHREZW55LAoga1NlY1RydXN0U2V0dGluZ3NSZXN1bHRVbnNwZWNpZmll
ZAoKfTsKdHlwZWRlZiB1aW50MzIgU2VjVHJ1c3RTZXR0aW5nc1Jlc3VsdDsKCgoKCgoKZW51bSB7
CiBrU2VjVHJ1c3RTZXR0aW5nc0RvbWFpblVzZXIgPSAwLAoga1NlY1RydXN0U2V0dGluZ3NEb21h
aW5BZG1pbiwKIGtTZWNUcnVzdFNldHRpbmdzRG9tYWluU3lzdGVtCn07CnR5cGVkZWYgdWludDMy
IFNlY1RydXN0U2V0dGluZ3NEb21haW47CiMgMjQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNUcnVzdFNldHRpbmdzLmgiIDMKI2RlZmlu
ZSBrU2VjVHJ1c3RTZXR0aW5nc0RlZmF1bHRSb290Q2VydFNldHRpbmcgKChTZWNDZXJ0aWZpY2F0
ZVJlZiktMSkKCgoKCgoKT1NTdGF0dXMgU2VjVHJ1c3RTZXR0aW5nc0NvcHlUcnVzdFNldHRpbmdz
KAogU2VjQ2VydGlmaWNhdGVSZWYgY2VydFJlZiwKIFNlY1RydXN0U2V0dGluZ3NEb21haW4gZG9t
YWluLAogQ0ZBcnJheVJlZiAqdHJ1c3RTZXR0aW5ncyk7CiMgMjYyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNUcnVzdFNldHRpbmdzLmgi
IDMKT1NTdGF0dXMgU2VjVHJ1c3RTZXR0aW5nc1NldFRydXN0U2V0dGluZ3MoCiBTZWNDZXJ0aWZp
Y2F0ZVJlZiBjZXJ0UmVmLAogU2VjVHJ1c3RTZXR0aW5nc0RvbWFpbiBkb21haW4sCiBDRlR5cGVS
ZWYgdHJ1c3RTZXR0aW5nc0RpY3RPckFycmF5KTsKCgoKCgpPU1N0YXR1cyBTZWNUcnVzdFNldHRp
bmdzUmVtb3ZlVHJ1c3RTZXR0aW5ncygKIFNlY0NlcnRpZmljYXRlUmVmIGNlcnRSZWYsCiBTZWNU
cnVzdFNldHRpbmdzRG9tYWluIGRvbWFpbik7CiMgMjgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNUcnVzdFNldHRpbmdzLmgiIDMKT1NT
dGF0dXMgU2VjVHJ1c3RTZXR0aW5nc0NvcHlDZXJ0aWZpY2F0ZXMoCiBTZWNUcnVzdFNldHRpbmdz
RG9tYWluIGRvbWFpbiwKIENGQXJyYXlSZWYgKmNlcnRBcnJheSk7CgoKCgoKCgpPU1N0YXR1cyBT
ZWNUcnVzdFNldHRpbmdzQ29weU1vZGlmaWNhdGlvbkRhdGUoCiBTZWNDZXJ0aWZpY2F0ZVJlZiBj
ZXJ0UmVmLAogU2VjVHJ1c3RTZXR0aW5nc0RvbWFpbiBkb21haW4sCiBDRkRhdGVSZWYgKm1vZGlm
aWNhdGlvbkRhdGUpOwoKCgoKCgoKT1NTdGF0dXMgU2VjVHJ1c3RTZXR0aW5nc0NyZWF0ZUV4dGVy
bmFsUmVwcmVzZW50YXRpb24oCiBTZWNUcnVzdFNldHRpbmdzRG9tYWluIGRvbWFpbiwKIENGRGF0
YVJlZiAqdHJ1c3RTZXR0aW5ncyk7CgoKCgoKT1NTdGF0dXMgU2VjVHJ1c3RTZXR0aW5nc0ltcG9y
dEV4dGVybmFsUmVwcmVzZW50YXRpb24oCiBTZWNUcnVzdFNldHRpbmdzRG9tYWluIGRvbWFpbiwK
IENGRGF0YVJlZiB0cnVzdFNldHRpbmdzKTsKCgp9CiMgNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0lt
cG9ydEV4cG9ydC5oIiAxIDMKIyAyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJp
dHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjSW1wb3J0RXhwb3J0LmgiIDMKI2RlZmluZSBfU0VDVVJJ
VFlfU0VDX0lNUE9SVF9FWFBPUlRfSF8gCiMgMzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0ltcG9ydEV4cG9ydC5oIiAzCmV4dGVybiAi
QyIgewoKCgoKCmVudW0KewoKCgoKIGtTZWNGb3JtYXRVbmtub3duID0gMCwKCgoKCgoga1NlY0Zv
cm1hdE9wZW5TU0wsCiBrU2VjRm9ybWF0U1NILAoga1NlY0Zvcm1hdEJTQUZFLAoKCiBrU2VjRm9y
bWF0UmF3S2V5LAoKCiBrU2VjRm9ybWF0V3JhcHBlZFBLQ1M4LAoga1NlY0Zvcm1hdFdyYXBwZWRP
cGVuU1NMLAoga1NlY0Zvcm1hdFdyYXBwZWRTU0gsCiBrU2VjRm9ybWF0V3JhcHBlZExTSCwKCgog
a1NlY0Zvcm1hdFg1MDlDZXJ0LAoKCiBrU2VjRm9ybWF0UEVNU2VxdWVuY2UsCgoga1NlY0Zvcm1h
dFBLQ1M3LAoga1NlY0Zvcm1hdFBLQ1MxMiwKIGtTZWNGb3JtYXROZXRzY2FwZUNlcnRTZXF1ZW5j
ZSwKCgoga1NlY0Zvcm1hdFNTSHYyCgoKfTsKdHlwZWRlZiB1aW50MzJfdCBTZWNFeHRlcm5hbEZv
cm1hdDsKCgoKCmVudW0gewoga1NlY0l0ZW1UeXBlVW5rbm93biwKIGtTZWNJdGVtVHlwZVByaXZh
dGVLZXksCiBrU2VjSXRlbVR5cGVQdWJsaWNLZXksCiBrU2VjSXRlbVR5cGVTZXNzaW9uS2V5LAog
a1NlY0l0ZW1UeXBlQ2VydGlmaWNhdGUsCiBrU2VjSXRlbVR5cGVBZ2dyZWdhdGUKfTsKdHlwZWRl
ZiB1aW50MzJfdCBTZWNFeHRlcm5hbEl0ZW1UeXBlOwoKCgoKZW51bQp7CiBrU2VjSXRlbVBlbUFy
bW91ciA9IDB4MDAwMDAwMDEsCn07CnR5cGVkZWYgdWludDMyX3QgU2VjSXRlbUltcG9ydEV4cG9y
dEZsYWdzOwoKCgoKZW51bQp7CgoKCgoga1NlY0tleUltcG9ydE9ubHlPbmUgPSAweDAwMDAwMDAx
LAojIDEyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hl
YWRlcnMvU2VjSW1wb3J0RXhwb3J0LmgiIDMKIGtTZWNLZXlTZWN1cmVQYXNzcGhyYXNlID0gMHgw
MDAwMDAwMiwKCgoKCgoKCiBrU2VjS2V5Tm9BY2Nlc3NDb250cm9sID0gMHgwMDAwMDAwNAp9Owp0
eXBlZGVmIHVpbnQzMl90IFNlY0tleUltcG9ydEV4cG9ydEZsYWdzOwoKCgoKI2RlZmluZSBTRUNf
S0VZX0lNUE9SVF9FWFBPUlRfUEFSQU1TX1ZFUlNJT04gMAoKCgoKdHlwZWRlZiBzdHJ1Y3QKewoK
IHVpbnQzMl90IHZlcnNpb247CiBTZWNLZXlJbXBvcnRFeHBvcnRGbGFncyBmbGFnczsKIENGVHlw
ZVJlZiBwYXNzcGhyYXNlOwoKCiBDRlN0cmluZ1JlZiBhbGVydFRpdGxlOwogQ0ZTdHJpbmdSZWYg
YWxlcnRQcm9tcHQ7CgoKIFNlY0FjY2Vzc1JlZiBhY2Nlc3NSZWY7CgogQ1NTTV9LRVlVU0Uga2V5
VXNhZ2U7CgogQ1NTTV9LRVlBVFRSX0ZMQUdTIGtleUF0dHJpYnV0ZXM7Cn0gU2VjS2V5SW1wb3J0
RXhwb3J0UGFyYW1ldGVyczsKIyAyMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY0ltcG9ydEV4cG9ydC5oIiAzCk9TU3RhdHVzIFNlY0tl
eWNoYWluSXRlbUV4cG9ydCgKIENGVHlwZVJlZiBrZXljaGFpbkl0ZW1PckFycmF5LAogU2VjRXh0
ZXJuYWxGb3JtYXQgb3V0cHV0Rm9ybWF0LAogU2VjSXRlbUltcG9ydEV4cG9ydEZsYWdzIGZsYWdz
LAogY29uc3QgU2VjS2V5SW1wb3J0RXhwb3J0UGFyYW1ldGVycyAqa2V5UGFyYW1zLAogQ0ZEYXRh
UmVmICpleHBvcnRlZERhdGEpOwojIDM2OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2Vj
dXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjSW1wb3J0RXhwb3J0LmgiIDMKT1NTdGF0dXMgU2Vj
S2V5Y2hhaW5JdGVtSW1wb3J0KAogQ0ZEYXRhUmVmIGltcG9ydGVkRGF0YSwKIENGU3RyaW5nUmVm
IGZpbGVOYW1lT3JFeHRlbnNpb24sCiBTZWNFeHRlcm5hbEZvcm1hdCAqaW5wdXRGb3JtYXQsCiBT
ZWNFeHRlcm5hbEl0ZW1UeXBlICppdGVtVHlwZSwKIFNlY0l0ZW1JbXBvcnRFeHBvcnRGbGFncyBm
bGFncywKIGNvbnN0IFNlY0tleUltcG9ydEV4cG9ydFBhcmFtZXRlcnMgKmtleVBhcmFtcywKIFNl
Y0tleWNoYWluUmVmIGltcG9ydEtleWNoYWluLAogQ0ZBcnJheVJlZiAqb3V0SXRlbXMpOwoKCgoK
CgpleHRlcm4gQ0ZTdHJpbmdSZWYga1NlY0ltcG9ydEV4cG9ydFBhc3NwaHJhc2U7CiMgMzk2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWNJ
bXBvcnRFeHBvcnQuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NlY0ltcG9ydEl0ZW1MYWJlbDsK
ZXh0ZXJuIENGU3RyaW5nUmVmIGtTZWNJbXBvcnRJdGVtS2V5SUQ7CmV4dGVybiBDRlN0cmluZ1Jl
ZiBrU2VjSW1wb3J0SXRlbVRydXN0OwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NlY0ltcG9ydEl0ZW1D
ZXJ0Q2hhaW47CmV4dGVybiBDRlN0cmluZ1JlZiBrU2VjSW1wb3J0SXRlbUlkZW50aXR5OwojIDQx
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMv
U2VjSW1wb3J0RXhwb3J0LmgiIDMKT1NTdGF0dXMgU2VjUEtDUzEySW1wb3J0KENGRGF0YVJlZiBw
a2NzMTJfZGF0YSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMsIENGQXJyYXlSZWYgKml0ZW1zKTsK
Cgp9CiMgNjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9I
ZWFkZXJzL1NlY3VyaXR5LmgiIDIgMwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9T
ZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9BdXRob3JpemF0aW9uLmgiIDEgMwojIDMxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9BdXRob3Jp
emF0aW9uLmgiIDMKI2RlZmluZSBfU0VDVVJJVFlfQVVUSE9SSVpBVElPTl9IXyAKIyA0MyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvQXV0aG9y
aXphdGlvbi5oIiAzCmV4dGVybiAiQyIgewojIDY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9BdXRob3JpemF0aW9uLmgiIDMKI2RlZmluZSBr
QXV0aG9yaXphdGlvbkVtcHR5RW52aXJvbm1lbnQgTlVMTAojIDg2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9BdXRob3JpemF0aW9uLmgiIDMK
ZW51bSB7CiBlcnJBdXRob3JpemF0aW9uU3VjY2VzcyA9IDAsCiBlcnJBdXRob3JpemF0aW9uSW52
YWxpZFNldCA9IC02MDAwMSwKIGVyckF1dGhvcml6YXRpb25JbnZhbGlkUmVmID0gLTYwMDAyLAog
ZXJyQXV0aG9yaXphdGlvbkludmFsaWRUYWcgPSAtNjAwMDMsCiBlcnJBdXRob3JpemF0aW9uSW52
YWxpZFBvaW50ZXIgPSAtNjAwMDQsCiBlcnJBdXRob3JpemF0aW9uRGVuaWVkID0gLTYwMDA1LAog
ZXJyQXV0aG9yaXphdGlvbkNhbmNlbGVkID0gLTYwMDA2LAogZXJyQXV0aG9yaXphdGlvbkludGVy
YWN0aW9uTm90QWxsb3dlZCA9IC02MDAwNywKIGVyckF1dGhvcml6YXRpb25JbnRlcm5hbCA9IC02
MDAwOCwKIGVyckF1dGhvcml6YXRpb25FeHRlcm5hbGl6ZU5vdEFsbG93ZWQgPSAtNjAwMDksCiBl
cnJBdXRob3JpemF0aW9uSW50ZXJuYWxpemVOb3RBbGxvd2VkID0gLTYwMDEwLAogZXJyQXV0aG9y
aXphdGlvbkludmFsaWRGbGFncyA9IC02MDAxMSwKIGVyckF1dGhvcml6YXRpb25Ub29sRXhlY3V0
ZUZhaWx1cmUgPSAtNjAwMzEsCiBlcnJBdXRob3JpemF0aW9uVG9vbEVudmlyb25tZW50RXJyb3Ig
PSAtNjAwMzIsCiBlcnJBdXRob3JpemF0aW9uQmFkQWRkcmVzcyA9IC02MDAzMywKfTsKCgoKCgoK
ZW51bSB7CiBrQXV0aG9yaXphdGlvbkZsYWdEZWZhdWx0cyA9IDAsCiBrQXV0aG9yaXphdGlvbkZs
YWdJbnRlcmFjdGlvbkFsbG93ZWQgPSAoMSA8PCAwKSwKIGtBdXRob3JpemF0aW9uRmxhZ0V4dGVu
ZFJpZ2h0cyA9ICgxIDw8IDEpLAoga0F1dGhvcml6YXRpb25GbGFnUGFydGlhbFJpZ2h0cyA9ICgx
IDw8IDIpLAoga0F1dGhvcml6YXRpb25GbGFnRGVzdHJveVJpZ2h0cyA9ICgxIDw8IDMpLAoga0F1
dGhvcml6YXRpb25GbGFnUHJlQXV0aG9yaXplID0gKDEgPDwgNCksCgoKIGtBdXRob3JpemF0aW9u
RmxhZ05vRGF0YSA9ICgxIDw8IDIwKQp9OwoKCgoKCgp0eXBlZGVmIFVJbnQzMiBBdXRob3JpemF0
aW9uRmxhZ3M7CgoKCgoKCmVudW0gewoga0F1dGhvcml6YXRpb25GbGFnQ2FuTm90UHJlQXV0aG9y
aXplID0gKDEgPDwgMCkKfTsKCgoKCgoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgQXV0aG9yaXphdGlv
bk9wYXF1ZVJlZiAqQXV0aG9yaXphdGlvblJlZjsKCgoKCgoKdHlwZWRlZiBjb25zdCBjaGFyICpB
dXRob3JpemF0aW9uU3RyaW5nOwojIDE2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2Vj
dXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvQXV0aG9yaXphdGlvbi5oIiAzCnR5cGVkZWYgc3RydWN0
IHsKIEF1dGhvcml6YXRpb25TdHJpbmcgbmFtZTsKIHNpemVfdCB2YWx1ZUxlbmd0aDsKIHZvaWQg
KnZhbHVlOwogVUludDMyIGZsYWdzOwp9IEF1dGhvcml6YXRpb25JdGVtOwojIDE3OSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvQXV0aG9yaXph
dGlvbi5oIiAzCnR5cGVkZWYgc3RydWN0IHsKIFVJbnQzMiBjb3VudDsKIEF1dGhvcml6YXRpb25J
dGVtICppdGVtczsKfSBBdXRob3JpemF0aW9uSXRlbVNldDsKIyAxOTcgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL0F1dGhvcml6YXRpb24uaCIg
MwplbnVtIHsKIGtBdXRob3JpemF0aW9uRXh0ZXJuYWxGb3JtTGVuZ3RoID0gMzIKfTsKCnR5cGVk
ZWYgc3RydWN0IHsKIGNoYXIgYnl0ZXNba0F1dGhvcml6YXRpb25FeHRlcm5hbEZvcm1MZW5ndGhd
Owp9IEF1dGhvcml6YXRpb25FeHRlcm5hbEZvcm07CiMgMjEyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9BdXRob3JpemF0aW9uLmgiIDMKdHlw
ZWRlZiBBdXRob3JpemF0aW9uSXRlbVNldCBBdXRob3JpemF0aW9uUmlnaHRzOwoKCgoKCgoKdHlw
ZWRlZiBBdXRob3JpemF0aW9uSXRlbVNldCBBdXRob3JpemF0aW9uRW52aXJvbm1lbnQ7CiMgMjUz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9B
dXRob3JpemF0aW9uLmgiIDMKT1NTdGF0dXMgQXV0aG9yaXphdGlvbkNyZWF0ZShjb25zdCBBdXRo
b3JpemF0aW9uUmlnaHRzICpyaWdodHMsCiBjb25zdCBBdXRob3JpemF0aW9uRW52aXJvbm1lbnQg
KmVudmlyb25tZW50LAogQXV0aG9yaXphdGlvbkZsYWdzIGZsYWdzLAogQXV0aG9yaXphdGlvblJl
ZiAqYXV0aG9yaXphdGlvbik7CiMgMjc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1
cml0eS5mcmFtZXdvcmsvSGVhZGVycy9BdXRob3JpemF0aW9uLmgiIDMKT1NTdGF0dXMgQXV0aG9y
aXphdGlvbkZyZWUoQXV0aG9yaXphdGlvblJlZiBhdXRob3JpemF0aW9uLCBBdXRob3JpemF0aW9u
RmxhZ3MgZmxhZ3MpOwojIDMxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHku
ZnJhbWV3b3JrL0hlYWRlcnMvQXV0aG9yaXphdGlvbi5oIiAzCk9TU3RhdHVzIEF1dGhvcml6YXRp
b25Db3B5UmlnaHRzKEF1dGhvcml6YXRpb25SZWYgYXV0aG9yaXphdGlvbiwKIGNvbnN0IEF1dGhv
cml6YXRpb25SaWdodHMgKnJpZ2h0cywKIGNvbnN0IEF1dGhvcml6YXRpb25FbnZpcm9ubWVudCAq
ZW52aXJvbm1lbnQsCiBBdXRob3JpemF0aW9uRmxhZ3MgZmxhZ3MsCiBBdXRob3JpemF0aW9uUmln
aHRzICoqYXV0aG9yaXplZFJpZ2h0cyk7CiMgMzM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9BdXRob3JpemF0aW9uLmgiIDMKT1NTdGF0dXMg
QXV0aG9yaXphdGlvbkNvcHlJbmZvKEF1dGhvcml6YXRpb25SZWYgYXV0aG9yaXphdGlvbiwKIEF1
dGhvcml6YXRpb25TdHJpbmcgdGFnLAogQXV0aG9yaXphdGlvbkl0ZW1TZXQgKippbmZvKTsKIyAz
NTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJz
L0F1dGhvcml6YXRpb24uaCIgMwpPU1N0YXR1cyBBdXRob3JpemF0aW9uTWFrZUV4dGVybmFsRm9y
bShBdXRob3JpemF0aW9uUmVmIGF1dGhvcml6YXRpb24sCiBBdXRob3JpemF0aW9uRXh0ZXJuYWxG
b3JtICpleHRGb3JtKTsKIyAzNzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5
LmZyYW1ld29yay9IZWFkZXJzL0F1dGhvcml6YXRpb24uaCIgMwpPU1N0YXR1cyBBdXRob3JpemF0
aW9uQ3JlYXRlRnJvbUV4dGVybmFsRm9ybShjb25zdCBBdXRob3JpemF0aW9uRXh0ZXJuYWxGb3Jt
ICpleHRGb3JtLAogQXV0aG9yaXphdGlvblJlZiAqYXV0aG9yaXphdGlvbik7CiMgMzkxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9BdXRob3Jp
emF0aW9uLmgiIDMKT1NTdGF0dXMgQXV0aG9yaXphdGlvbkZyZWVJdGVtU2V0KEF1dGhvcml6YXRp
b25JdGVtU2V0ICpzZXQpOwojIDQxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJp
dHkuZnJhbWV3b3JrL0hlYWRlcnMvQXV0aG9yaXphdGlvbi5oIiAzCk9TU3RhdHVzIEF1dGhvcml6
YXRpb25FeGVjdXRlV2l0aFByaXZpbGVnZXMoQXV0aG9yaXphdGlvblJlZiBhdXRob3JpemF0aW9u
LAogY29uc3QgY2hhciAqcGF0aFRvVG9vbCwKIEF1dGhvcml6YXRpb25GbGFncyBvcHRpb25zLAog
Y2hhciAqIGNvbnN0ICphcmd1bWVudHMsCiBGSUxFICoqY29tbXVuaWNhdGlvbnNQaXBlKTsKIyA0
MjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJz
L0F1dGhvcml6YXRpb24uaCIgMwpPU1N0YXR1cyBBdXRob3JpemF0aW9uQ29weVByaXZpbGVnZWRS
ZWZlcmVuY2UoQXV0aG9yaXphdGlvblJlZiAqYXV0aG9yaXphdGlvbiwKIEF1dGhvcml6YXRpb25G
bGFncyBmbGFncyk7CgoKCn0KIyA2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJp
dHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHkuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvQXV0aG9yaXphdGlvblRhZ3Mu
aCIgMSAzCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29y
ay9IZWFkZXJzL0F1dGhvcml6YXRpb25UYWdzLmgiIDMKI2RlZmluZSBfU0VDVVJJVFlfQVVUSE9S
SVpBVElPTlRBR1NfSF8gCiMgNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5
LmZyYW1ld29yay9IZWFkZXJzL0F1dGhvcml6YXRpb25UYWdzLmgiIDMKI2RlZmluZSBrQXV0aG9y
aXphdGlvbkVudmlyb25tZW50VXNlcm5hbWUgInVzZXJuYW1lIgoKCgoKCiNkZWZpbmUga0F1dGhv
cml6YXRpb25FbnZpcm9ubWVudFBhc3N3b3JkICJwYXNzd29yZCIKCgoKCgojZGVmaW5lIGtBdXRo
b3JpemF0aW9uRW52aXJvbm1lbnRTaGFyZWQgInNoYXJlZCIKCgoKCgoKCiNkZWZpbmUga0F1dGhv
cml6YXRpb25SaWdodEV4ZWN1dGUgInN5c3RlbS5wcml2aWxlZ2UuYWRtaW4iCgoKCgoKI2RlZmlu
ZSBrQXV0aG9yaXphdGlvbkVudmlyb25tZW50UHJvbXB0ICJwcm9tcHQiCgoKCgoKI2RlZmluZSBr
QXV0aG9yaXphdGlvbkVudmlyb25tZW50SWNvbiAiaWNvbiIKIyA2OSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHkuaCIgMiAzCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMv
QXV0aG9yaXphdGlvbkRCLmgiIDEgMwojIDMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9T
ZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9BdXRob3JpemF0aW9uREIuaCIgMwojZGVmaW5lIF9T
RUNVUklUWV9BVVRIT1JJWkFUSU9OREJfSF8gCgoKCgoKZXh0ZXJuICJDIiB7CiMgNjEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL0F1dGhvcml6
YXRpb25EQi5oIiAzCiNkZWZpbmUga0F1dGhvcml6YXRpb25SaWdodFJ1bGUgInJ1bGUiCgoKCgoj
ZGVmaW5lIGtBdXRob3JpemF0aW9uUnVsZUlzQWRtaW4gImlzLWFkbWluIgoKCgoKI2RlZmluZSBr
QXV0aG9yaXphdGlvblJ1bGVBdXRoZW50aWNhdGVBc1Nlc3Npb25Vc2VyICJhdXRoZW50aWNhdGUt
c2Vzc2lvbi1vd25lciIKCgoKCiNkZWZpbmUga0F1dGhvcml6YXRpb25SdWxlQXV0aGVudGljYXRl
QXNBZG1pbiAiYXV0aGVudGljYXRlLWFkbWluIgoKCgoKI2RlZmluZSBrQXV0aG9yaXphdGlvblJ1
bGVDbGFzc0FsbG93ICJhbGxvdyIKCgoKCiNkZWZpbmUga0F1dGhvcml6YXRpb25SdWxlQ2xhc3NE
ZW55ICJkZW55IgoKCgoKCiNkZWZpbmUga0F1dGhvcml6YXRpb25Db21tZW50ICJjb21tZW50Igoj
IDEwOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRl
cnMvQXV0aG9yaXphdGlvbkRCLmgiIDMKT1NTdGF0dXMgQXV0aG9yaXphdGlvblJpZ2h0R2V0KGNv
bnN0IGNoYXIgKnJpZ2h0TmFtZSwKIENGRGljdGlvbmFyeVJlZiAqcmlnaHREZWZpbml0aW9uKTsK
IyAxMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFk
ZXJzL0F1dGhvcml6YXRpb25EQi5oIiAzCk9TU3RhdHVzIEF1dGhvcml6YXRpb25SaWdodFNldChB
dXRob3JpemF0aW9uUmVmIGF1dGhSZWYsCiBjb25zdCBjaGFyICpyaWdodE5hbWUsCiBDRlR5cGVS
ZWYgcmlnaHREZWZpbml0aW9uLAogQ0ZTdHJpbmdSZWYgZGVzY3JpcHRpb25LZXksCiBDRkJ1bmRs
ZVJlZiBidW5kbGUsCiBDRlN0cmluZ1JlZiBsb2NhbGVUYWJsZU5hbWUpOwojIDE1MSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvQXV0aG9yaXph
dGlvbkRCLmgiIDMKT1NTdGF0dXMgQXV0aG9yaXphdGlvblJpZ2h0UmVtb3ZlKEF1dGhvcml6YXRp
b25SZWYgYXV0aFJlZiwKIGNvbnN0IGNoYXIgKnJpZ2h0TmFtZSk7CgoKCn0KIyA3MCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHku
aCIgMiAzCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29y
ay9IZWFkZXJzL0NpcGhlclN1aXRlLmgiIDEgMwojIDI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9DaXBoZXJTdWl0ZS5oIiAzCiNkZWZpbmUg
X1NFQ1VSSVRZX0NJUEhFUlNVSVRFX0hfIAojIDM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9DaXBoZXJTdWl0ZS5oIiAzCnR5cGVkZWYgVUlu
dDMyIFNTTENpcGhlclN1aXRlOwoKZW51bQp7IFNTTF9OVUxMX1dJVEhfTlVMTF9OVUxMID0gMHgw
MDAwLAogICAgU1NMX1JTQV9XSVRIX05VTExfTUQ1ID0gMHgwMDAxLAogICAgU1NMX1JTQV9XSVRI
X05VTExfU0hBID0gMHgwMDAyLAogICAgU1NMX1JTQV9FWFBPUlRfV0lUSF9SQzRfNDBfTUQ1ID0g
MHgwMDAzLAogICAgU1NMX1JTQV9XSVRIX1JDNF8xMjhfTUQ1ID0gMHgwMDA0LAogICAgU1NMX1JT
QV9XSVRIX1JDNF8xMjhfU0hBID0gMHgwMDA1LAogICAgU1NMX1JTQV9FWFBPUlRfV0lUSF9SQzJf
Q0JDXzQwX01ENSA9IDB4MDAwNiwKICAgIFNTTF9SU0FfV0lUSF9JREVBX0NCQ19TSEEgPSAweDAw
MDcsCiAgICBTU0xfUlNBX0VYUE9SVF9XSVRIX0RFUzQwX0NCQ19TSEEgPSAweDAwMDgsCiAgICBT
U0xfUlNBX1dJVEhfREVTX0NCQ19TSEEgPSAweDAwMDksCiAgICBTU0xfUlNBX1dJVEhfM0RFU19F
REVfQ0JDX1NIQSA9IDB4MDAwQSwKICAgIFNTTF9ESF9EU1NfRVhQT1JUX1dJVEhfREVTNDBfQ0JD
X1NIQSA9IDB4MDAwQiwKICAgIFNTTF9ESF9EU1NfV0lUSF9ERVNfQ0JDX1NIQSA9IDB4MDAwQywK
ICAgIFNTTF9ESF9EU1NfV0lUSF8zREVTX0VERV9DQkNfU0hBID0gMHgwMDBELAogICAgU1NMX0RI
X1JTQV9FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBID0gMHgwMDBFLAogICAgU1NMX0RIX1JTQV9X
SVRIX0RFU19DQkNfU0hBID0gMHgwMDBGLAogICAgU1NMX0RIX1JTQV9XSVRIXzNERVNfRURFX0NC
Q19TSEEgPSAweDAwMTAsCiAgICBTU0xfREhFX0RTU19FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hB
ID0gMHgwMDExLAogICAgU1NMX0RIRV9EU1NfV0lUSF9ERVNfQ0JDX1NIQSA9IDB4MDAxMiwKICAg
IFNTTF9ESEVfRFNTX1dJVEhfM0RFU19FREVfQ0JDX1NIQSA9IDB4MDAxMywKICAgIFNTTF9ESEVf
UlNBX0VYUE9SVF9XSVRIX0RFUzQwX0NCQ19TSEEgPSAweDAwMTQsCiAgICBTU0xfREhFX1JTQV9X
SVRIX0RFU19DQkNfU0hBID0gMHgwMDE1LAogICAgU1NMX0RIRV9SU0FfV0lUSF8zREVTX0VERV9D
QkNfU0hBID0gMHgwMDE2LAogICAgU1NMX0RIX2Fub25fRVhQT1JUX1dJVEhfUkM0XzQwX01ENSA9
IDB4MDAxNywKICAgIFNTTF9ESF9hbm9uX1dJVEhfUkM0XzEyOF9NRDUgPSAweDAwMTgsCiAgICBT
U0xfREhfYW5vbl9FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBID0gMHgwMDE5LAogICAgU1NMX0RI
X2Fub25fV0lUSF9ERVNfQ0JDX1NIQSA9IDB4MDAxQSwKICAgIFNTTF9ESF9hbm9uX1dJVEhfM0RF
U19FREVfQ0JDX1NIQSA9IDB4MDAxQiwKICAgIFNTTF9GT1JURVpaQV9ETVNfV0lUSF9OVUxMX1NI
QSA9IDB4MDAxQywKICAgIFNTTF9GT1JURVpaQV9ETVNfV0lUSF9GT1JURVpaQV9DQkNfU0hBID0g
MHgwMDFELAoKCiBUTFNfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBID0gMHgwMDJGLAogVExTX0RI
X0RTU19XSVRIX0FFU18xMjhfQ0JDX1NIQSA9IDB4MDAzMCwKIFRMU19ESF9SU0FfV0lUSF9BRVNf
MTI4X0NCQ19TSEEgPSAweDAwMzEsCiBUTFNfREhFX0RTU19XSVRIX0FFU18xMjhfQ0JDX1NIQSA9
IDB4MDAzMiwKIFRMU19ESEVfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBID0gMHgwMDMzLAogVExT
X0RIX2Fub25fV0lUSF9BRVNfMTI4X0NCQ19TSEEgPSAweDAwMzQsCiBUTFNfUlNBX1dJVEhfQUVT
XzI1Nl9DQkNfU0hBID0gMHgwMDM1LAogVExTX0RIX0RTU19XSVRIX0FFU18yNTZfQ0JDX1NIQSA9
IDB4MDAzNiwKIFRMU19ESF9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEgPSAweDAwMzcsCiBUTFNf
REhFX0RTU19XSVRIX0FFU18yNTZfQ0JDX1NIQSA9IDB4MDAzOCwKIFRMU19ESEVfUlNBX1dJVEhf
QUVTXzI1Nl9DQkNfU0hBID0gMHgwMDM5LAogVExTX0RIX2Fub25fV0lUSF9BRVNfMjU2X0NCQ19T
SEEgPSAweDAwM0EsCgoKIFRMU19FQ0RIX0VDRFNBX1dJVEhfTlVMTF9TSEEgPSAweEMwMDEsCiBU
TFNfRUNESF9FQ0RTQV9XSVRIX1JDNF8xMjhfU0hBID0gMHhDMDAyLAogVExTX0VDREhfRUNEU0Ff
V0lUSF8zREVTX0VERV9DQkNfU0hBID0gMHhDMDAzLAogVExTX0VDREhfRUNEU0FfV0lUSF9BRVNf
MTI4X0NCQ19TSEEgPSAweEMwMDQsCiBUTFNfRUNESF9FQ0RTQV9XSVRIX0FFU18yNTZfQ0JDX1NI
QSA9IDB4QzAwNSwKIFRMU19FQ0RIRV9FQ0RTQV9XSVRIX05VTExfU0hBID0gMHhDMDA2LAogVExT
X0VDREhFX0VDRFNBX1dJVEhfUkM0XzEyOF9TSEEgPSAweEMwMDcsCiBUTFNfRUNESEVfRUNEU0Ff
V0lUSF8zREVTX0VERV9DQkNfU0hBID0gMHhDMDA4LAogVExTX0VDREhFX0VDRFNBX1dJVEhfQUVT
XzEyOF9DQkNfU0hBID0gMHhDMDA5LAogVExTX0VDREhFX0VDRFNBX1dJVEhfQUVTXzI1Nl9DQkNf
U0hBID0gMHhDMDBBLAogVExTX0VDREhfUlNBX1dJVEhfTlVMTF9TSEEgPSAweEMwMEIsCiBUTFNf
RUNESF9SU0FfV0lUSF9SQzRfMTI4X1NIQSA9IDB4QzAwQywKIFRMU19FQ0RIX1JTQV9XSVRIXzNE
RVNfRURFX0NCQ19TSEEgPSAweEMwMEQsCiBUTFNfRUNESF9SU0FfV0lUSF9BRVNfMTI4X0NCQ19T
SEEgPSAweEMwMEUsCiBUTFNfRUNESF9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEgPSAweEMwMEYs
CiBUTFNfRUNESEVfUlNBX1dJVEhfTlVMTF9TSEEgPSAweEMwMTAsCiBUTFNfRUNESEVfUlNBX1dJ
VEhfUkM0XzEyOF9TSEEgPSAweEMwMTEsCiBUTFNfRUNESEVfUlNBX1dJVEhfM0RFU19FREVfQ0JD
X1NIQSA9IDB4QzAxMiwKIFRMU19FQ0RIRV9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEgPSAweEMw
MTMsCiBUTFNfRUNESEVfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBID0gMHhDMDE0LAogVExTX0VD
REhfYW5vbl9XSVRIX05VTExfU0hBID0gMHhDMDE1LAogVExTX0VDREhfYW5vbl9XSVRIX1JDNF8x
MjhfU0hBID0gMHhDMDE2LAogVExTX0VDREhfYW5vbl9XSVRIXzNERVNfRURFX0NCQ19TSEEgPSAw
eEMwMTcsCiBUTFNfRUNESF9hbm9uX1dJVEhfQUVTXzEyOF9DQkNfU0hBID0gMHhDMDE4LAogVExT
X0VDREhfYW5vbl9XSVRIX0FFU18yNTZfQ0JDX1NIQSA9IDB4QzAxOSwKCgoKCgogICAgU1NMX1JT
QV9XSVRIX1JDMl9DQkNfTUQ1ID0gMHhGRjgwLAogICAgU1NMX1JTQV9XSVRIX0lERUFfQ0JDX01E
NSA9IDB4RkY4MSwKICAgIFNTTF9SU0FfV0lUSF9ERVNfQ0JDX01ENSA9IDB4RkY4MiwKICAgIFNT
TF9SU0FfV0lUSF8zREVTX0VERV9DQkNfTUQ1ID0gMHhGRjgzLAogICAgU1NMX05PX1NVQ0hfQ0lQ
SEVSU1VJVEUgPSAweEZGRkYKfTsKIyA3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2Vj
dXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHkuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJlVHJhbnNwb3J0
LmgiIDEgMwojIDI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdv
cmsvSGVhZGVycy9TZWN1cmVUcmFuc3BvcnQuaCIgMwojZGVmaW5lIF9TRUNVUklUWV9TRUNVUkVU
UkFOU1BPUlRfSF8gCiMgNjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZy
YW1ld29yay9IZWFkZXJzL1NlY3VyZVRyYW5zcG9ydC5oIiAzCmV4dGVybiAiQyIgewoKCgoKCgoK
c3RydWN0IFNTTENvbnRleHQ7CnR5cGVkZWYgc3RydWN0IFNTTENvbnRleHQgKlNTTENvbnRleHRS
ZWY7CgoKdHlwZWRlZiBjb25zdCB2b2lkICogU1NMQ29ubmVjdGlvblJlZjsKCgp0eXBlZGVmIGVu
dW0gewoga1NTTFByb3RvY29sVW5rbm93biwKIGtTU0xQcm90b2NvbDIsCiBrU1NMUHJvdG9jb2wz
LAoga1NTTFByb3RvY29sM09ubHksCgoga1RMU1Byb3RvY29sMSwKIGtUTFNQcm90b2NvbDFPbmx5
LAoga1NTTFByb3RvY29sQWxsCn0gU1NMUHJvdG9jb2w7CgoKdHlwZWRlZiBlbnVtIHsKCgoKCgoK
CiBrU1NMU2Vzc2lvbk9wdGlvbkJyZWFrT25TZXJ2ZXJBdXRoLAoKCgoKIGtTU0xTZXNzaW9uT3B0
aW9uQnJlYWtPbkNlcnRSZXF1ZXN0ZWQKfSBTU0xTZXNzaW9uT3B0aW9uOwoKCnR5cGVkZWYgZW51
bSB7CiBrU1NMSWRsZSwKIGtTU0xIYW5kc2hha2UsCiBrU1NMQ29ubmVjdGVkLAoga1NTTENsb3Nl
ZCwKIGtTU0xBYm9ydGVkCn0gU1NMU2Vzc2lvblN0YXRlOwoKCgoKCnR5cGVkZWYgZW51bSB7Cgog
a1NTTENsaWVudENlcnROb25lLAoKIGtTU0xDbGllbnRDZXJ0UmVxdWVzdGVkLAoKCgoKCgoga1NT
TENsaWVudENlcnRTZW50LAoKCgoKIGtTU0xDbGllbnRDZXJ0UmVqZWN0ZWQKfSBTU0xDbGllbnRD
ZXJ0aWZpY2F0ZVN0YXRlOwojIDE1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJp
dHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJlVHJhbnNwb3J0LmgiIDMKdHlwZWRlZiBPU1N0YXR1
cwooKlNTTFJlYWRGdW5jKSAoU1NMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uLAogICAgICAgIHZv
aWQgKmRhdGEsCgoKICAgICAgICBzaXplX3QgKmRhdGFMZW5ndGgpOwp0eXBlZGVmIE9TU3RhdHVz
CigqU1NMV3JpdGVGdW5jKSAoU1NMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uLAogICAgICAgIGNv
bnN0IHZvaWQgKmRhdGEsCiAgICAgICAgc2l6ZV90ICpkYXRhTGVuZ3RoKTsKIyAxODIgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyZVRy
YW5zcG9ydC5oIiAzCmVudW0gewogZXJyU1NMUHJvdG9jb2wgPSAtOTgwMCwKIGVyclNTTE5lZ290
aWF0aW9uID0gLTk4MDEsCiBlcnJTU0xGYXRhbEFsZXJ0ID0gLTk4MDIsCiBlcnJTU0xXb3VsZEJs
b2NrID0gLTk4MDMsCiAgICBlcnJTU0xTZXNzaW9uTm90Rm91bmQgPSAtOTgwNCwKICAgIGVyclNT
TENsb3NlZEdyYWNlZnVsID0gLTk4MDUsCiAgICBlcnJTU0xDbG9zZWRBYm9ydCA9IC05ODA2LAog
ICAgZXJyU1NMWENlcnRDaGFpbkludmFsaWQgPSAtOTgwNywKICAgIGVyclNTTEJhZENlcnQgPSAt
OTgwOCwKIGVyclNTTENyeXB0byA9IC05ODA5LAogZXJyU1NMSW50ZXJuYWwgPSAtOTgxMCwKIGVy
clNTTE1vZHVsZUF0dGFjaCA9IC05ODExLAogICAgZXJyU1NMVW5rbm93blJvb3RDZXJ0ID0gLTk4
MTIsCiAgICBlcnJTU0xOb1Jvb3RDZXJ0ID0gLTk4MTMsCiBlcnJTU0xDZXJ0RXhwaXJlZCA9IC05
ODE0LAogZXJyU1NMQ2VydE5vdFlldFZhbGlkID0gLTk4MTUsCiBlcnJTU0xDbG9zZWROb05vdGlm
eSA9IC05ODE2LAogZXJyU1NMQnVmZmVyT3ZlcmZsb3cgPSAtOTgxNywKIGVyclNTTEJhZENpcGhl
clN1aXRlID0gLTk4MTgsCgoKIGVyclNTTFBlZXJVbmV4cGVjdGVkTXNnID0gLTk4MTksCiBlcnJT
U0xQZWVyQmFkUmVjb3JkTWFjID0gLTk4MjAsCiBlcnJTU0xQZWVyRGVjcnlwdGlvbkZhaWwgPSAt
OTgyMSwKIGVyclNTTFBlZXJSZWNvcmRPdmVyZmxvdyA9IC05ODIyLAogZXJyU1NMUGVlckRlY29t
cHJlc3NGYWlsID0gLTk4MjMsCiBlcnJTU0xQZWVySGFuZHNoYWtlRmFpbCA9IC05ODI0LAogZXJy
U1NMUGVlckJhZENlcnQgPSAtOTgyNSwKIGVyclNTTFBlZXJVbnN1cHBvcnRlZENlcnQgPSAtOTgy
NiwKIGVyclNTTFBlZXJDZXJ0UmV2b2tlZCA9IC05ODI3LAogZXJyU1NMUGVlckNlcnRFeHBpcmVk
ID0gLTk4MjgsCiBlcnJTU0xQZWVyQ2VydFVua25vd24gPSAtOTgyOSwKIGVyclNTTElsbGVnYWxQ
YXJhbSA9IC05ODMwLAogZXJyU1NMUGVlclVua25vd25DQSA9IC05ODMxLAogZXJyU1NMUGVlckFj
Y2Vzc0RlbmllZCA9IC05ODMyLAogZXJyU1NMUGVlckRlY29kZUVycm9yID0gLTk4MzMsCiBlcnJT
U0xQZWVyRGVjcnlwdEVycm9yID0gLTk4MzQsCiBlcnJTU0xQZWVyRXhwb3J0UmVzdHJpY3Rpb24g
PSAtOTgzNSwKIGVyclNTTFBlZXJQcm90b2NvbFZlcnNpb24gPSAtOTgzNiwKIGVyclNTTFBlZXJJ
bnN1ZmZpY2llbnRTZWN1cml0eSA9IC05ODM3LAogZXJyU1NMUGVlckludGVybmFsRXJyb3IgPSAt
OTgzOCwKIGVyclNTTFBlZXJVc2VyQ2FuY2VsbGVkID0gLTk4MzksCiBlcnJTU0xQZWVyTm9SZW5l
Z290aWF0aW9uID0gLTk4NDAsCgoKIGVyclNTTFNlcnZlckF1dGhDb21wbGV0ZWQgPSAtOTg0MSwK
IGVyclNTTENsaWVudENlcnRSZXF1ZXN0ZWQgPSAtOTg0MiwKCgogZXJyU1NMSG9zdE5hbWVNaXNt
YXRjaCA9IC05ODQzLAogZXJyU1NMQ29ubmVjdGlvblJlZnVzZWQgPSAtOTg0NCwKIGVyclNTTERl
Y3J5cHRpb25GYWlsID0gLTk4NDUsCiBlcnJTU0xCYWRSZWNvcmRNYWMgPSAtOTg0NiwKIGVyclNT
TFJlY29yZE92ZXJmbG93ID0gLTk4NDcsCiBlcnJTU0xCYWRDb25maWd1cmF0aW9uID0gLTk4NDgs
CiBlcnJTU0xMYXN0ID0gLTk4NDkKfTsKIyAyNDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyZVRyYW5zcG9ydC5oIiAzCk9TU3RhdHVz
ClNTTE5ld0NvbnRleHQgKEJvb2xlYW4gaXNTZXJ2ZXIsCiAgICAgICAgU1NMQ29udGV4dFJlZiAq
Y29udGV4dFB0cik7CgoKCgpPU1N0YXR1cwpTU0xEaXNwb3NlQ29udGV4dCAoU1NMQ29udGV4dFJl
ZiBjb250ZXh0KTsKCgoKCk9TU3RhdHVzClNTTEdldFNlc3Npb25TdGF0ZSAoU1NMQ29udGV4dFJl
ZiBjb250ZXh0LAogICAgICAgIFNTTFNlc3Npb25TdGF0ZSAqc3RhdGUpOwoKCgoKCk9TU3RhdHVz
ClNTTFNldFNlc3Npb25PcHRpb24gKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAgICAgICBTU0xT
ZXNzaW9uT3B0aW9uIG9wdGlvbiwKICAgICAgICBCb29sZWFuIHZhbHVlKTsKCgoKCk9TU3RhdHVz
ClNTTEdldFNlc3Npb25PcHRpb24gKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAgICAgICBTU0xT
ZXNzaW9uT3B0aW9uIG9wdGlvbiwKICAgICAgICBCb29sZWFuICp2YWx1ZSk7CiMgMjkyICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cmVU
cmFuc3BvcnQuaCIgMwpPU1N0YXR1cwpTU0xTZXRJT0Z1bmNzIChTU0xDb250ZXh0UmVmIGNvbnRl
eHQsCiAgICAgICAgU1NMUmVhZEZ1bmMgcmVhZCwKICAgICAgICBTU0xXcml0ZUZ1bmMgd3JpdGUp
OwojIDMxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL0hl
YWRlcnMvU2VjdXJlVHJhbnNwb3J0LmgiIDMKT1NTdGF0dXMKU1NMU2V0UHJvdG9jb2xWZXJzaW9u
RW5hYmxlZCAoU1NMQ29udGV4dFJlZiBjb250ZXh0LAogICAgICAgIFNTTFByb3RvY29sIHByb3Rv
Y29sLAogICAgICAgIEJvb2xlYW4gZW5hYmxlKTsKCgoKCk9TU3RhdHVzClNTTEdldFByb3RvY29s
VmVyc2lvbkVuYWJsZWQoU1NMQ29udGV4dFJlZiBjb250ZXh0LAogICAgICAgIFNTTFByb3RvY29s
IHByb3RvY29sLAogICAgICAgIEJvb2xlYW4gKmVuYWJsZSk7CiMgMzMyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cmVUcmFuc3BvcnQu
aCIgMwpPU1N0YXR1cwpTU0xTZXRQcm90b2NvbFZlcnNpb24gKFNTTENvbnRleHRSZWYgY29udGV4
dCwKICAgICAgICBTU0xQcm90b2NvbCB2ZXJzaW9uKTsKIyAzNDQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyZVRyYW5zcG9ydC5oIiAz
Ck9TU3RhdHVzClNTTEdldFByb3RvY29sVmVyc2lvbiAoU1NMQ29udGV4dFJlZiBjb250ZXh0LAog
ICAgICAgIFNTTFByb3RvY29sICpwcm90b2NvbCk7CiMgMzc0ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cmVUcmFuc3BvcnQuaCIgMwpP
U1N0YXR1cwpTU0xTZXRDZXJ0aWZpY2F0ZSAoU1NMQ29udGV4dFJlZiBjb250ZXh0LAogICAgICAg
IENGQXJyYXlSZWYgY2VydFJlZnMpOwojIDM4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
U2VjdXJpdHkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJlVHJhbnNwb3J0LmgiIDMKT1NTdGF0dXMK
U1NMU2V0Q29ubmVjdGlvbiAoU1NMQ29udGV4dFJlZiBjb250ZXh0LAogICAgICAgIFNTTENvbm5l
Y3Rpb25SZWYgY29ubmVjdGlvbik7CgpPU1N0YXR1cwpTU0xHZXRDb25uZWN0aW9uIChTU0xDb250
ZXh0UmVmIGNvbnRleHQsCiAgICAgICAgU1NMQ29ubmVjdGlvblJlZiAqY29ubmVjdGlvbik7CiMg
NDAzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVy
cy9TZWN1cmVUcmFuc3BvcnQuaCIgMwpPU1N0YXR1cwpTU0xTZXRQZWVyRG9tYWluTmFtZSAoU1NM
Q29udGV4dFJlZiBjb250ZXh0LAogICAgICAgIGNvbnN0IGNoYXIgKnBlZXJOYW1lLAogICAgICAg
IHNpemVfdCBwZWVyTmFtZUxlbik7CgoKCgpPU1N0YXR1cwpTU0xHZXRQZWVyRG9tYWluTmFtZUxl
bmd0aCAoU1NMQ29udGV4dFJlZiBjb250ZXh0LAogICAgICAgIHNpemVfdCAqcGVlck5hbWVMZW4p
OwoKCgoKT1NTdGF0dXMKU1NMR2V0UGVlckRvbWFpbk5hbWUgKFNTTENvbnRleHRSZWYgY29udGV4
dCwKICAgICAgICBjaGFyICpwZWVyTmFtZSwKICAgICAgICBzaXplX3QgKnBlZXJOYW1lTGVuKTsK
CgoKCgoKCk9TU3RhdHVzClNTTEdldE5lZ290aWF0ZWRQcm90b2NvbFZlcnNpb24gKFNTTENvbnRl
eHRSZWYgY29udGV4dCwKICAgICAgICAgIFNTTFByb3RvY29sICpwcm90b2NvbCk7CgoKCgoKCgpP
U1N0YXR1cwpTU0xHZXROdW1iZXJTdXBwb3J0ZWRDaXBoZXJzIChTU0xDb250ZXh0UmVmIGNvbnRl
eHQsCiAgICAgICAgIHNpemVfdCAqbnVtQ2lwaGVycyk7CgpPU1N0YXR1cwpTU0xHZXRTdXBwb3J0
ZWRDaXBoZXJzIChTU0xDb250ZXh0UmVmIGNvbnRleHQsCiAgICAgICAgIFNTTENpcGhlclN1aXRl
ICpjaXBoZXJzLAogICAgICAgICBzaXplX3QgKm51bUNpcGhlcnMpOwoKCgoKCgoKT1NTdGF0dXMK
U1NMU2V0RW5hYmxlZENpcGhlcnMgKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAgICAgICBjb25z
dCBTU0xDaXBoZXJTdWl0ZSAqY2lwaGVycywKICAgICAgICBzaXplX3QgbnVtQ2lwaGVycyk7CgoK
CgoKCgpPU1N0YXR1cwpTU0xHZXROdW1iZXJFbmFibGVkQ2lwaGVycyAoU1NMQ29udGV4dFJlZiBj
b250ZXh0LAogICAgICAgIHNpemVfdCAqbnVtQ2lwaGVycyk7CgpPU1N0YXR1cwpTU0xHZXRFbmFi
bGVkQ2lwaGVycyAoU1NMQ29udGV4dFJlZiBjb250ZXh0LAogICAgICAgIFNTTENpcGhlclN1aXRl
ICpjaXBoZXJzLAogICAgICAgIHNpemVfdCAqbnVtQ2lwaGVycyk7CiMgNDgxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cmVUcmFuc3Bv
cnQuaCIgMwpPU1N0YXR1cwpTU0xTZXRFbmFibGVDZXJ0VmVyaWZ5IChTU0xDb250ZXh0UmVmIGNv
bnRleHQsCiAgICAgICAgQm9vbGVhbiBlbmFibGVWZXJpZnkpOwoKT1NTdGF0dXMKU1NMR2V0RW5h
YmxlQ2VydFZlcmlmeSAoU1NMQ29udGV4dFJlZiBjb250ZXh0LAogICAgICAgIEJvb2xlYW4gKmVu
YWJsZVZlcmlmeSk7CiMgNDk2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5m
cmFtZXdvcmsvSGVhZGVycy9TZWN1cmVUcmFuc3BvcnQuaCIgMwpPU1N0YXR1cwpTU0xTZXRBbGxv
d3NFeHBpcmVkQ2VydHMgKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAgICAgICBCb29sZWFuIGFs
bG93c0V4cGlyZWQpOwoKCgoKT1NTdGF0dXMKU1NMR2V0QWxsb3dzRXhwaXJlZENlcnRzIChTU0xD
b250ZXh0UmVmIGNvbnRleHQsCiAgICAgICAgQm9vbGVhbiAqYWxsb3dzRXhwaXJlZCk7CgoKCgoK
CgpPU1N0YXR1cwpTU0xTZXRBbGxvd3NFeHBpcmVkUm9vdHMgKFNTTENvbnRleHRSZWYgY29udGV4
dCwKICAgICAgICBCb29sZWFuIGFsbG93c0V4cGlyZWQpOwoKT1NTdGF0dXMKU1NMR2V0QWxsb3dz
RXhwaXJlZFJvb3RzIChTU0xDb250ZXh0UmVmIGNvbnRleHQsCiAgICAgICAgQm9vbGVhbiAqYWxs
b3dzRXhwaXJlZCk7CiMgNTM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5m
cmFtZXdvcmsvSGVhZGVycy9TZWN1cmVUcmFuc3BvcnQuaCIgMwpPU1N0YXR1cwpTU0xTZXRBbGxv
d3NBbnlSb290IChTU0xDb250ZXh0UmVmIGNvbnRleHQsCiAgICAgICAgQm9vbGVhbiBhbnlSb290
KTsKCgoKCk9TU3RhdHVzClNTTEdldEFsbG93c0FueVJvb3QgKFNTTENvbnRleHRSZWYgY29udGV4
dCwKICAgICAgICBCb29sZWFuICphbnlSb290KTsKIyA1NTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyZVRyYW5zcG9ydC5oIiAzCk9T
U3RhdHVzClNTTFNldFRydXN0ZWRSb290cyAoU1NMQ29udGV4dFJlZiBjb250ZXh0LAogICAgICAg
IENGQXJyYXlSZWYgdHJ1c3RlZFJvb3RzLAogICAgICAgIEJvb2xlYW4gcmVwbGFjZUV4aXN0aW5n
KTsKIyA1NzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9I
ZWFkZXJzL1NlY3VyZVRyYW5zcG9ydC5oIiAzCk9TU3RhdHVzClNTTEdldFRydXN0ZWRSb290cyAo
U1NMQ29udGV4dFJlZiBjb250ZXh0LAogICAgICAgIENGQXJyYXlSZWYgKnRydXN0ZWRSb290cykK
ICAgICAgICBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNTg1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cmVUcmFuc3BvcnQu
aCIgMwpPU1N0YXR1cwpTU0xDb3B5VHJ1c3RlZFJvb3RzIChTU0xDb250ZXh0UmVmIGNvbnRleHQs
CiAgICAgICAgQ0ZBcnJheVJlZiAqdHJ1c3RlZFJvb3RzKTsKIyA2MDMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyZVRyYW5zcG9ydC5o
IiAzCk9TU3RhdHVzClNTTEdldFBlZXJDZXJ0aWZpY2F0ZXMgKFNTTENvbnRleHRSZWYgY29udGV4
dCwKICAgICAgICBDRkFycmF5UmVmICpjZXJ0cykKICAgICAgICBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CiMgNjE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFt
ZXdvcmsvSGVhZGVycy9TZWN1cmVUcmFuc3BvcnQuaCIgMwpPU1N0YXR1cwpTU0xDb3B5UGVlckNl
cnRpZmljYXRlcyAoU1NMQ29udGV4dFJlZiBjb250ZXh0LAogICAgICAgIENGQXJyYXlSZWYgKmNl
cnRzKTsKCgoKCgoKT1NTdGF0dXMKU1NMQ29weVBlZXJUcnVzdCAoU1NMQ29udGV4dFJlZiBjb250
ZXh0LAogICAgICAgIFNlY1RydXN0UmVmICp0cnVzdCk7CiMgNjQ2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cmVUcmFuc3BvcnQuaCIg
MwpPU1N0YXR1cwpTU0xTZXRQZWVySUQgKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAgICAgICBj
b25zdCB2b2lkICpwZWVySUQsCiAgICAgICAgc2l6ZV90IHBlZXJJRExlbik7CgoKCgoKT1NTdGF0
dXMKU1NMR2V0UGVlcklEIChTU0xDb250ZXh0UmVmIGNvbnRleHQsCiAgICAgICAgY29uc3Qgdm9p
ZCAqKnBlZXJJRCwKICAgICAgICBzaXplX3QgKnBlZXJJRExlbik7CgoKCgoKT1NTdGF0dXMKU1NM
R2V0TmVnb3RpYXRlZENpcGhlciAoU1NMQ29udGV4dFJlZiBjb250ZXh0LAogICAgICAgIFNTTENp
cGhlclN1aXRlICpjaXBoZXJTdWl0ZSk7CiMgNzA1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cmVUcmFuc3BvcnQuaCIgMwpPU1N0YXR1
cwpTU0xTZXRFbmNyeXB0aW9uQ2VydGlmaWNhdGUgKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAg
ICAgICBDRkFycmF5UmVmIGNlcnRSZWZzKTsKCgoKCgoKCnR5cGVkZWYgZW51bSB7CiBrTmV2ZXJB
dXRoZW50aWNhdGUsCiBrQWx3YXlzQXV0aGVudGljYXRlLAoga1RyeUF1dGhlbnRpY2F0ZQoKfSBT
U0xBdXRoZW50aWNhdGU7CgpPU1N0YXR1cwpTU0xTZXRDbGllbnRTaWRlQXV0aGVudGljYXRlIChT
U0xDb250ZXh0UmVmIGNvbnRleHQsCiAgICAgICAgIFNTTEF1dGhlbnRpY2F0ZSBhdXRoKTsKCgoK
CgpPU1N0YXR1cwpTU0xBZGREaXN0aW5ndWlzaGVkTmFtZSAoU1NMQ29udGV4dFJlZiBjb250ZXh0
LAogICAgICAgIGNvbnN0IHZvaWQgKmRlckROLAogICAgICAgIHNpemVfdCBkZXJETkxlbik7CiMg
NzQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVy
cy9TZWN1cmVUcmFuc3BvcnQuaCIgMwpPU1N0YXR1cwpTU0xTZXRDZXJ0aWZpY2F0ZUF1dGhvcml0
aWVzKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAgICAgICBDRlR5cGVSZWYgY2VydGlmaWNhdGVP
ckFycmF5LAogICAgICAgIEJvb2xlYW4gcmVwbGFjZUV4aXN0aW5nKTsKCgoKCgoKCk9TU3RhdHVz
ClNTTENvcHlDZXJ0aWZpY2F0ZUF1dGhvcml0aWVzKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAg
ICAgICAgQ0ZBcnJheVJlZiAqY2VydGlmaWNhdGVzKTsKIyA3NzYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyZVRyYW5zcG9ydC5oIiAz
Ck9TU3RhdHVzClNTTENvcHlEaXN0aW5ndWlzaGVkTmFtZXMgKFNTTENvbnRleHRSZWYgY29udGV4
dCwKICAgICAgICBDRkFycmF5UmVmICpuYW1lcyk7CiMgNzg3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cmVUcmFuc3BvcnQuaCIgMwpP
U1N0YXR1cwpTU0xHZXRDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlIChTU0xDb250ZXh0UmVmIGNvbnRl
eHQsCiAgICAgICAgIFNTTENsaWVudENlcnRpZmljYXRlU3RhdGUgKmNsaWVudFN0YXRlKTsKCgoK
CgoKCk9TU3RhdHVzIFNTTFNldERpZmZpZUhlbGxtYW5QYXJhbXMgKFNTTENvbnRleHRSZWYgY29u
dGV4dCwKICAgICAgICAgIGNvbnN0IHZvaWQgKmRoUGFyYW1zLAogICAgICAgICAgc2l6ZV90IGRo
UGFyYW1zTGVuKTsKCgoKCgpPU1N0YXR1cyBTU0xHZXREaWZmaWVIZWxsbWFuUGFyYW1zIChTU0xD
b250ZXh0UmVmIGNvbnRleHQsCiAgICAgICAgICBjb25zdCB2b2lkICoqZGhQYXJhbXMsCiAgICAg
ICAgICBzaXplX3QgKmRoUGFyYW1zTGVuKTsKCgoKCgoKT1NTdGF0dXMgU1NMU2V0UnNhQmxpbmRp
bmcgKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAgICAgICAgIEJvb2xlYW4gYmxpbmRpbmcpOwoK
T1NTdGF0dXMgU1NMR2V0UnNhQmxpbmRpbmcgKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAgICAg
ICAgIEJvb2xlYW4gKmJsaW5kaW5nKTsKIyA4NzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1NlY3VyaXR5LmZyYW1ld29yay9IZWFkZXJzL1NlY3VyZVRyYW5zcG9ydC5oIiAzCk9TU3RhdHVz
ClNTTEhhbmRzaGFrZSAoU1NMQ29udGV4dFJlZiBjb250ZXh0KTsKCgoKCgoKT1NTdGF0dXMKU1NM
V3JpdGUgKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAgICAgICBjb25zdCB2b2lkICogZGF0YSwK
ICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCwKICAgICAgICBzaXplX3QgKnByb2Nlc3NlZCk7CgoK
CgoKCk9TU3RhdHVzClNTTFJlYWQgKFNTTENvbnRleHRSZWYgY29udGV4dCwKICAgICAgICB2b2lk
ICogZGF0YSwKICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCwKICAgICAgICBzaXplX3QgKnByb2Nl
c3NlZCk7CgoKCgoKCk9TU3RhdHVzClNTTEdldEJ1ZmZlcmVkUmVhZFNpemUgKFNTTENvbnRleHRS
ZWYgY29udGV4dCwKICAgICAgICBzaXplX3QgKmJ1ZlNpemUpOwoKCgoKT1NTdGF0dXMKU1NMQ2xv
c2UgKFNTTENvbnRleHRSZWYgY29udGV4dCk7CgoKfQojIDcyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cml0eS5oIiAyIDMKIyAxNSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9O
U1VSTENyZWRlbnRpYWwuaCIgMiAzCgpAY2xhc3MgTlNTdHJpbmc7CkBjbGFzcyBOU0FycmF5Owoj
IDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFk
ZXJzL05TVVJMQ3JlZGVudGlhbC5oIiAzCmVudW0gewogICAgTlNVUkxDcmVkZW50aWFsUGVyc2lz
dGVuY2VOb25lLAogICAgTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uLAogICAg
TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQKfTsKdHlwZWRlZiBOU1VJbnRlZ2Vy
IE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlOwoKQGNsYXNzIE5TVVJMQ3JlZGVudGlhbEludGVy
bmFsOwoKCgoKCgpAaW50ZXJmYWNlIE5TVVJMQ3JlZGVudGlhbCA6IE5TT2JqZWN0IDxOU0NvcHlp
bmc+CnsKICAgIEBwcml2YXRlCiAgICBOU1VSTENyZWRlbnRpYWxJbnRlcm5hbCAqX2ludGVybmFs
Owp9CgoKCgoKCi0gKE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlKXBlcnNpc3RlbmNlOwoKQGVu
ZAoKCgoKCkBpbnRlcmZhY2UgTlNVUkxDcmVkZW50aWFsKE5TSW50ZXJuZXRQYXNzd29yZCkKIyA3
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9OU1VSTENyZWRlbnRpYWwuaCIgMwotIChpZClpbml0V2l0aFVzZXI6KE5TU3RyaW5nICopdXNl
ciBwYXNzd29yZDooTlNTdHJpbmcgKilwYXNzd29yZCBwZXJzaXN0ZW5jZTooTlNVUkxDcmVkZW50
aWFsUGVyc2lzdGVuY2UpcGVyc2lzdGVuY2U7CiMgODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDcmVkZW50aWFsLmgiIDMKKyAo
TlNVUkxDcmVkZW50aWFsICopY3JlZGVudGlhbFdpdGhVc2VyOihOU1N0cmluZyAqKXVzZXIgcGFz
c3dvcmQ6KE5TU3RyaW5nICopcGFzc3dvcmQgcGVyc2lzdGVuY2U6KE5TVVJMQ3JlZGVudGlhbFBl
cnNpc3RlbmNlKXBlcnNpc3RlbmNlOwoKCgoKCgotIChOU1N0cmluZyAqKXVzZXI7CiMgOTcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNV
UkxDcmVkZW50aWFsLmgiIDMKLSAoTlNTdHJpbmcgKilwYXNzd29yZDsKIyAxMDggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDcmVk
ZW50aWFsLmgiIDMKLSAoQk9PTCloYXNQYXNzd29yZDsKCkBlbmQKCgoKCgpAaW50ZXJmYWNlIE5T
VVJMQ3JlZGVudGlhbChOU0NsaWVudENlcnRpZmljYXRlKQojIDEyNiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTENyZWRlbnRpYWwu
aCIgMwotIChpZClpbml0V2l0aElkZW50aXR5OihTZWNJZGVudGl0eVJlZilpZGVudGl0eSBjZXJ0
aWZpY2F0ZXM6KE5TQXJyYXkgKiljZXJ0QXJyYXkgcGVyc2lzdGVuY2U6KE5TVVJMQ3JlZGVudGlh
bFBlcnNpc3RlbmNlKSBwZXJzaXN0ZW5jZTsKIyAxMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDcmVkZW50aWFsLmgiIDMKKyAo
TlNVUkxDcmVkZW50aWFsICopY3JlZGVudGlhbFdpdGhJZGVudGl0eTooU2VjSWRlbnRpdHlSZWYp
aWRlbnRpdHkgY2VydGlmaWNhdGVzOihOU0FycmF5ICopY2VydEFycmF5IHBlcnNpc3RlbmNlOihO
U1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZSlwZXJzaXN0ZW5jZTsKCgoKCgoKLSAoU2VjSWRlbnRp
dHlSZWYpaWRlbnRpdHk7CgoKCgoKCi0gKE5TQXJyYXkgKiljZXJ0aWZpY2F0ZXM7CgpAZW5kCgpA
aW50ZXJmYWNlIE5TVVJMQ3JlZGVudGlhbChOU1NlcnZlclRydXN0KQoKCgoKCgotIChpZClpbml0
V2l0aFRydXN0OihTZWNUcnVzdFJlZil0cnVzdDsKCgoKCgoKKyAoTlNVUkxDcmVkZW50aWFsICop
Y3JlZGVudGlhbEZvclRydXN0OihTZWNUcnVzdFJlZil0cnVzdDsKCkBlbmQKIyA4MCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0
aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvTlNVUkxDcmVkZW50aWFsU3RvcmFnZS5oIiAxIDMKIyAxNSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTENy
ZWRlbnRpYWxTdG9yYWdlLmgiIDMKQGNsYXNzIE5TRGljdGlvbmFyeTsKQGNsYXNzIE5TU3RyaW5n
OwpAY2xhc3MgTlNVUkxDcmVkZW50aWFsOwpAY2xhc3MgTlNVUkxQcm90ZWN0aW9uU3BhY2U7CgpA
Y2xhc3MgTlNVUkxDcmVkZW50aWFsU3RvcmFnZUludGVybmFsOwoKCgoKCgpAaW50ZXJmYWNlIE5T
VVJMQ3JlZGVudGlhbFN0b3JhZ2UgOiBOU09iamVjdAp7CiAgICBAcHJpdmF0ZQogICAgTlNVUkxD
cmVkZW50aWFsU3RvcmFnZUludGVybmFsICpfaW50ZXJuYWw7Cn0KCgoKCgoKKyAoTlNVUkxDcmVk
ZW50aWFsU3RvcmFnZSAqKXNoYXJlZENyZWRlbnRpYWxTdG9yYWdlOwoKCgoKCgoKLSAoTlNEaWN0
aW9uYXJ5ICopY3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6KE5TVVJMUHJvdGVjdGlvblNw
YWNlICopc3BhY2U7CiMgNTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxDcmVkZW50aWFsU3RvcmFnZS5oIiAzCi0gKE5TRGljdGlv
bmFyeSAqKWFsbENyZWRlbnRpYWxzOwojIDY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9G
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMQ3JlZGVudGlhbFN0b3JhZ2UuaCIgMwot
ICh2b2lkKXNldENyZWRlbnRpYWw6KE5TVVJMQ3JlZGVudGlhbCAqKWNyZWRlbnRpYWwgZm9yUHJv
dGVjdGlvblNwYWNlOihOU1VSTFByb3RlY3Rpb25TcGFjZSAqKXNwYWNlOwojIDc1ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMQ3Jl
ZGVudGlhbFN0b3JhZ2UuaCIgMwotICh2b2lkKXJlbW92ZUNyZWRlbnRpYWw6KE5TVVJMQ3JlZGVu
dGlhbCAqKWNyZWRlbnRpYWwgZm9yUHJvdGVjdGlvblNwYWNlOihOU1VSTFByb3RlY3Rpb25TcGFj
ZSAqKXNwYWNlOwoKCgoKCgotIChOU1VSTENyZWRlbnRpYWwgKilkZWZhdWx0Q3JlZGVudGlhbEZv
clByb3RlY3Rpb25TcGFjZTooTlNVUkxQcm90ZWN0aW9uU3BhY2UgKilzcGFjZTsKIyA5MSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VS
TENyZWRlbnRpYWxTdG9yYWdlLmgiIDMKLSAodm9pZClzZXREZWZhdWx0Q3JlZGVudGlhbDooTlNV
UkxDcmVkZW50aWFsICopY3JlZGVudGlhbCBmb3JQcm90ZWN0aW9uU3BhY2U6KE5TVVJMUHJvdGVj
dGlvblNwYWNlICopc3BhY2U7CgpAZW5kCgoKCgoKCmV4dGVybiBOU1N0cmluZyAqY29uc3QgTlNV
UkxDcmVkZW50aWFsU3RvcmFnZUNoYW5nZWROb3RpZmljYXRpb247CiMgODEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5o
IiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL05TVVJMRXJyb3IuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxFcnJvci5oIiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0Nv
cmVTZXJ2aWNlcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVTZXJ2aWNlcy5oIiAzCiNkZWZpbmUgX19DT1JF
U0VSVklDRVNfXyAKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUUuaCIgMSAzCiMg
MTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRS5oIiAzCiNkZWZpbmUgX19BRV9fIAoKCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAxIDMKIyAx
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAzCiNkZWZp
bmUgX19DQVJCT05DT1JFX18gCiMgMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L0NhcmJvbkNvcmUuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0Zp
bmRlci5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmluZGVy
LmgiIDMKI2RlZmluZSBfX0ZJTkRFUl9fIAojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9GaW5kZXIuaCIgMwojcHJhZ21hIHBhY2socHVzaCwgMikKCgplbnVtIHsKICBrQ2xp
cHBpbmdDcmVhdG9yID0gJ2RyYWcnLAogIGtDbGlwcGluZ1BpY3R1cmVUeXBlID0gJ2NscHAnLAog
IGtDbGlwcGluZ1RleHRUeXBlID0gJ2NscHQnLAogIGtDbGlwcGluZ1NvdW5kVHlwZSA9ICdjbHBz
JywKICBrQ2xpcHBpbmdVbmtub3duVHlwZSA9ICdjbHB1Jwp9OwoKCgplbnVtIHsKICBrSW50ZXJu
ZXRMb2NhdGlvbkNyZWF0b3IgPSAnZHJhZycsCiAga0ludGVybmV0TG9jYXRpb25IVFRQID0gJ2ls
aHQnLAogIGtJbnRlcm5ldExvY2F0aW9uRlRQID0gJ2lsZnQnLAogIGtJbnRlcm5ldExvY2F0aW9u
RmlsZSA9ICdpbGZpJywKICBrSW50ZXJuZXRMb2NhdGlvbk1haWwgPSAnaWxtYScsCiAga0ludGVy
bmV0TG9jYXRpb25OTlRQID0gJ2lsbncnLAogIGtJbnRlcm5ldExvY2F0aW9uQUZQID0gJ2lsYWYn
LAogIGtJbnRlcm5ldExvY2F0aW9uQXBwbGVUYWxrID0gJ2lsYXQnLAogIGtJbnRlcm5ldExvY2F0
aW9uTlNMID0gJ2lsbnMnLAogIGtJbnRlcm5ldExvY2F0aW9uR2VuZXJpYyA9ICdpbGdlJwp9OwoK
CgplbnVtIHsKICBrQ3VzdG9tSWNvblJlc291cmNlID0gLTE2NDU1Cn07CgoKCgoKCmVudW0gewog
IGtDdXN0b21CYWRnZVJlc291cmNlVHlwZSA9ICdiYWRnJywKICBrQ3VzdG9tQmFkZ2VSZXNvdXJj
ZUlEID0ga0N1c3RvbUljb25SZXNvdXJjZSwKICBrQ3VzdG9tQmFkZ2VSZXNvdXJjZVZlcnNpb24g
PSAwCn07CgpzdHJ1Y3QgQ3VzdG9tQmFkZ2VSZXNvdXJjZSB7CiAgU0ludDE2IHZlcnNpb247CiAg
U0ludDE2IGN1c3RvbUJhZGdlUmVzb3VyY2VJRDsKCiAgT1NUeXBlIGN1c3RvbUJhZGdlVHlwZTsK
ICBPU1R5cGUgY3VzdG9tQmFkZ2VDcmVhdG9yOwogIE9TVHlwZSB3aW5kb3dCYWRnZVR5cGU7CiAg
T1NUeXBlIHdpbmRvd0JhZGdlQ3JlYXRvcjsKCiAgT1NUeXBlIG92ZXJyaWRlVHlwZTsKICBPU1R5
cGUgb3ZlcnJpZGVDcmVhdG9yOwp9Owp0eXBlZGVmIHN0cnVjdCBDdXN0b21CYWRnZVJlc291cmNl
IEN1c3RvbUJhZGdlUmVzb3VyY2U7CnR5cGVkZWYgQ3VzdG9tQmFkZ2VSZXNvdXJjZSAqIEN1c3Rv
bUJhZGdlUmVzb3VyY2VQdHI7CnR5cGVkZWYgQ3VzdG9tQmFkZ2VSZXNvdXJjZVB0ciAqIEN1c3Rv
bUJhZGdlUmVzb3VyY2VIYW5kbGU7CiMgMTAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GaW5kZXIuaCIgMwplbnVtIHsKICBrUm91dGluZ1Jlc291cmNlVHlwZSA9ICdyb3V0JywK
ICBrUm91dGluZ1Jlc291cmNlSUQgPSAwCn07CgpzdHJ1Y3QgUm91dGluZ1Jlc291cmNlRW50cnkg
ewogIE9TVHlwZSBjcmVhdG9yOwogIE9TVHlwZSBmaWxlVHlwZTsKICBPU1R5cGUgdGFyZ2V0Rm9s
ZGVyOwogIE9TVHlwZSBkZXN0aW5hdGlvbkZvbGRlcjsKICBPU1R5cGUgcmVzZXJ2ZWRGaWVsZDsK
fTsKdHlwZWRlZiBzdHJ1Y3QgUm91dGluZ1Jlc291cmNlRW50cnkgUm91dGluZ1Jlc291cmNlRW50
cnk7CnR5cGVkZWYgUm91dGluZ1Jlc291cmNlRW50cnkgKiBSb3V0aW5nUmVzb3VyY2VQdHI7CnR5
cGVkZWYgUm91dGluZ1Jlc291cmNlUHRyICogUm91dGluZ1Jlc291cmNlSGFuZGxlOwoKCmVudW0g
ewogIGtDb250YWluZXJGb2xkZXJBbGlhc1R5cGUgPSAnZmRycCcsCiAga0NvbnRhaW5lclRyYXNo
QWxpYXNUeXBlID0gJ3Ryc2gnLAogIGtDb250YWluZXJIYXJkRGlza0FsaWFzVHlwZSA9ICdoZHNr
JywKICBrQ29udGFpbmVyRmxvcHB5QWxpYXNUeXBlID0gJ2ZscHknLAogIGtDb250YWluZXJTZXJ2
ZXJBbGlhc1R5cGUgPSAnc3J2cicsCiAga0FwcGxpY2F0aW9uQWxpYXNUeXBlID0gJ2FkcnAnLAog
IGtDb250YWluZXJBbGlhc1R5cGUgPSAnZHJvcCcsCiAga0Rlc2t0b3BQcmludGVyQWxpYXNUeXBl
ID0gJ2R0cGEnLAogIGtDb250YWluZXJDRFJPTUFsaWFzVHlwZSA9ICdjZGRyJywKICBrQXBwbGlj
YXRpb25DUEFsaWFzVHlwZSA9ICdhY2RwJywKICBrQXBwbGljYXRpb25EQUFsaWFzVHlwZSA9ICdh
ZGRwJywKICBrUGFja2FnZUFsaWFzVHlwZSA9ICdmcGthJywKICBrQXBwUGFja2FnZUFsaWFzVHlw
ZSA9ICdmYXBhJwp9OwoKCmVudW0gewogIGtTeXN0ZW1Gb2xkZXJBbGlhc1R5cGUgPSAnZmFzeScs
CiAga0FwcGxlTWVudUZvbGRlckFsaWFzVHlwZSA9ICdmYWFtJywKICBrU3RhcnR1cEZvbGRlckFs
aWFzVHlwZSA9ICdmYXN0JywKICBrUHJpbnRNb25pdG9yRG9jc0ZvbGRlckFsaWFzVHlwZSA9ICdm
YXBuJywKICBrUHJlZmVyZW5jZXNGb2xkZXJBbGlhc1R5cGUgPSAnZmFwZicsCiAga0NvbnRyb2xQ
YW5lbEZvbGRlckFsaWFzVHlwZSA9ICdmYWN0JywKICBrRXh0ZW5zaW9uRm9sZGVyQWxpYXNUeXBl
ID0gJ2ZhZXgnCn07CgoKZW51bSB7CiAga0V4cG9ydGVkRm9sZGVyQWxpYXNUeXBlID0gJ2ZhZXQn
LAogIGtEcm9wRm9sZGVyQWxpYXNUeXBlID0gJ2ZhZHInLAogIGtTaGFyZWRGb2xkZXJBbGlhc1R5
cGUgPSAnZmFzaCcsCiAga01vdW50ZWRGb2xkZXJBbGlhc1R5cGUgPSAnZmFtbicKfTsKCgoKCgpl
bnVtIHsKICBrSXNPbkRlc2sgPSAweDAwMDEsCiAga0NvbG9yID0gMHgwMDBFLAoKICBrSXNTaGFy
ZWQgPSAweDAwNDAsCgoKCiAga0hhc05vSU5JVHMgPSAweDAwODAsCgogIGtIYXNCZWVuSW5pdGVk
ID0gMHgwMTAwLAoKCgoKCiAga0hhc0N1c3RvbUljb24gPSAweDA0MDAsCiAga0lzU3RhdGlvbmVy
eSA9IDB4MDgwMCwKICBrTmFtZUxvY2tlZCA9IDB4MTAwMCwKICBrSGFzQnVuZGxlID0gMHgyMDAw
LAoKCiAga0lzSW52aXNpYmxlID0gMHg0MDAwLAogIGtJc0FsaWFzID0gMHg4MDAwCn07CgoKZW51
bSB7CiAgZk9uRGVzayA9IGtJc09uRGVzaywKICBmSGFzQnVuZGxlID0ga0hhc0J1bmRsZSwKICBm
SW52aXNpYmxlID0ga0lzSW52aXNpYmxlCn07CgoKZW51bSB7CiAgZlRyYXNoID0gLTMsCiAgZkRl
c2t0b3AgPSAtMiwKICBmRGlzayA9IDAKfTsKIyAyMDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0ZpbmRlci5oIiAzCmVudW0gewogIGtFeHRlbmRlZEZsYWdzQXJlSW52YWxpZCA9
IDB4ODAwMCwKICBrRXh0ZW5kZWRGbGFnSGFzQ3VzdG9tQmFkZ2UgPSAweDAxMDAsCiAga0V4dGVu
ZGVkRmxhZ09iamVjdElzQnVzeSA9IDB4MDA4MCwKICBrRXh0ZW5kZWRGbGFnSGFzUm91dGluZ0lu
Zm8gPSAweDAwMDQKfTsKIyAyMjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0Zp
bmRlci5oIiAzCmVudW0gewogIGtGaXJzdE1hZ2ljQnVzeUZpbGV0eXBlID0gJ2J6eSAnLAogIGtM
YXN0TWFnaWNCdXN5RmlsZXR5cGUgPSAnYnp5PycKfTsKCgoKCgoKZW51bSB7CiAga01hZ2ljQnVz
eUNyZWF0aW9uRGF0ZSA9IDB4NEYzQUZEQjAKfTsKIyAyNDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0ZpbmRlci5oIiAzCnN0cnVjdCBGaWxlSW5mbyB7CiAgT1NUeXBlIGZpbGVU
eXBlOwogIE9TVHlwZSBmaWxlQ3JlYXRvcjsKICBVSW50MTYgZmluZGVyRmxhZ3M7CiAgUG9pbnQg
bG9jYXRpb247CgogIFVJbnQxNiByZXNlcnZlZEZpZWxkOwp9Owp0eXBlZGVmIHN0cnVjdCBGaWxl
SW5mbyBGaWxlSW5mbzsKc3RydWN0IEZvbGRlckluZm8gewogIFJlY3Qgd2luZG93Qm91bmRzOwog
IFVJbnQxNiBmaW5kZXJGbGFnczsKICBQb2ludCBsb2NhdGlvbjsKCiAgVUludDE2IHJlc2VydmVk
RmllbGQ7Cn07CnR5cGVkZWYgc3RydWN0IEZvbGRlckluZm8gRm9sZGVySW5mbzsKc3RydWN0IEV4
dGVuZGVkRmlsZUluZm8gewogIFNJbnQxNiByZXNlcnZlZDFbNF07CiAgVUludDE2IGV4dGVuZGVk
RmluZGVyRmxhZ3M7CiAgU0ludDE2IHJlc2VydmVkMjsKICBTSW50MzIgcHV0QXdheUZvbGRlcklE
Owp9Owp0eXBlZGVmIHN0cnVjdCBFeHRlbmRlZEZpbGVJbmZvIEV4dGVuZGVkRmlsZUluZm87CnN0
cnVjdCBFeHRlbmRlZEZvbGRlckluZm8gewogIFBvaW50IHNjcm9sbFBvc2l0aW9uOwogIFNJbnQz
MiByZXNlcnZlZDE7CiAgVUludDE2IGV4dGVuZGVkRmluZGVyRmxhZ3M7CiAgU0ludDE2IHJlc2Vy
dmVkMjsKICBTSW50MzIgcHV0QXdheUZvbGRlcklEOwp9Owp0eXBlZGVmIHN0cnVjdCBFeHRlbmRl
ZEZvbGRlckluZm8gRXh0ZW5kZWRGb2xkZXJJbmZvOwojIDI4NyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvRmluZGVyLmgiIDMKc3RydWN0IEZJbmZvIHsKICBPU1R5cGUgZmRUeXBl
OwogIE9TVHlwZSBmZENyZWF0b3I7CiAgVUludDE2IGZkRmxhZ3M7CiAgUG9pbnQgZmRMb2NhdGlv
bjsKCiAgU0ludDE2IGZkRmxkcjsKfTsKdHlwZWRlZiBzdHJ1Y3QgRkluZm8gRkluZm87CgoKCgoK
CgpzdHJ1Y3QgRlhJbmZvIHsKICBTSW50MTYgZmRJY29uSUQ7CiAgU0ludDE2IGZkUmVzZXJ2ZWRb
M107CiAgU0ludDggZmRTY3JpcHQ7CiAgU0ludDggZmRYRmxhZ3M7CiAgU0ludDE2IGZkQ29tbWVu
dDsKICBTSW50MzIgZmRQdXRBd2F5Owp9Owp0eXBlZGVmIHN0cnVjdCBGWEluZm8gRlhJbmZvOwoK
CgoKCgpzdHJ1Y3QgREluZm8gewogIFJlY3QgZnJSZWN0OwogIFVJbnQxNiBmckZsYWdzOwogIFBv
aW50IGZyTG9jYXRpb247CgogIFNJbnQxNiBmclZpZXc7Cn07CnR5cGVkZWYgc3RydWN0IERJbmZv
IERJbmZvOwoKCgoKCgoKc3RydWN0IERYSW5mbyB7CiAgUG9pbnQgZnJTY3JvbGw7CiAgU0ludDMy
IGZyT3BlbkNoYWluOwogIFNJbnQ4IGZyU2NyaXB0OwogIFNJbnQ4IGZyWEZsYWdzOwogIFNJbnQx
NiBmckNvbW1lbnQ7CiAgU0ludDMyIGZyUHV0QXdheTsKfTsKdHlwZWRlZiBzdHJ1Y3QgRFhJbmZv
IERYSW5mbzsKCgojcHJhZ21hIHBhY2socG9wKQojIDM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25Db3JlLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0ZpeE1hdGguaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0ZpeE1hdGguaCIgMwojZGVmaW5lIF9fRklYTUFUSF9fIAojIDMyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaXhNYXRoLmgiIDMKZXh0ZXJuICJDIiB7CgoKCiNk
ZWZpbmUgZml4ZWQxICgoRml4ZWQpIDB4MDAwMTAwMDBMKQojZGVmaW5lIGZyYWN0MSAoKEZyYWN0
KSAweDQwMDAwMDAwTCkKI2RlZmluZSBwb3NpdGl2ZUluZmluaXR5ICgoRml4ZWQpIDB4N0ZGRkZG
RkZMKQojZGVmaW5lIG5lZ2F0aXZlSW5maW5pdHkgKChGaXhlZCkgLTB4ODAwMDAwMDBMKQojIDUw
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaXhNYXRoLmgiIDMKI2RlZmluZSBf
SW50U2F0dXJhdGUoeCkgKHsgaW50IF9SZXN1bHQgPSAoaW50KSAoeCk7IF9fYXNtX18oIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVjb21pc2QgJVtM
aW1pdEZsb2F0XSwgJVt4eF0gICAgXG4gICAgICAgICAgICAgICAgICBjbW92YWUgICVbTGltaXRJ
bnRdLCAlW19SZXN1bHRdICIgOiBbX1Jlc3VsdF0gIityIiAoX1Jlc3VsdCkgOiBbTGltaXRGbG9h
dF0gIm14IiAoMHgxcDMxKSwgW0xpbWl0SW50XSAibXIiICgweDdmZmZmZmZmKSwgW3h4XSAieCIg
KChkb3VibGUpKHgpKSA6ICJjYyIgKTsgX1Jlc3VsdDsgfSkKIyAxMDAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0ZpeE1hdGguaCIgMwojZGVmaW5lIEZsb2F0VG9GaXhlZChhKSAo
X0ludFNhdHVyYXRlKChhKSAqIGZpeGVkMSkpCiNkZWZpbmUgRmxvYXRUb0ZyYWN0KGEpIChfSW50
U2F0dXJhdGUoKGEpICogZnJhY3QxKSkKCiNkZWZpbmUgRml4ZWRSb3VuZChhKSAoKHNob3J0KSgo
KEZpeGVkKShhKSArIGZpeGVkMS8yKSA+PiAxNikpCiNkZWZpbmUgRml4ZWRTcXVhcmVSb290KGEp
ICgoKEZpeGVkKUZyYWN0U3F1YXJlUm9vdChhKSArIDY0KSA+PiA3KQojZGVmaW5lIEZpeGVkVHJ1
bmNhdGUoYSkgKChzaG9ydCkoKEZpeGVkKShhKSA+PiAxNikpCiNkZWZpbmUgRml4ZWRUb0ZyYWN0
KGEpICgoRnJhY3QpKGEpIDw8IDE0KQojZGVmaW5lIEZyYWN0VG9GaXhlZChhKSAoKChGaXhlZCko
YSkgKyA4MTkyTCkgPj4gMTQpCiNkZWZpbmUgRml4ZWRUb0ludChhKSAoKHNob3J0KSgoKEZpeGVk
KShhKSArIGZpeGVkMS8yKSA+PiAxNikpCiNkZWZpbmUgSW50VG9GaXhlZChhKSAoKEZpeGVkKShh
KSA8PCAxNikKI2RlZmluZSBGaXhlZFRvRmxvYXQoYSkgKChmbG9hdCkoYSkgLyBmaXhlZDEpCiNk
ZWZpbmUgRnJhY3RUb0Zsb2F0KGEpICgoZmxvYXQpKGEpIC8gZnJhY3QxKQojZGVmaW5lIENvbG9y
VG9GcmFjdChhKSAoKChGcmFjdCkgKGEpIDw8IDE0KSArICgoRnJhY3QpKGEpICsgMiA+PiAyKSkK
I2RlZmluZSBGcmFjdFRvQ29sb3IoYSkgKChneENvbG9yVmFsdWUpICgoYSkgLSAoKGEpID4+IDE2
KSArIDgxOTEgPj4gMTQpKQojIDEzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
Rml4TWF0aC5oIiAzCmV4dGVybiBGaXhlZApGaXhSYXRpbygKICBzaG9ydCBudW1lciwKICBzaG9y
dCBkZW5vbSkgOwojIDE0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRml4TWF0
aC5oIiAzCmV4dGVybiBGaXhlZApGaXhNdWwoCiAgRml4ZWQgYSwKICBGaXhlZCBiKSA7CiMgMTU4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaXhNYXRoLmgiIDMKZXh0ZXJuIHNo
b3J0CkZpeFJvdW5kKEZpeGVkIHgpIDsKIyAxNzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0ZpeE1hdGguaCIgMwpleHRlcm4gRnJhY3QKRml4MkZyYWMoRml4ZWQgeCkgOwojIDE4
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRml4TWF0aC5oIiAzCmV4dGVybiBT
SW50MzIKRml4MkxvbmcoRml4ZWQgeCkgOwojIDE5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvRml4TWF0aC5oIiAzCmV4dGVybiBGaXhlZApMb25nMkZpeChTSW50MzIgeCkgOwoj
IDIwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRml4TWF0aC5oIiAzCmV4dGVy
biBGaXhlZApGcmFjMkZpeChGcmFjdCB4KSA7CiMgMjE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9GaXhNYXRoLmgiIDMKZXh0ZXJuIEZyYWN0CkZyYWNNdWwoCiAgRnJhY3QgeCwK
ICBGcmFjdCB5KSA7CiMgMjMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaXhN
YXRoLmgiIDMKZXh0ZXJuIEZpeGVkCkZpeERpdigKICBGaXhlZCB4LAogIEZpeGVkIHkpIDsKIyAy
NDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpeE1hdGguaCIgMwpleHRlcm4g
RnJhY3QKRnJhY0RpdigKICBGcmFjdCB4LAogIEZyYWN0IHkpIDsKIyAyNjAgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpeE1hdGguaCIgMwpleHRlcm4gRnJhY3QKRnJhY1NxcnQo
RnJhY3QgeCkgOwojIDI3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRml4TWF0
aC5oIiAzCmV4dGVybiBGcmFjdApGcmFjU2luKEZpeGVkIHgpIDsKIyAyODQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpeE1hdGguaCIgMwpleHRlcm4gRnJhY3QKRnJhY0NvcyhG
aXhlZCB4KSA7CiMgMjk2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaXhNYXRo
LmgiIDMKZXh0ZXJuIEZpeGVkCkZpeEFUYW4yKAogIFNJbnQzMiB4LAogIFNJbnQzMiB5KSA7CiMg
MzE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaXhNYXRoLmgiIDMKZXh0ZXJu
IGRvdWJsZQpGcmFjMlgoRnJhY3QgeCkgOwojIDMzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvRml4TWF0aC5oIiAzCmV4dGVybiBkb3VibGUKRml4MlgoRml4ZWQgeCkgOwojIDM0
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRml4TWF0aC5oIiAzCmV4dGVybiBG
aXhlZApYMkZpeChkb3VibGUgeCkgOwojIDM1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvRml4TWF0aC5oIiAzCmV4dGVybiBGcmFjdApYMkZyYWMoZG91YmxlIHgpIDsKIyAzNzkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpeE1hdGguaCIgMwpleHRlcm4gc2hv
cnQKV2lkZUNvbXBhcmUoCiAgY29uc3Qgd2lkZSAqIHRhcmdldCwKICBjb25zdCB3aWRlICogc291
cmNlKSA7CiMgNDA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaXhNYXRoLmgi
IDMKZXh0ZXJuIHdpZGUgKgpXaWRlQWRkKAogIHdpZGUgKiB0YXJnZXQsCiAgY29uc3Qgd2lkZSAq
IHNvdXJjZSkgOwojIDQzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRml4TWF0
aC5oIiAzCmV4dGVybiB3aWRlICoKV2lkZVN1YnRyYWN0KAogIHdpZGUgKiB0YXJnZXQsCiAgY29u
c3Qgd2lkZSAqIHNvdXJjZSkgOwojIDQ2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvRml4TWF0aC5oIiAzCmV4dGVybiB3aWRlICoKV2lkZU5lZ2F0ZSh3aWRlICogdGFyZ2V0KSA7
CiMgNDg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaXhNYXRoLmgiIDMKZXh0
ZXJuIHdpZGUgKgpXaWRlU2hpZnQoCiAgd2lkZSAqIHRhcmdldCwKICBTSW50MzIgc2hpZnQpIDsK
IyA1MTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpeE1hdGguaCIgMwpleHRl
cm4gVUludDMyCldpZGVTcXVhcmVSb290KGNvbnN0IHdpZGUgKiBzb3VyY2UpIDsKIyA1NDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpeE1hdGguaCIgMwpleHRlcm4gd2lkZSAq
CldpZGVNdWx0aXBseSgKICBTSW50MzIgbXVsdGlwbGljYW5kLAogIFNJbnQzMiBtdWx0aXBsaWVy
LAogIHdpZGUgKiB0YXJnZXQpIDsKIyA1ODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0ZpeE1hdGguaCIgMwpleHRlcm4gU0ludDMyCldpZGVEaXZpZGUoCiAgY29uc3Qgd2lkZSAq
IGRpdmlkZW5kLAogIFNJbnQzMiBkaXZpc29yLAogIFNJbnQzMiAqIHJlbWFpbmRlcikgOwojIDYx
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRml4TWF0aC5oIiAzCmV4dGVybiB3
aWRlICoKV2lkZVdpZGVEaXZpZGUoCiAgd2lkZSAqIGRpdmlkZW5kLAogIFNJbnQzMiBkaXZpc29y
LAogIFNJbnQzMiAqIHJlbWFpbmRlcikgOwojIDY0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvRml4TWF0aC5oIiAzCmV4dGVybiB3aWRlICoKV2lkZUJpdFNoaWZ0KAogIHdpZGUg
KiB0YXJnZXQsCiAgU0ludDMyIHNoaWZ0KSA7CiMgNjYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9GaXhNYXRoLmgiIDMKZXh0ZXJuIFVuc2lnbmVkRml4ZWQKVW5zaWduZWRGaXhl
ZE11bERpdigKICBVbnNpZ25lZEZpeGVkIHZhbHVlLAogIFVuc2lnbmVkRml4ZWQgbXVsdGlwbGll
ciwKICBVbnNpZ25lZEZpeGVkIGRpdmlzb3IpIDsKCgoKCgp9CiMgMzggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkNvcmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvU2NyaXB0LmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9TY3JpcHQuaCIgMwojZGVmaW5lIF9fU0NSSVBUX18gCgoKCgoKCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvSW50bFJlc291cmNlcy5oIiAxIDMK
IyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvSW50bFJlc291cmNlcy5oIiAz
CiNkZWZpbmUgX19JTlRMUkVTT1VSQ0VTX18gCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0ludGxSZXNvdXJjZXMuaCIgMwojcHJhZ21hIHBhY2socHVzaCwgMikKCmVudW0g
ewoKICBpdGxjU2hvd0ljb24gPSA3LAogIGl0bGNEdWFsQ2FyZXQgPSA2LAoKICBpdGxjU3lzRGly
ZWN0aW9uID0gMTUKfTsKCmVudW0gewoKICBpdGxjRGlzYWJsZUtleVNjcmlwdFN5bmMgPSAzCn07
CgplbnVtIHsKCiAgaXRsY0Rpc2FibGVLZXlTY3JpcHRTeW5jTWFzayA9IDEgPDwgaXRsY0Rpc2Fi
bGVLZXlTY3JpcHRTeW5jCn07CgoKZW51bSB7CiAgdG9rTGVmdFF1b3RlID0gMSwKICB0b2tSaWdo
dFF1b3RlID0gMiwKICB0b2tMZWFkUGxhY2VyID0gMywKICB0b2tMZWFkZXIgPSA0LAogIHRva05v
bkxlYWRlciA9IDUsCiAgdG9rWmVyb0xlYWQgPSA2LAogIHRva1BlcmNlbnQgPSA3LAogIHRva1Bs
dXNTaWduID0gOCwKICB0b2tNaW51c1NpZ24gPSA5LAogIHRva1Rob3VzYW5kcyA9IDEwLAogIHRv
a1Jlc2VydmVkID0gMTEsCiAgdG9rU2VwYXJhdG9yID0gMTIsCiAgdG9rRXNjYXBlID0gMTMsCiAg
dG9rRGVjUG9pbnQgPSAxNCwKICB0b2tFUGx1cyA9IDE1LAogIHRva0VNaW51cyA9IDE2LAogIHRv
a01heFN5bWJvbHMgPSAzMSwKICBjdXJOdW1iZXJQYXJ0c1ZlcnNpb24gPSAxCn07CgplbnVtIHsK
ICBjdXJyU3ltTGVhZCA9IDE2LAogIGN1cnJOZWdTeW0gPSAzMiwKICBjdXJyVHJhaWxpbmdaID0g
NjQsCiAgY3VyckxlYWRpbmdaID0gMTI4Cn07CgplbnVtIHsKICBtZHkgPSAwLAogIGRteSA9IDEs
CiAgeW1kID0gMiwKICBteWQgPSAzLAogIGR5bSA9IDQsCiAgeWRtID0gNQp9OwoKdHlwZWRlZiBT
SW50OCBEYXRlT3JkZXJzOwplbnVtIHsKICB0aW1lQ3ljbGUyNCA9IDAsCiAgdGltZUN5Y2xlWmVy
byA9IDEsCiAgdGltZUN5Y2xlMTIgPSAyNTUsCiAgemVyb0N5Y2xlID0gMSwKICBsb25nRGF5ID0g
MCwKICBsb25nV2VlayA9IDEsCiAgbG9uZ01vbnRoID0gMiwKICBsb25nWWVhciA9IDMsCiAgc3Vw
RGF5ID0gMSwKICBzdXBXZWVrID0gMiwKICBzdXBNb250aCA9IDQsCiAgc3VwWWVhciA9IDgsCiAg
ZGF5TGRpbmdaID0gMzIsCiAgbW50TGRpbmdaID0gNjQsCiAgY2VudHVyeSA9IDEyOCwKICBzZWNM
ZWFkaW5nWiA9IDMyLAogIG1pbkxlYWRpbmdaID0gNjQsCiAgaHJMZWFkaW5nWiA9IDEyOAp9OwoK
CnN0cnVjdCBPZmZQYWlyIHsKICBzaG9ydCBvZmZGaXJzdDsKICBzaG9ydCBvZmZTZWNvbmQ7Cn07
CnR5cGVkZWYgc3RydWN0IE9mZlBhaXIgT2ZmUGFpcjsKdHlwZWRlZiBPZmZQYWlyIE9mZnNldFRh
YmxlWzNdOwpzdHJ1Y3QgSW50bDBSZWMgewogIGNoYXIgZGVjaW1hbFB0OwogIGNoYXIgdGhvdXNT
ZXA7CiAgY2hhciBsaXN0U2VwOwogIGNoYXIgY3VyclN5bTE7CiAgY2hhciBjdXJyU3ltMjsKICBj
aGFyIGN1cnJTeW0zOwogIFVJbnQ4IGN1cnJGbXQ7CiAgVUludDggZGF0ZU9yZGVyOwogIFVJbnQ4
IHNocnREYXRlRm10OwogIGNoYXIgZGF0ZVNlcDsKICBVSW50OCB0aW1lQ3ljbGU7CiAgVUludDgg
dGltZUZtdDsKICBjaGFyIG1vcm5TdHJbNF07CiAgY2hhciBldmVTdHJbNF07CiAgY2hhciB0aW1l
U2VwOwogIGNoYXIgdGltZTFTdWZmOwogIGNoYXIgdGltZTJTdWZmOwogIGNoYXIgdGltZTNTdWZm
OwogIGNoYXIgdGltZTRTdWZmOwogIGNoYXIgdGltZTVTdWZmOwogIGNoYXIgdGltZTZTdWZmOwog
IGNoYXIgdGltZTdTdWZmOwogIGNoYXIgdGltZThTdWZmOwogIFVJbnQ4IG1ldHJpY1N5czsKICBz
aG9ydCBpbnRsMFZlcnM7Cn07CnR5cGVkZWYgc3RydWN0IEludGwwUmVjIEludGwwUmVjOwp0eXBl
ZGVmIEludGwwUmVjICogSW50bDBQdHI7CnR5cGVkZWYgSW50bDBQdHIgKiBJbnRsMEhuZGw7CnN0
cnVjdCBJbnRsMVJlYyB7CiAgU3RyMTUgZGF5c1s3XTsKICBTdHIxNSBtb250aHNbMTJdOwogIFVJ
bnQ4IHN1cHByZXNzRGF5OwogIFVJbnQ4IGxuZ0RhdGVGbXQ7CiAgVUludDggZGF5TGVhZGluZzA7
CiAgVUludDggYWJickxlbjsKICBjaGFyIHN0MFs0XTsKICBjaGFyIHN0MVs0XTsKICBjaGFyIHN0
Mls0XTsKICBjaGFyIHN0M1s0XTsKICBjaGFyIHN0NFs0XTsKICBzaG9ydCBpbnRsMVZlcnM7CiAg
c2hvcnQgbG9jYWxSdG5bMV07Cn07CnR5cGVkZWYgc3RydWN0IEludGwxUmVjIEludGwxUmVjOwp0
eXBlZGVmIEludGwxUmVjICogSW50bDFQdHI7CnR5cGVkZWYgSW50bDFQdHIgKiBJbnRsMUhuZGw7
CgpzdHJ1Y3QgSXRsMUV4dFJlYyB7CiAgSW50bDFSZWMgYmFzZTsKICBzaG9ydCB2ZXJzaW9uOwog
IHNob3J0IGZvcm1hdDsKICBzaG9ydCBjYWxlbmRhckNvZGU7CiAgU0ludDMyIGV4dHJhRGF5c1Rh
YmxlT2Zmc2V0OwogIFNJbnQzMiBleHRyYURheXNUYWJsZUxlbmd0aDsKICBTSW50MzIgZXh0cmFN
b250aHNUYWJsZU9mZnNldDsKICBTSW50MzIgZXh0cmFNb250aHNUYWJsZUxlbmd0aDsKICBTSW50
MzIgYWJicmV2RGF5c1RhYmxlT2Zmc2V0OwogIFNJbnQzMiBhYmJyZXZEYXlzVGFibGVMZW5ndGg7
CiAgU0ludDMyIGFiYnJldk1vbnRoc1RhYmxlT2Zmc2V0OwogIFNJbnQzMiBhYmJyZXZNb250aHNU
YWJsZUxlbmd0aDsKICBTSW50MzIgZXh0cmFTZXBzVGFibGVPZmZzZXQ7CiAgU0ludDMyIGV4dHJh
U2Vwc1RhYmxlTGVuZ3RoOwogIHNob3J0IHRhYmxlc1sxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSXRs
MUV4dFJlYyBJdGwxRXh0UmVjOwpzdHJ1Y3QgVW50b2tlblRhYmxlIHsKICBzaG9ydCBsZW47CiAg
c2hvcnQgbGFzdFRva2VuOwogIHNob3J0IGluZGV4WzI1Nl07Cn07CnR5cGVkZWYgc3RydWN0IFVu
dG9rZW5UYWJsZSBVbnRva2VuVGFibGU7CnR5cGVkZWYgVW50b2tlblRhYmxlICogVW50b2tlblRh
YmxlUHRyOwp0eXBlZGVmIFVudG9rZW5UYWJsZVB0ciAqIFVudG9rZW5UYWJsZUhhbmRsZTsKCiNk
ZWZpbmUgX19XSURFX0NIQVJfVVNFX1NUUlVDVF9fIDEKIyAyMDkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0ludGxSZXNvdXJjZXMuaCIgMwp1bmlvbiBXaWRlQ2hhciB7CiAgc3Ry
dWN0IHsKICAgIGNoYXIgbG87CiAgICBjaGFyIGhpOwogIH0gYTsKICBzaG9ydCBiOwp9Owp0eXBl
ZGVmIHVuaW9uIFdpZGVDaGFyIFdpZGVDaGFyOwojIDIyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvSW50bFJlc291cmNlcy5oIiAzCnN0cnVjdCBXaWRlQ2hhckFyciB7CiAgc2hv
cnQgc2l6ZTsKICBXaWRlQ2hhciBkYXRhWzEwXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgV2lkZUNoYXJB
cnIgV2lkZUNoYXJBcnI7CnN0cnVjdCBOdW1iZXJQYXJ0cyB7CiAgc2hvcnQgdmVyc2lvbjsKICBX
aWRlQ2hhciBkYXRhWzMxXTsKICBXaWRlQ2hhckFyciBwZVBsdXM7CiAgV2lkZUNoYXJBcnIgcGVN
aW51czsKICBXaWRlQ2hhckFyciBwZU1pbnVzUGx1czsKICBXaWRlQ2hhckFyciBhbHROdW1UYWJs
ZTsKICBjaGFyIHJlc2VydmVkWzIwXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgTnVtYmVyUGFydHMgTnVt
YmVyUGFydHM7CnR5cGVkZWYgTnVtYmVyUGFydHMgKiBOdW1iZXJQYXJ0c1B0cjsKCnN0cnVjdCBJ
dGw0UmVjIHsKICBzaG9ydCBmbGFnczsKICBTSW50MzIgcmVzb3VyY2VUeXBlOwogIHNob3J0IHJl
c291cmNlTnVtOwogIHNob3J0IHZlcnNpb247CiAgU0ludDMyIHJlc0hlYWRlcjE7CiAgU0ludDMy
IHJlc0hlYWRlcjI7CiAgc2hvcnQgbnVtVGFibGVzOwogIFNJbnQzMiBtYXBPZmZzZXQ7CiAgU0lu
dDMyIHN0ck9mZnNldDsKICBTSW50MzIgZmV0Y2hPZmZzZXQ7CiAgU0ludDMyIHVuVG9rZW5PZmZz
ZXQ7CiAgU0ludDMyIGRlZlBhcnRzT2Zmc2V0OwogIFNJbnQzMiByZXNPZmZzZXQ2OwogIFNJbnQz
MiByZXNPZmZzZXQ3OwogIFNJbnQzMiByZXNPZmZzZXQ4Owp9Owp0eXBlZGVmIHN0cnVjdCBJdGw0
UmVjIEl0bDRSZWM7CnR5cGVkZWYgSXRsNFJlYyAqIEl0bDRQdHI7CnR5cGVkZWYgSXRsNFB0ciAq
IEl0bDRIYW5kbGU7CgpzdHJ1Y3QgTkl0bDRSZWMgewogIHNob3J0IGZsYWdzOwogIFNJbnQzMiBy
ZXNvdXJjZVR5cGU7CiAgc2hvcnQgcmVzb3VyY2VOdW07CiAgc2hvcnQgdmVyc2lvbjsKICBzaG9y
dCBmb3JtYXQ7CiAgc2hvcnQgcmVzSGVhZGVyOwogIFNJbnQzMiByZXNIZWFkZXIyOwogIHNob3J0
IG51bVRhYmxlczsKICBTSW50MzIgbWFwT2Zmc2V0OwogIFNJbnQzMiBzdHJPZmZzZXQ7CiAgU0lu
dDMyIGZldGNoT2Zmc2V0OwogIFNJbnQzMiB1blRva2VuT2Zmc2V0OwogIFNJbnQzMiBkZWZQYXJ0
c09mZnNldDsKICBTSW50MzIgd2h0U3BMaXN0T2Zmc2V0OwogIFNJbnQzMiByZXNPZmZzZXQ3Owog
IFNJbnQzMiByZXNPZmZzZXQ4OwogIHNob3J0IHJlc0xlbmd0aDE7CiAgc2hvcnQgcmVzTGVuZ3Ro
MjsKICBzaG9ydCByZXNMZW5ndGgzOwogIHNob3J0IHVuVG9rZW5MZW5ndGg7CiAgc2hvcnQgZGVm
UGFydHNMZW5ndGg7CiAgc2hvcnQgd2h0U3BMaXN0TGVuZ3RoOwogIHNob3J0IHJlc0xlbmd0aDc7
CiAgc2hvcnQgcmVzTGVuZ3RoODsKfTsKdHlwZWRlZiBzdHJ1Y3QgTkl0bDRSZWMgTkl0bDRSZWM7
CnR5cGVkZWYgTkl0bDRSZWMgKiBOSXRsNFB0cjsKdHlwZWRlZiBOSXRsNFB0ciAqIE5JdGw0SGFu
ZGxlOwoKc3RydWN0IFRhYmxlRGlyZWN0b3J5UmVjb3JkIHsKICBPU1R5cGUgdGFibGVTaWduYXR1
cmU7CiAgVUludDMyIHJlc2VydmVkOwogIFVJbnQzMiB0YWJsZVN0YXJ0T2Zmc2V0OwogIFVJbnQz
MiB0YWJsZVNpemU7Cn07CnR5cGVkZWYgc3RydWN0IFRhYmxlRGlyZWN0b3J5UmVjb3JkIFRhYmxl
RGlyZWN0b3J5UmVjb3JkOwpzdHJ1Y3QgSXRsNVJlY29yZCB7CiAgRml4ZWQgdmVyc2lvbk51bWJl
cjsKICB1bnNpZ25lZCBzaG9ydCBudW1iZXJPZlRhYmxlczsKICB1bnNpZ25lZCBzaG9ydCByZXNl
cnZlZFszXTsKICBUYWJsZURpcmVjdG9yeVJlY29yZCB0YWJsZURpcmVjdG9yeVsxXTsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgSXRsNVJlY29yZCBJdGw1UmVjb3JkOwpzdHJ1Y3QgUnVsZUJhc2VkVHJzbFJl
Y29yZCB7CiAgc2hvcnQgc291cmNlVHlwZTsKICBzaG9ydCB0YXJnZXRUeXBlOwogIHNob3J0IGZv
cm1hdE51bWJlcjsKICBzaG9ydCBwcm9wZXJ0eUZsYWc7CiAgc2hvcnQgbnVtYmVyT2ZSdWxlczsK
fTsKdHlwZWRlZiBzdHJ1Y3QgUnVsZUJhc2VkVHJzbFJlY29yZCBSdWxlQmFzZWRUcnNsUmVjb3Jk
OwoKc3RydWN0IEl0bGNSZWNvcmQgewogIHNob3J0IGl0bGNTeXN0ZW07CiAgc2hvcnQgaXRsY1Jl
c2VydmVkOwogIFNJbnQ4IGl0bGNGb250Rm9yY2U7CiAgU0ludDggaXRsY0ludGxGb3JjZTsKICBT
SW50OCBpdGxjT2xkS3liZDsKICBTSW50OCBpdGxjRmxhZ3M7CiAgc2hvcnQgaXRsY0ljb25PZmZz
ZXQ7CiAgU0ludDggaXRsY0ljb25TaWRlOwogIFNJbnQ4IGl0bGNJY29uUnN2ZDsKICBzaG9ydCBp
dGxjUmVnaW9uQ29kZTsKICBzaG9ydCBpdGxjU3lzRmxhZ3M7CiAgU0ludDggaXRsY1Jlc2VydmVk
NFszMl07Cn07CnR5cGVkZWYgc3RydWN0IEl0bGNSZWNvcmQgSXRsY1JlY29yZDsKc3RydWN0IEl0
bGJSZWNvcmQgewogIHNob3J0IGl0bGJOdW1iZXI7CiAgc2hvcnQgaXRsYkRhdGU7CiAgc2hvcnQg
aXRsYlNvcnQ7CiAgc2hvcnQgaXRsYkZsYWdzOwogIHNob3J0IGl0bGJUb2tlbjsKICBzaG9ydCBp
dGxiRW5jb2Rpbmc7CiAgc2hvcnQgaXRsYkxhbmc7CiAgU0ludDggaXRsYk51bVJlcDsKICBTSW50
OCBpdGxiRGF0ZVJlcDsKICBzaG9ydCBpdGxiS2V5czsKICBzaG9ydCBpdGxiSWNvbjsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgSXRsYlJlY29yZCBJdGxiUmVjb3JkOwoKc3RydWN0IEl0bGJFeHRSZWNvcmQg
ewogIEl0bGJSZWNvcmQgYmFzZTsKICBTSW50MzIgaXRsYkxvY2FsU2l6ZTsKICBzaG9ydCBpdGxi
TW9ub0ZvbmQ7CiAgc2hvcnQgaXRsYk1vbm9TaXplOwogIHNob3J0IGl0bGJQcmVmRm9uZDsKICBz
aG9ydCBpdGxiUHJlZlNpemU7CiAgc2hvcnQgaXRsYlNtYWxsRm9uZDsKICBzaG9ydCBpdGxiU21h
bGxTaXplOwogIHNob3J0IGl0bGJTeXNGb25kOwogIHNob3J0IGl0bGJTeXNTaXplOwogIHNob3J0
IGl0bGJBcHBGb25kOwogIHNob3J0IGl0bGJBcHBTaXplOwogIHNob3J0IGl0bGJIZWxwRm9uZDsK
ICBzaG9ydCBpdGxiSGVscFNpemU7CiAgU3R5bGUgaXRsYlZhbGlkU3R5bGVzOwogIFN0eWxlIGl0
bGJBbGlhc1N0eWxlOwp9Owp0eXBlZGVmIHN0cnVjdCBJdGxiRXh0UmVjb3JkIEl0bGJFeHRSZWNv
cmQ7CgoKCiNwcmFnbWEgcGFjayhwb3ApCiMgMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1NjcmlwdC5oIiAyIDMKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvU2NyaXB0LmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgoKZW51
bSB7CiAgc21TeXN0ZW1TY3JpcHQgPSAtMSwKICBzbUN1cnJlbnRTY3JpcHQgPSAtMiwKICBzbUFs
bFNjcmlwdHMgPSAtMwp9OwojIDYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9T
Y3JpcHQuaCIgMwplbnVtIHsKICBzbVJvbWFuID0gMCwKICBzbUphcGFuZXNlID0gMSwKICBzbVRy
YWRDaGluZXNlID0gMiwKICBzbUtvcmVhbiA9IDMsCiAgc21BcmFiaWMgPSA0LAogIHNtSGVicmV3
ID0gNSwKICBzbUdyZWVrID0gNiwKICBzbUN5cmlsbGljID0gNywKICBzbVJTeW1ib2wgPSA4LAog
IHNtRGV2YW5hZ2FyaSA9IDksCiAgc21HdXJtdWtoaSA9IDEwLAogIHNtR3VqYXJhdGkgPSAxMSwK
ICBzbU9yaXlhID0gMTIsCiAgc21CZW5nYWxpID0gMTMsCiAgc21UYW1pbCA9IDE0LAogIHNtVGVs
dWd1ID0gMTUsCiAgc21LYW5uYWRhID0gMTYsCiAgc21NYWxheWFsYW0gPSAxNywKICBzbVNpbmhh
bGVzZSA9IDE4LAogIHNtQnVybWVzZSA9IDE5LAogIHNtS2htZXIgPSAyMCwKICBzbVRoYWkgPSAy
MSwKICBzbUxhbyA9IDIyLAogIHNtR2VvcmdpYW4gPSAyMywKICBzbUFybWVuaWFuID0gMjQsCiAg
c21TaW1wQ2hpbmVzZSA9IDI1LAogIHNtVGliZXRhbiA9IDI2LAogIHNtTW9uZ29saWFuID0gMjcs
CiAgc21FdGhpb3BpYyA9IDI4LAogIHNtR2VleiA9IDI4LAogIHNtQ2VudHJhbEV1cm9Sb21hbiA9
IDI5LAogIHNtVmlldG5hbWVzZSA9IDMwLAogIHNtRXh0QXJhYmljID0gMzEsCiAgc21VbmludGVy
cCA9IDMyCn07CgoKZW51bSB7CiAgc21Vbmljb2RlU2NyaXB0ID0gMHg3RQp9OwoKCmVudW0gewog
IHNtQ2hpbmVzZSA9IDIsCiAgc21SdXNzaWFuID0gNywKCiAgc21MYW90aWFuID0gMjIsCiAgc21B
bWhhcmljID0gMjgsCiAgc21TbGF2aWMgPSAyOSwKICBzbUVhc3RFdXJSb21hbiA9IDI5LAogIHNt
U2luZGhpID0gMzEsCiAgc21LbGluZ29uID0gMzIKfTsKCgoKCgoKZW51bSB7CiAgbGFuZ0VuZ2xp
c2ggPSAwLAogIGxhbmdGcmVuY2ggPSAxLAogIGxhbmdHZXJtYW4gPSAyLAogIGxhbmdJdGFsaWFu
ID0gMywKICBsYW5nRHV0Y2ggPSA0LAogIGxhbmdTd2VkaXNoID0gNSwKICBsYW5nU3BhbmlzaCA9
IDYsCiAgbGFuZ0RhbmlzaCA9IDcsCiAgbGFuZ1BvcnR1Z3Vlc2UgPSA4LAogIGxhbmdOb3J3ZWdp
YW4gPSA5LAogIGxhbmdIZWJyZXcgPSAxMCwKICBsYW5nSmFwYW5lc2UgPSAxMSwKICBsYW5nQXJh
YmljID0gMTIsCiAgbGFuZ0Zpbm5pc2ggPSAxMywKICBsYW5nR3JlZWsgPSAxNCwKICBsYW5nSWNl
bGFuZGljID0gMTUsCiAgbGFuZ01hbHRlc2UgPSAxNiwKICBsYW5nVHVya2lzaCA9IDE3LAogIGxh
bmdDcm9hdGlhbiA9IDE4LAogIGxhbmdUcmFkQ2hpbmVzZSA9IDE5LAogIGxhbmdVcmR1ID0gMjAs
CiAgbGFuZ0hpbmRpID0gMjEsCiAgbGFuZ1RoYWkgPSAyMiwKICBsYW5nS29yZWFuID0gMjMKfTsK
CmVudW0gewogIGxhbmdMaXRodWFuaWFuID0gMjQsCiAgbGFuZ1BvbGlzaCA9IDI1LAogIGxhbmdI
dW5nYXJpYW4gPSAyNiwKICBsYW5nRXN0b25pYW4gPSAyNywKICBsYW5nTGF0dmlhbiA9IDI4LAog
IGxhbmdTYW1pID0gMjksCiAgbGFuZ0Zhcm9lc2UgPSAzMCwKICBsYW5nRmFyc2kgPSAzMSwKICBs
YW5nUGVyc2lhbiA9IDMxLAogIGxhbmdSdXNzaWFuID0gMzIsCiAgbGFuZ1NpbXBDaGluZXNlID0g
MzMsCiAgbGFuZ0ZsZW1pc2ggPSAzNCwKICBsYW5nSXJpc2hHYWVsaWMgPSAzNSwKICBsYW5nQWxi
YW5pYW4gPSAzNiwKICBsYW5nUm9tYW5pYW4gPSAzNywKICBsYW5nQ3plY2ggPSAzOCwKICBsYW5n
U2xvdmFrID0gMzksCiAgbGFuZ1Nsb3ZlbmlhbiA9IDQwLAogIGxhbmdZaWRkaXNoID0gNDEsCiAg
bGFuZ1NlcmJpYW4gPSA0MiwKICBsYW5nTWFjZWRvbmlhbiA9IDQzLAogIGxhbmdCdWxnYXJpYW4g
PSA0NCwKICBsYW5nVWtyYWluaWFuID0gNDUsCiAgbGFuZ0J5ZWxvcnVzc2lhbiA9IDQ2LAogIGxh
bmdCZWxvcnVzc2lhbiA9IDQ2Cn07CgplbnVtIHsKICBsYW5nVXpiZWsgPSA0NywKICBsYW5nS2F6
YWtoID0gNDgsCiAgbGFuZ0F6ZXJiYWlqYW5pID0gNDksCiAgbGFuZ0F6ZXJiYWlqYW5BciA9IDUw
LAogIGxhbmdBcm1lbmlhbiA9IDUxLAogIGxhbmdHZW9yZ2lhbiA9IDUyLAogIGxhbmdNb2xkYXZp
YW4gPSA1MywKICBsYW5nS2lyZ2hpeiA9IDU0LAogIGxhbmdUYWppa2kgPSA1NSwKICBsYW5nVHVy
a21lbiA9IDU2LAogIGxhbmdNb25nb2xpYW4gPSA1NywKICBsYW5nTW9uZ29saWFuQ3lyID0gNTgs
CiAgbGFuZ1Bhc2h0byA9IDU5LAogIGxhbmdLdXJkaXNoID0gNjAsCiAgbGFuZ0thc2htaXJpID0g
NjEsCiAgbGFuZ1NpbmRoaSA9IDYyLAogIGxhbmdUaWJldGFuID0gNjMsCiAgbGFuZ05lcGFsaSA9
IDY0LAogIGxhbmdTYW5za3JpdCA9IDY1LAogIGxhbmdNYXJhdGhpID0gNjYsCiAgbGFuZ0Jlbmdh
bGkgPSA2NywKICBsYW5nQXNzYW1lc2UgPSA2OCwKICBsYW5nR3VqYXJhdGkgPSA2OSwKICBsYW5n
UHVuamFiaSA9IDcwCn07CgplbnVtIHsKICBsYW5nT3JpeWEgPSA3MSwKICBsYW5nTWFsYXlhbGFt
ID0gNzIsCiAgbGFuZ0thbm5hZGEgPSA3MywKICBsYW5nVGFtaWwgPSA3NCwKICBsYW5nVGVsdWd1
ID0gNzUsCiAgbGFuZ1NpbmhhbGVzZSA9IDc2LAogIGxhbmdCdXJtZXNlID0gNzcsCiAgbGFuZ0to
bWVyID0gNzgsCiAgbGFuZ0xhbyA9IDc5LAogIGxhbmdWaWV0bmFtZXNlID0gODAsCiAgbGFuZ0lu
ZG9uZXNpYW4gPSA4MSwKICBsYW5nVGFnYWxvZyA9IDgyLAogIGxhbmdNYWxheVJvbWFuID0gODMs
CiAgbGFuZ01hbGF5QXJhYmljID0gODQsCiAgbGFuZ0FtaGFyaWMgPSA4NSwKICBsYW5nVGlncmlu
eWEgPSA4NiwKICBsYW5nT3JvbW8gPSA4NywKICBsYW5nU29tYWxpID0gODgsCiAgbGFuZ1N3YWhp
bGkgPSA4OSwKICBsYW5nS2lueWFyd2FuZGEgPSA5MCwKICBsYW5nUnVhbmRhID0gOTAsCiAgbGFu
Z1J1bmRpID0gOTEsCiAgbGFuZ055YW5qYSA9IDkyLAogIGxhbmdDaGV3YSA9IDkyLAogIGxhbmdN
YWxhZ2FzeSA9IDkzLAogIGxhbmdFc3BlcmFudG8gPSA5NAp9OwoKZW51bSB7CiAgbGFuZ1dlbHNo
ID0gMTI4LAogIGxhbmdCYXNxdWUgPSAxMjksCiAgbGFuZ0NhdGFsYW4gPSAxMzAsCiAgbGFuZ0xh
dGluID0gMTMxLAogIGxhbmdRdWVjaHVhID0gMTMyLAogIGxhbmdHdWFyYW5pID0gMTMzLAogIGxh
bmdBeW1hcmEgPSAxMzQsCiAgbGFuZ1RhdGFyID0gMTM1LAogIGxhbmdVaWdodXIgPSAxMzYsCiAg
bGFuZ0R6b25na2hhID0gMTM3LAogIGxhbmdKYXZhbmVzZVJvbSA9IDEzOCwKICBsYW5nU3VuZGFu
ZXNlUm9tID0gMTM5LAogIGxhbmdHYWxpY2lhbiA9IDE0MCwKICBsYW5nQWZyaWthYW5zID0gMTQx
Cn07CgplbnVtIHsKICBsYW5nQnJldG9uID0gMTQyLAogIGxhbmdJbnVrdGl0dXQgPSAxNDMsCiAg
bGFuZ1Njb3R0aXNoR2FlbGljID0gMTQ0LAogIGxhbmdNYW54R2FlbGljID0gMTQ1LAogIGxhbmdJ
cmlzaEdhZWxpY1NjcmlwdCA9IDE0NiwKICBsYW5nVG9uZ2FuID0gMTQ3LAogIGxhbmdHcmVla0Fu
Y2llbnQgPSAxNDgsCiAgbGFuZ0dyZWVubGFuZGljID0gMTQ5LAogIGxhbmdBemVyYmFpamFuUm9t
YW4gPSAxNTAsCiAgbGFuZ055bm9yc2sgPSAxNTEKfTsKCmVudW0gewogIGxhbmdVbnNwZWNpZmll
ZCA9IDMyNzY3Cn07CgoKCgoKZW51bSB7CiAgbGFuZ1BvcnR1Z2VzZSA9IDgsCiAgbGFuZ01hbHRh
ID0gMTYsCiAgbGFuZ1l1Z29zbGF2aWFuID0gMTgsCiAgbGFuZ0NoaW5lc2UgPSAxOSwKICBsYW5n
TGV0dGlzaCA9IDI4LAogIGxhbmdMYXBwb25pYW4gPSAyOSwKICBsYW5nTGFwcGlzaCA9IDI5LAog
IGxhbmdTYWFtaXNrID0gMjksCiAgbGFuZ0ZhZXJvZXNlID0gMzAsCiAgbGFuZ0lyaXNoID0gMzUs
CiAgbGFuZ0dhbGxhID0gODcsCiAgbGFuZ0FmcmljYWFucyA9IDE0MSwKICBsYW5nR3JlZWtQb2x5
ID0gMTQ4Cn07CiMgMjk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9TY3JpcHQu
aCIgMwplbnVtIHsKCiAgdmVyVVMgPSAwLAogIHZlckZyYW5jZSA9IDEsCiAgdmVyQnJpdGFpbiA9
IDIsCiAgdmVyR2VybWFueSA9IDMsCiAgdmVySXRhbHkgPSA0LAogIHZlck5ldGhlcmxhbmRzID0g
NSwKICB2ZXJGbGVtaXNoID0gNiwKICB2ZXJTd2VkZW4gPSA3LAogIHZlclNwYWluID0gOCwKICB2
ZXJEZW5tYXJrID0gOSwKICB2ZXJQb3J0dWdhbCA9IDEwLAogIHZlckZyQ2FuYWRhID0gMTEsCiAg
dmVyTm9yd2F5ID0gMTIsCiAgdmVySXNyYWVsID0gMTMsCiAgdmVySmFwYW4gPSAxNCwKICB2ZXJB
dXN0cmFsaWEgPSAxNSwKICB2ZXJBcmFiaWMgPSAxNiwKICB2ZXJGaW5sYW5kID0gMTcsCiAgdmVy
RnJTd2lzcyA9IDE4LAogIHZlckdyU3dpc3MgPSAxOSwKICB2ZXJHcmVlY2UgPSAyMCwKICB2ZXJJ
Y2VsYW5kID0gMjEsCiAgdmVyTWFsdGEgPSAyMiwKICB2ZXJDeXBydXMgPSAyMywKICB2ZXJUdXJr
ZXkgPSAyNCwKICB2ZXJZdWdvQ3JvYXRpYW4gPSAyNQp9OwoKZW51bSB7CiAgdmVyTmV0aGVybGFu
ZHNDb21tYSA9IDI2LAogIHZlckZsZW1pc2hQb2ludCA9IDI3LAogIHZlckNhbmFkYUNvbW1hID0g
MjgsCiAgdmVyQ2FuYWRhUG9pbnQgPSAyOSwKICB2ZXJ2YXJpYW50UG9ydHVnYWwgPSAzMCwKICB2
ZXJ2YXJpYW50Tm9yd2F5ID0gMzEsCiAgdmVydmFyaWFudERlbm1hcmsgPSAzMgp9OwoKZW51bSB7
CiAgdmVySW5kaWFIaW5kaSA9IDMzLAogIHZlclBha2lzdGFuVXJkdSA9IDM0LAogIHZlclR1cmtp
c2hNb2RpZmllZCA9IDM1LAogIHZlckl0YWxpYW5Td2lzcyA9IDM2LAogIHZlckludGVybmF0aW9u
YWwgPSAzNywKCiAgdmVyUm9tYW5pYSA9IDM5LAogIHZlckdyZWVrQW5jaWVudCA9IDQwLAogIHZl
ckxpdGh1YW5pYSA9IDQxLAogIHZlclBvbGFuZCA9IDQyLAogIHZlckh1bmdhcnkgPSA0MywKICB2
ZXJFc3RvbmlhID0gNDQsCiAgdmVyTGF0dmlhID0gNDUsCiAgdmVyU2FtaSA9IDQ2LAogIHZlckZh
cm9lSXNsID0gNDcsCiAgdmVySXJhbiA9IDQ4LAogIHZlclJ1c3NpYSA9IDQ5LAogIHZlcklyZWxh
bmQgPSA1MCwKICB2ZXJLb3JlYSA9IDUxLAogIHZlckNoaW5hID0gNTIsCiAgdmVyVGFpd2FuID0g
NTMsCiAgdmVyVGhhaWxhbmQgPSA1NCwKICB2ZXJTY3JpcHRHZW5lcmljID0gNTUsCiAgdmVyQ3pl
Y2ggPSA1NiwKICB2ZXJTbG92YWsgPSA1NywKICB2ZXJFYXN0QXNpYUdlbmVyaWMgPSA1OCwKICB2
ZXJNYWd5YXIgPSA1OSwKICB2ZXJCZW5nYWxpID0gNjAsCiAgdmVyQmVsYXJ1cyA9IDYxCn07Cgpl
bnVtIHsKICB2ZXJVa3JhaW5lID0gNjIsCgogIHZlckdyZWVjZUFsdCA9IDY0LAogIHZlclNlcmJp
YW4gPSA2NSwKICB2ZXJTbG92ZW5pYW4gPSA2NiwKICB2ZXJNYWNlZG9uaWFuID0gNjcsCiAgdmVy
Q3JvYXRpYSA9IDY4LAoKICB2ZXJHZXJtYW5SZWZvcm1lZCA9IDcwLAogIHZlckJyYXppbCA9IDcx
LAogIHZlckJ1bGdhcmlhID0gNzIsCiAgdmVyQ2F0YWxvbmlhID0gNzMsCiAgdmVyTXVsdGlsaW5n
dWFsID0gNzQsCiAgdmVyU2NvdHRpc2hHYWVsaWMgPSA3NSwKICB2ZXJNYW54R2FlbGljID0gNzYs
CiAgdmVyQnJldG9uID0gNzcsCiAgdmVyTnVuYXZ1dCA9IDc4LAogIHZlcldlbHNoID0gNzksCgog
IHZlcklyaXNoR2FlbGljU2NyaXB0ID0gODEsCiAgdmVyRW5nQ2FuYWRhID0gODIsCiAgdmVyQmh1
dGFuID0gODMsCiAgdmVyQXJtZW5pYW4gPSA4NCwKICB2ZXJHZW9yZ2lhbiA9IDg1LAogIHZlclNw
TGF0aW5BbWVyaWNhID0gODYsCgogIHZlclRvbmdhID0gODgsCgoKICB2ZXJGcmVuY2hVbml2ZXJz
YWwgPSA5MSwKICB2ZXJBdXN0cmlhID0gOTIsCgogIHZlckd1amFyYXRpID0gOTQsCiAgdmVyUHVu
amFiaSA9IDk1LAogIHZlckluZGlhVXJkdSA9IDk2LAogIHZlclZpZXRuYW0gPSA5Nwp9OwoKZW51
bSB7CiAgdmVyRnJCZWxnaXVtID0gOTgsCiAgdmVyVXpiZWsgPSA5OSwKICB2ZXJTaW5nYXBvcmUg
PSAxMDAsCiAgdmVyTnlub3JzayA9IDEwMSwKICB2ZXJBZnJpa2FhbnMgPSAxMDIsCiAgdmVyRXNw
ZXJhbnRvID0gMTAzLAogIHZlck1hcmF0aGkgPSAxMDQsCiAgdmVyVGliZXRhbiA9IDEwNSwKICB2
ZXJOZXBhbCA9IDEwNiwKICB2ZXJHcmVlbmxhbmQgPSAxMDcsCiAgdmVySXJlbGFuZEVuZ2xpc2gg
PSAxMDgKfTsKIyA0MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1NjcmlwdC5o
IiAzCmVudW0gewogIHZlckZyQmVsZ2l1bUx1eCA9IDYsCiAgdmVyQmVsZ2l1bUx1eCA9IDYsCiAg
dmVyQXJhYmlhID0gMTYsCiAgdmVyWXVnb3NsYXZpYSA9IDI1LAogIHZlckJlbGdpdW1MdXhQb2lu
dCA9IDI3LAogIHZlckluZGlhID0gMzMsCiAgdmVyUGFraXN0YW4gPSAzNCwKICB2ZXJSdW1hbmlh
ID0gMzksCiAgdmVyR3JlZWNlUG9seSA9IDQwLAogIHZlckxhcGxhbmQgPSA0NiwKICB2ZXJGYWVy
b2VJc2wgPSA0NywKICB2ZXJHZW5lcmljRkUgPSA1OCwKICB2ZXJGYXJFYXN0R2VuZXJpYyA9IDU4
LAogIHZlckJ5ZWxvUnVzc2lhbiA9IDYxLAogIHZlclVrcmFuaWEgPSA2MiwKICB2ZXJBbHRlcm5h
dGVHciA9IDY0LAogIHZlclNlcmJpYSA9IDY1LAogIHZlclNsb3ZlbmlhID0gNjYsCiAgdmVyTWFj
ZWRvbmlhID0gNjcsCiAgdmVyQnJpdHRhbnkgPSA3NywKICB2ZXJXYWxlcyA9IDc5LAogIHZlckFy
bWVuaWEgPSA4NCwKICB2ZXJHZW9yZ2lhID0gODUsCiAgdmVyQXVzdHJpYUdlcm1hbiA9IDkyLAog
IHZlclRpYmV0ID0gMTA1Cn07CgplbnVtIHsKICBtaW5Db3VudHJ5ID0gdmVyVVMsCiAgbWF4Q291
bnRyeSA9IHZlcklyZWxhbmRFbmdsaXNoCn07CgplbnVtIHsKCiAgY2FsR3JlZ29yaWFuID0gMCwK
ICBjYWxBcmFiaWNDaXZpbCA9IDEsCiAgY2FsQXJhYmljTHVuYXIgPSAyLAogIGNhbEphcGFuZXNl
ID0gMywKICBjYWxKZXdpc2ggPSA0LAogIGNhbENvcHRpYyA9IDUsCiAgY2FsUGVyc2lhbiA9IDYK
fTsKCmVudW0gewoKICBpbnRXZXN0ZXJuID0gMCwKICBpbnRBcmFiaWMgPSAxLAogIGludFJvbWFu
ID0gMiwKICBpbnRKYXBhbmVzZSA9IDMsCiAgaW50RXVyb3BlYW4gPSA0LAogIGludE91dHB1dE1h
c2sgPSAweDgwMDAKfTsKCmVudW0gewoKICBzbVNpbmdsZUJ5dGUgPSAwLAogIHNtRmlyc3RCeXRl
ID0gLTEsCiAgc21MYXN0Qnl0ZSA9IDEsCiAgc21NaWRkbGVCeXRlID0gMgp9OwoKZW51bSB7Cgog
IHNtY1R5cGVNYXNrID0gMHgwMDBGLAogIHNtY1Jlc2VydmVkID0gMHgwMEYwLAogIHNtY0NsYXNz
TWFzayA9IDB4MEYwMCwKICBzbWNPcmllbnRhdGlvbk1hc2sgPSAweDEwMDAsCiAgc21jUmlnaHRN
YXNrID0gMHgyMDAwLAogIHNtY1VwcGVyTWFzayA9IDB4NDAwMCwKICBzbWNEb3VibGVNYXNrID0g
MHg4MDAwCn07CgplbnVtIHsKCiAgc21DaGFyUHVuY3QgPSAweDAwMDAsCiAgc21DaGFyQXNjaWkg
PSAweDAwMDEsCiAgc21DaGFyRXVybyA9IDB4MDAwNywKICBzbUNoYXJFeHRBc2NpaSA9IDB4MDAw
NywKCiAgc21DaGFyS2F0YWthbmEgPSAweDAwMDIsCiAgc21DaGFySGlyYWdhbmEgPSAweDAwMDMs
CiAgc21DaGFySWRlb2dyYXBoaWMgPSAweDAwMDQsCiAgc21DaGFyVHdvQnl0ZUdyZWVrID0gMHgw
MDA1LAogIHNtQ2hhclR3b0J5dGVSdXNzaWFuID0gMHgwMDA2LAogIHNtQ2hhckJpZGlyZWN0ID0g
MHgwMDA4LAogIHNtQ2hhckNvbnRleHR1YWxMUiA9IDB4MDAwOSwKICBzbUNoYXJOb25Db250ZXh0
dWFsTFIgPSAweDAwMEEsCiAgc21DaGFySGFuZ3VsID0gMHgwMDBDLAogIHNtQ2hhckphbW8gPSAw
eDAwMEQsCiAgc21DaGFyQm9wb21vZm8gPSAweDAwMEUsCiAgc21DaGFyR2FuYUthbmEgPSAweDAw
MEYsCgogIHNtQ2hhckZJU0thbmEgPSAweDAwMDIsCiAgc21DaGFyRklTR2FuYSA9IDB4MDAwMywK
ICBzbUNoYXJGSVNJZGVvID0gMHgwMDA0Cn07CgplbnVtIHsKICBzbUNoYXJGSVNHcmVlayA9IDB4
MDAwNSwKICBzbUNoYXJGSVNSdXNzaWFuID0gMHgwMDA2LAoKICBzbVB1bmN0Tm9ybWFsID0gMHgw
MDAwLAogIHNtUHVuY3ROdW1iZXIgPSAweDAxMDAsCiAgc21QdW5jdFN5bWJvbCA9IDB4MDIwMCwK
ICBzbVB1bmN0QmxhbmsgPSAweDAzMDAsCiAgc21QdW5jdFJlcGVhdCA9IDB4MDQwMCwKICBzbVB1
bmN0R3JhcGhpYyA9IDB4MDUwMCwKCiAgc21LYW5hU21hbGwgPSAweDAxMDAsCiAgc21LYW5hSGFy
ZE9LID0gMHgwMjAwLAogIHNtS2FuYVNvZnRPSyA9IDB4MDMwMCwKCiAgc21JZGVvZ3JhcGhpY0xl
dmVsMSA9IDB4MDAwMCwKICBzbUlkZW9ncmFwaGljTGV2ZWwyID0gMHgwMTAwLAogIHNtSWRlb2dy
YXBoaWNVc2VyID0gMHgwMjAwLAoKICBzbUZJU0NsYXNzTHZsMSA9IDB4MDAwMCwKICBzbUZJU0Ns
YXNzTHZsMiA9IDB4MDEwMCwKICBzbUZJU0NsYXNzVXNlciA9IDB4MDIwMCwKCiAgc21KYW1vSmFl
dW0gPSAweDAwMDAsCiAgc21KYW1vQm9nSmFldW0gPSAweDAxMDAsCiAgc21KYW1vTW9ldW0gPSAw
eDAyMDAsCiAgc21KYW1vQm9nTW9ldW0gPSAweDAzMDAKfTsKCmVudW0gewoKICBzbUNoYXJIb3Jp
em9udGFsID0gMHgwMDAwLAogIHNtQ2hhclZlcnRpY2FsID0gMHgxMDAwLAoKICBzbUNoYXJMZWZ0
ID0gMHgwMDAwLAogIHNtQ2hhclJpZ2h0ID0gMHgyMDAwLAogIHNtQ2hhckxvd2VyID0gMHgwMDAw
LAogIHNtQ2hhclVwcGVyID0gMHg0MDAwLAogIHNtQ2hhcjFieXRlID0gMHgwMDAwLAogIHNtQ2hh
cjJieXRlID0gMHg4MDAwCn07CgplbnVtIHsKCiAgc21UcmFuc0FzY2lpID0gMCwKICBzbVRyYW5z
TmF0aXZlID0gMSwKICBzbVRyYW5zQ2FzZSA9IDB4RkUsCiAgc21UcmFuc1N5c3RlbSA9IDB4RkYs
CgogIHNtVHJhbnNBc2NpaTEgPSAyLAogIHNtVHJhbnNBc2NpaTIgPSAzLAogIHNtVHJhbnNLYW5h
MSA9IDQsCiAgc21UcmFuc0thbmEyID0gNQp9OwoKZW51bSB7CiAgc21UcmFuc0dhbmEyID0gNywK
ICBzbVRyYW5zSGFuZ3VsMiA9IDgsCiAgc21UcmFuc0phbW8yID0gOSwKICBzbVRyYW5zQm9wb21v
Zm8yID0gMTAsCgogIHNtVHJhbnNMb3dlciA9IDB4NDAwMCwKICBzbVRyYW5zVXBwZXIgPSAweDgw
MDAsCgogIHNtVHJhbnNSdWxlQmFzZUZvcm1hdCA9IDEsCiAgc21UcmFuc0hhbmd1bEZvcm1hdCA9
IDIsCgogIHNtVHJhbnNQcmVEb3VibGVCeXRpbmcgPSAxLAogIHNtVHJhbnNQcmVMb3dlckNhc2lu
ZyA9IDIKfTsKCmVudW0gewoKICBzbU1hc2tBbGwgPSAoaW50KTB4RkZGRkZGRkYsCgogIHNtTWFz
a0FzY2lpID0gMHgwMDAwMDAwMSwKICBzbU1hc2tOYXRpdmUgPSAweDAwMDAwMDAyLAoKICBzbU1h
c2tBc2NpaTEgPSAweDAwMDAwMDA0LAogIHNtTWFza0FzY2lpMiA9IDB4MDAwMDAwMDgsCiAgc21N
YXNrS2FuYTEgPSAweDAwMDAwMDEwLAogIHNtTWFza0thbmEyID0gMHgwMDAwMDAyMCwKICBzbU1h
c2tHYW5hMiA9IDB4MDAwMDAwODAsCiAgc21NYXNrSGFuZ3VsMiA9IDB4MDAwMDAxMDAsCiAgc21N
YXNrSmFtbzIgPSAweDAwMDAwMjAwLAogIHNtTWFza0JvcG9tb2ZvMiA9IDB4MDAwMDA0MDAKfTsK
CmVudW0gewoKICBpdVN5c3RlbVNjcmlwdCA9IC0xLAogIGl1Q3VycmVudFNjcmlwdCA9IC0yCn07
CgplbnVtIHsKCiAgc21LZXlOZXh0U2NyaXB0ID0gLTEsCiAgc21LZXlTeXNTY3JpcHQgPSAtMiwK
ICBzbUtleVN3YXBTY3JpcHQgPSAtMywKCiAgc21LZXlOZXh0S3liZCA9IC00LAogIHNtS2V5U3dh
cEt5YmQgPSAtNSwKICBzbUtleURpc2FibGVLeWJkcyA9IC02LAogIHNtS2V5RW5hYmxlS3liZHMg
PSAtNywKICBzbUtleVRvZ2dsZUlubGluZSA9IC04LAogIHNtS2V5VG9nZ2xlRGlyZWN0aW9uID0g
LTksCiAgc21LZXlOZXh0SW5wdXRNZXRob2QgPSAtMTAsCiAgc21LZXlTd2FwSW5wdXRNZXRob2Qg
PSAtMTEsCiAgc21LZXlEaXNhYmxlS3liZFN3aXRjaCA9IC0xMiwKICBzbUtleVNldERpckxlZnRS
aWdodCA9IC0xNSwKICBzbUtleVNldERpclJpZ2h0TGVmdCA9IC0xNiwKICBzbUtleVJvbWFuID0g
LTE3Cn07CgplbnVtIHsKCiAgc21LZXlGb3JjZUtleVNjcmlwdEJpdCA9IDcsCiAgc21LZXlGb3Jj
ZUtleVNjcmlwdE1hc2sgPSAxIDw8IHNtS2V5Rm9yY2VLZXlTY3JpcHRCaXQKfTsKCmVudW0gewoK
CgogIHJvbWFuU3lzRm9uZCA9IDB4M0ZGRiwKICByb21hbkFwcEZvbmQgPSAzLAogIHJvbWFuRmxh
Z3MgPSAweDAwMDcsCgogIHNtRm9uZFN0YXJ0ID0gMHg0MDAwLAogIHNtRm9uZEVuZCA9IDB4QzAw
MCwKCiAgc21VcHJIYWxmQ2hhclNldCA9IDB4ODAKfTsKCmVudW0gewoKICBkaWFlcmVzaXNVcHJZ
ID0gMHhEOSwKICBmcmFjdGlvbiA9IDB4REEsCiAgaW50bEN1cnJlbmN5ID0gMHhEQiwKICBsZWZ0
U2luZ0d1aWxsZW1ldCA9IDB4REMsCiAgcmlnaHRTaW5nR3VpbGxlbWV0ID0gMHhERCwKICBmaUxp
Z2F0dXJlID0gMHhERSwKICBmbExpZ2F0dXJlID0gMHhERiwKICBkYmxEYWdnZXIgPSAweEUwLAog
IGNlbnRlcmVkRG90ID0gMHhFMSwKICBiYXNlU2luZ1F1b3RlID0gMHhFMiwKICBiYXNlRGJsUXVv
dGUgPSAweEUzLAogIHBlclRob3VzYW5kID0gMHhFNCwKICBjaXJjdW1mbGV4VXByQSA9IDB4RTUs
CiAgY2lyY3VtZmxleFVwckUgPSAweEU2LAogIGFjdXRlVXByQSA9IDB4RTcsCiAgZGlhZXJlc2lz
VXByRSA9IDB4RTgsCiAgZ3JhdmVVcHJFID0gMHhFOSwKICBhY3V0ZVVwckkgPSAweEVBLAogIGNp
cmN1bWZsZXhVcHJJID0gMHhFQiwKICBkaWFlcmVzaXNVcHJJID0gMHhFQywKICBncmF2ZVVwckkg
PSAweEVELAogIGFjdXRlVXByTyA9IDB4RUUsCiAgY2lyY3VtZmxleFVwck8gPSAweEVGLAogIGFw
cGxlTG9nbyA9IDB4RjAsCiAgZ3JhdmVVcHJPID0gMHhGMSwKICBhY3V0ZVVwclUgPSAweEYyLAog
IGNpcmN1bWZsZXhVcHJVID0gMHhGMywKICBncmF2ZVVwclUgPSAweEY0LAogIGRvdGxlc3NMd3JJ
ID0gMHhGNSwKICBjaXJjdW1mbGV4ID0gMHhGNiwKICB0aWxkZSA9IDB4RjcsCiAgbWFjcm9uID0g
MHhGOCwKICBicmV2ZU1hcmsgPSAweEY5LAogIG92ZXJEb3QgPSAweEZBLAogIHJpbmdNYXJrID0g
MHhGQiwKICBjZWRpbGxhID0gMHhGQywKICBkb3VibGVBY3V0ZSA9IDB4RkQsCiAgb2dvbmVrID0g
MHhGRSwKICBoYWNoZWsgPSAweEZGCn07CgplbnVtIHsKCiAgdG9rZW5JbnRsID0gNCwKICB0b2tl
bkVtcHR5ID0gLTEKfTsKCmVudW0gewogIHRva2VuVW5rbm93biA9IDAsCiAgdG9rZW5XaGl0ZSA9
IDEsCiAgdG9rZW5MZWZ0TGl0ID0gMiwKICB0b2tlblJpZ2h0TGl0ID0gMywKICB0b2tlbkFscGhh
ID0gNCwKICB0b2tlbk51bWVyaWMgPSA1LAogIHRva2VuTmV3TGluZSA9IDYsCiAgdG9rZW5MZWZ0
Q29tbWVudCA9IDcsCiAgdG9rZW5SaWdodENvbW1lbnQgPSA4LAogIHRva2VuTGl0ZXJhbCA9IDks
CiAgdG9rZW5Fc2NhcGUgPSAxMCwKICB0b2tlbkFsdE51bSA9IDExLAogIHRva2VuUmVhbE51bSA9
IDEyLAogIHRva2VuQWx0UmVhbCA9IDEzLAogIHRva2VuUmVzZXJ2ZTEgPSAxNCwKICB0b2tlblJl
c2VydmUyID0gMTUsCiAgdG9rZW5MZWZ0UGFyZW4gPSAxNiwKICB0b2tlblJpZ2h0UGFyZW4gPSAx
NywKICB0b2tlbkxlZnRCcmFja2V0ID0gMTgsCiAgdG9rZW5SaWdodEJyYWNrZXQgPSAxOQp9OwoK
ZW51bSB7CiAgdG9rZW5MZWZ0Q3VybHkgPSAyMCwKICB0b2tlblJpZ2h0Q3VybHkgPSAyMSwKICB0
b2tlbkxlZnRFbmNsb3NlID0gMjIsCiAgdG9rZW5SaWdodEVuY2xvc2UgPSAyMywKICB0b2tlblBs
dXMgPSAyNCwKICB0b2tlbk1pbnVzID0gMjUsCiAgdG9rZW5Bc3RlcmlzayA9IDI2LAogIHRva2Vu
RGl2aWRlID0gMjcsCiAgdG9rZW5QbHVzTWludXMgPSAyOCwKICB0b2tlblNsYXNoID0gMjksCiAg
dG9rZW5CYWNrU2xhc2ggPSAzMCwKICB0b2tlbkxlc3MgPSAzMSwKICB0b2tlbkdyZWF0ID0gMzIs
CiAgdG9rZW5FcXVhbCA9IDMzLAogIHRva2VuTGVzc0VxdWFsMiA9IDM0LAogIHRva2VuTGVzc0Vx
dWFsMSA9IDM1LAogIHRva2VuR3JlYXRFcXVhbDIgPSAzNiwKICB0b2tlbkdyZWF0RXF1YWwxID0g
MzcsCiAgdG9rZW4yRXF1YWwgPSAzOCwKICB0b2tlbkNvbG9uRXF1YWwgPSAzOQp9OwoKZW51bSB7
CiAgdG9rZW5Ob3RFcXVhbCA9IDQwLAogIHRva2VuTGVzc0dyZWF0ID0gNDEsCiAgdG9rZW5FeGNs
YW1FcXVhbCA9IDQyLAogIHRva2VuRXhjbGFtID0gNDMsCiAgdG9rZW5UaWxkZSA9IDQ0LAogIHRv
a2VuQ29tbWEgPSA0NSwKICB0b2tlblBlcmlvZCA9IDQ2LAogIHRva2VuTGVmdDJRdW90ZSA9IDQ3
LAogIHRva2VuUmlnaHQyUXVvdGUgPSA0OCwKICB0b2tlbkxlZnQxUXVvdGUgPSA0OSwKICB0b2tl
blJpZ2h0MVF1b3RlID0gNTAsCiAgdG9rZW4yUXVvdGUgPSA1MSwKICB0b2tlbjFRdW90ZSA9IDUy
LAogIHRva2VuU2VtaWNvbG9uID0gNTMsCiAgdG9rZW5QZXJjZW50ID0gNTQsCiAgdG9rZW5DYXJl
dCA9IDU1LAogIHRva2VuVW5kZXJsaW5lID0gNTYsCiAgdG9rZW5BbXBlcnNhbmQgPSA1NywKICB0
b2tlbkF0U2lnbiA9IDU4LAogIHRva2VuQmFyID0gNTkKfTsKCmVudW0gewogIHRva2VuUXVlc3Rp
b24gPSA2MCwKICB0b2tlblBpID0gNjEsCiAgdG9rZW5Sb290ID0gNjIsCiAgdG9rZW5TaWdtYSA9
IDYzLAogIHRva2VuSW50ZWdyYWwgPSA2NCwKICB0b2tlbk1pY3JvID0gNjUsCiAgdG9rZW5DYXBQ
aSA9IDY2LAogIHRva2VuSW5maW5pdHkgPSA2NywKICB0b2tlbkNvbG9uID0gNjgsCiAgdG9rZW5I
YXNoID0gNjksCiAgdG9rZW5Eb2xsYXIgPSA3MCwKICB0b2tlbk5vQnJlYWtTcGFjZSA9IDcxLAog
IHRva2VuRnJhY3Rpb24gPSA3MiwKICB0b2tlbkludGxDdXJyZW5jeSA9IDczLAogIHRva2VuTGVm
dFNpbmdHdWlsbGVtZXQgPSA3NCwKICB0b2tlblJpZ2h0U2luZ0d1aWxsZW1ldCA9IDc1LAogIHRv
a2VuUGVyVGhvdXNhbmQgPSA3NiwKICB0b2tlbkVsbGlwc2lzID0gNzcsCiAgdG9rZW5DZW50ZXJE
b3QgPSA3OCwKICB0b2tlbk5pbCA9IDEyNwp9OwoKZW51bSB7CiAgZGVsaW1QYWQgPSAtMiwKICB0
b2tlblRpbGRhID0gNDQsCiAgdG9rZW5DYXJhdCA9IDU1Cn07CgplbnVtIHsKCiAgc21Xb3JkU2Vs
ZWN0VGFibGUgPSAwLAogIHNtV29yZFdyYXBUYWJsZSA9IDEsCiAgc21OdW1iZXJQYXJ0c1RhYmxl
ID0gMiwKICBzbVVuVG9rZW5UYWJsZSA9IDMsCiAgc21XaGl0ZVNwYWNlTGlzdCA9IDQsCiAgaXVX
b3JkU2VsZWN0VGFibGUgPSAwLAogIGl1V29yZFdyYXBUYWJsZSA9IDEsCiAgaXVOdW1iZXJQYXJ0
c1RhYmxlID0gMiwKICBpdVVuVG9rZW5UYWJsZSA9IDMsCiAgaXVXaGl0ZVNwYWNlTGlzdCA9IDQK
fTsKCgplbnVtIHsKICB0b2tlbk9LID0gMCwKICB0b2tlbk92ZXJmbG93ID0gMSwKICBzdHJpbmdP
dmVyZmxvdyA9IDIsCiAgYmFkRGVsaW0gPSAzLAogIGJhZEVuZGluZyA9IDQsCiAgY3Jhc2ggPSA1
Cn07Cgp0eXBlZGVmIFNJbnQ4IFRva2VuUmVzdWx0czsKdHlwZWRlZiBjaGFyIENoYXJCeXRlVGFi
bGVbMjU2XTsKCnR5cGVkZWYgc2hvcnQgU2NyaXB0VG9rZW5UeXBlOwp0eXBlZGVmIFNjcmlwdFRv
a2VuVHlwZSBEZWxpbVR5cGVbMl07CnR5cGVkZWYgU2NyaXB0VG9rZW5UeXBlIENvbW1lbnRUeXBl
WzRdOwpzdHJ1Y3QgVG9rZW5SZWMgewogIFNjcmlwdFRva2VuVHlwZSB0aGVUb2tlbjsKICBQdHIg
cG9zaXRpb247CiAgbG9uZyBsZW5ndGg7CiAgU3RyaW5nUHRyIHN0cmluZ1Bvc2l0aW9uOwp9Owp0
eXBlZGVmIHN0cnVjdCBUb2tlblJlYyBUb2tlblJlYzsKdHlwZWRlZiBUb2tlblJlYyAqIFRva2Vu
UmVjUHRyOwpzdHJ1Y3QgVG9rZW5CbG9jayB7CiAgUHRyIHNvdXJjZTsKICBsb25nIHNvdXJjZUxl
bmd0aDsKICBQdHIgdG9rZW5MaXN0OwogIGxvbmcgdG9rZW5MZW5ndGg7CiAgbG9uZyB0b2tlbkNv
dW50OwogIFB0ciBzdHJpbmdMaXN0OwogIGxvbmcgc3RyaW5nTGVuZ3RoOwogIGxvbmcgc3RyaW5n
Q291bnQ7CiAgQm9vbGVhbiBkb1N0cmluZzsKICBCb29sZWFuIGRvQXBwZW5kOwogIEJvb2xlYW4g
ZG9BbHBoYW51bWVyaWM7CiAgQm9vbGVhbiBkb05lc3Q7CiAgU2NyaXB0VG9rZW5UeXBlIGxlZnRE
ZWxpbXNbMl07CiAgU2NyaXB0VG9rZW5UeXBlIHJpZ2h0RGVsaW1zWzJdOwogIFNjcmlwdFRva2Vu
VHlwZSBsZWZ0Q29tbWVudFs0XTsKICBTY3JpcHRUb2tlblR5cGUgcmlnaHRDb21tZW50WzRdOwog
IFNjcmlwdFRva2VuVHlwZSBlc2NhcGVDb2RlOwogIFNjcmlwdFRva2VuVHlwZSBkZWNpbWFsQ29k
ZTsKICBIYW5kbGUgaXRsUmVzb3VyY2U7CiAgbG9uZyByZXNlcnZlZFs4XTsKfTsKdHlwZWRlZiBz
dHJ1Y3QgVG9rZW5CbG9jayBUb2tlbkJsb2NrOwp0eXBlZGVmIFRva2VuQmxvY2sgKiBUb2tlbkJs
b2NrUHRyOwoKCmVudW0gewogIHNtTm90SW5zdGFsbGVkID0gMCwKICBzbUJhZFZlcmIgPSAtMSwK
ICBzbUJhZFNjcmlwdCA9IC0yCn07CgoKCmVudW0gewogIHNtZlNob3dJY29uID0gMzEsCiAgc21m
RHVhbENhcmV0ID0gMzAsCiAgc21mTmFtZVRhZ0VuYWIgPSAyOSwKICBzbWZVc2VBc3NvY0ZvbnRJ
bmZvID0gMjgsCiAgc21mRGlzYWJsZUtleVNjcmlwdFN5bmMgPSAyNwp9OwoKCmVudW0gewogIHNt
ZkRpc2FibGVLZXlTY3JpcHRTeW5jTWFzayA9IDFMIDw8IHNtZkRpc2FibGVLZXlTY3JpcHRTeW5j
Cn07CgoKZW51bSB7CiAgc21TeXNTY3JpcHQgPSAxOCwKICBzbUtleVNjcmlwdCA9IDIyLAogIHNt
S0NIUkNhY2hlID0gMzgsCiAgc21SZWdpb25Db2RlID0gNDAKfTsKIyA5OTIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL1NjcmlwdC5oIiAzCmV4dGVybiBsb25nCkdldFNjcmlwdE1h
bmFnZXJWYXJpYWJsZShzaG9ydCBzZWxlY3RvcikgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
OwojIDEwMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1NjcmlwdC5oIiAzCmV4
dGVybiBPU0VycgpTZXRTY3JpcHRNYW5hZ2VyVmFyaWFibGUoCiAgc2hvcnQgc2VsZWN0b3IsCiAg
bG9uZyBwYXJhbSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDEwMzIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1NjcmlwdC5oIiAzCmVudW0gewogIHNtc2ZJbnRlbGxD
UCA9IDAsCiAgc21zZlNpbmdCeXRlID0gMSwKICBzbXNmTmF0Q2FzZSA9IDIsCiAgc21zZkNvbnRl
eHQgPSAzLAogIHNtc2ZOb0ZvcmNlRm9udCA9IDQsCiAgc21zZkIwRGlnaXRzID0gNSwKICBzbXNm
QXV0b0luaXQgPSA2LAogIHNtc2ZVbml2RXh0ID0gNywKICBzbXNmU3luY2hVbnN0eWxlZFRFID0g
OCwKICBzbXNmRm9ybXMgPSAxMywKICBzbXNmTGlnYXR1cmVzID0gMTQsCiAgc21zZlJldmVyc2Ug
PSAxNQp9OwojIDE2NDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1NjcmlwdC5o
IiAzCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9DYXJib25Db3JlLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL1VUQ1V0aWxzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9VVENVdGlscy5oIiAzCiNkZWZpbmUgX19VVENVVElMU19fIAoKCgoKCgojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY0Vycm9ycy5oIiAxIDMKIyAxNyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjRXJyb3JzLmgiIDMKI2RlZmluZSBfX01B
Q0VSUk9SU19fIAojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNFcnJv
cnMuaCIgMwpleHRlcm4gIkMiIHsKCgplbnVtIHsKICBwYXJhbUVyciA9IC01MCwKICBub0hhcmR3
YXJlRXJyID0gLTIwMCwKICBub3RFbm91Z2hIYXJkd2FyZUVyciA9IC0yMDEsCiAgdXNlckNhbmNl
bGVkRXJyID0gLTEyOCwKICBxRXJyID0gLTEsCiAgdlR5cEVyciA9IC0yLAogIGNvckVyciA9IC0z
LAogIHVuaW1wRXJyID0gLTQsCiAgU2xwVHlwZUVyciA9IC01LAogIHNlTm9EQiA9IC04LAogIGNv
bnRyb2xFcnIgPSAtMTcsCiAgc3RhdHVzRXJyID0gLTE4LAogIHJlYWRFcnIgPSAtMTksCiAgd3Jp
dEVyciA9IC0yMCwKICBiYWRVbml0RXJyID0gLTIxLAogIHVuaXRFbXB0eUVyciA9IC0yMiwKICBv
cGVuRXJyID0gLTIzLAogIGNsb3NFcnIgPSAtMjQsCiAgZFJlbW92RXJyID0gLTI1LAogIGRJbnN0
RXJyID0gLTI2Cn07CgplbnVtIHsKICBhYm9ydEVyciA9IC0yNywKICBpSU9BYm9ydEVyciA9IC0y
NywKICBub3RPcGVuRXJyID0gLTI4LAogIHVuaXRUYmxGdWxsRXJyID0gLTI5LAogIGRjZUV4dEVy
ciA9IC0zMCwKICBzbG90TnVtRXJyID0gLTM2MCwKICBnY3JPbk1GTUVyciA9IC00MDAsCiAgZGly
RnVsRXJyID0gLTMzLAogIGRza0Z1bEVyciA9IC0zNCwKICBuc3ZFcnIgPSAtMzUsCiAgaW9FcnIg
PSAtMzYsCiAgYmROYW1FcnIgPSAtMzcsCiAgZm5PcG5FcnIgPSAtMzgsCiAgZW9mRXJyID0gLTM5
LAogIHBvc0VyciA9IC00MCwKICBtRnVsRXJyID0gLTQxLAogIHRtZm9FcnIgPSAtNDIsCiAgZm5m
RXJyID0gLTQzLAogIHdQckVyciA9IC00NCwKICBmTGNrZEVyciA9IC00NQp9OwoKZW51bSB7CiAg
dkxja2RFcnIgPSAtNDYsCiAgZkJzeUVyciA9IC00NywKICBkdXBGTkVyciA9IC00OCwKICBvcFdy
RXJyID0gLTQ5LAogIHJmTnVtRXJyID0gLTUxLAogIGdmcEVyciA9IC01MiwKICB2b2xPZmZMaW5F
cnIgPSAtNTMsCiAgcGVybUVyciA9IC01NCwKICB2b2xPbkxpbkVyciA9IC01NSwKICBuc0RydkVy
ciA9IC01NiwKICBub01hY0Rza0VyciA9IC01NywKICBleHRGU0VyciA9IC01OCwKICBmc1JuRXJy
ID0gLTU5LAogIGJhZE1EQkVyciA9IC02MCwKICB3clBlcm1FcnIgPSAtNjEsCiAgZGlyTkZFcnIg
PSAtMTIwLAogIHRtd2RvRXJyID0gLTEyMSwKICBiYWRNb3ZFcnIgPSAtMTIyLAogIHdyZ1ZvbFR5
cEVyciA9IC0xMjMsCiAgdm9sR29uZUVyciA9IC0xMjQKfTsKCmVudW0gewogIGZpZE5vdEZvdW5k
ID0gLTEzMDAsCiAgZmlkRXhpc3RzID0gLTEzMDEsCiAgbm90QUZpbGVFcnIgPSAtMTMwMiwKICBk
aWZmVm9sRXJyID0gLTEzMDMsCiAgY2F0Q2hhbmdlZEVyciA9IC0xMzA0LAogIGRlc2t0b3BEYW1h
Z2VkRXJyID0gLTEzMDUsCiAgc2FtZUZpbGVFcnIgPSAtMTMwNiwKICBiYWRGaWRFcnIgPSAtMTMw
NywKICBub3RBUmVtb3VudEVyciA9IC0xMzA4LAogIGZpbGVCb3VuZHNFcnIgPSAtMTMwOSwKICBm
c0RhdGFUb29CaWdFcnIgPSAtMTMxMCwKICB2b2xWTUJ1c3lFcnIgPSAtMTMxMSwKICBiYWRGQ0JF
cnIgPSAtMTMyNywKICBlcnJGU1Vua25vd25DYWxsID0gLTE0MDAsCiAgZXJyRlNCYWRGU1JlZiA9
IC0xNDAxLAogIGVyckZTQmFkRm9ya05hbWUgPSAtMTQwMiwKICBlcnJGU0JhZEJ1ZmZlciA9IC0x
NDAzLAogIGVyckZTQmFkRm9ya1JlZiA9IC0xNDA0LAogIGVyckZTQmFkSW5mb0JpdG1hcCA9IC0x
NDA1LAogIGVyckZTTWlzc2luZ0NhdEluZm8gPSAtMTQwNiwKICBlcnJGU05vdEFGb2xkZXIgPSAt
MTQwNywKICBlcnJGU0ZvcmtOb3RGb3VuZCA9IC0xNDA5LAogIGVyckZTTmFtZVRvb0xvbmcgPSAt
MTQxMCwKICBlcnJGU01pc3NpbmdOYW1lID0gLTE0MTEsCiAgZXJyRlNCYWRQb3NNb2RlID0gLTE0
MTIsCiAgZXJyRlNCYWRBbGxvY0ZsYWdzID0gLTE0MTMsCiAgZXJyRlNOb01vcmVJdGVtcyA9IC0x
NDE3LAogIGVyckZTQmFkSXRlbUNvdW50ID0gLTE0MTgsCiAgZXJyRlNCYWRTZWFyY2hQYXJhbXMg
PSAtMTQxOSwKICBlcnJGU1JlZnNEaWZmZXJlbnQgPSAtMTQyMCwKICBlcnJGU0ZvcmtFeGlzdHMg
PSAtMTQyMSwKICBlcnJGU0JhZEl0ZXJhdG9yRmxhZ3MgPSAtMTQyMiwKICBlcnJGU0l0ZXJhdG9y
Tm90Rm91bmQgPSAtMTQyMywKICBlcnJGU0l0ZXJhdG9yTm90U3VwcG9ydGVkID0gLTE0MjQsCiAg
ZXJyRlNRdW90YUV4Y2VlZGVkID0gLTE0MjUsCiAgZXJyRlNPcGVyYXRpb25Ob3RTdXBwb3J0ZWQg
PSAtMTQyNiwKICBlcnJGU0F0dHJpYnV0ZU5vdEZvdW5kID0gLTE0MjcsCiAgZXJyRlNQcm9wZXJ0
eU5vdFZhbGlkID0gLTE0MjgsCiAgZXJyRlNOb3RFbm91Z2hTcGFjZUZvck9wZXJhdGlvbiA9IC0x
NDI5LAogIGVudk5vdFByZXNlbnQgPSAtNTUwMCwKICBlbnZCYWRWZXJzID0gLTU1MDEsCiAgZW52
VmVyc1Rvb0JpZyA9IC01NTAyLAogIGZvbnREZWNFcnJvciA9IC02NCwKICBmb250Tm90RGVjbGFy
ZWQgPSAtNjUsCiAgZm9udFN1YkVyciA9IC02NiwKICBmb250Tm90T3V0bGluZUVyciA9IC0zMjYx
NSwKICBmaXJzdERza0VyciA9IC04NCwKICBsYXN0RHNrRXJyID0gLTY0LAogIG5vRHJpdmVFcnIg
PSAtNjQsCiAgb2ZmTGluRXJyID0gLTY1LAogIG5vTnliRXJyID0gLTY2Cn07CgplbnVtIHsKICBu
b0Fkck1rRXJyID0gLTY3LAogIGRhdGFWZXJFcnIgPSAtNjgsCiAgYmFkQ2tzbUVyciA9IC02OSwK
ICBiYWRCdFNscEVyciA9IC03MCwKICBub0R0YU1rRXJyID0gLTcxLAogIGJhZERDa3N1bSA9IC03
MiwKICBiYWREQnRTbHAgPSAtNzMsCiAgd3JVbmRlcnJ1biA9IC03NCwKICBjYW50U3RlcEVyciA9
IC03NSwKICB0azBCYWRFcnIgPSAtNzYsCiAgaW5pdElXTUVyciA9IC03NywKICB0d29TaWRlRXJy
ID0gLTc4LAogIHNwZEFkakVyciA9IC03OSwKICBzZWVrRXJyID0gLTgwLAogIHNlY3RORkVyciA9
IC04MSwKICBmbXQxRXJyID0gLTgyLAogIGZtdDJFcnIgPSAtODMsCiAgdmVyRXJyID0gLTg0LAog
IGNsa1JkRXJyID0gLTg1LAogIGNsa1dyRXJyID0gLTg2LAogIHByV3JFcnIgPSAtODcsCiAgcHJJ
bml0RXJyID0gLTg4LAogIHJjdnJFcnIgPSAtODksCiAgYnJlYWtSZWNkID0gLTkwCn07CgplbnVt
IHsKCiAgbm9TY3JhcEVyciA9IC0xMDAsCiAgbm9UeXBlRXJyID0gLTEwMgp9OwoKZW51bSB7Cgog
IGVMZW5FcnIgPSAtOTIsCiAgZU11bHRpRXJyID0gLTkxCn07CgplbnVtIHsKICBkZHBTa3RFcnIg
PSAtOTEsCiAgZGRwTGVuRXJyID0gLTkyLAogIG5vQnJpZGdlRXJyID0gLTkzLAogIGxhcFByb3RF
cnIgPSAtOTQsCiAgZXhjZXNzQ29sbHNucyA9IC05NSwKICBwb3J0Tm90UHdyID0gLTk2LAogIHBv
cnRJblVzZSA9IC05NywKICBwb3J0Tm90Q2YgPSAtOTgKfTsKCmVudW0gewoKICBtZW1ST1pXYXJu
ID0gLTk5LAogIG1lbVJPWkVycm9yID0gLTk5LAogIG1lbVJPWkVyciA9IC05OSwKICBtZW1GdWxs
RXJyID0gLTEwOCwKICBuaWxIYW5kbGVFcnIgPSAtMTA5LAogIG1lbVdaRXJyID0gLTExMSwKICBt
ZW1QdXJFcnIgPSAtMTEyLAogIG1lbUFkckVyciA9IC0xMTAsCiAgbWVtQVpFcnIgPSAtMTEzLAog
IG1lbVBDRXJyID0gLTExNCwKICBtZW1CQ0VyciA9IC0xMTUsCiAgbWVtU0NFcnIgPSAtMTE2LAog
IG1lbUxvY2tlZEVyciA9IC0xMTcKfTsKCmVudW0gewoKICBpTWVtRnVsbEVyciA9IC0xMDgsCiAg
aUlPQWJvcnQgPSAtMjcKfTsKCgplbnVtIHsKICByZXNvdXJjZUluTWVtb3J5ID0gLTE4OCwKICB3
cml0aW5nUGFzdEVuZCA9IC0xODksCiAgaW5wdXRPdXRPZkJvdW5kcyA9IC0xOTAsCiAgcmVzTm90
Rm91bmQgPSAtMTkyLAogIHJlc0ZOb3RGb3VuZCA9IC0xOTMsCiAgYWRkUmVzRmFpbGVkID0gLTE5
NCwKICBhZGRSZWZGYWlsZWQgPSAtMTk1LAogIHJtdlJlc0ZhaWxlZCA9IC0xOTYsCiAgcm12UmVm
RmFpbGVkID0gLTE5NywKICByZXNBdHRyRXJyID0gLTE5OCwKICBtYXBSZWFkRXJyID0gLTE5OSwK
ICBDYW50RGVjb21wcmVzcyA9IC0xODYsCiAgYmFkRXh0UmVzb3VyY2UgPSAtMTg1LAogIG5vTWVt
Rm9yUGljdFBsYXliYWNrRXJyID0gLTE0NSwKICByZ25PdmVyZmxvd0VyciA9IC0xNDcsCiAgcmdu
VG9vQmlnRXJyb3IgPSAtMTQ3LAogIHBpeE1hcFRvb0RlZXBFcnIgPSAtMTQ4LAogIGluc3VmZmlj
aWVudFN0YWNrRXJyID0gLTE0OSwKICBuc1N0YWNrRXJyID0gLTE0OQp9OwoKZW51bSB7CiAgZXZ0
Tm90RW5iID0gMQp9OwoKCmVudW0gewogIGNNYXRjaEVyciA9IC0xNTAsCiAgY1RlbXBNZW1FcnIg
PSAtMTUxLAogIGNOb01lbUVyciA9IC0xNTIsCiAgY1JhbmdlRXJyID0gLTE1MywKICBjUHJvdGVj
dEVyciA9IC0xNTQsCiAgY0RldkVyciA9IC0xNTUsCiAgY1Jlc0VyciA9IC0xNTYsCiAgY0RlcHRo
RXJyID0gLTE1NywKICByZ25Ub29CaWdFcnIgPSAtNTAwLAogIHVwZFBpeE1lbUVyciA9IC0xMjUs
CiAgcGljdEluZm9WZXJzaW9uRXJyID0gLTExMDAwLAogIHBpY3RJbmZvSURFcnIgPSAtMTEwMDEs
CiAgcGljdEluZm9WZXJiRXJyID0gLTExMDAyLAogIGNhbnRMb2FkUGlja01ldGhvZEVyciA9IC0x
MTAwMywKICBjb2xvcnNSZXF1ZXN0ZWRFcnIgPSAtMTEwMDQsCiAgcGljdHVyZURhdGFFcnIgPSAt
MTEwMDUKfTsKCgplbnVtIHsKCiAgY21Qcm9maWxlRXJyb3IgPSAtMTcwLAogIGNtTWV0aG9kRXJy
b3IgPSAtMTcxLAogIGNtTWV0aG9kTm90Rm91bmQgPSAtMTc1LAogIGNtUHJvZmlsZU5vdEZvdW5k
ID0gLTE3NiwKICBjbVByb2ZpbGVzSWRlbnRpY2FsID0gLTE3NywKICBjbUNhbnRDb25jYXRlbmF0
ZUVycm9yID0gLTE3OCwKICBjbUNhbnRYWVogPSAtMTc5LAogIGNtQ2FudERlbGV0ZVByb2ZpbGUg
PSAtMTgwLAogIGNtVW5zdXBwb3J0ZWREYXRhVHlwZSA9IC0xODEsCiAgY21Ob0N1cnJlbnRQcm9m
aWxlID0gLTE4Mgp9OwoKCmVudW0gewoKICBub0hhcmR3YXJlID0gbm9IYXJkd2FyZUVyciwKICBu
b3RFbm91Z2hIYXJkd2FyZSA9IG5vdEVub3VnaEhhcmR3YXJlRXJyLAogIHF1ZXVlRnVsbCA9IC0y
MDMsCiAgcmVzUHJvYmxlbSA9IC0yMDQsCiAgYmFkQ2hhbm5lbCA9IC0yMDUsCiAgYmFkRm9ybWF0
ID0gLTIwNiwKICBub3RFbm91Z2hCdWZmZXJTcGFjZSA9IC0yMDcsCiAgYmFkRmlsZUZvcm1hdCA9
IC0yMDgsCiAgY2hhbm5lbEJ1c3kgPSAtMjA5LAogIGJ1ZmZlcnNUb29TbWFsbCA9IC0yMTAsCiAg
Y2hhbm5lbE5vdEJ1c3kgPSAtMjExLAogIG5vTW9yZVJlYWxUaW1lID0gLTIxMiwKICBzaVZCUkNv
bXByZXNzaW9uTm90U3VwcG9ydGVkID0gLTIxMywKICBzaU5vU291bmRJbkhhcmR3YXJlID0gLTIy
MCwKICBzaUJhZFNvdW5kSW5EZXZpY2UgPSAtMjIxLAogIHNpTm9CdWZmZXJTcGVjaWZpZWQgPSAt
MjIyLAogIHNpSW52YWxpZENvbXByZXNzaW9uID0gLTIyMywKICBzaUhhcmREcml2ZVRvb1Nsb3cg
PSAtMjI0LAogIHNpSW52YWxpZFNhbXBsZVJhdGUgPSAtMjI1LAogIHNpSW52YWxpZFNhbXBsZVNp
emUgPSAtMjI2LAogIHNpRGV2aWNlQnVzeUVyciA9IC0yMjcsCiAgc2lCYWREZXZpY2VOYW1lID0g
LTIyOCwKICBzaUJhZFJlZk51bSA9IC0yMjksCiAgc2lJbnB1dERldmljZUVyciA9IC0yMzAsCiAg
c2lVbmtub3duSW5mb1R5cGUgPSAtMjMxLAogIHNpVW5rbm93blF1YWxpdHkgPSAtMjMyCn07CgoK
ZW51bSB7CiAgbm9TeW50aEZvdW5kID0gLTI0MCwKICBzeW50aE9wZW5GYWlsZWQgPSAtMjQxLAog
IHN5bnRoTm90UmVhZHkgPSAtMjQyLAogIGJ1ZlRvb1NtYWxsID0gLTI0MywKICB2b2ljZU5vdEZv
dW5kID0gLTI0NCwKICBpbmNvbXBhdGlibGVWb2ljZSA9IC0yNDUsCiAgYmFkRGljdEZvcm1hdCA9
IC0yNDYsCiAgYmFkSW5wdXRUZXh0ID0gLTI0Nwp9OwoKCmVudW0gewogIG1pZGlOb0NsaWVudEVy
ciA9IC0yNTAsCiAgbWlkaU5vUG9ydEVyciA9IC0yNTEsCiAgbWlkaVRvb01hbnlQb3J0c0VyciA9
IC0yNTIsCiAgbWlkaVRvb01hbnlDb25zRXJyID0gLTI1MywKICBtaWRpVkNvbm5lY3RFcnIgPSAt
MjU0LAogIG1pZGlWQ29ubmVjdE1hZGUgPSAtMjU1LAogIG1pZGlWQ29ubmVjdFJtdmQgPSAtMjU2
LAogIG1pZGlOb0NvbkVyciA9IC0yNTcsCiAgbWlkaVdyaXRlRXJyID0gLTI1OCwKICBtaWRpTmFt
ZUxlbkVyciA9IC0yNTksCiAgbWlkaUR1cElERXJyID0gLTI2MCwKICBtaWRpSW52YWxpZENtZEVy
ciA9IC0yNjEKfTsKCgplbnVtIHsKICBubVR5cEVyciA9IC0yOTkKfTsKCgplbnVtIHsKICBzaUlu
aXRTRFRibEVyciA9IDEsCiAgc2lJbml0VkJMUXNFcnIgPSAyLAogIHNpSW5pdFNQVGJsRXJyID0g
MywKICBzZG1KVEluaXRFcnIgPSAxMCwKICBzZG1Jbml0RXJyID0gMTEsCiAgc2RtU1JUSW5pdEVy
ciA9IDEyLAogIHNkbVBSQU1Jbml0RXJyID0gMTMsCiAgc2RtUHJpSW5pdEVyciA9IDE0Cn07Cgpl
bnVtIHsKICBzbVNETUluaXRFcnIgPSAtMjkwLAogIHNtU1JUSW5pdEVyciA9IC0yOTEsCiAgc21Q
UkFNSW5pdEVyciA9IC0yOTIsCiAgc21QcmlJbml0RXJyID0gLTI5MywKICBzbUVtcHR5U2xvdCA9
IC0zMDAsCiAgc21DUkNGYWlsID0gLTMwMSwKICBzbUZvcm1hdEVyciA9IC0zMDIsCiAgc21SZXZp
c2lvbkVyciA9IC0zMDMsCiAgc21Ob0RpciA9IC0zMDQsCiAgc21EaXNhYmxlZFNsb3QgPSAtMzA1
LAogIHNtTm9zSW5mb0FycmF5ID0gLTMwNgp9OwoKCmVudW0gewogIHNtUmVzcnZFcnIgPSAtMzA3
LAogIHNtVW5FeEJ1c0VyciA9IC0zMDgsCiAgc21CTEZpZWxkQmFkID0gLTMwOSwKICBzbUZIQmxv
Y2tSZEVyciA9IC0zMTAsCiAgc21GSEJsa0Rpc3BFcnIgPSAtMzExLAogIHNtRGlzcG9zZVBFcnIg
PSAtMzEyLAogIHNtTm9Cb2FyZFNSc3JjID0gLTMxMywKICBzbUdldFBSRXJyID0gLTMxNCwKICBz
bU5vQm9hcmRJZCA9IC0zMTUsCiAgc21Jbml0U3RhdFZFcnIgPSAtMzE2LAogIHNtSW5pdFRibFZF
cnIgPSAtMzE3LAogIHNtTm9KbXBUYmwgPSAtMzE4LAogIHNtUmVzZXJ2ZWRTbG90ID0gLTMxOCwK
ICBzbUJhZEJvYXJkSWQgPSAtMzE5LAogIHNtQnVzRXJyVE8gPSAtMzIwLAoKICBzdlRlbXBEaXNh
YmxlID0gLTMyNzY4TCwKICBzdkRpc2FibGVkID0gLTMyNjQwLAogIHNtQmFkUmVmSWQgPSAtMzMw
LAogIHNtQmFkc0xpc3QgPSAtMzMxLAogIHNtUmVzZXJ2ZWRFcnIgPSAtMzMyLAogIHNtQ29kZVJl
dkVyciA9IC0zMzMKfTsKCmVudW0gewogIHNtQ1BVRXJyID0gLTMzNCwKICBzbXNQb2ludGVyTmls
ID0gLTMzNSwKICBzbU5pbHNCbG9ja0VyciA9IC0zMzYsCiAgc21TbG90T09CRXJyID0gLTMzNywK
ICBzbVNlbE9PQkVyciA9IC0zMzgsCiAgc21OZXdQRXJyID0gLTMzOSwKICBzbUJsa01vdmVFcnIg
PSAtMzQwLAogIHNtQ2tTdGF0dXNFcnIgPSAtMzQxLAogIHNtR2V0RHJ2ck5hbUVyciA9IC0zNDIs
CiAgc21EaXNEcnZyTmFtRXJyID0gLTM0MywKICBzbU5vTW9yZXNSc3JjcyA9IC0zNDQsCiAgc21z
R2V0RHJ2ckVyciA9IC0zNDUsCiAgc21CYWRzUHRyRXJyID0gLTM0NiwKICBzbUJ5dGVMYW5lc0Vy
ciA9IC0zNDcsCiAgc21PZmZzZXRFcnIgPSAtMzQ4LAogIHNtTm9Hb29kT3BlbnMgPSAtMzQ5LAog
IHNtU1JUT3ZyRmxFcnIgPSAtMzUwLAogIHNtUmVjTm90Rm5kID0gLTM1MQp9OwoKCmVudW0gewoK
ICBub3RCVHJlZSA9IC00MTAsCiAgYnROb1NwYWNlID0gLTQxMywKICBidER1cFJlY0VyciA9IC00
MTQsCiAgYnRSZWNOb3RGbmQgPSAtNDE1LAogIGJ0S2V5TGVuRXJyID0gLTQxNiwKICBidEtleUF0
dHJFcnIgPSAtNDE3LAogIHVua25vd25JbnNlcnRNb2RlRXJyID0gLTIwMDAwLAogIHJlY29yZERh
dGFUb29CaWdFcnIgPSAtMjAwMDEsCiAgaW52YWxpZEluZGV4RXJyID0gLTIwMDAyCn07CgoKCgoK
ZW51bSB7CiAgZnNtRkZTTm90Rm91bmRFcnIgPSAtNDMxLAogIGZzbUJ1c3lGRlNFcnIgPSAtNDMy
LAogIGZzbUJhZEZGU05hbWVFcnIgPSAtNDMzLAogIGZzbUJhZEZTRExlbkVyciA9IC00MzQsCiAg
ZnNtRHVwbGljYXRlRlNJREVyciA9IC00MzUsCiAgZnNtQmFkRlNEVmVyc2lvbkVyciA9IC00MzYs
CiAgZnNtTm9BbHRlcm5hdGVTdGFja0VyciA9IC00MzcsCiAgZnNtVW5rbm93bkZTTU1lc3NhZ2VF
cnIgPSAtNDM4Cn07CgoKZW51bSB7CgogIGVkaXRpb25NZ3JJbml0RXJyID0gLTQ1MCwKICBiYWRT
ZWN0aW9uRXJyID0gLTQ1MSwKICBub3RSZWdpc3RlcmVkU2VjdGlvbkVyciA9IC00NTIsCiAgYmFk
RWRpdGlvbkZpbGVFcnIgPSAtNDUzLAogIGJhZFN1YlBhcnRFcnIgPSAtNDU0LAogIG11bHRpcGxl
UHVibGlzaGVyV3JuID0gLTQ2MCwKICBjb250YWluZXJOb3RGb3VuZFdybiA9IC00NjEsCiAgY29u
dGFpbmVyQWxyZWFkeU9wZW5Xcm4gPSAtNDYyLAogIG5vdFRoZVB1Ymxpc2hlcldybiA9IC00NjMK
fTsKCmVudW0gewogIHRlU2NyYXBTaXplRXJyID0gLTUwMSwKICBod1BhcmFtRXJyID0gLTUwMiwK
ICBkcml2ZXJIYXJkd2FyZUdvbmVFcnIgPSAtNTAzCn07CgplbnVtIHsKCiAgcHJvY05vdEZvdW5k
ID0gLTYwMCwKICBtZW1GcmFnRXJyID0gLTYwMSwKICBhcHBNb2RlRXJyID0gLTYwMiwKICBwcm90
b2NvbEVyciA9IC02MDMsCiAgaGFyZHdhcmVDb25maWdFcnIgPSAtNjA0LAogIGFwcE1lbUZ1bGxF
cnIgPSAtNjA1LAogIGFwcElzRGFlbW9uID0gLTYwNiwKICBidWZmZXJJc1NtYWxsID0gLTYwNywK
ICBub091dHN0YW5kaW5nSExFID0gLTYwOCwKICBjb25uZWN0aW9uSW52YWxpZCA9IC02MDksCiAg
bm9Vc2VySW50ZXJhY3Rpb25BbGxvd2VkID0gLTYxMAp9OwoKZW51bSB7CgogIHdyb25nQXBwbGlj
YXRpb25QbGF0Zm9ybSA9IC04NzUsCiAgYXBwVmVyc2lvblRvb09sZCA9IC04NzYsCiAgbm90QXBw
cm9wcmlhdGVGb3JDbGFzc2ljID0gLTg3Nwp9OwoKCmVudW0gewogIHRocmVhZFRvb01hbnlSZXFz
RXJyID0gLTYxNywKICB0aHJlYWROb3RGb3VuZEVyciA9IC02MTgsCiAgdGhyZWFkUHJvdG9jb2xF
cnIgPSAtNjE5Cn07CgplbnVtIHsKICB0aHJlYWRCYWRBcHBDb250ZXh0RXJyID0gLTYxNgp9OwoK
CmVudW0gewogIG5vdEVub3VnaE1lbW9yeUVyciA9IC02MjAsCiAgbm90SGVsZEVyciA9IC02MjEs
CiAgY2Fubm90TWFrZUNvbnRpZ3VvdXNFcnIgPSAtNjIyLAogIG5vdExvY2tlZEVyciA9IC02MjMs
CiAgaW50ZXJydXB0c01hc2tlZEVyciA9IC02MjQsCiAgY2Fubm90RGVmZXJFcnIgPSAtNjI1LAog
IG5vTU1VRXJyID0gLTYyNgp9OwoKCmVudW0gewogIHZtTW9yZVBoeXNpY2FsVGhhblZpcnR1YWxF
cnIgPSAtNjI4LAogIHZtS2VybmVsTU1VSW5pdEVyciA9IC02MjksCiAgdm1PZmZFcnIgPSAtNjMw
LAogIHZtTWVtTGNrZEVyciA9IC02MzEsCiAgdm1CYWREcml2ZXIgPSAtNjMyLAogIHZtTm9WZWN0
b3JFcnIgPSAtNjMzCn07CgoKZW51bSB7CiAgdm1JbnZhbGlkQmFja2luZ0ZpbGVJREVyciA9IC02
NDAsCiAgdm1NYXBwaW5nUHJpdmlsZWdlc0VyciA9IC02NDEsCiAgdm1CdXN5QmFja2luZ0ZpbGVF
cnIgPSAtNjQyLAogIHZtTm9Nb3JlQmFja2luZ0ZpbGVzRXJyID0gLTY0MywKICB2bUludmFsaWRG
aWxlVmlld0lERXJyID0gLTY0NCwKICB2bUZpbGVWaWV3QWNjZXNzRXJyID0gLTY0NSwKICB2bU5v
TW9yZUZpbGVWaWV3c0VyciA9IC02NDYsCiAgdm1BZGRyZXNzTm90SW5GaWxlVmlld0VyciA9IC02
NDcsCiAgdm1JbnZhbGlkT3duaW5nUHJvY2Vzc0VyciA9IC02NDgKfTsKCgplbnVtIHsKICByY0RC
TnVsbCA9IC04MDAsCiAgcmNEQlZhbHVlID0gLTgwMSwKICByY0RCRXJyb3IgPSAtODAyLAogIHJj
REJCYWRUeXBlID0gLTgwMywKICByY0RCQnJlYWsgPSAtODA0LAogIHJjREJFeGVjID0gLTgwNSwK
ICByY0RCQmFkU2Vzc0lEID0gLTgwNiwKICByY0RCQmFkU2Vzc051bSA9IC04MDcsCiAgcmNEQkJh
ZERERVYgPSAtODA4LAogIHJjREJBc3luY05vdFN1cHAgPSAtODA5LAogIHJjREJCYWRBc3luY1BC
ID0gLTgxMCwKICByY0RCTm9IYW5kbGVyID0gLTgxMSwKICByY0RCV3JvbmdWZXJzaW9uID0gLTgx
MiwKICByY0RCUGFja05vdEluaXRlZCA9IC04MTMKfTsKCgoKZW51bSB7CiAgaG1IZWxwRGlzYWJs
ZWQgPSAtODUwLAogIGhtQmFsbG9vbkFib3J0ZWQgPSAtODUzLAogIGhtU2FtZUFzTGFzdEJhbGxv
b24gPSAtODU0LAogIGhtSGVscE1hbmFnZXJOb3RJbml0ZWQgPSAtODU1LAogIGhtU2tpcHBlZEJh
bGxvb24gPSAtODU3LAogIGhtV3JvbmdWZXJzaW9uID0gLTg1OCwKICBobVVua25vd25IZWxwVHlw
ZSA9IC04NTksCiAgaG1PcGVyYXRpb25VbnN1cHBvcnRlZCA9IC04NjEsCiAgaG1Ob0JhbGxvb25V
cCA9IC04NjIsCiAgaG1DbG9zZVZpZXdBY3RpdmUgPSAtODYzCn07CgoKCmVudW0gewoKICBub3RJ
bml0RXJyID0gLTkwMCwKICBuYW1lVHlwZUVyciA9IC05MDIsCiAgbm9Qb3J0RXJyID0gLTkwMywK
CgogIG5vR2xvYmFsc0VyciA9IC05MDQsCiAgbG9jYWxPbmx5RXJyID0gLTkwNSwKICBkZXN0UG9y
dEVyciA9IC05MDYsCiAgc2Vzc1RhYmxlRXJyID0gLTkwNywKICBub1Nlc3Npb25FcnIgPSAtOTA4
LAogIGJhZFJlcUVyciA9IC05MDksCiAgcG9ydE5hbWVFeGlzdHNFcnIgPSAtOTEwLAogIG5vVXNl
ck5hbWVFcnIgPSAtOTExLAogIHVzZXJSZWplY3RFcnIgPSAtOTEyLAogIG5vTWFjaGluZU5hbWVF
cnIgPSAtOTEzLAogIG5vVG9vbGJveE5hbWVFcnIgPSAtOTE0LAogIG5vUmVzcG9uc2VFcnIgPSAt
OTE1LAogIHBvcnRDbG9zZWRFcnIgPSAtOTE2LAogIHNlc3NDbG9zZWRFcnIgPSAtOTE3LAogIGJh
ZFBvcnROYW1lRXJyID0gLTkxOSwKICBub0RlZmF1bHRVc2VyRXJyID0gLTkyMiwKICBub3RMb2dn
ZWRJbkVyciA9IC05MjMsCiAgbm9Vc2VyUmVmRXJyID0gLTkyNCwKICBuZXR3b3JrRXJyID0gLTky
NSwKICBub0luZm9ybUVyciA9IC05MjYsCiAgYXV0aEZhaWxFcnIgPSAtOTI3LAogIG5vVXNlclJl
Y0VyciA9IC05MjgsCiAgYmFkU2VydmljZU1ldGhvZEVyciA9IC05MzAsCiAgYmFkTG9jTmFtZUVy
ciA9IC05MzEsCiAgZ3Vlc3ROb3RBbGxvd2VkRXJyID0gLTkzMgp9OwoKCmVudW0gewogIGtGTUl0
ZXJhdGlvbkNvbXBsZXRlZCA9IC05ODBMLAogIGtGTUludmFsaWRGb250RmFtaWx5RXJyID0gLTk4
MUwsCiAga0ZNSW52YWxpZEZvbnRFcnIgPSAtOTgyTCwKICBrRk1JdGVyYXRpb25TY29wZU1vZGlm
aWVkRXJyID0gLTk4M0wsCiAga0ZNRm9udFRhYmxlQWNjZXNzRXJyID0gLTk4NEwsCiAga0ZNRm9u
dENvbnRhaW5lckFjY2Vzc0VyciA9IC05ODVMCn07CgplbnVtIHsKICBub01hc2tGb3VuZEVyciA9
IC0xMDAwCn07CgplbnVtIHsKICBuYnBCdWZmT3ZyID0gLTEwMjQsCiAgbmJwTm9Db25maXJtID0g
LTEwMjUsCiAgbmJwQ29uZkRpZmYgPSAtMTAyNiwKICBuYnBEdXBsaWNhdGUgPSAtMTAyNywKICBu
YnBOb3RGb3VuZCA9IC0xMDI4LAogIG5icE5JU0VyciA9IC0xMDI5Cn07CgplbnVtIHsKICBhc3BC
YWRWZXJzTnVtID0gLTEwNjYsCiAgYXNwQnVmVG9vU21hbGwgPSAtMTA2NywKICBhc3BOb01vcmVT
ZXNzID0gLTEwNjgsCiAgYXNwTm9TZXJ2ZXJzID0gLTEwNjksCiAgYXNwUGFyYW1FcnIgPSAtMTA3
MCwKICBhc3BTZXJ2ZXJCdXN5ID0gLTEwNzEsCiAgYXNwU2Vzc0Nsb3NlZCA9IC0xMDcyLAogIGFz
cFNpemVFcnIgPSAtMTA3MywKICBhc3BUb29NYW55ID0gLTEwNzQsCiAgYXNwTm9BY2sgPSAtMTA3
NQp9OwoKZW51bSB7CiAgcmVxRmFpbGVkID0gLTEwOTYsCiAgdG9vTWFueVJlcXMgPSAtMTA5NywK
ICB0b29NYW55U2t0cyA9IC0xMDk4LAogIGJhZEFUUFNrdCA9IC0xMDk5LAogIGJhZEJ1ZmZOdW0g
PSAtMTEwMCwKICBub1JlbEVyciA9IC0xMTAxLAogIGNiTm90Rm91bmQgPSAtMTEwMiwKICBub1Nl
bmRSZXNwID0gLTExMDMsCiAgbm9EYXRhQXJlYSA9IC0xMTA0LAogIHJlcUFib3J0ZWQgPSAtMTEw
NQp9OwoKCmVudW0gewoKICBlcnJSZWZOdW0gPSAtMTI4MCwKICBlcnJBYm9ydGVkID0gLTEyNzks
CiAgZXJyU3RhdGUgPSAtMTI3OCwKICBlcnJPcGVuaW5nID0gLTEyNzcsCiAgZXJyQXR0ZW50aW9u
ID0gLTEyNzYsCiAgZXJyRndkUmVzZXQgPSAtMTI3NSwKICBlcnJEU1BRdWV1ZVNpemUgPSAtMTI3
NCwKICBlcnJPcGVuRGVuaWVkID0gLTEyNzMKfTsKCgoKCgoKZW51bSB7CiAgZXJyQUVDb2VyY2lv
bkZhaWwgPSAtMTcwMCwKICBlcnJBRURlc2NOb3RGb3VuZCA9IC0xNzAxLAogIGVyckFFQ29ycnVw
dERhdGEgPSAtMTcwMiwKICBlcnJBRVdyb25nRGF0YVR5cGUgPSAtMTcwMywKICBlcnJBRU5vdEFF
RGVzYyA9IC0xNzA0LAogIGVyckFFQmFkTGlzdEl0ZW0gPSAtMTcwNSwKICBlcnJBRU5ld2VyVmVy
c2lvbiA9IC0xNzA2LAogIGVyckFFTm90QXBwbGVFdmVudCA9IC0xNzA3LAogIGVyckFFRXZlbnRO
b3RIYW5kbGVkID0gLTE3MDgsCiAgZXJyQUVSZXBseU5vdFZhbGlkID0gLTE3MDksCiAgZXJyQUVV
bmtub3duU2VuZE1vZGUgPSAtMTcxMCwKICBlcnJBRVdhaXRDYW5jZWxlZCA9IC0xNzExLAogIGVy
ckFFVGltZW91dCA9IC0xNzEyLAogIGVyckFFTm9Vc2VySW50ZXJhY3Rpb24gPSAtMTcxMywKICBl
cnJBRU5vdEFTcGVjaWFsRnVuY3Rpb24gPSAtMTcxNCwKICBlcnJBRVBhcmFtTWlzc2VkID0gLTE3
MTUsCiAgZXJyQUVVbmtub3duQWRkcmVzc1R5cGUgPSAtMTcxNiwKICBlcnJBRUhhbmRsZXJOb3RG
b3VuZCA9IC0xNzE3LAogIGVyckFFUmVwbHlOb3RBcnJpdmVkID0gLTE3MTgsCiAgZXJyQUVJbGxl
Z2FsSW5kZXggPSAtMTcxOSwKICBlcnJBRUltcG9zc2libGVSYW5nZSA9IC0xNzIwLAogIGVyckFF
V3JvbmdOdW1iZXJBcmdzID0gLTE3MjEsCiAgZXJyQUVBY2Nlc3Nvck5vdEZvdW5kID0gLTE3MjMs
CiAgZXJyQUVOb1N1Y2hMb2dpY2FsID0gLTE3MjUsCiAgZXJyQUVCYWRUZXN0S2V5ID0gLTE3MjYs
CiAgZXJyQUVOb3RBbk9ialNwZWMgPSAtMTcyNywKICBlcnJBRU5vU3VjaE9iamVjdCA9IC0xNzI4
LAogIGVyckFFTmVnYXRpdmVDb3VudCA9IC0xNzI5LAogIGVyckFFRW1wdHlMaXN0Q29udGFpbmVy
ID0gLTE3MzAsCiAgZXJyQUVVbmtub3duT2JqZWN0VHlwZSA9IC0xNzMxLAogIGVyckFFUmVjb3Jk
aW5nSXNBbHJlYWR5T24gPSAtMTczMiwKICBlcnJBRVJlY2VpdmVUZXJtaW5hdGUgPSAtMTczMywK
ICBlcnJBRVJlY2VpdmVFc2NhcGVDdXJyZW50ID0gLTE3MzQsCiAgZXJyQUVFdmVudEZpbHRlcmVk
ID0gLTE3MzUsCiAgZXJyQUVEdXBsaWNhdGVIYW5kbGVyID0gLTE3MzYsCiAgZXJyQUVTdHJlYW1C
YWROZXN0aW5nID0gLTE3MzcsCiAgZXJyQUVTdHJlYW1BbHJlYWR5Q29udmVydGVkID0gLTE3Mzgs
CiAgZXJyQUVEZXNjSXNOdWxsID0gLTE3MzksCiAgZXJyQUVCdWlsZFN5bnRheEVycm9yID0gLTE3
NDAsCiAgZXJyQUVCdWZmZXJUb29TbWFsbCA9IC0xNzQxCn07CgplbnVtIHsKICBlcnJPU0FTeXN0
ZW1FcnJvciA9IC0xNzUwLAogIGVyck9TQUludmFsaWRJRCA9IC0xNzUxLAogIGVyck9TQUJhZFN0
b3JhZ2VUeXBlID0gLTE3NTIsCiAgZXJyT1NBU2NyaXB0RXJyb3IgPSAtMTc1MywKICBlcnJPU0FC
YWRTZWxlY3RvciA9IC0xNzU0LAogIGVyck9TQVNvdXJjZU5vdEF2YWlsYWJsZSA9IC0xNzU2LAog
IGVyck9TQU5vU3VjaERpYWxlY3QgPSAtMTc1NywKICBlcnJPU0FEYXRhRm9ybWF0T2Jzb2xldGUg
PSAtMTc1OCwKICBlcnJPU0FEYXRhRm9ybWF0VG9vTmV3ID0gLTE3NTksCiAgZXJyT1NBQ29ycnVw
dERhdGEgPSBlcnJBRUNvcnJ1cHREYXRhLAogIGVyck9TQVJlY29yZGluZ0lzQWxyZWFkeU9uID0g
ZXJyQUVSZWNvcmRpbmdJc0FscmVhZHlPbiwKICBlcnJPU0FDb21wb25lbnRNaXNtYXRjaCA9IC0x
NzYxLAogIGVyck9TQUNhbnRPcGVuQ29tcG9uZW50ID0gLTE3NjIKfTsKCgoKCmVudW0gewogIGVy
ck9mZnNldEludmFsaWQgPSAtMTgwMCwKICBlcnJPZmZzZXRJc091dHNpZGVPZlZpZXcgPSAtMTgw
MSwKICBlcnJUb3BPZkRvY3VtZW50ID0gLTE4MTAsCiAgZXJyVG9wT2ZCb2R5ID0gLTE4MTEsCiAg
ZXJyRW5kT2ZEb2N1bWVudCA9IC0xODEyLAogIGVyckVuZE9mQm9keSA9IC0xODEzCn07CgoKZW51
bSB7CgogIGJhZERyYWdSZWZFcnIgPSAtMTg1MCwKICBiYWREcmFnSXRlbUVyciA9IC0xODUxLAog
IGJhZERyYWdGbGF2b3JFcnIgPSAtMTg1MiwKICBkdXBsaWNhdGVGbGF2b3JFcnIgPSAtMTg1MywK
ICBjYW50R2V0Rmxhdm9yRXJyID0gLTE4NTQsCiAgZHVwbGljYXRlSGFuZGxlckVyciA9IC0xODU1
LAogIGhhbmRsZXJOb3RGb3VuZEVyciA9IC0xODU2LAogIGRyYWdOb3RBY2NlcHRlZEVyciA9IC0x
ODU3LAogIHVuc3VwcG9ydGVkRm9yUGxhdGZvcm1FcnIgPSAtMTg1OCwKICBub1N1aXRhYmxlRGlz
cGxheXNFcnIgPSAtMTg1OSwKICBiYWRJbWFnZVJnbkVyciA9IC0xODYwLAogIGJhZEltYWdlRXJy
ID0gLTE4NjEsCiAgbm9uRHJhZ09yaWdpbmF0b3JFcnIgPSAtMTg2Mgp9OwoKCgplbnVtIHsKICBj
b3VsZE5vdFJlc29sdmVEYXRhUmVmID0gLTIwMDAsCiAgYmFkSW1hZ2VEZXNjcmlwdGlvbiA9IC0y
MDAxLAogIGJhZFB1YmxpY01vdmllQXRvbSA9IC0yMDAyLAogIGNhbnRGaW5kSGFuZGxlciA9IC0y
MDAzLAogIGNhbnRPcGVuSGFuZGxlciA9IC0yMDA0LAogIGJhZENvbXBvbmVudFR5cGUgPSAtMjAw
NSwKICBub01lZGlhSGFuZGxlciA9IC0yMDA2LAogIG5vRGF0YUhhbmRsZXIgPSAtMjAwNywKICBp
bnZhbGlkTWVkaWEgPSAtMjAwOCwKICBpbnZhbGlkVHJhY2sgPSAtMjAwOSwKICBpbnZhbGlkTW92
aWUgPSAtMjAxMCwKICBpbnZhbGlkU2FtcGxlVGFibGUgPSAtMjAxMSwKICBpbnZhbGlkRGF0YVJl
ZiA9IC0yMDEyLAogIGludmFsaWRIYW5kbGVyID0gLTIwMTMsCiAgaW52YWxpZER1cmF0aW9uID0g
LTIwMTQsCiAgaW52YWxpZFRpbWUgPSAtMjAxNSwKICBjYW50UHV0UHVibGljTW92aWVBdG9tID0g
LTIwMTYsCiAgYmFkRWRpdExpc3QgPSAtMjAxNywKICBtZWRpYVR5cGVzRG9udE1hdGNoID0gLTIw
MTgsCiAgcHJvZ3Jlc3NQcm9jQWJvcnRlZCA9IC0yMDE5LAogIG1vdmllVG9vbGJveFVuaW5pdGlh
bGl6ZWQgPSAtMjAyMCwKICBub1JlY29yZE9mQXBwID0gbW92aWVUb29sYm94VW5pbml0aWFsaXpl
ZCwKICB3ZkZpbGVOb3RGb3VuZCA9IC0yMDIxLAogIGNhbnRDcmVhdGVTaW5nbGVGb3JrRmlsZSA9
IC0yMDIyLAogIGludmFsaWRFZGl0U3RhdGUgPSAtMjAyMywKICBub25NYXRjaGluZ0VkaXRTdGF0
ZSA9IC0yMDI0LAogIHN0YWxlRWRpdFN0YXRlID0gLTIwMjUsCiAgdXNlckRhdGFJdGVtTm90Rm91
bmQgPSAtMjAyNiwKICBtYXhTaXplVG9Hcm93VG9vU21hbGwgPSAtMjAyNywKICBiYWRUcmFja0lu
ZGV4ID0gLTIwMjgsCiAgdHJhY2tJRE5vdEZvdW5kID0gLTIwMjksCiAgdHJhY2tOb3RJbk1vdmll
ID0gLTIwMzAsCiAgdGltZU5vdEluVHJhY2sgPSAtMjAzMSwKICB0aW1lTm90SW5NZWRpYSA9IC0y
MDMyLAogIGJhZEVkaXRJbmRleCA9IC0yMDMzLAogIGludGVybmFsUXVpY2tUaW1lRXJyb3IgPSAt
MjAzNCwKICBjYW50RW5hYmxlVHJhY2sgPSAtMjAzNSwKICBpbnZhbGlkUmVjdCA9IC0yMDM2LAog
IGludmFsaWRTYW1wbGVOdW0gPSAtMjAzNywKICBpbnZhbGlkQ2h1bmtOdW0gPSAtMjAzOCwKICBp
bnZhbGlkU2FtcGxlRGVzY0luZGV4ID0gLTIwMzksCiAgaW52YWxpZENodW5rQ2FjaGUgPSAtMjA0
MCwKICBpbnZhbGlkU2FtcGxlRGVzY3JpcHRpb24gPSAtMjA0MSwKICBkYXRhTm90T3BlbkZvclJl
YWQgPSAtMjA0MiwKICBkYXRhTm90T3BlbkZvcldyaXRlID0gLTIwNDMsCiAgZGF0YUFscmVhZHlP
cGVuRm9yV3JpdGUgPSAtMjA0NCwKICBkYXRhQWxyZWFkeUNsb3NlZCA9IC0yMDQ1LAogIGVuZE9m
RGF0YVJlYWNoZWQgPSAtMjA0NiwKICBkYXRhTm9EYXRhUmVmID0gLTIwNDcsCiAgbm9Nb3ZpZUZv
dW5kID0gLTIwNDgsCiAgaW52YWxpZERhdGFSZWZDb250YWluZXIgPSAtMjA0OSwKICBiYWREYXRh
UmVmSW5kZXggPSAtMjA1MCwKICBub0RlZmF1bHREYXRhUmVmID0gLTIwNTEsCiAgY291bGROb3RV
c2VBbkV4aXN0aW5nU2FtcGxlID0gLTIwNTIsCiAgZmVhdHVyZVVuc3VwcG9ydGVkID0gLTIwNTMs
CiAgbm9WaWRlb1RyYWNrSW5Nb3ZpZUVyciA9IC0yMDU0LAogIG5vU291bmRUcmFja0luTW92aWVF
cnIgPSAtMjA1NSwKICBzb3VuZFN1cHBvcnROb3RBdmFpbGFibGVFcnIgPSAtMjA1NiwKICB1bnN1
cHBvcnRlZEF1eGlsaWFyeUltcG9ydERhdGEgPSAtMjA1NywKICBhdXhpbGlhcnlFeHBvcnREYXRh
VW5hdmFpbGFibGUgPSAtMjA1OCwKICBzYW1wbGVzQWxyZWFkeUluTWVkaWFFcnIgPSAtMjA1OSwK
ICBub1NvdXJjZVRyZWVGb3VuZEVyciA9IC0yMDYwLAogIHNvdXJjZU5vdEZvdW5kRXJyID0gLTIw
NjEsCiAgbW92aWVUZXh0Tm90Rm91bmRFcnIgPSAtMjA2MiwKICBtaXNzaW5nUmVxdWlyZWRQYXJh
bWV0ZXJFcnIgPSAtMjA2MywKICBpbnZhbGlkU3ByaXRlV29ybGRQcm9wZXJ0eUVyciA9IC0yMDY0
LAogIGludmFsaWRTcHJpdGVQcm9wZXJ0eUVyciA9IC0yMDY1LAogIGdXb3JsZHNOb3RTYW1lRGVw
dGhBbmRTaXplRXJyID0gLTIwNjYsCiAgaW52YWxpZFNwcml0ZUluZGV4RXJyID0gLTIwNjcsCiAg
aW52YWxpZEltYWdlSW5kZXhFcnIgPSAtMjA2OCwKICBpbnZhbGlkU3ByaXRlSURFcnIgPSAtMjA2
OQp9OwoKZW51bSB7CiAgaW50ZXJuYWxDb21wb25lbnRFcnIgPSAtMjA3MCwKICBub3RJbXBsZW1l
bnRlZE11c2ljT1NFcnIgPSAtMjA3MSwKICBjYW50U2VuZFRvU3ludGhlc2l6ZXJPU0VyciA9IC0y
MDcyLAogIGNhbnRSZWNlaXZlRnJvbVN5bnRoZXNpemVyT1NFcnIgPSAtMjA3MywKICBpbGxlZ2Fs
Vm9pY2VBbGxvY2F0aW9uT1NFcnIgPSAtMjA3NCwKICBpbGxlZ2FsUGFydE9TRXJyID0gLTIwNzUs
CiAgaWxsZWdhbENoYW5uZWxPU0VyciA9IC0yMDc2LAogIGlsbGVnYWxLbm9iT1NFcnIgPSAtMjA3
NywKICBpbGxlZ2FsS25vYlZhbHVlT1NFcnIgPSAtMjA3OCwKICBpbGxlZ2FsSW5zdHJ1bWVudE9T
RXJyID0gLTIwNzksCiAgaWxsZWdhbENvbnRyb2xsZXJPU0VyciA9IC0yMDgwLAogIG1pZGlNYW5h
Z2VyQWJzZW50T1NFcnIgPSAtMjA4MSwKICBzeW50aGVzaXplck5vdFJlc3BvbmRpbmdPU0VyciA9
IC0yMDgyLAogIHN5bnRoZXNpemVyT1NFcnIgPSAtMjA4MywKICBpbGxlZ2FsTm90ZUNoYW5uZWxP
U0VyciA9IC0yMDg0LAogIG5vdGVDaGFubmVsTm90QWxsb2NhdGVkT1NFcnIgPSAtMjA4NSwKICB0
dW5lUGxheWVyRnVsbE9TRXJyID0gLTIwODYsCiAgdHVuZVBhcnNlT1NFcnIgPSAtMjA4NywKICBu
b0V4cG9ydFByb2NBdmFpbGFibGVFcnIgPSAtMjA4OSwKICB2aWRlb091dHB1dEluVXNlRXJyID0g
LTIwOTAKfTsKCmVudW0gewogIGNvbXBvbmVudERsbExvYWRFcnIgPSAtMjA5MSwKICBjb21wb25l
bnREbGxFbnRyeU5vdEZvdW5kRXJyID0gLTIwOTIsCiAgcXRtbERsbExvYWRFcnIgPSAtMjA5MywK
ICBxdG1sRGxsRW50cnlOb3RGb3VuZEVyciA9IC0yMDk0LAogIHF0bWxVbmluaXRpYWxpemVkID0g
LTIwOTUsCiAgdW5zdXBwb3J0ZWRPU0VyciA9IC0yMDk2LAogIHVuc3VwcG9ydGVkUHJvY2Vzc29y
RXJyID0gLTIwOTcsCiAgY29tcG9uZW50Tm90VGhyZWFkU2FmZUVyciA9IC0yMDk4Cn07CgplbnVt
IHsKICBjYW5ub3RGaW5kQXRvbUVyciA9IC0yMTAxLAogIG5vdExlYWZBdG9tRXJyID0gLTIxMDIs
CiAgYXRvbXNOb3RPZlNhbWVUeXBlRXJyID0gLTIxMDMsCiAgYXRvbUluZGV4SW52YWxpZEVyciA9
IC0yMTA0LAogIGR1cGxpY2F0ZUF0b21UeXBlQW5kSURFcnIgPSAtMjEwNSwKICBpbnZhbGlkQXRv
bUVyciA9IC0yMTA2LAogIGludmFsaWRBdG9tQ29udGFpbmVyRXJyID0gLTIxMDcsCiAgaW52YWxp
ZEF0b21UeXBlRXJyID0gLTIxMDgsCiAgY2Fubm90QmVMZWFmQXRvbUVyciA9IC0yMTA5LAogIHBh
dGhUb29Mb25nRXJyID0gLTIxMTAsCiAgZW1wdHlQYXRoRXJyID0gLTIxMTEsCiAgbm9QYXRoTWFw
cGluZ0VyciA9IC0yMTEyLAogIHBhdGhOb3RWZXJpZmllZEVyciA9IC0yMTEzLAogIHVua25vd25G
b3JtYXRFcnIgPSAtMjExNCwKICB3YWNrQmFkRmlsZUVyciA9IC0yMTE1LAogIHdhY2tGb3JrTm90
Rm91bmRFcnIgPSAtMjExNiwKICB3YWNrQmFkTWV0YURhdGFFcnIgPSAtMjExNywKICBxZmNiTm90
Rm91bmRFcnIgPSAtMjExOCwKICBxZmNiTm90Q3JlYXRlZEVyciA9IC0yMTE5LAogIEFBUE5vdENy
ZWF0ZWRFcnIgPSAtMjEyMCwKICBBQVBOb3RGb3VuZEVyciA9IC0yMTIxLAogIEFTREJhZEhlYWRl
ckVyciA9IC0yMTIyLAogIEFTREJhZEZvcmtFcnIgPSAtMjEyMywKICBBU0RFbnRyeU5vdEZvdW5k
RXJyID0gLTIxMjQsCiAgZmlsZU9mZnNldFRvb0JpZ0VyciA9IC0yMTI1LAogIG5vdEFsbG93ZWRU
b1NhdmVNb3ZpZUVyciA9IC0yMTI2LAogIHF0TmV0d29ya0FscmVhZHlBbGxvY2F0ZWRFcnIgPSAt
MjEyNywKICB1cmxEYXRhSEhUVFBQcm90b2NvbEVyciA9IC0yMTI5LAogIHVybERhdGFISFRUUE5v
TmV0RHJpdmVyRXJyID0gLTIxMzAsCiAgdXJsRGF0YUhIVFRQVVJMRXJyID0gLTIxMzEsCiAgdXJs
RGF0YUhIVFRQUmVkaXJlY3RFcnIgPSAtMjEzMiwKICB1cmxEYXRhSEZUUFByb3RvY29sRXJyID0g
LTIxMzMsCiAgdXJsRGF0YUhGVFBTaHV0ZG93bkVyciA9IC0yMTM0LAogIHVybERhdGFIRlRQQmFk
VXNlckVyciA9IC0yMTM1LAogIHVybERhdGFIRlRQQmFkUGFzc3dvcmRFcnIgPSAtMjEzNiwKICB1
cmxEYXRhSEZUUFNlcnZlckVyciA9IC0yMTM3LAogIHVybERhdGFIRlRQRGF0YUNvbm5lY3Rpb25F
cnIgPSAtMjEzOCwKICB1cmxEYXRhSEZUUE5vRGlyZWN0b3J5RXJyID0gLTIxMzksCiAgdXJsRGF0
YUhGVFBRdW90YUVyciA9IC0yMTQwLAogIHVybERhdGFIRlRQUGVybWlzc2lvbnNFcnIgPSAtMjE0
MSwKICB1cmxEYXRhSEZUUEZpbGVuYW1lRXJyID0gLTIxNDIsCiAgdXJsRGF0YUhGVFBOb05ldERy
aXZlckVyciA9IC0yMTQzLAogIHVybERhdGFIRlRQQmFkTmFtZUxpc3RFcnIgPSAtMjE0NCwKICB1
cmxEYXRhSEZUUE5lZWRQYXNzd29yZEVyciA9IC0yMTQ1LAogIHVybERhdGFIRlRQTm9QYXNzd29y
ZEVyciA9IC0yMTQ2LAogIHVybERhdGFIRlRQU2VydmVyRGlzY29ubmVjdGVkRXJyID0gLTIxNDcs
CiAgdXJsRGF0YUhGVFBVUkxFcnIgPSAtMjE0OCwKICBub3RFbm91Z2hEYXRhRXJyID0gLTIxNDks
CiAgcXRBY3Rpb25Ob3RIYW5kbGVkRXJyID0gLTIxNTcsCiAgcXRYTUxQYXJzZUVyciA9IC0yMTU4
LAogIHF0WE1MQXBwbGljYXRpb25FcnIgPSAtMjE1OQp9OwoKCmVudW0gewogIGRpZ2lVbmltcEVy
ciA9IC0yMjAxLAogIHF0UGFyYW1FcnIgPSAtMjIwMiwKICBtYXRyaXhFcnIgPSAtMjIwMywKICBu
b3RFeGFjdE1hdHJpeEVyciA9IC0yMjA0LAogIG5vTW9yZUtleUNvbG9yc0VyciA9IC0yMjA1LAog
IG5vdEV4YWN0U2l6ZUVyciA9IC0yMjA2LAogIGJhZERlcHRoRXJyID0gLTIyMDcsCiAgbm9ETUFF
cnIgPSAtMjIwOCwKICBiYWRDYWxsT3JkZXJFcnIgPSAtMjIwOQp9OwoKCgplbnVtIHsKICBrZXJu
ZWxJbmNvbXBsZXRlRXJyID0gLTI0MDEsCiAga2VybmVsQ2FuY2VsZWRFcnIgPSAtMjQwMiwKICBr
ZXJuZWxPcHRpb25zRXJyID0gLTI0MDMsCiAga2VybmVsUHJpdmlsZWdlRXJyID0gLTI0MDQsCiAg
a2VybmVsVW5zdXBwb3J0ZWRFcnIgPSAtMjQwNSwKICBrZXJuZWxPYmplY3RFeGlzdHNFcnIgPSAt
MjQwNiwKICBrZXJuZWxXcml0ZVBlcm1pc3Npb25FcnIgPSAtMjQwNywKICBrZXJuZWxSZWFkUGVy
bWlzc2lvbkVyciA9IC0yNDA4LAogIGtlcm5lbEV4ZWN1dGVQZXJtaXNzaW9uRXJyID0gLTI0MDks
CiAga2VybmVsRGVsZXRlUGVybWlzc2lvbkVyciA9IC0yNDEwLAogIGtlcm5lbEV4ZWN1dGlvbkxl
dmVsRXJyID0gLTI0MTEsCiAga2VybmVsQXR0cmlidXRlRXJyID0gLTI0MTIsCiAga2VybmVsQXN5
bmNTZW5kTGltaXRFcnIgPSAtMjQxMywKICBrZXJuZWxBc3luY1JlY2VpdmVMaW1pdEVyciA9IC0y
NDE0LAogIGtlcm5lbFRpbWVvdXRFcnIgPSAtMjQxNSwKICBrZXJuZWxJblVzZUVyciA9IC0yNDE2
LAogIGtlcm5lbFRlcm1pbmF0ZWRFcnIgPSAtMjQxNywKICBrZXJuZWxFeGNlcHRpb25FcnIgPSAt
MjQxOCwKICBrZXJuZWxJREVyciA9IC0yNDE5LAogIGtlcm5lbEFscmVhZHlGcmVlRXJyID0gLTI0
MjEsCiAga2VybmVsUmV0dXJuVmFsdWVFcnIgPSAtMjQyMiwKICBrZXJuZWxVbnJlY292ZXJhYmxl
RXJyID0gLTI0OTkKfTsKCgoKZW51bSB7CgogIHRzbUNvbXBvbmVudE5vRXJyID0gMCwKICB0c21V
bnN1cFNjcmlwdExhbmd1YWdlRXJyID0gLTI1MDAsCiAgdHNtSW5wdXRNZXRob2ROb3RGb3VuZEVy
ciA9IC0yNTAxLAogIHRzbU5vdEFuQXBwRXJyID0gLTI1MDIsCiAgdHNtQWxyZWFkeVJlZ2lzdGVy
ZWRFcnIgPSAtMjUwMywKICB0c21OZXZlclJlZ2lzdGVyZWRFcnIgPSAtMjUwNCwKICB0c21JbnZh
bGlkRG9jSURFcnIgPSAtMjUwNSwKICB0c21UU01Eb2NCdXN5RXJyID0gLTI1MDYsCiAgdHNtRG9j
Tm90QWN0aXZlRXJyID0gLTI1MDcsCiAgdHNtTm9PcGVuVFNFcnIgPSAtMjUwOCwKICB0c21DYW50
T3BlbkNvbXBvbmVudEVyciA9IC0yNTA5LAogIHRzbVRleHRTZXJ2aWNlTm90Rm91bmRFcnIgPSAt
MjUxMCwKICB0c21Eb2N1bWVudE9wZW5FcnIgPSAtMjUxMSwKICB0c21Vc2VJbnB1dFdpbmRvd0Vy
ciA9IC0yNTEyLAogIHRzbVRTSGFzTm9NZW51RXJyID0gLTI1MTMsCiAgdHNtVFNOb3RPcGVuRXJy
ID0gLTI1MTQsCiAgdHNtQ29tcG9uZW50QWxyZWFkeU9wZW5FcnIgPSAtMjUxNSwKICB0c21JbnB1
dE1ldGhvZElzT2xkRXJyID0gLTI1MTYsCiAgdHNtU2NyaXB0SGFzTm9JTUVyciA9IC0yNTE3LAog
IHRzbVVuc3VwcG9ydGVkVHlwZUVyciA9IC0yNTE4LAogIHRzbVVua25vd25FcnIgPSAtMjUxOSwK
ICB0c21JbnZhbGlkQ29udGV4dCA9IC0yNTIwLAogIHRzbU5vSGFuZGxlciA9IC0yNTIxLAogIHRz
bU5vTW9yZVRva2VucyA9IC0yNTIyLAogIHRzbU5vU3RlbSA9IC0yNTIzLAogIHRzbURlZmF1bHRJ
c05vdElucHV0TWV0aG9kRXJyID0gLTI1MjQsCiAgdHNtRG9jUHJvcGVydHlOb3RGb3VuZEVyciA9
IC0yNTI4LAogIHRzbURvY1Byb3BlcnR5QnVmZmVyVG9vU21hbGxFcnIgPSAtMjUyOSwKICB0c21D
YW50Q2hhbmdlRm9yY2VkQ2xhc3NTdGF0ZUVyciA9IC0yNTMwLAogIHRzbUNvbXBvbmVudFByb3Bl
cnR5VW5zdXBwb3J0ZWRFcnIgPSAtMjUzMSwKICB0c21Db21wb25lbnRQcm9wZXJ0eU5vdEZvdW5k
RXJyID0gLTI1MzIsCiAgdHNtSW5wdXRNb2RlQ2hhbmdlRmFpbGVkRXJyID0gLTI1MzMKfTsKCgpl
bnVtIHsKCiAgbW1JbnRlcm5hbEVycm9yID0gLTI1MjYKfTsKCgplbnVtIHsKICBuckxvY2tlZEVy
ciA9IC0yNTM2LAogIG5yTm90RW5vdWdoTWVtb3J5RXJyID0gLTI1MzcsCiAgbnJJbnZhbGlkTm9k
ZUVyciA9IC0yNTM4LAogIG5yTm90Rm91bmRFcnIgPSAtMjUzOSwKICBuck5vdENyZWF0ZWRFcnIg
PSAtMjU0MCwKICBuck5hbWVFcnIgPSAtMjU0MSwKICBuck5vdFNsb3REZXZpY2VFcnIgPSAtMjU0
MiwKICBuckRhdGFUcnVuY2F0ZWRFcnIgPSAtMjU0MywKICBuclBvd2VyRXJyID0gLTI1NDQsCiAg
bnJQb3dlclN3aXRjaEFib3J0RXJyID0gLTI1NDUsCiAgbnJUeXBlTWlzbWF0Y2hFcnIgPSAtMjU0
NiwKICBuck5vdE1vZGlmaWVkRXJyID0gLTI1NDcsCiAgbnJPdmVycnVuRXJyID0gLTI1NDgsCiAg
bnJSZXN1bHRDb2RlQmFzZSA9IC0yNTQ5LAogIG5yUGF0aE5vdEZvdW5kID0gLTI1NTAsCiAgbnJQ
YXRoQnVmZmVyVG9vU21hbGwgPSAtMjU1MSwKICBuckludmFsaWRFbnRyeUl0ZXJhdGlvbk9wID0g
LTI1NTIsCiAgbnJQcm9wZXJ0eUFscmVhZHlFeGlzdHMgPSAtMjU1MywKICBuckl0ZXJhdGlvbkRv
bmUgPSAtMjU1NCwKICBuckV4aXRlZEl0ZXJhdG9yU2NvcGUgPSAtMjU1NSwKICBuclRyYW5zYWN0
aW9uQWJvcnRlZCA9IC0yNTU2LAogIG5yQ2FsbE5vdFN1cHBvcnRlZCA9IC0yNTU3Cn07CgoKZW51
bSB7CiAgaW52YWxpZEljb25SZWZFcnIgPSAtMjU4MCwKICBub1N1Y2hJY29uRXJyID0gLTI1ODEs
CiAgbm9JY29uRGF0YUF2YWlsYWJsZUVyciA9IC0yNTgyCn07CiMgMTA1OCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjRXJyb3JzLmgiIDMKZW51bSB7CiAgZXJyT1NBQ2FudENv
ZXJjZSA9IGVyckFFQ29lcmNpb25GYWlsLAogIGVyck9TQUNhbnRBY2Nlc3MgPSBlcnJBRU5vU3Vj
aE9iamVjdCwKICBlcnJPU0FDYW50QXNzaWduID0gLTEwMDA2LAogIGVyck9TQUdlbmVyYWxFcnJv
ciA9IC0yNzAwLAogIGVyck9TQURpdmlkZUJ5WmVybyA9IC0yNzAxLAogIGVyck9TQU51bWVyaWNP
dmVyZmxvdyA9IC0yNzAyLAogIGVyck9TQUNhbnRMYXVuY2ggPSAtMjcwMywKICBlcnJPU0FBcHBO
b3RIaWdoTGV2ZWxFdmVudEF3YXJlID0gLTI3MDQsCiAgZXJyT1NBQ29ycnVwdFRlcm1pbm9sb2d5
ID0gLTI3MDUsCiAgZXJyT1NBU3RhY2tPdmVyZmxvdyA9IC0yNzA2LAogIGVyck9TQUludGVybmFs
VGFibGVPdmVyZmxvdyA9IC0yNzA3LAogIGVyck9TQURhdGFCbG9ja1Rvb0xhcmdlID0gLTI3MDgs
CiAgZXJyT1NBQ2FudEdldFRlcm1pbm9sb2d5ID0gLTI3MDksCiAgZXJyT1NBQ2FudENyZWF0ZSA9
IC0yNzEwCn07CiMgMTA4OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjRXJy
b3JzLmgiIDMKZW51bSB7CiAgZXJyT1NBVHlwZUVycm9yID0gZXJyQUVXcm9uZ0RhdGFUeXBlLAog
IE9TQU1lc3NhZ2VOb3RVbmRlcnN0b29kID0gZXJyQUVFdmVudE5vdEhhbmRsZWQsCiAgT1NBVW5k
ZWZpbmVkSGFuZGxlciA9IGVyckFFSGFuZGxlck5vdEZvdW5kLAogIE9TQUlsbGVnYWxBY2Nlc3Mg
PSBlcnJBRUFjY2Vzc29yTm90Rm91bmQsCiAgT1NBSWxsZWdhbEluZGV4ID0gZXJyQUVJbGxlZ2Fs
SW5kZXgsCiAgT1NBSWxsZWdhbFJhbmdlID0gZXJyQUVJbXBvc3NpYmxlUmFuZ2UsCiAgT1NBSWxs
ZWdhbEFzc2lnbiA9IC0xMDAwMywKICBPU0FTeW50YXhFcnJvciA9IC0yNzQwLAogIE9TQVN5bnRh
eFR5cGVFcnJvciA9IC0yNzQxLAogIE9TQVRva2VuVG9vTG9uZyA9IC0yNzQyLAogIE9TQU1pc3Np
bmdQYXJhbWV0ZXIgPSBlcnJBRURlc2NOb3RGb3VuZCwKICBPU0FQYXJhbWV0ZXJNaXNtYXRjaCA9
IGVyckFFV3JvbmdOdW1iZXJBcmdzLAogIE9TQUR1cGxpY2F0ZVBhcmFtZXRlciA9IC0yNzUwLAog
IE9TQUR1cGxpY2F0ZVByb3BlcnR5ID0gLTI3NTEsCiAgT1NBRHVwbGljYXRlSGFuZGxlciA9IC0y
NzUyLAogIE9TQVVuZGVmaW5lZFZhcmlhYmxlID0gLTI3NTMsCiAgT1NBSW5jb25zaXN0ZW50RGVj
bGFyYXRpb25zID0gLTI3NTQsCiAgT1NBQ29udHJvbEZsb3dFcnJvciA9IC0yNzU1Cn07CiMgMTEz
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjRXJyb3JzLmgiIDMKZW51bSB7
CiAgZXJyQVNDYW50Q29uc2lkZXJBbmRJZ25vcmUgPSAtMjcyMCwKICBlcnJBU0NhbnRDb21wYXJl
TW9yZVRoYW4zMmsgPSAtMjcyMSwKICBlcnJBU1Rlcm1pbm9sb2d5TmVzdGluZ1Rvb0RlZXAgPSAt
Mjc2MCwKICBlcnJBU0lsbGVnYWxGb3JtYWxQYXJhbWV0ZXIgPSAtMjc2MSwKICBlcnJBU1BhcmFt
ZXRlck5vdEZvckV2ZW50ID0gLTI3NjIsCiAgZXJyQVNOb1Jlc3VsdFJldHVybmVkID0gLTI3NjMs
CiAgZXJyQVNJbmNvbnNpc3RlbnROYW1lcyA9IC0yNzgwCn07CgoKCmVudW0gewogIGNmcmFnRmly
c3RFcnJDb2RlID0gLTI4MDAsCiAgY2ZyYWdDb250ZXh0SURFcnIgPSAtMjgwMCwKICBjZnJhZ0Nv
bm5lY3Rpb25JREVyciA9IC0yODAxLAogIGNmcmFnTm9TeW1ib2xFcnIgPSAtMjgwMiwKICBjZnJh
Z05vU2VjdGlvbkVyciA9IC0yODAzLAogIGNmcmFnTm9MaWJyYXJ5RXJyID0gLTI4MDQsCiAgY2Zy
YWdEdXBSZWdpc3RyYXRpb25FcnIgPSAtMjgwNSwKICBjZnJhZ0ZyYWdtZW50Rm9ybWF0RXJyID0g
LTI4MDYsCiAgY2ZyYWdVbnJlc29sdmVkRXJyID0gLTI4MDcsCiAgY2ZyYWdOb1Bvc2l0aW9uRXJy
ID0gLTI4MDgsCiAgY2ZyYWdOb1ByaXZhdGVNZW1FcnIgPSAtMjgwOSwKICBjZnJhZ05vQ2xpZW50
TWVtRXJyID0gLTI4MTAsCiAgY2ZyYWdOb0lEc0VyciA9IC0yODExLAogIGNmcmFnSW5pdE9yZGVy
RXJyID0gLTI4MTIsCiAgY2ZyYWdJbXBvcnRUb29PbGRFcnIgPSAtMjgxMywKICBjZnJhZ0ltcG9y
dFRvb05ld0VyciA9IC0yODE0LAogIGNmcmFnSW5pdExvb3BFcnIgPSAtMjgxNSwKICBjZnJhZ0lu
aXRBdEJvb3RFcnIgPSAtMjgxNiwKICBjZnJhZ0xpYkNvbm5FcnIgPSAtMjgxNywKICBjZnJhZ0NG
TVN0YXJ0dXBFcnIgPSAtMjgxOCwKICBjZnJhZ0NGTUludGVybmFsRXJyID0gLTI4MTksCiAgY2Zy
YWdGcmFnbWVudENvcnJ1cHRFcnIgPSAtMjgyMCwKICBjZnJhZ0luaXRGdW5jdGlvbkVyciA9IC0y
ODIxLAogIGNmcmFnTm9BcHBsaWNhdGlvbkVyciA9IC0yODIyLAogIGNmcmFnQXJjaGl0ZWN0dXJl
RXJyID0gLTI4MjMsCiAgY2ZyYWdGcmFnbWVudFVzYWdlRXJyID0gLTI4MjQsCiAgY2ZyYWdGaWxl
U2l6ZUVyciA9IC0yODI1LAogIGNmcmFnTm90Q2xvc3VyZUVyciA9IC0yODI2LAogIGNmcmFnTm9S
ZWdpc3RyYXRpb25FcnIgPSAtMjgyNywKICBjZnJhZ0NvbnRhaW5lcklERXJyID0gLTI4MjgsCiAg
Y2ZyYWdDbG9zdXJlSURFcnIgPSAtMjgyOSwKICBjZnJhZ0Fib3J0Q2xvc3VyZUVyciA9IC0yODMw
LAogIGNmcmFnT3V0cHV0TGVuZ3RoRXJyID0gLTI4MzEsCiAgY2ZyYWdNYXBGaWxlRXJyID0gLTI4
NTEsCiAgY2ZyYWdFeGVjRmlsZVJlZkVyciA9IC0yODU0LAogIGNmcmFnU3RkRm9sZGVyRXJyID0g
LTI4NTUsCiAgY2ZyYWdSc3JjRm9ya0VyciA9IC0yODU2LAogIGNmcmFnQ0ZyYWdSc3JjRXJyID0g
LTI4NTcsCiAgY2ZyYWdMYXN0RXJyQ29kZSA9IC0yODk5Cn07CgplbnVtIHsKCiAgY2ZyYWdGaXJz
dFJlc2VydmVkQ29kZSA9IC0yODk3LAogIGNmcmFnUmVzZXJ2ZWRDb2RlXzMgPSAtMjg5NywKICBj
ZnJhZ1Jlc2VydmVkQ29kZV8yID0gLTI4OTgsCiAgY2ZyYWdSZXNlcnZlZENvZGVfMSA9IC0yODk5
Cn07CiMgMTIyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjRXJyb3JzLmgi
IDMKZW51bSB7CiAgaW52YWxpZENvbXBvbmVudElEID0gLTMwMDAsCiAgdmFsaWRJbnN0YW5jZXNF
eGlzdCA9IC0zMDAxLAogIGNvbXBvbmVudE5vdENhcHR1cmVkID0gLTMwMDIsCiAgY29tcG9uZW50
RG9udFJlZ2lzdGVyID0gLTMwMDMsCiAgdW5yZXNvbHZlZENvbXBvbmVudERMTEVyciA9IC0zMDA0
LAogIHJldHJ5Q29tcG9uZW50UmVnaXN0cmF0aW9uRXJyID0gLTMwMDUKfTsKCgplbnVtIHsKICBp
bnZhbGlkVHJhbnNsYXRpb25QYXRoRXJyID0gLTMwMjUsCiAgY291bGROb3RQYXJzZVNvdXJjZUZp
bGVFcnIgPSAtMzAyNiwKICBub1RyYW5zbGF0aW9uUGF0aEVyciA9IC0zMDMwLAogIGJhZFRyYW5z
bGF0aW9uU3BlY0VyciA9IC0zMDMxLAogIG5vUHJlZkFwcEVyciA9IC0zMDMyCn07CgplbnVtIHsK
ICBidWYyU21hbGxFcnIgPSAtMzEwMSwKICBub01QUEVyciA9IC0zMTAyLAogIGNrU3VtRXJyID0g
LTMxMDMsCiAgZXh0cmFjdEVyciA9IC0zMTA0LAogIHJlYWRRRXJyID0gLTMxMDUsCiAgYXRwTGVu
RXJyID0gLTMxMDYsCiAgYXRwQmFkUnNwID0gLTMxMDcsCiAgcmVjTm90Rm5kID0gLTMxMDgsCiAg
c2t0Q2xvc2VkRXJyID0gLTMxMDkKfTsKCgoKZW51bSB7CiAga09UTm9FcnJvciA9IDAsCiAga09U
T3V0T2ZNZW1vcnlFcnIgPSAtMzIxMSwKICBrT1ROb3RGb3VuZEVyciA9IC0zMjAxLAogIGtPVER1
cGxpY2F0ZUZvdW5kRXJyID0gLTMyMTYsCiAga09UQmFkQWRkcmVzc0VyciA9IC0zMTUwLAogIGtP
VEJhZE9wdGlvbkVyciA9IC0zMTUxLAogIGtPVEFjY2Vzc0VyciA9IC0zMTUyLAogIGtPVEJhZFJl
ZmVyZW5jZUVyciA9IC0zMTUzLAogIGtPVE5vQWRkcmVzc0VyciA9IC0zMTU0LAogIGtPVE91dFN0
YXRlRXJyID0gLTMxNTUsCiAga09UQmFkU2VxdWVuY2VFcnIgPSAtMzE1NiwKICBrT1RTeXNFcnJv
ckVyciA9IC0zMTU3LAogIGtPVExvb2tFcnIgPSAtMzE1OCwKICBrT1RCYWREYXRhRXJyID0gLTMx
NTksCiAga09UQnVmZmVyT3ZlcmZsb3dFcnIgPSAtMzE2MCwKICBrT1RGbG93RXJyID0gLTMxNjEs
CiAga09UTm9EYXRhRXJyID0gLTMxNjIsCiAga09UTm9EaXNjb25uZWN0RXJyID0gLTMxNjMsCiAg
a09UTm9VREVyckVyciA9IC0zMTY0LAogIGtPVEJhZEZsYWdFcnIgPSAtMzE2NSwKICBrT1ROb1Jl
bGVhc2VFcnIgPSAtMzE2NiwKICBrT1ROb3RTdXBwb3J0ZWRFcnIgPSAtMzE2NywKICBrT1RTdGF0
ZUNoYW5nZUVyciA9IC0zMTY4LAogIGtPVE5vU3RydWN0dXJlVHlwZUVyciA9IC0zMTY5LAogIGtP
VEJhZE5hbWVFcnIgPSAtMzE3MCwKICBrT1RCYWRRTGVuRXJyID0gLTMxNzEsCiAga09UQWRkcmVz
c0J1c3lFcnIgPSAtMzE3MiwKICBrT1RJbmRPdXRFcnIgPSAtMzE3MywKICBrT1RQcm92aWRlck1p
c21hdGNoRXJyID0gLTMxNzQsCiAga09UUmVzUUxlbkVyciA9IC0zMTc1LAogIGtPVFJlc0FkZHJl
c3NFcnIgPSAtMzE3NiwKICBrT1RRRnVsbEVyciA9IC0zMTc3LAogIGtPVFByb3RvY29sRXJyID0g
LTMxNzgsCiAga09UQmFkU3luY0VyciA9IC0zMTc5LAogIGtPVENhbmNlbGVkRXJyID0gLTMxODAs
CiAga0VQRVJNRXJyID0gLTMyMDAsCiAga0VOT0VOVEVyciA9IC0zMjAxLAogIGtFTk9SU1JDRXJy
ID0gLTMyMDIsCiAga0VJTlRSRXJyID0gLTMyMDMsCiAga0VJT0VyciA9IC0zMjA0LAogIGtFTlhJ
T0VyciA9IC0zMjA1LAogIGtFQkFERkVyciA9IC0zMjA4LAogIGtFQUdBSU5FcnIgPSAtMzIxMCwK
ICBrRU5PTUVNRXJyID0gLTMyMTEsCiAga0VBQ0NFU0VyciA9IC0zMjEyLAogIGtFRkFVTFRFcnIg
PSAtMzIxMywKICBrRUJVU1lFcnIgPSAtMzIxNSwKICBrRUVYSVNURXJyID0gLTMyMTYsCiAga0VO
T0RFVkVyciA9IC0zMjE4LAogIGtFSU5WQUxFcnIgPSAtMzIyMSwKICBrRU5PVFRZRXJyID0gLTMy
MjQsCiAga0VQSVBFRXJyID0gLTMyMzEsCiAga0VSQU5HRUVyciA9IC0zMjMzLAogIGtFV09VTERC
TE9DS0VyciA9IC0zMjM0LAogIGtFREVBRExLRXJyID0gLTMyMzQsCiAga0VBTFJFQURZRXJyID0g
LTMyMzYsCiAga0VOT1RTT0NLRXJyID0gLTMyMzcsCiAga0VERVNUQUREUlJFUUVyciA9IC0zMjM4
LAogIGtFTVNHU0laRUVyciA9IC0zMjM5LAogIGtFUFJPVE9UWVBFRXJyID0gLTMyNDAsCiAga0VO
T1BST1RPT1BURXJyID0gLTMyNDEsCiAga0VQUk9UT05PU1VQUE9SVEVyciA9IC0zMjQyLAogIGtF
U09DS1ROT1NVUFBPUlRFcnIgPSAtMzI0MywKICBrRU9QTk9UU1VQUEVyciA9IC0zMjQ0LAogIGtF
QUREUklOVVNFRXJyID0gLTMyNDcsCiAga0VBRERSTk9UQVZBSUxFcnIgPSAtMzI0OCwKICBrRU5F
VERPV05FcnIgPSAtMzI0OSwKICBrRU5FVFVOUkVBQ0hFcnIgPSAtMzI1MCwKICBrRU5FVFJFU0VU
RXJyID0gLTMyNTEsCiAga0VDT05OQUJPUlRFREVyciA9IC0zMjUyLAogIGtFQ09OTlJFU0VURXJy
ID0gLTMyNTMsCiAga0VOT0JVRlNFcnIgPSAtMzI1NCwKICBrRUlTQ09OTkVyciA9IC0zMjU1LAog
IGtFTk9UQ09OTkVyciA9IC0zMjU2LAogIGtFU0hVVERPV05FcnIgPSAtMzI1NywKICBrRVRPT01B
TllSRUZTRXJyID0gLTMyNTgsCiAga0VUSU1FRE9VVEVyciA9IC0zMjU5LAogIGtFQ09OTlJFRlVT
RURFcnIgPSAtMzI2MCwKICBrRUhPU1RET1dORXJyID0gLTMyNjMsCiAga0VIT1NUVU5SRUFDSEVy
ciA9IC0zMjY0LAogIGtFUFJPVE9FcnIgPSAtMzI2OSwKICBrRVRJTUVFcnIgPSAtMzI3MCwKICBr
RU5PU1JFcnIgPSAtMzI3MSwKICBrRUJBRE1TR0VyciA9IC0zMjcyLAogIGtFQ0FOQ0VMRXJyID0g
LTMyNzMsCiAga0VOT1NUUkVyciA9IC0zMjc0LAogIGtFTk9EQVRBRXJyID0gLTMyNzUsCiAga0VJ
TlBST0dSRVNTRXJyID0gLTMyNzYsCiAga0VTUkNIRXJyID0gLTMyNzcsCiAga0VOT01TR0VyciA9
IC0zMjc4LAogIGtPVENsaWVudE5vdEluaXR0ZWRFcnIgPSAtMzI3OSwKICBrT1RQb3J0SGFzRGll
ZEVyciA9IC0zMjgwLAogIGtPVFBvcnRXYXNFamVjdGVkRXJyID0gLTMyODEsCiAga09UQmFkQ29u
ZmlndXJhdGlvbkVyciA9IC0zMjgyLAogIGtPVENvbmZpZ3VyYXRpb25DaGFuZ2VkRXJyID0gLTMy
ODMsCiAga09UVXNlclJlcXVlc3RlZEVyciA9IC0zMjg0LAogIGtPVFBvcnRMb3N0Q29ubmVjdGlv
biA9IC0zMjg1Cn07CgoKCmVudW0gewogIGtRRE5vUGFsZXR0ZSA9IC0zOTUwLAogIGtRRE5vQ29s
b3JIV0N1cnNvclN1cHBvcnQgPSAtMzk1MSwKICBrUURDdXJzb3JBbHJlYWR5UmVnaXN0ZXJlZCA9
IC0zOTUyLAogIGtRREN1cnNvck5vdFJlZ2lzdGVyZWQgPSAtMzk1MywKICBrUURDb3JydXB0UElD
VERhdGFFcnIgPSAtMzk1NAp9OwoKCgoKZW51bSB7CiAgZmlyc3RQaWNrZXJFcnJvciA9IC00MDAw
LAogIGludmFsaWRQaWNrZXJUeXBlID0gZmlyc3RQaWNrZXJFcnJvciwKICByZXF1aXJlZEZsYWdz
RG9udE1hdGNoID0gLTQwMDEsCiAgcGlja2VyUmVzb3VyY2VFcnJvciA9IC00MDAyLAogIGNhbnRM
b2FkUGlja2VyID0gLTQwMDMsCiAgY2FudENyZWF0ZVBpY2tlcldpbmRvdyA9IC00MDA0LAogIGNh
bnRMb2FkUGFja2FnZSA9IC00MDA1LAogIHBpY2tlckNhbnRMaXZlID0gLTQwMDYsCiAgY29sb3JT
eW5jTm90SW5zdGFsbGVkID0gLTQwMDcsCiAgYmFkUHJvZmlsZUVycm9yID0gLTQwMDgsCiAgbm9I
ZWxwRm9ySXRlbSA9IC00MDA5Cn07CgoKCgplbnVtIHsKICBrTlNMNjhrQ29udGV4dE5vdFN1cHBv
cnRlZCA9IC00MTcwLAogIGtOU0xTY2hlZHVsZXJFcnJvciA9IC00MTcxLAogIGtOU0xCYWRVUkxT
eW50YXggPSAtNDE3MiwKICBrTlNMTm9DYXJib25MaWIgPSAtNDE3MywKICBrTlNMVUlMaWJyYXJ5
Tm90QXZhaWxhYmxlID0gLTQxNzQsCiAga05TTE5vdEltcGxlbWVudGVkWWV0ID0gLTQxNzUsCiAg
a05TTEVyck51bGxQdHJFcnJvciA9IC00MTc2LAogIGtOU0xTb21lUGx1Z2luc0ZhaWxlZFRvTG9h
ZCA9IC00MTc3LAogIGtOU0xOdWxsTmVpZ2hib3Job29kUHRyID0gLTQxNzgsCiAga05TTE5vUGx1
Z2luc0ZvclNlYXJjaCA9IC00MTc5LAogIGtOU0xTZWFyY2hBbHJlYWR5SW5Qcm9ncmVzcyA9IC00
MTgwLAogIGtOU0xOb1BsdWdpbnNGb3VuZCA9IC00MTgxLAogIGtOU0xQbHVnaW5Mb2FkRmFpbGVk
ID0gLTQxODIsCiAga05TTEJhZFByb3RvY29sVHlwZUVyciA9IC00MTgzLAogIGtOU0xOdWxsTGlz
dFB0ciA9IC00MTg0LAogIGtOU0xCYWRDbGllbnRJbmZvUHRyID0gLTQxODUsCiAga05TTENhbm5v
dENvbnRpbnVlTG9va3VwID0gLTQxODYsCiAga05TTEJ1ZmZlclRvb1NtYWxsRm9yRGF0YSA9IC00
MTg3LAogIGtOU0xOb0NvbnRleHRBdmFpbGFibGUgPSAtNDE4OCwKICBrTlNMUmVxdWVzdEJ1ZmZl
ckFscmVhZHlJbkxpc3QgPSAtNDE4OSwKICBrTlNMSW52YWxpZFBsdWdpblNwZWMgPSAtNDE5MCwK
ICBrTlNMTm9TdXBwb3J0Rm9yU2VydmljZSA9IC00MTkxLAogIGtOU0xCYWROZXRDb25uZWN0aW9u
ID0gLTQxOTIsCiAga05TTEJhZERhdGFUeXBlRXJyID0gLTQxOTMsCiAga05TTEJhZFNlcnZpY2VU
eXBlRXJyID0gLTQxOTQsCiAga05TTEJhZFJlZmVyZW5jZUVyciA9IC00MTk1LAogIGtOU0xOb0Vs
ZW1lbnRzSW5MaXN0ID0gLTQxOTYsCiAga05TTEluc3VmZmljaWVudE9UVmVyID0gLTQxOTcsCiAg
a05TTEluc3VmZmljaWVudFN5c1ZlciA9IC00MTk4LAogIGtOU0xOb3RJbml0aWFsaXplZCA9IC00
MTk5LAogIGtOU0xJbml0aWFsaXphdGlvbkZhaWxlZCA9IC00MjAwCn07CgoKCgplbnVtIHsKICBr
RFRQSG9sZEpvYkVyciA9IC00MjAwLAogIGtEVFBTdG9wUXVldWVFcnIgPSAtNDIwMSwKICBrRFRQ
VHJ5QWdhaW5FcnIgPSAtNDIwMiwKICBrRFRQQWJvcnRKb2JFcnIgPSAxMjgKfTsKCgoKZW51bSB7
CgogIGNtRWxlbWVudFRhZ05vdEZvdW5kID0gLTQyMDAsCiAgY21JbmRleFJhbmdlRXJyID0gLTQy
MDEsCiAgY21DYW50RGVsZXRlRWxlbWVudCA9IC00MjAyLAogIGNtRmF0YWxQcm9maWxlRXJyID0g
LTQyMDMsCiAgY21JbnZhbGlkUHJvZmlsZSA9IC00MjA0LAogIGNtSW52YWxpZFByb2ZpbGVMb2Nh
dGlvbiA9IC00MjA1LAogIGNtQ2FudENvcHlNb2RpZmllZFYxUHJvZmlsZSA9IC00MjE1LAoKICBj
bUludmFsaWRTZWFyY2ggPSAtNDIwNiwKICBjbVNlYXJjaEVycm9yID0gLTQyMDcsCiAgY21FcnJJ
bmNvbXBhdGlibGVQcm9maWxlID0gLTQyMDgsCiAgY21JbnZhbGlkQ29sb3JTcGFjZSA9IC00MjA5
LAogIGNtSW52YWxpZFNyY01hcCA9IC00MjEwLAogIGNtSW52YWxpZERzdE1hcCA9IC00MjExLAog
IGNtTm9HRGV2aWNlc0Vycm9yID0gLTQyMTIsCiAgY21JbnZhbGlkUHJvZmlsZUNvbW1lbnQgPSAt
NDIxMywKICBjbVJhbmdlT3ZlckZsb3cgPSAtNDIxNCwKICBjbU5hbWVkQ29sb3JOb3RGb3VuZCA9
IC00MjE2LAogIGNtQ2FudEdhbXV0Q2hlY2tFcnJvciA9IC00MjE3Cn07CgoKZW51bSB7CiAgYmFk
Rm9sZGVyRGVzY0VyciA9IC00MjcwLAogIGR1cGxpY2F0ZUZvbGRlckRlc2NFcnIgPSAtNDI3MSwK
ICBub01vcmVGb2xkZXJEZXNjRXJyID0gLTQyNzIsCiAgaW52YWxpZEZvbGRlclR5cGVFcnIgPSAt
NDI3MywKICBkdXBsaWNhdGVSb3V0aW5nRXJyID0gLTQyNzQsCiAgcm91dGluZ05vdEZvdW5kRXJy
ID0gLTQyNzUsCiAgYmFkUm91dGluZ1NpemVFcnIgPSAtNDI3Ngp9OwoKCgplbnVtIHsKICBjb3Jl
Rm91bmRhdGlvblVua25vd25FcnIgPSAtNDk2MAp9OwoKCmVudW0gewogIGVyckNvcmVFbmRpYW5E
YXRhVG9vU2hvcnRGb3JGb3JtYXQgPSAtNDk0MCwKICBlcnJDb3JlRW5kaWFuRGF0YVRvb0xvbmdG
b3JGb3JtYXQgPSAtNDk0MSwKICBlcnJDb3JlRW5kaWFuRGF0YURvZXNOb3RNYXRjaEZvcm1hdCA9
IC00OTQyCn07CgoKCmVudW0gewogIGludGVybmFsU2NyYXBFcnIgPSAtNDk4OCwKICBkdXBsaWNh
dGVTY3JhcEZsYXZvckVyciA9IC00OTg5LAogIGJhZFNjcmFwUmVmRXJyID0gLTQ5OTAsCiAgcHJv
Y2Vzc1N0YXRlSW5jb3JyZWN0RXJyID0gLTQ5OTEsCiAgc2NyYXBQcm9taXNlTm90S2VwdEVyciA9
IC00OTkyLAogIG5vU2NyYXBQcm9taXNlS2VlcGVyRXJyID0gLTQ5OTMsCiAgbmlsU2NyYXBGbGF2
b3JEYXRhRXJyID0gLTQ5OTQsCiAgc2NyYXBGbGF2b3JGbGFnc01pc21hdGNoRXJyID0gLTQ5OTUs
CiAgc2NyYXBGbGF2b3JTaXplTWlzbWF0Y2hFcnIgPSAtNDk5NiwKICBpbGxlZ2FsU2NyYXBGbGF2
b3JGbGFnc0VyciA9IC00OTk3LAogIGlsbGVnYWxTY3JhcEZsYXZvclR5cGVFcnIgPSAtNDk5OCwK
ICBpbGxlZ2FsU2NyYXBGbGF2b3JTaXplRXJyID0gLTQ5OTksCiAgc2NyYXBGbGF2b3JOb3RGb3Vu
ZEVyciA9IC0xMDIsCiAgbmVlZENsZWFyU2NyYXBFcnIgPSAtMTAwCn07CgoKZW51bSB7CgogIGFm
cEFjY2Vzc0RlbmllZCA9IC01MDAwLAogIGFmcEF1dGhDb250aW51ZSA9IC01MDAxLAogIGFmcEJh
ZFVBTSA9IC01MDAyLAogIGFmcEJhZFZlcnNOdW0gPSAtNTAwMywKICBhZnBCaXRtYXBFcnIgPSAt
NTAwNCwKICBhZnBDYW50TW92ZSA9IC01MDA1LAogIGFmcERlbnlDb25mbGljdCA9IC01MDA2LAog
IGFmcERpck5vdEVtcHR5ID0gLTUwMDcsCiAgYWZwRGlza0Z1bGwgPSAtNTAwOCwKICBhZnBFb2ZF
cnJvciA9IC01MDA5LAogIGFmcEZpbGVCdXN5ID0gLTUwMTAsCiAgYWZwRmxhdFZvbCA9IC01MDEx
LAogIGFmcEl0ZW1Ob3RGb3VuZCA9IC01MDEyLAogIGFmcExvY2tFcnIgPSAtNTAxMywKICBhZnBN
aXNjRXJyID0gLTUwMTQsCiAgYWZwTm9Nb3JlTG9ja3MgPSAtNTAxNSwKICBhZnBOb1NlcnZlciA9
IC01MDE2LAogIGFmcE9iamVjdEV4aXN0cyA9IC01MDE3LAogIGFmcE9iamVjdE5vdEZvdW5kID0g
LTUwMTgsCiAgYWZwUGFybUVyciA9IC01MDE5LAogIGFmcFJhbmdlTm90TG9ja2VkID0gLTUwMjAs
CiAgYWZwUmFuZ2VPdmVybGFwID0gLTUwMjEsCiAgYWZwU2Vzc0Nsb3NlZCA9IC01MDIyLAogIGFm
cFVzZXJOb3RBdXRoID0gLTUwMjMsCiAgYWZwQ2FsbE5vdFN1cHBvcnRlZCA9IC01MDI0LAogIGFm
cE9iamVjdFR5cGVFcnIgPSAtNTAyNSwKICBhZnBUb29NYW55RmlsZXNPcGVuID0gLTUwMjYsCiAg
YWZwU2VydmVyR29pbmdEb3duID0gLTUwMjcsCiAgYWZwQ2FudFJlbmFtZSA9IC01MDI4LAogIGFm
cERpck5vdEZvdW5kID0gLTUwMjksCiAgYWZwSWNvblR5cGVFcnJvciA9IC01MDMwLAogIGFmcFZv
bExvY2tlZCA9IC01MDMxLAogIGFmcE9iamVjdExvY2tlZCA9IC01MDMyLAogIGFmcENvbnRhaW5z
U2hhcmVkRXJyID0gLTUwMzMsCiAgYWZwSUROb3RGb3VuZCA9IC01MDM0LAogIGFmcElERXhpc3Rz
ID0gLTUwMzUsCiAgYWZwRGlmZlZvbEVyciA9IC01MDM2LAogIGFmcENhdGFsb2dDaGFuZ2VkID0g
LTUwMzcsCiAgYWZwU2FtZU9iamVjdEVyciA9IC01MDM4LAogIGFmcEJhZElERXJyID0gLTUwMzks
CiAgYWZwUHdkU2FtZUVyciA9IC01MDQwLAogIGFmcFB3ZFRvb1Nob3J0RXJyID0gLTUwNDEsCiAg
YWZwUHdkRXhwaXJlZEVyciA9IC01MDQyLAogIGFmcEluc2lkZVNoYXJlZEVyciA9IC01MDQzLAoK
ICBhZnBJbnNpZGVUcmFzaEVyciA9IC01MDQ0LAoKICBhZnBQd2ROZWVkc0NoYW5nZUVyciA9IC01
MDQ1LAogIGFmcFB3ZFBvbGljeUVyciA9IC01MDQ2LAogIGFmcEFscmVhZHlMb2dnZWRJbkVyciA9
IC01MDQ3LAogIGFmcENhbGxOb3RBbGxvd2VkID0gLTUwNDgKfTsKCmVudW0gewoKICBhZnBCYWRE
aXJJRFR5cGUgPSAtNTA2MCwKICBhZnBDYW50TW91bnRNb3JlU3J2cmUgPSAtNTA2MSwKICBhZnBB
bHJlYWR5TW91bnRlZCA9IC01MDYyLAogIGFmcFNhbWVOb2RlRXJyID0gLTUwNjMKfTsKCgoKCgoK
ZW51bSB7CiAgbnVtYmVyRm9ybWF0dGluZ05vdEFOdW1iZXJFcnIgPSAtNTIwMCwKICBudW1iZXJG
b3JtYXR0aW5nT3ZlcmZsb3dJbkRlc3RpbmF0aW9uRXJyID0gLTUyMDEsCiAgbnVtYmVyRm9ybWF0
dGluZ0JhZE51bWJlckZvcm1hdHRpbmdPYmplY3RFcnIgPSAtNTIwMiwKICBudW1iZXJGb3JtYXR0
aW5nU3B1cmlvdXNDaGFyRXJyID0gLTUyMDMsCiAgbnVtYmVyRm9ybWF0dGluZ0xpdGVyYWxNaXNz
aW5nRXJyID0gLTUyMDQsCiAgbnVtYmVyRm9ybWF0dGluZ0RlbGltaXRlck1pc3NpbmdFcnIgPSAt
NTIwNSwKICBudW1iZXJGb3JtYXR0aW5nRW1wdHlGb3JtYXRFcnIgPSAtNTIwNiwKICBudW1iZXJG
b3JtYXR0aW5nQmFkRm9ybWF0RXJyID0gLTUyMDcsCiAgbnVtYmVyRm9ybWF0dGluZ0JhZE9wdGlv
bnNFcnIgPSAtNTIwOCwKICBudW1iZXJGb3JtYXR0aW5nQmFkVG9rZW5FcnIgPSAtNTIwOSwKICBu
dW1iZXJGb3JtYXR0aW5nVW5PcmRlcmVkQ3VycmVuY3lSYW5nZUVyciA9IC01MjEwLAogIG51bWJl
ckZvcm1hdHRpbmdCYWRDdXJyZW5jeVBvc2l0aW9uRXJyID0gLTUyMTEsCiAgbnVtYmVyRm9ybWF0
dGluZ05vdEFEaWdpdEVyciA9IC01MjEyLAogIG51bWJlckZvcm1hdHRpbmdVbk9yZHJlZEN1cnJl
bmN5UmFuZ2VFcnIgPSAtNTIxMCwKICBudW1iZXJGb3J0bWF0dGluZ05vdEFEaWdpdEVyciA9IC01
MjEyCn07CgoKZW51bSB7CiAgdGV4dFBhcnNlckJhZFBhcmFtRXJyID0gLTUyMjAsCiAgdGV4dFBh
cnNlck9iamVjdE5vdEZvdW5kRXJyID0gLTUyMjEsCiAgdGV4dFBhcnNlckJhZFRva2VuVmFsdWVF
cnIgPSAtNTIyMiwKICB0ZXh0UGFyc2VyQmFkUGFyc2VyT2JqZWN0RXJyID0gLTUyMjMsCiAgdGV4
dFBhcnNlclBhcmFtRXJyID0gLTUyMjQsCiAgdGV4dFBhcnNlck5vTW9yZVRleHRFcnIgPSAtNTIy
NSwKICB0ZXh0UGFyc2VyQmFkVGV4dExhbmd1YWdlRXJyID0gLTUyMjYsCiAgdGV4dFBhcnNlckJh
ZFRleHRFbmNvZGluZ0VyciA9IC01MjI3LAogIHRleHRQYXJzZXJOb1N1Y2hUb2tlbkZvdW5kRXJy
ID0gLTUyMjgsCiAgdGV4dFBhcnNlck5vTW9yZVRva2Vuc0VyciA9IC01MjI5Cn07CgplbnVtIHsK
ICBlcnJVbmtub3duQXR0cmlidXRlVGFnID0gLTUyNDAsCiAgZXJyTWFyZ2luV2lsbGxOb3RGaXQg
PSAtNTI0MSwKICBlcnJOb3RJbkltYWdpbmdNb2RlID0gLTUyNDIsCiAgZXJyQWxyZWFkeUluSW1h
Z2luZ01vZGUgPSAtNTI0MywKICBlcnJFbmdpbmVOb3RGb3VuZCA9IC01MjQ0LAogIGVyckl0ZXJh
dG9yUmVhY2hlZEVuZCA9IC01MjQ1LAogIGVyckludmFsaWRSYW5nZSA9IC01MjQ2LAogIGVyck9m
ZnNldE5vdE9uRWxlbWVudEJvdW5kYXkgPSAtNTI0NywKICBlcnJOb0hpbGl0ZVRleHQgPSAtNTI0
OCwKICBlcnJFbXB0eVNjcmFwID0gLTUyNDksCiAgZXJyUmVhZE9ubHlUZXh0ID0gLTUyNTAsCiAg
ZXJyVW5rbm93bkVsZW1lbnQgPSAtNTI1MSwKICBlcnJOb25Db250aXVvdXNBdHRyaWJ1dGUgPSAt
NTI1MiwKICBlcnJDYW5ub3RVbmRvID0gLTUyNTMKfTsKCgoKZW51bSB7CiAgaHJIVE1MUmVuZGVy
aW5nTGliTm90SW5zdGFsbGVkRXJyID0gLTUzNjAsCiAgaHJNaXNjZWxsYW5lb3VzRXhjZXB0aW9u
RXJyID0gLTUzNjEsCiAgaHJVbmFibGVUb1Jlc2l6ZUhhbmRsZUVyciA9IC01MzYyLAogIGhyVVJM
Tm90SGFuZGxlZEVyciA9IC01MzYzCn07CgoKCmVudW0gewogIGVycklBTm9FcnIgPSAwLAogIGVy
cklBVW5rbm93bkVyciA9IC01MzgwLAogIGVycklBQWxsb2NhdGlvbkVyciA9IC01MzgxLAogIGVy
cklBUGFyYW1FcnIgPSAtNTM4MiwKICBlcnJJQU5vTW9yZUl0ZW1zID0gLTUzODMsCiAgZXJySUFC
dWZmZXJUb29TbWFsbCA9IC01Mzg0LAogIGVycklBQ2FuY2VsZWQgPSAtNTM4NSwKICBlcnJJQUlu
dmFsaWREb2N1bWVudCA9IC01Mzg2LAogIGVycklBVGV4dEV4dHJhY3Rpb25FcnIgPSAtNTM4NywK
ICBlcnJJQUVuZE9mVGV4dFJ1biA9IC01Mzg4Cn07CgoKCmVudW0gewogIHF0c0JhZFNlbGVjdG9y
RXJyID0gLTU0MDAsCiAgcXRzQmFkU3RhdGVFcnIgPSAtNTQwMSwKICBxdHNCYWREYXRhRXJyID0g
LTU0MDIsCiAgcXRzVW5zdXBwb3J0ZWREYXRhVHlwZUVyciA9IC01NDAzLAogIHF0c1Vuc3VwcG9y
dGVkUmF0ZUVyciA9IC01NDA0LAogIHF0c1Vuc3VwcG9ydGVkRmVhdHVyZUVyciA9IC01NDA1LAog
IHF0c1Rvb011Y2hEYXRhRXJyID0gLTU0MDYsCiAgcXRzVW5rbm93blZhbHVlRXJyID0gLTU0MDcs
CiAgcXRzVGltZW91dEVyciA9IC01NDA4LAogIHF0c0Nvbm5lY3Rpb25GYWlsZWRFcnIgPSAtNTQy
MCwKICBxdHNBZGRyZXNzQnVzeUVyciA9IC01NDIxCn07CgoKZW51bSB7CgogIGdlc3RhbHRVbmtu
b3duRXJyID0gLTU1NTAsCiAgZ2VzdGFsdFVuZGVmU2VsZWN0b3JFcnIgPSAtNTU1MSwKICBnZXN0
YWx0RHVwU2VsZWN0b3JFcnIgPSAtNTU1MiwKICBnZXN0YWx0TG9jYXRpb25FcnIgPSAtNTU1Mwp9
OwoKCgplbnVtIHsKICBtZW51UHJvcGVydHlJbnZhbGlkRXJyID0gLTU2MDMsCiAgbWVudVByb3Bl
cnR5SW52YWxpZCA9IG1lbnVQcm9wZXJ0eUludmFsaWRFcnIsCiAgbWVudVByb3BlcnR5Tm90Rm91
bmRFcnIgPSAtNTYwNCwKICBtZW51Tm90Rm91bmRFcnIgPSAtNTYyMCwKICBtZW51VXNlc1N5c3Rl
bURlZkVyciA9IC01NjIxLAogIG1lbnVJdGVtTm90Rm91bmRFcnIgPSAtNTYyMiwKICBtZW51SW52
YWxpZEVyciA9IC01NjIzCn07CgoKCmVudW0gewogIGVyckludmFsaWRXaW5kb3dQdHIgPSAtNTYw
MCwKICBlcnJJbnZhbGlkV2luZG93UmVmID0gLTU2MDAsCiAgZXJyVW5zdXBwb3J0ZWRXaW5kb3dB
dHRyaWJ1dGVzRm9yQ2xhc3MgPSAtNTYwMSwKICBlcnJXaW5kb3dEb2VzTm90SGF2ZVByb3h5ID0g
LTU2MDIsCiAgZXJySW52YWxpZFdpbmRvd1Byb3BlcnR5ID0gLTU2MDMsCiAgZXJyV2luZG93UHJv
cGVydHlOb3RGb3VuZCA9IC01NjA0LAogIGVyclVucmVjb2duaXplZFdpbmRvd0NsYXNzID0gLTU2
MDUsCiAgZXJyQ29ycnVwdFdpbmRvd0Rlc2NyaXB0aW9uID0gLTU2MDYsCiAgZXJyVXNlcldhbnRz
VG9EcmFnV2luZG93ID0gLTU2MDcsCiAgZXJyV2luZG93c0FscmVhZHlJbml0aWFsaXplZCA9IC01
NjA4LAogIGVyckZsb2F0aW5nV2luZG93c05vdEluaXRpYWxpemVkID0gLTU2MDksCiAgZXJyV2lu
ZG93Tm90Rm91bmQgPSAtNTYxMCwKICBlcnJXaW5kb3dEb2VzTm90Rml0T25zY3JlZW4gPSAtNTYx
MSwKICB3aW5kb3dBdHRyaWJ1dGVJbW11dGFibGVFcnIgPSAtNTYxMiwKICB3aW5kb3dBdHRyaWJ1
dGVzQ29uZmxpY3RFcnIgPSAtNTYxMywKICB3aW5kb3dNYW5hZ2VySW50ZXJuYWxFcnIgPSAtNTYx
NCwKICB3aW5kb3dXcm9uZ1N0YXRlRXJyID0gLTU2MTUsCiAgd2luZG93R3JvdXBJbnZhbGlkRXJy
ID0gLTU2MTYsCiAgd2luZG93QXBwTW9kYWxTdGF0ZUFscmVhZHlFeGlzdHNFcnIgPSAtNTYxNywK
ICB3aW5kb3dOb0FwcE1vZGFsU3RhdGVFcnIgPSAtNTYxOCwKICBlcnJXaW5kb3dEb2VzbnRTdXBw
b3J0Rm9jdXMgPSAtMzA1ODMsCiAgZXJyV2luZG93UmVnaW9uQ29kZUludmFsaWQgPSAtMzA1OTMK
fTsKCgoKZW51bSB7CiAgZGlhbG9nTm9UaW1lb3V0RXJyID0gLTU2NDAKfTsKCgoKZW51bSB7CiAg
a05hdldyb25nRGlhbG9nU3RhdGVFcnIgPSAtNTY5NCwKICBrTmF2V3JvbmdEaWFsb2dDbGFzc0Vy
ciA9IC01Njk1LAogIGtOYXZJbnZhbGlkU3lzdGVtQ29uZmlnRXJyID0gLTU2OTYsCiAga05hdkN1
c3RvbUNvbnRyb2xNZXNzYWdlRmFpbGVkRXJyID0gLTU2OTcsCiAga05hdkludmFsaWRDdXN0b21D
b250cm9sTWVzc2FnZUVyciA9IC01Njk4LAogIGtOYXZNaXNzaW5nS2luZFN0cmluZ0VyciA9IC01
Njk5Cn07CgoKCmVudW0gewogIGNvbGxlY3Rpb25JdGVtTG9ja2VkRXJyID0gLTU3NTAsCiAgY29s
bGVjdGlvbkl0ZW1Ob3RGb3VuZEVyciA9IC01NzUxLAogIGNvbGxlY3Rpb25JbmRleFJhbmdlRXJy
ID0gLTU3NTIsCiAgY29sbGVjdGlvblZlcnNpb25FcnIgPSAtNTc1Mwp9OwoKCgplbnVtIHsKICBr
UVRTU1Vua25vd25FcnIgPSAtNjE1MAp9OwoKCmVudW0gewoKICBrRE1HZW5FcnIgPSAtNjIyMCwK
CiAga0RNTWlycm9yaW5nT25BbHJlYWR5ID0gLTYyMjEsCiAga0RNV3JvbmdOdW1iZXJPZkRpc3Bs
YXlzID0gLTYyMjIsCiAga0RNTWlycm9yaW5nQmxvY2tlZCA9IC02MjIzLAogIGtETUNhbnRCbG9j
ayA9IC02MjI0LAogIGtETU1pcnJvcmluZ05vdE9uID0gLTYyMjUsCgogIGtTeXNTV1Rvb09sZCA9
IC02MjI2LAogIGtETVNXTm90SW5pdGlhbGl6ZWRFcnIgPSAtNjIyNywKICBrRE1Ecml2ZXJOb3RE
aXNwbGF5TWdyQXdhcmVFcnIgPSAtNjIyOCwKICBrRE1EaXNwbGF5Tm90Rm91bmRFcnIgPSAtNjIy
OSwKICBrRE1Ob3RGb3VuZEVyciA9IC02MjI5LAogIGtETURpc3BsYXlBbHJlYWR5SW5zdGFsbGVk
RXJyID0gLTYyMzAsCiAga0RNTWFpbkRpc3BsYXlDYW5ub3RNb3ZlRXJyID0gLTYyMzEsCiAga0RN
Tm9EZXZpY2VUYWJsZWNsb3RoRXJyID0gLTYyMzEsCiAga0RNRm91bmRFcnIgPSAtNjIzMgp9OwoK
CgoKCmVudW0gewogIGxhVG9vU21hbGxCdWZmZXJFcnIgPSAtNjk4NCwKICBsYUVudmlyb25tZW50
QnVzeUVyciA9IC02OTg1LAogIGxhRW52aXJvbm1lbnROb3RGb3VuZEVyciA9IC02OTg2LAogIGxh
RW52aXJvbm1lbnRFeGlzdEVyciA9IC02OTg3LAogIGxhSW52YWxpZFBhdGhFcnIgPSAtNjk4OCwK
ICBsYU5vTW9yZU1vcnBoZW1lRXJyID0gLTY5ODksCiAgbGFGYWlsQW5hbHlzaXNFcnIgPSAtNjk5
MCwKICBsYVRleHRPdmVyRmxvd0VyciA9IC02OTkxLAogIGxhRGljdGlvbmFyeU5vdE9wZW5lZEVy
ciA9IC02OTkyLAogIGxhRGljdGlvbmFyeVVua25vd25FcnIgPSAtNjk5MywKICBsYURpY3Rpb25h
cnlUb29NYW55RXJyID0gLTY5OTQsCiAgbGFQcm9wZXJ0eVZhbHVlRXJyID0gLTY5OTUsCiAgbGFQ
cm9wZXJ0eVVua25vd25FcnIgPSAtNjk5NiwKICBsYVByb3BlcnR5SXNSZWFkT25seUVyciA9IC02
OTk3LAogIGxhUHJvcGVydHlOb3RGb3VuZEVyciA9IC02OTk4LAogIGxhUHJvcGVydHlFcnIgPSAt
Njk5OSwKICBsYUVuZ2luZU5vdEZvdW5kRXJyID0gLTcwMDAKfTsKCgplbnVtIHsKICBrVVNCTm9F
cnIgPSAwLAogIGtVU0JOb1RyYW4gPSAwLAogIGtVU0JOb0RlbGF5ID0gMCwKICBrVVNCUGVuZGlu
ZyA9IDEKfTsKIyAxODA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNFcnJv
cnMuaCIgMwplbnVtIHsKICBrVVNCTm90U2VudDJFcnIgPSAtNjkwMSwKICBrVVNCTm90U2VudDFF
cnIgPSAtNjkwMiwKICBrVVNCQnVmVW5kZXJSdW5FcnIgPSAtNjkwMywKICBrVVNCQnVmT3ZyUnVu
RXJyID0gLTY5MDQsCiAga1VTQlJlczJFcnIgPSAtNjkwNSwKICBrVVNCUmVzMUVyciA9IC02OTA2
LAogIGtVU0JVbmRlclJ1bkVyciA9IC02OTA3LAogIGtVU0JPdmVyUnVuRXJyID0gLTY5MDgsCiAg
a1VTQldyb25nUElERXJyID0gLTY5MDksCiAga1VTQlBJRENoZWNrRXJyID0gLTY5MTAsCiAga1VT
Qk5vdFJlc3BvbmRpbmdFcnIgPSAtNjkxMSwKICBrVVNCRW5kcG9pbnRTdGFsbEVyciA9IC02OTEy
LAogIGtVU0JEYXRhVG9nZ2xlRXJyID0gLTY5MTMsCiAga1VTQkJpdHN0dWZFcnIgPSAtNjkxNCwK
ICBrVVNCQ1JDRXJyID0gLTY5MTUsCiAga1VTQkxpbmtFcnIgPSAtNjkxNgp9OwoKCgoKCgplbnVt
IHsKICBrVVNCUXVldWVGdWxsID0gLTY5NDgsCiAga1VTQk5vdEhhbmRsZWQgPSAtNjk4NywKICBr
VVNCVW5rbm93bk5vdGlmaWNhdGlvbiA9IC02OTQ5LAogIGtVU0JCYWREaXNwYXRjaFRhYmxlID0g
LTY5NTAKfTsKCgoKCgoKCmVudW0gewogIGtVU0JJbnRlcm5hbFJlc2VydmVkMTAgPSAtNjk1MSwK
ICBrVVNCSW50ZXJuYWxSZXNlcnZlZDkgPSAtNjk1MiwKICBrVVNCSW50ZXJuYWxSZXNlcnZlZDgg
PSAtNjk1MywKICBrVVNCSW50ZXJuYWxSZXNlcnZlZDcgPSAtNjk1NCwKICBrVVNCSW50ZXJuYWxS
ZXNlcnZlZDYgPSAtNjk1NSwKICBrVVNCSW50ZXJuYWxSZXNlcnZlZDUgPSAtNjk1NiwKICBrVVNC
SW50ZXJuYWxSZXNlcnZlZDQgPSAtNjk1NywKICBrVVNCSW50ZXJuYWxSZXNlcnZlZDMgPSAtNjk1
OCwKICBrVVNCSW50ZXJuYWxSZXNlcnZlZDIgPSAtNjk1OSwKICBrVVNCSW50ZXJuYWxSZXNlcnZl
ZDEgPSAtNjk2MAp9OwoKCmVudW0gewogIGtVU0JQb3J0RGlzYWJsZWQgPSAtNjk2OSwKICBrVVNC
UXVldWVBYm9ydGVkID0gLTY5NzAsCiAga1VTQlRpbWVkT3V0ID0gLTY5NzEsCiAga1VTQkRldmlj
ZURpc2Nvbm5lY3RlZCA9IC02OTcyLAogIGtVU0JEZXZpY2VOb3RTdXNwZW5kZWQgPSAtNjk3MywK
ICBrVVNCRGV2aWNlU3VzcGVuZGVkID0gLTY5NzQsCiAga1VTQkludmFsaWRCdWZmZXIgPSAtNjk3
NSwKICBrVVNCRGV2aWNlUG93ZXJQcm9ibGVtID0gLTY5NzYsCiAga1VTQkRldmljZUJ1c3kgPSAt
Njk3NywKICBrVVNCVW5rbm93bkludGVyZmFjZUVyciA9IC02OTc4LAogIGtVU0JQaXBlU3RhbGxl
ZEVycm9yID0gLTY5NzksCiAga1VTQlBpcGVJZGxlRXJyb3IgPSAtNjk4MCwKICBrVVNCTm9CYW5k
d2lkdGhFcnJvciA9IC02OTgxLAogIGtVU0JBYm9ydGVkRXJyb3IgPSAtNjk4MiwKICBrVVNCRmxh
Z3NFcnJvciA9IC02OTgzLAogIGtVU0JDb21wbGV0aW9uRXJyb3IgPSAtNjk4NCwKICBrVVNCUEJM
ZW5ndGhFcnJvciA9IC02OTg1LAogIGtVU0JQQlZlcnNpb25FcnJvciA9IC02OTg2LAogIGtVU0JO
b3RGb3VuZCA9IC02OTg3LAogIGtVU0JPdXRPZk1lbW9yeUVyciA9IC02OTg4LAogIGtVU0JEZXZp
Y2VFcnIgPSAtNjk4OSwKICBrVVNCTm9EZXZpY2VFcnIgPSAtNjk5MCwKICBrVVNCQWxyZWFkeU9w
ZW5FcnIgPSAtNjk5MSwKICBrVVNCVG9vTWFueVRyYW5zYWN0aW9uc0VyciA9IC02OTkyLAogIGtV
U0JVbmtub3duUmVxdWVzdEVyciA9IC02OTkzLAogIGtVU0JScUVyciA9IC02OTk0LAogIGtVU0JJ
bmNvcnJlY3RUeXBlRXJyID0gLTY5OTUsCiAga1VTQlRvb01hbnlQaXBlc0VyciA9IC02OTk2LAog
IGtVU0JVbmtub3duUGlwZUVyciA9IC02OTk3LAogIGtVU0JVbmtub3duRGV2aWNlRXJyID0gLTY5
OTgsCiAga1VTQkludGVybmFsRXJyID0gLTY5OTkKfTsKCgoKCgplbnVtIHsKICBkY21QYXJhbUVy
ciA9IC03MTAwLAogIGRjbU5vdERpY3Rpb25hcnlFcnIgPSAtNzEwMSwKICBkY21CYWREaWN0aW9u
YXJ5RXJyID0gLTcxMDIsCiAgZGNtUGVybWlzc2lvbkVyciA9IC03MTAzLAogIGRjbURpY3Rpb25h
cnlOb3RPcGVuRXJyID0gLTcxMDQsCiAgZGNtRGljdGlvbmFyeUJ1c3lFcnIgPSAtNzEwNSwKICBk
Y21CbG9ja0Z1bGxFcnIgPSAtNzEwNywKICBkY21Ob1JlY29yZEVyciA9IC03MTA4LAogIGRjbUR1
cFJlY29yZEVyciA9IC03MTA5LAogIGRjbU5lY2Vzc2FyeUZpZWxkRXJyID0gLTcxMTAsCiAgZGNt
QmFkRmllbGRJbmZvRXJyID0gLTcxMTEsCiAgZGNtQmFkRmllbGRUeXBlRXJyID0gLTcxMTIsCiAg
ZGNtTm9GaWVsZEVyciA9IC03MTEzLAogIGRjbUJhZEtleUVyciA9IC03MTE1LAogIGRjbVRvb01h
bnlLZXlFcnIgPSAtNzExNiwKICBkY21CYWREYXRhU2l6ZUVyciA9IC03MTE3LAogIGRjbUJhZEZp
bmRNZXRob2RFcnIgPSAtNzExOCwKICBkY21CYWRQcm9wZXJ0eUVyciA9IC03MTE5LAogIGRjbVBy
b3RlY3RlZEVyciA9IC03MTIxLAogIGRjbU5vQWNjZXNzTWV0aG9kRXJyID0gLTcxMjIsCiAgZGNt
QmFkRmVhdHVyZUVyciA9IC03MTI0LAogIGRjbUl0ZXJhdGlvbkNvbXBsZXRlRXJyID0gLTcxMjYs
CiAgZGNtQnVmZmVyT3ZlcmZsb3dFcnIgPSAtNzEyNwp9OwoKCgplbnVtIHsKICBrUkFJbnZhbGlk
UGFyYW1ldGVyID0gLTcxMDAsCiAga1JBSW52YWxpZFBvcnQgPSAtNzEwMSwKICBrUkFTdGFydHVw
RmFpbGVkID0gLTcxMDIsCiAga1JBUG9ydFNldHVwRmFpbGVkID0gLTcxMDMsCiAga1JBT3V0T2ZN
ZW1vcnkgPSAtNzEwNCwKICBrUkFOb3RTdXBwb3J0ZWQgPSAtNzEwNSwKICBrUkFNaXNzaW5nUmVz
b3VyY2VzID0gLTcxMDYsCiAga1JBSW5jb21wYXRpYmxlUHJlZnMgPSAtNzEwNywKICBrUkFOb3RD
b25uZWN0ZWQgPSAtNzEwOCwKICBrUkFDb25uZWN0aW9uQ2FuY2VsZWQgPSAtNzEwOSwKICBrUkFV
bmtub3duVXNlciA9IC03MTEwLAogIGtSQUludmFsaWRQYXNzd29yZCA9IC03MTExLAogIGtSQUlu
dGVybmFsRXJyb3IgPSAtNzExMiwKICBrUkFJbnN0YWxsYXRpb25EYW1hZ2VkID0gLTcxMTMsCiAg
a1JBUG9ydEJ1c3kgPSAtNzExNCwKICBrUkFVbmtub3duUG9ydFN0YXRlID0gLTcxMTUsCiAga1JB
SW52YWxpZFBvcnRTdGF0ZSA9IC03MTE2LAogIGtSQUludmFsaWRTZXJpYWxQcm90b2NvbCA9IC03
MTE3LAogIGtSQVVzZXJMb2dpbkRpc2FibGVkID0gLTcxMTgsCiAga1JBVXNlclB3ZENoYW5nZVJl
cXVpcmVkID0gLTcxMTksCiAga1JBVXNlclB3ZEVudHJ5UmVxdWlyZWQgPSAtNzEyMCwKICBrUkFV
c2VySW50ZXJhY3Rpb25SZXF1aXJlZCA9IC03MTIxLAogIGtSQUluaXRPcGVuVHJhbnNwb3J0RmFp
bGVkID0gLTcxMjIsCiAga1JBUmVtb3RlQWNjZXNzTm90UmVhZHkgPSAtNzEyMywKICBrUkFUQ1BJ
UEluYWN0aXZlID0gLTcxMjQsCiAga1JBVENQSVBOb3RDb25maWd1cmVkID0gLTcxMjUsCiAga1JB
Tm90UHJpbWFyeUludGVyZmFjZSA9IC03MTI2LAogIGtSQUNvbmZpZ3VyYXRpb25EQkluaXRFcnIg
PSAtNzEyNywKICBrUkFQUFBQcm90b2NvbFJlamVjdGVkID0gLTcxMjgsCiAga1JBUFBQQXV0aGVu
dGljYXRpb25GYWlsZWQgPSAtNzEyOSwKICBrUkFQUFBOZWdvdGlhdGlvbkZhaWxlZCA9IC03MTMw
LAogIGtSQVBQUFVzZXJEaXNjb25uZWN0ZWQgPSAtNzEzMSwKICBrUkFQUFBQZWVyRGlzY29ubmVj
dGVkID0gLTcxMzIsCiAga1JBUGVlck5vdFJlc3BvbmRpbmcgPSAtNzEzMywKICBrUkFBVGFsa0lu
YWN0aXZlID0gLTcxMzQsCiAga1JBRXh0QXV0aGVudGljYXRpb25GYWlsZWQgPSAtNzEzNSwKICBr
UkFOQ1BSZWplY3RlZGJ5UGVlciA9IC03MTM2LAogIGtSQUR1cGxpY2F0ZUlQQWRkciA9IC03MTM3
LAogIGtSQUNhbGxCYWNrRmFpbGVkID0gLTcxMzgsCiAga1JBTm90RW5hYmxlZCA9IC03MTM5Cn07
CiMgMTk3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjRXJyb3JzLmgiIDMK
ZW51bSB7CiAga0FUU1VJbnZhbGlkVGV4dExheW91dEVyciA9IC04NzkwLAoKCiAga0FUU1VJbnZh
bGlkU3R5bGVFcnIgPSAtODc5MSwKCgogIGtBVFNVSW52YWxpZFRleHRSYW5nZUVyciA9IC04Nzky
LAoKCiAga0FUU1VGb250c01hdGNoZWQgPSAtODc5MywKCgogIGtBVFNVRm9udHNOb3RNYXRjaGVk
ID0gLTg3OTQsCgoKICBrQVRTVU5vQ29ycmVzcG9uZGluZ0ZvbnRFcnIgPSAtODc5NSwKCgoKCgoK
ICBrQVRTVUludmFsaWRGb250RXJyID0gLTg3OTYsCiAga0FUU1VJbnZhbGlkQXR0cmlidXRlVmFs
dWVFcnIgPSAtODc5NywKCiAga0FUU1VJbnZhbGlkQXR0cmlidXRlU2l6ZUVyciA9IC04Nzk4LAoK
ICBrQVRTVUludmFsaWRBdHRyaWJ1dGVUYWdFcnIgPSAtODc5OSwKCiAga0FUU1VJbnZhbGlkQ2Fj
aGVFcnIgPSAtODgwMCwKCgoKCiAga0FUU1VOb3RTZXRFcnIgPSAtODgwMSwKCgoKICBrQVRTVU5v
U3R5bGVSdW5zQXNzaWduZWRFcnIgPSAtODgwMiwKCiAga0FUU1VRdWlja0RyYXdUZXh0RXJyID0g
LTg4MDMsCgogIGtBVFNVTG93TGV2ZWxFcnIgPSAtODgwNCwKCiAga0FUU1VOb0ZvbnRDbWFwQXZh
aWxhYmxlRXJyID0gLTg4MDUsCgogIGtBVFNVTm9Gb250U2NhbGVyQXZhaWxhYmxlRXJyID0gLTg4
MDYsCgogIGtBVFNVQ29vcmRpbmF0ZU92ZXJmbG93RXJyID0gLTg4MDcsCgogIGtBVFNVTGluZUJy
ZWFrSW5Xb3JkID0gLTg4MDgsCgoKICBrQVRTVUJ1c3lPYmplY3RFcnIgPSAtODgwOQp9OwojIDIw
MzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY0Vycm9ycy5oIiAzCmVudW0g
ewoKICBrVGV4dFVuc3VwcG9ydGVkRW5jb2RpbmdFcnIgPSAtODczOCwKICBrVGV4dE1hbGZvcm1l
ZElucHV0RXJyID0gLTg3MzksCiAga1RleHRVbmRlZmluZWRFbGVtZW50RXJyID0gLTg3NDAsCiAg
a1RFQ01pc3NpbmdUYWJsZUVyciA9IC04NzQ1LAogIGtURUNUYWJsZUNoZWNrc3VtRXJyID0gLTg3
NDYsCiAga1RFQ1RhYmxlRm9ybWF0RXJyID0gLTg3NDcsCiAga1RFQ0NvcnJ1cHRDb252ZXJ0ZXJF
cnIgPSAtODc0OCwKICBrVEVDTm9Db252ZXJzaW9uUGF0aEVyciA9IC04NzQ5LAogIGtURUNCdWZm
ZXJCZWxvd01pbmltdW1TaXplRXJyID0gLTg3NTAsCiAga1RFQ0FycmF5RnVsbEVyciA9IC04NzUx
LAogIGtURUNCYWRUZXh0UnVuRXJyID0gLTg3NTIsCiAga1RFQ1BhcnRpYWxDaGFyRXJyID0gLTg3
NTMsCiAga1RFQ1VubWFwcGFibGVFbGVtZW50RXJyID0gLTg3NTQsCiAga1RFQ0luY29tcGxldGVF
bGVtZW50RXJyID0gLTg3NTUsCiAga1RFQ0RpcmVjdGlvbkVyciA9IC04NzU2LAogIGtURUNHbG9i
YWxzVW5hdmFpbGFibGVFcnIgPSAtODc3MCwKICBrVEVDSXRlbVVuYXZhaWxhYmxlRXJyID0gLTg3
NzEsCgogIGtURUNVc2VkRmFsbGJhY2tzU3RhdHVzID0gLTg3ODMsCiAga1RFQ05lZWRGbHVzaFN0
YXR1cyA9IC04Nzg0LAogIGtURUNPdXRwdXRCdWZmZXJGdWxsU3RhdHVzID0gLTg3ODUsCgogIHVu
aWNvZGVDaGVja3N1bUVyciA9IC04NzY5LAogIHVuaWNvZGVOb1RhYmxlRXJyID0gLTg3NjgsCiAg
dW5pY29kZVZhcmlhbnRFcnIgPSAtODc2NywKICB1bmljb2RlRmFsbGJhY2tzRXJyID0gLTg3NjYs
CiAgdW5pY29kZVBhcnRDb252ZXJ0RXJyID0gLTg3NjUsCiAgdW5pY29kZUJ1ZkVyciA9IC04NzY0
LAogIHVuaWNvZGVDaGFyRXJyID0gLTg3NjMsCiAgdW5pY29kZUVsZW1lbnRFcnIgPSAtODc2MiwK
ICB1bmljb2RlTm90Rm91bmRFcnIgPSAtODc2MSwKICB1bmljb2RlVGFibGVGb3JtYXRFcnIgPSAt
ODc2MCwKICB1bmljb2RlRGlyZWN0aW9uRXJyID0gLTg3NTksCiAgdW5pY29kZUNvbnRleHR1YWxF
cnIgPSAtODc1OCwKICB1bmljb2RlVGV4dEVuY29kaW5nRGF0YUVyciA9IC04NzU3Cn07CgoKCmVu
dW0gewogIGtVVENVbmRlcmZsb3dFcnIgPSAtODg1MCwKICBrVVRDT3ZlcmZsb3dFcnIgPSAtODg1
MSwKICBrSWxsZWdhbENsb2NrVmFsdWVFcnIgPSAtODg1Mgp9OwoKCgoKCmVudW0gewogIGtBVFNV
SW52YWxpZEZvbnRGYWxsYmFja3NFcnIgPSAtODkwMCwKCiAga0FUU1VVbnN1cHBvcnRlZFN0cmVh
bUZvcm1hdEVyciA9IC04OTAxLAoKICBrQVRTVUJhZFN0cmVhbUVyciA9IC04OTAyLAoKCiAga0FU
U1VPdXRwdXRCdWZmZXJUb29TbWFsbEVyciA9IC04OTAzLAoKICBrQVRTVUludmFsaWRDYWxsSW5z
aWRlQ2FsbGJhY2tFcnIgPSAtODkwNCwKCiAga0FUU1VOb0ZvbnROYW1lRXJyID0gLTg5MDUsCgog
IGtBVFNVTGFzdEVyciA9IC04OTU5Cn07CgoKCmVudW0gewogIGNvZGVjRXJyID0gLTg5NjAsCiAg
bm9Db2RlY0VyciA9IC04OTYxLAogIGNvZGVjVW5pbXBFcnIgPSAtODk2MiwKICBjb2RlY1NpemVF
cnIgPSAtODk2MywKICBjb2RlY1NjcmVlbkJ1ZkVyciA9IC04OTY0LAogIGNvZGVjSW1hZ2VCdWZF
cnIgPSAtODk2NSwKICBjb2RlY1Nwb29sRXJyID0gLTg5NjYsCiAgY29kZWNBYm9ydEVyciA9IC04
OTY3LAogIGNvZGVjV291bGRPZmZzY3JlZW5FcnIgPSAtODk2OCwKICBjb2RlY0JhZERhdGFFcnIg
PSAtODk2OSwKICBjb2RlY0RhdGFWZXJzRXJyID0gLTg5NzAsCiAgY29kZWNFeHRlbnNpb25Ob3RG
b3VuZEVyciA9IC04OTcxLAogIHNjVHlwZU5vdEZvdW5kRXJyID0gY29kZWNFeHRlbnNpb25Ob3RG
b3VuZEVyciwKICBjb2RlY0NvbmRpdGlvbkVyciA9IC04OTcyLAogIGNvZGVjT3BlbkVyciA9IC04
OTczLAogIGNvZGVjQ2FudFdoZW5FcnIgPSAtODk3NCwKICBjb2RlY0NhbnRRdWV1ZUVyciA9IC04
OTc1LAogIGNvZGVjTm90aGluZ1RvQmxpdEVyciA9IC04OTc2LAogIGNvZGVjTm9NZW1vcnlQbGVh
c2VXYWl0RXJyID0gLTg5NzcsCiAgY29kZWNEaXNhYmxlZEVyciA9IC04OTc4LAogIGNvZGVjTmVl
ZFRvRmx1c2hDaGFpbkVyciA9IC04OTc5LAogIGxvY2tQb3J0Qml0c0JhZFN1cmZhY2VFcnIgPSAt
ODk4MCwKICBsb2NrUG9ydEJpdHNXaW5kb3dNb3ZlZEVyciA9IC04OTgxLAogIGxvY2tQb3J0Qml0
c1dpbmRvd1Jlc2l6ZWRFcnIgPSAtODk4MiwKICBsb2NrUG9ydEJpdHNXaW5kb3dDbGlwcGVkRXJy
ID0gLTg5ODMsCiAgbG9ja1BvcnRCaXRzQmFkUG9ydEVyciA9IC04OTg0LAogIGxvY2tQb3J0Qml0
c1N1cmZhY2VMb3N0RXJyID0gLTg5ODUsCiAgY29kZWNQYXJhbWV0ZXJEaWFsb2dDb25maXJtID0g
LTg5ODYsCiAgY29kZWNOZWVkQWNjZXNzS2V5RXJyID0gLTg5ODcsCiAgY29kZWNPZmZzY3JlZW5G
YWlsZWRFcnIgPSAtODk4OCwKICBjb2RlY0Ryb3BwZWRGcmFtZUVyciA9IC04OTg5LAogIGRpcmVj
dFhPYmplY3RBbHJlYWR5RXhpc3RzID0gLTg5OTAsCiAgbG9ja1BvcnRCaXRzV3JvbmdHRGV2aWNl
RXJyID0gLTg5OTEsCiAgY29kZWNPZmZzY3JlZW5GYWlsZWRQbGVhc2VSZXRyeUVyciA9IC04OTky
LAogIGJhZENvZGVjQ2hhcmFjdGVyaXphdGlvbkVyciA9IC04OTkzLAogIG5vVGh1bWJuYWlsRm91
bmRFcnIgPSAtODk5NAp9OwoKCgplbnVtIHsKICBrQmFkQWRhcHRlckVyciA9IC05MDUwLAogIGtC
YWRBdHRyaWJ1dGVFcnIgPSAtOTA1MSwKICBrQmFkQmFzZUVyciA9IC05MDUyLAogIGtCYWRFRENF
cnIgPSAtOTA1MywKICBrQmFkSVJRRXJyID0gLTkwNTQsCiAga0JhZE9mZnNldEVyciA9IC05MDU1
LAogIGtCYWRQYWdlRXJyID0gLTkwNTYsCiAga0JhZFNpemVFcnIgPSAtOTA1NywKICBrQmFkU29j
a2V0RXJyID0gLTkwNTgsCiAga0JhZFR5cGVFcnIgPSAtOTA1OSwKICBrQmFkVmNjRXJyID0gLTkw
NjAsCiAga0JhZFZwcEVyciA9IC05MDYxLAogIGtCYWRXaW5kb3dFcnIgPSAtOTA2MiwKICBrQmFk
QXJnTGVuZ3RoRXJyID0gLTkwNjMsCiAga0JhZEFyZ3NFcnIgPSAtOTA2NCwKICBrQmFkSGFuZGxl
RXJyID0gLTkwNjUsCiAga0JhZENJU0VyciA9IC05MDY2LAogIGtCYWRTcGVlZEVyciA9IC05MDY3
LAogIGtSZWFkRmFpbHVyZUVyciA9IC05MDY4LAogIGtXcml0ZUZhaWx1cmVFcnIgPSAtOTA2OSwK
ICBrR2VuZXJhbEZhaWx1cmVFcnIgPSAtOTA3MCwKICBrTm9DYXJkRXJyID0gLTkwNzEsCiAga1Vu
c3VwcG9ydGVkRnVuY3Rpb25FcnIgPSAtOTA3MiwKICBrVW5zdXBwb3J0ZWRNb2RlRXJyID0gLTkw
NzMsCiAga0J1c3lFcnIgPSAtOTA3NCwKICBrV3JpdGVQcm90ZWN0ZWRFcnIgPSAtOTA3NSwKICBr
Q29uZmlndXJhdGlvbkxvY2tlZEVyciA9IC05MDc2LAogIGtJblVzZUVyciA9IC05MDc3LAogIGtO
b01vcmVJdGVtc0VyciA9IC05MDc4LAogIGtPdXRPZlJlc291cmNlRXJyID0gLTkwNzksCiAga05v
Q2FyZFNldmljZXNTb2NrZXRzRXJyID0gLTkwODAsCiAga0ludmFsaWRSZWdFbnRyeUVyciA9IC05
MDgxLAogIGtCYWRMaW5rRXJyID0gLTkwODIsCiAga0JhZERldmljZUVyciA9IC05MDgzLAogIGsx
NkJpdENhcmRFcnIgPSAtOTA4NCwKICBrQ2FyZEJ1c0NhcmRFcnIgPSAtOTA4NSwKICBrUGFzc0Nh
bGxUb0NoYWluRXJyID0gLTkwODYsCiAga0NhbnRDb25maWd1cmVDYXJkRXJyID0gLTkwODcsCiAg
a1Bvc3RDYXJkRXZlbnRFcnIgPSAtOTA4OCwKICBrSW52YWxpZERldmljZU51bWJlciA9IC05MDg5
LAogIGtVbnN1cHBvcnRlZFZzRXJyID0gLTkwOTAsCiAga0ludmFsaWRDU0NsaWVudEVyciA9IC05
MDkxLAogIGtCYWRUdXBsZURhdGFFcnIgPSAtOTA5MiwKICBrQmFkQ3VzdG9tSUZJREVyciA9IC05
MDkzLAogIGtOb0lPV2luZG93UmVxdWVzdGVkRXJyID0gLTkwOTQsCiAga05vTW9yZVRpbWVyQ2xp
ZW50c0VyciA9IC05MDk1LAogIGtOb01vcmVJbnRlcnJ1cHRTbG90c0VyciA9IC05MDk2LAogIGtO
b0NsaWVudFRhYmxlRXJyID0gLTkwOTcsCiAga1Vuc3VwcG9ydGVkQ2FyZEVyciA9IC05MDk4LAog
IGtOb0NhcmRFbmFibGVyc0ZvdW5kRXJyID0gLTkwOTksCiAga05vRW5hYmxlckZvckNhcmRFcnIg
PSAtOTEwMCwKICBrTm9Db21wYXRpYmxlTmFtZUVyciA9IC05MTAxLAogIGtDbGllbnRSZXF1ZXN0
RGVuaWVkID0gLTkxMDIsCgogIGtOb3RSZWFkeUVyciA9IC05MTAzLAogIGtUb29NYW55SU9XaW5k
b3dzRXJyID0gLTkxMDQsCiAga0FscmVhZHlTYXZlZFN0YXRlRXJyID0gLTkxMDUsCiAga0F0dGVt
cHREdXBDYXJkRW50cnlFcnIgPSAtOTEwNiwKICBrQ2FyZFBvd2VyT2ZmRXJyID0gLTkxMDcsCiAg
a05vdFpWQ2FwYWJsZUVyciA9IC05MTA4LAogIGtOb0NhcmRCdXNDSVNFcnIgPSAtOTEwOQp9OwoK
CmVudW0gewogIG5vRGV2aWNlRm9yQ2hhbm5lbCA9IC05NDAwLAogIGdyYWJUaW1lQ29tcGxldGUg
PSAtOTQwMSwKICBjYW50RG9UaGF0SW5DdXJyZW50TW9kZSA9IC05NDAyLAogIG5vdEVub3VnaE1l
bW9yeVRvR3JhYiA9IC05NDAzLAogIG5vdEVub3VnaERpc2tTcGFjZVRvR3JhYiA9IC05NDA0LAog
IGNvdWxkbnRHZXRSZXF1aXJlZENvbXBvbmVudCA9IC05NDA1LAogIGJhZFNHQ2hhbm5lbCA9IC05
NDA2LAogIHNlcUdyYWJJbmZvTm90QXZhaWxhYmxlID0gLTk0MDcsCiAgZGV2aWNlQ2FudE1lZXRS
ZXF1ZXN0ID0gLTk0MDgsCiAgYmFkQ29udHJvbGxlckhlaWdodCA9IC05OTk0LAogIGVkaXRpbmdO
b3RBbGxvd2VkID0gLTk5OTUsCiAgY29udHJvbGxlckJvdW5kc05vdEV4YWN0ID0gLTk5OTYsCiAg
Y2Fubm90U2V0V2lkdGhPZkF0dGFjaGVkQ29udHJvbGxlciA9IC05OTk3LAogIGNvbnRyb2xsZXJI
YXNGaXhlZEhlaWdodCA9IC05OTk4LAogIGNhbm5vdE1vdmVBdHRhY2hlZENvbnRyb2xsZXIgPSAt
OTk5OQp9OwoKCmVudW0gewogIGVyckFFQmFkS2V5Rm9ybSA9IC0xMDAwMiwKICBlcnJBRUNhbnRI
YW5kbGVDbGFzcyA9IC0xMDAxMCwKICBlcnJBRUNhbnRTdXBwbHlUeXBlID0gLTEwMDA5LAogIGVy
ckFFQ2FudFVuZG8gPSAtMTAwMTUsCiAgZXJyQUVFdmVudEZhaWxlZCA9IC0xMDAwMCwKICBlcnJB
RUluZGV4VG9vTGFyZ2UgPSAtMTAwMDcsCiAgZXJyQUVJblRyYW5zYWN0aW9uID0gLTEwMDExLAog
IGVyckFFTG9jYWxPbmx5ID0gLTEwMDE2LAogIGVyckFFTm9TdWNoVHJhbnNhY3Rpb24gPSAtMTAw
MTIsCiAgZXJyQUVOb3RBbkVsZW1lbnQgPSAtMTAwMDgsCiAgZXJyQUVOb3RBU2luZ2xlT2JqZWN0
ID0gLTEwMDE0LAogIGVyckFFTm90TW9kaWZpYWJsZSA9IC0xMDAwMywKICBlcnJBRU5vVXNlclNl
bGVjdGlvbiA9IC0xMDAxMywKICBlcnJBRVByaXZpbGVnZUVycm9yID0gLTEwMDA0LAogIGVyckFF
UmVhZERlbmllZCA9IC0xMDAwNSwKICBlcnJBRVR5cGVFcnJvciA9IC0xMDAwMSwKICBlcnJBRVdy
aXRlRGVuaWVkID0gLTEwMDA2LAogIGVyckFFTm90QW5FbnVtTWVtYmVyID0gLTEwMDIzLAogIGVy
ckFFQ2FudFB1dFRoYXRUaGVyZSA9IC0xMDAyNCwKICBlcnJBRVByb3BlcnRpZXNDbGFzaCA9IC0x
MDAyNQp9OwoKCmVudW0gewogIHRlbEdlbmVyaWNFcnJvciA9IC0xLAogIHRlbE5vRXJyID0gMCwK
ICB0ZWxOb1Rvb2xzID0gOCwKICB0ZWxCYWRUZXJtRXJyID0gLTEwMDAxLAogIHRlbEJhZERORXJy
ID0gLTEwMDAyLAogIHRlbEJhZENBRXJyID0gLTEwMDAzLAogIHRlbEJhZEhhbmRFcnIgPSAtMTAw
MDQsCiAgdGVsQmFkUHJvY0VyciA9IC0xMDAwNSwKICB0ZWxDQVVuYXZhaWwgPSAtMTAwMDYsCiAg
dGVsTm9NZW1FcnIgPSAtMTAwMDcsCiAgdGVsTm9PcGVuRXJyID0gLTEwMDA4LAogIHRlbEJhZEhU
eXBlRXJyID0gLTEwMDEwLAogIHRlbEhUeXBlTm90U3VwcCA9IC0xMDAxMSwKICB0ZWxCYWRMZXZl
bEVyciA9IC0xMDAxMiwKICB0ZWxCYWRWVHlwZUVyciA9IC0xMDAxMywKICB0ZWxWVHlwZU5vdFN1
cHAgPSAtMTAwMTQsCiAgdGVsQmFkQVBhdHRFcnIgPSAtMTAwMTUsCiAgdGVsQVBhdHROb3RTdXBw
ID0gLTEwMDE2LAogIHRlbEJhZEluZGV4ID0gLTEwMDE3LAogIHRlbEluZGV4Tm90U3VwcCA9IC0x
MDAxOCwKICB0ZWxCYWRTdGF0ZUVyciA9IC0xMDAxOSwKICB0ZWxTdGF0ZU5vdFN1cHAgPSAtMTAw
MjAsCiAgdGVsQmFkSW50RXh0ID0gLTEwMDIxLAogIHRlbEludEV4dE5vdFN1cHAgPSAtMTAwMjIs
CiAgdGVsQmFkRE5EVHlwZSA9IC0xMDAyMywKICB0ZWxETkRUeXBlTm90U3VwcCA9IC0xMDAyNCwK
ICB0ZWxGZWF0Tm90U3ViID0gLTEwMDMwLAogIHRlbEZlYXROb3RBdmFpbCA9IC0xMDAzMSwKICB0
ZWxGZWF0QWN0aXZlID0gLTEwMDMyLAogIHRlbEZlYXROb3RTdXBwID0gLTEwMDMzLAogIHRlbENv
bmZMaW1pdEVyciA9IC0xMDA0MCwKICB0ZWxDb25mTm9MaW1pdCA9IC0xMDA0MSwKICB0ZWxDb25m
RXJyID0gLTEwMDQyLAogIHRlbENvbmZSZWogPSAtMTAwNDMsCiAgdGVsVHJhbnNmZXJFcnIgPSAt
MTAwNDQsCiAgdGVsVHJhbnNmZXJSZWogPSAtMTAwNDUsCiAgdGVsQ0JFcnIgPSAtMTAwNDYsCiAg
dGVsQ29uZkxpbWl0RXhjZWVkZWQgPSAtMTAwNDcsCiAgdGVsQmFkRE5UeXBlID0gLTEwMDUwLAog
IHRlbEJhZFBhZ2VJRCA9IC0xMDA1MSwKICB0ZWxCYWRJbnRlcmNvbUlEID0gLTEwMDUyLAogIHRl
bEJhZEZlYXR1cmVJRCA9IC0xMDA1MywKICB0ZWxCYWRGd2RUeXBlID0gLTEwMDU0LAogIHRlbEJh
ZFBpY2t1cEdyb3VwSUQgPSAtMTAwNTUsCiAgdGVsQmFkUGFya0lEID0gLTEwMDU2LAogIHRlbEJh
ZFNlbGVjdCA9IC0xMDA1NywKICB0ZWxCYWRCZWFyZXJUeXBlID0gLTEwMDU4LAogIHRlbEJhZFJh
dGUgPSAtMTAwNTksCiAgdGVsRE5UeXBlTm90U3VwcCA9IC0xMDA2MCwKICB0ZWxGd2RUeXBlTm90
U3VwcCA9IC0xMDA2MSwKICB0ZWxCYWREaXNwbGF5TW9kZSA9IC0xMDA2MiwKICB0ZWxEaXNwbGF5
TW9kZU5vdFN1cHAgPSAtMTAwNjMsCiAgdGVsTm9DYWxsYmFja1JlZiA9IC0xMDA2NCwKICB0ZWxB
bHJlYWR5T3BlbiA9IC0xMDA3MCwKICB0ZWxTdGlsbE5lZWRlZCA9IC0xMDA3MSwKICB0ZWxUZXJt
Tm90T3BlbiA9IC0xMDA3MiwKICB0ZWxDQU5vdEFjY2VwdGFibGUgPSAtMTAwODAsCiAgdGVsQ0FO
b3RSZWplY3RhYmxlID0gLTEwMDgxLAogIHRlbENBTm90RGVmbGVjdGFibGUgPSAtMTAwODIsCiAg
dGVsUEJFcnIgPSAtMTAwOTAsCiAgdGVsQmFkRnVuY3Rpb24gPSAtMTAwOTEsCgogIHRlbE5vU3Vj
aFRvb2wgPSAtMTAxMDIsCiAgdGVsVW5rbm93bkVyciA9IC0xMDEwMywKICB0ZWxOb0NvbW1Gb2xk
ZXIgPSAtMTAxMDYsCiAgdGVsSW5pdEZhaWxlZCA9IC0xMDEwNywKICB0ZWxCYWRDb2RlUmVzb3Vy
Y2UgPSAtMTAxMDgsCiAgdGVsRGV2aWNlTm90Rm91bmQgPSAtMTAxMDksCiAgdGVsQmFkUHJvY0lE
ID0gLTEwMTEwLAogIHRlbFZhbGlkYXRlRmFpbGVkID0gLTEwMTExLAogIHRlbEF1dG9BbnNOb3RP
biA9IC0xMDExMiwKICB0ZWxEZXRBbHJlYWR5T24gPSAtMTAxMTMsCiAgdGVsQmFkU1dFcnIgPSAt
MTAxMTQsCiAgdGVsQmFkU2FtcGxlUmF0ZSA9IC0xMDExNSwKICB0ZWxOb3RFbm91Z2hkc3BCVyA9
IC0xMDExNgp9OwoKZW51bSB7CiAgZXJyVGFza05vdEZvdW5kID0gLTEwNzgwCn07CgoKCgoKZW51
bSB7CgogIHBtQnVzeUVyciA9IC0xMzAwMCwKICBwbVJlcGx5VE9FcnIgPSAtMTMwMDEsCiAgcG1T
ZW5kU3RhcnRFcnIgPSAtMTMwMDIsCiAgcG1TZW5kRW5kRXJyID0gLTEzMDAzLAogIHBtUmVjdlN0
YXJ0RXJyID0gLTEzMDA0LAogIHBtUmVjdkVuZEVyciA9IC0xMzAwNQp9OwoKCmVudW0gewogIGtQ
b3dlckhhbmRsZXJFeGlzdHNGb3JEZXZpY2VFcnIgPSAtMTMwMDYsCiAga1Bvd2VySGFuZGxlck5v
dEZvdW5kRm9yRGV2aWNlRXJyID0gLTEzMDA3LAogIGtQb3dlckhhbmRsZXJOb3RGb3VuZEZvclBy
b2NFcnIgPSAtMTMwMDgsCiAga1Bvd2VyTWd0TWVzc2FnZU5vdEhhbmRsZWQgPSAtMTMwMDksCiAg
a1Bvd2VyTWd0UmVxdWVzdERlbmllZCA9IC0xMzAxMCwKICBrQ2FudFJlcG9ydFByb2Nlc3NvclRl
bXBlcmF0dXJlRXJyID0gLTEzMDEzLAogIGtQcm9jZXNzb3JUZW1wUm91dGluZVJlcXVpcmVzTVBM
aWIyID0gLTEzMDE0LAogIGtOb1N1Y2hQb3dlclNvdXJjZSA9IC0xMzAyMCwKICBrQnJpZGdlU29m
dHdhcmVSdW5uaW5nQ2FudFNsZWVwID0gLTEzMDM4Cn07CgoKCmVudW0gewogIGRlYnVnZ2luZ0V4
ZWN1dGlvbkNvbnRleHRFcnIgPSAtMTM4ODAsCiAgZGVidWdnaW5nRHVwbGljYXRlU2lnbmF0dXJl
RXJyID0gLTEzODgxLAogIGRlYnVnZ2luZ0R1cGxpY2F0ZU9wdGlvbkVyciA9IC0xMzg4MiwKICBk
ZWJ1Z2dpbmdJbnZhbGlkU2lnbmF0dXJlRXJyID0gLTEzODgzLAogIGRlYnVnZ2luZ0ludmFsaWRP
cHRpb25FcnIgPSAtMTM4ODQsCiAgZGVidWdnaW5nSW52YWxpZE5hbWVFcnIgPSAtMTM4ODUsCiAg
ZGVidWdnaW5nTm9DYWxsYmFja0VyciA9IC0xMzg4NiwKICBkZWJ1Z2dpbmdOb01hdGNoRXJyID0g
LTEzODg3Cn07CgoKCmVudW0gewogIGtISURWZXJzaW9uSW5jb21wYXRpYmxlRXJyID0gLTEzOTA5
LAogIGtISUREZXZpY2VOb3RSZWFkeSA9IC0xMzkxMAp9OwoKCgplbnVtIHsKICBrSElEU3VjY2Vz
cyA9IDAsCiAga0hJREludmFsaWRSYW5nZVBhZ2VFcnIgPSAtMTM5MjMsCiAga0hJRFJlcG9ydElE
WmVyb0VyciA9IC0xMzkyNCwKICBrSElEUmVwb3J0Q291bnRaZXJvRXJyID0gLTEzOTI1LAogIGtI
SURSZXBvcnRTaXplWmVyb0VyciA9IC0xMzkyNiwKICBrSElEVW5tYXRjaGVkRGVzaWduYXRvclJh
bmdlRXJyID0gLTEzOTI3LAogIGtISURVbm1hdGNoZWRTdHJpbmdSYW5nZUVyciA9IC0xMzkyOCwK
ICBrSElESW52ZXJ0ZWRVc2FnZVJhbmdlRXJyID0gLTEzOTI5LAogIGtISURVbm1hdGNoZWRVc2Fn
ZVJhbmdlRXJyID0gLTEzOTMwLAogIGtISURJbnZlcnRlZFBoeXNpY2FsUmFuZ2VFcnIgPSAtMTM5
MzEsCiAga0hJREludmVydGVkTG9naWNhbFJhbmdlRXJyID0gLTEzOTMyLAogIGtISURCYWRMb2dp
Y2FsTWF4aW11bUVyciA9IC0xMzkzMywKICBrSElEQmFkTG9naWNhbE1pbmltdW1FcnIgPSAtMTM5
MzQsCiAga0hJRFVzYWdlUGFnZVplcm9FcnIgPSAtMTM5MzUsCiAga0hJREVuZE9mRGVzY3JpcHRv
ckVyciA9IC0xMzkzNiwKICBrSElETm90RW5vdWdoTWVtb3J5RXJyID0gLTEzOTM3LAogIGtISURC
YWRQYXJhbWV0ZXJFcnIgPSAtMTM5MzgsCiAga0hJRE51bGxQb2ludGVyRXJyID0gLTEzOTM5LAog
IGtISURJbnZhbGlkUmVwb3J0TGVuZ3RoRXJyID0gLTEzOTQwLAogIGtISURJbnZhbGlkUmVwb3J0
VHlwZUVyciA9IC0xMzk0MSwKICBrSElEQmFkTG9nUGh5c1ZhbHVlc0VyciA9IC0xMzk0MiwKICBr
SElESW5jb21wYXRpYmxlUmVwb3J0RXJyID0gLTEzOTQzLAogIGtISURJbnZhbGlkUHJlcGFyc2Vk
RGF0YUVyciA9IC0xMzk0NCwKICBrSElETm90VmFsdWVBcnJheUVyciA9IC0xMzk0NSwKICBrSElE
VXNhZ2VOb3RGb3VuZEVyciA9IC0xMzk0NiwKICBrSElEVmFsdWVPdXRPZlJhbmdlRXJyID0gLTEz
OTQ3LAogIGtISURCdWZmZXJUb29TbWFsbEVyciA9IC0xMzk0OCwKICBrSElETnVsbFN0YXRlRXJy
ID0gLTEzOTQ5LAogIGtISURCYXNlRXJyb3IgPSAtMTM5NTAKfTsKCgoKZW51bSB7CiAga01vZGVt
T3V0T2ZNZW1vcnkgPSAtMTQwMDAsCiAga01vZGVtUHJlZmVyZW5jZXNNaXNzaW5nID0gLTE0MDAx
LAogIGtNb2RlbVNjcmlwdE1pc3NpbmcgPSAtMTQwMDIKfTsKCgoKCmVudW0gewogIGtUWE5FbmRJ
dGVyYXRpb25FcnIgPSAtMjIwMDAsCiAga1RYTkNhbm5vdEFkZEZyYW1lRXJyID0gLTIyMDAxLAog
IGtUWE5JbnZhbGlkRnJhbWVJREVyciA9IC0yMjAwMiwKICBrVFhOSWxsZWdhbFRvQ3Jvc3NEYXRh
Qm91bmRhcmllc0VyciA9IC0yMjAwMywKICBrVFhOVXNlckNhbmNlbGVkT3BlcmF0aW9uRXJyID0g
LTIyMDA0LAogIGtUWE5CYWREZWZhdWx0RmlsZVR5cGVXYXJuaW5nID0gLTIyMDA1LAogIGtUWE5D
YW5ub3RTZXRBdXRvSW5kZW50RXJyID0gLTIyMDA2LAogIGtUWE5SdW5JbmRleE91dG9mQm91bmRz
RXJyID0gLTIyMDA3LAogIGtUWE5Ob01hdGNoRXJyID0gLTIyMDA4LAogIGtUWE5BdHRyaWJ1dGVU
YWdJbnZhbGlkRm9yUnVuRXJyID0gLTIyMDA5LAogIGtUWE5Tb21lT3JBbGxUYWdzSW52YWxpZEZv
clJ1bkVyciA9IC0yMjAxMCwKICBrVFhOSW52YWxpZFJ1bkluZGV4ID0gLTIyMDExLAogIGtUWE5B
bHJlYWR5SW5pdGlhbGl6ZWRFcnIgPSAtMjIwMTIsCiAga1RYTkNhbm5vdFR1cm5UU01PZmZXaGVu
VXNpbmdVbmljb2RlRXJyID0gLTIyMDEzLAogIGtUWE5Db3B5Tm90QWxsb3dlZEluRWNob01vZGVF
cnIgPSAtMjIwMTQsCiAga1RYTkRhdGFUeXBlTm90QWxsb3dlZEVyciA9IC0yMjAxNSwKICBrVFhO
QVRTVUlJc05vdEluc3RhbGxlZEVyciA9IC0yMjAxNiwKICBrVFhOT3V0c2lkZU9mTGluZUVyciA9
IC0yMjAxNywKICBrVFhOT3V0c2lkZU9mRnJhbWVFcnIgPSAtMjIwMTgKfTsKCgoKCgplbnVtIHsK
ICBwcmludGVyU3RhdHVzT3BDb2RlTm90U3VwcG9ydGVkRXJyID0gLTI1MjgwCn07CgoKCmVudW0g
ewogIGVycktDTm90QXZhaWxhYmxlID0gLTI1MjkxLAogIGVycktDUmVhZE9ubHkgPSAtMjUyOTIs
CiAgZXJyS0NBdXRoRmFpbGVkID0gLTI1MjkzLAogIGVycktDTm9TdWNoS2V5Y2hhaW4gPSAtMjUy
OTQsCiAgZXJyS0NJbnZhbGlkS2V5Y2hhaW4gPSAtMjUyOTUsCiAgZXJyS0NEdXBsaWNhdGVLZXlj
aGFpbiA9IC0yNTI5NiwKICBlcnJLQ0R1cGxpY2F0ZUNhbGxiYWNrID0gLTI1Mjk3LAogIGVycktD
SW52YWxpZENhbGxiYWNrID0gLTI1Mjk4LAogIGVycktDRHVwbGljYXRlSXRlbSA9IC0yNTI5OSwK
ICBlcnJLQ0l0ZW1Ob3RGb3VuZCA9IC0yNTMwMCwKICBlcnJLQ0J1ZmZlclRvb1NtYWxsID0gLTI1
MzAxLAogIGVycktDRGF0YVRvb0xhcmdlID0gLTI1MzAyLAogIGVycktDTm9TdWNoQXR0ciA9IC0y
NTMwMywKICBlcnJLQ0ludmFsaWRJdGVtUmVmID0gLTI1MzA0LAogIGVycktDSW52YWxpZFNlYXJj
aFJlZiA9IC0yNTMwNSwKICBlcnJLQ05vU3VjaENsYXNzID0gLTI1MzA2LAogIGVycktDTm9EZWZh
dWx0S2V5Y2hhaW4gPSAtMjUzMDcsCiAgZXJyS0NJbnRlcmFjdGlvbk5vdEFsbG93ZWQgPSAtMjUz
MDgsCiAgZXJyS0NSZWFkT25seUF0dHIgPSAtMjUzMDksCiAgZXJyS0NXcm9uZ0tDVmVyc2lvbiA9
IC0yNTMxMCwKICBlcnJLQ0tleVNpemVOb3RBbGxvd2VkID0gLTI1MzExLAogIGVycktDTm9TdG9y
YWdlTW9kdWxlID0gLTI1MzEyLAogIGVycktDTm9DZXJ0aWZpY2F0ZU1vZHVsZSA9IC0yNTMxMywK
ICBlcnJLQ05vUG9saWN5TW9kdWxlID0gLTI1MzE0LAogIGVycktDSW50ZXJhY3Rpb25SZXF1aXJl
ZCA9IC0yNTMxNSwKICBlcnJLQ0RhdGFOb3RBdmFpbGFibGUgPSAtMjUzMTYsCiAgZXJyS0NEYXRh
Tm90TW9kaWZpYWJsZSA9IC0yNTMxNywKICBlcnJLQ0NyZWF0ZUNoYWluRmFpbGVkID0gLTI1MzE4
Cn07CgoKCmVudW0gewogIGtVQ091dHB1dEJ1ZmZlclRvb1NtYWxsID0gLTI1MzQwLAogIGtVQ1Rl
eHRCcmVha0xvY2F0b3JNaXNzaW5nVHlwZSA9IC0yNTM0MQp9OwoKZW51bSB7CiAga1VDVFNOb0tl
eXNBZGRlZFRvT2JqZWN0RXJyID0gLTI1MzQyLAogIGtVQ1RTU2VhcmNoTGlzdEVyciA9IC0yNTM0
Mwp9OwoKZW51bSB7CiAga1VDVG9rZW5pemVySXRlcmF0aW9uRmluaXNoZWQgPSAtMjUzNDQsCiAg
a1VDVG9rZW5pemVyVW5rbm93bkxhbmcgPSAtMjUzNDUsCiAga1VDVG9rZW5Ob3RGb3VuZCA9IC0y
NTM0Ngp9OwoKCmVudW0gewogIGtNUEl0ZXJhdGlvbkVuZEVyciA9IC0yOTI3NSwKICBrTVBQcml2
aWxlZ2VkRXJyID0gLTI5Mjc2LAogIGtNUFByb2Nlc3NDcmVhdGVkRXJyID0gLTI5Mjg4LAogIGtN
UFByb2Nlc3NUZXJtaW5hdGVkRXJyID0gLTI5Mjg5LAogIGtNUFRhc2tDcmVhdGVkRXJyID0gLTI5
MjkwLAogIGtNUFRhc2tCbG9ja2VkRXJyID0gLTI5MjkxLAogIGtNUFRhc2tTdG9wcGVkRXJyID0g
LTI5MjkyLAogIGtNUEJsdWVCbG9ja2luZ0VyciA9IC0yOTI5MywKICBrTVBEZWxldGVkRXJyID0g
LTI5Mjk1LAogIGtNUFRpbWVvdXRFcnIgPSAtMjkyOTYsCiAga01QVGFza0Fib3J0ZWRFcnIgPSAt
MjkyOTcsCiAga01QSW5zdWZmaWNpZW50UmVzb3VyY2VzRXJyID0gLTI5Mjk4LAogIGtNUEludmFs
aWRJREVyciA9IC0yOTI5OQp9OwoKZW51bSB7CiAga01QTmFub2tlcm5lbE5lZWRzTWVtb3J5RXJy
ID0gLTI5Mjk0Cn07CgoKZW51bSB7CiAga0NvbGxhdGVBdHRyaWJ1dGVzTm90Rm91bmRFcnIgPSAt
Mjk1MDAsCiAga0NvbGxhdGVJbnZhbGlkT3B0aW9ucyA9IC0yOTUwMSwKICBrQ29sbGF0ZU1pc3Np
bmdVbmljb2RlVGFibGVFcnIgPSAtMjk1MDIsCiAga0NvbGxhdGVVbmljb2RlQ29udmVydEZhaWxl
ZEVyciA9IC0yOTUwMywKICBrQ29sbGF0ZVBhdHRlcm5Ob3RGb3VuZEVyciA9IC0yOTUwNCwKICBr
Q29sbGF0ZUludmFsaWRDaGFyID0gLTI5NTA1LAogIGtDb2xsYXRlQnVmZmVyVG9vU21hbGwgPSAt
Mjk1MDYsCiAga0NvbGxhdGVJbnZhbGlkQ29sbGF0aW9uUmVmID0gLTI5NTA3Cn07CgoKCmVudW0g
ewogIGtGTlNJbnZhbGlkUmVmZXJlbmNlRXJyID0gLTI5NTgwLAogIGtGTlNCYWRSZWZlcmVuY2VW
ZXJzaW9uRXJyID0gLTI5NTgxLAogIGtGTlNJbnZhbGlkUHJvZmlsZUVyciA9IC0yOTU4MiwKICBr
Rk5TQmFkUHJvZmlsZVZlcnNpb25FcnIgPSAtMjk1ODMsCiAga0ZOU0R1cGxpY2F0ZVJlZmVyZW5j
ZUVyciA9IC0yOTU4NCwKICBrRk5TTWlzbWF0Y2hFcnIgPSAtMjk1ODUsCiAga0ZOU0luc3VmZmlj
aWVudERhdGFFcnIgPSAtMjk1ODYsCiAga0ZOU0JhZEZsYXR0ZW5lZFNpemVFcnIgPSAtMjk1ODcs
CiAga0ZOU05hbWVOb3RGb3VuZEVyciA9IC0yOTU4OQp9OwoKCgoKZW51bSB7CiAga0xvY2FsZXNC
dWZmZXJUb29TbWFsbEVyciA9IC0zMDAwMSwKICBrTG9jYWxlc1RhYmxlRm9ybWF0RXJyID0gLTMw
MDAyLAogIGtMb2NhbGVzRGVmYXVsdERpc3BsYXlTdGF0dXMgPSAtMzAwMjkKfTsKCgoKZW51bSB7
CiAga0FMTUludGVybmFsRXJyID0gLTMwMDQ5LAogIGtBTE1Hcm91cE5vdEZvdW5kRXJyID0gLTMw
MDQ4LAogIGtBTE1Ob1N1Y2hNb2R1bGVFcnIgPSAtMzAwNDcsCiAga0FMTU1vZHVsZUNvbW11bmlj
YXRpb25FcnIgPSAtMzAwNDYsCiAga0FMTUR1cGxpY2F0ZU1vZHVsZUVyciA9IC0zMDA0NSwKICBr
QUxNSW5zdGFsbGF0aW9uRXJyID0gLTMwMDQ0LAogIGtBTE1EZWZlclN3aXRjaEVyciA9IC0zMDA0
MywKICBrQUxNUmVib290RmxhZ3NMZXZlbEVyciA9IC0zMDA0Mgp9OwoKZW51bSB7CiAga0FMTUxv
Y2F0aW9uTm90Rm91bmRFcnIgPSBrQUxNR3JvdXBOb3RGb3VuZEVycgp9OwoKCgplbnVtIHsKICBr
U1NwSW50ZXJuYWxFcnIgPSAtMzAzNDAsCiAga1NTcFZlcnNpb25FcnIgPSAtMzAzNDEsCiAga1NT
cENhbnRJbnN0YWxsRXJyID0gLTMwMzQyLAogIGtTU3BQYXJhbGxlbFVwVmVjdG9yRXJyID0gLTMw
MzQzLAogIGtTU3BTY2FsZVRvWmVyb0VyciA9IC0zMDM0NAp9OwoKCgplbnVtIHsKICBrTlNwSW5p
dGlhbGl6YXRpb25GYWlsZWRFcnIgPSAtMzAzNjAsCiAga05TcEFscmVhZHlJbml0aWFsaXplZEVy
ciA9IC0zMDM2MSwKICBrTlNwVG9wb2xvZ3lOb3RTdXBwb3J0ZWRFcnIgPSAtMzAzNjIsCiAga05T
cFBpcGVGdWxsRXJyID0gLTMwMzY0LAogIGtOU3BIb3N0RmFpbGVkRXJyID0gLTMwMzY1LAogIGtO
U3BQcm90b2NvbE5vdEF2YWlsYWJsZUVyciA9IC0zMDM2NiwKICBrTlNwSW52YWxpZEdhbWVSZWZF
cnIgPSAtMzAzNjcsCiAga05TcEludmFsaWRQYXJhbWV0ZXJFcnIgPSAtMzAzNjksCiAga05TcE9U
Tm90UHJlc2VudEVyciA9IC0zMDM3MCwKICBrTlNwT1RWZXJzaW9uVG9vT2xkRXJyID0gLTMwMzcx
LAogIGtOU3BNZW1BbGxvY2F0aW9uRXJyID0gLTMwMzczLAogIGtOU3BBbHJlYWR5QWR2ZXJ0aXNp
bmdFcnIgPSAtMzAzNzQsCiAga05TcE5vdEFkdmVydGlzaW5nRXJyID0gLTMwMzc2LAogIGtOU3BJ
bnZhbGlkQWRkcmVzc0VyciA9IC0zMDM3NywKICBrTlNwRnJlZVFFeGhhdXN0ZWRFcnIgPSAtMzAz
NzgsCiAga05TcFJlbW92ZVBsYXllckZhaWxlZEVyciA9IC0zMDM3OSwKICBrTlNwQWRkcmVzc0lu
VXNlRXJyID0gLTMwMzgwLAogIGtOU3BGZWF0dXJlTm90SW1wbGVtZW50ZWRFcnIgPSAtMzAzODEs
CiAga05TcE5hbWVSZXF1aXJlZEVyciA9IC0zMDM4MiwKICBrTlNwSW52YWxpZFBsYXllcklERXJy
ID0gLTMwMzgzLAogIGtOU3BJbnZhbGlkR3JvdXBJREVyciA9IC0zMDM4NCwKICBrTlNwTm9QbGF5
ZXJzRXJyID0gLTMwMzg1LAogIGtOU3BOb0dyb3Vwc0VyciA9IC0zMDM4NiwKICBrTlNwTm9Ib3N0
Vm9sdW50ZWVyc0VyciA9IC0zMDM4NywKICBrTlNwQ3JlYXRlR3JvdXBGYWlsZWRFcnIgPSAtMzAz
ODgsCiAga05TcEFkZFBsYXllckZhaWxlZEVyciA9IC0zMDM4OSwKICBrTlNwSW52YWxpZERlZmlu
aXRpb25FcnIgPSAtMzAzOTAsCiAga05TcEludmFsaWRQcm90b2NvbFJlZkVyciA9IC0zMDM5MSwK
ICBrTlNwSW52YWxpZFByb3RvY29sTGlzdEVyciA9IC0zMDM5MiwKICBrTlNwVGltZW91dEVyciA9
IC0zMDM5MywKICBrTlNwR2FtZVRlcm1pbmF0ZWRFcnIgPSAtMzAzOTQsCiAga05TcENvbm5lY3RG
YWlsZWRFcnIgPSAtMzAzOTUsCiAga05TcFNlbmRGYWlsZWRFcnIgPSAtMzAzOTYsCiAga05TcE1l
c3NhZ2VUb29CaWdFcnIgPSAtMzAzOTcsCiAga05TcENhbnRCbG9ja0VyciA9IC0zMDM5OCwKICBr
TlNwSm9pbkZhaWxlZEVyciA9IC0zMDM5OQp9OwoKCgplbnVtIHsKICBrSVNwSW50ZXJuYWxFcnIg
PSAtMzA0MjAsCiAga0lTcFN5c3RlbUxpc3RFcnIgPSAtMzA0MjEsCiAga0lTcEJ1ZmZlclRvU21h
bGxFcnIgPSAtMzA0MjIsCiAga0lTcEVsZW1lbnRJbkxpc3RFcnIgPSAtMzA0MjMsCiAga0lTcEVs
ZW1lbnROb3RJbkxpc3RFcnIgPSAtMzA0MjQsCiAga0lTcFN5c3RlbUluYWN0aXZlRXJyID0gLTMw
NDI1LAogIGtJU3BEZXZpY2VJbmFjdGl2ZUVyciA9IC0zMDQyNiwKICBrSVNwU3lzdGVtQWN0aXZl
RXJyID0gLTMwNDI3LAogIGtJU3BEZXZpY2VBY3RpdmVFcnIgPSAtMzA0MjgsCiAga0lTcExpc3RC
dXN5RXJyID0gLTMwNDI5Cn07CgoKZW51bSB7CiAga0RTcE5vdEluaXRpYWxpemVkRXJyID0gLTMw
NDQwTCwKICBrRFNwU3lzdGVtU1dUb29PbGRFcnIgPSAtMzA0NDFMLAogIGtEU3BJbnZhbGlkQ29u
dGV4dEVyciA9IC0zMDQ0MkwsCiAga0RTcEludmFsaWRBdHRyaWJ1dGVzRXJyID0gLTMwNDQzTCwK
ICBrRFNwQ29udGV4dEFscmVhZHlSZXNlcnZlZEVyciA9IC0zMDQ0NEwsCiAga0RTcENvbnRleHRO
b3RSZXNlcnZlZEVyciA9IC0zMDQ0NUwsCiAga0RTcENvbnRleHROb3RGb3VuZEVyciA9IC0zMDQ0
NkwsCiAga0RTcEZyYW1lUmF0ZU5vdFJlYWR5RXJyID0gLTMwNDQ3TCwKICBrRFNwQ29uZmlybVN3
aXRjaFdhcm5pbmcgPSAtMzA0NDhMLAogIGtEU3BJbnRlcm5hbEVyciA9IC0zMDQ0OUwsCiAga0RT
cFN0ZXJlb0NvbnRleHRFcnIgPSAtMzA0NTBMCn07CgoKCgoKCgplbnVtIHsKICBrRkJDdlR3aW5F
eGNlcHRpb25FcnIgPSAtMzA1MDAsCiAga0ZCQ25vSW5kZXhlc0ZvdW5kID0gLTMwNTAxLAogIGtG
QkNhbGxvY0ZhaWxlZCA9IC0zMDUwMiwKICBrRkJDYmFkUGFyYW0gPSAtMzA1MDMsCiAga0ZCQ2Zp
bGVOb3RJbmRleGVkID0gLTMwNTA0LAogIGtGQkNiYWRJbmRleEZpbGUgPSAtMzA1MDUsCiAga0ZC
Q2NvbXBhY3Rpb25GYWlsZWQgPSAtMzA1MDYsCiAga0ZCQ3ZhbGlkYXRpb25GYWlsZWQgPSAtMzA1
MDcsCiAga0ZCQ2luZGV4aW5nRmFpbGVkID0gLTMwNTA4LAogIGtGQkNjb21taXRGYWlsZWQgPSAt
MzA1MDksCiAga0ZCQ2RlbGV0aW9uRmFpbGVkID0gLTMwNTEwLAogIGtGQkNtb3ZlRmFpbGVkID0g
LTMwNTExLAogIGtGQkN0b2tlbml6YXRpb25GYWlsZWQgPSAtMzA1MTIsCiAga0ZCQ21lcmdpbmdG
YWlsZWQgPSAtMzA1MTMsCiAga0ZCQ2luZGV4Q3JlYXRpb25GYWlsZWQgPSAtMzA1MTQsCiAga0ZC
Q2FjY2Vzc29yU3RvcmVGYWlsZWQgPSAtMzA1MTUsCiAga0ZCQ2FkZERvY0ZhaWxlZCA9IC0zMDUx
NiwKICBrRkJDZmx1c2hGYWlsZWQgPSAtMzA1MTcsCiAga0ZCQ2luZGV4Tm90Rm91bmQgPSAtMzA1
MTgsCiAga0ZCQ25vU2VhcmNoU2Vzc2lvbiA9IC0zMDUxOSwKICBrRkJDaW5kZXhpbmdDYW5jZWxl
ZCA9IC0zMDUyMCwKICBrRkJDYWNjZXNzQ2FuY2VsZWQgPSAtMzA1MjEsCiAga0ZCQ2luZGV4Rmls
ZURlc3Ryb3llZCA9IC0zMDUyMiwKICBrRkJDaW5kZXhOb3RBdmFpbGFibGUgPSAtMzA1MjMsCiAg
a0ZCQ3NlYXJjaEZhaWxlZCA9IC0zMDUyNCwKICBrRkJDc29tZUZpbGVzTm90SW5kZXhlZCA9IC0z
MDUyNSwKICBrRkJDaWxsZWdhbFNlc3Npb25DaGFuZ2UgPSAtMzA1MjYsCgogIGtGQkNhbmFseXNp
c05vdEF2YWlsYWJsZSA9IC0zMDUyNywKICBrRkJDYmFkSW5kZXhGaWxlVmVyc2lvbiA9IC0zMDUy
OCwKICBrRkJDc3VtbWFyaXphdGlvbkNhbmNlbGVkID0gLTMwNTI5LAogIGtGQkNpbmRleERpc2tJ
T0ZhaWxlZCA9IC0zMDUzMCwKICBrRkJDYmFkU2VhcmNoU2Vzc2lvbiA9IC0zMDUzMSwKICBrRkJD
bm9TdWNoSGl0ID0gLTMwNTMyCn07CgoKCmVudW0gewogIG5vdEFRVFZSTW92aWVFcnIgPSAtMzA1
NDAsCiAgY29uc3RyYWludFJlYWNoZWRFcnIgPSAtMzA1NDEsCiAgY2FsbE5vdFN1cHBvcnRlZEJ5
Tm9kZUVyciA9IC0zMDU0MiwKICBzZWxlY3Rvck5vdFN1cHBvcnRlZEJ5Tm9kZUVyciA9IC0zMDU0
MywKICBpbnZhbGlkTm9kZUlERXJyID0gLTMwNTQ0LAogIGludmFsaWRWaWV3U3RhdGVFcnIgPSAt
MzA1NDUsCiAgdGltZU5vdEluVmlld0VyciA9IC0zMDU0NiwKICBwcm9wZXJ0eU5vdFN1cHBvcnRl
ZEJ5Tm9kZUVyciA9IC0zMDU0NywKICBzZXR0aW5nTm90U3VwcG9ydGVkQnlOb2RlRXJyID0gLTMw
NTQ4LAogIGxpbWl0UmVhY2hlZEVyciA9IC0zMDU0OSwKICBpbnZhbGlkTm9kZUZvcm1hdEVyciA9
IC0zMDU1MCwKICBpbnZhbGlkSG90U3BvdElERXJyID0gLTMwNTUxLAogIG5vTWVtb3J5Tm9kZUZh
aWxlZEluaXRpYWxpemUgPSAtMzA1NTIsCiAgc3RyZWFtaW5nTm9kZU5vdFJlYWR5RXJyID0gLTMw
NTUzLAogIHF0dnJMaWJyYXJ5TG9hZEVyciA9IC0zMDU1NCwKICBxdHZyVW5pbml0aWFsaXplZCA9
IC0zMDU1NQp9OwoKCgplbnVtIHsKICB0aGVtZUludmFsaWRCcnVzaEVyciA9IC0zMDU2MCwKICB0
aGVtZVByb2Nlc3NSZWdpc3RlcmVkRXJyID0gLTMwNTYxLAogIHRoZW1lUHJvY2Vzc05vdFJlZ2lz
dGVyZWRFcnIgPSAtMzA1NjIsCiAgdGhlbWVCYWRUZXh0Q29sb3JFcnIgPSAtMzA1NjMsCiAgdGhl
bWVIYXNOb0FjY2VudHNFcnIgPSAtMzA1NjQsCiAgdGhlbWVCYWRDdXJzb3JJbmRleEVyciA9IC0z
MDU2NSwKICB0aGVtZVNjcmlwdEZvbnROb3RGb3VuZEVyciA9IC0zMDU2NiwKICB0aGVtZU1vbml0
b3JEZXB0aE5vdFN1cHBvcnRlZEVyciA9IC0zMDU2NywKICB0aGVtZU5vQXBwcm9wcmlhdGVCcnVz
aEVyciA9IC0zMDU2OAp9OwoKCgoKCgoKZW51bSB7CgoKCgoKCiAgZXJyTWVzc2FnZU5vdFN1cHBv
cnRlZCA9IC0zMDU4MCwKCgoKCgoKCiAgZXJyRGF0YU5vdFN1cHBvcnRlZCA9IC0zMDU4MSwKCgoK
CgoKICBlcnJDb250cm9sRG9lc250U3VwcG9ydEZvY3VzID0gLTMwNTgyLAoKCgoKCgoKICBlcnJV
bmtub3duQ29udHJvbCA9IC0zMDU4NCwKIyAyNzg4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9NYWNFcnJvcnMuaCIgMwogIGVyckNvdWxkbnRTZXRGb2N1cyA9IC0zMDU4NSwKIyAy
Nzk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNFcnJvcnMuaCIgMwogIGVy
ck5vUm9vdENvbnRyb2wgPSAtMzA1ODYsCgoKCgoKICBlcnJSb290QWxyZWFkeUV4aXN0cyA9IC0z
MDU4NywKCgoKCgogIGVyckludmFsaWRQYXJ0Q29kZSA9IC0zMDU4OCwKIyAyODIwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNFcnJvcnMuaCIgMwogIGVyckNvbnRyb2xzQWxy
ZWFkeUV4aXN0ID0gLTMwNTg5LAoKCgoKCiAgZXJyQ29udHJvbElzTm90RW1iZWRkZXIgPSAtMzA1
OTAsCgoKCgoKCiAgZXJyRGF0YVNpemVNaXNtYXRjaCA9IC0zMDU5MSwKCgoKCgoKICBlcnJDb250
cm9sSGlkZGVuT3JEaXNhYmxlZCA9IC0zMDU5MiwKCgoKCgoKICBlcnJDYW50RW1iZWRJbnRvU2Vs
ZiA9IC0zMDU5NCwKCgoKCgoKICBlcnJDYW50RW1iZWRSb290ID0gLTMwNTk1LAoKCgoKCiAgZXJy
SXRlbU5vdENvbnRyb2wgPSAtMzA1OTYsCgoKCgoKCgogIGNvbnRyb2xJbnZhbGlkRGF0YVZlcnNp
b25FcnIgPSAtMzA1OTcsCgoKCgoKICBjb250cm9sUHJvcGVydHlJbnZhbGlkID0gLTU2MDMsCgoK
CgoKCiAgY29udHJvbFByb3BlcnR5Tm90Rm91bmRFcnIgPSAtNTYwNCwKCgoKCiAgY29udHJvbEhh
bmRsZUludmFsaWRFcnIgPSAtMzA1OTkKfTsKCgoKCgplbnVtIHsKICBrVVJMSW52YWxpZFVSTFJl
ZmVyZW5jZUVycm9yID0gLTMwNzcwLAogIGtVUkxQcm9ncmVzc0FscmVhZHlEaXNwbGF5ZWRFcnJv
ciA9IC0zMDc3MSwKICBrVVJMRGVzdGluYXRpb25FeGlzdHNFcnJvciA9IC0zMDc3MiwKICBrVVJM
SW52YWxpZFVSTEVycm9yID0gLTMwNzczLAogIGtVUkxVbnN1cHBvcnRlZFNjaGVtZUVycm9yID0g
LTMwNzc0LAogIGtVUkxTZXJ2ZXJCdXN5RXJyb3IgPSAtMzA3NzUsCiAga1VSTEF1dGhlbnRpY2F0
aW9uRXJyb3IgPSAtMzA3NzYsCiAga1VSTFByb3BlcnR5Tm90WWV0S25vd25FcnJvciA9IC0zMDc3
NywKICBrVVJMVW5rbm93blByb3BlcnR5RXJyb3IgPSAtMzA3NzgsCiAga1VSTFByb3BlcnR5QnVm
ZmVyVG9vU21hbGxFcnJvciA9IC0zMDc3OSwKICBrVVJMVW5zZXR0YWJsZVByb3BlcnR5RXJyb3Ig
PSAtMzA3ODAsCiAga1VSTEludmFsaWRDYWxsRXJyb3IgPSAtMzA3ODEsCiAga1VSTEZpbGVFbXB0
eUVycm9yID0gLTMwNzgzLAogIGtVUkxFeHRlbnNpb25GYWlsdXJlRXJyb3IgPSAtMzA3ODUsCiAg
a1VSTEludmFsaWRDb25maWd1cmF0aW9uRXJyb3IgPSAtMzA3ODYsCiAga1VSTEFjY2Vzc05vdEF2
YWlsYWJsZUVycm9yID0gLTMwNzg3LAogIGtVUkw2OGtOb3RTdXBwb3J0ZWRFcnJvciA9IC0zMDc4
OAp9OwojIDI5MjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY0Vycm9ycy5o
IiAzCmVudW0gewogIGVyckNwcEdlbmVyYWwgPSAtMzIwMDAsCiAgZXJyQ3BwYmFkX2FsbG9jID0g
LTMyMDAxLAogIGVyckNwcGJhZF9jYXN0ID0gLTMyMDAyLAogIGVyckNwcGJhZF9leGNlcHRpb24g
PSAtMzIwMDMsCiAgZXJyQ3BwYmFkX3R5cGVpZCA9IC0zMjAwNCwKICBlcnJDcHBsb2dpY19lcnJv
ciA9IC0zMjAwNSwKICBlcnJDcHBkb21haW5fZXJyb3IgPSAtMzIwMDYsCiAgZXJyQ3BwaW52YWxp
ZF9hcmd1bWVudCA9IC0zMjAwNywKICBlcnJDcHBsZW5ndGhfZXJyb3IgPSAtMzIwMDgsCiAgZXJy
Q3Bwb3V0X29mX3JhbmdlID0gLTMyMDA5LAogIGVyckNwcHJ1bnRpbWVfZXJyb3IgPSAtMzIwMTAs
CiAgZXJyQ3Bwb3ZlcmZsb3dfZXJyb3IgPSAtMzIwMTEsCiAgZXJyQ3BwcmFuZ2VfZXJyb3IgPSAt
MzIwMTIsCiAgZXJyQ3BwdW5kZXJmbG93X2Vycm9yID0gLTMyMDEzLAogIGVyckNwcGlvc19iYXNl
X2ZhaWx1cmUgPSAtMzIwMTQsCiAgZXJyQ3BwTGFzdFN5c3RlbURlZmluZWRFcnJvciA9IC0zMjAy
MCwKICBlcnJDcHBMYXN0VXNlckRlZmluZWRFcnJvciA9IC0zMjA0OQp9OwoKCmVudW0gewogIGJh
ZENvbXBvbmVudEluc3RhbmNlID0gKGludCkweDgwMDA4MDAxLAogIGJhZENvbXBvbmVudFNlbGVj
dG9yID0gKGludCkweDgwMDA4MDAyCn07CgoKCmVudW0gewogIGRzQnVzRXJyb3IgPSAxLAogIGRz
QWRkcmVzc0VyciA9IDIsCiAgZHNJbGxJbnN0RXJyID0gMywKICBkc1plcm9EaXZFcnIgPSA0LAog
IGRzQ2hrRXJyID0gNSwKICBkc092Zmxvd0VyciA9IDYsCiAgZHNQcml2RXJyID0gNywKICBkc1Ry
YWNlRXJyID0gOCwKICBkc0xpbmVBRXJyID0gOSwKICBkc0xpbmVGRXJyID0gMTAsCiAgZHNNaXNj
RXJyID0gMTEsCiAgZHNDb3JlRXJyID0gMTIsCiAgZHNJcnFFcnIgPSAxMywKICBkc0lPQ29yZUVy
ciA9IDE0LAogIGRzTG9hZEVyciA9IDE1LAogIGRzRlBFcnIgPSAxNiwKICBkc05vUGFja0VyciA9
IDE3LAogIGRzTm9QazEgPSAxOCwKICBkc05vUGsyID0gMTkKfTsKCmVudW0gewogIGRzTm9QazMg
PSAyMCwKICBkc05vUGs0ID0gMjEsCiAgZHNOb1BrNSA9IDIyLAogIGRzTm9QazYgPSAyMywKICBk
c05vUGs3ID0gMjQsCiAgZHNNZW1GdWxsRXJyID0gMjUsCiAgZHNCYWRMYXVuY2ggPSAyNiwKICBk
c0ZTRXJyID0gMjcsCiAgZHNTdGtuSGVhcCA9IDI4LAogIG5lZ1pjYkZyZWVFcnIgPSAzMywKICBk
c0ZpbmRlckVyciA9IDQxLAogIGRzQmFkU2xvdEludCA9IDUxLAogIGRzQmFkU0FORU9wY29kZSA9
IDgxLAogIGRzQmFkUGF0Y2hIZWFkZXIgPSA4MywKICBtZW51UHJnRXJyID0gODQsCiAgZHNNQmFy
TkZuZCA9IDg1LAogIGRzSE1lbnVGaW5kRXJyID0gODYsCiAgZHNXREVGTm90Rm91bmQgPSA4NywK
ICBkc0NERUZOb3RGb3VuZCA9IDg4LAogIGRzTURFRk5vdEZvdW5kID0gODkKfTsKCmVudW0gewog
IGRzTm9GUFUgPSA5MCwKICBkc05vUGF0Y2ggPSA5OCwKICBkc0JhZFBhdGNoID0gOTksCiAgZHNQ
YXJpdHlFcnIgPSAxMDEsCiAgZHNPbGRTeXN0ZW0gPSAxMDIsCiAgZHMzMkJpdE1vZGUgPSAxMDMs
CiAgZHNOZWVkVG9Xcml0ZUJvb3RCbG9ja3MgPSAxMDQsCiAgZHNOb3RFbm91Z2hSQU1Ub0Jvb3Qg
PSAxMDUsCiAgZHNCdWZQdHJUb29Mb3cgPSAxMDYsCiAgZHNWTURlZmVycmVkRnVuY1RhYmxlRnVs
bCA9IDExMiwKICBkc1ZNQmFkQmFja2luZ1N0b3JlID0gMTEzLAogIGRzQ2FudEhvbGRTeXN0ZW1I
ZWFwID0gMTE0LAogIGRzU3lzdGVtUmVxdWlyZXNQb3dlclBDID0gMTE2LAogIGRzR2liYmx5TW92
ZWRUb0Rpc2FibGVkRm9sZGVyID0gMTE3LAogIGRzVW5Cb290YWJsZVN5c3RlbSA9IDExOCwKICBk
c011c3RVc2VGQ0JBY2Nlc3NvcnMgPSAxMTksCiAgZHNNYWNPU1JPTVZlcnNpb25Ub29PbGQgPSAx
MjAsCiAgZHNMb3N0Q29ubmVjdGlvblRvTmV0d29ya0Rpc2sgPSAxMjEsCiAgZHNSQU1EaXNrVG9v
QmlnID0gMTIyLAogIGRzV3JpdGVUb1N1cGVydmlzb3JTdGFja0d1YXJkUGFnZSA9IDEyOCwKICBk
c1JlaW5zZXJ0ID0gMzAsCiAgc2h1dERvd25BbGVydCA9IDQyLAogIGRzU2h1dERvd25PclJlc3Rh
cnQgPSAyMDAwMCwKICBkc1N3aXRjaE9mZk9yUmVzdGFydCA9IDIwMDAxLAogIGRzRm9yY2VkUXVp
dCA9IDIwMDAyLAogIGRzUmVtb3ZlRGlzayA9IDIwMDAzLAogIGRzRGlydHlEaXNrID0gMjAwMDQs
CiAgZHNTaHV0RG93bk9yUmVzdW1lID0gMjAxMDksCiAgZHNTQ1NJV2FybiA9IDIwMDEwLAogIGRz
TUJTeXNFcnJvciA9IDI5MjAwLAogIGRzTUJGbHB5U3lzRXJyb3IgPSAyOTIwMSwKICBkc01CQVRB
U3lzRXJyb3IgPSAyOTIwMiwKICBkc01CQVRBUElTeXNFcnJvciA9IDI5MjAzLAogIGRzTUJFeHRl
cm5GbHB5U3lzRXJyb3IgPSAyOTIwNCwKICBkc1BDQ2FyZEFUQVN5c0Vycm9yID0gMjkyMDUKfTsK
CgoKCgoKZW51bSB7CiAgZHNOb0V4dHNNYWNzQnVnID0gLTEsCiAgZHNOb0V4dHNEaXNhc3NlbWJs
ZXIgPSAtMiwKICBkc01hY3NCdWdJbnN0YWxsZWQgPSAtMTAsCiAgZHNEaXNhc3NlbWJsZXJJbnN0
YWxsZWQgPSAtMTEsCiAgZHNFeHRlbnNpb25zRGlzYWJsZWQgPSAtMTMsCiAgZHNHcmVldGluZyA9
IDQwLAogIGRzU3lzRXJyID0gMzI3NjcsCgogIFdERUZORm5kID0gZHNXREVGTm90Rm91bmQKfTsK
CmVudW0gewogIENERUZORm5kID0gZHNDREVGTm90Rm91bmQsCiAgZHNOb3RUaGUxID0gMzEsCiAg
ZHNCYWRTdGFydHVwRGlzayA9IDQyLAogIGRzU3lzdGVtRmlsZUVyciA9IDQzLAogIGRzSEQyMElu
c3RhbGxlZCA9IC0xMiwKICBtQmFyTkZuZCA9IC0xMjYsCiAgZnNEU0ludEVyciA9IC0xMjcsCiAg
aE1lbnVGaW5kRXJyID0gLTEyNywKICB1c2VyQnJlYWsgPSAtNDkwLAogIHN0clVzZXJCcmVhayA9
IC00OTEsCiAgZXhVc2VyQnJlYWsgPSAtNDkyCn07CgoKZW51bSB7CgogIGRzQmFkTGlicmFyeSA9
IDEwMTAsCiAgZHNNaXhlZE1vZGVGYWlsdXJlID0gMTAxMQp9OwojIDMwNzggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL01hY0Vycm9ycy5oIiAzCmVudW0gewogIGtQT1NJWEVycm9y
QmFzZSA9IDEwMDAwMCwKICBrUE9TSVhFcnJvckVQRVJNID0gMTAwMDAxLAogIGtQT1NJWEVycm9y
RU5PRU5UID0gMTAwMDAyLAogIGtQT1NJWEVycm9yRVNSQ0ggPSAxMDAwMDMsCiAga1BPU0lYRXJy
b3JFSU5UUiA9IDEwMDAwNCwKICBrUE9TSVhFcnJvckVJTyA9IDEwMDAwNSwKICBrUE9TSVhFcnJv
ckVOWElPID0gMTAwMDA2LAogIGtQT1NJWEVycm9yRTJCSUcgPSAxMDAwMDcsCiAga1BPU0lYRXJy
b3JFTk9FWEVDID0gMTAwMDA4LAogIGtQT1NJWEVycm9yRUJBREYgPSAxMDAwMDksCiAga1BPU0lY
RXJyb3JFQ0hJTEQgPSAxMDAwMTAsCiAga1BPU0lYRXJyb3JFREVBRExLID0gMTAwMDExLAogIGtQ
T1NJWEVycm9yRU5PTUVNID0gMTAwMDEyLAogIGtQT1NJWEVycm9yRUFDQ0VTID0gMTAwMDEzLAog
IGtQT1NJWEVycm9yRUZBVUxUID0gMTAwMDE0LAogIGtQT1NJWEVycm9yRU5PVEJMSyA9IDEwMDAx
NSwKICBrUE9TSVhFcnJvckVCVVNZID0gMTAwMDE2LAogIGtQT1NJWEVycm9yRUVYSVNUID0gMTAw
MDE3LAogIGtQT1NJWEVycm9yRVhERVYgPSAxMDAwMTgsCiAga1BPU0lYRXJyb3JFTk9ERVYgPSAx
MDAwMTksCiAga1BPU0lYRXJyb3JFTk9URElSID0gMTAwMDIwLAogIGtQT1NJWEVycm9yRUlTRElS
ID0gMTAwMDIxLAogIGtQT1NJWEVycm9yRUlOVkFMID0gMTAwMDIyLAogIGtQT1NJWEVycm9yRU5G
SUxFID0gMTAwMDIzLAogIGtQT1NJWEVycm9yRU1GSUxFID0gMTAwMDI0LAogIGtQT1NJWEVycm9y
RU5PVFRZID0gMTAwMDI1LAogIGtQT1NJWEVycm9yRVRYVEJTWSA9IDEwMDAyNiwKICBrUE9TSVhF
cnJvckVGQklHID0gMTAwMDI3LAogIGtQT1NJWEVycm9yRU5PU1BDID0gMTAwMDI4LAogIGtQT1NJ
WEVycm9yRVNQSVBFID0gMTAwMDI5LAogIGtQT1NJWEVycm9yRVJPRlMgPSAxMDAwMzAsCiAga1BP
U0lYRXJyb3JFTUxJTksgPSAxMDAwMzEsCiAga1BPU0lYRXJyb3JFUElQRSA9IDEwMDAzMiwKICBr
UE9TSVhFcnJvckVET00gPSAxMDAwMzMsCiAga1BPU0lYRXJyb3JFUkFOR0UgPSAxMDAwMzQsCiAg
a1BPU0lYRXJyb3JFQUdBSU4gPSAxMDAwMzUsCiAga1BPU0lYRXJyb3JFSU5QUk9HUkVTUyA9IDEw
MDAzNiwKICBrUE9TSVhFcnJvckVBTFJFQURZID0gMTAwMDM3LAogIGtQT1NJWEVycm9yRU5PVFNP
Q0sgPSAxMDAwMzgsCiAga1BPU0lYRXJyb3JFREVTVEFERFJSRVEgPSAxMDAwMzksCiAga1BPU0lY
RXJyb3JFTVNHU0laRSA9IDEwMDA0MCwKICBrUE9TSVhFcnJvckVQUk9UT1RZUEUgPSAxMDAwNDEs
CiAga1BPU0lYRXJyb3JFTk9QUk9UT09QVCA9IDEwMDA0MiwKICBrUE9TSVhFcnJvckVQUk9UT05P
U1VQUE9SVCA9IDEwMDA0MywKICBrUE9TSVhFcnJvckVTT0NLVE5PU1VQUE9SVCA9IDEwMDA0NCwK
ICBrUE9TSVhFcnJvckVOT1RTVVAgPSAxMDAwNDUsCiAga1BPU0lYRXJyb3JFUEZOT1NVUFBPUlQg
PSAxMDAwNDYsCiAga1BPU0lYRXJyb3JFQUZOT1NVUFBPUlQgPSAxMDAwNDcsCiAga1BPU0lYRXJy
b3JFQUREUklOVVNFID0gMTAwMDQ4LAogIGtQT1NJWEVycm9yRUFERFJOT1RBVkFJTCA9IDEwMDA0
OSwKICBrUE9TSVhFcnJvckVORVRET1dOID0gMTAwMDUwLAogIGtQT1NJWEVycm9yRU5FVFVOUkVB
Q0ggPSAxMDAwNTEsCiAga1BPU0lYRXJyb3JFTkVUUkVTRVQgPSAxMDAwNTIsCiAga1BPU0lYRXJy
b3JFQ09OTkFCT1JURUQgPSAxMDAwNTMsCiAga1BPU0lYRXJyb3JFQ09OTlJFU0VUID0gMTAwMDU0
LAogIGtQT1NJWEVycm9yRU5PQlVGUyA9IDEwMDA1NSwKICBrUE9TSVhFcnJvckVJU0NPTk4gPSAx
MDAwNTYsCiAga1BPU0lYRXJyb3JFTk9UQ09OTiA9IDEwMDA1NywKICBrUE9TSVhFcnJvckVTSFVU
RE9XTiA9IDEwMDA1OCwKICBrUE9TSVhFcnJvckVUT09NQU5ZUkVGUyA9IDEwMDA1OSwKICBrUE9T
SVhFcnJvckVUSU1FRE9VVCA9IDEwMDA2MCwKICBrUE9TSVhFcnJvckVDT05OUkVGVVNFRCA9IDEw
MDA2MSwKICBrUE9TSVhFcnJvckVMT09QID0gMTAwMDYyLAogIGtQT1NJWEVycm9yRU5BTUVUT09M
T05HID0gMTAwMDYzLAogIGtQT1NJWEVycm9yRUhPU1RET1dOID0gMTAwMDY0LAogIGtQT1NJWEVy
cm9yRUhPU1RVTlJFQUNIID0gMTAwMDY1LAogIGtQT1NJWEVycm9yRU5PVEVNUFRZID0gMTAwMDY2
LAogIGtQT1NJWEVycm9yRVBST0NMSU0gPSAxMDAwNjcsCiAga1BPU0lYRXJyb3JFVVNFUlMgPSAx
MDAwNjgsCiAga1BPU0lYRXJyb3JFRFFVT1QgPSAxMDAwNjksCiAga1BPU0lYRXJyb3JFU1RBTEUg
PSAxMDAwNzAsCiAga1BPU0lYRXJyb3JFUkVNT1RFID0gMTAwMDcxLAogIGtQT1NJWEVycm9yRUJB
RFJQQyA9IDEwMDA3MiwKICBrUE9TSVhFcnJvckVSUENNSVNNQVRDSCA9IDEwMDA3MywKICBrUE9T
SVhFcnJvckVQUk9HVU5BVkFJTCA9IDEwMDA3NCwKICBrUE9TSVhFcnJvckVQUk9HTUlTTUFUQ0gg
PSAxMDAwNzUsCiAga1BPU0lYRXJyb3JFUFJPQ1VOQVZBSUwgPSAxMDAwNzYsCiAga1BPU0lYRXJy
b3JFTk9MQ0sgPSAxMDAwNzcsCiAga1BPU0lYRXJyb3JFTk9TWVMgPSAxMDAwNzgsCiAga1BPU0lY
RXJyb3JFRlRZUEUgPSAxMDAwNzksCiAga1BPU0lYRXJyb3JFQVVUSCA9IDEwMDA4MCwKICBrUE9T
SVhFcnJvckVORUVEQVVUSCA9IDEwMDA4MSwKICBrUE9TSVhFcnJvckVQV1JPRkYgPSAxMDAwODIs
CiAga1BPU0lYRXJyb3JFREVWRVJSID0gMTAwMDgzLAogIGtQT1NJWEVycm9yRU9WRVJGTE9XID0g
MTAwMDg0LAogIGtQT1NJWEVycm9yRUJBREVYRUMgPSAxMDAwODUsCiAga1BPU0lYRXJyb3JFQkFE
QVJDSCA9IDEwMDA4NiwKICBrUE9TSVhFcnJvckVTSExJQlZFUlMgPSAxMDAwODcsCiAga1BPU0lY
RXJyb3JFQkFETUFDSE8gPSAxMDAwODgsCiAga1BPU0lYRXJyb3JFQ0FOQ0VMRUQgPSAxMDAwODks
CiAga1BPU0lYRXJyb3JFSURSTSA9IDEwMDA5MCwKICBrUE9TSVhFcnJvckVOT01TRyA9IDEwMDA5
MSwKICBrUE9TSVhFcnJvckVJTFNFUSA9IDEwMDA5MiwKICBrUE9TSVhFcnJvckVOT0FUVFIgPSAx
MDAwOTMsCiAga1BPU0lYRXJyb3JFQkFETVNHID0gMTAwMDk0LAogIGtQT1NJWEVycm9yRU1VTFRJ
SE9QID0gMTAwMDk1LAogIGtQT1NJWEVycm9yRU5PREFUQSA9IDEwMDA5NiwKICBrUE9TSVhFcnJv
ckVOT0xJTksgPSAxMDAwOTcsCiAga1BPU0lYRXJyb3JFTk9TUiA9IDEwMDA5OCwKICBrUE9TSVhF
cnJvckVOT1NUUiA9IDEwMDA5OSwKICBrUE9TSVhFcnJvckVQUk9UTyA9IDEwMDEwMCwKICBrUE9T
SVhFcnJvckVUSU1FID0gMTAwMTAxLAogIGtQT1NJWEVycm9yRU9QTk9UU1VQUCA9IDEwMDEwMgp9
OwojIDMxOTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY0Vycm9ycy5oIiAz
CmV4dGVybiB2b2lkClN5c0Vycm9yKHNob3J0IGVycm9yQ29kZSkgOwoKCgoKCgp9CiMgMjUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1VUQ1V0aWxzLmgiIDIgMwojIDM2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9VVENVdGlscy5oIiAzCmV4dGVybiAiQyIgewoK
CiNwcmFnbWEgcGFjayhwdXNoLCAyKQoKCmVudW0gewogIGtVVENEZWZhdWx0T3B0aW9ucyA9IDAK
fTsKCgpzdHJ1Y3QgVVRDRGF0ZVRpbWUgewogIFVJbnQxNiBoaWdoU2Vjb25kczsKICBVSW50MzIg
bG93U2Vjb25kczsKICBVSW50MTYgZnJhY3Rpb247Cn07CnR5cGVkZWYgc3RydWN0IFVUQ0RhdGVU
aW1lIFVUQ0RhdGVUaW1lOwp0eXBlZGVmIFVUQ0RhdGVUaW1lICogVVRDRGF0ZVRpbWVQdHI7CnR5
cGVkZWYgVVRDRGF0ZVRpbWVQdHIgKiBVVENEYXRlVGltZUhhbmRsZTsKc3RydWN0IExvY2FsRGF0
ZVRpbWUgewogIFVJbnQxNiBoaWdoU2Vjb25kczsKICBVSW50MzIgbG93U2Vjb25kczsKICBVSW50
MTYgZnJhY3Rpb247Cn07CnR5cGVkZWYgc3RydWN0IExvY2FsRGF0ZVRpbWUgTG9jYWxEYXRlVGlt
ZTsKdHlwZWRlZiBMb2NhbERhdGVUaW1lICogTG9jYWxEYXRlVGltZVB0cjsKdHlwZWRlZiBMb2Nh
bERhdGVUaW1lUHRyICogTG9jYWxEYXRlVGltZUhhbmRsZTsKIyAyNDkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL1VUQ1V0aWxzLmgiIDMKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMg
NDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkNvcmUuaCIgMiAzCgoK
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dENvbW1vbi5oIiAxIDMK
IyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dENvbW1vbi5oIiAzCiNk
ZWZpbmUgX19URVhUQ09NTU9OX18gCiMgMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL1RleHRDb21tb24uaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikK
IyA1MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dENvbW1vbi5oIiAzCmVu
dW0gewoKCgoKICBrVGV4dEZsdXNoRGVmYXVsdCA9IDAsCgoKCgogIGtUZXh0Q2VudGVyID0gMSwK
CgoKCiAga1RleHRGbHVzaFJpZ2h0ID0gLTEsCgoKCgogIGtUZXh0Rmx1c2hMZWZ0ID0gLTIKfTsK
CgoKdHlwZWRlZiBVSW50MzIgVGV4dEVuY29kaW5nQmFzZTsKZW51bSB7CgogIGtUZXh0RW5jb2Rp
bmdNYWNSb21hbiA9IDAsCiAga1RleHRFbmNvZGluZ01hY0phcGFuZXNlID0gMSwKICBrVGV4dEVu
Y29kaW5nTWFjQ2hpbmVzZVRyYWQgPSAyLAogIGtUZXh0RW5jb2RpbmdNYWNLb3JlYW4gPSAzLAog
IGtUZXh0RW5jb2RpbmdNYWNBcmFiaWMgPSA0LAogIGtUZXh0RW5jb2RpbmdNYWNIZWJyZXcgPSA1
LAogIGtUZXh0RW5jb2RpbmdNYWNHcmVlayA9IDYsCiAga1RleHRFbmNvZGluZ01hY0N5cmlsbGlj
ID0gNywKICBrVGV4dEVuY29kaW5nTWFjRGV2YW5hZ2FyaSA9IDksCiAga1RleHRFbmNvZGluZ01h
Y0d1cm11a2hpID0gMTAsCiAga1RleHRFbmNvZGluZ01hY0d1amFyYXRpID0gMTEsCiAga1RleHRF
bmNvZGluZ01hY09yaXlhID0gMTIsCiAga1RleHRFbmNvZGluZ01hY0JlbmdhbGkgPSAxMywKICBr
VGV4dEVuY29kaW5nTWFjVGFtaWwgPSAxNCwKICBrVGV4dEVuY29kaW5nTWFjVGVsdWd1ID0gMTUs
CiAga1RleHRFbmNvZGluZ01hY0thbm5hZGEgPSAxNiwKICBrVGV4dEVuY29kaW5nTWFjTWFsYXlh
bGFtID0gMTcsCiAga1RleHRFbmNvZGluZ01hY1NpbmhhbGVzZSA9IDE4LAogIGtUZXh0RW5jb2Rp
bmdNYWNCdXJtZXNlID0gMTksCiAga1RleHRFbmNvZGluZ01hY0tobWVyID0gMjAsCiAga1RleHRF
bmNvZGluZ01hY1RoYWkgPSAyMSwKICBrVGV4dEVuY29kaW5nTWFjTGFvdGlhbiA9IDIyLAogIGtU
ZXh0RW5jb2RpbmdNYWNHZW9yZ2lhbiA9IDIzLAogIGtUZXh0RW5jb2RpbmdNYWNBcm1lbmlhbiA9
IDI0LAogIGtUZXh0RW5jb2RpbmdNYWNDaGluZXNlU2ltcCA9IDI1LAogIGtUZXh0RW5jb2RpbmdN
YWNUaWJldGFuID0gMjYsCiAga1RleHRFbmNvZGluZ01hY01vbmdvbGlhbiA9IDI3LAogIGtUZXh0
RW5jb2RpbmdNYWNFdGhpb3BpYyA9IDI4LAogIGtUZXh0RW5jb2RpbmdNYWNDZW50cmFsRXVyUm9t
YW4gPSAyOSwKICBrVGV4dEVuY29kaW5nTWFjVmlldG5hbWVzZSA9IDMwLAogIGtUZXh0RW5jb2Rp
bmdNYWNFeHRBcmFiaWMgPSAzMSwKICBrVGV4dEVuY29kaW5nTWFjU3ltYm9sID0gMzMsCiAga1Rl
eHRFbmNvZGluZ01hY0RpbmdiYXRzID0gMzQsCiAga1RleHRFbmNvZGluZ01hY1R1cmtpc2ggPSAz
NSwKICBrVGV4dEVuY29kaW5nTWFjQ3JvYXRpYW4gPSAzNiwKICBrVGV4dEVuY29kaW5nTWFjSWNl
bGFuZGljID0gMzcsCiAga1RleHRFbmNvZGluZ01hY1JvbWFuaWFuID0gMzgsCiAga1RleHRFbmNv
ZGluZ01hY0NlbHRpYyA9IDM5LAogIGtUZXh0RW5jb2RpbmdNYWNHYWVsaWMgPSA0MCwKICBrVGV4
dEVuY29kaW5nTWFjS2V5Ym9hcmRHbHlwaHMgPSA0MQp9OwoKCmVudW0gewogIGtUZXh0RW5jb2Rp
bmdNYWNUcmFkQ2hpbmVzZSA9IGtUZXh0RW5jb2RpbmdNYWNDaGluZXNlVHJhZCwKICBrVGV4dEVu
Y29kaW5nTWFjUlN5bWJvbCA9IDgsCiAga1RleHRFbmNvZGluZ01hY1NpbXBDaGluZXNlID0ga1Rl
eHRFbmNvZGluZ01hY0NoaW5lc2VTaW1wLAogIGtUZXh0RW5jb2RpbmdNYWNHZWV6ID0ga1RleHRF
bmNvZGluZ01hY0V0aGlvcGljLAogIGtUZXh0RW5jb2RpbmdNYWNFYXN0RXVyUm9tYW4gPSBrVGV4
dEVuY29kaW5nTWFjQ2VudHJhbEV1clJvbWFuLAogIGtUZXh0RW5jb2RpbmdNYWNVbmludGVycCA9
IDMyCn07CiMgMTQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0Q29tbW9u
LmgiIDMKZW51bSB7CiAga1RleHRFbmNvZGluZ01hY1VuaWNvZGUgPSAweDdFCn07CgoKZW51bSB7
CgogIGtUZXh0RW5jb2RpbmdNYWNGYXJzaSA9IDB4OEMsCgogIGtUZXh0RW5jb2RpbmdNYWNVa3Jh
aW5pYW4gPSAweDk4LAoKICBrVGV4dEVuY29kaW5nTWFjSW51aXQgPSAweEVDLAogIGtUZXh0RW5j
b2RpbmdNYWNWVDEwMCA9IDB4RkMKfTsKCgplbnVtIHsKICBrVGV4dEVuY29kaW5nTWFjSEZTID0g
MHhGRgp9OwoKCmVudW0gewogIGtUZXh0RW5jb2RpbmdVbmljb2RlRGVmYXVsdCA9IDB4MDEwMCwK
ICBrVGV4dEVuY29kaW5nVW5pY29kZVYxXzEgPSAweDAxMDEsCiAga1RleHRFbmNvZGluZ0lTTzEw
NjQ2XzE5OTMgPSAweDAxMDEsCiAga1RleHRFbmNvZGluZ1VuaWNvZGVWMl8wID0gMHgwMTAzLAog
IGtUZXh0RW5jb2RpbmdVbmljb2RlVjJfMSA9IDB4MDEwMywKICBrVGV4dEVuY29kaW5nVW5pY29k
ZVYzXzAgPSAweDAxMDQsCiAga1RleHRFbmNvZGluZ1VuaWNvZGVWM18xID0gMHgwMTA1LAogIGtU
ZXh0RW5jb2RpbmdVbmljb2RlVjNfMiA9IDB4MDEwNiwKICBrVGV4dEVuY29kaW5nVW5pY29kZVY0
XzAgPSAweDAxMDgsCiAga1RleHRFbmNvZGluZ1VuaWNvZGVWNV8wID0gMHgwMTBBLAogIGtUZXh0
RW5jb2RpbmdVbmljb2RlVjVfMSA9IDB4MDEwQgp9OwoKCmVudW0gewogIGtUZXh0RW5jb2RpbmdJ
U09MYXRpbjEgPSAweDAyMDEsCiAga1RleHRFbmNvZGluZ0lTT0xhdGluMiA9IDB4MDIwMiwKICBr
VGV4dEVuY29kaW5nSVNPTGF0aW4zID0gMHgwMjAzLAogIGtUZXh0RW5jb2RpbmdJU09MYXRpbjQg
PSAweDAyMDQsCiAga1RleHRFbmNvZGluZ0lTT0xhdGluQ3lyaWxsaWMgPSAweDAyMDUsCiAga1Rl
eHRFbmNvZGluZ0lTT0xhdGluQXJhYmljID0gMHgwMjA2LAogIGtUZXh0RW5jb2RpbmdJU09MYXRp
bkdyZWVrID0gMHgwMjA3LAogIGtUZXh0RW5jb2RpbmdJU09MYXRpbkhlYnJldyA9IDB4MDIwOCwK
ICBrVGV4dEVuY29kaW5nSVNPTGF0aW41ID0gMHgwMjA5LAogIGtUZXh0RW5jb2RpbmdJU09MYXRp
bjYgPSAweDAyMEEsCiAga1RleHRFbmNvZGluZ0lTT0xhdGluNyA9IDB4MDIwRCwKICBrVGV4dEVu
Y29kaW5nSVNPTGF0aW44ID0gMHgwMjBFLAogIGtUZXh0RW5jb2RpbmdJU09MYXRpbjkgPSAweDAy
MEYsCiAga1RleHRFbmNvZGluZ0lTT0xhdGluMTAgPSAweDAyMTAKfTsKCgplbnVtIHsKICBrVGV4
dEVuY29kaW5nRE9TTGF0aW5VUyA9IDB4MDQwMCwKICBrVGV4dEVuY29kaW5nRE9TR3JlZWsgPSAw
eDA0MDUsCiAga1RleHRFbmNvZGluZ0RPU0JhbHRpY1JpbSA9IDB4MDQwNiwKICBrVGV4dEVuY29k
aW5nRE9TTGF0aW4xID0gMHgwNDEwLAogIGtUZXh0RW5jb2RpbmdET1NHcmVlazEgPSAweDA0MTEs
CiAga1RleHRFbmNvZGluZ0RPU0xhdGluMiA9IDB4MDQxMiwKICBrVGV4dEVuY29kaW5nRE9TQ3ly
aWxsaWMgPSAweDA0MTMsCiAga1RleHRFbmNvZGluZ0RPU1R1cmtpc2ggPSAweDA0MTQsCiAga1Rl
eHRFbmNvZGluZ0RPU1BvcnR1Z3Vlc2UgPSAweDA0MTUsCiAga1RleHRFbmNvZGluZ0RPU0ljZWxh
bmRpYyA9IDB4MDQxNiwKICBrVGV4dEVuY29kaW5nRE9TSGVicmV3ID0gMHgwNDE3LAogIGtUZXh0
RW5jb2RpbmdET1NDYW5hZGlhbkZyZW5jaCA9IDB4MDQxOCwKICBrVGV4dEVuY29kaW5nRE9TQXJh
YmljID0gMHgwNDE5LAogIGtUZXh0RW5jb2RpbmdET1NOb3JkaWMgPSAweDA0MUEsCiAga1RleHRF
bmNvZGluZ0RPU1J1c3NpYW4gPSAweDA0MUIsCiAga1RleHRFbmNvZGluZ0RPU0dyZWVrMiA9IDB4
MDQxQywKICBrVGV4dEVuY29kaW5nRE9TVGhhaSA9IDB4MDQxRCwKICBrVGV4dEVuY29kaW5nRE9T
SmFwYW5lc2UgPSAweDA0MjAsCiAga1RleHRFbmNvZGluZ0RPU0NoaW5lc2VTaW1wbGlmID0gMHgw
NDIxLAogIGtUZXh0RW5jb2RpbmdET1NLb3JlYW4gPSAweDA0MjIsCiAga1RleHRFbmNvZGluZ0RP
U0NoaW5lc2VUcmFkID0gMHgwNDIzLAogIGtUZXh0RW5jb2RpbmdXaW5kb3dzTGF0aW4xID0gMHgw
NTAwLAogIGtUZXh0RW5jb2RpbmdXaW5kb3dzQU5TSSA9IDB4MDUwMCwKICBrVGV4dEVuY29kaW5n
V2luZG93c0xhdGluMiA9IDB4MDUwMSwKICBrVGV4dEVuY29kaW5nV2luZG93c0N5cmlsbGljID0g
MHgwNTAyLAogIGtUZXh0RW5jb2RpbmdXaW5kb3dzR3JlZWsgPSAweDA1MDMsCiAga1RleHRFbmNv
ZGluZ1dpbmRvd3NMYXRpbjUgPSAweDA1MDQsCiAga1RleHRFbmNvZGluZ1dpbmRvd3NIZWJyZXcg
PSAweDA1MDUsCiAga1RleHRFbmNvZGluZ1dpbmRvd3NBcmFiaWMgPSAweDA1MDYsCiAga1RleHRF
bmNvZGluZ1dpbmRvd3NCYWx0aWNSaW0gPSAweDA1MDcsCiAga1RleHRFbmNvZGluZ1dpbmRvd3NW
aWV0bmFtZXNlID0gMHgwNTA4LAogIGtUZXh0RW5jb2RpbmdXaW5kb3dzS29yZWFuSm9oYWIgPSAw
eDA1MTAKfTsKCgplbnVtIHsKICBrVGV4dEVuY29kaW5nVVNfQVNDSUkgPSAweDA2MDAsCiAga1Rl
eHRFbmNvZGluZ0FOU0VMID0gMHgwNjAxLAogIGtUZXh0RW5jb2RpbmdKSVNfWDAyMDFfNzYgPSAw
eDA2MjAsCiAga1RleHRFbmNvZGluZ0pJU19YMDIwOF84MyA9IDB4MDYyMSwKICBrVGV4dEVuY29k
aW5nSklTX1gwMjA4XzkwID0gMHgwNjIyLAogIGtUZXh0RW5jb2RpbmdKSVNfWDAyMTJfOTAgPSAw
eDA2MjMsCiAga1RleHRFbmNvZGluZ0pJU19DNjIyNl83OCA9IDB4MDYyNCwKICBrVGV4dEVuY29k
aW5nU2hpZnRKSVNfWDAyMTMgPSAweDA2MjgsCiAga1RleHRFbmNvZGluZ0pJU19YMDIxM19NZW5L
dVRlbiA9IDB4MDYyOSwKICBrVGV4dEVuY29kaW5nR0JfMjMxMl84MCA9IDB4MDYzMCwKICBrVGV4
dEVuY29kaW5nR0JLXzk1ID0gMHgwNjMxLAogIGtUZXh0RW5jb2RpbmdHQl8xODAzMF8yMDAwID0g
MHgwNjMyLAogIGtUZXh0RW5jb2RpbmdLU0NfNTYwMV84NyA9IDB4MDY0MCwKICBrVGV4dEVuY29k
aW5nS1NDXzU2MDFfOTJfSm9oYWIgPSAweDA2NDEsCiAga1RleHRFbmNvZGluZ0NOU18xMTY0M185
Ml9QMSA9IDB4MDY1MSwKICBrVGV4dEVuY29kaW5nQ05TXzExNjQzXzkyX1AyID0gMHgwNjUyLAog
IGtUZXh0RW5jb2RpbmdDTlNfMTE2NDNfOTJfUDMgPSAweDA2NTMKfTsKCgplbnVtIHsKICBrVGV4
dEVuY29kaW5nSVNPXzIwMjJfSlAgPSAweDA4MjAsCiAga1RleHRFbmNvZGluZ0lTT18yMDIyX0pQ
XzIgPSAweDA4MjEsCiAga1RleHRFbmNvZGluZ0lTT18yMDIyX0pQXzEgPSAweDA4MjIsCiAga1Rl
eHRFbmNvZGluZ0lTT18yMDIyX0pQXzMgPSAweDA4MjMsCiAga1RleHRFbmNvZGluZ0lTT18yMDIy
X0NOID0gMHgwODMwLAogIGtUZXh0RW5jb2RpbmdJU09fMjAyMl9DTl9FWFQgPSAweDA4MzEsCiAg
a1RleHRFbmNvZGluZ0lTT18yMDIyX0tSID0gMHgwODQwCn07CgoKZW51bSB7CiAga1RleHRFbmNv
ZGluZ0VVQ19KUCA9IDB4MDkyMCwKICBrVGV4dEVuY29kaW5nRVVDX0NOID0gMHgwOTMwLAogIGtU
ZXh0RW5jb2RpbmdFVUNfVFcgPSAweDA5MzEsCiAga1RleHRFbmNvZGluZ0VVQ19LUiA9IDB4MDk0
MAp9OwoKCmVudW0gewogIGtUZXh0RW5jb2RpbmdTaGlmdEpJUyA9IDB4MEEwMSwKICBrVGV4dEVu
Y29kaW5nS09JOF9SID0gMHgwQTAyLAogIGtUZXh0RW5jb2RpbmdCaWc1ID0gMHgwQTAzLAogIGtU
ZXh0RW5jb2RpbmdNYWNSb21hbkxhdGluMSA9IDB4MEEwNCwKICBrVGV4dEVuY29kaW5nSFpfR0Jf
MjMxMiA9IDB4MEEwNSwKICBrVGV4dEVuY29kaW5nQmlnNV9IS1NDU18xOTk5ID0gMHgwQTA2LAog
IGtUZXh0RW5jb2RpbmdWSVNDSUkgPSAweDBBMDcsCiAga1RleHRFbmNvZGluZ0tPSThfVSA9IDB4
MEEwOCwKICBrVGV4dEVuY29kaW5nQmlnNV9FID0gMHgwQTA5Cn07CgoKZW51bSB7CiAga1RleHRF
bmNvZGluZ05leHRTdGVwTGF0aW4gPSAweDBCMDEsCiAga1RleHRFbmNvZGluZ05leHRTdGVwSmFw
YW5lc2UgPSAweDBCMDIKfTsKCgplbnVtIHsKICBrVGV4dEVuY29kaW5nRUJDRElDX0xhdGluQ29y
ZSA9IDB4MEMwMSwKICBrVGV4dEVuY29kaW5nRUJDRElDX0NQMDM3ID0gMHgwQzAyCn07CgoKZW51
bSB7CiAga1RleHRFbmNvZGluZ011bHRpUnVuID0gMHgwRkZGLAogIGtUZXh0RW5jb2RpbmdVbmtu
b3duID0gMHhGRkZGCn07CgoKZW51bSB7CiAga1RleHRFbmNvZGluZ0VCQ0RJQ19VUyA9IDB4MEMw
MQp9OwoKCgp0eXBlZGVmIFVJbnQzMiBUZXh0RW5jb2RpbmdWYXJpYW50OwoKZW51bSB7CiAga1Rl
eHRFbmNvZGluZ0RlZmF1bHRWYXJpYW50ID0gMAp9OwoKCmVudW0gewogIGtNYWNSb21hbkRlZmF1
bHRWYXJpYW50ID0gMCwKICBrTWFjUm9tYW5DdXJyZW5jeVNpZ25WYXJpYW50ID0gMSwKICBrTWFj
Um9tYW5FdXJvU2lnblZhcmlhbnQgPSAyCn07CgoKZW51bSB7CiAga01hY0N5cmlsbGljRGVmYXVs
dFZhcmlhbnQgPSAwLAogIGtNYWNDeXJpbGxpY0N1cnJTaWduU3RkVmFyaWFudCA9IDEsCiAga01h
Y0N5cmlsbGljQ3VyclNpZ25Va3JWYXJpYW50ID0gMiwKICBrTWFjQ3lyaWxsaWNFdXJvU2lnblZh
cmlhbnQgPSAzCn07CgoKZW51bSB7CiAga01hY0ljZWxhbmRpY1N0ZERlZmF1bHRWYXJpYW50ID0g
MCwKICBrTWFjSWNlbGFuZGljVFREZWZhdWx0VmFyaWFudCA9IDEsCgogIGtNYWNJY2VsYW5kaWNT
dGRDdXJyU2lnblZhcmlhbnQgPSAyLAogIGtNYWNJY2VsYW5kaWNUVEN1cnJTaWduVmFyaWFudCA9
IDMsCgogIGtNYWNJY2VsYW5kaWNTdGRFdXJvU2lnblZhcmlhbnQgPSA0LAogIGtNYWNJY2VsYW5k
aWNUVEV1cm9TaWduVmFyaWFudCA9IDUKfTsKCgplbnVtIHsKICBrTWFjQ3JvYXRpYW5EZWZhdWx0
VmFyaWFudCA9IDAsCiAga01hY0Nyb2F0aWFuQ3VycmVuY3lTaWduVmFyaWFudCA9IDEsCiAga01h
Y0Nyb2F0aWFuRXVyb1NpZ25WYXJpYW50ID0gMgp9OwoKCgplbnVtIHsKICBrTWFjUm9tYW5pYW5E
ZWZhdWx0VmFyaWFudCA9IDAsCiAga01hY1JvbWFuaWFuQ3VycmVuY3lTaWduVmFyaWFudCA9IDEs
CiAga01hY1JvbWFuaWFuRXVyb1NpZ25WYXJpYW50ID0gMgp9OwoKCgplbnVtIHsKICBrTWFjSmFw
YW5lc2VTdGFuZGFyZFZhcmlhbnQgPSAwLAogIGtNYWNKYXBhbmVzZVN0ZE5vVmVydGljYWxzVmFy
aWFudCA9IDEsCiAga01hY0phcGFuZXNlQmFzaWNWYXJpYW50ID0gMiwKICBrTWFjSmFwYW5lc2VQ
b3N0U2NyaXB0U2NyblZhcmlhbnQgPSAzLAogIGtNYWNKYXBhbmVzZVBvc3RTY3JpcHRQcmludFZh
cmlhbnQgPSA0LAogIGtNYWNKYXBhbmVzZVZlcnRBdEt1UGx1c1RlblZhcmlhbnQgPSA1Cn07CgoK
ZW51bSB7CiAga01hY0FyYWJpY1N0YW5kYXJkVmFyaWFudCA9IDAsCiAga01hY0FyYWJpY1RydWVU
eXBlVmFyaWFudCA9IDEsCiAga01hY0FyYWJpY1RodWx1dGhWYXJpYW50ID0gMiwKICBrTWFjQXJh
YmljQWxCYXlhblZhcmlhbnQgPSAzCn07CgoKZW51bSB7CiAga01hY0ZhcnNpU3RhbmRhcmRWYXJp
YW50ID0gMCwKICBrTWFjRmFyc2lUcnVlVHlwZVZhcmlhbnQgPSAxCn07CgoKZW51bSB7CiAga01h
Y0hlYnJld1N0YW5kYXJkVmFyaWFudCA9IDAsCiAga01hY0hlYnJld0ZpZ3VyZVNwYWNlVmFyaWFu
dCA9IDEKfTsKCgplbnVtIHsKICBrTWFjR3JlZWtEZWZhdWx0VmFyaWFudCA9IDAsCiAga01hY0dy
ZWVrTm9FdXJvU2lnblZhcmlhbnQgPSAxLAogIGtNYWNHcmVla0V1cm9TaWduVmFyaWFudCA9IDIK
fTsKCgplbnVtIHsKICBrTWFjVlQxMDBEZWZhdWx0VmFyaWFudCA9IDAsCiAga01hY1ZUMTAwQ3Vy
cmVuY3lTaWduVmFyaWFudCA9IDEsCiAga01hY1ZUMTAwRXVyb1NpZ25WYXJpYW50ID0gMgp9OwoK
CmVudW0gewogIGtVbmljb2RlTm9TdWJzZXQgPSAwLAogIGtVbmljb2RlTm9ybWFsaXphdGlvbkZv
cm1EID0gNSwKICBrVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtQyA9IDMsCiAga1VuaWNvZGVIRlNQ
bHVzRGVjb21wVmFyaWFudCA9IDgsCiAga1VuaWNvZGVIRlNQbHVzQ29tcFZhcmlhbnQgPSA5Cn07
CgoKZW51bSB7CiAga0lTT0xhdGluMVN0YW5kYXJkVmFyaWFudCA9IDAsCiAga0lTT0xhdGluMU11
c2ljQ0RWYXJpYW50ID0gMQp9OwojIDQzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvVGV4dENvbW1vbi5oIiAzCmVudW0gewogIGtJU09MYXRpbkFyYWJpY0ltcGxpY2l0T3JkZXJW
YXJpYW50ID0gMCwKICBrSVNPTGF0aW5BcmFiaWNWaXN1YWxPcmRlclZhcmlhbnQgPSAxLAogIGtJ
U09MYXRpbkFyYWJpY0V4cGxpY2l0T3JkZXJWYXJpYW50ID0gMgp9OwoKZW51bSB7CiAga0lTT0xh
dGluSGVicmV3SW1wbGljaXRPcmRlclZhcmlhbnQgPSAwLAogIGtJU09MYXRpbkhlYnJld1Zpc3Vh
bE9yZGVyVmFyaWFudCA9IDEsCiAga0lTT0xhdGluSGVicmV3RXhwbGljaXRPcmRlclZhcmlhbnQg
PSAyCn07CgoKZW51bSB7CiAga1dpbmRvd3NMYXRpbjFTdGFuZGFyZFZhcmlhbnQgPSAwLAogIGtX
aW5kb3dzTGF0aW4xUGFsbVZhcmlhbnQgPSAxCn07CgoKZW51bSB7CiAga0RPU0phcGFuZXNlU3Rh
bmRhcmRWYXJpYW50ID0gMCwKICBrRE9TSmFwYW5lc2VQYWxtVmFyaWFudCA9IDEKfTsKCgoKCgoK
ZW51bSB7CiAga0VVQ19DTl9CYXNpY1ZhcmlhbnQgPSAwLAogIGtFVUNfQ05fRE9TVmFyaWFudCA9
IDEKfTsKCgoKCgoKZW51bSB7CiAga0VVQ19LUl9CYXNpY1ZhcmlhbnQgPSAwLAogIGtFVUNfS1Jf
RE9TVmFyaWFudCA9IDEKfTsKCgoKCgoKZW51bSB7CiAga1NoaWZ0SklTX0Jhc2ljVmFyaWFudCA9
IDAsCiAga1NoaWZ0SklTX0RPU1ZhcmlhbnQgPSAxLAogIGtTaGlmdEpJU19NdXNpY0NEVmFyaWFu
dCA9IDIKfTsKCgoKCgoKZW51bSB7CiAga0JpZzVfQmFzaWNWYXJpYW50ID0gMCwKICBrQmlnNV9T
dGFuZGFyZFZhcmlhbnQgPSAxLAogIGtCaWc1X0VUZW5WYXJpYW50ID0gMiwKICBrQmlnNV9ET1NW
YXJpYW50ID0gMwp9OwoKCmVudW0gewogIGtNYWNSb21hbkxhdGluMURlZmF1bHRWYXJpYW50ID0g
MCwKICBrTWFjUm9tYW5MYXRpbjFTdGFuZGFyZFZhcmlhbnQgPSAyLAogIGtNYWNSb21hbkxhdGlu
MVR1cmtpc2hWYXJpYW50ID0gNiwKICBrTWFjUm9tYW5MYXRpbjFDcm9hdGlhblZhcmlhbnQgPSA4
LAogIGtNYWNSb21hbkxhdGluMUljZWxhbmRpY1ZhcmlhbnQgPSAxMSwKICBrTWFjUm9tYW5MYXRp
bjFSb21hbmlhblZhcmlhbnQgPSAxNAp9OwoKCmVudW0gewogIGtVbmljb2RlTm9Db21wYXRpYmls
aXR5VmFyaWFudCA9IDEsCiAga1VuaWNvZGVOb0NvcnBvcmF0ZVZhcmlhbnQgPSA0Cn07CgoKZW51
bSB7CiAga01hY1JvbWFuU3RhbmRhcmRWYXJpYW50ID0gMCwKICBrTWFjSWNlbGFuZGljU3RhbmRh
cmRWYXJpYW50ID0gMCwKICBrTWFjSWNlbGFuZGljVHJ1ZVR5cGVWYXJpYW50ID0gMSwKICBrSmFw
YW5lc2VTdGFuZGFyZFZhcmlhbnQgPSAwLAogIGtKYXBhbmVzZVN0ZE5vVmVydGljYWxzVmFyaWFu
dCA9IDEsCiAga0phcGFuZXNlQmFzaWNWYXJpYW50ID0gMiwKICBrSmFwYW5lc2VQb3N0U2NyaXB0
U2NyblZhcmlhbnQgPSAzLAogIGtKYXBhbmVzZVBvc3RTY3JpcHRQcmludFZhcmlhbnQgPSA0LAog
IGtKYXBhbmVzZVZlcnRBdEt1UGx1c1RlblZhcmlhbnQgPSA1LAogIGtUZXh0RW5jb2RpbmdTaGlm
dEpJU19YMDIxM18wMCA9IDB4MDYyOCwKCgogIGtIZWJyZXdTdGFuZGFyZFZhcmlhbnQgPSAwLAog
IGtIZWJyZXdGaWd1cmVTcGFjZVZhcmlhbnQgPSAxLAoKCgoKCgogIGtVbmljb2RlQ2Fub25pY2Fs
RGVjb21wVmFyaWFudCA9IDIsCiAga1VuaWNvZGVNYXhEZWNvbXBvc2VkVmFyaWFudCA9IDIsCiAg
a1VuaWNvZGVDYW5vbmljYWxDb21wVmFyaWFudCA9IDMsCiAga1VuaWNvZGVOb0NvbXBvc2VkVmFy
aWFudCA9IDMKfTsKCgp0eXBlZGVmIFVJbnQzMiBUZXh0RW5jb2RpbmdGb3JtYXQ7CmVudW0gewoK
ICBrVGV4dEVuY29kaW5nRGVmYXVsdEZvcm1hdCA9IDAsCiAga1VuaWNvZGVVVEYxNkZvcm1hdCA9
IDAsCiAga1VuaWNvZGVVVEY3Rm9ybWF0ID0gMSwKICBrVW5pY29kZVVURjhGb3JtYXQgPSAyLAog
IGtVbmljb2RlVVRGMzJGb3JtYXQgPSAzLAogIGtVbmljb2RlVVRGMTZCRUZvcm1hdCA9IDQsCiAg
a1VuaWNvZGVVVEYxNkxFRm9ybWF0ID0gNSwKICBrVW5pY29kZVVURjMyQkVGb3JtYXQgPSA2LAog
IGtVbmljb2RlVVRGMzJMRUZvcm1hdCA9IDcsCiAga1VuaWNvZGVTQ1NVRm9ybWF0ID0gOCwKIyA1
NjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRDb21tb24uaCIgMwogIGtV
bmljb2RlMTZCaXRGb3JtYXQgPSAwLAogIGtVbmljb2RlMzJCaXRGb3JtYXQgPSAzCn07CgoKdHlw
ZWRlZiBVSW50MzIgVGV4dEVuY29kaW5nOwoKdHlwZWRlZiBVSW50MzIgVGV4dEVuY29kaW5nTmFt
ZVNlbGVjdG9yOwplbnVtIHsKICBrVGV4dEVuY29kaW5nRnVsbE5hbWUgPSAwLAogIGtUZXh0RW5j
b2RpbmdCYXNlTmFtZSA9IDEsCiAga1RleHRFbmNvZGluZ1ZhcmlhbnROYW1lID0gMiwKICBrVGV4
dEVuY29kaW5nRm9ybWF0TmFtZSA9IDMKfTsKCgpzdHJ1Y3QgVGV4dEVuY29kaW5nUnVuIHsKICBC
eXRlT2Zmc2V0IG9mZnNldDsKICBUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nOwp9Owp0eXBlZGVm
IHN0cnVjdCBUZXh0RW5jb2RpbmdSdW4gVGV4dEVuY29kaW5nUnVuOwp0eXBlZGVmIFRleHRFbmNv
ZGluZ1J1biAqIFRleHRFbmNvZGluZ1J1blB0cjsKdHlwZWRlZiBjb25zdCBUZXh0RW5jb2RpbmdS
dW4gKiBDb25zdFRleHRFbmNvZGluZ1J1blB0cjsKc3RydWN0IFNjcmlwdENvZGVSdW4gewogIEJ5
dGVPZmZzZXQgb2Zmc2V0OwogIFNjcmlwdENvZGUgc2NyaXB0Owp9Owp0eXBlZGVmIHN0cnVjdCBT
Y3JpcHRDb2RlUnVuIFNjcmlwdENvZGVSdW47CnR5cGVkZWYgU2NyaXB0Q29kZVJ1biAqIFNjcmlw
dENvZGVSdW5QdHI7CnR5cGVkZWYgY29uc3QgU2NyaXB0Q29kZVJ1biAqIENvbnN0U2NyaXB0Q29k
ZVJ1blB0cjsKdHlwZWRlZiBVSW50OCAqIFRleHRQdHI7CnR5cGVkZWYgY29uc3QgVUludDggKiBD
b25zdFRleHRQdHI7Cgp0eXBlZGVmIFVuaUNoYXIgKiBVbmlDaGFyQXJyYXlQdHI7CnR5cGVkZWYg
Y29uc3QgVW5pQ2hhciAqIENvbnN0VW5pQ2hhckFycmF5UHRyOwoKCgoKdHlwZWRlZiBVbmlDaGFy
QXJyYXlQdHIgKiBVbmlDaGFyQXJyYXlIYW5kbGU7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
VW5pQ2hhckFycmF5T2Zmc2V0OwoKZW51bSB7CiAga1RleHRTY3JpcHREb250Q2FyZSA9IC0xMjgs
CiAga1RleHRMYW5ndWFnZURvbnRDYXJlID0gLTEyOCwKICBrVGV4dFJlZ2lvbkRvbnRDYXJlID0g
LTEyOAp9OwoKCgpzdHJ1Y3QgVEVDSW5mbyB7CiAgVUludDE2IGZvcm1hdDsKICBVSW50MTYgdGVj
VmVyc2lvbjsKICBVSW50MzIgdGVjVGV4dENvbnZlcnRlckZlYXR1cmVzOwogIFVJbnQzMiB0ZWNV
bmljb2RlQ29udmVydGVyRmVhdHVyZXM7CiAgVUludDMyIHRlY1RleHRDb21tb25GZWF0dXJlczsK
ICBTdHIzMSB0ZWNUZXh0RW5jb2RpbmdzRm9sZGVyTmFtZTsKICBTdHIzMSB0ZWNFeHRlbnNpb25G
aWxlTmFtZTsKICBVSW50MTYgdGVjTG93ZXN0VEVGaWxlVmVyc2lvbjsKICBVSW50MTYgdGVjSGln
aGVzdFRFRmlsZVZlcnNpb247Cn07CnR5cGVkZWYgc3RydWN0IFRFQ0luZm8gVEVDSW5mbzsKdHlw
ZWRlZiBURUNJbmZvICogVEVDSW5mb1B0cjsKdHlwZWRlZiBURUNJbmZvUHRyICogVEVDSW5mb0hh
bmRsZTsKCmVudW0gewogIGtURUNJbmZvQ3VycmVudEZvcm1hdCA9IDIKfTsKIyA2ODQgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRDb21tb24uaCIgMwplbnVtIHsKICBrVEVD
S2VlcEluZm9GaXhCaXQgPSAwLAogIGtURUNGYWxsYmFja1RleHRMZW5ndGhGaXhCaXQgPSAxLAog
IGtURUNUZXh0UnVuQml0Q2xlYXJGaXhCaXQgPSAyLAogIGtURUNUZXh0VG9Vbmljb2RlU2NhbkZp
eEJpdCA9IDMsCiAga1RFQ0FkZEZvcmNlQVNDSUlDaGFuZ2VzQml0ID0gNCwKICBrVEVDUHJlZmVy
cmVkRW5jb2RpbmdGaXhCaXQgPSA1LAogIGtURUNBZGRUZXh0UnVuSGV1cmlzdGljc0JpdCA9IDYs
CiAga1RFQ0FkZEZhbGxiYWNrSW50ZXJydXB0Qml0ID0gNwp9OwoKZW51bSB7CiAga1RFQ0tlZXBJ
bmZvRml4TWFzayA9IDFMIDw8IGtURUNLZWVwSW5mb0ZpeEJpdCwKICBrVEVDRmFsbGJhY2tUZXh0
TGVuZ3RoRml4TWFzayA9IDFMIDw8IGtURUNGYWxsYmFja1RleHRMZW5ndGhGaXhCaXQsCiAga1RF
Q1RleHRSdW5CaXRDbGVhckZpeE1hc2sgPSAxTCA8PCBrVEVDVGV4dFJ1bkJpdENsZWFyRml4Qml0
LAogIGtURUNUZXh0VG9Vbmljb2RlU2NhbkZpeE1hc2sgPSAxTCA8PCBrVEVDVGV4dFRvVW5pY29k
ZVNjYW5GaXhCaXQsCiAga1RFQ0FkZEZvcmNlQVNDSUlDaGFuZ2VzTWFzayA9IDFMIDw8IGtURUNB
ZGRGb3JjZUFTQ0lJQ2hhbmdlc0JpdCwKICBrVEVDUHJlZmVycmVkRW5jb2RpbmdGaXhNYXNrID0g
MUwgPDwga1RFQ1ByZWZlcnJlZEVuY29kaW5nRml4Qml0LAogIGtURUNBZGRUZXh0UnVuSGV1cmlz
dGljc01hc2sgPSAxTCA8PCBrVEVDQWRkVGV4dFJ1bkhldXJpc3RpY3NCaXQsCiAga1RFQ0FkZEZh
bGxiYWNrSW50ZXJydXB0TWFzayA9IDFMIDw8IGtURUNBZGRGYWxsYmFja0ludGVycnVwdEJpdAp9
OwoKCgoKCgoKZW51bSB7CiAga1VuaWNvZGVCeXRlT3JkZXJNYXJrID0gMHhGRUZGLAogIGtVbmlj
b2RlT2JqZWN0UmVwbGFjZW1lbnQgPSAweEZGRkMsCiAga1VuaWNvZGVSZXBsYWNlbWVudENoYXIg
PSAweEZGRkQsCiAga1VuaWNvZGVTd2FwcGVkQnl0ZU9yZGVyTWFyayA9IDB4RkZGRSwKICBrVW5p
Y29kZU5vdEFDaGFyID0gMHhGRkZGCn07CiMgNzI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9UZXh0Q29tbW9uLmgiIDMKdHlwZWRlZiBTSW50MzIgVUNDaGFyUHJvcGVydHlUeXBl
OwplbnVtIHsKICBrVUNDaGFyUHJvcFR5cGVHZW5sQ2F0ZWdvcnkgPSAxLAogIGtVQ0NoYXJQcm9w
VHlwZUNvbWJpbmluZ0NsYXNzID0gMiwKICBrVUNDaGFyUHJvcFR5cGVCaWRpQ2F0ZWdvcnkgPSAz
LAogIGtVQ0NoYXJQcm9wVHlwZURlY2ltYWxEaWdpdFZhbHVlID0gNAp9OwoKdHlwZWRlZiBVSW50
MzIgVUNDaGFyUHJvcGVydHlWYWx1ZTsKCmVudW0gewoKICBrVUNHZW5sQ2F0T3RoZXJOb3RBc3Np
Z25lZCA9IDAsCiAga1VDR2VubENhdE90aGVyQ29udHJvbCA9IDEsCiAga1VDR2VubENhdE90aGVy
Rm9ybWF0ID0gMiwKICBrVUNHZW5sQ2F0T3RoZXJTdXJyb2dhdGUgPSAzLAogIGtVQ0dlbmxDYXRP
dGhlclByaXZhdGVVc2UgPSA0LAogIGtVQ0dlbmxDYXRNYXJrTm9uU3BhY2luZyA9IDUsCiAga1VD
R2VubENhdE1hcmtTcGFjaW5nQ29tYmluaW5nID0gNiwKICBrVUNHZW5sQ2F0TWFya0VuY2xvc2lu
ZyA9IDcsCiAga1VDR2VubENhdE51bWJlckRlY2ltYWxEaWdpdCA9IDgsCiAga1VDR2VubENhdE51
bWJlckxldHRlciA9IDksCiAga1VDR2VubENhdE51bWJlck90aGVyID0gMTAsCiAga1VDR2VubENh
dFNlcGFyYXRvclNwYWNlID0gMTEsCiAga1VDR2VubENhdFNlcGFyYXRvckxpbmUgPSAxMiwKICBr
VUNHZW5sQ2F0U2VwYXJhdG9yUGFyYWdyYXBoID0gMTMsCiAga1VDR2VubENhdExldHRlclVwcGVy
Y2FzZSA9IDE0LAogIGtVQ0dlbmxDYXRMZXR0ZXJMb3dlcmNhc2UgPSAxNSwKICBrVUNHZW5sQ2F0
TGV0dGVyVGl0bGVjYXNlID0gMTYsCgogIGtVQ0dlbmxDYXRMZXR0ZXJNb2RpZmllciA9IDE3LAog
IGtVQ0dlbmxDYXRMZXR0ZXJPdGhlciA9IDE4LAogIGtVQ0dlbmxDYXRQdW5jdENvbm5lY3RvciA9
IDIwLAogIGtVQ0dlbmxDYXRQdW5jdERhc2ggPSAyMSwKICBrVUNHZW5sQ2F0UHVuY3RPcGVuID0g
MjIsCiAga1VDR2VubENhdFB1bmN0Q2xvc2UgPSAyMywKICBrVUNHZW5sQ2F0UHVuY3RJbml0aWFs
UXVvdGUgPSAyNCwKICBrVUNHZW5sQ2F0UHVuY3RGaW5hbFF1b3RlID0gMjUsCiAga1VDR2VubENh
dFB1bmN0T3RoZXIgPSAyNiwKICBrVUNHZW5sQ2F0U3ltYm9sTWF0aCA9IDI4LAogIGtVQ0dlbmxD
YXRTeW1ib2xDdXJyZW5jeSA9IDI5LAogIGtVQ0dlbmxDYXRTeW1ib2xNb2RpZmllciA9IDMwLAog
IGtVQ0dlbmxDYXRTeW1ib2xPdGhlciA9IDMxCn07CgoKZW51bSB7CiAga1VDQmlkaUNhdE5vdEFw
cGxpY2FibGUgPSAwLAoKICBrVUNCaWRpQ2F0TGVmdFJpZ2h0ID0gMSwKICBrVUNCaWRpQ2F0Umln
aHRMZWZ0ID0gMiwKCiAga1VDQmlkaUNhdEV1cm9OdW1iZXIgPSAzLAogIGtVQ0JpZGlDYXRFdXJv
TnVtYmVyU2VwYXJhdG9yID0gNCwKICBrVUNCaWRpQ2F0RXVyb051bWJlclRlcm1pbmF0b3IgPSA1
LAogIGtVQ0JpZGlDYXRBcmFiaWNOdW1iZXIgPSA2LAogIGtVQ0JpZGlDYXRDb21tb25OdW1iZXJT
ZXBhcmF0b3IgPSA3LAoKICBrVUNCaWRpQ2F0QmxvY2tTZXBhcmF0b3IgPSA4LAogIGtVQ0JpZGlD
YXRTZWdtZW50U2VwYXJhdG9yID0gOSwKCiAga1VDQmlkaUNhdFdoaXRlc3BhY2UgPSAxMCwKICBr
VUNCaWRpQ2F0T3RoZXJOZXV0cmFsID0gMTEsCgogIGtVQ0JpZGlDYXRSaWdodExlZnRBcmFiaWMg
PSAxMiwKICBrVUNCaWRpQ2F0TGVmdFJpZ2h0RW1iZWRkaW5nID0gMTMsCiAga1VDQmlkaUNhdFJp
Z2h0TGVmdEVtYmVkZGluZyA9IDE0LAogIGtVQ0JpZGlDYXRMZWZ0UmlnaHRPdmVycmlkZSA9IDE1
LAogIGtVQ0JpZGlDYXRSaWdodExlZnRPdmVycmlkZSA9IDE2LAogIGtVQ0JpZGlDYXRQb3BEaXJl
Y3Rpb25hbEZvcm1hdCA9IDE3LAogIGtVQ0JpZGlDYXROb25TcGFjaW5nTWFyayA9IDE4LAogIGtV
Q0JpZGlDYXRCb3VuZGFyeU5ldXRyYWwgPSAxOQp9OwojIDgxNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvVGV4dENvbW1vbi5oIiAzCmV4dGVybiBUZXh0RW5jb2RpbmcKQ3JlYXRl
VGV4dEVuY29kaW5nKAogIFRleHRFbmNvZGluZ0Jhc2UgZW5jb2RpbmdCYXNlLAogIFRleHRFbmNv
ZGluZ1ZhcmlhbnQgZW5jb2RpbmdWYXJpYW50LAogIFRleHRFbmNvZGluZ0Zvcm1hdCBlbmNvZGlu
Z0Zvcm1hdCkgOwojIDgzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dENv
bW1vbi5oIiAzCmV4dGVybiBUZXh0RW5jb2RpbmdCYXNlCkdldFRleHRFbmNvZGluZ0Jhc2UoVGV4
dEVuY29kaW5nIGVuY29kaW5nKSA7CiMgODQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9UZXh0Q29tbW9uLmgiIDMKZXh0ZXJuIFRleHRFbmNvZGluZ1ZhcmlhbnQKR2V0VGV4dEVu
Y29kaW5nVmFyaWFudChUZXh0RW5jb2RpbmcgZW5jb2RpbmcpIDsKIyA4NTYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRDb21tb24uaCIgMwpleHRlcm4gVGV4dEVuY29kaW5n
Rm9ybWF0CkdldFRleHRFbmNvZGluZ0Zvcm1hdChUZXh0RW5jb2RpbmcgZW5jb2RpbmcpIDsKIyA4
NjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRDb21tb24uaCIgMwpleHRl
cm4gVGV4dEVuY29kaW5nClJlc29sdmVEZWZhdWx0VGV4dEVuY29kaW5nKFRleHRFbmNvZGluZyBl
bmNvZGluZykgOwojIDg4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dENv
bW1vbi5oIiAzCmV4dGVybiBPU1N0YXR1cwpHZXRUZXh0RW5jb2RpbmdOYW1lKAogIFRleHRFbmNv
ZGluZyBpRW5jb2RpbmcsCiAgVGV4dEVuY29kaW5nTmFtZVNlbGVjdG9yIGlOYW1lUGFydFNlbGVj
dG9yLAogIFJlZ2lvbkNvZGUgaVByZWZlcnJlZFJlZ2lvbiwKICBUZXh0RW5jb2RpbmcgaVByZWZl
cnJlZEVuY29kaW5nLAogIEJ5dGVDb3VudCBpT3V0cHV0QnVmTGVuLAogIEJ5dGVDb3VudCAqIG9O
YW1lTGVuZ3RoLAogIFJlZ2lvbkNvZGUgKiBvQWN0dWFsUmVnaW9uLAogIFRleHRFbmNvZGluZyAq
IG9BY3R1YWxFbmNvZGluZywKICBUZXh0UHRyIG9FbmNvZGluZ05hbWUpIDsKIyA5MDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRDb21tb24uaCIgMwpleHRlcm4gT1NTdGF0
dXMKVEVDR2V0SW5mbyhURUNJbmZvSGFuZGxlICogdGVjSW5mbykgOwojIDkxNCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dENvbW1vbi5oIiAzCmV4dGVybiBPU1N0YXR1cwpV
cGdyYWRlU2NyaXB0SW5mb1RvVGV4dEVuY29kaW5nKAogIFNjcmlwdENvZGUgaVRleHRTY3JpcHRJ
RCwKICBMYW5nQ29kZSBpVGV4dExhbmd1YWdlSUQsCiAgUmVnaW9uQ29kZSBpUmVnaW9uSUQsCiAg
Q29uc3RTdHIyNTVQYXJhbSBpVGV4dEZvbnRuYW1lLAogIFRleHRFbmNvZGluZyAqIG9FbmNvZGlu
ZykgOwojIDkzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dENvbW1vbi5o
IiAzCmV4dGVybiBPU1N0YXR1cwpSZXZlcnRUZXh0RW5jb2RpbmdUb1NjcmlwdEluZm8oCiAgVGV4
dEVuY29kaW5nIGlFbmNvZGluZywKICBTY3JpcHRDb2RlICogb1RleHRTY3JpcHRJRCwKICBMYW5n
Q29kZSAqIG9UZXh0TGFuZ3VhZ2VJRCwKICBTdHIyNTUgb1RleHRGb250bmFtZSkgOwojIDk4NCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dENvbW1vbi5oIiAzCmV4dGVybiBP
U1N0YXR1cwpHZXRUZXh0RW5jb2RpbmdGcm9tU2NyaXB0SW5mbygKICBTY3JpcHRDb2RlIGlUZXh0
U2NyaXB0SUQsCiAgTGFuZ0NvZGUgaVRleHRMYW5ndWFnZUlELAogIFJlZ2lvbkNvZGUgaVRleHRS
ZWdpb25JRCwKICBUZXh0RW5jb2RpbmcgKiBvRW5jb2RpbmcpIDsKIyAxMDMzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0Q29tbW9uLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkdl
dFNjcmlwdEluZm9Gcm9tVGV4dEVuY29kaW5nKAogIFRleHRFbmNvZGluZyBpRW5jb2RpbmcsCiAg
U2NyaXB0Q29kZSAqIG9UZXh0U2NyaXB0SUQsCiAgTGFuZ0NvZGUgKiBvVGV4dExhbmd1YWdlSUQp
IDsKIyAxMDQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0Q29tbW9uLmgi
IDMKZXh0ZXJuIE9TU3RhdHVzCk5lYXJlc3RNYWNUZXh0RW5jb2RpbmdzKAogIFRleHRFbmNvZGlu
ZyBnZW5lcmFsRW5jb2RpbmcsCiAgVGV4dEVuY29kaW5nICogYmVzdE1hY0VuY29kaW5nLAogIFRl
eHRFbmNvZGluZyAqIGFsdGVybmF0ZU1hY0VuY29kaW5nKSA7CiMgMTA2NCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dENvbW1vbi5oIiAzCmV4dGVybiBPU1N0YXR1cwpVQ0dl
dENoYXJQcm9wZXJ0eSgKICBjb25zdCBVbmlDaGFyICogY2hhclB0ciwKICBVbmlDaGFyQ291bnQg
dGV4dExlbmd0aCwKICBVQ0NoYXJQcm9wZXJ0eVR5cGUgcHJvcFR5cGUsCiAgVUNDaGFyUHJvcGVy
dHlWYWx1ZSAqIHByb3BWYWx1ZSkgOwojIDEwODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1RleHRDb21tb24uaCIgMwojZGVmaW5lIFVDX0lOTElORSBzdGF0aWMgX19pbmxpbmVf
XwoKCgoKCgplbnVtIHsKICBrVUNIaWdoU3Vycm9nYXRlUmFuZ2VTdGFydCA9IDB4RDgwMCwKICBr
VUNIaWdoU3Vycm9nYXRlUmFuZ2VFbmQgPSAweERCRkYsCiAga1VDTG93U3Vycm9nYXRlUmFuZ2VT
dGFydCA9IDB4REMwMCwKICBrVUNMb3dTdXJyb2dhdGVSYW5nZUVuZCA9IDB4REZGRgp9OwojIDEx
MDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRDb21tb24uaCIgMwpzdGF0
aWMgX19pbmxpbmVfXyBCb29sZWFuIFVDSXNTdXJyb2dhdGVIaWdoQ2hhcmFjdGVyKCBVbmlDaGFy
IGNoYXJhY3RlciApIHsKCiAgIHJldHVybiAoICggY2hhcmFjdGVyICYgMHhGQzAwICkgPT0ga1VD
SGlnaFN1cnJvZ2F0ZVJhbmdlU3RhcnQgKTsKfQoKCgoKCgoKc3RhdGljIF9faW5saW5lX18gQm9v
bGVhbiBVQ0lzU3Vycm9nYXRlTG93Q2hhcmFjdGVyKCBVbmlDaGFyIGNoYXJhY3RlciApIHsKCiAg
ICByZXR1cm4gKCAoIGNoYXJhY3RlciAmIDB4RkMwMCApID09IGtVQ0xvd1N1cnJvZ2F0ZVJhbmdl
U3RhcnQgKTsKfQojIDExMjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRD
b21tb24uaCIgMwpzdGF0aWMgX19pbmxpbmVfXyBVbmljb2RlU2NhbGFyVmFsdWUgVUNHZXRVbmlj
b2RlU2NhbGFyVmFsdWVGb3JTdXJyb2dhdGVQYWlyKCBVbmlDaGFyIHN1cnJvZ2F0ZUhpZ2gsIFVu
aUNoYXIgc3Vycm9nYXRlTG93ICkgewogIHJldHVybiAoICggc3Vycm9nYXRlSGlnaCAtIGtVQ0hp
Z2hTdXJyb2dhdGVSYW5nZVN0YXJ0ICkgPDwgMTAgKSArICggc3Vycm9nYXRlTG93IC0ga1VDTG93
U3Vycm9nYXRlUmFuZ2VTdGFydCApICsgMHgwMDEwMDAwOwp9CgoKCiNwcmFnbWEgcGFjayhwb3Ap
CgoKfQojIDUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25Db3JlLmgi
IDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbGxlY3Rpb25z
LmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db2xsZWN0aW9u
cy5oIiAzCiNkZWZpbmUgX19DT0xMRUNUSU9OU19fIAoKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL01peGVkTW9kZS5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvTWl4ZWRNb2RlLmgiIDMKI2RlZmluZSBfX01JWEVETU9ERV9fIAoj
IDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NaXhlZE1vZGUuaCIgMwojcHJh
Z21hIHBhY2socHVzaCwgMikKIyA0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
TWl4ZWRNb2RlLmgiIDMKZW51bSB7CiAga1JvdXRpbmVEZXNjcmlwdG9yVmVyc2lvbiA9IDcKfTsK
CgplbnVtIHsKICBfTWl4ZWRNb2RlTWFnaWMgPSAweEFBRkUKfTsKCgplbnVtIHsKICBrQ3VycmVu
dE1peGVkTW9kZVN0YXRlUmVjb3JkID0gMQp9OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgQ2Fs
bGluZ0NvbnZlbnRpb25UeXBlOwplbnVtIHsKICBrUGFzY2FsU3RhY2tCYXNlZCA9IDAsCiAga0NT
dGFja0Jhc2VkID0gMSwKICBrUmVnaXN0ZXJCYXNlZCA9IDIsCiAga0QwRGlzcGF0Y2hlZFBhc2Nh
bFN0YWNrQmFzZWQgPSA4LAogIGtEMURpc3BhdGNoZWRQYXNjYWxTdGFja0Jhc2VkID0gMTIsCiAg
a0QwRGlzcGF0Y2hlZENTdGFja0Jhc2VkID0gOSwKICBrU3RhY2tEaXNwYXRjaGVkUGFzY2FsU3Rh
Y2tCYXNlZCA9IDE0LAogIGtUaGlua0NTdGFja0Jhc2VkID0gNQp9OwoKCnR5cGVkZWYgU0ludDgg
SVNBVHlwZTsKZW51bSB7CiAga002OGtJU0EgPSAwLAogIGtQb3dlclBDSVNBID0gMQp9OwoKZW51
bSB7CiAga1g4NklTQSA9IDIKfTsKCgp0eXBlZGVmIFNJbnQ4IFJUQVR5cGU7CmVudW0gewogIGtP
bGQ2OGtSVEEgPSAwIDw8IDQsCiAga1Bvd2VyUENSVEEgPSAwIDw8IDQsCiAga0NGTTY4a1JUQSA9
IDEgPDwgNAp9OwoKZW51bSB7CiAga1g4NlJUQSA9IDIgPDwgNAp9OwojIDEwOCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWl4ZWRNb2RlLmgiIDMKI2RlZmluZSBHZXRDdXJyZW50
QXJjaGl0ZWN0dXJlKCkgKEdldEN1cnJlbnRJU0EoKSB8IEdldEN1cnJlbnRSVEEoKSkKCgoKCgpl
bnVtIHsKICBrUmVnaXN0ZXJEMCA9IDAsCiAga1JlZ2lzdGVyRDEgPSAxLAogIGtSZWdpc3RlckQy
ID0gMiwKICBrUmVnaXN0ZXJEMyA9IDMsCiAga1JlZ2lzdGVyRDQgPSA4LAogIGtSZWdpc3RlckQ1
ID0gOSwKICBrUmVnaXN0ZXJENiA9IDEwLAogIGtSZWdpc3RlckQ3ID0gMTEsCiAga1JlZ2lzdGVy
QTAgPSA0LAogIGtSZWdpc3RlckExID0gNSwKICBrUmVnaXN0ZXJBMiA9IDYsCiAga1JlZ2lzdGVy
QTMgPSA3LAogIGtSZWdpc3RlckE0ID0gMTIsCiAga1JlZ2lzdGVyQTUgPSAxMywKICBrUmVnaXN0
ZXJBNiA9IDE0LAogIGtDQ1JlZ2lzdGVyQ0JpdCA9IDE2LAogIGtDQ1JlZ2lzdGVyVkJpdCA9IDE3
LAogIGtDQ1JlZ2lzdGVyWkJpdCA9IDE4LAogIGtDQ1JlZ2lzdGVyTkJpdCA9IDE5LAogIGtDQ1Jl
Z2lzdGVyWEJpdCA9IDIwCn07Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHJlZ2lzdGVyU2VsZWN0
b3JUeXBlOwoKZW51bSB7CiAga05vQnl0ZUNvZGUgPSAwLAogIGtPbmVCeXRlQ29kZSA9IDEsCiAg
a1R3b0J5dGVDb2RlID0gMiwKICBrRm91ckJ5dGVDb2RlID0gMwp9OwoKCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBQcm9jSW5mb1R5cGU7Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFJvdXRpbmVGbGFn
c1R5cGU7CmVudW0gewogIGtQcm9jRGVzY3JpcHRvcklzQWJzb2x1dGUgPSAweDAwLAogIGtQcm9j
RGVzY3JpcHRvcklzUmVsYXRpdmUgPSAweDAxCn07CgplbnVtIHsKICBrRnJhZ21lbnRJc1ByZXBh
cmVkID0gMHgwMCwKICBrRnJhZ21lbnROZWVkc1ByZXBhcmluZyA9IDB4MDIKfTsKCmVudW0gewog
IGtVc2VDdXJyZW50SVNBID0gMHgwMCwKICBrVXNlTmF0aXZlSVNBID0gMHgwNAp9OwoKZW51bSB7
CiAga1Bhc3NTZWxlY3RvciA9IDB4MDAsCiAga0RvbnRQYXNzU2VsZWN0b3IgPSAweDA4Cn07Cgpl
bnVtIHsKICBrUm91dGluZUlzTm90RGlzcGF0Y2hlZERlZmF1bHRSb3V0aW5lID0gMHgwMCwKICBr
Um91dGluZUlzRGlzcGF0Y2hlZERlZmF1bHRSb3V0aW5lID0gMHgxMAp9OwoKZW51bSB7CiAga1By
b2NEZXNjcmlwdG9ySXNQcm9jUHRyID0gMHgwMCwKICBrUHJvY0Rlc2NyaXB0b3JJc0luZGV4ID0g
MHgyMAp9OwoKc3RydWN0IFJvdXRpbmVSZWNvcmQgewogIFByb2NJbmZvVHlwZSBwcm9jSW5mbzsK
ICBTSW50OCByZXNlcnZlZDE7CiAgSVNBVHlwZSBJU0E7CiAgUm91dGluZUZsYWdzVHlwZSByb3V0
aW5lRmxhZ3M7CiAgUHJvY1B0ciBwcm9jRGVzY3JpcHRvcjsKICBVSW50MzIgcmVzZXJ2ZWQyOwog
IFVJbnQzMiBzZWxlY3RvcjsKfTsKdHlwZWRlZiBzdHJ1Y3QgUm91dGluZVJlY29yZCBSb3V0aW5l
UmVjb3JkOwp0eXBlZGVmIFJvdXRpbmVSZWNvcmQgKiBSb3V0aW5lUmVjb3JkUHRyOwp0eXBlZGVm
IFJvdXRpbmVSZWNvcmRQdHIgKiBSb3V0aW5lUmVjb3JkSGFuZGxlOwoKCnR5cGVkZWYgVUludDgg
UkRGbGFnc1R5cGU7CmVudW0gewogIGtTZWxlY3RvcnNBcmVOb3RJbmRleGFibGUgPSAweDAwLAog
IGtTZWxlY3RvcnNBcmVJbmRleGFibGUgPSAweDAxCn07CgoKc3RydWN0IFJvdXRpbmVEZXNjcmlw
dG9yIHsKICBVSW50MTYgZ29NaXhlZE1vZGVUcmFwOwogIFNJbnQ4IHZlcnNpb247CiAgUkRGbGFn
c1R5cGUgcm91dGluZURlc2NyaXB0b3JGbGFnczsKICBVSW50MzIgcmVzZXJ2ZWQxOwogIFVJbnQ4
IHJlc2VydmVkMjsKICBVSW50OCBzZWxlY3RvckluZm87CiAgVUludDE2IHJvdXRpbmVDb3VudDsK
ICBSb3V0aW5lUmVjb3JkIHJvdXRpbmVSZWNvcmRzWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBSb3V0
aW5lRGVzY3JpcHRvciBSb3V0aW5lRGVzY3JpcHRvcjsKdHlwZWRlZiBSb3V0aW5lRGVzY3JpcHRv
ciAqIFJvdXRpbmVEZXNjcmlwdG9yUHRyOwp0eXBlZGVmIFJvdXRpbmVEZXNjcmlwdG9yUHRyICog
Um91dGluZURlc2NyaXB0b3JIYW5kbGU7CgpzdHJ1Y3QgTWl4ZWRNb2RlU3RhdGVSZWNvcmQgewog
IFVJbnQzMiBzdGF0ZTE7CiAgVUludDMyIHN0YXRlMjsKICBVSW50MzIgc3RhdGUzOwogIFVJbnQz
MiBzdGF0ZTQ7Cn07CnR5cGVkZWYgc3RydWN0IE1peGVkTW9kZVN0YXRlUmVjb3JkIE1peGVkTW9k
ZVN0YXRlUmVjb3JkOwojIDI1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWl4
ZWRNb2RlLmgiIDMKI2RlZmluZSBOZXdSb3V0aW5lRGVzY3JpcHRvcih0aGVQcm9jLHByb2NJbmZv
LGlzYSkgKChVbml2ZXJzYWxQcm9jUHRyKSB0aGVQcm9jKQojZGVmaW5lIERpc3Bvc2VSb3V0aW5l
RGVzY3JpcHRvcih1cHApIAoKCgoKZW51bSB7CgogIGtDYWxsaW5nQ29udmVudGlvbldpZHRoID0g
NCwKICBrQ2FsbGluZ0NvbnZlbnRpb25QaGFzZSA9IDAsCiAga0NhbGxpbmdDb252ZW50aW9uTWFz
ayA9IDB4MEYsCiAga1Jlc3VsdFNpemVXaWR0aCA9IDIsCiAga1Jlc3VsdFNpemVQaGFzZSA9IGtD
YWxsaW5nQ29udmVudGlvbldpZHRoLAogIGtSZXN1bHRTaXplTWFzayA9IDB4MzAsCiAga1N0YWNr
UGFyYW1ldGVyV2lkdGggPSAyLAogIGtTdGFja1BhcmFtZXRlclBoYXNlID0gKGtDYWxsaW5nQ29u
dmVudGlvbldpZHRoICsga1Jlc3VsdFNpemVXaWR0aCksCiAga1N0YWNrUGFyYW1ldGVyTWFzayA9
IChpbnQpMHhGRkZGRkZDMCwKICBrUmVnaXN0ZXJSZXN1bHRMb2NhdGlvbldpZHRoID0gNSwKICBr
UmVnaXN0ZXJSZXN1bHRMb2NhdGlvblBoYXNlID0gKGtDYWxsaW5nQ29udmVudGlvbldpZHRoICsg
a1Jlc3VsdFNpemVXaWR0aCksCiAga1JlZ2lzdGVyUGFyYW1ldGVyV2lkdGggPSA1LAogIGtSZWdp
c3RlclBhcmFtZXRlclBoYXNlID0gKGtDYWxsaW5nQ29udmVudGlvbldpZHRoICsga1Jlc3VsdFNp
emVXaWR0aCArIGtSZWdpc3RlclJlc3VsdExvY2F0aW9uV2lkdGgpLAogIGtSZWdpc3RlclBhcmFt
ZXRlck1hc2sgPSAweDdGRkZGODAwLAogIGtSZWdpc3RlclBhcmFtZXRlclNpemVQaGFzZSA9IDAs
CiAga1JlZ2lzdGVyUGFyYW1ldGVyU2l6ZVdpZHRoID0gMiwKICBrUmVnaXN0ZXJQYXJhbWV0ZXJX
aGljaFBoYXNlID0ga1JlZ2lzdGVyUGFyYW1ldGVyU2l6ZVdpZHRoLAogIGtSZWdpc3RlclBhcmFt
ZXRlcldoaWNoV2lkdGggPSAzLAogIGtEaXNwYXRjaGVkU2VsZWN0b3JTaXplV2lkdGggPSAyLAog
IGtEaXNwYXRjaGVkU2VsZWN0b3JTaXplUGhhc2UgPSAoa0NhbGxpbmdDb252ZW50aW9uV2lkdGgg
KyBrUmVzdWx0U2l6ZVdpZHRoKSwKICBrRGlzcGF0Y2hlZFBhcmFtZXRlclBoYXNlID0gKGtDYWxs
aW5nQ29udmVudGlvbldpZHRoICsga1Jlc3VsdFNpemVXaWR0aCArIGtEaXNwYXRjaGVkU2VsZWN0
b3JTaXplV2lkdGgpLAogIGtTcGVjaWFsQ2FzZVNlbGVjdG9yV2lkdGggPSA2LAogIGtTcGVjaWFs
Q2FzZVNlbGVjdG9yUGhhc2UgPSBrQ2FsbGluZ0NvbnZlbnRpb25XaWR0aCwKICBrU3BlY2lhbENh
c2VTZWxlY3Rvck1hc2sgPSAweDAzRjAKfTsKCmVudW0gewogIGtTcGVjaWFsQ2FzZSA9IDB4MDAw
Rgp9OwoKZW51bSB7CgogIGtTcGVjaWFsQ2FzZUhpZ2hIb29rID0gMCwKICBrU3BlY2lhbENhc2VD
YXJldEhvb2sgPSAwLAogIGtTcGVjaWFsQ2FzZUVPTEhvb2sgPSAxLAogIGtTcGVjaWFsQ2FzZVdp
ZHRoSG9vayA9IDIsCiAga1NwZWNpYWxDYXNlVGV4dFdpZHRoSG9vayA9IDIsCiAga1NwZWNpYWxD
YXNlTldpZHRoSG9vayA9IDMsCiAga1NwZWNpYWxDYXNlRHJhd0hvb2sgPSA0LAogIGtTcGVjaWFs
Q2FzZUhpdFRlc3RIb29rID0gNSwKICBrU3BlY2lhbENhc2VURUZpbmRXb3JkID0gNiwKICBrU3Bl
Y2lhbENhc2VQcm90b2NvbEhhbmRsZXIgPSA3LAogIGtTcGVjaWFsQ2FzZVNvY2tldExpc3RlbmVy
ID0gOCwKICBrU3BlY2lhbENhc2VURVJlY2FsYyA9IDksCiAga1NwZWNpYWxDYXNlVEVEb1RleHQg
PSAxMCwKICBrU3BlY2lhbENhc2VHTkVGaWx0ZXJQcm9jID0gMTEsCiAga1NwZWNpYWxDYXNlTUJh
ckhvb2sgPSAxMgp9OwojIDM0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWl4
ZWRNb2RlLmgiIDMKI2RlZmluZSBTSVpFX0NPREUoc2l6ZSkgKCgoc2l6ZSkgPT0gNCkgPyBrRm91
ckJ5dGVDb2RlIDogKCgoc2l6ZSkgPT0gMikgPyBrVHdvQnl0ZUNvZGUgOiAoKChzaXplKSA9PSAx
KSA/IGtPbmVCeXRlQ29kZSA6IDApKSkKIyAzNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL01peGVkTW9kZS5oIiAzCiNkZWZpbmUgUkVTVUxUX1NJWkUoc2l6ZUNvZGUpICgoUHJv
Y0luZm9UeXBlKShzaXplQ29kZSkgPDwga1Jlc3VsdFNpemVQaGFzZSkKIyAzNjYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01peGVkTW9kZS5oIiAzCiNkZWZpbmUgU1RBQ0tfUk9V
VElORV9QQVJBTUVURVIod2hpY2hQYXJhbSxzaXplQ29kZSkgKChQcm9jSW5mb1R5cGUpKHNpemVD
b2RlKSA8PCAoa1N0YWNrUGFyYW1ldGVyUGhhc2UgKyAoKCh3aGljaFBhcmFtKSAtIDEpICoga1N0
YWNrUGFyYW1ldGVyV2lkdGgpKSkKIyAzNzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL01peGVkTW9kZS5oIiAzCiNkZWZpbmUgRElTUEFUQ0hFRF9TVEFDS19ST1VUSU5FX1BBUkFN
RVRFUih3aGljaFBhcmFtLHNpemVDb2RlKSAoKFByb2NJbmZvVHlwZSkoc2l6ZUNvZGUpIDw8IChr
RGlzcGF0Y2hlZFBhcmFtZXRlclBoYXNlICsgKCgod2hpY2hQYXJhbSkgLSAxKSAqIGtTdGFja1Bh
cmFtZXRlcldpZHRoKSkpCiMgMzg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9N
aXhlZE1vZGUuaCIgMwojZGVmaW5lIERJU1BBVENIRURfU1RBQ0tfUk9VVElORV9TRUxFQ1RPUl9T
SVpFKHNpemVDb2RlKSAoKFByb2NJbmZvVHlwZSkoc2l6ZUNvZGUpIDw8IGtEaXNwYXRjaGVkU2Vs
ZWN0b3JTaXplUGhhc2UpCiMgMzk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9N
aXhlZE1vZGUuaCIgMwojZGVmaW5lIFJFR0lTVEVSX1JFU1VMVF9MT0NBVElPTih3aGljaFJlZykg
KChQcm9jSW5mb1R5cGUpKHdoaWNoUmVnKSA8PCBrUmVnaXN0ZXJSZXN1bHRMb2NhdGlvblBoYXNl
KQoKCgoKCgoKI2RlZmluZSBSRUdJU1RFUl9ST1VUSU5FX1BBUkFNRVRFUih3aGljaFBhcmFtLHdo
aWNoUmVnLHNpemVDb2RlKSAoKCgoUHJvY0luZm9UeXBlKShzaXplQ29kZSkgPDwga1JlZ2lzdGVy
UGFyYW1ldGVyU2l6ZVBoYXNlKSB8ICgoUHJvY0luZm9UeXBlKSh3aGljaFJlZykgPDwga1JlZ2lz
dGVyUGFyYW1ldGVyV2hpY2hQaGFzZSkpIDw8IChrUmVnaXN0ZXJQYXJhbWV0ZXJQaGFzZSArICgo
KHdoaWNoUGFyYW0pIC0gMSkgKiBrUmVnaXN0ZXJQYXJhbWV0ZXJXaWR0aCkpKQojIDQ0NyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWl4ZWRNb2RlLmgiIDMKI2RlZmluZSBTUEVD
SUFMX0NBU0VfUFJPQ0lORk8oc3BlY2lhbENhc2VDb2RlKSAoa1NwZWNpYWxDYXNlIHwgKChQcm9j
SW5mb1R5cGUpKHNwZWNpYWxDYXNlQ29kZSkgPDwgNCkpCiMgNDc1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9NaXhlZE1vZGUuaCIgMwojZGVmaW5lIFNUQUNLX1VQUF9UWVBFKG5h
bWUpIG5hbWUKI2RlZmluZSBSRUdJU1RFUl9VUFBfVFlQRShuYW1lKSBuYW1lCiNkZWZpbmUgVFZF
Q1RPUl9VUFBfVFlQRShuYW1lKSBuYW1lCiMgNTExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9NaXhlZE1vZGUuaCIgMwojZGVmaW5lIENBTExfWkVST19QQVJBTUVURVJfVVBQKHVw
cCxwcm9jSW5mbykgKCoodXBwKSkoKQojZGVmaW5lIENBTExfT05FX1BBUkFNRVRFUl9VUFAodXBw
LHByb2NJbmZvLHAxKSAoKih1cHApKSgocDEpKQojZGVmaW5lIENBTExfVFdPX1BBUkFNRVRFUl9V
UFAodXBwLHByb2NJbmZvLHAxLHAyKSAoKih1cHApKSgocDEpLCAocDIpKQojZGVmaW5lIENBTExf
VEhSRUVfUEFSQU1FVEVSX1VQUCh1cHAscHJvY0luZm8scDEscDIscDMpICgqKHVwcCkpKChwMSks
IChwMiksIChwMykpCiNkZWZpbmUgQ0FMTF9GT1VSX1BBUkFNRVRFUl9VUFAodXBwLHByb2NJbmZv
LHAxLHAyLHAzLHA0KSAoKih1cHApKSgocDEpLCAocDIpLCAocDMpLCAocDQpKQojZGVmaW5lIENB
TExfRklWRV9QQVJBTUVURVJfVVBQKHVwcCxwcm9jSW5mbyxwMSxwMixwMyxwNCxwNSkgKCoodXBw
KSkoKHAxKSwgKHAyKSwgKHAzKSwgKHA0KSwgKHA1KSkKI2RlZmluZSBDQUxMX1NJWF9QQVJBTUVU
RVJfVVBQKHVwcCxwcm9jSW5mbyxwMSxwMixwMyxwNCxwNSxwNikgKCoodXBwKSkoKHAxKSwgKHAy
KSwgKHAzKSwgKHA0KSwgKHA1KSwgKHA2KSkKI2RlZmluZSBDQUxMX1NFVkVOX1BBUkFNRVRFUl9V
UFAodXBwLHByb2NJbmZvLHAxLHAyLHAzLHA0LHA1LHA2LHA3KSAoKih1cHApKSgocDEpLCAocDIp
LCAocDMpLCAocDQpLCAocDUpLCAocDYpLCAocDcpKQojZGVmaW5lIENBTExfRUlHSFRfUEFSQU1F
VEVSX1VQUCh1cHAscHJvY0luZm8scDEscDIscDMscDQscDUscDYscDcscDgpICgqKHVwcCkpKChw
MSksIChwMiksIChwMyksIChwNCksIChwNSksIChwNiksIChwNyksIChwOCkpCiNkZWZpbmUgQ0FM
TF9OSU5FX1BBUkFNRVRFUl9VUFAodXBwLHByb2NJbmZvLHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4
LHA5KSAoKih1cHApKSgocDEpLCAocDIpLCAocDMpLCAocDQpLCAocDUpLCAocDYpLCAocDcpLCAo
cDgpLCAocDkpKQojZGVmaW5lIENBTExfVEVOX1BBUkFNRVRFUl9VUFAodXBwLHByb2NJbmZvLHAx
LHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5LHAxMCkgKCoodXBwKSkoKHAxKSwgKHAyKSwgKHAzKSwg
KHA0KSwgKHA1KSwgKHA2KSwgKHA3KSwgKHA4KSwgKHA5KSwgKHAxMCkpCiNkZWZpbmUgQ0FMTF9F
TEVWRU5fUEFSQU1FVEVSX1VQUCh1cHAscHJvY0luZm8scDEscDIscDMscDQscDUscDYscDcscDgs
cDkscDEwLHAxMSkgKCoodXBwKSkoKHAxKSwgKHAyKSwgKHAzKSwgKHA0KSwgKHA1KSwgKHA2KSwg
KHA3KSwgKHA4KSwgKHA5KSwgKHAxMCksIChwMTEpKQojZGVmaW5lIENBTExfVFdFTFZFX1BBUkFN
RVRFUl9VUFAodXBwLHByb2NJbmZvLHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5LHAxMCxwMTEs
cDEyKSAoKih1cHApKSgocDEpLCAocDIpLCAocDMpLCAocDQpLCAocDUpLCAocDYpLCAocDcpLCAo
cDgpLCAocDkpLCAocDEwKSwgKHAxMSksIChwMTIpKQojZGVmaW5lIENBTExfVEhJUlRFRU5fUEFS
QU1FVEVSX1VQUCh1cHAscHJvY0luZm8scDEscDIscDMscDQscDUscDYscDcscDgscDkscDEwLHAx
MSxwMTIscDEzKSAoKih1cHApKSgocDEpLCAocDIpLCAocDMpLCAocDQpLCAocDUpLCAocDYpLCAo
cDcpLCAocDgpLCAocDkpLCAocDEwKSwgKHAxMSksIChwMTIpLCAocDEzKSkKCgoKCgoKI3ByYWdt
YSBwYWNrKHBvcCkKIyAyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29sbGVj
dGlvbnMuaCIgMiAzCiMgMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbGxl
Y3Rpb25zLmgiIDMKZXh0ZXJuICJDIiB7CgoKCgoKCmVudW0gewogIGtDb2xsZWN0aW9uRG9udFdh
bnRUYWcgPSAwLAogIGtDb2xsZWN0aW9uRG9udFdhbnRJZCA9IDAsCiAga0NvbGxlY3Rpb25Eb250
V2FudFNpemUgPSAwLAogIGtDb2xsZWN0aW9uRG9udFdhbnRBdHRyaWJ1dGVzID0gMCwKICBrQ29s
bGVjdGlvbkRvbnRXYW50SW5kZXggPSAwLAogIGtDb2xsZWN0aW9uRG9udFdhbnREYXRhID0gMAp9
OwoKCgplbnVtIHsKICBrQ29sbGVjdGlvbk5vQXR0cmlidXRlcyA9IDB4MDAwMDAwMDAsCiAga0Nv
bGxlY3Rpb25BbGxBdHRyaWJ1dGVzID0gKGludCkweEZGRkZGRkZGLAogIGtDb2xsZWN0aW9uVXNl
ckF0dHJpYnV0ZXMgPSAweDAwMDBGRkZGLAogIGtDb2xsZWN0aW9uRGVmYXVsdEF0dHJpYnV0ZXMg
PSAweDQwMDAwMDAwCn07CgoKCgoKCgplbnVtIHsKICBrQ29sbGVjdGlvblVzZXIwQml0ID0gMCwK
ICBrQ29sbGVjdGlvblVzZXIxQml0ID0gMSwKICBrQ29sbGVjdGlvblVzZXIyQml0ID0gMiwKICBr
Q29sbGVjdGlvblVzZXIzQml0ID0gMywKICBrQ29sbGVjdGlvblVzZXI0Qml0ID0gNCwKICBrQ29s
bGVjdGlvblVzZXI1Qml0ID0gNSwKICBrQ29sbGVjdGlvblVzZXI2Qml0ID0gNiwKICBrQ29sbGVj
dGlvblVzZXI3Qml0ID0gNywKICBrQ29sbGVjdGlvblVzZXI4Qml0ID0gOCwKICBrQ29sbGVjdGlv
blVzZXI5Qml0ID0gOSwKICBrQ29sbGVjdGlvblVzZXIxMEJpdCA9IDEwLAogIGtDb2xsZWN0aW9u
VXNlcjExQml0ID0gMTEsCiAga0NvbGxlY3Rpb25Vc2VyMTJCaXQgPSAxMiwKICBrQ29sbGVjdGlv
blVzZXIxM0JpdCA9IDEzLAogIGtDb2xsZWN0aW9uVXNlcjE0Qml0ID0gMTQsCiAga0NvbGxlY3Rp
b25Vc2VyMTVCaXQgPSAxNSwKICBrQ29sbGVjdGlvblJlc2VydmVkMEJpdCA9IDE2LAogIGtDb2xs
ZWN0aW9uUmVzZXJ2ZWQxQml0ID0gMTcsCiAga0NvbGxlY3Rpb25SZXNlcnZlZDJCaXQgPSAxOCwK
ICBrQ29sbGVjdGlvblJlc2VydmVkM0JpdCA9IDE5LAogIGtDb2xsZWN0aW9uUmVzZXJ2ZWQ0Qml0
ID0gMjAsCiAga0NvbGxlY3Rpb25SZXNlcnZlZDVCaXQgPSAyMSwKICBrQ29sbGVjdGlvblJlc2Vy
dmVkNkJpdCA9IDIyLAogIGtDb2xsZWN0aW9uUmVzZXJ2ZWQ3Qml0ID0gMjMsCiAga0NvbGxlY3Rp
b25SZXNlcnZlZDhCaXQgPSAyNCwKICBrQ29sbGVjdGlvblJlc2VydmVkOUJpdCA9IDI1LAogIGtD
b2xsZWN0aW9uUmVzZXJ2ZWQxMEJpdCA9IDI2LAogIGtDb2xsZWN0aW9uUmVzZXJ2ZWQxMUJpdCA9
IDI3LAogIGtDb2xsZWN0aW9uUmVzZXJ2ZWQxMkJpdCA9IDI4LAogIGtDb2xsZWN0aW9uUmVzZXJ2
ZWQxM0JpdCA9IDI5LAogIGtDb2xsZWN0aW9uUGVyc2lzdGVuY2VCaXQgPSAzMCwKICBrQ29sbGVj
dGlvbkxvY2tCaXQgPSAzMQp9OwoKCgplbnVtIHsKICBrQ29sbGVjdGlvblVzZXIwTWFzayA9IDFM
IDw8IGtDb2xsZWN0aW9uVXNlcjBCaXQsCiAga0NvbGxlY3Rpb25Vc2VyMU1hc2sgPSAxTCA8PCBr
Q29sbGVjdGlvblVzZXIxQml0LAogIGtDb2xsZWN0aW9uVXNlcjJNYXNrID0gMUwgPDwga0NvbGxl
Y3Rpb25Vc2VyMkJpdCwKICBrQ29sbGVjdGlvblVzZXIzTWFzayA9IDFMIDw8IGtDb2xsZWN0aW9u
VXNlcjNCaXQsCiAga0NvbGxlY3Rpb25Vc2VyNE1hc2sgPSAxTCA8PCBrQ29sbGVjdGlvblVzZXI0
Qml0LAogIGtDb2xsZWN0aW9uVXNlcjVNYXNrID0gMUwgPDwga0NvbGxlY3Rpb25Vc2VyNUJpdCwK
ICBrQ29sbGVjdGlvblVzZXI2TWFzayA9IDFMIDw8IGtDb2xsZWN0aW9uVXNlcjZCaXQsCiAga0Nv
bGxlY3Rpb25Vc2VyN01hc2sgPSAxTCA8PCBrQ29sbGVjdGlvblVzZXI3Qml0LAogIGtDb2xsZWN0
aW9uVXNlcjhNYXNrID0gMUwgPDwga0NvbGxlY3Rpb25Vc2VyOEJpdCwKICBrQ29sbGVjdGlvblVz
ZXI5TWFzayA9IDFMIDw8IGtDb2xsZWN0aW9uVXNlcjlCaXQsCiAga0NvbGxlY3Rpb25Vc2VyMTBN
YXNrID0gMUwgPDwga0NvbGxlY3Rpb25Vc2VyMTBCaXQsCiAga0NvbGxlY3Rpb25Vc2VyMTFNYXNr
ID0gMUwgPDwga0NvbGxlY3Rpb25Vc2VyMTFCaXQsCiAga0NvbGxlY3Rpb25Vc2VyMTJNYXNrID0g
MUwgPDwga0NvbGxlY3Rpb25Vc2VyMTJCaXQsCiAga0NvbGxlY3Rpb25Vc2VyMTNNYXNrID0gMUwg
PDwga0NvbGxlY3Rpb25Vc2VyMTNCaXQsCiAga0NvbGxlY3Rpb25Vc2VyMTRNYXNrID0gMUwgPDwg
a0NvbGxlY3Rpb25Vc2VyMTRCaXQsCiAga0NvbGxlY3Rpb25Vc2VyMTVNYXNrID0gMUwgPDwga0Nv
bGxlY3Rpb25Vc2VyMTVCaXQsCiAga0NvbGxlY3Rpb25SZXNlcnZlZDBNYXNrID0gMUwgPDwga0Nv
bGxlY3Rpb25SZXNlcnZlZDBCaXQsCiAga0NvbGxlY3Rpb25SZXNlcnZlZDFNYXNrID0gMUwgPDwg
a0NvbGxlY3Rpb25SZXNlcnZlZDFCaXQsCiAga0NvbGxlY3Rpb25SZXNlcnZlZDJNYXNrID0gMUwg
PDwga0NvbGxlY3Rpb25SZXNlcnZlZDJCaXQsCiAga0NvbGxlY3Rpb25SZXNlcnZlZDNNYXNrID0g
MUwgPDwga0NvbGxlY3Rpb25SZXNlcnZlZDNCaXQsCiAga0NvbGxlY3Rpb25SZXNlcnZlZDRNYXNr
ID0gMUwgPDwga0NvbGxlY3Rpb25SZXNlcnZlZDRCaXQsCiAga0NvbGxlY3Rpb25SZXNlcnZlZDVN
YXNrID0gMUwgPDwga0NvbGxlY3Rpb25SZXNlcnZlZDVCaXQsCiAga0NvbGxlY3Rpb25SZXNlcnZl
ZDZNYXNrID0gMUwgPDwga0NvbGxlY3Rpb25SZXNlcnZlZDZCaXQsCiAga0NvbGxlY3Rpb25SZXNl
cnZlZDdNYXNrID0gMUwgPDwga0NvbGxlY3Rpb25SZXNlcnZlZDdCaXQsCiAga0NvbGxlY3Rpb25S
ZXNlcnZlZDhNYXNrID0gMUwgPDwga0NvbGxlY3Rpb25SZXNlcnZlZDhCaXQsCiAga0NvbGxlY3Rp
b25SZXNlcnZlZDlNYXNrID0gMUwgPDwga0NvbGxlY3Rpb25SZXNlcnZlZDlCaXQsCiAga0NvbGxl
Y3Rpb25SZXNlcnZlZDEwTWFzayA9IDFMIDw8IGtDb2xsZWN0aW9uUmVzZXJ2ZWQxMEJpdCwKICBr
Q29sbGVjdGlvblJlc2VydmVkMTFNYXNrID0gMUwgPDwga0NvbGxlY3Rpb25SZXNlcnZlZDExQml0
LAogIGtDb2xsZWN0aW9uUmVzZXJ2ZWQxMk1hc2sgPSAxTCA8PCBrQ29sbGVjdGlvblJlc2VydmVk
MTJCaXQsCiAga0NvbGxlY3Rpb25SZXNlcnZlZDEzTWFzayA9IDFMIDw8IGtDb2xsZWN0aW9uUmVz
ZXJ2ZWQxM0JpdCwKICBrQ29sbGVjdGlvblBlcnNpc3RlbmNlTWFzayA9IDFMIDw8IGtDb2xsZWN0
aW9uUGVyc2lzdGVuY2VCaXQsCiAga0NvbGxlY3Rpb25Mb2NrTWFzayA9IDFMIDw8IGtDb2xsZWN0
aW9uTG9ja0JpdAp9OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVDb2xsZWN0aW9uKiBDb2xs
ZWN0aW9uOwoKdHlwZWRlZiBGb3VyQ2hhckNvZGUgQ29sbGVjdGlvblRhZzsKdHlwZWRlZiBPU0Vy
ciAoICogQ29sbGVjdGlvbkZsYXR0ZW5Qcm9jUHRyKShTSW50MzIgc2l6ZSwgdm9pZCAqZGF0YSwg
dm9pZCAqcmVmQ29uKTsKdHlwZWRlZiBPU0VyciAoICogQ29sbGVjdGlvbkV4Y2VwdGlvblByb2NQ
dHIpKENvbGxlY3Rpb24gYywgT1NFcnIgc3RhdHVzKTsKdHlwZWRlZiBDb2xsZWN0aW9uRmxhdHRl
blByb2NQdHIgQ29sbGVjdGlvbkZsYXR0ZW5VUFA7CnR5cGVkZWYgQ29sbGVjdGlvbkV4Y2VwdGlv
blByb2NQdHIgQ29sbGVjdGlvbkV4Y2VwdGlvblVQUDsKIyAxNTkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0NvbGxlY3Rpb25zLmgiIDMKZXh0ZXJuIENvbGxlY3Rpb25GbGF0dGVu
VVBQCk5ld0NvbGxlY3Rpb25GbGF0dGVuVVBQKENvbGxlY3Rpb25GbGF0dGVuUHJvY1B0ciB1c2Vy
Um91dGluZSkgOwojIDE3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29sbGVj
dGlvbnMuaCIgMwpleHRlcm4gQ29sbGVjdGlvbkV4Y2VwdGlvblVQUApOZXdDb2xsZWN0aW9uRXhj
ZXB0aW9uVVBQKENvbGxlY3Rpb25FeGNlcHRpb25Qcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMTgx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVy
biB2b2lkCkRpc3Bvc2VDb2xsZWN0aW9uRmxhdHRlblVQUChDb2xsZWN0aW9uRmxhdHRlblVQUCB1
c2VyVVBQKSA7CiMgMTkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db2xsZWN0
aW9ucy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VDb2xsZWN0aW9uRXhjZXB0aW9uVVBQKENvbGxl
Y3Rpb25FeGNlcHRpb25VUFAgdXNlclVQUCkgOwojIDIwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gT1NFcnIKSW52b2tlQ29sbGVjdGlv
bkZsYXR0ZW5VUFAoCiAgU0ludDMyIHNpemUsCiAgdm9pZCAqIGRhdGEsCiAgdm9pZCAqIHJlZkNv
biwKICBDb2xsZWN0aW9uRmxhdHRlblVQUCB1c2VyVVBQKSA7CiMgMjE4ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVybiBPU0VycgpJbnZva2VD
b2xsZWN0aW9uRXhjZXB0aW9uVVBQKAogIENvbGxlY3Rpb24gYywKICBPU0VyciBzdGF0dXMsCiAg
Q29sbGVjdGlvbkV4Y2VwdGlvblVQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgQ29sbGVjdGlv
bkZsYXR0ZW5VUFAgTmV3Q29sbGVjdGlvbkZsYXR0ZW5VUFAoQ29sbGVjdGlvbkZsYXR0ZW5Qcm9j
UHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIENvbGxl
Y3Rpb25FeGNlcHRpb25VUFAgTmV3Q29sbGVjdGlvbkV4Y2VwdGlvblVQUChDb2xsZWN0aW9uRXhj
ZXB0aW9uUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlu
bGluZSB2b2lkIERpc3Bvc2VDb2xsZWN0aW9uRmxhdHRlblVQUChDb2xsZWN0aW9uRmxhdHRlblVQ
UCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlQ29sbGVjdGlvbkV4Y2VwdGlvblVQUChDb2xs
ZWN0aW9uRXhjZXB0aW9uVVBQKSB7IH0KICAgIGlubGluZSBPU0VyciBJbnZva2VDb2xsZWN0aW9u
RmxhdHRlblVQUChTSW50MzIgc2l6ZSwgdm9pZCAqIGRhdGEsIHZvaWQgKiByZWZDb24sIENvbGxl
Y3Rpb25GbGF0dGVuVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoc2l6ZSwgZGF0YSwg
cmVmQ29uKTsgfQogICAgaW5saW5lIE9TRXJyIEludm9rZUNvbGxlY3Rpb25FeGNlcHRpb25VUFAo
Q29sbGVjdGlvbiBjLCBPU0VyciBzdGF0dXMsIENvbGxlY3Rpb25FeGNlcHRpb25VUFAgdXNlclVQ
UCkgeyByZXR1cm4gKCp1c2VyVVBQKShjLCBzdGF0dXMpOyB9CiMgMjUzICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVybiBDb2xsZWN0aW9uCk5l
d0NvbGxlY3Rpb24odm9pZCkgOwojIDI2NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlQ29sbGVjdGlvbihDb2xsZWN0
aW9uIGMpIDsKIyAyNzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbGxlY3Rp
b25zLmgiIDMKZXh0ZXJuIENvbGxlY3Rpb24KQ2xvbmVDb2xsZWN0aW9uKENvbGxlY3Rpb24gYykg
OwojIDI5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIg
MwpleHRlcm4gU0ludDMyCkNvdW50Q29sbGVjdGlvbk93bmVycyhDb2xsZWN0aW9uIGMpIDsKIyAz
MDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbGxlY3Rpb25zLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzClJldGFpbkNvbGxlY3Rpb24oQ29sbGVjdGlvbiBjKSA7CiMgMzE4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVybiBPU1N0
YXR1cwpSZWxlYXNlQ29sbGVjdGlvbihDb2xsZWN0aW9uIGMpIDsKIyAzMzEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbGxlY3Rpb25zLmgiIDMKZXh0ZXJuIEl0ZW1Db3VudApH
ZXRDb2xsZWN0aW9uUmV0YWluQ291bnQoQ29sbGVjdGlvbiBjKSA7CiMgMzQ0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVybiBDb2xsZWN0aW9u
CkNvcHlDb2xsZWN0aW9uKAogIENvbGxlY3Rpb24gc3JjQ29sbGVjdGlvbiwKICBDb2xsZWN0aW9u
IGRzdENvbGxlY3Rpb24pIDsKIyAzNTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L0NvbGxlY3Rpb25zLmgiIDMKZXh0ZXJuIFNJbnQzMgpHZXRDb2xsZWN0aW9uRGVmYXVsdEF0dHJp
YnV0ZXMoQ29sbGVjdGlvbiBjKSA7CiMgMzcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVybiB2b2lkClNldENvbGxlY3Rpb25EZWZhdWx0QXR0
cmlidXRlcygKICBDb2xsZWN0aW9uIGMsCiAgU0ludDMyIHdoaWNoQXR0cmlidXRlcywKICBTSW50
MzIgbmV3QXR0cmlidXRlcykgOwojIDM4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gU0ludDMyCkNvdW50Q29sbGVjdGlvbkl0ZW1zKENv
bGxlY3Rpb24gYykgOwojIDQwMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29s
bGVjdGlvbnMuaCIgMwpleHRlcm4gT1NFcnIKQWRkQ29sbGVjdGlvbkl0ZW0oCiAgQ29sbGVjdGlv
biBjLAogIENvbGxlY3Rpb25UYWcgdGFnLAogIFNJbnQzMiBpZCwKICBTSW50MzIgaXRlbVNpemUs
CiAgY29uc3Qgdm9pZCAqIGl0ZW1EYXRhKSA7CiMgNDE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVybiBPU0VycgpHZXRDb2xsZWN0aW9uSXRl
bSgKICBDb2xsZWN0aW9uIGMsCiAgQ29sbGVjdGlvblRhZyB0YWcsCiAgU0ludDMyIGlkLAogIFNJ
bnQzMiAqIGl0ZW1TaXplLAogIHZvaWQgKiBpdGVtRGF0YSkgOwojIDQzNyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gT1NFcnIKUmVtb3Zl
Q29sbGVjdGlvbkl0ZW0oCiAgQ29sbGVjdGlvbiBjLAogIENvbGxlY3Rpb25UYWcgdGFnLAogIFNJ
bnQzMiBpZCkgOwojIDQ1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29sbGVj
dGlvbnMuaCIgMwpleHRlcm4gT1NFcnIKU2V0Q29sbGVjdGlvbkl0ZW1JbmZvKAogIENvbGxlY3Rp
b24gYywKICBDb2xsZWN0aW9uVGFnIHRhZywKICBTSW50MzIgaWQsCiAgU0ludDMyIHdoaWNoQXR0
cmlidXRlcywKICBTSW50MzIgbmV3QXR0cmlidXRlcykgOwojIDQ3MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gT1NFcnIKR2V0Q29sbGVj
dGlvbkl0ZW1JbmZvKAogIENvbGxlY3Rpb24gYywKICBDb2xsZWN0aW9uVGFnIHRhZywKICBTSW50
MzIgaWQsCiAgU0ludDMyICogaXRlbUluZGV4LAogIFNJbnQzMiAqIGl0ZW1TaXplLAogIFNJbnQz
MiAqIGF0dHJpYnV0ZXMpIDsKIyA0OTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L0NvbGxlY3Rpb25zLmgiIDMKZXh0ZXJuIE9TRXJyClJlcGxhY2VJbmRleGVkQ29sbGVjdGlvbkl0
ZW0oCiAgQ29sbGVjdGlvbiBjLAogIFNJbnQzMiBpdGVtSW5kZXgsCiAgU0ludDMyIGl0ZW1TaXpl
LAogIGNvbnN0IHZvaWQgKiBpdGVtRGF0YSkgOwojIDUwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gT1NFcnIKR2V0SW5kZXhlZENvbGxl
Y3Rpb25JdGVtKAogIENvbGxlY3Rpb24gYywKICBTSW50MzIgaXRlbUluZGV4LAogIFNJbnQzMiAq
IGl0ZW1TaXplLAogIHZvaWQgKiBpdGVtRGF0YSkgOwojIDUyNCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gT1NFcnIKUmVtb3ZlSW5kZXhl
ZENvbGxlY3Rpb25JdGVtKAogIENvbGxlY3Rpb24gYywKICBTSW50MzIgaXRlbUluZGV4KSA7CiMg
NTM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4
dGVybiBPU0VycgpTZXRJbmRleGVkQ29sbGVjdGlvbkl0ZW1JbmZvKAogIENvbGxlY3Rpb24gYywK
ICBTSW50MzIgaXRlbUluZGV4LAogIFNJbnQzMiB3aGljaEF0dHJpYnV0ZXMsCiAgU0ludDMyIG5l
d0F0dHJpYnV0ZXMpIDsKIyA1NTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0Nv
bGxlY3Rpb25zLmgiIDMKZXh0ZXJuIE9TRXJyCkdldEluZGV4ZWRDb2xsZWN0aW9uSXRlbUluZm8o
CiAgQ29sbGVjdGlvbiBjLAogIFNJbnQzMiBpdGVtSW5kZXgsCiAgQ29sbGVjdGlvblRhZyAqIHRh
ZywKICBTSW50MzIgKiBpZCwKICBTSW50MzIgKiBpdGVtU2l6ZSwKICBTSW50MzIgKiBhdHRyaWJ1
dGVzKSA7CiMgNTc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db2xsZWN0aW9u
cy5oIiAzCmV4dGVybiBCb29sZWFuCkNvbGxlY3Rpb25UYWdFeGlzdHMoCiAgQ29sbGVjdGlvbiBj
LAogIENvbGxlY3Rpb25UYWcgdGFnKSA7CiMgNTkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVybiBTSW50MzIKQ291bnRDb2xsZWN0aW9uVGFn
cyhDb2xsZWN0aW9uIGMpIDsKIyA2MDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L0NvbGxlY3Rpb25zLmgiIDMKZXh0ZXJuIE9TRXJyCkdldEluZGV4ZWRDb2xsZWN0aW9uVGFnKAog
IENvbGxlY3Rpb24gYywKICBTSW50MzIgdGFnSW5kZXgsCiAgQ29sbGVjdGlvblRhZyAqIHRhZykg
OwojIDYxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIg
MwpleHRlcm4gU0ludDMyCkNvdW50VGFnZ2VkQ29sbGVjdGlvbkl0ZW1zKAogIENvbGxlY3Rpb24g
YywKICBDb2xsZWN0aW9uVGFnIHRhZykgOwojIDYzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gT1NFcnIKR2V0VGFnZ2VkQ29sbGVjdGlv
bkl0ZW0oCiAgQ29sbGVjdGlvbiBjLAogIENvbGxlY3Rpb25UYWcgdGFnLAogIFNJbnQzMiB3aGlj
aEl0ZW0sCiAgU0ludDMyICogaXRlbVNpemUsCiAgdm9pZCAqIGl0ZW1EYXRhKSA7CiMgNjUyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVybiBP
U0VycgpHZXRUYWdnZWRDb2xsZWN0aW9uSXRlbUluZm8oCiAgQ29sbGVjdGlvbiBjLAogIENvbGxl
Y3Rpb25UYWcgdGFnLAogIFNJbnQzMiB3aGljaEl0ZW0sCiAgU0ludDMyICogaWQsCiAgU0ludDMy
ICogaXRlbUluZGV4LAogIFNJbnQzMiAqIGl0ZW1TaXplLAogIFNJbnQzMiAqIGF0dHJpYnV0ZXMp
IDsKIyA2NzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbGxlY3Rpb25zLmgi
IDMKZXh0ZXJuIHZvaWQKUHVyZ2VDb2xsZWN0aW9uKAogIENvbGxlY3Rpb24gYywKICBTSW50MzIg
d2hpY2hBdHRyaWJ1dGVzLAogIFNJbnQzMiBtYXRjaGluZ0F0dHJpYnV0ZXMpIDsKIyA2ODggIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbGxlY3Rpb25zLmgiIDMKZXh0ZXJuIHZv
aWQKUHVyZ2VDb2xsZWN0aW9uVGFnKAogIENvbGxlY3Rpb24gYywKICBDb2xsZWN0aW9uVGFnIHRh
ZykgOwojIDcwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29sbGVjdGlvbnMu
aCIgMwpleHRlcm4gdm9pZApFbXB0eUNvbGxlY3Rpb24oQ29sbGVjdGlvbiBjKSA7CiMgNzE1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVybiBP
U0VycgpGbGF0dGVuQ29sbGVjdGlvbigKICBDb2xsZWN0aW9uIGMsCiAgQ29sbGVjdGlvbkZsYXR0
ZW5VUFAgZmxhdHRlblByb2MsCiAgdm9pZCAqIHJlZkNvbikgOwojIDczMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gT1NFcnIKRmxhdHRl
blBhcnRpYWxDb2xsZWN0aW9uKAogIENvbGxlY3Rpb24gYywKICBDb2xsZWN0aW9uRmxhdHRlblVQ
UCBmbGF0dGVuUHJvYywKICB2b2lkICogcmVmQ29uLAogIFNJbnQzMiB3aGljaEF0dHJpYnV0ZXMs
CiAgU0ludDMyIG1hdGNoaW5nQXR0cmlidXRlcykgOwojIDc0OSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gT1NFcnIKVW5mbGF0dGVuQ29s
bGVjdGlvbigKICBDb2xsZWN0aW9uIGMsCiAgQ29sbGVjdGlvbkZsYXR0ZW5VUFAgZmxhdHRlblBy
b2MsCiAgdm9pZCAqIHJlZkNvbikgOwojIDc2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gQ29sbGVjdGlvbkV4Y2VwdGlvblVQUApHZXRD
b2xsZWN0aW9uRXhjZXB0aW9uUHJvYyhDb2xsZWN0aW9uIGMpIDsKIyA3NzggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbGxlY3Rpb25zLmgiIDMKZXh0ZXJuIHZvaWQKU2V0Q29s
bGVjdGlvbkV4Y2VwdGlvblByb2MoCiAgQ29sbGVjdGlvbiBjLAogIENvbGxlY3Rpb25FeGNlcHRp
b25VUFAgZXhjZXB0aW9uUHJvYykgOwojIDc5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gQ29sbGVjdGlvbgpHZXROZXdDb2xsZWN0aW9u
KFNJbnQxNiBjb2xsZWN0aW9uSUQpIDsKIyA4MDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0NvbGxlY3Rpb25zLmgiIDMKZXh0ZXJuIE9TRXJyCkFkZENvbGxlY3Rpb25JdGVtSGRs
KAogIENvbGxlY3Rpb24gYUNvbGxlY3Rpb24sCiAgQ29sbGVjdGlvblRhZyB0YWcsCiAgU0ludDMy
IGlkLAogIEhhbmRsZSBpdGVtRGF0YSkgOwojIDgyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4gT1NFcnIKR2V0Q29sbGVjdGlvbkl0ZW1I
ZGwoCiAgQ29sbGVjdGlvbiBhQ29sbGVjdGlvbiwKICBDb2xsZWN0aW9uVGFnIHRhZywKICBTSW50
MzIgaWQsCiAgSGFuZGxlIGl0ZW1EYXRhKSA7CiMgODQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVybiBPU0VycgpSZXBsYWNlSW5kZXhlZENv
bGxlY3Rpb25JdGVtSGRsKAogIENvbGxlY3Rpb24gYUNvbGxlY3Rpb24sCiAgU0ludDMyIGl0ZW1J
bmRleCwKICBIYW5kbGUgaXRlbURhdGEpIDsKIyA4NTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0NvbGxlY3Rpb25zLmgiIDMKZXh0ZXJuIE9TRXJyCkdldEluZGV4ZWRDb2xsZWN0
aW9uSXRlbUhkbCgKICBDb2xsZWN0aW9uIGFDb2xsZWN0aW9uLAogIFNJbnQzMiBpdGVtSW5kZXgs
CiAgSGFuZGxlIGl0ZW1EYXRhKSA7CiMgODc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9Db2xsZWN0aW9ucy5oIiAzCmV4dGVybiBPU0VycgpGbGF0dGVuQ29sbGVjdGlvblRvSGRs
KAogIENvbGxlY3Rpb24gYUNvbGxlY3Rpb24sCiAgSGFuZGxlIGZsYXR0ZW5lZCkgOwojIDg5MCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29sbGVjdGlvbnMuaCIgMwpleHRlcm4g
T1NFcnIKVW5mbGF0dGVuQ29sbGVjdGlvbkZyb21IZGwoCiAgQ29sbGVjdGlvbiBhQ29sbGVjdGlv
biwKICBIYW5kbGUgZmxhdHRlbmVkKSA7CiMgOTg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9Db2xsZWN0aW9ucy5oIiAzCn0KIyA1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9FbmRpYW4uaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0VuZGlhbi5oIiAzCiNkZWZpbmUgX19FTkRJQU5fXyAKIyAzNiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvRW5kaWFuLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBw
YWNrKHB1c2gsIDIpCiMgOTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0VuZGlh
bi5oIiAzCiNkZWZpbmUgRW5kaWFuMTZfU3dhcCh2YWx1ZSkgKFVJbnQxNikgKF9fYnVpbHRpbl9j
b25zdGFudF9wKHZhbHVlKSA/IE9TU3dhcENvbnN0SW50MTYodmFsdWUpIDogT1NTd2FwSW50MTYo
dmFsdWUpKQojZGVmaW5lIEVuZGlhbjMyX1N3YXAodmFsdWUpIChVSW50MzIpIChfX2J1aWx0aW5f
Y29uc3RhbnRfcCh2YWx1ZSkgPyBPU1N3YXBDb25zdEludDMyKHZhbHVlKSA6IE9TU3dhcEludDMy
KHZhbHVlKSkKI2RlZmluZSBFbmRpYW42NF9Td2FwKHZhbHVlKSAoVUludDY0KSAoX19idWlsdGlu
X2NvbnN0YW50X3AodmFsdWUpID8gT1NTd2FwQ29uc3RJbnQ2NCh2YWx1ZSkgOiBPU1N3YXBJbnQ2
NCh2YWx1ZSkpCiMgMTc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9FbmRpYW4u
aCIgMwojZGVmaW5lIEVuZGlhblMxNl9MdG9OKHZhbHVlKSAodmFsdWUpCiNkZWZpbmUgRW5kaWFu
UzE2X050b0wodmFsdWUpICh2YWx1ZSkKI2RlZmluZSBFbmRpYW5VMTZfTHRvTih2YWx1ZSkgKHZh
bHVlKQojZGVmaW5lIEVuZGlhblUxNl9OdG9MKHZhbHVlKSAodmFsdWUpCiNkZWZpbmUgRW5kaWFu
UzMyX0x0b04odmFsdWUpICh2YWx1ZSkKI2RlZmluZSBFbmRpYW5TMzJfTnRvTCh2YWx1ZSkgKHZh
bHVlKQojZGVmaW5lIEVuZGlhblUzMl9MdG9OKHZhbHVlKSAodmFsdWUpCiNkZWZpbmUgRW5kaWFu
VTMyX050b0wodmFsdWUpICh2YWx1ZSkKI2RlZmluZSBFbmRpYW5TNjRfTHRvTih2YWx1ZSkgKHZh
bHVlKQojZGVmaW5lIEVuZGlhblM2NF9OdG9MKHZhbHVlKSAodmFsdWUpCiNkZWZpbmUgRW5kaWFu
VTY0X0x0b04odmFsdWUpICh2YWx1ZSkKI2RlZmluZSBFbmRpYW5VNjRfTnRvTCh2YWx1ZSkgKHZh
bHVlKQojIDIwOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRW5kaWFuLmgiIDMK
I2RlZmluZSBFbmRpYW5TMTZfQnRvTih2YWx1ZSkgRW5kaWFuUzE2X0J0b0wodmFsdWUpCiNkZWZp
bmUgRW5kaWFuUzE2X050b0IodmFsdWUpIEVuZGlhblMxNl9MdG9CKHZhbHVlKQojZGVmaW5lIEVu
ZGlhblUxNl9CdG9OKHZhbHVlKSBFbmRpYW5VMTZfQnRvTCh2YWx1ZSkKI2RlZmluZSBFbmRpYW5V
MTZfTnRvQih2YWx1ZSkgRW5kaWFuVTE2X0x0b0IodmFsdWUpCiNkZWZpbmUgRW5kaWFuUzMyX0J0
b04odmFsdWUpIEVuZGlhblMzMl9CdG9MKHZhbHVlKQojZGVmaW5lIEVuZGlhblMzMl9OdG9CKHZh
bHVlKSBFbmRpYW5TMzJfTHRvQih2YWx1ZSkKI2RlZmluZSBFbmRpYW5VMzJfQnRvTih2YWx1ZSkg
RW5kaWFuVTMyX0J0b0wodmFsdWUpCiNkZWZpbmUgRW5kaWFuVTMyX050b0IodmFsdWUpIEVuZGlh
blUzMl9MdG9CKHZhbHVlKQojZGVmaW5lIEVuZGlhblM2NF9CdG9OKHZhbHVlKSBFbmRpYW5TNjRf
QnRvTCh2YWx1ZSkKI2RlZmluZSBFbmRpYW5TNjRfTnRvQih2YWx1ZSkgRW5kaWFuUzY0X0x0b0Io
dmFsdWUpCiNkZWZpbmUgRW5kaWFuVTY0X0J0b04odmFsdWUpIEVuZGlhblU2NF9CdG9MKHZhbHVl
KQojZGVmaW5lIEVuZGlhblU2NF9OdG9CKHZhbHVlKSBFbmRpYW5VNjRfTHRvQih2YWx1ZSkKCgoK
CgoKCiNkZWZpbmUgRW5kaWFuUzE2X0x0b0IodmFsdWUpICgoU0ludDE2KUVuZGlhbjE2X1N3YXAo
dmFsdWUpKQojZGVmaW5lIEVuZGlhblMxNl9CdG9MKHZhbHVlKSAoKFNJbnQxNilFbmRpYW4xNl9T
d2FwKHZhbHVlKSkKI2RlZmluZSBFbmRpYW5VMTZfTHRvQih2YWx1ZSkgKChVSW50MTYpRW5kaWFu
MTZfU3dhcCh2YWx1ZSkpCiNkZWZpbmUgRW5kaWFuVTE2X0J0b0wodmFsdWUpICgoVUludDE2KUVu
ZGlhbjE2X1N3YXAodmFsdWUpKQojZGVmaW5lIEVuZGlhblMzMl9MdG9CKHZhbHVlKSAoKFNJbnQz
MilFbmRpYW4zMl9Td2FwKHZhbHVlKSkKI2RlZmluZSBFbmRpYW5TMzJfQnRvTCh2YWx1ZSkgKChT
SW50MzIpRW5kaWFuMzJfU3dhcCh2YWx1ZSkpCiNkZWZpbmUgRW5kaWFuVTMyX0x0b0IodmFsdWUp
ICgoVUludDMyKUVuZGlhbjMyX1N3YXAodmFsdWUpKQojZGVmaW5lIEVuZGlhblUzMl9CdG9MKHZh
bHVlKSAoKFVJbnQzMilFbmRpYW4zMl9Td2FwKHZhbHVlKSkKI2RlZmluZSBFbmRpYW5TNjRfTHRv
Qih2YWx1ZSkgKChTSW50NjQpRW5kaWFuNjRfU3dhcCgoVUludDY0KXZhbHVlKSkKI2RlZmluZSBF
bmRpYW5TNjRfQnRvTCh2YWx1ZSkgKChTSW50NjQpRW5kaWFuNjRfU3dhcCgoVUludDY0KXZhbHVl
KSkKI2RlZmluZSBFbmRpYW5VNjRfTHRvQih2YWx1ZSkgKChVSW50NjQpRW5kaWFuNjRfU3dhcCh2
YWx1ZSkpCiNkZWZpbmUgRW5kaWFuVTY0X0J0b0wodmFsdWUpICgoVUludDY0KUVuZGlhbjY0X1N3
YXAodmFsdWUpKQojIDI1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRW5kaWFu
LmgiIDMKc3RydWN0IEJpZ0VuZGlhblVJbnQzMiB7CiAgVUludDMyIGJpZ0VuZGlhblZhbHVlOwp9
Owp0eXBlZGVmIHN0cnVjdCBCaWdFbmRpYW5VSW50MzIgQmlnRW5kaWFuVUludDMyOwpzdHJ1Y3Qg
QmlnRW5kaWFuTG9uZyB7CiAgbG9uZyBiaWdFbmRpYW5WYWx1ZTsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
QmlnRW5kaWFuTG9uZyBCaWdFbmRpYW5Mb25nOwpzdHJ1Y3QgQmlnRW5kaWFuVW5zaWduZWRMb25n
IHsKICB1bnNpZ25lZCBsb25nIGJpZ0VuZGlhblZhbHVlOwp9Owp0eXBlZGVmIHN0cnVjdCBCaWdF
bmRpYW5VbnNpZ25lZExvbmcgQmlnRW5kaWFuVW5zaWduZWRMb25nOwpzdHJ1Y3QgQmlnRW5kaWFu
U2hvcnQgewogIHNob3J0IGJpZ0VuZGlhblZhbHVlOwp9Owp0eXBlZGVmIHN0cnVjdCBCaWdFbmRp
YW5TaG9ydCBCaWdFbmRpYW5TaG9ydDsKc3RydWN0IEJpZ0VuZGlhblVuc2lnbmVkU2hvcnQgewog
IHVuc2lnbmVkIHNob3J0IGJpZ0VuZGlhblZhbHVlOwp9Owp0eXBlZGVmIHN0cnVjdCBCaWdFbmRp
YW5VbnNpZ25lZFNob3J0IEJpZ0VuZGlhblVuc2lnbmVkU2hvcnQ7CnN0cnVjdCBCaWdFbmRpYW5G
aXhlZCB7CiAgRml4ZWQgYmlnRW5kaWFuVmFsdWU7Cn07CnR5cGVkZWYgc3RydWN0IEJpZ0VuZGlh
bkZpeGVkIEJpZ0VuZGlhbkZpeGVkOwpzdHJ1Y3QgQmlnRW5kaWFuVW5zaWduZWRGaXhlZCB7CiAg
VW5zaWduZWRGaXhlZCBiaWdFbmRpYW5WYWx1ZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQmlnRW5kaWFu
VW5zaWduZWRGaXhlZCBCaWdFbmRpYW5VbnNpZ25lZEZpeGVkOwpzdHJ1Y3QgQmlnRW5kaWFuT1NU
eXBlIHsKICBPU1R5cGUgYmlnRW5kaWFuVmFsdWU7Cn07CnR5cGVkZWYgc3RydWN0IEJpZ0VuZGlh
bk9TVHlwZSBCaWdFbmRpYW5PU1R5cGU7CiMgMzEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9FbmRpYW4uaCIgMwplbnVtIHsKICBrQ29yZUVuZGlhblJlc291cmNlTWFuYWdlckRv
bWFpbiA9ICdyc3JjJywKICBrQ29yZUVuZGlhbkFwcGxlRXZlbnRNYW5hZ2VyRG9tYWluID0gJ2Fl
dnQnCn07CiMgMzU2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9FbmRpYW4uaCIg
Mwp0eXBlZGVmIE9TU3RhdHVzICggKiBDb3JlRW5kaWFuRmxpcFByb2MpKE9TVHlwZSBkYXRhRG9t
YWluLCBPU1R5cGUgZGF0YVR5cGUsIFNJbnQxNiBpZCwgdm9pZCAqZGF0YVB0ciwgQnl0ZUNvdW50
IGRhdGFTaXplLCBCb29sZWFuIGN1cnJlbnRseU5hdGl2ZSwgdm9pZCAqcmVmY29uKTsKIyAzOTMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0VuZGlhbi5oIiAzCmV4dGVybiBPU1N0
YXR1cwpDb3JlRW5kaWFuSW5zdGFsbEZsaXBwZXIoCiAgT1NUeXBlIGRhdGFEb21haW4sCiAgT1NU
eXBlIGRhdGFUeXBlLAogIENvcmVFbmRpYW5GbGlwUHJvYyBwcm9jLAogIHZvaWQgKiByZWZjb24p
IDsKIyA0MzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0VuZGlhbi5oIiAzCmV4
dGVybiBPU1N0YXR1cwpDb3JlRW5kaWFuR2V0RmxpcHBlcigKICBPU1R5cGUgZGF0YURvbWFpbiwK
ICBPU1R5cGUgZGF0YVR5cGUsCiAgQ29yZUVuZGlhbkZsaXBQcm9jICogcHJvYywKICB2b2lkICoq
IHJlZmNvbikgOwojIDQ4MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRW5kaWFu
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkNvcmVFbmRpYW5GbGlwRGF0YSgKICBPU1R5cGUgZGF0YURv
bWFpbiwKICBPU1R5cGUgZGF0YVR5cGUsCiAgU0ludDE2IGlkLAogIHZvaWQgKiBkYXRhLAogIEJ5
dGVDb3VudCBkYXRhTGVuLAogIEJvb2xlYW4gY3VycmVudGx5TmF0aXZlKSA7CgoKCgoKI3ByYWdt
YSBwYWNrKHBvcCkKCgp9CiMgNTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0Nh
cmJvbkNvcmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
R2VzdGFsdC5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvR2Vz
dGFsdC5oIiAzCiNkZWZpbmUgX19HRVNUQUxUX18gCiMgMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0dlc3RhbHQuaCIgMwpleHRlcm4gIkMiIHsKCgoKCnR5cGVkZWYgT1NFcnIg
KCAqIFNlbGVjdG9yRnVuY3Rpb25Qcm9jUHRyKShPU1R5cGUgc2VsZWN0b3IsIFNJbnQzMiAqcmVz
cG9uc2UpOwp0eXBlZGVmIFNlbGVjdG9yRnVuY3Rpb25Qcm9jUHRyIFNlbGVjdG9yRnVuY3Rpb25V
UFA7CiMgMTI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9HZXN0YWx0LmgiIDMK
ZXh0ZXJuIE9TRXJyCkdlc3RhbHQoCiAgT1NUeXBlIHNlbGVjdG9yLAogIFNJbnQzMiAqIHJlc3Bv
bnNlKSA7CiMgMjc5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9HZXN0YWx0Lmgi
IDMKZXh0ZXJuIE9TRXJyCk5ld0dlc3RhbHRWYWx1ZSgKICBPU1R5cGUgc2VsZWN0b3IsCiAgU0lu
dDMyIG5ld1ZhbHVlKSA7CiMgMzE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9H
ZXN0YWx0LmgiIDMKZXh0ZXJuIE9TRXJyClJlcGxhY2VHZXN0YWx0VmFsdWUoCiAgT1NUeXBlIHNl
bGVjdG9yLAogIFNJbnQzMiByZXBsYWNlbWVudFZhbHVlKSA7CiMgMzU4ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9HZXN0YWx0LmgiIDMKZXh0ZXJuIE9TRXJyClNldEdlc3RhbHRW
YWx1ZSgKICBPU1R5cGUgc2VsZWN0b3IsCiAgU0ludDMyIG5ld1ZhbHVlKSA7CiMgMzkzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9HZXN0YWx0LmgiIDMKZXh0ZXJuIE9TRXJyCkRl
bGV0ZUdlc3RhbHRWYWx1ZShPU1R5cGUgc2VsZWN0b3IpIDsKIyA0MDYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0dlc3RhbHQuaCIgMwpleHRlcm4gU2VsZWN0b3JGdW5jdGlvblVQ
UApOZXdTZWxlY3RvckZ1bmN0aW9uVVBQKFNlbGVjdG9yRnVuY3Rpb25Qcm9jUHRyIHVzZXJSb3V0
aW5lKSA7CiMgNDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9HZXN0YWx0Lmgi
IDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVNlbGVjdG9yRnVuY3Rpb25VUFAoU2VsZWN0b3JGdW5jdGlv
blVQUCB1c2VyVVBQKSA7CiMgNDI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9H
ZXN0YWx0LmgiIDMKZXh0ZXJuIE9TRXJyCkludm9rZVNlbGVjdG9yRnVuY3Rpb25VUFAoCiAgT1NU
eXBlIHNlbGVjdG9yLAogIFNJbnQzMiAqIHJlc3BvbnNlLAogIFNlbGVjdG9yRnVuY3Rpb25VUFAg
dXNlclVQUCkgOwoKCgogICAgaW5saW5lIFNlbGVjdG9yRnVuY3Rpb25VUFAgTmV3U2VsZWN0b3JG
dW5jdGlvblVQUChTZWxlY3RvckZ1bmN0aW9uUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4g
dXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VTZWxlY3RvckZ1bmN0aW9uVVBQ
KFNlbGVjdG9yRnVuY3Rpb25VUFApIHsgfQogICAgaW5saW5lIE9TRXJyIEludm9rZVNlbGVjdG9y
RnVuY3Rpb25VUFAoT1NUeXBlIHNlbGVjdG9yLCBTSW50MzIgKiByZXNwb25zZSwgU2VsZWN0b3JG
dW5jdGlvblVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHNlbGVjdG9yLCByZXNwb25z
ZSk7IH0KIyA0NDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0dlc3RhbHQuaCIg
MwplbnVtIHsKICBnZXN0YWx0QWRkcmVzc2luZ01vZGVBdHRyID0gJ2FkZHInLAogIGdlc3RhbHQz
MkJpdEFkZHJlc3NpbmcgPSAwLAogIGdlc3RhbHQzMkJpdFN5c1pvbmUgPSAxLAogIGdlc3RhbHQz
MkJpdENhcGFibGUgPSAyCn07CgplbnVtIHsKICBnZXN0YWx0QUZQQ2xpZW50ID0gJ2FmcHMnLAog
IGdlc3RhbHRBRlBDbGllbnRWZXJzaW9uTWFzayA9IDB4MDAwMEZGRkYsCgogIGdlc3RhbHRBRlBD
bGllbnQzXzUgPSAweDAwMDEsCiAgZ2VzdGFsdEFGUENsaWVudDNfNiA9IDB4MDAwMiwKICBnZXN0
YWx0QUZQQ2xpZW50M182XzEgPSAweDAwMDMsCiAgZ2VzdGFsdEFGUENsaWVudDNfNl8yID0gMHgw
MDA0LAogIGdlc3RhbHRBRlBDbGllbnQzXzZfMyA9IDB4MDAwNSwKICBnZXN0YWx0QUZQQ2xpZW50
M183ID0gMHgwMDA2LAogIGdlc3RhbHRBRlBDbGllbnQzXzdfMiA9IDB4MDAwNywKICBnZXN0YWx0
QUZQQ2xpZW50M184ID0gMHgwMDA4LAogIGdlc3RhbHRBRlBDbGllbnQzXzhfMSA9IDB4MDAwOSwK
ICBnZXN0YWx0QUZQQ2xpZW50M184XzMgPSAweDAwMEEsCiAgZ2VzdGFsdEFGUENsaWVudDNfOF80
ID0gMHgwMDBCLAogIGdlc3RhbHRBRlBDbGllbnRBdHRyaWJ1dGVNYXNrID0gKGludCkweEZGRkYw
MDAwLAoKICBnZXN0YWx0QUZQQ2xpZW50Q2ZnUnNyYyA9IDE2LAogIGdlc3RhbHRBRlBDbGllbnRT
dXBwb3J0c0lQID0gMjksCiAgZ2VzdGFsdEFGUENsaWVudFZNVUkgPSAzMCwKICBnZXN0YWx0QUZQ
Q2xpZW50TXVsdGlSZXEgPSAzMQp9OwoKCmVudW0gewogIGdlc3RhbHRBbGlhc01nckF0dHIgPSAn
YWxpcycsCiAgZ2VzdGFsdEFsaWFzTWdyUHJlc2VudCA9IDAsCiAgZ2VzdGFsdEFsaWFzTWdyU3Vw
cG9ydHNSZW1vdGVBcHBsZXRhbGsgPSAxLAogIGdlc3RhbHRBbGlhc01nclN1cHBvcnRzQU9DRUtl
eWNoYWluID0gMiwKICBnZXN0YWx0QWxpYXNNZ3JSZXNvbHZlQWxpYXNGaWxlV2l0aE1vdW50T3B0
aW9ucyA9IDMsCiAgZ2VzdGFsdEFsaWFzTWdyRm9sbG93c0FsaWFzZXNXaGVuUmVzb2x2aW5nID0g
NCwKICBnZXN0YWx0QWxpYXNNZ3JTdXBwb3J0c0V4dGVuZGVkQ2FsbHMgPSA1LAogIGdlc3RhbHRB
bGlhc01nclN1cHBvcnRzRlNDYWxscyA9IDYsCiAgZ2VzdGFsdEFsaWFzTWdyUHJlZmVyc1BhdGgg
PSA3LAogIGdlc3RhbHRBbGlhc01nclJlcXVpcmVzQWNjZXNzb3JzID0gOAp9OwoKCmVudW0gewog
IGdlc3RhbHRBcHBlYXJhbmNlQXR0ciA9ICdhcHByJywKICBnZXN0YWx0QXBwZWFyYW5jZUV4aXN0
cyA9IDAsCiAgZ2VzdGFsdEFwcGVhcmFuY2VDb21wYXRNb2RlID0gMQp9OwoKCgoKCgoKZW51bSB7
CiAgZ2VzdGFsdEFwcGVhcmFuY2VWZXJzaW9uID0gJ2FwdnInCn07CgplbnVtIHsKICBnZXN0YWx0
QXJiaXRvckF0dHIgPSAnYXJiICcsCiAgZ2VzdGFsdFNlcmlhbEFyYml0cmF0aW9uRXhpc3RzID0g
MAp9OwoKZW51bSB7CiAgZ2VzdGFsdEFwcGxlU2NyaXB0VmVyc2lvbiA9ICdhc2N2Jwp9OwoKZW51
bSB7CiAgZ2VzdGFsdEFwcGxlU2NyaXB0QXR0ciA9ICdhc2NyJywKICBnZXN0YWx0QXBwbGVTY3Jp
cHRQcmVzZW50ID0gMCwKICBnZXN0YWx0QXBwbGVTY3JpcHRQb3dlclBDU3VwcG9ydCA9IDEKfTsK
CmVudW0gewogIGdlc3RhbHRBVEFBdHRyID0gJ2F0YSAnLAogIGdlc3RhbHRBVEFQcmVzZW50ID0g
MAp9OwoKZW51bSB7CiAgZ2VzdGFsdEFUYWxrVmVyc2lvbiA9ICdhdGt2Jwp9OwoKZW51bSB7CiAg
Z2VzdGFsdEFwcGxlVGFsa1ZlcnNpb24gPSAnYXRsaycKfTsKIyA1NTkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0dlc3RhbHQuaCIgMwplbnVtIHsKICBnZXN0YWx0QVVYVmVyc2lv
biA9ICdhL3V4Jwp9OwoKZW51bSB7CiAgZ2VzdGFsdE1hY09TQ29tcGF0aWJpbGl0eUJveEF0dHIg
PSAnYmJveCcsCiAgZ2VzdGFsdE1hY09TQ29tcGF0aWJpbGl0eUJveFByZXNlbnQgPSAwLAogIGdl
c3RhbHRNYWNPU0NvbXBhdGliaWxpdHlCb3hIYXNTZXJpYWwgPSAxLAogIGdlc3RhbHRNYWNPU0Nv
bXBhdGliaWxpdHlCb3hsZXNzID0gMgp9OwoKZW51bSB7CiAgZ2VzdGFsdEJ1c0Nsa1NwZWVkID0g
J2JjbGsnCn07CgplbnVtIHsKICBnZXN0YWx0QnVzQ2xrU3BlZWRNSHogPSAnYmNsbScKfTsKCmVu
dW0gewogIGdlc3RhbHRDbG9zZVZpZXdBdHRyID0gJ0JTRGEnLAogIGdlc3RhbHRDbG9zZVZpZXdF
bmFibGVkID0gMCwKICBnZXN0YWx0Q2xvc2VWaWV3RGlzcGxheU1nckZyaWVuZGx5ID0gMQp9OwoK
ZW51bSB7CiAgZ2VzdGFsdENhcmJvblZlcnNpb24gPSAnY2JvbicKfTsKCmVudW0gewogIGdlc3Rh
bHRDRk1BdHRyID0gJ2NmcmcnLAogIGdlc3RhbHRDRk1QcmVzZW50ID0gMCwKICBnZXN0YWx0Q0ZN
UHJlc2VudE1hc2sgPSAweDAwMDEsCiAgZ2VzdGFsdENGTTk5UHJlc2VudCA9IDIsCiAgZ2VzdGFs
dENGTTk5UHJlc2VudE1hc2sgPSAweDAwMDQKfTsKCmVudW0gewogIGdlc3RhbHRQcm9jZXNzb3JD
YWNoZUxpbmVTaXplID0gJ2NzaXonCn07CgplbnVtIHsKICBnZXN0YWx0Q29sbGVjdGlvbk1nclZl
cnNpb24gPSAnY2x0bicKfTsKCmVudW0gewogIGdlc3RhbHRDb2xvck1hdGNoaW5nQXR0ciA9ICdj
bXRhJywKICBnZXN0YWx0SGlnaExldmVsTWF0Y2hpbmcgPSAwLAogIGdlc3RhbHRDb2xvck1hdGNo
aW5nTGliTG9hZGVkID0gMQp9OwoKZW51bSB7CiAgZ2VzdGFsdENvbG9yTWF0Y2hpbmdWZXJzaW9u
ID0gJ2NtdGMnLAogIGdlc3RhbHRDb2xvclN5bmMxMCA9IDB4MDEwMCwKICBnZXN0YWx0Q29sb3JT
eW5jMTEgPSAweDAxMTAsCiAgZ2VzdGFsdENvbG9yU3luYzEwNCA9IDB4MDEwNCwKICBnZXN0YWx0
Q29sb3JTeW5jMTA1ID0gMHgwMTA1LAogIGdlc3RhbHRDb2xvclN5bmMyMCA9IDB4MDIwMCwKICBn
ZXN0YWx0Q29sb3JTeW5jMjEgPSAweDAyMTAsCiAgZ2VzdGFsdENvbG9yU3luYzIxMSA9IDB4MDIx
MSwKICBnZXN0YWx0Q29sb3JTeW5jMjEyID0gMHgwMjEyLAogIGdlc3RhbHRDb2xvclN5bmMyMTMg
PSAweDAyMTMsCiAgZ2VzdGFsdENvbG9yU3luYzI1ID0gMHgwMjUwLAogIGdlc3RhbHRDb2xvclN5
bmMyNiA9IDB4MDI2MCwKICBnZXN0YWx0Q29sb3JTeW5jMjYxID0gMHgwMjYxLAogIGdlc3RhbHRD
b2xvclN5bmMzMCA9IDB4MDMwMAp9OwoKZW51bSB7CiAgZ2VzdGFsdENvbnRyb2xNZ3JWZXJzaW9u
ID0gJ2NtdnInCn07CgplbnVtIHsKICBnZXN0YWx0Q29udHJvbE1nckF0dHIgPSAnY250bCcsCiAg
Z2VzdGFsdENvbnRyb2xNZ3JQcmVzZW50ID0gKDFMIDw8IDApLAoKCiAgZ2VzdGFsdENvbnRyb2xN
Z3JQcmVzZW50Qml0ID0gMCwKICBnZXN0YWx0Q29udHJvbE1zZ1ByZXNlbnRNYXNrID0gKDFMIDw8
IGdlc3RhbHRDb250cm9sTWdyUHJlc2VudEJpdCkKfTsKCmVudW0gewogIGdlc3RhbHRDb25uTWdy
QXR0ciA9ICdjb25uJywKICBnZXN0YWx0Q29ubk1nclByZXNlbnQgPSAwLAogIGdlc3RhbHRDb25u
TWdyQ01TZWFyY2hGaXggPSAxLAogIGdlc3RhbHRDb25uTWdyRXJyb3JTdHJpbmcgPSAyLAogIGdl
c3RhbHRDb25uTWdyTXVsdGlBc3luY0lPID0gMwp9OwoKZW51bSB7CiAgZ2VzdGFsdENvbG9yUGlj
a2VyVmVyc2lvbiA9ICdjcGtyJywKICBnZXN0YWx0Q29sb3JQaWNrZXIgPSAnY3BrcicKfTsKCmVu
dW0gewogIGdlc3RhbHRDb21wb25lbnRNZ3IgPSAnY3BudCcsCiAgZ2VzdGFsdENvbXBvbmVudFBs
YXRmb3JtID0gJ2NvcGwnCn07CiMgNjg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9HZXN0YWx0LmgiIDMKZW51bSB7CiAgZ2VzdGFsdE5hdGl2ZUNQVXR5cGUgPSAnY3B1dCcsCiAg
Z2VzdGFsdE5hdGl2ZUNQVWZhbWlseSA9ICdjcHVmJywKICBnZXN0YWx0Q1BVNjgwMDAgPSAwLAog
IGdlc3RhbHRDUFU2ODAxMCA9IDEsCiAgZ2VzdGFsdENQVTY4MDIwID0gMiwKICBnZXN0YWx0Q1BV
NjgwMzAgPSAzLAogIGdlc3RhbHRDUFU2ODA0MCA9IDQsCiAgZ2VzdGFsdENQVTYwMSA9IDB4MDEw
MSwKICBnZXN0YWx0Q1BVNjAzID0gMHgwMTAzLAogIGdlc3RhbHRDUFU2MDQgPSAweDAxMDQsCiAg
Z2VzdGFsdENQVTYwM2UgPSAweDAxMDYsCiAgZ2VzdGFsdENQVTYwM2V2ID0gMHgwMTA3LAogIGdl
c3RhbHRDUFU3NTAgPSAweDAxMDgsCiAgZ2VzdGFsdENQVTYwNGUgPSAweDAxMDksCiAgZ2VzdGFs
dENQVTYwNGV2ID0gMHgwMTBBLAogIGdlc3RhbHRDUFVHNCA9IDB4MDEwQywKICBnZXN0YWx0Q1BV
RzQ3NDUwID0gMHgwMTEwCn07CgplbnVtIHsKICBnZXN0YWx0Q1BVQXBvbGxvID0gMHgwMTExLAog
IGdlc3RhbHRDUFVHNDc0NDcgPSAweDAxMTIsCiAgZ2VzdGFsdENQVTc1MEZYID0gMHgwMTIwLAog
IGdlc3RhbHRDUFU5NzAgPSAweDAxMzksCiAgZ2VzdGFsdENQVTk3MEZYID0gMHgwMTNDLAogIGdl
c3RhbHRDUFU5NzBNUCA9IDB4MDE0NAp9OwoKZW51bSB7CgogIGdlc3RhbHRDUFU0ODYgPSAnaTQ4
NicsCiAgZ2VzdGFsdENQVVBlbnRpdW0gPSAnaTU4NicsCiAgZ2VzdGFsdENQVVBlbnRpdW1Qcm8g
PSAnaTVwcicsCiAgZ2VzdGFsdENQVVBlbnRpdW1JSSA9ICdpNWlpJywKICBnZXN0YWx0Q1BVWDg2
ID0gJ2l4eHgnLAogIGdlc3RhbHRDUFVQZW50aXVtNCA9ICdpNWl2Jwp9OwoKZW51bSB7CiAgZ2Vz
dGFsdENSTUF0dHIgPSAnY3JtICcsCiAgZ2VzdGFsdENSTVByZXNlbnQgPSAwLAogIGdlc3RhbHRD
Uk1QZXJzaXN0ZW50Rml4ID0gMSwKICBnZXN0YWx0Q1JNVG9vbFJzcmNDYWxscyA9IDIKfTsKCmVu
dW0gewogIGdlc3RhbHRDb250cm9sU3RyaXBWZXJzaW9uID0gJ2NzdnInCn07CgplbnVtIHsKICBn
ZXN0YWx0Q291bnRPZkNQVXMgPSAnY3B1cycKfTsKCmVudW0gewogIGdlc3RhbHRDVEJWZXJzaW9u
ID0gJ2N0YnYnCn07CgplbnVtIHsKICBnZXN0YWx0REJBY2Nlc3NNZ3JBdHRyID0gJ2RiYWMnLAog
IGdlc3RhbHREQkFjY2Vzc01nclByZXNlbnQgPSAwCn07CgplbnVtIHsKICBnZXN0YWx0RGlza0Nh
Y2hlU2l6ZSA9ICdkY3N6Jwp9OwoKZW51bSB7CiAgZ2VzdGFsdFNEUEZpbmRWZXJzaW9uID0gJ2Rm
bmQnCn07CgplbnVtIHsKICBnZXN0YWx0RGljdGlvbmFyeU1nckF0dHIgPSAnZGljdCcsCiAgZ2Vz
dGFsdERpY3Rpb25hcnlNZ3JQcmVzZW50ID0gMAp9OwoKZW51bSB7CiAgZ2VzdGFsdERJVExFeHRB
dHRyID0gJ2RpdGwnLAogIGdlc3RhbHRESVRMRXh0UHJlc2VudCA9IDAsCiAgZ2VzdGFsdERJVExF
eHRTdXBwb3J0c0ljdGIgPSAxCn07CgplbnVtIHsKICBnZXN0YWx0RGlhbG9nTWdyQXR0ciA9ICdk
bG9nJywKICBnZXN0YWx0RGlhbG9nTWdyUHJlc2VudCA9ICgxTCA8PCAwKSwKCgogIGdlc3RhbHRE
aWFsb2dNZ3JQcmVzZW50Qml0ID0gMCwKICBnZXN0YWx0RGlhbG9nTWdySGFzQXF1YUFsZXJ0Qml0
ID0gMiwKICBnZXN0YWx0RGlhbG9nTWdyUHJlc2VudE1hc2sgPSAoMUwgPDwgZ2VzdGFsdERpYWxv
Z01nclByZXNlbnRCaXQpLAogIGdlc3RhbHREaWFsb2dNZ3JIYXNBcXVhQWxlcnRNYXNrID0gKDFM
IDw8IGdlc3RhbHREaWFsb2dNZ3JIYXNBcXVhQWxlcnRCaXQpLAogIGdlc3RhbHREaWFsb2dNc2dQ
cmVzZW50TWFzayA9IGdlc3RhbHREaWFsb2dNZ3JQcmVzZW50TWFzawp9OwoKZW51bSB7CiAgZ2Vz
dGFsdERlc2t0b3BQaWN0dXJlc0F0dHIgPSAnZGtweCcsCiAgZ2VzdGFsdERlc2t0b3BQaWN0dXJl
c0luc3RhbGxlZCA9IDAsCiAgZ2VzdGFsdERlc2t0b3BQaWN0dXJlc0Rpc3BsYXllZCA9IDEKfTsK
CmVudW0gewogIGdlc3RhbHREaXNwbGF5TWdyVmVycyA9ICdkcGx2Jwp9OwoKZW51bSB7CiAgZ2Vz
dGFsdERpc3BsYXlNZ3JBdHRyID0gJ2RwbHknLAogIGdlc3RhbHREaXNwbGF5TWdyUHJlc2VudCA9
IDAsCiAgZ2VzdGFsdERpc3BsYXlNZ3JDYW5Td2l0Y2hNaXJyb3JlZCA9IDIsCiAgZ2VzdGFsdERp
c3BsYXlNZ3JTZXREZXB0aE5vdGlmaWVzID0gMywKICBnZXN0YWx0RGlzcGxheU1nckNhbkNvbmZp
cm0gPSA0LAogIGdlc3RhbHREaXNwbGF5TWdyQ29sb3JTeW5jQXdhcmUgPSA1LAogIGdlc3RhbHRE
aXNwbGF5TWdyR2VuZXJhdGVzUHJvZmlsZXMgPSA2LAogIGdlc3RhbHREaXNwbGF5TWdyU2xlZXBO
b3RpZmllcyA9IDcKfTsKCmVudW0gewogIGdlc3RhbHREcmFnTWdyQXR0ciA9ICdkcmFnJywKICBn
ZXN0YWx0RHJhZ01nclByZXNlbnQgPSAwLAogIGdlc3RhbHREcmFnTWdyRmxvYXRpbmdXaW5kID0g
MSwKICBnZXN0YWx0UFBDRHJhZ0xpYlByZXNlbnQgPSAyLAogIGdlc3RhbHREcmFnTWdySGFzSW1h
Z2VTdXBwb3J0ID0gMywKICBnZXN0YWx0Q2FuU3RhcnREcmFnSW5GbG9hdFdpbmRvdyA9IDQsCiAg
Z2VzdGFsdFNldERyYWdJbWFnZVVwZGF0ZXMgPSA1Cn07CgplbnVtIHsKICBnZXN0YWx0RHJhd1Nw
cm9ja2V0VmVyc2lvbiA9ICdkc3B2Jwp9OwoKZW51bSB7CiAgZ2VzdGFsdERpZ2l0YWxTaWduYXR1
cmVWZXJzaW9uID0gJ2RzaWcnCn07CgoKCgoKZW51bSB7CiAgZ2VzdGFsdERUUEZlYXR1cmVzID0g
J2R0cGYnLAogIGtEVFBUaGlyZFBhcnR5U3VwcG9ydGVkID0gMHgwMDAwMDAwNAp9OwoKCgoKCgpl
bnVtIHsKICBnZXN0YWx0RFRQSW5mbyA9ICdkdHB4Jwp9OwoKZW51bSB7CiAgZ2VzdGFsdEVhc3lB
Y2Nlc3NBdHRyID0gJ2Vhc3knLAogIGdlc3RhbHRFYXN5QWNjZXNzT2ZmID0gMCwKICBnZXN0YWx0
RWFzeUFjY2Vzc09uID0gMSwKICBnZXN0YWx0RWFzeUFjY2Vzc1N0aWNreSA9IDIsCiAgZ2VzdGFs
dEVhc3lBY2Nlc3NMb2NrZWQgPSAzCn07CgplbnVtIHsKICBnZXN0YWx0RWRpdGlvbk1nckF0dHIg
PSAnZWR0bicsCiAgZ2VzdGFsdEVkaXRpb25NZ3JQcmVzZW50ID0gMCwKICBnZXN0YWx0RWRpdGlv
bk1nclRyYW5zbGF0aW9uQXdhcmUgPSAxCn07CgplbnVtIHsKICBnZXN0YWx0QXBwbGVFdmVudHNB
dHRyID0gJ2V2bnQnLAogIGdlc3RhbHRBcHBsZUV2ZW50c1ByZXNlbnQgPSAwLAogIGdlc3RhbHRT
Y3JpcHRpbmdTdXBwb3J0ID0gMSwKICBnZXN0YWx0T1NMSW5TeXN0ZW0gPSAyLAogIGdlc3RhbHRT
dXBwb3J0c0FwcGxpY2F0aW9uVVJMID0gNAp9OwoKZW51bSB7CiAgZ2VzdGFsdEV4dGVuc2lvblRh
YmxlVmVyc2lvbiA9ICdldGJsJwp9OwoKCmVudW0gewogIGdlc3RhbHRGQkNJbmRleGluZ1N0YXRl
ID0gJ2ZiY2knLAogIGdlc3RhbHRGQkNpbmRleGluZ1NhZmUgPSAwLAogIGdlc3RhbHRGQkNpbmRl
eGluZ0NyaXRpY2FsID0gMQp9OwoKZW51bSB7CiAgZ2VzdGFsdEZCQ1ZlcnNpb24gPSAnZmJjdics
CiAgZ2VzdGFsdEZCQ0N1cnJlbnRWZXJzaW9uID0gMHgwMDExLAogIGdlc3RhbHRPU1hGQkNDdXJy
ZW50VmVyc2lvbiA9IDB4MDEwMAp9OwoKCmVudW0gewogIGdlc3RhbHRGaWxlTWFwcGluZ0F0dHIg
PSAnZmxtcCcsCiAgZ2VzdGFsdEZpbGVNYXBwaW5nUHJlc2VudCA9IDAsCiAgZ2VzdGFsdEZpbGVN
YXBwaW5nTXVsdGlwbGVGaWxlc0ZpeCA9IDEKfTsKCmVudW0gewogIGdlc3RhbHRGbG9wcHlBdHRy
ID0gJ2ZscHknLAogIGdlc3RhbHRGbG9wcHlJc01GTU9ubHkgPSAwLAogIGdlc3RhbHRGbG9wcHlJ
c01hbnVhbEVqZWN0ID0gMSwKICBnZXN0YWx0RmxvcHB5VXNlc0Rpc2tJblBsYWNlID0gMgp9OwoK
ZW51bSB7CiAgZ2VzdGFsdEZpbmRlckF0dHIgPSAnZm5kcicsCiAgZ2VzdGFsdEZpbmRlckRyb3BF
dmVudCA9IDAsCiAgZ2VzdGFsdEZpbmRlck1hZ2ljUGxhY2VtZW50ID0gMSwKICBnZXN0YWx0Rmlu
ZGVyQ2FsbHNBRVByb2Nlc3MgPSAyLAogIGdlc3RhbHRPU0xDb21wbGlhbnRGaW5kZXIgPSAzLAog
IGdlc3RhbHRGaW5kZXJTdXBwb3J0czRHQlZvbHVtZXMgPSA0LAogIGdlc3RhbHRGaW5kZXJIYXND
bGlwcGluZ3MgPSA2LAogIGdlc3RhbHRGaW5kZXJGdWxsRHJhZ01hbmFnZXJTdXBwb3J0ID0gNywK
ICBnZXN0YWx0RmluZGVyRmxvcHB5Um9vdENvbW1lbnRzID0gOCwKICBnZXN0YWx0RmluZGVyTGFy
Z2VBbmROb3RTYXZlZEZsYXZvcnNPSyA9IDksCiAgZ2VzdGFsdEZpbmRlclVzZXNFeHRlbnNpYmxl
Rm9sZGVyTWFuYWdlciA9IDEwLAogIGdlc3RhbHRGaW5kZXJVbmRlcnN0YW5kc1JlZGlyZWN0ZWRE
ZXNrdG9wRm9sZGVyID0gMTEKfTsKCmVudW0gewogIGdlc3RhbHRGaW5kRm9sZGVyQXR0ciA9ICdm
b2xkJywKICBnZXN0YWx0RmluZEZvbGRlclByZXNlbnQgPSAwLAogIGdlc3RhbHRGb2xkZXJEZXNj
U3VwcG9ydCA9IDEsCiAgZ2VzdGFsdEZvbGRlck1nckZvbGxvd3NBbGlhc2VzV2hlblJlc29sdmlu
ZyA9IDIsCiAgZ2VzdGFsdEZvbGRlck1nclN1cHBvcnRzRXh0ZW5kZWRDYWxscyA9IDMsCiAgZ2Vz
dGFsdEZvbGRlck1nclN1cHBvcnRzRG9tYWlucyA9IDQsCiAgZ2VzdGFsdEZvbGRlck1nclN1cHBv
cnRzRlNDYWxscyA9IDUKfTsKCmVudW0gewogIGdlc3RhbHRGaW5kRm9sZGVyUmVkaXJlY3Rpb25B
dHRyID0gJ2ZvbGUnCn07CgoKZW51bSB7CiAgZ2VzdGFsdEZvbnRNZ3JBdHRyID0gJ2ZvbnQnLAog
IGdlc3RhbHRPdXRsaW5lRm9udHMgPSAwCn07CgplbnVtIHsKICBnZXN0YWx0RlBVVHlwZSA9ICdm
cHUgJywKICBnZXN0YWx0Tm9GUFUgPSAwLAogIGdlc3RhbHQ2ODg4MSA9IDEsCiAgZ2VzdGFsdDY4
ODgyID0gMiwKICBnZXN0YWx0NjgwNDBGUFUgPSAzCn07CgplbnVtIHsKICBnZXN0YWx0RlNBdHRy
ID0gJ2ZzICAnLAogIGdlc3RhbHRGdWxsRXh0RlNEaXNwYXRjaGluZyA9IDAsCiAgZ2VzdGFsdEhh
c0ZTU3BlY0NhbGxzID0gMSwKICBnZXN0YWx0SGFzRmlsZVN5c3RlbU1hbmFnZXIgPSAyLAogIGdl
c3RhbHRGU01Eb2VzRHluYW1pY0xvYWQgPSAzLAogIGdlc3RhbHRGU1N1cHBvcnRzNEdCVm9scyA9
IDQsCiAgZ2VzdGFsdEZTU3VwcG9ydHMyVEJWb2xzID0gNSwKICBnZXN0YWx0SGFzRXh0ZW5kZWRE
aXNrSW5pdCA9IDYsCiAgZ2VzdGFsdERUTWdyU3VwcG9ydHNGU00gPSA3LAogIGdlc3RhbHRGU05v
TUZTVm9scyA9IDgsCiAgZ2VzdGFsdEZTU3VwcG9ydHNIRlNQbHVzVm9scyA9IDksCiAgZ2VzdGFs
dEZTSW5jb21wYXRpYmxlREZBODIgPSAxMAp9OwoKZW51bSB7CiAgZ2VzdGFsdEZTU3VwcG9ydHNE
aXJlY3RJTyA9IDExCn07CgplbnVtIHsKICBnZXN0YWx0SGFzSEZTUGx1c0FQSXMgPSAxMiwKICBn
ZXN0YWx0TXVzdFVzZUZDQkFjY2Vzc29ycyA9IDEzLAogIGdlc3RhbHRGU1VzZXNQT1NJWFBhdGhz
Rm9yQ29udmVyc2lvbiA9IDE0LAogIGdlc3RhbHRGU1N1cHBvcnRzRXhjbHVzaXZlTG9ja3MgPSAx
NSwKICBnZXN0YWx0RlNTdXBwb3J0c0hhcmRMaW5rRGV0ZWN0aW9uID0gMTYsCiAgZ2VzdGFsdEZT
QWxsb3dzQ29uY3VycmVudEFzeW5jSU8gPSAxNwp9OwoKZW51bSB7CiAgZ2VzdGFsdEFkbWluRmVh
dHVyZXNGbGFnc0F0dHIgPSAnZnJlZCcsCiAgZ2VzdGFsdEZpbmRlclVzZXNTcGVjaWFsT3BlbkZv
bGRlcnNGaWxlID0gMAp9OwoKZW51bSB7CiAgZ2VzdGFsdEZTTVZlcnNpb24gPSAnZnNtICcKfTsK
CmVudW0gewogIGdlc3RhbHRGWGZyTWdyQXR0ciA9ICdmeGZyJywKICBnZXN0YWx0Rlhmck1nclBy
ZXNlbnQgPSAwLAogIGdlc3RhbHRGWGZyTWdyTXVsdGlGaWxlID0gMSwKICBnZXN0YWx0Rlhmck1n
ckVycm9yU3RyaW5nID0gMiwKICBnZXN0YWx0Rlhmck1nckFzeW5jID0gMwp9OwoKZW51bSB7CiAg
Z2VzdGFsdEdyYXBoaWNzQXR0ciA9ICdnZnhhJywKICBnZXN0YWx0R3JhcGhpY3NJc0RlYnVnZ2lu
ZyA9IDB4MDAwMDAwMDEsCiAgZ2VzdGFsdEdyYXBoaWNzSXNMb2FkZWQgPSAweDAwMDAwMDAyLAog
IGdlc3RhbHRHcmFwaGljc0lzUG93ZXJQQyA9IDB4MDAwMDAwMDQKfTsKCmVudW0gewogIGdlc3Rh
bHRHcmFwaGljc1ZlcnNpb24gPSAnZ3JmeCcsCiAgZ2VzdGFsdEN1cnJlbnRHcmFwaGljc1ZlcnNp
b24gPSAweDAwMDEwMjAwCn07CgplbnVtIHsKICBnZXN0YWx0SGFyZHdhcmVBdHRyID0gJ2hkd3In
LAogIGdlc3RhbHRIYXNWSUExID0gMCwKICBnZXN0YWx0SGFzVklBMiA9IDEsCiAgZ2VzdGFsdEhh
c0FTQyA9IDMsCiAgZ2VzdGFsdEhhc1NDQyA9IDQsCiAgZ2VzdGFsdEhhc1NDU0kgPSA3LAogIGdl
c3RhbHRIYXNTb2Z0UG93ZXJPZmYgPSAxOSwKICBnZXN0YWx0SGFzU0NTSTk2MSA9IDIxLAogIGdl
c3RhbHRIYXNTQ1NJOTYyID0gMjIsCiAgZ2VzdGFsdEhhc1VuaXZlcnNhbFJPTSA9IDI0LAogIGdl
c3RhbHRIYXNFbmhhbmNlZEx0YWxrID0gMzAKfTsKCmVudW0gewogIGdlc3RhbHRIZWxwTWdyQXR0
ciA9ICdoZWxwJywKICBnZXN0YWx0SGVscE1nclByZXNlbnQgPSAwLAogIGdlc3RhbHRIZWxwTWdy
RXh0ZW5zaW9ucyA9IDEsCiAgZ2VzdGFsdEFwcGxlR3VpZGVJc0RlYnVnID0gMzAsCiAgZ2VzdGFs
dEFwcGxlR3VpZGVQcmVzZW50ID0gMzEKfTsKCmVudW0gewogIGdlc3RhbHRIYXJkd2FyZVZlbmRv
ckNvZGUgPSAnaHJhZCcsCiAgZ2VzdGFsdEhhcmR3YXJlVmVuZG9yQXBwbGUgPSAnQXBwbCcKfTsK
CmVudW0gewogIGdlc3RhbHRDb21wcmVzc2lvbk1nciA9ICdpY21wJwp9OwoKZW51bSB7CiAgZ2Vz
dGFsdEljb25VdGlsaXRpZXNBdHRyID0gJ2ljb24nLAogIGdlc3RhbHRJY29uVXRpbGl0aWVzUHJl
c2VudCA9IDAsCiAgZ2VzdGFsdEljb25VdGlsaXRpZXNIYXM0OFBpeGVsSWNvbnMgPSAxLAogIGdl
c3RhbHRJY29uVXRpbGl0aWVzSGFzMzJCaXRJY29ucyA9IDIsCiAgZ2VzdGFsdEljb25VdGlsaXRp
ZXNIYXM4Qml0RGVlcE1hc2tzID0gMywKICBnZXN0YWx0SWNvblV0aWxpdGllc0hhc0ljb25TZXJ2
aWNlcyA9IDQKfTsKCmVudW0gewogIGdlc3RhbHRJbnRlcm5hbERpc3BsYXkgPSAnaWRzcCcKfTsK
CgoKCgplbnVtIHsKICBnZXN0YWx0S2V5Ym9hcmRUeXBlID0gJ2tiZCAnLAogIGdlc3RhbHRNYWNL
YmQgPSAxLAogIGdlc3RhbHRNYWNBbmRQYWQgPSAyLAogIGdlc3RhbHRNYWNQbHVzS2JkID0gMywK
ICBnZXN0YWx0VW5rbm93blRoaXJkUGFydHlLYmQgPSAzLAogIGdlc3RhbHRFeHRBREJLYmQgPSA0
LAogIGdlc3RhbHRTdGRBREJLYmQgPSA1LAogIGdlc3RhbHRQcnRibEFEQktiZCA9IDYsCiAgZ2Vz
dGFsdFBydGJsSVNPS2JkID0gNywKICBnZXN0YWx0U3RkSVNPQURCS2JkID0gOCwKICBnZXN0YWx0
RXh0SVNPQURCS2JkID0gOSwKICBnZXN0YWx0QURCS2JkSUkgPSAxMCwKICBnZXN0YWx0QURCSVNP
S2JkSUkgPSAxMSwKICBnZXN0YWx0UHdyQm9va0FEQktiZCA9IDEyLAogIGdlc3RhbHRQd3JCb29r
SVNPQURCS2JkID0gMTMsCiAgZ2VzdGFsdEFwcGxlQWRqdXN0S2V5cGFkID0gMTQsCiAgZ2VzdGFs
dEFwcGxlQWRqdXN0QURCS2JkID0gMTUsCiAgZ2VzdGFsdEFwcGxlQWRqdXN0SVNPS2JkID0gMTYs
CiAgZ2VzdGFsdEphcGFuQWRqdXN0QURCS2JkID0gMTcsCiAgZ2VzdGFsdFB3ckJrRXh0SVNPS2Jk
ID0gMjAsCiAgZ2VzdGFsdFB3ckJrRXh0SklTS2JkID0gMjEsCiAgZ2VzdGFsdFB3ckJrRXh0QURC
S2JkID0gMjQsCiAgZ2VzdGFsdFBTMktleWJvYXJkID0gMjcsCiAgZ2VzdGFsdFB3ckJrU3ViRG9t
S2JkID0gMjgsCiAgZ2VzdGFsdFB3ckJrU3ViSVNPS2JkID0gMjksCiAgZ2VzdGFsdFB3ckJrU3Vi
SklTS2JkID0gMzAsCiAgZ2VzdGFsdFBvcnRhYmxlVVNCQU5TSUtiZCA9IDM3LAogIGdlc3RhbHRQ
b3J0YWJsZVVTQklTT0tiZCA9IDM4LAogIGdlc3RhbHRQb3J0YWJsZVVTQkpJU0tiZCA9IDM5LAog
IGdlc3RhbHRUaGlyZFBhcnR5QU5TSUtiZCA9IDQwLAogIGdlc3RhbHRUaGlyZFBhcnR5SVNPS2Jk
ID0gNDEsCiAgZ2VzdGFsdFRoaXJkUGFydHlKSVNLYmQgPSA0MiwKICBnZXN0YWx0UHdyQmtFS0Rv
bUtiZCA9IDE5NSwKICBnZXN0YWx0UHdyQmtFS0lTT0tiZCA9IDE5NiwKICBnZXN0YWx0UHdyQmtF
S0pJU0tiZCA9IDE5NywKICBnZXN0YWx0VVNCQ29zbW9BTlNJS2JkID0gMTk4LAogIGdlc3RhbHRV
U0JDb3Ntb0lTT0tiZCA9IDE5OSwKICBnZXN0YWx0VVNCQ29zbW9KSVNLYmQgPSAyMDAsCiAgZ2Vz
dGFsdFB3ckJrOTlKSVNLYmQgPSAyMDEsCiAgZ2VzdGFsdFVTQkFuZHlBTlNJS2JkID0gMjA0LAog
IGdlc3RhbHRVU0JBbmR5SVNPS2JkID0gMjA1LAogIGdlc3RhbHRVU0JBbmR5SklTS2JkID0gMjA2
Cn07CgoKZW51bSB7CiAgZ2VzdGFsdFBvcnRhYmxlMjAwMUFOU0lLYmQgPSAyMDIsCiAgZ2VzdGFs
dFBvcnRhYmxlMjAwMUlTT0tiZCA9IDIwMywKICBnZXN0YWx0UG9ydGFibGUyMDAxSklTS2JkID0g
MjA3Cn07CgplbnVtIHsKICBnZXN0YWx0VVNCUHJvRjE2QU5TSUtiZCA9IDM0LAogIGdlc3RhbHRV
U0JQcm9GMTZJU09LYmQgPSAzNSwKICBnZXN0YWx0VVNCUHJvRjE2SklTS2JkID0gMzYsCiAgZ2Vz
dGFsdFByb0YxNkFOU0lLYmQgPSAzMSwKICBnZXN0YWx0UHJvRjE2SVNPS2JkID0gMzIsCiAgZ2Vz
dGFsdFByb0YxNkpJU0tiZCA9IDMzCn07CgoKCgoKZW51bSB7CiAgZ2VzdGFsdFVERlN1cHBvcnQg
PSAna3VkZicKfTsKCmVudW0gewogIGdlc3RhbHRMb3dNZW1vcnlTaXplID0gJ2xtZW0nCn07Cgpl
bnVtIHsKICBnZXN0YWx0TG9naWNhbFJBTVNpemUgPSAnbHJhbScKfTsKIyAxMjEyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9HZXN0YWx0LmgiIDMKZW51bSB7CiAgZ2VzdGFsdE1h
Y2hpbmVUeXBlID0gJ21hY2gnLAogIGdlc3RhbHRDbGFzc2ljID0gMSwKICBnZXN0YWx0TWFjWEwg
PSAyLAogIGdlc3RhbHRNYWM1MTJLRSA9IDMsCiAgZ2VzdGFsdE1hY1BsdXMgPSA0LAogIGdlc3Rh
bHRNYWNTRSA9IDUsCiAgZ2VzdGFsdE1hY0lJID0gNiwKICBnZXN0YWx0TWFjSUl4ID0gNywKICBn
ZXN0YWx0TWFjSUljeCA9IDgsCiAgZ2VzdGFsdE1hY1NFMDMwID0gOSwKICBnZXN0YWx0UG9ydGFi
bGUgPSAxMCwKICBnZXN0YWx0TWFjSUljaSA9IDExLAogIGdlc3RhbHRQb3dlck1hYzgxMDBfMTIw
ID0gMTIsCiAgZ2VzdGFsdE1hY0lJZnggPSAxMywKICBnZXN0YWx0TWFjQ2xhc3NpYyA9IDE3LAog
IGdlc3RhbHRNYWNJSXNpID0gMTgsCiAgZ2VzdGFsdE1hY0xDID0gMTksCiAgZ2VzdGFsdE1hY1F1
YWRyYTkwMCA9IDIwLAogIGdlc3RhbHRQb3dlckJvb2sxNzAgPSAyMSwKICBnZXN0YWx0TWFjUXVh
ZHJhNzAwID0gMjIsCiAgZ2VzdGFsdENsYXNzaWNJSSA9IDIzLAogIGdlc3RhbHRQb3dlckJvb2sx
MDAgPSAyNCwKICBnZXN0YWx0UG93ZXJCb29rMTQwID0gMjUsCiAgZ2VzdGFsdE1hY1F1YWRyYTk1
MCA9IDI2LAogIGdlc3RhbHRNYWNMQ0lJSSA9IDI3LAogIGdlc3RhbHRQZXJmb3JtYTQ1MCA9IGdl
c3RhbHRNYWNMQ0lJSSwKICBnZXN0YWx0UG93ZXJCb29rRHVvMjEwID0gMjksCiAgZ2VzdGFsdE1h
Y0NlbnRyaXM2NTAgPSAzMCwKICBnZXN0YWx0UG93ZXJCb29rRHVvMjMwID0gMzIsCiAgZ2VzdGFs
dFBvd2VyQm9vazE4MCA9IDMzLAogIGdlc3RhbHRQb3dlckJvb2sxNjAgPSAzNCwKICBnZXN0YWx0
TWFjUXVhZHJhODAwID0gMzUsCiAgZ2VzdGFsdE1hY1F1YWRyYTY1MCA9IDM2LAogIGdlc3RhbHRN
YWNMQ0lJID0gMzcsCiAgZ2VzdGFsdFBvd2VyQm9va0R1bzI1MCA9IDM4LAogIGdlc3RhbHRBV1M5
MTUwXzgwID0gMzksCiAgZ2VzdGFsdFBvd2VyTWFjODEwMF8xMTAgPSA0MCwKICBnZXN0YWx0QVdT
ODE1MF8xMTAgPSBnZXN0YWx0UG93ZXJNYWM4MTAwXzExMCwKICBnZXN0YWx0UG93ZXJNYWM1MjAw
ID0gNDEsCiAgZ2VzdGFsdFBvd2VyTWFjNTI2MCA9IGdlc3RhbHRQb3dlck1hYzUyMDAsCiAgZ2Vz
dGFsdFBlcmZvcm1hNTMwMCA9IGdlc3RhbHRQb3dlck1hYzUyMDAsCiAgZ2VzdGFsdFBvd2VyTWFj
NjIwMCA9IDQyLAogIGdlc3RhbHRQZXJmb3JtYTYzMDAgPSBnZXN0YWx0UG93ZXJNYWM2MjAwLAog
IGdlc3RhbHRNYWNJSXZpID0gNDQsCiAgZ2VzdGFsdE1hY0lJdm0gPSA0NSwKICBnZXN0YWx0UGVy
Zm9ybWE2MDAgPSBnZXN0YWx0TWFjSUl2bSwKICBnZXN0YWx0UG93ZXJNYWM3MTAwXzgwID0gNDcs
CiAgZ2VzdGFsdE1hY0lJdnggPSA0OCwKICBnZXN0YWx0TWFjQ29sb3JDbGFzc2ljID0gNDksCiAg
Z2VzdGFsdFBlcmZvcm1hMjUwID0gZ2VzdGFsdE1hY0NvbG9yQ2xhc3NpYywKICBnZXN0YWx0UG93
ZXJCb29rMTY1YyA9IDUwLAogIGdlc3RhbHRNYWNDZW50cmlzNjEwID0gNTIsCiAgZ2VzdGFsdE1h
Y1F1YWRyYTYxMCA9IDUzLAogIGdlc3RhbHRQb3dlckJvb2sxNDUgPSA1NCwKICBnZXN0YWx0UG93
ZXJNYWM4MTAwXzEwMCA9IDU1LAogIGdlc3RhbHRNYWNMQzUyMCA9IDU2LAogIGdlc3RhbHRBV1M5
MTUwXzEyMCA9IDU3LAogIGdlc3RhbHRQb3dlck1hYzY0MDAgPSA1OCwKICBnZXN0YWx0UGVyZm9y
bWE2NDAwID0gZ2VzdGFsdFBvd2VyTWFjNjQwMCwKICBnZXN0YWx0UGVyZm9ybWE2MzYwID0gZ2Vz
dGFsdFBlcmZvcm1hNjQwMCwKICBnZXN0YWx0TWFjQ2VudHJpczY2MEFWID0gNjAsCiAgZ2VzdGFs
dE1hY1F1YWRyYTY2MEFWID0gZ2VzdGFsdE1hY0NlbnRyaXM2NjBBViwKICBnZXN0YWx0UGVyZm9y
bWE0NnggPSA2MiwKICBnZXN0YWx0UG93ZXJNYWM4MTAwXzgwID0gNjUsCiAgZ2VzdGFsdEFXUzgx
NTBfODAgPSBnZXN0YWx0UG93ZXJNYWM4MTAwXzgwLAogIGdlc3RhbHRQb3dlck1hYzk1MDAgPSA2
NywKICBnZXN0YWx0UG93ZXJNYWM5NjAwID0gZ2VzdGFsdFBvd2VyTWFjOTUwMCwKICBnZXN0YWx0
UG93ZXJNYWM3NTAwID0gNjgsCiAgZ2VzdGFsdFBvd2VyTWFjNzYwMCA9IGdlc3RhbHRQb3dlck1h
Yzc1MDAsCiAgZ2VzdGFsdFBvd2VyTWFjODUwMCA9IDY5LAogIGdlc3RhbHRQb3dlck1hYzg2MDAg
PSBnZXN0YWx0UG93ZXJNYWM4NTAwLAogIGdlc3RhbHRBV1M4NTUwID0gZ2VzdGFsdFBvd2VyTWFj
NzUwMCwKICBnZXN0YWx0UG93ZXJCb29rMTgwYyA9IDcxLAogIGdlc3RhbHRQb3dlckJvb2s1MjAg
PSA3MiwKICBnZXN0YWx0UG93ZXJCb29rNTIwYyA9IGdlc3RhbHRQb3dlckJvb2s1MjAsCiAgZ2Vz
dGFsdFBvd2VyQm9vazU0MCA9IGdlc3RhbHRQb3dlckJvb2s1MjAsCiAgZ2VzdGFsdFBvd2VyQm9v
azU0MGMgPSBnZXN0YWx0UG93ZXJCb29rNTIwLAogIGdlc3RhbHRQb3dlck1hYzU0MDAgPSA3NCwK
ICBnZXN0YWx0UG93ZXJNYWM2MTAwXzYwID0gNzUsCiAgZ2VzdGFsdEFXUzYxNTBfNjAgPSBnZXN0
YWx0UG93ZXJNYWM2MTAwXzYwLAogIGdlc3RhbHRQb3dlckJvb2tEdW8yNzBjID0gNzcsCiAgZ2Vz
dGFsdE1hY1F1YWRyYTg0MEFWID0gNzgsCiAgZ2VzdGFsdFBlcmZvcm1hNTUwID0gODAsCiAgZ2Vz
dGFsdFBvd2VyQm9vazE2NSA9IDg0LAogIGdlc3RhbHRQb3dlckJvb2sxOTAgPSA4NSwKICBnZXN0
YWx0TWFjVFYgPSA4OCwKICBnZXN0YWx0TWFjTEM0NzUgPSA4OSwKICBnZXN0YWx0UGVyZm9ybWE0
N3ggPSBnZXN0YWx0TWFjTEM0NzUsCiAgZ2VzdGFsdE1hY0xDNTc1ID0gOTIsCiAgZ2VzdGFsdE1h
Y1F1YWRyYTYwNSA9IDk0LAogIGdlc3RhbHRNYWNRdWFkcmE2MzAgPSA5OCwKICBnZXN0YWx0TWFj
TEM1ODAgPSA5OSwKICBnZXN0YWx0UGVyZm9ybWE1ODAgPSBnZXN0YWx0TWFjTEM1ODAsCiAgZ2Vz
dGFsdFBvd2VyTWFjNjEwMF82NiA9IDEwMCwKICBnZXN0YWx0QVdTNjE1MF82NiA9IGdlc3RhbHRQ
b3dlck1hYzYxMDBfNjYsCiAgZ2VzdGFsdFBvd2VyQm9va0R1bzI4MCA9IDEwMiwKICBnZXN0YWx0
UG93ZXJCb29rRHVvMjgwYyA9IDEwMywKICBnZXN0YWx0UG93ZXJNYWNMQzQ3NSA9IDEwNCwKICBn
ZXN0YWx0UG93ZXJNYWNQZXJmb3JtYTQ3eCA9IGdlc3RhbHRQb3dlck1hY0xDNDc1LAogIGdlc3Rh
bHRQb3dlck1hY0xDNTc1ID0gMTA1LAogIGdlc3RhbHRQb3dlck1hY1BlcmZvcm1hNTd4ID0gZ2Vz
dGFsdFBvd2VyTWFjTEM1NzUsCiAgZ2VzdGFsdFBvd2VyTWFjUXVhZHJhNjMwID0gMTA2LAogIGdl
c3RhbHRQb3dlck1hY0xDNjMwID0gZ2VzdGFsdFBvd2VyTWFjUXVhZHJhNjMwLAogIGdlc3RhbHRQ
b3dlck1hY1BlcmZvcm1hNjN4ID0gZ2VzdGFsdFBvd2VyTWFjUXVhZHJhNjMwLAogIGdlc3RhbHRQ
b3dlck1hYzcyMDAgPSAxMDgsCiAgZ2VzdGFsdFBvd2VyTWFjNzMwMCA9IDEwOSwKICBnZXN0YWx0
UG93ZXJNYWM3MTAwXzY2ID0gMTEyLAogIGdlc3RhbHRQb3dlckJvb2sxNTAgPSAxMTUsCiAgZ2Vz
dGFsdFBvd2VyTWFjUXVhZHJhNzAwID0gMTE2LAogIGdlc3RhbHRQb3dlck1hY1F1YWRyYTkwMCA9
IDExNywKICBnZXN0YWx0UG93ZXJNYWNRdWFkcmE5NTAgPSAxMTgsCiAgZ2VzdGFsdFBvd2VyTWFj
Q2VudHJpczYxMCA9IDExOSwKICBnZXN0YWx0UG93ZXJNYWNDZW50cmlzNjUwID0gMTIwLAogIGdl
c3RhbHRQb3dlck1hY1F1YWRyYTYxMCA9IDEyMSwKICBnZXN0YWx0UG93ZXJNYWNRdWFkcmE2NTAg
PSAxMjIsCiAgZ2VzdGFsdFBvd2VyTWFjUXVhZHJhODAwID0gMTIzLAogIGdlc3RhbHRQb3dlckJv
b2tEdW8yMzAwID0gMTI0LAogIGdlc3RhbHRQb3dlckJvb2s1MDBQUENVcGdyYWRlID0gMTI2LAog
IGdlc3RhbHRQb3dlckJvb2s1MzAwID0gMTI4LAogIGdlc3RhbHRQb3dlckJvb2sxNDAwID0gMzEw
LAogIGdlc3RhbHRQb3dlckJvb2szNDAwID0gMzA2LAogIGdlc3RhbHRQb3dlckJvb2syNDAwID0g
MzA3LAogIGdlc3RhbHRQb3dlckJvb2tHM1NlcmllcyA9IDMxMiwKICBnZXN0YWx0UG93ZXJCb29r
RzMgPSAzMTMsCiAgZ2VzdGFsdFBvd2VyQm9va0czU2VyaWVzMiA9IDMxNCwKICBnZXN0YWx0UG93
ZXJNYWNOZXdXb3JsZCA9IDQwNiwKICBnZXN0YWx0UG93ZXJNYWNHMyA9IDUxMCwKICBnZXN0YWx0
UG93ZXJNYWM1NTAwID0gNTEyLAogIGdlc3RhbHQyMHRoQW5uaXZlcnNhcnkgPSBnZXN0YWx0UG93
ZXJNYWM1NTAwLAogIGdlc3RhbHRQb3dlck1hYzY1MDAgPSA1MTMsCiAgZ2VzdGFsdFBvd2VyTWFj
NDQwMF8xNjAgPSA1MTQsCiAgZ2VzdGFsdFBvd2VyTWFjNDQwMCA9IDUxNSwKICBnZXN0YWx0TWFj
T1NDb21wYXRpYmlsaXR5ID0gMTIwNgp9OwoKCmVudW0gewogIGdlc3RhbHRRdWFkcmE2MDUgPSBn
ZXN0YWx0TWFjUXVhZHJhNjA1LAogIGdlc3RhbHRRdWFkcmE2MTAgPSBnZXN0YWx0TWFjUXVhZHJh
NjEwLAogIGdlc3RhbHRRdWFkcmE2MzAgPSBnZXN0YWx0TWFjUXVhZHJhNjMwLAogIGdlc3RhbHRR
dWFkcmE2NTAgPSBnZXN0YWx0TWFjUXVhZHJhNjUwLAogIGdlc3RhbHRRdWFkcmE2NjBBViA9IGdl
c3RhbHRNYWNRdWFkcmE2NjBBViwKICBnZXN0YWx0UXVhZHJhNzAwID0gZ2VzdGFsdE1hY1F1YWRy
YTcwMCwKICBnZXN0YWx0UXVhZHJhODAwID0gZ2VzdGFsdE1hY1F1YWRyYTgwMCwKICBnZXN0YWx0
UXVhZHJhODQwQVYgPSBnZXN0YWx0TWFjUXVhZHJhODQwQVYsCiAgZ2VzdGFsdFF1YWRyYTkwMCA9
IGdlc3RhbHRNYWNRdWFkcmE5MDAsCiAgZ2VzdGFsdFF1YWRyYTk1MCA9IGdlc3RhbHRNYWNRdWFk
cmE5NTAKfTsKCmVudW0gewogIGtNYWNoaW5lTmFtZVN0cklEID0gLTE2Mzk1Cn07CgplbnVtIHsK
ICBnZXN0YWx0U01QTWFpbGVyVmVyc2lvbiA9ICdtYWxyJwp9OwoKZW51bSB7CiAgZ2VzdGFsdE1l
ZGlhQmF5ID0gJ21iZWgnLAogIGdlc3RhbHRNQkxlZ2FjeSA9IDAsCiAgZ2VzdGFsdE1CU2luZ2xl
QmF5ID0gMSwKICBnZXN0YWx0TUJNdWx0aXBsZUJheXMgPSAyCn07CgplbnVtIHsKICBnZXN0YWx0
TWVzc2FnZU1nclZlcnNpb24gPSAnbWVzcycKfTsKCgoKZW51bSB7CiAgZ2VzdGFsdE1lbnVNZ3JB
dHRyID0gJ21lbnUnLAogIGdlc3RhbHRNZW51TWdyUHJlc2VudCA9ICgxTCA8PCAwKSwKCgogIGdl
c3RhbHRNZW51TWdyUHJlc2VudEJpdCA9IDAsCiAgZ2VzdGFsdE1lbnVNZ3JBcXVhTGF5b3V0Qml0
ID0gMSwKICBnZXN0YWx0TWVudU1nck11bHRpcGxlSXRlbXNXaXRoQ29tbWFuZElEQml0ID0gMiwK
ICBnZXN0YWx0TWVudU1nclJldGFpbnNJY29uUmVmQml0ID0gMywKICBnZXN0YWx0TWVudU1nclNl
bmRzTWVudUJvdW5kc1RvRGVmUHJvY0JpdCA9IDQsCiAgZ2VzdGFsdE1lbnVNZ3JNb3JlVGhhbkZp
dmVNZW51c0RlZXBCaXQgPSA1LAogIGdlc3RhbHRNZW51TWdyQ0dJbWFnZU1lbnVUaXRsZUJpdCA9
IDYsCgogIGdlc3RhbHRNZW51TWdyUHJlc2VudE1hc2sgPSAoMUwgPDwgZ2VzdGFsdE1lbnVNZ3JQ
cmVzZW50Qml0KSwKICBnZXN0YWx0TWVudU1nckFxdWFMYXlvdXRNYXNrID0gKDFMIDw8IGdlc3Rh
bHRNZW51TWdyQXF1YUxheW91dEJpdCksCiAgZ2VzdGFsdE1lbnVNZ3JNdWx0aXBsZUl0ZW1zV2l0
aENvbW1hbmRJRE1hc2sgPSAoMUwgPDwgZ2VzdGFsdE1lbnVNZ3JNdWx0aXBsZUl0ZW1zV2l0aENv
bW1hbmRJREJpdCksCiAgZ2VzdGFsdE1lbnVNZ3JSZXRhaW5zSWNvblJlZk1hc2sgPSAoMUwgPDwg
Z2VzdGFsdE1lbnVNZ3JSZXRhaW5zSWNvblJlZkJpdCksCiAgZ2VzdGFsdE1lbnVNZ3JTZW5kc01l
bnVCb3VuZHNUb0RlZlByb2NNYXNrID0gKDFMIDw8IGdlc3RhbHRNZW51TWdyU2VuZHNNZW51Qm91
bmRzVG9EZWZQcm9jQml0KSwKICBnZXN0YWx0TWVudU1nck1vcmVUaGFuRml2ZU1lbnVzRGVlcE1h
c2sgPSAoMUwgPDwgZ2VzdGFsdE1lbnVNZ3JNb3JlVGhhbkZpdmVNZW51c0RlZXBCaXQpLAogIGdl
c3RhbHRNZW51TWdyQ0dJbWFnZU1lbnVUaXRsZU1hc2sgPSAoMUwgPDwgZ2VzdGFsdE1lbnVNZ3JD
R0ltYWdlTWVudVRpdGxlQml0KQp9OwoKCmVudW0gewogIGdlc3RhbHRNdWx0aXBsZVVzZXJzU3Rh
dGUgPSAnbWZkcicKfTsKCgplbnVtIHsKICBnZXN0YWx0TWFjaGluZUljb24gPSAnbWljbicKfTsK
CmVudW0gewogIGdlc3RhbHRNaXNjQXR0ciA9ICdtaXNjJywKICBnZXN0YWx0U2Nyb2xsaW5nVGhy
b3R0bGUgPSAwLAogIGdlc3RhbHRTcXVhcmVNZW51QmFyID0gMgp9OwojIDE0MzYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0dlc3RhbHQuaCIgMwplbnVtIHsKICBnZXN0YWx0TWl4
ZWRNb2RlVmVyc2lvbiA9ICdtaXhkJwp9OwoKZW51bSB7CiAgZ2VzdGFsdE1peGVkTW9kZUF0dHIg
PSAnbWl4ZCcsCiAgZ2VzdGFsdE1peGVkTW9kZVBvd2VyUEMgPSAwLAogIGdlc3RhbHRQb3dlclBD
QXdhcmUgPSAwLAogIGdlc3RhbHRNaXhlZE1vZGVDRk02OEsgPSAxLAogIGdlc3RhbHRNaXhlZE1v
ZGVDRk02OEtIYXNUcmFwID0gMiwKICBnZXN0YWx0TWl4ZWRNb2RlQ0ZNNjhLSGFzU3RhdGUgPSAz
Cn07CgplbnVtIHsKICBnZXN0YWx0UXVpY2tUaW1lQ29uZmVyZW5jaW5nID0gJ210bGsnCn07Cgpl
bnVtIHsKICBnZXN0YWx0TWVtb3J5TWFwQXR0ciA9ICdtbWFwJywKICBnZXN0YWx0TWVtb3J5TWFw
U3BhcnNlID0gMAp9OwoKZW51bSB7CiAgZ2VzdGFsdE1NVVR5cGUgPSAnbW11ICcsCiAgZ2VzdGFs
dE5vTU1VID0gMCwKICBnZXN0YWx0QU1VID0gMSwKICBnZXN0YWx0Njg4NTEgPSAyLAogIGdlc3Rh
bHQ2ODAzME1NVSA9IDMsCiAgZ2VzdGFsdDY4MDQwTU1VID0gNCwKICBnZXN0YWx0RU1NVTEgPSA1
Cn07CgplbnVtIHsKCgoKICBnZXN0YWx0VXNlclZpc2libGVNYWNoaW5lTmFtZSA9ICdtbmFtJwp9
OwoKZW51bSB7CiAgZ2VzdGFsdE1QQ2FsbGFibGVBUElzQXR0ciA9ICdtcHNjJywKICBnZXN0YWx0
TVBGaWxlTWFuYWdlciA9IDAsCiAgZ2VzdGFsdE1QRGV2aWNlTWFuYWdlciA9IDEsCiAgZ2VzdGFs
dE1QVHJhcENhbGxzID0gMgp9OwoKZW51bSB7CiAgZ2VzdGFsdFN0ZE5CUEF0dHIgPSAnbmx1cCcs
CiAgZ2VzdGFsdFN0ZE5CUFByZXNlbnQgPSAwLAogIGdlc3RhbHRTdGROQlBTdXBwb3J0c0F1dG9Q
b3NpdGlvbiA9IDEKfTsKCmVudW0gewogIGdlc3RhbHROb3RpZmljYXRpb25NZ3JBdHRyID0gJ25t
Z3InLAogIGdlc3RhbHROb3RpZmljYXRpb25QcmVzZW50ID0gMAp9OwoKZW51bSB7CiAgZ2VzdGFs
dE5hbWVSZWdpc3RyeVZlcnNpb24gPSAnbnJlZycKfTsKCmVudW0gewogIGdlc3RhbHROdUJ1c1Ns
b3RDb3VudCA9ICdudWJzJwp9OwoKZW51bSB7CiAgZ2VzdGFsdE9DRVRvb2xib3hWZXJzaW9uID0g
J29jZXQnLAogIGdlc3RhbHRPQ0VUQiA9IDB4MDEwMiwKICBnZXN0YWx0U0ZTZXJ2ZXIgPSAweDAx
MDAKfTsKCmVudW0gewogIGdlc3RhbHRPQ0VUb29sYm94QXR0ciA9ICdvY2V1JywKICBnZXN0YWx0
T0NFVEJQcmVzZW50ID0gMHgwMSwKICBnZXN0YWx0T0NFVEJBdmFpbGFibGUgPSAweDAyLAogIGdl
c3RhbHRPQ0VTRlNlcnZlckF2YWlsYWJsZSA9IDB4MDQsCiAgZ2VzdGFsdE9DRVRCTmF0aXZlR2x1
ZUF2YWlsYWJsZSA9IDB4MTAKfTsKCmVudW0gewogIGdlc3RhbHRPcGVuRmlybXdhcmVJbmZvID0g
J29wZncnCn07CgplbnVtIHsKICBnZXN0YWx0T1NBdHRyID0gJ29zICAnLAogIGdlc3RhbHRTeXNa
b25lR3Jvd2FibGUgPSAwLAogIGdlc3RhbHRMYXVuY2hDYW5SZXR1cm4gPSAxLAogIGdlc3RhbHRM
YXVuY2hGdWxsRmlsZVNwZWMgPSAyLAogIGdlc3RhbHRMYXVuY2hDb250cm9sID0gMywKICBnZXN0
YWx0VGVtcE1lbVN1cHBvcnQgPSA0LAogIGdlc3RhbHRSZWFsVGVtcE1lbW9yeSA9IDUsCiAgZ2Vz
dGFsdFRlbXBNZW1UcmFja2VkID0gNiwKICBnZXN0YWx0SVBDU3VwcG9ydCA9IDcsCiAgZ2VzdGFs
dFN5c0RlYnVnZ2VyU3VwcG9ydCA9IDgsCiAgZ2VzdGFsdE5hdGl2ZVByb2Nlc3NNZ3JCaXQgPSAx
OSwKICBnZXN0YWx0QWx0aXZlY1JlZ2lzdGVyc1N3YXBwZWRDb3JyZWN0bHlCaXQgPSAyMAp9OwoK
ZW51bSB7CiAgZ2VzdGFsdE9TVGFibGUgPSAnb3N0dCcKfTsKIyAxNTQ1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9HZXN0YWx0LmgiIDMKZW51bSB7CiAgZ2VzdGFsdE9wZW5UcHRO
ZXR3b3JrU2V0dXAgPSAnb3RjZicsCiAgZ2VzdGFsdE9wZW5UcHROZXR3b3JrU2V0dXBMZWdhY3lJ
bXBvcnQgPSAwLAogIGdlc3RhbHRPcGVuVHB0TmV0d29ya1NldHVwTGVnYWN5RXhwb3J0ID0gMSwK
ICBnZXN0YWx0T3BlblRwdE5ldHdvcmtTZXR1cFN1cHBvcnRzTXVsdGlob21pbmcgPSAyCn07Cgpl
bnVtIHsKICBnZXN0YWx0T3BlblRwdE5ldHdvcmtTZXR1cFZlcnNpb24gPSAnb3RjdicKfTsKCgoK
CgoKCmVudW0gewogIGdlc3RhbHRPcGVuVHB0UmVtb3RlQWNjZXNzID0gJ290cmEnLAogIGdlc3Rh
bHRPcGVuVHB0UmVtb3RlQWNjZXNzUHJlc2VudCA9IDAsCiAgZ2VzdGFsdE9wZW5UcHRSZW1vdGVB
Y2Nlc3NMb2FkZWQgPSAxLAogIGdlc3RhbHRPcGVuVHB0UmVtb3RlQWNjZXNzQ2xpZW50T25seSA9
IDIsCiAgZ2VzdGFsdE9wZW5UcHRSZW1vdGVBY2Nlc3NQU2VydmVyID0gMywKICBnZXN0YWx0T3Bl
blRwdFJlbW90ZUFjY2Vzc01QU2VydmVyID0gNCwKICBnZXN0YWx0T3BlblRwdFBQUFByZXNlbnQg
PSA1LAogIGdlc3RhbHRPcGVuVHB0QVJBUFByZXNlbnQgPSA2Cn07CgplbnVtIHsKICBnZXN0YWx0
T3BlblRwdFJlbW90ZUFjY2Vzc1ZlcnNpb24gPSAnb3RydicKfTsKCgoKCgplbnVtIHsKICBnZXN0
YWx0T3BlblRwdFZlcnNpb25zID0gJ290dnInCn07CgplbnVtIHsKICBnZXN0YWx0T3BlblRwdCA9
ICdvdGFuJywKICBnZXN0YWx0T3BlblRwdFByZXNlbnRNYXNrID0gMHgwMDAwMDAwMSwKICBnZXN0
YWx0T3BlblRwdExvYWRlZE1hc2sgPSAweDAwMDAwMDAyLAogIGdlc3RhbHRPcGVuVHB0QXBwbGVU
YWxrUHJlc2VudE1hc2sgPSAweDAwMDAwMDA0LAogIGdlc3RhbHRPcGVuVHB0QXBwbGVUYWxrTG9h
ZGVkTWFzayA9IDB4MDAwMDAwMDgsCiAgZ2VzdGFsdE9wZW5UcHRUQ1BQcmVzZW50TWFzayA9IDB4
MDAwMDAwMTAsCiAgZ2VzdGFsdE9wZW5UcHRUQ1BMb2FkZWRNYXNrID0gMHgwMDAwMDAyMCwKICBn
ZXN0YWx0T3BlblRwdElQWFNQWFByZXNlbnRNYXNrID0gMHgwMDAwMDA0MCwKICBnZXN0YWx0T3Bl
blRwdElQWFNQWExvYWRlZE1hc2sgPSAweDAwMDAwMDgwLAogIGdlc3RhbHRPcGVuVHB0UHJlc2Vu
dEJpdCA9IDAsCiAgZ2VzdGFsdE9wZW5UcHRMb2FkZWRCaXQgPSAxLAogIGdlc3RhbHRPcGVuVHB0
QXBwbGVUYWxrUHJlc2VudEJpdCA9IDIsCiAgZ2VzdGFsdE9wZW5UcHRBcHBsZVRhbGtMb2FkZWRC
aXQgPSAzLAogIGdlc3RhbHRPcGVuVHB0VENQUHJlc2VudEJpdCA9IDQsCiAgZ2VzdGFsdE9wZW5U
cHRUQ1BMb2FkZWRCaXQgPSA1LAogIGdlc3RhbHRPcGVuVHB0SVBYU1BYUHJlc2VudEJpdCA9IDYs
CiAgZ2VzdGFsdE9wZW5UcHRJUFhTUFhMb2FkZWRCaXQgPSA3Cn07CgoKZW51bSB7CiAgZ2VzdGFs
dFBDQ2FyZCA9ICdwY2NkJywKICBnZXN0YWx0Q2FyZFNlcnZpY2VzUHJlc2VudCA9IDAsCiAgZ2Vz
dGFsdFBDQ2FyZEZhbWlseVByZXNlbnQgPSAxLAogIGdlc3RhbHRQQ0NhcmRIYXNQb3dlckNvbnRy
b2wgPSAyLAogIGdlc3RhbHRQQ0NhcmRTdXBwb3J0c0NhcmRCdXMgPSAzCn07CgplbnVtIHsKICBn
ZXN0YWx0UHJvY0Nsa1NwZWVkID0gJ3BjbGsnCn07CgplbnVtIHsKICBnZXN0YWx0UHJvY0Nsa1Nw
ZWVkTUh6ID0gJ21jbGsnCn07CgplbnVtIHsKICBnZXN0YWx0UENYQXR0ciA9ICdwY3hnJywKICBn
ZXN0YWx0UENYSGFzOGFuZDE2Qml0RkFUID0gMCwKICBnZXN0YWx0UENYSGFzUHJvRE9TID0gMSwK
ICBnZXN0YWx0UENYTmV3VUkgPSAyLAogIGdlc3RhbHRQQ1hVc2VJQ01hcHBpbmcgPSAzCn07Cgpl
bnVtIHsKICBnZXN0YWx0TG9naWNhbFBhZ2VTaXplID0gJ3Bnc3onCn07CiMgMTY0NCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvR2VzdGFsdC5oIiAzCmVudW0gewogIGdlc3RhbHRT
Y3JlZW5DYXB0dXJlTWFpbiA9ICdwaWMxJywKICBnZXN0YWx0U2NyZWVuQ2FwdHVyZURpciA9ICdw
aWMyJwp9OwoKZW51bSB7CiAgZ2VzdGFsdEdYUHJpbnRpbmdNZ3JWZXJzaW9uID0gJ3BtZ3InCn07
CgplbnVtIHsKICBnZXN0YWx0UG9wdXBBdHRyID0gJ3BvcCEnLAogIGdlc3RhbHRQb3B1cFByZXNl
bnQgPSAwCn07CgplbnVtIHsKICBnZXN0YWx0UG93ZXJNZ3JBdHRyID0gJ3Bvd3InLAogIGdlc3Rh
bHRQTWdyRXhpc3RzID0gMCwKICBnZXN0YWx0UE1nckNQVUlkbGUgPSAxLAogIGdlc3RhbHRQTWdy
U0NDID0gMiwKICBnZXN0YWx0UE1nclNvdW5kID0gMywKICBnZXN0YWx0UE1nckRpc3BhdGNoRXhp
c3RzID0gNCwKICBnZXN0YWx0UE1nclN1cHBvcnRzQVZQb3dlclN0YXRlQXRTbGVlcFdha2UgPSA1
Cn07CgplbnVtIHsKICBnZXN0YWx0UG93ZXJNZ3JWZXJzID0gJ3B3cnYnCn07CgoKCgoKCgplbnVt
IHsKICBnZXN0YWx0UFBDVG9vbGJveEF0dHIgPSAncHBjICcsCiAgZ2VzdGFsdFBQQ1Rvb2xib3hQ
cmVzZW50ID0gMHgwMDAwLAogIGdlc3RhbHRQUENTdXBwb3J0c1JlYWxUaW1lID0gMHgxMDAwLAog
IGdlc3RhbHRQUENTdXBwb3J0c0luY29taW5nID0gMHgwMDAxLAogIGdlc3RhbHRQUENTdXBwb3J0
c091dEdvaW5nID0gMHgwMDAyLAogIGdlc3RhbHRQUENTdXBwb3J0c1RDUF9JUCA9IDB4MDAwNCwK
ICBnZXN0YWx0UFBDU3VwcG9ydHNJbmNvbWluZ0FwcGxlVGFsayA9IDB4MDAxMCwKICBnZXN0YWx0
UFBDU3VwcG9ydHNJbmNvbWluZ1RDUF9JUCA9IDB4MDAyMCwKICBnZXN0YWx0UFBDU3VwcG9ydHNP
dXRnb2luZ0FwcGxlVGFsayA9IDB4MDEwMCwKICBnZXN0YWx0UFBDU3VwcG9ydHNPdXRnb2luZ1RD
UF9JUCA9IDB4MDIwMAp9OwoKCgoKCgplbnVtIHsKICBnZXN0YWx0UG93ZXJQQ1Byb2Nlc3NvckZl
YXR1cmVzID0gJ3BwY2YnLAogIGdlc3RhbHRQb3dlclBDSGFzR3JhcGhpY3NJbnN0cnVjdGlvbnMg
PSAwLAogIGdlc3RhbHRQb3dlclBDSGFzU1RGSVdYSW5zdHJ1Y3Rpb24gPSAxLAogIGdlc3RhbHRQ
b3dlclBDSGFzU3F1YXJlUm9vdEluc3RydWN0aW9ucyA9IDIsCiAgZ2VzdGFsdFBvd2VyUENIYXNE
Q0JBSW5zdHJ1Y3Rpb24gPSAzLAogIGdlc3RhbHRQb3dlclBDSGFzVmVjdG9ySW5zdHJ1Y3Rpb25z
ID0gNCwKICBnZXN0YWx0UG93ZXJQQ0hhc0RhdGFTdHJlYW1zID0gNSwKICBnZXN0YWx0UG93ZXJQ
Q0hhczY0Qml0U3VwcG9ydCA9IDYsCiAgZ2VzdGFsdFBvd2VyUENIYXNEQ0JUU3RyZWFtcyA9IDcs
CiAgZ2VzdGFsdFBvd2VyUENBU0FyY2hpdGVjdHVyZSA9IDgsCiAgZ2VzdGFsdFBvd2VyUENJZ25v
cmVzRENCU1QgPSA5Cn07CgplbnVtIHsKICBnZXN0YWx0UHJvY2Vzc29yVHlwZSA9ICdwcm9jJywK
ICBnZXN0YWx0NjgwMDAgPSAxLAogIGdlc3RhbHQ2ODAxMCA9IDIsCiAgZ2VzdGFsdDY4MDIwID0g
MywKICBnZXN0YWx0NjgwMzAgPSA0LAogIGdlc3RhbHQ2ODA0MCA9IDUKfTsKCmVudW0gewogIGdl
c3RhbHRTRFBQcm9tcHRWZXJzaW9uID0gJ3BycHYnCn07CgplbnVtIHsKICBnZXN0YWx0UGFyaXR5
QXR0ciA9ICdwcnR5JywKICBnZXN0YWx0SGFzUGFyaXR5Q2FwYWJpbGl0eSA9IDAsCiAgZ2VzdGFs
dFBhcml0eUVuYWJsZWQgPSAxCn07CgplbnVtIHsKICBnZXN0YWx0UUQzRFZlcnNpb24gPSAncTN2
ICcKfTsKCmVudW0gewogIGdlc3RhbHRRRDNEVmlld2VyID0gJ3EzdmMnLAogIGdlc3RhbHRRRDNE
Vmlld2VyUHJlc2VudCA9IDAKfTsKIyAxNzQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9HZXN0YWx0LmgiIDMKZW51bSB7CiAgZ2VzdGFsdFF1aWNrZHJhd1ZlcnNpb24gPSAncWQg
ICcsCiAgZ2VzdGFsdE9yaWdpbmFsUUQgPSAweDAwMDAsCiAgZ2VzdGFsdDhCaXRRRCA9IDB4MDEw
MCwKICBnZXN0YWx0MzJCaXRRRCA9IDB4MDIwMCwKICBnZXN0YWx0MzJCaXRRRDExID0gMHgwMjAx
LAogIGdlc3RhbHQzMkJpdFFEMTIgPSAweDAyMjAsCiAgZ2VzdGFsdDMyQml0UUQxMyA9IDB4MDIz
MCwKICBnZXN0YWx0QWxsZWdyb1FEID0gMHgwMjUwLAogIGdlc3RhbHRNYWNPU1hRRCA9IDB4MDMw
MAp9OwoKZW51bSB7CiAgZ2VzdGFsdFFEM0QgPSAncWQzZCcsCiAgZ2VzdGFsdFFEM0RQcmVzZW50
ID0gMAp9OwojIDE3NzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0dlc3RhbHQu
aCIgMwplbnVtIHsKICBnZXN0YWx0R1hWZXJzaW9uID0gJ3FkZ3gnCn07CgplbnVtIHsKICBnZXN0
YWx0UXVpY2tkcmF3RmVhdHVyZXMgPSAncWRydycsCiAgZ2VzdGFsdEhhc0NvbG9yID0gMCwKICBn
ZXN0YWx0SGFzRGVlcEdXb3JsZHMgPSAxLAogIGdlc3RhbHRIYXNEaXJlY3RQaXhNYXBzID0gMiwK
ICBnZXN0YWx0SGFzR3JheWlzaFRleHRPciA9IDMsCiAgZ2VzdGFsdFN1cHBvcnRzTWlycm9yaW5n
ID0gNCwKICBnZXN0YWx0UURIYXNMb25nUm93Qnl0ZXMgPSA1Cn07CgplbnVtIHsKICBnZXN0YWx0
UURUZXh0VmVyc2lvbiA9ICdxZHR4JywKICBnZXN0YWx0T3JpZ2luYWxRRFRleHQgPSAweDAwMDAs
CiAgZ2VzdGFsdEFsbGVncm9RRFRleHQgPSAweDAxMDAsCiAgZ2VzdGFsdE1hY09TWFFEVGV4dCA9
IDB4MDIwMAp9OwoKZW51bSB7CiAgZ2VzdGFsdFFEVGV4dEZlYXR1cmVzID0gJ3FkdGYnLAogIGdl
c3RhbHRXU0lJU3VwcG9ydCA9IDAsCiAgZ2VzdGFsdFNiaXRGb250U3VwcG9ydCA9IDEsCiAgZ2Vz
dGFsdEFudGlBbGlhc2VkVGV4dEF2YWlsYWJsZSA9IDIsCiAgZ2VzdGFsdE9GQTJhdmFpbGFibGUg
PSAzLAogIGdlc3RhbHRDcmVhdGVzQWxpYXNGb250UnNyYyA9IDQsCiAgZ2VzdGFsdE5hdGl2ZVR5
cGUxRm9udFN1cHBvcnQgPSA1LAogIGdlc3RhbHRDYW5Vc2VDR1RleHRSZW5kZXJpbmcgPSA2Cn07
CgoKZW51bSB7CiAgZ2VzdGFsdFF1aWNrVGltZUNvbmZlcmVuY2luZ0luZm8gPSAncXRjaScKfTsK
CmVudW0gewogIGdlc3RhbHRRdWlja1RpbWVWZXJzaW9uID0gJ3F0aW0nLAogIGdlc3RhbHRRdWlj
a1RpbWUgPSAncXRpbScKfTsKCmVudW0gewogIGdlc3RhbHRRdWlja1RpbWVGZWF0dXJlcyA9ICdx
dHJzJywKICBnZXN0YWx0UFBDUXVpY2tUaW1lTGliUHJlc2VudCA9IDAKfTsKCmVudW0gewogIGdl
c3RhbHRRdWlja1RpbWVTdHJlYW1pbmdGZWF0dXJlcyA9ICdxdHNmJwp9OwoKZW51bSB7CiAgZ2Vz
dGFsdFF1aWNrVGltZVN0cmVhbWluZ1ZlcnNpb24gPSAncXRzdCcKfTsKCmVudW0gewogIGdlc3Rh
bHRRdWlja1RpbWVUaHJlYWRTYWZlRmVhdHVyZXNBdHRyID0gJ3F0dGgnLAogIGdlc3RhbHRRdWlj
a1RpbWVUaHJlYWRTYWZlSUNNID0gMCwKICBnZXN0YWx0UXVpY2tUaW1lVGhyZWFkU2FmZU1vdmll
VG9vbGJveCA9IDEsCiAgZ2VzdGFsdFF1aWNrVGltZVRocmVhZFNhZmVNb3ZpZUltcG9ydCA9IDIs
CiAgZ2VzdGFsdFF1aWNrVGltZVRocmVhZFNhZmVNb3ZpZUV4cG9ydCA9IDMsCiAgZ2VzdGFsdFF1
aWNrVGltZVRocmVhZFNhZmVHcmFwaGljc0ltcG9ydCA9IDQsCiAgZ2VzdGFsdFF1aWNrVGltZVRo
cmVhZFNhZmVHcmFwaGljc0V4cG9ydCA9IDUsCiAgZ2VzdGFsdFF1aWNrVGltZVRocmVhZFNhZmVN
b3ZpZVBsYXliYWNrID0gNgp9OwoKZW51bSB7CiAgZ2VzdGFsdFFUVlJNZ3JBdHRyID0gJ3F0dnIn
LAogIGdlc3RhbHRRVFZSTWdyUHJlc2VudCA9IDAsCiAgZ2VzdGFsdFFUVlJPYmpNb3ZpZXNQcmVz
ZW50ID0gMSwKICBnZXN0YWx0UVRWUkN5bGluZGVyUGFub3NQcmVzZW50ID0gMiwKICBnZXN0YWx0
UVRWUkN1YmljUGFub3NQcmVzZW50ID0gMwp9OwoKZW51bSB7CiAgZ2VzdGFsdFFUVlJNZ3JWZXJz
ID0gJ3F0dnYnCn07CiMgMTg2MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvR2Vz
dGFsdC5oIiAzCmVudW0gewogIGdlc3RhbHRQaHlzaWNhbFJBTVNpemUgPSAncmFtICcKfTsKCmVu
dW0gewogIGdlc3RhbHRQaHlzaWNhbFJBTVNpemVJbk1lZ2FieXRlcyA9ICdyYW1tJwp9OwoKZW51
bSB7CiAgZ2VzdGFsdFJCVkFkZHIgPSAncmJ2ICcKfTsKCmVudW0gewogIGdlc3RhbHRST01TaXpl
ID0gJ3JvbSAnCn07CgplbnVtIHsKICBnZXN0YWx0Uk9NVmVyc2lvbiA9ICdyb212Jwp9OwoKZW51
bSB7CiAgZ2VzdGFsdFJlc291cmNlTWdyQXR0ciA9ICdyc3JjJywKICBnZXN0YWx0UGFydGlhbFJz
cmNzID0gMCwKICBnZXN0YWx0SGFzUmVzb3VyY2VPdmVycmlkZXMgPSAxCn07CgplbnVtIHsKICBn
ZXN0YWx0UmVzb3VyY2VNZ3JCdWdGaXhlc0F0dHJzID0gJ3JtYmcnLAogIGdlc3RhbHRSTUZvcmNl
U3lzSGVhcFJvbGxlZEluID0gMCwKICBnZXN0YWx0Uk1GYWtlQXBwbGVNZW51SXRlbXNSb2xsZWRJ
biA9IDEsCiAgZ2VzdGFsdFNhbml0eUNoZWNrUmVzb3VyY2VGaWxlcyA9IDIsCiAgZ2VzdGFsdFN1
cHBvcnRzRlNwUmVzb3VyY2VGaWxlQWxyZWFkeU9wZW5CaXQgPSAzLAogIGdlc3RhbHRSTVN1cHBv
cnRzRlNDYWxscyA9IDQsCiAgZ2VzdGFsdFJNVHlwZUluZGV4T3JkZXJpbmdSZXZlcnNlID0gOAp9
OwoKCmVudW0gewogIGdlc3RhbHRSZWFsdGltZU1nckF0dHIgPSAncnRtcicsCiAgZ2VzdGFsdFJl
YWx0aW1lTWdyUHJlc2VudCA9IDAKfTsKCgplbnVtIHsKICBnZXN0YWx0U2FmZU9GQXR0ciA9ICdz
YWZlJywKICBnZXN0YWx0Vk1aZXJvc1BhZ2VzQml0ID0gMCwKICBnZXN0YWx0SW5pdEhlYXBaZXJv
c091dEhlYXBzQml0ID0gMSwKICBnZXN0YWx0TmV3SGFuZGxlUmV0dXJuc1plcm9lZE1lbW9yeUJp
dCA9IDIsCiAgZ2VzdGFsdE5ld1B0clJldHVybnNaZXJvZWRNZW1vcnlCaXQgPSAzLAogIGdlc3Rh
bHRGaWxlQWxsb2NhdGlvblplcm9lZEJsb2Nrc0JpdCA9IDQKfTsKCgplbnVtIHsKICBnZXN0YWx0
U0NDUmVhZEFkZHIgPSAnc2NjcicKfTsKCmVudW0gewogIGdlc3RhbHRTQ0NXcml0ZUFkZHIgPSAn
c2NjdycKfTsKCmVudW0gewogIGdlc3RhbHRTY3JhcE1nckF0dHIgPSAnc2NyYScsCiAgZ2VzdGFs
dFNjcmFwTWdyVHJhbnNsYXRpb25Bd2FyZSA9IDAKfTsKCmVudW0gewogIGdlc3RhbHRTY3JpcHRN
Z3JWZXJzaW9uID0gJ3NjcmknCn07CgplbnVtIHsKICBnZXN0YWx0U2NyaXB0Q291bnQgPSAnc2Ny
IycKfTsKCmVudW0gewogIGdlc3RhbHRTQ1NJID0gJ3Njc2knLAogIGdlc3RhbHRBc3luY1NDU0kg
PSAwLAogIGdlc3RhbHRBc3luY1NDU0lJTlJPTSA9IDEsCiAgZ2VzdGFsdFNDU0lTbG90Qm9vdCA9
IDIsCiAgZ2VzdGFsdFNDU0lQb2xsU0lIID0gMwp9OwoKZW51bSB7CiAgZ2VzdGFsdENvbnRyb2xT
dHJpcEF0dHIgPSAnc2RldicsCiAgZ2VzdGFsdENvbnRyb2xTdHJpcEV4aXN0cyA9IDAsCiAgZ2Vz
dGFsdENvbnRyb2xTdHJpcFZlcnNpb25GaXhlZCA9IDEsCiAgZ2VzdGFsdENvbnRyb2xTdHJpcFVz
ZXJGb250ID0gMiwKICBnZXN0YWx0Q29udHJvbFN0cmlwVXNlckhvdEtleSA9IDMKfTsKCmVudW0g
ewogIGdlc3RhbHRTRFBTdGFuZGFyZERpcmVjdG9yeVZlcnNpb24gPSAnc2R2cicKfTsKCmVudW0g
ewogIGdlc3RhbHRTZXJpYWxBdHRyID0gJ3NlciAnLAogIGdlc3RhbHRIYXNHUElhVG9EQ0RhID0g
MCwKICBnZXN0YWx0SGFzR1BJYVRvUlR4Q2EgPSAxLAogIGdlc3RhbHRIYXNHUEliVG9EQ0RiID0g
MiwKICBnZXN0YWx0SGlkZVBvcnRBID0gMywKICBnZXN0YWx0SGlkZVBvcnRCID0gNCwKICBnZXN0
YWx0UG9ydEFEaXNhYmxlZCA9IDUsCiAgZ2VzdGFsdFBvcnRCRGlzYWJsZWQgPSA2Cn07CgplbnVt
IHsKICBnZXN0YWx0U2h1dGRvd25BdHRyaWJ1dGVzID0gJ3NodXQnLAogIGdlc3RhbHRTaHV0ZG93
bkhhc3NkT25Cb290Vm9sVW5tb3VudCA9IDAKfTsKCmVudW0gewogIGdlc3RhbHROdUJ1c0Nvbm5l
Y3RvcnMgPSAnc2x0YycKfTsKCmVudW0gewogIGdlc3RhbHRTbG90QXR0ciA9ICdzbG90JywKICBn
ZXN0YWx0U2xvdE1nckV4aXN0cyA9IDAsCiAgZ2VzdGFsdE51QnVzUHJlc2VudCA9IDEsCiAgZ2Vz
dGFsdFNFU2xvdFByZXNlbnQgPSAyLAogIGdlc3RhbHRTRTMwU2xvdFByZXNlbnQgPSAzLAogIGdl
c3RhbHRQb3J0YWJsZVNsb3RQcmVzZW50ID0gNAp9OwoKZW51bSB7CiAgZ2VzdGFsdEZpcnN0U2xv
dE51bWJlciA9ICdzbHQxJwp9OwoKZW51bSB7CiAgZ2VzdGFsdFNvdW5kQXR0ciA9ICdzbmQgJywK
ICBnZXN0YWx0U3RlcmVvQ2FwYWJpbGl0eSA9IDAsCiAgZ2VzdGFsdFN0ZXJlb01peGluZyA9IDEs
CiAgZ2VzdGFsdFNvdW5kSU9NZ3JQcmVzZW50ID0gMywKICBnZXN0YWx0QnVpbHRJblNvdW5kSW5w
dXQgPSA0LAogIGdlc3RhbHRIYXNTb3VuZElucHV0RGV2aWNlID0gNSwKICBnZXN0YWx0UGxheUFu
ZFJlY29yZCA9IDYsCiAgZ2VzdGFsdDE2Qml0U291bmRJTyA9IDcsCiAgZ2VzdGFsdFN0ZXJlb0lu
cHV0ID0gOCwKICBnZXN0YWx0TGluZUxldmVsSW5wdXQgPSA5LAoKICBnZXN0YWx0U25kUGxheURv
dWJsZUJ1ZmZlciA9IDEwLAogIGdlc3RhbHRNdWx0aUNoYW5uZWxzID0gMTEsCiAgZ2VzdGFsdDE2
Qml0QXVkaW9TdXBwb3J0ID0gMTIKfTsKCmVudW0gewogIGdlc3RhbHRTcGxpdE9TQXR0ciA9ICdz
cG9zJywKICBnZXN0YWx0U3BsaXRPU0Jvb3REcml2ZUlzTmV0d29ya1ZvbHVtZSA9IDAsCiAgZ2Vz
dGFsdFNwbGl0T1NBd2FyZSA9IDEsCiAgZ2VzdGFsdFNwbGl0T1NFbmFibGVyVm9sdW1lSXNEaWZm
ZXJlbnRGcm9tQm9vdFZvbHVtZSA9IDIsCiAgZ2VzdGFsdFNwbGl0T1NNYWNoaW5lTmFtZVNldFRv
TmV0d29ya05hbWVUZW1wID0gMywKICBnZXN0YWx0U3BsaXRPU01hY2hpbmVOYW1lU3RhcnR1cERp
c2tJc05vblBlcnNpc3RlbnQgPSA1Cn07CgplbnVtIHsKICBnZXN0YWx0U01QU1BTZW5kTGV0dGVy
VmVyc2lvbiA9ICdzcHNsJwp9OwoKZW51bSB7CiAgZ2VzdGFsdFNwZWVjaFJlY29nbml0aW9uQXR0
ciA9ICdzcnRhJywKICBnZXN0YWx0RGVza3RvcFNwZWVjaFJlY29nbml0aW9uID0gMSwKICBnZXN0
YWx0VGVsZXBob25lU3BlZWNoUmVjb2duaXRpb24gPSAyCn07CgplbnVtIHsKICBnZXN0YWx0U3Bl
ZWNoUmVjb2duaXRpb25WZXJzaW9uID0gJ3NydGInCn07CgplbnVtIHsKICBnZXN0YWx0U29mdHdh
cmVWZW5kb3JDb2RlID0gJ3NyYWQnLAogIGdlc3RhbHRTb2Z0d2FyZVZlbmRvckFwcGxlID0gJ0Fw
cGwnLAogIGdlc3RhbHRTb2Z0d2FyZVZlbmRvckxpY2Vuc2VlID0gJ0xjbnMnCn07CgplbnVtIHsK
ICBnZXN0YWx0U3RhbmRhcmRGaWxlQXR0ciA9ICdzdGRmJywKICBnZXN0YWx0U3RhbmRhcmRGaWxl
NTggPSAwLAogIGdlc3RhbHRTdGFuZGFyZEZpbGVUcmFuc2xhdGlvbkF3YXJlID0gMSwKICBnZXN0
YWx0U3RhbmRhcmRGaWxlSGFzQ29sb3JJY29ucyA9IDIsCiAgZ2VzdGFsdFN0YW5kYXJkRmlsZVVz
ZUdlbmVyaWNJY29ucyA9IDMsCiAgZ2VzdGFsdFN0YW5kYXJkRmlsZUhhc0R5bmFtaWNWb2x1bWVB
bGxvY2F0aW9uID0gNAp9OwoKZW51bSB7CiAgZ2VzdGFsdFN5c0FyY2hpdGVjdHVyZSA9ICdzeXNh
JywKICBnZXN0YWx0NjhrID0gMSwKICBnZXN0YWx0UG93ZXJQQyA9IDIsCiAgZ2VzdGFsdEludGVs
ID0gMTAKfTsKCmVudW0gewogIGdlc3RhbHRTeXN0ZW1VcGRhdGVWZXJzaW9uID0gJ3N5c3UnCn07
CiMgMjA4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvR2VzdGFsdC5oIiAzCmVu
dW0gewogIGdlc3RhbHRTeXN0ZW1WZXJzaW9uID0gJ3N5c3YnLAogIGdlc3RhbHRTeXN0ZW1WZXJz
aW9uTWFqb3IgPSAnc3lzMScsCiAgZ2VzdGFsdFN5c3RlbVZlcnNpb25NaW5vciA9ICdzeXMyJywK
ICBnZXN0YWx0U3lzdGVtVmVyc2lvbkJ1Z0ZpeCA9ICdzeXMzJwp9OwoKZW51bSB7CiAgZ2VzdGFs
dFRvb2xib3hUYWJsZSA9ICd0YnR0Jwp9OwoKZW51bSB7CiAgZ2VzdGFsdFRleHRFZGl0VmVyc2lv
biA9ICd0ZSAgJywKICBnZXN0YWx0VEUxID0gMSwKICBnZXN0YWx0VEUyID0gMiwKICBnZXN0YWx0
VEUzID0gMywKICBnZXN0YWx0VEU0ID0gNCwKICBnZXN0YWx0VEU1ID0gNQp9OwoKZW51bSB7CiAg
Z2VzdGFsdFRFNiA9IDYKfTsKCmVudW0gewogIGdlc3RhbHRURUF0dHIgPSAndGVhdCcsCiAgZ2Vz
dGFsdFRFSGFzR2V0SGlsaXRlUmduID0gMCwKICBnZXN0YWx0VEVTdXBwb3J0c0lubGluZUlucHV0
ID0gMSwKICBnZXN0YWx0VEVTdXBwb3J0c1RleHRPYmplY3RzID0gMiwKICBnZXN0YWx0VEVIYXNX
aGl0ZUJhY2tncm91bmQgPSAzCn07CgplbnVtIHsKICBnZXN0YWx0VGVsZU1nckF0dHIgPSAndGVs
ZScsCiAgZ2VzdGFsdFRlbGVNZ3JQcmVzZW50ID0gMCwKICBnZXN0YWx0VGVsZU1nclBvd2VyUENT
dXBwb3J0ID0gMSwKICBnZXN0YWx0VGVsZU1nclNvdW5kU3RyZWFtcyA9IDIsCiAgZ2VzdGFsdFRl
bGVNZ3JBdXRvQW5zd2VyID0gMywKICBnZXN0YWx0VGVsZU1nckluZEhhbmRzZXQgPSA0LAogIGdl
c3RhbHRUZWxlTWdyU2lsZW5jZURldGVjdCA9IDUsCiAgZ2VzdGFsdFRlbGVNZ3JOZXdURUxOZXdT
dXBwb3J0ID0gNgp9OwoKZW51bSB7CiAgZ2VzdGFsdFRlcm1NZ3JBdHRyID0gJ3Rlcm0nLAogIGdl
c3RhbHRUZXJtTWdyUHJlc2VudCA9IDAsCiAgZ2VzdGFsdFRlcm1NZ3JFcnJvclN0cmluZyA9IDIK
fTsKCmVudW0gewogIGdlc3RhbHRUaHJlYWRNZ3JBdHRyID0gJ3RoZHMnLAogIGdlc3RhbHRUaHJl
YWRNZ3JQcmVzZW50ID0gMCwKICBnZXN0YWx0U3BlY2lmaWNNYXRjaFN1cHBvcnQgPSAxLAogIGdl
c3RhbHRUaHJlYWRzTGlicmFyeVByZXNlbnQgPSAyCn07CgplbnVtIHsKICBnZXN0YWx0VGltZU1n
clZlcnNpb24gPSAndG1ncicsCiAgZ2VzdGFsdFN0YW5kYXJkVGltZU1nciA9IDEsCiAgZ2VzdGFs
dFJldmlzZWRUaW1lTWdyID0gMiwKICBnZXN0YWx0RXh0ZW5kZWRUaW1lTWdyID0gMywKICBnZXN0
YWx0TmF0aXZlVGltZU1nciA9IDQKfTsKCmVudW0gewogIGdlc3RhbHRUU01URVZlcnNpb24gPSAn
dG1UVicsCiAgZ2VzdGFsdFRTTVRFMSA9IDB4MDEwMCwKICBnZXN0YWx0VFNNVEUxNSA9IDB4MDE1
MCwKICBnZXN0YWx0VFNNVEUxNTIgPSAweDAxNTIKfTsKCmVudW0gewogIGdlc3RhbHRUU01URUF0
dHIgPSAndG1URScsCiAgZ2VzdGFsdFRTTVRFUHJlc2VudCA9IDAsCiAgZ2VzdGFsdFRTTVRFID0g
MAp9OwoKZW51bSB7CiAgZ2VzdGFsdEFWTFRyZWVBdHRyID0gJ3RyZWUnLAogIGdlc3RhbHRBVkxU
cmVlUHJlc2VudEJpdCA9IDAsCiAgZ2VzdGFsdEFWTFRyZWVTdXBwb3J0c0hhbmRsZUJhc2VkVHJl
ZUJpdCA9IDEsCiAgZ2VzdGFsdEFWTFRyZWVTdXBwb3J0c1RyZWVMb2NraW5nQml0ID0gMgp9OwoK
ZW51bSB7CiAgZ2VzdGFsdEFMTUF0dHIgPSAndHJpcCcsCiAgZ2VzdGFsdEFMTVByZXNlbnQgPSAw
LAogIGdlc3RhbHRBTE1IYXNTRkdyb3VwID0gMSwKICBnZXN0YWx0QUxNSGFzQ0ZNU3VwcG9ydCA9
IDIsCiAgZ2VzdGFsdEFMTUhhc1Jlc2Nhbk5vdGlmaWVycyA9IDMKfTsKCmVudW0gewogIGdlc3Rh
bHRBTE1IYXNTRkxvY2F0aW9uID0gZ2VzdGFsdEFMTUhhc1NGR3JvdXAKfTsKCmVudW0gewogIGdl
c3RhbHRUU01nclZlcnNpb24gPSAndHNtdicsCiAgZ2VzdGFsdFRTTWdyMTUgPSAweDAxNTAsCiAg
Z2VzdGFsdFRTTWdyMjAgPSAweDAyMDAsCiAgZ2VzdGFsdFRTTWdyMjIgPSAweDAyMjAsCiAgZ2Vz
dGFsdFRTTWdyMjMgPSAweDAyMzAKfTsKCmVudW0gewogIGdlc3RhbHRUU01nckF0dHIgPSAndHNt
YScsCiAgZ2VzdGFsdFRTTURpc3BsYXlNZ3JBd2FyZUJpdCA9IDAsCiAgZ2VzdGFsdFRTTWRvZXNU
U01URUJpdCA9IDEKfTsKCmVudW0gewogIGdlc3RhbHRTcGVlY2hBdHRyID0gJ3R0c2MnLAogIGdl
c3RhbHRTcGVlY2hNZ3JQcmVzZW50ID0gMCwKICBnZXN0YWx0U3BlZWNoSGFzUFBDR2x1ZSA9IDEK
fTsKCmVudW0gewogIGdlc3RhbHRUVkF0dHIgPSAndHYgICcsCiAgZ2VzdGFsdEhhc1RWVHVuZXIg
PSAwLAogIGdlc3RhbHRIYXNTb3VuZEZhZGVyID0gMSwKICBnZXN0YWx0SGFzSFdDbG9zZWRDYXB0
aW9uaW5nID0gMiwKICBnZXN0YWx0SGFzSVJSZW1vdGUgPSAzLAogIGdlc3RhbHRIYXNWaWREZWNv
ZGVyU2NhbGVyID0gNCwKICBnZXN0YWx0SGFzU3RlcmVvRGVjb2RlciA9IDUsCiAgZ2VzdGFsdEhh
c1NlcmlhbEZhZGVyID0gNiwKICBnZXN0YWx0SGFzRk1UdW5lciA9IDcsCiAgZ2VzdGFsdEhhc1N5
c3RlbUlSRnVuY3Rpb24gPSA4LAogIGdlc3RhbHRJUkRpc2FibGVkID0gOSwKICBnZXN0YWx0SU5l
ZWRJUlBvd2VyT2ZmQ29uZmlybSA9IDEwLAogIGdlc3RhbHRIYXNab29tZWRWaWRlbyA9IDExCn07
CgoKZW51bSB7CiAgZ2VzdGFsdEFUU1VWZXJzaW9uID0gJ3Vpc3YnLAogIGdlc3RhbHRPcmlnaW5h
bEFUU1VWZXJzaW9uID0gKDEgPDwgMTYpLAogIGdlc3RhbHRBVFNVVXBkYXRlMSA9ICgyIDw8IDE2
KSwKICBnZXN0YWx0QVRTVVVwZGF0ZTIgPSAoMyA8PCAxNiksCiAgZ2VzdGFsdEFUU1VVcGRhdGUz
ID0gKDQgPDwgMTYpLAogIGdlc3RhbHRBVFNVVXBkYXRlNCA9ICg1IDw8IDE2KSwKICBnZXN0YWx0
QVRTVVVwZGF0ZTUgPSAoNiA8PCAxNiksCiAgZ2VzdGFsdEFUU1VVcGRhdGU2ID0gKDcgPDwgMTYp
LAogIGdlc3RhbHRBVFNVVXBkYXRlNyA9ICg4IDw8IDE2KQp9OwoKZW51bSB7CiAgZ2VzdGFsdEFU
U1VGZWF0dXJlcyA9ICd1aXNmJywKICBnZXN0YWx0QVRTVVRyYWNraW5nRmVhdHVyZSA9IDB4MDAw
MDAwMDEsCiAgZ2VzdGFsdEFUU1VNZW1vcnlGZWF0dXJlID0gMHgwMDAwMDAwMSwKICBnZXN0YWx0
QVRTVUZhbGxiYWNrc0ZlYXR1cmUgPSAweDAwMDAwMDAxLAogIGdlc3RhbHRBVFNVR2x5cGhCb3Vu
ZHNGZWF0dXJlID0gMHgwMDAwMDAwMSwKICBnZXN0YWx0QVRTVUxpbmVDb250cm9sRmVhdHVyZSA9
IDB4MDAwMDAwMDEsCiAgZ2VzdGFsdEFUU1VMYXlvdXRDcmVhdGVBbmRDb3B5RmVhdHVyZSA9IDB4
MDAwMDAwMDEsCiAgZ2VzdGFsdEFUU1VMYXlvdXRDYWNoZUNsZWFyRmVhdHVyZSA9IDB4MDAwMDAw
MDEsCiAgZ2VzdGFsdEFUU1VUZXh0TG9jYXRvclVzYWdlRmVhdHVyZSA9IDB4MDAwMDAwMDIsCiAg
Z2VzdGFsdEFUU1VMb3dMZXZlbE9yaWdGZWF0dXJlcyA9IDB4MDAwMDAwMDQsCiAgZ2VzdGFsdEFU
U1VGYWxsYmFja3NPYmpGZWF0dXJlcyA9IDB4MDAwMDAwMDgsCiAgZ2VzdGFsdEFUU1VJZ25vcmVM
ZWFkaW5nRmVhdHVyZSA9IDB4MDAwMDAwMDgsCiAgZ2VzdGFsdEFUU1VCeUNoYXJhY3RlckNsdXN0
ZXJGZWF0dXJlID0gMHgwMDAwMDAxMCwKICBnZXN0YWx0QVRTVUFzY2VudERlc2NlbnRDb250cm9s
c0ZlYXR1cmUgPSAweDAwMDAwMDEwLAogIGdlc3RhbHRBVFNVSGlnaGxpZ2h0SW5hY3RpdmVUZXh0
RmVhdHVyZSA9IDB4MDAwMDAwMTAsCiAgZ2VzdGFsdEFUU1VQb3NpdGlvblRvQ3Vyc29yRmVhdHVy
ZSA9IDB4MDAwMDAwMTAsCiAgZ2VzdGFsdEFUU1VCYXRjaEJyZWFrTGluZXNGZWF0dXJlID0gMHgw
MDAwMDAxMCwKICBnZXN0YWx0QVRTVVRhYlN1cHBvcnRGZWF0dXJlID0gMHgwMDAwMDAxMCwKICBn
ZXN0YWx0QVRTVURpcmVjdEFjY2VzcyA9IDB4MDAwMDAwMTAsCiAgZ2VzdGFsdEFUU1VEZWNpbWFs
VGFiRmVhdHVyZSA9IDB4MDAwMDAwMjAsCiAgZ2VzdGFsdEFUU1VCaURpQ3Vyc29yUG9zaXRpb25G
ZWF0dXJlID0gMHgwMDAwMDAyMCwKICBnZXN0YWx0QVRTVU5lYXJlc3RDaGFyTGluZUJyZWFrRmVh
dHVyZSA9IDB4MDAwMDAwMjAsCiAgZ2VzdGFsdEFUU1VIaWdobGlnaHRDb2xvckNvbnRyb2xGZWF0
dXJlID0gMHgwMDAwMDAyMCwKICBnZXN0YWx0QVRTVVVuZGVybGluZU9wdGlvbnNTdHlsZUZlYXR1
cmUgPSAweDAwMDAwMDIwLAogIGdlc3RhbHRBVFNVU3RyaWtlVGhyb3VnaFN0eWxlRmVhdHVyZSA9
IDB4MDAwMDAwMjAsCiAgZ2VzdGFsdEFUU1VEcm9wU2hhZG93U3R5bGVGZWF0dXJlID0gMHgwMDAw
MDAyMAp9OwoKZW51bSB7CiAgZ2VzdGFsdFVTQkF0dHIgPSAndXNiICcsCiAgZ2VzdGFsdFVTQlBy
ZXNlbnQgPSAwLAogIGdlc3RhbHRVU0JIYXNJc29jaCA9IDEKfTsKCmVudW0gewogIGdlc3RhbHRV
U0JWZXJzaW9uID0gJ3VzYnYnCn07CgplbnVtIHsKICBnZXN0YWx0VmVyc2lvbiA9ICd2ZXJzJywK
ICBnZXN0YWx0VmFsdWVJbXBsZW1lbnRlZFZlcnMgPSA1Cn07CgplbnVtIHsKICBnZXN0YWx0VklB
MUFkZHIgPSAndmlhMScKfTsKCmVudW0gewogIGdlc3RhbHRWSUEyQWRkciA9ICd2aWEyJwp9OwoK
ZW51bSB7CiAgZ2VzdGFsdFZNQXR0ciA9ICd2bSAgJywKICBnZXN0YWx0Vk1QcmVzZW50ID0gMCwK
ICBnZXN0YWx0Vk1IYXNMb2NrTWVtb3J5Rm9yT3V0cHV0ID0gMSwKICBnZXN0YWx0Vk1GaWxlbWFw
cGluZ09uID0gMywKICBnZXN0YWx0Vk1IYXNQYWdpbmdDb250cm9sID0gNAp9OwoKZW51bSB7CiAg
Z2VzdGFsdFZNSW5mb1R5cGUgPSAndm1pbicsCgogIGdlc3RhbHRWTUluZm9TaXplU3RvcmFnZVR5
cGUgPSAwLAogIGdlc3RhbHRWTUluZm9TaXplVHlwZSA9IDEsCiAgZ2VzdGFsdFZNSW5mb1NpbXBs
ZVR5cGUgPSAyLAogIGdlc3RhbHRWTUluZm9Ob25lVHlwZSA9IDMKfTsKCmVudW0gewogIGdlc3Rh
bHRWTUJhY2tpbmdTdG9yZUZpbGVSZWZOdW0gPSAndm1icycKfTsKCgoKZW51bSB7CiAgZ2VzdGFs
dEFMTVZlcnMgPSAnd2FsaycKfTsKCmVudW0gewogIGdlc3RhbHRXaW5kb3dNZ3JBdHRyID0gJ3dp
bmQnLAogIGdlc3RhbHRXaW5kb3dNZ3JQcmVzZW50ID0gKDFMIDw8IDApLAoKCiAgZ2VzdGFsdFdp
bmRvd01nclByZXNlbnRCaXQgPSAwLAogIGdlc3RhbHRFeHRlbmRlZFdpbmRvd0F0dHJpYnV0ZXMg
PSAxLAogIGdlc3RhbHRFeHRlbmRlZFdpbmRvd0F0dHJpYnV0ZXNCaXQgPSAxLAogIGdlc3RhbHRI
YXNGbG9hdGluZ1dpbmRvd3MgPSAyLAogIGdlc3RhbHRIYXNGbG9hdGluZ1dpbmRvd3NCaXQgPSAy
LAogIGdlc3RhbHRIYXNXaW5kb3dCdWZmZXJpbmcgPSAzLAogIGdlc3RhbHRIYXNXaW5kb3dCdWZm
ZXJpbmdCaXQgPSAzLAogIGdlc3RhbHRXaW5kb3dMaXZlUmVzaXplQml0ID0gNCwKICBnZXN0YWx0
V2luZG93TWluaW1pemVUb0RvY2tCaXQgPSA1LAogIGdlc3RhbHRIYXNXaW5kb3dTaGFkb3dzQml0
ID0gNiwKICBnZXN0YWx0U2hlZXRzQXJlV2luZG93TW9kYWxCaXQgPSA3LAogIGdlc3RhbHRGcm9u
dFdpbmRvd01heUJlSGlkZGVuQml0ID0gOCwKCiAgZ2VzdGFsdFdpbmRvd01nclByZXNlbnRNYXNr
ID0gKDFMIDw8IGdlc3RhbHRXaW5kb3dNZ3JQcmVzZW50Qml0KSwKICBnZXN0YWx0RXh0ZW5kZWRX
aW5kb3dBdHRyaWJ1dGVzTWFzayA9ICgxTCA8PCBnZXN0YWx0RXh0ZW5kZWRXaW5kb3dBdHRyaWJ1
dGVzQml0KSwKICBnZXN0YWx0SGFzRmxvYXRpbmdXaW5kb3dzTWFzayA9ICgxTCA8PCBnZXN0YWx0
SGFzRmxvYXRpbmdXaW5kb3dzQml0KSwKICBnZXN0YWx0SGFzV2luZG93QnVmZmVyaW5nTWFzayA9
ICgxTCA8PCBnZXN0YWx0SGFzV2luZG93QnVmZmVyaW5nQml0KSwKICBnZXN0YWx0V2luZG93TGl2
ZVJlc2l6ZU1hc2sgPSAoMUwgPDwgZ2VzdGFsdFdpbmRvd0xpdmVSZXNpemVCaXQpLAogIGdlc3Rh
bHRXaW5kb3dNaW5pbWl6ZVRvRG9ja01hc2sgPSAoMUwgPDwgZ2VzdGFsdFdpbmRvd01pbmltaXpl
VG9Eb2NrQml0KSwKICBnZXN0YWx0SGFzV2luZG93U2hhZG93c01hc2sgPSAoMUwgPDwgZ2VzdGFs
dEhhc1dpbmRvd1NoYWRvd3NCaXQpLAogIGdlc3RhbHRTaGVldHNBcmVXaW5kb3dNb2RhbE1hc2sg
PSAoMUwgPDwgZ2VzdGFsdFNoZWV0c0FyZVdpbmRvd01vZGFsQml0KSwKICBnZXN0YWx0RnJvbnRX
aW5kb3dNYXlCZUhpZGRlbk1hc2sgPSAoMUwgPDwgZ2VzdGFsdEZyb250V2luZG93TWF5QmVIaWRk
ZW5CaXQpCn07CgplbnVtIHsKICBnZXN0YWx0SGFzU2luZ2xlV2luZG93TW9kZUJpdCA9IDgsCiAg
Z2VzdGFsdEhhc1NpbmdsZVdpbmRvd01vZGVNYXNrID0gKDFMIDw8IGdlc3RhbHRIYXNTaW5nbGVX
aW5kb3dNb2RlQml0KQp9OwoKCgoKCgplbnVtIHsKICBnZXN0YWx0WDg2RmVhdHVyZXMgPSAneDg2
ZicsCiAgZ2VzdGFsdFg4Nkhhc0ZQVSA9IDAsCiAgZ2VzdGFsdFg4Nkhhc1ZNRSA9IDEsCiAgZ2Vz
dGFsdFg4Nkhhc0RFID0gMiwKICBnZXN0YWx0WDg2SGFzUFNFID0gMywKICBnZXN0YWx0WDg2SGFz
VFNDID0gNCwKICBnZXN0YWx0WDg2SGFzTVNSID0gNSwKICBnZXN0YWx0WDg2SGFzUEFFID0gNiwK
ICBnZXN0YWx0WDg2SGFzTUNFID0gNywKICBnZXN0YWx0WDg2SGFzQ1g4ID0gOCwKICBnZXN0YWx0
WDg2SGFzQVBJQyA9IDksCiAgZ2VzdGFsdFg4Nkhhc1NFUCA9IDExLAogIGdlc3RhbHRYODZIYXNN
VFJSID0gMTIsCiAgZ2VzdGFsdFg4Nkhhc1BHRSA9IDEzLAogIGdlc3RhbHRYODZIYXNNQ0EgPSAx
NCwKICBnZXN0YWx0WDg2SGFzQ01PViA9IDE1LAoKICBnZXN0YWx0WDg2SGFzUEFUID0gMTYsCiAg
Z2VzdGFsdFg4Nkhhc1BTRTM2ID0gMTcsCiAgZ2VzdGFsdFg4Nkhhc1BTTiA9IDE4LAogIGdlc3Rh
bHRYODZIYXNDTEZTSCA9IDE5LAogIGdlc3RhbHRYODZTZXJ2aWNlZDIwID0gMjAsCiAgZ2VzdGFs
dFg4Nkhhc0RTID0gMjEsCiAgZ2VzdGFsdFg4NlJlc0FDUEkgPSAyMiwKICBnZXN0YWx0WDg2SGFz
TU1YID0gMjMsCiAgZ2VzdGFsdFg4Nkhhc0ZYU1IgPSAyNCwKICBnZXN0YWx0WDg2SGFzU1NFID0g
MjUsCiAgZ2VzdGFsdFg4Nkhhc1NTRTIgPSAyNiwKICBnZXN0YWx0WDg2SGFzU1MgPSAyNywKICBn
ZXN0YWx0WDg2SGFzSFRUID0gMjgsCiAgZ2VzdGFsdFg4Nkhhc1RNID0gMjkKfTsKCgoKCmVudW0g
ewogIGdlc3RhbHRYODZBZGRpdGlvbmFsRmVhdHVyZXMgPSAneDg2YScsCiAgZ2VzdGFsdFg4Nkhh
c1NTRTMgPSAwLAogIGdlc3RhbHRYODZIYXNNT05JVE9SID0gMywKICBnZXN0YWx0WDg2SGFzRFND
UEwgPSA0LAogIGdlc3RhbHRYODZIYXNWTVggPSA1LAogIGdlc3RhbHRYODZIYXNTTVggPSA2LAog
IGdlc3RhbHRYODZIYXNFU1QgPSA3LAogIGdlc3RhbHRYODZIYXNUTTIgPSA4LAogIGdlc3RhbHRY
ODZIYXNTdXBwbGVtZW50YWxTU0UzID0gOSwKICBnZXN0YWx0WDg2SGFzQ0lEID0gMTAsCiAgZ2Vz
dGFsdFg4Nkhhc0NYMTYgPSAxMywKICBnZXN0YWx0WDg2SGFzeFRQUiA9IDE0Cn07CgplbnVtIHsK
ICBnZXN0YWx0VHJhbnNsYXRpb25BdHRyID0gJ3hsYXQnLAogIGdlc3RhbHRUcmFuc2xhdGlvbk1n
ckV4aXN0cyA9IDAsCiAgZ2VzdGFsdFRyYW5zbGF0aW9uTWdySGludE9yZGVyID0gMSwKICBnZXN0
YWx0VHJhbnNsYXRpb25QUENBdmFpbCA9IDIsCiAgZ2VzdGFsdFRyYW5zbGF0aW9uR2V0UGF0aEFQ
SUF2YWlsID0gMwp9OwoKZW51bSB7CiAgZ2VzdGFsdEV4dFRvb2xib3hUYWJsZSA9ICd4dHR0Jwp9
OwoKZW51bSB7CiAgZ2VzdGFsdFVTQlByaW50ZXJTaGFyaW5nVmVyc2lvbiA9ICd6YWsgJywKICBn
ZXN0YWx0VVNCUHJpbnRlclNoYXJpbmdWZXJzaW9uTWFzayA9IDB4MDAwMEZGRkYsCiAgZ2VzdGFs
dFVTQlByaW50ZXJTaGFyaW5nQXR0ciA9ICd6YWsgJywKICBnZXN0YWx0VVNCUHJpbnRlclNoYXJp
bmdBdHRyTWFzayA9IChpbnQpMHhGRkZGMDAwMCwKICBnZXN0YWx0VVNCUHJpbnRlclNoYXJpbmdB
dHRyUnVubmluZyA9IChpbnQpMHg4MDAwMDAwMCwKICBnZXN0YWx0VVNCUHJpbnRlclNoYXJpbmdB
dHRyQm9vdGVkID0gMHg0MDAwMDAwMAp9OwoKCmVudW0gewogIGdlc3RhbHRXb3JsZFNjcmlwdElJ
VmVyc2lvbiA9ICdkb3ViJywKICBnZXN0YWx0V29ybGRTY3JpcHRJSUF0dHIgPSAnd3NhdCcsCiAg
Z2VzdGFsdFdTSUlDYW5QcmludFdpdGhvdXRQckdlbmVyYWxCaXQgPSAwCn07CgoKCgoKCn0KIyA2
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAyIDMKCgoK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNNZW1vcnkuaCIgMSAzCiMg
MTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY01lbW9yeS5oIiAzCiNkZWZp
bmUgX19NQUNNRU1PUllfXyAKIyAzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
TWFjTWVtb3J5LmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgplbnVt
IHsKICBtYXhTaXplID0gMHg3RkZGRkZGMAp9OwoKCgoKCgoKI2RlZmluZSBfX01BQ19PU19YX01F
TU9SWV9NQU5BR0VSX0NMRUFOX18gMAoKCgplbnVtIHsKICBkZWZhdWx0UGh5c2ljYWxFbnRyeUNv
dW50ID0gOAp9OwoKZW51bSB7CgogIGtQYWdlSW5NZW1vcnkgPSAwLAogIGtQYWdlT25EaXNrID0g
MSwKICBrTm90UGFnZWQgPSAyCn07CgplbnVtIHsKCiAgazMyQml0SGVhcCA9IDEsCiAga05ld1N0
eWxlSGVhcCA9IDIsCiAga05ld0RlYnVnSGVhcCA9IDQKfTsKCgoKCgplbnVtIHsKICBrSGFuZGxl
SXNSZXNvdXJjZUJpdCA9IDUsCiAga0hhbmRsZVB1cmdlYWJsZUJpdCA9IDYsCiAga0hhbmRsZUxv
Y2tlZEJpdCA9IDcKfTsKCgplbnVtIHsKICBrSGFuZGxlSXNSZXNvdXJjZU1hc2sgPSAweDIwLAog
IGtIYW5kbGVQdXJnZWFibGVNYXNrID0gMHg0MCwKICBrSGFuZGxlTG9ja2VkTWFzayA9IDB4ODAK
fTsKIyAzMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY01lbW9yeS5oIiAz
CmV4dGVybiBPU0VycgpNZW1FcnJvcih2b2lkKSA7CiMgMzc3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9NYWNNZW1vcnkuaCIgMwpleHRlcm4gU0ludDE2CkxNR2V0TWVtRXJyKHZv
aWQpIDsKIyA0MDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY01lbW9yeS5o
IiAzCmV4dGVybiB2b2lkCkxNU2V0TWVtRXJyKFNJbnQxNiB2YWx1ZSkgOwojIDQ0NyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjTWVtb3J5LmgiIDMKZXh0ZXJuIEhhbmRsZQpO
ZXdIYW5kbGUoU2l6ZSBieXRlQ291bnQpIDsKIyA0ODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL01hY01lbW9yeS5oIiAzCmV4dGVybiBIYW5kbGUKTmV3SGFuZGxlQ2xlYXIoU2l6
ZSBieXRlQ291bnQpIDsKIyA1MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01h
Y01lbW9yeS5oIiAzCmV4dGVybiBIYW5kbGUKUmVjb3ZlckhhbmRsZShQdHIgcCkgOwojIDU2NCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjTWVtb3J5LmgiIDMKZXh0ZXJuIFB0
cgpOZXdQdHIoU2l6ZSBieXRlQ291bnQpIDsKIyA2MDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL01hY01lbW9yeS5oIiAzCmV4dGVybiBQdHIKTmV3UHRyQ2xlYXIoU2l6ZSBieXRl
Q291bnQpIDsKIyA2NzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY01lbW9y
eS5oIiAzCmV4dGVybiBIYW5kbGUKTmV3RW1wdHlIYW5kbGUodm9pZCkgOwojIDcyMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjTWVtb3J5LmgiIDMKZXh0ZXJuIHZvaWQKSExv
Y2soSGFuZGxlIGgpIDsKIyA3NTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01h
Y01lbW9yeS5oIiAzCmV4dGVybiB2b2lkCkhMb2NrSGkoSGFuZGxlIGgpIDsKIyA3ODcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY01lbW9yeS5oIiAzCmV4dGVybiB2b2lkCkhV
bmxvY2soSGFuZGxlIGgpIDsKIyA5MTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L01hY01lbW9yeS5oIiAzCmV4dGVybiBIYW5kbGUKVGVtcE5ld0hhbmRsZSgKICBTaXplIGxvZ2lj
YWxTaXplLAogIE9TRXJyICogcmVzdWx0Q29kZSkgOwojIDExODQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL01hY01lbW9yeS5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VQdHIoUHRy
IHApIDsKIyAxMjE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNNZW1vcnku
aCIgMwpleHRlcm4gU2l6ZQpHZXRQdHJTaXplKFB0ciBwKSA7CiMgMTIzMiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjTWVtb3J5LmgiIDMKZXh0ZXJuIHZvaWQKU2V0UHRyU2l6
ZSgKICBQdHIgcCwKICBTaXplIG5ld1NpemUpIDsKIyAxMjc0ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9NYWNNZW1vcnkuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlSGFuZGxlKEhh
bmRsZSBoKSA7CiMgMTMxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjTWVt
b3J5LmgiIDMKZXh0ZXJuIHZvaWQKU2V0SGFuZGxlU2l6ZSgKICBIYW5kbGUgaCwKICBTaXplIG5l
d1NpemUpIDsKIyAxMzUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNNZW1v
cnkuaCIgMwpleHRlcm4gU2l6ZQpHZXRIYW5kbGVTaXplKEhhbmRsZSBoKSA7CiMgMTM5NCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjTWVtb3J5LmgiIDMKZXh0ZXJuIHZvaWQK
UmVhbGxvY2F0ZUhhbmRsZSgKICBIYW5kbGUgaCwKICBTaXplIGJ5dGVDb3VudCkgOwojIDE0NDIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY01lbW9yeS5oIiAzCmV4dGVybiB2
b2lkCkVtcHR5SGFuZGxlKEhhbmRsZSBoKSA7CiMgMTQ2MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvTWFjTWVtb3J5LmgiIDMKZXh0ZXJuIHZvaWQKSFNldFJCaXQoSGFuZGxlIGgp
IDsKIyAxNDc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNNZW1vcnkuaCIg
MwpleHRlcm4gdm9pZApIQ2xyUkJpdChIYW5kbGUgaCkgOwojIDE1MzQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL01hY01lbW9yeS5oIiAzCmV4dGVybiBTSW50OApIR2V0U3RhdGUo
SGFuZGxlIGgpIDsKIyAxNTY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNN
ZW1vcnkuaCIgMwpleHRlcm4gdm9pZApIU2V0U3RhdGUoCiAgSGFuZGxlIGgsCiAgU0ludDggZmxh
Z3MpIDsKIyAxNjkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNNZW1vcnku
aCIgMwpleHRlcm4gT1NFcnIKSGFuZFRvSGFuZChIYW5kbGUgKiB0aGVIbmRsKSA7CiMgMTcyNSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjTWVtb3J5LmgiIDMKZXh0ZXJuIE9T
RXJyClB0clRvWEhhbmQoCiAgY29uc3Qgdm9pZCAqIHNyY1B0ciwKICBIYW5kbGUgZHN0SG5kbCwK
ICBsb25nIHNpemUpIDsKIyAxNzY4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9N
YWNNZW1vcnkuaCIgMwpleHRlcm4gT1NFcnIKUHRyVG9IYW5kKAogIGNvbnN0IHZvaWQgKiBzcmNQ
dHIsCiAgSGFuZGxlICogZHN0SG5kbCwKICBsb25nIHNpemUpIDsKIyAxODE4ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNNZW1vcnkuaCIgMwpleHRlcm4gT1NFcnIKSGFuZEFu
ZEhhbmQoCiAgSGFuZGxlIGhhbmQxLAogIEhhbmRsZSBoYW5kMikgOwojIDE4NjAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY01lbW9yeS5oIiAzCmV4dGVybiBPU0VycgpQdHJB
bmRIYW5kKAogIGNvbnN0IHZvaWQgKiBwdHIxLAogIEhhbmRsZSBoYW5kMiwKICBsb25nIHNpemUp
IDsKIyAyMzI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNNZW1vcnkuaCIg
MwpleHRlcm4gQm9vbGVhbgpJc0hlYXBWYWxpZCh2b2lkKSA7CiMgMjM0MyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjTWVtb3J5LmgiIDMKZXh0ZXJuIEJvb2xlYW4KSXNIYW5k
bGVWYWxpZChIYW5kbGUgaCkgOwojIDIzNTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL01hY01lbW9yeS5oIiAzCmV4dGVybiBCb29sZWFuCklzUG9pbnRlclZhbGlkKFB0ciBwKSA7
CiMgMjUxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjTWVtb3J5LmgiIDMK
I3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgNjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0NhcmJvbkNvcmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvTWF0aDY0LmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9NYXRoNjQuaCIgMwojZGVmaW5lIF9fTUFUSDY0X18gCiMgMzYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL01hdGg2NC5oIiAzCmV4dGVybiAiQyIgewojIDUxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYXRoNjQuaCIgMwpleHRlcm4gU0ludDY0ClM2NE1heCh2
b2lkKTsKCgoKCiNkZWZpbmUgUzY0TWF4KCkgKDkyMjMzNzIwMzY4NTQ3NzU4MDdMTCkKIyA3MyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFNJbnQ2
NApTNjRNaW4odm9pZCk7CgoKCgojZGVmaW5lIFM2NE1pbigpICgtUzY0TWF4KCkgLSAxKQojIDk4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYXRoNjQuaCIgMwpleHRlcm4gU0lu
dDY0ClM2NEFkZCgKICBTSW50NjQgbGVmdCwKICBTSW50NjQgcmlnaHQpOwoKCgoKI2RlZmluZSBT
NjRBZGQobGVmdCxyaWdodCkgKChTSW50NjQpKGxlZnQpICsgKFNJbnQ2NCkocmlnaHQpKQojIDEy
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFNJ
bnQ2NApTNjRTdWJ0cmFjdCgKICBTSW50NjQgbGVmdCwKICBTSW50NjQgcmlnaHQpOwoKCgoKI2Rl
ZmluZSBTNjRTdWJ0cmFjdChsZWZ0LHJpZ2h0KSAoKFNJbnQ2NCkobGVmdCkgLSAoU0ludDY0KShy
aWdodCkpCiMgMTUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYXRoNjQuaCIg
MwpleHRlcm4gU0ludDY0ClM2NE5lZ2F0ZShTSW50NjQgdmFsdWUpOwoKCgoKI2RlZmluZSBTNjRO
ZWdhdGUodmFsdWUpICgtKFNJbnQ2NCkodmFsdWUpKQojIDIwNiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFNJbnQ2NApTNjRNdWx0aXBseSgKICBT
SW50NjQgbGVmdCwKICBTSW50NjQgcmlnaHQpOwoKCgoKI2RlZmluZSBTNjRNdWx0aXBseShsZWZ0
LHJpZ2h0KSAoKFNJbnQ2NCkobGVmdCkgKiAoU0ludDY0KShyaWdodCkpCiMgMjMyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYXRoNjQuaCIgMwpleHRlcm4gU0ludDY0ClM2NE1v
ZCgKICBTSW50NjQgZGl2aWRlbmQsCiAgU0ludDY0IGRpdmlzb3IpOwoKCgoKI2RlZmluZSBTNjRN
b2QoZGl2aWRlbmQsZGl2aXNvcikgKChTSW50NjQpKGRpdmlkZW5kKSAlIChTSW50NjQpKGRpdmlz
b3IpKQojIDI2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMK
ZXh0ZXJuIFNJbnQ2NApTNjREaXZpZGUoCiAgU0ludDY0IGRpdmlkZW5kLAogIFNJbnQ2NCBkaXZp
c29yLAogIFNJbnQ2NCAqIHJlbWFpbmRlcik7CgoKCgojZGVmaW5lIFM2NERpdmlkZShkaXZpZGVu
ZCxkaXZpc29yLHJlbWFpbmRlcikgKCggKHZvaWQpKChyZW1haW5kZXIpICYmICgqKChTSW50NjQq
KShyZW1haW5kZXIpKSA9ICgoU0ludDY0KShkaXZpZGVuZCkgJSAoU0ludDY0KShkaXZpc29yKSkp
KSwgKChTSW50NjQpKGRpdmlkZW5kKSAvIChTSW50NjQpKGRpdmlzb3IpKSApKQojIDI4OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFNJbnQ2NApT
NjREaXYoCiAgU0ludDY0IGRpdmlkZW5kLAogIFNJbnQ2NCBkaXZpc29yKTsKCgoKCiNkZWZpbmUg
UzY0RGl2KGRpdmlkZW5kLGRpdmlzb3IpIChTNjREaXZpZGUoKGRpdmlkZW5kKSwgKGRpdmlzb3Ip
LCBOVUxMKSkKIyAzMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2NC5o
IiAzCmV4dGVybiBTSW50NjQKUzY0U2V0KFNJbnQzMiB2YWx1ZSk7CgoKCgojZGVmaW5lIFM2NFNl
dCh2YWx1ZSkgKChTSW50NjQpKHZhbHVlKSkKIyAzMzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL01hdGg2NC5oIiAzCmV4dGVybiBTSW50NjQKUzY0U2V0VShVSW50MzIgdmFsdWUp
OwoKCgoKI2RlZmluZSBTNjRTZXRVKHZhbHVlKSAoKFNJbnQ2NCkodmFsdWUpKQojIDM2MiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFNJbnQzMgpT
MzJTZXQoU0ludDY0IHZhbHVlKTsKCgoKCiNkZWZpbmUgUzMyU2V0KHZhbHVlKSAoKFNJbnQzMiko
dmFsdWUpKQojIDM4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0Lmgi
IDMKZXh0ZXJuIEJvb2xlYW4KUzY0QW5kKAogIFNJbnQ2NCBsZWZ0LAogIFNJbnQ2NCByaWdodCk7
CgoKCgojZGVmaW5lIFM2NEFuZChsZWZ0LHJpZ2h0KSAoKFNJbnQ2NCkobGVmdCkgJiYgKFNJbnQ2
NCkocmlnaHQpKQojIDQxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0
LmgiIDMKZXh0ZXJuIEJvb2xlYW4KUzY0T3IoCiAgU0ludDY0IGxlZnQsCiAgU0ludDY0IHJpZ2h0
KTsKCgoKCiNkZWZpbmUgUzY0T3IobGVmdCxyaWdodCkgKChTSW50NjQpKGxlZnQpIHx8IChTSW50
NjQpKHJpZ2h0KSkKIyA0MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2
NC5oIiAzCmV4dGVybiBCb29sZWFuClM2NEVvcigKICBTSW50NjQgbGVmdCwKICBTSW50NjQgcmln
aHQpOwoKCgoKI2RlZmluZSBTNjRFb3IobGVmdCxyaWdodCkgKChCb29sZWFuKSgoKFNJbnQ2NCko
bGVmdCkgPyAxIDogMCkgXiAoKFNJbnQ2NCkocmlnaHQpID8gMSA6IDApKSkKIyA0NjAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2NC5oIiAzCmV4dGVybiBCb29sZWFuClM2
NE5vdChTSW50NjQgdmFsdWUpOwoKCgoKI2RlZmluZSBTNjROb3QodmFsdWUpICghKChTSW50NjQp
KHZhbHVlKSkpCiMgNDkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYXRoNjQu
aCIgMwpleHRlcm4gU0ludDMyClM2NENvbXBhcmUoCiAgU0ludDY0IGxlZnQsCiAgU0ludDY0IHJp
Z2h0KSA7CiMgNTEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYXRoNjQuaCIg
MwpleHRlcm4gU0ludDY0ClM2NEJpdHdpc2VBbmQoCiAgU0ludDY0IGxlZnQsCiAgU0ludDY0IHJp
Z2h0KTsKCgoKCiNkZWZpbmUgUzY0Qml0d2lzZUFuZChsZWZ0LHJpZ2h0KSAoKFNJbnQ2NCkobGVm
dCkgJiAoU0ludDY0KShyaWdodCkpCiMgNTM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9NYXRoNjQuaCIgMwpleHRlcm4gU0ludDY0ClM2NEJpdHdpc2VPcigKICBTSW50NjQgbGVm
dCwKICBTSW50NjQgcmlnaHQpOwoKCgoKI2RlZmluZSBTNjRCaXR3aXNlT3IobGVmdCxyaWdodCkg
KChTSW50NjQpKGxlZnQpIHwgKFNJbnQ2NCkocmlnaHQpKQojIDU2MCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFNJbnQ2NApTNjRCaXR3aXNlRW9y
KAogIFNJbnQ2NCBsZWZ0LAogIFNJbnQ2NCByaWdodCk7CgoKCgojZGVmaW5lIFM2NEJpdHdpc2VF
b3IobGVmdCxyaWdodCkgKChTSW50NjQpKGxlZnQpIF4gKFNJbnQ2NCkocmlnaHQpKQojIDU4NSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFNJbnQ2
NApTNjRCaXR3aXNlTm90KFNJbnQ2NCB2YWx1ZSk7CgoKCgojZGVmaW5lIFM2NEJpdHdpc2VOb3Qo
dmFsdWUpICh+KChTSW50NjQpKHZhbHVlKSkpCiMgNjA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9NYXRoNjQuaCIgMwpleHRlcm4gU0ludDY0ClM2NFNoaWZ0UmlnaHQoCiAgU0lu
dDY0IHZhbHVlLAogIFVJbnQzMiBzaGlmdCk7CgoKCgojZGVmaW5lIFM2NFNoaWZ0UmlnaHQodmFs
dWUsc2hpZnQpICgoU0ludDY0KSh2YWx1ZSkgPj4gKChzaGlmdCkgJiAweDdGKSkKIyA2MzMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2NC5oIiAzCmV4dGVybiBTSW50NjQK
UzY0U2hpZnRMZWZ0KAogIFNJbnQ2NCB2YWx1ZSwKICBVSW50MzIgc2hpZnQpOwoKCgoKI2RlZmlu
ZSBTNjRTaGlmdExlZnQodmFsdWUsc2hpZnQpICgoU0ludDY0KSh2YWx1ZSkgPDwgKChzaGlmdCkg
JiAweDdGKSkKIyA2NjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2NC5o
IiAzCmV4dGVybiBsb25nIGRvdWJsZQpTSW50NjRUb0xvbmdEb3VibGUoU0ludDY0IHZhbHVlKTsK
CgoKCiNkZWZpbmUgU0ludDY0VG9Mb25nRG91YmxlKHZhbHVlKSAoKGxvbmcgZG91YmxlKSh2YWx1
ZSkpCiMgNjkxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYXRoNjQuaCIgMwpl
eHRlcm4gU0ludDY0CkxvbmdEb3VibGVUb1NJbnQ2NChsb25nIGRvdWJsZSB2YWx1ZSk7CgoKCgoj
ZGVmaW5lIExvbmdEb3VibGVUb1NJbnQ2NCh2YWx1ZSkgKChTSW50NjQpKHZhbHVlKSkKIyA3MTYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2NC5oIiAzCmV4dGVybiBVSW50
NjQKVTY0TWF4KHZvaWQpOwoKCgoKI2RlZmluZSBVNjRNYXgoKSAoMHhmZmZmZmZmZmZmZmZmZmZm
VUxMKQojIDc0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMK
ZXh0ZXJuIFVJbnQ2NApVNjRBZGQoCiAgVUludDY0IGxlZnQsCiAgVUludDY0IHJpZ2h0KTsKCgoK
CiNkZWZpbmUgVTY0QWRkKGxlZnQscmlnaHQpICgoVUludDY0KShsZWZ0KSArIChVSW50NjQpKHJp
Z2h0KSkKIyA3NjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2NC5oIiAz
CmV4dGVybiBVSW50NjQKVTY0U3VidHJhY3QoCiAgVUludDY0IGxlZnQsCiAgVUludDY0IHJpZ2h0
KTsKCgoKCiNkZWZpbmUgVTY0U3VidHJhY3QobGVmdCxyaWdodCkgKChVSW50NjQpKGxlZnQpIC0g
KFVJbnQ2NCkocmlnaHQpKQojIDc5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
TWF0aDY0LmgiIDMKZXh0ZXJuIFVJbnQ2NApVNjRNdWx0aXBseSgKICBVSW50NjQgbGVmdCwKICBV
SW50NjQgcmlnaHQpOwoKCgoKI2RlZmluZSBVNjRNdWx0aXBseShsZWZ0LHJpZ2h0KSAoKFVJbnQ2
NCkobGVmdCkgKiAoVUludDY0KShyaWdodCkpCiMgODIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9NYXRoNjQuaCIgMwpleHRlcm4gVUludDY0ClU2NE1vZCgKICBVSW50NjQgZGl2
aWRlbmQsCiAgVUludDY0IGRpdmlzb3IpOwoKCgoKI2RlZmluZSBVNjRNb2QoZGl2aWRlbmQsZGl2
aXNvcikgKChVSW50NjQpKGRpdmlkZW5kKSAlIChVSW50NjQpKGRpdmlzb3IpKQojIDg1MiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFVJbnQ2NApV
NjREaXZpZGUoCiAgVUludDY0IGRpdmlkZW5kLAogIFVJbnQ2NCBkaXZpc29yLAogIFVJbnQ2NCAq
IHJlbWFpbmRlcik7CgoKCgojZGVmaW5lIFU2NERpdmlkZShkaXZpZGVuZCxkaXZpc29yLHJlbWFp
bmRlcikgKCggKHZvaWQpKChyZW1haW5kZXIpICYmICgqKChVSW50NjQqKShyZW1haW5kZXIpKSA9
ICgoVUludDY0KShkaXZpZGVuZCkgJSAoVUludDY0KShkaXZpc29yKSkpKSwgKChVSW50NjQpKGRp
dmlkZW5kKSAvIChVSW50NjQpKGRpdmlzb3IpKSApKQojIDg3OCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFVJbnQ2NApVNjREaXYoCiAgVUludDY0
IGRpdmlkZW5kLAogIFVJbnQ2NCBkaXZpc29yKTsKCgoKCiNkZWZpbmUgVTY0RGl2KGRpdmlkZW5k
LGRpdmlzb3IpIChVNjREaXZpZGUoKGRpdmlkZW5kKSwgKGRpdmlzb3IpLCBOVUxMKSkKIyA5MDUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2NC5oIiAzCmV4dGVybiBVSW50
NjQKVTY0U2V0KFNJbnQzMiB2YWx1ZSk7CgoKCgojZGVmaW5lIFU2NFNldCh2YWx1ZSkgKChVSW50
NjQpKHZhbHVlKSkKIyA5MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2
NC5oIiAzCmV4dGVybiBVSW50NjQKVTY0U2V0VShVSW50MzIgdmFsdWUpOwoKCgoKI2RlZmluZSBV
NjRTZXRVKHZhbHVlKSAoKFVJbnQ2NCkodmFsdWUpKQojIDk1MSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFVJbnQzMgpVMzJTZXRVKFVJbnQ2NCB2
YWx1ZSk7CgoKCgojZGVmaW5lIFUzMlNldFUodmFsdWUpICgoVUludDMyKSh2YWx1ZSkpCiMgOTc0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYXRoNjQuaCIgMwpleHRlcm4gQm9v
bGVhbgpVNjRBbmQoCiAgVUludDY0IGxlZnQsCiAgVUludDY0IHJpZ2h0KTsKCgoKCiNkZWZpbmUg
VTY0QW5kKGxlZnQscmlnaHQpICgoVUludDY0KShsZWZ0KSAmJiAoVUludDY0KShyaWdodCkpCiMg
OTk5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYXRoNjQuaCIgMwpleHRlcm4g
Qm9vbGVhbgpVNjRPcigKICBVSW50NjQgbGVmdCwKICBVSW50NjQgcmlnaHQpOwoKCgoKI2RlZmlu
ZSBVNjRPcihsZWZ0LHJpZ2h0KSAoKFVJbnQ2NCkobGVmdCkgfHwgKFVJbnQ2NCkocmlnaHQpKQoj
IDEwMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2NC5oIiAzCmV4dGVy
biBCb29sZWFuClU2NEVvcigKICBVSW50NjQgbGVmdCwKICBVSW50NjQgcmlnaHQpOwoKCgoKI2Rl
ZmluZSBVNjRFb3IobGVmdCxyaWdodCkgKChCb29sZWFuKSgoKFVJbnQ2NCkobGVmdCkgPyAxIDog
MCkgXiAoKFVJbnQ2NCkocmlnaHQpID8gMSA6IDApKSkKIyAxMDQ5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9NYXRoNjQuaCIgMwpleHRlcm4gQm9vbGVhbgpVNjROb3QoVUludDY0
IHZhbHVlKTsKCgoKCiNkZWZpbmUgVTY0Tm90KHZhbHVlKSAoISgoVUludDY0KSh2YWx1ZSkpKQoj
IDEwODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2NC5oIiAzCmV4dGVy
biBTSW50MzIKVTY0Q29tcGFyZSgKICBVSW50NjQgbGVmdCwKICBVSW50NjQgcmlnaHQpIDsKIyAx
MDk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYXRoNjQuaCIgMwpleHRlcm4g
VUludDY0ClU2NEJpdHdpc2VBbmQoCiAgVUludDY0IGxlZnQsCiAgVUludDY0IHJpZ2h0KTsKCgoK
CiNkZWZpbmUgVTY0Qml0d2lzZUFuZChsZWZ0LHJpZ2h0KSAoKFVJbnQ2NCkobGVmdCkgJiAoVUlu
dDY0KShyaWdodCkpCiMgMTEyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0
aDY0LmgiIDMKZXh0ZXJuIFVJbnQ2NApVNjRCaXR3aXNlT3IoCiAgVUludDY0IGxlZnQsCiAgVUlu
dDY0IHJpZ2h0KTsKCgoKCiNkZWZpbmUgVTY0Qml0d2lzZU9yKGxlZnQscmlnaHQpICgoVUludDY0
KShsZWZ0KSB8IChVSW50NjQpKHJpZ2h0KSkKIyAxMTQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9NYXRoNjQuaCIgMwpleHRlcm4gVUludDY0ClU2NEJpdHdpc2VFb3IoCiAgVUlu
dDY0IGxlZnQsCiAgVUludDY0IHJpZ2h0KTsKCgoKCiNkZWZpbmUgVTY0Qml0d2lzZUVvcihsZWZ0
LHJpZ2h0KSAoKFVJbnQ2NCkobGVmdCkgXiAoVUludDY0KShyaWdodCkpCiMgMTE3MyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFVJbnQ2NApVNjRC
aXR3aXNlTm90KFVJbnQ2NCB2YWx1ZSk7CgoKCgojZGVmaW5lIFU2NEJpdHdpc2VOb3QodmFsdWUp
ICh+KChVSW50NjQpKHZhbHVlKSkpCiMgMTE5NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFVJbnQ2NApVNjRTaGlmdFJpZ2h0KAogIFVJbnQ2NCB2
YWx1ZSwKICBVSW50MzIgc2hpZnQpOwoKCgoKI2RlZmluZSBVNjRTaGlmdFJpZ2h0KHZhbHVlLHNo
aWZ0KSAoKFVJbnQ2NCkodmFsdWUpID4+ICgoc2hpZnQpICYgMHg3RikpCiMgMTIyMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFVJbnQ2NApVNjRT
aGlmdExlZnQoCiAgVUludDY0IHZhbHVlLAogIFVJbnQzMiBzaGlmdCk7CgoKCgojZGVmaW5lIFU2
NFNoaWZ0TGVmdCh2YWx1ZSxzaGlmdCkgKChVSW50NjQpKHZhbHVlKSA8PCAoKHNoaWZ0KSAmIDB4
N0YpKQojIDEyNDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2NC5oIiAz
CmV4dGVybiBsb25nIGRvdWJsZQpVSW50NjRUb0xvbmdEb3VibGUoVUludDY0IHZhbHVlKTsKCgoK
CiNkZWZpbmUgVUludDY0VG9Mb25nRG91YmxlKHZhbHVlKSAoKGxvbmcgZG91YmxlKSh2YWx1ZSkp
CiMgMTI3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0
ZXJuIFVJbnQ2NApMb25nRG91YmxlVG9VSW50NjQobG9uZyBkb3VibGUgdmFsdWUpOwoKCgoKI2Rl
ZmluZSBMb25nRG91YmxlVG9VSW50NjQodmFsdWUpICgoVUludDY0KSh2YWx1ZSkpCiMgMTI5NiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWF0aDY0LmgiIDMKZXh0ZXJuIFNJbnQ2
NApVSW50NjRUb1NJbnQ2NChVSW50NjQgdmFsdWUpOwoKCgoKI2RlZmluZSBVSW50NjRUb1NJbnQ2
NCh2YWx1ZSkgKChTSW50NjQpKHZhbHVlKSkKIyAxMzE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9NYXRoNjQuaCIgMwpleHRlcm4gVUludDY0ClNJbnQ2NFRvVUludDY0KFNJbnQ2
NCB2YWx1ZSk7CgoKCgojZGVmaW5lIFNJbnQ2NFRvVUludDY0KHZhbHVlKSAoKFVJbnQ2NCkodmFs
dWUpKQojIDEzNzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hdGg2NC5oIiAz
CiAgICAgICBzdGF0aWMgaW5saW5lIHdpZGUgU0ludDY0VG9XaWRlICggU0ludDY0IHMgKSB7IHdp
ZGUgcmVzdWx0OyByZXN1bHQuaGkgPSAoIHMgPj4gMzIgKTsgcmVzdWx0LmxvID0gKCBzICYgMHhm
ZmZmZmZmZlVMICk7IHJldHVybiByZXN1bHQ7IH0KICAgICAgIHN0YXRpYyBpbmxpbmUgU0ludDY0
IFdpZGVUb1NJbnQ2NCAoIHdpZGUgdyApIHsgU0ludDY0IHJlc3VsdCA9IHcuaGk7IHJlc3VsdCA9
ICggcmVzdWx0IDw8IDMyICkgfCAoIHcubG8gKTsgcmV0dXJuIHJlc3VsdDsgfQoKICAgICBzdGF0
aWMgaW5saW5lIFVuc2lnbmVkV2lkZSBVSW50NjRUb1Vuc2lnbmVkV2lkZSAoIFVJbnQ2NCB1ICkg
eyBVbnNpZ25lZFdpZGUgcmVzdWx0OyByZXN1bHQuaGkgPSAoIHUgPj4gMzIgKTsgcmVzdWx0Lmxv
ID0gKCB1ICYgMHhmZmZmZmZmZlVMICk7IHJldHVybiByZXN1bHQ7IH0KICAgICAgIHN0YXRpYyBp
bmxpbmUgVUludDY0IFVuc2lnbmVkV2lkZVRvVUludDY0ICggVW5zaWduZWRXaWRlIHV3ICkgeyBV
SW50NjQgcmVzdWx0ID0gdXcuaGkgOyByZXN1bHQgPSAoIHJlc3VsdCA8PCAzMiApIHwgKCB1dy5s
byApOyByZXR1cm4gcmVzdWx0OyB9CiMgMTQxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvTWF0aDY0LmgiIDMKfQojIDcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9DYXJib25Db3JlLmgiIDIgMwojIDgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9DYXJib25Db3JlLmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9C
YWNrdXBDb3JlLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9C
YWNrdXBDb3JlLmgiIDMKI2RlZmluZSBfX0JBQ0tVUENPUkVfXyAKIyAzMiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvQmFja3VwQ29yZS5oIiAzCmV4dGVybiAiQyIgewojIDY2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9CYWNrdXBDb3JlLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCkNTQmFja3VwU2V0SXRlbUV4Y2x1ZGVkKAogIENGVVJMUmVmIGl0ZW0sCiAgQm9vbGVh
biBleGNsdWRlLAogIEJvb2xlYW4gZXhjbHVkZUJ5UGF0aCkgOwojIDEwMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvQmFja3VwQ29yZS5oIiAzCmV4dGVybiBCb29sZWFuCkNTQmFj
a3VwSXNJdGVtRXhjbHVkZWQoCiAgQ0ZVUkxSZWYgaXRlbSwKICBCb29sZWFuICogZXhjbHVkZUJ5
UGF0aCkgOwoKCgoKfQojIDgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9DYXJi
b25Db3JlLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0Nv
bXBvbmVudHMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0Nv
bXBvbmVudHMuaCIgMwojZGVmaW5lIF9fQ09NUE9ORU5UU19fIAojIDMyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwojZGVmaW5lIF9fRklMRVNfXyAKIyAyOCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL09TVXRpbHMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL09TVXRpbHMuaCIgMwojZGVmaW5lIF9fT1NVVElMU19fIAojIDM0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9PU1V0aWxzLmgiIDMKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9EYXRlVGltZVV0aWxzLmgiIDEgMwojIDE3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9EYXRlVGltZVV0aWxzLmgiIDMKI2RlZmluZSBfX0RB
VEVUSU1FVVRJTFNfXyAKIyA0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRGF0
ZVRpbWVVdGlscy5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQojIDc5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9EYXRlVGltZVV0aWxzLmgiIDMKdHlw
ZWRlZiBTSW50MTYgVG9nZ2xlUmVzdWx0czsKZW51bSB7CgogIHRvZ2dsZVVuZGVmaW5lZCA9IDAs
CiAgdG9nZ2xlT0sgPSAxLAogIHRvZ2dsZUJhZEZpZWxkID0gMiwKICB0b2dnbGVCYWREZWx0YSA9
IDMsCiAgdG9nZ2xlQmFkQ2hhciA9IDQsCiAgdG9nZ2xlVW5rbm93biA9IDUsCiAgdG9nZ2xlQmFk
TnVtID0gNiwKICB0b2dnbGVPdXRPZlJhbmdlID0gNywKICB0b2dnbGVFcnIzID0gNywKICB0b2dn
bGVFcnI0ID0gOCwKICB0b2dnbGVFcnI1ID0gOQp9OwoKZW51bSB7CgogIHNtYWxsRGF0ZUJpdCA9
IDMxLAogIHRvZ0NoYXIxMkhvdXJCaXQgPSAzMCwKICB0b2dDaGFyWkN5Y2xlQml0ID0gMjksCiAg
dG9nRGVsdGExMkhvdXJCaXQgPSAyOCwKICBnZW5DZGV2UmFuZ2VCaXQgPSAyNywKICB2YWxpZERh
dGVGaWVsZHMgPSAtMSwKICBtYXhEYXRlRmllbGQgPSAxMAp9OwoKZW51bSB7CiAgZXJhTWFzayA9
IDB4MDAwMSwKICB5ZWFyTWFzayA9IDB4MDAwMiwKICBtb250aE1hc2sgPSAweDAwMDQsCiAgZGF5
TWFzayA9IDB4MDAwOCwKICBob3VyTWFzayA9IDB4MDAxMCwKICBtaW51dGVNYXNrID0gMHgwMDIw
LAogIHNlY29uZE1hc2sgPSAweDAwNDAsCiAgZGF5T2ZXZWVrTWFzayA9IDB4MDA4MCwKICBkYXlP
ZlllYXJNYXNrID0gMHgwMTAwLAogIHdlZWtPZlllYXJNYXNrID0gMHgwMjAwLAogIHBtTWFzayA9
IDB4MDQwMCwKICBkYXRlU3RkTWFzayA9IDB4MDA3Rgp9OwoKdHlwZWRlZiBTSW50OCBMb25nRGF0
ZUZpZWxkOwplbnVtIHsKICBlcmFGaWVsZCA9IDAsCiAgeWVhckZpZWxkID0gMSwKICBtb250aEZp
ZWxkID0gMiwKICBkYXlGaWVsZCA9IDMsCiAgaG91ckZpZWxkID0gNCwKICBtaW51dGVGaWVsZCA9
IDUsCiAgc2Vjb25kRmllbGQgPSA2LAogIGRheU9mV2Vla0ZpZWxkID0gNywKICBkYXlPZlllYXJG
aWVsZCA9IDgsCiAgd2Vla09mWWVhckZpZWxkID0gOSwKICBwbUZpZWxkID0gMTAsCiAgcmVzMUZp
ZWxkID0gMTEsCiAgcmVzMkZpZWxkID0gMTIsCiAgcmVzM0ZpZWxkID0gMTMKfTsKCnR5cGVkZWYg
U0ludDggRGF0ZUZvcm07CmVudW0gewogIHNob3J0RGF0ZSA9IDAsCiAgbG9uZ0RhdGUgPSAxLAog
IGFiYnJldkRhdGUgPSAyCn07CgplbnVtIHsKCiAgZmF0YWxEYXRlVGltZSA9IDB4ODAwMCwKICBs
b25nRGF0ZUZvdW5kID0gMSwKICBsZWZ0T3ZlckNoYXJzID0gMiwKICBzZXBOb3RJbnRsU2VwID0g
NCwKICBmaWVsZE9yZGVyTm90SW50bCA9IDgsCiAgZXh0cmFuZW91c1N0cmluZ3MgPSAxNiwKICB0
b29NYW55U2VwcyA9IDMyLAogIHNlcE5vdENvbnNpc3RlbnQgPSA2NCwKICB0b2tlbkVyciA9IDB4
ODEwMCwKICBjYW50UmVhZFV0aWxpdGllcyA9IDB4ODIwMCwKICBkYXRlVGltZU5vdEZvdW5kID0g
MHg4NDAwLAogIGRhdGVUaW1lSW52YWxpZCA9IDB4ODgwMAp9OwoKdHlwZWRlZiBzaG9ydCBTdHJp
bmdUb0RhdGVTdGF0dXM7CnR5cGVkZWYgU3RyaW5nVG9EYXRlU3RhdHVzIFN0cmluZzJEYXRlU3Rh
dHVzOwpzdHJ1Y3QgRGF0ZUNhY2hlUmVjb3JkIHsKICBzaG9ydCBoaWRkZW5bMjU2XTsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgRGF0ZUNhY2hlUmVjb3JkIERhdGVDYWNoZVJlY29yZDsKdHlwZWRlZiBEYXRl
Q2FjaGVSZWNvcmQgKiBEYXRlQ2FjaGVQdHI7CnN0cnVjdCBEYXRlVGltZVJlYyB7CiAgc2hvcnQg
eWVhcjsKICBzaG9ydCBtb250aDsKICBzaG9ydCBkYXk7CiAgc2hvcnQgaG91cjsKICBzaG9ydCBt
aW51dGU7CiAgc2hvcnQgc2Vjb25kOwogIHNob3J0IGRheU9mV2VlazsKfTsKdHlwZWRlZiBzdHJ1
Y3QgRGF0ZVRpbWVSZWMgRGF0ZVRpbWVSZWM7Cgp0eXBlZGVmIFNJbnQ2NCBMb25nRGF0ZVRpbWU7
CiMgMTkxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9EYXRlVGltZVV0aWxzLmgi
IDMKdW5pb24gTG9uZ0RhdGVDdnQgewogIFNJbnQ2NCBjOwogIHN0cnVjdCB7CiAgICBVSW50MzIg
bExvdzsKICAgIFVJbnQzMiBsSGlnaDsKICB9IGhsOwp9Owp0eXBlZGVmIHVuaW9uIExvbmdEYXRl
Q3Z0IExvbmdEYXRlQ3Z0OwoKCnVuaW9uIExvbmdEYXRlUmVjIHsKICBzdHJ1Y3QgewogICAgc2hv
cnQgZXJhOwogICAgc2hvcnQgeWVhcjsKICAgIHNob3J0IG1vbnRoOwogICAgc2hvcnQgZGF5Owog
ICAgc2hvcnQgaG91cjsKICAgIHNob3J0IG1pbnV0ZTsKICAgIHNob3J0IHNlY29uZDsKICAgIHNo
b3J0IGRheU9mV2VlazsKICAgIHNob3J0IGRheU9mWWVhcjsKICAgIHNob3J0IHdlZWtPZlllYXI7
CiAgICBzaG9ydCBwbTsKICAgIHNob3J0IHJlczE7CiAgICBzaG9ydCByZXMyOwogICAgc2hvcnQg
cmVzMzsKICB9IGxkOwogIHNob3J0IGxpc3RbMTRdOwogIHN0cnVjdCB7CiAgICBzaG9ydCBlcmFB
bHQ7CiAgICBEYXRlVGltZVJlYyBvbGREYXRlOwogIH0gb2Q7Cn07CnR5cGVkZWYgdW5pb24gTG9u
Z0RhdGVSZWMgTG9uZ0RhdGVSZWM7Cgp0eXBlZGVmIFNJbnQ4IERhdGVEZWx0YTsKc3RydWN0IFRv
Z2dsZVBCIHsKICBsb25nIHRvZ0ZsYWdzOwogIFJlc1R5cGUgYW1DaGFyczsKICBSZXNUeXBlIHBt
Q2hhcnM7CiAgbG9uZyByZXNlcnZlZFs0XTsKfTsKdHlwZWRlZiBzdHJ1Y3QgVG9nZ2xlUEIgVG9n
Z2xlUEI7CiMgMjY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9EYXRlVGltZVV0
aWxzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClVDQ29udmVydFVUQ0RhdGVUaW1lVG9DRkFic29sdXRl
VGltZSgKICBjb25zdCBVVENEYXRlVGltZSAqIGlVVENEYXRlLAogIENGQWJzb2x1dGVUaW1lICog
b0NGVGltZSkgOwojIDI5NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRGF0ZVRp
bWVVdGlscy5oIiAzCmV4dGVybiBPU1N0YXR1cwpVQ0NvbnZlcnRTZWNvbmRzVG9DRkFic29sdXRl
VGltZSgKICBVSW50MzIgaVNlY29uZHMsCiAgQ0ZBYnNvbHV0ZVRpbWUgKiBvQ0ZUaW1lKSA7CiMg
MzMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9EYXRlVGltZVV0aWxzLmgiIDMK
ZXh0ZXJuIE9TU3RhdHVzClVDQ29udmVydExvbmdEYXRlVGltZVRvQ0ZBYnNvbHV0ZVRpbWUoCiAg
TG9uZ0RhdGVUaW1lIGlMb25nVGltZSwKICBDRkFic29sdXRlVGltZSAqIG9DRlRpbWUpIDsKIyAz
NjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RhdGVUaW1lVXRpbHMuaCIgMwpl
eHRlcm4gT1NTdGF0dXMKVUNDb252ZXJ0Q0ZBYnNvbHV0ZVRpbWVUb1VUQ0RhdGVUaW1lKAogIENG
QWJzb2x1dGVUaW1lIGlDRlRpbWUsCiAgVVRDRGF0ZVRpbWUgKiBvVVRDRGF0ZSkgOwojIDM5NiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRGF0ZVRpbWVVdGlscy5oIiAzCmV4dGVy
biBPU1N0YXR1cwpVQ0NvbnZlcnRDRkFic29sdXRlVGltZVRvU2Vjb25kcygKICBDRkFic29sdXRl
VGltZSBpQ0ZUaW1lLAogIFVJbnQzMiAqIG9TZWNvbmRzKSA7CiMgNDI5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9EYXRlVGltZVV0aWxzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClVD
Q29udmVydENGQWJzb2x1dGVUaW1lVG9Mb25nRGF0ZVRpbWUoCiAgQ0ZBYnNvbHV0ZVRpbWUgaUNG
VGltZSwKICBMb25nRGF0ZVRpbWUgKiBvTG9uZ0RhdGUpIDsKIyA5ODcgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0RhdGVUaW1lVXRpbHMuaCIgMwojcHJhZ21hIHBhY2socG9wKQoK
Cn0KIyAzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvT1NVdGlscy5oIiAyIDMK
IyA0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvT1NVdGlscy5oIiAzCmV4dGVy
biAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQoKZW51bSB7CgogIHNvcnRzQmVmb3JlID0g
LTEsCiAgc29ydHNFcXVhbCA9IDAsCiAgc29ydHNBZnRlciA9IDEKfTsKCmVudW0gewogIGR1bW15
VHlwZSA9IDAsCiAgdlR5cGUgPSAxLAogIGlvUVR5cGUgPSAyLAogIGRydlFUeXBlID0gMywKICBl
dlR5cGUgPSA0LAogIGZzUVR5cGUgPSA1LAogIHNJUVR5cGUgPSA2LAogIGR0UVR5cGUgPSA3LAog
IG5tVHlwZSA9IDgKfTsKCnR5cGVkZWYgU2lnbmVkQnl0ZSBRVHlwZXM7CnN0cnVjdCBRRWxlbSB7
CiAgc3RydWN0IFFFbGVtICogcUxpbms7CiAgc2hvcnQgcVR5cGU7CiAgc2hvcnQgcURhdGFbMV07
Cn07CnR5cGVkZWYgc3RydWN0IFFFbGVtIFFFbGVtOwp0eXBlZGVmIFFFbGVtICogUUVsZW1QdHI7
CnN0cnVjdCBRSGRyIHsKICB2b2xhdGlsZSBzaG9ydCBxRmxhZ3M7CiAgdm9sYXRpbGUgUUVsZW1Q
dHIgcUhlYWQ7CiAgdm9sYXRpbGUgUUVsZW1QdHIgcVRhaWw7Cn07CnR5cGVkZWYgc3RydWN0IFFI
ZHIgUUhkcjsKdHlwZWRlZiBRSGRyICogUUhkclB0cjsKIyAxMTcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL09TVXRpbHMuaCIgMwpzdHJ1Y3QgTWFjaGluZUxvY2F0aW9uIHsKICAg
IEZyYWN0IGxhdGl0dWRlOwogICAgRnJhY3QgbG9uZ2l0dWRlOwogICAgdW5pb24gewoKCgogICAg
ICAgIGxvbmcgZ210RGVsdGE7CiAgICAgICAgc3RydWN0IHsKCiAgICAgICAgICAgIFNJbnQ4IHBh
ZFszXTsKCiAgICAgICAgICAgIFNJbnQ4IERlbHRhOwogICAgICAgIH0gZGxzOwogICAgfSB1Owp9
Owp0eXBlZGVmIHN0cnVjdCBNYWNoaW5lTG9jYXRpb24gTWFjaGluZUxvY2F0aW9uOwojIDE3MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvT1NVdGlscy5oIiAzCmV4dGVybiBCb29s
ZWFuCklzTWV0cmljKHZvaWQpIDsKIyAxOTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL09TVXRpbHMuaCIgMwpleHRlcm4gdm9pZApEZWxheSgKICB1bnNpZ25lZCBsb25nIG51bVRp
Y2tzLAogIHVuc2lnbmVkIGxvbmcgKiBmaW5hbFRpY2tzKSA7CiMgMjMzICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9PU1V0aWxzLmgiIDMKZXh0ZXJuIHZvaWQKRW5xdWV1ZSgKICBR
RWxlbVB0ciBxRWxlbWVudCwKICBRSGRyUHRyIHFIZWFkZXIpIDsKIyAyNjcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL09TVXRpbHMuaCIgMwpleHRlcm4gT1NFcnIKRGVxdWV1ZSgK
ICBRRWxlbVB0ciBxRWxlbWVudCwKICBRSGRyUHRyIHFIZWFkZXIpIDsKIyAzNTkgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL09TVXRpbHMuaCIgMwpleHRlcm4gdm9pZApSZWFkTG9j
YXRpb24oTWFjaGluZUxvY2F0aW9uICogbG9jKSA7CiMgMzk1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9PU1V0aWxzLmgiIDMKZXh0ZXJuIFVJbnQzMgpUaWNrQ291bnQodm9pZCkg
OwojIDQyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvT1NVdGlscy5oIiAzCmV4
dGVybiBDRlN0cmluZ1JlZgpDU0NvcHlVc2VyTmFtZShCb29sZWFuIHVzZVNob3J0TmFtZSkgOwoj
IDQ0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvT1NVdGlscy5oIiAzCmV4dGVy
biBDRlN0cmluZ1JlZgpDU0NvcHlNYWNoaW5lTmFtZSh2b2lkKSA7CgoKZW51bSB7CiAgdXNlRnJl
ZSA9IDAsCiAgdXNlQVRhbGsgPSAxLAogIHVzZUFzeW5jID0gMiwKICB1c2VFeHRDbGsgPSAzLAog
IHVzZU1JREkgPSA0Cn07CgplbnVtIHsKICBmYWxzZTMyYiA9IDAsCiAgdHJ1ZTMyYiA9IDEKfTsK
IyA0ODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL09TVXRpbHMuaCIgMwp0eXBl
ZGVmIHZvaWQgKiBTeXNQUHRyOwoKCgojZGVmaW5lIEdldE1NVU1vZGUoKSAoKFNJbnQ4KXRydWUz
MmIpCiNkZWZpbmUgU3dhcE1NVU1vZGUoeCkgKCooU0ludDgqKSh4KSA9IHRydWUzMmIpCiMgNTEy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9PU1V0aWxzLmgiIDMKdHlwZWRlZiB2
b2lkICggKiBEZWZlcnJlZFRhc2tQcm9jUHRyKShsb25nIGR0UGFyYW0pOwp0eXBlZGVmIERlZmVy
cmVkVGFza1Byb2NQdHIgRGVmZXJyZWRUYXNrVVBQOwojIDUyMiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvT1NVdGlscy5oIiAzCmV4dGVybiBEZWZlcnJlZFRhc2tVUFAKTmV3RGVm
ZXJyZWRUYXNrVVBQKERlZmVycmVkVGFza1Byb2NQdHIgdXNlclJvdXRpbmUpIDsKIyA1MzMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL09TVXRpbHMuaCIgMwpleHRlcm4gdm9pZApE
aXNwb3NlRGVmZXJyZWRUYXNrVVBQKERlZmVycmVkVGFza1VQUCB1c2VyVVBQKSA7CiMgNTQ0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9PU1V0aWxzLmgiIDMKZXh0ZXJuIHZvaWQK
SW52b2tlRGVmZXJyZWRUYXNrVVBQKAogIGxvbmcgZHRQYXJhbSwKICBEZWZlcnJlZFRhc2tVUFAg
dXNlclVQUCkgOwoKCgogICAgaW5saW5lIERlZmVycmVkVGFza1VQUCBOZXdEZWZlcnJlZFRhc2tV
UFAoRGVmZXJyZWRUYXNrUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7
IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VEZWZlcnJlZFRhc2tVUFAoRGVmZXJyZWRUYXNrVVBQ
KSB7IH0KICAgIGlubGluZSB2b2lkIEludm9rZURlZmVycmVkVGFza1VQUChsb25nIGR0UGFyYW0s
IERlZmVycmVkVGFza1VQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCkoZHRQYXJhbSk7IH0KCgoKCgoK
CnN0cnVjdCBEZWZlcnJlZFRhc2sgewogIHZvbGF0aWxlIFFFbGVtUHRyIHFMaW5rOwogIHNob3J0
IHFUeXBlOwogIHZvbGF0aWxlIHNob3J0IGR0RmxhZ3M7CiAgRGVmZXJyZWRUYXNrVVBQIGR0QWRk
cjsKICBsb25nIGR0UGFyYW07CiAgbG9uZyBkdFJlc2VydmVkOwp9Owp0eXBlZGVmIHN0cnVjdCBE
ZWZlcnJlZFRhc2sgRGVmZXJyZWRUYXNrOwp0eXBlZGVmIERlZmVycmVkVGFzayAqIERlZmVycmVk
VGFza1B0cjsKIyA3ODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL09TVXRpbHMu
aCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvRmlsZXMuaCIgMiAzCiMgNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0ZpbGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDEgMyA0CiMgNzEg
Ii91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CiNkZWZpbmUgX1NZU19GQ05UTF9IXyAKIyAx
MTAgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CiNkZWZpbmUgT19SRE9OTFkgMHgwMDAw
CiNkZWZpbmUgT19XUk9OTFkgMHgwMDAxCiNkZWZpbmUgT19SRFdSIDB4MDAwMgojZGVmaW5lIE9f
QUNDTU9ERSAweDAwMDMKIyAxMjQgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CiNkZWZp
bmUgRlJFQUQgMHgwMDAxCiNkZWZpbmUgRldSSVRFIDB4MDAwMgoKI2RlZmluZSBPX05PTkJMT0NL
IDB4MDAwNAojZGVmaW5lIE9fQVBQRU5EIDB4MDAwOAoKI2RlZmluZSBPX1NZTkMgMHgwMDgwCgoK
I2RlZmluZSBPX1NITE9DSyAweDAwMTAKI2RlZmluZSBPX0VYTE9DSyAweDAwMjAKI2RlZmluZSBP
X0FTWU5DIDB4MDA0MAojZGVmaW5lIE9fRlNZTkMgT19TWU5DCiNkZWZpbmUgT19OT0ZPTExPVyAw
eDAxMDAKCiNkZWZpbmUgT19DUkVBVCAweDAyMDAKI2RlZmluZSBPX1RSVU5DIDB4MDQwMAojZGVm
aW5lIE9fRVhDTCAweDA4MDAKCiNkZWZpbmUgT19FVlRPTkxZIDB4ODAwMAoKCgojZGVmaW5lIE9f
Tk9DVFRZIDB4MjAwMDAKCgoKI2RlZmluZSBPX0RJUkVDVE9SWSAweDEwMDAwMAojZGVmaW5lIE9f
U1lNTElOSyAweDIwMDAwMAoKCgojZGVmaW5lIE9fRFNZTkMgMHg0MDAwMDAKIyAxNjYgIi91c3Iv
aW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CiNkZWZpbmUgRkFQUEVORCBPX0FQUEVORAojZGVmaW5l
IEZBU1lOQyBPX0FTWU5DCiNkZWZpbmUgRkZTWU5DIE9fRlNZTkMKI2RlZmluZSBGRkRTWU5DIE9f
RFNZTkMKI2RlZmluZSBGTk9OQkxPQ0sgT19OT05CTE9DSwojZGVmaW5lIEZOREVMQVkgT19OT05C
TE9DSwojZGVmaW5lIE9fTkRFTEFZIE9fTk9OQkxPQ0sKCgoKCgoKCiNkZWZpbmUgQ1BGX09WRVJX
UklURSAxCiNkZWZpbmUgQ1BGX0lHTk9SRV9NT0RFIDIKI2RlZmluZSBDUEZfTUFTSyAoQ1BGX09W
RVJXUklURXxDUEZfSUdOT1JFX01PREUpCgoKCgoKCgojZGVmaW5lIEZfRFVQRkQgMAojZGVmaW5l
IEZfR0VURkQgMQojZGVmaW5lIEZfU0VURkQgMgojZGVmaW5lIEZfR0VURkwgMwojZGVmaW5lIEZf
U0VURkwgNAojZGVmaW5lIEZfR0VUT1dOIDUKI2RlZmluZSBGX1NFVE9XTiA2CiNkZWZpbmUgRl9H
RVRMSyA3CiNkZWZpbmUgRl9TRVRMSyA4CiNkZWZpbmUgRl9TRVRMS1cgOQoKI2RlZmluZSBGX0NI
S0NMRUFOIDQxCiNkZWZpbmUgRl9QUkVBTExPQ0FURSA0MgojZGVmaW5lIEZfU0VUU0laRSA0Mwoj
ZGVmaW5lIEZfUkRBRFZJU0UgNDQKI2RlZmluZSBGX1JEQUhFQUQgNDUKI2RlZmluZSBGX1JFQURC
T09UU1RSQVAgNDYKI2RlZmluZSBGX1dSSVRFQk9PVFNUUkFQIDQ3CiNkZWZpbmUgRl9OT0NBQ0hF
IDQ4CiNkZWZpbmUgRl9MT0cyUEhZUyA0OQojZGVmaW5lIEZfR0VUUEFUSCA1MAojZGVmaW5lIEZf
RlVMTEZTWU5DIDUxCiNkZWZpbmUgRl9QQVRIUEtHX0NIRUNLIDUyCiNkZWZpbmUgRl9GUkVFWkVf
RlMgNTMKI2RlZmluZSBGX1RIQVdfRlMgNTQKI2RlZmluZSBGX0dMT0JBTF9OT0NBQ0hFIDU1CgoK
I2RlZmluZSBGX0FERFNJR1MgNTkKCiNkZWZpbmUgRl9NQVJLREVQRU5ERU5DWSA2MAoKI2RlZmlu
ZSBGX0FEREZJTEVTSUdTIDYxCgojZGVmaW5lIEZfR0VUUFJPVEVDVElPTkNMQVNTIDYyCiNkZWZp
bmUgRl9TRVRQUk9URUNUSU9OQ0xBU1MgNjMKCgojZGVmaW5lIEZDTlRMX0ZTX1NQRUNJRklDX0JB
U0UgMHgwMDAxMDAwMAoKCgoKI2RlZmluZSBGRF9DTE9FWEVDIDEKCgojZGVmaW5lIEZfUkRMQ0sg
MQojZGVmaW5lIEZfVU5MQ0sgMgojZGVmaW5lIEZfV1JMQ0sgMwojIDI1NiAiL3Vzci9pbmNsdWRl
L3N5cy9mY250bC5oIiAzIDQKI2RlZmluZSBTX0lGTVQgMDE3MDAwMAojZGVmaW5lIFNfSUZJRk8g
MDAxMDAwMAojZGVmaW5lIFNfSUZDSFIgMDAyMDAwMAojZGVmaW5lIFNfSUZESVIgMDA0MDAwMAoj
ZGVmaW5lIFNfSUZCTEsgMDA2MDAwMAojZGVmaW5lIFNfSUZSRUcgMDEwMDAwMAojZGVmaW5lIFNf
SUZMTksgMDEyMDAwMAojZGVmaW5lIFNfSUZTT0NLIDAxNDAwMDAKCiNkZWZpbmUgU19JRldIVCAw
MTYwMDAwCgoKCgojZGVmaW5lIFNfSVJXWFUgMDAwMDcwMAojZGVmaW5lIFNfSVJVU1IgMDAwMDQw
MAojZGVmaW5lIFNfSVdVU1IgMDAwMDIwMAojZGVmaW5lIFNfSVhVU1IgMDAwMDEwMAoKI2RlZmlu
ZSBTX0lSV1hHIDAwMDAwNzAKI2RlZmluZSBTX0lSR1JQIDAwMDAwNDAKI2RlZmluZSBTX0lXR1JQ
IDAwMDAwMjAKI2RlZmluZSBTX0lYR1JQIDAwMDAwMTAKCiNkZWZpbmUgU19JUldYTyAwMDAwMDA3
CiNkZWZpbmUgU19JUk9USCAwMDAwMDA0CiNkZWZpbmUgU19JV09USCAwMDAwMDAyCiNkZWZpbmUg
U19JWE9USCAwMDAwMDAxCgojZGVmaW5lIFNfSVNVSUQgMDAwNDAwMAojZGVmaW5lIFNfSVNHSUQg
MDAwMjAwMAojZGVmaW5lIFNfSVNWVFggMDAwMTAwMAoKCiNkZWZpbmUgU19JU1RYVCBTX0lTVlRY
CiNkZWZpbmUgU19JUkVBRCBTX0lSVVNSCiNkZWZpbmUgU19JV1JJVEUgU19JV1VTUgojZGVmaW5l
IFNfSUVYRUMgU19JWFVTUgoKCgoKCgojZGVmaW5lIEZfQUxMT0NBVEVDT05USUcgMHgwMDAwMDAw
MgojZGVmaW5lIEZfQUxMT0NBVEVBTEwgMHgwMDAwMDAwNAoKCgojZGVmaW5lIEZfUEVPRlBPU01P
REUgMwoKI2RlZmluZSBGX1ZPTFBPU01PREUgNAoKCgoKCgpzdHJ1Y3QgZmxvY2sgewogb2ZmX3Qg
bF9zdGFydDsKIG9mZl90IGxfbGVuOwogcGlkX3QgbF9waWQ7CiBzaG9ydCBsX3R5cGU7CiBzaG9y
dCBsX3doZW5jZTsKfTsKIyAzMzAgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CnN0cnVj
dCByYWR2aXNvcnkgewogICAgICAgb2ZmX3QgcmFfb2Zmc2V0OwogICAgICAgaW50IHJhX2NvdW50
Owp9OwojIDM0MiAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3Qg
ZnNpZ25hdHVyZXMgewogb2ZmX3QgZnNfZmlsZV9zdGFydDsKIHZvaWQgKmZzX2Jsb2Jfc3RhcnQ7
CiBzaXplX3QgZnNfYmxvYl9zaXplOwp9IGZzaWduYXR1cmVzX3Q7CgoKI2RlZmluZSBMT0NLX1NI
IDB4MDEKI2RlZmluZSBMT0NLX0VYIDB4MDIKI2RlZmluZSBMT0NLX05CIDB4MDQKI2RlZmluZSBM
T0NLX1VOIDB4MDgKCgoKdHlwZWRlZiBzdHJ1Y3QgZnN0b3JlIHsKIHVuc2lnbmVkIGludCBmc3Rf
ZmxhZ3M7CiBpbnQgZnN0X3Bvc21vZGU7CiBvZmZfdCBmc3Rfb2Zmc2V0Owogb2ZmX3QgZnN0X2xl
bmd0aDsKIG9mZl90IGZzdF9ieXRlc2FsbG9jOwp9IGZzdG9yZV90OwoKCgp0eXBlZGVmIHN0cnVj
dCBmYm9vdHN0cmFwdHJhbnNmZXIgewogIG9mZl90IGZidF9vZmZzZXQ7CiAgc2l6ZV90IGZidF9s
ZW5ndGg7CiAgdm9pZCAqZmJ0X2J1ZmZlcjsKfSBmYm9vdHN0cmFwdHJhbnNmZXJfdDsKIyAzODkg
Ii91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CiNwcmFnbWEgcGFjayg0KQoKc3RydWN0IGxv
ZzJwaHlzIHsKIHVuc2lnbmVkIGludCBsMnBfZmxhZ3M7CiBvZmZfdCBsMnBfY29udGlnYnl0ZXM7
CiBvZmZfdCBsMnBfZGV2b2Zmc2V0Owp9OwoKI3ByYWdtYSBwYWNrKCkKCiNkZWZpbmUgT19QT1BV
UCAweDgwMDAwMDAwCiNkZWZpbmUgT19BTEVSVCAweDIwMDAwMDAwCgoKCgoKCgpzdHJ1Y3QgX2Zp
bGVzZWM7CnR5cGVkZWYgc3RydWN0IF9maWxlc2VjICpmaWxlc2VjX3Q7CiNkZWZpbmUgX0ZJTEVT
RUNfVCAKCnR5cGVkZWYgZW51bSB7CiBGSUxFU0VDX09XTkVSID0gMSwKIEZJTEVTRUNfR1JPVVAg
PSAyLAogRklMRVNFQ19VVUlEID0gMywKIEZJTEVTRUNfTU9ERSA9IDQsCiBGSUxFU0VDX0FDTCA9
IDUsCiBGSUxFU0VDX0dSUFVVSUQgPSA2LAoKCiBGSUxFU0VDX0FDTF9SQVcgPSAxMDAsCiBGSUxF
U0VDX0FDTF9BTExPQ1NJWkUgPSAxMDEKfSBmaWxlc2VjX3Byb3BlcnR5X3Q7CgoKI2RlZmluZSBG
SUxFU0VDX0dVSUQgRklMRVNFQ19VVUlECgoKZXh0ZXJuICJDIiB7CmludCBvcGVuKGNvbnN0IGNo
YXIgKiwgaW50LCAuLi4pIF9fYXNtKCJfIiAib3BlbiIgKTsKaW50IGNyZWF0KGNvbnN0IGNoYXIg
KiwgbW9kZV90KSBfX2FzbSgiXyIgImNyZWF0IiApOwppbnQgZmNudGwoaW50LCBpbnQsIC4uLikg
X19hc20oIl8iICJmY250bCIgKTsKCgppbnQgb3BlbnhfbnAoY29uc3QgY2hhciAqLCBpbnQsIGZp
bGVzZWNfdCk7CmludCBmbG9jayhpbnQsIGludCk7CmZpbGVzZWNfdCBmaWxlc2VjX2luaXQodm9p
ZCk7CmZpbGVzZWNfdCBmaWxlc2VjX2R1cChmaWxlc2VjX3QpOwp2b2lkIGZpbGVzZWNfZnJlZShm
aWxlc2VjX3QpOwppbnQgZmlsZXNlY19nZXRfcHJvcGVydHkoZmlsZXNlY190LCBmaWxlc2VjX3By
b3BlcnR5X3QsIHZvaWQgKik7CmludCBmaWxlc2VjX3F1ZXJ5X3Byb3BlcnR5KGZpbGVzZWNfdCwg
ZmlsZXNlY19wcm9wZXJ0eV90LCBpbnQgKik7CmludCBmaWxlc2VjX3NldF9wcm9wZXJ0eShmaWxl
c2VjX3QsIGZpbGVzZWNfcHJvcGVydHlfdCwgY29uc3Qgdm9pZCAqKTsKaW50IGZpbGVzZWNfdW5z
ZXRfcHJvcGVydHkoZmlsZXNlY190LCBmaWxlc2VjX3Byb3BlcnR5X3QpOwojZGVmaW5lIF9GSUxF
U0VDX1VOU0VUX1BST1BFUlRZICgodm9pZCAqKTApCiNkZWZpbmUgX0ZJTEVTRUNfUkVNT1ZFX0FD
TCAoKHZvaWQgKikxKQoKfQojIDYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9G
aWxlcy5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2FjbC5oIiAxIDMgNAojIDI0ICIvdXNy
L2luY2x1ZGUvc3lzL2FjbC5oIiAzIDQKI2RlZmluZSBfU1lTX0FDTF9IIAoKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL2thdXRoLmgiIDEgMyA0CiMgMzYgIi91c3IvaW5jbHVkZS9zeXMva2F1dGguaCIg
MyA0CiNkZWZpbmUgX1NZU19LQVVUSF9IIAojIDQ5ICIvdXNyL2luY2x1ZGUvc3lzL2thdXRoLmgi
IDMgNAojZGVmaW5lIEtBVVRIX1VJRF9OT05FICh+KHVpZF90KTAgLSAxMDApCiNkZWZpbmUgS0FV
VEhfR0lEX05PTkUgKH4oZ2lkX3QpMCAtIDEwMCkKCgojZGVmaW5lIF9LQVVUSF9HVUlEIAoKdHlw
ZWRlZiBzdHJ1Y3QgewojZGVmaW5lIEtBVVRIX0dVSURfU0laRSAxNgogdW5zaWduZWQgY2hhciBn
X2d1aWRbMTZdOwp9IGd1aWRfdDsKI2RlZmluZSBfR1VJRF9UIAoKCgojcHJhZ21hIHBhY2soMSkK
dHlwZWRlZiBzdHJ1Y3QgewogdV9pbnQ4X3Qgc2lkX2tpbmQ7CiB1X2ludDhfdCBzaWRfYXV0aGNv
dW50OwogdV9pbnQ4X3Qgc2lkX2F1dGhvcml0eVs2XTsKI2RlZmluZSBLQVVUSF9OVFNJRF9NQVhf
QVVUSE9SSVRJRVMgMTYKIHVfaW50MzJfdCBzaWRfYXV0aG9yaXRpZXNbMTZdOwp9IG50c2lkX3Q7
CiNwcmFnbWEgcGFjaygpCiNkZWZpbmUgX05UU0lEX1QgCgoKI2RlZmluZSBLQVVUSF9OVFNJRF9I
RFJTSVpFICg4KQojZGVmaW5lIEtBVVRIX05UU0lEX1NJWkUoX3MpIChLQVVUSF9OVFNJRF9IRFJT
SVpFICsgKChfcyktPnNpZF9hdXRoY291bnQgKiBzaXplb2YodV9pbnQzMl90KSkpCiMgODUgIi91
c3IvaW5jbHVkZS9zeXMva2F1dGguaCIgMyA0CnN0cnVjdCBrYXV0aF9pZGVudGl0eV9leHRsb29r
dXAgewogdV9pbnQzMl90IGVsX3NlcW5vOwogdV9pbnQzMl90IGVsX3Jlc3VsdDsKI2RlZmluZSBL
QVVUSF9FWFRMT09LVVBfU1VDQ0VTUyAwCiNkZWZpbmUgS0FVVEhfRVhUTE9PS1VQX0JBRFJRIDEK
I2RlZmluZSBLQVVUSF9FWFRMT09LVVBfRkFJTFVSRSAyCiNkZWZpbmUgS0FVVEhfRVhUTE9PS1VQ
X0ZBVEFMIDMKI2RlZmluZSBLQVVUSF9FWFRMT09LVVBfSU5QUk9HIDEwMAogdV9pbnQzMl90IGVs
X2ZsYWdzOwojZGVmaW5lIEtBVVRIX0VYVExPT0tVUF9WQUxJRF9VSUQgKDE8PDApCiNkZWZpbmUg
S0FVVEhfRVhUTE9PS1VQX1ZBTElEX1VHVUlEICgxPDwxKQojZGVmaW5lIEtBVVRIX0VYVExPT0tV
UF9WQUxJRF9VU0lEICgxPDwyKQojZGVmaW5lIEtBVVRIX0VYVExPT0tVUF9WQUxJRF9HSUQgKDE8
PDMpCiNkZWZpbmUgS0FVVEhfRVhUTE9PS1VQX1ZBTElEX0dHVUlEICgxPDw0KQojZGVmaW5lIEtB
VVRIX0VYVExPT0tVUF9WQUxJRF9HU0lEICgxPDw1KQojZGVmaW5lIEtBVVRIX0VYVExPT0tVUF9X
QU5UX1VJRCAoMTw8NikKI2RlZmluZSBLQVVUSF9FWFRMT09LVVBfV0FOVF9VR1VJRCAoMTw8NykK
I2RlZmluZSBLQVVUSF9FWFRMT09LVVBfV0FOVF9VU0lEICgxPDw4KQojZGVmaW5lIEtBVVRIX0VY
VExPT0tVUF9XQU5UX0dJRCAoMTw8OSkKI2RlZmluZSBLQVVUSF9FWFRMT09LVVBfV0FOVF9HR1VJ
RCAoMTw8MTApCiNkZWZpbmUgS0FVVEhfRVhUTE9PS1VQX1dBTlRfR1NJRCAoMTw8MTEpCiNkZWZp
bmUgS0FVVEhfRVhUTE9PS1VQX1dBTlRfTUVNQkVSU0hJUCAoMTw8MTIpCiNkZWZpbmUgS0FVVEhf
RVhUTE9PS1VQX1ZBTElEX01FTUJFUlNISVAgKDE8PDEzKQojZGVmaW5lIEtBVVRIX0VYVExPT0tV
UF9JU01FTUJFUiAoMTw8MTQpCgogX19kYXJ3aW5fcGlkX3QgZWxfaW5mb19waWQ7CiB1X2ludDMy
X3QgZWxfaW5mb19yZXNlcnZlZF8xOwogdV9pbnQzMl90IGVsX2luZm9fcmVzZXJ2ZWRfMjsKIHVf
aW50MzJfdCBlbF9pbmZvX3Jlc2VydmVkXzM7CgogdWlkX3QgZWxfdWlkOwogZ3VpZF90IGVsX3Vn
dWlkOwogdV9pbnQzMl90IGVsX3VndWlkX3ZhbGlkOwogbnRzaWRfdCBlbF91c2lkOwogdV9pbnQz
Ml90IGVsX3VzaWRfdmFsaWQ7CiBnaWRfdCBlbF9naWQ7CiBndWlkX3QgZWxfZ2d1aWQ7CiB1X2lu
dDMyX3QgZWxfZ2d1aWRfdmFsaWQ7CiBudHNpZF90IGVsX2dzaWQ7CiB1X2ludDMyX3QgZWxfZ3Np
ZF92YWxpZDsKIHVfaW50MzJfdCBlbF9tZW1iZXJfdmFsaWQ7Cn07CgojZGVmaW5lIEtBVVRIX0VY
VExPT0tVUF9SRUdJU1RFUiAoMCkKI2RlZmluZSBLQVVUSF9FWFRMT09LVVBfUkVTVUxUICgxPDww
KQojZGVmaW5lIEtBVVRIX0VYVExPT0tVUF9XT1JLRVIgKDE8PDEpCiNkZWZpbmUgS0FVVEhfRVhU
TE9PS1VQX0RFUkVHSVNURVIgKDE8PDIpCiMgMTQwICIvdXNyL2luY2x1ZGUvc3lzL2thdXRoLmgi
IDMgNAp0eXBlZGVmIHVfaW50MzJfdCBrYXV0aF9hY2VfcmlnaHRzX3Q7CgoKc3RydWN0IGthdXRo
X2FjZSB7CiBndWlkX3QgYWNlX2FwcGxpY2FibGU7CiB1X2ludDMyX3QgYWNlX2ZsYWdzOwojZGVm
aW5lIEtBVVRIX0FDRV9LSU5ETUFTSyAweGYKI2RlZmluZSBLQVVUSF9BQ0VfUEVSTUlUIDEKI2Rl
ZmluZSBLQVVUSF9BQ0VfREVOWSAyCiNkZWZpbmUgS0FVVEhfQUNFX0FVRElUIDMKI2RlZmluZSBL
QVVUSF9BQ0VfQUxBUk0gNAojZGVmaW5lIEtBVVRIX0FDRV9JTkhFUklURUQgKDE8PDQpCiNkZWZp
bmUgS0FVVEhfQUNFX0ZJTEVfSU5IRVJJVCAoMTw8NSkKI2RlZmluZSBLQVVUSF9BQ0VfRElSRUNU
T1JZX0lOSEVSSVQgKDE8PDYpCiNkZWZpbmUgS0FVVEhfQUNFX0xJTUlUX0lOSEVSSVQgKDE8PDcp
CiNkZWZpbmUgS0FVVEhfQUNFX09OTFlfSU5IRVJJVCAoMTw8OCkKI2RlZmluZSBLQVVUSF9BQ0Vf
U1VDQ0VTUyAoMTw8OSkKI2RlZmluZSBLQVVUSF9BQ0VfRkFJTFVSRSAoMTw8MTApCgojZGVmaW5l
IEtBVVRIX0FDRV9JTkhFUklUX0NPTlRST0xfRkxBR1MgKEtBVVRIX0FDRV9GSUxFX0lOSEVSSVQg
fCBLQVVUSF9BQ0VfRElSRUNUT1JZX0lOSEVSSVQgfCBLQVVUSF9BQ0VfTElNSVRfSU5IRVJJVCB8
IEtBVVRIX0FDRV9PTkxZX0lOSEVSSVQpCgoKCgoga2F1dGhfYWNlX3JpZ2h0c190IGFjZV9yaWdo
dHM7CgojZGVmaW5lIEtBVVRIX0FDRV9HRU5FUklDX0FMTCAoMTw8MjEpCiNkZWZpbmUgS0FVVEhf
QUNFX0dFTkVSSUNfRVhFQ1VURSAoMTw8MjIpCiNkZWZpbmUgS0FVVEhfQUNFX0dFTkVSSUNfV1JJ
VEUgKDE8PDIzKQojZGVmaW5lIEtBVVRIX0FDRV9HRU5FUklDX1JFQUQgKDE8PDI0KQoKfTsKCgoj
ZGVmaW5lIF9LQVVUSF9BQ0UgCnR5cGVkZWYgc3RydWN0IGthdXRoX2FjZSAqa2F1dGhfYWNlX3Q7
CgoKCgpzdHJ1Y3Qga2F1dGhfYWNsIHsKIHVfaW50MzJfdCBhY2xfZW50cnljb3VudDsKIHVfaW50
MzJfdCBhY2xfZmxhZ3M7Cgogc3RydWN0IGthdXRoX2FjZSBhY2xfYWNlWzFdOwp9OwoKCgoKI2Rl
ZmluZSBLQVVUSF9BQ0xfTUFYX0VOVFJJRVMgMTI4CgoKCgoKCiNkZWZpbmUgS0FVVEhfQUNMX0ZM
QUdTX1BSSVZBVEUgKDB4ZmZmZikKCgoKCgoKCiNkZWZpbmUgS0FVVEhfQUNMX0RFRkVSX0lOSEVS
SVQgKDE8PDE2KQoKI2RlZmluZSBLQVVUSF9BQ0xfTk9fSU5IRVJJVCAoMTw8MTcpCgoKI2RlZmlu
ZSBLQVVUSF9GSUxFU0VDX05PQUNMICgodV9pbnQzMl90KSgtMSkpCiMgMjE5ICIvdXNyL2luY2x1
ZGUvc3lzL2thdXRoLmgiIDMgNAojZGVmaW5lIEtBVVRIX0FDTF9TSVpFKGMpIChfX29mZnNldG9m
KHN0cnVjdCBrYXV0aF9hY2wsIGFjbF9hY2UpICsgKCh1X2ludDMyX3QpKGMpICE9IEtBVVRIX0ZJ
TEVTRUNfTk9BQ0wgPyAoKGMpICogc2l6ZW9mKHN0cnVjdCBrYXV0aF9hY2UpKSA6IDApKQojZGVm
aW5lIEtBVVRIX0FDTF9DT1BZU0laRShwKSBLQVVUSF9BQ0xfU0laRSgocCktPmFjbF9lbnRyeWNv
dW50KQoKCgojZGVmaW5lIF9LQVVUSF9BQ0wgCnR5cGVkZWYgc3RydWN0IGthdXRoX2FjbCAqa2F1
dGhfYWNsX3Q7CiMgMjM1ICIvdXNyL2luY2x1ZGUvc3lzL2thdXRoLmgiIDMgNApzdHJ1Y3Qga2F1
dGhfZmlsZXNlYyB7CiB1X2ludDMyX3QgZnNlY19tYWdpYzsKI2RlZmluZSBLQVVUSF9GSUxFU0VD
X01BR0lDIDB4MDEyY2MxNmQKIGd1aWRfdCBmc2VjX293bmVyOwogZ3VpZF90IGZzZWNfZ3JvdXA7
Cgogc3RydWN0IGthdXRoX2FjbCBmc2VjX2FjbDsKfTsKCgojZGVmaW5lIGZzZWNfZW50cnljb3Vu
dCBmc2VjX2FjbC5hY2xfZW50cnljb3VudAojZGVmaW5lIGZzZWNfZmxhZ3MgZnNlY19hY2wuYWNs
X2ZsYWdzCiNkZWZpbmUgZnNlY19hY2UgZnNlY19hY2wuYWNsX2FjZQojZGVmaW5lIEtBVVRIX0ZJ
TEVTRUNfRkxBR1NfUFJJVkFURSBLQVVUSF9BQ0xfRkxBR1NfUFJJVkFURQojZGVmaW5lIEtBVVRI
X0ZJTEVTRUNfREVGRVJfSU5IRVJJVCBLQVVUSF9BQ0xfREVGRVJfSU5IRVJJVAojZGVmaW5lIEtB
VVRIX0ZJTEVTRUNfTk9fSU5IRVJJVCBLQVVUSF9BQ0xfTk9fSU5IRVJJVAojZGVmaW5lIEtBVVRI
X0ZJTEVTRUNfTk9ORSAoKGthdXRoX2ZpbGVzZWNfdCkwKQojZGVmaW5lIEtBVVRIX0ZJTEVTRUNf
V0FOVEVEICgoa2F1dGhfZmlsZXNlY190KTEpCgoKI2RlZmluZSBfS0FVVEhfRklMRVNFQyAKdHlw
ZWRlZiBzdHJ1Y3Qga2F1dGhfZmlsZXNlYyAqa2F1dGhfZmlsZXNlY190OwoKCiNkZWZpbmUgS0FV
VEhfRklMRVNFQ19TSVpFKGMpIChfX29mZnNldG9mKHN0cnVjdCBrYXV0aF9maWxlc2VjLCBmc2Vj
X2FjbCkgKyBfX29mZnNldG9mKHN0cnVjdCBrYXV0aF9hY2wsIGFjbF9hY2UpICsgKGMpICogc2l6
ZW9mKHN0cnVjdCBrYXV0aF9hY2UpKQojZGVmaW5lIEtBVVRIX0ZJTEVTRUNfQ09QWVNJWkUocCkg
S0FVVEhfRklMRVNFQ19TSVpFKCgocCktPmZzZWNfZW50cnljb3VudCA9PSBLQVVUSF9GSUxFU0VD
X05PQUNMKSA/IDAgOiAocCktPmZzZWNfZW50cnljb3VudCkKI2RlZmluZSBLQVVUSF9GSUxFU0VD
X0NPVU5UKHMpICgoKHMpIC0gS0FVVEhfRklMRVNFQ19TSVpFKDApKSAvIHNpemVvZihzdHJ1Y3Qg
a2F1dGhfYWNlKSkKI2RlZmluZSBLQVVUSF9GSUxFU0VDX1ZBTElEKHMpICgocykgPj0gS0FVVEhf
RklMRVNFQ19TSVpFKDApICYmICgoKHMpIC0gS0FVVEhfRklMRVNFQ19TSVpFKDApKSAlIHNpemVv
ZihzdHJ1Y3Qga2F1dGhfYWNlKSkgPT0gMCkKCiNkZWZpbmUgS0FVVEhfRklMRVNFQ19YQVRUUiAi
Y29tLmFwcGxlLnN5c3RlbS5TZWN1cml0eSIKCgojZGVmaW5lIEtBVVRIX0VORElBTl9IT1NUIDB4
MDAwMDAwMDEKI2RlZmluZSBLQVVUSF9FTkRJQU5fRElTSyAweDAwMDAwMDAyCiMgMjc3ICIvdXNy
L2luY2x1ZGUvc3lzL2thdXRoLmgiIDMgNAojZGVmaW5lIEtBVVRIX1ZOT0RFX1JFQURfREFUQSAo
MTw8MSkKI2RlZmluZSBLQVVUSF9WTk9ERV9MSVNUX0RJUkVDVE9SWSBLQVVUSF9WTk9ERV9SRUFE
X0RBVEEKI2RlZmluZSBLQVVUSF9WTk9ERV9XUklURV9EQVRBICgxPDwyKQojZGVmaW5lIEtBVVRI
X1ZOT0RFX0FERF9GSUxFIEtBVVRIX1ZOT0RFX1dSSVRFX0RBVEEKI2RlZmluZSBLQVVUSF9WTk9E
RV9FWEVDVVRFICgxPDwzKQojZGVmaW5lIEtBVVRIX1ZOT0RFX1NFQVJDSCBLQVVUSF9WTk9ERV9F
WEVDVVRFCiNkZWZpbmUgS0FVVEhfVk5PREVfREVMRVRFICgxPDw0KQojZGVmaW5lIEtBVVRIX1ZO
T0RFX0FQUEVORF9EQVRBICgxPDw1KQojZGVmaW5lIEtBVVRIX1ZOT0RFX0FERF9TVUJESVJFQ1RP
UlkgS0FVVEhfVk5PREVfQVBQRU5EX0RBVEEKI2RlZmluZSBLQVVUSF9WTk9ERV9ERUxFVEVfQ0hJ
TEQgKDE8PDYpCiNkZWZpbmUgS0FVVEhfVk5PREVfUkVBRF9BVFRSSUJVVEVTICgxPDw3KQojZGVm
aW5lIEtBVVRIX1ZOT0RFX1dSSVRFX0FUVFJJQlVURVMgKDE8PDgpCiNkZWZpbmUgS0FVVEhfVk5P
REVfUkVBRF9FWFRBVFRSSUJVVEVTICgxPDw5KQojZGVmaW5lIEtBVVRIX1ZOT0RFX1dSSVRFX0VY
VEFUVFJJQlVURVMgKDE8PDEwKQojZGVmaW5lIEtBVVRIX1ZOT0RFX1JFQURfU0VDVVJJVFkgKDE8
PDExKQojZGVmaW5lIEtBVVRIX1ZOT0RFX1dSSVRFX1NFQ1VSSVRZICgxPDwxMikKI2RlZmluZSBL
QVVUSF9WTk9ERV9UQUtFX09XTkVSU0hJUCAoMTw8MTMpCgoKI2RlZmluZSBLQVVUSF9WTk9ERV9D
SEFOR0VfT1dORVIgS0FVVEhfVk5PREVfVEFLRV9PV05FUlNISVAKCgojZGVmaW5lIEtBVVRIX1ZO
T0RFX1NZTkNIUk9OSVpFICgxPDwyMCkKCgoKCgoKCiNkZWZpbmUgS0FVVEhfVk5PREVfTElOS1RB
UkdFVCAoMTw8MjUpCgoKCgoKI2RlZmluZSBLQVVUSF9WTk9ERV9DSEVDS0lNTVVUQUJMRSAoMTw8
MjYpCiMgMzI0ICIvdXNyL2luY2x1ZGUvc3lzL2thdXRoLmgiIDMgNAojZGVmaW5lIEtBVVRIX1ZO
T0RFX0FDQ0VTUyAoMTw8MzEpCiMgMzM0ICIvdXNyL2luY2x1ZGUvc3lzL2thdXRoLmgiIDMgNAoj
ZGVmaW5lIEtBVVRIX1ZOT0RFX05PSU1NVVRBQkxFICgxPDwzMCkKIyAzNDUgIi91c3IvaW5jbHVk
ZS9zeXMva2F1dGguaCIgMyA0CiNkZWZpbmUgS0FVVEhfVk5PREVfU0VBUkNIQllBTllPTkUgKDE8
PDI5KQoKCgoKCgoKI2RlZmluZSBLQVVUSF9JTlZBTElEQVRFX0NBQ0hFRF9SSUdIVFMgKChrYXV0
aF9hY3Rpb25fdCl+MCkKCgoKCiNkZWZpbmUgS0FVVEhfVk5PREVfR0VORVJJQ19SRUFEX0JJVFMg
KEtBVVRIX1ZOT0RFX1JFQURfREFUQSB8IEtBVVRIX1ZOT0RFX1JFQURfQVRUUklCVVRFUyB8IEtB
VVRIX1ZOT0RFX1JFQURfRVhUQVRUUklCVVRFUyB8IEtBVVRIX1ZOT0RFX1JFQURfU0VDVVJJVFkp
CgoKCgojZGVmaW5lIEtBVVRIX1ZOT0RFX0dFTkVSSUNfV1JJVEVfQklUUyAoS0FVVEhfVk5PREVf
V1JJVEVfREFUQSB8IEtBVVRIX1ZOT0RFX0FQUEVORF9EQVRBIHwgS0FVVEhfVk5PREVfREVMRVRF
IHwgS0FVVEhfVk5PREVfREVMRVRFX0NISUxEIHwgS0FVVEhfVk5PREVfV1JJVEVfQVRUUklCVVRF
UyB8IEtBVVRIX1ZOT0RFX1dSSVRFX0VYVEFUVFJJQlVURVMgfCBLQVVUSF9WTk9ERV9XUklURV9T
RUNVUklUWSkKCgoKCgoKCiNkZWZpbmUgS0FVVEhfVk5PREVfR0VORVJJQ19FWEVDVVRFX0JJVFMg
KEtBVVRIX1ZOT0RFX0VYRUNVVEUpCgojZGVmaW5lIEtBVVRIX1ZOT0RFX0dFTkVSSUNfQUxMX0JJ
VFMgKEtBVVRIX1ZOT0RFX0dFTkVSSUNfUkVBRF9CSVRTIHwgS0FVVEhfVk5PREVfR0VORVJJQ19X
UklURV9CSVRTIHwgS0FVVEhfVk5PREVfR0VORVJJQ19FWEVDVVRFX0JJVFMpCgoKCgoKCiNkZWZp
bmUgS0FVVEhfVk5PREVfV1JJVEVfUklHSFRTIChLQVVUSF9WTk9ERV9BRERfRklMRSB8IEtBVVRI
X1ZOT0RFX0FERF9TVUJESVJFQ1RPUlkgfCBLQVVUSF9WTk9ERV9ERUxFVEVfQ0hJTEQgfCBLQVVU
SF9WTk9ERV9XUklURV9EQVRBIHwgS0FVVEhfVk5PREVfQVBQRU5EX0RBVEEgfCBLQVVUSF9WTk9E
RV9ERUxFVEUgfCBLQVVUSF9WTk9ERV9XUklURV9BVFRSSUJVVEVTIHwgS0FVVEhfVk5PREVfV1JJ
VEVfRVhUQVRUUklCVVRFUyB8IEtBVVRIX1ZOT0RFX1dSSVRFX1NFQ1VSSVRZIHwgS0FVVEhfVk5P
REVfVEFLRV9PV05FUlNISVAgfCBLQVVUSF9WTk9ERV9MSU5LVEFSR0VUIHwgS0FVVEhfVk5PREVf
Q0hFQ0tJTU1VVEFCTEUpCiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvYWNsLmgiIDIgMyA0CiMgMzUg
Ii91c3IvaW5jbHVkZS9zeXMvYWNsLmgiIDMgNAojZGVmaW5lIEFDTF9NQVhfRU5UUklFUyAxMjgK
Cgp0eXBlZGVmIGVudW0gewogQUNMX1JFQURfREFUQSA9ICgxPDwxKSwKIEFDTF9MSVNUX0RJUkVD
VE9SWSA9ICgxPDwxKSwKIEFDTF9XUklURV9EQVRBID0gKDE8PDIpLAogQUNMX0FERF9GSUxFID0g
KDE8PDIpLAogQUNMX0VYRUNVVEUgPSAoMTw8MyksCiBBQ0xfU0VBUkNIID0gKDE8PDMpLAogQUNM
X0RFTEVURSA9ICgxPDw0KSwKIEFDTF9BUFBFTkRfREFUQSA9ICgxPDw1KSwKIEFDTF9BRERfU1VC
RElSRUNUT1JZID0gKDE8PDUpLAogQUNMX0RFTEVURV9DSElMRCA9ICgxPDw2KSwKIEFDTF9SRUFE
X0FUVFJJQlVURVMgPSAoMTw8NyksCiBBQ0xfV1JJVEVfQVRUUklCVVRFUyA9ICgxPDw4KSwKIEFD
TF9SRUFEX0VYVEFUVFJJQlVURVMgPSAoMTw8OSksCiBBQ0xfV1JJVEVfRVhUQVRUUklCVVRFUyA9
ICgxPDwxMCksCiBBQ0xfUkVBRF9TRUNVUklUWSA9ICgxPDwxMSksCiBBQ0xfV1JJVEVfU0VDVVJJ
VFkgPSAoMTw8MTIpLAogQUNMX0NIQU5HRV9PV05FUiA9ICgxPDwxMykKfSBhY2xfcGVybV90OwoK
CnR5cGVkZWYgZW51bSB7CiBBQ0xfVU5ERUZJTkVEX1RBRyA9IDAsCiBBQ0xfRVhURU5ERURfQUxM
T1cgPSAxLAogQUNMX0VYVEVOREVEX0RFTlkgPSAyCn0gYWNsX3RhZ190OwoKCnR5cGVkZWYgZW51
bSB7CiBBQ0xfVFlQRV9FWFRFTkRFRCA9IDB4MDAwMDAxMDAsCgogQUNMX1RZUEVfQUNDRVNTID0g
MHgwMDAwMDAwMCwKIEFDTF9UWVBFX0RFRkFVTFQgPSAweDAwMDAwMDAxLAoKIEFDTF9UWVBFX0FG
UyA9IDB4MDAwMDAwMDIsCiBBQ0xfVFlQRV9DT0RBID0gMHgwMDAwMDAwMywKIEFDTF9UWVBFX05U
RlMgPSAweDAwMDAwMDA0LAogQUNMX1RZUEVfTldGUyA9IDB4MDAwMDAwMDUKfSBhY2xfdHlwZV90
OwoKCgojZGVmaW5lIEFDTF9VTkRFRklORURfSUQgTlVMTAoKCnR5cGVkZWYgZW51bSB7CiBBQ0xf
RklSU1RfRU5UUlkgPSAwLAogQUNMX05FWFRfRU5UUlkgPSAtMSwKIEFDTF9MQVNUX0VOVFJZID0g
LTIKfSBhY2xfZW50cnlfaWRfdDsKCgp0eXBlZGVmIGVudW0gewogQUNMX0ZMQUdfREVGRVJfSU5I
RVJJVCA9ICgxIDw8IDApLAogQUNMX0VOVFJZX0lOSEVSSVRFRCA9ICgxPDw0KSwKIEFDTF9FTlRS
WV9GSUxFX0lOSEVSSVQgPSAoMTw8NSksCiBBQ0xfRU5UUllfRElSRUNUT1JZX0lOSEVSSVQgPSAo
MTw8NiksCiBBQ0xfRU5UUllfTElNSVRfSU5IRVJJVCA9ICgxPDw3KSwKIEFDTF9FTlRSWV9PTkxZ
X0lOSEVSSVQgPSAoMTw8OCkKfSBhY2xfZmxhZ190OwoKCgpzdHJ1Y3QgX2FjbDsKc3RydWN0IF9h
Y2xfZW50cnk7CnN0cnVjdCBfYWNsX3Blcm1zZXQ7CnN0cnVjdCBfYWNsX2ZsYWdzZXQ7Cgp0eXBl
ZGVmIHN0cnVjdCBfYWNsICphY2xfdDsKdHlwZWRlZiBzdHJ1Y3QgX2FjbF9lbnRyeSAqYWNsX2Vu
dHJ5X3Q7CnR5cGVkZWYgc3RydWN0IF9hY2xfcGVybXNldCAqYWNsX3Blcm1zZXRfdDsKdHlwZWRl
ZiBzdHJ1Y3QgX2FjbF9mbGFnc2V0ICphY2xfZmxhZ3NldF90OwoKZXh0ZXJuICJDIiB7CgpleHRl
cm4gYWNsX3QgYWNsX2R1cChhY2xfdCBhY2wpOwpleHRlcm4gaW50IGFjbF9mcmVlKHZvaWQgKm9i
al9wKTsKZXh0ZXJuIGFjbF90IGFjbF9pbml0KGludCBjb3VudCk7CgoKZXh0ZXJuIGludCBhY2xf
Y29weV9lbnRyeShhY2xfZW50cnlfdCBkZXN0X2QsIGFjbF9lbnRyeV90IHNyY19kKTsKZXh0ZXJu
IGludCBhY2xfY3JlYXRlX2VudHJ5KGFjbF90ICphY2xfcCwgYWNsX2VudHJ5X3QgKmVudHJ5X3Ap
OwpleHRlcm4gaW50IGFjbF9jcmVhdGVfZW50cnlfbnAoYWNsX3QgKmFjbF9wLCBhY2xfZW50cnlf
dCAqZW50cnlfcCwgaW50IGVudHJ5X2luZGV4KTsKZXh0ZXJuIGludCBhY2xfZGVsZXRlX2VudHJ5
KGFjbF90IGFjbCwgYWNsX2VudHJ5X3QgZW50cnlfZCk7CmV4dGVybiBpbnQgYWNsX2dldF9lbnRy
eShhY2xfdCBhY2wsIGludCBlbnRyeV9pZCwgYWNsX2VudHJ5X3QgKmVudHJ5X3ApOwpleHRlcm4g
aW50IGFjbF92YWxpZChhY2xfdCBhY2wpOwpleHRlcm4gaW50IGFjbF92YWxpZF9mZF9ucChpbnQg
ZmQsIGFjbF90eXBlX3QgdHlwZSwgYWNsX3QgYWNsKTsKZXh0ZXJuIGludCBhY2xfdmFsaWRfZmls
ZV9ucChjb25zdCBjaGFyICpwYXRoLCBhY2xfdHlwZV90IHR5cGUsIGFjbF90IGFjbCk7CmV4dGVy
biBpbnQgYWNsX3ZhbGlkX2xpbmtfbnAoY29uc3QgY2hhciAqcGF0aCwgYWNsX3R5cGVfdCB0eXBl
LCBhY2xfdCBhY2wpOwoKCmV4dGVybiBpbnQgYWNsX2FkZF9wZXJtKGFjbF9wZXJtc2V0X3QgcGVy
bXNldF9kLCBhY2xfcGVybV90IHBlcm0pOwpleHRlcm4gaW50IGFjbF9jYWxjX21hc2soYWNsX3Qg
KmFjbF9wKTsKZXh0ZXJuIGludCBhY2xfY2xlYXJfcGVybXMoYWNsX3Blcm1zZXRfdCBwZXJtc2V0
X2QpOwpleHRlcm4gaW50IGFjbF9kZWxldGVfcGVybShhY2xfcGVybXNldF90IHBlcm1zZXRfZCwg
YWNsX3Blcm1fdCBwZXJtKTsKZXh0ZXJuIGludCBhY2xfZ2V0X3Blcm1fbnAoYWNsX3Blcm1zZXRf
dCBwZXJtc2V0X2QsIGFjbF9wZXJtX3QgcGVybSk7CmV4dGVybiBpbnQgYWNsX2dldF9wZXJtc2V0
KGFjbF9lbnRyeV90IGVudHJ5X2QsIGFjbF9wZXJtc2V0X3QgKnBlcm1zZXRfcCk7CmV4dGVybiBp
bnQgYWNsX3NldF9wZXJtc2V0KGFjbF9lbnRyeV90IGVudHJ5X2QsIGFjbF9wZXJtc2V0X3QgcGVy
bXNldF9kKTsKCgpleHRlcm4gaW50IGFjbF9hZGRfZmxhZ19ucChhY2xfZmxhZ3NldF90IGZsYWdz
ZXRfZCwgYWNsX2ZsYWdfdCBmbGFnKTsKZXh0ZXJuIGludCBhY2xfY2xlYXJfZmxhZ3NfbnAoYWNs
X2ZsYWdzZXRfdCBmbGFnc2V0X2QpOwpleHRlcm4gaW50IGFjbF9kZWxldGVfZmxhZ19ucChhY2xf
ZmxhZ3NldF90IGZsYWdzZXRfZCwgYWNsX2ZsYWdfdCBmbGFnKTsKZXh0ZXJuIGludCBhY2xfZ2V0
X2ZsYWdfbnAoYWNsX2ZsYWdzZXRfdCBmbGFnc2V0X2QsIGFjbF9mbGFnX3QgZmxhZyk7CmV4dGVy
biBpbnQgYWNsX2dldF9mbGFnc2V0X25wKHZvaWQgKm9ial9wLCBhY2xfZmxhZ3NldF90ICpmbGFn
c2V0X3ApOwpleHRlcm4gaW50IGFjbF9zZXRfZmxhZ3NldF9ucCh2b2lkICpvYmpfcCwgYWNsX2Zs
YWdzZXRfdCBmbGFnc2V0X2QpOwoKCmV4dGVybiB2b2lkICphY2xfZ2V0X3F1YWxpZmllcihhY2xf
ZW50cnlfdCBlbnRyeV9kKTsKZXh0ZXJuIGludCBhY2xfZ2V0X3RhZ190eXBlKGFjbF9lbnRyeV90
IGVudHJ5X2QsIGFjbF90YWdfdCAqdGFnX3R5cGVfcCk7CmV4dGVybiBpbnQgYWNsX3NldF9xdWFs
aWZpZXIoYWNsX2VudHJ5X3QgZW50cnlfZCwgY29uc3Qgdm9pZCAqdGFnX3F1YWxpZmllcl9wKTsK
ZXh0ZXJuIGludCBhY2xfc2V0X3RhZ190eXBlKGFjbF9lbnRyeV90IGVudHJ5X2QsIGFjbF90YWdf
dCB0YWdfdHlwZSk7CgoKZXh0ZXJuIGludCBhY2xfZGVsZXRlX2RlZl9maWxlKGNvbnN0IGNoYXIg
KnBhdGhfcCk7CmV4dGVybiBhY2xfdCBhY2xfZ2V0X2ZkKGludCBmZCk7CmV4dGVybiBhY2xfdCBh
Y2xfZ2V0X2ZkX25wKGludCBmZCwgYWNsX3R5cGVfdCB0eXBlKTsKZXh0ZXJuIGFjbF90IGFjbF9n
ZXRfZmlsZShjb25zdCBjaGFyICpwYXRoX3AsIGFjbF90eXBlX3QgdHlwZSk7CmV4dGVybiBhY2xf
dCBhY2xfZ2V0X2xpbmtfbnAoY29uc3QgY2hhciAqcGF0aF9wLCBhY2xfdHlwZV90IHR5cGUpOwpl
eHRlcm4gaW50IGFjbF9zZXRfZmQoaW50IGZkLCBhY2xfdCBhY2wpOwpleHRlcm4gaW50IGFjbF9z
ZXRfZmRfbnAoaW50IGZkLCBhY2xfdCBhY2wsIGFjbF90eXBlX3QgYWNsX3R5cGUpOwpleHRlcm4g
aW50IGFjbF9zZXRfZmlsZShjb25zdCBjaGFyICpwYXRoX3AsIGFjbF90eXBlX3QgdHlwZSwgYWNs
X3QgYWNsKTsKZXh0ZXJuIGludCBhY2xfc2V0X2xpbmtfbnAoY29uc3QgY2hhciAqcGF0aF9wLCBh
Y2xfdHlwZV90IHR5cGUsIGFjbF90IGFjbCk7CgoKZXh0ZXJuIHNzaXplX3QgYWNsX2NvcHlfZXh0
KHZvaWQgKmJ1Zl9wLCBhY2xfdCBhY2wsIHNzaXplX3Qgc2l6ZSk7CmV4dGVybiBzc2l6ZV90IGFj
bF9jb3B5X2V4dF9uYXRpdmUodm9pZCAqYnVmX3AsIGFjbF90IGFjbCwgc3NpemVfdCBzaXplKTsK
ZXh0ZXJuIGFjbF90IGFjbF9jb3B5X2ludChjb25zdCB2b2lkICpidWZfcCk7CmV4dGVybiBhY2xf
dCBhY2xfY29weV9pbnRfbmF0aXZlKGNvbnN0IHZvaWQgKmJ1Zl9wKTsKZXh0ZXJuIGFjbF90IGFj
bF9mcm9tX3RleHQoY29uc3QgY2hhciAqYnVmX3ApOwpleHRlcm4gc3NpemVfdCBhY2xfc2l6ZShh
Y2xfdCBhY2wpOwpleHRlcm4gY2hhciAqYWNsX3RvX3RleHQoYWNsX3QgYWNsLCBzc2l6ZV90ICps
ZW5fcCk7Cn0KIyA2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIg
MiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRGlza0FyYml0cmF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL0RBRGlzay5oIiAxIDMKIyAyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvRGlza0FyYml0cmF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0RBRGlzay5oIiAzCiNkZWZpbmUg
X19ESVNLQVJCSVRSQVRJT05fREFESVNLX18gCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5oIiAxIDMKIyAzMyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIg
MwojZGVmaW5lIF9JT0tJVF9JT0tJVExJQl9IIAojIDQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL21hY2gvbWFjaF90eXBlcy5oIiAxIDMgNAojIDc0ICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNo
X3R5cGVzLmgiIDMgNAojZGVmaW5lIF9NQUNIX01BQ0hfVFlQRVNfSF8gCgoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvbWFjaC9ob3N0X2luZm8uaCIgMSAzIDQKIyA2NiAiL3Vzci9pbmNsdWRlL21hY2gv
aG9zdF9pbmZvLmgiIDMgNAojZGVmaW5lIF9NQUNIX0hPU1RfSU5GT19IXyAKCgojIDEgIi91c3Iv
aW5jbHVkZS9tYWNoL3ZtX3N0YXRpc3RpY3MuaCIgMSAzIDQKIyA2NyAiL3Vzci9pbmNsdWRlL21h
Y2gvdm1fc3RhdGlzdGljcy5oIiAzIDQKI2RlZmluZSBfTUFDSF9WTV9TVEFUSVNUSUNTX0hfIAoj
IDg0ICIvdXNyL2luY2x1ZGUvbWFjaC92bV9zdGF0aXN0aWNzLmgiIDMgNApzdHJ1Y3Qgdm1fc3Rh
dGlzdGljcyB7CiBuYXR1cmFsX3QgZnJlZV9jb3VudDsKIG5hdHVyYWxfdCBhY3RpdmVfY291bnQ7
CiBuYXR1cmFsX3QgaW5hY3RpdmVfY291bnQ7CiBuYXR1cmFsX3Qgd2lyZV9jb3VudDsKIG5hdHVy
YWxfdCB6ZXJvX2ZpbGxfY291bnQ7CiBuYXR1cmFsX3QgcmVhY3RpdmF0aW9uczsKIG5hdHVyYWxf
dCBwYWdlaW5zOwogbmF0dXJhbF90IHBhZ2VvdXRzOwogbmF0dXJhbF90IGZhdWx0czsKIG5hdHVy
YWxfdCBjb3dfZmF1bHRzOwogbmF0dXJhbF90IGxvb2t1cHM7CiBuYXR1cmFsX3QgaGl0czsKCgog
bmF0dXJhbF90IHB1cmdlYWJsZV9jb3VudDsKIG5hdHVyYWxfdCBwdXJnZXM7CiMgMTA5ICIvdXNy
L2luY2x1ZGUvbWFjaC92bV9zdGF0aXN0aWNzLmgiIDMgNAogbmF0dXJhbF90IHNwZWN1bGF0aXZl
X2NvdW50Owp9OwoKCnR5cGVkZWYgc3RydWN0IHZtX3N0YXRpc3RpY3MgKnZtX3N0YXRpc3RpY3Nf
dDsKdHlwZWRlZiBzdHJ1Y3Qgdm1fc3RhdGlzdGljcyB2bV9zdGF0aXN0aWNzX2RhdGFfdDsKIyAx
MzkgIi91c3IvaW5jbHVkZS9tYWNoL3ZtX3N0YXRpc3RpY3MuaCIgMyA0CnN0cnVjdCB2bV9zdGF0
aXN0aWNzNjQgewogbmF0dXJhbF90IGZyZWVfY291bnQ7CiBuYXR1cmFsX3QgYWN0aXZlX2NvdW50
OwogbmF0dXJhbF90IGluYWN0aXZlX2NvdW50OwogbmF0dXJhbF90IHdpcmVfY291bnQ7CiB1aW50
NjRfdCB6ZXJvX2ZpbGxfY291bnQ7CiB1aW50NjRfdCByZWFjdGl2YXRpb25zOwogdWludDY0X3Qg
cGFnZWluczsKIHVpbnQ2NF90IHBhZ2VvdXRzOwogdWludDY0X3QgZmF1bHRzOwogdWludDY0X3Qg
Y293X2ZhdWx0czsKIHVpbnQ2NF90IGxvb2t1cHM7CiB1aW50NjRfdCBoaXRzOwoKCiB1aW50NjRf
dCBwdXJnZXM7CiBuYXR1cmFsX3QgcHVyZ2VhYmxlX2NvdW50OwojIDE2NCAiL3Vzci9pbmNsdWRl
L21hY2gvdm1fc3RhdGlzdGljcy5oIiAzIDQKIG5hdHVyYWxfdCBzcGVjdWxhdGl2ZV9jb3VudDsK
Cn0KCgoKOwoKdHlwZWRlZiBzdHJ1Y3Qgdm1fc3RhdGlzdGljczY0ICp2bV9zdGF0aXN0aWNzNjRf
dDsKdHlwZWRlZiBzdHJ1Y3Qgdm1fc3RhdGlzdGljczY0IHZtX3N0YXRpc3RpY3M2NF9kYXRhX3Q7
CgoKCgoKCgojZGVmaW5lIFZNX1NUQVRJU1RJQ1NfVFJVTkNBVEVfVE9fMzJfQklUKHZhbHVlKSAo
KHVpbnQzMl90KSgoKHZhbHVlKSA+IFVJTlQzMl9NQVggKSA/IFVJTlQzMl9NQVggOiAodmFsdWUp
KSkKCgoKCgoKI2RlZmluZSBWTV9QQUdFX1FVRVJZX1BBR0VfUFJFU0VOVCAweDEKI2RlZmluZSBW
TV9QQUdFX1FVRVJZX1BBR0VfRklDVElUSU9VUyAweDIKI2RlZmluZSBWTV9QQUdFX1FVRVJZX1BB
R0VfUkVGIDB4NAojZGVmaW5lIFZNX1BBR0VfUVVFUllfUEFHRV9ESVJUWSAweDgKI2RlZmluZSBW
TV9QQUdFX1FVRVJZX1BBR0VfUEFHRURfT1VUIDB4MTAKI2RlZmluZSBWTV9QQUdFX1FVRVJZX1BB
R0VfQ09QSUVEIDB4MjAKI2RlZmluZSBWTV9QQUdFX1FVRVJZX1BBR0VfU1BFQ1VMQVRJVkUgMHg0
MAojZGVmaW5lIFZNX1BBR0VfUVVFUllfUEFHRV9FWFRFUk5BTCAweDgwCiNkZWZpbmUgVk1fUEFH
RV9RVUVSWV9QQUdFX0NTX1ZBTElEQVRFRCAweDEwMAojZGVmaW5lIFZNX1BBR0VfUVVFUllfUEFH
RV9DU19UQUlOVEVEIDB4MjAwCiMgMjI4ICIvdXNyL2luY2x1ZGUvbWFjaC92bV9zdGF0aXN0aWNz
LmgiIDMgNAojZGVmaW5lIFZNX0ZMQUdTX0ZJWEVEIDB4MDAwMAojZGVmaW5lIFZNX0ZMQUdTX0FO
WVdIRVJFIDB4MDAwMQojZGVmaW5lIFZNX0ZMQUdTX1BVUkdBQkxFIDB4MDAwMgojZGVmaW5lIFZN
X0ZMQUdTX05PX0NBQ0hFIDB4MDAxMAoKCgoKCgojZGVmaW5lIFZNX0ZMQUdTX1NVUEVSUEFHRV9N
QVNLIDB4NzAwMDAKI2RlZmluZSBWTV9GTEFHU19TVVBFUlBBR0VfU0hJRlQgMTYKCiNkZWZpbmUg
U1VQRVJQQUdFX05PTkUgMAojZGVmaW5lIFZNX0ZMQUdTX1NVUEVSUEFHRV9OT05FIChTVVBFUlBB
R0VfTk9ORTw8Vk1fRkxBR1NfU1VQRVJQQUdFX1NISUZUKQoKI2RlZmluZSBTVVBFUlBBR0VfU0la
RV8yTUIgMQojZGVmaW5lIFZNX0ZMQUdTX1NVUEVSUEFHRV9TSVpFXzJNQiAoU1VQRVJQQUdFX1NJ
WkVfMk1CPDxWTV9GTEFHU19TVVBFUlBBR0VfU0hJRlQpCgoKI2RlZmluZSBWTV9GTEFHU19BTElB
U19NQVNLIDB4RkYwMDAwMDAKI2RlZmluZSBWTV9HRVRfRkxBR1NfQUxJQVMoZmxhZ3MsYWxpYXMp
IChhbGlhcykgPSAoKGZsYWdzKSAmIFZNX0ZMQUdTX0FMSUFTX01BU0spID4+IDI0CgojZGVmaW5l
IFZNX1NFVF9GTEFHU19BTElBUyhmbGFncyxhbGlhcykgKGZsYWdzKSA9ICgoKGZsYWdzKSAmIH5W
TV9GTEFHU19BTElBU19NQVNLKSB8ICgoKGFsaWFzKSAmIH5WTV9GTEFHU19BTElBU19NQVNLKSA8
PCAyNCkpCgoKCgojZGVmaW5lIFZNX0ZMQUdTX1VTRVJfQUxMT0NBVEUgKFZNX0ZMQUdTX0ZJWEVE
IHwgVk1fRkxBR1NfQU5ZV0hFUkUgfCBWTV9GTEFHU19QVVJHQUJMRSB8IFZNX0ZMQUdTX05PX0NB
Q0hFIHwgVk1fRkxBR1NfU1VQRVJQQUdFX01BU0sgfCBWTV9GTEFHU19BTElBU19NQVNLKQoKCgoK
CiNkZWZpbmUgVk1fRkxBR1NfVVNFUl9NQVAgVk1fRkxBR1NfVVNFUl9BTExPQ0FURQoKI2RlZmlu
ZSBWTV9NRU1PUllfTUFMTE9DIDEKI2RlZmluZSBWTV9NRU1PUllfTUFMTE9DX1NNQUxMIDIKI2Rl
ZmluZSBWTV9NRU1PUllfTUFMTE9DX0xBUkdFIDMKI2RlZmluZSBWTV9NRU1PUllfTUFMTE9DX0hV
R0UgNAojZGVmaW5lIFZNX01FTU9SWV9TQlJLIDUKI2RlZmluZSBWTV9NRU1PUllfUkVBTExPQyA2
CiNkZWZpbmUgVk1fTUVNT1JZX01BTExPQ19USU5ZIDcKI2RlZmluZSBWTV9NRU1PUllfTUFMTE9D
X0xBUkdFX1JFVVNBQkxFIDgKI2RlZmluZSBWTV9NRU1PUllfTUFMTE9DX0xBUkdFX1JFVVNFRCA5
CgojZGVmaW5lIFZNX01FTU9SWV9BTkFMWVNJU19UT09MIDEwCgojZGVmaW5lIFZNX01FTU9SWV9N
QUNIX01TRyAyMAojZGVmaW5lIFZNX01FTU9SWV9JT0tJVCAyMQojZGVmaW5lIFZNX01FTU9SWV9T
VEFDSyAzMAojZGVmaW5lIFZNX01FTU9SWV9HVUFSRCAzMQojZGVmaW5lIFZNX01FTU9SWV9TSEFS
RURfUE1BUCAzMgoKI2RlZmluZSBWTV9NRU1PUllfRFlMSUIgMzMKI2RlZmluZSBWTV9NRU1PUllf
T0JKQ19ESVNQQVRDSEVSUyAzNAoKCgojZGVmaW5lIFZNX01FTU9SWV9BUFBLSVQgNDAKI2RlZmlu
ZSBWTV9NRU1PUllfRk9VTkRBVElPTiA0MQojZGVmaW5lIFZNX01FTU9SWV9DT1JFR1JBUEhJQ1Mg
NDIKI2RlZmluZSBWTV9NRU1PUllfQ0FSQk9OIDQzCiNkZWZpbmUgVk1fTUVNT1JZX0pBVkEgNDQK
I2RlZmluZSBWTV9NRU1PUllfQVRTIDUwCiNkZWZpbmUgVk1fTUVNT1JZX0xBWUVSS0lUIDUxCiNk
ZWZpbmUgVk1fTUVNT1JZX0NHSU1BR0UgNTIKI2RlZmluZSBWTV9NRU1PUllfVENNQUxMT0MgNTMK
CgojZGVmaW5lIFZNX01FTU9SWV9DT1JFR1JBUEhJQ1NfREFUQSA1NAoKCiNkZWZpbmUgVk1fTUVN
T1JZX0NPUkVHUkFQSElDU19TSEFSRUQgNTUKCgojZGVmaW5lIFZNX01FTU9SWV9DT1JFR1JBUEhJ
Q1NfRlJBTUVCVUZGRVJTIDU2CgoKI2RlZmluZSBWTV9NRU1PUllfQ09SRUdSQVBISUNTX0JBQ0tJ
TkdTVE9SRVMgNTcKCgojZGVmaW5lIFZNX01FTU9SWV9DT1JFR1JBUEhJQ1NfTUlTQyBWTV9NRU1P
UllfQ09SRUdSQVBISUNTCgoKI2RlZmluZSBWTV9NRU1PUllfRFlMRCA2MAoKI2RlZmluZSBWTV9N
RU1PUllfRFlMRF9NQUxMT0MgNjEKCgojZGVmaW5lIFZNX01FTU9SWV9TUUxJVEUgNjIKCgojZGVm
aW5lIFZNX01FTU9SWV9KQVZBU0NSSVBUX0NPUkUgNjMKCiNkZWZpbmUgVk1fTUVNT1JZX0pBVkFT
Q1JJUFRfSklUX0VYRUNVVEFCTEVfQUxMT0NBVE9SIDY0CiNkZWZpbmUgVk1fTUVNT1JZX0pBVkFT
Q1JJUFRfSklUX1JFR0lTVEVSX0ZJTEUgNjUKCgojZGVmaW5lIFZNX01FTU9SWV9HTFNMIDY2CgoK
I2RlZmluZSBWTV9NRU1PUllfQVBQTElDQVRJT05fU1BFQ0lGSUNfMSAyNDAKI2RlZmluZSBWTV9N
RU1PUllfQVBQTElDQVRJT05fU1BFQ0lGSUNfMTYgMjU1CgojZGVmaW5lIFZNX01BS0VfVEFHKHRh
ZykgKCh0YWcpIDw8IDI0KQojIDcwICIvdXNyL2luY2x1ZGUvbWFjaC9ob3N0X2luZm8uaCIgMiAz
IDQKIyAxICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lLmgiIDEgMyA0CiMgNjEgIi91c3IvaW5j
bHVkZS9tYWNoL21hY2hpbmUuaCIgMyA0CiNkZWZpbmUgX01BQ0hfTUFDSElORV9IXyAKCgoKCgp0
eXBlZGVmIGludGVnZXJfdCBjcHVfdHlwZV90Owp0eXBlZGVmIGludGVnZXJfdCBjcHVfc3VidHlw
ZV90Owp0eXBlZGVmIGludGVnZXJfdCBjcHVfdGhyZWFkdHlwZV90OwoKI2RlZmluZSBDUFVfU1RB
VEVfTUFYIDQKCiNkZWZpbmUgQ1BVX1NUQVRFX1VTRVIgMAojZGVmaW5lIENQVV9TVEFURV9TWVNU
RU0gMQojZGVmaW5lIENQVV9TVEFURV9JRExFIDIKI2RlZmluZSBDUFVfU1RBVEVfTklDRSAzCgoK
CgoKCiNkZWZpbmUgQ1BVX0FSQ0hfTUFTSyAweGZmMDAwMDAwCiNkZWZpbmUgQ1BVX0FSQ0hfQUJJ
NjQgMHgwMTAwMDAwMAoKCgoKCiNkZWZpbmUgQ1BVX1RZUEVfQU5ZICgoY3B1X3R5cGVfdCkgLTEp
CgojZGVmaW5lIENQVV9UWVBFX1ZBWCAoKGNwdV90eXBlX3QpIDEpCgoKCgojZGVmaW5lIENQVV9U
WVBFX01DNjgweDAgKChjcHVfdHlwZV90KSA2KQojZGVmaW5lIENQVV9UWVBFX1g4NiAoKGNwdV90
eXBlX3QpIDcpCiNkZWZpbmUgQ1BVX1RZUEVfSTM4NiBDUFVfVFlQRV9YODYKI2RlZmluZSBDUFVf
VFlQRV9YODZfNjQgKENQVV9UWVBFX1g4NiB8IENQVV9BUkNIX0FCSTY0KQoKCgojZGVmaW5lIENQ
VV9UWVBFX01DOTgwMDAgKChjcHVfdHlwZV90KSAxMCkKI2RlZmluZSBDUFVfVFlQRV9IUFBBICgo
Y3B1X3R5cGVfdCkgMTEpCiNkZWZpbmUgQ1BVX1RZUEVfQVJNICgoY3B1X3R5cGVfdCkgMTIpCiNk
ZWZpbmUgQ1BVX1RZUEVfTUM4ODAwMCAoKGNwdV90eXBlX3QpIDEzKQojZGVmaW5lIENQVV9UWVBF
X1NQQVJDICgoY3B1X3R5cGVfdCkgMTQpCiNkZWZpbmUgQ1BVX1RZUEVfSTg2MCAoKGNwdV90eXBl
X3QpIDE1KQoKCiNkZWZpbmUgQ1BVX1RZUEVfUE9XRVJQQyAoKGNwdV90eXBlX3QpIDE4KQojZGVm
aW5lIENQVV9UWVBFX1BPV0VSUEM2NCAoQ1BVX1RZUEVfUE9XRVJQQyB8IENQVV9BUkNIX0FCSTY0
KQojIDEyNCAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaGluZS5oIiAzIDQKI2RlZmluZSBDUFVfU1VC
VFlQRV9NQVNLIDB4ZmYwMDAwMDAKI2RlZmluZSBDUFVfU1VCVFlQRV9MSUI2NCAweDgwMDAwMDAw
CiMgMTM5ICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lLmgiIDMgNAojZGVmaW5lIENQVV9TVUJU
WVBFX01VTFRJUExFICgoY3B1X3N1YnR5cGVfdCkgLTEpCiNkZWZpbmUgQ1BVX1NVQlRZUEVfTElU
VExFX0VORElBTiAoKGNwdV9zdWJ0eXBlX3QpIDApCiNkZWZpbmUgQ1BVX1NVQlRZUEVfQklHX0VO
RElBTiAoKGNwdV9zdWJ0eXBlX3QpIDEpCgoKCgoKI2RlZmluZSBDUFVfVEhSRUFEVFlQRV9OT05F
ICgoY3B1X3RocmVhZHR5cGVfdCkgMCkKCgoKCgoKI2RlZmluZSBDUFVfU1VCVFlQRV9WQVhfQUxM
ICgoY3B1X3N1YnR5cGVfdCkgMCkKI2RlZmluZSBDUFVfU1VCVFlQRV9WQVg3ODAgKChjcHVfc3Vi
dHlwZV90KSAxKQojZGVmaW5lIENQVV9TVUJUWVBFX1ZBWDc4NSAoKGNwdV9zdWJ0eXBlX3QpIDIp
CiNkZWZpbmUgQ1BVX1NVQlRZUEVfVkFYNzUwICgoY3B1X3N1YnR5cGVfdCkgMykKI2RlZmluZSBD
UFVfU1VCVFlQRV9WQVg3MzAgKChjcHVfc3VidHlwZV90KSA0KQojZGVmaW5lIENQVV9TVUJUWVBF
X1VWQVhJICgoY3B1X3N1YnR5cGVfdCkgNSkKI2RlZmluZSBDUFVfU1VCVFlQRV9VVkFYSUkgKChj
cHVfc3VidHlwZV90KSA2KQojZGVmaW5lIENQVV9TVUJUWVBFX1ZBWDgyMDAgKChjcHVfc3VidHlw
ZV90KSA3KQojZGVmaW5lIENQVV9TVUJUWVBFX1ZBWDg1MDAgKChjcHVfc3VidHlwZV90KSA4KQoj
ZGVmaW5lIENQVV9TVUJUWVBFX1ZBWDg2MDAgKChjcHVfc3VidHlwZV90KSA5KQojZGVmaW5lIENQ
VV9TVUJUWVBFX1ZBWDg2NTAgKChjcHVfc3VidHlwZV90KSAxMCkKI2RlZmluZSBDUFVfU1VCVFlQ
RV9WQVg4ODAwICgoY3B1X3N1YnR5cGVfdCkgMTEpCiNkZWZpbmUgQ1BVX1NVQlRZUEVfVVZBWElJ
SSAoKGNwdV9zdWJ0eXBlX3QpIDEyKQojIDE4NSAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaGluZS5o
IiAzIDQKI2RlZmluZSBDUFVfU1VCVFlQRV9NQzY4MHgwX0FMTCAoKGNwdV9zdWJ0eXBlX3QpIDEp
CiNkZWZpbmUgQ1BVX1NVQlRZUEVfTUM2ODAzMCAoKGNwdV9zdWJ0eXBlX3QpIDEpCiNkZWZpbmUg
Q1BVX1NVQlRZUEVfTUM2ODA0MCAoKGNwdV9zdWJ0eXBlX3QpIDIpCiNkZWZpbmUgQ1BVX1NVQlRZ
UEVfTUM2ODAzMF9PTkxZICgoY3B1X3N1YnR5cGVfdCkgMykKCgoKCgojZGVmaW5lIENQVV9TVUJU
WVBFX0lOVEVMKGYsbSkgKChjcHVfc3VidHlwZV90KSAoZikgKyAoKG0pIDw8IDQpKQoKI2RlZmlu
ZSBDUFVfU1VCVFlQRV9JMzg2X0FMTCBDUFVfU1VCVFlQRV9JTlRFTCgzLCAwKQojZGVmaW5lIENQ
VV9TVUJUWVBFXzM4NiBDUFVfU1VCVFlQRV9JTlRFTCgzLCAwKQojZGVmaW5lIENQVV9TVUJUWVBF
XzQ4NiBDUFVfU1VCVFlQRV9JTlRFTCg0LCAwKQojZGVmaW5lIENQVV9TVUJUWVBFXzQ4NlNYIENQ
VV9TVUJUWVBFX0lOVEVMKDQsIDgpCiNkZWZpbmUgQ1BVX1NVQlRZUEVfNTg2IENQVV9TVUJUWVBF
X0lOVEVMKDUsIDApCiNkZWZpbmUgQ1BVX1NVQlRZUEVfUEVOVCBDUFVfU1VCVFlQRV9JTlRFTCg1
LCAwKQojZGVmaW5lIENQVV9TVUJUWVBFX1BFTlRQUk8gQ1BVX1NVQlRZUEVfSU5URUwoNiwgMSkK
I2RlZmluZSBDUFVfU1VCVFlQRV9QRU5USUlfTTMgQ1BVX1NVQlRZUEVfSU5URUwoNiwgMykKI2Rl
ZmluZSBDUFVfU1VCVFlQRV9QRU5USUlfTTUgQ1BVX1NVQlRZUEVfSU5URUwoNiwgNSkKI2RlZmlu
ZSBDUFVfU1VCVFlQRV9DRUxFUk9OIENQVV9TVUJUWVBFX0lOVEVMKDcsIDYpCiNkZWZpbmUgQ1BV
X1NVQlRZUEVfQ0VMRVJPTl9NT0JJTEUgQ1BVX1NVQlRZUEVfSU5URUwoNywgNykKI2RlZmluZSBD
UFVfU1VCVFlQRV9QRU5USVVNXzMgQ1BVX1NVQlRZUEVfSU5URUwoOCwgMCkKI2RlZmluZSBDUFVf
U1VCVFlQRV9QRU5USVVNXzNfTSBDUFVfU1VCVFlQRV9JTlRFTCg4LCAxKQojZGVmaW5lIENQVV9T
VUJUWVBFX1BFTlRJVU1fM19YRU9OIENQVV9TVUJUWVBFX0lOVEVMKDgsIDIpCiNkZWZpbmUgQ1BV
X1NVQlRZUEVfUEVOVElVTV9NIENQVV9TVUJUWVBFX0lOVEVMKDksIDApCiNkZWZpbmUgQ1BVX1NV
QlRZUEVfUEVOVElVTV80IENQVV9TVUJUWVBFX0lOVEVMKDEwLCAwKQojZGVmaW5lIENQVV9TVUJU
WVBFX1BFTlRJVU1fNF9NIENQVV9TVUJUWVBFX0lOVEVMKDEwLCAxKQojZGVmaW5lIENQVV9TVUJU
WVBFX0lUQU5JVU0gQ1BVX1NVQlRZUEVfSU5URUwoMTEsIDApCiNkZWZpbmUgQ1BVX1NVQlRZUEVf
SVRBTklVTV8yIENQVV9TVUJUWVBFX0lOVEVMKDExLCAxKQojZGVmaW5lIENQVV9TVUJUWVBFX1hF
T04gQ1BVX1NVQlRZUEVfSU5URUwoMTIsIDApCiNkZWZpbmUgQ1BVX1NVQlRZUEVfWEVPTl9NUCBD
UFVfU1VCVFlQRV9JTlRFTCgxMiwgMSkKCiNkZWZpbmUgQ1BVX1NVQlRZUEVfSU5URUxfRkFNSUxZ
KHgpICgoeCkgJiAxNSkKI2RlZmluZSBDUFVfU1VCVFlQRV9JTlRFTF9GQU1JTFlfTUFYIDE1Cgoj
ZGVmaW5lIENQVV9TVUJUWVBFX0lOVEVMX01PREVMKHgpICgoeCkgPj4gNCkKI2RlZmluZSBDUFVf
U1VCVFlQRV9JTlRFTF9NT0RFTF9BTEwgMAoKCgoKCiNkZWZpbmUgQ1BVX1NVQlRZUEVfWDg2X0FM
TCAoKGNwdV9zdWJ0eXBlX3QpMykKI2RlZmluZSBDUFVfU1VCVFlQRV9YODZfNjRfQUxMICgoY3B1
X3N1YnR5cGVfdCkzKQojZGVmaW5lIENQVV9TVUJUWVBFX1g4Nl9BUkNIMSAoKGNwdV9zdWJ0eXBl
X3QpNCkKCgojZGVmaW5lIENQVV9USFJFQURUWVBFX0lOVEVMX0hUVCAoKGNwdV90aHJlYWR0eXBl
X3QpIDEpCgoKCgoKI2RlZmluZSBDUFVfU1VCVFlQRV9NSVBTX0FMTCAoKGNwdV9zdWJ0eXBlX3Qp
IDApCiNkZWZpbmUgQ1BVX1NVQlRZUEVfTUlQU19SMjMwMCAoKGNwdV9zdWJ0eXBlX3QpIDEpCiNk
ZWZpbmUgQ1BVX1NVQlRZUEVfTUlQU19SMjYwMCAoKGNwdV9zdWJ0eXBlX3QpIDIpCiNkZWZpbmUg
Q1BVX1NVQlRZUEVfTUlQU19SMjgwMCAoKGNwdV9zdWJ0eXBlX3QpIDMpCiNkZWZpbmUgQ1BVX1NV
QlRZUEVfTUlQU19SMjAwMGEgKChjcHVfc3VidHlwZV90KSA0KQojZGVmaW5lIENQVV9TVUJUWVBF
X01JUFNfUjIwMDAgKChjcHVfc3VidHlwZV90KSA1KQojZGVmaW5lIENQVV9TVUJUWVBFX01JUFNf
UjMwMDBhICgoY3B1X3N1YnR5cGVfdCkgNikKI2RlZmluZSBDUFVfU1VCVFlQRV9NSVBTX1IzMDAw
ICgoY3B1X3N1YnR5cGVfdCkgNykKCgoKCiNkZWZpbmUgQ1BVX1NVQlRZUEVfTUM5ODAwMF9BTEwg
KChjcHVfc3VidHlwZV90KSAwKQojZGVmaW5lIENQVV9TVUJUWVBFX01DOTg2MDEgKChjcHVfc3Vi
dHlwZV90KSAxKQoKCgoKCgojZGVmaW5lIENQVV9TVUJUWVBFX0hQUEFfQUxMICgoY3B1X3N1YnR5
cGVfdCkgMCkKI2RlZmluZSBDUFVfU1VCVFlQRV9IUFBBXzcxMDAgKChjcHVfc3VidHlwZV90KSAw
KQojZGVmaW5lIENQVV9TVUJUWVBFX0hQUEFfNzEwMExDICgoY3B1X3N1YnR5cGVfdCkgMSkKCgoK
CiNkZWZpbmUgQ1BVX1NVQlRZUEVfTUM4ODAwMF9BTEwgKChjcHVfc3VidHlwZV90KSAwKQojZGVm
aW5lIENQVV9TVUJUWVBFX01DODgxMDAgKChjcHVfc3VidHlwZV90KSAxKQojZGVmaW5lIENQVV9T
VUJUWVBFX01DODgxMTAgKChjcHVfc3VidHlwZV90KSAyKQoKCgoKI2RlZmluZSBDUFVfU1VCVFlQ
RV9TUEFSQ19BTEwgKChjcHVfc3VidHlwZV90KSAwKQoKCgoKI2RlZmluZSBDUFVfU1VCVFlQRV9J
ODYwX0FMTCAoKGNwdV9zdWJ0eXBlX3QpIDApCiNkZWZpbmUgQ1BVX1NVQlRZUEVfSTg2MF84NjAg
KChjcHVfc3VidHlwZV90KSAxKQoKCgoKI2RlZmluZSBDUFVfU1VCVFlQRV9QT1dFUlBDX0FMTCAo
KGNwdV9zdWJ0eXBlX3QpIDApCiNkZWZpbmUgQ1BVX1NVQlRZUEVfUE9XRVJQQ182MDEgKChjcHVf
c3VidHlwZV90KSAxKQojZGVmaW5lIENQVV9TVUJUWVBFX1BPV0VSUENfNjAyICgoY3B1X3N1YnR5
cGVfdCkgMikKI2RlZmluZSBDUFVfU1VCVFlQRV9QT1dFUlBDXzYwMyAoKGNwdV9zdWJ0eXBlX3Qp
IDMpCiNkZWZpbmUgQ1BVX1NVQlRZUEVfUE9XRVJQQ182MDNlICgoY3B1X3N1YnR5cGVfdCkgNCkK
I2RlZmluZSBDUFVfU1VCVFlQRV9QT1dFUlBDXzYwM2V2ICgoY3B1X3N1YnR5cGVfdCkgNSkKI2Rl
ZmluZSBDUFVfU1VCVFlQRV9QT1dFUlBDXzYwNCAoKGNwdV9zdWJ0eXBlX3QpIDYpCiNkZWZpbmUg
Q1BVX1NVQlRZUEVfUE9XRVJQQ182MDRlICgoY3B1X3N1YnR5cGVfdCkgNykKI2RlZmluZSBDUFVf
U1VCVFlQRV9QT1dFUlBDXzYyMCAoKGNwdV9zdWJ0eXBlX3QpIDgpCiNkZWZpbmUgQ1BVX1NVQlRZ
UEVfUE9XRVJQQ183NTAgKChjcHVfc3VidHlwZV90KSA5KQojZGVmaW5lIENQVV9TVUJUWVBFX1BP
V0VSUENfNzQwMCAoKGNwdV9zdWJ0eXBlX3QpIDEwKQojZGVmaW5lIENQVV9TVUJUWVBFX1BPV0VS
UENfNzQ1MCAoKGNwdV9zdWJ0eXBlX3QpIDExKQojZGVmaW5lIENQVV9TVUJUWVBFX1BPV0VSUENf
OTcwICgoY3B1X3N1YnR5cGVfdCkgMTAwKQoKCgoKI2RlZmluZSBDUFVfU1VCVFlQRV9BUk1fQUxM
ICgoY3B1X3N1YnR5cGVfdCkgMCkKI2RlZmluZSBDUFVfU1VCVFlQRV9BUk1fVjRUICgoY3B1X3N1
YnR5cGVfdCkgNSkKI2RlZmluZSBDUFVfU1VCVFlQRV9BUk1fVjYgKChjcHVfc3VidHlwZV90KSA2
KQojZGVmaW5lIENQVV9TVUJUWVBFX0FSTV9WNVRFSiAoKGNwdV9zdWJ0eXBlX3QpIDcpCiNkZWZp
bmUgQ1BVX1NVQlRZUEVfQVJNX1hTQ0FMRSAoKGNwdV9zdWJ0eXBlX3QpIDgpCiNkZWZpbmUgQ1BV
X1NVQlRZUEVfQVJNX1Y3ICgoY3B1X3N1YnR5cGVfdCkgOSkKIyAzMTkgIi91c3IvaW5jbHVkZS9t
YWNoL21hY2hpbmUuaCIgMyA0CiNkZWZpbmUgQ1BVRkFNSUxZX1VOS05PV04gMAojZGVmaW5lIENQ
VUZBTUlMWV9QT1dFUlBDX0czIDB4Y2VlNDE1NDkKI2RlZmluZSBDUFVGQU1JTFlfUE9XRVJQQ19H
NCAweDc3YzE4NGFlCiNkZWZpbmUgQ1BVRkFNSUxZX1BPV0VSUENfRzUgMHhlZDc2ZDhhYQojZGVm
aW5lIENQVUZBTUlMWV9JTlRFTF82XzEzIDB4YWEzMzM5MmIKI2RlZmluZSBDUFVGQU1JTFlfSU5U
RUxfWU9OQUggMHg3M2Q2NzMwMAojZGVmaW5lIENQVUZBTUlMWV9JTlRFTF9NRVJPTSAweDQyNmY2
OWVmCiNkZWZpbmUgQ1BVRkFNSUxZX0lOVEVMX1BFTlJZTiAweDc4ZWE0ZmJjCiNkZWZpbmUgQ1BV
RkFNSUxZX0lOVEVMX05FSEFMRU0gMHg2YjVhNGNkMgojZGVmaW5lIENQVUZBTUlMWV9JTlRFTF9X
RVNUTUVSRSAweDU3M2I1ZWVjCiNkZWZpbmUgQ1BVRkFNSUxZX0FSTV85IDB4ZTczMjgzYWUKI2Rl
ZmluZSBDUFVGQU1JTFlfQVJNXzExIDB4OGZmNjIwZDgKI2RlZmluZSBDUFVGQU1JTFlfQVJNX1hT
Q0FMRSAweDUzYjAwNWY1CiNkZWZpbmUgQ1BVRkFNSUxZX0FSTV8xMyAweDBjYzkwZTY0CgoKI2Rl
ZmluZSBDUFVGQU1JTFlfSU5URUxfNl8xNCBDUFVGQU1JTFlfSU5URUxfWU9OQUgKI2RlZmluZSBD
UFVGQU1JTFlfSU5URUxfNl8xNSBDUFVGQU1JTFlfSU5URUxfTUVST00KI2RlZmluZSBDUFVGQU1J
TFlfSU5URUxfNl8yMyBDUFVGQU1JTFlfSU5URUxfUEVOUllOCiNkZWZpbmUgQ1BVRkFNSUxZX0lO
VEVMXzZfMjYgQ1BVRkFNSUxZX0lOVEVMX05FSEFMRU0KCiNkZWZpbmUgQ1BVRkFNSUxZX0lOVEVM
X0NPUkUgQ1BVRkFNSUxZX0lOVEVMX1lPTkFICiNkZWZpbmUgQ1BVRkFNSUxZX0lOVEVMX0NPUkUy
IENQVUZBTUlMWV9JTlRFTF9NRVJPTQojIDcxICIvdXNyL2luY2x1ZGUvbWFjaC9ob3N0X2luZm8u
aCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvdGltZV92YWx1ZS5oIiAxIDMgNAojIDU4
ICIvdXNyL2luY2x1ZGUvbWFjaC90aW1lX3ZhbHVlLmgiIDMgNAojZGVmaW5lIF9NQUNIX1RJTUVf
VkFMVUVfSF8gCgoKCgoKCgpzdHJ1Y3QgdGltZV92YWx1ZSB7CiBpbnRlZ2VyX3Qgc2Vjb25kczsK
IGludGVnZXJfdCBtaWNyb3NlY29uZHM7Cn07Cgp0eXBlZGVmIHN0cnVjdCB0aW1lX3ZhbHVlIHRp
bWVfdmFsdWVfdDsKCgoKCgojZGVmaW5lIFRJTUVfTUlDUk9TX01BWCAoMTAwMDAwMCkKCiNkZWZp
bmUgdGltZV92YWx1ZV9hZGRfdXNlYyh2YWwsbWljcm9zKSB7IGlmICgoKHZhbCktPm1pY3Jvc2Vj
b25kcyArPSAobWljcm9zKSkgPj0gVElNRV9NSUNST1NfTUFYKSB7ICh2YWwpLT5taWNyb3NlY29u
ZHMgLT0gVElNRV9NSUNST1NfTUFYOyAodmFsKS0+c2Vjb25kcysrOyB9IH0KCgoKCgoKCiNkZWZp
bmUgdGltZV92YWx1ZV9hZGQocmVzdWx0LGFkZGVuZCkgeyAocmVzdWx0KS0+bWljcm9zZWNvbmRz
ICs9IChhZGRlbmQpLT5taWNyb3NlY29uZHM7IChyZXN1bHQpLT5zZWNvbmRzICs9IChhZGRlbmQp
LT5zZWNvbmRzOyBpZiAoKHJlc3VsdCktPm1pY3Jvc2Vjb25kcyA+PSBUSU1FX01JQ1JPU19NQVgp
IHsgKHJlc3VsdCktPm1pY3Jvc2Vjb25kcyAtPSBUSU1FX01JQ1JPU19NQVg7IChyZXN1bHQpLT5z
ZWNvbmRzKys7IH0gfQojIDczICIvdXNyL2luY2x1ZGUvbWFjaC9ob3N0X2luZm8uaCIgMiAzIDQK
CgoKCgoKdHlwZWRlZiBpbnRlZ2VyX3QgKmhvc3RfaW5mb190Owp0eXBlZGVmIGludGVnZXJfdCAq
aG9zdF9pbmZvNjRfdDsKCiNkZWZpbmUgSE9TVF9JTkZPX01BWCAoMTAyNCkKdHlwZWRlZiBpbnRl
Z2VyX3QgaG9zdF9pbmZvX2RhdGFfdFsoMTAyNCldOwoKI2RlZmluZSBLRVJORUxfVkVSU0lPTl9N
QVggKDUxMikKdHlwZWRlZiBjaGFyIGtlcm5lbF92ZXJzaW9uX3RbKDUxMildOwoKI2RlZmluZSBL
RVJORUxfQk9PVF9JTkZPX01BWCAoNDA5NikKdHlwZWRlZiBjaGFyIGtlcm5lbF9ib290X2luZm9f
dFsoNDA5NildOwoKCgoKCnR5cGVkZWYgaW50ZWdlcl90IGhvc3RfZmxhdm9yX3Q7CiNkZWZpbmUg
SE9TVF9CQVNJQ19JTkZPIDEKI2RlZmluZSBIT1NUX1NDSEVEX0lORk8gMwojZGVmaW5lIEhPU1Rf
UkVTT1VSQ0VfU0laRVMgNAojZGVmaW5lIEhPU1RfUFJJT1JJVFlfSU5GTyA1CiNkZWZpbmUgSE9T
VF9TRU1BUEhPUkVfVFJBUFMgNwojZGVmaW5lIEhPU1RfTUFDSF9NU0dfVFJBUCA4CgoKI3ByYWdt
YSBwYWNrKDQpCgpzdHJ1Y3QgaG9zdF9iYXNpY19pbmZvIHsKIGludGVnZXJfdCBtYXhfY3B1czsK
IGludGVnZXJfdCBhdmFpbF9jcHVzOwogbmF0dXJhbF90IG1lbW9yeV9zaXplOwogY3B1X3R5cGVf
dCBjcHVfdHlwZTsKIGNwdV9zdWJ0eXBlX3QgY3B1X3N1YnR5cGU7CiBjcHVfdGhyZWFkdHlwZV90
IGNwdV90aHJlYWR0eXBlOwogaW50ZWdlcl90IHBoeXNpY2FsX2NwdTsKIGludGVnZXJfdCBwaHlz
aWNhbF9jcHVfbWF4OwogaW50ZWdlcl90IGxvZ2ljYWxfY3B1OwogaW50ZWdlcl90IGxvZ2ljYWxf
Y3B1X21heDsKIHVpbnQ2NF90IG1heF9tZW07Cn07CgojcHJhZ21hIHBhY2soKQoKdHlwZWRlZiBz
dHJ1Y3QgaG9zdF9iYXNpY19pbmZvIGhvc3RfYmFzaWNfaW5mb19kYXRhX3Q7CnR5cGVkZWYgc3Ry
dWN0IGhvc3RfYmFzaWNfaW5mbyAqaG9zdF9iYXNpY19pbmZvX3Q7CiNkZWZpbmUgSE9TVF9CQVNJ
Q19JTkZPX0NPVU5UICgobWFjaF9tc2dfdHlwZV9udW1iZXJfdCkgKHNpemVvZihob3N0X2Jhc2lj
X2luZm9fZGF0YV90KS9zaXplb2YoaW50ZWdlcl90KSkpCgoKc3RydWN0IGhvc3Rfc2NoZWRfaW5m
byB7CiBpbnRlZ2VyX3QgbWluX3RpbWVvdXQ7CiBpbnRlZ2VyX3QgbWluX3F1YW50dW07Cn07Cgp0
eXBlZGVmIHN0cnVjdCBob3N0X3NjaGVkX2luZm8gaG9zdF9zY2hlZF9pbmZvX2RhdGFfdDsKdHlw
ZWRlZiBzdHJ1Y3QgaG9zdF9zY2hlZF9pbmZvICpob3N0X3NjaGVkX2luZm9fdDsKI2RlZmluZSBI
T1NUX1NDSEVEX0lORk9fQ09VTlQgKChtYWNoX21zZ190eXBlX251bWJlcl90KSAoc2l6ZW9mKGhv
c3Rfc2NoZWRfaW5mb19kYXRhX3QpL3NpemVvZihpbnRlZ2VyX3QpKSkKCgpzdHJ1Y3Qga2VybmVs
X3Jlc291cmNlX3NpemVzIHsKIG5hdHVyYWxfdCB0YXNrOwogICAgICAgIG5hdHVyYWxfdCB0aHJl
YWQ7CiAgICAgICAgbmF0dXJhbF90IHBvcnQ7CiAgICAgICAgbmF0dXJhbF90IG1lbW9yeV9yZWdp
b247CiAgICAgICAgbmF0dXJhbF90IG1lbW9yeV9vYmplY3Q7Cn07Cgp0eXBlZGVmIHN0cnVjdCBr
ZXJuZWxfcmVzb3VyY2Vfc2l6ZXMga2VybmVsX3Jlc291cmNlX3NpemVzX2RhdGFfdDsKdHlwZWRl
ZiBzdHJ1Y3Qga2VybmVsX3Jlc291cmNlX3NpemVzICprZXJuZWxfcmVzb3VyY2Vfc2l6ZXNfdDsK
I2RlZmluZSBIT1NUX1JFU09VUkNFX1NJWkVTX0NPVU5UICgobWFjaF9tc2dfdHlwZV9udW1iZXJf
dCkgKHNpemVvZihrZXJuZWxfcmVzb3VyY2Vfc2l6ZXNfZGF0YV90KS9zaXplb2YoaW50ZWdlcl90
KSkpCgoKc3RydWN0IGhvc3RfcHJpb3JpdHlfaW5mbyB7CiAgICAgaW50ZWdlcl90IGtlcm5lbF9w
cmlvcml0eTsKICAgICBpbnRlZ2VyX3Qgc3lzdGVtX3ByaW9yaXR5OwogICAgIGludGVnZXJfdCBz
ZXJ2ZXJfcHJpb3JpdHk7CiAgICAgaW50ZWdlcl90IHVzZXJfcHJpb3JpdHk7CiAgICAgaW50ZWdl
cl90IGRlcHJlc3NfcHJpb3JpdHk7CiAgICAgaW50ZWdlcl90IGlkbGVfcHJpb3JpdHk7CiAgICAg
aW50ZWdlcl90IG1pbmltdW1fcHJpb3JpdHk7CiBpbnRlZ2VyX3QgbWF4aW11bV9wcmlvcml0eTsK
fTsKCnR5cGVkZWYgc3RydWN0IGhvc3RfcHJpb3JpdHlfaW5mbyBob3N0X3ByaW9yaXR5X2luZm9f
ZGF0YV90Owp0eXBlZGVmIHN0cnVjdCBob3N0X3ByaW9yaXR5X2luZm8gKmhvc3RfcHJpb3JpdHlf
aW5mb190OwojZGVmaW5lIEhPU1RfUFJJT1JJVFlfSU5GT19DT1VOVCAoKG1hY2hfbXNnX3R5cGVf
bnVtYmVyX3QpIChzaXplb2YoaG9zdF9wcmlvcml0eV9pbmZvX2RhdGFfdCkvc2l6ZW9mKGludGVn
ZXJfdCkpKQoKCgojZGVmaW5lIEhPU1RfTE9BRF9JTkZPIDEKI2RlZmluZSBIT1NUX1ZNX0lORk8g
MgojZGVmaW5lIEhPU1RfQ1BVX0xPQURfSU5GTyAzCgoKI2RlZmluZSBIT1NUX1ZNX0lORk82NCA0
CgoKc3RydWN0IGhvc3RfbG9hZF9pbmZvIHsKIGludGVnZXJfdCBhdmVucnVuWzNdOwogaW50ZWdl
cl90IG1hY2hfZmFjdG9yWzNdOwp9OwoKdHlwZWRlZiBzdHJ1Y3QgaG9zdF9sb2FkX2luZm8gaG9z
dF9sb2FkX2luZm9fZGF0YV90Owp0eXBlZGVmIHN0cnVjdCBob3N0X2xvYWRfaW5mbyAqaG9zdF9s
b2FkX2luZm9fdDsKI2RlZmluZSBIT1NUX0xPQURfSU5GT19DT1VOVCAoKG1hY2hfbXNnX3R5cGVf
bnVtYmVyX3QpIChzaXplb2YoaG9zdF9sb2FkX2luZm9fZGF0YV90KS9zaXplb2YoaW50ZWdlcl90
KSkpCgoKCgojZGVmaW5lIEhPU1RfVk1fSU5GTzY0X0NPVU5UICgobWFjaF9tc2dfdHlwZV9udW1i
ZXJfdCkgKHNpemVvZih2bV9zdGF0aXN0aWNzNjRfZGF0YV90KS9zaXplb2YoaW50ZWdlcl90KSkp
CgoKCiNkZWZpbmUgSE9TVF9WTV9JTkZPNjRfTEFURVNUX0NPVU5UIEhPU1RfVk1fSU5GTzY0X0NP
VU5UCgoKCiNkZWZpbmUgSE9TVF9WTV9JTkZPX0NPVU5UICgobWFjaF9tc2dfdHlwZV9udW1iZXJf
dCkgKHNpemVvZih2bV9zdGF0aXN0aWNzX2RhdGFfdCkvc2l6ZW9mKGludGVnZXJfdCkpKQoKCgoj
ZGVmaW5lIEhPU1RfVk1fSU5GT19MQVRFU1RfQ09VTlQgSE9TVF9WTV9JTkZPX0NPVU5UCiNkZWZp
bmUgSE9TVF9WTV9JTkZPX1JFVjJfQ09VTlQgSE9TVF9WTV9JTkZPX0xBVEVTVF9DT1VOVAoKI2Rl
ZmluZSBIT1NUX1ZNX0lORk9fUkVWMV9DT1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpIChI
T1NUX1ZNX0lORk9fUkVWMl9DT1VOVCAtIDEpKQoKCiNkZWZpbmUgSE9TVF9WTV9JTkZPX1JFVjBf
Q09VTlQgKChtYWNoX21zZ190eXBlX251bWJlcl90KSAoSE9TVF9WTV9JTkZPX1JFVjFfQ09VTlQg
LSAyKSkKCgoKc3RydWN0IGhvc3RfY3B1X2xvYWRfaW5mbyB7CiBuYXR1cmFsX3QgY3B1X3RpY2tz
WzRdOwp9OwoKdHlwZWRlZiBzdHJ1Y3QgaG9zdF9jcHVfbG9hZF9pbmZvIGhvc3RfY3B1X2xvYWRf
aW5mb19kYXRhX3Q7CnR5cGVkZWYgc3RydWN0IGhvc3RfY3B1X2xvYWRfaW5mbyAqaG9zdF9jcHVf
bG9hZF9pbmZvX3Q7CiNkZWZpbmUgSE9TVF9DUFVfTE9BRF9JTkZPX0NPVU5UICgobWFjaF9tc2df
dHlwZV9udW1iZXJfdCkgKHNpemVvZiAoaG9zdF9jcHVfbG9hZF9pbmZvX2RhdGFfdCkgLyBzaXpl
b2YgKGludGVnZXJfdCkpKQojIDgxICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoX3R5cGVzLmgiIDIg
MyA0CiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvaG9zdF9ub3RpZnkuaCIgMSAzIDQKIyAzMCAiL3Vz
ci9pbmNsdWRlL21hY2gvaG9zdF9ub3RpZnkuaCIgMyA0CiNkZWZpbmUgX01BQ0hfSE9TVF9OT1RJ
RllfSF8gCgojZGVmaW5lIEhPU1RfTk9USUZZX0NBTEVOREFSX0NIQU5HRSAwCiNkZWZpbmUgSE9T
VF9OT1RJRllfVFlQRV9NQVggMAoKI2RlZmluZSBIT1NUX0NBTEVOREFSX0NIQU5HRURfUkVQTFlJ
RCA5NTAKIyA4MiAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaF90eXBlcy5oIiAyIDMgNAojIDEgIi91
c3IvaW5jbHVkZS9tYWNoL2hvc3Rfc3BlY2lhbF9wb3J0cy5oIiAxIDMgNAojIDY1ICIvdXNyL2lu
Y2x1ZGUvbWFjaC9ob3N0X3NwZWNpYWxfcG9ydHMuaCIgMyA0CiNkZWZpbmUgX01BQ0hfSE9TVF9T
UEVDSUFMX1BPUlRTX0hfIAoKCgoKI2RlZmluZSBIT1NUX1NFQ1VSSVRZX1BPUlQgMAoKCgoKI2Rl
ZmluZSBIT1NUX1BPUlQgMQojZGVmaW5lIEhPU1RfUFJJVl9QT1JUIDIKI2RlZmluZSBIT1NUX0lP
X01BU1RFUl9QT1JUIDMKI2RlZmluZSBIT1NUX01BWF9TUEVDSUFMX0tFUk5FTF9QT1JUIDcKCgoK
CiNkZWZpbmUgSE9TVF9EWU5BTUlDX1BBR0VSX1BPUlQgKDEgKyBIT1NUX01BWF9TUEVDSUFMX0tF
Uk5FTF9QT1JUKQojZGVmaW5lIEhPU1RfQVVESVRfQ09OVFJPTF9QT1JUICgyICsgSE9TVF9NQVhf
U1BFQ0lBTF9LRVJORUxfUE9SVCkKI2RlZmluZSBIT1NUX1VTRVJfTk9USUZJQ0FUSU9OX1BPUlQg
KDMgKyBIT1NUX01BWF9TUEVDSUFMX0tFUk5FTF9QT1JUKQojZGVmaW5lIEhPU1RfQVVUT01PVU5U
RF9QT1JUICg0ICsgSE9TVF9NQVhfU1BFQ0lBTF9LRVJORUxfUE9SVCkKI2RlZmluZSBIT1NUX0xP
Q0tEX1BPUlQgKDUgKyBIT1NUX01BWF9TUEVDSUFMX0tFUk5FTF9QT1JUKQojZGVmaW5lIEhPU1Rf
U0VBVEJFTFRfUE9SVCAoNyArIEhPU1RfTUFYX1NQRUNJQUxfS0VSTkVMX1BPUlQpCiNkZWZpbmUg
SE9TVF9LRVhURF9QT1JUICg4ICsgSE9TVF9NQVhfU1BFQ0lBTF9LRVJORUxfUE9SVCkKI2RlZmlu
ZSBIT1NUX0NIVURfUE9SVCAoOSArIEhPU1RfTUFYX1NQRUNJQUxfS0VSTkVMX1BPUlQpCiNkZWZp
bmUgSE9TVF9VTkZSRUVEX1BPUlQgKDEwICsgSE9TVF9NQVhfU1BFQ0lBTF9LRVJORUxfUE9SVCkK
I2RlZmluZSBIT1NUX0FNRklEX1BPUlQgKDExICsgSE9TVF9NQVhfU1BFQ0lBTF9LRVJORUxfUE9S
VCkKI2RlZmluZSBIT1NUX01BWF9TUEVDSUFMX1BPUlQgKDEyICsgSE9TVF9NQVhfU1BFQ0lBTF9L
RVJORUxfUE9SVCkKCgoKCgojZGVmaW5lIEhPU1RfTE9DQUxfTk9ERSAtMQojIDEwOCAiL3Vzci9p
bmNsdWRlL21hY2gvaG9zdF9zcGVjaWFsX3BvcnRzLmgiIDMgNAojZGVmaW5lIGhvc3RfZ2V0X2hv
c3RfcG9ydChob3N0LHBvcnQpIChob3N0X2dldF9zcGVjaWFsX3BvcnQoKGhvc3QpLCBIT1NUX0xP
Q0FMX05PREUsIEhPU1RfUE9SVCwgKHBvcnQpKSkKCgojZGVmaW5lIGhvc3Rfc2V0X2hvc3RfcG9y
dChob3N0LHBvcnQpIChLRVJOX0lOVkFMSURfQVJHVU1FTlQpCgojZGVmaW5lIGhvc3RfZ2V0X2hv
c3RfcHJpdl9wb3J0KGhvc3QscG9ydCkgKGhvc3RfZ2V0X3NwZWNpYWxfcG9ydCgoaG9zdCksIEhP
U1RfTE9DQUxfTk9ERSwgSE9TVF9QUklWX1BPUlQsIChwb3J0KSkpCgoKI2RlZmluZSBob3N0X3Nl
dF9ob3N0X3ByaXZfcG9ydChob3N0LHBvcnQpIChLRVJOX0lOVkFMSURfQVJHVU1FTlQpCgojZGVm
aW5lIGhvc3RfZ2V0X2lvX21hc3Rlcl9wb3J0KGhvc3QscG9ydCkgKGhvc3RfZ2V0X3NwZWNpYWxf
cG9ydCgoaG9zdCksIEhPU1RfTE9DQUxfTk9ERSwgSE9TVF9JT19NQVNURVJfUE9SVCwgKHBvcnQp
KSkKCgojZGVmaW5lIGhvc3Rfc2V0X2lvX21hc3Rlcl9wb3J0KGhvc3QscG9ydCkgKEtFUk5fSU5W
QUxJRF9BUkdVTUVOVCkKCgoKCiNkZWZpbmUgaG9zdF9nZXRfZHluYW1pY19wYWdlcl9wb3J0KGhv
c3QscG9ydCkgKGhvc3RfZ2V0X3NwZWNpYWxfcG9ydCgoaG9zdCksIEhPU1RfTE9DQUxfTk9ERSwg
SE9TVF9EWU5BTUlDX1BBR0VSX1BPUlQsIChwb3J0KSkpCgoKI2RlZmluZSBob3N0X3NldF9keW5h
bWljX3BhZ2VyX3BvcnQoaG9zdCxwb3J0KSAoaG9zdF9zZXRfc3BlY2lhbF9wb3J0KChob3N0KSwg
SE9TVF9EWU5BTUlDX1BBR0VSX1BPUlQsIChwb3J0KSkpCgoKI2RlZmluZSBob3N0X2dldF9hdWRp
dF9jb250cm9sX3BvcnQoaG9zdCxwb3J0KSAoaG9zdF9nZXRfc3BlY2lhbF9wb3J0KChob3N0KSwg
SE9TVF9MT0NBTF9OT0RFLCBIT1NUX0FVRElUX0NPTlRST0xfUE9SVCwgKHBvcnQpKSkKCgojZGVm
aW5lIGhvc3Rfc2V0X2F1ZGl0X2NvbnRyb2xfcG9ydChob3N0LHBvcnQpIChob3N0X3NldF9zcGVj
aWFsX3BvcnQoKGhvc3QpLCBIT1NUX0FVRElUX0NPTlRST0xfUE9SVCwgKHBvcnQpKSkKCgojZGVm
aW5lIGhvc3RfZ2V0X3VzZXJfbm90aWZpY2F0aW9uX3BvcnQoaG9zdCxwb3J0KSAoaG9zdF9nZXRf
c3BlY2lhbF9wb3J0KChob3N0KSwgSE9TVF9MT0NBTF9OT0RFLCBIT1NUX1VTRVJfTk9USUZJQ0FU
SU9OX1BPUlQsIChwb3J0KSkpCgoKI2RlZmluZSBob3N0X3NldF91c2VyX25vdGlmaWNhdGlvbl9w
b3J0KGhvc3QscG9ydCkgKGhvc3Rfc2V0X3NwZWNpYWxfcG9ydCgoaG9zdCksIEhPU1RfVVNFUl9O
T1RJRklDQVRJT05fUE9SVCwgKHBvcnQpKSkKCgojZGVmaW5lIGhvc3RfZ2V0X2F1dG9tb3VudGRf
cG9ydChob3N0LHBvcnQpIChob3N0X2dldF9zcGVjaWFsX3BvcnQoKGhvc3QpLCBIT1NUX0xPQ0FM
X05PREUsIEhPU1RfQVVUT01PVU5URF9QT1JULCAocG9ydCkpKQoKCiNkZWZpbmUgaG9zdF9zZXRf
YXV0b21vdW50ZF9wb3J0KGhvc3QscG9ydCkgKGhvc3Rfc2V0X3NwZWNpYWxfcG9ydCgoaG9zdCks
IEhPU1RfQVVUT01PVU5URF9QT1JULCAocG9ydCkpKQoKCiNkZWZpbmUgaG9zdF9nZXRfbG9ja2Rf
cG9ydChob3N0LHBvcnQpIChob3N0X2dldF9zcGVjaWFsX3BvcnQoKGhvc3QpLCBIT1NUX0xPQ0FM
X05PREUsIEhPU1RfTE9DS0RfUE9SVCwgKHBvcnQpKSkKCgojZGVmaW5lIGhvc3Rfc2V0X2xvY2tk
X3BvcnQoaG9zdCxwb3J0KSAoaG9zdF9zZXRfc3BlY2lhbF9wb3J0KChob3N0KSwgSE9TVF9MT0NL
RF9QT1JULCAocG9ydCkpKQoKCiNkZWZpbmUgaG9zdF9nZXRfa2V4dGRfcG9ydChob3N0LHBvcnQp
IChob3N0X2dldF9zcGVjaWFsX3BvcnQoKGhvc3QpLCBIT1NUX0xPQ0FMX05PREUsIEhPU1RfS0VY
VERfUE9SVCwgKHBvcnQpKSkKCgojZGVmaW5lIGhvc3Rfc2V0X2tleHRkX3BvcnQoaG9zdCxwb3J0
KSAoaG9zdF9zZXRfc3BlY2lhbF9wb3J0KChob3N0KSwgSE9TVF9LRVhURF9QT1JULCAocG9ydCkp
KQoKCiNkZWZpbmUgaG9zdF9nZXRfY2h1ZF9wb3J0KGhvc3QscG9ydCkgKGhvc3RfZ2V0X3NwZWNp
YWxfcG9ydCgoaG9zdCksIEhPU1RfTE9DQUxfTk9ERSwgSE9TVF9DSFVEX1BPUlQsIChwb3J0KSkp
CgoKI2RlZmluZSBob3N0X3NldF9jaHVkX3BvcnQoaG9zdCxwb3J0KSAoaG9zdF9zZXRfc3BlY2lh
bF9wb3J0KChob3N0KSwgSE9TVF9DSFVEX1BPUlQsIChwb3J0KSkpCgoKI2RlZmluZSBob3N0X2dl
dF91bmZyZWVkX3BvcnQoaG9zdCxwb3J0KSAoaG9zdF9nZXRfc3BlY2lhbF9wb3J0KChob3N0KSwg
SE9TVF9MT0NBTF9OT0RFLCBIT1NUX1VORlJFRURfUE9SVCwgKHBvcnQpKSkKCgojZGVmaW5lIGhv
c3Rfc2V0X3VuZnJlZWRfcG9ydChob3N0LHBvcnQpIChob3N0X3NldF9zcGVjaWFsX3BvcnQoKGhv
c3QpLCBIT1NUX1VORlJFRURfUE9SVCwgKHBvcnQpKSkKCgojZGVmaW5lIGhvc3RfZ2V0X2FtZmlk
X3BvcnQoaG9zdCxwb3J0KSAoaG9zdF9nZXRfc3BlY2lhbF9wb3J0KChob3N0KSwgSE9TVF9MT0NB
TF9OT0RFLCBIT1NUX0FNRklEX1BPUlQsIChwb3J0KSkpCgoKI2RlZmluZSBob3N0X3NldF9hbWZp
ZF9wb3J0KGhvc3QscG9ydCkgKGhvc3Rfc2V0X3NwZWNpYWxfcG9ydCgoaG9zdCksIEhPU1RfQU1G
SURfUE9SVCwgKHBvcnQpKSkKIyA4MyAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaF90eXBlcy5oIiAy
IDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvbWVtb3J5X29iamVjdF90eXBlcy5oIiAxIDMg
NAojIDY2ICIvdXNyL2luY2x1ZGUvbWFjaC9tZW1vcnlfb2JqZWN0X3R5cGVzLmgiIDMgNAojZGVm
aW5lIF9NQUNIX01FTU9SWV9PQkpFQ1RfVFlQRVNfSF8gCiMgNzUgIi91c3IvaW5jbHVkZS9tYWNo
L21lbW9yeV9vYmplY3RfdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvdm1fcHJv
dC5oIiAxIDMgNAojIDY3ICIvdXNyL2luY2x1ZGUvbWFjaC92bV9wcm90LmgiIDMgNAojZGVmaW5l
IF9NQUNIX1ZNX1BST1RfSF8gCgoKCgoKCgp0eXBlZGVmIGludCB2bV9wcm90X3Q7CgoKCgoKI2Rl
ZmluZSBWTV9QUk9UX05PTkUgKCh2bV9wcm90X3QpIDB4MDApCgojZGVmaW5lIFZNX1BST1RfUkVB
RCAoKHZtX3Byb3RfdCkgMHgwMSkKI2RlZmluZSBWTV9QUk9UX1dSSVRFICgodm1fcHJvdF90KSAw
eDAyKQojZGVmaW5lIFZNX1BST1RfRVhFQ1VURSAoKHZtX3Byb3RfdCkgMHgwNCkKCgoKCgojZGVm
aW5lIFZNX1BST1RfREVGQVVMVCAoVk1fUFJPVF9SRUFEfFZNX1BST1RfV1JJVEUpCgoKCgoKI2Rl
ZmluZSBWTV9QUk9UX0FMTCAoVk1fUFJPVF9SRUFEfFZNX1BST1RfV1JJVEV8Vk1fUFJPVF9FWEVD
VVRFKQojIDEwNiAiL3Vzci9pbmNsdWRlL21hY2gvdm1fcHJvdC5oIiAzIDQKI2RlZmluZSBWTV9Q
Uk9UX05PX0NIQU5HRSAoKHZtX3Byb3RfdCkgMHgwOCkKIyAxMTYgIi91c3IvaW5jbHVkZS9tYWNo
L3ZtX3Byb3QuaCIgMyA0CiNkZWZpbmUgVk1fUFJPVF9DT1BZICgodm1fcHJvdF90KSAweDEwKQoj
IDEzMCAiL3Vzci9pbmNsdWRlL21hY2gvdm1fcHJvdC5oIiAzIDQKI2RlZmluZSBWTV9QUk9UX1dB
TlRTX0NPUFkgKCh2bV9wcm90X3QpIDB4MTApCgoKCgoKCgojZGVmaW5lIFZNX1BST1RfVFJVU1RF
RCAoKHZtX3Byb3RfdCkgMHgyMCkKIyA3NiAiL3Vzci9pbmNsdWRlL21hY2gvbWVtb3J5X29iamVj
dF90eXBlcy5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9tYWNoL3ZtX3N5bmMuaCIgMSAzIDQK
IyA2NCAiL3Vzci9pbmNsdWRlL21hY2gvdm1fc3luYy5oIiAzIDQKI2RlZmluZSBfTUFDSF9WTV9T
WU5DX0hfIAoKdHlwZWRlZiB1bnNpZ25lZCB2bV9zeW5jX3Q7CgoKCgoKI2RlZmluZSBWTV9TWU5D
X0FTWU5DSFJPTk9VUyAoKHZtX3N5bmNfdCkgMHgwMSkKI2RlZmluZSBWTV9TWU5DX1NZTkNIUk9O
T1VTICgodm1fc3luY190KSAweDAyKQojZGVmaW5lIFZNX1NZTkNfSU5WQUxJREFURSAoKHZtX3N5
bmNfdCkgMHgwNCkKI2RlZmluZSBWTV9TWU5DX0tJTExQQUdFUyAoKHZtX3N5bmNfdCkgMHgwOCkK
I2RlZmluZSBWTV9TWU5DX0RFQUNUSVZBVEUgKCh2bV9zeW5jX3QpIDB4MTApCiNkZWZpbmUgVk1f
U1lOQ19DT05USUdVT1VTICgodm1fc3luY190KSAweDIwKQojZGVmaW5lIFZNX1NZTkNfUkVVU0FC
TEVQQUdFUyAoKHZtX3N5bmNfdCkgMHg0MCkKIyA3NyAiL3Vzci9pbmNsdWRlL21hY2gvbWVtb3J5
X29iamVjdF90eXBlcy5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9tYWNoL3ZtX3R5cGVzLmgi
IDEgMyA0CiMgMzMgIi91c3IvaW5jbHVkZS9tYWNoL3ZtX3R5cGVzLmgiIDMgNAojZGVmaW5lIF9N
QUNIX1ZNX1RZUEVTX0hfIAoKCgoKCgp0eXBlZGVmIHZtX29mZnNldF90IHBvaW50ZXJfdDsKdHlw
ZWRlZiB2bV9vZmZzZXRfdCB2bV9hZGRyZXNzX3Q7CgoKCgoKCgp0eXBlZGVmIHVpbnQ2NF90IGFk
ZHI2NF90OwojIDYxICIvdXNyL2luY2x1ZGUvbWFjaC92bV90eXBlcy5oIiAzIDQKdHlwZWRlZiB1
aW50MzJfdCByZWc2NF90OwoKCgoKCgp0eXBlZGVmIHVpbnQzMl90IHBwbnVtX3Q7CiNkZWZpbmUg
UFBOVU1fTUFYIFVJTlQzMl9NQVgKCgoKdHlwZWRlZiBtYWNoX3BvcnRfdCB2bV9tYXBfdDsKCgoj
ZGVmaW5lIFZNX01BUF9OVUxMICgodm1fbWFwX3QpIDApCgoKCgoKdHlwZWRlZiB1aW50NjRfdCB2
bV9vYmplY3Rfb2Zmc2V0X3Q7CnR5cGVkZWYgdWludDY0X3Qgdm1fb2JqZWN0X3NpemVfdDsKCgp0
eXBlZGVmIG1hY2hfcG9ydF90IHVwbF90Owp0eXBlZGVmIG1hY2hfcG9ydF90IHZtX25hbWVkX2Vu
dHJ5X3Q7CgoKI2RlZmluZSBVUExfTlVMTCAoKHVwbF90KSAwKQojZGVmaW5lIFZNX05BTUVEX0VO
VFJZX05VTEwgKCh2bV9uYW1lZF9lbnRyeV90KSAwKQojIDc4ICIvdXNyL2luY2x1ZGUvbWFjaC9t
ZW1vcnlfb2JqZWN0X3R5cGVzLmgiIDIgMyA0CgoKCgojZGVmaW5lIFZNXzY0X0JJVF9EQVRBX09C
SkVDVFMgCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1vcnlfb2JqZWN0X29mZnNldF90
Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1vcnlfb2JqZWN0X3NpemVfdDsKdHlwZWRl
ZiBuYXR1cmFsX3QgbWVtb3J5X29iamVjdF9jbHVzdGVyX3NpemVfdDsKdHlwZWRlZiBuYXR1cmFs
X3QgKiBtZW1vcnlfb2JqZWN0X2ZhdWx0X2luZm9fdDsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBs
b25nIHZtX29iamVjdF9pZF90OwoKCgoKCgoKdHlwZWRlZiBtYWNoX3BvcnRfdCBtZW1vcnlfb2Jq
ZWN0X3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3QgbWVtb3J5X29iamVjdF9jb250cm9sX3Q7CgoKdHlw
ZWRlZiBtZW1vcnlfb2JqZWN0X3QgKm1lbW9yeV9vYmplY3RfYXJyYXlfdDsKCgoKCnR5cGVkZWYg
bWFjaF9wb3J0X3QgbWVtb3J5X29iamVjdF9uYW1lX3Q7CgoKCnR5cGVkZWYgbWFjaF9wb3J0X3Qg
bWVtb3J5X29iamVjdF9kZWZhdWx0X3Q7CgoKCiNkZWZpbmUgTUVNT1JZX09CSkVDVF9OVUxMICgo
bWVtb3J5X29iamVjdF90KSAwKQojZGVmaW5lIE1FTU9SWV9PQkpFQ1RfQ09OVFJPTF9OVUxMICgo
bWVtb3J5X29iamVjdF9jb250cm9sX3QpIDApCiNkZWZpbmUgTUVNT1JZX09CSkVDVF9OQU1FX05V
TEwgKChtZW1vcnlfb2JqZWN0X25hbWVfdCkgMCkKI2RlZmluZSBNRU1PUllfT0JKRUNUX0RFRkFV
TFRfTlVMTCAoKG1lbW9yeV9vYmplY3RfZGVmYXVsdF90KSAwKQoKCnR5cGVkZWYgaW50IG1lbW9y
eV9vYmplY3RfY29weV9zdHJhdGVneV90OwoKI2RlZmluZSBNRU1PUllfT0JKRUNUX0NPUFlfTk9O
RSAwCgojZGVmaW5lIE1FTU9SWV9PQkpFQ1RfQ09QWV9DQUxMIDEKCiNkZWZpbmUgTUVNT1JZX09C
SkVDVF9DT1BZX0RFTEFZIDIKCgoKI2RlZmluZSBNRU1PUllfT0JKRUNUX0NPUFlfVEVNUE9SQVJZ
IDMKCgoKCiNkZWZpbmUgTUVNT1JZX09CSkVDVF9DT1BZX1NZTU1FVFJJQyA0CiMgMTQ2ICIvdXNy
L2luY2x1ZGUvbWFjaC9tZW1vcnlfb2JqZWN0X3R5cGVzLmgiIDMgNAojZGVmaW5lIE1FTU9SWV9P
QkpFQ1RfQ09QWV9JTlZBTElEIDUKIyAxNTYgIi91c3IvaW5jbHVkZS9tYWNoL21lbW9yeV9vYmpl
Y3RfdHlwZXMuaCIgMyA0CnR5cGVkZWYgaW50IG1lbW9yeV9vYmplY3RfcmV0dXJuX3Q7CgoKI2Rl
ZmluZSBNRU1PUllfT0JKRUNUX1JFVFVSTl9OT05FIDAKCiNkZWZpbmUgTUVNT1JZX09CSkVDVF9S
RVRVUk5fRElSVFkgMQoKI2RlZmluZSBNRU1PUllfT0JKRUNUX1JFVFVSTl9BTEwgMgoKI2RlZmlu
ZSBNRU1PUllfT0JKRUNUX1JFVFVSTl9BTllUSElORyAzCgoKCgoKCiNkZWZpbmUgTUVNT1JZX09C
SkVDVF9EQVRBX0ZMVVNIIDB4MQojZGVmaW5lIE1FTU9SWV9PQkpFQ1RfREFUQV9OT19DSEFOR0Ug
MHgyCiNkZWZpbmUgTUVNT1JZX09CSkVDVF9EQVRBX1BVUkdFIDB4NAojZGVmaW5lIE1FTU9SWV9P
QkpFQ1RfQ09QWV9TWU5DIDB4OAojZGVmaW5lIE1FTU9SWV9PQkpFQ1RfREFUQV9TWU5DIDB4MTAK
I2RlZmluZSBNRU1PUllfT0JKRUNUX0lPX1NZTkMgMHgyMAojZGVmaW5lIE1FTU9SWV9PQkpFQ1Rf
REFUQV9GTFVTSF9BTEwgMHg0MAoKCgoKCiNkZWZpbmUgTUVNT1JZX09CSkVDVF9JTkZPX01BWCAo
MTAyNCkKdHlwZWRlZiBpbnQgKm1lbW9yeV9vYmplY3RfaW5mb190Owp0eXBlZGVmIGludCBtZW1v
cnlfb2JqZWN0X2ZsYXZvcl90Owp0eXBlZGVmIGludCBtZW1vcnlfb2JqZWN0X2luZm9fZGF0YV90
WygxMDI0KV07CgoKI2RlZmluZSBNRU1PUllfT0JKRUNUX1BFUkZPUk1BTkNFX0lORk8gMTEKI2Rl
ZmluZSBNRU1PUllfT0JKRUNUX0FUVFJJQlVURV9JTkZPIDE0CiNkZWZpbmUgTUVNT1JZX09CSkVD
VF9CRUhBVklPUl9JTkZPIDE1CgoKc3RydWN0IG1lbW9yeV9vYmplY3RfcGVyZl9pbmZvIHsKIG1l
bW9yeV9vYmplY3RfY2x1c3Rlcl9zaXplX3QgY2x1c3Rlcl9zaXplOwogYm9vbGVhbl90IG1heV9j
YWNoZTsKfTsKCnN0cnVjdCBtZW1vcnlfb2JqZWN0X2F0dHJfaW5mbyB7CiBtZW1vcnlfb2JqZWN0
X2NvcHlfc3RyYXRlZ3lfdCBjb3B5X3N0cmF0ZWd5OwogbWVtb3J5X29iamVjdF9jbHVzdGVyX3Np
emVfdCBjbHVzdGVyX3NpemU7CiBib29sZWFuX3QgbWF5X2NhY2hlX29iamVjdDsKIGJvb2xlYW5f
dCB0ZW1wb3Jhcnk7Cn07CgpzdHJ1Y3QgbWVtb3J5X29iamVjdF9iZWhhdmVfaW5mbyB7CiBtZW1v
cnlfb2JqZWN0X2NvcHlfc3RyYXRlZ3lfdCBjb3B5X3N0cmF0ZWd5OwogYm9vbGVhbl90IHRlbXBv
cmFyeTsKIGJvb2xlYW5fdCBpbnZhbGlkYXRlOwogYm9vbGVhbl90IHNpbGVudF9vdmVyd3JpdGU7
CiBib29sZWFuX3QgYWR2aXNvcnlfcGFnZW91dDsKfTsKCgp0eXBlZGVmIHN0cnVjdCBtZW1vcnlf
b2JqZWN0X2JlaGF2ZV9pbmZvICptZW1vcnlfb2JqZWN0X2JlaGF2ZV9pbmZvX3Q7CnR5cGVkZWYg
c3RydWN0IG1lbW9yeV9vYmplY3RfYmVoYXZlX2luZm8gbWVtb3J5X29iamVjdF9iZWhhdmVfaW5m
b19kYXRhX3Q7Cgp0eXBlZGVmIHN0cnVjdCBtZW1vcnlfb2JqZWN0X3BlcmZfaW5mbyAqbWVtb3J5
X29iamVjdF9wZXJmX2luZm9fdDsKdHlwZWRlZiBzdHJ1Y3QgbWVtb3J5X29iamVjdF9wZXJmX2lu
Zm8gbWVtb3J5X29iamVjdF9wZXJmX2luZm9fZGF0YV90OwoKdHlwZWRlZiBzdHJ1Y3QgbWVtb3J5
X29iamVjdF9hdHRyX2luZm8gKm1lbW9yeV9vYmplY3RfYXR0cl9pbmZvX3Q7CnR5cGVkZWYgc3Ry
dWN0IG1lbW9yeV9vYmplY3RfYXR0cl9pbmZvIG1lbW9yeV9vYmplY3RfYXR0cl9pbmZvX2RhdGFf
dDsKCiNkZWZpbmUgTUVNT1JZX09CSkVDVF9CRUhBVkVfSU5GT19DT1VOVCAoKG1hY2hfbXNnX3R5
cGVfbnVtYmVyX3QpIChzaXplb2YobWVtb3J5X29iamVjdF9iZWhhdmVfaW5mb19kYXRhX3QpL3Np
emVvZihpbnQpKSkKCiNkZWZpbmUgTUVNT1JZX09CSkVDVF9QRVJGX0lORk9fQ09VTlQgKChtYWNo
X21zZ190eXBlX251bWJlcl90KSAoc2l6ZW9mKG1lbW9yeV9vYmplY3RfcGVyZl9pbmZvX2RhdGFf
dCkvc2l6ZW9mKGludCkpKQoKI2RlZmluZSBNRU1PUllfT0JKRUNUX0FUVFJfSU5GT19DT1VOVCAo
KG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpIChzaXplb2YobWVtb3J5X29iamVjdF9hdHRyX2luZm9f
ZGF0YV90KS9zaXplb2YoaW50KSkpCgoKI2RlZmluZSBpbnZhbGlkX21lbW9yeV9vYmplY3RfZmxh
dm9yKGYpIChmICE9IE1FTU9SWV9PQkpFQ1RfQVRUUklCVVRFX0lORk8gJiYgZiAhPSBNRU1PUllf
T0JKRUNUX1BFUkZPUk1BTkNFX0lORk8gJiYgZiAhPSBPTERfTUVNT1JZX09CSkVDVF9CRUhBVklP
Ul9JTkZPICYmIGYgIT0gTUVNT1JZX09CSkVDVF9CRUhBVklPUl9JTkZPICYmIGYgIT0gT0xEX01F
TU9SWV9PQkpFQ1RfQVRUUklCVVRFX0lORk8pCiMgMjQzICIvdXNyL2luY2x1ZGUvbWFjaC9tZW1v
cnlfb2JqZWN0X3R5cGVzLmgiIDMgNAojZGVmaW5lIE1FTU9SWV9PQkpFQ1RfVEVSTUlOQVRFX0lE
TEUgMHgxCiNkZWZpbmUgTUVNT1JZX09CSkVDVF9SRVNQRUNUX0NBQ0hFIDB4MgojZGVmaW5lIE1F
TU9SWV9PQkpFQ1RfUkVMRUFTRV9OT19PUCAweDQKCgoKCiNkZWZpbmUgTUFQX01FTV9OT09QIDAK
I2RlZmluZSBNQVBfTUVNX0NPUFlCQUNLIDEKI2RlZmluZSBNQVBfTUVNX0lPIDIKI2RlZmluZSBN
QVBfTUVNX1dUSFJVIDMKI2RlZmluZSBNQVBfTUVNX1dDT01CIDQKCgojZGVmaW5lIEdFVF9NQVBf
TUVNKGZsYWdzKSAoKCgodW5zaWduZWQgaW50KShmbGFncykpID4+IDI0KSAmIDB4RkYpCgoKI2Rl
ZmluZSBTRVRfTUFQX01FTShjYWNoaW5nLGZsYWdzKSAoKGZsYWdzKSA9ICgoKCh1bnNpZ25lZCBp
bnQpKGNhY2hpbmcpKSA8PCAyNCkgJiAweEZGMDAwMDAwKSB8ICgoZmxhZ3MpICYgMHhGRkZGRkYp
KTsKCgoKCiNkZWZpbmUgTUFQX01FTV9PTkxZIDB4MTAwMDAKI2RlZmluZSBNQVBfTUVNX05BTUVE
X0NSRUFURSAweDIwMDAwCiNkZWZpbmUgTUFQX01FTV9QVVJHQUJMRSAweDQwMDAwCiNkZWZpbmUg
TUFQX01FTV9OQU1FRF9SRVVTRSAweDgwMDAwCiMgODYgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hf
dHlwZXMuaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvZXhjZXB0aW9uX3R5cGVzLmgi
IDEgMyA0CiMgNjAgIi91c3IvaW5jbHVkZS9tYWNoL2V4Y2VwdGlvbl90eXBlcy5oIiAzIDQKI2Rl
ZmluZSBfTUFDSF9FWENFUFRJT05fVFlQRVNfSF8gCgojIDEgIi91c3IvaW5jbHVkZS9tYWNoL21h
Y2hpbmUvZXhjZXB0aW9uLmgiIDEgMyA0CiMgMzAgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hpbmUv
ZXhjZXB0aW9uLmgiIDMgNAojZGVmaW5lIF9NQUNIX01BQ0hJTkVfRVhDRVBUSU9OX0hfIAoKCgoK
IyAxICIvdXNyL2luY2x1ZGUvbWFjaC9pMzg2L2V4Y2VwdGlvbi5oIiAxIDMgNAojIDYwICIvdXNy
L2luY2x1ZGUvbWFjaC9pMzg2L2V4Y2VwdGlvbi5oIiAzIDQKI2RlZmluZSBfTUFDSF9JMzg2X0VY
Q0VQVElPTl9IXyAKCgoKCgojZGVmaW5lIEVYQ19UWVBFU19DT1VOVCAxMQoKCgoKCiNkZWZpbmUg
RVhDRVBUSU9OX0NPREVfTUFYIDIKCgoKCgojZGVmaW5lIEVYQ19JMzg2X0lOVk9QIDEKCgoKCgoj
ZGVmaW5lIEVYQ19JMzg2X0RJViAxCiNkZWZpbmUgRVhDX0kzODZfSU5UTyAyCiNkZWZpbmUgRVhD
X0kzODZfTk9FWFQgMwojZGVmaW5lIEVYQ19JMzg2X0VYVE9WUiA0CiNkZWZpbmUgRVhDX0kzODZf
RVhURVJSIDUKI2RlZmluZSBFWENfSTM4Nl9FTUVSUiA2CiNkZWZpbmUgRVhDX0kzODZfQk9VTkQg
NwojZGVmaW5lIEVYQ19JMzg2X1NTRUVYVEVSUiA4CiMgMTA2ICIvdXNyL2luY2x1ZGUvbWFjaC9p
Mzg2L2V4Y2VwdGlvbi5oIiAzIDQKI2RlZmluZSBFWENfSTM4Nl9TR0wgMQojZGVmaW5lIEVYQ19J
Mzg2X0JQVCAyCgojZGVmaW5lIEVYQ19JMzg2X0RJVkVSUiAwCiNkZWZpbmUgRVhDX0kzODZfU0dM
U1RQIDEKI2RlZmluZSBFWENfSTM4Nl9OTUlGTFQgMgojZGVmaW5lIEVYQ19JMzg2X0JQVEZMVCAz
CiNkZWZpbmUgRVhDX0kzODZfSU5UT0ZMVCA0CiNkZWZpbmUgRVhDX0kzODZfQk9VTkRGTFQgNQoj
ZGVmaW5lIEVYQ19JMzg2X0lOVk9QRkxUIDYKI2RlZmluZSBFWENfSTM4Nl9OT0VYVEZMVCA3CiNk
ZWZpbmUgRVhDX0kzODZfREJMRkxUIDgKI2RlZmluZSBFWENfSTM4Nl9FWFRPVlJGTFQgOQojZGVm
aW5lIEVYQ19JMzg2X0lOVlRTU0ZMVCAxMAojZGVmaW5lIEVYQ19JMzg2X1NFR05QRkxUIDExCiNk
ZWZpbmUgRVhDX0kzODZfU1RLRkxUIDEyCiNkZWZpbmUgRVhDX0kzODZfR1BGTFQgMTMKI2RlZmlu
ZSBFWENfSTM4Nl9QR0ZMVCAxNAojZGVmaW5lIEVYQ19JMzg2X0VYVEVSUkZMVCAxNgojZGVmaW5l
IEVYQ19JMzg2X0FMSUdORkxUIDE3CiNkZWZpbmUgRVhDX0kzODZfRU5EUEVSUiAzMwojZGVmaW5l
IEVYQ19JMzg2X0VOT0VYVEZMVCAzMgoKCgoKCiNkZWZpbmUgRVhDX01BU0tfTUFDSElORSAwCiMg
MzYgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hpbmUvZXhjZXB0aW9uLmgiIDIgMyA0CiMgNjMgIi91
c3IvaW5jbHVkZS9tYWNoL2V4Y2VwdGlvbl90eXBlcy5oIiAyIDMgNAoKCgoKCiNkZWZpbmUgRVhD
X0JBRF9BQ0NFU1MgMQoKCgojZGVmaW5lIEVYQ19CQURfSU5TVFJVQ1RJT04gMgoKCiNkZWZpbmUg
RVhDX0FSSVRITUVUSUMgMwoKCiNkZWZpbmUgRVhDX0VNVUxBVElPTiA0CgoKCiNkZWZpbmUgRVhD
X1NPRlRXQVJFIDUKCgoKCiNkZWZpbmUgRVhDX0JSRUFLUE9JTlQgNgoKCiNkZWZpbmUgRVhDX1NZ
U0NBTEwgNwoKI2RlZmluZSBFWENfTUFDSF9TWVNDQUxMIDgKCiNkZWZpbmUgRVhDX1JQQ19BTEVS
VCA5CgojZGVmaW5lIEVYQ19DUkFTSCAxMAoKCgoKCiNkZWZpbmUgRVhDRVBUSU9OX0RFRkFVTFQg
MQoKCgojZGVmaW5lIEVYQ0VQVElPTl9TVEFURSAyCgoKCgojZGVmaW5lIEVYQ0VQVElPTl9TVEFU
RV9JREVOVElUWSAzCgoKCgojZGVmaW5lIE1BQ0hfRVhDRVBUSU9OX0NPREVTIDB4ODAwMDAwMDAK
CgoKCgoKCiNkZWZpbmUgRVhDX01BU0tfQkFEX0FDQ0VTUyAoMSA8PCBFWENfQkFEX0FDQ0VTUykK
I2RlZmluZSBFWENfTUFTS19CQURfSU5TVFJVQ1RJT04gKDEgPDwgRVhDX0JBRF9JTlNUUlVDVElP
TikKI2RlZmluZSBFWENfTUFTS19BUklUSE1FVElDICgxIDw8IEVYQ19BUklUSE1FVElDKQojZGVm
aW5lIEVYQ19NQVNLX0VNVUxBVElPTiAoMSA8PCBFWENfRU1VTEFUSU9OKQojZGVmaW5lIEVYQ19N
QVNLX1NPRlRXQVJFICgxIDw8IEVYQ19TT0ZUV0FSRSkKI2RlZmluZSBFWENfTUFTS19CUkVBS1BP
SU5UICgxIDw8IEVYQ19CUkVBS1BPSU5UKQojZGVmaW5lIEVYQ19NQVNLX1NZU0NBTEwgKDEgPDwg
RVhDX1NZU0NBTEwpCiNkZWZpbmUgRVhDX01BU0tfTUFDSF9TWVNDQUxMICgxIDw8IEVYQ19NQUNI
X1NZU0NBTEwpCiNkZWZpbmUgRVhDX01BU0tfUlBDX0FMRVJUICgxIDw8IEVYQ19SUENfQUxFUlQp
CiNkZWZpbmUgRVhDX01BU0tfQ1JBU0ggKDEgPDwgRVhDX0NSQVNIKQoKI2RlZmluZSBFWENfTUFT
S19BTEwgKEVYQ19NQVNLX0JBRF9BQ0NFU1MgfCBFWENfTUFTS19CQURfSU5TVFJVQ1RJT04gfCBF
WENfTUFTS19BUklUSE1FVElDIHwgRVhDX01BU0tfRU1VTEFUSU9OIHwgRVhDX01BU0tfU09GVFdB
UkUgfCBFWENfTUFTS19CUkVBS1BPSU5UIHwgRVhDX01BU0tfU1lTQ0FMTCB8IEVYQ19NQVNLX01B
Q0hfU1lTQ0FMTCB8IEVYQ19NQVNLX1JQQ19BTEVSVCB8IEVYQ19NQVNLX01BQ0hJTkUpCiMgMTQ3
ICIvdXNyL2luY2x1ZGUvbWFjaC9leGNlcHRpb25fdHlwZXMuaCIgMyA0CiNkZWZpbmUgRklSU1Rf
RVhDRVBUSU9OIDEKCgoKCgoKI2RlZmluZSBFWENfU09GVF9TSUdOQUwgMHgxMDAwMwoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvbWFjaC90aHJlYWRfc3RhdHVzLmgiIDEgMyA0CiMgNjkgIi91c3IvaW5j
bHVkZS9tYWNoL3RocmVhZF9zdGF0dXMuaCIgMyA0CiNkZWZpbmUgX01BQ0hfVEhSRUFEX1NUQVRV
U19IXyAKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lL3RocmVhZF9zdGF0dXMu
aCIgMSAzIDQKIyAzMCAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaGluZS90aHJlYWRfc3RhdHVzLmgi
IDMgNAojZGVmaW5lIF9NQUNIX01BQ0hJTkVfVEhSRUFEX1NUQVRVU19IXyAKCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL21hY2gvaTM4Ni90aHJlYWRfc3RhdHVzLmgiIDEgMyA0CiMgNjggIi91c3IvaW5j
bHVkZS9tYWNoL2kzODYvdGhyZWFkX3N0YXR1cy5oIiAzIDQKI2RlZmluZSBfTUFDSF9JMzg2X1RI
UkVBRF9TVEFUVVNfSF8gCgoKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvaTM4Ni9mcF9yZWcuaCIg
MSAzIDQKIyA2MCAiL3Vzci9pbmNsdWRlL21hY2gvaTM4Ni9mcF9yZWcuaCIgMyA0CiNkZWZpbmUg
X0kzODZfRlBfU0FWRV9IXyAKCgoKc3RydWN0IHg4Nl9meF9zYXZlIHsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBmeF9jb250cm9sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZ4X3N0YXR1czsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGZ4X3RhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZ4X2JiejE7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnhfb3Bjb2RlOwogICAgICAgIHVuc2lnbmVkIGludCBm
eF9laXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnhfY3M7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgZnhfYmJ6MjsKICAgICAgICB1bnNpZ25lZCBpbnQgZnhfZHA7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZnhfZHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnhfYmJ6MzsKICAgICAgICB1bnNp
Z25lZCBpbnQgZnhfTVhDU1I7CiAgICAgICAgdW5zaWduZWQgaW50IGZ4X01YQ1NSX01BU0s7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZnhfcmVnX3dvcmRbOF1bOF07CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZnhfWE1NX3JlZ1s4XVsxNl07CgogICAgICAgIHVuc2lnbmVkIGNoYXIgZnhfcmVzZXJ2
ZWRbMTYqNl07Cn07CgoKCgoKI2RlZmluZSBGUENfSUUgMHgwMDAxCgojZGVmaW5lIEZQQ19JTSBG
UENfSUUKI2RlZmluZSBGUENfREUgMHgwMDAyCgojZGVmaW5lIEZQQ19ETSBGUENfREUKI2RlZmlu
ZSBGUENfWkUgMHgwMDA0CiNkZWZpbmUgRlBDX1pNIEZQQ19aRQojZGVmaW5lIEZQQ19PRSAweDAw
MDgKI2RlZmluZSBGUENfT00gRlBDX09FCiNkZWZpbmUgRlBDX1VFIDB4MDAxMAojZGVmaW5lIEZQ
Q19QRSAweDAwMjAKI2RlZmluZSBGUENfUEMgMHgwMzAwCiNkZWZpbmUgRlBDX1BDXzI0IDB4MDAw
MAojZGVmaW5lIEZQQ19QQ181MyAweDAyMDAKI2RlZmluZSBGUENfUENfNjQgMHgwMzAwCiNkZWZp
bmUgRlBDX1JDIDB4MGMwMAojZGVmaW5lIEZQQ19SQ19STiAweDAwMDAKI2RlZmluZSBGUENfUkNf
UkQgMHgwNDAwCiNkZWZpbmUgRlBDX1JDX1JVIDB4MDgwMAojZGVmaW5lIEZQQ19SQ19DSE9QIDB4
MGMwMAojZGVmaW5lIEZQQ19JQyAweDEwMDAKI2RlZmluZSBGUENfSUNfUFJPSiAweDAwMDAKI2Rl
ZmluZSBGUENfSUNfQUZGIDB4MTAwMAoKCgoKI2RlZmluZSBGUFNfSUUgMHgwMDAxCiNkZWZpbmUg
RlBTX0RFIDB4MDAwMgojZGVmaW5lIEZQU19aRSAweDAwMDQKI2RlZmluZSBGUFNfT0UgMHgwMDA4
CiNkZWZpbmUgRlBTX1VFIDB4MDAxMAojZGVmaW5lIEZQU19QRSAweDAwMjAKI2RlZmluZSBGUFNf
U0YgMHgwMDQwCiNkZWZpbmUgRlBTX0VTIDB4MDA4MAojZGVmaW5lIEZQU19DMCAweDAxMDAKI2Rl
ZmluZSBGUFNfQzEgMHgwMjAwCiNkZWZpbmUgRlBTX0MyIDB4MDQwMAojZGVmaW5lIEZQU19UT1Mg
MHgzODAwCiNkZWZpbmUgRlBTX1RPU19TSElGVCAxMQojZGVmaW5lIEZQU19DMyAweDQwMDAKI2Rl
ZmluZSBGUFNfQlVTWSAweDgwMDAKCgoKCiNkZWZpbmUgRlBfTk8gMAojZGVmaW5lIEZQX1NPRlQg
MQojZGVmaW5lIEZQXzI4NyAyCiNkZWZpbmUgRlBfMzg3IDMKI2RlZmluZSBGUF9GWFNSIDQKIyA3
MyAiL3Vzci9pbmNsdWRlL21hY2gvaTM4Ni90aHJlYWRfc3RhdHVzLmgiIDIgMyA0CiMgMSAiL3Vz
ci9pbmNsdWRlL21hY2gvaTM4Ni90aHJlYWRfc3RhdGUuaCIgMSAzIDQKIyAzMyAiL3Vzci9pbmNs
dWRlL21hY2gvaTM4Ni90aHJlYWRfc3RhdGUuaCIgMyA0CiNkZWZpbmUgX01BQ0hfSTM4Nl9USFJF
QURfU1RBVEVfSF8gCgoKI2RlZmluZSBJMzg2X1RIUkVBRF9TVEFURV9NQVggKDE0NCkKCgojZGVm
aW5lIFRIUkVBRF9TVEFURV9NQVggSTM4Nl9USFJFQURfU1RBVEVfTUFYCiMgNzQgIi91c3IvaW5j
bHVkZS9tYWNoL2kzODYvdGhyZWFkX3N0YXR1cy5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9p
Mzg2L2VmbGFncy5oIiAxIDMgNAojIDYwICIvdXNyL2luY2x1ZGUvaTM4Ni9lZmxhZ3MuaCIgMyA0
CiNkZWZpbmUgX0kzODZfRUZMQUdTX0hfIAoKCgoKCgojZGVmaW5lIEVGTF9DRiAweDAwMDAwMDAx
CiNkZWZpbmUgRUZMX1BGIDB4MDAwMDAwMDQKI2RlZmluZSBFRkxfQUYgMHgwMDAwMDAxMAojZGVm
aW5lIEVGTF9aRiAweDAwMDAwMDQwCiNkZWZpbmUgRUZMX1NGIDB4MDAwMDAwODAKI2RlZmluZSBF
RkxfVEYgMHgwMDAwMDEwMAojZGVmaW5lIEVGTF9JRiAweDAwMDAwMjAwCiNkZWZpbmUgRUZMX0RG
IDB4MDAwMDA0MDAKI2RlZmluZSBFRkxfT0YgMHgwMDAwMDgwMAojZGVmaW5lIEVGTF9JT1BMIDB4
MDAwMDMwMDAKI2RlZmluZSBFRkxfSU9QTF9LRVJORUwgMHgwMDAwMDAwMAojZGVmaW5lIEVGTF9J
T1BMX1VTRVIgMHgwMDAwMzAwMAojZGVmaW5lIEVGTF9OVCAweDAwMDA0MDAwCiNkZWZpbmUgRUZM
X1JGIDB4MDAwMTAwMDAKI2RlZmluZSBFRkxfVk0gMHgwMDAyMDAwMAojZGVmaW5lIEVGTF9BQyAw
eDAwMDQwMDAwCiNkZWZpbmUgRUZMX1ZJRiAweDAwMDgwMDAwCiNkZWZpbmUgRUZMX1ZJUCAweDAw
MTAwMDAwCiNkZWZpbmUgRUZMX0lEIDB4MDAyMDAwMDAKCgojZGVmaW5lIEVGTF9DTFIgMHhmZmY4
ODAyOAojZGVmaW5lIEVGTF9TRVQgMHgwMDAwMDAwMgoKI2RlZmluZSBFRkxfVVNFUl9TRVQgKEVG
TF9JRikKI2RlZmluZSBFRkxfVVNFUl9DTEVBUiAoRUZMX0lPUEx8RUZMX05UfEVGTF9SRikKIyA3
NSAiL3Vzci9pbmNsdWRlL21hY2gvaTM4Ni90aHJlYWRfc3RhdHVzLmgiIDIgMyA0CiMgOTIgIi91
c3IvaW5jbHVkZS9tYWNoL2kzODYvdGhyZWFkX3N0YXR1cy5oIiAzIDQKI2RlZmluZSBpMzg2X1RI
UkVBRF9TVEFURSAxCiNkZWZpbmUgaTM4Nl9GTE9BVF9TVEFURSAyCiNkZWZpbmUgaTM4Nl9FWENF
UFRJT05fU1RBVEUgMwoKCgoKCiNkZWZpbmUgeDg2X1RIUkVBRF9TVEFURTMyIDEKI2RlZmluZSB4
ODZfRkxPQVRfU1RBVEUzMiAyCiNkZWZpbmUgeDg2X0VYQ0VQVElPTl9TVEFURTMyIDMKI2RlZmlu
ZSB4ODZfVEhSRUFEX1NUQVRFNjQgNAojZGVmaW5lIHg4Nl9GTE9BVF9TVEFURTY0IDUKI2RlZmlu
ZSB4ODZfRVhDRVBUSU9OX1NUQVRFNjQgNgojZGVmaW5lIHg4Nl9USFJFQURfU1RBVEUgNwojZGVm
aW5lIHg4Nl9GTE9BVF9TVEFURSA4CiNkZWZpbmUgeDg2X0VYQ0VQVElPTl9TVEFURSA5CiNkZWZp
bmUgeDg2X0RFQlVHX1NUQVRFMzIgMTAKI2RlZmluZSB4ODZfREVCVUdfU1RBVEU2NCAxMQojZGVm
aW5lIHg4Nl9ERUJVR19TVEFURSAxMgojZGVmaW5lIFRIUkVBRF9TVEFURV9OT05FIDEzCgoKCgoK
I2RlZmluZSBUSFJFQURfTUFDSElORV9TVEFURV9NQVggVEhSRUFEX1NUQVRFX01BWAoKCgoKCgoK
I2RlZmluZSBWQUxJRF9USFJFQURfU1RBVEVfRkxBVk9SKHgpICgoeCA9PSB4ODZfVEhSRUFEX1NU
QVRFMzIpIHx8ICh4ID09IHg4Nl9GTE9BVF9TVEFURTMyKSB8fCAoeCA9PSB4ODZfRVhDRVBUSU9O
X1NUQVRFMzIpIHx8ICh4ID09IHg4Nl9ERUJVR19TVEFURTMyKSB8fCAoeCA9PSB4ODZfVEhSRUFE
X1NUQVRFNjQpIHx8ICh4ID09IHg4Nl9GTE9BVF9TVEFURTY0KSB8fCAoeCA9PSB4ODZfRVhDRVBU
SU9OX1NUQVRFNjQpIHx8ICh4ID09IHg4Nl9ERUJVR19TVEFURTY0KSB8fCAoeCA9PSB4ODZfVEhS
RUFEX1NUQVRFKSB8fCAoeCA9PSB4ODZfRkxPQVRfU1RBVEUpIHx8ICh4ID09IHg4Nl9FWENFUFRJ
T05fU1RBVEUpIHx8ICh4ID09IHg4Nl9ERUJVR19TVEFURSkgfHwgKHggPT0gVEhSRUFEX1NUQVRF
X05PTkUpKQojIDE0MSAiL3Vzci9pbmNsdWRlL21hY2gvaTM4Ni90aHJlYWRfc3RhdHVzLmgiIDMg
NApzdHJ1Y3QgeDg2X3N0YXRlX2hkciB7CiBpbnQgZmxhdm9yOwogaW50IGNvdW50Owp9Owp0eXBl
ZGVmIHN0cnVjdCB4ODZfc3RhdGVfaGRyIHg4Nl9zdGF0ZV9oZHJfdDsKCgoKCgojZGVmaW5lIFVT
RVJfQ09ERV9TRUxFQ1RPUiAweDAwMTcKI2RlZmluZSBVU0VSX0RBVEFfU0VMRUNUT1IgMHgwMDFm
CiNkZWZpbmUgS0VSTl9DT0RFX1NFTEVDVE9SIDB4MDAwOAojZGVmaW5lIEtFUk5fREFUQV9TRUxF
Q1RPUiAweDAwMTAKCgoKCnR5cGVkZWYgc3RydWN0IF9fZGFyd2luX2kzODZfdGhyZWFkX3N0YXRl
IGkzODZfdGhyZWFkX3N0YXRlX3Q7CiNkZWZpbmUgaTM4Nl9USFJFQURfU1RBVEVfQ09VTlQgKCht
YWNoX21zZ190eXBlX251bWJlcl90KSAoIHNpemVvZiAoaTM4Nl90aHJlYWRfc3RhdGVfdCkgLyBz
aXplb2YgKGludCkgKSkKCgp0eXBlZGVmIHN0cnVjdCBfX2Rhcndpbl9pMzg2X3RocmVhZF9zdGF0
ZSB4ODZfdGhyZWFkX3N0YXRlMzJfdDsKI2RlZmluZSB4ODZfVEhSRUFEX1NUQVRFMzJfQ09VTlQg
KChtYWNoX21zZ190eXBlX251bWJlcl90KSAoIHNpemVvZiAoeDg2X3RocmVhZF9zdGF0ZTMyX3Qp
IC8gc2l6ZW9mIChpbnQpICkpCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19kYXJ3aW5faTM4Nl9mbG9h
dF9zdGF0ZSBpMzg2X2Zsb2F0X3N0YXRlX3Q7CiNkZWZpbmUgaTM4Nl9GTE9BVF9TVEFURV9DT1VO
VCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpIChzaXplb2YoaTM4Nl9mbG9hdF9zdGF0ZV90KS9z
aXplb2YodW5zaWduZWQgaW50KSkpCgoKdHlwZWRlZiBzdHJ1Y3QgX19kYXJ3aW5faTM4Nl9mbG9h
dF9zdGF0ZSB4ODZfZmxvYXRfc3RhdGUzMl90OwojZGVmaW5lIHg4Nl9GTE9BVF9TVEFURTMyX0NP
VU5UICgobWFjaF9tc2dfdHlwZV9udW1iZXJfdCkgKHNpemVvZih4ODZfZmxvYXRfc3RhdGUzMl90
KS9zaXplb2YodW5zaWduZWQgaW50KSkpCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19kYXJ3aW5faTM4
Nl9leGNlcHRpb25fc3RhdGUgaTM4Nl9leGNlcHRpb25fc3RhdGVfdDsKI2RlZmluZSBpMzg2X0VY
Q0VQVElPTl9TVEFURV9DT1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpICggc2l6ZW9mIChp
Mzg2X2V4Y2VwdGlvbl9zdGF0ZV90KSAvIHNpemVvZiAoaW50KSApKQoKCnR5cGVkZWYgc3RydWN0
IF9fZGFyd2luX2kzODZfZXhjZXB0aW9uX3N0YXRlIHg4Nl9leGNlcHRpb25fc3RhdGUzMl90Owoj
ZGVmaW5lIHg4Nl9FWENFUFRJT05fU1RBVEUzMl9DT1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVy
X3QpICggc2l6ZW9mICh4ODZfZXhjZXB0aW9uX3N0YXRlMzJfdCkgLyBzaXplb2YgKGludCkgKSkK
CgojZGVmaW5lIEkzODZfRVhDRVBUSU9OX1NUQVRFX0NPVU5UIGkzODZfRVhDRVBUSU9OX1NUQVRF
X0NPVU5UCgp0eXBlZGVmIHN0cnVjdCBfX2Rhcndpbl94ODZfZGVidWdfc3RhdGUzMiB4ODZfZGVi
dWdfc3RhdGUzMl90OwojZGVmaW5lIHg4Nl9ERUJVR19TVEFURTMyX0NPVU5UICgobWFjaF9tc2df
dHlwZV9udW1iZXJfdCkgKCBzaXplb2YgKHg4Nl9kZWJ1Z19zdGF0ZTMyX3QpIC8gc2l6ZW9mIChp
bnQpICkpCgoKI2RlZmluZSBYODZfREVCVUdfU1RBVEUzMl9DT1VOVCB4ODZfREVCVUdfU1RBVEUz
Ml9DT1VOVAoKdHlwZWRlZiBzdHJ1Y3QgX19kYXJ3aW5feDg2X3RocmVhZF9zdGF0ZTY0IHg4Nl90
aHJlYWRfc3RhdGU2NF90OwojZGVmaW5lIHg4Nl9USFJFQURfU1RBVEU2NF9DT1VOVCAoKG1hY2hf
bXNnX3R5cGVfbnVtYmVyX3QpICggc2l6ZW9mICh4ODZfdGhyZWFkX3N0YXRlNjRfdCkgLyBzaXpl
b2YgKGludCkgKSkKCgp0eXBlZGVmIHN0cnVjdCBfX2Rhcndpbl94ODZfZmxvYXRfc3RhdGU2NCB4
ODZfZmxvYXRfc3RhdGU2NF90OwojZGVmaW5lIHg4Nl9GTE9BVF9TVEFURTY0X0NPVU5UICgobWFj
aF9tc2dfdHlwZV9udW1iZXJfdCkgKHNpemVvZih4ODZfZmxvYXRfc3RhdGU2NF90KS9zaXplb2Yo
dW5zaWduZWQgaW50KSkpCgoKdHlwZWRlZiBzdHJ1Y3QgX19kYXJ3aW5feDg2X2V4Y2VwdGlvbl9z
dGF0ZTY0IHg4Nl9leGNlcHRpb25fc3RhdGU2NF90OwojZGVmaW5lIHg4Nl9FWENFUFRJT05fU1RB
VEU2NF9DT1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpICggc2l6ZW9mICh4ODZfZXhjZXB0
aW9uX3N0YXRlNjRfdCkgLyBzaXplb2YgKGludCkgKSkKCgojZGVmaW5lIFg4Nl9FWENFUFRJT05f
U1RBVEU2NF9DT1VOVCB4ODZfRVhDRVBUSU9OX1NUQVRFNjRfQ09VTlQKCnR5cGVkZWYgc3RydWN0
IF9fZGFyd2luX3g4Nl9kZWJ1Z19zdGF0ZTY0IHg4Nl9kZWJ1Z19zdGF0ZTY0X3Q7CiNkZWZpbmUg
eDg2X0RFQlVHX1NUQVRFNjRfQ09VTlQgKChtYWNoX21zZ190eXBlX251bWJlcl90KSAoIHNpemVv
ZiAoeDg2X2RlYnVnX3N0YXRlNjRfdCkgLyBzaXplb2YgKGludCkgKSkKCgojZGVmaW5lIFg4Nl9E
RUJVR19TVEFURTY0X0NPVU5UIHg4Nl9ERUJVR19TVEFURTY0X0NPVU5UCgoKCgpzdHJ1Y3QgeDg2
X3RocmVhZF9zdGF0ZSB7CiB4ODZfc3RhdGVfaGRyX3QgdHNoOwogdW5pb24gewogICAgIHg4Nl90
aHJlYWRfc3RhdGUzMl90IHRzMzI7CiAgICAgeDg2X3RocmVhZF9zdGF0ZTY0X3QgdHM2NDsKIH0g
dXRzOwp9OwoKc3RydWN0IHg4Nl9mbG9hdF9zdGF0ZSB7CiB4ODZfc3RhdGVfaGRyX3QgZnNoOwog
dW5pb24gewogIHg4Nl9mbG9hdF9zdGF0ZTMyX3QgZnMzMjsKICB4ODZfZmxvYXRfc3RhdGU2NF90
IGZzNjQ7CiB9IHVmczsKfTsKCnN0cnVjdCB4ODZfZXhjZXB0aW9uX3N0YXRlIHsKIHg4Nl9zdGF0
ZV9oZHJfdCBlc2g7CiB1bmlvbiB7CiAgeDg2X2V4Y2VwdGlvbl9zdGF0ZTMyX3QgZXMzMjsKICB4
ODZfZXhjZXB0aW9uX3N0YXRlNjRfdCBlczY0OwogfSB1ZXM7Cn07CgpzdHJ1Y3QgeDg2X2RlYnVn
X3N0YXRlIHsKIHg4Nl9zdGF0ZV9oZHJfdCBkc2g7CiB1bmlvbiB7CiAgeDg2X2RlYnVnX3N0YXRl
MzJfdCBkczMyOwogIHg4Nl9kZWJ1Z19zdGF0ZTY0X3QgZHM2NDsKIH0gdWRzOwp9OwoKdHlwZWRl
ZiBzdHJ1Y3QgeDg2X3RocmVhZF9zdGF0ZSB4ODZfdGhyZWFkX3N0YXRlX3Q7CiNkZWZpbmUgeDg2
X1RIUkVBRF9TVEFURV9DT1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpICggc2l6ZW9mICh4
ODZfdGhyZWFkX3N0YXRlX3QpIC8gc2l6ZW9mIChpbnQpICkpCgoKdHlwZWRlZiBzdHJ1Y3QgeDg2
X2Zsb2F0X3N0YXRlIHg4Nl9mbG9hdF9zdGF0ZV90OwojZGVmaW5lIHg4Nl9GTE9BVF9TVEFURV9D
T1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpIChzaXplb2YoeDg2X2Zsb2F0X3N0YXRlX3Qp
L3NpemVvZih1bnNpZ25lZCBpbnQpKSkKCgp0eXBlZGVmIHN0cnVjdCB4ODZfZXhjZXB0aW9uX3N0
YXRlIHg4Nl9leGNlcHRpb25fc3RhdGVfdDsKI2RlZmluZSB4ODZfRVhDRVBUSU9OX1NUQVRFX0NP
VU5UICgobWFjaF9tc2dfdHlwZV9udW1iZXJfdCkgKHNpemVvZih4ODZfZXhjZXB0aW9uX3N0YXRl
X3QpL3NpemVvZih1bnNpZ25lZCBpbnQpKSkKCgp0eXBlZGVmIHN0cnVjdCB4ODZfZGVidWdfc3Rh
dGUgeDg2X2RlYnVnX3N0YXRlX3Q7CiNkZWZpbmUgeDg2X0RFQlVHX1NUQVRFX0NPVU5UICgobWFj
aF9tc2dfdHlwZV9udW1iZXJfdCkgKHNpemVvZih4ODZfZGVidWdfc3RhdGVfdCkvc2l6ZW9mKHVu
c2lnbmVkIGludCkpKQoKCgoKCgojZGVmaW5lIE1BQ0hJTkVfVEhSRUFEX1NUQVRFIHg4Nl9USFJF
QURfU1RBVEUKI2RlZmluZSBNQUNISU5FX1RIUkVBRF9TVEFURV9DT1VOVCB4ODZfVEhSRUFEX1NU
QVRFX0NPVU5UCiMgMjg4ICIvdXNyL2luY2x1ZGUvbWFjaC9pMzg2L3RocmVhZF9zdGF0dXMuaCIg
MyA0CnN0cnVjdCB4ODZfc2VnX2xvYWRfZmF1bHQzMiB7CiB1bnNpZ25lZCBpbnQgdHJhcG5vOwog
dW5zaWduZWQgaW50IGVycjsKIHVuc2lnbmVkIGludCBlaXA7CiB1bnNpZ25lZCBpbnQgY3M7CiB1
bnNpZ25lZCBpbnQgZWZsOwp9OwojIDM2ICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lL3RocmVh
ZF9zdGF0dXMuaCIgMiAzIDQKIyA3NyAiL3Vzci9pbmNsdWRlL21hY2gvdGhyZWFkX3N0YXR1cy5o
IiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hpbmUvdGhyZWFkX3N0YXRlLmgiIDEg
MyA0CiMgMzAgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hpbmUvdGhyZWFkX3N0YXRlLmgiIDMgNAoj
ZGVmaW5lIF9NQUNIX01BQ0hJTkVfVEhSRUFEX1NUQVRFX0hfIAojIDc4ICIvdXNyL2luY2x1ZGUv
bWFjaC90aHJlYWRfc3RhdHVzLmgiIDIgMyA0CgoKCgoKdHlwZWRlZiBuYXR1cmFsX3QgKnRocmVh
ZF9zdGF0ZV90OwoKCnR5cGVkZWYgbmF0dXJhbF90IHRocmVhZF9zdGF0ZV9kYXRhX3RbKDE0NCld
OwoKI2RlZmluZSBUSFJFQURfU1RBVEVfRkxBVk9SX0xJU1QgMAojZGVmaW5lIFRIUkVBRF9TVEFU
RV9GTEFWT1JfTElTVF9ORVcgMTI4Cgp0eXBlZGVmIGludCB0aHJlYWRfc3RhdGVfZmxhdm9yX3Q7
CnR5cGVkZWYgdGhyZWFkX3N0YXRlX2ZsYXZvcl90ICp0aHJlYWRfc3RhdGVfZmxhdm9yX2FycmF5
X3Q7CiMgMTYwICIvdXNyL2luY2x1ZGUvbWFjaC9leGNlcHRpb25fdHlwZXMuaCIgMiAzIDQKCgoK
Cgp0eXBlZGVmIGludCBleGNlcHRpb25fdHlwZV90Owp0eXBlZGVmIGludGVnZXJfdCBleGNlcHRp
b25fZGF0YV90eXBlX3Q7CnR5cGVkZWYgaW50NjRfdCBtYWNoX2V4Y2VwdGlvbl9kYXRhX3R5cGVf
dDsKdHlwZWRlZiBpbnQgZXhjZXB0aW9uX2JlaGF2aW9yX3Q7CnR5cGVkZWYgZXhjZXB0aW9uX2Rh
dGFfdHlwZV90ICpleGNlcHRpb25fZGF0YV90Owp0eXBlZGVmIG1hY2hfZXhjZXB0aW9uX2RhdGFf
dHlwZV90ICptYWNoX2V4Y2VwdGlvbl9kYXRhX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IGV4Y2Vw
dGlvbl9tYXNrX3Q7CnR5cGVkZWYgZXhjZXB0aW9uX21hc2tfdCAqZXhjZXB0aW9uX21hc2tfYXJy
YXlfdDsKdHlwZWRlZiBleGNlcHRpb25fYmVoYXZpb3JfdCAqZXhjZXB0aW9uX2JlaGF2aW9yX2Fy
cmF5X3Q7CnR5cGVkZWYgdGhyZWFkX3N0YXRlX2ZsYXZvcl90ICpleGNlcHRpb25fZmxhdm9yX2Fy
cmF5X3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3QgKmV4Y2VwdGlvbl9wb3J0X2FycmF5X3Q7CnR5cGVk
ZWYgbWFjaF9leGNlcHRpb25fZGF0YV90eXBlX3QgbWFjaF9leGNlcHRpb25fY29kZV90Owp0eXBl
ZGVmIG1hY2hfZXhjZXB0aW9uX2RhdGFfdHlwZV90IG1hY2hfZXhjZXB0aW9uX3N1YmNvZGVfdDsK
IyA4OCAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaF90eXBlcy5oIiAyIDMgNAoKIyAxICIvdXNyL2lu
Y2x1ZGUvbWFjaC9wcm9jZXNzb3JfaW5mby5oIiAxIDMgNAojIDY4ICIvdXNyL2luY2x1ZGUvbWFj
aC9wcm9jZXNzb3JfaW5mby5oIiAzIDQKI2RlZmluZSBfTUFDSF9QUk9DRVNTT1JfSU5GT19IXyAK
CgoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lL3Byb2Nlc3Nvcl9pbmZvLmgiIDEgMyA0
CiMgMzAgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hpbmUvcHJvY2Vzc29yX2luZm8uaCIgMyA0CiNk
ZWZpbmUgX01BQ0hfTUFDSElORV9QUk9DRVNTT1JfSU5GT19IXyAKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL21hY2gvaTM4Ni9wcm9jZXNzb3JfaW5mby5oIiAxIDMgNAojIDM1ICIvdXNyL2luY2x1ZGUv
bWFjaC9pMzg2L3Byb2Nlc3Nvcl9pbmZvLmgiIDMgNAojZGVmaW5lIF9NQUNIX0kzODZfUFJPQ0VT
U09SX0lORk9fSF8gCiMgMzYgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hpbmUvcHJvY2Vzc29yX2lu
Zm8uaCIgMiAzIDQKIyA3MyAiL3Vzci9pbmNsdWRlL21hY2gvcHJvY2Vzc29yX2luZm8uaCIgMiAz
IDQKCgoKCnR5cGVkZWYgaW50ZWdlcl90ICpwcm9jZXNzb3JfaW5mb190Owp0eXBlZGVmIGludGVn
ZXJfdCAqcHJvY2Vzc29yX2luZm9fYXJyYXlfdDsKCiNkZWZpbmUgUFJPQ0VTU09SX0lORk9fTUFY
ICgxMDI0KQp0eXBlZGVmIGludGVnZXJfdCBwcm9jZXNzb3JfaW5mb19kYXRhX3RbKDEwMjQpXTsK
Cgp0eXBlZGVmIGludGVnZXJfdCAqcHJvY2Vzc29yX3NldF9pbmZvX3Q7CgojZGVmaW5lIFBST0NF
U1NPUl9TRVRfSU5GT19NQVggKDEwMjQpCnR5cGVkZWYgaW50ZWdlcl90IHByb2Nlc3Nvcl9zZXRf
aW5mb19kYXRhX3RbKDEwMjQpXTsKCgoKCnR5cGVkZWYgaW50IHByb2Nlc3Nvcl9mbGF2b3JfdDsK
I2RlZmluZSBQUk9DRVNTT1JfQkFTSUNfSU5GTyAxCiNkZWZpbmUgUFJPQ0VTU09SX0NQVV9MT0FE
X0lORk8gMgojZGVmaW5lIFBST0NFU1NPUl9QTV9SRUdTX0lORk8gMHgxMDAwMDAwMQojZGVmaW5l
IFBST0NFU1NPUl9URU1QRVJBVFVSRSAweDEwMDAwMDAyCgpzdHJ1Y3QgcHJvY2Vzc29yX2Jhc2lj
X2luZm8gewogY3B1X3R5cGVfdCBjcHVfdHlwZTsKIGNwdV9zdWJ0eXBlX3QgY3B1X3N1YnR5cGU7
CiBib29sZWFuX3QgcnVubmluZzsKIGludCBzbG90X251bTsKIGJvb2xlYW5fdCBpc19tYXN0ZXI7
Cn07Cgp0eXBlZGVmIHN0cnVjdCBwcm9jZXNzb3JfYmFzaWNfaW5mbyBwcm9jZXNzb3JfYmFzaWNf
aW5mb19kYXRhX3Q7CnR5cGVkZWYgc3RydWN0IHByb2Nlc3Nvcl9iYXNpY19pbmZvICpwcm9jZXNz
b3JfYmFzaWNfaW5mb190OwojZGVmaW5lIFBST0NFU1NPUl9CQVNJQ19JTkZPX0NPVU5UICgobWFj
aF9tc2dfdHlwZV9udW1iZXJfdCkgKHNpemVvZihwcm9jZXNzb3JfYmFzaWNfaW5mb19kYXRhX3Qp
L3NpemVvZihuYXR1cmFsX3QpKSkKCgpzdHJ1Y3QgcHJvY2Vzc29yX2NwdV9sb2FkX2luZm8gewog
ICAgICAgIHVuc2lnbmVkIGludCBjcHVfdGlja3NbNF07Cn07Cgp0eXBlZGVmIHN0cnVjdCBwcm9j
ZXNzb3JfY3B1X2xvYWRfaW5mbyBwcm9jZXNzb3JfY3B1X2xvYWRfaW5mb19kYXRhX3Q7CnR5cGVk
ZWYgc3RydWN0IHByb2Nlc3Nvcl9jcHVfbG9hZF9pbmZvICpwcm9jZXNzb3JfY3B1X2xvYWRfaW5m
b190OwojZGVmaW5lIFBST0NFU1NPUl9DUFVfTE9BRF9JTkZPX0NPVU5UICgobWFjaF9tc2dfdHlw
ZV9udW1iZXJfdCkgKHNpemVvZihwcm9jZXNzb3JfY3B1X2xvYWRfaW5mb19kYXRhX3QpL3NpemVv
ZihuYXR1cmFsX3QpKSkKCgoKCgojZGVmaW5lIExPQURfU0NBTEUgMTAwMAoKdHlwZWRlZiBpbnQg
cHJvY2Vzc29yX3NldF9mbGF2b3JfdDsKI2RlZmluZSBQUk9DRVNTT1JfU0VUX0JBU0lDX0lORk8g
NQoKc3RydWN0IHByb2Nlc3Nvcl9zZXRfYmFzaWNfaW5mbyB7CiBpbnQgcHJvY2Vzc29yX2NvdW50
OwogaW50IGRlZmF1bHRfcG9saWN5Owp9OwoKdHlwZWRlZiBzdHJ1Y3QgcHJvY2Vzc29yX3NldF9i
YXNpY19pbmZvIHByb2Nlc3Nvcl9zZXRfYmFzaWNfaW5mb19kYXRhX3Q7CnR5cGVkZWYgc3RydWN0
IHByb2Nlc3Nvcl9zZXRfYmFzaWNfaW5mbyAqcHJvY2Vzc29yX3NldF9iYXNpY19pbmZvX3Q7CiNk
ZWZpbmUgUFJPQ0VTU09SX1NFVF9CQVNJQ19JTkZPX0NPVU5UICgobWFjaF9tc2dfdHlwZV9udW1i
ZXJfdCkgKHNpemVvZihwcm9jZXNzb3Jfc2V0X2Jhc2ljX2luZm9fZGF0YV90KS9zaXplb2YobmF0
dXJhbF90KSkpCgoKI2RlZmluZSBQUk9DRVNTT1JfU0VUX0xPQURfSU5GTyA0CgpzdHJ1Y3QgcHJv
Y2Vzc29yX3NldF9sb2FkX2luZm8gewogICAgICAgIGludCB0YXNrX2NvdW50OwogICAgICAgIGlu
dCB0aHJlYWRfY291bnQ7CiAgICAgICAgaW50ZWdlcl90IGxvYWRfYXZlcmFnZTsKICAgICAgICBp
bnRlZ2VyX3QgbWFjaF9mYWN0b3I7Cn07Cgp0eXBlZGVmIHN0cnVjdCBwcm9jZXNzb3Jfc2V0X2xv
YWRfaW5mbyBwcm9jZXNzb3Jfc2V0X2xvYWRfaW5mb19kYXRhX3Q7CnR5cGVkZWYgc3RydWN0IHBy
b2Nlc3Nvcl9zZXRfbG9hZF9pbmZvICpwcm9jZXNzb3Jfc2V0X2xvYWRfaW5mb190OwojZGVmaW5l
IFBST0NFU1NPUl9TRVRfTE9BRF9JTkZPX0NPVU5UICgobWFjaF9tc2dfdHlwZV9udW1iZXJfdCkg
KHNpemVvZihwcm9jZXNzb3Jfc2V0X2xvYWRfaW5mb19kYXRhX3QpL3NpemVvZihuYXR1cmFsX3Qp
KSkKIyA5MCAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaF90eXBlcy5oIiAyIDMgNAojIDEgIi91c3Iv
aW5jbHVkZS9tYWNoL3Rhc2tfaW5mby5oIiAxIDMgNAojIDY2ICIvdXNyL2luY2x1ZGUvbWFjaC90
YXNrX2luZm8uaCIgMyA0CiNkZWZpbmUgX01BQ0hfVEFTS19JTkZPX0hfIAoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvbWFjaC9wb2xpY3kuaCIgMSAzIDQKIyA2MCAiL3Vzci9pbmNsdWRlL21hY2gvcG9s
aWN5LmgiIDMgNAojZGVmaW5lIF9NQUNIX1BPTElDWV9IXyAKIyA3OSAiL3Vzci9pbmNsdWRlL21h
Y2gvcG9saWN5LmgiIDMgNAp0eXBlZGVmIGludCBwb2xpY3lfdDsKdHlwZWRlZiBpbnRlZ2VyX3Qg
KnBvbGljeV9pbmZvX3Q7CnR5cGVkZWYgaW50ZWdlcl90ICpwb2xpY3lfYmFzZV90Owp0eXBlZGVm
IGludGVnZXJfdCAqcG9saWN5X2xpbWl0X3Q7CgoKCgoKCiNkZWZpbmUgUE9MSUNZX05VTEwgMAoj
ZGVmaW5lIFBPTElDWV9USU1FU0hBUkUgMQojZGVmaW5lIFBPTElDWV9SUiAyCiNkZWZpbmUgUE9M
SUNZX0ZJRk8gNAoKI2RlZmluZSBfX05FV19TQ0hFRFVMSU5HX0ZSQU1FV09SS19fIAoKCgoKI2Rl
ZmluZSBQT0xJQ1lDTEFTU19GSVhFRFBSSSAoUE9MSUNZX1JSIHwgUE9MSUNZX0ZJRk8pCgoKCgoj
ZGVmaW5lIGludmFsaWRfcG9saWN5KHBvbGljeSkgKChwb2xpY3kpICE9IFBPTElDWV9USU1FU0hB
UkUgJiYgKHBvbGljeSkgIT0gUE9MSUNZX1JSICYmIChwb2xpY3kpICE9IFBPTElDWV9GSUZPKQoj
IDExMyAiL3Vzci9pbmNsdWRlL21hY2gvcG9saWN5LmgiIDMgNApzdHJ1Y3QgcG9saWN5X3RpbWVz
aGFyZV9iYXNlIHsKIGludGVnZXJfdCBiYXNlX3ByaW9yaXR5Owp9OwpzdHJ1Y3QgcG9saWN5X3Rp
bWVzaGFyZV9saW1pdCB7CiBpbnRlZ2VyX3QgbWF4X3ByaW9yaXR5Owp9OwpzdHJ1Y3QgcG9saWN5
X3RpbWVzaGFyZV9pbmZvIHsKIGludGVnZXJfdCBtYXhfcHJpb3JpdHk7CiBpbnRlZ2VyX3QgYmFz
ZV9wcmlvcml0eTsKIGludGVnZXJfdCBjdXJfcHJpb3JpdHk7CiBib29sZWFuX3QgZGVwcmVzc2Vk
OwogaW50ZWdlcl90IGRlcHJlc3NfcHJpb3JpdHk7Cn07Cgp0eXBlZGVmIHN0cnVjdCBwb2xpY3lf
dGltZXNoYXJlX2Jhc2UgKnBvbGljeV90aW1lc2hhcmVfYmFzZV90Owp0eXBlZGVmIHN0cnVjdCBw
b2xpY3lfdGltZXNoYXJlX2xpbWl0ICpwb2xpY3lfdGltZXNoYXJlX2xpbWl0X3Q7CnR5cGVkZWYg
c3RydWN0IHBvbGljeV90aW1lc2hhcmVfaW5mbyAqcG9saWN5X3RpbWVzaGFyZV9pbmZvX3Q7Cgp0
eXBlZGVmIHN0cnVjdCBwb2xpY3lfdGltZXNoYXJlX2Jhc2UgcG9saWN5X3RpbWVzaGFyZV9iYXNl
X2RhdGFfdDsKdHlwZWRlZiBzdHJ1Y3QgcG9saWN5X3RpbWVzaGFyZV9saW1pdCBwb2xpY3lfdGlt
ZXNoYXJlX2xpbWl0X2RhdGFfdDsKdHlwZWRlZiBzdHJ1Y3QgcG9saWN5X3RpbWVzaGFyZV9pbmZv
IHBvbGljeV90aW1lc2hhcmVfaW5mb19kYXRhX3Q7CgoKI2RlZmluZSBQT0xJQ1lfVElNRVNIQVJF
X0JBU0VfQ09VTlQgKChtYWNoX21zZ190eXBlX251bWJlcl90KSAoc2l6ZW9mKHN0cnVjdCBwb2xp
Y3lfdGltZXNoYXJlX2Jhc2UpL3NpemVvZihpbnRlZ2VyX3QpKSkKCiNkZWZpbmUgUE9MSUNZX1RJ
TUVTSEFSRV9MSU1JVF9DT1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpIChzaXplb2Yoc3Ry
dWN0IHBvbGljeV90aW1lc2hhcmVfbGltaXQpL3NpemVvZihpbnRlZ2VyX3QpKSkKCiNkZWZpbmUg
UE9MSUNZX1RJTUVTSEFSRV9JTkZPX0NPVU5UICgobWFjaF9tc2dfdHlwZV9udW1iZXJfdCkgKHNp
emVvZihzdHJ1Y3QgcG9saWN5X3RpbWVzaGFyZV9pbmZvKS9zaXplb2YoaW50ZWdlcl90KSkpCgoK
CgoKCnN0cnVjdCBwb2xpY3lfcnJfYmFzZSB7CiBpbnRlZ2VyX3QgYmFzZV9wcmlvcml0eTsKIGlu
dGVnZXJfdCBxdWFudHVtOwp9OwpzdHJ1Y3QgcG9saWN5X3JyX2xpbWl0IHsKIGludGVnZXJfdCBt
YXhfcHJpb3JpdHk7Cn07CnN0cnVjdCBwb2xpY3lfcnJfaW5mbyB7CiBpbnRlZ2VyX3QgbWF4X3By
aW9yaXR5OwogaW50ZWdlcl90IGJhc2VfcHJpb3JpdHk7CiBpbnRlZ2VyX3QgcXVhbnR1bTsKIGJv
b2xlYW5fdCBkZXByZXNzZWQ7CiBpbnRlZ2VyX3QgZGVwcmVzc19wcmlvcml0eTsKfTsKCnR5cGVk
ZWYgc3RydWN0IHBvbGljeV9ycl9iYXNlICpwb2xpY3lfcnJfYmFzZV90Owp0eXBlZGVmIHN0cnVj
dCBwb2xpY3lfcnJfbGltaXQgKnBvbGljeV9ycl9saW1pdF90Owp0eXBlZGVmIHN0cnVjdCBwb2xp
Y3lfcnJfaW5mbyAqcG9saWN5X3JyX2luZm9fdDsKCnR5cGVkZWYgc3RydWN0IHBvbGljeV9ycl9i
YXNlIHBvbGljeV9ycl9iYXNlX2RhdGFfdDsKdHlwZWRlZiBzdHJ1Y3QgcG9saWN5X3JyX2xpbWl0
IHBvbGljeV9ycl9saW1pdF9kYXRhX3Q7CnR5cGVkZWYgc3RydWN0IHBvbGljeV9ycl9pbmZvIHBv
bGljeV9ycl9pbmZvX2RhdGFfdDsKCiNkZWZpbmUgUE9MSUNZX1JSX0JBU0VfQ09VTlQgKChtYWNo
X21zZ190eXBlX251bWJlcl90KSAoc2l6ZW9mKHN0cnVjdCBwb2xpY3lfcnJfYmFzZSkvc2l6ZW9m
KGludGVnZXJfdCkpKQoKI2RlZmluZSBQT0xJQ1lfUlJfTElNSVRfQ09VTlQgKChtYWNoX21zZ190
eXBlX251bWJlcl90KSAoc2l6ZW9mKHN0cnVjdCBwb2xpY3lfcnJfbGltaXQpL3NpemVvZihpbnRl
Z2VyX3QpKSkKCiNkZWZpbmUgUE9MSUNZX1JSX0lORk9fQ09VTlQgKChtYWNoX21zZ190eXBlX251
bWJlcl90KSAoc2l6ZW9mKHN0cnVjdCBwb2xpY3lfcnJfaW5mbykvc2l6ZW9mKGludGVnZXJfdCkp
KQoKCgoKCgpzdHJ1Y3QgcG9saWN5X2ZpZm9fYmFzZSB7CiBpbnRlZ2VyX3QgYmFzZV9wcmlvcml0
eTsKfTsKc3RydWN0IHBvbGljeV9maWZvX2xpbWl0IHsKIGludGVnZXJfdCBtYXhfcHJpb3JpdHk7
Cn07CnN0cnVjdCBwb2xpY3lfZmlmb19pbmZvIHsKIGludGVnZXJfdCBtYXhfcHJpb3JpdHk7CiBp
bnRlZ2VyX3QgYmFzZV9wcmlvcml0eTsKIGJvb2xlYW5fdCBkZXByZXNzZWQ7CiBpbnRlZ2VyX3Qg
ZGVwcmVzc19wcmlvcml0eTsKfTsKCnR5cGVkZWYgc3RydWN0IHBvbGljeV9maWZvX2Jhc2UgKnBv
bGljeV9maWZvX2Jhc2VfdDsKdHlwZWRlZiBzdHJ1Y3QgcG9saWN5X2ZpZm9fbGltaXQgKnBvbGlj
eV9maWZvX2xpbWl0X3Q7CnR5cGVkZWYgc3RydWN0IHBvbGljeV9maWZvX2luZm8gKnBvbGljeV9m
aWZvX2luZm9fdDsKCnR5cGVkZWYgc3RydWN0IHBvbGljeV9maWZvX2Jhc2UgcG9saWN5X2ZpZm9f
YmFzZV9kYXRhX3Q7CnR5cGVkZWYgc3RydWN0IHBvbGljeV9maWZvX2xpbWl0IHBvbGljeV9maWZv
X2xpbWl0X2RhdGFfdDsKdHlwZWRlZiBzdHJ1Y3QgcG9saWN5X2ZpZm9faW5mbyBwb2xpY3lfZmlm
b19pbmZvX2RhdGFfdDsKCiNkZWZpbmUgUE9MSUNZX0ZJRk9fQkFTRV9DT1VOVCAoKG1hY2hfbXNn
X3R5cGVfbnVtYmVyX3QpIChzaXplb2Yoc3RydWN0IHBvbGljeV9maWZvX2Jhc2UpL3NpemVvZihp
bnRlZ2VyX3QpKSkKCiNkZWZpbmUgUE9MSUNZX0ZJRk9fTElNSVRfQ09VTlQgKChtYWNoX21zZ190
eXBlX251bWJlcl90KSAoc2l6ZW9mKHN0cnVjdCBwb2xpY3lfZmlmb19saW1pdCkvc2l6ZW9mKGlu
dGVnZXJfdCkpKQoKI2RlZmluZSBQT0xJQ1lfRklGT19JTkZPX0NPVU5UICgobWFjaF9tc2dfdHlw
ZV9udW1iZXJfdCkgKHNpemVvZihzdHJ1Y3QgcG9saWN5X2ZpZm9faW5mbykvc2l6ZW9mKGludGVn
ZXJfdCkpKQoKCgoKCgpzdHJ1Y3QgcG9saWN5X2Jhc2VzIHsKIHBvbGljeV90aW1lc2hhcmVfYmFz
ZV9kYXRhX3QgdHM7CiBwb2xpY3lfcnJfYmFzZV9kYXRhX3QgcnI7CiBwb2xpY3lfZmlmb19iYXNl
X2RhdGFfdCBmaWZvOwp9OwoKc3RydWN0IHBvbGljeV9saW1pdHMgewogcG9saWN5X3RpbWVzaGFy
ZV9saW1pdF9kYXRhX3QgdHM7CiBwb2xpY3lfcnJfbGltaXRfZGF0YV90IHJyOwogcG9saWN5X2Zp
Zm9fbGltaXRfZGF0YV90IGZpZm87Cn07CgpzdHJ1Y3QgcG9saWN5X2luZm9zIHsKIHBvbGljeV90
aW1lc2hhcmVfaW5mb19kYXRhX3QgdHM7CiBwb2xpY3lfcnJfaW5mb19kYXRhX3QgcnI7CiBwb2xp
Y3lfZmlmb19pbmZvX2RhdGFfdCBmaWZvOwp9OwoKdHlwZWRlZiBzdHJ1Y3QgcG9saWN5X2Jhc2Vz
IHBvbGljeV9iYXNlX2RhdGFfdDsKdHlwZWRlZiBzdHJ1Y3QgcG9saWN5X2xpbWl0cyBwb2xpY3lf
bGltaXRfZGF0YV90Owp0eXBlZGVmIHN0cnVjdCBwb2xpY3lfaW5mb3MgcG9saWN5X2luZm9fZGF0
YV90OwojIDcyICIvdXNyL2luY2x1ZGUvbWFjaC90YXNrX2luZm8uaCIgMiAzIDQKCgoKCgoKdHlw
ZWRlZiBuYXR1cmFsX3QgdGFza19mbGF2b3JfdDsKdHlwZWRlZiBpbnRlZ2VyX3QgKnRhc2tfaW5m
b190OwoKI2RlZmluZSBUQVNLX0lORk9fTUFYICgxMDI0KQp0eXBlZGVmIGludGVnZXJfdCB0YXNr
X2luZm9fZGF0YV90WygxMDI0KV07CgoKCgoKI3ByYWdtYSBwYWNrKDQpCgojZGVmaW5lIFRBU0tf
QkFTSUNfSU5GT18zMiA0CiNkZWZpbmUgVEFTS19CQVNJQzJfSU5GT18zMiA2CgpzdHJ1Y3QgdGFz
a19iYXNpY19pbmZvXzMyIHsKICAgICAgICBpbnRlZ2VyX3Qgc3VzcGVuZF9jb3VudDsKICAgICAg
ICBuYXR1cmFsX3QgdmlydHVhbF9zaXplOwogICAgICAgIG5hdHVyYWxfdCByZXNpZGVudF9zaXpl
OwogICAgICAgIHRpbWVfdmFsdWVfdCB1c2VyX3RpbWU7CgogICAgICAgIHRpbWVfdmFsdWVfdCBz
eXN0ZW1fdGltZTsKCiBwb2xpY3lfdCBwb2xpY3k7Cn07CnR5cGVkZWYgc3RydWN0IHRhc2tfYmFz
aWNfaW5mb18zMiB0YXNrX2Jhc2ljX2luZm9fMzJfZGF0YV90Owp0eXBlZGVmIHN0cnVjdCB0YXNr
X2Jhc2ljX2luZm9fMzIgKnRhc2tfYmFzaWNfaW5mb18zMl90OwojZGVmaW5lIFRBU0tfQkFTSUNf
SU5GT18zMl9DT1VOVCAoc2l6ZW9mKHRhc2tfYmFzaWNfaW5mb18zMl9kYXRhX3QpIC8gc2l6ZW9m
KG5hdHVyYWxfdCkpCgoKCiNkZWZpbmUgVEFTS19CQVNJQ19JTkZPXzY0IDUKCnN0cnVjdCB0YXNr
X2Jhc2ljX2luZm9fNjQgewogICAgICAgIGludGVnZXJfdCBzdXNwZW5kX2NvdW50OwogICAgICAg
IG1hY2hfdm1fc2l6ZV90IHZpcnR1YWxfc2l6ZTsKICAgICAgICBtYWNoX3ZtX3NpemVfdCByZXNp
ZGVudF9zaXplOwogICAgICAgIHRpbWVfdmFsdWVfdCB1c2VyX3RpbWU7CgogICAgICAgIHRpbWVf
dmFsdWVfdCBzeXN0ZW1fdGltZTsKCiBwb2xpY3lfdCBwb2xpY3k7Cn07CnR5cGVkZWYgc3RydWN0
IHRhc2tfYmFzaWNfaW5mb182NCB0YXNrX2Jhc2ljX2luZm9fNjRfZGF0YV90Owp0eXBlZGVmIHN0
cnVjdCB0YXNrX2Jhc2ljX2luZm9fNjQgKnRhc2tfYmFzaWNfaW5mb182NF90OwojZGVmaW5lIFRB
U0tfQkFTSUNfSU5GT182NF9DT1VOVCAoc2l6ZW9mKHRhc2tfYmFzaWNfaW5mb182NF9kYXRhX3Qp
IC8gc2l6ZW9mKG5hdHVyYWxfdCkpCgoKCgoKc3RydWN0IHRhc2tfYmFzaWNfaW5mbyB7CiAgICAg
ICAgaW50ZWdlcl90IHN1c3BlbmRfY291bnQ7CiAgICAgICAgdm1fc2l6ZV90IHZpcnR1YWxfc2l6
ZTsKICAgICAgICB2bV9zaXplX3QgcmVzaWRlbnRfc2l6ZTsKICAgICAgICB0aW1lX3ZhbHVlX3Qg
dXNlcl90aW1lOwoKICAgICAgICB0aW1lX3ZhbHVlX3Qgc3lzdGVtX3RpbWU7CgogcG9saWN5X3Qg
cG9saWN5Owp9OwoKdHlwZWRlZiBzdHJ1Y3QgdGFza19iYXNpY19pbmZvIHRhc2tfYmFzaWNfaW5m
b19kYXRhX3Q7CnR5cGVkZWYgc3RydWN0IHRhc2tfYmFzaWNfaW5mbyAqdGFza19iYXNpY19pbmZv
X3Q7CiNkZWZpbmUgVEFTS19CQVNJQ19JTkZPX0NPVU5UIChzaXplb2YodGFza19iYXNpY19pbmZv
X2RhdGFfdCkgLyBzaXplb2YobmF0dXJhbF90KSkKCgoKCiNkZWZpbmUgVEFTS19CQVNJQ19JTkZP
IFRBU0tfQkFTSUNfSU5GT182NAoKCgoKI2RlZmluZSBUQVNLX0VWRU5UU19JTkZPIDIKCnN0cnVj
dCB0YXNrX2V2ZW50c19pbmZvIHsKIGludGVnZXJfdCBmYXVsdHM7CiBpbnRlZ2VyX3QgcGFnZWlu
czsKIGludGVnZXJfdCBjb3dfZmF1bHRzOwogaW50ZWdlcl90IG1lc3NhZ2VzX3NlbnQ7CiBpbnRl
Z2VyX3QgbWVzc2FnZXNfcmVjZWl2ZWQ7CiAgICAgICAgaW50ZWdlcl90IHN5c2NhbGxzX21hY2g7
CiBpbnRlZ2VyX3Qgc3lzY2FsbHNfdW5peDsKIGludGVnZXJfdCBjc3c7Cn07CnR5cGVkZWYgc3Ry
dWN0IHRhc2tfZXZlbnRzX2luZm8gdGFza19ldmVudHNfaW5mb19kYXRhX3Q7CnR5cGVkZWYgc3Ry
dWN0IHRhc2tfZXZlbnRzX2luZm8gKnRhc2tfZXZlbnRzX2luZm9fdDsKI2RlZmluZSBUQVNLX0VW
RU5UU19JTkZPX0NPVU5UICgobWFjaF9tc2dfdHlwZV9udW1iZXJfdCkgKHNpemVvZih0YXNrX2V2
ZW50c19pbmZvX2RhdGFfdCkgLyBzaXplb2YobmF0dXJhbF90KSkpCgoKI2RlZmluZSBUQVNLX1RI
UkVBRF9USU1FU19JTkZPIDMKCgpzdHJ1Y3QgdGFza190aHJlYWRfdGltZXNfaW5mbyB7CiB0aW1l
X3ZhbHVlX3QgdXNlcl90aW1lOwoKIHRpbWVfdmFsdWVfdCBzeXN0ZW1fdGltZTsKCn07Cgp0eXBl
ZGVmIHN0cnVjdCB0YXNrX3RocmVhZF90aW1lc19pbmZvIHRhc2tfdGhyZWFkX3RpbWVzX2luZm9f
ZGF0YV90Owp0eXBlZGVmIHN0cnVjdCB0YXNrX3RocmVhZF90aW1lc19pbmZvICp0YXNrX3RocmVh
ZF90aW1lc19pbmZvX3Q7CiNkZWZpbmUgVEFTS19USFJFQURfVElNRVNfSU5GT19DT1VOVCAoKG1h
Y2hfbXNnX3R5cGVfbnVtYmVyX3QpIChzaXplb2YodGFza190aHJlYWRfdGltZXNfaW5mb19kYXRh
X3QpIC8gc2l6ZW9mKG5hdHVyYWxfdCkpKQoKCiNkZWZpbmUgVEFTS19BQlNPTFVURVRJTUVfSU5G
TyAxCgpzdHJ1Y3QgdGFza19hYnNvbHV0ZXRpbWVfaW5mbyB7CiB1aW50NjRfdCB0b3RhbF91c2Vy
OwogdWludDY0X3QgdG90YWxfc3lzdGVtOwogdWludDY0X3QgdGhyZWFkc191c2VyOwogdWludDY0
X3QgdGhyZWFkc19zeXN0ZW07Cn07Cgp0eXBlZGVmIHN0cnVjdCB0YXNrX2Fic29sdXRldGltZV9p
bmZvIHRhc2tfYWJzb2x1dGV0aW1lX2luZm9fZGF0YV90Owp0eXBlZGVmIHN0cnVjdCB0YXNrX2Fi
c29sdXRldGltZV9pbmZvICp0YXNrX2Fic29sdXRldGltZV9pbmZvX3Q7CiNkZWZpbmUgVEFTS19B
QlNPTFVURVRJTUVfSU5GT19DT1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpIChzaXplb2Yg
KHRhc2tfYWJzb2x1dGV0aW1lX2luZm9fZGF0YV90KSAvIHNpemVvZiAobmF0dXJhbF90KSkpCgoK
I2RlZmluZSBUQVNLX1NFQ1VSSVRZX1RPS0VOIDEzCiNkZWZpbmUgVEFTS19TRUNVUklUWV9UT0tF
Tl9DT1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpIChzaXplb2Yoc2VjdXJpdHlfdG9rZW5f
dCkgLyBzaXplb2YobmF0dXJhbF90KSkpCgoKI2RlZmluZSBUQVNLX0FVRElUX1RPS0VOIDE1CiNk
ZWZpbmUgVEFTS19BVURJVF9UT0tFTl9DT1VOVCAoc2l6ZW9mKGF1ZGl0X3Rva2VuX3QpIC8gc2l6
ZW9mKG5hdHVyYWxfdCkpCgoKCiNkZWZpbmUgVEFTS19BRkZJTklUWV9UQUdfSU5GTyAxNgoKc3Ry
dWN0IHRhc2tfYWZmaW5pdHlfdGFnX2luZm8gewogaW50ZWdlcl90IHNldF9jb3VudDsKIGludGVn
ZXJfdCBtaW47CiBpbnRlZ2VyX3QgbWF4OwogaW50ZWdlcl90IHRhc2tfY291bnQ7Cn07CnR5cGVk
ZWYgc3RydWN0IHRhc2tfYWZmaW5pdHlfdGFnX2luZm8gdGFza19hZmZpbml0eV90YWdfaW5mb19k
YXRhX3Q7CnR5cGVkZWYgc3RydWN0IHRhc2tfYWZmaW5pdHlfdGFnX2luZm8gKnRhc2tfYWZmaW5p
dHlfdGFnX2luZm9fdDsKI2RlZmluZSBUQVNLX0FGRklOSVRZX1RBR19JTkZPX0NPVU5UIChzaXpl
b2YodGFza19hZmZpbml0eV90YWdfaW5mb19kYXRhX3QpIC8gc2l6ZW9mKG5hdHVyYWxfdCkpCgoK
I2RlZmluZSBUQVNLX0RZTERfSU5GTyAxNwoKc3RydWN0IHRhc2tfZHlsZF9pbmZvIHsKIG1hY2hf
dm1fYWRkcmVzc190IGFsbF9pbWFnZV9pbmZvX2FkZHI7CiBtYWNoX3ZtX3NpemVfdCBhbGxfaW1h
Z2VfaW5mb19zaXplOwp9Owp0eXBlZGVmIHN0cnVjdCB0YXNrX2R5bGRfaW5mbyB0YXNrX2R5bGRf
aW5mb19kYXRhX3Q7CnR5cGVkZWYgc3RydWN0IHRhc2tfZHlsZF9pbmZvICp0YXNrX2R5bGRfaW5m
b190OwojZGVmaW5lIFRBU0tfRFlMRF9JTkZPX0NPVU5UIChzaXplb2YodGFza19keWxkX2luZm9f
ZGF0YV90KSAvIHNpemVvZihuYXR1cmFsX3QpKQoKCiNwcmFnbWEgcGFjaygpCgoKCgoKCiNkZWZp
bmUgVEFTS19TQ0hFRF9USU1FU0hBUkVfSU5GTyAxMAojZGVmaW5lIFRBU0tfU0NIRURfUlJfSU5G
TyAxMQojZGVmaW5lIFRBU0tfU0NIRURfRklGT19JTkZPIDEyCgojZGVmaW5lIFRBU0tfU0NIRURf
SU5GTyAxNAojIDkxICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoX3R5cGVzLmgiIDIgMyA0CiMgMSAi
L3Vzci9pbmNsdWRlL21hY2gvdGFza19wb2xpY3kuaCIgMSAzIDQKIyAzMCAiL3Vzci9pbmNsdWRl
L21hY2gvdGFza19wb2xpY3kuaCIgMyA0CiNkZWZpbmUgX01BQ0hfVEFTS19QT0xJQ1lfSF8gCgoj
IDEgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hfdHlwZXMuaCIgMSAzIDQKIyAzMyAiL3Vzci9pbmNs
dWRlL21hY2gvdGFza19wb2xpY3kuaCIgMiAzIDQKIyA1MSAiL3Vzci9pbmNsdWRlL21hY2gvdGFz
a19wb2xpY3kuaCIgMyA0CnR5cGVkZWYgbmF0dXJhbF90IHRhc2tfcG9saWN5X2ZsYXZvcl90Owp0
eXBlZGVmIGludGVnZXJfdCAqdGFza19wb2xpY3lfdDsKIyAxMDQgIi91c3IvaW5jbHVkZS9tYWNo
L3Rhc2tfcG9saWN5LmgiIDMgNAojZGVmaW5lIFRBU0tfQ0FURUdPUllfUE9MSUNZIDEKCmVudW0g
dGFza19yb2xlIHsKIFRBU0tfUkVOSUNFRCA9IC0xLAogVEFTS19VTlNQRUNJRklFRCA9IDAsCiBU
QVNLX0ZPUkVHUk9VTkRfQVBQTElDQVRJT04sCiBUQVNLX0JBQ0tHUk9VTkRfQVBQTElDQVRJT04s
CiBUQVNLX0NPTlRST0xfQVBQTElDQVRJT04sCiBUQVNLX0dSQVBISUNTX1NFUlZFUiwKIFRBU0tf
VEhST1RUTEVfQVBQTElDQVRJT04sCiBUQVNLX0RFRkFVTFRfQVBQTElDQVRJT04KfTsKCnR5cGVk
ZWYgZW51bSB0YXNrX3JvbGUgdGFza19yb2xlX3Q7CgpzdHJ1Y3QgdGFza19jYXRlZ29yeV9wb2xp
Y3kgewogdGFza19yb2xlX3Qgcm9sZTsKfTsKCnR5cGVkZWYgc3RydWN0IHRhc2tfY2F0ZWdvcnlf
cG9saWN5IHRhc2tfY2F0ZWdvcnlfcG9saWN5X2RhdGFfdDsKdHlwZWRlZiBzdHJ1Y3QgdGFza19j
YXRlZ29yeV9wb2xpY3kgKnRhc2tfY2F0ZWdvcnlfcG9saWN5X3Q7CgojZGVmaW5lIFRBU0tfQ0FU
RUdPUllfUE9MSUNZX0NPVU5UICgobWFjaF9tc2dfdHlwZV9udW1iZXJfdCkgKHNpemVvZiAodGFz
a19jYXRlZ29yeV9wb2xpY3lfZGF0YV90KSAvIHNpemVvZiAoaW50ZWdlcl90KSkpCiMgOTIgIi91
c3IvaW5jbHVkZS9tYWNoL21hY2hfdHlwZXMuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbWFj
aC90YXNrX3NwZWNpYWxfcG9ydHMuaCIgMSAzIDQKIyA2OCAiL3Vzci9pbmNsdWRlL21hY2gvdGFz
a19zcGVjaWFsX3BvcnRzLmgiIDMgNAojZGVmaW5lIF9NQUNIX1RBU0tfU1BFQ0lBTF9QT1JUU19I
XyAKCnR5cGVkZWYgaW50IHRhc2tfc3BlY2lhbF9wb3J0X3Q7CgojZGVmaW5lIFRBU0tfS0VSTkVM
X1BPUlQgMQoKCiNkZWZpbmUgVEFTS19IT1NUX1BPUlQgMgoKI2RlZmluZSBUQVNLX05BTUVfUE9S
VCAzCgojZGVmaW5lIFRBU0tfQk9PVFNUUkFQX1BPUlQgNAoKCgoKCiNkZWZpbmUgVEFTS19XSVJF
RF9MRURHRVJfUE9SVCA1CgojZGVmaW5lIFRBU0tfUEFHRURfTEVER0VSX1BPUlQgNgoKI2RlZmlu
ZSBUQVNLX1NFQVRCRUxUX1BPUlQgNwoKI2RlZmluZSBUQVNLX0dTU0RfUE9SVCA4CgojZGVmaW5l
IFRBU0tfQUNDRVNTX1BPUlQgOQoKI2RlZmluZSB0YXNrX2dldF93aXJlZF9sZWRnZXJfcG9ydCh0
YXNrLHBvcnQpICh0YXNrX2dldF9zcGVjaWFsX3BvcnQoKHRhc2spLCBUQVNLX1dJUkVEX0xFREdF
Ul9QT1JULCAocG9ydCkpKQoKCiNkZWZpbmUgdGFza19zZXRfd2lyZWRfbGVkZ2VyX3BvcnQodGFz
ayxwb3J0KSAodGFza19zZXRfc3BlY2lhbF9wb3J0KCh0YXNrKSwgVEFTS19XSVJFRF9MRURHRVJf
UE9SVCwgKHBvcnQpKSkKCgojZGVmaW5lIHRhc2tfZ2V0X3BhZ2VkX2xlZGdlcl9wb3J0KHRhc2ss
cG9ydCkgKHRhc2tfZ2V0X3NwZWNpYWxfcG9ydCgodGFzayksIFRBU0tfUEFHRURfTEVER0VSX1BP
UlQsIChwb3J0KSkpCgoKI2RlZmluZSB0YXNrX3NldF9wYWdlZF9sZWRnZXJfcG9ydCh0YXNrLHBv
cnQpICh0YXNrX3NldF9zcGVjaWFsX3BvcnQoKHRhc2spLCBUQVNLX1BBR0VEX0xFREdFUl9QT1JU
LCAocG9ydCkpKQoKCgoKCgojZGVmaW5lIHRhc2tfZ2V0X2tlcm5lbF9wb3J0KHRhc2sscG9ydCkg
KHRhc2tfZ2V0X3NwZWNpYWxfcG9ydCgodGFzayksIFRBU0tfS0VSTkVMX1BPUlQsIChwb3J0KSkp
CgoKI2RlZmluZSB0YXNrX3NldF9rZXJuZWxfcG9ydCh0YXNrLHBvcnQpICh0YXNrX3NldF9zcGVj
aWFsX3BvcnQoKHRhc2spLCBUQVNLX0tFUk5FTF9QT1JULCAocG9ydCkpKQoKCiNkZWZpbmUgdGFz
a19nZXRfaG9zdF9wb3J0KHRhc2sscG9ydCkgKHRhc2tfZ2V0X3NwZWNpYWxfcG9ydCgodGFzayks
IFRBU0tfSE9TVF9QT1JULCAocG9ydCkpKQoKCiNkZWZpbmUgdGFza19zZXRfaG9zdF9wb3J0KHRh
c2sscG9ydCkgKHRhc2tfc2V0X3NwZWNpYWxfcG9ydCgodGFzayksIFRBU0tfSE9TVF9QT1JULCAo
cG9ydCkpKQoKCiNkZWZpbmUgdGFza19nZXRfYm9vdHN0cmFwX3BvcnQodGFzayxwb3J0KSAodGFz
a19nZXRfc3BlY2lhbF9wb3J0KCh0YXNrKSwgVEFTS19CT09UU1RSQVBfUE9SVCwgKHBvcnQpKSkK
CgojZGVmaW5lIHRhc2tfc2V0X2Jvb3RzdHJhcF9wb3J0KHRhc2sscG9ydCkgKHRhc2tfc2V0X3Nw
ZWNpYWxfcG9ydCgodGFzayksIFRBU0tfQk9PVFNUUkFQX1BPUlQsIChwb3J0KSkpCgoKI2RlZmlu
ZSB0YXNrX2dldF9nc3NkX3BvcnQodGFzayxwb3J0KSAodGFza19nZXRfc3BlY2lhbF9wb3J0KCh0
YXNrKSwgVEFTS19HU1NEX1BPUlQsIChwb3J0KSkpCgoKI2RlZmluZSB0YXNrX3NldF9nc3NkX3Bv
cnQodGFzayxwb3J0KSAodGFza19zZXRfc3BlY2lhbF9wb3J0KCh0YXNrKSwgVEFTS19HU1NEX1BP
UlQsIChwb3J0KSkpCgoKI2RlZmluZSB0YXNrX2dldF90YXNrX2FjY2Vzc19wb3J0KHRhc2sscG9y
dCkgKHRhc2tfZ2V0X3NwZWNpYWxfcG9ydCgodGFzayksIFRBU0tfQUNDRVNTX1BPUlQsIChwb3J0
KSkpCgoKI2RlZmluZSB0YXNrX3NldF90YXNrX2FjY2Vzc19wb3J0KHRhc2sscG9ydCkgKHRhc2tf
c2V0X3NwZWNpYWxfcG9ydCgodGFzayksIFRBU0tfQUNDRVNTX1BPUlQsIChwb3J0KSkpCiMgOTMg
Ii91c3IvaW5jbHVkZS9tYWNoL21hY2hfdHlwZXMuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUv
bWFjaC90aHJlYWRfaW5mby5oIiAxIDMgNAojIDcwICIvdXNyL2luY2x1ZGUvbWFjaC90aHJlYWRf
aW5mby5oIiAzIDQKI2RlZmluZSBfTUFDSF9USFJFQURfSU5GT19IXyAKIyA4MSAiL3Vzci9pbmNs
dWRlL21hY2gvdGhyZWFkX2luZm8uaCIgMyA0CnR5cGVkZWYgbmF0dXJhbF90IHRocmVhZF9mbGF2
b3JfdDsKdHlwZWRlZiBpbnRlZ2VyX3QgKnRocmVhZF9pbmZvX3Q7CgojZGVmaW5lIFRIUkVBRF9J
TkZPX01BWCAoMTAyNCkKdHlwZWRlZiBpbnRlZ2VyX3QgdGhyZWFkX2luZm9fZGF0YV90WygxMDI0
KV07CgoKCgojZGVmaW5lIFRIUkVBRF9CQVNJQ19JTkZPIDMKCnN0cnVjdCB0aHJlYWRfYmFzaWNf
aW5mbyB7CiAgICAgICAgdGltZV92YWx1ZV90IHVzZXJfdGltZTsKICAgICAgICB0aW1lX3ZhbHVl
X3Qgc3lzdGVtX3RpbWU7CiAgICAgICAgaW50ZWdlcl90IGNwdV91c2FnZTsKIHBvbGljeV90IHBv
bGljeTsKICAgICAgICBpbnRlZ2VyX3QgcnVuX3N0YXRlOwogICAgICAgIGludGVnZXJfdCBmbGFn
czsKICAgICAgICBpbnRlZ2VyX3Qgc3VzcGVuZF9jb3VudDsKICAgICAgICBpbnRlZ2VyX3Qgc2xl
ZXBfdGltZTsKCn07Cgp0eXBlZGVmIHN0cnVjdCB0aHJlYWRfYmFzaWNfaW5mbyB0aHJlYWRfYmFz
aWNfaW5mb19kYXRhX3Q7CnR5cGVkZWYgc3RydWN0IHRocmVhZF9iYXNpY19pbmZvICp0aHJlYWRf
YmFzaWNfaW5mb190OwojZGVmaW5lIFRIUkVBRF9CQVNJQ19JTkZPX0NPVU5UICgobWFjaF9tc2df
dHlwZV9udW1iZXJfdCkgKHNpemVvZih0aHJlYWRfYmFzaWNfaW5mb19kYXRhX3QpIC8gc2l6ZW9m
KG5hdHVyYWxfdCkpKQoKCiNkZWZpbmUgVEhSRUFEX0lERU5USUZJRVJfSU5GTyA0CgpzdHJ1Y3Qg
dGhyZWFkX2lkZW50aWZpZXJfaW5mbyB7CiB1aW50NjRfdCB0aHJlYWRfaWQ7CiB1aW50NjRfdCB0
aHJlYWRfaGFuZGxlOwogdWludDY0X3QgZGlzcGF0Y2hfcWFkZHI7Cn07Cgp0eXBlZGVmIHN0cnVj
dCB0aHJlYWRfaWRlbnRpZmllcl9pbmZvIHRocmVhZF9pZGVudGlmaWVyX2luZm9fZGF0YV90Owp0
eXBlZGVmIHN0cnVjdCB0aHJlYWRfaWRlbnRpZmllcl9pbmZvICp0aHJlYWRfaWRlbnRpZmllcl9p
bmZvX3Q7CiNkZWZpbmUgVEhSRUFEX0lERU5USUZJRVJfSU5GT19DT1VOVCAoKG1hY2hfbXNnX3R5
cGVfbnVtYmVyX3QpIChzaXplb2YodGhyZWFkX2lkZW50aWZpZXJfaW5mb19kYXRhX3QpIC8gc2l6
ZW9mKG5hdHVyYWxfdCkpKQoKCgoKCgojZGVmaW5lIFRIX1VTQUdFX1NDQUxFIDEwMDAKCgoKCgoj
ZGVmaW5lIFRIX1NUQVRFX1JVTk5JTkcgMQojZGVmaW5lIFRIX1NUQVRFX1NUT1BQRUQgMgojZGVm
aW5lIFRIX1NUQVRFX1dBSVRJTkcgMwojZGVmaW5lIFRIX1NUQVRFX1VOSU5URVJSVVBUSUJMRSA0
CgojZGVmaW5lIFRIX1NUQVRFX0hBTFRFRCA1CgoKCgoKI2RlZmluZSBUSF9GTEFHU19TV0FQUEVE
IDB4MQojZGVmaW5lIFRIX0ZMQUdTX0lETEUgMHgyCgoKCgoKI2RlZmluZSBUSFJFQURfU0NIRURf
VElNRVNIQVJFX0lORk8gMTAKI2RlZmluZSBUSFJFQURfU0NIRURfUlJfSU5GTyAxMQojZGVmaW5l
IFRIUkVBRF9TQ0hFRF9GSUZPX0lORk8gMTIKIyA5NCAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaF90
eXBlcy5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9tYWNoL3RocmVhZF9wb2xpY3kuaCIgMSAz
IDQKIyAzMCAiL3Vzci9pbmNsdWRlL21hY2gvdGhyZWFkX3BvbGljeS5oIiAzIDQKI2RlZmluZSBf
TUFDSF9USFJFQURfUE9MSUNZX0hfIAojIDUxICIvdXNyL2luY2x1ZGUvbWFjaC90aHJlYWRfcG9s
aWN5LmgiIDMgNAp0eXBlZGVmIG5hdHVyYWxfdCB0aHJlYWRfcG9saWN5X2ZsYXZvcl90Owp0eXBl
ZGVmIGludGVnZXJfdCAqdGhyZWFkX3BvbGljeV90OwojIDg0ICIvdXNyL2luY2x1ZGUvbWFjaC90
aHJlYWRfcG9saWN5LmgiIDMgNAojZGVmaW5lIFRIUkVBRF9TVEFOREFSRF9QT0xJQ1kgMQoKc3Ry
dWN0IHRocmVhZF9zdGFuZGFyZF9wb2xpY3kgewogbmF0dXJhbF90IG5vX2RhdGE7Cn07Cgp0eXBl
ZGVmIHN0cnVjdCB0aHJlYWRfc3RhbmRhcmRfcG9saWN5IHRocmVhZF9zdGFuZGFyZF9wb2xpY3lf
ZGF0YV90Owp0eXBlZGVmIHN0cnVjdCB0aHJlYWRfc3RhbmRhcmRfcG9saWN5ICp0aHJlYWRfc3Rh
bmRhcmRfcG9saWN5X3Q7CgojZGVmaW5lIFRIUkVBRF9TVEFOREFSRF9QT0xJQ1lfQ09VTlQgMAoj
IDEwNyAiL3Vzci9pbmNsdWRlL21hY2gvdGhyZWFkX3BvbGljeS5oIiAzIDQKI2RlZmluZSBUSFJF
QURfRVhURU5ERURfUE9MSUNZIDEKCnN0cnVjdCB0aHJlYWRfZXh0ZW5kZWRfcG9saWN5IHsKIGJv
b2xlYW5fdCB0aW1lc2hhcmU7Cn07Cgp0eXBlZGVmIHN0cnVjdCB0aHJlYWRfZXh0ZW5kZWRfcG9s
aWN5IHRocmVhZF9leHRlbmRlZF9wb2xpY3lfZGF0YV90Owp0eXBlZGVmIHN0cnVjdCB0aHJlYWRf
ZXh0ZW5kZWRfcG9saWN5ICp0aHJlYWRfZXh0ZW5kZWRfcG9saWN5X3Q7CgojZGVmaW5lIFRIUkVB
RF9FWFRFTkRFRF9QT0xJQ1lfQ09VTlQgKChtYWNoX21zZ190eXBlX251bWJlcl90KSAoc2l6ZW9m
ICh0aHJlYWRfZXh0ZW5kZWRfcG9saWN5X2RhdGFfdCkgLyBzaXplb2YgKGludGVnZXJfdCkpKQoj
IDE0NiAiL3Vzci9pbmNsdWRlL21hY2gvdGhyZWFkX3BvbGljeS5oIiAzIDQKI2RlZmluZSBUSFJF
QURfVElNRV9DT05TVFJBSU5UX1BPTElDWSAyCgpzdHJ1Y3QgdGhyZWFkX3RpbWVfY29uc3RyYWlu
dF9wb2xpY3kgewogdWludDMyX3QgcGVyaW9kOwogdWludDMyX3QgY29tcHV0YXRpb247CiB1aW50
MzJfdCBjb25zdHJhaW50OwogYm9vbGVhbl90IHByZWVtcHRpYmxlOwp9OwoKdHlwZWRlZiBzdHJ1
Y3QgdGhyZWFkX3RpbWVfY29uc3RyYWludF9wb2xpY3kgdGhyZWFkX3RpbWVfY29uc3RyYWludF9w
b2xpY3lfZGF0YV90OwoKdHlwZWRlZiBzdHJ1Y3QgdGhyZWFkX3RpbWVfY29uc3RyYWludF9wb2xp
Y3kgKnRocmVhZF90aW1lX2NvbnN0cmFpbnRfcG9saWN5X3Q7CgoKI2RlZmluZSBUSFJFQURfVElN
RV9DT05TVFJBSU5UX1BPTElDWV9DT1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpIChzaXpl
b2YgKHRocmVhZF90aW1lX2NvbnN0cmFpbnRfcG9saWN5X2RhdGFfdCkgLyBzaXplb2YgKGludGVn
ZXJfdCkpKQojIDE3NCAiL3Vzci9pbmNsdWRlL21hY2gvdGhyZWFkX3BvbGljeS5oIiAzIDQKI2Rl
ZmluZSBUSFJFQURfUFJFQ0VERU5DRV9QT0xJQ1kgMwoKc3RydWN0IHRocmVhZF9wcmVjZWRlbmNl
X3BvbGljeSB7CiBpbnRlZ2VyX3QgaW1wb3J0YW5jZTsKfTsKCnR5cGVkZWYgc3RydWN0IHRocmVh
ZF9wcmVjZWRlbmNlX3BvbGljeSB0aHJlYWRfcHJlY2VkZW5jZV9wb2xpY3lfZGF0YV90Owp0eXBl
ZGVmIHN0cnVjdCB0aHJlYWRfcHJlY2VkZW5jZV9wb2xpY3kgKnRocmVhZF9wcmVjZWRlbmNlX3Bv
bGljeV90OwoKI2RlZmluZSBUSFJFQURfUFJFQ0VERU5DRV9QT0xJQ1lfQ09VTlQgKChtYWNoX21z
Z190eXBlX251bWJlcl90KSAoc2l6ZW9mICh0aHJlYWRfcHJlY2VkZW5jZV9wb2xpY3lfZGF0YV90
KSAvIHNpemVvZiAoaW50ZWdlcl90KSkpCiMgMjA0ICIvdXNyL2luY2x1ZGUvbWFjaC90aHJlYWRf
cG9saWN5LmgiIDMgNAojZGVmaW5lIFRIUkVBRF9BRkZJTklUWV9QT0xJQ1kgNAoKc3RydWN0IHRo
cmVhZF9hZmZpbml0eV9wb2xpY3kgewogaW50ZWdlcl90IGFmZmluaXR5X3RhZzsKfTsKCiNkZWZp
bmUgVEhSRUFEX0FGRklOSVRZX1RBR19OVUxMIDAKCnR5cGVkZWYgc3RydWN0IHRocmVhZF9hZmZp
bml0eV9wb2xpY3kgdGhyZWFkX2FmZmluaXR5X3BvbGljeV9kYXRhX3Q7CnR5cGVkZWYgc3RydWN0
IHRocmVhZF9hZmZpbml0eV9wb2xpY3kgKnRocmVhZF9hZmZpbml0eV9wb2xpY3lfdDsKCiNkZWZp
bmUgVEhSRUFEX0FGRklOSVRZX1BPTElDWV9DT1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3Qp
IChzaXplb2YgKHRocmVhZF9hZmZpbml0eV9wb2xpY3lfZGF0YV90KSAvIHNpemVvZiAoaW50ZWdl
cl90KSkpCiMgOTUgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hfdHlwZXMuaCIgMiAzIDQKIyAxICIv
dXNyL2luY2x1ZGUvbWFjaC90aHJlYWRfc3BlY2lhbF9wb3J0cy5oIiAxIDMgNAojIDY4ICIvdXNy
L2luY2x1ZGUvbWFjaC90aHJlYWRfc3BlY2lhbF9wb3J0cy5oIiAzIDQKI2RlZmluZSBfTUFDSF9U
SFJFQURfU1BFQ0lBTF9QT1JUU19IXyAKCiNkZWZpbmUgVEhSRUFEX0tFUk5FTF9QT1JUIDEKCgoK
CgoKI2RlZmluZSB0aHJlYWRfZ2V0X2tlcm5lbF9wb3J0KHRocmVhZCxwb3J0KSAodGhyZWFkX2dl
dF9zcGVjaWFsX3BvcnQoKHRocmVhZCksIFRIUkVBRF9LRVJORUxfUE9SVCwgKHBvcnQpKSkKCgoj
ZGVmaW5lIHRocmVhZF9zZXRfa2VybmVsX3BvcnQodGhyZWFkLHBvcnQpICh0aHJlYWRfc2V0X3Nw
ZWNpYWxfcG9ydCgodGhyZWFkKSwgVEhSRUFEX0tFUk5FTF9QT1JULCAocG9ydCkpKQojIDk2ICIv
dXNyL2luY2x1ZGUvbWFjaC9tYWNoX3R5cGVzLmgiIDIgMyA0CgoKIyAxICIvdXNyL2luY2x1ZGUv
bWFjaC9jbG9ja190eXBlcy5oIiAxIDMgNAojIDQzICIvdXNyL2luY2x1ZGUvbWFjaC9jbG9ja190
eXBlcy5oIiAzIDQKI2RlZmluZSBfTUFDSF9DTE9DS19UWVBFU19IXyAKCgoKCgoKCnR5cGVkZWYg
aW50IGFsYXJtX3R5cGVfdDsKdHlwZWRlZiBpbnQgc2xlZXBfdHlwZV90Owp0eXBlZGVmIGludCBj
bG9ja19pZF90Owp0eXBlZGVmIGludCBjbG9ja19mbGF2b3JfdDsKdHlwZWRlZiBpbnQgKmNsb2Nr
X2F0dHJfdDsKdHlwZWRlZiBpbnQgY2xvY2tfcmVzX3Q7CgoKCgpzdHJ1Y3QgbWFjaF90aW1lc3Bl
YyB7CiB1bnNpZ25lZCBpbnQgdHZfc2VjOwogY2xvY2tfcmVzX3QgdHZfbnNlYzsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgbWFjaF90aW1lc3BlYyBtYWNoX3RpbWVzcGVjX3Q7CgoKCgojZGVmaW5lIFNZU1RF
TV9DTE9DSyAwCiNkZWZpbmUgQ0FMRU5EQVJfQ0xPQ0sgMQoKI2RlZmluZSBSRUFMVElNRV9DTE9D
SyAwCgoKCgojZGVmaW5lIENMT0NLX0dFVF9USU1FX1JFUyAxCgojZGVmaW5lIENMT0NLX0FMQVJN
X0NVUlJFUyAzCiNkZWZpbmUgQ0xPQ0tfQUxBUk1fTUlOUkVTIDQKI2RlZmluZSBDTE9DS19BTEFS
TV9NQVhSRVMgNQoKI2RlZmluZSBOU0VDX1BFUl9VU0VDIDEwMDAKI2RlZmluZSBVU0VDX1BFUl9T
RUMgMTAwMDAwMAojZGVmaW5lIE5TRUNfUEVSX1NFQyAxMDAwMDAwMDAwCgojZGVmaW5lIEJBRF9N
QUNIX1RJTUVTUEVDKHQpICgodCktPnR2X25zZWMgPCAwIHx8ICh0KS0+dHZfbnNlYyA+PSBOU0VD
X1BFUl9TRUMpCgoKCiNkZWZpbmUgQ01QX01BQ0hfVElNRVNQRUModDEsdDIpICgodDEpLT50dl9z
ZWMgPiAodDIpLT50dl9zZWMgPyArTlNFQ19QRVJfU0VDIDogKCh0MSktPnR2X3NlYyA8ICh0Mikt
PnR2X3NlYyA/IC1OU0VDX1BFUl9TRUMgOiAodDEpLT50dl9uc2VjIC0gKHQyKS0+dHZfbnNlYykp
CgoKCgoKI2RlZmluZSBBRERfTUFDSF9USU1FU1BFQyh0MSx0MikgZG8geyBpZiAoKCh0MSktPnR2
X25zZWMgKz0gKHQyKS0+dHZfbnNlYykgPj0gTlNFQ19QRVJfU0VDKSB7ICh0MSktPnR2X25zZWMg
LT0gTlNFQ19QRVJfU0VDOyAodDEpLT50dl9zZWMgKz0gMTsgfSAodDEpLT50dl9zZWMgKz0gKHQy
KS0+dHZfc2VjOyB9IHdoaWxlICgwKQojIDEwOCAiL3Vzci9pbmNsdWRlL21hY2gvY2xvY2tfdHlw
ZXMuaCIgMyA0CiNkZWZpbmUgU1VCX01BQ0hfVElNRVNQRUModDEsdDIpIGRvIHsgaWYgKCgodDEp
LT50dl9uc2VjIC09ICh0MiktPnR2X25zZWMpIDwgMCkgeyAodDEpLT50dl9uc2VjICs9IE5TRUNf
UEVSX1NFQzsgKHQxKS0+dHZfc2VjIC09IDE7IH0gKHQxKS0+dHZfc2VjIC09ICh0MiktPnR2X3Nl
YzsgfSB3aGlsZSAoMCkKIyAxMjAgIi91c3IvaW5jbHVkZS9tYWNoL2Nsb2NrX3R5cGVzLmgiIDMg
NAojZGVmaW5lIEFMUk1UWVBFIDB4ZmYKI2RlZmluZSBUSU1FX0FCU09MVVRFIDB4MDAKI2RlZmlu
ZSBUSU1FX1JFTEFUSVZFIDB4MDEKCiNkZWZpbmUgQkFEX0FMUk1UWVBFKHQpICgoKHQpICZ+IFRJ
TUVfUkVMQVRJVkUpICE9IDApCiMgOTkgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hfdHlwZXMuaCIg
MiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbWFjaC92bV9hdHRyaWJ1dGVzLmgiIDEgMyA0CiMgNzEg
Ii91c3IvaW5jbHVkZS9tYWNoL3ZtX2F0dHJpYnV0ZXMuaCIgMyA0CiNkZWZpbmUgX01BQ0hfVk1f
QVRUUklCVVRFU19IXyAKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHZtX21hY2hpbmVfYXR0cmli
dXRlX3Q7CgojZGVmaW5lIE1BVFRSX0NBQ0hFIDEKI2RlZmluZSBNQVRUUl9NSUdSQVRFIDIKI2Rl
ZmluZSBNQVRUUl9SRVBMSUNBVEUgNAoKCgoKdHlwZWRlZiBpbnQgdm1fbWFjaGluZV9hdHRyaWJ1
dGVfdmFsX3Q7CgojZGVmaW5lIE1BVFRSX1ZBTF9PRkYgMAojZGVmaW5lIE1BVFRSX1ZBTF9PTiAx
CiNkZWZpbmUgTUFUVFJfVkFMX0dFVCAyCgojZGVmaW5lIE1BVFRSX1ZBTF9DQUNIRV9GTFVTSCA2
CiNkZWZpbmUgTUFUVFJfVkFMX0RDQUNIRV9GTFVTSCA3CiNkZWZpbmUgTUFUVFJfVkFMX0lDQUNI
RV9GTFVTSCA4CiNkZWZpbmUgTUFUVFJfVkFMX0NBQ0hFX1NZTkMgOQojZGVmaW5lIE1BVFRSX1ZB
TF9DQUNIRV9TWU5DIDkKCiNkZWZpbmUgTUFUVFJfVkFMX0dFVF9JTkZPIDEwCiMgMTAwICIvdXNy
L2luY2x1ZGUvbWFjaC9tYWNoX3R5cGVzLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL21hY2gv
dm1faW5oZXJpdC5oIiAxIDMgNAojIDY3ICIvdXNyL2luY2x1ZGUvbWFjaC92bV9pbmhlcml0Lmgi
IDMgNAojZGVmaW5lIF9NQUNIX1ZNX0lOSEVSSVRfSF8gCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVk
IGludCB2bV9pbmhlcml0X3Q7CgoKCgoKI2RlZmluZSBWTV9JTkhFUklUX1NIQVJFICgodm1faW5o
ZXJpdF90KSAwKQojZGVmaW5lIFZNX0lOSEVSSVRfQ09QWSAoKHZtX2luaGVyaXRfdCkgMSkKI2Rl
ZmluZSBWTV9JTkhFUklUX05PTkUgKCh2bV9pbmhlcml0X3QpIDIpCiNkZWZpbmUgVk1fSU5IRVJJ
VF9ET05BVEVfQ09QWSAoKHZtX2luaGVyaXRfdCkgMykKCiNkZWZpbmUgVk1fSU5IRVJJVF9ERUZB
VUxUIFZNX0lOSEVSSVRfQ09QWQojZGVmaW5lIFZNX0lOSEVSSVRfTEFTVF9WQUxJRCBWTV9JTkhF
UklUX05PTkUKIyAxMDEgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hfdHlwZXMuaCIgMiAzIDQKIyAx
ICIvdXNyL2luY2x1ZGUvbWFjaC92bV9wdXJnYWJsZS5oIiAxIDMgNAojIDQ1ICIvdXNyL2luY2x1
ZGUvbWFjaC92bV9wdXJnYWJsZS5oIiAzIDQKI2RlZmluZSBfTUFDSF9WTV9QVVJHQUJMRV9IXyAK
CgoKCgoKCnR5cGVkZWYgaW50IHZtX3B1cmdhYmxlX3Q7CgoKCgojZGVmaW5lIFZNX1BVUkdBQkxF
X1NFVF9TVEFURSAoKHZtX3B1cmdhYmxlX3QpIDApCiNkZWZpbmUgVk1fUFVSR0FCTEVfR0VUX1NU
QVRFICgodm1fcHVyZ2FibGVfdCkgMSkKI2RlZmluZSBWTV9QVVJHQUJMRV9QVVJHRV9BTEwgKCh2
bV9wdXJnYWJsZV90KSAyKQoKI2RlZmluZSBWTV9QVVJHQUJMRV9ERUJVR19TSElGVCAxMgojZGVm
aW5lIFZNX1BVUkdBQkxFX0RFQlVHX01BU0sgKDB4MyA8PCBWTV9QVVJHQUJMRV9ERUJVR19TSElG
VCkKI2RlZmluZSBWTV9QVVJHQUJMRV9ERUJVR19FTVBUWSAoMHgxIDw8IFZNX1BVUkdBQkxFX0RF
QlVHX1NISUZUKQojZGVmaW5lIFZNX1BVUkdBQkxFX0RFQlVHX0ZBVUxUICgweDIgPDwgVk1fUFVS
R0FCTEVfREVCVUdfU0hJRlQpCgoKCgoKCiNkZWZpbmUgVk1fVk9MQVRJTEVfR1JPVVBfU0hJRlQg
OAojZGVmaW5lIFZNX1ZPTEFUSUxFX0dST1VQX01BU0sgKDcgPDwgVk1fVk9MQVRJTEVfR1JPVVBf
U0hJRlQpCiNkZWZpbmUgVk1fVk9MQVRJTEVfR1JPVVBfREVGQVVMVCBWTV9WT0xBVElMRV9HUk9V
UF83CgojZGVmaW5lIFZNX1ZPTEFUSUxFX0dST1VQXzAgKDAgPDwgVk1fVk9MQVRJTEVfR1JPVVBf
U0hJRlQpCiNkZWZpbmUgVk1fVk9MQVRJTEVfR1JPVVBfMSAoMSA8PCBWTV9WT0xBVElMRV9HUk9V
UF9TSElGVCkKI2RlZmluZSBWTV9WT0xBVElMRV9HUk9VUF8yICgyIDw8IFZNX1ZPTEFUSUxFX0dS
T1VQX1NISUZUKQojZGVmaW5lIFZNX1ZPTEFUSUxFX0dST1VQXzMgKDMgPDwgVk1fVk9MQVRJTEVf
R1JPVVBfU0hJRlQpCiNkZWZpbmUgVk1fVk9MQVRJTEVfR1JPVVBfNCAoNCA8PCBWTV9WT0xBVElM
RV9HUk9VUF9TSElGVCkKI2RlZmluZSBWTV9WT0xBVElMRV9HUk9VUF81ICg1IDw8IFZNX1ZPTEFU
SUxFX0dST1VQX1NISUZUKQojZGVmaW5lIFZNX1ZPTEFUSUxFX0dST1VQXzYgKDYgPDwgVk1fVk9M
QVRJTEVfR1JPVVBfU0hJRlQpCiNkZWZpbmUgVk1fVk9MQVRJTEVfR1JPVVBfNyAoNyA8PCBWTV9W
T0xBVElMRV9HUk9VUF9TSElGVCkKCgoKCgoKCiNkZWZpbmUgVk1fUFVSR0FCTEVfQkVIQVZJT1Jf
U0hJRlQgNgojZGVmaW5lIFZNX1BVUkdBQkxFX0JFSEFWSU9SX01BU0sgKDEgPDwgVk1fUFVSR0FC
TEVfQkVIQVZJT1JfU0hJRlQpCiNkZWZpbmUgVk1fUFVSR0FCTEVfQkVIQVZJT1JfRklGTyAoMCA8
PCBWTV9QVVJHQUJMRV9CRUhBVklPUl9TSElGVCkKI2RlZmluZSBWTV9QVVJHQUJMRV9CRUhBVklP
Ul9MSUZPICgxIDw8IFZNX1BVUkdBQkxFX0JFSEFWSU9SX1NISUZUKQoKCgoKCgoKI2RlZmluZSBW
TV9QVVJHQUJMRV9PUkRFUklOR19TSElGVCA1CiNkZWZpbmUgVk1fUFVSR0FCTEVfT1JERVJJTkdf
TUFTSyAoMSA8PCBWTV9QVVJHQUJMRV9PUkRFUklOR19TSElGVCkKI2RlZmluZSBWTV9QVVJHQUJM
RV9PUkRFUklOR19PQlNPTEVURSAoMSA8PCBWTV9QVVJHQUJMRV9PUkRFUklOR19TSElGVCkKI2Rl
ZmluZSBWTV9QVVJHQUJMRV9PUkRFUklOR19OT1JNQUwgKDAgPDwgVk1fUFVSR0FCTEVfT1JERVJJ
TkdfU0hJRlQpCgoKCgoKI2RlZmluZSBWTV9WT0xBVElMRV9PUkRFUl9TSElGVCA0CiNkZWZpbmUg
Vk1fVk9MQVRJTEVfT1JERVJfTUFTSyAoMSA8PCBWTV9WT0xBVElMRV9PUkRFUl9TSElGVCkKI2Rl
ZmluZSBWTV9WT0xBVElMRV9NQUtFX0ZJUlNUX0lOX0dST1VQICgxIDw8IFZNX1ZPTEFUSUxFX09S
REVSX1NISUZUKQojZGVmaW5lIFZNX1ZPTEFUSUxFX01BS0VfTEFTVF9JTl9HUk9VUCAoMCA8PCBW
TV9WT0xBVElMRV9PUkRFUl9TSElGVCkKCgoKCiNkZWZpbmUgVk1fUFVSR0FCTEVfU1RBVEVfTUlO
IDAKI2RlZmluZSBWTV9QVVJHQUJMRV9TVEFURV9NQVggMwojZGVmaW5lIFZNX1BVUkdBQkxFX1NU
QVRFX01BU0sgMwoKI2RlZmluZSBWTV9QVVJHQUJMRV9OT05WT0xBVElMRSAwCiNkZWZpbmUgVk1f
UFVSR0FCTEVfVk9MQVRJTEUgMQojZGVmaW5lIFZNX1BVUkdBQkxFX0VNUFRZIDIKI2RlZmluZSBW
TV9QVVJHQUJMRV9ERU5ZIDMKCiNkZWZpbmUgVk1fUFVSR0FCTEVfQUxMX01BU0tTIChWTV9QVVJH
QUJMRV9TVEFURV9NQVNLIHwgVk1fVk9MQVRJTEVfT1JERVJfTUFTSyB8IFZNX1BVUkdBQkxFX09S
REVSSU5HX01BU0sgfCBWTV9QVVJHQUJMRV9CRUhBVklPUl9NQVNLIHwgVk1fVk9MQVRJTEVfR1JP
VVBfTUFTSyB8IFZNX1BVUkdBQkxFX0RFQlVHX01BU0spCiMgMTAyICIvdXNyL2luY2x1ZGUvbWFj
aC9tYWNoX3R5cGVzLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvdm1fYmVoYXZpb3Iu
aCIgMSAzIDQKIyAzOSAiL3Vzci9pbmNsdWRlL21hY2gvdm1fYmVoYXZpb3IuaCIgMyA0CiNkZWZp
bmUgX01BQ0hfVk1fQkVIQVZJT1JfSF8gCgoKCgoKCgp0eXBlZGVmIGludCB2bV9iZWhhdmlvcl90
OwojIDYxICIvdXNyL2luY2x1ZGUvbWFjaC92bV9iZWhhdmlvci5oIiAzIDQKI2RlZmluZSBWTV9C
RUhBVklPUl9ERUZBVUxUICgodm1fYmVoYXZpb3JfdCkgMCkKI2RlZmluZSBWTV9CRUhBVklPUl9S
QU5ET00gKCh2bV9iZWhhdmlvcl90KSAxKQojZGVmaW5lIFZNX0JFSEFWSU9SX1NFUVVFTlRJQUwg
KCh2bV9iZWhhdmlvcl90KSAyKQojZGVmaW5lIFZNX0JFSEFWSU9SX1JTRVFOVEwgKCh2bV9iZWhh
dmlvcl90KSAzKQoKCgoKCiNkZWZpbmUgVk1fQkVIQVZJT1JfV0lMTE5FRUQgKCh2bV9iZWhhdmlv
cl90KSA0KQojZGVmaW5lIFZNX0JFSEFWSU9SX0RPTlRORUVEICgodm1fYmVoYXZpb3JfdCkgNSkK
I2RlZmluZSBWTV9CRUhBVklPUl9GUkVFICgodm1fYmVoYXZpb3JfdCkgNikKI2RlZmluZSBWTV9C
RUhBVklPUl9aRVJPX1dJUkVEX1BBR0VTICgodm1fYmVoYXZpb3JfdCkgNykKI2RlZmluZSBWTV9C
RUhBVklPUl9SRVVTQUJMRSAoKHZtX2JlaGF2aW9yX3QpIDgpCiNkZWZpbmUgVk1fQkVIQVZJT1Jf
UkVVU0UgKCh2bV9iZWhhdmlvcl90KSA5KQojZGVmaW5lIFZNX0JFSEFWSU9SX0NBTl9SRVVTRSAo
KHZtX2JlaGF2aW9yX3QpIDEwKQojIDEwMyAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaF90eXBlcy5o
IiAyIDMgNAoKCgoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaC92bV9yZWdpb24uaCIgMSAzIDQKIyAz
OSAiL3Vzci9pbmNsdWRlL21hY2gvdm1fcmVnaW9uLmgiIDMgNAojZGVmaW5lIF9NQUNIX1ZNX1JF
R0lPTl9IXyAKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaGluZS92bV9wYXJhbS5o
IiAxIDMgNAojIDMwICIvdXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lL3ZtX3BhcmFtLmgiIDMgNAoj
ZGVmaW5lIF9NQUNIX01BQ0hJTkVfVk1fUEFSQU1fSF8gCiMgNDggIi91c3IvaW5jbHVkZS9tYWNo
L3ZtX3JlZ2lvbi5oIiAyIDMgNAoKCgoKCiNwcmFnbWEgcGFjayg0KQoKCgoKdHlwZWRlZiB1aW50
MzJfdCB2bTMyX29iamVjdF9pZF90OwoKCgoKCgoKI2RlZmluZSBWTV9SRUdJT05fSU5GT19NQVgg
KDEwMjQpCnR5cGVkZWYgaW50ICp2bV9yZWdpb25faW5mb190Owp0eXBlZGVmIGludCAqdm1fcmVn
aW9uX2luZm9fNjRfdDsKdHlwZWRlZiBpbnQgKnZtX3JlZ2lvbl9yZWN1cnNlX2luZm9fdDsKdHlw
ZWRlZiBpbnQgKnZtX3JlZ2lvbl9yZWN1cnNlX2luZm9fNjRfdDsKdHlwZWRlZiBpbnQgdm1fcmVn
aW9uX2ZsYXZvcl90Owp0eXBlZGVmIGludCB2bV9yZWdpb25faW5mb19kYXRhX3RbKDEwMjQpXTsK
CiNkZWZpbmUgVk1fUkVHSU9OX0JBU0lDX0lORk9fNjQgOQpzdHJ1Y3Qgdm1fcmVnaW9uX2Jhc2lj
X2luZm9fNjQgewogdm1fcHJvdF90IHByb3RlY3Rpb247CiB2bV9wcm90X3QgbWF4X3Byb3RlY3Rp
b247CiB2bV9pbmhlcml0X3QgaW5oZXJpdGFuY2U7CiBib29sZWFuX3Qgc2hhcmVkOwogYm9vbGVh
bl90IHJlc2VydmVkOwogbWVtb3J5X29iamVjdF9vZmZzZXRfdCBvZmZzZXQ7CiB2bV9iZWhhdmlv
cl90IGJlaGF2aW9yOwogdW5zaWduZWQgc2hvcnQgdXNlcl93aXJlZF9jb3VudDsKfTsKdHlwZWRl
ZiBzdHJ1Y3Qgdm1fcmVnaW9uX2Jhc2ljX2luZm9fNjQgKnZtX3JlZ2lvbl9iYXNpY19pbmZvXzY0
X3Q7CnR5cGVkZWYgc3RydWN0IHZtX3JlZ2lvbl9iYXNpY19pbmZvXzY0IHZtX3JlZ2lvbl9iYXNp
Y19pbmZvX2RhdGFfNjRfdDsKCiNkZWZpbmUgVk1fUkVHSU9OX0JBU0lDX0lORk9fQ09VTlRfNjQg
KChtYWNoX21zZ190eXBlX251bWJlcl90KSAoc2l6ZW9mKHZtX3JlZ2lvbl9iYXNpY19pbmZvX2Rh
dGFfNjRfdCkvc2l6ZW9mKGludCkpKQoKCgoKCgoKI2RlZmluZSBWTV9SRUdJT05fQkFTSUNfSU5G
TyAxMAoKCgoKCgpzdHJ1Y3Qgdm1fcmVnaW9uX2Jhc2ljX2luZm8gewogdm1fcHJvdF90IHByb3Rl
Y3Rpb247CiB2bV9wcm90X3QgbWF4X3Byb3RlY3Rpb247CiB2bV9pbmhlcml0X3QgaW5oZXJpdGFu
Y2U7CiBib29sZWFuX3Qgc2hhcmVkOwogYm9vbGVhbl90IHJlc2VydmVkOwogdWludDMyX3Qgb2Zm
c2V0Owogdm1fYmVoYXZpb3JfdCBiZWhhdmlvcjsKIHVuc2lnbmVkIHNob3J0IHVzZXJfd2lyZWRf
Y291bnQ7Cn07Cgp0eXBlZGVmIHN0cnVjdCB2bV9yZWdpb25fYmFzaWNfaW5mbyAqdm1fcmVnaW9u
X2Jhc2ljX2luZm9fdDsKdHlwZWRlZiBzdHJ1Y3Qgdm1fcmVnaW9uX2Jhc2ljX2luZm8gdm1fcmVn
aW9uX2Jhc2ljX2luZm9fZGF0YV90OwoKI2RlZmluZSBWTV9SRUdJT05fQkFTSUNfSU5GT19DT1VO
VCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpIChzaXplb2Yodm1fcmVnaW9uX2Jhc2ljX2luZm9f
ZGF0YV90KS9zaXplb2YoaW50KSkpCgoKI2RlZmluZSBWTV9SRUdJT05fRVhURU5ERURfSU5GTyAx
MQoKI2RlZmluZSBTTV9DT1cgMQojZGVmaW5lIFNNX1BSSVZBVEUgMgojZGVmaW5lIFNNX0VNUFRZ
IDMKI2RlZmluZSBTTV9TSEFSRUQgNAojZGVmaW5lIFNNX1RSVUVTSEFSRUQgNQojZGVmaW5lIFNN
X1BSSVZBVEVfQUxJQVNFRCA2CiNkZWZpbmUgU01fU0hBUkVEX0FMSUFTRUQgNwojIDEzOCAiL3Vz
ci9pbmNsdWRlL21hY2gvdm1fcmVnaW9uLmgiIDMgNApzdHJ1Y3Qgdm1fcmVnaW9uX2V4dGVuZGVk
X2luZm8gewogdm1fcHJvdF90IHByb3RlY3Rpb247CiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJf
dGFnOwogICAgICAgIHVuc2lnbmVkIGludCBwYWdlc19yZXNpZGVudDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgcGFnZXNfc2hhcmVkX25vd19wcml2YXRlOwogICAgICAgIHVuc2lnbmVkIGludCBwYWdl
c19zd2FwcGVkX291dDsKICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZXNfZGlydGllZDsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcmVmX2NvdW50OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNoYWRvd19k
ZXB0aDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGV4dGVybmFsX3BhZ2VyOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgc2hhcmVfbW9kZTsKfTsKCnR5cGVkZWYgc3RydWN0IHZtX3JlZ2lvbl9leHRlbmRl
ZF9pbmZvICp2bV9yZWdpb25fZXh0ZW5kZWRfaW5mb190Owp0eXBlZGVmIHN0cnVjdCB2bV9yZWdp
b25fZXh0ZW5kZWRfaW5mbyB2bV9yZWdpb25fZXh0ZW5kZWRfaW5mb19kYXRhX3Q7CgojZGVmaW5l
IFZNX1JFR0lPTl9FWFRFTkRFRF9JTkZPX0NPVU5UICgobWFjaF9tc2dfdHlwZV9udW1iZXJfdCkg
KHNpemVvZih2bV9yZWdpb25fZXh0ZW5kZWRfaW5mb19kYXRhX3QpL3NpemVvZihpbnQpKSkKCgoK
I2RlZmluZSBWTV9SRUdJT05fVE9QX0lORk8gMTIKCnN0cnVjdCB2bV9yZWdpb25fdG9wX2luZm8g
ewogICAgICAgIHVuc2lnbmVkIGludCBvYmpfaWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJlZl9j
b3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgcHJpdmF0ZV9wYWdlc19yZXNpZGVudDsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc2hhcmVkX3BhZ2VzX3Jlc2lkZW50OwogICAgICAgIHVuc2lnbmVkIGNo
YXIgc2hhcmVfbW9kZTsKfTsKCnR5cGVkZWYgc3RydWN0IHZtX3JlZ2lvbl90b3BfaW5mbyAqdm1f
cmVnaW9uX3RvcF9pbmZvX3Q7CnR5cGVkZWYgc3RydWN0IHZtX3JlZ2lvbl90b3BfaW5mbyB2bV9y
ZWdpb25fdG9wX2luZm9fZGF0YV90OwoKI2RlZmluZSBWTV9SRUdJT05fVE9QX0lORk9fQ09VTlQg
KChtYWNoX21zZ190eXBlX251bWJlcl90KSAoc2l6ZW9mKHZtX3JlZ2lvbl90b3BfaW5mb19kYXRh
X3QpL3NpemVvZihpbnQpKSkKIyAxOTYgIi91c3IvaW5jbHVkZS9tYWNoL3ZtX3JlZ2lvbi5oIiAz
IDQKc3RydWN0IHZtX3JlZ2lvbl9zdWJtYXBfaW5mbyB7CiB2bV9wcm90X3QgcHJvdGVjdGlvbjsK
IHZtX3Byb3RfdCBtYXhfcHJvdGVjdGlvbjsKIHZtX2luaGVyaXRfdCBpbmhlcml0YW5jZTsKIHVp
bnQzMl90IG9mZnNldDsKICAgICAgICB1bnNpZ25lZCBpbnQgdXNlcl90YWc7CiAgICAgICAgdW5z
aWduZWQgaW50IHBhZ2VzX3Jlc2lkZW50OwogICAgICAgIHVuc2lnbmVkIGludCBwYWdlc19zaGFy
ZWRfbm93X3ByaXZhdGU7CiAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VzX3N3YXBwZWRfb3V0Owog
ICAgICAgIHVuc2lnbmVkIGludCBwYWdlc19kaXJ0aWVkOwogICAgICAgIHVuc2lnbmVkIGludCBy
ZWZfY291bnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2hhZG93X2RlcHRoOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgZXh0ZXJuYWxfcGFnZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBzaGFyZV9t
b2RlOwogYm9vbGVhbl90IGlzX3N1Ym1hcDsKIHZtX2JlaGF2aW9yX3QgYmVoYXZpb3I7CiB2bTMy
X29iamVjdF9pZF90IG9iamVjdF9pZDsKIHVuc2lnbmVkIHNob3J0IHVzZXJfd2lyZWRfY291bnQ7
Cn07Cgp0eXBlZGVmIHN0cnVjdCB2bV9yZWdpb25fc3VibWFwX2luZm8gKnZtX3JlZ2lvbl9zdWJt
YXBfaW5mb190Owp0eXBlZGVmIHN0cnVjdCB2bV9yZWdpb25fc3VibWFwX2luZm8gdm1fcmVnaW9u
X3N1Ym1hcF9pbmZvX2RhdGFfdDsKCiNkZWZpbmUgVk1fUkVHSU9OX1NVQk1BUF9JTkZPX0NPVU5U
ICgobWFjaF9tc2dfdHlwZV9udW1iZXJfdCkgKHNpemVvZih2bV9yZWdpb25fc3VibWFwX2luZm9f
ZGF0YV90KS9zaXplb2YoaW50KSkpCgoKc3RydWN0IHZtX3JlZ2lvbl9zdWJtYXBfaW5mb182NCB7
CiB2bV9wcm90X3QgcHJvdGVjdGlvbjsKIHZtX3Byb3RfdCBtYXhfcHJvdGVjdGlvbjsKIHZtX2lu
aGVyaXRfdCBpbmhlcml0YW5jZTsKIG1lbW9yeV9vYmplY3Rfb2Zmc2V0X3Qgb2Zmc2V0OwogICAg
ICAgIHVuc2lnbmVkIGludCB1c2VyX3RhZzsKICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZXNfcmVz
aWRlbnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VzX3NoYXJlZF9ub3dfcHJpdmF0ZTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgcGFnZXNfc3dhcHBlZF9vdXQ7CiAgICAgICAgdW5zaWduZWQgaW50
IHBhZ2VzX2RpcnRpZWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJlZl9jb3VudDsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBzaGFkb3dfZGVwdGg7CiAgICAgICAgdW5zaWduZWQgY2hhciBleHRlcm5h
bF9wYWdlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNoYXJlX21vZGU7CiBib29sZWFuX3QgaXNf
c3VibWFwOwogdm1fYmVoYXZpb3JfdCBiZWhhdmlvcjsKIHZtMzJfb2JqZWN0X2lkX3Qgb2JqZWN0
X2lkOwogdW5zaWduZWQgc2hvcnQgdXNlcl93aXJlZF9jb3VudDsKfTsKCnR5cGVkZWYgc3RydWN0
IHZtX3JlZ2lvbl9zdWJtYXBfaW5mb182NCAqdm1fcmVnaW9uX3N1Ym1hcF9pbmZvXzY0X3Q7CnR5
cGVkZWYgc3RydWN0IHZtX3JlZ2lvbl9zdWJtYXBfaW5mb182NCB2bV9yZWdpb25fc3VibWFwX2lu
Zm9fZGF0YV82NF90OwoKI2RlZmluZSBWTV9SRUdJT05fU1VCTUFQX0lORk9fQ09VTlRfNjQgKCht
YWNoX21zZ190eXBlX251bWJlcl90KSAoc2l6ZW9mKHZtX3JlZ2lvbl9zdWJtYXBfaW5mb19kYXRh
XzY0X3QpL3NpemVvZihpbnQpKSkKCgpzdHJ1Y3Qgdm1fcmVnaW9uX3N1Ym1hcF9zaG9ydF9pbmZv
XzY0IHsKIHZtX3Byb3RfdCBwcm90ZWN0aW9uOwogdm1fcHJvdF90IG1heF9wcm90ZWN0aW9uOwog
dm1faW5oZXJpdF90IGluaGVyaXRhbmNlOwogbWVtb3J5X29iamVjdF9vZmZzZXRfdCBvZmZzZXQ7
CiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJfdGFnOwogICAgICAgIHVuc2lnbmVkIGludCByZWZf
Y291bnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2hhZG93X2RlcHRoOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgZXh0ZXJuYWxfcGFnZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBzaGFyZV9tb2Rl
OwogYm9vbGVhbl90IGlzX3N1Ym1hcDsKIHZtX2JlaGF2aW9yX3QgYmVoYXZpb3I7CiB2bTMyX29i
amVjdF9pZF90IG9iamVjdF9pZDsKIHVuc2lnbmVkIHNob3J0IHVzZXJfd2lyZWRfY291bnQ7Cn07
Cgp0eXBlZGVmIHN0cnVjdCB2bV9yZWdpb25fc3VibWFwX3Nob3J0X2luZm9fNjQgKnZtX3JlZ2lv
bl9zdWJtYXBfc2hvcnRfaW5mb182NF90Owp0eXBlZGVmIHN0cnVjdCB2bV9yZWdpb25fc3VibWFw
X3Nob3J0X2luZm9fNjQgdm1fcmVnaW9uX3N1Ym1hcF9zaG9ydF9pbmZvX2RhdGFfNjRfdDsKCiNk
ZWZpbmUgVk1fUkVHSU9OX1NVQk1BUF9TSE9SVF9JTkZPX0NPVU5UXzY0ICgobWFjaF9tc2dfdHlw
ZV9udW1iZXJfdCkgKHNpemVvZih2bV9yZWdpb25fc3VibWFwX3Nob3J0X2luZm9fZGF0YV82NF90
KS9zaXplb2YoaW50KSkpCgoKCnN0cnVjdCBtYWNoX3ZtX3JlYWRfZW50cnkgewogbWFjaF92bV9h
ZGRyZXNzX3QgYWRkcmVzczsKIG1hY2hfdm1fc2l6ZV90IHNpemU7Cn07CgpzdHJ1Y3Qgdm1fcmVh
ZF9lbnRyeSB7CiB2bV9hZGRyZXNzX3QgYWRkcmVzczsKIHZtX3NpemVfdCBzaXplOwp9OwojIDI4
OSAiL3Vzci9pbmNsdWRlL21hY2gvdm1fcmVnaW9uLmgiIDMgNAojZGVmaW5lIFZNX01BUF9FTlRS
WV9NQVggKDI1NikKCnR5cGVkZWYgc3RydWN0IG1hY2hfdm1fcmVhZF9lbnRyeSBtYWNoX3ZtX3Jl
YWRfZW50cnlfdFsoMjU2KV07CnR5cGVkZWYgc3RydWN0IHZtX3JlYWRfZW50cnkgdm1fcmVhZF9l
bnRyeV90WygyNTYpXTsKCgoKCiNwcmFnbWEgcGFjaygpCgoKI2RlZmluZSBWTV9QQUdFX0lORk9f
TUFYIAp0eXBlZGVmIGludCAqdm1fcGFnZV9pbmZvX3Q7CnR5cGVkZWYgaW50IHZtX3BhZ2VfaW5m
b19kYXRhX3RbXTsKdHlwZWRlZiBpbnQgdm1fcGFnZV9pbmZvX2ZsYXZvcl90OwoKI2RlZmluZSBW
TV9QQUdFX0lORk9fQkFTSUMgMQpzdHJ1Y3Qgdm1fcGFnZV9pbmZvX2Jhc2ljIHsKIGludCBkaXNw
b3NpdGlvbjsKIGludCByZWZfY291bnQ7CiB2bV9vYmplY3RfaWRfdCBvYmplY3RfaWQ7CiBtZW1v
cnlfb2JqZWN0X29mZnNldF90IG9mZnNldDsKIGludCBkZXB0aDsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
dm1fcGFnZV9pbmZvX2Jhc2ljICp2bV9wYWdlX2luZm9fYmFzaWNfdDsKdHlwZWRlZiBzdHJ1Y3Qg
dm1fcGFnZV9pbmZvX2Jhc2ljIHZtX3BhZ2VfaW5mb19iYXNpY19kYXRhX3Q7CgojZGVmaW5lIFZN
X1BBR0VfSU5GT19CQVNJQ19DT1VOVCAoKG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QpIChzaXplb2Yo
dm1fcGFnZV9pbmZvX2Jhc2ljX2RhdGFfdCkvc2l6ZW9mKGludCkpKQojIDEwOCAiL3Vzci9pbmNs
dWRlL21hY2gvbWFjaF90eXBlcy5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9tYWNoL2ttb2Qu
aCIgMSAzIDQKIyAzNiAiL3Vzci9pbmNsdWRlL21hY2gva21vZC5oIiAzIDQKI2RlZmluZSBfTUFD
SF9LTU9EX0hfIAoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCiNkZWZpbmUgS01PRF9NQVhfTkFN
RSA2NAoKI2RlZmluZSBLTU9EX1JFVFVSTl9TVUNDRVNTIEtFUk5fU1VDQ0VTUwojZGVmaW5lIEtN
T0RfUkVUVVJOX0ZBSUxVUkUgS0VSTl9GQUlMVVJFCgp0eXBlZGVmIGludCBrbW9kX3Q7CgpzdHJ1
Y3Qga21vZF9pbmZvOwp0eXBlZGVmIGtlcm5fcmV0dXJuX3Qga21vZF9zdGFydF9mdW5jX3Qoc3Ry
dWN0IGttb2RfaW5mbyAqIGtpLCB2b2lkICogZGF0YSk7CnR5cGVkZWYga2Vybl9yZXR1cm5fdCBr
bW9kX3N0b3BfZnVuY190KHN0cnVjdCBrbW9kX2luZm8gKiBraSwgdm9pZCAqIGRhdGEpOwojIDcw
ICIvdXNyL2luY2x1ZGUvbWFjaC9rbW9kLmgiIDMgNAojcHJhZ21hIHBhY2soNCkKCgp0eXBlZGVm
IHN0cnVjdCBrbW9kX3JlZmVyZW5jZSB7CiAgICBzdHJ1Y3Qga21vZF9yZWZlcmVuY2UgKiBuZXh0
OwogICAgc3RydWN0IGttb2RfaW5mbyAqIGluZm87Cn0ga21vZF9yZWZlcmVuY2VfdDsKIyA4NyAi
L3Vzci9pbmNsdWRlL21hY2gva21vZC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3Qga21vZF9pbmZvIHsK
ICAgIHN0cnVjdCBrbW9kX2luZm8gKiBuZXh0OwogICAgaW50MzJfdCBpbmZvX3ZlcnNpb247CiAg
ICB1aW50MzJfdCBpZDsKICAgIGNoYXIgbmFtZVs2NF07CiAgICBjaGFyIHZlcnNpb25bNjRdOwog
ICAgaW50MzJfdCByZWZlcmVuY2VfY291bnQ7CiAgICBrbW9kX3JlZmVyZW5jZV90ICogcmVmZXJl
bmNlX2xpc3Q7CiAgICB2bV9hZGRyZXNzX3QgYWRkcmVzczsKICAgIHZtX3NpemVfdCBzaXplOwog
ICAgdm1fc2l6ZV90IGhkcl9zaXplOwogICAga21vZF9zdGFydF9mdW5jX3QgKiBzdGFydDsKICAg
IGttb2Rfc3RvcF9mdW5jX3QgKiBzdG9wOwp9IGttb2RfaW5mb190OwoKCgp0eXBlZGVmIHN0cnVj
dCBrbW9kX2luZm9fMzJfdjEgewogICAgdWludDMyX3QgbmV4dF9hZGRyOwogICAgaW50MzJfdCBp
bmZvX3ZlcnNpb247CiAgICB1aW50MzJfdCBpZDsKICAgIHVpbnQ4X3QgbmFtZVs2NF07CiAgICB1
aW50OF90IHZlcnNpb25bNjRdOwogICAgaW50MzJfdCByZWZlcmVuY2VfY291bnQ7CiAgICB1aW50
MzJfdCByZWZlcmVuY2VfbGlzdF9hZGRyOwogICAgdWludDMyX3QgYWRkcmVzczsKICAgIHVpbnQz
Ml90IHNpemU7CiAgICB1aW50MzJfdCBoZHJfc2l6ZTsKICAgIHVpbnQzMl90IHN0YXJ0X2FkZHI7
CiAgICB1aW50MzJfdCBzdG9wX2FkZHI7Cn0ga21vZF9pbmZvXzMyX3YxX3Q7CgoKCnR5cGVkZWYg
c3RydWN0IGttb2RfaW5mb182NF92MSB7CiAgICB1aW50NjRfdCBuZXh0X2FkZHI7CiAgICBpbnQz
Ml90IGluZm9fdmVyc2lvbjsKICAgIHVpbnQzMl90IGlkOwogICAgdWludDhfdCBuYW1lWzY0XTsK
ICAgIHVpbnQ4X3QgdmVyc2lvbls2NF07CiAgICBpbnQzMl90IHJlZmVyZW5jZV9jb3VudDsKICAg
IHVpbnQ2NF90IHJlZmVyZW5jZV9saXN0X2FkZHI7CiAgICB1aW50NjRfdCBhZGRyZXNzOwogICAg
dWludDY0X3Qgc2l6ZTsKICAgIHVpbnQ2NF90IGhkcl9zaXplOwogICAgdWludDY0X3Qgc3RhcnRf
YWRkcjsKICAgIHVpbnQ2NF90IHN0b3BfYWRkcjsKfSBrbW9kX2luZm9fNjRfdjFfdDsKCiNwcmFn
bWEgcGFjaygpCgoKCgoKCgojZGVmaW5lIEtNT0RfSU5GT19OQU1FIGttb2RfaW5mbwojZGVmaW5l
IEtNT0RfSU5GT19WRVJTSU9OIDEKCiNkZWZpbmUgS01PRF9ERUNMKG5hbWUsdmVyc2lvbikgc3Rh
dGljIGttb2Rfc3RhcnRfZnVuY190IG5hbWUgIyMgX21vZHVsZV9zdGFydDsgc3RhdGljIGttb2Rf
c3RvcF9mdW5jX3QgbmFtZSAjIyBfbW9kdWxlX3N0b3A7IGttb2RfaW5mb190IEtNT0RfSU5GT19O
QU1FID0geyAwLCBLTU9EX0lORk9fVkVSU0lPTiwgLTFVLCB7ICNuYW1lIH0sIHsgdmVyc2lvbiB9
LCAtMSwgMCwgMCwgMCwgMCwgbmFtZSAjIyBfbW9kdWxlX3N0YXJ0LCBuYW1lICMjIF9tb2R1bGVf
c3RvcCB9OwoKCgoKCgoKI2RlZmluZSBLTU9EX0VYUExJQ0lUX0RFQ0wobmFtZSx2ZXJzaW9uLHN0
YXJ0LHN0b3ApIGttb2RfaW5mb190IEtNT0RfSU5GT19OQU1FID0geyAwLCBLTU9EX0lORk9fVkVS
U0lPTiwgLTFVLCB7ICNuYW1lIH0sIHsgdmVyc2lvbiB9LCAtMSwgMCwgMCwgMCwgMCwgc3RhcnQs
IHN0b3AgfTsKIyAxNzQgIi91c3IvaW5jbHVkZS9tYWNoL2ttb2QuaCIgMyA0CnR5cGVkZWYgdm9p
ZCAqIGttb2RfYXJnc190Owp0eXBlZGVmIGludCBrbW9kX2NvbnRyb2xfZmxhdm9yX3Q7CnR5cGVk
ZWYga21vZF9pbmZvX3QgKiBrbW9kX2luZm9fYXJyYXlfdDsKCn0KIyAxMDkgIi91c3IvaW5jbHVk
ZS9tYWNoL21hY2hfdHlwZXMuaCIgMiAzIDQKCgoKCgoKdHlwZWRlZiBtYWNoX3BvcnRfdCB0YXNr
X3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3QgdGFza19uYW1lX3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3Qg
dGhyZWFkX3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3QgdGhyZWFkX2FjdF90Owp0eXBlZGVmIG1hY2hf
cG9ydF90IGlwY19zcGFjZV90Owp0eXBlZGVmIG1hY2hfcG9ydF90IGhvc3RfdDsKdHlwZWRlZiBt
YWNoX3BvcnRfdCBob3N0X3ByaXZfdDsKdHlwZWRlZiBtYWNoX3BvcnRfdCBob3N0X3NlY3VyaXR5
X3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3QgcHJvY2Vzc29yX3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3Qg
cHJvY2Vzc29yX3NldF90Owp0eXBlZGVmIG1hY2hfcG9ydF90IHByb2Nlc3Nvcl9zZXRfY29udHJv
bF90Owp0eXBlZGVmIG1hY2hfcG9ydF90IHNlbWFwaG9yZV90Owp0eXBlZGVmIG1hY2hfcG9ydF90
IGxvY2tfc2V0X3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3QgbGVkZ2VyX3Q7CnR5cGVkZWYgbWFjaF9w
b3J0X3QgYWxhcm1fdDsKdHlwZWRlZiBtYWNoX3BvcnRfdCBjbG9ja19zZXJ2X3Q7CnR5cGVkZWYg
bWFjaF9wb3J0X3QgY2xvY2tfY3RybF90OwoKCgoKCgoKdHlwZWRlZiBwcm9jZXNzb3Jfc2V0X3Qg
cHJvY2Vzc29yX3NldF9uYW1lX3Q7CgoKCgp0eXBlZGVmIG1hY2hfcG9ydF90IGNsb2NrX3JlcGx5
X3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3QgYm9vdHN0cmFwX3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3Qg
bWVtX2VudHJ5X25hbWVfcG9ydF90Owp0eXBlZGVmIG1hY2hfcG9ydF90IGV4Y2VwdGlvbl9oYW5k
bGVyX3Q7CnR5cGVkZWYgZXhjZXB0aW9uX2hhbmRsZXJfdCAqZXhjZXB0aW9uX2hhbmRsZXJfYXJy
YXlfdDsKdHlwZWRlZiBtYWNoX3BvcnRfdCB2bV90YXNrX2VudHJ5X3Q7CnR5cGVkZWYgbWFjaF9w
b3J0X3QgaW9fbWFzdGVyX3Q7CnR5cGVkZWYgbWFjaF9wb3J0X3QgVU5EU2VydmVyUmVmOwojIDE2
MCAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaF90eXBlcy5oIiAzIDQKdHlwZWRlZiB0YXNrX3QgKnRh
c2tfYXJyYXlfdDsKdHlwZWRlZiB0aHJlYWRfdCAqdGhyZWFkX2FycmF5X3Q7CnR5cGVkZWYgcHJv
Y2Vzc29yX3NldF90ICpwcm9jZXNzb3Jfc2V0X2FycmF5X3Q7CnR5cGVkZWYgcHJvY2Vzc29yX3Nl
dF90ICpwcm9jZXNzb3Jfc2V0X25hbWVfYXJyYXlfdDsKdHlwZWRlZiBwcm9jZXNzb3JfdCAqcHJv
Y2Vzc29yX2FycmF5X3Q7CnR5cGVkZWYgdGhyZWFkX2FjdF90ICp0aHJlYWRfYWN0X2FycmF5X3Q7
CnR5cGVkZWYgbGVkZ2VyX3QgKmxlZGdlcl9hcnJheV90OwoKCgoKCgoKdHlwZWRlZiB0YXNrX3Qg
dGFza19wb3J0X3Q7CnR5cGVkZWYgdGFza19hcnJheV90IHRhc2tfcG9ydF9hcnJheV90Owp0eXBl
ZGVmIHRocmVhZF90IHRocmVhZF9wb3J0X3Q7CnR5cGVkZWYgdGhyZWFkX2FycmF5X3QgdGhyZWFk
X3BvcnRfYXJyYXlfdDsKdHlwZWRlZiBpcGNfc3BhY2VfdCBpcGNfc3BhY2VfcG9ydF90Owp0eXBl
ZGVmIGhvc3RfdCBob3N0X25hbWVfdDsKdHlwZWRlZiBob3N0X3QgaG9zdF9uYW1lX3BvcnRfdDsK
dHlwZWRlZiBwcm9jZXNzb3Jfc2V0X3QgcHJvY2Vzc29yX3NldF9wb3J0X3Q7CnR5cGVkZWYgcHJv
Y2Vzc29yX3NldF90IHByb2Nlc3Nvcl9zZXRfbmFtZV9wb3J0X3Q7CnR5cGVkZWYgcHJvY2Vzc29y
X3NldF9hcnJheV90IHByb2Nlc3Nvcl9zZXRfbmFtZV9wb3J0X2FycmF5X3Q7CnR5cGVkZWYgcHJv
Y2Vzc29yX3NldF90IHByb2Nlc3Nvcl9zZXRfY29udHJvbF9wb3J0X3Q7CnR5cGVkZWYgcHJvY2Vz
c29yX3QgcHJvY2Vzc29yX3BvcnRfdDsKdHlwZWRlZiBwcm9jZXNzb3JfYXJyYXlfdCBwcm9jZXNz
b3JfcG9ydF9hcnJheV90Owp0eXBlZGVmIHRocmVhZF9hY3RfdCB0aHJlYWRfYWN0X3BvcnRfdDsK
dHlwZWRlZiB0aHJlYWRfYWN0X2FycmF5X3QgdGhyZWFkX2FjdF9wb3J0X2FycmF5X3Q7CnR5cGVk
ZWYgc2VtYXBob3JlX3Qgc2VtYXBob3JlX3BvcnRfdDsKdHlwZWRlZiBsb2NrX3NldF90IGxvY2tf
c2V0X3BvcnRfdDsKdHlwZWRlZiBsZWRnZXJfdCBsZWRnZXJfcG9ydF90Owp0eXBlZGVmIGxlZGdl
cl9hcnJheV90IGxlZGdlcl9wb3J0X2FycmF5X3Q7CnR5cGVkZWYgYWxhcm1fdCBhbGFybV9wb3J0
X3Q7CnR5cGVkZWYgY2xvY2tfc2Vydl90IGNsb2NrX3NlcnZfcG9ydF90Owp0eXBlZGVmIGNsb2Nr
X2N0cmxfdCBjbG9ja19jdHJsX3BvcnRfdDsKdHlwZWRlZiBleGNlcHRpb25faGFuZGxlcl90IGV4
Y2VwdGlvbl9wb3J0X3Q7CnR5cGVkZWYgZXhjZXB0aW9uX2hhbmRsZXJfYXJyYXlfdCBleGNlcHRp
b25fcG9ydF9hcnJhcnlfdDsKCgojZGVmaW5lIFRBU0tfTlVMTCAoKHRhc2tfdCkgMCkKI2RlZmlu
ZSBUQVNLX05BTUVfTlVMTCAoKHRhc2tfbmFtZV90KSAwKQojZGVmaW5lIFRIUkVBRF9OVUxMICgo
dGhyZWFkX3QpIDApCiNkZWZpbmUgVEhSX0FDVF9OVUxMICgodGhyZWFkX2FjdF90KSAwKQojZGVm
aW5lIElQQ19TUEFDRV9OVUxMICgoaXBjX3NwYWNlX3QpIDApCiNkZWZpbmUgSE9TVF9OVUxMICgo
aG9zdF90KSAwKQojZGVmaW5lIEhPU1RfUFJJVl9OVUxMICgoaG9zdF9wcml2X3QpMCkKI2RlZmlu
ZSBIT1NUX1NFQ1VSSVRZX05VTEwgKChob3N0X3NlY3VyaXR5X3QpMCkKI2RlZmluZSBQUk9DRVNT
T1JfU0VUX05VTEwgKChwcm9jZXNzb3Jfc2V0X3QpIDApCiNkZWZpbmUgUFJPQ0VTU09SX05VTEwg
KChwcm9jZXNzb3JfdCkgMCkKI2RlZmluZSBTRU1BUEhPUkVfTlVMTCAoKHNlbWFwaG9yZV90KSAw
KQojZGVmaW5lIExPQ0tfU0VUX05VTEwgKChsb2NrX3NldF90KSAwKQojZGVmaW5lIExFREdFUl9O
VUxMICgobGVkZ2VyX3QpIDApCiNkZWZpbmUgQUxBUk1fTlVMTCAoKGFsYXJtX3QpIDApCiNkZWZp
bmUgQ0xPQ0tfTlVMTCAoKGNsb2NrX3QpIDApCiNkZWZpbmUgVU5EX1NFUlZFUl9OVUxMICgoVU5E
U2VydmVyUmVmKSAwKQoKdHlwZWRlZiBuYXR1cmFsX3QgbGVkZ2VyX2l0ZW1fdDsKI2RlZmluZSBM
RURHRVJfSVRFTV9JTkZJTklUWSAoKGxlZGdlcl9pdGVtX3QpICh+MCkpCgp0eXBlZGVmIG1hY2hf
dm1fb2Zmc2V0X3QgKmVtdWxhdGlvbl92ZWN0b3JfdDsKdHlwZWRlZiBjaGFyICp1c2VyX3N1YnN5
c3RlbV90OwoKdHlwZWRlZiBjaGFyICpsYWJlbHN0cl90OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
bWFjaC9zdGRfdHlwZXMuaCIgMSAzIDQKIyA2NCAiL3Vzci9pbmNsdWRlL21hY2gvc3RkX3R5cGVz
LmgiIDMgNAojZGVmaW5lIF9NQUNIX1NURF9UWVBFU19IXyAKIyAyMjkgIi91c3IvaW5jbHVkZS9t
YWNoL21hY2hfdHlwZXMuaCIgMiAzIDQKIyA0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
SU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRl
L21hY2gvbWFjaF9pbml0LmgiIDEgMyA0CiMgNTkgIi91c3IvaW5jbHVkZS9tYWNoL21hY2hfaW5p
dC5oIiAzIDQKI2RlZmluZSBfTUFDSF9JTklUXyAxCiMgNzAgIi91c3IvaW5jbHVkZS9tYWNoL21h
Y2hfaW5pdC5oIiAzIDQKZXh0ZXJuICJDIiB7CmV4dGVybiBtYWNoX3BvcnRfdCBtYWNoX3Rhc2tf
c2VsZih2b2lkKTsKZXh0ZXJuIG1hY2hfcG9ydF90IG1hY2hfaG9zdF9zZWxmKHZvaWQpOwpleHRl
cm4gbWFjaF9wb3J0X3QgbWFjaF90aHJlYWRfc2VsZih2b2lkKTsKZXh0ZXJuIGtlcm5fcmV0dXJu
X3QgaG9zdF9wYWdlX3NpemUoaG9zdF90LCB2bV9zaXplX3QgKik7CgpleHRlcm4gbWFjaF9wb3J0
X3QgbWFjaF90YXNrX3NlbGZfOwojZGVmaW5lIG1hY2hfdGFza19zZWxmKCkgbWFjaF90YXNrX3Nl
bGZfCiNkZWZpbmUgY3VycmVudF90YXNrKCkgbWFjaF90YXNrX3NlbGYoKQoKfQojIDEgIi91c3Iv
aW5jbHVkZS9tYWNoL21hY2hfdHJhcHMuaCIgMSAzIDQKIyA2NyAiL3Vzci9pbmNsdWRlL21hY2gv
bWFjaF90cmFwcy5oIiAzIDQKI2RlZmluZSBfTUFDSF9NQUNIX1RSQVBTX0hfIAojIDgyICIvdXNy
L2luY2x1ZGUvbWFjaC9tYWNoX3RyYXBzLmgiIDMgNApleHRlcm4gIkMiIHsKCgoKZXh0ZXJuIGtl
cm5fcmV0dXJuX3QgbWFjeF9zd2Fwb24oCiAgICB1aW50NjRfdCBmaWxlbmFtZSwKICAgIGludCBm
bGFncywKICAgIGludCBzaXplLAogICAgaW50IHByaW9yaXR5KTsKCmV4dGVybiBrZXJuX3JldHVy
bl90IG1hY3hfc3dhcG9mZigKICAgIHVpbnQ2NF90IGZpbGVuYW1lLAogICAgaW50IGZsYWdzKTsK
CmV4dGVybiBrZXJuX3JldHVybl90IG1hY3hfdHJpZ2dlcnMoCiAgICBpbnQgaGlfd2F0ZXIsCiAg
ICBpbnQgbG93X3dhdGVyLAogICAgaW50IGZsYWdzLAogICAgbWFjaF9wb3J0X3QgYWxlcnRfcG9y
dCk7CgpleHRlcm4ga2Vybl9yZXR1cm5fdCBtYWN4X2JhY2tpbmdfc3RvcmVfc3VzcGVuZCgKICAg
IGJvb2xlYW5fdCBzdXNwZW5kKTsKCmV4dGVybiBrZXJuX3JldHVybl90IG1hY3hfYmFja2luZ19z
dG9yZV9yZWNvdmVyeSgKICAgIGludCBwaWQpOwoKZXh0ZXJuIGJvb2xlYW5fdCBzd3RjaF9wcmko
aW50IHByaSk7CgpleHRlcm4gYm9vbGVhbl90IHN3dGNoKHZvaWQpOwoKZXh0ZXJuIGtlcm5fcmV0
dXJuX3QgdGhyZWFkX3N3aXRjaCgKICAgIG1hY2hfcG9ydF9uYW1lX3QgdGhyZWFkX25hbWUsCiAg
ICBpbnQgb3B0aW9uLAogICAgbWFjaF9tc2dfdGltZW91dF90IG9wdGlvbl90aW1lKTsKCmV4dGVy
biBtYWNoX3BvcnRfbmFtZV90IHRhc2tfc2VsZl90cmFwKHZvaWQpOwoKCgoKCmV4dGVybiBrZXJu
X3JldHVybl90IHRhc2tfZm9yX3BpZCgKICAgIG1hY2hfcG9ydF9uYW1lX3QgdGFyZ2V0X3Rwb3J0
LAogICAgaW50IHBpZCwKICAgIG1hY2hfcG9ydF9uYW1lX3QgKnQpOwoKZXh0ZXJuIGtlcm5fcmV0
dXJuX3QgdGFza19uYW1lX2Zvcl9waWQoCiAgICBtYWNoX3BvcnRfbmFtZV90IHRhcmdldF90cG9y
dCwKICAgIGludCBwaWQsCiAgICBtYWNoX3BvcnRfbmFtZV90ICp0bik7CgpleHRlcm4ga2Vybl9y
ZXR1cm5fdCBwaWRfZm9yX3Rhc2soCiAgICBtYWNoX3BvcnRfbmFtZV90IHQsCiAgICBpbnQgKngp
OwojIDE1MCAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaF90cmFwcy5oIiAzIDQKfQojIDgyICIvdXNy
L2luY2x1ZGUvbWFjaC9tYWNoX2luaXQuaCIgMiAzIDQKZXh0ZXJuICJDIiB7CgoKCgoKZXh0ZXJu
IG1hY2hfcG9ydF90IGJvb3RzdHJhcF9wb3J0OwpleHRlcm4gbWFjaF9wb3J0X3QgbmFtZV9zZXJ2
ZXJfcG9ydDsKZXh0ZXJuIG1hY2hfcG9ydF90IGVudmlyb25tZW50X3BvcnQ7CmV4dGVybiBtYWNo
X3BvcnRfdCBzZXJ2aWNlX3BvcnQ7CgoKCgoKCiNkZWZpbmUgTkFNRV9TRVJWRVJfU0xPVCAwCiNk
ZWZpbmUgRU5WSVJPTk1FTlRfU0xPVCAxCiNkZWZpbmUgU0VSVklDRV9TTE9UIDIKCiNkZWZpbmUg
TUFDSF9QT1JUU19TTE9UU19VU0VEIDMKCgoKCgoKZXh0ZXJuIHZtX3NpemVfdCB2bV9wYWdlX3Np
emU7CmV4dGVybiB2bV9zaXplX3Qgdm1fcGFnZV9tYXNrOwpleHRlcm4gaW50IHZtX3BhZ2Vfc2hp
ZnQ7CgojZGVmaW5lIHRydW5jX3BhZ2UoeCkgKCh4KSAmICh+KHZtX3BhZ2Vfc2l6ZSAtIDEpKSkK
I2RlZmluZSByb3VuZF9wYWdlKHgpIHRydW5jX3BhZ2UoKHgpICsgKHZtX3BhZ2Vfc2l6ZSAtIDEp
KQoKCgoKI2RlZmluZSBtYWNoX3ZtX3RydW5jX3BhZ2UoeCkgKChtYWNoX3ZtX29mZnNldF90KSh4
KSAmIH4oKHNpZ25lZClQQUdFX01BU0spKQojZGVmaW5lIG1hY2hfdm1fcm91bmRfcGFnZSh4KSAo
KChtYWNoX3ZtX29mZnNldF90KSh4KSArIFBBR0VfTUFTSykgJiB+KChzaWduZWQpUEFHRV9NQVNL
KSkKCgoKCgoKZXh0ZXJuIGludCAoKnZwcmludGZfc3RkZXJyX2Z1bmMpKGNvbnN0IGNoYXIgKmZv
cm1hdCwgdmFfbGlzdCBhcCk7Cn0KIyA0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9L
aXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMiAzCgoKCgoKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT1R5cGVzLmgiIDEgMwoj
IDI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9J
T1R5cGVzLmgiIDMKI2RlZmluZSBfX0lPS0lUX0lPVFlQRVNfSCAKCgojZGVmaW5lIElPS0lUIDEK
CgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFk
ZXJzL0lPUmV0dXJuLmgiIDEgMwojIDM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tp
dC5mcmFtZXdvcmsvSGVhZGVycy9JT1JldHVybi5oIiAzCiNkZWZpbmUgX19JT0tJVF9JT1JFVFVS
Tl9IIAoKCmV4dGVybiAiQyIgewoKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvZXJyb3IuaCIgMSAz
IDQKIyA2NiAiL3Vzci9pbmNsdWRlL21hY2gvZXJyb3IuaCIgMyA0CiNkZWZpbmUgX01BQ0hfRVJS
T1JfSF8gCiMgNzggIi91c3IvaW5jbHVkZS9tYWNoL2Vycm9yLmgiIDMgNAojZGVmaW5lIGVycl9u
b25lIChtYWNoX2Vycm9yX3QpMAojZGVmaW5lIEVSUl9TVUNDRVNTIChtYWNoX2Vycm9yX3QpMAoj
ZGVmaW5lIEVSUl9ST1VUSU5FX05JTCAobWFjaF9lcnJvcl9mbl90KTAKCgojZGVmaW5lIGVycl9z
eXN0ZW0oeCkgKCgoeCkmMHgzZik8PDI2KQojZGVmaW5lIGVycl9zdWIoeCkgKCgoeCkmMHhmZmYp
PDwxNCkKCiNkZWZpbmUgZXJyX2dldF9zeXN0ZW0oZXJyKSAoKChlcnIpPj4yNikmMHgzZikKI2Rl
ZmluZSBlcnJfZ2V0X3N1YihlcnIpICgoKGVycik+PjE0KSYweGZmZikKI2RlZmluZSBlcnJfZ2V0
X2NvZGUoZXJyKSAoKGVycikmMHgzZmZmKQoKI2RlZmluZSBzeXN0ZW1fZW1hc2sgKGVycl9zeXN0
ZW0oMHgzZikpCiNkZWZpbmUgc3ViX2VtYXNrIChlcnJfc3ViKDB4ZmZmKSkKI2RlZmluZSBjb2Rl
X2VtYXNrICgweDNmZmYpCgoKCiNkZWZpbmUgZXJyX2tlcm4gZXJyX3N5c3RlbSgweDApCiNkZWZp
bmUgZXJyX3VzIGVycl9zeXN0ZW0oMHgxKQojZGVmaW5lIGVycl9zZXJ2ZXIgZXJyX3N5c3RlbSgw
eDIpCiNkZWZpbmUgZXJyX2lwYyBlcnJfc3lzdGVtKDB4MykKI2RlZmluZSBlcnJfbWFjaF9pcGMg
ZXJyX3N5c3RlbSgweDQpCiNkZWZpbmUgZXJyX2RpcGMgZXJyX3N5c3RlbSgweDcpCiNkZWZpbmUg
ZXJyX2xvY2FsIGVycl9zeXN0ZW0oMHgzZSkKI2RlZmluZSBlcnJfaXBjX2NvbXBhdCBlcnJfc3lz
dGVtKDB4M2YpCgojZGVmaW5lIGVycl9tYXhfc3lzdGVtIDB4M2YKCgoKI2RlZmluZSB1bml4X2Vy
cihlcnJubykgKGVycl9rZXJufGVycl9zdWIoMyl8ZXJybm8pCgp0eXBlZGVmIGtlcm5fcmV0dXJu
X3QgbWFjaF9lcnJvcl90Owp0eXBlZGVmIG1hY2hfZXJyb3JfdCAoKiBtYWNoX2Vycm9yX2ZuX3Qp
KCB2b2lkICk7CiMgNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29y
ay9IZWFkZXJzL0lPUmV0dXJuLmgiIDIgMwoKdHlwZWRlZiBrZXJuX3JldHVybl90IElPUmV0dXJu
OwoKCiNkZWZpbmUgc3lzX2lva2l0IGVycl9zeXN0ZW0oMHgzOCkKCiNkZWZpbmUgc3ViX2lva2l0
X2NvbW1vbiBlcnJfc3ViKDApCiNkZWZpbmUgc3ViX2lva2l0X3VzYiBlcnJfc3ViKDEpCiNkZWZp
bmUgc3ViX2lva2l0X2ZpcmV3aXJlIGVycl9zdWIoMikKI2RlZmluZSBzdWJfaW9raXRfYmxvY2tf
c3RvcmFnZSBlcnJfc3ViKDQpCiNkZWZpbmUgc3ViX2lva2l0X2dyYXBoaWNzIGVycl9zdWIoNSkK
I2RlZmluZSBzdWJfaW9raXRfbmV0d29ya2luZyBlcnJfc3ViKDYpCiNkZWZpbmUgc3ViX2lva2l0
X2JsdWV0b290aCBlcnJfc3ViKDgpCiNkZWZpbmUgc3ViX2lva2l0X3BtdSBlcnJfc3ViKDkpCiNk
ZWZpbmUgc3ViX2lva2l0X2FjcGkgZXJyX3N1YigxMCkKI2RlZmluZSBzdWJfaW9raXRfc21idXMg
ZXJyX3N1YigxMSkKI2RlZmluZSBzdWJfaW9raXRfYWhjaSBlcnJfc3ViKDEyKQojZGVmaW5lIHN1
Yl9pb2tpdF9wb3dlcm1hbmFnZW1lbnQgZXJyX3N1YigxMykKCiNkZWZpbmUgc3ViX2lva2l0X3Nj
c2kgZXJyX3N1YigxNikKCgojZGVmaW5lIHN1Yl9pb2tpdF92ZW5kb3Jfc3BlY2lmaWMgZXJyX3N1
YigtMikKI2RlZmluZSBzdWJfaW9raXRfcmVzZXJ2ZWQgZXJyX3N1YigtMSkKCiNkZWZpbmUgaW9r
aXRfY29tbW9uX2VycihyZXR1cm4pIChzeXNfaW9raXR8c3ViX2lva2l0X2NvbW1vbnxyZXR1cm4p
CiNkZWZpbmUgaW9raXRfZmFtaWx5X2VycihzdWIscmV0dXJuKSAoc3lzX2lva2l0fHN1YnxyZXR1
cm4pCiNkZWZpbmUgaW9raXRfdmVuZG9yX3NwZWNpZmljX2VycihyZXR1cm4pIChzeXNfaW9raXR8
c3ViX2lva2l0X3ZlbmRvcl9zcGVjaWZpY3xyZXR1cm4pCgojZGVmaW5lIGtJT1JldHVyblN1Y2Nl
c3MgS0VSTl9TVUNDRVNTCiNkZWZpbmUga0lPUmV0dXJuRXJyb3IgaW9raXRfY29tbW9uX2Vycigw
eDJiYykKI2RlZmluZSBrSU9SZXR1cm5Ob01lbW9yeSBpb2tpdF9jb21tb25fZXJyKDB4MmJkKQoj
ZGVmaW5lIGtJT1JldHVybk5vUmVzb3VyY2VzIGlva2l0X2NvbW1vbl9lcnIoMHgyYmUpCiNkZWZp
bmUga0lPUmV0dXJuSVBDRXJyb3IgaW9raXRfY29tbW9uX2VycigweDJiZikKI2RlZmluZSBrSU9S
ZXR1cm5Ob0RldmljZSBpb2tpdF9jb21tb25fZXJyKDB4MmMwKQojZGVmaW5lIGtJT1JldHVybk5v
dFByaXZpbGVnZWQgaW9raXRfY29tbW9uX2VycigweDJjMSkKI2RlZmluZSBrSU9SZXR1cm5CYWRB
cmd1bWVudCBpb2tpdF9jb21tb25fZXJyKDB4MmMyKQojZGVmaW5lIGtJT1JldHVybkxvY2tlZFJl
YWQgaW9raXRfY29tbW9uX2VycigweDJjMykKI2RlZmluZSBrSU9SZXR1cm5Mb2NrZWRXcml0ZSBp
b2tpdF9jb21tb25fZXJyKDB4MmM0KQojZGVmaW5lIGtJT1JldHVybkV4Y2x1c2l2ZUFjY2VzcyBp
b2tpdF9jb21tb25fZXJyKDB4MmM1KQoKI2RlZmluZSBrSU9SZXR1cm5CYWRNZXNzYWdlSUQgaW9r
aXRfY29tbW9uX2VycigweDJjNikKCiNkZWZpbmUga0lPUmV0dXJuVW5zdXBwb3J0ZWQgaW9raXRf
Y29tbW9uX2VycigweDJjNykKI2RlZmluZSBrSU9SZXR1cm5WTUVycm9yIGlva2l0X2NvbW1vbl9l
cnIoMHgyYzgpCiNkZWZpbmUga0lPUmV0dXJuSW50ZXJuYWxFcnJvciBpb2tpdF9jb21tb25fZXJy
KDB4MmM5KQojZGVmaW5lIGtJT1JldHVybklPRXJyb3IgaW9raXRfY29tbW9uX2VycigweDJjYSkK
CiNkZWZpbmUga0lPUmV0dXJuQ2Fubm90TG9jayBpb2tpdF9jb21tb25fZXJyKDB4MmNjKQojZGVm
aW5lIGtJT1JldHVybk5vdE9wZW4gaW9raXRfY29tbW9uX2VycigweDJjZCkKI2RlZmluZSBrSU9S
ZXR1cm5Ob3RSZWFkYWJsZSBpb2tpdF9jb21tb25fZXJyKDB4MmNlKQojZGVmaW5lIGtJT1JldHVy
bk5vdFdyaXRhYmxlIGlva2l0X2NvbW1vbl9lcnIoMHgyY2YpCiNkZWZpbmUga0lPUmV0dXJuTm90
QWxpZ25lZCBpb2tpdF9jb21tb25fZXJyKDB4MmQwKQojZGVmaW5lIGtJT1JldHVybkJhZE1lZGlh
IGlva2l0X2NvbW1vbl9lcnIoMHgyZDEpCiNkZWZpbmUga0lPUmV0dXJuU3RpbGxPcGVuIGlva2l0
X2NvbW1vbl9lcnIoMHgyZDIpCiNkZWZpbmUga0lPUmV0dXJuUkxERXJyb3IgaW9raXRfY29tbW9u
X2VycigweDJkMykKI2RlZmluZSBrSU9SZXR1cm5ETUFFcnJvciBpb2tpdF9jb21tb25fZXJyKDB4
MmQ0KQojZGVmaW5lIGtJT1JldHVybkJ1c3kgaW9raXRfY29tbW9uX2VycigweDJkNSkKI2RlZmlu
ZSBrSU9SZXR1cm5UaW1lb3V0IGlva2l0X2NvbW1vbl9lcnIoMHgyZDYpCiNkZWZpbmUga0lPUmV0
dXJuT2ZmbGluZSBpb2tpdF9jb21tb25fZXJyKDB4MmQ3KQojZGVmaW5lIGtJT1JldHVybk5vdFJl
YWR5IGlva2l0X2NvbW1vbl9lcnIoMHgyZDgpCiNkZWZpbmUga0lPUmV0dXJuTm90QXR0YWNoZWQg
aW9raXRfY29tbW9uX2VycigweDJkOSkKI2RlZmluZSBrSU9SZXR1cm5Ob0NoYW5uZWxzIGlva2l0
X2NvbW1vbl9lcnIoMHgyZGEpCiNkZWZpbmUga0lPUmV0dXJuTm9TcGFjZSBpb2tpdF9jb21tb25f
ZXJyKDB4MmRiKQoKI2RlZmluZSBrSU9SZXR1cm5Qb3J0RXhpc3RzIGlva2l0X2NvbW1vbl9lcnIo
MHgyZGQpCiNkZWZpbmUga0lPUmV0dXJuQ2Fubm90V2lyZSBpb2tpdF9jb21tb25fZXJyKDB4MmRl
KQoKI2RlZmluZSBrSU9SZXR1cm5Ob0ludGVycnVwdCBpb2tpdF9jb21tb25fZXJyKDB4MmRmKQoj
ZGVmaW5lIGtJT1JldHVybk5vRnJhbWVzIGlva2l0X2NvbW1vbl9lcnIoMHgyZTApCiNkZWZpbmUg
a0lPUmV0dXJuTWVzc2FnZVRvb0xhcmdlIGlva2l0X2NvbW1vbl9lcnIoMHgyZTEpCgojZGVmaW5l
IGtJT1JldHVybk5vdFBlcm1pdHRlZCBpb2tpdF9jb21tb25fZXJyKDB4MmUyKQojZGVmaW5lIGtJ
T1JldHVybk5vUG93ZXIgaW9raXRfY29tbW9uX2VycigweDJlMykKI2RlZmluZSBrSU9SZXR1cm5O
b01lZGlhIGlva2l0X2NvbW1vbl9lcnIoMHgyZTQpCiNkZWZpbmUga0lPUmV0dXJuVW5mb3JtYXR0
ZWRNZWRpYSBpb2tpdF9jb21tb25fZXJyKDB4MmU1KQojZGVmaW5lIGtJT1JldHVyblVuc3VwcG9y
dGVkTW9kZSBpb2tpdF9jb21tb25fZXJyKDB4MmU2KQojZGVmaW5lIGtJT1JldHVyblVuZGVycnVu
IGlva2l0X2NvbW1vbl9lcnIoMHgyZTcpCiNkZWZpbmUga0lPUmV0dXJuT3ZlcnJ1biBpb2tpdF9j
b21tb25fZXJyKDB4MmU4KQojZGVmaW5lIGtJT1JldHVybkRldmljZUVycm9yIGlva2l0X2NvbW1v
bl9lcnIoMHgyZTkpCiNkZWZpbmUga0lPUmV0dXJuTm9Db21wbGV0aW9uIGlva2l0X2NvbW1vbl9l
cnIoMHgyZWEpCiNkZWZpbmUga0lPUmV0dXJuQWJvcnRlZCBpb2tpdF9jb21tb25fZXJyKDB4MmVi
KQojZGVmaW5lIGtJT1JldHVybk5vQmFuZHdpZHRoIGlva2l0X2NvbW1vbl9lcnIoMHgyZWMpCiNk
ZWZpbmUga0lPUmV0dXJuTm90UmVzcG9uZGluZyBpb2tpdF9jb21tb25fZXJyKDB4MmVkKQojZGVm
aW5lIGtJT1JldHVybklzb1Rvb09sZCBpb2tpdF9jb21tb25fZXJyKDB4MmVlKQojZGVmaW5lIGtJ
T1JldHVybklzb1Rvb05ldyBpb2tpdF9jb21tb25fZXJyKDB4MmVmKQojZGVmaW5lIGtJT1JldHVy
bk5vdEZvdW5kIGlva2l0X2NvbW1vbl9lcnIoMHgyZjApCiNkZWZpbmUga0lPUmV0dXJuSW52YWxp
ZCBpb2tpdF9jb21tb25fZXJyKDB4MSkKCgp9CiMgMzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPVHlwZXMuaCIgMiAzCgoKZXh0ZXJuICJDIiB7
CiMgNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJz
L0lPVHlwZXMuaCIgMwp0eXBlZGVmIFVJbnQzMiBJT09wdGlvbkJpdHM7CnR5cGVkZWYgU0ludDMy
IElPRml4ZWQ7CnR5cGVkZWYgVUludDMyIElPVmVyc2lvbjsKdHlwZWRlZiBVSW50MzIgSU9JdGVt
Q291bnQ7CnR5cGVkZWYgVUludDMyIElPQ2FjaGVNb2RlOwoKdHlwZWRlZiBVSW50MzIgSU9CeXRl
Q291bnQzMjsKdHlwZWRlZiBVSW50NjQgSU9CeXRlQ291bnQ2NDsKCnR5cGVkZWYgVUludDMyIElP
UGh5c2ljYWxBZGRyZXNzMzI7CnR5cGVkZWYgVUludDY0IElPUGh5c2ljYWxBZGRyZXNzNjQ7CnR5
cGVkZWYgVUludDMyIElPUGh5c2ljYWxMZW5ndGgzMjsKdHlwZWRlZiBVSW50NjQgSU9QaHlzaWNh
bExlbmd0aDY0OwoKCnR5cGVkZWYgbWFjaF92bV9hZGRyZXNzX3QgSU9WaXJ0dWFsQWRkcmVzczsK
CgoKCgoKCnR5cGVkZWYgSU9CeXRlQ291bnQzMiBJT0J5dGVDb3VudDsKCgp0eXBlZGVmIElPVmly
dHVhbEFkZHJlc3MgSU9Mb2dpY2FsQWRkcmVzczsKIyAxMDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPVHlwZXMuaCIgMwp0eXBlZGVmIElPUGh5
c2ljYWxBZGRyZXNzMzIgSU9QaHlzaWNhbEFkZHJlc3M7CnR5cGVkZWYgSU9QaHlzaWNhbExlbmd0
aDMyIElPUGh5c2ljYWxMZW5ndGg7CiNkZWZpbmUgSU9QaHlzaWNhbDMyKGhpLGxvKSAobG8pCiNk
ZWZpbmUgSU9QaHlzU2l6ZSAzMgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogICAgSU9QaHlzaWNhbEFk
ZHJlc3MgYWRkcmVzczsKICAgIElPQnl0ZUNvdW50IGxlbmd0aDsKfSBJT1BoeXNpY2FsUmFuZ2U7
Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBJT1ZpcnR1YWxBZGRyZXNzIGFkZHJlc3M7CiAgICBJT0J5
dGVDb3VudCBsZW5ndGg7Cn0gSU9WaXJ0dWFsUmFuZ2U7CgoKdHlwZWRlZiBJT1ZpcnR1YWxSYW5n
ZSBJT0FkZHJlc3NSYW5nZTsKIyAxMzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0
LmZyYW1ld29yay9IZWFkZXJzL0lPVHlwZXMuaCIgMwp0eXBlZGVmIHN0cnVjdCB7CiBpbnQgdmFs
dWU7CiBjb25zdCBjaGFyICpuYW1lOwp9IElPTmFtZWRWYWx1ZTsKCgoKCgp0eXBlZGVmIHVuc2ln
bmVkIGludCBJT0FsaWdubWVudDsKCiNkZWZpbmUgSU9fTlVMTF9WTV9UQVNLICgodm1fdGFza190
KTApCiMgMTU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVh
ZGVycy9JT1R5cGVzLmgiIDMKI2RlZmluZSBfX0lPS0lUX1BPUlRTX0RFRklORURfXyAKdHlwZWRl
ZiBtYWNoX3BvcnRfdCBpb19vYmplY3RfdDsKCgojIDEgIi91c3IvaW5jbHVkZS9kZXZpY2UvZGV2
aWNlX3R5cGVzLmgiIDEgMyA0CiMgNjQgIi91c3IvaW5jbHVkZS9kZXZpY2UvZGV2aWNlX3R5cGVz
LmgiIDMgNAojZGVmaW5lIERFVklDRV9UWVBFU19IIAojIDc3ICIvdXNyL2luY2x1ZGUvZGV2aWNl
L2RldmljZV90eXBlcy5oIiAzIDQKdHlwZWRlZiBjaGFyICogaW9fYnVmX3B0cl90OwojIDg2ICIv
dXNyL2luY2x1ZGUvZGV2aWNlL2RldmljZV90eXBlcy5oIiAzIDQKdHlwZWRlZiBjaGFyIGlvX25h
bWVfdFsxMjhdOwp0eXBlZGVmIGNoYXIgaW9fc3RyaW5nX3RbNTEyXTsKdHlwZWRlZiBjaGFyIGlv
X3N0cnVjdF9pbmJhbmRfdFs0MDk2XTsKCgp0eXBlZGVmIHVpbnQ2NF90IGlvX3VzZXJfc2NhbGFy
X3Q7CnR5cGVkZWYgdWludDY0X3QgaW9fdXNlcl9yZWZlcmVuY2VfdDsKdHlwZWRlZiBpb191c2Vy
X3NjYWxhcl90IGlvX3NjYWxhcl9pbmJhbmRfdFsxNl07CnR5cGVkZWYgaW9fdXNlcl9yZWZlcmVu
Y2VfdCBpb19hc3luY19yZWZfdFs4XTsKdHlwZWRlZiBpb191c2VyX3NjYWxhcl90IGlvX3NjYWxh
cl9pbmJhbmQ2NF90WzE2XTsKdHlwZWRlZiBpb191c2VyX3JlZmVyZW5jZV90IGlvX2FzeW5jX3Jl
ZjY0X3RbOF07CiMgMTYzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdv
cmsvSGVhZGVycy9JT1R5cGVzLmgiIDIgMwoKdHlwZWRlZiBpb19vYmplY3RfdCBpb19jb25uZWN0
X3Q7CnR5cGVkZWYgaW9fb2JqZWN0X3QgaW9fZW51bWVyYXRvcl90Owp0eXBlZGVmIGlvX29iamVj
dF90IGlvX2l0ZXJhdG9yX3Q7CnR5cGVkZWYgaW9fb2JqZWN0X3QgaW9fcmVnaXN0cnlfZW50cnlf
dDsKdHlwZWRlZiBpb19vYmplY3RfdCBpb19zZXJ2aWNlX3Q7CgojZGVmaW5lIElPX09CSkVDVF9O
VUxMICgoaW9fb2JqZWN0X3QpIDApCgoKCgplbnVtIHsKICAgIGtJT0RlZmF1bHRNZW1vcnlUeXBl
ID0gMAp9OwoKZW51bSB7CiAgICBrSU9EZWZhdWx0Q2FjaGUgPSAwLAogICAga0lPSW5oaWJpdENh
Y2hlID0gMSwKICAgIGtJT1dyaXRlVGhydUNhY2hlID0gMiwKICAgIGtJT0NvcHliYWNrQ2FjaGUg
PSAzLAogICAga0lPV3JpdGVDb21iaW5lQ2FjaGUgPSA0Cn07CgoKZW51bSB7CiAgICBrSU9NYXBB
bnl3aGVyZSA9IDB4MDAwMDAwMDEsCgogICAga0lPTWFwQ2FjaGVNYXNrID0gMHgwMDAwMDcwMCwK
ICAgIGtJT01hcENhY2hlU2hpZnQgPSA4LAogICAga0lPTWFwRGVmYXVsdENhY2hlID0ga0lPRGVm
YXVsdENhY2hlIDw8IGtJT01hcENhY2hlU2hpZnQsCiAgICBrSU9NYXBJbmhpYml0Q2FjaGUgPSBr
SU9JbmhpYml0Q2FjaGUgPDwga0lPTWFwQ2FjaGVTaGlmdCwKICAgIGtJT01hcFdyaXRlVGhydUNh
Y2hlID0ga0lPV3JpdGVUaHJ1Q2FjaGUgPDwga0lPTWFwQ2FjaGVTaGlmdCwKICAgIGtJT01hcENv
cHliYWNrQ2FjaGUgPSBrSU9Db3B5YmFja0NhY2hlIDw8IGtJT01hcENhY2hlU2hpZnQsCiAgICBr
SU9NYXBXcml0ZUNvbWJpbmVDYWNoZSA9IGtJT1dyaXRlQ29tYmluZUNhY2hlIDw8IGtJT01hcENh
Y2hlU2hpZnQsCgogICAga0lPTWFwVXNlck9wdGlvbnNNYXNrID0gMHgwMDAwMGZmZiwKCiAgICBr
SU9NYXBSZWFkT25seSA9IDB4MDAwMDEwMDAsCgogICAga0lPTWFwU3RhdGljID0gMHgwMTAwMDAw
MCwKICAgIGtJT01hcFJlZmVyZW5jZSA9IDB4MDIwMDAwMDAsCiAgICBrSU9NYXBVbmlxdWUgPSAw
eDA0MDAwMDAwCn07CiMgMjE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFt
ZXdvcmsvSGVhZGVycy9JT1R5cGVzLmgiIDMKZW51bSB7CiAgICBrTmFub3NlY29uZFNjYWxlID0g
MSwKICAgIGtNaWNyb3NlY29uZFNjYWxlID0gMTAwMCwKICAgIGtNaWxsaXNlY29uZFNjYWxlID0g
MTAwMCAqIDEwMDAsCiAgICBrU2Vjb25kU2NhbGUgPSAxMDAwICogMTAwMCAqIDEwMDAsCiAgICBr
VGlja1NjYWxlID0gKGtTZWNvbmRTY2FsZSAvIDEwMCkKfTsKCgoKCnR5cGVkZWYgdW5zaWduZWQg
aW50IElPRGV2aWNlTnVtYmVyOwoKCgp9CiMgNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0S2V5cy5oIiAxIDMK
IyAzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMv
SU9LaXRLZXlzLmgiIDMKI2RlZmluZSBfSU9LSVRfSU9LSVRLRVlTX0ggCgoKI2RlZmluZSBrSU9L
aXRCdWlsZFZlcnNpb25LZXkgIklPS2l0QnVpbGRWZXJzaW9uIgojZGVmaW5lIGtJT0tpdERpYWdu
b3N0aWNzS2V5ICJJT0tpdERpYWdub3N0aWNzIgoKI2RlZmluZSBrSU9SZWdpc3RyeVBsYW5lc0tl
eSAiSU9SZWdpc3RyeVBsYW5lcyIKI2RlZmluZSBrSU9DYXRhbG9ndWVLZXkgIklPQ2F0YWxvZ3Vl
IgoKCiNkZWZpbmUga0lPU2VydmljZVBsYW5lICJJT1NlcnZpY2UiCiNkZWZpbmUga0lPUG93ZXJQ
bGFuZSAiSU9Qb3dlciIKI2RlZmluZSBrSU9EZXZpY2VUcmVlUGxhbmUgIklPRGV2aWNlVHJlZSIK
I2RlZmluZSBrSU9BdWRpb1BsYW5lICJJT0F1ZGlvIgojZGVmaW5lIGtJT0ZpcmVXaXJlUGxhbmUg
IklPRmlyZVdpcmUiCiNkZWZpbmUga0lPVVNCUGxhbmUgIklPVVNCIgoKCiNkZWZpbmUga0lPUmVn
aXN0cnlFbnRyeUlES2V5ICJJT1JlZ2lzdHJ5RW50cnlJRCIKCgojZGVmaW5lIGtJT1NlcnZpY2VD
bGFzcyAiSU9TZXJ2aWNlIgoKCiNkZWZpbmUga0lPUmVzb3VyY2VzQ2xhc3MgIklPUmVzb3VyY2Vz
IgoKCiNkZWZpbmUga0lPQ2xhc3NLZXkgIklPQ2xhc3MiCiNkZWZpbmUga0lPUHJvYmVTY29yZUtl
eSAiSU9Qcm9iZVNjb3JlIgojZGVmaW5lIGtJT0tpdERlYnVnS2V5ICJJT0tpdERlYnVnIgoKCiNk
ZWZpbmUga0lPUHJvdmlkZXJDbGFzc0tleSAiSU9Qcm92aWRlckNsYXNzIgojZGVmaW5lIGtJT05h
bWVNYXRjaEtleSAiSU9OYW1lTWF0Y2giCiNkZWZpbmUga0lPUHJvcGVydHlNYXRjaEtleSAiSU9Q
cm9wZXJ0eU1hdGNoIgojZGVmaW5lIGtJT1BhdGhNYXRjaEtleSAiSU9QYXRoTWF0Y2giCiNkZWZp
bmUga0lPTG9jYXRpb25NYXRjaEtleSAiSU9Mb2NhdGlvbk1hdGNoIgojZGVmaW5lIGtJT1BhcmVu
dE1hdGNoS2V5ICJJT1BhcmVudE1hdGNoIgojZGVmaW5lIGtJT1Jlc291cmNlTWF0Y2hLZXkgIklP
UmVzb3VyY2VNYXRjaCIKI2RlZmluZSBrSU9NYXRjaGVkU2VydmljZUNvdW50S2V5ICJJT01hdGNo
ZWRTZXJ2aWNlQ291bnRNYXRjaCIKCiNkZWZpbmUga0lPTmFtZU1hdGNoZWRLZXkgIklPTmFtZU1h
dGNoZWQiCgojZGVmaW5lIGtJT01hdGNoQ2F0ZWdvcnlLZXkgIklPTWF0Y2hDYXRlZ29yeSIKI2Rl
ZmluZSBrSU9EZWZhdWx0TWF0Y2hDYXRlZ29yeUtleSAiSU9EZWZhdWx0TWF0Y2hDYXRlZ29yeSIK
CgojZGVmaW5lIGtJT1VzZXJDbGllbnRDbGFzc0tleSAiSU9Vc2VyQ2xpZW50Q2xhc3MiCgoKI2Rl
ZmluZSBrSU9NYXBwZXJJREtleSAiSU9NYXBwZXJJRCIKCiNkZWZpbmUga0lPVXNlckNsaWVudENy
b3NzRW5kaWFuS2V5ICJJT1VzZXJDbGllbnRDcm9zc0VuZGlhbiIKI2RlZmluZSBrSU9Vc2VyQ2xp
ZW50Q3Jvc3NFbmRpYW5Db21wYXRpYmxlS2V5ICJJT1VzZXJDbGllbnRDcm9zc0VuZGlhbkNvbXBh
dGlibGUiCiNkZWZpbmUga0lPVXNlckNsaWVudFNoYXJlZEluc3RhbmNlS2V5ICJJT1VzZXJDbGll
bnRTaGFyZWRJbnN0YW5jZSIKCiNkZWZpbmUga0lPVXNlckNsaWVudENyZWF0b3JLZXkgIklPVXNl
ckNsaWVudENyZWF0b3IiCgoKI2RlZmluZSBrSU9QdWJsaXNoTm90aWZpY2F0aW9uICJJT1NlcnZp
Y2VQdWJsaXNoIgojZGVmaW5lIGtJT0ZpcnN0UHVibGlzaE5vdGlmaWNhdGlvbiAiSU9TZXJ2aWNl
Rmlyc3RQdWJsaXNoIgojZGVmaW5lIGtJT01hdGNoZWROb3RpZmljYXRpb24gIklPU2VydmljZU1h
dGNoZWQiCiNkZWZpbmUga0lPRmlyc3RNYXRjaE5vdGlmaWNhdGlvbiAiSU9TZXJ2aWNlRmlyc3RN
YXRjaCIKI2RlZmluZSBrSU9UZXJtaW5hdGVkTm90aWZpY2F0aW9uICJJT1NlcnZpY2VUZXJtaW5h
dGUiCgoKI2RlZmluZSBrSU9HZW5lcmFsSW50ZXJlc3QgIklPR2VuZXJhbEludGVyZXN0IgojZGVm
aW5lIGtJT0J1c3lJbnRlcmVzdCAiSU9CdXN5SW50ZXJlc3QiCiNkZWZpbmUga0lPQXBwUG93ZXJT
dGF0ZUludGVyZXN0ICJJT0FwcFBvd2VyU3RhdGVJbnRlcmVzdCIKI2RlZmluZSBrSU9Qcmlvcml0
eVBvd2VyU3RhdGVJbnRlcmVzdCAiSU9Qcmlvcml0eVBvd2VyU3RhdGVJbnRlcmVzdCIKCiNkZWZp
bmUga0lPUGxhdGZvcm1EZXZpY2VNZXNzYWdlS2V5ICJJT1BsYXRmb3JtRGV2aWNlTWVzc2FnZSIK
CgojZGVmaW5lIGtJT0NGUGx1Z0luVHlwZXNLZXkgIklPQ0ZQbHVnSW5UeXBlcyIKCgojZGVmaW5l
IGtJT0NvbW1hbmRQb29sU2l6ZUtleSAiSU9Db21tYW5kUG9vbFNpemUiCgoKI2RlZmluZSBrSU9N
YXhpbXVtQmxvY2tDb3VudFJlYWRLZXkgIklPTWF4aW11bUJsb2NrQ291bnRSZWFkIgojZGVmaW5l
IGtJT01heGltdW1CbG9ja0NvdW50V3JpdGVLZXkgIklPTWF4aW11bUJsb2NrQ291bnRXcml0ZSIK
I2RlZmluZSBrSU9NYXhpbXVtQnl0ZUNvdW50UmVhZEtleSAiSU9NYXhpbXVtQnl0ZUNvdW50UmVh
ZCIKI2RlZmluZSBrSU9NYXhpbXVtQnl0ZUNvdW50V3JpdGVLZXkgIklPTWF4aW11bUJ5dGVDb3Vu
dFdyaXRlIgojZGVmaW5lIGtJT01heGltdW1TZWdtZW50Q291bnRSZWFkS2V5ICJJT01heGltdW1T
ZWdtZW50Q291bnRSZWFkIgojZGVmaW5lIGtJT01heGltdW1TZWdtZW50Q291bnRXcml0ZUtleSAi
SU9NYXhpbXVtU2VnbWVudENvdW50V3JpdGUiCiNkZWZpbmUga0lPTWF4aW11bVNlZ21lbnRCeXRl
Q291bnRSZWFkS2V5ICJJT01heGltdW1TZWdtZW50Qnl0ZUNvdW50UmVhZCIKI2RlZmluZSBrSU9N
YXhpbXVtU2VnbWVudEJ5dGVDb3VudFdyaXRlS2V5ICJJT01heGltdW1TZWdtZW50Qnl0ZUNvdW50
V3JpdGUiCiNkZWZpbmUga0lPTWluaW11bVNlZ21lbnRBbGlnbm1lbnRCeXRlQ291bnRLZXkgIklP
TWluaW11bVNlZ21lbnRBbGlnbm1lbnRCeXRlQ291bnQiCiNkZWZpbmUga0lPTWF4aW11bVNlZ21l
bnRBZGRyZXNzYWJsZUJpdENvdW50S2V5ICJJT01heGltdW1TZWdtZW50QWRkcmVzc2FibGVCaXRD
b3VudCIKIyAxNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9I
ZWFkZXJzL0lPS2l0S2V5cy5oIiAzCiNkZWZpbmUga0lPSWNvbktleSAiSU9JY29uIgojZGVmaW5l
IGtJT0J1bmRsZVJlc291cmNlRmlsZUtleSAiSU9CdW5kbGVSZXNvdXJjZUZpbGUiCgojZGVmaW5l
IGtJT0J1c0JhZGdlS2V5ICJJT0J1c0JhZGdlIgojZGVmaW5lIGtJT0RldmljZUljb25LZXkgIklP
RGV2aWNlSWNvbiIKCgojZGVmaW5lIGtJT1BsYXRmb3JtU2VyaWFsTnVtYmVyS2V5ICJJT1BsYXRm
b3JtU2VyaWFsTnVtYmVyIgoKCiNkZWZpbmUga0lPUGxhdGZvcm1VVUlES2V5ICJJT1BsYXRmb3Jt
VVVJRCIKCgojZGVmaW5lIGtJT05WUkFNRGVsZXRlUHJvcGVydHlLZXkgIklPTlZSQU0tREVMRVRF
LVBST1BFUlRZIgojZGVmaW5lIGtJT0RUTlZSQU1QYW5pY0luZm9LZXkgImFhcGwscGFuaWMtaW5m
byIKCgojZGVmaW5lIGtJT0Jvb3REZXZpY2VLZXkgIklPQm9vdERldmljZSIKI2RlZmluZSBrSU9C
b290RGV2aWNlUGF0aEtleSAiSU9Cb290RGV2aWNlUGF0aCIKI2RlZmluZSBrSU9Cb290RGV2aWNl
U2l6ZUtleSAiSU9Cb290RGV2aWNlU2l6ZSIKCgojZGVmaW5lIGtPU0J1aWxkVmVyc2lvbktleSAi
T1MgQnVpbGQgVmVyc2lvbiIKIyA1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMiAzCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL09TTWVzc2FnZU5vdGlmaWNhdGlvbi5o
IiAxIDMKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hl
YWRlcnMvT1NNZXNzYWdlTm90aWZpY2F0aW9uLmgiIDMKI2RlZmluZSBfX09TX09TTUVTU0FHRU5P
VElGSUNBVElPTl9IIAoKCmV4dGVybiAiQyIgewoKCgoKCgplbnVtIHsKICAgIGtGaXJzdElPS2l0
Tm90aWZpY2F0aW9uVHlwZSA9IDEwMCwKICAgIGtJT1NlcnZpY2VQdWJsaXNoTm90aWZpY2F0aW9u
VHlwZSA9IDEwMCwKICAgIGtJT1NlcnZpY2VNYXRjaGVkTm90aWZpY2F0aW9uVHlwZSA9IDEwMSwK
ICAgIGtJT1NlcnZpY2VUZXJtaW5hdGVkTm90aWZpY2F0aW9uVHlwZSA9IDEwMiwKICAgIGtJT0Fz
eW5jQ29tcGxldGlvbk5vdGlmaWNhdGlvblR5cGUgPSAxNTAsCiAgICBrSU9TZXJ2aWNlTWVzc2Fn
ZU5vdGlmaWNhdGlvblR5cGUgPSAxNjAsCiAgICBrTGFzdElPS2l0Tm90aWZpY2F0aW9uVHlwZSA9
IDE5OQp9OwoKZW51bSB7CiAgICBrT1NOb3RpZmljYXRpb25NZXNzYWdlSUQgPSA1MywKICAgIGtP
U0FzeW5jQ29tcGxldGVNZXNzYWdlSUQgPSA1NywKICAgIGtNYXhBc3luY0FyZ3MgPSAxNgp9OwoK
ZW51bSB7CiAgICBrSU9Bc3luY1Jlc2VydmVkSW5kZXggPSAwLAogICAga0lPQXN5bmNSZXNlcnZl
ZENvdW50LAoKICAgIGtJT0FzeW5jQ2FsbG91dEZ1bmNJbmRleCA9IGtJT0FzeW5jUmVzZXJ2ZWRD
b3VudCwKICAgIGtJT0FzeW5jQ2FsbG91dFJlZmNvbkluZGV4LAogICAga0lPQXN5bmNDYWxsb3V0
Q291bnQsCgogICAga0lPTWF0Y2hpbmdDYWxsb3V0RnVuY0luZGV4ID0ga0lPQXN5bmNSZXNlcnZl
ZENvdW50LAogICAga0lPTWF0Y2hpbmdDYWxsb3V0UmVmY29uSW5kZXgsCiAgICBrSU9NYXRjaGlu
Z0NhbGxvdXRDb3VudCwKCiAgICBrSU9JbnRlcmVzdENhbGxvdXRGdW5jSW5kZXggPSBrSU9Bc3lu
Y1Jlc2VydmVkQ291bnQsCiAgICBrSU9JbnRlcmVzdENhbGxvdXRSZWZjb25JbmRleCwKICAgIGtJ
T0ludGVyZXN0Q2FsbG91dFNlcnZpY2VJbmRleCwKICAgIGtJT0ludGVyZXN0Q2FsbG91dENvdW50
Cn07CgoKCgplbnVtIHsKICAgIGtPU0FzeW5jUmVmNjRDb3VudCA9IDgsCiAgICBrT1NBc3luY1Jl
ZjY0U2l6ZSA9IGtPU0FzeW5jUmVmNjRDb3VudCAqICgoaW50KSBzaXplb2YoaW9fdXNlcl9yZWZl
cmVuY2VfdCkpCn07CnR5cGVkZWYgaW9fdXNlcl9yZWZlcmVuY2VfdCBPU0FzeW5jUmVmZXJlbmNl
NjRba09TQXN5bmNSZWY2NENvdW50XTsKCnN0cnVjdCBPU05vdGlmaWNhdGlvbkhlYWRlcjY0IHsK
ICAgIG1hY2hfbXNnX3NpemVfdCBzaXplOwogICAgbmF0dXJhbF90IHR5cGU7CiAgICBPU0FzeW5j
UmVmZXJlbmNlNjQgcmVmZXJlbmNlOwoKCgoKICAgIHVuc2lnbmVkIGNoYXIgY29udGVudFswXTsK
Cn07CgojcHJhZ21hIHBhY2soNCkKc3RydWN0IElPU2VydmljZUludGVyZXN0Q29udGVudDY0IHsK
ICAgIG5hdHVyYWxfdCBtZXNzYWdlVHlwZTsKICAgIGlvX3VzZXJfcmVmZXJlbmNlX3QgbWVzc2Fn
ZUFyZ3VtZW50WzFdOwp9OwojcHJhZ21hIHBhY2soKQoKCgoKZW51bSB7CiAgICBrT1NBc3luY1Jl
ZkNvdW50ID0gOCwKICAgIGtPU0FzeW5jUmVmU2l6ZSA9IDMyCn07CnR5cGVkZWYgbmF0dXJhbF90
IE9TQXN5bmNSZWZlcmVuY2Vba09TQXN5bmNSZWZDb3VudF07CgpzdHJ1Y3QgT1NOb3RpZmljYXRp
b25IZWFkZXIgewogICAgbWFjaF9tc2dfc2l6ZV90IHNpemU7CiAgICBuYXR1cmFsX3QgdHlwZTsK
ICAgIE9TQXN5bmNSZWZlcmVuY2UgcmVmZXJlbmNlOwoKCgoKICAgIHVuc2lnbmVkIGNoYXIgY29u
dGVudFswXTsKCn07CgojcHJhZ21hIHBhY2soNCkKc3RydWN0IElPU2VydmljZUludGVyZXN0Q29u
dGVudCB7CiAgICBuYXR1cmFsX3QgbWVzc2FnZVR5cGU7CiAgICB2b2lkICogbWVzc2FnZUFyZ3Vt
ZW50WzFdOwp9OwojcHJhZ21hIHBhY2soKQoKCgpzdHJ1Y3QgSU9Bc3luY0NvbXBsZXRpb25Db250
ZW50IHsKICAgIElPUmV0dXJuIHJlc3VsdDsKCgoKICAgIHZvaWQgKiBhcmdzWzBdIF9fYXR0cmli
dXRlX18gKChwYWNrZWQpKTsKCn07CiMgMTU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9J
T0tpdC5mcmFtZXdvcmsvSGVhZGVycy9PU01lc3NhZ2VOb3RpZmljYXRpb24uaCIgMwp9CiMgNTMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0
TGliLmgiIDIgMwoKCgpleHRlcm4gIkMiIHsKIyA2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwp0eXBlZGVmIHN0cnVjdCBJ
T05vdGlmaWNhdGlvblBvcnQgKiBJT05vdGlmaWNhdGlvblBvcnRSZWY7CgoKCgoKCgp0eXBlZGVm
IHZvaWQKKCpJT1NlcnZpY2VNYXRjaGluZ0NhbGxiYWNrKSgKIHZvaWQgKiByZWZjb24sCiBpb19p
dGVyYXRvcl90IGl0ZXJhdG9yICk7CiMgODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lP
S2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKdHlwZWRlZiB2b2lkCigqSU9TZXJ2
aWNlSW50ZXJlc3RDYWxsYmFjaykoCiB2b2lkICogcmVmY29uLAogaW9fc2VydmljZV90IHNlcnZp
Y2UsCiB1aW50MzJfdCBtZXNzYWdlVHlwZSwKIHZvaWQgKiBtZXNzYWdlQXJndW1lbnQgKTsKIyAx
MDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lP
S2l0TGliLmgiIDMKZXh0ZXJuCmNvbnN0IG1hY2hfcG9ydF90IGtJT01hc3RlclBvcnREZWZhdWx0
OwojIDExMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRl
cnMvSU9LaXRMaWIuaCIgMwprZXJuX3JldHVybl90CklPTWFzdGVyUG9ydCggbWFjaF9wb3J0X3Qg
Ym9vdHN0cmFwUG9ydCwKICAgICAgIG1hY2hfcG9ydF90ICogbWFzdGVyUG9ydCApOwojIDEyMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRM
aWIuaCIgMwpJT05vdGlmaWNhdGlvblBvcnRSZWYKSU9Ob3RpZmljYXRpb25Qb3J0Q3JlYXRlKAog
bWFjaF9wb3J0X3QgbWFzdGVyUG9ydCApOwoKCgoKCnZvaWQKSU9Ob3RpZmljYXRpb25Qb3J0RGVz
dHJveSgKIElPTm90aWZpY2F0aW9uUG9ydFJlZiBub3RpZnkgKTsKCgoKCgoKCkNGUnVuTG9vcFNv
dXJjZVJlZgpJT05vdGlmaWNhdGlvblBvcnRHZXRSdW5Mb29wU291cmNlKAogSU9Ob3RpZmljYXRp
b25Qb3J0UmVmIG5vdGlmeSApOwoKCgoKCgoKbWFjaF9wb3J0X3QKSU9Ob3RpZmljYXRpb25Qb3J0
R2V0TWFjaFBvcnQoCiBJT05vdGlmaWNhdGlvblBvcnRSZWYgbm90aWZ5ICk7CiMgMTYwICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5o
IiAzCnZvaWQKSU9EaXNwYXRjaENhbGxvdXRGcm9tTWVzc2FnZSgKICAgICAgICB2b2lkICp1bnVz
ZWQsCiAgICAgICAgbWFjaF9tc2dfaGVhZGVyX3QgKm1zZywKICAgICAgICB2b2lkICpyZWZlcmVu
Y2UgKTsKIyAxNzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9I
ZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT0NyZWF0ZVJlY2VpdmVQb3J0KCB1
aW50MzJfdCBtc2dUeXBlLCBtYWNoX3BvcnRfdCAqIHJlY3ZQb3J0ICk7CiMgMTkyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5oIiAz
Cmtlcm5fcmV0dXJuX3QKSU9PYmplY3RSZWxlYXNlKAogaW9fb2JqZWN0X3Qgb2JqZWN0ICk7CgoK
CgoKCgprZXJuX3JldHVybl90CklPT2JqZWN0UmV0YWluKAogaW9fb2JqZWN0X3Qgb2JqZWN0ICk7
CiMgMjEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVy
cy9JT0tpdExpYi5oIiAzCmtlcm5fcmV0dXJuX3QKSU9PYmplY3RHZXRDbGFzcygKIGlvX29iamVj
dF90IG9iamVjdCwKIGlvX25hbWVfdCBjbGFzc05hbWUgKTsKCgoKCgoKCkNGU3RyaW5nUmVmCklP
T2JqZWN0Q29weUNsYXNzKGlvX29iamVjdF90IG9iamVjdCkKOwoKCgoKCgoKQ0ZTdHJpbmdSZWYK
SU9PYmplY3RDb3B5U3VwZXJjbGFzc0ZvckNsYXNzKENGU3RyaW5nUmVmIGNsYXNzbmFtZSkKOwoK
CgoKCgoKQ0ZTdHJpbmdSZWYKSU9PYmplY3RDb3B5QnVuZGxlSWRlbnRpZmllckZvckNsYXNzKENG
U3RyaW5nUmVmIGNsYXNzbmFtZSkKOwojIDI1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
SU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwpib29sZWFuX3QKSU9PYmplY3RD
b25mb3Jtc1RvKAogaW9fb2JqZWN0X3Qgb2JqZWN0LAogY29uc3QgaW9fbmFtZV90IGNsYXNzTmFt
ZSApOwojIDI2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hl
YWRlcnMvSU9LaXRMaWIuaCIgMwpib29sZWFuX3QKSU9PYmplY3RJc0VxdWFsVG8oCiBpb19vYmpl
Y3RfdCBvYmplY3QsCiBpb19vYmplY3RfdCBhbk9iamVjdCApOwoKCgoKCgoKdWludDMyX3QKSU9P
YmplY3RHZXRLZXJuZWxSZXRhaW5Db3VudCgKIGlvX29iamVjdF90IG9iamVjdCApCjsKCgoKCgoK
CnVpbnQzMl90CklPT2JqZWN0R2V0VXNlclJldGFpbkNvdW50KAogaW9fb2JqZWN0X3Qgb2JqZWN0
ICkKOwoKCgoKCgoKdWludDMyX3QKSU9PYmplY3RHZXRSZXRhaW5Db3VudCgKIGlvX29iamVjdF90
IG9iamVjdCApOwojIDMxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3
b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwppb19vYmplY3RfdApJT0l0ZXJhdG9yTmV4dCgKIGlv
X2l0ZXJhdG9yX3QgaXRlcmF0b3IgKTsKCgoKCgoKdm9pZApJT0l0ZXJhdG9yUmVzZXQoCiBpb19p
dGVyYXRvcl90IGl0ZXJhdG9yICk7CgoKCgoKCgpib29sZWFuX3QKSU9JdGVyYXRvcklzVmFsaWQo
CiBpb19pdGVyYXRvcl90IGl0ZXJhdG9yICk7CiMgMzU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5oIiAzCmlvX3NlcnZpY2VfdApJ
T1NlcnZpY2VHZXRNYXRjaGluZ1NlcnZpY2UoCiBtYWNoX3BvcnRfdCBtYXN0ZXJQb3J0LAogQ0ZE
aWN0aW9uYXJ5UmVmIG1hdGNoaW5nICk7CiMgMzY4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5oIiAzCmtlcm5fcmV0dXJuX3QKSU9T
ZXJ2aWNlR2V0TWF0Y2hpbmdTZXJ2aWNlcygKIG1hY2hfcG9ydF90IG1hc3RlclBvcnQsCiBDRkRp
Y3Rpb25hcnlSZWYgbWF0Y2hpbmcsCiBpb19pdGVyYXRvcl90ICogZXhpc3RpbmcgKTsKCgprZXJu
X3JldHVybl90CklPU2VydmljZUFkZE5vdGlmaWNhdGlvbigKIG1hY2hfcG9ydF90IG1hc3RlclBv
cnQsCiBjb25zdCBpb19uYW1lX3Qgbm90aWZpY2F0aW9uVHlwZSwKIENGRGljdGlvbmFyeVJlZiBt
YXRjaGluZywKIG1hY2hfcG9ydF90IHdha2VQb3J0LAogdWludHB0cl90IHJlZmVyZW5jZSwKIGlv
X2l0ZXJhdG9yX3QgKiBub3RpZmljYXRpb24gKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CiMgNDAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVy
cy9JT0tpdExpYi5oIiAzCmtlcm5fcmV0dXJuX3QKSU9TZXJ2aWNlQWRkTWF0Y2hpbmdOb3RpZmlj
YXRpb24oCiBJT05vdGlmaWNhdGlvblBvcnRSZWYgbm90aWZ5UG9ydCwKIGNvbnN0IGlvX25hbWVf
dCBub3RpZmljYXRpb25UeXBlLAogQ0ZEaWN0aW9uYXJ5UmVmIG1hdGNoaW5nLAogICAgICAgIElP
U2VydmljZU1hdGNoaW5nQ2FsbGJhY2sgY2FsbGJhY2ssCiAgICAgICAgdm9pZCAqIHJlZkNvbiwK
IGlvX2l0ZXJhdG9yX3QgKiBub3RpZmljYXRpb24gKTsKIyA0MjEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1
cm5fdApJT1NlcnZpY2VBZGRJbnRlcmVzdE5vdGlmaWNhdGlvbigKIElPTm90aWZpY2F0aW9uUG9y
dFJlZiBub3RpZnlQb3J0LAogICAgICAgIGlvX3NlcnZpY2VfdCBzZXJ2aWNlLAogY29uc3QgaW9f
bmFtZV90IGludGVyZXN0VHlwZSwKICAgICAgICBJT1NlcnZpY2VJbnRlcmVzdENhbGxiYWNrIGNh
bGxiYWNrLAogICAgICAgIHZvaWQgKiByZWZDb24sCiAgICAgICAgaW9fb2JqZWN0X3QgKiBub3Rp
ZmljYXRpb24gKTsKIyA0MzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1l
d29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT1NlcnZpY2VNYXRjaFBy
b3BlcnR5VGFibGUoCiAgICAgICAgaW9fc2VydmljZV90IHNlcnZpY2UsCiAgICAgICAgQ0ZEaWN0
aW9uYXJ5UmVmIG1hdGNoaW5nLAogICAgICAgIGJvb2xlYW5fdCAqIG1hdGNoZXMgKTsKIyA0NTEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0
TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT1NlcnZpY2VHZXRCdXN5U3RhdGUoCiBpb19zZXJ2aWNl
X3Qgc2VydmljZSwKIHVpbnQzMl90ICogYnVzeVN0YXRlICk7CiMgNDYzICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5oIiAzCmtlcm5f
cmV0dXJuX3QKSU9TZXJ2aWNlV2FpdFF1aWV0KAogaW9fc2VydmljZV90IHNlcnZpY2UsCiBtYWNo
X3RpbWVzcGVjX3QgKiB3YWl0VGltZSApOwojIDQ3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwprZXJuX3JldHVybl90CklP
S2l0R2V0QnVzeVN0YXRlKAogbWFjaF9wb3J0X3QgbWFzdGVyUG9ydCwKIHVpbnQzMl90ICogYnVz
eVN0YXRlICk7CiMgNDg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdv
cmsvSGVhZGVycy9JT0tpdExpYi5oIiAzCmtlcm5fcmV0dXJuX3QKSU9LaXRXYWl0UXVpZXQoCiBt
YWNoX3BvcnRfdCBtYXN0ZXJQb3J0LAogbWFjaF90aW1lc3BlY190ICogd2FpdFRpbWUgKTsKIyA1
MDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lP
S2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT1NlcnZpY2VPcGVuKAogaW9fc2VydmljZV90IHNl
cnZpY2UsCiB0YXNrX3BvcnRfdCBvd25pbmdUYXNrLAogdWludDMyX3QgdHlwZSwKIGlvX2Nvbm5l
Y3RfdCAqIGNvbm5lY3QgKTsKIyA1MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0
LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT1NlcnZpY2VS
ZXF1ZXN0UHJvYmUoCiBpb19zZXJ2aWNlX3Qgc2VydmljZSwKIHVpbnQzMl90IG9wdGlvbnMgKTsK
IyA1MzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJz
L0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT1NlcnZpY2VDbG9zZSgKIGlvX2Nvbm5lY3Rf
dCBjb25uZWN0ICk7CgoKCgoKCgprZXJuX3JldHVybl90CklPQ29ubmVjdEFkZFJlZigKIGlvX2Nv
bm5lY3RfdCBjb25uZWN0ICk7CgoKCgoKCgprZXJuX3JldHVybl90CklPQ29ubmVjdFJlbGVhc2Uo
CiBpb19jb25uZWN0X3QgY29ubmVjdCApOwojIDU2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwprZXJuX3JldHVybl90CklP
Q29ubmVjdEdldFNlcnZpY2UoCiBpb19jb25uZWN0X3QgY29ubmVjdCwKIGlvX3NlcnZpY2VfdCAq
IHNlcnZpY2UgKTsKIyA1NzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1l
d29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT0Nvbm5lY3RTZXROb3Rp
ZmljYXRpb25Qb3J0KAogaW9fY29ubmVjdF90IGNvbm5lY3QsCiB1aW50MzJfdCB0eXBlLAogbWFj
aF9wb3J0X3QgcG9ydCwKIHVpbnRwdHJfdCByZWZlcmVuY2UgKTsKIyA2MDcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vy
bl9yZXR1cm5fdApJT0Nvbm5lY3RNYXBNZW1vcnkoCiAgaW9fY29ubmVjdF90IGNvbm5lY3QsCiAg
dWludDMyX3QgbWVtb3J5VHlwZSwKICB0YXNrX3BvcnRfdCBpbnRvVGFzaywKICBtYWNoX3ZtX2Fk
ZHJlc3NfdCAqYXRBZGRyZXNzLAogIG1hY2hfdm1fc2l6ZV90ICpvZlNpemUsCiAgSU9PcHRpb25C
aXRzIG9wdGlvbnMgKTsKIyA2MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZy
YW1ld29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdCBJT0Nvbm5lY3RNYXBN
ZW1vcnk2NCgKICBpb19jb25uZWN0X3QgY29ubmVjdCwKICB1aW50MzJfdCBtZW1vcnlUeXBlLAog
IHRhc2tfcG9ydF90IGludG9UYXNrLAogIG1hY2hfdm1fYWRkcmVzc190ICphdEFkZHJlc3MsCiAg
bWFjaF92bV9zaXplX3QgKm9mU2l6ZSwKICBJT09wdGlvbkJpdHMgb3B0aW9ucyApOwojIDY1NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRM
aWIuaCIgMwprZXJuX3JldHVybl90CklPQ29ubmVjdFVubWFwTWVtb3J5KAogaW9fY29ubmVjdF90
IGNvbm5lY3QsCiB1aW50MzJfdCBtZW1vcnlUeXBlLAogdGFza19wb3J0X3QgZnJvbVRhc2ssCiBt
YWNoX3ZtX2FkZHJlc3NfdCBhdEFkZHJlc3MgKTsKIyA2NzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1cm5f
dCBJT0Nvbm5lY3RVbm1hcE1lbW9yeTY0KAogaW9fY29ubmVjdF90IGNvbm5lY3QsCiAgdWludDMy
X3QgbWVtb3J5VHlwZSwKICB0YXNrX3BvcnRfdCBmcm9tVGFzaywKICBtYWNoX3ZtX2FkZHJlc3Nf
dCBhdEFkZHJlc3MgKTsKIyA2OTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZy
YW1ld29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT0Nvbm5lY3RTZXRD
RlByb3BlcnRpZXMoCiBpb19jb25uZWN0X3QgY29ubmVjdCwKIENGVHlwZVJlZiBwcm9wZXJ0aWVz
ICk7CiMgNzAzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVh
ZGVycy9JT0tpdExpYi5oIiAzCmtlcm5fcmV0dXJuX3QKSU9Db25uZWN0U2V0Q0ZQcm9wZXJ0eSgK
IGlvX2Nvbm5lY3RfdCBjb25uZWN0LAogICAgICAgIENGU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwK
IENGVHlwZVJlZiBwcm9wZXJ0eSApOwoKCgoKCmtlcm5fcmV0dXJuX3QKSU9Db25uZWN0Q2FsbE1l
dGhvZCgKIG1hY2hfcG9ydF90IGNvbm5lY3Rpb24sCiB1aW50MzJfdCBzZWxlY3RvciwKIGNvbnN0
IHVpbnQ2NF90ICppbnB1dCwKIHVpbnQzMl90IGlucHV0Q250LAogY29uc3Qgdm9pZCAqaW5wdXRT
dHJ1Y3QsCiBzaXplX3QgaW5wdXRTdHJ1Y3RDbnQsCiB1aW50NjRfdCAqb3V0cHV0LAogdWludDMy
X3QgKm91dHB1dENudCwKIHZvaWQgKm91dHB1dFN0cnVjdCwKIHNpemVfdCAqb3V0cHV0U3RydWN0
Q250KQo7CgprZXJuX3JldHVybl90CklPQ29ubmVjdENhbGxBc3luY01ldGhvZCgKIG1hY2hfcG9y
dF90IGNvbm5lY3Rpb24sCiB1aW50MzJfdCBzZWxlY3RvciwKIG1hY2hfcG9ydF90IHdha2VfcG9y
dCwKIHVpbnQ2NF90ICpyZWZlcmVuY2UsCiB1aW50MzJfdCByZWZlcmVuY2VDbnQsCiBjb25zdCB1
aW50NjRfdCAqaW5wdXQsCiB1aW50MzJfdCBpbnB1dENudCwKIGNvbnN0IHZvaWQgKmlucHV0U3Ry
dWN0LAogc2l6ZV90IGlucHV0U3RydWN0Q250LAogdWludDY0X3QgKm91dHB1dCwKIHVpbnQzMl90
ICpvdXRwdXRDbnQsCiB2b2lkICpvdXRwdXRTdHJ1Y3QsCiBzaXplX3QgKm91dHB1dFN0cnVjdENu
dCkKOwoKa2Vybl9yZXR1cm5fdApJT0Nvbm5lY3RDYWxsU3RydWN0TWV0aG9kKAogbWFjaF9wb3J0
X3QgY29ubmVjdGlvbiwKIHVpbnQzMl90IHNlbGVjdG9yLAogY29uc3Qgdm9pZCAqaW5wdXRTdHJ1
Y3QsCiBzaXplX3QgaW5wdXRTdHJ1Y3RDbnQsCiB2b2lkICpvdXRwdXRTdHJ1Y3QsCiBzaXplX3Qg
Km91dHB1dFN0cnVjdENudCkKOwoKa2Vybl9yZXR1cm5fdApJT0Nvbm5lY3RDYWxsQXN5bmNTdHJ1
Y3RNZXRob2QoCiBtYWNoX3BvcnRfdCBjb25uZWN0aW9uLAogdWludDMyX3Qgc2VsZWN0b3IsCiBt
YWNoX3BvcnRfdCB3YWtlX3BvcnQsCiB1aW50NjRfdCAqcmVmZXJlbmNlLAogdWludDMyX3QgcmVm
ZXJlbmNlQ250LAogY29uc3Qgdm9pZCAqaW5wdXRTdHJ1Y3QsCiBzaXplX3QgaW5wdXRTdHJ1Y3RD
bnQsCiB2b2lkICpvdXRwdXRTdHJ1Y3QsCiBzaXplX3QgKm91dHB1dFN0cnVjdENudCkKOwoKa2Vy
bl9yZXR1cm5fdApJT0Nvbm5lY3RDYWxsU2NhbGFyTWV0aG9kKAogbWFjaF9wb3J0X3QgY29ubmVj
dGlvbiwKIHVpbnQzMl90IHNlbGVjdG9yLAogY29uc3QgdWludDY0X3QgKmlucHV0LAogdWludDMy
X3QgaW5wdXRDbnQsCiB1aW50NjRfdCAqb3V0cHV0LAogdWludDMyX3QgKm91dHB1dENudCkKOwoK
a2Vybl9yZXR1cm5fdApJT0Nvbm5lY3RDYWxsQXN5bmNTY2FsYXJNZXRob2QoCiBtYWNoX3BvcnRf
dCBjb25uZWN0aW9uLAogdWludDMyX3Qgc2VsZWN0b3IsCiBtYWNoX3BvcnRfdCB3YWtlX3BvcnQs
CiB1aW50NjRfdCAqcmVmZXJlbmNlLAogdWludDMyX3QgcmVmZXJlbmNlQ250LAogY29uc3QgdWlu
dDY0X3QgKmlucHV0LAogdWludDMyX3QgaW5wdXRDbnQsCiB1aW50NjRfdCAqb3V0cHV0LAogdWlu
dDMyX3QgKm91dHB1dENudCkKOwoKCgprZXJuX3JldHVybl90CklPQ29ubmVjdFRyYXAwKGlvX2Nv
bm5lY3RfdCBjb25uZWN0LAogICAgICAgIHVpbnQzMl90IGluZGV4ICk7CgprZXJuX3JldHVybl90
CklPQ29ubmVjdFRyYXAxKGlvX2Nvbm5lY3RfdCBjb25uZWN0LAogICAgICAgIHVpbnQzMl90IGlu
ZGV4LAogICAgICAgIHVpbnRwdHJfdCBwMSApOwoKa2Vybl9yZXR1cm5fdApJT0Nvbm5lY3RUcmFw
Mihpb19jb25uZWN0X3QgY29ubmVjdCwKICAgICAgICB1aW50MzJfdCBpbmRleCwKICAgICAgICB1
aW50cHRyX3QgcDEsCiAgICAgICAgdWludHB0cl90IHAyKTsKCmtlcm5fcmV0dXJuX3QKSU9Db25u
ZWN0VHJhcDMoaW9fY29ubmVjdF90IGNvbm5lY3QsCiAgICAgICAgdWludDMyX3QgaW5kZXgsCiAg
ICAgICAgdWludHB0cl90IHAxLAogICAgICAgIHVpbnRwdHJfdCBwMiwKICAgICAgICB1aW50cHRy
X3QgcDMpOwoKa2Vybl9yZXR1cm5fdApJT0Nvbm5lY3RUcmFwNChpb19jb25uZWN0X3QgY29ubmVj
dCwKICAgICAgICB1aW50MzJfdCBpbmRleCwKICAgICAgICB1aW50cHRyX3QgcDEsCiAgICAgICAg
dWludHB0cl90IHAyLAogICAgICAgIHVpbnRwdHJfdCBwMywKICAgICAgICB1aW50cHRyX3QgcDQp
OwoKa2Vybl9yZXR1cm5fdApJT0Nvbm5lY3RUcmFwNShpb19jb25uZWN0X3QgY29ubmVjdCwKICAg
ICAgICB1aW50MzJfdCBpbmRleCwKICAgICAgICB1aW50cHRyX3QgcDEsCiAgICAgICAgdWludHB0
cl90IHAyLAogICAgICAgIHVpbnRwdHJfdCBwMywKICAgICAgICB1aW50cHRyX3QgcDQsCiAgICAg
ICAgdWludHB0cl90IHA1KTsKCmtlcm5fcmV0dXJuX3QKSU9Db25uZWN0VHJhcDYoaW9fY29ubmVj
dF90IGNvbm5lY3QsCiAgICAgICAgdWludDMyX3QgaW5kZXgsCiAgICAgICAgdWludHB0cl90IHAx
LAogICAgICAgIHVpbnRwdHJfdCBwMiwKICAgICAgICB1aW50cHRyX3QgcDMsCiAgICAgICAgdWlu
dHB0cl90IHA0LAogICAgICAgIHVpbnRwdHJfdCBwNSwKICAgICAgICB1aW50cHRyX3QgcDYpOwoj
IDg1MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMv
SU9LaXRMaWIuaCIgMwprZXJuX3JldHVybl90CklPQ29ubmVjdEFkZENsaWVudCgKIGlvX2Nvbm5l
Y3RfdCBjb25uZWN0LAogaW9fY29ubmVjdF90IGNsaWVudCApOwojIDg2NyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwppb19y
ZWdpc3RyeV9lbnRyeV90CklPUmVnaXN0cnlHZXRSb290RW50cnkoCiBtYWNoX3BvcnRfdCBtYXN0
ZXJQb3J0ICk7CiMgODc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdv
cmsvSGVhZGVycy9JT0tpdExpYi5oIiAzCmlvX3JlZ2lzdHJ5X2VudHJ5X3QKSU9SZWdpc3RyeUVu
dHJ5RnJvbVBhdGgoCiBtYWNoX3BvcnRfdCBtYXN0ZXJQb3J0LAogY29uc3QgaW9fc3RyaW5nX3Qg
cGF0aCApOwoKCmVudW0gewogICAga0lPUmVnaXN0cnlJdGVyYXRlUmVjdXJzaXZlbHkgPSAweDAw
MDAwMDAxLAogICAga0lPUmVnaXN0cnlJdGVyYXRlUGFyZW50cyA9IDB4MDAwMDAwMDIKfTsKIyA4
OTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lP
S2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT1JlZ2lzdHJ5Q3JlYXRlSXRlcmF0b3IoCiBtYWNo
X3BvcnRfdCBtYXN0ZXJQb3J0LAogY29uc3QgaW9fbmFtZV90IHBsYW5lLAogSU9PcHRpb25CaXRz
IG9wdGlvbnMsCiBpb19pdGVyYXRvcl90ICogaXRlcmF0b3IgKTsKIyA5MTQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vy
bl9yZXR1cm5fdApJT1JlZ2lzdHJ5RW50cnlDcmVhdGVJdGVyYXRvcigKIGlvX3JlZ2lzdHJ5X2Vu
dHJ5X3QgZW50cnksCiBjb25zdCBpb19uYW1lX3QgcGxhbmUsCiBJT09wdGlvbkJpdHMgb3B0aW9u
cywKIGlvX2l0ZXJhdG9yX3QgKiBpdGVyYXRvciApOwojIDkzMiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwprZXJuX3JldHVy
bl90CklPUmVnaXN0cnlJdGVyYXRvckVudGVyRW50cnkoCiBpb19pdGVyYXRvcl90IGl0ZXJhdG9y
ICk7CgoKCgoKCmtlcm5fcmV0dXJuX3QKSU9SZWdpc3RyeUl0ZXJhdG9yRXhpdEVudHJ5KAogaW9f
aXRlcmF0b3JfdCBpdGVyYXRvciApOwojIDk1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
SU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwprZXJuX3JldHVybl90CklPUmVn
aXN0cnlFbnRyeUdldE5hbWUoCiBpb19yZWdpc3RyeV9lbnRyeV90IGVudHJ5LAogaW9fbmFtZV90
IG5hbWUgKTsKIyA5NzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29y
ay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT1JlZ2lzdHJ5RW50cnlHZXRO
YW1lSW5QbGFuZSgKIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnksCiBjb25zdCBpb19uYW1lX3Qg
cGxhbmUsCiBpb19uYW1lX3QgbmFtZSApOwojIDk4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwprZXJuX3JldHVybl90CklP
UmVnaXN0cnlFbnRyeUdldExvY2F0aW9uSW5QbGFuZSgKIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50
cnksCiBjb25zdCBpb19uYW1lX3QgcGxhbmUsCiBpb19uYW1lX3QgbG9jYXRpb24gKTsKIyA5OTkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0
TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT1JlZ2lzdHJ5RW50cnlHZXRQYXRoKAogaW9fcmVnaXN0
cnlfZW50cnlfdCBlbnRyeSwKIGNvbnN0IGlvX25hbWVfdCBwbGFuZSwKIGlvX3N0cmluZ190IHBh
dGggKTsKIyAxMDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsv
SGVhZGVycy9JT0tpdExpYi5oIiAzCmtlcm5fcmV0dXJuX3QKSU9SZWdpc3RyeUVudHJ5R2V0UmVn
aXN0cnlFbnRyeUlEKAogaW9fcmVnaXN0cnlfZW50cnlfdCBlbnRyeSwKIHVpbnQ2NF90ICogZW50
cnlJRCApOwojIDEwMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29y
ay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT1JlZ2lzdHJ5RW50cnlDcmVh
dGVDRlByb3BlcnRpZXMoCiBpb19yZWdpc3RyeV9lbnRyeV90IGVudHJ5LAogQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiAqIHByb3BlcnRpZXMsCiAgICAgICAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9y
LAogSU9PcHRpb25CaXRzIG9wdGlvbnMgKTsKIyAxMDQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5oIiAzCkNGVHlwZVJlZgpJT1Jl
Z2lzdHJ5RW50cnlDcmVhdGVDRlByb3BlcnR5KAogaW9fcmVnaXN0cnlfZW50cnlfdCBlbnRyeSwK
IENGU3RyaW5nUmVmIGtleSwKICAgICAgICBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsCiBJT09w
dGlvbkJpdHMgb3B0aW9ucyApOwojIDEwNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lP
S2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKQ0ZUeXBlUmVmCklPUmVnaXN0cnlF
bnRyeVNlYXJjaENGUHJvcGVydHkoCiBpb19yZWdpc3RyeV9lbnRyeV90IGVudHJ5LAogY29uc3Qg
aW9fbmFtZV90IHBsYW5lLAogQ0ZTdHJpbmdSZWYga2V5LAogICAgICAgIENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciwKIElPT3B0aW9uQml0cyBvcHRpb25zICk7CgoKCgprZXJuX3JldHVybl90CklP
UmVnaXN0cnlFbnRyeUdldFByb3BlcnR5KAogaW9fcmVnaXN0cnlfZW50cnlfdCBlbnRyeSwKIGNv
bnN0IGlvX25hbWVfdCBwcm9wZXJ0eU5hbWUsCiBpb19zdHJ1Y3RfaW5iYW5kX3QgYnVmZmVyLAog
dWludDMyX3QgKiBzaXplICk7CiMgMTA4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9L
aXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwprZXJuX3JldHVybl90CklPUmVnaXN0
cnlFbnRyeVNldENGUHJvcGVydGllcygKIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnksCiBDRlR5
cGVSZWYgcHJvcGVydGllcyApOwojIDEwOTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lP
S2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0TGliLmgiIDMKa2Vybl9yZXR1cm5fdApJT1JlZ2lz
dHJ5RW50cnlTZXRDRlByb3BlcnR5KAogaW9fcmVnaXN0cnlfZW50cnlfdCBlbnRyeSwKICAgICAg
ICBDRlN0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsCiBDRlR5cGVSZWYgcHJvcGVydHkgKTsKIyAxMTEy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tp
dExpYi5oIiAzCmtlcm5fcmV0dXJuX3QKSU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRJdGVyYXRvcigK
IGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnksCiBjb25zdCBpb19uYW1lX3QgcGxhbmUsCiBpb19p
dGVyYXRvcl90ICogaXRlcmF0b3IgKTsKIyAxMTI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5oIiAzCmtlcm5fcmV0dXJuX3QKSU9S
ZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRyeSgKIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnksCiBj
b25zdCBpb19uYW1lX3QgcGxhbmUsCiBpb19yZWdpc3RyeV9lbnRyeV90ICogY2hpbGQgKTsKIyAx
MTQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9J
T0tpdExpYi5oIiAzCmtlcm5fcmV0dXJuX3QKSU9SZWdpc3RyeUVudHJ5R2V0UGFyZW50SXRlcmF0
b3IoCiBpb19yZWdpc3RyeV9lbnRyeV90IGVudHJ5LAogY29uc3QgaW9fbmFtZV90IHBsYW5lLAog
aW9faXRlcmF0b3JfdCAqIGl0ZXJhdG9yICk7CiMgMTE1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwprZXJuX3JldHVybl90
CklPUmVnaXN0cnlFbnRyeUdldFBhcmVudEVudHJ5KAogaW9fcmVnaXN0cnlfZW50cnlfdCBlbnRy
eSwKIGNvbnN0IGlvX25hbWVfdCBwbGFuZSwKIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgKiBwYXJlbnQg
KTsKIyAxMTY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVh
ZGVycy9JT0tpdExpYi5oIiAzCmJvb2xlYW5fdApJT1JlZ2lzdHJ5RW50cnlJblBsYW5lKAogaW9f
cmVnaXN0cnlfZW50cnlfdCBlbnRyeSwKIGNvbnN0IGlvX25hbWVfdCBwbGFuZSApOwojIDExODQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0
TGliLmgiIDMKQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZgpJT1NlcnZpY2VNYXRjaGluZygKIGNvbnN0
IGNoYXIgKiBuYW1lICk7CgoKCgoKCgpDRk11dGFibGVEaWN0aW9uYXJ5UmVmCklPU2VydmljZU5h
bWVNYXRjaGluZygKIGNvbnN0IGNoYXIgKiBuYW1lICk7CiMgMTIwNiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvSU9LaXRMaWIuaCIgMwpDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmCklPQlNETmFtZU1hdGNoaW5nKAogbWFjaF9wb3J0X3QgbWFzdGVyUG9y
dCwKIHVpbnQzMl90IG9wdGlvbnMsCiBjb25zdCBjaGFyICogYnNkTmFtZSApOwojIDEyMjAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPS2l0TGli
LmgiIDMKQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZgpJT09wZW5GaXJtd2FyZVBhdGhNYXRjaGluZygK
IG1hY2hfcG9ydF90IG1hc3RlclBvcnQsCiB1aW50MzJfdCBvcHRpb25zLAogY29uc3QgY2hhciAq
IHBhdGggKTsKCgoKCgoKCkNGTXV0YWJsZURpY3Rpb25hcnlSZWYKSU9SZWdpc3RyeUVudHJ5SURN
YXRjaGluZygKIHVpbnQ2NF90IGVudHJ5SUQgKTsKIyAxMjQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5oIiAzCmtlcm5fcmV0dXJu
X3QKSU9TZXJ2aWNlT0ZQYXRoVG9CU0ROYW1lKG1hY2hfcG9ydF90IG1hc3RlclBvcnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpb19uYW1lX3Qgb3BlbkZpcm13YXJlUGF0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlvX25hbWVfdCBic2ROYW1lKTsKIyAxMjU5ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5oIiAz
CnR5cGVkZWYgdm9pZCAoKklPQXN5bmNDYWxsYmFjazApKHZvaWQgKnJlZmNvbiwgSU9SZXR1cm4g
cmVzdWx0KTsKIyAxMjY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdv
cmsvSGVhZGVycy9JT0tpdExpYi5oIiAzCnR5cGVkZWYgdm9pZCAoKklPQXN5bmNDYWxsYmFjazEp
KHZvaWQgKnJlZmNvbiwgSU9SZXR1cm4gcmVzdWx0LCB2b2lkICphcmcwKTsKIyAxMjc5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5o
IiAzCnR5cGVkZWYgdm9pZCAoKklPQXN5bmNDYWxsYmFjazIpKHZvaWQgKnJlZmNvbiwgSU9SZXR1
cm4gcmVzdWx0LCB2b2lkICphcmcwLCB2b2lkICphcmcxKTsKIyAxMjg5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9JT0tpdExpYi5oIiAzCnR5cGVk
ZWYgdm9pZCAoKklPQXN5bmNDYWxsYmFjaykodm9pZCAqcmVmY29uLCBJT1JldHVybiByZXN1bHQs
IHZvaWQgKiphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG51
bUFyZ3MpOwoKCgoKa2Vybl9yZXR1cm5fdApPU0dldE5vdGlmaWNhdGlvbkZyb21NZXNzYWdlKAog
bWFjaF9tc2dfaGVhZGVyX3QgKiBtc2csCiB1aW50MzJfdCBpbmRleCwKICAgICAgICB1aW50MzJf
dCAqIHR5cGUsCiAgICAgICAgdWludHB0cl90ICogcmVmZXJlbmNlLAogdm9pZCAqKiBjb250ZW50
LAogICAgICAgIHZtX3NpemVfdCAqIHNpemUgKTsKCgoKCgprZXJuX3JldHVybl90CklPQ2F0YWxv
Z3VlU2VuZERhdGEoCiAgICAgICAgbWFjaF9wb3J0X3QgbWFzdGVyUG9ydCwKICAgICAgICB1aW50
MzJfdCBmbGFnLAogICAgICAgIGNvbnN0IGNoYXIgKmJ1ZmZlciwKICAgICAgICB1aW50MzJfdCBz
aXplICk7CgprZXJuX3JldHVybl90CklPQ2F0YWxvZ3VlVGVybWluYXRlKAogICAgICAgIG1hY2hf
cG9ydF90IG1hc3RlclBvcnQsCiAgICAgICAgdWludDMyX3QgZmxhZywKIGlvX25hbWVfdCBkZXNj
cmlwdGlvbiApOwoKa2Vybl9yZXR1cm5fdApJT0NhdGFsb2d1ZUdldERhdGEoCiAgICAgICAgbWFj
aF9wb3J0X3QgbWFzdGVyUG9ydCwKICAgICAgICB1aW50MzJfdCBmbGFnLAogICAgICAgIGNoYXIg
KipidWZmZXIsCiAgICAgICAgdWludDMyX3QgKnNpemUgKTsKCmtlcm5fcmV0dXJuX3QKSU9DYXRh
bG9ndWVNb2R1bGVMb2FkZWQoCiAgICAgICAgbWFjaF9wb3J0X3QgbWFzdGVyUG9ydCwKICAgICAg
ICBpb19uYW1lX3QgbmFtZSApOwoKa2Vybl9yZXR1cm5fdApJT0NhdGFsb2d1ZVJlc2V0KAogICAg
ICAgIG1hY2hfcG9ydF90IG1hc3RlclBvcnQsCiAgICAgICAgdWludDMyX3QgZmxhZyApOwojIDE1
MTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lP
S2l0TGliLmgiIDMKfQojIDI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9EaXNrQXJiaXRy
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvREFEaXNrLmgiIDIgMwoKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9EaXNrQXJiaXRyYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvREFTZXNzaW9u
LmgiIDEgMwojIDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9EaXNrQXJiaXRyYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvREFTZXNzaW9uLmgiIDMKI2RlZmluZSBfX0RJU0tBUkJJVFJBVElP
Tl9EQVNFU1NJT05fXyAKCgoKCmV4dGVybiAiQyIgewojIDQwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9EaXNrQXJiaXRyYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvREFTZXNzaW9uLmgiIDMK
dHlwZWRlZiBzdHJ1Y3QgX19EQVNlc3Npb24gKiBEQVNlc3Npb25SZWY7CgoKCgoKCmV4dGVybiBD
RlR5cGVJRCBEQVNlc3Npb25HZXRUeXBlSUQoIHZvaWQgKTsKIyA1OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvRGlza0FyYml0cmF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0RBU2Vzc2lvbi5o
IiAzCmV4dGVybiBEQVNlc3Npb25SZWYgREFTZXNzaW9uQ3JlYXRlKCBDRkFsbG9jYXRvclJlZiBh
bGxvY2F0b3IgKTsKIyA2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRGlza0FyYml0cmF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL0RBU2Vzc2lvbi5oIiAzCmV4dGVybiB2b2lkIERBU2Vzc2lv
blNjaGVkdWxlV2l0aFJ1bkxvb3AoIERBU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlJ1bkxvb3BSZWYg
cnVuTG9vcCwgQ0ZTdHJpbmdSZWYgcnVuTG9vcE1vZGUgKTsKIyA3OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvRGlza0FyYml0cmF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0RBU2Vzc2lvbi5o
IiAzCmV4dGVybiB2b2lkIERBU2Vzc2lvblVuc2NoZWR1bGVGcm9tUnVuTG9vcCggREFTZXNzaW9u
UmVmIHNlc3Npb24sIENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydW5Mb29wTW9k
ZSApOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX0RBU2Vzc2lvbiAqIERBQXBwcm92YWxTZXNzaW9u
UmVmOwoKCgoKCgpleHRlcm4gQ0ZUeXBlSUQgREFBcHByb3ZhbFNlc3Npb25HZXRUeXBlSUQoIHZv
aWQgKTsKIyAxMDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Rpc2tBcmJpdHJhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9EQVNlc3Npb24uaCIgMwpleHRlcm4gREFBcHByb3ZhbFNlc3Npb25S
ZWYgREFBcHByb3ZhbFNlc3Npb25DcmVhdGUoIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciApOwoj
IDExMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRGlza0FyYml0cmF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL0RBU2Vzc2lvbi5oIiAzCmV4dGVybiB2b2lkIERBQXBwcm92YWxTZXNzaW9uU2No
ZWR1bGVXaXRoUnVuTG9vcCggREFBcHByb3ZhbFNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZSdW5Mb29w
UmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVmIHJ1bkxvb3BNb2RlICk7CiMgMTIzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9EaXNrQXJiaXRyYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvREFTZXNz
aW9uLmgiIDMKZXh0ZXJuIHZvaWQgREFBcHByb3ZhbFNlc3Npb25VbnNjaGVkdWxlRnJvbVJ1bkxv
b3AoIERBQXBwcm92YWxTZXNzaW9uUmVmIHNlc3Npb24sIENGUnVuTG9vcFJlZiBydW5Mb29wLCBD
RlN0cmluZ1JlZiBydW5Mb29wTW9kZSApOwoKCgoKfQojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9EaXNrQXJiaXRyYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvREFEaXNrLmgiIDIgMwoK
CmV4dGVybiAiQyIgewoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrREFEaXNrRGVzY3JpcHRp
b25Wb2x1bWVLaW5kS2V5OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0RBRGlza0Rlc2NyaXB0
aW9uVm9sdW1lTW91bnRhYmxlS2V5OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0RBRGlza0Rl
c2NyaXB0aW9uVm9sdW1lTmFtZUtleTsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtEQURpc2tE
ZXNjcmlwdGlvblZvbHVtZU5ldHdvcmtLZXk7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrREFE
aXNrRGVzY3JpcHRpb25Wb2x1bWVQYXRoS2V5OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0RB
RGlza0Rlc2NyaXB0aW9uVm9sdW1lVVVJREtleTsKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
REFEaXNrRGVzY3JpcHRpb25NZWRpYUJsb2NrU2l6ZUtleTsKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtEQURpc2tEZXNjcmlwdGlvbk1lZGlhQlNETWFqb3JLZXk7CmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrREFEaXNrRGVzY3JpcHRpb25NZWRpYUJTRE1pbm9yS2V5OwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFCU0ROYW1lS2V5OwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFCU0RVbml0S2V5OwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFDb250ZW50S2V5OwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFFamVjdGFibGVLZXk7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrREFEaXNrRGVzY3JpcHRpb25NZWRpYUljb25LZXk7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrREFEaXNrRGVzY3JpcHRpb25NZWRpYUtpbmRLZXk7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrREFEaXNrRGVzY3JpcHRpb25NZWRpYUxlYWZLZXk7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrREFEaXNrRGVzY3JpcHRpb25NZWRpYU5hbWVLZXk7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrREFEaXNrRGVzY3JpcHRpb25NZWRpYVBhdGhLZXk7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrREFEaXNrRGVzY3JpcHRpb25NZWRpYVJlbW92YWJs
ZUtleTsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtEQURpc2tEZXNjcmlwdGlvbk1lZGlhU2l6
ZUtleTsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtEQURpc2tEZXNjcmlwdGlvbk1lZGlhVHlw
ZUtleTsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtEQURpc2tEZXNjcmlwdGlvbk1lZGlhVVVJ
REtleTsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtEQURpc2tEZXNjcmlwdGlvbk1lZGlhV2hv
bGVLZXk7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrREFEaXNrRGVzY3JpcHRpb25NZWRpYVdy
aXRhYmxlS2V5OwoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtEQURpc2tEZXNjcmlwdGlvbkRl
dmljZUdVSURLZXk7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrREFEaXNrRGVzY3JpcHRpb25E
ZXZpY2VJbnRlcm5hbEtleTsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtEQURpc2tEZXNjcmlw
dGlvbkRldmljZU1vZGVsS2V5OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0RBRGlza0Rlc2Ny
aXB0aW9uRGV2aWNlUGF0aEtleTsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtEQURpc2tEZXNj
cmlwdGlvbkRldmljZVByb3RvY29sS2V5OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0RBRGlz
a0Rlc2NyaXB0aW9uRGV2aWNlUmV2aXNpb25LZXk7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
REFEaXNrRGVzY3JpcHRpb25EZXZpY2VVbml0S2V5OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0RBRGlza0Rlc2NyaXB0aW9uRGV2aWNlVmVuZG9yS2V5OwoKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtEQURpc2tEZXNjcmlwdGlvbkJ1c05hbWVLZXk7CmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrREFEaXNrRGVzY3JpcHRpb25CdXNQYXRoS2V5OwojIDgxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9EaXNrQXJiaXRyYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvREFEaXNrLmgiIDMKdHlw
ZWRlZiBzdHJ1Y3QgX19EQURpc2sgKiBEQURpc2tSZWY7CgoKCgoKCmV4dGVybiBDRlR5cGVJRCBE
QURpc2tHZXRUeXBlSUQoIHZvaWQgKTsKIyAxMDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0Rpc2tBcmJpdHJhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9EQURpc2suaCIgMwpleHRlcm4gREFE
aXNrUmVmIERBRGlza0NyZWF0ZUZyb21CU0ROYW1lKCBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IERBU2Vzc2lvblJlZiBzZXNzaW9uLCBjb25zdCBjaGFyICogbmFtZSApOwojIDExOCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRGlza0FyYml0cmF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0RB
RGlzay5oIiAzCmV4dGVybiBEQURpc2tSZWYgREFEaXNrQ3JlYXRlRnJvbUlPTWVkaWEoIENGQWxs
b2NhdG9yUmVmIGFsbG9jYXRvciwgREFTZXNzaW9uUmVmIHNlc3Npb24sIGlvX3NlcnZpY2VfdCBt
ZWRpYSApOwojIDEyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRGlza0FyYml0cmF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL0RBRGlzay5oIiAzCmV4dGVybiBjb25zdCBjaGFyICogREFEaXNr
R2V0QlNETmFtZSggREFEaXNrUmVmIGRpc2sgKTsKIyAxNDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0Rpc2tBcmJpdHJhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9EQURpc2suaCIgMwpleHRl
cm4gaW9fc2VydmljZV90IERBRGlza0NvcHlJT01lZGlhKCBEQURpc2tSZWYgZGlzayApOwojIDE2
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRGlza0FyYml0cmF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL0RBRGlzay5oIiAzCmV4dGVybiBDRkRpY3Rpb25hcnlSZWYgREFEaXNrQ29weURlc2Ny
aXB0aW9uKCBEQURpc2tSZWYgZGlzayApOwojIDE3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvRGlza0FyYml0cmF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0RBRGlzay5oIiAzCmV4dGVybiBE
QURpc2tSZWYgREFEaXNrQ29weVdob2xlRGlzayggREFEaXNrUmVmIGRpc2sgKTsKCgoKCn0KIyA2
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMiAzCiMgNzEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuICJDIiB7CgoK
I3ByYWdtYSBwYWNrKHB1c2gsIDIpCgoKI2RlZmluZSBfSEZTVU5JU1RSMjU1X0RFRklORURfIAoK
c3RydWN0IEhGU1VuaVN0cjI1NSB7CiAgVUludDE2IGxlbmd0aDsKICBVbmlDaGFyIHVuaWNvZGVb
MjU1XTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSEZTVW5pU3RyMjU1IEhGU1VuaVN0cjI1NTsKdHlwZWRl
ZiBjb25zdCBIRlNVbmlTdHIyNTUgKiBDb25zdEhGU1VuaVN0cjI1NVBhcmFtOwoKI2RlZmluZSBr
RlNGaWxlU2VjdXJpdHlSZW1vdmVBQ0wgKGFjbF90KSBfRklMRVNFQ19SRU1PVkVfQUNMCiMgOTcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZW51bSB7CiAgZnND
dXJQZXJtID0gMHgwMCwKICBmc1JkUGVybSA9IDB4MDEsCiAgZnNXclBlcm0gPSAweDAyLAogIGZz
UmRXclBlcm0gPSAweDAzLAogIGZzUmRXclNoUGVybSA9IDB4MDQKfTsKIyAxMTUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZW51bSB7CiAgZnNSZEFjY2Vzc1Bl
cm0gPSAweDAxLAogIGZzV3JBY2Nlc3NQZXJtID0gMHgwMiwKICBmc1JkRGVueVBlcm0gPSAweDEw
LAogIGZzV3JEZW55UGVybSA9IDB4MjAKfTsKCmVudW0gewogIGZzUnRQYXJJRCA9IDEsCiAgZnNS
dERpcklEID0gMgp9OwoKZW51bSB7CiAgZnNBdE1hcmsgPSAwLAogIGZzRnJvbVN0YXJ0ID0gMSwK
ICBmc0Zyb21MRU9GID0gMiwKICBmc0Zyb21NYXJrID0gMwp9OwoKZW51bSB7CgogIGtGU0FsbG93
Q29uY3VycmVudEFzeW5jSU9CaXQgPSAzLAogIGtGU0FsbG93Q29uY3VycmVudEFzeW5jSU9NYXNr
ID0gMHgwMDA4LAogIGtGU1BsZWFzZUNhY2hlQml0ID0gNCwKICBrRlNQbGVhc2VDYWNoZU1hc2sg
PSAweDAwMTAsCiAga0ZTTm9DYWNoZUJpdCA9IDUsCiAga0ZTTm9DYWNoZU1hc2sgPSAweDAwMjAs
CiAga0ZTUmRWZXJpZnlCaXQgPSA2LAogIGtGU1JkVmVyaWZ5TWFzayA9IDB4MDA0MCwKICBrRlNG
b3JjZVJlYWRCaXQgPSA2LAogIGtGU0ZvcmNlUmVhZE1hc2sgPSAweDAwNDAsCiAga0ZTTmV3TGlu
ZUJpdCA9IDcsCiAga0ZTTmV3TGluZU1hc2sgPSAweDAwODAsCiAga0ZTTmV3TGluZUNoYXJNYXNr
ID0gMHhGRjAwCn07CgoKZW51bSB7CgogIGZzU0JQYXJ0aWFsTmFtZSA9IDB4MDEsCiAgZnNTQkZ1
bGxOYW1lID0gMHgwMiwKICBmc1NCRmxBdHRyaWIgPSAweDA0LAogIGZzU0JGbEZuZHJJbmZvID0g
MHgwOCwKICBmc1NCRmxMZ0xlbiA9IDB4MjAsCiAgZnNTQkZsUHlMZW4gPSAweDQwLAogIGZzU0JG
bFJMZ0xlbiA9IDB4ODAsCiAgZnNTQkZsUlB5TGVuID0gMHgwMTAwLAogIGZzU0JGbENyRGF0ID0g
MHgwMjAwLAogIGZzU0JGbE1kRGF0ID0gMHgwNDAwLAogIGZzU0JGbEJrRGF0ID0gMHgwODAwLAog
IGZzU0JGbFhGbmRySW5mbyA9IDB4MTAwMCwKICBmc1NCRmxQYXJJRCA9IDB4MjAwMCwKICBmc1NC
TmVnYXRlID0gMHg0MDAwLAogIGZzU0JEclVzcldkcyA9IDB4MDgsCiAgZnNTQkRyTm1GbHMgPSAw
eDEwLAogIGZzU0JEckNyRGF0ID0gMHgwMjAwLAogIGZzU0JEck1kRGF0ID0gMHgwNDAwLAogIGZz
U0JEckJrRGF0ID0gMHgwODAwLAogIGZzU0JEckZuZHJJbmZvID0gMHgxMDAwLAogIGZzU0JEclBh
cklEID0gMHgyMDAwLAogIGZzU0JOb2RlSUQgPSAweDgwMDAsCiAgZnNTQkF0dHJpYnV0ZU1vZERh
dGUgPSAweDAwMDEwMDAwLAogIGZzU0JBY2Nlc3NEYXRlID0gMHgwMDAyMDAwMCwKICBmc1NCUGVy
bWlzc2lvbnMgPSAweDAwMDQwMDAwLAogIGZzU0JTa2lwUGFja2FnZUNvbnRlbnRzID0gMHgwMDA4
MDAwMCwKICBmc1NCU2tpcEhpZGRlbkl0ZW1zID0gMHgwMDEwMDAwMCwKICBmc1NCVXNlcklEID0g
MHgwMDIwMDAwMCwKICBmc1NCR3JvdXBJRCA9IDB4MDA0MDAwMDAKfTsKCmVudW0gewoKICBmc1NC
UGFydGlhbE5hbWVCaXQgPSAwLAogIGZzU0JGdWxsTmFtZUJpdCA9IDEsCiAgZnNTQkZsQXR0cmli
Qml0ID0gMiwKICBmc1NCRmxGbmRySW5mb0JpdCA9IDMsCiAgZnNTQkZsTGdMZW5CaXQgPSA1LAog
IGZzU0JGbFB5TGVuQml0ID0gNiwKICBmc1NCRmxSTGdMZW5CaXQgPSA3LAogIGZzU0JGbFJQeUxl
bkJpdCA9IDgsCiAgZnNTQkZsQ3JEYXRCaXQgPSA5LAogIGZzU0JGbE1kRGF0Qml0ID0gMTAsCiAg
ZnNTQkZsQmtEYXRCaXQgPSAxMSwKICBmc1NCRmxYRm5kckluZm9CaXQgPSAxMiwKICBmc1NCRmxQ
YXJJREJpdCA9IDEzLAogIGZzU0JOZWdhdGVCaXQgPSAxNCwKICBmc1NCRHJVc3JXZHNCaXQgPSAz
LAogIGZzU0JEck5tRmxzQml0ID0gNCwKICBmc1NCRHJDckRhdEJpdCA9IDksCiAgZnNTQkRyTWRE
YXRCaXQgPSAxMCwKICBmc1NCRHJCa0RhdEJpdCA9IDExLAogIGZzU0JEckZuZHJJbmZvQml0ID0g
MTIsCiAgZnNTQkRyUGFySURCaXQgPSAxMywKICBmc1NCTm9kZUlEQml0ID0gMTUsCiAgZnNTQkF0
dHJpYnV0ZU1vZERhdGVCaXQgPSAxNiwKICBmc1NCQWNjZXNzRGF0ZUJpdCA9IDE3LAogIGZzU0JQ
ZXJtaXNzaW9uc0JpdCA9IDE4LAogIGZzU0JTa2lwUGFja2FnZUNvbnRlbnRzQml0ID0gMTksCiAg
ZnNTQlNraXBIaWRkZW5JdGVtc0JpdCA9IDIwLAogIGZzU0JVc2VySURCaXQgPSAyMSwKICBmc1NC
R3JvdXBJREJpdCA9IDIyCn07CgplbnVtIHsKCiAgYkxpbWl0RkNCcyA9IDMxLAogIGJMb2NhbFdM
aXN0ID0gMzAsCiAgYk5vTWluaUZuZHIgPSAyOSwKICBiTm9WTkVkaXQgPSAyOCwKICBiTm9MY2xT
eW5jID0gMjcsCiAgYlRyc2hPZmZMaW5lID0gMjYsCiAgYk5vU3dpdGNoVG8gPSAyNSwKICBiTm9E
ZXNrSXRlbXMgPSAyMCwKICBiTm9Cb290QmxrcyA9IDE5LAogIGJBY2Nlc3NDbnRsID0gMTgsCiAg
Yk5vU3lzRGlyID0gMTcsCiAgYkhhc0V4dEZTVm9sID0gMTYsCiAgYkhhc09wZW5EZW55ID0gMTUs
CiAgYkhhc0NvcHlGaWxlID0gMTQsCiAgYkhhc01vdmVSZW5hbWUgPSAxMywKICBiSGFzRGVza3Rv
cE1nciA9IDEyLAogIGJIYXNTaG9ydE5hbWUgPSAxMSwKICBiSGFzRm9sZGVyTG9jayA9IDEwLAog
IGJIYXNQZXJzb25hbEFjY2Vzc1ByaXZpbGVnZXMgPSA5LAogIGJIYXNVc2VyR3JvdXBMaXN0ID0g
OCwKICBiSGFzQ2F0U2VhcmNoID0gNywKICBiSGFzRmlsZUlEcyA9IDYsCiAgYkhhc0JUcmVlTWdy
ID0gNSwKICBiSGFzQmxhbmtBY2Nlc3NQcml2aWxlZ2VzID0gNCwKICBiU3VwcG9ydHNBc3luY1Jl
cXVlc3RzID0gMywKICBiU3VwcG9ydHNUcmFzaFZvbHVtZUNhY2hlID0gMgp9OwoKZW51bSB7Cgog
IGJIYXNEaXJlY3RJTyA9IDEKfTsKCmVudW0gewoKICBiSXNFamVjdGFibGUgPSAwLAogIGJTdXBw
b3J0c0hGU1BsdXNBUElzID0gMSwKICBiU3VwcG9ydHNGU0NhdGFsb2dTZWFyY2ggPSAyLAogIGJT
dXBwb3J0c0ZTRXhjaGFuZ2VPYmplY3RzID0gMywKICBiU3VwcG9ydHMyVEJGaWxlcyA9IDQsCiAg
YlN1cHBvcnRzTG9uZ05hbWVzID0gNSwKICBiU3VwcG9ydHNNdWx0aVNjcmlwdE5hbWVzID0gNiwK
ICBiU3VwcG9ydHNOYW1lZEZvcmtzID0gNywKICBiU3VwcG9ydHNTdWJ0cmVlSXRlcmF0b3JzID0g
OCwKICBiTDJQQ2FuTWFwRmlsZUJsb2NrcyA9IDksCiAgYlBhcmVudE1vZERhdGVDaGFuZ2VzID0g
MTAsCiAgYkFuY2VzdG9yTW9kRGF0ZUNoYW5nZXMgPSAxMSwKICBiU3VwcG9ydHNTeW1ib2xpY0xp
bmtzID0gMTMsCiAgYklzQXV0b01vdW50ZWQgPSAxNCwKICBiQWxsb3dDRGlEYXRhSGFuZGxlciA9
IDE3LAogIGJTdXBwb3J0c0V4Y2x1c2l2ZUxvY2tzID0gMTgsCiAgYlN1cHBvcnRzSm91cm5hbGlu
ZyA9IDE5LAogIGJOb1ZvbHVtZVNpemVzID0gMjAsCiAgYklzT25JbnRlcm5hbEJ1cyA9IDIxLAog
IGJJc0Nhc2VTZW5zaXRpdmUgPSAyMiwKICBiSXNDYXNlUHJlc2VydmluZyA9IDIzLAogIGJEb05v
dERpc3BsYXkgPSAyNCwKICBiSXNSZW1vdmFibGUgPSAyNSwKICBiTm9Sb290VGltZXMgPSAyNiwK
ICBiSXNPbkV4dGVybmFsQnVzID0gMjcsCiAgYlN1cHBvcnRzRXh0ZW5kZWRGaWxlU2VjdXJpdHkg
PSAyOAp9OwoKCgoKCgplbnVtIHsKCiAga1dpZGVQb3NPZmZzZXRCaXQgPSA4LAogIGtVc2VXaWRl
UG9zaXRpb25pbmcgPSAoMSA8PCBrV2lkZVBvc09mZnNldEJpdCksCiAga01heGltdW1CbG9ja3NJ
bjRHQiA9IDB4MDA3RkZGRkYKfTsKCmVudW0gewoKICBmc1VuaXhQcml2ID0gMQp9OwoKZW51bSB7
CgogIGtOb1VzZXJBdXRoZW50aWNhdGlvbiA9IDEsCiAga1Bhc3N3b3JkID0gMiwKICBrRW5jcnlw
dFBhc3N3b3JkID0gMywKICBrVHdvV2F5RW5jcnlwdFBhc3N3b3JkID0gNgp9OwoKCgplbnVtIHsK
ICBrbm9Vc2VyID0gMCwKICBrYWRtaW5pc3RyYXRvclVzZXIgPSAxCn07CgplbnVtIHsKICBrbm9H
cm91cCA9IDAKfTsKCgp0eXBlZGVmIFNJbnQxNiBGU1ZvbHVtZVJlZk51bTsKCnR5cGVkZWYgaW50
IEZTSU9SZWZOdW07CgoKCgplbnVtIHsKICBrRlNJbnZhbGlkVm9sdW1lUmVmTnVtID0gMAp9OwoK
c3RydWN0IEZTUmVmIHsKICBVSW50OCBoaWRkZW5bODBdOwp9Owp0eXBlZGVmIHN0cnVjdCBGU1Jl
ZiBGU1JlZjsKdHlwZWRlZiBGU1JlZiAqIEZTUmVmUHRyOwp0eXBlZGVmIHN0cnVjdCBfX0ZTRmls
ZVNlY3VyaXR5KiBGU0ZpbGVTZWN1cml0eVJlZjsKCnN0cnVjdCBDYXRQb3NpdGlvblJlYyB7CiAg
U0ludDMyIGluaXRpYWxpemU7CiAgU0ludDE2IHByaXZbNl07Cn07CnR5cGVkZWYgc3RydWN0IENh
dFBvc2l0aW9uUmVjIENhdFBvc2l0aW9uUmVjOwoKc3RydWN0IEZTU3BlYyB7CiAgVUludDggaGlk
ZGVuWzcwXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgRlNTcGVjIEZTU3BlYzsKIyAzNTcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKdHlwZWRlZiBGU1NwZWMgKiBGU1Nw
ZWNQdHI7CnR5cGVkZWYgRlNTcGVjUHRyICogRlNTcGVjSGFuZGxlOwoKdHlwZWRlZiBGU1NwZWNQ
dHIgRlNTcGVjQXJyYXlQdHI7CgoKCgp0eXBlZGVmIGNvbnN0IEZTU3BlYyAqIENvbnN0RlNTcGVj
UHRyOwp0eXBlZGVmIHVuaW9uIFBhcmFtQmxvY2tSZWMgUGFyYW1CbG9ja1JlYzsKCnR5cGVkZWYg
dm9pZCAqIFBhcm1CbGtQdHI7CgoKCgp0eXBlZGVmIHZvaWQgKCAqIElPQ29tcGxldGlvblByb2NQ
dHIpKFBhcm1CbGtQdHIgcGFyYW1CbG9jayk7CnR5cGVkZWYgSU9Db21wbGV0aW9uUHJvY1B0ciBJ
T0NvbXBsZXRpb25VUFA7CiMgMTA2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
RmlsZXMuaCIgMwpzdHJ1Y3QgRlNQZXJtaXNzaW9uSW5mbyB7CiAgVUludDMyIHVzZXJJRDsKICBV
SW50MzIgZ3JvdXBJRDsKICBVSW50OCByZXNlcnZlZDE7CiAgVUludDggdXNlckFjY2VzczsKICBV
SW50MTYgbW9kZTsKICBGU0ZpbGVTZWN1cml0eVJlZiBmaWxlU2VjOwp9Owp0eXBlZGVmIHN0cnVj
dCBGU1Blcm1pc3Npb25JbmZvIEZTUGVybWlzc2lvbkluZm87CgoKdHlwZWRlZiBVSW50MzIgRlND
YXRhbG9nSW5mb0JpdG1hcDsKZW51bSB7CiAga0ZTQ2F0SW5mb05vbmUgPSAweDAwMDAwMDAwLAog
IGtGU0NhdEluZm9UZXh0RW5jb2RpbmcgPSAweDAwMDAwMDAxLAogIGtGU0NhdEluZm9Ob2RlRmxh
Z3MgPSAweDAwMDAwMDAyLAogIGtGU0NhdEluZm9Wb2x1bWUgPSAweDAwMDAwMDA0LAogIGtGU0Nh
dEluZm9QYXJlbnREaXJJRCA9IDB4MDAwMDAwMDgsCiAga0ZTQ2F0SW5mb05vZGVJRCA9IDB4MDAw
MDAwMTAsCiAga0ZTQ2F0SW5mb0NyZWF0ZURhdGUgPSAweDAwMDAwMDIwLAogIGtGU0NhdEluZm9D
b250ZW50TW9kID0gMHgwMDAwMDA0MCwKICBrRlNDYXRJbmZvQXR0ck1vZCA9IDB4MDAwMDAwODAs
CiAga0ZTQ2F0SW5mb0FjY2Vzc0RhdGUgPSAweDAwMDAwMTAwLAogIGtGU0NhdEluZm9CYWNrdXBE
YXRlID0gMHgwMDAwMDIwMCwKICBrRlNDYXRJbmZvUGVybWlzc2lvbnMgPSAweDAwMDAwNDAwLAog
IGtGU0NhdEluZm9GaW5kZXJJbmZvID0gMHgwMDAwMDgwMCwKICBrRlNDYXRJbmZvRmluZGVyWElu
Zm8gPSAweDAwMDAxMDAwLAogIGtGU0NhdEluZm9WYWxlbmNlID0gMHgwMDAwMjAwMCwKICBrRlND
YXRJbmZvRGF0YVNpemVzID0gMHgwMDAwNDAwMCwKICBrRlNDYXRJbmZvUnNyY1NpemVzID0gMHgw
MDAwODAwMCwKICBrRlNDYXRJbmZvU2hhcmluZ0ZsYWdzID0gMHgwMDAxMDAwMCwKICBrRlNDYXRJ
bmZvVXNlclByaXZzID0gMHgwMDAyMDAwMCwKICBrRlNDYXRJbmZvVXNlckFjY2VzcyA9IDB4MDAw
ODAwMDAsCiAga0ZTQ2F0SW5mb1NldE93bmVyc2hpcCA9IDB4MDAxMDAwMDAsCiAga0ZTQ2F0SW5m
b0ZTRmlsZVNlY3VyaXR5UmVmID0gMHgwMDQwMDAwMCwKICBrRlNDYXRJbmZvQWxsRGF0ZXMgPSAw
eDAwMDAwM0UwLAogIGtGU0NhdEluZm9HZXR0YWJsZUluZm8gPSAweDAwMDNGRkZGLAogIGtGU0Nh
dEluZm9TZXR0YWJsZUluZm8gPSAweDAwMDAxRkUzLAogIGtGU0NhdEluZm9SZXNlcnZlZCA9IChp
bnQpMHhGRkZDMDAwMAp9OwoKCmVudW0gewogIGtGU05vZGVMb2NrZWRCaXQgPSAwLAogIGtGU05v
ZGVMb2NrZWRNYXNrID0gMHgwMDAxLAogIGtGU05vZGVSZXNPcGVuQml0ID0gMiwKICBrRlNOb2Rl
UmVzT3Blbk1hc2sgPSAweDAwMDQsCiAga0ZTTm9kZURhdGFPcGVuQml0ID0gMywKICBrRlNOb2Rl
RGF0YU9wZW5NYXNrID0gMHgwMDA4LAogIGtGU05vZGVJc0RpcmVjdG9yeUJpdCA9IDQsCiAga0ZT
Tm9kZUlzRGlyZWN0b3J5TWFzayA9IDB4MDAxMCwKICBrRlNOb2RlQ29weVByb3RlY3RCaXQgPSA2
LAogIGtGU05vZGVDb3B5UHJvdGVjdE1hc2sgPSAweDAwNDAsCiAga0ZTTm9kZUZvcmtPcGVuQml0
ID0gNywKICBrRlNOb2RlRm9ya09wZW5NYXNrID0gMHgwMDgwLAogIGtGU05vZGVIYXJkTGlua0Jp
dCA9IDgsCiAga0ZTTm9kZUhhcmRMaW5rTWFzayA9IDB4MDAwMDAxMDAKfTsKCgplbnVtIHsKICBr
RlNOb2RlSW5TaGFyZWRCaXQgPSAyLAogIGtGU05vZGVJblNoYXJlZE1hc2sgPSAweDAwMDQsCiAg
a0ZTTm9kZUlzTW91bnRlZEJpdCA9IDMsCiAga0ZTTm9kZUlzTW91bnRlZE1hc2sgPSAweDAwMDgs
CiAga0ZTTm9kZUlzU2hhcmVQb2ludEJpdCA9IDUsCiAga0ZTTm9kZUlzU2hhcmVQb2ludE1hc2sg
PSAweDAwMjAKfTsKIyAxMTQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxl
cy5oIiAzCnN0cnVjdCBGU0NhdGFsb2dJbmZvIHsKCgoKCgogIFVJbnQxNiBub2RlRmxhZ3M7CgoK
CgogIEZTVm9sdW1lUmVmTnVtIHZvbHVtZTsKCgoKCgogIFVJbnQzMiBwYXJlbnREaXJJRDsKCgoK
CiAgVUludDMyIG5vZGVJRDsKCgoKCgogIFVJbnQ4IHNoYXJpbmdGbGFnczsKICBVSW50OCB1c2Vy
UHJpdmlsZWdlczsKICBVSW50OCByZXNlcnZlZDE7CgoKCgogIFVJbnQ4IHJlc2VydmVkMjsKCgoK
CiAgVVRDRGF0ZVRpbWUgY3JlYXRlRGF0ZTsKCgoKCgogIFVUQ0RhdGVUaW1lIGNvbnRlbnRNb2RE
YXRlOwoKCgoKCiAgVVRDRGF0ZVRpbWUgYXR0cmlidXRlTW9kRGF0ZTsKCgoKCgogIFVUQ0RhdGVU
aW1lIGFjY2Vzc0RhdGU7CgoKCgoKICBVVENEYXRlVGltZSBiYWNrdXBEYXRlOwoKCgoKCiAgRlNQ
ZXJtaXNzaW9uSW5mbyBwZXJtaXNzaW9uczsKCgoKCgogIFVJbnQ4IGZpbmRlckluZm9bMTZdOwoK
CgoKCiAgVUludDggZXh0RmluZGVySW5mb1sxNl07CgoKCgoKCiAgVUludDY0IGRhdGFMb2dpY2Fs
U2l6ZTsKCgoKCgogIFVJbnQ2NCBkYXRhUGh5c2ljYWxTaXplOwoKCgoKCiAgVUludDY0IHJzcmNM
b2dpY2FsU2l6ZTsKCgoKCgogIFVJbnQ2NCByc3JjUGh5c2ljYWxTaXplOwoKCgoKCiAgVUludDMy
IHZhbGVuY2U7CgoKCgoKICBUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nSGludDsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgRlNDYXRhbG9nSW5mbyBGU0NhdGFsb2dJbmZvOwojIDEzMDAgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKdHlwZWRlZiBGU0NhdGFsb2dJbmZvICog
RlNDYXRhbG9nSW5mb1B0cjsKc3RydWN0IEZTUmVmUGFyYW0gewogIFFFbGVtUHRyIHFMaW5rOwog
IFNJbnQxNiBxVHlwZTsKICBTSW50MTYgaW9UcmFwOwogIFB0ciBpb0NtZEFkZHI7CiAgSU9Db21w
bGV0aW9uVVBQIGlvQ29tcGxldGlvbjsKICB2b2xhdGlsZSBPU0VyciBpb1Jlc3VsdDsKICBDb25z
dFN0cmluZ1B0ciBpb05hbWVQdHI7CiAgRlNWb2x1bWVSZWZOdW0gaW9WUmVmTnVtOwoKICBTSW50
MTYgcmVzZXJ2ZWQxOwogIFVJbnQ4IHJlc2VydmVkMjsKICBVSW50OCByZXNlcnZlZDM7CgogIGNv
bnN0IEZTUmVmICogcmVmOwogIEZTQ2F0YWxvZ0luZm9CaXRtYXAgd2hpY2hJbmZvOwogIEZTQ2F0
YWxvZ0luZm8gKiBjYXRJbmZvOwogIFVuaUNoYXJDb3VudCBuYW1lTGVuZ3RoOwogIGNvbnN0IFVu
aUNoYXIgKiBuYW1lOwogIFVJbnQzMiBpb0RpcklEOwogIEZTU3BlY1B0ciBzcGVjOwogIEZTUmVm
ICogcGFyZW50UmVmOwogIEZTUmVmICogbmV3UmVmOwogIFRleHRFbmNvZGluZyB0ZXh0RW5jb2Rp
bmdIaW50OwogIEhGU1VuaVN0cjI1NSAqIG91dE5hbWU7Cn07CnR5cGVkZWYgc3RydWN0IEZTUmVm
UGFyYW0gRlNSZWZQYXJhbTsKdHlwZWRlZiBGU1JlZlBhcmFtICogRlNSZWZQYXJhbVB0cjsKCnN0
cnVjdCBGU1JlZkZvcmtJT1BhcmFtIHsKICBRRWxlbVB0ciBxTGluazsKICBTSW50MTYgcVR5cGU7
CiAgU0ludDE2IGlvVHJhcDsKICBQdHIgaW9DbWRBZGRyOwogIElPQ29tcGxldGlvblVQUCBpb0Nv
bXBsZXRpb247CiAgdm9sYXRpbGUgT1NFcnIgaW9SZXN1bHQ7CiAgY29uc3QgRlNSZWYgKiBwYXJl
bnRSZWY7CiAgVW5pQ2hhckNvdW50IG5hbWVMZW5ndGg7CiAgY29uc3QgVW5pQ2hhciAqIG5hbWU7
CiAgRlNDYXRhbG9nSW5mb0JpdG1hcCB3aGljaEluZm87CiAgY29uc3QgRlNDYXRhbG9nSW5mbyAq
IGNhdEluZm87CiAgVW5pQ2hhckNvdW50IGZvcmtOYW1lTGVuZ3RoOwogIGNvbnN0IFVuaUNoYXIg
KiBmb3JrTmFtZTsKICBTSW50OCBwZXJtaXNzaW9uczsKICBVSW50OCByZXNlcnZlZDE7CiAgRlNJ
T1JlZk51bSBmb3JrUmVmTnVtOwogIEZTUmVmICogbmV3UmVmOwp9Owp0eXBlZGVmIHN0cnVjdCBG
U1JlZkZvcmtJT1BhcmFtIEZTUmVmRm9ya0lPUGFyYW07CnR5cGVkZWYgRlNSZWZGb3JrSU9QYXJh
bSAqIEZTUmVmRm9ya0lPUGFyYW1QdHI7CnR5cGVkZWYgc3RydWN0IE9wYXF1ZUZTSXRlcmF0b3Iq
IEZTSXRlcmF0b3I7CmVudW0gewogIGtGU0l0ZXJhdGVGbGF0ID0gMCwKICBrRlNJdGVyYXRlU3Vi
dHJlZSA9IDEsCiAga0ZTSXRlcmF0ZURlbGV0ZSA9IDIsCiAga0ZTSXRlcmF0ZVJlc2VydmVkID0g
KGludCkweEZGRkZGRkZDCn07Cgp0eXBlZGVmIE9wdGlvbkJpdHMgRlNJdGVyYXRvckZsYWdzOwpz
dHJ1Y3QgRlNTZWFyY2hQYXJhbXMgewogIER1cmF0aW9uIHNlYXJjaFRpbWU7CiAgT3B0aW9uQml0
cyBzZWFyY2hCaXRzOwogIFVuaUNoYXJDb3VudCBzZWFyY2hOYW1lTGVuZ3RoOwogIGNvbnN0IFVu
aUNoYXIgKiBzZWFyY2hOYW1lOwogIEZTQ2F0YWxvZ0luZm8gKiBzZWFyY2hJbmZvMTsKICBGU0Nh
dGFsb2dJbmZvICogc2VhcmNoSW5mbzI7Cn07CnR5cGVkZWYgc3RydWN0IEZTU2VhcmNoUGFyYW1z
IEZTU2VhcmNoUGFyYW1zOwp0eXBlZGVmIEZTU2VhcmNoUGFyYW1zICogRlNTZWFyY2hQYXJhbXNQ
dHI7CnN0cnVjdCBGU0NhdGFsb2dCdWxrUGFyYW0gewogIFFFbGVtUHRyIHFMaW5rOwogIFNJbnQx
NiBxVHlwZTsKICBTSW50MTYgaW9UcmFwOwogIFB0ciBpb0NtZEFkZHI7CiAgSU9Db21wbGV0aW9u
VVBQIGlvQ29tcGxldGlvbjsKICB2b2xhdGlsZSBPU0VyciBpb1Jlc3VsdDsKICBCb29sZWFuIGNv
bnRhaW5lckNoYW5nZWQ7CiAgVUludDggcmVzZXJ2ZWQ7CgogIEZTSXRlcmF0b3JGbGFncyBpdGVy
YXRvckZsYWdzOwogIEZTSXRlcmF0b3IgaXRlcmF0b3I7CiAgY29uc3QgRlNSZWYgKiBjb250YWlu
ZXI7CiAgSXRlbUNvdW50IG1heGltdW1JdGVtczsKICBJdGVtQ291bnQgYWN0dWFsSXRlbXM7CiAg
RlNDYXRhbG9nSW5mb0JpdG1hcCB3aGljaEluZm87CiAgRlNDYXRhbG9nSW5mbyAqIGNhdGFsb2dJ
bmZvOwogIEZTUmVmICogcmVmczsKICBGU1NwZWNQdHIgc3BlY3M7CiAgSEZTVW5pU3RyMjU1ICog
bmFtZXM7CiAgY29uc3QgRlNTZWFyY2hQYXJhbXMgKiBzZWFyY2hQYXJhbXM7Cn07CnR5cGVkZWYg
c3RydWN0IEZTQ2F0YWxvZ0J1bGtQYXJhbSBGU0NhdGFsb2dCdWxrUGFyYW07CnR5cGVkZWYgRlND
YXRhbG9nQnVsa1BhcmFtICogRlNDYXRhbG9nQnVsa1BhcmFtUHRyOwp0eXBlZGVmIFVJbnQxNiBG
U0FsbG9jYXRpb25GbGFnczsKZW51bSB7CiAga0ZTQWxsb2NEZWZhdWx0RmxhZ3MgPSAweDAwMDAs
CiAga0ZTQWxsb2NBbGxPck5vdGhpbmdNYXNrID0gMHgwMDAxLAogIGtGU0FsbG9jQ29udGlndW91
c01hc2sgPSAweDAwMDIsCiAga0ZTQWxsb2NOb1JvdW5kVXBNYXNrID0gMHgwMDA0LAogIGtGU0Fs
bG9jUmVzZXJ2ZWRNYXNrID0gMHhGRkY4Cn07CgpzdHJ1Y3QgRlNGb3JrSU9QYXJhbSB7CiAgUUVs
ZW1QdHIgcUxpbms7CiAgU0ludDE2IHFUeXBlOwogIFNJbnQxNiBpb1RyYXA7CiAgUHRyIGlvQ21k
QWRkcjsKICBJT0NvbXBsZXRpb25VUFAgaW9Db21wbGV0aW9uOwogIHZvbGF0aWxlIE9TRXJyIGlv
UmVzdWx0OwogIHZvaWQgKiByZXNlcnZlZDE7CiAgU0ludDE2IHJlc2VydmVkMjsKICBGU0lPUmVm
TnVtIGZvcmtSZWZOdW07CiAgVUludDggcmVzZXJ2ZWQzOwogIFNJbnQ4IHBlcm1pc3Npb25zOwog
IGNvbnN0IEZTUmVmICogcmVmOwoKCiAgUHRyIGJ1ZmZlcjsKICBVSW50MzIgcmVxdWVzdENvdW50
OwogIFVJbnQzMiBhY3R1YWxDb3VudDsKICBVSW50MTYgcG9zaXRpb25Nb2RlOwogIFNJbnQ2NCBw
b3NpdGlvbk9mZnNldDsKCiAgRlNBbGxvY2F0aW9uRmxhZ3MgYWxsb2NhdGlvbkZsYWdzOwogIFVJ
bnQ2NCBhbGxvY2F0aW9uQW1vdW50OwoKICBVbmlDaGFyQ291bnQgZm9ya05hbWVMZW5ndGg7CiAg
Y29uc3QgVW5pQ2hhciAqIGZvcmtOYW1lOwoKICBDYXRQb3NpdGlvblJlYyBmb3JrSXRlcmF0b3I7
CiAgSEZTVW5pU3RyMjU1ICogb3V0Rm9ya05hbWU7Cn07CnR5cGVkZWYgc3RydWN0IEZTRm9ya0lP
UGFyYW0gRlNGb3JrSU9QYXJhbTsKdHlwZWRlZiBGU0ZvcmtJT1BhcmFtICogRlNGb3JrSU9QYXJh
bVB0cjsKdHlwZWRlZiBVSW50OCBGU0ZvcmtJbmZvRmxhZ3M7CnN0cnVjdCBGU0ZvcmtJbmZvIHsK
ICBGU0ZvcmtJbmZvRmxhZ3MgZmxhZ3M7CiAgU0ludDggcGVybWlzc2lvbnM7CiAgRlNWb2x1bWVS
ZWZOdW0gdm9sdW1lOwogIFVJbnQzMiByZXNlcnZlZDI7CiAgVUludDMyIG5vZGVJRDsKICBVSW50
MzIgZm9ya0lEOwogIFVJbnQ2NCBjdXJyZW50UG9zaXRpb247CiAgVUludDY0IGxvZ2ljYWxFT0Y7
CiAgVUludDY0IHBoeXNpY2FsRU9GOwogIFVJbnQ2NCBwcm9jZXNzOwp9Owp0eXBlZGVmIHN0cnVj
dCBGU0ZvcmtJbmZvIEZTRm9ya0luZm87CnR5cGVkZWYgRlNGb3JrSW5mbyAqIEZTRm9ya0luZm9Q
dHI7CnN0cnVjdCBGU0ZvcmtDQkluZm9QYXJhbSB7CiAgUUVsZW1QdHIgcUxpbms7CiAgU0ludDE2
IHFUeXBlOwogIFNJbnQxNiBpb1RyYXA7CiAgUHRyIGlvQ21kQWRkcjsKICBJT0NvbXBsZXRpb25V
UFAgaW9Db21wbGV0aW9uOwogIHZvbGF0aWxlIE9TRXJyIGlvUmVzdWx0OwogIEZTSU9SZWZOdW0g
ZGVzaXJlZFJlZk51bTsKICBGU1ZvbHVtZVJlZk51bSB2b2x1bWVSZWZOdW07CiAgRlNJT1JlZk51
bSBpdGVyYXRvcjsKICBGU1ZvbHVtZVJlZk51bSBhY3R1YWxSZWZOdW07CgogIEZTUmVmICogcmVm
OwogIEZTRm9ya0luZm8gKiBmb3JrSW5mbzsKICBIRlNVbmlTdHIyNTUgKiBmb3JrTmFtZTsKfTsK
dHlwZWRlZiBzdHJ1Y3QgRlNGb3JrQ0JJbmZvUGFyYW0gRlNGb3JrQ0JJbmZvUGFyYW07CnR5cGVk
ZWYgRlNGb3JrQ0JJbmZvUGFyYW0gKiBGU0ZvcmtDQkluZm9QYXJhbVB0cjsKCnN0cnVjdCBGU1Jh
bmdlTG9ja1BhcmFtIHsKICBRRWxlbVB0ciBxTGluazsKICBTSW50MTYgcVR5cGU7CiAgU0ludDE2
IGlvVHJhcDsKICBQdHIgaW9DbWRBZGRyOwogIElPQ29tcGxldGlvblVQUCBpb0NvbXBsZXRpb247
CiAgdm9sYXRpbGUgT1NFcnIgaW9SZXN1bHQ7CiAgRlNJT1JlZk51bSBmb3JrUmVmTnVtOwogIFVJ
bnQ2NCByZXF1ZXN0Q291bnQ7CiAgVUludDE2IHBvc2l0aW9uTW9kZTsKICBTSW50NjQgcG9zaXRp
b25PZmZzZXQ7CiAgVUludDY0IHJhbmdlU3RhcnQ7Cgp9Owp0eXBlZGVmIHN0cnVjdCBGU1Jhbmdl
TG9ja1BhcmFtIEZTUmFuZ2VMb2NrUGFyYW07CnR5cGVkZWYgRlNSYW5nZUxvY2tQYXJhbSAqIEZT
UmFuZ2VMb2NrUGFyYW1QdHI7CnR5cGVkZWYgVUludDMyIEZTVm9sdW1lSW5mb0JpdG1hcDsKZW51
bSB7CiAga0ZTVm9sSW5mb05vbmUgPSAweDAwMDAsCiAga0ZTVm9sSW5mb0NyZWF0ZURhdGUgPSAw
eDAwMDEsCiAga0ZTVm9sSW5mb01vZERhdGUgPSAweDAwMDIsCiAga0ZTVm9sSW5mb0JhY2t1cERh
dGUgPSAweDAwMDQsCiAga0ZTVm9sSW5mb0NoZWNrZWREYXRlID0gMHgwMDA4LAogIGtGU1ZvbElu
Zm9GaWxlQ291bnQgPSAweDAwMTAsCiAga0ZTVm9sSW5mb0RpckNvdW50ID0gMHgwMDIwLAogIGtG
U1ZvbEluZm9TaXplcyA9IDB4MDA0MCwKICBrRlNWb2xJbmZvQmxvY2tzID0gMHgwMDgwLAogIGtG
U1ZvbEluZm9OZXh0QWxsb2MgPSAweDAxMDAsCiAga0ZTVm9sSW5mb1JzcmNDbHVtcCA9IDB4MDIw
MCwKICBrRlNWb2xJbmZvRGF0YUNsdW1wID0gMHgwNDAwLAogIGtGU1ZvbEluZm9OZXh0SUQgPSAw
eDA4MDAsCiAga0ZTVm9sSW5mb0ZpbmRlckluZm8gPSAweDEwMDAsCiAga0ZTVm9sSW5mb0ZsYWdz
ID0gMHgyMDAwLAogIGtGU1ZvbEluZm9GU0luZm8gPSAweDQwMDAsCiAga0ZTVm9sSW5mb0RyaXZl
SW5mbyA9IDB4ODAwMCwKICBrRlNWb2xJbmZvR2V0dGFibGVJbmZvID0gMHhGRkZGLAogIGtGU1Zv
bEluZm9TZXR0YWJsZUluZm8gPSAweDMwMDQKfTsKCgplbnVtIHsKICBrRlNWb2xGbGFnRGVmYXVs
dFZvbHVtZUJpdCA9IDUsCiAga0ZTVm9sRmxhZ0RlZmF1bHRWb2x1bWVNYXNrID0gMHgwMDIwLAog
IGtGU1ZvbEZsYWdGaWxlc09wZW5CaXQgPSA2LAogIGtGU1ZvbEZsYWdGaWxlc09wZW5NYXNrID0g
MHgwMDQwLAogIGtGU1ZvbEZsYWdIYXJkd2FyZUxvY2tlZEJpdCA9IDcsCiAga0ZTVm9sRmxhZ0hh
cmR3YXJlTG9ja2VkTWFzayA9IDB4MDA4MCwKICBrRlNWb2xGbGFnSm91cm5hbGluZ0FjdGl2ZUJp
dCA9IDE0LAogIGtGU1ZvbEZsYWdKb3VybmFsaW5nQWN0aXZlTWFzayA9IDB4NDAwMCwKICBrRlNW
b2xGbGFnU29mdHdhcmVMb2NrZWRCaXQgPSAxNSwKICBrRlNWb2xGbGFnU29mdHdhcmVMb2NrZWRN
YXNrID0gMHg4MDAwCn07CgoKc3RydWN0IEZTVm9sdW1lSW5mbyB7CgogIFVUQ0RhdGVUaW1lIGNy
ZWF0ZURhdGU7CiAgVVRDRGF0ZVRpbWUgbW9kaWZ5RGF0ZTsKICBVVENEYXRlVGltZSBiYWNrdXBE
YXRlOwogIFVUQ0RhdGVUaW1lIGNoZWNrZWREYXRlOwoKCiAgVUludDMyIGZpbGVDb3VudDsKICBV
SW50MzIgZm9sZGVyQ291bnQ7CgoKICBVSW50NjQgdG90YWxCeXRlczsKICBVSW50NjQgZnJlZUJ5
dGVzOwoKCiAgVUludDMyIGJsb2NrU2l6ZTsKICBVSW50MzIgdG90YWxCbG9ja3M7CiAgVUludDMy
IGZyZWVCbG9ja3M7CiAgVUludDMyIG5leHRBbGxvY2F0aW9uOwogIFVJbnQzMiByc3JjQ2x1bXBT
aXplOwogIFVJbnQzMiBkYXRhQ2x1bXBTaXplOwogIFVJbnQzMiBuZXh0Q2F0YWxvZ0lEOwogIFVJ
bnQ4IGZpbmRlckluZm9bMzJdOwoKCiAgVUludDE2IGZsYWdzOwogIFVJbnQxNiBmaWxlc3lzdGVt
SUQ7CiAgVUludDE2IHNpZ25hdHVyZTsKICBVSW50MTYgZHJpdmVOdW1iZXI7CiAgRlNJT1JlZk51
bSBkcml2ZXJSZWZOdW07Cn07CnR5cGVkZWYgc3RydWN0IEZTVm9sdW1lSW5mbyBGU1ZvbHVtZUlu
Zm87CnR5cGVkZWYgRlNWb2x1bWVJbmZvICogRlNWb2x1bWVJbmZvUHRyOwpzdHJ1Y3QgRlNWb2x1
bWVJbmZvUGFyYW0gewogIFFFbGVtUHRyIHFMaW5rOwogIFNJbnQxNiBxVHlwZTsKICBTSW50MTYg
aW9UcmFwOwogIFB0ciBpb0NtZEFkZHI7CiAgSU9Db21wbGV0aW9uVVBQIGlvQ29tcGxldGlvbjsK
ICB2b2xhdGlsZSBPU0VyciBpb1Jlc3VsdDsKICBTdHJpbmdQdHIgaW9OYW1lUHRyOwogIEZTVm9s
dW1lUmVmTnVtIGlvVlJlZk51bTsKCiAgVUludDMyIHZvbHVtZUluZGV4OwogIEZTVm9sdW1lSW5m
b0JpdG1hcCB3aGljaEluZm87CiAgRlNWb2x1bWVJbmZvICogdm9sdW1lSW5mbzsKICBIRlNVbmlT
dHIyNTUgKiB2b2x1bWVOYW1lOwogIEZTUmVmICogcmVmOwp9Owp0eXBlZGVmIHN0cnVjdCBGU1Zv
bHVtZUluZm9QYXJhbSBGU1ZvbHVtZUluZm9QYXJhbTsKdHlwZWRlZiBGU1ZvbHVtZUluZm9QYXJh
bSAqIEZTVm9sdW1lSW5mb1BhcmFtUHRyOwpzdHJ1Y3QgR2V0Vm9sUGFybXNJbmZvQnVmZmVyIHsK
ICBTSW50MTYgdk1WZXJzaW9uOwogIFNJbnQzMiB2TUF0dHJpYjsKICBIYW5kbGUgdk1Mb2NhbEhh
bmQ7CiAgU0ludDMyIHZNU2VydmVyQWRyOwoKICBTSW50MzIgdk1Wb2x1bWVHcmFkZTsKICBTSW50
MTYgdk1Gb3JlaWduUHJpdklEOwoKICBTSW50MzIgdk1FeHRlbmRlZEF0dHJpYnV0ZXM7CgogIHZv
aWQgKiB2TURldmljZUlEOwoKICBVbmlDaGFyQ291bnQgdk1NYXhOYW1lTGVuZ3RoOwoKfTsKdHlw
ZWRlZiBzdHJ1Y3QgR2V0Vm9sUGFybXNJbmZvQnVmZmVyIEdldFZvbFBhcm1zSW5mb0J1ZmZlcjsK
CgoKCgoKdHlwZWRlZiBPU1R5cGUgVm9sdW1lVHlwZTsKZW51bSB7CgogIEFwcGxlU2hhcmVNZWRp
YVR5cGUgPSAnYWZwbScKfTsKCgoKCnN0cnVjdCBWb2xNb3VudEluZm9IZWFkZXIgewogIFNJbnQx
NiBsZW5ndGg7CiAgVm9sdW1lVHlwZSBtZWRpYTsKfTsKdHlwZWRlZiBzdHJ1Y3QgVm9sTW91bnRJ
bmZvSGVhZGVyIFZvbE1vdW50SW5mb0hlYWRlcjsKdHlwZWRlZiBWb2xNb3VudEluZm9IZWFkZXIg
KiBWb2xNb3VudEluZm9QdHI7CgoKCgpzdHJ1Y3QgVm9sdW1lTW91bnRJbmZvSGVhZGVyIHsKICBT
SW50MTYgbGVuZ3RoOwogIFZvbHVtZVR5cGUgbWVkaWE7CiAgU0ludDE2IGZsYWdzOwp9Owp0eXBl
ZGVmIHN0cnVjdCBWb2x1bWVNb3VudEluZm9IZWFkZXIgVm9sdW1lTW91bnRJbmZvSGVhZGVyOwp0
eXBlZGVmIFZvbHVtZU1vdW50SW5mb0hlYWRlciAqIFZvbHVtZU1vdW50SW5mb0hlYWRlclB0cjsK
CmVudW0gewogIHZvbE1vdW50Tm9Mb2dpbk1zZ0ZsYWdCaXQgPSAwLAogIHZvbE1vdW50Tm9Mb2dp
bk1zZ0ZsYWdNYXNrID0gMHgwMDAxLAogIHZvbE1vdW50RXh0ZW5kZWRGbGFnc0JpdCA9IDcsCiAg
dm9sTW91bnRFeHRlbmRlZEZsYWdzTWFzayA9IDB4MDA4MCwKICB2b2xNb3VudEludGVyYWN0Qml0
ID0gMTUsCiAgdm9sTW91bnRJbnRlcmFjdE1hc2sgPSAweDgwMDAsCiAgdm9sTW91bnRDaGFuZ2Vk
Qml0ID0gMTQsCiAgdm9sTW91bnRDaGFuZ2VkTWFzayA9IDB4NDAwMCwKICB2b2xNb3VudEZTUmVz
ZXJ2ZWRNYXNrID0gMHgwMEZGLAogIHZvbE1vdW50U3lzUmVzZXJ2ZWRNYXNrID0gMHhGRjAwCn07
CgoKCnN0cnVjdCBBRlBWb2xNb3VudEluZm8gewogIFNJbnQxNiBsZW5ndGg7CiAgVm9sdW1lVHlw
ZSBtZWRpYTsKICBTSW50MTYgZmxhZ3M7CiAgU0ludDggbmJwSW50ZXJ2YWw7CiAgU0ludDggbmJw
Q291bnQ7CiAgU0ludDE2IHVhbVR5cGU7CiAgU0ludDE2IHpvbmVOYW1lT2Zmc2V0OwogIFNJbnQx
NiBzZXJ2ZXJOYW1lT2Zmc2V0OwogIFNJbnQxNiB2b2xOYW1lT2Zmc2V0OwogIFNJbnQxNiB1c2Vy
TmFtZU9mZnNldDsKICBTSW50MTYgdXNlclBhc3N3b3JkT2Zmc2V0OwogIFNJbnQxNiB2b2xQYXNz
d29yZE9mZnNldDsKICBjaGFyIEFGUERhdGFbMTQ0XTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQUZQVm9s
TW91bnRJbmZvIEFGUFZvbE1vdW50SW5mbzsKdHlwZWRlZiBBRlBWb2xNb3VudEluZm8gKiBBRlBW
b2xNb3VudEluZm9QdHI7CgoKCnN0cnVjdCBBRlBYVm9sTW91bnRJbmZvIHsKICBTSW50MTYgbGVu
Z3RoOwogIFZvbHVtZVR5cGUgbWVkaWE7CiAgU0ludDE2IGZsYWdzOwogIFNJbnQ4IG5icEludGVy
dmFsOwogIFNJbnQ4IG5icENvdW50OwogIFNJbnQxNiB1YW1UeXBlOwogIFNJbnQxNiB6b25lTmFt
ZU9mZnNldDsKICBTSW50MTYgc2VydmVyTmFtZU9mZnNldDsKICBTSW50MTYgdm9sTmFtZU9mZnNl
dDsKICBTSW50MTYgdXNlck5hbWVPZmZzZXQ7CiAgU0ludDE2IHVzZXJQYXNzd29yZE9mZnNldDsK
ICBTSW50MTYgdm9sUGFzc3dvcmRPZmZzZXQ7CiAgU0ludDE2IGV4dGVuZGVkRmxhZ3M7CiAgU0lu
dDE2IHVhbU5hbWVPZmZzZXQ7CiAgU0ludDE2IGFsdGVybmF0ZUFkZHJlc3NPZmZzZXQ7CiAgY2hh
ciBBRlBEYXRhWzE3Nl07Cn07CnR5cGVkZWYgc3RydWN0IEFGUFhWb2xNb3VudEluZm8gQUZQWFZv
bE1vdW50SW5mbzsKdHlwZWRlZiBBRlBYVm9sTW91bnRJbmZvICogQUZQWFZvbE1vdW50SW5mb1B0
cjsKZW51bSB7CiAga0FGUEV4dGVuZGVkRmxhZ3NBbHRlcm5hdGVBZGRyZXNzTWFzayA9IDEKfTsK
CgplbnVtIHsKCiAga0FGUFRhZ1R5cGVJUCA9IDB4MDEsCiAga0FGUFRhZ1R5cGVJUFBvcnQgPSAw
eDAyLAogIGtBRlBUYWdUeXBlRERQID0gMHgwMywKICBrQUZQVGFnVHlwZUROUyA9IDB4MDQKfTsK
CgplbnVtIHsKCiAga0FGUFRhZ0xlbmd0aElQID0gMHgwNiwKICBrQUZQVGFnTGVuZ3RoSVBQb3J0
ID0gMHgwOCwKICBrQUZQVGFnTGVuZ3RoRERQID0gMHgwNgp9OwoKc3RydWN0IEFGUFRhZ0RhdGEg
ewogIFVJbnQ4IGZMZW5ndGg7CiAgVUludDggZlR5cGU7CiAgVUludDggZkRhdGFbMV07Cn07CnR5
cGVkZWYgc3RydWN0IEFGUFRhZ0RhdGEgQUZQVGFnRGF0YTsKc3RydWN0IEFGUEFsdGVybmF0ZUFk
ZHJlc3MgewoKICBVSW50OCBmVmVyc2lvbjsKICBVSW50OCBmQWRkcmVzc0NvdW50OwogIFVJbnQ4
IGZBZGRyZXNzTGlzdFsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQUZQQWx0ZXJuYXRlQWRkcmVzcyBB
RlBBbHRlcm5hdGVBZGRyZXNzOwplbnVtIHsKICBrTGFyZ2VJY29uU2l6ZSA9IDI1NiwKICBrTGFy
Z2U0Qml0SWNvblNpemUgPSA1MTIsCiAga0xhcmdlOEJpdEljb25TaXplID0gMTAyNCwKICBrU21h
bGxJY29uU2l6ZSA9IDY0LAogIGtTbWFsbDRCaXRJY29uU2l6ZSA9IDEyOCwKICBrU21hbGw4Qml0
SWNvblNpemUgPSAyNTYKfTsKIyAxNzMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9GaWxlcy5oIiAzCmV4dGVybiBJT0NvbXBsZXRpb25VUFAKTmV3SU9Db21wbGV0aW9uVVBQKElP
Q29tcGxldGlvblByb2NQdHIgdXNlclJvdXRpbmUpIDsKIyAxNzQyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VJT0NvbXBsZXRp
b25VUFAoSU9Db21wbGV0aW9uVVBQIHVzZXJVUFApIDsKIyAxNzUzICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiB2b2lkCkludm9rZUlPQ29tcGxldGlv
blVQUCgKICBQYXJtQmxrUHRyIHBhcmFtQmxvY2ssCiAgSU9Db21wbGV0aW9uVVBQIHVzZXJVUFAp
IDsKCgoKICAgIGlubGluZSBJT0NvbXBsZXRpb25VUFAgTmV3SU9Db21wbGV0aW9uVVBQKElPQ29t
cGxldGlvblByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBp
bmxpbmUgdm9pZCBEaXNwb3NlSU9Db21wbGV0aW9uVVBQKElPQ29tcGxldGlvblVQUCkgeyB9CiAg
ICBpbmxpbmUgdm9pZCBJbnZva2VJT0NvbXBsZXRpb25VUFAoUGFybUJsa1B0ciBwYXJhbUJsb2Nr
LCBJT0NvbXBsZXRpb25VUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKHBhcmFtQmxvY2spOyB9CiMg
MTc5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4g
T1NFcnIgRlNNYWtlRlNSZWZVbmljb2RlKGNvbnN0IEZTUmVmICpwYXJlbnRSZWYsIFVuaUNoYXJD
b3VudCBuYW1lTGVuZ3RoLCBjb25zdCBVbmlDaGFyICpuYW1lLCBUZXh0RW5jb2RpbmcgdGV4dEVu
Y29kaW5nSGludCwgRlNSZWYgKm5ld1JlZikgOwojIDE4MDggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIFBCTWFrZUZTUmVmVW5pY29kZVN5
bmMoRlNSZWZQYXJhbSAqIHBhcmFtQmxvY2spIDsKIyAxODIyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiB2b2lkIFBCTWFrZUZTUmVmVW5pY29kZUFz
eW5jKEZTUmVmUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMgMTg0NyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgRlNDb21wYXJlRlNSZWZzKGNv
bnN0IEZTUmVmICpyZWYxLCBjb25zdCBGU1JlZiAqcmVmMikgOwojIDE4NjEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIFBCQ29tcGFyZUZT
UmVmc1N5bmMoRlNSZWZQYXJhbSAqIHBhcmFtQmxvY2spIDsKIyAxODc1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiB2b2lkIFBCQ29tcGFyZUZTUmVm
c0FzeW5jKEZTUmVmUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMgMTkwNCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgRlNDcmVhdGVGaWxlVW5p
Y29kZShjb25zdCBGU1JlZiAqcGFyZW50UmVmLCBVbmlDaGFyQ291bnQgbmFtZUxlbmd0aCwgY29u
c3QgVW5pQ2hhciAqbmFtZSwgRlNDYXRhbG9nSW5mb0JpdG1hcCB3aGljaEluZm8sIGNvbnN0IEZT
Q2F0YWxvZ0luZm8gKmNhdGFsb2dJbmZvLCBGU1JlZiAqbmV3UmVmLCBGU1NwZWNQdHIgbmV3U3Bl
YykgOwojIDE5MTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMK
ZXh0ZXJuIE9TRXJyIFBCQ3JlYXRlRmlsZVVuaWNvZGVTeW5jKEZTUmVmUGFyYW0gKiBwYXJhbUJs
b2NrKSA7CiMgMTkzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIg
MwpleHRlcm4gdm9pZCBQQkNyZWF0ZUZpbGVVbmljb2RlQXN5bmMoRlNSZWZQYXJhbSAqIHBhcmFt
QmxvY2spIDsKIyAxOTYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5o
IiAzCmV4dGVybiBPU0VyciBGU0NyZWF0ZURpcmVjdG9yeVVuaWNvZGUoY29uc3QgRlNSZWYgKnBh
cmVudFJlZiwgVW5pQ2hhckNvdW50IG5hbWVMZW5ndGgsIGNvbnN0IFVuaUNoYXIgKm5hbWUsIEZT
Q2F0YWxvZ0luZm9CaXRtYXAgd2hpY2hJbmZvLCBjb25zdCBGU0NhdGFsb2dJbmZvICpjYXRhbG9n
SW5mbywgRlNSZWYgKm5ld1JlZiwgRlNTcGVjUHRyIG5ld1NwZWMsIFVJbnQzMiAqbmV3RGlySUQp
IDsKIyAxOTc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4
dGVybiBPU0VyciBQQkNyZWF0ZURpcmVjdG9yeVVuaWNvZGVTeW5jKEZTUmVmUGFyYW0gKiBwYXJh
bUJsb2NrKSA7CiMgMTk5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMu
aCIgMwpleHRlcm4gdm9pZCBQQkNyZWF0ZURpcmVjdG9yeVVuaWNvZGVBc3luYyhGU1JlZlBhcmFt
ICogcGFyYW1CbG9jaykgOwojIDIwMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIEZTRGVsZXRlT2JqZWN0KGNvbnN0IEZTUmVmICogcmVm
KSA7CiMgMjAyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpl
eHRlcm4gT1NFcnIgUEJEZWxldGVPYmplY3RTeW5jKEZTUmVmUGFyYW0gKiBwYXJhbUJsb2NrKSA7
CiMgMjA0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRl
cm4gdm9pZCBQQkRlbGV0ZU9iamVjdEFzeW5jKEZTUmVmUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMg
MjA2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4g
T1NFcnIgRlNVbmxpbmtPYmplY3QoY29uc3QgRlNSZWYgKiByZWYpIDsKIyAyMDc3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0VyciBQQlVubGlu
a09iamVjdFN5bmMoRlNSZWZQYXJhbSAqIHBhcmFtQmxvY2spIDsKIyAyMDkxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiB2b2lkIFBCVW5saW5rT2Jq
ZWN0QXN5bmMoRlNSZWZQYXJhbSAqIHBhcmFtQmxvY2spIDsKIyAyMTIwICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0VyciBGU01vdmVPYmplY3Qo
Y29uc3QgRlNSZWYgKnJlZiwgY29uc3QgRlNSZWYgKmRlc3REaXJlY3RvcnksIEZTUmVmICpuZXdS
ZWYpIDsKIyAyMTM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAz
CmV4dGVybiBPU0VyciBQQk1vdmVPYmplY3RTeW5jKEZTUmVmUGFyYW0gKiBwYXJhbUJsb2NrKSA7
CiMgMjE0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRl
cm4gdm9pZCBQQk1vdmVPYmplY3RBc3luYyhGU1JlZlBhcmFtICogcGFyYW1CbG9jaykgOwojIDIx
NzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9T
RXJyIEZTRXhjaGFuZ2VPYmplY3RzKGNvbnN0IEZTUmVmICpyZWYsIGNvbnN0IEZTUmVmICpkZXN0
UmVmKSA7CiMgMjE4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIg
MwpleHRlcm4gT1NFcnIgUEJFeGNoYW5nZU9iamVjdHNTeW5jKEZTUmVmUGFyYW0gKiBwYXJhbUJs
b2NrKSA7CiMgMjE5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIg
MwpleHRlcm4gdm9pZCBQQkV4Y2hhbmdlT2JqZWN0c0FzeW5jKEZTUmVmUGFyYW0gKiBwYXJhbUJs
b2NrKSA7CiMgMjMyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIg
MwplbnVtIHsKCgoKCgogIGtGU1JlcGxhY2VPYmplY3REZWZhdWx0T3B0aW9ucyA9IDAsCgoKCgoK
CiAga0ZTUmVwbGFjZU9iamVjdFJlcGxhY2VNZXRhZGF0YSA9IDB4MDEsCgoKCgoKCgogIGtGU1Jl
cGxhY2VPYmplY3RTYXZlT3JpZ2luYWxBc0FCYWNrdXAgPSAweDAyLAoKCgoKICBrRlNSZXBsYWNl
T2JqZWN0UmVwbGFjZVBlcm1pc3Npb25JbmZvID0gMHgwNCwKCgoKCiAga0ZTUmVwbGFjZU9iamVj
dFByZXNlcnZlUGVybWlzc2lvbkluZm8gPSAweDA4LAojIDIzNjMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKICBrRlNSZXBsYWNlT2JqZWN0RG9Ob3RDaGVja09i
amVjdFdyaXRlQWNjZXNzID0gMHgxMAp9OwojIDI0MTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTUmVwbGFjZU9iamVjdChjb25z
dCBGU1JlZiAqb3JpZ2luYWxPYmplY3QsIGNvbnN0IEZTUmVmICpyZXBsYWNlbWVudE9iamVjdCwg
Q0ZTdHJpbmdSZWYgbmV3TmFtZSwgQ0ZTdHJpbmdSZWYgdGVtcG9yYXJ5TmFtZSwgY29uc3QgRlNS
ZWYgKnRlbXBvcmFyeURpcmVjdG9yeSwgT3B0aW9uQml0cyBmbGFncywgRlNSZWYgKnJlc3VsdE9i
amVjdCkgOwojIDI0NjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgi
IDMKZXh0ZXJuIE9TU3RhdHVzIEZTUGF0aFJlcGxhY2VPYmplY3QoY29uc3QgY2hhciAqb3JpZ2lu
YWxPYmplY3RQYXRoLCBjb25zdCBjaGFyICpyZXBsYWNlbWVudE9iamVjdFBhdGgsIENGU3RyaW5n
UmVmIG5ld05hbWUsIENGU3RyaW5nUmVmIHRlbXBvcmFyeU5hbWUsIGNvbnN0IGNoYXIgKnRlbXBv
cmFyeURpcmVjdG9yeVBhdGgsIE9wdGlvbkJpdHMgZmxhZ3MpIDsKIyAyNDkzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBGU0dldFRl
bXBvcmFyeURpcmVjdG9yeUZvclJlcGxhY2VPYmplY3QoY29uc3QgRlNSZWYgKm9yaWdpbmFsT2Jq
ZWN0LCBGU1JlZiAqdGVtcG9yYXJ5RGlyZWN0b3J5LCBPcHRpb25CaXRzIGZsYWdzKSA7CiMgMjUy
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NT
dGF0dXMgRlNQYXRoR2V0VGVtcG9yYXJ5RGlyZWN0b3J5Rm9yUmVwbGFjZU9iamVjdChjb25zdCBj
aGFyICpvcmlnaW5hbE9iamVjdFBhdGgsIGNoYXIgKnRlbXBvcmFyeURpcmVjdG9yeVBhdGgsIFVJ
bnQzMiBtYXhQYXRoU2l6ZSwgT3B0aW9uQml0cyBmbGFncykgOwojIDI1NjAgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIEZTUmVuYW1lVW5p
Y29kZShjb25zdCBGU1JlZiAqcmVmLCBVbmlDaGFyQ291bnQgbmFtZUxlbmd0aCwgY29uc3QgVW5p
Q2hhciAqbmFtZSwgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZ0hpbnQsIEZTUmVmICpuZXdSZWYp
IDsKIyAyNTc0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4
dGVybiBPU0VyciBQQlJlbmFtZVVuaWNvZGVTeW5jKEZTUmVmUGFyYW0gKiBwYXJhbUJsb2NrKSA7
CiMgMjU4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRl
cm4gdm9pZCBQQlJlbmFtZVVuaWNvZGVBc3luYyhGU1JlZlBhcmFtICogcGFyYW1CbG9jaykgOwoj
IDI2MTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJu
IE9TRXJyIEZTR2V0Q2F0YWxvZ0luZm8oY29uc3QgRlNSZWYgKnJlZiwgRlNDYXRhbG9nSW5mb0Jp
dG1hcCB3aGljaEluZm8sIEZTQ2F0YWxvZ0luZm8gKmNhdGFsb2dJbmZvLCBIRlNVbmlTdHIyNTUg
Km91dE5hbWUsIEZTU3BlY1B0ciBmc1NwZWMsIEZTUmVmICpwYXJlbnRSZWYpIDsKIyAyNjMxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0VyciBQ
QkdldENhdGFsb2dJbmZvU3luYyhGU1JlZlBhcmFtICogcGFyYW1CbG9jaykgOwojIDI2NDUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIHZvaWQgUEJH
ZXRDYXRhbG9nSW5mb0FzeW5jKEZTUmVmUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMgMjY4NyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgRlNT
ZXRDYXRhbG9nSW5mbyhjb25zdCBGU1JlZiAqcmVmLCBGU0NhdGFsb2dJbmZvQml0bWFwIHdoaWNo
SW5mbywgY29uc3QgRlNDYXRhbG9nSW5mbyAqY2F0YWxvZ0luZm8pIDsKIyAyNzA5ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0VyciBQQlNldENh
dGFsb2dJbmZvU3luYyhGU1JlZlBhcmFtICogcGFyYW1CbG9jaykgOwojIDI3MzEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIHZvaWQgUEJTZXRDYXRh
bG9nSW5mb0FzeW5jKEZTUmVmUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMgMjc1OCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgRlNPcGVuSXRl
cmF0b3IoY29uc3QgRlNSZWYgKmNvbnRhaW5lciwgRlNJdGVyYXRvckZsYWdzIGl0ZXJhdG9yRmxh
Z3MsIEZTSXRlcmF0b3IgKml0ZXJhdG9yKSA7CiMgMjc3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgUEJPcGVuSXRlcmF0b3JTeW5jKEZT
Q2F0YWxvZ0J1bGtQYXJhbSAqIHBhcmFtQmxvY2spIDsKIyAyNzg2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiB2b2lkIFBCT3Blbkl0ZXJhdG9yQXN5
bmMoRlNDYXRhbG9nQnVsa1BhcmFtICogcGFyYW1CbG9jaykgOwojIDI4MDggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIEZTQ2xvc2VJdGVy
YXRvcihGU0l0ZXJhdG9yIGl0ZXJhdG9yKSA7CiMgMjgyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgUEJDbG9zZUl0ZXJhdG9yU3luYyhG
U0NhdGFsb2dCdWxrUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMgMjgzNiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gdm9pZCBQQkNsb3NlSXRlcmF0b3JB
c3luYyhGU0NhdGFsb2dCdWxrUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMgMjg2OSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgRlNHZXRDYXRh
bG9nSW5mb0J1bGsoRlNJdGVyYXRvciBpdGVyYXRvciwgSXRlbUNvdW50IG1heGltdW1PYmplY3Rz
LCBJdGVtQ291bnQgKmFjdHVhbE9iamVjdHMsIEJvb2xlYW4gKmNvbnRhaW5lckNoYW5nZWQsIEZT
Q2F0YWxvZ0luZm9CaXRtYXAgd2hpY2hJbmZvLCBGU0NhdGFsb2dJbmZvICpjYXRhbG9nSW5mb3Ms
IEZTUmVmICpyZWZzLCBGU1NwZWNQdHIgc3BlY3MsIEhGU1VuaVN0cjI1NSAqbmFtZXMpIDsKIyAy
ODgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBP
U0VyciBQQkdldENhdGFsb2dJbmZvQnVsa1N5bmMoRlNDYXRhbG9nQnVsa1BhcmFtICogcGFyYW1C
bG9jaykgOwojIDI4OTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgi
IDMKZXh0ZXJuIHZvaWQgUEJHZXRDYXRhbG9nSW5mb0J1bGtBc3luYyhGU0NhdGFsb2dCdWxrUGFy
YW0gKiBwYXJhbUJsb2NrKSA7CiMgMjkzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgRlNDYXRhbG9nU2VhcmNoKEZTSXRlcmF0b3IgaXRl
cmF0b3IsIGNvbnN0IEZTU2VhcmNoUGFyYW1zICpzZWFyY2hDcml0ZXJpYSwgSXRlbUNvdW50IG1h
eGltdW1PYmplY3RzLCBJdGVtQ291bnQgKmFjdHVhbE9iamVjdHMsIEJvb2xlYW4gKmNvbnRhaW5l
ckNoYW5nZWQsIEZTQ2F0YWxvZ0luZm9CaXRtYXAgd2hpY2hJbmZvLCBGU0NhdGFsb2dJbmZvICpj
YXRhbG9nSW5mb3MsIEZTUmVmICpyZWZzLCBGU1NwZWNQdHIgc3BlY3MsIEhGU1VuaVN0cjI1NSAq
bmFtZXMpIDsKIyAyOTQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5o
IiAzCmV4dGVybiBPU0VyciBQQkNhdGFsb2dTZWFyY2hTeW5jKEZTQ2F0YWxvZ0J1bGtQYXJhbSAq
IHBhcmFtQmxvY2spIDsKIyAyOTYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9G
aWxlcy5oIiAzCmV4dGVybiB2b2lkIFBCQ2F0YWxvZ1NlYXJjaEFzeW5jKEZTQ2F0YWxvZ0J1bGtQ
YXJhbSAqIHBhcmFtQmxvY2spIDsKIyAyOTkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBGU0NyZWF0ZUZpbGVBbmRPcGVuRm9ya1Vu
aWNvZGUoY29uc3QgRlNSZWYgKnBhcmVudFJlZiwgVW5pQ2hhckNvdW50IG5hbWVMZW5ndGgsIGNv
bnN0IFVuaUNoYXIgKm5hbWUsIEZTQ2F0YWxvZ0luZm9CaXRtYXAgd2hpY2hJbmZvLCBjb25zdCBG
U0NhdGFsb2dJbmZvICpjYXRhbG9nSW5mbywgVW5pQ2hhckNvdW50IGZvcmtOYW1lTGVuZ3RoLCBj
b25zdCBVbmlDaGFyICpmb3JrTmFtZSwgU0ludDggcGVybWlzc2lvbnMsIEZTSU9SZWZOdW0gKmZv
cmtSZWZOdW0sIEZTUmVmICpuZXdSZWYpIDsKIyAzMDA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBQQkNyZWF0ZUZpbGVBbmRPcGVu
Rm9ya1VuaWNvZGVTeW5jKEZTUmVmRm9ya0lPUGFyYW1QdHIgcGFyYW1CbG9jaykgOwojIDMwMjEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIHZvaWQg
UEJDcmVhdGVGaWxlQW5kT3BlbkZvcmtVbmljb2RlQXN5bmMoRlNSZWZGb3JrSU9QYXJhbVB0ciBw
YXJhbUJsb2NrKSA7CiMgMzA0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmls
ZXMuaCIgMwpleHRlcm4gT1NFcnIgRlNDcmVhdGVGb3JrKGNvbnN0IEZTUmVmICpyZWYsIFVuaUNo
YXJDb3VudCBmb3JrTmFtZUxlbmd0aCwgY29uc3QgVW5pQ2hhciAqZm9ya05hbWUpIDsKIyAzMDU4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0Vy
ciBQQkNyZWF0ZUZvcmtTeW5jKEZTRm9ya0lPUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMgMzA3MiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gdm9pZCBQ
QkNyZWF0ZUZvcmtBc3luYyhGU0ZvcmtJT1BhcmFtICogcGFyYW1CbG9jaykgOwojIDMwOTYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIEZT
RGVsZXRlRm9yayhjb25zdCBGU1JlZiAqcmVmLCBVbmlDaGFyQ291bnQgZm9ya05hbWVMZW5ndGgs
IGNvbnN0IFVuaUNoYXIgKmZvcmtOYW1lKSA7CiMgMzExMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgUEJEZWxldGVGb3JrU3luYyhGU0Zv
cmtJT1BhcmFtICogcGFyYW1CbG9jaykgOwojIDMxMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIHZvaWQgUEJEZWxldGVGb3JrQXN5bmMoRlNGb3Jr
SU9QYXJhbSAqIHBhcmFtQmxvY2spIDsKIyAzMTUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0VyciBGU0l0ZXJhdGVGb3Jrcyhjb25zdCBGU1Jl
ZiAqcmVmLCBDYXRQb3NpdGlvblJlYyAqZm9ya0l0ZXJhdG9yLCBIRlNVbmlTdHIyNTUgKmZvcmtO
YW1lLCBTSW50NjQgKmZvcmtTaXplLCBVSW50NjQgKmZvcmtQaHlzaWNhbFNpemUpIDsKIyAzMTY2
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0Vy
ciBQQkl0ZXJhdGVGb3Jrc1N5bmMoRlNGb3JrSU9QYXJhbSAqIHBhcmFtQmxvY2spIDsKIyAzMTgw
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiB2b2lk
IFBCSXRlcmF0ZUZvcmtzQXN5bmMoRlNGb3JrSU9QYXJhbSAqIHBhcmFtQmxvY2spIDsKIyAzMjA5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0Vy
ciBGU09wZW5Gb3JrKGNvbnN0IEZTUmVmICpyZWYsIFVuaUNoYXJDb3VudCBmb3JrTmFtZUxlbmd0
aCwgY29uc3QgVW5pQ2hhciAqZm9ya05hbWUsIFNJbnQ4IHBlcm1pc3Npb25zLCBGU0lPUmVmTnVt
ICpmb3JrUmVmTnVtKSA7CiMgMzIyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
RmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgUEJPcGVuRm9ya1N5bmMoRlNGb3JrSU9QYXJhbSAqIHBh
cmFtQmxvY2spIDsKIyAzMjM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxl
cy5oIiAzCmV4dGVybiB2b2lkIFBCT3BlbkZvcmtBc3luYyhGU0ZvcmtJT1BhcmFtICogcGFyYW1C
bG9jaykgOwojIDMyNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgi
IDMKZXh0ZXJuIE9TRXJyIEZTUmVhZEZvcmsoRlNJT1JlZk51bSBmb3JrUmVmTnVtLCBVSW50MTYg
cG9zaXRpb25Nb2RlLCBTSW50NjQgcG9zaXRpb25PZmZzZXQsIEJ5dGVDb3VudCByZXF1ZXN0Q291
bnQsIHZvaWQgKmJ1ZmZlciwgQnl0ZUNvdW50ICphY3R1YWxDb3VudCkgOwojIDMyNzkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIFBCUmVh
ZEZvcmtTeW5jKEZTRm9ya0lPUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMgMzI5MyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gdm9pZCBQQlJlYWRGb3Jr
QXN5bmMoRlNGb3JrSU9QYXJhbSAqIHBhcmFtQmxvY2spIDsKIyAzMzIxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0VyciBGU1dyaXRlRm9yayhG
U0lPUmVmTnVtIGZvcmtSZWZOdW0sIFVJbnQxNiBwb3NpdGlvbk1vZGUsIFNJbnQ2NCBwb3NpdGlv
bk9mZnNldCwgQnl0ZUNvdW50IHJlcXVlc3RDb3VudCwgY29uc3Qgdm9pZCAqYnVmZmVyLCBCeXRl
Q291bnQgKmFjdHVhbENvdW50KSA7CiMgMzMzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgUEJXcml0ZUZvcmtTeW5jKEZTRm9ya0lPUGFy
YW0gKiBwYXJhbUJsb2NrKSA7CiMgMzM0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvRmlsZXMuaCIgMwpleHRlcm4gdm9pZCBQQldyaXRlRm9ya0FzeW5jKEZTRm9ya0lPUGFyYW0g
KiBwYXJhbUJsb2NrKSA7CiMgMzM3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
RmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgRlNHZXRGb3JrUG9zaXRpb24oRlNJT1JlZk51bSBmb3Jr
UmVmTnVtLCBTSW50NjQgKnBvc2l0aW9uKSA7CiMgMzM4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgUEJHZXRGb3JrUG9zaXRpb25TeW5j
KEZTRm9ya0lPUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMgMzQwMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gdm9pZCBQQkdldEZvcmtQb3NpdGlvbkFz
eW5jKEZTRm9ya0lPUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMgMzQyNiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgRlNTZXRGb3JrUG9zaXRp
b24oRlNJT1JlZk51bSBmb3JrUmVmTnVtLCBVSW50MTYgcG9zaXRpb25Nb2RlLCBTSW50NjQgcG9z
aXRpb25PZmZzZXQpIDsKIyAzNDQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9G
aWxlcy5oIiAzCmV4dGVybiBPU0VyciBQQlNldEZvcmtQb3NpdGlvblN5bmMoRlNGb3JrSU9QYXJh
bSAqIHBhcmFtQmxvY2spIDsKIyAzNDU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9GaWxlcy5oIiAzCmV4dGVybiB2b2lkIFBCU2V0Rm9ya1Bvc2l0aW9uQXN5bmMoRlNGb3JrSU9Q
YXJhbSAqIHBhcmFtQmxvY2spIDsKIyAzNDc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0VyciBGU0dldEZvcmtTaXplKEZTSU9SZWZOdW0gZm9y
a1JlZk51bSwgU0ludDY0ICpmb3JrU2l6ZSkgOwojIDM0OTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIFBCR2V0Rm9ya1NpemVTeW5jKEZT
Rm9ya0lPUGFyYW0gKiBwYXJhbUJsb2NrKSA7CiMgMzUwNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gdm9pZCBQQkdldEZvcmtTaXplQXN5bmMoRlNG
b3JrSU9QYXJhbSAqIHBhcmFtQmxvY2spIDsKIyAzNTMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0VyciBGU1NldEZvcmtTaXplKEZTSU9SZWZO
dW0gZm9ya1JlZk51bSwgVUludDE2IHBvc2l0aW9uTW9kZSwgU0ludDY0IHBvc2l0aW9uT2Zmc2V0
KSA7CiMgMzU0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpl
eHRlcm4gT1NFcnIgUEJTZXRGb3JrU2l6ZVN5bmMoRlNGb3JrSU9QYXJhbSAqIHBhcmFtQmxvY2sp
IDsKIyAzNTU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4
dGVybiB2b2lkIFBCU2V0Rm9ya1NpemVBc3luYyhGU0ZvcmtJT1BhcmFtICogcGFyYW1CbG9jaykg
OwojIDM1OTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0
ZXJuIE9TRXJyIEZTQWxsb2NhdGVGb3JrKEZTSU9SZWZOdW0gZm9ya1JlZk51bSwgRlNBbGxvY2F0
aW9uRmxhZ3MgZmxhZ3MsIFVJbnQxNiBwb3NpdGlvbk1vZGUsIFNJbnQ2NCBwb3NpdGlvbk9mZnNl
dCwgVUludDY0IHJlcXVlc3RDb3VudCwgVUludDY0ICphY3R1YWxDb3VudCkgOwojIDM2MTIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIFBC
QWxsb2NhdGVGb3JrU3luYyhGU0ZvcmtJT1BhcmFtICogcGFyYW1CbG9jaykgOwojIDM2MjYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIHZvaWQgUEJB
bGxvY2F0ZUZvcmtBc3luYyhGU0ZvcmtJT1BhcmFtICogcGFyYW1CbG9jaykgOwojIDM2NDkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIEZT
Rmx1c2hGb3JrKEZTSU9SZWZOdW0gZm9ya1JlZk51bSkgOwojIDM2NjMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIFBCRmx1c2hGb3JrU3lu
YyhGU0ZvcmtJT1BhcmFtICogcGFyYW1CbG9jaykgOwojIDM2NzcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIHZvaWQgUEJGbHVzaEZvcmtBc3luYyhG
U0ZvcmtJT1BhcmFtICogcGFyYW1CbG9jaykgOwojIDM3MDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIEZTQ2xvc2VGb3JrKEZTSU9SZWZO
dW0gZm9ya1JlZk51bSkgOwojIDM3MTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIFBCQ2xvc2VGb3JrU3luYyhGU0ZvcmtJT1BhcmFtICog
cGFyYW1CbG9jaykgOwojIDM3MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0Zp
bGVzLmgiIDMKZXh0ZXJuIHZvaWQgUEJDbG9zZUZvcmtBc3luYyhGU0ZvcmtJT1BhcmFtICogcGFy
YW1CbG9jaykgOwojIDM3NjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVz
LmgiIDMKZXh0ZXJuIE9TRXJyIEZTR2V0Rm9ya0NCSW5mbyhGU0lPUmVmTnVtIGRlc2lyZWRSZWZO
dW0sIEZTVm9sdW1lUmVmTnVtIHZvbHVtZSwgc2hvcnQgKml0ZXJhdG9yLCBGU0lPUmVmTnVtICph
Y3R1YWxSZWZOdW0sIEZTRm9ya0luZm8gKmZvcmtJbmZvLCBGU1JlZiAqcmVmLCBIRlNVbmlTdHIy
NTUgKm91dEZvcmtOYW1lKSA7CiMgMzc4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvRmlsZXMuaCIgMwpleHRlcm4gT1NFcnIgUEJHZXRGb3JrQ0JJbmZvU3luYyhGU0ZvcmtDQklu
Zm9QYXJhbSAqIHBhcmFtQmxvY2spIDsKIyAzNzk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiB2b2lkIFBCR2V0Rm9ya0NCSW5mb0FzeW5jKEZTRm9y
a0NCSW5mb1BhcmFtICogcGFyYW1CbG9jaykgOwojIDM4MjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTTG9ja1JhbmdlKEZTSU9S
ZWZOdW0gZm9ya1JlZk51bSwgVUludDE2IHBvc2l0aW9uTW9kZSwgU0ludDY0IHBvc2l0aW9uT2Zm
c2V0LCBVSW50NjQgcmVxdWVzdENvdW50LCBVSW50NjQgKnJhbmdlU3RhcnQpIDsKIyAzODM0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1
cyBQQlhMb2NrUmFuZ2VTeW5jKEZTUmFuZ2VMb2NrUGFyYW1QdHIgcGFyYW1CbG9jaykgOwojIDM4
NDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzIFBCWExvY2tSYW5nZUFzeW5jKEZTUmFuZ2VMb2NrUGFyYW1QdHIgcGFyYW1CbG9jaykg
OwojIDM4NzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzIEZTVW5sb2NrUmFuZ2UoRlNJT1JlZk51bSBmb3JrUmVmTnVtLCBVSW50MTYg
cG9zaXRpb25Nb2RlLCBTSW50NjQgcG9zaXRpb25PZmZzZXQsIFVJbnQ2NCByZXF1ZXN0Q291bnQs
IFVJbnQ2NCAqcmFuZ2VTdGFydCkgOwojIDM4ODggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIFBCWFVubG9ja1JhbmdlU3luYyhGU1Jh
bmdlTG9ja1BhcmFtUHRyIHBhcmFtQmxvY2spIDsKIyAzOTAyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBQQlhVbmxvY2tSYW5nZUFz
eW5jKEZTUmFuZ2VMb2NrUGFyYW1QdHIgcGFyYW1CbG9jaykgOwojIDM5MzMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIEZTR2V0Vm9sdW1l
SW5mbyhGU1ZvbHVtZVJlZk51bSB2b2x1bWUsIEl0ZW1Db3VudCB2b2x1bWVJbmRleCwgRlNWb2x1
bWVSZWZOdW0gKmFjdHVhbFZvbHVtZSwgRlNWb2x1bWVJbmZvQml0bWFwIHdoaWNoSW5mbywgRlNW
b2x1bWVJbmZvICppbmZvLCBIRlNVbmlTdHIyNTUgKnZvbHVtZU5hbWUsIEZTUmVmICpyb290RGly
ZWN0b3J5KSA7CiMgMzk0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMu
aCIgMwpleHRlcm4gT1NFcnIgUEJHZXRWb2x1bWVJbmZvU3luYyhGU1ZvbHVtZUluZm9QYXJhbSAq
IHBhcmFtQmxvY2spIDsKIyAzOTYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9G
aWxlcy5oIiAzCmV4dGVybiB2b2lkIFBCR2V0Vm9sdW1lSW5mb0FzeW5jKEZTVm9sdW1lSW5mb1Bh
cmFtICogcGFyYW1CbG9jaykgOwojIDM5ODggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TRXJyIEZTU2V0Vm9sdW1lSW5mbyhGU1ZvbHVtZVJlZk51
bSB2b2x1bWUsIEZTVm9sdW1lSW5mb0JpdG1hcCB3aGljaEluZm8sIGNvbnN0IEZTVm9sdW1lSW5m
byAqaW5mbykgOwojIDQwMDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVz
LmgiIDMKZXh0ZXJuIE9TRXJyIFBCU2V0Vm9sdW1lSW5mb1N5bmMoRlNWb2x1bWVJbmZvUGFyYW0g
KiBwYXJhbUJsb2NrKSA7CiMgNDAxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
RmlsZXMuaCIgMwpleHRlcm4gdm9pZCBQQlNldFZvbHVtZUluZm9Bc3luYyhGU1ZvbHVtZUluZm9Q
YXJhbSAqIHBhcmFtQmxvY2spIDsKIyA0MDM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0VyciBGU0dldERhdGFGb3JrTmFtZShIRlNVbmlTdHIy
NTUgKiBkYXRhRm9ya05hbWUpIDsKIyA0MDUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU0VyciBGU0dldFJlc291cmNlRm9ya05hbWUoSEZTVW5p
U3RyMjU1ICogcmVzb3VyY2VGb3JrTmFtZSkgOwojIDQwODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTUmVmTWFrZVBhdGgoY29u
c3QgRlNSZWYgKnJlZiwgVUludDggKnBhdGgsIFVJbnQzMiBwYXRoQnVmZmVyU2l6ZSkgOwojIDQx
MTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzIEZTUGF0aE1ha2VSZWYoY29uc3QgVUludDggKnBhdGgsIEZTUmVmICpyZWYsIEJvb2xl
YW4gKmlzRGlyZWN0b3J5KSA7CiMgNDEyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvRmlsZXMuaCIgMwplbnVtIHsKICBrRlNQYXRoTWFrZVJlZkRlZmF1bHRPcHRpb25zID0gMCwK
ICBrRlNQYXRoTWFrZVJlZkRvTm90Rm9sbG93TGVhZlN5bWxpbmsgPSAweDAxCn07CiMgNDE1NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0
dXMgRlNQYXRoTWFrZVJlZldpdGhPcHRpb25zKGNvbnN0IFVJbnQ4ICpwYXRoLCBPcHRpb25CaXRz
IG9wdGlvbnMsIEZTUmVmICpyZWYsIEJvb2xlYW4gKmlzRGlyZWN0b3J5KSA7CiMgNDE4MSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gQm9vbGVhbiBG
U0lzRlNSZWZWYWxpZChjb25zdCBGU1JlZiAqIHJlZikgOwojIDQxOTQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKdHlwZWRlZiBVSW50MzIgRk5NZXNzYWdlOwpl
bnVtIHsKICBrRk5EaXJlY3RvcnlNb2RpZmllZE1lc3NhZ2UgPSAxCn07CiMgNDIzNSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRk5O
b3RpZnkoY29uc3QgRlNSZWYgKnJlZiwgRk5NZXNzYWdlIG1lc3NhZ2UsIE9wdGlvbkJpdHMgZmxh
Z3MpIDsKIyA0MjY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAz
CmV4dGVybiBPU1N0YXR1cyBGTk5vdGlmeUJ5UGF0aChjb25zdCBVSW50OCAqcGF0aCwgRk5NZXNz
YWdlIG1lc3NhZ2UsIE9wdGlvbkJpdHMgZmxhZ3MpIDsKIyA0MjkyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBGTk5vdGlmeUFsbChG
Tk1lc3NhZ2UgbWVzc2FnZSwgT3B0aW9uQml0cyBmbGFncykgOwojIDQzMDcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlRk5T
dWJzY3JpcHRpb25SZWYqIEZOU3Vic2NyaXB0aW9uUmVmOwoKCgoKCmVudW0gewoKCgoKCgoKICBr
Rk5Ob0ltcGxpY2l0QWxsU3Vic2NyaXB0aW9uID0gKDEgPDwgMCksCgoKCgoKCgogIGtGTk5vdGlm
eUluQmFja2dyb3VuZCA9ICgxIDw8IDEpCn07CiMgNDM1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIEZOU3Vic2NyaXB0aW9uUHJv
Y1B0cikoRk5NZXNzYWdlIG1lc3NhZ2UsIE9wdGlvbkJpdHMgZmxhZ3MsIHZvaWQgKnJlZmNvbiwg
Rk5TdWJzY3JpcHRpb25SZWYgc3Vic2NyaXB0aW9uKTsKdHlwZWRlZiBGTlN1YnNjcmlwdGlvblBy
b2NQdHIgRk5TdWJzY3JpcHRpb25VUFA7CiMgNDM2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gRk5TdWJzY3JpcHRpb25VUFAKTmV3Rk5TdWJzY3Jp
cHRpb25VUFAoRk5TdWJzY3JpcHRpb25Qcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgNDM3NSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gdm9pZApEaXNw
b3NlRk5TdWJzY3JpcHRpb25VUFAoRk5TdWJzY3JpcHRpb25VUFAgdXNlclVQUCkgOwojIDQzODYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIHZvaWQK
SW52b2tlRk5TdWJzY3JpcHRpb25VUFAoCiAgRk5NZXNzYWdlIG1lc3NhZ2UsCiAgT3B0aW9uQml0
cyBmbGFncywKICB2b2lkICogcmVmY29uLAogIEZOU3Vic2NyaXB0aW9uUmVmIHN1YnNjcmlwdGlv
biwKICBGTlN1YnNjcmlwdGlvblVQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgRk5TdWJzY3Jp
cHRpb25VUFAgTmV3Rk5TdWJzY3JpcHRpb25VUFAoRk5TdWJzY3JpcHRpb25Qcm9jUHRyIHVzZXJS
b3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUZO
U3Vic2NyaXB0aW9uVVBQKEZOU3Vic2NyaXB0aW9uVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIElu
dm9rZUZOU3Vic2NyaXB0aW9uVVBQKEZOTWVzc2FnZSBtZXNzYWdlLCBPcHRpb25CaXRzIGZsYWdz
LCB2b2lkICogcmVmY29uLCBGTlN1YnNjcmlwdGlvblJlZiBzdWJzY3JpcHRpb24sIEZOU3Vic2Ny
aXB0aW9uVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKShtZXNzYWdlLCBmbGFncywgcmVmY29uLCBz
dWJzY3JpcHRpb24pOyB9CiMgNDQzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
RmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRk5TdWJzY3JpYmUoY29uc3QgRlNSZWYgKmRpcmVj
dG9yeVJlZiwgRk5TdWJzY3JpcHRpb25VUFAgY2FsbGJhY2ssIHZvaWQgKnJlZmNvbiwgT3B0aW9u
Qml0cyBmbGFncywgRk5TdWJzY3JpcHRpb25SZWYgKnN1YnNjcmlwdGlvbikgOwojIDQ0NzMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
IEZOU3Vic2NyaWJlQnlQYXRoKGNvbnN0IFVJbnQ4ICpkaXJlY3RvcnlQYXRoLCBGTlN1YnNjcmlw
dGlvblVQUCBjYWxsYmFjaywgdm9pZCAqcmVmY29uLCBPcHRpb25CaXRzIGZsYWdzLCBGTlN1YnNj
cmlwdGlvblJlZiAqc3Vic2NyaXB0aW9uKSA7CiMgNDQ5NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRk5VbnN1YnNjcmliZShGTlN1
YnNjcmlwdGlvblJlZiBzdWJzY3JpcHRpb24pIDsKIyA0NTI2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBGTkdldERpcmVjdG9yeUZv
clN1YnNjcmlwdGlvbihGTlN1YnNjcmlwdGlvblJlZiBzdWJzY3JpcHRpb24sIEZTUmVmICpyZWYp
IDsKCgoKCmVudW0gewogIGtBc3luY01vdW50SW5Qcm9ncmVzcyA9IDEsCiAga0FzeW5jTW91bnRD
b21wbGV0ZSA9IDIsCiAga0FzeW5jVW5tb3VudEluUHJvZ3Jlc3MgPSAzLAogIGtBc3luY1VubW91
bnRDb21wbGV0ZSA9IDQsCiAga0FzeW5jRWplY3RJblByb2dyZXNzID0gNSwKICBrQXN5bmNFamVj
dENvbXBsZXRlID0gNgp9OwoKCnR5cGVkZWYgVUludDMyIEZTTW91bnRTdGF0dXM7CnR5cGVkZWYg
VUludDMyIEZTRWplY3RTdGF0dXM7CnR5cGVkZWYgVUludDMyIEZTVW5tb3VudFN0YXR1czsKdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlRlNWb2x1bWVPcGVyYXRpb24qIEZTVm9sdW1lT3BlcmF0aW9uOwp0
eXBlZGVmIHZvaWQgKCAqIEZTVm9sdW1lTW91bnRQcm9jUHRyKShGU1ZvbHVtZU9wZXJhdGlvbiB2
b2x1bWVPcCwgdm9pZCAqY2xpZW50RGF0YSwgT1NTdGF0dXMgZXJyLCBGU1ZvbHVtZVJlZk51bSBt
b3VudGVkVm9sdW1lUmVmTnVtKTsKdHlwZWRlZiB2b2lkICggKiBGU1ZvbHVtZVVubW91bnRQcm9j
UHRyKShGU1ZvbHVtZU9wZXJhdGlvbiB2b2x1bWVPcCwgdm9pZCAqY2xpZW50RGF0YSwgT1NTdGF0
dXMgZXJyLCBGU1ZvbHVtZVJlZk51bSB2b2x1bWVSZWZOdW0sIHBpZF90IGRpc3NlbnRlcik7CnR5
cGVkZWYgdm9pZCAoICogRlNWb2x1bWVFamVjdFByb2NQdHIpKEZTVm9sdW1lT3BlcmF0aW9uIHZv
bHVtZU9wLCB2b2lkICpjbGllbnREYXRhLCBPU1N0YXR1cyBlcnIsIEZTVm9sdW1lUmVmTnVtIHZv
bHVtZVJlZk51bSwgcGlkX3QgZGlzc2VudGVyKTsKdHlwZWRlZiBGU1ZvbHVtZU1vdW50UHJvY1B0
ciBGU1ZvbHVtZU1vdW50VVBQOwp0eXBlZGVmIEZTVm9sdW1lVW5tb3VudFByb2NQdHIgRlNWb2x1
bWVVbm1vdW50VVBQOwp0eXBlZGVmIEZTVm9sdW1lRWplY3RQcm9jUHRyIEZTVm9sdW1lRWplY3RV
UFA7CiMgNDU1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpl
eHRlcm4gRlNWb2x1bWVNb3VudFVQUApOZXdGU1ZvbHVtZU1vdW50VVBQKEZTVm9sdW1lTW91bnRQ
cm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgNDU3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gRlNWb2x1bWVVbm1vdW50VVBQCk5ld0ZTVm9sdW1lVW5t
b3VudFVQUChGU1ZvbHVtZVVubW91bnRQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgNDU4MSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gRlNWb2x1bWVF
amVjdFVQUApOZXdGU1ZvbHVtZUVqZWN0VVBQKEZTVm9sdW1lRWplY3RQcm9jUHRyIHVzZXJSb3V0
aW5lKSA7CiMgNDU5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIg
MwpleHRlcm4gdm9pZApEaXNwb3NlRlNWb2x1bWVNb3VudFVQUChGU1ZvbHVtZU1vdW50VVBQIHVz
ZXJVUFApIDsKIyA0NjAzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5o
IiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VGU1ZvbHVtZVVubW91bnRVUFAoRlNWb2x1bWVVbm1vdW50
VVBQIHVzZXJVUFApIDsKIyA0NjE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9G
aWxlcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VGU1ZvbHVtZUVqZWN0VVBQKEZTVm9sdW1lRWpl
Y3RVUFAgdXNlclVQUCkgOwojIDQ2MjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L0ZpbGVzLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlRlNWb2x1bWVNb3VudFVQUCgKICBGU1ZvbHVt
ZU9wZXJhdGlvbiB2b2x1bWVPcCwKICB2b2lkICogY2xpZW50RGF0YSwKICBPU1N0YXR1cyBlcnIs
CiAgRlNWb2x1bWVSZWZOdW0gbW91bnRlZFZvbHVtZVJlZk51bSwKICBGU1ZvbHVtZU1vdW50VVBQ
IHVzZXJVUFApIDsKIyA0NjQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxl
cy5oIiAzCmV4dGVybiB2b2lkCkludm9rZUZTVm9sdW1lVW5tb3VudFVQUCgKICBGU1ZvbHVtZU9w
ZXJhdGlvbiB2b2x1bWVPcCwKICB2b2lkICogY2xpZW50RGF0YSwKICBPU1N0YXR1cyBlcnIsCiAg
RlNWb2x1bWVSZWZOdW0gdm9sdW1lUmVmTnVtLAogIHBpZF90IGRpc3NlbnRlciwKICBGU1ZvbHVt
ZVVubW91bnRVUFAgdXNlclVQUCkgOwojIDQ2NTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlRlNWb2x1bWVFamVjdFVQUCgKICBG
U1ZvbHVtZU9wZXJhdGlvbiB2b2x1bWVPcCwKICB2b2lkICogY2xpZW50RGF0YSwKICBPU1N0YXR1
cyBlcnIsCiAgRlNWb2x1bWVSZWZOdW0gdm9sdW1lUmVmTnVtLAogIHBpZF90IGRpc3NlbnRlciwK
ICBGU1ZvbHVtZUVqZWN0VVBQIHVzZXJVUFApIDsKCgoKICAgIGlubGluZSBGU1ZvbHVtZU1vdW50
VVBQIE5ld0ZTVm9sdW1lTW91bnRVUFAoRlNWb2x1bWVNb3VudFByb2NQdHIgdXNlclJvdXRpbmUp
IHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRlNWb2x1bWVVbm1vdW50VVBQIE5l
d0ZTVm9sdW1lVW5tb3VudFVQUChGU1ZvbHVtZVVubW91bnRQcm9jUHRyIHVzZXJSb3V0aW5lKSB7
IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIEZTVm9sdW1lRWplY3RVUFAgTmV3RlNW
b2x1bWVFamVjdFVQUChGU1ZvbHVtZUVqZWN0UHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4g
dXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VGU1ZvbHVtZU1vdW50VVBQKEZT
Vm9sdW1lTW91bnRVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUZTVm9sdW1lVW5tb3Vu
dFVQUChGU1ZvbHVtZVVubW91bnRVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUZTVm9s
dW1lRWplY3RVUFAoRlNWb2x1bWVFamVjdFVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VG
U1ZvbHVtZU1vdW50VVBQKEZTVm9sdW1lT3BlcmF0aW9uIHZvbHVtZU9wLCB2b2lkICogY2xpZW50
RGF0YSwgT1NTdGF0dXMgZXJyLCBGU1ZvbHVtZVJlZk51bSBtb3VudGVkVm9sdW1lUmVmTnVtLCBG
U1ZvbHVtZU1vdW50VVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKSh2b2x1bWVPcCwgY2xpZW50RGF0
YSwgZXJyLCBtb3VudGVkVm9sdW1lUmVmTnVtKTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlRlNW
b2x1bWVVbm1vdW50VVBQKEZTVm9sdW1lT3BlcmF0aW9uIHZvbHVtZU9wLCB2b2lkICogY2xpZW50
RGF0YSwgT1NTdGF0dXMgZXJyLCBGU1ZvbHVtZVJlZk51bSB2b2x1bWVSZWZOdW0sIHBpZF90IGRp
c3NlbnRlciwgRlNWb2x1bWVVbm1vdW50VVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKSh2b2x1bWVP
cCwgY2xpZW50RGF0YSwgZXJyLCB2b2x1bWVSZWZOdW0sIGRpc3NlbnRlcik7IH0KICAgIGlubGlu
ZSB2b2lkIEludm9rZUZTVm9sdW1lRWplY3RVUFAoRlNWb2x1bWVPcGVyYXRpb24gdm9sdW1lT3As
IHZvaWQgKiBjbGllbnREYXRhLCBPU1N0YXR1cyBlcnIsIEZTVm9sdW1lUmVmTnVtIHZvbHVtZVJl
Zk51bSwgcGlkX3QgZGlzc2VudGVyLCBGU1ZvbHVtZUVqZWN0VVBQIHVzZXJVUFApIHsgKCp1c2Vy
VVBQKSh2b2x1bWVPcCwgY2xpZW50RGF0YSwgZXJyLCB2b2x1bWVSZWZOdW0sIGRpc3NlbnRlcik7
IH0KIyA0Njk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmVu
dW0gewoKCgoKCiAga0ZTTW91bnRTZXJ2ZXJNYXJrRG9Ob3REaXNwbGF5ID0gKDEgPDwgMCksCgoK
CgoKICBrRlNNb3VudFNlcnZlck1vdW50T25Nb3VudERpciA9ICgxIDw8IDIpCn07CiMgNDcxOSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwplbnVtIHsKCgoKCgoK
ICBrRlNNb3VudFNlcnZlck1vdW50V2l0aG91dE5vdGlmaWNhdGlvbiA9ICgxIDw8IDEpCn07CgoK
CgoKCmVudW0gewojIDQ3NDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVz
LmgiIDMKICBrRlNFamVjdFZvbHVtZUZvcmNlRWplY3QgPSAoMSA8PCAwKQp9OwoKCgoKCgplbnVt
IHsKIyA0NzYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCiAg
a0ZTVW5tb3VudFZvbHVtZUZvcmNlVW5tb3VudCA9ICgxIDw8IDApCn07CiMgNDc4NyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlND
cmVhdGVWb2x1bWVPcGVyYXRpb24oRlNWb2x1bWVPcGVyYXRpb24gKiB2b2x1bWVPcCkgOwojIDQ4
MTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzIEZTRGlzcG9zZVZvbHVtZU9wZXJhdGlvbihGU1ZvbHVtZU9wZXJhdGlvbiB2b2x1bWVP
cCkgOwojIDQ4NDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMK
ZXh0ZXJuIE9TU3RhdHVzIEZTTW91bnRMb2NhbFZvbHVtZVN5bmMoQ0ZTdHJpbmdSZWYgZGlza0lE
LCBDRlVSTFJlZiBtb3VudERpciwgRlNWb2x1bWVSZWZOdW0gKm1vdW50ZWRWb2x1bWVSZWZOdW0s
IE9wdGlvbkJpdHMgZmxhZ3MpIDsKIyA0ODkxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBGU01vdW50TG9jYWxWb2x1bWVBc3luYyhD
RlN0cmluZ1JlZiBkaXNrSUQsIENGVVJMUmVmIG1vdW50RGlyLCBGU1ZvbHVtZU9wZXJhdGlvbiB2
b2x1bWVPcCwgdm9pZCAqY2xpZW50RGF0YSwgT3B0aW9uQml0cyBmbGFncywgRlNWb2x1bWVNb3Vu
dFVQUCBjYWxsYmFjaywgQ0ZSdW5Mb29wUmVmIHJ1bmxvb3AsIENGU3RyaW5nUmVmIHJ1bmxvb3BN
b2RlKSA7CiMgNDkzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIg
MwpleHRlcm4gT1NTdGF0dXMgRlNNb3VudFNlcnZlclZvbHVtZVN5bmMoQ0ZVUkxSZWYgdXJsLCBD
RlVSTFJlZiBtb3VudERpciwgQ0ZTdHJpbmdSZWYgdXNlciwgQ0ZTdHJpbmdSZWYgcGFzc3dvcmQs
IEZTVm9sdW1lUmVmTnVtICptb3VudGVkVm9sdW1lUmVmTnVtLCBPcHRpb25CaXRzIGZsYWdzKSA7
CiMgNDk5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRl
cm4gT1NTdGF0dXMgRlNNb3VudFNlcnZlclZvbHVtZUFzeW5jKENGVVJMUmVmIHVybCwgQ0ZVUkxS
ZWYgbW91bnREaXIsIENGU3RyaW5nUmVmIHVzZXIsIENGU3RyaW5nUmVmIHBhc3N3b3JkLCBGU1Zv
bHVtZU9wZXJhdGlvbiB2b2x1bWVPcCwgdm9pZCAqY2xpZW50RGF0YSwgT3B0aW9uQml0cyBmbGFn
cywgRlNWb2x1bWVNb3VudFVQUCBjYWxsYmFjaywgQ0ZSdW5Mb29wUmVmIHJ1bmxvb3AsIENGU3Ry
aW5nUmVmIHJ1bmxvb3BNb2RlKSA7CiMgNTAzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlNHZXRBc3luY01vdW50U3RhdHVzKEZT
Vm9sdW1lT3BlcmF0aW9uIHZvbHVtZU9wLCBGU01vdW50U3RhdHVzICpzdGF0dXMsIE9TU3RhdHVz
ICp2b2x1bWVPcFN0YXR1cywgRlNWb2x1bWVSZWZOdW0gKm1vdW50ZWRWb2x1bWVSZWZOdW0sIHZv
aWQgKipjbGllbnREYXRhKSA7CiMgNTA2NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlNVbm1vdW50Vm9sdW1lU3luYyhGU1ZvbHVt
ZVJlZk51bSB2UmVmTnVtLCBPcHRpb25CaXRzIGZsYWdzLCBwaWRfdCAqZGlzc2VudGVyKSA7CiMg
NTExMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4g
T1NTdGF0dXMgRlNVbm1vdW50Vm9sdW1lQXN5bmMoRlNWb2x1bWVSZWZOdW0gdlJlZk51bSwgT3B0
aW9uQml0cyBmbGFncywgRlNWb2x1bWVPcGVyYXRpb24gdm9sdW1lT3AsIHZvaWQgKmNsaWVudERh
dGEsIEZTVm9sdW1lVW5tb3VudFVQUCBjYWxsYmFjaywgQ0ZSdW5Mb29wUmVmIHJ1bmxvb3AsIENG
U3RyaW5nUmVmIHJ1bmxvb3BNb2RlKSA7CiMgNTE1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlNHZXRBc3luY1VubW91bnRTdGF0
dXMoRlNWb2x1bWVPcGVyYXRpb24gdm9sdW1lT3AsIEZTVW5tb3VudFN0YXR1cyAqc3RhdHVzLCBP
U1N0YXR1cyAqdm9sdW1lT3BTdGF0dXMsIEZTVm9sdW1lUmVmTnVtICp2b2x1bWVSZWZOdW0sIHBp
ZF90ICpkaXNzZW50ZXIsIHZvaWQgKipjbGllbnREYXRhKSA7CiMgNTE3NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlNDYW5jZWxW
b2x1bWVPcGVyYXRpb24oRlNWb2x1bWVPcGVyYXRpb24gdm9sdW1lT3ApIDsKIyA1MjA5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBG
U0VqZWN0Vm9sdW1lU3luYyhGU1ZvbHVtZVJlZk51bSB2UmVmTnVtLCBPcHRpb25CaXRzIGZsYWdz
LCBwaWRfdCAqZGlzc2VudGVyKSA7CiMgNTI1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlNFamVjdFZvbHVtZUFzeW5jKEZTVm9s
dW1lUmVmTnVtIHZSZWZOdW0sIE9wdGlvbkJpdHMgZmxhZ3MsIEZTVm9sdW1lT3BlcmF0aW9uIHZv
bHVtZU9wLCB2b2lkICpjbGllbnREYXRhLCBGU1ZvbHVtZUVqZWN0VVBQIGNhbGxiYWNrLCBDRlJ1
bkxvb3BSZWYgcnVubG9vcCwgQ0ZTdHJpbmdSZWYgcnVubG9vcE1vZGUpIDsKIyA1Mjk1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBG
U0dldEFzeW5jRWplY3RTdGF0dXMoRlNWb2x1bWVPcGVyYXRpb24gdm9sdW1lT3AsIEZTRWplY3RT
dGF0dXMgKnN0YXR1cywgT1NTdGF0dXMgKnZvbHVtZU9wU3RhdHVzLCBGU1ZvbHVtZVJlZk51bSAq
dm9sdW1lUmVmTnVtLCBwaWRfdCAqZGlzc2VudGVyLCB2b2lkICoqY2xpZW50RGF0YSkgOwojIDUz
MjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzIEZTQ29weURpc2tJREZvclZvbHVtZShGU1ZvbHVtZVJlZk51bSB2UmVmTnVtLCBDRlN0
cmluZ1JlZiAqZGlza0lEKSA7CiMgNTM0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlNDb3B5VVJMRm9yVm9sdW1lKEZTVm9sdW1l
UmVmTnVtIHZSZWZOdW0sIENGVVJMUmVmICp1cmwpIDsKIyA1MzczICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBGU0dldFZvbHVtZUZv
ckRpc2tJRChDRlN0cmluZ1JlZiBkaXNrSUQsIEZTVm9sdW1lUmVmTnVtICp2UmVmTnVtKSA7CiMg
NTQwMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4g
T1NTdGF0dXMgRlNDb3B5REFEaXNrRm9yVm9sdW1lKEZTVm9sdW1lUmVmTnVtIHZSZWZOdW0sIERB
RGlza1JlZiAqZGlzaykgOwojIDU0MjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTR2V0Vm9sdW1lRm9yREFEaXNrKERBRGlza1Jl
ZiBkaXNrLCBGU1ZvbHVtZVJlZk51bSAqdlJlZk51bSkgOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19G
U0ZpbGVPcGVyYXRpb24qIEZTRmlsZU9wZXJhdGlvblJlZjsKdHlwZWRlZiBVSW50MzIgRlNGaWxl
T3BlcmF0aW9uU3RhZ2U7CiMgNTQ0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
RmlsZXMuaCIgMwpzdHJ1Y3QgRlNGaWxlT3BlcmF0aW9uQ2xpZW50Q29udGV4dCB7CgoKCgoKCiAg
Q0ZJbmRleCB2ZXJzaW9uOwoKCgoKCiAgdm9pZCAqIGluZm87CiMgNTQ2MyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwogIENGQWxsb2NhdG9yUmV0YWluQ2FsbEJh
Y2sgcmV0YWluOwoKCgoKCiAgQ0ZBbGxvY2F0b3JSZWxlYXNlQ2FsbEJhY2sgcmVsZWFzZTsKCgoK
CgoKCiAgQ0ZBbGxvY2F0b3JDb3B5RGVzY3JpcHRpb25DYWxsQmFjayBjb3B5RGVzY3JpcHRpb247
Cn07CnR5cGVkZWYgc3RydWN0IEZTRmlsZU9wZXJhdGlvbkNsaWVudENvbnRleHQgRlNGaWxlT3Bl
cmF0aW9uQ2xpZW50Q29udGV4dDsKIyA1NTE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GaWxlcy5oIiAzCnR5cGVkZWYgdm9pZCAoICogRlNGaWxlT3BlcmF0aW9uU3RhdHVzUHJv
Y1B0cikoRlNGaWxlT3BlcmF0aW9uUmVmIGZpbGVPcCwgY29uc3QgRlNSZWYgKmN1cnJlbnRJdGVt
LCBGU0ZpbGVPcGVyYXRpb25TdGFnZSBzdGFnZSwgT1NTdGF0dXMgZXJyb3IsIENGRGljdGlvbmFy
eVJlZiBzdGF0dXNEaWN0aW9uYXJ5LCB2b2lkICppbmZvKTsKIyA1NTU1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCnR5cGVkZWYgdm9pZCAoICogRlNQYXRoRmls
ZU9wZXJhdGlvblN0YXR1c1Byb2NQdHIpKEZTRmlsZU9wZXJhdGlvblJlZiBmaWxlT3AsIGNvbnN0
IGNoYXIgKmN1cnJlbnRJdGVtLCBGU0ZpbGVPcGVyYXRpb25TdGFnZSBzdGFnZSwgT1NTdGF0dXMg
ZXJyb3IsIENGRGljdGlvbmFyeVJlZiBzdGF0dXNEaWN0aW9uYXJ5LCB2b2lkICppbmZvKTsKIyA1
NTY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmVudW0gewoK
CgoKCiAga0ZTRmlsZU9wZXJhdGlvbkRlZmF1bHRPcHRpb25zID0gMCwKCgoKCgogIGtGU0ZpbGVP
cGVyYXRpb25PdmVyd3JpdGUgPSAweDAxLAoKCgoKCiAga0ZTRmlsZU9wZXJhdGlvblNraXBTb3Vy
Y2VQZXJtaXNzaW9uRXJyb3JzID0gMHgwMiwKCgoKCgogIGtGU0ZpbGVPcGVyYXRpb25Eb05vdE1v
dmVBY3Jvc3NWb2x1bWVzID0gMHgwNCwKCgoKCgoKICBrRlNGaWxlT3BlcmF0aW9uU2tpcFByZWZs
aWdodCA9IDB4MDgKfTsKIyA1NjA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9G
aWxlcy5oIiAzCmVudW0gewoKCgoKICBrRlNPcGVyYXRpb25TdGFnZVVuZGVmaW5lZCA9IDAsCgoK
CgoKICBrRlNPcGVyYXRpb25TdGFnZVByZWZsaWdodGluZyA9IDEsCgoKCgogIGtGU09wZXJhdGlv
blN0YWdlUnVubmluZyA9IDIsCgoKCgogIGtGU09wZXJhdGlvblN0YWdlQ29tcGxldGUgPSAzCn07
CiMgNTY0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0ZTT3BlcmF0aW9uVG90YWxCeXRlc0tleSA7CiMgNTY2MyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0ZTT3BlcmF0aW9uQnl0ZXNDb21wbGV0ZUtleSA7CiMgNTY3OSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0ZTT3BlcmF0aW9uQnl0ZXNSZW1haW5pbmdLZXkgOwojIDU2OTUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtGU09wZXJhdGlvblRvdGFsT2JqZWN0c0tleSA7CiMgNTcxMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0ZTT3Bl
cmF0aW9uT2JqZWN0c0NvbXBsZXRlS2V5IDsKIyA1NzI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrRlNPcGVyYXRp
b25PYmplY3RzUmVtYWluaW5nS2V5IDsKIyA1NzQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrRlNPcGVyYXRpb25U
b3RhbFVzZXJWaXNpYmxlT2JqZWN0c0tleSA7CiMgNTc2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0ZTT3BlcmF0
aW9uVXNlclZpc2libGVPYmplY3RzQ29tcGxldGVLZXkgOwojIDU3ODEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtG
U09wZXJhdGlvblVzZXJWaXNpYmxlT2JqZWN0c1JlbWFpbmluZ0tleSA7CiMgNTc5NSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0ZTT3BlcmF0aW9uVGhyb3VnaHB1dEtleSA7CiMgNTgzMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlNDb3B5T2JqZWN0
U3luYyhjb25zdCBGU1JlZiAqc291cmNlLCBjb25zdCBGU1JlZiAqZGVzdERpciwgQ0ZTdHJpbmdS
ZWYgZGVzdE5hbWUsIEZTUmVmICp0YXJnZXQsIE9wdGlvbkJpdHMgb3B0aW9ucykgOwojIDU4NzQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzIEZTTW92ZU9iamVjdFN5bmMoY29uc3QgRlNSZWYgKnNvdXJjZSwgY29uc3QgRlNSZWYgKmRl
c3REaXIsIENGU3RyaW5nUmVmIGRlc3ROYW1lLCBGU1JlZiAqdGFyZ2V0LCBPcHRpb25CaXRzIG9w
dGlvbnMpIDsKIyA1OTA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5o
IiAzCmV4dGVybiBPU1N0YXR1cyBGU01vdmVPYmplY3RUb1RyYXNoU3luYyhjb25zdCBGU1JlZiAq
c291cmNlLCBGU1JlZiAqdGFyZ2V0LCBPcHRpb25CaXRzIG9wdGlvbnMpIDsKIyA1OTQ3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBG
U1BhdGhDb3B5T2JqZWN0U3luYyhjb25zdCBjaGFyICpzb3VyY2VQYXRoLCBjb25zdCBjaGFyICpk
ZXN0RGlyUGF0aCwgQ0ZTdHJpbmdSZWYgZGVzdE5hbWUsIGNoYXIgKip0YXJnZXRQYXRoLCBPcHRp
b25CaXRzIG9wdGlvbnMpIDsKIyA1OTkxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBGU1BhdGhNb3ZlT2JqZWN0U3luYyhjb25zdCBj
aGFyICpzb3VyY2VQYXRoLCBjb25zdCBjaGFyICpkZXN0RGlyUGF0aCwgQ0ZTdHJpbmdSZWYgZGVz
dE5hbWUsIGNoYXIgKip0YXJnZXRQYXRoLCBPcHRpb25CaXRzIG9wdGlvbnMpIDsKIyA2MDI2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1
cyBGU1BhdGhNb3ZlT2JqZWN0VG9UcmFzaFN5bmMoY29uc3QgY2hhciAqc291cmNlUGF0aCwgY2hh
ciAqKnRhcmdldFBhdGgsIE9wdGlvbkJpdHMgb3B0aW9ucykgOwojIDYwNDYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIENGVHlwZUlEIEZTRmlsZU9w
ZXJhdGlvbkdldFR5cGVJRCh2b2lkKSA7CiMgNjA3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gRlNGaWxlT3BlcmF0aW9uUmVmIEZTRmlsZU9wZXJh
dGlvbkNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvYykgOwojIDYxMDUgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTRmlsZU9wZXJh
dGlvblNjaGVkdWxlV2l0aFJ1bkxvb3AoRlNGaWxlT3BlcmF0aW9uUmVmIGZpbGVPcCwgQ0ZSdW5M
b29wUmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVmIHJ1bkxvb3BNb2RlKSA7CiMgNjEzNiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlNG
aWxlT3BlcmF0aW9uVW5zY2hlZHVsZUZyb21SdW5Mb29wKEZTRmlsZU9wZXJhdGlvblJlZiBmaWxl
T3AsIENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydW5Mb29wTW9kZSkgOwojIDYx
ODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzIEZTQ29weU9iamVjdEFzeW5jKEZTRmlsZU9wZXJhdGlvblJlZiBmaWxlT3AsIGNvbnN0
IEZTUmVmICpzb3VyY2UsIGNvbnN0IEZTUmVmICpkZXN0RGlyLCBDRlN0cmluZ1JlZiBkZXN0TmFt
ZSwgT3B0aW9uQml0cyBmbGFncywgRlNGaWxlT3BlcmF0aW9uU3RhdHVzUHJvY1B0ciBjYWxsYmFj
aywgQ0ZUaW1lSW50ZXJ2YWwgc3RhdHVzQ2hhbmdlSW50ZXJ2YWwsIEZTRmlsZU9wZXJhdGlvbkNs
aWVudENvbnRleHQgKmNsaWVudENvbnRleHQpIDsKIyA2MjQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBGU01vdmVPYmplY3RBc3lu
YyhGU0ZpbGVPcGVyYXRpb25SZWYgZmlsZU9wLCBjb25zdCBGU1JlZiAqc291cmNlLCBjb25zdCBG
U1JlZiAqZGVzdERpciwgQ0ZTdHJpbmdSZWYgZGVzdE5hbWUsIE9wdGlvbkJpdHMgZmxhZ3MsIEZT
RmlsZU9wZXJhdGlvblN0YXR1c1Byb2NQdHIgY2FsbGJhY2ssIENGVGltZUludGVydmFsIHN0YXR1
c0NoYW5nZUludGVydmFsLCBGU0ZpbGVPcGVyYXRpb25DbGllbnRDb250ZXh0ICpjbGllbnRDb250
ZXh0KSA7CiMgNjI5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIg
MwpleHRlcm4gT1NTdGF0dXMgRlNNb3ZlT2JqZWN0VG9UcmFzaEFzeW5jKEZTRmlsZU9wZXJhdGlv
blJlZiBmaWxlT3AsIGNvbnN0IEZTUmVmICpzb3VyY2UsIE9wdGlvbkJpdHMgZmxhZ3MsIEZTRmls
ZU9wZXJhdGlvblN0YXR1c1Byb2NQdHIgY2FsbGJhY2ssIENGVGltZUludGVydmFsIHN0YXR1c0No
YW5nZUludGVydmFsLCBGU0ZpbGVPcGVyYXRpb25DbGllbnRDb250ZXh0ICpjbGllbnRDb250ZXh0
KSA7CiMgNjM0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpl
eHRlcm4gT1NTdGF0dXMgRlNQYXRoQ29weU9iamVjdEFzeW5jKEZTRmlsZU9wZXJhdGlvblJlZiBm
aWxlT3AsIGNvbnN0IGNoYXIgKnNvdXJjZVBhdGgsIGNvbnN0IGNoYXIgKmRlc3REaXJQYXRoLCBD
RlN0cmluZ1JlZiBkZXN0TmFtZSwgT3B0aW9uQml0cyBmbGFncywgRlNQYXRoRmlsZU9wZXJhdGlv
blN0YXR1c1Byb2NQdHIgY2FsbGJhY2ssIENGVGltZUludGVydmFsIHN0YXR1c0NoYW5nZUludGVy
dmFsLCBGU0ZpbGVPcGVyYXRpb25DbGllbnRDb250ZXh0ICpjbGllbnRDb250ZXh0KSA7CiMgNjQw
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NT
dGF0dXMgRlNQYXRoTW92ZU9iamVjdEFzeW5jKEZTRmlsZU9wZXJhdGlvblJlZiBmaWxlT3AsIGNv
bnN0IGNoYXIgKnNvdXJjZVBhdGgsIGNvbnN0IGNoYXIgKmRlc3REaXJQYXRoLCBDRlN0cmluZ1Jl
ZiBkZXN0TmFtZSwgT3B0aW9uQml0cyBmbGFncywgRlNQYXRoRmlsZU9wZXJhdGlvblN0YXR1c1By
b2NQdHIgY2FsbGJhY2ssIENGVGltZUludGVydmFsIHN0YXR1c0NoYW5nZUludGVydmFsLCBGU0Zp
bGVPcGVyYXRpb25DbGllbnRDb250ZXh0ICpjbGllbnRDb250ZXh0KSA7CiMgNjQ1MyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlNQ
YXRoTW92ZU9iamVjdFRvVHJhc2hBc3luYyhGU0ZpbGVPcGVyYXRpb25SZWYgZmlsZU9wLCBjb25z
dCBjaGFyICpzb3VyY2VQYXRoLCBPcHRpb25CaXRzIGZsYWdzLCBGU1BhdGhGaWxlT3BlcmF0aW9u
U3RhdHVzUHJvY1B0ciBjYWxsYmFjaywgQ0ZUaW1lSW50ZXJ2YWwgc3RhdHVzQ2hhbmdlSW50ZXJ2
YWwsIEZTRmlsZU9wZXJhdGlvbkNsaWVudENvbnRleHQgKmNsaWVudENvbnRleHQpIDsKIyA2NDc2
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0
YXR1cyBGU0ZpbGVPcGVyYXRpb25DYW5jZWwoRlNGaWxlT3BlcmF0aW9uUmVmIGZpbGVPcCkgOwoj
IDY1MjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzIEZTRmlsZU9wZXJhdGlvbkNvcHlTdGF0dXMoRlNGaWxlT3BlcmF0aW9uUmVmIGZp
bGVPcCwgRlNSZWYgKmN1cnJlbnRJdGVtLCBGU0ZpbGVPcGVyYXRpb25TdGFnZSAqc3RhZ2UsIE9T
U3RhdHVzICplcnJvciwgQ0ZEaWN0aW9uYXJ5UmVmICpzdGF0dXNEaWN0aW9uYXJ5LCB2b2lkICoq
aW5mbykgOwojIDY1NjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgi
IDMKZXh0ZXJuIE9TU3RhdHVzIEZTUGF0aEZpbGVPcGVyYXRpb25Db3B5U3RhdHVzKEZTRmlsZU9w
ZXJhdGlvblJlZiBmaWxlT3AsIGNoYXIgKipjdXJyZW50SXRlbSwgRlNGaWxlT3BlcmF0aW9uU3Rh
Z2UgKnN0YWdlLCBPU1N0YXR1cyAqZXJyb3IsIENGRGljdGlvbmFyeVJlZiAqc3RhdHVzRGljdGlv
bmFyeSwgdm9pZCAqKmluZm8pIDsKIyA2NTk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GaWxlcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBGU0NyZWF0ZVN0cmluZ0Zyb21IRlNV
bmlTdHIoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIGNvbnN0IEhGU1VuaVN0cjI1NSAqdW5pU3RyKSA7
CiMgNjYyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRl
cm4gT1NTdGF0dXMgRlNHZXRIRlNVbmlTdHJGcm9tU3RyaW5nKENGU3RyaW5nUmVmIHRoZVN0cmlu
ZywgSEZTVW5pU3RyMjU1ICp1bmlTdHIpIDsKIyA2NjQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBDRlR5cGVJRCBGU0ZpbGVTZWN1cml0eUdldFR5
cGVJRCh2b2lkKSA7CiMgNjY2OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmls
ZXMuaCIgMwpleHRlcm4gRlNGaWxlU2VjdXJpdHlSZWYgRlNGaWxlU2VjdXJpdHlDcmVhdGUoQ0ZB
bGxvY2F0b3JSZWYgYWxsb2MpIDsKIyA2NjgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GaWxlcy5oIiAzCmV4dGVybiBGU0ZpbGVTZWN1cml0eVJlZiBGU0ZpbGVTZWN1cml0eUNy
ZWF0ZVdpdGhGU1Blcm1pc3Npb25JbmZvKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBjb25zdCBGU1Bl
cm1pc3Npb25JbmZvICpwZXJtaXNzaW9ucykgOwojIDY2OTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIEZTRmlsZVNlY3VyaXR5UmVmIEZTRmlsZVNl
Y3VyaXR5UmVmQ3JlYXRlQ29weShDRkFsbG9jYXRvclJlZiBhbGxvYywgRlNGaWxlU2VjdXJpdHlS
ZWYgZmlsZVNlYykgOwojIDY3MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0Zp
bGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTRmlsZVNlY3VyaXR5R2V0T3duZXJVVUlEKEZTRmls
ZVNlY3VyaXR5UmVmIGZpbGVTZWMsIENGVVVJREJ5dGVzICpvd25lcikgOwojIDY3NTUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZT
RmlsZVNlY3VyaXR5U2V0T3duZXJVVUlEKEZTRmlsZVNlY3VyaXR5UmVmIGZpbGVTZWMsIGNvbnN0
IENGVVVJREJ5dGVzICpvd25lcikgOwojIDY3ODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTRmlsZVNlY3VyaXR5R2V0R3JvdXBV
VUlEKEZTRmlsZVNlY3VyaXR5UmVmIGZpbGVTZWMsIENGVVVJREJ5dGVzICpncm91cCkgOwojIDY4
MTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzIEZTRmlsZVNlY3VyaXR5U2V0R3JvdXBVVUlEKEZTRmlsZVNlY3VyaXR5UmVmIGZpbGVT
ZWMsIGNvbnN0IENGVVVJREJ5dGVzICpncm91cCkgOwojIDY4NDIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTRmlsZVNlY3VyaXR5
Q29weUFjY2Vzc0NvbnRyb2xMaXN0KEZTRmlsZVNlY3VyaXR5UmVmIGZpbGVTZWMsIGFjbF90ICph
Y2Nlc3NDb250cm9sTGlzdCkgOwojIDY4NzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTRmlsZVNlY3VyaXR5U2V0QWNjZXNzQ29u
dHJvbExpc3QoRlNGaWxlU2VjdXJpdHlSZWYgZmlsZVNlYywgYWNsX3QgYWNjZXNzQ29udHJvbExp
c3QpIDsKIyA2OTAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAz
CmV4dGVybiBPU1N0YXR1cyBGU0ZpbGVTZWN1cml0eUdldE93bmVyKEZTRmlsZVNlY3VyaXR5UmVm
IGZpbGVTZWMsIFVJbnQzMiAqb3duZXIpIDsKIyA2OTI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBGU0ZpbGVTZWN1cml0eVNldE93
bmVyKEZTRmlsZVNlY3VyaXR5UmVmIGZpbGVTZWMsIFVJbnQzMiBvd25lcikgOwojIDY5NTUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
IEZTRmlsZVNlY3VyaXR5R2V0R3JvdXAoRlNGaWxlU2VjdXJpdHlSZWYgZmlsZVNlYywgVUludDMy
ICpncm91cCkgOwojIDY5ODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVz
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTRmlsZVNlY3VyaXR5U2V0R3JvdXAoRlNGaWxlU2VjdXJp
dHlSZWYgZmlsZVNlYywgVUludDMyIGdyb3VwKSA7CiMgNzAwOSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvRmlsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlNGaWxlU2VjdXJpdHlH
ZXRNb2RlKEZTRmlsZVNlY3VyaXR5UmVmIGZpbGVTZWMsIFVJbnQxNiAqbW9kZSkgOwojIDcwMzUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzIEZTRmlsZVNlY3VyaXR5U2V0TW9kZShGU0ZpbGVTZWN1cml0eVJlZiBmaWxlU2VjLCBVSW50
MTYgbW9kZSkgOwoKCgplbnVtIHsKCiAgcGxlYXNlQ2FjaGVCaXQgPSA0LAogIHBsZWFzZUNhY2hl
TWFzayA9IDB4MDAxMCwKICBub0NhY2hlQml0ID0gNSwKICBub0NhY2hlTWFzayA9IDB4MDAyMCwK
ICByZFZlcmlmeUJpdCA9IDYsCiAgcmRWZXJpZnlNYXNrID0gMHgwMDQwLAogIHJkVmVyaWZ5ID0g
NjQsCiAgZm9yY2VSZWFkQml0ID0gNiwKICBmb3JjZVJlYWRNYXNrID0gMHgwMDQwLAogIG5ld0xp
bmVCaXQgPSA3LAogIG5ld0xpbmVNYXNrID0gMHgwMDgwLAogIG5ld0xpbmVDaGFyTWFzayA9IDB4
RkYwMAp9OwoKCgplbnVtIHsKICBrT3duZXJJRDJOYW1lID0gMSwKICBrR3JvdXBJRDJOYW1lID0g
MiwKICBrT3duZXJOYW1lMklEID0gMywKICBrR3JvdXBOYW1lMklEID0gNCwKICBrUmV0dXJuTmV4
dFVzZXIgPSAxLAogIGtSZXR1cm5OZXh0R3JvdXAgPSAyLAogIGtSZXR1cm5OZXh0VUcgPSAzCn07
CgoKZW51bSB7CiAga1ZDQkZsYWdzSWRsZUZsdXNoQml0ID0gMywKICBrVkNCRmxhZ3NJZGxlRmx1
c2hNYXNrID0gMHgwMDA4LAogIGtWQ0JGbGFnc0hGU1BsdXNBUElzQml0ID0gNCwKICBrVkNCRmxh
Z3NIRlNQbHVzQVBJc01hc2sgPSAweDAwMTAsCiAga1ZDQkZsYWdzSGFyZHdhcmVHb25lQml0ID0g
NSwKICBrVkNCRmxhZ3NIYXJkd2FyZUdvbmVNYXNrID0gMHgwMDIwLAogIGtWQ0JGbGFnc1ZvbHVt
ZURpcnR5Qml0ID0gMTUsCiAga1ZDQkZsYWdzVm9sdW1lRGlydHlNYXNrID0gMHg4MDAwCn07CgoK
ZW51bSB7CiAga2lvVkF0cmJEZWZhdWx0Vm9sdW1lQml0ID0gNSwKICBraW9WQXRyYkRlZmF1bHRW
b2x1bWVNYXNrID0gMHgwMDIwLAogIGtpb1ZBdHJiRmlsZXNPcGVuQml0ID0gNiwKICBraW9WQXRy
YkZpbGVzT3Blbk1hc2sgPSAweDAwNDAsCiAga2lvVkF0cmJIYXJkd2FyZUxvY2tlZEJpdCA9IDcs
CiAga2lvVkF0cmJIYXJkd2FyZUxvY2tlZE1hc2sgPSAweDAwODAsCiAga2lvVkF0cmJTb2Z0d2Fy
ZUxvY2tlZEJpdCA9IDE1LAogIGtpb1ZBdHJiU29mdHdhcmVMb2NrZWRNYXNrID0gMHg4MDAwCn07
CgoKZW51bSB7CgogIGtpb0ZsQXR0cmliTG9ja2VkQml0ID0gMCwKICBraW9GbEF0dHJpYkxvY2tl
ZE1hc2sgPSAweDAxLAogIGtpb0ZsQXR0cmliUmVzT3BlbkJpdCA9IDIsCiAga2lvRmxBdHRyaWJS
ZXNPcGVuTWFzayA9IDB4MDQsCiAga2lvRmxBdHRyaWJEYXRhT3BlbkJpdCA9IDMsCiAga2lvRmxB
dHRyaWJEYXRhT3Blbk1hc2sgPSAweDA4LAogIGtpb0ZsQXR0cmliRGlyQml0ID0gNCwKICBraW9G
bEF0dHJpYkRpck1hc2sgPSAweDEwLAogIGlvRGlyRmxnID0gNCwKICBpb0Rpck1hc2sgPSAweDEw
LAogIGtpb0ZsQXR0cmliQ29weVByb3RCaXQgPSA2LAogIGtpb0ZsQXR0cmliQ29weVByb3RNYXNr
ID0gMHg0MCwKICBraW9GbEF0dHJpYkZpbGVPcGVuQml0ID0gNywKICBraW9GbEF0dHJpYkZpbGVP
cGVuTWFzayA9IDB4ODAsCiAga2lvRmxBdHRyaWJJblNoYXJlZEJpdCA9IDIsCiAga2lvRmxBdHRy
aWJJblNoYXJlZE1hc2sgPSAweDA0LAogIGtpb0ZsQXR0cmliTW91bnRlZEJpdCA9IDMsCiAga2lv
RmxBdHRyaWJNb3VudGVkTWFzayA9IDB4MDgsCiAga2lvRmxBdHRyaWJTaGFyZVBvaW50Qml0ID0g
NSwKICBraW9GbEF0dHJpYlNoYXJlUG9pbnRNYXNrID0gMHgyMAp9OwoKCgoKCmVudW0gewogIGtp
b0ZDQldyaXRlQml0ID0gOCwKICBraW9GQ0JXcml0ZU1hc2sgPSAweDAxMDAsCiAga2lvRkNCUmVz
b3VyY2VCaXQgPSA5LAogIGtpb0ZDQlJlc291cmNlTWFzayA9IDB4MDIwMCwKICBraW9GQ0JXcml0
ZUxvY2tlZEJpdCA9IDEwLAogIGtpb0ZDQldyaXRlTG9ja2VkTWFzayA9IDB4MDQwMCwKICBraW9G
Q0JMYXJnZUZpbGVCaXQgPSAxMSwKICBraW9GQ0JMYXJnZUZpbGVNYXNrID0gMHgwODAwLAogIGtp
b0ZDQlNoYXJlZFdyaXRlQml0ID0gMTIsCiAga2lvRkNCU2hhcmVkV3JpdGVNYXNrID0gMHgxMDAw
LAogIGtpb0ZDQkZpbGVMb2NrZWRCaXQgPSAxMywKICBraW9GQ0JGaWxlTG9ja2VkTWFzayA9IDB4
MjAwMCwKICBraW9GQ0JPd25DbHVtcEJpdCA9IDE0LAogIGtpb0ZDQk93bkNsdW1wTWFzayA9IDB4
NDAwMCwKICBraW9GQ0JNb2RpZmllZEJpdCA9IDE1LAogIGtpb0ZDQk1vZGlmaWVkTWFzayA9IDB4
ODAwMAp9OwoKCgoKZW51bSB7CiAga0ZvcmtJbmZvRmxhZ3NXcml0ZUJpdCA9IChraW9GQ0JXcml0
ZUJpdCAtIDgpLAogIGtGb3JrSW5mb0ZsYWdzV3JpdGVNYXNrID0gKDEgPDwga0ZvcmtJbmZvRmxh
Z3NXcml0ZUJpdCksCiAga0ZvcmtJbmZvRmxhZ3NSZXNvdXJjZUJpdCA9IChraW9GQ0JSZXNvdXJj
ZUJpdCAtIDgpLAogIGtGb3JrSW5mb0ZsYWdzUmVzb3VyY2VNYXNrID0gKDEgPDwga0ZvcmtJbmZv
RmxhZ3NSZXNvdXJjZUJpdCksCiAga0ZvcmtJbmZvRmxhZ3NXcml0ZUxvY2tlZEJpdCA9IChraW9G
Q0JXcml0ZUxvY2tlZEJpdCAtIDgpLAogIGtGb3JrSW5mb0ZsYWdzV3JpdGVMb2NrZWRNYXNrID0g
KDEgPDwga0ZvcmtJbmZvRmxhZ3NXcml0ZUxvY2tlZEJpdCksCiAga0ZvcmtJbmZvRmxhZ3NMYXJn
ZUZpbGVCaXQgPSAoa2lvRkNCTGFyZ2VGaWxlQml0IC0gOCksCiAga0ZvcmtJbmZvRmxhZ3NMYXJn
ZUZpbGVNYXNrID0gKDEgPDwga0ZvcmtJbmZvRmxhZ3NMYXJnZUZpbGVCaXQpLAogIGtGb3JrSW5m
b0ZsYWdzU2hhcmVkV3JpdGVCaXQgPSAoa2lvRkNCU2hhcmVkV3JpdGVCaXQgLSA4KSwKICBrRm9y
a0luZm9GbGFnc1NoYXJlZFdyaXRlTWFzayA9ICgxIDw8IGtGb3JrSW5mb0ZsYWdzU2hhcmVkV3Jp
dGVCaXQpLAogIGtGb3JrSW5mb0ZsYWdzRmlsZUxvY2tlZEJpdCA9IChraW9GQ0JGaWxlTG9ja2Vk
Qml0IC0gOCksCiAga0ZvcmtJbmZvRmxhZ3NGaWxlTG9ja2VkTWFzayA9ICgxIDw8IGtGb3JrSW5m
b0ZsYWdzRmlsZUxvY2tlZEJpdCksCiAga0ZvcmtJbmZvRmxhZ3NPd25DbHVtcEJpdCA9IChraW9G
Q0JPd25DbHVtcEJpdCAtIDgpLAogIGtGb3JrSW5mb0ZsYWdzT3duQ2x1bXBNYXNrID0gKDEgPDwg
a0ZvcmtJbmZvRmxhZ3NPd25DbHVtcEJpdCksCiAga0ZvcmtJbmZvRmxhZ3NNb2RpZmllZEJpdCA9
IChraW9GQ0JNb2RpZmllZEJpdCAtIDgpLAogIGtGb3JrSW5mb0ZsYWdzTW9kaWZpZWRNYXNrID0g
KDEgPDwga0ZvcmtJbmZvRmxhZ3NNb2RpZmllZEJpdCkKfTsKCgoKZW51bSB7CiAga2lvQUNVc2Vy
Tm9TZWVGb2xkZXJCaXQgPSAwLAogIGtpb0FDVXNlck5vU2VlRm9sZGVyTWFzayA9IDB4MDEsCiAg
a2lvQUNVc2VyTm9TZWVGaWxlc0JpdCA9IDEsCiAga2lvQUNVc2VyTm9TZWVGaWxlc01hc2sgPSAw
eDAyLAogIGtpb0FDVXNlck5vTWFrZUNoYW5nZXNCaXQgPSAyLAogIGtpb0FDVXNlck5vTWFrZUNo
YW5nZXNNYXNrID0gMHgwNCwKICBraW9BQ1VzZXJOb3RPd25lckJpdCA9IDcsCiAga2lvQUNVc2Vy
Tm90T3duZXJNYXNrID0gMHg4MAp9OwoKCmVudW0gewogIGtpb0FDQWNjZXNzT3duZXJCaXQgPSAz
MSwKICBraW9BQ0FjY2Vzc093bmVyTWFzayA9IChpbnQpMHg4MDAwMDAwMCwKICBraW9BQ0FjY2Vz
c0JsYW5rQWNjZXNzQml0ID0gMjgsCiAga2lvQUNBY2Nlc3NCbGFua0FjY2Vzc01hc2sgPSAweDEw
MDAwMDAwLAogIGtpb0FDQWNjZXNzVXNlcldyaXRlQml0ID0gMjYsCiAga2lvQUNBY2Nlc3NVc2Vy
V3JpdGVNYXNrID0gMHgwNDAwMDAwMCwKICBraW9BQ0FjY2Vzc1VzZXJSZWFkQml0ID0gMjUsCiAg
a2lvQUNBY2Nlc3NVc2VyUmVhZE1hc2sgPSAweDAyMDAwMDAwLAogIGtpb0FDQWNjZXNzVXNlclNl
YXJjaEJpdCA9IDI0LAogIGtpb0FDQWNjZXNzVXNlclNlYXJjaE1hc2sgPSAweDAxMDAwMDAwLAog
IGtpb0FDQWNjZXNzRXZlcnlvbmVXcml0ZUJpdCA9IDE4LAogIGtpb0FDQWNjZXNzRXZlcnlvbmVX
cml0ZU1hc2sgPSAweDAwMDQwMDAwLAogIGtpb0FDQWNjZXNzRXZlcnlvbmVSZWFkQml0ID0gMTcs
CiAga2lvQUNBY2Nlc3NFdmVyeW9uZVJlYWRNYXNrID0gMHgwMDAyMDAwMCwKICBraW9BQ0FjY2Vz
c0V2ZXJ5b25lU2VhcmNoQml0ID0gMTYsCiAga2lvQUNBY2Nlc3NFdmVyeW9uZVNlYXJjaE1hc2sg
PSAweDAwMDEwMDAwLAogIGtpb0FDQWNjZXNzR3JvdXBXcml0ZUJpdCA9IDEwLAogIGtpb0FDQWNj
ZXNzR3JvdXBXcml0ZU1hc2sgPSAweDAwMDAwNDAwLAogIGtpb0FDQWNjZXNzR3JvdXBSZWFkQml0
ID0gOSwKICBraW9BQ0FjY2Vzc0dyb3VwUmVhZE1hc2sgPSAweDAwMDAwMjAwLAogIGtpb0FDQWNj
ZXNzR3JvdXBTZWFyY2hCaXQgPSA4LAogIGtpb0FDQWNjZXNzR3JvdXBTZWFyY2hNYXNrID0gMHgw
MDAwMDEwMCwKICBraW9BQ0FjY2Vzc093bmVyV3JpdGVCaXQgPSAyLAogIGtpb0FDQWNjZXNzT3du
ZXJXcml0ZU1hc2sgPSAweDAwMDAwMDA0LAogIGtpb0FDQWNjZXNzT3duZXJSZWFkQml0ID0gMSwK
ICBraW9BQ0FjY2Vzc093bmVyUmVhZE1hc2sgPSAweDAwMDAwMDAyLAogIGtpb0FDQWNjZXNzT3du
ZXJTZWFyY2hCaXQgPSAwLAogIGtpb0FDQWNjZXNzT3duZXJTZWFyY2hNYXNrID0gMHgwMDAwMDAw
MSwKICBrZnVsbFByaXZpbGVnZXMgPSAweDAwMDcwMDA3LAogIGtvd25lclByaXZpbGVnZXMgPSAw
eDAwMDAwMDA3Cn07CiMgNzIzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRmls
ZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMgRlNHZXRWb2x1bWVQYXJtcyhGU1ZvbHVtZVJlZk51bSB2
b2x1bWUsIEdldFZvbFBhcm1zSW5mb0J1ZmZlciAqYnVmZmVyLCBCeXRlQ291bnQgYnVmZmVyU2l6
ZSkgOwojIDcyNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMK
ZXh0ZXJuIE9TU3RhdHVzIEZTR2V0Vm9sdW1lTW91bnRJbmZvU2l6ZShGU1ZvbHVtZVJlZk51bSB2
b2x1bWUsIEJ5dGVDb3VudCAqc2l6ZSkgOwojIDcyOTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTR2V0Vm9sdW1lTW91bnRJbmZv
KEZTVm9sdW1lUmVmTnVtIHZvbHVtZSwgQnl0ZVB0ciBidWZmZXIsIEJ5dGVDb3VudCBidWZmZXJT
aXplLCBCeXRlQ291bnQgKmFjdHVhbFNpemUpIDsKIyA3MzIzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBGU1ZvbHVtZU1vdW50KEJ5
dGVQdHIgYnVmZmVyLCBGU1ZvbHVtZVJlZk51bSAqbW91bnRlZFZvbHVtZSkgOwojIDczMzggIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
IEZTRmx1c2hWb2x1bWUoRlNWb2x1bWVSZWZOdW0gdlJlZk51bSkgOwojIDczNTIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIFBCRmx1
c2hWb2x1bWVTeW5jKEZTUmVmUGFyYW1QdHIgcGFyYW1CbG9jaykgOwojIDczNjYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIFBCRmx1
c2hWb2x1bWVBc3luYyhGU1JlZlBhcmFtUHRyIHBhcmFtQmxvY2spIDsKIyA3MzkzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GaWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBQQkZT
Q29weUZpbGVTeW5jKEZTUmVmUGFyYW1QdHIgcGFyYW1CbG9jaykgOwojIDc0MDcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIFBCRlND
b3B5RmlsZUFzeW5jKEZTUmVmUGFyYW1QdHIgcGFyYW1CbG9jaykgOwojIDc0MzcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzIEZTUmVz
b2x2ZU5vZGVJRChGU1ZvbHVtZVJlZk51bSB2b2x1bWUsIFVJbnQzMiBub2RlSUQsIEZTUmVmUHRy
IG5ld1JlZikgOwojIDc0NTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZpbGVz
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzIFBCRlNSZXNvbHZlTm9kZUlEU3luYyhGU1JlZlBhcmFtUHRy
IHBhcmFtQmxvY2spIDsKIyA3NDcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9G
aWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cyBQQkZTUmVzb2x2ZU5vZGVJREFzeW5jKEZTUmVmUGFy
YW1QdHIgcGFyYW1CbG9jaykgOwojIDEwNDkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GaWxlcy5oIiAzCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDMzICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKI2RlZmluZSBfX1JFU09VUkNFU19f
IAojIDQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpl
eHRlcm4gIkMiIHsKCgp0eXBlZGVmIFNJbnQxNiBSZXNJRDsKdHlwZWRlZiBTSW50MTYgUmVzQXR0
cmlidXRlczsKdHlwZWRlZiBTSW50MTYgUmVzRmlsZUF0dHJpYnV0ZXM7CnR5cGVkZWYgU0ludDE2
IFJlc291cmNlQ291bnQ7CnR5cGVkZWYgU0ludDE2IFJlc291cmNlSW5kZXg7CnR5cGVkZWYgRlNJ
T1JlZk51bSBSZXNGaWxlUmVmTnVtOwoKZW51bSB7CiAgcmVzU3lzUmVmQml0ID0gNywKICByZXNT
eXNIZWFwQml0ID0gNiwKICByZXNQdXJnZWFibGVCaXQgPSA1LAogIHJlc0xvY2tlZEJpdCA9IDQs
CiAgcmVzUHJvdGVjdGVkQml0ID0gMywKICByZXNQcmVsb2FkQml0ID0gMiwKICByZXNDaGFuZ2Vk
Qml0ID0gMQp9OwoKCmVudW0gewogIHJlc1N5c0hlYXAgPSA2NCwKICByZXNQdXJnZWFibGUgPSAz
MiwKICByZXNMb2NrZWQgPSAxNiwKICByZXNQcm90ZWN0ZWQgPSA4LAogIHJlc1ByZWxvYWQgPSA0
LAogIHJlc0NoYW5nZWQgPSAyCn07CgoKZW51bSB7CiAgbWFwUmVhZE9ubHlCaXQgPSA3LAogIG1h
cENvbXBhY3RCaXQgPSA2LAogIG1hcENoYW5nZWRCaXQgPSA1Cn07CgoKZW51bSB7CiAgbWFwUmVh
ZE9ubHkgPSAxMjgsCiAgbWFwQ29tcGFjdCA9IDY0LAogIG1hcENoYW5nZWQgPSAzMgp9OwoKCmVu
dW0gewogIGtSZXNGaWxlTm90T3BlbmVkID0gLTEsCiAga1N5c3RlbVJlc0ZpbGUgPSAwCn07CgoK
dHlwZWRlZiB2b2lkICggKiBSZXNFcnJQcm9jUHRyKShPU0VyciB0aEVycik7CnR5cGVkZWYgUmVz
RXJyUHJvY1B0ciBSZXNFcnJVUFA7CiMgMTAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gUmVzRXJyVVBQCk5ld1Jlc0VyclVQUChSZXNFcnJQ
cm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMTEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlUmVzRXJyVVBQKFJlc0VyclVQ
UCB1c2VyVVBQKSA7CiMgMTIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNv
dXJjZXMuaCIgMwpleHRlcm4gdm9pZApJbnZva2VSZXNFcnJVUFAoCiAgT1NFcnIgdGhFcnIsCiAg
UmVzRXJyVVBQIHVzZXJVUFApIDsKCgoKICAgIGlubGluZSBSZXNFcnJVUFAgTmV3UmVzRXJyVVBQ
KFJlc0VyclByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBp
bmxpbmUgdm9pZCBEaXNwb3NlUmVzRXJyVVBQKFJlc0VyclVQUCkgeyB9CiAgICBpbmxpbmUgdm9p
ZCBJbnZva2VSZXNFcnJVUFAoT1NFcnIgdGhFcnIsIFJlc0VyclVQUCB1c2VyVVBQKSB7ICgqdXNl
clVQUCkodGhFcnIpOyB9CiMgMTQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9S
ZXNvdXJjZXMuaCIgMwp0eXBlZGVmIE9TRXJyICggKiBSZXNvdXJjZUVuZGlhbkZpbHRlclB0ciko
SGFuZGxlIHRoZVJlc291cmNlLCBCb29sZWFuIGN1cnJlbnRseU5hdGl2ZUVuZGlhbik7CiMgMTUz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4g
dm9pZApDbG9zZVJlc0ZpbGUoUmVzRmlsZVJlZk51bSByZWZOdW0pIDsKIyAxNjggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiBPU0VycgpSZXNF
cnJvcih2b2lkKSA7CiMgMTgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNv
dXJjZXMuaCIgMwpleHRlcm4gUmVzRmlsZVJlZk51bQpDdXJSZXNGaWxlKHZvaWQpIDsKIyAxOTgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiBS
ZXNGaWxlUmVmTnVtCkhvbWVSZXNGaWxlKEhhbmRsZSB0aGVSZXNvdXJjZSkgOwojIDIxMyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKZXh0ZXJuIHZvaWQK
VXNlUmVzRmlsZShSZXNGaWxlUmVmTnVtIHJlZk51bSkgOwojIDIyOCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKZXh0ZXJuIFJlc291cmNlQ291bnQKQ291
bnRUeXBlcyh2b2lkKSA7CiMgMjQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9S
ZXNvdXJjZXMuaCIgMwpleHRlcm4gUmVzb3VyY2VDb3VudApDb3VudDFUeXBlcyh2b2lkKSA7CiMg
MjU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpleHRl
cm4gdm9pZApHZXRJbmRUeXBlKAogIFJlc1R5cGUgKiB0aGVUeXBlLAogIFJlc291cmNlSW5kZXgg
aXRlbUluZGV4KSA7CiMgMjc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNv
dXJjZXMuaCIgMwpleHRlcm4gdm9pZApHZXQxSW5kVHlwZSgKICBSZXNUeXBlICogdGhlVHlwZSwK
ICBSZXNvdXJjZUluZGV4IGl0ZW1JbmRleCkgOwojIDI5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKZXh0ZXJuIHZvaWQKU2V0UmVzTG9hZChCb29sZWFu
IGxvYWQpIDsKIyAzMDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNl
cy5oIiAzCmV4dGVybiBSZXNvdXJjZUNvdW50CkNvdW50UmVzb3VyY2VzKFJlc1R5cGUgdGhlVHlw
ZSkgOwojIDMyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgi
IDMKZXh0ZXJuIFJlc291cmNlQ291bnQKQ291bnQxUmVzb3VyY2VzKFJlc1R5cGUgdGhlVHlwZSkg
OwojIDMzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMK
ZXh0ZXJuIEhhbmRsZQpHZXRJbmRSZXNvdXJjZSgKICBSZXNUeXBlIHRoZVR5cGUsCiAgUmVzb3Vy
Y2VJbmRleCBpdGVtSW5kZXgpIDsKIyAzNTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiBIYW5kbGUKR2V0MUluZFJlc291cmNlKAogIFJlc1R5
cGUgdGhlVHlwZSwKICBSZXNvdXJjZUluZGV4IGl0ZW1JbmRleCkgOwojIDM3MSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKZXh0ZXJuIEhhbmRsZQpHZXRS
ZXNvdXJjZSgKICBSZXNUeXBlIHRoZVR5cGUsCiAgUmVzSUQgdGhlSUQpIDsKIyAzODggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiBIYW5kbGUK
R2V0MVJlc291cmNlKAogIFJlc1R5cGUgdGhlVHlwZSwKICBSZXNJRCB0aGVJRCkgOwojIDQwNSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKZXh0ZXJuIEhh
bmRsZQpHZXROYW1lZFJlc291cmNlKAogIFJlc1R5cGUgdGhlVHlwZSwKICBDb25zdFN0cjI1NVBh
cmFtIG5hbWUpIDsKIyA0MjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291
cmNlcy5oIiAzCmV4dGVybiBIYW5kbGUKR2V0MU5hbWVkUmVzb3VyY2UoCiAgUmVzVHlwZSB0aGVU
eXBlLAogIENvbnN0U3RyMjU1UGFyYW0gbmFtZSkgOwojIDQ0MCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKI2RlZmluZSBNYWNMb2FkUmVzb3VyY2UgTG9h
ZFJlc291cmNlCgpleHRlcm4gdm9pZApMb2FkUmVzb3VyY2UoSGFuZGxlIHRoZVJlc291cmNlKSA7
CiMgNDU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpl
eHRlcm4gdm9pZApSZWxlYXNlUmVzb3VyY2UoSGFuZGxlIHRoZVJlc291cmNlKSA7CiMgNDcyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gdm9p
ZApEZXRhY2hSZXNvdXJjZShIYW5kbGUgdGhlUmVzb3VyY2UpIDsKIyA0ODcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiBSZXNJRApVbmlxdWVJ
RChSZXNUeXBlIHRoZVR5cGUpIDsKIyA1MDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiBSZXNJRApVbmlxdWUxSUQoUmVzVHlwZSB0aGVUeXBl
KSA7CiMgNTE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNvdXJjZXMuaCIg
MwpleHRlcm4gUmVzQXR0cmlidXRlcwpHZXRSZXNBdHRycyhIYW5kbGUgdGhlUmVzb3VyY2UpIDsK
IyA1MzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4
dGVybiB2b2lkCkdldFJlc0luZm8oCiAgSGFuZGxlIHRoZVJlc291cmNlLAogIFJlc0lEICogdGhl
SUQsCiAgUmVzVHlwZSAqIHRoZVR5cGUsCiAgU3RyMjU1IG5hbWUpIDsKIyA1NTEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiB2b2lkClNldFJl
c0luZm8oCiAgSGFuZGxlIHRoZVJlc291cmNlLAogIFJlc0lEIHRoZUlELAogIENvbnN0U3RyMjU1
UGFyYW0gbmFtZSkgOwojIDU2OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVz
b3VyY2VzLmgiIDMKZXh0ZXJuIHZvaWQKQWRkUmVzb3VyY2UoCiAgSGFuZGxlIHRoZURhdGEsCiAg
UmVzVHlwZSB0aGVUeXBlLAogIFJlc0lEIHRoZUlELAogIENvbnN0U3RyMjU1UGFyYW0gbmFtZSkg
OwojIDU4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMK
ZXh0ZXJuIGxvbmcKR2V0UmVzb3VyY2VTaXplT25EaXNrKEhhbmRsZSB0aGVSZXNvdXJjZSkgOwoj
IDYwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKZXh0
ZXJuIGxvbmcKR2V0TWF4UmVzb3VyY2VTaXplKEhhbmRsZSB0aGVSZXNvdXJjZSkgOwojIDYxOCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKZXh0ZXJuIHZv
aWQKU2V0UmVzQXR0cnMoCiAgSGFuZGxlIHRoZVJlc291cmNlLAogIFJlc0F0dHJpYnV0ZXMgYXR0
cnMpIDsKIyA2MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5o
IiAzCmV4dGVybiB2b2lkCkNoYW5nZWRSZXNvdXJjZShIYW5kbGUgdGhlUmVzb3VyY2UpIDsKIyA2
NTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVy
biB2b2lkClJlbW92ZVJlc291cmNlKEhhbmRsZSB0aGVSZXNvdXJjZSkgOwojIDY2NSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKZXh0ZXJuIHZvaWQKVXBk
YXRlUmVzRmlsZShSZXNGaWxlUmVmTnVtIHJlZk51bSkgOwojIDY4MCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKZXh0ZXJuIHZvaWQKV3JpdGVSZXNvdXJj
ZShIYW5kbGUgdGhlUmVzb3VyY2UpIDsKIyA2OTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiB2b2lkClNldFJlc1B1cmdlKEJvb2xlYW4gaW5z
dGFsbCkgOwojIDcxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2Vz
LmgiIDMKZXh0ZXJuIFJlc0ZpbGVBdHRyaWJ1dGVzCkdldFJlc0ZpbGVBdHRycyhSZXNGaWxlUmVm
TnVtIHJlZk51bSkgOwojIDcyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVz
b3VyY2VzLmgiIDMKZXh0ZXJuIHZvaWQKU2V0UmVzRmlsZUF0dHJzKAogIFJlc0ZpbGVSZWZOdW0g
cmVmTnVtLAogIFJlc0ZpbGVBdHRyaWJ1dGVzIGF0dHJzKSA7CiMgNzQyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gdm9pZApSZWFkUGFydGlh
bFJlc291cmNlKAogIEhhbmRsZSB0aGVSZXNvdXJjZSwKICBsb25nIG9mZnNldCwKICB2b2lkICog
YnVmZmVyLAogIGxvbmcgY291bnQpIDsKIyA3NjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiB2b2lkCldyaXRlUGFydGlhbFJlc291cmNlKAog
IEhhbmRsZSB0aGVSZXNvdXJjZSwKICBsb25nIG9mZnNldCwKICBjb25zdCB2b2lkICogYnVmZmVy
LAogIGxvbmcgY291bnQpIDsKIyA3ODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L1Jlc291cmNlcy5oIiAzCmV4dGVybiB2b2lkClNldFJlc291cmNlU2l6ZSgKICBIYW5kbGUgdGhl
UmVzb3VyY2UsCiAgbG9uZyBuZXdTaXplKSA7CiMgNzk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gSGFuZGxlCkdldE5leHRGT05EKEhhbmRs
ZSBmb25kSGFuZGxlKSA7CiMgODIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9S
ZXNvdXJjZXMuaCIgMwp0eXBlZGVmIFNJbnQxNiBSc3JjQ2hhaW5Mb2NhdGlvbjsKZW51bSB7CiAg
a1JzcmNDaGFpbkJlbG93U3lzdGVtTWFwID0gMCwKICBrUnNyY0NoYWluQmVsb3dBcHBsaWNhdGlv
bk1hcCA9IDEsCiAga1JzcmNDaGFpbkFib3ZlQXBwbGljYXRpb25NYXAgPSAyLAogIGtSc3JjQ2hh
aW5BYm92ZUFsbE1hcHMgPSA0Cn07CiMgODQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gT1NFcnIKSW5zZXJ0UmVzb3VyY2VGaWxlKAogIFJl
c0ZpbGVSZWZOdW0gcmVmTnVtLAogIFJzcmNDaGFpbkxvY2F0aW9uIHdoZXJlKSA7CiMgODY1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gT1NF
cnIKRGV0YWNoUmVzb3VyY2VGaWxlKFJlc0ZpbGVSZWZOdW0gcmVmTnVtKSA7CiMgODg0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gT1NFcnIK
R2V0VG9wUmVzb3VyY2VGaWxlKFJlc0ZpbGVSZWZOdW0gKiByZWZOdW0pIDsKIyA5MDUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiBPU0VycgpH
ZXROZXh0UmVzb3VyY2VGaWxlKAogIFJlc0ZpbGVSZWZOdW0gY3VyUmVmTnVtLAogIFJlc0ZpbGVS
ZWZOdW0gKiBuZXh0UmVmTnVtKSA7CiMgOTIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gUmVzRmlsZVJlZk51bQpGU09wZW5SZXNGaWxlKAog
IGNvbnN0IEZTUmVmICogcmVmLAogIFNJbnQ4IHBlcm1pc3Npb24pIDsKIyA5MzkgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiB2b2lkCkZTQ3Jl
YXRlUmVzRmlsZSgKICBjb25zdCBGU1JlZiAqIHBhcmVudFJlZiwKICBVbmlDaGFyQ291bnQgbmFt
ZUxlbmd0aCwKICBjb25zdCBVbmlDaGFyICogbmFtZSwKICBGU0NhdGFsb2dJbmZvQml0bWFwIHdo
aWNoSW5mbywKICBjb25zdCBGU0NhdGFsb2dJbmZvICogY2F0YWxvZ0luZm8sCiAgRlNSZWYgKiBu
ZXdSZWYsCiAgRlNTcGVjUHRyIG5ld1NwZWMpIDsKIyA5NjggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAzCmV4dGVybiBCb29sZWFuCkZTUmVzb3VyY2VGaWxl
QWxyZWFkeU9wZW4oCiAgY29uc3QgRlNSZWYgKiByZXNvdXJjZUZpbGVSZWYsCiAgQm9vbGVhbiAq
IGluQ2hhaW4sCiAgUmVzRmlsZVJlZk51bSAqIHJlZk51bSkgOwojIDk5NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvUmVzb3VyY2VzLmgiIDMKZXh0ZXJuIE9TRXJyCkZTT3Blbk9y
cGhhblJlc0ZpbGUoCiAgY29uc3QgRlNSZWYgKiByZWYsCiAgU2lnbmVkQnl0ZSBwZXJtaXNzaW9u
LAogIFJlc0ZpbGVSZWZOdW0gKiByZWZOdW0pIDsKIyAxMDU0ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gT1NFcnIKRlNDcmVhdGVSZXNvdXJj
ZUZpbGUoCiAgY29uc3QgRlNSZWYgKiBwYXJlbnRSZWYsCiAgVW5pQ2hhckNvdW50IG5hbWVMZW5n
dGgsCiAgY29uc3QgVW5pQ2hhciAqIG5hbWUsCiAgRlNDYXRhbG9nSW5mb0JpdG1hcCB3aGljaElu
Zm8sCiAgY29uc3QgRlNDYXRhbG9nSW5mbyAqIGNhdGFsb2dJbmZvLAogIFVuaUNoYXJDb3VudCBm
b3JrTmFtZUxlbmd0aCwKICBjb25zdCBVbmlDaGFyICogZm9ya05hbWUsCiAgRlNSZWYgKiBuZXdS
ZWYsCiAgRlNTcGVjUHRyIG5ld1NwZWMpIDsKIyAxMTAzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gT1NFcnIKRlNDcmVhdGVSZXNvdXJjZUZv
cmsoCiAgY29uc3QgRlNSZWYgKiByZWYsCiAgVW5pQ2hhckNvdW50IGZvcmtOYW1lTGVuZ3RoLAog
IGNvbnN0IFVuaUNoYXIgKiBmb3JrTmFtZSwKICBVSW50MzIgZmxhZ3MpIDsKIyAxMTQ3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9SZXNvdXJjZXMuaCIgMwpleHRlcm4gT1NFcnIK
RlNPcGVuUmVzb3VyY2VGaWxlKAogIGNvbnN0IEZTUmVmICogcmVmLAogIFVuaUNoYXJDb3VudCBm
b3JrTmFtZUxlbmd0aCwKICBjb25zdCBVbmlDaGFyICogZm9ya05hbWUsCiAgU0ludDggcGVybWlz
c2lvbnMsCiAgUmVzRmlsZVJlZk51bSAqIHJlZk51bSkgOwojIDEzMDcgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL1Jlc291cmNlcy5oIiAzCn0KIyAzNyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAyIDMKIyA0OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEg
cGFjayhwdXNoLCAyKQoKZW51bSB7CiAga0FwcGxlTWFudWZhY3R1cmVyID0gJ2FwcGwnLAogIGtD
b21wb25lbnRSZXNvdXJjZVR5cGUgPSAndGhuZycsCiAga0NvbXBvbmVudEFsaWFzUmVzb3VyY2VU
eXBlID0gJ3RoZ2EnCn07CgplbnVtIHsKICBrQW55Q29tcG9uZW50VHlwZSA9IDAsCiAga0FueUNv
bXBvbmVudFN1YlR5cGUgPSAwLAogIGtBbnlDb21wb25lbnRNYW51ZmFjdHVyZXIgPSAwLAogIGtB
bnlDb21wb25lbnRGbGFnc01hc2sgPSAwCn07CgplbnVtIHsKICBjbXBUaHJlYWRTYWZlID0gMUwg
PDwgMjgsCiAgY21wSXNNaXNzaW5nID0gMUwgPDwgMjksCiAgY21wV2FudHNSZWdpc3Rlck1lc3Nh
Z2UgPSAxTCA8PCAzMQp9OwoKZW51bSB7CiAga0NvbXBvbmVudE9wZW5TZWxlY3QgPSAtMSwKICBr
Q29tcG9uZW50Q2xvc2VTZWxlY3QgPSAtMiwKICBrQ29tcG9uZW50Q2FuRG9TZWxlY3QgPSAtMywK
ICBrQ29tcG9uZW50VmVyc2lvblNlbGVjdCA9IC00LAogIGtDb21wb25lbnRSZWdpc3RlclNlbGVj
dCA9IC01LAogIGtDb21wb25lbnRUYXJnZXRTZWxlY3QgPSAtNiwKICBrQ29tcG9uZW50VW5yZWdp
c3RlclNlbGVjdCA9IC03LAogIGtDb21wb25lbnRHZXRNUFdvcmtGdW5jdGlvblNlbGVjdCA9IC04
LAogIGtDb21wb25lbnRFeGVjdXRlV2lyZWRBY3Rpb25TZWxlY3QgPSAtOSwKICBrQ29tcG9uZW50
R2V0UHVibGljUmVzb3VyY2VTZWxlY3QgPSAtMTAKfTsKCgplbnVtIHsKICBjb21wb25lbnREb0F1
dG9WZXJzaW9uID0gKDEgPDwgMCksCiAgY29tcG9uZW50V2FudHNVbnJlZ2lzdGVyID0gKDEgPDwg
MSksCiAgY29tcG9uZW50QXV0b1ZlcnNpb25JbmNsdWRlRmxhZ3MgPSAoMSA8PCAyKSwKICBjb21w
b25lbnRIYXNNdWx0aXBsZVBsYXRmb3JtcyA9ICgxIDw8IDMpLAogIGNvbXBvbmVudExvYWRSZXNp
ZGVudCA9ICgxIDw8IDQpCn07CgoKCgplbnVtIHsKICBkZWZhdWx0Q29tcG9uZW50SWRlbnRpY2Fs
ID0gMCwKICBkZWZhdWx0Q29tcG9uZW50QW55RmxhZ3MgPSAxLAogIGRlZmF1bHRDb21wb25lbnRB
bnlNYW51ZmFjdHVyZXIgPSAyLAogIGRlZmF1bHRDb21wb25lbnRBbnlTdWJUeXBlID0gNCwKICBk
ZWZhdWx0Q29tcG9uZW50QW55RmxhZ3NBbnlNYW51ZmFjdHVyZXIgPSAoZGVmYXVsdENvbXBvbmVu
dEFueUZsYWdzICsgZGVmYXVsdENvbXBvbmVudEFueU1hbnVmYWN0dXJlciksCiAgZGVmYXVsdENv
bXBvbmVudEFueUZsYWdzQW55TWFudWZhY3R1cmVyQW55U3ViVHlwZSA9IChkZWZhdWx0Q29tcG9u
ZW50QW55RmxhZ3MgKyBkZWZhdWx0Q29tcG9uZW50QW55TWFudWZhY3R1cmVyICsgZGVmYXVsdENv
bXBvbmVudEFueVN1YlR5cGUpCn07CgoKZW51bSB7CiAgcmVnaXN0ZXJDb21wb25lbnRHbG9iYWwg
PSAxLAogIHJlZ2lzdGVyQ29tcG9uZW50Tm9EdXBsaWNhdGVzID0gMiwKICByZWdpc3RlckNvbXBv
bmVudEFmdGVyRXhpc3RpbmcgPSA0LAogIHJlZ2lzdGVyQ29tcG9uZW50QWxpYXNlc09ubHkgPSA4
Cn07CgoKc3RydWN0IENvbXBvbmVudERlc2NyaXB0aW9uIHsKICBPU1R5cGUgY29tcG9uZW50VHlw
ZTsKICBPU1R5cGUgY29tcG9uZW50U3ViVHlwZTsKICBPU1R5cGUgY29tcG9uZW50TWFudWZhY3R1
cmVyOwogIFVJbnQzMiBjb21wb25lbnRGbGFnczsKICBVSW50MzIgY29tcG9uZW50RmxhZ3NNYXNr
Owp9Owp0eXBlZGVmIHN0cnVjdCBDb21wb25lbnREZXNjcmlwdGlvbiBDb21wb25lbnREZXNjcmlw
dGlvbjsKCnN0cnVjdCBSZXNvdXJjZVNwZWMgewogIE9TVHlwZSByZXNUeXBlOwogIFNJbnQxNiBy
ZXNJRDsKfTsKdHlwZWRlZiBzdHJ1Y3QgUmVzb3VyY2VTcGVjIFJlc291cmNlU3BlYzsKc3RydWN0
IENvbXBvbmVudFJlc291cmNlIHsKICBDb21wb25lbnREZXNjcmlwdGlvbiBjZDsKICBSZXNvdXJj
ZVNwZWMgY29tcG9uZW50OwogIFJlc291cmNlU3BlYyBjb21wb25lbnROYW1lOwogIFJlc291cmNl
U3BlYyBjb21wb25lbnRJbmZvOwogIFJlc291cmNlU3BlYyBjb21wb25lbnRJY29uOwp9Owp0eXBl
ZGVmIHN0cnVjdCBDb21wb25lbnRSZXNvdXJjZSBDb21wb25lbnRSZXNvdXJjZTsKdHlwZWRlZiBD
b21wb25lbnRSZXNvdXJjZSAqIENvbXBvbmVudFJlc291cmNlUHRyOwp0eXBlZGVmIENvbXBvbmVu
dFJlc291cmNlUHRyICogQ29tcG9uZW50UmVzb3VyY2VIYW5kbGU7CnN0cnVjdCBDb21wb25lbnRQ
bGF0Zm9ybUluZm8gewogIFNJbnQzMiBjb21wb25lbnRGbGFnczsKICBSZXNvdXJjZVNwZWMgY29t
cG9uZW50OwogIFNJbnQxNiBwbGF0Zm9ybVR5cGU7Cn07CnR5cGVkZWYgc3RydWN0IENvbXBvbmVu
dFBsYXRmb3JtSW5mbyBDb21wb25lbnRQbGF0Zm9ybUluZm87CnN0cnVjdCBDb21wb25lbnRSZXNv
dXJjZUV4dGVuc2lvbiB7CiAgU0ludDMyIGNvbXBvbmVudFZlcnNpb247CiAgU0ludDMyIGNvbXBv
bmVudFJlZ2lzdGVyRmxhZ3M7CiAgU0ludDE2IGNvbXBvbmVudEljb25GYW1pbHk7Cn07CnR5cGVk
ZWYgc3RydWN0IENvbXBvbmVudFJlc291cmNlRXh0ZW5zaW9uIENvbXBvbmVudFJlc291cmNlRXh0
ZW5zaW9uOwpzdHJ1Y3QgQ29tcG9uZW50UGxhdGZvcm1JbmZvQXJyYXkgewogIFNJbnQzMiBjb3Vu
dDsKICBDb21wb25lbnRQbGF0Zm9ybUluZm8gcGxhdGZvcm1BcnJheVsxXTsKfTsKdHlwZWRlZiBz
dHJ1Y3QgQ29tcG9uZW50UGxhdGZvcm1JbmZvQXJyYXkgQ29tcG9uZW50UGxhdGZvcm1JbmZvQXJy
YXk7CnN0cnVjdCBFeHRDb21wb25lbnRSZXNvdXJjZSB7CiAgQ29tcG9uZW50RGVzY3JpcHRpb24g
Y2Q7CiAgUmVzb3VyY2VTcGVjIGNvbXBvbmVudDsKICBSZXNvdXJjZVNwZWMgY29tcG9uZW50TmFt
ZTsKICBSZXNvdXJjZVNwZWMgY29tcG9uZW50SW5mbzsKICBSZXNvdXJjZVNwZWMgY29tcG9uZW50
SWNvbjsKICBTSW50MzIgY29tcG9uZW50VmVyc2lvbjsKICBTSW50MzIgY29tcG9uZW50UmVnaXN0
ZXJGbGFnczsKICBTSW50MTYgY29tcG9uZW50SWNvbkZhbWlseTsKICBTSW50MzIgY291bnQ7CiAg
Q29tcG9uZW50UGxhdGZvcm1JbmZvIHBsYXRmb3JtQXJyYXlbMV07Cn07CnR5cGVkZWYgc3RydWN0
IEV4dENvbXBvbmVudFJlc291cmNlIEV4dENvbXBvbmVudFJlc291cmNlOwp0eXBlZGVmIEV4dENv
bXBvbmVudFJlc291cmNlICogRXh0Q29tcG9uZW50UmVzb3VyY2VQdHI7CnR5cGVkZWYgRXh0Q29t
cG9uZW50UmVzb3VyY2VQdHIgKiBFeHRDb21wb25lbnRSZXNvdXJjZUhhbmRsZTsKc3RydWN0IENv
bXBvbmVudEFsaWFzUmVzb3VyY2UgewogIENvbXBvbmVudFJlc291cmNlIGNyOwogIENvbXBvbmVu
dERlc2NyaXB0aW9uIGFsaWFzQ0Q7Cn07CnR5cGVkZWYgc3RydWN0IENvbXBvbmVudEFsaWFzUmVz
b3VyY2UgQ29tcG9uZW50QWxpYXNSZXNvdXJjZTsKCnN0cnVjdCBDb21wb25lbnRQYXJhbWV0ZXJz
IHsKICBVSW50OCBmbGFnczsKICBVSW50OCBwYXJhbVNpemU7CiAgU0ludDE2IHdoYXQ7CgoKICBV
SW50MzIgcGFkZGluZzsKCgogIGxvbmcgcGFyYW1zWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBDb21w
b25lbnRQYXJhbWV0ZXJzIENvbXBvbmVudFBhcmFtZXRlcnM7CnN0cnVjdCBDb21wb25lbnRSZWNv
cmQgewogIGxvbmcgZGF0YVsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQ29tcG9uZW50UmVjb3JkIENv
bXBvbmVudFJlY29yZDsKdHlwZWRlZiBDb21wb25lbnRSZWNvcmQgKiBDb21wb25lbnQ7CnN0cnVj
dCBDb21wb25lbnRJbnN0YW5jZVJlY29yZCB7CiAgbG9uZyBkYXRhWzFdOwp9Owp0eXBlZGVmIHN0
cnVjdCBDb21wb25lbnRJbnN0YW5jZVJlY29yZCBDb21wb25lbnRJbnN0YW5jZVJlY29yZDsKdHlw
ZWRlZiBDb21wb25lbnRJbnN0YW5jZVJlY29yZCAqIENvbXBvbmVudEluc3RhbmNlOwpzdHJ1Y3Qg
UmVnaXN0ZXJlZENvbXBvbmVudFJlY29yZCB7CiAgbG9uZyBkYXRhWzFdOwp9Owp0eXBlZGVmIHN0
cnVjdCBSZWdpc3RlcmVkQ29tcG9uZW50UmVjb3JkIFJlZ2lzdGVyZWRDb21wb25lbnRSZWNvcmQ7
CnR5cGVkZWYgUmVnaXN0ZXJlZENvbXBvbmVudFJlY29yZCAqIFJlZ2lzdGVyZWRDb21wb25lbnRS
ZWNvcmRQdHI7CnN0cnVjdCBSZWdpc3RlcmVkQ29tcG9uZW50SW5zdGFuY2VSZWNvcmQgewogIGxv
bmcgZGF0YVsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgUmVnaXN0ZXJlZENvbXBvbmVudEluc3RhbmNl
UmVjb3JkIFJlZ2lzdGVyZWRDb21wb25lbnRJbnN0YW5jZVJlY29yZDsKdHlwZWRlZiBSZWdpc3Rl
cmVkQ29tcG9uZW50SW5zdGFuY2VSZWNvcmQgKiBSZWdpc3RlcmVkQ29tcG9uZW50SW5zdGFuY2VS
ZWNvcmRQdHI7CnR5cGVkZWYgU0ludDMyIENvbXBvbmVudFJlc3VsdDsKZW51bSB7CiAgcGxhdGZv
cm02OGsgPSAxLAogIHBsYXRmb3JtUG93ZXJQQyA9IDIsCiAgcGxhdGZvcm1JbnRlcnByZXRlZCA9
IDMsCiAgcGxhdGZvcm1XaW4zMiA9IDQsCiAgcGxhdGZvcm1Qb3dlclBDTmF0aXZlRW50cnlQb2lu
dCA9IDUsCiAgcGxhdGZvcm1JQTMyTmF0aXZlRW50cnlQb2ludCA9IDYsCiAgcGxhdGZvcm1Qb3dl
clBDNjROYXRpdmVFbnRyeVBvaW50ID0gNywKICBwbGF0Zm9ybVg4Nl82NE5hdGl2ZUVudHJ5UG9p
bnQgPSA4Cn07CgplbnVtIHsKICBwbGF0Zm9ybUlSSVhtaXBzID0gMTAwMCwKICBwbGF0Zm9ybVN1
bk9Tc3BhcmMgPSAxMTAwLAogIHBsYXRmb3JtU3VuT1NpbnRlbCA9IDExMDEsCiAgcGxhdGZvcm1M
aW51eHBwYyA9IDEyMDAsCiAgcGxhdGZvcm1MaW51eGludGVsID0gMTIwMSwKICBwbGF0Zm9ybUFJ
WHBwYyA9IDEzMDAsCiAgcGxhdGZvcm1OZVhUSW50ZWwgPSAxNDAwLAogIHBsYXRmb3JtTmVYVHBw
YyA9IDE0MDEsCiAgcGxhdGZvcm1OZVhUc3BhcmMgPSAxNDAyLAogIHBsYXRmb3JtTmVYVDY4ayA9
IDE0MDMsCiAgcGxhdGZvcm1NYWNPU3g4NiA9IDE1MDAKfTsKCmVudW0gewogIG1wV29ya0ZsYWdE
b1dvcmsgPSAoMSA8PCAwKSwKICBtcFdvcmtGbGFnRG9Db21wbGV0aW9uID0gKDEgPDwgMSksCiAg
bXBXb3JrRmxhZ0NvcHlXb3JrQmxvY2sgPSAoMSA8PCAyKSwKICBtcFdvcmtGbGFnRG9udEJsb2Nr
ID0gKDEgPDwgMyksCiAgbXBXb3JrRmxhZ0dldFByb2Nlc3NvckNvdW50ID0gKDEgPDwgNCksCiAg
bXBXb3JrRmxhZ0dldElzUnVubmluZyA9ICgxIDw8IDYpCn07CgplbnVtIHsKICBjbXBBbGlhc05v
RmxhZ3MgPSAwLAogIGNtcEFsaWFzT25seVRoaXNGaWxlID0gMQp9OwoKdHlwZWRlZiBVSW50MzIg
Q1NDb21wb25lbnRzVGhyZWFkTW9kZTsKZW51bSB7CiAga0NTQWNjZXB0QWxsQ29tcG9uZW50c01v
ZGUgPSAwLAogIGtDU0FjY2VwdFRocmVhZFNhZmVDb21wb25lbnRzT25seU1vZGUgPSAxCn07CiMg
Mjg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0
ZXJuIHZvaWQKQ1NTZXRDb21wb25lbnRzVGhyZWFkTW9kZShDU0NvbXBvbmVudHNUaHJlYWRNb2Rl
IG1vZGUpIDsKIyAzMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbXBvbmVu
dHMuaCIgMwpleHRlcm4gQ1NDb21wb25lbnRzVGhyZWFkTW9kZQpDU0dldENvbXBvbmVudHNUaHJl
YWRNb2RlKHZvaWQpIDsKCgpzdHJ1Y3QgQ29tcG9uZW50TVBXb3JrRnVuY3Rpb25IZWFkZXJSZWNv
cmQgewogIFVJbnQzMiBoZWFkZXJTaXplOwogIFVJbnQzMiByZWNvcmRTaXplOwogIFVJbnQzMiB3
b3JrRmxhZ3M7CiAgVUludDE2IHByb2Nlc3NvckNvdW50OwogIFVJbnQ4IHVudXNlZDsKICBVSW50
OCBpc1J1bm5pbmc7Cn07CnR5cGVkZWYgc3RydWN0IENvbXBvbmVudE1QV29ya0Z1bmN0aW9uSGVh
ZGVyUmVjb3JkIENvbXBvbmVudE1QV29ya0Z1bmN0aW9uSGVhZGVyUmVjb3JkOwp0eXBlZGVmIENv
bXBvbmVudE1QV29ya0Z1bmN0aW9uSGVhZGVyUmVjb3JkICogQ29tcG9uZW50TVBXb3JrRnVuY3Rp
b25IZWFkZXJSZWNvcmRQdHI7CnR5cGVkZWYgQ29tcG9uZW50UmVzdWx0ICggKiBDb21wb25lbnRN
UFdvcmtGdW5jdGlvblByb2NQdHIpKHZvaWQgKmdsb2JhbFJlZkNvbiwgQ29tcG9uZW50TVBXb3Jr
RnVuY3Rpb25IZWFkZXJSZWNvcmRQdHIgaGVhZGVyKTsKdHlwZWRlZiBDb21wb25lbnRSZXN1bHQg
KCAqIENvbXBvbmVudFJvdXRpbmVQcm9jUHRyKShDb21wb25lbnRQYXJhbWV0ZXJzICpjcCwgSGFu
ZGxlIGNvbXBvbmVudFN0b3JhZ2UpOwp0eXBlZGVmIE9TRXJyICggKiBHZXRNaXNzaW5nQ29tcG9u
ZW50UmVzb3VyY2VQcm9jUHRyKShDb21wb25lbnQgYywgT1NUeXBlIHJlc1R5cGUsIFNJbnQxNiBy
ZXNJRCwgdm9pZCAqcmVmQ29uLCBIYW5kbGUgKnJlc291cmNlKTsKdHlwZWRlZiBDb21wb25lbnRN
UFdvcmtGdW5jdGlvblByb2NQdHIgQ29tcG9uZW50TVBXb3JrRnVuY3Rpb25VUFA7CnR5cGVkZWYg
Q29tcG9uZW50Um91dGluZVByb2NQdHIgQ29tcG9uZW50Um91dGluZVVQUDsKdHlwZWRlZiBHZXRN
aXNzaW5nQ29tcG9uZW50UmVzb3VyY2VQcm9jUHRyIEdldE1pc3NpbmdDb21wb25lbnRSZXNvdXJj
ZVVQUDsKCgoKCgp0eXBlZGVmIFVuaXZlcnNhbFByb2NQdHIgQ29tcG9uZW50RnVuY3Rpb25VUFA7
CiMgMzUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMK
ZXh0ZXJuIENvbXBvbmVudEZ1bmN0aW9uVVBQCk5ld0NvbXBvbmVudEZ1bmN0aW9uVVBQKAogIFBy
b2NQdHIgdXNlclJvdXRpbmUsCiAgUHJvY0luZm9UeXBlIHByb2NJbmZvKSA7CiMgMzc0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIHZvaWQK
RGlzcG9zZUNvbXBvbmVudEZ1bmN0aW9uVVBQKENvbXBvbmVudEZ1bmN0aW9uVVBQIHVzZXJVUFAp
IDsKIyAzOTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIg
MwojZGVmaW5lIENvbXBvbmVudENhbGxOb3coY2FsbE51bWJlcixwYXJhbVNpemUpIEZJVkVXT1JE
SU5MSU5FKCAweDJGM0MscGFyYW1TaXplLGNhbGxOdW1iZXIsMHg3MDAwLDB4QTgyQSApCiMgNDE4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJu
IENvbXBvbmVudApSZWdpc3RlckNvbXBvbmVudCgKICBDb21wb25lbnREZXNjcmlwdGlvbiAqIGNk
LAogIENvbXBvbmVudFJvdXRpbmVVUFAgY29tcG9uZW50RW50cnlQb2ludCwKICBTSW50MTYgZ2xv
YmFsLAogIEhhbmRsZSBjb21wb25lbnROYW1lLAogIEhhbmRsZSBjb21wb25lbnRJbmZvLAogIEhh
bmRsZSBjb21wb25lbnRJY29uKSA7CiMgNDQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIENvbXBvbmVudApSZWdpc3RlckNvbXBvbmVudFJl
c291cmNlKAogIENvbXBvbmVudFJlc291cmNlSGFuZGxlIGNyLAogIFNJbnQxNiBnbG9iYWwpIDsK
IyA0NTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpl
eHRlcm4gT1NFcnIKVW5yZWdpc3RlckNvbXBvbmVudChDb21wb25lbnQgYUNvbXBvbmVudCkgOwoj
IDQ3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmV4
dGVybiBDb21wb25lbnQKRmluZE5leHRDb21wb25lbnQoCiAgQ29tcG9uZW50IGFDb21wb25lbnQs
CiAgQ29tcG9uZW50RGVzY3JpcHRpb24gKiBsb29raW5nKSA7CiMgNDkyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIGxvbmcKQ291bnRDb21w
b25lbnRzKENvbXBvbmVudERlc2NyaXB0aW9uICogbG9va2luZykgOwojIDUwOCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmV4dGVybiBPU0VycgpHZXRD
b21wb25lbnRJbmZvKAogIENvbXBvbmVudCBhQ29tcG9uZW50LAogIENvbXBvbmVudERlc2NyaXB0
aW9uICogY2QsCiAgSGFuZGxlIGNvbXBvbmVudE5hbWUsCiAgSGFuZGxlIGNvbXBvbmVudEluZm8s
CiAgSGFuZGxlIGNvbXBvbmVudEljb24pIDsKIyA1MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gU0ludDMyCkdldENvbXBvbmVudExpc3RN
b2RTZWVkKHZvaWQpIDsKIyA1NDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0Nv
bXBvbmVudHMuaCIgMwpleHRlcm4gU0ludDMyCkdldENvbXBvbmVudFR5cGVNb2RTZWVkKE9TVHlw
ZSBjb21wb25lbnRUeXBlKSA7CiMgNTY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIE9TRXJyCk9wZW5BQ29tcG9uZW50KAogIENvbXBvbmVu
dCBhQ29tcG9uZW50LAogIENvbXBvbmVudEluc3RhbmNlICogY2kpIDsKIyA1ODIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gQ29tcG9uZW50
SW5zdGFuY2UKT3BlbkNvbXBvbmVudChDb21wb25lbnQgYUNvbXBvbmVudCkgOwojIDU5OCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmV4dGVybiBPU0Vy
cgpDbG9zZUNvbXBvbmVudChDb21wb25lbnRJbnN0YW5jZSBhQ29tcG9uZW50SW5zdGFuY2UpIDsK
IyA2MTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpl
eHRlcm4gT1NFcnIKR2V0Q29tcG9uZW50SW5zdGFuY2VFcnJvcihDb21wb25lbnRJbnN0YW5jZSBh
Q29tcG9uZW50SW5zdGFuY2UpIDsKIyA2MzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gQ29tcG9uZW50ClJlc29sdmVDb21wb25lbnRBbGlh
cyhDb21wb25lbnQgYUNvbXBvbmVudCkgOwojIDY1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmV4dGVybiBPU0VycgpHZXRDb21wb25lbnRQdWJsaWNS
ZXNvdXJjZSgKICBDb21wb25lbnQgYUNvbXBvbmVudCwKICBPU1R5cGUgcmVzb3VyY2VUeXBlLAog
IFNJbnQxNiByZXNvdXJjZUlELAogIEhhbmRsZSAqIHRoZVJlc291cmNlKSA7CiMgNjcxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIE9TRXJy
CkdldENvbXBvbmVudFB1YmxpY1Jlc291cmNlTGlzdCgKICBPU1R5cGUgcmVzb3VyY2VUeXBlLAog
IFNJbnQxNiByZXNvdXJjZUlELAogIFNJbnQzMiBmbGFncywKICBDb21wb25lbnREZXNjcmlwdGlv
biAqIGNkLAogIEdldE1pc3NpbmdDb21wb25lbnRSZXNvdXJjZVVQUCBtaXNzaW5nUHJvYywKICB2
b2lkICogcmVmQ29uLAogIHZvaWQgKiBhdG9tQ29udGFpbmVyUHRyKSA7CiMgNjkzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIE9TRXJyCkdl
dENvbXBvbmVudFB1YmxpY0luZFN0cmluZygKICBDb21wb25lbnQgYUNvbXBvbmVudCwKICBTdHIy
NTUgdGhlU3RyaW5nLAogIFNJbnQxNiBzdHJMaXN0SUQsCiAgU0ludDE2IGluZGV4KSA7CiMgNzIx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJu
IHZvaWQKU2V0Q29tcG9uZW50SW5zdGFuY2VFcnJvcigKICBDb21wb25lbnRJbnN0YW5jZSBhQ29t
cG9uZW50SW5zdGFuY2UsCiAgT1NFcnIgdGhlRXJyb3IpIDsKIyA3MzkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gbG9uZwpHZXRDb21wb25l
bnRSZWZjb24oQ29tcG9uZW50IGFDb21wb25lbnQpIDsKIyA3NTUgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gdm9pZApTZXRDb21wb25lbnRS
ZWZjb24oCiAgQ29tcG9uZW50IGFDb21wb25lbnQsCiAgbG9uZyB0aGVSZWZjb24pIDsKIyA3NzMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4g
UmVzRmlsZVJlZk51bQpPcGVuQ29tcG9uZW50UmVzRmlsZShDb21wb25lbnQgYUNvbXBvbmVudCkg
OwojIDc4OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAz
CmV4dGVybiBPU0VycgpPcGVuQUNvbXBvbmVudFJlc0ZpbGUoCiAgQ29tcG9uZW50IGFDb21wb25l
bnQsCiAgUmVzRmlsZVJlZk51bSAqIHJlc1JlZikgOwojIDgwNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmV4dGVybiBPU0VycgpDbG9zZUNvbXBvbmVu
dFJlc0ZpbGUoUmVzRmlsZVJlZk51bSByZWZudW0pIDsKIyA4MjQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gT1NFcnIKR2V0Q29tcG9uZW50
UmVzb3VyY2UoCiAgQ29tcG9uZW50IGFDb21wb25lbnQsCiAgT1NUeXBlIHJlc1R5cGUsCiAgU0lu
dDE2IHJlc0lELAogIEhhbmRsZSAqIHRoZVJlc291cmNlKSA7CiMgODQ0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIE9TRXJyCkdldENvbXBv
bmVudEluZFN0cmluZygKICBDb21wb25lbnQgYUNvbXBvbmVudCwKICBTdHIyNTUgdGhlU3RyaW5n
LAogIFNJbnQxNiBzdHJMaXN0SUQsCiAgU0ludDE2IGluZGV4KSA7CiMgODY3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIEhhbmRsZQpHZXRD
b21wb25lbnRJbnN0YW5jZVN0b3JhZ2UoQ29tcG9uZW50SW5zdGFuY2UgYUNvbXBvbmVudEluc3Rh
bmNlKSA7CiMgODgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRz
LmgiIDMKZXh0ZXJuIHZvaWQKU2V0Q29tcG9uZW50SW5zdGFuY2VTdG9yYWdlKAogIENvbXBvbmVu
dEluc3RhbmNlIGFDb21wb25lbnRJbnN0YW5jZSwKICBIYW5kbGUgdGhlU3RvcmFnZSkgOwojIDkw
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmV4dGVy
biBsb25nCkNvdW50Q29tcG9uZW50SW5zdGFuY2VzKENvbXBvbmVudCBhQ29tcG9uZW50KSA7CiMg
OTE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0
ZXJuIENvbXBvbmVudFJlc3VsdApDYWxsQ29tcG9uZW50RnVuY3Rpb24oCiAgQ29tcG9uZW50UGFy
YW1ldGVycyAqIHBhcmFtcywKICBDb21wb25lbnRGdW5jdGlvblVQUCBmdW5jKSA7CiMgOTM1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIENv
bXBvbmVudFJlc3VsdApDYWxsQ29tcG9uZW50RnVuY3Rpb25XaXRoU3RvcmFnZSgKICBIYW5kbGUg
c3RvcmFnZSwKICBDb21wb25lbnRQYXJhbWV0ZXJzICogcGFyYW1zLAogIENvbXBvbmVudEZ1bmN0
aW9uVVBQIGZ1bmMpIDsKIyA5NTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0Nv
bXBvbmVudHMuaCIgMwpleHRlcm4gQ29tcG9uZW50UmVzdWx0CkNhbGxDb21wb25lbnRGdW5jdGlv
bldpdGhTdG9yYWdlUHJvY0luZm8oCiAgSGFuZGxlIHN0b3JhZ2UsCiAgQ29tcG9uZW50UGFyYW1l
dGVycyAqIHBhcmFtcywKICBQcm9jUHRyIGZ1bmMsCiAgUHJvY0luZm9UeXBlIGZ1bmNQcm9jSW5m
bykgOwojIDk3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5o
IiAzCmV4dGVybiBDb21wb25lbnRSZXN1bHQKRGVsZWdhdGVDb21wb25lbnRDYWxsKAogIENvbXBv
bmVudFBhcmFtZXRlcnMgKiBvcmlnaW5hbFBhcmFtcywKICBDb21wb25lbnRJbnN0YW5jZSBjaSkg
OwojIDk5MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAz
CmV4dGVybiBPU0VycgpTZXREZWZhdWx0Q29tcG9uZW50KAogIENvbXBvbmVudCBhQ29tcG9uZW50
LAogIFNJbnQxNiBmbGFncykgOwojIDEwMDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gQ29tcG9uZW50SW5zdGFuY2UKT3BlbkRlZmF1bHRD
b21wb25lbnQoCiAgT1NUeXBlIGNvbXBvbmVudFR5cGUsCiAgT1NUeXBlIGNvbXBvbmVudFN1YlR5
cGUpIDsKIyAxMDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRz
LmgiIDMKZXh0ZXJuIE9TRXJyCk9wZW5BRGVmYXVsdENvbXBvbmVudCgKICBPU1R5cGUgY29tcG9u
ZW50VHlwZSwKICBPU1R5cGUgY29tcG9uZW50U3ViVHlwZSwKICBDb21wb25lbnRJbnN0YW5jZSAq
IGNpKSA7CiMgMTA0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50
cy5oIiAzCmV4dGVybiBDb21wb25lbnQKQ2FwdHVyZUNvbXBvbmVudCgKICBDb21wb25lbnQgY2Fw
dHVyZWRDb21wb25lbnQsCiAgQ29tcG9uZW50IGNhcHR1cmluZ0NvbXBvbmVudCkgOwojIDEwNjQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4g
T1NFcnIKVW5jYXB0dXJlQ29tcG9uZW50KENvbXBvbmVudCBhQ29tcG9uZW50KSA7CiMgMTA4MCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmV4dGVybiBT
SW50MzIKUmVnaXN0ZXJDb21wb25lbnRSZXNvdXJjZUZpbGUoCiAgU0ludDE2IHJlc1JlZk51bSwK
ICBTSW50MTYgZ2xvYmFsKSA7CiMgMTE2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQ29tcG9uZW50cy5oIiAzCmV4dGVybiBPU0VycgpSZWdpc3RlckNvbXBvbmVudEZpbGVSZWYo
CiAgY29uc3QgRlNSZWYgKiByZWYsCiAgU0ludDE2IGdsb2JhbCkgOwojIDExODUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gT1NFcnIKUmVn
aXN0ZXJDb21wb25lbnRGaWxlUmVmRW50cmllcygKICBjb25zdCBGU1JlZiAqIHJlZiwKICBTSW50
MTYgZ2xvYmFsLAogIGNvbnN0IENvbXBvbmVudERlc2NyaXB0aW9uICogdG9SZWdpc3RlciwKICBV
SW50MzIgcmVnaXN0ZXJDb3VudCkgOwojIDEyNjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gQ29tcG9uZW50UmVzdWx0CkNhbGxDb21wb25l
bnRPcGVuKAogIENvbXBvbmVudEluc3RhbmNlIGNpLAogIENvbXBvbmVudEluc3RhbmNlIHNlbGYp
IDsKIyAxMjg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgi
IDMKZXh0ZXJuIENvbXBvbmVudFJlc3VsdApDYWxsQ29tcG9uZW50Q2xvc2UoCiAgQ29tcG9uZW50
SW5zdGFuY2UgY2ksCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2VsZikgOwojIDEzMDUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gQ29tcG9uZW50
UmVzdWx0CkNhbGxDb21wb25lbnRDYW5EbygKICBDb21wb25lbnRJbnN0YW5jZSBjaSwKICBTSW50
MTYgZnRuTnVtYmVyKSA7CiMgMTMyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
Q29tcG9uZW50cy5oIiAzCmV4dGVybiBDb21wb25lbnRSZXN1bHQKQ2FsbENvbXBvbmVudFZlcnNp
b24oQ29tcG9uZW50SW5zdGFuY2UgY2kpIDsKIyAxMzM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIENvbXBvbmVudFJlc3VsdApDYWxsQ29t
cG9uZW50UmVnaXN0ZXIoQ29tcG9uZW50SW5zdGFuY2UgY2kpIDsKIyAxMzU1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIENvbXBvbmVudFJl
c3VsdApDYWxsQ29tcG9uZW50VGFyZ2V0KAogIENvbXBvbmVudEluc3RhbmNlIGNpLAogIENvbXBv
bmVudEluc3RhbmNlIHRhcmdldCkgOwojIDEzNzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gQ29tcG9uZW50UmVzdWx0CkNhbGxDb21wb25l
bnRVbnJlZ2lzdGVyKENvbXBvbmVudEluc3RhbmNlIGNpKSA7CiMgMTM4OSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmV4dGVybiBDb21wb25lbnRSZXN1
bHQKQ2FsbENvbXBvbmVudEdldE1QV29ya0Z1bmN0aW9uKAogIENvbXBvbmVudEluc3RhbmNlIGNp
LAogIENvbXBvbmVudE1QV29ya0Z1bmN0aW9uVVBQICogd29ya0Z1bmN0aW9uLAogIHZvaWQgKiog
cmVmQ29uKSA7CiMgMTQwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9u
ZW50cy5oIiAzCmV4dGVybiBDb21wb25lbnRSZXN1bHQKQ2FsbENvbXBvbmVudEdldFB1YmxpY1Jl
c291cmNlKAogIENvbXBvbmVudEluc3RhbmNlIGNpLAogIE9TVHlwZSByZXNvdXJjZVR5cGUsCiAg
U0ludDE2IHJlc291cmNlSUQsCiAgSGFuZGxlICogcmVzb3VyY2UpIDsKIyAxNDMxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0ZXJuIENvbXBvbmVu
dFJlc3VsdApDYWxsQ29tcG9uZW50RGlzcGF0Y2goQ29tcG9uZW50UGFyYW1ldGVycyAqIGNwKSA7
CiMgMTQ0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAz
CmV4dGVybiBDb21wb25lbnRNUFdvcmtGdW5jdGlvblVQUApOZXdDb21wb25lbnRNUFdvcmtGdW5j
dGlvblVQUChDb21wb25lbnRNUFdvcmtGdW5jdGlvblByb2NQdHIgdXNlclJvdXRpbmUpIDsKIyAx
NDU2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db21wb25lbnRzLmgiIDMKZXh0
ZXJuIENvbXBvbmVudFJvdXRpbmVVUFAKTmV3Q29tcG9uZW50Um91dGluZVVQUChDb21wb25lbnRS
b3V0aW5lUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDE0NjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gR2V0TWlzc2luZ0NvbXBvbmVudFJl
c291cmNlVVBQCk5ld0dldE1pc3NpbmdDb21wb25lbnRSZXNvdXJjZVVQUChHZXRNaXNzaW5nQ29t
cG9uZW50UmVzb3VyY2VQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMTQ3OCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VD
b21wb25lbnRNUFdvcmtGdW5jdGlvblVQUChDb21wb25lbnRNUFdvcmtGdW5jdGlvblVQUCB1c2Vy
VVBQKSA7CiMgMTQ4OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50
cy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VDb21wb25lbnRSb3V0aW5lVVBQKENvbXBvbmVudFJv
dXRpbmVVUFAgdXNlclVQUCkgOwojIDE1MDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlR2V0TWlzc2luZ0NvbXBvbmVu
dFJlc291cmNlVVBQKEdldE1pc3NpbmdDb21wb25lbnRSZXNvdXJjZVVQUCB1c2VyVVBQKSA7CiMg
MTUxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmV4
dGVybiBDb21wb25lbnRSZXN1bHQKSW52b2tlQ29tcG9uZW50TVBXb3JrRnVuY3Rpb25VUFAoCiAg
dm9pZCAqIGdsb2JhbFJlZkNvbiwKICBDb21wb25lbnRNUFdvcmtGdW5jdGlvbkhlYWRlclJlY29y
ZFB0ciBoZWFkZXIsCiAgQ29tcG9uZW50TVBXb3JrRnVuY3Rpb25VUFAgdXNlclVQUCkgOwojIDE1
MjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvbXBvbmVudHMuaCIgMwpleHRl
cm4gQ29tcG9uZW50UmVzdWx0Ckludm9rZUNvbXBvbmVudFJvdXRpbmVVUFAoCiAgQ29tcG9uZW50
UGFyYW1ldGVycyAqIGNwLAogIEhhbmRsZSBjb21wb25lbnRTdG9yYWdlLAogIENvbXBvbmVudFJv
dXRpbmVVUFAgdXNlclVQUCkgOwojIDE1MzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0NvbXBvbmVudHMuaCIgMwpleHRlcm4gT1NFcnIKSW52b2tlR2V0TWlzc2luZ0NvbXBvbmVu
dFJlc291cmNlVVBQKAogIENvbXBvbmVudCBjLAogIE9TVHlwZSByZXNUeXBlLAogIFNJbnQxNiBy
ZXNJRCwKICB2b2lkICogcmVmQ29uLAogIEhhbmRsZSAqIHJlc291cmNlLAogIEdldE1pc3NpbmdD
b21wb25lbnRSZXNvdXJjZVVQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgQ29tcG9uZW50TVBX
b3JrRnVuY3Rpb25VUFAgTmV3Q29tcG9uZW50TVBXb3JrRnVuY3Rpb25VUFAoQ29tcG9uZW50TVBX
b3JrRnVuY3Rpb25Qcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQog
ICAgaW5saW5lIENvbXBvbmVudFJvdXRpbmVVUFAgTmV3Q29tcG9uZW50Um91dGluZVVQUChDb21w
b25lbnRSb3V0aW5lUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0K
ICAgIGlubGluZSBHZXRNaXNzaW5nQ29tcG9uZW50UmVzb3VyY2VVUFAgTmV3R2V0TWlzc2luZ0Nv
bXBvbmVudFJlc291cmNlVVBQKEdldE1pc3NpbmdDb21wb25lbnRSZXNvdXJjZVByb2NQdHIgdXNl
clJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3Nl
Q29tcG9uZW50TVBXb3JrRnVuY3Rpb25VUFAoQ29tcG9uZW50TVBXb3JrRnVuY3Rpb25VUFApIHsg
fQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUNvbXBvbmVudFJvdXRpbmVVUFAoQ29tcG9uZW50Um91
dGluZVVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlR2V0TWlzc2luZ0NvbXBvbmVudFJl
c291cmNlVVBQKEdldE1pc3NpbmdDb21wb25lbnRSZXNvdXJjZVVQUCkgeyB9CiAgICBpbmxpbmUg
Q29tcG9uZW50UmVzdWx0IEludm9rZUNvbXBvbmVudE1QV29ya0Z1bmN0aW9uVVBQKHZvaWQgKiBn
bG9iYWxSZWZDb24sIENvbXBvbmVudE1QV29ya0Z1bmN0aW9uSGVhZGVyUmVjb3JkUHRyIGhlYWRl
ciwgQ29tcG9uZW50TVBXb3JrRnVuY3Rpb25VUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQ
KShnbG9iYWxSZWZDb24sIGhlYWRlcik7IH0KICAgIGlubGluZSBDb21wb25lbnRSZXN1bHQgSW52
b2tlQ29tcG9uZW50Um91dGluZVVQUChDb21wb25lbnRQYXJhbWV0ZXJzICogY3AsIEhhbmRsZSBj
b21wb25lbnRTdG9yYWdlLCBDb21wb25lbnRSb3V0aW5lVVBQIHVzZXJVUFApIHsgcmV0dXJuICgq
dXNlclVQUCkoY3AsIGNvbXBvbmVudFN0b3JhZ2UpOyB9CiAgICBpbmxpbmUgT1NFcnIgSW52b2tl
R2V0TWlzc2luZ0NvbXBvbmVudFJlc291cmNlVVBQKENvbXBvbmVudCBjLCBPU1R5cGUgcmVzVHlw
ZSwgU0ludDE2IHJlc0lELCB2b2lkICogcmVmQ29uLCBIYW5kbGUgKiByZXNvdXJjZSwgR2V0TWlz
c2luZ0NvbXBvbmVudFJlc291cmNlVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoYywg
cmVzVHlwZSwgcmVzSUQsIHJlZkNvbiwgcmVzb3VyY2UpOyB9CiMgMTU3NSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29tcG9uZW50cy5oIiAzCmVudW0gewogICAgdXBwQ29tcG9u
ZW50RnVuY3Rpb25JbXBsZW1lbnRlZFByb2NJbmZvID0gMHgwMDAwMDJGMCwKICAgIHVwcEdldENv
bXBvbmVudFZlcnNpb25Qcm9jSW5mbyA9IDB4MDAwMDAwRjAsCiAgICB1cHBDb21wb25lbnRTZXRU
YXJnZXRQcm9jSW5mbyA9IDB4MDAwMDAzRjAsCiAgICB1cHBDYWxsQ29tcG9uZW50T3BlblByb2NJ
bmZvID0gMHgwMDAwMDNGMCwKICAgIHVwcENhbGxDb21wb25lbnRDbG9zZVByb2NJbmZvID0gMHgw
MDAwMDNGMCwKICAgIHVwcENhbGxDb21wb25lbnRDYW5Eb1Byb2NJbmZvID0gMHgwMDAwMDJGMCwK
ICAgIHVwcENhbGxDb21wb25lbnRWZXJzaW9uUHJvY0luZm8gPSAweDAwMDAwMEYwLAogICAgdXBw
Q2FsbENvbXBvbmVudFJlZ2lzdGVyUHJvY0luZm8gPSAweDAwMDAwMEYwLAogICAgdXBwQ2FsbENv
bXBvbmVudFRhcmdldFByb2NJbmZvID0gMHgwMDAwMDNGMCwKICAgIHVwcENhbGxDb21wb25lbnRV
bnJlZ2lzdGVyUHJvY0luZm8gPSAweDAwMDAwMEYwLAogICAgdXBwQ2FsbENvbXBvbmVudEdldE1Q
V29ya0Z1bmN0aW9uUHJvY0luZm8gPSAweDAwMDAwRkYwLAogICAgdXBwQ2FsbENvbXBvbmVudEdl
dFB1YmxpY1Jlc291cmNlUHJvY0luZm8gPSAweDAwMDAzQkYwCn07CgoKCgoKCgojcHJhZ21hIHBh
Y2socG9wKQoKCn0KIyA4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
Q29yZS5oIiAyIDMKIyAxMDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NhcmJv
bkNvcmUuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvZGVGcmFn
bWVudHMuaCIgMSAzCiMgMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NvZGVG
cmFnbWVudHMuaCIgMwojZGVmaW5lIF9fQ09ERUZSQUdNRU5UU19fIAojIDQxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db2RlRnJhZ21lbnRzLmgiIDMKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMSAzCiMgMjcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCiNkZWZpbmUg
X19NVUxUSVBST0NFU1NJTkdfXyAKIyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBvcHRpb25zIGFs
aWduPXBvd2VyCiMgMTk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXBy
b2Nlc3NpbmcuaCIgMwojZGVmaW5lIE1QQ29weXJpZ2h0Tm90aWNlICJDb3B5cmlnaHQgqSAxOTk1
LTIwMDAgQXBwbGUgQ29tcHV0ZXIsIEluYy5cbiIKCiNkZWZpbmUgTVBMaWJyYXJ5TmFtZSAiTVBM
aWJyYXJ5IgojZGVmaW5lIE1QTGlicmFyeUNOYW1lIE1QTGlicmFyeU5hbWUKI2RlZmluZSBNUExp
YnJhcnlQTmFtZSAiXHAiIE1QTGlicmFyeU5hbWUKI2RlZmluZSBNUF9BUElfVmVyc2lvbiAiMi4z
IgoKZW51bSB7CiAgTVBMaWJyYXJ5X01ham9yVmVyc2lvbiA9IDIsCiAgTVBMaWJyYXJ5X01pbm9y
VmVyc2lvbiA9IDMsCiAgTVBMaWJyYXJ5X1JlbGVhc2UgPSAxLAogIE1QTGlicmFyeV9EZXZlbG9w
bWVudFJldmlzaW9uID0gMQp9OwoKCgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVNUFByb2Nlc3NJRCog
TVBQcm9jZXNzSUQ7CnR5cGVkZWYgc3RydWN0IE9wYXF1ZU1QVGFza0lEKiBNUFRhc2tJRDsKdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlTVBRdWV1ZUlEKiBNUFF1ZXVlSUQ7CnR5cGVkZWYgc3RydWN0IE9w
YXF1ZU1QU2VtYXBob3JlSUQqIE1QU2VtYXBob3JlSUQ7CnR5cGVkZWYgc3RydWN0IE9wYXF1ZU1Q
Q3JpdGljYWxSZWdpb25JRCogTVBDcml0aWNhbFJlZ2lvbklEOwp0eXBlZGVmIHN0cnVjdCBPcGFx
dWVNUFRpbWVySUQqIE1QVGltZXJJRDsKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlTVBFdmVudElEKiBN
UEV2ZW50SUQ7CnR5cGVkZWYgc3RydWN0IE9wYXF1ZU1QQWRkcmVzc1NwYWNlSUQqIE1QQWRkcmVz
c1NwYWNlSUQ7CnR5cGVkZWYgc3RydWN0IE9wYXF1ZU1QTm90aWZpY2F0aW9uSUQqIE1QTm90aWZp
Y2F0aW9uSUQ7CnR5cGVkZWYgc3RydWN0IE9wYXF1ZU1QQ29oZXJlbmNlSUQqIE1QQ29oZXJlbmNl
SUQ7CnR5cGVkZWYgc3RydWN0IE9wYXF1ZU1QQ3B1SUQqIE1QQ3B1SUQ7CnR5cGVkZWYgc3RydWN0
IE9wYXF1ZU1QQXJlYUlEKiBNUEFyZWFJRDsKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlTVBDb25zb2xl
SUQqIE1QQ29uc29sZUlEOwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVNUE9wYXF1ZUlEKiBNUE9wYXF1
ZUlEOwplbnVtIHsKCiAga09wYXF1ZUFueUlEID0gMCwKICBrT3BhcXVlUHJvY2Vzc0lEID0gMSwK
ICBrT3BhcXVlVGFza0lEID0gMiwKICBrT3BhcXVlVGltZXJJRCA9IDMsCiAga09wYXF1ZVF1ZXVl
SUQgPSA0LAogIGtPcGFxdWVTZW1hcGhvcmVJRCA9IDUsCiAga09wYXF1ZUNyaXRpY2FsUmVnaW9u
SUQgPSA2LAogIGtPcGFxdWVDcHVJRCA9IDcsCiAga09wYXF1ZUFkZHJlc3NTcGFjZUlEID0gOCwK
ICBrT3BhcXVlRXZlbnRJRCA9IDksCiAga09wYXF1ZUNvaGVyZW5jZUlEID0gMTAsCiAga09wYXF1
ZUFyZWFJRCA9IDExLAogIGtPcGFxdWVOb3RpZmljYXRpb25JRCA9IDEyLAogIGtPcGFxdWVDb25z
b2xlSUQgPSAxMwp9OwoKdHlwZWRlZiBVSW50MzIgTVBPcGFxdWVJRENsYXNzOwoKZW51bSB7CiAg
a01QTm9JRCA9IDAKfTsKCgp0eXBlZGVmIE9wdGlvbkJpdHMgTVBUYXNrT3B0aW9uczsKdHlwZWRl
ZiBJdGVtQ291bnQgVGFza1N0b3JhZ2VJbmRleDsKdHlwZWRlZiBMb2dpY2FsQWRkcmVzcyBUYXNr
U3RvcmFnZVZhbHVlOwp0eXBlZGVmIEl0ZW1Db3VudCBNUFNlbWFwaG9yZUNvdW50Owp0eXBlZGVm
IFVJbnQzMiBNUFRhc2tXZWlnaHQ7CnR5cGVkZWYgVUludDMyIE1QRXZlbnRGbGFnczsKdHlwZWRl
ZiBVSW50MzIgTVBFeGNlcHRpb25LaW5kOwp0eXBlZGVmIFVJbnQzMiBNUFRhc2tTdGF0ZUtpbmQ7
CnR5cGVkZWYgVUludDMyIE1QUGFnZVNpemVDbGFzczsKCmVudW0gewogIGtEdXJhdGlvbkltbWVk
aWF0ZSA9IDAsCiAga0R1cmF0aW9uRm9yZXZlciA9IDB4N0ZGRkZGRkYsCiAga0R1cmF0aW9uTWls
bGlzZWNvbmQgPSAxLAogIGtEdXJhdGlvbk1pY3Jvc2Vjb25kID0gLTEKfTsKIyAyODggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmV4dGVybiBJ
dGVtQ291bnQKTVBQcm9jZXNzb3JzKHZvaWQpIDsKIyAzMDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmV4dGVybiBJdGVtQ291bnQKTVBQcm9j
ZXNzb3JzU2NoZWR1bGVkKHZvaWQpIDsKIyAzMjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmVudW0gewoKICBrTVBDcmVhdGVUYXNrU3VzcGVu
ZGVkTWFzayA9IDFMIDw8IDAsCiAga01QQ3JlYXRlVGFza1Rha2VzQWxsRXhjZXB0aW9uc01hc2sg
PSAxTCA8PCAxLAogIGtNUENyZWF0ZVRhc2tOb3REZWJ1Z2dhYmxlTWFzayA9IDFMIDw8IDIsCiAg
a01QQ3JlYXRlVGFza1ZhbGlkT3B0aW9uc01hc2sgPSBrTVBDcmVhdGVUYXNrU3VzcGVuZGVkTWFz
ayB8IGtNUENyZWF0ZVRhc2tUYWtlc0FsbEV4Y2VwdGlvbnNNYXNrIHwga01QQ3JlYXRlVGFza05v
dERlYnVnZ2FibGVNYXNrCn07CgoKCgoKCgp0eXBlZGVmIE9TU3RhdHVzICggKiBUYXNrUHJvYyko
dm9pZCAqIHBhcmFtZXRlcik7CiMgMzQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gT1NTdGF0dXMKTVBDcmVhdGVUYXNrKAogIFRh
c2tQcm9jIGVudHJ5UG9pbnQsCiAgdm9pZCAqIHBhcmFtZXRlciwKICBCeXRlQ291bnQgc3RhY2tT
aXplLAogIE1QUXVldWVJRCBub3RpZnlRdWV1ZSwKICB2b2lkICogdGVybWluYXRpb25QYXJhbWV0
ZXIxLAogIHZvaWQgKiB0ZXJtaW5hdGlvblBhcmFtZXRlcjIsCiAgTVBUYXNrT3B0aW9ucyBvcHRp
b25zLAogIE1QVGFza0lEICogdGFzaykgOwojIDM3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1QVGVybWluYXRl
VGFzaygKICBNUFRhc2tJRCB0YXNrLAogIE9TU3RhdHVzIHRlcm1pbmF0aW9uU3RhdHVzKSA7CiMg
MzkxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIg
MwpleHRlcm4gT1NTdGF0dXMKTVBTZXRUYXNrV2VpZ2h0KAogIE1QVGFza0lEIHRhc2ssCiAgTVBU
YXNrV2VpZ2h0IHdlaWdodCkgOwojIDQxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIEJvb2xlYW4KTVBUYXNrSXNQcmVlbXB0aXZl
KE1QVGFza0lEIHRhc2tJRCkgOwojIDQyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIHZvaWQKTVBFeGl0KE9TU3RhdHVzIHN0YXR1
cykgOwojIDQ0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNz
aW5nLmgiIDMKZXh0ZXJuIHZvaWQKTVBZaWVsZCh2b2lkKSA7CiMgNDYxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gTVBUYXNrSUQK
TVBDdXJyZW50VGFza0lEKHZvaWQpIDsKIyA0NzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpNUFNldFRhc2tUeXBl
KAogIE1QVGFza0lEIHRhc2ssCiAgT1NUeXBlIHRhc2tUeXBlKSA7CiMgNTA2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gT1NTdGF0
dXMKTVBBbGxvY2F0ZVRhc2tTdG9yYWdlSW5kZXgoVGFza1N0b3JhZ2VJbmRleCAqIHRhc2tJbmRl
eCkgOwojIDUyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNz
aW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1QRGVhbGxvY2F0ZVRhc2tTdG9yYWdlSW5kZXgoVGFz
a1N0b3JhZ2VJbmRleCB0YXNrSW5kZXgpIDsKIyA1NDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpNUFNldFRhc2tT
dG9yYWdlVmFsdWUoCiAgVGFza1N0b3JhZ2VJbmRleCB0YXNrSW5kZXgsCiAgVGFza1N0b3JhZ2VW
YWx1ZSB2YWx1ZSkgOwojIDU1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVs
dGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIFRhc2tTdG9yYWdlVmFsdWUKTVBHZXRUYXNrU3RvcmFn
ZVZhbHVlKFRhc2tTdG9yYWdlSW5kZXggdGFza0luZGV4KSA7CiMgNTg0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gT1NTdGF0dXMK
TVBDcmVhdGVRdWV1ZShNUFF1ZXVlSUQgKiBxdWV1ZSkgOwojIDYwMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1Q
RGVsZXRlUXVldWUoTVBRdWV1ZUlEIHF1ZXVlKSA7CiMgNjE4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gT1NTdGF0dXMKTVBOb3Rp
ZnlRdWV1ZSgKICBNUFF1ZXVlSUQgcXVldWUsCiAgdm9pZCAqIHBhcmFtMSwKICB2b2lkICogcGFy
YW0yLAogIHZvaWQgKiBwYXJhbTMpIDsKIyA2MzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpNUFdhaXRPblF1ZXVl
KAogIE1QUXVldWVJRCBxdWV1ZSwKICB2b2lkICoqIHBhcmFtMSwKICB2b2lkICoqIHBhcmFtMiwK
ICB2b2lkICoqIHBhcmFtMywKICBEdXJhdGlvbiB0aW1lb3V0KSA7CiMgNjYxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gT1NTdGF0
dXMKTVBTZXRRdWV1ZVJlc2VydmUoCiAgTVBRdWV1ZUlEIHF1ZXVlLAogIEl0ZW1Db3VudCBjb3Vu
dCkgOwojIDY4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNz
aW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1QQ3JlYXRlU2VtYXBob3JlKAogIE1QU2VtYXBob3Jl
Q291bnQgbWF4aW11bVZhbHVlLAogIE1QU2VtYXBob3JlQ291bnQgaW5pdGlhbFZhbHVlLAogIE1Q
U2VtYXBob3JlSUQgKiBzZW1hcGhvcmUpIDsKIyA3MDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpNUERlbGV0ZVNl
bWFwaG9yZShNUFNlbWFwaG9yZUlEIHNlbWFwaG9yZSkgOwojIDcyMCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1Q
U2lnbmFsU2VtYXBob3JlKE1QU2VtYXBob3JlSUQgc2VtYXBob3JlKSA7CiMgNzM3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gT1NT
dGF0dXMKTVBXYWl0T25TZW1hcGhvcmUoCiAgTVBTZW1hcGhvcmVJRCBzZW1hcGhvcmUsCiAgRHVy
YXRpb24gdGltZW91dCkgOwoKCgojZGVmaW5lIE1QQ3JlYXRlQmluYXJ5U2VtYXBob3JlKHNlbWFw
aG9yZSkgTVBDcmVhdGVTZW1hcGhvcmUgKCAxLCAxLCAoc2VtYXBob3JlKSApCiMgNzYyICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4g
T1NTdGF0dXMKTVBDcmVhdGVDcml0aWNhbFJlZ2lvbihNUENyaXRpY2FsUmVnaW9uSUQgKiBjcml0
aWNhbFJlZ2lvbikgOwojIDc3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVs
dGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1QRGVsZXRlQ3JpdGljYWxSZWdpb24o
TVBDcml0aWNhbFJlZ2lvbklEIGNyaXRpY2FsUmVnaW9uKSA7CiMgNzk2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gT1NTdGF0dXMK
TVBFbnRlckNyaXRpY2FsUmVnaW9uKAogIE1QQ3JpdGljYWxSZWdpb25JRCBjcml0aWNhbFJlZ2lv
biwKICBEdXJhdGlvbiB0aW1lb3V0KSA7CiMgODE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gT1NTdGF0dXMKTVBFeGl0Q3JpdGlj
YWxSZWdpb24oTVBDcml0aWNhbFJlZ2lvbklEIGNyaXRpY2FsUmVnaW9uKSA7CiMgODM0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4g
T1NTdGF0dXMKTVBDcmVhdGVFdmVudChNUEV2ZW50SUQgKiBldmVudCkgOwojIDg1MCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCk1QRGVsZXRlRXZlbnQoTVBFdmVudElEIGV2ZW50KSA7CiMgODY3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gT1NTdGF0
dXMKTVBTZXRFdmVudCgKICBNUEV2ZW50SUQgZXZlbnQsCiAgTVBFdmVudEZsYWdzIGZsYWdzKSA7
CiMgODg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3Npbmcu
aCIgMwpleHRlcm4gT1NTdGF0dXMKTVBXYWl0Rm9yRXZlbnQoCiAgTVBFdmVudElEIGV2ZW50LAog
IE1QRXZlbnRGbGFncyAqIGZsYWdzLAogIER1cmF0aW9uIHRpbWVvdXQpIDsKIyA5MTIgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmV4dGVybiBP
U1N0YXR1cwpNUENyZWF0ZU5vdGlmaWNhdGlvbihNUE5vdGlmaWNhdGlvbklEICogbm90aWZpY2F0
aW9uSUQpIDsKIyA5MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRpcHJv
Y2Vzc2luZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpNUERlbGV0ZU5vdGlmaWNhdGlvbihNUE5vdGlm
aWNhdGlvbklEIG5vdGlmaWNhdGlvbklEKSA7CiMgOTQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gT1NTdGF0dXMKTVBNb2RpZnlO
b3RpZmljYXRpb24oCiAgTVBOb3RpZmljYXRpb25JRCBub3RpZmljYXRpb25JRCwKICBNUE9wYXF1
ZUlEIGFuSUQsCiAgdm9pZCAqIG5vdGlmeVBhcmFtMSwKICB2b2lkICogbm90aWZ5UGFyYW0yLAog
IHZvaWQgKiBub3RpZnlQYXJhbTMpIDsKIyA5NjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpNUE1vZGlmeU5vdGlm
aWNhdGlvblBhcmFtZXRlcnMoCiAgTVBOb3RpZmljYXRpb25JRCBub3RpZmljYXRpb25JRCwKICBN
UE9wYXF1ZUlEQ2xhc3Mga2luZCwKICB2b2lkICogbm90aWZ5UGFyYW0xLAogIHZvaWQgKiBub3Rp
ZnlQYXJhbTIsCiAgdm9pZCAqIG5vdGlmeVBhcmFtMykgOwojIDk5MCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1Q
Q2F1c2VOb3RpZmljYXRpb24oTVBOb3RpZmljYXRpb25JRCBub3RpZmljYXRpb25JRCkgOwojIDEw
MTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAz
CmVudW0gewoKICBrTVBQcmVzZXJ2ZVRpbWVySURNYXNrID0gMUwgPDwgMCwKICBrTVBUaW1lSXNE
ZWx0YU1hc2sgPSAxTCA8PCAxLAogIGtNUFRpbWVJc0R1cmF0aW9uTWFzayA9IDFMIDw8IDIKfTsK
IyAxMDMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3Npbmcu
aCIgMwpleHRlcm4gT1NTdGF0dXMKTVBEZWxheVVudGlsKEFic29sdXRlVGltZSAqIGV4cGlyYXRp
b25UaW1lKSA7CiMgMTA1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlw
cm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1QQ3JlYXRlVGltZXIoTVBUaW1lcklEICog
dGltZXJJRCkgOwojIDEwNzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRp
cHJvY2Vzc2luZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpNUERlbGV0ZVRpbWVyKE1QVGltZXJJRCB0
aW1lcklEKSA7CiMgMTA5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlw
cm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1QU2V0VGltZXJOb3RpZnkoCiAgTVBUaW1l
cklEIHRpbWVySUQsCiAgTVBPcGFxdWVJRCBhbklELAogIHZvaWQgKiBub3RpZnlQYXJhbTEsCiAg
dm9pZCAqIG5vdGlmeVBhcmFtMiwKICB2b2lkICogbm90aWZ5UGFyYW0zKSA7CiMgMTExNSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzCk1QQXJtVGltZXIoCiAgTVBUaW1lcklEIHRpbWVySUQsCiAgQWJzb2x1dGVUaW1l
ICogZXhwaXJhdGlvblRpbWUsCiAgT3B0aW9uQml0cyBvcHRpb25zKSA7CiMgMTEzNSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCk1QQ2FuY2VsVGltZXIoCiAgTVBUaW1lcklEIHRpbWVySUQsCiAgQWJzb2x1dGVUaW1l
ICogdGltZVJlbWFpbmluZykgOwojIDExNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmVudW0gewoKICBrTVBNYXhBbGxvY1NpemUgPSAxMDI0
TCAqIDEwMjQgKiAxMDI0Cn07CgplbnVtIHsKCiAga01QQWxsb2NhdGVEZWZhdWx0QWxpZ25lZCA9
IDAsCiAga01QQWxsb2NhdGU4Qnl0ZUFsaWduZWQgPSAzLAogIGtNUEFsbG9jYXRlMTZCeXRlQWxp
Z25lZCA9IDQsCiAga01QQWxsb2NhdGUzMkJ5dGVBbGlnbmVkID0gNSwKICBrTVBBbGxvY2F0ZTEw
MjRCeXRlQWxpZ25lZCA9IDEwLAogIGtNUEFsbG9jYXRlNDA5NkJ5dGVBbGlnbmVkID0gMTIsCiAg
a01QQWxsb2NhdGVNYXhBbGlnbm1lbnQgPSAxNiwKICBrTVBBbGxvY2F0ZUFsdGlWZWNBbGlnbmVk
ID0ga01QQWxsb2NhdGUxNkJ5dGVBbGlnbmVkLAogIGtNUEFsbG9jYXRlVk1YQWxpZ25lZCA9IGtN
UEFsbG9jYXRlQWx0aVZlY0FsaWduZWQsCiAga01QQWxsb2NhdGVWTVBhZ2VBbGlnbmVkID0gMjU0
LAogIGtNUEFsbG9jYXRlSW50ZXJsb2NrQWxpZ25lZCA9IDI1NQp9OwoKCgplbnVtIHsKCiAga01Q
QWxsb2NhdGVDbGVhck1hc2sgPSAweDAwMDEsCiAga01QQWxsb2NhdGVHbG9iYWxseU1hc2sgPSAw
eDAwMDIsCiAga01QQWxsb2NhdGVSZXNpZGVudE1hc2sgPSAweDAwMDQsCiAga01QQWxsb2NhdGVO
b0dyb3d0aE1hc2sgPSAweDAwMTAsCiAga01QQWxsb2NhdGVOb0NyZWF0ZU1hc2sgPSAweDAwMjAK
fTsKIyAxMTk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3Np
bmcuaCIgMwpleHRlcm4gTG9naWNhbEFkZHJlc3MKTVBBbGxvY2F0ZUFsaWduZWQoCiAgQnl0ZUNv
dW50IHNpemUsCiAgVUludDggYWxpZ25tZW50LAogIE9wdGlvbkJpdHMgb3B0aW9ucykgOwojIDEy
MTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAz
CmV4dGVybiBMb2dpY2FsQWRkcmVzcwpNUEFsbG9jYXRlKEJ5dGVDb3VudCBzaXplKSA7CiMgMTIz
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMK
ZXh0ZXJuIHZvaWQKTVBGcmVlKExvZ2ljYWxBZGRyZXNzIG9iamVjdCkgOwojIDEyNTEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmV4dGVybiBC
eXRlQ291bnQKTVBHZXRBbGxvY2F0ZWRCbG9ja1NpemUoTG9naWNhbEFkZHJlc3Mgb2JqZWN0KSA7
CiMgMTI3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5n
LmgiIDMKZXh0ZXJuIHZvaWQKTVBCbG9ja0NvcHkoCiAgTG9naWNhbEFkZHJlc3Mgc291cmNlLAog
IExvZ2ljYWxBZGRyZXNzIGRlc3RpbmF0aW9uLAogIEJ5dGVDb3VudCBzaXplKSA7CiMgMTI5MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0
ZXJuIHZvaWQKTVBCbG9ja0NsZWFyKAogIExvZ2ljYWxBZGRyZXNzIGFkZHJlc3MsCiAgQnl0ZUNv
dW50IHNpemUpIDsKIyAxMzY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0
aXByb2Nlc3NpbmcuaCIgMwplbnVtIHsKCiAga01QVGFza1N0YXRlUmVnaXN0ZXJzID0gMCwKICBr
TVBUYXNrU3RhdGVGUFUgPSAxLAogIGtNUFRhc2tTdGF0ZVZlY3RvcnMgPSAyLAogIGtNUFRhc2tT
dGF0ZU1hY2hpbmUgPSAzLAogIGtNUFRhc2tTdGF0ZTMyQml0TWVtb3J5RXhjZXB0aW9uID0gNCwK
ICBrTVBUYXNrU3RhdGVUYXNrSW5mbyA9IDUKfTsKCgoKZW51bSB7CgogIGtNUFRhc2tQcm9wYWdh
dGUgPSAwLAogIGtNUFRhc2tSZXN1bWVTdGVwID0gMSwKICBrTVBUYXNrUmVzdW1lQnJhbmNoID0g
MiwKICBrTVBUYXNrUmVzdW1lTWFzayA9IDB4MDAwMCwKICBrTVBUYXNrUHJvcGFnYXRlTWFzayA9
IDEgPDwga01QVGFza1Byb3BhZ2F0ZSwKICBrTVBUYXNrUmVzdW1lU3RlcE1hc2sgPSAxIDw8IGtN
UFRhc2tSZXN1bWVTdGVwLAogIGtNUFRhc2tSZXN1bWVCcmFuY2hNYXNrID0gMSA8PCBrTVBUYXNr
UmVzdW1lQnJhbmNoCn07CgoKCmVudW0gewoKICBrTVBUYXNrQmxvY2tlZCA9IDAsCiAga01QVGFz
a1JlYWR5ID0gMSwKICBrTVBUYXNrUnVubmluZyA9IDIKfTsKCmVudW0gewoKICBrTVBUYXNrSW5m
b1ZlcnNpb24gPSAzCn07CgoKc3RydWN0IE1QVGFza0luZm9WZXJzaW9uMiB7CiAgUEJWZXJzaW9u
IHZlcnNpb247CgogIE9TVHlwZSBuYW1lOwoKICBPU1R5cGUgcXVldWVOYW1lOwogIFVJbnQxNiBy
dW5TdGF0ZTsKICBVSW50MTYgbGFzdENQVTsKICBVSW50MzIgd2VpZ2h0OwoKICBNUFByb2Nlc3NJ
RCBwcm9jZXNzSUQ7CgogIEFic29sdXRlVGltZSBjcHVUaW1lOwogIEFic29sdXRlVGltZSBzY2hl
ZFRpbWU7CiAgQWJzb2x1dGVUaW1lIGNyZWF0aW9uVGltZTsKCiAgSXRlbUNvdW50IGNvZGVQYWdl
RmF1bHRzOwogIEl0ZW1Db3VudCBkYXRhUGFnZUZhdWx0czsKICBJdGVtQ291bnQgcHJlZW1wdGlv
bnM7CgogIE1QQ3B1SUQgY3B1SUQ7Cn07CnR5cGVkZWYgc3RydWN0IE1QVGFza0luZm9WZXJzaW9u
MiBNUFRhc2tJbmZvVmVyc2lvbjI7CnN0cnVjdCBNUFRhc2tJbmZvIHsKICBQQlZlcnNpb24gdmVy
c2lvbjsKCiAgT1NUeXBlIG5hbWU7CgogIE9TVHlwZSBxdWV1ZU5hbWU7CiAgVUludDE2IHJ1blN0
YXRlOwogIFVJbnQxNiBsYXN0Q1BVOwogIFVJbnQzMiB3ZWlnaHQ7CgogIE1QUHJvY2Vzc0lEIHBy
b2Nlc3NJRDsKCiAgQWJzb2x1dGVUaW1lIGNwdVRpbWU7CiAgQWJzb2x1dGVUaW1lIHNjaGVkVGlt
ZTsKICBBYnNvbHV0ZVRpbWUgY3JlYXRpb25UaW1lOwoKICBJdGVtQ291bnQgY29kZVBhZ2VGYXVs
dHM7CiAgSXRlbUNvdW50IGRhdGFQYWdlRmF1bHRzOwogIEl0ZW1Db3VudCBwcmVlbXB0aW9uczsK
CiAgTVBDcHVJRCBjcHVJRDsKICBNUE9wYXF1ZUlEIGJsb2NrZWRPYmplY3Q7CiAgTVBBZGRyZXNz
U3BhY2VJRCBzcGFjZUlEOwoKICBMb2dpY2FsQWRkcmVzcyBzdGFja0Jhc2U7CiAgTG9naWNhbEFk
ZHJlc3Mgc3RhY2tMaW1pdDsKICBMb2dpY2FsQWRkcmVzcyBzdGFja0N1cnI7Cn07CnR5cGVkZWYg
c3RydWN0IE1QVGFza0luZm8gTVBUYXNrSW5mbzsKIyAxNDgwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpleHRlcm4gT1NTdGF0dXMKTVBTZXRF
eGNlcHRpb25IYW5kbGVyKAogIE1QVGFza0lEIHRhc2ssCiAgTVBRdWV1ZUlEIGV4Y2VwdGlvblEp
IDsKIyAxNDk5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3Np
bmcuaCIgMwpleHRlcm4gT1NTdGF0dXMKTVBEaXNwb3NlVGFza0V4Y2VwdGlvbigKICBNUFRhc2tJ
RCB0YXNrLAogIE9wdGlvbkJpdHMgYWN0aW9uKSA7CiMgMTUxOCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1QRXh0
cmFjdFRhc2tTdGF0ZSgKICBNUFRhc2tJRCB0YXNrLAogIE1QVGFza1N0YXRlS2luZCBraW5kLAog
IHZvaWQgKiBpbmZvKSA7CiMgMTUzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
TXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1QU2V0VGFza1N0YXRlKAogIE1Q
VGFza0lEIHRhc2ssCiAgTVBUYXNrU3RhdGVLaW5kIGtpbmQsCiAgdm9pZCAqIGluZm8pIDsKIyAx
NTU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIg
MwpleHRlcm4gT1NTdGF0dXMKTVBUaHJvd0V4Y2VwdGlvbigKICBNUFRhc2tJRCB0YXNrLAogIE1Q
RXhjZXB0aW9uS2luZCBraW5kKSA7CgoKCgoKCnR5cGVkZWYgVUludDMyIE1QRGVidWdnZXJMZXZl
bDsKZW51bSB7CiAga01QTG93TGV2ZWxEZWJ1Z2dlciA9IDB4MDAwMDAwMDAsCiAga01QTWlkTGV2
ZWxEZWJ1Z2dlciA9IDB4MTAwMDAwMDAsCiAga01QSGlnaExldmVsRGVidWdnZXIgPSAweDIwMDAw
MDAwCn07CiMgMTU4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9j
ZXNzaW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk1QUmVnaXN0ZXJEZWJ1Z2dlcigKICBNUFF1ZXVl
SUQgcXVldWUsCiAgTVBEZWJ1Z2dlckxldmVsIGxldmVsKSA7CiMgMTYwNyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
Ck1QVW5yZWdpc3RlckRlYnVnZ2VyKE1QUXVldWVJRCBxdWV1ZSkgOwojIDE2MjEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCnR5cGVkZWYgdm9p
ZCAqICggKiBNUFJlbW90ZVByb2NlZHVyZSkodm9pZCAqIHBhcmFtZXRlcik7Cgp0eXBlZGVmIFVJ
bnQ4IE1QUmVtb3RlQ29udGV4dDsKZW51bSB7CiAga01QQW55UmVtb3RlQ29udGV4dCA9IDAsCiAg
a01QT3duaW5nUHJvY2Vzc1JlbW90ZUNvbnRleHQgPSAxLAogIGtNUEludGVycnVwdFJlbW90ZUNv
bnRleHQgPSAyLAogIGtNUEFzeW5jSW50ZXJydXB0UmVtb3RlQ29udGV4dCA9IDMKfTsKIyAxNjkx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpl
eHRlcm4gdm9pZCAqCk1QUmVtb3RlQ2FsbCgKICBNUFJlbW90ZVByb2NlZHVyZSByZW1vdGVQcm9j
LAogIHZvaWQgKiBwYXJhbWV0ZXIsCiAgTVBSZW1vdGVDb250ZXh0IGNvbnRleHQpIDsKIyAxNzUx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIgMwpl
eHRlcm4gdm9pZCAqCk1QUmVtb3RlQ2FsbENGTSgKICBNUFJlbW90ZVByb2NlZHVyZSByZW1vdGVQ
cm9jLAogIHZvaWQgKiBwYXJhbWV0ZXIsCiAgTVBSZW1vdGVDb250ZXh0IGNvbnRleHQpIDsKIyAx
ODMzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NdWx0aXByb2Nlc3NpbmcuaCIg
MwpleHRlcm4gQm9vbGVhbgpfTVBJc0Z1bGx5SW5pdGlhbGl6ZWQodm9pZCkgOwoKCnR5cGVkZWYg
Qm9vbGVhbiAoICogTVBJc0Z1bGx5SW5pdGlhbGl6ZWRQcm9jKSh2b2lkKTsKI2RlZmluZSBrTVBV
bnJlc29sdmVkQ0ZyYWdTeW1ib2xBZGRyZXNzIDAKI2RlZmluZSBNUExpYnJhcnlJc0xvYWRlZCgp
ICh0cnVlKQojIDE4NTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRpcHJv
Y2Vzc2luZy5oIiAzCmV4dGVybiB2b2lkCl9NUExpYnJhcnlWZXJzaW9uKAogIGNvbnN0IGNoYXIg
KiogdmVyc2lvbkNTdHJpbmcsCiAgVUludDMyICogbWFqb3IsCiAgVUludDMyICogbWlub3IsCiAg
VUludDMyICogcmVsZWFzZSwKICBVSW50MzIgKiByZXZpc2lvbikgOwojIDE5MjYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCmV4dGVybiBCb29s
ZWFuCl9NUExpYnJhcnlJc0NvbXBhdGlibGUoCiAgY29uc3QgY2hhciAqIHZlcnNpb25DU3RyaW5n
LAogIFVJbnQzMiBtYWpvciwKICBVSW50MzIgbWlub3IsCiAgVUludDMyIHJlbGVhc2UsCiAgVUlu
dDMyIHJldmlzaW9uKSA7CgoKCiNkZWZpbmUgTVBSUEMgX01QUlBDCiNkZWZpbmUgTVBUYXNrSXNU
b29sYm94U2FmZSBfTVBUYXNrSXNUb29sYm94U2FmZQojIDIwMTMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZy5oIiAzCiNwcmFnbWEgb3B0aW9ucyBhbGln
bj1yZXNldAoKCn0KIyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29kZUZy
YWdtZW50cy5oIiAyIDMKIyA1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29k
ZUZyYWdtZW50cy5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQojIDY0
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29kZUZyYWdtZW50cy5oIiAzCiNw
cmFnbWEgcGFjayhwb3ApCgoKfQojIDEwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQ2FyYm9uQ29yZS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9BbGlhc2VzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9BbGlhc2VzLmgiIDMKI2RlZmluZSBfX0FMSUFTRVNfXyAKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvQWxpYXNlcy5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFj
ayhwdXNoLCAyKQoKdHlwZWRlZiBVSW50MzIgRlNBbGlhc0luZm9CaXRtYXA7CmVudW0gewogIGtG
U0FsaWFzSW5mb05vbmUgPSAweDAwMDAwMDAwLAogIGtGU0FsaWFzSW5mb1ZvbHVtZUNyZWF0ZURh
dGUgPSAweDAwMDAwMDAxLAogIGtGU0FsaWFzSW5mb1RhcmdldENyZWF0ZURhdGUgPSAweDAwMDAw
MDAyLAogIGtGU0FsaWFzSW5mb0ZpbmRlckluZm8gPSAweDAwMDAwMDA0LAogIGtGU0FsaWFzSW5m
b0lzRGlyZWN0b3J5ID0gMHgwMDAwMDAwOCwKICBrRlNBbGlhc0luZm9JRHMgPSAweDAwMDAwMDEw
LAogIGtGU0FsaWFzSW5mb0ZTSW5mbyA9IDB4MDAwMDAwMjAsCiAga0ZTQWxpYXNJbmZvVm9sdW1l
RmxhZ3MgPSAweDAwMDAwMDQwCn07CgplbnVtIHsKICByQWxpYXNUeXBlID0gJ2FsaXMnCn07Cgpl
bnVtIHsKCiAga0FSTU1vdW50Vm9sID0gMHgwMDAwMDAwMSwKICBrQVJNTm9VSSA9IDB4MDAwMDAw
MDIsCiAga0FSTU11bHRWb2xzID0gMHgwMDAwMDAwOCwKICBrQVJNU2VhcmNoID0gMHgwMDAwMDEw
MCwKICBrQVJNU2VhcmNoTW9yZSA9IDB4MDAwMDAyMDAsCiAga0FSTVNlYXJjaFJlbEZpcnN0ID0g
MHgwMDAwMDQwMCwKICBrQVJNVHJ5RmlsZUlERmlyc3QgPSAweDAwMDAwODAwCn07CgplbnVtIHsK
CiAgYXNpWm9uZU5hbWUgPSAtMywKICBhc2lTZXJ2ZXJOYW1lID0gLTIsCiAgYXNpVm9sdW1lTmFt
ZSA9IC0xLAogIGFzaUFsaWFzTmFtZSA9IDAsCiAgYXNpUGFyZW50TmFtZSA9IDEKfTsKCgplbnVt
IHsKICBrUmVzb2x2ZUFsaWFzRmlsZU5vVUkgPSAweDAwMDAwMDAxLAogIGtSZXNvbHZlQWxpYXNU
cnlGaWxlSURGaXJzdCA9IDB4MDAwMDAwMDIKfTsKCgojZGVmaW5lIF9fQUxfVVNFX09QQVFVRV9S
RUNPUkRfXyAxCgoKCgoKc3RydWN0IEFsaWFzUmVjb3JkIHsKICBVSW50OCBoaWRkZW5bNl07Cn07
CnR5cGVkZWYgc3RydWN0IEFsaWFzUmVjb3JkIEFsaWFzUmVjb3JkOwojIDEwMiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQWxpYXNlcy5oIiAzCnR5cGVkZWYgQWxpYXNSZWNvcmQg
KiBBbGlhc1B0cjsKdHlwZWRlZiBBbGlhc1B0ciAqIEFsaWFzSGFuZGxlOwoKc3RydWN0IEZTQWxp
YXNJbmZvIHsKICBVVENEYXRlVGltZSB2b2x1bWVDcmVhdGVEYXRlOwogIFVUQ0RhdGVUaW1lIHRh
cmdldENyZWF0ZURhdGU7CiAgT1NUeXBlIGZpbGVUeXBlOwogIE9TVHlwZSBmaWxlQ3JlYXRvcjsK
ICBVSW50MzIgcGFyZW50RGlySUQ7CiAgVUludDMyIG5vZGVJRDsKICBVSW50MTYgZmlsZXN5c3Rl
bUlEOwogIFVJbnQxNiBzaWduYXR1cmU7CiAgQm9vbGVhbiB2b2x1bWVJc0Jvb3RWb2x1bWU7CiAg
Qm9vbGVhbiB2b2x1bWVJc0F1dG9tb3VudGVkOwogIEJvb2xlYW4gdm9sdW1lSXNFamVjdGFibGU7
CiAgQm9vbGVhbiB2b2x1bWVIYXNQZXJzaXN0ZW50RmlsZUlEczsKICBCb29sZWFuIGlzRGlyZWN0
b3J5Owp9Owp0eXBlZGVmIHN0cnVjdCBGU0FsaWFzSW5mbyBGU0FsaWFzSW5mbzsKdHlwZWRlZiBG
U0FsaWFzSW5mbyAqIEZTQWxpYXNJbmZvUHRyOwoKdHlwZWRlZiBzaG9ydCBBbGlhc0luZm9UeXBl
OwojIDE3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQWxpYXNlcy5oIiAzCnR5
cGVkZWYgQm9vbGVhbiAoICogRlNBbGlhc0ZpbHRlclByb2NQdHIpKGNvbnN0IEZTUmVmICpyZWYs
IEJvb2xlYW4gKnF1aXRGbGFnLCBQdHIgbXlEYXRhUHRyKTsKIyAxOTAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0FsaWFzZXMuaCIgMwpleHRlcm4gT1NFcnIKRlNOZXdBbGlhcygK
ICBjb25zdCBGU1JlZiAqIGZyb21GaWxlLAogIGNvbnN0IEZTUmVmICogdGFyZ2V0LAogIEFsaWFz
SGFuZGxlICogaW5BbGlhcykgOwojIDIwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQWxpYXNlcy5oIiAzCmV4dGVybiBPU0VycgpGU05ld0FsaWFzTWluaW1hbCgKICBjb25zdCBG
U1JlZiAqIHRhcmdldCwKICBBbGlhc0hhbmRsZSAqIGluQWxpYXMpIDsKIyAyMjUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0FsaWFzZXMuaCIgMwpleHRlcm4gT1NFcnIKRlNJc0Fs
aWFzRmlsZSgKICBjb25zdCBGU1JlZiAqIGZpbGVSZWYsCiAgQm9vbGVhbiAqIGFsaWFzRmlsZUZs
YWcsCiAgQm9vbGVhbiAqIGZvbGRlckZsYWcpIDsKIyAyNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0FsaWFzZXMuaCIgMwpleHRlcm4gT1NFcnIKRlNSZXNvbHZlQWxpYXNXaXRo
TW91bnRGbGFncygKICBjb25zdCBGU1JlZiAqIGZyb21GaWxlLAogIEFsaWFzSGFuZGxlIGluQWxp
YXMsCiAgRlNSZWYgKiB0YXJnZXQsCiAgQm9vbGVhbiAqIHdhc0NoYW5nZWQsCiAgdW5zaWduZWQg
bG9uZyBtb3VudEZsYWdzKSA7CiMgMjY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9BbGlhc2VzLmgiIDMKZXh0ZXJuIE9TRXJyCkZTUmVzb2x2ZUFsaWFzKAogIGNvbnN0IEZTUmVm
ICogZnJvbUZpbGUsCiAgQWxpYXNIYW5kbGUgYWxpYXMsCiAgRlNSZWYgKiB0YXJnZXQsCiAgQm9v
bGVhbiAqIHdhc0NoYW5nZWQpIDsKIyAyODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0FsaWFzZXMuaCIgMwpleHRlcm4gT1NFcnIKRlNSZXNvbHZlQWxpYXNGaWxlV2l0aE1vdW50
RmxhZ3MoCiAgRlNSZWYgKiB0aGVSZWYsCiAgQm9vbGVhbiByZXNvbHZlQWxpYXNDaGFpbnMsCiAg
Qm9vbGVhbiAqIHRhcmdldElzRm9sZGVyLAogIEJvb2xlYW4gKiB3YXNBbGlhc2VkLAogIHVuc2ln
bmVkIGxvbmcgbW91bnRGbGFncykgOwojIDMwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvQWxpYXNlcy5oIiAzCmV4dGVybiBPU0VycgpGU1Jlc29sdmVBbGlhc0ZpbGUoCiAgRlNS
ZWYgKiB0aGVSZWYsCiAgQm9vbGVhbiByZXNvbHZlQWxpYXNDaGFpbnMsCiAgQm9vbGVhbiAqIHRh
cmdldElzRm9sZGVyLAogIEJvb2xlYW4gKiB3YXNBbGlhc2VkKSA7CiMgMzI2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9BbGlhc2VzLmgiIDMKZXh0ZXJuIE9TRXJyCkZTRm9sbG93
RmluZGVyQWxpYXMoCiAgRlNSZWYgKiBmcm9tRmlsZSwKICBBbGlhc0hhbmRsZSBhbGlhcywKICBC
b29sZWFuIGxvZ29uLAogIEZTUmVmICogdGFyZ2V0LAogIEJvb2xlYW4gKiB3YXNDaGFuZ2VkKSA7
CiMgMzQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9BbGlhc2VzLmgiIDMKZXh0
ZXJuIE9TRXJyCkZTVXBkYXRlQWxpYXMoCiAgY29uc3QgRlNSZWYgKiBmcm9tRmlsZSwKICBjb25z
dCBGU1JlZiAqIHRhcmdldCwKICBBbGlhc0hhbmRsZSBhbGlhcywKICBCb29sZWFuICogd2FzQ2hh
bmdlZCkgOwojIDM5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQWxpYXNlcy5o
IiAzCmV4dGVybiBPU0VycgpGU05ld0FsaWFzVW5pY29kZSgKICBjb25zdCBGU1JlZiAqIGZyb21G
aWxlLAogIGNvbnN0IEZTUmVmICogdGFyZ2V0UGFyZW50UmVmLAogIFVuaUNoYXJDb3VudCB0YXJn
ZXROYW1lTGVuZ3RoLAogIGNvbnN0IFVuaUNoYXIgKiB0YXJnZXROYW1lLAogIEFsaWFzSGFuZGxl
ICogaW5BbGlhcywKICBCb29sZWFuICogaXNEaXJlY3RvcnkpIDsKIyA0NDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0FsaWFzZXMuaCIgMwpleHRlcm4gT1NFcnIKRlNOZXdBbGlh
c01pbmltYWxVbmljb2RlKAogIGNvbnN0IEZTUmVmICogdGFyZ2V0UGFyZW50UmVmLAogIFVuaUNo
YXJDb3VudCB0YXJnZXROYW1lTGVuZ3RoLAogIGNvbnN0IFVuaUNoYXIgKiB0YXJnZXROYW1lLAog
IEFsaWFzSGFuZGxlICogaW5BbGlhcywKICBCb29sZWFuICogaXNEaXJlY3RvcnkpIDsKIyA0ODcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0FsaWFzZXMuaCIgMwpleHRlcm4gT1NT
dGF0dXMKRlNOZXdBbGlhc0Zyb21QYXRoKAogIGNvbnN0IGNoYXIgKiBmcm9tRmlsZVBhdGgsCiAg
Y29uc3QgY2hhciAqIHRhcmdldFBhdGgsCiAgT3B0aW9uQml0cyBmbGFncywKICBBbGlhc0hhbmRs
ZSAqIGluQWxpYXMsCiAgQm9vbGVhbiAqIGlzRGlyZWN0b3J5KSA7CiMgNTExICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9BbGlhc2VzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkZTTWF0
Y2hBbGlhc0J1bGsoCiAgY29uc3QgRlNSZWYgKiBmcm9tRmlsZSwKICB1bnNpZ25lZCBsb25nIHJ1
bGVzTWFzaywKICBBbGlhc0hhbmRsZSBpbkFsaWFzLAogIHNob3J0ICogYWxpYXNDb3VudCwKICBG
U1JlZiAqIGFsaWFzTGlzdCwKICBCb29sZWFuICogbmVlZHNVcGRhdGUsCiAgRlNBbGlhc0ZpbHRl
clByb2NQdHIgYWxpYXNGaWx0ZXIsCiAgdm9pZCAqIHlvdXJEYXRhUHRyKSA7CiMgNTYzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9BbGlhc2VzLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CkZTQ29weUFsaWFzSW5mbygKICBBbGlhc0hhbmRsZSBpbkFsaWFzLAogIEhGU1VuaVN0cjI1NSAq
IHRhcmdldE5hbWUsCiAgSEZTVW5pU3RyMjU1ICogdm9sdW1lTmFtZSwKICBDRlN0cmluZ1JlZiAq
IHBhdGhTdHJpbmcsCiAgRlNBbGlhc0luZm9CaXRtYXAgKiB3aGljaEluZm8sCiAgRlNBbGlhc0lu
Zm8gKiBpbmZvKSA7CiMgNTk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9BbGlh
c2VzLmgiIDMKZXh0ZXJuIFNpemUKR2V0QWxpYXNTaXplKEFsaWFzSGFuZGxlIGFsaWFzKSA7CiMg
NjI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9BbGlhc2VzLmgiIDMKZXh0ZXJu
IE9TVHlwZQpHZXRBbGlhc1VzZXJUeXBlKEFsaWFzSGFuZGxlIGFsaWFzKSA7CiMgNjUyICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9BbGlhc2VzLmgiIDMKZXh0ZXJuIHZvaWQKU2V0
QWxpYXNVc2VyVHlwZSgKICBBbGlhc0hhbmRsZSBhbGlhcywKICBPU1R5cGUgdXNlclR5cGUpIDsK
IyA2ODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0FsaWFzZXMuaCIgMwpleHRl
cm4gU2l6ZQpHZXRBbGlhc1NpemVGcm9tUHRyKGNvbnN0IEFsaWFzUmVjb3JkICogYWxpYXMpIDsK
IyA3MDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0FsaWFzZXMuaCIgMwpleHRl
cm4gT1NUeXBlCkdldEFsaWFzVXNlclR5cGVGcm9tUHRyKGNvbnN0IEFsaWFzUmVjb3JkICogYWxp
YXMpIDsKIyA3MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0FsaWFzZXMuaCIg
MwpleHRlcm4gdm9pZApTZXRBbGlhc1VzZXJUeXBlV2l0aFB0cigKICBBbGlhc1B0ciBhbGlhcywK
ICBPU1R5cGUgdXNlclR5cGUpIDsKIyAxMjA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9BbGlhc2VzLmgiIDMKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgMTA2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25Db3JlLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY0xvY2FsZXMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY0xvY2FsZXMuaCIgMwojZGVmaW5lIF9fTUFDTE9D
QUxFU19fIAojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNMb2NhbGVz
LmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCiMgNDggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY0xvY2FsZXMuaCIgMwp0eXBlZGVmIHN0cnVjdCBP
cGFxdWVMb2NhbGVSZWYqIExvY2FsZVJlZjsKdHlwZWRlZiBVSW50MzIgTG9jYWxlUGFydE1hc2s7
CmVudW0gewoKICBrTG9jYWxlTGFuZ3VhZ2VNYXNrID0gMUwgPDwgMCwKICBrTG9jYWxlTGFuZ3Vh
Z2VWYXJpYW50TWFzayA9IDFMIDw8IDEsCiAga0xvY2FsZVNjcmlwdE1hc2sgPSAxTCA8PCAyLAog
IGtMb2NhbGVTY3JpcHRWYXJpYW50TWFzayA9IDFMIDw8IDMsCiAga0xvY2FsZVJlZ2lvbk1hc2sg
PSAxTCA8PCA0LAogIGtMb2NhbGVSZWdpb25WYXJpYW50TWFzayA9IDFMIDw8IDUsCiAga0xvY2Fs
ZUFsbFBhcnRzTWFzayA9IDB4MDAwMDAwM0YKfTsKCnR5cGVkZWYgRm91ckNoYXJDb2RlIExvY2Fs
ZU9wZXJhdGlvbkNsYXNzOwoKdHlwZWRlZiBGb3VyQ2hhckNvZGUgTG9jYWxlT3BlcmF0aW9uVmFy
aWFudDsKc3RydWN0IExvY2FsZUFuZFZhcmlhbnQgewogIExvY2FsZVJlZiBsb2NhbGU7CiAgTG9j
YWxlT3BlcmF0aW9uVmFyaWFudCBvcFZhcmlhbnQ7Cn07CnR5cGVkZWYgc3RydWN0IExvY2FsZUFu
ZFZhcmlhbnQgTG9jYWxlQW5kVmFyaWFudDsKCnR5cGVkZWYgVUludDMyIExvY2FsZU5hbWVNYXNr
OwplbnVtIHsKCiAga0xvY2FsZU5hbWVNYXNrID0gMUwgPDwgMCwKICBrTG9jYWxlT3BlcmF0aW9u
VmFyaWFudE5hbWVNYXNrID0gMUwgPDwgMSwKICBrTG9jYWxlQW5kVmFyaWFudE5hbWVNYXNrID0g
MHgwMDAwMDAwMwp9OwojIDk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNM
b2NhbGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkxvY2FsZVJlZkZyb21MYW5nT3JSZWdpb25Db2Rl
KAogIExhbmdDb2RlIGxhbmcsCiAgUmVnaW9uQ29kZSByZWdpb24sCiAgTG9jYWxlUmVmICogbG9j
YWxlKSA7CiMgMTA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNMb2NhbGVz
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkxvY2FsZVJlZkZyb21Mb2NhbGVTdHJpbmcoCiAgY29uc3Qg
Y2hhciBsb2NhbGVTdHJpbmdbXSwKICBMb2NhbGVSZWYgKiBsb2NhbGUpIDsKIyAxMjMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY0xvY2FsZXMuaCIgMwpleHRlcm4gT1NTdGF0
dXMKTG9jYWxlUmVmR2V0UGFydFN0cmluZygKICBMb2NhbGVSZWYgbG9jYWxlLAogIExvY2FsZVBh
cnRNYXNrIHBhcnRNYXNrLAogIEJ5dGVDb3VudCBtYXhTdHJpbmdMZW4sCiAgY2hhciBwYXJ0U3Ry
aW5nW10pIDsKIyAxNjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY0xvY2Fs
ZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKTG9jYWxlU3RyaW5nVG9MYW5nQW5kUmVnaW9uQ29kZXMo
CiAgY29uc3QgY2hhciBsb2NhbGVTdHJpbmdbXSwKICBMYW5nQ29kZSAqIGxhbmcsCiAgUmVnaW9u
Q29kZSAqIHJlZ2lvbikgOwojIDE4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
TWFjTG9jYWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cwpMb2NhbGVPcGVyYXRpb25Db3VudExvY2Fs
ZXMoCiAgTG9jYWxlT3BlcmF0aW9uQ2xhc3Mgb3BDbGFzcywKICBJdGVtQ291bnQgKiBsb2NhbGVD
b3VudCkgOwojIDE5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjTG9jYWxl
cy5oIiAzCmV4dGVybiBPU1N0YXR1cwpMb2NhbGVPcGVyYXRpb25HZXRMb2NhbGVzKAogIExvY2Fs
ZU9wZXJhdGlvbkNsYXNzIG9wQ2xhc3MsCiAgSXRlbUNvdW50IG1heExvY2FsZUNvdW50LAogIEl0
ZW1Db3VudCAqIGFjdHVhbExvY2FsZUNvdW50LAogIExvY2FsZUFuZFZhcmlhbnQgbG9jYWxlVmFy
aWFudExpc3RbXSkgOwojIDIxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFj
TG9jYWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cwpMb2NhbGVHZXROYW1lKAogIExvY2FsZVJlZiBs
b2NhbGUsCiAgTG9jYWxlT3BlcmF0aW9uVmFyaWFudCBvcFZhcmlhbnQsCiAgTG9jYWxlTmFtZU1h
c2sgbmFtZU1hc2ssCiAgTG9jYWxlUmVmIGRpc3BsYXlMb2NhbGUsCiAgVW5pQ2hhckNvdW50IG1h
eE5hbWVMZW4sCiAgVW5pQ2hhckNvdW50ICogYWN0dWFsTmFtZUxlbiwKICBVbmlDaGFyIGRpc3Bs
YXlOYW1lW10pIDsKIyAyMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY0xv
Y2FsZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKTG9jYWxlQ291bnROYW1lcygKICBMb2NhbGVSZWYg
bG9jYWxlLAogIExvY2FsZU9wZXJhdGlvblZhcmlhbnQgb3BWYXJpYW50LAogIExvY2FsZU5hbWVN
YXNrIG5hbWVNYXNrLAogIEl0ZW1Db3VudCAqIG5hbWVDb3VudCkgOwojIDI1MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjTG9jYWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cwpM
b2NhbGVHZXRJbmROYW1lKAogIExvY2FsZVJlZiBsb2NhbGUsCiAgTG9jYWxlT3BlcmF0aW9uVmFy
aWFudCBvcFZhcmlhbnQsCiAgTG9jYWxlTmFtZU1hc2sgbmFtZU1hc2ssCiAgSXRlbUNvdW50IG5h
bWVJbmRleCwKICBVbmlDaGFyQ291bnQgbWF4TmFtZUxlbiwKICBVbmlDaGFyQ291bnQgKiBhY3R1
YWxOYW1lTGVuLAogIFVuaUNoYXIgZGlzcGxheU5hbWVbXSwKICBMb2NhbGVSZWYgKiBkaXNwbGF5
TG9jYWxlKSA7CiMgMzAyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNMb2Nh
bGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkxvY2FsZU9wZXJhdGlvbkdldE5hbWUoCiAgTG9jYWxl
T3BlcmF0aW9uQ2xhc3Mgb3BDbGFzcywKICBMb2NhbGVSZWYgZGlzcGxheUxvY2FsZSwKICBVbmlD
aGFyQ291bnQgbWF4TmFtZUxlbiwKICBVbmlDaGFyQ291bnQgKiBhY3R1YWxOYW1lTGVuLAogIFVu
aUNoYXIgZGlzcGxheU5hbWVbXSkgOwojIDMxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvTWFjTG9jYWxlcy5oIiAzCmV4dGVybiBPU1N0YXR1cwpMb2NhbGVPcGVyYXRpb25Db3Vu
dE5hbWVzKAogIExvY2FsZU9wZXJhdGlvbkNsYXNzIG9wQ2xhc3MsCiAgSXRlbUNvdW50ICogbmFt
ZUNvdW50KSA7CiMgMzMzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNMb2Nh
bGVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkxvY2FsZU9wZXJhdGlvbkdldEluZE5hbWUoCiAgTG9j
YWxlT3BlcmF0aW9uQ2xhc3Mgb3BDbGFzcywKICBJdGVtQ291bnQgbmFtZUluZGV4LAogIFVuaUNo
YXJDb3VudCBtYXhOYW1lTGVuLAogIFVuaUNoYXJDb3VudCAqIGFjdHVhbE5hbWVMZW4sCiAgVW5p
Q2hhciBkaXNwbGF5TmFtZVtdLAogIExvY2FsZVJlZiAqIGRpc3BsYXlMb2NhbGUpIDsKCgoKI3By
YWdtYSBwYWNrKHBvcCkKCgp9CiMgMTEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9DYXJib25Db3JlLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0RlYnVnZ2luZy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvRGVidWdnaW5nLmgiIDMKI2RlZmluZSBfX0RFQlVHR0lOR19fIAojIDM5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9EZWJ1Z2dpbmcuaCIgMwpleHRlcm4gIkMiIHsKIyA5MiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRGVidWdnaW5nLmgiIDMKI2RlZmluZSBr
Q29tcG9uZW50U2lnbmF0dXJlU3RyaW5nICJUaGlyZCBQYXJ0eSBDbGllbnQiCgoKI2RlZmluZSBD
T01QT05FTlRfU0lHTkFUVVJFICc/Kj8qJwoKI2RlZmluZSBRdW90ZUV4Y2VwdGlvblN0cmluZyh4
KSAjeAoKCgoKCiNkZWZpbmUgREVCVUdfTEVWRUxfUFJPRFVDVElPTiAwCiNkZWZpbmUgREVCVUdf
TEVWRUxfQlJFQUtfT05MWSAxCiNkZWZpbmUgREVCVUdfTEVWRUxfRVhURVJOQUwgMwojZGVmaW5l
IERFQlVHX0xFVkVMX0lOVEVSTkFMIDQKI2RlZmluZSBERUJVR0ZVTEwgREVCVUdfTEVWRUxfSU5U
RVJOQUwKIyAxMjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RlYnVnZ2luZy5o
IiAzCiNkZWZpbmUgREVCVUdMRVZFTCBERUJVR19MRVZFTF9QUk9EVUNUSU9OCgoKCgoKCgojZGVm
aW5lIERFQlVHX05PX09QVElPTlMgMAojIDE4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvRGVidWdnaW5nLmgiIDMKI2RlZmluZSBERUJVR0FTU0VSVE1TRyhjb21wb25lbnRTaWdu
YXR1cmUsb3B0aW9ucyxhc3NlcnRpb25TdHJpbmcsZXhjZXB0aW9uTGFiZWxTdHJpbmcsZXJyb3JT
dHJpbmcsZmlsZU5hbWUsbGluZU51bWJlcix2YWx1ZSkgCiMgMjA2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9EZWJ1Z2dpbmcuaCIgMwojZGVmaW5lIERFQlVHX0FTU0VSVF9DT01Q
T05FTlRfTkFNRV9TVFJJTkcga0NvbXBvbmVudFNpZ25hdHVyZVN0cmluZwoKCiNkZWZpbmUgREVC
VUdfQVNTRVJUX1BST0RVQ1RJT05fQ09ERSAoREVCVUdMRVZFTD09MCkKCgojZGVmaW5lIERFQlVH
X0FTU0VSVF9NRVNTQUdFKGNvbXBvbmVudE5hbWVTdHJpbmcsYXNzZXJ0aW9uU3RyaW5nLGV4Y2Vw
dGlvbkxhYmVsU3RyaW5nLGVycm9yU3RyaW5nLGZpbGVOYW1lLGxpbmVOdW1iZXIsdmFsdWUpIERF
QlVHQVNTRVJUTVNHKENPTVBPTkVOVF9TSUdOQVRVUkUsIERFQlVHX05PX09QVElPTlMsIGNvbXBv
bmVudE5hbWVTdHJpbmcgIjogIiBhc3NlcnRpb25TdHJpbmcsIGV4Y2VwdGlvbkxhYmVsU3RyaW5n
LCBlcnJvclN0cmluZywgZmlsZU5hbWUsIGxpbmVOdW1iZXIsIHZhbHVlKQoKCgoKCgojIDEgIi91
c3IvaW5jbHVkZS9Bc3NlcnRNYWNyb3MuaCIgMSAzIDQKIyA0NyAiL3Vzci9pbmNsdWRlL0Fzc2Vy
dE1hY3Jvcy5oIiAzIDQKI2RlZmluZSBfX0FTU0VSVE1BQ1JPU19fIAojIDI0NCAiL3Vzci9pbmNs
dWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmluZSBfX0RlYnVnX1N0cmluZyhtZXNzYWdlKSAK
IyAyNzcgIi91c3IvaW5jbHVkZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNkZWZpbmUgX19DaGVjayhh
c3NlcnRpb24pIAojIDI5MyAiL3Vzci9pbmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmlu
ZSBfX25DaGVjayhhc3NlcnRpb24pIF9fQ2hlY2soIShhc3NlcnRpb24pKQojIDMxNSAiL3Vzci9p
bmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmluZSBfX0NoZWNrX1N0cmluZyhhc3NlcnRp
b24sbWVzc2FnZSkgCiMgMzMxICIvdXNyL2luY2x1ZGUvQXNzZXJ0TWFjcm9zLmgiIDMgNAojZGVm
aW5lIF9fbkNoZWNrX1N0cmluZyhhc3NlcnRpb24sbWVzc2FnZSkgX19DaGVja19TdHJpbmcoIShh
c3NlcnRpb24pLCBtZXNzYWdlKQojIDM1MCAiL3Vzci9pbmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAz
IDQKI2RlZmluZSBfX0NoZWNrX25vRXJyKGVycm9yQ29kZSkgCiMgMzg2ICIvdXNyL2luY2x1ZGUv
QXNzZXJ0TWFjcm9zLmgiIDMgNAojZGVmaW5lIF9fQ2hlY2tfbm9FcnJfU3RyaW5nKGVycm9yQ29k
ZSxtZXNzYWdlKSAKIyA0MTkgIi91c3IvaW5jbHVkZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNkZWZp
bmUgX19WZXJpZnkoYXNzZXJ0aW9uKSBkbyB7IGlmICggIShhc3NlcnRpb24pICkgeyB9IH0gd2hp
bGUgKCAwICkKIyA0NDEgIi91c3IvaW5jbHVkZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNkZWZpbmUg
X19uVmVyaWZ5KGFzc2VydGlvbikgX19WZXJpZnkoIShhc3NlcnRpb24pKQojIDQ2NCAiL3Vzci9p
bmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmluZSBfX1ZlcmlmeV9TdHJpbmcoYXNzZXJ0
aW9uLG1lc3NhZ2UpIGRvIHsgaWYgKCAhKGFzc2VydGlvbikgKSB7IH0gfSB3aGlsZSAoIDAgKQoj
IDQ4NiAiL3Vzci9pbmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmluZSBfX25WZXJpZnlf
U3RyaW5nKGFzc2VydGlvbixtZXNzYWdlKSBfX1ZlcmlmeV9TdHJpbmcoIShhc3NlcnRpb24pLCBt
ZXNzYWdlKQojIDUwNiAiL3Vzci9pbmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmluZSBf
X1ZlcmlmeV9ub0VycihlcnJvckNvZGUpIGRvIHsgaWYgKCAwICE9IChlcnJvckNvZGUpICkgeyB9
IH0gd2hpbGUgKCAwICkKIyA1NDggIi91c3IvaW5jbHVkZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNk
ZWZpbmUgX19WZXJpZnlfbm9FcnJfU3RyaW5nKGVycm9yQ29kZSxtZXNzYWdlKSBkbyB7IGlmICgg
MCAhPSAoZXJyb3JDb2RlKSApIHsgfSB9IHdoaWxlICggMCApCiMgNTkxICIvdXNyL2luY2x1ZGUv
QXNzZXJ0TWFjcm9zLmgiIDMgNAojZGVmaW5lIF9fVmVyaWZ5X25vRXJyX0FjdGlvbihlcnJvckNv
ZGUsYWN0aW9uKSBpZiAoIDAgIT0gKGVycm9yQ29kZSkgKSB7IGFjdGlvbjsgfSBlbHNlIGRvIHt9
IHdoaWxlICgwKQojIDYzMCAiL3Vzci9pbmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmlu
ZSBfX1ZlcmlmeV9BY3Rpb24oYXNzZXJ0aW9uLGFjdGlvbikgaWYgKCBfX2J1aWx0aW5fZXhwZWN0
KCEoYXNzZXJ0aW9uKSwgMCkgKSB7IGFjdGlvbjsgfSBlbHNlIGRvIHt9IHdoaWxlICgwKQojIDY2
NyAiL3Vzci9pbmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmluZSBfX1JlcXVpcmUoYXNz
ZXJ0aW9uLGV4Y2VwdGlvbkxhYmVsKSBkbyB7IGlmICggX19idWlsdGluX2V4cGVjdCghKGFzc2Vy
dGlvbiksIDApICkgeyBnb3RvIGV4Y2VwdGlvbkxhYmVsOyB9IH0gd2hpbGUgKCAwICkKIyA2OTAg
Ii91c3IvaW5jbHVkZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNkZWZpbmUgX19uUmVxdWlyZShhc3Nl
cnRpb24sZXhjZXB0aW9uTGFiZWwpIF9fUmVxdWlyZSghKGFzc2VydGlvbiksIGV4Y2VwdGlvbkxh
YmVsKQojIDcxOCAiL3Vzci9pbmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmluZSBfX1Jl
cXVpcmVfQWN0aW9uKGFzc2VydGlvbixleGNlcHRpb25MYWJlbCxhY3Rpb24pIGRvIHsgaWYgKCBf
X2J1aWx0aW5fZXhwZWN0KCEoYXNzZXJ0aW9uKSwgMCkgKSB7IHsgYWN0aW9uOyB9IGdvdG8gZXhj
ZXB0aW9uTGFiZWw7IH0gfSB3aGlsZSAoIDAgKQojIDc0OCAiL3Vzci9pbmNsdWRlL0Fzc2VydE1h
Y3Jvcy5oIiAzIDQKI2RlZmluZSBfX25SZXF1aXJlX0FjdGlvbihhc3NlcnRpb24sZXhjZXB0aW9u
TGFiZWwsYWN0aW9uKSBfX1JlcXVpcmVfQWN0aW9uKCEoYXNzZXJ0aW9uKSwgZXhjZXB0aW9uTGFi
ZWwsIGFjdGlvbikKIyA3NjcgIi91c3IvaW5jbHVkZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNkZWZp
bmUgX19SZXF1aXJlX1F1aWV0KGFzc2VydGlvbixleGNlcHRpb25MYWJlbCkgZG8geyBpZiAoIF9f
YnVpbHRpbl9leHBlY3QoIShhc3NlcnRpb24pLCAwKSApIHsgZ290byBleGNlcHRpb25MYWJlbDsg
fSB9IHdoaWxlICggMCApCiMgNzc4ICIvdXNyL2luY2x1ZGUvQXNzZXJ0TWFjcm9zLmgiIDMgNAoj
ZGVmaW5lIF9fblJlcXVpcmVfUXVpZXQoYXNzZXJ0aW9uLGV4Y2VwdGlvbkxhYmVsKSBfX1JlcXVp
cmVfUXVpZXQoIShhc3NlcnRpb24pLCBleGNlcHRpb25MYWJlbCkKIyA4MDAgIi91c3IvaW5jbHVk
ZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNkZWZpbmUgX19SZXF1aXJlX0FjdGlvbl9RdWlldChhc3Nl
cnRpb24sZXhjZXB0aW9uTGFiZWwsYWN0aW9uKSBkbyB7IGlmICggX19idWlsdGluX2V4cGVjdCgh
KGFzc2VydGlvbiksIDApICkgeyB7IGFjdGlvbjsgfSBnb3RvIGV4Y2VwdGlvbkxhYmVsOyB9IH0g
d2hpbGUgKCAwICkKIyA4MTQgIi91c3IvaW5jbHVkZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNkZWZp
bmUgX19uUmVxdWlyZV9BY3Rpb25fUXVpZXQoYXNzZXJ0aW9uLGV4Y2VwdGlvbkxhYmVsLGFjdGlv
bikgX19SZXF1aXJlX0FjdGlvbl9RdWlldCghKGFzc2VydGlvbiksIGV4Y2VwdGlvbkxhYmVsLCBh
Y3Rpb24pCiMgODQxICIvdXNyL2luY2x1ZGUvQXNzZXJ0TWFjcm9zLmgiIDMgNAojZGVmaW5lIF9f
UmVxdWlyZV9TdHJpbmcoYXNzZXJ0aW9uLGV4Y2VwdGlvbkxhYmVsLG1lc3NhZ2UpIGRvIHsgaWYg
KCBfX2J1aWx0aW5fZXhwZWN0KCEoYXNzZXJ0aW9uKSwgMCkgKSB7IGdvdG8gZXhjZXB0aW9uTGFi
ZWw7IH0gfSB3aGlsZSAoIDAgKQojIDg2NSAiL3Vzci9pbmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAz
IDQKI2RlZmluZSBfX25SZXF1aXJlX1N0cmluZyhhc3NlcnRpb24sZXhjZXB0aW9uTGFiZWwsc3Ry
aW5nKSBfX1JlcXVpcmVfU3RyaW5nKCEoYXNzZXJ0aW9uKSwgZXhjZXB0aW9uTGFiZWwsIHN0cmlu
ZykKIyA4OTcgIi91c3IvaW5jbHVkZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNkZWZpbmUgX19SZXF1
aXJlX0FjdGlvbl9TdHJpbmcoYXNzZXJ0aW9uLGV4Y2VwdGlvbkxhYmVsLGFjdGlvbixtZXNzYWdl
KSBkbyB7IGlmICggX19idWlsdGluX2V4cGVjdCghKGFzc2VydGlvbiksIDApICkgeyB7IGFjdGlv
bjsgfSBnb3RvIGV4Y2VwdGlvbkxhYmVsOyB9IH0gd2hpbGUgKCAwICkKIyA5MjcgIi91c3IvaW5j
bHVkZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNkZWZpbmUgX19uUmVxdWlyZV9BY3Rpb25fU3RyaW5n
KGFzc2VydGlvbixleGNlcHRpb25MYWJlbCxhY3Rpb24sbWVzc2FnZSkgX19SZXF1aXJlX0FjdGlv
bl9TdHJpbmcoIShhc3NlcnRpb24pLCBleGNlcHRpb25MYWJlbCwgYWN0aW9uLCBtZXNzYWdlKQoj
IDk1MSAiL3Vzci9pbmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmluZSBfX1JlcXVpcmVf
bm9FcnIoZXJyb3JDb2RlLGV4Y2VwdGlvbkxhYmVsKSBkbyB7IGlmICggX19idWlsdGluX2V4cGVj
dCgwICE9IChlcnJvckNvZGUpLCAwKSApIHsgZ290byBleGNlcHRpb25MYWJlbDsgfSB9IHdoaWxl
ICggMCApCiMgMTAwMCAiL3Vzci9pbmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmluZSBf
X1JlcXVpcmVfbm9FcnJfQWN0aW9uKGVycm9yQ29kZSxleGNlcHRpb25MYWJlbCxhY3Rpb24pIGRv
IHsgaWYgKCBfX2J1aWx0aW5fZXhwZWN0KDAgIT0gKGVycm9yQ29kZSksIDApICkgeyB7IGFjdGlv
bjsgfSBnb3RvIGV4Y2VwdGlvbkxhYmVsOyB9IH0gd2hpbGUgKCAwICkKIyAxMDQ2ICIvdXNyL2lu
Y2x1ZGUvQXNzZXJ0TWFjcm9zLmgiIDMgNAojZGVmaW5lIF9fUmVxdWlyZV9ub0Vycl9RdWlldChl
cnJvckNvZGUsZXhjZXB0aW9uTGFiZWwpIGRvIHsgaWYgKCBfX2J1aWx0aW5fZXhwZWN0KDAgIT0g
KGVycm9yQ29kZSksIDApICkgeyBnb3RvIGV4Y2VwdGlvbkxhYmVsOyB9IH0gd2hpbGUgKCAwICkK
IyAxMDc2ICIvdXNyL2luY2x1ZGUvQXNzZXJ0TWFjcm9zLmgiIDMgNAojZGVmaW5lIF9fUmVxdWly
ZV9ub0Vycl9BY3Rpb25fUXVpZXQoZXJyb3JDb2RlLGV4Y2VwdGlvbkxhYmVsLGFjdGlvbikgZG8g
eyBpZiAoIF9fYnVpbHRpbl9leHBlY3QoMCAhPSAoZXJyb3JDb2RlKSwgMCkgKSB7IHsgYWN0aW9u
OyB9IGdvdG8gZXhjZXB0aW9uTGFiZWw7IH0gfSB3aGlsZSAoIDAgKQojIDExMTIgIi91c3IvaW5j
bHVkZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNkZWZpbmUgX19SZXF1aXJlX25vRXJyX1N0cmluZyhl
cnJvckNvZGUsZXhjZXB0aW9uTGFiZWwsbWVzc2FnZSkgZG8geyBpZiAoIF9fYnVpbHRpbl9leHBl
Y3QoMCAhPSAoZXJyb3JDb2RlKSwgMCkgKSB7IGdvdG8gZXhjZXB0aW9uTGFiZWw7IH0gfSB3aGls
ZSAoIDAgKQojIDExNjQgIi91c3IvaW5jbHVkZS9Bc3NlcnRNYWNyb3MuaCIgMyA0CiNkZWZpbmUg
X19SZXF1aXJlX25vRXJyX0FjdGlvbl9TdHJpbmcoZXJyb3JDb2RlLGV4Y2VwdGlvbkxhYmVsLGFj
dGlvbixtZXNzYWdlKSBkbyB7IGlmICggX19idWlsdGluX2V4cGVjdCgwICE9IChlcnJvckNvZGUp
LCAwKSApIHsgeyBhY3Rpb247IH0gZ290byBleGNlcHRpb25MYWJlbDsgfSB9IHdoaWxlICggMCAp
CiMgMTIxOSAiL3Vzci9pbmNsdWRlL0Fzc2VydE1hY3Jvcy5oIiAzIDQKI2RlZmluZSBfX0NoZWNr
X0NvbXBpbGVfVGltZShleHByKSBleHRlcm4gaW50IGNvbXBpbGVfdGltZV9hc3NlcnRfZmFpbGVk
WyAoIGV4cHIgKSA/IDEgOiAtMSBdIF9fYXR0cmlidXRlX18oICggdW51c2VkICkgKQojIDIyMCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRGVidWdnaW5nLmgiIDIgMwoKCgoKI2Rl
ZmluZSBBVFRBU0tMRVZFTDAoKSAoVGFza0xldmVsKCkgPT0gMCkKCgoKI2RlZmluZSBjaGVja190
YXNrbGV2ZWwwKCkgY2hlY2soQVRUQVNLTEVWRUwwKCkpCgoKCiNkZWZpbmUgY2hlY2tfdGFza2xl
dmVsMF9zdHJpbmcoY3N0cmluZykgY2hlY2tfc3RyaW5nKEFUVEFTS0xFVkVMMCgpLCBjc3RyaW5n
KQoKCgojZGVmaW5lIHZlcmlmeV90YXNrbGV2ZWwwKCkgdmVyaWZ5KEFUVEFTS0xFVkVMMCgpKQoK
CgojZGVmaW5lIHZlcmlmeV90YXNrbGV2ZWwwX3N0cmluZyhjc3RyaW5nKSB2ZXJpZnlfc3RyaW5n
KEFUVEFTS0xFVkVMMCgpLCBjc3RyaW5nKQoKCgojZGVmaW5lIHJlcXVpcmVfdGFza2xldmVsMChl
eGNlcHRpb25MYWJlbCkgcmVxdWlyZShBVFRBU0tMRVZFTDAoKSwgZXhjZXB0aW9uTGFiZWwpCgoK
CiNkZWZpbmUgcmVxdWlyZV90YXNrbGV2ZWwwX2FjdGlvbihleGNlcHRpb25MYWJlbCxhY3Rpb24p
IHJlcXVpcmVfYWN0aW9uKEFUVEFTS0xFVkVMMCgpLCBleGNlcHRpb25MYWJlbCwgYWN0aW9uKQoK
CgojZGVmaW5lIHJlcXVpcmVfdGFza2xldmVsMF9xdWlldChleGNlcHRpb25MYWJlbCkgcmVxdWly
ZV9xdWlldChBVFRBU0tMRVZFTDAoKSwgZXhjZXB0aW9uTGFiZWwpCgoKCiNkZWZpbmUgcmVxdWly
ZV90YXNrbGV2ZWwwX2FjdGlvbl9xdWlldChleGNlcHRpb25MYWJlbCxhY3Rpb24pIHJlcXVpcmVf
YWN0aW9uX3F1aWV0KEFUVEFTS0xFVkVMMCgpLCBleGNlcHRpb25MYWJlbCwgYWN0aW9uKQoKCgoj
ZGVmaW5lIHJlcXVpcmVfdGFza2xldmVsMF9zdHJpbmcoZXhjZXB0aW9uTGFiZWwsY3N0cmluZykg
cmVxdWlyZV9zdHJpbmcoQVRUQVNLTEVWRUwwKCksIGV4Y2VwdGlvbkxhYmVsLCBjc3RyaW5nKQoK
CgojZGVmaW5lIHJlcXVpcmVfdGFza2xldmVsMF9hY3Rpb25fc3RyaW5nKGV4Y2VwdGlvbkxhYmVs
LGFjdGlvbixjc3RyaW5nKSByZXF1aXJlX2FjdGlvbl9zdHJpbmcoQVRUQVNLTEVWRUwwKCksIGV4
Y2VwdGlvbkxhYmVsLCBhY3Rpb24sIGNzdHJpbmcpCiMgMjg2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9EZWJ1Z2dpbmcuaCIgMwojZGVmaW5lIERQUklOVEYoeCkgeyB9CiMgMzAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9EZWJ1Z2dpbmcuaCIgMwplbnVtIHsK
ICBrQmxlc3NlZEJ1c0Vycm9yQmFpdCA9IDB4NjhGMTY4RjEKfTsKIyAzNTMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0RlYnVnZ2luZy5oIiAzCmV4dGVybiB2b2lkCkRlYnVnQXNz
ZXJ0KAogIE9TVHlwZSBjb21wb25lbnRTaWduYXR1cmUsCiAgVUludDMyIG9wdGlvbnMsCiAgY29u
c3QgY2hhciAqIGFzc2VydGlvblN0cmluZywKICBjb25zdCBjaGFyICogZXhjZXB0aW9uTGFiZWxT
dHJpbmcsCiAgY29uc3QgY2hhciAqIGVycm9yU3RyaW5nLAogIGNvbnN0IGNoYXIgKiBmaWxlTmFt
ZSwKICBsb25nIGxpbmVOdW1iZXIsCiAgdm9pZCAqIHZhbHVlKSA7CgoKCgoKZW51bSB7CiAgazY4
a0ludGVycnVwdExldmVsTWFzayA9IDB4MDAwMDAwMDcsCiAga0luVkJMVGFza01hc2sgPSAweDAw
MDAwMDEwLAogIGtJbkRlZmVycmVkVGFza01hc2sgPSAweDAwMDAwMDIwLAogIGtJblNlY29uZGFy
eUludEhhbmRsZXJNYXNrID0gMHgwMDAwMDA0MCwKICBrSW5OZXN0ZWRJbnRlcnJ1cHRNYXNrID0g
MHgwMDAwMDA4MAp9OwojIDM5NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRGVi
dWdnaW5nLmgiIDMKZXh0ZXJuIFVJbnQzMgpUYXNrTGV2ZWwodm9pZCkgOwoKCgoKCmVudW0gewog
IGtDb21wb25lbnREZWJ1Z09wdGlvbiA9IDAKfTsKCmVudW0gewogIGtHZXREZWJ1Z09wdGlvbiA9
IDEsCiAga1NldERlYnVnT3B0aW9uID0gMgp9OwojIDQzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRGVidWdnaW5nLmgiIDMKdHlwZWRlZiB2b2lkICggKiBEZWJ1Z0NvbXBvbmVu
dENhbGxiYWNrUHJvY1B0cikoU0ludDMyIG9wdGlvblNlbGVjdG9yTnVtLCBVSW50MzIgY29tbWFu
ZCwgQm9vbGVhbiAqb3B0aW9uU2V0dGluZyk7CnR5cGVkZWYgRGVidWdDb21wb25lbnRDYWxsYmFj
a1Byb2NQdHIgRGVidWdDb21wb25lbnRDYWxsYmFja1VQUDsKIyA0NzAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0RlYnVnZ2luZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpOZXdEZWJ1
Z0NvbXBvbmVudCgKICBPU1R5cGUgY29tcG9uZW50U2lnbmF0dXJlLAogIENvbnN0U3RyMjU1UGFy
YW0gY29tcG9uZW50TmFtZSwKICBEZWJ1Z0NvbXBvbmVudENhbGxiYWNrVVBQIGNvbXBvbmVudENh
bGxiYWNrKSA7CiMgNTA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9EZWJ1Z2dp
bmcuaCIgMwpleHRlcm4gT1NTdGF0dXMKTmV3RGVidWdPcHRpb24oCiAgT1NUeXBlIGNvbXBvbmVu
dFNpZ25hdHVyZSwKICBTSW50MzIgb3B0aW9uU2VsZWN0b3JOdW0sCiAgQ29uc3RTdHIyNTVQYXJh
bSBvcHRpb25OYW1lKSA7CiMgNTM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9E
ZWJ1Z2dpbmcuaCIgMwpleHRlcm4gT1NTdGF0dXMKRGlzcG9zZURlYnVnQ29tcG9uZW50KE9TVHlw
ZSBjb21wb25lbnRTaWduYXR1cmUpIDsKIyA1NzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0RlYnVnZ2luZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpHZXREZWJ1Z0NvbXBvbmVudElu
Zm8oCiAgVUludDMyIGl0ZW1JbmRleCwKICBPU1R5cGUgKiBjb21wb25lbnRTaWduYXR1cmUsCiAg
U3RyMjU1IGNvbXBvbmVudE5hbWUpIDsKIyA2MjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0RlYnVnZ2luZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpHZXREZWJ1Z09wdGlvbkluZm8o
CiAgVUludDMyIGl0ZW1JbmRleCwKICBPU1R5cGUgY29tcG9uZW50U2lnbmF0dXJlLAogIFNJbnQz
MiAqIG9wdGlvblNlbGVjdG9yTnVtLAogIFN0cjI1NSBvcHRpb25OYW1lLAogIEJvb2xlYW4gKiBv
cHRpb25TZXR0aW5nKSA7CiMgNjU5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9E
ZWJ1Z2dpbmcuaCIgMwpleHRlcm4gT1NTdGF0dXMKU2V0RGVidWdPcHRpb25WYWx1ZSgKICBPU1R5
cGUgY29tcG9uZW50U2lnbmF0dXJlLAogIFNJbnQzMiBvcHRpb25TZWxlY3Rvck51bSwKICBCb29s
ZWFuIG5ld09wdGlvblNldHRpbmcpIDsKIyA3MDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0RlYnVnZ2luZy5oIiAzCnR5cGVkZWYgdm9pZCAoICogRGVidWdBc3NlcnRPdXRwdXRI
YW5kbGVyUHJvY1B0cikoT1NUeXBlIGNvbXBvbmVudFNpZ25hdHVyZSwgVUludDMyIG9wdGlvbnMs
IGNvbnN0IGNoYXIgKmFzc2VydGlvblN0cmluZywgY29uc3QgY2hhciAqZXhjZXB0aW9uTGFiZWxT
dHJpbmcsIGNvbnN0IGNoYXIgKmVycm9yU3RyaW5nLCBjb25zdCBjaGFyICpmaWxlTmFtZSwgbG9u
ZyBsaW5lTnVtYmVyLCB2b2lkICp2YWx1ZSwgQ29uc3RTdHIyNTVQYXJhbSBvdXRwdXRNc2cpOwp0
eXBlZGVmIERlYnVnQXNzZXJ0T3V0cHV0SGFuZGxlclByb2NQdHIgRGVidWdBc3NlcnRPdXRwdXRI
YW5kbGVyVVBQOwojIDcyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRGVidWdn
aW5nLmgiIDMKZXh0ZXJuIHZvaWQKSW5zdGFsbERlYnVnQXNzZXJ0T3V0cHV0SGFuZGxlcihEZWJ1
Z0Fzc2VydE91dHB1dEhhbmRsZXJVUFAgaGFuZGxlcikgOwojIDgxMyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvRGVidWdnaW5nLmgiIDMKZXh0ZXJuIGNvbnN0IGNoYXIgKgpHZXRN
YWNPU1N0YXR1c0Vycm9yU3RyaW5nKE9TU3RhdHVzIGVycikgOwojIDg1NCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvRGVidWdnaW5nLmgiIDMKZXh0ZXJuIGNvbnN0IGNoYXIgKgpH
ZXRNYWNPU1N0YXR1c0NvbW1lbnRTdHJpbmcoT1NTdGF0dXMgZXJyKSA7CiMgODcxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9EZWJ1Z2dpbmcuaCIgMwpleHRlcm4gRGVidWdDb21w
b25lbnRDYWxsYmFja1VQUApOZXdEZWJ1Z0NvbXBvbmVudENhbGxiYWNrVVBQKERlYnVnQ29tcG9u
ZW50Q2FsbGJhY2tQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgODgyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9EZWJ1Z2dpbmcuaCIgMwpleHRlcm4gRGVidWdBc3NlcnRPdXRwdXRI
YW5kbGVyVVBQCk5ld0RlYnVnQXNzZXJ0T3V0cHV0SGFuZGxlclVQUChEZWJ1Z0Fzc2VydE91dHB1
dEhhbmRsZXJQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgODkzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9EZWJ1Z2dpbmcuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlRGVidWdDb21w
b25lbnRDYWxsYmFja1VQUChEZWJ1Z0NvbXBvbmVudENhbGxiYWNrVVBQIHVzZXJVUFApIDsKIyA5
MDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RlYnVnZ2luZy5oIiAzCmV4dGVy
biB2b2lkCkRpc3Bvc2VEZWJ1Z0Fzc2VydE91dHB1dEhhbmRsZXJVUFAoRGVidWdBc3NlcnRPdXRw
dXRIYW5kbGVyVVBQIHVzZXJVUFApIDsKIyA5MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0RlYnVnZ2luZy5oIiAzCmV4dGVybiB2b2lkCkludm9rZURlYnVnQ29tcG9uZW50Q2Fs
bGJhY2tVUFAoCiAgU0ludDMyIG9wdGlvblNlbGVjdG9yTnVtLAogIFVJbnQzMiBjb21tYW5kLAog
IEJvb2xlYW4gKiBvcHRpb25TZXR0aW5nLAogIERlYnVnQ29tcG9uZW50Q2FsbGJhY2tVUFAgdXNl
clVQUCkgOwojIDkzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRGVidWdnaW5n
LmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlRGVidWdBc3NlcnRPdXRwdXRIYW5kbGVyVVBQKAogIE9T
VHlwZSBjb21wb25lbnRTaWduYXR1cmUsCiAgVUludDMyIG9wdGlvbnMsCiAgY29uc3QgY2hhciAq
IGFzc2VydGlvblN0cmluZywKICBjb25zdCBjaGFyICogZXhjZXB0aW9uTGFiZWxTdHJpbmcsCiAg
Y29uc3QgY2hhciAqIGVycm9yU3RyaW5nLAogIGNvbnN0IGNoYXIgKiBmaWxlTmFtZSwKICBsb25n
IGxpbmVOdW1iZXIsCiAgdm9pZCAqIHZhbHVlLAogIENvbnN0U3RyMjU1UGFyYW0gb3V0cHV0TXNn
LAogIERlYnVnQXNzZXJ0T3V0cHV0SGFuZGxlclVQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUg
RGVidWdDb21wb25lbnRDYWxsYmFja1VQUCBOZXdEZWJ1Z0NvbXBvbmVudENhbGxiYWNrVVBQKERl
YnVnQ29tcG9uZW50Q2FsbGJhY2tQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91
dGluZTsgfQogICAgaW5saW5lIERlYnVnQXNzZXJ0T3V0cHV0SGFuZGxlclVQUCBOZXdEZWJ1Z0Fz
c2VydE91dHB1dEhhbmRsZXJVUFAoRGVidWdBc3NlcnRPdXRwdXRIYW5kbGVyUHJvY1B0ciB1c2Vy
Um91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VE
ZWJ1Z0NvbXBvbmVudENhbGxiYWNrVVBQKERlYnVnQ29tcG9uZW50Q2FsbGJhY2tVUFApIHsgfQog
ICAgaW5saW5lIHZvaWQgRGlzcG9zZURlYnVnQXNzZXJ0T3V0cHV0SGFuZGxlclVQUChEZWJ1Z0Fz
c2VydE91dHB1dEhhbmRsZXJVUFApIHsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlRGVidWdDb21w
b25lbnRDYWxsYmFja1VQUChTSW50MzIgb3B0aW9uU2VsZWN0b3JOdW0sIFVJbnQzMiBjb21tYW5k
LCBCb29sZWFuICogb3B0aW9uU2V0dGluZywgRGVidWdDb21wb25lbnRDYWxsYmFja1VQUCB1c2Vy
VVBQKSB7ICgqdXNlclVQUCkob3B0aW9uU2VsZWN0b3JOdW0sIGNvbW1hbmQsIG9wdGlvblNldHRp
bmcpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VEZWJ1Z0Fzc2VydE91dHB1dEhhbmRsZXJVUFAo
T1NUeXBlIGNvbXBvbmVudFNpZ25hdHVyZSwgVUludDMyIG9wdGlvbnMsIGNvbnN0IGNoYXIgKiBh
c3NlcnRpb25TdHJpbmcsIGNvbnN0IGNoYXIgKiBleGNlcHRpb25MYWJlbFN0cmluZywgY29uc3Qg
Y2hhciAqIGVycm9yU3RyaW5nLCBjb25zdCBjaGFyICogZmlsZU5hbWUsIGxvbmcgbGluZU51bWJl
ciwgdm9pZCAqIHZhbHVlLCBDb25zdFN0cjI1NVBhcmFtIG91dHB1dE1zZywgRGVidWdBc3NlcnRP
dXRwdXRIYW5kbGVyVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKShjb21wb25lbnRTaWduYXR1cmUs
IG9wdGlvbnMsIGFzc2VydGlvblN0cmluZywgZXhjZXB0aW9uTGFiZWxTdHJpbmcsIGVycm9yU3Ry
aW5nLCBmaWxlTmFtZSwgbGluZU51bWJlciwgdmFsdWUsIG91dHB1dE1zZyk7IH0KIyA5NjMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RlYnVnZ2luZy5oIiAzCn0KIyAxMTQgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkNvcmUuaCIgMiAzCgoKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUExTdHJpbmdGdW5jcy5oIiAxIDMKIyAx
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUExTdHJpbmdGdW5jcy5oIiAzCiNk
ZWZpbmUgX19QTFNUUklOR0ZVTkNTX18gCiMgMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1BMU3RyaW5nRnVuY3MuaCIgMwpleHRlcm4gIkMiIHsKIyA3NSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvUExTdHJpbmdGdW5jcy5oIiAzCmV4dGVybiBzaG9ydApQTHN0
cmNtcCgKICBDb25zdFN0cjI1NVBhcmFtIHN0cjEsCiAgQ29uc3RTdHIyNTVQYXJhbSBzdHIyKSBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9QTFN0cmluZ0Z1bmNzLmgiIDMKZXh0ZXJuIHNob3J0ClBMc3RybmNtcCgKICBD
b25zdFN0cjI1NVBhcmFtIHN0cjEsCiAgQ29uc3RTdHIyNTVQYXJhbSBzdHIyLAogIHNob3J0IG51
bSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDE3MCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvUExTdHJpbmdGdW5jcy5oIiAzCmV4dGVybiBTdHJpbmdQdHIKUExzdHJj
cHkoCiAgU3RyaW5nUHRyIGRlc3QsCiAgQ29uc3RTdHIyNTVQYXJhbSBzb3VyY2UpIF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL1BMU3RyaW5nRnVuY3MuaCIgMwpleHRlcm4gU3RyaW5nUHRyClBMc3RybmNweSgKICBTdHJp
bmdQdHIgZGVzdCwKICBDb25zdFN0cjI1NVBhcmFtIHNvdXJjZSwKICBzaG9ydCBudW0pIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyNjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1BMU3RyaW5nRnVuY3MuaCIgMwpleHRlcm4gU3RyaW5nUHRyClBMc3RyY2F0KAogIFN0
cmluZ1B0ciBzdHIsCiAgQ29uc3RTdHIyNTVQYXJhbSBhcHBlbmQpIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKIyAzMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1BMU3Ry
aW5nRnVuY3MuaCIgMwpleHRlcm4gU3RyaW5nUHRyClBMc3RybmNhdCgKICBTdHJpbmdQdHIgc3Ry
MSwKICBDb25zdFN0cjI1NVBhcmFtIGFwcGVuZCwKICBzaG9ydCBudW0pIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKIyAzNTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1BM
U3RyaW5nRnVuY3MuaCIgMwpleHRlcm4gUHRyClBMc3RyY2hyKAogIENvbnN0U3RyMjU1UGFyYW0g
c3RyMSwKICBzaG9ydCBjaDEpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA0MDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1BMU3RyaW5nRnVuY3MuaCIgMwpleHRlcm4g
UHRyClBMc3RycmNocigKICBDb25zdFN0cjI1NVBhcmFtIHN0cjEsCiAgc2hvcnQgY2gxKSBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNDQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9QTFN0cmluZ0Z1bmNzLmgiIDMKZXh0ZXJuIFB0cgpQTHN0cnBicmsoCiAgQ29uc3RT
dHIyNTVQYXJhbSBzdHIxLAogIENvbnN0U3RyMjU1UGFyYW0gY2hhclNldCkgX19hdHRyaWJ1dGVf
XygoZGVwcmVjYXRlZCkpOwojIDQ5MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
UExTdHJpbmdGdW5jcy5oIiAzCmV4dGVybiBzaG9ydApQTHN0cnNwbigKICBDb25zdFN0cjI1NVBh
cmFtIHN0cjEsCiAgQ29uc3RTdHIyNTVQYXJhbSBjaGFyU2V0KSBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CiMgNTM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTFN0cmlu
Z0Z1bmNzLmgiIDMKZXh0ZXJuIFB0cgpQTHN0cnN0cigKICBDb25zdFN0cjI1NVBhcmFtIHN0cjEs
CiAgQ29uc3RTdHIyNTVQYXJhbSBzZWFyY2hTdHIpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQp
KTsKIyA1NzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1BMU3RyaW5nRnVuY3Mu
aCIgMwpleHRlcm4gc2hvcnQKUExzdHJsZW4oQ29uc3RTdHIyNTVQYXJhbSBzdHIpIF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA2MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL1BMU3RyaW5nRnVuY3MuaCIgMwpleHRlcm4gc2hvcnQKUExwb3MoCiAgQ29uc3RTdHIyNTVQ
YXJhbSBzdHIxLAogIENvbnN0U3RyMjU1UGFyYW0gc2VhcmNoU3RyKSBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7CgoKCgoKfQojIDExOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQ2FyYm9uQ29yZS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9Ecml2ZXJTeW5jaHJvbml6YXRpb24uaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0RyaXZlclN5bmNocm9uaXphdGlvbi5oIiAzCiNkZWZpbmUgX19EUklW
RVJTWU5DSFJPTklaQVRJT05fXyAKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvRHJpdmVyU3luY2hyb25pemF0aW9uLmgiIDMKZXh0ZXJuICJDIiB7CiMgNzcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RyaXZlclN5bmNocm9uaXphdGlvbi5oIiAzCmV4dGVy
biBCb29sZWFuCkNvbXBhcmVBbmRTd2FwKAogIFVJbnQzMiBvbGRWYWx1ZSwKICBVSW50MzIgbmV3
VmFsdWUsCiAgVUludDMyICogYWRkcmVzcykgOwojIDEyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRHJpdmVyU3luY2hyb25pemF0aW9uLmgiIDMKZXh0ZXJuIEJvb2xlYW4KVGVz
dEFuZENsZWFyKAogIFVJbnQzMiBiaXQsCiAgVUludDggKiBhZGRyZXNzKSA7CiMgMTY2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Ecml2ZXJTeW5jaHJvbml6YXRpb24uaCIgMwpl
eHRlcm4gQm9vbGVhbgpUZXN0QW5kU2V0KAogIFVJbnQzMiBiaXQsCiAgVUludDggKiBhZGRyZXNz
KSA7CiMgMjAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Ecml2ZXJTeW5jaHJv
bml6YXRpb24uaCIgMwpleHRlcm4gU0ludDgKSW5jcmVtZW50QXRvbWljOChTSW50OCAqIGFkZHJl
c3MpIDsKIyAyMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RyaXZlclN5bmNo
cm9uaXphdGlvbi5oIiAzCmV4dGVybiBTSW50OApEZWNyZW1lbnRBdG9taWM4KFNJbnQ4ICogYWRk
cmVzcykgOwojIDI3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRHJpdmVyU3lu
Y2hyb25pemF0aW9uLmgiIDMKZXh0ZXJuIFNJbnQ4CkFkZEF0b21pYzgoCiAgU0ludDMyIGFtb3Vu
dCwKICBTSW50OCAqIGFkZHJlc3MpIDsKIyAzMDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0RyaXZlclN5bmNocm9uaXphdGlvbi5oIiAzCmV4dGVybiBVSW50OApCaXRBbmRBdG9t
aWM4KAogIFVJbnQzMiBtYXNrLAogIFVJbnQ4ICogYWRkcmVzcykgOwojIDM0OCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRHJpdmVyU3luY2hyb25pemF0aW9uLmgiIDMKZXh0ZXJu
IFVJbnQ4CkJpdE9yQXRvbWljOCgKICBVSW50MzIgbWFzaywKICBVSW50OCAqIGFkZHJlc3MpIDsK
IyAzODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RyaXZlclN5bmNocm9uaXph
dGlvbi5oIiAzCmV4dGVybiBVSW50OApCaXRYb3JBdG9taWM4KAogIFVJbnQzMiBtYXNrLAogIFVJ
bnQ4ICogYWRkcmVzcykgOwojIDQyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
RHJpdmVyU3luY2hyb25pemF0aW9uLmgiIDMKZXh0ZXJuIFNJbnQxNgpJbmNyZW1lbnRBdG9taWMx
NihTSW50MTYgKiBhZGRyZXNzKSA7CiMgNDU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9Ecml2ZXJTeW5jaHJvbml6YXRpb24uaCIgMwpleHRlcm4gU0ludDE2CkRlY3JlbWVudEF0
b21pYzE2KFNJbnQxNiAqIGFkZHJlc3MpIDsKIyA0OTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0RyaXZlclN5bmNocm9uaXphdGlvbi5oIiAzCmV4dGVybiBTSW50MTYKQWRkQXRv
bWljMTYoCiAgU0ludDMyIGFtb3VudCwKICBTSW50MTYgKiBhZGRyZXNzKSA7CiMgNTMwICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Ecml2ZXJTeW5jaHJvbml6YXRpb24uaCIgMwpl
eHRlcm4gVUludDE2CkJpdEFuZEF0b21pYzE2KAogIFVJbnQzMiBtYXNrLAogIFVJbnQxNiAqIGFk
ZHJlc3MpIDsKIyA1NjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RyaXZlclN5
bmNocm9uaXphdGlvbi5oIiAzCmV4dGVybiBVSW50MTYKQml0T3JBdG9taWMxNigKICBVSW50MzIg
bWFzaywKICBVSW50MTYgKiBhZGRyZXNzKSA7CiMgNjA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9Ecml2ZXJTeW5jaHJvbml6YXRpb24uaCIgMwpleHRlcm4gVUludDE2CkJpdFhv
ckF0b21pYzE2KAogIFVJbnQzMiBtYXNrLAogIFVJbnQxNiAqIGFkZHJlc3MpIDsKIyA2NDMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RyaXZlclN5bmNocm9uaXphdGlvbi5oIiAz
CmV4dGVybiBTSW50MzIKSW5jcmVtZW50QXRvbWljKFNJbnQzMiAqIGFkZHJlc3MpIDsKIyA2NzYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RyaXZlclN5bmNocm9uaXphdGlvbi5o
IiAzCmV4dGVybiBTSW50MzIKRGVjcmVtZW50QXRvbWljKFNJbnQzMiAqIGFkZHJlc3MpIDsKIyA3
MTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RyaXZlclN5bmNocm9uaXphdGlv
bi5oIiAzCmV4dGVybiBTSW50MzIKQWRkQXRvbWljKAogIFNJbnQzMiBhbW91bnQsCiAgU0ludDMy
ICogYWRkcmVzcykgOwojIDc1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRHJp
dmVyU3luY2hyb25pemF0aW9uLmgiIDMKZXh0ZXJuIFVJbnQzMgpCaXRBbmRBdG9taWMoCiAgVUlu
dDMyIG1hc2ssCiAgVUludDMyICogYWRkcmVzcykgOwojIDc5MCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvRHJpdmVyU3luY2hyb25pemF0aW9uLmgiIDMKZXh0ZXJuIFVJbnQzMgpC
aXRPckF0b21pYygKICBVSW50MzIgbWFzaywKICBVSW50MzIgKiBhZGRyZXNzKSA7CiMgODI5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Ecml2ZXJTeW5jaHJvbml6YXRpb24uaCIg
MwpleHRlcm4gVUludDMyCkJpdFhvckF0b21pYygKICBVSW50MzIgbWFzaywKICBVSW50MzIgKiBh
ZGRyZXNzKSA7CgoKCgp9CiMgMTIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9D
YXJib25Db3JlLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L0RyaXZlclNlcnZpY2VzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9Ecml2ZXJTZXJ2aWNlcy5oIiAzCiNkZWZpbmUgX19EUklWRVJTRVJWSUNFU19fIAojIDMy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Ecml2ZXJTZXJ2aWNlcy5oIiAzCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjaGluZUV4Y2VwdGlvbnMuaCIg
MSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY2hpbmVFeGNlcHRp
b25zLmgiIDMKI2RlZmluZSBfX01BQ0hJTkVFWENFUFRJT05TX18gCiMgMjkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL01hY2hpbmVFeGNlcHRpb25zLmgiIDMKIyAxICIvdXNyL2xp
Yi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL3htbWludHJpbi5oIiAxIDMg
NAojIDMzICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL3ht
bWludHJpbi5oIiAzIDQKI2RlZmluZSBfWE1NSU5UUklOX0hfSU5DTFVERUQgCgoKCgoKCiMgMSAi
L3Vzci9saWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9tbWludHJpbi5o
IiAxIDMgNAojIDMzICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNs
dWRlL21taW50cmluLmgiIDMgNAojZGVmaW5lIF9NTUlOVFJJTl9IX0lOQ0xVREVEIAoKCgoKCgoK
dHlwZWRlZiBsb25nIGxvbmcgX19tNjQgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAo
OCksIF9fbWF5X2FsaWFzX18pKTsKCgp0eXBlZGVmIGludCBfX3Yyc2kgX19hdHRyaWJ1dGVfXyAo
KF9fdmVjdG9yX3NpemVfXyAoOCkpKTsKdHlwZWRlZiBzaG9ydCBfX3Y0aGkgX19hdHRyaWJ1dGVf
XyAoKF9fdmVjdG9yX3NpemVfXyAoOCkpKTsKdHlwZWRlZiBjaGFyIF9fdjhxaSBfX2F0dHJpYnV0
ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICg4KSkpOwoKCiNkZWZpbmUgX19hbHdheXNfaW5saW5lX18g
X19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fCgoKCiN1bmRlZiBfX1NUQVRJQ19JTkxJTkUK
CgoKI2RlZmluZSBfX1NUQVRJQ19JTkxJTkUgc3RhdGljIF9faW5saW5lCgoKCgoKCnN0YXRpYyBp
bmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX2VtcHR5ICh2b2lkKQp7CiAgX19idWlsdGluX2lhMzJfZW1tcyAoKTsKfQoKCnN0YXRp
YyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVn
X18pKQoKX21fZW1wdHkgKHZvaWQpCnsKICBfbW1fZW1wdHkgKCk7Cn0KCgoKc3RhdGljIGlubGlu
ZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoK
X21tX2N2dHNpMzJfc2k2NCAoaW50IF9faSkKewogIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9p
YTMyX3ZlY19pbml0X3Yyc2kgKF9faSwgMCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9mcm9tX2ludCAo
aW50IF9faSkKewogIHJldHVybiBfbW1fY3Z0c2kzMl9zaTY0IChfX2kpOwp9CgoKCgoKCnN0YXRp
YyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tX2Zyb21faW50NjQgKGxvbmcgbG9uZyBfX2kpCnsKICByZXR1cm4gKF9fbTY0KSBf
X2k7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY3Z0c2k2NF9tNjQgKGxvbmcgbG9uZyBfX2kpCnsKICBy
ZXR1cm4gKF9fbTY0KSBfX2k7Cn0KCgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dHNpNjR4X3NpNjQgKGxv
bmcgbG9uZyBfX2kpCnsKICByZXR1cm4gKF9fbTY0KSBfX2k7Cn0KCgpzdGF0aWMgaW5saW5lIF9f
bTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1f
c2V0X3BpNjR4IChsb25nIGxvbmcgX19pKQp7CiAgcmV0dXJuIChfX202NCkgX19pOwp9CgoKCgpz
dGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2Rl
YnVnX18pKQoKX21tX2N2dHNpNjRfc2kzMiAoX19tNjQgX19pKQp7CiAgcmV0dXJuIF9fYnVpbHRp
bl9pYTMyX3ZlY19leHRfdjJzaSAoKF9fdjJzaSlfX2ksIDApOwp9CgoKc3RhdGljIGlubGluZSBp
bnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tX3Rv
X2ludCAoX19tNjQgX19pKQp7CiAgcmV0dXJuIF9tbV9jdnRzaTY0X3NpMzIgKF9faSk7Cn0KCgoK
CgoKc3RhdGljIGlubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fKSkKCl9tX3RvX2ludDY0IChfX202NCBfX2kpCnsKICByZXR1cm4gKGxv
bmcgbG9uZylfX2k7Cn0KCgpzdGF0aWMgaW5saW5lIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dG02NF9zaTY0IChfX202NCBf
X2kpCnsKICByZXR1cm4gKGxvbmcgbG9uZylfX2k7Cn0KCgoKc3RhdGljIGlubGluZSBsb25nIGxv
bmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9j
dnRzaTY0X3NpNjR4IChfX202NCBfX2kpCnsKICByZXR1cm4gKGxvbmcgbG9uZylfX2k7Cn0KCgoK
CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg
X19ub2RlYnVnX18pKQoKX21tX3BhY2tzX3BpMTYgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsK
ICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wYWNrc3N3YiAoKF9fdjRoaSlfX20xLCAo
X192NGhpKV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcGFja3Nzd2IgKF9fbTY0IF9fbTEsIF9f
bTY0IF9fbTIpCnsKICByZXR1cm4gX21tX3BhY2tzX3BpMTYgKF9fbTEsIF9fbTIpOwp9CgoKCgoK
c3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19u
b2RlYnVnX18pKQoKX21tX3BhY2tzX3BpMzIgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICBy
ZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wYWNrc3NkdyAoKF9fdjJzaSlfX20xLCAoX192
MnNpKV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcGFja3NzZHcgKF9fbTY0IF9fbTEsIF9fbTY0
IF9fbTIpCnsKICByZXR1cm4gX21tX3BhY2tzX3BpMzIgKF9fbTEsIF9fbTIpOwp9CgoKCgoKc3Rh
dGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2Rl
YnVnX18pKQoKX21tX3BhY2tzX3B1MTYgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICByZXR1
cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wYWNrdXN3YiAoKF9fdjRoaSlfX20xLCAoX192NGhp
KV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcGFja3Vzd2IgKF9fbTY0IF9fbTEsIF9fbTY0IF9f
bTIpCnsKICByZXR1cm4gX21tX3BhY2tzX3B1MTYgKF9fbTEsIF9fbTIpOwp9CgoKCgpzdGF0aWMg
aW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdf
XykpCgpfbW1fdW5wYWNraGlfcGk4IChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgcmV0dXJu
IChfX202NCkgX19idWlsdGluX2lhMzJfcHVucGNraGJ3ICgoX192OHFpKV9fbTEsIChfX3Y4cWkp
X19tMik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wdW5wY2toYncgKF9fbTY0IF9fbTEsIF9fbTY0IF9f
bTIpCnsKICByZXR1cm4gX21tX3VucGFja2hpX3BpOCAoX19tMSwgX19tMik7Cn0KCgoKCnN0YXRp
YyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV91bnBhY2toaV9waTE2IChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgcmV0
dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHVucGNraHdkICgoX192NGhpKV9fbTEsIChfX3Y0
aGkpX19tMik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wdW5wY2tod2QgKF9fbTY0IF9fbTEsIF9fbTY0
IF9fbTIpCnsKICByZXR1cm4gX21tX3VucGFja2hpX3BpMTYgKF9fbTEsIF9fbTIpOwp9CgoKCgpz
dGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25v
ZGVidWdfXykpCgpfbW1fdW5wYWNraGlfcGkzMiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewog
IHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3B1bnBja2hkcSAoKF9fdjJzaSlfX20xLCAo
X192MnNpKV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcHVucGNraGRxIChfX202NCBfX20xLCBf
X202NCBfX20yKQp7CiAgcmV0dXJuIF9tbV91bnBhY2toaV9waTMyIChfX20xLCBfX20yKTsKfQoK
CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg
X19ub2RlYnVnX18pKQoKX21tX3VucGFja2xvX3BpOCAoX19tNjQgX19tMSwgX19tNjQgX19tMikK
ewogIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3B1bnBja2xidyAoKF9fdjhxaSlfX20x
LCAoX192OHFpKV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcHVucGNrbGJ3IChfX202NCBfX20x
LCBfX202NCBfX20yKQp7CiAgcmV0dXJuIF9tbV91bnBhY2tsb19waTggKF9fbTEsIF9fbTIpOwp9
CgoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fdW5wYWNrbG9fcGkxNiAoX19tNjQgX19tMSwgX19tNjQgX19t
MikKewogIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3B1bnBja2x3ZCAoKF9fdjRoaSlf
X20xLCAoX192NGhpKV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcHVucGNrbHdkIChfX202NCBf
X20xLCBfX202NCBfX20yKQp7CiAgcmV0dXJuIF9tbV91bnBhY2tsb19waTE2IChfX20xLCBfX20y
KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXywgX19ub2RlYnVnX18pKQoKX21tX3VucGFja2xvX3BpMzIgKF9fbTY0IF9fbTEsIF9fbTY0
IF9fbTIpCnsKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wdW5wY2tsZHEgKChfX3Yy
c2kpX19tMSwgKF9fdjJzaSlfX20yKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tX3B1bnBja2xkcSAoX19t
NjQgX19tMSwgX19tNjQgX19tMikKewogIHJldHVybiBfbW1fdW5wYWNrbG9fcGkzMiAoX19tMSwg
X19tMik7Cn0KCgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2FkZF9waTggKF9fbTY0IF9fbTEsIF9fbTY0IF9f
bTIpCnsKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wYWRkYiAoKF9fdjhxaSlfX20x
LCAoX192OHFpKV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcGFkZGIgKF9fbTY0IF9fbTEsIF9f
bTY0IF9fbTIpCnsKICByZXR1cm4gX21tX2FkZF9waTggKF9fbTEsIF9fbTIpOwp9CgoKCnN0YXRp
YyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV9hZGRfcGkxNiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJldHVybiAo
X19tNjQpIF9fYnVpbHRpbl9pYTMyX3BhZGR3ICgoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7
Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbV9wYWRkdyAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJl
dHVybiBfbW1fYWRkX3BpMTYgKF9fbTEsIF9fbTIpOwp9CgoKCnN0YXRpYyBpbmxpbmUgX19tNjQg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9hZGRf
cGkzMiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJldHVybiAoX19tNjQpIF9fYnVpbHRp
bl9pYTMyX3BhZGRkICgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7Cn0KCgpzdGF0aWMgaW5s
aW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykp
CgpfbV9wYWRkZCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJldHVybiBfbW1fYWRkX3Bp
MzIgKF9fbTEsIF9fbTIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fYWRkX3NpNjQgKF9fbTY0IF9f
bTEsIF9fbTY0IF9fbTIpCnsKCiAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcGFkZHEg
KF9fbTEsIF9fbTIpOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2FkZHNfcGk4IChfX202NCBfX20x
LCBfX202NCBfX20yKQp7CiAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcGFkZHNiICgo
X192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wYWRkc2IgKF9f
bTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICByZXR1cm4gX21tX2FkZHNfcGk4IChfX20xLCBfX20y
KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXywgX19ub2RlYnVnX18pKQoKX21tX2FkZHNfcGkxNiAoX19tNjQgX19tMSwgX19tNjQgX19t
MikKewogIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BhZGRzdyAoKF9fdjRoaSlfX20x
LCAoX192NGhpKV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcGFkZHN3IChfX202NCBfX20xLCBf
X202NCBfX20yKQp7CiAgcmV0dXJuIF9tbV9hZGRzX3BpMTYgKF9fbTEsIF9fbTIpOwp9CgoKCgpz
dGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25v
ZGVidWdfXykpCgpfbW1fYWRkc19wdTggKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICByZXR1
cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wYWRkdXNiICgoX192OHFpKV9fbTEsIChfX3Y4cWkp
X19tMik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wYWRkdXNiIChfX202NCBfX20xLCBfX202NCBfX20y
KQp7CiAgcmV0dXJuIF9tbV9hZGRzX3B1OCAoX19tMSwgX19tMik7Cn0KCgoKCnN0YXRpYyBpbmxp
bmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkK
Cl9tbV9hZGRzX3B1MTYgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICByZXR1cm4gKF9fbTY0
KSBfX2J1aWx0aW5faWEzMl9wYWRkdXN3ICgoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7Cn0K
CgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf
X25vZGVidWdfXykpCgpfbV9wYWRkdXN3IChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgcmV0
dXJuIF9tbV9hZGRzX3B1MTYgKF9fbTEsIF9fbTIpOwp9CgoKCnN0YXRpYyBpbmxpbmUgX19tNjQg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zdWJf
cGk4IChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgcmV0dXJuIChfX202NCkgX19idWlsdGlu
X2lhMzJfcHN1YmIgKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsKfQoKCnN0YXRpYyBpbmxp
bmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkK
Cl9tX3BzdWJiIChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgcmV0dXJuIF9tbV9zdWJfcGk4
IChfX20xLCBfX20yKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc3ViX3BpMTYgKF9fbTY0IF9fbTEs
IF9fbTY0IF9fbTIpCnsKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc3VidyAoKF9f
djRoaSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcHN1YncgKF9fbTY0
IF9fbTEsIF9fbTY0IF9fbTIpCnsKICByZXR1cm4gX21tX3N1Yl9waTE2IChfX20xLCBfX20yKTsK
fQoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fc3ViX3BpMzIgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsK
ICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc3ViZCAoKF9fdjJzaSlfX20xLCAoX192
MnNpKV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcHN1YmQgKF9fbTY0IF9fbTEsIF9fbTY0IF9f
bTIpCnsKICByZXR1cm4gX21tX3N1Yl9waTMyIChfX20xLCBfX20yKTsKfQoKCgoKc3RhdGljIGlu
bGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX3N1Yl9zaTY0IChfX202NCBfX20xLCBfX202NCBfX20yKQp7CgogIHJldHVybiAoX19t
NjQpIF9fYnVpbHRpbl9pYTMyX3BzdWJxIChfX20xLCBfX20yKTsKfQoKCgoKCnN0YXRpYyBpbmxp
bmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkK
Cl9tbV9zdWJzX3BpOCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJldHVybiAoX19tNjQp
IF9fYnVpbHRpbl9pYTMyX3BzdWJzYiAoKF9fdjhxaSlfX20xLCAoX192OHFpKV9fbTIpOwp9CgoK
c3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19u
b2RlYnVnX18pKQoKX21fcHN1YnNiIChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgcmV0dXJu
IF9tbV9zdWJzX3BpOCAoX19tMSwgX19tMik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zdWJzX3Bp
MTYgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5f
aWEzMl9wc3Vic3cgKChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsKfQoKCnN0YXRpYyBpbmxp
bmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkK
Cl9tX3BzdWJzdyAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJldHVybiBfbW1fc3Vic19w
aTE2IChfX20xLCBfX20yKTsKfQoKCgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3N1YnNfcHU4IChfX202NCBf
X20xLCBfX202NCBfX20yKQp7CiAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHN1YnVz
YiAoKF9fdjhxaSlfX20xLCAoX192OHFpKV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcHN1YnVz
YiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJldHVybiBfbW1fc3Vic19wdTggKF9fbTEs
IF9fbTIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc3Vic19wdTE2IChfX202NCBfX20xLCBfX202
NCBfX20yKQp7CiAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHN1YnVzdyAoKF9fdjRo
aSlfX20xLCAoX192NGhpKV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcHN1YnVzdyAoX19tNjQg
X19tMSwgX19tNjQgX19tMikKewogIHJldHVybiBfbW1fc3Vic19wdTE2IChfX20xLCBfX20yKTsK
fQoKCgoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9tYWRkX3BpMTYgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIp
CnsKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wbWFkZHdkICgoX192NGhpKV9fbTEs
IChfX3Y0aGkpX19tMik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wbWFkZHdkIChfX202NCBfX20xLCBf
X202NCBfX20yKQp7CiAgcmV0dXJuIF9tbV9tYWRkX3BpMTYgKF9fbTEsIF9fbTIpOwp9CgoKCgpz
dGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25v
ZGVidWdfXykpCgpfbW1fbXVsaGlfcGkxNiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJl
dHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BtdWxodyAoKF9fdjRoaSlfX20xLCAoX192NGhp
KV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcG11bGh3IChfX202NCBfX20xLCBfX202NCBfX20y
KQp7CiAgcmV0dXJuIF9tbV9tdWxoaV9waTE2IChfX20xLCBfX20yKTsKfQoKCgoKc3RhdGljIGlu
bGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX211bGxvX3BpMTYgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICByZXR1cm4gKF9f
bTY0KSBfX2J1aWx0aW5faWEzMl9wbXVsbHcgKChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsK
fQoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fKSkKCl9tX3BtdWxsdyAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJl
dHVybiBfbW1fbXVsbG9fcGkxNiAoX19tMSwgX19tMik7Cn0KCgoKc3RhdGljIGlubGluZSBfX202
NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3Ns
bF9waTE2IChfX202NCBfX20sIF9fbTY0IF9fY291bnQpCnsKCiAgcmV0dXJuIChfX202NCkgX19i
dWlsdGluX2lhMzJfcHNsbHcgKChfX3Y0aGkpX19tLCBfX2NvdW50KTsKfQoKCnN0YXRpYyBpbmxp
bmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkK
Cl9tX3BzbGx3IChfX202NCBfX20sIF9fbTY0IF9fY291bnQpCnsKICByZXR1cm4gX21tX3NsbF9w
aTE2IChfX20sIF9fY291bnQpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NsbGlfcGkxNiAoX19tNjQg
X19tLCBpbnQgX19jb3VudCkKewoKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc2xs
d2kgKChfX3Y0aGkpX19tLCBfX2NvdW50KTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tX3BzbGx3aSAoX19t
NjQgX19tLCBpbnQgX19jb3VudCkKewogIHJldHVybiBfbW1fc2xsaV9waTE2IChfX20sIF9fY291
bnQpOwp9CgoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zbGxfcGkzMiAoX19tNjQgX19tLCBfX202NCBfX2Nv
dW50KQp7CgogIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BzbGxkICgoX192MnNpKV9f
bSwgX19jb3VudCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wc2xsZCAoX19tNjQgX19tLCBfX202NCBf
X2NvdW50KQp7CiAgcmV0dXJuIF9tbV9zbGxfcGkzMiAoX19tLCBfX2NvdW50KTsKfQoKCnN0YXRp
YyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV9zbGxpX3BpMzIgKF9fbTY0IF9fbSwgaW50IF9fY291bnQpCnsKCiAgcmV0dXJu
IChfX202NCkgX19idWlsdGluX2lhMzJfcHNsbGRpICgoX192MnNpKV9fbSwgX19jb3VudCk7Cn0K
CgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf
X25vZGVidWdfXykpCgpfbV9wc2xsZGkgKF9fbTY0IF9fbSwgaW50IF9fY291bnQpCnsKICByZXR1
cm4gX21tX3NsbGlfcGkzMiAoX19tLCBfX2NvdW50KTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTY0
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2xs
X3NpNjQgKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkKewoKICByZXR1cm4gKF9fbTY0KSBfX2J1
aWx0aW5faWEzMl9wc2xscSAoX19tLCBfX2NvdW50KTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tNjQg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tX3BzbGxx
IChfX202NCBfX20sIF9fbTY0IF9fY291bnQpCnsKICByZXR1cm4gX21tX3NsbF9zaTY0IChfX20s
IF9fY291bnQpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NsbGlfc2k2NCAoX19tNjQgX19tLCBpbnQg
X19jb3VudCkKewoKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc2xscWkgKF9fbSwg
X19jb3VudCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wc2xscWkgKF9fbTY0IF9fbSwgaW50IF9fY291
bnQpCnsKICByZXR1cm4gX21tX3NsbGlfc2k2NCAoX19tLCBfX2NvdW50KTsKfQoKCgpzdGF0aWMg
aW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdf
XykpCgpfbW1fc3JhX3BpMTYgKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkKewoKICByZXR1cm4g
KF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc3JhdyAoKF9fdjRoaSlfX20sIF9fY291bnQpOwp9CgoK
c3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19u
b2RlYnVnX18pKQoKX21fcHNyYXcgKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkKewogIHJldHVy
biBfbW1fc3JhX3BpMTYgKF9fbSwgX19jb3VudCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc3JhaV9w
aTE2IChfX202NCBfX20sIGludCBfX2NvdW50KQp7CgogIHJldHVybiAoX19tNjQpIF9fYnVpbHRp
bl9pYTMyX3BzcmF3aSAoKF9fdjRoaSlfX20sIF9fY291bnQpOwp9CgoKc3RhdGljIGlubGluZSBf
X202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21f
cHNyYXdpIChfX202NCBfX20sIGludCBfX2NvdW50KQp7CiAgcmV0dXJuIF9tbV9zcmFpX3BpMTYg
KF9fbSwgX19jb3VudCk7Cn0KCgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NyYV9waTMyIChfX202NCBfX20s
IF9fbTY0IF9fY291bnQpCnsKCiAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHNyYWQg
KChfX3Yyc2kpX19tLCBfX2NvdW50KTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tX3BzcmFkIChfX202NCBf
X20sIF9fbTY0IF9fY291bnQpCnsKICByZXR1cm4gX21tX3NyYV9waTMyIChfX20sIF9fY291bnQp
Owp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XywgX19ub2RlYnVnX18pKQoKX21tX3NyYWlfcGkzMiAoX19tNjQgX19tLCBpbnQgX19jb3VudCkK
ewoKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc3JhZGkgKChfX3Yyc2kpX19tLCBf
X2NvdW50KTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tX3BzcmFkaSAoX19tNjQgX19tLCBpbnQgX19jb3Vu
dCkKewogIHJldHVybiBfbW1fc3JhaV9waTMyIChfX20sIF9fY291bnQpOwp9CgoKCnN0YXRpYyBp
bmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19f
KSkKCl9tbV9zcmxfcGkxNiAoX19tNjQgX19tLCBfX202NCBfX2NvdW50KQp7CgogIHJldHVybiAo
X19tNjQpIF9fYnVpbHRpbl9pYTMyX3Bzcmx3ICgoX192NGhpKV9fbSwgX19jb3VudCk7Cn0KCgpz
dGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25v
ZGVidWdfXykpCgpfbV9wc3JsdyAoX19tNjQgX19tLCBfX202NCBfX2NvdW50KQp7CiAgcmV0dXJu
IF9tbV9zcmxfcGkxNiAoX19tLCBfX2NvdW50KTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zcmxpX3Bp
MTYgKF9fbTY0IF9fbSwgaW50IF9fY291bnQpCnsKCiAgcmV0dXJuIChfX202NCkgX19idWlsdGlu
X2lhMzJfcHNybHdpICgoX192NGhpKV9fbSwgX19jb3VudCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9f
bTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9w
c3Jsd2kgKF9fbTY0IF9fbSwgaW50IF9fY291bnQpCnsKICByZXR1cm4gX21tX3NybGlfcGkxNiAo
X19tLCBfX2NvdW50KTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc3JsX3BpMzIgKF9fbTY0IF9fbSwg
X19tNjQgX19jb3VudCkKewoKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc3JsZCAo
KF9fdjJzaSlfX20sIF9fY291bnQpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcHNybGQgKF9fbTY0IF9f
bSwgX19tNjQgX19jb3VudCkKewogIHJldHVybiBfbW1fc3JsX3BpMzIgKF9fbSwgX19jb3VudCk7
Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fc3JsaV9waTMyIChfX202NCBfX20sIGludCBfX2NvdW50KQp7
CgogIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BzcmxkaSAoKF9fdjJzaSlfX20sIF9f
Y291bnQpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcHNybGRpIChfX202NCBfX20sIGludCBfX2NvdW50
KQp7CiAgcmV0dXJuIF9tbV9zcmxpX3BpMzIgKF9fbSwgX19jb3VudCk7Cn0KCgoKc3RhdGljIGlu
bGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX3NybF9zaTY0IChfX202NCBfX20sIF9fbTY0IF9fY291bnQpCnsKCiAgcmV0dXJuIChf
X202NCkgX19idWlsdGluX2lhMzJfcHNybHEgKF9fbSwgX19jb3VudCk7Cn0KCgpzdGF0aWMgaW5s
aW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykp
CgpfbV9wc3JscSAoX19tNjQgX19tLCBfX202NCBfX2NvdW50KQp7CiAgcmV0dXJuIF9tbV9zcmxf
c2k2NCAoX19tLCBfX2NvdW50KTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zcmxpX3NpNjQgKF9fbTY0
IF9fbSwgaW50IF9fY291bnQpCnsKCiAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHNy
bHFpIChfX20sIF9fY291bnQpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcHNybHFpIChfX202NCBfX20s
IGludCBfX2NvdW50KQp7CiAgcmV0dXJuIF9tbV9zcmxpX3NpNjQgKF9fbSwgX19jb3VudCk7Cn0K
CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg
X19ub2RlYnVnX18pKQoKX21tX2FuZF9zaTY0IChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAg
cmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BhbmQgKF9fbTEsIF9fbTIpOwp9CgoKc3RhdGljIGlubGlu
ZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoK
X21fcGFuZCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJldHVybiBfbW1fYW5kX3NpNjQg
KF9fbTEsIF9fbTIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fYW5kbm90X3NpNjQgKF9fbTY0IF9f
bTEsIF9fbTY0IF9fbTIpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfcGFuZG4gKF9fbTEsIF9f
bTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXywgX19ub2RlYnVnX18pKQoKX21fcGFuZG4gKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsK
ICByZXR1cm4gX21tX2FuZG5vdF9zaTY0IChfX20xLCBfX20yKTsKfQoKCgpzdGF0aWMgaW5saW5l
IF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpf
bW1fb3Jfc2k2NCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJldHVybiBfX2J1aWx0aW5f
aWEzMl9wb3IgKF9fbTEsIF9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcG9yIChfX202NCBfX20x
LCBfX202NCBfX20yKQp7CiAgcmV0dXJuIF9tbV9vcl9zaTY0IChfX20xLCBfX20yKTsKfQoKCgpz
dGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25v
ZGVidWdfXykpCgpfbW1feG9yX3NpNjQgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICByZXR1
cm4gX19idWlsdGluX2lhMzJfcHhvciAoX19tMSwgX19tMik7Cn0KCgpzdGF0aWMgaW5saW5lIF9f
bTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9w
eG9yIChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgcmV0dXJuIF9tbV94b3Jfc2k2NCAoX19t
MSwgX19tMik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBlcV9waTggKF9fbTY0IF9fbTEsIF9f
bTY0IF9fbTIpCnsKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wY21wZXFiICgoX192
OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wY21wZXFiIChfX202
NCBfX20xLCBfX202NCBfX20yKQp7CiAgcmV0dXJuIF9tbV9jbXBlcV9waTggKF9fbTEsIF9fbTIp
Owp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XywgX19ub2RlYnVnX18pKQoKX21tX2NtcGd0X3BpOCAoX19tNjQgX19tMSwgX19tNjQgX19tMikK
ewogIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BjbXBndGIgKChfX3Y4cWkpX19tMSwg
KF9fdjhxaSlfX20yKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tX3BjbXBndGIgKF9fbTY0IF9fbTEsIF9f
bTY0IF9fbTIpCnsKICByZXR1cm4gX21tX2NtcGd0X3BpOCAoX19tMSwgX19tMik7Cn0KCgoKCnN0
YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fKSkKCl9tbV9jbXBlcV9waTE2IChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgcmV0
dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcGNtcGVxdyAoKF9fdjRoaSlfX20xLCAoX192NGhp
KV9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcGNtcGVxdyAoX19tNjQgX19tMSwgX19tNjQgX19t
MikKewogIHJldHVybiBfbW1fY21wZXFfcGkxNiAoX19tMSwgX19tMik7Cn0KCgpzdGF0aWMgaW5s
aW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykp
CgpfbW1fY21wZ3RfcGkxNiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJldHVybiAoX19t
NjQpIF9fYnVpbHRpbl9pYTMyX3BjbXBndHcgKChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsK
fQoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fKSkKCl9tX3BjbXBndHcgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICBy
ZXR1cm4gX21tX2NtcGd0X3BpMTYgKF9fbTEsIF9fbTIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9f
bTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1f
Y21wZXFfcGkzMiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKewogIHJldHVybiAoX19tNjQpIF9f
YnVpbHRpbl9pYTMyX3BjbXBlcWQgKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsKfQoKCnN0
YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fKSkKCl9tX3BjbXBlcWQgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICByZXR1cm4g
X21tX2NtcGVxX3BpMzIgKF9fbTEsIF9fbTIpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2NtcGd0X3Bp
MzIgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCnsKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5f
aWEzMl9wY21wZ3RkICgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7Cn0KCgpzdGF0aWMgaW5s
aW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykp
CgpfbV9wY21wZ3RkIChfX202NCBfX20xLCBfX202NCBfX20yKQp7CiAgcmV0dXJuIF9tbV9jbXBn
dF9waTMyIChfX20xLCBfX20yKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2V0emVyb19zaTY0ICh2
b2lkKQp7CiAgcmV0dXJuIChfX202NCkwTEw7Cn0KCgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NldF9waTMy
IChpbnQgX19pMSwgaW50IF9faTApCnsKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl92
ZWNfaW5pdF92MnNpIChfX2kwLCBfX2kxKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2V0X3BpMTYg
KHNob3J0IF9fdzMsIHNob3J0IF9fdzIsIHNob3J0IF9fdzEsIHNob3J0IF9fdzApCnsKICByZXR1
cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl92ZWNfaW5pdF92NGhpIChfX3cwLCBfX3cxLCBfX3cy
LCBfX3czKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2V0X3BpOCAoY2hhciBfX2I3LCBjaGFyIF9f
YjYsIGNoYXIgX19iNSwgY2hhciBfX2I0LAogICAgICBjaGFyIF9fYjMsIGNoYXIgX19iMiwgY2hh
ciBfX2IxLCBjaGFyIF9fYjApCnsKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl92ZWNf
aW5pdF92OHFpIChfX2IwLCBfX2IxLCBfX2IyLCBfX2IzLAogICAgICAgICAgICBfX2I0LCBfX2I1
LCBfX2I2LCBfX2I3KTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2V0cl9waTMyIChpbnQgX19pMCwg
aW50IF9faTEpCnsKICByZXR1cm4gX21tX3NldF9waTMyIChfX2kxLCBfX2kwKTsKfQoKCnN0YXRp
YyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV9zZXRyX3BpMTYgKHNob3J0IF9fdzAsIHNob3J0IF9fdzEsIHNob3J0IF9fdzIs
IHNob3J0IF9fdzMpCnsKICByZXR1cm4gX21tX3NldF9waTE2IChfX3czLCBfX3cyLCBfX3cxLCBf
X3cwKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zZXRyX3BpOCAoY2hhciBfX2IwLCBjaGFyIF9fYjEs
IGNoYXIgX19iMiwgY2hhciBfX2IzLAogICAgICAgY2hhciBfX2I0LCBjaGFyIF9fYjUsIGNoYXIg
X19iNiwgY2hhciBfX2I3KQp7CiAgcmV0dXJuIF9tbV9zZXRfcGk4IChfX2I3LCBfX2I2LCBfX2I1
LCBfX2I0LCBfX2IzLCBfX2IyLCBfX2IxLCBfX2IwKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTY0
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2V0
MV9waTMyIChpbnQgX19pKQp7CiAgcmV0dXJuIF9tbV9zZXRfcGkzMiAoX19pLCBfX2kpOwp9CgoK
CnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f
bm9kZWJ1Z19fKSkKCl9tbV9zZXQxX3BpMTYgKHNob3J0IF9fdykKewogIHJldHVybiBfbW1fc2V0
X3BpMTYgKF9fdywgX193LCBfX3csIF9fdyk7Cn0KCgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NldDFfcGk4
IChjaGFyIF9fYikKewogIHJldHVybiBfbW1fc2V0X3BpOCAoX19iLCBfX2IsIF9fYiwgX19iLCBf
X2IsIF9fYiwgX19iLCBfX2IpOwp9CgoKCiN1bmRlZiBfX2Fsd2F5c19pbmxpbmVfXwojIDQxICIv
dXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL3htbWludHJpbi5o
IiAyIDMgNAoKCgoKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9p
bmNsdWRlL21tX21hbGxvYy5oIiAxIDMgNAojIDI4ICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1k
YXJ3aW4xMC80LjIuMS9pbmNsdWRlL21tX21hbGxvYy5oIiAzIDQKI2RlZmluZSBfTU1fTUFMTE9D
X0hfSU5DTFVERUQgCgoKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMSAzIDQKIyAzMiAiL3Vz
ci9saWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9tbV9tYWxsb2MuaCIg
MiAzIDQKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQqCl9tbV9tYWxsb2MgKHNpemVfdCBzaXplLCBz
aXplX3QgYWxpZ24pCnsKICB2b2lkICogbWFsbG9jX3B0cjsKICB2b2lkICogYWxpZ25lZF9wdHI7
CgoKICBpZiAoYWxpZ24gJiAoYWxpZ24gLSAxKSkKICAgIHsKICAgICAgKCpfX2Vycm9yKCkpID0g
MjI7CiAgICAgIHJldHVybiAoKHZvaWQqKSAwKTsKICAgIH0KCiAgaWYgKHNpemUgPT0gMCkKICAg
IHJldHVybiAoKHZvaWQgKikgMCk7CgoKCgoKICAgIGlmIChhbGlnbiA8IDIgKiBzaXplb2YgKHZv
aWQgKikpCiAgICAgIGFsaWduID0gMiAqIHNpemVvZiAodm9pZCAqKTsKCiAgbWFsbG9jX3B0ciA9
IG1hbGxvYyAoc2l6ZSArIGFsaWduKTsKICBpZiAoIW1hbGxvY19wdHIpCiAgICByZXR1cm4gKCh2
b2lkICopIDApOwoKCiAgYWxpZ25lZF9wdHIgPSAodm9pZCAqKSAoKChzaXplX3QpIG1hbGxvY19w
dHIgKyBhbGlnbikKICAgICAmIH4oKHNpemVfdCkgKGFsaWduKSAtIDEpKTsKCgogICgodm9pZCAq
KikgYWxpZ25lZF9wdHIpIFstMV0gPSBtYWxsb2NfcHRyOwoKICByZXR1cm4gYWxpZ25lZF9wdHI7
Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKX21tX2ZyZWUgKHZvaWQgKiBhbGlnbmVkX3B0cikK
ewogIGlmIChhbGlnbmVkX3B0cikKICAgIGZyZWUgKCgodm9pZCAqKikgYWxpZ25lZF9wdHIpIFst
MV0pOwp9CiMgNDYgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1
ZGUveG1taW50cmluLmgiIDIgMyA0CgoKCgoKdHlwZWRlZiBmbG9hdCBfX20xMjggX19hdHRyaWJ1
dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMTYpLCBfX21heV9hbGlhc19fKSk7CgoKdHlwZWRlZiBm
bG9hdCBfX3Y0c2YgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMTYpKSk7CgoKI2Rl
ZmluZSBfTU1fU0hVRkZMRShmcDMsZnAyLGZwMSxmcDApICgoKGZwMykgPDwgNikgfCAoKGZwMikg
PDwgNCkgfCAoKGZwMSkgPDwgMikgfCAoZnAwKSkKCgoKZW51bSBfbW1faGludAp7CiAgX01NX0hJ
TlRfVDAgPSAzLAogIF9NTV9ISU5UX1QxID0gMiwKICBfTU1fSElOVF9UMiA9IDEsCiAgX01NX0hJ
TlRfTlRBID0gMAp9OwoKCiNkZWZpbmUgX01NX0VYQ0VQVF9NQVNLIDB4MDAzZgojZGVmaW5lIF9N
TV9FWENFUFRfSU5WQUxJRCAweDAwMDEKI2RlZmluZSBfTU1fRVhDRVBUX0RFTk9STSAweDAwMDIK
I2RlZmluZSBfTU1fRVhDRVBUX0RJVl9aRVJPIDB4MDAwNAojZGVmaW5lIF9NTV9FWENFUFRfT1ZF
UkZMT1cgMHgwMDA4CiNkZWZpbmUgX01NX0VYQ0VQVF9VTkRFUkZMT1cgMHgwMDEwCiNkZWZpbmUg
X01NX0VYQ0VQVF9JTkVYQUNUIDB4MDAyMAoKI2RlZmluZSBfTU1fTUFTS19NQVNLIDB4MWY4MAoj
ZGVmaW5lIF9NTV9NQVNLX0lOVkFMSUQgMHgwMDgwCiNkZWZpbmUgX01NX01BU0tfREVOT1JNIDB4
MDEwMAojZGVmaW5lIF9NTV9NQVNLX0RJVl9aRVJPIDB4MDIwMAojZGVmaW5lIF9NTV9NQVNLX09W
RVJGTE9XIDB4MDQwMAojZGVmaW5lIF9NTV9NQVNLX1VOREVSRkxPVyAweDA4MDAKI2RlZmluZSBf
TU1fTUFTS19JTkVYQUNUIDB4MTAwMAoKI2RlZmluZSBfTU1fUk9VTkRfTUFTSyAweDYwMDAKI2Rl
ZmluZSBfTU1fUk9VTkRfTkVBUkVTVCAweDAwMDAKI2RlZmluZSBfTU1fUk9VTkRfRE9XTiAweDIw
MDAKI2RlZmluZSBfTU1fUk9VTkRfVVAgMHg0MDAwCiNkZWZpbmUgX01NX1JPVU5EX1RPV0FSRF9a
RVJPIDB4NjAwMAoKI2RlZmluZSBfTU1fRkxVU0hfWkVST19NQVNLIDB4ODAwMAojZGVmaW5lIF9N
TV9GTFVTSF9aRVJPX09OIDB4ODAwMAojZGVmaW5lIF9NTV9GTFVTSF9aRVJPX09GRiAweDAwMDAK
CgojZGVmaW5lIF9fYWx3YXlzX2lubGluZV9fIF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdf
XwoKCgojdW5kZWYgX19TVEFUSUNfSU5MSU5FCgoKCiNkZWZpbmUgX19TVEFUSUNfSU5MSU5FIHN0
YXRpYyBfX2lubGluZQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NldHplcm9fcHMgKHZvaWQpCnsK
ICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4KXsgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiB9
Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fYWRkX3NzIChfX20xMjggX19BLCBfX20xMjggX19C
KQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2FkZHNzICgoX192NHNmKV9fQSwg
KF9fdjRzZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zdWJfc3MgKF9fbTEyOCBfX0EsIF9f
bTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfc3Vic3MgKChfX3Y0
c2YpX19BLCAoX192NHNmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX211bF9zcyAoX19tMTI4
IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9tdWxz
cyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fZGl2X3Nz
IChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9p
YTMyX2RpdnNzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBf
X20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9t
bV9zcXJ0X3NzIChfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMy
X3NxcnRzcyAoKF9fdjRzZilfX0EpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9yY3Bfc3MgKF9fbTEy
OCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfcmNwc3MgKChfX3Y0c2Yp
X19BKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fcnNxcnRfc3MgKF9fbTEyOCBfX0EpCnsKICByZXR1
cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfcnNxcnRzcyAoKF9fdjRzZilfX0EpOwp9CgoKc3Rh
dGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fKSkKCl9tbV9taW5fc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4g
KF9fbTEyOCkgX19idWlsdGluX2lhMzJfbWluc3MgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQik7
Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XywgX19ub2RlYnVnX18pKQoKX21tX21heF9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewog
IHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9tYXhzcyAoKF9fdjRzZilfX0EsIChfX3Y0
c2YpX19CKTsKfQoKCgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9hZGRfcHMgKF9fbTEyOCBfX0EsIF9fbTEy
OCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfYWRkcHMgKChfX3Y0c2Yp
X19BLCAoX192NHNmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3N1Yl9wcyAoX19tMTI4IF9f
QSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9zdWJwcyAo
KF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbXVsX3BzIChf
X20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMy
X211bHBzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20x
MjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9k
aXZfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWls
dGluX2lhMzJfZGl2cHMgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQik7Cn0KCgpzdGF0aWMgaW5s
aW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX3NxcnRfcHMgKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGlu
X2lhMzJfc3FydHBzICgoX192NHNmKV9fQSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3JjcF9wcyAo
X19tMTI4IF9fQSkKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9yY3BwcyAoKF9f
djRzZilfX0EpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9yc3FydF9wcyAoX19tMTI4IF9fQSkKewog
IHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9yc3FydHBzICgoX192NHNmKV9fQSk7Cn0K
CgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg
X19ub2RlYnVnX18pKQoKX21tX21pbl9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJl
dHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9taW5wcyAoKF9fdjRzZilfX0EsIChfX3Y0c2Yp
X19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbWF4X3BzIChfX20xMjggX19BLCBfX20xMjggX19C
KQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21heHBzICgoX192NHNmKV9fQSwg
KF9fdjRzZilfX0IpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2FuZF9wcyAoX19tMTI4IF9fQSwg
X19tMTI4IF9fQikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9hbmRwcyAoX19BLCBfX0IpOwp9
CgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fKSkKCl9tbV9hbmRub3RfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsK
ICByZXR1cm4gX19idWlsdGluX2lhMzJfYW5kbnBzIChfX0EsIF9fQik7Cn0KCgpzdGF0aWMgaW5s
aW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX29yX3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRp
bl9pYTMyX29ycHMgKF9fQSwgX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1feG9yX3BzIChfX20x
MjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3hvcnBzIChfX0Es
IF9fQik7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBlcV9zcyAoX19tMTI4IF9fQSwgX19t
MTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jbXBlcXNzICgoX192
NHNmKV9fQSwgKF9fdjRzZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBsdF9zcyAoX19t
MTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9j
bXBsdHNzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20x
MjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9j
bXBsZV9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KSBfX2J1
aWx0aW5faWEzMl9jbXBsZXNzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwp9CgoKc3RhdGlj
IGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV9jbXBndF9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAo
X19tMTI4KSBfX2J1aWx0aW5faWEzMl9tb3ZzcyAoKF9fdjRzZikgX19BLAogICAgIChfX3Y0c2Yp
CiAgICAgX19idWlsdGluX2lhMzJfY21wbHRzcyAoKF9fdjRzZikgX19CLAogICAgICAgIChfX3Y0
c2YpCiAgICAgICAgX19BKSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2NtcGdlX3NzIChfX20xMjgg
X19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21vdnNz
ICgoX192NHNmKSBfX0EsCiAgICAgKF9fdjRzZikKICAgICBfX2J1aWx0aW5faWEzMl9jbXBsZXNz
ICgoX192NHNmKSBfX0IsCiAgICAgICAgKF9fdjRzZikKICAgICAgICBfX0EpKTsKfQoKCnN0YXRp
YyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVi
dWdfXykpCgpfbW1fY21wbmVxX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJu
IChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2NtcG5lcXNzICgoX192NHNmKV9fQSwgKF9fdjRzZilf
X0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBubHRfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBf
X0IpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY21wbmx0c3MgKChfX3Y0c2Yp
X19BLCAoX192NHNmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2NtcG5sZV9zcyAoX19tMTI4
IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jbXBu
bGVzcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21w
bmd0X3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVp
bHRpbl9pYTMyX21vdnNzICgoX192NHNmKSBfX0EsCiAgICAgKF9fdjRzZikKICAgICBfX2J1aWx0
aW5faWEzMl9jbXBubHRzcyAoKF9fdjRzZikgX19CLAogICAgICAgICAoX192NHNmKQogICAgICAg
ICBfX0EpKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21wbmdlX3NzIChfX20xMjggX19BLCBfX20x
MjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21vdnNzICgoX192NHNm
KSBfX0EsCiAgICAgKF9fdjRzZikKICAgICBfX2J1aWx0aW5faWEzMl9jbXBubGVzcyAoKF9fdjRz
ZikgX19CLAogICAgICAgICAoX192NHNmKQogICAgICAgICBfX0EpKTsKfQoKCnN0YXRpYyBpbmxp
bmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykp
CgpfbW1fY21wb3JkX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20x
MjgpIF9fYnVpbHRpbl9pYTMyX2NtcG9yZHNzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwp9
CgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXB1bm9yZF9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikK
ewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jbXB1bm9yZHNzICgoX192NHNmKV9f
QSwgKF9fdjRzZilfX0IpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21wZXFfcHMgKF9fbTEy
OCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY21w
ZXFwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21w
bHRfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWls
dGluX2lhMzJfY21wbHRwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBp
bmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdf
XykpCgpfbW1fY21wbGVfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9f
bTEyOCkgX19idWlsdGluX2lhMzJfY21wbGVwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsK
fQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fY21wZ3RfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsK
ICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY21wZ3RwcyAoKF9fdjRzZilfX0EsIChf
X3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21wZ2VfcHMgKF9fbTEyOCBfX0EsIF9f
bTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY21wZ2VwcyAoKF9f
djRzZilfX0EsIChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21wbmVxX3BzIChf
X20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMy
X2NtcG5lcXBzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBf
X20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9t
bV9jbXBubHRfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkg
X19idWlsdGluX2lhMzJfY21wbmx0cHMgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQik7Cn0KCgpz
dGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19u
b2RlYnVnX18pKQoKX21tX2NtcG5sZV9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJl
dHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jbXBubGVwcyAoKF9fdjRzZilfX0EsIChfX3Y0
c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21wbmd0X3BzIChfX20xMjggX19BLCBfX20x
MjggX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2NtcG5ndHBzICgoX192
NHNmKV9fQSwgKF9fdjRzZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBuZ2VfcHMgKF9f
bTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJf
Y21wbmdlcHMgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9f
bTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21t
X2NtcG9yZF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiAoX19tMTI4KSBf
X2J1aWx0aW5faWEzMl9jbXBvcmRwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKfQoKCnN0
YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25v
ZGVidWdfXykpCgpfbW1fY21wdW5vcmRfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICBy
ZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY21wdW5vcmRwcyAoKF9fdjRzZilfX0EsIChf
X3Y0c2YpX19CKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY29taWVxX3NzIChfX20xMjggX19BLCBf
X20xMjggX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWllcSAoKF9fdjRzZilfX0Es
IChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY29taWx0X3NzIChfX20xMjggX19BLCBf
X20xMjggX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlsdCAoKF9fdjRzZilfX0Es
IChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY29taWxlX3NzIChfX20xMjggX19BLCBf
X20xMjggX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlsZSAoKF9fdjRzZilfX0Es
IChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY29taWd0X3NzIChfX20xMjggX19BLCBf
X20xMjggX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlndCAoKF9fdjRzZilfX0Es
IChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY29taWdlX3NzIChfX20xMjggX19BLCBf
X20xMjggX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlnZSAoKF9fdjRzZilfX0Es
IChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY29taW5lcV9zcyAoX19tMTI4IF9fQSwg
X19tMTI4IF9fQikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pbmVxICgoX192NHNmKV9f
QSwgKF9fdjRzZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV91Y29taWVxX3NzIChfX20xMjggX19B
LCBfX20xMjggX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pZXEgKChfX3Y0c2Yp
X19BLCAoX192NHNmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3Vjb21pbHRfc3MgKF9fbTEyOCBf
X0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlsdCAoKF9fdjRz
ZilfX0EsIChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fdWNvbWlsZV9zcyAoX19tMTI4
IF9fQSwgX19tMTI4IF9fQikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29taWxlICgoX192
NHNmKV9fQSwgKF9fdjRzZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBpbnQgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV91Y29taWd0X3NzIChfX20x
MjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pZ3QgKChf
X3Y0c2YpX19BLCAoX192NHNmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3Vjb21pZ2Vfc3MgKF9f
bTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlnZSAo
KF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fdWNvbWluZXFfc3Mg
KF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlu
ZXEgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgaW50IF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY3Z0c3Nf
c2kzMiAoX19tMTI4IF9fQSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRzczJzaSAoKF9f
djRzZikgX19BKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY3Z0X3NzMnNpIChfX20xMjggX19BKQp7CiAg
cmV0dXJuIF9tbV9jdnRzc19zaTMyIChfX0EpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIGxvbmcg
bG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21t
X2N2dHNzX3NpNjQgKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0c3My
c2k2NCAoKF9fdjRzZikgX19BKTsKfQoKCgpzdGF0aWMgaW5saW5lIGxvbmcgbG9uZyBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dHNzX3NpNjR4
IChfX20xMjggX19BKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHNzMnNpNjQgKChfX3Y0
c2YpIF9fQSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY3Z0cHNfcGkzMiAoX19tMTI4IF9fQSkK
ewogIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnBpICgoX192NHNmKSBfX0Ep
Owp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XywgX19ub2RlYnVnX18pKQoKX21tX2N2dF9wczJwaSAoX19tMTI4IF9fQSkKewogIHJldHVybiBf
bW1fY3Z0cHNfcGkzMiAoX19BKTsKfQoKCgpzdGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dHRzc19zaTMyIChfX20x
MjggX19BKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHRzczJzaSAoKF9fdjRzZikgX19B
KTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fY3Z0dF9zczJzaSAoX19tMTI4IF9fQSkKewogIHJldHVybiBf
bW1fY3Z0dHNzX3NpMzIgKF9fQSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBsb25nIGxvbmcgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnR0c3Nf
c2k2NCAoX19tMTI4IF9fQSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnR0c3Myc2k2NCAo
KF9fdjRzZikgX19BKTsKfQoKCgpzdGF0aWMgaW5saW5lIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dHRzc19zaTY0eCAoX19t
MTI4IF9fQSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnR0c3Myc2k2NCAoKF9fdjRzZikg
X19BKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnR0cHNfcGkzMiAoX19tMTI4IF9fQSkKewog
IHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJwaSAoKF9fdjRzZikgX19BKTsK
fQoKCnN0YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnR0X3BzMnBpIChfX20xMjggX19BKQp7CiAgcmV0dXJuIF9t
bV9jdnR0cHNfcGkzMiAoX19BKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dHNpMzJfc3MgKF9f
bTEyOCBfX0EsIGludCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY3Z0
c2kyc3MgKChfX3Y0c2YpIF9fQSwgX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY3Z0X3NpMnNz
IChfX20xMjggX19BLCBpbnQgX19CKQp7CiAgcmV0dXJuIF9tbV9jdnRzaTMyX3NzIChfX0EsIF9f
Qik7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnRzaTY0X3NzIChfX20xMjggX19BLCBsb25n
IGxvbmcgX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2N2dHNpNjQyc3Mg
KChfX3Y0c2YpIF9fQSwgX19CKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dHNpNjR4X3NzIChf
X20xMjggX19BLCBsb25nIGxvbmcgX19CKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9p
YTMyX2N2dHNpNjQyc3MgKChfX3Y0c2YpIF9fQSwgX19CKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUg
X19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpf
bW1fY3Z0cGkzMl9wcyAoX19tMTI4IF9fQSwgX19tNjQgX19CKQp7CiAgcmV0dXJuIChfX20xMjgp
IF9fYnVpbHRpbl9pYTMyX2N2dHBpMnBzICgoX192NHNmKSBfX0EsIChfX3Yyc2kpX19CKTsKfQoK
CnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf
X25vZGVidWdfXykpCgpfbW1fY3Z0X3BpMnBzIChfX20xMjggX19BLCBfX202NCBfX0IpCnsKICBy
ZXR1cm4gX21tX2N2dHBpMzJfcHMgKF9fQSwgX19CKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTEy
OCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2
dHBpMTZfcHMgKF9fbTY0IF9fQSkKewogIF9fdjRoaSBfX3NpZ247CiAgX192MnNpIF9faGlzaSwg
X19sb3NpOwogIF9fdjRzZiBfX3I7CgoKCgogIF9fc2lnbiA9IF9fYnVpbHRpbl9pYTMyX3BjbXBn
dHcgKChfX3Y0aGkpMExMLCAoX192NGhpKV9fQSk7CgoKICBfX2hpc2kgPSAoX192MnNpKSBfX2J1
aWx0aW5faWEzMl9wdW5wY2tod2QgKChfX3Y0aGkpX19BLCBfX3NpZ24pOwogIF9fbG9zaSA9IChf
X3Yyc2kpIF9fYnVpbHRpbl9pYTMyX3B1bnBja2x3ZCAoKF9fdjRoaSlfX0EsIF9fc2lnbik7CgoK
ICBfX3IgPSAoX192NHNmKSBfbW1fc2V0emVyb19wcyAoKTsKICBfX3IgPSBfX2J1aWx0aW5faWEz
Ml9jdnRwaTJwcyAoX19yLCBfX2hpc2kpOwogIF9fciA9IF9fYnVpbHRpbl9pYTMyX21vdmxocHMg
KF9fciwgX19yKTsKICBfX3IgPSBfX2J1aWx0aW5faWEzMl9jdnRwaTJwcyAoX19yLCBfX2xvc2kp
OwoKICByZXR1cm4gKF9fbTEyOCkgX19yOwp9CgoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY3Z0cHUxNl9w
cyAoX19tNjQgX19BKQp7CiAgX192MnNpIF9faGlzaSwgX19sb3NpOwogIF9fdjRzZiBfX3I7CgoK
ICBfX2hpc2kgPSAoX192MnNpKSBfX2J1aWx0aW5faWEzMl9wdW5wY2tod2QgKChfX3Y0aGkpX19B
LCAoX192NGhpKTBMTCk7CiAgX19sb3NpID0gKF9fdjJzaSkgX19idWlsdGluX2lhMzJfcHVucGNr
bHdkICgoX192NGhpKV9fQSwgKF9fdjRoaSkwTEwpOwoKCiAgX19yID0gKF9fdjRzZikgX21tX3Nl
dHplcm9fcHMgKCk7CiAgX19yID0gX19idWlsdGluX2lhMzJfY3Z0cGkycHMgKF9fciwgX19oaXNp
KTsKICBfX3IgPSBfX2J1aWx0aW5faWEzMl9tb3ZsaHBzIChfX3IsIF9fcik7CiAgX19yID0gX19i
dWlsdGluX2lhMzJfY3Z0cGkycHMgKF9fciwgX19sb3NpKTsKCiAgcmV0dXJuIChfX20xMjgpIF9f
cjsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dHBpOF9wcyAoX19tNjQgX19BKQp7CiAgX192OHFp
IF9fc2lnbjsKCgoKCiAgX19zaWduID0gX19idWlsdGluX2lhMzJfcGNtcGd0YiAoKF9fdjhxaSkw
TEwsIChfX3Y4cWkpX19BKTsKCgogIF9fQSA9IChfX202NCkgX19idWlsdGluX2lhMzJfcHVucGNr
bGJ3ICgoX192OHFpKV9fQSwgX19zaWduKTsKCiAgcmV0dXJuIF9tbV9jdnRwaTE2X3BzKF9fQSk7
Cn0KCgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnRwdThfcHMoX19tNjQgX19BKQp7CiAgX19BID0gKF9f
bTY0KSBfX2J1aWx0aW5faWEzMl9wdW5wY2tsYncgKChfX3Y4cWkpX19BLCAoX192OHFpKTBMTCk7
CiAgcmV0dXJuIF9tbV9jdnRwdTE2X3BzKF9fQSk7Cn0KCgoKc3RhdGljIGlubGluZSBfX20xMjgg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnRw
aTMyeDJfcHMoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICBfX3Y0c2YgX196ZXJvID0gKF9fdjRz
ZikgX21tX3NldHplcm9fcHMgKCk7CiAgX192NHNmIF9fc2ZhID0gX19idWlsdGluX2lhMzJfY3Z0
cGkycHMgKF9femVybywgKF9fdjJzaSlfX0EpOwogIF9fdjRzZiBfX3NmYiA9IF9fYnVpbHRpbl9p
YTMyX2N2dHBpMnBzIChfX3plcm8sIChfX3Yyc2kpX19CKTsKICByZXR1cm4gKF9fbTEyOCkgX19i
dWlsdGluX2lhMzJfbW92bGhwcyAoX19zZmEsIF9fc2ZiKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9f
bTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1f
Y3Z0cHNfcGkxNihfX20xMjggX19BKQp7CiAgX192NHNmIF9faGlzZiA9IChfX3Y0c2YpX19BOwog
IF9fdjRzZiBfX2xvc2YgPSBfX2J1aWx0aW5faWEzMl9tb3ZobHBzIChfX2hpc2YsIF9faGlzZik7
CiAgX192MnNpIF9faGlzaSA9IF9fYnVpbHRpbl9pYTMyX2N2dHBzMnBpIChfX2hpc2YpOwogIF9f
djJzaSBfX2xvc2kgPSBfX2J1aWx0aW5faWEzMl9jdnRwczJwaSAoX19sb3NmKTsKICByZXR1cm4g
KF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wYWNrc3NkdyAoX19oaXNpLCBfX2xvc2kpOwp9CgoKCnN0
YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fKSkKCl9tbV9jdnRwc19waTgoX19tMTI4IF9fQSkKewogIF9fdjRoaSBfX3RtcCA9IChf
X3Y0aGkpIF9tbV9jdnRwc19waTE2IChfX0EpOwogIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9p
YTMyX3BhY2tzc3diIChfX3RtcCwgKF9fdjRoaSkwTEwpOwp9CiMgOTE1ICIvdXNyL2xpYi9nY2Mv
aTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL3htbWludHJpbi5oIiAzIDQKI2RlZmlu
ZSBfbW1fc2h1ZmZsZV9wcyhBLEIsTUFTSykgKChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3NodWZw
cyAoKF9fdjRzZikoQSksIChfX3Y0c2YpKEIpLCAoTUFTSykpKQoKCgoKCgpzdGF0aWMgaW5saW5l
IF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoK
X21tX3VucGFja2hpX3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQp7CiAgcmV0dXJuIChfX20x
MjgpIF9fYnVpbHRpbl9pYTMyX3VucGNraHBzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwp9
CgoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fdW5wYWNrbG9fcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0Ip
CnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfdW5wY2tscHMgKChfX3Y0c2YpX19B
LCAoX192NHNmKV9fQik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbG9hZGhfcGkgKF9fbTEyOCBf
X0EsIF9fbTY0IGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJf
bG9hZGhwcyAoKF9fdjRzZilfX0EsIChfX3Yyc2kgKilfX1ApOwp9CgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21t
X3N0b3JlaF9waSAoX19tNjQgKl9fUCwgX19tMTI4IF9fQSkKewogIF9fYnVpbHRpbl9pYTMyX3N0
b3JlaHBzICgoX192MnNpICopX19QLCAoX192NHNmKV9fQSk7Cn0KCgoKc3RhdGljIGlubGluZSBf
X20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9t
bV9tb3ZlaGxfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOCkg
X19idWlsdGluX2lhMzJfbW92aGxwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKfQoKCgpz
dGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19u
b2RlYnVnX18pKQoKX21tX21vdmVsaF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKewogIHJl
dHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9tb3ZsaHBzICgoX192NHNmKV9fQSwgKF9fdjRz
ZilfX0IpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2xvYWRsX3BpIChfX20xMjggX19BLCBfX202
NCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2xvYWRscHMg
KChfX3Y0c2YpX19BLCAoX192MnNpICopX19QKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zdG9yZWxf
cGkgKF9fbTY0ICpfX1AsIF9fbTEyOCBfX0EpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZWxwcyAo
KF9fdjJzaSAqKV9fUCwgKF9fdjRzZilfX0EpOwp9CgoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbW92ZW1hc2tf
cHMgKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfbW92bXNrcHMgKChfX3Y0
c2YpX19BKTsKfQoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2dldGNzciAodm9pZCkKewogIHJl
dHVybiBfX2J1aWx0aW5faWEzMl9zdG14Y3NyICgpOwp9CgoKCnN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpf
TU1fR0VUX0VYQ0VQVElPTl9TVEFURSAodm9pZCkKewogIHJldHVybiBfbW1fZ2V0Y3NyKCkgJiAw
eDAwM2Y7Cn0KCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX01NX0dFVF9FWENFUFRJT05fTUFTSyAodm9p
ZCkKewogIHJldHVybiBfbW1fZ2V0Y3NyKCkgJiAweDFmODA7Cn0KCgpzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX01NX0dFVF9ST1VORElOR19NT0RFICh2b2lkKQp7CiAgcmV0dXJuIF9tbV9nZXRjc3IoKSAm
IDB4NjAwMDsKfQoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfTU1fR0VUX0ZMVVNIX1pFUk9fTU9ERSAo
dm9pZCkKewogIHJldHVybiBfbW1fZ2V0Y3NyKCkgJiAweDgwMDA7Cn0KCgoKc3RhdGljIGlubGlu
ZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpf
bW1fc2V0Y3NyICh1bnNpZ25lZCBpbnQgX19JKQp7CiAgX19idWlsdGluX2lhMzJfbGRteGNzciAo
X19JKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9NTV9TRVRfRVhDRVBUSU9OX1NUQVRFKHVuc2lnbmVkIGlu
dCBfX21hc2spCnsKICBfbW1fc2V0Y3NyKChfbW1fZ2V0Y3NyKCkgJiB+MHgwMDNmKSB8IF9fbWFz
ayk7Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fKSkKCl9NTV9TRVRfRVhDRVBUSU9OX01BU0sgKHVuc2lnbmVkIGludCBf
X21hc2spCnsKICBfbW1fc2V0Y3NyKChfbW1fZ2V0Y3NyKCkgJiB+MHgxZjgwKSB8IF9fbWFzayk7
Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fKSkKCl9NTV9TRVRfUk9VTkRJTkdfTU9ERSAodW5zaWduZWQgaW50IF9fbW9k
ZSkKewogIF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAmIH4weDYwMDApIHwgX19tb2RlKTsKfQoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19u
b2RlYnVnX18pKQoKX01NX1NFVF9GTFVTSF9aRVJPX01PREUgKHVuc2lnbmVkIGludCBfX21vZGUp
CnsKICBfbW1fc2V0Y3NyKChfbW1fZ2V0Y3NyKCkgJiB+MHg4MDAwKSB8IF9fbW9kZSk7Cn0KCgoK
c3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f
bm9kZWJ1Z19fKSkKCl9tbV9zZXRfc3MgKGZsb2F0IF9fRikKewogIHJldHVybiBfX2V4dGVuc2lv
bl9fIChfX20xMjgpKF9fdjRzZil7IF9fRiwgMCwgMCwgMCB9Owp9CgoKCnN0YXRpYyBpbmxpbmUg
X19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpf
bW1fc2V0MV9wcyAoZmxvYXQgX19GKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCko
X192NHNmKXsgX19GLCBfX0YsIF9fRiwgX19GIH07Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NldF9w
czEgKGZsb2F0IF9fRikKewogIHJldHVybiBfbW1fc2V0MV9wcyAoX19GKTsKfQoKCgpzdGF0aWMg
aW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVn
X18pKQoKX21tX2xvYWRfc3MgKGZsb2F0IGNvbnN0ICpfX1ApCnsKICByZXR1cm4gX21tX3NldF9z
cyAoKl9fUCk7Cn0KCgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9sb2FkMV9wcyAoZmxvYXQgY29uc3QgKl9f
UCkKewogIHJldHVybiBfbW1fc2V0MV9wcyAoKl9fUCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEy
OCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2xv
YWRfcHMxIChmbG9hdCBjb25zdCAqX19QKQp7CiAgcmV0dXJuIF9tbV9sb2FkMV9wcyAoX19QKTsK
fQoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XywgX19ub2RlYnVnX18pKQoKX21tX2xvYWRfcHMgKGZsb2F0IGNvbnN0ICpfX1ApCnsKICByZXR1
cm4gKF9fbTEyOCkgKihfX3Y0c2YgKilfX1A7Cn0KCgoKc3RhdGljIGlubGluZSBfX20xMjggX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9sb2FkdV9w
cyAoZmxvYXQgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9s
b2FkdXBzIChfX1ApOwp9CgoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbG9hZHJfcHMgKGZsb2F0IGNvbnN0
ICpfX1ApCnsKICBfX3Y0c2YgX190bXAgPSAqKF9fdjRzZiAqKV9fUDsKICByZXR1cm4gKF9fbTEy
OCkgX19idWlsdGluX2lhMzJfc2h1ZnBzIChfX3RtcCwgX190bXAsICgoKDApIDw8IDYpIHwgKCgx
KSA8PCA0KSB8ICgoMikgPDwgMikgfCAoMykpKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NldF9w
cyAoY29uc3QgZmxvYXQgX19aLCBjb25zdCBmbG9hdCBfX1ksIGNvbnN0IGZsb2F0IF9fWCwgY29u
c3QgZmxvYXQgX19XKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCkoX192NHNmKXsg
X19XLCBfX1gsIF9fWSwgX19aIH07Cn0KCgoKc3RhdGljIGlubGluZSBfX20xMjggX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zZXRyX3BzIChmbG9h
dCBfX1osIGZsb2F0IF9fWSwgZmxvYXQgX19YLCBmbG9hdCBfX1cpCnsKICByZXR1cm4gX19leHRl
bnNpb25fXyAoX19tMTI4KShfX3Y0c2YpeyBfX1osIF9fWSwgX19YLCBfX1cgfTsKfQoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV9zdG9yZV9zcyAoZmxvYXQgKl9fUCwgX19tMTI4IF9fQSkKewogICpfX1AgPSBf
X2J1aWx0aW5faWEzMl92ZWNfZXh0X3Y0c2YgKChfX3Y0c2YpX19BLCAwKTsKfQoKCnN0YXRpYyBp
bmxpbmUgZmxvYXQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19f
KSkKCl9tbV9jdnRzc19mMzIgKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJf
dmVjX2V4dF92NHNmICgoX192NHNmKV9fQSwgMCk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc3RvcmVf
cHMgKGZsb2F0ICpfX1AsIF9fbTEyOCBfX0EpCnsKICAqKF9fdjRzZiAqKV9fUCA9IChfX3Y0c2Yp
X19BOwp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXywgX19ub2RlYnVnX18pKQoKX21tX3N0b3JldV9wcyAoZmxvYXQgKl9fUCwgX19tMTI4IF9f
QSkKewogIF9fYnVpbHRpbl9pYTMyX3N0b3JldXBzIChfX1AsIChfX3Y0c2YpX19BKTsKfQoKCgpz
dGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fKSkKCl9tbV9zdG9yZTFfcHMgKGZsb2F0ICpfX1AsIF9fbTEyOCBfX0EpCnsKICBfX3Y0
c2YgX192YSA9IChfX3Y0c2YpX19BOwogIF9fdjRzZiBfX3RtcCA9IF9fYnVpbHRpbl9pYTMyX3No
dWZwcyAoX192YSwgX192YSwgKCgoMCkgPDwgNikgfCAoKDApIDw8IDQpIHwgKCgwKSA8PCAyKSB8
ICgwKSkpOwogIF9tbV9zdG9yZXVfcHMgKF9fUCwgX190bXApOwp9CgoKc3RhdGljIGlubGluZSB2
b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1f
c3RvcmVfcHMxIChmbG9hdCAqX19QLCBfX20xMjggX19BKQp7CiAgX21tX3N0b3JlMV9wcyAoX19Q
LCBfX0EpOwp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3N0b3Jlcl9wcyAoZmxvYXQgKl9fUCwgX19tMTI4
IF9fQSkKewogIF9fdjRzZiBfX3ZhID0gKF9fdjRzZilfX0E7CiAgX192NHNmIF9fdG1wID0gX19i
dWlsdGluX2lhMzJfc2h1ZnBzIChfX3ZhLCBfX3ZhLCAoKCgwKSA8PCA2KSB8ICgoMSkgPDwgNCkg
fCAoKDIpIDw8IDIpIHwgKDMpKSk7CiAgX21tX3N0b3JlX3BzIChfX1AsIF9fdG1wKTsKfQoKCgpz
dGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19u
b2RlYnVnX18pKQoKX21tX21vdmVfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1
cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbW92c3MgKChfX3Y0c2YpX19BLCAoX192NHNmKV9f
Qik7Cn0KIyAxMjc3ICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNs
dWRlL3htbWludHJpbi5oIiAzIDQKI2RlZmluZSBfbW1fZXh0cmFjdF9waTE2KEEsTikgX19idWls
dGluX2lhMzJfdmVjX2V4dF92NGhpICgoX192NGhpKShBKSwgKE4pKQojZGVmaW5lIF9tX3BleHRy
dyhBLE4pIF9tbV9leHRyYWN0X3BpMTYoKEEpLCAoTikpCiMgMTMwMCAiL3Vzci9saWIvZ2NjL2k2
ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS94bW1pbnRyaW4uaCIgMyA0CiNkZWZpbmUg
X21tX2luc2VydF9waTE2KEEsRCxOKSAoKF9fbTY0KSBfX2J1aWx0aW5faWEzMl92ZWNfc2V0X3Y0
aGkgKChfX3Y0aGkpKEEpLCAoRCksIChOKSkpCgojZGVmaW5lIF9tX3BpbnNydyhBLEQsTikgX21t
X2luc2VydF9waTE2KChBKSwgKEQpLCAoTikpCgoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbWF4X3BpMTYg
KF9fbTY0IF9fQSwgX19tNjQgX19CKQp7CiAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJf
cG1heHN3ICgoX192NGhpKV9fQSwgKF9fdjRoaSlfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX202
NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcG1h
eHN3IChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIHJldHVybiBfbW1fbWF4X3BpMTYgKF9fQSwg
X19CKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbWF4X3B1OCAoX19tNjQgX19BLCBfX202NCBfX0Ip
CnsKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wbWF4dWIgKChfX3Y4cWkpX19BLCAo
X192OHFpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wbWF4dWIgKF9fbTY0IF9fQSwgX19tNjQg
X19CKQp7CiAgcmV0dXJuIF9tbV9tYXhfcHU4IChfX0EsIF9fQik7Cn0KCgoKc3RhdGljIGlubGlu
ZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoK
X21tX21pbl9waTE2IChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIHJldHVybiAoX19tNjQpIF9f
YnVpbHRpbl9pYTMyX3BtaW5zdyAoKF9fdjRoaSlfX0EsIChfX3Y0aGkpX19CKTsKfQoKCnN0YXRp
YyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tX3BtaW5zdyAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICByZXR1cm4gX21tX21p
bl9waTE2IChfX0EsIF9fQik7Cn0KCgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX21pbl9wdTggKF9fbTY0IF9f
QSwgX19tNjQgX19CKQp7CiAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcG1pbnViICgo
X192OHFpKV9fQSwgKF9fdjhxaSlfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fcG1pbnViIChfX202
NCBfX0EsIF9fbTY0IF9fQikKewogIHJldHVybiBfbW1fbWluX3B1OCAoX19BLCBfX0IpOwp9CgoK
CnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25v
ZGVidWdfXykpCgpfbW1fbW92ZW1hc2tfcGk4IChfX202NCBfX0EpCnsKICByZXR1cm4gX19idWls
dGluX2lhMzJfcG1vdm1za2IgKChfX3Y4cWkpX19BKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wbW92bXNr
YiAoX19tNjQgX19BKQp7CiAgcmV0dXJuIF9tbV9tb3ZlbWFza19waTggKF9fQSk7Cn0KCgoKCnN0
YXRpYyBpbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fKSkKCl9tbV9tdWxoaV9wdTE2IChfX202NCBfX0EsIF9fbTY0IF9fQikKewogIHJldHVy
biAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BtdWxodXcgKChfX3Y0aGkpX19BLCAoX192NGhpKV9f
Qik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXykpCgpfbV9wbXVsaHV3IChfX202NCBfX0EsIF9fbTY0IF9fQikKewog
IHJldHVybiBfbW1fbXVsaGlfcHUxNiAoX19BLCBfX0IpOwp9CiMgMTQyNyAiL3Vzci9saWIvZ2Nj
L2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEvaW5jbHVkZS94bW1pbnRyaW4uaCIgMyA0CiNkZWZp
bmUgX21tX3NodWZmbGVfcGkxNihBLE4pICgoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BzaHVmdyAo
KF9fdjRoaSkoQSksIChOKSkpCgojZGVmaW5lIF9tX3BzaHVmdyhBLE4pIF9tbV9zaHVmZmxlX3Bp
MTYgKChBKSwgKE4pKQoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9tYXNrbW92ZV9zaTY0IChfX202NCBf
X0EsIF9fbTY0IF9fTiwgY2hhciAqX19QKQp7CiAgX19idWlsdGluX2lhMzJfbWFza21vdnEgKChf
X3Y4cWkpX19BLCAoX192OHFpKV9fTiwgX19QKTsKfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21fbWFza21vdnEg
KF9fbTY0IF9fQSwgX19tNjQgX19OLCBjaGFyICpfX1ApCnsKICBfbW1fbWFza21vdmVfc2k2NCAo
X19BLCBfX04sIF9fUCk7Cn0KCgoKc3RhdGljIGlubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2F2Z19wdTggKF9fbTY0IF9fQSwg
X19tNjQgX19CKQp7CiAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcGF2Z2IgKChfX3Y4
cWkpX19BLCAoX192OHFpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wYXZnYiAoX19tNjQgX19B
LCBfX202NCBfX0IpCnsKICByZXR1cm4gX21tX2F2Z19wdTggKF9fQSwgX19CKTsKfQoKCgpzdGF0
aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVi
dWdfXykpCgpfbW1fYXZnX3B1MTYgKF9fbTY0IF9fQSwgX19tNjQgX19CKQp7CiAgcmV0dXJuIChf
X202NCkgX19idWlsdGluX2lhMzJfcGF2Z3cgKChfX3Y0aGkpX19BLCAoX192NGhpKV9fQik7Cn0K
CgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf
X25vZGVidWdfXykpCgpfbV9wYXZndyAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICByZXR1cm4g
X21tX2F2Z19wdTE2IChfX0EsIF9fQik7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2FkX3B1OCAo
X19tNjQgX19BLCBfX202NCBfX0IpCnsKICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9w
c2FkYncgKChfX3Y4cWkpX19BLCAoX192OHFpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbV9wc2Fk
YncgKF9fbTY0IF9fQSwgX19tNjQgX19CKQp7CiAgcmV0dXJuIF9tbV9zYWRfcHU4IChfX0EsIF9f
Qik7Cn0KIyAxNTE1ICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNs
dWRlL3htbWludHJpbi5oIiAzIDQKI2RlZmluZSBfbW1fcHJlZmV0Y2goUCxJKSBfX2J1aWx0aW5f
cHJlZmV0Y2ggKChQKSwgMCwgKEkpKQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3N0cmVhbV9waSAoX19t
NjQgKl9fUCwgX19tNjQgX19BKQp7CgogIF9fYnVpbHRpbl9pYTMyX21vdm50cSAoX19QLCBfX0Ep
Owp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XywgX19ub2RlYnVnX18pKQoKX21tX3N0cmVhbV9wcyAoZmxvYXQgKl9fUCwgX19tMTI4IF9fQSkK
ewogIF9fYnVpbHRpbl9pYTMyX21vdm50cHMgKF9fUCwgKF9fdjRzZilfX0EpOwp9CgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV9zZmVuY2UgKHZvaWQpCnsKICBfX2J1aWx0aW5faWEzMl9zZmVuY2UgKCk7Cn0K
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fKSkKCl9tbV9wYXVzZSAodm9pZCkKewogIF9fYXNtX18gX192b2xhdGlsZV9f
ICgicmVwOyBub3AiIDogOiApOwp9CgoKCiNkZWZpbmUgX01NX1RSQU5TUE9TRTRfUFMocm93MCxy
b3cxLHJvdzIscm93MykgZG8geyBfX3Y0c2YgX19yMCA9IChyb3cwKSwgX19yMSA9IChyb3cxKSwg
X19yMiA9IChyb3cyKSwgX19yMyA9IChyb3czKTsgX192NHNmIF9fdDAgPSBfX2J1aWx0aW5faWEz
Ml91bnBja2xwcyAoX19yMCwgX19yMSk7IF9fdjRzZiBfX3QxID0gX19idWlsdGluX2lhMzJfdW5w
Y2tscHMgKF9fcjIsIF9fcjMpOyBfX3Y0c2YgX190MiA9IF9fYnVpbHRpbl9pYTMyX3VucGNraHBz
IChfX3IwLCBfX3IxKTsgX192NHNmIF9fdDMgPSBfX2J1aWx0aW5faWEzMl91bnBja2hwcyAoX19y
MiwgX19yMyk7IChyb3cwKSA9IF9fYnVpbHRpbl9pYTMyX21vdmxocHMgKF9fdDAsIF9fdDEpOyAo
cm93MSkgPSBfX2J1aWx0aW5faWEzMl9tb3ZobHBzIChfX3QxLCBfX3QwKTsgKHJvdzIpID0gX19i
dWlsdGluX2lhMzJfbW92bGhwcyAoX190MiwgX190Myk7IChyb3czKSA9IF9fYnVpbHRpbl9pYTMy
X21vdmhscHMgKF9fdDMsIF9fdDIpOyB9IHdoaWxlICgwKQojIDE1NzUgIi91c3IvbGliL2djYy9p
Njg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUveG1taW50cmluLmgiIDMgNAojdW5kZWYg
X19hbHdheXNfaW5saW5lX18KCgoKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4x
MC80LjIuMS9pbmNsdWRlL2VtbWludHJpbi5oIiAxIDMgNAojIDMyICIvdXNyL2xpYi9nY2MvaTY4
Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL2VtbWludHJpbi5oIiAzIDQKI2RlZmluZSBf
RU1NSU5UUklOX0hfSU5DTFVERUQgCgoKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3
aW4xMC80LjIuMS9pbmNsdWRlL3htbWludHJpbi5oIiAxIDMgNAojIDM2ICIvdXNyL2xpYi9nY2Mv
aTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIuMS9pbmNsdWRlL2VtbWludHJpbi5oIiAyIDMgNAoKCnR5
cGVkZWYgZG91YmxlIF9fdjJkZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikp
KTsKdHlwZWRlZiBsb25nIGxvbmcgX192MmRpIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXpl
X18gKDE2KSkpOwp0eXBlZGVmIGludCBfX3Y0c2kgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3Np
emVfXyAoMTYpKSk7CnR5cGVkZWYgc2hvcnQgX192OGhpIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rv
cl9zaXplX18gKDE2KSkpOwp0eXBlZGVmIGNoYXIgX192MTZxaSBfX2F0dHJpYnV0ZV9fICgoX192
ZWN0b3Jfc2l6ZV9fICgxNikpKTsKCgoKdHlwZWRlZiBsb25nIGxvbmcgX19tMTI4aSBfX2F0dHJp
YnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNiksIF9fbWF5X2FsaWFzX18pKTsKdHlwZWRlZiBk
b3VibGUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNiksIF9fbWF5
X2FsaWFzX18pKTsKCgojZGVmaW5lIF9NTV9TSFVGRkxFMihmcDEsZnAwKSAoKChmcDEpIDw8IDEp
IHwgKGZwMCkpCgoKCiNkZWZpbmUgX19hbHdheXNfaW5saW5lX18gX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fCgoKCiN1bmRlZiBfX1NUQVRJQ19JTkxJTkUKCgoKI2RlZmluZSBfX1NUQVRJ
Q19JTkxJTkUgc3RhdGljIF9faW5saW5lCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19tMTI4ZCBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NldF9zZCAo
ZG91YmxlIF9fRikKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX19GLCAwIH07
Cn0KCgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2V0MV9wZCAoZG91YmxlIF9fRikKewogIHJldHVybiBf
X2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX19GLCBfX0YgfTsKfQoKCnN0YXRpYyBpbmxpbmUgX19t
MTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21t
X3NldF9wZDEgKGRvdWJsZSBfX0YpCnsKICByZXR1cm4gX21tX3NldDFfcGQgKF9fRik7Cn0KCgoK
c3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf
X25vZGVidWdfXykpCgpfbW1fc2V0X3BkIChkb3VibGUgX19XLCBkb3VibGUgX19YKQp7CiAgcmV0
dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX1gsIF9fVyB9Owp9CgoKCnN0YXRpYyBpbmxp
bmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX3NldHJfcGQgKGRvdWJsZSBfX1csIGRvdWJsZSBfX1gpCnsKICByZXR1cm4gX19leHRl
bnNpb25fXyAoX19tMTI4ZCl7IF9fVywgX19YIH07Cn0KCgoKc3RhdGljIGlubGluZSBfX20xMjhk
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2V0
emVyb19wZCAodm9pZCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgMC4wLCAw
LjAgfTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9tb3ZlX3NkIChfX20xMjhkIF9fQSwgX19tMTI4
ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX21vdnNkICgoX192MmRm
KV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKCnN0YXRpYyBpbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2xvYWRfcGQgKGRvdWJs
ZSBjb25zdCAqX19QKQp7CiAgcmV0dXJuICooX19tMTI4ZCAqKV9fUDsKfQoKCgpzdGF0aWMgaW5s
aW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19f
KSkKCl9tbV9sb2FkdV9wZCAoZG91YmxlIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gX19idWlsdGlu
X2lhMzJfbG9hZHVwZCAoX19QKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9sb2FkMV9wZCAoZG91
YmxlIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gX21tX3NldDFfcGQgKCpfX1ApOwp9CgoKCnN0YXRp
YyBpbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2Rl
YnVnX18pKQoKX21tX2xvYWRfc2QgKGRvdWJsZSBjb25zdCAqX19QKQp7CiAgcmV0dXJuIF9tbV9z
ZXRfc2QgKCpfX1ApOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbG9hZF9wZDEgKGRvdWJsZSBjb25z
dCAqX19QKQp7CiAgcmV0dXJuIF9tbV9sb2FkMV9wZCAoX19QKTsKfQoKCgpzdGF0aWMgaW5saW5l
IF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkK
Cl9tbV9sb2Fkcl9wZCAoZG91YmxlIGNvbnN0ICpfX1ApCnsKICBfX20xMjhkIF9fdG1wID0gX21t
X2xvYWRfcGQgKF9fUCk7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NodWZwZCAoX190bXAsIF9f
dG1wLCAoKCgwKSA8PCAxKSB8ICgxKSkpOwp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3N0b3JlX3BkIChk
b3VibGUgKl9fUCwgX19tMTI4ZCBfX0EpCnsKICAqKF9fbTEyOGQgKilfX1AgPSBfX0E7Cn0KCgoK
c3RhdGljIGlubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25v
ZGVidWdfXykpCgpfbW1fc3RvcmV1X3BkIChkb3VibGUgKl9fUCwgX19tMTI4ZCBfX0EpCnsKICBf
X2J1aWx0aW5faWEzMl9zdG9yZXVwZCAoX19QLCBfX0EpOwp9CgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3N0
b3JlX3NkIChkb3VibGUgKl9fUCwgX19tMTI4ZCBfX0EpCnsKICAqX19QID0gX19idWlsdGluX2lh
MzJfdmVjX2V4dF92MmRmIChfX0EsIDApOwp9CgoKc3RhdGljIGlubGluZSBkb3VibGUgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnRzZF9mNjQg
KF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjJkZiAoX19B
LCAwKTsKfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXywgX19ub2RlYnVnX18pKQoKX21tX3N0b3JlbF9wZCAoZG91YmxlICpfX1AsIF9fbTEyOGQg
X19BKQp7CiAgX21tX3N0b3JlX3NkIChfX1AsIF9fQSk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lk
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc3Rv
cmVoX3BkIChkb3VibGUgKl9fUCwgX19tMTI4ZCBfX0EpCnsKICAqX19QID0gX19idWlsdGluX2lh
MzJfdmVjX2V4dF92MmRmIChfX0EsIDEpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zdG9yZTFfcGQg
KGRvdWJsZSAqX19QLCBfX20xMjhkIF9fQSkKewogIF9tbV9zdG9yZV9wZCAoX19QLCBfX2J1aWx0
aW5faWEzMl9zaHVmcGQgKF9fQSwgX19BLCAoKCgwKSA8PCAxKSB8ICgwKSkpKTsKfQoKCnN0YXRp
YyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVn
X18pKQoKX21tX3N0b3JlX3BkMSAoZG91YmxlICpfX1AsIF9fbTEyOGQgX19BKQp7CiAgX21tX3N0
b3JlMV9wZCAoX19QLCBfX0EpOwp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3N0b3Jlcl9wZCAoZG91Ymxl
ICpfX1AsIF9fbTEyOGQgX19BKQp7CiAgX21tX3N0b3JlX3BkIChfX1AsIF9fYnVpbHRpbl9pYTMy
X3NodWZwZCAoX19BLCBfX0EsICgoKDApIDw8IDEpIHwgKDEpKSkpOwp9CgoKc3RhdGljIGlubGlu
ZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9t
bV9jdnRzaTEyOF9zaTMyIChfX20xMjhpIF9fQSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92
ZWNfZXh0X3Y0c2kgKChfX3Y0c2kpX19BLCAwKTsKfQoKCgoKc3RhdGljIGlubGluZSBsb25nIGxv
bmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9j
dnRzaTEyOF9zaTY0IChfX20xMjhpIF9fQSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92ZWNf
ZXh0X3YyZGkgKChfX3YyZGkpX19BLCAwKTsKfQoKCgpzdGF0aWMgaW5saW5lIGxvbmcgbG9uZyBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dHNp
MTI4X3NpNjR4IChfX20xMjhpIF9fQSkKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl92ZWNfZXh0
X3YyZGkgKChfX3YyZGkpX19BLCAwKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9hZGRfcGQgKF9f
bTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEz
Ml9hZGRwZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19t
MTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21t
X2FkZF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9f
YnVpbHRpbl9pYTMyX2FkZHNkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGlj
IGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVi
dWdfXykpCgpfbW1fc3ViX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4g
KF9fbTEyOGQpX19idWlsdGluX2lhMzJfc3VicGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7
Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zdWJfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikK
ewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zdWJzZCAoKF9fdjJkZilfX0EsIChf
X3YyZGYpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX211bF9wZCAoX19tMTI4ZCBfX0EsIF9f
bTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX211bHBkICgoX192
MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbXVsX3NkIChfX20x
MjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJf
bXVsc2QgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEy
OGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9k
aXZfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZClfX2J1
aWx0aW5faWEzMl9kaXZwZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKfQoKCnN0YXRpYyBp
bmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVn
X18pKQoKX21tX2Rpdl9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChf
X20xMjhkKV9fYnVpbHRpbl9pYTMyX2RpdnNkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9
CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fc3FydF9wZCAoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKF9f
bTEyOGQpX19idWlsdGluX2lhMzJfc3FydHBkICgoX192MmRmKV9fQSk7Cn0KCgoKc3RhdGljIGlu
bGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdf
XykpCgpfbW1fc3FydF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgX192MmRmIF9f
dG1wID0gX19idWlsdGluX2lhMzJfbW92c2QgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7CiAg
cmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NxcnRzZCAoKF9fdjJkZilfX3RtcCk7Cn0K
CgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fKSkKCl9tbV9taW5fcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewog
IHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9taW5wZCAoKF9fdjJkZilfX0EsIChfX3Yy
ZGYpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX21pbl9zZCAoX19tMTI4ZCBfX0EsIF9fbTEy
OGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX21pbnNkICgoX192MmRm
KV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbWF4X3BkIChfX20xMjhk
IF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfbWF4
cGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9tYXhf
c2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0
aW5faWEzMl9tYXhzZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKfQoKCnN0YXRpYyBpbmxp
bmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX2FuZF9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20x
MjhkKV9fYnVpbHRpbl9pYTMyX2FuZHBkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgoK
c3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf
X25vZGVidWdfXykpCgpfbW1fYW5kbm90X3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsK
ICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfYW5kbnBkICgoX192MmRmKV9fQSwgKF9f
djJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fb3JfcGQgKF9fbTEyOGQgX19BLCBfX20x
MjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9vcnBkICgoX192MmRm
KV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1feG9yX3BkIChfX20xMjhk
IF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfeG9y
cGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBl
cV9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVp
bHRpbl9pYTMyX2NtcGVxcGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMg
aW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV9jbXBsdF9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJu
IChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGx0cGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9f
Qik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBsZV9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQg
X19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGxlcGQgKChfX3YyZGYp
X19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBndF9wZCAoX19tMTI4
ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2Nt
cGd0cGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEy
OGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9j
bXBnZV9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9f
YnVpbHRpbl9pYTMyX2NtcGdlcGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0
aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fKSkKCl9tbV9jbXBuZXFfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJl
dHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBuZXFwZCAoKF9fdjJkZilfX0EsIChfX3Yy
ZGYpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2NtcG5sdF9wZCAoX19tMTI4ZCBfX0EsIF9f
bTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sdHBkICgo
X192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21wbmxlX3Bk
IChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGlu
X2lhMzJfY21wbmxlcGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5s
aW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19f
KSkKCl9tbV9jbXBuZ3RfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAo
X19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBuZ3RwZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19C
KTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXywgX19ub2RlYnVnX18pKQoKX21tX2NtcG5nZV9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQg
X19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5nZXBkICgoX192MmRm
KV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21wb3JkX3BkIChfX20x
MjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJf
Y21wb3JkcGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9f
bTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9t
bV9jbXB1bm9yZF9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20x
MjhkKV9fYnVpbHRpbl9pYTMyX2NtcHVub3JkcGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7
Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBlcV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19C
KQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGVxc2QgKChfX3YyZGYpX19B
LCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBsdF9zZCAoX19tMTI4ZCBf
X0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGx0
c2QgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBs
ZV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVp
bHRpbl9pYTMyX2NtcGxlc2QgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMg
aW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV9jbXBndF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJu
IChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9tb3ZzZCAoKF9fdjJkZikgX19BLAogICAgICAoX192
MmRmKQogICAgICBfX2J1aWx0aW5faWEzMl9jbXBsdHNkICgoX192MmRmKSBfX0IsCiAgICAgICAg
IChfX3YyZGYpCiAgICAgICAgIF9fQSkpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21wZ2Vfc2Qg
KF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGlu
X2lhMzJfbW92c2QgKChfX3YyZGYpIF9fQSwKICAgICAgKF9fdjJkZikKICAgICAgX19idWlsdGlu
X2lhMzJfY21wbGVzZCAoKF9fdjJkZikgX19CLAogICAgICAgICAoX192MmRmKQogICAgICAgICBf
X0EpKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2NtcG5lcV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEy
OGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5lcXNkICgoX192
MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21wbmx0X3NkIChf
X20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lh
MzJfY21wbmx0c2QgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5l
IF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkK
Cl9tbV9jbXBubGVfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19t
MTI4ZClfX2J1aWx0aW5faWEzMl9jbXBubGVzZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsK
fQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XywgX19ub2RlYnVnX18pKQoKX21tX2NtcG5ndF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19C
KQp7CiAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9tb3ZzZCAoKF9fdjJkZikgX19B
LAogICAgICAoX192MmRmKQogICAgICBfX2J1aWx0aW5faWEzMl9jbXBubHRzZCAoKF9fdjJkZikg
X19CLAogICAgICAgICAgKF9fdjJkZikKICAgICAgICAgIF9fQSkpOwp9CgoKc3RhdGljIGlubGlu
ZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykp
CgpfbW1fY21wbmdlX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gKF9f
bTEyOGQpIF9fYnVpbHRpbl9pYTMyX21vdnNkICgoX192MmRmKSBfX0EsCiAgICAgIChfX3YyZGYp
CiAgICAgIF9fYnVpbHRpbl9pYTMyX2NtcG5sZXNkICgoX192MmRmKSBfX0IsCiAgICAgICAgICAo
X192MmRmKQogICAgICAgICAgX19BKSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBvcmRfc2Qg
KF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5f
aWEzMl9jbXBvcmRzZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKfQoKCnN0YXRpYyBpbmxp
bmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX2NtcHVub3JkX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4g
KF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wdW5vcmRzZCAoKF9fdjJkZilfX0EsIChfX3YyZGYp
X19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY29taWVxX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBf
X0IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taXNkZXEgKChfX3YyZGYpX19BLCAoX192
MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2NvbWlsdF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEy
OGQgX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlzZGx0ICgoX192MmRmKV9fQSwg
KF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jb21pbGVfc2QgKF9fbTEyOGQgX19BLCBf
X20xMjhkIF9fQikKewogIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pc2RsZSAoKF9fdjJkZilf
X0EsIChfX3YyZGYpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY29taWd0X3NkIChfX20xMjhkIF9f
QSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taXNkZ3QgKChfX3Yy
ZGYpX19BLCAoX192MmRmKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2NvbWlnZV9zZCAoX19tMTI4
ZCBfX0EsIF9fbTEyOGQgX19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlzZGdlICgo
X192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBpbnQgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jb21pbmVxX3NkIChf
X20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taXNk
bmVxICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBpbnQgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV91Y29taWVx
X3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJf
dWNvbWlzZGVxICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBp
bnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV91
Y29taWx0X3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gX19idWlsdGlu
X2lhMzJfdWNvbWlzZGx0ICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlu
bGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkK
Cl9tbV91Y29taWxlX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1cm4gX19i
dWlsdGluX2lhMzJfdWNvbWlzZGxlICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3Rh
dGljIGlubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV91Y29taWd0X3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1
cm4gX19idWlsdGluX2lhMzJfdWNvbWlzZGd0ICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9
CgoKc3RhdGljIGlubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f
bm9kZWJ1Z19fKSkKCl9tbV91Y29taWdlX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsK
ICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlzZGdlICgoX192MmRmKV9fQSwgKF9fdjJkZilf
X0IpOwp9CgoKc3RhdGljIGlubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fKSkKCl9tbV91Y29taW5lcV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQg
X19CKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RuZXEgKChfX3YyZGYpX19BLCAo
X192MmRmKV9fQik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NldF9lcGk2NHggKGxvbmcgbG9u
ZyBfX3ExLCBsb25nIGxvbmcgX19xMCkKewogIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhp
KShfX3YyZGkpeyBfX3EwLCBfX3ExIH07Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zZXRfZXBpNjQg
KF9fbTY0IF9fcTEsIF9fbTY0IF9fcTApCnsKICByZXR1cm4gX21tX3NldF9lcGk2NHggKChsb25n
IGxvbmcpX19xMSwgKGxvbmcgbG9uZylfX3EwKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NldF9l
cGkzMiAoaW50IF9fcTMsIGludCBfX3EyLCBpbnQgX19xMSwgaW50IF9fcTApCnsKICByZXR1cm4g
X19leHRlbnNpb25fXyAoX19tMTI4aSkoX192NHNpKXsgX19xMCwgX19xMSwgX19xMiwgX19xMyB9
Owp9CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2V0X2VwaTE2IChzaG9ydCBfX3E3LCBzaG9ydCBfX3E2
LCBzaG9ydCBfX3E1LCBzaG9ydCBfX3E0LAogICAgICAgIHNob3J0IF9fcTMsIHNob3J0IF9fcTIs
IHNob3J0IF9fcTEsIHNob3J0IF9fcTApCnsKICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4
aSkoX192OGhpKXsKICAgIF9fcTAsIF9fcTEsIF9fcTIsIF9fcTMsIF9fcTQsIF9fcTUsIF9fcTYs
IF9fcTcgfTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NldF9lcGk4IChjaGFyIF9fcTE1LCBjaGFy
IF9fcTE0LCBjaGFyIF9fcTEzLCBjaGFyIF9fcTEyLAogICAgICAgY2hhciBfX3ExMSwgY2hhciBf
X3ExMCwgY2hhciBfX3EwOSwgY2hhciBfX3EwOCwKICAgICAgIGNoYXIgX19xMDcsIGNoYXIgX19x
MDYsIGNoYXIgX19xMDUsIGNoYXIgX19xMDQsCiAgICAgICBjaGFyIF9fcTAzLCBjaGFyIF9fcTAy
LCBjaGFyIF9fcTAxLCBjaGFyIF9fcTAwKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEy
OGkpKF9fdjE2cWkpewogICAgX19xMDAsIF9fcTAxLCBfX3EwMiwgX19xMDMsIF9fcTA0LCBfX3Ew
NSwgX19xMDYsIF9fcTA3LAogICAgX19xMDgsIF9fcTA5LCBfX3ExMCwgX19xMTEsIF9fcTEyLCBf
X3ExMywgX19xMTQsIF9fcTE1CiAgfTsKfQojIDc5OCAiL3Vzci9saWIvZ2NjL2k2ODYtYXBwbGUt
ZGFyd2luMTAvNC4yLjEvaW5jbHVkZS9lbW1pbnRyaW4uaCIgMyA0CnN0YXRpYyBpbmxpbmUgX19t
MTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21t
X3NldHJfZXBpNjQgKF9fbTY0IF9fcTAsIF9fbTY0IF9fcTEpCnsKICByZXR1cm4gX21tX3NldF9l
cGk2NCAoX19xMSwgX19xMCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zZXRyX2VwaTMyIChpbnQg
X19xMCwgaW50IF9fcTEsIGludCBfX3EyLCBpbnQgX19xMykKewogIHJldHVybiBfbW1fc2V0X2Vw
aTMyIChfX3EzLCBfX3EyLCBfX3ExLCBfX3EwKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NldHJf
ZXBpMTYgKHNob3J0IF9fcTAsIHNob3J0IF9fcTEsIHNob3J0IF9fcTIsIHNob3J0IF9fcTMsCiAg
ICAgICAgIHNob3J0IF9fcTQsIHNob3J0IF9fcTUsIHNob3J0IF9fcTYsIHNob3J0IF9fcTcpCnsK
ICByZXR1cm4gX21tX3NldF9lcGkxNiAoX19xNywgX19xNiwgX19xNSwgX19xNCwgX19xMywgX19x
MiwgX19xMSwgX19xMCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zZXRyX2VwaTggKGNoYXIgX19x
MDAsIGNoYXIgX19xMDEsIGNoYXIgX19xMDIsIGNoYXIgX19xMDMsCiAgICAgICAgY2hhciBfX3Ew
NCwgY2hhciBfX3EwNSwgY2hhciBfX3EwNiwgY2hhciBfX3EwNywKICAgICAgICBjaGFyIF9fcTA4
LCBjaGFyIF9fcTA5LCBjaGFyIF9fcTEwLCBjaGFyIF9fcTExLAogICAgICAgIGNoYXIgX19xMTIs
IGNoYXIgX19xMTMsIGNoYXIgX19xMTQsIGNoYXIgX19xMTUpCnsKICByZXR1cm4gX21tX3NldF9l
cGk4IChfX3ExNSwgX19xMTQsIF9fcTEzLCBfX3ExMiwgX19xMTEsIF9fcTEwLCBfX3EwOSwgX19x
MDgsCiAgICAgICAgIF9fcTA3LCBfX3EwNiwgX19xMDUsIF9fcTA0LCBfX3EwMywgX19xMDIsIF9f
cTAxLCBfX3EwMCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2xvYWRfc2kxMjggKF9fbTEyOGkg
Y29uc3QgKl9fUCkKewogIHJldHVybiAqX19QOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbG9hZHVf
c2kxMjggKF9fbTEyOGkgY29uc3QgKl9fUCkKewogIHJldHVybiAoX19tMTI4aSkgX19idWlsdGlu
X2lhMzJfbG9hZGRxdSAoKGNoYXIgY29uc3QgKilfX1ApOwp9CgoKCnN0YXRpYyBpbmxpbmUgX19t
MTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21t
X2xvYWRsX2VwaTY0IChfX20xMjhpIGNvbnN0ICpfX1ApCnsKICByZXR1cm4gKF9fbTEyOGkpX19i
dWlsdGluX2lhMzJfbG9hZGx2NHNpICgoX192MnNpICopX19QKTsKfQoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9t
bV9zdG9yZV9zaTEyOCAoX19tMTI4aSAqX19QLCBfX20xMjhpIF9fQikKewogICpfX1AgPSBfX0I7
Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fKSkKCl9tbV9zdG9yZXVfc2kxMjggKF9fbTEyOGkgKl9fUCwgX19tMTI4aSBf
X0IpCnsKICBfX2J1aWx0aW5faWEzMl9zdG9yZWRxdSAoKGNoYXIgKilfX1AsIChfX3YxNnFpKV9f
Qik7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc3RvcmVsX2VwaTY0IChfX20xMjhpICpfX1AsIF9fbTEy
OGkgX19CKQp7CiAgX19idWlsdGluX2lhMzJfc3RvcmVsdjRzaSAoKF9fdjJzaSAqKV9fUCwgX19C
KTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbW92ZXBpNjRfcGk2NCAoX19tMTI4aSBfX0IpCnsKICBy
ZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3YyZGkgKChfX3YyZGkpX19CLCAw
KTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXywgX19ub2RlYnVnX18pKQoKX21tX21vdnBpNjRfZXBpNjQgKF9fbTY0IF9fQSkKewogIHJl
dHVybiBfbW1fc2V0X2VwaTY0ICgoX19tNjQpMExMLCBfX0EpOwp9CgoKCnN0YXRpYyBpbmxpbmUg
X19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoK
X21tX21vdmVfZXBpNjQgKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRp
bl9pYTMyX21vdnF2NHNpICgoX192NHNpKV9fQSkgOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fbTEy
OGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9z
ZXR6ZXJvX3NpMTI4ICh2b2lkKQp7CiAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9f
djRzaSl7IDAsIDAsIDAsIDAgfTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dGVwaTMyX3BkIChf
X20xMjhpIF9fQSkKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jdnRkcTJwZCAo
KF9fdjRzaSkgX19BKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY3Z0ZXBpMzJfcHMgKF9fbTEyOGkg
X19BKQp7CiAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY3Z0ZHEycHMgKChfX3Y0c2kp
IF9fQSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnRwZF9lcGkzMiAoX19tMTI4ZCBfX0EpCnsK
ICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfY3Z0cGQyZHEgKChfX3YyZGYpIF9fQSk7
Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fY3Z0cGRfcGkzMiAoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4g
KF9fbTY0KV9fYnVpbHRpbl9pYTMyX2N2dHBkMnBpICgoX192MmRmKSBfX0EpOwp9CgoKc3RhdGlj
IGlubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV9jdnRwZF9wcyAoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOClfX2J1
aWx0aW5faWEzMl9jdnRwZDJwcyAoKF9fdjJkZikgX19BKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19t
MTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21t
X2N2dHRwZF9lcGkzMiAoX19tMTI4ZCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu
X2lhMzJfY3Z0dHBkMmRxICgoX192MmRmKSBfX0EpOwp9CgoKc3RhdGljIGlubGluZSBfX202NCBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dHRw
ZF9waTMyIChfX20xMjhkIF9fQSkKewogIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfY3Z0
dHBkMnBpICgoX192MmRmKSBfX0EpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY3Z0cGkzMl9wZCAo
X19tNjQgX19BKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2N2dHBpMnBkICgo
X192MnNpKSBfX0EpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY3Z0cHNfZXBpMzIgKF9fbTEyOCBf
X0EpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfY3Z0cHMyZHEgKChfX3Y0c2Yp
IF9fQSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnR0cHNfZXBpMzIgKF9fbTEyOCBfX0EpCnsK
ICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfY3Z0dHBzMmRxICgoX192NHNmKSBfX0Ep
Owp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY3Z0cHNfcGQgKF9fbTEyOCBfX0EpCnsKICByZXR1cm4g
KF9fbTEyOGQpX19idWlsdGluX2lhMzJfY3Z0cHMycGQgKChfX3Y0c2YpIF9fQSk7Cn0KCgpzdGF0
aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVn
X18pKQoKX21tX2N2dHNkX3NpMzIgKF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9p
YTMyX2N2dHNkMnNpICgoX192MmRmKSBfX0EpOwp9CgoKCgpzdGF0aWMgaW5saW5lIGxvbmcgbG9u
ZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2
dHNkX3NpNjQgKF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHNkMnNp
NjQgKChfX3YyZGYpIF9fQSk7Cn0KCgoKc3RhdGljIGlubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnRzZF9zaTY0eCAo
X19tMTI4ZCBfX0EpCnsKICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0c2Qyc2k2NCAoKF9fdjJk
ZikgX19BKTsKfQoKCgpzdGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dHRzZF9zaTMyIChfX20xMjhkIF9fQSkKewog
IHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnR0c2Qyc2kgKChfX3YyZGYpIF9fQSk7Cn0KCgoKCnN0
YXRpYyBpbmxpbmUgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf
X25vZGVidWdfXykpCgpfbW1fY3Z0dHNkX3NpNjQgKF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIF9f
YnVpbHRpbl9pYTMyX2N2dHRzZDJzaTY0ICgoX192MmRmKSBfX0EpOwp9CgoKCnN0YXRpYyBpbmxp
bmUgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdf
XykpCgpfbW1fY3Z0dHNkX3NpNjR4IChfX20xMjhkIF9fQSkKewogIHJldHVybiBfX2J1aWx0aW5f
aWEzMl9jdnR0c2Qyc2k2NCAoKF9fdjJkZikgX19BKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTEy
OCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2
dHNkX3NzIChfX20xMjggX19BLCBfX20xMjhkIF9fQikKewogIHJldHVybiAoX19tMTI4KV9fYnVp
bHRpbl9pYTMyX2N2dHNkMnNzICgoX192NHNmKSBfX0EsIChfX3YyZGYpIF9fQik7Cn0KCgpzdGF0
aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fKSkKCl9tbV9jdnRzaTMyX3NkIChfX20xMjhkIF9fQSwgaW50IF9fQikKewogIHJldHVy
biAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jdnRzaTJzZCAoKF9fdjJkZikgX19BLCBfX0IpOwp9
CgoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnRzaTY0X3NkIChfX20xMjhkIF9fQSwgbG9uZyBsb25n
IF9fQikKewogIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jdnRzaTY0MnNkICgoX192
MmRmKSBfX0EsIF9fQik7Cn0KCgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY3Z0c2k2NHhfc2QgKF9fbTEy
OGQgX19BLCBsb25nIGxvbmcgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMy
X2N2dHNpNjQyc2QgKChfX3YyZGYpIF9fQSwgX19CKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTEy
OGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9j
dnRzc19zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOCBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGQpX19i
dWlsdGluX2lhMzJfY3Z0c3Myc2QgKChfX3YyZGYpIF9fQSwgKF9fdjRzZilfX0IpOwp9CgoKI2Rl
ZmluZSBfbW1fc2h1ZmZsZV9wZChfX0EsX19CLF9fQykgKChfX20xMjhkKV9fYnVpbHRpbl9pYTMy
X3NodWZwZCAoKF9fdjJkZikoX19BKSwgKF9fdjJkZikoX19CKSwgKF9fQykpKQoKCnN0YXRpYyBp
bmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVn
X18pKQoKX21tX3VucGFja2hpX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCnsKICByZXR1
cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdW5wY2tocGQgKChfX3YyZGYpX19BLCAoX192MmRm
KV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV91bnBhY2tsb19wZCAoX19tMTI4ZCBfX0EsIF9f
bTEyOGQgX19CKQp7CiAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3VucGNrbHBkICgo
X192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbG9hZGhfcGQg
KF9fbTEyOGQgX19BLCBkb3VibGUgY29uc3QgKl9fQikKewogIHJldHVybiAoX19tMTI4ZClfX2J1
aWx0aW5faWEzMl9sb2FkaHBkICgoX192MmRmKV9fQSwgX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUg
X19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoK
X21tX2xvYWRsX3BkIChfX20xMjhkIF9fQSwgZG91YmxlIGNvbnN0ICpfX0IpCnsKICByZXR1cm4g
KF9fbTEyOGQpX19idWlsdGluX2lhMzJfbG9hZGxwZCAoKF9fdjJkZilfX0EsIF9fQik7Cn0KCgpz
dGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2Rl
YnVnX18pKQoKX21tX21vdmVtYXNrX3BkIChfX20xMjhkIF9fQSkKewogIHJldHVybiBfX2J1aWx0
aW5faWEzMl9tb3Ztc2twZCAoKF9fdjJkZilfX0EpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhp
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fcGFj
a3NfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlf
X2J1aWx0aW5faWEzMl9wYWNrc3N3YjEyOCAoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CKTsKfQoK
CnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg
X19ub2RlYnVnX18pKQoKX21tX3BhY2tzX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0Ip
CnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFja3NzZHcxMjggKChfX3Y0c2kp
X19BLCAoX192NHNpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9wYWNrdXNfZXBpMTYgKF9f
bTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9wYWNrdXN3YjEyOCAoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CKTsKfQoKCnN0YXRpYyBpbmxp
bmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX3VucGFja2hpX2VwaTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVy
biAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wdW5wY2toYncxMjggKChfX3YxNnFpKV9fQSwgKF9f
djE2cWkpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3VucGFja2hpX2VwaTE2IChfX20xMjhp
IF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVu
cGNraHdkMTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwp9CgoKc3RhdGljIGlubGluZSBf
X20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpf
bW1fdW5wYWNraGlfZXBpMzIgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAo
X19tMTI4aSlfX2J1aWx0aW5faWEzMl9wdW5wY2toZHExMjggKChfX3Y0c2kpX19BLCAoX192NHNp
KV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV91bnBhY2toaV9lcGk2NCAoX19tMTI4aSBfX0Es
IF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2hx
ZHExMjggKChfX3YyZGkpX19BLCAoX192MmRpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEy
OGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV91
bnBhY2tsb19lcGk4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEy
OGkpX19idWlsdGluX2lhMzJfcHVucGNrbGJ3MTI4ICgoX192MTZxaSlfX0EsIChfX3YxNnFpKV9f
Qik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV91bnBhY2tsb19lcGkxNiAoX19tMTI4aSBfX0EsIF9f
bTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2x3ZDEy
OCAoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3VucGFj
a2xvX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkp
X19idWlsdGluX2lhMzJfcHVucGNrbGRxMTI4ICgoX192NHNpKV9fQSwgKF9fdjRzaSlfX0IpOwp9
CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fdW5wYWNrbG9fZXBpNjQgKF9fbTEyOGkgX19BLCBfX20xMjhp
IF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wdW5wY2tscWRxMTI4ICgo
X192MmRpKV9fQSwgKF9fdjJkaSlfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fYWRkX2VwaTgg
KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5f
aWEzMl9wYWRkYjEyOCAoKF9fdjE2cWkpX19BLCAoX192MTZxaSlfX0IpOwp9CgoKc3RhdGljIGlu
bGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdf
XykpCgpfbW1fYWRkX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4g
KF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFkZHcxMjggKChfX3Y4aGkpX19BLCAoX192OGhpKV9f
Qik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9hZGRfZXBpMzIgKF9fbTEyOGkgX19BLCBfX20xMjhp
IF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWRkZDEyOCAoKF9fdjRz
aSlfX0EsIChfX3Y0c2kpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2FkZF9lcGk2NCAoX19t
MTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMy
X3BhZGRxMTI4ICgoX192MmRpKV9fQSwgKF9fdjJkaSlfX0IpOwp9CgoKc3RhdGljIGlubGluZSBf
X20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpf
bW1fYWRkc19lcGk4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEy
OGkpX19idWlsdGluX2lhMzJfcGFkZHNiMTI4ICgoX192MTZxaSlfX0EsIChfX3YxNnFpKV9fQik7
Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9hZGRzX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBf
X0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFkZHN3MTI4ICgoX192OGhp
KV9fQSwgKF9fdjhoaSlfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fYWRkc19lcHU4IChfX20x
MjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJf
cGFkZHVzYjEyOCAoKF9fdjE2cWkpX19BLCAoX192MTZxaSlfX0IpOwp9CgoKc3RhdGljIGlubGlu
ZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykp
CgpfbW1fYWRkc19lcHUxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhZGR1c3cxMjggKChfX3Y4aGkpX19BLCAoX192OGhpKV9f
Qik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zdWJfZXBpOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkg
X19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzdWJiMTI4ICgoX192MTZx
aSlfX0EsIChfX3YxNnFpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zdWJfZXBpMTYgKF9f
bTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9wc3VidzEyOCAoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUg
X19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoK
X21tX3N1Yl9lcGkzMiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20x
MjhpKV9fYnVpbHRpbl9pYTMyX3BzdWJkMTI4ICgoX192NHNpKV9fQSwgKF9fdjRzaSlfX0IpOwp9
CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fc3ViX2VwaTY0IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0Ip
CnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHN1YnExMjggKChfX3YyZGkpX19B
LCAoX192MmRpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zdWJzX2VwaTggKF9fbTEyOGkg
X19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3Vi
c2IxMjggKChfX3YxNnFpKV9fQSwgKF9fdjE2cWkpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19t
MTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21t
X3N1YnNfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4
aSlfX2J1aWx0aW5faWEzMl9wc3Vic3cxMjggKChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Cn0K
CgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fKSkKCl9tbV9zdWJzX2VwdTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikK
ewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3VidXNiMTI4ICgoX192MTZxaSlf
X0EsIChfX3YxNnFpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zdWJzX2VwdTE2IChfX20x
MjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJf
cHN1YnVzdzEyOCAoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUg
X19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoK
X21tX21hZGRfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19t
MTI4aSlfX2J1aWx0aW5faWEzMl9wbWFkZHdkMTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0Ip
Owp9CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXykpCgpfbW1fbXVsaGlfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhp
IF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbXVsaHcxMjggKChfX3Y4
aGkpX19BLCAoX192OGhpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9tdWxsb19lcGkxNiAo
X19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9p
YTMyX3BtdWxsdzEyOCAoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CKTsKfQoKCnN0YXRpYyBpbmxp
bmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkK
Cl9tbV9tdWxfc3UzMiAoX19tNjQgX19BLCBfX202NCBfX0IpCnsKICByZXR1cm4gKF9fbTY0KV9f
YnVpbHRpbl9pYTMyX3BtdWx1ZHEgKChfX3Yyc2kpX19BLCAoX192MnNpKV9fQik7Cn0KCgpzdGF0
aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fKSkKCl9tbV9tdWxfZXB1MzIgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJl
dHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbXVsdWRxMTI4ICgoX192NHNpKV9fQSwgKF9f
djRzaSlfX0IpOwp9CiMgMTQzNSAiL3Vzci9saWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2luMTAvNC4y
LjEvaW5jbHVkZS9lbW1pbnRyaW4uaCIgMyA0CiNkZWZpbmUgX21tX3NsbGlfZXBpMTYoX19BLF9f
QikgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzbGx3aTEyOCAoKF9fdjhoaSkoX19BKSwgX19C
KSkKCiNkZWZpbmUgX21tX3NsbGlfZXBpMzIoX19BLF9fQikgKChfX20xMjhpKV9fYnVpbHRpbl9p
YTMyX3BzbGxkaTEyOCAoKF9fdjhoaSkoX19BKSwgX19CKSkKCiNkZWZpbmUgX21tX3NsbGlfZXBp
NjQoX19BLF9fQikgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzbGxxaTEyOCAoKF9fdjhoaSko
X19BKSwgX19CKSkKIyAxNDYwICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80LjIu
MS9pbmNsdWRlL2VtbWludHJpbi5oIiAzIDQKI2RlZmluZSBfbW1fc3JhaV9lcGkxNihfX0EsX19C
KSAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNyYXdpMTI4ICgoX192OGhpKShfX0EpLCBfX0Ip
KQoKI2RlZmluZSBfbW1fc3JhaV9lcGkzMihfX0EsX19CKSAoKF9fbTEyOGkpX19idWlsdGluX2lh
MzJfcHNyYWRpMTI4ICgoX192OGhpKShfX0EpLCBfX0IpKQojIDE0ODAgIi91c3IvbGliL2djYy9p
Njg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvZW1taW50cmluLmgiIDMgNAojZGVmaW5l
IF9tbV9zcmxpX3NpMTI4IChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmxkcWkxMjhfYnl0ZXNo
aWZ0CiNkZWZpbmUgX21tX3NsbGlfc2kxMjggKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbGRx
aTEyOF9ieXRlc2hpZnQKIyAxNTEwICIvdXNyL2xpYi9nY2MvaTY4Ni1hcHBsZS1kYXJ3aW4xMC80
LjIuMS9pbmNsdWRlL2VtbWludHJpbi5oIiAzIDQKI2RlZmluZSBfbW1fc3JsaV9lcGkxNihfX0Es
X19CKSAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybHdpMTI4ICgoX192OGhpKShfX0EpLCBf
X0IpKQoKI2RlZmluZSBfbW1fc3JsaV9lcGkzMihfX0EsX19CKSAoKF9fbTEyOGkpX19idWlsdGlu
X2lhMzJfcHNybGRpMTI4ICgoX192NHNpKShfX0EpLCBfX0IpKQoKI2RlZmluZSBfbW1fc3JsaV9l
cGk2NChfX0EsX19CKSAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybHFpMTI4ICgoX192NHNp
KShfX0EpLCBfX0IpKQoKCgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2xsX2VwaTE2IChfX20xMjhpIF9f
QSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbHcx
MjgoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NsbF9l
cGkzMiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVp
bHRpbl9pYTMyX3BzbGxkMTI4KChfX3Y0c2kpX19BLCAoX192NHNpKV9fQik7Cn0KCgpzdGF0aWMg
aW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV9zbGxfZXBpNjQgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVy
biAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2xscTEyOCgoX192MmRpKV9fQSwgKF9fdjJkaSlf
X0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc3JhX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4
aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNyYXcxMjggKChfX3Y4
aGkpX19BLCAoX192OGhpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zcmFfZXBpMzIgKF9f
bTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9wc3JhZDEyOCAoKF9fdjRzaSlfX0EsIChfX3Y0c2kpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUg
X19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoK
X21tX3NybF9lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20x
MjhpKV9fYnVpbHRpbl9pYTMyX3Bzcmx3MTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwp9
CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fc3JsX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0Ip
CnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybGQxMjggKChfX3Y0c2kpX19B
LCAoX192NHNpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zcmxfZXBpNjQgKF9fbTEyOGkg
X19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3Js
cTEyOCAoKF9fdjJkaSlfX0EsIChfX3YyZGkpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4
aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2Fu
ZF9zaTEyOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9f
YnVpbHRpbl9pYTMyX3BhbmQxMjggKChfX3YyZGkpX19BLCAoX192MmRpKV9fQik7Cn0KCgpzdGF0
aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fKSkKCl9tbV9hbmRub3Rfc2kxMjggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewog
IHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYW5kbjEyOCAoKF9fdjJkaSlfX0EsIChf
X3YyZGkpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX29yX3NpMTI4IChfX20xMjhpIF9fQSwg
X19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG9yMTI4ICgo
X192MmRpKV9fQSwgKF9fdjJkaSlfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1feG9yX3NpMTI4
IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu
X2lhMzJfcHhvcjEyOCAoKF9fdjJkaSlfX0EsIChfX3YyZGkpX19CKTsKfQoKCnN0YXRpYyBpbmxp
bmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX2NtcGVxX2VwaTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAo
X19tMTI4aSlfX2J1aWx0aW5faWEzMl9wY21wZXFiMTI4ICgoX192MTZxaSlfX0EsIChfX3YxNnFp
KV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBlcV9lcGkxNiAoX19tMTI4aSBfX0EsIF9f
bTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BjbXBlcXcxMjgg
KChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jbXBlcV9l
cGkzMiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVp
bHRpbl9pYTMyX3BjbXBlcWQxMjggKChfX3Y0c2kpX19BLCAoX192NHNpKV9fQik7Cn0KCgpzdGF0
aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fKSkKCl9tbV9jbXBsdF9lcGk4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICBy
ZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGNtcGd0YjEyOCAoKF9fdjE2cWkpX19CLCAo
X192MTZxaSlfX0EpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY21wbHRfZXBpMTYgKF9fbTEyOGkg
X19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wY21w
Z3R3MTI4ICgoX192OGhpKV9fQiwgKF9fdjhoaSlfX0EpOwp9CgoKc3RhdGljIGlubGluZSBfX20x
MjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1f
Y21wbHRfZXBpMzIgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4
aSlfX2J1aWx0aW5faWEzMl9wY21wZ3RkMTI4ICgoX192NHNpKV9fQiwgKF9fdjRzaSlfX0EpOwp9
CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fY21wZ3RfZXBpOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19C
KQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BjbXBndGIxMjggKChfX3YxNnFp
KV9fQSwgKF9fdjE2cWkpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2NtcGd0X2VwaTE2IChf
X20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lh
MzJfcGNtcGd0dzEyOCAoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CKTsKfQoKCnN0YXRpYyBpbmxp
bmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX2NtcGd0X2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4g
KF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGNtcGd0ZDEyOCAoKF9fdjRzaSlfX0EsIChfX3Y0c2kp
X19CKTsKfQojIDE3MDMgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2lu
Y2x1ZGUvZW1taW50cmluLmgiIDMgNAojZGVmaW5lIF9tbV9leHRyYWN0X2VwaTE2KEEsTikgKChp
bnQpIF9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjhoaSAoKF9fdjhoaSkoQSksIChOKSkpCgojZGVm
aW5lIF9tbV9pbnNlcnRfZXBpMTYoQSxELE4pICgoX19tMTI4aSkgX19idWlsdGluX2lhMzJfdmVj
X3NldF92OGhpICgoX192OGhpKShBKSwgKEQpLCAoTikpKQoKCgoKc3RhdGljIGlubGluZSBfX20x
MjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1f
bWF4X2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkp
X19idWlsdGluX2lhMzJfcG1heHN3MTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwp9CgoK
c3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf
X25vZGVidWdfXykpCgpfbW1fbWF4X2VwdTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewog
IHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbWF4dWIxMjggKChfX3YxNnFpKV9fQSwg
KF9fdjE2cWkpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX21pbl9lcGkxNiAoX19tMTI4aSBf
X0EsIF9fbTEyOGkgX19CKQp7CiAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BtaW5z
dzEyOCAoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4
aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX21p
bl9lcHU4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkpX19i
dWlsdGluX2lhMzJfcG1pbnViMTI4ICgoX192MTZxaSlfX0EsIChfX3YxNnFpKV9fQik7Cn0KCgpz
dGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2Rl
YnVnX18pKQoKX21tX21vdmVtYXNrX2VwaTggKF9fbTEyOGkgX19BKQp7CiAgcmV0dXJuIF9fYnVp
bHRpbl9pYTMyX3Btb3Ztc2tiMTI4ICgoX192MTZxaSlfX0EpOwp9CgoKc3RhdGljIGlubGluZSBf
X20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpf
bW1fbXVsaGlfZXB1MTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19t
MTI4aSlfX2J1aWx0aW5faWEzMl9wbXVsaHV3MTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0Ip
Owp9CgoKI2RlZmluZSBfbW1fc2h1ZmZsZWhpX2VwaTE2KF9fQSxfX0IpICgoX19tMTI4aSlfX2J1
aWx0aW5faWEzMl9wc2h1Zmh3ICgoX192OGhpKShfX0EpLCBfX0IpKQojZGVmaW5lIF9tbV9zaHVm
ZmxlbG9fZXBpMTYoX19BLF9fQikgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaHVmbHcgKChf
X3Y4aGkpKF9fQSksIF9fQikpCiNkZWZpbmUgX21tX3NodWZmbGVfZXBpMzIoX19BLF9fQikgKChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaHVmZCAoKF9fdjRzaSkoX19BKSwgX19CKSkKCgoKc3Rh
dGljIGlubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVi
dWdfXykpCgpfbW1fbWFza21vdmV1X3NpMTI4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IsIGNo
YXIgKl9fQykKewogIF9fYnVpbHRpbl9pYTMyX21hc2ttb3ZkcXUgKChfX3YxNnFpKV9fQSwgKF9f
djE2cWkpX19CLCBfX0MpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fYXZnX2VwdTggKF9fbTEyOGkg
X19BLCBfX20xMjhpIF9fQikKewogIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYXZn
YjEyOCAoKF9fdjE2cWkpX19BLCAoX192MTZxaSlfX0IpOwp9CgoKc3RhdGljIGlubGluZSBfX20x
MjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1f
YXZnX2VwdTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCnsKICByZXR1cm4gKF9fbTEyOGkp
X19idWlsdGluX2lhMzJfcGF2Z3cxMjggKChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Cn0KCgpz
dGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f
bm9kZWJ1Z19fKSkKCl9tbV9zYWRfZXB1OCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQp7CiAg
cmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzYWRidzEyOCAoKF9fdjE2cWkpX19BLCAo
X192MTZxaSlfX0IpOwp9CgoKc3RhdGljIGlubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc3RyZWFtX3NpMzIgKGludCAqX19BLCBp
bnQgX19CKQp7CiAgX19idWlsdGluX2lhMzJfbW92bnRpIChfX0EsIF9fQik7Cn0KCgpzdGF0aWMg
aW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19f
KSkKCl9tbV9zdHJlYW1fc2kxMjggKF9fbTEyOGkgKl9fQSwgX19tMTI4aSBfX0IpCnsKICBfX2J1
aWx0aW5faWEzMl9tb3ZudGRxICgoX192MmRpICopX19BLCAoX192MmRpKV9fQik7Cn0KCgpzdGF0
aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1
Z19fKSkKCl9tbV9zdHJlYW1fcGQgKGRvdWJsZSAqX19BLCBfX20xMjhkIF9fQikKewogIF9fYnVp
bHRpbl9pYTMyX21vdm50cGQgKF9fQSwgKF9fdjJkZilfX0IpOwp9CgoKc3RhdGljIGlubGluZSB2
b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1f
Y2xmbHVzaCAodm9pZCBjb25zdCAqX19BKQp7CiAgX19idWlsdGluX2lhMzJfY2xmbHVzaCAoX19B
KTsKfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XywgX19ub2RlYnVnX18pKQoKX21tX2xmZW5jZSAodm9pZCkKewogIF9fYnVpbHRpbl9pYTMyX2xm
ZW5jZSAoKTsKfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX21mZW5jZSAodm9pZCkKewogIF9fYnVpbHRpbl9p
YTMyX21mZW5jZSAoKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2N2dHNpMzJfc2kxMjggKGludCBf
X0EpCnsKICByZXR1cm4gX21tX3NldF9lcGkzMiAoMCwgMCwgMCwgX19BKTsKfQoKCgoKc3RhdGlj
IGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVi
dWdfXykpCgpfbW1fY3Z0c2k2NF9zaTEyOCAobG9uZyBsb25nIF9fQSkKewogIHJldHVybiBfbW1f
c2V0X2VwaTY0eCAoMCwgX19BKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jdnRzaTY0eF9zaTEy
OCAobG9uZyBsb25nIF9fQSkKewogIHJldHVybiBfbW1fc2V0X2VwaTY0eCAoMCwgX19BKTsKfQoK
CgoKCnN0YXRpYyBpbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
LCBfX25vZGVidWdfXykpCgpfbW1fY2FzdHBkX3BzKF9fbTEyOGQgX19BKQp7CiAgcmV0dXJuIChf
X20xMjgpIF9fQTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX2Nhc3RwZF9zaTEyOChfX20xMjhkIF9f
QSkKewogIHJldHVybiAoX19tMTI4aSkgX19BOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhkIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fY2FzdHBz
X3BkKF9fbTEyOCBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fQTsKfQoKCnN0YXRpYyBpbmxp
bmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18p
KQoKX21tX2Nhc3Rwc19zaTEyOChfX20xMjggX19BKQp7CiAgcmV0dXJuIChfX20xMjhpKSBfX0E7
Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XywgX19ub2RlYnVnX18pKQoKX21tX2Nhc3RzaTEyOF9wcyhfX20xMjhpIF9fQSkKewogIHJldHVy
biAoX19tMTI4KSBfX0E7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9jYXN0c2kxMjhfcGQoX19tMTI4
aSBfX0EpCnsKICByZXR1cm4gKF9fbTEyOGQpIF9fQTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9f
bTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9t
bV9zZXQxX2VwaTY0eCAobG9uZyBsb25nIF9fQSkKewogIHJldHVybiBfbW1fc2V0X2VwaTY0eCAo
X19BLCBfX0EpOwp9CgoKc3RhdGljIGlubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpCgpfbW1fc2V0MV9lcGk2NCAoX19tNjQgX19BKQp7
CiAgcmV0dXJuIF9tbV9zZXRfZXBpNjQgKF9fQSwgX19BKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19t
MTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21t
X3NldDFfZXBpMzIgKGludCBfX0EpCnsKICByZXR1cm4gX21tX3NldF9lcGkzMiAoX19BLCBfX0Es
IF9fQSwgX19BKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQoKX21tX3NldDFfZXBpMTYgKHNob3J0IF9fQSkK
ewogIF9fbTEyOGkgdGVtcCwgdGVtcDIsIHRlbXAzOwogIHRlbXAgPSBfbW1fY3Z0c2kzMl9zaTEy
OCgoaW50KV9fQSk7CiAgdGVtcDIgPSBfbW1fdW5wYWNrbG9fZXBpMTYodGVtcCwgdGVtcCk7CiAg
dGVtcDMgPSAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNodWZkICgoX192NHNpKSh0ZW1wMiks
IDApKTsKICByZXR1cm4gdGVtcDM7Cn0KCgpzdGF0aWMgaW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkKCl9tbV9zZXQxX2VwaTggKGNo
YXIgX19BKQp7CiAgICBfX20xMjhpIHRlbXAsIHRlbXAyLCB0ZW1wMywgdGVtcDQ7CiAgICB0ZW1w
ID0gX21tX2N2dHNpMzJfc2kxMjggKChpbnQpX19BKTsKICAgIHRlbXAyID0gX21tX3VucGFja2xv
X2VwaTggKHRlbXAsIHRlbXApOwogICAgdGVtcDMgPSBfbW1fdW5wYWNrbG9fZXBpOCAodGVtcDIs
IHRlbXAyKTsKICAgIHRlbXA0ID0gKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaHVmZCAoKF9f
djRzaSkodGVtcDMpLCAwKSk7CiAgICByZXR1cm4gdGVtcDQ7Cn0KCgoKI3VuZGVmIF9fYWx3YXlz
X2lubGluZV9fCiMgMTU4MCAiL3Vzci9saWIvZ2NjL2k2ODYtYXBwbGUtZGFyd2luMTAvNC4yLjEv
aW5jbHVkZS94bW1pbnRyaW4uaCIgMiAzIDQKIyAzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvTWFjaGluZUV4Y2VwdGlvbnMuaCIgMiAzCiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL01hY2hpbmVFeGNlcHRpb25zLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3By
YWdtYSBvcHRpb25zIGFsaWduPXBvd2VyCgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQXJlYUlEKiBB
cmVhSUQ7CiMgNTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY2hpbmVFeGNl
cHRpb25zLmgiIDMKc3RydWN0IE1hY2hpbmVJbmZvcm1hdGlvblBvd2VyUEMgewogIFVuc2lnbmVk
V2lkZSBDVFI7CiAgVW5zaWduZWRXaWRlIExSOwogIFVuc2lnbmVkV2lkZSBQQzsKICB1bnNpZ25l
ZCBsb25nIENSUmVnaXN0ZXI7CiAgdW5zaWduZWQgbG9uZyBYRVI7CiAgdW5zaWduZWQgbG9uZyBN
U1I7CiAgdW5zaWduZWQgbG9uZyBNUTsKICB1bnNpZ25lZCBsb25nIEV4Y2VwdEtpbmQ7CiAgdW5z
aWduZWQgbG9uZyBEU0lTUjsKICBVbnNpZ25lZFdpZGUgREFSOwogIFVuc2lnbmVkV2lkZSBSZXNl
cnZlZDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTWFjaGluZUluZm9ybWF0aW9uUG93ZXJQQyBNYWNoaW5l
SW5mb3JtYXRpb25Qb3dlclBDOwpzdHJ1Y3QgUmVnaXN0ZXJJbmZvcm1hdGlvblBvd2VyUEMgewog
IFVuc2lnbmVkV2lkZSBSMDsKICBVbnNpZ25lZFdpZGUgUjE7CiAgVW5zaWduZWRXaWRlIFIyOwog
IFVuc2lnbmVkV2lkZSBSMzsKICBVbnNpZ25lZFdpZGUgUjQ7CiAgVW5zaWduZWRXaWRlIFI1Owog
IFVuc2lnbmVkV2lkZSBSNjsKICBVbnNpZ25lZFdpZGUgUjc7CiAgVW5zaWduZWRXaWRlIFI4Owog
IFVuc2lnbmVkV2lkZSBSOTsKICBVbnNpZ25lZFdpZGUgUjEwOwogIFVuc2lnbmVkV2lkZSBSMTE7
CiAgVW5zaWduZWRXaWRlIFIxMjsKICBVbnNpZ25lZFdpZGUgUjEzOwogIFVuc2lnbmVkV2lkZSBS
MTQ7CiAgVW5zaWduZWRXaWRlIFIxNTsKICBVbnNpZ25lZFdpZGUgUjE2OwogIFVuc2lnbmVkV2lk
ZSBSMTc7CiAgVW5zaWduZWRXaWRlIFIxODsKICBVbnNpZ25lZFdpZGUgUjE5OwogIFVuc2lnbmVk
V2lkZSBSMjA7CiAgVW5zaWduZWRXaWRlIFIyMTsKICBVbnNpZ25lZFdpZGUgUjIyOwogIFVuc2ln
bmVkV2lkZSBSMjM7CiAgVW5zaWduZWRXaWRlIFIyNDsKICBVbnNpZ25lZFdpZGUgUjI1OwogIFVu
c2lnbmVkV2lkZSBSMjY7CiAgVW5zaWduZWRXaWRlIFIyNzsKICBVbnNpZ25lZFdpZGUgUjI4Owog
IFVuc2lnbmVkV2lkZSBSMjk7CiAgVW5zaWduZWRXaWRlIFIzMDsKICBVbnNpZ25lZFdpZGUgUjMx
Owp9Owp0eXBlZGVmIHN0cnVjdCBSZWdpc3RlckluZm9ybWF0aW9uUG93ZXJQQyBSZWdpc3Rlcklu
Zm9ybWF0aW9uUG93ZXJQQzsKc3RydWN0IEZQVUluZm9ybWF0aW9uUG93ZXJQQyB7CiAgVW5zaWdu
ZWRXaWRlIFJlZ2lzdGVyc1szMl07CiAgdW5zaWduZWQgbG9uZyBGUFNDUjsKICB1bnNpZ25lZCBs
b25nIFJlc2VydmVkOwp9Owp0eXBlZGVmIHN0cnVjdCBGUFVJbmZvcm1hdGlvblBvd2VyUEMgRlBV
SW5mb3JtYXRpb25Qb3dlclBDOwp1bmlvbiBWZWN0b3IxMjggewoKCgogIHVuc2lnbmVkIGxvbmcg
bFs0XTsKICB1bnNpZ25lZCBzaG9ydCBzWzhdOwogIHVuc2lnbmVkIGNoYXIgY1sxNl07Cn07CnR5
cGVkZWYgdW5pb24gVmVjdG9yMTI4IFZlY3RvcjEyODsKc3RydWN0IFZlY3RvckluZm9ybWF0aW9u
UG93ZXJQQyB7CiAgVmVjdG9yMTI4IFJlZ2lzdGVyc1szMl07CiAgVmVjdG9yMTI4IFZTQ1I7CiAg
VUludDMyIFZSc2F2ZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgVmVjdG9ySW5mb3JtYXRpb25Qb3dlclBD
IFZlY3RvckluZm9ybWF0aW9uUG93ZXJQQzsKCmVudW0gewogIGtXcml0ZVJlZmVyZW5jZSA9IDAs
CiAga1JlYWRSZWZlcmVuY2UgPSAxLAogIGtGZXRjaFJlZmVyZW5jZSA9IDIsCiAgd3JpdGVSZWZl
cmVuY2UgPSBrV3JpdGVSZWZlcmVuY2UsCiAgcmVhZFJlZmVyZW5jZSA9IGtSZWFkUmVmZXJlbmNl
LAogIGZldGNoUmVmZXJlbmNlID0ga0ZldGNoUmVmZXJlbmNlCn07CgoKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIE1lbW9yeVJlZmVyZW5jZUtpbmQ7CnN0cnVjdCBNZW1vcnlFeGNlcHRpb25JbmZvcm1h
dGlvbiB7CiAgQXJlYUlEIHRoZUFyZWE7CiAgTG9naWNhbEFkZHJlc3MgdGhlQWRkcmVzczsKICBP
U1N0YXR1cyB0aGVFcnJvcjsKICBNZW1vcnlSZWZlcmVuY2VLaW5kIHRoZVJlZmVyZW5jZTsKfTsK
dHlwZWRlZiBzdHJ1Y3QgTWVtb3J5RXhjZXB0aW9uSW5mb3JtYXRpb24gTWVtb3J5RXhjZXB0aW9u
SW5mb3JtYXRpb247CmVudW0gewogIGtVbmtub3duRXhjZXB0aW9uID0gMCwKICBrSWxsZWdhbElu
c3RydWN0aW9uRXhjZXB0aW9uID0gMSwKICBrVHJhcEV4Y2VwdGlvbiA9IDIsCiAga0FjY2Vzc0V4
Y2VwdGlvbiA9IDMsCiAga1VubWFwcGVkTWVtb3J5RXhjZXB0aW9uID0gNCwKICBrRXhjbHVkZWRN
ZW1vcnlFeGNlcHRpb24gPSA1LAogIGtSZWFkT25seU1lbW9yeUV4Y2VwdGlvbiA9IDYsCiAga1Vu
cmVzb2x2YWJsZVBhZ2VGYXVsdEV4Y2VwdGlvbiA9IDcsCiAga1ByaXZpbGVnZVZpb2xhdGlvbkV4
Y2VwdGlvbiA9IDgsCiAga1RyYWNlRXhjZXB0aW9uID0gOSwKICBrSW5zdHJ1Y3Rpb25CcmVha3Bv
aW50RXhjZXB0aW9uID0gMTAsCiAga0RhdGFCcmVha3BvaW50RXhjZXB0aW9uID0gMTEsCiAga0lu
dGVnZXJFeGNlcHRpb24gPSAxMiwKICBrRmxvYXRpbmdQb2ludEV4Y2VwdGlvbiA9IDEzLAogIGtT
dGFja092ZXJmbG93RXhjZXB0aW9uID0gMTQsCiAga1Rhc2tUZXJtaW5hdGlvbkV4Y2VwdGlvbiA9
IDE1LAogIGtUYXNrQ3JlYXRpb25FeGNlcHRpb24gPSAxNiwKICBrRGF0YUFsaWdubWVudEV4Y2Vw
dGlvbiA9IDE3Cn07CiMgMTkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNo
aW5lRXhjZXB0aW9ucy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBFeGNlcHRpb25LaW5kOwp1
bmlvbiBFeGNlcHRpb25JbmZvIHsKICBNZW1vcnlFeGNlcHRpb25JbmZvcm1hdGlvbiAqIG1lbW9y
eUluZm87Cn07CnR5cGVkZWYgdW5pb24gRXhjZXB0aW9uSW5mbyBFeGNlcHRpb25JbmZvOwpzdHJ1
Y3QgRXhjZXB0aW9uSW5mb3JtYXRpb25Qb3dlclBDIHsKICBFeGNlcHRpb25LaW5kIHRoZUtpbmQ7
CiAgTWFjaGluZUluZm9ybWF0aW9uUG93ZXJQQyAqIG1hY2hpbmVTdGF0ZTsKICBSZWdpc3Rlcklu
Zm9ybWF0aW9uUG93ZXJQQyAqIHJlZ2lzdGVySW1hZ2U7CiAgRlBVSW5mb3JtYXRpb25Qb3dlclBD
ICogRlBVSW1hZ2U7CiAgRXhjZXB0aW9uSW5mbyBpbmZvOwogIFZlY3RvckluZm9ybWF0aW9uUG93
ZXJQQyAqIHZlY3RvckltYWdlOwp9Owp0eXBlZGVmIHN0cnVjdCBFeGNlcHRpb25JbmZvcm1hdGlv
blBvd2VyUEMgRXhjZXB0aW9uSW5mb3JtYXRpb25Qb3dlclBDOwojIDIxNSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjaGluZUV4Y2VwdGlvbnMuaCIgMwp1bmlvbiBWZWN0b3Ix
MjhJbnRlbCB7CiAgX19tMTI4IHM7CiAgX19tMTI4aSBzaTsKICBfX20xMjhkIHNkOwogIHVuc2ln
bmVkIGNoYXIgY1sxNl07Cn07CnR5cGVkZWYgdW5pb24gVmVjdG9yMTI4SW50ZWwgVmVjdG9yMTI4
SW50ZWw7CiMgMjg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNoaW5lRXhj
ZXB0aW9ucy5oIiAzCnN0cnVjdCBNYWNoaW5lSW5mb3JtYXRpb25JbnRlbDY0IHsKICB1bnNpZ25l
ZCBsb25nIENTOwogIHVuc2lnbmVkIGxvbmcgRlM7CiAgdW5zaWduZWQgbG9uZyBHUzsKICB1bnNp
Z25lZCBsb25nIFJGTEFHUzsKICB1bnNpZ25lZCBsb25nIFJJUDsKICB1bnNpZ25lZCBsb25nIEV4
Y2VwdFRyYXA7CiAgdW5zaWduZWQgbG9uZyBFeGNlcHRFcnI7CiAgdW5zaWduZWQgbG9uZyBFeGNl
cHRBZGRyOwp9Owp0eXBlZGVmIHN0cnVjdCBNYWNoaW5lSW5mb3JtYXRpb25JbnRlbDY0IE1hY2hp
bmVJbmZvcm1hdGlvbkludGVsNjQ7CnN0cnVjdCBSZWdpc3RlckluZm9ybWF0aW9uSW50ZWw2NCB7
CiAgdW5zaWduZWQgbG9uZyBSQVg7CiAgdW5zaWduZWQgbG9uZyBSQlg7CiAgdW5zaWduZWQgbG9u
ZyBSQ1g7CiAgdW5zaWduZWQgbG9uZyBSRFg7CiAgdW5zaWduZWQgbG9uZyBSREk7CiAgdW5zaWdu
ZWQgbG9uZyBSU0k7CiAgdW5zaWduZWQgbG9uZyBSQlA7CiAgdW5zaWduZWQgbG9uZyBSU1A7CiAg
dW5zaWduZWQgbG9uZyBSODsKICB1bnNpZ25lZCBsb25nIFI5OwogIHVuc2lnbmVkIGxvbmcgUjEw
OwogIHVuc2lnbmVkIGxvbmcgUjExOwogIHVuc2lnbmVkIGxvbmcgUjEyOwogIHVuc2lnbmVkIGxv
bmcgUjEzOwogIHVuc2lnbmVkIGxvbmcgUjE0OwogIHVuc2lnbmVkIGxvbmcgUjE1Owp9Owp0eXBl
ZGVmIHN0cnVjdCBSZWdpc3RlckluZm9ybWF0aW9uSW50ZWw2NCBSZWdpc3RlckluZm9ybWF0aW9u
SW50ZWw2NDsKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBGUFJlZ0ludGVsWzEwXTsKc3RydWN0IEZQ
VUluZm9ybWF0aW9uSW50ZWw2NCB7CiAgRlBSZWdJbnRlbCBSZWdpc3RlcnNbOF07CiAgdW5zaWdu
ZWQgc2hvcnQgQ29udHJvbDsKICB1bnNpZ25lZCBzaG9ydCBTdGF0dXM7CiAgdW5zaWduZWQgc2hv
cnQgVGFnOwogIHVuc2lnbmVkIHNob3J0IE9wY29kZTsKICB1bnNpZ25lZCBpbnQgSVA7CiAgdW5z
aWduZWQgaW50IERQOwogIHVuc2lnbmVkIGludCBEUzsKfTsKdHlwZWRlZiBzdHJ1Y3QgRlBVSW5m
b3JtYXRpb25JbnRlbDY0IEZQVUluZm9ybWF0aW9uSW50ZWw2NDsKc3RydWN0IFZlY3RvckluZm9y
bWF0aW9uSW50ZWw2NCB7CiAgVmVjdG9yMTI4SW50ZWwgUmVnaXN0ZXJzWzE2XTsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgVmVjdG9ySW5mb3JtYXRpb25JbnRlbDY0IFZlY3RvckluZm9ybWF0aW9uSW50ZWw2
NDsKCnR5cGVkZWYgTWFjaGluZUluZm9ybWF0aW9uSW50ZWw2NCBNYWNoaW5lSW5mb3JtYXRpb247
CnR5cGVkZWYgUmVnaXN0ZXJJbmZvcm1hdGlvbkludGVsNjQgUmVnaXN0ZXJJbmZvcm1hdGlvbjsK
dHlwZWRlZiBGUFVJbmZvcm1hdGlvbkludGVsNjQgRlBVSW5mb3JtYXRpb247CnR5cGVkZWYgVmVj
dG9ySW5mb3JtYXRpb25JbnRlbDY0IFZlY3RvckluZm9ybWF0aW9uOwoKCgpzdHJ1Y3QgRXhjZXB0
aW9uSW5mb3JtYXRpb24gewogIEV4Y2VwdGlvbktpbmQgdGhlS2luZDsKICBNYWNoaW5lSW5mb3Jt
YXRpb24gKiBtYWNoaW5lU3RhdGU7CiAgUmVnaXN0ZXJJbmZvcm1hdGlvbiAqIHJlZ2lzdGVySW1h
Z2U7CiAgRlBVSW5mb3JtYXRpb24gKiBGUFVJbWFnZTsKICBFeGNlcHRpb25JbmZvIGluZm87CiAg
VmVjdG9ySW5mb3JtYXRpb24gKiB2ZWN0b3JJbWFnZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgRXhjZXB0
aW9uSW5mb3JtYXRpb24gRXhjZXB0aW9uSW5mb3JtYXRpb247CiMgMzU2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9NYWNoaW5lRXhjZXB0aW9ucy5oIiAzCnR5cGVkZWYgT1NTdGF0
dXMgKCAqIEV4Y2VwdGlvbkhhbmRsZXJQcm9jUHRyKShFeGNlcHRpb25JbmZvcm1hdGlvbiAqIHRo
ZUV4Y2VwdGlvbik7CnR5cGVkZWYgRXhjZXB0aW9uSGFuZGxlclByb2NQdHIgRXhjZXB0aW9uSGFu
ZGxlclVQUDsKIyAzNjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY2hpbmVF
eGNlcHRpb25zLmgiIDMKZXh0ZXJuIEV4Y2VwdGlvbkhhbmRsZXJVUFAKTmV3RXhjZXB0aW9uSGFu
ZGxlclVQUChFeGNlcHRpb25IYW5kbGVyUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDM3NyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjaGluZUV4Y2VwdGlvbnMuaCIgMwpleHRl
cm4gdm9pZApEaXNwb3NlRXhjZXB0aW9uSGFuZGxlclVQUChFeGNlcHRpb25IYW5kbGVyVVBQIHVz
ZXJVUFApIDsKIyAzODggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY2hpbmVF
eGNlcHRpb25zLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkludm9rZUV4Y2VwdGlvbkhhbmRsZXJVUFAo
CiAgRXhjZXB0aW9uSW5mb3JtYXRpb24gKiB0aGVFeGNlcHRpb24sCiAgRXhjZXB0aW9uSGFuZGxl
clVQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgRXhjZXB0aW9uSGFuZGxlclVQUCBOZXdFeGNl
cHRpb25IYW5kbGVyVVBQKEV4Y2VwdGlvbkhhbmRsZXJQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJl
dHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUV4Y2VwdGlvbkhhbmRs
ZXJVUFAoRXhjZXB0aW9uSGFuZGxlclVQUCkgeyB9CiAgICBpbmxpbmUgT1NTdGF0dXMgSW52b2tl
RXhjZXB0aW9uSGFuZGxlclVQUChFeGNlcHRpb25JbmZvcm1hdGlvbiAqIHRoZUV4Y2VwdGlvbiwg
RXhjZXB0aW9uSGFuZGxlclVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHRoZUV4Y2Vw
dGlvbik7IH0KIyA0MTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL01hY2hpbmVF
eGNlcHRpb25zLmgiIDMKdHlwZWRlZiBFeGNlcHRpb25IYW5kbGVyVVBQIEV4Y2VwdGlvbkhhbmRs
ZXJUUFA7CnR5cGVkZWYgRXhjZXB0aW9uSGFuZGxlclRQUCBFeGNlcHRpb25IYW5kbGVyOwojIDQy
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTWFjaGluZUV4Y2VwdGlvbnMuaCIg
MwpleHRlcm4gRXhjZXB0aW9uSGFuZGxlclRQUCBJbnN0YWxsRXhjZXB0aW9uSGFuZGxlcihFeGNl
cHRpb25IYW5kbGVyVFBQIHRoZUhhbmRsZXIpIDsKCgoKCiNwcmFnbWEgb3B0aW9ucyBhbGlnbj1y
ZXNldAoKCn0KIyAzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRHJpdmVyU2Vy
dmljZXMuaCIgMiAzCiMgNDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RyaXZl
clNlcnZpY2VzLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBvcHRpb25zIGFsaWduPXBvd2Vy
CgoKZW51bSB7CiAgZHVyYXRpb25NaWNyb3NlY29uZCA9IC0xTCwKICBkdXJhdGlvbk1pbGxpc2Vj
b25kID0gMSwKICBkdXJhdGlvblNlY29uZCA9IDEwMDAsCiAgZHVyYXRpb25NaW51dGUgPSA2MDAw
MCwKICBkdXJhdGlvbkhvdXIgPSAzNjAwMDAwLAogIGR1cmF0aW9uRGF5ID0gODY0MDAwMDAsCiAg
ZHVyYXRpb25Ob1dhaXQgPSAwLAogIGR1cmF0aW9uRm9yZXZlciA9IDB4N0ZGRkZGRkYKfTsKCgp0
eXBlZGVmIFVuc2lnbmVkV2lkZSBOYW5vc2Vjb25kczsKIyA3NSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvRHJpdmVyU2VydmljZXMuaCIgMwpleHRlcm4gQWJzb2x1dGVUaW1lClVw
VGltZSh2b2lkKSA7CiMgOTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0RyaXZl
clNlcnZpY2VzLmgiIDMKZXh0ZXJuIE5hbm9zZWNvbmRzCkFic29sdXRlVG9OYW5vc2Vjb25kcyhB
YnNvbHV0ZVRpbWUgYWJzb2x1dGVUaW1lKSA7CiMgMTEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9Ecml2ZXJTZXJ2aWNlcy5oIiAzCmV4dGVybiBEdXJhdGlvbgpBYnNvbHV0ZVRv
RHVyYXRpb24oQWJzb2x1dGVUaW1lIGFic29sdXRlVGltZSkgOwojIDEyMiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvRHJpdmVyU2VydmljZXMuaCIgMwpleHRlcm4gQWJzb2x1dGVU
aW1lCk5hbm9zZWNvbmRzVG9BYnNvbHV0ZShOYW5vc2Vjb25kcyBuYW5vc2Vjb25kcykgOwojIDEz
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRHJpdmVyU2VydmljZXMuaCIgMwpl
eHRlcm4gQWJzb2x1dGVUaW1lCkR1cmF0aW9uVG9BYnNvbHV0ZShEdXJhdGlvbiBkdXJhdGlvbikg
OwojIDE0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRHJpdmVyU2VydmljZXMu
aCIgMwpleHRlcm4gQWJzb2x1dGVUaW1lCkFkZEFic29sdXRlVG9BYnNvbHV0ZSgKICBBYnNvbHV0
ZVRpbWUgYWJzb2x1dGVUaW1lMSwKICBBYnNvbHV0ZVRpbWUgYWJzb2x1dGVUaW1lMikgOwojIDE2
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRHJpdmVyU2VydmljZXMuaCIgMwpl
eHRlcm4gQWJzb2x1dGVUaW1lClN1YkFic29sdXRlRnJvbUFic29sdXRlKAogIEFic29sdXRlVGlt
ZSBsZWZ0QWJzb2x1dGVUaW1lLAogIEFic29sdXRlVGltZSByaWdodEFic29sdXRlVGltZSkgOwoj
IDE3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRHJpdmVyU2VydmljZXMuaCIg
MwpleHRlcm4gQWJzb2x1dGVUaW1lCkFkZE5hbm9zZWNvbmRzVG9BYnNvbHV0ZSgKICBOYW5vc2Vj
b25kcyBuYW5vc2Vjb25kcywKICBBYnNvbHV0ZVRpbWUgYWJzb2x1dGVUaW1lKSA7CiMgMTg4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Ecml2ZXJTZXJ2aWNlcy5oIiAzCmV4dGVy
biBBYnNvbHV0ZVRpbWUKQWRkRHVyYXRpb25Ub0Fic29sdXRlKAogIER1cmF0aW9uIGR1cmF0aW9u
LAogIEFic29sdXRlVGltZSBhYnNvbHV0ZVRpbWUpIDsKIyAyMDIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0RyaXZlclNlcnZpY2VzLmgiIDMKZXh0ZXJuIEFic29sdXRlVGltZQpT
dWJOYW5vc2Vjb25kc0Zyb21BYnNvbHV0ZSgKICBOYW5vc2Vjb25kcyBuYW5vc2Vjb25kcywKICBB
YnNvbHV0ZVRpbWUgYWJzb2x1dGVUaW1lKSA7CiMgMjE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9Ecml2ZXJTZXJ2aWNlcy5oIiAzCmV4dGVybiBBYnNvbHV0ZVRpbWUKU3ViRHVy
YXRpb25Gcm9tQWJzb2x1dGUoCiAgRHVyYXRpb24gZHVyYXRpb24sCiAgQWJzb2x1dGVUaW1lIGFi
c29sdXRlVGltZSkgOwojIDIzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRHJp
dmVyU2VydmljZXMuaCIgMwpleHRlcm4gTmFub3NlY29uZHMKQWJzb2x1dGVEZWx0YVRvTmFub3Nl
Y29uZHMoCiAgQWJzb2x1dGVUaW1lIGxlZnRBYnNvbHV0ZVRpbWUsCiAgQWJzb2x1dGVUaW1lIHJp
Z2h0QWJzb2x1dGVUaW1lKSA7CiMgMjQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9Ecml2ZXJTZXJ2aWNlcy5oIiAzCmV4dGVybiBEdXJhdGlvbgpBYnNvbHV0ZURlbHRhVG9EdXJh
dGlvbigKICBBYnNvbHV0ZVRpbWUgbGVmdEFic29sdXRlVGltZSwKICBBYnNvbHV0ZVRpbWUgcmln
aHRBYnNvbHV0ZVRpbWUpIDsKIyAyNTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L0RyaXZlclNlcnZpY2VzLmgiIDMKZXh0ZXJuIE5hbm9zZWNvbmRzCkR1cmF0aW9uVG9OYW5vc2Vj
b25kcyhEdXJhdGlvbiB0aGVEdXJhdGlvbikgOwojIDI3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvRHJpdmVyU2VydmljZXMuaCIgMwpleHRlcm4gRHVyYXRpb24KTmFub3NlY29u
ZHNUb0R1cmF0aW9uKE5hbm9zZWNvbmRzIHRoZU5hbm9zZWNvbmRzKSA7CgoKCgoKI3ByYWdtYSBv
cHRpb25zIGFsaWduPXJlc2V0CgoKfQojIDEyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvQ2FyYm9uQ29yZS5oIiAyIDMKCgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvTnVtYmVyRm9ybWF0dGluZy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvTnVtYmVyRm9ybWF0dGluZy5oIiAzCiNkZWZpbmUgX19OVU1CRVJG
T1JNQVRUSU5HX18gCiMgNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL051bWJl
ckZvcm1hdHRpbmcuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA2
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTnVtYmVyRm9ybWF0dGluZy5oIiAz
CnN0cnVjdCBOdW1Gb3JtYXRTdHJpbmcgewogIFVJbnQ4IGZMZW5ndGg7CiAgVUludDggZlZlcnNp
b247CiAgY2hhciBkYXRhWzI1NF07Cn07CnR5cGVkZWYgc3RydWN0IE51bUZvcm1hdFN0cmluZyBO
dW1Gb3JtYXRTdHJpbmc7CnR5cGVkZWYgTnVtRm9ybWF0U3RyaW5nIE51bUZvcm1hdFN0cmluZ1Jl
YzsKdHlwZWRlZiBzaG9ydCBGb3JtYXRTdGF0dXM7CmVudW0gewogIGZWTnVtYmVyID0gMAp9OwoK
dHlwZWRlZiBTSW50OCBGb3JtYXRDbGFzczsKZW51bSB7CiAgZlBvc2l0aXZlID0gMCwKICBmTmVn
YXRpdmUgPSAxLAogIGZaZXJvID0gMgp9OwoKdHlwZWRlZiBTSW50OCBGb3JtYXRSZXN1bHRUeXBl
OwplbnVtIHsKICBmRm9ybWF0T0sgPSAwLAogIGZCZXN0R3Vlc3MgPSAxLAogIGZPdXRPZlN5bmNo
ID0gMiwKICBmU3B1cmlvdXNDaGFycyA9IDMsCiAgZk1pc3NpbmdEZWxpbWl0ZXIgPSA0LAogIGZF
eHRyYURlY2ltYWwgPSA1LAogIGZNaXNzaW5nTGl0ZXJhbCA9IDYsCiAgZkV4dHJhRXhwID0gNywK
ICBmRm9ybWF0T3ZlcmZsb3cgPSA4LAogIGZGb3JtU3RySXNOQU4gPSA5LAogIGZCYWRQYXJ0c1Rh
YmxlID0gMTAsCiAgZkV4dHJhUGVyY2VudCA9IDExLAogIGZFeHRyYVNlcGFyYXRvciA9IDEyLAog
IGZFbXB0eUZvcm1hdFN0cmluZyA9IDEzCn07CgpzdHJ1Y3QgRlZlY3RvciB7CiAgc2hvcnQgc3Rh
cnQ7CiAgc2hvcnQgbGVuZ3RoOwp9Owp0eXBlZGVmIHN0cnVjdCBGVmVjdG9yIEZWZWN0b3I7Cgp0
eXBlZGVmIEZWZWN0b3IgVHJpcGxlSW50WzNdOwojIDEyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvTnVtYmVyRm9ybWF0dGluZy5oIiAzCmV4dGVybiB2b2lkCm51bXRvc3RyaW5n
KAogIGxvbmcgdGhlTnVtLAogIGNoYXIgKiB0aGVTdHJpbmcpIDsKIyAyODIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL051bWJlckZvcm1hdHRpbmcuaCIgMwojcHJhZ21hIHBhY2so
cG9wKQoKCn0KIyAxMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkNv
cmUuaCIgMiAzCgoKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1N0
cmluZ0NvbXBhcmUuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L1N0cmluZ0NvbXBhcmUuaCIgMwojZGVmaW5lIF9fU1RSSU5HQ09NUEFSRV9fIAojIDQzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9TdHJpbmdDb21wYXJlLmgiIDMKZXh0ZXJuICJD
IiB7CiMgNzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1N0cmluZ0NvbXBhcmUu
aCIgMwplbnVtIHsKCiAgc3lzdGVtQ3VyTGFuZyA9IC0yLAogIHN5c3RlbURlZkxhbmcgPSAtMywK
ICBjdXJyZW50Q3VyTGFuZyA9IC00LAogIGN1cnJlbnREZWZMYW5nID0gLTUsCiAgc2NyaXB0Q3Vy
TGFuZyA9IC02LAogIHNjcmlwdERlZkxhbmcgPSAtNwp9OwoKCmVudW0gewogIGl1U3lzdGVtQ3Vy
TGFuZyA9IHN5c3RlbUN1ckxhbmcsCiAgaXVTeXN0ZW1EZWZMYW5nID0gc3lzdGVtRGVmTGFuZywK
ICBpdUN1cnJlbnRDdXJMYW5nID0gY3VycmVudEN1ckxhbmcsCiAgaXVDdXJyZW50RGVmTGFuZyA9
IGN1cnJlbnREZWZMYW5nLAogIGl1U2NyaXB0Q3VyTGFuZyA9IHNjcmlwdEN1ckxhbmcsCiAgaXVT
Y3JpcHREZWZMYW5nID0gc2NyaXB0RGVmTGFuZwp9OwojIDYwMiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvU3RyaW5nQ29tcGFyZS5oIiAzCn0KIyAxNDIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkNvcmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dFV0aWxzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0VXRpbHMuaCIgMwojZGVmaW5lIF9fVEVYVFVUSUxTX18g
CiMgNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRVdGlscy5oIiAzCmV4
dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQojIDEzMCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvVGV4dFV0aWxzLmgiIDMKZXh0ZXJuIGxvbmcKTXVuZ2VyKAogIEhh
bmRsZSBoLAogIGxvbmcgb2Zmc2V0LAogIGNvbnN0IHZvaWQgKiBwdHIxLAogIGxvbmcgbGVuMSwK
ICBjb25zdCB2b2lkICogcHRyMiwKICBsb25nIGxlbjIpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKIyA3MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRVdGlscy5o
IiAzCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDE0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9Ub29sVXRpbHMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL1Rvb2xVdGlscy5oIiAzCiNkZWZpbmUgX19UT09MVVRJTFNfXyAKIyAzMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVG9vbFV0aWxzLmgiIDMKZXh0ZXJuICJDIiB7
CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCiMgNzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1Rvb2xVdGlscy5oIiAzCmV4dGVybiBCb29sZWFuCkJpdFRzdCgKICBjb25zdCB2b2lk
ICogYnl0ZVB0ciwKICBsb25nIGJpdE51bSkgOwojIDkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9Ub29sVXRpbHMuaCIgMwpleHRlcm4gdm9pZApCaXRTZXQoCiAgdm9pZCAqIGJ5
dGVQdHIsCiAgbG9uZyBiaXROdW0pIDsKIyAxMDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1Rvb2xVdGlscy5oIiAzCmV4dGVybiB2b2lkCkJpdENscigKICB2b2lkICogYnl0ZVB0
ciwKICBsb25nIGJpdE51bSkgOwojIDEyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvVG9vbFV0aWxzLmgiIDMKZXh0ZXJuIGxvbmcKQml0QW5kKAogIGxvbmcgdmFsdWUxLAogIGxv
bmcgdmFsdWUyKSA7CiMgMTM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Ub29s
VXRpbHMuaCIgMwpleHRlcm4gbG9uZwpCaXRPcigKICBsb25nIHZhbHVlMSwKICBsb25nIHZhbHVl
MikgOwojIDE0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVG9vbFV0aWxzLmgi
IDMKZXh0ZXJuIGxvbmcKQml0WG9yKAogIGxvbmcgdmFsdWUxLAogIGxvbmcgdmFsdWUyKSA7CiMg
MTYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Ub29sVXRpbHMuaCIgMwpleHRl
cm4gbG9uZwpCaXROb3QobG9uZyB2YWx1ZSkgOwojIDE3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvVG9vbFV0aWxzLmgiIDMKZXh0ZXJuIGxvbmcKQml0U2hpZnQoCiAgbG9uZyB2
YWx1ZSwKICBzaG9ydCBjb3VudCkgOwoKCiNkZWZpbmUgSGlXb3JkKHgpICgoc2hvcnQpKChsb25n
KSh4KSA+PiAxNikpCiNkZWZpbmUgTG9Xb3JkKHgpICgoc2hvcnQpKHgpKQoKCiNwcmFnbWEgcGFj
ayhwb3ApCgoKfQojIDE1MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
Q29yZS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmlj
b2RlVXRpbGl0aWVzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9Vbmljb2RlVXRpbGl0aWVzLmgiIDMKI2RlZmluZSBfX1VOSUNPREVVVElMSVRJRVNfXyAKIyA0
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZVV0aWxpdGllcy5oIiAz
CmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQojIDc5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlVXRpbGl0aWVzLmgiIDMKdHlwZWRlZiBVSW50MTYg
VUNLZXlPdXRwdXQ7CnR5cGVkZWYgVUludDE2IFVDS2V5Q2hhclNlcTsKZW51bSB7CiAga1VDS2V5
T3V0cHV0U3RhdGVJbmRleE1hc2sgPSAweDQwMDAsCiAga1VDS2V5T3V0cHV0U2VxdWVuY2VJbmRl
eE1hc2sgPSAweDgwMDAsCiAga1VDS2V5T3V0cHV0VGVzdEZvckluZGV4TWFzayA9IDB4QzAwMCwK
ICBrVUNLZXlPdXRwdXRHZXRJbmRleE1hc2sgPSAweDNGRkYKfTsKIyAxMDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL1VuaWNvZGVVdGlsaXRpZXMuaCIgMwpzdHJ1Y3QgVUNLZXlT
dGF0ZVJlY29yZCB7CiAgVUNLZXlDaGFyU2VxIHN0YXRlWmVyb0NoYXJEYXRhOwogIFVJbnQxNiBz
dGF0ZVplcm9OZXh0U3RhdGU7CiAgVUludDE2IHN0YXRlRW50cnlDb3VudDsKICBVSW50MTYgc3Rh
dGVFbnRyeUZvcm1hdDsKCgogIFVJbnQzMiBzdGF0ZUVudHJ5RGF0YVsxXTsKfTsKdHlwZWRlZiBz
dHJ1Y3QgVUNLZXlTdGF0ZVJlY29yZCBVQ0tleVN0YXRlUmVjb3JkOwoKCgoKZW51bSB7CiAga1VD
S2V5U3RhdGVFbnRyeVRlcm1pbmFsRm9ybWF0ID0gMHgwMDAxLAogIGtVQ0tleVN0YXRlRW50cnlS
YW5nZUZvcm1hdCA9IDB4MDAwMgp9OwoKCgoKCgpzdHJ1Y3QgVUNLZXlTdGF0ZUVudHJ5VGVybWlu
YWwgewogIFVJbnQxNiBjdXJTdGF0ZTsKICBVQ0tleUNoYXJTZXEgY2hhckRhdGE7Cn07CnR5cGVk
ZWYgc3RydWN0IFVDS2V5U3RhdGVFbnRyeVRlcm1pbmFsIFVDS2V5U3RhdGVFbnRyeVRlcm1pbmFs
OwoKCgoKCgoKc3RydWN0IFVDS2V5U3RhdGVFbnRyeVJhbmdlIHsKICBVSW50MTYgY3VyU3RhdGVT
dGFydDsKICBVSW50OCBjdXJTdGF0ZVJhbmdlOwogIFVJbnQ4IGRlbHRhTXVsdGlwbGllcjsKICBV
Q0tleUNoYXJTZXEgY2hhckRhdGE7CiAgVUludDE2IG5leHRTdGF0ZTsKfTsKdHlwZWRlZiBzdHJ1
Y3QgVUNLZXlTdGF0ZUVudHJ5UmFuZ2UgVUNLZXlTdGF0ZUVudHJ5UmFuZ2U7CiMgMTU3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlVXRpbGl0aWVzLmgiIDMKc3RydWN0
IFVDS2V5Ym9hcmRUeXBlSGVhZGVyIHsKICBVSW50MzIga2V5Ym9hcmRUeXBlRmlyc3Q7CiAgVUlu
dDMyIGtleWJvYXJkVHlwZUxhc3Q7CiAgVUludDMyIGtleU1vZGlmaWVyc1RvVGFibGVOdW1PZmZz
ZXQ7CiAgVUludDMyIGtleVRvQ2hhclRhYmxlSW5kZXhPZmZzZXQ7CiAgVUludDMyIGtleVN0YXRl
UmVjb3Jkc0luZGV4T2Zmc2V0OwogIFVJbnQzMiBrZXlTdGF0ZVRlcm1pbmF0b3JzT2Zmc2V0Owog
IFVJbnQzMiBrZXlTZXF1ZW5jZURhdGFJbmRleE9mZnNldDsKfTsKdHlwZWRlZiBzdHJ1Y3QgVUNL
ZXlib2FyZFR5cGVIZWFkZXIgVUNLZXlib2FyZFR5cGVIZWFkZXI7CnN0cnVjdCBVQ0tleWJvYXJk
TGF5b3V0IHsKCiAgVUludDE2IGtleUxheW91dEhlYWRlckZvcm1hdDsKICBVSW50MTYga2V5TGF5
b3V0RGF0YVZlcnNpb247CiAgVUludDMyIGtleUxheW91dEZlYXR1cmVJbmZvT2Zmc2V0OwogIFVJ
bnQzMiBrZXlib2FyZFR5cGVDb3VudDsKICBVQ0tleWJvYXJkVHlwZUhlYWRlciBrZXlib2FyZFR5
cGVMaXN0WzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBVQ0tleWJvYXJkTGF5b3V0IFVDS2V5Ym9hcmRM
YXlvdXQ7CgpzdHJ1Y3QgVUNLZXlMYXlvdXRGZWF0dXJlSW5mbyB7CiAgVUludDE2IGtleUxheW91
dEZlYXR1cmVJbmZvRm9ybWF0OwogIFVJbnQxNiByZXNlcnZlZDsKICBVSW50MzIgbWF4T3V0cHV0
U3RyaW5nTGVuZ3RoOwp9Owp0eXBlZGVmIHN0cnVjdCBVQ0tleUxheW91dEZlYXR1cmVJbmZvIFVD
S2V5TGF5b3V0RmVhdHVyZUluZm87CgpzdHJ1Y3QgVUNLZXlNb2RpZmllcnNUb1RhYmxlTnVtIHsK
ICBVSW50MTYga2V5TW9kaWZpZXJzVG9UYWJsZU51bUZvcm1hdDsKICBVSW50MTYgZGVmYXVsdFRh
YmxlTnVtOwogIFVJbnQzMiBtb2RpZmllcnNDb3VudDsKICBVSW50OCB0YWJsZU51bVsxXTsKCgp9
Owp0eXBlZGVmIHN0cnVjdCBVQ0tleU1vZGlmaWVyc1RvVGFibGVOdW0gVUNLZXlNb2RpZmllcnNU
b1RhYmxlTnVtOwoKc3RydWN0IFVDS2V5VG9DaGFyVGFibGVJbmRleCB7CiAgVUludDE2IGtleVRv
Q2hhclRhYmxlSW5kZXhGb3JtYXQ7CiAgVUludDE2IGtleVRvQ2hhclRhYmxlU2l6ZTsKICBVSW50
MzIga2V5VG9DaGFyVGFibGVDb3VudDsKICBVSW50MzIga2V5VG9DaGFyVGFibGVPZmZzZXRzWzFd
OwoKCgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBVQ0tleVRvQ2hhclRhYmxlSW5kZXggVUNLZXlUb0No
YXJUYWJsZUluZGV4OwoKc3RydWN0IFVDS2V5U3RhdGVSZWNvcmRzSW5kZXggewogIFVJbnQxNiBr
ZXlTdGF0ZVJlY29yZHNJbmRleEZvcm1hdDsKICBVSW50MTYga2V5U3RhdGVSZWNvcmRDb3VudDsK
ICBVSW50MzIga2V5U3RhdGVSZWNvcmRPZmZzZXRzWzFdOwoKCgoKfTsKdHlwZWRlZiBzdHJ1Y3Qg
VUNLZXlTdGF0ZVJlY29yZHNJbmRleCBVQ0tleVN0YXRlUmVjb3Jkc0luZGV4OwoKc3RydWN0IFVD
S2V5U3RhdGVUZXJtaW5hdG9ycyB7CiAgVUludDE2IGtleVN0YXRlVGVybWluYXRvcnNGb3JtYXQ7
CiAgVUludDE2IGtleVN0YXRlVGVybWluYXRvckNvdW50OwogIFVDS2V5Q2hhclNlcSBrZXlTdGF0
ZVRlcm1pbmF0b3JzWzFdOwoKCgp9Owp0eXBlZGVmIHN0cnVjdCBVQ0tleVN0YXRlVGVybWluYXRv
cnMgVUNLZXlTdGF0ZVRlcm1pbmF0b3JzOwoKc3RydWN0IFVDS2V5U2VxdWVuY2VEYXRhSW5kZXgg
ewogIFVJbnQxNiBrZXlTZXF1ZW5jZURhdGFJbmRleEZvcm1hdDsKICBVSW50MTYgY2hhclNlcXVl
bmNlQ291bnQ7CiAgVUludDE2IGNoYXJTZXF1ZW5jZU9mZnNldHNbMV07CgoKCgoKfTsKdHlwZWRl
ZiBzdHJ1Y3QgVUNLZXlTZXF1ZW5jZURhdGFJbmRleCBVQ0tleVNlcXVlbmNlRGF0YUluZGV4OwoK
CgplbnVtIHsKICBrVUNLZXlMYXlvdXRIZWFkZXJGb3JtYXQgPSAweDEwMDIsCiAga1VDS2V5TGF5
b3V0RmVhdHVyZUluZm9Gb3JtYXQgPSAweDIwMDEsCiAga1VDS2V5TW9kaWZpZXJzVG9UYWJsZU51
bUZvcm1hdCA9IDB4MzAwMSwKICBrVUNLZXlUb0NoYXJUYWJsZUluZGV4Rm9ybWF0ID0gMHg0MDAx
LAogIGtVQ0tleVN0YXRlUmVjb3Jkc0luZGV4Rm9ybWF0ID0gMHg1MDAxLAogIGtVQ0tleVN0YXRl
VGVybWluYXRvcnNGb3JtYXQgPSAweDYwMDEsCiAga1VDS2V5U2VxdWVuY2VEYXRhSW5kZXhGb3Jt
YXQgPSAweDcwMDEKfTsKIyAyNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1Vu
aWNvZGVVdGlsaXRpZXMuaCIgMwplbnVtIHsKICBrVUNLZXlBY3Rpb25Eb3duID0gMCwKICBrVUNL
ZXlBY3Rpb25VcCA9IDEsCiAga1VDS2V5QWN0aW9uQXV0b0tleSA9IDIsCiAga1VDS2V5QWN0aW9u
RGlzcGxheSA9IDMKfTsKCgoKCgoKCmVudW0gewogIGtVQ0tleVRyYW5zbGF0ZU5vRGVhZEtleXNC
aXQgPSAwCn07CgplbnVtIHsKICBrVUNLZXlUcmFuc2xhdGVOb0RlYWRLZXlzTWFzayA9IDFMIDw8
IGtVQ0tleVRyYW5zbGF0ZU5vRGVhZEtleXNCaXQKfTsKIyAyODggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL1VuaWNvZGVVdGlsaXRpZXMuaCIgMwplbnVtIHsKICBrVW5pY29kZUNv
bGxhdGlvbkNsYXNzID0gJ3Vjb2wnCn07Cgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVDb2xsYXRvclJl
ZiogQ29sbGF0b3JSZWY7CnR5cGVkZWYgVUludDMyIFVDQ29sbGF0ZU9wdGlvbnM7CmVudW0gewoK
ICBrVUNDb2xsYXRlQ29tcG9zZUluc2Vuc2l0aXZlTWFzayA9IDFMIDw8IDEsCiAga1VDQ29sbGF0
ZVdpZHRoSW5zZW5zaXRpdmVNYXNrID0gMUwgPDwgMiwKICBrVUNDb2xsYXRlQ2FzZUluc2Vuc2l0
aXZlTWFzayA9IDFMIDw8IDMsCiAga1VDQ29sbGF0ZURpYWNyaXRJbnNlbnNpdGl2ZU1hc2sgPSAx
TCA8PCA0LAogIGtVQ0NvbGxhdGVQdW5jdHVhdGlvblNpZ25pZmljYW50TWFzayA9IDFMIDw8IDE1
LAogIGtVQ0NvbGxhdGVEaWdpdHNPdmVycmlkZU1hc2sgPSAxTCA8PCAxNiwKICBrVUNDb2xsYXRl
RGlnaXRzQXNOdW1iZXJNYXNrID0gMUwgPDwgMTcKfTsKCmVudW0gewogIGtVQ0NvbGxhdGVTdGFu
ZGFyZE9wdGlvbnMgPSBrVUNDb2xsYXRlQ29tcG9zZUluc2Vuc2l0aXZlTWFzayB8IGtVQ0NvbGxh
dGVXaWR0aEluc2Vuc2l0aXZlTWFzawp9OwoKCgoKCmVudW0gewogIGtVQ0NvbGxhdGVUeXBlSEZT
RXh0ZW5kZWQgPSAxCn07CgoKZW51bSB7CiAga1VDQ29sbGF0ZVR5cGVTb3VyY2VNYXNrID0gMHgw
MDAwMDBGRiwKICBrVUNDb2xsYXRlVHlwZVNoaWZ0Qml0cyA9IDI0Cn07CgplbnVtIHsKICBrVUND
b2xsYXRlVHlwZU1hc2sgPSBrVUNDb2xsYXRlVHlwZVNvdXJjZU1hc2sgPDwga1VDQ29sbGF0ZVR5
cGVTaGlmdEJpdHMKfTsKCgp0eXBlZGVmIFVJbnQzMiBVQ0NvbGxhdGlvblZhbHVlOwojIDM0MCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZVV0aWxpdGllcy5oIiAzCnR5
cGVkZWYgc3RydWN0IE9wYXF1ZVVDVHlwZVNlbGVjdFJlZiogVUNUeXBlU2VsZWN0UmVmOwoKCgoK
dHlwZWRlZiBTSW50MzIgVUNUeXBlU2VsZWN0Q29tcGFyZVJlc3VsdDsKCgoKCnR5cGVkZWYgVUlu
dDE2IFVDVFNXYWxrRGlyZWN0aW9uOwplbnVtIHsKICBrVUNUU0RpcmVjdGlvbk5leHQgPSAwLAog
IGtVQ1RTRGlyZWN0aW9uUHJldmlvdXMgPSAxCn07CiMgMzcyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9Vbmljb2RlVXRpbGl0aWVzLmgiIDMKdHlwZWRlZiBVSW50MTYgVUNUeXBl
U2VsZWN0T3B0aW9uczsKZW51bSB7CiAga1VDVFNPcHRpb25zTm9uZU1hc2sgPSAwLAogIGtVQ1RT
T3B0aW9uc1JlbGVhc2VTdHJpbmdNYXNrID0gMSwKICBrVUNUU09wdGlvbnNEYXRhSXNPcmRlcmVk
TWFzayA9IDIKfTsKCgoKCgoKdHlwZWRlZiBCb29sZWFuICggKiBJbmRleFRvVUNTdHJpbmdQcm9j
UHRyKShVSW50MzIgaW5kZXgsIHZvaWQgKmxpc3REYXRhUHRyLCB2b2lkICpyZWZjb24sIENGU3Ry
aW5nUmVmICpvdXRTdHJpbmcsIFVDVHlwZVNlbGVjdE9wdGlvbnMgKnRzT3B0aW9ucyk7Cgp0eXBl
ZGVmIEluZGV4VG9VQ1N0cmluZ1Byb2NQdHIgSW5kZXhUb1VDU3RyaW5nVVBQOwojIDM5NSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZVV0aWxpdGllcy5oIiAzCmV4dGVy
biBJbmRleFRvVUNTdHJpbmdVUFAKTmV3SW5kZXhUb1VDU3RyaW5nVVBQKEluZGV4VG9VQ1N0cmlu
Z1Byb2NQdHIgdXNlclJvdXRpbmUpIDsKIyA0MDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1VuaWNvZGVVdGlsaXRpZXMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlSW5kZXhUb1VD
U3RyaW5nVVBQKEluZGV4VG9VQ1N0cmluZ1VQUCB1c2VyVVBQKSA7CiMgNDE3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlVXRpbGl0aWVzLmgiIDMKZXh0ZXJuIEJvb2xl
YW4KSW52b2tlSW5kZXhUb1VDU3RyaW5nVVBQKAogIFVJbnQzMiBpbmRleCwKICB2b2lkICogbGlz
dERhdGFQdHIsCiAgdm9pZCAqIHJlZmNvbiwKICBDRlN0cmluZ1JlZiAqIG91dFN0cmluZywKICBV
Q1R5cGVTZWxlY3RPcHRpb25zICogdHNPcHRpb25zLAogIEluZGV4VG9VQ1N0cmluZ1VQUCB1c2Vy
VVBQKSA7CgoKCiAgICBpbmxpbmUgSW5kZXhUb1VDU3RyaW5nVVBQIE5ld0luZGV4VG9VQ1N0cmlu
Z1VQUChJbmRleFRvVUNTdHJpbmdQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91
dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUluZGV4VG9VQ1N0cmluZ1VQUChJbmRleFRv
VUNTdHJpbmdVUFApIHsgfQogICAgaW5saW5lIEJvb2xlYW4gSW52b2tlSW5kZXhUb1VDU3RyaW5n
VVBQKFVJbnQzMiBpbmRleCwgdm9pZCAqIGxpc3REYXRhUHRyLCB2b2lkICogcmVmY29uLCBDRlN0
cmluZ1JlZiAqIG91dFN0cmluZywgVUNUeXBlU2VsZWN0T3B0aW9ucyAqIHRzT3B0aW9ucywgSW5k
ZXhUb1VDU3RyaW5nVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoaW5kZXgsIGxpc3RE
YXRhUHRyLCByZWZjb24sIG91dFN0cmluZywgdHNPcHRpb25zKTsgfQojIDQ0MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZVV0aWxpdGllcy5oIiAzCmVudW0gewogIGtV
Q1R5cGVTZWxlY3RNYXhMaXN0U2l6ZSA9IChVSW50MzIpMHhGRkZGRkZGRgp9OwojIDQ1NCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZVV0aWxpdGllcy5oIiAzCmVudW0g
ewogIGtVbmljb2RlVGV4dEJyZWFrQ2xhc3MgPSAndWJyaycKfTsKCnR5cGVkZWYgc3RydWN0IE9w
YXF1ZVRleHRCcmVha0xvY2F0b3JSZWYqIFRleHRCcmVha0xvY2F0b3JSZWY7CgoKCgoKCgp0eXBl
ZGVmIFVJbnQzMiBVQ1RleHRCcmVha1R5cGU7CmVudW0gewoKCgoKCgogIGtVQ1RleHRCcmVha0No
YXJNYXNrID0gMUwgPDwgMCwKIyA0ODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L1VuaWNvZGVVdGlsaXRpZXMuaCIgMwogIGtVQ1RleHRCcmVha0NsdXN0ZXJNYXNrID0gMUwgPDwg
MiwKCgoKCgoKICBrVUNUZXh0QnJlYWtXb3JkTWFzayA9IDFMIDw8IDQsCiAga1VDVGV4dEJyZWFr
TGluZU1hc2sgPSAxTCA8PCA2LAoKCgoKCgogIGtVQ1RleHRCcmVha1BhcmFncmFwaE1hc2sgPSAx
TCA8PCA4Cn07Cgp0eXBlZGVmIFVJbnQzMiBVQ1RleHRCcmVha09wdGlvbnM7CmVudW0gewogIGtV
Q1RleHRCcmVha0xlYWRpbmdFZGdlTWFzayA9IDFMIDw8IDAsCiAga1VDVGV4dEJyZWFrR29CYWNr
d2FyZHNNYXNrID0gMUwgPDwgMSwKICBrVUNUZXh0QnJlYWtJdGVyYXRlTWFzayA9IDFMIDw8IDIK
fTsKIyA1MjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1VuaWNvZGVVdGlsaXRp
ZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKVUNLZXlUcmFuc2xhdGUoCiAgY29uc3QgVUNLZXlib2Fy
ZExheW91dCAqIGtleUxheW91dFB0ciwKICBVSW50MTYgdmlydHVhbEtleUNvZGUsCiAgVUludDE2
IGtleUFjdGlvbiwKICBVSW50MzIgbW9kaWZpZXJLZXlTdGF0ZSwKICBVSW50MzIga2V5Ym9hcmRU
eXBlLAogIE9wdGlvbkJpdHMga2V5VHJhbnNsYXRlT3B0aW9ucywKICBVSW50MzIgKiBkZWFkS2V5
U3RhdGUsCiAgVW5pQ2hhckNvdW50IG1heFN0cmluZ0xlbmd0aCwKICBVbmlDaGFyQ291bnQgKiBh
Y3R1YWxTdHJpbmdMZW5ndGgsCiAgVW5pQ2hhciB1bmljb2RlU3RyaW5nW10pIDsKIyA1NDkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1VuaWNvZGVVdGlsaXRpZXMuaCIgMwpleHRl
cm4gT1NTdGF0dXMKVUNDcmVhdGVDb2xsYXRvcigKICBMb2NhbGVSZWYgbG9jYWxlLAogIExvY2Fs
ZU9wZXJhdGlvblZhcmlhbnQgb3BWYXJpYW50LAogIFVDQ29sbGF0ZU9wdGlvbnMgb3B0aW9ucywK
ICBDb2xsYXRvclJlZiAqIGNvbGxhdG9yUmVmKSA7CiMgNTY1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9Vbmljb2RlVXRpbGl0aWVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClVDR2V0
Q29sbGF0aW9uS2V5KAogIENvbGxhdG9yUmVmIGNvbGxhdG9yUmVmLAogIGNvbnN0IFVuaUNoYXIg
KiB0ZXh0UHRyLAogIFVuaUNoYXJDb3VudCB0ZXh0TGVuZ3RoLAogIEl0ZW1Db3VudCBtYXhLZXlT
aXplLAogIEl0ZW1Db3VudCAqIGFjdHVhbEtleVNpemUsCiAgVUNDb2xsYXRpb25WYWx1ZSBjb2xs
YXRpb25LZXlbXSkgOwojIDU4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5p
Y29kZVV0aWxpdGllcy5oIiAzCmV4dGVybiBPU1N0YXR1cwpVQ0NvbXBhcmVDb2xsYXRpb25LZXlz
KAogIGNvbnN0IFVDQ29sbGF0aW9uVmFsdWUgKiBrZXkxUHRyLAogIEl0ZW1Db3VudCBrZXkxTGVu
Z3RoLAogIGNvbnN0IFVDQ29sbGF0aW9uVmFsdWUgKiBrZXkyUHRyLAogIEl0ZW1Db3VudCBrZXky
TGVuZ3RoLAogIEJvb2xlYW4gKiBlcXVpdmFsZW50LAogIFNJbnQzMiAqIG9yZGVyKSA7CiMgNjAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlVXRpbGl0aWVzLmgiIDMK
ZXh0ZXJuIE9TU3RhdHVzClVDQ29tcGFyZVRleHQoCiAgQ29sbGF0b3JSZWYgY29sbGF0b3JSZWYs
CiAgY29uc3QgVW5pQ2hhciAqIHRleHQxUHRyLAogIFVuaUNoYXJDb3VudCB0ZXh0MUxlbmd0aCwK
ICBjb25zdCBVbmlDaGFyICogdGV4dDJQdHIsCiAgVW5pQ2hhckNvdW50IHRleHQyTGVuZ3RoLAog
IEJvb2xlYW4gKiBlcXVpdmFsZW50LAogIFNJbnQzMiAqIG9yZGVyKSA7CiMgNjIwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlVXRpbGl0aWVzLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzClVDRGlzcG9zZUNvbGxhdG9yKENvbGxhdG9yUmVmICogY29sbGF0b3JSZWYpIDsKIyA2
MzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1VuaWNvZGVVdGlsaXRpZXMuaCIg
MwpleHRlcm4gT1NTdGF0dXMKVUNDb21wYXJlVGV4dERlZmF1bHQoCiAgVUNDb2xsYXRlT3B0aW9u
cyBvcHRpb25zLAogIGNvbnN0IFVuaUNoYXIgKiB0ZXh0MVB0ciwKICBVbmlDaGFyQ291bnQgdGV4
dDFMZW5ndGgsCiAgY29uc3QgVW5pQ2hhciAqIHRleHQyUHRyLAogIFVuaUNoYXJDb3VudCB0ZXh0
Mkxlbmd0aCwKICBCb29sZWFuICogZXF1aXZhbGVudCwKICBTSW50MzIgKiBvcmRlcikgOwojIDY1
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZVV0aWxpdGllcy5oIiAz
CmV4dGVybiBPU1N0YXR1cwpVQ0NvbXBhcmVUZXh0Tm9Mb2NhbGUoCiAgVUNDb2xsYXRlT3B0aW9u
cyBvcHRpb25zLAogIGNvbnN0IFVuaUNoYXIgKiB0ZXh0MVB0ciwKICBVbmlDaGFyQ291bnQgdGV4
dDFMZW5ndGgsCiAgY29uc3QgVW5pQ2hhciAqIHRleHQyUHRyLAogIFVuaUNoYXJDb3VudCB0ZXh0
Mkxlbmd0aCwKICBCb29sZWFuICogZXF1aXZhbGVudCwKICBTSW50MzIgKiBvcmRlcikgOwojIDcw
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZVV0aWxpdGllcy5oIiAz
CmV4dGVybiBPU1N0YXR1cwpVQ0NyZWF0ZVRleHRCcmVha0xvY2F0b3IoCiAgTG9jYWxlUmVmIGxv
Y2FsZSwKICBMb2NhbGVPcGVyYXRpb25WYXJpYW50IG9wVmFyaWFudCwKICBVQ1RleHRCcmVha1R5
cGUgYnJlYWtUeXBlcywKICBUZXh0QnJlYWtMb2NhdG9yUmVmICogYnJlYWtSZWYpIF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA3MjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL1VuaWNvZGVVdGlsaXRpZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKVUNGaW5kVGV4dEJyZWFr
KAogIFRleHRCcmVha0xvY2F0b3JSZWYgYnJlYWtSZWYsCiAgVUNUZXh0QnJlYWtUeXBlIGJyZWFr
VHlwZSwKICBVQ1RleHRCcmVha09wdGlvbnMgb3B0aW9ucywKICBjb25zdCBVbmlDaGFyICogdGV4
dFB0ciwKICBVbmlDaGFyQ291bnQgdGV4dExlbmd0aCwKICBVbmlDaGFyQXJyYXlPZmZzZXQgc3Rh
cnRPZmZzZXQsCiAgVW5pQ2hhckFycmF5T2Zmc2V0ICogYnJlYWtPZmZzZXQpIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKIyA3NDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L1VuaWNvZGVVdGlsaXRpZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKVUNEaXNwb3NlVGV4dEJyZWFr
TG9jYXRvcihUZXh0QnJlYWtMb2NhdG9yUmVmICogYnJlYWtSZWYpIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKIyA3OTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1VuaWNv
ZGVVdGlsaXRpZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKVUNUeXBlU2VsZWN0Q3JlYXRlU2VsZWN0
b3IoCiAgTG9jYWxlUmVmIGxvY2FsZSwKICBMb2NhbGVPcGVyYXRpb25WYXJpYW50IG9wVmFyaWFu
dCwKICBVQ0NvbGxhdGVPcHRpb25zIG9wdGlvbnMsCiAgVUNUeXBlU2VsZWN0UmVmICogbmV3U2Vs
ZWN0b3IpIDsKIyA4MjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1VuaWNvZGVV
dGlsaXRpZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKVUNUeXBlU2VsZWN0Rmx1c2hTZWxlY3RvckRh
dGEoVUNUeXBlU2VsZWN0UmVmIHJlZikgOwojIDg0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvVW5pY29kZVV0aWxpdGllcy5oIiAzCmV4dGVybiBPU1N0YXR1cwpVQ1R5cGVTZWxl
Y3RSZWxlYXNlU2VsZWN0b3IoVUNUeXBlU2VsZWN0UmVmICogcmVmKSA7CiMgODg3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlVXRpbGl0aWVzLmgiIDMKZXh0ZXJuIEJv
b2xlYW4KVUNUeXBlU2VsZWN0V291bGRSZXNldEJ1ZmZlcigKICBVQ1R5cGVTZWxlY3RSZWYgaW5S
ZWYsCiAgQ0ZTdHJpbmdSZWYgaW5UZXh0LAogIGRvdWJsZSBpbkV2ZW50VGltZSkgOwojIDkzOSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZVV0aWxpdGllcy5oIiAzCmV4
dGVybiBPU1N0YXR1cwpVQ1R5cGVTZWxlY3RBZGRLZXlUb1NlbGVjdG9yKAogIFVDVHlwZVNlbGVj
dFJlZiBpblJlZiwKICBDRlN0cmluZ1JlZiBpblRleHQsCiAgZG91YmxlIGluRXZlbnRUaW1lLAog
IEJvb2xlYW4gKiB1cGRhdGVGbGFnKSA7CiMgOTg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9Vbmljb2RlVXRpbGl0aWVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClVDVHlwZVNlbGVj
dENvbXBhcmUoCiAgVUNUeXBlU2VsZWN0UmVmIHJlZiwKICBDRlN0cmluZ1JlZiBpblRleHQsCiAg
VUNUeXBlU2VsZWN0Q29tcGFyZVJlc3VsdCAqIHJlc3VsdCkgOwojIDEwNTMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL1VuaWNvZGVVdGlsaXRpZXMuaCIgMwpleHRlcm4gT1NTdGF0
dXMKVUNUeXBlU2VsZWN0RmluZEl0ZW0oCiAgVUNUeXBlU2VsZWN0UmVmIHJlZiwKICBVSW50MzIg
bGlzdFNpemUsCiAgdm9pZCAqIGxpc3REYXRhUHRyLAogIHZvaWQgKiByZWZjb24sCiAgSW5kZXhU
b1VDU3RyaW5nVVBQIHVzZXJVUFAsCiAgVUludDMyICogY2xvc2VzdEl0ZW0pIDsKIyAxMTQ4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlVXRpbGl0aWVzLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzClVDVHlwZVNlbGVjdFdhbGtMaXN0KAogIFVDVHlwZVNlbGVjdFJlZiByZWYs
CiAgQ0ZTdHJpbmdSZWYgY3VyclNlbGVjdCwKICBVQ1RTV2Fsa0RpcmVjdGlvbiBkaXJlY3Rpb24s
CiAgVUludDMyIGxpc3RTaXplLAogIHZvaWQgKiBsaXN0RGF0YVB0ciwKICB2b2lkICogcmVmY29u
LAogIEluZGV4VG9VQ1N0cmluZ1VQUCB1c2VyVVBQLAogIFVJbnQzMiAqIGNsb3Nlc3RJdGVtKSA7
CgoKCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDE1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9mcC5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvZnAuaCIgMwojZGVmaW5lIF9fRlBfXyAKIyA1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvZnAuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyAx
MTk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9mcC5oIiAzCmV4dGVybiBjb25z
dCBkb3VibGVfdCBwaSA7CiMgMTIyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
ZnAuaCIgMwpleHRlcm4gZG91YmxlIGNvbXBvdW5kKGRvdWJsZSByYXRlLCBkb3VibGUgcGVyaW9k
cykgOwojIDEyMzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL2ZwLmgiIDMKZXh0
ZXJuIGRvdWJsZSBhbm51aXR5KGRvdWJsZSByYXRlLCBkb3VibGUgcGVyaW9kcykgOwojIDEyNTgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL2ZwLmgiIDMKZXh0ZXJuIGRvdWJsZV90
IHJhbmRvbXgoZG91YmxlX3QgKiB4KSA7CiMgMTI2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvZnAuaCIgMwp0eXBlZGVmIHNob3J0IHJlbG9wOwplbnVtIHsKICBHUkVBVEVSVEhB
TiA9IDAsCiAgTEVTU1RIQU4gPSAxLAogIEVRVUFMVE8gPSAyLAogIFVOT1JERVJFRCA9IDMKfTsK
IyAxMjg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9mcC5oIiAzCmV4dGVybiBy
ZWxvcCByZWxhdGlvbihkb3VibGVfdCB4LCBkb3VibGVfdCB5KSA7CiMgMTMxNyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvZnAuaCIgMwojZGVmaW5lIFNJR0RJR0xFTiAzNgoKI2Rl
ZmluZSBERUNTVFJPVVRMRU4gODAKI2RlZmluZSBGTE9BVERFQ0lNQUwgKChjaGFyKSgwKSkKI2Rl
ZmluZSBGSVhFRERFQ0lNQUwgKChjaGFyKSgxKSkKc3RydWN0IGRlY2ltYWwgewogICAgY2hhciBz
Z247CiAgICBjaGFyIHVudXNlZDsKICAgIHNob3J0IGV4cDsKICAgIHN0cnVjdCB7CiAgICAgICAg
dW5zaWduZWQgY2hhciBsZW5ndGg7CiAgICAgICAgdW5zaWduZWQgY2hhciB0ZXh0WzM2XTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIHVudXNlZDsKICAgIH0gc2lnOwp9Owp0eXBlZGVmIHN0cnVjdCBk
ZWNpbWFsIGRlY2ltYWw7CgpzdHJ1Y3QgZGVjZm9ybSB7CiAgICBjaGFyIHN0eWxlOwogICAgY2hh
ciB1bnVzZWQ7CiAgICBzaG9ydCBkaWdpdHM7Cn07CnR5cGVkZWYgc3RydWN0IGRlY2Zvcm0gZGVj
Zm9ybTsKIyAxMzQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9mcC5oIiAzCmV4
dGVybiB2b2lkIG51bTJkZWMoY29uc3QgZGVjZm9ybSAqZiwgZG91YmxlX3QgeCwgZGVjaW1hbCAq
ZCkgOwojIDEzNTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL2ZwLmgiIDMKZXh0
ZXJuIGRvdWJsZV90IGRlYzJudW0oY29uc3QgZGVjaW1hbCAqIGQpIDsKIyAxMzcwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9mcC5oIiAzCmV4dGVybiB2b2lkIGRlYzJzdHIoY29u
c3QgZGVjZm9ybSAqZiwgY29uc3QgZGVjaW1hbCAqZCwgY2hhciAqcykgOwojIDEzODEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL2ZwLmgiIDMKZXh0ZXJuIHZvaWQgc3RyMmRlYyhj
b25zdCBjaGFyICpzLCBzaG9ydCAqaXgsIGRlY2ltYWwgKmQsIHNob3J0ICp2cCkgOwojIDEzOTIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL2ZwLmgiIDMKZXh0ZXJuIGZsb2F0IGRl
YzJmKGNvbnN0IGRlY2ltYWwgKiBkKSA7CiMgMTQwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvZnAuaCIgMwpleHRlcm4gc2hvcnQgZGVjMnMoY29uc3QgZGVjaW1hbCAqIGQpIDsK
IyAxNDE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9mcC5oIiAzCmV4dGVybiBs
b25nIGRlYzJsKGNvbnN0IGRlY2ltYWwgKiBkKSA7CiMgMjMxNSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvZnAuaCIgMwpleHRlcm4gcmVsb3AgcmVsYXRpb25sKGxvbmcgZG91Ymxl
IHgsIGxvbmcgZG91YmxlIHkpOwojIDIzMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL2ZwLmgiIDMKZXh0ZXJuIHZvaWQgbnVtMmRlY2woY29uc3QgZGVjZm9ybSAqZiwgbG9uZyBk
b3VibGUgeCwgZGVjaW1hbCAqZCk7CiMgMjM1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvZnAuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgZGVjMm51bWwoY29uc3QgZGVjaW1hbCAq
IGQpOwojIDIzODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL2ZwLmgiIDMKZXh0
ZXJuIGRvdWJsZSB4ODB0b2QoY29uc3QgZXh0ZW5kZWQ4MCAqIHg4MCkgOwojIDIzOTEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL2ZwLmgiIDMKZXh0ZXJuIHZvaWQgZHRveDgwKGNv
bnN0IGRvdWJsZSAqeCwgZXh0ZW5kZWQ4MCAqeDgwKSA7CiMgMjQxMCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvZnAuaCIgMwpleHRlcm4gdm9pZCB4ODB0b2xkKGNvbnN0IGV4dGVu
ZGVkODAgKng4MCwgbG9uZyBkb3VibGUgKngpOwojIDI0MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL2ZwLmgiIDMKZXh0ZXJuIHZvaWQgbGR0b3g4MChjb25zdCBsb25nIGRvdWJs
ZSAqeCwgZXh0ZW5kZWQ4MCAqeDgwKTsKIyAyNDQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9mcC5oIiAzCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDE1OCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVk
ZS9mZW52LmgiIDEgMyA0CiMgMjMgIi91c3IvaW5jbHVkZS9mZW52LmgiIDMgNAojZGVmaW5lIF9f
RkVOVl9IX18gCgoKI3ByYWdtYSBHQ0MgZmVudgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FyY2hp
dGVjdHVyZS9pMzg2L2ZlbnYuaCIgMSAzIDQKIyAzMiAiL3Vzci9pbmNsdWRlL2FyY2hpdGVjdHVy
ZS9pMzg2L2ZlbnYuaCIgMyA0CiNkZWZpbmUgX19GRU5WX18gCgoKCgoKCiNwcmFnbWEgR0NDIGZl
bnYKCgoKZXh0ZXJuICJDIiB7CiMgODcgIi91c3IvaW5jbHVkZS9hcmNoaXRlY3R1cmUvaTM4Ni9m
ZW52LmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiAgICB1bnNpZ25lZCBzaG9ydCBfX2NvbnRyb2w7
CiAgICB1bnNpZ25lZCBzaG9ydCBfX3N0YXR1czsKICAgIHVuc2lnbmVkIGludCBfX214Y3NyOwog
ICAgY2hhciBfX3Jlc2VydmVkWzhdOwp9IGZlbnZfdDsKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
ZmV4Y2VwdF90OwoKCiNkZWZpbmUgRkVfSU5FWEFDVCAweDAwMjAKI2RlZmluZSBGRV9VTkRFUkZM
T1cgMHgwMDEwCiNkZWZpbmUgRkVfT1ZFUkZMT1cgMHgwMDA4CiNkZWZpbmUgRkVfRElWQllaRVJP
IDB4MDAwNAojZGVmaW5lIEZFX0lOVkFMSUQgMHgwMDAxCiNkZWZpbmUgRkVfQUxMX0VYQ0VQVCAw
eDAwM0QKCgojZGVmaW5lIEZFX1RPTkVBUkVTVCAweDAwMDAKI2RlZmluZSBGRV9ET1dOV0FSRCAw
eDA0MDAKI2RlZmluZSBGRV9VUFdBUkQgMHgwODAwCiNkZWZpbmUgRkVfVE9XQVJEWkVSTyAweDBD
MDAKCgpleHRlcm4gY29uc3QgZmVudl90IF9GRV9ERkxfRU5WOwojZGVmaW5lIEZFX0RGTF9FTlYg
Jl9GRV9ERkxfRU5WCiMgMTMzICIvdXNyL2luY2x1ZGUvYXJjaGl0ZWN0dXJlL2kzODYvZmVudi5o
IiAzIDQKZXh0ZXJuIGNvbnN0IGZlbnZfdCBfRkVfREZMX0RJU0FCTEVfU1NFX0RFTk9STVNfRU5W
OwojZGVmaW5lIEZFX0RGTF9ESVNBQkxFX1NTRV9ERU5PUk1TX0VOViAmX0ZFX0RGTF9ESVNBQkxF
X1NTRV9ERU5PUk1TX0VOVgojIDE0NyAiL3Vzci9pbmNsdWRlL2FyY2hpdGVjdHVyZS9pMzg2L2Zl
bnYuaCIgMyA0CmV4dGVybiBpbnQgZmVjbGVhcmV4Y2VwdChpbnQgKTsKIyAxNTcgIi91c3IvaW5j
bHVkZS9hcmNoaXRlY3R1cmUvaTM4Ni9mZW52LmgiIDMgNApleHRlcm4gaW50IGZlZ2V0ZXhjZXB0
ZmxhZyhmZXhjZXB0X3QgKiAsIGludCApOwojIDE2NiAiL3Vzci9pbmNsdWRlL2FyY2hpdGVjdHVy
ZS9pMzg2L2ZlbnYuaCIgMyA0CmV4dGVybiBpbnQgZmVyYWlzZWV4Y2VwdChpbnQgKTsKIyAxNzkg
Ii91c3IvaW5jbHVkZS9hcmNoaXRlY3R1cmUvaTM4Ni9mZW52LmgiIDMgNApleHRlcm4gaW50IGZl
c2V0ZXhjZXB0ZmxhZyhjb25zdCBmZXhjZXB0X3QgKiAsIGludCApOwojIDE5NCAiL3Vzci9pbmNs
dWRlL2FyY2hpdGVjdHVyZS9pMzg2L2ZlbnYuaCIgMyA0CmV4dGVybiBpbnQgZmV0ZXN0ZXhjZXB0
KGludCApOwojIDIwOCAiL3Vzci9pbmNsdWRlL2FyY2hpdGVjdHVyZS9pMzg2L2ZlbnYuaCIgMyA0
CmV4dGVybiBpbnQgZmVnZXRyb3VuZCh2b2lkKTsKIyAyMTkgIi91c3IvaW5jbHVkZS9hcmNoaXRl
Y3R1cmUvaTM4Ni9mZW52LmgiIDMgNApleHRlcm4gaW50IGZlc2V0cm91bmQoaW50ICk7CiMgMjMx
ICIvdXNyL2luY2x1ZGUvYXJjaGl0ZWN0dXJlL2kzODYvZmVudi5oIiAzIDQKZXh0ZXJuIGludCBm
ZWdldGVudihmZW52X3QgKiApOwojIDI0MSAiL3Vzci9pbmNsdWRlL2FyY2hpdGVjdHVyZS9pMzg2
L2ZlbnYuaCIgMyA0CmV4dGVybiBpbnQgZmVob2xkZXhjZXB0KGZlbnZfdCAqICk7CiMgMjY2ICIv
dXNyL2luY2x1ZGUvYXJjaGl0ZWN0dXJlL2kzODYvZmVudi5oIiAzIDQKZXh0ZXJuIGludCBmZXNl
dGVudihjb25zdCBmZW52X3QgKiApOwojIDI3OSAiL3Vzci9pbmNsdWRlL2FyY2hpdGVjdHVyZS9p
Mzg2L2ZlbnYuaCIgMyA0CmV4dGVybiBpbnQgZmV1cGRhdGVlbnYoY29uc3QgZmVudl90ICogKTsK
CgoKfQojIDMzICIvdXNyL2luY2x1ZGUvZmVudi5oIiAyIDMgNAojIDE2MSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAyIDMKCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVuY29kaW5nQ29udmVydGVyLmgiIDEgMwojIDE3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIg
MwojZGVmaW5lIF9fVEVYVEVOQ09ESU5HQ09OVkVSVEVSX18gCiMgNDAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL1RleHRFbmNvZGluZ0NvbnZlcnRlci5oIiAzCmV4dGVybiAiQyIg
ewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQoKdHlwZWRlZiBPU1R5cGUgVEVDUGx1Z2luU2lnbmF0
dXJlOwp0eXBlZGVmIFVJbnQzMiBURUNQbHVnaW5WZXJzaW9uOwoKZW51bSB7CiAga1RFQ1NpZ25h
dHVyZSA9ICdlbmN2JywKICBrVEVDVW5pY29kZVBsdWdpblNpZ25hdHVyZSA9ICdwdW5pJywKICBr
VEVDSmFwYW5lc2VQbHVnaW5TaWduYXR1cmUgPSAncGpwbicsCiAga1RFQ0NoaW5lc2VQbHVnaW5T
aWduYXR1cmUgPSAncHpobycsCiAga1RFQ0tvcmVhblBsdWdpblNpZ25hdHVyZSA9ICdwa29yJwp9
OwoKCgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVURUNPYmplY3RSZWYqIFRFQ09iamVjdFJlZjsKdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlVEVDU25pZmZlck9iamVjdFJlZiogVEVDU25pZmZlck9iamVjdFJl
ZjsKdHlwZWRlZiBPU1R5cGUgVEVDUGx1Z2luU2lnOwpzdHJ1Y3QgVEVDQ29udmVyc2lvbkluZm8g
ewogIFRleHRFbmNvZGluZyBzb3VyY2VFbmNvZGluZzsKICBUZXh0RW5jb2RpbmcgZGVzdGluYXRp
b25FbmNvZGluZzsKICBVSW50MTYgcmVzZXJ2ZWQxOwogIFVJbnQxNiByZXNlcnZlZDI7Cn07CnR5
cGVkZWYgc3RydWN0IFRFQ0NvbnZlcnNpb25JbmZvIFRFQ0NvbnZlcnNpb25JbmZvOwojIDc2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIg
Mwp0eXBlZGVmIFVJbnQzMiBURUNJbnRlcm5ldE5hbWVVc2FnZU1hc2s7CmVudW0gewoKCgoKCgog
IGtURUNJbnRlcm5ldE5hbWVEZWZhdWx0VXNhZ2VNYXNrID0gMCwKCgoKCgogIGtURUNJbnRlcm5l
dE5hbWVTdHJpY3RVc2FnZU1hc2sgPSAxLAojIDk5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9UZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIgMwogIGtURUNJbnRlcm5ldE5hbWVUb2xl
cmFudFVzYWdlTWFzayA9IDIKfTsKCgplbnVtIHsKICBrVEVDX01JQkVudW1Eb250Q2FyZSA9IC0x
Cn07CgoKZW51bSB7CiAga1RFQ0Rpc2FibGVGYWxsYmFja3NCaXQgPSAxNiwKICBrVEVDRGlzYWJs
ZUxvb3NlTWFwcGluZ3NCaXQgPSAxNwp9OwoKZW51bSB7CiAga1RFQ0Rpc2FibGVGYWxsYmFja3NN
YXNrID0gMUwgPDwga1RFQ0Rpc2FibGVGYWxsYmFja3NCaXQsCiAga1RFQ0Rpc2FibGVMb29zZU1h
cHBpbmdzTWFzayA9IDFMIDw8IGtURUNEaXNhYmxlTG9vc2VNYXBwaW5nc0JpdAp9OwojIDEyOCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVuY29kaW5nQ29udmVydGVyLmgi
IDMKZXh0ZXJuIE9TU3RhdHVzClRFQ0NvdW50QXZhaWxhYmxlVGV4dEVuY29kaW5ncyhJdGVtQ291
bnQgKiBudW1iZXJFbmNvZGluZ3MpIDsKIyAxNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1RleHRFbmNvZGluZ0NvbnZlcnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpURUNHZXRB
dmFpbGFibGVUZXh0RW5jb2RpbmdzKAogIFRleHRFbmNvZGluZyBhdmFpbGFibGVFbmNvZGluZ3Nb
XSwKICBJdGVtQ291bnQgbWF4QXZhaWxhYmxlRW5jb2RpbmdzLAogIEl0ZW1Db3VudCAqIGFjdHVh
bEF2YWlsYWJsZUVuY29kaW5ncykgOwojIDE1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvVGV4dEVuY29kaW5nQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRFQ0NvdW50
RGlyZWN0VGV4dEVuY29kaW5nQ29udmVyc2lvbnMoSXRlbUNvdW50ICogbnVtYmVyT2ZFbmNvZGlu
Z3MpIDsKIyAxNzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRFbmNvZGlu
Z0NvbnZlcnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpURUNHZXREaXJlY3RUZXh0RW5jb2RpbmdD
b252ZXJzaW9ucygKICBURUNDb252ZXJzaW9uSW5mbyBhdmFpbGFibGVDb252ZXJzaW9uc1tdLAog
IEl0ZW1Db3VudCBtYXhBdmFpbGFibGVDb252ZXJzaW9ucywKICBJdGVtQ291bnQgKiBhY3R1YWxB
dmFpbGFibGVDb252ZXJzaW9ucykgOwojIDE4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvVGV4dEVuY29kaW5nQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRFQ0NvdW50
RGVzdGluYXRpb25UZXh0RW5jb2RpbmdzKAogIFRleHRFbmNvZGluZyBpbnB1dEVuY29kaW5nLAog
IEl0ZW1Db3VudCAqIG51bWJlck9mRW5jb2RpbmdzKSA7CiMgMjAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9UZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0
dXMKVEVDR2V0RGVzdGluYXRpb25UZXh0RW5jb2RpbmdzKAogIFRleHRFbmNvZGluZyBpbnB1dEVu
Y29kaW5nLAogIFRleHRFbmNvZGluZyBkZXN0aW5hdGlvbkVuY29kaW5nc1tdLAogIEl0ZW1Db3Vu
dCBtYXhEZXN0aW5hdGlvbkVuY29kaW5ncywKICBJdGVtQ291bnQgKiBhY3R1YWxEZXN0aW5hdGlv
bkVuY29kaW5ncykgOwojIDIxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4
dEVuY29kaW5nQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRFQ0dldFRleHRFbmNvZGlu
Z0ludGVybmV0TmFtZSgKICBUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nLAogIFN0cjI1NSBlbmNv
ZGluZ05hbWUpIDsKIyAyMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRF
bmNvZGluZ0NvbnZlcnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpURUNHZXRUZXh0RW5jb2RpbmdG
cm9tSW50ZXJuZXROYW1lKAogIFRleHRFbmNvZGluZyAqIHRleHRFbmNvZGluZywKICBDb25zdFN0
cjI1NVBhcmFtIGVuY29kaW5nTmFtZSkgOwojIDI0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvVGV4dEVuY29kaW5nQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRFQ0Ny
ZWF0ZUNvbnZlcnRlcigKICBURUNPYmplY3RSZWYgKiBuZXdFbmNvZGluZ0NvbnZlcnRlciwKICBU
ZXh0RW5jb2RpbmcgaW5wdXRFbmNvZGluZywKICBUZXh0RW5jb2Rpbmcgb3V0cHV0RW5jb2Rpbmcp
IDsKIyAyNjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRFbmNvZGluZ0Nv
bnZlcnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpURUNDcmVhdGVDb252ZXJ0ZXJGcm9tUGF0aCgK
ICBURUNPYmplY3RSZWYgKiBuZXdFbmNvZGluZ0NvbnZlcnRlciwKICBjb25zdCBUZXh0RW5jb2Rp
bmcgaW5QYXRoW10sCiAgSXRlbUNvdW50IGluRW5jb2RpbmdzKSA7CiMgMjc3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIgMwpleHRlcm4g
T1NTdGF0dXMKVEVDRGlzcG9zZUNvbnZlcnRlcihURUNPYmplY3RSZWYgbmV3RW5jb2RpbmdDb252
ZXJ0ZXIpIDsKIyAyOTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRFbmNv
ZGluZ0NvbnZlcnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpURUNDbGVhckNvbnZlcnRlckNvbnRl
eHRJbmZvKFRFQ09iamVjdFJlZiBlbmNvZGluZ0NvbnZlcnRlcikgOwojIDMwMiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVuY29kaW5nQ29udmVydGVyLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzClRFQ0NvbnZlcnRUZXh0KAogIFRFQ09iamVjdFJlZiBlbmNvZGluZ0NvbnZlcnRl
ciwKICBDb25zdFRleHRQdHIgaW5wdXRCdWZmZXIsCiAgQnl0ZUNvdW50IGlucHV0QnVmZmVyTGVu
Z3RoLAogIEJ5dGVDb3VudCAqIGFjdHVhbElucHV0TGVuZ3RoLAogIFRleHRQdHIgb3V0cHV0QnVm
ZmVyLAogIEJ5dGVDb3VudCBvdXRwdXRCdWZmZXJMZW5ndGgsCiAgQnl0ZUNvdW50ICogYWN0dWFs
T3V0cHV0TGVuZ3RoKSA7CiMgMzIxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9U
ZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKVEVDRmx1c2hUZXh0KAog
IFRFQ09iamVjdFJlZiBlbmNvZGluZ0NvbnZlcnRlciwKICBUZXh0UHRyIG91dHB1dEJ1ZmZlciwK
ICBCeXRlQ291bnQgb3V0cHV0QnVmZmVyTGVuZ3RoLAogIEJ5dGVDb3VudCAqIGFjdHVhbE91dHB1
dExlbmd0aCkgOwojIDMzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVu
Y29kaW5nQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRFQ0NvdW50U3ViVGV4dEVuY29k
aW5ncygKICBUZXh0RW5jb2RpbmcgaW5wdXRFbmNvZGluZywKICBJdGVtQ291bnQgKiBudW1iZXJP
ZkVuY29kaW5ncykgOwojIDM1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4
dEVuY29kaW5nQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRFQ0dldFN1YlRleHRFbmNv
ZGluZ3MoCiAgVGV4dEVuY29kaW5nIGlucHV0RW5jb2RpbmcsCiAgVGV4dEVuY29kaW5nIHN1YkVu
Y29kaW5nc1tdLAogIEl0ZW1Db3VudCBtYXhTdWJFbmNvZGluZ3MsCiAgSXRlbUNvdW50ICogYWN0
dWFsU3ViRW5jb2RpbmdzKSA7CiMgMzgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9UZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKVEVDR2V0RW5jb2Rp
bmdMaXN0KAogIFRFQ09iamVjdFJlZiBlbmNvZGluZ0NvbnZlcnRlciwKICBJdGVtQ291bnQgKiBu
dW1FbmNvZGluZ3MsCiAgSGFuZGxlICogZW5jb2RpbmdMaXN0KSA7CiMgMzk2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIgMwpleHRlcm4g
T1NTdGF0dXMKVEVDQ3JlYXRlT25lVG9NYW55Q29udmVydGVyKAogIFRFQ09iamVjdFJlZiAqIG5l
d0VuY29kaW5nQ29udmVydGVyLAogIFRleHRFbmNvZGluZyBpbnB1dEVuY29kaW5nLAogIEl0ZW1D
b3VudCBudW1PdXRwdXRFbmNvZGluZ3MsCiAgY29uc3QgVGV4dEVuY29kaW5nIG91dHB1dEVuY29k
aW5nc1tdKSA7CiMgNDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RW5j
b2RpbmdDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKVEVDQ29udmVydFRleHRUb011bHRp
cGxlRW5jb2RpbmdzKAogIFRFQ09iamVjdFJlZiBlbmNvZGluZ0NvbnZlcnRlciwKICBDb25zdFRl
eHRQdHIgaW5wdXRCdWZmZXIsCiAgQnl0ZUNvdW50IGlucHV0QnVmZmVyTGVuZ3RoLAogIEJ5dGVD
b3VudCAqIGFjdHVhbElucHV0TGVuZ3RoLAogIFRleHRQdHIgb3V0cHV0QnVmZmVyLAogIEJ5dGVD
b3VudCBvdXRwdXRCdWZmZXJMZW5ndGgsCiAgQnl0ZUNvdW50ICogYWN0dWFsT3V0cHV0TGVuZ3Ro
LAogIFRleHRFbmNvZGluZ1J1biBvdXRFbmNvZGluZ3NCdWZmZXJbXSwKICBJdGVtQ291bnQgbWF4
T3V0RW5jb2RpbmdSdW5zLAogIEl0ZW1Db3VudCAqIGFjdHVhbE91dEVuY29kaW5nUnVucykgOwoj
IDQzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVuY29kaW5nQ29udmVy
dGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRFQ0ZsdXNoTXVsdGlwbGVFbmNvZGluZ3MoCiAgVEVD
T2JqZWN0UmVmIGVuY29kaW5nQ29udmVydGVyLAogIFRleHRQdHIgb3V0cHV0QnVmZmVyLAogIEJ5
dGVDb3VudCBvdXRwdXRCdWZmZXJMZW5ndGgsCiAgQnl0ZUNvdW50ICogYWN0dWFsT3V0cHV0TGVu
Z3RoLAogIFRleHRFbmNvZGluZ1J1biBvdXRFbmNvZGluZ3NCdWZmZXJbXSwKICBJdGVtQ291bnQg
bWF4T3V0RW5jb2RpbmdSdW5zLAogIEl0ZW1Db3VudCAqIGFjdHVhbE91dEVuY29kaW5nUnVucykg
OwojIDQ1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVuY29kaW5nQ29u
dmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRFQ0NvdW50V2ViVGV4dEVuY29kaW5ncygKICBS
ZWdpb25Db2RlIGxvY2FsZSwKICBJdGVtQ291bnQgKiBudW1iZXJFbmNvZGluZ3MpIDsKIyA0Njgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRFbmNvZGluZ0NvbnZlcnRlci5o
IiAzCmV4dGVybiBPU1N0YXR1cwpURUNHZXRXZWJUZXh0RW5jb2RpbmdzKAogIFJlZ2lvbkNvZGUg
bG9jYWxlLAogIFRleHRFbmNvZGluZyBhdmFpbGFibGVFbmNvZGluZ3NbXSwKICBJdGVtQ291bnQg
bWF4QXZhaWxhYmxlRW5jb2RpbmdzLAogIEl0ZW1Db3VudCAqIGFjdHVhbEF2YWlsYWJsZUVuY29k
aW5ncykgOwojIDQ4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVuY29k
aW5nQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRFQ0NvdW50TWFpbFRleHRFbmNvZGlu
Z3MoCiAgUmVnaW9uQ29kZSBsb2NhbGUsCiAgSXRlbUNvdW50ICogbnVtYmVyRW5jb2RpbmdzKSA7
CiMgNDk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RW5jb2RpbmdDb252
ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKVEVDR2V0TWFpbFRleHRFbmNvZGluZ3MoCiAgUmVn
aW9uQ29kZSBsb2NhbGUsCiAgVGV4dEVuY29kaW5nIGF2YWlsYWJsZUVuY29kaW5nc1tdLAogIEl0
ZW1Db3VudCBtYXhBdmFpbGFibGVFbmNvZGluZ3MsCiAgSXRlbUNvdW50ICogYWN0dWFsQXZhaWxh
YmxlRW5jb2RpbmdzKSA7CiMgNTE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9U
ZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKVEVDQ291bnRBdmFpbGFi
bGVTbmlmZmVycyhJdGVtQ291bnQgKiBudW1iZXJPZkVuY29kaW5ncykgOwojIDUyNyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVuY29kaW5nQ29udmVydGVyLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzClRFQ0dldEF2YWlsYWJsZVNuaWZmZXJzKAogIFRleHRFbmNvZGluZyBhdmFp
bGFibGVTbmlmZmVyc1tdLAogIEl0ZW1Db3VudCBtYXhBdmFpbGFibGVTbmlmZmVycywKICBJdGVt
Q291bnQgKiBhY3R1YWxBdmFpbGFibGVTbmlmZmVycykgOwojIDU0MiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVuY29kaW5nQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzClRFQ0NyZWF0ZVNuaWZmZXIoCiAgVEVDU25pZmZlck9iamVjdFJlZiAqIGVuY29kaW5nU25p
ZmZlciwKICBjb25zdCBUZXh0RW5jb2RpbmcgdGVzdEVuY29kaW5nc1tdLAogIEl0ZW1Db3VudCBu
dW1UZXh0RW5jb2RpbmdzKSA7CiMgNTU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9UZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKVEVDU25pZmZUZXh0
RW5jb2RpbmcoCiAgVEVDU25pZmZlck9iamVjdFJlZiBlbmNvZGluZ1NuaWZmZXIsCiAgQ29uc3RU
ZXh0UHRyIGlucHV0QnVmZmVyLAogIEJ5dGVDb3VudCBpbnB1dEJ1ZmZlckxlbmd0aCwKICBUZXh0
RW5jb2RpbmcgdGVzdEVuY29kaW5nc1tdLAogIEl0ZW1Db3VudCBudW1UZXh0RW5jb2RpbmdzLAog
IEl0ZW1Db3VudCBudW1FcnJzQXJyYXlbXSwKICBJdGVtQ291bnQgbWF4RXJycywKICBJdGVtQ291
bnQgbnVtRmVhdHVyZXNBcnJheVtdLAogIEl0ZW1Db3VudCBtYXhGZWF0dXJlcykgOwojIDU3OCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVuY29kaW5nQ29udmVydGVyLmgi
IDMKZXh0ZXJuIE9TU3RhdHVzClRFQ0Rpc3Bvc2VTbmlmZmVyKFRFQ1NuaWZmZXJPYmplY3RSZWYg
ZW5jb2RpbmdTbmlmZmVyKSA7CiMgNTkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9UZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKVEVDQ2xlYXJTbmlm
ZmVyQ29udGV4dEluZm8oVEVDU25pZmZlck9iamVjdFJlZiBlbmNvZGluZ1NuaWZmZXIpIDsKIyA2
MzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRFbmNvZGluZ0NvbnZlcnRl
ci5oIiAzCmV4dGVybiBPU1N0YXR1cwpURUNTZXRCYXNpY09wdGlvbnMoCiAgVEVDT2JqZWN0UmVm
IGVuY29kaW5nQ29udmVydGVyLAogIE9wdGlvbkJpdHMgY29udHJvbEZsYWdzKSA7CiMgNjg3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RW5jb2RpbmdDb252ZXJ0ZXIuaCIg
MwpleHRlcm4gT1NTdGF0dXMKVEVDQ29weVRleHRFbmNvZGluZ0ludGVybmV0TmFtZUFuZE1JQigK
ICBUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nLAogIFRFQ0ludGVybmV0TmFtZVVzYWdlTWFzayB1
c2FnZSwKICBDRlN0cmluZ1JlZiAqIGVuY29kaW5nTmFtZVB0ciwKICBTSW50MzIgKiBtaWJFbnVt
UHRyKSA7CiMgNzIxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RW5jb2Rp
bmdDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKVEVDR2V0VGV4dEVuY29kaW5nRnJvbUlu
dGVybmV0TmFtZU9yTUlCKAogIFRleHRFbmNvZGluZyAqIHRleHRFbmNvZGluZ1B0ciwKICBURUNJ
bnRlcm5ldE5hbWVVc2FnZU1hc2sgdXNhZ2UsCiAgQ0ZTdHJpbmdSZWYgZW5jb2RpbmdOYW1lLAog
IFNJbnQzMiBtaWJFbnVtKSA7CgoKCgoKCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDE2MyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAyIDMKCgoKIyAxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlQ29udmVydGVyLmgiIDEgMwoj
IDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlQ29udmVydGVyLmgi
IDMKI2RlZmluZSBfX1VOSUNPREVDT05WRVJURVJfXyAKIyA0MCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvVW5pY29kZUNvbnZlcnRlci5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFn
bWEgcGFjayhwdXNoLCAyKQoKCnR5cGVkZWYgc3RydWN0IE9wYXF1ZVRleHRUb1VuaWNvZGVJbmZv
KiBUZXh0VG9Vbmljb2RlSW5mbzsKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVW5pY29kZVRvVGV4dElu
Zm8qIFVuaWNvZGVUb1RleHRJbmZvOwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVVbmljb2RlVG9UZXh0
UnVuSW5mbyogVW5pY29kZVRvVGV4dFJ1bkluZm87CnR5cGVkZWYgY29uc3QgVGV4dFRvVW5pY29k
ZUluZm8gQ29uc3RUZXh0VG9Vbmljb2RlSW5mbzsKdHlwZWRlZiBjb25zdCBVbmljb2RlVG9UZXh0
SW5mbyBDb25zdFVuaWNvZGVUb1RleHRJbmZvOwoKdHlwZWRlZiBTSW50MzIgVW5pY29kZU1hcFZl
cnNpb247CmVudW0gewogIGtVbmljb2RlVXNlTGF0ZXN0TWFwcGluZyA9IC0xLAogIGtVbmljb2Rl
VXNlSEZTUGx1c01hcHBpbmcgPSA0Cn07CgoKc3RydWN0IFVuaWNvZGVNYXBwaW5nIHsKICBUZXh0
RW5jb2RpbmcgdW5pY29kZUVuY29kaW5nOwogIFRleHRFbmNvZGluZyBvdGhlckVuY29kaW5nOwog
IFVuaWNvZGVNYXBWZXJzaW9uIG1hcHBpbmdWZXJzaW9uOwp9Owp0eXBlZGVmIHN0cnVjdCBVbmlj
b2RlTWFwcGluZyBVbmljb2RlTWFwcGluZzsKdHlwZWRlZiBVbmljb2RlTWFwcGluZyAqIFVuaWNv
ZGVNYXBwaW5nUHRyOwp0eXBlZGVmIGNvbnN0IFVuaWNvZGVNYXBwaW5nICogQ29uc3RVbmljb2Rl
TWFwcGluZ1B0cjsKCmVudW0gewogIGtVbmljb2RlVXNlRmFsbGJhY2tzQml0ID0gMCwKICBrVW5p
Y29kZUtlZXBJbmZvQml0ID0gMSwKICBrVW5pY29kZURpcmVjdGlvbmFsaXR5Qml0cyA9IDIsCiAg
a1VuaWNvZGVWZXJ0aWNhbEZvcm1CaXQgPSA0LAogIGtVbmljb2RlTG9vc2VNYXBwaW5nc0JpdCA9
IDUsCiAga1VuaWNvZGVTdHJpbmdVbnRlcm1pbmF0ZWRCaXQgPSA2LAogIGtVbmljb2RlVGV4dFJ1
bkJpdCA9IDcsCiAga1VuaWNvZGVLZWVwU2FtZUVuY29kaW5nQml0ID0gOCwKICBrVW5pY29kZUZv
cmNlQVNDSUlSYW5nZUJpdCA9IDksCiAga1VuaWNvZGVOb0hhbGZ3aWR0aENoYXJzQml0ID0gMTAs
CiAga1VuaWNvZGVUZXh0UnVuSGV1cmlzdGljc0JpdCA9IDExLAogIGtVbmljb2RlTWFwTGluZUZl
ZWRUb1JldHVybkJpdCA9IDEyLAoKCgoKCiAga1VuaWNvZGVVc2VFeHRlcm5hbEVuY29kaW5nRm9y
bUJpdCA9IDEzCn07CgplbnVtIHsKICBrVW5pY29kZVVzZUZhbGxiYWNrc01hc2sgPSAxTCA8PCBr
VW5pY29kZVVzZUZhbGxiYWNrc0JpdCwKICBrVW5pY29kZUtlZXBJbmZvTWFzayA9IDFMIDw8IGtV
bmljb2RlS2VlcEluZm9CaXQsCiAga1VuaWNvZGVEaXJlY3Rpb25hbGl0eU1hc2sgPSAzTCA8PCBr
VW5pY29kZURpcmVjdGlvbmFsaXR5Qml0cywKICBrVW5pY29kZVZlcnRpY2FsRm9ybU1hc2sgPSAx
TCA8PCBrVW5pY29kZVZlcnRpY2FsRm9ybUJpdCwKICBrVW5pY29kZUxvb3NlTWFwcGluZ3NNYXNr
ID0gMUwgPDwga1VuaWNvZGVMb29zZU1hcHBpbmdzQml0LAogIGtVbmljb2RlU3RyaW5nVW50ZXJt
aW5hdGVkTWFzayA9IDFMIDw8IGtVbmljb2RlU3RyaW5nVW50ZXJtaW5hdGVkQml0LAogIGtVbmlj
b2RlVGV4dFJ1bk1hc2sgPSAxTCA8PCBrVW5pY29kZVRleHRSdW5CaXQsCiAga1VuaWNvZGVLZWVw
U2FtZUVuY29kaW5nTWFzayA9IDFMIDw8IGtVbmljb2RlS2VlcFNhbWVFbmNvZGluZ0JpdCwKICBr
VW5pY29kZUZvcmNlQVNDSUlSYW5nZU1hc2sgPSAxTCA8PCBrVW5pY29kZUZvcmNlQVNDSUlSYW5n
ZUJpdCwKICBrVW5pY29kZU5vSGFsZndpZHRoQ2hhcnNNYXNrID0gMUwgPDwga1VuaWNvZGVOb0hh
bGZ3aWR0aENoYXJzQml0LAogIGtVbmljb2RlVGV4dFJ1bkhldXJpc3RpY3NNYXNrID0gMUwgPDwg
a1VuaWNvZGVUZXh0UnVuSGV1cmlzdGljc0JpdCwKICBrVW5pY29kZU1hcExpbmVGZWVkVG9SZXR1
cm5NYXNrID0gMUwgPDwga1VuaWNvZGVNYXBMaW5lRmVlZFRvUmV0dXJuQml0LAoKCgoKCiAga1Vu
aWNvZGVVc2VFeHRlcm5hbEVuY29kaW5nRm9ybU1hc2sgPSAxTCA8PCBrVW5pY29kZVVzZUV4dGVy
bmFsRW5jb2RpbmdGb3JtQml0Cn07CgoKZW51bSB7CiAga1VuaWNvZGVEZWZhdWx0RGlyZWN0aW9u
ID0gMCwKICBrVW5pY29kZUxlZnRUb1JpZ2h0ID0gMSwKICBrVW5pY29kZVJpZ2h0VG9MZWZ0ID0g
Mgp9OwoKCmVudW0gewogIGtVbmljb2RlRGVmYXVsdERpcmVjdGlvbk1hc2sgPSBrVW5pY29kZURl
ZmF1bHREaXJlY3Rpb24gPDwga1VuaWNvZGVEaXJlY3Rpb25hbGl0eUJpdHMsCiAga1VuaWNvZGVM
ZWZ0VG9SaWdodE1hc2sgPSBrVW5pY29kZUxlZnRUb1JpZ2h0IDw8IGtVbmljb2RlRGlyZWN0aW9u
YWxpdHlCaXRzLAogIGtVbmljb2RlUmlnaHRUb0xlZnRNYXNrID0ga1VuaWNvZGVSaWdodFRvTGVm
dCA8PCBrVW5pY29kZURpcmVjdGlvbmFsaXR5Qml0cwp9OwojIDE0NiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZUNvbnZlcnRlci5oIiAzCmVudW0gewogIGtVbmljb2Rl
TWF0Y2hVbmljb2RlQmFzZUJpdCA9IDAsCiAga1VuaWNvZGVNYXRjaFVuaWNvZGVWYXJpYW50Qml0
ID0gMSwKICBrVW5pY29kZU1hdGNoVW5pY29kZUZvcm1hdEJpdCA9IDIsCiAga1VuaWNvZGVNYXRj
aE90aGVyQmFzZUJpdCA9IDMsCiAga1VuaWNvZGVNYXRjaE90aGVyVmFyaWFudEJpdCA9IDQsCiAg
a1VuaWNvZGVNYXRjaE90aGVyRm9ybWF0Qml0ID0gNQp9OwoKZW51bSB7CiAga1VuaWNvZGVNYXRj
aFVuaWNvZGVCYXNlTWFzayA9IDFMIDw8IGtVbmljb2RlTWF0Y2hVbmljb2RlQmFzZUJpdCwKICBr
VW5pY29kZU1hdGNoVW5pY29kZVZhcmlhbnRNYXNrID0gMUwgPDwga1VuaWNvZGVNYXRjaFVuaWNv
ZGVWYXJpYW50Qml0LAogIGtVbmljb2RlTWF0Y2hVbmljb2RlRm9ybWF0TWFzayA9IDFMIDw8IGtV
bmljb2RlTWF0Y2hVbmljb2RlRm9ybWF0Qml0LAogIGtVbmljb2RlTWF0Y2hPdGhlckJhc2VNYXNr
ID0gMUwgPDwga1VuaWNvZGVNYXRjaE90aGVyQmFzZUJpdCwKICBrVW5pY29kZU1hdGNoT3RoZXJW
YXJpYW50TWFzayA9IDFMIDw8IGtVbmljb2RlTWF0Y2hPdGhlclZhcmlhbnRCaXQsCiAga1VuaWNv
ZGVNYXRjaE90aGVyRm9ybWF0TWFzayA9IDFMIDw8IGtVbmljb2RlTWF0Y2hPdGhlckZvcm1hdEJp
dAp9OwoKCmVudW0gewogIGtVbmljb2RlRmFsbGJhY2tTZXF1ZW5jaW5nQml0cyA9IDAKfTsKCmVu
dW0gewogIGtVbmljb2RlRmFsbGJhY2tTZXF1ZW5jaW5nTWFzayA9IDNMIDw8IGtVbmljb2RlRmFs
bGJhY2tTZXF1ZW5jaW5nQml0cywKICBrVW5pY29kZUZhbGxiYWNrSW50ZXJydXB0U2FmZU1hc2sg
PSAxTCA8PCAyCn07CgoKZW51bSB7CiAga1VuaWNvZGVGYWxsYmFja0RlZmF1bHRPbmx5ID0gMCwK
ICBrVW5pY29kZUZhbGxiYWNrQ3VzdG9tT25seSA9IDEsCiAga1VuaWNvZGVGYWxsYmFja0RlZmF1
bHRGaXJzdCA9IDIsCiAga1VuaWNvZGVGYWxsYmFja0N1c3RvbUZpcnN0ID0gMwp9OwoKCgp0eXBl
ZGVmIE9TU3RhdHVzICggKiBVbmljb2RlVG9UZXh0RmFsbGJhY2tQcm9jUHRyKShVbmlDaGFyICpp
U3JjVW5pU3RyLCBCeXRlQ291bnQgaVNyY1VuaVN0ckxlbiwgQnl0ZUNvdW50ICpvU3JjQ29udkxl
biwgVGV4dFB0ciBvRGVzdFN0ciwgQnl0ZUNvdW50IGlEZXN0U3RyTGVuLCBCeXRlQ291bnQgKm9E
ZXN0Q29udkxlbiwgTG9naWNhbEFkZHJlc3MgaUluZm9QdHIsIENvbnN0VW5pY29kZU1hcHBpbmdQ
dHIgaVVuaWNvZGVNYXBwaW5nUHRyKTsKdHlwZWRlZiBVbmljb2RlVG9UZXh0RmFsbGJhY2tQcm9j
UHRyIFVuaWNvZGVUb1RleHRGYWxsYmFja1VQUDsKIyAxOTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL1VuaWNvZGVDb252ZXJ0ZXIuaCIgMwpleHRlcm4gVW5pY29kZVRvVGV4dEZh
bGxiYWNrVVBQCk5ld1VuaWNvZGVUb1RleHRGYWxsYmFja1VQUChVbmljb2RlVG9UZXh0RmFsbGJh
Y2tQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMjA1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9Vbmljb2RlQ29udmVydGVyLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVVuaWNvZGVU
b1RleHRGYWxsYmFja1VQUChVbmljb2RlVG9UZXh0RmFsbGJhY2tVUFAgdXNlclVQUCkgOwojIDIx
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZUNvbnZlcnRlci5oIiAz
CmV4dGVybiBPU1N0YXR1cwpJbnZva2VVbmljb2RlVG9UZXh0RmFsbGJhY2tVUFAoCiAgVW5pQ2hh
ciAqIGlTcmNVbmlTdHIsCiAgQnl0ZUNvdW50IGlTcmNVbmlTdHJMZW4sCiAgQnl0ZUNvdW50ICog
b1NyY0NvbnZMZW4sCiAgVGV4dFB0ciBvRGVzdFN0ciwKICBCeXRlQ291bnQgaURlc3RTdHJMZW4s
CiAgQnl0ZUNvdW50ICogb0Rlc3RDb252TGVuLAogIExvZ2ljYWxBZGRyZXNzIGlJbmZvUHRyLAog
IENvbnN0VW5pY29kZU1hcHBpbmdQdHIgaVVuaWNvZGVNYXBwaW5nUHRyLAogIFVuaWNvZGVUb1Rl
eHRGYWxsYmFja1VQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgVW5pY29kZVRvVGV4dEZhbGxi
YWNrVVBQIE5ld1VuaWNvZGVUb1RleHRGYWxsYmFja1VQUChVbmljb2RlVG9UZXh0RmFsbGJhY2tQ
cm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZv
aWQgRGlzcG9zZVVuaWNvZGVUb1RleHRGYWxsYmFja1VQUChVbmljb2RlVG9UZXh0RmFsbGJhY2tV
UFApIHsgfQogICAgaW5saW5lIE9TU3RhdHVzIEludm9rZVVuaWNvZGVUb1RleHRGYWxsYmFja1VQ
UChVbmlDaGFyICogaVNyY1VuaVN0ciwgQnl0ZUNvdW50IGlTcmNVbmlTdHJMZW4sIEJ5dGVDb3Vu
dCAqIG9TcmNDb252TGVuLCBUZXh0UHRyIG9EZXN0U3RyLCBCeXRlQ291bnQgaURlc3RTdHJMZW4s
IEJ5dGVDb3VudCAqIG9EZXN0Q29udkxlbiwgTG9naWNhbEFkZHJlc3MgaUluZm9QdHIsIENvbnN0
VW5pY29kZU1hcHBpbmdQdHIgaVVuaWNvZGVNYXBwaW5nUHRyLCBVbmljb2RlVG9UZXh0RmFsbGJh
Y2tVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShpU3JjVW5pU3RyLCBpU3JjVW5pU3Ry
TGVuLCBvU3JjQ29udkxlbiwgb0Rlc3RTdHIsIGlEZXN0U3RyTGVuLCBvRGVzdENvbnZMZW4sIGlJ
bmZvUHRyLCBpVW5pY29kZU1hcHBpbmdQdHIpOyB9CiMgMjQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9Vbmljb2RlQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkNyZWF0
ZVRleHRUb1VuaWNvZGVJbmZvKAogIENvbnN0VW5pY29kZU1hcHBpbmdQdHIgaVVuaWNvZGVNYXBw
aW5nLAogIFRleHRUb1VuaWNvZGVJbmZvICogb1RleHRUb1VuaWNvZGVJbmZvKSA7CiMgMjYzICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlQ29udmVydGVyLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzCkNyZWF0ZVRleHRUb1VuaWNvZGVJbmZvQnlFbmNvZGluZygKICBUZXh0RW5j
b2RpbmcgaUVuY29kaW5nLAogIFRleHRUb1VuaWNvZGVJbmZvICogb1RleHRUb1VuaWNvZGVJbmZv
KSA7CiMgMjc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlQ29udmVy
dGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkNyZWF0ZVVuaWNvZGVUb1RleHRJbmZvKAogIENvbnN0
VW5pY29kZU1hcHBpbmdQdHIgaVVuaWNvZGVNYXBwaW5nLAogIFVuaWNvZGVUb1RleHRJbmZvICog
b1VuaWNvZGVUb1RleHRJbmZvKSA7CiMgMjkxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9Vbmljb2RlQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkNyZWF0ZVVuaWNvZGVU
b1RleHRJbmZvQnlFbmNvZGluZygKICBUZXh0RW5jb2RpbmcgaUVuY29kaW5nLAogIFVuaWNvZGVU
b1RleHRJbmZvICogb1VuaWNvZGVUb1RleHRJbmZvKSA7CiMgMzA1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkNy
ZWF0ZVVuaWNvZGVUb1RleHRSdW5JbmZvKAogIEl0ZW1Db3VudCBpTnVtYmVyT2ZNYXBwaW5ncywK
ICBjb25zdCBVbmljb2RlTWFwcGluZyBpVW5pY29kZU1hcHBpbmdzW10sCiAgVW5pY29kZVRvVGV4
dFJ1bkluZm8gKiBvVW5pY29kZVRvVGV4dEluZm8pIDsKIyAzMjAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL1VuaWNvZGVDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKQ3Jl
YXRlVW5pY29kZVRvVGV4dFJ1bkluZm9CeUVuY29kaW5nKAogIEl0ZW1Db3VudCBpTnVtYmVyT2ZF
bmNvZGluZ3MsCiAgY29uc3QgVGV4dEVuY29kaW5nIGlFbmNvZGluZ3NbXSwKICBVbmljb2RlVG9U
ZXh0UnVuSW5mbyAqIG9Vbmljb2RlVG9UZXh0SW5mbykgOwojIDMzNSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZUNvbnZlcnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpD
cmVhdGVVbmljb2RlVG9UZXh0UnVuSW5mb0J5U2NyaXB0Q29kZSgKICBJdGVtQ291bnQgaU51bWJl
ck9mU2NyaXB0Q29kZXMsCiAgY29uc3QgU2NyaXB0Q29kZSBpU2NyaXB0c1tdLAogIFVuaWNvZGVU
b1RleHRSdW5JbmZvICogb1VuaWNvZGVUb1RleHRJbmZvKSA7CiMgMzUxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CkNoYW5nZVRleHRUb1VuaWNvZGVJbmZvKAogIFRleHRUb1VuaWNvZGVJbmZvIGlvVGV4dFRvVW5p
Y29kZUluZm8sCiAgQ29uc3RVbmljb2RlTWFwcGluZ1B0ciBpVW5pY29kZU1hcHBpbmcpIDsKIyAz
NjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1VuaWNvZGVDb252ZXJ0ZXIuaCIg
MwpleHRlcm4gT1NTdGF0dXMKQ2hhbmdlVW5pY29kZVRvVGV4dEluZm8oCiAgVW5pY29kZVRvVGV4
dEluZm8gaW9Vbmljb2RlVG9UZXh0SW5mbywKICBDb25zdFVuaWNvZGVNYXBwaW5nUHRyIGlVbmlj
b2RlTWFwcGluZykgOwojIDM4MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5p
Y29kZUNvbnZlcnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpEaXNwb3NlVGV4dFRvVW5pY29kZUlu
Zm8oVGV4dFRvVW5pY29kZUluZm8gKiBpb1RleHRUb1VuaWNvZGVJbmZvKSA7CiMgMzkzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlQ29udmVydGVyLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzCkRpc3Bvc2VVbmljb2RlVG9UZXh0SW5mbyhVbmljb2RlVG9UZXh0SW5mbyAqIGlv
VW5pY29kZVRvVGV4dEluZm8pIDsKIyA0MDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL1VuaWNvZGVDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKRGlzcG9zZVVuaWNvZGVU
b1RleHRSdW5JbmZvKFVuaWNvZGVUb1RleHRSdW5JbmZvICogaW9Vbmljb2RlVG9UZXh0UnVuSW5m
bykgOwojIDQxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZUNvbnZl
cnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpDb252ZXJ0RnJvbVRleHRUb1VuaWNvZGUoCiAgVGV4
dFRvVW5pY29kZUluZm8gaVRleHRUb1VuaWNvZGVJbmZvLAogIEJ5dGVDb3VudCBpU291cmNlTGVu
LAogIENvbnN0TG9naWNhbEFkZHJlc3MgaVNvdXJjZVN0ciwKICBPcHRpb25CaXRzIGlDb250cm9s
RmxhZ3MsCiAgSXRlbUNvdW50IGlPZmZzZXRDb3VudCwKICBjb25zdCBCeXRlT2Zmc2V0IGlPZmZz
ZXRBcnJheVtdLAogIEl0ZW1Db3VudCAqIG9PZmZzZXRDb3VudCwKICBCeXRlT2Zmc2V0IG9PZmZz
ZXRBcnJheVtdLAogIEJ5dGVDb3VudCBpT3V0cHV0QnVmTGVuLAogIEJ5dGVDb3VudCAqIG9Tb3Vy
Y2VSZWFkLAogIEJ5dGVDb3VudCAqIG9Vbmljb2RlTGVuLAogIFVuaUNoYXIgb1VuaWNvZGVTdHJb
XSkgOwojIDQ0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZUNvbnZl
cnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpDb252ZXJ0RnJvbVVuaWNvZGVUb1RleHQoCiAgVW5p
Y29kZVRvVGV4dEluZm8gaVVuaWNvZGVUb1RleHRJbmZvLAogIEJ5dGVDb3VudCBpVW5pY29kZUxl
biwKICBjb25zdCBVbmlDaGFyIGlVbmljb2RlU3RyW10sCiAgT3B0aW9uQml0cyBpQ29udHJvbEZs
YWdzLAogIEl0ZW1Db3VudCBpT2Zmc2V0Q291bnQsCiAgY29uc3QgQnl0ZU9mZnNldCBpT2Zmc2V0
QXJyYXlbXSwKICBJdGVtQ291bnQgKiBvT2Zmc2V0Q291bnQsCiAgQnl0ZU9mZnNldCBvT2Zmc2V0
QXJyYXlbXSwKICBCeXRlQ291bnQgaU91dHB1dEJ1ZkxlbiwKICBCeXRlQ291bnQgKiBvSW5wdXRS
ZWFkLAogIEJ5dGVDb3VudCAqIG9PdXRwdXRMZW4sCiAgTG9naWNhbEFkZHJlc3Mgb091dHB1dFN0
cikgOwojIDQ2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZUNvbnZl
cnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpDb252ZXJ0RnJvbVVuaWNvZGVUb1RleHRSdW4oCiAg
VW5pY29kZVRvVGV4dFJ1bkluZm8gaVVuaWNvZGVUb1RleHRJbmZvLAogIEJ5dGVDb3VudCBpVW5p
Y29kZUxlbiwKICBjb25zdCBVbmlDaGFyIGlVbmljb2RlU3RyW10sCiAgT3B0aW9uQml0cyBpQ29u
dHJvbEZsYWdzLAogIEl0ZW1Db3VudCBpT2Zmc2V0Q291bnQsCiAgY29uc3QgQnl0ZU9mZnNldCBp
T2Zmc2V0QXJyYXlbXSwKICBJdGVtQ291bnQgKiBvT2Zmc2V0Q291bnQsCiAgQnl0ZU9mZnNldCBv
T2Zmc2V0QXJyYXlbXSwKICBCeXRlQ291bnQgaU91dHB1dEJ1ZkxlbiwKICBCeXRlQ291bnQgKiBv
SW5wdXRSZWFkLAogIEJ5dGVDb3VudCAqIG9PdXRwdXRMZW4sCiAgTG9naWNhbEFkZHJlc3Mgb091
dHB1dFN0ciwKICBJdGVtQ291bnQgaUVuY29kaW5nUnVuQnVmTGVuLAogIEl0ZW1Db3VudCAqIG9F
bmNvZGluZ1J1bk91dExlbiwKICBUZXh0RW5jb2RpbmdSdW4gb0VuY29kaW5nUnVuc1tdKSA7CiMg
NDkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlQ29udmVydGVyLmgi
IDMKZXh0ZXJuIE9TU3RhdHVzCkNvbnZlcnRGcm9tVW5pY29kZVRvU2NyaXB0Q29kZVJ1bigKICBV
bmljb2RlVG9UZXh0UnVuSW5mbyBpVW5pY29kZVRvVGV4dEluZm8sCiAgQnl0ZUNvdW50IGlVbmlj
b2RlTGVuLAogIGNvbnN0IFVuaUNoYXIgaVVuaWNvZGVTdHJbXSwKICBPcHRpb25CaXRzIGlDb250
cm9sRmxhZ3MsCiAgSXRlbUNvdW50IGlPZmZzZXRDb3VudCwKICBjb25zdCBCeXRlT2Zmc2V0IGlP
ZmZzZXRBcnJheVtdLAogIEl0ZW1Db3VudCAqIG9PZmZzZXRDb3VudCwKICBCeXRlT2Zmc2V0IG9P
ZmZzZXRBcnJheVtdLAogIEJ5dGVDb3VudCBpT3V0cHV0QnVmTGVuLAogIEJ5dGVDb3VudCAqIG9J
bnB1dFJlYWQsCiAgQnl0ZUNvdW50ICogb091dHB1dExlbiwKICBMb2dpY2FsQWRkcmVzcyBvT3V0
cHV0U3RyLAogIEl0ZW1Db3VudCBpU2NyaXB0UnVuQnVmTGVuLAogIEl0ZW1Db3VudCAqIG9TY3Jp
cHRSdW5PdXRMZW4sCiAgU2NyaXB0Q29kZVJ1biBvU2NyaXB0Q29kZVJ1bnNbXSkgOwojIDUyMCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZUNvbnZlcnRlci5oIiAzCmV4
dGVybiBPU1N0YXR1cwpUcnVuY2F0ZUZvclRleHRUb1VuaWNvZGUoCiAgQ29uc3RUZXh0VG9Vbmlj
b2RlSW5mbyBpVGV4dFRvVW5pY29kZUluZm8sCiAgQnl0ZUNvdW50IGlTb3VyY2VMZW4sCiAgQ29u
c3RMb2dpY2FsQWRkcmVzcyBpU291cmNlU3RyLAogIEJ5dGVDb3VudCBpTWF4TGVuLAogIEJ5dGVD
b3VudCAqIG9UcnVuY2F0ZWRMZW4pIDsKIyA1MzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1VuaWNvZGVDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKVHJ1bmNhdGVGb3JV
bmljb2RlVG9UZXh0KAogIENvbnN0VW5pY29kZVRvVGV4dEluZm8gaVVuaWNvZGVUb1RleHRJbmZv
LAogIEJ5dGVDb3VudCBpU291cmNlTGVuLAogIGNvbnN0IFVuaUNoYXIgaVNvdXJjZVN0cltdLAog
IE9wdGlvbkJpdHMgaUNvbnRyb2xGbGFncywKICBCeXRlQ291bnQgaU1heExlbiwKICBCeXRlQ291
bnQgKiBvVHJ1bmNhdGVkTGVuKSA7CiMgNTU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9Vbmljb2RlQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkNvbnZlcnRGcm9tUFN0
cmluZ1RvVW5pY29kZSgKICBUZXh0VG9Vbmljb2RlSW5mbyBpVGV4dFRvVW5pY29kZUluZm8sCiAg
Q29uc3RTdHIyNTVQYXJhbSBpUGFzY2FsU3RyLAogIEJ5dGVDb3VudCBpT3V0cHV0QnVmTGVuLAog
IEJ5dGVDb3VudCAqIG9Vbmljb2RlTGVuLAogIFVuaUNoYXIgb1VuaWNvZGVTdHJbXSkgOwojIDU3
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZUNvbnZlcnRlci5oIiAz
CmV4dGVybiBPU1N0YXR1cwpDb252ZXJ0RnJvbVVuaWNvZGVUb1BTdHJpbmcoCiAgVW5pY29kZVRv
VGV4dEluZm8gaVVuaWNvZGVUb1RleHRJbmZvLAogIEJ5dGVDb3VudCBpVW5pY29kZUxlbiwKICBj
b25zdCBVbmlDaGFyIGlVbmljb2RlU3RyW10sCiAgU3RyMjU1IG9QYXNjYWxTdHIpIDsKIyA1OTIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1VuaWNvZGVDb252ZXJ0ZXIuaCIgMwpl
eHRlcm4gT1NTdGF0dXMKQ291bnRVbmljb2RlTWFwcGluZ3MoCiAgT3B0aW9uQml0cyBpRmlsdGVy
LAogIENvbnN0VW5pY29kZU1hcHBpbmdQdHIgaUZpbmRNYXBwaW5nLAogIEl0ZW1Db3VudCAqIG9B
Y3R1YWxDb3VudCkgOwojIDYwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5p
Y29kZUNvbnZlcnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpRdWVyeVVuaWNvZGVNYXBwaW5ncygK
ICBPcHRpb25CaXRzIGlGaWx0ZXIsCiAgQ29uc3RVbmljb2RlTWFwcGluZ1B0ciBpRmluZE1hcHBp
bmcsCiAgSXRlbUNvdW50IGlNYXhDb3VudCwKICBJdGVtQ291bnQgKiBvQWN0dWFsQ291bnQsCiAg
VW5pY29kZU1hcHBpbmcgb1JldHVybmVkTWFwcGluZ3NbXSkgOwojIDYyNiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29kZUNvbnZlcnRlci5oIiAzCmV4dGVybiBPU1N0YXR1
cwpTZXRGYWxsYmFja1VuaWNvZGVUb1RleHQoCiAgVW5pY29kZVRvVGV4dEluZm8gaVVuaWNvZGVU
b1RleHRJbmZvLAogIFVuaWNvZGVUb1RleHRGYWxsYmFja1VQUCBpRmFsbGJhY2ssCiAgT3B0aW9u
Qml0cyBpQ29udHJvbEZsYWdzLAogIExvZ2ljYWxBZGRyZXNzIGlJbmZvUHRyKSA7CiMgNjQzICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlQ29udmVydGVyLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzClNldEZhbGxiYWNrVW5pY29kZVRvVGV4dFJ1bigKICBVbmljb2RlVG9UZXh0
UnVuSW5mbyBpVW5pY29kZVRvVGV4dFJ1bkluZm8sCiAgVW5pY29kZVRvVGV4dEZhbGxiYWNrVVBQ
IGlGYWxsYmFjaywKICBPcHRpb25CaXRzIGlDb250cm9sRmxhZ3MsCiAgTG9naWNhbEFkZHJlc3Mg
aUluZm9QdHIpIDsKIyA2NjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1VuaWNv
ZGVDb252ZXJ0ZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKUmVzZXRUZXh0VG9Vbmljb2RlSW5mbyhU
ZXh0VG9Vbmljb2RlSW5mbyBpb1RleHRUb1VuaWNvZGVJbmZvKSA7CiMgNjczICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Vbmljb2RlQ29udmVydGVyLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzClJlc2V0VW5pY29kZVRvVGV4dEluZm8oVW5pY29kZVRvVGV4dEluZm8gaW9Vbmljb2RlVG9U
ZXh0SW5mbykgOwojIDY4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVW5pY29k
ZUNvbnZlcnRlci5oIiAzCmV4dGVybiBPU1N0YXR1cwpSZXNldFVuaWNvZGVUb1RleHRSdW5JbmZv
KFVuaWNvZGVUb1RleHRSdW5JbmZvIGlvVW5pY29kZVRvVGV4dFJ1bkluZm8pIDsKCgoKCiNwcmFn
bWEgcGFjayhwb3ApCgoKfQojIDE2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
Q2FyYm9uQ29yZS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9UaHJlYWRzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9U
aHJlYWRzLmgiIDMKI2RlZmluZSBfX1RIUkVBRFNfXyAKIyA0MCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvVGhyZWFkcy5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhw
dXNoLCAyKQoKCnR5cGVkZWYgVUludDE2IFRocmVhZFN0YXRlOwplbnVtIHsKICBrUmVhZHlUaHJl
YWRTdGF0ZSA9IDAsCiAga1N0b3BwZWRUaHJlYWRTdGF0ZSA9IDEsCiAga1J1bm5pbmdUaHJlYWRT
dGF0ZSA9IDIKfTsKCgoKCnR5cGVkZWYgdm9pZCAqIFRocmVhZFRhc2tSZWY7Cgp0eXBlZGVmIFVJ
bnQzMiBUaHJlYWRTdHlsZTsKZW51bSB7CiAga0Nvb3BlcmF0aXZlVGhyZWFkID0gMUwgPDwgMCwK
ICBrUHJlZW1wdGl2ZVRocmVhZCA9IDFMIDw8IDEKfTsKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
VGhyZWFkSUQ7CmVudW0gewogIGtOb1RocmVhZElEID0gMCwKICBrQ3VycmVudFRocmVhZElEID0g
MSwKICBrQXBwbGljYXRpb25UaHJlYWRJRCA9IDIKfTsKCgp0eXBlZGVmIFVJbnQzMiBUaHJlYWRP
cHRpb25zOwplbnVtIHsKICBrTmV3U3VzcGVuZCA9ICgxIDw8IDApLAogIGtVc2VQcmVtYWRlVGhy
ZWFkID0gKDEgPDwgMSksCiAga0NyZWF0ZUlmTmVlZGVkID0gKDEgPDwgMiksCiAga0ZQVU5vdE5l
ZWRlZCA9ICgxIDw8IDMpLAogIGtFeGFjdE1hdGNoVGhyZWFkID0gKDEgPDwgNCkKfTsKCgpzdHJ1
Y3QgU2NoZWR1bGVySW5mb1JlYyB7CiAgVUludDMyIEluZm9SZWNTaXplOwogIFRocmVhZElEIEN1
cnJlbnRUaHJlYWRJRDsKICBUaHJlYWRJRCBTdWdnZXN0ZWRUaHJlYWRJRDsKICBUaHJlYWRJRCBJ
bnRlcnJ1cHRlZENvb3BUaHJlYWRJRDsKfTsKdHlwZWRlZiBzdHJ1Y3QgU2NoZWR1bGVySW5mb1Jl
YyBTY2hlZHVsZXJJbmZvUmVjOwp0eXBlZGVmIFNjaGVkdWxlckluZm9SZWMgKiBTY2hlZHVsZXJJ
bmZvUmVjUHRyOwoKCgoKCgp0eXBlZGVmIHZvaWQgKiB2b2lkUHRyOwoKdHlwZWRlZiB2b2lkUHRy
ICggKiBUaHJlYWRFbnRyeVByb2NQdHIpKHZvaWQgKiB0aHJlYWRQYXJhbSk7Cgp0eXBlZGVmIFRo
cmVhZElEICggKiBUaHJlYWRTY2hlZHVsZXJQcm9jUHRyKShTY2hlZHVsZXJJbmZvUmVjUHRyIHNj
aGVkdWxlckluZm8pOwoKdHlwZWRlZiB2b2lkICggKiBUaHJlYWRTd2l0Y2hQcm9jUHRyKShUaHJl
YWRJRCB0aHJlYWRCZWluZ1N3aXRjaGVkLCB2b2lkICpzd2l0Y2hQcm9jUGFyYW0pOwoKdHlwZWRl
ZiB2b2lkICggKiBUaHJlYWRUZXJtaW5hdGlvblByb2NQdHIpKFRocmVhZElEIHRocmVhZFRlcm1p
bmF0ZWQsIHZvaWQgKnRlcm1pbmF0aW9uUHJvY1BhcmFtKTsKCnR5cGVkZWYgdm9pZCAoICogRGVi
dWdnZXJOZXdUaHJlYWRQcm9jUHRyKShUaHJlYWRJRCB0aHJlYWRDcmVhdGVkKTsKCnR5cGVkZWYg
dm9pZCAoICogRGVidWdnZXJEaXNwb3NlVGhyZWFkUHJvY1B0cikoVGhyZWFkSUQgdGhyZWFkRGVs
ZXRlZCk7Cgp0eXBlZGVmIFRocmVhZElEICggKiBEZWJ1Z2dlclRocmVhZFNjaGVkdWxlclByb2NQ
dHIpKFNjaGVkdWxlckluZm9SZWNQdHIgc2NoZWR1bGVySW5mbyk7CnR5cGVkZWYgVGhyZWFkRW50
cnlQcm9jUHRyIFRocmVhZEVudHJ5VVBQOwp0eXBlZGVmIFRocmVhZFNjaGVkdWxlclByb2NQdHIg
VGhyZWFkU2NoZWR1bGVyVVBQOwp0eXBlZGVmIFRocmVhZFN3aXRjaFByb2NQdHIgVGhyZWFkU3dp
dGNoVVBQOwp0eXBlZGVmIFRocmVhZFRlcm1pbmF0aW9uUHJvY1B0ciBUaHJlYWRUZXJtaW5hdGlv
blVQUDsKdHlwZWRlZiBEZWJ1Z2dlck5ld1RocmVhZFByb2NQdHIgRGVidWdnZXJOZXdUaHJlYWRV
UFA7CnR5cGVkZWYgRGVidWdnZXJEaXNwb3NlVGhyZWFkUHJvY1B0ciBEZWJ1Z2dlckRpc3Bvc2VU
aHJlYWRVUFA7CnR5cGVkZWYgRGVidWdnZXJUaHJlYWRTY2hlZHVsZXJQcm9jUHRyIERlYnVnZ2Vy
VGhyZWFkU2NoZWR1bGVyVVBQOwojIDEyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvVGhyZWFkcy5oIiAzCmV4dGVybiBUaHJlYWRFbnRyeVVQUApOZXdUaHJlYWRFbnRyeVVQUChU
aHJlYWRFbnRyeVByb2NQdHIgdXNlclJvdXRpbmUpIDsKIyAxMzggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL1RocmVhZHMuaCIgMwpleHRlcm4gVGhyZWFkU2NoZWR1bGVyVVBQCk5l
d1RocmVhZFNjaGVkdWxlclVQUChUaHJlYWRTY2hlZHVsZXJQcm9jUHRyIHVzZXJSb3V0aW5lKSA7
CiMgMTQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UaHJlYWRzLmgiIDMKZXh0
ZXJuIFRocmVhZFN3aXRjaFVQUApOZXdUaHJlYWRTd2l0Y2hVUFAoVGhyZWFkU3dpdGNoUHJvY1B0
ciB1c2VyUm91dGluZSkgOwojIDE2MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
VGhyZWFkcy5oIiAzCmV4dGVybiBUaHJlYWRUZXJtaW5hdGlvblVQUApOZXdUaHJlYWRUZXJtaW5h
dGlvblVQUChUaHJlYWRUZXJtaW5hdGlvblByb2NQdHIgdXNlclJvdXRpbmUpIDsKIyAxNzEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RocmVhZHMuaCIgMwpleHRlcm4gRGVidWdn
ZXJOZXdUaHJlYWRVUFAKTmV3RGVidWdnZXJOZXdUaHJlYWRVUFAoRGVidWdnZXJOZXdUaHJlYWRQ
cm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMTgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9UaHJlYWRzLmgiIDMKZXh0ZXJuIERlYnVnZ2VyRGlzcG9zZVRocmVhZFVQUApOZXdEZWJ1
Z2dlckRpc3Bvc2VUaHJlYWRVUFAoRGVidWdnZXJEaXNwb3NlVGhyZWFkUHJvY1B0ciB1c2VyUm91
dGluZSkgOwojIDE5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGhyZWFkcy5o
IiAzCmV4dGVybiBEZWJ1Z2dlclRocmVhZFNjaGVkdWxlclVQUApOZXdEZWJ1Z2dlclRocmVhZFNj
aGVkdWxlclVQUChEZWJ1Z2dlclRocmVhZFNjaGVkdWxlclByb2NQdHIgdXNlclJvdXRpbmUpIDsK
IyAyMDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RocmVhZHMuaCIgMwpleHRl
cm4gdm9pZApEaXNwb3NlVGhyZWFkRW50cnlVUFAoVGhyZWFkRW50cnlVUFAgdXNlclVQUCkgOwoj
IDIxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGhyZWFkcy5oIiAzCmV4dGVy
biB2b2lkCkRpc3Bvc2VUaHJlYWRTY2hlZHVsZXJVUFAoVGhyZWFkU2NoZWR1bGVyVVBQIHVzZXJV
UFApIDsKIyAyMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RocmVhZHMuaCIg
MwpleHRlcm4gdm9pZApEaXNwb3NlVGhyZWFkU3dpdGNoVVBQKFRocmVhZFN3aXRjaFVQUCB1c2Vy
VVBQKSA7CiMgMjM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UaHJlYWRzLmgi
IDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVRocmVhZFRlcm1pbmF0aW9uVVBQKFRocmVhZFRlcm1pbmF0
aW9uVVBQIHVzZXJVUFApIDsKIyAyNDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L1RocmVhZHMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlRGVidWdnZXJOZXdUaHJlYWRVUFAoRGVi
dWdnZXJOZXdUaHJlYWRVUFAgdXNlclVQUCkgOwojIDI1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvVGhyZWFkcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VEZWJ1Z2dlckRpc3Bv
c2VUaHJlYWRVUFAoRGVidWdnZXJEaXNwb3NlVGhyZWFkVVBQIHVzZXJVUFApIDsKIyAyNzAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RocmVhZHMuaCIgMwpleHRlcm4gdm9pZApE
aXNwb3NlRGVidWdnZXJUaHJlYWRTY2hlZHVsZXJVUFAoRGVidWdnZXJUaHJlYWRTY2hlZHVsZXJV
UFAgdXNlclVQUCkgOwojIDI4MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGhy
ZWFkcy5oIiAzCmV4dGVybiB2b2lkUHRyCkludm9rZVRocmVhZEVudHJ5VVBQKAogIHZvaWQgKiB0
aHJlYWRQYXJhbSwKICBUaHJlYWRFbnRyeVVQUCB1c2VyVVBQKSA7CiMgMjk0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9UaHJlYWRzLmgiIDMKZXh0ZXJuIFRocmVhZElECkludm9r
ZVRocmVhZFNjaGVkdWxlclVQUCgKICBTY2hlZHVsZXJJbmZvUmVjUHRyIHNjaGVkdWxlckluZm8s
CiAgVGhyZWFkU2NoZWR1bGVyVVBQIHVzZXJVUFApIDsKIyAzMDcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL1RocmVhZHMuaCIgMwpleHRlcm4gdm9pZApJbnZva2VUaHJlYWRTd2l0
Y2hVUFAoCiAgVGhyZWFkSUQgdGhyZWFkQmVpbmdTd2l0Y2hlZCwKICB2b2lkICogc3dpdGNoUHJv
Y1BhcmFtLAogIFRocmVhZFN3aXRjaFVQUCB1c2VyVVBQKSA7CiMgMzIxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9UaHJlYWRzLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlVGhyZWFk
VGVybWluYXRpb25VUFAoCiAgVGhyZWFkSUQgdGhyZWFkVGVybWluYXRlZCwKICB2b2lkICogdGVy
bWluYXRpb25Qcm9jUGFyYW0sCiAgVGhyZWFkVGVybWluYXRpb25VUFAgdXNlclVQUCkgOwojIDMz
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGhyZWFkcy5oIiAzCmV4dGVybiB2
b2lkCkludm9rZURlYnVnZ2VyTmV3VGhyZWFkVVBQKAogIFRocmVhZElEIHRocmVhZENyZWF0ZWQs
CiAgRGVidWdnZXJOZXdUaHJlYWRVUFAgdXNlclVQUCkgOwojIDM0OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvVGhyZWFkcy5oIiAzCmV4dGVybiB2b2lkCkludm9rZURlYnVnZ2Vy
RGlzcG9zZVRocmVhZFVQUCgKICBUaHJlYWRJRCB0aHJlYWREZWxldGVkLAogIERlYnVnZ2VyRGlz
cG9zZVRocmVhZFVQUCB1c2VyVVBQKSA7CiMgMzYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9UaHJlYWRzLmgiIDMKZXh0ZXJuIFRocmVhZElECkludm9rZURlYnVnZ2VyVGhyZWFk
U2NoZWR1bGVyVVBQKAogIFNjaGVkdWxlckluZm9SZWNQdHIgc2NoZWR1bGVySW5mbywKICBEZWJ1
Z2dlclRocmVhZFNjaGVkdWxlclVQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgVGhyZWFkRW50
cnlVUFAgTmV3VGhyZWFkRW50cnlVUFAoVGhyZWFkRW50cnlQcm9jUHRyIHVzZXJSb3V0aW5lKSB7
IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIFRocmVhZFNjaGVkdWxlclVQUCBOZXdU
aHJlYWRTY2hlZHVsZXJVUFAoVGhyZWFkU2NoZWR1bGVyUHJvY1B0ciB1c2VyUm91dGluZSkgeyBy
ZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBUaHJlYWRTd2l0Y2hVUFAgTmV3VGhyZWFk
U3dpdGNoVVBQKFRocmVhZFN3aXRjaFByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJS
b3V0aW5lOyB9CiAgICBpbmxpbmUgVGhyZWFkVGVybWluYXRpb25VUFAgTmV3VGhyZWFkVGVybWlu
YXRpb25VUFAoVGhyZWFkVGVybWluYXRpb25Qcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1
c2VyUm91dGluZTsgfQogICAgaW5saW5lIERlYnVnZ2VyTmV3VGhyZWFkVVBQIE5ld0RlYnVnZ2Vy
TmV3VGhyZWFkVVBQKERlYnVnZ2VyTmV3VGhyZWFkUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1
cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBEZWJ1Z2dlckRpc3Bvc2VUaHJlYWRVUFAgTmV3
RGVidWdnZXJEaXNwb3NlVGhyZWFkVVBQKERlYnVnZ2VyRGlzcG9zZVRocmVhZFByb2NQdHIgdXNl
clJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRGVidWdnZXJUaHJl
YWRTY2hlZHVsZXJVUFAgTmV3RGVidWdnZXJUaHJlYWRTY2hlZHVsZXJVUFAoRGVidWdnZXJUaHJl
YWRTY2hlZHVsZXJQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQog
ICAgaW5saW5lIHZvaWQgRGlzcG9zZVRocmVhZEVudHJ5VVBQKFRocmVhZEVudHJ5VVBQKSB7IH0K
ICAgIGlubGluZSB2b2lkIERpc3Bvc2VUaHJlYWRTY2hlZHVsZXJVUFAoVGhyZWFkU2NoZWR1bGVy
VVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VUaHJlYWRTd2l0Y2hVUFAoVGhyZWFkU3dp
dGNoVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VUaHJlYWRUZXJtaW5hdGlvblVQUChU
aHJlYWRUZXJtaW5hdGlvblVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlRGVidWdnZXJO
ZXdUaHJlYWRVUFAoRGVidWdnZXJOZXdUaHJlYWRVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlz
cG9zZURlYnVnZ2VyRGlzcG9zZVRocmVhZFVQUChEZWJ1Z2dlckRpc3Bvc2VUaHJlYWRVUFApIHsg
fQogICAgaW5saW5lIHZvaWQgRGlzcG9zZURlYnVnZ2VyVGhyZWFkU2NoZWR1bGVyVVBQKERlYnVn
Z2VyVGhyZWFkU2NoZWR1bGVyVVBQKSB7IH0KICAgIGlubGluZSB2b2lkUHRyIEludm9rZVRocmVh
ZEVudHJ5VVBQKHZvaWQgKiB0aHJlYWRQYXJhbSwgVGhyZWFkRW50cnlVUFAgdXNlclVQUCkgeyBy
ZXR1cm4gKCp1c2VyVVBQKSh0aHJlYWRQYXJhbSk7IH0KICAgIGlubGluZSBUaHJlYWRJRCBJbnZv
a2VUaHJlYWRTY2hlZHVsZXJVUFAoU2NoZWR1bGVySW5mb1JlY1B0ciBzY2hlZHVsZXJJbmZvLCBU
aHJlYWRTY2hlZHVsZXJVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShzY2hlZHVsZXJJ
bmZvKTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlVGhyZWFkU3dpdGNoVVBQKFRocmVhZElEIHRo
cmVhZEJlaW5nU3dpdGNoZWQsIHZvaWQgKiBzd2l0Y2hQcm9jUGFyYW0sIFRocmVhZFN3aXRjaFVQ
UCB1c2VyVVBQKSB7ICgqdXNlclVQUCkodGhyZWFkQmVpbmdTd2l0Y2hlZCwgc3dpdGNoUHJvY1Bh
cmFtKTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlVGhyZWFkVGVybWluYXRpb25VUFAoVGhyZWFk
SUQgdGhyZWFkVGVybWluYXRlZCwgdm9pZCAqIHRlcm1pbmF0aW9uUHJvY1BhcmFtLCBUaHJlYWRU
ZXJtaW5hdGlvblVQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCkodGhyZWFkVGVybWluYXRlZCwgdGVy
bWluYXRpb25Qcm9jUGFyYW0pOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VEZWJ1Z2dlck5ld1Ro
cmVhZFVQUChUaHJlYWRJRCB0aHJlYWRDcmVhdGVkLCBEZWJ1Z2dlck5ld1RocmVhZFVQUCB1c2Vy
VVBQKSB7ICgqdXNlclVQUCkodGhyZWFkQ3JlYXRlZCk7IH0KICAgIGlubGluZSB2b2lkIEludm9r
ZURlYnVnZ2VyRGlzcG9zZVRocmVhZFVQUChUaHJlYWRJRCB0aHJlYWREZWxldGVkLCBEZWJ1Z2dl
ckRpc3Bvc2VUaHJlYWRVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKHRocmVhZERlbGV0ZWQpOyB9
CiAgICBpbmxpbmUgVGhyZWFkSUQgSW52b2tlRGVidWdnZXJUaHJlYWRTY2hlZHVsZXJVUFAoU2No
ZWR1bGVySW5mb1JlY1B0ciBzY2hlZHVsZXJJbmZvLCBEZWJ1Z2dlclRocmVhZFNjaGVkdWxlclVQ
UCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHNjaGVkdWxlckluZm8pOyB9CiMgNDI0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UaHJlYWRzLmgiIDMKdHlwZWRlZiBUaHJl
YWRFbnRyeVVQUCBUaHJlYWRFbnRyeVRQUDsKdHlwZWRlZiBUaHJlYWRTY2hlZHVsZXJVUFAgVGhy
ZWFkU2NoZWR1bGVyVFBQOwp0eXBlZGVmIFRocmVhZFN3aXRjaFVQUCBUaHJlYWRTd2l0Y2hUUFA7
CnR5cGVkZWYgVGhyZWFkVGVybWluYXRpb25VUFAgVGhyZWFkVGVybWluYXRpb25UUFA7CnR5cGVk
ZWYgRGVidWdnZXJOZXdUaHJlYWRVUFAgRGVidWdnZXJOZXdUaHJlYWRUUFA7CnR5cGVkZWYgRGVi
dWdnZXJEaXNwb3NlVGhyZWFkVVBQIERlYnVnZ2VyRGlzcG9zZVRocmVhZFRQUDsKdHlwZWRlZiBE
ZWJ1Z2dlclRocmVhZFNjaGVkdWxlclVQUCBEZWJ1Z2dlclRocmVhZFNjaGVkdWxlclRQUDsKIyA0
MzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RocmVhZHMuaCIgMwpleHRlcm4g
T1NFcnIKTmV3VGhyZWFkKAogIFRocmVhZFN0eWxlIHRocmVhZFN0eWxlLAogIFRocmVhZEVudHJ5
VFBQIHRocmVhZEVudHJ5LAogIHZvaWQgKiB0aHJlYWRQYXJhbSwKICBTaXplIHN0YWNrU2l6ZSwK
ICBUaHJlYWRPcHRpb25zIG9wdGlvbnMsCiAgdm9pZCAqKiB0aHJlYWRSZXN1bHQsCiAgVGhyZWFk
SUQgKiB0aHJlYWRNYWRlKSA7CiMgNDU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9UaHJlYWRzLmgiIDMKZXh0ZXJuIE9TRXJyClNldFRocmVhZFNjaGVkdWxlcihUaHJlYWRTY2hl
ZHVsZXJUUFAgdGhyZWFkU2NoZWR1bGVyKSA7CiMgNDcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9UaHJlYWRzLmgiIDMKZXh0ZXJuIE9TRXJyClNldFRocmVhZFN3aXRjaGVyKAog
IFRocmVhZElEIHRocmVhZCwKICBUaHJlYWRTd2l0Y2hUUFAgdGhyZWFkU3dpdGNoZXIsCiAgdm9p
ZCAqIHN3aXRjaFByb2NQYXJhbSwKICBCb29sZWFuIGluT3JPdXQpIDsKIyA0ODYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJi
b25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RocmVhZHMuaCIgMwpleHRlcm4gT1NFcnIKU2V0VGhy
ZWFkVGVybWluYXRvcigKICBUaHJlYWRJRCB0aHJlYWQsCiAgVGhyZWFkVGVybWluYXRpb25UUFAg
dGhyZWFkVGVybWluYXRvciwKICB2b2lkICogdGVybWluYXRpb25Qcm9jUGFyYW0pIDsKIyA1MDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RocmVhZHMuaCIgMwpleHRlcm4gT1NF
cnIKU2V0RGVidWdnZXJOb3RpZmljYXRpb25Qcm9jcygKICBEZWJ1Z2dlck5ld1RocmVhZFRQUCBu
b3RpZnlOZXdUaHJlYWQsCiAgRGVidWdnZXJEaXNwb3NlVGhyZWFkVFBQIG5vdGlmeURpc3Bvc2VU
aHJlYWQsCiAgRGVidWdnZXJUaHJlYWRTY2hlZHVsZXJUUFAgbm90aWZ5VGhyZWFkU2NoZWR1bGVy
KSA7CiMgNTE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UaHJlYWRzLmgiIDMK
ZXh0ZXJuIE9TRXJyCkNyZWF0ZVRocmVhZFBvb2woCiAgVGhyZWFkU3R5bGUgdGhyZWFkU3R5bGUs
CiAgU0ludDE2IG51bVRvQ3JlYXRlLAogIFNpemUgc3RhY2tTaXplKSA7CiMgNTMxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UaHJlYWRzLmgiIDMKZXh0ZXJuIE9TRXJyCkdldERl
ZmF1bHRUaHJlYWRTdGFja1NpemUoCiAgVGhyZWFkU3R5bGUgdGhyZWFkU3R5bGUsCiAgU2l6ZSAq
IHN0YWNrU2l6ZSkgOwojIDU0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGhy
ZWFkcy5oIiAzCmV4dGVybiBPU0VycgpUaHJlYWRDdXJyZW50U3RhY2tTcGFjZSgKICBUaHJlYWRJ
RCB0aHJlYWQsCiAgQnl0ZUNvdW50ICogZnJlZVN0YWNrKSA7CiMgNTU5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9UaHJlYWRzLmgiIDMKZXh0ZXJuIE9TRXJyCkRpc3Bvc2VUaHJl
YWQoCiAgVGhyZWFkSUQgdGhyZWFkVG9EdW1wLAogIHZvaWQgKiB0aHJlYWRSZXN1bHQsCiAgQm9v
bGVhbiByZWN5Y2xlVGhyZWFkKSA7CiMgNTc0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9UaHJlYWRzLmgiIDMKZXh0ZXJuIE9TRXJyCllpZWxkVG9UaHJlYWQoVGhyZWFkSUQgc3Vn
Z2VzdGVkVGhyZWFkKSA7CiMgNTg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9U
aHJlYWRzLmgiIDMKZXh0ZXJuIE9TRXJyCllpZWxkVG9BbnlUaHJlYWQodm9pZCkgOwojIDU5OSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGhyZWFkcy5oIiAzCiNkZWZpbmUgTWFj
R2V0Q3VycmVudFRocmVhZCBHZXRDdXJyZW50VGhyZWFkCgpleHRlcm4gT1NFcnIKR2V0Q3VycmVu
dFRocmVhZChUaHJlYWRJRCAqIGN1cnJlbnRUaHJlYWRJRCkgOwojIDYxMyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvVGhyZWFkcy5oIiAzCmV4dGVybiBPU0VycgpHZXRUaHJlYWRT
dGF0ZSgKICBUaHJlYWRJRCB0aHJlYWRUb0dldCwKICBUaHJlYWRTdGF0ZSAqIHRocmVhZFN0YXRl
KSA7CiMgNjI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UaHJlYWRzLmgiIDMK
ZXh0ZXJuIE9TRXJyClNldFRocmVhZFN0YXRlKAogIFRocmVhZElEIHRocmVhZFRvU2V0LAogIFRo
cmVhZFN0YXRlIG5ld1N0YXRlLAogIFRocmVhZElEIHN1Z2dlc3RlZFRocmVhZCkgOwojIDY0MiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGhyZWFkcy5oIiAzCmV4dGVybiBPU0Vy
cgpTZXRUaHJlYWRTdGF0ZUVuZENyaXRpY2FsKAogIFRocmVhZElEIHRocmVhZFRvU2V0LAogIFRo
cmVhZFN0YXRlIG5ld1N0YXRlLAogIFRocmVhZElEIHN1Z2dlc3RlZFRocmVhZCkgOwojIDY1NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGhyZWFkcy5oIiAzCmV4dGVybiBPU0Vy
cgpUaHJlYWRCZWdpbkNyaXRpY2FsKHZvaWQpIDsKIyA2NjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL1RocmVhZHMuaCIgMwpleHRlcm4gT1NFcnIKVGhyZWFkRW5kQ3JpdGljYWwo
dm9pZCkgOwojIDY4MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGhyZWFkcy5o
IiAzCmV4dGVybiBPU0VycgpHZXRUaHJlYWRDdXJyZW50VGFza1JlZihUaHJlYWRUYXNrUmVmICog
dGhyZWFkVFJlZikgOwojIDY5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGhy
ZWFkcy5oIiAzCmV4dGVybiBPU0VycgpHZXRUaHJlYWRTdGF0ZUdpdmVuVGFza1JlZigKICBUaHJl
YWRUYXNrUmVmIHRocmVhZFRSZWYsCiAgVGhyZWFkSUQgdGhyZWFkVG9HZXQsCiAgVGhyZWFkU3Rh
dGUgKiB0aHJlYWRTdGF0ZSkgOwojIDcwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvVGhyZWFkcy5oIiAzCmV4dGVybiBPU0VycgpTZXRUaHJlYWRSZWFkeUdpdmVuVGFza1JlZigK
ICBUaHJlYWRUYXNrUmVmIHRocmVhZFRSZWYsCiAgVGhyZWFkSUQgdGhyZWFkVG9TZXQpIDsKIyA3
NDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RocmVhZHMuaCIgMwojcHJhZ21h
IHBhY2socG9wKQoKCn0KIyAxNzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0Nh
cmJvbkNvcmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
Rm9sZGVycy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRm9s
ZGVycy5oIiAzCiNkZWZpbmUgX19GT0xERVJTX18gCiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0ZvbGRlcnMuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVz
aCwgMikKIyA2OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRm9sZGVycy5oIiAz
CmVudW0gewogIGtPblN5c3RlbURpc2sgPSAtMzI3NjhMLAogIGtPbkFwcHJvcHJpYXRlRGlzayA9
IC0zMjc2NywKCgogIGtTeXN0ZW1Eb21haW4gPSAtMzI3NjYsCiAga0xvY2FsRG9tYWluID0gLTMy
NzY1LAogIGtOZXR3b3JrRG9tYWluID0gLTMyNzY0LAogIGtVc2VyRG9tYWluID0gLTMyNzYzLAog
IGtDbGFzc2ljRG9tYWluID0gLTMyNzYyLAogIGtGb2xkZXJNYW5hZ2VyTGFzdERvbWFpbiA9IC0z
Mjc2MAp9OwoKCgoKCmVudW0gewogIGtMYXN0RG9tYWluQ29uc3RhbnQgPSAtMzI3NjAKfTsKCmVu
dW0gewogIGtDcmVhdGVGb2xkZXIgPSB0cnVlLAogIGtEb250Q3JlYXRlRm9sZGVyID0gZmFsc2UK
fTsKIyAxNzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZvbGRlcnMuaCIgMwpl
eHRlcm4gT1NFcnIKRmluZEZvbGRlcigKICBGU1ZvbHVtZVJlZk51bSB2UmVmTnVtLAogIE9TVHlw
ZSBmb2xkZXJUeXBlLAogIEJvb2xlYW4gY3JlYXRlRm9sZGVyLAogIEZTVm9sdW1lUmVmTnVtICog
Zm91bmRWUmVmTnVtLAogIFNJbnQzMiAqIGZvdW5kRGlySUQpIDsKIyAyMTkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZvbGRlcnMuaCIgMwpleHRlcm4gT1NFcnIKUmVsZWFzZUZv
bGRlcigKICBGU1ZvbHVtZVJlZk51bSB2UmVmTnVtLAogIE9TVHlwZSBmb2xkZXJUeXBlKSBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjkxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9Gb2xkZXJzLmgiIDMKZXh0ZXJuIE9TRXJyCkZTRmluZEZvbGRlcigKICBGU1ZvbHVt
ZVJlZk51bSB2UmVmTnVtLAogIE9TVHlwZSBmb2xkZXJUeXBlLAogIEJvb2xlYW4gY3JlYXRlRm9s
ZGVyLAogIEZTUmVmICogZm91bmRSZWYpIDsKIyAzMDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0ZvbGRlcnMuaCIgMwplbnVtIHsKICBrRGVza3RvcEZvbGRlclR5cGUgPSAnZGVz
aycsCiAga1RyYXNoRm9sZGVyVHlwZSA9ICd0cnNoJywKICBrV2hlcmVUb0VtcHR5VHJhc2hGb2xk
ZXJUeXBlID0gJ2VtcHQnLAogIGtGb250c0ZvbGRlclR5cGUgPSAnZm9udCcsCiAga1ByZWZlcmVu
Y2VzRm9sZGVyVHlwZSA9ICdwcmVmJywKICBrU3lzdGVtUHJlZmVyZW5jZXNGb2xkZXJUeXBlID0g
J3NwcmYnLAogIGtUZW1wb3JhcnlGb2xkZXJUeXBlID0gJ3RlbXAnLAojIDMyOSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRm9sZGVycy5oIiAzCiAga0NoZXdhYmxlSXRlbXNGb2xk
ZXJUeXBlID0gJ2ZsbnQnLAogIGtUZW1wb3JhcnlJdGVtc0luQ2FjaGVEYXRhRm9sZGVyVHlwZSA9
ICd2dG1wJywKICBrQXBwbGljYXRpb25zRm9sZGVyVHlwZSA9ICdhcHBzJywKICBrVm9sdW1lUm9v
dEZvbGRlclR5cGUgPSAncm9vdCcsCiAga0RvbWFpblRvcExldmVsRm9sZGVyVHlwZSA9ICdkdG9w
JywKICBrRG9tYWluTGlicmFyeUZvbGRlclR5cGUgPSAnZGxpYicsCiAga1VzZXJzRm9sZGVyVHlw
ZSA9ICd1c3JzJywKICBrQ3VycmVudFVzZXJGb2xkZXJUeXBlID0gJ2N1c3InLAogIGtTaGFyZWRV
c2VyRGF0YUZvbGRlclR5cGUgPSAnc2RhdCcKfTsKCgoKCgplbnVtIHsKICBrRG9jdW1lbnRzRm9s
ZGVyVHlwZSA9ICdkb2NzJywKICBrUGljdHVyZURvY3VtZW50c0ZvbGRlclR5cGUgPSAncGRvYycs
CiAga01vdmllRG9jdW1lbnRzRm9sZGVyVHlwZSA9ICdtZG9jJywKICBrTXVzaWNEb2N1bWVudHNG
b2xkZXJUeXBlID0gMHhCNTY0NkY2MyAsCiAga0ludGVybmV0U2l0ZXNGb2xkZXJUeXBlID0gJ3Np
dGUnLAogIGtQdWJsaWNGb2xkZXJUeXBlID0gJ3B1YmInCn07CgplbnVtIHsKICBrU2hhcmVkTGli
cmFyaWVzRm9sZGVyVHlwZSA9IDB4QzQ2QzY5NjIgLAogIGtWb2ljZXNGb2xkZXJUeXBlID0gJ2Z2
b2MnLAogIGtVdGlsaXRpZXNGb2xkZXJUeXBlID0gMHg3NTc0NjlDNCAsCiAga1RoZW1lc0ZvbGRl
clR5cGUgPSAndGhtZScsCiAga0Zhdm9yaXRlc0ZvbGRlclR5cGUgPSAnZmF2cycsCiAga0ludGVy
bmV0U2VhcmNoU2l0ZXNGb2xkZXJUeXBlID0gJ2lzc2YnLAogIGtJbnN0YWxsZXJMb2dzRm9sZGVy
VHlwZSA9ICdpbGdmJywKICBrU2NyaXB0c0ZvbGRlclR5cGUgPSAweDczNjM3MkM0ICwKICBrRm9s
ZGVyQWN0aW9uc0ZvbGRlclR5cGUgPSAnZmFzZicsCiAga1NwZWFrYWJsZUl0ZW1zRm9sZGVyVHlw
ZSA9ICdzcGtpJywKICBrS2V5Y2hhaW5Gb2xkZXJUeXBlID0gJ2tjaG4nCn07CgoKCmVudW0gewog
IGtDb2xvclN5bmNGb2xkZXJUeXBlID0gJ3N5bmMnLAogIGtDb2xvclN5bmNDTU1Gb2xkZXJUeXBl
ID0gJ2NjbW0nLAogIGtDb2xvclN5bmNTY3JpcHRpbmdGb2xkZXJUeXBlID0gJ2NzY3InLAogIGtQ
cmludGVyc0ZvbGRlclR5cGUgPSAnaW1wcicsCiAga1NwZWVjaEZvbGRlclR5cGUgPSAnc3BjaCcs
CiAga0NhcmJvbkxpYnJhcnlGb2xkZXJUeXBlID0gJ2NhcmInLAogIGtEb2N1bWVudGF0aW9uRm9s
ZGVyVHlwZSA9ICdpbmZvJywKICBrSVNTRG93bmxvYWRzRm9sZGVyVHlwZSA9ICdpc3NkJywKICBr
VXNlclNwZWNpZmljVG1wRm9sZGVyVHlwZSA9ICd1dG1wJywKICBrQ2FjaGVkRGF0YUZvbGRlclR5
cGUgPSAnY2FjaCcsCiAga0ZyYW1ld29ya3NGb2xkZXJUeXBlID0gJ2ZyYW0nLAogIGtQcml2YXRl
RnJhbWV3b3Jrc0ZvbGRlclR5cGUgPSAncGZybScsCiAga0NsYXNzaWNEZXNrdG9wRm9sZGVyVHlw
ZSA9ICdzZHNrJywKICBrU3lzdGVtU291bmRzRm9sZGVyVHlwZSA9ICdzc25kJywKICBrQ29tcG9u
ZW50c0ZvbGRlclR5cGUgPSAnY21wZCcsCiAga1F1aWNrVGltZUNvbXBvbmVudHNGb2xkZXJUeXBl
ID0gJ3djbXAnLAogIGtDb3JlU2VydmljZXNGb2xkZXJUeXBlID0gJ2NzcnYnLAogIGtBdWRpb1N1
cHBvcnRGb2xkZXJUeXBlID0gJ2FkaW8nLAogIGtBdWRpb1ByZXNldHNGb2xkZXJUeXBlID0gJ2Fw
c3QnLAogIGtBdWRpb1NvdW5kc0ZvbGRlclR5cGUgPSAnYXNuZCcsCiAga0F1ZGlvU291bmRCYW5r
c0ZvbGRlclR5cGUgPSAnYmFuaycsCiAga0F1ZGlvQWxlcnRTb3VuZHNGb2xkZXJUeXBlID0gJ2Fs
cnQnLAogIGtBdWRpb1BsdWdJbnNGb2xkZXJUeXBlID0gJ2FwbGcnLAogIGtBdWRpb0NvbXBvbmVu
dHNGb2xkZXJUeXBlID0gJ2FjbXAnLAogIGtLZXJuZWxFeHRlbnNpb25zRm9sZGVyVHlwZSA9ICdr
ZXh0JywKICBrRGlyZWN0b3J5U2VydmljZXNGb2xkZXJUeXBlID0gJ2RzcnYnLAogIGtEaXJlY3Rv
cnlTZXJ2aWNlc1BsdWdJbnNGb2xkZXJUeXBlID0gJ2RwbGcnLAogIGtJbnN0YWxsZXJSZWNlaXB0
c0ZvbGRlclR5cGUgPSAncmNwdCcsCiAga0ZpbGVTeXN0ZW1TdXBwb3J0Rm9sZGVyVHlwZSA9ICdm
c3lzJywKICBrQXBwbGVTaGFyZVN1cHBvcnRGb2xkZXJUeXBlID0gJ3NoYXInLAogIGtBcHBsZVNo
YXJlQXV0aGVudGljYXRpb25Gb2xkZXJUeXBlID0gJ2F1dGgnLAogIGtNSURJRHJpdmVyc0ZvbGRl
clR5cGUgPSAnbWlkaScsCiAga0tleWJvYXJkTGF5b3V0c0ZvbGRlclR5cGUgPSAna2xheScsCiAg
a0luZGV4RmlsZXNGb2xkZXJUeXBlID0gJ2luZHgnLAogIGtGaW5kQnlDb250ZW50SW5kZXhlc0Zv
bGRlclR5cGUgPSAnZmJjeCcsCiAga01hbmFnZWRJdGVtc0ZvbGRlclR5cGUgPSAnbWFuZycsCiAg
a0Jvb3RUaW1lU3RhcnR1cEl0ZW1zRm9sZGVyVHlwZSA9ICdlbXB6JywKICBrQXV0b21hdG9yV29y
a2Zsb3dzRm9sZGVyVHlwZSA9ICdmbG93JywKICBrQXV0b3NhdmVJbmZvcm1hdGlvbkZvbGRlclR5
cGUgPSAnYXNhdicsCiAga1Nwb3RsaWdodFNhdmVkU2VhcmNoZXNGb2xkZXJUeXBlID0gJ3Nwb3Qn
LAoKICBrU3BvdGxpZ2h0SW1wb3J0ZXJzRm9sZGVyVHlwZSA9ICdzaW1wJywKICBrU3BvdGxpZ2h0
TWV0YWRhdGFDYWNoZUZvbGRlclR5cGUgPSAnc2NjaCcsCiAga0lucHV0TWFuYWdlcnNGb2xkZXJU
eXBlID0gJ2lucHQnLAogIGtJbnB1dE1ldGhvZHNGb2xkZXJUeXBlID0gJ2lucGYnLAogIGtMaWJy
YXJ5QXNzaXN0YW50c0ZvbGRlclR5cGUgPSAnYXN0bCcsCiAga0F1ZGlvRGlnaWRlc2lnbkZvbGRl
clR5cGUgPSAnYWRpZycsCiAga0F1ZGlvVlNURm9sZGVyVHlwZSA9ICdhdnN0JywKICBrQ29sb3JQ
aWNrZXJzRm9sZGVyVHlwZSA9ICdjcGtyJywKICBrQ29tcG9zaXRpb25zRm9sZGVyVHlwZSA9ICdj
bXBzJywKICBrRm9udENvbGxlY3Rpb25zRm9sZGVyVHlwZSA9ICdmbmNsJywKICBraU1vdmllRm9s
ZGVyVHlwZSA9ICdpbW92JywKICBraU1vdmllUGx1Z0luc0ZvbGRlclR5cGUgPSAnaW1waScsCiAg
a2lNb3ZpZVNvdW5kRWZmZWN0c0ZvbGRlclR5cGUgPSAnaW1zZScsCiAga0Rvd25sb2Fkc0ZvbGRl
clR5cGUgPSAnZG93bicKfTsKCmVudW0gewogIGtDb2xvclN5bmNQcm9maWxlc0ZvbGRlclR5cGUg
PSAncHJvZicsCiAga0FwcGxpY2F0aW9uU3VwcG9ydEZvbGRlclR5cGUgPSAnYXN1cCcsCiAga1Rl
eHRFbmNvZGluZ3NGb2xkZXJUeXBlID0gMHhDNDc0NjU3OCAsCiAga1ByaW50ZXJEZXNjcmlwdGlv
bkZvbGRlclR5cGUgPSAncHBkZicsCiAga1ByaW50ZXJEcml2ZXJGb2xkZXJUeXBlID0gMHhDNDcw
NzI2NCAsCiAga1NjcmlwdGluZ0FkZGl0aW9uc0ZvbGRlclR5cGUgPSAweEM0NzM2MzcyCn07Cgpl
bnVtIHsKICBrQ2xhc3NpY1ByZWZlcmVuY2VzRm9sZGVyVHlwZSA9ICdjcHJmJwp9OwoKZW51bSB7
CiAga1F1aWNrTG9va0ZvbGRlclR5cGUgPSAncWxjaycKfTsKCmVudW0gewoKICBrU3lzdGVtRm9s
ZGVyVHlwZSA9ICdtYWNzJywKICBrU3lzdGVtRGVza3RvcEZvbGRlclR5cGUgPSAnc2RzaycsCiAg
a1N5c3RlbVRyYXNoRm9sZGVyVHlwZSA9ICdzdHJzJywKICBrUHJpbnRNb25pdG9yRG9jc0ZvbGRl
clR5cGUgPSAncHJudCcsCiAga0FMTU1vZHVsZXNGb2xkZXJUeXBlID0gJ3dhbGsnLAogIGtBTE1Q
cmVmZXJlbmNlc0ZvbGRlclR5cGUgPSAndHJpcCcsCiAga0FMTUxvY2F0aW9uc0ZvbGRlclR5cGUg
PSAnZmFsbCcsCiAga0FwcGxlRXh0cmFzRm9sZGVyVHlwZSA9IDB4NjE2NTc4QzQgLAogIGtDb250
ZXh0dWFsTWVudUl0ZW1zRm9sZGVyVHlwZSA9ICdjbW51JywKICBrTWFjT1NSZWFkTWVzRm9sZGVy
VHlwZSA9IDB4NkQ2RjcyQzQgLAogIGtTdGFydHVwRm9sZGVyVHlwZSA9ICdzdHJ0JywKICBrU2h1
dGRvd25Gb2xkZXJUeXBlID0gJ3NoZGYnLAogIGtBcHBsZU1lbnVGb2xkZXJUeXBlID0gJ2FtbnUn
LAogIGtDb250cm9sUGFuZWxGb2xkZXJUeXBlID0gJ2N0cmwnLAogIGtTeXN0ZW1Db250cm9sUGFu
ZWxGb2xkZXJUeXBlID0gJ3NjdGwnLAogIGtFeHRlbnNpb25Gb2xkZXJUeXBlID0gJ2V4dG4nLAog
IGtFeHRlbnNpb25EaXNhYmxlZEZvbGRlclR5cGUgPSAnZXh0RCcsCiAga0NvbnRyb2xQYW5lbERp
c2FibGVkRm9sZGVyVHlwZSA9ICdjdHJEJywKICBrU3lzdGVtRXh0ZW5zaW9uRGlzYWJsZWRGb2xk
ZXJUeXBlID0gJ21hY0QnLAogIGtTdGFydHVwSXRlbXNEaXNhYmxlZEZvbGRlclR5cGUgPSAnc3Ry
RCcsCiAga1NodXRkb3duSXRlbXNEaXNhYmxlZEZvbGRlclR5cGUgPSAnc2hkRCcsCiAga0Fzc2lz
dGFudHNGb2xkZXJUeXBlID0gMHg2MTczNzRDNCAsCiAga1N0YXRpb25lcnlGb2xkZXJUeXBlID0g
J29kc3QnLAogIGtPcGVuRG9jRm9sZGVyVHlwZSA9ICdvZG9kJywKICBrT3BlbkRvY1NoZWxsUGx1
Z0luc0ZvbGRlclR5cGUgPSAnb2RzcCcsCiAga0VkaXRvcnNGb2xkZXJUeXBlID0gJ29kZWQnLAog
IGtPcGVuRG9jRWRpdG9yc0ZvbGRlclR5cGUgPSAweEM0NkY2NDY2ICwKICBrT3BlbkRvY0xpYnJh
cmllc0ZvbGRlclR5cGUgPSAnb2RsYicsCiAga0dlbkVkaXRvcnNGb2xkZXJUeXBlID0gMHhDNDY1
NjQ2OSAsCiAga0hlbHBGb2xkZXJUeXBlID0gMHhDNDY4NkM3MCAsCiAga0ludGVybmV0UGx1Z0lu
Rm9sZGVyVHlwZSA9IDB4QzQ2RTY1NzQgLAogIGtNb2RlbVNjcmlwdHNGb2xkZXJUeXBlID0gMHhD
NDZENkY2NCAsCiAga0NvbnRyb2xTdHJpcE1vZHVsZXNGb2xkZXJUeXBlID0gJ3NkZXYnLAogIGtJ
bnRlcm5ldEZvbGRlclR5cGUgPSAweDY5NkU3NEM0ICwKICBrQXBwZWFyYW5jZUZvbGRlclR5cGUg
PSAnYXBwcicsCiAga1NvdW5kU2V0c0ZvbGRlclR5cGUgPSAnc25kcycsCiAga0Rlc2t0b3BQaWN0
dXJlc0ZvbGRlclR5cGUgPSAweDY0NzQ3MEM0ICwKICBrRmluZFN1cHBvcnRGb2xkZXJUeXBlID0g
J2ZuZHMnLAogIGtSZWNlbnRBcHBsaWNhdGlvbnNGb2xkZXJUeXBlID0gJ3JhcHAnLAogIGtSZWNl
bnREb2N1bWVudHNGb2xkZXJUeXBlID0gJ3Jkb2MnLAogIGtSZWNlbnRTZXJ2ZXJzRm9sZGVyVHlw
ZSA9ICdyc3ZyJywKICBrTGF1bmNoZXJJdGVtc0ZvbGRlclR5cGUgPSAnbGF1bicsCiAga1F1aWNr
VGltZUV4dGVuc2lvbnNGb2xkZXJUeXBlID0gJ3F0ZXgnLAogIGtEaXNwbGF5RXh0ZW5zaW9uc0Zv
bGRlclR5cGUgPSAnZHNwbCcsCiAga011bHRpcHJvY2Vzc2luZ0ZvbGRlclR5cGUgPSAnbXB4Zics
CiAga1ByaW50aW5nUGx1Z0luc0ZvbGRlclR5cGUgPSAncHBsZycsCiAga0FwcGxlc2hhcmVBdXRv
bW91bnRTZXJ2ZXJBbGlhc2VzRm9sZGVyVHlwZSA9IDB4NzM3Mjc2QzQgLAogIGtWb2x1bWVTZXR0
aW5nc0ZvbGRlclR5cGUgPSAndnNmZCcsCiAga1ByZU1hY09TOTFBcHBsaWNhdGlvbnNGb2xkZXJU
eXBlID0gMHg4QzcwNzA3MyAsCiAga1ByZU1hY09TOTFJbnN0YWxsZXJMb2dzRm9sZGVyVHlwZSA9
IDB4OTQ2QzY3NjYgLAogIGtQcmVNYWNPUzkxQXNzaXN0YW50c0ZvbGRlclR5cGUgPSAweDhDNzM3
NEM0ICwKICBrUHJlTWFjT1M5MVV0aWxpdGllc0ZvbGRlclR5cGUgPSAweDlGNzQ2OUM0ICwKICBr
UHJlTWFjT1M5MUFwcGxlRXh0cmFzRm9sZGVyVHlwZSA9IDB4OEM2NTc4QzQgLAogIGtQcmVNYWNP
UzkxTWFjT1NSZWFkTWVzRm9sZGVyVHlwZSA9IDB4QjU2RjcyQzQgLAogIGtQcmVNYWNPUzkxSW50
ZXJuZXRGb2xkZXJUeXBlID0gMHg5NDZFNzRDNCAsCiAga1ByZU1hY09TOTFBdXRvbW91bnRlZFNl
cnZlcnNGb2xkZXJUeXBlID0gMHhBNzcyNzZDNCAsCiAga1ByZU1hY09TOTFTdGF0aW9uZXJ5Rm9s
ZGVyVHlwZSA9IDB4QkY2NDczNzQgLAogIGtMb2NhbGVzRm9sZGVyVHlwZSA9IDB4QzQ2QzZGNjMg
LAogIGtGaW5kQnlDb250ZW50UGx1Z2luc0ZvbGRlclR5cGUgPSAnZmJjcCcsCiAga0ZpbmRCeUNv
bnRlbnRGb2xkZXJUeXBlID0gJ2ZiY2YnCn07CgoKZW51bSB7CiAga01hZ2ljVGVtcG9yYXJ5SXRl
bXNGb2xkZXJUeXBlID0gJ210bXAnLAogIGtUZW1wb3JhcnlJdGVtc0luVXNlckRvbWFpbkZvbGRl
clR5cGUgPSAndGVtcScsCiAga0N1cnJlbnRVc2VyUmVtb3RlRm9sZGVyTG9jYXRpb24gPSAncnVz
ZicsCiAga0N1cnJlbnRVc2VyUmVtb3RlRm9sZGVyVHlwZSA9ICdydXNyJwp9OwoKCgoKCmVudW0g
ewogIGtEZXZlbG9wZXJEb2NzRm9sZGVyVHlwZSA9ICdkZG9jJywKICBrRGV2ZWxvcGVySGVscEZv
bGRlclR5cGUgPSAnZGV2aCcsCiAga0RldmVsb3BlckZvbGRlclR5cGUgPSAnZGV2ZicsCiAga0Rl
dmVsb3BlckFwcGxpY2F0aW9uc0ZvbGRlclR5cGUgPSAnZGFwcCcKfTsKCgplbnVtIHsKICBrQ3Jl
YXRlRm9sZGVyQXRCb290ID0gMHgwMDAwMDAwMiwKICBrQ3JlYXRlRm9sZGVyQXRCb290Qml0ID0g
MSwKICBrRm9sZGVyQ3JlYXRlZEludmlzaWJsZSA9IDB4MDAwMDAwMDQsCiAga0ZvbGRlckNyZWF0
ZWRJbnZpc2libGVCaXQgPSAyLAogIGtGb2xkZXJDcmVhdGVkTmFtZUxvY2tlZCA9IDB4MDAwMDAw
MDgsCiAga0ZvbGRlckNyZWF0ZWROYW1lTG9ja2VkQml0ID0gMywKICBrRm9sZGVyQ3JlYXRlZEFk
bWluUHJpdnMgPSAweDAwMDAwMDEwLAogIGtGb2xkZXJDcmVhdGVkQWRtaW5Qcml2c0JpdCA9IDQK
fTsKCmVudW0gewogIGtGb2xkZXJJblVzZXJGb2xkZXIgPSAweDAwMDAwMDIwLAogIGtGb2xkZXJJ
blVzZXJGb2xkZXJCaXQgPSA1LAogIGtGb2xkZXJUcmFja2VkQnlBbGlhcyA9IDB4MDAwMDAwNDAs
CiAga0ZvbGRlclRyYWNrZWRCeUFsaWFzQml0ID0gNiwKICBrRm9sZGVySW5SZW1vdGVVc2VyRm9s
ZGVySWZBdmFpbGFibGUgPSAweDAwMDAwMDgwLAogIGtGb2xkZXJJblJlbW90ZVVzZXJGb2xkZXJJ
ZkF2YWlsYWJsZUJpdCA9IDcsCiAga0ZvbGRlck5ldmVyTWF0Y2hlZEluSWRlbnRpZnlGb2xkZXIg
PSAweDAwMDAwMTAwLAogIGtGb2xkZXJOZXZlck1hdGNoZWRJbklkZW50aWZ5Rm9sZGVyQml0ID0g
OCwKICBrRm9sZGVyTXVzdFN0YXlPblNhbWVWb2x1bWUgPSAweDAwMDAwMjAwLAogIGtGb2xkZXJN
dXN0U3RheU9uU2FtZVZvbHVtZUJpdCA9IDksCiAga0ZvbGRlck1hbmFnZXJGb2xkZXJJbk1hY09T
OUZvbGRlcklmTWFjT1NYSXNJbnN0YWxsZWRNYXNrID0gMHgwMDAwMDQwMCwKICBrRm9sZGVyTWFu
YWdlckZvbGRlckluTWFjT1M5Rm9sZGVySWZNYWNPU1hJc0luc3RhbGxlZEJpdCA9IDEwLAogIGtG
b2xkZXJJbkxvY2FsT3JSZW1vdGVVc2VyRm9sZGVyID0ga0ZvbGRlckluVXNlckZvbGRlciB8IGtG
b2xkZXJJblJlbW90ZVVzZXJGb2xkZXJJZkF2YWlsYWJsZSwKICBrRm9sZGVyTWFuYWdlck5vdENy
ZWF0ZWRPblJlbW90ZVZvbHVtZXNCaXQgPSAxMSwKICBrRm9sZGVyTWFuYWdlck5vdENyZWF0ZWRP
blJlbW90ZVZvbHVtZXNNYXNrID0gKDEgPDwga0ZvbGRlck1hbmFnZXJOb3RDcmVhdGVkT25SZW1v
dGVWb2x1bWVzQml0KSwKICBrRm9sZGVyTWFuYWdlck5ld2x5Q3JlYXRlZEZvbGRlcklzTG9jYWxp
emVkQml0ID0gMTIsCiAga0ZvbGRlck1hbmFnZXJOZXdseUNyZWF0ZWRGb2xkZXJTaG91bGRIYXZl
RG90TG9jYWxpemVkQ3JlYXRlZFdpdGhpbk1hc2sgPSAoMSA8PCBrRm9sZGVyTWFuYWdlck5ld2x5
Q3JlYXRlZEZvbGRlcklzTG9jYWxpemVkQml0KQp9OwoKdHlwZWRlZiBVSW50MzIgRm9sZGVyRGVz
Y0ZsYWdzOwoKZW51bSB7CiAga1JlbGF0aXZlRm9sZGVyID0gJ3JlbGYnLAogIGtSZWRpcmVjdGVk
UmVsYXRpdmVGb2xkZXIgPSAncnJlbCcsCiAga1NwZWNpYWxGb2xkZXIgPSAnc3BjZicKfTsKCnR5
cGVkZWYgT1NUeXBlIEZvbGRlckNsYXNzOwoKZW51bSB7CiAga0JsZXNzZWRGb2xkZXIgPSAnYmxz
ZicsCiAga1Jvb3RGb2xkZXIgPSAncm90ZicKfTsKCmVudW0gewogIGtDdXJyZW50VXNlckZvbGRl
ckxvY2F0aW9uID0gJ2N1c2YnCn07CgoKZW51bSB7CiAga0RpY3Rpb25hcmllc0ZvbGRlclR5cGUg
PSAnZGljdCcsCiAga0xvZ3NGb2xkZXJUeXBlID0gJ2xvZ3MnLAogIGtQcmVmZXJlbmNlUGFuZXNG
b2xkZXJUeXBlID0gJ3BwYW4nCn07CgoKZW51bSB7CiAga1dpZGdldHNGb2xkZXJUeXBlID0gJ3dk
Z3QnLAogIGtTY3JlZW5TYXZlcnNGb2xkZXJUeXBlID0gJ3Njcm4nCn07Cgp0eXBlZGVmIE9TVHlw
ZSBGb2xkZXJUeXBlOwp0eXBlZGVmIE9TVHlwZSBGb2xkZXJMb2NhdGlvbjsKCnN0cnVjdCBGb2xk
ZXJEZXNjIHsKICBTaXplIGRlc2NTaXplOwogIEZvbGRlclR5cGUgZm9sZFR5cGU7CiAgRm9sZGVy
RGVzY0ZsYWdzIGZsYWdzOwogIEZvbGRlckNsYXNzIGZvbGRDbGFzczsKICBGb2xkZXJUeXBlIGZv
bGRMb2NhdGlvbjsKICBPU1R5cGUgYmFkZ2VTaWduYXR1cmU7CiAgT1NUeXBlIGJhZGdlVHlwZTsK
ICBVSW50MzIgcmVzZXJ2ZWQ7CiAgU3RyRmlsZU5hbWUgbmFtZTsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
Rm9sZGVyRGVzYyBGb2xkZXJEZXNjOwp0eXBlZGVmIEZvbGRlckRlc2MgKiBGb2xkZXJEZXNjUHRy
OwoKdHlwZWRlZiBVSW50MzIgUm91dGluZ0ZsYWdzOwpzdHJ1Y3QgRm9sZGVyUm91dGluZyB7CiAg
U2l6ZSBkZXNjU2l6ZTsKICBPU1R5cGUgZmlsZVR5cGU7CiAgRm9sZGVyVHlwZSByb3V0ZUZyb21G
b2xkZXI7CiAgRm9sZGVyVHlwZSByb3V0ZVRvRm9sZGVyOwogIFJvdXRpbmdGbGFncyBmbGFnczsK
fTsKdHlwZWRlZiBzdHJ1Y3QgRm9sZGVyUm91dGluZyBGb2xkZXJSb3V0aW5nOwp0eXBlZGVmIEZv
bGRlclJvdXRpbmcgKiBGb2xkZXJSb3V0aW5nUHRyOwojIDY4OSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvRm9sZGVycy5oIiAzCmV4dGVybiBPU0VycgpBZGRGb2xkZXJEZXNjcmlw
dG9yKAogIEZvbGRlclR5cGUgZm9sZFR5cGUsCiAgRm9sZGVyRGVzY0ZsYWdzIGZsYWdzLAogIEZv
bGRlckNsYXNzIGZvbGRDbGFzcywKICBGb2xkZXJMb2NhdGlvbiBmb2xkTG9jYXRpb24sCiAgT1NU
eXBlIGJhZGdlU2lnbmF0dXJlLAogIE9TVHlwZSBiYWRnZVR5cGUsCiAgQ29uc3RTdHJGaWxlTmFt
ZVBhcmFtIG5hbWUsCiAgQm9vbGVhbiByZXBsYWNlRmxhZykgOwojIDc0MSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvRm9sZGVycy5oIiAzCmV4dGVybiBPU0VycgpHZXRGb2xkZXJU
eXBlcygKICBVSW50MzIgcmVxdWVzdGVkVHlwZUNvdW50LAogIFVJbnQzMiAqIHRvdGFsVHlwZUNv
dW50LAogIEZvbGRlclR5cGUgKiB0aGVUeXBlcykgOwojIDc2OSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvRm9sZGVycy5oIiAzCmV4dGVybiBPU0VycgpSZW1vdmVGb2xkZXJEZXNj
cmlwdG9yKEZvbGRlclR5cGUgZm9sZFR5cGUpIDsKIyA4MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0ZvbGRlcnMuaCIgMwpleHRlcm4gT1NTdGF0dXMKR2V0Rm9sZGVyTmFtZVVu
aWNvZGUoCiAgRlNWb2x1bWVSZWZOdW0gdlJlZk51bSwKICBPU1R5cGUgZm9sZFR5cGUsCiAgRlNW
b2x1bWVSZWZOdW0gKiBmb3VuZFZSZWZOdW0sCiAgSEZTVW5pU3RyMjU1ICogbmFtZSkgOwojIDg2
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRm9sZGVycy5oIiAzCmV4dGVybiBP
U0VycgpJbnZhbGlkYXRlRm9sZGVyRGVzY3JpcHRvckNhY2hlKAogIEZTVm9sdW1lUmVmTnVtIHZS
ZWZOdW0sCiAgU0ludDMyIGRpcklEKSA7CiMgOTA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9Gb2xkZXJzLmgiIDMKZXh0ZXJuIE9TRXJyCklkZW50aWZ5Rm9sZGVyKAogIEZTVm9s
dW1lUmVmTnVtIHZSZWZOdW0sCiAgU0ludDMyIGRpcklELAogIEZvbGRlclR5cGUgKiBmb2xkVHlw
ZSkgOwojIDk2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRm9sZGVycy5oIiAz
CmV4dGVybiBPU0VycgpGU0RldGVybWluZUlmUmVmSXNFbmNsb3NlZEJ5Rm9sZGVyKAogIEZTVm9s
dW1lUmVmTnVtIGRvbWFpbk9yVlJlZk51bSwKICBPU1R5cGUgZm9sZGVyVHlwZSwKICBjb25zdCBG
U1JlZiAqIGluUmVmLAogIEJvb2xlYW4gKiBvdXRSZXN1bHQpIDsKIyAxMDI1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Gb2xkZXJzLmgiIDMKZXh0ZXJuIE9TRXJyCkRldGVybWlu
ZUlmUGF0aElzRW5jbG9zZWRCeUZvbGRlcigKICBGU1ZvbHVtZVJlZk51bSBkb21haW5PclZSZWZO
dW0sCiAgT1NUeXBlIGZvbGRlclR5cGUsCiAgY29uc3QgVUludDggKiB1dGY4UGF0aCwKICBCb29s
ZWFuIHBhdGhJc1JlYWxQYXRoLAogIEJvb2xlYW4gKiBvdXRSZXN1bHQpIDsKIyAxNTcxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Gb2xkZXJzLmgiIDMKdHlwZWRlZiBPU1N0YXR1
cyAoICogRm9sZGVyTWFuYWdlck5vdGlmaWNhdGlvblByb2NQdHIpKE9TVHlwZSBtZXNzYWdlLCB2
b2lkICphcmcsIHZvaWQgKnVzZXJSZWZDb24pOwp0eXBlZGVmIEZvbGRlck1hbmFnZXJOb3RpZmlj
YXRpb25Qcm9jUHRyIEZvbGRlck1hbmFnZXJOb3RpZmljYXRpb25VUFA7CiMgMTU4MSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRm9sZGVycy5oIiAzCmV4dGVybiBGb2xkZXJNYW5h
Z2VyTm90aWZpY2F0aW9uVVBQCk5ld0ZvbGRlck1hbmFnZXJOb3RpZmljYXRpb25VUFAoRm9sZGVy
TWFuYWdlck5vdGlmaWNhdGlvblByb2NQdHIgdXNlclJvdXRpbmUpIDsKIyAxNTkyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Gb2xkZXJzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9z
ZUZvbGRlck1hbmFnZXJOb3RpZmljYXRpb25VUFAoRm9sZGVyTWFuYWdlck5vdGlmaWNhdGlvblVQ
UCB1c2VyVVBQKSA7CiMgMTYwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRm9s
ZGVycy5oIiAzCmV4dGVybiBPU1N0YXR1cwpJbnZva2VGb2xkZXJNYW5hZ2VyTm90aWZpY2F0aW9u
VVBQKAogIE9TVHlwZSBtZXNzYWdlLAogIHZvaWQgKiBhcmcsCiAgdm9pZCAqIHVzZXJSZWZDb24s
CiAgRm9sZGVyTWFuYWdlck5vdGlmaWNhdGlvblVQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUg
Rm9sZGVyTWFuYWdlck5vdGlmaWNhdGlvblVQUCBOZXdGb2xkZXJNYW5hZ2VyTm90aWZpY2F0aW9u
VVBQKEZvbGRlck1hbmFnZXJOb3RpZmljYXRpb25Qcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVy
biB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUZvbGRlck1hbmFnZXJOb3Rp
ZmljYXRpb25VUFAoRm9sZGVyTWFuYWdlck5vdGlmaWNhdGlvblVQUCkgeyB9CiAgICBpbmxpbmUg
T1NTdGF0dXMgSW52b2tlRm9sZGVyTWFuYWdlck5vdGlmaWNhdGlvblVQUChPU1R5cGUgbWVzc2Fn
ZSwgdm9pZCAqIGFyZywgdm9pZCAqIHVzZXJSZWZDb24sIEZvbGRlck1hbmFnZXJOb3RpZmljYXRp
b25VUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShtZXNzYWdlLCBhcmcsIHVzZXJSZWZD
b24pOyB9CiMgMTcyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRm9sZGVycy5o
IiAzCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDE3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9UaW1lci5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvVGltZXIuaCIgMwojZGVmaW5lIF9fVElNRVJfXyAKIyA0MCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvVGltZXIuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2so
cHVzaCwgMikKIyA3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGltZXIuaCIg
MwpleHRlcm4gdm9pZApNaWNyb3NlY29uZHMoVW5zaWduZWRXaWRlICogbWljcm9UaWNrQ291bnQp
IDsKIyAxMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RpbWVyLmgiIDMKZW51
bSB7CgogIGtUTVRhc2tBY3RpdmUgPSAoMUwgPDwgMTUpCn07Cgp0eXBlZGVmIHN0cnVjdCBUTVRh
c2sgVE1UYXNrOwp0eXBlZGVmIFRNVGFzayAqIFRNVGFza1B0cjsKdHlwZWRlZiB2b2lkICggKiBU
aW1lclByb2NQdHIpKFRNVGFza1B0ciB0bVRhc2tQdHIpOwp0eXBlZGVmIFRpbWVyUHJvY1B0ciBU
aW1lclVQUDsKc3RydWN0IFRNVGFzayB7CiAgUUVsZW1QdHIgcUxpbms7CiAgc2hvcnQgcVR5cGU7
CiAgVGltZXJVUFAgdG1BZGRyOwogIGxvbmcgdG1Db3VudDsKICBsb25nIHRtV2FrZVVwOwogIGxv
bmcgdG1SZXNlcnZlZDsKfTsKIyAxNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L1RpbWVyLmgiIDMKZXh0ZXJuIHZvaWQKSW5zVGltZShRRWxlbVB0ciB0bVRhc2tQdHIpIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1RpbWVyLmgiIDMKZXh0ZXJuIHZvaWQKSW5zWFRpbWUoUUVsZW1QdHIgdG1UYXNrUHRy
KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTcxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9UaW1lci5oIiAzCmV4dGVybiB2b2lkClByaW1lVGltZSgKICBRRWxlbVB0
ciB0bVRhc2tQdHIsCiAgbG9uZyBjb3VudCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoj
IDE4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGltZXIuaCIgMwpleHRlcm4g
dm9pZApSbXZUaW1lKFFFbGVtUHRyIHRtVGFza1B0cikgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwojIDIyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGltZXIuaCIgMwpl
eHRlcm4gT1NFcnIKSW5zdGFsbFRpbWVUYXNrKFFFbGVtUHRyIHRtVGFza1B0cikgX19hdHRyaWJ1
dGVfXygoZGVwcmVjYXRlZCkpOwojIDI3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvVGltZXIuaCIgMwpleHRlcm4gT1NFcnIKSW5zdGFsbFhUaW1lVGFzayhRRWxlbVB0ciB0bVRh
c2tQdHIpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAzNDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL1RpbWVyLmgiIDMKZXh0ZXJuIE9TRXJyClByaW1lVGltZVRhc2so
CiAgUUVsZW1QdHIgdG1UYXNrUHRyLAogIGxvbmcgY291bnQpIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKIyAzOTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RpbWVyLmgi
IDMKZXh0ZXJuIE9TRXJyClJlbW92ZVRpbWVUYXNrKFFFbGVtUHRyIHRtVGFza1B0cikgX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDQwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvVGltZXIuaCIgMwpleHRlcm4gVGltZXJVUFAKTmV3VGltZXJVUFAoVGltZXJQcm9jUHRy
IHVzZXJSb3V0aW5lKSA7CiMgNDE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9U
aW1lci5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VUaW1lclVQUChUaW1lclVQUCB1c2VyVVBQKSA7
CiMgNDI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9UaW1lci5oIiAzCmV4dGVy
biB2b2lkCkludm9rZVRpbWVyVVBQKAogIFRNVGFza1B0ciB0bVRhc2tQdHIsCiAgVGltZXJVUFAg
dXNlclVQUCkgOwoKCgogICAgaW5saW5lIFRpbWVyVVBQIE5ld1RpbWVyVVBQKFRpbWVyUHJvY1B0
ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERp
c3Bvc2VUaW1lclVQUChUaW1lclVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VUaW1lclVQ
UChUTVRhc2tQdHIgdG1UYXNrUHRyLCBUaW1lclVQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCkodG1U
YXNrUHRyKTsgfQojIDQ0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGltZXIu
aCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAxNzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0NhcmJvbkNvcmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nSW5mby5oIiAxIDMKIyAyNiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nSW5mby5oIiAzCiNkZWZpbmUgX19N
VUxUSVBST0NFU1NJTkdJTkZPX18gCiMgNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL011bHRpcHJvY2Vzc2luZ0luZm8uaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIG9wdGlv
bnMgYWxpZ249cG93ZXIKIyAxNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011
bHRpcHJvY2Vzc2luZ0luZm8uaCIgMwpleHRlcm4gT1NTdGF0dXMKTVBHZXROZXh0Q3B1SUQoCiAg
TVBDb2hlcmVuY2VJRCBvd25pbmdDb2hlcmVuY2VJRCwKICBNUENwdUlEICogY3B1SUQpIDsKIyAx
OTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL011bHRpcHJvY2Vzc2luZ0luZm8u
aCIgMwpleHRlcm4gT1NTdGF0dXMKTVBHZXROZXh0VGFza0lEKAogIE1QUHJvY2Vzc0lEIG93bmlu
Z1Byb2Nlc3NJRCwKICBNUFRhc2tJRCAqIHRhc2tJRCkgOwojIDMwNyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nSW5mby5oIiAzCmVudW0gewoKICBrTVBR
dWV1ZUluZm9WZXJzaW9uID0gMUwgfCAoa09wYXF1ZVF1ZXVlSUQgPDwgMTYpLAogIGtNUFNlbWFw
aG9yZUluZm9WZXJzaW9uID0gMUwgfCAoa09wYXF1ZVNlbWFwaG9yZUlEIDw8IDE2KSwKICBrTVBF
dmVudEluZm9WZXJzaW9uID0gMUwgfCAoa09wYXF1ZUV2ZW50SUQgPDwgMTYpLAogIGtNUENyaXRp
Y2FsUmVnaW9uSW5mb1ZlcnNpb24gPSAxTCB8IChrT3BhcXVlQ3JpdGljYWxSZWdpb25JRCA8PCAx
NiksCiAga01QTm90aWZpY2F0aW9uSW5mb1ZlcnNpb24gPSAxTCB8IChrT3BhcXVlTm90aWZpY2F0
aW9uSUQgPDwgMTYpLAogIGtNUEFkZHJlc3NTcGFjZUluZm9WZXJzaW9uID0gMUwgfCAoa09wYXF1
ZUFkZHJlc3NTcGFjZUlEIDw8IDE2KQp9OwoKCnN0cnVjdCBNUFF1ZXVlSW5mbyB7CiAgUEJWZXJz
aW9uIHZlcnNpb247CgogIE1QUHJvY2Vzc0lEIHByb2Nlc3NJRDsKICBPU1R5cGUgcXVldWVOYW1l
OwoKICBJdGVtQ291bnQgbldhaXRpbmc7CiAgTVBUYXNrSUQgd2FpdGluZ1Rhc2tJRDsKCiAgSXRl
bUNvdW50IG5NZXNzYWdlczsKICBJdGVtQ291bnQgblJlc2VydmVkOwoKICB2b2lkICogcDE7CiAg
dm9pZCAqIHAyOwogIHZvaWQgKiBwMzsKfTsKdHlwZWRlZiBzdHJ1Y3QgTVBRdWV1ZUluZm8gTVBR
dWV1ZUluZm87CnN0cnVjdCBNUFNlbWFwaG9yZUluZm8gewogIFBCVmVyc2lvbiB2ZXJzaW9uOwoK
ICBNUFByb2Nlc3NJRCBwcm9jZXNzSUQ7CiAgT1NUeXBlIHNlbWFwaG9yZU5hbWU7CgogIEl0ZW1D
b3VudCBuV2FpdGluZzsKICBNUFRhc2tJRCB3YWl0aW5nVGFza0lEOwoKICBJdGVtQ291bnQgbWF4
aW11bTsKICBJdGVtQ291bnQgY291bnQ7Cn07CnR5cGVkZWYgc3RydWN0IE1QU2VtYXBob3JlSW5m
byBNUFNlbWFwaG9yZUluZm87CnN0cnVjdCBNUEV2ZW50SW5mbyB7CiAgUEJWZXJzaW9uIHZlcnNp
b247CgogIE1QUHJvY2Vzc0lEIHByb2Nlc3NJRDsKICBPU1R5cGUgZXZlbnROYW1lOwoKICBJdGVt
Q291bnQgbldhaXRpbmc7CiAgTVBUYXNrSUQgd2FpdGluZ1Rhc2tJRDsKCiAgTVBFdmVudEZsYWdz
IGV2ZW50czsKfTsKdHlwZWRlZiBzdHJ1Y3QgTVBFdmVudEluZm8gTVBFdmVudEluZm87CnN0cnVj
dCBNUENyaXRpY2FsUmVnaW9uSW5mbyB7CiAgUEJWZXJzaW9uIHZlcnNpb247CgogIE1QUHJvY2Vz
c0lEIHByb2Nlc3NJRDsKICBPU1R5cGUgcmVnaW9uTmFtZTsKCiAgSXRlbUNvdW50IG5XYWl0aW5n
OwogIE1QVGFza0lEIHdhaXRpbmdUYXNrSUQ7CgogIE1QVGFza0lEIG93bmluZ1Rhc2s7CiAgSXRl
bUNvdW50IGNvdW50Owp9Owp0eXBlZGVmIHN0cnVjdCBNUENyaXRpY2FsUmVnaW9uSW5mbyBNUENy
aXRpY2FsUmVnaW9uSW5mbzsKc3RydWN0IE1QTm90aWZpY2F0aW9uSW5mbyB7CiAgUEJWZXJzaW9u
IHZlcnNpb247CgogIE1QUHJvY2Vzc0lEIHByb2Nlc3NJRDsKICBPU1R5cGUgbm90aWZpY2F0aW9u
TmFtZTsKCiAgTVBRdWV1ZUlEIHF1ZXVlSUQ7CiAgdm9pZCAqIHAxOwogIHZvaWQgKiBwMjsKICB2
b2lkICogcDM7CgogIE1QRXZlbnRJRCBldmVudElEOwogIE1QRXZlbnRGbGFncyBldmVudHM7Cgog
IE1QU2VtYXBob3JlSUQgc2VtYXBob3JlSUQ7Cn07CnR5cGVkZWYgc3RydWN0IE1QTm90aWZpY2F0
aW9uSW5mbyBNUE5vdGlmaWNhdGlvbkluZm87CnN0cnVjdCBNUEFkZHJlc3NTcGFjZUluZm8gewog
IFBCVmVyc2lvbiB2ZXJzaW9uOwoKICBNUFByb2Nlc3NJRCBwcm9jZXNzSUQ7CiAgTVBDb2hlcmVu
Y2VJRCBncm91cElEOwogIEl0ZW1Db3VudCBuVGFza3M7CiAgVUludDMyIHZzaWRbMTZdOwp9Owp0
eXBlZGVmIHN0cnVjdCBNUEFkZHJlc3NTcGFjZUluZm8gTVBBZGRyZXNzU3BhY2VJbmZvOwojIDQ2
OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTXVsdGlwcm9jZXNzaW5nSW5mby5o
IiAzCiNwcmFnbWEgb3B0aW9ucyBhbGlnbj1yZXNldAoKCn0KIyAxODMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkNvcmUuaCIgMiAzCiMgMTk0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25Db3JlLmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5m
cmFtZXdvcmsvSGVhZGVycy9Mb3dNZW0uaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0xvd01lbS5oIiAzCiNkZWZpbmUgX19MT1dNRU1fXyAKIyA0OSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTG93TWVtLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3By
YWdtYSBwYWNrKHB1c2gsIDIpCiMgMjYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9Mb3dNZW0uaCIgMwpleHRlcm4gU0ludDE2IExNR2V0Qm9vdERyaXZlKHZvaWQpIDsKIyAyNzMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0xvd01lbS5oIiAzCmV4dGVybiB2b2lk
IExNU2V0Qm9vdERyaXZlKFNJbnQxNiB2YWx1ZSkgOwojIDkzOSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvTG93TWVtLmgiIDMKZXh0ZXJuIFNJbnQxNiBMTUdldEFwRm9udElEKHZv
aWQpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA5NTQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0xvd01lbS5oIiAzCmV4dGVybiB2b2lkIExNU2V0QXBGb250SUQoU0lu
dDE2IHZhbHVlKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTAxMiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJv
bkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTG93TWVtLmgiIDMKZXh0ZXJuIFNJbnQxNiBMTUdldFN5
c01hcCh2b2lkKSA7CiMgMTAyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTG93
TWVtLmgiIDMKZXh0ZXJuIHZvaWQgTE1TZXRTeXNNYXAoU0ludDE2IHZhbHVlKSA7CiMgMTAzNCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTG93TWVtLmgiIDMKZXh0ZXJuIFVJbnQ4
IExNR2V0UmVzTG9hZCh2b2lkKSA7CiMgMTA0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvTG93TWVtLmgiIDMKZXh0ZXJuIHZvaWQgTE1TZXRSZXNMb2FkKFVJbnQ4IHZhbHVlKSA7
CiMgMTA1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTG93TWVtLmgiIDMKZXh0
ZXJuIFNJbnQxNiBMTUdldFJlc0Vycih2b2lkKSA7CiMgMTA2NyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvTG93TWVtLmgiIDMKZXh0ZXJuIHZvaWQgTE1TZXRSZXNFcnIoU0ludDE2
IHZhbHVlKSA7CiMgMTA3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTG93TWVt
LmgiIDMKZXh0ZXJuIFVJbnQ4IExNR2V0VG1wUmVzTG9hZCh2b2lkKSA7CiMgMTA4OSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvTG93TWVtLmgiIDMKZXh0ZXJuIHZvaWQgTE1TZXRU
bXBSZXNMb2FkKFVJbnQ4IHZhbHVlKSA7CiMgMTEwMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvTG93TWVtLmgiIDMKZXh0ZXJuIFB0ciBMTUdldEludGxTcGVjKHZvaWQpIDsKIyAx
MTEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Mb3dNZW0uaCIgMwpleHRlcm4g
dm9pZCBMTVNldEludGxTcGVjKFB0ciB2YWx1ZSkgOwojIDExNDYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0xvd01lbS5oIiAzCmV4dGVybiB2b2lkIExNU2V0U3lzRm9udEZhbShT
SW50MTYgdmFsdWUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxMTYxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2Fy
Ym9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9Mb3dNZW0uaCIgMwpleHRlcm4gU0ludDE2IExNR2V0
U3lzRm9udFNpemUodm9pZCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDExNzYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0xvd01lbS5oIiAzCmV4dGVybiB2b2lkIExN
U2V0U3lzRm9udFNpemUoU0ludDE2IHZhbHVlKSA7CiMgMTQxNiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvTG93TWVtLmgiIDMKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgMTk1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25Db3JlLmgiIDIgMwoKCgojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0FWTFRyZWUuaCIgMSAzCiMgMTcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0FWTFRyZWUuaCIgMwojZGVmaW5lIF9fQVZM
VFJFRV9fIAojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9BVkxUcmVlLmgi
IDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCiMgNDggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0FWTFRyZWUuaCIgMwp0eXBlZGVmIFVJbnQxNiBBVkxWaXNp
dFN0YWdlOwplbnVtIHsKCgoKCiAga0FWTFByZU9yZGVyID0gMCwKCgoKCgogIGtBVkxJbk9yZGVy
ID0gMSwKCgoKCiAga0FWTFBvc3RPcmRlciA9IDIKfTsKIyA3NSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvQVZMVHJlZS5oIiAzCnR5cGVkZWYgVUludDE2IEFWTE9yZGVyOwplbnVt
IHsKCgoKCiAga0xlZnRUb1JpZ2h0ID0gMCwKCgoKCiAga1JpZ2h0VG9MZWZ0ID0gMQp9OwojIDk2
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9BVkxUcmVlLmgiIDMKdHlwZWRlZiBV
SW50MTYgQVZMTm9kZVR5cGU7CmVudW0gewogIGtBVkxJc1RyZWUgPSAwLAogIGtBVkxJc0xlZnRC
cmFuY2ggPSAxLAogIGtBVkxJc1JpZ2h0QnJhbmNoID0gMiwKICBrQVZMSXNMZWFmID0gMywKICBr
QVZMTnVsbE5vZGUgPSA0Cn07CgplbnVtIHsKICBlcnJJdGVtQWxyZWFkeUluVHJlZSA9IC05NjAs
CiAgZXJyTm90VmFsaWRUcmVlID0gLTk2MSwKICBlcnJJdGVtTm90Rm91bmRJblRyZWUgPSAtOTYy
LAogIGVyckNhbk5vdEluc2VydFdoaWxlV2Fsa1Byb2NJblByb2dyZXNzID0gLTk2MywKICBlcnJU
cmVlSXNMb2NrZWQgPSAtOTY0Cn07CiMgMTI0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9BVkxUcmVlLmgiIDMKc3RydWN0IEFWTFRyZWVTdHJ1Y3QgewogIE9TVHlwZSBzaWduYXR1
cmU7CiAgdW5zaWduZWQgbG9uZyBwcml2YXRlU3R1ZmZbOF07Cn07CnR5cGVkZWYgc3RydWN0IEFW
TFRyZWVTdHJ1Y3QgQVZMVHJlZVN0cnVjdDsKdHlwZWRlZiBBVkxUcmVlU3RydWN0ICogQVZMVHJl
ZVB0cjsKIyAxNjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0FWTFRyZWUuaCIg
Mwp0eXBlZGVmIFNJbnQzMiAoICogQVZMQ29tcGFyZUl0ZW1zUHJvY1B0cikoQVZMVHJlZVB0ciB0
cmVlLCBjb25zdCB2b2lkICppMSwgY29uc3Qgdm9pZCAqaTIsIEFWTE5vZGVUeXBlIG5kX3R5cCk7
CiMgMTkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9BVkxUcmVlLmgiIDMKdHlw
ZWRlZiBCeXRlQ291bnQgKCAqIEFWTEl0ZW1TaXplUHJvY1B0cikoQVZMVHJlZVB0ciB0cmVlLCBj
b25zdCB2b2lkICppdGVtUHRyKTsKIyAyMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0FWTFRyZWUuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIEFWTERpc3Bvc2VJdGVtUHJvY1B0ciko
QVZMVHJlZVB0ciB0cmVlLCBjb25zdCB2b2lkICpkYXRhUCk7CiMgMjY5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9BVkxUcmVlLmgiIDMKdHlwZWRlZiBPU0VyciAoICogQVZMV2Fs
a1Byb2NQdHIpKEFWTFRyZWVQdHIgdHJlZSwgY29uc3Qgdm9pZCAqZGF0YVB0ciwgQVZMVmlzaXRT
dGFnZSB2aXNpdFN0YWdlLCBBVkxOb2RlVHlwZSBub2RlLCBVSW50MzIgbGV2ZWwsIFNJbnQzMiBi
YWxhbmNlLCB2b2lkICpyZWZDb24pOwp0eXBlZGVmIEFWTENvbXBhcmVJdGVtc1Byb2NQdHIgQVZM
Q29tcGFyZUl0ZW1zVVBQOwp0eXBlZGVmIEFWTEl0ZW1TaXplUHJvY1B0ciBBVkxJdGVtU2l6ZVVQ
UDsKdHlwZWRlZiBBVkxEaXNwb3NlSXRlbVByb2NQdHIgQVZMRGlzcG9zZUl0ZW1VUFA7CnR5cGVk
ZWYgQVZMV2Fsa1Byb2NQdHIgQVZMV2Fsa1VQUDsKIyAyODIgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0FWTFRyZWUuaCIgMwpleHRlcm4gQVZMQ29tcGFyZUl0ZW1zVVBQCk5ld0FW
TENvbXBhcmVJdGVtc1VQUChBVkxDb21wYXJlSXRlbXNQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9BVkxUcmVlLmgiIDMKZXh0ZXJuIEFWTEl0ZW1TaXplVVBQCk5ld0FWTEl0ZW1TaXpl
VVBQKEFWTEl0ZW1TaXplUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwojIDMwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQVZMVHJlZS5o
IiAzCmV4dGVybiBBVkxEaXNwb3NlSXRlbVVQUApOZXdBVkxEaXNwb3NlSXRlbVVQUChBVkxEaXNw
b3NlSXRlbVByb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsK
IyAzMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0FWTFRyZWUuaCIgMwpleHRl
cm4gQVZMV2Fsa1VQUApOZXdBVkxXYWxrVVBQKEFWTFdhbGtQcm9jUHRyIHVzZXJSb3V0aW5lKSBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMzI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9BVkxUcmVlLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUFWTENvbXBhcmVJdGVt
c1VQUChBVkxDb21wYXJlSXRlbXNVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwojIDMzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQVZMVHJlZS5oIiAz
CmV4dGVybiB2b2lkCkRpc3Bvc2VBVkxJdGVtU2l6ZVVQUChBVkxJdGVtU2l6ZVVQUCB1c2VyVVBQ
KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMzQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9BVkxUcmVlLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUFWTERpc3Bvc2VJ
dGVtVVBQKEFWTERpc3Bvc2VJdGVtVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKIyAzNTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0FWTFRyZWUuaCIg
MwpleHRlcm4gdm9pZApEaXNwb3NlQVZMV2Fsa1VQUChBVkxXYWxrVVBQIHVzZXJVUFApIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAzNzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0FWTFRyZWUuaCIgMwpleHRlcm4gU0ludDMyCkludm9rZUFWTENvbXBhcmVJdGVtc1VQ
UCgKICBBVkxUcmVlUHRyIHRyZWUsCiAgY29uc3Qgdm9pZCAqIGkxLAogIGNvbnN0IHZvaWQgKiBp
MiwKICBBVkxOb2RlVHlwZSBuZF90eXAsCiAgQVZMQ29tcGFyZUl0ZW1zVVBQIHVzZXJVUFApIF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAzODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0FWTFRyZWUuaCIgMwpleHRlcm4gQnl0ZUNvdW50Ckludm9rZUFWTEl0ZW1TaXpl
VVBQKAogIEFWTFRyZWVQdHIgdHJlZSwKICBjb25zdCB2b2lkICogaXRlbVB0ciwKICBBVkxJdGVt
U2l6ZVVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNDAwICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9BVkxUcmVlLmgiIDMKZXh0ZXJuIHZvaWQKSW52
b2tlQVZMRGlzcG9zZUl0ZW1VUFAoCiAgQVZMVHJlZVB0ciB0cmVlLAogIGNvbnN0IHZvaWQgKiBk
YXRhUCwKICBBVkxEaXNwb3NlSXRlbVVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7CiMgNDE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9BVkxUcmVlLmgi
IDMKZXh0ZXJuIE9TRXJyCkludm9rZUFWTFdhbGtVUFAoCiAgQVZMVHJlZVB0ciB0cmVlLAogIGNv
bnN0IHZvaWQgKiBkYXRhUHRyLAogIEFWTFZpc2l0U3RhZ2UgdmlzaXRTdGFnZSwKICBBVkxOb2Rl
VHlwZSBub2RlLAogIFVJbnQzMiBsZXZlbCwKICBTSW50MzIgYmFsYW5jZSwKICB2b2lkICogcmVm
Q29uLAogIEFWTFdhbGtVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoK
CgogICAgaW5saW5lIEFWTENvbXBhcmVJdGVtc1VQUCBOZXdBVkxDb21wYXJlSXRlbXNVUFAoQVZM
Q29tcGFyZUl0ZW1zUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0K
ICAgIGlubGluZSBBVkxJdGVtU2l6ZVVQUCBOZXdBVkxJdGVtU2l6ZVVQUChBVkxJdGVtU2l6ZVBy
b2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgQVZM
RGlzcG9zZUl0ZW1VUFAgTmV3QVZMRGlzcG9zZUl0ZW1VUFAoQVZMRGlzcG9zZUl0ZW1Qcm9jUHRy
IHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIEFWTFdhbGtV
UFAgTmV3QVZMV2Fsa1VQUChBVkxXYWxrUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNl
clJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VBVkxDb21wYXJlSXRlbXNVUFAoQVZM
Q29tcGFyZUl0ZW1zVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VBVkxJdGVtU2l6ZVVQ
UChBVkxJdGVtU2l6ZVVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlQVZMRGlzcG9zZUl0
ZW1VUFAoQVZMRGlzcG9zZUl0ZW1VUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUFWTFdh
bGtVUFAoQVZMV2Fsa1VQUCkgeyB9CiAgICBpbmxpbmUgU0ludDMyIEludm9rZUFWTENvbXBhcmVJ
dGVtc1VQUChBVkxUcmVlUHRyIHRyZWUsIGNvbnN0IHZvaWQgKiBpMSwgY29uc3Qgdm9pZCAqIGky
LCBBVkxOb2RlVHlwZSBuZF90eXAsIEFWTENvbXBhcmVJdGVtc1VQUCB1c2VyVVBQKSB7IHJldHVy
biAoKnVzZXJVUFApKHRyZWUsIGkxLCBpMiwgbmRfdHlwKTsgfQogICAgaW5saW5lIEJ5dGVDb3Vu
dCBJbnZva2VBVkxJdGVtU2l6ZVVQUChBVkxUcmVlUHRyIHRyZWUsIGNvbnN0IHZvaWQgKiBpdGVt
UHRyLCBBVkxJdGVtU2l6ZVVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHRyZWUsIGl0
ZW1QdHIpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VBVkxEaXNwb3NlSXRlbVVQUChBVkxUcmVl
UHRyIHRyZWUsIGNvbnN0IHZvaWQgKiBkYXRhUCwgQVZMRGlzcG9zZUl0ZW1VUFAgdXNlclVQUCkg
eyAoKnVzZXJVUFApKHRyZWUsIGRhdGFQKTsgfQogICAgaW5saW5lIE9TRXJyIEludm9rZUFWTFdh
bGtVUFAoQVZMVHJlZVB0ciB0cmVlLCBjb25zdCB2b2lkICogZGF0YVB0ciwgQVZMVmlzaXRTdGFn
ZSB2aXNpdFN0YWdlLCBBVkxOb2RlVHlwZSBub2RlLCBVSW50MzIgbGV2ZWwsIFNJbnQzMiBiYWxh
bmNlLCB2b2lkICogcmVmQ29uLCBBVkxXYWxrVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQ
UCkodHJlZSwgZGF0YVB0ciwgdmlzaXRTdGFnZSwgbm9kZSwgbGV2ZWwsIGJhbGFuY2UsIHJlZkNv
bik7IH0KIyA4OTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0FWTFRyZWUuaCIg
MwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAxOTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkNvcmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvUEVGQmluYXJ5Rm9ybWF0LmgiIDEgMwojIDE5ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9QRUZCaW5hcnlGb3JtYXQuaCIgMwojZGVmaW5lIF9fUEVGQklOQVJZRk9S
TUFUX18gCiMgMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1BFRkJpbmFyeUZv
cm1hdC5oIiAzCiNwcmFnbWEgcGFjayhwdXNoLCAyKQojIDEwMiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvUEVGQmluYXJ5Rm9ybWF0LmgiIDMKc3RydWN0IFBFRkNvbnRhaW5lckhl
YWRlciB7CiAgT1NUeXBlIHRhZzE7CiAgT1NUeXBlIHRhZzI7CiAgT1NUeXBlIGFyY2hpdGVjdHVy
ZTsKICBVSW50MzIgZm9ybWF0VmVyc2lvbjsKICBVSW50MzIgZGF0ZVRpbWVTdGFtcDsKICBVSW50
MzIgb2xkRGVmVmVyc2lvbjsKICBVSW50MzIgb2xkSW1wVmVyc2lvbjsKICBVSW50MzIgY3VycmVu
dFZlcnNpb247CiAgVUludDE2IHNlY3Rpb25Db3VudDsKICBVSW50MTYgaW5zdFNlY3Rpb25Db3Vu
dDsKICBVSW50MzIgcmVzZXJ2ZWRBOwp9Owp0eXBlZGVmIHN0cnVjdCBQRUZDb250YWluZXJIZWFk
ZXIgUEVGQ29udGFpbmVySGVhZGVyOwplbnVtIHsKICBrUEVGVGFnMSA9ICdKb3khJywKICBrUEVG
VGFnMiA9ICdwZWZmJywKICBrUEVGVmVyc2lvbiA9IDB4MDAwMDAwMDEKfTsKCgplbnVtIHsKICBr
UEVGRmlyc3RTZWN0aW9uSGVhZGVyT2Zmc2V0ID0gc2l6ZW9mKFBFRkNvbnRhaW5lckhlYWRlcikK
fTsKCiNkZWZpbmUgUEVGRmlyc3RTZWN0aW9uTmFtZU9mZnNldChjb250YWluZXIpICgga1BFRkZp
cnN0U2VjdGlvbkhlYWRlck9mZnNldCArICgoY29udGFpbmVyKS0+c2VjdGlvbkNvdW50ICogc2l6
ZW9mICggUEVGU2VjdGlvbkhlYWRlciApKSApCiMgMTM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdv
cmsvSGVhZGVycy9QRUZCaW5hcnlGb3JtYXQuaCIgMwpzdHJ1Y3QgUEVGU2VjdGlvbkhlYWRlciB7
CiAgU0ludDMyIG5hbWVPZmZzZXQ7CiAgVUludDMyIGRlZmF1bHRBZGRyZXNzOwogIFVJbnQzMiB0
b3RhbExlbmd0aDsKICBVSW50MzIgdW5wYWNrZWRMZW5ndGg7CiAgVUludDMyIGNvbnRhaW5lckxl
bmd0aDsKICBVSW50MzIgY29udGFpbmVyT2Zmc2V0OwogIFVJbnQ4IHNlY3Rpb25LaW5kOwogIFVJ
bnQ4IHNoYXJlS2luZDsKICBVSW50OCBhbGlnbm1lbnQ7CiAgVUludDggcmVzZXJ2ZWRBOwp9Owp0
eXBlZGVmIHN0cnVjdCBQRUZTZWN0aW9uSGVhZGVyIFBFRlNlY3Rpb25IZWFkZXI7CmVudW0gewoK
CiAga1BFRkNvZGVTZWN0aW9uID0gMCwKICBrUEVGVW5wYWNrZWREYXRhU2VjdGlvbiA9IDEsCiAg
a1BFRlBhY2tlZERhdGFTZWN0aW9uID0gMiwKICBrUEVGQ29uc3RhbnRTZWN0aW9uID0gMywKICBr
UEVGRXhlY0RhdGFTZWN0aW9uID0gNiwKCiAga1BFRkxvYWRlclNlY3Rpb24gPSA0LAogIGtQRUZE
ZWJ1Z1NlY3Rpb24gPSA1LAogIGtQRUZFeGNlcHRpb25TZWN0aW9uID0gNywKICBrUEVGVHJhY2Vi
YWNrU2VjdGlvbiA9IDgKfTsKCgplbnVtIHsKCiAga1BFRlByb2Nlc3NTaGFyZSA9IDEsCiAga1BF
Rkdsb2JhbFNoYXJlID0gNCwKICBrUEVGUHJvdGVjdGVkU2hhcmUgPSA1Cn07CiMgMTk3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9QRUZCaW5hcnlGb3JtYXQuaCIgMwplbnVtIHsK
CiAga1BFRlBrRGF0YVplcm8gPSAwLAogIGtQRUZQa0RhdGFCbG9jayA9IDEsCiAga1BFRlBrRGF0
YVJlcGVhdCA9IDIsCiAga1BFRlBrRGF0YVJlcGVhdEJsb2NrID0gMywKICBrUEVGUGtEYXRhUmVw
ZWF0WmVybyA9IDQKfTsKCgplbnVtIHsKICBrUEVGUGtEYXRhT3Bjb2RlU2hpZnQgPSA1LAogIGtQ
RUZQa0RhdGFDb3VudDVNYXNrID0gMHgxRiwKICBrUEVGUGtEYXRhTWF4Q291bnQ1ID0gMzEsCiAg
a1BFRlBrRGF0YVZDb3VudFNoaWZ0ID0gNywKICBrUEVGUGtEYXRhVkNvdW50TWFzayA9IDB4N0Ys
CiAga1BFRlBrRGF0YVZDb3VudEVuZE1hc2sgPSAweDgwCn07CgoKI2RlZmluZSBQRUZQa0RhdGFP
cGNvZGUoYnl0ZSkgKCAoKFVJbnQ4KShieXRlKSkgPj4ga1BFRlBrRGF0YU9wY29kZVNoaWZ0ICkK
CiNkZWZpbmUgUEVGUGtEYXRhQ291bnQ1KGJ5dGUpICggKChVSW50OCkoYnl0ZSkpICYga1BFRlBr
RGF0YUNvdW50NU1hc2sgKQoKI2RlZmluZSBQRUZQa0RhdGFDb21wb3NlSW5zdHIob3Bjb2RlLGNv
dW50NSkgKCAoKChVSW50OCkob3Bjb2RlKSkgPDwga1BFRlBrRGF0YU9wY29kZVNoaWZ0KSB8ICgo
VUludDgpKGNvdW50NSkpICkKIyAzMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJz
L1BFRkJpbmFyeUZvcm1hdC5oIiAzCnN0cnVjdCBQRUZMb2FkZXJJbmZvSGVhZGVyIHsKICBTSW50
MzIgbWFpblNlY3Rpb247CiAgVUludDMyIG1haW5PZmZzZXQ7CiAgU0ludDMyIGluaXRTZWN0aW9u
OwogIFVJbnQzMiBpbml0T2Zmc2V0OwogIFNJbnQzMiB0ZXJtU2VjdGlvbjsKICBVSW50MzIgdGVy
bU9mZnNldDsKICBVSW50MzIgaW1wb3J0ZWRMaWJyYXJ5Q291bnQ7CiAgVUludDMyIHRvdGFsSW1w
b3J0ZWRTeW1ib2xDb3VudDsKICBVSW50MzIgcmVsb2NTZWN0aW9uQ291bnQ7CiAgVUludDMyIHJl
bG9jSW5zdHJPZmZzZXQ7CiAgVUludDMyIGxvYWRlclN0cmluZ3NPZmZzZXQ7CiAgVUludDMyIGV4
cG9ydEhhc2hPZmZzZXQ7CiAgVUludDMyIGV4cG9ydEhhc2hUYWJsZVBvd2VyOwogIFVJbnQzMiBl
eHBvcnRlZFN5bWJvbENvdW50Owp9Owp0eXBlZGVmIHN0cnVjdCBQRUZMb2FkZXJJbmZvSGVhZGVy
IFBFRkxvYWRlckluZm9IZWFkZXI7CgoKCgoKCgpzdHJ1Y3QgUEVGSW1wb3J0ZWRMaWJyYXJ5IHsK
ICBVSW50MzIgbmFtZU9mZnNldDsKICBVSW50MzIgb2xkSW1wVmVyc2lvbjsKICBVSW50MzIgY3Vy
cmVudFZlcnNpb247CiAgVUludDMyIGltcG9ydGVkU3ltYm9sQ291bnQ7CiAgVUludDMyIGZpcnN0
SW1wb3J0ZWRTeW1ib2w7CiAgVUludDggb3B0aW9uczsKICBVSW50OCByZXNlcnZlZEE7CiAgVUlu
dDE2IHJlc2VydmVkQjsKfTsKdHlwZWRlZiBzdHJ1Y3QgUEVGSW1wb3J0ZWRMaWJyYXJ5IFBFRklt
cG9ydGVkTGlicmFyeTsKZW51bSB7CgogIGtQRUZXZWFrSW1wb3J0TGliTWFzayA9IDB4NDAsCiAg
a1BFRkluaXRMaWJCZWZvcmVNYXNrID0gMHg4MAp9OwojIDM3NSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvUEVGQmluYXJ5Rm9ybWF0LmgiIDMKc3RydWN0IFBFRkltcG9ydGVkU3lt
Ym9sIHsKICBVSW50MzIgY2xhc3NBbmROYW1lOwp9Owp0eXBlZGVmIHN0cnVjdCBQRUZJbXBvcnRl
ZFN5bWJvbCBQRUZJbXBvcnRlZFN5bWJvbDsKZW51bSB7CiAga1BFRkltcFN5bUNsYXNzU2hpZnQg
PSAyNCwKICBrUEVGSW1wU3ltTmFtZU9mZnNldE1hc2sgPSAweDAwRkZGRkZGLAogIGtQRUZJbXBT
eW1NYXhOYW1lT2Zmc2V0ID0gMHgwMEZGRkZGRgp9OwoKI2RlZmluZSBQRUZJbXBvcnRlZFN5bWJv
bENsYXNzKGNsYXNzQW5kTmFtZSkgKChVSW50OCkgKChjbGFzc0FuZE5hbWUpID4+IGtQRUZJbXBT
eW1DbGFzc1NoaWZ0KSkKI2RlZmluZSBQRUZJbXBvcnRlZFN5bWJvbE5hbWVPZmZzZXQoY2xhc3NB
bmROYW1lKSAoKGNsYXNzQW5kTmFtZSkgJiBrUEVGSW1wU3ltTmFtZU9mZnNldE1hc2spCgojZGVm
aW5lIFBFRkNvbXBvc2VJbXBvcnRlZFN5bWJvbChjbGFzcyxuYW1lT2Zmc2V0KSAoICggKChVSW50
MzIpKGNsYXNzKSkgPDwga1BFRkltcFN5bUNsYXNzU2hpZnQgKSB8ICggKFVJbnQzMikobmFtZU9m
ZnNldCkgKSApCgoKZW51bSB7CgogIGtQRUZDb2RlU3ltYm9sID0gMHgwMCwKICBrUEVGRGF0YVN5
bWJvbCA9IDB4MDEsCiAga1BFRlRWZWN0b3JTeW1ib2wgPSAweDAyLAogIGtQRUZUT0NTeW1ib2wg
PSAweDAzLAogIGtQRUZHbHVlU3ltYm9sID0gMHgwNCwKICBrUEVGVW5kZWZpbmVkU3ltYm9sID0g
MHgwRiwKICBrUEVGV2Vha0ltcG9ydFN5bU1hc2sgPSAweDgwCn07CiMgNDY5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QRUZCaW5hcnlGb3JtYXQuaCIgMwpzdHJ1Y3QgUEVGRXhw
b3J0ZWRTeW1ib2xIYXNoU2xvdCB7CiAgVUludDMyIGNvdW50QW5kU3RhcnQ7Cn07CnR5cGVkZWYg
c3RydWN0IFBFRkV4cG9ydGVkU3ltYm9sSGFzaFNsb3QgUEVGRXhwb3J0ZWRTeW1ib2xIYXNoU2xv
dDsKZW51bSB7CiAga1BFRkhhc2hTbG90U3ltQ291bnRTaGlmdCA9IDE4LAogIGtQRUZIYXNoU2xv
dEZpcnN0S2V5TWFzayA9IDB4MDAwM0ZGRkYsCiAga1BFRkhhc2hTbG90TWF4U3ltYm9sQ291bnQg
PSAweDAwMDAzRkZGLAogIGtQRUZIYXNoU2xvdE1heEtleUluZGV4ID0gMHgwMDAzRkZGRgp9OwoK
I2RlZmluZSBQRUZIYXNoVGFibGVJbmRleChmdWxsSGFzaFdvcmQsaGFzaFRhYmxlUG93ZXIpICgg
KCAoZnVsbEhhc2hXb3JkKSBeICgoZnVsbEhhc2hXb3JkKSA+PiAoaGFzaFRhYmxlUG93ZXIpKSAp
ICYgKCgxIDw8IChoYXNoVGFibGVQb3dlcikpIC0gMSkgKQoKCiNkZWZpbmUgUEVGSGFzaFNsb3RT
eW1ib2xDb3VudChjb3VudEFuZFN0YXJ0KSAoKFVJbnQzMikgKChjb3VudEFuZFN0YXJ0KSA+PiBr
UEVGSGFzaFNsb3RTeW1Db3VudFNoaWZ0KSkKI2RlZmluZSBQRUZIYXNoU2xvdEZpcnN0S2V5KGNv
dW50QW5kU3RhcnQpICgoY291bnRBbmRTdGFydCkgJiBrUEVGSGFzaFNsb3RGaXJzdEtleU1hc2sp
CgojZGVmaW5lIFBFRkNvbXBvc2VFeHBvcnRlZFN5bWJvbEhhc2hTbG90KHN5bWJvbENvdW50LGZp
cnN0S2V5KSAoICggKChVSW50MzIpKHN5bWJvbENvdW50KSkgPDwga1BFRkhhc2hTbG90U3ltQ291
bnRTaGlmdCApIHwgKCAoVUludDMyKShmaXJzdEtleSkgKSApCiMgNDk3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9QRUZCaW5hcnlGb3JtYXQuaCIgMwpzdHJ1Y3QgUEVGU3BsaXRI
YXNoV29yZCB7CiAgVUludDE2IG5hbWVMZW5ndGg7CiAgVUludDE2IGhhc2hWYWx1ZTsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgUEVGU3BsaXRIYXNoV29yZCBQRUZTcGxpdEhhc2hXb3JkOwpzdHJ1Y3QgUEVG
RXhwb3J0ZWRTeW1ib2xLZXkgewogIHVuaW9uIHsKICAgIFVJbnQzMiBmdWxsSGFzaFdvcmQ7CiAg
ICBQRUZTcGxpdEhhc2hXb3JkIHNwbGl0SGFzaFdvcmQ7CiAgfSB1Owp9Owp0eXBlZGVmIHN0cnVj
dCBQRUZFeHBvcnRlZFN5bWJvbEtleSBQRUZFeHBvcnRlZFN5bWJvbEtleTsKZW51bSB7CiAga1BF
Rkhhc2hMZW5ndGhTaGlmdCA9IDE2LAogIGtQRUZIYXNoVmFsdWVNYXNrID0gMHgwMDAwRkZGRiwK
ICBrUEVGSGFzaE1heExlbmd0aCA9IDB4MDAwMEZGRkYKfTsKCiNkZWZpbmUgUEVGSGFzaE5hbWVM
ZW5ndGgoZnVsbEhhc2hXb3JkKSAoKFVJbnQzMikgKChmdWxsSGFzaFdvcmQpID4+IGtQRUZIYXNo
TGVuZ3RoU2hpZnQpKQojZGVmaW5lIFBFRkhhc2hWYWx1ZShmdWxsSGFzaFdvcmQpICgoZnVsbEhh
c2hXb3JkKSAmIGtQRUZIYXNoVmFsdWVNYXNrKQoKI2RlZmluZSBQRUZDb21wb3NlRnVsbEhhc2hX
b3JkKG5hbWVMZW5ndGgsaGFzaFZhbHVlKSAoICggKChVSW50MzIpKG5hbWVMZW5ndGgpKSA8PCBr
UEVGSGFzaExlbmd0aFNoaWZ0ICkgfCAoIChVSW50MzIpKGhhc2hWYWx1ZSkgKSApCiMgNTYwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9QRUZCaW5hcnlGb3JtYXQuaCIgMwpzdHJ1
Y3QgUEVGRXhwb3J0ZWRTeW1ib2wgewogIFVJbnQzMiBjbGFzc0FuZE5hbWU7CiAgVUludDMyIHN5
bWJvbFZhbHVlOwogIFNJbnQxNiBzZWN0aW9uSW5kZXg7Cn07CnR5cGVkZWYgc3RydWN0IFBFRkV4
cG9ydGVkU3ltYm9sIFBFRkV4cG9ydGVkU3ltYm9sOwojIDU3OCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvUEVGQmluYXJ5Rm9ybWF0LmgiIDMKZW51bSB7CiAga1BFRkV4cFN5bUNs
YXNzU2hpZnQgPSAyNCwKICBrUEVGRXhwU3ltTmFtZU9mZnNldE1hc2sgPSAweDAwRkZGRkZGLAog
IGtQRUZFeHBTeW1NYXhOYW1lT2Zmc2V0ID0gMHgwMEZGRkZGRgp9OwoKI2RlZmluZSBQRUZFeHBv
cnRlZFN5bWJvbENsYXNzKGNsYXNzQW5kTmFtZSkgKChVSW50OCkgKChjbGFzc0FuZE5hbWUpID4+
IGtQRUZFeHBTeW1DbGFzc1NoaWZ0KSkKI2RlZmluZSBQRUZFeHBvcnRlZFN5bWJvbE5hbWVPZmZz
ZXQoY2xhc3NBbmROYW1lKSAoKGNsYXNzQW5kTmFtZSkgJiBrUEVGRXhwU3ltTmFtZU9mZnNldE1h
c2spCgojZGVmaW5lIFBFRkNvbXBvc2VFeHBvcnRlZFN5bWJvbChjbGFzcyxuYW1lT2Zmc2V0KSAo
ICggKChVSW50MzIpKGNsYXNzKSkgPDwga1BFRkV4cFN5bUNsYXNzU2hpZnQgKSB8ICggKFVJbnQz
MikobmFtZU9mZnNldCkgKSApCgoKZW51bSB7CgogIGtQRUZBYnNvbHV0ZUV4cG9ydCA9IC0yLAog
IGtQRUZSZWV4cG9ydGVkSW1wb3J0ID0gLTMKfTsKIyA2MTggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL1BFRkJpbmFyeUZvcm1hdC5oIiAzCnR5cGVkZWYgVUludDE2IFBFRlJlbG9j
Q2h1bms7CnN0cnVjdCBQRUZMb2FkZXJSZWxvY2F0aW9uSGVhZGVyIHsKICBVSW50MTYgc2VjdGlv
bkluZGV4OwogIFVJbnQxNiByZXNlcnZlZEE7CiAgVUludDMyIHJlbG9jQ291bnQ7CiAgVUludDMy
IGZpcnN0UmVsb2NPZmZzZXQ7Cn07CnR5cGVkZWYgc3RydWN0IFBFRkxvYWRlclJlbG9jYXRpb25I
ZWFkZXIgUEVGTG9hZGVyUmVsb2NhdGlvbkhlYWRlcjsKIyA2MzkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL1BFRkJpbmFyeUZvcm1hdC5oIiAzCiNkZWZpbmUgUEVGUkZTaGlmdChv
ZmZzZXQsbGVuZ3RoKSAoMTYgLSAoKG9mZnNldCkgKyAobGVuZ3RoKSkpCiNkZWZpbmUgUEVGUkZN
YXNrKGxlbmd0aCkgKCgxIDw8IChsZW5ndGgpKSAtIDEpCgojZGVmaW5lIFBFRlJlbG9jRmllbGQo
Y2h1bmssb2Zmc2V0LGxlbmd0aCkgKCAoIChjaHVuaykgPj4gKDE2IC0gKChvZmZzZXQpICsgKGxl
bmd0aCkpKSApICYgKCgxIDw8IChsZW5ndGgpKSAtIDEpICkKIyA2NjIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL1BFRkJpbmFyeUZvcm1hdC5oIiAzCmVudW0gewogIGtQRUZSZWxv
Y0Jhc2ljT3Bjb2RlUmFuZ2UgPSAxMjgKfTsKCiNkZWZpbmUgUEVGUmVsb2NCYXNpY09wY29kZShm
aXJzdENodW5rKSAoa1BFRlJlbG9jQmFzaWNPcGNvZGVzWyhmaXJzdENodW5rKT4+OV0pCiMgNjc1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9QRUZCaW5hcnlGb3JtYXQuaCIgMwpl
bnVtIHsKICBrUEVGUmVsb2NCeVNlY3REV2l0aFNraXAgPSAweDAwLAogIGtQRUZSZWxvY0J5U2Vj
dEMgPSAweDIwLAogIGtQRUZSZWxvY0J5U2VjdEQgPSAweDIxLAogIGtQRUZSZWxvY1RWZWN0b3Ix
MiA9IDB4MjIsCiAga1BFRlJlbG9jVFZlY3RvcjggPSAweDIzLAogIGtQRUZSZWxvY1ZUYWJsZTgg
PSAweDI0LAogIGtQRUZSZWxvY0ltcG9ydFJ1biA9IDB4MjUsCiAga1BFRlJlbG9jU21CeUltcG9y
dCA9IDB4MzAsCiAga1BFRlJlbG9jU21TZXRTZWN0QyA9IDB4MzEsCiAga1BFRlJlbG9jU21TZXRT
ZWN0RCA9IDB4MzIsCiAga1BFRlJlbG9jU21CeVNlY3Rpb24gPSAweDMzLAogIGtQRUZSZWxvY0lu
Y3JQb3NpdGlvbiA9IDB4NDAsCiAga1BFRlJlbG9jU21SZXBlYXQgPSAweDQ4LAogIGtQRUZSZWxv
Y1NldFBvc2l0aW9uID0gMHg1MCwKICBrUEVGUmVsb2NMZ0J5SW1wb3J0ID0gMHg1MiwKICBrUEVG
UmVsb2NMZ1JlcGVhdCA9IDB4NTgsCiAga1BFRlJlbG9jTGdTZXRPckJ5U2VjdGlvbiA9IDB4NUEs
CiAga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlID0gMHhGRgp9OwojIDcwNCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvUEVGQmluYXJ5Rm9ybWF0LmgiIDMKZW51bSB7CiAga1BFRlJl
bG9jTGdCeVNlY3Rpb25TdWJvcGNvZGUgPSAweDAwLAogIGtQRUZSZWxvY0xnU2V0U2VjdENTdWJv
cGNvZGUgPSAweDAxLAogIGtQRUZSZWxvY0xnU2V0U2VjdERTdWJvcGNvZGUgPSAweDAyCn07Cgoj
ZGVmaW5lIFBFRlJlbG9jTGdTZXRPckJ5U3Vib3Bjb2RlKGNodW5rKSAoKChjaHVuaykgPj4gNikg
JiAweDBGKQojIDcyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUEVGQmluYXJ5
Rm9ybWF0LmgiIDMKI2RlZmluZSBQRUZNYXNrZWRCYXNpY09wY29kZXMga1BFRlJlbG9jQnlTZWN0
RFdpdGhTa2lwLCBrUEVGUmVsb2NCeVNlY3REV2l0aFNraXAsIGtQRUZSZWxvY0J5U2VjdERXaXRo
U2tpcCwga1BFRlJlbG9jQnlTZWN0RFdpdGhTa2lwLCBrUEVGUmVsb2NCeVNlY3REV2l0aFNraXAs
IGtQRUZSZWxvY0J5U2VjdERXaXRoU2tpcCwga1BFRlJlbG9jQnlTZWN0RFdpdGhTa2lwLCBrUEVG
UmVsb2NCeVNlY3REV2l0aFNraXAsIGtQRUZSZWxvY0J5U2VjdERXaXRoU2tpcCwga1BFRlJlbG9j
QnlTZWN0RFdpdGhTa2lwLCBrUEVGUmVsb2NCeVNlY3REV2l0aFNraXAsIGtQRUZSZWxvY0J5U2Vj
dERXaXRoU2tpcCwga1BFRlJlbG9jQnlTZWN0RFdpdGhTa2lwLCBrUEVGUmVsb2NCeVNlY3REV2l0
aFNraXAsIGtQRUZSZWxvY0J5U2VjdERXaXRoU2tpcCwga1BFRlJlbG9jQnlTZWN0RFdpdGhTa2lw
LCBrUEVGUmVsb2NCeVNlY3REV2l0aFNraXAsIGtQRUZSZWxvY0J5U2VjdERXaXRoU2tpcCwga1BF
RlJlbG9jQnlTZWN0RFdpdGhTa2lwLCBrUEVGUmVsb2NCeVNlY3REV2l0aFNraXAsIGtQRUZSZWxv
Y0J5U2VjdERXaXRoU2tpcCwga1BFRlJlbG9jQnlTZWN0RFdpdGhTa2lwLCBrUEVGUmVsb2NCeVNl
Y3REV2l0aFNraXAsIGtQRUZSZWxvY0J5U2VjdERXaXRoU2tpcCwga1BFRlJlbG9jQnlTZWN0RFdp
dGhTa2lwLCBrUEVGUmVsb2NCeVNlY3REV2l0aFNraXAsIGtQRUZSZWxvY0J5U2VjdERXaXRoU2tp
cCwga1BFRlJlbG9jQnlTZWN0RFdpdGhTa2lwLCBrUEVGUmVsb2NCeVNlY3REV2l0aFNraXAsIGtQ
RUZSZWxvY0J5U2VjdERXaXRoU2tpcCwga1BFRlJlbG9jQnlTZWN0RFdpdGhTa2lwLCBrUEVGUmVs
b2NCeVNlY3REV2l0aFNraXAsIGtQRUZSZWxvY0J5U2VjdEMsIGtQRUZSZWxvY0J5U2VjdEQsIGtQ
RUZSZWxvY1RWZWN0b3IxMiwga1BFRlJlbG9jVFZlY3RvcjgsIGtQRUZSZWxvY1ZUYWJsZTgsIGtQ
RUZSZWxvY0ltcG9ydFJ1biwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRl
ZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJlbG9jVW5kZWZpbmVk
T3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9wY29k
ZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQ
RUZSZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVs
b2NTbUJ5SW1wb3J0LCBrUEVGUmVsb2NTbVNldFNlY3RDLCBrUEVGUmVsb2NTbVNldFNlY3RELCBr
UEVGUmVsb2NTbUJ5U2VjdGlvbiwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NV
bmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJlbG9jVW5kZWZp
bmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9w
Y29kZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUs
IGtQRUZSZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVG
UmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJlbG9j
SW5jclBvc2l0aW9uLCBrUEVGUmVsb2NJbmNyUG9zaXRpb24sIGtQRUZSZWxvY0luY3JQb3NpdGlv
biwga1BFRlJlbG9jSW5jclBvc2l0aW9uLCBrUEVGUmVsb2NJbmNyUG9zaXRpb24sIGtQRUZSZWxv
Y0luY3JQb3NpdGlvbiwga1BFRlJlbG9jSW5jclBvc2l0aW9uLCBrUEVGUmVsb2NJbmNyUG9zaXRp
b24sIGtQRUZSZWxvY1NtUmVwZWF0LCBrUEVGUmVsb2NTbVJlcGVhdCwga1BFRlJlbG9jU21SZXBl
YXQsIGtQRUZSZWxvY1NtUmVwZWF0LCBrUEVGUmVsb2NTbVJlcGVhdCwga1BFRlJlbG9jU21SZXBl
YXQsIGtQRUZSZWxvY1NtUmVwZWF0LCBrUEVGUmVsb2NTbVJlcGVhdCwga1BFRlJlbG9jU2V0UG9z
aXRpb24sIGtQRUZSZWxvY1NldFBvc2l0aW9uLCBrUEVGUmVsb2NMZ0J5SW1wb3J0LCBrUEVGUmVs
b2NMZ0J5SW1wb3J0LCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5l
ZE9wY29kZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNv
ZGUsIGtQRUZSZWxvY0xnUmVwZWF0LCBrUEVGUmVsb2NMZ1JlcGVhdCwga1BFRlJlbG9jTGdTZXRP
ckJ5U2VjdGlvbiwga1BFRlJlbG9jTGdTZXRPckJ5U2VjdGlvbiwga1BFRlJlbG9jVW5kZWZpbmVk
T3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9wY29k
ZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQ
RUZSZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVs
b2NVbmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJlbG9jVW5k
ZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5l
ZE9wY29kZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNv
ZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBr
UEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJl
bG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1Vu
ZGVmaW5lZE9wY29kZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmlu
ZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bj
b2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9wY29kZSwg
a1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQRUZS
ZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJlbG9jVW5kZWZpbmVkT3Bjb2RlLCBrUEVGUmVsb2NV
bmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9wY29kZSwga1BFRlJlbG9jVW5kZWZp
bmVkT3Bjb2RlLCBrUEVGUmVsb2NVbmRlZmluZWRPcGNvZGUsIGtQRUZSZWxvY1VuZGVmaW5lZE9w
Y29kZQojIDc4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUEVGQmluYXJ5Rm9y
bWF0LmgiIDMKZW51bSB7CiAga1BFRlJlbG9jV2l0aFNraXBNYXhTa2lwQ291bnQgPSAyNTUsCiAg
a1BFRlJlbG9jV2l0aFNraXBNYXhSZWxvY0NvdW50ID0gNjMKfTsKCiNkZWZpbmUgUEVGUmVsb2NX
aXRoU2tpcFNraXBDb3VudChjaHVuaykgUEVGUmVsb2NGaWVsZCAoIChjaHVuayksIDIsIDggKQoj
ZGVmaW5lIFBFRlJlbG9jV2l0aFNraXBSZWxvY0NvdW50KGNodW5rKSBQRUZSZWxvY0ZpZWxkICgg
KGNodW5rKSwgMTAsIDYgKQoKI2RlZmluZSBQRUZSZWxvY0NvbXBvc2VXaXRoU2tpcChza2lwQ291
bnQscmVsb2NDb3VudCkgKCAweDAwMDAgfCAoKChVSW50MTYpKHNraXBDb3VudCkpIDw8IDYpIHwg
KChVSW50MTYpKHJlbG9jQ291bnQpKSApCiMgODIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
SGVhZGVycy9QRUZCaW5hcnlGb3JtYXQuaCIgMwplbnVtIHsKICBrUEVGUmVsb2NSdW5NYXhSdW5M
ZW5ndGggPSA1MTIKfTsKCiNkZWZpbmUgUEVGUmVsb2NSdW5TdWJvcGNvZGUoY2h1bmspIFBFRlJl
bG9jRmllbGQgKCAoY2h1bmspLCAzLCA0ICkKI2RlZmluZSBQRUZSZWxvY1J1blJ1bkxlbmd0aChj
aHVuaykgKFBFRlJlbG9jRmllbGQgKCAoY2h1bmspLCA3LCA5ICkgKyAxKQoKI2RlZmluZSBQRUZS
ZWxvY0NvbXBvc2VSdW4oc3Vib3Bjb2RlLHJ1bkxlbmd0aCkgKCAweDQwMDAgfCAoKChVSW50MTYp
KHN1Ym9wY29kZSkpIDw8IDkpIHwgKChVSW50MTYpKChydW5MZW5ndGgpLTEpKSApCgoKI2RlZmlu
ZSBQRUZSZWxvY0NvbXBvc2VCeVNlY3RDKHJ1bkxlbmd0aCkgUEVGUmVsb2NDb21wb3NlUnVuICgg
MCwgKHJ1bkxlbmd0aCkgKQojZGVmaW5lIFBFRlJlbG9jQ29tcG9zZUJ5U2VjdEQocnVuTGVuZ3Ro
KSBQRUZSZWxvY0NvbXBvc2VSdW4gKCAxLCAocnVuTGVuZ3RoKSApCiNkZWZpbmUgUEVGUmVsb2ND
b21wb3NlVFZlY3RvcjEyKHJ1bkxlbmd0aCkgUEVGUmVsb2NDb21wb3NlUnVuICggMiwgKHJ1bkxl
bmd0aCkgKQojZGVmaW5lIFBFRlJlbG9jQ29tcG9zZVRWZWN0b3I4KHJ1bkxlbmd0aCkgUEVGUmVs
b2NDb21wb3NlUnVuICggMywgKHJ1bkxlbmd0aCkgKQojZGVmaW5lIFBFRlJlbG9jQ29tcG9zZVZU
YWJsZTgocnVuTGVuZ3RoKSBQRUZSZWxvY0NvbXBvc2VSdW4gKCA0LCAocnVuTGVuZ3RoKSApCiNk
ZWZpbmUgUEVGUmVsb2NDb21wb3NlSW1wb3J0UnVuKHJ1bkxlbmd0aCkgUEVGUmVsb2NDb21wb3Nl
UnVuICggNSwgKHJ1bkxlbmd0aCkgKQojIDg2MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvUEVGQmluYXJ5Rm9ybWF0LmgiIDMKZW51bSB7CiAga1BFRlJlbG9jU21JbmRleE1heElu
ZGV4ID0gNTExCn07CgojZGVmaW5lIFBFRlJlbG9jU21JbmRleFN1Ym9wY29kZShjaHVuaykgUEVG
UmVsb2NGaWVsZCAoIChjaHVuayksIDMsIDQgKQojZGVmaW5lIFBFRlJlbG9jU21JbmRleEluZGV4
KGNodW5rKSBQRUZSZWxvY0ZpZWxkICggKGNodW5rKSwgNywgOSApCgojZGVmaW5lIFBFRlJlbG9j
Q29tcG9zZVNtSW5kZXgoc3Vib3Bjb2RlLGluZGV4KSAoIDB4NjAwMCB8ICgoKFVJbnQxNikoc3Vi
b3Bjb2RlKSkgPDwgOSkgfCAoKFVJbnQxNikoaW5kZXgpKSApCgoKI2RlZmluZSBQRUZSZWxvY0Nv
bXBvc2VTbUJ5SW1wb3J0KGluZGV4KSBQRUZSZWxvY0NvbXBvc2VTbUluZGV4ICggMCwgKGluZGV4
KSApCiNkZWZpbmUgUEVGUmVsb2NDb21wb3NlU21TZXRTZWN0QyhpbmRleCkgUEVGUmVsb2NDb21w
b3NlU21JbmRleCAoIDEsIChpbmRleCkgKQojZGVmaW5lIFBFRlJlbG9jQ29tcG9zZVNtU2V0U2Vj
dEQoaW5kZXgpIFBFRlJlbG9jQ29tcG9zZVNtSW5kZXggKCAyLCAoaW5kZXgpICkKI2RlZmluZSBQ
RUZSZWxvY0NvbXBvc2VTbUJ5U2VjdGlvbihpbmRleCkgUEVGUmVsb2NDb21wb3NlU21JbmRleCAo
IDMsIChpbmRleCkgKQojIDg5NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUEVG
QmluYXJ5Rm9ybWF0LmgiIDMKZW51bSB7CiAga1BFRlJlbG9jSW5jclBvc2l0aW9uTWF4T2Zmc2V0
ID0gNDA5Ngp9OwoKI2RlZmluZSBQRUZSZWxvY0luY3JQb3NpdGlvbk9mZnNldChjaHVuaykgKFBF
RlJlbG9jRmllbGQgKCAoY2h1bmspLCA0LCAxMiApICsgMSkKCiNkZWZpbmUgUEVGUmVsb2NDb21w
b3NlSW5jclBvc2l0aW9uKG9mZnNldCkgKCAweDgwMDAgfCAoKFVJbnQxNikoKG9mZnNldCktMSkp
ICkKIyA5MjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1BFRkJpbmFyeUZvcm1h
dC5oIiAzCmVudW0gewogIGtQRUZSZWxvY1NtUmVwZWF0TWF4Q2h1bmtDb3VudCA9IDE2LAogIGtQ
RUZSZWxvY1NtUmVwZWF0TWF4UmVwZWF0Q291bnQgPSAyNTYKfTsKCiNkZWZpbmUgUEVGUmVsb2NT
bVJlcGVhdENodW5rQ291bnQoY2h1bmspIChQRUZSZWxvY0ZpZWxkICggKGNodW5rKSwgNCwgNCAp
ICsgMSkKI2RlZmluZSBQRUZSZWxvY1NtUmVwZWF0UmVwZWF0Q291bnQoY2h1bmspIChQRUZSZWxv
Y0ZpZWxkICggKGNodW5rKSwgOCwgOCApICsgMSkKCiNkZWZpbmUgUEVGUmVsb2NDb21wb3NlU21S
ZXBlYXQoY2h1bmtDb3VudCxyZXBlYXRDb3VudCkgKCAweDkwMDAgfCAoKCgoVUludDE2KShjaHVu
a0NvdW50KSktMSkgPDwgOCkgfCAoKChVSW50MTYpKHJlcGVhdENvdW50KSktMSkgKQojIDk1OCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUEVGQmluYXJ5Rm9ybWF0LmgiIDMKZW51
bSB7CiAga1BFRlJlbG9jU2V0UG9zTWF4T2Zmc2V0ID0gMHgwM0ZGRkZGRgp9OwoKI2RlZmluZSBQ
RUZSZWxvY1NldFBvc09mZnNldEhpZ2goY2h1bmspIFBFRlJlbG9jRmllbGQgKCAoY2h1bmspLCA2
LCAxMCApCgojZGVmaW5lIFBFRlJlbG9jU2V0UG9zRnVsbE9mZnNldChmaXJzdENodW5rLHNlY29u
ZENodW5rKSAoICgoKChVSW50MzIpKGZpcnN0Q2h1bmspKSAmIDB4MDNGRikgPDwgMTYpIHwgKChV
SW50MzIpKHNlY29uZENodW5rKSkgKQoKCiNkZWZpbmUgUEVGUmVsb2NDb21wb3NlU2V0UG9zaXRp
b25fMXN0KGZ1bGxPZmZzZXQpICggMHhBMDAwIHwgKChVSW50MTYpICgoKFVJbnQzMikoZnVsbE9m
ZnNldCkpID4+IDE2KSApICkKCiNkZWZpbmUgUEVGUmVsb2NDb21wb3NlU2V0UG9zaXRpb25fMm5k
KGZ1bGxPZmZzZXQpICggKFVJbnQxNikgKChVSW50MzIpKGZ1bGxPZmZzZXQpICYgMHhGRkZGKSAp
CiMgOTkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9QRUZCaW5hcnlGb3JtYXQu
aCIgMwplbnVtIHsKICBrUEVGUmVsb2NMZ0J5SW1wb3J0TWF4SW5kZXggPSAweDAzRkZGRkZGCn07
CgojZGVmaW5lIFBFRlJlbG9jTGdCeUltcG9ydEluZGV4SGlnaChjaHVuaykgUEVGUmVsb2NGaWVs
ZCAoIChjaHVuayksIDYsIDEwICkKCiNkZWZpbmUgUEVGUmVsb2NMZ0J5SW1wb3J0RnVsbEluZGV4
KGZpcnN0Q2h1bmssc2Vjb25kQ2h1bmspICggKCgoKFVJbnQzMikoZmlyc3RDaHVuaykpICYgMHgw
M0ZGKSA8PCAxNikgfCAoKFVJbnQzMikoc2Vjb25kQ2h1bmspKSApCgoKI2RlZmluZSBQRUZSZWxv
Y0NvbXBvc2VMZ0J5SW1wb3J0XzFzdChmdWxsSW5kZXgpICggMHhBNDAwIHwgKChVSW50MTYpICgo
KFVJbnQzMikoZnVsbEluZGV4KSkgPj4gMTYpICkgKQoKI2RlZmluZSBQRUZSZWxvY0NvbXBvc2VM
Z0J5SW1wb3J0XzJuZChmdWxsSW5kZXgpICggKFVJbnQxNikgKChVSW50MzIpKGZ1bGxJbmRleCkg
JiAweEZGRkYpICkKIyAxMDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9QRUZC
aW5hcnlGb3JtYXQuaCIgMwplbnVtIHsKICBrUEVGUmVsb2NMZ1JlcGVhdE1heENodW5rQ291bnQg
PSAxNiwKICBrUEVGUmVsb2NMZ1JlcGVhdE1heFJlcGVhdENvdW50ID0gMHgwMDNGRkZGRgp9OwoK
I2RlZmluZSBQRUZSZWxvY0xnUmVwZWF0Q2h1bmtDb3VudChjaHVuaykgKFBFRlJlbG9jRmllbGQg
KCAoY2h1bmspLCA2LCA0ICkgKyAxKQojZGVmaW5lIFBFRlJlbG9jTGdSZXBlYXRSZXBlYXRDb3Vu
dEhpZ2goY2h1bmspIFBFRlJlbG9jRmllbGQgKCAoY2h1bmspLCAxMCwgNiApCgojZGVmaW5lIFBF
RlJlbG9jTGdSZXBlYXRGdWxsUmVwZWF0Q291bnQoZmlyc3RDaHVuayxzZWNvbmRDaHVuaykgKCAo
KCgoVUludDMyKShmaXJzdENodW5rKSkgJiAweDAwM0YpIDw8IDE2KSB8ICgoVUludDMyKShzZWNv
bmRDaHVuaykpICkKCgojZGVmaW5lIFBFRlJlbG9jQ29tcG9zZUxnUmVwZWF0XzFzdChjaHVua0Nv
dW50LGZ1bGxSZXBlYXRDb3VudCkgKCAweEIwMDAgfCAoKCgoVUludDE2KShjaHVua0NvdW50KSkt
MSkgPDwgNikgfCAoKFVJbnQxNikgKCgoVUludDMyKShmdWxsUmVwZWF0Q291bnQpKSA+PjE2ICkg
KSApCgojZGVmaW5lIFBFRlJlbG9jQ29tcG9zZUxnUmVwZWF0XzJuZChjaHVua0NvdW50LGZ1bGxS
ZXBlYXRDb3VudCkgKCAoVUludDE2KSAoKFVJbnQzMikoZnVsbFJlcGVhdENvdW50KSAmIDB4RkZG
RikgKQojIDEwNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1BFRkJpbmFyeUZv
cm1hdC5oIiAzCmVudW0gewogIGtQRUZSZWxvY0xnU2V0T3JCeVNlY3Rpb25NYXhJbmRleCA9IDB4
MDAzRkZGRkYKfTsKCiNkZWZpbmUgUEVGUmVsb2NMZ1NldE9yQnlTZWN0aW9uU3Vib3Bjb2RlKGNo
dW5rKSBQRUZSZWxvY0ZpZWxkICggKGNodW5rKSwgNiwgNCApCiNkZWZpbmUgUEVGUmVsb2NMZ1Nl
dE9yQnlTZWN0aW9uSW5kZXhIaWdoKGNodW5rKSBQRUZSZWxvY0ZpZWxkICggKGNodW5rKSwgMTAs
IDYgKQoKI2RlZmluZSBQRUZSZWxvY0xnU2V0T3JCeVNlY3Rpb25GdWxsSW5kZXgoZmlyc3RDaHVu
ayxzZWNvbmRDaHVuaykgKCAoKCgoVUludDMyKShmaXJzdENodW5rKSkgJiAweDAwM0YpIDw8IDE2
KSB8ICgoVUludDMyKShzZWNvbmRDaHVuaykpICkKCgojZGVmaW5lIFBFRlJlbG9jQ29tcG9zZUxn
U2V0T3JCeVNlY3Rpb25fMXN0KHN1Ym9wY29kZSxmdWxsSW5kZXgpICggMHhCNDAwIHwgKCgoVUlu
dDE2KShzdWJvcGNvZGUpKSA8PCA2KSB8ICgoVUludDE2KSAoKChVSW50MzIpKGZ1bGxJbmRleCkp
ID4+IDE2KSApICkKCiNkZWZpbmUgUEVGUmVsb2NDb21wb3NlTGdTZXRPckJ5U2VjdGlvbl8ybmQo
c3Vib3Bjb2RlLGZ1bGxJbmRleCkgKCAoVUludDE2KSAoKFVJbnQzMikoZnVsbEluZGV4KSAmIDB4
RkZGRikgKQoKCiNkZWZpbmUgUEVGUmVsb2NDb21wb3NlTGdCeVNlY3Rpb24oZnVsbEluZGV4KSBQ
RUZSZWxvY0NvbXBvc2VMZ1NldE9yQnlTZWN0aW9uICggMHgwMCwgKGZ1bGxJbmRleCkgKQojZGVm
aW5lIFBFRlJlbG9jQ29tcG9zZUxnU2V0U2VjdEMoZnVsbEluZGV4KSBQRUZSZWxvY0NvbXBvc2VM
Z1NldE9yQnlTZWN0aW9uICggMHgwMSwgKGZ1bGxJbmRleCkgKQojZGVmaW5lIFBFRlJlbG9jQ29t
cG9zZUxnU2V0U2VjdEQoZnVsbEluZGV4KSBQRUZSZWxvY0NvbXBvc2VMZ1NldE9yQnlTZWN0aW9u
ICggMHgwMiwgKGZ1bGxJbmRleCkgKQojIDExNDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL1BFRkJpbmFyeUZvcm1hdC5oIiAzCnN0cnVjdCBYTGliQ29udGFpbmVySGVhZGVyIHsK
CgoKICBPU1R5cGUgdGFnMTsKICBPU1R5cGUgdGFnMjsKICBVSW50MzIgY3VycmVudEZvcm1hdDsK
ICBVSW50MzIgY29udGFpbmVyU3RyaW5nc09mZnNldDsKICBVSW50MzIgZXhwb3J0SGFzaE9mZnNl
dDsKICBVSW50MzIgZXhwb3J0S2V5T2Zmc2V0OwogIFVJbnQzMiBleHBvcnRTeW1ib2xPZmZzZXQ7
CiAgVUludDMyIGV4cG9ydE5hbWVzT2Zmc2V0OwogIFVJbnQzMiBleHBvcnRIYXNoVGFibGVQb3dl
cjsKICBVSW50MzIgZXhwb3J0ZWRTeW1ib2xDb3VudDsKCgoKICBVSW50MzIgZnJhZ05hbWVPZmZz
ZXQ7CiAgVUludDMyIGZyYWdOYW1lTGVuZ3RoOwogIFVJbnQzMiBkeWxpYlBhdGhPZmZzZXQ7CiAg
VUludDMyIGR5bGliUGF0aExlbmd0aDsKICBPU1R5cGUgY3B1RmFtaWx5OwogIE9TVHlwZSBjcHVN
b2RlbDsKICBVSW50MzIgZGF0ZVRpbWVTdGFtcDsKICBVSW50MzIgY3VycmVudFZlcnNpb247CiAg
VUludDMyIG9sZERlZlZlcnNpb247CiAgVUludDMyIG9sZEltcFZlcnNpb247Cgp9Owp0eXBlZGVm
IHN0cnVjdCBYTGliQ29udGFpbmVySGVhZGVyIFhMaWJDb250YWluZXJIZWFkZXI7CmVudW0gewog
IGtYTGliVGFnMSA9IChpbnQpMHhGMDRENjE2MyAsCiAga1ZMaWJUYWcyID0gJ1ZMaWInLAogIGtC
TGliVGFnMiA9ICdCTGliJywKICBrWExpYlZlcnNpb24gPSAweDAwMDAwMDAxCn07CgoKCnR5cGVk
ZWYgUEVGRXhwb3J0ZWRTeW1ib2xIYXNoU2xvdCBYTGliRXhwb3J0ZWRTeW1ib2xIYXNoU2xvdDsK
dHlwZWRlZiBQRUZFeHBvcnRlZFN5bWJvbEtleSBYTGliRXhwb3J0ZWRTeW1ib2xLZXk7CnN0cnVj
dCBYTGliRXhwb3J0ZWRTeW1ib2wgewogIFVJbnQzMiBjbGFzc0FuZE5hbWU7CiAgVUludDMyIGJw
T2Zmc2V0Owp9Owp0eXBlZGVmIHN0cnVjdCBYTGliRXhwb3J0ZWRTeW1ib2wgWExpYkV4cG9ydGVk
U3ltYm9sOwojIDEyMDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1BFRkJpbmFy
eUZvcm1hdC5oIiAzCiNkZWZpbmUgSW5jbHVkZVBFRjJEZWNsYXJhdGlvbnMgMAojIDE1NzkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1BFRkJpbmFyeUZvcm1hdC5oIiAzCiNwcmFn
bWEgcGFjayhwb3ApCiMgMjAzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9DYXJi
b25Db3JlLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0hG
U1ZvbHVtZXMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0hG
U1ZvbHVtZXMuaCIgMwojZGVmaW5lIF9fSEZTVk9MVU1FU19fIAojIDMyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9IRlNWb2x1bWVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvaGZz
L2hmc19mb3JtYXQuaCIgMSAzIDQKIyAyOSAiL3Vzci9pbmNsdWRlL2hmcy9oZnNfZm9ybWF0Lmgi
IDMgNAojZGVmaW5lIF9fSEZTX0ZPUk1BVF9fIAojIDQ1ICIvdXNyL2luY2x1ZGUvaGZzL2hmc19m
b3JtYXQuaCIgMyA0CmV4dGVybiAiQyIgewoKCgoKCmVudW0gewoga0hGU1NpZ1dvcmQgPSAweDQy
NDQsCiBrSEZTUGx1c1NpZ1dvcmQgPSAweDQ4MkIsCiBrSEZTWFNpZ1dvcmQgPSAweDQ4NTgsCgog
a0hGU1BsdXNWZXJzaW9uID0gMHgwMDA0LAoga0hGU1hWZXJzaW9uID0gMHgwMDA1LAoKIGtIRlNQ
bHVzTW91bnRWZXJzaW9uID0gMHgzMTMwMkUzMCwKIGtIRlNKTW91bnRWZXJzaW9uID0gMHg0ODQ2
NTM0YSwKIGtGU0tNb3VudFZlcnNpb24gPSAweDQ2NTM0YjIxCn07CiMgNzMgIi91c3IvaW5jbHVk
ZS9oZnMvaGZzX2Zvcm1hdC5oIiAzIDQKI2RlZmluZSBIRlNQTFVTTUVUQURBVEFGT0xERVIgIlx4
RTJceDkwXHg4MFx4RTJceDkwXHg4MFx4RTJceDkwXHg4MFx4RTJceDkwXHg4MEhGUysgUHJpdmF0
ZSBEYXRhIgojZGVmaW5lIEhGU1BMVVNfRElSX01FVEFEQVRBX0ZPTERFUiAiLkhGUysgUHJpdmF0
ZSBEaXJlY3RvcnkgRGF0YVx4ZCIKIyA4NSAiL3Vzci9pbmNsdWRlL2hmcy9oZnNfZm9ybWF0Lmgi
IDMgNAojZGVmaW5lIEhGU19JTk9ERV9QUkVGSVggImlOb2RlIgojZGVmaW5lIEhGU19ERUxFVEVf
UFJFRklYICJ0ZW1wIgoKCgoKCgoKI2RlZmluZSBIRlNfRElSSU5PREVfUFJFRklYICJkaXJfIgoj
IDEwNSAiL3Vzci9pbmNsdWRlL2hmcy9oZnNfZm9ybWF0LmgiIDMgNAojZGVmaW5lIEZJUlNUX0xJ
TktfWEFUVFJfTkFNRSAiY29tLmFwcGxlLnN5c3RlbS5oZnMuZmlyc3RsaW5rIgojZGVmaW5lIEZJ
UlNUX0xJTktfWEFUVFJfUkVDX1NJWkUgKHNpemVvZihIRlNQbHVzQXR0ckRhdGEpIC0gMiArIDEy
KQoKCgoKCgojZGVmaW5lIEhGU19VVUlEX05BTUVTUEFDRV9JRCAiXHhCM1x4RTJceDBGXHgzOVx4
RjJceDkyXHgxMVx4RDZceDk3XHhBNFx4MDBceDMwXHg2NVx4NDNceEVDXHhBQyIKCgoKCgoKZW51
bSB7CiBrSGFyZExpbmtGaWxlVHlwZSA9IDB4Njg2QzZFNkIsCiBrSEZTUGx1c0NyZWF0b3IgPSAw
eDY4NjY3MzJCCn07CgoKCgoKZW51bSB7CiAgICAgIGtTeW1MaW5rRmlsZVR5cGUgPSAweDczNkM2
RTZCLAogICAgICBrU3ltTGlua0NyZWF0b3IgPSAweDcyNjg2MTcwCn07CiMgMTQ2ICIvdXNyL2lu
Y2x1ZGUvaGZzL2hmc19mb3JtYXQuaCIgMyA0CmVudW0gewoga0hGU01heFZvbHVtZU5hbWVDaGFy
cyA9IDI3LAoga0hGU01heEZpbGVOYW1lQ2hhcnMgPSAzMSwKIGtIRlNQbHVzTWF4RmlsZU5hbWVD
aGFycyA9IDI1NQp9OwoKCgoKCnN0cnVjdCBIRlNFeHRlbnRLZXkgewogdV9pbnQ4X3Qga2V5TGVu
Z3RoOwogdV9pbnQ4X3QgZm9ya1R5cGU7CiB1X2ludDMyX3QgZmlsZUlEOwogdV9pbnQxNl90IHN0
YXJ0QmxvY2s7Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5cGVkZWYg
c3RydWN0IEhGU0V4dGVudEtleSBIRlNFeHRlbnRLZXk7CgoKc3RydWN0IEhGU1BsdXNFeHRlbnRL
ZXkgewogdV9pbnQxNl90IGtleUxlbmd0aDsKIHVfaW50OF90IGZvcmtUeXBlOwogdV9pbnQ4X3Qg
cGFkOwogdV9pbnQzMl90IGZpbGVJRDsKIHVfaW50MzJfdCBzdGFydEJsb2NrOwp9IF9fYXR0cmli
dXRlX18oKGFsaWduZWQoMiksIHBhY2tlZCkpOwp0eXBlZGVmIHN0cnVjdCBIRlNQbHVzRXh0ZW50
S2V5IEhGU1BsdXNFeHRlbnRLZXk7CgoKZW51bSB7CiBrSEZTRXh0ZW50RGVuc2l0eSA9IDMsCiBr
SEZTUGx1c0V4dGVudERlbnNpdHkgPSA4Cn07CgoKc3RydWN0IEhGU0V4dGVudERlc2NyaXB0b3Ig
ewogdV9pbnQxNl90IHN0YXJ0QmxvY2s7CiB1X2ludDE2X3QgYmxvY2tDb3VudDsKfSBfX2F0dHJp
YnV0ZV9fKChhbGlnbmVkKDIpLCBwYWNrZWQpKTsKdHlwZWRlZiBzdHJ1Y3QgSEZTRXh0ZW50RGVz
Y3JpcHRvciBIRlNFeHRlbnREZXNjcmlwdG9yOwoKCnN0cnVjdCBIRlNQbHVzRXh0ZW50RGVzY3Jp
cHRvciB7CiB1X2ludDMyX3Qgc3RhcnRCbG9jazsKIHVfaW50MzJfdCBibG9ja0NvdW50Owp9IF9f
YXR0cmlidXRlX18oKGFsaWduZWQoMiksIHBhY2tlZCkpOwp0eXBlZGVmIHN0cnVjdCBIRlNQbHVz
RXh0ZW50RGVzY3JpcHRvciBIRlNQbHVzRXh0ZW50RGVzY3JpcHRvcjsKCgp0eXBlZGVmIEhGU0V4
dGVudERlc2NyaXB0b3IgSEZTRXh0ZW50UmVjb3JkWzNdOwoKCnR5cGVkZWYgSEZTUGx1c0V4dGVu
dERlc2NyaXB0b3IgSEZTUGx1c0V4dGVudFJlY29yZFs4XTsKCgoKc3RydWN0IEZuZHJGaWxlSW5m
byB7CiB1X2ludDMyX3QgZmRUeXBlOwogdV9pbnQzMl90IGZkQ3JlYXRvcjsKIHVfaW50MTZfdCBm
ZEZsYWdzOwogc3RydWN0IHsKICAgICBpbnQxNl90IHY7CiAgICAgaW50MTZfdCBoOwogfSBmZExv
Y2F0aW9uOwogaW50MTZfdCBvcGFxdWU7Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFj
a2VkKSk7CnR5cGVkZWYgc3RydWN0IEZuZHJGaWxlSW5mbyBGbmRyRmlsZUluZm87CgpzdHJ1Y3Qg
Rm5kckRpckluZm8gewogc3RydWN0IHsKICAgICBpbnQxNl90IHRvcDsKICAgICBpbnQxNl90IGxl
ZnQ7CiAgICAgaW50MTZfdCBib3R0b207CiAgICAgaW50MTZfdCByaWdodDsKIH0gZnJSZWN0Owog
dW5zaWduZWQgc2hvcnQgZnJGbGFnczsKIHN0cnVjdCB7CiAgICAgdV9pbnQxNl90IHY7CiAgICAg
dV9pbnQxNl90IGg7CiB9IGZyTG9jYXRpb247CiBpbnQxNl90IG9wYXF1ZTsKfSBfX2F0dHJpYnV0
ZV9fKChhbGlnbmVkKDIpLCBwYWNrZWQpKTsKdHlwZWRlZiBzdHJ1Y3QgRm5kckRpckluZm8gRm5k
ckRpckluZm87CgpzdHJ1Y3QgRm5kck9wYXF1ZUluZm8gewogaW50OF90IG9wYXF1ZVsxNl07Cn0g
X19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5cGVkZWYgc3RydWN0IEZuZHJP
cGFxdWVJbmZvIEZuZHJPcGFxdWVJbmZvOwoKCgpzdHJ1Y3QgSEZTUGx1c0ZvcmtEYXRhIHsKIHVf
aW50NjRfdCBsb2dpY2FsU2l6ZTsKIHVfaW50MzJfdCBjbHVtcFNpemU7CiB1X2ludDMyX3QgdG90
YWxCbG9ja3M7CiBIRlNQbHVzRXh0ZW50UmVjb3JkIGV4dGVudHM7Cn0gX19hdHRyaWJ1dGVfXygo
YWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5cGVkZWYgc3RydWN0IEhGU1BsdXNGb3JrRGF0YSBIRlNQ
bHVzRm9ya0RhdGE7CgoKCgoKCgpzdHJ1Y3QgSEZTUGx1c0JTREluZm8gewogdV9pbnQzMl90IG93
bmVySUQ7CiB1X2ludDMyX3QgZ3JvdXBJRDsKIHVfaW50OF90IGFkbWluRmxhZ3M7CiB1X2ludDhf
dCBvd25lckZsYWdzOwogdV9pbnQxNl90IGZpbGVNb2RlOwogdW5pb24gewogICAgIHVfaW50MzJf
dCBpTm9kZU51bTsKICAgICB1X2ludDMyX3QgbGlua0NvdW50OwogICAgIHVfaW50MzJfdCByYXdE
ZXZpY2U7CiB9IHNwZWNpYWw7Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7
CnR5cGVkZWYgc3RydWN0IEhGU1BsdXNCU0RJbmZvIEhGU1BsdXNCU0RJbmZvOwojIDI3NiAiL3Vz
ci9pbmNsdWRlL2hmcy9oZnNfZm9ybWF0LmgiIDMgNAojZGVmaW5lIGhsX2ZpcnN0TGlua0lEIHJl
c2VydmVkMQoKI2RlZmluZSBobF9wcmV2TGlua0lEIGJzZEluZm8ub3duZXJJRAojZGVmaW5lIGhs
X25leHRMaW5rSUQgYnNkSW5mby5ncm91cElECgojZGVmaW5lIGhsX2xpbmtSZWZlcmVuY2UgYnNk
SW5mby5zcGVjaWFsLmlOb2RlTnVtCiNkZWZpbmUgaGxfbGlua0NvdW50IGJzZEluZm8uc3BlY2lh
bC5saW5rQ291bnQKCgoKCmVudW0gewoga0hGU1Jvb3RQYXJlbnRJRCA9IDEsCiBrSEZTUm9vdEZv
bGRlcklEID0gMiwKIGtIRlNFeHRlbnRzRmlsZUlEID0gMywKIGtIRlNDYXRhbG9nRmlsZUlEID0g
NCwKIGtIRlNCYWRCbG9ja0ZpbGVJRCA9IDUsCiBrSEZTQWxsb2NhdGlvbkZpbGVJRCA9IDYsCiBr
SEZTU3RhcnR1cEZpbGVJRCA9IDcsCiBrSEZTQXR0cmlidXRlc0ZpbGVJRCA9IDgsCiBrSEZTQXR0
cmlidXRlRGF0YUZpbGVJRCA9IDEzLAoKIGtIRlNSZXBhaXJDYXRhbG9nRmlsZUlEID0gMTQsCiBr
SEZTQm9ndXNFeHRlbnRGaWxlSUQgPSAxNSwKIGtIRlNGaXJzdFVzZXJDYXRhbG9nTm9kZUlEID0g
MTYKfTsKCgpzdHJ1Y3QgSEZTQ2F0YWxvZ0tleSB7CiB1X2ludDhfdCBrZXlMZW5ndGg7CiB1X2lu
dDhfdCByZXNlcnZlZDsKIHVfaW50MzJfdCBwYXJlbnRJRDsKIHVfaW50OF90IG5vZGVOYW1lW2tI
RlNNYXhGaWxlTmFtZUNoYXJzICsgMV07Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFj
a2VkKSk7CnR5cGVkZWYgc3RydWN0IEhGU0NhdGFsb2dLZXkgSEZTQ2F0YWxvZ0tleTsKCgpzdHJ1
Y3QgSEZTUGx1c0NhdGFsb2dLZXkgewogdV9pbnQxNl90IGtleUxlbmd0aDsKIHVfaW50MzJfdCBw
YXJlbnRJRDsKIEhGU1VuaVN0cjI1NSBub2RlTmFtZTsKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVk
KDIpLCBwYWNrZWQpKTsKdHlwZWRlZiBzdHJ1Y3QgSEZTUGx1c0NhdGFsb2dLZXkgSEZTUGx1c0Nh
dGFsb2dLZXk7CgoKZW51bSB7Cgoga0hGU0ZvbGRlclJlY29yZCA9IDB4MDEwMCwKIGtIRlNGaWxl
UmVjb3JkID0gMHgwMjAwLAoga0hGU0ZvbGRlclRocmVhZFJlY29yZCA9IDB4MDMwMCwKIGtIRlNG
aWxlVGhyZWFkUmVjb3JkID0gMHgwNDAwLAoKCiBrSEZTUGx1c0ZvbGRlclJlY29yZCA9IDEsCiBr
SEZTUGx1c0ZpbGVSZWNvcmQgPSAyLAoga0hGU1BsdXNGb2xkZXJUaHJlYWRSZWNvcmQgPSAzLAog
a0hGU1BsdXNGaWxlVGhyZWFkUmVjb3JkID0gNAp9OwoKCgplbnVtIHsKIGtIRlNGaWxlTG9ja2Vk
Qml0ID0gMHgwMDAwLAoga0hGU0ZpbGVMb2NrZWRNYXNrID0gMHgwMDAxLAoKIGtIRlNUaHJlYWRF
eGlzdHNCaXQgPSAweDAwMDEsCiBrSEZTVGhyZWFkRXhpc3RzTWFzayA9IDB4MDAwMiwKCiBrSEZT
SGFzQXR0cmlidXRlc0JpdCA9IDB4MDAwMiwKIGtIRlNIYXNBdHRyaWJ1dGVzTWFzayA9IDB4MDAw
NCwKCiBrSEZTSGFzU2VjdXJpdHlCaXQgPSAweDAwMDMsCiBrSEZTSGFzU2VjdXJpdHlNYXNrID0g
MHgwMDA4LAoKIGtIRlNIYXNGb2xkZXJDb3VudEJpdCA9IDB4MDAwNCwKIGtIRlNIYXNGb2xkZXJD
b3VudE1hc2sgPSAweDAwMTAsCgoga0hGU0hhc0xpbmtDaGFpbkJpdCA9IDB4MDAwNSwKIGtIRlNI
YXNMaW5rQ2hhaW5NYXNrID0gMHgwMDIwLAoKIGtIRlNIYXNDaGlsZExpbmtCaXQgPSAweDAwMDYs
CiBrSEZTSGFzQ2hpbGRMaW5rTWFzayA9IDB4MDA0MAp9OwoKCgpzdHJ1Y3QgSEZTQ2F0YWxvZ0Zv
bGRlciB7CiBpbnQxNl90IHJlY29yZFR5cGU7CiB1X2ludDE2X3QgZmxhZ3M7CiB1X2ludDE2X3Qg
dmFsZW5jZTsKIHVfaW50MzJfdCBmb2xkZXJJRDsKIHVfaW50MzJfdCBjcmVhdGVEYXRlOwogdV9p
bnQzMl90IG1vZGlmeURhdGU7CiB1X2ludDMyX3QgYmFja3VwRGF0ZTsKIEZuZHJEaXJJbmZvIHVz
ZXJJbmZvOwogRm5kck9wYXF1ZUluZm8gZmluZGVySW5mbzsKIHVfaW50MzJfdCByZXNlcnZlZFs0
XTsKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDIpLCBwYWNrZWQpKTsKdHlwZWRlZiBzdHJ1Y3Qg
SEZTQ2F0YWxvZ0ZvbGRlciBIRlNDYXRhbG9nRm9sZGVyOwoKCnN0cnVjdCBIRlNQbHVzQ2F0YWxv
Z0ZvbGRlciB7CiBpbnQxNl90IHJlY29yZFR5cGU7CiB1X2ludDE2X3QgZmxhZ3M7CiB1X2ludDMy
X3QgdmFsZW5jZTsKIHVfaW50MzJfdCBmb2xkZXJJRDsKIHVfaW50MzJfdCBjcmVhdGVEYXRlOwog
dV9pbnQzMl90IGNvbnRlbnRNb2REYXRlOwogdV9pbnQzMl90IGF0dHJpYnV0ZU1vZERhdGU7CiB1
X2ludDMyX3QgYWNjZXNzRGF0ZTsKIHVfaW50MzJfdCBiYWNrdXBEYXRlOwogSEZTUGx1c0JTRElu
Zm8gYnNkSW5mbzsKIEZuZHJEaXJJbmZvIHVzZXJJbmZvOwogRm5kck9wYXF1ZUluZm8gZmluZGVy
SW5mbzsKIHVfaW50MzJfdCB0ZXh0RW5jb2Rpbmc7CiB1X2ludDMyX3QgZm9sZGVyQ291bnQ7Cn0g
X19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5cGVkZWYgc3RydWN0IEhGU1Bs
dXNDYXRhbG9nRm9sZGVyIEhGU1BsdXNDYXRhbG9nRm9sZGVyOwoKCnN0cnVjdCBIRlNDYXRhbG9n
RmlsZSB7CiBpbnQxNl90IHJlY29yZFR5cGU7CiB1X2ludDhfdCBmbGFnczsKIGludDhfdCBmaWxl
VHlwZTsKIEZuZHJGaWxlSW5mbyB1c2VySW5mbzsKIHVfaW50MzJfdCBmaWxlSUQ7CiB1X2ludDE2
X3QgZGF0YVN0YXJ0QmxvY2s7CiBpbnQzMl90IGRhdGFMb2dpY2FsU2l6ZTsKIGludDMyX3QgZGF0
YVBoeXNpY2FsU2l6ZTsKIHVfaW50MTZfdCByc3JjU3RhcnRCbG9jazsKIGludDMyX3QgcnNyY0xv
Z2ljYWxTaXplOwogaW50MzJfdCByc3JjUGh5c2ljYWxTaXplOwogdV9pbnQzMl90IGNyZWF0ZURh
dGU7CiB1X2ludDMyX3QgbW9kaWZ5RGF0ZTsKIHVfaW50MzJfdCBiYWNrdXBEYXRlOwogRm5kck9w
YXF1ZUluZm8gZmluZGVySW5mbzsKIHVfaW50MTZfdCBjbHVtcFNpemU7CiBIRlNFeHRlbnRSZWNv
cmQgZGF0YUV4dGVudHM7CiBIRlNFeHRlbnRSZWNvcmQgcnNyY0V4dGVudHM7CiB1X2ludDMyX3Qg
cmVzZXJ2ZWQ7Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5cGVkZWYg
c3RydWN0IEhGU0NhdGFsb2dGaWxlIEhGU0NhdGFsb2dGaWxlOwoKCnN0cnVjdCBIRlNQbHVzQ2F0
YWxvZ0ZpbGUgewogaW50MTZfdCByZWNvcmRUeXBlOwogdV9pbnQxNl90IGZsYWdzOwogdV9pbnQz
Ml90IHJlc2VydmVkMTsKIHVfaW50MzJfdCBmaWxlSUQ7CiB1X2ludDMyX3QgY3JlYXRlRGF0ZTsK
IHVfaW50MzJfdCBjb250ZW50TW9kRGF0ZTsKIHVfaW50MzJfdCBhdHRyaWJ1dGVNb2REYXRlOwog
dV9pbnQzMl90IGFjY2Vzc0RhdGU7CiB1X2ludDMyX3QgYmFja3VwRGF0ZTsKIEhGU1BsdXNCU0RJ
bmZvIGJzZEluZm87CiBGbmRyRmlsZUluZm8gdXNlckluZm87CiBGbmRyT3BhcXVlSW5mbyBmaW5k
ZXJJbmZvOwogdV9pbnQzMl90IHRleHRFbmNvZGluZzsKIHVfaW50MzJfdCByZXNlcnZlZDI7CgoK
IEhGU1BsdXNGb3JrRGF0YSBkYXRhRm9yazsKIEhGU1BsdXNGb3JrRGF0YSByZXNvdXJjZUZvcms7
Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5cGVkZWYgc3RydWN0IEhG
U1BsdXNDYXRhbG9nRmlsZSBIRlNQbHVzQ2F0YWxvZ0ZpbGU7CgoKc3RydWN0IEhGU0NhdGFsb2dU
aHJlYWQgewogaW50MTZfdCByZWNvcmRUeXBlOwogaW50MzJfdCByZXNlcnZlZFsyXTsKIHVfaW50
MzJfdCBwYXJlbnRJRDsKIHVfaW50OF90IG5vZGVOYW1lW2tIRlNNYXhGaWxlTmFtZUNoYXJzICsg
MV07Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5cGVkZWYgc3RydWN0
IEhGU0NhdGFsb2dUaHJlYWQgSEZTQ2F0YWxvZ1RocmVhZDsKCgpzdHJ1Y3QgSEZTUGx1c0NhdGFs
b2dUaHJlYWQgewogaW50MTZfdCByZWNvcmRUeXBlOwogaW50MTZfdCByZXNlcnZlZDsKIHVfaW50
MzJfdCBwYXJlbnRJRDsKIEhGU1VuaVN0cjI1NSBub2RlTmFtZTsKfSBfX2F0dHJpYnV0ZV9fKChh
bGlnbmVkKDIpLCBwYWNrZWQpKTsKdHlwZWRlZiBzdHJ1Y3QgSEZTUGx1c0NhdGFsb2dUaHJlYWQg
SEZTUGx1c0NhdGFsb2dUaHJlYWQ7CgoKCgoKCmVudW0gewoga0hGU1BsdXNBdHRySW5saW5lRGF0
YSA9IDB4MTAsCiBrSEZTUGx1c0F0dHJGb3JrRGF0YSA9IDB4MjAsCiBrSEZTUGx1c0F0dHJFeHRl
bnRzID0gMHgzMAp9OwojIDQ3OCAiL3Vzci9pbmNsdWRlL2hmcy9oZnNfZm9ybWF0LmgiIDMgNApz
dHJ1Y3QgSEZTUGx1c0F0dHJGb3JrRGF0YSB7CiB1X2ludDMyX3QgcmVjb3JkVHlwZTsKIHVfaW50
MzJfdCByZXNlcnZlZDsKIEhGU1BsdXNGb3JrRGF0YSB0aGVGb3JrOwp9IF9fYXR0cmlidXRlX18o
KGFsaWduZWQoMiksIHBhY2tlZCkpOwp0eXBlZGVmIHN0cnVjdCBIRlNQbHVzQXR0ckZvcmtEYXRh
IEhGU1BsdXNBdHRyRm9ya0RhdGE7CgoKCgoKCnN0cnVjdCBIRlNQbHVzQXR0ckV4dGVudHMgewog
dV9pbnQzMl90IHJlY29yZFR5cGU7CiB1X2ludDMyX3QgcmVzZXJ2ZWQ7CiBIRlNQbHVzRXh0ZW50
UmVjb3JkIGV4dGVudHM7Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5
cGVkZWYgc3RydWN0IEhGU1BsdXNBdHRyRXh0ZW50cyBIRlNQbHVzQXR0ckV4dGVudHM7CgoKCgoK
CgpzdHJ1Y3QgSEZTUGx1c0F0dHJEYXRhIHsKIHVfaW50MzJfdCByZWNvcmRUeXBlOwogdV9pbnQz
Ml90IHJlc2VydmVkWzJdOwogdV9pbnQzMl90IGF0dHJTaXplOwogdV9pbnQ4X3QgYXR0ckRhdGFb
Ml07Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5cGVkZWYgc3RydWN0
IEhGU1BsdXNBdHRyRGF0YSBIRlNQbHVzQXR0ckRhdGE7CgoKCnN0cnVjdCBIRlNQbHVzQXR0cklu
bGluZURhdGEgewogdV9pbnQzMl90IHJlY29yZFR5cGU7CiB1X2ludDMyX3QgcmVzZXJ2ZWQ7CiB1
X2ludDMyX3QgbG9naWNhbFNpemU7CiB1X2ludDhfdCB1c2VyRGF0YVsyXTsKfSBfX2F0dHJpYnV0
ZV9fKChhbGlnbmVkKDIpLCBwYWNrZWQpKTsKdHlwZWRlZiBzdHJ1Y3QgSEZTUGx1c0F0dHJJbmxp
bmVEYXRhIEhGU1BsdXNBdHRySW5saW5lRGF0YTsKCgoKdW5pb24gSEZTUGx1c0F0dHJSZWNvcmQg
ewogdV9pbnQzMl90IHJlY29yZFR5cGU7CiBIRlNQbHVzQXR0cklubGluZURhdGEgaW5saW5lRGF0
YTsKIEhGU1BsdXNBdHRyRGF0YSBhdHRyRGF0YTsKIEhGU1BsdXNBdHRyRm9ya0RhdGEgZm9ya0Rh
dGE7CiBIRlNQbHVzQXR0ckV4dGVudHMgb3ZlcmZsb3dFeHRlbnRzOwp9Owp0eXBlZGVmIHVuaW9u
IEhGU1BsdXNBdHRyUmVjb3JkIEhGU1BsdXNBdHRyUmVjb3JkOwoKCmVudW0geyBrSEZTTWF4QXR0
ck5hbWVMZW4gPSAxMjcgfTsKc3RydWN0IEhGU1BsdXNBdHRyS2V5IHsKIHVfaW50MTZfdCBrZXlM
ZW5ndGg7CiB1X2ludDE2X3QgcGFkOwogdV9pbnQzMl90IGZpbGVJRDsKIHVfaW50MzJfdCBzdGFy
dEJsb2NrOwogdV9pbnQxNl90IGF0dHJOYW1lTGVuOwogdV9pbnQxNl90IGF0dHJOYW1lW2tIRlNN
YXhBdHRyTmFtZUxlbl07Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5
cGVkZWYgc3RydWN0IEhGU1BsdXNBdHRyS2V5IEhGU1BsdXNBdHRyS2V5OwoKI2RlZmluZSBrSEZT
UGx1c0F0dHJLZXlNYXhpbXVtTGVuZ3RoIChzaXplb2YoSEZTUGx1c0F0dHJLZXkpIC0gc2l6ZW9m
KHVfaW50MTZfdCkpCiNkZWZpbmUga0hGU1BsdXNBdHRyS2V5TWluaW11bUxlbmd0aCAoa0hGU1Bs
dXNBdHRyS2V5TWF4aW11bUxlbmd0aCAtIGtIRlNNYXhBdHRyTmFtZUxlbipzaXplb2YodV9pbnQx
Nl90KSkKCgoKCgplbnVtIHsKIGtIRlNQbHVzRXh0ZW50S2V5TWF4aW11bUxlbmd0aCA9IHNpemVv
ZihIRlNQbHVzRXh0ZW50S2V5KSAtIHNpemVvZih1X2ludDE2X3QpLAoga0hGU0V4dGVudEtleU1h
eGltdW1MZW5ndGggPSBzaXplb2YoSEZTRXh0ZW50S2V5KSAtIHNpemVvZih1X2ludDhfdCksCiBr
SEZTUGx1c0NhdGFsb2dLZXlNYXhpbXVtTGVuZ3RoID0gc2l6ZW9mKEhGU1BsdXNDYXRhbG9nS2V5
KSAtIHNpemVvZih1X2ludDE2X3QpLAoga0hGU1BsdXNDYXRhbG9nS2V5TWluaW11bUxlbmd0aCA9
IGtIRlNQbHVzQ2F0YWxvZ0tleU1heGltdW1MZW5ndGggLSBzaXplb2YoSEZTVW5pU3RyMjU1KSAr
IHNpemVvZih1X2ludDE2X3QpLAoga0hGU0NhdGFsb2dLZXlNYXhpbXVtTGVuZ3RoID0gc2l6ZW9m
KEhGU0NhdGFsb2dLZXkpIC0gc2l6ZW9mKHVfaW50OF90KSwKIGtIRlNDYXRhbG9nS2V5TWluaW11
bUxlbmd0aCA9IGtIRlNDYXRhbG9nS2V5TWF4aW11bUxlbmd0aCAtIChrSEZTTWF4RmlsZU5hbWVD
aGFycyArIDEpICsgc2l6ZW9mKHVfaW50OF90KSwKIGtIRlNQbHVzQ2F0YWxvZ01pbk5vZGVTaXpl
ID0gNDA5NiwKIGtIRlNQbHVzRXh0ZW50TWluTm9kZVNpemUgPSA1MTIsCiBrSEZTUGx1c0F0dHJN
aW5Ob2RlU2l6ZSA9IDQwOTYKfTsKCgplbnVtIHsKCiBrSEZTVm9sdW1lSGFyZHdhcmVMb2NrQml0
ID0gNywKIGtIRlNWb2x1bWVVbm1vdW50ZWRCaXQgPSA4LAoga0hGU1ZvbHVtZVNwYXJlZEJsb2Nr
c0JpdCA9IDksCiBrSEZTVm9sdW1lTm9DYWNoZVJlcXVpcmVkQml0ID0gMTAsCiBrSEZTQm9vdFZv
bHVtZUluY29uc2lzdGVudEJpdCA9IDExLAoga0hGU0NhdGFsb2dOb2RlSURzUmV1c2VkQml0ID0g
MTIsCiBrSEZTVm9sdW1lSm91cm5hbGVkQml0ID0gMTMsCiBrSEZTVm9sdW1lSW5jb25zaXN0ZW50
Qml0ID0gMTQsCiBrSEZTVm9sdW1lU29mdHdhcmVMb2NrQml0ID0gMTUsCgoKCgoga0hGU1VudXNl
ZE5vZGVGaXhCaXQgPSAzMSwKCiBrSEZTVm9sdW1lSGFyZHdhcmVMb2NrTWFzayA9IDEgPDwga0hG
U1ZvbHVtZUhhcmR3YXJlTG9ja0JpdCwKIGtIRlNWb2x1bWVVbm1vdW50ZWRNYXNrID0gMSA8PCBr
SEZTVm9sdW1lVW5tb3VudGVkQml0LAoga0hGU1ZvbHVtZVNwYXJlZEJsb2Nrc01hc2sgPSAxIDw8
IGtIRlNWb2x1bWVTcGFyZWRCbG9ja3NCaXQsCiBrSEZTVm9sdW1lTm9DYWNoZVJlcXVpcmVkTWFz
ayA9IDEgPDwga0hGU1ZvbHVtZU5vQ2FjaGVSZXF1aXJlZEJpdCwKIGtIRlNCb290Vm9sdW1lSW5j
b25zaXN0ZW50TWFzayA9IDEgPDwga0hGU0Jvb3RWb2x1bWVJbmNvbnNpc3RlbnRCaXQsCiBrSEZT
Q2F0YWxvZ05vZGVJRHNSZXVzZWRNYXNrID0gMSA8PCBrSEZTQ2F0YWxvZ05vZGVJRHNSZXVzZWRC
aXQsCiBrSEZTVm9sdW1lSm91cm5hbGVkTWFzayA9IDEgPDwga0hGU1ZvbHVtZUpvdXJuYWxlZEJp
dCwKIGtIRlNWb2x1bWVJbmNvbnNpc3RlbnRNYXNrID0gMSA8PCBrSEZTVm9sdW1lSW5jb25zaXN0
ZW50Qml0LAoga0hGU1ZvbHVtZVNvZnR3YXJlTG9ja01hc2sgPSAxIDw8IGtIRlNWb2x1bWVTb2Z0
d2FyZUxvY2tCaXQsCiBrSEZTVW51c2VkTm9kZUZpeE1hc2sgPSAxIDw8IGtIRlNVbnVzZWROb2Rl
Rml4Qml0LAoga0hGU01EQkF0dHJpYnV0ZXNNYXNrID0gMHg4MzgwCn07CgplbnVtIHsKIGtIRlNV
bnVzZWROb2Rlc0ZpeERhdGUgPSAweGM1ZWYyNDgwCn07CgoKCnN0cnVjdCBIRlNNYXN0ZXJEaXJl
Y3RvcnlCbG9jayB7CiB1X2ludDE2X3QgZHJTaWdXb3JkOwogdV9pbnQzMl90IGRyQ3JEYXRlOwog
dV9pbnQzMl90IGRyTHNNb2Q7CiB1X2ludDE2X3QgZHJBdHJiOwogdV9pbnQxNl90IGRyTm1GbHM7
CiB1X2ludDE2X3QgZHJWQk1TdDsKIHVfaW50MTZfdCBkckFsbG9jUHRyOwogdV9pbnQxNl90IGRy
Tm1BbEJsa3M7CiB1X2ludDMyX3QgZHJBbEJsa1NpejsKIHVfaW50MzJfdCBkckNscFNpejsKIHVf
aW50MTZfdCBkckFsQmxTdDsKIHVfaW50MzJfdCBkck54dENOSUQ7CiB1X2ludDE2X3QgZHJGcmVl
QmtzOwogdV9pbnQ4X3QgZHJWTltrSEZTTWF4Vm9sdW1lTmFtZUNoYXJzICsgMV07CiB1X2ludDMy
X3QgZHJWb2xCa1VwOwogdV9pbnQxNl90IGRyVlNlcU51bTsKIHVfaW50MzJfdCBkcldyQ250Owog
dV9pbnQzMl90IGRyWFRDbHBTaXo7CiB1X2ludDMyX3QgZHJDVENscFNpejsKIHVfaW50MTZfdCBk
ck5tUnREaXJzOwogdV9pbnQzMl90IGRyRmlsQ250OwogdV9pbnQzMl90IGRyRGlyQ250OwogdV9p
bnQzMl90IGRyRm5kckluZm9bOF07CiB1X2ludDE2X3QgZHJFbWJlZFNpZ1dvcmQ7CiBIRlNFeHRl
bnREZXNjcmlwdG9yIGRyRW1iZWRFeHRlbnQ7CiB1X2ludDMyX3QgZHJYVEZsU2l6ZTsKIEhGU0V4
dGVudFJlY29yZCBkclhURXh0UmVjOwogdV9pbnQzMl90IGRyQ1RGbFNpemU7CiBIRlNFeHRlbnRS
ZWNvcmQgZHJDVEV4dFJlYzsKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDIpLCBwYWNrZWQpKTsK
dHlwZWRlZiBzdHJ1Y3QgSEZTTWFzdGVyRGlyZWN0b3J5QmxvY2sgSEZTTWFzdGVyRGlyZWN0b3J5
QmxvY2s7CgoKCiNkZWZpbmUgU0VUX0hGU19URVhUX0VOQ09ESU5HKGhpbnQpICgweDY1NmU2MzAw
IHwgKChoaW50KSAmIDB4ZmYpKQoKI2RlZmluZSBHRVRfSEZTX1RFWFRfRU5DT0RJTkcoaGludCkg
KCgoaGludCkgJiAweGZmZmZmZjAwKSA9PSAweDY1NmU2MzAwID8gKGhpbnQpICYgMHgwMDAwMDBm
ZiA6IDB4ZmZmZmZmZmZVKQoKCgoKCgpzdHJ1Y3QgSEZTUGx1c1ZvbHVtZUhlYWRlciB7CiB1X2lu
dDE2X3Qgc2lnbmF0dXJlOwogdV9pbnQxNl90IHZlcnNpb247CiB1X2ludDMyX3QgYXR0cmlidXRl
czsKIHVfaW50MzJfdCBsYXN0TW91bnRlZFZlcnNpb247CiB1X2ludDMyX3Qgam91cm5hbEluZm9C
bG9jazsKCiB1X2ludDMyX3QgY3JlYXRlRGF0ZTsKIHVfaW50MzJfdCBtb2RpZnlEYXRlOwogdV9p
bnQzMl90IGJhY2t1cERhdGU7CiB1X2ludDMyX3QgY2hlY2tlZERhdGU7CgogdV9pbnQzMl90IGZp
bGVDb3VudDsKIHVfaW50MzJfdCBmb2xkZXJDb3VudDsKCiB1X2ludDMyX3QgYmxvY2tTaXplOwog
dV9pbnQzMl90IHRvdGFsQmxvY2tzOwogdV9pbnQzMl90IGZyZWVCbG9ja3M7CgogdV9pbnQzMl90
IG5leHRBbGxvY2F0aW9uOwogdV9pbnQzMl90IHJzcmNDbHVtcFNpemU7CiB1X2ludDMyX3QgZGF0
YUNsdW1wU2l6ZTsKIHVfaW50MzJfdCBuZXh0Q2F0YWxvZ0lEOwoKIHVfaW50MzJfdCB3cml0ZUNv
dW50OwogdV9pbnQ2NF90IGVuY29kaW5nc0JpdG1hcDsKCiB1X2ludDhfdCBmaW5kZXJJbmZvWzMy
XTsKCiBIRlNQbHVzRm9ya0RhdGEgYWxsb2NhdGlvbkZpbGU7CiBIRlNQbHVzRm9ya0RhdGEgZXh0
ZW50c0ZpbGU7CiBIRlNQbHVzRm9ya0RhdGEgY2F0YWxvZ0ZpbGU7CiBIRlNQbHVzRm9ya0RhdGEg
YXR0cmlidXRlc0ZpbGU7CiBIRlNQbHVzRm9ya0RhdGEgc3RhcnR1cEZpbGU7Cn0gX19hdHRyaWJ1
dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5cGVkZWYgc3RydWN0IEhGU1BsdXNWb2x1bWVI
ZWFkZXIgSEZTUGx1c1ZvbHVtZUhlYWRlcjsKCgoKCmVudW0gQlRyZWVLZXlMaW1pdHN7CiBrTWF4
S2V5TGVuZ3RoID0gNTIwCn07Cgp1bmlvbiBCVHJlZUtleXsKIHVfaW50OF90IGxlbmd0aDg7CiB1
X2ludDE2X3QgbGVuZ3RoMTY7CiB1X2ludDhfdCByYXdEYXRhIFtrTWF4S2V5TGVuZ3RoKzJdOwp9
Owp0eXBlZGVmIHVuaW9uIEJUcmVlS2V5IEJUcmVlS2V5OwoKCnN0cnVjdCBCVE5vZGVEZXNjcmlw
dG9yIHsKIHVfaW50MzJfdCBmTGluazsKIHVfaW50MzJfdCBiTGluazsKIGludDhfdCBraW5kOwog
dV9pbnQ4X3QgaGVpZ2h0OwogdV9pbnQxNl90IG51bVJlY29yZHM7CiB1X2ludDE2X3QgcmVzZXJ2
ZWQ7Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyKSwgcGFja2VkKSk7CnR5cGVkZWYgc3RydWN0
IEJUTm9kZURlc2NyaXB0b3IgQlROb2RlRGVzY3JpcHRvcjsKCgplbnVtIHsKIGtCVExlYWZOb2Rl
ID0gLTEsCiBrQlRJbmRleE5vZGUgPSAwLAoga0JUSGVhZGVyTm9kZSA9IDEsCiBrQlRNYXBOb2Rl
ID0gMgp9OwoKCnN0cnVjdCBCVEhlYWRlclJlYyB7CiB1X2ludDE2X3QgdHJlZURlcHRoOwogdV9p
bnQzMl90IHJvb3ROb2RlOwogdV9pbnQzMl90IGxlYWZSZWNvcmRzOwogdV9pbnQzMl90IGZpcnN0
TGVhZk5vZGU7CiB1X2ludDMyX3QgbGFzdExlYWZOb2RlOwogdV9pbnQxNl90IG5vZGVTaXplOwog
dV9pbnQxNl90IG1heEtleUxlbmd0aDsKIHVfaW50MzJfdCB0b3RhbE5vZGVzOwogdV9pbnQzMl90
IGZyZWVOb2RlczsKIHVfaW50MTZfdCByZXNlcnZlZDE7CiB1X2ludDMyX3QgY2x1bXBTaXplOwog
dV9pbnQ4X3QgYnRyZWVUeXBlOwogdV9pbnQ4X3Qga2V5Q29tcGFyZVR5cGU7CiB1X2ludDMyX3Qg
YXR0cmlidXRlczsKIHVfaW50MzJfdCByZXNlcnZlZDNbMTZdOwp9IF9fYXR0cmlidXRlX18oKGFs
aWduZWQoMiksIHBhY2tlZCkpOwp0eXBlZGVmIHN0cnVjdCBCVEhlYWRlclJlYyBCVEhlYWRlclJl
YzsKCgplbnVtIHsKIGtCVEJhZENsb3NlTWFzayA9IDB4MDAwMDAwMDEsCiBrQlRCaWdLZXlzTWFz
ayA9IDB4MDAwMDAwMDIsCiBrQlRWYXJpYWJsZUluZGV4S2V5c01hc2sgPSAweDAwMDAwMDA0Cn07
CgoKCmVudW0gewoga0hGU0Nhc2VGb2xkaW5nID0gMHhDRiwKIGtIRlNCaW5hcnlDb21wYXJlID0g
MHhCQwp9OwoKIyAxICIvdXNyL2luY2x1ZGUvdXVpZC91dWlkLmgiIDEgMyA0CiMgMzYgIi91c3Iv
aW5jbHVkZS91dWlkL3V1aWQuaCIgMyA0CiNkZWZpbmUgX1VVSURfVVVJRF9IIAojIDQ2ICIvdXNy
L2luY2x1ZGUvdXVpZC91dWlkLmgiIDMgNAojZGVmaW5lIF9VVUlEX1NUUklOR19UIAp0eXBlZGVm
IF9fZGFyd2luX3V1aWRfc3RyaW5nX3QgdXVpZF9zdHJpbmdfdDsKCgojZGVmaW5lIFVVSURfREVG
SU5FKG5hbWUsdTAsdTEsdTIsdTMsdTQsdTUsdTYsdTcsdTgsdTksdTEwLHUxMSx1MTIsdTEzLHUx
NCx1MTUpIHN0YXRpYyBjb25zdCB1dWlkX3QgbmFtZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkg
PSB7dTAsdTEsdTIsdTMsdTQsdTUsdTYsdTcsdTgsdTksdTEwLHUxMSx1MTIsdTEzLHUxNCx1MTV9
CgoKCmV4dGVybiAiQyIgewoKCnZvaWQgdXVpZF9jbGVhcih1dWlkX3QgdXUpOwoKaW50IHV1aWRf
Y29tcGFyZShjb25zdCB1dWlkX3QgdXUxLCBjb25zdCB1dWlkX3QgdXUyKTsKCnZvaWQgdXVpZF9j
b3B5KHV1aWRfdCBkc3QsIGNvbnN0IHV1aWRfdCBzcmMpOwoKdm9pZCB1dWlkX2dlbmVyYXRlKHV1
aWRfdCBvdXQpOwp2b2lkIHV1aWRfZ2VuZXJhdGVfcmFuZG9tKHV1aWRfdCBvdXQpOwp2b2lkIHV1
aWRfZ2VuZXJhdGVfdGltZSh1dWlkX3Qgb3V0KTsKCmludCB1dWlkX2lzX251bGwoY29uc3QgdXVp
ZF90IHV1KTsKCmludCB1dWlkX3BhcnNlKGNvbnN0IHV1aWRfc3RyaW5nX3QgaW4sIHV1aWRfdCB1
dSk7Cgp2b2lkIHV1aWRfdW5wYXJzZShjb25zdCB1dWlkX3QgdXUsIHV1aWRfc3RyaW5nX3Qgb3V0
KTsKdm9pZCB1dWlkX3VucGFyc2VfbG93ZXIoY29uc3QgdXVpZF90IHV1LCB1dWlkX3N0cmluZ190
IG91dCk7CnZvaWQgdXVpZF91bnBhcnNlX3VwcGVyKGNvbnN0IHV1aWRfdCB1dSwgdXVpZF9zdHJp
bmdfdCBvdXQpOwoKCn0KIyA3NDkgIi91c3IvaW5jbHVkZS9oZnMvaGZzX2Zvcm1hdC5oIiAyIDMg
NAojIDc1OCAiL3Vzci9pbmNsdWRlL2hmcy9oZnNfZm9ybWF0LmgiIDMgNAojZGVmaW5lIEpJQl9S
RVNFUlZFRF9TSVpFICgoMzIqc2l6ZW9mKHVfaW50MzJfdCkpIC0gc2l6ZW9mKHV1aWRfc3RyaW5n
X3QpIC0gNDgpCgpzdHJ1Y3QgSm91cm5hbEluZm9CbG9jayB7CiB1X2ludDMyX3QgZmxhZ3M7CiAg
ICAgdV9pbnQzMl90IGRldmljZV9zaWduYXR1cmVbOF07CiB1X2ludDY0X3Qgb2Zmc2V0OwogdV9p
bnQ2NF90IHNpemU7CiB1dWlkX3N0cmluZ190IGV4dF9qbmxfdXVpZDsKIGNoYXIgbWFjaGluZV9z
ZXJpYWxfbnVtWzQ4XTsKIGNoYXIgcmVzZXJ2ZWRbKCgzMipzaXplb2YodV9pbnQzMl90KSkgLSBz
aXplb2YodXVpZF9zdHJpbmdfdCkgLSA0OCldOwp9IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMiks
IHBhY2tlZCkpOwp0eXBlZGVmIHN0cnVjdCBKb3VybmFsSW5mb0Jsb2NrIEpvdXJuYWxJbmZvQmxv
Y2s7CgplbnVtIHsKICAgIGtKSUpvdXJuYWxJbkZTTWFzayA9IDB4MDAwMDAwMDEsCiAgICBrSklK
b3VybmFsT25PdGhlckRldmljZU1hc2sgPSAweDAwMDAwMDAyLAogICAga0pJSm91cm5hbE5lZWRJ
bml0TWFzayA9IDB4MDAwMDAwMDQKfTsKCgoKCgoKI2RlZmluZSBFWFRKTkxfQ09OVEVOVF9UWVBF
X1VVSUQgIjRBNkY3NTcyLTZFNjEtMTFBQS1BQTExLTAwMzA2NTQzRUNBQyIKCgoKfQojIDMzICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9IRlNWb2x1bWVzLmgiIDIgMwojIDQxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9IRlNWb2x1bWVzLmgiIDMKdHlwZWRlZiBV
SW50MzIgSEZTQ2F0YWxvZ05vZGVJRDsKIyAyMDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkNvcmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvQUlGRi5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQUlGRi5oIiAzCiNkZWZpbmUgX19BSUZGX18gCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1l
d29yay9IZWFkZXJzL0FJRkYuaCIgMwojcHJhZ21hIHBhY2socHVzaCwgMikKCmVudW0gewogIEFJ
RkZJRCA9ICdBSUZGJywKICBBSUZDSUQgPSAnQUlGQycsCiAgRm9ybWF0VmVyc2lvbklEID0gJ0ZW
RVInLAogIENvbW1vbklEID0gJ0NPTU0nLAogIEZPUk1JRCA9ICdGT1JNJywKICBTb3VuZERhdGFJ
RCA9ICdTU05EJywKICBNYXJrZXJJRCA9ICdNQVJLJywKICBJbnN0cnVtZW50SUQgPSAnSU5TVCcs
CiAgTUlESURhdGFJRCA9ICdNSURJJywKICBBdWRpb1JlY29yZGluZ0lEID0gJ0FFU0QnLAogIEFw
cGxpY2F0aW9uU3BlY2lmaWNJRCA9ICdBUFBMJywKICBDb21tZW50SUQgPSAnQ09NVCcsCiAgTmFt
ZUlEID0gJ05BTUUnLAogIEF1dGhvcklEID0gJ0FVVEgnLAogIENvcHlyaWdodElEID0gJyhjKSAn
LAogIEFubm90YXRpb25JRCA9ICdBTk5PJwp9OwoKZW51bSB7CiAgTm9Mb29waW5nID0gMCwKICBG
b3J3YXJkTG9vcGluZyA9IDEsCiAgRm9yd2FyZEJhY2t3YXJkTG9vcGluZyA9IDIKfTsKCgplbnVt
IHsKCiAgQUlGQ1ZlcnNpb24xID0gKHVpbnQzMl90KTB4QTI4MDUxNDAKfTsKCgojZGVmaW5lIE5v
bmVOYW1lICJccG5vdCBjb21wcmVzc2VkIgojZGVmaW5lIEFDRTJ0bzFOYW1lICJccEFDRSAyLXRv
LTEiCiNkZWZpbmUgQUNFOHRvM05hbWUgIlxwQUNFIDgtdG8tMyIKI2RlZmluZSBNQUNFM3RvMU5h
bWUgIlxwTUFDRSAzLXRvLTEiCiNkZWZpbmUgTUFDRTZ0bzFOYW1lICJccE1BQ0UgNi10by0xIgpl
bnVtIHsKCiAgTm9uZVR5cGUgPSAnTk9ORScsCiAgQUNFMlR5cGUgPSAnQUNFMicsCiAgQUNFOFR5
cGUgPSAnQUNFOCcsCiAgTUFDRTNUeXBlID0gJ01BQzMnLAogIE1BQ0U2VHlwZSA9ICdNQUM2Jwp9
OwojIDg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9BSUZGLmgiIDMKdHlwZWRl
ZiBTSW50MTYgTWFya2VySWRUeXBlOwpzdHJ1Y3QgQ2h1bmtIZWFkZXIgewogIFVJbnQzMiBja0lE
OwogIFNJbnQzMiBja1NpemU7Cn07CnR5cGVkZWYgc3RydWN0IENodW5rSGVhZGVyIENodW5rSGVh
ZGVyOwpzdHJ1Y3QgQ29udGFpbmVyQ2h1bmsgewogIFVJbnQzMiBja0lEOwogIFNJbnQzMiBja1Np
emU7CiAgVUludDMyIGZvcm1UeXBlOwp9Owp0eXBlZGVmIHN0cnVjdCBDb250YWluZXJDaHVuayBD
b250YWluZXJDaHVuazsKc3RydWN0IEZvcm1hdFZlcnNpb25DaHVuayB7CiAgVUludDMyIGNrSUQ7
CiAgU0ludDMyIGNrU2l6ZTsKICBVSW50MzIgdGltZXN0YW1wOwp9Owp0eXBlZGVmIHN0cnVjdCBG
b3JtYXRWZXJzaW9uQ2h1bmsgRm9ybWF0VmVyc2lvbkNodW5rOwp0eXBlZGVmIEZvcm1hdFZlcnNp
b25DaHVuayAqIEZvcm1hdFZlcnNpb25DaHVua1B0cjsKc3RydWN0IENvbW1vbkNodW5rIHsKICBV
SW50MzIgY2tJRDsKICBTSW50MzIgY2tTaXplOwogIFNJbnQxNiBudW1DaGFubmVsczsKICBVSW50
MzIgbnVtU2FtcGxlRnJhbWVzOwogIFNJbnQxNiBzYW1wbGVTaXplOwogIGV4dGVuZGVkODAgc2Ft
cGxlUmF0ZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQ29tbW9uQ2h1bmsgQ29tbW9uQ2h1bms7CnR5cGVk
ZWYgQ29tbW9uQ2h1bmsgKiBDb21tb25DaHVua1B0cjsKc3RydWN0IEV4dENvbW1vbkNodW5rIHsK
ICBVSW50MzIgY2tJRDsKICBTSW50MzIgY2tTaXplOwogIFNJbnQxNiBudW1DaGFubmVsczsKICBV
SW50MzIgbnVtU2FtcGxlRnJhbWVzOwogIFNJbnQxNiBzYW1wbGVTaXplOwogIGV4dGVuZGVkODAg
c2FtcGxlUmF0ZTsKICBVSW50MzIgY29tcHJlc3Npb25UeXBlOwogIGNoYXIgY29tcHJlc3Npb25O
YW1lWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBFeHRDb21tb25DaHVuayBFeHRDb21tb25DaHVuazsK
dHlwZWRlZiBFeHRDb21tb25DaHVuayAqIEV4dENvbW1vbkNodW5rUHRyOwpzdHJ1Y3QgU291bmRE
YXRhQ2h1bmsgewogIFVJbnQzMiBja0lEOwogIFNJbnQzMiBja1NpemU7CiAgVUludDMyIG9mZnNl
dDsKICBVSW50MzIgYmxvY2tTaXplOwp9Owp0eXBlZGVmIHN0cnVjdCBTb3VuZERhdGFDaHVuayBT
b3VuZERhdGFDaHVuazsKdHlwZWRlZiBTb3VuZERhdGFDaHVuayAqIFNvdW5kRGF0YUNodW5rUHRy
OwpzdHJ1Y3QgTWFya2VyIHsKICBNYXJrZXJJZFR5cGUgaWQ7CiAgVUludDMyIHBvc2l0aW9uOwog
IFN0cjI1NSBtYXJrZXJOYW1lOwp9Owp0eXBlZGVmIHN0cnVjdCBNYXJrZXIgTWFya2VyOwpzdHJ1
Y3QgTWFya2VyQ2h1bmsgewogIFVJbnQzMiBja0lEOwogIFNJbnQzMiBja1NpemU7CiAgVUludDE2
IG51bU1hcmtlcnM7CiAgTWFya2VyIE1hcmtlcnNbMV07Cn07CnR5cGVkZWYgc3RydWN0IE1hcmtl
ckNodW5rIE1hcmtlckNodW5rOwp0eXBlZGVmIE1hcmtlckNodW5rICogTWFya2VyQ2h1bmtQdHI7
CnN0cnVjdCBBSUZGTG9vcCB7CiAgU0ludDE2IHBsYXlNb2RlOwogIE1hcmtlcklkVHlwZSBiZWdp
bkxvb3A7CiAgTWFya2VySWRUeXBlIGVuZExvb3A7Cn07CnR5cGVkZWYgc3RydWN0IEFJRkZMb29w
IEFJRkZMb29wOwpzdHJ1Y3QgSW5zdHJ1bWVudENodW5rIHsKICBVSW50MzIgY2tJRDsKICBTSW50
MzIgY2tTaXplOwogIFVJbnQ4IGJhc2VGcmVxdWVuY3k7CiAgVUludDggZGV0dW5lOwogIFVJbnQ4
IGxvd0ZyZXF1ZW5jeTsKICBVSW50OCBoaWdoRnJlcXVlbmN5OwogIFVJbnQ4IGxvd1ZlbG9jaXR5
OwogIFVJbnQ4IGhpZ2hWZWxvY2l0eTsKICBTSW50MTYgZ2FpbjsKICBBSUZGTG9vcCBzdXN0YWlu
TG9vcDsKICBBSUZGTG9vcCByZWxlYXNlTG9vcDsKfTsKdHlwZWRlZiBzdHJ1Y3QgSW5zdHJ1bWVu
dENodW5rIEluc3RydW1lbnRDaHVuazsKdHlwZWRlZiBJbnN0cnVtZW50Q2h1bmsgKiBJbnN0cnVt
ZW50Q2h1bmtQdHI7CnN0cnVjdCBNSURJRGF0YUNodW5rIHsKICBVSW50MzIgY2tJRDsKICBTSW50
MzIgY2tTaXplOwogIFVJbnQ4IE1JRElkYXRhWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBNSURJRGF0
YUNodW5rIE1JRElEYXRhQ2h1bms7CnR5cGVkZWYgTUlESURhdGFDaHVuayAqIE1JRElEYXRhQ2h1
bmtQdHI7CnN0cnVjdCBBdWRpb1JlY29yZGluZ0NodW5rIHsKICBVSW50MzIgY2tJRDsKICBTSW50
MzIgY2tTaXplOwogIFVJbnQ4IEFFU0NoYW5uZWxTdGF0dXNbMjRdOwp9Owp0eXBlZGVmIHN0cnVj
dCBBdWRpb1JlY29yZGluZ0NodW5rIEF1ZGlvUmVjb3JkaW5nQ2h1bms7CnR5cGVkZWYgQXVkaW9S
ZWNvcmRpbmdDaHVuayAqIEF1ZGlvUmVjb3JkaW5nQ2h1bmtQdHI7CnN0cnVjdCBBcHBsaWNhdGlv
blNwZWNpZmljQ2h1bmsgewogIFVJbnQzMiBja0lEOwogIFNJbnQzMiBja1NpemU7CiAgT1NUeXBl
IGFwcGxpY2F0aW9uU2lnbmF0dXJlOwogIFVJbnQ4IGRhdGFbMV07Cn07CnR5cGVkZWYgc3RydWN0
IEFwcGxpY2F0aW9uU3BlY2lmaWNDaHVuayBBcHBsaWNhdGlvblNwZWNpZmljQ2h1bms7CnR5cGVk
ZWYgQXBwbGljYXRpb25TcGVjaWZpY0NodW5rICogQXBwbGljYXRpb25TcGVjaWZpY0NodW5rUHRy
OwpzdHJ1Y3QgQ29tbWVudCB7CiAgVUludDMyIHRpbWVTdGFtcDsKICBNYXJrZXJJZFR5cGUgbWFy
a2VyOwogIFVJbnQxNiBjb3VudDsKICBjaGFyIHRleHRbMV07Cn07CnR5cGVkZWYgc3RydWN0IENv
bW1lbnQgQ29tbWVudDsKc3RydWN0IENvbW1lbnRzQ2h1bmsgewogIFVJbnQzMiBja0lEOwogIFNJ
bnQzMiBja1NpemU7CiAgVUludDE2IG51bUNvbW1lbnRzOwogIENvbW1lbnQgY29tbWVudHNbMV07
Cn07CnR5cGVkZWYgc3RydWN0IENvbW1lbnRzQ2h1bmsgQ29tbWVudHNDaHVuazsKdHlwZWRlZiBD
b21tZW50c0NodW5rICogQ29tbWVudHNDaHVua1B0cjsKc3RydWN0IFRleHRDaHVuayB7CiAgVUlu
dDMyIGNrSUQ7CiAgU0ludDMyIGNrU2l6ZTsKICBjaGFyIHRleHRbMV07Cn07CnR5cGVkZWYgc3Ry
dWN0IFRleHRDaHVuayBUZXh0Q2h1bms7CnR5cGVkZWYgVGV4dENodW5rICogVGV4dENodW5rUHRy
OwoKI3ByYWdtYSBwYWNrKHBvcCkKIyAyMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0NhcmJvbkNvcmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvVGV4dEVuY29kaW5nUGx1Z2luLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9UZXh0RW5jb2RpbmdQbHVnaW4uaCIgMwojZGVmaW5lIF9fVEVYVEVOQ09E
SU5HUExVR0lOX18gCiMgMzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL1RleHRF
bmNvZGluZ1BsdWdpbi5oIiAzCiNwcmFnbWEgcGFjayhwdXNoLCAyKQojIDUwICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9u
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RW5jb2RpbmdQbHVnaW4uaCIgMwojZGVmaW5lIGtU
RUNNYWNPU1hEaXNwYXRjaFRhYmxlTmFtZVN0cmluZyAiQ29udmVydGVyUGx1Z2luR2V0UGx1Z2lu
RGlzcGF0Y2hUYWJsZSIKCmVudW0gewogIGtURUNBdmFpbGFibGVFbmNvZGluZ3NSZXNUeXBlID0g
J2N2ZW4nLAogIGtURUNBdmFpbGFibGVTbmlmZmVyc1Jlc1R5cGUgPSAnY3ZzZicsCiAga1RFQ1N1
YlRleHRFbmNvZGluZ3NSZXNUeXBlID0gJ2N2c2InLAogIGtURUNDb252ZXJzaW9uSW5mb1Jlc1R5
cGUgPSAnY3ZpZicsCiAga1RFQ01haWxFbmNvZGluZ3NSZXNUeXBlID0gJ2N2bWwnLAogIGtURUNX
ZWJFbmNvZGluZ3NSZXNUeXBlID0gJ2N2d2InLAogIGtURUNJbnRlcm5ldE5hbWVzUmVzVHlwZSA9
ICdjdm1tJwp9OwoKZW51bSB7CiAga1RFQ1BsdWdpblR5cGUgPSAnZWNwZycsCiAga1RFQ1BsdWdp
bkNyZWF0b3IgPSAnZW5jdicsCiAga1RFQ1BsdWdpbk9uZVRvT25lID0gJ290b28nLAogIGtURUNQ
bHVnaW5PbmVUb01hbnkgPSAnb3RvbScsCiAga1RFQ1BsdWdpbk1hbnlUb09uZSA9ICdtdG9vJywK
ICBrVEVDUGx1Z2luU25pZmZPYmogPSAnc25pZicKfTsKCmVudW0gewogIHZlclVuc3BlY2lmaWVk
ID0gMzI3NjcsCiAga1RFQ1Jlc291cmNlSUQgPSAxMjgKfTsKIyA4NCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVuY29kaW5nUGx1Z2luLmgiIDMKc3RydWN0IFRleHRFbmNv
ZGluZ1JlYyB7CiAgVUludDMyIGJhc2U7CiAgVUludDMyIHZhcmlhbnQ7CiAgVUludDMyIGZvcm1h
dDsKfTsKdHlwZWRlZiBzdHJ1Y3QgVGV4dEVuY29kaW5nUmVjIFRleHRFbmNvZGluZ1JlYzsKCnN0
cnVjdCBURUNFbmNvZGluZ3NMaXN0UmVjIHsKICBVSW50MzIgY291bnQ7CiAgVGV4dEVuY29kaW5n
UmVjIGVuY29kaW5nczsKfTsKdHlwZWRlZiBzdHJ1Y3QgVEVDRW5jb2RpbmdzTGlzdFJlYyBURUNF
bmNvZGluZ3NMaXN0UmVjOwp0eXBlZGVmIFRFQ0VuY29kaW5nc0xpc3RSZWMgKiBURUNFbmNvZGlu
Z3NMaXN0UHRyOwp0eXBlZGVmIFRFQ0VuY29kaW5nc0xpc3RQdHIgKiBURUNFbmNvZGluZ3NMaXN0
SGFuZGxlOwoKc3RydWN0IFRFQ1N1YlRleHRFbmNvZGluZ1JlYyB7CiAgVUludDMyIG9mZnNldDsK
ICBUZXh0RW5jb2RpbmdSZWMgc2VhcmNoRW5jb2Rpbmc7CiAgVUludDMyIGNvdW50OwogIFRleHRF
bmNvZGluZ1JlYyBzdWJFbmNvZGluZ3M7Cn07CnR5cGVkZWYgc3RydWN0IFRFQ1N1YlRleHRFbmNv
ZGluZ1JlYyBURUNTdWJUZXh0RW5jb2RpbmdSZWM7CnN0cnVjdCBURUNTdWJUZXh0RW5jb2Rpbmdz
UmVjIHsKICBVSW50MzIgY291bnQ7CiAgVEVDU3ViVGV4dEVuY29kaW5nUmVjIHN1YlRleHRFbmNv
ZGluZ1JlYzsKfTsKdHlwZWRlZiBzdHJ1Y3QgVEVDU3ViVGV4dEVuY29kaW5nc1JlYyBURUNTdWJU
ZXh0RW5jb2RpbmdzUmVjOwp0eXBlZGVmIFRFQ1N1YlRleHRFbmNvZGluZ3NSZWMgKiBURUNTdWJU
ZXh0RW5jb2RpbmdzUHRyOwp0eXBlZGVmIFRFQ1N1YlRleHRFbmNvZGluZ3NQdHIgKiBURUNTdWJU
ZXh0RW5jb2RpbmdzSGFuZGxlOwoKc3RydWN0IFRFQ0VuY29kaW5nUGFpclJlYyB7CiAgVGV4dEVu
Y29kaW5nUmVjIHNvdXJjZTsKICBUZXh0RW5jb2RpbmdSZWMgZGVzdDsKfTsKdHlwZWRlZiBzdHJ1
Y3QgVEVDRW5jb2RpbmdQYWlyUmVjIFRFQ0VuY29kaW5nUGFpclJlYzsKc3RydWN0IFRFQ0VuY29k
aW5nUGFpcnMgewogIFRFQ0VuY29kaW5nUGFpclJlYyBlbmNvZGluZ1BhaXI7CiAgVUludDMyIGZs
YWdzOwogIFVJbnQzMiBzcGVlZDsKfTsKdHlwZWRlZiBzdHJ1Y3QgVEVDRW5jb2RpbmdQYWlycyBU
RUNFbmNvZGluZ1BhaXJzOwpzdHJ1Y3QgVEVDRW5jb2RpbmdQYWlyc1JlYyB7CiAgVUludDMyIGNv
dW50OwogIFRFQ0VuY29kaW5nUGFpcnMgZW5jb2RpbmdQYWlyczsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
VEVDRW5jb2RpbmdQYWlyc1JlYyBURUNFbmNvZGluZ1BhaXJzUmVjOwp0eXBlZGVmIFRFQ0VuY29k
aW5nUGFpcnNSZWMgKiBURUNFbmNvZGluZ1BhaXJzUHRyOwp0eXBlZGVmIFRFQ0VuY29kaW5nUGFp
cnNQdHIgKiBURUNFbmNvZGluZ1BhaXJzSGFuZGxlOwoKc3RydWN0IFRFQ0xvY2FsZUxpc3RUb0Vu
Y29kaW5nTGlzdFJlYyB7CiAgVUludDMyIG9mZnNldDsKICBVSW50MzIgY291bnQ7CiAgUmVnaW9u
Q29kZSBsb2NhbGVzOwoKfTsKdHlwZWRlZiBzdHJ1Y3QgVEVDTG9jYWxlTGlzdFRvRW5jb2RpbmdM
aXN0UmVjIFRFQ0xvY2FsZUxpc3RUb0VuY29kaW5nTGlzdFJlYzsKdHlwZWRlZiBURUNMb2NhbGVM
aXN0VG9FbmNvZGluZ0xpc3RSZWMgKiBURUNMb2NhbGVMaXN0VG9FbmNvZGluZ0xpc3RQdHI7CnN0
cnVjdCBURUNMb2NhbGVUb0VuY29kaW5nc0xpc3RSZWMgewogIFVJbnQzMiBjb3VudDsKICBURUNM
b2NhbGVMaXN0VG9FbmNvZGluZ0xpc3RSZWMgbG9jYWxlTGlzdFRvRW5jb2RpbmdMaXN0Owp9Owp0
eXBlZGVmIHN0cnVjdCBURUNMb2NhbGVUb0VuY29kaW5nc0xpc3RSZWMgVEVDTG9jYWxlVG9FbmNv
ZGluZ3NMaXN0UmVjOwp0eXBlZGVmIFRFQ0xvY2FsZVRvRW5jb2RpbmdzTGlzdFJlYyAqIFRFQ0xv
Y2FsZVRvRW5jb2RpbmdzTGlzdFB0cjsKdHlwZWRlZiBURUNMb2NhbGVUb0VuY29kaW5nc0xpc3RQ
dHIgKiBURUNMb2NhbGVUb0VuY29kaW5nc0xpc3RIYW5kbGU7CgpzdHJ1Y3QgVEVDSW50ZXJuZXRO
YW1lUmVjIHsKICBVSW50MzIgb2Zmc2V0OwogIFRleHRFbmNvZGluZ1JlYyBzZWFyY2hFbmNvZGlu
ZzsKICBVSW50OCBlbmNvZGluZ05hbWVMZW5ndGg7CiAgVUludDggZW5jb2RpbmdOYW1lWzFdOwp9
Owp0eXBlZGVmIHN0cnVjdCBURUNJbnRlcm5ldE5hbWVSZWMgVEVDSW50ZXJuZXROYW1lUmVjOwpz
dHJ1Y3QgVEVDSW50ZXJuZXROYW1lc1JlYyB7CiAgVUludDMyIGNvdW50OwogIFRFQ0ludGVybmV0
TmFtZVJlYyBJbnRlcm5ldE5hbWVzOwp9Owp0eXBlZGVmIHN0cnVjdCBURUNJbnRlcm5ldE5hbWVz
UmVjIFRFQ0ludGVybmV0TmFtZXNSZWM7CnR5cGVkZWYgVEVDSW50ZXJuZXROYW1lc1JlYyAqIFRF
Q0ludGVybmV0TmFtZXNQdHI7CnR5cGVkZWYgVEVDSW50ZXJuZXROYW1lc1B0ciAqIFRFQ0ludGVy
bmV0TmFtZXNIYW5kbGU7CgpzdHJ1Y3QgVEVDQnVmZmVyQ29udGV4dFJlYyB7CiAgQ29uc3RUZXh0
UHRyIHRleHRJbnB1dEJ1ZmZlcjsKICBDb25zdFRleHRQdHIgdGV4dElucHV0QnVmZmVyRW5kOwog
IFRleHRQdHIgdGV4dE91dHB1dEJ1ZmZlcjsKICBUZXh0UHRyIHRleHRPdXRwdXRCdWZmZXJFbmQ7
CgogIENvbnN0VGV4dEVuY29kaW5nUnVuUHRyIGVuY29kaW5nSW5wdXRCdWZmZXI7CiAgQ29uc3RU
ZXh0RW5jb2RpbmdSdW5QdHIgZW5jb2RpbmdJbnB1dEJ1ZmZlckVuZDsKICBUZXh0RW5jb2RpbmdS
dW5QdHIgZW5jb2RpbmdPdXRwdXRCdWZmZXI7CiAgVGV4dEVuY29kaW5nUnVuUHRyIGVuY29kaW5n
T3V0cHV0QnVmZmVyRW5kOwp9Owp0eXBlZGVmIHN0cnVjdCBURUNCdWZmZXJDb250ZXh0UmVjIFRF
Q0J1ZmZlckNvbnRleHRSZWM7CnN0cnVjdCBURUNQbHVnaW5TdGF0ZVJlYyB7CgogIFVJbnQ4IHN0
YXRlMTsKICBVSW50OCBzdGF0ZTI7CiAgVUludDggc3RhdGUzOwogIFVJbnQ4IHN0YXRlNDsKCiAg
VUludDMyIGxvbmdTdGF0ZTE7CiAgVUludDMyIGxvbmdTdGF0ZTI7CiAgVUludDMyIGxvbmdTdGF0
ZTM7CiAgVUludDMyIGxvbmdTdGF0ZTQ7Cn07CnR5cGVkZWYgc3RydWN0IFRFQ1BsdWdpblN0YXRl
UmVjIFRFQ1BsdWdpblN0YXRlUmVjOwpzdHJ1Y3QgVEVDQ29udmVydGVyQ29udGV4dFJlYyB7CgoK
ICBQdHIgcGx1Z2luUmVjOwogIFRleHRFbmNvZGluZyBzb3VyY2VFbmNvZGluZzsKICBUZXh0RW5j
b2RpbmcgZGVzdEVuY29kaW5nOwogIFVJbnQzMiByZXNlcnZlZDE7CiAgVUludDMyIHJlc2VydmVk
MjsKICBURUNCdWZmZXJDb250ZXh0UmVjIGJ1ZmZlckNvbnRleHQ7CgogIFVSZWZDb24gY29udGV4
dFJlZkNvbjsKICBQcm9jUHRyIGNvbnZlcnNpb25Qcm9jOwogIFByb2NQdHIgZmx1c2hQcm9jOwog
IFByb2NQdHIgY2xlYXJDb250ZXh0SW5mb1Byb2M7CiAgVUludDMyIG9wdGlvbnMxOwogIFVJbnQz
MiBvcHRpb25zMjsKICBURUNQbHVnaW5TdGF0ZVJlYyBwbHVnaW5TdGF0ZTsKfTsKdHlwZWRlZiBz
dHJ1Y3QgVEVDQ29udmVydGVyQ29udGV4dFJlYyBURUNDb252ZXJ0ZXJDb250ZXh0UmVjOwpzdHJ1
Y3QgVEVDU25pZmZlckNvbnRleHRSZWMgewoKICBQdHIgcGx1Z2luUmVjOwogIFRleHRFbmNvZGlu
ZyBlbmNvZGluZzsKICBJdGVtQ291bnQgbWF4RXJyb3JzOwogIEl0ZW1Db3VudCBtYXhGZWF0dXJl
czsKICBDb25zdFRleHRQdHIgdGV4dElucHV0QnVmZmVyOwogIENvbnN0VGV4dFB0ciB0ZXh0SW5w
dXRCdWZmZXJFbmQ7CiAgSXRlbUNvdW50IG51bUZlYXR1cmVzOwogIEl0ZW1Db3VudCBudW1FcnJv
cnM7CgogIFVSZWZDb24gY29udGV4dFJlZkNvbjsKICBQcm9jUHRyIHNuaWZmUHJvYzsKICBQcm9j
UHRyIGNsZWFyQ29udGV4dEluZm9Qcm9jOwogIFRFQ1BsdWdpblN0YXRlUmVjIHBsdWdpblN0YXRl
Owp9Owp0eXBlZGVmIHN0cnVjdCBURUNTbmlmZmVyQ29udGV4dFJlYyBURUNTbmlmZmVyQ29udGV4
dFJlYzsKCgoKCgoKdHlwZWRlZiBPU1N0YXR1cyAoICogVEVDUGx1Z2luTmV3RW5jb2RpbmdDb252
ZXJ0ZXJQdHIpKFRFQ09iamVjdFJlZiAqbmV3RW5jb2RpbmdDb252ZXJ0ZXIsIFRFQ0NvbnZlcnRl
ckNvbnRleHRSZWMgKnBsdWdDb250ZXh0LCBUZXh0RW5jb2RpbmcgaW5wdXRFbmNvZGluZywgVGV4
dEVuY29kaW5nIG91dHB1dEVuY29kaW5nKTsKdHlwZWRlZiBPU1N0YXR1cyAoICogVEVDUGx1Z2lu
Q2xlYXJDb250ZXh0SW5mb1B0cikoVEVDT2JqZWN0UmVmIGVuY29kaW5nQ29udmVydGVyLCBURUND
b252ZXJ0ZXJDb250ZXh0UmVjICpwbHVnQ29udGV4dCk7CnR5cGVkZWYgT1NTdGF0dXMgKCAqIFRF
Q1BsdWdpbkNvbnZlcnRUZXh0RW5jb2RpbmdQdHIpKFRFQ09iamVjdFJlZiBlbmNvZGluZ0NvbnZl
cnRlciwgVEVDQ29udmVydGVyQ29udGV4dFJlYyAqcGx1Z0NvbnRleHQpOwp0eXBlZGVmIE9TU3Rh
dHVzICggKiBURUNQbHVnaW5GbHVzaENvbnZlcnNpb25QdHIpKFRFQ09iamVjdFJlZiBlbmNvZGlu
Z0NvbnZlcnRlciwgVEVDQ29udmVydGVyQ29udGV4dFJlYyAqcGx1Z0NvbnRleHQpOwp0eXBlZGVm
IE9TU3RhdHVzICggKiBURUNQbHVnaW5EaXNwb3NlRW5jb2RpbmdDb252ZXJ0ZXJQdHIpKFRFQ09i
amVjdFJlZiBuZXdFbmNvZGluZ0NvbnZlcnRlciwgVEVDQ29udmVydGVyQ29udGV4dFJlYyAqcGx1
Z0NvbnRleHQpOwp0eXBlZGVmIE9TU3RhdHVzICggKiBURUNQbHVnaW5OZXdFbmNvZGluZ1NuaWZm
ZXJQdHIpKFRFQ1NuaWZmZXJPYmplY3RSZWYgKmVuY29kaW5nU25pZmZlciwgVEVDU25pZmZlckNv
bnRleHRSZWMgKnNuaWZDb250ZXh0LCBUZXh0RW5jb2RpbmcgaW5wdXRFbmNvZGluZyk7CnR5cGVk
ZWYgT1NTdGF0dXMgKCAqIFRFQ1BsdWdpbkNsZWFyU25pZmZlckNvbnRleHRJbmZvUHRyKShURUNT
bmlmZmVyT2JqZWN0UmVmIGVuY29kaW5nU25pZmZlciwgVEVDU25pZmZlckNvbnRleHRSZWMgKnNu
aWZDb250ZXh0KTsKdHlwZWRlZiBPU1N0YXR1cyAoICogVEVDUGx1Z2luU25pZmZUZXh0RW5jb2Rp
bmdQdHIpKFRFQ1NuaWZmZXJPYmplY3RSZWYgZW5jb2RpbmdTbmlmZmVyLCBURUNTbmlmZmVyQ29u
dGV4dFJlYyAqc25pZkNvbnRleHQpOwp0eXBlZGVmIE9TU3RhdHVzICggKiBURUNQbHVnaW5EaXNw
b3NlRW5jb2RpbmdTbmlmZmVyUHRyKShURUNTbmlmZmVyT2JqZWN0UmVmIGVuY29kaW5nU25pZmZl
ciwgVEVDU25pZmZlckNvbnRleHRSZWMgKnNuaWZDb250ZXh0KTsKdHlwZWRlZiBPU1N0YXR1cyAo
ICogVEVDUGx1Z2luR2V0Q291bnRBdmFpbGFibGVUZXh0RW5jb2RpbmdzUHRyKShUZXh0RW5jb2Rp
bmcgKmF2YWlsYWJsZUVuY29kaW5ncywgSXRlbUNvdW50IG1heEF2YWlsYWJsZUVuY29kaW5ncywg
SXRlbUNvdW50ICphY3R1YWxBdmFpbGFibGVFbmNvZGluZ3MpOwp0eXBlZGVmIE9TU3RhdHVzICgg
KiBURUNQbHVnaW5HZXRDb3VudEF2YWlsYWJsZVRleHRFbmNvZGluZ1BhaXJzUHRyKShURUNDb252
ZXJzaW9uSW5mbyAqYXZhaWxhYmxlRW5jb2RpbmdzLCBJdGVtQ291bnQgbWF4QXZhaWxhYmxlRW5j
b2RpbmdzLCBJdGVtQ291bnQgKmFjdHVhbEF2YWlsYWJsZUVuY29kaW5ncyk7CnR5cGVkZWYgT1NT
dGF0dXMgKCAqIFRFQ1BsdWdpbkdldENvdW50RGVzdGluYXRpb25UZXh0RW5jb2RpbmdzUHRyKShU
ZXh0RW5jb2RpbmcgaW5wdXRFbmNvZGluZywgVGV4dEVuY29kaW5nICpkZXN0aW5hdGlvbkVuY29k
aW5ncywgSXRlbUNvdW50IG1heERlc3RpbmF0aW9uRW5jb2RpbmdzLCBJdGVtQ291bnQgKmFjdHVh
bERlc3RpbmF0aW9uRW5jb2RpbmdzKTsKdHlwZWRlZiBPU1N0YXR1cyAoICogVEVDUGx1Z2luR2V0
Q291bnRTdWJUZXh0RW5jb2RpbmdzUHRyKShUZXh0RW5jb2RpbmcgaW5wdXRFbmNvZGluZywgVGV4
dEVuY29kaW5nIHN1YkVuY29kaW5nc1tdLCBJdGVtQ291bnQgbWF4U3ViRW5jb2RpbmdzLCBJdGVt
Q291bnQgKmFjdHVhbFN1YkVuY29kaW5ncyk7CnR5cGVkZWYgT1NTdGF0dXMgKCAqIFRFQ1BsdWdp
bkdldENvdW50QXZhaWxhYmxlU25pZmZlcnNQdHIpKFRleHRFbmNvZGluZyAqYXZhaWxhYmxlRW5j
b2RpbmdzLCBJdGVtQ291bnQgbWF4QXZhaWxhYmxlRW5jb2RpbmdzLCBJdGVtQ291bnQgKmFjdHVh
bEF2YWlsYWJsZUVuY29kaW5ncyk7CnR5cGVkZWYgT1NTdGF0dXMgKCAqIFRFQ1BsdWdpbkdldFRl
eHRFbmNvZGluZ0ludGVybmV0TmFtZVB0cikoVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZywgU3Ry
MjU1IGVuY29kaW5nTmFtZSk7CnR5cGVkZWYgT1NTdGF0dXMgKCAqIFRFQ1BsdWdpbkdldFRleHRF
bmNvZGluZ0Zyb21JbnRlcm5ldE5hbWVQdHIpKFRleHRFbmNvZGluZyAqdGV4dEVuY29kaW5nLCBD
b25zdFN0cjI1NVBhcmFtIGVuY29kaW5nTmFtZSk7CnR5cGVkZWYgT1NTdGF0dXMgKCAqIFRFQ1Bs
dWdpbkdldENvdW50V2ViRW5jb2RpbmdzUHRyKShUZXh0RW5jb2RpbmcgKmF2YWlsYWJsZUVuY29k
aW5ncywgSXRlbUNvdW50IG1heEF2YWlsYWJsZUVuY29kaW5ncywgSXRlbUNvdW50ICphY3R1YWxB
dmFpbGFibGVFbmNvZGluZ3MpOwp0eXBlZGVmIE9TU3RhdHVzICggKiBURUNQbHVnaW5HZXRDb3Vu
dE1haWxFbmNvZGluZ3NQdHIpKFRleHRFbmNvZGluZyAqYXZhaWxhYmxlRW5jb2RpbmdzLCBJdGVt
Q291bnQgbWF4QXZhaWxhYmxlRW5jb2RpbmdzLCBJdGVtQ291bnQgKmFjdHVhbEF2YWlsYWJsZUVu
Y29kaW5ncyk7CgoKCgoKCmVudW0gewogIGtURUNQbHVnaW5EaXNwYXRjaFRhYmxlVmVyc2lvbjEg
PSAweDAwMDEwMDAwLAogIGtURUNQbHVnaW5EaXNwYXRjaFRhYmxlVmVyc2lvbjFfMSA9IDB4MDAw
MTAwMDEsCiAga1RFQ1BsdWdpbkRpc3BhdGNoVGFibGVWZXJzaW9uMV8yID0gMHgwMDAxMDAwMiwK
ICBrVEVDUGx1Z2luRGlzcGF0Y2hUYWJsZUN1cnJlbnRWZXJzaW9uID0ga1RFQ1BsdWdpbkRpc3Bh
dGNoVGFibGVWZXJzaW9uMV8yCn07CgpzdHJ1Y3QgVEVDUGx1Z2luRGlzcGF0Y2hUYWJsZSB7Cgog
IFRFQ1BsdWdpblZlcnNpb24gdmVyc2lvbjsKICBURUNQbHVnaW5WZXJzaW9uIGNvbXBhdGlibGVW
ZXJzaW9uOwogIFRFQ1BsdWdpblNpZ25hdHVyZSBQbHVnaW5JRDsKCiAgVEVDUGx1Z2luTmV3RW5j
b2RpbmdDb252ZXJ0ZXJQdHIgUGx1Z2luTmV3RW5jb2RpbmdDb252ZXJ0ZXI7CiAgVEVDUGx1Z2lu
Q2xlYXJDb250ZXh0SW5mb1B0ciBQbHVnaW5DbGVhckNvbnRleHRJbmZvOwogIFRFQ1BsdWdpbkNv
bnZlcnRUZXh0RW5jb2RpbmdQdHIgUGx1Z2luQ29udmVydFRleHRFbmNvZGluZzsKICBURUNQbHVn
aW5GbHVzaENvbnZlcnNpb25QdHIgUGx1Z2luRmx1c2hDb252ZXJzaW9uOwogIFRFQ1BsdWdpbkRp
c3Bvc2VFbmNvZGluZ0NvbnZlcnRlclB0ciBQbHVnaW5EaXNwb3NlRW5jb2RpbmdDb252ZXJ0ZXI7
CgogIFRFQ1BsdWdpbk5ld0VuY29kaW5nU25pZmZlclB0ciBQbHVnaW5OZXdFbmNvZGluZ1NuaWZm
ZXI7CiAgVEVDUGx1Z2luQ2xlYXJTbmlmZmVyQ29udGV4dEluZm9QdHIgUGx1Z2luQ2xlYXJTbmlm
ZmVyQ29udGV4dEluZm87CiAgVEVDUGx1Z2luU25pZmZUZXh0RW5jb2RpbmdQdHIgUGx1Z2luU25p
ZmZUZXh0RW5jb2Rpbmc7CiAgVEVDUGx1Z2luRGlzcG9zZUVuY29kaW5nU25pZmZlclB0ciBQbHVn
aW5EaXNwb3NlRW5jb2RpbmdTbmlmZmVyOwoKICBURUNQbHVnaW5HZXRDb3VudEF2YWlsYWJsZVRl
eHRFbmNvZGluZ3NQdHIgUGx1Z2luR2V0Q291bnRBdmFpbGFibGVUZXh0RW5jb2RpbmdzOwogIFRF
Q1BsdWdpbkdldENvdW50QXZhaWxhYmxlVGV4dEVuY29kaW5nUGFpcnNQdHIgUGx1Z2luR2V0Q291
bnRBdmFpbGFibGVUZXh0RW5jb2RpbmdQYWlyczsKICBURUNQbHVnaW5HZXRDb3VudERlc3RpbmF0
aW9uVGV4dEVuY29kaW5nc1B0ciBQbHVnaW5HZXRDb3VudERlc3RpbmF0aW9uVGV4dEVuY29kaW5n
czsKICBURUNQbHVnaW5HZXRDb3VudFN1YlRleHRFbmNvZGluZ3NQdHIgUGx1Z2luR2V0Q291bnRT
dWJUZXh0RW5jb2RpbmdzOwogIFRFQ1BsdWdpbkdldENvdW50QXZhaWxhYmxlU25pZmZlcnNQdHIg
UGx1Z2luR2V0Q291bnRBdmFpbGFibGVTbmlmZmVyczsKICBURUNQbHVnaW5HZXRDb3VudFdlYkVu
Y29kaW5nc1B0ciBQbHVnaW5HZXRDb3VudFdlYlRleHRFbmNvZGluZ3M7CiAgVEVDUGx1Z2luR2V0
Q291bnRNYWlsRW5jb2RpbmdzUHRyIFBsdWdpbkdldENvdW50TWFpbFRleHRFbmNvZGluZ3M7Cgog
IFRFQ1BsdWdpbkdldFRleHRFbmNvZGluZ0ludGVybmV0TmFtZVB0ciBQbHVnaW5HZXRUZXh0RW5j
b2RpbmdJbnRlcm5ldE5hbWU7CiAgVEVDUGx1Z2luR2V0VGV4dEVuY29kaW5nRnJvbUludGVybmV0
TmFtZVB0ciBQbHVnaW5HZXRUZXh0RW5jb2RpbmdGcm9tSW50ZXJuZXROYW1lOwoKfTsKdHlwZWRl
ZiBzdHJ1Y3QgVEVDUGx1Z2luRGlzcGF0Y2hUYWJsZSBURUNQbHVnaW5EaXNwYXRjaFRhYmxlOwoj
IDMwMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVuY29kaW5nUGx1Z2lu
LmgiIDMKdHlwZWRlZiBURUNQbHVnaW5EaXNwYXRjaFRhYmxlICogKCAqIFRFQ1BsdWdpbkdldFBs
dWdpbkRpc3BhdGNoVGFibGVQdHIpKHZvaWQpOwoKCgoKCgojcHJhZ21hIHBhY2socG9wKQojIDIx
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAyIDMKCgoK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GU0V2ZW50cy5oIiAxIDMKIyAx
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMuaCIgMwojZGVmaW5l
IF9fRlNFVkVOVFNfXyAKIyAyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNF
dmVudHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9CbG9jay5oIiAxIDMgNAojIDkgIi91c3IvaW5j
bHVkZS9CbG9jay5oIiAzIDQKI2RlZmluZSBfQmxvY2tfSF8gCgoKCiNkZWZpbmUgQkxPQ0tfRVhQ
T1JUIGV4dGVybiAiQyIKIyAyMyAiL3Vzci9pbmNsdWRlL0Jsb2NrLmgiIDMgNApleHRlcm4gIkMi
IHsKCgoKCgpleHRlcm4gIkMiIHZvaWQgKl9CbG9ja19jb3B5KGNvbnN0IHZvaWQgKmFCbG9jayk7
CgoKZXh0ZXJuICJDIiB2b2lkIF9CbG9ja19yZWxlYXNlKGNvbnN0IHZvaWQgKmFCbG9jayk7CgoK
fQoKCgoKI2RlZmluZSBCbG9ja19jb3B5KC4uLikgKChfX3R5cGVvZihfX1ZBX0FSR1NfXykpX0Js
b2NrX2NvcHkoKGNvbnN0IHZvaWQgKikoX19WQV9BUkdTX18pKSkKI2RlZmluZSBCbG9ja19yZWxl
YXNlKC4uLikgX0Jsb2NrX3JlbGVhc2UoKGNvbnN0IHZvaWQgKikoX19WQV9BUkdTX18pKQojIDI5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GU0V2ZW50cy5oIiAyIDMKIyA0MCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMuaCIgMwpleHRlcm4gIkMi
IHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyAxOTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29y
ay9IZWFkZXJzL0ZTRXZlbnRzLmgiIDMKdHlwZWRlZiBVSW50MzIgRlNFdmVudFN0cmVhbUNyZWF0
ZUZsYWdzOwojIDIwNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMu
aCIgMwplbnVtIHsKCgoKCiAga0ZTRXZlbnRTdHJlYW1DcmVhdGVGbGFnTm9uZSA9IDB4MDAwMDAw
MDAsCgoKCgoKCgogIGtGU0V2ZW50U3RyZWFtQ3JlYXRlRmxhZ1VzZUNGVHlwZXMgPSAweDAwMDAw
MDAxLAojIDIzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMuaCIg
MwogIGtGU0V2ZW50U3RyZWFtQ3JlYXRlRmxhZ05vRGVmZXIgPSAweDAwMDAwMDAyLAojIDI1NCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMuaCIgMwogIGtGU0V2ZW50
U3RyZWFtQ3JlYXRlRmxhZ1dhdGNoUm9vdCA9IDB4MDAwMDAwMDQsCiAga0ZTRXZlbnRTdHJlYW1D
cmVhdGVGbGFnSWdub3JlU2VsZiA9IDB4MDAwMDAwMDgKfTsKIyAyNjUgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3Jl
LmZyYW1ld29yay9IZWFkZXJzL0ZTRXZlbnRzLmgiIDMKdHlwZWRlZiBVSW50MzIgRlNFdmVudFN0
cmVhbUV2ZW50RmxhZ3M7CgoKCgoKCgplbnVtIHsKCgoKCgogIGtGU0V2ZW50U3RyZWFtRXZlbnRG
bGFnTm9uZSA9IDB4MDAwMDAwMDAsCiMgMjk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GU0V2ZW50cy5oIiAzCiAga0ZTRXZlbnRTdHJlYW1FdmVudEZsYWdNdXN0U2NhblN1YkRp
cnMgPSAweDAwMDAwMDAxLAojIDMwOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
RlNFdmVudHMuaCIgMwogIGtGU0V2ZW50U3RyZWFtRXZlbnRGbGFnVXNlckRyb3BwZWQgPSAweDAw
MDAwMDAyLAogIGtGU0V2ZW50U3RyZWFtRXZlbnRGbGFnS2VybmVsRHJvcHBlZCA9IDB4MDAwMDAw
MDQsCgoKCgoKCgogIGtGU0V2ZW50U3RyZWFtRXZlbnRGbGFnRXZlbnRJZHNXcmFwcGVkID0gMHgw
MDAwMDAwOCwKIyAzMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZTRXZlbnRz
LmgiIDMKICBrRlNFdmVudFN0cmVhbUV2ZW50RmxhZ0hpc3RvcnlEb25lID0gMHgwMDAwMDAxMCwK
IyAzNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZTRXZlbnRzLmgiIDMKICBr
RlNFdmVudFN0cmVhbUV2ZW50RmxhZ1Jvb3RDaGFuZ2VkID0gMHgwMDAwMDAyMCwKIyAzNTkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZTRXZlbnRzLmgiIDMKICBrRlNFdmVudFN0
cmVhbUV2ZW50RmxhZ01vdW50ID0gMHgwMDAwMDA0MCwKIyAzNzIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZy
YW1ld29yay9IZWFkZXJzL0ZTRXZlbnRzLmgiIDMKICBrRlNFdmVudFN0cmVhbUV2ZW50RmxhZ1Vu
bW91bnQgPSAweDAwMDAwMDgwCn07CiMgMzg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9GU0V2ZW50cy5oIiAzCnR5cGVkZWYgVUludDY0IEZTRXZlbnRTdHJlYW1FdmVudElkOwoK
ZW51bSB7CiAgICBrRlNFdmVudFN0cmVhbUV2ZW50SWRTaW5jZU5vdyA9IDB4RkZGRkZGRkZGRkZG
RkZGRlVMTAp9OwojIDM5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVu
dHMuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX0ZTRXZlbnRTdHJlYW0qIEZTRXZlbnRTdHJlYW1SZWY7
CgoKCgoKCgp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0ZTRXZlbnRTdHJlYW0qIENvbnN0RlNFdmVu
dFN0cmVhbVJlZjsKIyA0MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZTRXZl
bnRzLmgiIDMKc3RydWN0IEZTRXZlbnRTdHJlYW1Db250ZXh0IHsKCgoKCiAgQ0ZJbmRleCB2ZXJz
aW9uOwojIDQzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMuaCIg
MwogIHZvaWQgKiBpbmZvOwoKCgoKICBDRkFsbG9jYXRvclJldGFpbkNhbGxCYWNrIHJldGFpbjsK
CgoKCgogIENGQWxsb2NhdG9yUmVsZWFzZUNhbGxCYWNrIHJlbGVhc2U7CgoKCgoKCiAgQ0ZBbGxv
Y2F0b3JDb3B5RGVzY3JpcHRpb25DYWxsQmFjayBjb3B5RGVzY3JpcHRpb247Cn07CnR5cGVkZWYg
c3RydWN0IEZTRXZlbnRTdHJlYW1Db250ZXh0IEZTRXZlbnRTdHJlYW1Db250ZXh0OwojIDUxNSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMuaCIgMwp0eXBlZGVmIHZv
aWQgKCAqIEZTRXZlbnRTdHJlYW1DYWxsYmFjaykoQ29uc3RGU0V2ZW50U3RyZWFtUmVmIHN0cmVh
bVJlZiwgdm9pZCAqY2xpZW50Q2FsbEJhY2tJbmZvLCBzaXplX3QgbnVtRXZlbnRzLCB2b2lkICpl
dmVudFBhdGhzLCBjb25zdCBGU0V2ZW50U3RyZWFtRXZlbnRGbGFncyBldmVudEZsYWdzW10sIGNv
bnN0IEZTRXZlbnRTdHJlYW1FdmVudElkIGV2ZW50SWRzW10pOwojIDU4MCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMuaCIgMwpleHRlcm4gRlNFdmVudFN0cmVhbVJl
ZgpGU0V2ZW50U3RyZWFtQ3JlYXRlKAogIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwKICBGU0V2
ZW50U3RyZWFtQ2FsbGJhY2sgY2FsbGJhY2ssCiAgRlNFdmVudFN0cmVhbUNvbnRleHQgKiBjb250
ZXh0LAogIENGQXJyYXlSZWYgcGF0aHNUb1dhdGNoLAogIEZTRXZlbnRTdHJlYW1FdmVudElkIHNp
bmNlV2hlbiwKICBDRlRpbWVJbnRlcnZhbCBsYXRlbmN5LAogIEZTRXZlbnRTdHJlYW1DcmVhdGVG
bGFncyBmbGFncykgOwojIDY2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNF
dmVudHMuaCIgMwpleHRlcm4gRlNFdmVudFN0cmVhbVJlZgpGU0V2ZW50U3RyZWFtQ3JlYXRlUmVs
YXRpdmVUb0RldmljZSgKICBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsCiAgRlNFdmVudFN0cmVh
bUNhbGxiYWNrIGNhbGxiYWNrLAogIEZTRXZlbnRTdHJlYW1Db250ZXh0ICogY29udGV4dCwKICBk
ZXZfdCBkZXZpY2VUb1dhdGNoLAogIENGQXJyYXlSZWYgcGF0aHNUb1dhdGNoUmVsYXRpdmVUb0Rl
dmljZSwKICBGU0V2ZW50U3RyZWFtRXZlbnRJZCBzaW5jZVdoZW4sCiAgQ0ZUaW1lSW50ZXJ2YWwg
bGF0ZW5jeSwKICBGU0V2ZW50U3RyZWFtQ3JlYXRlRmxhZ3MgZmxhZ3MpIDsKIyA3MDAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZTRXZlbnRzLmgiIDMKZXh0ZXJuIEZTRXZlbnRT
dHJlYW1FdmVudElkCkZTRXZlbnRTdHJlYW1HZXRMYXRlc3RFdmVudElkKENvbnN0RlNFdmVudFN0
cmVhbVJlZiBzdHJlYW1SZWYpIDsKIyA3MjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFk
ZXJzL0ZTRXZlbnRzLmgiIDMKZXh0ZXJuIGRldl90CkZTRXZlbnRTdHJlYW1HZXREZXZpY2VCZWlu
Z1dhdGNoZWQoQ29uc3RGU0V2ZW50U3RyZWFtUmVmIHN0cmVhbVJlZikgOwojIDc0OSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nh
cmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMuaCIgMwpleHRlcm4gQ0ZBcnJheVJl
ZgpGU0V2ZW50U3RyZWFtQ29weVBhdGhzQmVpbmdXYXRjaGVkKENvbnN0RlNFdmVudFN0cmVhbVJl
ZiBzdHJlYW1SZWYpIDsKIyA3NjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZT
RXZlbnRzLmgiIDMKZXh0ZXJuIEZTRXZlbnRTdHJlYW1FdmVudElkCkZTRXZlbnRzR2V0Q3VycmVu
dEV2ZW50SWQodm9pZCkgOwojIDgwNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
RlNFdmVudHMuaCIgMwpleHRlcm4gQ0ZVVUlEUmVmCkZTRXZlbnRzQ29weVVVSURGb3JEZXZpY2Uo
ZGV2X3QgZGV2KSA7CiMgODQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GU0V2
ZW50cy5oIiAzCmV4dGVybiBGU0V2ZW50U3RyZWFtRXZlbnRJZApGU0V2ZW50c0dldExhc3RFdmVu
dElkRm9yRGV2aWNlQmVmb3JlVGltZSgKICBkZXZfdCBkZXYsCiAgQ0ZBYnNvbHV0ZVRpbWUgdGlt
ZSkgOwojIDg3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMuaCIg
MwpleHRlcm4gQm9vbGVhbgpGU0V2ZW50c1B1cmdlRXZlbnRzRm9yRGV2aWNlVXBUb0V2ZW50SWQo
CiAgZGV2X3QgZGV2LAogIEZTRXZlbnRTdHJlYW1FdmVudElkIGV2ZW50SWQpIDsKIyA4OTcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZTRXZlbnRzLmgiIDMKZXh0ZXJuIHZvaWQK
RlNFdmVudFN0cmVhbVJldGFpbihGU0V2ZW50U3RyZWFtUmVmIHN0cmVhbVJlZikgOwojIDkxOSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMuaCIgMwpleHRlcm4gdm9p
ZApGU0V2ZW50U3RyZWFtUmVsZWFzZShGU0V2ZW50U3RyZWFtUmVmIHN0cmVhbVJlZikgOwojIDk1
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMuaCIgMwpleHRlcm4g
dm9pZApGU0V2ZW50U3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcCgKICBGU0V2ZW50U3RyZWFtUmVm
IHN0cmVhbVJlZiwKICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCwKICBDRlN0cmluZ1JlZiBydW5Mb29w
TW9kZSkgOwojIDk4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVudHMu
aCIgMwpleHRlcm4gdm9pZApGU0V2ZW50U3RyZWFtVW5zY2hlZHVsZUZyb21SdW5Mb29wKAogIEZT
RXZlbnRTdHJlYW1SZWYgc3RyZWFtUmVmLAogIENGUnVuTG9vcFJlZiBydW5Mb29wLAogIENGU3Ry
aW5nUmVmIHJ1bkxvb3BNb2RlKSA7CiMgMTAyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvRlNFdmVudHMuaCIgMwpleHRlcm4gdm9pZApGU0V2ZW50U3RyZWFtU2V0RGlzcGF0Y2hR
dWV1ZSgKICBGU0V2ZW50U3RyZWFtUmVmIHN0cmVhbVJlZiwKICBkaXNwYXRjaF9xdWV1ZV90IHEp
IDsKIyAxMDU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GU0V2ZW50cy5oIiAz
CmV4dGVybiB2b2lkCkZTRXZlbnRTdHJlYW1JbnZhbGlkYXRlKEZTRXZlbnRTdHJlYW1SZWYgc3Ry
ZWFtUmVmKSA7CiMgMTA4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvRlNFdmVu
dHMuaCIgMwpleHRlcm4gQm9vbGVhbgpGU0V2ZW50U3RyZWFtU3RhcnQoRlNFdmVudFN0cmVhbVJl
ZiBzdHJlYW1SZWYpIDsKIyAxMTE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9G
U0V2ZW50cy5oIiAzCmV4dGVybiBGU0V2ZW50U3RyZWFtRXZlbnRJZApGU0V2ZW50U3RyZWFtRmx1
c2hBc3luYyhGU0V2ZW50U3RyZWFtUmVmIHN0cmVhbVJlZikgOwojIDExNDQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DYXJib25D
b3JlLmZyYW1ld29yay9IZWFkZXJzL0ZTRXZlbnRzLmgiIDMKZXh0ZXJuIHZvaWQKRlNFdmVudFN0
cmVhbUZsdXNoU3luYyhGU0V2ZW50U3RyZWFtUmVmIHN0cmVhbVJlZikgOwojIDExNjkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
YXJib25Db3JlLmZyYW1ld29yay9IZWFkZXJzL0ZTRXZlbnRzLmgiIDMKZXh0ZXJuIHZvaWQKRlNF
dmVudFN0cmVhbVN0b3AoRlNFdmVudFN0cmVhbVJlZiBzdHJlYW1SZWYpIDsKIyAxMTkzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GU0V2ZW50cy5oIiAzCmV4dGVybiB2b2lkCkZT
RXZlbnRTdHJlYW1TaG93KENvbnN0RlNFdmVudFN0cmVhbVJlZiBzdHJlYW1SZWYpIDsKIyAxMjEz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsvSGVhZGVycy9GU0V2ZW50cy5oIiAzCmV4dGVybiBD
RlN0cmluZ1JlZgpGU0V2ZW50U3RyZWFtQ29weURlc2NyaXB0aW9uKENvbnN0RlNFdmVudFN0cmVh
bVJlZiBzdHJlYW1SZWYpIDsKCgoKCgoKCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDIxOSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NhcmJvbkNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uQ29yZS5oIiAyIDMKIyAyMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0FFLmZyYW1ld29yay9IZWFkZXJzL0FFLmgiIDIgMwoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3Jr
L0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVy
cy9BRURhdGFNb2RlbC5oIiAzCiNkZWZpbmUgX19BRURBVEFNT0RFTF9fIAojIDMxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUu
ZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21h
IHBhY2socHVzaCwgMikKCgplbnVtIHsKICB0eXBlQm9vbGVhbiA9ICdib29sJywKICB0eXBlQ2hh
ciA9ICdURVhUJwp9OwoKCgoKCmVudW0gewogIHR5cGVTdHlsZWRVbmljb2RlVGV4dCA9ICdzdXR4
JywKICB0eXBlRW5jb2RlZFN0cmluZyA9ICdlbmNzJywKICB0eXBlVW5pY29kZVRleHQgPSAndXR4
dCcsCiAgdHlwZUNTdHJpbmcgPSAnY3N0cicsCiAgdHlwZVBTdHJpbmcgPSAncHN0cicKfTsKCgoK
CmVudW0gewogIHR5cGVVVEYxNkV4dGVybmFsUmVwcmVzZW50YXRpb24gPSAndXQxNicsCiAgdHlw
ZVVURjhUZXh0ID0gJ3V0ZjgnCn07CgoKZW51bSB7CiAgdHlwZVNJbnQxNiA9ICdzaG9yJywKICB0
eXBlVUludDE2ID0gJ3VzaHInLAogIHR5cGVTSW50MzIgPSAnbG9uZycsCiAgdHlwZVVJbnQzMiA9
ICdtYWduJywKICB0eXBlU0ludDY0ID0gJ2NvbXAnLAogIHR5cGVVSW50NjQgPSAndWNvbScsCiAg
dHlwZUlFRUUzMkJpdEZsb2F0aW5nUG9pbnQgPSAnc2luZycsCiAgdHlwZUlFRUU2NEJpdEZsb2F0
aW5nUG9pbnQgPSAnZG91YicsCiAgdHlwZTEyOEJpdEZsb2F0aW5nUG9pbnQgPSAnbGRibCcsCiAg
dHlwZURlY2ltYWxTdHJ1Y3QgPSAnZGVjbScKfTsKIyAxMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVh
ZGVycy9BRURhdGFNb2RlbC5oIiAzCmVudW0gewogIHR5cGVBRUxpc3QgPSAnbGlzdCcsCiAgdHlw
ZUFFUmVjb3JkID0gJ3JlY28nLAogIHR5cGVBcHBsZUV2ZW50ID0gJ2FldnQnLAogIHR5cGVFdmVu
dFJlY29yZCA9ICdldnJjJywKICB0eXBlVHJ1ZSA9ICd0cnVlJywKICB0eXBlRmFsc2UgPSAnZmFs
cycsCiAgdHlwZUFsaWFzID0gJ2FsaXMnLAogIHR5cGVFbnVtZXJhdGVkID0gJ2VudW0nLAogIHR5
cGVUeXBlID0gJ3R5cGUnLAogIHR5cGVBcHBQYXJhbWV0ZXJzID0gJ2FwcGEnLAogIHR5cGVQcm9w
ZXJ0eSA9ICdwcm9wJywKICB0eXBlRlNSZWYgPSAnZnNyZicsCiAgdHlwZUZpbGVVUkwgPSAnZnVy
bCcsCiAgdHlwZUJvb2ttYXJrRGF0YSA9ICdibXJrJywKICB0eXBlS2V5d29yZCA9ICdrZXl3JywK
ICB0eXBlU2VjdGlvbkggPSAnc2VjdCcsCiAgdHlwZVdpbGRDYXJkID0gJyoqKionLAogIHR5cGVB
cHBsU2lnbmF0dXJlID0gJ3NpZ24nLAogIHR5cGVRRFJlY3RhbmdsZSA9ICdxZHJ0JywKICB0eXBl
Rml4ZWQgPSAnZml4ZCcsCiAgdHlwZVByb2Nlc3NTZXJpYWxOdW1iZXIgPSAncHNuICcsCiAgdHlw
ZUFwcGxpY2F0aW9uVVJMID0gJ2FwcmwnLAogIHR5cGVOdWxsID0gJ251bGwnCn07CiMgMTU2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwplbnVtIHsKICB0eXBlQ0ZB
dHRyaWJ1dGVkU3RyaW5nUmVmID0gJ2NmYXMnLAogIHR5cGVDRk11dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nUmVmID0gJ2NmYWEnLAogIHR5cGVDRlN0cmluZ1JlZiA9ICdjZnN0JywKICB0eXBlQ0ZNdXRh
YmxlU3RyaW5nUmVmID0gJ2NmbXMnLAogIHR5cGVDRkFycmF5UmVmID0gJ2NmYXInLAogIHR5cGVD
Rk11dGFibGVBcnJheVJlZiA9ICdjZm1hJywKICB0eXBlQ0ZEaWN0aW9uYXJ5UmVmID0gJ2NmZGMn
LAogIHR5cGVDRk11dGFibGVEaWN0aW9uYXJ5UmVmID0gJ2NmbWQnLAogIHR5cGVDRk51bWJlclJl
ZiA9ICdjZm5iJywKICB0eXBlQ0ZCb29sZWFuUmVmID0gJ2NmdGYnLAogIHR5cGVDRlR5cGVSZWYg
PSAnY2Z0eScKfTsKCgplbnVtIHsKICB0eXBlS2VybmVsUHJvY2Vzc0lEID0gJ2twaWQnLAogIHR5
cGVNYWNoUG9ydCA9ICdwb3J0Jwp9OwoKCmVudW0gewogIHR5cGVBcHBsaWNhdGlvbkJ1bmRsZUlE
ID0gJ2J1bmQnCn07CgoKZW51bSB7CiAga2V5VHJhbnNhY3Rpb25JREF0dHIgPSAndHJhbicsCiAg
a2V5UmV0dXJuSURBdHRyID0gJ3J0aWQnLAogIGtleUV2ZW50Q2xhc3NBdHRyID0gJ2V2Y2wnLAog
IGtleUV2ZW50SURBdHRyID0gJ2V2aWQnLAogIGtleUFkZHJlc3NBdHRyID0gJ2FkZHInLAogIGtl
eU9wdGlvbmFsS2V5d29yZEF0dHIgPSAnb3B0aycsCiAga2V5VGltZW91dEF0dHIgPSAndGltbycs
CiAga2V5SW50ZXJhY3RMZXZlbEF0dHIgPSAnaW50ZScsCiAga2V5RXZlbnRTb3VyY2VBdHRyID0g
J2VzcmMnLAogIGtleU1pc3NlZEtleXdvcmRBdHRyID0gJ21pc3MnLAogIGtleU9yaWdpbmFsQWRk
cmVzc0F0dHIgPSAnZnJvbScsCiAga2V5QWNjZXB0VGltZW91dEF0dHIgPSAnYWN0bScsCiAga2V5
UmVwbHlSZXF1ZXN0ZWRBdHRyID0gJ3JlcHEnLAogIGtleVNlbmRlckVVSURBdHRyID0gJ3NlaWQn
LAogIGtleVNlbmRlckVHSURBdHRyID0gJ3NnaWQnLAogIGtleVNlbmRlclVJREF0dHIgPSAndWlk
cycsCiAga2V5U2VuZGVyR0lEQXR0ciA9ICdnaWRzJywKICBrZXlTZW5kZXJQSURBdHRyID0gJ3Nw
aWQnCn07CgoKZW51bSB7CiAga0FFRGVidWdQT1NUSGVhZGVyID0gKDEgPDwgMCksCiAga0FFRGVi
dWdSZXBseUhlYWRlciA9ICgxIDw8IDEpLAogIGtBRURlYnVnWE1MUmVxdWVzdCA9ICgxIDw8IDIp
LAogIGtBRURlYnVnWE1MUmVzcG9uc2UgPSAoMSA8PCAzKSwKICBrQUVEZWJ1Z1hNTERlYnVnQWxs
ID0gKGludCkweEZGRkZGRkZGCn07CgoKCgoKZW51bSB7CiAga1NPQVAxOTk5U2NoZW1hID0gJ3Nz
OTknLAogIGtTT0FQMjAwMVNjaGVtYSA9ICdzczAxJwp9OwoKZW51bSB7CgogIGtleVVzZXJOYW1l
QXR0ciA9ICd1bmFtJywKICBrZXlVc2VyUGFzc3dvcmRBdHRyID0gJ3Bhc3MnLAogIGtleURpc2Fi
bGVBdXRoZW50aWNhdGlvbkF0dHIgPSAnYXV0aCcsCgoKICBrZXlYTUxEZWJ1Z2dpbmdBdHRyID0g
J3hkYmcnLAoKICBrQUVSUENDbGFzcyA9ICdycGMgJywKICBrQUVYTUxSUENTY2hlbWUgPSAnUlBD
MicsCiAga0FFU09BUFNjaGVtZSA9ICdTT0FQJywKICBrQUVTaGFyZWRTY3JpcHRIYW5kbGVyID0g
J3dzY3AnLAoKICBrZXlSUENNZXRob2ROYW1lID0gJ21ldGgnLAogIGtleVJQQ01ldGhvZFBhcmFt
ID0gJ3Bhcm0nLAogIGtleVJQQ01ldGhvZFBhcmFtT3JkZXIgPSAnL29yZCcsCgogIGtleUFFUE9T
VEhlYWRlckRhdGEgPSAncGhlZCcsCiAga2V5QUVSZXBseUhlYWRlckRhdGEgPSAncmhlZCcsCiAg
a2V5QUVYTUxSZXF1ZXN0RGF0YSA9ICd4cmVxJywKICBrZXlBRVhNTFJlcGx5RGF0YSA9ICd4cmVw
JywKCiAga2V5QWRkaXRpb25hbEhUVFBIZWFkZXJzID0gJ2FoZWQnLAogIGtleVNPQVBBY3Rpb24g
PSAnc2FjdCcsCiAga2V5U09BUE1ldGhvZE5hbWVTcGFjZSA9ICdtc3BjJywKICBrZXlTT0FQTWV0
aG9kTmFtZVNwYWNlVVJJID0gJ21zcHUnLAogIGtleVNPQVBTY2hlbWFWZXJzaW9uID0gJ3NzY2gn
Cn07CiMgMjY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwplbnVt
IHsKICBrZXlTT0FQU3RydWN0dXJlTWV0YURhdGEgPSAnL3NtZCcsCiAga2V5U09BUFNNRE5hbWVz
cGFjZSA9ICdzc25zJywKICBrZXlTT0FQU01ETmFtZXNwYWNlVVJJID0gJ3NzbnUnLAogIGtleVNP
QVBTTURUeXBlID0gJ3NzdHAnCn07CgoKCgoKCmVudW0gewoKICBrQUVVc2VIVFRQUHJveHlBdHRy
ID0gJ3h1cHInLAoKICBrQUVIVFRQUHJveHlQb3J0QXR0ciA9ICd4aHRwJywKICBrQUVIVFRQUHJv
eHlIb3N0QXR0ciA9ICd4aHRoJwp9OwoKCgoKCgplbnVtIHsKICBrQUVTb2NrczRQcm90b2NvbCA9
IDQsCiAga0FFU29ja3M1UHJvdG9jb2wgPSA1Cn07CgplbnVtIHsKICBrQUVVc2VTb2Nrc0F0dHIg
PSAneHNjcycsCgogIGtBRVNvY2tzUHJveHlBdHRyID0gJ3hzb2snLAoKICBrQUVTb2Nrc0hvc3RB
dHRyID0gJ3hzaHMnLAogIGtBRVNvY2tzUG9ydEF0dHIgPSAneHNocCcsCiAga0FFU29ja3NVc2Vy
QXR0ciA9ICd4c2h1JywKCiAga0FFU29ja3NQYXNzd29yZEF0dHIgPSAneHNodycKfTsKCgoKZW51
bSB7CiAga0FFRGVzY0xpc3RGYWN0b3JOb25lID0gMCwKICBrQUVEZXNjTGlzdEZhY3RvclR5cGUg
PSA0LAogIGtBRURlc2NMaXN0RmFjdG9yVHlwZUFuZFNpemUgPSA4Cn07CgoKZW51bSB7CgogIGtB
dXRvR2VuZXJhdGVSZXR1cm5JRCA9IC0xLAoKICBrQW55VHJhbnNhY3Rpb25JRCA9IDAKfTsKCgp0
eXBlZGVmIFJlc1R5cGUgRGVzY1R5cGU7CnR5cGVkZWYgRm91ckNoYXJDb2RlIEFFS2V5d29yZDsK
CnR5cGVkZWYgc3RydWN0IE9wYXF1ZUFFRGF0YVN0b3JhZ2VUeXBlKiBBRURhdGFTdG9yYWdlVHlw
ZTsKCgoKCnR5cGVkZWYgQUVEYXRhU3RvcmFnZVR5cGUgKiBBRURhdGFTdG9yYWdlOwpzdHJ1Y3Qg
QUVEZXNjIHsKICBEZXNjVHlwZSBkZXNjcmlwdG9yVHlwZTsKICBBRURhdGFTdG9yYWdlIGRhdGFI
YW5kbGU7Cn07CnR5cGVkZWYgc3RydWN0IEFFRGVzYyBBRURlc2M7CnR5cGVkZWYgQUVEZXNjICog
QUVEZXNjUHRyOwpzdHJ1Y3QgQUVLZXlEZXNjIHsKICBBRUtleXdvcmQgZGVzY0tleTsKICBBRURl
c2MgZGVzY0NvbnRlbnQ7Cn07CnR5cGVkZWYgc3RydWN0IEFFS2V5RGVzYyBBRUtleURlc2M7CgoK
dHlwZWRlZiBBRURlc2MgQUVEZXNjTGlzdDsKCnR5cGVkZWYgQUVEZXNjTGlzdCBBRVJlY29yZDsK
CnR5cGVkZWYgQUVEZXNjIEFFQWRkcmVzc0Rlc2M7Cgp0eXBlZGVmIEFFUmVjb3JkIEFwcGxlRXZl
bnQ7CnR5cGVkZWYgQXBwbGVFdmVudCAqIEFwcGxlRXZlbnRQdHI7CnR5cGVkZWYgU0ludDE2IEFF
UmV0dXJuSUQ7CnR5cGVkZWYgU0ludDMyIEFFVHJhbnNhY3Rpb25JRDsKdHlwZWRlZiBGb3VyQ2hh
ckNvZGUgQUVFdmVudENsYXNzOwp0eXBlZGVmIEZvdXJDaGFyQ29kZSBBRUV2ZW50SUQ7CnR5cGVk
ZWYgU0ludDggQUVBcnJheVR5cGU7CmVudW0gewogIGtBRURhdGFBcnJheSA9IDAsCiAga0FFUGFj
a2VkQXJyYXkgPSAxLAogIGtBRURlc2NBcnJheSA9IDMsCiAga0FFS2V5RGVzY0FycmF5ID0gNAp9
OwoKCmVudW0gewogIGtBRUhhbmRsZUFycmF5ID0gMgp9OwoKdW5pb24gQUVBcnJheURhdGEgewog
IFNJbnQxNiBrQUVEYXRhQXJyYXlbMV07CiAgY2hhciBrQUVQYWNrZWRBcnJheVsxXTsKICBIYW5k
bGUga0FFSGFuZGxlQXJyYXlbMV07CiAgQUVEZXNjIGtBRURlc2NBcnJheVsxXTsKICBBRUtleURl
c2Mga0FFS2V5RGVzY0FycmF5WzFdOwp9Owp0eXBlZGVmIHVuaW9uIEFFQXJyYXlEYXRhIEFFQXJy
YXlEYXRhOwp0eXBlZGVmIEFFQXJyYXlEYXRhICogQUVBcnJheURhdGFQb2ludGVyOwoKCgoKdHlw
ZWRlZiBTSW50MTYgQUVTZW5kUHJpb3JpdHk7CmVudW0gewogIGtBRU5vcm1hbFByaW9yaXR5ID0g
MHgwMDAwMDAwMCwKICBrQUVIaWdoUHJpb3JpdHkgPSAweDAwMDAwMDAxCn07CgoKdHlwZWRlZiBT
SW50MzIgQUVTZW5kTW9kZTsKZW51bSB7CiAga0FFTm9SZXBseSA9IDB4MDAwMDAwMDEsCiAga0FF
UXVldWVSZXBseSA9IDB4MDAwMDAwMDIsCiAga0FFV2FpdFJlcGx5ID0gMHgwMDAwMDAwMywKICBr
QUVEb250UmVjb25uZWN0ID0gMHgwMDAwMDA4MCwKICBrQUVXYW50UmVjZWlwdCA9IDB4MDAwMDAy
MDAsCiAga0FFTmV2ZXJJbnRlcmFjdCA9IDB4MDAwMDAwMTAsCiAga0FFQ2FuSW50ZXJhY3QgPSAw
eDAwMDAwMDIwLAogIGtBRUFsd2F5c0ludGVyYWN0ID0gMHgwMDAwMDAzMCwKICBrQUVDYW5Td2l0
Y2hMYXllciA9IDB4MDAwMDAwNDAsCiAga0FFRG9udFJlY29yZCA9IDB4MDAwMDEwMDAsCiAga0FF
RG9udEV4ZWN1dGUgPSAweDAwMDAyMDAwLAogIGtBRVByb2Nlc3NOb25SZXBseUV2ZW50cyA9IDB4
MDAwMDgwMDAKfTsKCgoKZW51bSB7CiAga0FFRGVmYXVsdFRpbWVvdXQgPSAtMSwKICBrTm9UaW1l
T3V0ID0gLTIKfTsKCgoKCgp0eXBlZGVmIE9TRXJyICggKiBBRUNvZXJjZURlc2NQcm9jUHRyKShj
b25zdCBBRURlc2MgKmZyb21EZXNjLCBEZXNjVHlwZSB0b1R5cGUsIFNSZWZDb24gaGFuZGxlclJl
ZmNvbiwgQUVEZXNjICp0b0Rlc2MpOwp0eXBlZGVmIE9TRXJyICggKiBBRUNvZXJjZVB0clByb2NQ
dHIpKERlc2NUeXBlIHR5cGVDb2RlLCBjb25zdCB2b2lkICpkYXRhUHRyLCBTaXplIGRhdGFTaXpl
LCBEZXNjVHlwZSB0b1R5cGUsIFNSZWZDb24gaGFuZGxlclJlZmNvbiwgQUVEZXNjICpyZXN1bHQp
Owp0eXBlZGVmIEFFQ29lcmNlRGVzY1Byb2NQdHIgQUVDb2VyY2VEZXNjVVBQOwp0eXBlZGVmIEFF
Q29lcmNlUHRyUHJvY1B0ciBBRUNvZXJjZVB0clVQUDsKIyA0MzEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsv
SGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiBBRUNvZXJjZURlc2NVUFAKTmV3QUVDb2Vy
Y2VEZXNjVVBQKEFFQ29lcmNlRGVzY1Byb2NQdHIgdXNlclJvdXRpbmUpIDsKIyA0NDIgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9B
RS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiBBRUNvZXJjZVB0clVQ
UApOZXdBRUNvZXJjZVB0clVQUChBRUNvZXJjZVB0clByb2NQdHIgdXNlclJvdXRpbmUpIDsKIyA0
NTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiB2b2lk
CkRpc3Bvc2VBRUNvZXJjZURlc2NVUFAoQUVDb2VyY2VEZXNjVVBQIHVzZXJVUFApIDsKIyA0NjQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiB2b2lkCkRp
c3Bvc2VBRUNvZXJjZVB0clVQUChBRUNvZXJjZVB0clVQUCB1c2VyVVBQKSA7CiMgNDc1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
QUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gT1NFcnIKSW52b2tl
QUVDb2VyY2VEZXNjVVBQKAogIGNvbnN0IEFFRGVzYyAqIGZyb21EZXNjLAogIERlc2NUeXBlIHRv
VHlwZSwKICBTUmVmQ29uIGhhbmRsZXJSZWZjb24sCiAgQUVEZXNjICogdG9EZXNjLAogIEFFQ29l
cmNlRGVzY1VQUCB1c2VyVVBQKSA7CiMgNDkxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVE
YXRhTW9kZWwuaCIgMwpleHRlcm4gT1NFcnIKSW52b2tlQUVDb2VyY2VQdHJVUFAoCiAgRGVzY1R5
cGUgdHlwZUNvZGUsCiAgY29uc3Qgdm9pZCAqIGRhdGFQdHIsCiAgU2l6ZSBkYXRhU2l6ZSwKICBE
ZXNjVHlwZSB0b1R5cGUsCiAgU1JlZkNvbiBoYW5kbGVyUmVmY29uLAogIEFFRGVzYyAqIHJlc3Vs
dCwKICBBRUNvZXJjZVB0clVQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgQUVDb2VyY2VEZXNj
VVBQIE5ld0FFQ29lcmNlRGVzY1VQUChBRUNvZXJjZURlc2NQcm9jUHRyIHVzZXJSb3V0aW5lKSB7
IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIEFFQ29lcmNlUHRyVVBQIE5ld0FFQ29l
cmNlUHRyVVBQKEFFQ29lcmNlUHRyUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJv
dXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VBRUNvZXJjZURlc2NVUFAoQUVDb2VyY2VE
ZXNjVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VBRUNvZXJjZVB0clVQUChBRUNvZXJj
ZVB0clVQUCkgeyB9CiAgICBpbmxpbmUgT1NFcnIgSW52b2tlQUVDb2VyY2VEZXNjVVBQKGNvbnN0
IEFFRGVzYyAqIGZyb21EZXNjLCBEZXNjVHlwZSB0b1R5cGUsIFNSZWZDb24gaGFuZGxlclJlZmNv
biwgQUVEZXNjICogdG9EZXNjLCBBRUNvZXJjZURlc2NVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1
c2VyVVBQKShmcm9tRGVzYywgdG9UeXBlLCBoYW5kbGVyUmVmY29uLCB0b0Rlc2MpOyB9CiAgICBp
bmxpbmUgT1NFcnIgSW52b2tlQUVDb2VyY2VQdHJVUFAoRGVzY1R5cGUgdHlwZUNvZGUsIGNvbnN0
IHZvaWQgKiBkYXRhUHRyLCBTaXplIGRhdGFTaXplLCBEZXNjVHlwZSB0b1R5cGUsIFNSZWZDb24g
aGFuZGxlclJlZmNvbiwgQUVEZXNjICogcmVzdWx0LCBBRUNvZXJjZVB0clVQUCB1c2VyVVBQKSB7
IHJldHVybiAoKnVzZXJVUFApKHR5cGVDb2RlLCBkYXRhUHRyLCBkYXRhU2l6ZSwgdG9UeXBlLCBo
YW5kbGVyUmVmY29uLCByZXN1bHQpOyB9CiMgNTIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMv
QUVEYXRhTW9kZWwuaCIgMwp0eXBlZGVmIEFFQ29lcmNlRGVzY1VQUCBBRUNvZXJjaW9uSGFuZGxl
clVQUDsKIyA1ODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4
dGVybiBPU0VycgpBRUluc3RhbGxDb2VyY2lvbkhhbmRsZXIoCiAgRGVzY1R5cGUgZnJvbVR5cGUs
CiAgRGVzY1R5cGUgdG9UeXBlLAogIEFFQ29lcmNpb25IYW5kbGVyVVBQIGhhbmRsZXIsCiAgU1Jl
ZkNvbiBoYW5kbGVyUmVmY29uLAogIEJvb2xlYW4gZnJvbVR5cGVJc0Rlc2MsCiAgQm9vbGVhbiBp
c1N5c0hhbmRsZXIpIDsKIyA2MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2Rl
bC5oIiAzCmV4dGVybiBPU0VycgpBRVJlbW92ZUNvZXJjaW9uSGFuZGxlcigKICBEZXNjVHlwZSBm
cm9tVHlwZSwKICBEZXNjVHlwZSB0b1R5cGUsCiAgQUVDb2VyY2lvbkhhbmRsZXJVUFAgaGFuZGxl
ciwKICBCb29sZWFuIGlzU3lzSGFuZGxlcikgOwojIDY5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFk
ZXJzL0FFRGF0YU1vZGVsLmgiIDMKZXh0ZXJuIE9TRXJyCkFFR2V0Q29lcmNpb25IYW5kbGVyKAog
IERlc2NUeXBlIGZyb21UeXBlLAogIERlc2NUeXBlIHRvVHlwZSwKICBBRUNvZXJjaW9uSGFuZGxl
clVQUCAqIGhhbmRsZXIsCiAgU1JlZkNvbiAqIGhhbmRsZXJSZWZjb24sCiAgQm9vbGVhbiAqIGZy
b21UeXBlSXNEZXNjLAogIEJvb2xlYW4gaXNTeXNIYW5kbGVyKSA7CiMgNzQwICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJh
bWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gT1NFcnIKQUVDb2VyY2VQdHIo
CiAgRGVzY1R5cGUgdHlwZUNvZGUsCiAgY29uc3Qgdm9pZCAqIGRhdGFQdHIsCiAgU2l6ZSBkYXRh
U2l6ZSwKICBEZXNjVHlwZSB0b1R5cGUsCiAgQUVEZXNjICogcmVzdWx0KSA7CiMgNzgwICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
QUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gT1NFcnIKQUVDb2Vy
Y2VEZXNjKAogIGNvbnN0IEFFRGVzYyAqIHRoZUFFRGVzYywKICBEZXNjVHlwZSB0b1R5cGUsCiAg
QUVEZXNjICogcmVzdWx0KSA7CiMgODE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRh
TW9kZWwuaCIgMwpleHRlcm4gdm9pZApBRUluaXRpYWxpemVEZXNjKEFFRGVzYyAqIGRlc2MpIDsK
CgoKCiAgICBpbmxpbmUgdm9pZCBBRUluaXRpYWxpemVEZXNjSW5saW5lKEFFRGVzYyogZCkgeyBk
LT5kZXNjcmlwdG9yVHlwZSA9IHR5cGVOdWxsOyBkLT5kYXRhSGFuZGxlID0gX19udWxsOyB9CiMg
ODcxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gT1NF
cnIKQUVDcmVhdGVEZXNjKAogIERlc2NUeXBlIHR5cGVDb2RlLAogIGNvbnN0IHZvaWQgKiBkYXRh
UHRyLAogIFNpemUgZGF0YVNpemUsCiAgQUVEZXNjICogcmVzdWx0KSA7CiMgOTEzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUu
ZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gT1NFcnIKQUVEaXNwb3Nl
RGVzYyhBRURlc2MgKiB0aGVBRURlc2MpIDsKIyA5NTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVy
cy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiBPU0VycgpBRUR1cGxpY2F0ZURlc2MoCiAgY29uc3Qg
QUVEZXNjICogdGhlQUVEZXNjLAogIEFFRGVzYyAqIHJlc3VsdCkgOwoKCgp0eXBlZGVmIHZvaWQg
KCAqIEFFRGlzcG9zZUV4dGVybmFsUHJvY1B0cikoY29uc3Qgdm9pZCAqZGF0YVB0ciwgU2l6ZSBk
YXRhTGVuZ3RoLCBTUmVmQ29uIHJlZmNvbik7CnR5cGVkZWYgQUVEaXNwb3NlRXh0ZXJuYWxQcm9j
UHRyIEFFRGlzcG9zZUV4dGVybmFsVVBQOwojIDEwMzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVy
cy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiBPU1N0YXR1cwpBRUNyZWF0ZURlc2NGcm9tRXh0ZXJu
YWxQdHIoCiAgT1NUeXBlIGRlc2NyaXB0b3JUeXBlLAogIGNvbnN0IHZvaWQgKiBkYXRhUHRyLAog
IFNpemUgZGF0YUxlbmd0aCwKICBBRURpc3Bvc2VFeHRlcm5hbFVQUCBkaXNwb3NlQ2FsbGJhY2ss
CiAgU1JlZkNvbiBkaXNwb3NlUmVmY29uLAogIEFFRGVzYyAqIHRoZURlc2MpIDsKIyAxMDk0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gT1NFcnIKQUVD
cmVhdGVMaXN0KAogIGNvbnN0IHZvaWQgKiBmYWN0b3JpbmdQdHIsCiAgU2l6ZSBmYWN0b3JlZFNp
emUsCiAgQm9vbGVhbiBpc1JlY29yZCwKICBBRURlc2NMaXN0ICogcmVzdWx0TGlzdCkgOwojIDEx
MjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiBPU0Vy
cgpBRUNvdW50SXRlbXMoCiAgY29uc3QgQUVEZXNjTGlzdCAqIHRoZUFFRGVzY0xpc3QsCiAgbG9u
ZyAqIHRoZUNvdW50KSA7CiMgMTE3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFRGF0YU1v
ZGVsLmgiIDMKZXh0ZXJuIE9TRXJyCkFFUHV0UHRyKAogIEFFRGVzY0xpc3QgKiB0aGVBRURlc2NM
aXN0LAogIGxvbmcgaW5kZXgsCiAgRGVzY1R5cGUgdHlwZUNvZGUsCiAgY29uc3Qgdm9pZCAqIGRh
dGFQdHIsCiAgU2l6ZSBkYXRhU2l6ZSkgOwojIDEyMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVy
cy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiBPU0VycgpBRVB1dERlc2MoCiAgQUVEZXNjTGlzdCAq
IHRoZUFFRGVzY0xpc3QsCiAgbG9uZyBpbmRleCwKICBjb25zdCBBRURlc2MgKiB0aGVBRURlc2Mp
IDsKIyAxMjkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRl
cm4gT1NFcnIKQUVHZXROdGhQdHIoCiAgY29uc3QgQUVEZXNjTGlzdCAqIHRoZUFFRGVzY0xpc3Qs
CiAgbG9uZyBpbmRleCwKICBEZXNjVHlwZSBkZXNpcmVkVHlwZSwKICBBRUtleXdvcmQgKiB0aGVB
RUtleXdvcmQsCiAgRGVzY1R5cGUgKiB0eXBlQ29kZSwKICB2b2lkICogZGF0YVB0ciwKICBTaXpl
IG1heGltdW1TaXplLAogIFNpemUgKiBhY3R1YWxTaXplKSA7CiMgMTM1NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1l
d29yay9IZWFkZXJzL0FFRGF0YU1vZGVsLmgiIDMKZXh0ZXJuIE9TRXJyCkFFR2V0TnRoRGVzYygK
ICBjb25zdCBBRURlc2NMaXN0ICogdGhlQUVEZXNjTGlzdCwKICBsb25nIGluZGV4LAogIERlc2NU
eXBlIGRlc2lyZWRUeXBlLAogIEFFS2V5d29yZCAqIHRoZUFFS2V5d29yZCwKICBBRURlc2MgKiBy
ZXN1bHQpIDsKIyAxNDAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIg
MwpleHRlcm4gT1NFcnIKQUVTaXplT2ZOdGhJdGVtKAogIGNvbnN0IEFFRGVzY0xpc3QgKiB0aGVB
RURlc2NMaXN0LAogIGxvbmcgaW5kZXgsCiAgRGVzY1R5cGUgKiB0eXBlQ29kZSwKICBTaXplICog
ZGF0YVNpemUpIDsKIyAxNDY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwu
aCIgMwpleHRlcm4gT1NFcnIKQUVHZXRBcnJheSgKICBjb25zdCBBRURlc2NMaXN0ICogdGhlQUVE
ZXNjTGlzdCwKICBBRUFycmF5VHlwZSBhcnJheVR5cGUsCiAgQUVBcnJheURhdGFQb2ludGVyIGFy
cmF5UHRyLAogIFNpemUgbWF4aW11bVNpemUsCiAgRGVzY1R5cGUgKiBpdGVtVHlwZSwKICBTaXpl
ICogaXRlbVNpemUsCiAgbG9uZyAqIGl0ZW1Db3VudCkgOwojIDE1MzIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdv
cmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiBPU0VycgpBRVB1dEFycmF5KAogIEFF
RGVzY0xpc3QgKiB0aGVBRURlc2NMaXN0LAogIEFFQXJyYXlUeXBlIGFycmF5VHlwZSwKICBjb25z
dCBBRUFycmF5RGF0YSAqIGFycmF5UHRyLAogIERlc2NUeXBlIGl0ZW1UeXBlLAogIFNpemUgaXRl
bVNpemUsCiAgbG9uZyBpdGVtQ291bnQpIDsKIyAxNTcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRl
cnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gT1NFcnIKQUVEZWxldGVJdGVtKAogIEFFRGVzY0xp
c3QgKiB0aGVBRURlc2NMaXN0LAogIGxvbmcgaW5kZXgpIDsKIyAxNTk3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3
b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gQm9vbGVhbgpBRUNoZWNrSXNSZWNv
cmQoY29uc3QgQUVEZXNjICogdGhlRGVzYykgOwojIDE2MTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVh
ZGVycy9BRURhdGFNb2RlbC5oIiAzCiNkZWZpbmUgQUVQdXRLZXlQdHIodGhlQUVSZWNvcmQsdGhl
QUVLZXl3b3JkLHR5cGVDb2RlLGRhdGFQdHIsZGF0YVNpemUpIEFFUHV0UGFyYW1QdHIoKHRoZUFF
UmVjb3JkKSwgKHRoZUFFS2V5d29yZCksICh0eXBlQ29kZSksIChkYXRhUHRyKSwgKGRhdGFTaXpl
KSkKCiNkZWZpbmUgQUVQdXRLZXlEZXNjKHRoZUFFUmVjb3JkLHRoZUFFS2V5d29yZCx0aGVBRURl
c2MpIEFFUHV0UGFyYW1EZXNjKCh0aGVBRVJlY29yZCksICh0aGVBRUtleXdvcmQpLCAodGhlQUVE
ZXNjKSkKCiNkZWZpbmUgQUVHZXRLZXlQdHIodGhlQUVSZWNvcmQsdGhlQUVLZXl3b3JkLGRlc2ly
ZWRUeXBlLHR5cGVDb2RlLGRhdGFQdHIsbWF4U2l6ZSxhY3R1YWxTaXplKSBBRUdldFBhcmFtUHRy
KCh0aGVBRVJlY29yZCksICh0aGVBRUtleXdvcmQpLCAoZGVzaXJlZFR5cGUpLCAodHlwZUNvZGUp
LCAoZGF0YVB0ciksIChtYXhTaXplKSwgKGFjdHVhbFNpemUpKQoKI2RlZmluZSBBRUdldEtleURl
c2ModGhlQUVSZWNvcmQsdGhlQUVLZXl3b3JkLGRlc2lyZWRUeXBlLHJlc3VsdCkgQUVHZXRQYXJh
bURlc2MoKHRoZUFFUmVjb3JkKSwgKHRoZUFFS2V5d29yZCksIChkZXNpcmVkVHlwZSksIChyZXN1
bHQpKQoKI2RlZmluZSBBRVNpemVPZktleURlc2ModGhlQUVSZWNvcmQsdGhlQUVLZXl3b3JkLHR5
cGVDb2RlLGRhdGFTaXplKSBBRVNpemVPZlBhcmFtKCh0aGVBRVJlY29yZCksICh0aGVBRUtleXdv
cmQpLCAodHlwZUNvZGUpLCAoZGF0YVNpemUpKQoKI2RlZmluZSBBRURlbGV0ZUtleURlc2ModGhl
QUVSZWNvcmQsdGhlQUVLZXl3b3JkKSBBRURlbGV0ZVBhcmFtKCh0aGVBRVJlY29yZCksICh0aGVB
RUtleXdvcmQpKQojIDE2OTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5o
IiAzCmV4dGVybiBPU0VycgpBRUNyZWF0ZUFwcGxlRXZlbnQoCiAgQUVFdmVudENsYXNzIHRoZUFF
RXZlbnRDbGFzcywKICBBRUV2ZW50SUQgdGhlQUVFdmVudElELAogIGNvbnN0IEFFQWRkcmVzc0Rl
c2MgKiB0YXJnZXQsCiAgQUVSZXR1cm5JRCByZXR1cm5JRCwKICBBRVRyYW5zYWN0aW9uSUQgdHJh
bnNhY3Rpb25JRCwKICBBcHBsZUV2ZW50ICogcmVzdWx0KSA7CiMgMTc0OSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1l
d29yay9IZWFkZXJzL0FFRGF0YU1vZGVsLmgiIDMKZXh0ZXJuIE9TRXJyCkFFUHV0UGFyYW1QdHIo
CiAgQXBwbGVFdmVudCAqIHRoZUFwcGxlRXZlbnQsCiAgQUVLZXl3b3JkIHRoZUFFS2V5d29yZCwK
ICBEZXNjVHlwZSB0eXBlQ29kZSwKICBjb25zdCB2b2lkICogZGF0YVB0ciwKICBTaXplIGRhdGFT
aXplKSA7CiMgMTc4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFRGF0YU1vZGVsLmgiIDMK
ZXh0ZXJuIE9TRXJyCkFFUHV0UGFyYW1EZXNjKAogIEFwcGxlRXZlbnQgKiB0aGVBcHBsZUV2ZW50
LAogIEFFS2V5d29yZCB0aGVBRUtleXdvcmQsCiAgY29uc3QgQUVEZXNjICogdGhlQUVEZXNjKSA7
CiMgMTg4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFRGF0YU1vZGVsLmgiIDMKZXh0ZXJu
IE9TRXJyCkFFR2V0UGFyYW1QdHIoCiAgY29uc3QgQXBwbGVFdmVudCAqIHRoZUFwcGxlRXZlbnQs
CiAgQUVLZXl3b3JkIHRoZUFFS2V5d29yZCwKICBEZXNjVHlwZSBkZXNpcmVkVHlwZSwKICBEZXNj
VHlwZSAqIGFjdHVhbFR5cGUsCiAgdm9pZCAqIGRhdGFQdHIsCiAgU2l6ZSBtYXhpbXVtU2l6ZSwK
ICBTaXplICogYWN0dWFsU2l6ZSkgOwojIDE5NDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9B
RURhdGFNb2RlbC5oIiAzCmV4dGVybiBPU0VycgpBRUdldFBhcmFtRGVzYygKICBjb25zdCBBcHBs
ZUV2ZW50ICogdGhlQXBwbGVFdmVudCwKICBBRUtleXdvcmQgdGhlQUVLZXl3b3JkLAogIERlc2NU
eXBlIGRlc2lyZWRUeXBlLAogIEFFRGVzYyAqIHJlc3VsdCkgOwojIDE5ODcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFt
ZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiBPU0VycgpBRVNpemVPZlBhcmFt
KAogIGNvbnN0IEFwcGxlRXZlbnQgKiB0aGVBcHBsZUV2ZW50LAogIEFFS2V5d29yZCB0aGVBRUtl
eXdvcmQsCiAgRGVzY1R5cGUgKiB0eXBlQ29kZSwKICBTaXplICogZGF0YVNpemUpIDsKIyAyMDE5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gT1NFcnIK
QUVEZWxldGVQYXJhbSgKICBBcHBsZUV2ZW50ICogdGhlQXBwbGVFdmVudCwKICBBRUtleXdvcmQg
dGhlQUVLZXl3b3JkKSA7CiMgMjEwOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFRGF0YU1v
ZGVsLmgiIDMKZXh0ZXJuIE9TRXJyCkFFR2V0QXR0cmlidXRlUHRyKAogIGNvbnN0IEFwcGxlRXZl
bnQgKiB0aGVBcHBsZUV2ZW50LAogIEFFS2V5d29yZCB0aGVBRUtleXdvcmQsCiAgRGVzY1R5cGUg
ZGVzaXJlZFR5cGUsCiAgRGVzY1R5cGUgKiB0eXBlQ29kZSwKICB2b2lkICogZGF0YVB0ciwKICBT
aXplIG1heGltdW1TaXplLAogIFNpemUgKiBhY3R1YWxTaXplKSA7CiMgMjE3MCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZy
YW1ld29yay9IZWFkZXJzL0FFRGF0YU1vZGVsLmgiIDMKZXh0ZXJuIE9TRXJyCkFFR2V0QXR0cmli
dXRlRGVzYygKICBjb25zdCBBcHBsZUV2ZW50ICogdGhlQXBwbGVFdmVudCwKICBBRUtleXdvcmQg
dGhlQUVLZXl3b3JkLAogIERlc2NUeXBlIGRlc2lyZWRUeXBlLAogIEFFRGVzYyAqIHJlc3VsdCkg
OwojIDIyMDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4dGVy
biBPU0VycgpBRVNpemVPZkF0dHJpYnV0ZSgKICBjb25zdCBBcHBsZUV2ZW50ICogdGhlQXBwbGVF
dmVudCwKICBBRUtleXdvcmQgdGhlQUVLZXl3b3JkLAogIERlc2NUeXBlICogdHlwZUNvZGUsCiAg
U2l6ZSAqIGRhdGFTaXplKSA7CiMgMjI1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFRGF0
YU1vZGVsLmgiIDMKZXh0ZXJuIE9TRXJyCkFFUHV0QXR0cmlidXRlUHRyKAogIEFwcGxlRXZlbnQg
KiB0aGVBcHBsZUV2ZW50LAogIEFFS2V5d29yZCB0aGVBRUtleXdvcmQsCiAgRGVzY1R5cGUgdHlw
ZUNvZGUsCiAgY29uc3Qgdm9pZCAqIGRhdGFQdHIsCiAgU2l6ZSBkYXRhU2l6ZSkgOwojIDIzMDIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiBPU0VycgpB
RVB1dEF0dHJpYnV0ZURlc2MoCiAgQXBwbGVFdmVudCAqIHRoZUFwcGxlRXZlbnQsCiAgQUVLZXl3
b3JkIHRoZUFFS2V5d29yZCwKICBjb25zdCBBRURlc2MgKiB0aGVBRURlc2MpIDsKIyAyMzQyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gU2l6ZQpBRVNp
emVPZkZsYXR0ZW5lZERlc2MoY29uc3QgQUVEZXNjICogdGhlQUVEZXNjKSA7CiMgMjM4OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0FFLmZyYW1ld29yay9IZWFkZXJzL0FFRGF0YU1vZGVsLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFF
RmxhdHRlbkRlc2MoCiAgY29uc3QgQUVEZXNjICogdGhlQUVEZXNjLAogIFB0ciBidWZmZXIsCiAg
U2l6ZSBidWZmZXJTaXplLAogIFNpemUgKiBhY3R1YWxTaXplKSA7CiMgMjQyNiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZy
YW1ld29yay9IZWFkZXJzL0FFRGF0YU1vZGVsLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFFVW5mbGF0
dGVuRGVzYygKICBjb25zdCB2b2lkICogYnVmZmVyLAogIEFFRGVzYyAqIHJlc3VsdCkgOwojIDI0
NzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiBPU0Vy
cgpBRUdldERlc2NEYXRhKAogIGNvbnN0IEFFRGVzYyAqIHRoZUFFRGVzYywKICB2b2lkICogZGF0
YVB0ciwKICBTaXplIG1heGltdW1TaXplKSA7CiMgMjQ5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFk
ZXJzL0FFRGF0YU1vZGVsLmgiIDMKZXh0ZXJuIFNpemUKQUVHZXREZXNjRGF0YVNpemUoY29uc3Qg
QUVEZXNjICogdGhlQUVEZXNjKSA7CiMgMjUzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FF
RGF0YU1vZGVsLmgiIDMKZXh0ZXJuIE9TRXJyCkFFUmVwbGFjZURlc2NEYXRhKAogIERlc2NUeXBl
IHR5cGVDb2RlLAogIGNvbnN0IHZvaWQgKiBkYXRhUHRyLAogIFNpemUgZGF0YVNpemUsCiAgQUVE
ZXNjICogdGhlQUVEZXNjKSA7CiMgMjU3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFRGF0
YU1vZGVsLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFFR2V0RGVzY0RhdGFSYW5nZSgKICBjb25zdCBB
RURlc2MgKiBkYXRhRGVzYywKICB2b2lkICogYnVmZmVyLAogIFNpemUgb2Zmc2V0LAogIFNpemUg
bGVuZ3RoKSA7CgoKCgoKdHlwZWRlZiBPU0VyciAoICogQUVFdmVudEhhbmRsZXJQcm9jUHRyKShj
b25zdCBBcHBsZUV2ZW50ICp0aGVBcHBsZUV2ZW50LCBBcHBsZUV2ZW50ICpyZXBseSwgU1JlZkNv
biBoYW5kbGVyUmVmY29uKTsKdHlwZWRlZiBBRUV2ZW50SGFuZGxlclByb2NQdHIgQUVFdmVudEhh
bmRsZXJVUFA7CiMgMjU5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFRGF0YU1vZGVsLmgi
IDMKZXh0ZXJuIEFFRGlzcG9zZUV4dGVybmFsVVBQCk5ld0FFRGlzcG9zZUV4dGVybmFsVVBQKEFF
RGlzcG9zZUV4dGVybmFsUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDI2MDkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFt
ZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCmV4dGVybiBBRUV2ZW50SGFuZGxlclVQUApO
ZXdBRUV2ZW50SGFuZGxlclVQUChBRUV2ZW50SGFuZGxlclByb2NQdHIgdXNlclJvdXRpbmUpIDsK
IyAyNjIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVEYXRhTW9kZWwuaCIgMwpleHRlcm4g
dm9pZApEaXNwb3NlQUVEaXNwb3NlRXh0ZXJuYWxVUFAoQUVEaXNwb3NlRXh0ZXJuYWxVUFAgdXNl
clVQUCkgOwojIDI2MzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAz
CmV4dGVybiB2b2lkCkRpc3Bvc2VBRUV2ZW50SGFuZGxlclVQUChBRUV2ZW50SGFuZGxlclVQUCB1
c2VyVVBQKSA7CiMgMjY0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFRGF0YU1vZGVsLmgi
IDMKZXh0ZXJuIHZvaWQKSW52b2tlQUVEaXNwb3NlRXh0ZXJuYWxVUFAoCiAgY29uc3Qgdm9pZCAq
IGRhdGFQdHIsCiAgU2l6ZSBkYXRhTGVuZ3RoLAogIFNSZWZDb24gcmVmY29uLAogIEFFRGlzcG9z
ZUV4dGVybmFsVVBQIHVzZXJVUFApIDsKIyAyNjU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMv
QUVEYXRhTW9kZWwuaCIgMwpleHRlcm4gT1NFcnIKSW52b2tlQUVFdmVudEhhbmRsZXJVUFAoCiAg
Y29uc3QgQXBwbGVFdmVudCAqIHRoZUFwcGxlRXZlbnQsCiAgQXBwbGVFdmVudCAqIHJlcGx5LAog
IFNSZWZDb24gaGFuZGxlclJlZmNvbiwKICBBRUV2ZW50SGFuZGxlclVQUCB1c2VyVVBQKSA7CgoK
CiAgICBpbmxpbmUgQUVEaXNwb3NlRXh0ZXJuYWxVUFAgTmV3QUVEaXNwb3NlRXh0ZXJuYWxVUFAo
QUVEaXNwb3NlRXh0ZXJuYWxQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGlu
ZTsgfQogICAgaW5saW5lIEFFRXZlbnRIYW5kbGVyVVBQIE5ld0FFRXZlbnRIYW5kbGVyVVBQKEFF
RXZlbnRIYW5kbGVyUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0K
ICAgIGlubGluZSB2b2lkIERpc3Bvc2VBRURpc3Bvc2VFeHRlcm5hbFVQUChBRURpc3Bvc2VFeHRl
cm5hbFVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlQUVFdmVudEhhbmRsZXJVUFAoQUVF
dmVudEhhbmRsZXJVUFApIHsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlQUVEaXNwb3NlRXh0ZXJu
YWxVUFAoY29uc3Qgdm9pZCAqIGRhdGFQdHIsIFNpemUgZGF0YUxlbmd0aCwgU1JlZkNvbiByZWZj
b24sIEFFRGlzcG9zZUV4dGVybmFsVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKShkYXRhUHRyLCBk
YXRhTGVuZ3RoLCByZWZjb24pOyB9CiAgICBpbmxpbmUgT1NFcnIgSW52b2tlQUVFdmVudEhhbmRs
ZXJVUFAoY29uc3QgQXBwbGVFdmVudCAqIHRoZUFwcGxlRXZlbnQsIEFwcGxlRXZlbnQgKiByZXBs
eSwgU1JlZkNvbiBoYW5kbGVyUmVmY29uLCBBRUV2ZW50SGFuZGxlclVQUCB1c2VyVVBQKSB7IHJl
dHVybiAoKnVzZXJVUFApKHRoZUFwcGxlRXZlbnQsIHJlcGx5LCBoYW5kbGVyUmVmY29uKTsgfQoj
IDI2ODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRURhdGFNb2RlbC5oIiAzCiNwcmFnbWEg
cGFjayhwb3ApCgoKfQojIDI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUUuaCIgMiAzCgoK
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlRXZlbnRzLmgiIDEgMwojIDE3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQXBwbGVFdmVudHMuaCIgMwojZGVmaW5lIF9fQVBQTEVF
VkVOVFNfXyAKIyA0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlRXZlbnRzLmgiIDMK
ZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgplbnVtIHsKCiAga2V5RGlyZWN0
T2JqZWN0ID0gJy0tLS0nLAogIGtleUVycm9yTnVtYmVyID0gJ2Vycm4nLAogIGtleUVycm9yU3Ry
aW5nID0gJ2VycnMnLAogIGtleVByb2Nlc3NTZXJpYWxOdW1iZXIgPSAncHNuICcsCiAga2V5UHJl
RGlzcGF0Y2ggPSAncGhhYycsCiAga2V5U2VsZWN0UHJvYyA9ICdzZWxoJywKCiAga2V5QUVSZWNv
cmRlckNvdW50ID0gJ3JlY3InLAoKICBrZXlBRVZlcnNpb24gPSAndmVycycKfTsKCgplbnVtIHsK
ICBrQ29yZUV2ZW50Q2xhc3MgPSAnYWV2dCcKfTsKCgplbnVtIHsKICBrQUVPcGVuQXBwbGljYXRp
b24gPSAnb2FwcCcsCiAga0FFT3BlbkRvY3VtZW50cyA9ICdvZG9jJywKICBrQUVQcmludERvY3Vt
ZW50cyA9ICdwZG9jJywKICBrQUVPcGVuQ29udGVudHMgPSAnb2NvbicsCiAga0FFUXVpdEFwcGxp
Y2F0aW9uID0gJ3F1aXQnLAogIGtBRUFuc3dlciA9ICdhbnNyJywKICBrQUVBcHBsaWNhdGlvbkRp
ZWQgPSAnb2JpdCcsCiAga0FFU2hvd1ByZWZlcmVuY2VzID0gJ3ByZWYnCn07CgoKZW51bSB7CiAg
a0FFU3RhcnRSZWNvcmRpbmcgPSAncmVjYScsCiAga0FFU3RvcFJlY29yZGluZyA9ICdyZWNjJywK
ICBrQUVOb3RpZnlTdGFydFJlY29yZGluZyA9ICdyZWMxJywKICBrQUVOb3RpZnlTdG9wUmVjb3Jk
aW5nID0gJ3JlYzAnLAogIGtBRU5vdGlmeVJlY29yZGluZyA9ICdyZWNyJwp9OwojIDk2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
QUUuZnJhbWV3b3JrL0hlYWRlcnMvQXBwbGVFdmVudHMuaCIgMwp0eXBlZGVmIFNJbnQ4IEFFRXZl
bnRTb3VyY2U7CmVudW0gewogIGtBRVVua25vd25Tb3VyY2UgPSAwLAogIGtBRURpcmVjdENhbGwg
PSAxLAogIGtBRVNhbWVQcm9jZXNzID0gMiwKICBrQUVMb2NhbFByb2Nlc3MgPSAzLAogIGtBRVJl
bW90ZVByb2Nlc3MgPSA0Cn07CiMgMTE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQXBwbGVF
dmVudHMuaCIgMwpleHRlcm4gT1NFcnIKQUVJbnN0YWxsRXZlbnRIYW5kbGVyKAogIEFFRXZlbnRD
bGFzcyB0aGVBRUV2ZW50Q2xhc3MsCiAgQUVFdmVudElEIHRoZUFFRXZlbnRJRCwKICBBRUV2ZW50
SGFuZGxlclVQUCBoYW5kbGVyLAogIFNSZWZDb24gaGFuZGxlclJlZmNvbiwKICBCb29sZWFuIGlz
U3lzSGFuZGxlcikgOwojIDEzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlRXZlbnRz
LmgiIDMKZXh0ZXJuIE9TRXJyCkFFUmVtb3ZlRXZlbnRIYW5kbGVyKAogIEFFRXZlbnRDbGFzcyB0
aGVBRUV2ZW50Q2xhc3MsCiAgQUVFdmVudElEIHRoZUFFRXZlbnRJRCwKICBBRUV2ZW50SGFuZGxl
clVQUCBoYW5kbGVyLAogIEJvb2xlYW4gaXNTeXNIYW5kbGVyKSA7CiMgMTU4ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJh
bWV3b3JrL0hlYWRlcnMvQXBwbGVFdmVudHMuaCIgMwpleHRlcm4gT1NFcnIKQUVHZXRFdmVudEhh
bmRsZXIoCiAgQUVFdmVudENsYXNzIHRoZUFFRXZlbnRDbGFzcywKICBBRUV2ZW50SUQgdGhlQUVF
dmVudElELAogIEFFRXZlbnRIYW5kbGVyVVBQICogaGFuZGxlciwKICBTUmVmQ29uICogaGFuZGxl
clJlZmNvbiwKICBCb29sZWFuIGlzU3lzSGFuZGxlcikgOwojIDE4NCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29y
ay9IZWFkZXJzL0FwcGxlRXZlbnRzLmgiIDMKZXh0ZXJuIE9TRXJyCkFFSW5zdGFsbFNwZWNpYWxI
YW5kbGVyKAogIEFFS2V5d29yZCBmdW5jdGlvbkNsYXNzLAogIEFFRXZlbnRIYW5kbGVyVVBQIGhh
bmRsZXIsCiAgQm9vbGVhbiBpc1N5c0hhbmRsZXIpIDsKIyAyMDIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsv
SGVhZGVycy9BcHBsZUV2ZW50cy5oIiAzCmV4dGVybiBPU0VycgpBRVJlbW92ZVNwZWNpYWxIYW5k
bGVyKAogIEFFS2V5d29yZCBmdW5jdGlvbkNsYXNzLAogIEFFRXZlbnRIYW5kbGVyVVBQIGhhbmRs
ZXIsCiAgQm9vbGVhbiBpc1N5c0hhbmRsZXIpIDsKIyAyMjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVh
ZGVycy9BcHBsZUV2ZW50cy5oIiAzCmV4dGVybiBPU0VycgpBRUdldFNwZWNpYWxIYW5kbGVyKAog
IEFFS2V5d29yZCBmdW5jdGlvbkNsYXNzLAogIEFFRXZlbnRIYW5kbGVyVVBQICogaGFuZGxlciwK
ICBCb29sZWFuIGlzU3lzSGFuZGxlcikgOwojIDI0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJz
L0FwcGxlRXZlbnRzLmgiIDMKZXh0ZXJuIE9TRXJyCkFFTWFuYWdlckluZm8oCiAgQUVLZXl3b3Jk
IGtleVdvcmQsCiAgbG9uZyAqIHJlc3VsdCkgOwojIDI4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFk
ZXJzL0FwcGxlRXZlbnRzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtBRVJlbW90ZVBy
b2Nlc3NVUkxLZXkgOwojIDI5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlRXZlbnRz
LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtBRVJlbW90ZVByb2Nlc3NOYW1lS2V5IDsK
IyAzMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BcHBsZUV2ZW50cy5oIiAzCmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrQUVSZW1vdGVQcm9jZXNzVXNlcklES2V5IDsKIyAzMjQgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9B
RS5mcmFtZXdvcmsvSGVhZGVycy9BcHBsZUV2ZW50cy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQUVSZW1vdGVQcm9jZXNzUHJvY2Vzc0lES2V5IDsKIyAzMzQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdv
cmsvSGVhZGVycy9BcHBsZUV2ZW50cy5oIiAzCnN0cnVjdCBBRVJlbW90ZVByb2Nlc3NSZXNvbHZl
ckNvbnRleHQgewoKCgoKICBDRkluZGV4IHZlcnNpb247CgoKCgogIHZvaWQgKiBpbmZvOwoKCgoK
ICBDRkFsbG9jYXRvclJldGFpbkNhbGxCYWNrIHJldGFpbjsKCgoKCiAgQ0ZBbGxvY2F0b3JSZWxl
YXNlQ2FsbEJhY2sgcmVsZWFzZTsKCgoKCiAgQ0ZBbGxvY2F0b3JDb3B5RGVzY3JpcHRpb25DYWxs
QmFjayBjb3B5RGVzY3JpcHRpb247Cn07CnR5cGVkZWYgc3RydWN0IEFFUmVtb3RlUHJvY2Vzc1Jl
c29sdmVyQ29udGV4dCBBRVJlbW90ZVByb2Nlc3NSZXNvbHZlckNvbnRleHQ7CiMgMzczICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
QUUuZnJhbWV3b3JrL0hlYWRlcnMvQXBwbGVFdmVudHMuaCIgMwp0eXBlZGVmIHN0cnVjdCBBRVJl
bW90ZVByb2Nlc3NSZXNvbHZlciogQUVSZW1vdGVQcm9jZXNzUmVzb2x2ZXJSZWY7CiMgNDA2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQXBwbGVFdmVudHMuaCIgMwpleHRlcm4gQUVSZW1vdGVQ
cm9jZXNzUmVzb2x2ZXJSZWYKQUVDcmVhdGVSZW1vdGVQcm9jZXNzUmVzb2x2ZXIoCiAgQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLAogIENGVVJMUmVmIHVybCkgOwojIDQzMyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1l
d29yay9IZWFkZXJzL0FwcGxlRXZlbnRzLmgiIDMKZXh0ZXJuIHZvaWQKQUVEaXNwb3NlUmVtb3Rl
UHJvY2Vzc1Jlc29sdmVyKEFFUmVtb3RlUHJvY2Vzc1Jlc29sdmVyUmVmIHJlZikgOwojIDQ3NCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlRXZlbnRzLmgiIDMKZXh0ZXJuIENGQXJyYXlS
ZWYKQUVSZW1vdGVQcm9jZXNzUmVzb2x2ZXJHZXRQcm9jZXNzZXMoCiAgQUVSZW1vdGVQcm9jZXNz
UmVzb2x2ZXJSZWYgcmVmLAogIENGU3RyZWFtRXJyb3IgKiBvdXRFcnJvcikgOwojIDQ4OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0FFLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlRXZlbnRzLmgiIDMKdHlwZWRlZiB2b2lkICggKiBB
RVJlbW90ZVByb2Nlc3NSZXNvbHZlckNhbGxiYWNrKShBRVJlbW90ZVByb2Nlc3NSZXNvbHZlclJl
ZiByZWYsIHZvaWQgKmluZm8pOwojIDUyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FwcGxl
RXZlbnRzLmgiIDMKZXh0ZXJuIHZvaWQKQUVSZW1vdGVQcm9jZXNzUmVzb2x2ZXJTY2hlZHVsZVdp
dGhSdW5Mb29wKAogIEFFUmVtb3RlUHJvY2Vzc1Jlc29sdmVyUmVmIHJlZiwKICBDRlJ1bkxvb3BS
ZWYgcnVuTG9vcCwKICBDRlN0cmluZ1JlZiBydW5Mb29wTW9kZSwKICBBRVJlbW90ZVByb2Nlc3NS
ZXNvbHZlckNhbGxiYWNrIGNhbGxiYWNrLAogIGNvbnN0IEFFUmVtb3RlUHJvY2Vzc1Jlc29sdmVy
Q29udGV4dCAqIGN0eCkgOwoKCgoKCgojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAzMCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FF
LmZyYW1ld29yay9IZWFkZXJzL0FFLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVh
ZGVycy9BRVBhY2tPYmplY3QuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9B
RVBhY2tPYmplY3QuaCIgMwojZGVmaW5lIF9fQUVQQUNLT0JKRUNUX18gCiMgMzIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5m
cmFtZXdvcmsvSGVhZGVycy9BRVBhY2tPYmplY3QuaCIgMwpleHRlcm4gIkMiIHsKIyA0NyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0FFLmZyYW1ld29yay9IZWFkZXJzL0FFUGFja09iamVjdC5oIiAzCmV4dGVybiBPU0VycgpDcmVh
dGVPZmZzZXREZXNjcmlwdG9yKAogIGxvbmcgdGhlT2Zmc2V0LAogIEFFRGVzYyAqIHRoZURlc2Ny
aXB0b3IpIDsKIyA2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFUGFja09iamVjdC5oIiAz
CmV4dGVybiBPU0VycgpDcmVhdGVDb21wRGVzY3JpcHRvcigKICBEZXNjVHlwZSBjb21wYXJpc29u
T3BlcmF0b3IsCiAgQUVEZXNjICogb3BlcmFuZDEsCiAgQUVEZXNjICogb3BlcmFuZDIsCiAgQm9v
bGVhbiBkaXNwb3NlSW5wdXRzLAogIEFFRGVzYyAqIHRoZURlc2NyaXB0b3IpIDsKIyA4NCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0FFLmZyYW1ld29yay9IZWFkZXJzL0FFUGFja09iamVjdC5oIiAzCmV4dGVybiBPU0VycgpDcmVh
dGVMb2dpY2FsRGVzY3JpcHRvcigKICBBRURlc2NMaXN0ICogdGhlTG9naWNhbFRlcm1zLAogIERl
c2NUeXBlIHRoZUxvZ2ljT3BlcmF0b3IsCiAgQm9vbGVhbiBkaXNwb3NlSW5wdXRzLAogIEFFRGVz
YyAqIHRoZURlc2NyaXB0b3IpIDsKIyAxMDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRVBh
Y2tPYmplY3QuaCIgMwpleHRlcm4gT1NFcnIKQ3JlYXRlT2JqU3BlY2lmaWVyKAogIERlc2NUeXBl
IGRlc2lyZWRDbGFzcywKICBBRURlc2MgKiB0aGVDb250YWluZXIsCiAgRGVzY1R5cGUga2V5Rm9y
bSwKICBBRURlc2MgKiBrZXlEYXRhLAogIEJvb2xlYW4gZGlzcG9zZUlucHV0cywKICBBRURlc2Mg
KiBvYmpTcGVjaWZpZXIpIDsKIyAxMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRVBhY2tP
YmplY3QuaCIgMwpleHRlcm4gT1NFcnIKQ3JlYXRlUmFuZ2VEZXNjcmlwdG9yKAogIEFFRGVzYyAq
IHJhbmdlU3RhcnQsCiAgQUVEZXNjICogcmFuZ2VTdG9wLAogIEJvb2xlYW4gZGlzcG9zZUlucHV0
cywKICBBRURlc2MgKiB0aGVEZXNjcmlwdG9yKSA7CgoKCgp9CiMgMzQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdv
cmsvSGVhZGVycy9BRS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVP
YmplY3RzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVPYmplY3RzLmgi
IDMKI2RlZmluZSBfX0FFT0JKRUNUU19fIAojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMv
QUVPYmplY3RzLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgplbnVt
IHsKCiAga0FFQU5EID0gJ0FORCAnLAogIGtBRU9SID0gJ09SICAnLAogIGtBRU5PVCA9ICdOT1Qg
JywKCiAga0FFRmlyc3QgPSAnZmlycycsCiAga0FFTGFzdCA9ICdsYXN0JywKICBrQUVNaWRkbGUg
PSAnbWlkZCcsCiAga0FFQW55ID0gJ2FueSAnLAogIGtBRUFsbCA9ICdhbGwgJywKCiAga0FFTmV4
dCA9ICduZXh0JywKICBrQUVQcmV2aW91cyA9ICdwcmV2JywKCiAga2V5QUVDb21wT3BlcmF0b3Ig
PSAncmVsbycsCiAga2V5QUVMb2dpY2FsVGVybXMgPSAndGVybScsCiAga2V5QUVMb2dpY2FsT3Bl
cmF0b3IgPSAnbG9nYycsCiAga2V5QUVPYmplY3QxID0gJ29iajEnLAogIGtleUFFT2JqZWN0MiA9
ICdvYmoyJywKCiAga2V5QUVEZXNpcmVkQ2xhc3MgPSAnd2FudCcsCiAga2V5QUVDb250YWluZXIg
PSAnZnJvbScsCiAga2V5QUVLZXlGb3JtID0gJ2Zvcm0nLAogIGtleUFFS2V5RGF0YSA9ICdzZWxk
Jwp9OwoKZW51bSB7CgogIGtleUFFUmFuZ2VTdGFydCA9ICdzdGFyJywKICBrZXlBRVJhbmdlU3Rv
cCA9ICdzdG9wJywKCiAga2V5RGlzcG9zZVRva2VuUHJvYyA9ICd4dG9rJywKICBrZXlBRUNvbXBh
cmVQcm9jID0gJ2NtcHInLAogIGtleUFFQ291bnRQcm9jID0gJ2NvbnQnLAogIGtleUFFTWFya1Rv
a2VuUHJvYyA9ICdta2lkJywKICBrZXlBRU1hcmtQcm9jID0gJ21hcmsnLAogIGtleUFFQWRqdXN0
TWFya3NQcm9jID0gJ2Fkam0nLAogIGtleUFFR2V0RXJyRGVzY1Byb2MgPSAnaW5kYycKfTsKCgpl
bnVtIHsKCiAgZm9ybUFic29sdXRlUG9zaXRpb24gPSAnaW5keCcsCiAgZm9ybVJlbGF0aXZlUG9z
aXRpb24gPSAncmVsZScsCiAgZm9ybVRlc3QgPSAndGVzdCcsCiAgZm9ybVJhbmdlID0gJ3Jhbmcn
LAogIGZvcm1Qcm9wZXJ0eUlEID0gJ3Byb3AnLAogIGZvcm1OYW1lID0gJ25hbWUnLAogIGZvcm1V
bmlxdWVJRCA9ICdJRCAgJywKCiAgdHlwZU9iamVjdFNwZWNpZmllciA9ICdvYmogJywKICB0eXBl
T2JqZWN0QmVpbmdFeGFtaW5lZCA9ICdleG1uJywKICB0eXBlQ3VycmVudENvbnRhaW5lciA9ICdj
Y250JywKICB0eXBlVG9rZW4gPSAndG9rZScsCiAgdHlwZVJlbGF0aXZlRGVzY3JpcHRvciA9ICdy
ZWwgJywKICB0eXBlQWJzb2x1dGVPcmRpbmFsID0gJ2Fic28nLAogIHR5cGVJbmRleERlc2NyaXB0
b3IgPSAnaW5kZScsCiAgdHlwZVJhbmdlRGVzY3JpcHRvciA9ICdyYW5nJywKICB0eXBlTG9naWNh
bERlc2NyaXB0b3IgPSAnbG9naScsCiAgdHlwZUNvbXBEZXNjcmlwdG9yID0gJ2NtcGQnLAogIHR5
cGVPU0xUb2tlbkxpc3QgPSAnb3N0bCcKfTsKCgplbnVtIHsKICBrQUVJRG9NaW5pbXVtID0gMHgw
MDAwLAogIGtBRUlEb1dob3NlID0gMHgwMDAxLAogIGtBRUlEb01hcmtpbmcgPSAweDAwMDQsCiAg
a0FFUGFzc1N1YkRlc2NzID0gMHgwMDA4LAogIGtBRVJlc29sdmVOZXN0ZWRMaXN0cyA9IDB4MDAx
MCwKICBrQUVIYW5kbGVTaW1wbGVSYW5nZXMgPSAweDAwMjAsCiAga0FFVXNlUmVsYXRpdmVJdGVy
YXRvcnMgPSAweDAwNDAKfTsKCgplbnVtIHsKICB0eXBlV2hvc2VEZXNjcmlwdG9yID0gJ3dob3Mn
LAogIGZvcm1XaG9zZSA9ICd3aG9zJywKICB0eXBlV2hvc2VSYW5nZSA9ICd3cm5nJywKICBrZXlB
RVdob3NlUmFuZ2VTdGFydCA9ICd3c3RyJywKICBrZXlBRVdob3NlUmFuZ2VTdG9wID0gJ3dzdHAn
LAogIGtleUFFSW5kZXggPSAna2lkeCcsCiAga2V5QUVUZXN0ID0gJ2t0c3QnCn07CgoKCgoKCgpz
dHJ1Y3QgY2NudFRva2VuUmVjb3JkIHsKICBEZXNjVHlwZSB0b2tlbkNsYXNzOwogIEFFRGVzYyB0
b2tlbjsKfTsKdHlwZWRlZiBzdHJ1Y3QgY2NudFRva2VuUmVjb3JkIGNjbnRUb2tlblJlY29yZDsK
dHlwZWRlZiBjY250VG9rZW5SZWNvcmQgKiBjY250VG9rZW5SZWNQdHI7CnR5cGVkZWYgY2NudFRv
a2VuUmVjUHRyICogY2NudFRva2VuUmVjSGFuZGxlOwoKCgoKCgp0eXBlZGVmIE9TRXJyICggKiBP
U0xBY2Nlc3NvclByb2NQdHIpKERlc2NUeXBlIGRlc2lyZWRDbGFzcywgY29uc3QgQUVEZXNjICpj
b250YWluZXIsIERlc2NUeXBlIGNvbnRhaW5lckNsYXNzLCBEZXNjVHlwZSBmb3JtLCBjb25zdCBB
RURlc2MgKnNlbGVjdGlvbkRhdGEsIEFFRGVzYyAqdmFsdWUsIFNSZWZDb24gYWNjZXNzb3JSZWZj
b24pOwp0eXBlZGVmIE9TRXJyICggKiBPU0xDb21wYXJlUHJvY1B0cikoRGVzY1R5cGUgb3Blciwg
Y29uc3QgQUVEZXNjICpvYmoxLCBjb25zdCBBRURlc2MgKm9iajIsIEJvb2xlYW4gKnJlc3VsdCk7
CnR5cGVkZWYgT1NFcnIgKCAqIE9TTENvdW50UHJvY1B0cikoRGVzY1R5cGUgZGVzaXJlZFR5cGUs
IERlc2NUeXBlIGNvbnRhaW5lckNsYXNzLCBjb25zdCBBRURlc2MgKmNvbnRhaW5lciwgbG9uZyAq
cmVzdWx0KTsKdHlwZWRlZiBPU0VyciAoICogT1NMRGlzcG9zZVRva2VuUHJvY1B0cikoQUVEZXNj
ICogdW5uZWVkZWRUb2tlbik7CnR5cGVkZWYgT1NFcnIgKCAqIE9TTEdldE1hcmtUb2tlblByb2NQ
dHIpKGNvbnN0IEFFRGVzYyAqZENvbnRhaW5lclRva2VuLCBEZXNjVHlwZSBjb250YWluZXJDbGFz
cywgQUVEZXNjICpyZXN1bHQpOwp0eXBlZGVmIE9TRXJyICggKiBPU0xHZXRFcnJEZXNjUHJvY1B0
cikoQUVEZXNjICoqIGFwcERlc2NQdHIpOwp0eXBlZGVmIE9TRXJyICggKiBPU0xNYXJrUHJvY1B0
cikoY29uc3QgQUVEZXNjICpkVG9rZW4sIGNvbnN0IEFFRGVzYyAqbWFya1Rva2VuLCBsb25nIGlu
ZGV4KTsKdHlwZWRlZiBPU0VyciAoICogT1NMQWRqdXN0TWFya3NQcm9jUHRyKShsb25nIG5ld1N0
YXJ0LCBsb25nIG5ld1N0b3AsIGNvbnN0IEFFRGVzYyAqbWFya1Rva2VuKTsKdHlwZWRlZiBPU0xB
Y2Nlc3NvclByb2NQdHIgT1NMQWNjZXNzb3JVUFA7CnR5cGVkZWYgT1NMQ29tcGFyZVByb2NQdHIg
T1NMQ29tcGFyZVVQUDsKdHlwZWRlZiBPU0xDb3VudFByb2NQdHIgT1NMQ291bnRVUFA7CnR5cGVk
ZWYgT1NMRGlzcG9zZVRva2VuUHJvY1B0ciBPU0xEaXNwb3NlVG9rZW5VUFA7CnR5cGVkZWYgT1NM
R2V0TWFya1Rva2VuUHJvY1B0ciBPU0xHZXRNYXJrVG9rZW5VUFA7CnR5cGVkZWYgT1NMR2V0RXJy
RGVzY1Byb2NQdHIgT1NMR2V0RXJyRGVzY1VQUDsKdHlwZWRlZiBPU0xNYXJrUHJvY1B0ciBPU0xN
YXJrVVBQOwp0eXBlZGVmIE9TTEFkanVzdE1hcmtzUHJvY1B0ciBPU0xBZGp1c3RNYXJrc1VQUDsK
IyAxNzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRU9iamVjdHMuaCIgMwpleHRlcm4gT1NM
QWNjZXNzb3JVUFAKTmV3T1NMQWNjZXNzb3JVUFAoT1NMQWNjZXNzb3JQcm9jUHRyIHVzZXJSb3V0
aW5lKSA7CiMgMTgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVPYmplY3RzLmgiIDMKZXh0
ZXJuIE9TTENvbXBhcmVVUFAKTmV3T1NMQ29tcGFyZVVQUChPU0xDb21wYXJlUHJvY1B0ciB1c2Vy
Um91dGluZSkgOwojIDE5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFT2JqZWN0cy5oIiAz
CmV4dGVybiBPU0xDb3VudFVQUApOZXdPU0xDb3VudFVQUChPU0xDb3VudFByb2NQdHIgdXNlclJv
dXRpbmUpIDsKIyAyMDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRU9iamVjdHMuaCIgMwpl
eHRlcm4gT1NMRGlzcG9zZVRva2VuVVBQCk5ld09TTERpc3Bvc2VUb2tlblVQUChPU0xEaXNwb3Nl
VG9rZW5Qcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMjE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRl
cnMvQUVPYmplY3RzLmgiIDMKZXh0ZXJuIE9TTEdldE1hcmtUb2tlblVQUApOZXdPU0xHZXRNYXJr
VG9rZW5VUFAoT1NMR2V0TWFya1Rva2VuUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDIyNiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0FFLmZyYW1ld29yay9IZWFkZXJzL0FFT2JqZWN0cy5oIiAzCmV4dGVybiBPU0xHZXRFcnJEZXNj
VVBQCk5ld09TTEdldEVyckRlc2NVUFAoT1NMR2V0RXJyRGVzY1Byb2NQdHIgdXNlclJvdXRpbmUp
IDsKIyAyMzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRU9iamVjdHMuaCIgMwpleHRlcm4g
T1NMTWFya1VQUApOZXdPU0xNYXJrVVBQKE9TTE1hcmtQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMg
MjQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVPYmplY3RzLmgiIDMKZXh0ZXJuIE9TTEFk
anVzdE1hcmtzVVBQCk5ld09TTEFkanVzdE1hcmtzVVBQKE9TTEFkanVzdE1hcmtzUHJvY1B0ciB1
c2VyUm91dGluZSkgOwojIDI1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFT2JqZWN0cy5o
IiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VPU0xBY2Nlc3NvclVQUChPU0xBY2Nlc3NvclVQUCB1c2Vy
VVBQKSA7CiMgMjcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVPYmplY3RzLmgiIDMKZXh0
ZXJuIHZvaWQKRGlzcG9zZU9TTENvbXBhcmVVUFAoT1NMQ29tcGFyZVVQUCB1c2VyVVBQKSA7CiMg
MjgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVPYmplY3RzLmgiIDMKZXh0ZXJuIHZvaWQK
RGlzcG9zZU9TTENvdW50VVBQKE9TTENvdW50VVBQIHVzZXJVUFApIDsKIyAyOTIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5m
cmFtZXdvcmsvSGVhZGVycy9BRU9iamVjdHMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlT1NMRGlz
cG9zZVRva2VuVVBQKE9TTERpc3Bvc2VUb2tlblVQUCB1c2VyVVBQKSA7CiMgMzAzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUu
ZnJhbWV3b3JrL0hlYWRlcnMvQUVPYmplY3RzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZU9TTEdl
dE1hcmtUb2tlblVQUChPU0xHZXRNYXJrVG9rZW5VUFAgdXNlclVQUCkgOwojIDMxNCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FF
LmZyYW1ld29yay9IZWFkZXJzL0FFT2JqZWN0cy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VPU0xH
ZXRFcnJEZXNjVVBQKE9TTEdldEVyckRlc2NVUFAgdXNlclVQUCkgOwojIDMyNSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZy
YW1ld29yay9IZWFkZXJzL0FFT2JqZWN0cy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VPU0xNYXJr
VVBQKE9TTE1hcmtVUFAgdXNlclVQUCkgOwojIDMzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJz
L0FFT2JqZWN0cy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VPU0xBZGp1c3RNYXJrc1VQUChPU0xB
ZGp1c3RNYXJrc1VQUCB1c2VyVVBQKSA7CiMgMzQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMv
QUVPYmplY3RzLmgiIDMKZXh0ZXJuIE9TRXJyCkludm9rZU9TTEFjY2Vzc29yVVBQKAogIERlc2NU
eXBlIGRlc2lyZWRDbGFzcywKICBjb25zdCBBRURlc2MgKiBjb250YWluZXIsCiAgRGVzY1R5cGUg
Y29udGFpbmVyQ2xhc3MsCiAgRGVzY1R5cGUgZm9ybSwKICBjb25zdCBBRURlc2MgKiBzZWxlY3Rp
b25EYXRhLAogIEFFRGVzYyAqIHZhbHVlLAogIFNSZWZDb24gYWNjZXNzb3JSZWZjb24sCiAgT1NM
QWNjZXNzb3JVUFAgdXNlclVQUCkgOwojIDM2NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FF
T2JqZWN0cy5oIiAzCmV4dGVybiBPU0VycgpJbnZva2VPU0xDb21wYXJlVVBQKAogIERlc2NUeXBl
IG9wZXIsCiAgY29uc3QgQUVEZXNjICogb2JqMSwKICBjb25zdCBBRURlc2MgKiBvYmoyLAogIEJv
b2xlYW4gKiByZXN1bHQsCiAgT1NMQ29tcGFyZVVQUCB1c2VyVVBQKSA7CiMgMzgyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUu
ZnJhbWV3b3JrL0hlYWRlcnMvQUVPYmplY3RzLmgiIDMKZXh0ZXJuIE9TRXJyCkludm9rZU9TTENv
dW50VVBQKAogIERlc2NUeXBlIGRlc2lyZWRUeXBlLAogIERlc2NUeXBlIGNvbnRhaW5lckNsYXNz
LAogIGNvbnN0IEFFRGVzYyAqIGNvbnRhaW5lciwKICBsb25nICogcmVzdWx0LAogIE9TTENvdW50
VVBQIHVzZXJVUFApIDsKIyAzOTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRU9iamVjdHMu
aCIgMwpleHRlcm4gT1NFcnIKSW52b2tlT1NMRGlzcG9zZVRva2VuVVBQKAogIEFFRGVzYyAqIHVu
bmVlZGVkVG9rZW4sCiAgT1NMRGlzcG9zZVRva2VuVVBQIHVzZXJVUFApIDsKIyA0MTEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9B
RS5mcmFtZXdvcmsvSGVhZGVycy9BRU9iamVjdHMuaCIgMwpleHRlcm4gT1NFcnIKSW52b2tlT1NM
R2V0TWFya1Rva2VuVVBQKAogIGNvbnN0IEFFRGVzYyAqIGRDb250YWluZXJUb2tlbiwKICBEZXNj
VHlwZSBjb250YWluZXJDbGFzcywKICBBRURlc2MgKiByZXN1bHQsCiAgT1NMR2V0TWFya1Rva2Vu
VVBQIHVzZXJVUFApIDsKIyA0MjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRU9iamVjdHMu
aCIgMwpleHRlcm4gT1NFcnIKSW52b2tlT1NMR2V0RXJyRGVzY1VQUCgKICBBRURlc2MgKiogYXBw
RGVzY1B0ciwKICBPU0xHZXRFcnJEZXNjVVBQIHVzZXJVUFApIDsKIyA0MzkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFt
ZXdvcmsvSGVhZGVycy9BRU9iamVjdHMuaCIgMwpleHRlcm4gT1NFcnIKSW52b2tlT1NMTWFya1VQ
UCgKICBjb25zdCBBRURlc2MgKiBkVG9rZW4sCiAgY29uc3QgQUVEZXNjICogbWFya1Rva2VuLAog
IGxvbmcgaW5kZXgsCiAgT1NMTWFya1VQUCB1c2VyVVBQKSA7CiMgNDU0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3
b3JrL0hlYWRlcnMvQUVPYmplY3RzLmgiIDMKZXh0ZXJuIE9TRXJyCkludm9rZU9TTEFkanVzdE1h
cmtzVVBQKAogIGxvbmcgbmV3U3RhcnQsCiAgbG9uZyBuZXdTdG9wLAogIGNvbnN0IEFFRGVzYyAq
IG1hcmtUb2tlbiwKICBPU0xBZGp1c3RNYXJrc1VQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUg
T1NMQWNjZXNzb3JVUFAgTmV3T1NMQWNjZXNzb3JVUFAoT1NMQWNjZXNzb3JQcm9jUHRyIHVzZXJS
b3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIE9TTENvbXBhcmVVUFAg
TmV3T1NMQ29tcGFyZVVQUChPU0xDb21wYXJlUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4g
dXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBPU0xDb3VudFVQUCBOZXdPU0xDb3VudFVQUChPU0xD
b3VudFByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxp
bmUgT1NMRGlzcG9zZVRva2VuVVBQIE5ld09TTERpc3Bvc2VUb2tlblVQUChPU0xEaXNwb3NlVG9r
ZW5Qcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5l
IE9TTEdldE1hcmtUb2tlblVQUCBOZXdPU0xHZXRNYXJrVG9rZW5VUFAoT1NMR2V0TWFya1Rva2Vu
UHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBP
U0xHZXRFcnJEZXNjVVBQIE5ld09TTEdldEVyckRlc2NVUFAoT1NMR2V0RXJyRGVzY1Byb2NQdHIg
dXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgT1NMTWFya1VQ
UCBOZXdPU0xNYXJrVVBQKE9TTE1hcmtQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2Vy
Um91dGluZTsgfQogICAgaW5saW5lIE9TTEFkanVzdE1hcmtzVVBQIE5ld09TTEFkanVzdE1hcmtz
VVBQKE9TTEFkanVzdE1hcmtzUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRp
bmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VPU0xBY2Nlc3NvclVQUChPU0xBY2Nlc3NvclVQ
UCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlT1NMQ29tcGFyZVVQUChPU0xDb21wYXJlVVBQ
KSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VPU0xDb3VudFVQUChPU0xDb3VudFVQUCkgeyB9
CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlT1NMRGlzcG9zZVRva2VuVVBQKE9TTERpc3Bvc2VUb2tl
blVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlT1NMR2V0TWFya1Rva2VuVVBQKE9TTEdl
dE1hcmtUb2tlblVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlT1NMR2V0RXJyRGVzY1VQ
UChPU0xHZXRFcnJEZXNjVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VPU0xNYXJrVVBQ
KE9TTE1hcmtVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZU9TTEFkanVzdE1hcmtzVVBQ
KE9TTEFkanVzdE1hcmtzVVBQKSB7IH0KICAgIGlubGluZSBPU0VyciBJbnZva2VPU0xBY2Nlc3Nv
clVQUChEZXNjVHlwZSBkZXNpcmVkQ2xhc3MsIGNvbnN0IEFFRGVzYyAqIGNvbnRhaW5lciwgRGVz
Y1R5cGUgY29udGFpbmVyQ2xhc3MsIERlc2NUeXBlIGZvcm0sIGNvbnN0IEFFRGVzYyAqIHNlbGVj
dGlvbkRhdGEsIEFFRGVzYyAqIHZhbHVlLCBTUmVmQ29uIGFjY2Vzc29yUmVmY29uLCBPU0xBY2Nl
c3NvclVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGRlc2lyZWRDbGFzcywgY29udGFp
bmVyLCBjb250YWluZXJDbGFzcywgZm9ybSwgc2VsZWN0aW9uRGF0YSwgdmFsdWUsIGFjY2Vzc29y
UmVmY29uKTsgfQogICAgaW5saW5lIE9TRXJyIEludm9rZU9TTENvbXBhcmVVUFAoRGVzY1R5cGUg
b3BlciwgY29uc3QgQUVEZXNjICogb2JqMSwgY29uc3QgQUVEZXNjICogb2JqMiwgQm9vbGVhbiAq
IHJlc3VsdCwgT1NMQ29tcGFyZVVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKG9wZXIs
IG9iajEsIG9iajIsIHJlc3VsdCk7IH0KICAgIGlubGluZSBPU0VyciBJbnZva2VPU0xDb3VudFVQ
UChEZXNjVHlwZSBkZXNpcmVkVHlwZSwgRGVzY1R5cGUgY29udGFpbmVyQ2xhc3MsIGNvbnN0IEFF
RGVzYyAqIGNvbnRhaW5lciwgbG9uZyAqIHJlc3VsdCwgT1NMQ291bnRVUFAgdXNlclVQUCkgeyBy
ZXR1cm4gKCp1c2VyVVBQKShkZXNpcmVkVHlwZSwgY29udGFpbmVyQ2xhc3MsIGNvbnRhaW5lciwg
cmVzdWx0KTsgfQogICAgaW5saW5lIE9TRXJyIEludm9rZU9TTERpc3Bvc2VUb2tlblVQUChBRURl
c2MgKiB1bm5lZWRlZFRva2VuLCBPU0xEaXNwb3NlVG9rZW5VUFAgdXNlclVQUCkgeyByZXR1cm4g
KCp1c2VyVVBQKSh1bm5lZWRlZFRva2VuKTsgfQogICAgaW5saW5lIE9TRXJyIEludm9rZU9TTEdl
dE1hcmtUb2tlblVQUChjb25zdCBBRURlc2MgKiBkQ29udGFpbmVyVG9rZW4sIERlc2NUeXBlIGNv
bnRhaW5lckNsYXNzLCBBRURlc2MgKiByZXN1bHQsIE9TTEdldE1hcmtUb2tlblVQUCB1c2VyVVBQ
KSB7IHJldHVybiAoKnVzZXJVUFApKGRDb250YWluZXJUb2tlbiwgY29udGFpbmVyQ2xhc3MsIHJl
c3VsdCk7IH0KICAgIGlubGluZSBPU0VyciBJbnZva2VPU0xHZXRFcnJEZXNjVVBQKEFFRGVzYyAq
KiBhcHBEZXNjUHRyLCBPU0xHZXRFcnJEZXNjVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQ
UCkoYXBwRGVzY1B0cik7IH0KICAgIGlubGluZSBPU0VyciBJbnZva2VPU0xNYXJrVVBQKGNvbnN0
IEFFRGVzYyAqIGRUb2tlbiwgY29uc3QgQUVEZXNjICogbWFya1Rva2VuLCBsb25nIGluZGV4LCBP
U0xNYXJrVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoZFRva2VuLCBtYXJrVG9rZW4s
IGluZGV4KTsgfQogICAgaW5saW5lIE9TRXJyIEludm9rZU9TTEFkanVzdE1hcmtzVVBQKGxvbmcg
bmV3U3RhcnQsIGxvbmcgbmV3U3RvcCwgY29uc3QgQUVEZXNjICogbWFya1Rva2VuLCBPU0xBZGp1
c3RNYXJrc1VQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKG5ld1N0YXJ0LCBuZXdTdG9w
LCBtYXJrVG9rZW4pOyB9CiMgNTI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVPYmplY3Rz
LmgiIDMKZXh0ZXJuIE9TRXJyCkFFT2JqZWN0SW5pdCh2b2lkKSA7CiMgNTQ2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJh
bWV3b3JrL0hlYWRlcnMvQUVPYmplY3RzLmgiIDMKZXh0ZXJuIE9TRXJyCkFFU2V0T2JqZWN0Q2Fs
bGJhY2tzKAogIE9TTENvbXBhcmVVUFAgbXlDb21wYXJlUHJvYywKICBPU0xDb3VudFVQUCBteUNv
dW50UHJvYywKICBPU0xEaXNwb3NlVG9rZW5VUFAgbXlEaXNwb3NlVG9rZW5Qcm9jLAogIE9TTEdl
dE1hcmtUb2tlblVQUCBteUdldE1hcmtUb2tlblByb2MsCiAgT1NMTWFya1VQUCBteU1hcmtQcm9j
LAogIE9TTEFkanVzdE1hcmtzVVBQIG15QWRqdXN0TWFya3NQcm9jLAogIE9TTEdldEVyckRlc2NV
UFAgbXlHZXRFcnJEZXNjUHJvY1B0cikgOwojIDU2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJz
L0FFT2JqZWN0cy5oIiAzCmV4dGVybiBPU0VycgpBRVJlc29sdmUoCiAgY29uc3QgQUVEZXNjICog
b2JqZWN0U3BlY2lmaWVyLAogIHNob3J0IGNhbGxiYWNrRmxhZ3MsCiAgQUVEZXNjICogdGhlVG9r
ZW4pIDsKIyA1ODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRU9iamVjdHMuaCIgMwpleHRl
cm4gT1NFcnIKQUVJbnN0YWxsT2JqZWN0QWNjZXNzb3IoCiAgRGVzY1R5cGUgZGVzaXJlZENsYXNz
LAogIERlc2NUeXBlIGNvbnRhaW5lclR5cGUsCiAgT1NMQWNjZXNzb3JVUFAgdGhlQWNjZXNzb3Is
CiAgU1JlZkNvbiBhY2Nlc3NvclJlZmNvbiwKICBCb29sZWFuIGlzU3lzSGFuZGxlcikgOwojIDYw
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFT2JqZWN0cy5oIiAzCmV4dGVybiBPU0VycgpB
RVJlbW92ZU9iamVjdEFjY2Vzc29yKAogIERlc2NUeXBlIGRlc2lyZWRDbGFzcywKICBEZXNjVHlw
ZSBjb250YWluZXJUeXBlLAogIE9TTEFjY2Vzc29yVVBQIHRoZUFjY2Vzc29yLAogIEJvb2xlYW4g
aXNTeXNIYW5kbGVyKSA7CiMgNjI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVPYmplY3Rz
LmgiIDMKZXh0ZXJuIE9TRXJyCkFFR2V0T2JqZWN0QWNjZXNzb3IoCiAgRGVzY1R5cGUgZGVzaXJl
ZENsYXNzLAogIERlc2NUeXBlIGNvbnRhaW5lclR5cGUsCiAgT1NMQWNjZXNzb3JVUFAgKiBhY2Nl
c3NvciwKICBTUmVmQ29uICogYWNjZXNzb3JSZWZjb24sCiAgQm9vbGVhbiBpc1N5c0hhbmRsZXIp
IDsKIyA2NDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRU9iamVjdHMuaCIgMwpleHRlcm4g
T1NFcnIKQUVEaXNwb3NlVG9rZW4oQUVEZXNjICogdGhlVG9rZW4pIDsKIyA2NjAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5m
cmFtZXdvcmsvSGVhZGVycy9BRU9iamVjdHMuaCIgMwpleHRlcm4gT1NFcnIKQUVDYWxsT2JqZWN0
QWNjZXNzb3IoCiAgRGVzY1R5cGUgZGVzaXJlZENsYXNzLAogIGNvbnN0IEFFRGVzYyAqIGNvbnRh
aW5lclRva2VuLAogIERlc2NUeXBlIGNvbnRhaW5lckNsYXNzLAogIERlc2NUeXBlIGtleUZvcm0s
CiAgY29uc3QgQUVEZXNjICoga2V5RGF0YSwKICBBRURlc2MgKiB0b2tlbikgOwoKCgojcHJhZ21h
IHBhY2socG9wKQoKCn0KIyAzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFLmgiIDIgMwoK
CgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRVJlZ2lzdHJ5LmgiIDEgMwojIDE3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVSZWdpc3RyeS5oIiAzCiNkZWZpbmUgX19BRVJFR0lT
VFJZX18gCiMgMzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRVJlZ2lzdHJ5LmgiIDMKI3By
YWdtYSBwYWNrKHB1c2gsIDIpCgplbnVtIHsKICBjQUVMaXN0ID0gJ2xpc3QnLAogIGNBcHBsaWNh
dGlvbiA9ICdjYXBwJywKICBjQXJjID0gJ2NhcmMnLAogIGNCb29sZWFuID0gJ2Jvb2wnLAogIGND
ZWxsID0gJ2NjZWwnLAogIGNDaGFyID0gJ2NoYSAnLAogIGNDb2xvclRhYmxlID0gJ2NscnQnLAog
IGNDb2x1bW4gPSAnY2NvbCcsCiAgY0RvY3VtZW50ID0gJ2RvY3UnLAogIGNEcmF3aW5nQXJlYSA9
ICdjZHJ3JywKICBjRW51bWVyYXRpb24gPSAnZW51bScsCiAgY0ZpbGUgPSAnZmlsZScsCiAgY0Zp
eGVkID0gJ2ZpeGQnLAogIGNGaXhlZFBvaW50ID0gJ2ZwbnQnLAogIGNGaXhlZFJlY3RhbmdsZSA9
ICdmcmN0JywKICBjR3JhcGhpY0xpbmUgPSAnZ2xpbicsCiAgY0dyYXBoaWNPYmplY3QgPSAnY2dv
YicsCiAgY0dyYXBoaWNTaGFwZSA9ICdjZ3NoJywKICBjR3JhcGhpY1RleHQgPSAnY2d0eCcsCiAg
Y0dyb3VwZWRHcmFwaGljID0gJ2NwaWMnCn07CgplbnVtIHsKICBjSW5zZXJ0aW9uTG9jID0gJ2lu
c2wnLAogIGNJbnNlcnRpb25Qb2ludCA9ICdjaW5zJywKICBjSW50bFRleHQgPSAnaXR4dCcsCiAg
Y0ludGxXcml0aW5nQ29kZSA9ICdpbnRsJywKICBjSXRlbSA9ICdjaXRtJywKICBjTGluZSA9ICdj
bGluJywKICBjTG9uZ0RhdGVUaW1lID0gJ2xkdCAnLAogIGNMb25nRml4ZWQgPSAnbGZ4ZCcsCiAg
Y0xvbmdGaXhlZFBvaW50ID0gJ2xmcHQnLAogIGNMb25nRml4ZWRSZWN0YW5nbGUgPSAnbGZyYycs
CiAgY0xvbmdJbnRlZ2VyID0gJ2xvbmcnLAogIGNMb25nUG9pbnQgPSAnbHBudCcsCiAgY0xvbmdS
ZWN0YW5nbGUgPSAnbHJjdCcsCiAgY01hY2hpbmVMb2MgPSAnbUxvYycsCiAgY01lbnUgPSAnY21u
dScsCiAgY01lbnVJdGVtID0gJ2NtZW4nLAogIGNPYmplY3QgPSAnY29iaicsCiAgY09iamVjdFNw
ZWNpZmllciA9ICdvYmogJywKICBjT3BlbmFibGVPYmplY3QgPSAnY29vYicsCiAgY092YWwgPSAn
Y292bCcKfTsKCmVudW0gewogIGNQYXJhZ3JhcGggPSAnY3BhcicsCiAgY1BJQ1QgPSAnUElDVCcs
CiAgY1BpeGVsID0gJ2NweGwnLAogIGNQaXhlbE1hcCA9ICdjcGl4JywKICBjUG9seWdvbiA9ICdj
cGduJywKICBjUHJvcGVydHkgPSAncHJvcCcsCiAgY1FEUG9pbnQgPSAnUURwdCcsCiAgY1FEUmVj
dGFuZ2xlID0gJ3FkcnQnLAogIGNSZWN0YW5nbGUgPSAnY3JlYycsCiAgY1JHQkNvbG9yID0gJ2NS
R0InLAogIGNSb3RhdGlvbiA9ICd0cm90JywKICBjUm91bmRlZFJlY3RhbmdsZSA9ICdjcnJjJywK
ICBjUm93ID0gJ2Nyb3cnLAogIGNTZWxlY3Rpb24gPSAnY3NlbCcsCiAgY1Nob3J0SW50ZWdlciA9
ICdzaG9yJywKICBjVGFibGUgPSAnY3RibCcsCiAgY1RleHQgPSAnY3R4dCcsCiAgY1RleHRGbG93
ID0gJ2NmbG8nLAogIGNUZXh0U3R5bGVzID0gJ3RzdHknLAogIGNUeXBlID0gJ3R5cGUnCn07Cgpl
bnVtIHsKICBjVmVyc2lvbiA9ICd2ZXJzJywKICBjV2luZG93ID0gJ2N3aW4nLAogIGNXb3JkID0g
J2N3b3InLAogIGVudW1BcnJvd3MgPSAnYXJybycsCiAgZW51bUp1c3RpZmljYXRpb24gPSAnanVz
dCcsCiAgZW51bUtleUZvcm0gPSAna2ZybScsCiAgZW51bVBvc2l0aW9uID0gJ3Bvc2knLAogIGVu
dW1Qcm90ZWN0aW9uID0gJ3BydG4nLAogIGVudW1RdWFsaXR5ID0gJ3F1YWwnLAogIGVudW1TYXZl
T3B0aW9ucyA9ICdzYXZvJywKICBlbnVtU3R5bGUgPSAnc3R5bCcsCiAgZW51bVRyYW5zZmVyTW9k
ZSA9ICd0cmFuJywKICBrQUVBYm91dCA9ICdhYm91JywKICBrQUVBZnRlciA9ICdhZnRlJywKICBr
QUVBbGlhc1NlbGVjdGlvbiA9ICdzYWxpJywKICBrQUVBbGxDYXBzID0gJ2FsY3AnLAogIGtBRUFy
cm93QXRFbmQgPSAnYXJlbicsCiAga0FFQXJyb3dBdFN0YXJ0ID0gJ2Fyc3QnLAogIGtBRUFycm93
Qm90aEVuZHMgPSAnYXJibycKfTsKCmVudW0gewogIGtBRUFzayA9ICdhc2sgJywKICBrQUVCZWZv
cmUgPSAnYmVmbycsCiAga0FFQmVnaW5uaW5nID0gJ2JnbmcnLAogIGtBRUJlZ2luc1dpdGggPSAn
Ymd3dCcsCiAga0FFQmVnaW5UcmFuc2FjdGlvbiA9ICdiZWdpJywKICBrQUVCb2xkID0gJ2JvbGQn
LAogIGtBRUNhc2VTZW5zRXF1YWxzID0gJ2NzZXEnLAogIGtBRUNlbnRlcmVkID0gJ2NlbnQnLAog
IGtBRUNoYW5nZVZpZXcgPSAndmlldycsCiAga0FFQ2xvbmUgPSAnY2xvbicsCiAga0FFQ2xvc2Ug
PSAnY2xvcycsCiAga0FFQ29uZGVuc2VkID0gJ2NvbmQnLAogIGtBRUNvbnRhaW5zID0gJ2NvbnQn
LAogIGtBRUNvcHkgPSAnY29weScsCiAga0FFQ29yZVN1aXRlID0gJ2NvcmUnLAogIGtBRUNvdW50
RWxlbWVudHMgPSAnY250ZScsCiAga0FFQ3JlYXRlRWxlbWVudCA9ICdjcmVsJywKICBrQUVDcmVh
dGVQdWJsaXNoZXIgPSAnY3B1YicsCiAga0FFQ3V0ID0gJ2N1dCAnLAogIGtBRURlbGV0ZSA9ICdk
ZWxvJwp9OwoKZW51bSB7CiAga0FFRG9PYmplY3RzRXhpc3QgPSAnZG9leCcsCiAga0FFRG9TY3Jp
cHQgPSAnZG9zYycsCiAga0FFRHJhZyA9ICdkcmFnJywKICBrQUVEdXBsaWNhdGVTZWxlY3Rpb24g
PSAnc2R1cCcsCiAga0FFRWRpdEdyYXBoaWMgPSAnZWRpdCcsCiAga0FFRW1wdHlUcmFzaCA9ICdl
bXB0JywKICBrQUVFbmQgPSAnZW5kICcsCiAga0FFRW5kc1dpdGggPSAnZW5kcycsCiAga0FFRW5k
VHJhbnNhY3Rpb24gPSAnZW5kdCcsCiAga0FFRXF1YWxzID0gJz0gICAnLAogIGtBRUV4cGFuZGVk
ID0gJ3BleHAnLAogIGtBRUZhc3QgPSAnZmFzdCcsCiAga0FFRmluZGVyRXZlbnRzID0gJ0ZORFIn
LAogIGtBRUZvcm11bGFQcm90ZWN0ID0gJ2Zwcm8nLAogIGtBRUZ1bGx5SnVzdGlmaWVkID0gJ2Z1
bGwnLAogIGtBRUdldENsYXNzSW5mbyA9ICdxb2JqJywKICBrQUVHZXREYXRhID0gJ2dldGQnLAog
IGtBRUdldERhdGFTaXplID0gJ2RzaXonLAogIGtBRUdldEV2ZW50SW5mbyA9ICdndGVpJywKICBr
QUVHZXRJbmZvU2VsZWN0aW9uID0gJ3NpbmYnCn07CgplbnVtIHsKICBrQUVHZXRQcml2aWxlZ2VT
ZWxlY3Rpb24gPSAnc3BydicsCiAga0FFR2V0U3VpdGVJbmZvID0gJ2d0c2knLAogIGtBRUdyZWF0
ZXJUaGFuID0gJz4gICAnLAogIGtBRUdyZWF0ZXJUaGFuRXF1YWxzID0gJz49ICAnLAogIGtBRUdy
b3cgPSAnZ3JvdycsCiAga0FFSGlkZGVuID0gJ2hpZG4nLAogIGtBRUhpUXVhbGl0eSA9ICdoaXF1
JywKICBrQUVJbWFnZUdyYXBoaWMgPSAnaW1ncicsCiAga0FFSXNVbmlmb3JtID0gJ2lzdW4nLAog
IGtBRUl0YWxpYyA9ICdpdGFsJywKICBrQUVMZWZ0SnVzdGlmaWVkID0gJ2xlZnQnLAogIGtBRUxl
c3NUaGFuID0gJzwgICAnLAogIGtBRUxlc3NUaGFuRXF1YWxzID0gJzw9ICAnLAogIGtBRUxvd2Vy
Y2FzZSA9ICdsb3djJywKICBrQUVNYWtlT2JqZWN0c1Zpc2libGUgPSAnbXZpcycsCiAga0FFTWlz
Y1N0YW5kYXJkcyA9ICdtaXNjJywKICBrQUVNb2RpZmlhYmxlID0gJ21vZGYnLAogIGtBRU1vdmUg
PSAnbW92ZScsCiAga0FFTm8gPSAnbm8gICcsCiAga0FFTm9BcnJvdyA9ICdhcm5vJwp9OwoKZW51
bSB7CiAga0FFTm9ubW9kaWZpYWJsZSA9ICdubW9kJywKICBrQUVPcGVuID0gJ29kb2MnLAogIGtB
RU9wZW5TZWxlY3Rpb24gPSAnc29wZScsCiAga0FFT3V0bGluZSA9ICdvdXRsJywKICBrQUVQYWdl
U2V0dXAgPSAncGdzdScsCiAga0FFUGFzdGUgPSAncGFzdCcsCiAga0FFUGxhaW4gPSAncGxhbics
CiAga0FFUHJpbnQgPSAncGRvYycsCiAga0FFUHJpbnRTZWxlY3Rpb24gPSAnc3ByaScsCiAga0FF
UHJpbnRXaW5kb3cgPSAncHdpbicsCiAga0FFUHV0QXdheVNlbGVjdGlvbiA9ICdzcHV0JywKICBr
QUVRREFkZE92ZXIgPSAnYWRkbycsCiAga0FFUURBZGRQaW4gPSAnYWRkcCcsCiAga0FFUURBZE1h
eCA9ICdhZG14JywKICBrQUVRREFkTWluID0gJ2FkbW4nLAogIGtBRVFEQmljID0gJ2JpYyAnLAog
IGtBRVFEQmxlbmQgPSAnYmxuZCcsCiAga0FFUURDb3B5ID0gJ2NweSAnLAogIGtBRVFETm90Qmlj
ID0gJ25iaWMnLAogIGtBRVFETm90Q29weSA9ICduY3B5Jwp9OwoKZW51bSB7CiAga0FFUUROb3RP
ciA9ICdudG9yJywKICBrQUVRRE5vdFhvciA9ICdueG9yJywKICBrQUVRRE9yID0gJ29yICAnLAog
IGtBRVFEU3ViT3ZlciA9ICdzdWJvJywKICBrQUVRRFN1YlBpbiA9ICdzdWJwJywKICBrQUVRRFN1
cHBsZW1lbnRhbFN1aXRlID0gJ3Fkc3AnLAogIGtBRVFEWG9yID0gJ3hvciAnLAogIGtBRVF1aWNr
ZHJhd1N1aXRlID0gJ3FkcncnLAogIGtBRVF1aXRBbGwgPSAncXVpYScsCiAga0FFUmVkbyA9ICdy
ZWRvJywKICBrQUVSZWd1bGFyID0gJ3JlZ2wnLAogIGtBRVJlb3BlbkFwcGxpY2F0aW9uID0gJ3Jh
cHAnLAogIGtBRVJlcGxhY2UgPSAncnBsYycsCiAga0FFUmVxdWlyZWRTdWl0ZSA9ICdyZXFkJywK
ICBrQUVSZXN0YXJ0ID0gJ3Jlc3QnLAogIGtBRVJldmVhbFNlbGVjdGlvbiA9ICdzcmV2JywKICBr
QUVSZXZlcnQgPSAncnZydCcsCiAga0FFUmlnaHRKdXN0aWZpZWQgPSAncmdodCcsCiAga0FFU2F2
ZSA9ICdzYXZlJywKICBrQUVTZWxlY3QgPSAnc2xjdCcsCiAga0FFU2V0RGF0YSA9ICdzZXRkJwp9
OwoKZW51bSB7CiAga0FFU2V0UG9zaXRpb24gPSAncG9zbicsCiAga0FFU2hhZG93ID0gJ3NoYWQn
LAogIGtBRVNob3dDbGlwYm9hcmQgPSAnc2hjbCcsCiAga0FFU2h1dERvd24gPSAnc2h1dCcsCiAg
a0FFU2xlZXAgPSAnc2xlcCcsCiAga0FFU21hbGxDYXBzID0gJ3NtY3AnLAogIGtBRVNwZWNpYWxD
bGFzc1Byb3BlcnRpZXMgPSAnY0AjIScsCiAga0FFU3RyaWtldGhyb3VnaCA9ICdzdHJrJywKICBr
QUVTdWJzY3JpcHQgPSAnc2JzYycsCiAga0FFU3VwZXJzY3JpcHQgPSAnc3BzYycsCiAga0FFVGFi
bGVTdWl0ZSA9ICd0YmxzJywKICBrQUVUZXh0U3VpdGUgPSAnVEVYVCcsCiAga0FFVHJhbnNhY3Rp
b25UZXJtaW5hdGVkID0gJ3R0cm0nLAogIGtBRVVuZGVybGluZSA9ICd1bmRsJywKICBrQUVVbmRv
ID0gJ3VuZG8nLAogIGtBRVdob2xlV29yZEVxdWFscyA9ICd3d2VxJywKICBrQUVZZXMgPSAneWVz
ICcsCiAga0FFWm9vbSA9ICd6b29tJwp9OwoKCmVudW0gewogIGtBRUxvZ091dCA9ICdsb2dvJywK
ICBrQUVSZWFsbHlMb2dPdXQgPSAncmxnbycsCiAga0FFU2hvd1Jlc3RhcnREaWFsb2cgPSAncnJz
dCcsCiAga0FFU2hvd1NodXRkb3duRGlhbG9nID0gJ3JzZG4nCn07CgoKZW51bSB7CiAga0FFTW91
c2VDbGFzcyA9ICdtb3VzJywKICBrQUVEb3duID0gJ2Rvd24nLAogIGtBRVVwID0gJ3VwICAnLAog
IGtBRU1vdmVkID0gJ21vdmUnLAogIGtBRVN0b3BwZWRNb3ZpbmcgPSAnc3RvcCcsCiAga0FFV2lu
ZG93Q2xhc3MgPSAnd2luZCcsCiAga0FFVXBkYXRlID0gJ3VwZHQnLAogIGtBRUFjdGl2YXRlID0g
J2FjdHYnLAogIGtBRURlYWN0aXZhdGUgPSAnZGFjdCcsCiAga0FFQ29tbWFuZENsYXNzID0gJ2Nt
bmQnLAogIGtBRUtleUNsYXNzID0gJ2tleWMnLAogIGtBRVJhd0tleSA9ICdya2V5JywKICBrQUVW
aXJ0dWFsS2V5ID0gJ2tleWMnLAogIGtBRU5hdmlnYXRpb25LZXkgPSAnbmF2ZScsCiAga0FFQXV0
b0Rvd24gPSAnYXV0bycsCiAga0FFQXBwbGljYXRpb25DbGFzcyA9ICdhcHBsJywKICBrQUVTdXNw
ZW5kID0gJ3N1c3AnLAogIGtBRVJlc3VtZSA9ICdyc21lJywKICBrQUVEaXNrRXZlbnQgPSAnZGlz
aycsCiAga0FFTnVsbEV2ZW50ID0gJ251bGwnLAogIGtBRVdha2VVcEV2ZW50ID0gJ3dha2UnLAog
IGtBRVNjcmFwRXZlbnQgPSAnc2NycCcsCiAga0FFSGlnaExldmVsID0gJ2hpZ2gnCn07CgplbnVt
IHsKICBrZXlBRUFuZ2xlID0gJ2thbmcnLAogIGtleUFFQXJjQW5nbGUgPSAncGFyYycKfTsKCmVu
dW0gewogIGtleUFFQmFzZUFkZHIgPSAnYmFkZCcsCiAga2V5QUVCZXN0VHlwZSA9ICdwYnN0JywK
ICBrZXlBRUJnbmRDb2xvciA9ICdrYmNsJywKICBrZXlBRUJnbmRQYXR0ZXJuID0gJ2ticHQnLAog
IGtleUFFQm91bmRzID0gJ3BibmQnLAogIGtleUFFQ2VsbExpc3QgPSAna2NsdCcsCiAga2V5QUVD
bGFzc0lEID0gJ2NsSUQnLAogIGtleUFFQ29sb3IgPSAnY29scicsCiAga2V5QUVDb2xvclRhYmxl
ID0gJ2NsdGInLAogIGtleUFFQ3VydmVIZWlnaHQgPSAna2NoZCcsCiAga2V5QUVDdXJ2ZVdpZHRo
ID0gJ2tjd2QnLAogIGtleUFFRGFzaFN0eWxlID0gJ3Bkc3QnLAogIGtleUFFRGF0YSA9ICdkYXRh
JywKICBrZXlBRURlZmF1bHRUeXBlID0gJ2RlZnQnLAogIGtleUFFRGVmaW5pdGlvblJlY3QgPSAn
cGRydCcsCiAga2V5QUVEZXNjVHlwZSA9ICdkc3RwJywKICBrZXlBRURlc3RpbmF0aW9uID0gJ2Rl
c3QnLAogIGtleUFFRG9BbnRpQWxpYXMgPSAnYW50YScsCiAga2V5QUVEb0RpdGhlcmVkID0gJ2dk
aXQnLAogIGtleUFFRG9Sb3RhdGUgPSAna2RydCcKfTsKCmVudW0gewogIGtleUFFRG9TY2FsZSA9
ICdrc2NhJywKICBrZXlBRURvVHJhbnNsYXRlID0gJ2t0cmEnLAogIGtleUFFRWRpdGlvbkZpbGVM
b2MgPSAnZWxvYycsCiAga2V5QUVFbGVtZW50cyA9ICdlbG1zJywKICBrZXlBRUVuZFBvaW50ID0g
J3BlbmQnLAogIGtleUFFRXZlbnRDbGFzcyA9ICdldmNsJywKICBrZXlBRUV2ZW50SUQgPSAnZXZ0
aScsCiAga2V5QUVGaWxlID0gJ2tmaWwnLAogIGtleUFFRmlsZVR5cGUgPSAnZmx0cCcsCiAga2V5
QUVGaWxsQ29sb3IgPSAnZmxjbCcsCiAga2V5QUVGaWxsUGF0dGVybiA9ICdmbHB0JywKICBrZXlB
RUZsaXBIb3Jpem9udGFsID0gJ2tmaG8nLAogIGtleUFFRmxpcFZlcnRpY2FsID0gJ2tmdnQnLAog
IGtleUFFRm9udCA9ICdmb250JywKICBrZXlBRUZvcm11bGEgPSAncGZvcicsCiAga2V5QUVHcmFw
aGljT2JqZWN0cyA9ICdnb2JzJywKICBrZXlBRUlEID0gJ0lEICAnLAogIGtleUFFSW1hZ2VRdWFs
aXR5ID0gJ2dxdWEnLAogIGtleUFFSW5zZXJ0SGVyZSA9ICdpbnNoJywKICBrZXlBRUtleUZvcm1z
ID0gJ2tleWYnCn07CgplbnVtIHsKICBrZXlBRUtleXdvcmQgPSAna3l3ZCcsCiAga2V5QUVMZXZl
bCA9ICdsZXZsJywKICBrZXlBRUxpbmVBcnJvdyA9ICdhcnJvJywKICBrZXlBRU5hbWUgPSAncG5h
bScsCiAga2V5QUVOZXdFbGVtZW50TG9jID0gJ3BuZWwnLAogIGtleUFFT2JqZWN0ID0gJ2tvYmon
LAogIGtleUFFT2JqZWN0Q2xhc3MgPSAna29jbCcsCiAga2V5QUVPZmZTdHlsZXMgPSAnb2ZzdCcs
CiAga2V5QUVPblN0eWxlcyA9ICdvbnN0JywKICBrZXlBRVBhcmFtZXRlcnMgPSAncHJtcycsCiAg
a2V5QUVQYXJhbUZsYWdzID0gJ3BtZmcnLAogIGtleUFFUGVuQ29sb3IgPSAncHBjbCcsCiAga2V5
QUVQZW5QYXR0ZXJuID0gJ3BwcGEnLAogIGtleUFFUGVuV2lkdGggPSAncHB3ZCcsCiAga2V5QUVQ
aXhlbERlcHRoID0gJ3BkcHQnLAogIGtleUFFUGl4TWFwTWludXMgPSAna3BtbScsCiAga2V5QUVQ
TVRhYmxlID0gJ2twbXQnLAogIGtleUFFUG9pbnRMaXN0ID0gJ3B0bHQnLAogIGtleUFFUG9pbnRT
aXplID0gJ3B0c3onLAogIGtleUFFUG9zaXRpb24gPSAna3BvcycKfTsKCmVudW0gewogIGtleUFF
UHJvcERhdGEgPSAncHJkdCcsCiAga2V5QUVQcm9wZXJ0aWVzID0gJ3Fwcm8nLAogIGtleUFFUHJv
cGVydHkgPSAna3BycCcsCiAga2V5QUVQcm9wRmxhZ3MgPSAncHJmZycsCiAga2V5QUVQcm9wSUQg
PSAncHJvcCcsCiAga2V5QUVQcm90ZWN0aW9uID0gJ3Bwcm8nLAogIGtleUFFUmVuZGVyQXMgPSAn
a3JlbicsCiAga2V5QUVSZXF1ZXN0ZWRUeXBlID0gJ3J0eXAnLAogIGtleUFFUmVzdWx0ID0gJy0t
LS0nLAogIGtleUFFUmVzdWx0SW5mbyA9ICdyc2luJywKICBrZXlBRVJvdGF0aW9uID0gJ3Byb3Qn
LAogIGtleUFFUm90UG9pbnQgPSAna3J0cCcsCiAga2V5QUVSb3dMaXN0ID0gJ2tybHMnLAogIGtl
eUFFU2F2ZU9wdGlvbnMgPSAnc2F2bycsCiAga2V5QUVTY2FsZSA9ICdwc2NsJywKICBrZXlBRVNj
cmlwdFRhZyA9ICdwc2N0JywKICBrZXlBRVNlYXJjaFRleHQgPSAnc3R4dCcsCiAga2V5QUVTaG93
V2hlcmUgPSAnc2hvdycsCiAga2V5QUVTdGFydEFuZ2xlID0gJ3BhbmcnLAogIGtleUFFU3RhcnRQ
b2ludCA9ICdwc3RwJywKICBrZXlBRVN0eWxlcyA9ICdrc3R5Jwp9OwoKZW51bSB7CiAga2V5QUVT
dWl0ZUlEID0gJ3N1aXQnLAogIGtleUFFVGV4dCA9ICdrdHh0JywKICBrZXlBRVRleHRDb2xvciA9
ICdwdHhjJywKICBrZXlBRVRleHRGb250ID0gJ3B0eGYnLAogIGtleUFFVGV4dFBvaW50U2l6ZSA9
ICdwdHBzJywKICBrZXlBRVRleHRTdHlsZXMgPSAndHhzdCcsCiAga2V5QUVUZXh0TGluZUhlaWdo
dCA9ICdrdGxoJywKICBrZXlBRVRleHRMaW5lQXNjZW50ID0gJ2t0YXMnLAogIGtleUFFVGhlVGV4
dCA9ICd0aHR4JywKICBrZXlBRVRyYW5zZmVyTW9kZSA9ICdwcHRtJywKICBrZXlBRVRyYW5zbGF0
aW9uID0gJ3B0cnMnLAogIGtleUFFVHJ5QXNTdHJ1Y3RHcmFmID0gJ3Rvb2cnLAogIGtleUFFVW5p
Zm9ybVN0eWxlcyA9ICd1c3RsJywKICBrZXlBRVVwZGF0ZU9uID0gJ3B1cGQnLAogIGtleUFFVXNl
clRlcm0gPSAndXRybScsCiAga2V5QUVXaW5kb3cgPSAnd25kdycsCiAga2V5QUVXcml0aW5nQ29k
ZSA9ICd3cmNkJwp9OwoKZW51bSB7CiAga2V5TWlzY2VsbGFuZW91cyA9ICdmbXNjJywKICBrZXlT
ZWxlY3Rpb24gPSAnZnNlbCcsCiAga2V5V2luZG93ID0gJ2t3bmQnLAoKICBrZXlXaGVuID0gJ3do
ZW4nLAogIGtleVdoZXJlID0gJ3doZXInLAogIGtleU1vZGlmaWVycyA9ICdtb2RzJywKICBrZXlL
ZXkgPSAna2V5ICcsCiAga2V5S2V5Q29kZSA9ICdjb2RlJywKICBrZXlLZXlib2FyZCA9ICdrZXli
JywKICBrZXlEcml2ZU51bWJlciA9ICdkcnYjJywKICBrZXlFcnJvckNvZGUgPSAnZXJyIycsCiAg
a2V5SGlnaExldmVsQ2xhc3MgPSAnaGNscycsCiAga2V5SGlnaExldmVsSUQgPSAnaGlkICcKfTsK
CmVudW0gewogIHBBcmNBbmdsZSA9ICdwYXJjJywKICBwQmFja2dyb3VuZENvbG9yID0gJ3BiY2wn
LAogIHBCYWNrZ3JvdW5kUGF0dGVybiA9ICdwYnB0JywKICBwQmVzdFR5cGUgPSAncGJzdCcsCiAg
cEJvdW5kcyA9ICdwYm5kJywKICBwQ2xhc3MgPSAncGNscycsCiAgcENsaXBib2FyZCA9ICdwY2xp
JywKICBwQ29sb3IgPSAnY29scicsCiAgcENvbG9yVGFibGUgPSAnY2x0YicsCiAgcENvbnRlbnRz
ID0gJ3BjbnQnLAogIHBDb3JuZXJDdXJ2ZUhlaWdodCA9ICdwY2hkJywKICBwQ29ybmVyQ3VydmVX
aWR0aCA9ICdwY3dkJywKICBwRGFzaFN0eWxlID0gJ3Bkc3QnLAogIHBEZWZhdWx0VHlwZSA9ICdk
ZWZ0JywKICBwRGVmaW5pdGlvblJlY3QgPSAncGRydCcsCiAgcEVuYWJsZWQgPSAnZW5ibCcsCiAg
cEVuZFBvaW50ID0gJ3BlbmQnLAogIHBGaWxsQ29sb3IgPSAnZmxjbCcsCiAgcEZpbGxQYXR0ZXJu
ID0gJ2ZscHQnLAogIHBGb250ID0gJ2ZvbnQnCn07CgplbnVtIHsKICBwRm9ybXVsYSA9ICdwZm9y
JywKICBwR3JhcGhpY09iamVjdHMgPSAnZ29icycsCiAgcEhhc0Nsb3NlQm94ID0gJ2hjbGInLAog
IHBIYXNUaXRsZUJhciA9ICdwdGl0JywKICBwSUQgPSAnSUQgICcsCiAgcEluZGV4ID0gJ3BpZHgn
LAogIHBJbnNlcnRpb25Mb2MgPSAncGlucycsCiAgcElzRmxvYXRpbmcgPSAnaXNmbCcsCiAgcElz
RnJvbnRQcm9jZXNzID0gJ3Bpc2YnLAogIHBJc01vZGFsID0gJ3Btb2QnLAogIHBJc01vZGlmaWVk
ID0gJ2ltb2QnLAogIHBJc1Jlc2l6YWJsZSA9ICdwcnN6JywKICBwSXNTdGF0aW9uZXJ5UGFkID0g
J3BzcGQnLAogIHBJc1pvb21hYmxlID0gJ2lzem0nLAogIHBJc1pvb21lZCA9ICdwenVtJywKICBw
SXRlbU51bWJlciA9ICdpdG1uJywKICBwSnVzdGlmaWNhdGlvbiA9ICdwanN0JywKICBwTGluZUFy
cm93ID0gJ2Fycm8nLAogIHBNZW51SUQgPSAnbW5pZCcsCiAgcE5hbWUgPSAncG5hbScKfTsKCmVu
dW0gewogIHBOZXdFbGVtZW50TG9jID0gJ3BuZWwnLAogIHBQZW5Db2xvciA9ICdwcGNsJywKICBw
UGVuUGF0dGVybiA9ICdwcHBhJywKICBwUGVuV2lkdGggPSAncHB3ZCcsCiAgcFBpeGVsRGVwdGgg
PSAncGRwdCcsCiAgcFBvaW50TGlzdCA9ICdwdGx0JywKICBwUG9pbnRTaXplID0gJ3B0c3onLAog
IHBQcm90ZWN0aW9uID0gJ3Bwcm8nLAogIHBSb3RhdGlvbiA9ICdwcm90JywKICBwU2NhbGUgPSAn
cHNjbCcsCiAgcFNjcmlwdCA9ICdzY3B0JywKICBwU2NyaXB0VGFnID0gJ3BzY3QnLAogIHBTZWxl
Y3RlZCA9ICdzZWxjJywKICBwU2VsZWN0aW9uID0gJ3NlbGUnLAogIHBTdGFydEFuZ2xlID0gJ3Bh
bmcnLAogIHBTdGFydFBvaW50ID0gJ3BzdHAnLAogIHBUZXh0Q29sb3IgPSAncHR4YycsCiAgcFRl
eHRGb250ID0gJ3B0eGYnLAogIHBUZXh0SXRlbURlbGltaXRlcnMgPSAndHhkbCcsCiAgcFRleHRQ
b2ludFNpemUgPSAncHRwcycKfTsKCmVudW0gewogIHBUZXh0U3R5bGVzID0gJ3R4c3QnLAogIHBU
cmFuc2Zlck1vZGUgPSAncHB0bScsCiAgcFRyYW5zbGF0aW9uID0gJ3B0cnMnLAogIHBVbmlmb3Jt
U3R5bGVzID0gJ3VzdGwnLAogIHBVcGRhdGVPbiA9ICdwdXBkJywKICBwVXNlclNlbGVjdGlvbiA9
ICdwdXNsJywKICBwVmVyc2lvbiA9ICd2ZXJzJywKICBwVmlzaWJsZSA9ICdwdmlzJwp9OwoKZW51
bSB7CiAgdHlwZUFFVGV4dCA9ICd0VFhUJywKICB0eXBlQXJjID0gJ2NhcmMnLAogIHR5cGVCZXN0
ID0gJ2Jlc3QnLAogIHR5cGVDZWxsID0gJ2NjZWwnLAogIHR5cGVDbGFzc0luZm8gPSAnZ2NsaScs
CiAgdHlwZUNvbG9yVGFibGUgPSAnY2xydCcsCiAgdHlwZUNvbHVtbiA9ICdjY29sJywKICB0eXBl
RGFzaFN0eWxlID0gJ3RkYXMnLAogIHR5cGVEYXRhID0gJ3RkdGEnLAogIHR5cGVEcmF3aW5nQXJl
YSA9ICdjZHJ3JywKICB0eXBlRWxlbUluZm8gPSAnZWxpbicsCiAgdHlwZUVudW1lcmF0aW9uID0g
J2VudW0nLAogIHR5cGVFUFMgPSAnRVBTICcsCiAgdHlwZUV2ZW50SW5mbyA9ICdldmluJwp9OwoK
ZW51bSB7CiAgdHlwZUZpbmRlcldpbmRvdyA9ICdmd2luJywKICB0eXBlRml4ZWRQb2ludCA9ICdm
cG50JywKICB0eXBlRml4ZWRSZWN0YW5nbGUgPSAnZnJjdCcsCiAgdHlwZUdyYXBoaWNMaW5lID0g
J2dsaW4nLAogIHR5cGVHcmFwaGljVGV4dCA9ICdjZ3R4JywKICB0eXBlR3JvdXBlZEdyYXBoaWMg
PSAnY3BpYycsCiAgdHlwZUluc2VydGlvbkxvYyA9ICdpbnNsJywKICB0eXBlSW50bFRleHQgPSAn
aXR4dCcsCiAgdHlwZUludGxXcml0aW5nQ29kZSA9ICdpbnRsJywKICB0eXBlTG9uZ0RhdGVUaW1l
ID0gJ2xkdCAnLAogIHR5cGVDRkFic29sdXRlVGltZSA9ICdjZmF0JywKICB0eXBlSVNPODYwMURh
dGVUaW1lID0gJ2lzb3QnLAogIHR5cGVMb25nRml4ZWQgPSAnbGZ4ZCcsCiAgdHlwZUxvbmdGaXhl
ZFBvaW50ID0gJ2xmcHQnLAogIHR5cGVMb25nRml4ZWRSZWN0YW5nbGUgPSAnbGZyYycsCiAgdHlw
ZUxvbmdQb2ludCA9ICdscG50JywKICB0eXBlTG9uZ1JlY3RhbmdsZSA9ICdscmN0JywKICB0eXBl
TWFjaGluZUxvYyA9ICdtTG9jJywKICB0eXBlT3ZhbCA9ICdjb3ZsJywKICB0eXBlUGFyYW1JbmZv
ID0gJ3BtaW4nLAogIHR5cGVQaWN0ID0gJ1BJQ1QnCn07CgplbnVtIHsKICB0eXBlUGl4ZWxNYXAg
PSAnY3BpeCcsCiAgdHlwZVBpeE1hcE1pbnVzID0gJ3RwbW0nLAogIHR5cGVQb2x5Z29uID0gJ2Nw
Z24nLAogIHR5cGVQcm9wSW5mbyA9ICdwaW5mJywKICB0eXBlUHRyID0gJ3B0ciAnLAogIHR5cGVR
RFBvaW50ID0gJ1FEcHQnLAogIHR5cGVRRFJlZ2lvbiA9ICdRcmduJywKICB0eXBlUmVjdGFuZ2xl
ID0gJ2NyZWMnLAogIHR5cGVSR0IxNiA9ICd0cjE2JywKICB0eXBlUkdCOTYgPSAndHI5NicsCiAg
dHlwZVJHQkNvbG9yID0gJ2NSR0InLAogIHR5cGVSb3RhdGlvbiA9ICd0cm90JywKICB0eXBlUm91
bmRlZFJlY3RhbmdsZSA9ICdjcnJjJywKICB0eXBlUm93ID0gJ2Nyb3cnLAogIHR5cGVTY3JhcFN0
eWxlcyA9ICdzdHlsJywKICB0eXBlU2NyaXB0ID0gJ3NjcHQnLAogIHR5cGVTdHlsZWRUZXh0ID0g
J1NUWFQnLAogIHR5cGVTdWl0ZUluZm8gPSAnc3VpbicsCiAgdHlwZVRhYmxlID0gJ2N0YmwnLAog
IHR5cGVUZXh0U3R5bGVzID0gJ3RzdHknCn07CgplbnVtIHsKICB0eXBlVElGRiA9ICdUSUZGJywK
ICB0eXBlSlBFRyA9ICdKUEVHJywKICB0eXBlR0lGID0gJ0dJRmYnLAogIHR5cGVWZXJzaW9uID0g
J3ZlcnMnCn07CgplbnVtIHsKICBrQUVNZW51Q2xhc3MgPSAnbWVudScsCiAga0FFTWVudVNlbGVj
dCA9ICdtaGl0JywKICBrQUVNb3VzZURvd24gPSAnbWR3bicsCiAga0FFTW91c2VEb3duSW5CYWNr
ID0gJ21kYmsnLAogIGtBRUtleURvd24gPSAna2R3bicsCiAga0FFUmVzaXplZCA9ICdyc2l6JywK
ICBrQUVQcm9taXNlID0gJ3Byb20nCn07CgplbnVtIHsKICBrZXlNZW51SUQgPSAnbWlkICcsCiAg
a2V5TWVudUl0ZW0gPSAnbWl0bScsCiAga2V5Q2xvc2VBbGxXaW5kb3dzID0gJ2NhdyAnLAogIGtl
eU9yaWdpbmFsQm91bmRzID0gJ29ibmQnLAogIGtleU5ld0JvdW5kcyA9ICduYm5kJywKICBrZXlM
b2NhbFdoZXJlID0gJ2x3aHInCn07CgplbnVtIHsKICB0eXBlSElNZW51ID0gJ21vYmonLAogIHR5
cGVISVdpbmRvdyA9ICd3b2JqJwp9OwoKZW51bSB7CiAga0FFUXVpdFJlYXNvbiA9ICd3aHk/Jwp9
OwoKZW51bSB7CiAga0J5U21hbGxJY29uID0gMCwKICBrQnlJY29uVmlldyA9IDEsCiAga0J5TmFt
ZVZpZXcgPSAyLAogIGtCeURhdGVWaWV3ID0gMywKICBrQnlTaXplVmlldyA9IDQsCiAga0J5S2lu
ZFZpZXcgPSA1LAogIGtCeUNvbW1lbnRWaWV3ID0gNiwKICBrQnlMYWJlbFZpZXcgPSA3LAogIGtC
eVZlcnNpb25WaWV3ID0gOAp9OwoKZW51bSB7CiAga0FFSW5mbyA9IDExLAogIGtBRU1haW4gPSAw
LAogIGtBRVNoYXJpbmcgPSAxMwp9OwoKZW51bSB7CiAga0FFWm9vbUluID0gNywKICBrQUVab29t
T3V0ID0gOAp9OwoKZW51bSB7CiAga1RleHRTZXJ2aWNlQ2xhc3MgPSAndHN2YycsCiAga1VwZGF0
ZUFjdGl2ZUlucHV0QXJlYSA9ICd1cGR0JywKICBrU2hvd0hpZGVJbnB1dFdpbmRvdyA9ICdzaGl3
JywKICBrUG9zMk9mZnNldCA9ICdwMnN0JywKICBrT2Zmc2V0MlBvcyA9ICdzdDJwJywKICBrVW5p
Y29kZU5vdEZyb21JbnB1dE1ldGhvZCA9ICd1bmltJywKICBrR2V0U2VsZWN0ZWRUZXh0ID0gJ2d0
eHQnLAogIGtleUFFVFNNRG9jdW1lbnRSZWZjb24gPSAncmVmYycsCiAga2V5QUVTZXJ2ZXJJbnN0
YW5jZSA9ICdzcnZpJywKICBrZXlBRVRoZURhdGEgPSAna2RhdCcsCiAga2V5QUVGaXhMZW5ndGgg
PSAnZml4bCcsCiAga2V5QUVVcGRhdGVSYW5nZSA9ICd1ZG5nJywKICBrZXlBRUN1cnJlbnRQb2lu
dCA9ICdjcG9zJywKICBrZXlBRUJ1ZmZlclNpemUgPSAnYnVmZicsCiAga2V5QUVNb3ZlVmlldyA9
ICdtdnZ3JywKICBrZXlBRU5leHRCb2R5ID0gJ254YmQnLAogIGtleUFFVFNNU2NyaXB0VGFnID0g
J3NjbGcnLAogIGtleUFFVFNNVGV4dEZvbnQgPSAna3R4ZicsCiAga2V5QUVUU01UZXh0Rk1Gb250
ID0gJ2t0eG0nLAogIGtleUFFVFNNVGV4dFBvaW50U2l6ZSA9ICdrdHBzJywKICBrZXlBRVRTTUV2
ZW50UmVjb3JkID0gJ3RldnQnLAogIGtleUFFVFNNRXZlbnRSZWYgPSAndGV2cicsCiAga2V5QUVU
ZXh0U2VydmljZUVuY29kaW5nID0gJ3RzZW4nLAogIGtleUFFVGV4dFNlcnZpY2VNYWNFbmNvZGlu
ZyA9ICd0bWVuJywKICBrZXlBRVRTTUdseXBoSW5mb0FycmF5ID0gJ3RnaWEnLAogIHR5cGVUZXh0
UmFuZ2UgPSAndHhybicsCiAgdHlwZUNvbXBvbmVudEluc3RhbmNlID0gJ2NtcGknLAogIHR5cGVP
ZmZzZXRBcnJheSA9ICdvZmF5JywKICB0eXBlVGV4dFJhbmdlQXJyYXkgPSAndHJheScsCiAgdHlw
ZUxvd0xldmVsRXZlbnRSZWNvcmQgPSAnZXZ0cicsCiAgdHlwZUdseXBoSW5mb0FycmF5ID0gJ2ds
aWEnLAogIHR5cGVFdmVudFJlZiA9ICdldnJmJywKICB0eXBlVGV4dCA9IHR5cGVDaGFyCn07CgoK
CmVudW0gewogIGtUU01PdXRzaWRlT2ZCb2R5ID0gMSwKICBrVFNNSW5zaWRlT2ZCb2R5ID0gMiwK
ICBrVFNNSW5zaWRlT2ZBY3RpdmVJbnB1dEFyZWEgPSAzCn07CgplbnVtIHsKICBrTmV4dEJvZHkg
PSAxLAogIGtQcmV2aW91c0JvZHkgPSAyCn07CgpzdHJ1Y3QgVGV4dFJhbmdlIHsKICBTSW50MzIg
ZlN0YXJ0OwogIFNJbnQzMiBmRW5kOwogIFNJbnQxNiBmSGlsaXRlU3R5bGU7Cn07CnR5cGVkZWYg
c3RydWN0IFRleHRSYW5nZSBUZXh0UmFuZ2U7CnR5cGVkZWYgVGV4dFJhbmdlICogVGV4dFJhbmdl
UHRyOwp0eXBlZGVmIFRleHRSYW5nZVB0ciAqIFRleHRSYW5nZUhhbmRsZTsKc3RydWN0IFRleHRS
YW5nZUFycmF5IHsKICBTSW50MTYgZk51bU9mUmFuZ2VzOwogIFRleHRSYW5nZSBmUmFuZ2VbMV07
Cn07CnR5cGVkZWYgc3RydWN0IFRleHRSYW5nZUFycmF5IFRleHRSYW5nZUFycmF5Owp0eXBlZGVm
IFRleHRSYW5nZUFycmF5ICogVGV4dFJhbmdlQXJyYXlQdHI7CnR5cGVkZWYgVGV4dFJhbmdlQXJy
YXlQdHIgKiBUZXh0UmFuZ2VBcnJheUhhbmRsZTsKc3RydWN0IE9mZnNldEFycmF5IHsKICBTSW50
MTYgZk51bU9mT2Zmc2V0czsKICBTSW50MzIgZk9mZnNldFsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
T2Zmc2V0QXJyYXkgT2Zmc2V0QXJyYXk7CnR5cGVkZWYgT2Zmc2V0QXJyYXkgKiBPZmZzZXRBcnJh
eVB0cjsKdHlwZWRlZiBPZmZzZXRBcnJheVB0ciAqIE9mZnNldEFycmF5SGFuZGxlOwpzdHJ1Y3Qg
V3JpdGluZ0NvZGUgewogIFNjcmlwdENvZGUgdGhlU2NyaXB0Q29kZTsKICBMYW5nQ29kZSB0aGVM
YW5nQ29kZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgV3JpdGluZ0NvZGUgV3JpdGluZ0NvZGU7CnN0cnVj
dCBJbnRsVGV4dCB7CiAgU2NyaXB0Q29kZSB0aGVTY3JpcHRDb2RlOwogIExhbmdDb2RlIHRoZUxh
bmdDb2RlOwogIGNoYXIgdGhlVGV4dFsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSW50bFRleHQgSW50
bFRleHQ7CgoKZW51bSB7CiAga1RTTUhpbGl0ZUNhcmV0UG9zaXRpb24gPSAxLAogIGtUU01IaWxp
dGVSYXdUZXh0ID0gMiwKICBrVFNNSGlsaXRlU2VsZWN0ZWRSYXdUZXh0ID0gMywKICBrVFNNSGls
aXRlQ29udmVydGVkVGV4dCA9IDQsCiAga1RTTUhpbGl0ZVNlbGVjdGVkQ29udmVydGVkVGV4dCA9
IDUsCiAga1RTTUhpbGl0ZUJsb2NrRmlsbFRleHQgPSA2LAogIGtUU01IaWxpdGVPdXRsaW5lVGV4
dCA9IDcsCiAga1RTTUhpbGl0ZVNlbGVjdGVkVGV4dCA9IDgsCiAga1RTTUhpbGl0ZU5vSGlsaXRl
ID0gOQp9OwojIDc0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFUmVnaXN0cnkuaCIgMwpl
bnVtIHsKICBrZXlBRUhpbGl0ZVJhbmdlID0gJ2hybmcnLAogIGtleUFFUGluUmFuZ2UgPSAncG5y
ZycsCiAga2V5QUVDbGF1c2VPZmZzZXRzID0gJ2NsYXUnLAogIGtleUFFT2Zmc2V0ID0gJ29mc3Qn
LAogIGtleUFFUG9pbnQgPSAnZ3BvcycsCiAga2V5QUVMZWZ0U2lkZSA9ICdrbGVmJywKICBrZXlB
RVJlZ2lvbkNsYXNzID0gJ3JnbmMnLAogIGtleUFFRHJhZ2dpbmcgPSAnYm9vbCcKfTsKIyA3Njcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRVJlZ2lzdHJ5LmgiIDMKZW51bSB7CgogIHR5cGVN
ZXRlcnMgPSAnbWV0cicsCiAgdHlwZUluY2hlcyA9ICdpbmNoJywKICB0eXBlRmVldCA9ICdmZWV0
JywKICB0eXBlWWFyZHMgPSAneWFyZCcsCiAgdHlwZU1pbGVzID0gJ21pbGUnLAogIHR5cGVLaWxv
bWV0ZXJzID0gJ2ttdHInLAogIHR5cGVDZW50aW1ldGVycyA9ICdjbXRyJywKICB0eXBlU3F1YXJl
TWV0ZXJzID0gJ3Nxcm0nLAogIHR5cGVTcXVhcmVGZWV0ID0gJ3NxZnQnLAogIHR5cGVTcXVhcmVZ
YXJkcyA9ICdzcXlkJywKICB0eXBlU3F1YXJlTWlsZXMgPSAnc3FtaScsCiAgdHlwZVNxdWFyZUtp
bG9tZXRlcnMgPSAnc3FrbScsCiAgdHlwZUxpdGVycyA9ICdsaXRyJywKICB0eXBlUXVhcnRzID0g
J3FydHMnLAogIHR5cGVHYWxsb25zID0gJ2dhbG4nLAogIHR5cGVDdWJpY01ldGVycyA9ICdjbWV0
JywKICB0eXBlQ3ViaWNGZWV0ID0gJ2NmZXQnLAogIHR5cGVDdWJpY0luY2hlcyA9ICdjdWluJywK
ICB0eXBlQ3ViaWNDZW50aW1ldGVyID0gJ2NjbXQnLAogIHR5cGVDdWJpY1lhcmRzID0gJ2N5cmQn
LAogIHR5cGVLaWxvZ3JhbXMgPSAna2dybScsCiAgdHlwZUdyYW1zID0gJ2dyYW0nLAogIHR5cGVP
dW5jZXMgPSAnb3pzICcsCiAgdHlwZVBvdW5kcyA9ICdsYnMgJywKICB0eXBlRGVncmVlc0MgPSAn
ZGVnYycsCiAgdHlwZURlZ3JlZXNGID0gJ2RlZ2YnLAogIHR5cGVEZWdyZWVzSyA9ICdkZWdrJwp9
OwoKZW51bSB7CgogIGtGQVNlcnZlckFwcCA9ICdzc3J2JywKICBrRG9Gb2xkZXJBY3Rpb25FdmVu
dCA9ICdmb2xhJywKICBrRm9sZGVyQWN0aW9uQ29kZSA9ICdhY3RuJywKICBrRm9sZGVyT3BlbmVk
RXZlbnQgPSAnZm9wbicsCiAga0ZvbGRlckNsb3NlZEV2ZW50ID0gJ2ZjbG8nLAogIGtGb2xkZXJX
aW5kb3dNb3ZlZEV2ZW50ID0gJ2ZzaXonLAogIGtGb2xkZXJJdGVtc0FkZGVkRXZlbnQgPSAnZmdl
dCcsCiAga0ZvbGRlckl0ZW1zUmVtb3ZlZEV2ZW50ID0gJ2Zsb3MnLAogIGtJdGVtTGlzdCA9ICdm
bHN0JywKICBrTmV3U2l6ZVBhcmFtZXRlciA9ICdmbnN6JywKICBrRkFTdWl0ZUNvZGUgPSAnZmFj
bycsCiAga0ZBQXR0YWNoQ29tbWFuZCA9ICdhdGZhJywKICBrRkFSZW1vdmVDb21tYW5kID0gJ3Jt
ZmEnLAogIGtGQUVkaXRDb21tYW5kID0gJ2VkZmEnLAogIGtGQUZpbGVQYXJhbSA9ICdmYWFsJywK
ICBrRkFJbmRleFBhcmFtID0gJ2luZHgnCn07CgoKZW51bSB7CgogIGtBRUludGVybmV0U3VpdGUg
PSAnZ3VybCcsCiAga0FFSVNXZWJTdGFyU3VpdGUgPSAweDU3NTc1N0JECn07CgplbnVtIHsKCiAg
a0FFSVNHZXRVUkwgPSAnZ3VybCcsCiAgS0FFSVNIYW5kbGVDR0kgPSAnc2RvYycKfTsKCmVudW0g
ewoKICBjVVJMID0gJ3VybCAnLAogIGNJbnRlcm5ldEFkZHJlc3MgPSAnSVBBRCcsCiAgY0hUTUwg
PSAnaHRtbCcsCiAgY0ZUUEl0ZW0gPSAnZnRwICcKfTsKCmVudW0gewoKICBrQUVJU0hUVFBTZWFy
Y2hBcmdzID0gJ2tmb3InLAogIGtBRUlTUG9zdEFyZ3MgPSAncG9zdCcsCiAga0FFSVNNZXRob2Qg
PSAnbWV0aCcsCiAga0FFSVNDbGllbnRBZGRyZXNzID0gJ2FkZHInLAogIGtBRUlTVXNlck5hbWUg
PSAndXNlcicsCiAga0FFSVNQYXNzd29yZCA9ICdwYXNzJywKICBrQUVJU0Zyb21Vc2VyID0gJ2Zy
bXUnLAogIGtBRUlTU2VydmVyTmFtZSA9ICdzdm5tJywKICBrQUVJU1NlcnZlclBvcnQgPSAnc3Zw
dCcsCiAga0FFSVNTY3JpcHROYW1lID0gJ3Njbm0nLAogIGtBRUlTQ29udGVudFR5cGUgPSAnY3R5
cCcsCiAga0FFSVNSZWZlcnJlciA9ICdyZWZyJywKICBrQUVJU1VzZXJBZ2VudCA9ICdBZ250JywK
ICBrQUVJU0FjdGlvbiA9ICdLYWN0JywKICBrQUVJU0FjdGlvblBhdGggPSAnS2FwdCcsCiAga0FF
SVNDbGllbnRJUCA9ICdLY2lwJywKICBrQUVJU0Z1bGxSZXF1ZXN0ID0gJ0tmcnEnCn07CgplbnVt
IHsKCiAgcFNjaGVtZSA9ICdwdXNjJywKICBwSG9zdCA9ICdIT1NUJywKICBwUGF0aCA9ICdGVFBj
JywKICBwVXNlck5hbWUgPSAnUkF1bicsCiAgcFVzZXJQYXNzd29yZCA9ICdSQXB3JywKICBwRE5T
Rm9ybSA9ICdwRE5TJywKICBwVVJMID0gJ3BVUkwnLAogIHBUZXh0RW5jb2RpbmcgPSAncHR4ZScs
CiAgcEZUUEtpbmQgPSAna2luZCcKfTsKCmVudW0gewoKICBlU2NoZW1lID0gJ2VzY2gnLAogIGV1
cmxIVFRQID0gJ2h0dHAnLAogIGV1cmxIVFRQUyA9ICdodHBzJywKICBldXJsRlRQID0gJ2Z0cCAn
LAogIGV1cmxNYWlsID0gJ21haWwnLAogIGV1cmxGaWxlID0gJ2ZpbGUnLAogIGV1cmxHb3BoZXIg
PSAnZ3BocicsCiAgZXVybFRlbG5ldCA9ICd0bG50JywKICBldXJsTmV3cyA9ICduZXdzJywKICBl
dXJsU05ld3MgPSAnc253cycsCiAgZXVybE5OVFAgPSAnbm50cCcsCiAgZXVybE1lc3NhZ2UgPSAn
bWVzcycsCiAgZXVybE1haWxib3ggPSAnbWJveCcsCiAgZXVybE11bHRpID0gJ211bHQnLAogIGV1
cmxMYXVuY2ggPSAnbGF1bicsCiAgZXVybEFGUCA9ICdhZnAgJywKICBldXJsQVQgPSAnYXQgICcs
CiAgZXVybEVQUEMgPSAnZXBwYycsCiAgZXVybFJUU1AgPSAncnRzcCcsCiAgZXVybElNQVAgPSAn
aW1hcCcsCiAgZXVybE5GUyA9ICd1bmZzJywKICBldXJsUE9QID0gJ3Vwb3AnLAogIGV1cmxMREFQ
ID0gJ3VsZHAnLAogIGV1cmxVbmtub3duID0gJ3VybD8nCn07CgplbnVtIHsKCiAga0Nvbm5TdWl0
ZSA9ICdtYWNjJywKICBjRGV2U3BlYyA9ICdjZGV2JywKICBjQWRkcmVzc1NwZWMgPSAnY2Fkcics
CiAgY0FEQkFkZHJlc3MgPSAnY2FkYicsCiAgY0FwcGxlVGFsa0FkZHJlc3MgPSAnY2F0ICcsCiAg
Y0J1c0FkZHJlc3MgPSAnY2J1cycsCiAgY0V0aGVybmV0QWRkcmVzcyA9ICdjZW4gJywKICBjRmly
ZVdpcmVBZGRyZXNzID0gJ2NmdyAnLAogIGNJUEFkZHJlc3MgPSAnY2lwICcsCiAgY0xvY2FsVGFs
a0FkZHJlc3MgPSAnY2x0ICcsCiAgY1NDU0lBZGRyZXNzID0gJ2NzY3MnLAogIGNUb2tlblJpbmdB
ZGRyZXNzID0gJ2N0b2snLAogIGNVU0JBZGRyZXNzID0gJ2N1c2InLAoKICBwRGV2aWNlVHlwZSA9
ICdwZHZ0JywKICBwRGV2aWNlQWRkcmVzcyA9ICdwZHZhJywKICBwQ29uZHVpdCA9ICdwY29uJywK
ICBwUHJvdG9jb2wgPSAncHBydCcsCiAgcEFUTWFjaGluZSA9ICdwYXRtJywKICBwQVRab25lID0g
J3BhdHonLAogIHBBVFR5cGUgPSAncGF0dCcsCiAgcERvdHRlZERlY2ltYWwgPSAncGlwZCcsCiAg
cEROUyA9ICdwZG5zJywKICBwUG9ydCA9ICdwcG9yJywKICBwTmV0d29yayA9ICdwbmV0JywKICBw
Tm9kZSA9ICdwbm9kJywKICBwU29ja2V0ID0gJ3Bzb2MnLAogIHBTQ1NJQnVzID0gJ3BzY2InLAog
IHBTQ1NJTFVOID0gJ3BzbHUnLAoKICBlRGV2aWNlVHlwZSA9ICdlZHZ0JywKICBlQWRkcmVzc1Nw
ZWMgPSAnZWFkcycsCiAgZUNvbmR1aXQgPSAnZWNvbicsCiAgZVByb3RvY29sID0gJ2Vwcm8nLAog
IGVBREIgPSAnZWFkYicsCiAgZUFuYWxvZ0F1ZGlvID0gJ2VwYXUnLAogIGVBcHBsZVRhbGsgPSAn
ZXBhdCcsCiAgZUF1ZGlvTGluZUluID0gJ2VjYWknLAogIGVBdWRpb0xpbmVPdXQgPSAnZWNhbCcs
CiAgZUF1ZGlvT3V0ID0gJ2VjYW8nLAogIGVCdXMgPSAnZWJ1cycsCiAgZUNEUk9NID0gJ2VjZCAn
LAogIGVDb21tU2xvdCA9ICdlY2NtJywKICBlRGlnaXRhbEF1ZGlvID0gJ2VwZGEnLAogIGVEaXNw
bGF5ID0gJ2VkZHMnLAogIGVEVkQgPSAnZWR2ZCcsCiAgZUV0aGVybmV0ID0gJ2VjZW4nLAogIGVG
aXJlV2lyZSA9ICdlY2Z3JywKICBlRmxvcHB5ID0gJ2VmZCAnLAogIGVIRCA9ICdlaGQgJywKICBl
SW5mcmFyZWQgPSAnZWNpcicsCiAgZUlQID0gJ2VwaXAnLAogIGVJckRBID0gJ2VwaXInLAogIGVJ
UlRhbGsgPSAnZXBpdCcsCiAgZUtleWJvYXJkID0gJ2VrYmQnLAogIGVMQ0QgPSAnZWRsYycsCiAg
ZUxvY2FsVGFsayA9ICdlY2x0JywKICBlTWFjSVAgPSAnZXBtaScsCiAgZU1hY1ZpZGVvID0gJ2Vw
bXYnLAogIGVNaWNyb3Bob25lID0gJ2VjbWknLAogIGVNb2RlbVBvcnQgPSAnZWNtcCcsCiAgZU1v
ZGVtUHJpbnRlclBvcnQgPSAnZW1wcCcsCiAgZU1vZGVtID0gJ2VkbW0nLAogIGVNb25pdG9yT3V0
ID0gJ2VjbW4nLAogIGVNb3VzZSA9ICdlbW91JywKICBlTnVCdXNDYXJkID0gJ2VkbmInLAogIGVO
dUJ1cyA9ICdlbnViJywKICBlUENjYXJkID0gJ2VjcGMnLAogIGVQQ0lidXMgPSAnZWNwaScsCiAg
ZVBDSWNhcmQgPSAnZWRwaScsCiAgZVBEU3Nsb3QgPSAnZWNwZCcsCiAgZVBEU2NhcmQgPSAnZXBk
cycsCiAgZVBvaW50aW5nRGV2aWNlID0gJ2VkcGQnLAogIGVQb3N0U2NyaXB0ID0gJ2VwcHMnLAog
IGVQUFAgPSAnZXBwcCcsCiAgZVByaW50ZXJQb3J0ID0gJ2VjcHAnLAogIGVQcmludGVyID0gJ2Vk
cHInLAogIGVTdmlkZW8gPSAnZXBzdicsCiAgZVNDU0kgPSAnZWNzYycsCiAgZVNlcmlhbCA9ICdl
cHNyJywKICBlU3BlYWtlcnMgPSAnZWRzcCcsCiAgZVN0b3JhZ2VEZXZpY2UgPSAnZWRzdCcsCiAg
ZVNWR0EgPSAnZXBzZycsCiAgZVRva2VuUmluZyA9ICdldG9rJywKICBlVHJhY2tiYWxsID0gJ2V0
cmsnLAogIGVUcmFja3BhZCA9ICdlZHRwJywKICBlVVNCID0gJ2VjdXMnLAogIGVWaWRlb0luID0g
J2VjdmknLAogIGVWaWRlb01vbml0b3IgPSAnZWR2bScsCiAgZVZpZGVvT3V0ID0gJ2Vjdm8nCn07
CgplbnVtIHsKCiAgY0tleXN0cm9rZSA9ICdrcHJzJywKICBwS2V5c3Ryb2tlS2V5ID0gJ2tNc2cn
LAogIHBNb2RpZmllcnMgPSAna01vZCcsCiAgcEtleUtpbmQgPSAna2tuZCcsCiAgZU1vZGlmaWVy
cyA9ICdlTWRzJywKICBlT3B0aW9uRG93biA9ICdLb3B0JywKICBlQ29tbWFuZERvd24gPSAnS2Nt
ZCcsCiAgZUNvbnRyb2xEb3duID0gJ0tjdGwnLAogIGVTaGlmdERvd24gPSAnS3NmdCcsCiAgZUNh
cHNMb2NrRG93biA9ICdLY2xrJywKICBlS2V5S2luZCA9ICdla3N0JywKCiAgZUVzY2FwZUtleSA9
IDB4NkI3MzM1MDAsCiAgZURlbGV0ZUtleSA9IDB4NkI3MzMzMDAsCiAgZVRhYktleSA9IDB4NkI3
MzMwMDAsCiAgZVJldHVybktleSA9IDB4NkI3MzI0MDAsCiAgZUNsZWFyS2V5ID0gMHg2QjczNDcw
MCwKICBlRW50ZXJLZXkgPSAweDZCNzM0QzAwLAogIGVVcEFycm93S2V5ID0gMHg2QjczN0UwMCwK
ICBlRG93bkFycm93S2V5ID0gMHg2QjczN0QwMCwKICBlTGVmdEFycm93S2V5ID0gMHg2QjczN0Iw
MCwKICBlUmlnaHRBcnJvd0tleSA9IDB4NkI3MzdDMDAsCiAgZUhlbHBLZXkgPSAweDZCNzM3MjAw
LAogIGVIb21lS2V5ID0gMHg2QjczNzMwMCwKICBlUGFnZVVwS2V5ID0gMHg2QjczNzQwMCwKICBl
UGFnZURvd25LZXkgPSAweDZCNzM3OTAwLAogIGVGb3J3YXJkRGVsS2V5ID0gMHg2QjczNzUwMCwK
ICBlRW5kS2V5ID0gMHg2QjczNzcwMCwKICBlRjFLZXkgPSAweDZCNzM3QTAwLAogIGVGMktleSA9
IDB4NkI3Mzc4MDAsCiAgZUYzS2V5ID0gMHg2QjczNjMwMCwKICBlRjRLZXkgPSAweDZCNzM3NjAw
LAogIGVGNUtleSA9IDB4NkI3MzYwMDAsCiAgZUY2S2V5ID0gMHg2QjczNjEwMCwKICBlRjdLZXkg
PSAweDZCNzM2MjAwLAogIGVGOEtleSA9IDB4NkI3MzY0MDAsCiAgZUY5S2V5ID0gMHg2QjczNjUw
MCwKICBlRjEwS2V5ID0gMHg2QjczNkQwMCwKICBlRjExS2V5ID0gMHg2QjczNjcwMCwKICBlRjEy
S2V5ID0gMHg2QjczNkYwMCwKICBlRjEzS2V5ID0gMHg2QjczNjkwMCwKICBlRjE0S2V5ID0gMHg2
QjczNkIwMCwKICBlRjE1S2V5ID0gMHg2QjczNzEwMAp9OwoKZW51bSB7CiAga2V5QUVMYXVuY2hl
ZEFzTG9nSW5JdGVtID0gJ2xnaXQnLAogIGtleUFFTGF1bmNoZWRBc1NlcnZpY2VJdGVtID0gJ3N2
aXQnCn07CgoKI3ByYWdtYSBwYWNrKHBvcCkKIyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJz
L0FFLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRVVzZXJUZXJtVHlw
ZXMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRVVzZXJUZXJtVHlwZXMu
aCIgMwojZGVmaW5lIF9fQUVVU0VSVEVSTVRZUEVTX18gCiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsv
SGVhZGVycy9BRVVzZXJUZXJtVHlwZXMuaCIgMwojcHJhZ21hIHBhY2socHVzaCwgMikKCmVudW0g
ewogIGtBRVVzZXJUZXJtaW5vbG9neSA9ICdhZXV0JywKICBrQUVUZXJtaW5vbG9neUV4dGVuc2lv
biA9ICdhZXRlJywKICBrQUVTY3JpcHRpbmdTaXplUmVzb3VyY2UgPSAnc2NzeicsCiAga0FFT1NB
WFNpemVSZXNvdXJjZSA9ICdvc2l6Jwp9OwoKZW51bSB7CiAga0FFVVRIYXNSZXR1cm5pbmdQYXJh
bSA9IDMxLAogIGtBRVVUT3B0aW9uYWwgPSAxNSwKICBrQUVVVGxpc3RPZkl0ZW1zID0gMTQsCiAg
a0FFVVRFbnVtZXJhdGVkID0gMTMsCiAga0FFVVRSZWFkV3JpdGUgPSAxMiwKICBrQUVVVENoYW5n
ZXNTdGF0ZSA9IDEyLAogIGtBRVVUVGlnaHRCaW5kaW5nRnVuY3Rpb24gPSAxMiwKCiAga0FFVVRF
bnVtc0FyZVR5cGVzID0gMTEsCiAga0FFVVRFbnVtTGlzdElzRXhjbHVzaXZlID0gMTAsCiAga0FF
VVRSZXBseUlzUmVmZXJlbmNlID0gOSwKICBrQUVVVERpcmVjdFBhcmFtSXNSZWZlcmVuY2UgPSA5
LAogIGtBRVVUUGFyYW1Jc1JlZmVyZW5jZSA9IDksCiAga0FFVVRQcm9wZXJ0eUlzUmVmZXJlbmNl
ID0gOSwKICBrQUVVVE5vdERpcmVjdFBhcmFtSXNUYXJnZXQgPSA4LAogIGtBRVVUUGFyYW1Jc1Rh
cmdldCA9IDgsCiAga0FFVVRBcG9zdHJvcGhlID0gMywKICBrQUVVVEZlbWluaW5lID0gMiwKICBr
QUVVVE1hc2N1bGluZSA9IDEsCiAga0FFVVRQbHVyYWwgPSAwCn07CgpzdHJ1Y3QgVFNjcmlwdGlu
Z1NpemVSZXNvdXJjZSB7CiAgU0ludDE2IHNjcmlwdGluZ1NpemVGbGFnczsKICBVSW50MzIgbWlu
U3RhY2tTaXplOwogIFVJbnQzMiBwcmVmZXJyZWRTdGFja1NpemU7CiAgVUludDMyIG1heFN0YWNr
U2l6ZTsKICBVSW50MzIgbWluSGVhcFNpemU7CiAgVUludDMyIHByZWZlcnJlZEhlYXBTaXplOwog
IFVJbnQzMiBtYXhIZWFwU2l6ZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgVFNjcmlwdGluZ1NpemVSZXNv
dXJjZSBUU2NyaXB0aW5nU2l6ZVJlc291cmNlOwplbnVtIHsKICBrTGF1bmNoVG9HZXRUZXJtaW5v
bG9neSA9ICgxIDw8IDE1KSwKICBrRG9udEZpbmRBcHBCeVNpZ25hdHVyZSA9ICgxIDw8IDE0KSwK
ICBrQWx3YXlzU2VuZFN1YmplY3QgPSAoMSA8PCAxMykKfTsKCgplbnVtIHsKICBrUmVhZEV4dGVu
c2lvblRlcm1zTWFzayA9ICgxIDw8IDE1KQp9OwoKZW51bSB7CgoKICBrT1NJWkRvbnRPcGVuUmVz
b3VyY2VGaWxlID0gMTUsCiAga09TSVpkb250QWNjZXB0UmVtb3RlRXZlbnRzID0gMTQsCiAga09T
SVpPcGVuV2l0aFJlYWRQZXJtaXNzaW9uID0gMTMsCiAga09TSVpDb2RlSW5TaGFyZWRMaWJyYXJp
ZXMgPSAxMQp9OwoKCiNwcmFnbWEgcGFjayhwb3ApCiMgNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVh
ZGVycy9BRS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVIZWxwZXJz
LmgiIDEgMwojIDIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVIZWxwZXJzLmgiIDMKI2Rl
ZmluZSBfX0FFSEVMUEVSU19fIAojIDQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVIZWxw
ZXJzLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCiMgNjMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9B
RS5mcmFtZXdvcmsvSGVhZGVycy9BRUhlbHBlcnMuaCIgMwp0eXBlZGVmIFVJbnQzMiBBRUJ1aWxk
RXJyb3JDb2RlOwplbnVtIHsKICBhZUJ1aWxkU3ludGF4Tm9FcnIgPSAwLAogIGFlQnVpbGRTeW50
YXhCYWRUb2tlbiA9IDEsCiAgYWVCdWlsZFN5bnRheEJhZEVPRiA9IDIsCiAgYWVCdWlsZFN5bnRh
eE5vRU9GID0gMywKICBhZUJ1aWxkU3ludGF4QmFkTmVnYXRpdmUgPSA0LAogIGFlQnVpbGRTeW50
YXhNaXNzaW5nUXVvdGUgPSA1LAogIGFlQnVpbGRTeW50YXhCYWRIZXggPSA2LAogIGFlQnVpbGRT
eW50YXhPZGRIZXggPSA3LAogIGFlQnVpbGRTeW50YXhOb0Nsb3NlSGV4ID0gOCwKICBhZUJ1aWxk
U3ludGF4VW5jb2VyY2VkSGV4ID0gOSwKICBhZUJ1aWxkU3ludGF4Tm9DbG9zZVN0cmluZyA9IDEw
LAogIGFlQnVpbGRTeW50YXhCYWREZXNjID0gMTEsCiAgYWVCdWlsZFN5bnRheEJhZERhdGEgPSAx
MiwKICBhZUJ1aWxkU3ludGF4Tm9DbG9zZVBhcmVuID0gMTMsCiAgYWVCdWlsZFN5bnRheE5vQ2xv
c2VCcmFja2V0ID0gMTQsCiAgYWVCdWlsZFN5bnRheE5vQ2xvc2VCcmFjZSA9IDE1LAogIGFlQnVp
bGRTeW50YXhOb0tleSA9IDE2LAogIGFlQnVpbGRTeW50YXhOb0NvbG9uID0gMTcsCiAgYWVCdWls
ZFN5bnRheENvZXJjZWRMaXN0ID0gMTgsCiAgYWVCdWlsZFN5bnRheFVuY29lcmNlZERvdWJsZUF0
ID0gMTkKfTsKCgoKc3RydWN0IEFFQnVpbGRFcnJvciB7CiAgQUVCdWlsZEVycm9yQ29kZSBmRXJy
b3I7CiAgVUludDMyIGZFcnJvclBvczsKfTsKdHlwZWRlZiBzdHJ1Y3QgQUVCdWlsZEVycm9yIEFF
QnVpbGRFcnJvcjsKIyAxMDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRUhlbHBlcnMuaCIg
MwpleHRlcm4gT1NTdGF0dXMKQUVCdWlsZERlc2MoCiAgQUVEZXNjICogZHN0LAogIEFFQnVpbGRF
cnJvciAqIGVycm9yLAogIGNvbnN0IGNoYXIgKiBzcmMsCiAgLi4uKSA7CiMgMTI5ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUu
ZnJhbWV3b3JrL0hlYWRlcnMvQUVIZWxwZXJzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCnZBRUJ1aWxk
RGVzYygKICBBRURlc2MgKiBkc3QsCiAgQUVCdWlsZEVycm9yICogZXJyb3IsCiAgY29uc3QgY2hh
ciAqIHNyYywKICB2YV9saXN0IGFyZ3MpIDsKIyAxNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVy
cy9BRUhlbHBlcnMuaCIgMwpleHRlcm4gT1NTdGF0dXMKQUVCdWlsZFBhcmFtZXRlcnMoCiAgQXBw
bGVFdmVudCAqIGV2ZW50LAogIEFFQnVpbGRFcnJvciAqIGVycm9yLAogIGNvbnN0IGNoYXIgKiBm
b3JtYXQsCiAgLi4uKSA7CiMgMTcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVIZWxwZXJz
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCnZBRUJ1aWxkUGFyYW1ldGVycygKICBBcHBsZUV2ZW50ICog
ZXZlbnQsCiAgQUVCdWlsZEVycm9yICogZXJyb3IsCiAgY29uc3QgY2hhciAqIGZvcm1hdCwKICB2
YV9saXN0IGFyZ3MpIDsKIyAxOTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRUhlbHBlcnMu
aCIgMwpleHRlcm4gT1NTdGF0dXMKQUVCdWlsZEFwcGxlRXZlbnQoCiAgQUVFdmVudENsYXNzIHRo
ZUNsYXNzLAogIEFFRXZlbnRJRCB0aGVJRCwKICBEZXNjVHlwZSBhZGRyZXNzVHlwZSwKICBjb25z
dCB2b2lkICogYWRkcmVzc0RhdGEsCiAgU2l6ZSBhZGRyZXNzTGVuZ3RoLAogIFNJbnQxNiByZXR1
cm5JRCwKICBTSW50MzIgdHJhbnNhY3Rpb25JRCwKICBBcHBsZUV2ZW50ICogcmVzdWx0LAogIEFF
QnVpbGRFcnJvciAqIGVycm9yLAogIGNvbnN0IGNoYXIgKiBwYXJhbXNGbXQsCiAgLi4uKSA7CiMg
MjE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVIZWxwZXJzLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzCnZBRUJ1aWxkQXBwbGVFdmVudCgKICBBRUV2ZW50Q2xhc3MgdGhlQ2xhc3MsCiAgQUVFdmVu
dElEIHRoZUlELAogIERlc2NUeXBlIGFkZHJlc3NUeXBlLAogIGNvbnN0IHZvaWQgKiBhZGRyZXNz
RGF0YSwKICBTaXplIGFkZHJlc3NMZW5ndGgsCiAgU0ludDE2IHJldHVybklELAogIFNJbnQzMiB0
cmFuc2FjdGlvbklELAogIEFwcGxlRXZlbnQgKiByZXN1bHRFdnQsCiAgQUVCdWlsZEVycm9yICog
ZXJyb3IsCiAgY29uc3QgY2hhciAqIHBhcmFtc0ZtdCwKICB2YV9saXN0IGFyZ3MpIDsKIyAyNTIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRUhlbHBlcnMuaCIgMwpleHRlcm4gT1NTdGF0dXMK
QUVQcmludERlc2NUb0hhbmRsZSgKICBjb25zdCBBRURlc2MgKiBkZXNjLAogIEhhbmRsZSAqIHJl
c3VsdCkgOwojIDI2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFSGVscGVycy5oIiAzCnR5
cGVkZWYgc3RydWN0IE9wYXF1ZUFFU3RyZWFtUmVmKiBBRVN0cmVhbVJlZjsKIyAyODQgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9B
RS5mcmFtZXdvcmsvSGVhZGVycy9BRUhlbHBlcnMuaCIgMwpleHRlcm4gQUVTdHJlYW1SZWYKQUVT
dHJlYW1PcGVuKHZvaWQpIDsKIyAzMDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRUhlbHBl
cnMuaCIgMwpleHRlcm4gT1NTdGF0dXMKQUVTdHJlYW1DbG9zZSgKICBBRVN0cmVhbVJlZiByZWYs
CiAgQUVEZXNjICogZGVzYykgOwojIDMyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFSGVs
cGVycy5oIiAzCmV4dGVybiBPU1N0YXR1cwpBRVN0cmVhbU9wZW5EZXNjKAogIEFFU3RyZWFtUmVm
IHJlZiwKICBEZXNjVHlwZSBuZXdUeXBlKSA7CiMgMzQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRl
cnMvQUVIZWxwZXJzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFFU3RyZWFtV3JpdGVEYXRhKAogIEFF
U3RyZWFtUmVmIHJlZiwKICBjb25zdCB2b2lkICogZGF0YSwKICBTaXplIGxlbmd0aCkgOwojIDM2
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFSGVscGVycy5oIiAzCmV4dGVybiBPU1N0YXR1
cwpBRVN0cmVhbUNsb3NlRGVzYyhBRVN0cmVhbVJlZiByZWYpIDsKIyAzODEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFt
ZXdvcmsvSGVhZGVycy9BRUhlbHBlcnMuaCIgMwpleHRlcm4gT1NTdGF0dXMKQUVTdHJlYW1Xcml0
ZURlc2MoCiAgQUVTdHJlYW1SZWYgcmVmLAogIERlc2NUeXBlIG5ld1R5cGUsCiAgY29uc3Qgdm9p
ZCAqIGRhdGEsCiAgU2l6ZSBsZW5ndGgpIDsKIyA0MDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVy
cy9BRUhlbHBlcnMuaCIgMwpleHRlcm4gT1NTdGF0dXMKQUVTdHJlYW1Xcml0ZUFFRGVzYygKICBB
RVN0cmVhbVJlZiByZWYsCiAgY29uc3QgQUVEZXNjICogZGVzYykgOwojIDQyMiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZy
YW1ld29yay9IZWFkZXJzL0FFSGVscGVycy5oIiAzCmV4dGVybiBPU1N0YXR1cwpBRVN0cmVhbU9w
ZW5MaXN0KEFFU3RyZWFtUmVmIHJlZikgOwojIDQzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJz
L0FFSGVscGVycy5oIiAzCmV4dGVybiBPU1N0YXR1cwpBRVN0cmVhbUNsb3NlTGlzdChBRVN0cmVh
bVJlZiByZWYpIDsKIyA0NTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRUhlbHBlcnMuaCIg
MwpleHRlcm4gT1NTdGF0dXMKQUVTdHJlYW1PcGVuUmVjb3JkKAogIEFFU3RyZWFtUmVmIHJlZiwK
ICBEZXNjVHlwZSBuZXdUeXBlKSA7CiMgNDc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVI
ZWxwZXJzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFFU3RyZWFtU2V0UmVjb3JkVHlwZSgKICBBRVN0
cmVhbVJlZiByZWYsCiAgRGVzY1R5cGUgbmV3VHlwZSkgOwojIDQ5MyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29y
ay9IZWFkZXJzL0FFSGVscGVycy5oIiAzCmV4dGVybiBPU1N0YXR1cwpBRVN0cmVhbUNsb3NlUmVj
b3JkKEFFU3RyZWFtUmVmIHJlZikgOwojIDUxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FF
SGVscGVycy5oIiAzCmV4dGVybiBPU1N0YXR1cwpBRVN0cmVhbVdyaXRlS2V5RGVzYygKICBBRVN0
cmVhbVJlZiByZWYsCiAgQUVLZXl3b3JkIGtleSwKICBEZXNjVHlwZSBuZXdUeXBlLAogIGNvbnN0
IHZvaWQgKiBkYXRhLAogIFNpemUgbGVuZ3RoKSA7CiMgNTM2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hl
YWRlcnMvQUVIZWxwZXJzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFFU3RyZWFtT3BlbktleURlc2Mo
CiAgQUVTdHJlYW1SZWYgcmVmLAogIEFFS2V5d29yZCBrZXksCiAgRGVzY1R5cGUgbmV3VHlwZSkg
OwojIDU1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFSGVscGVycy5oIiAzCmV4dGVybiBP
U1N0YXR1cwpBRVN0cmVhbVdyaXRlS2V5KAogIEFFU3RyZWFtUmVmIHJlZiwKICBBRUtleXdvcmQg
a2V5KSA7CiMgNTc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVIZWxwZXJzLmgiIDMKZXh0
ZXJuIEFFU3RyZWFtUmVmCkFFU3RyZWFtQ3JlYXRlRXZlbnQoCiAgQUVFdmVudENsYXNzIGNsYXp6
LAogIEFFRXZlbnRJRCBpZCwKICBEZXNjVHlwZSB0YXJnZXRUeXBlLAogIGNvbnN0IHZvaWQgKiB0
YXJnZXREYXRhLAogIFNpemUgdGFyZ2V0TGVuZ3RoLAogIFNJbnQxNiByZXR1cm5JRCwKICBTSW50
MzIgdHJhbnNhY3Rpb25JRCkgOwojIDYwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFSGVs
cGVycy5oIiAzCmV4dGVybiBBRVN0cmVhbVJlZgpBRVN0cmVhbU9wZW5FdmVudChBcHBsZUV2ZW50
ICogZXZlbnQpIDsKIyA2MjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRUhlbHBlcnMuaCIg
MwpleHRlcm4gT1NTdGF0dXMKQUVTdHJlYW1PcHRpb25hbFBhcmFtKAogIEFFU3RyZWFtUmVmIHJl
ZiwKICBBRUtleXdvcmQga2V5KSA7CgoKCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDUwICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
QUUuZnJhbWV3b3JrL0hlYWRlcnMvQUUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9I
ZWFkZXJzL0FFTWFjaC5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFTWFj
aC5oIiAzCiNkZWZpbmUgX19BRU1BQ0hfXyAKIyAzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJz
L0FFTWFjaC5oIiAzCmV4dGVybiAiQyIgewoKCgp9CiMgNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVh
ZGVycy9BRU1hY2guaCIgMwpleHRlcm4gIkMiIHsKIyA4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFk
ZXJzL0FFTWFjaC5oIiAzCmVudW0gewogIGtleVJlcGx5UG9ydEF0dHIgPSAncmVwcCcKfTsKCgpl
bnVtIHsKICB0eXBlUmVwbHlQb3J0QXR0ciA9IGtleVJlcGx5UG9ydEF0dHIKfTsKIyAxMTIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRU1hY2guaCIgMwpleHRlcm4gbWFjaF9wb3J0X3QKQUVH
ZXRSZWdpc3RlcmVkTWFjaFBvcnQodm9pZCkgOwojIDE1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFk
ZXJzL0FFTWFjaC5oIiAzCmV4dGVybiBPU1N0YXR1cwpBRURlY29kZU1lc3NhZ2UoCiAgbWFjaF9t
c2dfaGVhZGVyX3QgKiBoZWFkZXIsCiAgQXBwbGVFdmVudCAqIGV2ZW50LAogIEFwcGxlRXZlbnQg
KiByZXBseSkgOwojIDE3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9IZWFkZXJzL0FFTWFjaC5oIiAzCmV4
dGVybiBPU1N0YXR1cwpBRVByb2Nlc3NNZXNzYWdlKG1hY2hfbXNnX2hlYWRlcl90ICogaGVhZGVy
KSA7CiMgMjE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQUUuZnJhbWV3b3JrL0hlYWRlcnMvQUVNYWNoLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCkFFU2VuZE1lc3NhZ2UoCiAgY29uc3QgQXBwbGVFdmVudCAqIGV2ZW50LAogIEFwcGxl
RXZlbnQgKiByZXBseSwKICBBRVNlbmRNb2RlIHNlbmRNb2RlLAogIGxvbmcgdGltZU91dEluVGlj
a3MpIDsKCgoKCgp9CiMgNTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvSGVhZGVycy9BRS5oIiAyIDMKIyAy
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9IZWFk
ZXJzL0NvcmVTZXJ2aWNlcy5oIiAyIDMKCgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvT1NTZXJ2aWNlcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvT1NTZXJ2aWNlcy5oIiAzCiNkZWZpbmUgX19PU1NFUlZJQ0VTX18gCiMgMzAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL09TU2VydmljZXMuaCIgMwojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHlBdXRob3JpdHkuaCIgMSAz
CiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHlBdXRob3Jp
dHkuaCIgMwojZGVmaW5lIF9fQ1NJREVOVElUWUFVVEhPUklUWV9fIAojIDMyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5QXV0aG9yaXR5LmgiIDMKZXh0ZXJuICJD
IiB7CiMgNDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHlBdXRo
b3JpdHkuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX0NTSWRlbnRpdHlBdXRob3JpdHkqIENTSWRlbnRp
dHlBdXRob3JpdHlSZWY7CiMgNjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NT
SWRlbnRpdHlBdXRob3JpdHkuaCIgMwpleHRlcm4gQ0ZUeXBlSUQKQ1NJZGVudGl0eUF1dGhvcml0
eUdldFR5cGVJRCh2b2lkKSA7CiMgODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L0NTSWRlbnRpdHlBdXRob3JpdHkuaCIgMwpleHRlcm4gQ1NJZGVudGl0eUF1dGhvcml0eVJlZgpD
U0dldERlZmF1bHRJZGVudGl0eUF1dGhvcml0eSh2b2lkKSA7CiMgMTEyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNl
cy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5QXV0aG9yaXR5LmgiIDMKZXh0ZXJuIENTSWRl
bnRpdHlBdXRob3JpdHlSZWYKQ1NHZXRMb2NhbElkZW50aXR5QXV0aG9yaXR5KHZvaWQpIDsKIyAx
NDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHlBdXRob3JpdHku
aCIgMwpleHRlcm4gQ1NJZGVudGl0eUF1dGhvcml0eVJlZgpDU0dldE1hbmFnZWRJZGVudGl0eUF1
dGhvcml0eSh2b2lkKSA7CiMgMTY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9D
U0lkZW50aXR5QXV0aG9yaXR5LmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmCkNTSWRlbnRpdHlBdXRo
b3JpdHlDb3B5TG9jYWxpemVkTmFtZShDU0lkZW50aXR5QXV0aG9yaXR5UmVmIGF1dGhvcml0eSkg
OwoKCgoKCn0KIyAzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvT1NTZXJ2aWNl
cy5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50
aXR5LmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50
aXR5LmgiIDMKI2RlZmluZSBfX0NTSURFTlRJVFlfXyAKIyA0NiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eS5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFj
ayhwdXNoLCAyKQojIDYzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50
aXR5LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDU0lkZW50aXR5RXJyb3JEb21haW4g
OwoKCgoKCgoKZW51bSB7CgoKCgogIGtDU0lkZW50aXR5VW5rbm93bkF1dGhvcml0eUVyciA9IC0x
LAoKCgoKICBrQ1NJZGVudGl0eUF1dGhvcml0eU5vdEFjY2Vzc2libGVFcnIgPSAtMiwKCgoKCiAg
a0NTSWRlbnRpdHlQZXJtaXNzaW9uRXJyID0gLTMsCgoKCgogIGtDU0lkZW50aXR5RGVsZXRlZEVy
ciA9IC00LAoKCgoKICBrQ1NJZGVudGl0eUludmFsaWRGdWxsTmFtZUVyciA9IC01LAoKCgoKICBr
Q1NJZGVudGl0eUR1cGxpY2F0ZUZ1bGxOYW1lRXJyID0gLTYsCgoKCgoKICBrQ1NJZGVudGl0eUlu
dmFsaWRQb3NpeE5hbWVFcnIgPSAtNywKCgoKCiAga0NTSWRlbnRpdHlEdXBsaWNhdGVQb3NpeE5h
bWVFcnIgPSAtOAp9OwojIDE0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJ
ZGVudGl0eS5oIiAzCnR5cGVkZWYgc3RydWN0IF9fQ1NJZGVudGl0eSogQ1NJZGVudGl0eVJlZjsK
IyAxNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHkuaCIgMwp0
eXBlZGVmIHN0cnVjdCBfX0NTSWRlbnRpdHlRdWVyeSogQ1NJZGVudGl0eVF1ZXJ5UmVmOwojIDE3
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eS5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrQ1NJZGVudGl0eUdlbmVyYXRlUG9zaXhOYW1lIDsKIyAxODAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHkuaCIgMwplbnVtIHsK
CgoKCiAga0NTSWRlbnRpdHlDbGFzc1VzZXIgPSAxLAoKCgoKICBrQ1NJZGVudGl0eUNsYXNzR3Jv
dXAgPSAyCn07Cgp0eXBlZGVmIENGSW5kZXggQ1NJZGVudGl0eUNsYXNzOwoKCgoKCgoKZW51bSB7
CgoKCgogIGtDU0lkZW50aXR5RmxhZ05vbmUgPSAwLAojIDIxNSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eS5oIiAzCiAga0NTSWRlbnRpdHlGbGFnSGlkZGVuID0g
MQp9OwoKdHlwZWRlZiBDRk9wdGlvbkZsYWdzIENTSWRlbnRpdHlGbGFnczsKIyAyMzYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9P
U1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHkuaCIgMwpleHRlcm4gQ0ZUeXBl
SUQKQ1NJZGVudGl0eUdldFR5cGVJRCh2b2lkKSA7CiMgMjk4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5LmgiIDMKZXh0ZXJuIENTSWRlbnRpdHlSZWYKQ1NJZGVu
dGl0eUNyZWF0ZSgKICBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsCiAgQ1NJZGVudGl0eUNsYXNz
IGlkZW50aXR5Q2xhc3MsCiAgQ0ZTdHJpbmdSZWYgZnVsbE5hbWUsCiAgQ0ZTdHJpbmdSZWYgcG9z
aXhOYW1lLAogIENTSWRlbnRpdHlGbGFncyBmbGFncywKICBDU0lkZW50aXR5QXV0aG9yaXR5UmVm
IGF1dGhvcml0eSkgOwojIDMzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJ
ZGVudGl0eS5oIiAzCmV4dGVybiBDU0lkZW50aXR5UmVmCkNTSWRlbnRpdHlDcmVhdGVDb3B5KAog
IENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwKICBDU0lkZW50aXR5UmVmIGlkZW50aXR5KSA7CiMg
MzY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5LmgiIDMKZXh0
ZXJuIENTSWRlbnRpdHlDbGFzcwpDU0lkZW50aXR5R2V0Q2xhc3MoQ1NJZGVudGl0eVJlZiBpZGVu
dGl0eSkgOwojIDM5NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0
eS5oIiAzCmV4dGVybiBDU0lkZW50aXR5QXV0aG9yaXR5UmVmCkNTSWRlbnRpdHlHZXRBdXRob3Jp
dHkoQ1NJZGVudGl0eVJlZiBpZGVudGl0eSkgOwojIDQyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvQ1NJZGVudGl0eS5oIiAzCmV4dGVybiBDRlVVSURSZWYKQ1NJZGVudGl0eUdl
dFVVSUQoQ1NJZGVudGl0eVJlZiBpZGVudGl0eSkgOwojIDQ1NiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eS5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZgpDU0lkZW50
aXR5R2V0RnVsbE5hbWUoQ1NJZGVudGl0eVJlZiBpZGVudGl0eSkgOwojIDQ4MyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vy
dmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eS5oIiAzCmV4dGVybiBpZF90CkNTSWRl
bnRpdHlHZXRQb3NpeElEKENTSWRlbnRpdHlSZWYgaWRlbnRpdHkpIDsKIyA1MTYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1Nl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHkuaCIgMwpleHRlcm4gQ0ZTdHJpbmdS
ZWYKQ1NJZGVudGl0eUdldFBvc2l4TmFtZShDU0lkZW50aXR5UmVmIGlkZW50aXR5KSA7CiMgNTQ1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5LmgiIDMKZXh0ZXJu
IENGU3RyaW5nUmVmCkNTSWRlbnRpdHlHZXRFbWFpbEFkZHJlc3MoQ1NJZGVudGl0eVJlZiBpZGVu
dGl0eSkgOwojIDU3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0
eS5oIiAzCmV4dGVybiBDRlVSTFJlZgpDU0lkZW50aXR5R2V0SW1hZ2VVUkwoQ1NJZGVudGl0eVJl
ZiBpZGVudGl0eSkgOwojIDYwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJ
ZGVudGl0eS5oIiAzCmV4dGVybiBDRkRhdGFSZWYKQ1NJZGVudGl0eUdldEltYWdlRGF0YShDU0lk
ZW50aXR5UmVmIGlkZW50aXR5KSA7CiMgNjMzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9DU0lkZW50aXR5LmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmCkNTSWRlbnRpdHlHZXRJbWFn
ZURhdGFUeXBlKENTSWRlbnRpdHlSZWYgaWRlbnRpdHkpIDsKIyA2NjggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHkuaCIgMwpleHRlcm4gQ0ZBcnJheVJlZgpDU0lk
ZW50aXR5R2V0QWxpYXNlcyhDU0lkZW50aXR5UmVmIGlkZW50aXR5KSA7CiMgNjk5ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5LmgiIDMKZXh0ZXJuIEJvb2xlYW4K
Q1NJZGVudGl0eUlzTWVtYmVyT2ZHcm91cCgKICBDU0lkZW50aXR5UmVmIGlkZW50aXR5LAogIENT
SWRlbnRpdHlSZWYgZ3JvdXApIDsKIyA3MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFk
ZXJzL0NTSWRlbnRpdHkuaCIgMwpleHRlcm4gQm9vbGVhbgpDU0lkZW50aXR5SXNIaWRkZW4oQ1NJ
ZGVudGl0eVJlZiBpZGVudGl0eSkgOwojIDc3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hl
YWRlcnMvQ1NJZGVudGl0eS5oIiAzCmV4dGVybiBDRkRhdGFSZWYKQ1NJZGVudGl0eUNyZWF0ZVBl
cnNpc3RlbnRSZWZlcmVuY2UoCiAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLAogIENTSWRlbnRp
dHlSZWYgaWRlbnRpdHkpIDsKIyA4MTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L0NTSWRlbnRpdHkuaCIgMwpleHRlcm4gQm9vbGVhbgpDU0lkZW50aXR5SXNFbmFibGVkKENTSWRl
bnRpdHlSZWYgdXNlcikgOwojIDg0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
Q1NJZGVudGl0eS5oIiAzCmV4dGVybiBCb29sZWFuCkNTSWRlbnRpdHlBdXRoZW50aWNhdGVVc2lu
Z1Bhc3N3b3JkKAogIENTSWRlbnRpdHlSZWYgdXNlciwKICBDRlN0cmluZ1JlZiBwYXNzd29yZCkg
OwojIDg3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eS5oIiAz
CmV4dGVybiBTZWNDZXJ0aWZpY2F0ZVJlZgpDU0lkZW50aXR5R2V0Q2VydGlmaWNhdGUoQ1NJZGVu
dGl0eVJlZiB1c2VyKSA7CiMgOTE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9D
U0lkZW50aXR5LmgiIDMKZXh0ZXJuIENTSWRlbnRpdHlRdWVyeVJlZgpDU0lkZW50aXR5Q3JlYXRl
R3JvdXBNZW1iZXJzaGlwUXVlcnkoCiAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLAogIENTSWRl
bnRpdHlSZWYgZ3JvdXApIDsKIyA5NTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L0NTSWRlbnRpdHkuaCIgMwpleHRlcm4gdm9pZApDU0lkZW50aXR5U2V0RnVsbE5hbWUoCiAgQ1NJ
ZGVudGl0eVJlZiBpZGVudGl0eSwKICBDRlN0cmluZ1JlZiBmdWxsTmFtZSkgOwojIDk4OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eS5oIiAzCmV4dGVybiB2b2lk
CkNTSWRlbnRpdHlTZXRFbWFpbEFkZHJlc3MoCiAgQ1NJZGVudGl0eVJlZiBpZGVudGl0eSwKICBD
RlN0cmluZ1JlZiBlbWFpbEFkZHJlc3MpIDsKIyAxMDIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdv
cmsvSGVhZGVycy9DU0lkZW50aXR5LmgiIDMKZXh0ZXJuIHZvaWQKQ1NJZGVudGl0eVNldEltYWdl
VVJMKAogIENTSWRlbnRpdHlSZWYgaWRlbnRpdHksCiAgQ0ZVUkxSZWYgdXJsKSA7CiMgMTA1OCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eS5oIiAzCmV4dGVybiB2
b2lkCkNTSWRlbnRpdHlTZXRJbWFnZURhdGEoCiAgQ1NJZGVudGl0eVJlZiBpZGVudGl0eSwKICBD
RkRhdGFSZWYgaW1hZ2VEYXRhLAogIENGU3RyaW5nUmVmIGltYWdlRGF0YVR5cGUpIDsKIyAxMDkx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5LmgiIDMKZXh0ZXJu
IHZvaWQKQ1NJZGVudGl0eUFkZEFsaWFzKAogIENTSWRlbnRpdHlSZWYgaWRlbnRpdHksCiAgQ0ZT
dHJpbmdSZWYgYWxpYXMpIDsKIyAxMTIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9DU0lkZW50aXR5LmgiIDMKZXh0ZXJuIHZvaWQKQ1NJZGVudGl0eVJlbW92ZUFsaWFzKAogIENT
SWRlbnRpdHlSZWYgaWRlbnRpdHksCiAgQ0ZTdHJpbmdSZWYgYWxpYXMpIDsKIyAxMTYyICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
T1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5LmgiIDMKZXh0ZXJuIHZvaWQK
Q1NJZGVudGl0eUFkZE1lbWJlcigKICBDU0lkZW50aXR5UmVmIGdyb3VwLAogIENTSWRlbnRpdHlS
ZWYgbWVtYmVyKSA7CiMgMTE5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJ
ZGVudGl0eS5oIiAzCmV4dGVybiB2b2lkCkNTSWRlbnRpdHlSZW1vdmVNZW1iZXIoCiAgQ1NJZGVu
dGl0eVJlZiBncm91cCwKICBDU0lkZW50aXR5UmVmIG1lbWJlcikgOwojIDEyMzYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1Nl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHkuaCIgMwpleHRlcm4gdm9pZApDU0lk
ZW50aXR5U2V0SXNFbmFibGVkKAogIENTSWRlbnRpdHlSZWYgdXNlciwKICBCb29sZWFuIGlzRW5h
YmxlZCkgOwojIDEyNzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRp
dHkuaCIgMwpleHRlcm4gdm9pZApDU0lkZW50aXR5U2V0UGFzc3dvcmQoCiAgQ1NJZGVudGl0eVJl
ZiB1c2VyLAogIENGU3RyaW5nUmVmIHBhc3N3b3JkKSA7CiMgMTMwOCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eS5oIiAzCmV4dGVybiB2b2lkCkNTSWRlbnRpdHlT
ZXRDZXJ0aWZpY2F0ZSgKICBDU0lkZW50aXR5UmVmIHVzZXIsCiAgU2VjQ2VydGlmaWNhdGVSZWYg
Y2VydGlmaWNhdGUpIDsKIyAxMzQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9D
U0lkZW50aXR5LmgiIDMKZXh0ZXJuIHZvaWQKQ1NJZGVudGl0eURlbGV0ZShDU0lkZW50aXR5UmVm
IGlkZW50aXR5KSA7CiMgMTM4OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJ
ZGVudGl0eS5oIiAzCmV4dGVybiBCb29sZWFuCkNTSWRlbnRpdHlDb21taXQoCiAgQ1NJZGVudGl0
eVJlZiBpZGVudGl0eSwKICBBdXRob3JpemF0aW9uUmVmIGF1dGhvcml6YXRpb24sCiAgQ0ZFcnJv
clJlZiAqIGVycm9yKSA7CiMgMTQwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
Q1NJZGVudGl0eS5oIiAzCmVudW0gewoKCgoKICBrQ1NJZGVudGl0eUNvbW1pdENvbXBsZXRlZCA9
IDEKfTsKCgp0eXBlZGVmIHZvaWQgKCAqIENTSWRlbnRpdHlTdGF0dXNVcGRhdGVkQ2FsbGJhY2sp
KENTSWRlbnRpdHlSZWYgaWRlbnRpdHksIENGSW5kZXggc3RhdHVzLCBDRkVycm9yUmVmIGVycm9y
LCB2b2lkICppbmZvKTsKIyAxNDIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9D
U0lkZW50aXR5LmgiIDMKc3RydWN0IENTSWRlbnRpdHlDbGllbnRDb250ZXh0IHsKCgoKCgogIENG
SW5kZXggdmVyc2lvbjsKCgoKCgogIHZvaWQgKiBpbmZvOwojIDE0NDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHkuaCIgMwogIENGQWxsb2NhdG9yUmV0YWluQ2Fs
bEJhY2sgcmV0YWluOwoKCgoKCiAgQ0ZBbGxvY2F0b3JSZWxlYXNlQ2FsbEJhY2sgcmVsZWFzZTsK
CgoKCgoKICBDRkFsbG9jYXRvckNvcHlEZXNjcmlwdGlvbkNhbGxCYWNrIGNvcHlEZXNjcmlwdGlv
bjsKCgoKCgogIENTSWRlbnRpdHlTdGF0dXNVcGRhdGVkQ2FsbGJhY2sgc3RhdHVzVXBkYXRlZDsK
fTsKdHlwZWRlZiBzdHJ1Y3QgQ1NJZGVudGl0eUNsaWVudENvbnRleHQgQ1NJZGVudGl0eUNsaWVu
dENvbnRleHQ7CiMgMTUwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVu
dGl0eS5oIiAzCmV4dGVybiBCb29sZWFuCkNTSWRlbnRpdHlDb21taXRBc3luY2hyb25vdXNseSgK
ICBDU0lkZW50aXR5UmVmIGlkZW50aXR5LAogIGNvbnN0IENTSWRlbnRpdHlDbGllbnRDb250ZXh0
ICogY2xpZW50Q29udGV4dCwKICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCwKICBDRlN0cmluZ1JlZiBy
dW5Mb29wTW9kZSwKICBBdXRob3JpemF0aW9uUmVmIGF1dGhvcml6YXRpb24pIDsKIyAxNTM5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5LmgiIDMKZXh0ZXJuIEJv
b2xlYW4KQ1NJZGVudGl0eUlzQ29tbWl0dGluZyhDU0lkZW50aXR5UmVmIGlkZW50aXR5KSA7CiMg
MTU3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eS5oIiAzCmV4
dGVybiB2b2lkCkNTSWRlbnRpdHlSZW1vdmVDbGllbnQoQ1NJZGVudGl0eVJlZiBpZGVudGl0eSkg
OwoKCgoKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgMzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL09TU2VydmljZXMuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvQ1NJZGVudGl0eVF1ZXJ5LmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5UXVlcnkuaCIgMwojZGVmaW5lIF9fQ1NJREVOVElU
WVFVRVJZX18gCiMgMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRp
dHlRdWVyeS5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQojIDUzICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5UXVlcnkuaCIgMwpleHRl
cm4gQ0ZUeXBlSUQKQ1NJZGVudGl0eVF1ZXJ5R2V0VHlwZUlEKHZvaWQpIDsKIyA2OCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09T
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eVF1ZXJ5LmgiIDMKZW51bSB7CgoK
CgoKICBrQ1NJZGVudGl0eVF1ZXJ5R2VuZXJhdGVVcGRhdGVFdmVudHMgPSAweDAwMDEsCgoKCgoK
ICBrQ1NJZGVudGl0eVF1ZXJ5SW5jbHVkZUhpZGRlbklkZW50aXRpZXMgPSAweDAwMDIKfTsKCnR5
cGVkZWYgQ0ZPcHRpb25GbGFncyBDU0lkZW50aXR5UXVlcnlGbGFnczsKIyA5NSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vy
dmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eVF1ZXJ5LmgiIDMKZW51bSB7CgoKCgog
IGtDU0lkZW50aXR5UXVlcnlTdHJpbmdFcXVhbHMgPSAxLAoKCgoKICBrQ1NJZGVudGl0eVF1ZXJ5
U3RyaW5nQmVnaW5zV2l0aCA9IDIKfTsKCnR5cGVkZWYgQ0ZJbmRleCBDU0lkZW50aXR5UXVlcnlT
dHJpbmdDb21wYXJpc29uTWV0aG9kOwojIDE0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hl
YWRlcnMvQ1NJZGVudGl0eVF1ZXJ5LmgiIDMKZXh0ZXJuIENTSWRlbnRpdHlRdWVyeVJlZgpDU0lk
ZW50aXR5UXVlcnlDcmVhdGUoCiAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLAogIENTSWRlbnRp
dHlDbGFzcyBpZGVudGl0eUNsYXNzLAogIENTSWRlbnRpdHlBdXRob3JpdHlSZWYgYXV0aG9yaXR5
KSA7CiMgMTg4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5UXVl
cnkuaCIgMwpleHRlcm4gQ1NJZGVudGl0eVF1ZXJ5UmVmCkNTSWRlbnRpdHlRdWVyeUNyZWF0ZUZv
ck5hbWUoCiAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLAogIENGU3RyaW5nUmVmIG5hbWUsCiAg
Q1NJZGVudGl0eVF1ZXJ5U3RyaW5nQ29tcGFyaXNvbk1ldGhvZCBjb21wYXJpc29uTWV0aG9kLAog
IENTSWRlbnRpdHlDbGFzcyBpZGVudGl0eUNsYXNzLAogIENTSWRlbnRpdHlBdXRob3JpdHlSZWYg
YXV0aG9yaXR5KSA7CiMgMjI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lk
ZW50aXR5UXVlcnkuaCIgMwpleHRlcm4gQ1NJZGVudGl0eVF1ZXJ5UmVmCkNTSWRlbnRpdHlRdWVy
eUNyZWF0ZUZvclVVSUQoCiAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLAogIENGVVVJRFJlZiB1
dWlkLAogIENTSWRlbnRpdHlBdXRob3JpdHlSZWYgYXV0aG9yaXR5KSA7CiMgMjcxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5UXVlcnkuaCIgMwpleHRlcm4gQ1NJ
ZGVudGl0eVF1ZXJ5UmVmCkNTSWRlbnRpdHlRdWVyeUNyZWF0ZUZvclBvc2l4SUQoCiAgQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLAogIGlkX3QgcG9zaXhJRCwKICBDU0lkZW50aXR5Q2xhc3MgaWRl
bnRpdHlDbGFzcywKICBDU0lkZW50aXR5QXV0aG9yaXR5UmVmIGF1dGhvcml0eSkgOwojIDMxMCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVudGl0eVF1ZXJ5LmgiIDMKZXh0
ZXJuIENTSWRlbnRpdHlRdWVyeVJlZgpDU0lkZW50aXR5UXVlcnlDcmVhdGVGb3JQZXJzaXN0ZW50
UmVmZXJlbmNlKAogIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwKICBDRkRhdGFSZWYgcmVmZXJl
bmNlRGF0YSkgOwojIDMzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVu
dGl0eVF1ZXJ5LmgiIDMKZXh0ZXJuIENTSWRlbnRpdHlRdWVyeVJlZgpDU0lkZW50aXR5UXVlcnlD
cmVhdGVGb3JDdXJyZW50VXNlcihDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IpIDsKIyAzNzAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0NTSWRlbnRpdHlRdWVyeS5oIiAzCmV4dGVy
biBDRkFycmF5UmVmCkNTSWRlbnRpdHlRdWVyeUNvcHlSZXN1bHRzKENTSWRlbnRpdHlRdWVyeVJl
ZiBxdWVyeSkgOwojIDQwNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ1NJZGVu
dGl0eVF1ZXJ5LmgiIDMKZXh0ZXJuIEJvb2xlYW4KQ1NJZGVudGl0eVF1ZXJ5RXhlY3V0ZSgKICBD
U0lkZW50aXR5UXVlcnlSZWYgcXVlcnksCiAgQ1NJZGVudGl0eVF1ZXJ5RmxhZ3MgZmxhZ3MsCiAg
Q0ZFcnJvclJlZiAqIGVycm9yKSA7CiMgNDIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9DU0lkZW50aXR5UXVlcnkuaCIgMwplbnVtIHsKCgoKCgoKICBrQ1NJZGVudGl0eVF1ZXJ5
RXZlbnRTZWFyY2hQaGFzZUZpbmlzaGVkID0gMSwKCgoKCiAga0NTSWRlbnRpdHlRdWVyeUV2ZW50
UmVzdWx0c0FkZGVkID0gMiwKCgoKCgogIGtDU0lkZW50aXR5UXVlcnlFdmVudFJlc3VsdHNDaGFu
Z2VkID0gMywKCgoKCiAga0NTSWRlbnRpdHlRdWVyeUV2ZW50UmVzdWx0c1JlbW92ZWQgPSA0LAoK
CgoKCiAga0NTSWRlbnRpdHlRdWVyeUV2ZW50RXJyb3JPY2N1cnJlZCA9IDUKfTsKCnR5cGVkZWYg
Q0ZJbmRleCBDU0lkZW50aXR5UXVlcnlFdmVudDsKIyA0ODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzL0NTSWRlbnRpdHlRdWVyeS5oIiAzCnR5cGVkZWYgdm9pZCAoICogQ1NJZGVu
dGl0eVF1ZXJ5UmVjZWl2ZUV2ZW50Q2FsbGJhY2spKENTSWRlbnRpdHlRdWVyeVJlZiBxdWVyeSwg
Q1NJZGVudGl0eVF1ZXJ5RXZlbnQgZXZlbnQsIENGQXJyYXlSZWYgaWRlbnRpdGllcywgQ0ZFcnJv
clJlZiBlcnJvciwgdm9pZCAqaW5mbyk7CgoKCgoKCgpzdHJ1Y3QgQ1NJZGVudGl0eVF1ZXJ5Q2xp
ZW50Q29udGV4dCB7CiAgQ0ZJbmRleCB2ZXJzaW9uOwogIHZvaWQgKiBpbmZvOwogIENGQWxsb2Nh
dG9yUmV0YWluQ2FsbEJhY2sgcmV0YWluSW5mbzsKICBDRkFsbG9jYXRvclJlbGVhc2VDYWxsQmFj
ayByZWxlYXNlSW5mbzsKICBDRkFsbG9jYXRvckNvcHlEZXNjcmlwdGlvbkNhbGxCYWNrIGNvcHlJ
bmZvRGVzY3JpcHRpb247CiAgQ1NJZGVudGl0eVF1ZXJ5UmVjZWl2ZUV2ZW50Q2FsbGJhY2sgcmVj
ZWl2ZUV2ZW50Owp9Owp0eXBlZGVmIHN0cnVjdCBDU0lkZW50aXR5UXVlcnlDbGllbnRDb250ZXh0
IENTSWRlbnRpdHlRdWVyeUNsaWVudENvbnRleHQ7CiMgNTMzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9DU0lkZW50aXR5UXVlcnkuaCIgMwpleHRlcm4gQm9vbGVhbgpDU0lkZW50
aXR5UXVlcnlFeGVjdXRlQXN5bmNocm9ub3VzbHkoCiAgQ1NJZGVudGl0eVF1ZXJ5UmVmIHF1ZXJ5
LAogIENTSWRlbnRpdHlRdWVyeUZsYWdzIGZsYWdzLAogIGNvbnN0IENTSWRlbnRpdHlRdWVyeUNs
aWVudENvbnRleHQgKiBjbGllbnRDb250ZXh0LAogIENGUnVuTG9vcFJlZiBydW5Mb29wLAogIENG
U3RyaW5nUmVmIHJ1bkxvb3BNb2RlKSA7CiMgNTY4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9DU0lkZW50aXR5UXVlcnkuaCIgMwpleHRlcm4gdm9pZApDU0lkZW50aXR5UXVlcnlT
dG9wKENTSWRlbnRpdHlRdWVyeVJlZiBxdWVyeSkgOwoKCgoKI3ByYWdtYSBwYWNrKHBvcCkKCgp9
CiMgMzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL09TU2VydmljZXMuaCIgMiAz
CgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvblN0b3JhZ2UuaCIg
MSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ljb25TdG9yYWdlLmgi
IDMKI2RlZmluZSBfX0lDT05TVE9SQUdFX18gCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0ljb25TdG9yYWdlLmgiIDMKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgoKCmVudW0g
ewogIGtJY29uU2VydmljZXMxNlBpeGVsRGF0YUFSR0IgPSAnaWMwNCcsCiAga0ljb25TZXJ2aWNl
czMyUGl4ZWxEYXRhQVJHQiA9ICdpYzA1JywKICBrSWNvblNlcnZpY2VzNDhQaXhlbERhdGFBUkdC
ID0gJ2ljMDYnLAogIGtJY29uU2VydmljZXMxMjhQaXhlbERhdGFBUkdCID0gJ2ljMDcnCn07CgoK
CmVudW0gewogIGtJY29uU2VydmljZXMyNTZQaXhlbERhdGFBUkdCID0gJ2ljMDgnLAogIGtJY29u
U2VydmljZXM1MTJQaXhlbERhdGFBUkdCID0gJ2ljMDknLAogIGtUaHVtYm5haWwzMkJpdERhdGEg
PSAnaXQzMicsCiAga1RodW1ibmFpbDhCaXRNYXNrID0gJ3Q4bWsnCn07CgplbnVtIHsKICBrSHVn
ZTFCaXRNYXNrID0gJ2ljaCMnLAogIGtIdWdlNEJpdERhdGEgPSAnaWNoNCcsCiAga0h1Z2U4Qml0
RGF0YSA9ICdpY2g4JywKICBrSHVnZTMyQml0RGF0YSA9ICdpaDMyJywKICBrSHVnZThCaXRNYXNr
ID0gJ2g4bWsnCn07CgoKCmVudW0gewogIGtMYXJnZTFCaXRNYXNrID0gJ0lDTiMnLAogIGtMYXJn
ZTRCaXREYXRhID0gJ2ljbDQnLAogIGtMYXJnZThCaXREYXRhID0gJ2ljbDgnLAogIGtMYXJnZTMy
Qml0RGF0YSA9ICdpbDMyJywKICBrTGFyZ2U4Qml0TWFzayA9ICdsOG1rJywKICBrU21hbGwxQml0
TWFzayA9ICdpY3MjJywKICBrU21hbGw0Qml0RGF0YSA9ICdpY3M0JywKICBrU21hbGw4Qml0RGF0
YSA9ICdpY3M4JywKICBrU21hbGwzMkJpdERhdGEgPSAnaXMzMicsCiAga1NtYWxsOEJpdE1hc2sg
PSAnczhtaycsCiAga01pbmkxQml0TWFzayA9ICdpY20jJywKICBrTWluaTRCaXREYXRhID0gJ2lj
bTQnLAogIGtNaW5pOEJpdERhdGEgPSAnaWNtOCcKfTsKCgplbnVtIHsKICBsYXJnZTFCaXRNYXNr
ID0ga0xhcmdlMUJpdE1hc2ssCiAgbGFyZ2U0Qml0RGF0YSA9IGtMYXJnZTRCaXREYXRhLAogIGxh
cmdlOEJpdERhdGEgPSBrTGFyZ2U4Qml0RGF0YSwKICBzbWFsbDFCaXRNYXNrID0ga1NtYWxsMUJp
dE1hc2ssCiAgc21hbGw0Qml0RGF0YSA9IGtTbWFsbDRCaXREYXRhLAogIHNtYWxsOEJpdERhdGEg
PSBrU21hbGw4Qml0RGF0YSwKICBtaW5pMUJpdE1hc2sgPSBrTWluaTFCaXRNYXNrLAogIG1pbmk0
Qml0RGF0YSA9IGtNaW5pNEJpdERhdGEsCiAgbWluaThCaXREYXRhID0ga01pbmk4Qml0RGF0YQp9
OwojIDEwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvblN0b3JhZ2UuaCIg
MwplbnVtIHsKICBrSWNvbkZhbWlseVR5cGUgPSAnaWNucycKfTsKCgpzdHJ1Y3QgSWNvbkZhbWls
eUVsZW1lbnQgewogIE9TVHlwZSBlbGVtZW50VHlwZTsKICBTSW50MzIgZWxlbWVudFNpemU7CiAg
dW5zaWduZWQgY2hhciBlbGVtZW50RGF0YVsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSWNvbkZhbWls
eUVsZW1lbnQgSWNvbkZhbWlseUVsZW1lbnQ7CnN0cnVjdCBJY29uRmFtaWx5UmVzb3VyY2Ugewog
IE9TVHlwZSByZXNvdXJjZVR5cGU7CiAgU0ludDMyIHJlc291cmNlU2l6ZTsKICBJY29uRmFtaWx5
RWxlbWVudCBlbGVtZW50c1sxXTsKCn07CnR5cGVkZWYgc3RydWN0IEljb25GYW1pbHlSZXNvdXJj
ZSBJY29uRmFtaWx5UmVzb3VyY2U7CnR5cGVkZWYgSWNvbkZhbWlseVJlc291cmNlICogSWNvbkZh
bWlseVB0cjsKdHlwZWRlZiBJY29uRmFtaWx5UHRyICogSWNvbkZhbWlseUhhbmRsZTsKCgoKZW51
bSB7CiAga1RpbGVJY29uVmFyaWFudCA9ICd0aWxlJywKICBrUm9sbG92ZXJJY29uVmFyaWFudCA9
ICdvdmVyJywKICBrRHJvcEljb25WYXJpYW50ID0gJ2Ryb3AnLAogIGtPcGVuSWNvblZhcmlhbnQg
PSAnb3BlbicsCiAga09wZW5Ecm9wSWNvblZhcmlhbnQgPSAnb2RycCcKfTsKCgojcHJhZ21hIHBh
Y2socG9wKQojIDQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9PU1NlcnZpY2Vz
LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1N5c3RlbVNv
dW5kLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9TeXN0ZW1T
b3VuZC5oIiAzCiNkZWZpbmUgX19TWVNURU1TT1VORF9fIAojIDM2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9TeXN0ZW1Tb3VuZC5oIiAzCmV4dGVybiAiQyIgewoKCgoKCmVudW0g
ewogIGtTeXN0ZW1Tb3VuZE5vRXJyb3IgPSAwLAogIGtTeXN0ZW1Tb3VuZFVuc3BlY2lmaWVkRXJy
b3IgPSAtMTUwMCwKICBrU3lzdGVtU291bmRDbGllbnRUaW1lZE91dEVycm9yID0gLTE1MDEKfTsK
CgoKCnR5cGVkZWYgVUludDMyIFN5c3RlbVNvdW5kQWN0aW9uSUQ7CnR5cGVkZWYgT1NTdGF0dXMg
KCAqIFN5c3RlbVNvdW5kQ29tcGxldGlvblByb2NQdHIpKFN5c3RlbVNvdW5kQWN0aW9uSUQgYWN0
aW9uSUQsIHZvaWQgKnVzZXJEYXRhKTsKdHlwZWRlZiBTeXN0ZW1Tb3VuZENvbXBsZXRpb25Qcm9j
UHRyIFN5c3RlbVNvdW5kQ29tcGxldGlvblVQUDsKIyA2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvU3lzdGVtU291bmQuaCIgMwpleHRlcm4gU3lzdGVtU291bmRDb21wbGV0aW9u
VVBQCk5ld1N5c3RlbVNvdW5kQ29tcGxldGlvblVQUChTeXN0ZW1Tb3VuZENvbXBsZXRpb25Qcm9j
UHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNzMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9P
U1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1N5c3RlbVNvdW5kLmgiIDMKZXh0ZXJuIHZvaWQK
RGlzcG9zZVN5c3RlbVNvdW5kQ29tcGxldGlvblVQUChTeXN0ZW1Tb3VuZENvbXBsZXRpb25VUFAg
dXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDg0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNl
cy5mcmFtZXdvcmsvSGVhZGVycy9TeXN0ZW1Tb3VuZC5oIiAzCmV4dGVybiBPU1N0YXR1cwpJbnZv
a2VTeXN0ZW1Tb3VuZENvbXBsZXRpb25VUFAoCiAgU3lzdGVtU291bmRBY3Rpb25JRCBhY3Rpb25J
RCwKICB2b2lkICogdXNlckRhdGEsCiAgU3lzdGVtU291bmRDb21wbGV0aW9uVVBQIHVzZXJVUFAp
IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBTeXN0ZW1Tb3VuZENv
bXBsZXRpb25VUFAgTmV3U3lzdGVtU291bmRDb21wbGV0aW9uVVBQKFN5c3RlbVNvdW5kQ29tcGxl
dGlvblByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxp
bmUgdm9pZCBEaXNwb3NlU3lzdGVtU291bmRDb21wbGV0aW9uVVBQKFN5c3RlbVNvdW5kQ29tcGxl
dGlvblVQUCkgeyB9CiAgICBpbmxpbmUgT1NTdGF0dXMgSW52b2tlU3lzdGVtU291bmRDb21wbGV0
aW9uVVBQKFN5c3RlbVNvdW5kQWN0aW9uSUQgYWN0aW9uSUQsIHZvaWQgKiB1c2VyRGF0YSwgU3lz
dGVtU291bmRDb21wbGV0aW9uVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoYWN0aW9u
SUQsIHVzZXJEYXRhKTsgfQojIDEyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
U3lzdGVtU291bmQuaCIgMwpleHRlcm4gdm9pZApBbGVydFNvdW5kUGxheSh2b2lkKSBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9TeXN0ZW1Tb3VuZC5oIiAzCmV4dGVybiB2b2lkCkFsZXJ0U291bmRQbGF5Q3VzdG9tU291
bmQoU3lzdGVtU291bmRBY3Rpb25JRCBpbkFjdGlvbikgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwojIDE4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvU3lzdGVtU291bmQu
aCIgMwpleHRlcm4gdm9pZApTeXN0ZW1Tb3VuZFBsYXkoU3lzdGVtU291bmRBY3Rpb25JRCBpbkFj
dGlvbikgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDIyMyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvU3lzdGVtU291bmQuaCIgMwpleHRlcm4gT1NTdGF0dXMKU3lzdGVt
U291bmRHZXRBY3Rpb25JRCgKICBjb25zdCBGU1JlZiAqIHVzZXJGaWxlLAogIFN5c3RlbVNvdW5k
QWN0aW9uSUQgKiBvdXRBY3Rpb24pIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyNTYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1N5c3RlbVNvdW5kLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzClN5c3RlbVNvdW5kUmVtb3ZlQWN0aW9uSUQoU3lzdGVtU291bmRBY3Rpb25JRCBp
bkFjdGlvbikgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDMwNCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvU3lzdGVtU291bmQuaCIgMwpleHRlcm4gT1NTdGF0dXMKU3lz
dGVtU291bmRTZXRDb21wbGV0aW9uUm91dGluZSgKICBTeXN0ZW1Tb3VuZEFjdGlvbklEIGluQWN0
aW9uLAogIENGUnVuTG9vcFJlZiBpblJ1bkxvb3AsCiAgQ0ZTdHJpbmdSZWYgaW5SdW5Mb29wTW9k
ZSwKICBTeXN0ZW1Tb3VuZENvbXBsZXRpb25VUFAgaW5Db21wbGV0aW9uUm91dGluZSwKICB2b2lk
ICogaW5Vc2VyRGF0YSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDM0MCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09T
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvU3lzdGVtU291bmQuaCIgMwpleHRlcm4gdm9pZApT
eXN0ZW1Tb3VuZFJlbW92ZUNvbXBsZXRpb25Sb3V0aW5lKFN5c3RlbVNvdW5kQWN0aW9uSUQgaW5B
Y3Rpb24pIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKCn0KIyA0NyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vy
dmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvT1NTZXJ2aWNlcy5oIiAyIDMKCgoKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9XU1R5cGVzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9XU1R5cGVzLmgiIDMKI2RlZmluZSBfX1dTVFlQRVNfXyAK
IyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NUeXBlcy5oIiAzCmV4dGVy
biAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQoKCgoKCmVudW0gewogIGVycldTSW50ZXJu
YWxFcnJvciA9IC02NTc5M0wsCiAgZXJyV1NUcmFuc3BvcnRFcnJvciA9IC02NTc5NEwsCiAgZXJy
V1NQYXJzZUVycm9yID0gLTY1Nzk1TCwKICBlcnJXU1RpbWVvdXRFcnJvciA9IC02NTc5NkwKfTsK
IyA3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NUeXBlcy5oIiAzCmVudW0g
V1NUeXBlSUQgewoKCgoKICBlV1NVbmtub3duVHlwZSA9IDAsCgoKCgogIGVXU051bGxUeXBlID0g
MSwKCgoKCiAgZVdTQm9vbGVhblR5cGUgPSAyLAoKCgoKICBlV1NJbnRlZ2VyVHlwZSA9IDMsCgoK
CgogIGVXU0RvdWJsZVR5cGUgPSA0LAoKCgoKICBlV1NTdHJpbmdUeXBlID0gNSwKCgoKCiAgZVdT
RGF0ZVR5cGUgPSA2LAoKCgoKICBlV1NEYXRhVHlwZSA9IDcsCgoKCgogIGVXU0FycmF5VHlwZSA9
IDgsCgoKCgogIGVXU0RpY3Rpb25hcnlUeXBlID0gOQp9Owp0eXBlZGVmIGVudW0gV1NUeXBlSUQg
V1NUeXBlSUQ7Cgp0eXBlZGVmIHZvaWQgKiAoICogV1NDbGllbnRDb250ZXh0UmV0YWluQ2FsbEJh
Y2tQcm9jUHRyKSh2b2lkICogaW5mbyk7CnR5cGVkZWYgdm9pZCAoICogV1NDbGllbnRDb250ZXh0
UmVsZWFzZUNhbGxCYWNrUHJvY1B0cikodm9pZCAqIGluZm8pOwp0eXBlZGVmIENGU3RyaW5nUmVm
ICggKiBXU0NsaWVudENvbnRleHRDb3B5RGVzY3JpcHRpb25DYWxsQmFja1Byb2NQdHIpKHZvaWQg
KiBpbmZvKTsKIyAxMzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1dTVHlwZXMu
aCIgMwpzdHJ1Y3QgV1NDbGllbnRDb250ZXh0IHsKCgoKCiAgQ0ZJbmRleCB2ZXJzaW9uOwoKCgoK
ICB2b2lkICogaW5mbzsKCgoKCiAgV1NDbGllbnRDb250ZXh0UmV0YWluQ2FsbEJhY2tQcm9jUHRy
IHJldGFpbjsKCgoKCiAgV1NDbGllbnRDb250ZXh0UmVsZWFzZUNhbGxCYWNrUHJvY1B0ciByZWxl
YXNlOwoKCgoKICBXU0NsaWVudENvbnRleHRDb3B5RGVzY3JpcHRpb25DYWxsQmFja1Byb2NQdHIg
Y29weURlc2NyaXB0aW9uOwp9Owp0eXBlZGVmIHN0cnVjdCBXU0NsaWVudENvbnRleHQgV1NDbGll
bnRDb250ZXh0OwojIDE3NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NUeXBl
cy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrV1NYTUxSUENQcm90b2NvbDsKZXh0ZXJuIENGU3Ry
aW5nUmVmIGtXU1NPQVAxOTk5UHJvdG9jb2w7CmV4dGVybiBDRlN0cmluZ1JlZiBrV1NTT0FQMjAw
MVByb3RvY29sOwojIDIwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NUeXBl
cy5oIiAzCmV4dGVybiBXU1R5cGVJRApXU0dldFdTVHlwZUlERnJvbUNGVHlwZShDRlR5cGVSZWYg
cmVmKTsKIyAyMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1dTVHlwZXMuaCIg
MwpleHRlcm4gQ0ZUeXBlSUQKV1NHZXRDRlR5cGVJREZyb21XU1R5cGVJRChXU1R5cGVJRCB0eXBl
SUQpOwoKCgoKCgoKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgNTEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL09TU2VydmljZXMuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvV1NNZXRob2RJbnZvY2F0aW9uLmgiIDEgMwojIDE3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9XU01ldGhvZEludm9jYXRpb24uaCIgMwojZGVmaW5l
IF9fV1NNRVRIT0RJTlZPQ0FUSU9OX18gCiMgMzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL1dTTWV0aG9kSW52b2NhdGlvbi5oIiAzCmV4dGVybiAiQyIgewojIDU0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9XU01ldGhvZEludm9jYXRpb24uaCIgMwpleHRlcm4g
Q0ZTdHJpbmdSZWYga1dTTWV0aG9kSW52b2NhdGlvblJlc3VsdDsKCgoKZXh0ZXJuIENGU3RyaW5n
UmVmIGtXU0ZhdWx0U3RyaW5nOwpleHRlcm4gQ0ZTdHJpbmdSZWYga1dTRmF1bHRDb2RlOwpleHRl
cm4gQ0ZTdHJpbmdSZWYga1dTRmF1bHRFeHRyYTsKIyA3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvV1NNZXRob2RJbnZvY2F0aW9uLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtX
U05ldHdvcmtTdHJlYW1GYXVsdFN0cmluZzsKZXh0ZXJuIENGU3RyaW5nUmVmIGtXU1N0cmVhbUVy
cm9yTWVzc2FnZTsKZXh0ZXJuIENGU3RyaW5nUmVmIGtXU1N0cmVhbUVycm9yRG9tYWluOwpleHRl
cm4gQ0ZTdHJpbmdSZWYga1dTU3RyZWFtRXJyb3JFcnJvcjsKIyA5MCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvV1NNZXRob2RJbnZvY2F0aW9uLmgiIDMKZXh0ZXJuIENGU3RyaW5n
UmVmIGtXU0hUVFBNZXNzYWdlOwpleHRlcm4gQ0ZTdHJpbmdSZWYga1dTSFRUUFJlc3BvbnNlTWVz
c2FnZTsKCgoKCgpleHRlcm4gQ0ZTdHJpbmdSZWYga1dTSFRUUFZlcnNpb247CmV4dGVybiBDRlN0
cmluZ1JlZiBrV1NIVFRQRXh0cmFIZWFkZXJzOwpleHRlcm4gQ0ZTdHJpbmdSZWYga1dTSFRUUFBy
b3h5OwpleHRlcm4gQ0ZTdHJpbmdSZWYga1dTSFRUUEZvbGxvd3NSZWRpcmVjdHM7CiMgMTE0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9XU01ldGhvZEludm9jYXRpb24uaCIgMwpl
eHRlcm4gQ0ZTdHJpbmdSZWYga1dTRGVidWdPdXRnb2luZ0hlYWRlcnM7CmV4dGVybiBDRlN0cmlu
Z1JlZiBrV1NEZWJ1Z091dGdvaW5nQm9keTsKZXh0ZXJuIENGU3RyaW5nUmVmIGtXU0RlYnVnSW5j
b21pbmdIZWFkZXJzOwpleHRlcm4gQ0ZTdHJpbmdSZWYga1dTRGVidWdJbmNvbWluZ0JvZHk7CgoK
CgoKZXh0ZXJuIENGU3RyaW5nUmVmIGtXU1NPQVBNZXRob2ROYW1lc3BhY2VVUkk7CmV4dGVybiBD
RlN0cmluZ1JlZiBrV1NTT0FQQm9keUVuY29kaW5nU3R5bGU7CmV4dGVybiBDRlN0cmluZ1JlZiBr
V1NTT0FQU3R5bGVEb2M7CmV4dGVybiBDRlN0cmluZ1JlZiBrV1NTT0FQU3R5bGVSUEM7CgoKCgoK
CgpleHRlcm4gQ0ZTdHJpbmdSZWYga1dTU09BUE1lc3NhZ2VIZWFkZXJzOwoKCgoKCmV4dGVybiBD
RlN0cmluZ1JlZiBrV1NSZWNvcmRQYXJhbWV0ZXJPcmRlcjsKZXh0ZXJuIENGU3RyaW5nUmVmIGtX
U1JlY29yZE5hbWVzcGFjZVVSSTsKZXh0ZXJuIENGU3RyaW5nUmVmIGtXU1JlY29yZFR5cGU7CgoK
CgoKZXh0ZXJuIENGU3RyaW5nUmVmIGtXU01ldGhvZEludm9jYXRpb25SZXN1bHRQYXJhbWV0ZXJO
YW1lOwoKCgoKCgpleHRlcm4gQ0ZTdHJpbmdSZWYga1dTTWV0aG9kSW52b2NhdGlvblRpbWVvdXRW
YWx1ZTsKCn0KIyAxNjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1dTTWV0aG9k
SW52b2NhdGlvbi5oIiAzCmV4dGVybiAiQyIgewojIDE4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvV1NNZXRob2RJbnZvY2F0aW9uLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
V1NNZXRob2RJbnZvY2F0aW9uUmVmKiBXU01ldGhvZEludm9jYXRpb25SZWY7CiMgMTk2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
T1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9XU01ldGhvZEludm9jYXRpb24uaCIgMwpleHRl
cm4gQ0ZUeXBlSUQKV1NNZXRob2RJbnZvY2F0aW9uR2V0VHlwZUlEKHZvaWQpOwojIDIzMyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NNZXRob2RJbnZvY2F0aW9uLmgiIDMKZXh0
ZXJuIFdTTWV0aG9kSW52b2NhdGlvblJlZgpXU01ldGhvZEludm9jYXRpb25DcmVhdGUoCiAgQ0ZV
UkxSZWYgdXJsLAogIENGU3RyaW5nUmVmIG1ldGhvZE5hbWUsCiAgQ0ZTdHJpbmdSZWYgcHJvdG9j
b2wpOwojIDI2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NNZXRob2RJbnZv
Y2F0aW9uLmgiIDMKZXh0ZXJuIFdTTWV0aG9kSW52b2NhdGlvblJlZgpXU01ldGhvZEludm9jYXRp
b25DcmVhdGVGcm9tU2VyaWFsaXphdGlvbihDRkRhdGFSZWYgY29udHJhY3QpOwojIDI5MyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NNZXRob2RJbnZvY2F0aW9uLmgiIDMKZXh0
ZXJuIENGRGF0YVJlZgpXU01ldGhvZEludm9jYXRpb25Db3B5U2VyaWFsaXphdGlvbihXU01ldGhv
ZEludm9jYXRpb25SZWYgaW52b2NhdGlvbik7CiMgMzI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdv
cmsvSGVhZGVycy9XU01ldGhvZEludm9jYXRpb24uaCIgMwpleHRlcm4gdm9pZApXU01ldGhvZElu
dm9jYXRpb25TZXRQYXJhbWV0ZXJzKAogIFdTTWV0aG9kSW52b2NhdGlvblJlZiBpbnZvY2F0aW9u
LAogIENGRGljdGlvbmFyeVJlZiBwYXJhbWV0ZXJzLAogIENGQXJyYXlSZWYgcGFyYW1ldGVyT3Jk
ZXIpOwojIDM2NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NNZXRob2RJbnZv
Y2F0aW9uLmgiIDMKZXh0ZXJuIENGRGljdGlvbmFyeVJlZgpXU01ldGhvZEludm9jYXRpb25Db3B5
UGFyYW1ldGVycygKICBXU01ldGhvZEludm9jYXRpb25SZWYgaW52b2NhdGlvbiwKICBDRkFycmF5
UmVmICogcGFyYW1ldGVyT3JkZXIpOwojIDQwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hl
YWRlcnMvV1NNZXRob2RJbnZvY2F0aW9uLmgiIDMKZXh0ZXJuIHZvaWQKV1NNZXRob2RJbnZvY2F0
aW9uU2V0UHJvcGVydHkoCiAgV1NNZXRob2RJbnZvY2F0aW9uUmVmIGludm9jYXRpb24sCiAgQ0ZT
dHJpbmdSZWYgcHJvcGVydHlOYW1lLAogIENGVHlwZVJlZiBwcm9wZXJ0eVZhbHVlKTsKIyA0NDIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1dTTWV0aG9kSW52b2NhdGlvbi5oIiAz
CmV4dGVybiBDRlR5cGVSZWYKV1NNZXRob2RJbnZvY2F0aW9uQ29weVByb3BlcnR5KAogIFdTTWV0
aG9kSW52b2NhdGlvblJlZiBpbnZvY2F0aW9uLAogIENGU3RyaW5nUmVmIHByb3BlcnR5TmFtZSk7
CiMgNDc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9XU01ldGhvZEludm9jYXRp
b24uaCIgMwpleHRlcm4gQ0ZEaWN0aW9uYXJ5UmVmCldTTWV0aG9kSW52b2NhdGlvbkludm9rZShX
U01ldGhvZEludm9jYXRpb25SZWYgaW52b2NhdGlvbik7CiMgNTI2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9XU01ldGhvZEludm9jYXRpb24uaCIgMwp0eXBlZGVmIHZvaWQgKCAq
IFdTTWV0aG9kSW52b2NhdGlvbkNhbGxCYWNrUHJvY1B0cikoV1NNZXRob2RJbnZvY2F0aW9uUmVm
IGludm9jYXRpb24sIHZvaWQgKmluZm8sIENGRGljdGlvbmFyeVJlZiBvdXRSZWYpOwojIDU1NCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NNZXRob2RJbnZvY2F0aW9uLmgiIDMK
ZXh0ZXJuIHZvaWQKV1NNZXRob2RJbnZvY2F0aW9uU2V0Q2FsbEJhY2soCiAgV1NNZXRob2RJbnZv
Y2F0aW9uUmVmIGludm9jYXRpb24sCiAgV1NNZXRob2RJbnZvY2F0aW9uQ2FsbEJhY2tQcm9jUHRy
IGNsaWVudENCLAogIFdTQ2xpZW50Q29udGV4dCAqIGNvbnRleHQpOwojIDU4NyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vy
dmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NNZXRob2RJbnZvY2F0aW9uLmgiIDMKZXh0ZXJuIHZv
aWQKV1NNZXRob2RJbnZvY2F0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcCgKICBXU01ldGhvZEludm9j
YXRpb25SZWYgaW52b2NhdGlvbiwKICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCwKICBDRlN0cmluZ1Jl
ZiBydW5Mb29wTW9kZSk7CiMgNjIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9X
U01ldGhvZEludm9jYXRpb24uaCIgMwpleHRlcm4gdm9pZApXU01ldGhvZEludm9jYXRpb25VbnNj
aGVkdWxlRnJvbVJ1bkxvb3AoCiAgV1NNZXRob2RJbnZvY2F0aW9uUmVmIGludm9jYXRpb24sCiAg
Q0ZSdW5Mb29wUmVmIHJ1bkxvb3AsCiAgQ0ZTdHJpbmdSZWYgcnVuTG9vcE1vZGUpOwojIDY2MiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NNZXRob2RJbnZvY2F0aW9uLmgiIDMK
ZXh0ZXJuIEJvb2xlYW4KV1NNZXRob2RSZXN1bHRJc0ZhdWx0KENGRGljdGlvbmFyeVJlZiBtZXRo
b2RSZXN1bHQpOwojIDcwMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NNZXRo
b2RJbnZvY2F0aW9uLmgiIDMKdHlwZWRlZiBDRlN0cmluZ1JlZiAoICogV1NNZXRob2RJbnZvY2F0
aW9uU2VyaWFsaXphdGlvblByb2NQdHIpKFdTTWV0aG9kSW52b2NhdGlvblJlZiBpbnZvY2F0aW9u
LCBDRlR5cGVSZWYgb2JqLCB2b2lkICppbmZvKTsKIyA3MzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzL1dTTWV0aG9kSW52b2NhdGlvbi5oIiAzCmV4dGVybiB2b2lkCldTTWV0aG9k
SW52b2NhdGlvbkFkZFNlcmlhbGl6YXRpb25PdmVycmlkZSgKICBXU01ldGhvZEludm9jYXRpb25S
ZWYgaW52b2NhdGlvbiwKICBDRlR5cGVJRCBvYmpUeXBlLAogIFdTTWV0aG9kSW52b2NhdGlvblNl
cmlhbGl6YXRpb25Qcm9jUHRyIHNlcmlhbGl6YXRpb25Qcm9jLAogIFdTQ2xpZW50Q29udGV4dCAq
IGNvbnRleHQpOwojIDc3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NNZXRo
b2RJbnZvY2F0aW9uLmgiIDMKdHlwZWRlZiBDRlR5cGVSZWYgKCAqIFdTTWV0aG9kSW52b2NhdGlv
bkRlc2VyaWFsaXphdGlvblByb2NQdHIpKFdTTWV0aG9kSW52b2NhdGlvblJlZiBpbnZvY2F0aW9u
LCBDRlhNTFRyZWVSZWYgbXNnUm9vdCwgQ0ZYTUxUcmVlUmVmIGRlc2VyaWFsaXplUm9vdCwgdm9p
ZCAqaW5mbyk7CiMgODEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9XU01ldGhv
ZEludm9jYXRpb24uaCIgMwpleHRlcm4gdm9pZApXU01ldGhvZEludm9jYXRpb25BZGREZXNlcmlh
bGl6YXRpb25PdmVycmlkZSgKICBXU01ldGhvZEludm9jYXRpb25SZWYgaW52b2NhdGlvbiwKICBD
RlN0cmluZ1JlZiB0eXBlTmFtZXNwYWNlLAogIENGU3RyaW5nUmVmIHR5cGVOYW1lLAogIFdTTWV0
aG9kSW52b2NhdGlvbkRlc2VyaWFsaXphdGlvblByb2NQdHIgZGVzZXJpYWxpemF0aW9uUHJvYywK
ICBXU0NsaWVudENvbnRleHQgKiBjb250ZXh0KTsKIyA4MjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzL1dTTWV0aG9kSW52b2NhdGlvbi5oIiAzCn0KIyA1NSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvT1NTZXJ2aWNlcy5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9XU1Byb3RvY29sSGFuZGxlci5oIiAxIDMKIyAxNyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NQcm90b2NvbEhhbmRsZXIuaCIgMwojZGVm
aW5lIF9fV1NQUk9UT0NPTEhBTkRMRVJfXyAKIyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvV1NQcm90b2NvbEhhbmRsZXIuaCIgMwpleHRlcm4gIkMiIHsKIyA2MyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09T
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NQcm90b2NvbEhhbmRsZXIuaCIgMwp0eXBlZGVm
IHN0cnVjdCBPcGFxdWVXU1Byb3RvY29sSGFuZGxlclJlZiogV1NQcm90b2NvbEhhbmRsZXJSZWY7
CiMgNzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1dTUHJvdG9jb2xIYW5kbGVy
LmgiIDMKZXh0ZXJuIENGVHlwZUlECldTUHJvdG9jb2xIYW5kbGVyR2V0VHlwZUlEKHZvaWQpOwoj
IDEwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NQcm90b2NvbEhhbmRsZXIu
aCIgMwpleHRlcm4gV1NQcm90b2NvbEhhbmRsZXJSZWYKV1NQcm90b2NvbEhhbmRsZXJDcmVhdGUo
CiAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLAogIENGU3RyaW5nUmVmIHByb3RvY29sKTsKIyAx
NDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1dTUHJvdG9jb2xIYW5kbGVyLmgi
IDMKZXh0ZXJuIENGRGljdGlvbmFyeVJlZgpXU1Byb3RvY29sSGFuZGxlckNvcHlSZXF1ZXN0RGlj
dGlvbmFyeSgKICBXU1Byb3RvY29sSGFuZGxlclJlZiByZWYsCiAgQ0ZEYXRhUmVmIGRhdGEpOwoj
IDE4OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvV1NQcm90b2NvbEhhbmRsZXIu
aCIgMwpleHRlcm4gQ0ZEaWN0aW9uYXJ5UmVmCldTUHJvdG9jb2xIYW5kbGVyQ29weVJlcGx5RGlj
dGlvbmFyeSgKICBXU1Byb3RvY29sSGFuZGxlclJlZiByZWYsCiAgQ0ZTdHJpbmdSZWYgbWV0aG9k
TmFtZSwKICBDRkRhdGFSZWYgZGF0YSk7CiMgMjI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9XU1Byb3RvY29sSGFuZGxlci5oIiAzCmV4dGVybiBDRkRhdGFSZWYKV1NQcm90b2Nv
bEhhbmRsZXJDb3B5UmVwbHlEb2N1bWVudCgKICBXU1Byb3RvY29sSGFuZGxlclJlZiByZWYsCiAg
Q0ZEaWN0aW9uYXJ5UmVmIG1ldGhvZENvbnRleHQsCiAgQ0ZUeXBlUmVmIHJlc3VsdFZhbHVlKTsK
IyAyNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1dTUHJvdG9jb2xIYW5kbGVy
LmgiIDMKZXh0ZXJuIENGRGF0YVJlZgpXU1Byb3RvY29sSGFuZGxlckNvcHlGYXVsdERvY3VtZW50
KAogIFdTUHJvdG9jb2xIYW5kbGVyUmVmIHJlZiwKICBDRkRpY3Rpb25hcnlSZWYgbWV0aG9kQ29u
dGV4dCwKICBDRkRpY3Rpb25hcnlSZWYgZmF1bHREaWN0KTsKIyAzMDkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL1dTUHJvdG9jb2xIYW5kbGVyLmgiIDMKZXh0ZXJuIENGRGF0YVJl
ZgpXU1Byb3RvY29sSGFuZGxlckNvcHlSZXF1ZXN0RG9jdW1lbnQoCiAgV1NQcm90b2NvbEhhbmRs
ZXJSZWYgcmVmLAogIENGU3RyaW5nUmVmIG1ldGhvZE5hbWUsCiAgQ0ZEaWN0aW9uYXJ5UmVmIG1l
dGhvZFBhcmFtcywKICBDRkFycmF5UmVmIG1ldGhvZFBhcmFtT3JkZXIsCiAgQ0ZEaWN0aW9uYXJ5
UmVmIG1ldGhvZEV4dHJhcyk7CiMgMzQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9XU1Byb3RvY29sSGFuZGxlci5oIiAzCmV4dGVybiBDRlR5cGVSZWYKV1NQcm90b2NvbEhhbmRs
ZXJDb3B5UHJvcGVydHkoCiAgV1NQcm90b2NvbEhhbmRsZXJSZWYgcmVmLAogIENGU3RyaW5nUmVm
IHByb3BlcnR5TmFtZSk7CiMgMzc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9X
U1Byb3RvY29sSGFuZGxlci5oIiAzCmV4dGVybiB2b2lkCldTUHJvdG9jb2xIYW5kbGVyU2V0UHJv
cGVydHkoCiAgV1NQcm90b2NvbEhhbmRsZXJSZWYgcmVmLAogIENGU3RyaW5nUmVmIHByb3BlcnR5
TmFtZSwKICBDRlR5cGVSZWYgcHJvcGVydHlWYWx1ZSk7CiMgNDIxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9XU1Byb3RvY29sSGFuZGxlci5oIiAzCnR5cGVkZWYgQ0ZTdHJpbmdS
ZWYgKCAqIFdTUHJvdG9jb2xIYW5kbGVyU2VyaWFsaXphdGlvblByb2NQdHIpKFdTUHJvdG9jb2xI
YW5kbGVyUmVmIHByb3RvY29sLCBDRlR5cGVSZWYgb2JqLCB2b2lkICppbmZvKTsKIyA0NTQgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1dTUHJvdG9jb2xIYW5kbGVyLmgiIDMKZXh0
ZXJuIHZvaWQKV1NQcm90b2NvbEhhbmRsZXJTZXRTZXJpYWxpemF0aW9uT3ZlcnJpZGUoCiAgV1NQ
cm90b2NvbEhhbmRsZXJSZWYgcHJvdG9jb2wsCiAgQ0ZUeXBlSUQgb2JqVHlwZSwKICBXU1Byb3Rv
Y29sSGFuZGxlclNlcmlhbGl6YXRpb25Qcm9jUHRyIHNlcmlhbGl6YXRpb25Qcm9jLAogIFdTQ2xp
ZW50Q29udGV4dCAqIGNvbnRleHQpOwojIDQ5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hl
YWRlcnMvV1NQcm90b2NvbEhhbmRsZXIuaCIgMwp0eXBlZGVmIENGVHlwZVJlZiAoICogV1NQcm90
b2NvbEhhbmRsZXJEZXNlcmlhbGl6YXRpb25Qcm9jUHRyKShXU1Byb3RvY29sSGFuZGxlclJlZiBw
cm90b2NvbCwgQ0ZYTUxUcmVlUmVmIG1zZ1Jvb3QsIENGWE1MVHJlZVJlZiBkZXNlcmlhbGl6ZVJv
b3QsIHZvaWQgKmluZm8pOwojIDUzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
V1NQcm90b2NvbEhhbmRsZXIuaCIgMwpleHRlcm4gdm9pZApXU1Byb3RvY29sSGFuZGxlclNldERl
c2VyaWFsaXphdGlvbk92ZXJyaWRlKAogIFdTUHJvdG9jb2xIYW5kbGVyUmVmIHByb3RvY29sLAog
IENGU3RyaW5nUmVmIHR5cGVOYW1lc3BhY2UsCiAgQ0ZTdHJpbmdSZWYgdHlwZU5hbWUsCiAgV1NQ
cm90b2NvbEhhbmRsZXJEZXNlcmlhbGl6YXRpb25Qcm9jUHRyIGRlc2VyaWFsaXphdGlvblByb2Ms
CiAgV1NDbGllbnRDb250ZXh0ICogY29udGV4dCk7CgoKCgoKCgojZGVmaW5lIGtXU01ldGhvZE5h
bWUgQ0ZTVFIoIi9XU01ldGhvZE5hbWUiKQojZGVmaW5lIGtXU01ldGhvZFBhcmFtZXRlcnMgQ0ZT
VFIoIi9XU01ldGhvZFBhcmFtZXRlcnMiKQojZGVmaW5lIGtXU01ldGhvZFBhcmFtZXRlck9yZGVy
IENGU1RSKCIvV1NNZXRob2RQYXJhbWV0ZXJPcmRlciIpCgoKCgoKCn0KIyA1OSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vy
dmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvT1NTZXJ2aWNlcy5oIiAyIDMKCgoKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qb3dlci5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvUG93ZXIuaCIgMwojZGVmaW5lIF9fUE9XRVJfXyAKIyA0NCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUG93ZXIuaCIgMwpleHRlcm4gIkMiIHsK
CgojcHJhZ21hIHBhY2socHVzaCwgMikKCmVudW0gewoKICBrU2xlZXBSZXF1ZXN0ID0gMSwKICBr
U2xlZXBEZW1hbmQgPSAyLAogIGtTbGVlcFdha2VVcCA9IDMsCiAga1NsZWVwUmV2b2tlID0gNCwK
ICBrU2xlZXBVbmxvY2sgPSA0LAogIGtTbGVlcERlbnkgPSA1LAogIGtTbGVlcE5vdyA9IDYsCiAg
a0RvemVEZW1hbmQgPSA3LAogIGtEb3plV2FrZVVwID0gOCwKICBrRG96ZVJlcXVlc3QgPSA5LAog
IGtFbnRlclN0YW5kYnkgPSAxMCwKICBrRW50ZXJSdW4gPSAxMSwKICBrU3VzcGVuZFJlcXVlc3Qg
PSAxMiwKICBrU3VzcGVuZERlbWFuZCA9IDEzLAogIGtTdXNwZW5kUmV2b2tlID0gMTQsCiAga1N1
c3BlbmRXYWtlVXAgPSAxNSwKICBrR2V0UG93ZXJMZXZlbCA9IDE2LAogIGtTZXRQb3dlckxldmVs
ID0gMTcsCiAga0RldmljZUluaXRpYXRlZFdha2UgPSAxOCwKICBrV2FrZVRvRG96ZSA9IDE5LAog
IGtEb3plVG9GdWxsV2FrZVVwID0gMjAsCiAga0dldFBvd2VySW5mbyA9IDIxLAogIGtHZXRXYWtl
T25OZXRJbmZvID0gMjIsCiAga1N1c3BlbmRXYWtlVG9Eb3plID0gMjMsCiAga0VudGVySWRsZSA9
IDI0LAogIGtTdGlsbElkbGUgPSAyNSwKICBrRXhpdElkbGUgPSAyNgp9OwoKZW51bSB7CgogIG5v
Q2FsbHMgPSAxLAogIG5vUmVxdWVzdCA9IDIsCiAgc2xwUVR5cGUgPSAxNiwKICBzbGVlcFFUeXBl
ID0gMTYKfTsKIyA5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUG93ZXIuaCIg
MwplbnVtIHsKICBPdmVyYWxsQWN0ID0gMCwKICBVc3JBY3Rpdml0eSA9IDEsCiAgTmV0QWN0aXZp
dHkgPSAyLAogIEhEQWN0aXZpdHkgPSAzLAogIElkbGVBY3Rpdml0eSA9IDQKfTsKCnR5cGVkZWYg
c3RydWN0IFNsZWVwUVJlYyBTbGVlcFFSZWM7CnR5cGVkZWYgU2xlZXBRUmVjICogU2xlZXBRUmVj
UHRyOwp0eXBlZGVmIGxvbmcgKCAqIFNsZWVwUVByb2NQdHIpKGxvbmcgbWVzc2FnZSwgU2xlZXBR
UmVjUHRyIHFSZWNQdHIpOwp0eXBlZGVmIFNsZWVwUVByb2NQdHIgU2xlZXBRVVBQOwojIDExNSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUG93ZXIuaCIgMwpleHRlcm4gU2xlZXBR
VVBQCk5ld1NsZWVwUVVQUChTbGVlcFFQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMTI2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
T1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qb3dlci5oIiAzCmV4dGVybiB2b2lkCkRpc3Bv
c2VTbGVlcFFVUFAoU2xlZXBRVVBQIHVzZXJVUFApIDsKIyAxMzcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL1Bvd2VyLmgiIDMKZXh0ZXJuIGxvbmcKSW52b2tlU2xlZXBRVVBQKAog
IGxvbmcgbWVzc2FnZSwKICBTbGVlcFFSZWNQdHIgcVJlY1B0ciwKICBTbGVlcFFVUFAgdXNlclVQ
UCkgOwoKCgogICAgaW5saW5lIFNsZWVwUVVQUCBOZXdTbGVlcFFVUFAoU2xlZXBRUHJvY1B0ciB1
c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bv
c2VTbGVlcFFVUFAoU2xlZXBRVVBQKSB7IH0KICAgIGlubGluZSBsb25nIEludm9rZVNsZWVwUVVQ
UChsb25nIG1lc3NhZ2UsIFNsZWVwUVJlY1B0ciBxUmVjUHRyLCBTbGVlcFFVUFAgdXNlclVQUCkg
eyByZXR1cm4gKCp1c2VyVVBQKShtZXNzYWdlLCBxUmVjUHRyKTsgfQoKCgoKCgoKc3RydWN0IFNs
ZWVwUVJlYyB7CiAgU2xlZXBRUmVjUHRyIHNsZWVwUUxpbms7CiAgc2hvcnQgc2xlZXBRVHlwZTsK
ICBTbGVlcFFVUFAgc2xlZXBRUHJvYzsKICBzaG9ydCBzbGVlcFFGbGFnczsKfTsKIyAxNzcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Bvd2VyLmgiIDMKZXh0ZXJuIGxvbmcKR2V0
Q1BVU3BlZWQodm9pZCkgOwojIDE5NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
UG93ZXIuaCIgMwpleHRlcm4gdm9pZApTbGVlcFFJbnN0YWxsKFNsZWVwUVJlY1B0ciBxUmVjUHRy
KSA7CiMgMjE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qb3dlci5oIiAzCmV4
dGVybiB2b2lkClNsZWVwUVJlbW92ZShTbGVlcFFSZWNQdHIgcVJlY1B0cikgOwojIDIzNiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUG93ZXIuaCIgMwpleHRlcm4gc2hvcnQKTWF4
aW11bVByb2Nlc3NvclNwZWVkKHZvaWQpIDsKIyAyNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL1Bvd2VyLmgiIDMKZXh0ZXJuIHNob3J0Ck1pbmltdW1Qcm9jZXNzb3JTcGVlZCh2
b2lkKSA7CiMgMjc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qb3dlci5oIiAz
CmV4dGVybiBzaG9ydApDdXJyZW50UHJvY2Vzc29yU3BlZWQodm9pZCkgOwojIDI5NiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09T
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUG93ZXIuaCIgMwpleHRlcm4gc2hvcnQKQmF0dGVy
eUNvdW50KHZvaWQpIDsKIyAzNDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Bv
d2VyLmgiIDMKZXh0ZXJuIE9TRXJyClVwZGF0ZVN5c3RlbUFjdGl2aXR5KFVJbnQ4IGFjdGl2aXR5
KSA7CiMgNDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qb3dlci5oIiAzCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBSZWdFbnRyeUlEOwp0eXBlZGVmIE9TU3RhdHVzICggKiBQb3dl
ckhhbmRsZXJQcm9jUHRyKShVSW50MzIgbWVzc2FnZSwgdm9pZCAqcGFyYW0sIFVJbnQzMiByZWZD
b24sIFJlZ0VudHJ5SUQgKnJlZ0VudHJ5SUQpOwp0eXBlZGVmIFBvd2VySGFuZGxlclByb2NQdHIg
UG93ZXJIYW5kbGVyVVBQOwojIDY2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
UG93ZXIuaCIgMwp0eXBlZGVmIHN0cnVjdCBIRFF1ZXVlRWxlbWVudCBIRFF1ZXVlRWxlbWVudDsK
dHlwZWRlZiBzdHJ1Y3QgUE1nclF1ZXVlRWxlbWVudCBQTWdyUXVldWVFbGVtZW50Owp0eXBlZGVm
IHZvaWQgKCAqIEhEU3BpbmRvd25Qcm9jUHRyKShIRFF1ZXVlRWxlbWVudCAqIHRoZUVsZW1lbnQp
Owp0eXBlZGVmIHZvaWQgKCAqIFBNZ3JTdGF0ZUNoYW5nZVByb2NQdHIpKFBNZ3JRdWV1ZUVsZW1l
bnQgKnRoZUVsZW1lbnQsIGxvbmcgc3RhdGVCaXRzKTsKdHlwZWRlZiBIRFNwaW5kb3duUHJvY1B0
ciBIRFNwaW5kb3duVVBQOwp0eXBlZGVmIFBNZ3JTdGF0ZUNoYW5nZVByb2NQdHIgUE1nclN0YXRl
Q2hhbmdlVVBQOwojIDE0MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Bvd2Vy
LmgiIDMKZXh0ZXJuIEhEU3BpbmRvd25VUFAKTmV3SERTcGluZG93blVQUChIRFNwaW5kb3duUHJv
Y1B0ciB1c2VyUm91dGluZSkgOwojIDE0MzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFk
ZXJzL1Bvd2VyLmgiIDMKZXh0ZXJuIFBNZ3JTdGF0ZUNoYW5nZVVQUApOZXdQTWdyU3RhdGVDaGFu
Z2VVUFAoUE1nclN0YXRlQ2hhbmdlUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDE0NTAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9P
U1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Bvd2VyLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9z
ZUhEU3BpbmRvd25VUFAoSERTcGluZG93blVQUCB1c2VyVVBQKSA7CiMgMTQ2MSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vy
dmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUG93ZXIuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlUE1n
clN0YXRlQ2hhbmdlVVBQKFBNZ3JTdGF0ZUNoYW5nZVVQUCB1c2VyVVBQKSA7CiMgMTQ3MiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUG93ZXIuaCIgMwpleHRlcm4gdm9pZApJbnZv
a2VIRFNwaW5kb3duVVBQKAogIEhEUXVldWVFbGVtZW50ICogdGhlRWxlbWVudCwKICBIRFNwaW5k
b3duVVBQIHVzZXJVUFApIDsKIyAxNDg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9Qb3dlci5oIiAzCmV4dGVybiB2b2lkCkludm9rZVBNZ3JTdGF0ZUNoYW5nZVVQUCgKICBQTWdy
UXVldWVFbGVtZW50ICogdGhlRWxlbWVudCwKICBsb25nIHN0YXRlQml0cywKICBQTWdyU3RhdGVD
aGFuZ2VVUFAgdXNlclVQUCkgOwoKCgogICAgaW5saW5lIEhEU3BpbmRvd25VUFAgTmV3SERTcGlu
ZG93blVQUChIRFNwaW5kb3duUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRp
bmU7IH0KICAgIGlubGluZSBQTWdyU3RhdGVDaGFuZ2VVUFAgTmV3UE1nclN0YXRlQ2hhbmdlVVBQ
KFBNZ3JTdGF0ZUNoYW5nZVByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5l
OyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlSERTcGluZG93blVQUChIRFNwaW5kb3duVVBQKSB7
IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VQTWdyU3RhdGVDaGFuZ2VVUFAoUE1nclN0YXRlQ2hh
bmdlVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIEludm9rZUhEU3BpbmRvd25VUFAoSERRdWV1ZUVs
ZW1lbnQgKiB0aGVFbGVtZW50LCBIRFNwaW5kb3duVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKSh0
aGVFbGVtZW50KTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlUE1nclN0YXRlQ2hhbmdlVVBQKFBN
Z3JRdWV1ZUVsZW1lbnQgKiB0aGVFbGVtZW50LCBsb25nIHN0YXRlQml0cywgUE1nclN0YXRlQ2hh
bmdlVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKSh0aGVFbGVtZW50LCBzdGF0ZUJpdHMpOyB9CiMg
MTUxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUG93ZXIuaCIgMwojcHJhZ21h
IHBhY2socG9wKQoKCn0KIyA2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvT1NT
ZXJ2aWNlcy5oIiAyIDMKIyA3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvT1NT
ZXJ2aWNlcy5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTlNMQ29y
ZS5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTlNMQ29yZS5o
IiAzCiNkZWZpbmUgX19OU0xDT1JFX18gCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL05TTENvcmUuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikK
CgplbnVtIHsKICBrTlNMTWluU3lzdGVtVmVyc2lvbiA9IDB4MDkwMCwKICBrTlNMTWluT1RWZXJz
aW9uID0gMHgwMTMwCn07CgplbnVtIHsKICBrTlNMRGVmYXVsdExpc3RTaXplID0gMjU2Cn07Cgpl
bnVtIHsKICBrTlNMVVJMRGVsaW1pdGVyID0gJywnCn07CgoKI2RlZmluZSBrTlNMRXJyb3JOb0Vy
ciB7bm9FcnIsIGtOU0xOb0NvbnRleHR9CgplbnVtIHsKICBrTlNMTm9Db250ZXh0ID0gMAp9OwoK
c3RydWN0IE5TTEVycm9yIHsKICBPU1N0YXR1cyB0aGVFcnI7CiAgVUludDMyIHRoZUNvbnRleHQ7
Cn07CnR5cGVkZWYgc3RydWN0IE5TTEVycm9yIE5TTEVycm9yOwp0eXBlZGVmIE5TTEVycm9yICog
TlNMRXJyb3JQdHI7CmVudW0gewoKCgoKICBrTlNMRHVwbGljYXRlU2VhcmNoSW5Qcm9ncmVzcyA9
IDEwMCwKICBrTlNMVXNlckNhbmNlbGVkID0gdXNlckNhbmNlbGVkRXJyLAoKICBrTlNMSW52YWxp
ZEVudW1lcmF0b3JSZWYgPSAwCn07Cgp0eXBlZGVmIFVJbnQxNiBOU0xTZWFyY2hTdGF0ZTsKZW51
bSB7CgogIGtOU0xTZWFyY2hTdGF0ZUJ1ZmZlckZ1bGwgPSAxLAogIGtOU0xTZWFyY2hTdGF0ZU9u
R29pbmcgPSAyLAogIGtOU0xTZWFyY2hTdGF0ZUNvbXBsZXRlID0gMywKICBrTlNMU2VhcmNoU3Rh
dGVTdGFsbGVkID0gNCwKICBrTlNMV2FpdGluZ0ZvckNvbnRpbnVlID0gNQp9OwoKdHlwZWRlZiBV
SW50MzIgTlNMRXZlbnRDb2RlOwplbnVtIHsKCiAga05TTFNlcnZpY2VzTG9va3VwRGF0YUV2ZW50
ID0gNiwKICBrTlNMTmVpZ2hib3Job29kTG9va3VwRGF0YUV2ZW50ID0gNywKICBrTlNMTmV3RGF0
YUV2ZW50ID0gOCwKICBrTlNMQ29udGludWVMb29rdXBFdmVudCA9IDkKfTsKCgp0eXBlZGVmIFVJ
bnQzMiBOU0xDbGllbnRSZWY7CnR5cGVkZWYgVUludDMyIE5TTFJlcXVlc3RSZWY7CnR5cGVkZWYg
VUludDMyIE5TTE9uZUJhc2VkSW5kZXg7CnR5cGVkZWYgY2hhciAqIE5TTFBhdGg7CnR5cGVkZWYg
Y2hhciAqIE5TTFNlcnZpY2VUeXBlOwp0eXBlZGVmIEhhbmRsZSBOU0xTZXJ2aWNlc0xpc3Q7CnR5
cGVkZWYgdW5zaWduZWQgY2hhciAqIE5TTE5laWdoYm9yaG9vZDsKCgoKCgoKc3RydWN0IE5TTENs
aWVudEFzeW5jSW5mbyB7CiAgdm9pZCAqIGNsaWVudENvbnRleHRQdHI7CiAgdm9pZCAqIG1nckNv
bnRleHRQdHI7CiAgY2hhciAqIHJlc3VsdEJ1ZmZlcjsKICBsb25nIGJ1ZmZlckxlbjsKICBsb25n
IG1heEJ1ZmZlclNpemU7CiAgVUludDMyIHN0YXJ0VGltZTsKICBVSW50MzIgaW50U3RhcnRUaW1l
OwogIFVJbnQzMiBtYXhTZWFyY2hUaW1lOwogIFVJbnQzMiBhbGVydEludGVydmFsOwogIFVJbnQz
MiB0b3RhbEl0ZW1zOwogIFVJbnQzMiBhbGVydFRocmVzaG9sZDsKICBOU0xTZWFyY2hTdGF0ZSBz
ZWFyY2hTdGF0ZTsKICBOU0xFcnJvciBzZWFyY2hSZXN1bHQ7CiAgTlNMRXZlbnRDb2RlIHNlYXJj
aERhdGFUeXBlOwoKfTsKdHlwZWRlZiBzdHJ1Y3QgTlNMQ2xpZW50QXN5bmNJbmZvIE5TTENsaWVu
dEFzeW5jSW5mbzsKdHlwZWRlZiBOU0xDbGllbnRBc3luY0luZm8gKiBOU0xDbGllbnRBc3luY0lu
Zm9QdHI7CgoKc3RydWN0IE5TTFBsdWdpbkFzeW5jSW5mbyB7CiAgdm9pZCAqIG1nckNvbnRleHRQ
dHI7CiAgdm9pZCAqIHBsdWdpbkNvbnRleHRQdHI7CiAgdm9pZCAqIHBsdWdpblB0cjsKICBjaGFy
ICogcmVzdWx0QnVmZmVyOwogIGxvbmcgYnVmZmVyTGVuOwogIGxvbmcgbWF4QnVmZmVyU2l6ZTsK
ICBVSW50MzIgbWF4U2VhcmNoVGltZTsKICBVSW50MzIgcmVzZXJ2ZWQxOwogIFVJbnQzMiByZXNl
cnZlZDI7CiAgVUludDMyIHJlc2VydmVkMzsKICBOU0xDbGllbnRSZWYgY2xpZW50UmVmOwogIE5T
TFJlcXVlc3RSZWYgcmVxdWVzdFJlZjsKICBOU0xTZWFyY2hTdGF0ZSBzZWFyY2hTdGF0ZTsKICBP
U1N0YXR1cyBzZWFyY2hSZXN1bHQ7Cn07CnR5cGVkZWYgc3RydWN0IE5TTFBsdWdpbkFzeW5jSW5m
byBOU0xQbHVnaW5Bc3luY0luZm87CnR5cGVkZWYgTlNMUGx1Z2luQXN5bmNJbmZvICogTlNMUGx1
Z2luQXN5bmNJbmZvUHRyOwoKCnR5cGVkZWYgdm9pZCAoICogTlNMTWdyTm90aWZ5UHJvY1B0ciko
TlNMUGx1Z2luQXN5bmNJbmZvICogdGhlUGx1Z2luQXN5bmNJbmZvKTsKCgp0eXBlZGVmIHZvaWQg
KCAqIE5TTENsaWVudE5vdGlmeVByb2NQdHIpKE5TTENsaWVudEFzeW5jSW5mbyAqIHRoZUNsaWVu
dEFzeW5jSW5mbyk7CnR5cGVkZWYgTlNMTWdyTm90aWZ5UHJvY1B0ciBOU0xNZ3JOb3RpZnlVUFA7
CnR5cGVkZWYgTlNMQ2xpZW50Tm90aWZ5UHJvY1B0ciBOU0xDbGllbnROb3RpZnlVUFA7CiMgMTYy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9OU0xDb3JlLmgiIDMKZXh0ZXJuIE5T
TE1nck5vdGlmeVVQUApOZXdOU0xNZ3JOb3RpZnlVUFAoTlNMTWdyTm90aWZ5UHJvY1B0ciB1c2Vy
Um91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDE3MyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvTlNMQ29yZS5oIiAzCmV4dGVybiBOU0xDbGllbnROb3RpZnlV
UFAKTmV3TlNMQ2xpZW50Tm90aWZ5VVBQKE5TTENsaWVudE5vdGlmeVByb2NQdHIgdXNlclJvdXRp
bmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxODQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL05TTENvcmUuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlTlNMTWdyTm90
aWZ5VVBQKE5TTE1nck5vdGlmeVVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7CiMgMTk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9OU0xDb3JlLmgiIDMK
ZXh0ZXJuIHZvaWQKRGlzcG9zZU5TTENsaWVudE5vdGlmeVVQUChOU0xDbGllbnROb3RpZnlVUFAg
dXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDIwNiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvTlNMQ29yZS5oIiAzCmV4dGVybiB2b2lkCkludm9rZU5TTE1n
ck5vdGlmeVVQUCgKICBOU0xQbHVnaW5Bc3luY0luZm8gKiB0aGVQbHVnaW5Bc3luY0luZm8sCiAg
TlNMTWdyTm90aWZ5VVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAy
MTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL05TTENvcmUuaCIgMwpleHRlcm4g
dm9pZApJbnZva2VOU0xDbGllbnROb3RpZnlVUFAoCiAgTlNMQ2xpZW50QXN5bmNJbmZvICogdGhl
Q2xpZW50QXN5bmNJbmZvLAogIE5TTENsaWVudE5vdGlmeVVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0
ZV9fKChkZXByZWNhdGVkKSk7CgoKCiAgICBpbmxpbmUgTlNMTWdyTm90aWZ5VVBQIE5ld05TTE1n
ck5vdGlmeVVQUChOU0xNZ3JOb3RpZnlQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2Vy
Um91dGluZTsgfQogICAgaW5saW5lIE5TTENsaWVudE5vdGlmeVVQUCBOZXdOU0xDbGllbnROb3Rp
ZnlVUFAoTlNMQ2xpZW50Tm90aWZ5UHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJv
dXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VOU0xNZ3JOb3RpZnlVUFAoTlNMTWdyTm90
aWZ5VVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VOU0xDbGllbnROb3RpZnlVUFAoTlNM
Q2xpZW50Tm90aWZ5VVBQKSB7IH0KICAgIGlubGluZSB2b2lkIEludm9rZU5TTE1nck5vdGlmeVVQ
UChOU0xQbHVnaW5Bc3luY0luZm8gKiB0aGVQbHVnaW5Bc3luY0luZm8sIE5TTE1nck5vdGlmeVVQ
UCB1c2VyVVBQKSB7ICgqdXNlclVQUCkodGhlUGx1Z2luQXN5bmNJbmZvKTsgfQogICAgaW5saW5l
IHZvaWQgSW52b2tlTlNMQ2xpZW50Tm90aWZ5VVBQKE5TTENsaWVudEFzeW5jSW5mbyAqIHRoZUNs
aWVudEFzeW5jSW5mbywgTlNMQ2xpZW50Tm90aWZ5VVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKSh0
aGVDbGllbnRBc3luY0luZm8pOyB9CiMgMjQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9OU0xDb3JlLmgiIDMKc3RydWN0IE5TTFR5cGVkRGF0YSB7CiAgdW5zaWduZWQgbG9uZyBk
YXRhVHlwZTsKICB1bnNpZ25lZCBsb25nIGxlbmd0aE9mRGF0YTsKCgp9Owp0eXBlZGVmIHN0cnVj
dCBOU0xUeXBlZERhdGEgTlNMVHlwZWREYXRhOwp0eXBlZGVmIE5TTFR5cGVkRGF0YSAqIE5TTFR5
cGVkRGF0YVB0cjsKCiNkZWZpbmUga05TTERhdGFUeXBlICdOU0xfJwoKCgoKCnN0cnVjdCBOU0xT
ZXJ2aWNlc0xpc3RIZWFkZXIgewogIHVuc2lnbmVkIGxvbmcgbnVtU2VydmljZXM7CiAgdW5zaWdu
ZWQgbG9uZyBsb2dpY2FsTGVuOwoKCn07CnR5cGVkZWYgc3RydWN0IE5TTFNlcnZpY2VzTGlzdEhl
YWRlciBOU0xTZXJ2aWNlc0xpc3RIZWFkZXI7CnR5cGVkZWYgTlNMU2VydmljZXNMaXN0SGVhZGVy
ICogTlNMU2VydmljZXNMaXN0SGVhZGVyUHRyOwoKCgojZGVmaW5lIGtTTFBQcm90b2NvbFR5cGUg
IlNMUCIKI2RlZmluZSBrRE5TUHJvdG9jb2xUeXBlICJETlMiCiNkZWZpbmUga0xEQVBQcm90b2Nv
bFR5cGUgIkxEQVAiCiNkZWZpbmUga05CUFByb3RvY29sVHlwZSAiTkJQIgojZGVmaW5lIGtOU0xE
aXJlY3RvcnlTZXJ2aWNlUHJvdG9jb2xUeXBlICJEaXJTZXJ2aWNlIgoKCgoKCgoKc3RydWN0IE5T
TFBsdWdpbkRhdGEgewogIGxvbmcgcmVzZXJ2ZWQxOwogIGxvbmcgcmVzZXJ2ZWQyOwogIGxvbmcg
cmVzZXJ2ZWQzOwogIEJvb2xlYW4gc3VwcG9ydHNSZWdpc3RyYXRpb247CiAgQm9vbGVhbiBpc1B1
cmdlYWJsZTsKICBVSW50MTYgdG90YWxMZW47CiAgVUludDE2IGRhdGFUeXBlT2Zmc2V0OwogIFVJ
bnQxNiBzZXJ2aWNlTGlzdE9mZnNldDsKICBVSW50MTYgcHJvdG9jb2xMaXN0T2Zmc2V0OwogIFVJ
bnQxNiBjb21tZW50U3RyaW5nT2Zmc2V0OwoKCn07CnR5cGVkZWYgc3RydWN0IE5TTFBsdWdpbkRh
dGEgTlNMUGx1Z2luRGF0YTsKdHlwZWRlZiBOU0xQbHVnaW5EYXRhICogTlNMUGx1Z2luRGF0YVB0
cjsKIyAzMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL05TTENvcmUuaCIgMwoj
ZGVmaW5lIE5TTExpYnJhcnlQcmVzZW50KCkgdHJ1ZQojIDk1NCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvTlNMQ29yZS5oIiAzCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDc4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9PU1NlcnZpY2VzLmgiIDIgMwojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5Q29yZS5oIiAxIDMKIyAxNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHlDb3JlLmgiIDMKI2RlZmlu
ZSBfX1NFQ1VSSVRZQ09SRV9fIAoKCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9LZXljaGFpbkNvcmUuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0tleWNoYWluQ29yZS5oIiAzCiNkZWZpbmUgX19LRVlDSEFJTkNPUkVfXyAKIyA0
OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMKZXh0
ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCiMgNzUgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL0tleWNoYWluQ29yZS5oIiAzCnR5cGVkZWYgU2VjS2V5Y2hhaW5SZWYg
S0NSZWY7CnR5cGVkZWYgU2VjS2V5Y2hhaW5JdGVtUmVmIEtDSXRlbVJlZjsKdHlwZWRlZiBTZWNL
ZXljaGFpblNlYXJjaFJlZiBLQ1NlYXJjaFJlZjsKdHlwZWRlZiBTZWNLZXljaGFpbkF0dHJpYnV0
ZSBLQ0F0dHJpYnV0ZTsKdHlwZWRlZiBTZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3QgS0NBdHRyaWJ1
dGVMaXN0Owp0eXBlZGVmIFNlY0tleWNoYWluQXR0clR5cGUgS0NBdHRyVHlwZTsKdHlwZWRlZiBT
ZWNLZXljaGFpblN0YXR1cyBLQ1N0YXR1czsKdHlwZWRlZiBVSW50MTYgS0NFdmVudDsKZW51bSB7
CiAga0lkbGVLQ0V2ZW50ID0gMCwKICBrTG9ja0tDRXZlbnQgPSAxLAogIGtVbmxvY2tLQ0V2ZW50
ID0gMiwKICBrQWRkS0NFdmVudCA9IDMsCiAga0RlbGV0ZUtDRXZlbnQgPSA0LAogIGtVcGRhdGVL
Q0V2ZW50ID0gNSwKICBrUGFzc3dvcmRDaGFuZ2VkS0NFdmVudCA9IDYsCiAga1N5c3RlbUtDRXZl
bnQgPSA4LAogIGtEZWZhdWx0Q2hhbmdlZEtDRXZlbnQgPSA5LAogIGtEYXRhQWNjZXNzS0NFdmVu
dCA9IDEwLAogIGtLZXljaGFpbkxpc3RDaGFuZ2VkS0NFdmVudCA9IDExCn07Cgp0eXBlZGVmIFVJ
bnQxNiBLQ0V2ZW50TWFzazsKZW51bSB7CiAga0lkbGVLQ0V2ZW50TWFzayA9IDEgPDwga0lkbGVL
Q0V2ZW50LAogIGtMb2NrS0NFdmVudE1hc2sgPSAxIDw8IGtMb2NrS0NFdmVudCwKICBrVW5sb2Nr
S0NFdmVudE1hc2sgPSAxIDw8IGtVbmxvY2tLQ0V2ZW50LAogIGtBZGRLQ0V2ZW50TWFzayA9IDEg
PDwga0FkZEtDRXZlbnQsCiAga0RlbGV0ZUtDRXZlbnRNYXNrID0gMSA8PCBrRGVsZXRlS0NFdmVu
dCwKICBrVXBkYXRlS0NFdmVudE1hc2sgPSAxIDw8IGtVcGRhdGVLQ0V2ZW50LAogIGtQYXNzd29y
ZENoYW5nZWRLQ0V2ZW50TWFzayA9IDEgPDwga1Bhc3N3b3JkQ2hhbmdlZEtDRXZlbnQsCiAga1N5
c3RlbUV2ZW50S0NFdmVudE1hc2sgPSAxIDw8IGtTeXN0ZW1LQ0V2ZW50LAogIGtEZWZhdWx0Q2hh
bmdlZEtDRXZlbnRNYXNrID0gMSA8PCBrRGVmYXVsdENoYW5nZWRLQ0V2ZW50LAogIGtEYXRhQWNj
ZXNzS0NFdmVudE1hc2sgPSAxIDw8IGtEYXRhQWNjZXNzS0NFdmVudCwKICBrRXZlcnlLQ0V2ZW50
TWFzayA9IDB4RkZGRgp9OwoKdHlwZWRlZiBVSW50OCBBRlBTZXJ2ZXJTaWduYXR1cmVbMTZdOwp0
eXBlZGVmIFVJbnQ4IEtDUHVibGljS2V5SGFzaFsyMF07CnN0cnVjdCBLQ0NhbGxiYWNrSW5mbyB7
CiAgVUludDMyIHZlcnNpb247CiAgS0NJdGVtUmVmIGl0ZW07CiAgU0ludDMyIHByb2Nlc3NJRFsy
XTsKICBTSW50MzIgZXZlbnRbNF07CiAgS0NSZWYga2V5Y2hhaW47Cn07CnR5cGVkZWYgc3RydWN0
IEtDQ2FsbGJhY2tJbmZvIEtDQ2FsbGJhY2tJbmZvOwplbnVtIHsKICBrVW5sb2NrU3RhdGVLQ1N0
YXR1cyA9IDEsCiAga1JkUGVybUtDU3RhdHVzID0gMiwKICBrV3JQZXJtS0NTdGF0dXMgPSA0Cn07
CgoKZW51bSB7CiAga0NlcnRpZmljYXRlS0NJdGVtQ2xhc3MgPSAnY2VydCcsCiAga0FwcGxlU2hh
cmVQYXNzd29yZEtDSXRlbUNsYXNzID0gJ2FzaHAnLAogIGtJbnRlcm5ldFBhc3N3b3JkS0NJdGVt
Q2xhc3MgPSAnaW5ldCcsCiAga0dlbmVyaWNQYXNzd29yZEtDSXRlbUNsYXNzID0gJ2dlbnAnCn07
CgoKdHlwZWRlZiBGb3VyQ2hhckNvZGUgS0NJdGVtQ2xhc3M7CmVudW0gewoKICBrQ2xhc3NLQ0l0
ZW1BdHRyID0gJ2NsYXMnLAogIGtDcmVhdGlvbkRhdGVLQ0l0ZW1BdHRyID0gJ2NkYXQnLAogIGtN
b2REYXRlS0NJdGVtQXR0ciA9ICdtZGF0JywKICBrRGVzY3JpcHRpb25LQ0l0ZW1BdHRyID0gJ2Rl
c2MnLAogIGtDb21tZW50S0NJdGVtQXR0ciA9ICdpY210JywKICBrQ3JlYXRvcktDSXRlbUF0dHIg
PSAnY3J0cicsCiAga1R5cGVLQ0l0ZW1BdHRyID0gJ3R5cGUnLAogIGtTY3JpcHRDb2RlS0NJdGVt
QXR0ciA9ICdzY3JwJywKICBrTGFiZWxLQ0l0ZW1BdHRyID0gJ2xhYmwnLAogIGtJbnZpc2libGVL
Q0l0ZW1BdHRyID0gJ2ludmknLAogIGtOZWdhdGl2ZUtDSXRlbUF0dHIgPSAnbmVnYScsCiAga0N1
c3RvbUljb25LQ0l0ZW1BdHRyID0gJ2N1c2knLAogIGtBY2NvdW50S0NJdGVtQXR0ciA9ICdhY2N0
JywKCiAga1NlcnZpY2VLQ0l0ZW1BdHRyID0gJ3N2Y2UnLAogIGtHZW5lcmljS0NJdGVtQXR0ciA9
ICdnZW5hJywKCiAga1NlY3VyaXR5RG9tYWluS0NJdGVtQXR0ciA9ICdzZG1uJywKICBrU2VydmVy
S0NJdGVtQXR0ciA9ICdzcnZyJywKICBrQXV0aFR5cGVLQ0l0ZW1BdHRyID0gJ2F0eXAnLAogIGtQ
b3J0S0NJdGVtQXR0ciA9ICdwb3J0JywKICBrUGF0aEtDSXRlbUF0dHIgPSAncGF0aCcsCgogIGtW
b2x1bWVLQ0l0ZW1BdHRyID0gJ3ZsbWUnLAogIGtBZGRyZXNzS0NJdGVtQXR0ciA9ICdhZGRyJywK
ICBrU2lnbmF0dXJlS0NJdGVtQXR0ciA9ICdzc2lnJywKCiAga1Byb3RvY29sS0NJdGVtQXR0ciA9
ICdwdGNsJywKCiAga1N1YmplY3RLQ0l0ZW1BdHRyID0gJ3N1YmonLAogIGtDb21tb25OYW1lS0NJ
dGVtQXR0ciA9ICdjbiAgJywKICBrSXNzdWVyS0NJdGVtQXR0ciA9ICdpc3N1JywKICBrU2VyaWFs
TnVtYmVyS0NJdGVtQXR0ciA9ICdzbmJyJywKICBrRU1haWxLQ0l0ZW1BdHRyID0gJ21haWwnLAog
IGtQdWJsaWNLZXlIYXNoS0NJdGVtQXR0ciA9ICdocGt5JywKICBrSXNzdWVyVVJMS0NJdGVtQXR0
ciA9ICdpdXJsJywKCiAga0VuY3J5cHRLQ0l0ZW1BdHRyID0gJ2VuY3InLAogIGtEZWNyeXB0S0NJ
dGVtQXR0ciA9ICdkZWNyJywKICBrU2lnbktDSXRlbUF0dHIgPSAnc2lnbicsCiAga1ZlcmlmeUtD
SXRlbUF0dHIgPSAndmVyaScsCiAga1dyYXBLQ0l0ZW1BdHRyID0gJ3dyYXAnLAogIGtVbndyYXBL
Q0l0ZW1BdHRyID0gJ3Vud3InLAogIGtTdGFydERhdGVLQ0l0ZW1BdHRyID0gJ3NkYXQnLAogIGtF
bmREYXRlS0NJdGVtQXR0ciA9ICdlZGF0Jwp9OwoKdHlwZWRlZiBGb3VyQ2hhckNvZGUgS0NJdGVt
QXR0cjsKZW51bSB7CiAga0tDQXV0aFR5cGVOVExNID0gJ250bG0nLAogIGtLQ0F1dGhUeXBlTVNO
ID0gJ21zbmEnLAogIGtLQ0F1dGhUeXBlRFBBID0gJ2RwYWEnLAogIGtLQ0F1dGhUeXBlUlBBID0g
J3JwYWEnLAogIGtLQ0F1dGhUeXBlSFRUUERpZ2VzdCA9ICdodHRkJywKICBrS0NBdXRoVHlwZURl
ZmF1bHQgPSAnZGZsdCcKfTsKCnR5cGVkZWYgRm91ckNoYXJDb2RlIEtDQXV0aFR5cGU7CmVudW0g
ewogIGtLQ1Byb3RvY29sVHlwZUZUUCA9ICdmdHAgJywKICBrS0NQcm90b2NvbFR5cGVGVFBBY2Nv
dW50ID0gJ2Z0cGEnLAogIGtLQ1Byb3RvY29sVHlwZUhUVFAgPSAnaHR0cCcsCiAga0tDUHJvdG9j
b2xUeXBlSVJDID0gJ2lyYyAnLAogIGtLQ1Byb3RvY29sVHlwZU5OVFAgPSAnbm50cCcsCiAga0tD
UHJvdG9jb2xUeXBlUE9QMyA9ICdwb3AzJywKICBrS0NQcm90b2NvbFR5cGVTTVRQID0gJ3NtdHAn
LAogIGtLQ1Byb3RvY29sVHlwZVNPQ0tTID0gJ3NveCAnLAogIGtLQ1Byb3RvY29sVHlwZUlNQVAg
PSAnaW1hcCcsCiAga0tDUHJvdG9jb2xUeXBlTERBUCA9ICdsZGFwJywKICBrS0NQcm90b2NvbFR5
cGVBcHBsZVRhbGsgPSAnYXRsaycsCiAga0tDUHJvdG9jb2xUeXBlQUZQID0gJ2FmcCAnLAogIGtL
Q1Byb3RvY29sVHlwZVRlbG5ldCA9ICd0ZWxuJwp9OwoKdHlwZWRlZiBGb3VyQ2hhckNvZGUgS0NQ
cm90b2NvbFR5cGU7CnR5cGVkZWYgVUludDMyIEtDQ2VydEFkZE9wdGlvbnM7CmVudW0gewogIGtT
ZWNPcHRpb25SZXNlcnZlZCA9IDB4MDAwMDAwRkYsCiAga0NlcnRVc2FnZVNoaWZ0ID0gOCwKICBr
Q2VydFVzYWdlU2lnbmluZ0FkZCA9IDEgPDwgKGtDZXJ0VXNhZ2VTaGlmdCArIDApLAogIGtDZXJ0
VXNhZ2VTaWduaW5nQXNrQW5kQWRkID0gMSA8PCAoa0NlcnRVc2FnZVNoaWZ0ICsgMSksCiAga0Nl
cnRVc2FnZVZlcmlmeUFkZCA9IDEgPDwgKGtDZXJ0VXNhZ2VTaGlmdCArIDIpLAogIGtDZXJ0VXNh
Z2VWZXJpZnlBc2tBbmRBZGQgPSAxIDw8IChrQ2VydFVzYWdlU2hpZnQgKyAzKSwKICBrQ2VydFVz
YWdlRW5jcnlwdEFkZCA9IDEgPDwgKGtDZXJ0VXNhZ2VTaGlmdCArIDQpLAogIGtDZXJ0VXNhZ2VF
bmNyeXB0QXNrQW5kQWRkID0gMSA8PCAoa0NlcnRVc2FnZVNoaWZ0ICsgNSksCiAga0NlcnRVc2Fn
ZURlY3J5cHRBZGQgPSAxIDw8IChrQ2VydFVzYWdlU2hpZnQgKyA2KSwKICBrQ2VydFVzYWdlRGVj
cnlwdEFza0FuZEFkZCA9IDEgPDwgKGtDZXJ0VXNhZ2VTaGlmdCArIDcpLAogIGtDZXJ0VXNhZ2VL
ZXlFeGNoQWRkID0gMSA8PCAoa0NlcnRVc2FnZVNoaWZ0ICsgOCksCiAga0NlcnRVc2FnZUtleUV4
Y2hBc2tBbmRBZGQgPSAxIDw8IChrQ2VydFVzYWdlU2hpZnQgKyA5KSwKICBrQ2VydFVzYWdlUm9v
dEFkZCA9IDEgPDwgKGtDZXJ0VXNhZ2VTaGlmdCArIDEwKSwKICBrQ2VydFVzYWdlUm9vdEFza0Fu
ZEFkZCA9IDEgPDwgKGtDZXJ0VXNhZ2VTaGlmdCArIDExKSwKICBrQ2VydFVzYWdlU1NMQWRkID0g
MSA8PCAoa0NlcnRVc2FnZVNoaWZ0ICsgMTIpLAogIGtDZXJ0VXNhZ2VTU0xBc2tBbmRBZGQgPSAx
IDw8IChrQ2VydFVzYWdlU2hpZnQgKyAxMyksCiAga0NlcnRVc2FnZUFsbEFkZCA9IDB4N0ZGRkZG
MDAKfTsKCnR5cGVkZWYgVUludDE2IEtDVmVyaWZ5U3RvcE9uOwplbnVtIHsKICBrUG9saWN5S0NT
dG9wT24gPSAwLAogIGtOb25lS0NTdG9wT24gPSAxLAogIGtGaXJzdFBhc3NLQ1N0b3BPbiA9IDIs
CiAga0ZpcnN0RmFpbEtDU3RvcE9uID0gMwp9OwoKdHlwZWRlZiBVSW50MzIgS0NDZXJ0U2VhcmNo
T3B0aW9uczsKZW51bSB7CiAga0NlcnRTZWFyY2hTaGlmdCA9IDAsCiAga0NlcnRTZWFyY2hTaWdu
aW5nSWdub3JlZCA9IDAsCiAga0NlcnRTZWFyY2hTaWduaW5nQWxsb3dlZCA9IDEgPDwgKGtDZXJ0
U2VhcmNoU2hpZnQgKyAwKSwKICBrQ2VydFNlYXJjaFNpZ25pbmdEaXNhbGxvd2VkID0gMSA8PCAo
a0NlcnRTZWFyY2hTaGlmdCArIDEpLAogIGtDZXJ0U2VhcmNoU2lnbmluZ01hc2sgPSAoKGtDZXJ0
U2VhcmNoU2lnbmluZ0FsbG93ZWQpIHwgKGtDZXJ0U2VhcmNoU2lnbmluZ0Rpc2FsbG93ZWQpKSwK
ICBrQ2VydFNlYXJjaFZlcmlmeUlnbm9yZWQgPSAwLAogIGtDZXJ0U2VhcmNoVmVyaWZ5QWxsb3dl
ZCA9IDEgPDwgKGtDZXJ0U2VhcmNoU2hpZnQgKyAyKSwKICBrQ2VydFNlYXJjaFZlcmlmeURpc2Fs
bG93ZWQgPSAxIDw8IChrQ2VydFNlYXJjaFNoaWZ0ICsgMyksCiAga0NlcnRTZWFyY2hWZXJpZnlN
YXNrID0gKChrQ2VydFNlYXJjaFZlcmlmeUFsbG93ZWQpIHwgKGtDZXJ0U2VhcmNoVmVyaWZ5RGlz
YWxsb3dlZCkpLAogIGtDZXJ0U2VhcmNoRW5jcnlwdElnbm9yZWQgPSAwLAogIGtDZXJ0U2VhcmNo
RW5jcnlwdEFsbG93ZWQgPSAxIDw8IChrQ2VydFNlYXJjaFNoaWZ0ICsgNCksCiAga0NlcnRTZWFy
Y2hFbmNyeXB0RGlzYWxsb3dlZCA9IDEgPDwgKGtDZXJ0U2VhcmNoU2hpZnQgKyA1KSwKICBrQ2Vy
dFNlYXJjaEVuY3J5cHRNYXNrID0gKChrQ2VydFNlYXJjaEVuY3J5cHRBbGxvd2VkKSB8IChrQ2Vy
dFNlYXJjaEVuY3J5cHREaXNhbGxvd2VkKSksCiAga0NlcnRTZWFyY2hEZWNyeXB0SWdub3JlZCA9
IDAsCiAga0NlcnRTZWFyY2hEZWNyeXB0QWxsb3dlZCA9IDEgPDwgKGtDZXJ0U2VhcmNoU2hpZnQg
KyA2KSwKICBrQ2VydFNlYXJjaERlY3J5cHREaXNhbGxvd2VkID0gMSA8PCAoa0NlcnRTZWFyY2hT
aGlmdCArIDcpLAogIGtDZXJ0U2VhcmNoRGVjcnlwdE1hc2sgPSAoKGtDZXJ0U2VhcmNoRGVjcnlw
dEFsbG93ZWQpIHwgKGtDZXJ0U2VhcmNoRGVjcnlwdERpc2FsbG93ZWQpKSwKICBrQ2VydFNlYXJj
aFdyYXBJZ25vcmVkID0gMCwKICBrQ2VydFNlYXJjaFdyYXBBbGxvd2VkID0gMSA8PCAoa0NlcnRT
ZWFyY2hTaGlmdCArIDgpLAogIGtDZXJ0U2VhcmNoV3JhcERpc2FsbG93ZWQgPSAxIDw8IChrQ2Vy
dFNlYXJjaFNoaWZ0ICsgOSksCiAga0NlcnRTZWFyY2hXcmFwTWFzayA9ICgoa0NlcnRTZWFyY2hX
cmFwQWxsb3dlZCkgfCAoa0NlcnRTZWFyY2hXcmFwRGlzYWxsb3dlZCkpLAogIGtDZXJ0U2VhcmNo
VW53cmFwSWdub3JlZCA9IDAsCiAga0NlcnRTZWFyY2hVbndyYXBBbGxvd2VkID0gMSA8PCAoa0Nl
cnRTZWFyY2hTaGlmdCArIDEwKSwKICBrQ2VydFNlYXJjaFVud3JhcERpc2FsbG93ZWQgPSAxIDw8
IChrQ2VydFNlYXJjaFNoaWZ0ICsgMTEpLAogIGtDZXJ0U2VhcmNoVW53cmFwTWFzayA9ICgoa0Nl
cnRTZWFyY2hVbndyYXBBbGxvd2VkKSB8IChrQ2VydFNlYXJjaFVud3JhcERpc2FsbG93ZWQpKSwK
ICBrQ2VydFNlYXJjaFByaXZLZXlSZXF1aXJlZCA9IDEgPDwgKGtDZXJ0U2VhcmNoU2hpZnQgKyAx
MiksCiAga0NlcnRTZWFyY2hBbnkgPSAwCn07CgoKZW51bSB7CiAga0FueVBvcnQgPSAwCn07Cgpl
bnVtIHsKICBrQW55UHJvdG9jb2wgPSAwLAogIGtBbnlBdXRoVHlwZSA9IDAKfTsKIyAyOTcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0tleWNoYWluQ29yZS5oIiAzCmV4dGVybiBP
U1N0YXR1cwpLQ0dldEtleWNoYWluTWFuYWdlclZlcnNpb24oVUludDMyICogcmV0dXJuVmVycyk7
CiMgMzEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkNvcmUuaCIg
MwogICAgaW5saW5lIEJvb2xlYW4gS2V5Y2hhaW5NYW5hZ2VyQXZhaWxhYmxlKCkgeyByZXR1cm4g
dHJ1ZTsgfQojIDMyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5D
b3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCktDU2V0SW50ZXJhY3Rpb25BbGxvd2VkKEJvb2xlYW4g
c3RhdGUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAzNDMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL0tleWNoYWluQ29yZS5oIiAzCmV4dGVybiBCb29sZWFuCktDSXNJ
bnRlcmFjdGlvbkFsbG93ZWQodm9pZCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDM3
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzCktDTWFrZUtDUmVmRnJvbUZTUmVmKAogIEZTUmVmICoga2V5Y2hhaW5GU1Jl
ZiwKICBLQ1JlZiAqIGtleWNoYWluKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMzk2
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkNvcmUuaCIgMwpleHRl
cm4gT1NTdGF0dXMKS0NNYWtlS0NSZWZGcm9tQWxpYXMoCiAgQWxpYXNIYW5kbGUga2V5Y2hhaW5B
bGlhcywKICBLQ1JlZiAqIGtleWNoYWluKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMg
NDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkNvcmUuaCIgMwpl
eHRlcm4gT1NTdGF0dXMKS0NNYWtlQWxpYXNGcm9tS0NSZWYoCiAgS0NSZWYga2V5Y2hhaW4sCiAg
QWxpYXNIYW5kbGUgKiBrZXljaGFpbkFsaWFzKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CiMgNDMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkNvcmUuaCIg
MwpleHRlcm4gT1NTdGF0dXMKS0NSZWxlYXNlS2V5Y2hhaW4oS0NSZWYgKiBrZXljaGFpbikgX19h
dHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDQ0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCktDR2V0RGVmYXVsdEtl
eWNoYWluKEtDUmVmICoga2V5Y2hhaW4pIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA0
NjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0tleWNoYWluQ29yZS5oIiAzCmV4
dGVybiBPU1N0YXR1cwpLQ1NldERlZmF1bHRLZXljaGFpbihLQ1JlZiBrZXljaGFpbikgX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDQ3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hl
YWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCktDR2V0U3RhdHVzKAogIEtD
UmVmIGtleWNoYWluLAogIFVJbnQzMiAqIGtleWNoYWluU3RhdHVzKSBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7CiMgNDk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9LZXlj
aGFpbkNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKS0NHZXRLZXljaGFpbigKICBLQ0l0ZW1SZWYg
aXRlbSwKICBLQ1JlZiAqIGtleWNoYWluKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMg
NTExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkNvcmUuaCIgMwpl
eHRlcm4gT1NTdGF0dXMKS0NHZXRLZXljaGFpbk5hbWUoCiAgS0NSZWYga2V5Y2hhaW4sCiAgU3Ry
aW5nUHRyIGtleWNoYWluTmFtZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDUyOSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMKZXh0ZXJu
IFVJbnQxNgpLQ0NvdW50S2V5Y2hhaW5zKHZvaWQpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQp
KTsKIyA1NDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0tleWNoYWluQ29yZS5o
IiAzCmV4dGVybiBPU1N0YXR1cwpLQ0dldEluZEtleWNoYWluKAogIFVJbnQxNiBpbmRleCwKICBL
Q1JlZiAqIGtleWNoYWluKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKdHlwZWRlZiBP
U1N0YXR1cyAoICogS0NDYWxsYmFja1Byb2NQdHIpKEtDRXZlbnQga2V5Y2hhaW5FdmVudCwgS0ND
YWxsYmFja0luZm8gKmluZm8sIHZvaWQgKnVzZXJDb250ZXh0KTsKdHlwZWRlZiBLQ0NhbGxiYWNr
UHJvY1B0ciBLQ0NhbGxiYWNrVVBQOwojIDU2MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hl
YWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMKZXh0ZXJuIEtDQ2FsbGJhY2tVUFAKTmV3S0NDYWxsYmFj
a1VQUChLQ0NhbGxiYWNrUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwojIDU3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5D
b3JlLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUtDQ2FsbGJhY2tVUFAoS0NDYWxsYmFja1VQUCB1
c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNTgyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNl
cy5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSW52
b2tlS0NDYWxsYmFja1VQUCgKICBLQ0V2ZW50IGtleWNoYWluRXZlbnQsCiAgS0NDYWxsYmFja0lu
Zm8gKiBpbmZvLAogIHZvaWQgKiB1c2VyQ29udGV4dCwKICBLQ0NhbGxiYWNrVVBQIHVzZXJVUFAp
IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBLQ0NhbGxiYWNrVVBQ
IE5ld0tDQ2FsbGJhY2tVUFAoS0NDYWxsYmFja1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJu
IHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlS0NDYWxsYmFja1VQUChLQ0Nh
bGxiYWNrVVBQKSB7IH0KICAgIGlubGluZSBPU1N0YXR1cyBJbnZva2VLQ0NhbGxiYWNrVVBQKEtD
RXZlbnQga2V5Y2hhaW5FdmVudCwgS0NDYWxsYmFja0luZm8gKiBpbmZvLCB2b2lkICogdXNlckNv
bnRleHQsIEtDQ2FsbGJhY2tVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShrZXljaGFp
bkV2ZW50LCBpbmZvLCB1c2VyQ29udGV4dCk7IH0KIyA2MTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzL0tleWNoYWluQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpLQ0ZpbmRBcHBs
ZVNoYXJlUGFzc3dvcmQoCiAgQUZQU2VydmVyU2lnbmF0dXJlICogc2VydmVyU2lnbmF0dXJlLAog
IENvbnN0U3RyaW5nUHRyIHNlcnZlckFkZHJlc3MsCiAgQ29uc3RTdHJpbmdQdHIgc2VydmVyTmFt
ZSwKICBDb25zdFN0cmluZ1B0ciB2b2x1bWVOYW1lLAogIENvbnN0U3RyaW5nUHRyIGFjY291bnRO
YW1lLAogIFVJbnQzMiBtYXhMZW5ndGgsCiAgdm9pZCAqIHBhc3N3b3JkRGF0YSwKICBVSW50MzIg
KiBhY3R1YWxMZW5ndGgsCiAgS0NJdGVtUmVmICogaXRlbSkgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwojIDYzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5D
b3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCktDRmluZEludGVybmV0UGFzc3dvcmQoCiAgQ29uc3RT
dHJpbmdQdHIgc2VydmVyTmFtZSwKICBDb25zdFN0cmluZ1B0ciBzZWN1cml0eURvbWFpbiwKICBD
b25zdFN0cmluZ1B0ciBhY2NvdW50TmFtZSwKICBVSW50MTYgcG9ydCwKICBPU1R5cGUgcHJvdG9j
b2wsCiAgT1NUeXBlIGF1dGhUeXBlLAogIFVJbnQzMiBtYXhMZW5ndGgsCiAgdm9pZCAqIHBhc3N3
b3JkRGF0YSwKICBVSW50MzIgKiBhY3R1YWxMZW5ndGgsCiAgS0NJdGVtUmVmICogaXRlbSkgX19h
dHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDY2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCktDRmluZEludGVybmV0
UGFzc3dvcmRXaXRoUGF0aCgKICBDb25zdFN0cmluZ1B0ciBzZXJ2ZXJOYW1lLAogIENvbnN0U3Ry
aW5nUHRyIHNlY3VyaXR5RG9tYWluLAogIENvbnN0U3RyaW5nUHRyIGFjY291bnROYW1lLAogIENv
bnN0U3RyaW5nUHRyIHBhdGgsCiAgVUludDE2IHBvcnQsCiAgT1NUeXBlIHByb3RvY29sLAogIE9T
VHlwZSBhdXRoVHlwZSwKICBVSW50MzIgbWF4TGVuZ3RoLAogIHZvaWQgKiBwYXNzd29yZERhdGEs
CiAgVUludDMyICogYWN0dWFsTGVuZ3RoLAogIEtDSXRlbVJlZiAqIGl0ZW0pIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKIyA2ODggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L0tleWNoYWluQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpLQ0ZpbmRHZW5lcmljUGFzc3dvcmQo
CiAgQ29uc3RTdHJpbmdQdHIgc2VydmljZU5hbWUsCiAgQ29uc3RTdHJpbmdQdHIgYWNjb3VudE5h
bWUsCiAgVUludDMyIG1heExlbmd0aCwKICB2b2lkICogcGFzc3dvcmREYXRhLAogIFVJbnQzMiAq
IGFjdHVhbExlbmd0aCwKICBLQ0l0ZW1SZWYgKiBpdGVtKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7CiMgNzEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkNv
cmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKS0NBZGRDYWxsYmFjaygKICBLQ0NhbGxiYWNrVVBQIGNh
bGxiYWNrUHJvYywKICBLQ0V2ZW50TWFzayBldmVudE1hc2ssCiAgdm9pZCAqIHVzZXJDb250ZXh0
KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNzI4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9LZXljaGFpbkNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKS0NSZW1vdmVD
YWxsYmFjayhLQ0NhbGxiYWNrVVBQIGNhbGxiYWNrUHJvYykgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwojIDc0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5D
b3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCktDTmV3SXRlbSgKICBLQ0l0ZW1DbGFzcyBpdGVtQ2xh
c3MsCiAgT1NUeXBlIGl0ZW1DcmVhdG9yLAogIFVJbnQzMiBsZW5ndGgsCiAgY29uc3Qgdm9pZCAq
IGRhdGEsCiAgS0NJdGVtUmVmICogaXRlbSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoj
IDc2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMK
ZXh0ZXJuIE9TU3RhdHVzCktDU2V0QXR0cmlidXRlKAogIEtDSXRlbVJlZiBpdGVtLAogIEtDQXR0
cmlidXRlICogYXR0cikgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDc4MSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09T
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzCktDR2V0QXR0cmlidXRlKAogIEtDSXRlbVJlZiBpdGVtLAogIEtDQXR0cmlidXRlICogYXR0
ciwKICBVSW50MzIgKiBhY3R1YWxMZW5ndGgpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsK
IyA3OTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0tleWNoYWluQ29yZS5oIiAz
CmV4dGVybiBPU1N0YXR1cwpLQ1NldERhdGEoCiAgS0NJdGVtUmVmIGl0ZW0sCiAgVUludDMyIGxl
bmd0aCwKICBjb25zdCB2b2lkICogZGF0YSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoj
IDgxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMK
ZXh0ZXJuIE9TU3RhdHVzCktDVXBkYXRlSXRlbShLQ0l0ZW1SZWYgaXRlbSkgX19hdHRyaWJ1dGVf
XygoZGVwcmVjYXRlZCkpOwojIDgzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
S2V5Y2hhaW5Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCktDUmVsZWFzZUl0ZW0oS0NJdGVtUmVm
ICogaXRlbSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDg0OCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCktD
Q29weUl0ZW0oCiAgS0NJdGVtUmVmIGl0ZW0sCiAgS0NSZWYgZGVzdEtleWNoYWluLAogIEtDSXRl
bVJlZiAqIGNvcHkpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA4NjggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1Nl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0tleWNoYWluQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1
cwpLQ0ZpbmRGaXJzdEl0ZW0oCiAgS0NSZWYga2V5Y2hhaW4sCiAgY29uc3QgS0NBdHRyaWJ1dGVM
aXN0ICogYXR0ckxpc3QsCiAgS0NTZWFyY2hSZWYgKiBzZWFyY2gsCiAgS0NJdGVtUmVmICogaXRl
bSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDg4NyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCktDRmluZE5l
eHRJdGVtKAogIEtDU2VhcmNoUmVmIHNlYXJjaCwKICBLQ0l0ZW1SZWYgKiBpdGVtKSBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgOTA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9LZXljaGFpbkNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKS0NSZWxlYXNlU2VhcmNoKEtD
U2VhcmNoUmVmICogc2VhcmNoKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgOTIwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkNvcmUuaCIgMwpleHRlcm4g
T1NTdGF0dXMKS0NEZWxldGVJdGVtKEtDSXRlbVJlZiBpdGVtKSBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CiMgOTM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFp
bkNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKS0NHZXREYXRhKAogIEtDSXRlbVJlZiBpdGVtLAog
IFVJbnQzMiBtYXhMZW5ndGgsCiAgdm9pZCAqIGRhdGEsCiAgVUludDMyICogYWN0dWFsTGVuZ3Ro
KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgOTU1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9LZXljaGFpbkNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKS0NMb2NrKEtD
UmVmIGtleWNoYWluKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgOTcxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkNvcmUuaCIgMwpleHRlcm4gT1NTdGF0
dXMKa2NnZXRrZXljaGFpbm5hbWUoCiAgS0NSZWYga2V5Y2hhaW4sCiAgY2hhciAqIGtleWNoYWlu
TmFtZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDk4OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL09TU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCmtjZmlu
ZGFwcGxlc2hhcmVwYXNzd29yZCgKICBBRlBTZXJ2ZXJTaWduYXR1cmUgKiBzZXJ2ZXJTaWduYXR1
cmUsCiAgY29uc3QgY2hhciAqIHNlcnZlckFkZHJlc3MsCiAgY29uc3QgY2hhciAqIHNlcnZlck5h
bWUsCiAgY29uc3QgY2hhciAqIHZvbHVtZU5hbWUsCiAgY29uc3QgY2hhciAqIGFjY291bnROYW1l
LAogIFVJbnQzMiBtYXhMZW5ndGgsCiAgdm9pZCAqIHBhc3N3b3JkRGF0YSwKICBVSW50MzIgKiBh
Y3R1YWxMZW5ndGgsCiAgS0NJdGVtUmVmICogaXRlbSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwojIDEwMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0tleWNoYWluQ29y
ZS5oIiAzCmV4dGVybiBPU1N0YXR1cwprY2ZpbmRpbnRlcm5ldHBhc3N3b3JkKAogIGNvbnN0IGNo
YXIgKiBzZXJ2ZXJOYW1lLAogIGNvbnN0IGNoYXIgKiBzZWN1cml0eURvbWFpbiwKICBjb25zdCBj
aGFyICogYWNjb3VudE5hbWUsCiAgVUludDE2IHBvcnQsCiAgT1NUeXBlIHByb3RvY29sLAogIE9T
VHlwZSBhdXRoVHlwZSwKICBVSW50MzIgbWF4TGVuZ3RoLAogIHZvaWQgKiBwYXNzd29yZERhdGEs
CiAgVUludDMyICogYWN0dWFsTGVuZ3RoLAogIEtDSXRlbVJlZiAqIGl0ZW0pIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKIyAxMDM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9LZXljaGFpbkNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKa2NmaW5kaW50ZXJuZXRwYXNzd29y
ZHdpdGhwYXRoKAogIGNvbnN0IGNoYXIgKiBzZXJ2ZXJOYW1lLAogIGNvbnN0IGNoYXIgKiBzZWN1
cml0eURvbWFpbiwKICBjb25zdCBjaGFyICogYWNjb3VudE5hbWUsCiAgY29uc3QgY2hhciAqIHBh
dGgsCiAgVUludDE2IHBvcnQsCiAgT1NUeXBlIHByb3RvY29sLAogIE9TVHlwZSBhdXRoVHlwZSwK
ICBVSW50MzIgbWF4TGVuZ3RoLAogIHZvaWQgKiBwYXNzd29yZERhdGEsCiAgVUludDMyICogYWN0
dWFsTGVuZ3RoLAogIEtDSXRlbVJlZiAqIGl0ZW0pIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQp
KTsKIyAxMDYzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkNvcmUu
aCIgMwpleHRlcm4gT1NTdGF0dXMKa2NmaW5kZ2VuZXJpY3Bhc3N3b3JkKAogIGNvbnN0IGNoYXIg
KiBzZXJ2aWNlTmFtZSwKICBjb25zdCBjaGFyICogYWNjb3VudE5hbWUsCiAgVUludDMyIG1heExl
bmd0aCwKICB2b2lkICogcGFzc3dvcmREYXRhLAogIFVJbnQzMiAqIGFjdHVhbExlbmd0aCwKICBL
Q0l0ZW1SZWYgKiBpdGVtKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCiNwcmFnbWEg
cGFjayhwb3ApCgoKfQojIDI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9TZWN1
cml0eUNvcmUuaCIgMiAzCiMgNzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PU1NlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL09T
U2VydmljZXMuaCIgMiAzCiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlU2VydmljZXMuaCIgMiAzCgoKCgoKCgojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrLmgiIDEgMwojIDE1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0d29yay5oIiAzCiNkZWZpbmUgX19DRk5F
VFdPUktfXyAKCgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5l
dHdvcmtEZWZzLmgiIDEgMwojIDE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NG
TmV0d29ya0RlZnMuaCIgMwojZGVmaW5lIF9fQ0ZORVRXT1JLX0RFRlNfSF8gCiMgMzUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
Rk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrRGVmcy5oIiAzCiNkZWZpbmUgQ0ZO
X0VYUE9SVCBleHRlcm4KIyAyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5l
dHdvcmsuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5l
dHdvcmtFcnJvcnMuaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMv
Q0ZOZXR3b3JrRXJyb3JzLmgiIDMKI2RlZmluZSBfX0NGTkVUV09SS0VSUk9SU19fIAoKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldHdvcmtEZWZzLmgiIDEgMwojIDE5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0d29ya0Vycm9ycy5oIiAyIDMK
IyAzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldHdvcmtFcnJvcnMuaCIg
MwpleHRlcm4gIkMiIHsKIyA1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5l
dHdvcmtFcnJvcnMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGRXJyb3JEb21haW5D
Rk5ldHdvcmsgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNjcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrRXJyb3JzLmgiIDMKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDRkVycm9yRG9tYWluV2luU29jayBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVh
ZGVycy9DRk5ldHdvcmtFcnJvcnMuaCIgMwplbnVtIENGTmV0d29ya0Vycm9ycyB7CiAga0NGSG9z
dEVycm9ySG9zdE5vdEZvdW5kID0gMSwKICBrQ0ZIb3N0RXJyb3JVbmtub3duID0gMiwKCiAga0NG
U09DS1NFcnJvclVua25vd25DbGllbnRWZXJzaW9uID0gMTAwLAogIGtDRlNPQ0tTRXJyb3JVbnN1
cHBvcnRlZFNlcnZlclZlcnNpb24gPSAxMDEsCgogIGtDRlNPQ0tTNEVycm9yUmVxdWVzdEZhaWxl
ZCA9IDExMCwKICBrQ0ZTT0NLUzRFcnJvcklkZW50ZEZhaWxlZCA9IDExMSwKICBrQ0ZTT0NLUzRF
cnJvcklkQ29uZmxpY3QgPSAxMTIsCiAga0NGU09DS1M0RXJyb3JVbmtub3duU3RhdHVzQ29kZSA9
IDExMywKCiAga0NGU09DS1M1RXJyb3JCYWRTdGF0ZSA9IDEyMCwKICBrQ0ZTT0NLUzVFcnJvckJh
ZFJlc3BvbnNlQWRkciA9IDEyMSwKICBrQ0ZTT0NLUzVFcnJvckJhZENyZWRlbnRpYWxzID0gMTIy
LAogIGtDRlNPQ0tTNUVycm9yVW5zdXBwb3J0ZWROZWdvdGlhdGlvbk1ldGhvZCA9IDEyMywKICBr
Q0ZTT0NLUzVFcnJvck5vQWNjZXB0YWJsZU1ldGhvZCA9IDEyNCwKCiAga0NGRlRQRXJyb3JVbmV4
cGVjdGVkU3RhdHVzQ29kZSA9IDIwMCwKCiAga0NGRXJyb3JIVFRQQXV0aGVudGljYXRpb25UeXBl
VW5zdXBwb3J0ZWQgPSAzMDAsCiAga0NGRXJyb3JIVFRQQmFkQ3JlZGVudGlhbHMgPSAzMDEsCiAg
a0NGRXJyb3JIVFRQQ29ubmVjdGlvbkxvc3QgPSAzMDIsCiAga0NGRXJyb3JIVFRQUGFyc2VGYWls
dXJlID0gMzAzLAogIGtDRkVycm9ySFRUUFJlZGlyZWN0aW9uTG9vcERldGVjdGVkID0gMzA0LAog
IGtDRkVycm9ySFRUUEJhZFVSTCA9IDMwNSwKICBrQ0ZFcnJvckhUVFBQcm94eUNvbm5lY3Rpb25G
YWlsdXJlID0gMzA2LAogIGtDRkVycm9ySFRUUEJhZFByb3h5Q3JlZGVudGlhbHMgPSAzMDcsCiAg
a0NGRXJyb3JQQUNGaWxlRXJyb3IgPSAzMDgsCiAga0NGRXJyb3JQQUNGaWxlQXV0aCA9IDMwOSwK
ICBrQ0ZFcnJvckhUVFBTUHJveHlDb25uZWN0aW9uRmFpbHVyZSA9IDMxMCwKCgogIGtDRlVSTEVy
cm9yVW5rbm93biA9IC05OTgsCiAga0NGVVJMRXJyb3JDYW5jZWxsZWQgPSAtOTk5LAogIGtDRlVS
TEVycm9yQmFkVVJMID0gLTEwMDAsCiAga0NGVVJMRXJyb3JUaW1lZE91dCA9IC0xMDAxLAogIGtD
RlVSTEVycm9yVW5zdXBwb3J0ZWRVUkwgPSAtMTAwMiwKICBrQ0ZVUkxFcnJvckNhbm5vdEZpbmRI
b3N0ID0gLTEwMDMsCiAga0NGVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0ID0gLTEwMDQsCiAg
a0NGVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QgPSAtMTAwNSwKICBrQ0ZVUkxFcnJvckRO
U0xvb2t1cEZhaWxlZCA9IC0xMDA2LAogIGtDRlVSTEVycm9ySFRUUFRvb01hbnlSZWRpcmVjdHMg
PSAtMTAwNywKICBrQ0ZVUkxFcnJvclJlc291cmNlVW5hdmFpbGFibGUgPSAtMTAwOCwKICBrQ0ZV
UkxFcnJvck5vdENvbm5lY3RlZFRvSW50ZXJuZXQgPSAtMTAwOSwKICBrQ0ZVUkxFcnJvclJlZGly
ZWN0VG9Ob25FeGlzdGVudExvY2F0aW9uID0gLTEwMTAsCiAga0NGVVJMRXJyb3JCYWRTZXJ2ZXJS
ZXNwb25zZSA9IC0xMDExLAogIGtDRlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9u
ID0gLTEwMTIsCiAga0NGVVJMRXJyb3JVc2VyQXV0aGVudGljYXRpb25SZXF1aXJlZCA9IC0xMDEz
LAogIGtDRlVSTEVycm9yWmVyb0J5dGVSZXNvdXJjZSA9IC0xMDE0LAogIGtDRlVSTEVycm9yQ2Fu
bm90RGVjb2RlUmF3RGF0YSA9IC0xMDE1LAogIGtDRlVSTEVycm9yQ2Fubm90RGVjb2RlQ29udGVu
dERhdGEgPSAtMTAxNiwKICBrQ0ZVUkxFcnJvckNhbm5vdFBhcnNlUmVzcG9uc2UgPSAtMTAxNywK
ICBrQ0ZVUkxFcnJvckludGVybmF0aW9uYWxSb2FtaW5nT2ZmID0gLTEwMTgsCiAga0NGVVJMRXJy
b3JDYWxsSXNBY3RpdmUgPSAtMTAxOSwKICBrQ0ZVUkxFcnJvckRhdGFOb3RBbGxvd2VkID0gLTEw
MjAsCiAga0NGVVJMRXJyb3JSZXF1ZXN0Qm9keVN0cmVhbUV4aGF1c3RlZCA9IC0xMDIxLAogIGtD
RlVSTEVycm9yRmlsZURvZXNOb3RFeGlzdCA9IC0xMTAwLAogIGtDRlVSTEVycm9yRmlsZUlzRGly
ZWN0b3J5ID0gLTExMDEsCiAga0NGVVJMRXJyb3JOb1Blcm1pc3Npb25zVG9SZWFkRmlsZSA9IC0x
MTAyLAogIGtDRlVSTEVycm9yRGF0YUxlbmd0aEV4Y2VlZHNNYXhpbXVtID0gLTExMDMsCgogIGtD
RlVSTEVycm9yU2VjdXJlQ29ubmVjdGlvbkZhaWxlZCA9IC0xMjAwLAogIGtDRlVSTEVycm9yU2Vy
dmVyQ2VydGlmaWNhdGVIYXNCYWREYXRlID0gLTEyMDEsCiAga0NGVVJMRXJyb3JTZXJ2ZXJDZXJ0
aWZpY2F0ZVVudHJ1c3RlZCA9IC0xMjAyLAogIGtDRlVSTEVycm9yU2VydmVyQ2VydGlmaWNhdGVI
YXNVbmtub3duUm9vdCA9IC0xMjAzLAogIGtDRlVSTEVycm9yU2VydmVyQ2VydGlmaWNhdGVOb3RZ
ZXRWYWxpZCA9IC0xMjA0LAogIGtDRlVSTEVycm9yQ2xpZW50Q2VydGlmaWNhdGVSZWplY3RlZCA9
IC0xMjA1LAogIGtDRlVSTEVycm9yQ2xpZW50Q2VydGlmaWNhdGVSZXF1aXJlZCA9IC0xMjA2LAog
IGtDRlVSTEVycm9yQ2Fubm90TG9hZEZyb21OZXR3b3JrID0gLTIwMDAsCgogIGtDRlVSTEVycm9y
Q2Fubm90Q3JlYXRlRmlsZSA9IC0zMDAwLAogIGtDRlVSTEVycm9yQ2Fubm90T3BlbkZpbGUgPSAt
MzAwMSwKICBrQ0ZVUkxFcnJvckNhbm5vdENsb3NlRmlsZSA9IC0zMDAyLAogIGtDRlVSTEVycm9y
Q2Fubm90V3JpdGVUb0ZpbGUgPSAtMzAwMywKICBrQ0ZVUkxFcnJvckNhbm5vdFJlbW92ZUZpbGUg
PSAtMzAwNCwKICBrQ0ZVUkxFcnJvckNhbm5vdE1vdmVGaWxlID0gLTMwMDUsCiAga0NGVVJMRXJy
b3JEb3dubG9hZERlY29kaW5nRmFpbGVkTWlkU3RyZWFtID0gLTMwMDYsCiAga0NGVVJMRXJyb3JE
b3dubG9hZERlY29kaW5nRmFpbGVkVG9Db21wbGV0ZSA9IC0zMDA3LAoKCiAga0NGSFRUUENvb2tp
ZUNhbm5vdFBhcnNlQ29va2llRmlsZSA9IC00MDAwLAoKCiAga0NGTmV0U2VydmljZUVycm9yVW5r
bm93biA9IC03MjAwMEwsCiAga0NGTmV0U2VydmljZUVycm9yQ29sbGlzaW9uID0gLTcyMDAxTCwK
ICBrQ0ZOZXRTZXJ2aWNlRXJyb3JOb3RGb3VuZCA9IC03MjAwMkwsCiAga0NGTmV0U2VydmljZUVy
cm9ySW5Qcm9ncmVzcyA9IC03MjAwM0wsCiAga0NGTmV0U2VydmljZUVycm9yQmFkQXJndW1lbnQg
PSAtNzIwMDRMLAogIGtDRk5ldFNlcnZpY2VFcnJvckNhbmNlbCA9IC03MjAwNUwsCiAga0NGTmV0
U2VydmljZUVycm9ySW52YWxpZCA9IC03MjAwNkwsCiAga0NGTmV0U2VydmljZUVycm9yVGltZW91
dCA9IC03MjAwN0wsCiAga0NGTmV0U2VydmljZUVycm9yRE5TU2VydmljZUZhaWx1cmUgPSAtNzMw
MDBMCn07CnR5cGVkZWYgZW51bSBDRk5ldHdvcmtFcnJvcnMgQ0ZOZXR3b3JrRXJyb3JzOwojIDE4
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldHdvcmtFcnJvcnMuaCIgMwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMRXJyb3JGYWlsaW5nVVJMRXJyb3JLZXkgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjAyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3Jr
LmZyYW1ld29yay9IZWFkZXJzL0NGTmV0d29ya0Vycm9ycy5oIiAzCmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleSBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0ZOZXR3b3JrRXJyb3JzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtD
RkdldEFkZHJJbmZvRmFpbHVyZUtleSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKIyAyMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrRXJy
b3JzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlNPQ0tTU3RhdHVzQ29kZUtleSBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyNDYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdv
cmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrRXJyb3JzLmgiIDMKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtDRlNPQ0tTVmVyc2lvbktleSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKIyAyNjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3
b3JrRXJyb3JzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlNPQ0tTTmVnb3RpYXRp
b25NZXRob2RLZXkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjc2
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0d29ya0Vycm9ycy5oIiAzCmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZETlNTZXJ2aWNlRmFpbHVyZUtleSBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyOTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3
b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrRXJyb3JzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDRkZUUFN0YXR1c0NvZGVLZXkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCgoKCgp9CiMgMjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3
b3JrLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTb2Nr
ZXRTdHJlYW0uaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZT
b2NrZXRTdHJlYW0uaCIgMwojZGVmaW5lIF9fQ0ZTT0NLRVRTVFJFQU1fXyAKCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
Rk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrRGVmcy5oIiAxIDMKIyAxOSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlNvY2tldFN0cmVhbS5oIiAyIDMKCgoKCgoK
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhvc3QuaCIgMSAzCiMgMTUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIb3N0LmgiIDMKI2RlZmluZSBfX0NG
SE9TVF9fIAoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldHdvcmtE
ZWZzLmgiIDEgMwojIDE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSG9zdC5o
IiAyIDMKIyAzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhvc3QuaCIgMwpl
eHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA1NCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5m
cmFtZXdvcmsvSGVhZGVycy9DRkhvc3QuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX0NGSG9zdCogQ0ZI
b3N0UmVmOwojIDY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSG9zdC5oIiAz
CmV4dGVybiBjb25zdCBTSW50MzIga0NGU3RyZWFtRXJyb3JEb21haW5OZXREQiBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA4MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdv
cmsvSGVhZGVycy9DRkhvc3QuaCIgMwpleHRlcm4gY29uc3QgU0ludDMyIGtDRlN0cmVhbUVycm9y
RG9tYWluU3lzdGVtQ29uZmlndXJhdGlvbiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKIyA5MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhvc3QuaCIg
MwplbnVtIENGSG9zdEluZm9UeXBlIHsKCgoKCgogIGtDRkhvc3RBZGRyZXNzZXMgPSAwLAoKCgoK
ICBrQ0ZIb3N0TmFtZXMgPSAxLAoKCgoKCiAga0NGSG9zdFJlYWNoYWJpbGl0eSA9IDIKfTsKdHlw
ZWRlZiBlbnVtIENGSG9zdEluZm9UeXBlIENGSG9zdEluZm9UeXBlOwojIDEyMCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0
d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhvc3QuaCIgMwpzdHJ1Y3QgQ0ZIb3N0Q2xpZW50Q29u
dGV4dCB7CgoKCgoKCiAgQ0ZJbmRleCB2ZXJzaW9uOwoKCgoKCiAgdm9pZCAqIGluZm87CiMgMTQy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSG9zdC5oIiAzCiAgQ0ZBbGxvY2F0
b3JSZXRhaW5DYWxsQmFjayByZXRhaW47CgoKCgoKICBDRkFsbG9jYXRvclJlbGVhc2VDYWxsQmFj
ayByZWxlYXNlOwoKCgoKCgoKICBDRkFsbG9jYXRvckNvcHlEZXNjcmlwdGlvbkNhbGxCYWNrIGNv
cHlEZXNjcmlwdGlvbjsKfTsKdHlwZWRlZiBzdHJ1Y3QgQ0ZIb3N0Q2xpZW50Q29udGV4dCBDRkhv
c3RDbGllbnRDb250ZXh0OwojIDE4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9D
Rkhvc3QuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIENGSG9zdENsaWVudENhbGxCYWNrKShDRkhvc3RS
ZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3Ig
KmVycm9yLCB2b2lkICppbmZvKTsKIyAxOTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZIb3N0LmgiIDMKZXh0ZXJuIENGVHlwZUlECkNGSG9zdEdldFR5cGVJRCh2b2lkKSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyMzMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIb3N0LmgiIDMKZXh0ZXJuIENGSG9zdFJlZgpDRkhvc3RDcmVh
dGVXaXRoTmFtZSgKICBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsCiAgQ0ZTdHJpbmdSZWYgaG9z
dG5hbWUpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDI2OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhvc3QuaCIgMwpleHRlcm4gQ0ZIb3N0UmVm
CkNGSG9zdENyZWF0ZVdpdGhBZGRyZXNzKAogIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwKICBD
RkRhdGFSZWYgYWRkcikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMg
MzA2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSG9zdC5oIiAzCmV4dGVybiBD
Rkhvc3RSZWYKQ0ZIb3N0Q3JlYXRlQ29weSgKICBDRkFsbG9jYXRvclJlZiBhbGxvYywKICBDRkhv
c3RSZWYgaG9zdCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMzUw
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSG9zdC5oIiAzCmV4dGVybiBCb29s
ZWFuCkNGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24oCiAgQ0ZIb3N0UmVmIHRoZUhvc3QsCiAgQ0ZI
b3N0SW5mb1R5cGUgaW5mbywKICBDRlN0cmVhbUVycm9yICogZXJyb3IpIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDM5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsv
SGVhZGVycy9DRkhvc3QuaCIgMwpleHRlcm4gQ0ZBcnJheVJlZgpDRkhvc3RHZXRBZGRyZXNzaW5n
KAogIENGSG9zdFJlZiB0aGVIb3N0LAogIEJvb2xlYW4gKiBoYXNCZWVuUmVzb2x2ZWQpIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDQyOCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5m
cmFtZXdvcmsvSGVhZGVycy9DRkhvc3QuaCIgMwpleHRlcm4gQ0ZBcnJheVJlZgpDRkhvc3RHZXRO
YW1lcygKICBDRkhvc3RSZWYgdGhlSG9zdCwKICBCb29sZWFuICogaGFzQmVlblJlc29sdmVkKSBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA0NzAgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdv
cmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIb3N0LmgiIDMKZXh0ZXJuIENGRGF0YVJlZgpDRkhvc3RH
ZXRSZWFjaGFiaWxpdHkoCiAgQ0ZIb3N0UmVmIHRoZUhvc3QsCiAgQm9vbGVhbiAqIGhhc0JlZW5S
ZXNvbHZlZCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNTAxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSG9zdC5oIiAzCmV4dGVybiB2b2lkCkNG
SG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKAogIENGSG9zdFJlZiB0aGVIb3N0LAogIENGSG9zdElu
Zm9UeXBlIGluZm8pIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDU0
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhvc3QuaCIgMwpleHRlcm4gQm9v
bGVhbgpDRkhvc3RTZXRDbGllbnQoCiAgQ0ZIb3N0UmVmIHRoZUhvc3QsCiAgQ0ZIb3N0Q2xpZW50
Q2FsbEJhY2sgY2xpZW50Q0IsCiAgQ0ZIb3N0Q2xpZW50Q29udGV4dCAqIGNsaWVudENvbnRleHQp
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDU4NCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0
d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhvc3QuaCIgMwpleHRlcm4gdm9pZApDRkhvc3RTY2hl
ZHVsZVdpdGhSdW5Mb29wKAogIENGSG9zdFJlZiB0aGVIb3N0LAogIENGUnVuTG9vcFJlZiBydW5M
b29wLAogIENGU3RyaW5nUmVmIHJ1bkxvb3BNb2RlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKIyA2MjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZI
b3N0LmgiIDMKZXh0ZXJuIHZvaWQKQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKAogIENGSG9z
dFJlZiB0aGVIb3N0LAogIENGUnVuTG9vcFJlZiBydW5Mb29wLAogIENGU3RyaW5nUmVmIHJ1bkxv
b3BNb2RlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCiNw
cmFnbWEgcGFjayhwb3ApCgoKfQojIDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJz
L0NGU29ja2V0U3RyZWFtLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hl
YWRlcnMvQ0ZOZXRTZXJ2aWNlcy5oIiAxIDMKIyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsv
SGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKI2RlZmluZSBfX0NGTkVUU0VSVklDRVNfXyAKCgoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrRGVmcy5oIiAxIDMK
IyAxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDIg
MwojIDM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0U2VydmljZXMuaCIg
MwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA1NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29y
ay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX19D
Rk5ldFNlcnZpY2UqIENGTmV0U2VydmljZVJlZjsKIyA2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdv
cmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX19DRk5ldFNlcnZp
Y2VNb25pdG9yKiBDRk5ldFNlcnZpY2VNb25pdG9yUmVmOwojIDc0ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZy
YW1ld29yay9IZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX0NGTmV0
U2VydmljZUJyb3dzZXIqIENGTmV0U2VydmljZUJyb3dzZXJSZWY7CiMgODcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdv
cmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXRTZXJ2aWNlcy5oIiAzCmV4dGVybiBjb25zdCBTSW50
MzIga0NGU3RyZWFtRXJyb3JEb21haW5NYWNoIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwojIDEwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNl
cnZpY2VzLmgiIDMKZXh0ZXJuIGNvbnN0IFNJbnQzMiBrQ0ZTdHJlYW1FcnJvckRvbWFpbk5ldFNl
cnZpY2VzIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDExNCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZW51bSBDRk5l
dFNlcnZpY2VzRXJyb3IgewoKCgoKICBrQ0ZOZXRTZXJ2aWNlc0Vycm9yVW5rbm93biA9IC03MjAw
MEwsCgoKCgoKCiAga0NGTmV0U2VydmljZXNFcnJvckNvbGxpc2lvbiA9IC03MjAwMUwsCgoKCgog
IGtDRk5ldFNlcnZpY2VzRXJyb3JOb3RGb3VuZCA9IC03MjAwMkwsCgoKCgoKICBrQ0ZOZXRTZXJ2
aWNlc0Vycm9ySW5Qcm9ncmVzcyA9IC03MjAwM0wsCgoKCgogIGtDRk5ldFNlcnZpY2VzRXJyb3JC
YWRBcmd1bWVudCA9IC03MjAwNEwsCgoKCgogIGtDRk5ldFNlcnZpY2VzRXJyb3JDYW5jZWwgPSAt
NzIwMDVMLAoKCgoKCiAga0NGTmV0U2VydmljZXNFcnJvckludmFsaWQgPSAtNzIwMDZMLAoKCgoK
CiAga0NGTmV0U2VydmljZXNFcnJvclRpbWVvdXQgPSAtNzIwMDdMCn07CnR5cGVkZWYgZW51bSBD
Rk5ldFNlcnZpY2VzRXJyb3IgQ0ZOZXRTZXJ2aWNlc0Vycm9yOwojIDE3MiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29y
ay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZW51bSBDRk5ldFNlcnZpY2VN
b25pdG9yVHlwZSB7CgoKCgogIGtDRk5ldFNlcnZpY2VNb25pdG9yVFhUID0gMQp9Owp0eXBlZGVm
IGVudW0gQ0ZOZXRTZXJ2aWNlTW9uaXRvclR5cGUgQ0ZOZXRTZXJ2aWNlTW9uaXRvclR5cGU7CiMg
MTg4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwpl
bnVtIHsKICBrQ0ZOZXRTZXJ2aWNlRmxhZ05vQXV0b1JlbmFtZSA9IDEKfTsKIyAxOTkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
Rk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXRTZXJ2aWNlcy5oIiAzCmVudW0gewogIGtD
Rk5ldFNlcnZpY2VGbGFnTW9yZUNvbWluZyA9IDEsCiAga0NGTmV0U2VydmljZUZsYWdJc0RvbWFp
biA9IDIsCiAga0NGTmV0U2VydmljZUZsYWdJc0RlZmF1bHQgPSA0LAogIGtDRk5ldFNlcnZpY2VG
bGFnSXNSZWdpc3RyYXRpb25Eb21haW4gPSA0LAogIGtDRk5ldFNlcnZpY2VGbGFnUmVtb3ZlID0g
OAp9OwojIDIxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2Vz
LmgiIDMKc3RydWN0IENGTmV0U2VydmljZUNsaWVudENvbnRleHQgewoKCgoKCgogIENGSW5kZXgg
dmVyc2lvbjsKCgoKCgogIHZvaWQgKiBpbmZvOwojIDIzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdv
cmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKICBDRkFsbG9jYXRvclJldGFpbkNhbGxCYWNr
IHJldGFpbjsKCgoKCgogIENGQWxsb2NhdG9yUmVsZWFzZUNhbGxCYWNrIHJlbGVhc2U7CgoKCgoK
CgogIENGQWxsb2NhdG9yQ29weURlc2NyaXB0aW9uQ2FsbEJhY2sgY29weURlc2NyaXB0aW9uOwp9
Owp0eXBlZGVmIHN0cnVjdCBDRk5ldFNlcnZpY2VDbGllbnRDb250ZXh0IENGTmV0U2VydmljZUNs
aWVudENvbnRleHQ7CiMgMjc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0
U2VydmljZXMuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIENGTmV0U2VydmljZUNsaWVudENhbGxCYWNr
KShDRk5ldFNlcnZpY2VSZWYgdGhlU2VydmljZSwgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQg
KmluZm8pOwojIDMwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZp
Y2VzLmgiIDMKdHlwZWRlZiB2b2lkICggKiBDRk5ldFNlcnZpY2VNb25pdG9yQ2xpZW50Q2FsbEJh
Y2spKENGTmV0U2VydmljZU1vbml0b3JSZWYgdGhlTW9uaXRvciwgQ0ZOZXRTZXJ2aWNlUmVmIHRo
ZVNlcnZpY2UsIENGTmV0U2VydmljZU1vbml0b3JUeXBlIHR5cGVJbmZvLCBDRkRhdGFSZWYgcmRh
dGEsIENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKTsKIyAzMzcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdv
cmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXRTZXJ2aWNlcy5oIiAzCnR5cGVkZWYgdm9pZCAoICog
Q0ZOZXRTZXJ2aWNlQnJvd3NlckNsaWVudENhbGxCYWNrKShDRk5ldFNlcnZpY2VCcm93c2VyUmVm
IGJyb3dzZXIsIENGT3B0aW9uRmxhZ3MgZmxhZ3MsIENGVHlwZVJlZiBkb21haW5PclNlcnZpY2Us
IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKTsKIyAzNTIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXRTZXJ2aWNlcy5oIiAzCmV4dGVybiBDRlR5cGVJRApDRk5l
dFNlcnZpY2VHZXRUeXBlSUQodm9pZCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CiMgMzcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0U2Vydmlj
ZXMuaCIgMwpleHRlcm4gQ0ZUeXBlSUQKQ0ZOZXRTZXJ2aWNlTW9uaXRvckdldFR5cGVJRCh2b2lk
KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAzODggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5l
dHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXRTZXJ2aWNlcy5oIiAzCmV4dGVybiBDRlR5cGVJ
RApDRk5ldFNlcnZpY2VCcm93c2VyR2V0VHlwZUlEKHZvaWQpIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwojIDQ0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVy
cy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJuIENGTmV0U2VydmljZVJlZgpDRk5ldFNlcnZpY2VD
cmVhdGUoCiAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsCiAgQ0ZTdHJpbmdSZWYgZG9tYWluLAogIENG
U3RyaW5nUmVmIHNlcnZpY2VUeXBlLAogIENGU3RyaW5nUmVmIG5hbWUsCiAgU0ludDMyIHBvcnQp
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDQ4MyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0
d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJuIENGTmV0U2Vy
dmljZVJlZgpDRk5ldFNlcnZpY2VDcmVhdGVDb3B5KAogIENGQWxsb2NhdG9yUmVmIGFsbG9jLAog
IENGTmV0U2VydmljZVJlZiBzZXJ2aWNlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKIyA1MTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXRTZXJ2
aWNlcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZgpDRk5ldFNlcnZpY2VHZXREb21haW4oQ0ZOZXRT
ZXJ2aWNlUmVmIHRoZVNlcnZpY2UpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwojIDU0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2Vz
LmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmCkNGTmV0U2VydmljZUdldFR5cGUoQ0ZOZXRTZXJ2aWNl
UmVmIHRoZVNlcnZpY2UpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoj
IDU3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMK
ZXh0ZXJuIENGU3RyaW5nUmVmCkNGTmV0U2VydmljZUdldE5hbWUoQ0ZOZXRTZXJ2aWNlUmVmIHRo
ZVNlcnZpY2UpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDYyNSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJu
IEJvb2xlYW4KQ0ZOZXRTZXJ2aWNlUmVnaXN0ZXJXaXRoT3B0aW9ucygKICBDRk5ldFNlcnZpY2VS
ZWYgdGhlU2VydmljZSwKICBDRk9wdGlvbkZsYWdzIG9wdGlvbnMsCiAgQ0ZTdHJlYW1FcnJvciAq
IGVycm9yKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA2NzQgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXRTZXJ2aWNlcy5oIiAzCmV4dGVybiBC
b29sZWFuCkNGTmV0U2VydmljZVJlc29sdmVXaXRoVGltZW91dCgKICBDRk5ldFNlcnZpY2VSZWYg
dGhlU2VydmljZSwKICBDRlRpbWVJbnRlcnZhbCB0aW1lb3V0LAogIENGU3RyZWFtRXJyb3IgKiBl
cnJvcikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNzAxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwpleHRlcm4gdm9p
ZApDRk5ldFNlcnZpY2VDYW5jZWwoQ0ZOZXRTZXJ2aWNlUmVmIHRoZVNlcnZpY2UpIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDczNCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFt
ZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmCkNGTmV0
U2VydmljZUdldFRhcmdldEhvc3QoQ0ZOZXRTZXJ2aWNlUmVmIHRoZVNlcnZpY2UpIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDc2NCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFt
ZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJuIFNJbnQzMgpDRk5ldFNlcnZp
Y2VHZXRQb3J0TnVtYmVyKENGTmV0U2VydmljZVJlZiB0aGVTZXJ2aWNlKSBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA3OTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0ZOZXRTZXJ2aWNlcy5oIiAzCmV4dGVybiBDRkFycmF5UmVmCkNGTmV0U2Vydmlj
ZUdldEFkZHJlc3NpbmcoQ0ZOZXRTZXJ2aWNlUmVmIHRoZVNlcnZpY2UpIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDgzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsv
SGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJuIENGRGF0YVJlZgpDRk5ldFNlcnZpY2VH
ZXRUWFREYXRhKENGTmV0U2VydmljZVJlZiB0aGVTZXJ2aWNlKSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKIyA4NjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZOZXRTZXJ2aWNlcy5oIiAzCmV4dGVybiBCb29sZWFuCkNGTmV0U2VydmljZVNldFRYVERh
dGEoCiAgQ0ZOZXRTZXJ2aWNlUmVmIHRoZVNlcnZpY2UsCiAgQ0ZEYXRhUmVmIHR4dFJlY29yZCkg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgOTAyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3
b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwpleHRlcm4gQ0ZEaWN0aW9u
YXJ5UmVmCkNGTmV0U2VydmljZUNyZWF0ZURpY3Rpb25hcnlXaXRoVFhURGF0YSgKICBDRkFsbG9j
YXRvclJlZiBhbGxvYywKICBDRkRhdGFSZWYgdHh0UmVjb3JkKSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKIyA5NDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZOZXRTZXJ2aWNlcy5oIiAzCmV4dGVybiBDRkRhdGFSZWYKQ0ZOZXRTZXJ2aWNlQ3JlYXRl
VFhURGF0YVdpdGhEaWN0aW9uYXJ5KAogIENGQWxsb2NhdG9yUmVmIGFsbG9jLAogIENGRGljdGlv
bmFyeVJlZiBrZXlWYWx1ZVBhaXJzKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKIyA5OTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXRTZXJ2aWNl
cy5oIiAzCmV4dGVybiBCb29sZWFuCkNGTmV0U2VydmljZVNldENsaWVudCgKICBDRk5ldFNlcnZp
Y2VSZWYgdGhlU2VydmljZSwKICBDRk5ldFNlcnZpY2VDbGllbnRDYWxsQmFjayBjbGllbnRDQiwK
ICBDRk5ldFNlcnZpY2VDbGllbnRDb250ZXh0ICogY2xpZW50Q29udGV4dCkgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTAzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdv
cmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJuIHZvaWQKQ0ZOZXRTZXJ2aWNlU2No
ZWR1bGVXaXRoUnVuTG9vcCgKICBDRk5ldFNlcnZpY2VSZWYgdGhlU2VydmljZSwKICBDRlJ1bkxv
b3BSZWYgcnVuTG9vcCwKICBDRlN0cmluZ1JlZiBydW5Mb29wTW9kZSkgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTA3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsv
SGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJuIHZvaWQKQ0ZOZXRTZXJ2aWNlVW5zY2hl
ZHVsZUZyb21SdW5Mb29wKAogIENGTmV0U2VydmljZVJlZiB0aGVTZXJ2aWNlLAogIENGUnVuTG9v
cFJlZiBydW5Mb29wLAogIENGU3RyaW5nUmVmIHJ1bkxvb3BNb2RlKSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMTE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9I
ZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwpleHRlcm4gQ0ZOZXRTZXJ2aWNlTW9uaXRvclJlZgpD
Rk5ldFNlcnZpY2VNb25pdG9yQ3JlYXRlKAogIENGQWxsb2NhdG9yUmVmIGFsbG9jLAogIENGTmV0
U2VydmljZVJlZiB0aGVTZXJ2aWNlLAogIENGTmV0U2VydmljZU1vbml0b3JDbGllbnRDYWxsQmFj
ayBjbGllbnRDQiwKICBDRk5ldFNlcnZpY2VDbGllbnRDb250ZXh0ICogY2xpZW50Q29udGV4dCkg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTE0NSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0
d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJuIHZvaWQKQ0ZO
ZXRTZXJ2aWNlTW9uaXRvckludmFsaWRhdGUoQ0ZOZXRTZXJ2aWNlTW9uaXRvclJlZiBtb25pdG9y
KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMTg4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZO
ZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwpleHRlcm4gQm9vbGVh
bgpDRk5ldFNlcnZpY2VNb25pdG9yU3RhcnQoCiAgQ0ZOZXRTZXJ2aWNlTW9uaXRvclJlZiBtb25p
dG9yLAogIENGTmV0U2VydmljZU1vbml0b3JUeXBlIHJlY29yZFR5cGUsCiAgQ0ZTdHJlYW1FcnJv
ciAqIGVycm9yKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMjIz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwpleHRl
cm4gdm9pZApDRk5ldFNlcnZpY2VNb25pdG9yU3RvcCgKICBDRk5ldFNlcnZpY2VNb25pdG9yUmVm
IG1vbml0b3IsCiAgQ0ZTdHJlYW1FcnJvciAqIGVycm9yKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKIyAxMjYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJz
L0NGTmV0U2VydmljZXMuaCIgMwpleHRlcm4gdm9pZApDRk5ldFNlcnZpY2VNb25pdG9yU2NoZWR1
bGVXaXRoUnVuTG9vcCgKICBDRk5ldFNlcnZpY2VNb25pdG9yUmVmIG1vbml0b3IsCiAgQ0ZSdW5M
b29wUmVmIHJ1bkxvb3AsCiAgQ0ZTdHJpbmdSZWYgcnVuTG9vcE1vZGUpIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDEyOTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0ZOZXRTZXJ2aWNlcy5oIiAzCmV4dGVybiB2b2lkCkNGTmV0U2VydmljZU1vbml0
b3JVbnNjaGVkdWxlRnJvbVJ1bkxvb3AoCiAgQ0ZOZXRTZXJ2aWNlTW9uaXRvclJlZiBtb25pdG9y
LAogIENGUnVuTG9vcFJlZiBydW5Mb29wLAogIENGU3RyaW5nUmVmIHJ1bkxvb3BNb2RlKSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMzM2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3Jr
LmZyYW1ld29yay9IZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwpleHRlcm4gQ0ZOZXRTZXJ2aWNl
QnJvd3NlclJlZgpDRk5ldFNlcnZpY2VCcm93c2VyQ3JlYXRlKAogIENGQWxsb2NhdG9yUmVmIGFs
bG9jLAogIENGTmV0U2VydmljZUJyb3dzZXJDbGllbnRDYWxsQmFjayBjbGllbnRDQiwKICBDRk5l
dFNlcnZpY2VDbGllbnRDb250ZXh0ICogY2xpZW50Q29udGV4dCkgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTM2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVh
ZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJuIHZvaWQKQ0ZOZXRTZXJ2aWNlQnJvd3Nlcklu
dmFsaWRhdGUoQ0ZOZXRTZXJ2aWNlQnJvd3NlclJlZiBicm93c2VyKSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxNDA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9I
ZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwpleHRlcm4gQm9vbGVhbgpDRk5ldFNlcnZpY2VCcm93
c2VyU2VhcmNoRm9yRG9tYWlucygKICBDRk5ldFNlcnZpY2VCcm93c2VyUmVmIGJyb3dzZXIsCiAg
Qm9vbGVhbiByZWdpc3RyYXRpb25Eb21haW5zLAogIENGU3RyZWFtRXJyb3IgKiBlcnJvcikgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTQ1NyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29y
ay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJuIEJvb2xlYW4KQ0ZO
ZXRTZXJ2aWNlQnJvd3NlclNlYXJjaEZvclNlcnZpY2VzKAogIENGTmV0U2VydmljZUJyb3dzZXJS
ZWYgYnJvd3NlciwKICBDRlN0cmluZ1JlZiBkb21haW4sCiAgQ0ZTdHJpbmdSZWYgc2VydmljZVR5
cGUsCiAgQ0ZTdHJlYW1FcnJvciAqIGVycm9yKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKIyAxNDk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0
U2VydmljZXMuaCIgMwpleHRlcm4gdm9pZApDRk5ldFNlcnZpY2VCcm93c2VyU3RvcFNlYXJjaCgK
ICBDRk5ldFNlcnZpY2VCcm93c2VyUmVmIGJyb3dzZXIsCiAgQ0ZTdHJlYW1FcnJvciAqIGVycm9y
KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxNTMyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZO
ZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwpleHRlcm4gdm9pZApD
Rk5ldFNlcnZpY2VCcm93c2VyU2NoZWR1bGVXaXRoUnVuTG9vcCgKICBDRk5ldFNlcnZpY2VCcm93
c2VyUmVmIGJyb3dzZXIsCiAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AsCiAgQ0ZTdHJpbmdSZWYgcnVu
TG9vcE1vZGUpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDE1Njcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXRTZXJ2aWNlcy5oIiAzCmV4dGVy
biB2b2lkCkNGTmV0U2VydmljZUJyb3dzZXJVbnNjaGVkdWxlRnJvbVJ1bkxvb3AoCiAgQ0ZOZXRT
ZXJ2aWNlQnJvd3NlclJlZiBicm93c2VyLAogIENGUnVuTG9vcFJlZiBydW5Mb29wLAogIENGU3Ry
aW5nUmVmIHJ1bkxvb3BNb2RlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKIyAxNjE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0U2VydmljZXMu
aCIgMwpleHRlcm4gQm9vbGVhbgpDRk5ldFNlcnZpY2VSZWdpc3RlcigKICBDRk5ldFNlcnZpY2VS
ZWYgdGhlU2VydmljZSwKICBDRlN0cmVhbUVycm9yICogZXJyb3IpIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTY3MCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5m
cmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZpY2VzLmgiIDMKZXh0ZXJuIEJvb2xlYW4KQ0ZOZXRT
ZXJ2aWNlUmVzb2x2ZSgKICBDRk5ldFNlcnZpY2VSZWYgdGhlU2VydmljZSwKICBDRlN0cmVhbUVy
cm9yICogZXJyb3IpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQsdmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CiMgMTcxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldFNlcnZp
Y2VzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmCkNGTmV0U2VydmljZUdldFByb3RvY29sU3BlY2lm
aWNJbmZvcm1hdGlvbihDRk5ldFNlcnZpY2VSZWYgdGhlU2VydmljZSkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCx2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxNzQ2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3Jr
LmZyYW1ld29yay9IZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwpleHRlcm4gdm9pZApDRk5ldFNl
cnZpY2VTZXRQcm90b2NvbFNwZWNpZmljSW5mb3JtYXRpb24oCiAgQ0ZOZXRTZXJ2aWNlUmVmIHRo
ZVNlcnZpY2UsCiAgQ0ZTdHJpbmdSZWYgdGhlSW5mbykgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCx2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxNzU5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29y
ay9IZWFkZXJzL0NGTmV0U2VydmljZXMuaCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAzMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlNvY2tldFN0cmVhbS5oIiAyIDMKIyA0
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlNvY2tldFN0cmVhbS5oIiAzCmV4
dGVybiAiQyIgewojIDU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0
U3RyZWFtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5U1NM
UGVlclRydXN0IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDc0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVNTTFZhbGlkYXRlc0NlcnRpZmljYXRlQ2hhaW4g
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgODkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdv
cmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTb2NrZXRTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlTU0xTZXR0aW5ncyBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZTb2NrZXRTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFt
U1NMTGV2ZWwgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTIxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVNTTFBlZXJOYW1lIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDEzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVh
ZGVycy9DRlNvY2tldFN0cmVhbS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJl
YW1TU0xDZXJ0aWZpY2F0ZXMgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CiMgMTU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgi
IDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVNTTElzU2VydmVyIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDE3MiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFt
ZXdvcmsvSGVhZGVycy9DRlNvY2tldFN0cmVhbS5oIiAzCiNkZWZpbmUgX19PU1hfU1RSRUFNX1BS
T1BFUlRJRVNfREVQUkVDQVRFRF8xMF82IF9fT1NYX0FWQUlMQUJMRV9TVEFSVElORyhfX01BQ18x
MF80LF9fSVBIT05FX05BKQojIDE5NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9D
RlNvY2tldFN0cmVhbS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Qcm9w
ZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CiMgMjEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3Ry
ZWFtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVNTTEFsbG93c0V4cGly
ZWRDZXJ0aWZpY2F0ZXMgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMg
MjI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVNTTEFsbG93c0V4cGlyZWRSb290cyBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyNDQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdv
cmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTb2NrZXRTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0NGU3RyZWFtU1NMQWxsb3dzQW55Um9vdCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKIyAyNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMv
Q0ZTb2NrZXRTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZJbmRleCBrQ0ZTdHJlYW1FcnJvckRv
bWFpbldpblNvY2sgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjcz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMKZXh0
ZXJuIGNvbnN0IGludCBrQ0ZTdHJlYW1FcnJvckRvbWFpblNPQ0tTOwoKCgpzdGF0aWMgX19pbmxp
bmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKU0ludDMyIENGU29ja2V0U3RyZWFt
U09DS1NHZXRFcnJvclN1YmRvbWFpbihjb25zdCBDRlN0cmVhbUVycm9yKiBlcnJvcikgewogcmV0
dXJuICgoZXJyb3ItPmVycm9yID4+IDE2KSAmIDB4MDAwMEZGRkYpOwp9CgpzdGF0aWMgX19pbmxp
bmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKU0ludDMyIENGU29ja2V0U3RyZWFt
U09DS1NHZXRFcnJvcihjb25zdCBDRlN0cmVhbUVycm9yKiBlcnJvcikgewogcmV0dXJuIChlcnJv
ci0+ZXJyb3IgJiAweDAwMDBGRkZGKTsKfQoKZW51bSB7CiAga0NGU3RyZWFtRXJyb3JTT0NLU1N1
YkRvbWFpbk5vbmUgPSAwLAogIGtDRlN0cmVhbUVycm9yU09DS1NTdWJEb21haW5WZXJzaW9uQ29k
ZSA9IDEsCiAga0NGU3RyZWFtRXJyb3JTT0NLUzRTdWJEb21haW5SZXNwb25zZSA9IDIsCiAga0NG
U3RyZWFtRXJyb3JTT0NLUzVTdWJEb21haW5Vc2VyUGFzcyA9IDMsCiAga0NGU3RyZWFtRXJyb3JT
T0NLUzVTdWJEb21haW5NZXRob2QgPSA0LAogIGtDRlN0cmVhbUVycm9yU09DS1M1U3ViRG9tYWlu
UmVzcG9uc2UgPSA1Cn07CgoKCmVudW0gewogIGtDRlN0cmVhbUVycm9yU09DS1M1QmFkUmVzcG9u
c2VBZGRyID0gMSwKICBrQ0ZTdHJlYW1FcnJvclNPQ0tTNUJhZFN0YXRlID0gMiwKICBrQ0ZTdHJl
YW1FcnJvclNPQ0tTVW5rbm93bkNsaWVudFZlcnNpb24gPSAzCn07CgoKZW51bSB7CiAga0NGU3Ry
ZWFtRXJyb3JTT0NLUzRSZXF1ZXN0RmFpbGVkID0gOTEsCiAga0NGU3RyZWFtRXJyb3JTT0NLUzRJ
ZGVudGRGYWlsZWQgPSA5MiwKICBrQ0ZTdHJlYW1FcnJvclNPQ0tTNElkQ29uZmxpY3QgPSA5Mwp9
OwoKCmVudW0gewogIGtTT0NLUzVOb0FjY2VwdGFibGVNZXRob2QgPSAweEZGCn07CiMgMzM2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5U09DS1NQcm94eTsKIyAzNTIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTb2NrZXRTdHJlYW0uaCIgMwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlTT0NLU1Byb3h5SG9zdDsKIyAzNjkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTb2NrZXRTdHJlYW0uaCIgMwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlTT0NLU1Byb3h5UG9ydDsKIyAz
ODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTb2NrZXRTdHJlYW0uaCIgMwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlTT0NLU1ZlcnNpb247CiMg
NDAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVNvY2tldFNPQ0tTVmVyc2lvbjQ7CiMg
NDE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVNvY2tldFNPQ0tTVmVyc2lvbjU7CiMg
NDMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5U09DS1NVc2VyOwojIDQ1
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlNvY2tldFN0cmVhbS5oIiAzCmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eVNPQ0tTUGFzc3dvcmQ7CiMg
NDYzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMK
ZXh0ZXJuIGNvbnN0IGludCBrQ0ZTdHJlYW1FcnJvckRvbWFpblNTTDsKIyA0ODEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5l
dHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTb2NrZXRTdHJlYW0uaCIgMwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlTb2NrZXRTZWN1cml0eUxldmVsOwojIDQ5NSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlNvY2tldFN0cmVhbS5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Tb2NrZXRTZWN1cml0eUxldmVsTm9uZTsKIyA1
MDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTb2NrZXRTdHJlYW0uaCIgMwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtU29ja2V0U2VjdXJpdHlMZXZlbFNTTHYy
OwojIDUyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlNvY2tldFN0cmVhbS5o
IiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Tb2NrZXRTZWN1cml0eUxldmVs
U1NMdjM7CiMgNTM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3Ry
ZWFtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVNvY2tldFNlY3VyaXR5
TGV2ZWxUTFN2MTsKIyA1NTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZTb2Nr
ZXRTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtU29ja2V0U2Vj
dXJpdHlMZXZlbE5lZ290aWF0ZWRTU0w7CiMgNTczICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9I
ZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0
cmVhbVByb3BlcnR5U2hvdWxkQ2xvc2VOYXRpdmVTb2NrZXQ7CiMgNTg4ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3Jr
LmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5U29ja2V0UmVtb3RlSG9zdCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA2MDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hl
YWRlcnMvQ0ZTb2NrZXRTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3Ry
ZWFtUHJvcGVydHlTb2NrZXRSZW1vdGVOZXRTZXJ2aWNlIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwojIDY0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9D
RlNvY2tldFN0cmVhbS5oIiAzCmV4dGVybiB2b2lkCkNGU3RyZWFtQ3JlYXRlUGFpcldpdGhTb2Nr
ZXRUb0NGSG9zdCgKICBDRkFsbG9jYXRvclJlZiBhbGxvYywKICBDRkhvc3RSZWYgaG9zdCwKICBT
SW50MzIgcG9ydCwKICBDRlJlYWRTdHJlYW1SZWYgKiByZWFkU3RyZWFtLAogIENGV3JpdGVTdHJl
YW1SZWYgKiB3cml0ZVN0cmVhbSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CiMgNjg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFt
LmgiIDMKZXh0ZXJuIHZvaWQKQ0ZTdHJlYW1DcmVhdGVQYWlyV2l0aFNvY2tldFRvTmV0U2Vydmlj
ZSgKICBDRkFsbG9jYXRvclJlZiBhbGxvYywKICBDRk5ldFNlcnZpY2VSZWYgc2VydmljZSwKICBD
RlJlYWRTdHJlYW1SZWYgKiByZWFkU3RyZWFtLAogIENGV3JpdGVTdHJlYW1SZWYgKiB3cml0ZVN0
cmVhbSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNzA4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMKZW51bSBDRlN0
cmVhbVNvY2tldFNlY3VyaXR5UHJvdG9jb2wgewoKCgoKICBrQ0ZTdHJlYW1Tb2NrZXRTZWN1cml0
eU5vbmUgPSAwLAoKCgoKICBrQ0ZTdHJlYW1Tb2NrZXRTZWN1cml0eVNTTHYyID0gMSwKCgoKCiAg
a0NGU3RyZWFtU29ja2V0U2VjdXJpdHlTU0x2MyA9IDIsCgoKCgogIGtDRlN0cmVhbVNvY2tldFNl
Y3VyaXR5U1NMdjIzID0gMywKCgoKCiAga0NGU3RyZWFtU29ja2V0U2VjdXJpdHlUTFN2MSA9IDQK
fTsKdHlwZWRlZiBlbnVtIENGU3RyZWFtU29ja2V0U2VjdXJpdHlQcm90b2NvbCBDRlN0cmVhbVNv
Y2tldFNlY3VyaXR5UHJvdG9jb2w7CiMgNzcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFk
ZXJzL0NGU29ja2V0U3RyZWFtLmgiIDMKZXh0ZXJuIEJvb2xlYW4KQ0ZTb2NrZXRTdHJlYW1QYWly
U2V0U2VjdXJpdHlQcm90b2NvbCgKICBDRlJlYWRTdHJlYW1SZWYgc29ja2V0UmVhZFN0cmVhbSwK
ICBDRldyaXRlU3RyZWFtUmVmIHNvY2tldFdyaXRlU3RyZWFtLAogIENGU3RyZWFtU29ja2V0U2Vj
dXJpdHlQcm90b2NvbCBzZWN1cml0eVByb3RvY29sKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
LHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDc5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsv
SGVhZGVycy9DRlNvY2tldFN0cmVhbS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZT
dHJlYW1Qcm9wZXJ0eVByb3h5TG9jYWxCeXBhc3MgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCgoKCn0KIyAzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVy
cy9DRk5ldHdvcmsuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVy
cy9DRkZUUFN0cmVhbS5oIiAxIDMKIyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVy
cy9DRkZUUFN0cmVhbS5oIiAzCiNkZWZpbmUgX19DRkZUUFNUUkVBTV9fIAoKCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NG
TmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldHdvcmtEZWZzLmgiIDEgMwojIDE5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGRlRQU3RyZWFtLmgiIDIgMwojIDM0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGRlRQU3RyZWFtLmgiIDMKZXh0ZXJuICJDIiB7
CiMgNDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZGVFBTdHJlYW0uaCIgMwpl
eHRlcm4gY29uc3QgU0ludDMyIGtDRlN0cmVhbUVycm9yRG9tYWluRlRQIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDczICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9I
ZWFkZXJzL0NGRlRQU3RyZWFtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVh
bVByb3BlcnR5RlRQVXNlck5hbWUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CiMgODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZGVFBTdHJlYW0uaCIg
MwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlGVFBQYXNzd29yZCBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMDUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdv
cmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZGVFBTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NGU3RyZWFtUHJvcGVydHlGVFBVc2VQYXNzaXZlTW9kZSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hl
YWRlcnMvQ0ZGVFBTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFt
UHJvcGVydHlGVFBSZXNvdXJjZVNpemUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CiMgMTM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGRlRQU3RyZWFt
LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5RlRQRmV0Y2hS
ZXNvdXJjZUluZm8gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTUz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGRlRQU3RyZWFtLmgiIDMKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5RlRQRmlsZVRyYW5zZmVyT2Zmc2V0
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDE2OSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0
d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkZUUFN0cmVhbS5oIiAzCmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUZUUEF0dGVtcHRQZXJzaXN0ZW50Q29ubmVjdGlvbiBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxODYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdv
cmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZGVFBTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NGU3RyZWFtUHJvcGVydHlGVFBQcm94eSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKIyAyMDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZG
VFBTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlG
VFBQcm94eUhvc3QgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjIy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGRlRQU3RyZWFtLmgiIDMKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5RlRQUHJveHlQb3J0IF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDIzMiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFt
ZXdvcmsvSGVhZGVycy9DRkZUUFN0cmVhbS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZTdHJlYW1Qcm9wZXJ0eUZUUFByb3h5VXNlciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKIyAyNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZGVFBT
dHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlGVFBQ
cm94eVBhc3N3b3JkIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDI2
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkZUUFN0cmVhbS5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZGVFBSZXNvdXJjZU1vZGUgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFk
ZXJzL0NGRlRQU3RyZWFtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkZUUFJlc291
cmNlTmFtZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyOTMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZGVFBTdHJlYW0uaCIgMwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0NGRlRQUmVzb3VyY2VPd25lciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKIyAzMDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMv
Q0ZGVFBTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGRlRQUmVzb3VyY2VH
cm91cCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAzMjQgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
Rk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZGVFBTdHJlYW0uaCIgMwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NGRlRQUmVzb3VyY2VMaW5rIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwojIDMzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkZU
UFN0cmVhbS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZGVFBSZXNvdXJjZVNpemUg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMzU0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3
b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGRlRQU3RyZWFtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtDRkZUUFJlc291cmNlVHlwZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKIyAzNjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZGVFBTdHJl
YW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGRlRQUmVzb3VyY2VNb2REYXRlIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDQwOCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29y
ay5mcmFtZXdvcmsvSGVhZGVycy9DRkZUUFN0cmVhbS5oIiAzCmV4dGVybiBDRlJlYWRTdHJlYW1S
ZWYKQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZUUFVSTCgKICBDRkFsbG9jYXRvclJlZiBhbGxvYywK
ICBDRlVSTFJlZiBmdHBVUkwpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwojIDQ1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkZUUFN0cmVhbS5oIiAz
CmV4dGVybiBDRkluZGV4CkNGRlRQQ3JlYXRlUGFyc2VkUmVzb3VyY2VMaXN0aW5nKAogIENGQWxs
b2NhdG9yUmVmIGFsbG9jLAogIGNvbnN0IFVJbnQ4ICogYnVmZmVyLAogIENGSW5kZXggYnVmZmVy
TGVuZ3RoLAogIENGRGljdGlvbmFyeVJlZiAqIHBhcnNlZCkgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CiMgNTAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJz
L0NGRlRQU3RyZWFtLmgiIDMKZXh0ZXJuIENGV3JpdGVTdHJlYW1SZWYKQ0ZXcml0ZVN0cmVhbUNy
ZWF0ZVdpdGhGVFBVUkwoCiAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsCiAgQ0ZVUkxSZWYgZnRwVVJM
KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCn0KIyAzNiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldHdvcmsuaCIgMiAzCgoKCgoKCgojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQTWVzc2FnZS5oIiAxIDMKIyAx
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBNZXNzYWdlLmgiIDMKI2Rl
ZmluZSBfX0NGSFRUUE1FU1NBR0VfXyAKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hl
YWRlcnMvQ0ZOZXR3b3JrRGVmcy5oIiAxIDMKIyAxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsv
SGVhZGVycy9DRkhUVFBNZXNzYWdlLmgiIDIgMwojIDM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29y
ay9IZWFkZXJzL0NGSFRUUE1lc3NhZ2UuaCIgMwpleHRlcm4gIkMiIHsKIyA1MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0
d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBNZXNzYWdlLmgiIDMKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtDRkhUVFBWZXJzaW9uMV8wIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwojIDY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUE1l
c3NhZ2UuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGSFRUUFZlcnNpb24xXzEgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgODAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQTWVzc2FnZS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZIVFRQQXV0aGVudGljYXRpb25TY2hlbWVCYXNpYyBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKIyA5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVy
cy9DRkhUVFBNZXNzYWdlLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkhUVFBBdXRo
ZW50aWNhdGlvblNjaGVtZURpZ2VzdCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKIyAxMDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQTWVzc2Fn
ZS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZIVFRQQXV0aGVudGljYXRpb25TY2hl
bWVOVExNIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDEyMCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBNZXNzYWdlLmgiIDMKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtDRkhUVFBBdXRoZW50aWNhdGlvblNjaGVtZU5lZ290aWF0ZSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMzMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQTWVzc2FnZS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZIVFRQQXV0aGVudGljYXRpb25TY2hlbWVOZWdvdGlhdGUyIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDE0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsv
SGVhZGVycy9DRkhUVFBNZXNzYWdlLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX19DRkhUVFBNZXNzYWdl
KiBDRkhUVFBNZXNzYWdlUmVmOwojIDE2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVy
cy9DRkhUVFBNZXNzYWdlLmgiIDMKZXh0ZXJuIENGVHlwZUlECkNGSFRUUE1lc3NhZ2VHZXRUeXBl
SUQodm9pZCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjA1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUE1lc3NhZ2UuaCIgMwpleHRlcm4g
Q0ZIVFRQTWVzc2FnZVJlZgpDRkhUVFBNZXNzYWdlQ3JlYXRlUmVxdWVzdCgKICBDRkFsbG9jYXRv
clJlZiBhbGxvYywKICBDRlN0cmluZ1JlZiByZXF1ZXN0TWV0aG9kLAogIENGVVJMUmVmIHVybCwK
ICBDRlN0cmluZ1JlZiBodHRwVmVyc2lvbikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CiMgMjUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUE1l
c3NhZ2UuaCIgMwpleHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZgpDRkhUVFBNZXNzYWdlQ3JlYXRlUmVz
cG9uc2UoCiAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsCiAgQ0ZJbmRleCBzdGF0dXNDb2RlLAogIENG
U3RyaW5nUmVmIHN0YXR1c0Rlc2NyaXB0aW9uLAogIENGU3RyaW5nUmVmIGh0dHBWZXJzaW9uKSBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyOTIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdv
cmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQTWVzc2FnZS5oIiAzCmV4dGVybiBDRkhUVFBNZXNz
YWdlUmVmCkNGSFRUUE1lc3NhZ2VDcmVhdGVFbXB0eSgKICBDRkFsbG9jYXRvclJlZiBhbGxvYywK
ICBCb29sZWFuIGlzUmVxdWVzdCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CiMgMzI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUE1lc3NhZ2Uu
aCIgMwpleHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZgpDRkhUVFBNZXNzYWdlQ3JlYXRlQ29weSgKICBD
RkFsbG9jYXRvclJlZiBhbGxvYywKICBDRkhUVFBNZXNzYWdlUmVmIG1lc3NhZ2UpIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDM2MCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFt
ZXdvcmsvSGVhZGVycy9DRkhUVFBNZXNzYWdlLmgiIDMKZXh0ZXJuIEJvb2xlYW4KQ0ZIVFRQTWVz
c2FnZUlzUmVxdWVzdChDRkhUVFBNZXNzYWdlUmVmIG1lc3NhZ2UpIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDM4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVh
ZGVycy9DRkhUVFBNZXNzYWdlLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmCkNGSFRUUE1lc3NhZ2VD
b3B5VmVyc2lvbihDRkhUVFBNZXNzYWdlUmVmIG1lc3NhZ2UpIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwojIDQxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVy
cy9DRkhUVFBNZXNzYWdlLmgiIDMKZXh0ZXJuIENGRGF0YVJlZgpDRkhUVFBNZXNzYWdlQ29weUJv
ZHkoQ0ZIVFRQTWVzc2FnZVJlZiBtZXNzYWdlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKIyA0NDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQ
TWVzc2FnZS5oIiAzCmV4dGVybiB2b2lkCkNGSFRUUE1lc3NhZ2VTZXRCb2R5KAogIENGSFRUUE1l
c3NhZ2VSZWYgbWVzc2FnZSwKICBDRkRhdGFSZWYgYm9keURhdGEpIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDQ3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVh
ZGVycy9DRkhUVFBNZXNzYWdlLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmCkNGSFRUUE1lc3NhZ2VD
b3B5SGVhZGVyRmllbGRWYWx1ZSgKICBDRkhUVFBNZXNzYWdlUmVmIG1lc3NhZ2UsCiAgQ0ZTdHJp
bmdSZWYgaGVhZGVyRmllbGQpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwojIDUwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBNZXNzYWdlLmgi
IDMKZXh0ZXJuIENGRGljdGlvbmFyeVJlZgpDRkhUVFBNZXNzYWdlQ29weUFsbEhlYWRlckZpZWxk
cyhDRkhUVFBNZXNzYWdlUmVmIG1lc3NhZ2UpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwojIDU0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBN
ZXNzYWdlLmgiIDMKZXh0ZXJuIHZvaWQKQ0ZIVFRQTWVzc2FnZVNldEhlYWRlckZpZWxkVmFsdWUo
CiAgQ0ZIVFRQTWVzc2FnZVJlZiBtZXNzYWdlLAogIENGU3RyaW5nUmVmIGhlYWRlckZpZWxkLAog
IENGU3RyaW5nUmVmIHZhbHVlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKIyA1NzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQTWVzc2FnZS5o
IiAzCmV4dGVybiBCb29sZWFuCkNGSFRUUE1lc3NhZ2VBcHBlbmRCeXRlcygKICBDRkhUVFBNZXNz
YWdlUmVmIG1lc3NhZ2UsCiAgY29uc3QgVUludDggKiBuZXdCeXRlcywKICBDRkluZGV4IG51bUJ5
dGVzKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA2MTAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
Rk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQTWVzc2FnZS5oIiAzCmV4dGVybiBCb29s
ZWFuCkNGSFRUUE1lc3NhZ2VJc0hlYWRlckNvbXBsZXRlKENGSFRUUE1lc3NhZ2VSZWYgbWVzc2Fn
ZSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNjM5ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZO
ZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUE1lc3NhZ2UuaCIgMwpleHRlcm4gQ0ZEYXRh
UmVmCkNGSFRUUE1lc3NhZ2VDb3B5U2VyaWFsaXplZE1lc3NhZ2UoQ0ZIVFRQTWVzc2FnZVJlZiBy
ZXF1ZXN0KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA2NzAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQTWVzc2FnZS5oIiAzCmV4dGVybiBD
RlVSTFJlZgpDRkhUVFBNZXNzYWdlQ29weVJlcXVlc3RVUkwoQ0ZIVFRQTWVzc2FnZVJlZiByZXF1
ZXN0KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA2OTcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
Rk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQTWVzc2FnZS5oIiAzCmV4dGVybiBDRlN0
cmluZ1JlZgpDRkhUVFBNZXNzYWdlQ29weVJlcXVlc3RNZXRob2QoQ0ZIVFRQTWVzc2FnZVJlZiBy
ZXF1ZXN0KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA3NDYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQTWVzc2FnZS5oIiAzCmV4dGVybiBC
b29sZWFuCkNGSFRUUE1lc3NhZ2VBZGRBdXRoZW50aWNhdGlvbigKICBDRkhUVFBNZXNzYWdlUmVm
IHJlcXVlc3QsCiAgQ0ZIVFRQTWVzc2FnZVJlZiBhdXRoZW50aWNhdGlvbkZhaWx1cmVSZXNwb25z
ZSwKICBDRlN0cmluZ1JlZiB1c2VybmFtZSwKICBDRlN0cmluZ1JlZiBwYXNzd29yZCwKICBDRlN0
cmluZ1JlZiBhdXRoZW50aWNhdGlvblNjaGVtZSwKICBCb29sZWFuIGZvclByb3h5KSBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA3ODMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJh
bWV3b3JrL0hlYWRlcnMvQ0ZIVFRQTWVzc2FnZS5oIiAzCmV4dGVybiBDRkluZGV4CkNGSFRUUE1l
c3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoQ0ZIVFRQTWVzc2FnZVJlZiByZXNwb25zZSkgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgODEyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3Jr
LmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUE1lc3NhZ2UuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYK
Q0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xpbmUoQ0ZIVFRQTWVzc2FnZVJlZiByZXNw
b25zZSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgp9CiMgNDQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrLmgiIDIgMwoKCgojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQU3RyZWFtLmgiIDEgMwojIDE1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUFN0cmVhbS5oIiAzCiNkZWZp
bmUgX19DRkhUVFBTVFJFQU1fXyAKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZOZXR3b3JrRGVmcy5oIiAxIDMKIyAxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVh
ZGVycy9DRkhUVFBTdHJlYW0uaCIgMiAzCiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hl
YWRlcnMvQ0ZIVFRQU3RyZWFtLmgiIDMKZXh0ZXJuICJDIiB7CiMgNTggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQU3RyZWFtLmgiIDMKZXh0ZXJuIGNvbnN0IFNJbnQzMiBr
Q0ZTdHJlYW1FcnJvckRvbWFpbkhUVFAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CgoKCgoKCgplbnVtIENGU3RyZWFtRXJyb3JIVFRQIHsKCgoKCiAga0NGU3RyZWFtRXJy
b3JIVFRQUGFyc2VGYWlsdXJlID0gLTEsCgoKCgogIGtDRlN0cmVhbUVycm9ySFRUUFJlZGlyZWN0
aW9uTG9vcCA9IC0yLAoKCgoKICBrQ0ZTdHJlYW1FcnJvckhUVFBCYWRVUkwgPSAtMwp9Owp0eXBl
ZGVmIGVudW0gQ0ZTdHJlYW1FcnJvckhUVFAgQ0ZTdHJlYW1FcnJvckhUVFA7CiMgOTcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
Rk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQU3RyZWFtLmgiIDMKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5SFRUUFJlc3BvbnNlSGVhZGVyIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDExNCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFt
ZXdvcmsvSGVhZGVycy9DRkhUVFBTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0NGU3RyZWFtUHJvcGVydHlIVFRQRmluYWxVUkwgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CiMgMTMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRU
UFN0cmVhbS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUhU
VFBGaW5hbFJlcXVlc3QgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMg
MTUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUFN0cmVhbS5oIiAzCmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUhUVFBQcm94eSBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxNjUgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJh
bWV3b3JrL0hlYWRlcnMvQ0ZIVFRQU3RyZWFtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDRlN0cmVhbVByb3BlcnR5SFRUUFByb3h5SG9zdCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKIyAxNzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZI
VFRQU3RyZWFtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5
SFRUUFByb3h5UG9ydCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAx
OTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQU3RyZWFtLmgiIDMKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5SFRUUFNQcm94eUhvc3QgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjA5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3Jr
LmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUFN0cmVhbS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUhUVFBTUHJveHlQb3J0IF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwojIDIyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVy
cy9DRkhUVFBTdHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJv
cGVydHlIVFRQU2hvdWxkQXV0b3JlZGlyZWN0IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwojIDI0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBT
dHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlIVFRQ
QXR0ZW1wdFBlcnNpc3RlbnRDb25uZWN0aW9uIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwojIDI2MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBT
dHJlYW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlIVFRQ
UmVxdWVzdEJ5dGVzV3JpdHRlbkNvdW50IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwojIDMwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBTdHJl
YW0uaCIgMwpleHRlcm4gQ0ZSZWFkU3RyZWFtUmVmCkNGUmVhZFN0cmVhbUNyZWF0ZUZvckhUVFBS
ZXF1ZXN0KAogIENGQWxsb2NhdG9yUmVmIGFsbG9jLAogIENGSFRUUE1lc3NhZ2VSZWYgcmVxdWVz
dCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMzUyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZO
ZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUFN0cmVhbS5oIiAzCmV4dGVybiBDRlJlYWRT
dHJlYW1SZWYKQ0ZSZWFkU3RyZWFtQ3JlYXRlRm9yU3RyZWFtZWRIVFRQUmVxdWVzdCgKICBDRkFs
bG9jYXRvclJlZiBhbGxvYywKICBDRkhUVFBNZXNzYWdlUmVmIHJlcXVlc3RIZWFkZXJzLAogIENG
UmVhZFN0cmVhbVJlZiByZXF1ZXN0Qm9keSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CiMgMzgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUFN0
cmVhbS5oIiAzCmV4dGVybiB2b2lkCkNGSFRUUFJlYWRTdHJlYW1TZXRSZWRpcmVjdHNBdXRvbWF0
aWNhbGx5KAogIENGUmVhZFN0cmVhbVJlZiBodHRwU3RyZWFtLAogIEJvb2xlYW4gc2hvdWxkQXV0
b1JlZGlyZWN0KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwojIDQxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBTdHJlYW0u
aCIgMwpleHRlcm4gdm9pZApDRkhUVFBSZWFkU3RyZWFtU2V0UHJveHkoCiAgQ0ZSZWFkU3RyZWFt
UmVmIGh0dHBTdHJlYW0sCiAgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LAogIENGSW5kZXggcHJveHlQ
b3J0KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoj
IDQyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBTdHJlYW0uaCIgMwp9
CiMgNDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrLmgiIDIgMwoK
CgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQQXV0aGVudGljYXRp
b24uaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQQXV0
aGVudGljYXRpb24uaCIgMwojZGVmaW5lIF9fQ0ZIVFRQQVVUSEVOVElDQVRJT05fXyAKCgojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrRGVmcy5oIiAxIDMKIyAx
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBBdXRoZW50aWNhdGlvbi5o
IiAyIDMKIyAzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBBdXRoZW50
aWNhdGlvbi5oIiAzCmV4dGVybiAiQyIgewojIDU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9I
ZWFkZXJzL0NGSFRUUEF1dGhlbnRpY2F0aW9uLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0NGSFRUUEF1
dGhlbnRpY2F0aW9uKiBDRkhUVFBBdXRoZW50aWNhdGlvblJlZjsKIyA2NCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29y
ay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBBdXRoZW50aWNhdGlvbi5oIiAzCmVudW0gQ0ZTdHJl
YW1FcnJvckhUVFBBdXRoZW50aWNhdGlvbiB7CgoKCgoKICBrQ0ZTdHJlYW1FcnJvckhUVFBBdXRo
ZW50aWNhdGlvblR5cGVVbnN1cHBvcnRlZCA9IC0xMDAwLAoKCgoKCiAga0NGU3RyZWFtRXJyb3JI
VFRQQXV0aGVudGljYXRpb25CYWRVc2VyTmFtZSA9IC0xMDAxLAoKCgoKCiAga0NGU3RyZWFtRXJy
b3JIVFRQQXV0aGVudGljYXRpb25CYWRQYXNzd29yZCA9IC0xMDAyCn07CnR5cGVkZWYgZW51bSBD
RlN0cmVhbUVycm9ySFRUUEF1dGhlbnRpY2F0aW9uIENGU3RyZWFtRXJyb3JIVFRQQXV0aGVudGlj
YXRpb247CiMgMTAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUEF1dGhl
bnRpY2F0aW9uLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkhUVFBBdXRoZW50aWNh
dGlvblVzZXJuYW1lIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDEx
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBBdXRoZW50aWNhdGlvbi5o
IiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZIVFRQQXV0aGVudGljYXRpb25QYXNzd29y
ZCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMzAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5l
dHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQQXV0aGVudGljYXRpb24uaCIgMwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0NGSFRUUEF1dGhlbnRpY2F0aW9uQWNjb3VudERvbWFpbiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxNDYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQQXV0aGVudGljYXRpb24uaCIgMwpleHRlcm4gQ0ZUeXBl
SUQKQ0ZIVFRQQXV0aGVudGljYXRpb25HZXRUeXBlSUQodm9pZCkgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFk
ZXJzL0NGSFRUUEF1dGhlbnRpY2F0aW9uLmgiIDMKZXh0ZXJuIENGSFRUUEF1dGhlbnRpY2F0aW9u
UmVmCkNGSFRUUEF1dGhlbnRpY2F0aW9uQ3JlYXRlRnJvbVJlc3BvbnNlKAogIENGQWxsb2NhdG9y
UmVmIGFsbG9jLAogIENGSFRUUE1lc3NhZ2VSZWYgcmVzcG9uc2UpIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDIyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVh
ZGVycy9DRkhUVFBBdXRoZW50aWNhdGlvbi5oIiAzCmV4dGVybiBCb29sZWFuCkNGSFRUUEF1dGhl
bnRpY2F0aW9uSXNWYWxpZCgKICBDRkhUVFBBdXRoZW50aWNhdGlvblJlZiBhdXRoLAogIENGU3Ry
ZWFtRXJyb3IgKiBlcnJvcikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CiMgMjY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUEF1dGhlbnRpY2F0
aW9uLmgiIDMKZXh0ZXJuIEJvb2xlYW4KQ0ZIVFRQQXV0aGVudGljYXRpb25BcHBsaWVzVG9SZXF1
ZXN0KAogIENGSFRUUEF1dGhlbnRpY2F0aW9uUmVmIGF1dGgsCiAgQ0ZIVFRQTWVzc2FnZVJlZiBy
ZXF1ZXN0KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAzMDAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQQXV0aGVudGljYXRpb24uaCIgMwpl
eHRlcm4gQm9vbGVhbgpDRkhUVFBBdXRoZW50aWNhdGlvblJlcXVpcmVzT3JkZXJlZFJlcXVlc3Rz
KENGSFRUUEF1dGhlbnRpY2F0aW9uUmVmIGF1dGgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwojIDM0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhU
VFBBdXRoZW50aWNhdGlvbi5oIiAzCmV4dGVybiBCb29sZWFuCkNGSFRUUE1lc3NhZ2VBcHBseUNy
ZWRlbnRpYWxzKAogIENGSFRUUE1lc3NhZ2VSZWYgcmVxdWVzdCwKICBDRkhUVFBBdXRoZW50aWNh
dGlvblJlZiBhdXRoLAogIENGU3RyaW5nUmVmIHVzZXJuYW1lLAogIENGU3RyaW5nUmVmIHBhc3N3
b3JkLAogIENGU3RyZWFtRXJyb3IgKiBlcnJvcikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CiMgNDAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRU
UEF1dGhlbnRpY2F0aW9uLmgiIDMKZXh0ZXJuIEJvb2xlYW4KQ0ZIVFRQTWVzc2FnZUFwcGx5Q3Jl
ZGVudGlhbERpY3Rpb25hcnkoCiAgQ0ZIVFRQTWVzc2FnZVJlZiByZXF1ZXN0LAogIENGSFRUUEF1
dGhlbnRpY2F0aW9uUmVmIGF1dGgsCiAgQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QsCiAgQ0ZTdHJlYW1F
cnJvciAqIGVycm9yKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA0
NDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZIVFRQQXV0aGVudGljYXRpb24u
aCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYKQ0ZIVFRQQXV0aGVudGljYXRpb25Db3B5UmVhbG0oQ0ZI
VFRQQXV0aGVudGljYXRpb25SZWYgYXV0aCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CiMgNDc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGSFRUUEF1
dGhlbnRpY2F0aW9uLmgiIDMKZXh0ZXJuIENGQXJyYXlSZWYKQ0ZIVFRQQXV0aGVudGljYXRpb25D
b3B5RG9tYWlucyhDRkhUVFBBdXRoZW50aWNhdGlvblJlZiBhdXRoKSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA1MDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hl
YWRlcnMvQ0ZIVFRQQXV0aGVudGljYXRpb24uaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYKQ0ZIVFRQ
QXV0aGVudGljYXRpb25Db3B5TWV0aG9kKENGSFRUUEF1dGhlbnRpY2F0aW9uUmVmIGF1dGgpIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDU0MCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29y
ay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBBdXRoZW50aWNhdGlvbi5oIiAzCmV4dGVybiBCb29s
ZWFuCkNGSFRUUEF1dGhlbnRpY2F0aW9uUmVxdWlyZXNVc2VyTmFtZUFuZFBhc3N3b3JkKENGSFRU
UEF1dGhlbnRpY2F0aW9uUmVmIGF1dGgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwojIDU3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRkhUVFBBdXRo
ZW50aWNhdGlvbi5oIiAzCmV4dGVybiBCb29sZWFuCkNGSFRUUEF1dGhlbnRpY2F0aW9uUmVxdWly
ZXNBY2NvdW50RG9tYWluKENGSFRUUEF1dGhlbnRpY2F0aW9uUmVmIGF1dGgpIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDU4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdv
cmsvSGVhZGVycy9DRkhUVFBBdXRoZW50aWNhdGlvbi5oIiAzCn0KIyA1MiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29y
ay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldHdvcmsuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29y
ay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldERpYWdub3N0aWNzLmgiIDEgMwojIDE1ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZO
ZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0RGlhZ25vc3RpY3MuaCIgMwojZGVmaW5lIF9f
Q0ZORVRESUFHTk9TVElDU19fIAoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVy
cy9DRk5ldHdvcmtEZWZzLmgiIDEgMwojIDE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFk
ZXJzL0NGTmV0RGlhZ25vc3RpY3MuaCIgMiAzCiMgMzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0ZOZXREaWFnbm9zdGljcy5oIiAzCmV4dGVybiAiQyIgewojIDUwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZO
ZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0RGlhZ25vc3RpY3MuaCIgMwp0eXBlZGVmIHN0
cnVjdCBfX0NGTmV0RGlhZ25vc3RpYyogQ0ZOZXREaWFnbm9zdGljUmVmOwoKCgoKCgoKZW51bSBD
Rk5ldERpYWdub3N0aWNTdGF0dXNWYWx1ZXMgewoKCgoKICBrQ0ZOZXREaWFnbm9zdGljTm9FcnIg
PSAwLAoKCgoKICBrQ0ZOZXREaWFnbm9zdGljRXJyID0gLTY2NTYwTCwKCgoKCiAga0NGTmV0RGlh
Z25vc3RpY0Nvbm5lY3Rpb25VcCA9IC02NjU1OUwsCiAga0NGTmV0RGlhZ25vc3RpY0Nvbm5lY3Rp
b25JbmRldGVybWluYXRlID0gLTY2NTU4TCwKCgoKCiAga0NGTmV0RGlhZ25vc3RpY0Nvbm5lY3Rp
b25Eb3duID0gLTY2NTU3TAp9Owp0eXBlZGVmIGVudW0gQ0ZOZXREaWFnbm9zdGljU3RhdHVzVmFs
dWVzIENGTmV0RGlhZ25vc3RpY1N0YXR1c1ZhbHVlczsKIyA5MCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFt
ZXdvcmsvSGVhZGVycy9DRk5ldERpYWdub3N0aWNzLmgiIDMKdHlwZWRlZiBDRkluZGV4IENGTmV0
RGlhZ25vc3RpY1N0YXR1czsKIyAxMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMv
Q0ZOZXREaWFnbm9zdGljcy5oIiAzCmV4dGVybiBDRk5ldERpYWdub3N0aWNSZWYKQ0ZOZXREaWFn
bm9zdGljQ3JlYXRlV2l0aFN0cmVhbXMoCiAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsCiAgQ0ZSZWFk
U3RyZWFtUmVmIHJlYWRTdHJlYW0sCiAgQ0ZXcml0ZVN0cmVhbVJlZiB3cml0ZVN0cmVhbSkgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTQ5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3Jr
LmZyYW1ld29yay9IZWFkZXJzL0NGTmV0RGlhZ25vc3RpY3MuaCIgMwpleHRlcm4gQ0ZOZXREaWFn
bm9zdGljUmVmCkNGTmV0RGlhZ25vc3RpY0NyZWF0ZVdpdGhVUkwoCiAgQ0ZBbGxvY2F0b3JSZWYg
YWxsb2MsCiAgQ0ZVUkxSZWYgdXJsKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKIyAxODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXREaWFnbm9z
dGljcy5oIiAzCmV4dGVybiB2b2lkCkNGTmV0RGlhZ25vc3RpY1NldE5hbWUoCiAgQ0ZOZXREaWFn
bm9zdGljUmVmIGRldGFpbHMsCiAgQ0ZTdHJpbmdSZWYgbmFtZSkgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFk
ZXJzL0NGTmV0RGlhZ25vc3RpY3MuaCIgMwpleHRlcm4gQ0ZOZXREaWFnbm9zdGljU3RhdHVzCkNG
TmV0RGlhZ25vc3RpY0RpYWdub3NlUHJvYmxlbUludGVyYWN0aXZlbHkoQ0ZOZXREaWFnbm9zdGlj
UmVmIGRldGFpbHMpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDI0
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldERpYWdub3N0aWNzLmgiIDMK
ZXh0ZXJuIENGTmV0RGlhZ25vc3RpY1N0YXR1cwpDRk5ldERpYWdub3N0aWNDb3B5TmV0d29ya1N0
YXR1c1Bhc3NpdmVseSgKICBDRk5ldERpYWdub3N0aWNSZWYgZGV0YWlscywKICBDRlN0cmluZ1Jl
ZiAqIGRlc2NyaXB0aW9uKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
IyAyNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXREaWFnbm9zdGljcy5o
IiAzCn0KIyA1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRk5ldHdvcmsuaCIg
MiAzCgoKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZQcm94eVN1
cHBvcnQuaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZQcm94
eVN1cHBvcnQuaCIgMwojZGVmaW5lIF9fQ0ZQUk9YWVNVUFBPUlRfXyAKCgojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5l
dHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZOZXR3b3JrRGVmcy5oIiAxIDMKIyAxOSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NG
TmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlByb3h5U3VwcG9ydC5oIiAyIDMKIyA3MCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlByb3h5U3VwcG9ydC5oIiAzCmV4dGVybiAi
QyIgewojIDgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGUHJveHlTdXBwb3J0
LmgiIDMKZXh0ZXJuIENGRGljdGlvbmFyeVJlZgpDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0
aW5ncyggdm9pZCApIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDEx
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlByb3h5U3VwcG9ydC5oIiAzCmV4
dGVybiBDRkFycmF5UmVmCkNGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKAogIENGVVJMUmVmIHVy
bCwKICBDRkRpY3Rpb25hcnlSZWYgcHJveHlTZXR0aW5ncykgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CiMgMTQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJz
L0NGUHJveHlTdXBwb3J0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBDRlByb3h5QXV0b0NvbmZpZ3Vy
YXRpb25SZXN1bHRDYWxsYmFjaykodm9pZCAqY2xpZW50LCBDRkFycmF5UmVmIHByb3h5TGlzdCwg
Q0ZFcnJvclJlZiBlcnJvcik7CiMgMTc5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJz
L0NGUHJveHlTdXBwb3J0LmgiIDMKZXh0ZXJuIENGQXJyYXlSZWYKQ0ZOZXR3b3JrQ29weVByb3hp
ZXNGb3JBdXRvQ29uZmlndXJhdGlvblNjcmlwdCgKICBDRlN0cmluZ1JlZiBwcm94eUF1dG9Db25m
aWd1cmF0aW9uU2NyaXB0LAogIENGVVJMUmVmIHRhcmdldFVSTCwKICBDRkVycm9yUmVmICogZXJy
b3IpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDIyNSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NG
TmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlByb3h5U3VwcG9ydC5oIiAzCmV4dGVybiBDRlJ1
bkxvb3BTb3VyY2VSZWYKQ0ZOZXR3b3JrRXhlY3V0ZVByb3h5QXV0b0NvbmZpZ3VyYXRpb25TY3Jp
cHQoCiAgQ0ZTdHJpbmdSZWYgcHJveHlBdXRvQ29uZmlndXJhdGlvblNjcmlwdCwKICBDRlVSTFJl
ZiB0YXJnZXRVUkwsCiAgQ0ZQcm94eUF1dG9Db25maWd1cmF0aW9uUmVzdWx0Q2FsbGJhY2sgY2Is
CiAgQ0ZTdHJlYW1DbGllbnRDb250ZXh0ICogY2xpZW50Q29udGV4dCkgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9I
ZWFkZXJzL0NGUHJveHlTdXBwb3J0LmgiIDMKZXh0ZXJuIENGUnVuTG9vcFNvdXJjZVJlZgpDRk5l
dHdvcmtFeGVjdXRlUHJveHlBdXRvQ29uZmlndXJhdGlvblVSTCgKICBDRlVSTFJlZiBwcm94eUF1
dG9Db25maWdVUkwsCiAgQ0ZVUkxSZWYgdGFyZ2V0VVJMLAogIENGUHJveHlBdXRvQ29uZmlndXJh
dGlvblJlc3VsdENhbGxiYWNrIGNiLAogIENGU3RyZWFtQ2xpZW50Q29udGV4dCAqIGNsaWVudENv
bnRleHQpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDI3MCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlByb3h5U3VwcG9ydC5oIiAzCmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZQcm94eVR5cGVLZXkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CiMgMjg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NG
UHJveHlTdXBwb3J0LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlByb3h5SG9zdE5h
bWVLZXkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjk4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGUHJveHlTdXBwb3J0LmgiIDMKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtDRlByb3h5UG9ydE51bWJlcktleSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKIyAzMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRl
cnMvQ0ZQcm94eVN1cHBvcnQuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGUHJveHlB
dXRvQ29uZmlndXJhdGlvblVSTEtleSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKIyAzMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZQcm94eVN1cHBv
cnQuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGUHJveHlVc2VybmFtZUtleSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAzNDYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZQcm94eVN1cHBvcnQuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NGUHJveHlQYXNzd29yZEtleSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKIyAzNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZQcm94eVN1
cHBvcnQuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGUHJveHlUeXBlTm9uZSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAzNzQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0ZQcm94eVN1cHBvcnQuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NGUHJveHlUeXBlSFRUUCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKIyAzODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrL0hlYWRlcnMvQ0ZQcm94eVN1cHBv
cnQuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGUHJveHlUeXBlSFRUUFMgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMzkyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZy
YW1ld29yay9IZWFkZXJzL0NGUHJveHlTdXBwb3J0LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtDRlByb3h5VHlwZVNPQ0tTIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwojIDQwMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlByb3h5U3VwcG9y
dC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZQcm94eVR5cGVGVFAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNDEwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1l
d29yay9IZWFkZXJzL0NGUHJveHlTdXBwb3J0LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDRlByb3h5VHlwZUF1dG9Db25maWd1cmF0aW9uVVJMIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwojIDQyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9D
RlByb3h5U3VwcG9ydC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZQcm94eUF1dG9D
b25maWd1cmF0aW9uSFRUUFJlc3BvbnNlS2V5IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwojIDQzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlByb3h5
U3VwcG9ydC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOZXR3b3JrUHJveGllc0V4
Y2VwdGlvbnNMaXN0IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDQ0
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcmsvSGVhZGVycy9DRlByb3h5U3VwcG9ydC5oIiAzCmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOZXR3b3JrUHJveGllc0V4Y2x1ZGVTaW1wbGVIb3N0
bmFtZXMgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCgpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGTmV0d29ya1Byb3hpZXNGVFBFbmFibGUgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNDU3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1l
d29yay9IZWFkZXJzL0NGUHJveHlTdXBwb3J0LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDRk5ldHdvcmtQcm94aWVzRlRQUGFzc2l2ZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOZXR3b3JrUHJv
eGllc0ZUUFBvcnQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoK
CgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGTmV0d29ya1Byb3hpZXNGVFBQcm94eSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZOZXR3b3JrUHJveGllc0dvcGhlckVuYWJsZSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZOZXR3b3JrUHJveGllc0dvcGhlclBvcnQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGTmV0d29ya1Byb3hp
ZXNHb3BoZXJQcm94eSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOZXR3b3JrUHJveGllc0hUVFBFbmFibGUg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCgpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0NGTmV0d29ya1Byb3hpZXNIVFRQUG9ydCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZOZXR3b3JrUHJveGllc0hUVFBQcm94eSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOZXR3b3JrUHJveGll
c0hUVFBTRW5hYmxlIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRk5ldHdvcmtQcm94aWVzSFRUUFNQb3J0IF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgoKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDRk5ldHdvcmtQcm94aWVzSFRUUFNQcm94eSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZOZXR3b3JrUHJveGllc1JUU1BFbmFibGUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGTmV0d29ya1Byb3hp
ZXNSVFNQUG9ydCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoK
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOZXR3b3JrUHJveGllc1JUU1BQcm94eSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZOZXR3b3JrUHJveGllc1NPQ0tTRW5hYmxlIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtD
Rk5ldHdvcmtQcm94aWVzU09DS1NQb3J0IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKCgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRk5ldHdvcmtQcm94aWVz
U09DS1NQcm94eSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoK
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOZXR3b3JrUHJveGllc1Byb3h5QXV0b0NvbmZp
Z0VuYWJsZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOZXR3b3JrUHJveGllc1Byb3h5QXV0b0NvbmZpZ1VS
TFN0cmluZyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOZXR3b3JrUHJveGllc1Byb3h5QXV0b0Rpc2NvdmVy
eUVuYWJsZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKfQojIDY0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9IZWFkZXJzL0NGTmV0d29yay5oIiAyIDMKIyAzOCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L0NvcmVTZXJ2aWNlcy5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvTGF1bmNoU2VydmljZXMuaCIgMSAzCiMgMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9MYXVuY2hTZXJ2aWNlcy5oIiAzCiNkZWZpbmUgX19MQVVOQ0hTRVJW
SUNFU19fIAoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ljb25z
Q29yZS5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0lj
b25zQ29yZS5oIiAzCiNkZWZpbmUgX19JQ09OU0NPUkVfXyAKIyAzNSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZp
Y2VzLmZyYW1ld29yay9IZWFkZXJzL0ljb25zQ29yZS5oIiAzCmV4dGVybiAiQyIgewoKCgoKZW51
bSB7CiAga0dlbmVyaWNEb2N1bWVudEljb25SZXNvdXJjZSA9IC00MDAwLAogIGtHZW5lcmljU3Rh
dGlvbmVyeUljb25SZXNvdXJjZSA9IC0zOTg1LAogIGtHZW5lcmljRWRpdGlvbkZpbGVJY29uUmVz
b3VyY2UgPSAtMzk4OSwKICBrR2VuZXJpY0FwcGxpY2F0aW9uSWNvblJlc291cmNlID0gLTM5OTYs
CiAga0dlbmVyaWNEZXNrQWNjZXNzb3J5SWNvblJlc291cmNlID0gLTM5OTEsCiAga0dlbmVyaWNG
b2xkZXJJY29uUmVzb3VyY2UgPSAtMzk5OSwKICBrUHJpdmF0ZUZvbGRlckljb25SZXNvdXJjZSA9
IC0zOTk0LAogIGtGbG9wcHlJY29uUmVzb3VyY2UgPSAtMzk5OCwKICBrVHJhc2hJY29uUmVzb3Vy
Y2UgPSAtMzk5MywKICBrR2VuZXJpY1JBTURpc2tJY29uUmVzb3VyY2UgPSAtMzk4OCwKICBrR2Vu
ZXJpY0NEUk9NSWNvblJlc291cmNlID0gLTM5ODcKfTsKCgoKZW51bSB7CiAga0Rlc2t0b3BJY29u
UmVzb3VyY2UgPSAtMzk5MiwKICBrT3BlbkZvbGRlckljb25SZXNvdXJjZSA9IC0zOTk3LAogIGtH
ZW5lcmljSGFyZERpc2tJY29uUmVzb3VyY2UgPSAtMzk5NSwKICBrR2VuZXJpY0ZpbGVTZXJ2ZXJJ
Y29uUmVzb3VyY2UgPSAtMzk3MiwKICBrR2VuZXJpY1N1aXRjYXNlSWNvblJlc291cmNlID0gLTM5
NzAsCiAga0dlbmVyaWNNb3Zlck9iamVjdEljb25SZXNvdXJjZSA9IC0zOTY5Cn07CgoKCmVudW0g
ewogIGtHZW5lcmljUHJlZmVyZW5jZXNJY29uUmVzb3VyY2UgPSAtMzk3MSwKICBrR2VuZXJpY1F1
ZXJ5RG9jdW1lbnRJY29uUmVzb3VyY2UgPSAtMTY1MDYsCiAga0dlbmVyaWNFeHRlbnNpb25JY29u
UmVzb3VyY2UgPSAtMTY0MTUsCiAga1N5c3RlbUZvbGRlckljb25SZXNvdXJjZSA9IC0zOTgzLAog
IGtIZWxwSWNvblJlc291cmNlID0gLTIwMjcxLAogIGtBcHBsZU1lbnVGb2xkZXJJY29uUmVzb3Vy
Y2UgPSAtMzk4Mgp9OwoKCmVudW0gewogIGdlbmVyaWNEb2N1bWVudEljb25SZXNvdXJjZSA9IGtH
ZW5lcmljRG9jdW1lbnRJY29uUmVzb3VyY2UsCiAgZ2VuZXJpY1N0YXRpb25lcnlJY29uUmVzb3Vy
Y2UgPSBrR2VuZXJpY1N0YXRpb25lcnlJY29uUmVzb3VyY2UsCiAgZ2VuZXJpY0VkaXRpb25GaWxl
SWNvblJlc291cmNlID0ga0dlbmVyaWNFZGl0aW9uRmlsZUljb25SZXNvdXJjZSwKICBnZW5lcmlj
QXBwbGljYXRpb25JY29uUmVzb3VyY2UgPSBrR2VuZXJpY0FwcGxpY2F0aW9uSWNvblJlc291cmNl
LAogIGdlbmVyaWNEZXNrQWNjZXNzb3J5SWNvblJlc291cmNlID0ga0dlbmVyaWNEZXNrQWNjZXNz
b3J5SWNvblJlc291cmNlLAogIGdlbmVyaWNGb2xkZXJJY29uUmVzb3VyY2UgPSBrR2VuZXJpY0Zv
bGRlckljb25SZXNvdXJjZSwKICBwcml2YXRlRm9sZGVySWNvblJlc291cmNlID0ga1ByaXZhdGVG
b2xkZXJJY29uUmVzb3VyY2UsCiAgZmxvcHB5SWNvblJlc291cmNlID0ga0Zsb3BweUljb25SZXNv
dXJjZSwKICB0cmFzaEljb25SZXNvdXJjZSA9IGtUcmFzaEljb25SZXNvdXJjZSwKICBnZW5lcmlj
UkFNRGlza0ljb25SZXNvdXJjZSA9IGtHZW5lcmljUkFNRGlza0ljb25SZXNvdXJjZSwKICBnZW5l
cmljQ0RST01JY29uUmVzb3VyY2UgPSBrR2VuZXJpY0NEUk9NSWNvblJlc291cmNlLAogIGRlc2t0
b3BJY29uUmVzb3VyY2UgPSBrRGVza3RvcEljb25SZXNvdXJjZSwKICBvcGVuRm9sZGVySWNvblJl
c291cmNlID0ga09wZW5Gb2xkZXJJY29uUmVzb3VyY2UsCiAgZ2VuZXJpY0hhcmREaXNrSWNvblJl
c291cmNlID0ga0dlbmVyaWNIYXJkRGlza0ljb25SZXNvdXJjZSwKICBnZW5lcmljRmlsZVNlcnZl
ckljb25SZXNvdXJjZSA9IGtHZW5lcmljRmlsZVNlcnZlckljb25SZXNvdXJjZSwKICBnZW5lcmlj
U3VpdGNhc2VJY29uUmVzb3VyY2UgPSBrR2VuZXJpY1N1aXRjYXNlSWNvblJlc291cmNlLAogIGdl
bmVyaWNNb3Zlck9iamVjdEljb25SZXNvdXJjZSA9IGtHZW5lcmljTW92ZXJPYmplY3RJY29uUmVz
b3VyY2UsCiAgZ2VuZXJpY1ByZWZlcmVuY2VzSWNvblJlc291cmNlID0ga0dlbmVyaWNQcmVmZXJl
bmNlc0ljb25SZXNvdXJjZSwKICBnZW5lcmljUXVlcnlEb2N1bWVudEljb25SZXNvdXJjZSA9IGtH
ZW5lcmljUXVlcnlEb2N1bWVudEljb25SZXNvdXJjZSwKICBnZW5lcmljRXh0ZW5zaW9uSWNvblJl
c291cmNlID0ga0dlbmVyaWNFeHRlbnNpb25JY29uUmVzb3VyY2UsCiAgc3lzdGVtRm9sZGVySWNv
blJlc291cmNlID0ga1N5c3RlbUZvbGRlckljb25SZXNvdXJjZSwKICBhcHBsZU1lbnVGb2xkZXJJ
Y29uUmVzb3VyY2UgPSBrQXBwbGVNZW51Rm9sZGVySWNvblJlc291cmNlCn07CgoKZW51bSB7CiAg
a1N0YXJ0dXBGb2xkZXJJY29uUmVzb3VyY2UgPSAtMzk4MSwKICBrT3duZWRGb2xkZXJJY29uUmVz
b3VyY2UgPSAtMzk4MCwKICBrRHJvcEZvbGRlckljb25SZXNvdXJjZSA9IC0zOTc5LAogIGtTaGFy
ZWRGb2xkZXJJY29uUmVzb3VyY2UgPSAtMzk3OCwKICBrTW91bnRlZEZvbGRlckljb25SZXNvdXJj
ZSA9IC0zOTc3LAogIGtDb250cm9sUGFuZWxGb2xkZXJJY29uUmVzb3VyY2UgPSAtMzk3NiwKICBr
UHJpbnRNb25pdG9yRm9sZGVySWNvblJlc291cmNlID0gLTM5NzUsCiAga1ByZWZlcmVuY2VzRm9s
ZGVySWNvblJlc291cmNlID0gLTM5NzQsCiAga0V4dGVuc2lvbnNGb2xkZXJJY29uUmVzb3VyY2Ug
PSAtMzk3MywKICBrRm9udHNGb2xkZXJJY29uUmVzb3VyY2UgPSAtMzk2OCwKICBrRnVsbFRyYXNo
SWNvblJlc291cmNlID0gLTM5ODQKfTsKCgplbnVtIHsKICBzdGFydHVwRm9sZGVySWNvblJlc291
cmNlID0ga1N0YXJ0dXBGb2xkZXJJY29uUmVzb3VyY2UsCiAgb3duZWRGb2xkZXJJY29uUmVzb3Vy
Y2UgPSBrT3duZWRGb2xkZXJJY29uUmVzb3VyY2UsCiAgZHJvcEZvbGRlckljb25SZXNvdXJjZSA9
IGtEcm9wRm9sZGVySWNvblJlc291cmNlLAogIHNoYXJlZEZvbGRlckljb25SZXNvdXJjZSA9IGtT
aGFyZWRGb2xkZXJJY29uUmVzb3VyY2UsCiAgbW91bnRlZEZvbGRlckljb25SZXNvdXJjZSA9IGtN
b3VudGVkRm9sZGVySWNvblJlc291cmNlLAogIGNvbnRyb2xQYW5lbEZvbGRlckljb25SZXNvdXJj
ZSA9IGtDb250cm9sUGFuZWxGb2xkZXJJY29uUmVzb3VyY2UsCiAgcHJpbnRNb25pdG9yRm9sZGVy
SWNvblJlc291cmNlID0ga1ByaW50TW9uaXRvckZvbGRlckljb25SZXNvdXJjZSwKICBwcmVmZXJl
bmNlc0ZvbGRlckljb25SZXNvdXJjZSA9IGtQcmVmZXJlbmNlc0ZvbGRlckljb25SZXNvdXJjZSwK
ICBleHRlbnNpb25zRm9sZGVySWNvblJlc291cmNlID0ga0V4dGVuc2lvbnNGb2xkZXJJY29uUmVz
b3VyY2UsCiAgZm9udHNGb2xkZXJJY29uUmVzb3VyY2UgPSBrRm9udHNGb2xkZXJJY29uUmVzb3Vy
Y2UsCiAgZnVsbFRyYXNoSWNvblJlc291cmNlID0ga0Z1bGxUcmFzaEljb25SZXNvdXJjZQp9OwoK
CnR5cGVkZWYgc3RydWN0IE9wYXF1ZUljb25SZWYqIEljb25SZWY7CiMgMTUyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNo
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvbnNDb3JlLmgiIDMKZW51bSB7CiAga1N5c3Rl
bUljb25zQ3JlYXRvciA9ICdtYWNzJwp9OwojIDE2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzL0ljb25zQ29yZS5oIiAzCmVudW0gewogIGtDbGlwYm9hcmRJY29uID0gJ0NM
SVAnLAogIGtDbGlwcGluZ1Vua25vd25UeXBlSWNvbiA9ICdjbHB1JywKICBrQ2xpcHBpbmdQaWN0
dXJlVHlwZUljb24gPSAnY2xwcCcsCiAga0NsaXBwaW5nVGV4dFR5cGVJY29uID0gJ2NscHQnLAog
IGtDbGlwcGluZ1NvdW5kVHlwZUljb24gPSAnY2xwcycsCiAga0Rlc2t0b3BJY29uID0gJ2Rlc2sn
LAogIGtGaW5kZXJJY29uID0gJ0ZORFInLAogIGtDb21wdXRlckljb24gPSAncm9vdCcsCiAga0Zv
bnRTdWl0Y2FzZUljb24gPSAnRkZJTCcsCiAga0Z1bGxUcmFzaEljb24gPSAnZnRyaCcsCiAga0dl
bmVyaWNBcHBsaWNhdGlvbkljb24gPSAnQVBQTCcsCiAga0dlbmVyaWNDRFJPTUljb24gPSAnY2Rk
cicsCiAga0dlbmVyaWNDb250cm9sUGFuZWxJY29uID0gJ0FQUEMnLAogIGtHZW5lcmljQ29udHJv
bFN0cmlwTW9kdWxlSWNvbiA9ICdzZGV2JywKICBrR2VuZXJpY0NvbXBvbmVudEljb24gPSAndGhu
ZycsCiAga0dlbmVyaWNEZXNrQWNjZXNzb3J5SWNvbiA9ICdBUFBEJywKICBrR2VuZXJpY0RvY3Vt
ZW50SWNvbiA9ICdkb2N1JywKICBrR2VuZXJpY0VkaXRpb25GaWxlSWNvbiA9ICdlZHRmJywKICBr
R2VuZXJpY0V4dGVuc2lvbkljb24gPSAnSU5JVCcsCiAga0dlbmVyaWNGaWxlU2VydmVySWNvbiA9
ICdzcnZyJywKICBrR2VuZXJpY0ZvbnRJY29uID0gJ2ZmaWwnLAogIGtHZW5lcmljRm9udFNjYWxl
ckljb24gPSAnc2NscicsCiAga0dlbmVyaWNGbG9wcHlJY29uID0gJ2ZscHknLAogIGtHZW5lcmlj
SGFyZERpc2tJY29uID0gJ2hkc2snLAogIGtHZW5lcmljSURpc2tJY29uID0gJ2lkc2snLAogIGtH
ZW5lcmljUmVtb3ZhYmxlTWVkaWFJY29uID0gJ3Jtb3YnLAogIGtHZW5lcmljTW92ZXJPYmplY3RJ
Y29uID0gJ21vdnInLAogIGtHZW5lcmljUENDYXJkSWNvbiA9ICdwY21jJywKICBrR2VuZXJpY1By
ZWZlcmVuY2VzSWNvbiA9ICdwcmVmJywKICBrR2VuZXJpY1F1ZXJ5RG9jdW1lbnRJY29uID0gJ3Fl
cnknLAogIGtHZW5lcmljUkFNRGlza0ljb24gPSAncmFtZCcsCiAga0dlbmVyaWNTaGFyZWRMaWJh
cnlJY29uID0gJ3NobGInLAogIGtHZW5lcmljU3RhdGlvbmVyeUljb24gPSAnc2RvYycsCiAga0dl
bmVyaWNTdWl0Y2FzZUljb24gPSAnc3VpdCcsCiAga0dlbmVyaWNVUkxJY29uID0gJ2d1cmwnLAog
IGtHZW5lcmljV09STUljb24gPSAnd29ybScsCiAga0ludGVybmF0aW9uYWxSZXNvdXJjZXNJY29u
ID0gJ2lmaWwnLAogIGtLZXlib2FyZExheW91dEljb24gPSAna2ZpbCcsCiAga1NvdW5kRmlsZUlj
b24gPSAnc2ZpbCcsCiAga1N5c3RlbVN1aXRjYXNlSWNvbiA9ICd6c3lzJywKICBrVHJhc2hJY29u
ID0gJ3Ryc2gnLAogIGtUcnVlVHlwZUZvbnRJY29uID0gJ3RmaWwnLAogIGtUcnVlVHlwZUZsYXRG
b250SWNvbiA9ICdzZm50JywKICBrVHJ1ZVR5cGVNdWx0aUZsYXRGb250SWNvbiA9ICd0dGNmJywK
ICBrVXNlcklEaXNrSWNvbiA9ICd1ZHNrJywKICBrVW5rbm93bkZTT2JqZWN0SWNvbiA9ICd1bmZz
JywKICBrSW50ZXJuYXRpb25SZXNvdXJjZXNJY29uID0ga0ludGVybmF0aW9uYWxSZXNvdXJjZXNJ
Y29uCn07CgoKZW51bSB7CiAga0ludGVybmV0TG9jYXRpb25IVFRQSWNvbiA9ICdpbGh0JywKICBr
SW50ZXJuZXRMb2NhdGlvbkZUUEljb24gPSAnaWxmdCcsCiAga0ludGVybmV0TG9jYXRpb25BcHBs
ZVNoYXJlSWNvbiA9ICdpbGFmJywKICBrSW50ZXJuZXRMb2NhdGlvbkFwcGxlVGFsa1pvbmVJY29u
ID0gJ2lsYXQnLAogIGtJbnRlcm5ldExvY2F0aW9uRmlsZUljb24gPSAnaWxmaScsCiAga0ludGVy
bmV0TG9jYXRpb25NYWlsSWNvbiA9ICdpbG1hJywKICBrSW50ZXJuZXRMb2NhdGlvbk5ld3NJY29u
ID0gJ2lsbncnLAogIGtJbnRlcm5ldExvY2F0aW9uTlNMTmVpZ2hib3Job29kSWNvbiA9ICdpbG5z
JywKICBrSW50ZXJuZXRMb2NhdGlvbkdlbmVyaWNJY29uID0gJ2lsZ2UnCn07CgoKZW51bSB7CiAg
a0dlbmVyaWNGb2xkZXJJY29uID0gJ2ZsZHInLAogIGtEcm9wRm9sZGVySWNvbiA9ICdkYm94JywK
ICBrTW91bnRlZEZvbGRlckljb24gPSAnbW50ZCcsCiAga09wZW5Gb2xkZXJJY29uID0gJ29mbGQn
LAogIGtPd25lZEZvbGRlckljb24gPSAnb3duZCcsCiAga1ByaXZhdGVGb2xkZXJJY29uID0gJ3By
dmYnLAogIGtTaGFyZWRGb2xkZXJJY29uID0gJ3NoZmwnCn07CgoKZW51bSB7CiAga1NoYXJpbmdQ
cml2c05vdEFwcGxpY2FibGVJY29uID0gJ3NobmEnLAogIGtTaGFyaW5nUHJpdnNSZWFkT25seUlj
b24gPSAnc2hybycsCiAga1NoYXJpbmdQcml2c1JlYWRXcml0ZUljb24gPSAnc2hydycsCiAga1No
YXJpbmdQcml2c1Vua25vd25JY29uID0gJ3NodWsnLAogIGtTaGFyaW5nUHJpdnNXcml0YWJsZUlj
b24gPSAnd3JpdCcKfTsKCgoKZW51bSB7CiAga1VzZXJGb2xkZXJJY29uID0gJ3VmbGQnLAogIGtX
b3JrZ3JvdXBGb2xkZXJJY29uID0gJ3dmbGQnLAogIGtHdWVzdFVzZXJJY29uID0gJ2d1c3InLAog
IGtVc2VySWNvbiA9ICd1c2VyJywKICBrT3duZXJJY29uID0gJ3N1c3InLAogIGtHcm91cEljb24g
PSAnZ3J1cCcKfTsKCgplbnVtIHsKICBrQXBwZWFyYW5jZUZvbGRlckljb24gPSAnYXBwcicsCiAg
a0FwcGxlRXh0cmFzRm9sZGVySWNvbiA9IDB4NjE2NTc4QzQgLAogIGtBcHBsZU1lbnVGb2xkZXJJ
Y29uID0gJ2FtbnUnLAogIGtBcHBsaWNhdGlvbnNGb2xkZXJJY29uID0gJ2FwcHMnLAogIGtBcHBs
aWNhdGlvblN1cHBvcnRGb2xkZXJJY29uID0gJ2FzdXAnLAogIGtBc3Npc3RhbnRzRm9sZGVySWNv
biA9IDB4NjE3Mzc0QzQgLAogIGtDb2xvclN5bmNGb2xkZXJJY29uID0gJ3Byb2YnLAogIGtDb250
ZXh0dWFsTWVudUl0ZW1zRm9sZGVySWNvbiA9ICdjbW51JywKICBrQ29udHJvbFBhbmVsRGlzYWJs
ZWRGb2xkZXJJY29uID0gJ2N0ckQnLAogIGtDb250cm9sUGFuZWxGb2xkZXJJY29uID0gJ2N0cmwn
LAogIGtDb250cm9sU3RyaXBNb2R1bGVzRm9sZGVySWNvbiA9IDB4NzM2NDc2QzQgLAogIGtEb2N1
bWVudHNGb2xkZXJJY29uID0gJ2RvY3MnLAogIGtFeHRlbnNpb25zRGlzYWJsZWRGb2xkZXJJY29u
ID0gJ2V4dEQnLAogIGtFeHRlbnNpb25zRm9sZGVySWNvbiA9ICdleHRuJywKICBrRmF2b3JpdGVz
Rm9sZGVySWNvbiA9ICdmYXZzJywKICBrRm9udHNGb2xkZXJJY29uID0gJ2ZvbnQnLAogIGtIZWxw
Rm9sZGVySWNvbiA9IChpbnQpMHhDNDY4NkM3MCAsCiAga0ludGVybmV0Rm9sZGVySWNvbiA9IDB4
Njk2RTc0QzQgLAogIGtJbnRlcm5ldFBsdWdJbkZvbGRlckljb24gPSAoaW50KTB4QzQ2RTY1NzQg
LAogIGtJbnRlcm5ldFNlYXJjaFNpdGVzRm9sZGVySWNvbiA9ICdpc3NmJywKICBrTG9jYWxlc0Zv
bGRlckljb24gPSAoaW50KTB4QzQ2QzZGNjMgLAogIGtNYWNPU1JlYWRNZUZvbGRlckljb24gPSAw
eDZENkY3MkM0ICwKICBrUHVibGljRm9sZGVySWNvbiA9ICdwdWJmJywKICBrUHJlZmVyZW5jZXNG
b2xkZXJJY29uID0gMHg3MDcyNjZDNCAsCiAga1ByaW50ZXJEZXNjcmlwdGlvbkZvbGRlckljb24g
PSAncHBkZicsCiAga1ByaW50ZXJEcml2ZXJGb2xkZXJJY29uID0gKGludCkweEM0NzA3MjY0ICwK
ICBrUHJpbnRNb25pdG9yRm9sZGVySWNvbiA9ICdwcm50JywKICBrUmVjZW50QXBwbGljYXRpb25z
Rm9sZGVySWNvbiA9ICdyYXBwJywKICBrUmVjZW50RG9jdW1lbnRzRm9sZGVySWNvbiA9ICdyZG9j
JywKICBrUmVjZW50U2VydmVyc0ZvbGRlckljb24gPSAncnNydicsCiAga1NjcmlwdGluZ0FkZGl0
aW9uc0ZvbGRlckljb24gPSAoaW50KTB4QzQ3MzYzNzIgLAogIGtTaGFyZWRMaWJyYXJpZXNGb2xk
ZXJJY29uID0gKGludCkweEM0NkM2OTYyICwKICBrU2NyaXB0c0ZvbGRlckljb24gPSAweDczNjM3
MkM0ICwKICBrU2h1dGRvd25JdGVtc0Rpc2FibGVkRm9sZGVySWNvbiA9ICdzaGREJywKICBrU2h1
dGRvd25JdGVtc0ZvbGRlckljb24gPSAnc2hkZicsCiAga1NwZWFrYWJsZUl0ZW1zRm9sZGVyID0g
J3Nwa2knLAogIGtTdGFydHVwSXRlbXNEaXNhYmxlZEZvbGRlckljb24gPSAnc3RyRCcsCiAga1N0
YXJ0dXBJdGVtc0ZvbGRlckljb24gPSAnc3RydCcsCiAga1N5c3RlbUV4dGVuc2lvbkRpc2FibGVk
Rm9sZGVySWNvbiA9ICdtYWNEJywKICBrU3lzdGVtRm9sZGVySWNvbiA9ICdtYWNzJywKICBrVGV4
dEVuY29kaW5nc0ZvbGRlckljb24gPSAoaW50KTB4QzQ3NDY1NzggLAogIGtVc2Vyc0ZvbGRlcklj
b24gPSAweDc1NzM3MkM0ICwKICBrVXRpbGl0aWVzRm9sZGVySWNvbiA9IDB4NzU3NDY5QzQgLAog
IGtWb2ljZXNGb2xkZXJJY29uID0gJ2Z2b2MnCn07CgoKZW51bSB7CiAga0FwcGxlU2NyaXB0QmFk
Z2VJY29uID0gJ3NjcnAnLAogIGtMb2NrZWRCYWRnZUljb24gPSAnbGJkZycsCiAga01vdW50ZWRC
YWRnZUljb24gPSAnbWJkZycsCiAga1NoYXJlZEJhZGdlSWNvbiA9ICdzYmRnJywKICBrQWxpYXNC
YWRnZUljb24gPSAnYWJkZycsCiAga0FsZXJ0Q2F1dGlvbkJhZGdlSWNvbiA9ICdjYmRnJwp9OwoK
CmVudW0gewogIGtBbGVydE5vdGVJY29uID0gJ25vdGUnLAogIGtBbGVydENhdXRpb25JY29uID0g
J2NhdXQnLAogIGtBbGVydFN0b3BJY29uID0gJ3N0b3AnCn07CgoKZW51bSB7CiAga0FwcGxlVGFs
a0ljb24gPSAnYXRsaycsCiAga0FwcGxlVGFsa1pvbmVJY29uID0gJ2F0em4nLAogIGtBRlBTZXJ2
ZXJJY29uID0gJ2FmcHMnLAogIGtGVFBTZXJ2ZXJJY29uID0gJ2Z0cHMnLAogIGtIVFRQU2VydmVy
SWNvbiA9ICdodHBzJywKICBrR2VuZXJpY05ldHdvcmtJY29uID0gJ2duZXQnLAogIGtJUEZpbGVT
ZXJ2ZXJJY29uID0gJ2lzcnYnCn07CgoKZW51bSB7CiAga1Rvb2xiYXJDdXN0b21pemVJY29uID0g
J3RjdXMnLAogIGtUb29sYmFyRGVsZXRlSWNvbiA9ICd0ZGVsJywKICBrVG9vbGJhckZhdm9yaXRl
c0ljb24gPSAndGZhdicsCiAga1Rvb2xiYXJIb21lSWNvbiA9ICd0aG9tJywKICBrVG9vbGJhckFk
dmFuY2VkSWNvbiA9ICd0YmF2JywKICBrVG9vbGJhckluZm9JY29uID0gJ3RiaW4nLAogIGtUb29s
YmFyTGFiZWxzSWNvbiA9ICd0YmxiJywKICBrVG9vbGJhckFwcGxpY2F0aW9uc0ZvbGRlckljb24g
PSAndEFwcycsCiAga1Rvb2xiYXJEb2N1bWVudHNGb2xkZXJJY29uID0gJ3REb2MnLAogIGtUb29s
YmFyTW92aWVGb2xkZXJJY29uID0gJ3RNb3YnLAogIGtUb29sYmFyTXVzaWNGb2xkZXJJY29uID0g
J3RNdXMnLAogIGtUb29sYmFyUGljdHVyZXNGb2xkZXJJY29uID0gJ3RQaWMnLAogIGtUb29sYmFy
UHVibGljRm9sZGVySWNvbiA9ICd0UHViJywKICBrVG9vbGJhckRlc2t0b3BGb2xkZXJJY29uID0g
J3REc2snLAogIGtUb29sYmFyRG93bmxvYWRzRm9sZGVySWNvbiA9ICd0RHduJywKICBrVG9vbGJh
ckxpYnJhcnlGb2xkZXJJY29uID0gJ3RMaWInLAogIGtUb29sYmFyVXRpbGl0aWVzRm9sZGVySWNv
biA9ICd0VXRsJywKICBrVG9vbGJhclNpdGVzRm9sZGVySWNvbiA9ICd0U3RzJwp9OwoKCmVudW0g
ewogIGtBcHBsZUxvZ29JY29uID0gJ2NhcGwnLAogIGtBcHBsZU1lbnVJY29uID0gJ3NhcGwnLAog
IGtCYWNrd2FyZEFycm93SWNvbiA9ICdiYXJvJywKICBrRmF2b3JpdGVJdGVtc0ljb24gPSAnZmF2
cicsCiAga0ZvcndhcmRBcnJvd0ljb24gPSAnZmFybycsCiAga0dyaWRJY29uID0gJ2dyaWQnLAog
IGtIZWxwSWNvbiA9ICdoZWxwJywKICBrS2VlcEFycmFuZ2VkSWNvbiA9ICdhcm5nJywKICBrTG9j
a2VkSWNvbiA9ICdsb2NrJywKICBrTm9GaWxlc0ljb24gPSAnbmZpbCcsCiAga05vRm9sZGVySWNv
biA9ICduZmxkJywKICBrTm9Xcml0ZUljb24gPSAnbndydCcsCiAga1Byb3RlY3RlZEFwcGxpY2F0
aW9uRm9sZGVySWNvbiA9ICdwYXBwJywKICBrUHJvdGVjdGVkU3lzdGVtRm9sZGVySWNvbiA9ICdw
c3lzJywKICBrUmVjZW50SXRlbXNJY29uID0gJ3JjbnQnLAogIGtTaG9ydGN1dEljb24gPSAnc2hy
dCcsCiAga1NvcnRBc2NlbmRpbmdJY29uID0gJ2FzbmQnLAogIGtTb3J0RGVzY2VuZGluZ0ljb24g
PSAnZHNuZCcsCiAga1VubG9ja2VkSWNvbiA9ICd1bGNrJywKICBrQ29ubmVjdFRvSWNvbiA9ICdj
bmN0JywKICBrR2VuZXJpY1dpbmRvd0ljb24gPSAnZ3dpbicsCiAga1F1ZXN0aW9uTWFya0ljb24g
PSAncXVlcycsCiAga0RlbGV0ZUFsaWFzSWNvbiA9ICdkYWxpJywKICBrRWplY3RNZWRpYUljb24g
PSAnZWplYycsCiAga0J1cm5pbmdJY29uID0gJ2J1cm4nLAogIGtSaWdodENvbnRhaW5lckFycm93
SWNvbiA9ICdyY2FyJwp9OwoKCgp0eXBlZGVmIFVJbnQzMiBJY29uU2VydmljZXNVc2FnZUZsYWdz
OwplbnVtIHsKICBrSWNvblNlcnZpY2VzTm9ybWFsVXNhZ2VGbGFnID0gMHgwMDAwMDAwMCwKICBr
SWNvblNlcnZpY2VzTm9CYWRnZUZsYWcgPSAweDAwMDAwMDAxLAogIGtJY29uU2VydmljZXNVcGRh
dGVJZk5lZWRlZEZsYWcgPSAweDAwMDAwMDAyCn07CiMgNDAzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvSWNvbnNDb3JlLmgiIDMKZW51bSB7CiAga0ljb25TZXJ2aWNlc0Nh
dGFsb2dJbmZvTWFzayA9IChrRlNDYXRJbmZvTm9kZUlEIHwga0ZTQ2F0SW5mb1BhcmVudERpcklE
IHwga0ZTQ2F0SW5mb1ZvbHVtZSB8IGtGU0NhdEluZm9Ob2RlRmxhZ3MgfCBrRlNDYXRJbmZvRmlu
ZGVySW5mbyB8IGtGU0NhdEluZm9GaW5kZXJYSW5mbyB8IGtGU0NhdEluZm9Vc2VyQWNjZXNzIHwg
a0ZTQ2F0SW5mb1Blcm1pc3Npb25zIHwga0ZTQ2F0SW5mb0NvbnRlbnRNb2QpCn07CiMgNDM0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvbnNDb3JlLmgiIDMKZXh0ZXJu
IE9TRXJyCkdldEljb25SZWZPd25lcnMoCiAgSWNvblJlZiB0aGVJY29uUmVmLAogIFVJbnQxNiAq
IG93bmVycykgOwojIDQ1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0lj
b25zQ29yZS5oIiAzCmV4dGVybiBPU0VycgpBY3F1aXJlSWNvblJlZihJY29uUmVmIHRoZUljb25S
ZWYpIDsKIyA0ODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JY29uc0Nv
cmUuaCIgMwpleHRlcm4gT1NFcnIKUmVsZWFzZUljb25SZWYoSWNvblJlZiB0aGVJY29uUmVmKSA7
CiMgNTYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvbnNDb3JlLmgi
IDMKZXh0ZXJuIE9TRXJyCkdldEljb25SZWYoCiAgU0ludDE2IHZSZWZOdW0sCiAgT1NUeXBlIGNy
ZWF0b3IsCiAgT1NUeXBlIGljb25UeXBlLAogIEljb25SZWYgKiB0aGVJY29uUmVmKSA7CiMgNTkz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvbnNDb3JlLmgiIDMKZXh0
ZXJuIE9TRXJyCkdldEljb25SZWZGcm9tRm9sZGVyKAogIFNJbnQxNiB2UmVmTnVtLAogIFNJbnQz
MiBwYXJlbnRGb2xkZXJJRCwKICBTSW50MzIgZm9sZGVySUQsCiAgU0ludDggYXR0cmlidXRlcywK
ICBTSW50OCBhY2Nlc3NQcml2aWxlZ2VzLAogIEljb25SZWYgKiB0aGVJY29uUmVmKSA7CiMgNjUz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvbnNDb3JlLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzCkdldEljb25SZWZGcm9tRmlsZUluZm8oCiAgY29uc3QgRlNSZWYgKiBpblJl
ZiwKICBVbmlDaGFyQ291bnQgaW5GaWxlTmFtZUxlbmd0aCwKICBjb25zdCBVbmlDaGFyICogaW5G
aWxlTmFtZSwKICBGU0NhdGFsb2dJbmZvQml0bWFwIGluV2hpY2hJbmZvLAogIGNvbnN0IEZTQ2F0
YWxvZ0luZm8gKiBpbkNhdGFsb2dJbmZvLAogIEljb25TZXJ2aWNlc1VzYWdlRmxhZ3MgaW5Vc2Fn
ZUZsYWdzLAogIEljb25SZWYgKiBvdXRJY29uUmVmLAogIFNJbnQxNiAqIG91dExhYmVsKSA7CiMg
NzA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvbnNDb3JlLmgiIDMK
ZXh0ZXJuIE9TRXJyCkdldEljb25SZWZGcm9tVHlwZUluZm8oCiAgT1NUeXBlIGluQ3JlYXRvciwK
ICBPU1R5cGUgaW5UeXBlLAogIENGU3RyaW5nUmVmIGluRXh0ZW5zaW9uLAogIENGU3RyaW5nUmVm
IGluTUlNRVR5cGUsCiAgSWNvblNlcnZpY2VzVXNhZ2VGbGFncyBpblVzYWdlRmxhZ3MsCiAgSWNv
blJlZiAqIG91dEljb25SZWYpIDsKIyA3NDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9JY29uc0NvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKR2V0SWNvblJlZkZyb21JY29u
RmFtaWx5UHRyKAogIGNvbnN0IEljb25GYW1pbHlSZXNvdXJjZSAqIGluSWNvbkZhbWlseVB0ciwK
ICBTaXplIGluU2l6ZSwKICBJY29uUmVmICogb3V0SWNvblJlZikgOwojIDc4NCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5j
aFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ljb25zQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1
cwpHZXRJY29uUmVmRnJvbUNvbXBvbmVudCgKICBDb21wb25lbnQgaW5Db21wb25lbnQsCiAgSWNv
blJlZiAqIG91dEljb25SZWYpIDsKIyA4MjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9JY29uc0NvcmUuaCIgMwpleHRlcm4gT1NFcnIKUmVnaXN0ZXJJY29uUmVmRnJvbUlj
b25GYW1pbHkoCiAgT1NUeXBlIGNyZWF0b3IsCiAgT1NUeXBlIGljb25UeXBlLAogIEljb25GYW1p
bHlIYW5kbGUgaWNvbkZhbWlseSwKICBJY29uUmVmICogdGhlSWNvblJlZikgOwojIDg5MyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ljb25zQ29yZS5oIiAzCmV4dGVybiBP
U1N0YXR1cwpSZWdpc3Rlckljb25SZWZGcm9tRlNSZWYoCiAgT1NUeXBlIGNyZWF0b3IsCiAgT1NU
eXBlIGljb25UeXBlLAogIGNvbnN0IEZTUmVmICogaWNvbkZpbGUsCiAgSWNvblJlZiAqIHRoZUlj
b25SZWYpIDsKIyA5MjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JY29u
c0NvcmUuaCIgMwpleHRlcm4gT1NFcnIKVW5yZWdpc3Rlckljb25SZWYoCiAgT1NUeXBlIGNyZWF0
b3IsCiAgT1NUeXBlIGljb25UeXBlKSA7CiMgOTUxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvSWNvbnNDb3JlLmgiIDMKZXh0ZXJuIE9TRXJyClVwZGF0ZUljb25SZWYoSWNv
blJlZiB0aGVJY29uUmVmKSA7CiMgMTAwNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL0ljb25zQ29yZS5oIiAzCmV4dGVybiBPU0VycgpPdmVycmlkZUljb25SZWYoCiAgSWNv
blJlZiBvbGRJY29uUmVmLAogIEljb25SZWYgbmV3SWNvblJlZikgOwojIDEwMjkgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVu
Y2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JY29uc0NvcmUuaCIgMwpleHRlcm4gT1NFcnIK
UmVtb3ZlSWNvblJlZk92ZXJyaWRlKEljb25SZWYgdGhlSWNvblJlZikgOwojIDEwNTkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9M
YXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JY29uc0NvcmUuaCIgMwpleHRlcm4gT1NF
cnIKQ29tcG9zaXRlSWNvblJlZigKICBJY29uUmVmIGJhY2tncm91bmRJY29uUmVmLAogIEljb25S
ZWYgZm9yZWdyb3VuZEljb25SZWYsCiAgSWNvblJlZiAqIGNvbXBvc2l0ZUljb25SZWYpIDsKIyAx
MDg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvbnNDb3JlLmgiIDMK
ZXh0ZXJuIE9TRXJyCklzSWNvblJlZkNvbXBvc2l0ZSgKICBJY29uUmVmIGNvbXBvc2l0ZUljb25S
ZWYsCiAgSWNvblJlZiAqIGJhY2tncm91bmRJY29uUmVmLAogIEljb25SZWYgKiBmb3JlZ3JvdW5k
SWNvblJlZikgOwojIDExMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9J
Y29uc0NvcmUuaCIgMwpleHRlcm4gQm9vbGVhbgpJc1ZhbGlkSWNvblJlZihJY29uUmVmIHRoZUlj
b25SZWYpIDsKIyAxMTQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNv
bnNDb3JlLmgiIDMKZXh0ZXJuIEJvb2xlYW4KSXNEYXRhQXZhaWxhYmxlSW5JY29uUmVmKAogIE9T
VHlwZSBpbkljb25LaW5kLAogIEljb25SZWYgaW5JY29uUmVmKSA7CiMgMTIzOCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5j
aFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ljb25zQ29yZS5oIiAzCmV4dGVybiBPU0VycgpT
ZXRDdXN0b21JY29uc0VuYWJsZWQoCiAgU0ludDE2IHZSZWZOdW0sCiAgQm9vbGVhbiBlbmFibGVD
dXN0b21JY29ucykgOwojIDEyNjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9JY29uc0NvcmUuaCIgMwpleHRlcm4gT1NFcnIKR2V0Q3VzdG9tSWNvbnNFbmFibGVkKAogIFNJ
bnQxNiB2UmVmTnVtLAogIEJvb2xlYW4gKiBjdXN0b21JY29uc0VuYWJsZWQpIDsKIyAxMzgxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvbnNDb3JlLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzClJlYWRJY29uRnJvbUZTUmVmKAogIGNvbnN0IEZTUmVmICogcmVmLAogIEljb25G
YW1pbHlIYW5kbGUgKiBpY29uRmFtaWx5KSA7CgoKCgp9CiMgMjIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNl
cy5mcmFtZXdvcmsvSGVhZGVycy9MYXVuY2hTZXJ2aWNlcy5oIiAyIDMKCgoKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1
bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNJbmZvLmgiIDEgMwojIDE3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1
bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNJbmZvLmgiIDMKI2RlZmluZSBfX0xTSU5G
T19fIAojIDM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNJbmZvLmgi
IDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgoKCgoKZW51bSB7CiAga0xT
QXBwSW5UcmFzaEVyciA9IC0xMDY2MCwKICBrTFNFeGVjdXRhYmxlSW5jb3JyZWN0Rm9ybWF0ID0g
LTEwNjYxLAogIGtMU0F0dHJpYnV0ZU5vdEZvdW5kRXJyID0gLTEwNjYyLAogIGtMU0F0dHJpYnV0
ZU5vdFNldHRhYmxlRXJyID0gLTEwNjYzLAogIGtMU0luY29tcGF0aWJsZUFwcGxpY2F0aW9uVmVy
c2lvbkVyciA9IC0xMDY2NCwKICBrTFNOb1Jvc2V0dGFFbnZpcm9ubWVudEVyciA9IC0xMDY2NSwK
ICBrTFNVbmtub3duRXJyID0gLTEwODEwLAogIGtMU05vdEFuQXBwbGljYXRpb25FcnIgPSAtMTA4
MTEsCiAga0xTTm90SW5pdGlhbGl6ZWRFcnIgPSAtMTA4MTIsCiAga0xTRGF0YVVuYXZhaWxhYmxl
RXJyID0gLTEwODEzLAogIGtMU0FwcGxpY2F0aW9uTm90Rm91bmRFcnIgPSAtMTA4MTQsCiAga0xT
VW5rbm93blR5cGVFcnIgPSAtMTA4MTUsCiAga0xTRGF0YVRvb09sZEVyciA9IC0xMDgxNiwKICBr
TFNEYXRhRXJyID0gLTEwODE3LAogIGtMU0xhdW5jaEluUHJvZ3Jlc3NFcnIgPSAtMTA4MTgsCiAg
a0xTTm90UmVnaXN0ZXJlZEVyciA9IC0xMDgxOSwKICBrTFNBcHBEb2VzTm90Q2xhaW1UeXBlRXJy
ID0gLTEwODIwLAogIGtMU0FwcERvZXNOb3RTdXBwb3J0U2NoZW1lV2FybmluZyA9IC0xMDgyMSwK
ICBrTFNTZXJ2ZXJDb21tdW5pY2F0aW9uRXJyID0gLTEwODIyLAogIGtMU0Nhbm5vdFNldEluZm9F
cnIgPSAtMTA4MjMsCiAga0xTTm9SZWdpc3RyYXRpb25JbmZvRXJyID0gLTEwODI0LAogIGtMU0lu
Y29tcGF0aWJsZVN5c3RlbVZlcnNpb25FcnIgPSAtMTA4MjUsCiAga0xTTm9MYXVuY2hQZXJtaXNz
aW9uRXJyID0gLTEwODI2LAogIGtMU05vRXhlY3V0YWJsZUVyciA9IC0xMDgyNywKICBrTFNOb0Ns
YXNzaWNFbnZpcm9ubWVudEVyciA9IC0xMDgyOCwKICBrTFNNdWx0aXBsZVNlc3Npb25zTm90U3Vw
cG9ydGVkRXJyID0gLTEwODI5Cn07Cgp0eXBlZGVmIE9wdGlvbkJpdHMgTFNJbml0aWFsaXplRmxh
Z3M7CmVudW0gewogIGtMU0luaXRpYWxpemVEZWZhdWx0cyA9IDB4MDAwMDAwMDEKfTsKCmVudW0g
ewogIGtMU01pbkNhdEluZm9CaXRtYXAgPSAoa0ZTQ2F0SW5mb05vZGVGbGFncyB8IGtGU0NhdElu
Zm9QYXJlbnREaXJJRCB8IGtGU0NhdEluZm9GaW5kZXJJbmZvIHwga0ZTQ2F0SW5mb0ZpbmRlclhJ
bmZvKQp9OwoKI2RlZmluZSBrTFNJbnZhbGlkRXh0ZW5zaW9uSW5kZXggVUxPTkdfTUFYCnR5cGVk
ZWYgT3B0aW9uQml0cyBMU1JlcXVlc3RlZEluZm87CmVudW0gewogIGtMU1JlcXVlc3RFeHRlbnNp
b24gPSAweDAwMDAwMDAxLAogIGtMU1JlcXVlc3RUeXBlQ3JlYXRvciA9IDB4MDAwMDAwMDIsCiAg
a0xTUmVxdWVzdEJhc2ljRmxhZ3NPbmx5ID0gMHgwMDAwMDAwNCwKICBrTFNSZXF1ZXN0QXBwVHlw
ZUZsYWdzID0gMHgwMDAwMDAwOCwKICBrTFNSZXF1ZXN0QWxsRmxhZ3MgPSAweDAwMDAwMDEwLAog
IGtMU1JlcXVlc3RJY29uQW5kS2luZCA9IDB4MDAwMDAwMjAsCiAga0xTUmVxdWVzdEV4dGVuc2lv
bkZsYWdzT25seSA9IDB4MDAwMDAwNDAsCiAga0xTUmVxdWVzdEFsbEluZm8gPSAoVUludDMyKTB4
RkZGRkZGRkYKfTsKCnR5cGVkZWYgT3B0aW9uQml0cyBMU0l0ZW1JbmZvRmxhZ3M7CmVudW0gewog
IGtMU0l0ZW1JbmZvSXNQbGFpbkZpbGUgPSAweDAwMDAwMDAxLAogIGtMU0l0ZW1JbmZvSXNQYWNr
YWdlID0gMHgwMDAwMDAwMiwKICBrTFNJdGVtSW5mb0lzQXBwbGljYXRpb24gPSAweDAwMDAwMDA0
LAogIGtMU0l0ZW1JbmZvSXNDb250YWluZXIgPSAweDAwMDAwMDA4LAogIGtMU0l0ZW1JbmZvSXNB
bGlhc0ZpbGUgPSAweDAwMDAwMDEwLAogIGtMU0l0ZW1JbmZvSXNTeW1saW5rID0gMHgwMDAwMDAy
MCwKICBrTFNJdGVtSW5mb0lzSW52aXNpYmxlID0gMHgwMDAwMDA0MCwKICBrTFNJdGVtSW5mb0lz
TmF0aXZlQXBwID0gMHgwMDAwMDA4MCwKICBrTFNJdGVtSW5mb0lzQ2xhc3NpY0FwcCA9IDB4MDAw
MDAxMDAsCiAga0xTSXRlbUluZm9BcHBQcmVmZXJzTmF0aXZlID0gMHgwMDAwMDIwMCwKICBrTFNJ
dGVtSW5mb0FwcFByZWZlcnNDbGFzc2ljID0gMHgwMDAwMDQwMCwKICBrTFNJdGVtSW5mb0FwcElz
U2NyaXB0YWJsZSA9IDB4MDAwMDA4MDAsCiAga0xTSXRlbUluZm9Jc1ZvbHVtZSA9IDB4MDAwMDEw
MDAsCiAga0xTSXRlbUluZm9FeHRlbnNpb25Jc0hpZGRlbiA9IDB4MDAxMDAwMDAKfTsKCnR5cGVk
ZWYgT3B0aW9uQml0cyBMU1JvbGVzTWFzazsKZW51bSB7CiAga0xTUm9sZXNOb25lID0gMHgwMDAw
MDAwMSwKICBrTFNSb2xlc1ZpZXdlciA9IDB4MDAwMDAwMDIsCiAga0xTUm9sZXNFZGl0b3IgPSAw
eDAwMDAwMDA0LAogIGtMU1JvbGVzU2hlbGwgPSAweDAwMDAwMDA4LAogIGtMU1JvbGVzQWxsID0g
KFVJbnQzMikweEZGRkZGRkZGCn07CiMgMTI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvTFNJbmZvLmgiIDMKZW51bSB7CiAga0xTVW5rbm93blR5cGUgPSAwLAogIGtMU1Vu
a25vd25DcmVhdG9yID0gMAp9OwoKc3RydWN0IExTSXRlbUluZm9SZWNvcmQgewogIExTSXRlbUlu
Zm9GbGFncyBmbGFnczsKICBPU1R5cGUgZmlsZXR5cGU7CiAgT1NUeXBlIGNyZWF0b3I7CiAgQ0ZT
dHJpbmdSZWYgZXh0ZW5zaW9uOwoKCgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBMU0l0ZW1JbmZvUmVj
b3JkIExTSXRlbUluZm9SZWNvcmQ7Cgp0eXBlZGVmIE9wdGlvbkJpdHMgTFNBY2NlcHRhbmNlRmxh
Z3M7CmVudW0gewogIGtMU0FjY2VwdERlZmF1bHQgPSAweDAwMDAwMDAxLAogIGtMU0FjY2VwdEFs
bG93TG9naW5VSSA9IDB4MDAwMDAwMDIKfTsKIyAxNzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9MU0luZm8uaCIgMwpleHRlcm4gT1NTdGF0dXMKTFNJbml0KExTSW5pdGlh
bGl6ZUZsYWdzIGluRmxhZ3MpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxODYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU0luZm8uaCIgMwpleHRlcm4gT1NT
dGF0dXMKTFNUZXJtKHZvaWQpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyMjAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU0luZm8uaCIgMwpleHRlcm4gT1NT
dGF0dXMKTFNDb3B5SXRlbUluZm9Gb3JSZWYoCiAgY29uc3QgRlNSZWYgKiBpbkl0ZW1SZWYsCiAg
TFNSZXF1ZXN0ZWRJbmZvIGluV2hpY2hJbmZvLAogIExTSXRlbUluZm9SZWNvcmQgKiBvdXRJdGVt
SW5mbykgOwojIDI1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTSW5m
by5oIiAzCmV4dGVybiBPU1N0YXR1cwpMU0NvcHlJdGVtSW5mb0ZvclVSTCgKICBDRlVSTFJlZiBp
blVSTCwKICBMU1JlcXVlc3RlZEluZm8gaW5XaGljaEluZm8sCiAgTFNJdGVtSW5mb1JlY29yZCAq
IG91dEl0ZW1JbmZvKSA7CiMgMjk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvTFNJbmZvLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkxTR2V0RXh0ZW5zaW9uSW5mbygKICBVbmlD
aGFyQ291bnQgaW5OYW1lTGVuLAogIGNvbnN0IFVuaUNoYXIgaW5OYW1lQnVmZmVyW10sCiAgVW5p
Q2hhckNvdW50ICogb3V0RXh0U3RhcnRJbmRleCkgOwojIDMzMCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL0xTSW5mby5oIiAzCmV4dGVybiBPU1N0YXR1cwpMU0NvcHlEaXNw
bGF5TmFtZUZvclJlZigKICBjb25zdCBGU1JlZiAqIGluUmVmLAogIENGU3RyaW5nUmVmICogb3V0
RGlzcGxheU5hbWUpIDsKIyAzNjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9MU0luZm8uaCIgMwpleHRlcm4gT1NTdGF0dXMKTFNDb3B5RGlzcGxheU5hbWVGb3JVUkwoCiAg
Q0ZVUkxSZWYgaW5VUkwsCiAgQ0ZTdHJpbmdSZWYgKiBvdXREaXNwbGF5TmFtZSkgOwojIDM5OSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTSW5mby5oIiAzCmV4dGVybiBP
U1N0YXR1cwpMU1NldEV4dGVuc2lvbkhpZGRlbkZvclJlZigKICBjb25zdCBGU1JlZiAqIGluUmVm
LAogIEJvb2xlYW4gaW5IaWRlKSA7CiMgNDM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvTFNJbmZvLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkxTU2V0RXh0ZW5zaW9uSGlkZGVu
Rm9yVVJMKAogIENGVVJMUmVmIGluVVJMLAogIEJvb2xlYW4gaW5IaWRlKSA7CiMgNDY4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
TGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNJbmZvLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzCkxTQ29weUtpbmRTdHJpbmdGb3JSZWYoCiAgY29uc3QgRlNSZWYgKiBpbkZTUmVmLAogIENG
U3RyaW5nUmVmICogb3V0S2luZFN0cmluZykgOwojIDUwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL0xTSW5mby5oIiAzCmV4dGVybiBPU1N0YXR1cwpMU0NvcHlLaW5kU3Ry
aW5nRm9yVVJMKAogIENGVVJMUmVmIGluVVJMLAogIENGU3RyaW5nUmVmICogb3V0S2luZFN0cmlu
ZykgOwojIDU1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTSW5mby5o
IiAzCmV4dGVybiBPU1N0YXR1cwpMU0NvcHlLaW5kU3RyaW5nRm9yVHlwZUluZm8oCiAgT1NUeXBl
IGluVHlwZSwKICBPU1R5cGUgaW5DcmVhdG9yLAogIENGU3RyaW5nUmVmIGluRXh0ZW5zaW9uLAog
IENGU3RyaW5nUmVmICogb3V0S2luZFN0cmluZykgOwojIDU4OSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL0xTSW5mby5oIiAzCmV4dGVybiBPU1N0YXR1cwpMU0NvcHlLaW5k
U3RyaW5nRm9yTUlNRVR5cGUoCiAgQ0ZTdHJpbmdSZWYgaW5NSU1FVHlwZSwKICBDRlN0cmluZ1Jl
ZiAqIG91dEtpbmRTdHJpbmcpIDsKIyA2MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9MU0luZm8uaCIgMwpleHRlcm4gT1NTdGF0dXMKTFNHZXRBcHBsaWNhdGlvbkZvckl0
ZW0oCiAgY29uc3QgRlNSZWYgKiBpbkl0ZW1SZWYsCiAgTFNSb2xlc01hc2sgaW5Sb2xlTWFzaywK
ICBGU1JlZiAqIG91dEFwcFJlZiwKICBDRlVSTFJlZiAqIG91dEFwcFVSTCkgOwojIDY5MiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTSW5mby5oIiAzCmV4dGVybiBPU1N0
YXR1cwpMU0dldEFwcGxpY2F0aW9uRm9ySW5mbygKICBPU1R5cGUgaW5UeXBlLAogIE9TVHlwZSBp
bkNyZWF0b3IsCiAgQ0ZTdHJpbmdSZWYgaW5FeHRlbnNpb24sCiAgTFNSb2xlc01hc2sgaW5Sb2xl
TWFzaywKICBGU1JlZiAqIG91dEFwcFJlZiwKICBDRlVSTFJlZiAqIG91dEFwcFVSTCkgOwojIDcz
OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTSW5mby5oIiAzCmV4dGVy
biBPU1N0YXR1cwpMU0NvcHlBcHBsaWNhdGlvbkZvck1JTUVUeXBlKAogIENGU3RyaW5nUmVmIGlu
TUlNRVR5cGUsCiAgTFNSb2xlc01hc2sgaW5Sb2xlTWFzaywKICBDRlVSTFJlZiAqIG91dEFwcFVS
TCkgOwojIDc4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTSW5mby5o
IiAzCmV4dGVybiBPU1N0YXR1cwpMU0dldEFwcGxpY2F0aW9uRm9yVVJMKAogIENGVVJMUmVmIGlu
VVJMLAogIExTUm9sZXNNYXNrIGluUm9sZU1hc2ssCiAgRlNSZWYgKiBvdXRBcHBSZWYsCiAgQ0ZV
UkxSZWYgKiBvdXRBcHBVUkwpIDsKIyA4MzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9MU0luZm8uaCIgMwpleHRlcm4gT1NTdGF0dXMKTFNGaW5kQXBwbGljYXRpb25Gb3JJ
bmZvKAogIE9TVHlwZSBpbkNyZWF0b3IsCiAgQ0ZTdHJpbmdSZWYgaW5CdW5kbGVJRCwKICBDRlN0
cmluZ1JlZiBpbk5hbWUsCiAgRlNSZWYgKiBvdXRBcHBSZWYsCiAgQ0ZVUkxSZWYgKiBvdXRBcHBV
UkwpIDsKIyA4ODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU0luZm8u
aCIgMwpleHRlcm4gT1NTdGF0dXMKTFNDYW5SZWZBY2NlcHRJdGVtKAogIGNvbnN0IEZTUmVmICog
aW5JdGVtRlNSZWYsCiAgY29uc3QgRlNSZWYgKiBpblRhcmdldFJlZiwKICBMU1JvbGVzTWFzayBp
blJvbGVNYXNrLAogIExTQWNjZXB0YW5jZUZsYWdzIGluRmxhZ3MsCiAgQm9vbGVhbiAqIG91dEFj
Y2VwdHNJdGVtKSA7CiMgOTMzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
TFNJbmZvLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkxTQ2FuVVJMQWNjZXB0VVJMKAogIENGVVJMUmVm
IGluSXRlbVVSTCwKICBDRlVSTFJlZiBpblRhcmdldFVSTCwKICBMU1JvbGVzTWFzayBpblJvbGVN
YXNrLAogIExTQWNjZXB0YW5jZUZsYWdzIGluRmxhZ3MsCiAgQm9vbGVhbiAqIG91dEFjY2VwdHNJ
dGVtKSA7CiMgOTc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNJbmZv
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkxTUmVnaXN0ZXJVUkwoCiAgQ0ZVUkxSZWYgaW5VUkwsCiAg
Qm9vbGVhbiBpblVwZGF0ZSkgOwojIDEwMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9MU0luZm8uaCIgMwpleHRlcm4gT1NTdGF0dXMKTFNSZWdpc3RlckZTUmVmKAogIGNv
bnN0IEZTUmVmICogaW5SZWYsCiAgQm9vbGVhbiBpblVwZGF0ZSkgOwojIDEwNTggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVu
Y2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU0luZm8uaCIgMwpleHRlcm4gQ0ZBcnJheVJl
ZgpMU0NvcHlBcHBsaWNhdGlvblVSTHNGb3JVUkwoCiAgQ0ZVUkxSZWYgaW5VUkwsCiAgTFNSb2xl
c01hc2sgaW5Sb2xlTWFzaykgOwojIDExNDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9MU0luZm8uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0xTSXRlbUNvbnRl
bnRUeXBlIDsKIyAxMTUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNJ
bmZvLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtMU0l0ZW1GaWxlVHlwZSA7CiMgMTE2
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTSW5mby5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrTFNJdGVtRmlsZUNyZWF0b3IgOwojIDExNzAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVu
Y2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU0luZm8uaCIgMwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0xTSXRlbUV4dGVuc2lvbiA7CiMgMTE3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL0xTSW5mby5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTFNJ
dGVtRGlzcGxheU5hbWUgOwojIDExODggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9MU0luZm8uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0xTSXRlbURpc3BsYXlL
aW5kIDsKIyAxMTk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNJbmZv
LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtMU0l0ZW1Sb2xlSGFuZGxlckRpc3BsYXlO
YW1lIDsKIyAxMjA2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNJbmZv
LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtMU0l0ZW1Jc0ludmlzaWJsZSA7CiMgMTIx
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTSW5mby5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrTFNJdGVtRXh0ZW5zaW9uSXNIaWRkZW4gOwojIDEyMjQgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU0luZm8uaCIgMwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0xTSXRlbVF1YXJhbnRpbmVQcm9wZXJ0aWVzIDsKIyAxMjYxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
TGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNJbmZvLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzCkxTQ29weUl0ZW1BdHRyaWJ1dGUoCiAgY29uc3QgRlNSZWYgKiBpbkl0ZW0sCiAgTFNSb2xl
c01hc2sgaW5Sb2xlcywKICBDRlN0cmluZ1JlZiBpbkF0dHJpYnV0ZU5hbWUsCiAgQ0ZUeXBlUmVm
ICogb3V0VmFsdWUpIDsKIyAxMzA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvTFNJbmZvLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkxTQ29weUl0ZW1BdHRyaWJ1dGVzKAogIGNv
bnN0IEZTUmVmICogaW5JdGVtLAogIExTUm9sZXNNYXNrIGluUm9sZXMsCiAgQ0ZBcnJheVJlZiBp
bkF0dHJpYnV0ZU5hbWVzLAogIENGRGljdGlvbmFyeVJlZiAqIG91dFZhbHVlcykgOwojIDEzNTMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU0luZm8uaCIgMwpleHRlcm4g
T1NTdGF0dXMKTFNTZXRJdGVtQXR0cmlidXRlKAogIGNvbnN0IEZTUmVmICogaW5JdGVtLAogIExT
Um9sZXNNYXNrIGluUm9sZXMsCiAgQ0ZTdHJpbmdSZWYgaW5BdHRyaWJ1dGVOYW1lLAogIENGVHlw
ZVJlZiBpblZhbHVlKSA7CiMgMTM4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFk
ZXJzL0xTSW5mby5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZgpMU0NvcHlEZWZhdWx0Um9sZUhhbmRs
ZXJGb3JDb250ZW50VHlwZSgKICBDRlN0cmluZ1JlZiBpbkNvbnRlbnRUeXBlLAogIExTUm9sZXNN
YXNrIGluUm9sZSkgOwojIDE0MTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9MU0luZm8uaCIgMwpleHRlcm4gQ0ZBcnJheVJlZgpMU0NvcHlBbGxSb2xlSGFuZGxlcnNGb3JD
b250ZW50VHlwZSgKICBDRlN0cmluZ1JlZiBpbkNvbnRlbnRUeXBlLAogIExTUm9sZXNNYXNrIGlu
Um9sZSkgOwojIDE0MzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU0lu
Zm8uaCIgMwpleHRlcm4gT1NTdGF0dXMKTFNTZXREZWZhdWx0Um9sZUhhbmRsZXJGb3JDb250ZW50
VHlwZSgKICBDRlN0cmluZ1JlZiBpbkNvbnRlbnRUeXBlLAogIExTUm9sZXNNYXNrIGluUm9sZSwK
ICBDRlN0cmluZ1JlZiBpbkhhbmRsZXJCdW5kbGVJRCkgOwojIDE0NTggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU0luZm8uaCIgMwp0eXBlZGVmIE9wdGlvbkJpdHMgTFNI
YW5kbGVyT3B0aW9uczsKZW51bSB7CiAga0xTSGFuZGxlck9wdGlvbnNEZWZhdWx0ID0gMCwKICBr
TFNIYW5kbGVyT3B0aW9uc0lnbm9yZUNyZWF0b3IgPSAxCn07CiMgMTQ4MSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTSW5mby5oIiAzCmV4dGVybiBMU0hhbmRsZXJPcHRp
b25zCkxTR2V0SGFuZGxlck9wdGlvbnNGb3JDb250ZW50VHlwZShDRlN0cmluZ1JlZiBpbkNvbnRl
bnRUeXBlKSA7CiMgMTUwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xT
SW5mby5oIiAzCmV4dGVybiBPU1N0YXR1cwpMU1NldEhhbmRsZXJPcHRpb25zRm9yQ29udGVudFR5
cGUoCiAgQ0ZTdHJpbmdSZWYgaW5Db250ZW50VHlwZSwKICBMU0hhbmRsZXJPcHRpb25zIGluT3B0
aW9ucykgOwojIDE1MjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU0lu
Zm8uaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYKTFNDb3B5RGVmYXVsdEhhbmRsZXJGb3JVUkxTY2hl
bWUoQ0ZTdHJpbmdSZWYgaW5VUkxTY2hlbWUpIDsKIyAxNTUyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvTFNJbmZvLmgiIDMKZXh0ZXJuIENGQXJyYXlSZWYKTFNDb3B5QWxs
SGFuZGxlcnNGb3JVUkxTY2hlbWUoQ0ZTdHJpbmdSZWYgaW5VUkxTY2hlbWUpIDsKIyAxNTc1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNJbmZvLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCkxTU2V0RGVmYXVsdEhhbmRsZXJGb3JVUkxTY2hlbWUoCiAgQ0ZTdHJpbmdSZWYgaW5V
UkxTY2hlbWUsCiAgQ0ZTdHJpbmdSZWYgaW5IYW5kbGVyQnVuZGxlSUQpIDsKCgoKI3ByYWdtYSBw
YWNrKHBvcCkKCgp9CiMgMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9M
YXVuY2hTZXJ2aWNlcy5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvTFNPcGVuLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvTFNPcGVuLmgiIDMKI2RlZmluZSBfX0xTT1BFTl9fIAojIDQ1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNo
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNPcGVuLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3By
YWdtYSBwYWNrKHB1c2gsIDIpCgoKCgoKdHlwZWRlZiBPcHRpb25CaXRzIExTTGF1bmNoRmxhZ3M7
CmVudW0gewogIGtMU0xhdW5jaERlZmF1bHRzID0gMHgwMDAwMDAwMSwKICBrTFNMYXVuY2hBbmRQ
cmludCA9IDB4MDAwMDAwMDIsCiAga0xTTGF1bmNoUmVzZXJ2ZWQyID0gMHgwMDAwMDAwNCwKICBr
TFNMYXVuY2hSZXNlcnZlZDMgPSAweDAwMDAwMDA4LAogIGtMU0xhdW5jaFJlc2VydmVkNCA9IDB4
MDAwMDAwMTAsCiAga0xTTGF1bmNoUmVzZXJ2ZWQ1ID0gMHgwMDAwMDAyMCwKICBrTFNMYXVuY2hB
bmREaXNwbGF5RXJyb3JzID0gMHgwMDAwMDA0MCwKICBrTFNMYXVuY2hJbmhpYml0QkdPbmx5ID0g
MHgwMDAwMDA4MCwKICBrTFNMYXVuY2hEb250QWRkVG9SZWNlbnRzID0gMHgwMDAwMDEwMCwKICBr
TFNMYXVuY2hEb250U3dpdGNoID0gMHgwMDAwMDIwMCwKICBrTFNMYXVuY2hOb1BhcmFtcyA9IDB4
MDAwMDA4MDAsCiAga0xTTGF1bmNoQXN5bmMgPSAweDAwMDEwMDAwLAogIGtMU0xhdW5jaFN0YXJ0
Q2xhc3NpYyA9IDB4MDAwMjAwMDAsCiAga0xTTGF1bmNoSW5DbGFzc2ljID0gMHgwMDA0MDAwMCwK
ICBrTFNMYXVuY2hOZXdJbnN0YW5jZSA9IDB4MDAwODAwMDAsCiAga0xTTGF1bmNoQW5kSGlkZSA9
IDB4MDAxMDAwMDAsCiAga0xTTGF1bmNoQW5kSGlkZU90aGVycyA9IDB4MDAyMDAwMDAsCiAga0xT
TGF1bmNoSGFzVW50cnVzdGVkQ29udGVudHMgPSAweDAwNDAwMDAwCn07CgpzdHJ1Y3QgTFNMYXVu
Y2hGU1JlZlNwZWMgewogIGNvbnN0IEZTUmVmICogYXBwUmVmOwogIEl0ZW1Db3VudCBudW1Eb2Nz
OwogIGNvbnN0IEZTUmVmICogaXRlbVJlZnM7CiAgY29uc3QgQUVEZXNjICogcGFzc1RocnVQYXJh
bXM7CgogIExTTGF1bmNoRmxhZ3MgbGF1bmNoRmxhZ3M7CiAgdm9pZCAqIGFzeW5jUmVmQ29uOwp9
Owp0eXBlZGVmIHN0cnVjdCBMU0xhdW5jaEZTUmVmU3BlYyBMU0xhdW5jaEZTUmVmU3BlYzsKc3Ry
dWN0IExTTGF1bmNoVVJMU3BlYyB7CiAgQ0ZVUkxSZWYgYXBwVVJMOwogIENGQXJyYXlSZWYgaXRl
bVVSTHM7CiAgY29uc3QgQUVEZXNjICogcGFzc1RocnVQYXJhbXM7CiAgTFNMYXVuY2hGbGFncyBs
YXVuY2hGbGFnczsKICB2b2lkICogYXN5bmNSZWZDb247Cn07CnR5cGVkZWYgc3RydWN0IExTTGF1
bmNoVVJMU3BlYyBMU0xhdW5jaFVSTFNwZWM7CiMgMTMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvTFNPcGVuLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkxTT3BlbkZTUmVmKAog
IGNvbnN0IEZTUmVmICogaW5SZWYsCiAgRlNSZWYgKiBvdXRMYXVuY2hlZFJlZikgOwojIDE3MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTT3Blbi5oIiAzCmV4dGVybiBP
U1N0YXR1cwpMU09wZW5DRlVSTFJlZigKICBDRlVSTFJlZiBpblVSTCwKICBDRlVSTFJlZiAqIG91
dExhdW5jaGVkVVJMKSA7CiMgMjA1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvTFNPcGVuLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkxTT3BlbkZyb21SZWZTcGVjKAogIGNvbnN0
IExTTGF1bmNoRlNSZWZTcGVjICogaW5MYXVuY2hTcGVjLAogIEZTUmVmICogb3V0TGF1bmNoZWRS
ZWYpIDsKIyAyNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU09wZW4u
aCIgMwpleHRlcm4gT1NTdGF0dXMKTFNPcGVuRnJvbVVSTFNwZWMoCiAgY29uc3QgTFNMYXVuY2hV
UkxTcGVjICogaW5MYXVuY2hTcGVjLAogIENGVVJMUmVmICogb3V0TGF1bmNoZWRVUkwpIDsKIyAy
NjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU09wZW4uaCIgMwpzdHJ1
Y3QgTFNBcHBsaWNhdGlvblBhcmFtZXRlcnMgewogIENGSW5kZXggdmVyc2lvbjsKICBMU0xhdW5j
aEZsYWdzIGZsYWdzOwogIGNvbnN0IEZTUmVmICogYXBwbGljYXRpb247CiAgdm9pZCAqIGFzeW5j
TGF1bmNoUmVmQ29uOwogIENGRGljdGlvbmFyeVJlZiBlbnZpcm9ubWVudDsKCiAgQ0ZBcnJheVJl
ZiBhcmd2OwoKICBBcHBsZUV2ZW50ICogaW5pdGlhbEV2ZW50Owp9Owp0eXBlZGVmIHN0cnVjdCBM
U0FwcGxpY2F0aW9uUGFyYW1ldGVycyBMU0FwcGxpY2F0aW9uUGFyYW1ldGVyczsKIyAzMDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU09wZW4uaCIgMwpleHRlcm4gT1NT
dGF0dXMKTFNPcGVuQXBwbGljYXRpb24oCiAgY29uc3QgTFNBcHBsaWNhdGlvblBhcmFtZXRlcnMg
KiBhcHBQYXJhbXMsCiAgUHJvY2Vzc1NlcmlhbE51bWJlciAqIG91dFBTTikgOwojIDM0NiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTT3Blbi5oIiAzCmV4dGVybiBPU1N0
YXR1cwpMU09wZW5JdGVtc1dpdGhSb2xlKAogIGNvbnN0IEZTUmVmICogaW5JdGVtcywKICBDRklu
ZGV4IGluSXRlbUNvdW50LAogIExTUm9sZXNNYXNrIGluUm9sZSwKICBjb25zdCBBRUtleURlc2Mg
KiBpbkFFUGFyYW0sCiAgY29uc3QgTFNBcHBsaWNhdGlvblBhcmFtZXRlcnMgKiBpbkFwcFBhcmFt
cywKICBQcm9jZXNzU2VyaWFsTnVtYmVyICogb3V0UFNOcywKICBDRkluZGV4IGluTWF4UFNOQ291
bnQpIDsKIyAzOTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU09wZW4u
aCIgMwpleHRlcm4gT1NTdGF0dXMKTFNPcGVuVVJMc1dpdGhSb2xlKAogIENGQXJyYXlSZWYgaW5V
UkxzLAogIExTUm9sZXNNYXNrIGluUm9sZSwKICBjb25zdCBBRUtleURlc2MgKiBpbkFFUGFyYW0s
CiAgY29uc3QgTFNBcHBsaWNhdGlvblBhcmFtZXRlcnMgKiBpbkFwcFBhcmFtcywKICBQcm9jZXNz
U2VyaWFsTnVtYmVyICogb3V0UFNOcywKICBDRkluZGV4IGluTWF4UFNOQ291bnQpIDsKCgoKCgoj
cHJhZ21hIHBhY2socG9wKQoKCn0KIyAzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL0xhdW5jaFNlcnZpY2VzLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9MU1F1YXJhbnRpbmUuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU1F1YXJhbnRpbmUuaCIgMwojZGVmaW5lIF9fTFNRVUFS
QU5USU5FX18gCiMgMTAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNR
dWFyYW50aW5lLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtMU1F1YXJhbnRpbmVBZ2Vu
dE5hbWVLZXkgOwojIDEwOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xT
UXVhcmFudGluZS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTFNRdWFyYW50aW5lQWdl
bnRCdW5kbGVJZGVudGlmaWVyS2V5IDsKIyAxMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdv
cmsvSGVhZGVycy9MU1F1YXJhbnRpbmUuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0xT
UXVhcmFudGluZVRpbWVTdGFtcEtleSA7CiMgMTI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvTFNRdWFyYW50aW5lLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtM
U1F1YXJhbnRpbmVUeXBlS2V5IDsKIyAxMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9MU1F1YXJhbnRpbmUuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0xTUXVh
cmFudGluZVR5cGVXZWJEb3dubG9hZCA7CiMgMTQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvTFNRdWFyYW50aW5lLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtM
U1F1YXJhbnRpbmVUeXBlT3RoZXJEb3dubG9hZCA7CiMgMTU0ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvTFNRdWFyYW50aW5lLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtMU1F1YXJhbnRpbmVUeXBlRW1haWxBdHRhY2htZW50IDsKIyAxNjMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU1F1YXJhbnRpbmUuaCIgMwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0xTUXVhcmFudGluZVR5cGVJbnN0YW50TWVzc2FnZUF0dGFjaG1lbnQgOwoj
IDE3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTUXVhcmFudGluZS5o
IiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTFNRdWFyYW50aW5lVHlwZUNhbGVuZGFyRXZl
bnRBdHRhY2htZW50IDsKIyAxODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9MU1F1YXJhbnRpbmUuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0xTUXVhcmFudGlu
ZVR5cGVPdGhlckF0dGFjaG1lbnQgOwojIDE5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0xTUXVhcmFudGluZS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTFNR
dWFyYW50aW5lT3JpZ2luVVJMS2V5IDsKIyAxOTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdv
cmsvSGVhZGVycy9MU1F1YXJhbnRpbmUuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0xT
UXVhcmFudGluZURhdGFVUkxLZXkgOwojIDM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvTGF1bmNoU2VydmljZXMuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL0xTU2hhcmVkRmlsZUxpc3QuaCIgMSAzCiMgMTcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVu
Y2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU1NoYXJlZEZpbGVMaXN0LmgiIDMKI2RlZmlu
ZSBfX0xTU0hBUkVERklMRUxJU1RfXyAKIyA0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0xTU2hhcmVkRmlsZUxpc3QuaCIgMwpleHRlcm4gIkMiIHsKIyA1NCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xh
dW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTU2hhcmVkRmlsZUxpc3QuaCIgMwp0eXBl
ZGVmIHN0cnVjdCBPcGFxdWVMU1NoYXJlZEZpbGVMaXN0UmVmKiBMU1NoYXJlZEZpbGVMaXN0UmVm
Owp0eXBlZGVmIHN0cnVjdCBPcGFxdWVMU1NoYXJlZEZpbGVMaXN0SXRlbVJlZiogTFNTaGFyZWRG
aWxlTGlzdEl0ZW1SZWY7CiMgNjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9MU1NoYXJlZEZpbGVMaXN0LmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtMU1NoYXJlZEZpbGVM
aXN0RmF2b3JpdGVWb2x1bWVzIDsKIyA3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL0xTU2hhcmVkRmlsZUxpc3QuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga0xTU2hhcmVk
RmlsZUxpc3RGYXZvcml0ZUl0ZW1zIDsKIyA4OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0xTU2hhcmVkRmlsZUxpc3QuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga0xTU2hh
cmVkRmlsZUxpc3RSZWNlbnRBcHBsaWNhdGlvbkl0ZW1zIDsKIyAxMDAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU1NoYXJlZEZpbGVMaXN0LmgiIDMKZXh0ZXJuIENGU3Ry
aW5nUmVmIGtMU1NoYXJlZEZpbGVMaXN0UmVjZW50RG9jdW1lbnRJdGVtcyA7CiMgMTExICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
TGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCmV4
dGVybiBDRlN0cmluZ1JlZiBrTFNTaGFyZWRGaWxlTGlzdFJlY2VudFNlcnZlckl0ZW1zIDsKIyAx
MjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU1NoYXJlZEZpbGVMaXN0
LmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtMU1NoYXJlZEZpbGVMaXN0U2Vzc2lvbkxvZ2luSXRl
bXMgOwojIDEzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTU2hhcmVk
RmlsZUxpc3QuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga0xTU2hhcmVkRmlsZUxpc3RHbG9iYWxM
b2dpbkl0ZW1zIDsKIyAxNTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9M
U1NoYXJlZEZpbGVMaXN0LmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtMU1NoYXJlZEZpbGVMaXN0
UmVjZW50SXRlbXNNYXhBbW91bnQgOwojIDE2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0xTU2hhcmVkRmlsZUxpc3QuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga0xTU2hh
cmVkRmlsZUxpc3RWb2x1bWVzQ29tcHV0ZXJWaXNpYmxlIDsKIyAxNzkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU1NoYXJlZEZpbGVMaXN0LmgiIDMKZXh0ZXJuIENGU3Ry
aW5nUmVmIGtMU1NoYXJlZEZpbGVMaXN0Vm9sdW1lc0lEaXNrVmlzaWJsZSA7CiMgMTkzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
TGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCmV4
dGVybiBDRlN0cmluZ1JlZiBrTFNTaGFyZWRGaWxlTGlzdFZvbHVtZXNOZXR3b3JrVmlzaWJsZSA7
CiMgMjEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNTaGFyZWRGaWxl
TGlzdC5oIiAzCmV4dGVybiBMU1NoYXJlZEZpbGVMaXN0SXRlbVJlZiBrTFNTaGFyZWRGaWxlTGlz
dEl0ZW1CZWZvcmVGaXJzdCA7CiMgMjI0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hl
YWRlcnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCmV4dGVybiBMU1NoYXJlZEZpbGVMaXN0SXRlbVJl
ZiBrTFNTaGFyZWRGaWxlTGlzdEl0ZW1MYXN0IDsKIyAyNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9MU1NoYXJlZEZpbGVMaXN0LmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVm
IGtMU1NoYXJlZEZpbGVMaXN0SXRlbUhpZGRlbiA7CiMgMjU0ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCmV4dGVybiBDRlN0cmluZ1Jl
ZiBrTFNTaGFyZWRGaWxlTGlzdExvZ2luSXRlbUhpZGRlbiA7CgoKZW51bSB7CiAga0xTU2hhcmVk
RmlsZUxpc3ROb1VzZXJJbnRlcmFjdGlvbiA9IDEgPDwgMCwKICBrTFNTaGFyZWRGaWxlTGlzdERv
Tm90TW91bnRWb2x1bWVzID0gMSA8PCAxCn07CiMgMjcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCnR5cGVkZWYgdm9pZCAoICogTFNT
aGFyZWRGaWxlTGlzdENoYW5nZWRQcm9jUHRyKShMU1NoYXJlZEZpbGVMaXN0UmVmIGluTGlzdCwg
dm9pZCAqY29udGV4dCk7CiMgMjkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCmV4dGVybiBDRlR5cGVJRApMU1NoYXJlZEZpbGVMaXN0
R2V0VHlwZUlEKHZvaWQpIDsKIyAzMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9MU1NoYXJlZEZpbGVMaXN0LmgiIDMKZXh0ZXJuIENGVHlwZUlECkxTU2hhcmVkRmlsZUxp
c3RJdGVtR2V0VHlwZUlEKHZvaWQpIDsKIyAzNTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdv
cmsvSGVhZGVycy9MU1NoYXJlZEZpbGVMaXN0LmgiIDMKZXh0ZXJuIExTU2hhcmVkRmlsZUxpc3RS
ZWYKTFNTaGFyZWRGaWxlTGlzdENyZWF0ZSgKICBDRkFsbG9jYXRvclJlZiBpbkFsbG9jYXRvciwK
ICBDRlN0cmluZ1JlZiBpbkxpc3RUeXBlLAogIENGVHlwZVJlZiBsaXN0T3B0aW9ucykgOwojIDM4
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTU2hhcmVkRmlsZUxpc3Qu
aCIgMwpleHRlcm4gT1NTdGF0dXMKTFNTaGFyZWRGaWxlTGlzdFNldEF1dGhvcml6YXRpb24oCiAg
TFNTaGFyZWRGaWxlTGlzdFJlZiBpbkxpc3QsCiAgQXV0aG9yaXphdGlvblJlZiBpbkF1dGhvcml6
YXRpb24pIDsKIyA0MzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU1No
YXJlZEZpbGVMaXN0LmgiIDMKZXh0ZXJuIHZvaWQKTFNTaGFyZWRGaWxlTGlzdEFkZE9ic2VydmVy
KAogIExTU2hhcmVkRmlsZUxpc3RSZWYgaW5MaXN0LAogIENGUnVuTG9vcFJlZiBpblJ1bmxvb3As
CiAgQ0ZTdHJpbmdSZWYgaW5SdW5sb29wTW9kZSwKICBMU1NoYXJlZEZpbGVMaXN0Q2hhbmdlZFBy
b2NQdHIgY2FsbGJhY2ssCiAgdm9pZCAqIGNvbnRleHQpIDsKIyA0NzQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU1NoYXJlZEZpbGVMaXN0LmgiIDMKZXh0ZXJuIHZvaWQK
TFNTaGFyZWRGaWxlTGlzdFJlbW92ZU9ic2VydmVyKAogIExTU2hhcmVkRmlsZUxpc3RSZWYgaW5M
aXN0LAogIENGUnVuTG9vcFJlZiBpblJ1bmxvb3AsCiAgQ0ZTdHJpbmdSZWYgaW5SdW5sb29wTW9k
ZSwKICBMU1NoYXJlZEZpbGVMaXN0Q2hhbmdlZFByb2NQdHIgY2FsbGJhY2ssCiAgdm9pZCAqIGNv
bnRleHQpIDsKIyA1MDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU1No
YXJlZEZpbGVMaXN0LmgiIDMKZXh0ZXJuIFVJbnQzMgpMU1NoYXJlZEZpbGVMaXN0R2V0U2VlZFZh
bHVlKExTU2hhcmVkRmlsZUxpc3RSZWYgaW5MaXN0KSA7CiMgNTM5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCmV4dGVybiBDRlR5cGVS
ZWYKTFNTaGFyZWRGaWxlTGlzdENvcHlQcm9wZXJ0eSgKICBMU1NoYXJlZEZpbGVMaXN0UmVmIGlu
TGlzdCwKICBDRlN0cmluZ1JlZiBpblByb3BlcnR5TmFtZSkgOwojIDU3MyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTU2hhcmVkRmlsZUxpc3QuaCIgMwpleHRlcm4gT1NT
dGF0dXMKTFNTaGFyZWRGaWxlTGlzdFNldFByb3BlcnR5KAogIExTU2hhcmVkRmlsZUxpc3RSZWYg
aW5MaXN0LAogIENGU3RyaW5nUmVmIGluUHJvcGVydHlOYW1lLAogIENGVHlwZVJlZiBpblByb3Bl
cnR5RGF0YSkgOwojIDYxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xT
U2hhcmVkRmlsZUxpc3QuaCIgMwpleHRlcm4gQ0ZBcnJheVJlZgpMU1NoYXJlZEZpbGVMaXN0Q29w
eVNuYXBzaG90KAogIExTU2hhcmVkRmlsZUxpc3RSZWYgaW5MaXN0LAogIFVJbnQzMiAqIG91dFNu
YXBzaG90U2VlZCkgOwojIDY2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L0xTU2hhcmVkRmlsZUxpc3QuaCIgMwpleHRlcm4gTFNTaGFyZWRGaWxlTGlzdEl0ZW1SZWYKTFNT
aGFyZWRGaWxlTGlzdEluc2VydEl0ZW1VUkwoCiAgTFNTaGFyZWRGaWxlTGlzdFJlZiBpbkxpc3Qs
CiAgTFNTaGFyZWRGaWxlTGlzdEl0ZW1SZWYgaW5zZXJ0QWZ0ZXJUaGlzSXRlbSwKICBDRlN0cmlu
Z1JlZiBpbkRpc3BsYXlOYW1lLAogIEljb25SZWYgaW5JY29uUmVmLAogIENGVVJMUmVmIGluVVJM
LAogIENGRGljdGlvbmFyeVJlZiBpblByb3BlcnRpZXNUb1NldCwKICBDRkFycmF5UmVmIGluUHJv
cGVydGllc1RvQ2xlYXIpIDsKIyA3MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9MU1NoYXJlZEZpbGVMaXN0LmgiIDMKZXh0ZXJuIExTU2hhcmVkRmlsZUxpc3RJdGVtUmVm
CkxTU2hhcmVkRmlsZUxpc3RJbnNlcnRJdGVtRlNSZWYoCiAgTFNTaGFyZWRGaWxlTGlzdFJlZiBp
bkxpc3QsCiAgTFNTaGFyZWRGaWxlTGlzdEl0ZW1SZWYgaW5zZXJ0QWZ0ZXJUaGlzSXRlbSwKICBD
RlN0cmluZ1JlZiBpbkRpc3BsYXlOYW1lLAogIEljb25SZWYgaW5JY29uUmVmLAogIGNvbnN0IEZT
UmVmICogaW5GU1JlZiwKICBDRkRpY3Rpb25hcnlSZWYgaW5Qcm9wZXJ0aWVzVG9TZXQsCiAgQ0ZB
cnJheVJlZiBpblByb3BlcnRpZXNUb0NsZWFyKSA7CiMgNzcwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCmV4dGVybiBPU1N0YXR1cwpM
U1NoYXJlZEZpbGVMaXN0SXRlbU1vdmUoCiAgTFNTaGFyZWRGaWxlTGlzdFJlZiBpbkxpc3QsCiAg
TFNTaGFyZWRGaWxlTGlzdEl0ZW1SZWYgaW5JdGVtLAogIExTU2hhcmVkRmlsZUxpc3RJdGVtUmVm
IGluTW92ZUFmdGVySXRlbSkgOwojIDgwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL0xTU2hhcmVkRmlsZUxpc3QuaCIgMwpleHRlcm4gT1NTdGF0dXMKTFNTaGFyZWRGaWxl
TGlzdEl0ZW1SZW1vdmUoCiAgTFNTaGFyZWRGaWxlTGlzdFJlZiBpbkxpc3QsCiAgTFNTaGFyZWRG
aWxlTGlzdEl0ZW1SZWYgaW5JdGVtKSA7CiMgODMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCmV4dGVybiBPU1N0YXR1cwpMU1NoYXJl
ZEZpbGVMaXN0UmVtb3ZlQWxsSXRlbXMoTFNTaGFyZWRGaWxlTGlzdFJlZiBpbkxpc3QpIDsKIyA4
NTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9MU1NoYXJlZEZpbGVMaXN0
LmgiIDMKZXh0ZXJuIFVJbnQzMgpMU1NoYXJlZEZpbGVMaXN0SXRlbUdldElEKExTU2hhcmVkRmls
ZUxpc3RJdGVtUmVmIGluSXRlbSkgOwojIDg3NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0xTU2hhcmVkRmlsZUxpc3QuaCIgMwpleHRlcm4gSWNvblJlZgpMU1NoYXJlZEZp
bGVMaXN0SXRlbUNvcHlJY29uUmVmKExTU2hhcmVkRmlsZUxpc3RJdGVtUmVmIGluSXRlbSkgOwoj
IDg5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xTU2hhcmVkRmlsZUxp
c3QuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYKTFNTaGFyZWRGaWxlTGlzdEl0ZW1Db3B5RGlzcGxh
eU5hbWUoTFNTaGFyZWRGaWxlTGlzdEl0ZW1SZWYgaW5JdGVtKSA7CiMgOTM0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNo
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCmV4dGVybiBP
U1N0YXR1cwpMU1NoYXJlZEZpbGVMaXN0SXRlbVJlc29sdmUoCiAgTFNTaGFyZWRGaWxlTGlzdEl0
ZW1SZWYgaW5JdGVtLAogIFVJbnQzMiBpbkZsYWdzLAogIENGVVJMUmVmICogb3V0VVJMLAogIEZT
UmVmICogb3V0UmVmKSA7CiMgOTYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCmV4dGVybiBDRlR5cGVSZWYKTFNTaGFyZWRGaWxlTGlz
dEl0ZW1Db3B5UHJvcGVydHkoCiAgTFNTaGFyZWRGaWxlTGlzdEl0ZW1SZWYgaW5JdGVtLAogIENG
U3RyaW5nUmVmIGluUHJvcGVydHlOYW1lKSA7CiMgOTgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvTFNTaGFyZWRGaWxlTGlzdC5oIiAzCmV4dGVybiBPU1N0YXR1cwpMU1No
YXJlZEZpbGVMaXN0SXRlbVNldFByb3BlcnR5KAogIExTU2hhcmVkRmlsZUxpc3RJdGVtUmVmIGlu
SXRlbSwKICBDRlN0cmluZ1JlZiBpblByb3BlcnR5TmFtZSwKICBDRlR5cGVSZWYgaW5Qcm9wZXJ0
eURhdGEpIDsKCgoKCn0KIyAzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L0xhdW5jaFNlcnZpY2VzLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdv
cmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL1VUQ29yZVR5cGVzLmgiIDMKI2RlZmluZSBfX1VUQ09SRVRZUEVTX18g
CiMgMTAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMu
aCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUl0ZW0gOwojIDExMCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xh
dW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUQ29yZVR5cGVzLmgiIDMKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtVVFR5cGVDb250ZW50IDsKIyAxMTkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNl
cy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrVVRUeXBlQ29tcG9zaXRlQ29udGVudCA7CiMgMTI4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga1VUVHlwZUFwcGxpY2F0aW9uIDsKIyAxMzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdv
cmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVVRU
eXBlTWVzc2FnZSA7CiMgMTQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
VVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUNvbnRhY3Qg
OwojIDE1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUQ29yZVR5cGVz
LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVBcmNoaXZlIDsKIyAxNjQgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlRGlza0ltYWdlIDsKIyAyNTEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrVVRUeXBlRGF0YSA7CiMgMjYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VU
VHlwZURpcmVjdG9yeSA7CiMgMjY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVJlc29s
dmFibGUgOwojIDI3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUQ29y
ZVR5cGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVTeW1MaW5rIDsKIyAy
ODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAz
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlTW91bnRQb2ludCA7CiMgMjk2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
TGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUFsaWFzRmlsZSA7CiMgMzA1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2Vy
dmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga1VUVHlwZUFsaWFzUmVjb3JkIDsKIyAzMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrVVRUeXBlVVJMIDsKIyAzMjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlRmlsZVVS
TCA7CiMgNDY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlw
ZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVRleHQgOwojIDQ3OCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUQ29yZVR5cGVzLmgiIDMKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVQbGFpblRleHQgOwojIDQ4NyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUQ29yZVR5cGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtVVFR5cGVVVEY4UGxhaW5UZXh0IDsKIyA0OTYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNl
cy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrVVRUeXBlVVRGMTZFeHRlcm5hbFBsYWluVGV4dCA7CiMgNTA1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2Vy
dmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga1VUVHlwZVVURjE2UGxhaW5UZXh0IDsKIyA1MTQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNl
cy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrVVRUeXBlUlRGIDsKIyA1MjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlSFRN
TCA7CiMgNTMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlw
ZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVhNTCA7CiMgNTQxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
TGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVNvdXJjZUNvZGUgOwojIDU1MCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUQ29yZVR5cGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtVVFR5cGVDU291cmNlIDsKIyA1NTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
VVRUeXBlT2JqZWN0aXZlQ1NvdXJjZSA7CiMgNTY4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VU
VHlwZUNQbHVzUGx1c1NvdXJjZSA7CiMgNTc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlw
ZU9iamVjdGl2ZUNQbHVzUGx1c1NvdXJjZSA7CiMgNTg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a1VUVHlwZUNIZWFkZXIgOwojIDU5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFk
ZXJzL1VUQ29yZVR5cGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVDUGx1
c1BsdXNIZWFkZXIgOwojIDYwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L1VUQ29yZVR5cGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVKYXZhU291
cmNlIDsKIyA2NTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVU
eXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlUERGIDsKIyA2NjggIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlUlRGRCA7CiMgNjc3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga1VUVHlwZUZsYXRSVEZEIDsKIyA2ODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdv
cmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVVRU
eXBlVFhOVGV4dEFuZE11bHRpbWVkaWFEYXRhIDsKIyA2OTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrVVRUeXBlV2ViQXJjaGl2ZSA7CiMgNzk2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlw
ZUltYWdlIDsKIyA4MDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVENv
cmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlSlBFRyA7CiMgODE0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUpQRUcyMDAwIDsKIyA4MjMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVu
Y2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrVVRUeXBlVElGRiA7CiMgODMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a1VUVHlwZVBJQ1QgOwojIDg0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L1VUQ29yZVR5cGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVHSUYgOwoj
IDg1MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUQ29yZVR5cGVzLmgi
IDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVQTkcgOwojIDg1OSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5j
aFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUQ29yZVR5cGVzLmgiIDMKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtVVFR5cGVRdWlja1RpbWVJbWFnZSA7CiMgODY4ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2Vy
dmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga1VUVHlwZUFwcGxlSUNOUyA7CiMgODc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a1VUVHlwZUJNUCA7CiMgODg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
VVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUlDTyA7CiMg
OTgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIg
MwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUF1ZGlvdmlzdWFsQ29udGVudCA7CiMg
OTkxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIg
MwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZU1vdmllIDsKIyAxMDAwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1
bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVZpZGVvIDsKIyAxMDA5ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga1VUVHlwZUF1ZGlvIDsKIyAxMDE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hl
YWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVF1
aWNrVGltZU1vdmllIDsKIyAxMDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZU1QRUcg
OwojIDEwMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBl
cy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlTVBFRzQgOwojIDEwNDUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlTVAzIDsKIyAxMDU0ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga1VUVHlwZU1QRUc0QXVkaW8gOwojIDEwNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
VVRUeXBlQXBwbGVQcm90ZWN0ZWRNUEVHNEF1ZGlvIDsKIyAxMTE1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga1VUVHlwZUZvbGRlciA7CiMgMTEyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL1VUQ29yZVR5cGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5
cGVWb2x1bWUgOwojIDExMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9V
VENvcmVUeXBlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlUGFja2FnZSA7
CiMgMTE0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUQ29yZVR5cGVz
LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVCdW5kbGUgOwojIDExNTEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVENvcmVUeXBlcy5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlRnJhbWV3b3JrIDsKIyAxMTc5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNo
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga1VUVHlwZUFwcGxpY2F0aW9uQnVuZGxlIDsKIyAxMTg4ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNo
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRDb3JlVHlwZXMuaCIgMwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga1VUVHlwZUFwcGxpY2F0aW9uRmlsZSA7CiMgMTIwOCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUQ29yZVR5cGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtVVFR5cGVWQ2FyZCA7CiMgMTIyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzL1VUQ29yZVR5cGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtV
VFR5cGVJbmtUZXh0IDsKIyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L0xhdW5jaFNlcnZpY2VzLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdv
cmsvSGVhZGVycy9VVFR5cGUuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdv
cmsvSGVhZGVycy9VVFR5cGUuaCIgMwojZGVmaW5lIF9fVVRUWVBFX18gCiMgMzUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVu
Y2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVFR5cGUuaCIgMwpleHRlcm4gIkMiIHsKIyAy
MTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVFR5cGUuaCIgMwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VURXhwb3J0ZWRUeXBlRGVjbGFyYXRpb25zS2V5IDsKIyAy
MjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVFR5cGUuaCIgMwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUSW1wb3J0ZWRUeXBlRGVjbGFyYXRpb25zS2V5IDsKIyAy
MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVFR5cGUuaCIgMwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUlkZW50aWZpZXJLZXkgOwojIDI0NCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xh
dW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUVHlwZS5oIiAzCmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrVVRUeXBlVGFnU3BlY2lmaWNhdGlvbktleSA7CiMgMjUzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNo
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRUeXBlLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtVVFR5cGVDb25mb3Jtc1RvS2V5IDsKIyAyNjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9VVFR5cGUuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VU
VHlwZURlc2NyaXB0aW9uS2V5IDsKIyAyNzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9VVFR5cGUuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUljb25G
aWxlS2V5IDsKIyAyODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVFR5
cGUuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVJlZmVyZW5jZVVSTEtleSA7
CiMgMjg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRUeXBlLmgiIDMK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVWZXJzaW9uS2V5IDsKIyAzMDcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9M
YXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVFR5cGUuaCIgMwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiA7CiMgMzE2ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1
bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRUeXBlLmgiIDMKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtVVFRhZ0NsYXNzTUlNRVR5cGUgOwojIDMyNSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL1VUVHlwZS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
VVRUYWdDbGFzc05TUGJvYXJkVHlwZSA7CiMgMzM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvVVRUeXBlLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtVVFRhZ0Ns
YXNzT1NUeXBlIDsKIyAzODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9V
VFR5cGUuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYKVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRp
ZmllckZvclRhZygKICBDRlN0cmluZ1JlZiBpblRhZ0NsYXNzLAogIENGU3RyaW5nUmVmIGluVGFn
LAogIENGU3RyaW5nUmVmIGluQ29uZm9ybWluZ1RvVVRJKSA7CiMgNDM2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2Vy
dmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRUeXBlLmgiIDMKZXh0ZXJuIENGQXJyYXlSZWYKVVRU
eXBlQ3JlYXRlQWxsSWRlbnRpZmllcnNGb3JUYWcoCiAgQ0ZTdHJpbmdSZWYgaW5UYWdDbGFzcywK
ICBDRlN0cmluZ1JlZiBpblRhZywKICBDRlN0cmluZ1JlZiBpbkNvbmZvcm1pbmdUb1VUSSkgOwoj
IDQ3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUVHlwZS5oIiAzCmV4
dGVybiBDRlN0cmluZ1JlZgpVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKAogIENGU3Ry
aW5nUmVmIGluVVRJLAogIENGU3RyaW5nUmVmIGluVGFnQ2xhc3MpIDsKIyA1MDcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVu
Y2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVFR5cGUuaCIgMwpleHRlcm4gQm9vbGVhbgpV
VFR5cGVFcXVhbCgKICBDRlN0cmluZ1JlZiBpblVUSTEsCiAgQ0ZTdHJpbmdSZWYgaW5VVEkyKSA7
CiMgNTM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRUeXBlLmgiIDMK
ZXh0ZXJuIEJvb2xlYW4KVVRUeXBlQ29uZm9ybXNUbygKICBDRlN0cmluZ1JlZiBpblVUSSwKICBD
RlN0cmluZ1JlZiBpbkNvbmZvcm1zVG9VVEkpIDsKIyA1NjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9VVFR5cGUuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYKVVRUeXBlQ29w
eURlc2NyaXB0aW9uKENGU3RyaW5nUmVmIGluVVRJKSA7CiMgNTk3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGF1bmNoU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvVVRUeXBlLmgiIDMKZXh0ZXJuIENGRGljdGlvbmFyeVJlZgpV
VFR5cGVDb3B5RGVjbGFyYXRpb24oQ0ZTdHJpbmdSZWYgaW5VVEkpIDsKIyA2MjUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYXVu
Y2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVFR5cGUuaCIgMwpleHRlcm4gQ0ZVUkxSZWYK
VVRUeXBlQ29weURlY2xhcmluZ0J1bmRsZVVSTChDRlN0cmluZ1JlZiBpblVUSSkgOwojIDY1NCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VUVHlwZS5oIiAzCmV4dGVybiBD
RlN0cmluZ1JlZgpVVENyZWF0ZVN0cmluZ0Zvck9TVHlwZShPU1R5cGUgaW5PU1R5cGUpIDsKIyA2
ODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9MYXVuY2hTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9VVFR5cGUuaCIgMwpleHRl
cm4gT1NUeXBlClVUR2V0T1NUeXBlRnJvbVN0cmluZyhDRlN0cmluZ1JlZiBpblN0cmluZykgOwoK
CgoKCn0KIyA0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0xhdW5jaFNl
cnZpY2VzLmgiIDIgMwojIDQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZVNlcnZpY2VzLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFy
Y2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU2VhcmNoS2l0LmgiIDEgMwojIDIyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNo
S2l0LmZyYW1ld29yay9IZWFkZXJzL1NlYXJjaEtpdC5oIiAzCiNkZWZpbmUgX19TRUFSQ0hLSVRf
XyAKCgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0RvY3VtZW50
LmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLRG9jdW1lbnQu
aCIgMwojZGVmaW5lIF9fU0tET0NVTUVOVF9fIAojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29y
ay9IZWFkZXJzL1NLRG9jdW1lbnQuaCIgMwpleHRlcm4gIkMiIHsKIyA1MSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9TS0RvY3VtZW50LmgiIDMKdHlwZWRlZiBDRlR5cGVSZWYgU0tE
b2N1bWVudFJlZjsKIyA2NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0RvY3Vt
ZW50LmgiIDMKZXh0ZXJuIENGVHlwZUlEClNLRG9jdW1lbnRHZXRUeXBlSUQodm9pZCkgOwojIDk3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLRG9jdW1lbnQuaCIgMwpleHRlcm4g
U0tEb2N1bWVudFJlZgpTS0RvY3VtZW50Q3JlYXRlV2l0aFVSTChDRlVSTFJlZiBpblVSTCkgOwoj
IDExNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0RvY3VtZW50LmgiIDMKZXh0
ZXJuIENGVVJMUmVmClNLRG9jdW1lbnRDb3B5VVJMKFNLRG9jdW1lbnRSZWYgaW5Eb2N1bWVudCkg
OwojIDE1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0RvY3VtZW50LmgiIDMK
ZXh0ZXJuIFNLRG9jdW1lbnRSZWYKU0tEb2N1bWVudENyZWF0ZSgKICBDRlN0cmluZ1JlZiBpblNj
aGVtZSwKICBTS0RvY3VtZW50UmVmIGluUGFyZW50LAogIENGU3RyaW5nUmVmIGluTmFtZSkgOwoj
IDE4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0RvY3VtZW50LmgiIDMKZXh0
ZXJuIENGU3RyaW5nUmVmClNLRG9jdW1lbnRHZXRTY2hlbWVOYW1lKFNLRG9jdW1lbnRSZWYgaW5E
b2N1bWVudCkgOwojIDIwNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0RvY3Vt
ZW50LmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmClNLRG9jdW1lbnRHZXROYW1lKFNLRG9jdW1lbnRS
ZWYgaW5Eb2N1bWVudCkgOwojIDIyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9T
S0RvY3VtZW50LmgiIDMKZXh0ZXJuIFNLRG9jdW1lbnRSZWYKU0tEb2N1bWVudEdldFBhcmVudChT
S0RvY3VtZW50UmVmIGluRG9jdW1lbnQpIDsKCgoKCn0KIyAzMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9TZWFyY2hLaXQuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9TS0FuYWx5c2lzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1l
d29yay9IZWFkZXJzL1NLQW5hbHlzaXMuaCIgMwojZGVmaW5lIF9fU0tBTkFMWVNJU19fIAojIDU0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLQW5hbHlzaXMuaCIgMwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga1NLTWluVGVybUxlbmd0aCA7CiMgNzEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvU0tBbmFseXNpcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrU0tTdWJzdGl0dXRpb25zIDsKIyA4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9TS0FuYWx5c2lzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtTS1N0b3BXb3JkcyA7
CiMgMTA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLQW5hbHlzaXMuaCIgMwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1NLUHJveGltaXR5SW5kZXhpbmcgOwojIDEyNyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0FuYWx5c2lzLmgiIDMKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtTS01heGltdW1UZXJtcyA7CiMgMTQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1l
d29yay9IZWFkZXJzL1NLQW5hbHlzaXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1NL
VGVybUNoYXJzIDsKIyAxNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tBbmFs
eXNpcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrU0tTdGFydFRlcm1DaGFycyA7CiMg
MTg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLQW5hbHlzaXMuaCIgMwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga1NLRW5kVGVybUNoYXJzIDsKIyAyMDcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tBbmFseXNpcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrU0tMYW5ndWFnZVR5cGVzIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAzNSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TZWFyY2hLaXQuaCIgMiAzCgoKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0luZGV4LmgiIDEgMwojIDE3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
U2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLSW5kZXguaCIgMwojZGVmaW5lIF9fU0tJTkRF
WF9fIAojIDQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLSW5kZXguaCIgMwpl
eHRlcm4gIkMiIHsKIyA2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0luZGV4
LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX19TS0luZGV4KiBTS0luZGV4UmVmOwojIDc0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2Vh
cmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLSW5kZXguaCIgMwpleHRlcm4gQ0ZUeXBlSUQKU0tJ
bmRleEdldFR5cGVJRCh2b2lkKSA7CiMgODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvU0tJbmRleC5oIiAzCnR5cGVkZWYgc3RydWN0IF9fU0tJbmRleERvY3VtZW50SXRlcmF0b3Iq
IFNLSW5kZXhEb2N1bWVudEl0ZXJhdG9yUmVmOwojIDk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29y
ay9IZWFkZXJzL1NLSW5kZXguaCIgMwpleHRlcm4gQ0ZUeXBlSUQKU0tJbmRleERvY3VtZW50SXRl
cmF0b3JHZXRUeXBlSUQodm9pZCkgOwojIDExMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9TS0luZGV4LmgiIDMKZW51bSBTS0luZGV4VHlwZSB7CgoKCgogIGtTS0luZGV4VW5rbm93
biA9IDAsCgoKCgogIGtTS0luZGV4SW52ZXJ0ZWQgPSAxLAoKCgoKICBrU0tJbmRleFZlY3RvciA9
IDIsCgoKCgoKICBrU0tJbmRleEludmVydGVkVmVjdG9yID0gMwp9Owp0eXBlZGVmIGVudW0gU0tJ
bmRleFR5cGUgU0tJbmRleFR5cGU7CiMgMTQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFk
ZXJzL1NLSW5kZXguaCIgMwplbnVtIFNLRG9jdW1lbnRJbmRleFN0YXRlIHsKCgoKCiAga1NLRG9j
dW1lbnRTdGF0ZU5vdEluZGV4ZWQgPSAwLAoKCgoKICBrU0tEb2N1bWVudFN0YXRlSW5kZXhlZCA9
IDEsCgoKCgoKICBrU0tEb2N1bWVudFN0YXRlQWRkUGVuZGluZyA9IDIsCgoKCgoKICBrU0tEb2N1
bWVudFN0YXRlRGVsZXRlUGVuZGluZyA9IDMKfTsKdHlwZWRlZiBlbnVtIFNLRG9jdW1lbnRJbmRl
eFN0YXRlIFNLRG9jdW1lbnRJbmRleFN0YXRlOwojIDIxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9TS0luZGV4LmgiIDMKZXh0ZXJuIFNLSW5kZXhSZWYKU0tJbmRleENyZWF0ZVdp
dGhVUkwoCiAgQ0ZVUkxSZWYgaW5VUkwsCiAgQ0ZTdHJpbmdSZWYgaW5JbmRleE5hbWUsCiAgU0tJ
bmRleFR5cGUgaW5JbmRleFR5cGUsCiAgQ0ZEaWN0aW9uYXJ5UmVmIGluQW5hbHlzaXNQcm9wZXJ0
aWVzKSA7CiMgMjU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLSW5kZXguaCIg
MwpleHRlcm4gU0tJbmRleFJlZgpTS0luZGV4T3BlbldpdGhVUkwoCiAgQ0ZVUkxSZWYgaW5VUkws
CiAgQ0ZTdHJpbmdSZWYgaW5JbmRleE5hbWUsCiAgQm9vbGVhbiBpbldyaXRlQWNjZXNzKSA7CiMg
MjkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLSW5kZXguaCIgMwpleHRlcm4g
U0tJbmRleFJlZgpTS0luZGV4Q3JlYXRlV2l0aE11dGFibGVEYXRhKAogIENGTXV0YWJsZURhdGFS
ZWYgaW5EYXRhLAogIENGU3RyaW5nUmVmIGluSW5kZXhOYW1lLAogIFNLSW5kZXhUeXBlIGluSW5k
ZXhUeXBlLAogIENGRGljdGlvbmFyeVJlZiBpbkFuYWx5c2lzUHJvcGVydGllcykgOwojIDMzMCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0luZGV4LmgiIDMKZXh0ZXJuIFNLSW5k
ZXhSZWYKU0tJbmRleE9wZW5XaXRoRGF0YSgKICBDRkRhdGFSZWYgaW5EYXRhLAogIENGU3RyaW5n
UmVmIGluSW5kZXhOYW1lKSA7CiMgMzY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJz
L1NLSW5kZXguaCIgMwpleHRlcm4gU0tJbmRleFJlZgpTS0luZGV4T3BlbldpdGhNdXRhYmxlRGF0
YSgKICBDRk11dGFibGVEYXRhUmVmIGluRGF0YSwKICBDRlN0cmluZ1JlZiBpbkluZGV4TmFtZSkg
OwojIDM5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0luZGV4LmgiIDMKZXh0
ZXJuIEJvb2xlYW4KU0tJbmRleEZsdXNoKFNLSW5kZXhSZWYgaW5JbmRleCkgOwojIDQwOCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0luZGV4LmgiIDMKZXh0ZXJuIHZvaWQKU0tJ
bmRleFNldE1heGltdW1CeXRlc0JlZm9yZUZsdXNoKAogIFNLSW5kZXhSZWYgaW5JbmRleCwKICBD
RkluZGV4IGluQnl0ZXNGb3JVcGRhdGUpIDsKIyA0MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvU0tJbmRleC5oIiAzCmV4dGVybiBDRkluZGV4ClNLSW5kZXhHZXRNYXhpbXVtQnl0
ZXNCZWZvcmVGbHVzaChTS0luZGV4UmVmIGluSW5kZXgpIDsKIyA0NTUgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvU0tJbmRleC5oIiAzCmV4dGVybiBCb29sZWFuClNLSW5kZXhDb21w
YWN0KFNLSW5kZXhSZWYgaW5JbmRleCkgOwojIDQ3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9TS0luZGV4LmgiIDMKZXh0ZXJuIFNLSW5kZXhUeXBlClNLSW5kZXhHZXRJbmRleFR5
cGUoU0tJbmRleFJlZiBpbkluZGV4KSA7CiMgNDk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9I
ZWFkZXJzL1NLSW5kZXguaCIgMwpleHRlcm4gQ0ZEaWN0aW9uYXJ5UmVmClNLSW5kZXhHZXRBbmFs
eXNpc1Byb3BlcnRpZXMoU0tJbmRleFJlZiBpbkluZGV4KSA7CiMgNTIxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0
LmZyYW1ld29yay9IZWFkZXJzL1NLSW5kZXguaCIgMwpleHRlcm4gQ0ZJbmRleApTS0luZGV4R2V0
RG9jdW1lbnRDb3VudChTS0luZGV4UmVmIGluSW5kZXgpIDsKIyA1MzYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvU0tJbmRleC5oIiAzCmV4dGVybiB2b2lkClNLSW5kZXhDbG9zZShT
S0luZGV4UmVmIGluSW5kZXgpIDsKCgoKCgp0eXBlZGVmIENGSW5kZXggU0tEb2N1bWVudElEOwoj
IDU3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0luZGV4LmgiIDMKZXh0ZXJu
IEJvb2xlYW4KU0tJbmRleEFkZERvY3VtZW50V2l0aFRleHQoCiAgU0tJbmRleFJlZiBpbkluZGV4
LAogIFNLRG9jdW1lbnRSZWYgaW5Eb2N1bWVudCwKICBDRlN0cmluZ1JlZiBpbkRvY3VtZW50VGV4
dCwKICBCb29sZWFuIGluQ2FuUmVwbGFjZSkgOwojIDYyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9TS0luZGV4LmgiIDMKZXh0ZXJuIEJvb2xlYW4KU0tJbmRleEFkZERvY3VtZW50
KAogIFNLSW5kZXhSZWYgaW5JbmRleCwKICBTS0RvY3VtZW50UmVmIGluRG9jdW1lbnQsCiAgQ0ZT
dHJpbmdSZWYgaW5NSU1FVHlwZUhpbnQsCiAgQm9vbGVhbiBpbkNhblJlcGxhY2UpIDsKIyA2NTUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tJbmRleC5oIiAzCmV4dGVybiBCb29s
ZWFuClNLSW5kZXhSZW1vdmVEb2N1bWVudCgKICBTS0luZGV4UmVmIGluSW5kZXgsCiAgU0tEb2N1
bWVudFJlZiBpbkRvY3VtZW50KSA7CiMgNjc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFk
ZXJzL1NLSW5kZXguaCIgMwpleHRlcm4gQ0ZEaWN0aW9uYXJ5UmVmClNLSW5kZXhDb3B5RG9jdW1l
bnRQcm9wZXJ0aWVzKAogIFNLSW5kZXhSZWYgaW5JbmRleCwKICBTS0RvY3VtZW50UmVmIGluRG9j
dW1lbnQpIDsKIyA2OTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tJbmRleC5o
IiAzCmV4dGVybiB2b2lkClNLSW5kZXhTZXREb2N1bWVudFByb3BlcnRpZXMoCiAgU0tJbmRleFJl
ZiBpbkluZGV4LAogIFNLRG9jdW1lbnRSZWYgaW5Eb2N1bWVudCwKICBDRkRpY3Rpb25hcnlSZWYg
aW5Qcm9wZXJ0aWVzKSA7CiMgNzIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NL
SW5kZXguaCIgMwpleHRlcm4gU0tEb2N1bWVudEluZGV4U3RhdGUKU0tJbmRleEdldERvY3VtZW50
U3RhdGUoCiAgU0tJbmRleFJlZiBpbkluZGV4LAogIFNLRG9jdW1lbnRSZWYgaW5Eb2N1bWVudCkg
OwojIDc0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0luZGV4LmgiIDMKZXh0
ZXJuIFNLRG9jdW1lbnRJRApTS0luZGV4R2V0RG9jdW1lbnRJRCgKICBTS0luZGV4UmVmIGluSW5k
ZXgsCiAgU0tEb2N1bWVudFJlZiBpbkRvY3VtZW50KSA7CiMgNzU4ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZy
YW1ld29yay9IZWFkZXJzL1NLSW5kZXguaCIgMwpleHRlcm4gU0tEb2N1bWVudFJlZgpTS0luZGV4
Q29weURvY3VtZW50Rm9yRG9jdW1lbnRJRCgKICBTS0luZGV4UmVmIGluSW5kZXgsCiAgU0tEb2N1
bWVudElEIGluRG9jdW1lbnRJRCkgOwojIDc3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9TS0luZGV4LmgiIDMKZXh0ZXJuIEJvb2xlYW4KU0tJbmRleFJlbmFtZURvY3VtZW50KAog
IFNLSW5kZXhSZWYgaW5JbmRleCwKICBTS0RvY3VtZW50UmVmIGluRG9jdW1lbnQsCiAgQ0ZTdHJp
bmdSZWYgaW5OZXdOYW1lKSA7CiMgNzkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJz
L1NLSW5kZXguaCIgMwpleHRlcm4gQm9vbGVhbgpTS0luZGV4TW92ZURvY3VtZW50KAogIFNLSW5k
ZXhSZWYgaW5JbmRleCwKICBTS0RvY3VtZW50UmVmIGluRG9jdW1lbnQsCiAgU0tEb2N1bWVudFJl
ZiBpbk5ld1BhcmVudCkgOwojIDgxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9T
S0luZGV4LmgiIDMKZXh0ZXJuIFNLSW5kZXhEb2N1bWVudEl0ZXJhdG9yUmVmClNLSW5kZXhEb2N1
bWVudEl0ZXJhdG9yQ3JlYXRlKAogIFNLSW5kZXhSZWYgaW5JbmRleCwKICBTS0RvY3VtZW50UmVm
IGluUGFyZW50RG9jdW1lbnQpIDsKIyA4MzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvU0tJbmRleC5oIiAzCmV4dGVybiBTS0RvY3VtZW50UmVmClNLSW5kZXhEb2N1bWVudEl0ZXJh
dG9yQ29weU5leHQoU0tJbmRleERvY3VtZW50SXRlcmF0b3JSZWYgaW5JdGVyYXRvcikgOwojIDg1
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0luZGV4LmgiIDMKZXh0ZXJuIFNL
RG9jdW1lbnRJRApTS0luZGV4R2V0TWF4aW11bURvY3VtZW50SUQoU0tJbmRleFJlZiBpbkluZGV4
KSA7CiMgODY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLSW5kZXguaCIgMwpl
eHRlcm4gQ0ZJbmRleApTS0luZGV4R2V0RG9jdW1lbnRUZXJtQ291bnQoCiAgU0tJbmRleFJlZiBp
bkluZGV4LAogIFNLRG9jdW1lbnRJRCBpbkRvY3VtZW50SUQpIDsKIyA4ODcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tJbmRleC5oIiAzCmV4dGVybiBDRkFycmF5UmVmClNLSW5k
ZXhDb3B5VGVybUlEQXJyYXlGb3JEb2N1bWVudElEKAogIFNLSW5kZXhSZWYgaW5JbmRleCwKICBT
S0RvY3VtZW50SUQgaW5Eb2N1bWVudElEKSA7CiMgOTA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29y
ay9IZWFkZXJzL1NLSW5kZXguaCIgMwpleHRlcm4gQ0ZJbmRleApTS0luZGV4R2V0RG9jdW1lbnRU
ZXJtRnJlcXVlbmN5KAogIFNLSW5kZXhSZWYgaW5JbmRleCwKICBTS0RvY3VtZW50SUQgaW5Eb2N1
bWVudElELAogIENGSW5kZXggaW5UZXJtSUQpIDsKIyA5MjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvU0tJbmRleC5oIiAzCmV4dGVybiBDRkluZGV4ClNLSW5kZXhHZXRNYXhpbXVt
VGVybUlEKFNLSW5kZXhSZWYgaW5JbmRleCkgOwojIDk0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9TS0luZGV4LmgiIDMKZXh0ZXJuIENGSW5kZXgKU0tJbmRleEdldFRlcm1Eb2N1
bWVudENvdW50KAogIFNLSW5kZXhSZWYgaW5JbmRleCwKICBDRkluZGV4IGluVGVybUlEKSA7CiMg
OTYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLSW5kZXguaCIgMwpleHRlcm4g
Q0ZBcnJheVJlZgpTS0luZGV4Q29weURvY3VtZW50SURBcnJheUZvclRlcm1JRCgKICBTS0luZGV4
UmVmIGluSW5kZXgsCiAgQ0ZJbmRleCBpblRlcm1JRCkgOwojIDk3OSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9TS0luZGV4LmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmClNLSW5kZXhD
b3B5VGVybVN0cmluZ0ZvclRlcm1JRCgKICBTS0luZGV4UmVmIGluSW5kZXgsCiAgQ0ZJbmRleCBp
blRlcm1JRCkgOwojIDk5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS0luZGV4
LmgiIDMKZXh0ZXJuIENGSW5kZXgKU0tJbmRleEdldFRlcm1JREZvclRlcm1TdHJpbmcoCiAgU0tJ
bmRleFJlZiBpbkluZGV4LAogIENGU3RyaW5nUmVmIGluVGVybVN0cmluZykgOwojIDEwMjUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tJbmRleC5oIiAzCmV4dGVybiB2b2lkClNL
TG9hZERlZmF1bHRFeHRyYWN0b3JQbHVnSW5zKHZvaWQpIDsKIyAxMDM1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0
LmZyYW1ld29yay9IZWFkZXJzL1NLSW5kZXguaCIgMwp9CiMgMzkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvU2VhcmNoS2l0LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvU0tTZWFyY2guaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvU0tTZWFyY2guaCIgMwojZGVmaW5lIF9fU0tTRUFSQ0hfXyAKIyA1MiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS1NlYXJjaC5oIiAzCmV4dGVybiAiQyIgewoj
IDY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLU2VhcmNoLmgiIDMKdHlwZWRl
ZiBzdHJ1Y3QgX19TS1NlYXJjaCogU0tTZWFyY2hSZWY7CiMgNzggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvU0tTZWFyY2guaCIgMwpleHRlcm4gQ0ZUeXBlSUQKU0tTZWFyY2hHZXRU
eXBlSUQodm9pZCkgOwojIDkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLU2Vh
cmNoLmgiIDMKdHlwZWRlZiBVSW50MzIgU0tTZWFyY2hPcHRpb25zOwplbnVtIHsKICBrU0tTZWFy
Y2hPcHRpb25EZWZhdWx0ID0gMCwKICBrU0tTZWFyY2hPcHRpb25Ob1JlbGV2YW5jZVNjb3JlcyA9
IDFMIDw8IDAsCiAga1NLU2VhcmNoT3B0aW9uU3BhY2VNZWFuc09SID0gMUwgPDwgMSwKICBrU0tT
ZWFyY2hPcHRpb25GaW5kU2ltaWxhciA9IDFMIDw8IDIKfTsKIyAxMjggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvU0tTZWFyY2guaCIgMwpleHRlcm4gU0tTZWFyY2hSZWYKU0tTZWFy
Y2hDcmVhdGUoCiAgU0tJbmRleFJlZiBpbkluZGV4LAogIENGU3RyaW5nUmVmIGluUXVlcnksCiAg
U0tTZWFyY2hPcHRpb25zIGluU2VhcmNoT3B0aW9ucykgOwojIDE0NiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9TS1NlYXJjaC5oIiAzCmV4dGVybiB2b2lkClNLU2VhcmNoQ2FuY2Vs
KFNLU2VhcmNoUmVmIGluU2VhcmNoKSA7CiMgMTk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9I
ZWFkZXJzL1NLU2VhcmNoLmgiIDMKZXh0ZXJuIEJvb2xlYW4KU0tTZWFyY2hGaW5kTWF0Y2hlcygK
ICBTS1NlYXJjaFJlZiBpblNlYXJjaCwKICBDRkluZGV4IGluTWF4aW11bUNvdW50LAogIFNLRG9j
dW1lbnRJRCAqIG91dERvY3VtZW50SURzQXJyYXksCiAgZmxvYXQgKiBvdXRTY29yZXNBcnJheSwK
ICBDRlRpbWVJbnRlcnZhbCBtYXhpbXVtVGltZSwKICBDRkluZGV4ICogb3V0Rm91bmRDb3VudCkg
OwojIDIzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS1NlYXJjaC5oIiAzCmV4
dGVybiB2b2lkClNLSW5kZXhDb3B5SW5mb0ZvckRvY3VtZW50SURzKAogIFNLSW5kZXhSZWYgaW5J
bmRleCwKICBDRkluZGV4IGluQ291bnQsCiAgU0tEb2N1bWVudElEICogaW5Eb2N1bWVudElEc0Fy
cmF5LAogIENGU3RyaW5nUmVmICogb3V0TmFtZXNBcnJheSwKICBTS0RvY3VtZW50SUQgKiBvdXRQ
YXJlbnRJRHNBcnJheSkgOwojIDI2OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9T
S1NlYXJjaC5oIiAzCmV4dGVybiB2b2lkClNLSW5kZXhDb3B5RG9jdW1lbnRSZWZzRm9yRG9jdW1l
bnRJRHMoCiAgU0tJbmRleFJlZiBpbkluZGV4LAogIENGSW5kZXggaW5Db3VudCwKICBTS0RvY3Vt
ZW50SUQgKiBpbkRvY3VtZW50SURzQXJyYXksCiAgU0tEb2N1bWVudFJlZiAqIG91dERvY3VtZW50
UmVmc0FycmF5KSA7CiMgMzAyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLU2Vh
cmNoLmgiIDMKZXh0ZXJuIHZvaWQKU0tJbmRleENvcHlEb2N1bWVudFVSTHNGb3JEb2N1bWVudElE
cygKICBTS0luZGV4UmVmIGluSW5kZXgsCiAgQ0ZJbmRleCBpbkNvdW50LAogIFNLRG9jdW1lbnRJ
RCAqIGluRG9jdW1lbnRJRHNBcnJheSwKICBDRlVSTFJlZiAqIG91dERvY3VtZW50VVJMc0FycmF5
KSA7CiMgMzIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLU2VhcmNoLmgiIDMK
dHlwZWRlZiBzdHJ1Y3QgX19TS1NlYXJjaEdyb3VwKiBTS1NlYXJjaEdyb3VwUmVmOwojIDMzNSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS1NlYXJjaC5oIiAzCmV4dGVybiBDRlR5
cGVJRApTS1NlYXJjaEdyb3VwR2V0VHlwZUlEKHZvaWQpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKIyAzNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tTZWFyY2guaCIg
Mwp0eXBlZGVmIHN0cnVjdCBfX1NLU2VhcmNoUmVzdWx0cyogU0tTZWFyY2hSZXN1bHRzUmVmOwoj
IDM1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS1NlYXJjaC5oIiAzCmV4dGVy
biBDRlR5cGVJRApTS1NlYXJjaFJlc3VsdHNHZXRUeXBlSUQodm9pZCkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDM3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS1Nl
YXJjaC5oIiAzCmVudW0gU0tTZWFyY2hUeXBlIHsKCgoKCiAga1NLU2VhcmNoUmFua2VkID0gMCwK
CgoKCgogIGtTS1NlYXJjaEJvb2xlYW5SYW5rZWQgPSAxLAoKCgoKICBrU0tTZWFyY2hSZXF1aXJl
ZFJhbmtlZCA9IDIsCgoKCgogIGtTS1NlYXJjaFByZWZpeFJhbmtlZCA9IDMKfTsKdHlwZWRlZiBl
bnVtIFNLU2VhcmNoVHlwZSBTS1NlYXJjaFR5cGU7CiMgNDExICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1l
d29yay9IZWFkZXJzL1NLU2VhcmNoLmgiIDMKdHlwZWRlZiBCb29sZWFuICggKiBTS1NlYXJjaFJl
c3VsdHNGaWx0ZXJDYWxsQmFjaykoU0tJbmRleFJlZiBpbkluZGV4LCBTS0RvY3VtZW50UmVmIGlu
RG9jdW1lbnQsIHZvaWQgKmluQ29udGV4dCk7CiMgNDM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29y
ay9IZWFkZXJzL1NLU2VhcmNoLmgiIDMKZXh0ZXJuIFNLU2VhcmNoR3JvdXBSZWYKU0tTZWFyY2hH
cm91cENyZWF0ZShDRkFycmF5UmVmIGluQXJyYXlPZkluSW5kZXhlcykgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDQ1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS1Nl
YXJjaC5oIiAzCmV4dGVybiBDRkFycmF5UmVmClNLU2VhcmNoR3JvdXBDb3B5SW5kZXhlcyhTS1Nl
YXJjaEdyb3VwUmVmIGluU2VhcmNoR3JvdXApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsK
IyA0OTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tTZWFyY2guaCIgMwpleHRl
cm4gU0tTZWFyY2hSZXN1bHRzUmVmClNLU2VhcmNoUmVzdWx0c0NyZWF0ZVdpdGhRdWVyeSgKICBT
S1NlYXJjaEdyb3VwUmVmIGluU2VhcmNoR3JvdXAsCiAgQ0ZTdHJpbmdSZWYgaW5RdWVyeSwKICBT
S1NlYXJjaFR5cGUgaW5TZWFyY2hUeXBlLAogIENGSW5kZXggaW5NYXhGb3VuZERvY3VtZW50cywK
ICB2b2lkICogaW5Db250ZXh0LAogIFNLU2VhcmNoUmVzdWx0c0ZpbHRlckNhbGxCYWNrIGluRmls
dGVyQ2FsbEJhY2spIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA1NDggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFy
Y2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tTZWFyY2guaCIgMwpleHRlcm4gU0tTZWFyY2hSZXN1
bHRzUmVmClNLU2VhcmNoUmVzdWx0c0NyZWF0ZVdpdGhEb2N1bWVudHMoCiAgU0tTZWFyY2hHcm91
cFJlZiBpblNlYXJjaEdyb3VwLAogIENGQXJyYXlSZWYgaW5FeGFtcGxlRG9jdW1lbnRzLAogIENG
SW5kZXggaW5NYXhGb3VuZERvY3VtZW50cywKICB2b2lkICogaW5Db250ZXh0LAogIFNLU2VhcmNo
UmVzdWx0c0ZpbHRlckNhbGxCYWNrIGluRmlsdGVyQ2FsbEJhY2spIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKIyA1NjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tTZWFy
Y2guaCIgMwpleHRlcm4gQ0ZJbmRleApTS1NlYXJjaFJlc3VsdHNHZXRDb3VudChTS1NlYXJjaFJl
c3VsdHNSZWYgaW5TZWFyY2hSZXN1bHRzKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMg
NjE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLU2VhcmNoLmgiIDMKZXh0ZXJu
IENGSW5kZXgKU0tTZWFyY2hSZXN1bHRzR2V0SW5mb0luUmFuZ2UoCiAgU0tTZWFyY2hSZXN1bHRz
UmVmIGluU2VhcmNoUmVzdWx0cywKICBDRlJhbmdlIGluUmFuZ2UsCiAgU0tEb2N1bWVudFJlZiAq
IG91dERvY3VtZW50c0FycmF5LAogIFNLSW5kZXhSZWYgKiBvdXRJbmRleGVzQXJyYXksCiAgZmxv
YXQgKiBvdXRTY29yZXNBcnJheSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDY0OSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS1NlYXJjaC5oIiAzCmV4dGVybiBDRkFy
cmF5UmVmClNLU2VhcmNoUmVzdWx0c0NvcHlNYXRjaGluZ1Rlcm1zKAogIFNLU2VhcmNoUmVzdWx0
c1JlZiBpblNlYXJjaFJlc3VsdHMsCiAgQ0ZJbmRleCBpbkl0ZW0pIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKIyA2NjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tTZWFy
Y2guaCIgMwp9CiMgNDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU2VhcmNoS2l0
LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tTdW1tYXJ5
LmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLU3VtbWFyeS5o
IiAzCiNkZWZpbmUgX19TS1NVTU1BUllfXyAKIyAzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9TS1N1bW1hcnkuaCIgMwpleHRlcm4gIkMiIHsKIyA1MyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9TS1N1bW1hcnkuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX1NLU3VtbWFy
eSogU0tTdW1tYXJ5UmVmOwojIDY4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NL
U3VtbWFyeS5oIiAzCmV4dGVybiBDRlR5cGVJRApTS1N1bW1hcnlHZXRUeXBlSUQodm9pZCkgOwoj
IDk2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLU3VtbWFyeS5oIiAzCmV4dGVy
biBTS1N1bW1hcnlSZWYKU0tTdW1tYXJ5Q3JlYXRlV2l0aFN0cmluZyhDRlN0cmluZ1JlZiBpblN0
cmluZykgOwojIDExNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS1N1bW1hcnku
aCIgMwpleHRlcm4gQ0ZJbmRleApTS1N1bW1hcnlHZXRTZW50ZW5jZUNvdW50KFNLU3VtbWFyeVJl
ZiBzdW1tYXJ5KSA7CiMgMTM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLU3Vt
bWFyeS5oIiAzCmV4dGVybiBDRkluZGV4ClNLU3VtbWFyeUdldFBhcmFncmFwaENvdW50KFNLU3Vt
bWFyeVJlZiBzdW1tYXJ5KSA7CiMgMTU5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJz
L1NLU3VtbWFyeS5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZgpTS1N1bW1hcnlDb3B5U2VudGVuY2VB
dEluZGV4KAogIFNLU3VtbWFyeVJlZiBzdW1tYXJ5LAogIENGSW5kZXggaSkgOwojIDE4NCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS1N1bW1hcnkuaCIgMwpleHRlcm4gQ0ZTdHJp
bmdSZWYKU0tTdW1tYXJ5Q29weVBhcmFncmFwaEF0SW5kZXgoCiAgU0tTdW1tYXJ5UmVmIHN1bW1h
cnksCiAgQ0ZJbmRleCBpKSA7CiMgMjEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJz
L1NLU3VtbWFyeS5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZgpTS1N1bW1hcnlDb3B5U2VudGVuY2VT
dW1tYXJ5U3RyaW5nKAogIFNLU3VtbWFyeVJlZiBzdW1tYXJ5LAogIENGSW5kZXggbnVtU2VudGVu
Y2VzKSA7CiMgMjM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9IZWFkZXJzL1NLU3VtbWFyeS5o
IiAzCmV4dGVybiBDRlN0cmluZ1JlZgpTS1N1bW1hcnlDb3B5UGFyYWdyYXBoU3VtbWFyeVN0cmlu
ZygKICBTS1N1bW1hcnlSZWYgc3VtbWFyeSwKICBDRkluZGV4IG51bVBhcmFncmFwaHMpIDsKIyAy
NzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9TZWFyY2hLaXQuZnJhbWV3b3JrL0hlYWRlcnMvU0tTdW1tYXJ5LmgiIDMKZXh0ZXJu
IENGSW5kZXgKU0tTdW1tYXJ5R2V0U2VudGVuY2VTdW1tYXJ5SW5mbygKICBTS1N1bW1hcnlSZWYg
c3VtbWFyeSwKICBDRkluZGV4IG51bVNlbnRlbmNlc0luU3VtbWFyeSwKICBDRkluZGV4ICogb3V0
UmFua09yZGVyT2ZTZW50ZW5jZXMsCiAgQ0ZJbmRleCAqIG91dFNlbnRlbmNlSW5kZXhPZlNlbnRl
bmNlcywKICBDRkluZGV4ICogb3V0UGFyYWdyYXBoSW5kZXhPZlNlbnRlbmNlcykgOwojIDMxNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TS1N1bW1hcnkuaCIgMwpleHRlcm4gQ0ZJ
bmRleApTS1N1bW1hcnlHZXRQYXJhZ3JhcGhTdW1tYXJ5SW5mbygKICBTS1N1bW1hcnlSZWYgc3Vt
bWFyeSwKICBDRkluZGV4IG51bVBhcmFncmFwaHNJblN1bW1hcnksCiAgQ0ZJbmRleCAqIG91dFJh
bmtPcmRlck9mUGFyYWdyYXBocywKICBDRkluZGV4ICogb3V0UGFyYWdyYXBoSW5kZXhPZlBhcmFn
cmFwaHMpIDsKCgoKCn0KIyA0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvSGVhZGVycy9TZWFy
Y2hLaXQuaCIgMiAzCiMgNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlU2VydmljZXMuaCIgMiAzCgoKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRh
dGEuZnJhbWV3b3JrL0hlYWRlcnMvTWV0YWRhdGEuaCIgMSAzCgoKCgoKCiNkZWZpbmUgX19NRVRB
REFUQV9NRVRBREFUQV9fIDEKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9N
REl0ZW0uaCIgMSAzCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NREl0ZW0u
aCIgMwojZGVmaW5lIF9fTURJVEVNX18gMQojIDQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hl
YWRlcnMvTURJdGVtLmgiIDMKI2RlZmluZSBNRF9FWFBPUlQgZXh0ZXJuCgojZGVmaW5lIE1EX0FW
QUlMIEFWQUlMQUJMRV9NQUNfT1NfWF9WRVJTSU9OXzEwXzRfQU5EX0xBVEVSCiNkZWZpbmUgTURf
QVZBSUxfTEVPUEFSRCBBVkFJTEFCTEVfTUFDX09TX1hfVkVSU0lPTl8xMF81X0FORF9MQVRFUgoK
I2RlZmluZSBNRF9CRUdJTl9DX0RFQ0xTIGV4dGVybiAiQyIgewojZGVmaW5lIE1EX0VORF9DX0RF
Q0xTIH0KCgoKCgoKCiNkZWZpbmUgTURfREVQUkVDQVRFRCBfX2F0dHJpYnV0ZV9fICgoZGVwcmVj
YXRlZCkpCgoKCmV4dGVybiAiQyIgewoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX01ESXRlbSAqTURJ
dGVtUmVmOwoKCgoKCmV4dGVybiBDRlR5cGVJRCBNREl0ZW1HZXRUeXBlSUQodm9pZCkgOwojIDg5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURJdGVtLmgiIDMKZXh0ZXJuIE1ESXRl
bVJlZiBNREl0ZW1DcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBw
YXRoKSA7CiMgMTAzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURJdGVtLmgiIDMK
ZXh0ZXJuIE1ESXRlbVJlZiBNREl0ZW1DcmVhdGVXaXRoVVJMKENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvciwgQ0ZVUkxSZWYgdXJsKSA7CiMgMTEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRl
cnMvTURJdGVtLmgiIDMKZXh0ZXJuIENGVHlwZVJlZiBNREl0ZW1Db3B5QXR0cmlidXRlKE1ESXRl
bVJlZiBpdGVtLCBDRlN0cmluZ1JlZiBuYW1lKSA7CiMgMTI2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3
b3JrL0hlYWRlcnMvTURJdGVtLmgiIDMKZXh0ZXJuIENGRGljdGlvbmFyeVJlZiBNREl0ZW1Db3B5
QXR0cmlidXRlcyhNREl0ZW1SZWYgaXRlbSwgQ0ZBcnJheVJlZiBuYW1lcykgOwojIDE0MCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L01ldGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01ESXRlbS5oIiAzCmV4dGVybiBDRkRpY3Rpb25h
cnlSZWYgTURJdGVtQ29weUF0dHJpYnV0ZUxpc3QoTURJdGVtUmVmIGl0ZW0sIC4uLiApIDsKIyAx
NDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NREl0ZW0uaCIgMwpleHRlcm4gQ0ZB
cnJheVJlZiBNREl0ZW1Db3B5QXR0cmlidXRlTmFtZXMoTURJdGVtUmVmIGl0ZW0pIDsKIyA0MjUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NREl0ZW0uaCIgMwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga01ESXRlbUF0dHJpYnV0ZUNoYW5nZURhdGUgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga01ESXRlbUNvbnRlbnRUeXBlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtN
REl0ZW1Db250ZW50VHlwZVRyZWUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUtl
eXdvcmRzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1UaXRsZSA7CmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrTURJdGVtQXV0aG9ycyA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrTURJdGVtRWRpdG9ycyA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtUGFydGlj
aXBhbnRzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1Qcm9qZWN0cyA7CmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtV2hlcmVGcm9tcyA7CmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrTURJdGVtQ29tbWVudCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVt
Q29weXJpZ2h0IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1MYXN0VXNlZERhdGUg
OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUNvbnRlbnRDcmVhdGlvbkRhdGUgOwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUNvbnRlbnRNb2RpZmljYXRpb25EYXRlIDsK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1EdXJhdGlvblNlY29uZHMgOwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUNvbnRhY3RLZXl3b3JkcyA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrTURJdGVtVmVyc2lvbiA7CgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01E
SXRlbVBpeGVsSGVpZ2h0IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1QaXhlbFdp
ZHRoIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1QaXhlbENvdW50IDsKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1Db2xvclNwYWNlIDsKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtNREl0ZW1CaXRzUGVyU2FtcGxlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtN
REl0ZW1GbGFzaE9uT2ZmIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1Gb2NhbExl
bmd0aCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtQWNxdWlzaXRpb25NYWtlIDsK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1BY3F1aXNpdGlvbk1vZGVsIDsKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1JU09TcGVlZCA7CmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrTURJdGVtT3JpZW50YXRpb24gOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRl
bUxheWVyTmFtZXMgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbVdoaXRlQmFsYW5j
ZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtQXBlcnR1cmUgOwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga01ESXRlbVByb2ZpbGVOYW1lIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtNREl0ZW1SZXNvbHV0aW9uV2lkdGhEUEkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a01ESXRlbVJlc29sdXRpb25IZWlnaHREUEkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01E
SXRlbUV4cG9zdXJlTW9kZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtRXhwb3N1
cmVUaW1lU2Vjb25kcyA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtRVhJRlZlcnNp
b24gOwoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1FWElGR1BTVmVyc2lvbiA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtQWx0aXR1ZGUgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga01ESXRlbUxhdGl0dWRlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0
ZW1Mb25naXR1ZGUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbVNwZWVkIDsKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1UaW1lc3RhbXAgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga01ESXRlbUdQU1RyYWNrIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0
ZW1JbWFnZURpcmVjdGlvbiA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtTmFtZWRM
b2NhdGlvbiA7CgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUNvZGVjcyA7CmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtTWVkaWFUeXBlcyA7CmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrTURJdGVtU3RyZWFtYWJsZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJ
dGVtVG90YWxCaXRSYXRlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1WaWRlb0Jp
dFJhdGUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUF1ZGlvQml0UmF0ZSA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtRGVsaXZlcnlUeXBlIDsKCmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrTURJdGVtQWxidW0gOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01E
SXRlbUhhc0FscGhhQ2hhbm5lbCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtUmVk
RXllT25PZmYgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbU1ldGVyaW5nTW9kZSA7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtTWF4QXBlcnR1cmUgOwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga01ESXRlbUZOdW1iZXIgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a01ESXRlbUV4cG9zdXJlUHJvZ3JhbSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVt
RXhwb3N1cmVUaW1lU3RyaW5nIDsKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUhl
YWRsaW5lIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1JbnN0cnVjdGlvbnMgOwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUNpdHkgOwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga01ESXRlbVN0YXRlT3JQcm92aW5jZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
TURJdGVtQ291bnRyeSA7CiMgNTU5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURJ
dGVtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1GU05hbWUgOwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbURpc3BsYXlOYW1lIDsKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtNREl0ZW1QYXRoIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1GU1Np
emUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUZTQ3JlYXRpb25EYXRlIDsKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1GU0NvbnRlbnRDaGFuZ2VEYXRlIDsKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1GU093bmVyVXNlcklEIDsKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtNREl0ZW1GU093bmVyR3JvdXBJRCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrTURJdGVtRlNFeGlzdHMgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga01ESXRlbUZTSXNSZWFkYWJsZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtRlNJc1dyaXRlYWJsZSBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVt
RlNIYXNDdXN0b21JY29uIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1GU0lzRXh0
ZW5zaW9uSGlkZGVuIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1GU0lzU3RhdGlv
bmVyeSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtRlNJbnZpc2libGUgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUZTTGFiZWwgOwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga01ESXRlbUZTTm9kZUNvdW50IDsKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJ
dGVtVGV4dENvbnRlbnQgOwojIDYzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01E
SXRlbS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtQXVkaW9TYW1wbGVSYXRl
IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1BdWRpb0NoYW5uZWxDb3VudCA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtVGVtcG8gOwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga01ESXRlbUtleVNpZ25hdHVyZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJ
dGVtVGltZVNpZ25hdHVyZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtQXVkaW9F
bmNvZGluZ0FwcGxpY2F0aW9uIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1Db21w
b3NlciA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtTHlyaWNpc3QgOwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUF1ZGlvVHJhY2tOdW1iZXIgOwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga01ESXRlbVJlY29yZGluZ0RhdGUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga01ESXRlbU11c2ljYWxHZW5yZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVt
SXNHZW5lcmFsTUlESVNlcXVlbmNlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1S
ZWNvcmRpbmdZZWFyIDsKIyA3MjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NREl0
ZW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbU9yZ2FuaXphdGlvbnMgOwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUxhbmd1YWdlcyA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrTURJdGVtUmlnaHRzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0
ZW1QdWJsaXNoZXJzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1Db250cmlidXRv
cnMgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUNvdmVyYWdlIDsKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtNREl0ZW1TdWJqZWN0IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtNREl0ZW1UaGVtZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtRGVzY3JpcHRp
b24gOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUlkZW50aWZpZXIgOwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUF1ZGllbmNlcyA7CiMgNzkxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEu
ZnJhbWV3b3JrL0hlYWRlcnMvTURJdGVtLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtN
REl0ZW1OdW1iZXJPZlBhZ2VzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1QYWdl
V2lkdGggOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbVBhZ2VIZWlnaHQgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbVNlY3VyaXR5TWV0aG9kIDsKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtNREl0ZW1DcmVhdG9yIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtN
REl0ZW1FbmNvZGluZ0FwcGxpY2F0aW9ucyA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJ
dGVtRHVlRGF0ZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtU3RhclJhdGluZyA7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtUGhvbmVOdW1iZXJzIDsKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtNREl0ZW1FbWFpbEFkZHJlc3NlcyA7CmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrTURJdGVtSW5zdGFudE1lc3NhZ2VBZGRyZXNzZXMgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga01ESXRlbUtpbmQgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbVJl
Y2lwaWVudHMgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUZpbmRlckNvbW1lbnQg
OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbUZvbnRzIDsKIyA4NjQgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRh
ZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NREl0ZW0uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga01ESXRlbUFwcGxlTG9vcHNSb290S2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtN
REl0ZW1BcHBsZUxvb3BzS2V5RmlsdGVyVHlwZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
TURJdGVtQXBwbGVMb29wc0xvb3BNb2RlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0
ZW1BcHBsZUxvb3BEZXNjcmlwdG9ycyA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVt
TXVzaWNhbEluc3RydW1lbnRDYXRlZ29yeSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJ
dGVtTXVzaWNhbEluc3RydW1lbnROYW1lIDsKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJ
dGVtQ0ZCdW5kbGVJZGVudGlmaWVyIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1T
dXBwb3J0RmlsZVR5cGUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDkxNCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01l
dGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01ESXRlbS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrTURJdGVtSW5mb3JtYXRpb24gOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRl
bURpcmVjdG9yIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1Qcm9kdWNlciA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtR2VucmUgOwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga01ESXRlbVBlcmZvcm1lcnMgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRl
bU9yaWdpbmFsRm9ybWF0IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1PcmlnaW5h
bFNvdXJjZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtQXV0aG9yRW1haWxBZGRy
ZXNzZXMgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbVJlY2lwaWVudEVtYWlsQWRk
cmVzc2VzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREl0ZW1BdXRob3JBZGRyZXNzZXMg
OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01ESXRlbVJlY2lwaWVudEFkZHJlc3NlcyA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURJdGVtVVJMIDsKfQoKCgoKCmV4dGVybiAiQyIgewoj
ZGVmaW5lIE1ESXRlbUNvcHlBdHRyaWJ1dGVMaXN0KGl0ZW0sLi4uKSBfX01ESXRlbUNvcHlBdHRy
aWJ1dGVzRWxsaXBzaXMxKGl0ZW0sIF9fVkFfQVJHU19fLCBOVUxMKQpleHRlcm4gQ0ZEaWN0aW9u
YXJ5UmVmIF9fTURJdGVtQ29weUF0dHJpYnV0ZXNFbGxpcHNpczEoTURJdGVtUmVmIGl0ZW0sIC4u
LikgOwp9CiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NZXRhZGF0YS5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURRdWVyeS5oIiAxIDMKIyA2
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL01ldGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01EUXVlcnkuaCIgMwojZGVmaW5lIF9f
TURRVUVSWV9fIDEKIyA3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01EUXVlcnku
aCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NREl0ZW0uaCIgMSAzCiMg
NzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NRFF1ZXJ5LmgiIDIgMwoKCmV4dGVy
biAiQyIgewoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX01EUXVlcnkgKk1EUXVlcnlSZWY7Cgp0eXBl
ZGVmIGVudW0gewogICAga01EUXVlcnlTeW5jaHJvbm91cyA9IDEsCiAgICBrTURRdWVyeVdhbnRz
VXBkYXRlcyA9IDQKfSBNRFF1ZXJ5T3B0aW9uRmxhZ3M7CiMgMTE4ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJh
bWV3b3JrL0hlYWRlcnMvTURRdWVyeS5oIiAzCmV4dGVybiBDRlR5cGVJRCBNRFF1ZXJ5R2V0VHlw
ZUlEKHZvaWQpIDsKIyAxNTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NRFF1ZXJ5
LmgiIDMKZXh0ZXJuIE1EUXVlcnlSZWYgTURRdWVyeUNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxv
Y2F0b3IsIENGU3RyaW5nUmVmIHF1ZXJ5U3RyaW5nLCBDRkFycmF5UmVmIHZhbHVlTGlzdEF0dHJz
LCBDRkFycmF5UmVmIHNvcnRpbmdBdHRycykgOwojIDE5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1ld29y
ay9IZWFkZXJzL01EUXVlcnkuaCIgMwpleHRlcm4gTURRdWVyeVJlZiBNRFF1ZXJ5Q3JlYXRlU3Vi
c2V0KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgTURRdWVyeVJlZiBxdWVyeSwgQ0ZTdHJpbmdS
ZWYgcXVlcnlTdHJpbmcsIENGQXJyYXlSZWYgdmFsdWVMaXN0QXR0cnMsIENGQXJyYXlSZWYgc29y
dGluZ0F0dHJzKSA7CgoKCgoKCgpleHRlcm4gQ0ZTdHJpbmdSZWYgTURRdWVyeUNvcHlRdWVyeVN0
cmluZyhNRFF1ZXJ5UmVmIHF1ZXJ5KSA7CiMgMjExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hl
YWRlcnMvTURRdWVyeS5oIiAzCmV4dGVybiBDRkFycmF5UmVmIE1EUXVlcnlDb3B5VmFsdWVMaXN0
QXR0cmlidXRlcyhNRFF1ZXJ5UmVmIHF1ZXJ5KSA7CiMgMjIwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3
b3JrL0hlYWRlcnMvTURRdWVyeS5oIiAzCmV4dGVybiBDRkFycmF5UmVmIE1EUXVlcnlDb3B5U29y
dGluZ0F0dHJpYnV0ZXMoTURRdWVyeVJlZiBxdWVyeSkgOwojIDI2NSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZy
YW1ld29yay9IZWFkZXJzL01EUXVlcnkuaCIgMwp0eXBlZGVmIHN0cnVjdCB7CiAgICBzaXplX3Qg
Zmlyc3RfbWF4X251bTsKICAgIHNpemVfdCBmaXJzdF9tYXhfbXM7CiAgICBzaXplX3QgcHJvZ3Jl
c3NfbWF4X251bTsKICAgIHNpemVfdCBwcm9ncmVzc19tYXhfbXM7CiAgICBzaXplX3QgdXBkYXRl
X21heF9udW07CiAgICBzaXplX3QgdXBkYXRlX21heF9tczsKfSBNRFF1ZXJ5QmF0Y2hpbmdQYXJh
bXM7CiMgMjgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURRdWVyeS5oIiAzCmV4
dGVybiBNRFF1ZXJ5QmF0Y2hpbmdQYXJhbXMgTURRdWVyeUdldEJhdGNoaW5nUGFyYW1ldGVycyhN
RFF1ZXJ5UmVmIHF1ZXJ5KSA7CgoKCgoKCgpleHRlcm4gdm9pZCBNRFF1ZXJ5U2V0QmF0Y2hpbmdQ
YXJhbWV0ZXJzKE1EUXVlcnlSZWYgcXVlcnksIE1EUXVlcnlCYXRjaGluZ1BhcmFtcyBwYXJhbXMp
IDsKIyAzMjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NRFF1ZXJ5LmgiIDMKdHlw
ZWRlZiBjb25zdCB2b2lkICooKk1EUXVlcnlDcmVhdGVSZXN1bHRGdW5jdGlvbikoTURRdWVyeVJl
ZiBxdWVyeSwgTURJdGVtUmVmIGl0ZW0sIHZvaWQgKmNvbnRleHQpOwojIDM4OCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFk
YXRhLmZyYW1ld29yay9IZWFkZXJzL01EUXVlcnkuaCIgMwpleHRlcm4gdm9pZCBNRFF1ZXJ5U2V0
Q3JlYXRlUmVzdWx0RnVuY3Rpb24oTURRdWVyeVJlZiBxdWVyeSwgTURRdWVyeUNyZWF0ZVJlc3Vs
dEZ1bmN0aW9uIGZ1bmMsIHZvaWQgKmNvbnRleHQsIGNvbnN0IENGQXJyYXlDYWxsQmFja3MgKmNi
KSA7CiMgNDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURRdWVyeS5oIiAzCnR5
cGVkZWYgY29uc3Qgdm9pZCAqKCpNRFF1ZXJ5Q3JlYXRlVmFsdWVGdW5jdGlvbikoTURRdWVyeVJl
ZiBxdWVyeSwgQ0ZTdHJpbmdSZWYgYXR0ck5hbWUsIENGVHlwZVJlZiBhdHRyVmFsdWUsIHZvaWQg
KmNvbnRleHQpOwojIDQ3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01EUXVlcnku
aCIgMwpleHRlcm4gdm9pZCBNRFF1ZXJ5U2V0Q3JlYXRlVmFsdWVGdW5jdGlvbihNRFF1ZXJ5UmVm
IHF1ZXJ5LCBNRFF1ZXJ5Q3JlYXRlVmFsdWVGdW5jdGlvbiBmdW5jLCB2b2lkICpjb250ZXh0LCBj
b25zdCBDRkFycmF5Q2FsbEJhY2tzICpjYikgOwojIDQ5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1ld29y
ay9IZWFkZXJzL01EUXVlcnkuaCIgMwpleHRlcm4gdm9pZCBNRFF1ZXJ5U2V0RGlzcGF0Y2hRdWV1
ZShNRFF1ZXJ5UmVmIHF1ZXJ5LCBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlKSA7CiMgNTI2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
TWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURRdWVyeS5oIiAzCmV4dGVybiBCb29sZWFuIE1E
UXVlcnlFeGVjdXRlKE1EUXVlcnlSZWYgcXVlcnksIENGT3B0aW9uRmxhZ3Mgb3B0aW9uRmxhZ3Mp
IDsKIyA1NTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NRFF1ZXJ5LmgiIDMKZXh0
ZXJuIHZvaWQgTURRdWVyeVN0b3AoTURRdWVyeVJlZiBxdWVyeSkgOwojIDU2MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFk
YXRhLmZyYW1ld29yay9IZWFkZXJzL01EUXVlcnkuaCIgMwpleHRlcm4gdm9pZCBNRFF1ZXJ5RGlz
YWJsZVVwZGF0ZXMoTURRdWVyeVJlZiBxdWVyeSkgOwojIDU3MyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1l
d29yay9IZWFkZXJzL01EUXVlcnkuaCIgMwpleHRlcm4gdm9pZCBNRFF1ZXJ5RW5hYmxlVXBkYXRl
cyhNRFF1ZXJ5UmVmIHF1ZXJ5KSA7CiMgNTgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRl
cnMvTURRdWVyeS5oIiAzCmV4dGVybiBCb29sZWFuIE1EUXVlcnlJc0dhdGhlcmluZ0NvbXBsZXRl
KE1EUXVlcnlSZWYgcXVlcnkpIDsKIyA1OTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVy
cy9NRFF1ZXJ5LmgiIDMKZXh0ZXJuIENGSW5kZXggTURRdWVyeUdldFJlc3VsdENvdW50KE1EUXVl
cnlSZWYgcXVlcnkpIDsKIyA2MTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NRFF1
ZXJ5LmgiIDMKZXh0ZXJuIGNvbnN0IHZvaWQgKk1EUXVlcnlHZXRSZXN1bHRBdEluZGV4KE1EUXVl
cnlSZWYgcXVlcnksIENGSW5kZXggaWR4KSA7CiMgNjM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3Jr
L0hlYWRlcnMvTURRdWVyeS5oIiAzCmV4dGVybiBDRkluZGV4IE1EUXVlcnlHZXRJbmRleE9mUmVz
dWx0KE1EUXVlcnlSZWYgcXVlcnksIGNvbnN0IHZvaWQgKnJlc3VsdCkgOwojIDY1MyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01l
dGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01EUXVlcnkuaCIgMwpleHRlcm4gdm9pZCAqTURRdWVy
eUdldEF0dHJpYnV0ZVZhbHVlT2ZSZXN1bHRBdEluZGV4KE1EUXVlcnlSZWYgcXVlcnksIENGU3Ry
aW5nUmVmIG5hbWUsIENGSW5kZXggaWR4KSA7CiMgNjY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3Jr
L0hlYWRlcnMvTURRdWVyeS5oIiAzCmV4dGVybiBDRkFycmF5UmVmIE1EUXVlcnlDb3B5VmFsdWVz
T2ZBdHRyaWJ1dGUoTURRdWVyeVJlZiBxdWVyeSwgQ0ZTdHJpbmdSZWYgbmFtZSkgOwojIDY4OCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL01ldGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01EUXVlcnkuaCIgMwpleHRlcm4gQ0ZJbmRl
eCBNRFF1ZXJ5R2V0Q291bnRPZlJlc3VsdHNXaXRoQXR0cmlidXRlVmFsdWUoTURRdWVyeVJlZiBx
dWVyeSwgQ0ZTdHJpbmdSZWYgbmFtZSwgQ0ZUeXBlUmVmIHZhbHVlKSA7CiMgNzE5ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0
YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURRdWVyeS5oIiAzCnR5cGVkZWYgQ0ZDb21wYXJpc29u
UmVzdWx0ICgqTURRdWVyeVNvcnRDb21wYXJhdG9yRnVuY3Rpb24pKGNvbnN0IENGVHlwZVJlZiBh
dHRyczFbXSwgY29uc3QgQ0ZUeXBlUmVmIGF0dHJzMltdLCB2b2lkICpjb250ZXh0KTsKIyA3NTAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NRFF1ZXJ5LmgiIDMKZXh0ZXJuIHZvaWQg
TURRdWVyeVNldFNvcnRDb21wYXJhdG9yKE1EUXVlcnlSZWYgcXVlcnksIE1EUXVlcnlTb3J0Q29t
cGFyYXRvckZ1bmN0aW9uIGNvbXBhcmF0b3IsIHZvaWQgKmNvbnRleHQpIDsKIyA3NzUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9N
ZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NRFF1ZXJ5LmgiIDMKZXh0ZXJuIHZvaWQgTURRdWVy
eVNldFNvcnRDb21wYXJhdG9yQmxvY2soTURRdWVyeVJlZiBxdWVyeSwgQ0ZDb21wYXJpc29uUmVz
dWx0ICheY29tcGFyYXRvcikoY29uc3QgQ0ZUeXBlUmVmIGF0dHJzMVtdLCBjb25zdCBDRlR5cGVS
ZWYgYXR0cnMyW10pKSA7CiMgNzk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURR
dWVyeS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURRdWVyeVByb2dyZXNzTm90aWZp
Y2F0aW9uIDsKIyA4MDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NRFF1ZXJ5Lmgi
IDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNRFF1ZXJ5RGlkRmluaXNoTm90aWZpY2F0aW9u
IDsKIyA4MjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NRFF1ZXJ5LmgiIDMKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNRFF1ZXJ5RGlkVXBkYXRlTm90aWZpY2F0aW9uIDsKIyA4
MzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NRFF1ZXJ5LmgiIDMKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtNRFF1ZXJ5VXBkYXRlQWRkZWRJdGVtcyA7CiMgODUwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0
YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURRdWVyeS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrTURRdWVyeVVwZGF0ZUNoYW5nZWRJdGVtcyA7CiMgODY1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJh
bWV3b3JrL0hlYWRlcnMvTURRdWVyeS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURR
dWVyeVVwZGF0ZVJlbW92ZWRJdGVtcyA7CiMgODkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hl
YWRlcnMvTURRdWVyeS5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURRdWVyeVJlc3Vs
dENvbnRlbnRSZWxldmFuY2UgOwojIDkxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1ld29yay9IZWFkZXJz
L01EUXVlcnkuaCIgMwpleHRlcm4gdm9pZCBNRFF1ZXJ5U2V0U2VhcmNoU2NvcGUoTURRdWVyeVJl
ZiBxdWVyeSwgQ0ZBcnJheVJlZiBzY29wZURpcmVjdG9yaWVzLCBPcHRpb25CaXRzIHNjb3BlT3B0
aW9ucykgOwoKCgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNRFF1ZXJ5U2NvcGVIb21l
IDsKCgoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURRdWVyeVNjb3BlQ29tcHV0ZXIg
OwoKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01EUXVlcnlTY29wZU5ldHdvcmsgOwoK
CgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNRFF1ZXJ5U2NvcGVBbGxJbmRleGVkIDsK
CgoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURRdWVyeVNjb3BlQ29tcHV0ZXJJbmRl
eGVkIDsKCgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNRFF1ZXJ5U2NvcGVOZXR3b3Jr
SW5kZXhlZCA7CiMgOTY4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURRdWVyeS5o
IiAzCmV4dGVybiB2b2lkIE1EUXVlcnlTZXRNYXhDb3VudChNRFF1ZXJ5UmVmIHF1ZXJ5LCBDRklu
ZGV4IHNpemUpIDsKCn0KIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01ldGFk
YXRhLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NRFNjaGVtYS5o
IiAxIDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01EU2NoZW1hLmgiIDMK
I2RlZmluZSBfX01EU0NIRU1BX18gMQoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hl
YWRlcnMvTURJdGVtLmgiIDEgMwojIDIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMv
TURTY2hlbWEuaCIgMiAzCgpleHRlcm4gIkMiIHsKIyAzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1ld29y
ay9IZWFkZXJzL01EU2NoZW1hLmgiIDMKZXh0ZXJuIENGRGljdGlvbmFyeVJlZiBNRFNjaGVtYUNv
cHlBdHRyaWJ1dGVzRm9yQ29udGVudFR5cGUoQ0ZTdHJpbmdSZWYgY29udGVudFR5cGVVVEkpIDsK
CgoKCgoKCmV4dGVybiBDRkRpY3Rpb25hcnlSZWYgTURTY2hlbWFDb3B5TWV0YUF0dHJpYnV0ZXNG
b3JBdHRyaWJ1dGUoQ0ZTdHJpbmdSZWYgbmFtZSkgOwoKCgoKCgpleHRlcm4gQ0ZBcnJheVJlZiBN
RFNjaGVtYUNvcHlBbGxBdHRyaWJ1dGVzKHZvaWQpIDsKIyA1NiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1l
d29yay9IZWFkZXJzL01EU2NoZW1hLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIE1EU2NoZW1hQ29w
eURpc3BsYXlOYW1lRm9yQXR0cmlidXRlKENGU3RyaW5nUmVmIG5hbWUpIDsKIyA2NSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01l
dGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01EU2NoZW1hLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVm
IE1EU2NoZW1hQ29weURpc3BsYXlEZXNjcmlwdGlvbkZvckF0dHJpYnV0ZShDRlN0cmluZ1JlZiBu
YW1lKSA7CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREF0dHJpYnV0ZURpc3BsYXlWYWx1
ZXMgOwoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga01EQXR0cmlidXRlQWxsVmFsdWVzIDsK
CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtNREF0dHJpYnV0ZVJlYWRPbmx5VmFsdWVzIDsK
CgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURFeHBvcnRlckF2YWxpYWJsZSA7CgoKCgoK
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrTURBdHRyaWJ1dGVOYW1lIDsKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtNREF0dHJpYnV0ZVR5cGUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a01EQXR0cmlidXRlTXVsdGlWYWx1ZWQgOwoKfQojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3Jr
L0hlYWRlcnMvTWV0YWRhdGEuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1ld29yay9IZWFk
ZXJzL01ESW1wb3J0ZXIuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVy
cy9NREltcG9ydGVyLmgiIDMKI2RlZmluZSBfX01ESU1QT1JURVJfXyAxCgoKCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9N
ZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NREl0ZW0uaCIgMSAzCiMgMjMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0
YS5mcmFtZXdvcmsvSGVhZGVycy9NREltcG9ydGVyLmgiIDIgMwoKCmV4dGVybiAiQyIgewojIDQz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTURJbXBvcnRlci5oIiAzCiNkZWZpbmUg
a01ESW1wb3J0ZXJUeXBlSUQgQ0ZVVUlER2V0Q29uc3RhbnRVVUlEV2l0aEJ5dGVzKGtDRkFsbG9j
YXRvckRlZmF1bHQsMHg4QiwweDA4LDB4QzQsMHhCRiwweDQxLDB4NUIsMHgxMSwweEQ4LDB4QjMs
MHhGOSwweDAwLDB4MDMsMHg5MywweDY3LDB4MjYsMHhGQykKI2RlZmluZSBrTURJbXBvcnRlcklu
dGVyZmFjZUlEIENGVVVJREdldENvbnN0YW50VVVJRFdpdGhCeXRlcyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LDB4NkUsMHhCQywweDI3LDB4QzQsMHg4OSwweDlDLDB4MTEsMHhEOCwweDg0LDB4QUUsMHgw
MCwweDAzLDB4OTMsMHg2NywweDI2LDB4RkMpCiNkZWZpbmUga01ERXhwb3J0ZXJJbnRlcmZhY2VJ
RCBDRlVVSURHZXRDb25zdGFudFVVSURXaXRoQnl0ZXMoa0NGQWxsb2NhdG9yRGVmYXVsdCwweEI0
LDB4MUMsMHg2MCwweDc0LDB4N0QsMHhGQiwweDQwLDB4NTcsMHg5NiwweDlELDB4MzEsMHhDOCww
eEU4LDB4NjEsMHhBOCwweEQ0KQoKI2RlZmluZSBrTURJbXBvcnRlclVSTEludGVyZmFjZUlEIENG
VVVJREdldENvbnN0YW50VVVJRFdpdGhCeXRlcyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAweDEzLDB4
RjYsMHgwRiwweDAyLDB4MzYsMHgyMiwweDRGLDB4MzUsMHg5OCwweDkxLDB4RUMsMHgxMCwweEU2
LDB4Q0QsMHgwOCwweEY4KQojIDExMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL01ldGFkYXRhLmZyYW1ld29yay9IZWFkZXJzL01E
SW1wb3J0ZXIuaCIgMwp9CiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvSGVhZGVycy9NZXRh
ZGF0YS5oIiAyIDMKIyA0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL0NvcmVTZXJ2aWNlcy5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvRGljdGlvbmFy
eVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0RpY3Rpb25hcnlTZXJ2aWNlcy5oIiAxIDMKIyA5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvRGljdGlvbmFyeVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0RpY3Rpb25hcnlTZXJ2
aWNlcy5oIiAzCiNkZWZpbmUgX19ESUNUSU9OQVJZU0VSVklDRVNfXyAKIyAxOSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0RpY3Rp
b25hcnlTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9EaWN0aW9uYXJ5U2VydmljZXMuaCIgMwpl
eHRlcm4gIkMiIHsKCgoKCgoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19EQ1NEaWN0aW9uYXJ5KiBE
Q1NEaWN0aW9uYXJ5UmVmOwojIDQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvRGljdGlvbmFyeVNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL0RpY3Rpb25hcnlTZXJ2aWNlcy5oIiAzCmV4dGVybiBDRlJhbmdlIERDU0dldFRlcm1S
YW5nZUluU3RyaW5nKCBEQ1NEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIENGU3RyaW5nUmVmIHRl
eHRTdHJpbmcsIENGSW5kZXggb2Zmc2V0ICkKIDsKIyA1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0RpY3Rpb25hcnlTZXJ2aWNl
cy5mcmFtZXdvcmsvSGVhZGVycy9EaWN0aW9uYXJ5U2VydmljZXMuaCIgMwpleHRlcm4gQ0ZTdHJp
bmdSZWYgRENTQ29weVRleHREZWZpbml0aW9uKCBEQ1NEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnks
IENGU3RyaW5nUmVmIHRleHRTdHJpbmcsIENGUmFuZ2UgcmFuZ2UgKQogOwoKCn0KIyA1MCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0Nv
cmVTZXJ2aWNlcy5oIiAyIDMKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTEVycm9yLmgiIDIgMwoKCkBjbGFzcyBOU1N0cmlu
ZzsKCgoKCgpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBOU1VSTEVycm9yRG9tYWluOwoKCgoKCmV4
dGVybiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMRXJyb3JGYWlsaW5nVVJMRXJyb3JLZXkgOwoKCgoK
CgpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9y
S2V5IDsKCgoKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgTlNFcnJvckZhaWxpbmdVUkxTdHJp
bmdLZXkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCgoKCmV4dGVybiBOU1N0cmluZyAq
IGNvbnN0IE5TVVJMRXJyb3JGYWlsaW5nVVJMUGVlclRydXN0RXJyb3JLZXkgOwoKCgoKCgplbnVt
CnsKICAgIE5TVVJMRXJyb3JVbmtub3duID0gLTEsCiAgICBOU1VSTEVycm9yQ2FuY2VsbGVkID0g
a0NGVVJMRXJyb3JDYW5jZWxsZWQsCiAgICBOU1VSTEVycm9yQmFkVVJMID0ga0NGVVJMRXJyb3JC
YWRVUkwsCiAgICBOU1VSTEVycm9yVGltZWRPdXQgPSBrQ0ZVUkxFcnJvclRpbWVkT3V0LAogICAg
TlNVUkxFcnJvclVuc3VwcG9ydGVkVVJMID0ga0NGVVJMRXJyb3JVbnN1cHBvcnRlZFVSTCwKICAg
IE5TVVJMRXJyb3JDYW5ub3RGaW5kSG9zdCA9IGtDRlVSTEVycm9yQ2Fubm90RmluZEhvc3QsCiAg
ICBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCA9IGtDRlVSTEVycm9yQ2Fubm90Q29ubmVj
dFRvSG9zdCwKICAgIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QgPSBrQ0ZVUkxFcnJv
ck5ldHdvcmtDb25uZWN0aW9uTG9zdCwKICAgIE5TVVJMRXJyb3JETlNMb29rdXBGYWlsZWQgPSBr
Q0ZVUkxFcnJvckROU0xvb2t1cEZhaWxlZCwKICAgIE5TVVJMRXJyb3JIVFRQVG9vTWFueVJlZGly
ZWN0cyA9IGtDRlVSTEVycm9ySFRUUFRvb01hbnlSZWRpcmVjdHMsCiAgICBOU1VSTEVycm9yUmVz
b3VyY2VVbmF2YWlsYWJsZSA9IGtDRlVSTEVycm9yUmVzb3VyY2VVbmF2YWlsYWJsZSwKICAgIE5T
VVJMRXJyb3JOb3RDb25uZWN0ZWRUb0ludGVybmV0ID0ga0NGVVJMRXJyb3JOb3RDb25uZWN0ZWRU
b0ludGVybmV0LAogICAgTlNVUkxFcnJvclJlZGlyZWN0VG9Ob25FeGlzdGVudExvY2F0aW9uID0g
a0NGVVJMRXJyb3JSZWRpcmVjdFRvTm9uRXhpc3RlbnRMb2NhdGlvbiwKICAgIE5TVVJMRXJyb3JC
YWRTZXJ2ZXJSZXNwb25zZSA9IGtDRlVSTEVycm9yQmFkU2VydmVyUmVzcG9uc2UsCiAgICBOU1VS
TEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uID0ga0NGVVJMRXJyb3JVc2VyQ2FuY2Vs
bGVkQXV0aGVudGljYXRpb24sCiAgICBOU1VSTEVycm9yVXNlckF1dGhlbnRpY2F0aW9uUmVxdWly
ZWQgPSBrQ0ZVUkxFcnJvclVzZXJBdXRoZW50aWNhdGlvblJlcXVpcmVkLAogICAgTlNVUkxFcnJv
clplcm9CeXRlUmVzb3VyY2UgPSBrQ0ZVUkxFcnJvclplcm9CeXRlUmVzb3VyY2UsCiAgICBOU1VS
TEVycm9yQ2Fubm90RGVjb2RlUmF3RGF0YSA9IGtDRlVSTEVycm9yQ2Fubm90RGVjb2RlUmF3RGF0
YSwKICAgIE5TVVJMRXJyb3JDYW5ub3REZWNvZGVDb250ZW50RGF0YSA9IGtDRlVSTEVycm9yQ2Fu
bm90RGVjb2RlQ29udGVudERhdGEsCiAgICBOU1VSTEVycm9yQ2Fubm90UGFyc2VSZXNwb25zZSA9
IGtDRlVSTEVycm9yQ2Fubm90UGFyc2VSZXNwb25zZSwKICAgIE5TVVJMRXJyb3JGaWxlRG9lc05v
dEV4aXN0ID0ga0NGVVJMRXJyb3JGaWxlRG9lc05vdEV4aXN0LAogICAgTlNVUkxFcnJvckZpbGVJ
c0RpcmVjdG9yeSA9IGtDRlVSTEVycm9yRmlsZUlzRGlyZWN0b3J5LAogICAgTlNVUkxFcnJvck5v
UGVybWlzc2lvbnNUb1JlYWRGaWxlID0ga0NGVVJMRXJyb3JOb1Blcm1pc3Npb25zVG9SZWFkRmls
ZSwKCiAgICBOU1VSTEVycm9yRGF0YUxlbmd0aEV4Y2VlZHNNYXhpbXVtID0ga0NGVVJMRXJyb3JE
YXRhTGVuZ3RoRXhjZWVkc01heGltdW0sCgoKCiAgICBOU1VSTEVycm9yU2VjdXJlQ29ubmVjdGlv
bkZhaWxlZCA9IGtDRlVSTEVycm9yU2VjdXJlQ29ubmVjdGlvbkZhaWxlZCwKICAgIE5TVVJMRXJy
b3JTZXJ2ZXJDZXJ0aWZpY2F0ZUhhc0JhZERhdGUgPSBrQ0ZVUkxFcnJvclNlcnZlckNlcnRpZmlj
YXRlSGFzQmFkRGF0ZSwKICAgIE5TVVJMRXJyb3JTZXJ2ZXJDZXJ0aWZpY2F0ZVVudHJ1c3RlZCA9
IGtDRlVSTEVycm9yU2VydmVyQ2VydGlmaWNhdGVVbnRydXN0ZWQsCiAgICBOU1VSTEVycm9yU2Vy
dmVyQ2VydGlmaWNhdGVIYXNVbmtub3duUm9vdCA9IGtDRlVSTEVycm9yU2VydmVyQ2VydGlmaWNh
dGVIYXNVbmtub3duUm9vdCwKICAgIE5TVVJMRXJyb3JTZXJ2ZXJDZXJ0aWZpY2F0ZU5vdFlldFZh
bGlkID0ga0NGVVJMRXJyb3JTZXJ2ZXJDZXJ0aWZpY2F0ZU5vdFlldFZhbGlkLAogICAgTlNVUkxF
cnJvckNsaWVudENlcnRpZmljYXRlUmVqZWN0ZWQgPSBrQ0ZVUkxFcnJvckNsaWVudENlcnRpZmlj
YXRlUmVqZWN0ZWQsCiAgICBOU1VSTEVycm9yQ2xpZW50Q2VydGlmaWNhdGVSZXF1aXJlZCA9IGtD
RlVSTEVycm9yQ2xpZW50Q2VydGlmaWNhdGVSZXF1aXJlZCwKICAgIE5TVVJMRXJyb3JDYW5ub3RM
b2FkRnJvbU5ldHdvcmsgPSBrQ0ZVUkxFcnJvckNhbm5vdExvYWRGcm9tTmV0d29yaywKCgogICAg
TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUgPSBrQ0ZVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUs
CiAgICBOU1VSTEVycm9yQ2Fubm90T3BlbkZpbGUgPSBrQ0ZVUkxFcnJvckNhbm5vdE9wZW5GaWxl
LAogICAgTlNVUkxFcnJvckNhbm5vdENsb3NlRmlsZSA9IGtDRlVSTEVycm9yQ2Fubm90Q2xvc2VG
aWxlLAogICAgTlNVUkxFcnJvckNhbm5vdFdyaXRlVG9GaWxlID0ga0NGVVJMRXJyb3JDYW5ub3RX
cml0ZVRvRmlsZSwKICAgIE5TVVJMRXJyb3JDYW5ub3RSZW1vdmVGaWxlID0ga0NGVVJMRXJyb3JD
YW5ub3RSZW1vdmVGaWxlLAogICAgTlNVUkxFcnJvckNhbm5vdE1vdmVGaWxlID0ga0NGVVJMRXJy
b3JDYW5ub3RNb3ZlRmlsZSwKICAgIE5TVVJMRXJyb3JEb3dubG9hZERlY29kaW5nRmFpbGVkTWlk
U3RyZWFtID0ga0NGVVJMRXJyb3JEb3dubG9hZERlY29kaW5nRmFpbGVkTWlkU3RyZWFtLAogICAg
TlNVUkxFcnJvckRvd25sb2FkRGVjb2RpbmdGYWlsZWRUb0NvbXBsZXRlID1rQ0ZVUkxFcnJvckRv
d25sb2FkRGVjb2RpbmdGYWlsZWRUb0NvbXBsZXRlLAp9OwojIDgyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAz
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9OU1VSTFByb3RlY3Rpb25TcGFjZS5oIiAxIDMKIyAxNiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTFByb3RlY3Rpb25TcGFj
ZS5oIiAzCkBjbGFzcyBOU1N0cmluZzsKQGNsYXNzIE5TQXJyYXk7CgoKCgoKZXh0ZXJuICJDIiBO
U1N0cmluZyAqIGNvbnN0IE5TVVJMUHJvdGVjdGlvblNwYWNlSFRUUCA7CgoKCgoKZXh0ZXJuICJD
IiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMUHJvdGVjdGlvblNwYWNlSFRUUFMgOwoKCgoKCmV4dGVy
biAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTFByb3RlY3Rpb25TcGFjZUZUUCA7CgoKCgoKZXh0
ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMUHJvdGVjdGlvblNwYWNlSFRUUFByb3h5OwoK
CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTFByb3RlY3Rpb25TcGFjZUhUVFBT
UHJveHk7CgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMUHJvdGVjdGlvblNw
YWNlRlRQUHJveHk7CgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMUHJvdGVj
dGlvblNwYWNlU09DS1NQcm94eTsKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNV
UkxBdXRoZW50aWNhdGlvbk1ldGhvZERlZmF1bHQ7CgoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcg
KiBjb25zdCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kSFRUUEJhc2ljOwoKCgoKCmV4dGVybiAi
QyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kSFRUUERpZ2VzdDsK
CgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhv
ZEhUTUxGb3JtOwoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTEF1dGhlbnRp
Y2F0aW9uTWV0aG9kTlRMTSA7CgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVVJM
QXV0aGVudGljYXRpb25NZXRob2ROZWdvdGlhdGUgOwoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcg
KiBjb25zdCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kQ2xpZW50Q2VydGlmaWNhdGUgOwoKCgoK
CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2Vy
dmVyVHJ1c3QgOwoKQGNsYXNzIE5TVVJMUHJvdGVjdGlvblNwYWNlSW50ZXJuYWw7CgoKCgoKCkBp
bnRlcmZhY2UgTlNVUkxQcm90ZWN0aW9uU3BhY2UgOiBOU09iamVjdCA8TlNDb3B5aW5nPgp7CkBw
cml2YXRlCiAgICBOU1VSTFByb3RlY3Rpb25TcGFjZUludGVybmFsICpfaW50ZXJuYWw7Cn0KIyAx
MzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvTlNVUkxQcm90ZWN0aW9uU3BhY2UuaCIgMwotIChpZClpbml0V2l0aEhvc3Q6KE5TU3RyaW5n
ICopaG9zdCBwb3J0OihOU0ludGVnZXIpcG9ydCBwcm90b2NvbDooTlNTdHJpbmcgKilwcm90b2Nv
bCByZWFsbTooTlNTdHJpbmcgKilyZWFsbSBhdXRoZW50aWNhdGlvbk1ldGhvZDooTlNTdHJpbmcg
KilhdXRoZW50aWNhdGlvbk1ldGhvZDsKIyAxNTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxQcm90ZWN0aW9uU3BhY2UuaCIgMwot
IChpZClpbml0V2l0aFByb3h5SG9zdDooTlNTdHJpbmcgKilob3N0IHBvcnQ6KE5TSW50ZWdlcilw
b3J0IHR5cGU6KE5TU3RyaW5nICopdHlwZSByZWFsbTooTlNTdHJpbmcgKilyZWFsbSBhdXRoZW50
aWNhdGlvbk1ldGhvZDooTlNTdHJpbmcgKilhdXRoZW50aWNhdGlvbk1ldGhvZDsKIyAxNjMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNV
UkxQcm90ZWN0aW9uU3BhY2UuaCIgMwotIChOU1N0cmluZyAqKXJlYWxtOwoKCgoKCgotIChCT09M
KXJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5OwoKCgoKCgotIChCT09MKWlzUHJveHk7CgoKCgoK
Ci0gKE5TU3RyaW5nICopaG9zdDsKCgoKCgoKLSAoTlNJbnRlZ2VyKXBvcnQ7CgoKCgoKCi0gKE5T
U3RyaW5nICopcHJveHlUeXBlOwoKCgoKCgotIChOU1N0cmluZyAqKXByb3RvY29sOwoKCgoKCgot
IChOU1N0cmluZyAqKWF1dGhlbnRpY2F0aW9uTWV0aG9kOwoKQGVuZAoKCgoKCkBpbnRlcmZhY2Ug
TlNVUkxQcm90ZWN0aW9uU3BhY2UoTlNDbGllbnRDZXJ0aWZpY2F0ZVNwYWNlKQoKCgoKCgotIChO
U0FycmF5ICopZGlzdGluZ3Vpc2hlZE5hbWVzOwoKQGVuZAoKCgoKCkBpbnRlcmZhY2UgTlNVUkxQ
cm90ZWN0aW9uU3BhY2UoTlNTZXJ2ZXJUcnVzdFZhbGlkYXRpb25TcGFjZSkKCgoKCgoKLSAoU2Vj
VHJ1c3RSZWYpc2VydmVyVHJ1c3Q7CgpAZW5kCiMgODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05T
VVJMUHJvdG9jb2wuaCIgMSAzCiMgMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxQcm90b2NvbC5oIiAzCkBjbGFzcyBOU0NhY2hl
ZFVSTFJlc3BvbnNlOwpAY2xhc3MgTlNFcnJvcjsKQGNsYXNzIE5TTXV0YWJsZVVSTFJlcXVlc3Q7
CkBjbGFzcyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwpAY2xhc3MgTlNVUkxDb25uZWN0
aW9uOwpAY2xhc3MgTlNVUkxQcm90b2NvbDsKQGNsYXNzIE5TVVJMUHJvdG9jb2xJbnRlcm5hbDsK
QGNsYXNzIE5TVVJMUmVxdWVzdDsKQGNsYXNzIE5TVVJMUmVzcG9uc2U7CiMgNjggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxQcm90
b2NvbC5oIiAzCkBwcm90b2NvbCBOU1VSTFByb3RvY29sQ2xpZW50IDxOU09iamVjdD4KIyA3OCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9O
U1VSTFByb3RvY29sLmgiIDMKLSAodm9pZClVUkxQcm90b2NvbDooTlNVUkxQcm90b2NvbCAqKXBy
b3RvY29sIHdhc1JlZGlyZWN0ZWRUb1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVk
aXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2U7CiMgODkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNV
UkxQcm90b2NvbC5oIiAzCi0gKHZvaWQpVVJMUHJvdG9jb2w6KE5TVVJMUHJvdG9jb2wgKilwcm90
b2NvbCBjYWNoZWRSZXNwb25zZUlzVmFsaWQ6KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljYWNoZWRS
ZXNwb25zZTsKIyAxMDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvTlNVUkxQcm90b2NvbC5oIiAzCi0gKHZvaWQpVVJMUHJvdG9jb2w6KE5T
VVJMUHJvdG9jb2wgKilwcm90b2NvbCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2Ug
KilyZXNwb25zZSBjYWNoZVN0b3JhZ2VQb2xpY3k6KE5TVVJMQ2FjaGVTdG9yYWdlUG9saWN5KXBv
bGljeTsKIyAxMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvTlNVUkxQcm90b2NvbC5oIiAzCi0gKHZvaWQpVVJMUHJvdG9jb2w6KE5TVVJM
UHJvdG9jb2wgKilwcm90b2NvbCBkaWRMb2FkRGF0YTooTlNEYXRhICopZGF0YTsKCgoKCgoKCi0g
KHZvaWQpVVJMUHJvdG9jb2xEaWRGaW5pc2hMb2FkaW5nOihOU1VSTFByb3RvY29sICopcHJvdG9j
b2w7CiMgMTMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL05TVVJMUHJvdG9jb2wuaCIgMwotICh2b2lkKVVSTFByb3RvY29sOihOU1VSTFBy
b3RvY29sICopcHJvdG9jb2wgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yOwojIDE0
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9OU1VSTFByb3RvY29sLmgiIDMKLSAodm9pZClVUkxQcm90b2NvbDooTlNVUkxQcm90b2NvbCAq
KXByb3RvY29sIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZTsKCgoKCgoKCi0gKHZvaWQpVVJMUHJvdG9jb2w6
KE5TVVJMUHJvdG9jb2wgKilwcm90b2NvbCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZTsKCkBlbmQKIyAxNjQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
TlNVUkxQcm90b2NvbC5oIiAzCkBpbnRlcmZhY2UgTlNVUkxQcm90b2NvbCA6IE5TT2JqZWN0CnsK
ICAgIEBwcml2YXRlCiAgICBOU1VSTFByb3RvY29sSW50ZXJuYWwgKl9pbnRlcm5hbDsKfQojIDE4
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9OU1VSTFByb3RvY29sLmgiIDMKLSAoaWQpaW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IGNhY2hlZFJlc3BvbnNlOihOU0NhY2hlZFVSTFJlc3BvbnNlICopY2FjaGVkUmVz
cG9uc2UgY2xpZW50OihpZCA8TlNVUkxQcm90b2NvbENsaWVudD4pY2xpZW50OwoKCgoKCgotIChp
ZCA8TlNVUkxQcm90b2NvbENsaWVudD4pY2xpZW50OwoKCgoKCgotIChOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0OwoKCgoKCgotIChOU0NhY2hlZFVSTFJlc3BvbnNlICopY2FjaGVkUmVzcG9uc2U7CiMg
MjI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFk
ZXJzL05TVVJMUHJvdG9jb2wuaCIgMworIChCT09MKWNhbkluaXRXaXRoUmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdDsKIyAyNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxQcm90b2NvbC5oIiAzCisgKE5TVVJMUmVxdWVz
dCAqKWNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0Owoj
IDI1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9OU1VSTFByb3RvY29sLmgiIDMKKyAoQk9PTClyZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6
KE5TVVJMUmVxdWVzdCAqKWEgdG9SZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiliOwoKCgoKCgoKLSAo
dm9pZClzdGFydExvYWRpbmc7CiMgMjc0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMUHJvdG9jb2wuaCIgMwotICh2b2lkKXN0b3BM
b2FkaW5nOwojIDI5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9OU1VSTFByb3RvY29sLmgiIDMKKyAoaWQpcHJvcGVydHlGb3JLZXk6KE5T
U3RyaW5nICopa2V5IGluUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIyAzMDUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNV
UkxQcm90b2NvbC5oIiAzCisgKHZvaWQpc2V0UHJvcGVydHk6KGlkKXZhbHVlIGZvcktleTooTlNT
dHJpbmcgKilrZXkgaW5SZXF1ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIyAz
MTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvTlNVUkxQcm90b2NvbC5oIiAzCisgKHZvaWQpcmVtb3ZlUHJvcGVydHlGb3JLZXk6KE5TU3Ry
aW5nICopa2V5IGluUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJlcXVlc3Q7CiMgMzQy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJz
L05TVVJMUHJvdG9jb2wuaCIgMworIChCT09MKXJlZ2lzdGVyQ2xhc3M6KENsYXNzKXByb3RvY29s
Q2xhc3M7CiMgMzUxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL05TVVJMUHJvdG9jb2wuaCIgMworICh2b2lkKXVucmVnaXN0ZXJDbGFzczoo
Q2xhc3MpcHJvdG9jb2xDbGFzczsKCkBlbmQKIyA4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNV
UkxSZXF1ZXN0LmgiIDEgMwojIDE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMUmVxdWVzdC5oIiAzCkBjbGFzcyBOU0RhdGE7CkBj
bGFzcyBOU0RpY3Rpb25hcnk7CkBjbGFzcyBOU0lucHV0U3RyZWFtOwpAY2xhc3MgTlNTdHJpbmc7
CkBjbGFzcyBOU1VSTDsKQGNsYXNzIE5TVVJMUmVxdWVzdEludGVybmFsOwojIDEwMCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTFJl
cXVlc3QuaCIgMwplbnVtCnsKICAgIE5TVVJMUmVxdWVzdFVzZVByb3RvY29sQ2FjaGVQb2xpY3kg
PSAwLAoKICAgIE5TVVJMUmVxdWVzdFJlbG9hZElnbm9yaW5nTG9jYWxDYWNoZURhdGEgPSAxLAog
ICAgTlNVUkxSZXF1ZXN0UmVsb2FkSWdub3JpbmdMb2NhbEFuZFJlbW90ZUNhY2hlRGF0YSA9IDQs
CiAgICBOU1VSTFJlcXVlc3RSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSA9IE5TVVJMUmVxdWVzdFJl
bG9hZElnbm9yaW5nTG9jYWxDYWNoZURhdGEsCgogICAgTlNVUkxSZXF1ZXN0UmV0dXJuQ2FjaGVE
YXRhRWxzZUxvYWQgPSAyLAogICAgTlNVUkxSZXF1ZXN0UmV0dXJuQ2FjaGVEYXRhRG9udExvYWQg
PSAzLAoKICAgIE5TVVJMUmVxdWVzdFJlbG9hZFJldmFsaWRhdGluZ0NhY2hlRGF0YSA9IDUsCn07
CnR5cGVkZWYgTlNVSW50ZWdlciBOU1VSTFJlcXVlc3RDYWNoZVBvbGljeTsKIyAxNDcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxS
ZXF1ZXN0LmgiIDMKQGludGVyZmFjZSBOU1VSTFJlcXVlc3QgOiBOU09iamVjdCA8TlNDb2Rpbmcs
IE5TQ29weWluZywgTlNNdXRhYmxlQ29weWluZz4KewogICAgQHByaXZhdGUKICAgIE5TVVJMUmVx
dWVzdEludGVybmFsICpfaW50ZXJuYWw7Cn0KIyAxNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxSZXF1ZXN0LmgiIDMKKyAoaWQp
cmVxdWVzdFdpdGhVUkw6KE5TVVJMICopVVJMOwojIDE3NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTFJlcXVlc3QuaCIgMworIChp
ZClyZXF1ZXN0V2l0aFVSTDooTlNVUkwgKilVUkwgY2FjaGVQb2xpY3k6KE5TVVJMUmVxdWVzdENh
Y2hlUG9saWN5KWNhY2hlUG9saWN5IHRpbWVvdXRJbnRlcnZhbDooTlNUaW1lSW50ZXJ2YWwpdGlt
ZW91dEludGVydmFsOwojIDE4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTFJlcXVlc3QuaCIgMwotIChpZClpbml0V2l0aFVSTDoo
TlNVUkwgKilVUkw7CiMgMjAyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL05TVVJMUmVxdWVzdC5oIiAzCi0gKGlkKWluaXRXaXRoVVJMOihO
U1VSTCAqKVVSTCBjYWNoZVBvbGljeTooTlNVUkxSZXF1ZXN0Q2FjaGVQb2xpY3kpY2FjaGVQb2xp
Y3kgdGltZW91dEludGVydmFsOihOU1RpbWVJbnRlcnZhbCl0aW1lb3V0SW50ZXJ2YWw7CgoKCgoK
Ci0gKE5TVVJMICopVVJMOwoKCgoKCgotIChOU1VSTFJlcXVlc3RDYWNoZVBvbGljeSljYWNoZVBv
bGljeTsKIyAyMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvTlNVUkxSZXF1ZXN0LmgiIDMKLSAoTlNUaW1lSW50ZXJ2YWwpdGltZW91dElu
dGVydmFsOwojIDI0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9OU1VSTFJlcXVlc3QuaCIgMwotIChOU1VSTCAqKW1haW5Eb2N1bWVudFVS
TDsKCkBlbmQKIyAyODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvTlNVUkxSZXF1ZXN0LmgiIDMKQGludGVyZmFjZSBOU011dGFibGVVUkxS
ZXF1ZXN0IDogTlNVUkxSZXF1ZXN0CgoKCgoKCi0gKHZvaWQpc2V0VVJMOihOU1VSTCAqKVVSTDsK
CgoKCgoKLSAodm9pZClzZXRDYWNoZVBvbGljeTooTlNVUkxSZXF1ZXN0Q2FjaGVQb2xpY3kpcG9s
aWN5OwojIDMxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9OU1VSTFJlcXVlc3QuaCIgMwotICh2b2lkKXNldFRpbWVvdXRJbnRlcnZhbDoo
TlNUaW1lSW50ZXJ2YWwpc2Vjb25kczsKIyAzMjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxSZXF1ZXN0LmgiIDMKLSAodm9pZClz
ZXRNYWluRG9jdW1lbnRVUkw6KE5TVVJMICopVVJMOwoKQGVuZAojIDMzOSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTFJlcXVlc3Qu
aCIgMwpAaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoTlNIVFRQVVJMUmVxdWVzdCkKCgoKCgoKLSAo
TlNTdHJpbmcgKilIVFRQTWV0aG9kOwojIDM1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTFJlcXVlc3QuaCIgMwotIChOU0RpY3Rp
b25hcnkgKilhbGxIVFRQSGVhZGVyRmllbGRzOwojIDM2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTFJlcXVlc3QuaCIgMwotIChO
U1N0cmluZyAqKXZhbHVlRm9ySFRUUEhlYWRlckZpZWxkOihOU1N0cmluZyAqKWZpZWxkOwojIDM3
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9OU1VSTFJlcXVlc3QuaCIgMwotIChOU0RhdGEgKilIVFRQQm9keTsKIyAzOTEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxSZXF1
ZXN0LmgiIDMKLSAoTlNJbnB1dFN0cmVhbSAqKUhUVFBCb2R5U3RyZWFtOwojIDQwMiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTFJl
cXVlc3QuaCIgMwotIChCT09MKUhUVFBTaG91bGRIYW5kbGVDb29raWVzOwoKQGVuZAojIDQxMyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9O
U1VSTFJlcXVlc3QuaCIgMwpAaW50ZXJmYWNlIE5TTXV0YWJsZVVSTFJlcXVlc3QgKE5TTXV0YWJs
ZUhUVFBVUkxSZXF1ZXN0KQoKCgoKCgotICh2b2lkKXNldEhUVFBNZXRob2Q6KE5TU3RyaW5nICop
bWV0aG9kOwojIDQzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9OU1VSTFJlcXVlc3QuaCIgMwotICh2b2lkKXNldEFsbEhUVFBIZWFkZXJG
aWVsZHM6KE5TRGljdGlvbmFyeSAqKWhlYWRlckZpZWxkczsKIyA0NDcgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxSZXF1ZXN0Lmgi
IDMKLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JIVFRQSGVhZGVyRmllbGQ6
KE5TU3RyaW5nICopZmllbGQ7CiMgNDYzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMUmVxdWVzdC5oIiAzCi0gKHZvaWQpYWRkVmFs
dWU6KE5TU3RyaW5nICopdmFsdWUgZm9ySFRUUEhlYWRlckZpZWxkOihOU1N0cmluZyAqKWZpZWxk
OwojIDQ3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9OU1VSTFJlcXVlc3QuaCIgMwotICh2b2lkKXNldEhUVFBCb2R5OihOU0RhdGEgKilk
YXRhOwojIDQ4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9OU1VSTFJlcXVlc3QuaCIgMwotICh2b2lkKXNldEhUVFBCb2R5U3RyZWFtOihO
U0lucHV0U3RyZWFtICopaW5wdXRTdHJlYW07CiMgNDk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMUmVxdWVzdC5oIiAzCi0gKHZv
aWQpc2V0SFRUUFNob3VsZEhhbmRsZUNvb2tpZXM6KEJPT0wpc2hvdWxkOwoKQGVuZAojIDg1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0Zv
dW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTFJlc3BvbnNlLmgiIDEgMwojIDE1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMUmVzcG9u
c2UuaCIgMwpAY2xhc3MgTlNEaWN0aW9uYXJ5OwpAY2xhc3MgTlNTdHJpbmc7CkBjbGFzcyBOU1VS
TDsKQGNsYXNzIE5TVVJMUmVxdWVzdDsKQGNsYXNzIE5TVVJMUmVzcG9uc2VJbnRlcm5hbDsKCiNk
ZWZpbmUgTlNVUkxSZXNwb25zZVVua25vd25MZW5ndGggKChsb25nIGxvbmcpLTEpCiMgMzUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNV
UkxSZXNwb25zZS5oIiAzCkBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSA6IE5TT2JqZWN0IDxOU0Nv
ZGluZywgTlNDb3B5aW5nPgp7CiAgICBAcGFja2FnZQogICAgTlNVUkxSZXNwb25zZUludGVybmFs
ICpfaW50ZXJuYWw7Cn0KIyA1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTFJlc3BvbnNlLmgiIDMKLSAoaWQpaW5pdFdpdGhVUkw6
KE5TVVJMICopVVJMIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIGV4cGVjdGVkQ29udGVu
dExlbmd0aDooTlNJbnRlZ2VyKWxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKW5h
bWU7CgoKCgoKCi0gKE5TVVJMICopVVJMOwojIDcxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMUmVzcG9uc2UuaCIgMwotIChOU1N0
cmluZyAqKU1JTUVUeXBlOwojIDg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMUmVzcG9uc2UuaCIgMwotIChsb25nIGxvbmcpZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOwojIDk5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMUmVzcG9uc2UuaCIgMwotIChOU1N0cmluZyAq
KXRleHRFbmNvZGluZ05hbWU7CiMgMTEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMUmVzcG9uc2UuaCIgMwotIChOU1N0cmluZyAq
KXN1Z2dlc3RlZEZpbGVuYW1lOwoKQGVuZAoKCgpAY2xhc3MgTlNIVFRQVVJMUmVzcG9uc2VJbnRl
cm5hbDsKIyAxMjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvTlNVUkxSZXNwb25zZS5oIiAzCkBpbnRlcmZhY2UgTlNIVFRQVVJMUmVzcG9u
c2UgOiBOU1VSTFJlc3BvbnNlCnsKICAgIEBwYWNrYWdlCiAgICBOU0hUVFBVUkxSZXNwb25zZUlu
dGVybmFsICpfaHR0cEludGVybmFsOwp9CgoKCgoKCi0gKE5TSW50ZWdlcilzdGF0dXNDb2RlOwoj
IDE1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9OU1VSTFJlc3BvbnNlLmgiIDMKLSAoTlNEaWN0aW9uYXJ5ICopYWxsSGVhZGVyRmllbGRz
OwojIDE2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9OU1VSTFJlc3BvbnNlLmgiIDMKKyAoTlNTdHJpbmcgKilsb2NhbGl6ZWRTdHJpbmdG
b3JTdGF0dXNDb2RlOihOU0ludGVnZXIpc3RhdHVzQ29kZTsKCkBlbmQKIyA4NiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9u
LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvTlNYTUxQYXJzZXIuaCIgMSAzCiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1hNTFBhcnNlci5oIiAzCkBjbGFz
cyBOU0RhdGEsIE5TRGljdGlvbmFyeSwgTlNFcnJvciwgTlNTdHJpbmcsIE5TVVJMOwpAcHJvdG9j
b2wgTlNYTUxQYXJzZXJEZWxlZ2F0ZTsKCkBpbnRlcmZhY2UgTlNYTUxQYXJzZXIgOiBOU09iamVj
dCB7CkBwcml2YXRlCiAgICB2b2lkICogX3BhcnNlcjsKICAgIGlkIF9kZWxlZ2F0ZTsKICAgIGlk
IF9yZXNlcnZlZDE7CiAgICBpZCBfcmVzZXJ2ZWQyOwogICAgaWQgX3Jlc2VydmVkMzsKfQotIChp
ZClpbml0V2l0aENvbnRlbnRzT2ZVUkw6KE5TVVJMICopdXJsOwotIChpZClpbml0V2l0aERhdGE6
KE5TRGF0YSAqKWRhdGE7CgoKLSAoaWQgPE5TWE1MUGFyc2VyRGVsZWdhdGU+KWRlbGVnYXRlOwot
ICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNYTUxQYXJzZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7Cgot
ICh2b2lkKXNldFNob3VsZFByb2Nlc3NOYW1lc3BhY2VzOihCT09MKXNob3VsZFByb2Nlc3NOYW1l
c3BhY2VzOwotICh2b2lkKXNldFNob3VsZFJlcG9ydE5hbWVzcGFjZVByZWZpeGVzOihCT09MKXNo
b3VsZFJlcG9ydE5hbWVzcGFjZVByZWZpeGVzOwotICh2b2lkKXNldFNob3VsZFJlc29sdmVFeHRl
cm5hbEVudGl0aWVzOihCT09MKXNob3VsZFJlc29sdmVFeHRlcm5hbEVudGl0aWVzOwoKLSAoQk9P
TClzaG91bGRQcm9jZXNzTmFtZXNwYWNlczsKLSAoQk9PTClzaG91bGRSZXBvcnROYW1lc3BhY2VQ
cmVmaXhlczsKLSAoQk9PTClzaG91bGRSZXNvbHZlRXh0ZXJuYWxFbnRpdGllczsKCi0gKEJPT0wp
cGFyc2U7Ci0gKHZvaWQpYWJvcnRQYXJzaW5nOwoKLSAoTlNFcnJvciAqKXBhcnNlckVycm9yOwpA
ZW5kCgoKQGludGVyZmFjZSBOU1hNTFBhcnNlciAoTlNYTUxQYXJzZXJMb2NhdG9yQWRkaXRpb25z
KQotIChOU1N0cmluZyAqKXB1YmxpY0lEOwotIChOU1N0cmluZyAqKXN5c3RlbUlEOwotIChOU0lu
dGVnZXIpbGluZU51bWJlcjsKLSAoTlNJbnRlZ2VyKWNvbHVtbk51bWJlcjsKQGVuZAojIDY2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05T
WE1MUGFyc2VyLmgiIDMKQHByb3RvY29sIE5TWE1MUGFyc2VyRGVsZWdhdGUgPE5TT2JqZWN0PgpA
b3B0aW9uYWwKCgotICh2b2lkKXBhcnNlckRpZFN0YXJ0RG9jdW1lbnQ6KE5TWE1MUGFyc2VyICop
cGFyc2VyOwoKLSAodm9pZClwYXJzZXJEaWRFbmREb2N1bWVudDooTlNYTUxQYXJzZXIgKilwYXJz
ZXI7CgoKCi0gKHZvaWQpcGFyc2VyOihOU1hNTFBhcnNlciAqKXBhcnNlciBmb3VuZE5vdGF0aW9u
RGVjbGFyYXRpb25XaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lIHB1YmxpY0lEOihOU1N0cmluZyAq
KXB1YmxpY0lEIHN5c3RlbUlEOihOU1N0cmluZyAqKXN5c3RlbUlEOwoKLSAodm9pZClwYXJzZXI6
KE5TWE1MUGFyc2VyICopcGFyc2VyIGZvdW5kVW5wYXJzZWRFbnRpdHlEZWNsYXJhdGlvbldpdGhO
YW1lOihOU1N0cmluZyAqKW5hbWUgcHVibGljSUQ6KE5TU3RyaW5nICopcHVibGljSUQgc3lzdGVt
SUQ6KE5TU3RyaW5nICopc3lzdGVtSUQgbm90YXRpb25OYW1lOihOU1N0cmluZyAqKW5vdGF0aW9u
TmFtZTsKCi0gKHZvaWQpcGFyc2VyOihOU1hNTFBhcnNlciAqKXBhcnNlciBmb3VuZEF0dHJpYnV0
ZURlY2xhcmF0aW9uV2l0aE5hbWU6KE5TU3RyaW5nICopYXR0cmlidXRlTmFtZSBmb3JFbGVtZW50
OihOU1N0cmluZyAqKWVsZW1lbnROYW1lIHR5cGU6KE5TU3RyaW5nICopdHlwZSBkZWZhdWx0VmFs
dWU6KE5TU3RyaW5nICopZGVmYXVsdFZhbHVlOwoKLSAodm9pZClwYXJzZXI6KE5TWE1MUGFyc2Vy
ICopcGFyc2VyIGZvdW5kRWxlbWVudERlY2xhcmF0aW9uV2l0aE5hbWU6KE5TU3RyaW5nICopZWxl
bWVudE5hbWUgbW9kZWw6KE5TU3RyaW5nICopbW9kZWw7CgotICh2b2lkKXBhcnNlcjooTlNYTUxQ
YXJzZXIgKilwYXJzZXIgZm91bmRJbnRlcm5hbEVudGl0eURlY2xhcmF0aW9uV2l0aE5hbWU6KE5T
U3RyaW5nICopbmFtZSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZTsKCi0gKHZvaWQpcGFyc2VyOihO
U1hNTFBhcnNlciAqKXBhcnNlciBmb3VuZEV4dGVybmFsRW50aXR5RGVjbGFyYXRpb25XaXRoTmFt
ZTooTlNTdHJpbmcgKiluYW1lIHB1YmxpY0lEOihOU1N0cmluZyAqKXB1YmxpY0lEIHN5c3RlbUlE
OihOU1N0cmluZyAqKXN5c3RlbUlEOwoKLSAodm9pZClwYXJzZXI6KE5TWE1MUGFyc2VyICopcGFy
c2VyIGRpZFN0YXJ0RWxlbWVudDooTlNTdHJpbmcgKillbGVtZW50TmFtZSBuYW1lc3BhY2VVUkk6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIHF1YWxpZmllZE5hbWU6KE5TU3RyaW5nICopcU5hbWUg
YXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlRGljdDsKCgoKCgoKCi0gKHZvaWQp
cGFyc2VyOihOU1hNTFBhcnNlciAqKXBhcnNlciBkaWRFbmRFbGVtZW50OihOU1N0cmluZyAqKWVs
ZW1lbnROYW1lIG5hbWVzcGFjZVVSSTooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgcXVhbGlmaWVk
TmFtZTooTlNTdHJpbmcgKilxTmFtZTsKCgotICh2b2lkKXBhcnNlcjooTlNYTUxQYXJzZXIgKilw
YXJzZXIgZGlkU3RhcnRNYXBwaW5nUHJlZml4OihOU1N0cmluZyAqKXByZWZpeCB0b1VSSTooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkk7CgoKCgotICh2b2lkKXBhcnNlcjooTlNYTUxQYXJzZXIgKilw
YXJzZXIgZGlkRW5kTWFwcGluZ1ByZWZpeDooTlNTdHJpbmcgKilwcmVmaXg7CgoKLSAodm9pZClw
YXJzZXI6KE5TWE1MUGFyc2VyICopcGFyc2VyIGZvdW5kQ2hhcmFjdGVyczooTlNTdHJpbmcgKilz
dHJpbmc7CgoKLSAodm9pZClwYXJzZXI6KE5TWE1MUGFyc2VyICopcGFyc2VyIGZvdW5kSWdub3Jh
YmxlV2hpdGVzcGFjZTooTlNTdHJpbmcgKil3aGl0ZXNwYWNlU3RyaW5nOwoKCi0gKHZvaWQpcGFy
c2VyOihOU1hNTFBhcnNlciAqKXBhcnNlciBmb3VuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbldpdGhU
YXJnZXQ6KE5TU3RyaW5nICopdGFyZ2V0IGRhdGE6KE5TU3RyaW5nICopZGF0YTsKCgotICh2b2lk
KXBhcnNlcjooTlNYTUxQYXJzZXIgKilwYXJzZXIgZm91bmRDb21tZW50OihOU1N0cmluZyAqKWNv
bW1lbnQ7CgoKLSAodm9pZClwYXJzZXI6KE5TWE1MUGFyc2VyICopcGFyc2VyIGZvdW5kQ0RBVEE6
KE5TRGF0YSAqKUNEQVRBQmxvY2s7CgoKLSAoTlNEYXRhICopcGFyc2VyOihOU1hNTFBhcnNlciAq
KXBhcnNlciByZXNvbHZlRXh0ZXJuYWxFbnRpdHlOYW1lOihOU1N0cmluZyAqKW5hbWUgc3lzdGVt
SUQ6KE5TU3RyaW5nICopc3lzdGVtSUQ7CgoKLSAodm9pZClwYXJzZXI6KE5TWE1MUGFyc2VyICop
cGFyc2VyIHBhcnNlRXJyb3JPY2N1cnJlZDooTlNFcnJvciAqKXBhcnNlRXJyb3I7CgoKLSAodm9p
ZClwYXJzZXI6KE5TWE1MUGFyc2VyICopcGFyc2VyIHZhbGlkYXRpb25FcnJvck9jY3VycmVkOihO
U0Vycm9yICopdmFsaWRhdGlvbkVycm9yOwoKQGVuZAoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNv
bnN0IE5TWE1MUGFyc2VyRXJyb3JEb21haW4gOwoKCmVudW0gewogICAgTlNYTUxQYXJzZXJJbnRl
cm5hbEVycm9yID0gMSwKICAgIE5TWE1MUGFyc2VyT3V0T2ZNZW1vcnlFcnJvciA9IDIsCiAgICBO
U1hNTFBhcnNlckRvY3VtZW50U3RhcnRFcnJvciA9IDMsCiAgICBOU1hNTFBhcnNlckVtcHR5RG9j
dW1lbnRFcnJvciA9IDQsCiAgICBOU1hNTFBhcnNlclByZW1hdHVyZURvY3VtZW50RW5kRXJyb3Ig
PSA1LAogICAgTlNYTUxQYXJzZXJJbnZhbGlkSGV4Q2hhcmFjdGVyUmVmRXJyb3IgPSA2LAogICAg
TlNYTUxQYXJzZXJJbnZhbGlkRGVjaW1hbENoYXJhY3RlclJlZkVycm9yID0gNywKICAgIE5TWE1M
UGFyc2VySW52YWxpZENoYXJhY3RlclJlZkVycm9yID0gOCwKICAgIE5TWE1MUGFyc2VySW52YWxp
ZENoYXJhY3RlckVycm9yID0gOSwKICAgIE5TWE1MUGFyc2VyQ2hhcmFjdGVyUmVmQXRFT0ZFcnJv
ciA9IDEwLAogICAgTlNYTUxQYXJzZXJDaGFyYWN0ZXJSZWZJblByb2xvZ0Vycm9yID0gMTEsCiAg
ICBOU1hNTFBhcnNlckNoYXJhY3RlclJlZkluRXBpbG9nRXJyb3IgPSAxMiwKICAgIE5TWE1MUGFy
c2VyQ2hhcmFjdGVyUmVmSW5EVERFcnJvciA9IDEzLAogICAgTlNYTUxQYXJzZXJFbnRpdHlSZWZB
dEVPRkVycm9yID0gMTQsCiAgICBOU1hNTFBhcnNlckVudGl0eVJlZkluUHJvbG9nRXJyb3IgPSAx
NSwKICAgIE5TWE1MUGFyc2VyRW50aXR5UmVmSW5FcGlsb2dFcnJvciA9IDE2LAogICAgTlNYTUxQ
YXJzZXJFbnRpdHlSZWZJbkRUREVycm9yID0gMTcsCiAgICBOU1hNTFBhcnNlclBhcnNlZEVudGl0
eVJlZkF0RU9GRXJyb3IgPSAxOCwKICAgIE5TWE1MUGFyc2VyUGFyc2VkRW50aXR5UmVmSW5Qcm9s
b2dFcnJvciA9IDE5LAogICAgTlNYTUxQYXJzZXJQYXJzZWRFbnRpdHlSZWZJbkVwaWxvZ0Vycm9y
ID0gMjAsCiAgICBOU1hNTFBhcnNlclBhcnNlZEVudGl0eVJlZkluSW50ZXJuYWxTdWJzZXRFcnJv
ciA9IDIxLAogICAgTlNYTUxQYXJzZXJFbnRpdHlSZWZlcmVuY2VXaXRob3V0TmFtZUVycm9yID0g
MjIsCiAgICBOU1hNTFBhcnNlckVudGl0eVJlZmVyZW5jZU1pc3NpbmdTZW1pRXJyb3IgPSAyMywK
ICAgIE5TWE1MUGFyc2VyUGFyc2VkRW50aXR5UmVmTm9OYW1lRXJyb3IgPSAyNCwKICAgIE5TWE1M
UGFyc2VyUGFyc2VkRW50aXR5UmVmTWlzc2luZ1NlbWlFcnJvciA9IDI1LAogICAgTlNYTUxQYXJz
ZXJVbmRlY2xhcmVkRW50aXR5RXJyb3IgPSAyNiwKICAgIE5TWE1MUGFyc2VyVW5wYXJzZWRFbnRp
dHlFcnJvciA9IDI4LAogICAgTlNYTUxQYXJzZXJFbnRpdHlJc0V4dGVybmFsRXJyb3IgPSAyOSwK
ICAgIE5TWE1MUGFyc2VyRW50aXR5SXNQYXJhbWV0ZXJFcnJvciA9IDMwLAogICAgTlNYTUxQYXJz
ZXJVbmtub3duRW5jb2RpbmdFcnJvciA9IDMxLAogICAgTlNYTUxQYXJzZXJFbmNvZGluZ05vdFN1
cHBvcnRlZEVycm9yID0gMzIsCiAgICBOU1hNTFBhcnNlclN0cmluZ05vdFN0YXJ0ZWRFcnJvciA9
IDMzLAogICAgTlNYTUxQYXJzZXJTdHJpbmdOb3RDbG9zZWRFcnJvciA9IDM0LAogICAgTlNYTUxQ
YXJzZXJOYW1lc3BhY2VEZWNsYXJhdGlvbkVycm9yID0gMzUsCiAgICBOU1hNTFBhcnNlckVudGl0
eU5vdFN0YXJ0ZWRFcnJvciA9IDM2LAogICAgTlNYTUxQYXJzZXJFbnRpdHlOb3RGaW5pc2hlZEVy
cm9yID0gMzcsCiAgICBOU1hNTFBhcnNlckxlc3NUaGFuU3ltYm9sSW5BdHRyaWJ1dGVFcnJvciA9
IDM4LAogICAgTlNYTUxQYXJzZXJBdHRyaWJ1dGVOb3RTdGFydGVkRXJyb3IgPSAzOSwKICAgIE5T
WE1MUGFyc2VyQXR0cmlidXRlTm90RmluaXNoZWRFcnJvciA9IDQwLAogICAgTlNYTUxQYXJzZXJB
dHRyaWJ1dGVIYXNOb1ZhbHVlRXJyb3IgPSA0MSwKICAgIE5TWE1MUGFyc2VyQXR0cmlidXRlUmVk
ZWZpbmVkRXJyb3IgPSA0MiwKICAgIE5TWE1MUGFyc2VyTGl0ZXJhbE5vdFN0YXJ0ZWRFcnJvciA9
IDQzLAogICAgTlNYTUxQYXJzZXJMaXRlcmFsTm90RmluaXNoZWRFcnJvciA9IDQ0LAogICAgTlNY
TUxQYXJzZXJDb21tZW50Tm90RmluaXNoZWRFcnJvciA9IDQ1LAogICAgTlNYTUxQYXJzZXJQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25Ob3RTdGFydGVkRXJyb3IgPSA0NiwKICAgIE5TWE1MUGFyc2VyUHJv
Y2Vzc2luZ0luc3RydWN0aW9uTm90RmluaXNoZWRFcnJvciA9IDQ3LAogICAgTlNYTUxQYXJzZXJO
b3RhdGlvbk5vdFN0YXJ0ZWRFcnJvciA9IDQ4LAogICAgTlNYTUxQYXJzZXJOb3RhdGlvbk5vdEZp
bmlzaGVkRXJyb3IgPSA0OSwKICAgIE5TWE1MUGFyc2VyQXR0cmlidXRlTGlzdE5vdFN0YXJ0ZWRF
cnJvciA9IDUwLAogICAgTlNYTUxQYXJzZXJBdHRyaWJ1dGVMaXN0Tm90RmluaXNoZWRFcnJvciA9
IDUxLAogICAgTlNYTUxQYXJzZXJNaXhlZENvbnRlbnREZWNsTm90U3RhcnRlZEVycm9yID0gNTIs
CiAgICBOU1hNTFBhcnNlck1peGVkQ29udGVudERlY2xOb3RGaW5pc2hlZEVycm9yID0gNTMsCiAg
ICBOU1hNTFBhcnNlckVsZW1lbnRDb250ZW50RGVjbE5vdFN0YXJ0ZWRFcnJvciA9IDU0LAogICAg
TlNYTUxQYXJzZXJFbGVtZW50Q29udGVudERlY2xOb3RGaW5pc2hlZEVycm9yID0gNTUsCiAgICBO
U1hNTFBhcnNlclhNTERlY2xOb3RTdGFydGVkRXJyb3IgPSA1NiwKICAgIE5TWE1MUGFyc2VyWE1M
RGVjbE5vdEZpbmlzaGVkRXJyb3IgPSA1NywKICAgIE5TWE1MUGFyc2VyQ29uZGl0aW9uYWxTZWN0
aW9uTm90U3RhcnRlZEVycm9yID0gNTgsCiAgICBOU1hNTFBhcnNlckNvbmRpdGlvbmFsU2VjdGlv
bk5vdEZpbmlzaGVkRXJyb3IgPSA1OSwKICAgIE5TWE1MUGFyc2VyRXh0ZXJuYWxTdWJzZXROb3RG
aW5pc2hlZEVycm9yID0gNjAsCiAgICBOU1hNTFBhcnNlckRPQ1RZUEVEZWNsTm90RmluaXNoZWRF
cnJvciA9IDYxLAogICAgTlNYTUxQYXJzZXJNaXNwbGFjZWRDREFUQUVuZFN0cmluZ0Vycm9yID0g
NjIsCiAgICBOU1hNTFBhcnNlckNEQVRBTm90RmluaXNoZWRFcnJvciA9IDYzLAogICAgTlNYTUxQ
YXJzZXJNaXNwbGFjZWRYTUxEZWNsYXJhdGlvbkVycm9yID0gNjQsCiAgICBOU1hNTFBhcnNlclNw
YWNlUmVxdWlyZWRFcnJvciA9IDY1LAogICAgTlNYTUxQYXJzZXJTZXBhcmF0b3JSZXF1aXJlZEVy
cm9yID0gNjYsCiAgICBOU1hNTFBhcnNlck5NVE9LRU5SZXF1aXJlZEVycm9yID0gNjcsCiAgICBO
U1hNTFBhcnNlck5BTUVSZXF1aXJlZEVycm9yID0gNjgsCiAgICBOU1hNTFBhcnNlclBDREFUQVJl
cXVpcmVkRXJyb3IgPSA2OSwKICAgIE5TWE1MUGFyc2VyVVJJUmVxdWlyZWRFcnJvciA9IDcwLAog
ICAgTlNYTUxQYXJzZXJQdWJsaWNJZGVudGlmaWVyUmVxdWlyZWRFcnJvciA9IDcxLAogICAgTlNY
TUxQYXJzZXJMVFJlcXVpcmVkRXJyb3IgPSA3MiwKICAgIE5TWE1MUGFyc2VyR1RSZXF1aXJlZEVy
cm9yID0gNzMsCiAgICBOU1hNTFBhcnNlckxUU2xhc2hSZXF1aXJlZEVycm9yID0gNzQsCiAgICBO
U1hNTFBhcnNlckVxdWFsRXhwZWN0ZWRFcnJvciA9IDc1LAogICAgTlNYTUxQYXJzZXJUYWdOYW1l
TWlzbWF0Y2hFcnJvciA9IDc2LAogICAgTlNYTUxQYXJzZXJVbmZpbmlzaGVkVGFnRXJyb3IgPSA3
NywKICAgIE5TWE1MUGFyc2VyU3RhbmRhbG9uZVZhbHVlRXJyb3IgPSA3OCwKICAgIE5TWE1MUGFy
c2VySW52YWxpZEVuY29kaW5nTmFtZUVycm9yID0gNzksCiAgICBOU1hNTFBhcnNlckNvbW1lbnRD
b250YWluc0RvdWJsZUh5cGhlbkVycm9yID0gODAsCiAgICBOU1hNTFBhcnNlckludmFsaWRFbmNv
ZGluZ0Vycm9yID0gODEsCiAgICBOU1hNTFBhcnNlckV4dGVybmFsU3RhbmRhbG9uZUVudGl0eUVy
cm9yID0gODIsCiAgICBOU1hNTFBhcnNlckludmFsaWRDb25kaXRpb25hbFNlY3Rpb25FcnJvciA9
IDgzLAogICAgTlNYTUxQYXJzZXJFbnRpdHlWYWx1ZVJlcXVpcmVkRXJyb3IgPSA4NCwKICAgIE5T
WE1MUGFyc2VyTm90V2VsbEJhbGFuY2VkRXJyb3IgPSA4NSwKICAgIE5TWE1MUGFyc2VyRXh0cmFD
b250ZW50RXJyb3IgPSA4NiwKICAgIE5TWE1MUGFyc2VySW52YWxpZENoYXJhY3RlckluRW50aXR5
RXJyb3IgPSA4NywKICAgIE5TWE1MUGFyc2VyUGFyc2VkRW50aXR5UmVmSW5JbnRlcm5hbEVycm9y
ID0gODgsCiAgICBOU1hNTFBhcnNlckVudGl0eVJlZkxvb3BFcnJvciA9IDg5LAogICAgTlNYTUxQ
YXJzZXJFbnRpdHlCb3VuZGFyeUVycm9yID0gOTAsCiAgICBOU1hNTFBhcnNlckludmFsaWRVUklF
cnJvciA9IDkxLAogICAgTlNYTUxQYXJzZXJVUklGcmFnbWVudEVycm9yID0gOTIsCiAgICBOU1hN
TFBhcnNlck5vRFRERXJyb3IgPSA5NCwKICAgIE5TWE1MUGFyc2VyRGVsZWdhdGVBYm9ydGVkUGFy
c2VFcnJvciA9IDUxMgp9Owp0eXBlZGVmIE5TSW50ZWdlciBOU1hNTFBhcnNlckVycm9yOwojIDg3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJz
L0ZvdW5kYXRpb24uaCIgMiAzCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9G
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TQXJjaGl2ZXIuaCIgMSAzCgoKCgoKCkBjbGFz
cyBOU1N0cmluZywgTlNEYXRhLCBOU011dGFibGVEYXRhLCBOU011dGFibGVEaWN0aW9uYXJ5LCBO
U011dGFibGVBcnJheTsKCgoKQGludGVyZmFjZSBOU0FyY2hpdmVyIDogTlNDb2RlciB7CkBwcml2
YXRlCiAgICB2b2lkICogbWRhdGE7CiAgICB2b2lkICpwb2ludGVyVGFibGU7CiAgICB2b2lkICpz
dHJpbmdUYWJsZTsKICAgIHZvaWQgKmlkczsKICAgIHZvaWQgKm1hcDsKICAgIHZvaWQgKnJlcGxh
Y2VtZW50VGFibGU7CiAgICB2b2lkICpyZXNlcnZlZDsKfQoKLSAoaWQpaW5pdEZvcldyaXRpbmdX
aXRoTXV0YWJsZURhdGE6KE5TTXV0YWJsZURhdGEgKiltZGF0YTsKCi0gKE5TTXV0YWJsZURhdGEg
KilhcmNoaXZlckRhdGE7CgotICh2b2lkKWVuY29kZVJvb3RPYmplY3Q6KGlkKXJvb3RPYmplY3Q7
Ci0gKHZvaWQpZW5jb2RlQ29uZGl0aW9uYWxPYmplY3Q6KGlkKW9iamVjdDsKCisgKE5TRGF0YSAq
KWFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OihpZClyb290T2JqZWN0OwoKKyAoQk9PTClhcmNo
aXZlUm9vdE9iamVjdDooaWQpcm9vdE9iamVjdCB0b0ZpbGU6KE5TU3RyaW5nICopcGF0aDsKCi0g
KHZvaWQpZW5jb2RlQ2xhc3NOYW1lOihOU1N0cmluZyAqKXRydWVOYW1lIGludG9DbGFzc05hbWU6
KE5TU3RyaW5nICopaW5BcmNoaXZlTmFtZTsKLSAoTlNTdHJpbmcgKiljbGFzc05hbWVFbmNvZGVk
Rm9yVHJ1ZUNsYXNzTmFtZTooTlNTdHJpbmcgKil0cnVlTmFtZTsKCi0gKHZvaWQpcmVwbGFjZU9i
amVjdDooaWQpb2JqZWN0IHdpdGhPYmplY3Q6KGlkKW5ld09iamVjdDsKCkBlbmQKCgoKQGludGVy
ZmFjZSBOU1VuYXJjaGl2ZXIgOiBOU0NvZGVyIHsKQHByaXZhdGUKICAgIHZvaWQgKiBkYXRheDsK
ICAgIE5TVUludGVnZXIgY3Vyc29yOwogICAgTlNab25lICpvYmplY3Rab25lOwogICAgTlNVSW50
ZWdlciBzeXN0ZW1WZXJzaW9uOwogICAgc2lnbmVkIGNoYXIgc3RyZWFtZXJWZXJzaW9uOwogICAg
Y2hhciBzd2FwOwogICAgY2hhciB1bnVzZWQxOwogICAgY2hhciB1bnVzZWQyOwogICAgdm9pZCAq
cG9pbnRlclRhYmxlOwogICAgdm9pZCAqc3RyaW5nVGFibGU7CiAgICBpZCBjbGFzc1ZlcnNpb25z
OwogICAgTlNJbnRlZ2VyIGxhc3RMYWJlbDsKICAgIHZvaWQgKm1hcDsKICAgIHZvaWQgKmFsbFVu
YXJjaGl2ZWRPYmplY3RzOwogICAgaWQgcmVzZXJ2ZWQ7Cn0KCi0gKGlkKWluaXRGb3JSZWFkaW5n
V2l0aERhdGE6KE5TRGF0YSAqKWRhdGE7CgotICh2b2lkKXNldE9iamVjdFpvbmU6KE5TWm9uZSAq
KXpvbmU7Ci0gKE5TWm9uZSAqKW9iamVjdFpvbmU7CgotIChCT09MKWlzQXRFbmQ7CgotICh1bnNp
Z25lZClzeXN0ZW1WZXJzaW9uOwoKKyAoaWQpdW5hcmNoaXZlT2JqZWN0V2l0aERhdGE6KE5TRGF0
YSAqKWRhdGE7CisgKGlkKXVuYXJjaGl2ZU9iamVjdFdpdGhGaWxlOihOU1N0cmluZyAqKXBhdGg7
CgorICh2b2lkKWRlY29kZUNsYXNzTmFtZTooTlNTdHJpbmcgKilpbkFyY2hpdmVOYW1lIGFzQ2xh
c3NOYW1lOihOU1N0cmluZyAqKXRydWVOYW1lOwoKLSAodm9pZClkZWNvZGVDbGFzc05hbWU6KE5T
U3RyaW5nICopaW5BcmNoaXZlTmFtZSBhc0NsYXNzTmFtZTooTlNTdHJpbmcgKil0cnVlTmFtZTsK
CisgKE5TU3RyaW5nICopY2xhc3NOYW1lRGVjb2RlZEZvckFyY2hpdmVDbGFzc05hbWU6KE5TU3Ry
aW5nICopaW5BcmNoaXZlTmFtZTsKLSAoTlNTdHJpbmcgKiljbGFzc05hbWVEZWNvZGVkRm9yQXJj
aGl2ZUNsYXNzTmFtZTooTlNTdHJpbmcgKilpbkFyY2hpdmVOYW1lOwoKLSAodm9pZClyZXBsYWNl
T2JqZWN0OihpZClvYmplY3Qgd2l0aE9iamVjdDooaWQpbmV3T2JqZWN0OwoKQGVuZAoKCgpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNJbmNvbnNpc3RlbnRBcmNoaXZlRXhjZXB0aW9uOwoK
CgpAaW50ZXJmYWNlIE5TT2JqZWN0IChOU0FyY2hpdmVyQ2FsbGJhY2spCgotIChDbGFzcyljbGFz
c0ZvckFyY2hpdmVyOwotIChpZClyZXBsYWNlbWVudE9iamVjdEZvckFyY2hpdmVyOihOU0FyY2hp
dmVyICopYXJjaGl2ZXI7CgpAZW5kCiMgOTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Zv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TQ29ubmVj
dGlvbi5oIiAxIDMKCgoKCgoKCkBjbGFzcyBOU011dGFibGVEYXRhLCBOU0Rpc3RhbnRPYmplY3Qs
IE5TRXhjZXB0aW9uLCBOU0RhdGE7CkBjbGFzcyBOU1BvcnQsIE5TUnVuTG9vcCwgTlNQb3J0TmFt
ZVNlcnZlciwgTlNEaWN0aW9uYXJ5LCBOU0FycmF5OwpAY2xhc3MgTlNEaXN0YW50T2JqZWN0UmVx
dWVzdDsKQHByb3RvY29sIE5TQ29ubmVjdGlvbkRlbGVnYXRlOwoKQGludGVyZmFjZSBOU0Nvbm5l
Y3Rpb24gOiBOU09iamVjdCB7CiAgICBAcHJpdmF0ZQogICAgaWQgcmVjZWl2ZVBvcnQ7CiAgICBp
ZCBzZW5kUG9ydDsKICAgIGlkIGRlbGVnYXRlOwogICAgaW50MzJfdCBidXN5OwogICAgaW50MzJf
dCBsb2NhbFByb3h5Q291bnQ7CiAgICBpbnQzMl90IHdhaXRDb3VudDsKICAgIGlkIGRlbGF5ZWRS
TDsKICAgIGlkIHN0YXRpc3RpY3M7CiAgICB1bnNpZ25lZCBjaGFyIGlzRGVhZDsKICAgIHVuc2ln
bmVkIGNoYXIgaXNWYWxpZDsKICAgIHVuc2lnbmVkIGNoYXIgd2FudHNJbnZhbGlkOwogICAgdW5z
aWduZWQgY2hhciBhdXRoR2VuOjE7CiAgICB1bnNpZ25lZCBjaGFyIGF1dGhDaGVjazoxOwogICAg
dW5zaWduZWQgY2hhciBlbmNyeXB0RmxhZzoxOwogICAgdW5zaWduZWQgY2hhciBkZWNyeXB0Rmxh
ZzoxOwogICAgdW5zaWduZWQgY2hhciBkb1JlcXVlc3Q6MTsKICAgIHVuc2lnbmVkIGNoYXIgaXNR
dWV1ZWluZzoxOwogICAgdW5zaWduZWQgY2hhciBpc011bHRpOjE7CiAgICB1bnNpZ25lZCBjaGFy
IGludmFsaWRhdGVSUDoxOwogICAgaWQgX19fMTsKICAgIGlkIF9fXzI7CiAgICBpZCBydW5Mb29w
czsKICAgIGlkIHJlcXVlc3RNb2RlczsKICAgIGlkIHJvb3RPYmplY3Q7CiAgICB2b2lkICogcmVn
aXN0ZXJJbmZvOwogICAgaWQgcmVwbE1vZGU7CiAgICBpZCBjbGFzc0luZm9JbXBvcnRlZDsKICAg
IGlkIHJlbGVhc2VkUHJveGllczsKICAgIHZvaWQgKiByZXNlcnZlZDsKfQoKLSAoTlNEaWN0aW9u
YXJ5ICopc3RhdGlzdGljczsKCisgKE5TQXJyYXkgKilhbGxDb25uZWN0aW9uczsKCisgKE5TQ29u
bmVjdGlvbiAqKWRlZmF1bHRDb25uZWN0aW9uIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsK
CisgKGlkKWNvbm5lY3Rpb25XaXRoUmVnaXN0ZXJlZE5hbWU6KE5TU3RyaW5nICopbmFtZSBob3N0
OihOU1N0cmluZyAqKWhvc3ROYW1lOworIChpZCljb25uZWN0aW9uV2l0aFJlZ2lzdGVyZWROYW1l
OihOU1N0cmluZyAqKW5hbWUgaG9zdDooTlNTdHJpbmcgKilob3N0TmFtZSB1c2luZ05hbWVTZXJ2
ZXI6KE5TUG9ydE5hbWVTZXJ2ZXIgKilzZXJ2ZXI7CisgKE5TRGlzdGFudE9iamVjdCAqKXJvb3RQ
cm94eUZvckNvbm5lY3Rpb25XaXRoUmVnaXN0ZXJlZE5hbWU6KE5TU3RyaW5nICopbmFtZSBob3N0
OihOU1N0cmluZyAqKWhvc3ROYW1lOworIChOU0Rpc3RhbnRPYmplY3QgKilyb290UHJveHlGb3JD
b25uZWN0aW9uV2l0aFJlZ2lzdGVyZWROYW1lOihOU1N0cmluZyAqKW5hbWUgaG9zdDooTlNTdHJp
bmcgKilob3N0TmFtZSB1c2luZ05hbWVTZXJ2ZXI6KE5TUG9ydE5hbWVTZXJ2ZXIgKilzZXJ2ZXI7
CgorIChpZClzZXJ2aWNlQ29ubmVjdGlvbldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUgcm9vdE9i
amVjdDooaWQpcm9vdCB1c2luZ05hbWVTZXJ2ZXI6KE5TUG9ydE5hbWVTZXJ2ZXIgKilzZXJ2ZXIg
OworIChpZClzZXJ2aWNlQ29ubmVjdGlvbldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUgcm9vdE9i
amVjdDooaWQpcm9vdCA7CgotICh2b2lkKXNldFJlcXVlc3RUaW1lb3V0OihOU1RpbWVJbnRlcnZh
bCl0aTsKLSAoTlNUaW1lSW50ZXJ2YWwpcmVxdWVzdFRpbWVvdXQ7Ci0gKHZvaWQpc2V0UmVwbHlU
aW1lb3V0OihOU1RpbWVJbnRlcnZhbCl0aTsKLSAoTlNUaW1lSW50ZXJ2YWwpcmVwbHlUaW1lb3V0
OwoKLSAodm9pZClzZXRSb290T2JqZWN0OihpZClhbk9iamVjdDsKLSAoaWQpcm9vdE9iamVjdDsK
Ci0gKE5TRGlzdGFudE9iamVjdCAqKXJvb3RQcm94eTsKCi0gKHZvaWQpc2V0RGVsZWdhdGU6KGlk
IDxOU0Nvbm5lY3Rpb25EZWxlZ2F0ZT4pYW5PYmplY3Q7Ci0gKGlkIDxOU0Nvbm5lY3Rpb25EZWxl
Z2F0ZT4pZGVsZWdhdGU7CgotICh2b2lkKXNldEluZGVwZW5kZW50Q29udmVyc2F0aW9uUXVldWVp
bmc6KEJPT0wpeW9ybjsKLSAoQk9PTClpbmRlcGVuZGVudENvbnZlcnNhdGlvblF1ZXVlaW5nOwoK
LSAoQk9PTClpc1ZhbGlkOwoKLSAodm9pZClpbnZhbGlkYXRlOwoKLSAodm9pZClhZGRSZXF1ZXN0
TW9kZTooTlNTdHJpbmcgKilybW9kZTsKLSAodm9pZClyZW1vdmVSZXF1ZXN0TW9kZTooTlNTdHJp
bmcgKilybW9kZTsKLSAoTlNBcnJheSAqKXJlcXVlc3RNb2RlczsKCi0gKEJPT0wpcmVnaXN0ZXJO
YW1lOihOU1N0cmluZyAqKSBuYW1lOwotIChCT09MKXJlZ2lzdGVyTmFtZTooTlNTdHJpbmcgKikg
bmFtZSB3aXRoTmFtZVNlcnZlcjooTlNQb3J0TmFtZVNlcnZlciAqKXNlcnZlcjsKCisgKGlkKWNv
bm5lY3Rpb25XaXRoUmVjZWl2ZVBvcnQ6KE5TUG9ydCAqKXJlY2VpdmVQb3J0IHNlbmRQb3J0OihO
U1BvcnQgKilzZW5kUG9ydDsKCisgKGlkKWN1cnJlbnRDb252ZXJzYXRpb247CgotIChpZClpbml0
V2l0aFJlY2VpdmVQb3J0OihOU1BvcnQgKilyZWNlaXZlUG9ydCBzZW5kUG9ydDooTlNQb3J0ICop
c2VuZFBvcnQ7Ci0gKE5TUG9ydCAqKXNlbmRQb3J0OwotIChOU1BvcnQgKilyZWNlaXZlUG9ydDsK
Ci0gKHZvaWQpZW5hYmxlTXVsdGlwbGVUaHJlYWRzOwotIChCT09MKW11bHRpcGxlVGhyZWFkc0Vu
YWJsZWQ7CgotICh2b2lkKWFkZFJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bmxvb3A7Ci0gKHZvaWQp
cmVtb3ZlUnVuTG9vcDooTlNSdW5Mb29wICopcnVubG9vcDsKCi0gKHZvaWQpcnVuSW5OZXdUaHJl
YWQ7CgotIChOU0FycmF5ICopcmVtb3RlT2JqZWN0czsKLSAoTlNBcnJheSAqKWxvY2FsT2JqZWN0
czsKCkBlbmQKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0Nvbm5lY3Rpb25SZXBseU1v
ZGU7CgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNDb25uZWN0aW9uRGlkRGllTm90aWZp
Y2F0aW9uOwoKCkBwcm90b2NvbCBOU0Nvbm5lY3Rpb25EZWxlZ2F0ZSA8TlNPYmplY3Q+CkBvcHRp
b25hbAoKCgotIChCT09MKW1ha2VOZXdDb25uZWN0aW9uOihOU0Nvbm5lY3Rpb24gKiljb25uIHNl
bmRlcjooTlNDb25uZWN0aW9uICopYW5jZXN0b3I7CgoKCi0gKEJPT0wpY29ubmVjdGlvbjooTlND
b25uZWN0aW9uICopYW5jZXN0b3Igc2hvdWxkTWFrZU5ld0Nvbm5lY3Rpb246KE5TQ29ubmVjdGlv
biAqKWNvbm47CgotIChOU0RhdGEgKilhdXRoZW50aWNhdGlvbkRhdGFGb3JDb21wb25lbnRzOihO
U0FycmF5ICopY29tcG9uZW50czsKLSAoQk9PTClhdXRoZW50aWNhdGVDb21wb25lbnRzOihOU0Fy
cmF5ICopY29tcG9uZW50cyB3aXRoRGF0YTooTlNEYXRhICopc2lnbmF0dXJlOwoKLSAoaWQpY3Jl
YXRlQ29udmVyc2F0aW9uRm9yQ29ubmVjdGlvbjooTlNDb25uZWN0aW9uICopY29ubjsKCi0gKEJP
T0wpY29ubmVjdGlvbjooTlNDb25uZWN0aW9uICopY29ubmVjdGlvbiBoYW5kbGVSZXF1ZXN0OihO
U0Rpc3RhbnRPYmplY3RSZXF1ZXN0ICopZG9yZXE7CgpAZW5kCgpleHRlcm4gIkMiIE5TU3RyaW5n
ICogY29uc3QgTlNGYWlsZWRBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbjsKCmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBOU0Nvbm5lY3Rpb25EaWRJbml0aWFsaXplTm90aWZpY2F0aW9uOwoKQGlu
dGVyZmFjZSBOU0Rpc3RhbnRPYmplY3RSZXF1ZXN0IDogTlNPYmplY3QKCi0gKE5TSW52b2NhdGlv
biAqKWludm9jYXRpb247Ci0gKE5TQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb247Ci0gKGlkKWNvbnZl
cnNhdGlvbjsKLSAodm9pZClyZXBseVdpdGhFeGNlcHRpb246KE5TRXhjZXB0aW9uICopZXhjZXB0
aW9uOwoKQGVuZAojIDk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0Rpc3RhbnRPYmplY3QuaCIg
MSAzCgoKCgoKCkBjbGFzcyBQcm90b2NvbCwgTlNDb25uZWN0aW9uLCBOU0NvZGVyOwoKQGludGVy
ZmFjZSBOU0Rpc3RhbnRPYmplY3QgOiBOU1Byb3h5IDxOU0NvZGluZz4gewogICAgQHByaXZhdGUK
ICAgIGlkIF9rbm93blNlbGVjdG9yczsKICAgIE5TVUludGVnZXIgX3dpcmVDb3VudDsKICAgIE5T
VUludGVnZXIgX3JlZkNvdW50OwogICAgaWQgX3Byb3RvOwogICAgdWludDE2X3QgX19fMjsKICAg
IHVpbnQ4X3QgX19fMTsKICAgIHVpbnQ4X3QgX3dpcmVUeXBlOwogICAgaWQgX3JlbW90ZUNsYXNz
Owp9CgoKCisgKE5TRGlzdGFudE9iamVjdCAqKXByb3h5V2l0aFRhcmdldDooaWQpdGFyZ2V0IGNv
bm5lY3Rpb246KE5TQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb247Ci0gKGlkKWluaXRXaXRoVGFyZ2V0
OihpZCl0YXJnZXQgY29ubmVjdGlvbjooTlNDb25uZWN0aW9uICopY29ubmVjdGlvbjsKCisgKE5T
RGlzdGFudE9iamVjdCAqKXByb3h5V2l0aExvY2FsOihpZCl0YXJnZXQgY29ubmVjdGlvbjooTlND
b25uZWN0aW9uICopY29ubmVjdGlvbjsKLSAoaWQpaW5pdFdpdGhMb2NhbDooaWQpdGFyZ2V0IGNv
bm5lY3Rpb246KE5TQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb247CgotICh2b2lkKXNldFByb3RvY29s
Rm9yUHJveHk6KFByb3RvY29sICopcHJvdG87CgotIChOU0Nvbm5lY3Rpb24gKiljb25uZWN0aW9u
Rm9yUHJveHk7CgpAZW5kCiMgOTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TRGlzdHJpYnV0ZWRO
b3RpZmljYXRpb25DZW50ZXIuaCIgMSAzCgoKCgoKCkBjbGFzcyBOU1N0cmluZywgTlNEaWN0aW9u
YXJ5OwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TTG9jYWxOb3RpZmljYXRpb25DZW50
ZXJUeXBlOwoKCmVudW0gewogICAgTlNOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEcm9w
ID0gMSwKCiAgICBOU05vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNvYWxlc2NlID0gMiwK
CiAgICBOU05vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckhvbGQgPSAzLAoKICAgIE5TTm90
aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5ID0gNAoKCgp9Owp0
eXBlZGVmIE5TVUludGVnZXIgTlNOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3I7CgpAaW50
ZXJmYWNlIE5TRGlzdHJpYnV0ZWROb3RpZmljYXRpb25DZW50ZXIgOiBOU05vdGlmaWNhdGlvbkNl
bnRlcgoKKyAoTlNEaXN0cmlidXRlZE5vdGlmaWNhdGlvbkNlbnRlciAqKW5vdGlmaWNhdGlvbkNl
bnRlckZvclR5cGU6KE5TU3RyaW5nICopbm90aWZpY2F0aW9uQ2VudGVyVHlwZTsKCgorIChpZClk
ZWZhdWx0Q2VudGVyOwoKCi0gKHZvaWQpYWRkT2JzZXJ2ZXI6KGlkKW9ic2VydmVyIHNlbGVjdG9y
OihTRUwpc2VsZWN0b3IgbmFtZTooTlNTdHJpbmcgKiluYW1lIG9iamVjdDooTlNTdHJpbmcgKilv
YmplY3Qgc3VzcGVuc2lvbkJlaGF2aW9yOihOU05vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlv
cilzdXNwZW5zaW9uQmVoYXZpb3I7CgoKLSAodm9pZClwb3N0Tm90aWZpY2F0aW9uTmFtZTooTlNT
dHJpbmcgKiluYW1lIG9iamVjdDooTlNTdHJpbmcgKilvYmplY3QgdXNlckluZm86KE5TRGljdGlv
bmFyeSAqKXVzZXJJbmZvIGRlbGl2ZXJJbW1lZGlhdGVseTooQk9PTClkZWxpdmVySW1tZWRpYXRl
bHk7CgoKCgoKZW51bSB7CiAgICBOU05vdGlmaWNhdGlvbkRlbGl2ZXJJbW1lZGlhdGVseSA9ICgx
VUwgPDwgMCksCiAgICBOU05vdGlmaWNhdGlvblBvc3RUb0FsbFNlc3Npb25zID0gKDFVTCA8PCAx
KQp9OwoKLSAodm9pZClwb3N0Tm90aWZpY2F0aW9uTmFtZTooTlNTdHJpbmcgKiluYW1lIG9iamVj
dDooTlNTdHJpbmcgKilvYmplY3QgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvIG9w
dGlvbnM6KE5TVUludGVnZXIpb3B0aW9uczsKCgoKLSAodm9pZClzZXRTdXNwZW5kZWQ6KEJPT0wp
c3VzcGVuZGVkOwoKCi0gKEJPT0wpc3VzcGVuZGVkOwoKCi0gKHZvaWQpYWRkT2JzZXJ2ZXI6KGlk
KW9ic2VydmVyIHNlbGVjdG9yOihTRUwpYVNlbGVjdG9yIG5hbWU6KE5TU3RyaW5nICopYU5hbWUg
b2JqZWN0OihOU1N0cmluZyAqKWFuT2JqZWN0OwoKLSAodm9pZClwb3N0Tm90aWZpY2F0aW9uTmFt
ZTooTlNTdHJpbmcgKilhTmFtZSBvYmplY3Q6KE5TU3RyaW5nICopYW5PYmplY3Q7Ci0gKHZvaWQp
cG9zdE5vdGlmaWNhdGlvbk5hbWU6KE5TU3RyaW5nICopYU5hbWUgb2JqZWN0OihOU1N0cmluZyAq
KWFuT2JqZWN0IHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKilhVXNlckluZm87Ci0gKHZvaWQpcmVt
b3ZlT2JzZXJ2ZXI6KGlkKW9ic2VydmVyIG5hbWU6KE5TU3RyaW5nICopYU5hbWUgb2JqZWN0OihO
U1N0cmluZyAqKWFuT2JqZWN0OwoKQGVuZAojIDk2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCgojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNQ
b3J0Q29kZXIuaCIgMSAzCgoKCgoKCkBjbGFzcyBOU0Nvbm5lY3Rpb24sIE5TUG9ydCwgTlNBcnJh
eTsKCkBpbnRlcmZhY2UgTlNQb3J0Q29kZXIgOiBOU0NvZGVyCgotIChCT09MKWlzQnljb3B5Owot
IChCT09MKWlzQnlyZWY7Ci0gKE5TQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb247Ci0gKHZvaWQpZW5j
b2RlUG9ydE9iamVjdDooTlNQb3J0ICopYXBvcnQ7Ci0gKE5TUG9ydCAqKWRlY29kZVBvcnRPYmpl
Y3Q7CgoKKyBwb3J0Q29kZXJXaXRoUmVjZWl2ZVBvcnQ6KE5TUG9ydCAqKXJjdlBvcnQgc2VuZFBv
cnQ6KE5TUG9ydCAqKXNuZFBvcnQgY29tcG9uZW50czooTlNBcnJheSAqKWNvbXBzOwotIChpZClp
bml0V2l0aFJlY2VpdmVQb3J0OihOU1BvcnQgKilyY3ZQb3J0IHNlbmRQb3J0OihOU1BvcnQgKilz
bmRQb3J0IGNvbXBvbmVudHM6KE5TQXJyYXkgKiljb21wczsKLSAodm9pZClkaXNwYXRjaDsKCkBl
bmQKCkBpbnRlcmZhY2UgTlNPYmplY3QgKE5TRGlzdHJpYnV0ZWRPYmplY3RzKQoKLSAoQ2xhc3Mp
Y2xhc3NGb3JQb3J0Q29kZXI7CgotIChpZClyZXBsYWNlbWVudE9iamVjdEZvclBvcnRDb2Rlcjoo
TlNQb3J0Q29kZXIgKiljb2RlcjsKCkBlbmQKIyA5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNQ
b3J0TWVzc2FnZS5oIiAxIDMKCgoKCgoKQGNsYXNzIE5TUG9ydCwgTlNEYXRlLCBOU0FycmF5LCBO
U011dGFibGVBcnJheTsKCkBpbnRlcmZhY2UgTlNQb3J0TWVzc2FnZSA6IE5TT2JqZWN0IHsKICAg
IEBwcml2YXRlCiAgICBOU1BvcnQgKmxvY2FsUG9ydDsKICAgIE5TUG9ydCAqcmVtb3RlUG9ydDsK
ICAgIE5TTXV0YWJsZUFycmF5ICpjb21wb25lbnRzOwogICAgdWludDMyX3QgbXNnaWQ7CiAgICB2
b2lkICpyZXNlcnZlZDI7CiAgICB2b2lkICpyZXNlcnZlZDsKfQoKLSAoaWQpaW5pdFdpdGhTZW5k
UG9ydDooTlNQb3J0ICopc2VuZFBvcnQgcmVjZWl2ZVBvcnQ6KE5TUG9ydCAqKXJlcGx5UG9ydCBj
b21wb25lbnRzOihOU0FycmF5ICopY29tcG9uZW50czsKCi0gKE5TQXJyYXkgKiljb21wb25lbnRz
OwotIChOU1BvcnQgKilyZWNlaXZlUG9ydDsKLSAoTlNQb3J0ICopc2VuZFBvcnQ7Ci0gKEJPT0wp
c2VuZEJlZm9yZURhdGU6KE5TRGF0ZSAqKWRhdGU7CgotICh1aW50MzJfdCltc2dpZDsKLSAodm9p
ZClzZXRNc2dpZDoodWludDMyX3QpbXNnaWQ7CgpAZW5kCiMgOTkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFk
ZXJzL05TUG9ydE5hbWVTZXJ2ZXIuaCIgMSAzCgoKCgoKCkBjbGFzcyBOU1N0cmluZywgTlNQb3J0
OwoKQGludGVyZmFjZSBOU1BvcnROYW1lU2VydmVyIDogTlNPYmplY3QKCisgKE5TUG9ydE5hbWVT
ZXJ2ZXIgKilzeXN0ZW1EZWZhdWx0UG9ydE5hbWVTZXJ2ZXI7CgotIChOU1BvcnQgKilwb3J0Rm9y
TmFtZTooTlNTdHJpbmcgKiluYW1lOwotIChOU1BvcnQgKilwb3J0Rm9yTmFtZTooTlNTdHJpbmcg
KiluYW1lIGhvc3Q6KE5TU3RyaW5nICopaG9zdDsKCi0gKEJPT0wpcmVnaXN0ZXJQb3J0OihOU1Bv
cnQgKilwb3J0IG5hbWU6KE5TU3RyaW5nICopbmFtZTsKCi0gKEJPT0wpcmVtb3ZlUG9ydEZvck5h
bWU6KE5TU3RyaW5nICopbmFtZTsKCkBlbmQKCgoKQGludGVyZmFjZSBOU01hY2hCb290c3RyYXBT
ZXJ2ZXIgOiBOU1BvcnROYW1lU2VydmVyCgoKCisgKGlkKXNoYXJlZEluc3RhbmNlOwoKLSAoTlNQ
b3J0ICopcG9ydEZvck5hbWU6KE5TU3RyaW5nICopbmFtZTsKLSAoTlNQb3J0ICopcG9ydEZvck5h
bWU6KE5TU3RyaW5nICopbmFtZSBob3N0OihOU1N0cmluZyAqKWhvc3Q7CgoKCi0gKEJPT0wpcmVn
aXN0ZXJQb3J0OihOU1BvcnQgKilwb3J0IG5hbWU6KE5TU3RyaW5nICopbmFtZTsKCgoKCgoKLSAo
TlNQb3J0ICopc2VydmljZVBvcnRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lIDsKCkBlbmQKCgoK
QGludGVyZmFjZSBOU01lc3NhZ2VQb3J0TmFtZVNlcnZlciA6IE5TUG9ydE5hbWVTZXJ2ZXIKCgoK
KyAoaWQpc2hhcmVkSW5zdGFuY2U7CgotIChOU1BvcnQgKilwb3J0Rm9yTmFtZTooTlNTdHJpbmcg
KiluYW1lOwotIChOU1BvcnQgKilwb3J0Rm9yTmFtZTooTlNTdHJpbmcgKiluYW1lIGhvc3Q6KE5T
U3RyaW5nICopaG9zdDsKIyA2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9OU1BvcnROYW1lU2VydmVyLmgiIDMKQGVuZAoKQGludGVyZmFj
ZSBOU1NvY2tldFBvcnROYW1lU2VydmVyIDogTlNQb3J0TmFtZVNlcnZlcgoKCgorIChpZClzaGFy
ZWRJbnN0YW5jZTsKCi0gKE5TUG9ydCAqKXBvcnRGb3JOYW1lOihOU1N0cmluZyAqKW5hbWU7Ci0g
KE5TUG9ydCAqKXBvcnRGb3JOYW1lOihOU1N0cmluZyAqKW5hbWUgaG9zdDooTlNTdHJpbmcgKilo
b3N0OwoKLSAoQk9PTClyZWdpc3RlclBvcnQ6KE5TUG9ydCAqKXBvcnQgbmFtZTooTlNTdHJpbmcg
KiluYW1lOwoKLSAoQk9PTClyZW1vdmVQb3J0Rm9yTmFtZTooTlNTdHJpbmcgKiluYW1lOwoKCgot
IChOU1BvcnQgKilwb3J0Rm9yTmFtZTooTlNTdHJpbmcgKiluYW1lIGhvc3Q6KE5TU3RyaW5nICop
aG9zdCBuYW1lU2VydmVyUG9ydE51bWJlcjoodWludDE2X3QpcG9ydE51bWJlcjsKLSAoQk9PTCly
ZWdpc3RlclBvcnQ6KE5TUG9ydCAqKXBvcnQgbmFtZTooTlNTdHJpbmcgKiluYW1lIG5hbWVTZXJ2
ZXJQb3J0TnVtYmVyOih1aW50MTZfdClwb3J0TnVtYmVyOwotICh2b2lkKXNldERlZmF1bHROYW1l
U2VydmVyUG9ydE51bWJlcjoodWludDE2X3QpcG9ydE51bWJlcjsKLSAodWludDE2X3QpZGVmYXVs
dE5hbWVTZXJ2ZXJQb3J0TnVtYmVyOwoKQGVuZAojIDEwMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
TlNQcm90b2NvbENoZWNrZXIuaCIgMSAzCgoKCgoKCgpAaW50ZXJmYWNlIE5TUHJvdG9jb2xDaGVj
a2VyIDogTlNQcm94eQoKLSAoUHJvdG9jb2wgKilwcm90b2NvbDsKLSAoTlNPYmplY3QgKil0YXJn
ZXQ7CgpAZW5kCgpAaW50ZXJmYWNlIE5TUHJvdG9jb2xDaGVja2VyIChOU1Byb3RvY29sQ2hlY2tl
ckNyZWF0aW9uKQoKKyAoaWQpcHJvdG9jb2xDaGVja2VyV2l0aFRhcmdldDooTlNPYmplY3QgKilh
bk9iamVjdCBwcm90b2NvbDooUHJvdG9jb2wgKilhUHJvdG9jb2w7Ci0gKGlkKWluaXRXaXRoVGFy
Z2V0OihOU09iamVjdCAqKWFuT2JqZWN0IHByb3RvY29sOihQcm90b2NvbCAqKWFQcm90b2NvbDsK
CkBlbmQKIyAxMDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVGFzay5oIiAxIDMKCgoKCgoKQGNs
YXNzIE5TU3RyaW5nLCBOU0FycmF5LCBOU0RpY3Rpb25hcnk7CgoKCmVudW0gewogICAgTlNUYXNr
VGVybWluYXRpb25SZWFzb25FeGl0ID0gMSwKICAgIE5TVGFza1Rlcm1pbmF0aW9uUmVhc29uVW5j
YXVnaHRTaWduYWwgPSAyCn07CgoKCnR5cGVkZWYgTlNJbnRlZ2VyIE5TVGFza1Rlcm1pbmF0aW9u
UmVhc29uOwoKQGludGVyZmFjZSBOU1Rhc2sgOiBOU09iamVjdAojIDI5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVGFzay5oIiAzCi0g
KGlkKWluaXQ7CgoKCi0gKHZvaWQpc2V0TGF1bmNoUGF0aDooTlNTdHJpbmcgKilwYXRoOwotICh2
b2lkKXNldEFyZ3VtZW50czooTlNBcnJheSAqKWFyZ3VtZW50czsKLSAodm9pZClzZXRFbnZpcm9u
bWVudDooTlNEaWN0aW9uYXJ5ICopZGljdDsKCi0gKHZvaWQpc2V0Q3VycmVudERpcmVjdG9yeVBh
dGg6KE5TU3RyaW5nICopcGF0aDsKCgoKLSAodm9pZClzZXRTdGFuZGFyZElucHV0OihpZClpbnB1
dDsKLSAodm9pZClzZXRTdGFuZGFyZE91dHB1dDooaWQpb3V0cHV0OwotICh2b2lkKXNldFN0YW5k
YXJkRXJyb3I6KGlkKWVycm9yOwoKCi0gKE5TU3RyaW5nICopbGF1bmNoUGF0aDsKLSAoTlNBcnJh
eSAqKWFyZ3VtZW50czsKLSAoTlNEaWN0aW9uYXJ5ICopZW52aXJvbm1lbnQ7Ci0gKE5TU3RyaW5n
ICopY3VycmVudERpcmVjdG9yeVBhdGg7CgoKLSAoaWQpc3RhbmRhcmRJbnB1dDsKLSAoaWQpc3Rh
bmRhcmRPdXRwdXQ7Ci0gKGlkKXN0YW5kYXJkRXJyb3I7CgoKLSAodm9pZClsYXVuY2g7CgotICh2
b2lkKWludGVycnVwdDsKLSAodm9pZCl0ZXJtaW5hdGU7CgotIChCT09MKXN1c3BlbmQ7Ci0gKEJP
T0wpcmVzdW1lOwoKCi0gKGludClwcm9jZXNzSWRlbnRpZmllcjsKLSAoQk9PTClpc1J1bm5pbmc7
CgotIChpbnQpdGVybWluYXRpb25TdGF0dXM7Ci0gKE5TVGFza1Rlcm1pbmF0aW9uUmVhc29uKXRl
cm1pbmF0aW9uUmVhc29uIDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNUYXNrIChOU1Rhc2tDb252ZW5p
ZW5jZXMpCgorIChOU1Rhc2sgKilsYXVuY2hlZFRhc2tXaXRoTGF1bmNoUGF0aDooTlNTdHJpbmcg
KilwYXRoIGFyZ3VtZW50czooTlNBcnJheSAqKWFyZ3VtZW50czsKCgotICh2b2lkKXdhaXRVbnRp
bEV4aXQ7CgoKQGVuZAoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVGFza0RpZFRlcm1p
bmF0ZU5vdGlmaWNhdGlvbjsKIyAxMDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TWE1MRFRELmgi
IDEgMwoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL05TWE1MTm9kZS5oIiAxIDMKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNYTUxOb2RlT3B0aW9ucy5o
IiAxIDMKIyAzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9OU1hNTE5vZGVPcHRpb25zLmgiIDMKZW51bSB7CiAgICBOU1hNTE5vZGVPcHRp
b25zTm9uZSA9IDAsCgoKICAgIE5TWE1MTm9kZUlzQ0RBVEEgPSAxVUwgPDwgMCwKICAgIE5TWE1M
Tm9kZUV4cGFuZEVtcHR5RWxlbWVudCA9IDFVTCA8PCAxLAogICAgTlNYTUxOb2RlQ29tcGFjdEVt
cHR5RWxlbWVudCA9IDFVTCA8PCAyLAogICAgTlNYTUxOb2RlVXNlU2luZ2xlUXVvdGVzID0gMVVM
IDw8IDMsCiAgICBOU1hNTE5vZGVVc2VEb3VibGVRdW90ZXMgPSAxVUwgPDwgNCwKCgogICAgTlNY
TUxEb2N1bWVudFRpZHlIVE1MID0gMVVMIDw8IDksCiAgICBOU1hNTERvY3VtZW50VGlkeVhNTCA9
IDFVTCA8PCAxMCwKCgogICAgTlNYTUxEb2N1bWVudFZhbGlkYXRlID0gMVVMIDw8IDEzLAoKCiAg
ICBOU1hNTERvY3VtZW50WEluY2x1ZGUgPSAxVUwgPDwgMTYsCgoKICAgIE5TWE1MTm9kZVByZXR0
eVByaW50ID0gMVVMIDw8IDE3LAogICAgTlNYTUxEb2N1bWVudEluY2x1ZGVDb250ZW50VHlwZURl
Y2xhcmF0aW9uID0gMVVMIDw8IDE4LAoKCiAgICBOU1hNTE5vZGVQcmVzZXJ2ZU5hbWVzcGFjZU9y
ZGVyID0gMVVMIDw8IDIwLAogICAgTlNYTUxOb2RlUHJlc2VydmVBdHRyaWJ1dGVPcmRlciA9IDFV
TCA8PCAyMSwKICAgIE5TWE1MTm9kZVByZXNlcnZlRW50aXRpZXMgPSAxVUwgPDwgMjIsCiAgICBO
U1hNTE5vZGVQcmVzZXJ2ZVByZWZpeGVzID0gMVVMIDw8IDIzLAogICAgTlNYTUxOb2RlUHJlc2Vy
dmVDREFUQSA9IDFVTCA8PCAyNCwKICAgIE5TWE1MTm9kZVByZXNlcnZlV2hpdGVzcGFjZSA9IDFV
TCA8PCAyNSwKICAgIE5TWE1MTm9kZVByZXNlcnZlRFREID0gMVVMIDw8IDI2LAogICAgTlNYTUxO
b2RlUHJlc2VydmVDaGFyYWN0ZXJSZWZlcmVuY2VzID0gMVVMIDw8IDI3LAogICAgTlNYTUxOb2Rl
UHJlc2VydmVFbXB0eUVsZW1lbnRzID0KICAgICAgICAgICAgKE5TWE1MTm9kZUV4cGFuZEVtcHR5
RWxlbWVudCB8IE5TWE1MTm9kZUNvbXBhY3RFbXB0eUVsZW1lbnQpLAogICAgTlNYTUxOb2RlUHJl
c2VydmVRdW90ZXMgPQogICAgICAgICAgICAoTlNYTUxOb2RlVXNlU2luZ2xlUXVvdGVzIHwgTlNY
TUxOb2RlVXNlRG91YmxlUXVvdGVzKSwKICAgIE5TWE1MTm9kZVByZXNlcnZlQWxsID0gKAogICAg
ICAgICAgICBOU1hNTE5vZGVQcmVzZXJ2ZU5hbWVzcGFjZU9yZGVyIHwKICAgICAgICAgICAgTlNY
TUxOb2RlUHJlc2VydmVBdHRyaWJ1dGVPcmRlciB8CiAgICAgICAgICAgIE5TWE1MTm9kZVByZXNl
cnZlRW50aXRpZXMgfAogICAgICAgICAgICBOU1hNTE5vZGVQcmVzZXJ2ZVByZWZpeGVzIHwKICAg
ICAgICAgICAgTlNYTUxOb2RlUHJlc2VydmVDREFUQSB8CiAgICAgICAgICAgIE5TWE1MTm9kZVBy
ZXNlcnZlRW1wdHlFbGVtZW50cyB8CiAgICAgICAgICAgIE5TWE1MTm9kZVByZXNlcnZlUXVvdGVz
IHwKICAgICAgICAgICAgTlNYTUxOb2RlUHJlc2VydmVXaGl0ZXNwYWNlIHwKICAgICAgICAgICAg
TlNYTUxOb2RlUHJlc2VydmVEVEQgfAogICAgICAgICAgICBOU1hNTE5vZGVQcmVzZXJ2ZUNoYXJh
Y3RlclJlZmVyZW5jZXMgfAogICAgICAgICAgICAweEZGRjAwMDAwKQp9OwojIDcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNYTUxOb2Rl
LmgiIDIgMwoKCgpAY2xhc3MgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBOU0Vycm9yLCBOU1N0cmlu
ZywgTlNVUkw7CkBjbGFzcyBOU1hNTEVsZW1lbnQsIE5TWE1MRG9jdW1lbnQ7CgoKCgplbnVtIHsK
IE5TWE1MSW52YWxpZEtpbmQgPSAwLAogTlNYTUxEb2N1bWVudEtpbmQsCiBOU1hNTEVsZW1lbnRL
aW5kLAogTlNYTUxBdHRyaWJ1dGVLaW5kLAogTlNYTUxOYW1lc3BhY2VLaW5kLAogTlNYTUxQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25LaW5kLAogTlNYTUxDb21tZW50S2luZCwKIE5TWE1MVGV4dEtpbmQs
CiBOU1hNTERUREtpbmQsCiBOU1hNTEVudGl0eURlY2xhcmF0aW9uS2luZCwKIE5TWE1MQXR0cmli
dXRlRGVjbGFyYXRpb25LaW5kLAogTlNYTUxFbGVtZW50RGVjbGFyYXRpb25LaW5kLAogTlNYTUxO
b3RhdGlvbkRlY2xhcmF0aW9uS2luZAp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNYTUxOb2RlS2lu
ZDsKIyA1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9OU1hNTE5vZGUuaCIgMwpAaW50ZXJmYWNlIE5TWE1MTm9kZSA6IE5TT2JqZWN0IDxO
U0NvcHlpbmc+IHsKQHByb3RlY3RlZAogTlNYTUxOb2RlS2luZCBfa2luZDsKIE5TWE1MTm9kZSAq
X3BhcmVudDsKIE5TVUludGVnZXIgX2luZGV4OwogaWQgX29iamVjdFZhbHVlOwp9CgoKCgoKLSAo
aWQpaW5pdFdpdGhLaW5kOihOU1hNTE5vZGVLaW5kKWtpbmQ7CgoKCgoKLSAoaWQpaW5pdFdpdGhL
aW5kOihOU1hNTE5vZGVLaW5kKWtpbmQgb3B0aW9uczooTlNVSW50ZWdlcilvcHRpb25zOwoKCgoK
CisgKGlkKWRvY3VtZW50OwoKCgoKCgorIChpZClkb2N1bWVudFdpdGhSb290RWxlbWVudDooTlNY
TUxFbGVtZW50ICopZWxlbWVudDsKCgoKCgorIChpZCllbGVtZW50V2l0aE5hbWU6KE5TU3RyaW5n
ICopbmFtZTsKCgoKCgorIChpZCllbGVtZW50V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZSBVUkk6
KE5TU3RyaW5nICopVVJJOwoKCgoKCisgKGlkKWVsZW1lbnRXaXRoTmFtZTooTlNTdHJpbmcgKilu
YW1lIHN0cmluZ1ZhbHVlOihOU1N0cmluZyAqKXN0cmluZzsKCgoKCgorIChpZCllbGVtZW50V2l0
aE5hbWU6KE5TU3RyaW5nICopbmFtZSBjaGlsZHJlbjooTlNBcnJheSAqKWNoaWxkcmVuIGF0dHJp
YnV0ZXM6KE5TQXJyYXkgKilhdHRyaWJ1dGVzOwoKCgoKCisgKGlkKWF0dHJpYnV0ZVdpdGhOYW1l
OihOU1N0cmluZyAqKW5hbWUgc3RyaW5nVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nVmFsdWU7CgoK
CgoKKyAoaWQpYXR0cmlidXRlV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZSBVUkk6KE5TU3RyaW5n
ICopVVJJIHN0cmluZ1ZhbHVlOihOU1N0cmluZyAqKXN0cmluZ1ZhbHVlOwoKCgoKCisgKGlkKW5h
bWVzcGFjZVdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUgc3RyaW5nVmFsdWU6KE5TU3RyaW5nICop
c3RyaW5nVmFsdWU7CgoKCgoKKyAoaWQpcHJvY2Vzc2luZ0luc3RydWN0aW9uV2l0aE5hbWU6KE5T
U3RyaW5nICopbmFtZSBzdHJpbmdWYWx1ZTooTlNTdHJpbmcgKilzdHJpbmdWYWx1ZTsKCgoKCgor
IChpZCljb21tZW50V2l0aFN0cmluZ1ZhbHVlOihOU1N0cmluZyAqKXN0cmluZ1ZhbHVlOwoKCgoK
CisgKGlkKXRleHRXaXRoU3RyaW5nVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nVmFsdWU7CgoKCgoK
KyAoaWQpRFRETm9kZVdpdGhYTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nOwojIDE2MSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1hN
TE5vZGUuaCIgMwotIChOU1hNTE5vZGVLaW5kKWtpbmQ7CgoKCgoKLSAodm9pZClzZXROYW1lOihO
U1N0cmluZyAqKW5hbWU7CgoKCgoKLSAoTlNTdHJpbmcgKiluYW1lOwoKCgoKCi0gKHZvaWQpc2V0
T2JqZWN0VmFsdWU6KGlkKXZhbHVlOwoKCgoKCi0gKGlkKW9iamVjdFZhbHVlOwoKCgoKCi0gKHZv
aWQpc2V0U3RyaW5nVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nOwoKCgoKCi0gKHZvaWQpc2V0U3Ry
aW5nVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nIHJlc29sdmluZ0VudGl0aWVzOihCT09MKXJlc29s
dmU7CgoKCgoKLSAoTlNTdHJpbmcgKilzdHJpbmdWYWx1ZTsKIyAyMTMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNYTUxOb2RlLmgiIDMK
LSAoTlNVSW50ZWdlcilpbmRleDsKCgoKCgotIChOU1VJbnRlZ2VyKWxldmVsOwoKCgoKCi0gKE5T
WE1MRG9jdW1lbnQgKilyb290RG9jdW1lbnQ7CgoKCgoKLSAoTlNYTUxOb2RlICopcGFyZW50OwoK
CgoKCi0gKE5TVUludGVnZXIpY2hpbGRDb3VudDsKCgoKCgotIChOU0FycmF5ICopY2hpbGRyZW47
CgoKCgoKLSAoTlNYTUxOb2RlICopY2hpbGRBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OwoKCgoK
Ci0gKE5TWE1MTm9kZSAqKXByZXZpb3VzU2libGluZzsKCgoKCgotIChOU1hNTE5vZGUgKiluZXh0
U2libGluZzsKCgoKCgotIChOU1hNTE5vZGUgKilwcmV2aW91c05vZGU7CgoKCgoKLSAoTlNYTUxO
b2RlICopbmV4dE5vZGU7CgoKCgoKLSAodm9pZClkZXRhY2g7CgoKCgoKLSAoTlNTdHJpbmcgKilY
UGF0aDsKIyAyOTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvTlNYTUxOb2RlLmgiIDMKLSAoTlNTdHJpbmcgKilsb2NhbE5hbWU7CgoKCgoK
LSAoTlNTdHJpbmcgKilwcmVmaXg7CgoKCgoKLSAodm9pZClzZXRVUkk6KE5TU3RyaW5nICopVVJJ
OwoKCgoKCi0gKE5TU3RyaW5nICopVVJJOwoKCgoKCisgKE5TU3RyaW5nICopbG9jYWxOYW1lRm9y
TmFtZTooTlNTdHJpbmcgKiluYW1lOwoKCgoKCisgKE5TU3RyaW5nICopcHJlZml4Rm9yTmFtZToo
TlNTdHJpbmcgKiluYW1lOwoKCgoKCgorIChOU1hNTE5vZGUgKilwcmVkZWZpbmVkTmFtZXNwYWNl
Rm9yUHJlZml4OihOU1N0cmluZyAqKW5hbWU7CiMgMzQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TWE1MTm9kZS5oIiAzCi0gKE5TU3Ry
aW5nICopZGVzY3JpcHRpb247CgoKCgoKLSAoTlNTdHJpbmcgKilYTUxTdHJpbmc7CgoKCgoKLSAo
TlNTdHJpbmcgKilYTUxTdHJpbmdXaXRoT3B0aW9uczooTlNVSW50ZWdlcilvcHRpb25zOwoKCgoK
Ci0gKE5TU3RyaW5nICopY2Fub25pY2FsWE1MU3RyaW5nUHJlc2VydmluZ0NvbW1lbnRzOihCT09M
KWNvbW1lbnRzOwojIDM3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9OU1hNTE5vZGUuaCIgMwotIChOU0FycmF5ICopbm9kZXNGb3JYUGF0
aDooTlNTdHJpbmcgKil4cGF0aCBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKCgoKCgoKLSAoTlNB
cnJheSAqKW9iamVjdHNGb3JYUXVlcnk6KE5TU3RyaW5nICopeHF1ZXJ5IGNvbnN0YW50czooTlNE
aWN0aW9uYXJ5ICopY29uc3RhbnRzIGVycm9yOihOU0Vycm9yICoqKWVycm9yOwoKLSAoTlNBcnJh
eSAqKW9iamVjdHNGb3JYUXVlcnk6KE5TU3RyaW5nICopeHF1ZXJ5IGVycm9yOihOU0Vycm9yICoq
KWVycm9yOwpAZW5kCiMgNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9OU1hNTERURC5oIiAyIDMKCgoKQGNsYXNzIE5TRGF0YSwgTlNNdXRh
YmxlRGljdGlvbmFyeTsKQGNsYXNzIE5TWE1MRFRETm9kZTsKCgoKCgpAaW50ZXJmYWNlIE5TWE1M
RFREIDogTlNYTUxOb2RlIHsKQHByaXZhdGUKIE5TU3RyaW5nICpfbmFtZTsKIE5TU3RyaW5nICpf
cHVibGljSUQ7CiBOU1N0cmluZyAqX3N5c3RlbUlEOwogTlNBcnJheSAqX2NoaWxkcmVuOwogQk9P
TCBfY2hpbGRyZW5IYXZlTXV0YXRlZDsKIHVpbnQ4X3QgX3BhZGRpbmczWzNdOwogTlNNdXRhYmxl
RGljdGlvbmFyeSAqX2VudGl0aWVzOwogTlNNdXRhYmxlRGljdGlvbmFyeSAqX2VsZW1lbnRzOwog
TlNNdXRhYmxlRGljdGlvbmFyeSAqX25vdGF0aW9uczsKIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9h
dHRyaWJ1dGVzOwogTlNTdHJpbmcgKl9vcmlnaW5hbDsKIEJPT0wgX21vZGlmaWVkOwogdWludDhf
dCBfcGFkZGluZzJbM107Cn0KCgoKCgotIChpZClpbml0V2l0aENvbnRlbnRzT2ZVUkw6KE5TVVJM
ICopdXJsIG9wdGlvbnM6KE5TVUludGVnZXIpbWFzayBlcnJvcjooTlNFcnJvciAqKillcnJvcjsK
LSAoaWQpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIG9wdGlvbnM6KE5TVUludGVnZXIpbWFz
ayBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKCgoKCgotICh2b2lkKXNldFB1YmxpY0lEOihOU1N0
cmluZyAqKXB1YmxpY0lEOwoKCgoKCi0gKE5TU3RyaW5nICopcHVibGljSUQ7CgoKCgoKLSAodm9p
ZClzZXRTeXN0ZW1JRDooTlNTdHJpbmcgKilzeXN0ZW1JRDsKCgoKCgotIChOU1N0cmluZyAqKXN5
c3RlbUlEOwojIDcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL05TWE1MRFRELmgiIDMKLSAodm9pZClpbnNlcnRDaGlsZDooTlNYTUxOb2Rl
ICopY2hpbGQgYXRJbmRleDooTlNVSW50ZWdlcilpbmRleDsKCgoKCgotICh2b2lkKWluc2VydENo
aWxkcmVuOihOU0FycmF5ICopY2hpbGRyZW4gYXRJbmRleDooTlNVSW50ZWdlcilpbmRleDsKCgoK
CgotICh2b2lkKXJlbW92ZUNoaWxkQXRJbmRleDooTlNVSW50ZWdlcilpbmRleDsKCgoKCgotICh2
b2lkKXNldENoaWxkcmVuOihOU0FycmF5ICopY2hpbGRyZW47CgoKCgoKLSAodm9pZClhZGRDaGls
ZDooTlNYTUxOb2RlICopY2hpbGQ7CgoKCgoKLSAodm9pZClyZXBsYWNlQ2hpbGRBdEluZGV4OihO
U1VJbnRlZ2VyKWluZGV4IHdpdGhOb2RlOihOU1hNTE5vZGUgKilub2RlOwojIDExMiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1hNTERU
RC5oIiAzCi0gKE5TWE1MRFRETm9kZSAqKWVudGl0eURlY2xhcmF0aW9uRm9yTmFtZTooTlNTdHJp
bmcgKiluYW1lOwoKCgoKCi0gKE5TWE1MRFRETm9kZSAqKW5vdGF0aW9uRGVjbGFyYXRpb25Gb3JO
YW1lOihOU1N0cmluZyAqKW5hbWU7CgoKCgoKLSAoTlNYTUxEVEROb2RlICopZWxlbWVudERlY2xh
cmF0aW9uRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lOwoKCgoKCi0gKE5TWE1MRFRETm9kZSAqKWF0
dHJpYnV0ZURlY2xhcmF0aW9uRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lIGVsZW1lbnROYW1lOihO
U1N0cmluZyAqKWVsZW1lbnROYW1lOwoKCgoKCgoKKyAoTlNYTUxEVEROb2RlICopcHJlZGVmaW5l
ZEVudGl0eURlY2xhcmF0aW9uRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lOwpAZW5kCiMgMTAzICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0Zv
dW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9OU1hNTERURE5vZGUuaCIgMSAzCiMgMTMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNYTUxEVEROb2Rl
LmgiIDMKZW51bSB7CiBOU1hNTEVudGl0eUdlbmVyYWxLaW5kID0gMSwKIE5TWE1MRW50aXR5UGFy
c2VkS2luZCwKIE5TWE1MRW50aXR5VW5wYXJzZWRLaW5kLAogTlNYTUxFbnRpdHlQYXJhbWV0ZXJL
aW5kLAogTlNYTUxFbnRpdHlQcmVkZWZpbmVkLAoKIE5TWE1MQXR0cmlidXRlQ0RBVEFLaW5kLAog
TlNYTUxBdHRyaWJ1dGVJREtpbmQsCiBOU1hNTEF0dHJpYnV0ZUlEUmVmS2luZCwKIE5TWE1MQXR0
cmlidXRlSURSZWZzS2luZCwKIE5TWE1MQXR0cmlidXRlRW50aXR5S2luZCwKIE5TWE1MQXR0cmli
dXRlRW50aXRpZXNLaW5kLAogTlNYTUxBdHRyaWJ1dGVOTVRva2VuS2luZCwKIE5TWE1MQXR0cmli
dXRlTk1Ub2tlbnNLaW5kLAogTlNYTUxBdHRyaWJ1dGVFbnVtZXJhdGlvbktpbmQsCiBOU1hNTEF0
dHJpYnV0ZU5vdGF0aW9uS2luZCwKCiBOU1hNTEVsZW1lbnREZWNsYXJhdGlvblVuZGVmaW5lZEtp
bmQsCiBOU1hNTEVsZW1lbnREZWNsYXJhdGlvbkVtcHR5S2luZCwKIE5TWE1MRWxlbWVudERlY2xh
cmF0aW9uQW55S2luZCwKIE5TWE1MRWxlbWVudERlY2xhcmF0aW9uTWl4ZWRLaW5kLAogTlNYTUxF
bGVtZW50RGVjbGFyYXRpb25FbGVtZW50S2luZAp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNYTUxE
VEROb2RlS2luZDsKIyA0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9OU1hNTERURE5vZGUuaCIgMwpAaW50ZXJmYWNlIE5TWE1MRFRETm9k
ZSA6IE5TWE1MTm9kZSB7CkBwcm90ZWN0ZWQKIE5TWE1MRFRETm9kZUtpbmQgX0RUREtpbmQ7CiBO
U1N0cmluZyAqX25hbWU7CiBOU1N0cmluZyAqX25vdGF0aW9uTmFtZTsKIE5TU3RyaW5nICpfcHVi
bGljSUQ7CiBOU1N0cmluZyAqX3N5c3RlbUlEOwp9CgoKCgoKLSAoaWQpaW5pdFdpdGhYTUxTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nOwoKCgoKCi0gKHZvaWQpc2V0RFRES2luZDooTlNYTUxEVERO
b2RlS2luZClraW5kOwoKCgoKCi0gKE5TWE1MRFRETm9kZUtpbmQpRFRES2luZDsKCgoKCgotIChC
T09MKWlzRXh0ZXJuYWw7CgoKCgoKLSAodm9pZClzZXRQdWJsaWNJRDooTlNTdHJpbmcgKilwdWJs
aWNJRDsKCgoKCgotIChOU1N0cmluZyAqKXB1YmxpY0lEOwoKCgoKCi0gKHZvaWQpc2V0U3lzdGVt
SUQ6KE5TU3RyaW5nICopc3lzdGVtSUQ7CgoKCgoKLSAoTlNTdHJpbmcgKilzeXN0ZW1JRDsKCgoK
CgotICh2b2lkKXNldE5vdGF0aW9uTmFtZTooTlNTdHJpbmcgKilub3RhdGlvbk5hbWU7CgoKCgoK
LSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWU7CgpAZW5kCiMgMTA0ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAz
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9OU1hNTERvY3VtZW50LmgiIDEgMwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNYTUxEb2N1bWVudC5oIiAzCkBjbGFzcyBO
U0RhdGEsIE5TWE1MRFRELCBOU1hNTERvY3VtZW50LCBOU0RpY3Rpb25hcnksIE5TQXJyYXk7CiMg
NDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvTlNYTUxEb2N1bWVudC5oIiAzCmVudW0gewogTlNYTUxEb2N1bWVudFhNTEtpbmQgPSAwLAog
TlNYTUxEb2N1bWVudFhIVE1MS2luZCwKIE5TWE1MRG9jdW1lbnRIVE1MS2luZCwKIE5TWE1MRG9j
dW1lbnRUZXh0S2luZAp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNYTUxEb2N1bWVudENvbnRlbnRL
aW5kOwoKCgoKCgpAaW50ZXJmYWNlIE5TWE1MRG9jdW1lbnQgOiBOU1hNTE5vZGUgewpAcHJvdGVj
dGVkCiBOU1N0cmluZyAqX2VuY29kaW5nOwogTlNTdHJpbmcgKl92ZXJzaW9uOwogTlNYTUxEVEQg
Kl9kb2NUeXBlOwogTlNBcnJheSAqX2NoaWxkcmVuOwogQk9PTCBfY2hpbGRyZW5IYXZlTXV0YXRl
ZDsKIEJPT0wgX3N0YW5kYWxvbmU7CiB1aW50OF90IF9wYWRkaW5nM1syXTsKIE5TWE1MRWxlbWVu
dCAqX3Jvb3RFbGVtZW50OwogTlNTdHJpbmcgKl9VUkk7CiBOU1N0cmluZyAqX01JTUVUeXBlOwog
TlNVSW50ZWdlciBfZmlkZWxpdHlNYXNrOwogTlNYTUxEb2N1bWVudENvbnRlbnRLaW5kIF9jb250
ZW50S2luZDsKfQoKCgoKCi0gKGlkKWluaXRXaXRoWE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmlu
ZyBvcHRpb25zOihOU1VJbnRlZ2VyKW1hc2sgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CgoKCgoK
LSAoaWQpaW5pdFdpdGhDb250ZW50c09mVVJMOihOU1VSTCAqKXVybCBvcHRpb25zOihOU1VJbnRl
Z2VyKW1hc2sgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CgoKCgoKLSAoaWQpaW5pdFdpdGhEYXRh
OihOU0RhdGEgKilkYXRhIG9wdGlvbnM6KE5TVUludGVnZXIpbWFzayBlcnJvcjooTlNFcnJvciAq
KillcnJvcjsKCgoKCgotIChpZClpbml0V2l0aFJvb3RFbGVtZW50OihOU1hNTEVsZW1lbnQgKill
bGVtZW50OwoKCgoKCisgKENsYXNzKXJlcGxhY2VtZW50Q2xhc3NGb3JDbGFzczooQ2xhc3MpY2xz
OwoKCgoKCi0gKHZvaWQpc2V0Q2hhcmFjdGVyRW5jb2Rpbmc6KE5TU3RyaW5nICopZW5jb2Rpbmc7
CgoKCgoKLSAoTlNTdHJpbmcgKiljaGFyYWN0ZXJFbmNvZGluZzsKCgoKCgotICh2b2lkKXNldFZl
cnNpb246KE5TU3RyaW5nICopdmVyc2lvbjsKCgoKCgotIChOU1N0cmluZyAqKXZlcnNpb247CgoK
CgoKLSAodm9pZClzZXRTdGFuZGFsb25lOihCT09MKXN0YW5kYWxvbmU7CgoKCgoKLSAoQk9PTClp
c1N0YW5kYWxvbmU7CgoKCgoKLSAodm9pZClzZXREb2N1bWVudENvbnRlbnRLaW5kOihOU1hNTERv
Y3VtZW50Q29udGVudEtpbmQpa2luZDsKCgoKCgotIChOU1hNTERvY3VtZW50Q29udGVudEtpbmQp
ZG9jdW1lbnRDb250ZW50S2luZDsKCgoKCgotICh2b2lkKXNldE1JTUVUeXBlOihOU1N0cmluZyAq
KU1JTUVUeXBlOwoKCgoKCi0gKE5TU3RyaW5nICopTUlNRVR5cGU7CgoKCgoKLSAodm9pZClzZXRE
VEQ6KE5TWE1MRFREICopZG9jdW1lbnRUeXBlRGVjbGFyYXRpb247CgoKCgoKLSAoTlNYTUxEVEQg
KilEVEQ7CgoKCgoKLSAodm9pZClzZXRSb290RWxlbWVudDooTlNYTUxOb2RlICopcm9vdDsKCgoK
CgotIChOU1hNTEVsZW1lbnQgKilyb290RWxlbWVudDsKIyAxOTEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNYTUxEb2N1bWVudC5oIiAz
Ci0gKHZvaWQpaW5zZXJ0Q2hpbGQ6KE5TWE1MTm9kZSAqKWNoaWxkIGF0SW5kZXg6KE5TVUludGVn
ZXIpaW5kZXg7CgoKCgoKLSAodm9pZClpbnNlcnRDaGlsZHJlbjooTlNBcnJheSAqKWNoaWxkcmVu
IGF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7CgoKCgoKLSAodm9pZClyZW1vdmVDaGlsZEF0SW5k
ZXg6KE5TVUludGVnZXIpaW5kZXg7CgoKCgoKLSAodm9pZClzZXRDaGlsZHJlbjooTlNBcnJheSAq
KWNoaWxkcmVuOwoKCgoKCi0gKHZvaWQpYWRkQ2hpbGQ6KE5TWE1MTm9kZSAqKWNoaWxkOwoKCgoK
Ci0gKHZvaWQpcmVwbGFjZUNoaWxkQXRJbmRleDooTlNVSW50ZWdlcilpbmRleCB3aXRoTm9kZToo
TlNYTUxOb2RlICopbm9kZTsKIyAyMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNYTUxEb2N1bWVudC5oIiAzCi0gKE5TRGF0YSAqKVhN
TERhdGE7CgoKCgoKLSAoTlNEYXRhICopWE1MRGF0YVdpdGhPcHRpb25zOihOU1VJbnRlZ2VyKW9w
dGlvbnM7CiMgMjQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL05TWE1MRG9jdW1lbnQuaCIgMwotIChpZClvYmplY3RCeUFwcGx5aW5nWFNM
VDooTlNEYXRhICopeHNsdCBhcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJv
cjooTlNFcnJvciAqKillcnJvcjsKCgoKCgotIChpZClvYmplY3RCeUFwcGx5aW5nWFNMVFN0cmlu
ZzooTlNTdHJpbmcgKil4c2x0IGFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGVy
cm9yOihOU0Vycm9yICoqKWVycm9yOwoKCgoKCi0gKGlkKW9iamVjdEJ5QXBwbHlpbmdYU0xUQXRV
Ukw6KE5TVVJMICopeHNsdFVSTCBhcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50IGVy
cm9yOihOU0Vycm9yICoqKWVycm9yOwoKCgoKCi0gKEJPT0wpdmFsaWRhdGVBbmRSZXR1cm5FcnJv
cjooTlNFcnJvciAqKillcnJvcjsKCkBlbmQKIyAxMDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05T
WE1MRWxlbWVudC5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TWE1MRWxlbWVudC5oIiAzCkBjbGFzcyBOU0RpY3Rpb25h
cnksIE5TTXV0YWJsZUFycmF5LCBOU0VudW1lcmF0b3I7CgoKCgoKCkBpbnRlcmZhY2UgTlNYTUxF
bGVtZW50IDogTlNYTUxOb2RlIHsKQHByb3RlY3RlZAogTlNTdHJpbmcgKl9uYW1lOwogTlNNdXRh
YmxlQXJyYXkgKl9hdHRyaWJ1dGVzOwogTlNNdXRhYmxlQXJyYXkgKl9uYW1lc3BhY2VzOwogTlNB
cnJheSAqX2NoaWxkcmVuOwogQk9PTCBfY2hpbGRyZW5IYXZlTXV0YXRlZDsKIHVpbnQ4X3QgX3Bh
ZGRpbmczWzNdOwogTlNTdHJpbmcgKl9VUkk7CiBOU0ludGVnZXIgX3ByZWZpeEluZGV4Owp9CgoK
CgoKLSAoaWQpaW5pdFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWU7CgoKCgoKLSAoaWQpaW5pdFdp
dGhOYW1lOihOU1N0cmluZyAqKW5hbWUgVVJJOihOU1N0cmluZyAqKVVSSTsKCgoKCgotIChpZClp
bml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZSBzdHJpbmdWYWx1ZTooTlNTdHJpbmcgKilzdHJp
bmc7CgoKCgoKLSAoaWQpaW5pdFdpdGhYTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGVycm9y
OihOU0Vycm9yICoqKWVycm9yOwojIDYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TWE1MRWxlbWVudC5oIiAzCi0gKE5TQXJyYXkgKill
bGVtZW50c0Zvck5hbWU6KE5TU3RyaW5nICopbmFtZTsKCgoKCgotIChOU0FycmF5ICopZWxlbWVu
dHNGb3JMb2NhbE5hbWU6KE5TU3RyaW5nICopbG9jYWxOYW1lIFVSSTooTlNTdHJpbmcgKilVUkk7
CiMgNzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvTlNYTUxFbGVtZW50LmgiIDMKLSAodm9pZClhZGRBdHRyaWJ1dGU6KE5TWE1MTm9kZSAq
KWF0dHJpYnV0ZTsKCgoKCgotICh2b2lkKXJlbW92ZUF0dHJpYnV0ZUZvck5hbWU6KE5TU3RyaW5n
ICopbmFtZTsKCgoKCgotICh2b2lkKXNldEF0dHJpYnV0ZXM6KE5TQXJyYXkgKilhdHRyaWJ1dGVz
OwoKCgoKCi0gKHZvaWQpc2V0QXR0cmlidXRlc0FzRGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5ICop
YXR0cmlidXRlczsKCgoKCgotIChOU0FycmF5ICopYXR0cmlidXRlczsKCgoKCgotIChOU1hNTE5v
ZGUgKilhdHRyaWJ1dGVGb3JOYW1lOihOU1N0cmluZyAqKW5hbWU7CgoKCgoKLSAoTlNYTUxOb2Rl
ICopYXR0cmlidXRlRm9yTG9jYWxOYW1lOihOU1N0cmluZyAqKWxvY2FsTmFtZSBVUkk6KE5TU3Ry
aW5nICopVVJJOwojIDEyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9OU1hNTEVsZW1lbnQuaCIgMwotICh2b2lkKWFkZE5hbWVzcGFjZToo
TlNYTUxOb2RlICopYU5hbWVzcGFjZTsKCgoKCgotICh2b2lkKXJlbW92ZU5hbWVzcGFjZUZvclBy
ZWZpeDooTlNTdHJpbmcgKiluYW1lOwoKCgoKCi0gKHZvaWQpc2V0TmFtZXNwYWNlczooTlNBcnJh
eSAqKW5hbWVzcGFjZXM7CgoKCgoKLSAoTlNBcnJheSAqKW5hbWVzcGFjZXM7CgoKCgoKLSAoTlNY
TUxOb2RlICopbmFtZXNwYWNlRm9yUHJlZml4OihOU1N0cmluZyAqKW5hbWU7CgoKCgoKLSAoTlNY
TUxOb2RlICopcmVzb2x2ZU5hbWVzcGFjZUZvck5hbWU6KE5TU3RyaW5nICopbmFtZTsKCgoKCgot
IChOU1N0cmluZyAqKXJlc29sdmVQcmVmaXhGb3JOYW1lc3BhY2VVUkk6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJOwojIDE2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9OU1hNTEVsZW1lbnQuaCIgMwotICh2b2lkKWluc2VydENoaWxkOihO
U1hNTE5vZGUgKiljaGlsZCBhdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OwoKCgoKCi0gKHZvaWQp
aW5zZXJ0Q2hpbGRyZW46KE5TQXJyYXkgKiljaGlsZHJlbiBhdEluZGV4OihOU1VJbnRlZ2VyKWlu
ZGV4OwoKCgoKCi0gKHZvaWQpcmVtb3ZlQ2hpbGRBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OwoK
CgoKCi0gKHZvaWQpc2V0Q2hpbGRyZW46KE5TQXJyYXkgKiljaGlsZHJlbjsKCgoKCgotICh2b2lk
KWFkZENoaWxkOihOU1hNTE5vZGUgKiljaGlsZDsKCgoKCgotICh2b2lkKXJlcGxhY2VDaGlsZEF0
SW5kZXg6KE5TVUludGVnZXIpaW5kZXggd2l0aE5vZGU6KE5TWE1MTm9kZSAqKW5vZGU7CgoKCgoK
LSAodm9pZClub3JtYWxpemVBZGphY2VudFRleHROb2Rlc1ByZXNlcnZpbmdDREFUQTooQk9PTClw
cmVzZXJ2ZTsKCkBlbmQKIyAxMDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKCgoKCgoKCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0FmZmlu
ZVRyYW5zZm9ybS5oIiAxIDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0FmZmluZVRyYW5zZm9ybS5oIiAzCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy8uLi9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0FmZmluZVRy
YW5zZm9ybS5oIiAxIDMKCgoKCgojZGVmaW5lIENHQUZGSU5FVFJBTlNGT1JNX0hfIAoKdHlwZWRl
ZiBzdHJ1Y3QgQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dBZmZpbmVUcmFuc2Zvcm07CgoKCgpzdHJ1Y3Qg
Q0dBZmZpbmVUcmFuc2Zvcm0gewogIENHRmxvYXQgYSwgYiwgYywgZDsKICBDR0Zsb2F0IHR4LCB0
eTsKfTsKCgoKZXh0ZXJuICJDIiBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSBDR0FmZmluZVRyYW5z
Zm9ybUlkZW50aXR5CiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CmV4dGVybiAiQyIgQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKENHRmxv
YXQgYSwgQ0dGbG9hdCBiLAogIENHRmxvYXQgYywgQ0dGbG9hdCBkLCBDR0Zsb2F0IHR4LCBDR0Zs
b2F0IHR5KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0
ZXJuICJDIiBDR0FmZmluZVRyYW5zZm9ybSBDR0FmZmluZVRyYW5zZm9ybU1ha2VUcmFuc2xhdGlv
bihDR0Zsb2F0IHR4LAogIENHRmxvYXQgdHkpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDR0FmZmluZVRyYW5zZm9ybSBDR0FmZmluZVRyYW5z
Zm9ybU1ha2VTY2FsZShDR0Zsb2F0IHN4LCBDR0Zsb2F0IHN5KQogIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDR0FmZmluZVRyYW5zZm9ybSBD
R0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihDR0Zsb2F0IGFuZ2xlKQogIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIGJvb2wgQ0dBZmZpbmVU
cmFuc2Zvcm1Jc0lkZW50aXR5KENHQWZmaW5lVHJhbnNmb3JtIHQpCiAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENHQWZmaW5lVHJhbnNmb3Jt
IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKENHQWZmaW5lVHJhbnNmb3JtIHQsCiAgQ0dGbG9h
dCB0eCwgQ0dGbG9hdCB0eSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CgoKCgpleHRlcm4gIkMiIENHQWZmaW5lVHJhbnNmb3JtIENHQWZmaW5lVHJhbnNmb3JtU2NhbGUo
Q0dBZmZpbmVUcmFuc2Zvcm0gdCwKICBDR0Zsb2F0IHN4LCBDR0Zsb2F0IHN5KSBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgQ0dBZmZpbmVUcmFu
c2Zvcm0gQ0dBZmZpbmVUcmFuc2Zvcm1Sb3RhdGUoQ0dBZmZpbmVUcmFuc2Zvcm0gdCwKICBDR0Zs
b2F0IGFuZ2xlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4
dGVybiAiQyIgQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoQ0dBZmZp
bmVUcmFuc2Zvcm0gdCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKCmV4dGVybiAiQyIgQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQo
Q0dBZmZpbmVUcmFuc2Zvcm0gdDEsCiAgQ0dBZmZpbmVUcmFuc2Zvcm0gdDIpIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIGJvb2wgQ0dBZmZpbmVU
cmFuc2Zvcm1FcXVhbFRvVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtIHQxLAogIENHQWZmaW5l
VHJhbnNmb3JtIHQyKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CgpleHRlcm4gIkMiIENHUG9pbnQgQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKENHUG9pbnQg
cG9pbnQsCiAgQ0dBZmZpbmVUcmFuc2Zvcm0gdCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBDR1NpemUgQ0dTaXplQXBwbHlBZmZpbmVUcmFu
c2Zvcm0oQ0dTaXplIHNpemUsIENHQWZmaW5lVHJhbnNmb3JtIHQpCiAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzLy4uL0ZyYW1ld29ya3MvQ29y
ZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHQWZmaW5lVHJhbnNmb3JtLmgiIDMKZXh0ZXJu
ICJDIiBDR1JlY3QgQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oQ0dSZWN0IHJlY3QsIENHQWZm
aW5lVHJhbnNmb3JtIHQpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CgoKCnN0YXRpYyBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0KX19DR0FmZmluZVRyYW5zZm9ybU1h
a2UoQ0dGbG9hdCBhLCBDR0Zsb2F0IGIsIENHRmxvYXQgYywgQ0dGbG9hdCBkLAogIENHRmxvYXQg
dHgsIENHRmxvYXQgdHkpCnsKICBDR0FmZmluZVRyYW5zZm9ybSB0OwogIHQuYSA9IGE7IHQuYiA9
IGI7IHQuYyA9IGM7IHQuZCA9IGQ7IHQudHggPSB0eDsgdC50eSA9IHR5OwogIHJldHVybiB0Owp9
CiNkZWZpbmUgQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlIF9fQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlCgpz
dGF0aWMgaW5saW5lIENHUG9pbnQKX19DR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zvcm0oQ0dQb2lu
dCBwb2ludCwgQ0dBZmZpbmVUcmFuc2Zvcm0gdCkKewogIENHUG9pbnQgcDsKICBwLnggPSAoQ0dG
bG9hdCkoKGRvdWJsZSl0LmEgKiBwb2ludC54ICsgKGRvdWJsZSl0LmMgKiBwb2ludC55ICsgdC50
eCk7CiAgcC55ID0gKENHRmxvYXQpKChkb3VibGUpdC5iICogcG9pbnQueCArIChkb3VibGUpdC5k
ICogcG9pbnQueSArIHQudHkpOwogIHJldHVybiBwOwp9CiNkZWZpbmUgQ0dQb2ludEFwcGx5QWZm
aW5lVHJhbnNmb3JtIF9fQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtCgpzdGF0aWMgaW5saW5l
IENHU2l6ZQpfX0NHU2l6ZUFwcGx5QWZmaW5lVHJhbnNmb3JtKENHU2l6ZSBzaXplLCBDR0FmZmlu
ZVRyYW5zZm9ybSB0KQp7CiAgQ0dTaXplIHM7CiAgcy53aWR0aCA9IChDR0Zsb2F0KSgoZG91Ymxl
KXQuYSAqIHNpemUud2lkdGggKyAoZG91YmxlKXQuYyAqIHNpemUuaGVpZ2h0KTsKICBzLmhlaWdo
dCA9IChDR0Zsb2F0KSgoZG91YmxlKXQuYiAqIHNpemUud2lkdGggKyAoZG91YmxlKXQuZCAqIHNp
emUuaGVpZ2h0KTsKICByZXR1cm4gczsKfQojZGVmaW5lIENHU2l6ZUFwcGx5QWZmaW5lVHJhbnNm
b3JtIF9fQ0dTaXplQXBwbHlBZmZpbmVUcmFuc2Zvcm0KIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0FmZmluZVRyYW5zZm9ybS5o
IiAyIDMKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0dGbG9hdCBtMTEsIG0xMiwgbTIxLCBtMjI7
CiAgICBDR0Zsb2F0IHRYLCB0WTsKfSBOU0FmZmluZVRyYW5zZm9ybVN0cnVjdDsKCkBpbnRlcmZh
Y2UgTlNBZmZpbmVUcmFuc2Zvcm0gOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4gewog
ICAgQHByaXZhdGUKICAgIE5TQWZmaW5lVHJhbnNmb3JtU3RydWN0IF90cmFuc2Zvcm1TdHJ1Y3Q7
Cn0KCgorIChOU0FmZmluZVRyYW5zZm9ybSAqKXRyYW5zZm9ybTsKCgotIChpZClpbml0V2l0aFRy
YW5zZm9ybTooTlNBZmZpbmVUcmFuc2Zvcm0gKil0cmFuc2Zvcm07CgoKLSAodm9pZCl0cmFuc2xh
dGVYQnk6KENHRmxvYXQpZGVsdGFYIHlCeTooQ0dGbG9hdClkZWx0YVk7CgoKLSAodm9pZClyb3Rh
dGVCeURlZ3JlZXM6KENHRmxvYXQpYW5nbGU7Ci0gKHZvaWQpcm90YXRlQnlSYWRpYW5zOihDR0Zs
b2F0KWFuZ2xlOwoKCi0gKHZvaWQpc2NhbGVCeTooQ0dGbG9hdClzY2FsZTsKLSAodm9pZClzY2Fs
ZVhCeTooQ0dGbG9hdClzY2FsZVggeUJ5OihDR0Zsb2F0KXNjYWxlWTsKCgotICh2b2lkKWludmVy
dDsKCgotICh2b2lkKWFwcGVuZFRyYW5zZm9ybTooTlNBZmZpbmVUcmFuc2Zvcm0gKil0cmFuc2Zv
cm07Ci0gKHZvaWQpcHJlcGVuZFRyYW5zZm9ybTooTlNBZmZpbmVUcmFuc2Zvcm0gKil0cmFuc2Zv
cm07CgoKLSAoTlNQb2ludCl0cmFuc2Zvcm1Qb2ludDooTlNQb2ludClhUG9pbnQ7Ci0gKE5TU2l6
ZSl0cmFuc2Zvcm1TaXplOihOU1NpemUpYVNpemU7CgoKLSAoTlNBZmZpbmVUcmFuc2Zvcm1TdHJ1
Y3QpdHJhbnNmb3JtU3RydWN0OwotICh2b2lkKXNldFRyYW5zZm9ybVN0cnVjdDooTlNBZmZpbmVU
cmFuc2Zvcm1TdHJ1Y3QpdHJhbnNmb3JtU3RydWN0OwoKQGVuZAojIDExNCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgi
IDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3Jr
L0hlYWRlcnMvTlNBcHBsZUV2ZW50RGVzY3JpcHRvci5oIiAxIDMKCgoKCgoKCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuaCIgMwojZGVmaW5lIF9fQVBQTElDQVRJT05TRVJWSUNFU19fIAojIDI2ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L0FwcGxpY2F0aW9uU2VydmljZXMuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9I
ZWFkZXJzL0FUUy5oIiAxIDMKIyAyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMv
QVRTLmgiIDMKI2RlZmluZSBfX0FUU19fIAoKCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFt
ZXdvcmsvSGVhZGVycy9BVFNMYXlvdXRUeXBlcy5oIiAxIDMKIyAyNSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMu
ZnJhbWV3b3JrL0hlYWRlcnMvQVRTTGF5b3V0VHlwZXMuaCIgMwojZGVmaW5lIF9fQVRTTEFZT1VU
VFlQRVNfXyAKCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9TRk5U
TGF5b3V0VHlwZXMuaCIgMSAzCiMgMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJz
L1NGTlRMYXlvdXRUeXBlcy5oIiAzCiNkZWZpbmUgX19TRk5UTEFZT1VUVFlQRVNfXyAKIyAzOCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvU0ZOVExheW91dFR5cGVzLmgiIDMKI3By
YWdtYSBwYWNrKHB1c2gsIDIpCiMgNTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJz
L1NGTlRMYXlvdXRUeXBlcy5oIiAzCmVudW0gewogIGtBbGxUeXBvZ3JhcGhpY0ZlYXR1cmVzVHlw
ZSA9IDAsCiAga0xpZ2F0dXJlc1R5cGUgPSAxLAogIGtDdXJzaXZlQ29ubmVjdGlvblR5cGUgPSAy
LAogIGtMZXR0ZXJDYXNlVHlwZSA9IDMsCiAga1ZlcnRpY2FsU3Vic3RpdHV0aW9uVHlwZSA9IDQs
CiAga0xpbmd1aXN0aWNSZWFycmFuZ2VtZW50VHlwZSA9IDUsCiAga051bWJlclNwYWNpbmdUeXBl
ID0gNiwKICBrU21hcnRTd2FzaFR5cGUgPSA4LAogIGtEaWFjcml0aWNzVHlwZSA9IDksCiAga1Zl
cnRpY2FsUG9zaXRpb25UeXBlID0gMTAsCiAga0ZyYWN0aW9uc1R5cGUgPSAxMSwKICBrT3Zlcmxh
cHBpbmdDaGFyYWN0ZXJzVHlwZSA9IDEzLAogIGtUeXBvZ3JhcGhpY0V4dHJhc1R5cGUgPSAxNCwK
ICBrTWF0aGVtYXRpY2FsRXh0cmFzVHlwZSA9IDE1LAogIGtPcm5hbWVudFNldHNUeXBlID0gMTYs
CiAga0NoYXJhY3RlckFsdGVybmF0aXZlc1R5cGUgPSAxNywKICBrRGVzaWduQ29tcGxleGl0eVR5
cGUgPSAxOCwKICBrU3R5bGVPcHRpb25zVHlwZSA9IDE5LAogIGtDaGFyYWN0ZXJTaGFwZVR5cGUg
PSAyMCwKICBrTnVtYmVyQ2FzZVR5cGUgPSAyMSwKICBrVGV4dFNwYWNpbmdUeXBlID0gMjIsCiAg
a1RyYW5zbGl0ZXJhdGlvblR5cGUgPSAyMywKICBrQW5ub3RhdGlvblR5cGUgPSAyNCwKICBrS2Fu
YVNwYWNpbmdUeXBlID0gMjUsCiAga0lkZW9ncmFwaGljU3BhY2luZ1R5cGUgPSAyNiwKICBrVW5p
Y29kZURlY29tcG9zaXRpb25UeXBlID0gMjcsCiAga1J1YnlLYW5hVHlwZSA9IDI4LAogIGtDSktT
eW1ib2xBbHRlcm5hdGl2ZXNUeXBlID0gMjksCiAga0lkZW9ncmFwaGljQWx0ZXJuYXRpdmVzVHlw
ZSA9IDMwLAogIGtDSktWZXJ0aWNhbFJvbWFuUGxhY2VtZW50VHlwZSA9IDMxLAogIGtJdGFsaWND
SktSb21hblR5cGUgPSAzMiwKICBrQ0pLUm9tYW5TcGFjaW5nVHlwZSA9IDEwMywKICBrTGFzdEZl
YXR1cmVUeXBlID0gLTEKfTsKCgoKCgoKZW51bSB7CiAga0FsbFR5cGVGZWF0dXJlc09uU2VsZWN0
b3IgPSAwLAogIGtBbGxUeXBlRmVhdHVyZXNPZmZTZWxlY3RvciA9IDEKfTsKCgoKCgoKCmVudW0g
ewogIGtSZXF1aXJlZExpZ2F0dXJlc09uU2VsZWN0b3IgPSAwLAogIGtSZXF1aXJlZExpZ2F0dXJl
c09mZlNlbGVjdG9yID0gMSwKICBrQ29tbW9uTGlnYXR1cmVzT25TZWxlY3RvciA9IDIsCiAga0Nv
bW1vbkxpZ2F0dXJlc09mZlNlbGVjdG9yID0gMywKICBrUmFyZUxpZ2F0dXJlc09uU2VsZWN0b3Ig
PSA0LAogIGtSYXJlTGlnYXR1cmVzT2ZmU2VsZWN0b3IgPSA1LAogIGtMb2dvc09uU2VsZWN0b3Ig
PSA2LAogIGtMb2dvc09mZlNlbGVjdG9yID0gNywKICBrUmVidXNQaWN0dXJlc09uU2VsZWN0b3Ig
PSA4LAogIGtSZWJ1c1BpY3R1cmVzT2ZmU2VsZWN0b3IgPSA5LAogIGtEaXBodGhvbmdMaWdhdHVy
ZXNPblNlbGVjdG9yID0gMTAsCiAga0RpcGh0aG9uZ0xpZ2F0dXJlc09mZlNlbGVjdG9yID0gMTEs
CiAga1NxdWFyZWRMaWdhdHVyZXNPblNlbGVjdG9yID0gMTIsCiAga1NxdWFyZWRMaWdhdHVyZXNP
ZmZTZWxlY3RvciA9IDEzLAogIGtBYmJyZXZTcXVhcmVkTGlnYXR1cmVzT25TZWxlY3RvciA9IDE0
LAogIGtBYmJyZXZTcXVhcmVkTGlnYXR1cmVzT2ZmU2VsZWN0b3IgPSAxNSwKICBrU3ltYm9sTGln
YXR1cmVzT25TZWxlY3RvciA9IDE2LAogIGtTeW1ib2xMaWdhdHVyZXNPZmZTZWxlY3RvciA9IDE3
Cn07CgoKCgoKCmVudW0gewogIGtVbmNvbm5lY3RlZFNlbGVjdG9yID0gMCwKICBrUGFydGlhbGx5
Q29ubmVjdGVkU2VsZWN0b3IgPSAxLAogIGtDdXJzaXZlU2VsZWN0b3IgPSAyCn07CgoKCgoKCmVu
dW0gewogIGtVcHBlckFuZExvd2VyQ2FzZVNlbGVjdG9yID0gMCwKICBrQWxsQ2Fwc1NlbGVjdG9y
ID0gMSwKICBrQWxsTG93ZXJDYXNlU2VsZWN0b3IgPSAyLAogIGtTbWFsbENhcHNTZWxlY3RvciA9
IDMsCiAga0luaXRpYWxDYXBzU2VsZWN0b3IgPSA0LAogIGtJbml0aWFsQ2Fwc0FuZFNtYWxsQ2Fw
c1NlbGVjdG9yID0gNQp9OwoKCgoKCgplbnVtIHsKICBrU3Vic3RpdHV0ZVZlcnRpY2FsRm9ybXNP
blNlbGVjdG9yID0gMCwKICBrU3Vic3RpdHV0ZVZlcnRpY2FsRm9ybXNPZmZTZWxlY3RvciA9IDEK
fTsKCgoKCgoKZW51bSB7CiAga0xpbmd1aXN0aWNSZWFycmFuZ2VtZW50T25TZWxlY3RvciA9IDAs
CiAga0xpbmd1aXN0aWNSZWFycmFuZ2VtZW50T2ZmU2VsZWN0b3IgPSAxCn07CgoKCgoKCmVudW0g
ewogIGtNb25vc3BhY2VkTnVtYmVyc1NlbGVjdG9yID0gMCwKICBrUHJvcG9ydGlvbmFsTnVtYmVy
c1NlbGVjdG9yID0gMSwKICBrVGhpcmRXaWR0aE51bWJlcnNTZWxlY3RvciA9IDIsCiAga1F1YXJ0
ZXJXaWR0aE51bWJlcnNTZWxlY3RvciA9IDMKfTsKCgoKCgoKZW51bSB7CiAga1dvcmRJbml0aWFs
U3dhc2hlc09uU2VsZWN0b3IgPSAwLAogIGtXb3JkSW5pdGlhbFN3YXNoZXNPZmZTZWxlY3RvciA9
IDEsCiAga1dvcmRGaW5hbFN3YXNoZXNPblNlbGVjdG9yID0gMiwKICBrV29yZEZpbmFsU3dhc2hl
c09mZlNlbGVjdG9yID0gMywKICBrTGluZUluaXRpYWxTd2FzaGVzT25TZWxlY3RvciA9IDQsCiAg
a0xpbmVJbml0aWFsU3dhc2hlc09mZlNlbGVjdG9yID0gNSwKICBrTGluZUZpbmFsU3dhc2hlc09u
U2VsZWN0b3IgPSA2LAogIGtMaW5lRmluYWxTd2FzaGVzT2ZmU2VsZWN0b3IgPSA3LAogIGtOb25G
aW5hbFN3YXNoZXNPblNlbGVjdG9yID0gOCwKICBrTm9uRmluYWxTd2FzaGVzT2ZmU2VsZWN0b3Ig
PSA5Cn07CgoKCgoKCmVudW0gewogIGtTaG93RGlhY3JpdGljc1NlbGVjdG9yID0gMCwKICBrSGlk
ZURpYWNyaXRpY3NTZWxlY3RvciA9IDEsCiAga0RlY29tcG9zZURpYWNyaXRpY3NTZWxlY3RvciA9
IDIKfTsKCgoKCgoKZW51bSB7CiAga05vcm1hbFBvc2l0aW9uU2VsZWN0b3IgPSAwLAogIGtTdXBl
cmlvcnNTZWxlY3RvciA9IDEsCiAga0luZmVyaW9yc1NlbGVjdG9yID0gMiwKICBrT3JkaW5hbHNT
ZWxlY3RvciA9IDMKfTsKCgoKCgoKZW51bSB7CiAga05vRnJhY3Rpb25zU2VsZWN0b3IgPSAwLAog
IGtWZXJ0aWNhbEZyYWN0aW9uc1NlbGVjdG9yID0gMSwKICBrRGlhZ29uYWxGcmFjdGlvbnNTZWxl
Y3RvciA9IDIKfTsKCgoKCgoKZW51bSB7CiAga1ByZXZlbnRPdmVybGFwT25TZWxlY3RvciA9IDAs
CiAga1ByZXZlbnRPdmVybGFwT2ZmU2VsZWN0b3IgPSAxCn07CgoKCgoKCmVudW0gewogIGtIeXBo
ZW5zVG9FbURhc2hPblNlbGVjdG9yID0gMCwKICBrSHlwaGVuc1RvRW1EYXNoT2ZmU2VsZWN0b3Ig
PSAxLAogIGtIeXBoZW5Ub0VuRGFzaE9uU2VsZWN0b3IgPSAyLAogIGtIeXBoZW5Ub0VuRGFzaE9m
ZlNlbGVjdG9yID0gMywKICBrU2xhc2hlZFplcm9PblNlbGVjdG9yID0gNCwKICBrU2xhc2hlZFpl
cm9PZmZTZWxlY3RvciA9IDUsCiAga0Zvcm1JbnRlcnJvYmFuZ09uU2VsZWN0b3IgPSA2LAogIGtG
b3JtSW50ZXJyb2JhbmdPZmZTZWxlY3RvciA9IDcsCiAga1NtYXJ0UXVvdGVzT25TZWxlY3RvciA9
IDgsCiAga1NtYXJ0UXVvdGVzT2ZmU2VsZWN0b3IgPSA5LAogIGtQZXJpb2RzVG9FbGxpcHNpc09u
U2VsZWN0b3IgPSAxMCwKICBrUGVyaW9kc1RvRWxsaXBzaXNPZmZTZWxlY3RvciA9IDExCn07CgoK
CgoKCmVudW0gewogIGtIeXBoZW5Ub01pbnVzT25TZWxlY3RvciA9IDAsCiAga0h5cGhlblRvTWlu
dXNPZmZTZWxlY3RvciA9IDEsCiAga0FzdGVyaXNrVG9NdWx0aXBseU9uU2VsZWN0b3IgPSAyLAog
IGtBc3Rlcmlza1RvTXVsdGlwbHlPZmZTZWxlY3RvciA9IDMsCiAga1NsYXNoVG9EaXZpZGVPblNl
bGVjdG9yID0gNCwKICBrU2xhc2hUb0RpdmlkZU9mZlNlbGVjdG9yID0gNSwKICBrSW5lcXVhbGl0
eUxpZ2F0dXJlc09uU2VsZWN0b3IgPSA2LAogIGtJbmVxdWFsaXR5TGlnYXR1cmVzT2ZmU2VsZWN0
b3IgPSA3LAogIGtFeHBvbmVudHNPblNlbGVjdG9yID0gOCwKICBrRXhwb25lbnRzT2ZmU2VsZWN0
b3IgPSA5Cn07CgoKCgoKCmVudW0gewogIGtOb09ybmFtZW50c1NlbGVjdG9yID0gMCwKICBrRGlu
Z2JhdHNTZWxlY3RvciA9IDEsCiAga1BpQ2hhcmFjdGVyc1NlbGVjdG9yID0gMiwKICBrRmxldXJv
bnNTZWxlY3RvciA9IDMsCiAga0RlY29yYXRpdmVCb3JkZXJzU2VsZWN0b3IgPSA0LAogIGtJbnRl
cm5hdGlvbmFsU3ltYm9sc1NlbGVjdG9yID0gNSwKICBrTWF0aFN5bWJvbHNTZWxlY3RvciA9IDYK
fTsKCgoKCgoKZW51bSB7CiAga05vQWx0ZXJuYXRlc1NlbGVjdG9yID0gMAp9OwoKCgoKCgplbnVt
IHsKICBrRGVzaWduTGV2ZWwxU2VsZWN0b3IgPSAwLAogIGtEZXNpZ25MZXZlbDJTZWxlY3RvciA9
IDEsCiAga0Rlc2lnbkxldmVsM1NlbGVjdG9yID0gMiwKICBrRGVzaWduTGV2ZWw0U2VsZWN0b3Ig
PSAzLAogIGtEZXNpZ25MZXZlbDVTZWxlY3RvciA9IDQKfTsKCgoKCgoKZW51bSB7CiAga05vU3R5
bGVPcHRpb25zU2VsZWN0b3IgPSAwLAogIGtEaXNwbGF5VGV4dFNlbGVjdG9yID0gMSwKICBrRW5n
cmF2ZWRUZXh0U2VsZWN0b3IgPSAyLAogIGtJbGx1bWluYXRlZENhcHNTZWxlY3RvciA9IDMsCiAg
a1RpdGxpbmdDYXBzU2VsZWN0b3IgPSA0LAogIGtUYWxsQ2Fwc1NlbGVjdG9yID0gNQp9OwoKCgoK
CgplbnVtIHsKICBrVHJhZGl0aW9uYWxDaGFyYWN0ZXJzU2VsZWN0b3IgPSAwLAogIGtTaW1wbGlm
aWVkQ2hhcmFjdGVyc1NlbGVjdG9yID0gMSwKICBrSklTMTk3OENoYXJhY3RlcnNTZWxlY3RvciA9
IDIsCiAga0pJUzE5ODNDaGFyYWN0ZXJzU2VsZWN0b3IgPSAzLAogIGtKSVMxOTkwQ2hhcmFjdGVy
c1NlbGVjdG9yID0gNCwKICBrVHJhZGl0aW9uYWxBbHRPbmVTZWxlY3RvciA9IDUsCiAga1RyYWRp
dGlvbmFsQWx0VHdvU2VsZWN0b3IgPSA2LAogIGtUcmFkaXRpb25hbEFsdFRocmVlU2VsZWN0b3Ig
PSA3LAogIGtUcmFkaXRpb25hbEFsdEZvdXJTZWxlY3RvciA9IDgsCiAga1RyYWRpdGlvbmFsQWx0
Rml2ZVNlbGVjdG9yID0gOSwKICBrRXhwZXJ0Q2hhcmFjdGVyc1NlbGVjdG9yID0gMTAKfTsKCgoK
CgoKZW51bSB7CiAga0xvd2VyQ2FzZU51bWJlcnNTZWxlY3RvciA9IDAsCiAga1VwcGVyQ2FzZU51
bWJlcnNTZWxlY3RvciA9IDEKfTsKCgoKCgoKZW51bSB7CiAga1Byb3BvcnRpb25hbFRleHRTZWxl
Y3RvciA9IDAsCiAga01vbm9zcGFjZWRUZXh0U2VsZWN0b3IgPSAxLAogIGtIYWxmV2lkdGhUZXh0
U2VsZWN0b3IgPSAyCn07CgoKCgoKCmVudW0gewogIGtOb1RyYW5zbGl0ZXJhdGlvblNlbGVjdG9y
ID0gMCwKICBrSGFuamFUb0hhbmd1bFNlbGVjdG9yID0gMSwKICBrSGlyYWdhbmFUb0thdGFrYW5h
U2VsZWN0b3IgPSAyLAogIGtLYXRha2FuYVRvSGlyYWdhbmFTZWxlY3RvciA9IDMsCiAga0thbmFU
b1JvbWFuaXphdGlvblNlbGVjdG9yID0gNCwKICBrUm9tYW5pemF0aW9uVG9IaXJhZ2FuYVNlbGVj
dG9yID0gNSwKICBrUm9tYW5pemF0aW9uVG9LYXRha2FuYVNlbGVjdG9yID0gNiwKICBrSGFuamFU
b0hhbmd1bEFsdE9uZVNlbGVjdG9yID0gNywKICBrSGFuamFUb0hhbmd1bEFsdFR3b1NlbGVjdG9y
ID0gOCwKICBrSGFuamFUb0hhbmd1bEFsdFRocmVlU2VsZWN0b3IgPSA5Cn07CgoKCgoKCmVudW0g
ewogIGtOb0Fubm90YXRpb25TZWxlY3RvciA9IDAsCiAga0JveEFubm90YXRpb25TZWxlY3RvciA9
IDEsCiAga1JvdW5kZWRCb3hBbm5vdGF0aW9uU2VsZWN0b3IgPSAyLAogIGtDaXJjbGVBbm5vdGF0
aW9uU2VsZWN0b3IgPSAzLAogIGtJbnZlcnRlZENpcmNsZUFubm90YXRpb25TZWxlY3RvciA9IDQs
CiAga1BhcmVudGhlc2lzQW5ub3RhdGlvblNlbGVjdG9yID0gNSwKICBrUGVyaW9kQW5ub3RhdGlv
blNlbGVjdG9yID0gNiwKICBrUm9tYW5OdW1lcmFsQW5ub3RhdGlvblNlbGVjdG9yID0gNywKICBr
RGlhbW9uZEFubm90YXRpb25TZWxlY3RvciA9IDgsCiAga0ludmVydGVkQm94QW5ub3RhdGlvblNl
bGVjdG9yID0gOSwKICBrSW52ZXJ0ZWRSb3VuZGVkQm94QW5ub3RhdGlvblNlbGVjdG9yID0gMTAK
fTsKCgoKCgoKZW51bSB7CiAga0Z1bGxXaWR0aEthbmFTZWxlY3RvciA9IDAsCiAga1Byb3BvcnRp
b25hbEthbmFTZWxlY3RvciA9IDEKfTsKCgoKCgoKZW51bSB7CiAga0Z1bGxXaWR0aElkZW9ncmFw
aHNTZWxlY3RvciA9IDAsCiAga1Byb3BvcnRpb25hbElkZW9ncmFwaHNTZWxlY3RvciA9IDEsCiAg
a0hhbGZXaWR0aElkZW9ncmFwaHNTZWxlY3RvciA9IDIKfTsKCgoKCgoKZW51bSB7CiAga0Nhbm9u
aWNhbENvbXBvc2l0aW9uT25TZWxlY3RvciA9IDAsCiAga0Nhbm9uaWNhbENvbXBvc2l0aW9uT2Zm
U2VsZWN0b3IgPSAxLAogIGtDb21wYXRpYmlsaXR5Q29tcG9zaXRpb25PblNlbGVjdG9yID0gMiwK
ICBrQ29tcGF0aWJpbGl0eUNvbXBvc2l0aW9uT2ZmU2VsZWN0b3IgPSAzLAogIGtUcmFuc2NvZGlu
Z0NvbXBvc2l0aW9uT25TZWxlY3RvciA9IDQsCiAga1RyYW5zY29kaW5nQ29tcG9zaXRpb25PZmZT
ZWxlY3RvciA9IDUKfTsKCgoKCgoKZW51bSB7CiAga05vUnVieUthbmFTZWxlY3RvciA9IDAsCiAg
a1J1YnlLYW5hU2VsZWN0b3IgPSAxLAogIGtSdWJ5S2FuYU9uU2VsZWN0b3IgPSAyLAogIGtSdWJ5
S2FuYU9mZlNlbGVjdG9yID0gMwp9OwoKCgoKCgplbnVtIHsKICBrTm9DSktTeW1ib2xBbHRlcm5h
dGl2ZXNTZWxlY3RvciA9IDAsCiAga0NKS1N5bWJvbEFsdE9uZVNlbGVjdG9yID0gMSwKICBrQ0pL
U3ltYm9sQWx0VHdvU2VsZWN0b3IgPSAyLAogIGtDSktTeW1ib2xBbHRUaHJlZVNlbGVjdG9yID0g
MywKICBrQ0pLU3ltYm9sQWx0Rm91clNlbGVjdG9yID0gNCwKICBrQ0pLU3ltYm9sQWx0Rml2ZVNl
bGVjdG9yID0gNQp9OwoKCgoKCgplbnVtIHsKICBrTm9JZGVvZ3JhcGhpY0FsdGVybmF0aXZlc1Nl
bGVjdG9yID0gMCwKICBrSWRlb2dyYXBoaWNBbHRPbmVTZWxlY3RvciA9IDEsCiAga0lkZW9ncmFw
aGljQWx0VHdvU2VsZWN0b3IgPSAyLAogIGtJZGVvZ3JhcGhpY0FsdFRocmVlU2VsZWN0b3IgPSAz
LAogIGtJZGVvZ3JhcGhpY0FsdEZvdXJTZWxlY3RvciA9IDQsCiAga0lkZW9ncmFwaGljQWx0Rml2
ZVNlbGVjdG9yID0gNQp9OwoKCgoKCgplbnVtIHsKICBrQ0pLVmVydGljYWxSb21hbkNlbnRlcmVk
U2VsZWN0b3IgPSAwLAogIGtDSktWZXJ0aWNhbFJvbWFuSEJhc2VsaW5lU2VsZWN0b3IgPSAxCn07
CgoKCgoKCmVudW0gewogIGtOb0NKS0l0YWxpY1JvbWFuU2VsZWN0b3IgPSAwLAogIGtDSktJdGFs
aWNSb21hblNlbGVjdG9yID0gMSwKICBrQ0pLSXRhbGljUm9tYW5PblNlbGVjdG9yID0gMiwKICBr
Q0pLSXRhbGljUm9tYW5PZmZTZWxlY3RvciA9IDMKfTsKCgoKCgoKZW51bSB7CiAga0hhbGZXaWR0
aENKS1JvbWFuU2VsZWN0b3IgPSAwLAogIGtQcm9wb3J0aW9uYWxDSktSb21hblNlbGVjdG9yID0g
MSwKICBrRGVmYXVsdENKS1JvbWFuU2VsZWN0b3IgPSAyLAogIGtGdWxsV2lkdGhDSktSb21hblNl
bGVjdG9yID0gMwp9OwoKCgoKCmVudW0gewogIGtTRk5UTG9va3VwU2ltcGxlQXJyYXkgPSAwLAog
IGtTRk5UTG9va3VwU2VnbWVudFNpbmdsZSA9IDIsCiAga1NGTlRMb29rdXBTZWdtZW50QXJyYXkg
PSA0LAogIGtTRk5UTG9va3VwU2luZ2xlVGFibGUgPSA2LAogIGtTRk5UTG9va3VwVHJpbW1lZEFy
cmF5ID0gOAp9OwoKdHlwZWRlZiBVSW50MTYgU0ZOVExvb2t1cFRhYmxlRm9ybWF0Owp0eXBlZGVm
IFVJbnQxNiBTRk5UTG9va3VwVmFsdWU7CnR5cGVkZWYgVUludDE2IFNGTlRMb29rdXBPZmZzZXQ7
CnR5cGVkZWYgVUludDMyIFNGTlRMb29rdXBLaW5kOwoKCgoKCgpzdHJ1Y3QgU0ZOVExvb2t1cEJp
bmFyeVNlYXJjaEhlYWRlciB7CiAgVUludDE2IHVuaXRTaXplOwogIFVJbnQxNiBuVW5pdHM7CiAg
VUludDE2IHNlYXJjaFJhbmdlOwogIFVJbnQxNiBlbnRyeVNlbGVjdG9yOwogIFVJbnQxNiByYW5n
ZVNoaWZ0Owp9Owp0eXBlZGVmIHN0cnVjdCBTRk5UTG9va3VwQmluYXJ5U2VhcmNoSGVhZGVyIFNG
TlRMb29rdXBCaW5hcnlTZWFyY2hIZWFkZXI7CgpzdHJ1Y3QgU0ZOVExvb2t1cEFycmF5SGVhZGVy
IHsKICBTRk5UTG9va3VwVmFsdWUgbG9va3VwVmFsdWVzWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBT
Rk5UTG9va3VwQXJyYXlIZWFkZXIgU0ZOVExvb2t1cEFycmF5SGVhZGVyOwoKc3RydWN0IFNGTlRM
b29rdXBUcmltbWVkQXJyYXlIZWFkZXIgewogIFVJbnQxNiBmaXJzdEdseXBoOwogIFVJbnQxNiBj
b3VudDsKICBTRk5UTG9va3VwVmFsdWUgdmFsdWVBcnJheVsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
U0ZOVExvb2t1cFRyaW1tZWRBcnJheUhlYWRlciBTRk5UTG9va3VwVHJpbW1lZEFycmF5SGVhZGVy
OwoKCgoKCgpzdHJ1Y3QgU0ZOVExvb2t1cFNlZ21lbnQgewogIFVJbnQxNiBsYXN0R2x5cGg7CiAg
VUludDE2IGZpcnN0R2x5cGg7CiAgVUludDE2IHZhbHVlWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBT
Rk5UTG9va3VwU2VnbWVudCBTRk5UTG9va3VwU2VnbWVudDsKc3RydWN0IFNGTlRMb29rdXBTZWdt
ZW50SGVhZGVyIHsKICBTRk5UTG9va3VwQmluYXJ5U2VhcmNoSGVhZGVyIGJpblNlYXJjaDsKICBT
Rk5UTG9va3VwU2VnbWVudCBzZWdtZW50c1sxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgU0ZOVExvb2t1
cFNlZ21lbnRIZWFkZXIgU0ZOVExvb2t1cFNlZ21lbnRIZWFkZXI7CgpzdHJ1Y3QgU0ZOVExvb2t1
cFNpbmdsZSB7CiAgVUludDE2IGdseXBoOwogIFVJbnQxNiB2YWx1ZVsxXTsKfTsKdHlwZWRlZiBz
dHJ1Y3QgU0ZOVExvb2t1cFNpbmdsZSBTRk5UTG9va3VwU2luZ2xlOwpzdHJ1Y3QgU0ZOVExvb2t1
cFNpbmdsZUhlYWRlciB7CiAgU0ZOVExvb2t1cEJpbmFyeVNlYXJjaEhlYWRlciBiaW5TZWFyY2g7
CiAgU0ZOVExvb2t1cFNpbmdsZSBlbnRyaWVzWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBTRk5UTG9v
a3VwU2luZ2xlSGVhZGVyIFNGTlRMb29rdXBTaW5nbGVIZWFkZXI7Cgp1bmlvbiBTRk5UTG9va3Vw
Rm9ybWF0U3BlY2lmaWNIZWFkZXIgewogIFNGTlRMb29rdXBBcnJheUhlYWRlciB0aGVBcnJheTsK
ICBTRk5UTG9va3VwU2VnbWVudEhlYWRlciBzZWdtZW50OwogIFNGTlRMb29rdXBTaW5nbGVIZWFk
ZXIgc2luZ2xlOwogIFNGTlRMb29rdXBUcmltbWVkQXJyYXlIZWFkZXIgdHJpbW1lZEFycmF5Owp9
Owp0eXBlZGVmIHVuaW9uIFNGTlRMb29rdXBGb3JtYXRTcGVjaWZpY0hlYWRlciBTRk5UTG9va3Vw
Rm9ybWF0U3BlY2lmaWNIZWFkZXI7CgpzdHJ1Y3QgU0ZOVExvb2t1cFRhYmxlIHsKICBTRk5UTG9v
a3VwVGFibGVGb3JtYXQgZm9ybWF0OwogIFNGTlRMb29rdXBGb3JtYXRTcGVjaWZpY0hlYWRlciBm
c0hlYWRlcjsKfTsKdHlwZWRlZiBzdHJ1Y3QgU0ZOVExvb2t1cFRhYmxlIFNGTlRMb29rdXBUYWJs
ZTsKdHlwZWRlZiBTRk5UTG9va3VwVGFibGUgKiBTRk5UTG9va3VwVGFibGVQdHI7CnR5cGVkZWYg
U0ZOVExvb2t1cFRhYmxlUHRyICogU0ZOVExvb2t1cFRhYmxlSGFuZGxlOwoKCmVudW0gewogIGtT
VENsYXNzRW5kT2ZUZXh0ID0gMCwKICBrU1RDbGFzc091dE9mQm91bmRzID0gMSwKICBrU1RDbGFz
c0RlbGV0ZWRHbHlwaCA9IDIsCiAga1NUQ2xhc3NFbmRPZkxpbmUgPSAzLAogIGtTVFNldE1hcmsg
PSAweDgwMDAsCiAga1NUTm9BZHZhbmNlID0gMHg0MDAwLAogIGtTVE1hcmtFbmQgPSAweDIwMDAs
CiAga1NUTGlnQWN0aW9uTWFzayA9IDB4M0ZGRiwKICBrU1RSZWFyclZlcmJNYXNrID0gMHgwMDBG
Cn07Cgp0eXBlZGVmIFVJbnQ4IFNUQ2xhc3M7CnR5cGVkZWYgVUludDggU1RFbnRyeUluZGV4Owpz
dHJ1Y3QgU1RIZWFkZXIgewogIFVJbnQ4IGZpbGxlcjsKICBTVENsYXNzIG5DbGFzc2VzOwogIFVJ
bnQxNiBjbGFzc1RhYmxlT2Zmc2V0OwogIFVJbnQxNiBzdGF0ZUFycmF5T2Zmc2V0OwogIFVJbnQx
NiBlbnRyeVRhYmxlT2Zmc2V0Owp9Owp0eXBlZGVmIHN0cnVjdCBTVEhlYWRlciBTVEhlYWRlcjsK
c3RydWN0IFNUQ2xhc3NUYWJsZSB7CiAgVUludDE2IGZpcnN0R2x5cGg7CiAgVUludDE2IG5HbHlw
aHM7CiAgU1RDbGFzcyBjbGFzc2VzWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBTVENsYXNzVGFibGUg
U1RDbGFzc1RhYmxlOwpzdHJ1Y3QgU1RFbnRyeVplcm8gewogIFVJbnQxNiBuZXdTdGF0ZTsKICBV
SW50MTYgZmxhZ3M7Cn07CnR5cGVkZWYgc3RydWN0IFNURW50cnlaZXJvIFNURW50cnlaZXJvOwpz
dHJ1Y3QgU1RFbnRyeU9uZSB7CiAgVUludDE2IG5ld1N0YXRlOwogIFVJbnQxNiBmbGFnczsKICBV
SW50MTYgb2Zmc2V0MTsKfTsKdHlwZWRlZiBzdHJ1Y3QgU1RFbnRyeU9uZSBTVEVudHJ5T25lOwpz
dHJ1Y3QgU1RFbnRyeVR3byB7CiAgVUludDE2IG5ld1N0YXRlOwogIFVJbnQxNiBmbGFnczsKICBV
SW50MTYgb2Zmc2V0MTsKICBVSW50MTYgb2Zmc2V0MjsKfTsKdHlwZWRlZiBzdHJ1Y3QgU1RFbnRy
eVR3byBTVEVudHJ5VHdvOwoKCmVudW0gewogIGtTVFhIYXNMaWdBY3Rpb24gPSAweDIwMDAKfTsK
Cgp0eXBlZGVmIFVJbnQxNiBTVFhDbGFzczsKdHlwZWRlZiBVSW50MTYgU1RYU3RhdGVJbmRleDsK
dHlwZWRlZiBVSW50MTYgU1RYRW50cnlJbmRleDsKc3RydWN0IFNUWEhlYWRlciB7CiAgVUludDMy
IG5DbGFzc2VzOwogIFVJbnQzMiBjbGFzc1RhYmxlT2Zmc2V0OwogIFVJbnQzMiBzdGF0ZUFycmF5
T2Zmc2V0OwogIFVJbnQzMiBlbnRyeVRhYmxlT2Zmc2V0Owp9Owp0eXBlZGVmIHN0cnVjdCBTVFhI
ZWFkZXIgU1RYSGVhZGVyOwoKdHlwZWRlZiBTRk5UTG9va3VwVGFibGUgU1RYQ2xhc3NUYWJsZTsK
c3RydWN0IFNUWEVudHJ5WmVybyB7CiAgU1RYU3RhdGVJbmRleCBuZXdTdGF0ZTsKICBVSW50MTYg
ZmxhZ3M7Cn07CnR5cGVkZWYgc3RydWN0IFNUWEVudHJ5WmVybyBTVFhFbnRyeVplcm87CnN0cnVj
dCBTVFhFbnRyeU9uZSB7CiAgU1RYU3RhdGVJbmRleCBuZXdTdGF0ZTsKICBVSW50MTYgZmxhZ3M7
CiAgVUludDE2IGluZGV4MTsKfTsKdHlwZWRlZiBzdHJ1Y3QgU1RYRW50cnlPbmUgU1RYRW50cnlP
bmU7CnN0cnVjdCBTVFhFbnRyeVR3byB7CiAgU1RYU3RhdGVJbmRleCBuZXdTdGF0ZTsKICBVSW50
MTYgZmxhZ3M7CiAgVUludDE2IGluZGV4MTsKICBVSW50MTYgaW5kZXgyOwp9Owp0eXBlZGVmIHN0
cnVjdCBTVFhFbnRyeVR3byBTVFhFbnRyeVR3bzsKCgoKZW51bSB7CiAga0xDQVJUYWcgPSAweDZD
NjM2MTcyLAogIGtMQ0FSQ3VycmVudFZlcnNpb24gPSAweDAwMDEwMDAwLAogIGtMQ0FSTGluZWFy
Rm9ybWF0ID0gMCwKICBrTENBUkN0bFBvaW50Rm9ybWF0ID0gMQp9OwoKCnN0cnVjdCBMY2FyQ2Fy
ZXRDbGFzc0VudHJ5IHsKICBVSW50MTYgY291bnQ7CiAgVUludDE2IHBhcnRpYWxzWzFdOwp9Owp0
eXBlZGVmIHN0cnVjdCBMY2FyQ2FyZXRDbGFzc0VudHJ5IExjYXJDYXJldENsYXNzRW50cnk7CnN0
cnVjdCBMY2FyQ2FyZXRUYWJsZSB7CiAgRml4ZWQgdmVyc2lvbjsKICBVSW50MTYgZm9ybWF0Owog
IFNGTlRMb29rdXBUYWJsZSBsb29rdXA7Cn07CnR5cGVkZWYgc3RydWN0IExjYXJDYXJldFRhYmxl
IExjYXJDYXJldFRhYmxlOwp0eXBlZGVmIExjYXJDYXJldFRhYmxlICogTGNhckNhcmV0VGFibGVQ
dHI7CgoKCmVudW0gewogIGtKVVNUVGFnID0gMHg2QTc1NzM3NCwKICBrSlVTVEN1cnJlbnRWZXJz
aW9uID0gMHgwMDAxMDAwMCwKICBrSlVTVFN0YW5kYXJkRm9ybWF0ID0gMCwKICBrSlVTVG5vR2x5
cGhjb2RlID0gMHhGRkZGLAogIGtKVVNUcGNEZWNvbXBvc2l0aW9uQWN0aW9uID0gMCwKICBrSlVT
VHBjVW5jb25kaXRpb25hbEFkZEFjdGlvbiA9IDEsCiAga0pVU1RwY0NvbmRpdGlvbmFsQWRkQWN0
aW9uID0gMiwKICBrSlVTVHBjR2x5cGhTdHJldGNoQWN0aW9uID0gMywKICBrSlVTVHBjRHVjdGls
aXR5QWN0aW9uID0gNCwKICBrSlVTVHBjR2x5cGhSZXBlYXRBZGRBY3Rpb24gPSA1Cn07CgoKZW51
bSB7CiAga0pVU1RLYXNoaWRhUHJpb3JpdHkgPSAwLAogIGtKVVNUU3BhY2VQcmlvcml0eSA9IDEs
CiAga0pVU1RMZXR0ZXJQcmlvcml0eSA9IDIsCiAga0pVU1ROdWxsUHJpb3JpdHkgPSAzLAogIGtK
VVNUUHJpb3JpdHlDb3VudCA9IDQKfTsKCgplbnVtIHsKICBrSlVTVE92ZXJyaWRlUHJpb3JpdHkg
PSAweDgwMDAsCiAga0pVU1RPdmVycmlkZUxpbWl0cyA9IDB4NDAwMCwKICBrSlVTVE92ZXJyaWRl
VW5saW1pdGVkID0gMHgyMDAwLAogIGtKVVNUVW5saW1pdGVkID0gMHgxMDAwLAogIGtKVVNUUHJp
b3JpdHlNYXNrID0gMHgwMDAzCn07CgoKdHlwZWRlZiBVSW50MTYgSnVzdFBDQWN0aW9uVHlwZTsK
dHlwZWRlZiBVSW50MTYgSnVzdGlmaWNhdGlvbkZsYWdzOwoKc3RydWN0IEp1c3RQQ0RlY29tcG9z
aXRpb25BY3Rpb24gewogIEZpeGVkIGxvd2VyTGltaXQ7CiAgRml4ZWQgdXBwZXJMaW1pdDsKICBV
SW50MTYgb3JkZXI7CiAgVUludDE2IGNvdW50OwogIFVJbnQxNiBnbHlwaHNbMV07Cn07CnR5cGVk
ZWYgc3RydWN0IEp1c3RQQ0RlY29tcG9zaXRpb25BY3Rpb24gSnVzdFBDRGVjb21wb3NpdGlvbkFj
dGlvbjsKCgp0eXBlZGVmIFVJbnQxNiBKdXN0UENVbmNvbmRpdGlvbmFsQWRkQWN0aW9uOwoKCgoK
CnN0cnVjdCBKdXN0UENDb25kaXRpb25hbEFkZEFjdGlvbiB7CiAgRml4ZWQgc3Vic3RUaHJlc2ho
b2xkOwogIFVJbnQxNiBhZGRHbHlwaDsKICBVSW50MTYgc3Vic3RHbHlwaDsKfTsKdHlwZWRlZiBz
dHJ1Y3QgSnVzdFBDQ29uZGl0aW9uYWxBZGRBY3Rpb24gSnVzdFBDQ29uZGl0aW9uYWxBZGRBY3Rp
b247CgpzdHJ1Y3QgSnVzdFBDRHVjdGlsaXR5QWN0aW9uIHsKICBVSW50MzIgZHVjdGlsaXR5QXhp
czsKICBGaXhlZCBtaW5pbXVtTGltaXQ7CiAgRml4ZWQgbm9TdHJldGNoVmFsdWU7CiAgRml4ZWQg
bWF4aW11bUxpbWl0Owp9Owp0eXBlZGVmIHN0cnVjdCBKdXN0UENEdWN0aWxpdHlBY3Rpb24gSnVz
dFBDRHVjdGlsaXR5QWN0aW9uOwoKCgoKCnN0cnVjdCBKdXN0UENHbHlwaFJlcGVhdEFkZEFjdGlv
biB7CiAgVUludDE2IGZsYWdzOwogIFVJbnQxNiBnbHlwaDsKfTsKdHlwZWRlZiBzdHJ1Y3QgSnVz
dFBDR2x5cGhSZXBlYXRBZGRBY3Rpb24gSnVzdFBDR2x5cGhSZXBlYXRBZGRBY3Rpb247CgpzdHJ1
Y3QgSnVzdFBDQWN0aW9uU3VicmVjb3JkIHsKICBVSW50MTYgdGhlQ2xhc3M7CiAgSnVzdFBDQWN0
aW9uVHlwZSB0aGVUeXBlOwogIFVJbnQzMiBsZW5ndGg7CiAgVUludDMyIGRhdGE7Cn07CnR5cGVk
ZWYgc3RydWN0IEp1c3RQQ0FjdGlvblN1YnJlY29yZCBKdXN0UENBY3Rpb25TdWJyZWNvcmQ7Cgpz
dHJ1Y3QgSnVzdFBDQWN0aW9uIHsKICBVSW50MzIgYWN0aW9uQ291bnQ7CiAgSnVzdFBDQWN0aW9u
U3VicmVjb3JkIGFjdGlvbnNbMV07Cn07CnR5cGVkZWYgc3RydWN0IEp1c3RQQ0FjdGlvbiBKdXN0
UENBY3Rpb247CgoKCgpzdHJ1Y3QgSnVzdFdpZHRoRGVsdGFFbnRyeSB7CiAgVUludDMyIGp1c3RD
bGFzczsKICBGaXhlZCBiZWZvcmVHcm93TGltaXQ7CiAgRml4ZWQgYmVmb3JlU2hyaW5rTGltaXQ7
CiAgRml4ZWQgYWZ0ZXJHcm93TGltaXQ7CiAgRml4ZWQgYWZ0ZXJTaHJpbmtMaW1pdDsKICBKdXN0
aWZpY2F0aW9uRmxhZ3MgZ3Jvd0ZsYWdzOwogIEp1c3RpZmljYXRpb25GbGFncyBzaHJpbmtGbGFn
czsKfTsKdHlwZWRlZiBzdHJ1Y3QgSnVzdFdpZHRoRGVsdGFFbnRyeSBKdXN0V2lkdGhEZWx0YUVu
dHJ5OwpzdHJ1Y3QgSnVzdFdpZHRoRGVsdGFHcm91cCB7CiAgVUludDMyIGNvdW50OwogIEp1c3RX
aWR0aERlbHRhRW50cnkgZW50cmllc1sxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSnVzdFdpZHRoRGVs
dGFHcm91cCBKdXN0V2lkdGhEZWx0YUdyb3VwOwoKc3RydWN0IEp1c3RQb3N0Y29tcFRhYmxlIHsK
ICBTRk5UTG9va3VwVGFibGUgbG9va3VwVGFibGU7Cgp9Owp0eXBlZGVmIHN0cnVjdCBKdXN0UG9z
dGNvbXBUYWJsZSBKdXN0UG9zdGNvbXBUYWJsZTsKc3RydWN0IEp1c3REaXJlY3Rpb25UYWJsZSB7
CiAgVUludDE2IGp1c3RDbGFzczsKICBVSW50MTYgd2lkdGhEZWx0YUNsdXN0ZXJzOwogIFVJbnQx
NiBwb3N0Y29tcDsKICBTRk5UTG9va3VwVGFibGUgbG9va3VwOwp9Owp0eXBlZGVmIHN0cnVjdCBK
dXN0RGlyZWN0aW9uVGFibGUgSnVzdERpcmVjdGlvblRhYmxlOwpzdHJ1Y3QgSnVzdFRhYmxlIHsK
ICBGaXhlZCB2ZXJzaW9uOwogIFVJbnQxNiBmb3JtYXQ7CiAgVUludDE2IGhvcml6SGVhZGVyT2Zm
c2V0OwogIFVJbnQxNiB2ZXJ0SGVhZGVyT2Zmc2V0Owp9Owp0eXBlZGVmIHN0cnVjdCBKdXN0VGFi
bGUgSnVzdFRhYmxlOwoKCgplbnVtIHsKICBrT1BCRFRhZyA9IDB4NkY3MDYyNjQsCiAga09QQkRD
dXJyZW50VmVyc2lvbiA9IDB4MDAwMTAwMDAsCiAga09QQkREaXN0YW5jZUZvcm1hdCA9IDAsCiAg
a09QQkRDb250cm9sUG9pbnRGb3JtYXQgPSAxCn07CgoKCnR5cGVkZWYgVUludDE2IE9wYmRUYWJs
ZUZvcm1hdDsKCgoKCgpzdHJ1Y3QgT3BiZFNpZGVWYWx1ZXMgewogIFNJbnQxNiBsZWZ0U2lkZVNo
aWZ0OwogIFNJbnQxNiB0b3BTaWRlU2hpZnQ7CiAgU0ludDE2IHJpZ2h0U2lkZVNoaWZ0OwogIFNJ
bnQxNiBib3R0b21TaWRlU2hpZnQ7Cn07CnR5cGVkZWYgc3RydWN0IE9wYmRTaWRlVmFsdWVzIE9w
YmRTaWRlVmFsdWVzOwpzdHJ1Y3QgT3BiZFRhYmxlIHsKICBGaXhlZCB2ZXJzaW9uOwogIE9wYmRU
YWJsZUZvcm1hdCBmb3JtYXQ7CiAgU0ZOVExvb2t1cFRhYmxlIGxvb2t1cFRhYmxlOwp9Owp0eXBl
ZGVmIHN0cnVjdCBPcGJkVGFibGUgT3BiZFRhYmxlOwoKCgplbnVtIHsKICBrTU9SVFRhZyA9IDB4
NkQ2RjcyNzQsCiAga01PUlRDdXJyZW50VmVyc2lvbiA9IDB4MDAwMTAwMDAsCgogIGtNT1JUQ292
ZXJWZXJ0aWNhbCA9IDB4ODAwMCwKICBrTU9SVENvdmVyRGVzY2VuZGluZyA9IDB4NDAwMCwKICBr
TU9SVENvdmVySWdub3JlVmVydGljYWwgPSAweDIwMDAsCiAga01PUlRDb3ZlclR5cGVNYXNrID0g
MHgwMDBGLAogIGtNT1JUUmVhcnJhbmdlbWVudFR5cGUgPSAwLAogIGtNT1JUQ29udGV4dHVhbFR5
cGUgPSAxLAogIGtNT1JUTGlnYXR1cmVUeXBlID0gMiwKICBrTU9SVFN3YXNoVHlwZSA9IDQsCiAg
a01PUlRJbnNlcnRpb25UeXBlID0gNSwKICBrTU9SVExpZ0xhc3RBY3Rpb24gPSAoaW50KTB4ODAw
MDAwMDAsCiAga01PUlRMaWdTdG9yZUxpZ2F0dXJlID0gMHg0MDAwMDAwMCwKICBrTU9SVExpZ0Zv
cm1PZmZzZXRNYXNrID0gMHgzRkZGRkZGRiwKICBrTU9SVExpZ0Zvcm1PZmZzZXRTaGlmdCA9IDIs
CiAga01PUlRyYU5vQWN0aW9uID0gMCwKICBrTU9SVHJheEEgPSAxLAogIGtNT1JUcmFEeCA9IDIs
CiAga01PUlRyYUR4QSA9IDMsCiAga01PUlRyYXhBQiA9IDQsCiAga01PUlRyYXhCQSA9IDUsCiAg
a01PUlRyYUNEeCA9IDYsCiAga01PUlRyYURDeCA9IDcsCiAga01PUlRyYUNEeEEgPSA4LAogIGtN
T1JUcmFEQ3hBID0gOSwKICBrTU9SVHJhRHhBQiA9IDEwLAogIGtNT1JUcmFEeEJBID0gMTEsCiAg
a01PUlRyYUNEeEFCID0gMTIsCiAga01PUlRyYUNEeEJBID0gMTMsCiAga01PUlRyYURDeEFCID0g
MTQsCiAga01PUlRyYURDeEJBID0gMTUsCgogIGtNT1JURG9JbnNlcnRpb25zQmVmb3JlID0gMHg4
MCwKICBrTU9SVElzU3BsaXRWb3dlbFBpZWNlID0gMHg0MCwKICBrTU9SVEluc2VydGlvbnNDb3Vu
dE1hc2sgPSAweDNGLAogIGtNT1JUQ3Vyckluc2VydEthc2hpZGFMaWtlID0gMHgyMDAwLAogIGtN
T1JUTWFya0luc2VydEthc2hpZGFMaWtlID0gMHgxMDAwLAogIGtNT1JUQ3Vyckluc2VydEJlZm9y
ZSA9IDB4MDgwMCwKICBrTU9SVE1hcmtJbnNlcnRCZWZvcmUgPSAweDA0MDAsCiAga01PUlRNYXJr
SnVzdFRhYmxlQ291bnRNYXNrID0gMHgzRjgwLAogIGtNT1JUTWFya0p1c3RUYWJsZUNvdW50U2hp
ZnQgPSA3LAogIGtNT1JUQ3Vyckp1c3RUYWJsZUNvdW50TWFzayA9IDB4MDA3RiwKICBrTU9SVEN1
cnJKdXN0VGFibGVDb3VudFNoaWZ0ID0gMCwKICBrTU9SVEN1cnJJbnNlcnRDb3VudE1hc2sgPSAw
eDAzRTAsCiAga01PUlRDdXJySW5zZXJ0Q291bnRTaGlmdCA9IDUsCiAga01PUlRNYXJrSW5zZXJ0
Q291bnRNYXNrID0gMHgwMDFGLAogIGtNT1JUTWFya0luc2VydENvdW50U2hpZnQgPSAwCn07CgoK
CnR5cGVkZWYgVUludDMyIE1vcnRTdWJ0YWJsZU1hc2tGbGFnczsKdHlwZWRlZiBVSW50MzIgTW9y
dExpZ2F0dXJlQWN0aW9uRW50cnk7CnN0cnVjdCBNb3J0UmVhcnJhbmdlbWVudFN1YnRhYmxlIHsK
ICBTVEhlYWRlciBoZWFkZXI7Cn07CnR5cGVkZWYgc3RydWN0IE1vcnRSZWFycmFuZ2VtZW50U3Vi
dGFibGUgTW9ydFJlYXJyYW5nZW1lbnRTdWJ0YWJsZTsKc3RydWN0IE1vcnRDb250ZXh0dWFsU3Vi
dGFibGUgewogIFNUSGVhZGVyIGhlYWRlcjsKICBVSW50MTYgc3Vic3RpdHV0aW9uVGFibGVPZmZz
ZXQ7Cn07CnR5cGVkZWYgc3RydWN0IE1vcnRDb250ZXh0dWFsU3VidGFibGUgTW9ydENvbnRleHR1
YWxTdWJ0YWJsZTsKc3RydWN0IE1vcnRMaWdhdHVyZVN1YnRhYmxlIHsKICBTVEhlYWRlciBoZWFk
ZXI7CiAgVUludDE2IGxpZ2F0dXJlQWN0aW9uVGFibGVPZmZzZXQ7CiAgVUludDE2IGNvbXBvbmVu
dFRhYmxlT2Zmc2V0OwogIFVJbnQxNiBsaWdhdHVyZVRhYmxlT2Zmc2V0Owp9Owp0eXBlZGVmIHN0
cnVjdCBNb3J0TGlnYXR1cmVTdWJ0YWJsZSBNb3J0TGlnYXR1cmVTdWJ0YWJsZTsKc3RydWN0IE1v
cnRTd2FzaFN1YnRhYmxlIHsKICBTRk5UTG9va3VwVGFibGUgbG9va3VwOwp9Owp0eXBlZGVmIHN0
cnVjdCBNb3J0U3dhc2hTdWJ0YWJsZSBNb3J0U3dhc2hTdWJ0YWJsZTsKc3RydWN0IE1vcnRJbnNl
cnRpb25TdWJ0YWJsZSB7CiAgU1RIZWFkZXIgaGVhZGVyOwp9Owp0eXBlZGVmIHN0cnVjdCBNb3J0
SW5zZXJ0aW9uU3VidGFibGUgTW9ydEluc2VydGlvblN1YnRhYmxlOwp1bmlvbiBNb3J0U3BlY2lm
aWNTdWJ0YWJsZSB7CiAgTW9ydFJlYXJyYW5nZW1lbnRTdWJ0YWJsZSByZWFycmFuZ2VtZW50Owog
IE1vcnRDb250ZXh0dWFsU3VidGFibGUgY29udGV4dHVhbDsKICBNb3J0TGlnYXR1cmVTdWJ0YWJs
ZSBsaWdhdHVyZTsKICBNb3J0U3dhc2hTdWJ0YWJsZSBzd2FzaDsKICBNb3J0SW5zZXJ0aW9uU3Vi
dGFibGUgaW5zZXJ0aW9uOwp9Owp0eXBlZGVmIHVuaW9uIE1vcnRTcGVjaWZpY1N1YnRhYmxlIE1v
cnRTcGVjaWZpY1N1YnRhYmxlOwpzdHJ1Y3QgTW9ydFN1YnRhYmxlIHsKICBVSW50MTYgbGVuZ3Ro
OwogIFVJbnQxNiBjb3ZlcmFnZTsKICBNb3J0U3VidGFibGVNYXNrRmxhZ3MgZmxhZ3M7CiAgTW9y
dFNwZWNpZmljU3VidGFibGUgdTsKfTsKdHlwZWRlZiBzdHJ1Y3QgTW9ydFN1YnRhYmxlIE1vcnRT
dWJ0YWJsZTsKc3RydWN0IE1vcnRGZWF0dXJlRW50cnkgewogIFVJbnQxNiBmZWF0dXJlVHlwZTsK
ICBVSW50MTYgZmVhdHVyZVNlbGVjdG9yOwogIE1vcnRTdWJ0YWJsZU1hc2tGbGFncyBlbmFibGVG
bGFnczsKICBNb3J0U3VidGFibGVNYXNrRmxhZ3MgZGlzYWJsZUZsYWdzOwp9Owp0eXBlZGVmIHN0
cnVjdCBNb3J0RmVhdHVyZUVudHJ5IE1vcnRGZWF0dXJlRW50cnk7CnN0cnVjdCBNb3J0Q2hhaW4g
ewogIE1vcnRTdWJ0YWJsZU1hc2tGbGFncyBkZWZhdWx0RmxhZ3M7CiAgVUludDMyIGxlbmd0aDsK
ICBVSW50MTYgbkZlYXR1cmVzOwogIFVJbnQxNiBuU3VidGFibGVzOwogIE1vcnRGZWF0dXJlRW50
cnkgZmVhdHVyZUVudHJpZXNbMV07Cgp9Owp0eXBlZGVmIHN0cnVjdCBNb3J0Q2hhaW4gTW9ydENo
YWluOwpzdHJ1Y3QgTW9ydFRhYmxlIHsKICBGaXhlZCB2ZXJzaW9uOwogIFVJbnQzMiBuQ2hhaW5z
OwogIE1vcnRDaGFpbiBjaGFpbnNbMV07Cn07CnR5cGVkZWYgc3RydWN0IE1vcnRUYWJsZSBNb3J0
VGFibGU7CgoKCmVudW0gewogIGtNT1JYVGFnID0gMHg2RDZGNzI3OCwKICBrTU9SWEN1cnJlbnRW
ZXJzaW9uID0gMHgwMDAyMDAwMCwKCiAga01PUlhDb3ZlclZlcnRpY2FsID0gKGludCkweDgwMDAw
MDAwLAogIGtNT1JYQ292ZXJEZXNjZW5kaW5nID0gMHg0MDAwMDAwMCwKICBrTU9SWENvdmVySWdu
b3JlVmVydGljYWwgPSAweDIwMDAwMDAwLAogIGtNT1JYQ292ZXJUeXBlTWFzayA9IDB4MDAwMDAw
RkYKfTsKCgpzdHJ1Y3QgTW9yeFJlYXJyYW5nZW1lbnRTdWJ0YWJsZSB7CiAgU1RYSGVhZGVyIGhl
YWRlcjsKfTsKdHlwZWRlZiBzdHJ1Y3QgTW9yeFJlYXJyYW5nZW1lbnRTdWJ0YWJsZSBNb3J4UmVh
cnJhbmdlbWVudFN1YnRhYmxlOwpzdHJ1Y3QgTW9yeENvbnRleHR1YWxTdWJ0YWJsZSB7CiAgU1RY
SGVhZGVyIGhlYWRlcjsKICBVSW50MzIgc3Vic3RpdHV0aW9uVGFibGVPZmZzZXQ7Cn07CnR5cGVk
ZWYgc3RydWN0IE1vcnhDb250ZXh0dWFsU3VidGFibGUgTW9yeENvbnRleHR1YWxTdWJ0YWJsZTsK
c3RydWN0IE1vcnhMaWdhdHVyZVN1YnRhYmxlIHsKICBTVFhIZWFkZXIgaGVhZGVyOwogIFVJbnQz
MiBsaWdhdHVyZUFjdGlvblRhYmxlT2Zmc2V0OwogIFVJbnQzMiBjb21wb25lbnRUYWJsZU9mZnNl
dDsKICBVSW50MzIgbGlnYXR1cmVUYWJsZU9mZnNldDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTW9yeExp
Z2F0dXJlU3VidGFibGUgTW9yeExpZ2F0dXJlU3VidGFibGU7CnN0cnVjdCBNb3J4SW5zZXJ0aW9u
U3VidGFibGUgewogIFNUWEhlYWRlciBoZWFkZXI7CiAgVUludDMyIGluc2VydGlvbkdseXBoVGFi
bGVPZmZzZXQ7Cn07CnR5cGVkZWYgc3RydWN0IE1vcnhJbnNlcnRpb25TdWJ0YWJsZSBNb3J4SW5z
ZXJ0aW9uU3VidGFibGU7CnVuaW9uIE1vcnhTcGVjaWZpY1N1YnRhYmxlIHsKICBNb3J4UmVhcnJh
bmdlbWVudFN1YnRhYmxlIHJlYXJyYW5nZW1lbnQ7CiAgTW9yeENvbnRleHR1YWxTdWJ0YWJsZSBj
b250ZXh0dWFsOwogIE1vcnhMaWdhdHVyZVN1YnRhYmxlIGxpZ2F0dXJlOwogIE1vcnRTd2FzaFN1
YnRhYmxlIHN3YXNoOwogIE1vcnhJbnNlcnRpb25TdWJ0YWJsZSBpbnNlcnRpb247Cn07CnR5cGVk
ZWYgdW5pb24gTW9yeFNwZWNpZmljU3VidGFibGUgTW9yeFNwZWNpZmljU3VidGFibGU7CnN0cnVj
dCBNb3J4U3VidGFibGUgewogIFVJbnQzMiBsZW5ndGg7CiAgVUludDMyIGNvdmVyYWdlOwogIE1v
cnRTdWJ0YWJsZU1hc2tGbGFncyBmbGFnczsKICBNb3J4U3BlY2lmaWNTdWJ0YWJsZSB1Owp9Owp0
eXBlZGVmIHN0cnVjdCBNb3J4U3VidGFibGUgTW9yeFN1YnRhYmxlOwpzdHJ1Y3QgTW9yeENoYWlu
IHsKICBNb3J0U3VidGFibGVNYXNrRmxhZ3MgZGVmYXVsdEZsYWdzOwogIFVJbnQzMiBsZW5ndGg7
CiAgVUludDMyIG5GZWF0dXJlczsKICBVSW50MzIgblN1YnRhYmxlczsKICBNb3J0RmVhdHVyZUVu
dHJ5IGZlYXR1cmVFbnRyaWVzWzFdOwoKfTsKdHlwZWRlZiBzdHJ1Y3QgTW9yeENoYWluIE1vcnhD
aGFpbjsKc3RydWN0IE1vcnhUYWJsZSB7CiAgRml4ZWQgdmVyc2lvbjsKICBVSW50MzIgbkNoYWlu
czsKICBNb3J4Q2hhaW4gY2hhaW5zWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBNb3J4VGFibGUgTW9y
eFRhYmxlOwoKCgplbnVtIHsKICBrUFJPUFRhZyA9IDB4NzA3MjZGNzAsCiAga1BST1BDdXJyZW50
VmVyc2lvbiA9IDB4MDAwMzAwMDAsCiAga1BST1BQYWlyT2Zmc2V0U2hpZnQgPSA4LAogIGtQUk9Q
UGFpck9mZnNldFNpZ24gPSA3LAogIGtQUk9QSXNGbG9hdGVyTWFzayA9IDB4ODAwMCwKICBrUFJP
UENhbkhhbmdMVE1hc2sgPSAweDQwMDAsCiAga1BST1BDYW5IYW5nUkJNYXNrID0gMHgyMDAwLAog
IGtQUk9QVXNlUkxQYWlyTWFzayA9IDB4MTAwMCwKICBrUFJPUFBhaXJPZmZzZXRNYXNrID0gMHgw
RjAwLAogIGtQUk9QUmlnaHRDb25uZWN0TWFzayA9IDB4MDA4MCwKICBrUFJPUFplcm9SZXNlcnZl
ZCA9IDB4MDA2MCwKICBrUFJPUERpcmVjdGlvbk1hc2sgPSAweDAwMUYKfTsKCgplbnVtIHsKICBr
UFJPUExEaXJlY3Rpb25DbGFzcyA9IDAsCiAga1BST1BSRGlyZWN0aW9uQ2xhc3MgPSAxLAogIGtQ
Uk9QQUxEaXJlY3Rpb25DbGFzcyA9IDIsCiAga1BST1BFTkRpcmVjdGlvbkNsYXNzID0gMywKICBr
UFJPUEVTRGlyZWN0aW9uQ2xhc3MgPSA0LAogIGtQUk9QRVREaXJlY3Rpb25DbGFzcyA9IDUsCiAg
a1BST1BBTkRpcmVjdGlvbkNsYXNzID0gNiwKICBrUFJPUENTRGlyZWN0aW9uQ2xhc3MgPSA3LAog
IGtQUk9QUFNEaXJlY3Rpb25DbGFzcyA9IDgsCiAga1BST1BTRGlyZWN0aW9uQ2xhc3MgPSA5LAog
IGtQUk9QV1NEaXJlY3Rpb25DbGFzcyA9IDEwLAogIGtQUk9QT05EaXJlY3Rpb25DbGFzcyA9IDEx
LAogIGtQUk9QU0VORGlyZWN0aW9uQ2xhc3MgPSAxMiwKICBrUFJPUExSRURpcmVjdGlvbkNsYXNz
ID0gMTMsCiAga1BST1BMUk9EaXJlY3Rpb25DbGFzcyA9IDE0LAogIGtQUk9QUkxFRGlyZWN0aW9u
Q2xhc3MgPSAxNSwKICBrUFJPUFJMT0RpcmVjdGlvbkNsYXNzID0gMTYsCiAga1BST1BQREZEaXJl
Y3Rpb25DbGFzcyA9IDE3LAogIGtQUk9QTlNNRGlyZWN0aW9uQ2xhc3MgPSAxOCwKICBrUFJPUEJO
RGlyZWN0aW9uQ2xhc3MgPSAxOSwKICBrUFJPUE51bURpcmVjdGlvbkNsYXNzZXMgPSAyMAp9OwoK
Cgp0eXBlZGVmIFVJbnQxNiBQcm9wQ2hhclByb3BlcnRpZXM7CnN0cnVjdCBQcm9wVGFibGUgewog
IEZpeGVkIHZlcnNpb247CiAgVUludDE2IGZvcm1hdDsKICBQcm9wQ2hhclByb3BlcnRpZXMgZGVm
YXVsdFByb3BzOwogIFNGTlRMb29rdXBUYWJsZSBsb29rdXA7Cn07CnR5cGVkZWYgc3RydWN0IFBy
b3BUYWJsZSBQcm9wVGFibGU7CnN0cnVjdCBQcm9wTG9va3VwU2VnbWVudCB7CiAgVUludDE2IGxh
c3RHbHlwaDsKICBVSW50MTYgZmlyc3RHbHlwaDsKICBVSW50MTYgdmFsdWU7Cn07CnR5cGVkZWYg
c3RydWN0IFByb3BMb29rdXBTZWdtZW50IFByb3BMb29rdXBTZWdtZW50OwpzdHJ1Y3QgUHJvcExv
b2t1cFNpbmdsZSB7CiAgVUludDE2IGdseXBoOwogIFByb3BDaGFyUHJvcGVydGllcyBwcm9wczsK
fTsKdHlwZWRlZiBzdHJ1Y3QgUHJvcExvb2t1cFNpbmdsZSBQcm9wTG9va3VwU2luZ2xlOwoKCgpl
bnVtIHsKICBrVFJBS1RhZyA9IDB4NzQ3MjYxNkIsCiAga1RSQUtDdXJyZW50VmVyc2lvbiA9IDB4
MDAwMTAwMDAsCiAga1RSQUtVbmlmb3JtRm9ybWF0ID0gMAp9OwoKCgp0eXBlZGVmIFNJbnQxNiBU
cmFrVmFsdWU7CnN0cnVjdCBUcmFrVGFibGVFbnRyeSB7CiAgRml4ZWQgdHJhY2s7CiAgVUludDE2
IG5hbWVUYWJsZUluZGV4OwogIFVJbnQxNiBzaXplc09mZnNldDsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
VHJha1RhYmxlRW50cnkgVHJha1RhYmxlRW50cnk7CnN0cnVjdCBUcmFrVGFibGVEYXRhIHsKICBV
SW50MTYgblRyYWNrczsKICBVSW50MTYgblNpemVzOwogIFVJbnQzMiBzaXplVGFibGVPZmZzZXQ7
CiAgVHJha1RhYmxlRW50cnkgdHJha1RhYmxlWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBUcmFrVGFi
bGVEYXRhIFRyYWtUYWJsZURhdGE7CnN0cnVjdCBUcmFrVGFibGUgewogIEZpeGVkIHZlcnNpb247
CiAgVUludDE2IGZvcm1hdDsKICBVSW50MTYgaG9yaXpPZmZzZXQ7CiAgVUludDE2IHZlcnRPZmZz
ZXQ7Cn07CnR5cGVkZWYgc3RydWN0IFRyYWtUYWJsZSBUcmFrVGFibGU7CgoKCmVudW0gewogIGtL
RVJOVGFnID0gMHg2QjY1NzI2RSwKICBrS0VSTkN1cnJlbnRWZXJzaW9uID0gMHgwMDAxMDAwMCwK
ICBrS0VSTlZlcnRpY2FsID0gMHg4MDAwLAogIGtLRVJOUmVzZXRDcm9zc1N0cmVhbSA9IDB4ODAw
MCwKICBrS0VSTkNyb3NzU3RyZWFtID0gMHg0MDAwLAogIGtLRVJOVmFyaWF0aW9uID0gMHgyMDAw
LAogIGtLRVJOVW51c2VkQml0cyA9IDB4MUYwMCwKICBrS0VSTkZvcm1hdE1hc2sgPSAweDAwRkYK
fTsKCmVudW0gewogIGtLRVJOT3JkZXJlZExpc3QgPSAwLAogIGtLRVJOU3RhdGVUYWJsZSA9IDEs
CiAga0tFUk5TaW1wbGVBcnJheSA9IDIsCiAga0tFUk5JbmRleEFycmF5ID0gMwp9OwoKCmVudW0g
ewogIGtLRVJOTGluZVN0YXJ0ID0gMHgwMDAwMDAwMSwKICBrS0VSTkxpbmVFbmRLZXJuaW5nID0g
MHgwMDAwMDAwMiwKICBrS0VSTk5vQ3Jvc3NLZXJuaW5nID0gMHgwMDAwMDAwNCwKICBrS0VSTk5v
dGVzUmVxdWVzdGVkID0gMHgwMDAwMDAwOCwKICBrS0VSTk5vU3Rha2VOb3RlID0gMSwKICBrS0VS
TkNyb3NzU3RyZWFtUmVzZXROb3RlID0gMiwKICBrS0VSTk5vdEFwcGxpZWQgPSAweDAwMDAwMDAx
Cn07CgoKCnR5cGVkZWYgVUludDggS2VyblRhYmxlRm9ybWF0Owp0eXBlZGVmIFVJbnQxNiBLZXJu
U3VidGFibGVJbmZvOwp0eXBlZGVmIFNJbnQxNiBLZXJuS2VybmluZ1ZhbHVlOwp0eXBlZGVmIFVJ
bnQxNiBLZXJuQXJyYXlPZmZzZXQ7CgpzdHJ1Y3QgS2VyblZlcnNpb24wSGVhZGVyIHsKICBVSW50
MTYgdmVyc2lvbjsKICBVSW50MTYgblRhYmxlczsKICBVSW50MTYgZmlyc3RTdWJ0YWJsZVsxXTsK
fTsKdHlwZWRlZiBzdHJ1Y3QgS2VyblZlcnNpb24wSGVhZGVyIEtlcm5WZXJzaW9uMEhlYWRlcjsK
CnN0cnVjdCBLZXJuVGFibGVIZWFkZXIgewogIEZpeGVkIHZlcnNpb247CiAgU0ludDMyIG5UYWJs
ZXM7CiAgVUludDE2IGZpcnN0U3VidGFibGVbMV07Cn07CnR5cGVkZWYgc3RydWN0IEtlcm5UYWJs
ZUhlYWRlciBLZXJuVGFibGVIZWFkZXI7CnR5cGVkZWYgS2VyblRhYmxlSGVhZGVyICogS2VyblRh
YmxlSGVhZGVyUHRyOwp0eXBlZGVmIEtlcm5UYWJsZUhlYWRlclB0ciAqIEtlcm5UYWJsZUhlYWRl
ckhhbmRsZTsKIyAxMjIxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9TRk5UTGF5
b3V0VHlwZXMuaCIgMwpzdHJ1Y3QgS2Vybktlcm5pbmdQYWlyIHsKICBVSW50MTYgbGVmdDsKICBV
SW50MTYgcmlnaHQ7Cn07CnR5cGVkZWYgc3RydWN0IEtlcm5LZXJuaW5nUGFpciBLZXJuS2Vybmlu
Z1BhaXI7CgpzdHJ1Y3QgS2Vybk9yZGVyZWRMaXN0RW50cnkgewogIEtlcm5LZXJuaW5nUGFpciBw
YWlyOwogIEtlcm5LZXJuaW5nVmFsdWUgdmFsdWU7Cn07CnR5cGVkZWYgc3RydWN0IEtlcm5PcmRl
cmVkTGlzdEVudHJ5IEtlcm5PcmRlcmVkTGlzdEVudHJ5Owp0eXBlZGVmIEtlcm5PcmRlcmVkTGlz
dEVudHJ5ICogS2Vybk9yZGVyZWRMaXN0RW50cnlQdHI7CgpzdHJ1Y3QgS2Vybk9yZGVyZWRMaXN0
SGVhZGVyIHsKICBVSW50MTYgblBhaXJzOwogIFVJbnQxNiBzZWFyY2hSYW5nZTsKICBVSW50MTYg
ZW50cnlTZWxlY3RvcjsKICBVSW50MTYgcmFuZ2VTaGlmdDsKICBVSW50MTYgdGFibGVbMV07Cn07
CnR5cGVkZWYgc3RydWN0IEtlcm5PcmRlcmVkTGlzdEhlYWRlciBLZXJuT3JkZXJlZExpc3RIZWFk
ZXI7CgpzdHJ1Y3QgS2VyblN0YXRlSGVhZGVyIHsKICBTVEhlYWRlciBoZWFkZXI7CiAgVUludDE2
IHZhbHVlVGFibGU7CiAgVUludDggZmlyc3RUYWJsZVsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgS2Vy
blN0YXRlSGVhZGVyIEtlcm5TdGF0ZUhlYWRlcjsKc3RydWN0IEtlcm5TdGF0ZUVudHJ5IHsKICBV
SW50MTYgbmV3U3RhdGU7CiAgVUludDE2IGZsYWdzOwp9Owp0eXBlZGVmIHN0cnVjdCBLZXJuU3Rh
dGVFbnRyeSBLZXJuU3RhdGVFbnRyeTsKCgoKCgoKc3RydWN0IEtlcm5PZmZzZXRUYWJsZSB7CiAg
VUludDE2IGZpcnN0R2x5cGg7CiAgVUludDE2IG5HbHlwaHM7CiAgS2VybkFycmF5T2Zmc2V0IG9m
ZnNldFRhYmxlWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBLZXJuT2Zmc2V0VGFibGUgS2Vybk9mZnNl
dFRhYmxlOwp0eXBlZGVmIEtlcm5PZmZzZXRUYWJsZSAqIEtlcm5PZmZzZXRUYWJsZVB0cjsKIyAx
Mjg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9TRk5UTGF5b3V0VHlwZXMuaCIg
MwpzdHJ1Y3QgS2VyblNpbXBsZUFycmF5SGVhZGVyIHsKICBVSW50MTYgcm93V2lkdGg7CiAgVUlu
dDE2IGxlZnRPZmZzZXRUYWJsZTsKICBVSW50MTYgcmlnaHRPZmZzZXRUYWJsZTsKICBLZXJuQXJy
YXlPZmZzZXQgdGhlQXJyYXk7CiAgVUludDE2IGZpcnN0VGFibGVbMV07Cn07CnR5cGVkZWYgc3Ry
dWN0IEtlcm5TaW1wbGVBcnJheUhlYWRlciBLZXJuU2ltcGxlQXJyYXlIZWFkZXI7CgpzdHJ1Y3Qg
S2VybkluZGV4QXJyYXlIZWFkZXIgewogIFVJbnQxNiBnbHlwaENvdW50OwogIFVJbnQ4IGtlcm5W
YWx1ZUNvdW50OwogIFVJbnQ4IGxlZnRDbGFzc0NvdW50OwogIFVJbnQ4IHJpZ2h0Q2xhc3NDb3Vu
dDsKICBVSW50OCBmbGFnczsKICBTSW50MTYga2VyblZhbHVlWzFdOwogIFVJbnQ4IGxlZnRDbGFz
c1sxXTsKICBVSW50OCByaWdodENsYXNzWzFdOwogIFVJbnQ4IGtlcm5JbmRleFsxXTsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgS2VybkluZGV4QXJyYXlIZWFkZXIgS2VybkluZGV4QXJyYXlIZWFkZXI7Cgp1
bmlvbiBLZXJuRm9ybWF0U3BlY2lmaWNIZWFkZXIgewogIEtlcm5PcmRlcmVkTGlzdEhlYWRlciBv
cmRlcmVkTGlzdDsKICBLZXJuU3RhdGVIZWFkZXIgc3RhdGVUYWJsZTsKICBLZXJuU2ltcGxlQXJy
YXlIZWFkZXIgc2ltcGxlQXJyYXk7CiAgS2VybkluZGV4QXJyYXlIZWFkZXIgaW5kZXhBcnJheTsK
fTsKdHlwZWRlZiB1bmlvbiBLZXJuRm9ybWF0U3BlY2lmaWNIZWFkZXIgS2VybkZvcm1hdFNwZWNp
ZmljSGVhZGVyOwoKc3RydWN0IEtlcm5WZXJzaW9uMFN1YnRhYmxlSGVhZGVyIHsKICBVSW50MTYg
dmVyc2lvbjsKICBVSW50MTYgbGVuZ3RoOwogIEtlcm5TdWJ0YWJsZUluZm8gc3RJbmZvOwogIEtl
cm5Gb3JtYXRTcGVjaWZpY0hlYWRlciBmc0hlYWRlcjsKfTsKdHlwZWRlZiBzdHJ1Y3QgS2VyblZl
cnNpb24wU3VidGFibGVIZWFkZXIgS2VyblZlcnNpb24wU3VidGFibGVIZWFkZXI7CgpzdHJ1Y3Qg
S2VyblN1YnRhYmxlSGVhZGVyIHsKICBTSW50MzIgbGVuZ3RoOwogIEtlcm5TdWJ0YWJsZUluZm8g
c3RJbmZvOwogIFNJbnQxNiB0dXBsZUluZGV4OwogIEtlcm5Gb3JtYXRTcGVjaWZpY0hlYWRlciBm
c0hlYWRlcjsKfTsKdHlwZWRlZiBzdHJ1Y3QgS2VyblN1YnRhYmxlSGVhZGVyIEtlcm5TdWJ0YWJs
ZUhlYWRlcjsKdHlwZWRlZiBLZXJuU3VidGFibGVIZWFkZXIgKiBLZXJuU3VidGFibGVIZWFkZXJQ
dHI7CgoKCmVudW0gewogIGtCU0xOVGFnID0gMHg2MjczNkM2RSwKICBrQlNMTkN1cnJlbnRWZXJz
aW9uID0gMHgwMDAxMDAwMCwKICBrQlNMTkRpc3RhbmNlRm9ybWF0Tm9NYXAgPSAwLAogIGtCU0xO
RGlzdGFuY2VGb3JtYXRXaXRoTWFwID0gMSwKICBrQlNMTkNvbnRyb2xQb2ludEZvcm1hdE5vTWFw
ID0gMiwKICBrQlNMTkNvbnRyb2xQb2ludEZvcm1hdFdpdGhNYXAgPSAzCn07CgoKZW51bSB7CiAg
a0JTTE5Sb21hbkJhc2VsaW5lID0gMCwKICBrQlNMTklkZW9ncmFwaGljQ2VudGVyQmFzZWxpbmUg
PSAxLAogIGtCU0xOSWRlb2dyYXBoaWNMb3dCYXNlbGluZSA9IDIsCiAga0JTTE5IYW5naW5nQmFz
ZWxpbmUgPSAzLAogIGtCU0xOTWF0aEJhc2VsaW5lID0gNCwKICBrQlNMTkxhc3RCYXNlbGluZSA9
IDMxLAogIGtCU0xOTnVtQmFzZWxpbmVDbGFzc2VzID0ga0JTTE5MYXN0QmFzZWxpbmUgKyAxLAog
IGtCU0xOTm9CYXNlbGluZU92ZXJyaWRlID0gMjU1Cn07CgoKdHlwZWRlZiBVSW50MzIgQnNsbkJh
c2VsaW5lQ2xhc3M7Cgp0eXBlZGVmIEZpeGVkIEJzbG5CYXNlbGluZVJlY29yZFszMl07CgoKCgpz
dHJ1Y3QgQnNsbkZvcm1hdDBQYXJ0IHsKICBTSW50MTYgZGVsdGFzWzMyXTsKfTsKdHlwZWRlZiBz
dHJ1Y3QgQnNsbkZvcm1hdDBQYXJ0IEJzbG5Gb3JtYXQwUGFydDsKCnN0cnVjdCBCc2xuRm9ybWF0
MVBhcnQgewogIFNJbnQxNiBkZWx0YXNbMzJdOwogIFNGTlRMb29rdXBUYWJsZSBtYXBwaW5nRGF0
YTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQnNsbkZvcm1hdDFQYXJ0IEJzbG5Gb3JtYXQxUGFydDsKCgoK
CgoKc3RydWN0IEJzbG5Gb3JtYXQyUGFydCB7CiAgVUludDE2IHN0ZEdseXBoOwogIFNJbnQxNiBj
dGxQb2ludHNbMzJdOwp9Owp0eXBlZGVmIHN0cnVjdCBCc2xuRm9ybWF0MlBhcnQgQnNsbkZvcm1h
dDJQYXJ0OwoKCgoKCnN0cnVjdCBCc2xuRm9ybWF0M1BhcnQgewogIFVJbnQxNiBzdGRHbHlwaDsK
ICBTSW50MTYgY3RsUG9pbnRzWzMyXTsKICBTRk5UTG9va3VwVGFibGUgbWFwcGluZ0RhdGE7Cn07
CnR5cGVkZWYgc3RydWN0IEJzbG5Gb3JtYXQzUGFydCBCc2xuRm9ybWF0M1BhcnQ7Cgp1bmlvbiBC
c2xuRm9ybWF0VW5pb24gewogIEJzbG5Gb3JtYXQwUGFydCBmbXQwUGFydDsKICBCc2xuRm9ybWF0
MVBhcnQgZm10MVBhcnQ7CiAgQnNsbkZvcm1hdDJQYXJ0IGZtdDJQYXJ0OwogIEJzbG5Gb3JtYXQz
UGFydCBmbXQzUGFydDsKfTsKdHlwZWRlZiB1bmlvbiBCc2xuRm9ybWF0VW5pb24gQnNsbkZvcm1h
dFVuaW9uOwoKCnR5cGVkZWYgVUludDE2IEJzbG5UYWJsZUZvcm1hdDsKCnN0cnVjdCBCc2xuVGFi
bGUgewogIEZpeGVkIHZlcnNpb247CiAgQnNsblRhYmxlRm9ybWF0IGZvcm1hdDsKICBVSW50MTYg
ZGVmYXVsdEJhc2VsaW5lOwogIEJzbG5Gb3JtYXRVbmlvbiBwYXJ0czsKfTsKdHlwZWRlZiBzdHJ1
Y3QgQnNsblRhYmxlIEJzbG5UYWJsZTsKdHlwZWRlZiBCc2xuVGFibGUgKiBCc2xuVGFibGVQdHI7
CgoKCnN0cnVjdCBBTE1YSGVhZGVyIHsKICBGaXhlZCBWZXJzaW9uOwogIFVJbnQxNiBGbGFnczsK
ICBVSW50MTYgTk1hc3RlcnM7CiAgVUludDE2IEZpcnN0R2x5cGg7CiAgVUludDE2IExhc3RHbHlw
aDsKCiAgU0ZOVExvb2t1cFRhYmxlIGxvb2t1cDsKfTsKdHlwZWRlZiBzdHJ1Y3QgQUxNWEhlYWRl
ciBBTE1YSGVhZGVyOwpzdHJ1Y3QgQUxNWEdseXBoRW50cnkgewogIFNJbnQxNiBHbHlwaEluZGV4
T2Zmc2V0OwogIFNJbnQxNiBIb3Jpem9udGFsQWR2YW5jZTsKICBTSW50MTYgWE9mZnNldFRvSE9y
aWdpbjsKICBTSW50MTYgVmVydGljYWxBZHZhbmNlOwogIFNJbnQxNiBZT2Zmc2V0VG9WT3JpZ2lu
Owp9Owp0eXBlZGVmIHN0cnVjdCBBTE1YR2x5cGhFbnRyeSBBTE1YR2x5cGhFbnRyeTsKCgoKc3Ry
dWN0IFJPVEFIZWFkZXIgewogIEZpeGVkIFZlcnNpb247CiAgVUludDE2IEZsYWdzOwogIFVJbnQx
NiBOTWFzdGVyczsKICBVSW50MTYgRmlyc3RHbHlwaDsKICBVSW50MTYgTGFzdEdseXBoOwoKICBT
Rk5UTG9va3VwVGFibGUgbG9va3VwOwp9Owp0eXBlZGVmIHN0cnVjdCBST1RBSGVhZGVyIFJPVEFI
ZWFkZXI7CnN0cnVjdCBST1RBR2x5cGhFbnRyeSB7CiAgU0ludDE2IEdseXBoSW5kZXhPZmZzZXQ7
CiAgU0ludDE2IEhCYXNlbGluZU9mZnNldDsKICBTSW50MTYgVkJhc2VsaW5lT2Zmc2V0Owp9Owp0
eXBlZGVmIHN0cnVjdCBST1RBR2x5cGhFbnRyeSBST1RBR2x5cGhFbnRyeTsKCgojcHJhZ21hIHBh
Y2socG9wKQojIDMzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNMYXlvdXRU
eXBlcy5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNU
eXBlcy5oIiAxIDMKIyAyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVHlw
ZXMuaCIgMwojZGVmaW5lIF9fQVRTVFlQRVNfXyAKIyA0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3
b3JrL0hlYWRlcnMvQVRTVHlwZXMuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVz
aCwgMikKIyA2OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVHlwZXMuaCIg
Mwp0eXBlZGVmIENHUG9pbnQgQVRTUG9pbnQ7CiMgNzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29y
ay9IZWFkZXJzL0FUU1R5cGVzLmgiIDMKc3RydWN0IEFUU0ZTU3BlYyB7CiAgRlNWb2x1bWVSZWZO
dW0gdlJlZk51bTsKICBTSW50MzIgcGFySUQ7CiAgU3RyRmlsZU5hbWUgbmFtZTsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgQVRTRlNTcGVjIEFUU0ZTU3BlYzsKCgoKCgp0eXBlZGVmIFVJbnQzMiBGTUdlbmVy
YXRpb247CgoKCgoKCgp0eXBlZGVmIFNJbnQxNiBGTUZvbnRGYW1pbHk7CnR5cGVkZWYgU0ludDE2
IEZNRm9udFN0eWxlOwp0eXBlZGVmIFNJbnQxNiBGTUZvbnRTaXplOwoKCgoKCgoKdHlwZWRlZiBV
SW50MzIgRk1Gb250OwpzdHJ1Y3QgRk1Gb250RmFtaWx5SW5zdGFuY2UgewogIEZNRm9udEZhbWls
eSBmb250RmFtaWx5OwogIEZNRm9udFN0eWxlIGZvbnRTdHlsZTsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
Rk1Gb250RmFtaWx5SW5zdGFuY2UgRk1Gb250RmFtaWx5SW5zdGFuY2U7CnN0cnVjdCBGTUZvbnRG
YW1pbHlJdGVyYXRvciB7CiAgVUludDMyIHJlc2VydmVkWzE2XTsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
Rk1Gb250RmFtaWx5SXRlcmF0b3IgRk1Gb250RmFtaWx5SXRlcmF0b3I7CnN0cnVjdCBGTUZvbnRJ
dGVyYXRvciB7CiAgVUludDMyIHJlc2VydmVkWzE2XTsKfTsKdHlwZWRlZiBzdHJ1Y3QgRk1Gb250
SXRlcmF0b3IgRk1Gb250SXRlcmF0b3I7CnN0cnVjdCBGTUZvbnRGYW1pbHlJbnN0YW5jZUl0ZXJh
dG9yIHsKICBVSW50MzIgcmVzZXJ2ZWRbMTZdOwp9Owp0eXBlZGVmIHN0cnVjdCBGTUZvbnRGYW1p
bHlJbnN0YW5jZUl0ZXJhdG9yIEZNRm9udEZhbWlseUluc3RhbmNlSXRlcmF0b3I7CmVudW0gewog
IGtJbnZhbGlkR2VuZXJhdGlvbiA9IDAsCiAga0ludmFsaWRGb250RmFtaWx5ID0gLTEsCiAga0lu
dmFsaWRGb250ID0gMAp9OwoKZW51bSB7CiAga0ZNQ3VycmVudEZpbHRlckZvcm1hdCA9IDAKfTsK
CnR5cGVkZWYgVUludDMyIEZNRmlsdGVyU2VsZWN0b3I7CmVudW0gewogIGtGTUZvbnRUZWNobm9s
b2d5RmlsdGVyU2VsZWN0b3IgPSAxLAogIGtGTUZvbnRDb250YWluZXJGaWx0ZXJTZWxlY3RvciA9
IDIsCiAga0ZNR2VuZXJhdGlvbkZpbHRlclNlbGVjdG9yID0gMywKICBrRk1Gb250RmFtaWx5Q2Fs
bGJhY2tGaWx0ZXJTZWxlY3RvciA9IDQsCiAga0ZNRm9udENhbGxiYWNrRmlsdGVyU2VsZWN0b3Ig
PSA1LAogIGtGTUZvbnREaXJlY3RvcnlGaWx0ZXJTZWxlY3RvciA9IDYsCiAga0ZNRm9udEZpbGVS
ZWZGaWx0ZXJTZWxlY3RvciA9IDEwCn07CgplbnVtIHsKICBrRk1UcnVlVHlwZUZvbnRUZWNobm9s
b2d5ID0gJ3RydWUnLAogIGtGTVBvc3RTY3JpcHRGb250VGVjaG5vbG9neSA9ICd0eXAxJwp9OwoK
dHlwZWRlZiBPU1N0YXR1cyAoICogRk1Gb250RmFtaWx5Q2FsbGJhY2tGaWx0ZXJQcm9jUHRyKShG
TUZvbnRGYW1pbHkgaUZvbnRGYW1pbHksIHZvaWQgKmlSZWZDb24pOwp0eXBlZGVmIE9TU3RhdHVz
ICggKiBGTUZvbnRDYWxsYmFja0ZpbHRlclByb2NQdHIpKEZNRm9udCBpRm9udCwgdm9pZCAqaVJl
ZkNvbik7CnR5cGVkZWYgRk1Gb250RmFtaWx5Q2FsbGJhY2tGaWx0ZXJQcm9jUHRyIEZNRm9udEZh
bWlseUNhbGxiYWNrRmlsdGVyVVBQOwp0eXBlZGVmIEZNRm9udENhbGxiYWNrRmlsdGVyUHJvY1B0
ciBGTUZvbnRDYWxsYmFja0ZpbHRlclVQUDsKIyAxNjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29y
ay9IZWFkZXJzL0FUU1R5cGVzLmgiIDMKZXh0ZXJuIEZNRm9udEZhbWlseUNhbGxiYWNrRmlsdGVy
VVBQCk5ld0ZNRm9udEZhbWlseUNhbGxiYWNrRmlsdGVyVVBQKEZNRm9udEZhbWlseUNhbGxiYWNr
RmlsdGVyUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDE3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3
b3JrL0hlYWRlcnMvQVRTVHlwZXMuaCIgMwpleHRlcm4gRk1Gb250Q2FsbGJhY2tGaWx0ZXJVUFAK
TmV3Rk1Gb250Q2FsbGJhY2tGaWx0ZXJVUFAoRk1Gb250Q2FsbGJhY2tGaWx0ZXJQcm9jUHRyIHVz
ZXJSb3V0aW5lKSA7CiMgMTg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNU
eXBlcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VGTUZvbnRGYW1pbHlDYWxsYmFja0ZpbHRlclVQ
UChGTUZvbnRGYW1pbHlDYWxsYmFja0ZpbHRlclVQUCB1c2VyVVBQKSA7CiMgMTk3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNUeXBlcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bv
c2VGTUZvbnRDYWxsYmFja0ZpbHRlclVQUChGTUZvbnRDYWxsYmFja0ZpbHRlclVQUCB1c2VyVVBQ
KSA7CiMgMjA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNUeXBlcy5oIiAz
CmV4dGVybiBPU1N0YXR1cwpJbnZva2VGTUZvbnRGYW1pbHlDYWxsYmFja0ZpbHRlclVQUCgKICBG
TUZvbnRGYW1pbHkgaUZvbnRGYW1pbHksCiAgdm9pZCAqIGlSZWZDb24sCiAgRk1Gb250RmFtaWx5
Q2FsbGJhY2tGaWx0ZXJVUFAgdXNlclVQUCkgOwojIDIyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3
b3JrL0hlYWRlcnMvQVRTVHlwZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKSW52b2tlRk1Gb250Q2Fs
bGJhY2tGaWx0ZXJVUFAoCiAgRk1Gb250IGlGb250LAogIHZvaWQgKiBpUmVmQ29uLAogIEZNRm9u
dENhbGxiYWNrRmlsdGVyVVBQIHVzZXJVUFApIDsKCgoKICAgIGlubGluZSBGTUZvbnRGYW1pbHlD
YWxsYmFja0ZpbHRlclVQUCBOZXdGTUZvbnRGYW1pbHlDYWxsYmFja0ZpbHRlclVQUChGTUZvbnRG
YW1pbHlDYWxsYmFja0ZpbHRlclByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0
aW5lOyB9CiAgICBpbmxpbmUgRk1Gb250Q2FsbGJhY2tGaWx0ZXJVUFAgTmV3Rk1Gb250Q2FsbGJh
Y2tGaWx0ZXJVUFAoRk1Gb250Q2FsbGJhY2tGaWx0ZXJQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJl
dHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUZNRm9udEZhbWlseUNh
bGxiYWNrRmlsdGVyVVBQKEZNRm9udEZhbWlseUNhbGxiYWNrRmlsdGVyVVBQKSB7IH0KICAgIGlu
bGluZSB2b2lkIERpc3Bvc2VGTUZvbnRDYWxsYmFja0ZpbHRlclVQUChGTUZvbnRDYWxsYmFja0Zp
bHRlclVQUCkgeyB9CiAgICBpbmxpbmUgT1NTdGF0dXMgSW52b2tlRk1Gb250RmFtaWx5Q2FsbGJh
Y2tGaWx0ZXJVUFAoRk1Gb250RmFtaWx5IGlGb250RmFtaWx5LCB2b2lkICogaVJlZkNvbiwgRk1G
b250RmFtaWx5Q2FsbGJhY2tGaWx0ZXJVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShp
Rm9udEZhbWlseSwgaVJlZkNvbik7IH0KICAgIGlubGluZSBPU1N0YXR1cyBJbnZva2VGTUZvbnRD
YWxsYmFja0ZpbHRlclVQUChGTUZvbnQgaUZvbnQsIHZvaWQgKiBpUmVmQ29uLCBGTUZvbnRDYWxs
YmFja0ZpbHRlclVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGlGb250LCBpUmVmQ29u
KTsgfQojIDI0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVHlwZXMuaCIg
MwpzdHJ1Y3QgRk1Gb250RGlyZWN0b3J5RmlsdGVyIHsKICBTSW50MTYgZm9udEZvbGRlckRvbWFp
bjsKICBVSW50MzIgcmVzZXJ2ZWRbMl07Cn07CnR5cGVkZWYgc3RydWN0IEZNRm9udERpcmVjdG9y
eUZpbHRlciBGTUZvbnREaXJlY3RvcnlGaWx0ZXI7CgoKCgpzdHJ1Y3QgRk1GaWx0ZXIgewogIFVJ
bnQzMiBmb3JtYXQ7CiAgRk1GaWx0ZXJTZWxlY3RvciBzZWxlY3RvcjsKICB1bmlvbiB7CiAgICBG
b3VyQ2hhckNvZGUgZm9udFRlY2hub2xvZ3lGaWx0ZXI7CiAgICBBVFNGU1NwZWMgZm9udENvbnRh
aW5lckZpbHRlcjsKICAgIEZNR2VuZXJhdGlvbiBnZW5lcmF0aW9uRmlsdGVyOwogICAgRk1Gb250
RmFtaWx5Q2FsbGJhY2tGaWx0ZXJVUFAgZm9udEZhbWlseUNhbGxiYWNrRmlsdGVyOwogICAgRk1G
b250Q2FsbGJhY2tGaWx0ZXJVUFAgZm9udENhbGxiYWNrRmlsdGVyOwogICAgRk1Gb250RGlyZWN0
b3J5RmlsdGVyIGZvbnREaXJlY3RvcnlGaWx0ZXI7CiAgICBjb25zdCBGU1JlZiAqIGZvbnRGaWxl
UmVmRmlsdGVyOwogIH0gZmlsdGVyOwp9Owp0eXBlZGVmIHN0cnVjdCBGTUZpbHRlciBGTUZpbHRl
cjsKCnR5cGVkZWYgT3B0aW9uQml0cyBBVFNPcHRpb25GbGFnczsKdHlwZWRlZiBVSW50MzIgQVRT
R2VuZXJhdGlvbjsKdHlwZWRlZiBVSW50MzIgQVRTRm9udENvbnRhaW5lclJlZjsKdHlwZWRlZiBV
SW50MzIgQVRTRm9udEZhbWlseVJlZjsKdHlwZWRlZiBVSW50MzIgQVRTRm9udFJlZjsKdHlwZWRl
ZiBVSW50MTYgQVRTR2x5cGhSZWY7CnR5cGVkZWYgQ0dGbG9hdCBBVFNGb250U2l6ZTsKdHlwZWRl
ZiBVSW50MzIgQVRTRm9udEZvcm1hdDsKZW51bSB7CiAga0FUU0ZvbnRGb3JtYXRVbnNwZWNpZmll
ZCA9IDAKfTsKCmVudW0gewogIGtBVFNHZW5lcmF0aW9uVW5zcGVjaWZpZWQgPSAwLAogIGtBVFNG
b250Q29udGFpbmVyUmVmVW5zcGVjaWZpZWQgPSAwLAogIGtBVFNGb250RmFtaWx5UmVmVW5zcGVj
aWZpZWQgPSAwLAogIGtBVFNGb250UmVmVW5zcGVjaWZpZWQgPSAwCn07CgoKCgoKc3RydWN0IEFU
U0ZvbnRNZXRyaWNzIHsKICBVSW50MzIgdmVyc2lvbjsKICBDR0Zsb2F0IGFzY2VudDsKCiAgQ0dG
bG9hdCBkZXNjZW50OwoKICBDR0Zsb2F0IGxlYWRpbmc7CiAgQ0dGbG9hdCBhdmdBZHZhbmNlV2lk
dGg7CiAgQ0dGbG9hdCBtYXhBZHZhbmNlV2lkdGg7CiAgQ0dGbG9hdCBtaW5MZWZ0U2lkZUJlYXJp
bmc7CiAgQ0dGbG9hdCBtaW5SaWdodFNpZGVCZWFyaW5nOwogIENHRmxvYXQgc3RlbVdpZHRoOwog
IENHRmxvYXQgc3RlbUhlaWdodDsKICBDR0Zsb2F0IGNhcEhlaWdodDsKICBDR0Zsb2F0IHhIZWln
aHQ7CiAgQ0dGbG9hdCBpdGFsaWNBbmdsZTsKICBDR0Zsb2F0IHVuZGVybGluZVBvc2l0aW9uOwog
IENHRmxvYXQgdW5kZXJsaW5lVGhpY2tuZXNzOwp9Owp0eXBlZGVmIHN0cnVjdCBBVFNGb250TWV0
cmljcyBBVFNGb250TWV0cmljczsKZW51bSB7CiAga0FUU0l0YWxpY1FEU2tldyA9ICgxIDw8IDE2
KSAvIDQsCiAga0FUU0JvbGRRRFN0cmV0Y2ggPSAoMSA8PCAxNikgKiAzIC8gMiwKICBrQVRTUmFk
aWFuc0ZhY3RvciA9IDExNDQKfTsKCgp0eXBlZGVmIFVJbnQxNiBBVFNDdXJ2ZVR5cGU7CmVudW0g
ewogIGtBVFNDdWJpY0N1cnZlVHlwZSA9IDB4MDAwMSwKICBrQVRTUXVhZEN1cnZlVHlwZSA9IDB4
MDAwMiwKICBrQVRTT3RoZXJDdXJ2ZVR5cGUgPSAweDAwMDMKfTsKCgoKCgoKZW51bSB7CiAga0FU
U0RlbGV0ZWRHbHlwaGNvZGUgPSAweEZGRkYKfTsKCnN0cnVjdCBBVFNVQ3VydmVQYXRoIHsKICBV
SW50MzIgdmVjdG9yczsKICBVSW50MzIgY29udHJvbEJpdHNbMV07CiAgQVRTUG9pbnQgdmVjdG9y
WzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBBVFNVQ3VydmVQYXRoIEFUU1VDdXJ2ZVBhdGg7CnN0cnVj
dCBBVFNVQ3VydmVQYXRocyB7CiAgVUludDMyIGNvbnRvdXJzOwogIEFUU1VDdXJ2ZVBhdGggY29u
dG91clsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQVRTVUN1cnZlUGF0aHMgQVRTVUN1cnZlUGF0aHM7
CgpzdHJ1Y3QgQVRTR2x5cGhJZGVhbE1ldHJpY3MgewogIEFUU1BvaW50IGFkdmFuY2U7CiAgQVRT
UG9pbnQgc2lkZUJlYXJpbmc7CiAgQVRTUG9pbnQgb3RoZXJTaWRlQmVhcmluZzsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgQVRTR2x5cGhJZGVhbE1ldHJpY3MgQVRTR2x5cGhJZGVhbE1ldHJpY3M7CgpzdHJ1
Y3QgQVRTR2x5cGhTY3JlZW5NZXRyaWNzIHsKICBBVFNQb2ludCBkZXZpY2VBZHZhbmNlOwogIEFU
U1BvaW50IHRvcExlZnQ7CiAgVUludDMyIGhlaWdodDsKICBVSW50MzIgd2lkdGg7CiAgQVRTUG9p
bnQgc2lkZUJlYXJpbmc7CiAgQVRTUG9pbnQgb3RoZXJTaWRlQmVhcmluZzsKfTsKdHlwZWRlZiBz
dHJ1Y3QgQVRTR2x5cGhTY3JlZW5NZXRyaWNzIEFUU0dseXBoU2NyZWVuTWV0cmljczsKCgp0eXBl
ZGVmIEFUU0dseXBoUmVmIEdseXBoSUQ7CgojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAzNyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTTGF5b3V0VHlwZXMuaCIgMiAzCiMgNDcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0xheW91dFR5cGVzLmgiIDMKZXh0
ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgoKCgoKCgplbnVtIHsKICBrQVRTVXNl
R2x5cGhBZHZhbmNlID0gMHg3RkZGRkZGRiwKICBrQVRTVXNlTGluZUhlaWdodCA9IDB4N0ZGRkZG
RkYsCiAga0FUU05vVHJhY2tpbmcgPSAoaW50KTB4ODAwMDAwMDAKfTsKIyA3MyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTTGF5b3V0VHlwZXMuaCIgMwplbnVtIHsKCgoKCgoK
ICBrQVRTVXNlQ2FyZXRPcmlnaW5zID0gMCwKCgoKCgoKICBrQVRTVXNlRGV2aWNlT3JpZ2lucyA9
IDEsCiMgOTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0xheW91dFR5cGVz
LmgiIDMKICBrQVRTVXNlRnJhY3Rpb25hbE9yaWdpbnMgPSAyLAogIGtBVFNVc2VPcmlnaW5GbGFn
cyA9IDMKfTsKIyAxMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0xheW91
dFR5cGVzLmgiIDMKdHlwZWRlZiBVSW50MzIgQVRTVUxheW91dE9wZXJhdGlvblNlbGVjdG9yOwpl
bnVtIHsKCgoKCiAga0FUU1VMYXlvdXRPcGVyYXRpb25Ob25lID0gMHgwMDAwMDAwMCwKCgoKCiAg
a0FUU1VMYXlvdXRPcGVyYXRpb25KdXN0aWZpY2F0aW9uID0gMHgwMDAwMDAwMSwKCgoKCiAga0FU
U1VMYXlvdXRPcGVyYXRpb25Nb3JwaCA9IDB4MDAwMDAwMDIsCgoKCgogIGtBVFNVTGF5b3V0T3Bl
cmF0aW9uS2VybmluZ0FkanVzdG1lbnQgPSAweDAwMDAwMDA0LAoKCgoKICBrQVRTVUxheW91dE9w
ZXJhdGlvbkJhc2VsaW5lQWRqdXN0bWVudCA9IDB4MDAwMDAwMDgsCgoKCgogIGtBVFNVTGF5b3V0
T3BlcmF0aW9uVHJhY2tpbmdBZGp1c3RtZW50ID0gMHgwMDAwMDAxMCwKCgoKCgogIGtBVFNVTGF5
b3V0T3BlcmF0aW9uUG9zdExheW91dEFkanVzdG1lbnQgPSAweDAwMDAwMDIwLAogIGtBVFNVTGF5
b3V0T3BlcmF0aW9uQXBwbGVSZXNlcnZlZCA9IChVSW50MzIpMHhGRkZGRkZDMAp9OwojIDE2MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTTGF5b3V0VHlwZXMuaCIgMwp0eXBl
ZGVmIFVJbnQzMiBBVFNVTGF5b3V0T3BlcmF0aW9uQ2FsbGJhY2tTdGF0dXM7CmVudW0gewoKCgoK
CgogIGtBVFNVTGF5b3V0T3BlcmF0aW9uQ2FsbGJhY2tTdGF0dXNIYW5kbGVkID0gMHgwMDAwMDAw
MCwKCgoKCgoKICBrQVRTVUxheW91dE9wZXJhdGlvbkNhbGxiYWNrU3RhdHVzQ29udGludWUgPSAw
eDAwMDAwMDAxCn07CiMgMTg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNM
YXlvdXRUeXBlcy5oIiAzCnR5cGVkZWYgVUludDMyIEFUU0xpbmVMYXlvdXRPcHRpb25zOwplbnVt
IHsKCgoKCiAga0FUU0xpbmVOb0xheW91dE9wdGlvbnMgPSAweDAwMDAwMDAwLAoKCgoKICBrQVRT
TGluZUlzRGlzcGxheU9ubHkgPSAweDAwMDAwMDAxLAoKCgoKICBrQVRTTGluZUhhc05vSGFuZ2Vy
cyA9IDB4MDAwMDAwMDIsCgoKCgogIGtBVFNMaW5lSGFzTm9PcHRpY2FsQWxpZ25tZW50ID0gMHgw
MDAwMDAwNCwKCgoKCiAga0FUU0xpbmVLZWVwU3BhY2VzT3V0T2ZNYXJnaW4gPSAweDAwMDAwMDA4
LAoKCgoKICBrQVRTTGluZU5vU3BlY2lhbEp1c3RpZmljYXRpb24gPSAweDAwMDAwMDEwLAoKCgoK
CiAga0FUU0xpbmVMYXN0Tm9KdXN0aWZpY2F0aW9uID0gMHgwMDAwMDAyMCwKCgoKCgogIGtBVFNM
aW5lRnJhY3REaXNhYmxlID0gMHgwMDAwMDA0MCwKCgoKCgogIGtBVFNMaW5lSW1wb3NlTm9Bbmds
ZUZvckVuZHMgPSAweDAwMDAwMDgwLAoKCgoKCiAga0FUU0xpbmVGaWxsT3V0VG9XaWR0aCA9IDB4
MDAwMDAxMDAsCgoKCgoKICBrQVRTTGluZVRhYkFkanVzdEVuYWJsZWQgPSAweDAwMDAwMjAwLAoK
CgoKCiAga0FUU0xpbmVJZ25vcmVGb250TGVhZGluZyA9IDB4MDAwMDA0MDAsCgoKCgoKICBrQVRT
TGluZUFwcGx5QW50aUFsaWFzaW5nID0gMHgwMDAwMDgwMCwKCgoKCgogIGtBVFNMaW5lTm9BbnRp
QWxpYXNpbmcgPSAweDAwMDAxMDAwLAoKCgoKCgogIGtBVFNMaW5lRGlzYWJsZU5lZ2F0aXZlSnVz
dGlmaWNhdGlvbiA9IDB4MDAwMDIwMDAsCgoKCgoKCgogIGtBVFNMaW5lRGlzYWJsZUF1dG9BZGp1
c3REaXNwbGF5UG9zID0gMHgwMDAwNDAwMCwKCgoKCgogIGtBVFNMaW5lVXNlUURSZW5kZXJpbmcg
PSAweDAwMDA4MDAwLAoKCgoKICBrQVRTTGluZURpc2FibGVBbGxKdXN0aWZpY2F0aW9uID0gMHgw
MDAxMDAwMCwKCgoKCiAga0FUU0xpbmVEaXNhYmxlQWxsR2x5cGhNb3JwaGluZyA9IDB4MDAwMjAw
MDAsCgoKCgogIGtBVFNMaW5lRGlzYWJsZUFsbEtlcm5pbmdBZGp1c3RtZW50cyA9IDB4MDAwNDAw
MDAsCgoKCgogIGtBVFNMaW5lRGlzYWJsZUFsbEJhc2VsaW5lQWRqdXN0bWVudHMgPSAweDAwMDgw
MDAwLAoKCgoKICBrQVRTTGluZURpc2FibGVBbGxUcmFja2luZ0FkanVzdG1lbnRzID0gMHgwMDEw
MDAwMCwKCgoKCiAga0FUU0xpbmVEaXNhYmxlQWxsTGF5b3V0T3BlcmF0aW9ucyA9IGtBVFNMaW5l
RGlzYWJsZUFsbEp1c3RpZmljYXRpb24gfCBrQVRTTGluZURpc2FibGVBbGxHbHlwaE1vcnBoaW5n
IHwga0FUU0xpbmVEaXNhYmxlQWxsS2VybmluZ0FkanVzdG1lbnRzIHwga0FUU0xpbmVEaXNhYmxl
QWxsQmFzZWxpbmVBZGp1c3RtZW50cyB8IGtBVFNMaW5lRGlzYWJsZUFsbFRyYWNraW5nQWRqdXN0
bWVudHMsCgoKCgoKICBrQVRTTGluZVVzZURldmljZU1ldHJpY3MgPSAweDAxMDAwMDAwLAoKCgoK
CgogIGtBVFNMaW5lQnJlYWtUb05lYXJlc3RDaGFyYWN0ZXIgPSAweDAyMDAwMDAwLAoKCgoKCiAg
a0FUU0xpbmVBcHBsZVJlc2VydmVkID0gKFVJbnQzMikweEZDRTAwMDAwCn07CiMgMzUxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNMYXlvdXRUeXBlcy5oIiAzCnR5cGVkZWYg
VUludDMyIEFUU1N0eWxlUmVuZGVyaW5nT3B0aW9uczsKZW51bSB7CgoKCgogIGtBVFNTdHlsZU5v
T3B0aW9ucyA9IDB4MDAwMDAwMDAsCgoKCgoKICBrQVRTU3R5bGVOb0hpbnRpbmcgPSAweDAwMDAw
MDAxLAoKCgoKCgogIGtBVFNTdHlsZUFwcGx5QW50aUFsaWFzaW5nID0gMHgwMDAwMDAwMiwKCgoK
CgoKICBrQVRTU3R5bGVOb0FudGlBbGlhc2luZyA9IDB4MDAwMDAwMDQsCgoKCgoKICBrQVRTU3R5
bGVBcHBsZVJlc2VydmVkID0gKFVJbnQzMikweEZGRkZGRkY4LAoKCgoKCgogIGtBVFNTdHlsZUFw
cGx5SGludHMgPSBrQVRTU3R5bGVOb09wdGlvbnMKfTsKIyA0MDYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZy
YW1ld29yay9IZWFkZXJzL0FUU0xheW91dFR5cGVzLmgiIDMKdHlwZWRlZiBVSW50MzIgQVRTR2x5
cGhJbmZvRmxhZ3M7CmVudW0gewoKCgoKCiAga0FUU0dseXBoSW5mb0FwcGxlUmVzZXJ2ZWQgPSAw
eDFGRkJGRkU4LAoKCgoKICBrQVRTR2x5cGhJbmZvSXNBdHRhY2htZW50ID0gKFVJbnQzMikweDgw
MDAwMDAwLAoKCgoKICBrQVRTR2x5cGhJbmZvSXNMVEhhbmdlciA9IDB4NDAwMDAwMDAsCgoKCgog
IGtBVFNHbHlwaEluZm9Jc1JCSGFuZ2VyID0gMHgyMDAwMDAwMCwKCgoKCgogIGtBVFNHbHlwaElu
Zm9UZXJtaW5hdG9yR2x5cGggPSAweDAwMDgwMDAwLAoKCgoKICBrQVRTR2x5cGhJbmZvSXNXaGl0
ZVNwYWNlID0gMHgwMDA0MDAwMCwKCgoKCiAga0FUU0dseXBoSW5mb0hhc0ltcG9zZWRXaWR0aCA9
IDB4MDAwMDAwMTAsCgoKCgoKCgogIGtBVFNHbHlwaEluZm9CeXRlU2l6ZU1hc2sgPSAweDAwMDAw
MDA3Cn07CiMgNDY4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNMYXlvdXRU
eXBlcy5oIiAzCnN0cnVjdCBBVFNMYXlvdXRSZWNvcmQgewoKCgoKICBBVFNHbHlwaFJlZiBnbHlw
aElEOwoKCgoKICBBVFNHbHlwaEluZm9GbGFncyBmbGFnczsKCgoKCiAgQnl0ZUNvdW50IG9yaWdp
bmFsT2Zmc2V0OwoKCgoKICBGaXhlZCByZWFsUG9zOwp9Owp0eXBlZGVmIHN0cnVjdCBBVFNMYXlv
dXRSZWNvcmQgQVRTTGF5b3V0UmVjb3JkOwojIDUwMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3Jr
L0hlYWRlcnMvQVRTTGF5b3V0VHlwZXMuaCIgMwpzdHJ1Y3QgQVRTVHJhcGV6b2lkIHsKICBGaXhl
ZFBvaW50IHVwcGVyTGVmdDsKICBGaXhlZFBvaW50IHVwcGVyUmlnaHQ7CiAgRml4ZWRQb2ludCBs
b3dlclJpZ2h0OwogIEZpeGVkUG9pbnQgbG93ZXJMZWZ0Owp9Owp0eXBlZGVmIHN0cnVjdCBBVFNU
cmFwZXpvaWQgQVRTVHJhcGV6b2lkOwojIDUyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hl
YWRlcnMvQVRTTGF5b3V0VHlwZXMuaCIgMwpzdHJ1Y3QgQVRTSnVzdFdpZHRoRGVsdGFFbnRyeU92
ZXJyaWRlIHsKCgoKCiAgRml4ZWQgYmVmb3JlR3Jvd0xpbWl0OwoKCgoKICBGaXhlZCBiZWZvcmVT
aHJpbmtMaW1pdDsKCgoKCiAgRml4ZWQgYWZ0ZXJHcm93TGltaXQ7CgoKCgogIEZpeGVkIGFmdGVy
U2hyaW5rTGltaXQ7CgoKCgogIEp1c3RpZmljYXRpb25GbGFncyBncm93RmxhZ3M7CgoKCgogIEp1
c3RpZmljYXRpb25GbGFncyBzaHJpbmtGbGFnczsKfTsKdHlwZWRlZiBzdHJ1Y3QgQVRTSnVzdFdp
ZHRoRGVsdGFFbnRyeU92ZXJyaWRlIEFUU0p1c3RXaWR0aERlbHRhRW50cnlPdmVycmlkZTsKCnR5
cGVkZWYgQVRTSnVzdFdpZHRoRGVsdGFFbnRyeU92ZXJyaWRlIEFUU0p1c3RQcmlvcml0eVdpZHRo
RGVsdGFPdmVycmlkZXNbNF07CiMgNTY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVy
cy9BVFNMYXlvdXRUeXBlcy5oIiAzCnR5cGVkZWYgc3RydWN0IEFUU0dseXBoVmVjdG9yKiBBVFNV
TGluZVJlZjsKIyA2MDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0xheW91
dFR5cGVzLmgiIDMKdHlwZWRlZiBPU1N0YXR1cyAoICogQVRTVURpcmVjdExheW91dE9wZXJhdGlv
bk92ZXJyaWRlUHJvY1B0cikoQVRTVUxheW91dE9wZXJhdGlvblNlbGVjdG9yIGlDdXJyZW50T3Bl
cmF0aW9uLCBBVFNVTGluZVJlZiBpTGluZVJlZiwgVVJlZkNvbiBpUmVmQ29uLCB2b2lkICppT3Bl
cmF0aW9uQ2FsbGJhY2tQYXJhbWV0ZXJQdHIsIEFUU1VMYXlvdXRPcGVyYXRpb25DYWxsYmFja1N0
YXR1cyAqb0NhbGxiYWNrU3RhdHVzKTsKdHlwZWRlZiBBVFNVRGlyZWN0TGF5b3V0T3BlcmF0aW9u
T3ZlcnJpZGVQcm9jUHRyIEFUU1VEaXJlY3RMYXlvdXRPcGVyYXRpb25PdmVycmlkZVVQUDsKIyA2
MTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0xheW91dFR5cGVzLmgiIDMK
ZXh0ZXJuIEFUU1VEaXJlY3RMYXlvdXRPcGVyYXRpb25PdmVycmlkZVVQUApOZXdBVFNVRGlyZWN0
TGF5b3V0T3BlcmF0aW9uT3ZlcnJpZGVVUFAoQVRTVURpcmVjdExheW91dE9wZXJhdGlvbk92ZXJy
aWRlUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDYyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3Jr
L0hlYWRlcnMvQVRTTGF5b3V0VHlwZXMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlQVRTVURpcmVj
dExheW91dE9wZXJhdGlvbk92ZXJyaWRlVVBQKEFUU1VEaXJlY3RMYXlvdXRPcGVyYXRpb25PdmVy
cmlkZVVQUCB1c2VyVVBQKSA7CiMgNjM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVy
cy9BVFNMYXlvdXRUeXBlcy5oIiAzCmV4dGVybiBPU1N0YXR1cwpJbnZva2VBVFNVRGlyZWN0TGF5
b3V0T3BlcmF0aW9uT3ZlcnJpZGVVUFAoCiAgQVRTVUxheW91dE9wZXJhdGlvblNlbGVjdG9yIGlD
dXJyZW50T3BlcmF0aW9uLAogIEFUU1VMaW5lUmVmIGlMaW5lUmVmLAogIFVSZWZDb24gaVJlZkNv
biwKICB2b2lkICogaU9wZXJhdGlvbkNhbGxiYWNrUGFyYW1ldGVyUHRyLAogIEFUU1VMYXlvdXRP
cGVyYXRpb25DYWxsYmFja1N0YXR1cyAqIG9DYWxsYmFja1N0YXR1cywKICBBVFNVRGlyZWN0TGF5
b3V0T3BlcmF0aW9uT3ZlcnJpZGVVUFAgdXNlclVQUCkgOwoKCgogICAgaW5saW5lIEFUU1VEaXJl
Y3RMYXlvdXRPcGVyYXRpb25PdmVycmlkZVVQUCBOZXdBVFNVRGlyZWN0TGF5b3V0T3BlcmF0aW9u
T3ZlcnJpZGVVUFAoQVRTVURpcmVjdExheW91dE9wZXJhdGlvbk92ZXJyaWRlUHJvY1B0ciB1c2Vy
Um91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VB
VFNVRGlyZWN0TGF5b3V0T3BlcmF0aW9uT3ZlcnJpZGVVUFAoQVRTVURpcmVjdExheW91dE9wZXJh
dGlvbk92ZXJyaWRlVVBQKSB7IH0KICAgIGlubGluZSBPU1N0YXR1cyBJbnZva2VBVFNVRGlyZWN0
TGF5b3V0T3BlcmF0aW9uT3ZlcnJpZGVVUFAoQVRTVUxheW91dE9wZXJhdGlvblNlbGVjdG9yIGlD
dXJyZW50T3BlcmF0aW9uLCBBVFNVTGluZVJlZiBpTGluZVJlZiwgVVJlZkNvbiBpUmVmQ29uLCB2
b2lkICogaU9wZXJhdGlvbkNhbGxiYWNrUGFyYW1ldGVyUHRyLCBBVFNVTGF5b3V0T3BlcmF0aW9u
Q2FsbGJhY2tTdGF0dXMgKiBvQ2FsbGJhY2tTdGF0dXMsIEFUU1VEaXJlY3RMYXlvdXRPcGVyYXRp
b25PdmVycmlkZVVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGlDdXJyZW50T3BlcmF0
aW9uLCBpTGluZVJlZiwgaVJlZkNvbiwgaU9wZXJhdGlvbkNhbGxiYWNrUGFyYW1ldGVyUHRyLCBv
Q2FsbGJhY2tTdGF0dXMpOyB9CiMgNjcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVy
cy9BVFNMYXlvdXRUeXBlcy5oIiAzCnN0cnVjdCBBVFNVTGF5b3V0T3BlcmF0aW9uT3ZlcnJpZGVT
cGVjaWZpZXIgewoKCgoKCgogIEFUU1VMYXlvdXRPcGVyYXRpb25TZWxlY3RvciBvcGVyYXRpb25T
ZWxlY3RvcjsKICBBVFNVRGlyZWN0TGF5b3V0T3BlcmF0aW9uT3ZlcnJpZGVVUFAgb3ZlcnJpZGVV
UFA7Cgp9Owp0eXBlZGVmIHN0cnVjdCBBVFNVTGF5b3V0T3BlcmF0aW9uT3ZlcnJpZGVTcGVjaWZp
ZXIgQVRTVUxheW91dE9wZXJhdGlvbk92ZXJyaWRlU3BlY2lmaWVyOwoKI3ByYWdtYSBwYWNrKHBv
cCkKCgp9CiMgMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUUy5oIiAyIDMK
CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDEgMwoj
IDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKI2RlZmlu
ZSBfX0FUU0ZPTlRfXyAKIyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRT
Rm9udC5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvU0ZOVFR5cGVz
LmgiIDEgMwojIDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9TRk5UVHlwZXMu
aCIgMwojZGVmaW5lIF9fU0ZOVFRZUEVTX18gCiMgMzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29y
ay9IZWFkZXJzL1NGTlRUeXBlcy5oIiAzCiNwcmFnbWEgcGFjayhwdXNoLCAyKQoKc3RydWN0IHNm
bnREaXJlY3RvcnlFbnRyeSB7CiAgRm91ckNoYXJDb2RlIHRhYmxlVGFnOwogIFVJbnQzMiBjaGVj
a1N1bTsKICBVSW50MzIgb2Zmc2V0OwogIFVJbnQzMiBsZW5ndGg7Cn07CnR5cGVkZWYgc3RydWN0
IHNmbnREaXJlY3RvcnlFbnRyeSBzZm50RGlyZWN0b3J5RW50cnk7CgpzdHJ1Y3Qgc2ZudERpcmVj
dG9yeSB7CiAgRm91ckNoYXJDb2RlIGZvcm1hdDsKICBVSW50MTYgbnVtT2Zmc2V0czsKICBVSW50
MTYgc2VhcmNoUmFuZ2U7CiAgVUludDE2IGVudHJ5U2VsZWN0b3I7CiAgVUludDE2IHJhbmdlU2hp
ZnQ7CiAgc2ZudERpcmVjdG9yeUVudHJ5IHRhYmxlWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBzZm50
RGlyZWN0b3J5IHNmbnREaXJlY3Rvcnk7CmVudW0gewogIHNpemVvZl9zZm50RGlyZWN0b3J5ID0g
MTIKfTsKCgplbnVtIHsKICBjbWFwRm9udFRhYmxlVGFnID0gJ2NtYXAnCn07CgplbnVtIHsKICBr
Rm9udFVuaWNvZGVQbGF0Zm9ybSA9IDAsCiAga0ZvbnRNYWNpbnRvc2hQbGF0Zm9ybSA9IDEsCiAg
a0ZvbnRSZXNlcnZlZFBsYXRmb3JtID0gMiwKICBrRm9udE1pY3Jvc29mdFBsYXRmb3JtID0gMywK
ICBrRm9udEN1c3RvbVBsYXRmb3JtID0gNAp9OwoKZW51bSB7CiAga0ZvbnRVbmljb2RlRGVmYXVs
dFNlbWFudGljcyA9IDAsCiAga0ZvbnRVbmljb2RlVjFfMVNlbWFudGljcyA9IDEsCiAga0ZvbnRJ
U08xMDY0Nl8xOTkzU2VtYW50aWNzID0gMiwKICBrRm9udFVuaWNvZGVWMl8wQk1QT25seVNlbWFu
dGljcyA9IDMsCiAga0ZvbnRVbmljb2RlVjJfMEZ1bGxDb3ZlcmFnZVNlbWFudGljcyA9IDQsCiAg
a0ZvbnRVbmljb2RlVjRfMFZhcmlhdGlvblNlcXVlbmNlU2VtYW50aWNzID0gNQp9OwoKZW51bSB7
CiAga0ZvbnRSb21hblNjcmlwdCA9IDAsCiAga0ZvbnRKYXBhbmVzZVNjcmlwdCA9IDEsCiAga0Zv
bnRUcmFkaXRpb25hbENoaW5lc2VTY3JpcHQgPSAyLAogIGtGb250Q2hpbmVzZVNjcmlwdCA9IGtG
b250VHJhZGl0aW9uYWxDaGluZXNlU2NyaXB0LAogIGtGb250S29yZWFuU2NyaXB0ID0gMywKICBr
Rm9udEFyYWJpY1NjcmlwdCA9IDQsCiAga0ZvbnRIZWJyZXdTY3JpcHQgPSA1LAogIGtGb250R3Jl
ZWtTY3JpcHQgPSA2LAogIGtGb250Q3lyaWxsaWNTY3JpcHQgPSA3LAogIGtGb250UnVzc2lhbiA9
IGtGb250Q3lyaWxsaWNTY3JpcHQsCiAga0ZvbnRSU3ltYm9sU2NyaXB0ID0gOCwKICBrRm9udERl
dmFuYWdhcmlTY3JpcHQgPSA5LAogIGtGb250R3VybXVraGlTY3JpcHQgPSAxMCwKICBrRm9udEd1
amFyYXRpU2NyaXB0ID0gMTEsCiAga0ZvbnRPcml5YVNjcmlwdCA9IDEyLAogIGtGb250QmVuZ2Fs
aVNjcmlwdCA9IDEzLAogIGtGb250VGFtaWxTY3JpcHQgPSAxNCwKICBrRm9udFRlbHVndVNjcmlw
dCA9IDE1LAogIGtGb250S2FubmFkYVNjcmlwdCA9IDE2LAogIGtGb250TWFsYXlhbGFtU2NyaXB0
ID0gMTcsCiAga0ZvbnRTaW5oYWxlc2VTY3JpcHQgPSAxOCwKICBrRm9udEJ1cm1lc2VTY3JpcHQg
PSAxOSwKICBrRm9udEtobWVyU2NyaXB0ID0gMjAsCiAga0ZvbnRUaGFpU2NyaXB0ID0gMjEsCiAg
a0ZvbnRMYW90aWFuU2NyaXB0ID0gMjIsCiAga0ZvbnRHZW9yZ2lhblNjcmlwdCA9IDIzLAogIGtG
b250QXJtZW5pYW5TY3JpcHQgPSAyNCwKICBrRm9udFNpbXBsZUNoaW5lc2VTY3JpcHQgPSAyNSwK
ICBrRm9udFRpYmV0YW5TY3JpcHQgPSAyNiwKICBrRm9udE1vbmdvbGlhblNjcmlwdCA9IDI3LAog
IGtGb250R2VlelNjcmlwdCA9IDI4LAogIGtGb250RXRoaW9waWNTY3JpcHQgPSBrRm9udEdlZXpT
Y3JpcHQsCiAga0ZvbnRBbWhhcmljU2NyaXB0ID0ga0ZvbnRHZWV6U2NyaXB0LAogIGtGb250U2xh
dmljU2NyaXB0ID0gMjksCiAga0ZvbnRFYXN0RXVyb3BlYW5Sb21hblNjcmlwdCA9IGtGb250U2xh
dmljU2NyaXB0LAogIGtGb250VmlldG5hbWVzZVNjcmlwdCA9IDMwLAogIGtGb250RXh0ZW5kZWRB
cmFiaWNTY3JpcHQgPSAzMSwKICBrRm9udFNpbmRoaVNjcmlwdCA9IGtGb250RXh0ZW5kZWRBcmFi
aWNTY3JpcHQsCiAga0ZvbnRVbmludGVycHJldGVkU2NyaXB0ID0gMzIKfTsKCmVudW0gewogIGtG
b250TWljcm9zb2Z0U3ltYm9sU2NyaXB0ID0gMCwKICBrRm9udE1pY3Jvc29mdFN0YW5kYXJkU2Ny
aXB0ID0gMSwKICBrRm9udE1pY3Jvc29mdFVDUzRTY3JpcHQgPSAxMAp9OwoKCmVudW0gewogIGtG
b250Q3VzdG9tOEJpdFNjcmlwdCA9IDAsCiAga0ZvbnRDdXN0b204MTZCaXRTY3JpcHQgPSAxLAog
IGtGb250Q3VzdG9tMTZCaXRTY3JpcHQgPSAyCn07CgoKZW51bSB7CiAga0ZvbnRFbmdsaXNoTGFu
Z3VhZ2UgPSAwLAogIGtGb250RnJlbmNoTGFuZ3VhZ2UgPSAxLAogIGtGb250R2VybWFuTGFuZ3Vh
Z2UgPSAyLAogIGtGb250SXRhbGlhbkxhbmd1YWdlID0gMywKICBrRm9udER1dGNoTGFuZ3VhZ2Ug
PSA0LAogIGtGb250U3dlZGlzaExhbmd1YWdlID0gNSwKICBrRm9udFNwYW5pc2hMYW5ndWFnZSA9
IDYsCiAga0ZvbnREYW5pc2hMYW5ndWFnZSA9IDcsCiAga0ZvbnRQb3J0dWd1ZXNlTGFuZ3VhZ2Ug
PSA4LAogIGtGb250Tm9yd2VnaWFuTGFuZ3VhZ2UgPSA5LAogIGtGb250SGVicmV3TGFuZ3VhZ2Ug
PSAxMCwKICBrRm9udEphcGFuZXNlTGFuZ3VhZ2UgPSAxMSwKICBrRm9udEFyYWJpY0xhbmd1YWdl
ID0gMTIsCiAga0ZvbnRGaW5uaXNoTGFuZ3VhZ2UgPSAxMywKICBrRm9udEdyZWVrTGFuZ3VhZ2Ug
PSAxNCwKICBrRm9udEljZWxhbmRpY0xhbmd1YWdlID0gMTUsCiAga0ZvbnRNYWx0ZXNlTGFuZ3Vh
Z2UgPSAxNiwKICBrRm9udFR1cmtpc2hMYW5ndWFnZSA9IDE3LAogIGtGb250Q3JvYXRpYW5MYW5n
dWFnZSA9IDE4LAogIGtGb250VHJhZENoaW5lc2VMYW5ndWFnZSA9IDE5LAogIGtGb250VXJkdUxh
bmd1YWdlID0gMjAsCiAga0ZvbnRIaW5kaUxhbmd1YWdlID0gMjEsCiAga0ZvbnRUaGFpTGFuZ3Vh
Z2UgPSAyMiwKICBrRm9udEtvcmVhbkxhbmd1YWdlID0gMjMsCiAga0ZvbnRMaXRodWFuaWFuTGFu
Z3VhZ2UgPSAyNCwKICBrRm9udFBvbGlzaExhbmd1YWdlID0gMjUsCiAga0ZvbnRIdW5nYXJpYW5M
YW5ndWFnZSA9IDI2LAogIGtGb250RXN0b25pYW5MYW5ndWFnZSA9IDI3LAogIGtGb250TGV0dGlz
aExhbmd1YWdlID0gMjgsCiAga0ZvbnRMYXR2aWFuTGFuZ3VhZ2UgPSBrRm9udExldHRpc2hMYW5n
dWFnZSwKICBrRm9udFNhYW1pc2tMYW5ndWFnZSA9IDI5LAogIGtGb250TGFwcGlzaExhbmd1YWdl
ID0ga0ZvbnRTYWFtaXNrTGFuZ3VhZ2UsCiAga0ZvbnRGYWVyb2VzZUxhbmd1YWdlID0gMzAsCiAg
a0ZvbnRGYXJzaUxhbmd1YWdlID0gMzEsCiAga0ZvbnRQZXJzaWFuTGFuZ3VhZ2UgPSBrRm9udEZh
cnNpTGFuZ3VhZ2UsCiAga0ZvbnRSdXNzaWFuTGFuZ3VhZ2UgPSAzMiwKICBrRm9udFNpbXBDaGlu
ZXNlTGFuZ3VhZ2UgPSAzMywKICBrRm9udEZsZW1pc2hMYW5ndWFnZSA9IDM0LAogIGtGb250SXJp
c2hMYW5ndWFnZSA9IDM1LAogIGtGb250QWxiYW5pYW5MYW5ndWFnZSA9IDM2LAogIGtGb250Um9t
YW5pYW5MYW5ndWFnZSA9IDM3LAogIGtGb250Q3plY2hMYW5ndWFnZSA9IDM4LAogIGtGb250U2xv
dmFrTGFuZ3VhZ2UgPSAzOSwKICBrRm9udFNsb3Zlbmlhbkxhbmd1YWdlID0gNDAsCiAga0ZvbnRZ
aWRkaXNoTGFuZ3VhZ2UgPSA0MSwKICBrRm9udFNlcmJpYW5MYW5ndWFnZSA9IDQyLAogIGtGb250
TWFjZWRvbmlhbkxhbmd1YWdlID0gNDMsCiAga0ZvbnRCdWxnYXJpYW5MYW5ndWFnZSA9IDQ0LAog
IGtGb250VWtyYWluaWFuTGFuZ3VhZ2UgPSA0NSwKICBrRm9udEJ5ZWxvcnVzc2lhbkxhbmd1YWdl
ID0gNDYsCiAga0ZvbnRVemJla0xhbmd1YWdlID0gNDcsCiAga0ZvbnRLYXpha2hMYW5ndWFnZSA9
IDQ4LAogIGtGb250QXplcmJhaWphbmlMYW5ndWFnZSA9IDQ5LAogIGtGb250QXplcmJhaWphbkFy
TGFuZ3VhZ2UgPSA1MCwKICBrRm9udEFybWVuaWFuTGFuZ3VhZ2UgPSA1MSwKICBrRm9udEdlb3Jn
aWFuTGFuZ3VhZ2UgPSA1MiwKICBrRm9udE1vbGRhdmlhbkxhbmd1YWdlID0gNTMsCiAga0ZvbnRL
aXJnaGl6TGFuZ3VhZ2UgPSA1NCwKICBrRm9udFRhamlraUxhbmd1YWdlID0gNTUsCiAga0ZvbnRU
dXJrbWVuTGFuZ3VhZ2UgPSA1NiwKICBrRm9udE1vbmdvbGlhbkxhbmd1YWdlID0gNTcsCiAga0Zv
bnRNb25nb2xpYW5DeXJMYW5ndWFnZSA9IDU4LAogIGtGb250UGFzaHRvTGFuZ3VhZ2UgPSA1OSwK
ICBrRm9udEt1cmRpc2hMYW5ndWFnZSA9IDYwLAogIGtGb250S2FzaG1pcmlMYW5ndWFnZSA9IDYx
LAogIGtGb250U2luZGhpTGFuZ3VhZ2UgPSA2MiwKICBrRm9udFRpYmV0YW5MYW5ndWFnZSA9IDYz
LAogIGtGb250TmVwYWxpTGFuZ3VhZ2UgPSA2NCwKICBrRm9udFNhbnNrcml0TGFuZ3VhZ2UgPSA2
NSwKICBrRm9udE1hcmF0aGlMYW5ndWFnZSA9IDY2LAogIGtGb250QmVuZ2FsaUxhbmd1YWdlID0g
NjcsCiAga0ZvbnRBc3NhbWVzZUxhbmd1YWdlID0gNjgsCiAga0ZvbnRHdWphcmF0aUxhbmd1YWdl
ID0gNjksCiAga0ZvbnRQdW5qYWJpTGFuZ3VhZ2UgPSA3MCwKICBrRm9udE9yaXlhTGFuZ3VhZ2Ug
PSA3MSwKICBrRm9udE1hbGF5YWxhbUxhbmd1YWdlID0gNzIsCiAga0ZvbnRLYW5uYWRhTGFuZ3Vh
Z2UgPSA3MywKICBrRm9udFRhbWlsTGFuZ3VhZ2UgPSA3NCwKICBrRm9udFRlbHVndUxhbmd1YWdl
ID0gNzUsCiAga0ZvbnRTaW5oYWxlc2VMYW5ndWFnZSA9IDc2LAogIGtGb250QnVybWVzZUxhbmd1
YWdlID0gNzcsCiAga0ZvbnRLaG1lckxhbmd1YWdlID0gNzgsCiAga0ZvbnRMYW9MYW5ndWFnZSA9
IDc5LAogIGtGb250VmlldG5hbWVzZUxhbmd1YWdlID0gODAsCiAga0ZvbnRJbmRvbmVzaWFuTGFu
Z3VhZ2UgPSA4MSwKICBrRm9udFRhZ2Fsb2dMYW5ndWFnZSA9IDgyLAogIGtGb250TWFsYXlSb21h
bkxhbmd1YWdlID0gODMsCiAga0ZvbnRNYWxheUFyYWJpY0xhbmd1YWdlID0gODQsCiAga0ZvbnRB
bWhhcmljTGFuZ3VhZ2UgPSA4NSwKICBrRm9udFRpZ3JpbnlhTGFuZ3VhZ2UgPSA4NiwKICBrRm9u
dEdhbGxhTGFuZ3VhZ2UgPSA4NywKICBrRm9udE9yb21vTGFuZ3VhZ2UgPSBrRm9udEdhbGxhTGFu
Z3VhZ2UsCiAga0ZvbnRTb21hbGlMYW5ndWFnZSA9IDg4LAogIGtGb250U3dhaGlsaUxhbmd1YWdl
ID0gODksCiAga0ZvbnRSdWFuZGFMYW5ndWFnZSA9IDkwLAogIGtGb250UnVuZGlMYW5ndWFnZSA9
IDkxLAogIGtGb250Q2hld2FMYW5ndWFnZSA9IDkyLAogIGtGb250TWFsYWdhc3lMYW5ndWFnZSA9
IDkzLAogIGtGb250RXNwZXJhbnRvTGFuZ3VhZ2UgPSA5NCwKICBrRm9udFdlbHNoTGFuZ3VhZ2Ug
PSAxMjgsCiAga0ZvbnRCYXNxdWVMYW5ndWFnZSA9IDEyOSwKICBrRm9udENhdGFsYW5MYW5ndWFn
ZSA9IDEzMCwKICBrRm9udExhdGluTGFuZ3VhZ2UgPSAxMzEsCiAga0ZvbnRRdWVjaHVhTGFuZ3Vh
Z2UgPSAxMzIsCiAga0ZvbnRHdWFyYW5pTGFuZ3VhZ2UgPSAxMzMsCiAga0ZvbnRBeW1hcmFMYW5n
dWFnZSA9IDEzNCwKICBrRm9udFRhdGFyTGFuZ3VhZ2UgPSAxMzUsCiAga0ZvbnRVaWdodXJMYW5n
dWFnZSA9IDEzNiwKICBrRm9udER6b25na2hhTGFuZ3VhZ2UgPSAxMzcsCiAga0ZvbnRKYXZhbmVz
ZVJvbUxhbmd1YWdlID0gMTM4LAogIGtGb250U3VuZGFuZXNlUm9tTGFuZ3VhZ2UgPSAxMzkKfTsK
CgoKZW51bSB7CiAgICBrRm9udE5vUGxhdGZvcm1Db2RlID0gKHVuc2lnbmVkIGludCkofjApLAog
IGtGb250Tm9TY3JpcHRDb2RlID0gKHVuc2lnbmVkIGludCkofjApLAogIGtGb250Tm9MYW5ndWFn
ZUNvZGUgPSAodW5zaWduZWQgaW50KSh+MCkKfTsKCnN0cnVjdCBzZm50Q01hcFN1YkhlYWRlciB7
CiAgVUludDE2IGZvcm1hdDsKICBVSW50MTYgbGVuZ3RoOwogIFVJbnQxNiBsYW5ndWFnZUlEOwp9
Owp0eXBlZGVmIHN0cnVjdCBzZm50Q01hcFN1YkhlYWRlciBzZm50Q01hcFN1YkhlYWRlcjsKZW51
bSB7CiAgc2l6ZW9mX3NmbnRDTWFwU3ViSGVhZGVyID0gNgp9OwoKc3RydWN0IHNmbnRDTWFwRXh0
ZW5kZWRTdWJIZWFkZXIgewogIFVJbnQxNiBmb3JtYXQ7CiAgVUludDE2IHJlc2VydmVkOwogIFVJ
bnQzMiBsZW5ndGg7CiAgVUludDMyIGxhbmd1YWdlOwp9Owp0eXBlZGVmIHN0cnVjdCBzZm50Q01h
cEV4dGVuZGVkU3ViSGVhZGVyIHNmbnRDTWFwRXh0ZW5kZWRTdWJIZWFkZXI7CmVudW0gewogIHNp
emVvZl9zZm50Q01hcEV4dGVuZGVkU3ViSGVhZGVyID0gMTIKfTsKCnN0cnVjdCBzZm50Q01hcEVu
Y29kaW5nIHsKICBVSW50MTYgcGxhdGZvcm1JRDsKICBVSW50MTYgc2NyaXB0SUQ7CiAgVUludDMy
IG9mZnNldDsKfTsKdHlwZWRlZiBzdHJ1Y3Qgc2ZudENNYXBFbmNvZGluZyBzZm50Q01hcEVuY29k
aW5nOwplbnVtIHsKICBzaXplb2Zfc2ZudENNYXBFbmNvZGluZyA9IDgKfTsKCnN0cnVjdCBzZm50
Q01hcEhlYWRlciB7CiAgVUludDE2IHZlcnNpb247CiAgVUludDE2IG51bVRhYmxlczsKICBzZm50
Q01hcEVuY29kaW5nIGVuY29kaW5nWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBzZm50Q01hcEhlYWRl
ciBzZm50Q01hcEhlYWRlcjsKZW51bSB7CiAgc2l6ZW9mX3NmbnRDTWFwSGVhZGVyID0gNAp9OwoK
CmVudW0gewogIG5hbWVGb250VGFibGVUYWcgPSAnbmFtZScKfTsKCmVudW0gewogIGtGb250Q29w
eXJpZ2h0TmFtZSA9IDAsCiAga0ZvbnRGYW1pbHlOYW1lID0gMSwKICBrRm9udFN0eWxlTmFtZSA9
IDIsCiAga0ZvbnRVbmlxdWVOYW1lID0gMywKICBrRm9udEZ1bGxOYW1lID0gNCwKICBrRm9udFZl
cnNpb25OYW1lID0gNSwKICBrRm9udFBvc3RzY3JpcHROYW1lID0gNiwKICBrRm9udFRyYWRlbWFy
a05hbWUgPSA3LAogIGtGb250TWFudWZhY3R1cmVyTmFtZSA9IDgsCiAga0ZvbnREZXNpZ25lck5h
bWUgPSA5LAogIGtGb250RGVzY3JpcHRpb25OYW1lID0gMTAsCiAga0ZvbnRWZW5kb3JVUkxOYW1l
ID0gMTEsCiAga0ZvbnREZXNpZ25lclVSTE5hbWUgPSAxMiwKICBrRm9udExpY2Vuc2VEZXNjcmlw
dGlvbk5hbWUgPSAxMywKICBrRm9udExpY2Vuc2VJbmZvVVJMTmFtZSA9IDE0LAogIGtGb250UHJl
ZmVycmVkRmFtaWx5TmFtZSA9IDE2LAogIGtGb250UHJlZmVycmVkU3ViZmFtaWx5TmFtZSA9IDE3
LAogIGtGb250TWFjQ29tcGF0aWJsZUZ1bGxOYW1lID0gMTgsCiAga0ZvbnRTYW1wbGVUZXh0TmFt
ZSA9IDE5LAogIGtGb250UG9zdFNjcmlwdENJRE5hbWUgPSAyMCwKICBrRm9udExhc3RSZXNlcnZl
ZE5hbWUgPSAyNTUKfTsKCgoKZW51bSB7CiAgICBrRm9udE5vTmFtZUNvZGUgPSAodW5zaWduZWQg
aW50KSh+MCkKfTsKCnN0cnVjdCBzZm50TmFtZVJlY29yZCB7CiAgVUludDE2IHBsYXRmb3JtSUQ7
CiAgVUludDE2IHNjcmlwdElEOwogIFVJbnQxNiBsYW5ndWFnZUlEOwogIFVJbnQxNiBuYW1lSUQ7
CiAgVUludDE2IGxlbmd0aDsKICBVSW50MTYgb2Zmc2V0Owp9Owp0eXBlZGVmIHN0cnVjdCBzZm50
TmFtZVJlY29yZCBzZm50TmFtZVJlY29yZDsKZW51bSB7CiAgc2l6ZW9mX3NmbnROYW1lUmVjb3Jk
ID0gMTIKfTsKCnN0cnVjdCBzZm50TmFtZUhlYWRlciB7CiAgVUludDE2IGZvcm1hdDsKICBVSW50
MTYgY291bnQ7CiAgVUludDE2IHN0cmluZ09mZnNldDsKICBzZm50TmFtZVJlY29yZCByZWNbMV07
Cn07CnR5cGVkZWYgc3RydWN0IHNmbnROYW1lSGVhZGVyIHNmbnROYW1lSGVhZGVyOwplbnVtIHsK
ICBzaXplb2Zfc2ZudE5hbWVIZWFkZXIgPSA2Cn07CgoKZW51bSB7CiAgdmFyaWF0aW9uRm9udFRh
YmxlVGFnID0gJ2Z2YXInCn07CgoKc3RydWN0IHNmbnRWYXJpYXRpb25BeGlzIHsKICBGb3VyQ2hh
ckNvZGUgYXhpc1RhZzsKICBGaXhlZCBtaW5WYWx1ZTsKICBGaXhlZCBkZWZhdWx0VmFsdWU7CiAg
Rml4ZWQgbWF4VmFsdWU7CiAgU0ludDE2IGZsYWdzOwogIFNJbnQxNiBuYW1lSUQ7Cn07CnR5cGVk
ZWYgc3RydWN0IHNmbnRWYXJpYXRpb25BeGlzIHNmbnRWYXJpYXRpb25BeGlzOwplbnVtIHsKICBz
aXplb2Zfc2ZudFZhcmlhdGlvbkF4aXMgPSAyMAp9OwoKCnN0cnVjdCBzZm50SW5zdGFuY2Ugewog
IFNJbnQxNiBuYW1lSUQ7CiAgU0ludDE2IGZsYWdzOwogIEZpeGVkIGNvb3JkWzFdOwoKfTsKdHlw
ZWRlZiBzdHJ1Y3Qgc2ZudEluc3RhbmNlIHNmbnRJbnN0YW5jZTsKZW51bSB7CiAgc2l6ZW9mX3Nm
bnRJbnN0YW5jZSA9IDQKfTsKCnN0cnVjdCBzZm50VmFyaWF0aW9uSGVhZGVyIHsKICBGaXhlZCB2
ZXJzaW9uOwogIFVJbnQxNiBvZmZzZXRUb0RhdGE7CiAgVUludDE2IGNvdW50U2l6ZVBhaXJzOwog
IFVJbnQxNiBheGlzQ291bnQ7CiAgVUludDE2IGF4aXNTaXplOwogIFVJbnQxNiBpbnN0YW5jZUNv
dW50OwogIFVJbnQxNiBpbnN0YW5jZVNpemU7CgogIHNmbnRWYXJpYXRpb25BeGlzIGF4aXNbMV07
CiAgc2ZudEluc3RhbmNlIGluc3RhbmNlWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBzZm50VmFyaWF0
aW9uSGVhZGVyIHNmbnRWYXJpYXRpb25IZWFkZXI7CmVudW0gewogIHNpemVvZl9zZm50VmFyaWF0
aW9uSGVhZGVyID0gMTYKfTsKCgplbnVtIHsKICBkZXNjcmlwdG9yRm9udFRhYmxlVGFnID0gJ2Zk
c2MnCn07CgpzdHJ1Y3Qgc2ZudEZvbnREZXNjcmlwdG9yIHsKICBGb3VyQ2hhckNvZGUgbmFtZTsK
ICBGaXhlZCB2YWx1ZTsKfTsKdHlwZWRlZiBzdHJ1Y3Qgc2ZudEZvbnREZXNjcmlwdG9yIHNmbnRG
b250RGVzY3JpcHRvcjsKc3RydWN0IHNmbnREZXNjcmlwdG9ySGVhZGVyIHsKICBGaXhlZCB2ZXJz
aW9uOwogIFNJbnQzMiBkZXNjcmlwdG9yQ291bnQ7CiAgc2ZudEZvbnREZXNjcmlwdG9yIGRlc2Ny
aXB0b3JbMV07Cn07CnR5cGVkZWYgc3RydWN0IHNmbnREZXNjcmlwdG9ySGVhZGVyIHNmbnREZXNj
cmlwdG9ySGVhZGVyOwplbnVtIHsKICBzaXplb2Zfc2ZudERlc2NyaXB0b3JIZWFkZXIgPSA4Cn07
CgoKZW51bSB7CiAgZmVhdHVyZUZvbnRUYWJsZVRhZyA9ICdmZWF0Jwp9OwoKc3RydWN0IHNmbnRG
ZWF0dXJlTmFtZSB7CiAgVUludDE2IGZlYXR1cmVUeXBlOwogIFVJbnQxNiBzZXR0aW5nQ291bnQ7
CiAgU0ludDMyIG9mZnNldFRvU2V0dGluZ3M7CiAgVUludDE2IGZlYXR1cmVGbGFnczsKICBVSW50
MTYgbmFtZUlEOwp9Owp0eXBlZGVmIHN0cnVjdCBzZm50RmVhdHVyZU5hbWUgc2ZudEZlYXR1cmVO
YW1lOwpzdHJ1Y3Qgc2ZudEZvbnRGZWF0dXJlU2V0dGluZyB7CiAgVUludDE2IHNldHRpbmc7CiAg
VUludDE2IG5hbWVJRDsKfTsKdHlwZWRlZiBzdHJ1Y3Qgc2ZudEZvbnRGZWF0dXJlU2V0dGluZyBz
Zm50Rm9udEZlYXR1cmVTZXR0aW5nOwpzdHJ1Y3Qgc2ZudEZvbnRSdW5GZWF0dXJlIHsKICBVSW50
MTYgZmVhdHVyZVR5cGU7CiAgVUludDE2IHNldHRpbmc7Cn07CnR5cGVkZWYgc3RydWN0IHNmbnRG
b250UnVuRmVhdHVyZSBzZm50Rm9udFJ1bkZlYXR1cmU7CnN0cnVjdCBzZm50RmVhdHVyZUhlYWRl
ciB7CiAgU0ludDMyIHZlcnNpb247CiAgVUludDE2IGZlYXR1cmVOYW1lQ291bnQ7CiAgVUludDE2
IGZlYXR1cmVTZXRDb3VudDsKICBTSW50MzIgcmVzZXJ2ZWQ7CiAgc2ZudEZlYXR1cmVOYW1lIG5h
bWVzWzFdOwogIHNmbnRGb250RmVhdHVyZVNldHRpbmcgc2V0dGluZ3NbMV07CiAgc2ZudEZvbnRS
dW5GZWF0dXJlIHJ1bnNbMV07Cn07CnR5cGVkZWYgc3RydWN0IHNmbnRGZWF0dXJlSGVhZGVyIHNm
bnRGZWF0dXJlSGVhZGVyOwoKZW51bSB7CiAgb3MyRm9udFRhYmxlVGFnID0gJ09TLzInCn07CgoK
ZW51bSB7CiAgbm9uR2x5cGhJRCA9IDY1NTM1Cn07CgoKCgoKCmVudW0gewogICAga0ZvbnROb1Bs
YXRmb3JtID0gKHVuc2lnbmVkIGludCkofjApLAogIGtGb250Tm9TY3JpcHQgPSAodW5zaWduZWQg
aW50KSh+MCksCiAga0ZvbnROb0xhbmd1YWdlID0gKHVuc2lnbmVkIGludCkofjApLAogIGtGb250
Tm9OYW1lID0gKHVuc2lnbmVkIGludCkofjApCn07CgoKCnR5cGVkZWYgVUludDMyIEZvbnROYW1l
Q29kZTsKCnR5cGVkZWYgVUludDMyIEZvbnRQbGF0Zm9ybUNvZGU7CnR5cGVkZWYgVUludDMyIEZv
bnRTY3JpcHRDb2RlOwp0eXBlZGVmIFVJbnQzMiBGb250TGFuZ3VhZ2VDb2RlOwoKCgoKc3RydWN0
IEZvbnRWYXJpYXRpb24gewogIEZvdXJDaGFyQ29kZSBuYW1lOwogIEZpeGVkIHZhbHVlOwp9Owp0
eXBlZGVmIHN0cnVjdCBGb250VmFyaWF0aW9uIEZvbnRWYXJpYXRpb247CgojcHJhZ21hIHBhY2so
cG9wKQojIDQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDIg
MwojIDU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKZXh0
ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgoKCgoKZW51bSB7CiAga0FUU09wdGlv
bkZsYWdzRGVmYXVsdCA9IGtOaWxPcHRpb25zLAogIGtBVFNPcHRpb25GbGFnc0NvbXBvc2VGb250
UG9zdFNjcmlwdE5hbWUgPSAxIDw8IDAsCiAga0FUU09wdGlvbkZsYWdzVXNlRGF0YUZvcmtBc1Jl
c291cmNlRm9yayA9IDEgPDwgOCwKICBrQVRTT3B0aW9uRmxhZ3NVc2VSZXNvdXJjZUZvcmsgPSAy
IDw8IDgsCiAga0FUU09wdGlvbkZsYWdzVXNlRGF0YUZvcmsgPSAzIDw8IDgKfTsKCmVudW0gewog
IGtBVFNJdGVyYXRpb25Db21wbGV0ZWQgPSAtOTgwTCwKICBrQVRTSW52YWxpZEZvbnRGYW1pbHlB
Y2Nlc3MgPSAtOTgxTCwKICBrQVRTSW52YWxpZEZvbnRBY2Nlc3MgPSAtOTgyTCwKICBrQVRTSXRl
cmF0aW9uU2NvcGVNb2RpZmllZCA9IC05ODNMLAogIGtBVFNJbnZhbGlkRm9udFRhYmxlQWNjZXNz
ID0gLTk4NEwsCiAga0FUU0ludmFsaWRGb250Q29udGFpbmVyQWNjZXNzID0gLTk4NUwsCiAga0FU
U0ludmFsaWRHbHlwaEFjY2VzcyA9IC05ODZMCn07CgoKdHlwZWRlZiBVSW50MzIgQVRTRm9udENv
bnRleHQ7CmVudW0gewogIGtBVFNGb250Q29udGV4dFVuc3BlY2lmaWVkID0gMCwKICBrQVRTRm9u
dENvbnRleHRHbG9iYWwgPSAxLAogIGtBVFNGb250Q29udGV4dExvY2FsID0gMgp9OwoKZW51bSB7
CiAga0FUU09wdGlvbkZsYWdzQWN0aXZhdGVEaXNhYmxlZCA9IDB4MDAwMDAwMDEgPDwgNSwKICBr
QVRTT3B0aW9uRmxhZ3NQcm9jZXNzU3ViZGlyZWN0b3JpZXMgPSAweDAwMDAwMDAxIDw8IDYsCiAg
a0FUU09wdGlvbkZsYWdzRG9Ob3ROb3RpZnkgPSAweDAwMDAwMDAxIDw8IDcsCiAga0FUU09wdGlv
bkZsYWdzUmVjb3JkUGVyc2lzdGVudGx5ID0gMHgwMDAwMDAwMSA8PCAxOAp9OwoKCmVudW0gewog
IGtBVFNPcHRpb25GbGFnc0l0ZXJhdGVCeVByZWNlZGVuY2VNYXNrID0gMHgwMDAwMDAwMSA8PCA1
LAogIGtBVFNPcHRpb25GbGFnc0luY2x1ZGVEaXNhYmxlZE1hc2sgPSAweDAwMDAwMDAxIDw8IDcs
CiAga0FUU09wdGlvbkZsYWdzSXRlcmF0aW9uU2NvcGVNYXNrID0gMHgwMDAwMDAwNyA8PCAxMiwK
ICBrQVRTT3B0aW9uRmxhZ3NEZWZhdWx0U2NvcGUgPSAweDAwMDAwMDAwIDw8IDEyLAogIGtBVFNP
cHRpb25GbGFnc1VuUmVzdHJpY3RlZFNjb3BlID0gMHgwMDAwMDAwMSA8PCAxMiwKICBrQVRTT3B0
aW9uRmxhZ3NSZXN0cmljdGVkU2NvcGUgPSAweDAwMDAwMDAyIDw8IDEyCn07Cgp0eXBlZGVmIE9T
U3RhdHVzICggKiBBVFNGb250RmFtaWx5QXBwbGllckZ1bmN0aW9uKShBVFNGb250RmFtaWx5UmVm
IGlGYW1pbHksIHZvaWQgKmlSZWZDb24pOwp0eXBlZGVmIE9TU3RhdHVzICggKiBBVFNGb250QXBw
bGllckZ1bmN0aW9uKShBVFNGb250UmVmIGlGb250LCB2b2lkICppUmVmQ29uKTsKdHlwZWRlZiBz
dHJ1Y3QgQVRTRm9udEZhbWlseUl0ZXJhdG9yXyogQVRTRm9udEZhbWlseUl0ZXJhdG9yOwp0eXBl
ZGVmIHN0cnVjdCBBVFNGb250SXRlcmF0b3JfKiBBVFNGb250SXRlcmF0b3I7CmVudW0gewogIGtB
VFNGb250RmlsdGVyQ3VycmVudFZlcnNpb24gPSAwCn07CgplbnVtIEFUU0ZvbnRGaWx0ZXJTZWxl
Y3RvciB7CiAga0FUU0ZvbnRGaWx0ZXJTZWxlY3RvclVuc3BlY2lmaWVkID0gMCwKICBrQVRTRm9u
dEZpbHRlclNlbGVjdG9yR2VuZXJhdGlvbiA9IDMsCiAga0FUU0ZvbnRGaWx0ZXJTZWxlY3RvckZv
bnRGYW1pbHkgPSA3LAogIGtBVFNGb250RmlsdGVyU2VsZWN0b3JGb250RmFtaWx5QXBwbGllckZ1
bmN0aW9uID0gOCwKICBrQVRTRm9udEZpbHRlclNlbGVjdG9yRm9udEFwcGxpZXJGdW5jdGlvbiA9
IDksCiAga0FUU0ZpbGVSZWZlcmVuY2VGaWx0ZXJTZWxlY3RvciA9IDEwCn07CnR5cGVkZWYgZW51
bSBBVFNGb250RmlsdGVyU2VsZWN0b3IgQVRTRm9udEZpbHRlclNlbGVjdG9yOwoKc3RydWN0IEFU
U0ZvbnRGaWx0ZXIgewogIFVJbnQzMiB2ZXJzaW9uOwogIEFUU0ZvbnRGaWx0ZXJTZWxlY3RvciBm
aWx0ZXJTZWxlY3RvcjsKICB1bmlvbiB7CiAgICBBVFNHZW5lcmF0aW9uIGdlbmVyYXRpb25GaWx0
ZXI7CiAgICBBVFNGb250RmFtaWx5UmVmIGZvbnRGYW1pbHlGaWx0ZXI7CiAgICBBVFNGb250RmFt
aWx5QXBwbGllckZ1bmN0aW9uIGZvbnRGYW1pbHlBcHBsaWVyRnVuY3Rpb25GaWx0ZXI7CiAgICBB
VFNGb250QXBwbGllckZ1bmN0aW9uIGZvbnRBcHBsaWVyRnVuY3Rpb25GaWx0ZXI7CiAgICBjb25z
dCBGU1JlZiAqIGZvbnRGaWxlUmVmRmlsdGVyOwogIH0gZmlsdGVyOwp9Owp0eXBlZGVmIHN0cnVj
dCBBVFNGb250RmlsdGVyIEFUU0ZvbnRGaWx0ZXI7Cgp0eXBlZGVmIHN0cnVjdCBBVFNGb250Tm90
aWZpY2F0aW9uUmVmXyogQVRTRm9udE5vdGlmaWNhdGlvblJlZjsKdHlwZWRlZiBzdHJ1Y3QgQVRT
Rm9udE5vdGlmaWNhdGlvbkluZm9SZWZfKiBBVFNGb250Tm90aWZpY2F0aW9uSW5mb1JlZjsKIyAx
NDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwplbnVtIEFU
U0ZvbnROb3RpZnlPcHRpb24gewoKCgoKICBrQVRTRm9udE5vdGlmeU9wdGlvbkRlZmF1bHQgPSAw
LAojIDE2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5oIiAzCiAg
a0FUU0ZvbnROb3RpZnlPcHRpb25SZWNlaXZlV2hpbGVTdXNwZW5kZWQgPSAxTCA8PCAwCn07CnR5
cGVkZWYgZW51bSBBVFNGb250Tm90aWZ5T3B0aW9uIEFUU0ZvbnROb3RpZnlPcHRpb247CiMgMTc4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKZW51bSBBVFNG
b250Tm90aWZ5QWN0aW9uIHsKIyAxODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJz
L0FUU0ZvbnQuaCIgMwogIGtBVFNGb250Tm90aWZ5QWN0aW9uRm9udHNDaGFuZ2VkID0gMSwKIyAx
OTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwogIGtBVFNG
b250Tm90aWZ5QWN0aW9uRGlyZWN0b3JpZXNDaGFuZ2VkID0gMgp9Owp0eXBlZGVmIGVudW0gQVRT
Rm9udE5vdGlmeUFjdGlvbiBBVFNGb250Tm90aWZ5QWN0aW9uOwojIDIxOCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9B
VFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5oIiAzCnR5cGVkZWYgdm9pZCAoICogQVRTTm90
aWZpY2F0aW9uQ2FsbGJhY2spKEFUU0ZvbnROb3RpZmljYXRpb25JbmZvUmVmIGluZm8sIHZvaWQg
KnJlZkNvbik7CiMgMjMzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250
LmgiIDMKZXh0ZXJuIEFUU0dlbmVyYXRpb24KQVRTR2V0R2VuZXJhdGlvbih2b2lkKSA7CiMgMzQz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCkFUU0ZvbnRBY3RpdmF0ZUZyb21GaWxlUmVmZXJlbmNlKAogIGNvbnN0IEZTUmVmICog
aUZpbGUsCiAgQVRTRm9udENvbnRleHQgaUNvbnRleHQsCiAgQVRTRm9udEZvcm1hdCBpRm9ybWF0
LAogIHZvaWQgKiBpUmVmQ29uLAogIEFUU09wdGlvbkZsYWdzIGlPcHRpb25zLAogIEFUU0ZvbnRD
b250YWluZXJSZWYgKiBvQ29udGFpbmVyKSA7CiMgMzY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdv
cmsvSGVhZGVycy9BVFNGb250LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFUU0ZvbnRBY3RpdmF0ZUZy
b21NZW1vcnkoCiAgTG9naWNhbEFkZHJlc3MgaURhdGEsCiAgQnl0ZUNvdW50IGlMZW5ndGgsCiAg
QVRTRm9udENvbnRleHQgaUNvbnRleHQsCiAgQVRTRm9udEZvcm1hdCBpRm9ybWF0LAogIHZvaWQg
KiBpUmVzZXJ2ZWQsCiAgQVRTT3B0aW9uRmxhZ3MgaU9wdGlvbnMsCiAgQVRTRm9udENvbnRhaW5l
clJlZiAqIG9Db250YWluZXIpIDsKIyAzODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFk
ZXJzL0FUU0ZvbnQuaCIgMwpleHRlcm4gT1NTdGF0dXMKQVRTRm9udERlYWN0aXZhdGUoCiAgQVRT
Rm9udENvbnRhaW5lclJlZiBpQ29udGFpbmVyLAogIHZvaWQgKiBpUmVmQ29uLAogIEFUU09wdGlv
bkZsYWdzIGlPcHRpb25zKSA7CiMgNDM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVy
cy9BVFNGb250LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFUU0ZvbnRHZXRDb250YWluZXJGcm9tRmls
ZVJlZmVyZW5jZSgKICBjb25zdCBGU1JlZiAqIGlGaWxlLAogIEFUU0ZvbnRDb250ZXh0IGlDb250
ZXh0LAogIEFUU09wdGlvbkZsYWdzIGlPcHRpb25zLAogIEFUU0ZvbnRDb250YWluZXJSZWYgKiBv
Q29udGFpbmVyKSA7CiMgNDc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNG
b250LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFUU0ZvbnRHZXRDb250YWluZXIoCiAgQVRTRm9udFJl
ZiBpRm9udCwKICBBVFNPcHRpb25GbGFncyBpT3B0aW9ucywKICBBVFNGb250Q29udGFpbmVyUmVm
ICogb0NvbnRhaW5lcikgOwojIDUxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMv
QVRTRm9udC5oIiAzCmV4dGVybiBPU1N0YXR1cwpBVFNGb250U2V0RW5hYmxlZCgKICBBVFNGb250
UmVmIGlGb250LAogIEFUU09wdGlvbkZsYWdzIGlPcHRpb25zLAogIEJvb2xlYW4gaUVuYWJsZWQp
IDsKIyA1NDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwpl
eHRlcm4gQm9vbGVhbgpBVFNGb250SXNFbmFibGVkKEFUU0ZvbnRSZWYgaUZvbnQpIDsKIyA1NjEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwpleHRlcm4gT1NT
dGF0dXMKQVRTRm9udEZhbWlseUFwcGx5RnVuY3Rpb24oCiAgQVRTRm9udEZhbWlseUFwcGxpZXJG
dW5jdGlvbiBpRnVuY3Rpb24sCiAgdm9pZCAqIGlSZWZDb24pIDsKIyA1NzggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
QVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwpleHRlcm4gT1NTdGF0dXMKQVRTRm9u
dEZhbWlseUl0ZXJhdG9yQ3JlYXRlKAogIEFUU0ZvbnRDb250ZXh0IGlDb250ZXh0LAogIGNvbnN0
IEFUU0ZvbnRGaWx0ZXIgKiBpRmlsdGVyLAogIHZvaWQgKiBpUmVmQ29uLAogIEFUU09wdGlvbkZs
YWdzIGlPcHRpb25zLAogIEFUU0ZvbnRGYW1pbHlJdGVyYXRvciAqIGlvSXRlcmF0b3IpIDsKIyA1
OTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwpleHRlcm4g
T1NTdGF0dXMKQVRTRm9udEZhbWlseUl0ZXJhdG9yUmVsZWFzZShBVFNGb250RmFtaWx5SXRlcmF0
b3IgKiBpb0l0ZXJhdG9yKSA7CiMgNjEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVy
cy9BVFNGb250LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFUU0ZvbnRGYW1pbHlJdGVyYXRvclJlc2V0
KAogIEFUU0ZvbnRDb250ZXh0IGlDb250ZXh0LAogIGNvbnN0IEFUU0ZvbnRGaWx0ZXIgKiBpRmls
dGVyLAogIHZvaWQgKiBpUmVmQ29uLAogIEFUU09wdGlvbkZsYWdzIGlPcHRpb25zLAogIEFUU0Zv
bnRGYW1pbHlJdGVyYXRvciAqIGlvSXRlcmF0b3IpIDsKIyA2MzMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZy
YW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwpleHRlcm4gT1NTdGF0dXMKQVRTRm9udEZhbWls
eUl0ZXJhdG9yTmV4dCgKICBBVFNGb250RmFtaWx5SXRlcmF0b3IgaUl0ZXJhdG9yLAogIEFUU0Zv
bnRGYW1pbHlSZWYgKiBvRmFtaWx5KSA7CiMgNjUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsv
SGVhZGVycy9BVFNGb250LmgiIDMKZXh0ZXJuIEFUU0ZvbnRGYW1pbHlSZWYKQVRTRm9udEZhbWls
eUZpbmRGcm9tTmFtZSgKICBDRlN0cmluZ1JlZiBpTmFtZSwKICBBVFNPcHRpb25GbGFncyBpT3B0
aW9ucykgOwojIDY2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5o
IiAzCmV4dGVybiBBVFNHZW5lcmF0aW9uCkFUU0ZvbnRGYW1pbHlHZXRHZW5lcmF0aW9uKEFUU0Zv
bnRGYW1pbHlSZWYgaUZhbWlseSkgOwojIDY4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hl
YWRlcnMvQVRTRm9udC5oIiAzCmV4dGVybiBPU1N0YXR1cwpBVFNGb250RmFtaWx5R2V0TmFtZSgK
ICBBVFNGb250RmFtaWx5UmVmIGlGYW1pbHksCiAgQVRTT3B0aW9uRmxhZ3MgaU9wdGlvbnMsCiAg
Q0ZTdHJpbmdSZWYgKiBvTmFtZSkgOwojIDcwMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hl
YWRlcnMvQVRTRm9udC5oIiAzCmV4dGVybiBUZXh0RW5jb2RpbmcKQVRTRm9udEZhbWlseUdldEVu
Y29kaW5nKEFUU0ZvbnRGYW1pbHlSZWYgaUZhbWlseSkgOwojIDcxOCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMu
ZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5oIiAzCmV4dGVybiBPU1N0YXR1cwpBVFNGb250QXBw
bHlGdW5jdGlvbigKICBBVFNGb250QXBwbGllckZ1bmN0aW9uIGlGdW5jdGlvbiwKICB2b2lkICog
aVJlZkNvbikgOwojIDczNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9u
dC5oIiAzCmV4dGVybiBPU1N0YXR1cwpBVFNGb250SXRlcmF0b3JDcmVhdGUoCiAgQVRTRm9udENv
bnRleHQgaUNvbnRleHQsCiAgY29uc3QgQVRTRm9udEZpbHRlciAqIGlGaWx0ZXIsCiAgdm9pZCAq
IGlSZWZDb24sCiAgQVRTT3B0aW9uRmxhZ3MgaU9wdGlvbnMsCiAgQVRTRm9udEl0ZXJhdG9yICog
aW9JdGVyYXRvcikgOwojIDc1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRT
Rm9udC5oIiAzCmV4dGVybiBPU1N0YXR1cwpBVFNGb250SXRlcmF0b3JSZWxlYXNlKEFUU0ZvbnRJ
dGVyYXRvciAqIGlvSXRlcmF0b3IpIDsKIyA3NzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9I
ZWFkZXJzL0FUU0ZvbnQuaCIgMwpleHRlcm4gT1NTdGF0dXMKQVRTRm9udEl0ZXJhdG9yUmVzZXQo
CiAgQVRTRm9udENvbnRleHQgaUNvbnRleHQsCiAgY29uc3QgQVRTRm9udEZpbHRlciAqIGlGaWx0
ZXIsCiAgdm9pZCAqIGlSZWZDb24sCiAgQVRTT3B0aW9uRmxhZ3MgaU9wdGlvbnMsCiAgQVRTRm9u
dEl0ZXJhdG9yICogaW9JdGVyYXRvcikgOwojIDc5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3Jr
L0hlYWRlcnMvQVRTRm9udC5oIiAzCmV4dGVybiBPU1N0YXR1cwpBVFNGb250SXRlcmF0b3JOZXh0
KAogIEFUU0ZvbnRJdGVyYXRvciBpSXRlcmF0b3IsCiAgQVRTRm9udFJlZiAqIG9Gb250KSA7CiMg
ODA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKZXh0ZXJu
IEFUU0ZvbnRSZWYKQVRTRm9udEZpbmRGcm9tTmFtZSgKICBDRlN0cmluZ1JlZiBpTmFtZSwKICBB
VFNPcHRpb25GbGFncyBpT3B0aW9ucykgOwojIDgyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3Jr
L0hlYWRlcnMvQVRTRm9udC5oIiAzCmV4dGVybiBBVFNGb250UmVmCkFUU0ZvbnRGaW5kRnJvbVBv
c3RTY3JpcHROYW1lKAogIENGU3RyaW5nUmVmIGlOYW1lLAogIEFUU09wdGlvbkZsYWdzIGlPcHRp
b25zKSA7CiMgODQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250Lmgi
IDMKZXh0ZXJuIE9TU3RhdHVzCkFUU0ZvbnRGaW5kRnJvbUNvbnRhaW5lcigKICBBVFNGb250Q29u
dGFpbmVyUmVmIGlDb250YWluZXIsCiAgQVRTT3B0aW9uRmxhZ3MgaU9wdGlvbnMsCiAgSXRlbUNv
dW50IGlDb3VudCwKICBBVFNGb250UmVmIGlvQXJyYXlbXSwKICBJdGVtQ291bnQgKiBvQ291bnQp
IDsKIyA4NjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwpl
eHRlcm4gQVRTR2VuZXJhdGlvbgpBVFNGb250R2V0R2VuZXJhdGlvbihBVFNGb250UmVmIGlGb250
KSA7CiMgODc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMK
ZXh0ZXJuIE9TU3RhdHVzCkFUU0ZvbnRHZXROYW1lKAogIEFUU0ZvbnRSZWYgaUZvbnQsCiAgQVRT
T3B0aW9uRmxhZ3MgaU9wdGlvbnMsCiAgQ0ZTdHJpbmdSZWYgKiBvTmFtZSkgOwojIDg5NCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5oIiAzCmV4dGVybiBPU1N0YXR1
cwpBVFNGb250R2V0UG9zdFNjcmlwdE5hbWUoCiAgQVRTRm9udFJlZiBpRm9udCwKICBBVFNPcHRp
b25GbGFncyBpT3B0aW9ucywKICBDRlN0cmluZ1JlZiAqIG9OYW1lKSA7CiMgOTEyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFU
U0ZvbnRHZXRUYWJsZURpcmVjdG9yeSgKICBBVFNGb250UmVmIGlGb250LAogIEJ5dGVDb3VudCBp
QnVmZmVyU2l6ZSwKICB2b2lkICogaW9CdWZmZXIsCiAgQnl0ZUNvdW50ICogb1NpemUpIDsKIyA5
MzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwpleHRlcm4g
T1NTdGF0dXMKQVRTRm9udEdldFRhYmxlKAogIEFUU0ZvbnRSZWYgaUZvbnQsCiAgRm91ckNoYXJD
b2RlIGlUYWcsCiAgQnl0ZU9mZnNldCBpT2Zmc2V0LAogIEJ5dGVDb3VudCBpQnVmZmVyU2l6ZSwK
ICB2b2lkICogaW9CdWZmZXIsCiAgQnl0ZUNvdW50ICogb1NpemUpIDsKIyA5NTIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwpleHRlcm4gT1NTdGF0dXMKQVRT
Rm9udEdldEhvcml6b250YWxNZXRyaWNzKAogIEFUU0ZvbnRSZWYgaUZvbnQsCiAgQVRTT3B0aW9u
RmxhZ3MgaU9wdGlvbnMsCiAgQVRTRm9udE1ldHJpY3MgKiBvTWV0cmljcykgOwojIDk3MCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5oIiAzCmV4dGVybiBPU1N0YXR1
cwpBVFNGb250R2V0VmVydGljYWxNZXRyaWNzKAogIEFUU0ZvbnRSZWYgaUZvbnQsCiAgQVRTT3B0
aW9uRmxhZ3MgaU9wdGlvbnMsCiAgQVRTRm9udE1ldHJpY3MgKiBvTWV0cmljcykgOwojIDk5MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5oIiAzCmV4dGVybiBBVFNG
b250RmFtaWx5UmVmCkFUU0ZvbnRGYW1pbHlGaW5kRnJvbVF1aWNrRHJhd05hbWUoQ29uc3RTdHIy
NTVQYXJhbSBpTmFtZSkgOwojIDEwMDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJz
L0FUU0ZvbnQuaCIgMwpleHRlcm4gT1NTdGF0dXMKQVRTRm9udEZhbWlseUdldFF1aWNrRHJhd05h
bWUoCiAgQVRTRm9udEZhbWlseVJlZiBpRmFtaWx5LAogIFN0cjI1NSBvTmFtZSkgOwojIDEwODAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwpleHRlcm4gT1NT
dGF0dXMKQVRTRm9udEdldEZpbGVSZWZlcmVuY2UoCiAgQVRTRm9udFJlZiBpRm9udCwKICBGU1Jl
ZiAqIG9GaWxlKSA7CiMgMTA5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRT
Rm9udC5oIiAzCmV4dGVybiBPU1N0YXR1cwpBVFNGb250R2V0Rm9udEZhbWlseVJlc291cmNlKAog
IEFUU0ZvbnRSZWYgaUZvbnQsCiAgQnl0ZUNvdW50IGlCdWZmZXJTaXplLAogIHZvaWQgKiBpb0J1
ZmZlciwKICBCeXRlQ291bnQgKiBvU2l6ZSkgOwojIDExMzggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1l
d29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwpleHRlcm4gT1NTdGF0dXMKQVRTRm9udE5vdGlmeSgK
ICBBVFNGb250Tm90aWZ5QWN0aW9uIGFjdGlvbiwKICB2b2lkICogaW5mbykgOwojIDExODMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwpleHRlcm4gT1NTdGF0
dXMKQVRTRm9udE5vdGlmaWNhdGlvblN1YnNjcmliZSgKICBBVFNOb3RpZmljYXRpb25DYWxsYmFj
ayBjYWxsYmFjaywKICBBVFNGb250Tm90aWZ5T3B0aW9uIG9wdGlvbnMsCiAgdm9pZCAqIGlSZWZj
b24sCiAgQVRTRm9udE5vdGlmaWNhdGlvblJlZiAqIG9Ob3RpZmljYXRpb25SZWYpIDsKIyAxMjE5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCkFUU0ZvbnROb3RpZmljYXRpb25VbnN1YnNjcmliZShBVFNGb250Tm90aWZpY2F0aW9u
UmVmIG5vdGlmaWNhdGlvblJlZikgOwojIDEyMzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9I
ZWFkZXJzL0FUU0ZvbnQuaCIgMwpzdHJ1Y3QgQVRTRm9udFF1ZXJ5U291cmNlQ29udGV4dCB7CgoK
CgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCgogIHZvaWQgKiByZWZDb247CgoKCgogIENGQWxsb2Nh
dG9yUmV0YWluQ2FsbEJhY2sgcmV0YWluOwoKCgoKICBDRkFsbG9jYXRvclJlbGVhc2VDYWxsQmFj
ayByZWxlYXNlOwp9Owp0eXBlZGVmIHN0cnVjdCBBVFNGb250UXVlcnlTb3VyY2VDb250ZXh0IEFU
U0ZvbnRRdWVyeVNvdXJjZUNvbnRleHQ7CgoKCgoKCgplbnVtIEFUU0ZvbnRRdWVyeU1lc3NhZ2VJ
RCB7CgoKCgoKCgogIGtBVFNRdWVyeUFjdGl2YXRlRm9udE1lc3NhZ2UgPSAnYXRzYScKfTsKdHlw
ZWRlZiBlbnVtIEFUU0ZvbnRRdWVyeU1lc3NhZ2VJRCBBVFNGb250UXVlcnlNZXNzYWdlSUQ7CiMg
MTMwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5oIiAzCnR5cGVk
ZWYgQ0ZQcm9wZXJ0eUxpc3RSZWYgKCAqIEFUU0ZvbnRRdWVyeUNhbGxiYWNrKShBVFNGb250UXVl
cnlNZXNzYWdlSUQgbXNnaWQsIENGUHJvcGVydHlMaXN0UmVmIGRhdGEsIHZvaWQgKnJlZkNvbik7
CiMgMTM0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5oIiAzCmV4
dGVybiBDRlJ1bkxvb3BTb3VyY2VSZWYKQVRTQ3JlYXRlRm9udFF1ZXJ5UnVuTG9vcFNvdXJjZSgK
ICBDRkluZGV4IHF1ZXJ5T3JkZXIsCiAgQ0ZJbmRleCBzb3VyY2VPcmRlciwKICBBVFNGb250UXVl
cnlDYWxsYmFjayBjYWxsb3V0LAogIGNvbnN0IEFUU0ZvbnRRdWVyeVNvdXJjZUNvbnRleHQgKiBj
b250ZXh0KSA7CiMgMTM2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9u
dC5oIiAzCiNkZWZpbmUga0FUU1F1ZXJ5Q2xpZW50UElEIENGU1RSKCJBVFMgY2xpZW50IHBpZCIp
CiMgMTM3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5oIiAzCiNk
ZWZpbmUga0FUU1F1ZXJ5UURGYW1pbHlOYW1lIENGU1RSKCJmb250IGZhbWlseSBuYW1lIikKIyAx
Mzg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKI2RlZmlu
ZSBrQVRTUXVlcnlGb250TmFtZSBDRlNUUigiZm9udCBuYW1lIikKIyAxMzk2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKI2RlZmluZSBrQVRTUXVlcnlGb250
UG9zdFNjcmlwdE5hbWUgQ0ZTVFIoImZvbnQgUFMgbmFtZSIpCiMgMTQwNyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9B
VFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5oIiAzCiNkZWZpbmUga0FUU1F1ZXJ5Rm9udE5h
bWVUYWJsZUVudHJpZXMgQ0ZTVFIoImZvbnQgbmFtZSB0YWJsZSBlbnRyaWVzIikKIyAxNDE3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKI2RlZmluZSBrQVRT
Rm9udE5hbWVUYWJsZUNvZGUgQ0ZTVFIoImZvbnQgbmFtZSBjb2RlIikKIyAxNDI2ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKI2RlZmluZSBrQVRTRm9udE5h
bWVUYWJsZVBsYXRmb3JtIENGU1RSKCJmb250IHBsYXRmb3JtIGNvZGUiKQojIDE0MzUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwojZGVmaW5lIGtBVFNGb250
TmFtZVRhYmxlU2NyaXB0IENGU1RSKCJmb250IHNjcmlwdCBjb2RlIikKIyAxNDQ0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKI2RlZmluZSBrQVRTRm9udE5h
bWVUYWJsZUxhbmd1YWdlIENGU1RSKCJmb250IGxhbmd1YWdlIGNvZGUiKQojIDE0NTMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIgMwojZGVmaW5lIGtBVFNGb250
TmFtZVRhYmxlQnl0ZXMgQ0ZTVFIoImZvbnQgbmFtZSB0YWJsZSBieXRlcyIpCiMgMTQ2NCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMvQVRTRm9udC5oIiAzCmVudW0gewoKCgoKCgog
IGtBVFNGb250QXV0b0FjdGl2YXRpb25EZWZhdWx0ID0gMCwKICBrQVRTRm9udEF1dG9BY3RpdmF0
aW9uRGlzYWJsZWQgPSAxLAogIGtBVFNGb250QXV0b0FjdGl2YXRpb25FbmFibGVkID0gMiwKCgoK
CgogIGtBVFNGb250QXV0b0FjdGl2YXRpb25Bc2sgPSA0Cn07CgoKdHlwZWRlZiBVSW50MzIgQVRT
Rm9udEF1dG9BY3RpdmF0aW9uU2V0dGluZzsKIyAxNTA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdv
cmsvSGVhZGVycy9BVFNGb250LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFUU0ZvbnRTZXRHbG9iYWxB
dXRvQWN0aXZhdGlvblNldHRpbmcoQVRTRm9udEF1dG9BY3RpdmF0aW9uU2V0dGluZyBpU2V0dGlu
ZykgOwojIDE1MzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL0FUU0ZvbnQuaCIg
MwpleHRlcm4gQVRTRm9udEF1dG9BY3RpdmF0aW9uU2V0dGluZwpBVFNGb250R2V0R2xvYmFsQXV0
b0FjdGl2YXRpb25TZXR0aW5nKHZvaWQpIDsKIyAxNTcxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdv
cmsvSGVhZGVycy9BVFNGb250LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFUU0ZvbnRTZXRBdXRvQWN0
aXZhdGlvblNldHRpbmdGb3JBcHBsaWNhdGlvbigKICBBVFNGb250QXV0b0FjdGl2YXRpb25TZXR0
aW5nIGlTZXR0aW5nLAogIENGVVJMUmVmIGlBcHBsaWNhdGlvbkZpbGVVUkwpIDsKIyAxNjA4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFNGb250LmgiIDMKZXh0ZXJuIEFUU0Zv
bnRBdXRvQWN0aXZhdGlvblNldHRpbmcKQVRTRm9udEdldEF1dG9BY3RpdmF0aW9uU2V0dGluZ0Zv
ckFwcGxpY2F0aW9uKENGVVJMUmVmIGlBcHBsaWNhdGlvbkZpbGVVUkwpIDsKCgoKCgoKCiNwcmFn
bWEgcGFjayhwb3ApCgoKfQojIDM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9B
VFMuaCIgMiAzCgoKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9IZWFkZXJzL1Nj
YWxlclN0cmVhbVR5cGVzLmgiIDEgMwojIDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVh
ZGVycy9TY2FsZXJTdHJlYW1UeXBlcy5oIiAzCiNkZWZpbmUgX19TQ0FMRVJTVFJFQU1UWVBFU19f
IAojIDQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9TY2FsZXJTdHJlYW1UeXBl
cy5oIiAzCiNwcmFnbWEgcGFjayhwdXNoLCAyKQoKCmVudW0gewogIGNleGVjNjhLID0gMHgwMDAw
MDAwMSwKICB0cnVldHlwZVN0cmVhbVR5cGUgPSAweDAwMDAwMDAxLAogIHR5cGUxU3RyZWFtVHlw
ZSA9IDB4MDAwMDAwMDIsCiAgdHlwZTNTdHJlYW1UeXBlID0gMHgwMDAwMDAwNCwKICB0eXBlNDJT
dHJlYW1UeXBlID0gMHgwMDAwMDAwOCwKICB0eXBlNDJHWFN0cmVhbVR5cGUgPSAweDAwMDAwMDEw
LAogIHBvcnRhYmxlU3RyZWFtVHlwZSA9IDB4MDAwMDAwMjAsCiAgZmxhdHRlbmVkU3RyZWFtVHlw
ZSA9IDB4MDAwMDAwNDAsCiAgY2lkVHlwZTJTdHJlYW1UeXBlID0gMHgwMDAwMDA4MCwKICBjaWRU
eXBlMFN0cmVhbVR5cGUgPSAweDAwMDAwMTAwLAogIHR5cGUxQ0ZGU3RyZWFtVHlwZSA9IDB4MDAw
MDAyMDAsCiAgZXZlbk9kZE1vZGlmaWVyU3RyZWFtVHlwZSA9IDB4MDAwMDgwMDAsCiAgZWV4ZWNC
aW5hcnlNb2RpZmllclN0cmVhbVR5cGUgPSAweDAwMDEwMDAwLAogIHVuaWNvZGVNYXBwaW5nTW9k
aWZpZXJTdHJlYW1UeXBlID0gMHgwMDAyMDAwMCwKICBzY2FsZXJTcGVjaWZjTW9kaWZpZXJNYXNr
ID0gMHgwMDAwRjAwMCwKICBzdHJlYW1UeXBlTW9kaWZpZXJNYXNrID0gKGludCkweEZGRkZGMDAw
Cn07CgoKdHlwZWRlZiBVSW50MzIgc2NhbGVyU3RyZWFtVHlwZUZsYWc7CmVudW0gewogIGRvd25s
b2FkU3RyZWFtQWN0aW9uID0gMCwKICBhc2NpaURvd25sb2FkU3RyZWFtQWN0aW9uID0gMSwKICBm
b250U2l6ZVF1ZXJ5U3RyZWFtQWN0aW9uID0gMiwKICBlbmNvZGluZ09ubHlTdHJlYW1BY3Rpb24g
PSAzLAogIHByZXJlcXVpc2l0ZVF1ZXJ5U3RyZWFtQWN0aW9uID0gNCwKICBwcmVyZXF1aXNpdGVJ
dGVtU3RyZWFtQWN0aW9uID0gNSwKICB2YXJpYXRpb25RdWVyeVN0cmVhbUFjdGlvbiA9IDYsCiAg
dmFyaWF0aW9uUFNPcGVyYXRvclN0cmVhbUFjdGlvbiA9IDcKfTsKCnR5cGVkZWYgU0ludDMyIHNj
YWxlclN0cmVhbUFjdGlvbjsKZW51bSB7CiAgc2VsZWN0QWxsVmFyaWF0aW9ucyA9IC0xCn07Cgpz
dHJ1Y3Qgc2NhbGVyUHJlcmVxdWlzaXRlSXRlbSB7CiAgU0ludDMyIGVudW1lcmF0aW9uOwogIFNJ
bnQzMiBzaXplOwogIHVuc2lnbmVkIGNoYXIgbmFtZVsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3Qgc2Nh
bGVyUHJlcmVxdWlzaXRlSXRlbSBzY2FsZXJQcmVyZXF1aXNpdGVJdGVtOwpzdHJ1Y3Qgc2NhbGVy
U3RyZWFtIHsKICBjb25zdCB2b2lkICogc3RyZWFtUmVmQ29uOwogIGNvbnN0IGNoYXIgKiB0YXJn
ZXRWZXJzaW9uOwogIHNjYWxlclN0cmVhbVR5cGVGbGFnIHR5cGVzOwogIHNjYWxlclN0cmVhbUFj
dGlvbiBhY3Rpb247CiAgVUludDMyIG1lbW9yeVNpemU7CiAgU0ludDMyIHZhcmlhdGlvbkNvdW50
OwogIGNvbnN0IHZvaWQgKiB2YXJpYXRpb25zOwogIHVuaW9uIHsKCiAgICBzdHJ1Y3QgewogICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCAqIGVuY29kaW5nOwogICAgICBTSW50MzIgKiBnbHlwaEJp
dHM7CiAgICAgIGNvbnN0IGNoYXIgKiBuYW1lOwogICAgfSBmb250OwoKCiAgICBzdHJ1Y3Qgewog
ICAgICBTSW50MzIgc2l6ZTsKICAgICAgY29uc3Qgdm9pZCAqIGxpc3Q7CiAgICB9IHByZXJlcXVp
c2l0ZVF1ZXJ5OwoKICAgIFNJbnQzMiBwcmVyZXF1aXNpdGVJdGVtOwoKICAgIFNJbnQzMiB2YXJp
YXRpb25RdWVyeVJlc3VsdDsKICB9IGluZm87Cn07CnR5cGVkZWYgc3RydWN0IHNjYWxlclN0cmVh
bSBzY2FsZXJTdHJlYW07CnN0cnVjdCBzY2FsZXJTdHJlYW1EYXRhIHsKICBTSW50MzIgaGV4Rmxh
ZzsKICBTSW50MzIgYnl0ZUNvdW50OwogIGNvbnN0IHZvaWQgKiBkYXRhOwp9Owp0eXBlZGVmIHN0
cnVjdCBzY2FsZXJTdHJlYW1EYXRhIHNjYWxlclN0cmVhbURhdGE7CgojcHJhZ21hIHBhY2socG9w
KQojIDQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0FUUy5mcmFtZXdvcmsvSGVhZGVycy9BVFMuaCIgMiAzCiMgMjcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvQXBwbGljYXRpb25TZXJ2aWNlcy5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL1FELmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29y
ay9IZWFkZXJzL1FELmgiIDMKI2RlZmluZSBfX1FEX18gCgoKCgoKCgojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVHcmFwaGljcy5oIiAxIDMKCgoKCgoj
ZGVmaW5lIENPUkVHUkFQSElDU19IXyAKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3Mu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0dCaXRtYXBDb250ZXh0LmgiIDEgMwoKCgoKCiNkZWZpbmUgQ0dC
SVRNQVBDT05URVhUX0hfIAoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0dDb250ZXh0LmgiIDEgMwoKCgoKCiNkZWZpbmUgQ0dDT05URVhUX0hfIAoKdHlw
ZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRSZWY7CgoKCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb2xvci5oIiAxIDMKCgoKCgojZGVmaW5l
IENHQ09MT1JfSF8gCgp0eXBlZGVmIHN0cnVjdCBDR0NvbG9yICpDR0NvbG9yUmVmOwoKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb2xvclNwYWNlLmgi
IDEgMwoKCgoKCiNkZWZpbmUgQ0dDT0xPUlNQQUNFX0hfIAoKdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xv
clNwYWNlICpDR0NvbG9yU3BhY2VSZWY7CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5m
cmFtZXdvcmsvSGVhZGVycy9DR0RhdGFQcm92aWRlci5oIiAxIDMKCgoKCgojZGVmaW5lIENHREFU
QVBST1ZJREVSX0hfIAoKdHlwZWRlZiBzdHJ1Y3QgQ0dEYXRhUHJvdmlkZXIgKkNHRGF0YVByb3Zp
ZGVyUmVmOwoKCgoKCgojIDEgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4x
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZy
YW1ld29yay9IZWFkZXJzL0NHRGF0YVByb3ZpZGVyLmgiIDIgMwoKCgoKCgp0eXBlZGVmIHNpemVf
dCAoKkNHRGF0YVByb3ZpZGVyR2V0Qnl0ZXNDYWxsYmFjaykodm9pZCAqaW5mbywgdm9pZCAqYnVm
ZmVyLAogICAgc2l6ZV90IGNvdW50KTsKCgoKCgp0eXBlZGVmIG9mZl90ICgqQ0dEYXRhUHJvdmlk
ZXJTa2lwRm9yd2FyZENhbGxiYWNrKSh2b2lkICppbmZvLCBvZmZfdCBjb3VudCk7CgoKCgp0eXBl
ZGVmIHZvaWQgKCpDR0RhdGFQcm92aWRlclJld2luZENhbGxiYWNrKSh2b2lkICppbmZvKTsKCgoK
CnR5cGVkZWYgdm9pZCAoKkNHRGF0YVByb3ZpZGVyUmVsZWFzZUluZm9DYWxsYmFjaykodm9pZCAq
aW5mbyk7CiMgNTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NH
RGF0YVByb3ZpZGVyLmgiIDMKc3RydWN0IENHRGF0YVByb3ZpZGVyU2VxdWVudGlhbENhbGxiYWNr
cyB7CiAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsKICAgIENHRGF0YVByb3ZpZGVyR2V0Qnl0ZXND
YWxsYmFjayBnZXRCeXRlczsKICAgIENHRGF0YVByb3ZpZGVyU2tpcEZvcndhcmRDYWxsYmFjayBz
a2lwRm9yd2FyZDsKICAgIENHRGF0YVByb3ZpZGVyUmV3aW5kQ2FsbGJhY2sgcmV3aW5kOwogICAg
Q0dEYXRhUHJvdmlkZXJSZWxlYXNlSW5mb0NhbGxiYWNrIHJlbGVhc2VJbmZvOwp9Owp0eXBlZGVm
IHN0cnVjdCBDR0RhdGFQcm92aWRlclNlcXVlbnRpYWxDYWxsYmFja3MKICAgIENHRGF0YVByb3Zp
ZGVyU2VxdWVudGlhbENhbGxiYWNrczsKCgoKdHlwZWRlZiBjb25zdCB2b2lkICooKkNHRGF0YVBy
b3ZpZGVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFjaykodm9pZCAqaW5mbyk7CgoKCgp0eXBlZGVmIHZv
aWQgKCpDR0RhdGFQcm92aWRlclJlbGVhc2VCeXRlUG9pbnRlckNhbGxiYWNrKSh2b2lkICppbmZv
LAogICAgY29uc3Qgdm9pZCAqcG9pbnRlcik7CgoKCgp0eXBlZGVmIHNpemVfdCAoKkNHRGF0YVBy
b3ZpZGVyR2V0Qnl0ZXNBdFBvc2l0aW9uQ2FsbGJhY2spKHZvaWQgKmluZm8sCiAgICB2b2lkICpi
dWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpOwojIDk0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
cmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0RhdGFQcm92aWRlci5oIiAzCnN0cnVjdCBD
R0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyB7CiAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsK
ICAgIENHRGF0YVByb3ZpZGVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFjayBnZXRCeXRlUG9pbnRlcjsK
ICAgIENHRGF0YVByb3ZpZGVyUmVsZWFzZUJ5dGVQb2ludGVyQ2FsbGJhY2sgcmVsZWFzZUJ5dGVQ
b2ludGVyOwogICAgQ0dEYXRhUHJvdmlkZXJHZXRCeXRlc0F0UG9zaXRpb25DYWxsYmFjayBnZXRC
eXRlc0F0UG9zaXRpb247CiAgICBDR0RhdGFQcm92aWRlclJlbGVhc2VJbmZvQ2FsbGJhY2sgcmVs
ZWFzZUluZm87Cn07CnR5cGVkZWYgc3RydWN0IENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tz
IENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzOwoKCgpleHRlcm4gIkMiIENGVHlwZUlEIENH
RGF0YVByb3ZpZGVyR2V0VHlwZUlEKHZvaWQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgQ0dEYXRhUHJvdmlkZXJSZWYgQ0dEYXRhUHJv
dmlkZXJDcmVhdGVTZXF1ZW50aWFsKHZvaWQgKmluZm8sCiAgICBjb25zdCBDR0RhdGFQcm92aWRl
clNlcXVlbnRpYWxDYWxsYmFja3MgKmNhbGxiYWNrcykKICAgIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDR0RhdGFQcm92aWRlclJlZiBDR0Rh
dGFQcm92aWRlckNyZWF0ZURpcmVjdCh2b2lkICppbmZvLCBvZmZfdCBzaXplLAogICAgY29uc3Qg
Q0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgKmNhbGxiYWNrcykKICAgIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgp0eXBlZGVmIHZvaWQgKCpDR0RhdGFQcm92
aWRlclJlbGVhc2VEYXRhQ2FsbGJhY2spKHZvaWQgKmluZm8sIGNvbnN0IHZvaWQgKmRhdGEsCiAg
ICBzaXplX3Qgc2l6ZSk7CgoKCgoKZXh0ZXJuICJDIiBDR0RhdGFQcm92aWRlclJlZiBDR0RhdGFQ
cm92aWRlckNyZWF0ZVdpdGhEYXRhKHZvaWQgKmluZm8sCiAgICBjb25zdCB2b2lkICpkYXRhLCBz
aXplX3Qgc2l6ZSwKICAgIENHRGF0YVByb3ZpZGVyUmVsZWFzZURhdGFDYWxsYmFjayByZWxlYXNl
RGF0YSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRl
cm4gIkMiIENHRGF0YVByb3ZpZGVyUmVmIENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShD
RkRhdGFSZWYgZGF0YSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwoKCgpleHRlcm4gIkMiIENHRGF0YVByb3ZpZGVyUmVmIENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0
aFVSTChDRlVSTFJlZiB1cmwpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKCgoKZXh0ZXJuICJDIiBDR0RhdGFQcm92aWRlclJlZgogICAgQ0dEYXRhUHJvdmlkZXJD
cmVhdGVXaXRoRmlsZW5hbWUoY29uc3QgY2hhciAqZmlsZW5hbWUpCiAgICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgQ0dEYXRhUHJvdmlkZXJS
ZWYgQ0dEYXRhUHJvdmlkZXJSZXRhaW4oQ0dEYXRhUHJvdmlkZXJSZWYgcHJvdmlkZXIpCiAgICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgdm9p
ZCBDR0RhdGFQcm92aWRlclJlbGVhc2UoQ0dEYXRhUHJvdmlkZXJSZWYgcHJvdmlkZXIpCiAgICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIENG
RGF0YVJlZiBDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHRGF0YVByb3ZpZGVyUmVmIHByb3ZpZGVy
KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCnR5cGVk
ZWYgdm9pZCAoKkNHRGF0YVByb3ZpZGVyU2tpcEJ5dGVzQ2FsbGJhY2spKHZvaWQgKmluZm8sIHNp
emVfdCBjb3VudCk7CiMgMTg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVh
ZGVycy9DR0RhdGFQcm92aWRlci5oIiAzCnN0cnVjdCBDR0RhdGFQcm92aWRlckNhbGxiYWNrcyB7
CiAgICBDR0RhdGFQcm92aWRlckdldEJ5dGVzQ2FsbGJhY2sgZ2V0Qnl0ZXM7CiAgICBDR0RhdGFQ
cm92aWRlclNraXBCeXRlc0NhbGxiYWNrIHNraXBCeXRlczsKICAgIENHRGF0YVByb3ZpZGVyUmV3
aW5kQ2FsbGJhY2sgcmV3aW5kOwogICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNlSW5mb0NhbGxiYWNr
IHJlbGVhc2VQcm92aWRlcjsKfTsKdHlwZWRlZiBzdHJ1Y3QgQ0dEYXRhUHJvdmlkZXJDYWxsYmFj
a3MgQ0dEYXRhUHJvdmlkZXJDYWxsYmFja3M7CgoKCgp0eXBlZGVmIHNpemVfdCAoKkNHRGF0YVBy
b3ZpZGVyR2V0Qnl0ZXNBdE9mZnNldENhbGxiYWNrKSh2b2lkICppbmZvLAogICAgdm9pZCAqYnVm
ZmVyLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgY291bnQpOwojIDIxNSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3Jl
R3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dEYXRhUHJvdmlkZXIuaCIgMwpzdHJ1Y3QgQ0dE
YXRhUHJvdmlkZXJEaXJlY3RBY2Nlc3NDYWxsYmFja3MgewogICAgQ0dEYXRhUHJvdmlkZXJHZXRC
eXRlUG9pbnRlckNhbGxiYWNrIGdldEJ5dGVQb2ludGVyOwogICAgQ0dEYXRhUHJvdmlkZXJSZWxl
YXNlQnl0ZVBvaW50ZXJDYWxsYmFjayByZWxlYXNlQnl0ZVBvaW50ZXI7CiAgICBDR0RhdGFQcm92
aWRlckdldEJ5dGVzQXRPZmZzZXRDYWxsYmFjayBnZXRCeXRlczsKICAgIENHRGF0YVByb3ZpZGVy
UmVsZWFzZUluZm9DYWxsYmFjayByZWxlYXNlUHJvdmlkZXI7Cn07CnR5cGVkZWYgc3RydWN0IENH
RGF0YVByb3ZpZGVyRGlyZWN0QWNjZXNzQ2FsbGJhY2tzCiAgICBDR0RhdGFQcm92aWRlckRpcmVj
dEFjY2Vzc0NhbGxiYWNrczsKCgoKCmV4dGVybiAiQyIgQ0dEYXRhUHJvdmlkZXJSZWYgQ0dEYXRh
UHJvdmlkZXJDcmVhdGUodm9pZCAqaW5mbywKICAgIGNvbnN0IENHRGF0YVByb3ZpZGVyQ2FsbGJh
Y2tzICpjYWxsYmFja3MpCiAgICBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgQ0dEYXRhUHJvdmlkZXJSZWYgQ0dEYXRhUHJv
dmlkZXJDcmVhdGVEaXJlY3RBY2Nlc3Modm9pZCAqaW5mbywKICAgIHNpemVfdCBzaXplLCBjb25z
dCBDR0RhdGFQcm92aWRlckRpcmVjdEFjY2Vzc0NhbGxiYWNrcyAqY2FsbGJhY2tzKQogICAgX19h
dHRyaWJ1dGVfXygoZGVwcmVjYXRlZCx2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb2xvclNwYWNlLmgiIDIg
MwoKCgplbnVtIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQgewogIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQsCiAga0NHUmVuZGVyaW5nSW50ZW50QWJzb2x1dGVDb2xvcmltZXRyaWMsCiAga0NHUmVu
ZGVyaW5nSW50ZW50UmVsYXRpdmVDb2xvcmltZXRyaWMsCiAga0NHUmVuZGVyaW5nSW50ZW50UGVy
Y2VwdHVhbCwKICBrQ0dSZW5kZXJpbmdJbnRlbnRTYXR1cmF0aW9uCn07CnR5cGVkZWYgZW51bSBD
R0NvbG9yUmVuZGVyaW5nSW50ZW50IENHQ29sb3JSZW5kZXJpbmdJbnRlbnQ7CgoKCmVudW0gQ0dD
b2xvclNwYWNlTW9kZWwgewogIGtDR0NvbG9yU3BhY2VNb2RlbFVua25vd24gPSAtMSwKICBrQ0dD
b2xvclNwYWNlTW9kZWxNb25vY2hyb21lLAogIGtDR0NvbG9yU3BhY2VNb2RlbFJHQiwKICBrQ0dD
b2xvclNwYWNlTW9kZWxDTVlLLAogIGtDR0NvbG9yU3BhY2VNb2RlbExhYiwKICBrQ0dDb2xvclNw
YWNlTW9kZWxEZXZpY2VOLAogIGtDR0NvbG9yU3BhY2VNb2RlbEluZGV4ZWQsCiAga0NHQ29sb3JT
cGFjZU1vZGVsUGF0dGVybgp9Owp0eXBlZGVmIGVudW0gQ0dDb2xvclNwYWNlTW9kZWwgQ0dDb2xv
clNwYWNlTW9kZWw7CgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHQ29sb3JTcGFj
ZUdlbmVyaWNHcmF5CiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHQ29sb3JTcGFjZUdlbmVyaWNSR0IKICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBjb25z
dCBDRlN0cmluZ1JlZiBrQ0dDb2xvclNwYWNlR2VuZXJpY0NNWUsKICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYg
a0NHQ29sb3JTcGFjZUdlbmVyaWNSR0JMaW5lYXIKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0NvbG9y
U3BhY2VBZG9iZVJHQjE5OTgKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKCgoKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHQ29sb3JTcGFjZVNSR0IK
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0dDb2xvclNwYWNlR2VuZXJpY0dyYXlHYW1tYTJfMgogIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHQ29sb3JT
cGFjZVJlZiBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VHcmF5KHZvaWQpCiAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dDb2xvclNwYWNlUmVm
IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQih2b2lkKQogIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHQ29sb3JTcGFjZVJlZiBDR0NvbG9y
U3BhY2VDcmVhdGVEZXZpY2VDTVlLKHZvaWQpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCgoKCgpleHRlcm4gIkMiIENHQ29sb3JTcGFjZVJlZiBDR0NvbG9yU3Bh
Y2VDcmVhdGVDYWxpYnJhdGVkR3JheShjb25zdCBDR0Zsb2F0CiAgd2hpdGVQb2ludFszXSwgY29u
c3QgQ0dGbG9hdCBibGFja1BvaW50WzNdLCBDR0Zsb2F0IGdhbW1hKQogIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDExNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3Mu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb2xvclNwYWNlLmgiIDMKZXh0ZXJuICJDIiBDR0NvbG9yU3Bh
Y2VSZWYgQ0dDb2xvclNwYWNlQ3JlYXRlQ2FsaWJyYXRlZFJHQihjb25zdCBDR0Zsb2F0CiAgd2hp
dGVQb2ludFszXSwgY29uc3QgQ0dGbG9hdCBibGFja1BvaW50WzNdLCBjb25zdCBDR0Zsb2F0IGdh
bW1hWzNdLAogIGNvbnN0IENHRmxvYXQgbWF0cml4WzldKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKIyAxMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29y
ay9IZWFkZXJzL0NHQ29sb3JTcGFjZS5oIiAzCmV4dGVybiAiQyIgQ0dDb2xvclNwYWNlUmVmIENH
Q29sb3JTcGFjZUNyZWF0ZUxhYihjb25zdCBDR0Zsb2F0IHdoaXRlUG9pbnRbM10sCiAgY29uc3Qg
Q0dGbG9hdCBibGFja1BvaW50WzNdLCBjb25zdCBDR0Zsb2F0IHJhbmdlWzRdKQogIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDR0NvbG9yU3Bh
Y2VSZWYgQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aElDQ1Byb2ZpbGUoQ0ZEYXRhUmVmIGRhdGEpCiAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTQ4ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbG9yU3BhY2UuaCIgMwpleHRlcm4g
IkMiIENHQ29sb3JTcGFjZVJlZiBDR0NvbG9yU3BhY2VDcmVhdGVJQ0NCYXNlZChzaXplX3QgbkNv
bXBvbmVudHMsCiAgY29uc3QgQ0dGbG9hdCAqcmFuZ2UsIENHRGF0YVByb3ZpZGVyUmVmIHByb2Zp
bGUsIENHQ29sb3JTcGFjZVJlZiBhbHRlcm5hdGUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CiMgMTYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsv
SGVhZGVycy9DR0NvbG9yU3BhY2UuaCIgMwpleHRlcm4gIkMiIENHQ29sb3JTcGFjZVJlZiBDR0Nv
bG9yU3BhY2VDcmVhdGVJbmRleGVkKENHQ29sb3JTcGFjZVJlZiBiYXNlU3BhY2UsCiAgc2l6ZV90
IGxhc3RJbmRleCwgY29uc3QgdW5zaWduZWQgY2hhciAqY29sb3JUYWJsZSkKICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0ZXJuICJDIiBDR0NvbG9yU3Bh
Y2VSZWYgQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybihDR0NvbG9yU3BhY2VSZWYgYmFzZVNwYWNl
KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJD
IiBDR0NvbG9yU3BhY2VSZWYgQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aFBsYXRmb3JtQ29sb3JTcGFj
ZSh2b2lkICpyZWYpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CgpleHRlcm4gIkMiIENHQ29sb3JTcGFjZVJlZiBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShD
RlN0cmluZ1JlZiBuYW1lKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwoKCgoKZXh0ZXJuICJDIiBDR0NvbG9yU3BhY2VSZWYgQ0dDb2xvclNwYWNlUmV0YWluKENHQ29s
b3JTcGFjZVJlZiBzcGFjZSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKCgoKCmV4dGVybiAiQyIgdm9pZCBDR0NvbG9yU3BhY2VSZWxlYXNlKENHQ29sb3JTcGFjZVJl
ZiBzcGFjZSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4
dGVybiAiQyIgQ0ZTdHJpbmdSZWYgQ0dDb2xvclNwYWNlQ29weU5hbWUoQ0dDb2xvclNwYWNlUmVm
IHNwYWNlKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRl
cm4gIkMiIENGVHlwZUlEIENHQ29sb3JTcGFjZUdldFR5cGVJRCh2b2lkKQogIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHNpemVfdCBDR0NvbG9y
U3BhY2VHZXROdW1iZXJPZkNvbXBvbmVudHMoQ0dDb2xvclNwYWNlUmVmIHNwYWNlKQogIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHQ29sb3JT
cGFjZU1vZGVsIENHQ29sb3JTcGFjZUdldE1vZGVsKENHQ29sb3JTcGFjZVJlZiBzcGFjZSkKICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIENH
Q29sb3JTcGFjZVJlZiBDR0NvbG9yU3BhY2VHZXRCYXNlQ29sb3JTcGFjZShDR0NvbG9yU3BhY2VS
ZWYgc3BhY2UpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoK
ZXh0ZXJuICJDIiBzaXplX3QgQ0dDb2xvclNwYWNlR2V0Q29sb3JUYWJsZUNvdW50KENHQ29sb3JT
cGFjZVJlZiBzcGFjZSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
IyAyNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHQ29sb3JT
cGFjZS5oIiAzCmV4dGVybiAiQyIgdm9pZCBDR0NvbG9yU3BhY2VHZXRDb2xvclRhYmxlKENHQ29s
b3JTcGFjZVJlZiBzcGFjZSwgdWludDhfdCAqdGFibGUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENGRGF0YVJlZiBDR0NvbG9yU3BhY2VD
b3B5SUNDUHJvZmlsZShDR0NvbG9yU3BhY2VSZWYgc3BhY2UpCiAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1l
d29yay9IZWFkZXJzL0NHQ29sb3IuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3Mu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0dQYXR0ZXJuLmgiIDEgMwoKCgoKCiNkZWZpbmUgQ0dQQVRURVJO
X0hfIAoKdHlwZWRlZiBzdHJ1Y3QgQ0dQYXR0ZXJuICpDR1BhdHRlcm5SZWY7CgoKIyAxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbnRleHQuaCIgMSAzCiMg
MTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUGF0dGVybi5o
IiAyIDMKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQ
YXR0ZXJuLmgiIDMKZW51bSBDR1BhdHRlcm5UaWxpbmcgewogICAga0NHUGF0dGVyblRpbGluZ05v
RGlzdG9ydGlvbiwKICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmdNaW5pbWFsRGlz
dG9ydGlvbiwKICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcKfTsKdHlwZWRlZiBl
bnVtIENHUGF0dGVyblRpbGluZyBDR1BhdHRlcm5UaWxpbmc7CiMgNDMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29y
ZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUGF0dGVybi5oIiAzCnR5cGVkZWYgdm9pZCAo
KkNHUGF0dGVybkRyYXdQYXR0ZXJuQ2FsbGJhY2spKHZvaWQgKmluZm8sIENHQ29udGV4dFJlZiBj
KTsKdHlwZWRlZiB2b2lkICgqQ0dQYXR0ZXJuUmVsZWFzZUluZm9DYWxsYmFjaykodm9pZCAqaW5m
byk7CgpzdHJ1Y3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHsKICAgIHVuc2lnbmVkIGludCB2ZXJzaW9u
OwogICAgQ0dQYXR0ZXJuRHJhd1BhdHRlcm5DYWxsYmFjayBkcmF3UGF0dGVybjsKICAgIENHUGF0
dGVyblJlbGVhc2VJbmZvQ2FsbGJhY2sgcmVsZWFzZUluZm87Cn07CnR5cGVkZWYgc3RydWN0IENH
UGF0dGVybkNhbGxiYWNrcyBDR1BhdHRlcm5DYWxsYmFja3M7CgoKCmV4dGVybiAiQyIgQ0ZUeXBl
SUQgQ0dQYXR0ZXJuR2V0VHlwZUlEKHZvaWQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR1BhdHRlcm5SZWYgQ0dQYXR0ZXJuQ3JlYXRl
KHZvaWQgKmluZm8sIENHUmVjdCBib3VuZHMsCiAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRyaXgs
IENHRmxvYXQgeFN0ZXAsIENHRmxvYXQgeVN0ZXAsCiAgICBDR1BhdHRlcm5UaWxpbmcgdGlsaW5n
LCBib29sIGlzQ29sb3JlZCwKICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNrcyAqY2FsbGJhY2tz
KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJu
ICJDIiBDR1BhdHRlcm5SZWYgQ0dQYXR0ZXJuUmV0YWluKENHUGF0dGVyblJlZiBwYXR0ZXJuKQog
ICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMi
IHZvaWQgQ0dQYXR0ZXJuUmVsZWFzZShDR1BhdHRlcm5SZWYgcGF0dGVybikKICAgIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFw
aGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbG9yLmgiIDIgMwoKCgoKCmV4dGVybiAiQyIgQ0dD
b2xvclJlZiBDR0NvbG9yQ3JlYXRlKENHQ29sb3JTcGFjZVJlZiBzcGFjZSwKICBjb25zdCBDR0Zs
b2F0IGNvbXBvbmVudHNbXSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CgoKCmV4dGVybiAiQyIgQ0dDb2xvclJlZiBDR0NvbG9yQ3JlYXRlR2VuZXJpY0dyYXkoQ0dGbG9h
dCBncmF5LCBDR0Zsb2F0IGFscGhhKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHQ29sb3JSZWYgQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0Io
Q0dGbG9hdCByZWQsIENHRmxvYXQgZ3JlZW4sCiAgQ0dGbG9hdCBibHVlLCBDR0Zsb2F0IGFscGhh
KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBD
R0NvbG9yUmVmIENHQ29sb3JDcmVhdGVHZW5lcmljQ01ZSyhDR0Zsb2F0IGN5YW4sIENHRmxvYXQg
bWFnZW50YSwKICBDR0Zsb2F0IHllbGxvdywgQ0dGbG9hdCBibGFjaywgQ0dGbG9hdCBhbHBoYSkK
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA0NCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb2xvci5oIiAzCmV4dGVybiAiQyIg
Q0dDb2xvclJlZiBDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihDRlN0cmluZ1JlZiBjb2xvck5hbWUp
CiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMi
IENHQ29sb3JSZWYgQ0dDb2xvckNyZWF0ZVdpdGhQYXR0ZXJuKENHQ29sb3JTcGFjZVJlZiBzcGFj
ZSwKICBDR1BhdHRlcm5SZWYgcGF0dGVybiwgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzW10pCiAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dD
b2xvclJlZiBDR0NvbG9yQ3JlYXRlQ29weShDR0NvbG9yUmVmIGNvbG9yKQogIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHQ29sb3JSZWYgQ0dD
b2xvckNyZWF0ZUNvcHlXaXRoQWxwaGEoQ0dDb2xvclJlZiBjb2xvciwKICBDR0Zsb2F0IGFscGhh
KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIg
Q0dDb2xvclJlZiBDR0NvbG9yUmV0YWluKENHQ29sb3JSZWYgY29sb3IpCiAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb2xvclJl
bGVhc2UoQ0dDb2xvclJlZiBjb2xvcikKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKZXh0ZXJuICJDIiBib29sIENHQ29sb3JFcXVhbFRvQ29sb3IoQ0dDb2xvclJl
ZiBjb2xvcjEsIENHQ29sb3JSZWYgY29sb3IyKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBzaXplX3QgQ0dDb2xvckdldE51bWJlck9mQ29t
cG9uZW50cyhDR0NvbG9yUmVmIGNvbG9yKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIGNvbnN0IENHRmxvYXQgKkNHQ29sb3JHZXRDb21wb25l
bnRzKENHQ29sb3JSZWYgY29sb3IpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dGbG9hdCBDR0NvbG9yR2V0QWxwaGEoQ0dDb2xvclJlZiBj
b2xvcikKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJu
ICJDIiBDR0NvbG9yU3BhY2VSZWYgQ0dDb2xvckdldENvbG9yU3BhY2UoQ0dDb2xvclJlZiBjb2xv
cikKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAi
QyIgQ0dQYXR0ZXJuUmVmIENHQ29sb3JHZXRQYXR0ZXJuKENHQ29sb3JSZWYgY29sb3IpCiAgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0ZUeXBl
SUQgQ0dDb2xvckdldFR5cGVJRCh2b2lkKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHQ29sb3JXaGl0
ZQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKZXh0ZXJuICJDIiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0dDb2xvckJsYWNrCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0NvbG9yQ2xl
YXIKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb250ZXh0LmgiIDIgMwojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHQ29sb3JTcGFjZS5o
IiAxIDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dD
b250ZXh0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFk
ZXJzL0NHRm9udC5oIiAxIDMKCgoKCgojZGVmaW5lIENHRk9OVF9IXyAKCgoKdHlwZWRlZiBzdHJ1
Y3QgQ0dGb250ICpDR0ZvbnRSZWY7CgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgQ0dGb250SW5k
ZXg7CgoKCnR5cGVkZWYgQ0dGb250SW5kZXggQ0dHbHlwaDsKCgoKCgoKZW51bSBDR0ZvbnRQb3N0
U2NyaXB0Rm9ybWF0IHsKICBrQ0dGb250UG9zdFNjcmlwdEZvcm1hdFR5cGUxID0gMSwKICBrQ0dG
b250UG9zdFNjcmlwdEZvcm1hdFR5cGUzID0gMywKICBrQ0dGb250UG9zdFNjcmlwdEZvcm1hdFR5
cGU0MiA9IDQyCn07CnR5cGVkZWYgZW51bSBDR0ZvbnRQb3N0U2NyaXB0Rm9ybWF0IENHRm9udFBv
c3RTY3JpcHRGb3JtYXQ7CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsv
SGVhZGVycy9DR0RhdGFQcm92aWRlci5oIiAxIDMKIyAzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhp
Y3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dGb250LmgiIDIgMwoKCgoKCmVudW0gewoKICBrQ0dGb250
SW5kZXhNYXggPSAoKDEgPDwgMTYpIC0gMiksCgoKICBrQ0dGb250SW5kZXhJbnZhbGlkID0gKCgx
IDw8IDE2KSAtIDEpLAoKCiAga0NHR2x5cGhNYXggPSBrQ0dGb250SW5kZXhNYXgKfTsKCgoKZXh0
ZXJuICJDIiBDRlR5cGVJRCBDR0ZvbnRHZXRUeXBlSUQodm9pZCkKICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIENHRm9udFJlZiBDR0ZvbnRD
cmVhdGVXaXRoUGxhdGZvcm1Gb250KHZvaWQgKnBsYXRmb3JtRm9udFJlZmVyZW5jZSkKICBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVy
biAiQyIgQ0dGb250UmVmIENHRm9udENyZWF0ZVdpdGhEYXRhUHJvdmlkZXIoQ0dEYXRhUHJvdmlk
ZXJSZWYgcHJvdmlkZXIpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CgoKCgoKZXh0ZXJuICJDIiBDR0ZvbnRSZWYgQ0dGb250Q3JlYXRlV2l0aEZvbnROYW1lKENGU3Ry
aW5nUmVmIG5hbWUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMg
ODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRm9udC5oIiAz
CmV4dGVybiAiQyIgQ0dGb250UmVmIENHRm9udENyZWF0ZUNvcHlXaXRoVmFyaWF0aW9ucyhDR0Zv
bnRSZWYgZm9udCwKICBDRkRpY3Rpb25hcnlSZWYgdmFyaWF0aW9ucykgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENHRm9udFJlZiBDR0ZvbnRS
ZXRhaW4oQ0dGb250UmVmIGZvbnQpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dGb250UmVsZWFzZShDR0ZvbnRSZWYgZm9udCkK
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBz
aXplX3QgQ0dGb250R2V0TnVtYmVyT2ZHbHlwaHMoQ0dGb250UmVmIGZvbnQpCiAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgaW50IENHRm9udEdl
dFVuaXRzUGVyRW0oQ0dGb250UmVmIGZvbnQpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0ZTdHJpbmdSZWYgQ0dGb250Q29weVBvc3RTY3Jp
cHROYW1lKENHRm9udFJlZiBmb250KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKCgpleHRlcm4gIkMiIENGU3RyaW5nUmVmIENHRm9udENvcHlGdWxsTmFtZShDR0Zv
bnRSZWYgZm9udCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CgpleHRlcm4gIkMiIGludCBDR0ZvbnRHZXRBc2NlbnQoQ0dGb250UmVmIGZvbnQpCiAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBpbnQgQ0dG
b250R2V0RGVzY2VudChDR0ZvbnRSZWYgZm9udCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIGludCBDR0ZvbnRHZXRMZWFkaW5nKENHRm9u
dFJlZiBmb250KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
CmV4dGVybiAiQyIgaW50IENHRm9udEdldENhcEhlaWdodChDR0ZvbnRSZWYgZm9udCkKICBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIGludCBD
R0ZvbnRHZXRYSGVpZ2h0KENHRm9udFJlZiBmb250KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgQ0dSZWN0IENHRm9udEdldEZvbnRCQm94
KENHRm9udFJlZiBmb250KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwoKCgoKZXh0ZXJuICJDIiBDR0Zsb2F0IENHRm9udEdldEl0YWxpY0FuZ2xlKENHRm9udFJlZiBm
b250KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJu
ICJDIiBDR0Zsb2F0IENHRm9udEdldFN0ZW1WKENHRm9udFJlZiBmb250KQogIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgpleHRlcm4gIkMiIENGQXJyYXlSZWYg
Q0dGb250Q29weVZhcmlhdGlvbkF4ZXMoQ0dGb250UmVmIGZvbnQpCiAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTg4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5m
cmFtZXdvcmsvSGVhZGVycy9DR0ZvbnQuaCIgMwpleHRlcm4gIkMiIENGRGljdGlvbmFyeVJlZiBD
R0ZvbnRDb3B5VmFyaWF0aW9ucyhDR0ZvbnRSZWYgZm9udCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0ZXJuICJDIiBib29sIENHRm9udEdldEdseXBo
QWR2YW5jZXMoQ0dGb250UmVmIGZvbnQsIGNvbnN0IENHR2x5cGggZ2x5cGhzW10sCiAgc2l6ZV90
IGNvdW50LCBpbnQgYWR2YW5jZXNbXSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKCgoKCmV4dGVybiAiQyIgYm9vbCBDR0ZvbnRHZXRHbHlwaEJCb3hlcyhDR0Zv
bnRSZWYgZm9udCwgY29uc3QgQ0dHbHlwaCBnbHlwaHNbXSwKICBzaXplX3QgY291bnQsIENHUmVj
dCBiYm94ZXNbXSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CmV4dGVybiAiQyIgQ0dHbHlwaCBDR0ZvbnRHZXRHbHlwaFdpdGhHbHlwaE5hbWUoQ0dGb250UmVm
IGZvbnQsIENGU3RyaW5nUmVmIG5hbWUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENGU3RyaW5nUmVmIENHRm9udENvcHlHbHlwaE5hbWVG
b3JHbHlwaChDR0ZvbnRSZWYgZm9udCwKICBDR0dseXBoIGdseXBoKSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgYm9vbCBDR0ZvbnRDYW5DcmVh
dGVQb3N0U2NyaXB0U3Vic2V0KENHRm9udFJlZiBmb250LAogIENHRm9udFBvc3RTY3JpcHRGb3Jt
YXQgZm9ybWF0KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
CgpleHRlcm4gIkMiIENGRGF0YVJlZiBDR0ZvbnRDcmVhdGVQb3N0U2NyaXB0U3Vic2V0KENHRm9u
dFJlZiBmb250LAogIENGU3RyaW5nUmVmIHN1YnNldE5hbWUsIENHRm9udFBvc3RTY3JpcHRGb3Jt
YXQgZm9ybWF0LAogIGNvbnN0IENHR2x5cGggZ2x5cGhzW10sIHNpemVfdCBjb3VudCwgY29uc3Qg
Q0dHbHlwaCBlbmNvZGluZ1syNTZdKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDRkRhdGFSZWYgQ0dGb250Q3JlYXRlUG9zdFNjcmlwdEVu
Y29kaW5nKENHRm9udFJlZiBmb250LAogIGNvbnN0IENHR2x5cGggZW5jb2RpbmdbMjU2XSkgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBDRkFy
cmF5UmVmIENHRm9udENvcHlUYWJsZVRhZ3MoQ0dGb250UmVmIGZvbnQpCiAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENGRGF0YVJlZiBDR0Zv
bnRDb3B5VGFibGVGb3JUYWcoQ0dGb250UmVmIGZvbnQsIHVpbnQzMl90IHRhZykKICBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiAiQyIgY29uc3Qg
Q0ZTdHJpbmdSZWYga0NHRm9udFZhcmlhdGlvbkF4aXNOYW1lCiAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0dGb250VmFyaWF0aW9uQXhpc01pblZhbHVlCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dGb250VmFy
aWF0aW9uQXhpc01heFZhbHVlCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dGb250VmFyaWF0aW9uQXhp
c0RlZmF1bHRWYWx1ZQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgplbnVtIHsKICBDR0dseXBoTWluID0gMCwKICBDR0dseXBoTWF4ID0ga0NHR2x5cGhNYXgKfTsK
IyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb250ZXh0
LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NH
R3JhZGllbnQuaCIgMSAzCgoKCgoKI2RlZmluZSBDR0dSQURJRU5UX0hfIAoKCgp0eXBlZGVmIHN0
cnVjdCBDR0dyYWRpZW50ICpDR0dyYWRpZW50UmVmOwoKZW51bSB7CiAgICBrQ0dHcmFkaWVudERy
YXdzQmVmb3JlU3RhcnRMb2NhdGlvbiA9ICgxIDw8IDApLAogICAga0NHR3JhZGllbnREcmF3c0Fm
dGVyRW5kTG9jYXRpb24gPSAoMSA8PCAxKQp9Owp0eXBlZGVmIHVpbnQzMl90IENHR3JhZGllbnRE
cmF3aW5nT3B0aW9uczsKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9I
ZWFkZXJzL0NHQ29sb3JTcGFjZS5oIiAxIDMKIyAyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3Mu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0dHcmFkaWVudC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVH
cmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbnRleHQuaCIgMSAzCiMgMjEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHR3JhZGllbnQuaCIgMiAzCiMgMzQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHR3JhZGllbnQuaCIg
MwpleHRlcm4gIkMiIENGVHlwZUlEIENHR3JhZGllbnRHZXRUeXBlSUQodm9pZCkKICAgIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDUwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVH
cmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0dyYWRpZW50LmgiIDMKZXh0ZXJuICJDIiBDR0dy
YWRpZW50UmVmIENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKENHQ29sb3JTcGFj
ZVJlZgogICAgc3BhY2UsIGNvbnN0IENHRmxvYXQgY29tcG9uZW50c1tdLCBjb25zdCBDR0Zsb2F0
IGxvY2F0aW9uc1tdLCBzaXplX3QgY291bnQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKIyA3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hl
YWRlcnMvQ0dHcmFkaWVudC5oIiAzCmV4dGVybiAiQyIgQ0dHcmFkaWVudFJlZiBDR0dyYWRpZW50
Q3JlYXRlV2l0aENvbG9ycyhDR0NvbG9yU3BhY2VSZWYgc3BhY2UsCiAgICBDRkFycmF5UmVmIGNv
bG9ycywgY29uc3QgQ0dGbG9hdCBsb2NhdGlvbnNbXSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDR0dyYWRpZW50UmVmIENHR3JhZGll
bnRSZXRhaW4oQ0dHcmFkaWVudFJlZiBncmFkaWVudCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiB2b2lkIENHR3JhZGllbnRSZWxlYXNl
KENHR3JhZGllbnRSZWYgZ3JhZGllbnQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKIyAxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRl
cnMvQ0dDb250ZXh0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29y
ay9IZWFkZXJzL0NHSW1hZ2UuaCIgMSAzCgoKCgoKI2RlZmluZSBDR0lNQUdFX0hfIAoKdHlwZWRl
ZiBzdHJ1Y3QgQ0dJbWFnZSAqQ0dJbWFnZVJlZjsKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhp
Y3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb2xvclNwYWNlLmgiIDEgMwojIDExICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0ltYWdlLmgiIDIgMwojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRGF0YVByb3ZpZGVyLmgiIDEg
MwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0ltYWdl
LmgiIDIgMwoKCmVudW0gQ0dJbWFnZUFscGhhSW5mbyB7CiAgICBrQ0dJbWFnZUFscGhhTm9uZSwK
ICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCwKICAgIGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkRmlyc3QsCiAgICBrQ0dJbWFnZUFscGhhTGFzdCwKICAgIGtDR0ltYWdlQWxwaGFG
aXJzdCwKICAgIGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsCiAgICBrQ0dJbWFnZUFscGhhTm9u
ZVNraXBGaXJzdCwKICAgIGtDR0ltYWdlQWxwaGFPbmx5Cn07CnR5cGVkZWYgZW51bSBDR0ltYWdl
QWxwaGFJbmZvIENHSW1hZ2VBbHBoYUluZm87CgplbnVtIHsKICAgIGtDR0JpdG1hcEFscGhhSW5m
b01hc2sgPSAweDFGLAogICAga0NHQml0bWFwRmxvYXRDb21wb25lbnRzID0gKDEgPDwgOCksCgog
ICAga0NHQml0bWFwQnl0ZU9yZGVyTWFzayA9IDB4NzAwMCwKICAgIGtDR0JpdG1hcEJ5dGVPcmRl
ckRlZmF1bHQgPSAoMCA8PCAxMiksCiAgICBrQ0dCaXRtYXBCeXRlT3JkZXIxNkxpdHRsZSA9ICgx
IDw8IDEyKSwKICAgIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlID0gKDIgPDwgMTIpLAogICAg
a0NHQml0bWFwQnl0ZU9yZGVyMTZCaWcgPSAoMyA8PCAxMiksCiAgICBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkJpZyA9ICg0IDw8IDEyKQp9Owp0eXBlZGVmIHVpbnQzMl90IENHQml0bWFwSW5mbzsKCgoK
CgojZGVmaW5lIGtDR0JpdG1hcEJ5dGVPcmRlcjE2SG9zdCBrQ0dCaXRtYXBCeXRlT3JkZXIxNkxp
dHRsZQojZGVmaW5lIGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCBrQ0dCaXRtYXBCeXRlT3JkZXIz
MkxpdHRsZQoKCgoKZXh0ZXJuICJDIiBDRlR5cGVJRCBDR0ltYWdlR2V0VHlwZUlEKHZvaWQpCiAg
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBD
R0ltYWdlUmVmIENHSW1hZ2VDcmVhdGUoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LAogICAg
c2l6ZV90IGJpdHNQZXJDb21wb25lbnQsIHNpemVfdCBiaXRzUGVyUGl4ZWwsIHNpemVfdCBieXRl
c1BlclJvdywKICAgIENHQ29sb3JTcGFjZVJlZiBzcGFjZSwgQ0dCaXRtYXBJbmZvIGJpdG1hcElu
Zm8sIENHRGF0YVByb3ZpZGVyUmVmIHByb3ZpZGVyLAogICAgY29uc3QgQ0dGbG9hdCBkZWNvZGVb
XSwgYm9vbCBzaG91bGRJbnRlcnBvbGF0ZSwKICAgIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQgaW50
ZW50KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVy
biAiQyIgQ0dJbWFnZVJlZiBDR0ltYWdlTWFza0NyZWF0ZShzaXplX3Qgd2lkdGgsIHNpemVfdCBo
ZWlnaHQsCiAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCwgc2l6ZV90IGJpdHNQZXJQaXhlbCwg
c2l6ZV90IGJ5dGVzUGVyUm93LAogICAgQ0dEYXRhUHJvdmlkZXJSZWYgcHJvdmlkZXIsIGNvbnN0
IENHRmxvYXQgZGVjb2RlW10sIGJvb2wgc2hvdWxkSW50ZXJwb2xhdGUpCiAgICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgQ0dJbWFnZVJlZiBD
R0ltYWdlQ3JlYXRlQ29weShDR0ltYWdlUmVmIGltYWdlKQogICAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dJbWFnZVJlZiBDR0ltYWdlQ3Jl
YXRlV2l0aEpQRUdEYXRhUHJvdmlkZXIoQ0dEYXRhUHJvdmlkZXJSZWYKICAgIHNvdXJjZSwgY29u
c3QgQ0dGbG9hdCBkZWNvZGVbXSwgYm9vbCBzaG91bGRJbnRlcnBvbGF0ZSwKICAgIENHQ29sb3JS
ZW5kZXJpbmdJbnRlbnQgaW50ZW50KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dJbWFnZVJlZiBDR0ltYWdlQ3JlYXRlV2l0aFBOR0Rh
dGFQcm92aWRlcihDR0RhdGFQcm92aWRlclJlZiBzb3VyY2UsCiAgICBjb25zdCBDR0Zsb2F0IGRl
Y29kZVtdLCBib29sIHNob3VsZEludGVycG9sYXRlLAogICAgQ0dDb2xvclJlbmRlcmluZ0ludGVu
dCBpbnRlbnQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAx
MDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHSW1hZ2UuaCIg
MwpleHRlcm4gIkMiIENHSW1hZ2VSZWYgQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChDR0lt
YWdlUmVmIGltYWdlLAogICAgQ0dSZWN0IHJlY3QpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwojIDEzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hl
YWRlcnMvQ0dJbWFnZS5oIiAzCmV4dGVybiAiQyIgQ0dJbWFnZVJlZiBDR0ltYWdlQ3JlYXRlV2l0
aE1hc2soQ0dJbWFnZVJlZiBpbWFnZSwgQ0dJbWFnZVJlZiBtYXNrKQogICAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGlj
cy5mcmFtZXdvcmsvSGVhZGVycy9DR0ltYWdlLmgiIDMKZXh0ZXJuICJDIiBDR0ltYWdlUmVmIENH
SW1hZ2VDcmVhdGVXaXRoTWFza2luZ0NvbG9ycyhDR0ltYWdlUmVmIGltYWdlLAogICAgY29uc3Qg
Q0dGbG9hdCBjb21wb25lbnRzW10pCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKCgoKZXh0ZXJuICJDIiBDR0ltYWdlUmVmIENHSW1hZ2VDcmVhdGVDb3B5V2l0
aENvbG9yU3BhY2UoQ0dJbWFnZVJlZiBpbWFnZSwKICAgIENHQ29sb3JTcGFjZVJlZiBzcGFjZSkg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dJ
bWFnZVJlZiBDR0ltYWdlUmV0YWluKENHSW1hZ2VSZWYgaW1hZ2UpCiAgICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHSW1hZ2VSZWxl
YXNlKENHSW1hZ2VSZWYgaW1hZ2UpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKZXh0ZXJuICJDIiBib29sIENHSW1hZ2VJc01hc2soQ0dJbWFnZVJlZiBpbWFn
ZSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4g
IkMiIHNpemVfdCBDR0ltYWdlR2V0V2lkdGgoQ0dJbWFnZVJlZiBpbWFnZSkKICAgIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHNpemVfdCBDR0lt
YWdlR2V0SGVpZ2h0KENHSW1hZ2VSZWYgaW1hZ2UpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBzaXplX3QgQ0dJbWFnZUdldEJpdHNQZXJD
b21wb25lbnQoQ0dJbWFnZVJlZiBpbWFnZSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHNpemVfdCBDR0ltYWdlR2V0Qml0c1BlclBpeGVs
KENHSW1hZ2VSZWYgaW1hZ2UpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKCgoKZXh0ZXJuICJDIiBzaXplX3QgQ0dJbWFnZUdldEJ5dGVzUGVyUm93KENHSW1hZ2VS
ZWYgaW1hZ2UpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CmV4dGVybiAiQyIgQ0dDb2xvclNwYWNlUmVmIENHSW1hZ2VHZXRDb2xvclNwYWNlKENHSW1hZ2VS
ZWYgaW1hZ2UpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
ZXh0ZXJuICJDIiBDR0ltYWdlQWxwaGFJbmZvIENHSW1hZ2VHZXRBbHBoYUluZm8oQ0dJbWFnZVJl
ZiBpbWFnZSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpl
eHRlcm4gIkMiIENHRGF0YVByb3ZpZGVyUmVmIENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoQ0dJbWFn
ZVJlZiBpbWFnZSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgpleHRlcm4gIkMiIGNvbnN0IENHRmxvYXQgKkNHSW1hZ2VHZXREZWNvZGUoQ0dJbWFnZVJlZiBp
bWFnZSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRl
cm4gIkMiIGJvb2wgQ0dJbWFnZUdldFNob3VsZEludGVycG9sYXRlKENHSW1hZ2VSZWYgaW1hZ2Up
CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJD
IiBDR0NvbG9yUmVuZGVyaW5nSW50ZW50IENHSW1hZ2VHZXRSZW5kZXJpbmdJbnRlbnQoQ0dJbWFn
ZVJlZiBpbWFnZSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgpleHRlcm4gIkMiIENHQml0bWFwSW5mbyBDR0ltYWdlR2V0Qml0bWFwSW5mbyhDR0ltYWdlUmVm
IGltYWdlKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHQ29udGV4dC5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BhdGgu
aCIgMSAzCgoKCgoKI2RlZmluZSBDR1BBVEhfSF8gCgp0eXBlZGVmIHN0cnVjdCBDR1BhdGggKkNH
TXV0YWJsZVBhdGhSZWY7CnR5cGVkZWYgY29uc3Qgc3RydWN0IENHUGF0aCAqQ0dQYXRoUmVmOwoK
CgoKCgoKZXh0ZXJuICJDIiBDRlR5cGVJRCBDR1BhdGhHZXRUeXBlSUQodm9pZCkKICAgIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHTXV0YWJs
ZVBhdGhSZWYgQ0dQYXRoQ3JlYXRlTXV0YWJsZSh2b2lkKQogICAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dQYXRoUmVmIENHUGF0aENyZWF0
ZUNvcHkoQ0dQYXRoUmVmIHBhdGgpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR011dGFibGVQYXRoUmVmIENHUGF0aENyZWF0ZU11dGFi
bGVDb3B5KENHUGF0aFJlZiBwYXRoKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENHUGF0aFJlZiBDR1BhdGhSZXRhaW4oQ0dQYXRoUmVm
IHBhdGgpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4
dGVybiAiQyIgdm9pZCBDR1BhdGhSZWxlYXNlKENHUGF0aFJlZiBwYXRoKQogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgYm9vbCBDR1BhdGhF
cXVhbFRvUGF0aChDR1BhdGhSZWYgcGF0aDEsIENHUGF0aFJlZiBwYXRoMikKICAgIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dQ
YXRoTW92ZVRvUG9pbnQoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLAogICAgY29uc3QgQ0dBZmZpbmVU
cmFuc2Zvcm0gKm0sIENHRmxvYXQgeCwgQ0dGbG9hdCB5KQogICAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHUGF0aEFkZExpbmVU
b1BvaW50KENHTXV0YWJsZVBhdGhSZWYgcGF0aCwKICAgIGNvbnN0IENHQWZmaW5lVHJhbnNmb3Jt
ICptLCBDR0Zsb2F0IHgsIENHRmxvYXQgeSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgdm9pZCBDR1BhdGhBZGRRdWFkQ3VydmVUb1Bv
aW50KENHTXV0YWJsZVBhdGhSZWYgcGF0aCwKICAgIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICpt
LCBDR0Zsb2F0IGNweCwgQ0dGbG9hdCBjcHksIENHRmxvYXQgeCwgQ0dGbG9hdCB5KQogICAgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCmV4dGVybiAiQyIgdm9p
ZCBDR1BhdGhBZGRDdXJ2ZVRvUG9pbnQoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLAogICAgY29uc3Qg
Q0dBZmZpbmVUcmFuc2Zvcm0gKm0sIENHRmxvYXQgY3AxeCwgQ0dGbG9hdCBjcDF5LAogICAgQ0dG
bG9hdCBjcDJ4LCBDR0Zsb2F0IGNwMnksIENHRmxvYXQgeCwgQ0dGbG9hdCB5KQogICAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dQ
YXRoQ2xvc2VTdWJwYXRoKENHTXV0YWJsZVBhdGhSZWYgcGF0aCkKICAgIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dQYXRoQWRk
UmVjdChDR011dGFibGVQYXRoUmVmIHBhdGgsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICptLAog
ICAgQ0dSZWN0IHJlY3QpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgoKCmV4dGVybiAiQyIgdm9pZCBDR1BhdGhBZGRSZWN0cyhDR011dGFibGVQYXRoUmVmIHBhdGgs
CiAgICBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSAqbSwgY29uc3QgQ0dSZWN0IHJlY3RzW10sIHNp
emVfdCBjb3VudCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgoKCmV4dGVybiAiQyIgdm9pZCBDR1BhdGhBZGRMaW5lcyhDR011dGFibGVQYXRoUmVmIHBhdGgs
CiAgICBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSAqbSwgY29uc3QgQ0dQb2ludCBwb2ludHNbXSwg
c2l6ZV90IGNvdW50KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CiMgMTI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BhdGgu
aCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dQYXRoQWRkRWxsaXBzZUluUmVjdChDR011dGFibGVQYXRo
UmVmIHBhdGgsCiAgICBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSAqbSwgQ0dSZWN0IHJlY3QpCiAg
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxNDIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUGF0aC5oIiAzCmV4dGVybiAiQyIg
dm9pZCBDR1BhdGhBZGRBcmMoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLCBjb25zdCBDR0FmZmluZVRy
YW5zZm9ybSAqbSwKICAgIENHRmxvYXQgeCwgQ0dGbG9hdCB5LCBDR0Zsb2F0IHJhZGl1cywgQ0dG
bG9hdCBzdGFydEFuZ2xlLCBDR0Zsb2F0IGVuZEFuZ2xlLAogICAgYm9vbCBjbG9ja3dpc2UpIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDE1NCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQYXRoLmgiIDMKZXh0ZXJuICJDIiB2b2lk
IENHUGF0aEFkZEFyY1RvUG9pbnQoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLAogICAgY29uc3QgQ0dB
ZmZpbmVUcmFuc2Zvcm0gKm0sIENHRmxvYXQgeDEsIENHRmxvYXQgeTEsIENHRmxvYXQgeDIsIENH
RmxvYXQgeTIsCiAgICBDR0Zsb2F0IHJhZGl1cykgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dQYXRoQWRkUGF0aChDR011dGFibGVQ
YXRoUmVmIHBhdGgxLAogICAgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0gKm0sIENHUGF0aFJlZiBw
YXRoMikKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4
dGVybiAiQyIgYm9vbCBDR1BhdGhJc0VtcHR5KENHUGF0aFJlZiBwYXRoKQogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgYm9vbCBDR1BhdGhJ
c1JlY3QoQ0dQYXRoUmVmIHBhdGgsIENHUmVjdCAqcmVjdCkKICAgIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDR1BvaW50IENHUGF0aEdldEN1
cnJlbnRQb2ludChDR1BhdGhSZWYgcGF0aCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwoKCgoKCgpleHRlcm4gIkMiIENHUmVjdCBDR1BhdGhHZXRCb3VuZGluZ0Jv
eChDR1BhdGhSZWYgcGF0aCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwoKCgoKCgpleHRlcm4gIkMiIENHUmVjdCBDR1BhdGhHZXRQYXRoQm91bmRpbmdCb3goQ0dQ
YXRoUmVmIHBhdGgpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMg
MjA2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BhdGguaCIg
MwpleHRlcm4gIkMiIGJvb2wgQ0dQYXRoQ29udGFpbnNQb2ludChDR1BhdGhSZWYgcGF0aCwKICAg
IGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICptLCBDR1BvaW50IHBvaW50LCBib29sIGVvRmlsbCkK
ICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgplbnVtIENHUGF0
aEVsZW1lbnRUeXBlIHsKICAgIGtDR1BhdGhFbGVtZW50TW92ZVRvUG9pbnQsCiAgICBrQ0dQYXRo
RWxlbWVudEFkZExpbmVUb1BvaW50LAogICAga0NHUGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVUb1Bv
aW50LAogICAga0NHUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQsCiAgICBrQ0dQYXRoRWxlbWVu
dENsb3NlU3VicGF0aAp9Owp0eXBlZGVmIGVudW0gQ0dQYXRoRWxlbWVudFR5cGUgQ0dQYXRoRWxl
bWVudFR5cGU7CgoKCnN0cnVjdCBDR1BhdGhFbGVtZW50IHsKICAgIENHUGF0aEVsZW1lbnRUeXBl
IHR5cGU7CiAgICBDR1BvaW50ICpwb2ludHM7Cn07CnR5cGVkZWYgc3RydWN0IENHUGF0aEVsZW1l
bnQgQ0dQYXRoRWxlbWVudDsKCgoKdHlwZWRlZiB2b2lkICgqQ0dQYXRoQXBwbGllckZ1bmN0aW9u
KSh2b2lkICppbmZvLAogICAgY29uc3QgQ0dQYXRoRWxlbWVudCAqZWxlbWVudCk7CgoKCgpleHRl
cm4gIkMiIHZvaWQgQ0dQYXRoQXBwbHkoQ0dQYXRoUmVmIHBhdGgsIHZvaWQgKmluZm8sCiAgICBD
R1BhdGhBcHBsaWVyRnVuY3Rpb24gZnVuY3Rpb24pCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0dDb250ZXh0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZy
YW1ld29yay9IZWFkZXJzL0NHUGF0dGVybi5oIiAxIDMKIyAxOSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3Jh
cGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb250ZXh0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGRG9jdW1lbnQuaCIgMSAzCgoKCgoK
I2RlZmluZSBDR1BERkRPQ1VNRU5UX0hfIAoKdHlwZWRlZiBzdHJ1Y3QgQ0dQREZEb2N1bWVudCAq
Q0dQREZEb2N1bWVudFJlZjsKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0dEYXRhUHJvdmlkZXIuaCIgMSAzCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBo
aWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGRG9jdW1lbnQuaCIgMiAzCgojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGUGFnZS5oIiAxIDMKCgoKCgoj
ZGVmaW5lIENHUERGUEFHRV9IXyAKCnR5cGVkZWYgc3RydWN0IENHUERGUGFnZSAqQ0dQREZQYWdl
UmVmOwoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQ
REZEaWN0aW9uYXJ5LmgiIDEgMwoKCgoKCiNkZWZpbmUgQ0dQREZESUNUSU9OQVJZX0hfIAoKdHlw
ZWRlZiBzdHJ1Y3QgQ0dQREZEaWN0aW9uYXJ5ICpDR1BERkRpY3Rpb25hcnlSZWY7CgojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGQXJyYXkuaCIgMSAz
CgoKCgoKI2RlZmluZSBDR1BERkFSUkFZX0hfIAoKdHlwZWRlZiBzdHJ1Y3QgQ0dQREZBcnJheSAq
Q0dQREZBcnJheVJlZjsKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hl
YWRlcnMvQ0dQREZEaWN0aW9uYXJ5LmgiIDEgMwojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGlj
cy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERkFycmF5LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29y
ZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGT2JqZWN0LmgiIDEgMwoKCgoKCiNkZWZp
bmUgQ0dQREZPQkpFQ1RfSF8gCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIENHUERGQm9vbGVh
bjsKCgoKdHlwZWRlZiBsb25nIGludCBDR1BERkludGVnZXI7CgoKCnR5cGVkZWYgQ0dGbG9hdCBD
R1BERlJlYWw7CgoKCnR5cGVkZWYgdW5pb24gQ0dQREZPYmplY3QgKkNHUERGT2JqZWN0UmVmOwoK
CgplbnVtIENHUERGT2JqZWN0VHlwZSB7CiAgICBrQ0dQREZPYmplY3RUeXBlTnVsbCA9IDEsCiAg
ICBrQ0dQREZPYmplY3RUeXBlQm9vbGVhbiwKICAgIGtDR1BERk9iamVjdFR5cGVJbnRlZ2VyLAog
ICAga0NHUERGT2JqZWN0VHlwZVJlYWwsCiAgICBrQ0dQREZPYmplY3RUeXBlTmFtZSwKICAgIGtD
R1BERk9iamVjdFR5cGVTdHJpbmcsCiAgICBrQ0dQREZPYmplY3RUeXBlQXJyYXksCiAgICBrQ0dQ
REZPYmplY3RUeXBlRGljdGlvbmFyeSwKICAgIGtDR1BERk9iamVjdFR5cGVTdHJlYW0KfTsKdHlw
ZWRlZiBlbnVtIENHUERGT2JqZWN0VHlwZSBDR1BERk9iamVjdFR5cGU7CgoKCmV4dGVybiAiQyIg
Q0dQREZPYmplY3RUeXBlIENHUERGT2JqZWN0R2V0VHlwZShDR1BERk9iamVjdFJlZiBvYmplY3Qp
CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA1MyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQREZPYmplY3QuaCIgMwpleHRl
cm4gIkMiIGJvb2wgQ0dQREZPYmplY3RHZXRWYWx1ZShDR1BERk9iamVjdFJlZiBvYmplY3QsIENH
UERGT2JqZWN0VHlwZSB0eXBlLAogICAgdm9pZCAqdmFsdWUpIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdv
cmsvSGVhZGVycy9DR1BERkFycmF5LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNz
LmZyYW1ld29yay9IZWFkZXJzL0NHUERGU3RyZWFtLmgiIDEgMwoKCgoKCiNkZWZpbmUgQ0dQREZT
VFJFQU1fSF8gCgp0eXBlZGVmIHN0cnVjdCBDR1BERlN0cmVhbSAqQ0dQREZTdHJlYW1SZWY7Cgpl
bnVtIENHUERGRGF0YUZvcm1hdCB7CiAgICBDR1BERkRhdGFGb3JtYXRSYXcsIENHUERGRGF0YUZv
cm1hdEpQRUdFbmNvZGVkLCBDR1BERkRhdGFGb3JtYXRKUEVHMjAwMAp9Owp0eXBlZGVmIGVudW0g
Q0dQREZEYXRhRm9ybWF0IENHUERGRGF0YUZvcm1hdDsKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3Jh
cGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQREZEaWN0aW9uYXJ5LmgiIDEgMwojIDE2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERlN0cmVhbS5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERlN0cmVh
bS5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMv
Q0dQREZTdHJlYW0uaCIgMiAzCgoKCgpleHRlcm4gIkMiIENHUERGRGljdGlvbmFyeVJlZiBDR1BE
RlN0cmVhbUdldERpY3Rpb25hcnkoQ0dQREZTdHJlYW1SZWYgc3RyZWFtKQogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0ZEYXRhUmVmIENH
UERGU3RyZWFtQ29weURhdGEoQ0dQREZTdHJlYW1SZWYgc3RyZWFtLAogICAgQ0dQREZEYXRhRm9y
bWF0ICpmb3JtYXQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
IyAxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQREZBcnJh
eS5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9D
R1BERlN0cmluZy5oIiAxIDMKCgoKCgojZGVmaW5lIENHUERGU1RSSU5HX0hfIAoKdHlwZWRlZiBz
dHJ1Y3QgQ0dQREZTdHJpbmcgKkNHUERGU3RyaW5nUmVmOwoKCgoKCgoKZXh0ZXJuICJDIiBzaXpl
X3QgQ0dQREZTdHJpbmdHZXRMZW5ndGgoQ0dQREZTdHJpbmdSZWYgc3RyaW5nKQogICAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgY29uc3QgdW5z
aWduZWQgY2hhciAqQ0dQREZTdHJpbmdHZXRCeXRlUHRyKENHUERGU3RyaW5nUmVmIHN0cmluZykK
ICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAi
QyIgQ0ZTdHJpbmdSZWYgQ0dQREZTdHJpbmdDb3B5VGV4dFN0cmluZyhDR1BERlN0cmluZ1JlZiBz
dHJpbmcpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4
dGVybiAiQyIgQ0ZEYXRlUmVmIENHUERGU3RyaW5nQ29weURhdGUoQ0dQREZTdHJpbmdSZWYgc3Ry
aW5nKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTQgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGQXJyYXkuaCIgMiAz
CgoKCmV4dGVybiAiQyIgc2l6ZV90IENHUERGQXJyYXlHZXRDb3VudChDR1BERkFycmF5UmVmIGFy
cmF5KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRl
cm4gIkMiIGJvb2wgQ0dQREZBcnJheUdldE9iamVjdChDR1BERkFycmF5UmVmIGFycmF5LCBzaXpl
X3QgaW5kZXgsCiAgICBDR1BERk9iamVjdFJlZiAqdmFsdWUpIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBib29sIENHUERGQXJyYXlHZXROdWxs
KENHUERGQXJyYXlSZWYgYXJyYXksIHNpemVfdCBpbmRleCkKICAgIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBib29sIENHUERGQXJyYXlHZXRC
b29sZWFuKENHUERGQXJyYXlSZWYgYXJyYXksIHNpemVfdCBpbmRleCwKICAgIENHUERGQm9vbGVh
biAqdmFsdWUpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0
ZXJuICJDIiBib29sIENHUERGQXJyYXlHZXRJbnRlZ2VyKENHUERGQXJyYXlSZWYgYXJyYXksIHNp
emVfdCBpbmRleCwKICAgIENHUERGSW50ZWdlciAqdmFsdWUpIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgYm9vbCBDR1BERkFycmF5R2V0TnVt
YmVyKENHUERGQXJyYXlSZWYgYXJyYXksIHNpemVfdCBpbmRleCwKICAgIENHUERGUmVhbCAqdmFs
dWUpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJD
IiBib29sIENHUERGQXJyYXlHZXROYW1lKENHUERGQXJyYXlSZWYgYXJyYXksIHNpemVfdCBpbmRl
eCwKICAgIGNvbnN0IGNoYXIgKip2YWx1ZSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIGJvb2wgQ0dQREZBcnJheUdldFN0cmluZyhDR1BERkFy
cmF5UmVmIGFycmF5LCBzaXplX3QgaW5kZXgsCiAgICBDR1BERlN0cmluZ1JlZiAqdmFsdWUpIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBib29s
IENHUERGQXJyYXlHZXRBcnJheShDR1BERkFycmF5UmVmIGFycmF5LCBzaXplX3QgaW5kZXgsCiAg
ICBDR1BERkFycmF5UmVmICp2YWx1ZSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CgoKCgpleHRlcm4gIkMiIGJvb2wgQ0dQREZBcnJheUdldERpY3Rpb25hcnkoQ0dQREZB
cnJheVJlZiBhcnJheSwgc2l6ZV90IGluZGV4LAogICAgQ0dQREZEaWN0aW9uYXJ5UmVmICp2YWx1
ZSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJu
ICJDIiBib29sIENHUERGQXJyYXlHZXRTdHJlYW0oQ0dQREZBcnJheVJlZiBhcnJheSwgc2l6ZV90
IGluZGV4LAogICAgQ0dQREZTdHJlYW1SZWYgKnZhbHVlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0dQREZEaWN0aW9uYXJ5LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBo
aWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGT2JqZWN0LmgiIDEgMwojIDEyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERkRpY3Rpb25hcnkuaCIgMiAzCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQREZTdHJlYW0u
aCIgMSAzCiMgMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NH
UERGRGljdGlvbmFyeS5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdv
cmsvSGVhZGVycy9DR1BERlN0cmluZy5oIiAxIDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhp
Y3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQREZEaWN0aW9uYXJ5LmgiIDIgMwoKCgpleHRlcm4gIkMi
IHNpemVfdCBDR1BERkRpY3Rpb25hcnlHZXRDb3VudChDR1BERkRpY3Rpb25hcnlSZWYgZGljdCkK
ICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJD
IiBib29sIENHUERGRGljdGlvbmFyeUdldE9iamVjdChDR1BERkRpY3Rpb25hcnlSZWYgZGljdCwK
ICAgIGNvbnN0IGNoYXIgKmtleSwgQ0dQREZPYmplY3RSZWYgKnZhbHVlKQogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBib29sIENHUERG
RGljdGlvbmFyeUdldEJvb2xlYW4oQ0dQREZEaWN0aW9uYXJ5UmVmIGRpY3QsCiAgICBjb25zdCBj
aGFyICprZXksIENHUERGQm9vbGVhbiAqdmFsdWUpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIGJvb2wgQ0dQREZEaWN0aW9uYXJ5R2V0
SW50ZWdlcihDR1BERkRpY3Rpb25hcnlSZWYgZGljdCwKICAgIGNvbnN0IGNoYXIgKmtleSwgQ0dQ
REZJbnRlZ2VyICp2YWx1ZSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwoKCgoKCmV4dGVybiAiQyIgYm9vbCBDR1BERkRpY3Rpb25hcnlHZXROdW1iZXIoQ0dQREZE
aWN0aW9uYXJ5UmVmIGRpY3QsCiAgICBjb25zdCBjaGFyICprZXksIENHUERGUmVhbCAqdmFsdWUp
CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAi
QyIgYm9vbCBDR1BERkRpY3Rpb25hcnlHZXROYW1lKENHUERGRGljdGlvbmFyeVJlZiBkaWN0LCBj
b25zdCBjaGFyICprZXksCiAgICBjb25zdCBjaGFyICoqdmFsdWUpIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBib29sIENHUERGRGljdGlvbmFy
eUdldFN0cmluZyhDR1BERkRpY3Rpb25hcnlSZWYgZGljdCwKICAgIGNvbnN0IGNoYXIgKmtleSwg
Q0dQREZTdHJpbmdSZWYgKnZhbHVlKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIGJvb2wgQ0dQREZEaWN0aW9uYXJ5R2V0QXJyYXkoQ0dQ
REZEaWN0aW9uYXJ5UmVmIGRpY3QsCiAgICBjb25zdCBjaGFyICprZXksIENHUERGQXJyYXlSZWYg
KnZhbHVlKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoK
ZXh0ZXJuICJDIiBib29sIENHUERGRGljdGlvbmFyeUdldERpY3Rpb25hcnkoQ0dQREZEaWN0aW9u
YXJ5UmVmIGRpY3QsCiAgICBjb25zdCBjaGFyICprZXksIENHUERGRGljdGlvbmFyeVJlZiAqdmFs
dWUpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVy
biAiQyIgYm9vbCBDR1BERkRpY3Rpb25hcnlHZXRTdHJlYW0oQ0dQREZEaWN0aW9uYXJ5UmVmIGRp
Y3QsCiAgICBjb25zdCBjaGFyICprZXksIENHUERGU3RyZWFtUmVmICp2YWx1ZSkKICAgIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCnR5cGVkZWYgdm9pZCAoKkNH
UERGRGljdGlvbmFyeUFwcGxpZXJGdW5jdGlvbikoY29uc3QgY2hhciAqa2V5LAogICAgQ0dQREZP
YmplY3RSZWYgdmFsdWUsIHZvaWQgKmluZm8pOwoKCgoKCmV4dGVybiAiQyIgdm9pZCBDR1BERkRp
Y3Rpb25hcnlBcHBseUZ1bmN0aW9uKENHUERGRGljdGlvbmFyeVJlZiBkaWN0LAogICAgQ0dQREZE
aWN0aW9uYXJ5QXBwbGllckZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkICppbmZvKQogICAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdy
YXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGUGFnZS5oIiAyIDMKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERkRvY3VtZW50LmgiIDEgMwojIDEz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERlBhZ2UuaCIg
MiAzCgplbnVtIENHUERGQm94IHsKICAgIGtDR1BERk1lZGlhQm94ID0gMCwKICAgIGtDR1BERkNy
b3BCb3ggPSAxLAogICAga0NHUERGQmxlZWRCb3ggPSAyLAogICAga0NHUERGVHJpbUJveCA9IDMs
CiAgICBrQ0dQREZBcnRCb3ggPSA0Cn07CnR5cGVkZWYgZW51bSBDR1BERkJveCBDR1BERkJveDsK
CgoKCmV4dGVybiAiQyIgQ0dQREZQYWdlUmVmIENHUERGUGFnZVJldGFpbihDR1BERlBhZ2VSZWYg
cGFnZSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0
ZXJuICJDIiB2b2lkIENHUERGUGFnZVJlbGVhc2UoQ0dQREZQYWdlUmVmIHBhZ2UpCiAgICBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR1BERkRv
Y3VtZW50UmVmIENHUERGUGFnZUdldERvY3VtZW50KENHUERGUGFnZVJlZiBwYWdlKQogICAgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgc2l6ZV90
IENHUERGUGFnZUdldFBhZ2VOdW1iZXIoQ0dQREZQYWdlUmVmIHBhZ2UpCiAgICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIENHUmVjdCBDR1BE
RlBhZ2VHZXRCb3hSZWN0KENHUERGUGFnZVJlZiBwYWdlLCBDR1BERkJveCBib3gpCiAgICBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgaW50IENH
UERGUGFnZUdldFJvdGF0aW9uQW5nbGUoQ0dQREZQYWdlUmVmIHBhZ2UpCiAgICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhp
Y3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQREZQYWdlLmgiIDMKZXh0ZXJuICJDIiBDR0FmZmluZVRy
YW5zZm9ybSBDR1BERlBhZ2VHZXREcmF3aW5nVHJhbnNmb3JtKENHUERGUGFnZVJlZiBwYWdlLAog
ICAgQ0dQREZCb3ggYm94LCBDR1JlY3QgcmVjdCwgaW50IHJvdGF0ZSwgYm9vbCBwcmVzZXJ2ZUFz
cGVjdFJhdGlvKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CmV4dGVybiAiQyIgQ0dQREZEaWN0aW9uYXJ5UmVmIENHUERGUGFnZUdldERpY3Rpb25hcnkoQ0dQ
REZQYWdlUmVmIHBhZ2UpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKCgoKZXh0ZXJuICJDIiBDRlR5cGVJRCBDR1BERlBhZ2VHZXRUeXBlSUQodm9pZCkKICAgIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDEzICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
cmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERkRvY3VtZW50LmgiIDIgMwoKCgoKZXh0
ZXJuICJDIiBDR1BERkRvY3VtZW50UmVmIENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIo
Q0dEYXRhUHJvdmlkZXJSZWYKICAgIHByb3ZpZGVyKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR1BERkRvY3VtZW50UmVmIENHUERGRG9jdW1l
bnRDcmVhdGVXaXRoVVJMKENGVVJMUmVmIHVybCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDR1BERkRvY3VtZW50UmVmIENHUERGRG9j
dW1lbnRSZXRhaW4oQ0dQREZEb2N1bWVudFJlZiBkb2N1bWVudCkKICAgIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiB2b2lkIENHUERGRG9jdW1l
bnRSZWxlYXNlKENHUERGRG9jdW1lbnRSZWYgZG9jdW1lbnQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHUERGRG9jdW1lbnRH
ZXRWZXJzaW9uKENHUERGRG9jdW1lbnRSZWYgZG9jdW1lbnQsCiAgICBpbnQgKm1ham9yVmVyc2lv
biwgaW50ICptaW5vclZlcnNpb24pCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKCgoKZXh0ZXJuICJDIiBib29sIENHUERGRG9jdW1lbnRJc0VuY3J5cHRlZChD
R1BERkRvY3VtZW50UmVmIGRvY3VtZW50KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBib29sIENHUERGRG9jdW1lbnRVbmxvY2tXaXRo
UGFzc3dvcmQoQ0dQREZEb2N1bWVudFJlZiBkb2N1bWVudCwKICAgIGNvbnN0IGNoYXIgKnBhc3N3
b3JkKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4g
IkMiIGJvb2wgQ0dQREZEb2N1bWVudElzVW5sb2NrZWQoQ0dQREZEb2N1bWVudFJlZiBkb2N1bWVu
dCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgpleHRl
cm4gIkMiIGJvb2wgQ0dQREZEb2N1bWVudEFsbG93c1ByaW50aW5nKENHUERGRG9jdW1lbnRSZWYg
ZG9jdW1lbnQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CgoKZXh0ZXJuICJDIiBib29sIENHUERGRG9jdW1lbnRBbGxvd3NDb3B5aW5nKENHUERGRG9jdW1l
bnRSZWYgZG9jdW1lbnQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKCgoKZXh0ZXJuICJDIiBzaXplX3QgQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMoQ0dQ
REZEb2N1bWVudFJlZiBkb2N1bWVudCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDR1BERlBhZ2VSZWYgQ0dQREZEb2N1bWVudEdldFBh
Z2UoQ0dQREZEb2N1bWVudFJlZiBkb2N1bWVudCwKICAgIHNpemVfdCBwYWdlTnVtYmVyKSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR1BERkRp
Y3Rpb25hcnlSZWYgQ0dQREZEb2N1bWVudEdldENhdGFsb2coQ0dQREZEb2N1bWVudFJlZiBkb2N1
bWVudCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRl
cm4gIkMiIENHUERGRGljdGlvbmFyeVJlZiBDR1BERkRvY3VtZW50R2V0SW5mbyhDR1BERkRvY3Vt
ZW50UmVmIGRvY3VtZW50KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCmV4dGVybiAiQyIgQ0dQREZBcnJheVJlZiBDR1BERkRvY3VtZW50R2V0SUQoQ0dQREZE
b2N1bWVudFJlZiBkb2N1bWVudCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKCgpleHRlcm4gIkMiIENGVHlwZUlEIENHUERGRG9jdW1lbnRHZXRUeXBlSUQodm9p
ZCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVy
biAiQyIgQ0dSZWN0IENHUERGRG9jdW1lbnRHZXRNZWRpYUJveChDR1BERkRvY3VtZW50UmVmIGRv
Y3VtZW50LCBpbnQgcGFnZSkKICAgIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQsdmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENHUmVjdCBDR1BERkRvY3VtZW50R2V0Q3Jv
cEJveChDR1BERkRvY3VtZW50UmVmIGRvY3VtZW50LCBpbnQgcGFnZSkKICAgIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENH
UmVjdCBDR1BERkRvY3VtZW50R2V0QmxlZWRCb3goQ0dQREZEb2N1bWVudFJlZiBkb2N1bWVudCwg
aW50IHBhZ2UpCiAgICBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDR1JlY3QgQ0dQREZEb2N1bWVudEdldFRyaW1Cb3goQ0dQ
REZEb2N1bWVudFJlZiBkb2N1bWVudCwgaW50IHBhZ2UpCiAgICBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDR1JlY3QgQ0dQ
REZEb2N1bWVudEdldEFydEJveChDR1BERkRvY3VtZW50UmVmIGRvY3VtZW50LCBpbnQgcGFnZSkK
ICAgIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CgoKZXh0ZXJuICJDIiBpbnQgQ0dQREZEb2N1bWVudEdldFJvdGF0aW9uQW5nbGUoQ0dQREZEb2N1
bWVudFJlZiBkb2N1bWVudCwKICAgIGludCBwYWdlKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
LHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5m
cmFtZXdvcmsvSGVhZGVycy9DR0NvbnRleHQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3Jh
cGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dTaGFkaW5nLmgiIDEgMwoKCgoKCiNkZWZpbmUgQ0dT
SEFESU5HX0hfIAoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRl
cnMvQ0dDb2xvclNwYWNlLmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFt
ZXdvcmsvSGVhZGVycy9DR1NoYWRpbmcuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhp
Y3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dGdW5jdGlvbi5oIiAxIDMKCgoKCgojZGVmaW5lIENHRlVO
Q1RJT05fSF8gCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgQ0dGdW5jdGlvbiAqQ0dGdW5jdGlvblJlZjsK
IyAyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dGdW5jdGlv
bi5oIiAzCnR5cGVkZWYgdm9pZCAoKkNHRnVuY3Rpb25FdmFsdWF0ZUNhbGxiYWNrKSh2b2lkICpp
bmZvLCBjb25zdCBDR0Zsb2F0ICppbiwKICAgIENHRmxvYXQgKm91dCk7CgoKCgp0eXBlZGVmIHZv
aWQgKCpDR0Z1bmN0aW9uUmVsZWFzZUluZm9DYWxsYmFjaykodm9pZCAqaW5mbyk7CiMgMzggIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRnVuY3Rpb24uaCIgMwpz
dHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyB7CiAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsKICAg
IENHRnVuY3Rpb25FdmFsdWF0ZUNhbGxiYWNrIGV2YWx1YXRlOwogICAgQ0dGdW5jdGlvblJlbGVh
c2VJbmZvQ2FsbGJhY2sgcmVsZWFzZUluZm87Cn07CnR5cGVkZWYgc3RydWN0IENHRnVuY3Rpb25D
YWxsYmFja3MgQ0dGdW5jdGlvbkNhbGxiYWNrczsKCgoKZXh0ZXJuICJDIiBDRlR5cGVJRCBDR0Z1
bmN0aW9uR2V0VHlwZUlEKHZvaWQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKIyA3NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMv
Q0dGdW5jdGlvbi5oIiAzCmV4dGVybiAiQyIgQ0dGdW5jdGlvblJlZiBDR0Z1bmN0aW9uQ3JlYXRl
KHZvaWQgKmluZm8sIHNpemVfdCBkb21haW5EaW1lbnNpb24sCiAgICBjb25zdCBDR0Zsb2F0ICpk
b21haW4sIHNpemVfdCByYW5nZURpbWVuc2lvbiwgY29uc3QgQ0dGbG9hdCAqcmFuZ2UsCiAgICBj
b25zdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzICpjYWxsYmFja3MpCiAgICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgQ0dGdW5jdGlvblJlZiBDR0Z1
bmN0aW9uUmV0YWluKENHRnVuY3Rpb25SZWYgZnVuY3Rpb24pCiAgICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBDR0Z1bmN0aW9uUmVs
ZWFzZShDR0Z1bmN0aW9uUmVmIGZ1bmN0aW9uKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9I
ZWFkZXJzL0NHU2hhZGluZy5oIiAyIDMKCgoKdHlwZWRlZiBzdHJ1Y3QgQ0dTaGFkaW5nICpDR1No
YWRpbmdSZWY7CgoKCmV4dGVybiAiQyIgQ0ZUeXBlSUQgQ0dTaGFkaW5nR2V0VHlwZUlEKHZvaWQp
CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAzNiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dTaGFkaW5nLmgiIDMKZXh0ZXJu
ICJDIiBDR1NoYWRpbmdSZWYgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoQ0dDb2xvclNwYWNlUmVmIHNw
YWNlLAogICAgQ0dQb2ludCBzdGFydCwgQ0dQb2ludCBlbmQsIENHRnVuY3Rpb25SZWYgZnVuY3Rp
b24sIGJvb2wgZXh0ZW5kU3RhcnQsCiAgICBib29sIGV4dGVuZEVuZCkgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZy
YW1ld29yay9IZWFkZXJzL0NHU2hhZGluZy5oIiAzCmV4dGVybiAiQyIgQ0dTaGFkaW5nUmVmIENH
U2hhZGluZ0NyZWF0ZVJhZGlhbChDR0NvbG9yU3BhY2VSZWYgc3BhY2UsCiAgICBDR1BvaW50IHN0
YXJ0LCBDR0Zsb2F0IHN0YXJ0UmFkaXVzLCBDR1BvaW50IGVuZCwgQ0dGbG9hdCBlbmRSYWRpdXMs
CiAgICBDR0Z1bmN0aW9uUmVmIGZ1bmN0aW9uLCBib29sIGV4dGVuZFN0YXJ0LCBib29sIGV4dGVu
ZEVuZCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0
ZXJuICJDIiBDR1NoYWRpbmdSZWYgQ0dTaGFkaW5nUmV0YWluKENHU2hhZGluZ1JlZiBzaGFkaW5n
KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4g
IkMiIHZvaWQgQ0dTaGFkaW5nUmVsZWFzZShDR1NoYWRpbmdSZWYgc2hhZGluZykKICAgIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDIxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVH
cmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbnRleHQuaCIgMiAzCgoKCmVudW0gQ0dMaW5l
Sm9pbiB7CiAgICBrQ0dMaW5lSm9pbk1pdGVyLAogICAga0NHTGluZUpvaW5Sb3VuZCwKICAgIGtD
R0xpbmVKb2luQmV2ZWwKfTsKdHlwZWRlZiBlbnVtIENHTGluZUpvaW4gQ0dMaW5lSm9pbjsKCgoK
ZW51bSBDR0xpbmVDYXAgewogICAga0NHTGluZUNhcEJ1dHQsCiAgICBrQ0dMaW5lQ2FwUm91bmQs
CiAgICBrQ0dMaW5lQ2FwU3F1YXJlCn07CnR5cGVkZWYgZW51bSBDR0xpbmVDYXAgQ0dMaW5lQ2Fw
OwoKCgplbnVtIENHUGF0aERyYXdpbmdNb2RlIHsKICAgIGtDR1BhdGhGaWxsLAogICAga0NHUGF0
aEVPRmlsbCwKICAgIGtDR1BhdGhTdHJva2UsCiAgICBrQ0dQYXRoRmlsbFN0cm9rZSwKICAgIGtD
R1BhdGhFT0ZpbGxTdHJva2UKfTsKdHlwZWRlZiBlbnVtIENHUGF0aERyYXdpbmdNb2RlIENHUGF0
aERyYXdpbmdNb2RlOwoKCgplbnVtIENHVGV4dERyYXdpbmdNb2RlIHsKICAgIGtDR1RleHRGaWxs
LAogICAga0NHVGV4dFN0cm9rZSwKICAgIGtDR1RleHRGaWxsU3Ryb2tlLAogICAga0NHVGV4dElu
dmlzaWJsZSwKICAgIGtDR1RleHRGaWxsQ2xpcCwKICAgIGtDR1RleHRTdHJva2VDbGlwLAogICAg
a0NHVGV4dEZpbGxTdHJva2VDbGlwLAogICAga0NHVGV4dENsaXAKfTsKdHlwZWRlZiBlbnVtIENH
VGV4dERyYXdpbmdNb2RlIENHVGV4dERyYXdpbmdNb2RlOwoKCgplbnVtIENHVGV4dEVuY29kaW5n
IHsKICAgIGtDR0VuY29kaW5nRm9udFNwZWNpZmljLAogICAga0NHRW5jb2RpbmdNYWNSb21hbgp9
Owp0eXBlZGVmIGVudW0gQ0dUZXh0RW5jb2RpbmcgQ0dUZXh0RW5jb2Rpbmc7CgoKCmVudW0gQ0dJ
bnRlcnBvbGF0aW9uUXVhbGl0eSB7CiAgICBrQ0dJbnRlcnBvbGF0aW9uRGVmYXVsdCA9IDAsCiAg
ICBrQ0dJbnRlcnBvbGF0aW9uTm9uZSA9IDEsCiAgICBrQ0dJbnRlcnBvbGF0aW9uTG93ID0gMiwK
ICAgIGtDR0ludGVycG9sYXRpb25NZWRpdW0gPSA0LAogICAga0NHSW50ZXJwb2xhdGlvbkhpZ2gg
PSAzCn07CnR5cGVkZWYgZW51bSBDR0ludGVycG9sYXRpb25RdWFsaXR5IENHSW50ZXJwb2xhdGlv
blF1YWxpdHk7CiMgOTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJz
L0NHQ29udGV4dC5oIiAzCmVudW0gQ0dCbGVuZE1vZGUgewoKICAgIGtDR0JsZW5kTW9kZU5vcm1h
bCwKICAgIGtDR0JsZW5kTW9kZU11bHRpcGx5LAogICAga0NHQmxlbmRNb2RlU2NyZWVuLAogICAg
a0NHQmxlbmRNb2RlT3ZlcmxheSwKICAgIGtDR0JsZW5kTW9kZURhcmtlbiwKICAgIGtDR0JsZW5k
TW9kZUxpZ2h0ZW4sCiAgICBrQ0dCbGVuZE1vZGVDb2xvckRvZGdlLAogICAga0NHQmxlbmRNb2Rl
Q29sb3JCdXJuLAogICAga0NHQmxlbmRNb2RlU29mdExpZ2h0LAogICAga0NHQmxlbmRNb2RlSGFy
ZExpZ2h0LAogICAga0NHQmxlbmRNb2RlRGlmZmVyZW5jZSwKICAgIGtDR0JsZW5kTW9kZUV4Y2x1
c2lvbiwKICAgIGtDR0JsZW5kTW9kZUh1ZSwKICAgIGtDR0JsZW5kTW9kZVNhdHVyYXRpb24sCiAg
ICBrQ0dCbGVuZE1vZGVDb2xvciwKICAgIGtDR0JsZW5kTW9kZUx1bWlub3NpdHksCiMgMTI3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbnRleHQuaCIgMwog
ICAga0NHQmxlbmRNb2RlQ2xlYXIsCiAgICBrQ0dCbGVuZE1vZGVDb3B5LAogICAga0NHQmxlbmRN
b2RlU291cmNlSW4sCiAgICBrQ0dCbGVuZE1vZGVTb3VyY2VPdXQsCiAgICBrQ0dCbGVuZE1vZGVT
b3VyY2VBdG9wLAogICAga0NHQmxlbmRNb2RlRGVzdGluYXRpb25PdmVyLAogICAga0NHQmxlbmRN
b2RlRGVzdGluYXRpb25JbiwKICAgIGtDR0JsZW5kTW9kZURlc3RpbmF0aW9uT3V0LAogICAga0NH
QmxlbmRNb2RlRGVzdGluYXRpb25BdG9wLAogICAga0NHQmxlbmRNb2RlWE9SLAogICAga0NHQmxl
bmRNb2RlUGx1c0RhcmtlciwKICAgIGtDR0JsZW5kTW9kZVBsdXNMaWdodGVyCn07CnR5cGVkZWYg
ZW51bSBDR0JsZW5kTW9kZSBDR0JsZW5kTW9kZTsKCgoKZXh0ZXJuICJDIiBDRlR5cGVJRCBDR0Nv
bnRleHRHZXRUeXBlSUQodm9pZCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKCgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNhdmVHU3RhdGUoQ0dDb250
ZXh0UmVmIGMpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKENHQ29udGV4dFJlZiBjKQog
ICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCmV4dGVybiAi
QyIgdm9pZCBDR0NvbnRleHRTY2FsZUNUTShDR0NvbnRleHRSZWYgYywgQ0dGbG9hdCBzeCwgQ0dG
bG9hdCBzeSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
ZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFRyYW5zbGF0ZUNUTShDR0NvbnRleHRSZWYgYywgQ0dG
bG9hdCB0eCwgQ0dGbG9hdCB0eSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFJvdGF0ZUNUTShDR0NvbnRleHRS
ZWYgYywgQ0dGbG9hdCBhbmdsZSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dENvbmNhdENUTShDR0NvbnRleHRS
ZWYgYywgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKQogICAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dD
b250ZXh0R2V0Q1RNKENHQ29udGV4dFJlZiBjKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldExpbmVXaWR0
aChDR0NvbnRleHRSZWYgYywgQ0dGbG9hdCB3aWR0aCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0TGluZUNh
cChDR0NvbnRleHRSZWYgYywgQ0dMaW5lQ2FwIGNhcCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0TGluZUpv
aW4oQ0dDb250ZXh0UmVmIGMsIENHTGluZUpvaW4gam9pbikKICAgIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0TWl0
ZXJMaW1pdChDR0NvbnRleHRSZWYgYywgQ0dGbG9hdCBsaW1pdCkKICAgIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0
TGluZURhc2goQ0dDb250ZXh0UmVmIGMsIENHRmxvYXQgcGhhc2UsCiAgICBjb25zdCBDR0Zsb2F0
IGxlbmd0aHNbXSwgc2l6ZV90IGNvdW50KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0RmxhdG5lc3MoQ0dD
b250ZXh0UmVmIGMsIENHRmxvYXQgZmxhdG5lc3MpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldEFscGhhKENH
Q29udGV4dFJlZiBjLCBDR0Zsb2F0IGFscGhhKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHRTZXRCbGVuZE1vZGUo
Q0dDb250ZXh0UmVmIGNvbnRleHQsIENHQmxlbmRNb2RlIG1vZGUpCiAgICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNz
LmZyYW1ld29yay9IZWFkZXJzL0NHQ29udGV4dC5oIiAzCmV4dGVybiAiQyIgdm9pZCBDR0NvbnRl
eHRCZWdpblBhdGgoQ0dDb250ZXh0UmVmIGMpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dE1vdmVUb1BvaW50KENH
Q29udGV4dFJlZiBjLCBDR0Zsb2F0IHgsIENHRmxvYXQgeSkKICAgIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0QWRkTGlu
ZVRvUG9pbnQoQ0dDb250ZXh0UmVmIGMsIENHRmxvYXQgeCwgQ0dGbG9hdCB5KQogICAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dD
b250ZXh0QWRkQ3VydmVUb1BvaW50KENHQ29udGV4dFJlZiBjLCBDR0Zsb2F0IGNwMXgsCiAgICBD
R0Zsb2F0IGNwMXksIENHRmxvYXQgY3AyeCwgQ0dGbG9hdCBjcDJ5LCBDR0Zsb2F0IHgsIENHRmxv
YXQgeSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0
ZXJuICJDIiB2b2lkIENHQ29udGV4dEFkZFF1YWRDdXJ2ZVRvUG9pbnQoQ0dDb250ZXh0UmVmIGMs
IENHRmxvYXQgY3B4LAogICAgQ0dGbG9hdCBjcHksIENHRmxvYXQgeCwgQ0dGbG9hdCB5KQogICAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgdm9p
ZCBDR0NvbnRleHRDbG9zZVBhdGgoQ0dDb250ZXh0UmVmIGMpCiAgICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0QWRk
UmVjdChDR0NvbnRleHRSZWYgYywgQ0dSZWN0IHJlY3QpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dEFkZFJlY3Rz
KENHQ29udGV4dFJlZiBjLCBjb25zdCBDR1JlY3QgcmVjdHNbXSwKICAgIHNpemVfdCBjb3VudCkg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgdm9p
ZCBDR0NvbnRleHRBZGRMaW5lcyhDR0NvbnRleHRSZWYgYywgY29uc3QgQ0dQb2ludCBwb2ludHNb
XSwKICAgIHNpemVfdCBjb3VudCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dEFkZEVsbGlwc2VJblJlY3QoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CiMgMzA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsv
SGVhZGVycy9DR0NvbnRleHQuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0QWRkQXJjKENH
Q29udGV4dFJlZiBjLCBDR0Zsb2F0IHgsIENHRmxvYXQgeSwKICAgIENHRmxvYXQgcmFkaXVzLCBD
R0Zsb2F0IHN0YXJ0QW5nbGUsIENHRmxvYXQgZW5kQW5nbGUsIGludCBjbG9ja3dpc2UpCiAgICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0ZXJuICJDIiB2
b2lkIENHQ29udGV4dEFkZEFyY1RvUG9pbnQoQ0dDb250ZXh0UmVmIGMsIENHRmxvYXQgeDEsIENH
RmxvYXQgeTEsCiAgICBDR0Zsb2F0IHgyLCBDR0Zsb2F0IHkyLCBDR0Zsb2F0IHJhZGl1cykKICAg
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiB2
b2lkIENHQ29udGV4dEFkZFBhdGgoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJlZiBwYXRo
KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMzM2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbnRleHQuaCIgMwpleHRl
cm4gIkMiIHZvaWQgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoQ0dDb250ZXh0
UmVmIGMpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoK
ZXh0ZXJuICJDIiBib29sIENHQ29udGV4dElzUGF0aEVtcHR5KENHQ29udGV4dFJlZiBjb250ZXh0
KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4g
IkMiIENHUG9pbnQgQ0dDb250ZXh0R2V0UGF0aEN1cnJlbnRQb2ludChDR0NvbnRleHRSZWYgY29u
dGV4dCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4
dGVybiAiQyIgQ0dSZWN0IENHQ29udGV4dEdldFBhdGhCb3VuZGluZ0JveChDR0NvbnRleHRSZWYg
Y29udGV4dCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
ZXh0ZXJuICJDIiBDR1BhdGhSZWYgQ0dDb250ZXh0Q29weVBhdGgoQ0dDb250ZXh0UmVmIGNvbnRl
eHQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0
ZXJuICJDIiBib29sIENHQ29udGV4dFBhdGhDb250YWluc1BvaW50KENHQ29udGV4dFJlZiBjb250
ZXh0LCBDR1BvaW50IHBvaW50LAogICAgQ0dQYXRoRHJhd2luZ01vZGUgbW9kZSkgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29u
dGV4dERyYXdQYXRoKENHQ29udGV4dFJlZiBjLCBDR1BhdGhEcmF3aW5nTW9kZSBtb2RlKQogICAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCmV4dGVybiAiQyIg
dm9pZCBDR0NvbnRleHRGaWxsUGF0aChDR0NvbnRleHRSZWYgYykKICAgIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dEVP
RmlsbFBhdGgoQ0dDb250ZXh0UmVmIGMpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFN0cm9rZVBhdGgoQ0dDb250
ZXh0UmVmIGMpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
ZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dEZpbGxSZWN0KENHQ29udGV4dFJlZiBjLCBDR1JlY3Qg
cmVjdCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0
ZXJuICJDIiB2b2lkIENHQ29udGV4dEZpbGxSZWN0cyhDR0NvbnRleHRSZWYgYywgY29uc3QgQ0dS
ZWN0IHJlY3RzW10sCiAgICBzaXplX3QgY291bnQpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U3Ryb2tlUmVjdChDR0Nv
bnRleHRSZWYgYywgQ0dSZWN0IHJlY3QpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHRTdHJva2VSZWN0V2l0aFdp
ZHRoKENHQ29udGV4dFJlZiBjLCBDR1JlY3QgcmVjdCwKICAgIENHRmxvYXQgd2lkdGgpIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dD
b250ZXh0Q2xlYXJSZWN0KENHQ29udGV4dFJlZiBjLCBDR1JlY3QgcmVjdCkKICAgIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250
ZXh0RmlsbEVsbGlwc2VJblJlY3QoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0KQog
ICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIg
dm9pZCBDR0NvbnRleHRTdHJva2VFbGxpcHNlSW5SZWN0KENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1JlY3QgcmVjdCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoj
IDQ0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb250ZXh0
LmgiIDMKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFN0cm9rZUxpbmVTZWdtZW50cyhDR0NvbnRl
eHRSZWYgYywKICAgIGNvbnN0IENHUG9pbnQgcG9pbnRzW10sIHNpemVfdCBjb3VudCkKICAgIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgoKZXh0ZXJuICJDIiB2
b2lkIENHQ29udGV4dENsaXAoQ0dDb250ZXh0UmVmIGMpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0RU9DbGlw
KENHQ29udGV4dFJlZiBjKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CiMgNDk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Nv
bnRleHQuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0Q2xpcFRvTWFzayhDR0NvbnRleHRS
ZWYgYywgQ0dSZWN0IHJlY3QsCiAgICBDR0ltYWdlUmVmIG1hc2spIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgQ0dSZWN0IENHQ29udGV4dEdl
dENsaXBCb3VuZGluZ0JveChDR0NvbnRleHRSZWYgYykKICAgIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0Q2xpcFRv
UmVjdChDR0NvbnRleHRSZWYgYywgQ0dSZWN0IHJlY3QpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0Q2xpcFRv
UmVjdHMoQ0dDb250ZXh0UmVmIGMsIGNvbnN0IENHUmVjdCByZWN0c1tdLAogICAgc2l6ZV90IGNv
dW50KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4g
IkMiIHZvaWQgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKENHQ29udGV4dFJlZiBjLCBD
R0NvbG9yUmVmIGNvbG9yKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihD
R0NvbnRleHRSZWYgYywKICAgIENHQ29sb3JSZWYgY29sb3IpIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldEZp
bGxDb2xvclNwYWNlKENHQ29udGV4dFJlZiBjb250ZXh0LAogICAgQ0dDb2xvclNwYWNlUmVmIHNw
YWNlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4g
IkMiIHZvaWQgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JTcGFjZShDR0NvbnRleHRSZWYgY29udGV4
dCwKICAgIENHQ29sb3JTcGFjZVJlZiBzcGFjZSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CiMgNTU2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVh
ZGVycy9DR0NvbnRleHQuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0RmlsbENvbG9y
KENHQ29udGV4dFJlZiBjb250ZXh0LAogICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzW10pCiAg
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiAi
QyIgdm9pZCBDR0NvbnRleHRTZXRTdHJva2VDb2xvcihDR0NvbnRleHRSZWYgY29udGV4dCwKICAg
IGNvbnN0IENHRmxvYXQgY29tcG9uZW50c1tdKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CiMgNTc5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsv
SGVhZGVycy9DR0NvbnRleHQuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0RmlsbFBh
dHRlcm4oQ0dDb250ZXh0UmVmIGNvbnRleHQsCiAgICBDR1BhdHRlcm5SZWYgcGF0dGVybiwgY29u
c3QgQ0dGbG9hdCBjb21wb25lbnRzW10pCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKIyA1OTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFk
ZXJzL0NHQ29udGV4dC5oIiAzCmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHRTZXRTdHJva2VQYXR0
ZXJuKENHQ29udGV4dFJlZiBjb250ZXh0LAogICAgQ0dQYXR0ZXJuUmVmIHBhdHRlcm4sIGNvbnN0
IENHRmxvYXQgY29tcG9uZW50c1tdKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0UGF0dGVyblBoYXNlKENH
Q29udGV4dFJlZiBjb250ZXh0LCBDR1NpemUgcGhhc2UpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldEdy
YXlGaWxsQ29sb3IoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQgZ3JheSwKICAgIENHRmxv
YXQgYWxwaGEpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0
ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldEdyYXlTdHJva2VDb2xvcihDR0NvbnRleHRSZWYgY29u
dGV4dCwgQ0dGbG9hdCBncmF5LAogICAgQ0dGbG9hdCBhbHBoYSkgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0UkdC
RmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0Zsb2F0IHJlZCwKICAgIENHRmxvYXQg
Z3JlZW4sIENHRmxvYXQgYmx1ZSwgQ0dGbG9hdCBhbHBoYSkKICAgIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHRTZXRS
R0JTdHJva2VDb2xvcihDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dGbG9hdCByZWQsCiAgICBDR0Zs
b2F0IGdyZWVuLCBDR0Zsb2F0IGJsdWUsIENHRmxvYXQgYWxwaGEpCiAgICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0
U2V0Q01ZS0ZpbGxDb2xvcihDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dGbG9hdCBjeWFuLAogICAg
Q0dGbG9hdCBtYWdlbnRhLCBDR0Zsb2F0IHllbGxvdywgQ0dGbG9hdCBibGFjaywgQ0dGbG9hdCBh
bHBoYSkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4
dGVybiAiQyIgdm9pZCBDR0NvbnRleHRTZXRDTVlLU3Ryb2tlQ29sb3IoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIENHRmxvYXQgY3lhbiwKICAgIENHRmxvYXQgbWFnZW50YSwgQ0dGbG9hdCB5ZWxsb3cs
IENHRmxvYXQgYmxhY2ssIENHRmxvYXQgYWxwaGEpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldFJlbmRl
cmluZ0ludGVudChDR0NvbnRleHRSZWYgY29udGV4dCwKICAgIENHQ29sb3JSZW5kZXJpbmdJbnRl
bnQgaW50ZW50KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CgoKCmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHREcmF3SW1hZ2UoQ0dDb250ZXh0UmVmIGMsIENH
UmVjdCByZWN0LAogICAgQ0dJbWFnZVJlZiBpbWFnZSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CiMgNjY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsv
SGVhZGVycy9DR0NvbnRleHQuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0RHJhd1RpbGVk
SW1hZ2UoQ0dDb250ZXh0UmVmIGMsIENHUmVjdCByZWN0LAogICAgQ0dJbWFnZVJlZiBpbWFnZSkg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCgpleHRlcm4gIkMi
IENHSW50ZXJwb2xhdGlvblF1YWxpdHkgQ0dDb250ZXh0R2V0SW50ZXJwb2xhdGlvblF1YWxpdHko
Q0dDb250ZXh0UmVmCiAgICBjb250ZXh0KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFs
aXR5KENHQ29udGV4dFJlZiBjb250ZXh0LAogICAgQ0dJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFs
aXR5KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNjk4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbnRleHQuaCIgMwpl
eHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKENHQ29udGV4dFJlZiBj
b250ZXh0LCBDR1NpemUgb2Zmc2V0LAogICAgQ0dGbG9hdCBibHVyLCBDR0NvbG9yUmVmIGNvbG9y
KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCmV4dGVy
biAiQyIgdm9pZCBDR0NvbnRleHRTZXRTaGFkb3coQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHU2l6
ZSBvZmZzZXQsCiAgICBDR0Zsb2F0IGJsdXIpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwojIDcxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRl
cnMvQ0dDb250ZXh0LmgiIDMKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dERyYXdMaW5lYXJHcmFk
aWVudChDR0NvbnRleHRSZWYgY29udGV4dCwKICAgIENHR3JhZGllbnRSZWYgZ3JhZGllbnQsIENH
UG9pbnQgc3RhcnRQb2ludCwgQ0dQb2ludCBlbmRQb2ludCwKICAgIENHR3JhZGllbnREcmF3aW5n
T3B0aW9ucyBvcHRpb25zKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CiMgNzMzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Nv
bnRleHQuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0RHJhd1JhZGlhbEdyYWRpZW50KENH
Q29udGV4dFJlZiBjb250ZXh0LAogICAgQ0dHcmFkaWVudFJlZiBncmFkaWVudCwgQ0dQb2ludCBz
dGFydENlbnRlciwgQ0dGbG9hdCBzdGFydFJhZGl1cywKICAgIENHUG9pbnQgZW5kQ2VudGVyLCBD
R0Zsb2F0IGVuZFJhZGl1cywgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zIG9wdGlvbnMpCiAgICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lk
IENHQ29udGV4dERyYXdTaGFkaW5nKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1NoYWRpbmdSZWYg
c2hhZGluZykKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
CgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldENoYXJhY3RlclNwYWNpbmcoQ0dDb250ZXh0
UmVmIGNvbnRleHQsCiAgICBDR0Zsb2F0IHNwYWNpbmcpIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldFRleHRQb3Np
dGlvbihDR0NvbnRleHRSZWYgYywgQ0dGbG9hdCB4LCBDR0Zsb2F0IHkpCiAgICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR1BvaW50IENHQ29u
dGV4dEdldFRleHRQb3NpdGlvbihDR0NvbnRleHRSZWYgY29udGV4dCkKICAgIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0
U2V0VGV4dE1hdHJpeChDR0NvbnRleHRSZWYgYywgQ0dBZmZpbmVUcmFuc2Zvcm0gdCkKICAgIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHQWZm
aW5lVHJhbnNmb3JtIENHQ29udGV4dEdldFRleHRNYXRyaXgoQ0dDb250ZXh0UmVmIGMpCiAgICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgdm9p
ZCBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoQ0dDb250ZXh0UmVmIGMsCiAgICBDR1RleHRE
cmF3aW5nTW9kZSBtb2RlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKCmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHRTZXRGb250KENHQ29udGV4dFJlZiBjLCBDR0Zv
bnRSZWYgZm9udCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldEZvbnRTaXplKENHQ29udGV4dFJlZiBjLCBD
R0Zsb2F0IHNpemUpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNlbGVjdEZvbnQoQ0dDb250ZXh0UmVmIGMs
IGNvbnN0IGNoYXIgKm5hbWUsCiAgICBDR0Zsb2F0IHNpemUsIENHVGV4dEVuY29kaW5nIHRleHRF
bmNvZGluZykKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
CmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHRTaG93R2x5cGhzQXRQb3NpdGlvbnMoQ0dDb250ZXh0
UmVmIGNvbnRleHQsCiAgICBjb25zdCBDR0dseXBoIGdseXBoc1tdLCBjb25zdCBDR1BvaW50IHBv
c2l0aW9uc1tdLCBzaXplX3QgY291bnQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKIyA4MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFk
ZXJzL0NHQ29udGV4dC5oIiAzCmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHRTaG93VGV4dChDR0Nv
bnRleHRSZWYgYywgY29uc3QgY2hhciAqc3RyaW5nLAogICAgc2l6ZV90IGxlbmd0aCkgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCmV4dGVybiAiQyIgdm9pZCBD
R0NvbnRleHRTaG93VGV4dEF0UG9pbnQoQ0dDb250ZXh0UmVmIGMsIENHRmxvYXQgeCwgQ0dGbG9h
dCB5LAogICAgY29uc3QgY2hhciAqc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250
ZXh0U2hvd0dseXBocyhDR0NvbnRleHRSZWYgYywgY29uc3QgQ0dHbHlwaCBnW10sCiAgICBzaXpl
X3QgY291bnQpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0
ZXJuICJDIiB2b2lkIENHQ29udGV4dFNob3dHbHlwaHNBdFBvaW50KENHQ29udGV4dFJlZiBjb250
ZXh0LCBDR0Zsb2F0IHgsCiAgICBDR0Zsb2F0IHksIGNvbnN0IENHR2x5cGggZ2x5cGhzW10sIHNp
emVfdCBjb3VudCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhDR0Nv
bnRleHRSZWYgYywKICAgIGNvbnN0IENHR2x5cGggZ2x5cGhzW10sIGNvbnN0IENHU2l6ZSBhZHZh
bmNlc1tdLCBzaXplX3QgY291bnQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0RHJhd1BERlBhZ2UoQ0dDb250
ZXh0UmVmIGMsIENHUERGUGFnZVJlZiBwYWdlKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CgoKCgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0RHJhd1BERkRv
Y3VtZW50KENHQ29udGV4dFJlZiBjLCBDR1JlY3QgcmVjdCwKICAgIENHUERGRG9jdW1lbnRSZWYg
ZG9jdW1lbnQsIGludCBwYWdlKQogICAgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCx2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dEJlZ2luUGFn
ZShDR0NvbnRleHRSZWYgYywgY29uc3QgQ0dSZWN0ICptZWRpYUJveCkKICAgIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0
RW5kUGFnZShDR0NvbnRleHRSZWYgYykKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgQ0dDb250ZXh0UmVmIENHQ29udGV4dFJldGFpbihD
R0NvbnRleHRSZWYgYykKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0UmVsZWFzZShDR0NvbnRleHRSZWYgYykKICAg
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHZv
aWQgQ0dDb250ZXh0Rmx1c2goQ0dDb250ZXh0UmVmIGMpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFN5bmNocm9u
aXplKENHQ29udGV4dFJlZiBjKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CgoKCgoKCmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMo
Q0dDb250ZXh0UmVmIGNvbnRleHQsCiAgICBib29sIHNob3VsZEFudGlhbGlhcykgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCmV4dGVybiAiQyIgdm9pZCBDR0Nv
bnRleHRTZXRBbGxvd3NBbnRpYWxpYXNpbmcoQ0dDb250ZXh0UmVmIGNvbnRleHQsCiAgICBib29s
IGFsbG93c0FudGlhbGlhc2luZykgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CiMgOTI0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Nv
bnRleHQuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0U2hvdWxkU21vb3RoRm9udHMo
Q0dDb250ZXh0UmVmIGNvbnRleHQsCiAgICBib29sIHNob3VsZFNtb290aEZvbnRzKSBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiAiQyIgdm9pZCBD
R0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKENHQ29udGV4dFJlZiBjb250ZXh0LAogICAg
Ym9vbCBhbGxvd3NGb250U21vb3RoaW5nKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldFNob3VsZFN1YnBpeGVs
UG9zaXRpb25Gb250cyhDR0NvbnRleHRSZWYgY29udGV4dCwKICAgIGJvb2wgc2hvdWxkU3VicGl4
ZWxQb3NpdGlvbkZvbnRzKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CiMgOTUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Nv
bnRleHQuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1YnBpeGVs
UG9zaXRpb25pbmcoQ0dDb250ZXh0UmVmIGNvbnRleHQsCiAgICBib29sIGFsbG93c0ZvbnRTdWJw
aXhlbFBvc2l0aW9uaW5nKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCgoKCmV4dGVybiAiQyIgdm9pZCBDR0NvbnRleHRTZXRTaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsCiAgICBib29sIHNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cykKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoj
IDk3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb250ZXh0
LmgiIDMKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dFNldEFsbG93c0ZvbnRTdWJwaXhlbFF1YW50
aXphdGlvbihDR0NvbnRleHRSZWYgY29udGV4dCwKICAgIGJvb2wgYWxsb3dzRm9udFN1YnBpeGVs
UXVhbnRpemF0aW9uKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CiMgOTk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbnRl
eHQuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcihD
R0NvbnRleHRSZWYgY29udGV4dCwKICAgIENGRGljdGlvbmFyeVJlZiBhdXhpbGlhcnlJbmZvKQog
ICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJD
IiB2b2lkIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJXaXRoUmVjdChDR0NvbnRleHRS
ZWYgY29udGV4dCwKICAgIENHUmVjdCByZWN0LCBDRkRpY3Rpb25hcnlSZWYgYXV4aWxpYXJ5SW5m
bykKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4g
IkMiIHZvaWQgQ0dDb250ZXh0RW5kVHJhbnNwYXJlbmN5TGF5ZXIoQ0dDb250ZXh0UmVmIGNvbnRl
eHQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0
ZXJuICJDIiBDR0FmZmluZVRyYW5zZm9ybQogICAgQ0dDb250ZXh0R2V0VXNlclNwYWNlVG9EZXZp
Y2VTcGFjZVRyYW5zZm9ybShDR0NvbnRleHRSZWYgY29udGV4dCkKICAgIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHUG9pbnQgQ0dDb250ZXh0
Q29udmVydFBvaW50VG9EZXZpY2VTcGFjZShDR0NvbnRleHRSZWYgY29udGV4dCwKICAgIENHUG9p
bnQgcG9pbnQpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRl
cm4gIkMiIENHUG9pbnQgQ0dDb250ZXh0Q29udmVydFBvaW50VG9Vc2VyU3BhY2UoQ0dDb250ZXh0
UmVmIGNvbnRleHQsCiAgICBDR1BvaW50IHBvaW50KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR1NpemUgQ0dDb250ZXh0Q29udmVydFNpemVU
b0RldmljZVNwYWNlKENHQ29udGV4dFJlZiBjb250ZXh0LAogICAgQ0dTaXplIHNpemUpIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHU2l6ZSBD
R0NvbnRleHRDb252ZXJ0U2l6ZVRvVXNlclNwYWNlKENHQ29udGV4dFJlZiBjb250ZXh0LAogICAg
Q0dTaXplIHNpemUpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
CgpleHRlcm4gIkMiIENHUmVjdCBDR0NvbnRleHRDb252ZXJ0UmVjdFRvRGV2aWNlU3BhY2UoQ0dD
b250ZXh0UmVmIGNvbnRleHQsCiAgICBDR1JlY3QgcmVjdCkgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCmV4dGVybiAiQyIgQ0dSZWN0IENHQ29udGV4dENvbnZl
cnRSZWN0VG9Vc2VyU3BhY2UoQ0dDb250ZXh0UmVmIGNvbnRleHQsCiAgICBDR1JlY3QgcmVjdCkg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTAgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHQml0bWFwQ29udGV4dC5oIiAyIDMKCgoK
CnR5cGVkZWYgdm9pZCAoKkNHQml0bWFwQ29udGV4dFJlbGVhc2VEYXRhQ2FsbGJhY2spKHZvaWQg
KnJlbGVhc2VJbmZvLAogICAgdm9pZCAqZGF0YSk7CiMgMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBo
aWNzLmZyYW1ld29yay9IZWFkZXJzL0NHQml0bWFwQ29udGV4dC5oIiAzCmV4dGVybiAiQyIgQ0dD
b250ZXh0UmVmIENHQml0bWFwQ29udGV4dENyZWF0ZVdpdGhEYXRhKHZvaWQgKmRhdGEsCiAgICBz
aXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50LAogICAg
c2l6ZV90IGJ5dGVzUGVyUm93LCBDR0NvbG9yU3BhY2VSZWYgc3BhY2UsIENHQml0bWFwSW5mbyBi
aXRtYXBJbmZvLAogICAgQ0dCaXRtYXBDb250ZXh0UmVsZWFzZURhdGFDYWxsYmFjayByZWxlYXNl
Q2FsbGJhY2ssIHZvaWQgKnJlbGVhc2VJbmZvKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CiMgNTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9I
ZWFkZXJzL0NHQml0bWFwQ29udGV4dC5oIiAzCmV4dGVybiAiQyIgQ0dDb250ZXh0UmVmIENHQml0
bWFwQ29udGV4dENyZWF0ZSh2b2lkICpkYXRhLCBzaXplX3Qgd2lkdGgsCiAgICBzaXplX3QgaGVp
Z2h0LCBzaXplX3QgYml0c1BlckNvbXBvbmVudCwgc2l6ZV90IGJ5dGVzUGVyUm93LAogICAgQ0dD
b2xvclNwYWNlUmVmIHNwYWNlLCBDR0JpdG1hcEluZm8gYml0bWFwSW5mbykKICAgIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiB2b2lkICpDR0Jp
dG1hcENvbnRleHRHZXREYXRhKENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHNpemVfdCBDR0JpdG1h
cENvbnRleHRHZXRXaWR0aChDR0NvbnRleHRSZWYgY29udGV4dCkKICAgIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBzaXplX3QgQ0dCaXRtYXBD
b250ZXh0R2V0SGVpZ2h0KENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHNpemVfdCBDR0JpdG1hcENv
bnRleHRHZXRCaXRzUGVyQ29tcG9uZW50KENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHNpemVfdCBD
R0JpdG1hcENvbnRleHRHZXRCaXRzUGVyUGl4ZWwoQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgc2l6
ZV90IENHQml0bWFwQ29udGV4dEdldEJ5dGVzUGVyUm93KENHQ29udGV4dFJlZiBjb250ZXh0KQog
ICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMi
IENHQ29sb3JTcGFjZVJlZiBDR0JpdG1hcENvbnRleHRHZXRDb2xvclNwYWNlKENHQ29udGV4dFJl
ZiBjb250ZXh0KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CgpleHRlcm4gIkMiIENHSW1hZ2VBbHBoYUluZm8gQ0dCaXRtYXBDb250ZXh0R2V0QWxwaGFJbmZv
KENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENHQml0bWFwSW5mbyBDR0JpdG1hcENvbnRleHRHZXRC
aXRtYXBJbmZvKENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CiMgMTI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdv
cmsvSGVhZGVycy9DR0JpdG1hcENvbnRleHQuaCIgMwpleHRlcm4gIkMiIENHSW1hZ2VSZWYgQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3Jh
cGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBoaWNzLmgiIDIgMwojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHQ29sb3IuaCIgMSAzCiMgMTMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVHcmFwaGljcy5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbG9y
U3BhY2UuaCIgMSAzCiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFk
ZXJzL0NvcmVHcmFwaGljcy5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFt
ZXdvcmsvSGVhZGVycy9DR0NvbnRleHQuaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBo
aWNzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVHcmFwaGljcy5oIiAyIDMKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0RhdGFDb25zdW1lci5oIiAxIDMKCgoK
CgojZGVmaW5lIENHREFUQUNPTlNVTUVSX0hfIAoKdHlwZWRlZiBzdHJ1Y3QgQ0dEYXRhQ29uc3Vt
ZXIgKkNHRGF0YUNvbnN1bWVyUmVmOwoKCgojIDEgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRh
cndpbjEwLzQuMi4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29y
ZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRGF0YUNvbnN1bWVyLmgiIDIgMwoKCgoKdHlw
ZWRlZiBzaXplX3QgKCpDR0RhdGFDb25zdW1lclB1dEJ5dGVzQ2FsbGJhY2spKHZvaWQgKmluZm8s
CiAgICBjb25zdCB2b2lkICpidWZmZXIsIHNpemVfdCBjb3VudCk7CgoKCgp0eXBlZGVmIHZvaWQg
KCpDR0RhdGFDb25zdW1lclJlbGVhc2VJbmZvQ2FsbGJhY2spKHZvaWQgKmluZm8pOwoKCgoKCgoK
c3RydWN0IENHRGF0YUNvbnN1bWVyQ2FsbGJhY2tzIHsKICAgIENHRGF0YUNvbnN1bWVyUHV0Qnl0
ZXNDYWxsYmFjayBwdXRCeXRlczsKICAgIENHRGF0YUNvbnN1bWVyUmVsZWFzZUluZm9DYWxsYmFj
ayByZWxlYXNlQ29uc3VtZXI7Cn07CnR5cGVkZWYgc3RydWN0IENHRGF0YUNvbnN1bWVyQ2FsbGJh
Y2tzIENHRGF0YUNvbnN1bWVyQ2FsbGJhY2tzOwoKCgpleHRlcm4gIkMiIENGVHlwZUlEIENHRGF0
YUNvbnN1bWVyR2V0VHlwZUlEKHZvaWQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgQ0dEYXRhQ29uc3VtZXJSZWYgQ0dEYXRhQ29uc3Vt
ZXJDcmVhdGUodm9pZCAqaW5mbywKICAgIGNvbnN0IENHRGF0YUNvbnN1bWVyQ2FsbGJhY2tzICpj
YWxsYmFja3MpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
ZXh0ZXJuICJDIiBDR0RhdGFDb25zdW1lclJlZiBDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhVUkwo
Q0ZVUkxSZWYgdXJsKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CgoKCmV4dGVybiAiQyIgQ0dEYXRhQ29uc3VtZXJSZWYgQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRo
Q0ZEYXRhKENGTXV0YWJsZURhdGFSZWYKICAgIGRhdGEpIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHRGF0YUNvbnN1bWVyUmVmIENHRGF0YUNv
bnN1bWVyUmV0YWluKENHRGF0YUNvbnN1bWVyUmVmIGNvbnN1bWVyKQogICAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgdm9pZCBDR0RhdGFDb25z
dW1lclJlbGVhc2UoQ0dEYXRhQ29uc3VtZXJSZWYgY29uc3VtZXIpCiAgICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3Mu
ZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBoaWNzLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29y
ZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRGF0YVByb3ZpZGVyLmgiIDEgMwojIDE3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlR3JhcGhpY3MuaCIg
MiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dFcnJv
ci5oIiAxIDMKCgoKCgojZGVmaW5lIENHRVJST1JfSF8gCgoKCgoKCmVudW0gX0NHRXJyb3Igewog
IGtDR0Vycm9yU3VjY2VzcyA9IDAsCiAga0NHRXJyb3JGYWlsdXJlID0gMTAwMCwKICBrQ0dFcnJv
cklsbGVnYWxBcmd1bWVudCA9IDEwMDEsCiAga0NHRXJyb3JJbnZhbGlkQ29ubmVjdGlvbiA9IDEw
MDIsCiAga0NHRXJyb3JJbnZhbGlkQ29udGV4dCA9IDEwMDMsCiAga0NHRXJyb3JDYW5ub3RDb21w
bGV0ZSA9IDEwMDQsCiAga0NHRXJyb3JOb3RJbXBsZW1lbnRlZCA9IDEwMDYsCiAga0NHRXJyb3JS
YW5nZUNoZWNrID0gMTAwNywKICBrQ0dFcnJvclR5cGVDaGVjayA9IDEwMDgsCiAga0NHRXJyb3JJ
bnZhbGlkT3BlcmF0aW9uID0gMTAxMCwKICBrQ0dFcnJvck5vbmVBdmFpbGFibGUgPSAxMDExLAoK
CiAga0NHRXJyb3JOYW1lVG9vTG9uZyA9IDEwMDUsCiAga0NHRXJyb3JOb0N1cnJlbnRQb2ludCA9
IDEwMDksCiAga0NHRXJyb3JBcHBsaWNhdGlvblJlcXVpcmVzTmV3ZXJTeXN0ZW0gPSAxMDE1LAog
IGtDR0Vycm9yQXBwbGljYXRpb25Ob3RQZXJtaXR0ZWRUb0V4ZWN1dGUgPSAxMDE2LAogIGtDR0Vy
cm9yQXBwbGljYXRpb25JbmNvcnJlY3RFeGVjdXRhYmxlRm9ybWF0Rm91bmQgPSAxMDIzLAogIGtD
R0Vycm9yQXBwbGljYXRpb25Jc0xhdW5jaGluZyA9IDEwMjQsCiAga0NHRXJyb3JBcHBsaWNhdGlv
bkFscmVhZHlSdW5uaW5nID0gMTAyNSwKICBrQ0dFcnJvckFwcGxpY2F0aW9uQ2FuT25seUJlUnVu
SW5PbmVTZXNzaW9uQXRBVGltZSA9IDEwMjYsCiAga0NHRXJyb3JDbGFzc2ljQXBwbGljYXRpb25z
TXVzdEJlTGF1bmNoZWRCeUNsYXNzaWMgPSAxMDI3LAogIGtDR0Vycm9yRm9ya0ZhaWxlZCA9IDEw
MjgsCiAga0NHRXJyb3JSZXRyeVJlZ2lzdHJhdGlvbiA9IDEwMjksCiAga0NHRXJyb3JGaXJzdCA9
IDEwMDAsCiAga0NHRXJyb3JMYXN0ID0gMTAyOQp9Owp0eXBlZGVmIGludDMyX3QgQ0dFcnJvcjsK
IyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBo
aWNzLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJz
L0NHRm9udC5oIiAxIDMKIyAxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hl
YWRlcnMvQ29yZUdyYXBoaWNzLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZy
YW1ld29yay9IZWFkZXJzL0NHRnVuY3Rpb24uaCIgMSAzCiMgMjAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdy
YXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVHcmFwaGljcy5oIiAyIDMKCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dHcmFkaWVudC5oIiAxIDMKIyAy
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBoaWNz
LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NH
SW1hZ2UuaCIgMSAzCiMgMjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFk
ZXJzL0NvcmVHcmFwaGljcy5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFt
ZXdvcmsvSGVhZGVycy9DR0xheWVyLmgiIDEgMwoKCgoKCiNkZWZpbmUgQ0dMQVlFUl9IXyAKCnR5
cGVkZWYgc3RydWN0IENHTGF5ZXIgKkNHTGF5ZXJSZWY7CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVH
cmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbnRleHQuaCIgMSAzCiMgMTIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHTGF5ZXIuaCIgMiAzCgoKCgoKCmV4
dGVybiAiQyIgQ0dMYXllclJlZiBDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoQ0dDb250ZXh0UmVm
IGNvbnRleHQsCiAgICBDR1NpemUgc2l6ZSwgQ0ZEaWN0aW9uYXJ5UmVmIGF1eGlsaWFyeUluZm8p
CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAi
QyIgQ0dMYXllclJlZiBDR0xheWVyUmV0YWluKENHTGF5ZXJSZWYgbGF5ZXIpCiAgICBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBDR0xh
eWVyUmVsZWFzZShDR0xheWVyUmVmIGxheWVyKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dTaXplIENHTGF5ZXJHZXRTaXplKENHTGF5
ZXJSZWYgbGF5ZXIpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKZXh0ZXJuICJDIiBDR0NvbnRleHRSZWYgQ0dMYXllckdldENvbnRleHQoQ0dMYXllclJlZiBs
YXllcikKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4
dGVybiAiQyIgdm9pZCBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIENHUmVjdCByZWN0LAogICAgQ0dMYXllclJlZiBsYXllcikgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiB2b2lkIENHQ29udGV4dERyYXdM
YXllckF0UG9pbnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUG9pbnQgcG9pbnQsCiAgICBDR0xh
eWVyUmVmIGxheWVyKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
ZXh0ZXJuICJDIiBDRlR5cGVJRCBDR0xheWVyR2V0VHlwZUlEKHZvaWQpCiAgICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhp
Y3MuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBoaWNzLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGQXJyYXkuaCIgMSAzCiMgMjUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVHcmFwaGljcy5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERkNv
bnRlbnRTdHJlYW0uaCIgMSAzCgoKCgoKI2RlZmluZSBDR1BERkNPTlRFTlRTVFJFQU1fSF8gCgp0
eXBlZGVmIHN0cnVjdCBDR1BERkNvbnRlbnRTdHJlYW0gKkNHUERGQ29udGVudFN0cmVhbVJlZjsK
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQREZQYWdl
LmgiIDEgMwojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9D
R1BERkNvbnRlbnRTdHJlYW0uaCIgMiAzCgoKCmV4dGVybiAiQyIgQ0dQREZDb250ZW50U3RyZWFt
UmVmIENHUERGQ29udGVudFN0cmVhbUNyZWF0ZVdpdGhQYWdlKAogIENHUERGUGFnZVJlZiBwYWdl
KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBD
R1BERkNvbnRlbnRTdHJlYW1SZWYgQ0dQREZDb250ZW50U3RyZWFtQ3JlYXRlV2l0aFN0cmVhbSgK
ICBDR1BERlN0cmVhbVJlZiBzdHJlYW0sIENHUERGRGljdGlvbmFyeVJlZiBzdHJlYW1SZXNvdXJj
ZXMsCiAgQ0dQREZDb250ZW50U3RyZWFtUmVmIHBhcmVudCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR1BERkNvbnRlbnRTdHJlYW1SZWYg
Q0dQREZDb250ZW50U3RyZWFtUmV0YWluKAogIENHUERGQ29udGVudFN0cmVhbVJlZiBjcykgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgdm9pZCBD
R1BERkNvbnRlbnRTdHJlYW1SZWxlYXNlKENHUERGQ29udGVudFN0cmVhbVJlZiBjcykKICAgIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDRkFy
cmF5UmVmIENHUERGQ29udGVudFN0cmVhbUdldFN0cmVhbXMoQ0dQREZDb250ZW50U3RyZWFtUmVm
IGNzKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRl
cm4gIkMiIENHUERGT2JqZWN0UmVmIENHUERGQ29udGVudFN0cmVhbUdldFJlc291cmNlKAogIENH
UERGQ29udGVudFN0cmVhbVJlZiBjcywgY29uc3QgY2hhciAqY2F0ZWdvcnksIGNvbnN0IGNoYXIg
Km5hbWUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVHcmFwaGljcy5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERkNv
bnRleHQuaCIgMSAzCgoKCgoKI2RlZmluZSBDR1BERkNPTlRFWFRfSF8gCgoKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0NvbnRleHQuaCIgMSAzCiMgMTAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGQ29udGV4dC5o
IiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Rh
dGFDb25zdW1lci5oIiAxIDMKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0dQREZDb250ZXh0LmgiIDIgMwojIDIxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGlj
cy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERkNvbnRleHQuaCIgMwpleHRlcm4gIkMiIENHQ29udGV4
dFJlZiBDR1BERkNvbnRleHRDcmVhdGUoQ0dEYXRhQ29uc3VtZXJSZWYgY29uc3VtZXIsCiAgICBj
b25zdCBDR1JlY3QgKm1lZGlhQm94LCBDRkRpY3Rpb25hcnlSZWYgYXV4aWxpYXJ5SW5mbykKICAg
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIg
Q0dDb250ZXh0UmVmIENHUERGQ29udGV4dENyZWF0ZVdpdGhVUkwoQ0ZVUkxSZWYgdXJsLAogICAg
Y29uc3QgQ0dSZWN0ICptZWRpYUJveCwgQ0ZEaWN0aW9uYXJ5UmVmIGF1eGlsaWFyeUluZm8pCiAg
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0ZXJuICJD
IiB2b2lkIENHUERGQ29udGV4dENsb3NlKENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgdm9pZCBDR1BE
RkNvbnRleHRCZWdpblBhZ2UoQ0dDb250ZXh0UmVmIGNvbnRleHQsCiAgICBDRkRpY3Rpb25hcnlS
ZWYgcGFnZUluZm8pCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKZXh0ZXJuICJDIiB2b2lkIENHUERGQ29udGV4dEVuZFBhZ2UoQ0dDb250ZXh0UmVmIGNvbnRl
eHQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVy
biAiQyIgdm9pZCBDR1BERkNvbnRleHRTZXRVUkxGb3JSZWN0KENHQ29udGV4dFJlZiBjb250ZXh0
LCBDRlVSTFJlZiB1cmwsCiAgICBDR1JlY3QgcmVjdCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dQREZDb250ZXh0QWRkRGVzdGlu
YXRpb25BdFBvaW50KENHQ29udGV4dFJlZiBjb250ZXh0LAogICAgQ0ZTdHJpbmdSZWYgbmFtZSwg
Q0dQb2ludCBwb2ludCkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwoKCgoKZXh0ZXJuICJDIiB2b2lkIENHUERGQ29udGV4dFNldERlc3RpbmF0aW9uRm9yUmVjdChD
R0NvbnRleHRSZWYgY29udGV4dCwKICAgIENGU3RyaW5nUmVmIG5hbWUsIENHUmVjdCByZWN0KQog
ICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCgpleHRlcm4g
IkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR1BERkNvbnRleHRNZWRpYUJveAogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0dQREZDb250ZXh0Q3JvcEJveAogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dQREZD
b250ZXh0QmxlZWRCb3gKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwoKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHUERGQ29udGV4dFRyaW1Cb3gK
ICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAi
QyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHUERGQ29udGV4dEFydEJveAogICAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJp
bmdSZWYga0NHUERGQ29udGV4dFRpdGxlCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHUERGQ29udGV4
dEF1dGhvcgogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpl
eHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR1BERkNvbnRleHRTdWJqZWN0CiAgICBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAxMzkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29y
ZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGQ29udGV4dC5oIiAzCmV4dGVybiAiQyIg
Y29uc3QgQ0ZTdHJpbmdSZWYga0NHUERGQ29udGV4dEtleXdvcmRzCiAgICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5n
UmVmIGtDR1BERkNvbnRleHRDcmVhdG9yCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKIyAxNTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFk
ZXJzL0NHUERGQ29udGV4dC5oIiAzCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHUERG
Q29udGV4dE93bmVyUGFzc3dvcmQKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwojIDE3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMv
Q0dQREZDb250ZXh0LmgiIDMKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dQREZDb250
ZXh0VXNlclBhc3N3b3JkCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKIyAxODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERG
Q29udGV4dC5oIiAzCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHUERGQ29udGV4dEVu
Y3J5cHRpb25LZXlMZW5ndGgKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwoKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHUERGQ29udGV4dEFsbG93
c1ByaW50aW5nCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR1BERkNvbnRleHRBbGxvd3NDb3B5aW5n
CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyMDUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGQ29udGV4dC5oIiAzCmV4
dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHUERGQ29udGV4dE91dHB1dEludGVudAogICAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCgpleHRlcm4gIkMi
IGNvbnN0IENGU3RyaW5nUmVmIGtDR1BERlhPdXRwdXRJbnRlbnRTdWJ0eXBlCiAgICBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiAiQyIgY29uc3Qg
Q0ZTdHJpbmdSZWYga0NHUERGWE91dHB1dENvbmRpdGlvbklkZW50aWZpZXIKICAgIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgpleHRlcm4gIkMiIGNvbnN0IENG
U3RyaW5nUmVmIGtDR1BERlhPdXRwdXRDb25kaXRpb24KICAgIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0dQREZYUmVnaXN0cnlOYW1lCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKIyAyNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NH
UERGQ29udGV4dC5oIiAzCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHUERGWEluZm8K
ICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDI2MCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQREZDb250ZXh0LmgiIDMKZXh0
ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dQREZYRGVzdGluYXRpb25PdXRwdXRQcm9maWxl
CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyNzMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGQ29udGV4dC5oIiAzCmV4
dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHUERGQ29udGV4dE91dHB1dEludGVudHMKICAg
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDI3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlR3JhcGhpY3MuaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQREZEaWN0aW9uYXJ5
LmgiIDEgMwojIDI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9D
b3JlR3JhcGhpY3MuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0dQREZEb2N1bWVudC5oIiAxIDMKIyAyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhp
Y3MuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBoaWNzLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGT2JqZWN0LmgiIDEgMwojIDMwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlR3JhcGhpY3MuaCIg
MiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQREZP
cGVyYXRvclRhYmxlLmgiIDEgMwoKCgoKCiNkZWZpbmUgQ0dQREZPUEVSQVRPUlRBQkxFX0hfIAoK
dHlwZWRlZiBzdHJ1Y3QgQ0dQREZPcGVyYXRvclRhYmxlICpDR1BERk9wZXJhdG9yVGFibGVSZWY7
CgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGU2Nh
bm5lci5oIiAxIDMKCgoKCgojZGVmaW5lIENHUERGU0NBTk5FUl9IXyAKCnR5cGVkZWYgc3RydWN0
IENHUERGU2Nhbm5lciAqQ0dQREZTY2FubmVyUmVmOwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFw
aGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERkNvbnRlbnRTdHJlYW0uaCIgMSAzCiMgMTEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUERGU2Nhbm5lci5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BERk9w
ZXJhdG9yVGFibGUuaCIgMSAzCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29y
ay9IZWFkZXJzL0NHUERGU2Nhbm5lci5oIiAyIDMKCgoKZXh0ZXJuICJDIiBDR1BERlNjYW5uZXJS
ZWYgQ0dQREZTY2FubmVyQ3JlYXRlKENHUERGQ29udGVudFN0cmVhbVJlZiBjcywKICBDR1BERk9w
ZXJhdG9yVGFibGVSZWYgdGFibGUsIHZvaWQgKmluZm8pCiAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dQREZTY2FubmVyUmVmIENHUERGU2Nh
bm5lclJldGFpbihDR1BERlNjYW5uZXJSZWYgc2Nhbm5lcikKICBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHUERGU2Nhbm5lclJlbGVh
c2UoQ0dQREZTY2FubmVyUmVmIHNjYW5uZXIpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBib29sIENHUERGU2Nhbm5lclNjYW4oQ0dQREZT
Y2FubmVyUmVmIHNjYW5uZXIpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCmV4dGVybiAiQyIgQ0dQREZDb250ZW50U3RyZWFtUmVmIENHUERGU2Nhbm5lckdldENv
bnRlbnRTdHJlYW0oCiAgQ0dQREZTY2FubmVyUmVmIHNjYW5uZXIpIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIGJvb2wgQ0dQREZTY2FubmVyUG9w
T2JqZWN0KENHUERGU2Nhbm5lclJlZiBzY2FubmVyLAogIENHUERGT2JqZWN0UmVmICp2YWx1ZSkg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIGJv
b2wgQ0dQREZTY2FubmVyUG9wQm9vbGVhbihDR1BERlNjYW5uZXJSZWYgc2Nhbm5lciwKICBDR1BE
RkJvb2xlYW4gKnZhbHVlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKCmV4dGVybiAiQyIgYm9vbCBDR1BERlNjYW5uZXJQb3BJbnRlZ2VyKENHUERGU2Nhbm5lclJl
ZiBzY2FubmVyLAogIENHUERGSW50ZWdlciAqdmFsdWUpIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBib29sIENHUERGU2Nhbm5lclBvcE51bWJl
cihDR1BERlNjYW5uZXJSZWYgc2Nhbm5lciwgQ0dQREZSZWFsICp2YWx1ZSkKICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgYm9vbCBDR1BERlNj
YW5uZXJQb3BOYW1lKENHUERGU2Nhbm5lclJlZiBzY2FubmVyLCBjb25zdCBjaGFyICoqdmFsdWUp
CiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMi
IGJvb2wgQ0dQREZTY2FubmVyUG9wU3RyaW5nKENHUERGU2Nhbm5lclJlZiBzY2FubmVyLAogIENH
UERGU3RyaW5nUmVmICp2YWx1ZSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCgpleHRlcm4gIkMiIGJvb2wgQ0dQREZTY2FubmVyUG9wQXJyYXkoQ0dQREZTY2FubmVy
UmVmIHNjYW5uZXIsCiAgQ0dQREZBcnJheVJlZiAqdmFsdWUpIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgYm9vbCBDR1BERlNjYW5uZXJQb3BE
aWN0aW9uYXJ5KENHUERGU2Nhbm5lclJlZiBzY2FubmVyLAogIENHUERGRGljdGlvbmFyeVJlZiAq
dmFsdWUpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJu
ICJDIiBib29sIENHUERGU2Nhbm5lclBvcFN0cmVhbShDR1BERlNjYW5uZXJSZWYgc2Nhbm5lciwK
ICBDR1BERlN0cmVhbVJlZiAqdmFsdWUpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9D
R1BERk9wZXJhdG9yVGFibGUuaCIgMiAzCgp0eXBlZGVmIHZvaWQgKCpDR1BERk9wZXJhdG9yQ2Fs
bGJhY2spKENHUERGU2Nhbm5lclJlZiBzY2FubmVyLCB2b2lkICppbmZvKTsKCgoKZXh0ZXJuICJD
IiBDR1BERk9wZXJhdG9yVGFibGVSZWYgQ0dQREZPcGVyYXRvclRhYmxlQ3JlYXRlKHZvaWQpCiAg
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBD
R1BERk9wZXJhdG9yVGFibGVSZWYgQ0dQREZPcGVyYXRvclRhYmxlUmV0YWluKENHUERGT3BlcmF0
b3JUYWJsZVJlZgogICAgdGFibGUpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwoKCgpleHRlcm4gIkMiIHZvaWQgQ0dQREZPcGVyYXRvclRhYmxlUmVsZWFzZShDR1BERk9w
ZXJhdG9yVGFibGVSZWYgdGFibGUpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHUERGT3BlcmF0b3JUYWJsZVNldENhbGxiYWNr
KENHUERGT3BlcmF0b3JUYWJsZVJlZiB0YWJsZSwKICAgIGNvbnN0IGNoYXIgKm5hbWUsIENHUERG
T3BlcmF0b3JDYWxsYmFjayBjYWxsYmFjaykKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVh
ZGVycy9Db3JlR3JhcGhpY3MuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJh
bWV3b3JrL0hlYWRlcnMvQ0dQREZQYWdlLmgiIDEgMwojIDMyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFw
aGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlR3JhcGhpY3MuaCIgMiAzCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQREZTY2FubmVyLmgiIDEgMwojIDMz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlR3JhcGhpY3Mu
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dQ
REZTdHJlYW0uaCIgMSAzCiMgMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9I
ZWFkZXJzL0NvcmVHcmFwaGljcy5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5m
cmFtZXdvcmsvSGVhZGVycy9DR1BERlN0cmluZy5oIiAxIDMKIyAzNSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3Jl
R3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBoaWNzLmgiIDIgMwojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUGF0aC5oIiAxIDMKIyAzNiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBoaWNzLmgi
IDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUGF0
dGVybi5oIiAxIDMKIyAzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRl
cnMvQ29yZUdyYXBoaWNzLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1l
d29yay9IZWFkZXJzL0NHU2hhZGluZy5oIiAxIDMKIyAzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhp
Y3MuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBoaWNzLmgiIDIgMwoKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0RpcmVjdERpc3BsYXkuaCIgMSAzCgoK
CgoKI2RlZmluZSBDR0RJUkVDVERJU1BMQVlfSF8gCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBo
aWNzLmZyYW1ld29yay9IZWFkZXJzL0NHQ29udGV4dC5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
cmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0RpcmVjdERpc3BsYXkuaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dFcnJvci5oIiAxIDMK
IyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dEaXJlY3RE
aXNwbGF5LmgiIDIgMwoKCgp0eXBlZGVmIHVpbnQzMl90IENHRGlyZWN0RGlzcGxheUlEOwp0eXBl
ZGVmIHVpbnQzMl90IENHT3BlbkdMRGlzcGxheU1hc2s7CnR5cGVkZWYgZG91YmxlIENHUmVmcmVz
aFJhdGU7Cgp0eXBlZGVmIHN0cnVjdCBfQ0dEaXJlY3RQYWxldHRlUmVmICpDR0RpcmVjdFBhbGV0
dGVSZWY7CnR5cGVkZWYgc3RydWN0IENHRGlzcGxheU1vZGUgKkNHRGlzcGxheU1vZGVSZWY7Cgoj
ZGVmaW5lIGtDR051bGxEaXJlY3REaXNwbGF5ICgoQ0dEaXJlY3REaXNwbGF5SUQpMCkKI2RlZmlu
ZSBrQ0dEaXJlY3RNYWluRGlzcGxheSBDR01haW5EaXNwbGF5SUQoKQoKCgpleHRlcm4gIkMiIENH
RGlyZWN0RGlzcGxheUlEIENHTWFpbkRpc3BsYXlJRCh2b2lkKQogIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFt
ZXdvcmsvSGVhZGVycy9DR0RpcmVjdERpc3BsYXkuaCIgMwpleHRlcm4gIkMiIENHRXJyb3IgQ0dH
ZXREaXNwbGF5c1dpdGhQb2ludChDR1BvaW50IHBvaW50LCB1aW50MzJfdCBtYXhEaXNwbGF5cywK
ICBDR0RpcmVjdERpc3BsYXlJRCAqZGlzcGxheXMsIHVpbnQzMl90ICptYXRjaGluZ0Rpc3BsYXlD
b3VudCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCmV4dGVybiAi
QyIgQ0dFcnJvciBDR0dldERpc3BsYXlzV2l0aFJlY3QoQ0dSZWN0IHJlY3QsIHVpbnQzMl90IG1h
eERpc3BsYXlzLAogIENHRGlyZWN0RGlzcGxheUlEICpkaXNwbGF5cywgdWludDMyX3QgKm1hdGNo
aW5nRGlzcGxheUNvdW50KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwoKZXh0ZXJuICJDIiBDR0Vycm9yIENHR2V0RGlzcGxheXNXaXRoT3BlbkdMRGlzcGxheU1hc2so
Q0dPcGVuR0xEaXNwbGF5TWFzayBtYXNrLAogIHVpbnQzMl90IG1heERpc3BsYXlzLCBDR0RpcmVj
dERpc3BsYXlJRCAqZGlzcGxheXMsCiAgdWludDMyX3QgKm1hdGNoaW5nRGlzcGxheUNvdW50KQog
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDY0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0RpcmVjdERpc3BsYXkuaCIgMwpleHRl
cm4gIkMiIENHRXJyb3IgQ0dHZXRBY3RpdmVEaXNwbGF5TGlzdCh1aW50MzJfdCBtYXhEaXNwbGF5
cywKICBDR0RpcmVjdERpc3BsYXlJRCAqYWN0aXZlRGlzcGxheXMsIHVpbnQzMl90ICpkaXNwbGF5
Q291bnQpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgODAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRGlyZWN0RGlzcGxheS5o
IiAzCmV4dGVybiAiQyIgQ0dFcnJvciBDR0dldE9ubGluZURpc3BsYXlMaXN0KHVpbnQzMl90IG1h
eERpc3BsYXlzLAogIENHRGlyZWN0RGlzcGxheUlEICpvbmxpbmVEaXNwbGF5cywgdWludDMyX3Qg
KmRpc3BsYXlDb3VudCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKCmV4dGVybiAiQyIgQ0dPcGVuR0xEaXNwbGF5TWFzayBDR0Rpc3BsYXlJRFRvT3BlbkdMRGlz
cGxheU1hc2soCiAgQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBDR0RpcmVjdERpc3BsYXlJRCBD
R09wZW5HTERpc3BsYXlNYXNrVG9EaXNwbGF5SUQoCiAgQ0dPcGVuR0xEaXNwbGF5TWFzayBtYXNr
KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIg
Q0dSZWN0IENHRGlzcGxheUJvdW5kcyhDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5KQogIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHNpemVfdCBD
R0Rpc3BsYXlQaXhlbHNXaWRlKENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXkpCiAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgc2l6ZV90IENHRGlz
cGxheVBpeGVsc0hpZ2goQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIENGQXJyYXlSZWYgQ0dE
aXNwbGF5Q29weUFsbERpc3BsYXlNb2RlcyhDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5LAogIENG
RGljdGlvbmFyeVJlZiBvcHRpb25zKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKCgoKCmV4dGVybiAiQyIgQ0dEaXNwbGF5TW9kZVJlZiBDR0Rpc3BsYXlDb3B5RGlzcGxh
eU1vZGUoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKIyAxMzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29y
ay9IZWFkZXJzL0NHRGlyZWN0RGlzcGxheS5oIiAzCmV4dGVybiAiQyIgQ0dFcnJvciBDR0Rpc3Bs
YXlTZXREaXNwbGF5TW9kZShDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5LAogIENHRGlzcGxheU1v
ZGVSZWYgbW9kZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpCiAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgc2l6ZV90IENHRGlzcGxheU1vZGVH
ZXRXaWR0aChDR0Rpc3BsYXlNb2RlUmVmIG1vZGUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgc2l6ZV90IENHRGlzcGxheU1vZGVHZXRIZWln
aHQoQ0dEaXNwbGF5TW9kZVJlZiBtb2RlKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDRlN0cmluZ1JlZiBDR0Rpc3BsYXlNb2RlQ29weVBp
eGVsRW5jb2RpbmcoQ0dEaXNwbGF5TW9kZVJlZiBtb2RlKQogIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIGRvdWJsZSBDR0Rpc3BsYXlNb2RlR2V0
UmVmcmVzaFJhdGUoQ0dEaXNwbGF5TW9kZVJlZiBtb2RlKQogIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIHVpbnQzMl90IENHRGlzcGxheU1vZGVH
ZXRJT0ZsYWdzKENHRGlzcGxheU1vZGVSZWYgbW9kZSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBpbnQzMl90IENHRGlzcGxheU1vZGVHZXRJ
T0Rpc3BsYXlNb2RlSUQoQ0dEaXNwbGF5TW9kZVJlZiBtb2RlKQogIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBib29sIENHRGlzcGxheU1vZGVJ
c1VzYWJsZUZvckRlc2t0b3BHVUkoQ0dEaXNwbGF5TW9kZVJlZiBtb2RlKQogIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENGVHlwZUlEIENHRGlz
cGxheU1vZGVHZXRUeXBlSUQodm9pZCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKCmV4dGVybiAiQyIgQ0dEaXNwbGF5TW9kZVJlZiBDR0Rpc3BsYXlNb2RlUmV0
YWluKENHRGlzcGxheU1vZGVSZWYgbW9kZSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBDR0Rpc3BsYXlNb2RlUmVsZWFzZShDR0Rp
c3BsYXlNb2RlUmVmIG1vZGUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CiMgMjExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Rp
cmVjdERpc3BsYXkuaCIgMwp0eXBlZGVmIGZsb2F0IENHR2FtbWFWYWx1ZTsKCmV4dGVybiAiQyIg
Q0dFcnJvciBDR1NldERpc3BsYXlUcmFuc2ZlckJ5Rm9ybXVsYShDR0RpcmVjdERpc3BsYXlJRCBk
aXNwbGF5LAogIENHR2FtbWFWYWx1ZSByZWRNaW4sIENHR2FtbWFWYWx1ZSByZWRNYXgsIENHR2Ft
bWFWYWx1ZSByZWRHYW1tYSwKICBDR0dhbW1hVmFsdWUgZ3JlZW5NaW4sIENHR2FtbWFWYWx1ZSBn
cmVlbk1heCwgQ0dHYW1tYVZhbHVlIGdyZWVuR2FtbWEsCiAgQ0dHYW1tYVZhbHVlIGJsdWVNaW4s
IENHR2FtbWFWYWx1ZSBibHVlTWF4LCBDR0dhbW1hVmFsdWUgYmx1ZUdhbW1hKQogIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENHRXJyb3IgQ0dH
ZXREaXNwbGF5VHJhbnNmZXJCeUZvcm11bGEoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSwKICBD
R0dhbW1hVmFsdWUgKnJlZE1pbiwgQ0dHYW1tYVZhbHVlICpyZWRNYXgsIENHR2FtbWFWYWx1ZSAq
cmVkR2FtbWEsCiAgQ0dHYW1tYVZhbHVlICpncmVlbk1pbiwgQ0dHYW1tYVZhbHVlICpncmVlbk1h
eCwgQ0dHYW1tYVZhbHVlICpncmVlbkdhbW1hLAogIENHR2FtbWFWYWx1ZSAqYmx1ZU1pbiwgQ0dH
YW1tYVZhbHVlICpibHVlTWF4LCBDR0dhbW1hVmFsdWUgKmJsdWVHYW1tYSkKICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgdWludDMyX3QgQ0dE
aXNwbGF5R2FtbWFUYWJsZUNhcGFjaXR5KENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXkpCiAgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjQxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
cmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0RpcmVjdERpc3BsYXkuaCIgMwpleHRlcm4g
IkMiIENHRXJyb3IgQ0dTZXREaXNwbGF5VHJhbnNmZXJCeVRhYmxlKENHRGlyZWN0RGlzcGxheUlE
IGRpc3BsYXksCiAgdWludDMyX3QgdGFibGVTaXplLCBjb25zdCBDR0dhbW1hVmFsdWUgKnJlZFRh
YmxlLAogIGNvbnN0IENHR2FtbWFWYWx1ZSAqZ3JlZW5UYWJsZSwgY29uc3QgQ0dHYW1tYVZhbHVl
ICpibHVlVGFibGUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CgoKCgpleHRlcm4gIkMiIENHRXJyb3IgQ0dHZXREaXNwbGF5VHJhbnNmZXJCeVRhYmxlKENHRGly
ZWN0RGlzcGxheUlEIGRpc3BsYXksCiAgdWludDMyX3QgY2FwYWNpdHksIENHR2FtbWFWYWx1ZSAq
cmVkVGFibGUsIENHR2FtbWFWYWx1ZSAqZ3JlZW5UYWJsZSwKICBDR0dhbW1hVmFsdWUgKmJsdWVU
YWJsZSwgdWludDMyX3QgKnNhbXBsZUNvdW50KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwojIDI2NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hl
YWRlcnMvQ0dEaXJlY3REaXNwbGF5LmgiIDMKZXh0ZXJuICJDIiBDR0Vycm9yIENHU2V0RGlzcGxh
eVRyYW5zZmVyQnlCeXRlVGFibGUoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSwKICB1aW50MzJf
dCB0YWJsZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnJlZFRhYmxlLCBjb25zdCB1aW50OF90ICpncmVl
blRhYmxlLAogIGNvbnN0IHVpbnQ4X3QgKmJsdWVUYWJsZSkgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dEaXNwbGF5UmVzdG9yZUNv
bG9yU3luY1NldHRpbmdzKHZvaWQpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CgoKCgplbnVtIHsKICBrQ0dDYXB0dXJlTm9PcHRpb25zID0gMCwKICBrQ0dDYXB0dXJl
Tm9GaWxsID0gKDEgPDwgMCkKfTsKdHlwZWRlZiB1aW50MzJfdCBDR0NhcHR1cmVPcHRpb25zOwoK
CgpleHRlcm4gIkMiIGJvb2xlYW5fdCBDR0Rpc3BsYXlJc0NhcHR1cmVkKENHRGlyZWN0RGlzcGxh
eUlEIGRpc3BsYXkpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CmV4dGVybiAiQyIgQ0dFcnJvciBDR0Rpc3BsYXlDYXB0dXJlKENHRGlyZWN0RGlzcGxheUlEIGRp
c3BsYXkpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRl
cm4gIkMiIENHRXJyb3IgQ0dEaXNwbGF5Q2FwdHVyZVdpdGhPcHRpb25zKENHRGlyZWN0RGlzcGxh
eUlEIGRpc3BsYXksCiAgQ0dDYXB0dXJlT3B0aW9ucyBvcHRpb25zKSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR0Vycm9yIENHRGlzcGxheVJl
bGVhc2UoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIENHRXJyb3IgQ0dDYXB0dXJlQWxsRGlz
cGxheXModm9pZCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CgpleHRlcm4gIkMiIENHRXJyb3IgQ0dDYXB0dXJlQWxsRGlzcGxheXNXaXRoT3B0aW9ucyhDR0Nh
cHR1cmVPcHRpb25zIG9wdGlvbnMpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBDR0Vycm9yIENHUmVsZWFzZUFsbERpc3BsYXlzKHZvaWQp
CiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMi
IHVpbnQzMl90IENHU2hpZWxkaW5nV2luZG93SUQoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkK
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIg
aW50MzJfdCBDR1NoaWVsZGluZ1dpbmRvd0xldmVsKHZvaWQpCiAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENHSW1hZ2VSZWYgQ0dEaXNwbGF5
Q3JlYXRlSW1hZ2UoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheUlEKQogIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgpleHRlcm4gIkMiIENHSW1hZ2VSZWYgQ0dE
aXNwbGF5Q3JlYXRlSW1hZ2VGb3JSZWN0KENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXksCiAgQ0dS
ZWN0IHJlY3QpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0
ZXJuICJDIiBDR0Vycm9yIENHRGlzcGxheUhpZGVDdXJzb3IoQ0dEaXJlY3REaXNwbGF5SUQgZGlz
cGxheSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVy
biAiQyIgQ0dFcnJvciBDR0Rpc3BsYXlTaG93Q3Vyc29yKENHRGlyZWN0RGlzcGxheUlEIGRpc3Bs
YXkpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCmV4dGVy
biAiQyIgQ0dFcnJvciBDR0Rpc3BsYXlNb3ZlQ3Vyc29yVG9Qb2ludChDR0RpcmVjdERpc3BsYXlJ
RCBkaXNwbGF5LAogIENHUG9pbnQgcG9pbnQpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiB2b2lkIENHR2V0TGFzdE1vdXNlRGVsdGEoaW50MzJf
dCAqZGVsdGFYLCBpbnQzMl90ICpkZWx0YVkpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIGJvb2xlYW5fdCBDR0Rpc3BsYXlDYW5TZXRQYWxl
dHRlKENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXkpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dFcnJvciBDR0Rpc3BsYXlTZXRQYWxldHRl
KENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXksCiAgQ0dEaXJlY3RQYWxldHRlUmVmIHBhbGV0dGUp
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDQwMiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dEaXJlY3REaXNwbGF5LmgiIDMKZXh0
ZXJuICJDIiBDR0Vycm9yIENHRGlzcGxheVdhaXRGb3JCZWFtUG9zaXRpb25PdXRzaWRlTGluZXMo
Q0dEaXJlY3REaXNwbGF5SUQKICBkaXNwbGF5LCB1aW50MzJfdCB1cHBlclNjYW5MaW5lLCB1aW50
MzJfdCBsb3dlclNjYW5MaW5lKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwoKCgoKCgpleHRlcm4gIkMiIHVpbnQzMl90IENHRGlzcGxheUJlYW1Qb3NpdGlvbihDR0Rp
cmVjdERpc3BsYXlJRCBkaXNwbGF5KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwojIDQyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMv
Q0dEaXJlY3REaXNwbGF5LmgiIDMKZXh0ZXJuICJDIiBDR0NvbnRleHRSZWYgQ0dEaXNwbGF5R2V0
RHJhd2luZ0NvbnRleHQoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKI2RlZmluZSBrQ0dEaXNwbGF5V2lkdGggQ0ZT
VFIoIldpZHRoIikKI2RlZmluZSBrQ0dEaXNwbGF5SGVpZ2h0IENGU1RSKCJIZWlnaHQiKQojZGVm
aW5lIGtDR0Rpc3BsYXlNb2RlIENGU1RSKCJNb2RlIikKI2RlZmluZSBrQ0dEaXNwbGF5Qml0c1Bl
clBpeGVsIENGU1RSKCJCaXRzUGVyUGl4ZWwiKQojZGVmaW5lIGtDR0Rpc3BsYXlCaXRzUGVyU2Ft
cGxlIENGU1RSKCJCaXRzUGVyU2FtcGxlIikKI2RlZmluZSBrQ0dEaXNwbGF5U2FtcGxlc1BlclBp
eGVsIENGU1RSKCJTYW1wbGVzUGVyUGl4ZWwiKQojZGVmaW5lIGtDR0Rpc3BsYXlSZWZyZXNoUmF0
ZSBDRlNUUigiUmVmcmVzaFJhdGUiKQojZGVmaW5lIGtDR0Rpc3BsYXlNb2RlVXNhYmxlRm9yRGVz
a3RvcEdVSSBDRlNUUigiVXNhYmxlRm9yRGVza3RvcEdVSSIpCiNkZWZpbmUga0NHRGlzcGxheUlP
RmxhZ3MgQ0ZTVFIoIklPRmxhZ3MiKQojZGVmaW5lIGtDR0Rpc3BsYXlCeXRlc1BlclJvdyBDRlNU
Uigia0NHRGlzcGxheUJ5dGVzUGVyUm93IikKI2RlZmluZSBrQ0dJT0Rpc3BsYXlNb2RlSUQgQ0ZT
VFIoIklPRGlzcGxheU1vZGVJRCIpCgojZGVmaW5lIGtDR0Rpc3BsYXlNb2RlSXNTYWZlRm9ySGFy
ZHdhcmUgQ0ZTVFIoImtDR0Rpc3BsYXlNb2RlSXNTYWZlRm9ySGFyZHdhcmUiKQoKI2RlZmluZSBr
Q0dEaXNwbGF5TW9kZUlzSW50ZXJsYWNlZCBDRlNUUigia0NHRGlzcGxheU1vZGVJc0ludGVybGFj
ZWQiKQoKI2RlZmluZSBrQ0dEaXNwbGF5TW9kZUlzU3RyZXRjaGVkIENGU1RSKCJrQ0dEaXNwbGF5
TW9kZUlzU3RyZXRjaGVkIikKCiNkZWZpbmUga0NHRGlzcGxheU1vZGVJc1RlbGV2aXNpb25PdXRw
dXQgQ0ZTVFIoImtDR0Rpc3BsYXlNb2RlSXNUZWxldmlzaW9uT3V0cHV0IikKCgoKCnR5cGVkZWYg
dWludDMyX3QgQ0dEaXNwbGF5Q291bnQ7CnR5cGVkZWYgQ0dFcnJvciBDR0Rpc3BsYXlFcnI7CnR5
cGVkZWYgdWludDMyX3QgQ0dCZWFtUG9zaXRpb24gX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
Owp0eXBlZGVmIHVpbnQ4X3QgQ0dCeXRlVmFsdWUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
Owp0eXBlZGVmIGludDMyX3QgQ0dEaXNwbGF5Q29vcmQgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwp0eXBlZGVmIGludDMyX3QgQ0dNb3VzZURlbHRhIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKdHlwZWRlZiB1aW50MzJfdCBDR1RhYmxlQ291bnQgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwojZGVmaW5lIENHRGlzcGxheU5vRXJyIGtDR0Vycm9yU3VjY2VzcwoKCgoKZXh0ZXJu
ICJDIiB2b2lkICpDR0Rpc3BsYXlCYXNlQWRkcmVzcyhDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5
KQogIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CmV4dGVybiAiQyIgdm9pZCAqQ0dEaXNwbGF5QWRkcmVzc0ZvclBvc2l0aW9uKENHRGlyZWN0RGlz
cGxheUlEIGRpc3BsYXksCiAgaW50MzJfdCB4LCBpbnQzMl90IHkpIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgc2l6ZV90IENH
RGlzcGxheUJ5dGVzUGVyUm93KENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXkpCiAgX19hdHRyaWJ1
dGVfXygoZGVwcmVjYXRlZCx2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBD
RkFycmF5UmVmIENHRGlzcGxheUF2YWlsYWJsZU1vZGVzKENHRGlyZWN0RGlzcGxheUlEIGRpc3Bs
YXkpCiAgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCx2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKZXh0ZXJuICJDIiBDRkRpY3Rpb25hcnlSZWYgQ0dEaXNwbGF5QmVzdE1vZGVGb3JQYXJhbWV0
ZXJzKENHRGlyZWN0RGlzcGxheUlECiAgZGlzcGxheSwgc2l6ZV90IGJpdHNQZXJQaXhlbCwgc2l6
ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LAogIGJvb2xlYW5fdCAqZXhhY3RNYXRjaCkgX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCx2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJD
IiBDRkRpY3Rpb25hcnlSZWYgQ0dEaXNwbGF5QmVzdE1vZGVGb3JQYXJhbWV0ZXJzQW5kUmVmcmVz
aFJhdGUoCiAgQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSwgc2l6ZV90IGJpdHNQZXJQaXhlbCwg
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LAogIENHUmVmcmVzaFJhdGUgcmVmcmVzaFJhdGUs
IGJvb2xlYW5fdCAqZXhhY3RNYXRjaCkKICBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENGRGljdGlvbmFyeVJlZgogIENHRGlz
cGxheUJlc3RNb2RlRm9yUGFyYW1ldGVyc0FuZFJlZnJlc2hSYXRlV2l0aFByb3BlcnR5KENHRGly
ZWN0RGlzcGxheUlECiAgICBkaXNwbGF5LCBzaXplX3QgYml0c1BlclBpeGVsLCBzaXplX3Qgd2lk
dGgsIHNpemVfdCBoZWlnaHQsCiAgICBDR1JlZnJlc2hSYXRlIHJlZnJlc2hSYXRlLCBDRlN0cmlu
Z1JlZiBwcm9wZXJ0eSwgYm9vbGVhbl90ICpleGFjdE1hdGNoKQogICAgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCx2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDRkRpY3Rp
b25hcnlSZWYgQ0dEaXNwbGF5Q3VycmVudE1vZGUoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkK
ICBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpl
eHRlcm4gIkMiIENHRXJyb3IgQ0dEaXNwbGF5U3dpdGNoVG9Nb2RlKENHRGlyZWN0RGlzcGxheUlE
IGRpc3BsYXksCiAgQ0ZEaWN0aW9uYXJ5UmVmIG1vZGUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgc2l6ZV90IENHRGlzcGxh
eUJpdHNQZXJQaXhlbChDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5KQogIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgc2l6ZV90
IENHRGlzcGxheUJpdHNQZXJTYW1wbGUoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCmV4dGVybiAi
QyIgc2l6ZV90IENHRGlzcGxheVNhbXBsZXNQZXJQaXhlbChDR0RpcmVjdERpc3BsYXlJRCBkaXNw
bGF5KQogIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVHcmFw
aGljcy5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVy
cy9DR0RpcmVjdFBhbGV0dGUuaCIgMSAzCgoKCgoKI2RlZmluZSBDR0RJUkVDVFBBTEVUVEVfSF8g
CgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRGlyZWN0
RGlzcGxheS5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVh
ZGVycy9DR0RpcmVjdFBhbGV0dGUuaCIgMiAzCgoKdHlwZWRlZiBmbG9hdCBDR1BhbGV0dGVCbGVu
ZEZyYWN0aW9uOwoKCgoKc3RydWN0IENHRGV2aWNlQ29sb3IgewogIGZsb2F0IHJlZDsKICBmbG9h
dCBncmVlbjsKICBmbG9hdCBibHVlOwp9Owp0eXBlZGVmIHN0cnVjdCBDR0RldmljZUNvbG9yIENH
RGV2aWNlQ29sb3I7CgoKCgoKc3RydWN0IENHRGV2aWNlQnl0ZUNvbG9yIHsKICB1aW50OF90IHJl
ZDsKICB1aW50OF90IGdyZWVuOwogIHVpbnQ4X3QgYmx1ZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQ0dE
ZXZpY2VCeXRlQ29sb3IgQ0dEZXZpY2VCeXRlQ29sb3I7CgoKCgpleHRlcm4gIkMiIENHRGlyZWN0
UGFsZXR0ZVJlZiBDR1BhbGV0dGVDcmVhdGVEZWZhdWx0Q29sb3JQYWxldHRlKHZvaWQpCiAgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENHRGly
ZWN0UGFsZXR0ZVJlZiBDR1BhbGV0dGVDcmVhdGVXaXRoRGlzcGxheShDR0RpcmVjdERpc3BsYXlJ
RAogIGRpc3BsYXkpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
ZXh0ZXJuICJDIiBDR0RpcmVjdFBhbGV0dGVSZWYgQ0dQYWxldHRlQ3JlYXRlV2l0aENhcGFjaXR5
KHVpbnQzMl90IGNhcGFjaXR5KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwoKCgpleHRlcm4gIkMiIENHRGlyZWN0UGFsZXR0ZVJlZiBDR1BhbGV0dGVDcmVhdGVXaXRo
U2FtcGxlcyhDR0RldmljZUNvbG9yICpzYW1wbGVzLAogIHVpbnQzMl90IGNvdW50KSBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR0RpcmVjdFBh
bGV0dGVSZWYgQ0dQYWxldHRlQ3JlYXRlV2l0aEJ5dGVTYW1wbGVzKENHRGV2aWNlQnl0ZUNvbG9y
CiAgKnNhbXBsZXMsIHVpbnQzMl90IGNvdW50KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHUGFsZXR0ZVJlbGVhc2UoQ0dEaXJlY3RQ
YWxldHRlUmVmIHBhbGV0dGUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCmV4dGVybiAiQyIgQ0dEZXZpY2VDb2xvciBDR1BhbGV0dGVHZXRDb2xvckF0SW5kZXgo
Q0dEaXJlY3RQYWxldHRlUmVmIHBhbGV0dGUsCiAgdWludDMyX3QgaW5kZXgpIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiB1aW50MzJfdCBDR1Bh
bGV0dGVHZXRJbmRleEZvckNvbG9yKENHRGlyZWN0UGFsZXR0ZVJlZiBwYWxldHRlLAogIENHRGV2
aWNlQ29sb3IgY29sb3IpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgpleHRlcm4gIkMiIHVpbnQzMl90IENHUGFsZXR0ZUdldE51bWJlck9mU2FtcGxlcyhDR0RpcmVj
dFBhbGV0dGVSZWYgcGFsZXR0ZSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKCgoKZXh0ZXJuICJDIiB2b2lkIENHUGFsZXR0ZVNldENvbG9yQXRJbmRleChDR0RpcmVj
dFBhbGV0dGVSZWYgcGFsZXR0ZSwKICBDR0RldmljZUNvbG9yIGNvbG9yLCB1aW50MzJfdCBpbmRl
eCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJD
IiBDR0RpcmVjdFBhbGV0dGVSZWYgQ0dQYWxldHRlQ3JlYXRlQ29weShDR0RpcmVjdFBhbGV0dGVS
ZWYgcGFsZXR0ZSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
ZXh0ZXJuICJDIiBib29sIENHUGFsZXR0ZUlzRXF1YWxUb1BhbGV0dGUoQ0dEaXJlY3RQYWxldHRl
UmVmIHBhbGV0dGUxLAogIENHRGlyZWN0UGFsZXR0ZVJlZiBwYWxldHRlMikgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENHRGlyZWN0UGFsZXR0
ZVJlZiBDR1BhbGV0dGVDcmVhdGVGcm9tUGFsZXR0ZUJsZW5kZWRXaXRoQ29sb3IoCiAgQ0dEaXJl
Y3RQYWxldHRlUmVmIHBhbGV0dGUsIENHUGFsZXR0ZUJsZW5kRnJhY3Rpb24gZnJhY3Rpb24sCiAg
Q0dEZXZpY2VDb2xvciBjb2xvcikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CiMgNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVH
cmFwaGljcy5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVh
ZGVycy9DR0Rpc3BsYXlDb25maWd1cmF0aW9uLmgiIDEgMwoKCgoKCiNkZWZpbmUgQ0dESVNQTEFZ
Q09ORklHVVJBVElPTl9IXyAKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29y
ay9IZWFkZXJzL0NHRGlyZWN0RGlzcGxheS5oIiAxIDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3Jh
cGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dEaXNwbGF5Q29uZmlndXJhdGlvbi5oIiAyIDMKIyAy
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dEaXNwbGF5Q29u
ZmlndXJhdGlvbi5oIiAzCnR5cGVkZWYgc3RydWN0IF9DR0Rpc3BsYXlDb25maWdSZWYgKkNHRGlz
cGxheUNvbmZpZ1JlZjsKCgoKCgoKZXh0ZXJuICJDIiBDR0Vycm9yIENHQmVnaW5EaXNwbGF5Q29u
ZmlndXJhdGlvbihDR0Rpc3BsYXlDb25maWdSZWYgKmNvbmZpZykKICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJh
bWV3b3JrL0hlYWRlcnMvQ0dEaXNwbGF5Q29uZmlndXJhdGlvbi5oIiAzCmV4dGVybiAiQyIgQ0dF
cnJvciBDR0NvbmZpZ3VyZURpc3BsYXlPcmlnaW4oQ0dEaXNwbGF5Q29uZmlnUmVmIGNvbmZpZywK
ICBDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5LCBpbnQzMl90IHgsIGludDMyX3QgeSkKICBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA1OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3Jl
R3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dEaXNwbGF5Q29uZmlndXJhdGlvbi5oIiAzCmV4
dGVybiAiQyIgQ0dFcnJvciBDR0NvbmZpZ3VyZURpc3BsYXlXaXRoRGlzcGxheU1vZGUoQ0dEaXNw
bGF5Q29uZmlnUmVmIGNvbmZpZywKICBDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5LCBDR0Rpc3Bs
YXlNb2RlUmVmIG1vZGUsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKQogIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5m
cmFtZXdvcmsvSGVhZGVycy9DR0Rpc3BsYXlDb25maWd1cmF0aW9uLmgiIDMKZXh0ZXJuICJDIiBD
R0Vycm9yIENHQ29uZmlndXJlRGlzcGxheVN0ZXJlb09wZXJhdGlvbihDR0Rpc3BsYXlDb25maWdS
ZWYgY29uZmlnLAogIENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXksIGJvb2xlYW5fdCBzdGVyZW8s
IGJvb2xlYW5fdCBmb3JjZUJsdWVMaW5lKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwojIDEyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRl
cnMvQ0dEaXNwbGF5Q29uZmlndXJhdGlvbi5oIiAzCmV4dGVybiAiQyIgQ0dFcnJvciBDR0NvbmZp
Z3VyZURpc3BsYXlNaXJyb3JPZkRpc3BsYXkoQ0dEaXNwbGF5Q29uZmlnUmVmIGNvbmZpZywKICBD
R0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5LCBDR0RpcmVjdERpc3BsYXlJRCBtYXN0ZXIpCiAgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIENHRXJy
b3IgQ0dDYW5jZWxEaXNwbGF5Q29uZmlndXJhdGlvbihDR0Rpc3BsYXlDb25maWdSZWYgY29uZmln
KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDE1NSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dEaXNwbGF5Q29uZmlndXJhdGlv
bi5oIiAzCmVudW0gewogIGtDR0NvbmZpZ3VyZUZvckFwcE9ubHkgPSAwLAogIGtDR0NvbmZpZ3Vy
ZUZvclNlc3Npb24gPSAxLAogIGtDR0NvbmZpZ3VyZVBlcm1hbmVudGx5ID0gMgp9Owp0eXBlZGVm
IHVpbnQzMl90IENHQ29uZmlndXJlT3B0aW9uOwoKZXh0ZXJuICJDIiBDR0Vycm9yIENHQ29tcGxl
dGVEaXNwbGF5Q29uZmlndXJhdGlvbihDR0Rpc3BsYXlDb25maWdSZWYgY29uZmlnLAogIENHQ29u
ZmlndXJlT3B0aW9uIG9wdGlvbikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dSZXN0b3JlUGVybWFuZW50RGlzcGxheUNvbmZpZ3Vy
YXRpb24odm9pZCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAx
OTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRGlzcGxheUNv
bmZpZ3VyYXRpb24uaCIgMwplbnVtIHsKICBrQ0dEaXNwbGF5QmVnaW5Db25maWd1cmF0aW9uRmxh
ZyA9ICgxIDw8IDApLAogIGtDR0Rpc3BsYXlNb3ZlZEZsYWcgPSAoMSA8PCAxKSwKICBrQ0dEaXNw
bGF5U2V0TWFpbkZsYWcgPSAoMSA8PCAyKSwKICBrQ0dEaXNwbGF5U2V0TW9kZUZsYWcgPSAoMSA8
PCAzKSwKICBrQ0dEaXNwbGF5QWRkRmxhZyA9ICgxIDw8IDQpLAogIGtDR0Rpc3BsYXlSZW1vdmVG
bGFnID0gKDEgPDwgNSksCiAga0NHRGlzcGxheUVuYWJsZWRGbGFnID0gKDEgPDwgOCksCiAga0NH
RGlzcGxheURpc2FibGVkRmxhZyA9ICgxIDw8IDkpLAogIGtDR0Rpc3BsYXlNaXJyb3JGbGFnID0g
KDEgPDwgMTApLAogIGtDR0Rpc3BsYXlVbk1pcnJvckZsYWcgPSAoMSA8PCAxMSksCiAga0NHRGlz
cGxheURlc2t0b3BTaGFwZUNoYW5nZWRGbGFnID0gKDEgPDwgMTIpCn07CnR5cGVkZWYgdWludDMy
X3QgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzOwoKCgoKdHlwZWRlZiB2b2lkKCpDR0Rpc3Bs
YXlSZWNvbmZpZ3VyYXRpb25DYWxsQmFjaykoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSwKICBD
R0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MgZmxhZ3MsIHZvaWQgKnVzZXJJbmZvKTsKCgoKCgpl
eHRlcm4gIkMiIENHRXJyb3IgQ0dEaXNwbGF5UmVnaXN0ZXJSZWNvbmZpZ3VyYXRpb25DYWxsYmFj
aygKICBDR0Rpc3BsYXlSZWNvbmZpZ3VyYXRpb25DYWxsQmFjayBjYWxsYmFjaywgdm9pZCAqdXNl
ckluZm8pCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVy
biAiQyIgQ0dFcnJvciBDR0Rpc3BsYXlSZW1vdmVSZWNvbmZpZ3VyYXRpb25DYWxsYmFjaygKICBD
R0Rpc3BsYXlSZWNvbmZpZ3VyYXRpb25DYWxsQmFjayBjYWxsYmFjaywgdm9pZCAqdXNlckluZm8p
CiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjU4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Rpc3BsYXlDb25maWd1cmF0aW9u
LmgiIDMKZXh0ZXJuICJDIiBDR0Vycm9yIENHRGlzcGxheVNldFN0ZXJlb09wZXJhdGlvbihDR0Rp
cmVjdERpc3BsYXlJRCBkaXNwbGF5LAogIGJvb2xlYW5fdCBzdGVyZW8sIGJvb2xlYW5fdCBmb3Jj
ZUJsdWVMaW5lLCBDR0NvbmZpZ3VyZU9wdGlvbiBvcHRpb24pCiAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIGJvb2xlYW5fdCBDR0Rpc3BsYXlJ
c0FjdGl2ZShDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5KQogIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBib29sZWFuX3QgQ0dEaXNwbGF5SXNB
c2xlZXAoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBib29sZWFuX3QgQ0dEaXNwbGF5SXNPbmxp
bmUoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgYm9vbGVhbl90IENHRGlzcGxheUlzTWFpbihD
R0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBib29sZWFuX3QgQ0dEaXNwbGF5SXNCdWlsdGluKENH
RGlyZWN0RGlzcGxheUlEIGRpc3BsYXkpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgYm9vbGVhbl90IENHRGlzcGxheUlzSW5NaXJyb3JTZXQo
Q0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgYm9vbGVhbl90IENHRGlzcGxheUlzQWx3YXlzSW5N
aXJyb3JTZXQoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgYm9vbGVhbl90IENHRGlzcGxheUlz
SW5IV01pcnJvclNldChDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5KQogIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgQ0dEaXJlY3REaXNwbGF5
SUQgQ0dEaXNwbGF5TWlycm9yc0Rpc3BsYXkoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgYm9v
bGVhbl90IENHRGlzcGxheVVzZXNPcGVuR0xBY2NlbGVyYXRpb24oQ0dEaXJlY3REaXNwbGF5SUQg
ZGlzcGxheSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4
dGVybiAiQyIgYm9vbGVhbl90IENHRGlzcGxheUlzU3RlcmVvKENHRGlyZWN0RGlzcGxheUlEIGRp
c3BsYXkpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRl
cm4gIkMiIENHRGlyZWN0RGlzcGxheUlEIENHRGlzcGxheVByaW1hcnlEaXNwbGF5KENHRGlyZWN0
RGlzcGxheUlEIGRpc3BsYXkpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCmV4dGVybiAiQyIgdWludDMyX3QgQ0dEaXNwbGF5VW5pdE51bWJlcihDR0RpcmVjdERp
c3BsYXlJRCBkaXNwbGF5KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwoKCgpleHRlcm4gIkMiIHVpbnQzMl90IENHRGlzcGxheVZlbmRvck51bWJlcihDR0RpcmVjdERp
c3BsYXlJRCBkaXNwbGF5KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwoKCgpleHRlcm4gIkMiIHVpbnQzMl90IENHRGlzcGxheU1vZGVsTnVtYmVyKENHRGlyZWN0RGlz
cGxheUlEIGRpc3BsYXkpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CgoKCmV4dGVybiAiQyIgdWludDMyX3QgQ0dEaXNwbGF5U2VyaWFsTnVtYmVyKENHRGlyZWN0RGlz
cGxheUlEIGRpc3BsYXkpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CgoKCmV4dGVybiAiQyIgaW9fc2VydmljZV90IENHRGlzcGxheUlPU2VydmljZVBvcnQoQ0dEaXJl
Y3REaXNwbGF5SUQgZGlzcGxheSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKIyAzNjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NH
RGlzcGxheUNvbmZpZ3VyYXRpb24uaCIgMwpleHRlcm4gIkMiIENHU2l6ZSBDR0Rpc3BsYXlTY3Jl
ZW5TaXplKENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXkpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CiMgMzgwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdv
cmsvSGVhZGVycy9DR0Rpc3BsYXlDb25maWd1cmF0aW9uLmgiIDMKZXh0ZXJuICJDIiBkb3VibGUg
Q0dEaXNwbGF5Um90YXRpb24oQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR0NvbG9yU3BhY2VS
ZWYgQ0dEaXNwbGF5Q29weUNvbG9yU3BhY2UoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSkKICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBDR0Vy
cm9yIENHQ29uZmlndXJlRGlzcGxheU1vZGUoQ0dEaXNwbGF5Q29uZmlnUmVmIGNvbmZpZywKICBD
R0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5LCBDRkRpY3Rpb25hcnlSZWYgbW9kZSkKICBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDQyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlR3JhcGhpY3MuaCIgMiAzCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dEaXNwbGF5RmFk
ZS5oIiAxIDMKCgoKCgojZGVmaW5lIENHRElTUExBWUZBREVfSF8gCgojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRGlyZWN0RGlzcGxheS5oIiAxIDMKIyA5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Rpc3BsYXlGYWRl
LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NH
RGlzcGxheUNvbmZpZ3VyYXRpb24uaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNz
LmZyYW1ld29yay9IZWFkZXJzL0NHRGlzcGxheUZhZGUuaCIgMiAzCiMgMTggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRGlzcGxheUZhZGUuaCIgMwp0eXBlZGVm
IHVpbnQzMl90IENHRGlzcGxheUZhZGVSZXNlcnZhdGlvblRva2VuOwojZGVmaW5lIGtDR0Rpc3Bs
YXlGYWRlUmVzZXJ2YXRpb25JbnZhbGlkVG9rZW4gKDApCgp0eXBlZGVmIGZsb2F0IENHRGlzcGxh
eUJsZW5kRnJhY3Rpb247CgoKCgoKI2RlZmluZSBrQ0dEaXNwbGF5QmxlbmROb3JtYWwgKDAuMCkK
I2RlZmluZSBrQ0dEaXNwbGF5QmxlbmRTb2xpZENvbG9yICgxLjApCgoKCnR5cGVkZWYgZmxvYXQg
Q0dEaXNwbGF5RmFkZUludGVydmFsOwojIDQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFt
ZXdvcmsvSGVhZGVycy9DR0Rpc3BsYXlGYWRlLmgiIDMKZXh0ZXJuICJDIiBDR0Vycm9yIENHQ29u
ZmlndXJlRGlzcGxheUZhZGVFZmZlY3QoQ0dEaXNwbGF5Q29uZmlnUmVmIGNvbmZpZywKICBDR0Rp
c3BsYXlGYWRlSW50ZXJ2YWwgZmFkZU91dFNlY29uZHMsIENHRGlzcGxheUZhZGVJbnRlcnZhbCBm
YWRlSW5TZWNvbmRzLAogIGZsb2F0IGZhZGVSZWQsIGZsb2F0IGZhZGVHcmVlbiwgZmxvYXQgZmFk
ZUJsdWUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNjIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRGlzcGxheUZhZGUuaCIg
Mwp0eXBlZGVmIGZsb2F0IENHRGlzcGxheVJlc2VydmF0aW9uSW50ZXJ2YWw7CgojZGVmaW5lIGtD
R01heERpc3BsYXlSZXNlcnZhdGlvbkludGVydmFsICgoQ0dEaXNwbGF5UmVzZXJ2YXRpb25JbnRl
cnZhbCkoMTUuMCkpCgpleHRlcm4gIkMiIENHRXJyb3IgQ0dBY3F1aXJlRGlzcGxheUZhZGVSZXNl
cnZhdGlvbihDR0Rpc3BsYXlSZXNlcnZhdGlvbkludGVydmFsCiAgc2Vjb25kcywgQ0dEaXNwbGF5
RmFkZVJlc2VydmF0aW9uVG9rZW4gKnRva2VuKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwojIDc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVh
ZGVycy9DR0Rpc3BsYXlGYWRlLmgiIDMKZXh0ZXJuICJDIiBDR0Vycm9yIENHUmVsZWFzZURpc3Bs
YXlGYWRlUmVzZXJ2YXRpb24oCiAgQ0dEaXNwbGF5RmFkZVJlc2VydmF0aW9uVG9rZW4gdG9rZW4p
CiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTI0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Rpc3BsYXlGYWRlLmgiIDMKZXh0
ZXJuICJDIiBDR0Vycm9yIENHRGlzcGxheUZhZGUoQ0dEaXNwbGF5RmFkZVJlc2VydmF0aW9uVG9r
ZW4gdG9rZW4sCiAgQ0dEaXNwbGF5RmFkZUludGVydmFsIGR1cmF0aW9uLCBDR0Rpc3BsYXlCbGVu
ZEZyYWN0aW9uIHN0YXJ0QmxlbmQsCiAgQ0dEaXNwbGF5QmxlbmRGcmFjdGlvbiBlbmRCbGVuZCwg
ZmxvYXQgcmVkQmxlbmQsIGZsb2F0IGdyZWVuQmxlbmQsCiAgZmxvYXQgYmx1ZUJsZW5kLCBib29s
ZWFuX3Qgc3luY2hyb25vdXMpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCgpleHRlcm4gIkMiIGJvb2xlYW5fdCBDR0Rpc3BsYXlGYWRlT3BlcmF0aW9uSW5Qcm9n
cmVzcyh2b2lkKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDQz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlR3JhcGhpY3Mu
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dF
dmVudC5oIiAxIDMKCgoKCgojZGVmaW5lIENHRVZFTlRfSF8gCgojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29y
ZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRXZlbnRUeXBlcy5oIiAxIDMKCgoKCgojZGVm
aW5lIENHRVZFTlRUWVBFU19IXyAKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1l
d29yay9IZWFkZXJzL0NHUmVtb3RlT3BlcmF0aW9uLmgiIDEgMwoKCgoKCiNkZWZpbmUgQ0dSRU1P
VEVPUEVSQVRJT05fSF8gCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9I
ZWFkZXJzL0NHRGlyZWN0RGlzcGxheS5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGlj
cy5mcmFtZXdvcmsvSGVhZGVycy9DR1JlbW90ZU9wZXJhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Vycm9yLmgiIDEgMwojIDEwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1JlbW90ZU9wZXJhdGlv
bi5oIiAyIDMKCgoKdHlwZWRlZiBDR0Vycm9yIENHRXZlbnRFcnI7CgojZGVmaW5lIENHRXZlbnRO
b0VyciBrQ0dFcnJvclN1Y2Nlc3MKCgoKCnR5cGVkZWYgdWludDMyX3QgQ0dCdXR0b25Db3VudDsK
CgoKCnR5cGVkZWYgdWludDMyX3QgQ0dXaGVlbENvdW50OwoKCgoKdHlwZWRlZiB1aW50MTZfdCBD
R0NoYXJDb2RlOwoKCgp0eXBlZGVmIHVpbnQxNl90IENHS2V5Q29kZTsKIyA1NiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dSZW1vdGVPcGVyYXRpb24uaCIgMwp0
eXBlZGVmIHZvaWQgKCpDR1NjcmVlblJlZnJlc2hDYWxsYmFjaykodWludDMyX3QgY291bnQsIGNv
bnN0IENHUmVjdCAqcmVjdHMsCiAgdm9pZCAqdXNlckluZm8pOwojIDY2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
cmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1JlbW90ZU9wZXJhdGlvbi5oIiAzCmV4dGVy
biAiQyIgQ0dFcnJvciBDR1JlZ2lzdGVyU2NyZWVuUmVmcmVzaENhbGxiYWNrKENHU2NyZWVuUmVm
cmVzaENhbGxiYWNrCiAgY2FsbGJhY2ssIHZvaWQgKnVzZXJJbmZvKSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiAiQyIgdm9pZCBDR1VucmVnaXN0
ZXJTY3JlZW5SZWZyZXNoQ2FsbGJhY2soQ0dTY3JlZW5SZWZyZXNoQ2FsbGJhY2sKICBjYWxsYmFj
aywgdm9pZCAqdXNlckluZm8pIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwojIDkxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1JlbW90
ZU9wZXJhdGlvbi5oIiAzCmV4dGVybiAiQyIgQ0dFcnJvciBDR1dhaXRGb3JTY3JlZW5SZWZyZXNo
UmVjdHMoQ0dSZWN0ICoqcmVjdHMsIHVpbnQzMl90ICpjb3VudCkKICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmVudW0gewogIGtDR1NjcmVlblVwZGF0ZU9wZXJh
dGlvblJlZnJlc2ggPSAwLAogIGtDR1NjcmVlblVwZGF0ZU9wZXJhdGlvbk1vdmUgPSAoMSA8PCAw
KSwKICBrQ0dTY3JlZW5VcGRhdGVPcGVyYXRpb25SZWR1Y2VkRGlydHlSZWN0YW5nbGVDb3VudCA9
ICgxIDw8IDMxKQp9Owp0eXBlZGVmIHVpbnQzMl90IENHU2NyZWVuVXBkYXRlT3BlcmF0aW9uOwoj
IDExMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dSZW1vdGVP
cGVyYXRpb24uaCIgMwpzdHJ1Y3QgQ0dTY3JlZW5VcGRhdGVNb3ZlRGVsdGEgewogIGludDMyX3Qg
ZFgsIGRZOwp9Owp0eXBlZGVmIHN0cnVjdCBDR1NjcmVlblVwZGF0ZU1vdmVEZWx0YSBDR1NjcmVl
blVwZGF0ZU1vdmVEZWx0YTsKIyAxMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29y
ay9IZWFkZXJzL0NHUmVtb3RlT3BlcmF0aW9uLmgiIDMKdHlwZWRlZiB2b2lkICgqQ0dTY3JlZW5V
cGRhdGVNb3ZlQ2FsbGJhY2spKENHU2NyZWVuVXBkYXRlTW92ZURlbHRhIGRlbHRhLAogIHNpemVf
dCBjb3VudCwgY29uc3QgQ0dSZWN0ICpyZWN0cywgdm9pZCAqdXNlckluZm8pOwoKCgoKCmV4dGVy
biAiQyIgQ0dFcnJvciBDR1NjcmVlblJlZ2lzdGVyTW92ZUNhbGxiYWNrKENHU2NyZWVuVXBkYXRl
TW92ZUNhbGxiYWNrCiAgY2FsbGJhY2ssIHZvaWQgKnVzZXJJbmZvICkgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgdm9pZCBDR1NjcmVlblVucmVn
aXN0ZXJNb3ZlQ2FsbGJhY2soQ0dTY3JlZW5VcGRhdGVNb3ZlQ2FsbGJhY2sKICBjYWxsYmFjaywg
dm9pZCAqdXNlckluZm8pIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoj
IDE3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dSZW1vdGVP
cGVyYXRpb24uaCIgMwpleHRlcm4gIkMiIENHRXJyb3IgQ0dXYWl0Rm9yU2NyZWVuVXBkYXRlUmVj
dHMoQ0dTY3JlZW5VcGRhdGVPcGVyYXRpb24KICByZXF1ZXN0ZWRPcGVyYXRpb25zLCBDR1NjcmVl
blVwZGF0ZU9wZXJhdGlvbiAqY3VycmVudE9wZXJhdGlvbiwKICBDR1JlY3QgKipyZWN0cywgc2l6
ZV90ICpyZWN0Q291bnQsIENHU2NyZWVuVXBkYXRlTW92ZURlbHRhICpkZWx0YSkKICBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBDR1Jl
bGVhc2VTY3JlZW5SZWZyZXNoUmVjdHMoQ0dSZWN0ICpyZWN0cykKICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBib29sZWFuX3QgQ0dDdXJzb3JJ
c1Zpc2libGUodm9pZCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
IyAyMDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUmVtb3Rl
T3BlcmF0aW9uLmgiIDMKZXh0ZXJuICJDIiBib29sZWFuX3QgQ0dDdXJzb3JJc0RyYXduSW5GcmFt
ZWJ1ZmZlcih2b2lkKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgoKZXh0ZXJuICJDIiBDR0Vycm9yIENHV2FycE1vdXNlQ3Vyc29yUG9zaXRpb24oQ0dQb2ludCBu
ZXdDdXJzb3JQb3NpdGlvbikKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKIyAyMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUmVt
b3RlT3BlcmF0aW9uLmgiIDMKI2RlZmluZSBrQ0dNb3VzZURvd25FdmVudE1hc2tpbmdEZWFkU3dp
dGNoVGltZW91dCAoNjAuMCkKIyAyMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29y
ay9IZWFkZXJzL0NHUmVtb3RlT3BlcmF0aW9uLmgiIDMKZXh0ZXJuICJDIiBDR0Vycm9yIENHQXNz
b2NpYXRlTW91c2VBbmRNb3VzZUN1cnNvclBvc2l0aW9uKGJvb2xlYW5fdCBjb25uZWN0ZWQpCiAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjYxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1JlbW90ZU9wZXJhdGlvbi5oIiAzCmV4
dGVybiAiQyIgQ0ZNYWNoUG9ydFJlZiBDR1dpbmRvd1NlcnZlckNGTWFjaFBvcnQodm9pZCkKICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgQ0dF
cnJvciBDR0VuYWJsZUV2ZW50U3RhdGVDb21iaW5pbmcoYm9vbGVhbl90IGNvbWJpbmVTdGF0ZSkK
ICBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
CmV4dGVybiAiQyIgQ0dFcnJvciBDR0luaGliaXRMb2NhbEV2ZW50cyhib29sZWFuX3QgaW5oaWJp
dCkKICBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoj
IDMwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dSZW1vdGVP
cGVyYXRpb24uaCIgMwpleHRlcm4gIkMiIENHRXJyb3IgQ0dQb3N0TW91c2VFdmVudChDR1BvaW50
IG1vdXNlQ3Vyc29yUG9zaXRpb24sCiAgYm9vbGVhbl90IHVwZGF0ZU1vdXNlQ3Vyc29yUG9zaXRp
b24sIENHQnV0dG9uQ291bnQgYnV0dG9uQ291bnQsCiAgYm9vbGVhbl90IG1vdXNlQnV0dG9uRG93
biwgLi4uICkKICBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwojIDMyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dS
ZW1vdGVPcGVyYXRpb24uaCIgMwpleHRlcm4gIkMiIENHRXJyb3IgQ0dQb3N0U2Nyb2xsV2hlZWxF
dmVudChDR1doZWVsQ291bnQgd2hlZWxDb3VudCwKICBpbnQzMl90IHdoZWVsMSwgLi4uICkgX19h
dHRyaWJ1dGVfXygoZGVwcmVjYXRlZCx2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVy
biAiQyIgQ0dFcnJvciBDR1Bvc3RLZXlib2FyZEV2ZW50KENHQ2hhckNvZGUga2V5Q2hhciwgQ0dL
ZXlDb2RlIHZpcnR1YWxLZXksCiAgYm9vbGVhbl90IGtleURvd24pIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZW51bSB7CiAga0NHRXZlbnRG
aWx0ZXJNYXNrUGVybWl0TG9jYWxNb3VzZUV2ZW50cyA9IDB4MDAwMDAwMDEsCiAga0NHRXZlbnRG
aWx0ZXJNYXNrUGVybWl0TG9jYWxLZXlib2FyZEV2ZW50cyA9IDB4MDAwMDAwMDIsCiAga0NHRXZl
bnRGaWx0ZXJNYXNrUGVybWl0U3lzdGVtRGVmaW5lZEV2ZW50cyA9IDB4MDAwMDAwMDQKfTsKdHlw
ZWRlZiB1aW50MzJfdCBDR0V2ZW50RmlsdGVyTWFzazsKCiNkZWZpbmUga0NHRXZlbnRGaWx0ZXJN
YXNrUGVybWl0QWxsRXZlbnRzIChrQ0dFdmVudEZpbHRlck1hc2tQZXJtaXRMb2NhbE1vdXNlRXZl
bnRzIHwga0NHRXZlbnRGaWx0ZXJNYXNrUGVybWl0TG9jYWxLZXlib2FyZEV2ZW50cyB8IGtDR0V2
ZW50RmlsdGVyTWFza1Blcm1pdFN5c3RlbURlZmluZWRFdmVudHMpCgoKCgoKCgplbnVtIHsKICBr
Q0dFdmVudFN1cHByZXNzaW9uU3RhdGVTdXBwcmVzc2lvbkludGVydmFsID0gMCwKICBrQ0dFdmVu
dFN1cHByZXNzaW9uU3RhdGVSZW1vdGVNb3VzZURyYWcsCiAga0NHTnVtYmVyT2ZFdmVudFN1cHBy
ZXNzaW9uU3RhdGVzCn07CnR5cGVkZWYgdWludDMyX3QgQ0dFdmVudFN1cHByZXNzaW9uU3RhdGU7
CgoKCgpleHRlcm4gIkMiIENHRXJyb3IgQ0dTZXRMb2NhbEV2ZW50c0ZpbHRlckR1cmluZ1N1cHBy
ZXNzaW9uU3RhdGUKICAoQ0dFdmVudEZpbHRlck1hc2sgZmlsdGVyLCBDR0V2ZW50U3VwcHJlc3Np
b25TdGF0ZSBzdGF0ZSkKICBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkLHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgQ0dFcnJvciBDR1NldExvY2FsRXZlbnRzU3VwcHJl
c3Npb25JbnRlcnZhbChDRlRpbWVJbnRlcnZhbCBzZWNvbmRzKQogIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgojZGVmaW5lIGtDR0V2ZW50U3Vw
cmVzc2lvblN0YXRlU3VwcmVzc2lvbkludGVydmFsIGtDR0V2ZW50U3VwcHJlc3Npb25TdGF0ZVN1
cHByZXNzaW9uSW50ZXJ2YWwKCiNkZWZpbmUga0NHRXZlbnRTdXByZXNzaW9uU3RhdGVSZW1vdGVN
b3VzZURyYWcga0NHRXZlbnRTdXBwcmVzc2lvblN0YXRlUmVtb3RlTW91c2VEcmFnCgojZGVmaW5l
IGtDR051bWJlck9mRXZlbnRTdXByZXNzaW9uU3RhdGVzIGtDR051bWJlck9mRXZlbnRTdXBwcmVz
c2lvblN0YXRlcwoKI2RlZmluZSBDR0V2ZW50U3VwcmVzc2lvblN0YXRlIENHRXZlbnRTdXBwcmVz
c2lvblN0YXRlCgojZGVmaW5lIENHU2V0TG9jYWxFdmVudHNGaWx0ZXJEdXJpbmdTdXByZXNzaW9u
U3RhdGUoZmlsdGVyLHN0YXRlKSBDR1NldExvY2FsRXZlbnRzRmlsdGVyRHVyaW5nU3VwcHJlc3Np
b25TdGF0ZShmaWx0ZXIsIHN0YXRlKQoKCgoKdHlwZWRlZiB1aW50MzJfdCBDR1JlY3RDb3VudDsK
IyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dFdmVudFR5
cGVzLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29y
ay9IZWFkZXJzL2hpZHN5c3RlbS9JT0xMRXZlbnQuaCIgMSAzCiMgNDYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL2hpZHN5c3RlbS9JT0xMRXZlbnQu
aCIgMwojZGVmaW5lIF9ERVZfRVZFTlRfSCAKCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmtlcm4vT1NU
eXBlcy5oIiAxIDMgNAojIDM2ICIvdXNyL2luY2x1ZGUvbGlia2Vybi9PU1R5cGVzLmgiIDMgNAoj
ZGVmaW5lIF9PU19PU1RZUEVTX0ggCgojZGVmaW5lIE9TVFlQRVNfSzY0X1JFViAyCgp0eXBlZGVm
IHVuc2lnbmVkIGludCBVSW50Owp0eXBlZGVmIHNpZ25lZCBpbnQgU0ludDsKIyA0OSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvaGlkc3lzdGVtL0lP
TExFdmVudC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFt
ZXdvcmsvSGVhZGVycy9oaWRzeXN0ZW0vSU9ISURUeXBlcy5oIiAxIDMKIyAzNiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvaGlkc3lzdGVtL0lPSElE
VHlwZXMuaCIgMwojZGVmaW5lIF9ERVZfRVZfVFlQRVNfSCAKCgojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL0lPU2hhcmVkTG9jay5oIiAxIDMK
IyA1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMv
SU9TaGFyZWRMb2NrLmgiIDMKI2RlZmluZSBfSU9LSVRfSU9TSEFSRURMT0NLX0ggCgoKZXh0ZXJu
ICJDIiB7CgoKCnR5cGVkZWYgdm9sYXRpbGUgaW50IElPU2hhcmVkTG9ja0RhdGE7CnR5cGVkZWYg
SU9TaGFyZWRMb2NrRGF0YSAqIElPU2hhcmVkTG9jazsKCiNkZWZpbmUgSU9TcGluTG9ja0luaXQo
bCkgKCoobCkgPSAoSU9TaGFyZWRMb2NrRGF0YSkwKQoKZXh0ZXJuIHZvaWQgSU9TcGluTG9jayhJ
T1NoYXJlZExvY2sgbCk7CgpleHRlcm4gdm9pZCBJT1NwaW5VbmxvY2soSU9TaGFyZWRMb2NrIGwp
OwpleHRlcm4gYm9vbGVhbl90IElPVHJ5U3BpbkxvY2soSU9TaGFyZWRMb2NrIGwpOwoKCgp0eXBl
ZGVmIElPU2hhcmVkTG9ja0RhdGEgZXZfbG9ja19kYXRhX3Q7CnR5cGVkZWYgZXZfbG9ja19kYXRh
X3QgKiBldl9sb2NrX3Q7CgojZGVmaW5lIGV2X2luaXRfbG9jayhsKSAoKihsKSA9IChldl9sb2Nr
X2RhdGFfdCkwKQoKCgpleHRlcm4gdm9pZCBldl9sb2NrKGV2X2xvY2tfdCBsKTsKCmV4dGVybiB2
b2lkIGV2X3VubG9jayhldl9sb2NrX3QgbCk7CmV4dGVybiBib29sZWFuX3QgZXZfdHJ5X2xvY2so
ZXZfbG9ja190IGwpOwoKCn0KIyA0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvaGlkc3lzdGVtL0lPSElEVHlwZXMuaCIgMiAzCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvZ3JhcGhpY3MvSU9H
cmFwaGljc1R5cGVzLmgiIDEgMwojIDI0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tp
dC5mcmFtZXdvcmsvSGVhZGVycy9ncmFwaGljcy9JT0dyYXBoaWNzVHlwZXMuaCIgMwojZGVmaW5l
IF9JT0tJVF9JT0dSQVBISUNTVFlQRVNfSCAKCgoKCgoKZXh0ZXJuICJDIiB7CgoKI2RlZmluZSBJ
T0dSQVBISUNTVFlQRVNfUkVWIDI0Cgp0eXBlZGVmIFNJbnQzMiBJT0luZGV4Owp0eXBlZGVmIFVJ
bnQzMiBJT1NlbGVjdDsKdHlwZWRlZiBVSW50MzIgSU9GaXhlZDE2MTY7CnR5cGVkZWYgVUludDMy
IElPRGlzcGxheVZlbmRvcklEOwp0eXBlZGVmIFVJbnQzMiBJT0Rpc3BsYXlQcm9kdWN0SUQ7Cgp0
eXBlZGVmIFNJbnQzMiBJT0Rpc3BsYXlNb2RlSUQ7CmVudW0gewoKICAgIGtJT0Rpc3BsYXlNb2Rl
SURCb290UHJvZ3JhbW1hYmxlID0gKElPRGlzcGxheU1vZGVJRCkweEZGRkZGRkZCLAoKICAgIGtJ
T0Rpc3BsYXlNb2RlSURSZXNlcnZlZEJhc2UgPSAoSU9EaXNwbGF5TW9kZUlEKTB4ODAwMDAwMDAK
fTsKCmVudW0gewogICAga0lPTWF4UGl4ZWxCaXRzID0gNjQKfTsKdHlwZWRlZiBjaGFyIElPUGl4
ZWxFbmNvZGluZ1sga0lPTWF4UGl4ZWxCaXRzIF07CgoKCiNkZWZpbmUgSU8xQml0SW5kZXhlZFBp
eGVscyAiUCIKI2RlZmluZSBJTzJCaXRJbmRleGVkUGl4ZWxzICJQUCIKI2RlZmluZSBJTzRCaXRJ
bmRleGVkUGl4ZWxzICJQUFBQIgojZGVmaW5lIElPOEJpdEluZGV4ZWRQaXhlbHMgIlBQUFBQUFBQ
IgojZGVmaW5lIElPMTZCaXREaXJlY3RQaXhlbHMgIi1SUlJSUkdHR0dHQkJCQkIiCiNkZWZpbmUg
SU8zMkJpdERpcmVjdFBpeGVscyAiLS0tLS0tLS1SUlJSUlJSUkdHR0dHR0dHQkJCQkJCQkIiCgoj
ZGVmaW5lIGtJTzMwQml0RGlyZWN0UGl4ZWxzICItLVJSUlJSUlJSUlJHR0dHR0dHR0dHQkJCQkJC
QkJCQiIKI2RlZmluZSBrSU82NEJpdERpcmVjdFBpeGVscyAiLTE2UjE2RzE2QjE2IgoKI2RlZmlu
ZSBrSU8xNkJpdEZsb2F0UGl4ZWxzICItMTZGUjE2RkcxNkZCMTYiCiNkZWZpbmUga0lPMzJCaXRG
bG9hdFBpeGVscyAiLTMyRlIzMkZHMzJGQjMyIgoKCgojZGVmaW5lIElPWVVWNDIyUGl4ZWxzICJZ
NFUyVjIiCiNkZWZpbmUgSU84Qml0T3ZlcmxheVBpeGVscyAiTzgiCgojZGVmaW5lIElPUGFnZWRQ
aXhlbHMgIlBhZ2UxIgoKI2RlZmluZSBJT19TYW1wbGVUeXBlQWxwaGEgJ0EnCiNkZWZpbmUgSU9f
U2FtcGxlVHlwZVNraXAgJy0nCgoKZW51bSB7CiAgICBrSU9DTFVUUGl4ZWxzID0gMCwKICAgIGtJ
T0ZpeGVkQ0xVVFBpeGVscyA9IDEsCiAgICBrSU9SR0JEaXJlY3RQaXhlbHMgPSAyLAogICAga0lP
TW9ub0RpcmVjdFBpeGVscyA9IDMsCiAgICBrSU9Nb25vSW52ZXJzZURpcmVjdFBpeGVscyA9IDQs
CiAgICBrSU9SR0JTaWduZWREaXJlY3RQaXhlbHMgPSA1LAogICAga0lPUkdCU2lnbmVkRmxvYXRp
bmdQb2ludFBpeGVscyA9IDYKfTsKIyAxMDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lP
S2l0LmZyYW1ld29yay9IZWFkZXJzL2dyYXBoaWNzL0lPR3JhcGhpY3NUeXBlcy5oIiAzCnN0cnVj
dCBJT1BpeGVsSW5mb3JtYXRpb24gewogICAgVUludDMyIGJ5dGVzUGVyUm93OwogICAgVUludDMy
IGJ5dGVzUGVyUGxhbmU7CiAgICBVSW50MzIgYml0c1BlclBpeGVsOwogICAgVUludDMyIHBpeGVs
VHlwZTsKICAgIFVJbnQzMiBjb21wb25lbnRDb3VudDsKICAgIFVJbnQzMiBiaXRzUGVyQ29tcG9u
ZW50OwogICAgVUludDMyIGNvbXBvbmVudE1hc2tzWyA4ICogMiBdOwogICAgSU9QaXhlbEVuY29k
aW5nIHBpeGVsRm9ybWF0OwogICAgVUludDMyIGZsYWdzOwogICAgVUludDMyIGFjdGl2ZVdpZHRo
OwogICAgVUludDMyIGFjdGl2ZUhlaWdodDsKICAgIFVJbnQzMiByZXNlcnZlZFsgMiBdOwp9Owp0
eXBlZGVmIHN0cnVjdCBJT1BpeGVsSW5mb3JtYXRpb24gSU9QaXhlbEluZm9ybWF0aW9uOwoKCnR5
cGVkZWYgVUludDMyIElPQXBwbGVUaW1pbmdJRDsKIyAxNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL2dyYXBoaWNzL0lPR3JhcGhpY3NUeXBlcy5o
IiAzCnN0cnVjdCBJT0Rpc3BsYXlNb2RlSW5mb3JtYXRpb24gewogICAgVUludDMyIG5vbWluYWxX
aWR0aDsKICAgIFVJbnQzMiBub21pbmFsSGVpZ2h0OwogICAgSU9GaXhlZDE2MTYgcmVmcmVzaFJh
dGU7CiAgICBJT0luZGV4IG1heERlcHRoSW5kZXg7CiAgICBVSW50MzIgZmxhZ3M7CiAgICBVSW50
MzIgcmVzZXJ2ZWRbIDQgXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSU9EaXNwbGF5TW9kZUluZm9ybWF0
aW9uIElPRGlzcGxheU1vZGVJbmZvcm1hdGlvbjsKCgplbnVtIHsKICAgIGtEaXNwbGF5TW9kZVNh
ZmV0eUZsYWdzID0gMHgwMDAwMDAwNywKCiAgICBrRGlzcGxheU1vZGVBbHdheXNTaG93RmxhZyA9
IDB4MDAwMDAwMDgsCiAgICBrRGlzcGxheU1vZGVOZXZlclNob3dGbGFnID0gMHgwMDAwMDA4MCwK
ICAgIGtEaXNwbGF5TW9kZU5vdFJlc2l6ZUZsYWcgPSAweDAwMDAwMDEwLAogICAga0Rpc3BsYXlN
b2RlUmVxdWlyZXNQYW5GbGFnID0gMHgwMDAwMDAyMCwKCiAgICBrRGlzcGxheU1vZGVJbnRlcmxh
Y2VkRmxhZyA9IDB4MDAwMDAwNDAsCgogICAga0Rpc3BsYXlNb2RlU2ltdWxzY2FuRmxhZyA9IDB4
MDAwMDAxMDAsCiAgICBrRGlzcGxheU1vZGVCdWlsdEluRmxhZyA9IDB4MDAwMDA0MDAsCiAgICBr
RGlzcGxheU1vZGVOb3RQcmVzZXRGbGFnID0gMHgwMDAwMDIwMCwKICAgIGtEaXNwbGF5TW9kZVN0
cmV0Y2hlZEZsYWcgPSAweDAwMDAwODAwLAogICAga0Rpc3BsYXlNb2RlTm90R3JhcGhpY3NRdWFs
aXR5RmxhZyA9IDB4MDAwMDEwMDAsCiAgICBrRGlzcGxheU1vZGVWYWxpZGF0ZUFnYWluc3REaXNw
bGF5ID0gMHgwMDAwMjAwMCwKICAgIGtEaXNwbGF5TW9kZVRlbGV2aXNpb25GbGFnID0gMHgwMDEw
MDAwMCwKICAgIGtEaXNwbGF5TW9kZVZhbGlkRm9yTWlycm9yaW5nRmxhZyA9IDB4MDAyMDAwMDAK
fTsKZW51bSB7CiAgICBrRGlzcGxheU1vZGVWYWxpZEZsYWcgPSAweDAwMDAwMDAxLAogICAga0Rp
c3BsYXlNb2RlU2FmZUZsYWcgPSAweDAwMDAwMDAyLAogICAga0Rpc3BsYXlNb2RlRGVmYXVsdEZs
YWcgPSAweDAwMDAwMDA0Cn07CgoKCgpzdHJ1Y3QgSU9GcmFtZWJ1ZmZlckluZm9ybWF0aW9uIHsK
ICAgIElPUGh5c2ljYWxBZGRyZXNzIGJhc2VBZGRyZXNzOwogICAgVUludDMyIGFjdGl2ZVdpZHRo
OwogICAgVUludDMyIGFjdGl2ZUhlaWdodDsKICAgIElPQnl0ZUNvdW50IGJ5dGVzUGVyUm93Owog
ICAgSU9CeXRlQ291bnQgYnl0ZXNQZXJQbGFuZTsKICAgIFVJbnQzMiBiaXRzUGVyUGl4ZWw7CiAg
ICBVSW50MzIgcGl4ZWxUeXBlOwogICAgVUludDMyIGZsYWdzOwogICAgVUludDMyIHJlc2VydmVk
WyA0IF07Cn07CnR5cGVkZWYgc3RydWN0IElPRnJhbWVidWZmZXJJbmZvcm1hdGlvbiBJT0ZyYW1l
YnVmZmVySW5mb3JtYXRpb247CgoKCmVudW0gewogICAga0ZyYW1lYnVmZmVyU3VwcG9ydHNDb3B5
YmFja0NhY2hlID0gMHgwMDAxMDAwMCwKICAgIGtGcmFtZWJ1ZmZlclN1cHBvcnRzV3JpdGV0aHJ1
Q2FjaGUgPSAweDAwMDIwMDAwLAogICAga0ZyYW1lYnVmZmVyU3VwcG9ydHNHYW1tYUNvcnJlY3Rp
b24gPSAweDAwMDQwMDAwLAogICAga0ZyYW1lYnVmZmVyRGlzYWJsZUFsdGl2ZWNBY2Nlc3MgPSAw
eDAwMDgwMDAwCn07CgoKdHlwZWRlZiBJT0luZGV4IElPUGl4ZWxBcGVydHVyZTsKZW51bSB7CiAg
ICBrSU9GQlN5c3RlbUFwZXJ0dXJlID0gMAp9OwoKCgp0eXBlZGVmIFVJbnQxNiBJT0NvbG9yQ29t
cG9uZW50OwojIDIyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvZ3JhcGhpY3MvSU9HcmFwaGljc1R5cGVzLmgiIDMKc3RydWN0IElPQ29sb3JFbnRy
eSB7CiAgICBVSW50MTYgaW5kZXg7CiAgICBJT0NvbG9yQ29tcG9uZW50IHJlZDsKICAgIElPQ29s
b3JDb21wb25lbnQgZ3JlZW47CiAgICBJT0NvbG9yQ29tcG9uZW50IGJsdWU7Cn07CnR5cGVkZWYg
c3RydWN0IElPQ29sb3JFbnRyeSBJT0NvbG9yRW50cnk7CgoKZW51bSB7CiAgICBrU2V0Q0xVVEJ5
VmFsdWUgPSAweDAwMDAwMDAxLAogICAga1NldENMVVRJbW1lZGlhdGVseSA9IDB4MDAwMDAwMDIs
CiAgICBrU2V0Q0xVVFdpdGhMdW1pbmFuY2UgPSAweDAwMDAwMDA0Cn07CgoKCmVudW0gewogICAg
a0lPUG93ZXJTdGF0ZUF0dHJpYnV0ZSA9ICdwd3JzJywKICAgIGtJT1Bvd2VyQXR0cmlidXRlID0g
J3Bvd3InLAogICAga0lPRHJpdmVyUG93ZXJBdHRyaWJ1dGUgPSAnZHBvdycsCiAgICBrSU9IYXJk
d2FyZUN1cnNvckF0dHJpYnV0ZSA9ICdjcnNyJywKCiAgICBrSU9NaXJyb3JBdHRyaWJ1dGUgPSAn
bWlycicsCiAgICBrSU9NaXJyb3JEZWZhdWx0QXR0cmlidXRlID0gJ21yZGYnLAoKICAgIGtJT0Nh
cHR1cmVkQXR0cmlidXRlID0gJ2NhcGQnLAoKICAgIGtJT0N1cnNvckNvbnRyb2xBdHRyaWJ1dGUg
PSAnY3JzYycsCgogICAga0lPU3lzdGVtUG93ZXJBdHRyaWJ1dGUgPSAnc3B3cicsCiAgICBrSU9W
UkFNU2F2ZUF0dHJpYnV0ZSA9ICd2cnN2JywKICAgIGtJT0RlZmVyQ0xVVFNldEF0dHJpYnV0ZSA9
ICd2Y2x0JywKCiAgICBrSU9DbGFtc2hlbGxTdGF0ZUF0dHJpYnV0ZSA9ICdjbGFtJwp9OwoKCmVu
dW0gewogICAga0lPTWlycm9ySXNQcmltYXJ5ID0gMHg4MDAwMDAwMCwKICAgIGtJT01pcnJvckhX
Q2xpcHBlZCA9IDB4NDAwMDAwMDAKfTsKCgplbnVtIHsKICAgIGtJT01pcnJvckRlZmF1bHQgPSAw
eDAwMDAwMDAxLAogICAga0lPTWlycm9yRm9yY2VkID0gMHgwMDAwMDAwMgp9OwoKCgpzdHJ1Y3Qg
SU9EZXRhaWxlZFRpbWluZ0luZm9ybWF0aW9uVjEgewoKICAgIFVJbnQzMiBwaXhlbENsb2NrOwog
ICAgVUludDMyIGhvcml6b250YWxBY3RpdmU7CiAgICBVSW50MzIgaG9yaXpvbnRhbEJsYW5raW5n
OwogICAgVUludDMyIGhvcml6b250YWxCb3JkZXI7CiAgICBVSW50MzIgaG9yaXpvbnRhbFN5bmNP
ZmZzZXQ7CiAgICBVSW50MzIgaG9yaXpvbnRhbFN5bmNXaWR0aDsKICAgIFVJbnQzMiB2ZXJ0aWNh
bEFjdGl2ZTsKICAgIFVJbnQzMiB2ZXJ0aWNhbEJsYW5raW5nOwogICAgVUludDMyIHZlcnRpY2Fs
Qm9yZGVyOwogICAgVUludDMyIHZlcnRpY2FsU3luY09mZnNldDsKICAgIFVJbnQzMiB2ZXJ0aWNh
bFN5bmNXaWR0aDsKfTsKdHlwZWRlZiBzdHJ1Y3QgSU9EZXRhaWxlZFRpbWluZ0luZm9ybWF0aW9u
VjEgSU9EZXRhaWxlZFRpbWluZ0luZm9ybWF0aW9uVjE7CiMgMzM5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9ncmFwaGljcy9JT0dyYXBoaWNzVHlw
ZXMuaCIgMwpzdHJ1Y3QgSU9EZXRhaWxlZFRpbWluZ0luZm9ybWF0aW9uVjIgewoKICAgIFVJbnQz
MiBfX3Jlc2VydmVkQVszXTsKICAgIFVJbnQzMiBob3Jpem9udGFsU2NhbGVkSW5zZXQ7CiAgICBV
SW50MzIgdmVydGljYWxTY2FsZWRJbnNldDsKCiAgICBVSW50MzIgc2NhbGVyRmxhZ3M7CiAgICBV
SW50MzIgaG9yaXpvbnRhbFNjYWxlZDsKICAgIFVJbnQzMiB2ZXJ0aWNhbFNjYWxlZDsKCiAgICBV
SW50MzIgc2lnbmFsQ29uZmlnOwogICAgVUludDMyIHNpZ25hbExldmVsczsKCiAgICBVSW50NjQg
cGl4ZWxDbG9jazsKCiAgICBVSW50NjQgbWluUGl4ZWxDbG9jazsKICAgIFVJbnQ2NCBtYXhQaXhl
bENsb2NrOwoKICAgIFVJbnQzMiBob3Jpem9udGFsQWN0aXZlOwogICAgVUludDMyIGhvcml6b250
YWxCbGFua2luZzsKICAgIFVJbnQzMiBob3Jpem9udGFsU3luY09mZnNldDsKICAgIFVJbnQzMiBo
b3Jpem9udGFsU3luY1B1bHNlV2lkdGg7CgogICAgVUludDMyIHZlcnRpY2FsQWN0aXZlOwogICAg
VUludDMyIHZlcnRpY2FsQmxhbmtpbmc7CiAgICBVSW50MzIgdmVydGljYWxTeW5jT2Zmc2V0Owog
ICAgVUludDMyIHZlcnRpY2FsU3luY1B1bHNlV2lkdGg7CgogICAgVUludDMyIGhvcml6b250YWxC
b3JkZXJMZWZ0OwogICAgVUludDMyIGhvcml6b250YWxCb3JkZXJSaWdodDsKICAgIFVJbnQzMiB2
ZXJ0aWNhbEJvcmRlclRvcDsKICAgIFVJbnQzMiB2ZXJ0aWNhbEJvcmRlckJvdHRvbTsKCiAgICBV
SW50MzIgaG9yaXpvbnRhbFN5bmNDb25maWc7CiAgICBVSW50MzIgaG9yaXpvbnRhbFN5bmNMZXZl
bDsKICAgIFVJbnQzMiB2ZXJ0aWNhbFN5bmNDb25maWc7CiAgICBVSW50MzIgdmVydGljYWxTeW5j
TGV2ZWw7CiAgICBVSW50MzIgbnVtTGlua3M7CgogICAgVUludDMyIF9fcmVzZXJ2ZWRCWzddOwp9
Owp0eXBlZGVmIHN0cnVjdCBJT0RldGFpbGVkVGltaW5nSW5mb3JtYXRpb25WMiBJT0RldGFpbGVk
VGltaW5nSW5mb3JtYXRpb25WMjsKdHlwZWRlZiBzdHJ1Y3QgSU9EZXRhaWxlZFRpbWluZ0luZm9y
bWF0aW9uVjIgSU9EZXRhaWxlZFRpbWluZ0luZm9ybWF0aW9uOwoKc3RydWN0IElPVGltaW5nSW5m
b3JtYXRpb24gewogICAgSU9BcHBsZVRpbWluZ0lEIGFwcGxlVGltaW5nSUQ7CiAgICBVSW50MzIg
ZmxhZ3M7CiAgICB1bmlvbiB7CiAgICAgIElPRGV0YWlsZWRUaW1pbmdJbmZvcm1hdGlvblYxIHYx
OwogICAgICBJT0RldGFpbGVkVGltaW5nSW5mb3JtYXRpb25WMiB2MjsKICAgIH0gZGV0YWlsZWRJ
bmZvOwp9Owp0eXBlZGVmIHN0cnVjdCBJT1RpbWluZ0luZm9ybWF0aW9uIElPVGltaW5nSW5mb3Jt
YXRpb247CgplbnVtIHsKCiAgICBrSU9EZXRhaWxlZFRpbWluZ1ZhbGlkID0gMHg4MDAwMDAwMCwK
ICAgIGtJT1NjYWxpbmdJbmZvVmFsaWQgPSAweDQwMDAwMDAwCn07CgplbnVtIHsKCiAgICBrSU9T
Y2FsZVN0cmV0Y2hUb0ZpdCA9IDB4MDAwMDAwMDEsCgogICAga0lPU2NhbGVSb3RhdGVGbGFncyA9
IDB4MDAwMDAwZjAsCgogICAga0lPU2NhbGVTd2FwQXhlcyA9IDB4MDAwMDAwMTAsCiAgICBrSU9T
Y2FsZUludmVydFggPSAweDAwMDAwMDIwLAogICAga0lPU2NhbGVJbnZlcnRZID0gMHgwMDAwMDA0
MCwKCiAgICBrSU9TY2FsZVJvdGF0ZTAgPSAweDAwMDAwMDAwLAogICAga0lPU2NhbGVSb3RhdGU5
MCA9IGtJT1NjYWxlU3dhcEF4ZXMgfCBrSU9TY2FsZUludmVydFgsCiAgICBrSU9TY2FsZVJvdGF0
ZTE4MCA9IGtJT1NjYWxlSW52ZXJ0WCB8IGtJT1NjYWxlSW52ZXJ0WSwKICAgIGtJT1NjYWxlUm90
YXRlMjcwID0ga0lPU2NhbGVTd2FwQXhlcyB8IGtJT1NjYWxlSW52ZXJ0WQp9OwoKCiNwcmFnbWEg
cGFjayhwdXNoLCA0KQpzdHJ1Y3QgSU9GQkRpc3BsYXlNb2RlRGVzY3JpcHRpb24gewogICAgSU9E
aXNwbGF5TW9kZUluZm9ybWF0aW9uIGluZm87CiAgICBJT1RpbWluZ0luZm9ybWF0aW9uIHRpbWlu
Z0luZm87Cn07CnR5cGVkZWYgc3RydWN0IElPRkJEaXNwbGF5TW9kZURlc2NyaXB0aW9uIElPRkJE
aXNwbGF5TW9kZURlc2NyaXB0aW9uOwojcHJhZ21hIHBhY2socG9wKQojIDUwNSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvZ3JhcGhpY3MvSU9HcmFw
aGljc1R5cGVzLmgiIDMKc3RydWN0IElPRGlzcGxheVRpbWluZ1JhbmdlCnsKICAgIFVJbnQzMiBf
X3Jlc2VydmVkQVsyXTsKICAgIFVJbnQzMiB2ZXJzaW9uOwogICAgVUludDMyIF9fcmVzZXJ2ZWRC
WzVdOwoKICAgIFVJbnQ2NCBtaW5QaXhlbENsb2NrOwogICAgVUludDY0IG1heFBpeGVsQ2xvY2s7
CgogICAgVUludDMyIG1heFBpeGVsRXJyb3I7CiAgICBVSW50MzIgc3VwcG9ydGVkU3luY0ZsYWdz
OwogICAgVUludDMyIHN1cHBvcnRlZFNpZ25hbExldmVsczsKICAgIFVJbnQzMiBzdXBwb3J0ZWRT
aWduYWxDb25maWdzOwoKICAgIFVJbnQzMiBtaW5GcmFtZVJhdGU7CiAgICBVSW50MzIgbWF4RnJh
bWVSYXRlOwogICAgVUludDMyIG1pbkxpbmVSYXRlOwogICAgVUludDMyIG1heExpbmVSYXRlOwoK
ICAgIFVJbnQzMiBtYXhIb3Jpem9udGFsVG90YWw7CiAgICBVSW50MzIgbWF4VmVydGljYWxUb3Rh
bDsKICAgIFVJbnQzMiBfX3Jlc2VydmVkRFsyXTsKCiAgICBVSW50OCBjaGFyU2l6ZUhvcml6b250
YWxBY3RpdmU7CiAgICBVSW50OCBjaGFyU2l6ZUhvcml6b250YWxCbGFua2luZzsKICAgIFVJbnQ4
IGNoYXJTaXplSG9yaXpvbnRhbFN5bmNPZmZzZXQ7CiAgICBVSW50OCBjaGFyU2l6ZUhvcml6b250
YWxTeW5jUHVsc2U7CgogICAgVUludDggY2hhclNpemVWZXJ0aWNhbEFjdGl2ZTsKICAgIFVJbnQ4
IGNoYXJTaXplVmVydGljYWxCbGFua2luZzsKICAgIFVJbnQ4IGNoYXJTaXplVmVydGljYWxTeW5j
T2Zmc2V0OwogICAgVUludDggY2hhclNpemVWZXJ0aWNhbFN5bmNQdWxzZTsKCiAgICBVSW50OCBj
aGFyU2l6ZUhvcml6b250YWxCb3JkZXJMZWZ0OwogICAgVUludDggY2hhclNpemVIb3Jpem9udGFs
Qm9yZGVyUmlnaHQ7CiAgICBVSW50OCBjaGFyU2l6ZVZlcnRpY2FsQm9yZGVyVG9wOwogICAgVUlu
dDggY2hhclNpemVWZXJ0aWNhbEJvcmRlckJvdHRvbTsKCiAgICBVSW50OCBjaGFyU2l6ZUhvcml6
b250YWxUb3RhbDsKICAgIFVJbnQ4IGNoYXJTaXplVmVydGljYWxUb3RhbDsKICAgIFVJbnQxNiBf
X3Jlc2VydmVkRTsKCiAgICBVSW50MzIgbWluSG9yaXpvbnRhbEFjdGl2ZUNsb2NrczsKICAgIFVJ
bnQzMiBtYXhIb3Jpem9udGFsQWN0aXZlQ2xvY2tzOwogICAgVUludDMyIG1pbkhvcml6b250YWxC
bGFua2luZ0Nsb2NrczsKICAgIFVJbnQzMiBtYXhIb3Jpem9udGFsQmxhbmtpbmdDbG9ja3M7Cgog
ICAgVUludDMyIG1pbkhvcml6b250YWxTeW5jT2Zmc2V0Q2xvY2tzOwogICAgVUludDMyIG1heEhv
cml6b250YWxTeW5jT2Zmc2V0Q2xvY2tzOwogICAgVUludDMyIG1pbkhvcml6b250YWxQdWxzZVdp
ZHRoQ2xvY2tzOwogICAgVUludDMyIG1heEhvcml6b250YWxQdWxzZVdpZHRoQ2xvY2tzOwoKICAg
IFVJbnQzMiBtaW5WZXJ0aWNhbEFjdGl2ZUNsb2NrczsKICAgIFVJbnQzMiBtYXhWZXJ0aWNhbEFj
dGl2ZUNsb2NrczsKICAgIFVJbnQzMiBtaW5WZXJ0aWNhbEJsYW5raW5nQ2xvY2tzOwogICAgVUlu
dDMyIG1heFZlcnRpY2FsQmxhbmtpbmdDbG9ja3M7CgogICAgVUludDMyIG1pblZlcnRpY2FsU3lu
Y09mZnNldENsb2NrczsKICAgIFVJbnQzMiBtYXhWZXJ0aWNhbFN5bmNPZmZzZXRDbG9ja3M7CiAg
ICBVSW50MzIgbWluVmVydGljYWxQdWxzZVdpZHRoQ2xvY2tzOwogICAgVUludDMyIG1heFZlcnRp
Y2FsUHVsc2VXaWR0aENsb2NrczsKCiAgICBVSW50MzIgbWluSG9yaXpvbnRhbEJvcmRlckxlZnQ7
CiAgICBVSW50MzIgbWF4SG9yaXpvbnRhbEJvcmRlckxlZnQ7CiAgICBVSW50MzIgbWluSG9yaXpv
bnRhbEJvcmRlclJpZ2h0OwogICAgVUludDMyIG1heEhvcml6b250YWxCb3JkZXJSaWdodDsKCiAg
ICBVSW50MzIgbWluVmVydGljYWxCb3JkZXJUb3A7CiAgICBVSW50MzIgbWF4VmVydGljYWxCb3Jk
ZXJUb3A7CiAgICBVSW50MzIgbWluVmVydGljYWxCb3JkZXJCb3R0b207CiAgICBVSW50MzIgbWF4
VmVydGljYWxCb3JkZXJCb3R0b207CiAgICBVSW50MzIgbWF4TnVtTGlua3M7CiAgICBVSW50MzIg
bWluTGluazBQaXhlbENsb2NrOwogICAgVUludDMyIG1heExpbmswUGl4ZWxDbG9jazsKICAgIFVJ
bnQzMiBtaW5MaW5rMVBpeGVsQ2xvY2s7CiAgICBVSW50MzIgbWF4TGluazFQaXhlbENsb2NrOwoK
ICAgIFVJbnQzMiBfX3Jlc2VydmVkRlszXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSU9EaXNwbGF5VGlt
aW5nUmFuZ2UgSU9EaXNwbGF5VGltaW5nUmFuZ2U7CgplbnVtIHsKCiAgICBrSU9SYW5nZVN1cHBv
cnRzU2lnbmFsXzA3MDBfMDMwMCA9IDB4MDAwMDAwMDEsCiAgICBrSU9SYW5nZVN1cHBvcnRzU2ln
bmFsXzA3MTRfMDI4NiA9IDB4MDAwMDAwMDIsCiAgICBrSU9SYW5nZVN1cHBvcnRzU2lnbmFsXzEw
MDBfMDQwMCA9IDB4MDAwMDAwMDQsCiAgICBrSU9SYW5nZVN1cHBvcnRzU2lnbmFsXzA3MDBfMDAw
MCA9IDB4MDAwMDAwMDgKfTsKZW51bSB7CgogICAga0lPUmFuZ2VTdXBwb3J0c1NlcGFyYXRlU3lu
Y3MgPSAweDAwMDAwMDAxLAogICAga0lPUmFuZ2VTdXBwb3J0c1N5bmNPbkdyZWVuID0gMHgwMDAw
MDAwMiwKICAgIGtJT1JhbmdlU3VwcG9ydHNDb21wb3NpdGVTeW5jID0gMHgwMDAwMDAwNCwKICAg
IGtJT1JhbmdlU3VwcG9ydHNWU3luY1NlcnJhdGlvbiA9IDB4MDAwMDAwMDgKfTsKZW51bSB7Cgog
ICAga0lPUmFuZ2VTdXBwb3J0c0ludGVybGFjZWRDRUFUaW1pbmcgPSAweDAwMDAwMDA0LAogICAg
a0lPUmFuZ2VTdXBwb3J0c0ludGVybGFjZWRDRUFUaW1pbmdXaXRoQ29uZmlybSA9IDB4MDAwMDAw
MDgKfTsKCmVudW0gewoKICAgIGtJT0RpZ2l0YWxTaWduYWwgPSAweDAwMDAwMDAxLAogICAga0lP
QW5hbG9nU2V0dXBFeHBlY3RlZCA9IDB4MDAwMDAwMDIsCiAgICBrSU9JbnRlcmxhY2VkQ0VBVGlt
aW5nID0gMHgwMDAwMDAwNCwKICAgIGtJT05UU0NUaW1pbmcgPSAweDAwMDAwMDA4LAogICAga0lP
UEFMVGltaW5nID0gMHgwMDAwMDAxMAp9OwoKZW51bSB7CgogICAga0lPQW5hbG9nU2lnbmFsTGV2
ZWxfMDcwMF8wMzAwID0gMCwKICAgIGtJT0FuYWxvZ1NpZ25hbExldmVsXzA3MTRfMDI4NiA9IDEs
CiAgICBrSU9BbmFsb2dTaWduYWxMZXZlbF8xMDAwXzA0MDAgPSAyLAogICAga0lPQW5hbG9nU2ln
bmFsTGV2ZWxfMDcwMF8wMDAwID0gMwp9OwoKZW51bSB7CgogICAga0lPU3luY1Bvc2l0aXZlUG9s
YXJpdHkgPSAweDAwMDAwMDAxCn07CiMgNjQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9J
T0tpdC5mcmFtZXdvcmsvSGVhZGVycy9ncmFwaGljcy9JT0dyYXBoaWNzVHlwZXMuaCIgMwpzdHJ1
Y3QgSU9EaXNwbGF5U2NhbGVySW5mb3JtYXRpb24gewogICAgVUludDMyIF9fcmVzZXJ2ZWRBWzFd
OwogICAgVUludDMyIHZlcnNpb247CiAgICBVSW50MzIgX19yZXNlcnZlZEJbMl07CgogICAgSU9P
cHRpb25CaXRzIHNjYWxlckZlYXR1cmVzOwogICAgVUludDMyIG1heEhvcml6b250YWxQaXhlbHM7
CiAgICBVSW50MzIgbWF4VmVydGljYWxQaXhlbHM7CiAgICBVSW50MzIgX19yZXNlcnZlZENbNV07
Cn07CnR5cGVkZWYgc3RydWN0IElPRGlzcGxheVNjYWxlckluZm9ybWF0aW9uIElPRGlzcGxheVNj
YWxlckluZm9ybWF0aW9uOwoKZW51bSB7CgogICAga0lPU2NhbGVTdHJldGNoT25seSA9IDB4MDAw
MDAwMDEsCiAgICBrSU9TY2FsZUNhblVwU2FtcGxlUGl4ZWxzID0gMHgwMDAwMDAwMiwKICAgIGtJ
T1NjYWxlQ2FuRG93blNhbXBsZVBpeGVscyA9IDB4MDAwMDAwMDQsCiAgICBrSU9TY2FsZUNhblNj
YWxlSW50ZXJsYWNlZCA9IDB4MDAwMDAwMDgsCiAgICBrSU9TY2FsZUNhblN1cHBvcnRJbnNldCA9
IDB4MDAwMDAwMTAsCiAgICBrSU9TY2FsZUNhblJvdGF0ZSA9IDB4MDAwMDAwMjAsCiAgICBrSU9T
Y2FsZUNhbkJvcmRlckluc2V0T25seSA9IDB4MDAwMDAwNDAKfTsKCgoKZW51bSB7CiAgICBrT3JD
b25uZWN0aW9ucyA9IDB4ZmZmZmZmZSwKICAgIGtBbmRDb25uZWN0aW9ucyA9IDB4ZmZmZmZmZAp9
OwoKZW51bSB7CiAgICBrQ29ubmVjdGlvbkZsYWdzID0gJ2ZsZ3MnLAogICAga0Nvbm5lY3Rpb25T
eW5jRW5hYmxlID0gJ3N5bmMnLAogICAga0Nvbm5lY3Rpb25TeW5jRmxhZ3MgPSAnc3ljZicsCiAg
ICBrQ29ubmVjdGlvblN1cHBvcnRzQXBwbGVTZW5zZSA9ICdhc25zJywKICAgIGtDb25uZWN0aW9u
U3VwcG9ydHNMTEREQ1NlbnNlID0gJ2xkZGMnLAogICAga0Nvbm5lY3Rpb25TdXBwb3J0c0hMRERD
U2Vuc2UgPSAnaGRkYycsCiAgICBrQ29ubmVjdGlvbkVuYWJsZSA9ICdlbmFiJywKICAgIGtDb25u
ZWN0aW9uQ2hlY2tFbmFibGUgPSAnY2VuYScsCiAgICBrQ29ubmVjdGlvblByb2JlID0gJ3Byb2In
LAogICAga0Nvbm5lY3Rpb25DaGFuZ2VkID0gJ2NobmcnLAogICAga0Nvbm5lY3Rpb25Qb3dlciA9
ICdwb3dyJywKICAgIGtDb25uZWN0aW9uUG9zdFdha2UgPSAncHdhaycsCiAgICBrQ29ubmVjdGlv
bkRpc3BsYXlQYXJhbWV0ZXJDb3VudCA9ICdwY250JywKICAgIGtDb25uZWN0aW9uRGlzcGxheVBh
cmFtZXRlcnMgPSAncGFybScsCiAgICBrQ29ubmVjdGlvbk92ZXJzY2FuID0gJ29zY24nLAogICAg
a0Nvbm5lY3Rpb25WaWRlb0Jlc3QgPSAndmJzdCcsCgogICAga0Nvbm5lY3Rpb25SZWRHYW1tYVNj
YWxlID0gJ3Jnc2MnLAogICAga0Nvbm5lY3Rpb25HcmVlbkdhbW1hU2NhbGUgPSAnZ2dzYycsCiAg
ICBrQ29ubmVjdGlvbkJsdWVHYW1tYVNjYWxlID0gJ2Jnc2MnLAoKICAgIGtDb25uZWN0aW9uSGFu
ZGxlRGlzcGxheVBvcnRFdmVudCA9ICdkcGlyJywKCiAgICBrQ29ubmVjdGlvblBhbmVsVGltaW5n
RGlzYWJsZSA9ICdwbmx0JywKCiAgICBrQ29ubmVjdGlvbkNvbG9yTW9kZSA9ICdjeXV2JywKICAg
IGtDb25uZWN0aW9uQ29sb3JNb2Rlc1N1cHBvcnRlZCA9ICdjb2xyJywKICAgIGtDb25uZWN0aW9u
Q29sb3JEZXB0aHNTdXBwb3J0ZWQgPSAnIGJwYycsCgogICAga0Nvbm5lY3Rpb25Db250cm9sbGVy
RGVwdGhzU3VwcG9ydGVkID0gJ1wwZ3JkJywKICAgIGtDb25uZWN0aW9uQ29udHJvbGxlckNvbG9y
RGVwdGggPSAnXDBkcGQnLAogICAga0Nvbm5lY3Rpb25Db250cm9sbGVyRGl0aGVyQ29udHJvbCA9
ICdcMGdkYycsCgogICAga0Nvbm5lY3Rpb25EaXNwbGF5RmxhZ3MgPSAnZGZsZycsCn07CgoKZW51
bSB7CiAgICBrSU9Db25uZWN0aW9uQnVpbHRJbiA9IDB4MDAwMDA4MDAsCiAgICBrSU9Db25uZWN0
aW9uU3RlcmVvU3luYyA9IDB4MDAwMDgwMDAKfTsKCgplbnVtIHsKICAgIGtJT0hTeW5jRGlzYWJs
ZSA9IDB4MDAwMDAwMDEsCiAgICBrSU9WU3luY0Rpc2FibGUgPSAweDAwMDAwMDAyLAogICAga0lP
Q1N5bmNEaXNhYmxlID0gMHgwMDAwMDAwNCwKICAgIGtJT05vU2VwYXJhdGVTeW5jQ29udHJvbCA9
IDB4MDAwMDAwNDAsCiAgICBrSU9UcmlTdGF0ZVN5bmNzID0gMHgwMDAwMDA4MCwKICAgIGtJT1N5
bmNPbkJsdWUgPSAweDAwMDAwMDA4LAogICAga0lPU3luY09uR3JlZW4gPSAweDAwMDAwMDEwLAog
ICAga0lPU3luY09uUmVkID0gMHgwMDAwMDAyMAp9OwoKCmVudW0gewogICAga0lPRFBFdmVudFN0
YXJ0ID0gMSwKICAgIGtJT0RQRXZlbnRJZGxlID0gMiwKCiAgICBrSU9EUEV2ZW50Rm9yY2VSZXRy
YWluID0gMywKCiAgICBrSU9EUEV2ZW50UmVtb3RlQ29udHJvbENvbW1hbmRQZW5kaW5nID0gMjU2
LAogICAga0lPRFBFdmVudEF1dG9tYXRlZFRlc3RSZXF1ZXN0ID0gMjU3LAogICAga0lPRFBFdmVu
dENvbnRlbnRQcm90ZWN0aW9uID0gMjU4LAogICAga0lPRFBFdmVudE1DQ1MgPSAyNTksCiAgICBr
SU9EUEV2ZW50U2lua1NwZWNpZmljID0gMjYwCn07CgojZGVmaW5lIGtJT0Rpc3BsYXlBdHRyaWJ1
dGVzS2V5ICJJT0Rpc3BsYXlBdHRyaWJ1dGVzIgoKI2RlZmluZSBrSU9EaXNwbGF5U3VwcG9ydHNV
bmRlcnNjYW5LZXkgIklPRGlzcGxheVN1cHBvcnRzVW5kZXJzY2FuIgojZGVmaW5lIGtJT0Rpc3Bs
YXlTdXBwb3J0c0Jhc2ljQXVkaW9LZXkgIklPRGlzcGxheVN1cHBvcnRzQmFzaWNBdWRpbyIKI2Rl
ZmluZSBrSU9EaXNwbGF5U3VwcG9ydHNZQ2JDcjQ0NEtleSAiSU9EaXNwbGF5U3VwcG9ydHNZQ2JD
cjQ0NCIKI2RlZmluZSBrSU9EaXNwbGF5U3VwcG9ydHNZQ2JDcjQyMktleSAiSU9EaXNwbGF5U3Vw
cG9ydHNZQ2JDcjQyMiIKCmVudW0KewogICAga0lPRGlzcGxheUNvbG9yTW9kZSA9IGtDb25uZWN0
aW9uQ29sb3JNb2RlLAp9OwojIDc3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvZ3JhcGhpY3MvSU9HcmFwaGljc1R5cGVzLmgiIDMKZW51bQp7Cgog
ICAga0lPRGlzcGxheVJHQkNvbG9yQ29tcG9uZW50Qml0c1Vua25vd24gPSAweDAwMDAwMDAwLAog
ICAga0lPRGlzcGxheVJHQkNvbG9yQ29tcG9uZW50Qml0czYgPSAweDAwMDAwMDAxLAogICAga0lP
RGlzcGxheVJHQkNvbG9yQ29tcG9uZW50Qml0czggPSAweDAwMDAwMDAyLAogICAga0lPRGlzcGxh
eVJHQkNvbG9yQ29tcG9uZW50Qml0czEwID0gMHgwMDAwMDAwNCwKICAgIGtJT0Rpc3BsYXlSR0JD
b2xvckNvbXBvbmVudEJpdHMxMiA9IDB4MDAwMDAwMDgsCiAgICBrSU9EaXNwbGF5UkdCQ29sb3JD
b21wb25lbnRCaXRzMTQgPSAweDAwMDAwMDEwLAogICAga0lPRGlzcGxheVJHQkNvbG9yQ29tcG9u
ZW50Qml0czE2ID0gMHgwMDAwMDAyMCwKCiAgICBrSU9EaXNwbGF5WUNiQ3I0NDRDb2xvckNvbXBv
bmVudEJpdHNVbmtub3duID0gMHgwMDAwMDAwMCwKICAgIGtJT0Rpc3BsYXlZQ2JDcjQ0NENvbG9y
Q29tcG9uZW50Qml0czYgPSAweDAwMDAwMTAwLAogICAga0lPRGlzcGxheVlDYkNyNDQ0Q29sb3JD
b21wb25lbnRCaXRzOCA9IDB4MDAwMDAyMDAsCiAgICBrSU9EaXNwbGF5WUNiQ3I0NDRDb2xvckNv
bXBvbmVudEJpdHMxMCA9IDB4MDAwMDA0MDAsCiAgICBrSU9EaXNwbGF5WUNiQ3I0NDRDb2xvckNv
bXBvbmVudEJpdHMxMiA9IDB4MDAwMDA4MDAsCiAgICBrSU9EaXNwbGF5WUNiQ3I0NDRDb2xvckNv
bXBvbmVudEJpdHMxNCA9IDB4MDAwMDEwMDAsCiAgICBrSU9EaXNwbGF5WUNiQ3I0NDRDb2xvckNv
bXBvbmVudEJpdHMxNiA9IDB4MDAwMDIwMDAsCgogICAga0lPRGlzcGxheVlDYkNyNDIyQ29sb3JD
b21wb25lbnRCaXRzVW5rbm93biA9IDB4MDAwMDAwMDAsCiAgICBrSU9EaXNwbGF5WUNiQ3I0MjJD
b2xvckNvbXBvbmVudEJpdHM2ID0gMHgwMDAxMDAwMCwKICAgIGtJT0Rpc3BsYXlZQ2JDcjQyMkNv
bG9yQ29tcG9uZW50Qml0czggPSAweDAwMDIwMDAwLAogICAga0lPRGlzcGxheVlDYkNyNDIyQ29s
b3JDb21wb25lbnRCaXRzMTAgPSAweDAwMDQwMDAwLAogICAga0lPRGlzcGxheVlDYkNyNDIyQ29s
b3JDb21wb25lbnRCaXRzMTIgPSAweDAwMDgwMDAwLAogICAga0lPRGlzcGxheVlDYkNyNDIyQ29s
b3JDb21wb25lbnRCaXRzMTQgPSAweDAwMTAwMDAwLAogICAga0lPRGlzcGxheVlDYkNyNDIyQ29s
b3JDb21wb25lbnRCaXRzMTYgPSAweDAwMjAwMDAwLAp9OwoKZW51bQp7CgogICAga0lPRGlzcGxh
eURpdGhlckRpc2FibGUgPSAweDAwMDAwMDAwLAogICAga0lPRGlzcGxheURpdGhlclNwYXRpYWwg
PSAweDAwMDAwMDAxLAogICAga0lPRGlzcGxheURpdGhlclRlbXBvcmFsID0gMHgwMDAwMDAwMiwK
ICAgIGtJT0Rpc3BsYXlEaXRoZXJGcmFtZVJhdGVDb250cm9sID0gMHgwMDAwMDAwNCwKICAgIGtJ
T0Rpc3BsYXlEaXRoZXJEZWZhdWx0ID0gMHgwMDAwMDA4MCwKICAgIGtJT0Rpc3BsYXlEaXRoZXJB
bGwgPSAweDAwMDAwMEZGLAogICAga0lPRGlzcGxheURpdGhlclJHQlNoaWZ0ID0gMCwKICAgIGtJ
T0Rpc3BsYXlEaXRoZXJZQ2JDcjQ0NFNoaWZ0ID0gOCwKICAgIGtJT0Rpc3BsYXlEaXRoZXJZQ2JD
cjQyMlNoaWZ0ID0gMTYsCn07CgplbnVtCnsKCiAgICBrSU9EaXNwbGF5TmVlZHNDRUFVbmRlcnNj
YW4gPSAweDAwMDAwMDAxLAp9OwoKCiNkZWZpbmUgSU9fRElTUExBWV9DQU5fRklMTCAweDAwMDAw
MDQwCiNkZWZpbmUgSU9fRElTUExBWV9DQU5fQkxJVCAweDAwMDAwMDIwCgojZGVmaW5lIElPXzI0
QlBQX1RSQU5TRkVSX1RBQkxFX1NJWkUgMjU2CiNkZWZpbmUgSU9fMTVCUFBfVFJBTlNGRVJfVEFC
TEVfU0laRSAyNTYKI2RlZmluZSBJT184QlBQX1RSQU5TRkVSX1RBQkxFX1NJWkUgMjU2CiNkZWZp
bmUgSU9fMTJCUFBfVFJBTlNGRVJfVEFCTEVfU0laRSAyNTYKI2RlZmluZSBJT18yQlBQX1RSQU5T
RkVSX1RBQkxFX1NJWkUgMjU2CgojZGVmaW5lIFNUREZCX0JNMjU2X1RPX0JNMzhfTUFQX1NJWkUg
MjU2CiNkZWZpbmUgU1RERkJfQk0zOF9UT19CTTI1Nl9NQVBfU0laRSAyNTYKI2RlZmluZSBTVERG
Ql9CTTM4X1RPXzI1Nl9XSVRIX0xPR0lDQUxfU0laRSAoU1RERkJfQk0zOF9UT19CTTI1Nl9NQVBf
U0laRSArICgyNTYvc2l6ZW9mKGludCkpKQoKCiNkZWZpbmUgU1RERkJfNEJQU19UT181QlBTX01B
UF9TSVpFIDE2CiNkZWZpbmUgU1RERkJfNUJQU19UT180QlBTX01BUF9TSVpFIDMyCgplbnVtIHsK
CiAgICBrSU9GQlNlcnZlckNvbm5lY3RUeXBlID0gMCwKICAgIGtJT0ZCU2hhcmVkQ29ubmVjdFR5
cGUgPSAxCn07CgplbnVtIHsKCiAgICBrSU9GQlVzZXJSZXF1ZXN0UHJvYmUgPSAweDAwMDAwMDAx
Cn07CgpzdHJ1Y3QgSU9HUG9pbnQgewogICAgU0ludDE2IHg7CiAgICBTSW50MTYgeTsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgSU9HUG9pbnQgSU9HUG9pbnQ7CgpzdHJ1Y3QgSU9HU2l6ZSB7CiAgICBTSW50
MTYgd2lkdGg7CiAgICBTSW50MTYgaGVpZ2h0Owp9Owp0eXBlZGVmIHN0cnVjdCBJT0dTaXplIElP
R1NpemU7CgpzdHJ1Y3QgSU9HQm91bmRzIHsKICAgIFNJbnQxNiBtaW54OwogICAgU0ludDE2IG1h
eHg7CiAgICBTSW50MTYgbWlueTsKICAgIFNJbnQxNiBtYXh5Owp9Owp0eXBlZGVmIHN0cnVjdCBJ
T0dCb3VuZHMgSU9HQm91bmRzOwojIDg4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9L
aXQuZnJhbWV3b3JrL0hlYWRlcnMvZ3JhcGhpY3MvSU9HcmFwaGljc1R5cGVzLmgiIDMKZW51bSB7
CiAgIGtUcmFuc3BhcmVudEVuY29kaW5nID0gMCwKICAga0ludmVydGluZ0VuY29kaW5nCn07Cgpl
bnVtIHsKICAga1RyYW5zcGFyZW50RW5jb2RpbmdTaGlmdCA9IChrVHJhbnNwYXJlbnRFbmNvZGlu
ZyA8PCAxKSwKICAga1RyYW5zcGFyZW50RW5jb2RlZFBpeGVsID0gKDB4MDEgPDwga1RyYW5zcGFy
ZW50RW5jb2RpbmdTaGlmdCksCgogICBrSW52ZXJ0aW5nRW5jb2RpbmdTaGlmdCA9IChrSW52ZXJ0
aW5nRW5jb2RpbmcgPDwgMSksCiAgIGtJbnZlcnRpbmdFbmNvZGVkUGl4ZWwgPSAoMHgwMSA8PCBr
SW52ZXJ0aW5nRW5jb2RpbmdTaGlmdCkKfTsKCmVudW0gewogICBrSGFyZHdhcmVDdXJzb3JEZXNj
cmlwdG9yTWFqb3JWZXJzaW9uID0gMHgwMDAxLAogICBrSGFyZHdhcmVDdXJzb3JEZXNjcmlwdG9y
TWlub3JWZXJzaW9uID0gMHgwMDAwCn07CiMgOTIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9ncmFwaGljcy9JT0dyYXBoaWNzVHlwZXMuaCIgMwpz
dHJ1Y3QgSU9IYXJkd2FyZUN1cnNvckRlc2NyaXB0b3IgewogICBVSW50MTYgbWFqb3JWZXJzaW9u
OwogICBVSW50MTYgbWlub3JWZXJzaW9uOwogICBVSW50MzIgaGVpZ2h0OwogICBVSW50MzIgd2lk
dGg7CiAgIFVJbnQzMiBiaXREZXB0aDsKICAgVUludDMyIG1hc2tCaXREZXB0aDsKICAgVUludDMy
IG51bUNvbG9yczsKICAgVUludDMyICogY29sb3JFbmNvZGluZ3M7CiAgIFVJbnQzMiBmbGFnczsK
ICAgVUludDMyIHN1cHBvcnRlZFNwZWNpYWxFbmNvZGluZ3M7CiAgIFVJbnQzMiBzcGVjaWFsRW5j
b2RpbmdzWzE2XTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSU9IYXJkd2FyZUN1cnNvckRlc2NyaXB0b3Ig
SU9IYXJkd2FyZUN1cnNvckRlc2NyaXB0b3I7CgplbnVtIHsKICAga0hhcmR3YXJlQ3Vyc29ySW5m
b01ham9yVmVyc2lvbiA9IDB4MDAwMSwKICAga0hhcmR3YXJlQ3Vyc29ySW5mb01pbm9yVmVyc2lv
biA9IDB4MDAwMAp9OwojIDk1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJh
bWV3b3JrL0hlYWRlcnMvZ3JhcGhpY3MvSU9HcmFwaGljc1R5cGVzLmgiIDMKc3RydWN0IElPSGFy
ZHdhcmVDdXJzb3JJbmZvIHsKICAgVUludDE2IG1ham9yVmVyc2lvbjsKICAgVUludDE2IG1pbm9y
VmVyc2lvbjsKICAgVUludDMyIGN1cnNvckhlaWdodDsKICAgVUludDMyIGN1cnNvcldpZHRoOwoK
ICAgSU9Db2xvckVudHJ5ICogY29sb3JNYXA7CiAgIFVJbnQ4ICogaGFyZHdhcmVDdXJzb3JEYXRh
OwogICBVSW50MTYgY3Vyc29ySG90U3BvdFg7CiAgIFVJbnQxNiBjdXJzb3JIb3RTcG90WTsKICAg
VUludDMyIHJlc2VydmVkWzVdOwp9Owp0eXBlZGVmIHN0cnVjdCBJT0hhcmR3YXJlQ3Vyc29ySW5m
byBJT0hhcmR3YXJlQ3Vyc29ySW5mbzsKCgoKZW51bSB7CiAgICBrSU9GQlZCTEludGVycnVwdFR5
cGUgPSAndmJsICcsCiAgICBrSU9GQkhCTEludGVycnVwdFR5cGUgPSAnaGJsICcsCiAgICBrSU9G
QkZyYW1lSW50ZXJydXB0VHlwZSA9ICdmcmFtJywKCiAgICBrSU9GQkNvbm5lY3RJbnRlcnJ1cHRU
eXBlID0gJ2RjaSAnLAoKICAgIGtJT0ZCQ2hhbmdlZEludGVycnVwdFR5cGUgPSAnY2huZycsCgog
ICAga0lPRkJPZmZsaW5lSW50ZXJydXB0VHlwZSA9ICdyZW12JywKCiAgICBrSU9GQk9ubGluZUlu
dGVycnVwdFR5cGUgPSAnYWRkICcsCgogICAga0lPRkJEaXNwbGF5UG9ydEludGVycnVwdFR5cGUg
PSAnZHBpcicsCgogICAga0lPRkJEaXNwbGF5UG9ydExpbmtDaGFuZ2VJbnRlcnJ1cHRUeXBlID0g
J2RwbGsnLAoKICAgIGtJT0ZCTUNDU0ludGVycnVwdFR5cGUgPSAnbWNjcycKfTsKCgplbnVtIHsK
ICAgIGtJT1RpbWluZ0lESW52YWxpZCA9IDAsCiAgICBrSU9UaW1pbmdJREFwcGxlX0ZpeGVkUmF0
ZUxDRCA9IDQyLAogICAga0lPVGltaW5nSURBcHBsZV81MTJ4Mzg0XzYwaHogPSAxMzAsCiAgICBr
SU9UaW1pbmdJREFwcGxlXzU2MHgzODRfNjBoeiA9IDEzNSwKICAgIGtJT1RpbWluZ0lEQXBwbGVf
NjQweDQ4MF82N2h6ID0gMTQwLAogICAga0lPVGltaW5nSURBcHBsZV82NDB4NDAwXzY3aHogPSAx
NDUsCiAgICBrSU9UaW1pbmdJRFZFU0FfNjQweDQ4MF82MGh6ID0gMTUwLAogICAga0lPVGltaW5n
SURWRVNBXzY0MHg0ODBfNzJoeiA9IDE1MiwKICAgIGtJT1RpbWluZ0lEVkVTQV82NDB4NDgwXzc1
aHogPSAxNTQsCiAgICBrSU9UaW1pbmdJRFZFU0FfNjQweDQ4MF84NWh6ID0gMTU4LAogICAga0lP
VGltaW5nSURHVEZfNjQweDQ4MF8xMjBoeiA9IDE1OSwKICAgIGtJT1RpbWluZ0lEQXBwbGVfNjQw
eDg3MF83NWh6ID0gMTYwLAogICAga0lPVGltaW5nSURBcHBsZV82NDB4ODE4Xzc1aHogPSAxNjUs
CiAgICBrSU9UaW1pbmdJREFwcGxlXzgzMng2MjRfNzVoeiA9IDE3MCwKICAgIGtJT1RpbWluZ0lE
VkVTQV84MDB4NjAwXzU2aHogPSAxODAsCiAgICBrSU9UaW1pbmdJRFZFU0FfODAweDYwMF82MGh6
ID0gMTgyLAogICAga0lPVGltaW5nSURWRVNBXzgwMHg2MDBfNzJoeiA9IDE4NCwKICAgIGtJT1Rp
bWluZ0lEVkVTQV84MDB4NjAwXzc1aHogPSAxODYsCiAgICBrSU9UaW1pbmdJRFZFU0FfODAweDYw
MF84NWh6ID0gMTg4LAogICAga0lPVGltaW5nSURWRVNBXzEwMjR4NzY4XzYwaHogPSAxOTAsCiAg
ICBrSU9UaW1pbmdJRFZFU0FfMTAyNHg3NjhfNzBoeiA9IDIwMCwKICAgIGtJT1RpbWluZ0lEVkVT
QV8xMDI0eDc2OF83NWh6ID0gMjA0LAogICAga0lPVGltaW5nSURWRVNBXzEwMjR4NzY4Xzg1aHog
PSAyMDgsCiAgICBrSU9UaW1pbmdJREFwcGxlXzEwMjR4NzY4Xzc1aHogPSAyMTAsCiAgICBrSU9U
aW1pbmdJREFwcGxlXzExNTJ4ODcwXzc1aHogPSAyMjAsCiAgICBrSU9UaW1pbmdJREFwcGxlTlRT
Q19TVCA9IDIzMCwKICAgIGtJT1RpbWluZ0lEQXBwbGVOVFNDX0ZGID0gMjMyLAogICAga0lPVGlt
aW5nSURBcHBsZU5UU0NfU1Rjb252ID0gMjM0LAogICAga0lPVGltaW5nSURBcHBsZU5UU0NfRkZj
b252ID0gMjM2LAogICAga0lPVGltaW5nSURBcHBsZVBBTF9TVCA9IDIzOCwKICAgIGtJT1RpbWlu
Z0lEQXBwbGVQQUxfRkYgPSAyNDAsCiAgICBrSU9UaW1pbmdJREFwcGxlUEFMX1NUY29udiA9IDI0
MiwKICAgIGtJT1RpbWluZ0lEQXBwbGVQQUxfRkZjb252ID0gMjQ0LAogICAga0lPVGltaW5nSURW
RVNBXzEyODB4OTYwXzc1aHogPSAyNTAsCiAgICBrSU9UaW1pbmdJRFZFU0FfMTI4MHg5NjBfNjBo
eiA9IDI1MiwKICAgIGtJT1RpbWluZ0lEVkVTQV8xMjgweDk2MF84NWh6ID0gMjU0LAogICAga0lP
VGltaW5nSURWRVNBXzEyODB4MTAyNF82MGh6ID0gMjYwLAogICAga0lPVGltaW5nSURWRVNBXzEy
ODB4MTAyNF83NWh6ID0gMjYyLAogICAga0lPVGltaW5nSURWRVNBXzEyODB4MTAyNF84NWh6ID0g
MjY4LAogICAga0lPVGltaW5nSURWRVNBXzE2MDB4MTIwMF82MGh6ID0gMjgwLAogICAga0lPVGlt
aW5nSURWRVNBXzE2MDB4MTIwMF82NWh6ID0gMjgyLAogICAga0lPVGltaW5nSURWRVNBXzE2MDB4
MTIwMF83MGh6ID0gMjg0LAogICAga0lPVGltaW5nSURWRVNBXzE2MDB4MTIwMF83NWh6ID0gMjg2
LAogICAga0lPVGltaW5nSURWRVNBXzE2MDB4MTIwMF84MGh6ID0gMjg4LAogICAga0lPVGltaW5n
SURWRVNBXzE2MDB4MTIwMF84NWh6ID0gMjg5LAogICAga0lPVGltaW5nSURWRVNBXzE3OTJ4MTM0
NF82MGh6ID0gMjk2LAogICAga0lPVGltaW5nSURWRVNBXzE3OTJ4MTM0NF83NWh6ID0gMjk4LAog
ICAga0lPVGltaW5nSURWRVNBXzE4NTZ4MTM5Ml82MGh6ID0gMzAwLAogICAga0lPVGltaW5nSURW
RVNBXzE4NTZ4MTM5Ml83NWh6ID0gMzAyLAogICAga0lPVGltaW5nSURWRVNBXzE5MjB4MTQ0MF82
MGh6ID0gMzA0LAogICAga0lPVGltaW5nSURWRVNBXzE5MjB4MTQ0MF83NWh6ID0gMzA2LAogICAg
a0lPVGltaW5nSURTTVBURTI0ME1fNjBoeiA9IDQwMCwKICAgIGtJT1RpbWluZ0lERmlsbVJhdGVf
NDhoeiA9IDQxMCwKICAgIGtJT1RpbWluZ0lEU29ueV8xNjAweDEwMjRfNzZoeiA9IDUwMCwKICAg
IGtJT1RpbWluZ0lEU29ueV8xOTIweDEwODBfNjBoeiA9IDUxMCwKICAgIGtJT1RpbWluZ0lEU29u
eV8xOTIweDEwODBfNzJoeiA9IDUyMCwKICAgIGtJT1RpbWluZ0lEU29ueV8xOTIweDEyMDBfNzZo
eiA9IDU0MCwKICAgIGtJT1RpbWluZ0lEQXBwbGVfMHgwXzBoel9PZmZsaW5lID0gNTUwLAogICAg
a0lPVGltaW5nSURWRVNBXzg0OHg0ODBfNjBoeiA9IDU3MCwKICAgIGtJT1RpbWluZ0lEVkVTQV8x
MzYweDc2OF82MGh6ID0gNTkwCn07CgoKCiNkZWZpbmUga0lPRnJhbWVidWZmZXJJbmZvS2V5ICJJ
T0ZyYW1lYnVmZmVySW5mb3JtYXRpb24iCgojZGVmaW5lIGtJT0ZCV2lkdGhLZXkgIklPRkJXaWR0
aCIKI2RlZmluZSBrSU9GQkhlaWdodEtleSAiSU9GQkhlaWdodCIKI2RlZmluZSBrSU9GQlJlZnJl
c2hSYXRlS2V5ICJJT0ZCUmVmcmVzaFJhdGUiCiNkZWZpbmUga0lPRkJGbGFnc0tleSAiSU9GQkZs
YWdzIgojZGVmaW5lIGtJT0ZCQnl0ZXNQZXJSb3dLZXkgIklPRkJCeXRlc1BlclJvdyIKI2RlZmlu
ZSBrSU9GQkJ5dGVzUGVyUGxhbmVLZXkgIklPRkJCeXRlc1BlclBsYW5lIgojZGVmaW5lIGtJT0ZC
Qml0c1BlclBpeGVsS2V5ICJJT0ZCQml0c1BlclBpeGVsIgojZGVmaW5lIGtJT0ZCQ29tcG9uZW50
Q291bnRLZXkgIklPRkJDb21wb25lbnRDb3VudCIKI2RlZmluZSBrSU9GQkJpdHNQZXJDb21wb25l
bnRLZXkgIklPRkJCaXRzUGVyQ29tcG9uZW50IgoKI2RlZmluZSBrSU9GQkRldGFpbGVkVGltaW5n
c0tleSAiSU9GQkRldGFpbGVkVGltaW5ncyIKI2RlZmluZSBrSU9GQlRpbWluZ1JhbmdlS2V5ICJJ
T0ZCVGltaW5nUmFuZ2UiCiNkZWZpbmUga0lPRkJTY2FsZXJJbmZvS2V5ICJJT0ZCU2NhbGVySW5m
byIKI2RlZmluZSBrSU9GQkN1cnNvckluZm9LZXkgIklPRkJDdXJzb3JJbmZvIgoKI2RlZmluZSBr
SU9GQkhvc3RBY2Nlc3NGbGFnc0tleSAiSU9GQkhvc3RBY2Nlc3NGbGFncyIKCiNkZWZpbmUga0lP
RkJNZW1vcnlTaXplS2V5ICJJT0ZCTWVtb3J5U2l6ZSIKCiNkZWZpbmUga0lPRkJQcm9iZU9wdGlv
bnNLZXkgIklPRkJQcm9iZU9wdGlvbnMiCgojZGVmaW5lIGtJT0ZCR2FtbWFXaWR0aEtleSAiSU9G
QkdhbW1hV2lkdGgiCiNkZWZpbmUga0lPRkJHYW1tYUNvdW50S2V5ICJJT0ZCR2FtbWFDb3VudCIK
I2RlZmluZSBrSU9GQkNMVVREZWZlcktleSAiSU9GQkNMVVREZWZlciIKCgoKI2RlZmluZSBrSU9I
aWJlcm5hdGVQcmV2aWV3QWN0aXZlS2V5ICJJT0hpYmVybmF0ZVByZXZpZXdBY3RpdmUiCgplbnVt
IHsKICAgIGtJT0hpYmVybmF0ZVByZXZpZXdBY3RpdmUgPSAweDAwMDAwMDAxLAogICAga0lPSGli
ZXJuYXRlUHJldmlld1VwZGF0ZXMgPSAweDAwMDAwMDAyCn07CgoKCiNkZWZpbmUga0lPRkJBVlNp
Z25hbFR5cGVLZXkgImF2LXNpZ25hbC10eXBlIgplbnVtIHsKICAgIGtJT0ZCQVZTaWduYWxUeXBl
VW5rbm93biA9IDB4MDAwMDAwMDAsCiAgICBrSU9GQkFWU2lnbmFsVHlwZVZHQSA9IDB4MDAwMDAw
MDEsCiAgICBrSU9GQkFWU2lnbmFsVHlwZURWSSA9IDB4MDAwMDAwMDIsCiAgICBrSU9GQkFWU2ln
bmFsVHlwZUhETUkgPSAweDAwMDAwMDA4LAogICAga0lPRkJBVlNpZ25hbFR5cGVEUCA9IDB4MDAw
MDAwMTAsCn07CgoKCiNkZWZpbmUga0lPRkJDb25maWdLZXkgIklPRkJDb25maWciCiNkZWZpbmUg
a0lPRkJNb2Rlc0tleSAiSU9GQk1vZGVzIgojZGVmaW5lIGtJT0ZCTW9kZUlES2V5ICJJRCIKI2Rl
ZmluZSBrSU9GQk1vZGVETUtleSAiRE0iCiNkZWZpbmUga0lPRkJNb2RlVE1LZXkgIlRNIgojZGVm
aW5lIGtJT0ZCTW9kZUFJREtleSAiQUlEIgojZGVmaW5lIGtJT0ZCTW9kZURGS2V5ICJERiIKCgoK
I2RlZmluZSBrSU9EaXNwbGF5RURJREtleSAiSU9EaXNwbGF5RURJRCIKI2RlZmluZSBrSU9EaXNw
bGF5TG9jYXRpb25LZXkgIklPRGlzcGxheUxvY2F0aW9uIgojZGVmaW5lIGtJT0Rpc3BsYXlDb25u
ZWN0RmxhZ3NLZXkgIklPRGlzcGxheUNvbm5lY3RGbGFncyIKI2RlZmluZSBrSU9EaXNwbGF5SGFz
QmFja2xpZ2h0S2V5ICJJT0Rpc3BsYXlIYXNCYWNrbGlnaHQiCiNkZWZpbmUga0lPRGlzcGxheUlz
RGlnaXRhbEtleSAiSU9EaXNwbGF5SXNEaWdpdGFsIgojZGVmaW5lIGtEaXNwbGF5QnVuZGxlS2V5
ICJEaXNwbGF5QnVuZGxlIgoKI2RlZmluZSBrQXBwbGVEaXNwbGF5VHlwZUtleSAiQXBwbGVEaXNw
bGF5VHlwZSIKI2RlZmluZSBrQXBwbGVTZW5zZUtleSAiQXBwbGVTZW5zZSIKCiNkZWZpbmUga0lP
RGlzcGxheU1DQ1NWZXJzaW9uS2V5ICJJT0Rpc3BsYXlNQ0NTVmVyc2lvbiIKI2RlZmluZSBrSU9E
aXNwbGF5VGVjaG5vbG9neVR5cGVLZXkgIklPRGlzcGxheVRlY2hub2xvZ3lUeXBlIgojZGVmaW5l
IGtJT0Rpc3BsYXlVc2FnZVRpbWVLZXkgIklPRGlzcGxheVVzYWdlVGltZSIKI2RlZmluZSBrSU9E
aXNwbGF5RmlybXdhcmVMZXZlbEtleSAiSU9EaXNwbGF5RmlybXdhcmVMZXZlbCIKCmVudW0gewog
ICAga0Rpc3BsYXlWZW5kb3JJRFVua25vd24gPSAndW5rbicsCiAgICBrRGlzcGxheVByb2R1Y3RJ
REdlbmVyaWMgPSAweDcxNwp9OwoKI2RlZmluZSBrRGlzcGxheVZlbmRvcklEICJEaXNwbGF5VmVu
ZG9ySUQiCiNkZWZpbmUga0Rpc3BsYXlQcm9kdWN0SUQgIkRpc3BsYXlQcm9kdWN0SUQiCiNkZWZp
bmUga0Rpc3BsYXlTZXJpYWxOdW1iZXIgIkRpc3BsYXlTZXJpYWxOdW1iZXIiCiNkZWZpbmUga0Rp
c3BsYXlTZXJpYWxTdHJpbmcgIkRpc3BsYXlTZXJpYWxTdHJpbmciCiNkZWZpbmUga0Rpc3BsYXlX
ZWVrT2ZNYW51ZmFjdHVyZSAiRGlzcGxheVdlZWtNYW51ZmFjdHVyZSIKI2RlZmluZSBrRGlzcGxh
eVllYXJPZk1hbnVmYWN0dXJlICJEaXNwbGF5WWVhck1hbnVmYWN0dXJlIgoKCgojZGVmaW5lIGtE
aXNwbGF5UHJvZHVjdE5hbWUgIkRpc3BsYXlQcm9kdWN0TmFtZSIKCgojZGVmaW5lIGtEaXNwbGF5
V2hpdGVQb2ludFggIkRpc3BsYXlXaGl0ZVBvaW50WCIKI2RlZmluZSBrRGlzcGxheVdoaXRlUG9p
bnRZICJEaXNwbGF5V2hpdGVQb2ludFkiCiNkZWZpbmUga0Rpc3BsYXlSZWRQb2ludFggIkRpc3Bs
YXlSZWRQb2ludFgiCiNkZWZpbmUga0Rpc3BsYXlSZWRQb2ludFkgIkRpc3BsYXlSZWRQb2ludFki
CiNkZWZpbmUga0Rpc3BsYXlHcmVlblBvaW50WCAiRGlzcGxheUdyZWVuUG9pbnRYIgojZGVmaW5l
IGtEaXNwbGF5R3JlZW5Qb2ludFkgIkRpc3BsYXlHcmVlblBvaW50WSIKI2RlZmluZSBrRGlzcGxh
eUJsdWVQb2ludFggIkRpc3BsYXlCbHVlUG9pbnRYIgojZGVmaW5lIGtEaXNwbGF5Qmx1ZVBvaW50
WSAiRGlzcGxheUJsdWVQb2ludFkiCiNkZWZpbmUga0Rpc3BsYXlXaGl0ZUdhbW1hICJEaXNwbGF5
V2hpdGVHYW1tYSIKI2RlZmluZSBrRGlzcGxheVJlZEdhbW1hICJEaXNwbGF5UmVkR2FtbWEiCiNk
ZWZpbmUga0Rpc3BsYXlHcmVlbkdhbW1hICJEaXNwbGF5R3JlZW5HYW1tYSIKI2RlZmluZSBrRGlz
cGxheUJsdWVHYW1tYSAiRGlzcGxheUJsdWVHYW1tYSIKCgojZGVmaW5lIGtEaXNwbGF5R2FtbWFD
aGFubmVscyAiRGlzcGxheUdhbW1hQ2hhbm5lbHMiCiNkZWZpbmUga0Rpc3BsYXlHYW1tYUVudHJ5
Q291bnQgIkRpc3BsYXlHYW1tYUVudHJ5Q291bnQiCiNkZWZpbmUga0Rpc3BsYXlHYW1tYUVudHJ5
U2l6ZSAiRGlzcGxheUdhbW1hRW50cnlTaXplIgojZGVmaW5lIGtEaXNwbGF5R2FtbWFUYWJsZSAi
RGlzcGxheUdhbW1hVGFibGUiCgoKI2RlZmluZSBrRGlzcGxheUJyaWdodG5lc3NBZmZlY3RzR2Ft
bWEgIkRpc3BsYXlCcmlnaHRuZXNzQWZmZWN0c0dhbW1hIgojZGVmaW5lIGtEaXNwbGF5Vmlld0Fu
Z2xlQWZmZWN0c0dhbW1hICJEaXNwbGF5Vmlld0FuZ2xlQWZmZWN0c0dhbW1hIgoKCiNkZWZpbmUg
a0Rpc3BsYXlDU1Byb2ZpbGUgIkRpc3BsYXlDU1Byb2ZpbGUiCgoKI2RlZmluZSBrRGlzcGxheUhv
cml6b250YWxJbWFnZVNpemUgIkRpc3BsYXlIb3Jpem9udGFsSW1hZ2VTaXplIgojZGVmaW5lIGtE
aXNwbGF5VmVydGljYWxJbWFnZVNpemUgIkRpc3BsYXlWZXJ0aWNhbEltYWdlU2l6ZSIKCgoKCiNk
ZWZpbmUga0Rpc3BsYXlGaXhlZFBpeGVsRm9ybWF0ICJEaXNwbGF5Rml4ZWRQaXhlbEZvcm1hdCIK
CmVudW0gewogICAga0Rpc3BsYXlTdWJQaXhlbExheW91dFVuZGVmaW5lZCA9IDB4MDAwMDAwMDAs
CiAgICBrRGlzcGxheVN1YlBpeGVsTGF5b3V0UkdCID0gMHgwMDAwMDAwMSwKICAgIGtEaXNwbGF5
U3ViUGl4ZWxMYXlvdXRCR1IgPSAweDAwMDAwMDAyLAogICAga0Rpc3BsYXlTdWJQaXhlbExheW91
dFF1YWRHQkwgPSAweDAwMDAwMDAzLAogICAga0Rpc3BsYXlTdWJQaXhlbExheW91dFF1YWRHQlIg
PSAweDAwMDAwMDA0LAoKICAgIGtEaXNwbGF5U3ViUGl4ZWxDb25maWd1cmF0aW9uVW5kZWZpbmVk
ID0gMHgwMDAwMDAwMCwKICAgIGtEaXNwbGF5U3ViUGl4ZWxDb25maWd1cmF0aW9uRGVsdGEgPSAw
eDAwMDAwMDAxLAogICAga0Rpc3BsYXlTdWJQaXhlbENvbmZpZ3VyYXRpb25TdHJpcGUgPSAweDAw
MDAwMDAyLAogICAga0Rpc3BsYXlTdWJQaXhlbENvbmZpZ3VyYXRpb25TdHJpcGVPZmZzZXQgPSAw
eDAwMDAwMDAzLAogICAga0Rpc3BsYXlTdWJQaXhlbENvbmZpZ3VyYXRpb25RdWFkID0gMHgwMDAw
MDAwNCwKCiAgICBrRGlzcGxheVN1YlBpeGVsU2hhcGVVbmRlZmluZWQgPSAweDAwMDAwMDAwLAog
ICAga0Rpc3BsYXlTdWJQaXhlbFNoYXBlUm91bmQgPSAweDAwMDAwMDAxLAogICAga0Rpc3BsYXlT
dWJQaXhlbFNoYXBlU3F1YXJlID0gMHgwMDAwMDAwMiwKICAgIGtEaXNwbGF5U3ViUGl4ZWxTaGFw
ZVJlY3Rhbmd1bGFyID0gMHgwMDAwMDAwMywKICAgIGtEaXNwbGF5U3ViUGl4ZWxTaGFwZU92YWwg
PSAweDAwMDAwMDA0LAogICAga0Rpc3BsYXlTdWJQaXhlbFNoYXBlRWxsaXB0aWNhbCA9IDB4MDAw
MDAwMDUKfTsKCgojZGVmaW5lIGtEaXNwbGF5U3ViUGl4ZWxMYXlvdXQgIkRpc3BsYXlTdWJQaXhl
bExheW91dCIKI2RlZmluZSBrRGlzcGxheVN1YlBpeGVsQ29uZmlndXJhdGlvbiAiRGlzcGxheVN1
YlBpeGVsQ29uZmlndXJhdGlvbiIKI2RlZmluZSBrRGlzcGxheVN1YlBpeGVsU2hhcGUgIkRpc3Bs
YXlTdWJQaXhlbFNoYXBlIgoKI2RlZmluZSBrSU9EaXNwbGF5T3ZlcnJpZGVNYXRjaGluZ0tleSAi
SU9EaXNwbGF5T3ZlcnJpZGVNYXRjaGluZyIKCgoKI2RlZmluZSBrSU9EaXNwbGF5UGFyYW1ldGVy
c0tleSAiSU9EaXNwbGF5UGFyYW1ldGVycyIKI2RlZmluZSBrSU9EaXNwbGF5R1VJREtleSAiSU9E
aXNwbGF5R1VJRCIKCiNkZWZpbmUga0lPRGlzcGxheVZhbHVlS2V5ICJ2YWx1ZSIKI2RlZmluZSBr
SU9EaXNwbGF5TWluVmFsdWVLZXkgIm1pbiIKI2RlZmluZSBrSU9EaXNwbGF5TWF4VmFsdWVLZXkg
Im1heCIKCiNkZWZpbmUga0lPRGlzcGxheUJyaWdodG5lc3NLZXkgImJyaWdodG5lc3MiCiNkZWZp
bmUga0lPRGlzcGxheUNvbnRyYXN0S2V5ICJjb250cmFzdCIKI2RlZmluZSBrSU9EaXNwbGF5SG9y
aXpvbnRhbFBvc2l0aW9uS2V5ICJob3Jpem9udGFsLXBvc2l0aW9uIgojZGVmaW5lIGtJT0Rpc3Bs
YXlIb3Jpem9udGFsU2l6ZUtleSAiaG9yaXpvbnRhbC1zaXplIgojZGVmaW5lIGtJT0Rpc3BsYXlW
ZXJ0aWNhbFBvc2l0aW9uS2V5ICJ2ZXJ0aWNhbC1wb3NpdGlvbiIKI2RlZmluZSBrSU9EaXNwbGF5
VmVydGljYWxTaXplS2V5ICJ2ZXJ0aWNhbC1zaXplIgojZGVmaW5lIGtJT0Rpc3BsYXlUcmFwZXpv
aWRLZXkgInRyYXBlem9pZCIKI2RlZmluZSBrSU9EaXNwbGF5UGluY3VzaGlvbktleSAicGluY3Vz
aGlvbiIKI2RlZmluZSBrSU9EaXNwbGF5UGFyYWxsZWxvZ3JhbUtleSAicGFyYWxsZWxvZ3JhbSIK
I2RlZmluZSBrSU9EaXNwbGF5Um90YXRpb25LZXkgInJvdGF0aW9uIgojZGVmaW5lIGtJT0Rpc3Bs
YXlUaGVhdHJlTW9kZUtleSAidGhlYXRyZS1tb2RlIgojZGVmaW5lIGtJT0Rpc3BsYXlUaGVhdHJl
TW9kZVdpbmRvd0tleSAidGhlYXRyZS1tb2RlLXdpbmRvdyIKI2RlZmluZSBrSU9EaXNwbGF5T3Zl
cnNjYW5LZXkgIm9zY24iCiNkZWZpbmUga0lPRGlzcGxheVZpZGVvQmVzdEtleSAidmJzdCIKCiNk
ZWZpbmUga0lPRGlzcGxheVNwZWFrZXJWb2x1bWVLZXkgInNwZWFrZXItdm9sdW1lIgojZGVmaW5l
IGtJT0Rpc3BsYXlTcGVha2VyU2VsZWN0S2V5ICJzcGVha2VyLXNlbGVjdCIKI2RlZmluZSBrSU9E
aXNwbGF5TWljcm9waG9uZVZvbHVtZUtleSAibWljcm9waG9uZS12b2x1bWUiCiNkZWZpbmUga0lP
RGlzcGxheUFtYmllbnRMaWdodFNlbnNvcktleSAiYW1iaWVudC1saWdodC1zZW5zb3IiCiNkZWZp
bmUga0lPRGlzcGxheUF1ZGlvTXV0ZUFuZFNjcmVlbkJsYW5rS2V5ICJhdWRpby1tdXRlLWFuZC1z
Y3JlZW4tYmxhbmsiCiNkZWZpbmUga0lPRGlzcGxheUF1ZGlvVHJlYmxlS2V5ICJhdWRpby10cmVi
bGUiCiNkZWZpbmUga0lPRGlzcGxheUF1ZGlvQmFzc0tleSAiYXVkaW8tYmFzcyIKI2RlZmluZSBr
SU9EaXNwbGF5QXVkaW9CYWxhbmNlTFJLZXkgImF1ZGlvLWJhbGFuY2UtTFIiCiNkZWZpbmUga0lP
RGlzcGxheUF1ZGlvUHJvY2Vzc29yTW9kZUtleSAiYXVkaW8tcHJvY2Vzc29yLW1vZGUiCiNkZWZp
bmUga0lPRGlzcGxheVBvd2VyTW9kZUtleSAicG93ZXItbW9kZSIKI2RlZmluZSBrSU9EaXNwbGF5
TWFudWZhY3R1cmVyU3BlY2lmaWNLZXkgIm1hbnVmYWN0dXJlci1zcGVjaWZpYyIKCgojZGVmaW5l
IGtJT0Rpc3BsYXlSZWRHYW1tYVNjYWxlS2V5ICJyZ3NjIgojZGVmaW5lIGtJT0Rpc3BsYXlHcmVl
bkdhbW1hU2NhbGVLZXkgImdnc2MiCiNkZWZpbmUga0lPRGlzcGxheUJsdWVHYW1tYVNjYWxlS2V5
ICJiZ3NjIgoKI2RlZmluZSBrSU9EaXNwbGF5UGFyYW1ldGVyc0NvbW1pdEtleSAiY29tbWl0Igoj
ZGVmaW5lIGtJT0Rpc3BsYXlQYXJhbWV0ZXJzRGVmYXVsdEtleSAiZGVmYXVsdHMiCiNkZWZpbmUg
a0lPRGlzcGxheVBhcmFtZXRlcnNGbHVzaEtleSAiZmx1c2giCgoKfQojIDQxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9oaWRzeXN0ZW0vSU9ISURU
eXBlcy5oIiAyIDMKCgojZGVmaW5lIEVWRU5UX1NZU1RFTV9WRVJTSU9OIDIKCgojZGVmaW5lIE5Y
X01BWE1PVVNFU0NBTElOR1MgMjAKCnR5cGVkZWYgc3RydWN0IGV2c2lvS2V5bWFwcGluZwp7CiAg
ICBpbnQgc2l6ZTsKICAgIGNoYXIgKm1hcHBpbmc7Cn0gTlhLZXlNYXBwaW5nOwoKdHlwZWRlZiBz
dHJ1Y3QgZXZzaW9Nb3VzZVNjYWxpbmcKewogICAgaW50IG51bVNjYWxlTGV2ZWxzOwogICAgc2hv
cnQgc2NhbGVUaHJlc2hvbGRzWzIwXTsKICAgIHNob3J0IHNjYWxlRmFjdG9yc1syMF07Cn0gTlhN
b3VzZVNjYWxpbmc7Cgp0eXBlZGVmIGVudW0gewogICAgTlhfT25lQnV0dG9uLAogICAgTlhfTGVm
dEJ1dHRvbiwKICAgIE5YX1JpZ2h0QnV0dG9uCn0gTlhNb3VzZUJ1dHRvbjsKIyA4MyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvaGlkc3lzdGVtL0lP
SElEVHlwZXMuaCIgMwp0eXBlZGVmIGludCAqTlhFdmVudFN5c3RlbUluZm9UeXBlOwojZGVmaW5l
IE5YX0VWU19JTkZPX01BWCAoMTAyNCkKdHlwZWRlZiBpbnQgTlhFdmVudFN5c3RlbUluZm9EYXRh
WygxMDI0KV07CgoKI2RlZmluZSBOWF9FVlNfREVWSUNFX01BWCAxNgoKCiNkZWZpbmUgTlhfRVZT
X0RFVklDRV9JTlRFUkZBQ0VfT1RIRVIgMAojZGVmaW5lIE5YX0VWU19ERVZJQ0VfSU5URVJGQUNF
X05lWFQgMQojZGVmaW5lIE5YX0VWU19ERVZJQ0VfSU5URVJGQUNFX0FEQiAyCiNkZWZpbmUgTlhf
RVZTX0RFVklDRV9JTlRFUkZBQ0VfQUNFIDMKI2RlZmluZSBOWF9FVlNfREVWSUNFX0lOVEVSRkFD
RV9TRVJJQUxfQUNFIDQKI2RlZmluZSBOWF9FVlNfREVWSUNFX0lOVEVSRkFDRV9CVVNfQUNFIDUK
I2RlZmluZSBOWF9FVlNfREVWSUNFX0lOVEVSRkFDRV9ISUwgNgojZGVmaW5lIE5YX0VWU19ERVZJ
Q0VfSU5URVJGQUNFX1RZUEU1IDcKIyAxMDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lP
S2l0LmZyYW1ld29yay9IZWFkZXJzL2hpZHN5c3RlbS9JT0hJRFR5cGVzLmgiIDMKI2RlZmluZSBO
VU1fU1VQUE9SVEVEX0lOVEVSRkFDRVMgKE5YX0VWU19ERVZJQ0VfSU5URVJGQUNFX1RZUEU1ICsg
MSkKCgoKI2RlZmluZSBOWF9FVlNfREVWSUNFX1RZUEVfT1RIRVIgMAojZGVmaW5lIE5YX0VWU19E
RVZJQ0VfVFlQRV9LRVlCT0FSRCAxCiNkZWZpbmUgTlhfRVZTX0RFVklDRV9UWVBFX01PVVNFIDIK
I2RlZmluZSBOWF9FVlNfREVWSUNFX1RZUEVfVEFCTEVUIDMKCnR5cGVkZWYgc3RydWN0IHsKIGlu
dCBpbnRlcmZhY2U7CiBpbnQgaW50ZXJmYWNlX2FkZHI7CiBpbnQgZGV2X3R5cGU7CiBpbnQgaWQ7
Cn0gTlhFdmVudFN5c3RlbURldmljZTsKCnR5cGVkZWYgc3RydWN0IHsKIE5YRXZlbnRTeXN0ZW1E
ZXZpY2UgZGV2WzE2XTsKfSBOWEV2ZW50U3lzdGVtRGV2aWNlTGlzdDsKCiNkZWZpbmUgX19PTERf
TlhfRVZTX0RFVklDRV9JTkZPIDEKI2RlZmluZSBOWF9FVlNfREVWSUNFX0lORk8gIkV2c19FdmVu
dERldmljZUluZm8iCiNkZWZpbmUgTlhfRVZTX0RFVklDRV9JTkZPX0NPVU5UIChzaXplb2YgKE5Y
RXZlbnRTeXN0ZW1EZXZpY2VMaXN0KSAvIHNpemVvZiAoaW50KSkKCgoKCgoKdHlwZWRlZiBlbnVt
IHtFVk5PUCwgRVZISURFLCBFVlNIT1csIEVWTU9WRSwgRVZMRVZFTH0gRXZDbWQ7CgojZGVmaW5l
IEVWX1NDUkVFTl9NSU5fQlJJR0hUTkVTUyAwCiNkZWZpbmUgRVZfU0NSRUVOX01BWF9CUklHSFRO
RVNTIDY0CgojZGVmaW5lIEVWX1NDQUxFX0JSSUdIVE5FU1Moc2NhbGUsZGF0dW0pICgoKChVSW50
MzIpKGRhdHVtKSkqKChVSW50MzIpc2NhbGUpKSA+PiA2KQojIDE1MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvaGlkc3lzdGVtL0lPSElEVHlwZXMu
aCIgMwojZGVmaW5lIEVWX1RJQ0tfVElNRSAxNgojZGVmaW5lIEVWX1RJQ0tTX1BFUl9TRUMgKDEw
MDAvRVZfVElDS19USU1FKQoKCiNkZWZpbmUgRVZfUkIgKDB4MDEpCiNkZWZpbmUgRVZfTEIgKDB4
MDQpCiNkZWZpbmUgRVZfTU9VU0VCVVRUT05NQVNLIChFVl9MQiB8IEVWX1JCKQoKCiNkZWZpbmUg
RVZfTUlOUFJFU1NVUkUgMAojZGVmaW5lIEVWX01BWFBSRVNTVVJFIDI1NQoKCiNkZWZpbmUgRVZf
Q1VSU09SX1dJRFRIIDE2CiNkZWZpbmUgRVZfQ1VSU09SX0hFSUdIVCAxNgoKCiNkZWZpbmUga0Fw
cGxlT25ib2FyZEdVSUQgMHgwNjEwMDAwMDAwMDAwMDAwVUxMCiMgNTAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL2hpZHN5c3RlbS9JT0xMRXZlbnQu
aCIgMiAzCgoKCgoKCgojZGVmaW5lIEVWRU5UX0ggCgoKCgoKI2RlZmluZSBfTlhTSVpFXyAxCnR5
cGVkZWYgZmxvYXQgTlhDb29yZDsKCnR5cGVkZWYgc3RydWN0IF9OWFBvaW50IHsKICAgIE5YQ29v
cmQgeCwgeTsKfSBOWFBvaW50OwoKdHlwZWRlZiBzdHJ1Y3QgX05YU2l6ZSB7CiAgICBOWENvb3Jk
IHdpZHRoLCBoZWlnaHQ7Cn0gTlhTaXplOwojZGVmaW5lIF9OWFNpemVfIE5YU2l6ZQoKCgoKCgoj
ZGVmaW5lIE5YX05VTExFVkVOVCAwCgoKCiNkZWZpbmUgTlhfTE1PVVNFRE9XTiAxCiNkZWZpbmUg
TlhfTE1PVVNFVVAgMgojZGVmaW5lIE5YX1JNT1VTRURPV04gMwojZGVmaW5lIE5YX1JNT1VTRVVQ
IDQKI2RlZmluZSBOWF9NT1VTRU1PVkVEIDUKI2RlZmluZSBOWF9MTU9VU0VEUkFHR0VEIDYKI2Rl
ZmluZSBOWF9STU9VU0VEUkFHR0VEIDcKI2RlZmluZSBOWF9NT1VTRUVOVEVSRUQgOAojZGVmaW5l
IE5YX01PVVNFRVhJVEVEIDkKCgoKCgoKI2RlZmluZSBOWF9PTU9VU0VET1dOIDI1CiNkZWZpbmUg
TlhfT01PVVNFVVAgMjYKI2RlZmluZSBOWF9PTU9VU0VEUkFHR0VEIDI3CgoKCiNkZWZpbmUgTlhf
S0VZRE9XTiAxMAojZGVmaW5lIE5YX0tFWVVQIDExCiNkZWZpbmUgTlhfRkxBR1NDSEFOR0VEIDEy
CgoKCiNkZWZpbmUgTlhfS0lUREVGSU5FRCAxMwojZGVmaW5lIE5YX1NZU0RFRklORUQgMTQKI2Rl
ZmluZSBOWF9BUFBERUZJTkVEIDE1CgoKCgojZGVmaW5lIE5YX1NDUk9MTFdIRUVMTU9WRUQgMjIK
CgojZGVmaW5lIE5YX1pPT00gMjgKCgoKI2RlZmluZSBOWF9UQUJMRVRQT0lOVEVSIDIzCiNkZWZp
bmUgTlhfVEFCTEVUUFJPWElNSVRZIDI0CgoKCiNkZWZpbmUgTlhfRklSU1RFVkVOVCAwCiNkZWZp
bmUgTlhfTEFTVEVWRU5UIDI4CiNkZWZpbmUgTlhfTlVNUFJPQ1MgKE5YX0xBU1RFVkVOVC1OWF9G
SVJTVEVWRU5UKzEpCgoKI2RlZmluZSBOWF9OVUxMRVZFTlRNQVNLICgxIDw8IE5YX05VTExFVkVO
VCkKI2RlZmluZSBOWF9MTU9VU0VET1dOTUFTSyAoMSA8PCBOWF9MTU9VU0VET1dOKQojZGVmaW5l
IE5YX0xNT1VTRVVQTUFTSyAoMSA8PCBOWF9MTU9VU0VVUCkKI2RlZmluZSBOWF9STU9VU0VET1dO
TUFTSyAoMSA8PCBOWF9STU9VU0VET1dOKQojZGVmaW5lIE5YX1JNT1VTRVVQTUFTSyAoMSA8PCBO
WF9STU9VU0VVUCkKI2RlZmluZSBOWF9PTU9VU0VET1dOTUFTSyAoMSA8PCBOWF9PTU9VU0VET1dO
KQojZGVmaW5lIE5YX09NT1VTRVVQTUFTSyAoMSA8PCBOWF9PTU9VU0VVUCkKI2RlZmluZSBOWF9N
T1VTRU1PVkVETUFTSyAoMSA8PCBOWF9NT1VTRU1PVkVEKQojZGVmaW5lIE5YX0xNT1VTRURSQUdH
RURNQVNLICgxIDw8IE5YX0xNT1VTRURSQUdHRUQpCiNkZWZpbmUgTlhfUk1PVVNFRFJBR0dFRE1B
U0sgKDEgPDwgTlhfUk1PVVNFRFJBR0dFRCkKI2RlZmluZSBOWF9PTU9VU0VEUkFHR0VETUFTSyAo
MSA8PCBOWF9PTU9VU0VEUkFHR0VEKQojZGVmaW5lIE5YX01PVVNFRU5URVJFRE1BU0sgKDEgPDwg
TlhfTU9VU0VFTlRFUkVEKQojZGVmaW5lIE5YX01PVVNFRVhJVEVETUFTSyAoMSA8PCBOWF9NT1VT
RUVYSVRFRCkKI2RlZmluZSBOWF9LRVlET1dOTUFTSyAoMSA8PCBOWF9LRVlET1dOKQojZGVmaW5l
IE5YX0tFWVVQTUFTSyAoMSA8PCBOWF9LRVlVUCkKI2RlZmluZSBOWF9GTEFHU0NIQU5HRURNQVNL
ICgxIDw8IE5YX0ZMQUdTQ0hBTkdFRCkKI2RlZmluZSBOWF9LSVRERUZJTkVETUFTSyAoMSA8PCBO
WF9LSVRERUZJTkVEKQojZGVmaW5lIE5YX1NZU0RFRklORURNQVNLICgxIDw8IE5YX1NZU0RFRklO
RUQpCiNkZWZpbmUgTlhfQVBQREVGSU5FRE1BU0sgKDEgPDwgTlhfQVBQREVGSU5FRCkKI2RlZmlu
ZSBOWF9TQ1JPTExXSEVFTE1PVkVETUFTSyAoMSA8PCBOWF9TQ1JPTExXSEVFTE1PVkVEKQojZGVm
aW5lIE5YX1pPT01NQVNLICgxIDw8IE5YX1pPT00pCiNkZWZpbmUgTlhfVEFCTEVUUE9JTlRFUk1B
U0sgKDEgPDwgTlhfVEFCTEVUUE9JTlRFUikKI2RlZmluZSBOWF9UQUJMRVRQUk9YSU1JVFlNQVNL
ICgxIDw8IE5YX1RBQkxFVFBST1hJTUlUWSkKCiNkZWZpbmUgRXZlbnRDb2RlTWFzayh0eXBlKSAo
MSA8PCAodHlwZSkpCiNkZWZpbmUgTlhfQUxMRVZFTlRTIC0xCgoKCiNkZWZpbmUgTlhfU1VCVFlQ
RV9ERUZBVUxUIDAKI2RlZmluZSBOWF9TVUJUWVBFX1RBQkxFVF9QT0lOVCAxCiNkZWZpbmUgTlhf
U1VCVFlQRV9UQUJMRVRfUFJPWElNSVRZIDIKI2RlZmluZSBOWF9TVUJUWVBFX01PVVNFX1RPVUNI
IDMKCgoKI2RlZmluZSBOWF9TVUJUWVBFX1BPV0VSX0tFWSAxCiNkZWZpbmUgTlhfU1VCVFlQRV9B
VVhfTU9VU0VfQlVUVE9OUyA3CiMgMTg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tp
dC5mcmFtZXdvcmsvSGVhZGVycy9oaWRzeXN0ZW0vSU9MTEV2ZW50LmgiIDMKI2RlZmluZSBOWF9T
VUJUWVBFX0FVWF9DT05UUk9MX0JVVFRPTlMgOAoKI2RlZmluZSBOWF9TVUJUWVBFX0VKRUNUX0tF
WSAxMAojZGVmaW5lIE5YX1NVQlRZUEVfU0xFRVBfRVZFTlQgMTEKI2RlZmluZSBOWF9TVUJUWVBF
X1JFU1RBUlRfRVZFTlQgMTIKI2RlZmluZSBOWF9TVUJUWVBFX1NIVVRET1dOX0VWRU5UIDEzCgoj
ZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZU19PTiAxMDAKI2RlZmluZSBOWF9TVUJUWVBFX1NU
SUNLWUtFWVNfT0ZGIDEwMQojZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZU19TSElGVCAxMDIK
I2RlZmluZSBOWF9TVUJUWVBFX1NUSUNLWUtFWVNfQ09OVFJPTCAxMDMKI2RlZmluZSBOWF9TVUJU
WVBFX1NUSUNLWUtFWVNfQUxURVJOQVRFIDEwNAojZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZ
U19DT01NQU5EIDEwNQojZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZU19SRUxFQVNFIDEwNgoj
ZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZU19UT0dHTEVNT1VTRURSSVZJTkcgMTA3CgoKCgoj
ZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZU19TSElGVF9ET1dOIDExMAojZGVmaW5lIE5YX1NV
QlRZUEVfU1RJQ0tZS0VZU19DT05UUk9MX0RPV04gMTExCiNkZWZpbmUgTlhfU1VCVFlQRV9TVElD
S1lLRVlTX0FMVEVSTkFURV9ET1dOIDExMgojZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZU19D
T01NQU5EX0RPV04gMTEzCiNkZWZpbmUgTlhfU1VCVFlQRV9TVElDS1lLRVlTX0ZOX0RPV04gMTE0
CgojZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZU19TSElGVF9MT0NLIDEyMAojZGVmaW5lIE5Y
X1NVQlRZUEVfU1RJQ0tZS0VZU19DT05UUk9MX0xPQ0sgMTIxCiNkZWZpbmUgTlhfU1VCVFlQRV9T
VElDS1lLRVlTX0FMVEVSTkFURV9MT0NLIDEyMgojZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZ
U19DT01NQU5EX0xPQ0sgMTIzCiNkZWZpbmUgTlhfU1VCVFlQRV9TVElDS1lLRVlTX0ZOX0xPQ0sg
MTI0CgojZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZU19TSElGVF9VUCAxMzAKI2RlZmluZSBO
WF9TVUJUWVBFX1NUSUNLWUtFWVNfQ09OVFJPTF9VUCAxMzEKI2RlZmluZSBOWF9TVUJUWVBFX1NU
SUNLWUtFWVNfQUxURVJOQVRFX1VQIDEzMgojZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZU19D
T01NQU5EX1VQIDEzMwojZGVmaW5lIE5YX1NVQlRZUEVfU1RJQ0tZS0VZU19GTl9VUCAxMzQKCgoK
CiNkZWZpbmUgTlhfU1VCVFlQRV9TTE9XS0VZU19TVEFSVCAyMDAKI2RlZmluZSBOWF9TVUJUWVBF
X1NMT1dLRVlTX0FCT1JUIDIwMQojZGVmaW5lIE5YX1NVQlRZUEVfU0xPV0tFWVNfRU5EIDIwMgoK
CiNkZWZpbmUgTlhfU1VCVFlQRV9ISURQQVJBTUVURVJfTU9ESUZJRUQgMjEwCgoKCgoKI2RlZmlu
ZSBOWF9BTFBIQVNISUZUTUFTSyAweDAwMDEwMDAwCiNkZWZpbmUgTlhfU0hJRlRNQVNLIDB4MDAw
MjAwMDAKI2RlZmluZSBOWF9DT05UUk9MTUFTSyAweDAwMDQwMDAwCiNkZWZpbmUgTlhfQUxURVJO
QVRFTUFTSyAweDAwMDgwMDAwCiNkZWZpbmUgTlhfQ09NTUFORE1BU0sgMHgwMDEwMDAwMAojZGVm
aW5lIE5YX05VTUVSSUNQQURNQVNLIDB4MDAyMDAwMDAKI2RlZmluZSBOWF9IRUxQTUFTSyAweDAw
NDAwMDAwCiNkZWZpbmUgTlhfU0VDT05EQVJZRk5NQVNLIDB4MDA4MDAwMDAKCgoKI2RlZmluZSBO
WF9ERVZJQ0VMQ1RMS0VZTUFTSyAweDAwMDAwMDAxCiNkZWZpbmUgTlhfREVWSUNFTFNISUZUS0VZ
TUFTSyAweDAwMDAwMDAyCiNkZWZpbmUgTlhfREVWSUNFUlNISUZUS0VZTUFTSyAweDAwMDAwMDA0
CiNkZWZpbmUgTlhfREVWSUNFTENNREtFWU1BU0sgMHgwMDAwMDAwOAojZGVmaW5lIE5YX0RFVklD
RVJDTURLRVlNQVNLIDB4MDAwMDAwMTAKI2RlZmluZSBOWF9ERVZJQ0VMQUxUS0VZTUFTSyAweDAw
MDAwMDIwCiNkZWZpbmUgTlhfREVWSUNFUkFMVEtFWU1BU0sgMHgwMDAwMDA0MAojZGVmaW5lIE5Y
X0RFVklDRVJDVExLRVlNQVNLIDB4MDAwMDIwMDAKCgoKCgojZGVmaW5lIE5YX1NUWUxVU1BST1hJ
TUlUWU1BU0sgMHgwMDAwMDA4MAojZGVmaW5lIE5YX05PTkNPQUxTRVNDRURNQVNLIDB4MDAwMDAx
MDAKIyAyNzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFk
ZXJzL2hpZHN5c3RlbS9JT0xMRXZlbnQuaCIgMwojZGVmaW5lIE5YX0FTQ0lJU0VUIDAKI2RlZmlu
ZSBOWF9TWU1CT0xTRVQgMQojZGVmaW5lIE5YX0RJTkdCQVRTU0VUIDIKIyAyOTggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL2hpZHN5c3RlbS9JT0xM
RXZlbnQuaCIgMwojZGVmaW5lIE5YX1RBQkxFVF9CVVRUT05fUEVOVElQTUFTSyAweDAwMDEKI2Rl
ZmluZSBOWF9UQUJMRVRfQlVUVE9OX1BFTkxPV0VSU0lERU1BU0sgMHgwMDAyCiNkZWZpbmUgTlhf
VEFCTEVUX0JVVFRPTl9QRU5VUFBFUlNJREVNQVNLIDB4MDAwNAojIDMwOSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvaGlkc3lzdGVtL0lPTExFdmVu
dC5oIiAzCiNkZWZpbmUgTlhfVEFCTEVUX0NBUEFCSUxJVFlfREVWSUNFSURNQVNLIDB4MDAwMQoj
ZGVmaW5lIE5YX1RBQkxFVF9DQVBBQklMSVRZX0FCU1hNQVNLIDB4MDAwMgojZGVmaW5lIE5YX1RB
QkxFVF9DQVBBQklMSVRZX0FCU1lNQVNLIDB4MDAwNAojZGVmaW5lIE5YX1RBQkxFVF9DQVBBQklM
SVRZX1ZFTkRPUjFNQVNLIDB4MDAwOAojZGVmaW5lIE5YX1RBQkxFVF9DQVBBQklMSVRZX1ZFTkRP
UjJNQVNLIDB4MDAxMAojZGVmaW5lIE5YX1RBQkxFVF9DQVBBQklMSVRZX1ZFTkRPUjNNQVNLIDB4
MDAyMAojZGVmaW5lIE5YX1RBQkxFVF9DQVBBQklMSVRZX0JVVFRPTlNNQVNLIDB4MDA0MAojZGVm
aW5lIE5YX1RBQkxFVF9DQVBBQklMSVRZX1RJTFRYTUFTSyAweDAwODAKI2RlZmluZSBOWF9UQUJM
RVRfQ0FQQUJJTElUWV9USUxUWU1BU0sgMHgwMTAwCiNkZWZpbmUgTlhfVEFCTEVUX0NBUEFCSUxJ
VFlfQUJTWk1BU0sgMHgwMjAwCiNkZWZpbmUgTlhfVEFCTEVUX0NBUEFCSUxJVFlfUFJFU1NVUkVN
QVNLIDB4MDQwMAojZGVmaW5lIE5YX1RBQkxFVF9DQVBBQklMSVRZX1RBTkdFTlRJQUxQUkVTU1VS
RU1BU0sgMHgwODAwCiNkZWZpbmUgTlhfVEFCTEVUX0NBUEFCSUxJVFlfT1JJRU5USU5GT01BU0sg
MHgxMDAwCiNkZWZpbmUgTlhfVEFCTEVUX0NBUEFCSUxJVFlfUk9UQVRJT05NQVNLIDB4MjAwMAoK
CgoKCgojZGVmaW5lIE5YX1RBQkxFVF9QT0lOVEVSX1VOS05PV04gMAojZGVmaW5lIE5YX1RBQkxF
VF9QT0lOVEVSX1BFTiAxCiNkZWZpbmUgTlhfVEFCTEVUX1BPSU5URVJfQ1VSU09SIDIKI2RlZmlu
ZSBOWF9UQUJMRVRfUE9JTlRFUl9FUkFTRVIgMwoKCgoKCnR5cGVkZWYgc3RydWN0IF9OWFRhYmxl
dFBvaW50RGF0YSB7CiBTSW50MzIgeDsKICAgIFNJbnQzMiB5OwogU0ludDMyIHo7CiAgICBVSW50
MTYgYnV0dG9uczsKICAgIFVJbnQxNiBwcmVzc3VyZTsKICAgIHN0cnVjdCB7CiAgICAgICAgU0lu
dDE2IHg7CiAgICAgICAgU0ludDE2IHk7CiB9IHRpbHQ7CiBVSW50MTYgcm90YXRpb247CiBTSW50
MTYgdGFuZ2VudGlhbFByZXNzdXJlOwogVUludDE2IGRldmljZUlEOwogU0ludDE2IHZlbmRvcjE7
CiBTSW50MTYgdmVuZG9yMjsKIFNJbnQxNiB2ZW5kb3IzOwp9IE5YVGFibGV0UG9pbnREYXRhLCAq
TlhUYWJsZXRQb2ludERhdGFQdHI7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX05YVGFibGV0UHJveGlt
aXR5RGF0YSB7CiAgICBVSW50MTYgdmVuZG9ySUQ7CiBVSW50MTYgdGFibGV0SUQ7CiBVSW50MTYg
cG9pbnRlcklEOwogVUludDE2IGRldmljZUlEOwogVUludDE2IHN5c3RlbVRhYmxldElEOwogVUlu
dDE2IHZlbmRvclBvaW50ZXJUeXBlOwogVUludDMyIHBvaW50ZXJTZXJpYWxOdW1iZXI7CiBVSW50
NjQgdW5pcXVlSUQgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogVUludDMyIGNhcGFiaWxpdHlN
YXNrOwogVUludDggcG9pbnRlclR5cGU7CiBVSW50OCBlbnRlclByb3hpbWl0eTsKIFNJbnQxNiBy
ZXNlcnZlZDE7Cn0gTlhUYWJsZXRQcm94aW1pdHlEYXRhLCAqTlhUYWJsZXRQcm94aW1pdHlEYXRh
UHRyOwoKCgp0eXBlZGVmIHVuaW9uIHsKICAgIHN0cnVjdCB7CiAgICAgICAgVUludDggc3VieDsK
ICAgICAgICBVSW50OCBzdWJ5OwogICAgICAgIFNJbnQxNiBldmVudE51bTsKICAgICAgICBTSW50
MzIgY2xpY2s7CiAgICAgICAgVUludDggcHJlc3N1cmU7CiAgICAgICAgVUludDggYnV0dG9uTnVt
YmVyOwogICAgICAgIFVJbnQ4IHN1YlR5cGU7CiAgICAgICAgVUludDggcmVzZXJ2ZWQyOwogICAg
ICAgIFNJbnQzMiByZXNlcnZlZDM7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICBOWFRhYmxl
dFBvaW50RGF0YSBwb2ludDsKICAgICAgICAgICAgTlhUYWJsZXRQcm94aW1pdHlEYXRhIHByb3hp
bWl0eTsKICAgICAgICB9IHRhYmxldDsKICAgIH0gbW91c2U7CiAgICBzdHJ1Y3QgewogICAgICAg
IFNJbnQzMiBkeDsKICAgICAgICBTSW50MzIgZHk7CiAgICAgICAgVUludDggc3VieDsKICAgICAg
ICBVSW50OCBzdWJ5OwogICAgICAgIFVJbnQ4IHN1YlR5cGU7CiAgICAgICAgVUludDggcmVzZXJ2
ZWQxOwogICAgICAgIFNJbnQzMiByZXNlcnZlZDI7CiAgICAgICAgdW5pb24gewogICAgICAgICAg
ICBOWFRhYmxldFBvaW50RGF0YSBwb2ludDsKICAgICAgICAgICAgTlhUYWJsZXRQcm94aW1pdHlE
YXRhIHByb3hpbWl0eTsKICAgICAgICB9IHRhYmxldDsKICAgIH0gbW91c2VNb3ZlOwogICAgc3Ry
dWN0IHsKICAgICAgICBVSW50MTYgb3JpZ0NoYXJTZXQ7CiAgICAgICAgU0ludDE2IHJlcGVhdDsK
ICAgICAgICBVSW50MTYgY2hhclNldDsKICAgICAgICBVSW50MTYgY2hhckNvZGU7CiAgICAgICAg
VUludDE2IGtleUNvZGU7CiAgICAgICAgVUludDE2IG9yaWdDaGFyQ29kZTsKICAgICAgICBTSW50
MzIgcmVzZXJ2ZWQxOwogICAgICAgIFVJbnQzMiBrZXlib2FyZFR5cGU7CiAgICAgICAgU0ludDMy
IHJlc2VydmVkMjsKICAgICAgICBTSW50MzIgcmVzZXJ2ZWQzOwogICAgICAgIFNJbnQzMiByZXNl
cnZlZDQ7CiAgICAgICAgU0ludDMyIHJlc2VydmVkNVs0XTsKICAgIH0ga2V5OwogICAgc3RydWN0
IHsKICAgICAgICBTSW50MTYgcmVzZXJ2ZWQ7CiAgICAgICAgU0ludDE2IGV2ZW50TnVtOwogICAg
ICAgIFNJbnQzMiB0cmFja2luZ051bTsKICAgICAgICBTSW50MzIgdXNlckRhdGE7CiAgICAgICAg
U0ludDMyIHJlc2VydmVkMTsKICAgICAgICBTSW50MzIgcmVzZXJ2ZWQyOwogICAgICAgIFNJbnQz
MiByZXNlcnZlZDM7CiAgICAgICAgU0ludDMyIHJlc2VydmVkNDsKICAgICAgICBTSW50MzIgcmVz
ZXJ2ZWQ1OwogICAgICAgIFNJbnQzMiByZXNlcnZlZDZbNF07CiAgICB9IHRyYWNraW5nOwogICAg
c3RydWN0IHsKICAgICAgICBTSW50MTYgZGVsdGFBeGlzMTsKICAgICAgICBTSW50MTYgZGVsdGFB
eGlzMjsKICAgICAgICBTSW50MTYgZGVsdGFBeGlzMzsKICAgICAgICBTSW50MTYgcmVzZXJ2ZWQx
OwogICAgICAgIFNJbnQzMiBmaXhlZERlbHRhQXhpczE7CiAgICAgICAgU0ludDMyIGZpeGVkRGVs
dGFBeGlzMjsKICAgICAgICBTSW50MzIgZml4ZWREZWx0YUF4aXMzOwogICAgICAgIFNJbnQzMiBw
b2ludERlbHRhQXhpczE7CiAgICAgICAgU0ludDMyIHBvaW50RGVsdGFBeGlzMjsKICAgICAgICBT
SW50MzIgcG9pbnREZWx0YUF4aXMzOwogICAgICAgIFNJbnQzMiByZXNlcnZlZDhbNF07CiAgICB9
IHNjcm9sbFdoZWVsLCB6b29tOwogICAgc3RydWN0IHsKICAgICAgICBTSW50MTYgcmVzZXJ2ZWQ7
CiAgICAgICAgU0ludDE2IHN1YlR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICBmbG9h
dCBGWzExXTsKICAgICAgICAgICAgU0ludDMyIExbMTFdOwogICAgICAgICAgICBTSW50MTYgU1sy
Ml07CiAgICAgICAgICAgIGNoYXIgQ1s0NF07CiAgICAgICAgfSBtaXNjOwogICAgfSBjb21wb3Vu
ZDsKICAgIHN0cnVjdCB7CiAgICAgICAgU0ludDMyIHg7CiAgICAgICAgU0ludDMyIHk7CiAgICAg
ICAgU0ludDMyIHo7CiAgICAgICAgVUludDE2IGJ1dHRvbnM7CiAgICAgICAgVUludDE2IHByZXNz
dXJlOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgIFNJbnQxNiB4OwogICAgICAgICAgICBT
SW50MTYgeTsKICAgICAgICB9IHRpbHQ7CiAgICAgICAgVUludDE2IHJvdGF0aW9uOwogICAgICAg
IFNJbnQxNiB0YW5nZW50aWFsUHJlc3N1cmU7CiAgICAgICAgVUludDE2IGRldmljZUlEOwogICAg
ICAgIFNJbnQxNiB2ZW5kb3IxOwogICAgICAgIFNJbnQxNiB2ZW5kb3IyOwogICAgICAgIFNJbnQx
NiB2ZW5kb3IzOwogICAgICAgIFNJbnQzMiByZXNlcnZlZFs0XTsKICAgIH0gdGFibGV0OwogICAg
c3RydWN0IHsKICAgICAgICBVSW50MTYgdmVuZG9ySUQ7CiAgICAgICAgVUludDE2IHRhYmxldElE
OwogICAgICAgIFVJbnQxNiBwb2ludGVySUQ7CiAgICAgICAgVUludDE2IGRldmljZUlEOwogICAg
ICAgIFVJbnQxNiBzeXN0ZW1UYWJsZXRJRDsKICAgICAgICBVSW50MTYgdmVuZG9yUG9pbnRlclR5
cGU7CiAgICAgICAgVUludDMyIHBvaW50ZXJTZXJpYWxOdW1iZXI7CiAgICAgICAgVUludDY0IHVu
aXF1ZUlEIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBVSW50MzIgY2FwYWJpbGl0
eU1hc2s7CiAgICAgICAgVUludDggcG9pbnRlclR5cGU7CiAgICAgICAgVUludDggZW50ZXJQcm94
aW1pdHk7CiAgICAgICAgU0ludDE2IHJlc2VydmVkMTsKICAgICAgICBTSW50MzIgcmVzZXJ2ZWQy
WzRdOwogICAgfSBwcm94aW1pdHk7Cn0gTlhFdmVudERhdGE7CgoKCiNkZWZpbmUga05YRXZlbnRE
YXRhVmVyc2lvbiAyCgoKCnR5cGVkZWYgc3RydWN0IF9OWEV2ZW50IHsKIFNJbnQzMiB0eXBlOwog
ICAgc3RydWN0IHsKICAgICAgICBTSW50MzIgeCwgeTsKICAgIH0gbG9jYXRpb247CiAgICBVSW50
NjQgdGltZSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICBTSW50MzIgZmxhZ3M7CiAgICBV
SW50MzIgd2luZG93OwogICAgVUludDY0IHNlcnZpY2VfaWQgX19hdHRyaWJ1dGVfXyAoKHBhY2tl
ZCkpOwogICAgU0ludDMyIGV4dF9waWQ7CiAgICBOWEV2ZW50RGF0YSBkYXRhOwp9IE5YRXZlbnQs
ICpOWEV2ZW50UHRyOwojIDUyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJh
bWV3b3JrL0hlYWRlcnMvaGlkc3lzdGVtL0lPTExFdmVudC5oIiAzCiNkZWZpbmUga05YRXZlbnRW
ZXJzaW9uIDIKCgojZGVmaW5lIE5YX05PV0lORE9XIC0xCiNkZWZpbmUgTlhfQllUWVBFIDAKI2Rl
ZmluZSBOWF9CUk9BRENBU1QgMQojZGVmaW5lIE5YX1RPUFdJTkRPVyAyCiNkZWZpbmUgTlhfRklS
U1RXSU5ET1cgMwojZGVmaW5lIE5YX01PVVNFV0lORE9XIDQKI2RlZmluZSBOWF9ORVhUV0lORE9X
IDUKI2RlZmluZSBOWF9MQVNUTEVGVCA2CiNkZWZpbmUgTlhfTEFTVFJJR0hUIDcKI2RlZmluZSBO
WF9MQVNUS0VZIDgKI2RlZmluZSBOWF9FWFBMSUNJVCA5CiNkZWZpbmUgTlhfVFJBTlNNSVQgMTAK
I2RlZmluZSBOWF9CWVBTQ09OVEVYVCAxMQoKCgoKCiNkZWZpbmUgTlhfVU5ESU1NQVNLIChOWF9L
RVlET1dOTUFTSyB8IE5YX0tFWVVQTUFTSyB8IE5YX0xNT1VTRURPV05NQVNLIHwgTlhfTE1PVVNF
VVBNQVNLIHwgTlhfUk1PVVNFRE9XTk1BU0sgfCBOWF9STU9VU0VVUE1BU0sgfCBOWF9NT1VTRU1P
VkVETUFTSyB8IE5YX0ZMQUdTQ0hBTkdFRE1BU0sgfCBOWF9NT1VTRUVOVEVSRURNQVNLIHwgTlhf
TU9VU0VFWElURURNQVNLIHwgTlhfTE1PVVNFRFJBR0dFRE1BU0sgfCBOWF9STU9VU0VEUkFHR0VE
TUFTSyB8IE5YX1NDUk9MTFdIRUVMTU9WRURNQVNLIHwgTlhfVEFCTEVUUE9JTlRFUk1BU0sgfCBO
WF9UQUJMRVRQUk9YSU1JVFlNQVNLIHwgTlhfTlVMTEVWRU5UTUFTSykKIyAxMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dFdmVudFR5cGVzLmgiIDIgMwojIDI5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0V2ZW50VHlwZXMu
aCIgMwp0eXBlZGVmIHN0cnVjdCBfX0NHRXZlbnQgKkNHRXZlbnRSZWY7CgoKZW51bSB7CiAga0NH
TW91c2VCdXR0b25MZWZ0ID0gMCwKICBrQ0dNb3VzZUJ1dHRvblJpZ2h0ID0gMSwKICBrQ0dNb3Vz
ZUJ1dHRvbkNlbnRlciA9IDIKfTsKdHlwZWRlZiB1aW50MzJfdCBDR01vdXNlQnV0dG9uOwoKCmVu
dW0gewogIGtDR1Njcm9sbEV2ZW50VW5pdFBpeGVsID0gMCwKICBrQ0dTY3JvbGxFdmVudFVuaXRM
aW5lID0gMSwKfTsKdHlwZWRlZiB1aW50MzJfdCBDR1Njcm9sbEV2ZW50VW5pdDsKCgoKCgplbnVt
IHsKCiAga0NHRXZlbnRGbGFnTWFza0FscGhhU2hpZnQgPSAweDAwMDEwMDAwLAogIGtDR0V2ZW50
RmxhZ01hc2tTaGlmdCA9IDB4MDAwMjAwMDAsCiAga0NHRXZlbnRGbGFnTWFza0NvbnRyb2wgPSAw
eDAwMDQwMDAwLAogIGtDR0V2ZW50RmxhZ01hc2tBbHRlcm5hdGUgPSAweDAwMDgwMDAwLAogIGtD
R0V2ZW50RmxhZ01hc2tDb21tYW5kID0gMHgwMDEwMDAwMCwKCgogIGtDR0V2ZW50RmxhZ01hc2tI
ZWxwID0gMHgwMDQwMDAwMCwKICBrQ0dFdmVudEZsYWdNYXNrU2Vjb25kYXJ5Rm4gPSAweDAwODAw
MDAwLAoKCiAga0NHRXZlbnRGbGFnTWFza051bWVyaWNQYWQgPSAweDAwMjAwMDAwLAoKCiAga0NH
RXZlbnRGbGFnTWFza05vbkNvYWxlc2NlZCA9IDB4MDAwMDAxMDAKfTsKdHlwZWRlZiB1aW50NjRf
dCBDR0V2ZW50RmxhZ3M7CgoKZW51bSB7CgogIGtDR0V2ZW50TnVsbCA9IDAsCgoKICBrQ0dFdmVu
dExlZnRNb3VzZURvd24gPSAxLAogIGtDR0V2ZW50TGVmdE1vdXNlVXAgPSAyLAogIGtDR0V2ZW50
UmlnaHRNb3VzZURvd24gPSAzLAogIGtDR0V2ZW50UmlnaHRNb3VzZVVwID0gNCwKICBrQ0dFdmVu
dE1vdXNlTW92ZWQgPSA1LAogIGtDR0V2ZW50TGVmdE1vdXNlRHJhZ2dlZCA9IDYsCiAga0NHRXZl
bnRSaWdodE1vdXNlRHJhZ2dlZCA9IDcsCgoKICBrQ0dFdmVudEtleURvd24gPSAxMCwKICBrQ0dF
dmVudEtleVVwID0gMTEsCiAga0NHRXZlbnRGbGFnc0NoYW5nZWQgPSAxMiwKCgogIGtDR0V2ZW50
U2Nyb2xsV2hlZWwgPSAyMiwKICBrQ0dFdmVudFRhYmxldFBvaW50ZXIgPSAyMywKICBrQ0dFdmVu
dFRhYmxldFByb3hpbWl0eSA9IDI0LAogIGtDR0V2ZW50T3RoZXJNb3VzZURvd24gPSAyNSwKICBr
Q0dFdmVudE90aGVyTW91c2VVcCA9IDI2LAogIGtDR0V2ZW50T3RoZXJNb3VzZURyYWdnZWQgPSAy
NywKCgoKICBrQ0dFdmVudFRhcERpc2FibGVkQnlUaW1lb3V0ID0gMHhGRkZGRkZGRSwKICBrQ0dF
dmVudFRhcERpc2FibGVkQnlVc2VySW5wdXQgPSAweEZGRkZGRkZGCn07CnR5cGVkZWYgdWludDMy
X3QgQ0dFdmVudFR5cGU7CgoKdHlwZWRlZiB1aW50NjRfdCBDR0V2ZW50VGltZXN0YW1wOwoKCmVu
dW0gewoKCgogIGtDR01vdXNlRXZlbnROdW1iZXIgPSAwLAoKCgoKCiAga0NHTW91c2VFdmVudENs
aWNrU3RhdGUgPSAxLAoKCgoKCiAga0NHTW91c2VFdmVudFByZXNzdXJlID0gMiwKCgoKICBrQ0dN
b3VzZUV2ZW50QnV0dG9uTnVtYmVyID0gMywKCgoKICBrQ0dNb3VzZUV2ZW50RGVsdGFYID0gNCwK
CgoKICBrQ0dNb3VzZUV2ZW50RGVsdGFZID0gNSwKCgoKICBrQ0dNb3VzZUV2ZW50SW5zdGFudE1v
dXNlciA9IDYsCgoKCiAga0NHTW91c2VFdmVudFN1YnR5cGUgPSA3LAoKCgogIGtDR0tleWJvYXJk
RXZlbnRBdXRvcmVwZWF0ID0gOCwKCgoKICBrQ0dLZXlib2FyZEV2ZW50S2V5Y29kZSA9IDksCgoK
CiAga0NHS2V5Ym9hcmRFdmVudEtleWJvYXJkVHlwZSA9IDEwLAoKCgoKCiAga0NHU2Nyb2xsV2hl
ZWxFdmVudERlbHRhQXhpczEgPSAxMSwKCgoKCiAga0NHU2Nyb2xsV2hlZWxFdmVudERlbHRhQXhp
czIgPSAxMiwKCgogIGtDR1Njcm9sbFdoZWVsRXZlbnREZWx0YUF4aXMzID0gMTMsCiMgMTc5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0V2ZW50VHlwZXMuaCIg
MwogIGtDR1Njcm9sbFdoZWVsRXZlbnRGaXhlZFB0RGVsdGFBeGlzMSA9IDkzLAoKCgoKCgoKICBr
Q0dTY3JvbGxXaGVlbEV2ZW50Rml4ZWRQdERlbHRhQXhpczIgPSA5NCwKCgogIGtDR1Njcm9sbFdo
ZWVsRXZlbnRGaXhlZFB0RGVsdGFBeGlzMyA9IDk1LAoKCgoKCiAga0NHU2Nyb2xsV2hlZWxFdmVu
dFBvaW50RGVsdGFBeGlzMSA9IDk2LAoKCgoKICBrQ0dTY3JvbGxXaGVlbEV2ZW50UG9pbnREZWx0
YUF4aXMyID0gOTcsCgoKICBrQ0dTY3JvbGxXaGVlbEV2ZW50UG9pbnREZWx0YUF4aXMzID0gOTgs
CgoKCgogIGtDR1Njcm9sbFdoZWVsRXZlbnRJbnN0YW50TW91c2VyID0gMTQsCgoKCiAga0NHVGFi
bGV0RXZlbnRQb2ludFggPSAxNSwKCgoKICBrQ0dUYWJsZXRFdmVudFBvaW50WSA9IDE2LAoKCgog
IGtDR1RhYmxldEV2ZW50UG9pbnRaID0gMTcsCgoKCgogIGtDR1RhYmxldEV2ZW50UG9pbnRCdXR0
b25zID0gMTgsCgoKCgogIGtDR1RhYmxldEV2ZW50UG9pbnRQcmVzc3VyZSA9IDE5LAoKCgogIGtD
R1RhYmxldEV2ZW50VGlsdFggPSAyMCwKCgoKICBrQ0dUYWJsZXRFdmVudFRpbHRZID0gMjEsCgoK
ICBrQ0dUYWJsZXRFdmVudFJvdGF0aW9uID0gMjIsCgoKCgogIGtDR1RhYmxldEV2ZW50VGFuZ2Vu
dGlhbFByZXNzdXJlID0gMjMsCgoKCiAga0NHVGFibGV0RXZlbnREZXZpY2VJRCA9IDI0LAoKCiAg
a0NHVGFibGV0RXZlbnRWZW5kb3IxID0gMjUsCgoKICBrQ0dUYWJsZXRFdmVudFZlbmRvcjIgPSAy
NiwKCgogIGtDR1RhYmxldEV2ZW50VmVuZG9yMyA9IDI3LAoKCgogIGtDR1RhYmxldFByb3hpbWl0
eUV2ZW50VmVuZG9ySUQgPSAyOCwKCgoKICBrQ0dUYWJsZXRQcm94aW1pdHlFdmVudFRhYmxldElE
ID0gMjksCgoKCiAga0NHVGFibGV0UHJveGltaXR5RXZlbnRQb2ludGVySUQgPSAzMCwKCgoKICBr
Q0dUYWJsZXRQcm94aW1pdHlFdmVudERldmljZUlEID0gMzEsCgoKCiAga0NHVGFibGV0UHJveGlt
aXR5RXZlbnRTeXN0ZW1UYWJsZXRJRCA9IDMyLAoKCgogIGtDR1RhYmxldFByb3hpbWl0eUV2ZW50
VmVuZG9yUG9pbnRlclR5cGUgPSAzMywKCgoKICBrQ0dUYWJsZXRQcm94aW1pdHlFdmVudFZlbmRv
clBvaW50ZXJTZXJpYWxOdW1iZXIgPSAzNCwKCgoKICBrQ0dUYWJsZXRQcm94aW1pdHlFdmVudFZl
bmRvclVuaXF1ZUlEID0gMzUsCgoKCiAga0NHVGFibGV0UHJveGltaXR5RXZlbnRDYXBhYmlsaXR5
TWFzayA9IDM2LAoKCiAga0NHVGFibGV0UHJveGltaXR5RXZlbnRQb2ludGVyVHlwZSA9IDM3LAoK
CgoKICBrQ0dUYWJsZXRQcm94aW1pdHlFdmVudEVudGVyUHJveGltaXR5ID0gMzgsCgoKCiAga0NH
RXZlbnRUYXJnZXRQcm9jZXNzU2VyaWFsTnVtYmVyID0gMzksCgoKICBrQ0dFdmVudFRhcmdldFVu
aXhQcm9jZXNzSUQgPSA0MCwKCgogIGtDR0V2ZW50U291cmNlVW5peFByb2Nlc3NJRCA9IDQxLAoK
CgogIGtDR0V2ZW50U291cmNlVXNlckRhdGEgPSA0MiwKCgoKICBrQ0dFdmVudFNvdXJjZVVzZXJJ
RCA9IDQzLAoKCgogIGtDR0V2ZW50U291cmNlR3JvdXBJRCA9IDQ0LAoKCgogIGtDR0V2ZW50U291
cmNlU3RhdGVJRCA9IDQ1LAoKCgoKCiAga0NHU2Nyb2xsV2hlZWxFdmVudElzQ29udGludW91cyA9
IDg4Cn07CnR5cGVkZWYgdWludDMyX3QgQ0dFdmVudEZpZWxkOwoKCmVudW0gewogIGtDR0V2ZW50
TW91c2VTdWJ0eXBlRGVmYXVsdCA9IDAsCiAga0NHRXZlbnRNb3VzZVN1YnR5cGVUYWJsZXRQb2lu
dCA9IDEsCiAga0NHRXZlbnRNb3VzZVN1YnR5cGVUYWJsZXRQcm94aW1pdHkgPSAyCn07CnR5cGVk
ZWYgdWludDMyX3QgQ0dFdmVudE1vdXNlU3VidHlwZTsKCgplbnVtIHsKICBrQ0dISURFdmVudFRh
cCA9IDAsCiAga0NHU2Vzc2lvbkV2ZW50VGFwLAogIGtDR0Fubm90YXRlZFNlc3Npb25FdmVudFRh
cAp9Owp0eXBlZGVmIHVpbnQzMl90IENHRXZlbnRUYXBMb2NhdGlvbjsKCgoKZW51bSB7CiAga0NH
SGVhZEluc2VydEV2ZW50VGFwID0gMCwKICBrQ0dUYWlsQXBwZW5kRXZlbnRUYXAKfTsKdHlwZWRl
ZiB1aW50MzJfdCBDR0V2ZW50VGFwUGxhY2VtZW50OwoKCgplbnVtIHsKICBrQ0dFdmVudFRhcE9w
dGlvbkRlZmF1bHQgPSAweDAwMDAwMDAwLAogIGtDR0V2ZW50VGFwT3B0aW9uTGlzdGVuT25seSA9
IDB4MDAwMDAwMDEKfTsKdHlwZWRlZiB1aW50MzJfdCBDR0V2ZW50VGFwT3B0aW9uczsKCgoKdHlw
ZWRlZiB1aW50NjRfdCBDR0V2ZW50TWFzazsKCgojZGVmaW5lIENHRXZlbnRNYXNrQml0KGV2ZW50
VHlwZSkgKChDR0V2ZW50TWFzaykxIDw8IChldmVudFR5cGUpKQoKCiNkZWZpbmUga0NHRXZlbnRN
YXNrRm9yQWxsRXZlbnRzICh+KENHRXZlbnRNYXNrKTApCgoKCnR5cGVkZWYgc3RydWN0IF9fQ0dF
dmVudFRhcFByb3h5ICpDR0V2ZW50VGFwUHJveHk7CiMgNDAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFw
aGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0V2ZW50VHlwZXMuaCIgMwp0eXBlZGVmIENHRXZlbnRS
ZWYgKCpDR0V2ZW50VGFwQ2FsbEJhY2spKENHRXZlbnRUYXBQcm94eSBwcm94eSwKICBDR0V2ZW50
VHlwZSB0eXBlLCBDR0V2ZW50UmVmIGV2ZW50LCB2b2lkICp1c2VySW5mbyk7CgoKCgojZGVmaW5l
IGtDR05vdGlmeUV2ZW50VGFwQWRkZWQgImNvbS5hcHBsZS5jb3JlZ3JhcGhpY3MuZXZlbnRUYXBB
ZGRlZCIKI2RlZmluZSBrQ0dOb3RpZnlFdmVudFRhcFJlbW92ZWQgImNvbS5hcHBsZS5jb3JlZ3Jh
cGhpY3MuZXZlbnRUYXBSZW1vdmVkIgoKCgpzdHJ1Y3QgX19DR0V2ZW50VGFwSW5mb3JtYXRpb24g
ewogIHVpbnQzMl90IGV2ZW50VGFwSUQ7CiAgQ0dFdmVudFRhcExvY2F0aW9uIHRhcFBvaW50Owog
IENHRXZlbnRUYXBPcHRpb25zIG9wdGlvbnM7CiAgQ0dFdmVudE1hc2sgZXZlbnRzT2ZJbnRlcmVz
dDsKICBwaWRfdCB0YXBwaW5nUHJvY2VzczsKICBwaWRfdCBwcm9jZXNzQmVpbmdUYXBwZWQ7CiAg
Ym9vbCBlbmFibGVkOwogIGZsb2F0IG1pblVzZWNMYXRlbmN5OwogIGZsb2F0IGF2Z1VzZWNMYXRl
bmN5OwogIGZsb2F0IG1heFVzZWNMYXRlbmN5Owp9Owp0eXBlZGVmIHN0cnVjdCBfX0NHRXZlbnRU
YXBJbmZvcm1hdGlvbiBDR0V2ZW50VGFwSW5mb3JtYXRpb247CgoKdHlwZWRlZiBzdHJ1Y3QgX19D
R0V2ZW50U291cmNlICpDR0V2ZW50U291cmNlUmVmOwoKCmVudW0gewogIGtDR0V2ZW50U291cmNl
U3RhdGVQcml2YXRlID0gLTEsCiAga0NHRXZlbnRTb3VyY2VTdGF0ZUNvbWJpbmVkU2Vzc2lvblN0
YXRlID0gMCwKICBrQ0dFdmVudFNvdXJjZVN0YXRlSElEU3lzdGVtU3RhdGUgPSAxCn07CnR5cGVk
ZWYgdWludDMyX3QgQ0dFdmVudFNvdXJjZVN0YXRlSUQ7CgoKCnR5cGVkZWYgdWludDMyX3QgQ0dF
dmVudFNvdXJjZUtleWJvYXJkVHlwZTsKCgojZGVmaW5lIGtDR0FueUlucHV0RXZlbnRUeXBlICgo
Q0dFdmVudFR5cGUpKH4wKSkKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsv
SGVhZGVycy9DR0V2ZW50LmgiIDIgMwoKCgpleHRlcm4gIkMiIENGVHlwZUlEIENHRXZlbnRHZXRU
eXBlSUQodm9pZCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CmV4dGVybiAiQyIgQ0dFdmVudFJlZiBDR0V2ZW50Q3JlYXRlKENHRXZlbnRTb3VyY2VSZWYgc291
cmNlKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4g
IkMiIENGRGF0YVJlZiBDR0V2ZW50Q3JlYXRlRGF0YShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
CiAgQ0dFdmVudFJlZiBldmVudCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCgpleHRlcm4gIkMiIENHRXZlbnRSZWYgQ0dFdmVudENyZWF0ZUZyb21EYXRhKENGQWxs
b2NhdG9yUmVmIGFsbG9jYXRvciwKICBDRkRhdGFSZWYgZGF0YSkgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1l
d29yay9IZWFkZXJzL0NHRXZlbnQuaCIgMwpleHRlcm4gIkMiIENHRXZlbnRSZWYgQ0dFdmVudENy
ZWF0ZU1vdXNlRXZlbnQoQ0dFdmVudFNvdXJjZVJlZiBzb3VyY2UsCiAgQ0dFdmVudFR5cGUgbW91
c2VUeXBlLCBDR1BvaW50IG1vdXNlQ3Vyc29yUG9zaXRpb24sCiAgQ0dNb3VzZUJ1dHRvbiBtb3Vz
ZUJ1dHRvbikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNjYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRXZlbnQuaCIgMwpleHRl
cm4gIkMiIENHRXZlbnRSZWYgQ0dFdmVudENyZWF0ZUtleWJvYXJkRXZlbnQoQ0dFdmVudFNvdXJj
ZVJlZiBzb3VyY2UsCiAgQ0dLZXlDb2RlIHZpcnR1YWxLZXksIGJvb2wga2V5RG93bikKICBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA4NiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3Jl
R3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dFdmVudC5oIiAzCmV4dGVybiAiQyIgQ0dFdmVu
dFJlZiBDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudChDR0V2ZW50U291cmNlUmVmIHNvdXJj
ZSwKICBDR1Njcm9sbEV2ZW50VW5pdCB1bml0cywgdWludDMyX3Qgd2hlZWxDb3VudCwgaW50MzJf
dCB3aGVlbDEsCiAgLi4uKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKZXh0ZXJuICJDIiBDR0V2ZW50UmVmIENHRXZlbnRDcmVhdGVDb3B5KENHRXZlbnRSZWYgZXZl
bnQpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTA0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0V2ZW50LmgiIDMKZXh0ZXJu
ICJDIiBDR0V2ZW50U291cmNlUmVmIENHRXZlbnRDcmVhdGVTb3VyY2VGcm9tRXZlbnQoQ0dFdmVu
dFJlZiBldmVudCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
ZXh0ZXJuICJDIiB2b2lkIENHRXZlbnRTZXRTb3VyY2UoQ0dFdmVudFJlZiBldmVudCwgQ0dFdmVu
dFNvdXJjZVJlZiBzb3VyY2UpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCmV4dGVybiAiQyIgQ0dFdmVudFR5cGUgQ0dFdmVudEdldFR5cGUoQ0dFdmVudFJlZiBl
dmVudCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJu
ICJDIiB2b2lkIENHRXZlbnRTZXRUeXBlKENHRXZlbnRSZWYgZXZlbnQsIENHRXZlbnRUeXBlIHR5
cGUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAi
QyIgQ0dFdmVudFRpbWVzdGFtcCBDR0V2ZW50R2V0VGltZXN0YW1wKENHRXZlbnRSZWYgZXZlbnQp
CiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIg
dm9pZCBDR0V2ZW50U2V0VGltZXN0YW1wKENHRXZlbnRSZWYgZXZlbnQsCiAgQ0dFdmVudFRpbWVz
dGFtcCB0aW1lc3RhbXApIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgpleHRlcm4gIkMiIENHUG9pbnQgQ0dFdmVudEdldExvY2F0aW9uKENHRXZlbnRSZWYgZXZlbnQp
CiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMi
IENHUG9pbnQgQ0dFdmVudEdldFVuZmxpcHBlZExvY2F0aW9uKENHRXZlbnRSZWYgZXZlbnQpCiAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgdm9p
ZCBDR0V2ZW50U2V0TG9jYXRpb24oQ0dFdmVudFJlZiBldmVudCwgQ0dQb2ludCBsb2NhdGlvbikK
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBD
R0V2ZW50RmxhZ3MgQ0dFdmVudEdldEZsYWdzKENHRXZlbnRSZWYgZXZlbnQpCiAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgdm9pZCBDR0V2ZW50
U2V0RmxhZ3MoQ0dFdmVudFJlZiBldmVudCwgQ0dFdmVudEZsYWdzIGZsYWdzKQogIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgoKZXh0ZXJuICJDIiB2b2lkIENH
RXZlbnRLZXlib2FyZEdldFVuaWNvZGVTdHJpbmcoQ0dFdmVudFJlZiBldmVudCwKICBVbmlDaGFy
Q291bnQgbWF4U3RyaW5nTGVuZ3RoLCBVbmlDaGFyQ291bnQgKmFjdHVhbFN0cmluZ0xlbmd0aCwK
ICBVbmlDaGFyIHVuaWNvZGVTdHJpbmdbXSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CiMgMTc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVy
cy9DR0V2ZW50LmgiIDMKZXh0ZXJuICJDIiB2b2lkIENHRXZlbnRLZXlib2FyZFNldFVuaWNvZGVT
dHJpbmcoQ0dFdmVudFJlZiBldmVudCwKICBVbmlDaGFyQ291bnQgc3RyaW5nTGVuZ3RoLCBjb25z
dCBVbmlDaGFyIHVuaWNvZGVTdHJpbmdbXSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBpbnQ2NF90IENHRXZlbnRHZXRJbnRlZ2VyVmFsdWVG
aWVsZChDR0V2ZW50UmVmIGV2ZW50LAogIENHRXZlbnRGaWVsZCBmaWVsZCkgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGlj
cy5mcmFtZXdvcmsvSGVhZGVycy9DR0V2ZW50LmgiIDMKZXh0ZXJuICJDIiB2b2lkIENHRXZlbnRT
ZXRJbnRlZ2VyVmFsdWVGaWVsZChDR0V2ZW50UmVmIGV2ZW50LAogIENHRXZlbnRGaWVsZCBmaWVs
ZCwgaW50NjRfdCB2YWx1ZSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKCgoKCgoKCmV4dGVybiAiQyIgZG91YmxlIENHRXZlbnRHZXREb3VibGVWYWx1ZUZpZWxkKENH
RXZlbnRSZWYgZXZlbnQsCiAgQ0dFdmVudEZpZWxkIGZpZWxkKSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyMjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1l
d29yay9IZWFkZXJzL0NHRXZlbnQuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dFdmVudFNldERvdWJs
ZVZhbHVlRmllbGQoQ0dFdmVudFJlZiBldmVudCwKICBDR0V2ZW50RmllbGQgZmllbGQsIGRvdWJs
ZSB2YWx1ZSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyNjgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRXZlbnQuaCIgMwpl
eHRlcm4gIkMiIENGTWFjaFBvcnRSZWYgQ0dFdmVudFRhcENyZWF0ZShDR0V2ZW50VGFwTG9jYXRp
b24gdGFwLAogIENHRXZlbnRUYXBQbGFjZW1lbnQgcGxhY2UsIENHRXZlbnRUYXBPcHRpb25zIG9w
dGlvbnMsCiAgQ0dFdmVudE1hc2sgZXZlbnRzT2ZJbnRlcmVzdCwgQ0dFdmVudFRhcENhbGxCYWNr
IGNhbGxiYWNrLAogIHZvaWQgKnVzZXJJbmZvKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiAiQyIgQ0ZNYWNoUG9ydFJlZiBDR0V2ZW50VGFwQ3Jl
YXRlRm9yUFNOKHZvaWQgKnByb2Nlc3NTZXJpYWxOdW1iZXIsCiAgQ0dFdmVudFRhcFBsYWNlbWVu
dCBwbGFjZSwgQ0dFdmVudFRhcE9wdGlvbnMgb3B0aW9ucywKICBDR0V2ZW50TWFzayBldmVudHNP
ZkludGVyZXN0LCBDR0V2ZW50VGFwQ2FsbEJhY2sgY2FsbGJhY2ssCiAgdm9pZCAqdXNlckluZm8p
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDI5MSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dFdmVudC5oIiAzCmV4dGVybiAiQyIg
dm9pZCBDR0V2ZW50VGFwRW5hYmxlKENGTWFjaFBvcnRSZWYgdGFwLCBib29sIGVuYWJsZSkKICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBib29s
IENHRXZlbnRUYXBJc0VuYWJsZWQoQ0ZNYWNoUG9ydFJlZiB0YXApCiAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMzA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5m
cmFtZXdvcmsvSGVhZGVycy9DR0V2ZW50LmgiIDMKZXh0ZXJuICJDIiB2b2lkIENHRXZlbnRUYXBQ
b3N0RXZlbnQoQ0dFdmVudFRhcFByb3h5IHByb3h5LCBDR0V2ZW50UmVmIGV2ZW50KQogIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgoKZXh0ZXJuICJDIiB2b2lk
IENHRXZlbnRQb3N0KENHRXZlbnRUYXBMb2NhdGlvbiB0YXAsIENHRXZlbnRSZWYgZXZlbnQpCiAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMzMwICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0V2ZW50LmgiIDMKZXh0ZXJuICJDIiB2
b2lkIENHRXZlbnRQb3N0VG9QU04odm9pZCAqcHJvY2Vzc1NlcmlhbE51bWJlciwgQ0dFdmVudFJl
ZiBldmVudCkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAzNTAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRXZlbnQuaCIgMwpl
eHRlcm4gIkMiIENHRXJyb3IgQ0dHZXRFdmVudFRhcExpc3QodWludDMyX3QgbWF4TnVtYmVyT2ZU
YXBzLAogIENHRXZlbnRUYXBJbmZvcm1hdGlvbiB0YXBMaXN0W10sIHVpbnQzMl90ICpldmVudFRh
cENvdW50KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDQ0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlR3JhcGhpY3MuaCIg
MiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dFdmVu
dFNvdXJjZS5oIiAxIDMKCgoKCgojZGVmaW5lIENHRVZFTlRTT1VSQ0VfSF8gCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUmVtb3RlT3BlcmF0aW9uLmgi
IDEgMwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRXZl
bnRTb3VyY2UuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hl
YWRlcnMvQ0dFdmVudFR5cGVzLmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5m
cmFtZXdvcmsvSGVhZGVycy9DR0V2ZW50U291cmNlLmgiIDIgMwojIDQ0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
cmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0V2ZW50U291cmNlLmgiIDMKZXh0ZXJuICJD
IiBDRlR5cGVJRCBDR0V2ZW50U291cmNlR2V0VHlwZUlEKHZvaWQpCiAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dFdmVudFNvdXJjZVJlZiBD
R0V2ZW50U291cmNlQ3JlYXRlKENHRXZlbnRTb3VyY2VTdGF0ZUlEIHN0YXRlSUQpCiAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiAiQyIgQ0dFdmVudFNv
dXJjZUtleWJvYXJkVHlwZSBDR0V2ZW50U291cmNlR2V0S2V5Ym9hcmRUeXBlKAogIENHRXZlbnRT
b3VyY2VSZWYgc291cmNlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKZXh0ZXJuICJDIiB2b2lkIENHRXZlbnRTb3VyY2VTZXRLZXlib2FyZFR5cGUoQ0dFdmVudFNv
dXJjZVJlZiBzb3VyY2UsCiAgQ0dFdmVudFNvdXJjZUtleWJvYXJkVHlwZSBrZXlib2FyZFR5cGUp
CiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNzEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRXZlbnRTb3VyY2UuaCIgMwpleHRl
cm4gIkMiIGRvdWJsZSBDR0V2ZW50U291cmNlR2V0UGl4ZWxzUGVyTGluZShDR0V2ZW50U291cmNl
UmVmIHNvdXJjZSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA4
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dFdmVudFNvdXJj
ZS5oIiAzCmV4dGVybiAiQyIgdm9pZCBDR0V2ZW50U291cmNlU2V0UGl4ZWxzUGVyTGluZShDR0V2
ZW50U291cmNlUmVmIHNvdXJjZSwKICBkb3VibGUgcGl4ZWxzUGVyTGluZSkgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgOTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNz
LmZyYW1ld29yay9IZWFkZXJzL0NHRXZlbnRTb3VyY2UuaCIgMwpleHRlcm4gIkMiIENHRXZlbnRT
b3VyY2VTdGF0ZUlEIENHRXZlbnRTb3VyY2VHZXRTb3VyY2VTdGF0ZUlEKENHRXZlbnRTb3VyY2VS
ZWYKICBzb3VyY2UpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoK
ZXh0ZXJuICJDIiBib29sIENHRXZlbnRTb3VyY2VCdXR0b25TdGF0ZShDR0V2ZW50U291cmNlU3Rh
dGVJRCBzdGF0ZUlELAogIENHTW91c2VCdXR0b24gYnV0dG9uKSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgYm9vbCBDR0V2ZW50U291cmNlS2V5
U3RhdGUoQ0dFdmVudFNvdXJjZVN0YXRlSUQgc3RhdGVJRCwKICBDR0tleUNvZGUga2V5KSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgQ0dFdmVu
dEZsYWdzIENHRXZlbnRTb3VyY2VGbGFnc1N0YXRlKENHRXZlbnRTb3VyY2VTdGF0ZUlEIHN0YXRl
SUQpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCmV4dGVy
biAiQyIgQ0ZUaW1lSW50ZXJ2YWwgQ0dFdmVudFNvdXJjZVNlY29uZHNTaW5jZUxhc3RFdmVudFR5
cGUoCiAgQ0dFdmVudFNvdXJjZVN0YXRlSUQgc3RhdGVJRCwgQ0dFdmVudFR5cGUgZXZlbnRUeXBl
KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDEzOSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dFdmVudFNvdXJjZS5oIiAzCmV4
dGVybiAiQyIgdWludDMyX3QgQ0dFdmVudFNvdXJjZUNvdW50ZXJGb3JFdmVudFR5cGUoQ0dFdmVu
dFNvdXJjZVN0YXRlSUQKICBzdGF0ZUlELCBDR0V2ZW50VHlwZSBldmVudFR5cGUpCiAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTUwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVH
cmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0V2ZW50U291cmNlLmgiIDMKZXh0ZXJuICJDIiB2
b2lkIENHRXZlbnRTb3VyY2VTZXRVc2VyRGF0YShDR0V2ZW50U291cmNlUmVmIHNvdXJjZSwKICBp
bnQ2NF90IHVzZXJEYXRhKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
IyAxNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRXZlbnRT
b3VyY2UuaCIgMwpleHRlcm4gIkMiIGludDY0X3QgQ0dFdmVudFNvdXJjZUdldFVzZXJEYXRhKENH
RXZlbnRTb3VyY2VSZWYgc291cmNlKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwojIDE4MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMv
Q0dFdmVudFNvdXJjZS5oIiAzCmV4dGVybiAiQyIgdm9pZCBDR0V2ZW50U291cmNlU2V0TG9jYWxF
dmVudHNGaWx0ZXJEdXJpbmdTdXBwcmVzc2lvblN0YXRlKAogIENHRXZlbnRTb3VyY2VSZWYgc291
cmNlLCBDR0V2ZW50RmlsdGVyTWFzayBmaWx0ZXIsCiAgQ0dFdmVudFN1cHByZXNzaW9uU3RhdGUg
c3RhdGUpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjAwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0V2ZW50U291cmNlLmgi
IDMKZXh0ZXJuICJDIiBDR0V2ZW50RmlsdGVyTWFzawogIENHRXZlbnRTb3VyY2VHZXRMb2NhbEV2
ZW50c0ZpbHRlckR1cmluZ1N1cHByZXNzaW9uU3RhdGUoQ0dFdmVudFNvdXJjZVJlZgogICAgc291
cmNlLCBDR0V2ZW50U3VwcHJlc3Npb25TdGF0ZSBzdGF0ZSkKICBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1l
d29yay9IZWFkZXJzL0NHRXZlbnRTb3VyY2UuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dFdmVudFNv
dXJjZVNldExvY2FsRXZlbnRzU3VwcHJlc3Npb25JbnRlcnZhbChDR0V2ZW50U291cmNlUmVmCiAg
c291cmNlLCBDRlRpbWVJbnRlcnZhbCBzZWNvbmRzKQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBDRlRpbWVJbnRlcnZhbCBDR0V2ZW50U291
cmNlR2V0TG9jYWxFdmVudHNTdXBwcmVzc2lvbkludGVydmFsKAogIENHRXZlbnRTb3VyY2VSZWYg
c291cmNlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA0NSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBoaWNzLmgiIDIg
MwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRXZlbnRU
eXBlcy5oIiAxIDMKIyA0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRl
cnMvQ29yZUdyYXBoaWNzLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1l
d29yay9IZWFkZXJzL0NHR0xDb250ZXh0LmgiIDEgMwoKCgoKCiNkZWZpbmUgQ0dHTENPTlRFWFRf
SF8gCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR0Nv
bnRleHQuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFk
ZXJzL0NHR0xDb250ZXh0LmgiIDIgMwojIDIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFt
ZXdvcmsvSGVhZGVycy9DR0dMQ29udGV4dC5oIiAzCmV4dGVybiAiQyIgQ0dDb250ZXh0UmVmIENH
R0xDb250ZXh0Q3JlYXRlKHZvaWQgKmdsQ29udGV4dCwgQ0dTaXplIHNpemUsCiAgICBDR0NvbG9y
U3BhY2VSZWYgY29sb3JzcGFjZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCx2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hl
YWRlcnMvQ0dHTENvbnRleHQuaCIgMwpleHRlcm4gIkMiIHZvaWQgQ0dHTENvbnRleHRVcGRhdGVW
aWV3cG9ydFNpemUoQ0dDb250ZXh0UmVmIGMsIENHU2l6ZSBzaXplKQogICAgX19hdHRyaWJ1dGVf
XygoZGVwcmVjYXRlZCx2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA0NyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBoaWNzLmgiIDIgMwojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHUFNDb252ZXJ0ZXIuaCIg
MSAzCgoKCgoKI2RlZmluZSBDR1BTQ09OVkVSVEVSX0hfIAoKdHlwZWRlZiBzdHJ1Y3QgQ0dQU0Nv
bnZlcnRlciAqQ0dQU0NvbnZlcnRlclJlZjsKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNz
LmZyYW1ld29yay9IZWFkZXJzL0NHRGF0YUNvbnN1bWVyLmgiIDEgMwojIDEyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1BTQ29udmVydGVyLmgiIDIgMwojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHRGF0YVByb3ZpZGVy
LmgiIDEgMwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9D
R1BTQ29udmVydGVyLmgiIDIgMwojIDQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdv
cmsvSGVhZGVycy9DR1BTQ29udmVydGVyLmgiIDMKdHlwZWRlZiB2b2lkICgqQ0dQU0NvbnZlcnRl
ckJlZ2luRG9jdW1lbnRDYWxsYmFjaykodm9pZCAqaW5mbyk7Cgp0eXBlZGVmIHZvaWQgKCpDR1BT
Q29udmVydGVyRW5kRG9jdW1lbnRDYWxsYmFjaykodm9pZCAqaW5mbywgYm9vbCBzdWNjZXNzKTsK
CnR5cGVkZWYgdm9pZCAoKkNHUFNDb252ZXJ0ZXJCZWdpblBhZ2VDYWxsYmFjaykodm9pZCAqaW5m
bywgc2l6ZV90IHBhZ2VOdW1iZXIsCiAgICBDRkRpY3Rpb25hcnlSZWYgcGFnZUluZm8pOwoKdHlw
ZWRlZiB2b2lkICgqQ0dQU0NvbnZlcnRlckVuZFBhZ2VDYWxsYmFjaykodm9pZCAqaW5mbywgc2l6
ZV90IHBhZ2VOdW1iZXIsCiAgICBDRkRpY3Rpb25hcnlSZWYgcGFnZUluZm8pOwoKdHlwZWRlZiB2
b2lkICgqQ0dQU0NvbnZlcnRlclByb2dyZXNzQ2FsbGJhY2spKHZvaWQgKmluZm8pOwoKdHlwZWRl
ZiB2b2lkICgqQ0dQU0NvbnZlcnRlck1lc3NhZ2VDYWxsYmFjaykodm9pZCAqaW5mbywgQ0ZTdHJp
bmdSZWYgbWVzc2FnZSk7Cgp0eXBlZGVmIHZvaWQgKCpDR1BTQ29udmVydGVyUmVsZWFzZUluZm9D
YWxsYmFjaykodm9pZCAqaW5mbyk7CgpzdHJ1Y3QgQ0dQU0NvbnZlcnRlckNhbGxiYWNrcyB7CiAg
ICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsKICAgIENHUFNDb252ZXJ0ZXJCZWdpbkRvY3VtZW50Q2Fs
bGJhY2sgYmVnaW5Eb2N1bWVudDsKICAgIENHUFNDb252ZXJ0ZXJFbmREb2N1bWVudENhbGxiYWNr
IGVuZERvY3VtZW50OwogICAgQ0dQU0NvbnZlcnRlckJlZ2luUGFnZUNhbGxiYWNrIGJlZ2luUGFn
ZTsKICAgIENHUFNDb252ZXJ0ZXJFbmRQYWdlQ2FsbGJhY2sgZW5kUGFnZTsKICAgIENHUFNDb252
ZXJ0ZXJQcm9ncmVzc0NhbGxiYWNrIG5vdGVQcm9ncmVzczsKICAgIENHUFNDb252ZXJ0ZXJNZXNz
YWdlQ2FsbGJhY2sgbm90ZU1lc3NhZ2U7CiAgICBDR1BTQ29udmVydGVyUmVsZWFzZUluZm9DYWxs
YmFjayByZWxlYXNlSW5mbzsKfTsKdHlwZWRlZiBzdHJ1Y3QgQ0dQU0NvbnZlcnRlckNhbGxiYWNr
cyBDR1BTQ29udmVydGVyQ2FsbGJhY2tzOwoKCgoKZXh0ZXJuICJDIiBDR1BTQ29udmVydGVyUmVm
IENHUFNDb252ZXJ0ZXJDcmVhdGUodm9pZCAqaW5mbywKICAgIGNvbnN0IENHUFNDb252ZXJ0ZXJD
YWxsYmFja3MgKmNhbGxiYWNrcywgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpCiAgICBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIGJvb2wgQ0dQ
U0NvbnZlcnRlckNvbnZlcnQoQ0dQU0NvbnZlcnRlclJlZiBjb252ZXJ0ZXIsCiAgICBDR0RhdGFQ
cm92aWRlclJlZiBwcm92aWRlciwgQ0dEYXRhQ29uc3VtZXJSZWYgY29uc3VtZXIsCiAgICBDRkRp
Y3Rpb25hcnlSZWYgb3B0aW9ucykgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCgpleHRlcm4gIkMiIGJvb2wgQ0dQU0NvbnZlcnRlckFib3J0KENHUFNDb252ZXJ0ZXJS
ZWYgY29udmVydGVyKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CgoKCmV4dGVybiAiQyIgYm9vbCBDR1BTQ29udmVydGVySXNDb252ZXJ0aW5nKENHUFNDb252ZXJ0
ZXJSZWYgY29udmVydGVyKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CgoKCmV4dGVybiAiQyIgQ0ZUeXBlSUQgQ0dQU0NvbnZlcnRlckdldFR5cGVJRCh2b2lkKQog
ICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgNDggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVHcmFwaGljcy5oIiAyIDMKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1JlbW90ZU9wZXJh
dGlvbi5oIiAxIDMKIyA0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRl
cnMvQ29yZUdyYXBoaWNzLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1l
d29yay9IZWFkZXJzL0NHU2Vzc2lvbi5oIiAxIDMKCgoKCgojZGVmaW5lIENHU0VTU0lPTl9IXyAK
IyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dTZXNzaW9u
LmgiIDMKZXh0ZXJuICJDIiBDRkRpY3Rpb25hcnlSZWYgQ0dTZXNzaW9uQ29weUN1cnJlbnREaWN0
aW9uYXJ5KHZvaWQpCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CgoKCiNkZWZpbmUga0NHU2Vzc2lvblVzZXJJREtleSBDRlNUUigia0NHU1Nlc3Npb25Vc2VySURL
ZXkiKQoKCgoKI2RlZmluZSBrQ0dTZXNzaW9uVXNlck5hbWVLZXkgQ0ZTVFIoImtDR1NTZXNzaW9u
VXNlck5hbWVLZXkiKQoKCgoKI2RlZmluZSBrQ0dTZXNzaW9uQ29uc29sZVNldEtleSBDRlNUUigi
a0NHU1Nlc3Npb25Db25zb2xlU2V0S2V5IikKCgoKCiNkZWZpbmUga0NHU2Vzc2lvbk9uQ29uc29s
ZUtleSBDRlNUUigia0NHU1Nlc3Npb25PbkNvbnNvbGVLZXkiKQoKCgoKI2RlZmluZSBrQ0dTZXNz
aW9uTG9naW5Eb25lS2V5IENGU1RSKCJrQ0dTZXNzaW9uTG9naW5Eb25lS2V5IikKCgoKCiNkZWZp
bmUga0NHTm90aWZ5R1VJQ29uc29sZVNlc3Npb25DaGFuZ2VkICJjb20uYXBwbGUuY29yZWdyYXBo
aWNzLkdVSUNvbnNvbGVTZXNzaW9uQ2hhbmdlZCIKCgoKCgojZGVmaW5lIGtDR05vdGlmeUdVSVNl
c3Npb25Vc2VyQ2hhbmdlZCAiY29tLmFwcGxlLmNvcmVncmFwaGljcy5HVUlTZXNzaW9uVXNlckNo
YW5nZWQiCiMgNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0Nv
cmVHcmFwaGljcy5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsv
SGVhZGVycy9DR1dpbmRvdy5oIiAxIDMKCgoKCgojZGVmaW5lIENHV0lORE9XX0hfIAoKCgoKCgp0
eXBlZGVmIHVpbnQzMl90IENHV2luZG93SUQ7CgoKdHlwZWRlZiB1aW50MzJfdCBDR1dpbmRvd0xp
c3RPcHRpb247CnR5cGVkZWYgdWludDMyX3QgQ0dXaW5kb3dJbWFnZU9wdGlvbjsKCgplbnVtIHsK
ICBrQ0dXaW5kb3dTaGFyaW5nTm9uZSA9IDAsCiAga0NHV2luZG93U2hhcmluZ1JlYWRPbmx5ID0g
MSwKICBrQ0dXaW5kb3dTaGFyaW5nUmVhZFdyaXRlID0gMgp9Owp0eXBlZGVmIHVpbnQzMl90IENH
V2luZG93U2hhcmluZ1R5cGU7CgoKZW51bSB7CiAga0NHQmFja2luZ1N0b3JlUmV0YWluZWQgPSAw
LAogIGtDR0JhY2tpbmdTdG9yZU5vbnJldGFpbmVkID0gMSwKICBrQ0dCYWNraW5nU3RvcmVCdWZm
ZXJlZCA9IDIKfTsKdHlwZWRlZiB1aW50MzJfdCBDR1dpbmRvd0JhY2tpbmdUeXBlOwoKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dJbWFnZS5oIiAxIDMK
IyAzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dXaW5kb3cu
aCIgMiAzCgoKCgoKI2RlZmluZSBrQ0dOdWxsV2luZG93SUQgKChDR1dpbmRvd0lEKTApCgoKCgoK
CgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR1dpbmRvd051bWJlcgogIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZT
dHJpbmdSZWYga0NHV2luZG93U3RvcmVUeXBlCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR1dpbmRvd0xh
eWVyCiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCmV4dGVy
biAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHV2luZG93Qm91bmRzCiAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0dXaW5kb3dTaGFyaW5nU3RhdGUKICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR1dpbmRvd0FscGhh
CiAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gIkMi
IGNvbnN0IENGU3RyaW5nUmVmIGtDR1dpbmRvd093bmVyUElECiAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0dXaW5kb3dNZW1vcnlVc2FnZQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwoKCgoKCgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR1dpbmRvd1dvcmtzcGFj
ZQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJD
IiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dXaW5kb3dPd25lck5hbWUKICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYg
a0NHV2luZG93TmFtZQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHV2luZG93SXNPbnNjcmVlbgogIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgY29u
c3QgQ0ZTdHJpbmdSZWYga0NHV2luZG93QmFja2luZ0xvY2F0aW9uVmlkZW9NZW1vcnkKICBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZW51bSB7CgoKCiAga0NHV2lu
ZG93TGlzdE9wdGlvbkFsbCA9IDAsCgoKCiAga0NHV2luZG93TGlzdE9wdGlvbk9uU2NyZWVuT25s
eSA9ICgxIDw8IDApLAoKCgogIGtDR1dpbmRvd0xpc3RPcHRpb25PblNjcmVlbkFib3ZlV2luZG93
ID0gKDEgPDwgMSksCgoKCiAga0NHV2luZG93TGlzdE9wdGlvbk9uU2NyZWVuQmVsb3dXaW5kb3cg
PSAoMSA8PCAyKSwKCgoKICBrQ0dXaW5kb3dMaXN0T3B0aW9uSW5jbHVkaW5nV2luZG93ID0gKDEg
PDwgMyksCgoKICBrQ0dXaW5kb3dMaXN0RXhjbHVkZURlc2t0b3BFbGVtZW50cyA9ICgxIDw8IDQp
Cn07CiMgMTcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1dp
bmRvdy5oIiAzCmV4dGVybiAiQyIgQ0ZBcnJheVJlZiBDR1dpbmRvd0xpc3RDb3B5V2luZG93SW5m
byhDR1dpbmRvd0xpc3RPcHRpb24gb3B0aW9uLAogIENHV2luZG93SUQgcmVsYXRpdmVUb1dpbmRv
dykgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCgpleHRlcm4g
IkMiIENGQXJyYXlSZWYgQ0dXaW5kb3dMaXN0Q3JlYXRlKENHV2luZG93TGlzdE9wdGlvbiBvcHRp
b24sCiAgQ0dXaW5kb3dJRCByZWxhdGl2ZVRvV2luZG93KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKIyAxODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29y
ay9IZWFkZXJzL0NHV2luZG93LmgiIDMKZXh0ZXJuICJDIiBDRkFycmF5UmVmIENHV2luZG93TGlz
dENyZWF0ZURlc2NyaXB0aW9uRnJvbUFycmF5KENGQXJyYXlSZWYKICB3aW5kb3dBcnJheSkgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmVudW0gewoKCgogIGtDR1dp
bmRvd0ltYWdlRGVmYXVsdCA9IDAsCgoKCiAga0NHV2luZG93SW1hZ2VCb3VuZHNJZ25vcmVGcmFt
aW5nID0gKDEgPDwgMCksCgoKICBrQ0dXaW5kb3dJbWFnZVNob3VsZEJlT3BhcXVlID0gKDEgPDwg
MSksCgoKICBrQ0dXaW5kb3dJbWFnZU9ubHlTaGFkb3dzID0gKDEgPDwgMikKfTsKIyAyNTUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHV2luZG93LmgiIDMKZXh0
ZXJuICJDIiBDR0ltYWdlUmVmIENHV2luZG93TGlzdENyZWF0ZUltYWdlKENHUmVjdCBzY3JlZW5C
b3VuZHMsCiAgQ0dXaW5kb3dMaXN0T3B0aW9uIGxpc3RPcHRpb24sIENHV2luZG93SUQgd2luZG93
SUQsCiAgQ0dXaW5kb3dJbWFnZU9wdGlvbiBpbWFnZU9wdGlvbikKICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gIkMiIENHSW1hZ2VSZWYgQ0dXaW5k
b3dMaXN0Q3JlYXRlSW1hZ2VGcm9tQXJyYXkoQ0dSZWN0IHNjcmVlbkJvdW5kcywKICBDRkFycmF5
UmVmIHdpbmRvd0FycmF5LCBDR1dpbmRvd0ltYWdlT3B0aW9uIGltYWdlT3B0aW9uKQogIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCiNkZWZpbmUga0NHV2luZG93SURD
Rk51bWJlclR5cGUga0NGTnVtYmVyU0ludDMyVHlwZQoKCiNkZWZpbmUga0NHV2luZG93U2hhcmlu
Z0NGTnVtYmVyVHlwZSBrQ0ZOdW1iZXJTSW50MzJUeXBlCgoKI2RlZmluZSBrQ0dXaW5kb3dCYWNr
aW5nQ0ZOdW1iZXJUeXBlIGtDRk51bWJlclNJbnQzMlR5cGUKIyA1MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3Jl
R3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUdyYXBoaWNzLmgiIDIgMwojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHV2luZG93TGV2ZWwuaCIgMSAz
CgoKCgoKI2RlZmluZSBDR1dJTkRPV0xFVkVMX0hfIAojIDIxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFw
aGljcy5mcmFtZXdvcmsvSGVhZGVycy9DR1dpbmRvd0xldmVsLmgiIDMKdHlwZWRlZiBpbnQzMl90
IENHV2luZG93TGV2ZWw7CnR5cGVkZWYgaW50MzJfdCBDR1dpbmRvd0xldmVsS2V5OwoKZW51bSB7
CiAga0NHQmFzZVdpbmRvd0xldmVsS2V5ID0gMCwKICBrQ0dNaW5pbXVtV2luZG93TGV2ZWxLZXks
CiAga0NHRGVza3RvcFdpbmRvd0xldmVsS2V5LAogIGtDR0JhY2tzdG9wTWVudUxldmVsS2V5LAog
IGtDR05vcm1hbFdpbmRvd0xldmVsS2V5LAogIGtDR0Zsb2F0aW5nV2luZG93TGV2ZWxLZXksCiAg
a0NHVG9ybk9mZk1lbnVXaW5kb3dMZXZlbEtleSwKICBrQ0dEb2NrV2luZG93TGV2ZWxLZXksCiAg
a0NHTWFpbk1lbnVXaW5kb3dMZXZlbEtleSwKICBrQ0dTdGF0dXNXaW5kb3dMZXZlbEtleSwKICBr
Q0dNb2RhbFBhbmVsV2luZG93TGV2ZWxLZXksCiAga0NHUG9wVXBNZW51V2luZG93TGV2ZWxLZXks
CiAga0NHRHJhZ2dpbmdXaW5kb3dMZXZlbEtleSwKICBrQ0dTY3JlZW5TYXZlcldpbmRvd0xldmVs
S2V5LAogIGtDR01heGltdW1XaW5kb3dMZXZlbEtleSwKICBrQ0dPdmVybGF5V2luZG93TGV2ZWxL
ZXksCiAga0NHSGVscFdpbmRvd0xldmVsS2V5LAogIGtDR1V0aWxpdHlXaW5kb3dMZXZlbEtleSwK
ICBrQ0dEZXNrdG9wSWNvbldpbmRvd0xldmVsS2V5LAogIGtDR0N1cnNvcldpbmRvd0xldmVsS2V5
LAogIGtDR0Fzc2lzdGl2ZVRlY2hIaWdoV2luZG93TGV2ZWxLZXksCiAga0NHTnVtYmVyT2ZXaW5k
b3dMZXZlbEtleXMKfTsKCgoKCmV4dGVybiAiQyIgQ0dXaW5kb3dMZXZlbCBDR1dpbmRvd0xldmVs
Rm9yS2V5KENHV2luZG93TGV2ZWxLZXkga2V5KQogIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwoKCiNkZWZpbmUga0NHTnVtUmVzZXJ2ZWRXaW5kb3dMZXZlbHMgKDE2KQoK
CiNkZWZpbmUga0NHQmFzZVdpbmRvd0xldmVsIENHV2luZG93TGV2ZWxGb3JLZXkoa0NHQmFzZVdp
bmRvd0xldmVsS2V5KQoKI2RlZmluZSBrQ0dNaW5pbXVtV2luZG93TGV2ZWwgQ0dXaW5kb3dMZXZl
bEZvcktleShrQ0dNaW5pbXVtV2luZG93TGV2ZWxLZXkpCgojZGVmaW5lIGtDR0Rlc2t0b3BXaW5k
b3dMZXZlbCBDR1dpbmRvd0xldmVsRm9yS2V5KGtDR0Rlc2t0b3BXaW5kb3dMZXZlbEtleSkKCiNk
ZWZpbmUga0NHRGVza3RvcEljb25XaW5kb3dMZXZlbCBDR1dpbmRvd0xldmVsRm9yS2V5KGtDR0Rl
c2t0b3BJY29uV2luZG93TGV2ZWxLZXkpCgojZGVmaW5lIGtDR0JhY2tzdG9wTWVudUxldmVsIENH
V2luZG93TGV2ZWxGb3JLZXkoa0NHQmFja3N0b3BNZW51TGV2ZWxLZXkpCgojZGVmaW5lIGtDR05v
cm1hbFdpbmRvd0xldmVsIENHV2luZG93TGV2ZWxGb3JLZXkoa0NHTm9ybWFsV2luZG93TGV2ZWxL
ZXkpCgojZGVmaW5lIGtDR0Zsb2F0aW5nV2luZG93TGV2ZWwgQ0dXaW5kb3dMZXZlbEZvcktleShr
Q0dGbG9hdGluZ1dpbmRvd0xldmVsS2V5KQoKI2RlZmluZSBrQ0dUb3JuT2ZmTWVudVdpbmRvd0xl
dmVsIENHV2luZG93TGV2ZWxGb3JLZXkoa0NHVG9ybk9mZk1lbnVXaW5kb3dMZXZlbEtleSkKCiNk
ZWZpbmUga0NHRG9ja1dpbmRvd0xldmVsIENHV2luZG93TGV2ZWxGb3JLZXkoa0NHRG9ja1dpbmRv
d0xldmVsS2V5KQoKI2RlZmluZSBrQ0dNYWluTWVudVdpbmRvd0xldmVsIENHV2luZG93TGV2ZWxG
b3JLZXkoa0NHTWFpbk1lbnVXaW5kb3dMZXZlbEtleSkKCiNkZWZpbmUga0NHU3RhdHVzV2luZG93
TGV2ZWwgQ0dXaW5kb3dMZXZlbEZvcktleShrQ0dTdGF0dXNXaW5kb3dMZXZlbEtleSkKCiNkZWZp
bmUga0NHTW9kYWxQYW5lbFdpbmRvd0xldmVsIENHV2luZG93TGV2ZWxGb3JLZXkoa0NHTW9kYWxQ
YW5lbFdpbmRvd0xldmVsS2V5KQoKI2RlZmluZSBrQ0dQb3BVcE1lbnVXaW5kb3dMZXZlbCBDR1dp
bmRvd0xldmVsRm9yS2V5KGtDR1BvcFVwTWVudVdpbmRvd0xldmVsS2V5KQoKI2RlZmluZSBrQ0dE
cmFnZ2luZ1dpbmRvd0xldmVsIENHV2luZG93TGV2ZWxGb3JLZXkoa0NHRHJhZ2dpbmdXaW5kb3dM
ZXZlbEtleSkKCiNkZWZpbmUga0NHU2NyZWVuU2F2ZXJXaW5kb3dMZXZlbCBDR1dpbmRvd0xldmVs
Rm9yS2V5KGtDR1NjcmVlblNhdmVyV2luZG93TGV2ZWxLZXkpCgojZGVmaW5lIGtDR0N1cnNvcldp
bmRvd0xldmVsIENHV2luZG93TGV2ZWxGb3JLZXkoa0NHQ3Vyc29yV2luZG93TGV2ZWxLZXkpCgoj
ZGVmaW5lIGtDR092ZXJsYXlXaW5kb3dMZXZlbCBDR1dpbmRvd0xldmVsRm9yS2V5KGtDR092ZXJs
YXlXaW5kb3dMZXZlbEtleSkKCiNkZWZpbmUga0NHSGVscFdpbmRvd0xldmVsIENHV2luZG93TGV2
ZWxGb3JLZXkoa0NHSGVscFdpbmRvd0xldmVsS2V5KQoKI2RlZmluZSBrQ0dVdGlsaXR5V2luZG93
TGV2ZWwgQ0dXaW5kb3dMZXZlbEZvcktleShrQ0dVdGlsaXR5V2luZG93TGV2ZWxLZXkpCgojZGVm
aW5lIGtDR0Fzc2lzdGl2ZVRlY2hIaWdoV2luZG93TGV2ZWwgQ0dXaW5kb3dMZXZlbEZvcktleShr
Q0dBc3Npc3RpdmVUZWNoSGlnaFdpbmRvd0xldmVsS2V5KQoKI2RlZmluZSBrQ0dNYXhpbXVtV2lu
ZG93TGV2ZWwgQ0dXaW5kb3dMZXZlbEZvcktleShrQ0dNYXhpbXVtV2luZG93TGV2ZWxLZXkpCiMg
NTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVHcmFwaGlj
cy5oIiAyIDMKIyAyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RRC5oIiAyIDMK
CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNE
ZXByZWNhdGVkLmgiIDEgMwoKCgoKCgoKI2RlZmluZSBfX0NPTE9SU1lOQ0RFUFJFQ0FURURfXyAK
CgojIDEgIi91c3IvbGliL2djYy9pNjg2LWFwcGxlLWRhcndpbjEwLzQuMi4xL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMyA0CiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJz
L0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMiAzCgoKCgoKCiAgICAgICAKCgpleHRlcm4gIkMiIHsK
IyAzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVw
cmVjYXRlZC5oIiAzCiNkZWZpbmUgQ1NFWFRFUk4gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSkgZXh0ZXJuCiMgNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9I
ZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwojZGVmaW5lIENTRVhQT1JUIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCgoKCgp9CiMgNjAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29s
b3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwpleHRlcm4g
IkMiIHsKCgogICAgICAgCgojcHJhZ21hIHBhY2socHVzaCwgMikKCgplbnVtIHsKICBjbUlDQ1By
b2ZpbGVWZXJzaW9uNCA9IDB4MDQwMDAwMDAsCiAgY21JQ0NQcm9maWxlVmVyc2lvbjIgPSAweDAy
MDAwMDAwLAogIGNtSUNDUHJvZmlsZVZlcnNpb24yMSA9IDB4MDIxMDAwMDAsCiAgY21DUzJQcm9m
aWxlVmVyc2lvbiA9IGNtSUNDUHJvZmlsZVZlcnNpb24yLAogIGNtQ1MxUHJvZmlsZVZlcnNpb24g
PSAweDAwMDAwMTAwCn07CgoKZW51bSB7CiAgY21Qcm9maWxlTWFqb3JWZXJzaW9uTWFzayA9IChp
bnQpMHhGRjAwMDAwMCwKICBjbUN1cnJlbnRQcm9maWxlTWFqb3JWZXJzaW9uID0gMHgwMjAwMDAw
MAp9OwoKCmVudW0gewogIGNtTWFnaWNOdW1iZXIgPSAnYWNzcCcKfTsKCgoKCgoKZW51bSB7CiAg
Y21JQ0NSZXNlcnZlZEZsYWdzTWFzayA9IDB4MDAwMEZGRkYsCiAgY21FbWJlZGRlZE1hc2sgPSAw
eDAwMDAwMDAxLAogIGNtRW1iZWRkZWRVc2VNYXNrID0gMHgwMDAwMDAwMiwKICBjbUJsYWNrUG9p
bnRDb21wZW5zYXRpb25NYXNrID0gMHgwMDAwMDAwNCwKICBjbUNNU1Jlc2VydmVkRmxhZ3NNYXNr
ID0gKGludCkweEZGRkYwMDAwLAogIGNtUXVhbGl0eU1hc2sgPSAweDAwMDMwMDAwLAogIGNtSW50
ZXJwb2xhdGlvbk1hc2sgPSAweDAwMDQwMDAwLAogIGNtR2FtdXRDaGVja2luZ01hc2sgPSAweDAw
MDgwMDAwCn07CgoKZW51bSB7CiAgY21FbWJlZGRlZFByb2ZpbGUgPSAwLAogIGNtRW1iZWRkZWRV
c2UgPSAxCn07CgoKZW51bSB7CiAgY21Ob3JtYWxNb2RlID0gMCwKICBjbURyYWZ0TW9kZSA9IDEs
CiAgY21CZXN0TW9kZSA9IDIKfTsKCgplbnVtIHsKICBjbUJsYWNrUG9pbnRDb21wZW5zYXRpb24g
PSAxCn07CgoKCgoKCmVudW0gewogIGNtUmVmbGVjdGl2ZVRyYW5zcGFyZW50TWFzayA9IDB4MDAw
MDAwMDEsCiAgY21HbG9zc3lNYXR0ZU1hc2sgPSAweDAwMDAwMDAyCn07CgoKZW51bSB7CiAgY21S
ZWZsZWN0aXZlID0gMCwKICBjbUdsb3NzeSA9IDEKfTsKCgoKZW51bSB7CiAgY21QZXJjZXB0dWFs
ID0gMCwKICBjbVJlbGF0aXZlQ29sb3JpbWV0cmljID0gMSwKICBjbVNhdHVyYXRpb24gPSAyLAog
IGNtQWJzb2x1dGVDb2xvcmltZXRyaWMgPSAzCn07CgoKCgplbnVtIHsKICBjbUFzY2lpRGF0YSA9
IDAsCiAgY21CaW5hcnlEYXRhID0gMQp9OwoKCmVudW0gewogIGNtUHJ0ckRlZmF1bHRTY3JlZW5z
ID0gMCwKICBjbUxpbmVzUGVyID0gMQp9OwoKCmVudW0gewogIGNtTnVtSGVhZGVyRWxlbWVudHMg
PSAxMAp9OwoKCmVudW0gewogIGNtQVRvQjBUYWcgPSAnQTJCMCcsCiAgY21BVG9CMVRhZyA9ICdB
MkIxJywKICBjbUFUb0IyVGFnID0gJ0EyQjInLAogIGNtQmx1ZUNvbG9yYW50VGFnID0gJ2JYWVon
LAogIGNtQmx1ZVRSQ1RhZyA9ICdiVFJDJywKICBjbUJUb0EwVGFnID0gJ0IyQTAnLAogIGNtQlRv
QTFUYWcgPSAnQjJBMScsCiAgY21CVG9BMlRhZyA9ICdCMkEyJywKICBjbUNhbGlicmF0aW9uRGF0
ZVRpbWVUYWcgPSAnY2FsdCcsCiAgY21DaHJvbWF0aWNBZGFwdGF0aW9uVGFnID0gJ2NoYWQnLAog
IGNtQ2hhclRhcmdldFRhZyA9ICd0YXJnJywKICBjbUNvcHlyaWdodFRhZyA9ICdjcHJ0JywKICBj
bURldmljZU1mZ0Rlc2NUYWcgPSAnZG1uZCcsCiAgY21EZXZpY2VNb2RlbERlc2NUYWcgPSAnZG1k
ZCcsCiAgY21HYW11dFRhZyA9ICdnYW10JywKICBjbUdyYXlUUkNUYWcgPSAna1RSQycsCiAgY21H
cmVlbkNvbG9yYW50VGFnID0gJ2dYWVonLAogIGNtR3JlZW5UUkNUYWcgPSAnZ1RSQycsCiAgY21M
dW1pbmFuY2VUYWcgPSAnbHVtaScsCiAgY21NZWFzdXJlbWVudFRhZyA9ICdtZWFzJywKICBjbU1l
ZGlhQmxhY2tQb2ludFRhZyA9ICdia3B0JywKICBjbU1lZGlhV2hpdGVQb2ludFRhZyA9ICd3dHB0
JywKICBjbU5hbWVkQ29sb3JUYWcgPSAnbmNvbCcsCiAgY21OYW1lZENvbG9yMlRhZyA9ICduY2wy
JywKICBjbVByZXZpZXcwVGFnID0gJ3ByZTAnLAogIGNtUHJldmlldzFUYWcgPSAncHJlMScsCiAg
Y21QcmV2aWV3MlRhZyA9ICdwcmUyJywKICBjbVByb2ZpbGVEZXNjcmlwdGlvblRhZyA9ICdkZXNj
JywKICBjbVByb2ZpbGVTZXF1ZW5jZURlc2NUYWcgPSAncHNlcScsCiAgY21QUzJDUkQwVGFnID0g
J3BzZDAnLAogIGNtUFMyQ1JEMVRhZyA9ICdwc2QxJywKICBjbVBTMkNSRDJUYWcgPSAncHNkMics
CiAgY21QUzJDUkQzVGFnID0gJ3BzZDMnLAogIGNtUFMyQ1NBVGFnID0gJ3BzMnMnLAogIGNtUFMy
UmVuZGVyaW5nSW50ZW50VGFnID0gJ3BzMmknLAogIGNtUmVkQ29sb3JhbnRUYWcgPSAnclhZWics
CiAgY21SZWRUUkNUYWcgPSAnclRSQycsCiAgY21TY3JlZW5pbmdEZXNjVGFnID0gJ3NjcmQnLAog
IGNtU2NyZWVuaW5nVGFnID0gJ3Njcm4nLAogIGNtVGVjaG5vbG9neVRhZyA9ICd0ZWNoJywKICBj
bVVjckJnVGFnID0gJ2JmZCAnLAogIGNtVmlld2luZ0NvbmRpdGlvbnNEZXNjVGFnID0gJ3Z1ZWQn
LAogIGNtVmlld2luZ0NvbmRpdGlvbnNUYWcgPSAndmlldycKfTsKCgplbnVtIHsKICBjbVBTMkNS
RFZNU2l6ZVRhZyA9ICdwc3ZtJywKICBjbVZpZGVvQ2FyZEdhbW1hVGFnID0gJ3ZjZ3QnLAogIGNt
TWFrZUFuZE1vZGVsVGFnID0gJ21tb2QnLAogIGNtUHJvZmlsZURlc2NyaXB0aW9uTUxUYWcgPSAn
ZHNjbScsCiAgY21OYXRpdmVEaXNwbGF5SW5mb1RhZyA9ICduZGluJwp9OwoKCmVudW0gewogIGNt
U2lnQ3JkSW5mb1R5cGUgPSAnY3JkaScsCiAgY21TaWdDdXJ2ZVR5cGUgPSAnY3VydicsCiAgY21T
aWdEYXRhVHlwZSA9ICdkYXRhJywKICBjbVNpZ0RhdGVUaW1lVHlwZSA9ICdkdGltJywKICBjbVNp
Z0x1dDE2VHlwZSA9ICdtZnQyJywKICBjbVNpZ0x1dDhUeXBlID0gJ21mdDEnLAogIGNtU2lnTWVh
c3VyZW1lbnRUeXBlID0gJ21lYXMnLAogIGNtU2lnTXVsdGlGdW5jdEEyQlR5cGUgPSAnbUFCICcs
CiAgY21TaWdNdWx0aUZ1bmN0QjJBVHlwZSA9ICdtQkEgJywKICBjbVNpZ05hbWVkQ29sb3JUeXBl
ID0gJ25jb2wnLAogIGNtU2lnTmFtZWRDb2xvcjJUeXBlID0gJ25jbDInLAogIGNtU2lnUGFyYW1l
dHJpY0N1cnZlVHlwZSA9ICdwYXJhJywKICBjbVNpZ1Byb2ZpbGVEZXNjcmlwdGlvblR5cGUgPSAn
ZGVzYycsCiAgY21TaWdQcm9maWxlU2VxdWVuY2VEZXNjVHlwZSA9ICdwc2VxJywKICBjbVNpZ1Nj
cmVlbmluZ1R5cGUgPSAnc2NybicsCiAgY21TaWdTMTVGaXhlZDE2VHlwZSA9ICdzZjMyJywKICBj
bVNpZ1NpZ25hdHVyZVR5cGUgPSAnc2lnICcsCiAgY21TaWdUZXh0VHlwZSA9ICd0ZXh0JywKICBj
bVNpZ1UxNkZpeGVkMTZUeXBlID0gJ3VmMzInLAogIGNtU2lnVTFGaXhlZDE1VHlwZSA9ICd1ZjE2
JywKICBjbVNpZ1VJbnQ4VHlwZSA9ICd1aTA4JywKICBjbVNpZ1VJbnQxNlR5cGUgPSAndWkxNics
CiAgY21TaWdVSW50MzJUeXBlID0gJ3VpMzInLAogIGNtU2lnVUludDY0VHlwZSA9ICd1aTY0JywK
ICBjbVNpZ1VjckJnVHlwZSA9ICdiZmQgJywKICBjbVNpZ1VuaWNvZGVUZXh0VHlwZSA9ICd1dHh0
JywKICBjbVNpZ1ZpZXdpbmdDb25kaXRpb25zVHlwZSA9ICd2aWV3JywKICBjbVNpZ1hZWlR5cGUg
PSAnWFlaICcKfTsKCgplbnVtIHsKICBjbVNpZ1BTMkNSRFZNU2l6ZVR5cGUgPSAncHN2bScsCiAg
Y21TaWdWaWRlb0NhcmRHYW1tYVR5cGUgPSAndmNndCcsCiAgY21TaWdNYWtlQW5kTW9kZWxUeXBl
ID0gJ21tb2QnLAogIGNtU2lnTmF0aXZlRGlzcGxheUluZm9UeXBlID0gJ25kaW4nLAogIGNtU2ln
TXVsdGlMb2NhbGl6ZWRVbmlDb2RlVHlwZSA9ICdtbHVjJwp9OwoKCgplbnVtIHsKICBjbVRlY2hu
b2xvZ3lEaWdpdGFsQ2FtZXJhID0gJ2RjYW0nLAogIGNtVGVjaG5vbG9neUZpbG1TY2FubmVyID0g
J2ZzY24nLAogIGNtVGVjaG5vbG9neVJlZmxlY3RpdmVTY2FubmVyID0gJ3JzY24nLAogIGNtVGVj
aG5vbG9neUlua0pldFByaW50ZXIgPSAnaWpldCcsCiAgY21UZWNobm9sb2d5VGhlcm1hbFdheFBy
aW50ZXIgPSAndHdheCcsCiAgY21UZWNobm9sb2d5RWxlY3Ryb3Bob3RvZ3JhcGhpY1ByaW50ZXIg
PSAnZXBobycsCiAgY21UZWNobm9sb2d5RWxlY3Ryb3N0YXRpY1ByaW50ZXIgPSAnZXN0YScsCiAg
Y21UZWNobm9sb2d5RHllU3VibGltYXRpb25QcmludGVyID0gJ2RzdWInLAogIGNtVGVjaG5vbG9n
eVBob3RvZ3JhcGhpY1BhcGVyUHJpbnRlciA9ICdycGhvJywKICBjbVRlY2hub2xvZ3lGaWxtV3Jp
dGVyID0gJ2Zwcm4nLAogIGNtVGVjaG5vbG9neVZpZGVvTW9uaXRvciA9ICd2aWRtJywKICBjbVRl
Y2hub2xvZ3lWaWRlb0NhbWVyYSA9ICd2aWRjJywKICBjbVRlY2hub2xvZ3lQcm9qZWN0aW9uVGVs
ZXZpc2lvbiA9ICdwanR2JywKICBjbVRlY2hub2xvZ3lDUlREaXNwbGF5ID0gJ0NSVCAnLAogIGNt
VGVjaG5vbG9neVBNRGlzcGxheSA9ICdQTUQgJywKICBjbVRlY2hub2xvZ3lBTURpc3BsYXkgPSAn
QU1EICcsCiAgY21UZWNobm9sb2d5UGhvdG9DRCA9ICdLUENEJywKICBjbVRlY2hub2xvZ3lQaG90
b0ltYWdlU2V0dGVyID0gJ2ltZ3MnLAogIGNtVGVjaG5vbG9neUdyYXZ1cmUgPSAnZ3JhdicsCiAg
Y21UZWNobm9sb2d5T2Zmc2V0TGl0aG9ncmFwaHkgPSAnb2ZmcycsCiAgY21UZWNobm9sb2d5U2ls
a3NjcmVlbiA9ICdzaWxrJywKICBjbVRlY2hub2xvZ3lGbGV4b2dyYXBoeSA9ICdmbGV4Jwp9OwoK
CgoKZW51bSB7CiAgY21GbGFyZTAgPSAweDAwMDAwMDAwLAogIGNtRmxhcmUxMDAgPSAweDAwMDAw
MDAxCn07CgoKZW51bSB7CiAgY21HZW9tZXRyeVVua25vd24gPSAweDAwMDAwMDAwLAogIGNtR2Vv
bWV0cnkwNDVvcjQ1MCA9IDB4MDAwMDAwMDEsCiAgY21HZW9tZXRyeTBkb3JkMCA9IDB4MDAwMDAw
MDIKfTsKCgplbnVtIHsKICBjbVN0ZG9ic1Vua25vd24gPSAweDAwMDAwMDAwLAogIGNtU3Rkb2Jz
MTkzMVR3b0RlZ3JlZXMgPSAweDAwMDAwMDAxLAogIGNtU3Rkb2JzMTk2NFRlbkRlZ3JlZXMgPSAw
eDAwMDAwMDAyCn07CgoKZW51bSB7CiAgY21JbGx1bWluYW50VW5rbm93biA9IDB4MDAwMDAwMDAs
CiAgY21JbGx1bWluYW50RDUwID0gMHgwMDAwMDAwMSwKICBjbUlsbHVtaW5hbnRENjUgPSAweDAw
MDAwMDAyLAogIGNtSWxsdW1pbmFudEQ5MyA9IDB4MDAwMDAwMDMsCiAgY21JbGx1bWluYW50RjIg
PSAweDAwMDAwMDA0LAogIGNtSWxsdW1pbmFudEQ1NSA9IDB4MDAwMDAwMDUsCiAgY21JbGx1bWlu
YW50QSA9IDB4MDAwMDAwMDYsCiAgY21JbGx1bWluYW50RXF1aVBvd2VyID0gMHgwMDAwMDAwNywK
ICBjbUlsbHVtaW5hbnRGOCA9IDB4MDAwMDAwMDgKfTsKCgplbnVtIHsKICBjbVNwb3RGdW5jdGlv
blVua25vd24gPSAwLAogIGNtU3BvdEZ1bmN0aW9uRGVmYXVsdCA9IDEsCiAgY21TcG90RnVuY3Rp
b25Sb3VuZCA9IDIsCiAgY21TcG90RnVuY3Rpb25EaWFtb25kID0gMywKICBjbVNwb3RGdW5jdGlv
bkVsbGlwc2UgPSA0LAogIGNtU3BvdEZ1bmN0aW9uTGluZSA9IDUsCiAgY21TcG90RnVuY3Rpb25T
cXVhcmUgPSA2LAogIGNtU3BvdEZ1bmN0aW9uQ3Jvc3MgPSA3Cn07CgoKZW51bSB7CiAgY21YWVpE
YXRhID0gJ1hZWiAnLAogIGNtTGFiRGF0YSA9ICdMYWIgJywKICBjbUx1dkRhdGEgPSAnTHV2ICcs
CiAgY21ZQ2JDckRhdGEgPSAnWUNicicsCiAgY21ZeHlEYXRhID0gJ1l4eSAnLAogIGNtUkdCRGF0
YSA9ICdSR0IgJywKICBjbVNSR0JEYXRhID0gJ3NSR0InLAogIGNtR3JheURhdGEgPSAnR1JBWScs
CiAgY21IU1ZEYXRhID0gJ0hTViAnLAogIGNtSExTRGF0YSA9ICdITFMgJywKICBjbUNNWUtEYXRh
ID0gJ0NNWUsnLAogIGNtQ01ZRGF0YSA9ICdDTVkgJywKICBjbU1DSDVEYXRhID0gJ01DSDUnLAog
IGNtTUNINkRhdGEgPSAnTUNINicsCiAgY21NQ0g3RGF0YSA9ICdNQ0g3JywKICBjbU1DSDhEYXRh
ID0gJ01DSDgnLAogIGNtM0NMUkRhdGEgPSAnM0NMUicsCiAgY200Q0xSRGF0YSA9ICc0Q0xSJywK
ICBjbTVDTFJEYXRhID0gJzVDTFInLAogIGNtNkNMUkRhdGEgPSAnNkNMUicsCiAgY203Q0xSRGF0
YSA9ICc3Q0xSJywKICBjbThDTFJEYXRhID0gJzhDTFInLAogIGNtOUNMUkRhdGEgPSAnOUNMUics
CiAgY20xMENMUkRhdGEgPSAnQUNMUicsCiAgY20xMUNMUkRhdGEgPSAnQkNMUicsCiAgY20xMkNM
UkRhdGEgPSAnQ0NMUicsCiAgY20xM0NMUkRhdGEgPSAnRENMUicsCiAgY20xNENMUkRhdGEgPSAn
RUNMUicsCiAgY20xNUNMUkRhdGEgPSAnRkNMUicsCiAgY21OYW1lZERhdGEgPSAnTkFNRScKfTsK
CgplbnVtIHsKICBjbUlucHV0Q2xhc3MgPSAnc2NucicsCiAgY21EaXNwbGF5Q2xhc3MgPSAnbW50
cicsCiAgY21PdXRwdXRDbGFzcyA9ICdwcnRyJywKICBjbUxpbmtDbGFzcyA9ICdsaW5rJywKICBj
bUFic3RyYWN0Q2xhc3MgPSAnYWJzdCcsCiAgY21Db2xvclNwYWNlQ2xhc3MgPSAnc3BhYycsCiAg
Y21OYW1lZENvbG9yQ2xhc3MgPSAnbm1jbCcKfTsKCgplbnVtIHsKICBjbU1hY2ludG9zaCA9ICdB
UFBMJywKICBjbU1pY3Jvc29mdCA9ICdNU0ZUJywKICBjbVNvbGFyaXMgPSAnU1VOVycsCiAgY21T
aWxpY29uR3JhcGhpY3MgPSAnU0dJICcsCiAgY21UYWxpZ2VudCA9ICdUR05UJwp9OwoKCmVudW0g
ewogIGNtUGFyYW1ldHJpY1R5cGUwID0gMCwKICBjbVBhcmFtZXRyaWNUeXBlMSA9IDEsCiAgY21Q
YXJhbWV0cmljVHlwZTIgPSAyLAogIGNtUGFyYW1ldHJpY1R5cGUzID0gMywKICBjbVBhcmFtZXRy
aWNUeXBlNCA9IDQKfTsKCgoKZW51bSB7CiAgY21DUzFDaHJvbVRhZyA9ICdjaHJtJywKICBjbUNT
MVRSQ1RhZyA9ICd0cmMgJywKICBjbUNTMU5hbWVUYWcgPSAnbmFtZScsCiAgY21DUzFDdXN0VGFn
ID0gJ2N1c3QnCn07CgoKdHlwZWRlZiBzdHJ1Y3QgQ01EYXRlVGltZSB7CiAgVUludDE2IHllYXI7
CiAgVUludDE2IG1vbnRoOwogIFVJbnQxNiBkYXlPZlRoZU1vbnRoOwogIFVJbnQxNiBob3VyczsK
ICBVSW50MTYgbWludXRlczsKICBVSW50MTYgc2Vjb25kczsKfSBDTURhdGVUaW1lOwoKdHlwZWRl
ZiBzdHJ1Y3QgQ01GaXhlZFhZQ29sb3IgewogIEZpeGVkIHg7CiAgRml4ZWQgeTsKfSBDTUZpeGVk
WFlDb2xvcjsKCnR5cGVkZWYgc3RydWN0IENNRml4ZWRYWVpDb2xvciB7CiAgRml4ZWQgWDsKICBG
aXhlZCBZOwogIEZpeGVkIFo7Cn0gQ01GaXhlZFhZWkNvbG9yOwoKdHlwZWRlZiBVSW50MTYgQ01Y
WVpDb21wb25lbnQ7Cgp0eXBlZGVmIHN0cnVjdCBDTVhZWkNvbG9yIHsKICBDTVhZWkNvbXBvbmVu
dCBYOwogIENNWFlaQ29tcG9uZW50IFk7CiAgQ01YWVpDb21wb25lbnQgWjsKfSBDTVhZWkNvbG9y
OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIENNUHJvZmlsZU1ENVsxNl07CnR5cGVkZWYgQ01Q
cm9maWxlTUQ1ICogQ01Qcm9maWxlTUQ1UHRyOwoKCgoKCgoKICBpbmxpbmUgQm9vbGVhbiBDTVBy
b2ZpbGVNRDVBcmVFcXVhbChDTVByb2ZpbGVNRDUgYSwgQ01Qcm9maWxlTUQ1IGIpCiAgewogICAg
cmV0dXJuICgoVUludDMyKilhKVswXT09KChVSW50MzIqKWIpWzBdICYmICgoVUludDMyKilhKVsx
XT09KChVSW50MzIqKWIpWzFdICYmCiAgICAgICAgICAgICgoVUludDMyKilhKVsyXT09KChVSW50
MzIqKWIpWzJdICYmICgoVUludDMyKilhKVszXT09KChVSW50MzIqKWIpWzNdOwogIH0KCgoKCgoK
dHlwZWRlZiBzdHJ1Y3QgQ00ySGVhZGVyIHsKICBVSW50MzIgc2l6ZTsKICBPU1R5cGUgQ01NVHlw
ZTsKICBVSW50MzIgcHJvZmlsZVZlcnNpb247CiAgT1NUeXBlIHByb2ZpbGVDbGFzczsKICBPU1R5
cGUgZGF0YUNvbG9yU3BhY2U7CiAgT1NUeXBlIHByb2ZpbGVDb25uZWN0aW9uU3BhY2U7CiAgQ01E
YXRlVGltZSBkYXRlVGltZTsKICBPU1R5cGUgQ1MycHJvZmlsZVNpZ25hdHVyZTsKICBPU1R5cGUg
cGxhdGZvcm07CiAgVUludDMyIGZsYWdzOwogIE9TVHlwZSBkZXZpY2VNYW51ZmFjdHVyZXI7CiAg
VUludDMyIGRldmljZU1vZGVsOwogIFVJbnQzMiBkZXZpY2VBdHRyaWJ1dGVzWzJdOwogIFVJbnQz
MiByZW5kZXJpbmdJbnRlbnQ7CiAgQ01GaXhlZFhZWkNvbG9yIHdoaXRlOwogIE9TVHlwZSBjcmVh
dG9yOwogIGNoYXIgcmVzZXJ2ZWRbNDRdOwp9IENNMkhlYWRlcjsKCnR5cGVkZWYgc3RydWN0IENN
NEhlYWRlciB7CiAgVUludDMyIHNpemU7CiAgT1NUeXBlIENNTVR5cGU7CiAgVUludDMyIHByb2Zp
bGVWZXJzaW9uOwogIE9TVHlwZSBwcm9maWxlQ2xhc3M7CiAgT1NUeXBlIGRhdGFDb2xvclNwYWNl
OwogIE9TVHlwZSBwcm9maWxlQ29ubmVjdGlvblNwYWNlOwogIENNRGF0ZVRpbWUgZGF0ZVRpbWU7
CiAgT1NUeXBlIENTMnByb2ZpbGVTaWduYXR1cmU7CiAgT1NUeXBlIHBsYXRmb3JtOwogIFVJbnQz
MiBmbGFnczsKICBPU1R5cGUgZGV2aWNlTWFudWZhY3R1cmVyOwogIFVJbnQzMiBkZXZpY2VNb2Rl
bDsKICBVSW50MzIgZGV2aWNlQXR0cmlidXRlc1syXTsKICBVSW50MzIgcmVuZGVyaW5nSW50ZW50
OwogIENNRml4ZWRYWVpDb2xvciB3aGl0ZTsKICBPU1R5cGUgY3JlYXRvcjsKICBDTVByb2ZpbGVN
RDUgZGlnZXN0OwogIGNoYXIgcmVzZXJ2ZWRbMjhdOwp9IENNNEhlYWRlcjsKCnR5cGVkZWYgc3Ry
dWN0IENNVGFnUmVjb3JkIHsKICBPU1R5cGUgdGFnOwogIFVJbnQzMiBlbGVtZW50T2Zmc2V0Owog
IFVJbnQzMiBlbGVtZW50U2l6ZTsKfSBDTVRhZ1JlY29yZDsKCnR5cGVkZWYgc3RydWN0IENNVGFn
RWxlbVRhYmxlIHsKICBVSW50MzIgY291bnQ7CiAgQ01UYWdSZWNvcmQgdGFnTGlzdFsxXTsKfSBD
TVRhZ0VsZW1UYWJsZTsKCnR5cGVkZWYgc3RydWN0IENNMlByb2ZpbGUgewogIENNMkhlYWRlciBo
ZWFkZXI7CiAgQ01UYWdFbGVtVGFibGUgdGFnVGFibGU7CiAgY2hhciBlbGVtRGF0YVsxXTsKfSBD
TTJQcm9maWxlLCAqQ00yUHJvZmlsZVB0ciwgKipDTTJQcm9maWxlSGFuZGxlOwoKCnR5cGVkZWYg
c3RydWN0IENNQWRhcHRhdGlvbk1hdHJpeFR5cGUgewogIE9TVHlwZSB0eXBlRGVzY3JpcHRvcjsK
ICBVSW50MzIgcmVzZXJ2ZWQ7CiAgRml4ZWQgYWRhcHRhdGlvbk1hdHJpeFs5XTsKfSBDTUFkYXB0
YXRpb25NYXRyaXhUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgQ01DdXJ2ZVR5cGUgewogIE9TVHlwZSB0
eXBlRGVzY3JpcHRvcjsKICBVSW50MzIgcmVzZXJ2ZWQ7CiAgVUludDMyIGNvdW50VmFsdWU7CiAg
VUludDE2IGRhdGFbMV07Cn0gQ01DdXJ2ZVR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBDTURhdGFUeXBl
IHsKICBPU1R5cGUgdHlwZURlc2NyaXB0b3I7CiAgVUludDMyIHJlc2VydmVkOwogIFVJbnQzMiBk
YXRhRmxhZzsKICBjaGFyIGRhdGFbMV07Cn0gQ01EYXRhVHlwZTsKCnR5cGVkZWYgc3RydWN0IENN
RGF0ZVRpbWVUeXBlIHsKICBPU1R5cGUgdHlwZURlc2NyaXB0b3I7CiAgVUludDMyIHJlc2VydmVk
OwogIENNRGF0ZVRpbWUgZGF0ZVRpbWU7Cn0gQ01EYXRlVGltZVR5cGU7Cgp0eXBlZGVmIHN0cnVj
dCBDTUx1dDE2VHlwZSB7CiAgT1NUeXBlIHR5cGVEZXNjcmlwdG9yOwogIFVJbnQzMiByZXNlcnZl
ZDsKICBVSW50OCBpbnB1dENoYW5uZWxzOwogIFVJbnQ4IG91dHB1dENoYW5uZWxzOwogIFVJbnQ4
IGdyaWRQb2ludHM7CiAgVUludDggcmVzZXJ2ZWQyOwogIEZpeGVkIG1hdHJpeFszXVszXTsKICBV
SW50MTYgaW5wdXRUYWJsZUVudHJpZXM7CiAgVUludDE2IG91dHB1dFRhYmxlRW50cmllczsKICBV
SW50MTYgaW5wdXRUYWJsZVsxXTsKIyA1NjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29y
ay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwp9IENNTHV0MTZUeXBlOwoKdHlwZWRl
ZiBzdHJ1Y3QgQ01MdXQ4VHlwZSB7CiAgT1NUeXBlIHR5cGVEZXNjcmlwdG9yOwogIFVJbnQzMiBy
ZXNlcnZlZDsKICBVSW50OCBpbnB1dENoYW5uZWxzOwogIFVJbnQ4IG91dHB1dENoYW5uZWxzOwog
IFVJbnQ4IGdyaWRQb2ludHM7CiAgVUludDggcmVzZXJ2ZWQyOwogIEZpeGVkIG1hdHJpeFszXVsz
XTsKICBVSW50OCBpbnB1dFRhYmxlWzFdOwojIDU4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJh
bWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVwcmVjYXRlZC5oIiAzCn0gQ01MdXQ4VHlwZTsKCnR5
cGVkZWYgc3RydWN0IENNTXVsdGlGdW5jdEx1dFR5cGUgewogIE9TVHlwZSB0eXBlRGVzY3JpcHRv
cjsKICBVSW50MzIgcmVzZXJ2ZWQ7CiAgVUludDggaW5wdXRDaGFubmVsczsKICBVSW50OCBvdXRw
dXRDaGFubmVsczsKICBVSW50MTYgcmVzZXJ2ZWQyOwogIFVJbnQzMiBvZmZzZXRCY3VydmVzOwog
IFVJbnQzMiBvZmZzZXRNYXRyaXg7CiAgVUludDMyIG9mZnNldE1jdXJ2ZXM7CiAgVUludDMyIG9m
ZnNldENMVVQ7CiAgVUludDMyIG9mZnNldEFjdXJ2ZXM7CiAgVUludDggZGF0YVsxXTsKfSBDTU11
bHRpRnVuY3RMdXRUeXBlLCBDTU11bHRpRnVuY3RMdXRBMkJUeXBlLCBDTU11bHRpRnVuY3RMdXRC
MkFUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgQ01NdWx0aUZ1bmN0Q0xVVFR5cGUgewogIFVJbnQ4IGdy
aWRQb2ludHNbMTZdOwogIFVJbnQ4IGVudHJ5U2l6ZTsKICBVSW50OCByZXNlcnZlZFszXTsKICBV
SW50OCBkYXRhWzJdOwp9IENNTXVsdGlGdW5jdENMVVRUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgQ01N
ZWFzdXJlbWVudFR5cGUgewogIE9TVHlwZSB0eXBlRGVzY3JpcHRvcjsKICBVSW50MzIgcmVzZXJ2
ZWQ7CiAgVUludDMyIHN0YW5kYXJkT2JzZXJ2ZXI7CiAgQ01GaXhlZFhZWkNvbG9yIGJhY2tpbmdY
WVo7CiAgVUludDMyIGdlb21ldHJ5OwogIFVJbnQzMiBmbGFyZTsKICBVSW50MzIgaWxsdW1pbmFu
dDsKfSBDTU1lYXN1cmVtZW50VHlwZTsKCnR5cGVkZWYgc3RydWN0IENNTmFtZWRDb2xvclR5cGUg
ewogIE9TVHlwZSB0eXBlRGVzY3JpcHRvcjsKICBVSW50MzIgcmVzZXJ2ZWQ7CiAgVUludDMyIHZl
bmRvckZsYWc7CiAgVUludDMyIGNvdW50OwogIFVJbnQ4IHByZWZpeE5hbWVbMV07CiMgNjMzICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVk
LmgiIDMKfSBDTU5hbWVkQ29sb3JUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgQ01OYW1lZENvbG9yMkVu
dHJ5VHlwZSB7CiAgVUludDggcm9vdE5hbWVbMzJdOwogIFVJbnQxNiBQQ1NDb2xvckNvb3Jkc1sz
XTsKICBVSW50MTYgRGV2aWNlQ29sb3JDb29yZHNbMV07Cn0gQ01OYW1lZENvbG9yMkVudHJ5VHlw
ZTsKCnR5cGVkZWYgc3RydWN0IENNTmFtZWRDb2xvcjJUeXBlIHsKICBPU1R5cGUgdHlwZURlc2Ny
aXB0b3I7CiAgVUludDMyIHJlc2VydmVkOwogIFVJbnQzMiB2ZW5kb3JGbGFnOwogIFVJbnQzMiBj
b3VudDsKICBVSW50MzIgZGV2aWNlQ2hhbm5lbENvdW50OwogIFVJbnQ4IHByZWZpeE5hbWVbMzJd
OwogIFVJbnQ4IHN1ZmZpeE5hbWVbMzJdOwogIGNoYXIgZGF0YVsxXTsKfSBDTU5hbWVkQ29sb3Iy
VHlwZTsKCnR5cGVkZWYgc3RydWN0IENNTmF0aXZlRGlzcGxheUluZm8gewogIFVJbnQzMiBkYXRh
U2l6ZTsKICBDTUZpeGVkWFlDb2xvciByZWRQaG9zcGhvcjsKICBDTUZpeGVkWFlDb2xvciBncmVl
blBob3NwaG9yOwogIENNRml4ZWRYWUNvbG9yIGJsdWVQaG9zcGhvcjsKICBDTUZpeGVkWFlDb2xv
ciB3aGl0ZVBvaW50OwogIEZpeGVkIHJlZEdhbW1hVmFsdWU7CiAgRml4ZWQgZ3JlZW5HYW1tYVZh
bHVlOwogIEZpeGVkIGJsdWVHYW1tYVZhbHVlOwoKCgogIFVJbnQxNiBnYW1tYUNoYW5uZWxzOwog
IFVJbnQxNiBnYW1tYUVudHJ5Q291bnQ7CiAgVUludDE2IGdhbW1hRW50cnlTaXplOwogIGNoYXIg
Z2FtbWFEYXRhWzFdOwp9IENNTmF0aXZlRGlzcGxheUluZm87Cgp0eXBlZGVmIHN0cnVjdCBDTU5h
dGl2ZURpc3BsYXlJbmZvVHlwZSB7CiAgT1NUeXBlIHR5cGVEZXNjcmlwdG9yOwogIFVJbnQzMiBy
ZXNlcnZlZDsKICBDTU5hdGl2ZURpc3BsYXlJbmZvIG5hdGl2ZURpc3BsYXlJbmZvOwp9IENNTmF0
aXZlRGlzcGxheUluZm9UeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgQ01QYXJhbWV0cmljQ3VydmVUeXBl
IHsKICBPU1R5cGUgdHlwZURlc2NyaXB0b3I7CiAgVUludDMyIHJlc2VydmVkOwogIFVJbnQxNiBm
dW5jdGlvblR5cGU7CiAgVUludDE2IHJlc2VydmVkMjsKICBGaXhlZCB2YWx1ZVsxXTsKfSBDTVBh
cmFtZXRyaWNDdXJ2ZVR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBDTVRleHREZXNjcmlwdGlvblR5cGUg
ewogIE9TVHlwZSB0eXBlRGVzY3JpcHRvcjsKICBVSW50MzIgcmVzZXJ2ZWQ7CiAgVUludDMyIEFT
Q0lJQ291bnQ7CiAgVUludDggQVNDSUlOYW1lWzJdOwojIDcwMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5
bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVwcmVjYXRlZC5oIiAzCn0gQ01UZXh0RGVz
Y3JpcHRpb25UeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgQ01UZXh0VHlwZSB7CiAgT1NUeXBlIHR5cGVE
ZXNjcmlwdG9yOwogIFVJbnQzMiByZXNlcnZlZDsKICBVSW50OCB0ZXh0WzFdOwp9IENNVGV4dFR5
cGU7Cgp0eXBlZGVmIHN0cnVjdCBDTVVuaWNvZGVUZXh0VHlwZSB7CiAgT1NUeXBlIHR5cGVEZXNj
cmlwdG9yOwogIFVJbnQzMiByZXNlcnZlZDsKICBVbmlDaGFyIHRleHRbMV07Cn0gQ01Vbmljb2Rl
VGV4dFR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBDTVNjcmVlbmluZ0NoYW5uZWxSZWMgewogIEZpeGVk
IGZyZXF1ZW5jeTsKICBGaXhlZCBhbmdsZTsKICBVSW50MzIgc3BvdEZ1bmN0aW9uOwp9IENNU2Ny
ZWVuaW5nQ2hhbm5lbFJlYzsKCnR5cGVkZWYgc3RydWN0IENNU2NyZWVuaW5nVHlwZSB7CiAgT1NU
eXBlIHR5cGVEZXNjcmlwdG9yOwogIFVJbnQzMiByZXNlcnZlZDsKICBVSW50MzIgc2NyZWVuaW5n
RmxhZzsKICBVSW50MzIgY2hhbm5lbENvdW50OwogIENNU2NyZWVuaW5nQ2hhbm5lbFJlYyBjaGFu
bmVsSW5mb1sxXTsKfSBDTVNjcmVlbmluZ1R5cGU7Cgp0eXBlZGVmIHN0cnVjdCBDTVNpZ25hdHVy
ZVR5cGUgewogIE9TVHlwZSB0eXBlRGVzY3JpcHRvcjsKICBVSW50MzIgcmVzZXJ2ZWQ7CiAgT1NU
eXBlIHNpZ25hdHVyZTsKfSBDTVNpZ25hdHVyZVR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBDTVMxNUZp
eGVkMTZBcnJheVR5cGUgewogIE9TVHlwZSB0eXBlRGVzY3JpcHRvcjsKICBVSW50MzIgcmVzZXJ2
ZWQ7CiAgRml4ZWQgdmFsdWVbMV07Cn0gQ01TMTVGaXhlZDE2QXJyYXlUeXBlOwoKdHlwZWRlZiBz
dHJ1Y3QgQ01VMTZGaXhlZDE2QXJyYXlUeXBlIHsKICBPU1R5cGUgdHlwZURlc2NyaXB0b3I7CiAg
VUludDMyIHJlc2VydmVkOwogIFVJbnQzMiB2YWx1ZVsxXTsKfSBDTVUxNkZpeGVkMTZBcnJheVR5
cGU7Cgp0eXBlZGVmIHN0cnVjdCBDTVVJbnQ4QXJyYXlUeXBlIHsKICBPU1R5cGUgdHlwZURlc2Ny
aXB0b3I7CiAgVUludDMyIHJlc2VydmVkOwogIFVJbnQ4IHZhbHVlWzFdOwp9IENNVUludDhBcnJh
eVR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBDTVVJbnQxNkFycmF5VHlwZSB7CiAgT1NUeXBlIHR5cGVE
ZXNjcmlwdG9yOwogIFVJbnQzMiByZXNlcnZlZDsKICBVSW50MTYgdmFsdWVbMV07Cn0gQ01VSW50
MTZBcnJheVR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBDTVVJbnQzMkFycmF5VHlwZSB7CiAgT1NUeXBl
IHR5cGVEZXNjcmlwdG9yOwogIFVJbnQzMiByZXNlcnZlZDsKICBVSW50MzIgdmFsdWVbMV07Cn0g
Q01VSW50MzJBcnJheVR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBDTVVJbnQ2NEFycmF5VHlwZSB7CiAg
T1NUeXBlIHR5cGVEZXNjcmlwdG9yOwogIFVJbnQzMiByZXNlcnZlZDsKICBVSW50MzIgdmFsdWVb
MV07Cn0gQ01VSW50NjRBcnJheVR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBDTVZpZXdpbmdDb25kaXRp
b25zVHlwZSB7CiAgT1NUeXBlIHR5cGVEZXNjcmlwdG9yOwogIFVJbnQzMiByZXNlcnZlZDsKICBD
TUZpeGVkWFlaQ29sb3IgaWxsdW1pbmFudDsKICBDTUZpeGVkWFlaQ29sb3Igc3Vycm91bmQ7CiAg
VUludDMyIHN0ZElsbHVtaW5hbnQ7Cn0gQ01WaWV3aW5nQ29uZGl0aW9uc1R5cGU7Cgp0eXBlZGVm
IHN0cnVjdCBDTVhZWlR5cGUgewogIE9TVHlwZSB0eXBlRGVzY3JpcHRvcjsKICBVSW50MzIgcmVz
ZXJ2ZWQ7CiAgQ01GaXhlZFhZWkNvbG9yIFhZWlsxXTsKfSBDTVhZWlR5cGU7Cgp0eXBlZGVmIHN0
cnVjdCBDTVByb2ZpbGVTZXF1ZW5jZURlc2NUeXBlIHsKICBPU1R5cGUgdHlwZURlc2NyaXB0b3I7
CiAgVUludDMyIHJlc2VydmVkOwogIFVJbnQzMiBjb3VudDsKICBjaGFyIGRhdGFbMV07Cn0gQ01Q
cm9maWxlU2VxdWVuY2VEZXNjVHlwZTsKCnR5cGVkZWYgc3RydWN0IENNVWNyQmdUeXBlIHsKICBP
U1R5cGUgdHlwZURlc2NyaXB0b3I7CiAgVUludDMyIHJlc2VydmVkOwogIFVJbnQzMiB1Y3JDb3Vu
dDsKICBVSW50MTYgdWNyVmFsdWVzWzFdOwojIDgwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJh
bWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVwcmVjYXRlZC5oIiAzCn0gQ01VY3JCZ1R5cGU7CgoK
CgoKdHlwZWRlZiBzdHJ1Y3QgQ01JbnRlbnRDUkRWTVNpemUgewogIFVJbnQzMiByZW5kZXJpbmdJ
bnRlbnQ7CiAgVUludDMyIFZNU2l6ZTsKfSBDTUludGVudENSRFZNU2l6ZTsKCnR5cGVkZWYgc3Ry
dWN0IENNUFMyQ1JEVk1TaXplVHlwZSB7CiAgT1NUeXBlIHR5cGVEZXNjcmlwdG9yOwogIFVJbnQz
MiByZXNlcnZlZDsKICBVSW50MzIgY291bnQ7CiAgQ01JbnRlbnRDUkRWTVNpemUgaW50ZW50Q1JE
WzFdOwp9IENNUFMyQ1JEVk1TaXplVHlwZTsKCgplbnVtIHsKICBjbVZpZGVvQ2FyZEdhbW1hVGFi
bGVUeXBlID0gMCwKICBjbVZpZGVvQ2FyZEdhbW1hRm9ybXVsYVR5cGUgPSAxCn07Cgp0eXBlZGVm
IHN0cnVjdCBDTVZpZGVvQ2FyZEdhbW1hVGFibGUgewogIFVJbnQxNiBjaGFubmVsczsKICBVSW50
MTYgZW50cnlDb3VudDsKICBVSW50MTYgZW50cnlTaXplOwogIGNoYXIgZGF0YVsxXTsKfSBDTVZp
ZGVvQ2FyZEdhbW1hVGFibGU7Cgp0eXBlZGVmIHN0cnVjdCBDTVZpZGVvQ2FyZEdhbW1hRm9ybXVs
YSB7CiAgRml4ZWQgcmVkR2FtbWE7CiAgRml4ZWQgcmVkTWluOwogIEZpeGVkIHJlZE1heDsKICBG
aXhlZCBncmVlbkdhbW1hOwogIEZpeGVkIGdyZWVuTWluOwogIEZpeGVkIGdyZWVuTWF4OwogIEZp
eGVkIGJsdWVHYW1tYTsKICBGaXhlZCBibHVlTWluOwogIEZpeGVkIGJsdWVNYXg7Cn0gQ01WaWRl
b0NhcmRHYW1tYUZvcm11bGE7Cgp0eXBlZGVmIHN0cnVjdCBDTVZpZGVvQ2FyZEdhbW1hIHsKICBV
SW50MzIgdGFnVHlwZTsKICB1bmlvbiB7CiAgICBDTVZpZGVvQ2FyZEdhbW1hVGFibGUgdGFibGU7
CiAgICBDTVZpZGVvQ2FyZEdhbW1hRm9ybXVsYSBmb3JtdWxhOwogIH0gdTsKfSBDTVZpZGVvQ2Fy
ZEdhbW1hOwoKdHlwZWRlZiBzdHJ1Y3QgQ01WaWRlb0NhcmRHYW1tYVR5cGUgewogIE9TVHlwZSB0
eXBlRGVzY3JpcHRvcjsKICBVSW50MzIgcmVzZXJ2ZWQ7CiAgQ01WaWRlb0NhcmRHYW1tYSBnYW1t
YTsKfSBDTVZpZGVvQ2FyZEdhbW1hVHlwZTsKCnR5cGVkZWYgc3RydWN0IENNTWFrZUFuZE1vZGVs
IHsKICBPU1R5cGUgbWFudWZhY3R1cmVyOwogIFVJbnQzMiBtb2RlbDsKICBVSW50MzIgc2VyaWFs
TnVtYmVyOwogIFVJbnQzMiBtYW51ZmFjdHVyZURhdGU7CiAgVUludDMyIHJlc2VydmVkMTsKICBV
SW50MzIgcmVzZXJ2ZWQyOwogIFVJbnQzMiByZXNlcnZlZDM7CiAgVUludDMyIHJlc2VydmVkNDsK
fSBDTU1ha2VBbmRNb2RlbDsKCnR5cGVkZWYgc3RydWN0IENNTWFrZUFuZE1vZGVsVHlwZSB7CiAg
T1NUeXBlIHR5cGVEZXNjcmlwdG9yOwogIFVJbnQzMiByZXNlcnZlZDsKICBDTU1ha2VBbmRNb2Rl
bCBtYWtlQW5kTW9kZWw7Cn0gQ01NYWtlQW5kTW9kZWxUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgQ01N
dWx0aUxvY2FsaXplZFVuaUNvZGVFbnRyeVJlYyB7CiAgY2hhciBsYW5ndWFnZUNvZGVbMl07CiAg
Y2hhciByZWdpb25Db2RlWzJdOwogIFVJbnQzMiB0ZXh0TGVuZ3RoOwogIFVJbnQzMiB0ZXh0T2Zm
c2V0Owp9IENNTXVsdGlMb2NhbGl6ZWRVbmlDb2RlRW50cnlSZWM7Cgp0eXBlZGVmIHN0cnVjdCBD
TU11bHRpTG9jYWxpemVkVW5pQ29kZVR5cGUgewogIE9TVHlwZSB0eXBlRGVzY3JpcHRvcjsKICBV
SW50MzIgcmVzZXJ2ZWQ7CiAgVUludDMyIGVudHJ5Q291bnQ7CiAgVUludDMyIGVudHJ5U2l6ZTsK
Cgp9IENNTXVsdGlMb2NhbGl6ZWRVbmlDb2RlVHlwZTsKIyA5ODcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JT
eW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwojcHJhZ21hIHBh
Y2socG9wKQoKICAgICAgIAoKCnR5cGVkZWYgT1NTdGF0dXMgQ01FcnJvcjsKCgp0eXBlZGVmIHN0
cnVjdCBPcGFxdWVDTVByb2ZpbGVSZWYqIENNUHJvZmlsZVJlZjsKIyAxMDA2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMKdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlQ01Xb3JsZFJlZiogQ01Xb3JsZFJlZjsKCgoKCnR5cGVkZWYgVUlu
dDMyIENNRGlzcGxheUlEVHlwZTsKdHlwZWRlZiBVSW50MzIgQ01DaHJvbWF0aWNBZGFwdGF0aW9u
OwplbnVtIHsKICBjbVVzZURlZmF1bHRDaHJvbWF0aWNBZGFwdGF0aW9uID0gMCwKICBjbUxpbmVh
ckNocm9tYXRpY0FkYXB0YXRpb24gPSAxLAogIGNtVm9uS3JpZXNDaHJvbWF0aWNBZGFwdGF0aW9u
ID0gMiwKICBjbUJyYWRmb3JkQ2hyb21hdGljQWRhcHRhdGlvbiA9IDMKfTsKCgoKCnR5cGVkZWYg
T1NFcnIgKCAqIENNRmxhdHRlblByb2NQdHIpKFNJbnQzMiBjb21tYW5kLCBsb25nICpzaXplLCB2
b2lkICpkYXRhLCB2b2lkICpyZWZDb24pOwoKdHlwZWRlZiBDTUZsYXR0ZW5Qcm9jUHRyIENNRmxh
dHRlblVQUDsKIyAxMDQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9D
b2xvclN5bmNEZXByZWNhdGVkLmgiIDMKICBzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9f
KChhbHdheXNfaW5saW5lKSkgQ01GbGF0dGVuVVBQIE5ld0NNRmxhdHRlblVQUChDTUZsYXR0ZW5Q
cm9jUHRyIHVzZXJSb3V0aW5lKQogICAgeyByZXR1cm4gKENNRmxhdHRlblVQUCl1c2VyUm91dGlu
ZTsgfQoKICBzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkg
T1NFcnIgSW52b2tlQ01GbGF0dGVuVVBQKFNJbnQzMiBjb21tYW5kLCBsb25nICogc2l6ZSwgdm9p
ZCAqIGRhdGEsIHZvaWQgKiByZWZDb24sIENNRmxhdHRlblVQUCB1c2VyVVBQKQogICAgeyByZXR1
cm4gKCooKENNRmxhdHRlblByb2NQdHIpdXNlclVQUCkpKGNvbW1hbmQsIHNpemUsIGRhdGEsIHJl
ZkNvbik7IH0KCgogIHN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxp
bmUpKSB2b2lkIERpc3Bvc2VDTUZsYXR0ZW5VUFAoQ01GbGF0dGVuVVBQKQogIHsKICB9CiMgMTA2
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVwcmVj
YXRlZC5oIiAzCiNkZWZpbmUgQ01CSVRNQVBDQUxMQkFDS1BST0NQVFJfREVGSU5FRCAxCgoKdHlw
ZWRlZiBCb29sZWFuICggKiBDTUJpdG1hcENhbGxCYWNrUHJvY1B0cikoU0ludDMyIHByb2dyZXNz
LCB2b2lkICpyZWZDb24pOwoKdHlwZWRlZiBDTUJpdG1hcENhbGxCYWNrUHJvY1B0ciBDTUJpdG1h
cENhbGxCYWNrVVBQOwojIDEwODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFk
ZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwogIHN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmli
dXRlX18oKGFsd2F5c19pbmxpbmUpKSBDTUJpdG1hcENhbGxCYWNrVVBQIE5ld0NNQml0bWFwQ2Fs
bEJhY2tVUFAoQ01CaXRtYXBDYWxsQmFja1Byb2NQdHIgdXNlclJvdXRpbmUpCiAgICB7IHJldHVy
biAoQ01CaXRtYXBDYWxsQmFja1VQUCl1c2VyUm91dGluZTsgfQoKICBzdGF0aWMgX19pbmxpbmVf
XyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgQm9vbGVhbiBJbnZva2VDTUJpdG1hcENh
bGxCYWNrVVBQKFNJbnQzMiBwcm9ncmVzcywgdm9pZCAqIHJlZkNvbiwgQ01CaXRtYXBDYWxsQmFj
a1VQUCB1c2VyVVBQKQogICAgeyByZXR1cm4gKCooKENNQml0bWFwQ2FsbEJhY2tQcm9jUHRyKXVz
ZXJVUFApKShwcm9ncmVzcywgcmVmQ29uKTsgfQoKCiAgc3RhdGljIF9faW5saW5lX18gX19hdHRy
aWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIHZvaWQgRGlzcG9zZUNNQml0bWFwQ2FsbEJhY2tVUFAo
Q01CaXRtYXBDYWxsQmFja1VQUCkKICB7CiAgfQojIDExMDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5j
LmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwp0eXBlZGVmIEJvb2xl
YW4gKCAqIENNQ29uY2F0Q2FsbEJhY2tQcm9jUHRyKShTSW50MzIgcHJvZ3Jlc3MsIHZvaWQgKnJl
ZkNvbik7Cgp0eXBlZGVmIENNQ29uY2F0Q2FsbEJhY2tQcm9jUHRyIENNQ29uY2F0Q2FsbEJhY2tV
UFA7CiMgMTEyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JT
eW5jRGVwcmVjYXRlZC5oIiAzCiAgc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3
YXlzX2lubGluZSkpIENNQ29uY2F0Q2FsbEJhY2tVUFAgTmV3Q01Db25jYXRDYWxsQmFja1VQUChD
TUNvbmNhdENhbGxCYWNrUHJvY1B0ciB1c2VyUm91dGluZSkKICAgIHsgcmV0dXJuIChDTUNvbmNh
dENhbGxCYWNrVVBQKXVzZXJSb3V0aW5lOyB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmli
dXRlX18oKGFsd2F5c19pbmxpbmUpKQogIEJvb2xlYW4gSW52b2tlQ01Db25jYXRDYWxsQmFja1VQ
UChTSW50MzIgcHJvZ3Jlc3MsIHZvaWQgKiByZWZDb24sIENNQ29uY2F0Q2FsbEJhY2tVUFAgdXNl
clVQUCkKICAgIHsgcmV0dXJuICgqKChDTUNvbmNhdENhbGxCYWNrUHJvY1B0cil1c2VyVVBQKSko
cHJvZ3Jlc3MsIHJlZkNvbik7IH0KCgogIHN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18o
KGFsd2F5c19pbmxpbmUpKSB2b2lkIERpc3Bvc2VDTUNvbmNhdENhbGxCYWNrVVBQKENNQ29uY2F0
Q2FsbEJhY2tVUFApCiAgewogIH0KIyAxMjIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdv
cmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMKfQoKCiAgICAgICAKCgpleHRlcm4g
IkMiIHsKIyAxMjQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xv
clN5bmNEZXByZWNhdGVkLmgiIDMKZW51bSB7CiAga0RlZmF1bHRDTU1TaWduYXR1cmUgPSAnYXBw
bCcKfTsKIyAxMjkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xv
clN5bmNEZXByZWNhdGVkLmgiIDMKZW51bSB7CiAgY21QUzdiaXQgPSAxLAogIGNtUFM4Yml0ID0g
Mgp9OwojIDEzMDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9y
U3luY0RlcHJlY2F0ZWQuaCIgMwplbnVtIHsKICBjbU9wZW5SZWFkU3Bvb2wgPSAxLAogIGNtT3Bl
bldyaXRlU3Bvb2wgPSAyLAogIGNtUmVhZFNwb29sID0gMywKICBjbVdyaXRlU3Bvb2wgPSA0LAog
IGNtQ2xvc2VTcG9vbCA9IDUKfTsKCgplbnVtIHsKICBjbU9wZW5SZWFkQWNjZXNzID0gMSwKICBj
bU9wZW5Xcml0ZUFjY2VzcyA9IDIsCiAgY21SZWFkQWNjZXNzID0gMywKICBjbVdyaXRlQWNjZXNz
ID0gNCwKICBjbUNsb3NlQWNjZXNzID0gNSwKICBjbUNyZWF0ZU5ld0FjY2VzcyA9IDYsCiAgY21B
Ym9ydFdyaXRlQWNjZXNzID0gNywKICBjbUJlZ2luQWNjZXNzID0gOCwKICBjbUVuZEFjY2VzcyA9
IDkKfTsKCgplbnVtIHsKICBjbUlucHV0VXNlID0gJ2lucHQnLAogIGNtT3V0cHV0VXNlID0gJ291
dHAnLAogIGNtRGlzcGxheVVzZSA9ICdkcGx5JywKICBjbVByb29mVXNlID0gJ3BydWYnCn07CgoK
CnVuaW9uIENNQXBwbGVQcm9maWxlSGVhZGVyIHsKCgoKICBDTTJIZWFkZXIgY20yOwogIENNNEhl
YWRlciBjbTQ7Cn07CnR5cGVkZWYgdW5pb24gQ01BcHBsZVByb2ZpbGVIZWFkZXIgQ01BcHBsZVBy
b2ZpbGVIZWFkZXI7CgoKdHlwZWRlZiBzdHJ1Y3QgQ01Db25jYXRQcm9maWxlU2V0IHsKICBVSW50
MTYga2V5SW5kZXg7CiAgVUludDE2IGNvdW50OwogIENNUHJvZmlsZVJlZiBwcm9maWxlU2V0WzFd
Owp9IENNQ29uY2F0UHJvZmlsZVNldDsKCgp0eXBlZGVmIHN0cnVjdCBOQ01Db25jYXRQcm9maWxl
U3BlYyB7CiAgVUludDMyIHJlbmRlcmluZ0ludGVudDsKICBVSW50MzIgdHJhbnNmb3JtVGFnOwog
IENNUHJvZmlsZVJlZiBwcm9maWxlOwp9IE5DTUNvbmNhdFByb2ZpbGVTcGVjOwoKdHlwZWRlZiBz
dHJ1Y3QgTkNNQ29uY2F0UHJvZmlsZVNldCB7CiAgT1NUeXBlIGNtbTsKICBVSW50MzIgZmxhZ3M7
CiAgVUludDMyIGZsYWdzTWFzazsKICBVSW50MzIgcHJvZmlsZUNvdW50OwogIE5DTUNvbmNhdFBy
b2ZpbGVTcGVjIHByb2ZpbGVTcGVjc1sxXTsKfSBOQ01Db25jYXRQcm9maWxlU2V0OwoKZW51bSB7
CiAga05vVHJhbnNmb3JtID0gMCwKICBrVXNlQXRvQiA9IDEsCiAga1VzZUJ0b0EgPSAyLAogIGtV
c2VCdG9CID0gMywKCiAga0RldmljZVRvUENTID0ga1VzZUF0b0IsCiAga1BDU1RvRGV2aWNlID0g
a1VzZUJ0b0EsCiAga1BDU1RvUENTID0ga1VzZUJ0b0IsCiAga1VzZVByb2ZpbGVJbnRlbnQgPSAo
aW50KTB4RkZGRkZGRkYKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgQ01SR0JDb2xvciB7CiAgVUludDE2
IHJlZDsKICBVSW50MTYgZ3JlZW47CiAgVUludDE2IGJsdWU7Cn0gQ01SR0JDb2xvcjsKCnR5cGVk
ZWYgc3RydWN0IENNQ01ZS0NvbG9yIHsKICBVSW50MTYgY3lhbjsKICBVSW50MTYgbWFnZW50YTsK
ICBVSW50MTYgeWVsbG93OwogIFVJbnQxNiBibGFjazsKfSBDTUNNWUtDb2xvcjsKCnR5cGVkZWYg
c3RydWN0IENNQ01ZQ29sb3IgewogIFVJbnQxNiBjeWFuOwogIFVJbnQxNiBtYWdlbnRhOwogIFVJ
bnQxNiB5ZWxsb3c7Cn0gQ01DTVlDb2xvcjsKCnR5cGVkZWYgc3RydWN0IENNSExTQ29sb3Igewog
IFVJbnQxNiBodWU7CiAgVUludDE2IGxpZ2h0bmVzczsKICBVSW50MTYgc2F0dXJhdGlvbjsKfSBD
TUhMU0NvbG9yOwoKdHlwZWRlZiBzdHJ1Y3QgQ01IU1ZDb2xvciB7CiAgVUludDE2IGh1ZTsKICBV
SW50MTYgc2F0dXJhdGlvbjsKICBVSW50MTYgdmFsdWU7Cn0gQ01IU1ZDb2xvcjsKCnR5cGVkZWYg
c3RydWN0IENNTGFiQ29sb3IgewogIFVJbnQxNiBMOwogIFVJbnQxNiBhOwogIFVJbnQxNiBiOwp9
IENNTGFiQ29sb3I7Cgp0eXBlZGVmIHN0cnVjdCBDTUx1dkNvbG9yIHsKICBVSW50MTYgTDsKICBV
SW50MTYgdTsKICBVSW50MTYgdjsKfSBDTUx1dkNvbG9yOwoKdHlwZWRlZiBzdHJ1Y3QgQ01ZeHlD
b2xvciB7CiAgVUludDE2IGNhcFk7CiAgVUludDE2IHg7CiAgVUludDE2IHk7Cn0gQ01ZeHlDb2xv
cjsKCnR5cGVkZWYgc3RydWN0IENNR3JheUNvbG9yIHsKICBVSW50MTYgZ3JheTsKfSBDTUdyYXlD
b2xvcjsKCnR5cGVkZWYgc3RydWN0IENNTXVsdGljaGFubmVsNUNvbG9yIHsKICBVSW50OCBjb21w
b25lbnRzWzVdOwp9IENNTXVsdGljaGFubmVsNUNvbG9yOwoKdHlwZWRlZiBzdHJ1Y3QgQ01NdWx0
aWNoYW5uZWw2Q29sb3IgewogIFVJbnQ4IGNvbXBvbmVudHNbNl07Cn0gQ01NdWx0aWNoYW5uZWw2
Q29sb3I7Cgp0eXBlZGVmIHN0cnVjdCBDTU11bHRpY2hhbm5lbDdDb2xvciB7CiAgVUludDggY29t
cG9uZW50c1s3XTsKfSBDTU11bHRpY2hhbm5lbDdDb2xvcjsKCnR5cGVkZWYgc3RydWN0IENNTXVs
dGljaGFubmVsOENvbG9yIHsKICBVSW50OCBjb21wb25lbnRzWzhdOwp9IENNTXVsdGljaGFubmVs
OENvbG9yOwoKdHlwZWRlZiBzdHJ1Y3QgQ01OYW1lZENvbG9yIHsKICBVSW50MzIgbmFtZWRDb2xv
ckluZGV4Owp9IENNTmFtZWRDb2xvcjsKCnR5cGVkZWYgdW5pb24gQ01Db2xvciB7CiAgQ01SR0JD
b2xvciByZ2I7CiAgQ01IU1ZDb2xvciBoc3Y7CiAgQ01ITFNDb2xvciBobHM7CiAgQ01YWVpDb2xv
ciBYWVo7CiAgQ01MYWJDb2xvciBMYWI7CiAgQ01MdXZDb2xvciBMdXY7CiAgQ01ZeHlDb2xvciBZ
eHk7CiAgQ01DTVlLQ29sb3IgY215azsKICBDTUNNWUNvbG9yIGNteTsKICBDTUdyYXlDb2xvciBn
cmF5OwogIENNTXVsdGljaGFubmVsNUNvbG9yIG1jNTsKICBDTU11bHRpY2hhbm5lbDZDb2xvciBt
YzY7CiAgQ01NdWx0aWNoYW5uZWw3Q29sb3IgbWM3OwogIENNTXVsdGljaGFubmVsOENvbG9yIG1j
ODsKICBDTU5hbWVkQ29sb3IgbmFtZWRDb2xvcjsKfSBDTUNvbG9yOwojIDE0OTggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwp0
eXBlZGVmIHN0cnVjdCBDTU1JbmZvIHsKICBzaXplX3QgZGF0YVNpemU7CiAgT1NUeXBlIENNTVR5
cGU7CiAgT1NUeXBlIENNTU1mcjsKICBVSW50MzIgQ01NVmVyc2lvbjsKICB1bnNpZ25lZCBjaGFy
IEFTQ0lJTmFtZVszMl07CiAgdW5zaWduZWQgY2hhciBBU0NJSURlc2NbMjU2XTsKICBVbmlDaGFy
Q291bnQgVW5pQ29kZU5hbWVDb3VudDsKICBVbmlDaGFyIFVuaUNvZGVOYW1lWzMyXTsKICBVbmlD
aGFyQ291bnQgVW5pQ29kZURlc2NDb3VudDsKICBVbmlDaGFyIFVuaUNvZGVEZXNjWzI1Nl07Cn0g
Q01NSW5mbzsKIyAxNTM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9D
b2xvclN5bmNEZXByZWNhdGVkLmgiIDMKZW51bSB7CiAgY21Db2xvclNwYWNlU3BhY2VNYXNrID0g
MHgwMDAwMDAzRiwKICBjbUNvbG9yU3BhY2VQcmVtdWxBbHBoYU1hc2sgPSAweDAwMDAwMDQwLAog
IGNtQ29sb3JTcGFjZUFscGhhTWFzayA9IDB4MDAwMDAwODAsCiAgY21Db2xvclNwYWNlU3BhY2VB
bmRBbHBoYU1hc2sgPSAweDAwMDAwMEZGLAogIGNtQ29sb3JTcGFjZVBhY2tpbmdNYXNrID0gMHgw
MDAwRkYwMCwKICBjbUNvbG9yU3BhY2VFbmNvZGluZ01hc2sgPSAweDAwMEYwMDAwLAogIGNtQ29s
b3JTcGFjZVJlc2VydmVkTWFzayA9IChpbnQpMHhGRkYwMDAwMAp9OwoKCmVudW0gewogIGNtTm9D
b2xvclBhY2tpbmcgPSAweDAwMDAsCiAgY21Xb3JkNUNvbG9yUGFja2luZyA9IDB4MDUwMCwKICBj
bVdvcmQ1NjVDb2xvclBhY2tpbmcgPSAweDA2MDAsCiAgY21Mb25nOENvbG9yUGFja2luZyA9IDB4
MDgwMCwKICBjbUxvbmcxMENvbG9yUGFja2luZyA9IDB4MEEwMCwKICBjbUFscGhhRmlyc3RQYWNr
aW5nID0gMHgxMDAwLAogIGNtT25lQml0RGlyZWN0UGFja2luZyA9IDB4MEIwMCwKICBjbUFscGhh
TGFzdFBhY2tpbmcgPSAweDAwMDAsCiAgY204XzhDb2xvclBhY2tpbmcgPSAweDI4MDAsCiAgY20x
Nl84Q29sb3JQYWNraW5nID0gMHgyMDAwLAogIGNtMjRfOENvbG9yUGFja2luZyA9IDB4MjEwMCwK
ICBjbTMyXzhDb2xvclBhY2tpbmcgPSBjbUxvbmc4Q29sb3JQYWNraW5nLAogIGNtNDBfOENvbG9y
UGFja2luZyA9IDB4MjIwMCwKICBjbTQ4XzhDb2xvclBhY2tpbmcgPSAweDIzMDAsCiAgY201Nl84
Q29sb3JQYWNraW5nID0gMHgyNDAwLAogIGNtNjRfOENvbG9yUGFja2luZyA9IDB4MjUwMCwKICBj
bTMyXzE2Q29sb3JQYWNraW5nID0gMHgyNjAwLAogIGNtNDhfMTZDb2xvclBhY2tpbmcgPSAweDI5
MDAsCiAgY202NF8xNkNvbG9yUGFja2luZyA9IDB4MkEwMCwKICBjbTMyXzMyQ29sb3JQYWNraW5n
ID0gMHgyNzAwLAogIGNtTGl0dGxlRW5kaWFuUGFja2luZyA9IDB4NDAwMCwKICBjbVJldmVyc2VD
aGFubmVsUGFja2luZyA9IDB4ODAwMAp9OwoKCmVudW0gewogIGNtU1JHQjE2Q2hhbm5lbEVuY29k
aW5nID0gMHgwMDAxMDAwMAp9OwoKCmVudW0gewogIGNtTm9TcGFjZSA9IDB4MDAwMCwKICBjbVJH
QlNwYWNlID0gMHgwMDAxLAogIGNtQ01ZS1NwYWNlID0gMHgwMDAyLAogIGNtSFNWU3BhY2UgPSAw
eDAwMDMsCiAgY21ITFNTcGFjZSA9IDB4MDAwNCwKICBjbVlYWVNwYWNlID0gMHgwMDA1LAogIGNt
WFlaU3BhY2UgPSAweDAwMDYsCiAgY21MVVZTcGFjZSA9IDB4MDAwNywKICBjbUxBQlNwYWNlID0g
MHgwMDA4LAogIGNtUmVzZXJ2ZWRTcGFjZTEgPSAweDAwMDksCiAgY21HcmF5U3BhY2UgPSAweDAw
MEEsCiAgY21SZXNlcnZlZFNwYWNlMiA9IDB4MDAwQiwKICBjbUdhbXV0UmVzdWx0U3BhY2UgPSAw
eDAwMEMsCiAgY21OYW1lZEluZGV4ZWRTcGFjZSA9IDB4MDAxMCwKICBjbU1DRml2ZVNwYWNlID0g
MHgwMDExLAogIGNtTUNTaXhTcGFjZSA9IDB4MDAxMiwKICBjbU1DU2V2ZW5TcGFjZSA9IDB4MDAx
MywKICBjbU1DRWlnaHRTcGFjZSA9IDB4MDAxNCwKICBjbUFscGhhUG11bFNwYWNlID0gMHgwMDQw
LAogIGNtQWxwaGFTcGFjZSA9IDB4MDA4MCwKICBjbVJHQkFTcGFjZSA9IGNtUkdCU3BhY2UgKyBj
bUFscGhhU3BhY2UsCiAgY21HcmF5QVNwYWNlID0gY21HcmF5U3BhY2UgKyBjbUFscGhhU3BhY2Us
CiAgY21SR0JBUG11bFNwYWNlID0gY21SR0JBU3BhY2UgKyBjbUFscGhhUG11bFNwYWNlLAogIGNt
R3JheUFQbXVsU3BhY2UgPSBjbUdyYXlBU3BhY2UgKyBjbUFscGhhUG11bFNwYWNlCn07CgoKCgpl
bnVtIHsKICBjbUdyYXk4U3BhY2UgPSBjbUdyYXlTcGFjZSArIGNtOF84Q29sb3JQYWNraW5nLAog
IGNtR3JheTE2U3BhY2UgPSBjbUdyYXlTcGFjZSwKICBjbUdyYXkxNkxTcGFjZSA9IGNtR3JheVNw
YWNlICsgY21MaXR0bGVFbmRpYW5QYWNraW5nLAogIGNtR3JheUExNlNwYWNlID0gY21HcmF5QVNw
YWNlICsgY20xNl84Q29sb3JQYWNraW5nLAogIGNtR3JheUEzMlNwYWNlID0gY21HcmF5QVNwYWNl
LAogIGNtR3JheUEzMkxTcGFjZSA9IGNtR3JheUFTcGFjZSArIGNtTGl0dGxlRW5kaWFuUGFja2lu
ZywKICBjbUdyYXlBMTZQbXVsU3BhY2UgPSBjbUdyYXlBUG11bFNwYWNlICsgY20xNl84Q29sb3JQ
YWNraW5nLAogIGNtR3JheUEzMlBtdWxTcGFjZSA9IGNtR3JheUFQbXVsU3BhY2UsCiAgY21HcmF5
QTMyTFBtdWxTcGFjZSA9IGNtR3JheUFQbXVsU3BhY2UgKyBjbUxpdHRsZUVuZGlhblBhY2tpbmcs
CiAgY21SR0IxNlNwYWNlID0gY21SR0JTcGFjZSArIGNtV29yZDVDb2xvclBhY2tpbmcsCiAgY21S
R0IxNkxTcGFjZSA9IGNtUkdCU3BhY2UgKyBjbVdvcmQ1Q29sb3JQYWNraW5nICsgY21MaXR0bGVF
bmRpYW5QYWNraW5nLAogIGNtUkdCNTY1U3BhY2UgPSBjbVJHQlNwYWNlICsgY21Xb3JkNTY1Q29s
b3JQYWNraW5nLAogIGNtUkdCNTY1TFNwYWNlID0gY21SR0JTcGFjZSArIGNtV29yZDU2NUNvbG9y
UGFja2luZyArIGNtTGl0dGxlRW5kaWFuUGFja2luZywKICBjbVJHQjI0U3BhY2UgPSBjbVJHQlNw
YWNlICsgY20yNF84Q29sb3JQYWNraW5nLAogIGNtUkdCMzJTcGFjZSA9IGNtUkdCU3BhY2UgKyBj
bTMyXzhDb2xvclBhY2tpbmcsCiAgY21SR0I0OFNwYWNlID0gY21SR0JTcGFjZSArIGNtNDhfMTZD
b2xvclBhY2tpbmcsCiAgY21SR0I0OExTcGFjZSA9IGNtUkdCU3BhY2UgKyBjbTQ4XzE2Q29sb3JQ
YWNraW5nICsgY21MaXR0bGVFbmRpYW5QYWNraW5nLAogIGNtQVJHQjMyU3BhY2UgPSBjbVJHQkFT
cGFjZSArIGNtMzJfOENvbG9yUGFja2luZyArIGNtQWxwaGFGaXJzdFBhY2tpbmcsCiAgY21BUkdC
NjRTcGFjZSA9IGNtUkdCQVNwYWNlICsgY202NF8xNkNvbG9yUGFja2luZyArIGNtQWxwaGFGaXJz
dFBhY2tpbmcsCiAgY21BUkdCNjRMU3BhY2UgPSBjbVJHQkFTcGFjZSArIGNtNjRfMTZDb2xvclBh
Y2tpbmcgKyBjbUFscGhhRmlyc3RQYWNraW5nICsgY21MaXR0bGVFbmRpYW5QYWNraW5nLAogIGNt
UkdCQTMyU3BhY2UgPSBjbVJHQkFTcGFjZSArIGNtMzJfOENvbG9yUGFja2luZyArIGNtQWxwaGFM
YXN0UGFja2luZywKICBjbVJHQkE2NFNwYWNlID0gY21SR0JBU3BhY2UgKyBjbTY0XzE2Q29sb3JQ
YWNraW5nICsgY21BbHBoYUxhc3RQYWNraW5nLAogIGNtUkdCQTY0TFNwYWNlID0gY21SR0JBU3Bh
Y2UgKyBjbTY0XzE2Q29sb3JQYWNraW5nICsgY21BbHBoYUxhc3RQYWNraW5nICsgY21MaXR0bGVF
bmRpYW5QYWNraW5nLAogIGNtQVJHQjMyUG11bFNwYWNlID0gY21SR0JBUG11bFNwYWNlICsgY20z
Ml84Q29sb3JQYWNraW5nICsgY21BbHBoYUZpcnN0UGFja2luZywKICBjbUFSR0I2NFBtdWxTcGFj
ZSA9IGNtUkdCQVBtdWxTcGFjZSArIGNtNjRfMTZDb2xvclBhY2tpbmcgKyBjbUFscGhhRmlyc3RQ
YWNraW5nLAogIGNtQVJHQjY0TFBtdWxTcGFjZSA9IGNtUkdCQVBtdWxTcGFjZSArIGNtNjRfMTZD
b2xvclBhY2tpbmcgKyBjbUFscGhhRmlyc3RQYWNraW5nICsgY21MaXR0bGVFbmRpYW5QYWNraW5n
LAogIGNtUkdCQTMyUG11bFNwYWNlID0gY21SR0JBUG11bFNwYWNlICsgY20zMl84Q29sb3JQYWNr
aW5nICsgY21BbHBoYUxhc3RQYWNraW5nLAogIGNtUkdCQTY0UG11bFNwYWNlID0gY21SR0JBUG11
bFNwYWNlICsgY202NF8xNkNvbG9yUGFja2luZyArIGNtQWxwaGFMYXN0UGFja2luZywKICBjbVJH
QkE2NExQbXVsU3BhY2UgPSBjbVJHQkFQbXVsU3BhY2UgKyBjbTY0XzE2Q29sb3JQYWNraW5nICsg
Y21BbHBoYUxhc3RQYWNraW5nICsgY21MaXR0bGVFbmRpYW5QYWNraW5nLAogIGNtQ01ZSzMyU3Bh
Y2UgPSBjbUNNWUtTcGFjZSArIGNtMzJfOENvbG9yUGFja2luZywKICBjbUNNWUs2NFNwYWNlID0g
Y21DTVlLU3BhY2UgKyBjbTY0XzE2Q29sb3JQYWNraW5nLAogIGNtQ01ZSzY0TFNwYWNlID0gY21D
TVlLU3BhY2UgKyBjbTY0XzE2Q29sb3JQYWNraW5nICsgY21MaXR0bGVFbmRpYW5QYWNraW5nLAog
IGNtSFNWMzJTcGFjZSA9IGNtSFNWU3BhY2UgKyBjbUxvbmcxMENvbG9yUGFja2luZywKICBjbUhM
UzMyU3BhY2UgPSBjbUhMU1NwYWNlICsgY21Mb25nMTBDb2xvclBhY2tpbmcsCiAgY21ZWFkzMlNw
YWNlID0gY21ZWFlTcGFjZSArIGNtTG9uZzEwQ29sb3JQYWNraW5nLAogIGNtWFlaMjRTcGFjZSA9
IGNtWFlaU3BhY2UgKyBjbTI0XzhDb2xvclBhY2tpbmcsCiAgY21YWVozMlNwYWNlID0gY21YWVpT
cGFjZSArIGNtTG9uZzEwQ29sb3JQYWNraW5nLAogIGNtWFlaNDhTcGFjZSA9IGNtWFlaU3BhY2Ug
KyBjbTQ4XzE2Q29sb3JQYWNraW5nLAogIGNtWFlaNDhMU3BhY2UgPSBjbVhZWlNwYWNlICsgY200
OF8xNkNvbG9yUGFja2luZyArIGNtTGl0dGxlRW5kaWFuUGFja2luZywKICBjbUxVVjMyU3BhY2Ug
PSBjbUxVVlNwYWNlICsgY21Mb25nMTBDb2xvclBhY2tpbmcsCiAgY21MQUIyNFNwYWNlID0gY21M
QUJTcGFjZSArIGNtMjRfOENvbG9yUGFja2luZywKICBjbUxBQjMyU3BhY2UgPSBjbUxBQlNwYWNl
ICsgY21Mb25nMTBDb2xvclBhY2tpbmcsCiAgY21MQUI0OFNwYWNlID0gY21MQUJTcGFjZSArIGNt
NDhfMTZDb2xvclBhY2tpbmcsCiAgY21MQUI0OExTcGFjZSA9IGNtTEFCU3BhY2UgKyBjbTQ4XzE2
Q29sb3JQYWNraW5nICsgY21MaXR0bGVFbmRpYW5QYWNraW5nLAogIGNtR2FtdXRSZXN1bHQxU3Bh
Y2UgPSBjbU9uZUJpdERpcmVjdFBhY2tpbmcgKyBjbUdhbXV0UmVzdWx0U3BhY2UsCiAgY21OYW1l
ZEluZGV4ZWQzMlNwYWNlID0gY20zMl8zMkNvbG9yUGFja2luZyArIGNtTmFtZWRJbmRleGVkU3Bh
Y2UsCiAgY21OYW1lZEluZGV4ZWQzMkxTcGFjZSA9IGNtMzJfMzJDb2xvclBhY2tpbmcgKyBjbU5h
bWVkSW5kZXhlZFNwYWNlICsgY21MaXR0bGVFbmRpYW5QYWNraW5nLAogIGNtTUNGaXZlOFNwYWNl
ID0gY200MF84Q29sb3JQYWNraW5nICsgY21NQ0ZpdmVTcGFjZSwKICBjbU1DU2l4OFNwYWNlID0g
Y200OF84Q29sb3JQYWNraW5nICsgY21NQ1NpeFNwYWNlLAogIGNtTUNTZXZlbjhTcGFjZSA9IGNt
NTZfOENvbG9yUGFja2luZyArIGNtTUNTZXZlblNwYWNlLAogIGNtTUNFaWdodDhTcGFjZSA9IGNt
NjRfOENvbG9yUGFja2luZyArIGNtTUNFaWdodFNwYWNlCn07CgoKdHlwZWRlZiBVSW50MzIgQ01C
aXRtYXBDb2xvclNwYWNlOwoKdHlwZWRlZiBzdHJ1Y3QgQ01CaXRtYXAgewogIGNoYXIgKiBpbWFn
ZTsKICBzaXplX3Qgd2lkdGg7CiAgc2l6ZV90IGhlaWdodDsKICBzaXplX3Qgcm93Qnl0ZXM7CiAg
c2l6ZV90IHBpeGVsU2l6ZTsKICBDTUJpdG1hcENvbG9yU3BhY2Ugc3BhY2U7CiAgVUludDMyIHVz
ZXIxOwogIFVJbnQzMiB1c2VyMjsKfSBDTUJpdG1hcDsKCgoKCmVudW0gewoKCgoKCgogIENTX01B
WF9QQVRIID0gMTAyNAoKfTsKCgplbnVtIHsKICBjbU5vUHJvZmlsZUJhc2UgPSAwLAoKCgoKCgog
IGNtUGF0aEJhc2VkUHJvZmlsZSA9IDUsCiAgY21CdWZmZXJCYXNlZFByb2ZpbGUgPSA2Cn07CiMg
MTcxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVw
cmVjYXRlZC5oIiAzCnR5cGVkZWYgc3RydWN0IENNSGFuZGxlTG9jYXRpb24gewogIEhhbmRsZSBo
Owp9IENNSGFuZGxlTG9jYXRpb247CiMgMTcyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3
b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVwcmVjYXRlZC5oIiAzCnR5cGVkZWYgc3RydWN0IENNUGF0
aExvY2F0aW9uIHsKCgoKICBjaGFyIHBhdGhbQ1NfTUFYX1BBVEhdOwoKfSBDTVBhdGhMb2NhdGlv
bjsKCnR5cGVkZWYgc3RydWN0IENNQnVmZmVyTG9jYXRpb24gewogIHZvaWQgKiBidWZmZXI7CiAg
VUludDMyIHNpemU7Cn0gQ01CdWZmZXJMb2NhdGlvbjsKCnR5cGVkZWYgdW5pb24gQ01Qcm9mTG9j
IHsKCgoKICBDTUhhbmRsZUxvY2F0aW9uIGhhbmRsZUxvYzsKCgoKCiAgQ01QYXRoTG9jYXRpb24g
cGF0aExvYzsKICBDTUJ1ZmZlckxvY2F0aW9uIGJ1ZmZlckxvYzsKfSBDTVByb2ZMb2M7Cgp0eXBl
ZGVmIHN0cnVjdCBDTVByb2ZpbGVMb2NhdGlvbiB7CiAgc2hvcnQgbG9jVHlwZTsKICBDTVByb2ZM
b2MgdTsKfSBDTVByb2ZpbGVMb2NhdGlvbjsKCmVudW0gewogIGNtT3JpZ2luYWxQcm9maWxlTG9j
YXRpb25TaXplID0gNzIsCiAgY21DdXJyZW50UHJvZmlsZUxvY2F0aW9uU2l6ZSA9IHNpemVvZihD
TVByb2ZpbGVMb2NhdGlvbikKfTsKCgoKCmVudW0gewogIGNtUHJvZmlsZUl0ZXJhdGVEYXRhVmVy
c2lvbjEgPSAweDAwMDEwMDAwLAogIGNtUHJvZmlsZUl0ZXJhdGVEYXRhVmVyc2lvbjIgPSAweDAw
MDIwMDAwLAogIGNtUHJvZmlsZUl0ZXJhdGVEYXRhVmVyc2lvbjMgPSAweDAwMDMwMDAwLAogIGNt
UHJvZmlsZUl0ZXJhdGVEYXRhVmVyc2lvbjQgPSAweDAwMDQwMDAwCn07Cgp0eXBlZGVmIHN0cnVj
dCBDTVByb2ZpbGVJdGVyYXRlRGF0YSB7CiAgVUludDMyIGRhdGFWZXJzaW9uOwogIENNMkhlYWRl
ciBoZWFkZXI7CiAgU2NyaXB0Q29kZSBjb2RlOwogIFN0cjI1NSBuYW1lOwogIENNUHJvZmlsZUxv
Y2F0aW9uIGxvY2F0aW9uOwogIFVuaUNoYXJDb3VudCB1bmlDb2RlTmFtZUNvdW50OwogIFVuaUNo
YXIgKiB1bmlDb2RlTmFtZTsKICB1bnNpZ25lZCBjaGFyICogYXNjaWlOYW1lOwogIENNTWFrZUFu
ZE1vZGVsICogbWFrZUFuZE1vZGVsOwogIENNUHJvZmlsZU1ENSAqIGRpZ2VzdDsKfSBDTVByb2Zp
bGVJdGVyYXRlRGF0YTsKCgoKCnR5cGVkZWYgT1NFcnIgKCAqIENNUHJvZmlsZUl0ZXJhdGVQcm9j
UHRyKShDTVByb2ZpbGVJdGVyYXRlRGF0YSAqaXRlcmF0ZURhdGEsIHZvaWQgKnJlZkNvbik7Cgp0
eXBlZGVmIENNUHJvZmlsZUl0ZXJhdGVQcm9jUHRyIENNUHJvZmlsZUl0ZXJhdGVVUFA7CiMgMTgw
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVwcmVj
YXRlZC5oIiAzCiAgc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGlu
ZSkpIENNUHJvZmlsZUl0ZXJhdGVVUFAgTmV3Q01Qcm9maWxlSXRlcmF0ZVVQUChDTVByb2ZpbGVJ
dGVyYXRlUHJvY1B0ciB1c2VyUm91dGluZSkKICAgIHsgcmV0dXJuIChDTVByb2ZpbGVJdGVyYXRl
VVBQKXVzZXJSb3V0aW5lOyB9CgogIHN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX18oKGFs
d2F5c19pbmxpbmUpKSBPU0VyciBJbnZva2VDTVByb2ZpbGVJdGVyYXRlVVBQKENNUHJvZmlsZUl0
ZXJhdGVEYXRhICogaXRlcmF0ZURhdGEsIHZvaWQgKiByZWZDb24sIENNUHJvZmlsZUl0ZXJhdGVV
UFAgdXNlclVQUCkKICAgIHsgcmV0dXJuICgqKChDTVByb2ZpbGVJdGVyYXRlUHJvY1B0cil1c2Vy
VVBQKSkoaXRlcmF0ZURhdGEsIHJlZkNvbik7IH0KCgogIHN0YXRpYyBfX2lubGluZV9fIF9fYXR0
cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSB2b2lkIERpc3Bvc2VDTVByb2ZpbGVJdGVyYXRlVVBQ
KENNUHJvZmlsZUl0ZXJhdGVVUFApIHt9CiMgMTgyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJh
bWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVwcmVjYXRlZC5oIiAzCnR5cGVkZWYgT1NFcnIgKCAq
IENNTUl0ZXJhdGVQcm9jUHRyKShDTU1JbmZvICppdGVyYXRlRGF0YSwgdm9pZCAqcmVmQ29uKTsK
CnR5cGVkZWYgQ01NSXRlcmF0ZVByb2NQdHIgQ01NSXRlcmF0ZVVQUDsKIyAxODQyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMK
ICBzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgQ01NSXRl
cmF0ZVVQUCBOZXdDTU1JdGVyYXRlVVBQKENNTUl0ZXJhdGVQcm9jUHRyIHVzZXJSb3V0aW5lKQog
ICAgeyByZXR1cm4gKENNTUl0ZXJhdGVVUFApdXNlclJvdXRpbmU7IH0KCiAgc3RhdGljIF9faW5s
aW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIE9TRXJyIEludm9rZUNNTUl0ZXJh
dGVVUFAoQ01NSW5mbyAqIGl0ZXJhdGVEYXRhLCB2b2lkICogcmVmQ29uLCBDTU1JdGVyYXRlVVBQ
IHVzZXJVUFApCiAgICB7IHJldHVybiAoKigoQ01NSXRlcmF0ZVByb2NQdHIpdXNlclVQUCkpKGl0
ZXJhdGVEYXRhLCByZWZDb24pOyB9CgoKICBzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9f
KChhbHdheXNfaW5saW5lKSkgdm9pZCBEaXNwb3NlQ01NSXRlcmF0ZVVQUChDTU1JdGVyYXRlVVBQ
KSB7fQojIDE4NTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9y
U3luY0RlcHJlY2F0ZWQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIENNTGFiVG9MYWJQcm9jUHRyKShm
bG9hdCAqTCwgZmxvYXQgKmEsIGZsb2F0ICpiLCB2b2lkICpyZWZjb24pOwoKCgoKX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01OZXdQcm9maWxl
KAogIENNUHJvZmlsZVJlZiAqIHByb2YsCiAgY29uc3QgQ01Qcm9maWxlTG9jYXRpb24gKiB0aGVQ
cm9maWxlKSA7CiMgMTg4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMv
Q29sb3JTeW5jRGVwcmVjYXRlZC5oIiAzCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIGV4dGVybiBDTUVycm9yCk5DV05ld0xpbmtQcm9maWxlKAogIENNUHJvZmlsZVJlZiAq
IHByb2YsCiAgY29uc3QgQ01Qcm9maWxlTG9jYXRpb24gKiB0YXJnZXRMb2NhdGlvbiwKICBOQ01D
b25jYXRQcm9maWxlU2V0ICogcHJvZmlsZVNldCwKICBDTUNvbmNhdENhbGxCYWNrVVBQIHByb2Ms
CiAgdm9pZCAqIHJlZkNvbikgOwojIDE5NTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29y
ay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTU1ha2VQcm9maWxlKAogIENNUHJvZmls
ZVJlZiBwcm9mLAogIENGRGljdGlvbmFyeVJlZiBzcGVjKSA7CgoKCgpfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTU9wZW5Qcm9maWxlKAogIENN
UHJvZmlsZVJlZiAqIHByb2YsCiAgY29uc3QgQ01Qcm9maWxlTG9jYXRpb24gKiB0aGVQcm9maWxl
KSA7CgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJy
b3IKQ01DbG9zZVByb2ZpbGUoQ01Qcm9maWxlUmVmIHByb2YpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTVVwZGF0ZVByb2ZpbGUoQ01Q
cm9maWxlUmVmIHByb2YpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KSBleHRlcm4gQ01FcnJvcgpDTUNvcHlQcm9maWxlKAogIENNUHJvZmlsZVJlZiAqIHRhcmdldFBy
b2YsCiAgY29uc3QgQ01Qcm9maWxlTG9jYXRpb24gKiB0YXJnZXRMb2NhdGlvbiwKICBDTVByb2Zp
bGVSZWYgc3JjUHJvZikgOwoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
IGV4dGVybiBDTUVycm9yCkNNVmFsaWRhdGVQcm9maWxlKAogIENNUHJvZmlsZVJlZiBwcm9mLAog
IEJvb2xlYW4gKiB2YWxpZCwKICBCb29sZWFuICogcHJlZmVycmVkQ01Nbm90Zm91bmQpIDsKIyAx
OTk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXBy
ZWNhdGVkLmgiIDMKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJu
IENNRXJyb3IKTkNNR2V0UHJvZmlsZUxvY2F0aW9uKAogIENNUHJvZmlsZVJlZiBwcm9mLAogIENN
UHJvZmlsZUxvY2F0aW9uICogdGhlUHJvZmlsZSwKICBVSW50MzIgKiBsb2NhdGlvblNpemUpIDsK
IyAyMDA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNE
ZXByZWNhdGVkLmgiIDMKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0
ZXJuIENGRGF0YVJlZgpDTVByb2ZpbGVDb3B5SUNDRGF0YSgKICBDRkFsbG9jYXRvclJlZiBhbGxv
Y2F0b3IsCiAgQ01Qcm9maWxlUmVmIHByb2YpIDsKIyAyMDM3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3lu
Yy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01HZXRQcm9maWxlSGVh
ZGVyKAogIENNUHJvZmlsZVJlZiBwcm9mLAogIENNQXBwbGVQcm9maWxlSGVhZGVyICogaGVhZGVy
KSA7CgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJy
b3IKQ01TZXRQcm9maWxlSGVhZGVyKAogIENNUHJvZmlsZVJlZiBwcm9mLAogIGNvbnN0IENNQXBw
bGVQcm9maWxlSGVhZGVyICogaGVhZGVyKSA7CgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01DbG9uZVByb2ZpbGVSZWYoQ01Qcm9maWxlUmVm
IHByb2YpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4g
Q01FcnJvcgpDTUdldFByb2ZpbGVSZWZDb3VudCgKICBDTVByb2ZpbGVSZWYgcHJvZiwKICBsb25n
ICogY291bnQpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRl
cm4gQ01FcnJvcgpDTVByb2ZpbGVNb2RpZmllZCgKICBDTVByb2ZpbGVSZWYgcHJvZiwKICBCb29s
ZWFuICogbW9kaWZpZWQpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KSBleHRlcm4gQ01FcnJvcgpDTUdldFByb2ZpbGVNRDUoCiAgQ01Qcm9maWxlUmVmIHByb2YsCiAg
Q01Qcm9maWxlTUQ1IGRpZ2VzdCkgOwoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01Db3VudFByb2ZpbGVFbGVtZW50cygKICBDTVByb2Zp
bGVSZWYgcHJvZiwKICBVSW50MzIgKiBlbGVtZW50Q291bnQpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTVByb2ZpbGVFbGVtZW50RXhp
c3RzKAogIENNUHJvZmlsZVJlZiBwcm9mLAogIE9TVHlwZSB0YWcsCiAgQm9vbGVhbiAqIGZvdW5k
KSA7CgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJy
b3IKQ01HZXRQcm9maWxlRWxlbWVudCgKICBDTVByb2ZpbGVSZWYgcHJvZiwKICBPU1R5cGUgdGFn
LAogIFVJbnQzMiAqIGVsZW1lbnRTaXplLAogIHZvaWQgKiBlbGVtZW50RGF0YSkgOwoKCl9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDTUVycm9yCkNNU2V0UHJv
ZmlsZUVsZW1lbnQoCiAgQ01Qcm9maWxlUmVmIHByb2YsCiAgT1NUeXBlIHRhZywKICBVSW50MzIg
ZWxlbWVudFNpemUsCiAgY29uc3Qgdm9pZCAqIGVsZW1lbnREYXRhKSA7CgoKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01TZXRQcm9maWxlRWxl
bWVudFNpemUoCiAgQ01Qcm9maWxlUmVmIHByb2YsCiAgT1NUeXBlIHRhZywKICBVSW50MzIgZWxl
bWVudFNpemUpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRl
cm4gQ01FcnJvcgpDTVNldFByb2ZpbGVFbGVtZW50UmVmZXJlbmNlKAogIENNUHJvZmlsZVJlZiBw
cm9mLAogIE9TVHlwZSBlbGVtZW50VGFnLAogIE9TVHlwZSByZWZlcmVuY2VUYWcpIDsKCgpfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTUdldFBh
cnRpYWxQcm9maWxlRWxlbWVudCgKICBDTVByb2ZpbGVSZWYgcHJvZiwKICBPU1R5cGUgdGFnLAog
IFVJbnQzMiBvZmZzZXQsCiAgVUludDMyICogYnl0ZUNvdW50LAogIHZvaWQgKiBlbGVtZW50RGF0
YSkgOwoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDTUVy
cm9yCkNNU2V0UGFydGlhbFByb2ZpbGVFbGVtZW50KAogIENNUHJvZmlsZVJlZiBwcm9mLAogIE9T
VHlwZSB0YWcsCiAgVUludDMyIG9mZnNldCwKICBVSW50MzIgYnl0ZUNvdW50LAogIGNvbnN0IHZv
aWQgKiBlbGVtZW50RGF0YSkgOwoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpIGV4dGVybiBDTUVycm9yCkNNR2V0SW5kUHJvZmlsZUVsZW1lbnRJbmZvKAogIENNUHJvZmls
ZVJlZiBwcm9mLAogIFVJbnQzMiBpbmRleCwKICBPU1R5cGUgKiB0YWcsCiAgVUludDMyICogZWxl
bWVudFNpemUsCiAgQm9vbGVhbiAqIHJlZnMpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTUdldEluZFByb2ZpbGVFbGVtZW50KAogIENN
UHJvZmlsZVJlZiBwcm9mLAogIFVJbnQzMiBpbmRleCwKICBVSW50MzIgKiBlbGVtZW50U2l6ZSwK
ICB2b2lkICogZWxlbWVudERhdGEpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTVJlbW92ZVByb2ZpbGVFbGVtZW50KAogIENNUHJvZmls
ZVJlZiBwcm9mLAogIE9TVHlwZSB0YWcpIDsKIyAyMTY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5m
cmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMKX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01HZXRQcm9maWxlRGVzY3Jp
cHRpb25zKAogIENNUHJvZmlsZVJlZiBwcm9mLAogIGNoYXIgKiBhTmFtZSwKICBVSW50MzIgKiBh
Q291bnQsCiAgU3RyMjU1IG1OYW1lLAogIFNjcmlwdENvZGUgKiBtQ29kZSwKICBVbmlDaGFyICog
dU5hbWUsCiAgVW5pQ2hhckNvdW50ICogdUNvdW50KSA7CgoKX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01TZXRQcm9maWxlRGVzY3JpcHRpb25z
KAogIENNUHJvZmlsZVJlZiBwcm9mLAogIGNvbnN0IGNoYXIgKiBhTmFtZSwKICBVSW50MzIgYUNv
dW50LAogIENvbnN0U3RyMjU1UGFyYW0gbU5hbWUsCiAgU2NyaXB0Q29kZSBtQ29kZSwKICBjb25z
dCBVbmlDaGFyICogdU5hbWUsCiAgVW5pQ2hhckNvdW50IHVDb3VudCkgOwoKCl9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDTUVycm9yCkNNQ29weVByb2ZpbGVM
b2NhbGl6ZWRTdHJpbmdEaWN0aW9uYXJ5KAogIENNUHJvZmlsZVJlZiBwcm9mLAogIE9TVHlwZSB0
YWcsCiAgQ0ZEaWN0aW9uYXJ5UmVmICogdGhlRGljdCkgOwoKCl9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDTUVycm9yCkNNU2V0UHJvZmlsZUxvY2FsaXplZFN0
cmluZ0RpY3Rpb25hcnkoCiAgQ01Qcm9maWxlUmVmIHByb2YsCiAgT1NUeXBlIHRhZywKICBDRkRp
Y3Rpb25hcnlSZWYgdGhlRGljdCkgOwoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIGV4dGVybiBDTUVycm9yCkNNQ29weVByb2ZpbGVMb2NhbGl6ZWRTdHJpbmcoCiAgQ01Q
cm9maWxlUmVmIHByb2YsCiAgT1NUeXBlIHRhZywKICBDRlN0cmluZ1JlZiByZXFMb2NhbGUsCiAg
Q0ZTdHJpbmdSZWYgKiBsb2NhbGUsCiAgQ0ZTdHJpbmdSZWYgKiBzdHIpIDsKIyAyMjIxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgi
IDMKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IK
Q01Db3B5UHJvZmlsZURlc2NyaXB0aW9uU3RyaW5nKAogIENNUHJvZmlsZVJlZiBwcm9mLAogIENG
U3RyaW5nUmVmICogc3RyKSA7CgoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKSBleHRlcm4gQ01FcnJvcgpDTUdldE5hbWVkQ29sb3JJbmZvKAogIENNUHJvZmlsZVJlZiBw
cm9mLAogIFVJbnQzMiAqIGRldmljZUNoYW5uZWxzLAogIE9TVHlwZSAqIGRldmljZUNvbG9yU3Bh
Y2UsCiAgT1NUeXBlICogUENTQ29sb3JTcGFjZSwKICBVSW50MzIgKiBjb3VudCwKICBTdHJpbmdQ
dHIgcHJlZml4LAogIFN0cmluZ1B0ciBzdWZmaXgpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTUdldE5hbWVkQ29sb3JWYWx1ZSgKICBD
TVByb2ZpbGVSZWYgcHJvZiwKICBTdHJpbmdQdHIgbmFtZSwKICBDTUNvbG9yICogZGV2aWNlQ29s
b3IsCiAgQ01Db2xvciAqIFBDU0NvbG9yKSA7CgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01HZXRJbmROYW1lZENvbG9yVmFsdWUoCiAgQ01Q
cm9maWxlUmVmIHByb2YsCiAgVUludDMyIGluZGV4LAogIENNQ29sb3IgKiBkZXZpY2VDb2xvciwK
ICBDTUNvbG9yICogUENTQ29sb3IpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTUdldE5hbWVkQ29sb3JJbmRleCgKICBDTVByb2ZpbGVS
ZWYgcHJvZiwKICBTdHJpbmdQdHIgbmFtZSwKICBVSW50MzIgKiBpbmRleCkgOwoKCl9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDTUVycm9yCkNNR2V0TmFtZWRD
b2xvck5hbWUoCiAgQ01Qcm9maWxlUmVmIHByb2YsCiAgVUludDMyIGluZGV4LAogIFN0cmluZ1B0
ciBuYW1lKSA7CgoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRl
cm4gQ01FcnJvcgpOQ1dOZXdDb2xvcldvcmxkKAogIENNV29ybGRSZWYgKiBjdywKICBDTVByb2Zp
bGVSZWYgc3JjLAogIENNUHJvZmlsZVJlZiBkc3QpIDsKIyAyMjg3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9y
U3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMKX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKTkNXQ29uY2F0Q29s
b3JXb3JsZCgKICBDTVdvcmxkUmVmICogY3csCiAgTkNNQ29uY2F0UHJvZmlsZVNldCAqIHByb2Zp
bGVTZXQsCiAgQ01Db25jYXRDYWxsQmFja1VQUCBwcm9jLAogIHZvaWQgKiByZWZDb24pIDsKIyAy
MzA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXBy
ZWNhdGVkLmgiIDMKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJu
IHZvaWQKQ1dEaXNwb3NlQ29sb3JXb3JsZChDTVdvcmxkUmVmIGN3KSA7CgoKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ1dNYXRjaENvbG9ycygK
ICBDTVdvcmxkUmVmIGN3LAogIENNQ29sb3IgKiBteUNvbG9ycywKICBzaXplX3QgY291bnQpIDsK
CgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpD
V0NoZWNrQ29sb3JzKAogIENNV29ybGRSZWYgY3csCiAgQ01Db2xvciAqIG15Q29sb3JzLAogIHNp
emVfdCBjb3VudCwKICBVSW50OCAqIHJlc3VsdCkgOwoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDV01hdGNoQml0bWFwKAogIENNV29ybGRS
ZWYgY3csCiAgQ01CaXRtYXAgKiBiaXRtYXAsCiAgQ01CaXRtYXBDYWxsQmFja1VQUCBwcm9ncmVz
c1Byb2MsCiAgdm9pZCAqIHJlZkNvbiwKICBDTUJpdG1hcCAqIG1hdGNoZWRCaXRtYXApIDsKCgpf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDV0No
ZWNrQml0bWFwKAogIENNV29ybGRSZWYgY3csCiAgY29uc3QgQ01CaXRtYXAgKiBiaXRtYXAsCiAg
Q01CaXRtYXBDYWxsQmFja1VQUCBwcm9ncmVzc1Byb2MsCiAgdm9pZCAqIHJlZkNvbiwKICBDTUJp
dG1hcCAqIHJlc3VsdEJpdG1hcCkgOwoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBleHRlcm4gVUludDMyCkNXR2V0Q01NU2lnbmF0dXJlKAogIENNV29ybGRSZWYgY3cp
IDsKCgplbnVtIHsKICBjbVRleHR1cmVSR0J0b1JHQlg4ID0gMCwKICBjbVRleHR1cmVSR0J0b1JH
QlgxNiA9IDEsCiAgY21UZXh0dXJlUkdCdG9SR0JYRmxvYXQzMiA9IDIKfTsKIyAyMzY1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgi
IDMKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IK
Q1dGaWxsTG9va3VwVGV4dHVyZSgKICBDTVdvcmxkUmVmIGN3LAogIFVJbnQzMiBncmlkUG9pbnRz
LAogIFVJbnQzMiBmb3JtYXQsCiAgVUludDMyIGRhdGFTaXplLAogIHZvaWQgKiBkYXRhKSA7CgoK
CgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpD
TUdldFN5c3RlbVByb2ZpbGUoQ01Qcm9maWxlUmVmICogcHJvZikgOwojIDIzOTQgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwpf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTUdl
dERlZmF1bHRQcm9maWxlQnlTcGFjZSgKICBPU1R5cGUgZGF0YUNvbG9yU3BhY2UsCiAgQ01Qcm9m
aWxlUmVmICogcHJvZikgOwojIDI0MDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9I
ZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTUdldERlZmF1bHRQcm9maWxlQnlVc2UoCiAg
T1NUeXBlIHVzZSwKICBDTVByb2ZpbGVSZWYgKiBwcm9mKSA7CiMgMjQyNCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVwcmVjYXRlZC5oIiAzCl9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDTUVycm9yCkNNR2V0UHJv
ZmlsZUJ5QVZJRCgKICBDTURpc3BsYXlJRFR5cGUgdGhlSUQsCiAgQ01Qcm9maWxlUmVmICogcHJv
ZikgOwoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDTUVy
cm9yCkNNU2V0UHJvZmlsZUJ5QVZJRCgKICBDTURpc3BsYXlJRFR5cGUgdGhlSUQsCiAgQ01Qcm9m
aWxlUmVmIHByb2YpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBl
eHRlcm4gQ01FcnJvcgpDTUdldEdhbW1hQnlBVklEKAogIENNRGlzcGxheUlEVHlwZSB0aGVJRCwK
ICBDTVZpZGVvQ2FyZEdhbW1hICogZ2FtbWEsCiAgVUludDMyICogc2l6ZSkgOwoKCl9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDTUVycm9yCkNNU2V0R2FtbWFC
eUFWSUQoCiAgQ01EaXNwbGF5SURUeXBlIHRoZUlELAogIENNVmlkZW9DYXJkR2FtbWEgKiBnYW1t
YSkgOwoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENN
RXJyb3IKQ01JdGVyYXRlQ29sb3JTeW5jRm9sZGVyKAogIENNUHJvZmlsZUl0ZXJhdGVVUFAgcHJv
YywKICBVSW50MzIgKiBzZWVkLAogIFVJbnQzMiAqIGNvdW50LAogIHZvaWQgKiByZWZDb24pIDsK
IyAyNTUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNE
ZXByZWNhdGVkLmgiIDMKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0
ZXJuIENNRXJyb3IKQ01JdGVyYXRlQ01NSW5mbygKICBDTU1JdGVyYXRlVVBQIHByb2MsCiAgVUlu
dDMyICogY291bnQsCiAgdm9pZCAqIHJlZkNvbikgOwoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpIGV4dGVybiBDTUVycm9yCkNNR2V0Q29sb3JTeW5jVmVyc2lvbihVSW50
MzIgKiB2ZXJzaW9uKSA7CgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkg
ZXh0ZXJuIENNRXJyb3IKQ01MYXVuY2hDb250cm9sUGFuZWwoVUludDMyIGZsYWdzKSA7CiMgMjY5
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVwcmVj
YXRlZC5oIiAzCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBD
TUVycm9yCkNNR2V0UFMyQ29sb3JTcGFjZSgKICBDTVByb2ZpbGVSZWYgc3JjUHJvZiwKICBVSW50
MzIgZmxhZ3MsCiAgQ01GbGF0dGVuVVBQIHByb2MsCiAgdm9pZCAqIHJlZkNvbiwKICBCb29sZWFu
ICogcHJlZmVycmVkQ01Nbm90Zm91bmQpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTUdldFBTMkNvbG9yUmVuZGVyaW5nSW50ZW50KAog
IENNUHJvZmlsZVJlZiBzcmNQcm9mLAogIFVJbnQzMiBmbGFncywKICBDTUZsYXR0ZW5VUFAgcHJv
YywKICB2b2lkICogcmVmQ29uLAogIEJvb2xlYW4gKiBwcmVmZXJyZWRDTU1ub3Rmb3VuZCkgOwoK
Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDTUVycm9yCkNN
R2V0UFMyQ29sb3JSZW5kZXJpbmcoCiAgQ01Qcm9maWxlUmVmIHNyY1Byb2YsCiAgQ01Qcm9maWxl
UmVmIGRzdFByb2YsCiAgVUludDMyIGZsYWdzLAogIENNRmxhdHRlblVQUCBwcm9jLAogIHZvaWQg
KiByZWZDb24sCiAgQm9vbGVhbiAqIHByZWZlcnJlZENNTW5vdGZvdW5kKSA7CgoKX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01HZXRQUzJDb2xv
clJlbmRlcmluZ1ZNU2l6ZSgKICBDTVByb2ZpbGVSZWYgc3JjUHJvZiwKICBDTVByb2ZpbGVSZWYg
ZHN0UHJvZiwKICBVSW50MzIgKiB2bVNpemUsCiAgQm9vbGVhbiAqIHByZWZlcnJlZENNTW5vdGZv
dW5kKSA7CiMgMjc0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29s
b3JTeW5jRGVwcmVjYXRlZC5oIiAzCiNkZWZpbmUga0NNUHJlZnNDaGFuZ2VkTm90aWZpY2F0aW9u
IENGU1RSKCJBcHBsZUNvbG9yU3luY1ByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbiIpCiMg
Mjc1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVw
cmVjYXRlZC5oIiAzCn0KCgogICAgICAgCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgplbnVtIENNRmxv
YXRCaXRtYXBGbGFncyB7CiAga0NNRmxvYXRCaXRtYXBGbGFnc05vbmUgPSAwLAogIGtDTUZsb2F0
Qml0bWFwRmxhZ3NBbHBoYSA9IDEsCiAga0NNRmxvYXRCaXRtYXBGbGFnc0FscGhhUHJlbXVsID0g
MiwKICBrQ01GbG9hdEJpdG1hcEZsYWdzUmFuZ2VDbGlwcGVkID0gNAp9Owp0eXBlZGVmIGVudW0g
Q01GbG9hdEJpdG1hcEZsYWdzIENNRmxvYXRCaXRtYXBGbGFnczsKIyAyODQxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMKdHlw
ZWRlZiBzdHJ1Y3QgQ01GbG9hdEJpdG1hcCB7CiAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogIGZs
b2F0ICogYnVmZmVyc1sxNl07CiAgc2l6ZV90IGhlaWdodDsKICBzaXplX3Qgd2lkdGg7CiAgcHRy
ZGlmZl90IHJvd1N0cmlkZTsKICBwdHJkaWZmX3QgY29sU3RyaWRlOwogIE9TVHlwZSBzcGFjZTsK
ICBDTUZsb2F0Qml0bWFwRmxhZ3MgZmxhZ3M7Cn0gQ01GbG9hdEJpdG1hcDsKCgoKCl9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBjb25zdCBmbG9hdCBrQ01JbGx1
bWluYW50RDUwWzNdIDsKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkg
ZXh0ZXJuIGNvbnN0IGZsb2F0IGtDTUlsbHVtaW5hbnRENjVbM10gOwojIDI4NzMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwpf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01GbG9hdEJpdG1h
cApDTUZsb2F0Qml0bWFwTWFrZUNodW5reSgKICBmbG9hdCAqIGJ1ZmZlciwKICBzaXplX3QgaGVp
Z2h0LAogIHNpemVfdCB3aWR0aCwKICBPU1R5cGUgc3BhY2UpIDsKIyAyODkyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMKX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01Db252
ZXJ0WFlaRmxvYXRCaXRtYXAoCiAgY29uc3QgQ01GbG9hdEJpdG1hcCAqIHNyYywKICBjb25zdCBm
bG9hdCBzcmNJbGx1bWluYW50WFlaWzNdLAogIENNRmxvYXRCaXRtYXAgKiBkc3QsCiAgY29uc3Qg
ZmxvYXQgZHN0SWxsdW1pbmFudFhZWlszXSwKICBDTUNocm9tYXRpY0FkYXB0YXRpb24gbWV0aG9k
KSA7CiMgMjkwOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JT
eW5jRGVwcmVjYXRlZC5oIiAzCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
IGV4dGVybiBDTUVycm9yCkNNQ29udmVydFJHQkZsb2F0Qml0bWFwKAogIGNvbnN0IENNRmxvYXRC
aXRtYXAgKiBzcmMsCiAgQ01GbG9hdEJpdG1hcCAqIGRzdCkgOwojIDI5MjUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwpfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTU1hdGNo
RmxvYXRCaXRtYXAoCiAgQ01Xb3JsZFJlZiBjdywKICBjb25zdCBDTUZsb2F0Qml0bWFwICogc3Jj
LAogIENNRmxvYXRCaXRtYXAgKiBkc3QpIDsKIyAyOTM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5m
cmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMKfQoKCiAgICAgICAKCgpl
eHRlcm4gIkMiIHsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRl
cm4gdm9pZApDV0NvbG9yV29ybGRTZXRQcm9wZXJ0eSgKICBDTVdvcmxkUmVmIGN3LAogIENGU3Ry
aW5nUmVmIGtleSwKICBDRlR5cGVSZWYgdmFsdWUpIDsKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSBleHRlcm4gY29uc3Qgdm9pZCoKQ1dDb2xvcldvcmxkR2V0UHJvcGVy
dHkoCiAgQ01Xb3JsZFJlZiBjdywKICBDRlN0cmluZ1JlZiBrZXkpIDsKCgoKCgoKZXh0ZXJuIENN
RXJyb3IKQ01NX0NvbmNhdENvbG9yV29ybGQoCiAgQ01Xb3JsZFJlZiBjdywKICBOQ01Db25jYXRQ
cm9maWxlU2V0ICogcHJvZmlsZVNldCwKICBDTUNvbmNhdENhbGxCYWNrVVBQIHByb2MsCiAgdm9p
ZCAqIHJlZkNvbik7CgpleHRlcm4gQ01FcnJvcgpDTU1fTWF0Y2hDb2xvcnMoCiAgQ01Xb3JsZFJl
ZiBjdywKICBDTUNvbG9yICogY29sb3JzLAogIFVJbnQzMiBjb3VudCk7CgpleHRlcm4gQ01FcnJv
cgpDTU1fQ2hlY2tDb2xvcnMoCiAgQ01Xb3JsZFJlZiBjdywKICBDTUNvbG9yICogY29sb3JzLAog
IFVJbnQzMiBjb3VudCwKICBVSW50OCAqIHJlc3VsdCk7CgoKCmV4dGVybiBDTUVycm9yCkNNTV9W
YWxpZGF0ZVByb2ZpbGUoCiAgQ01Qcm9maWxlUmVmIHByb2YsCiAgQm9vbGVhbiAqIHZhbGlkKTsK
CgoKZXh0ZXJuIENNRXJyb3IKQ01NX01hdGNoQml0bWFwKAogIENNV29ybGRSZWYgY3csCiAgQ01C
aXRtYXAgKiBiaXRtYXAsCiAgQ01CaXRtYXBDYWxsQmFja1VQUCBwcm9ncmVzc1Byb2MsCiAgdm9p
ZCAqIHJlZkNvbiwKICBDTUJpdG1hcCAqIG1hdGNoZWRCaXRtYXApOwoKZXh0ZXJuIENNRXJyb3IK
Q01NX0NoZWNrQml0bWFwKAogIENNV29ybGRSZWYgY3csCiAgY29uc3QgQ01CaXRtYXAgKiBiaXRt
YXAsCiAgQ01CaXRtYXBDYWxsQmFja1VQUCBwcm9ncmVzc1Byb2MsCiAgdm9pZCAqIHJlZkNvbiwK
ICBDTUJpdG1hcCAqIHJlc3VsdEJpdG1hcCk7CgoKCmV4dGVybiBDTUVycm9yCkNNTV9NYXRjaEZs
b2F0Qml0bWFwKAogIENNV29ybGRSZWYgY3csCiAgY29uc3QgQ01GbG9hdEJpdG1hcCAqIGJpdG1h
cCwKICBDTUZsb2F0Qml0bWFwICogcmVzdWx0Qml0bWFwKTsKCmV4dGVybiBDTUVycm9yCkNNTV9D
cmVhdGVMaW5rUHJvZmlsZSgKICBDTVByb2ZpbGVSZWYgcHJvZiwKICBOQ01Db25jYXRQcm9maWxl
U2V0ICogcHJvZmlsZVNldCwKICBDTUNvbmNhdENhbGxCYWNrVVBQIHByb2MsCiAgdm9pZCAqIHJl
ZkNvbik7CgpleHRlcm4gQ0ZUeXBlUmVmCkNNTV9HZXRQcm9wZXJ0eSgKICBDTVdvcmxkUmVmIGN3
LAogIENGU3RyaW5nUmVmIHJlcXVlc3RlZEtleSk7CgoKfQoKCiAgICAgICAKIyAzMTUwICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgi
IDMKICAgICAgIAoKCmV4dGVybiAiQyIgewojIDMxNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZy
YW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwplbnVtIHsKICBjbURldmlj
ZUluZm9WZXJzaW9uMSA9IDB4MDAwMTAwMDAsCiAgY21EZXZpY2VQcm9maWxlSW5mb1ZlcnNpb24x
ID0gMHgwMDAxMDAwMCwKICBjbURldmljZVByb2ZpbGVJbmZvVmVyc2lvbjIgPSAweDAwMDIwMDAw
Cn07CgplbnVtIHsKICBjbUN1cnJlbnREZXZpY2VJbmZvVmVyc2lvbiA9IGNtRGV2aWNlSW5mb1Zl
cnNpb24xLAogIGNtQ3VycmVudFByb2ZpbGVJbmZvVmVyc2lvbiA9IGNtRGV2aWNlUHJvZmlsZUlu
Zm9WZXJzaW9uMQp9OwoKCgoKCmVudW0gewogIGNtRGVmYXVsdERldmljZUlEID0gMCwKICBjbURl
ZmF1bHRQcm9maWxlSUQgPSAwCn07CgoKCgoKZW51bSB7CiAgY21EZXZpY2VTdGF0ZURlZmF1bHQg
PSAweDAwMDAwMDAwLAogIGNtRGV2aWNlU3RhdGVPZmZsaW5lID0gMHgwMDAwMDAwMSwKICBjbURl
dmljZVN0YXRlQnVzeSA9IDB4MDAwMDAwMDIsCiAgY21EZXZpY2VTdGF0ZUZvcmNlTm90aWZ5ID0g
KGludCkweDgwMDAwMDAwLAogIGNtRGV2aWNlU3RhdGVEZXZpY2VSc3ZkQml0cyA9IDB4MDBGRjAw
MDAsCiAgY21EZXZpY2VTdGF0ZUFwcGxlUnN2ZEJpdHMgPSAoaW50KTB4RkYwMEZGRkYKfTsKIyAz
MjI0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXBy
ZWNhdGVkLmgiIDMKZW51bSB7CiAgY21JdGVyYXRlRmFjdG9yeURldmljZVByb2ZpbGVzID0gMHgw
MDAwMDAwMSwKICBjbUl0ZXJhdGVDdXN0b21EZXZpY2VQcm9maWxlcyA9IDB4MDAwMDAwMDIsCiAg
Y21JdGVyYXRlQ3VycmVudERldmljZVByb2ZpbGVzID0gMHgwMDAwMDAwMywKICBjbUl0ZXJhdGVB
bGxEZXZpY2VQcm9maWxlcyA9IDB4MDAwMDAwMDQsCiAgY21JdGVyYXRlRGV2aWNlUHJvZmlsZXNN
YXNrID0gMHgwMDAwMDAwRgp9OwoKCgoKZW51bSB7CiAgY21EZXZpY2VEQk5vdEZvdW5kRXJyID0g
LTQyMjcsCiAgY21EZXZpY2VBbHJlYWR5UmVnaXN0ZXJlZCA9IC00MjI4LAogIGNtRGV2aWNlTm90
UmVnaXN0ZXJlZCA9IC00MjI5LAogIGNtRGV2aWNlUHJvZmlsZXNOb3RGb3VuZCA9IC00MjMwLAog
IGNtSW50ZXJuYWxDRkVyciA9IC00MjMxLAogIGNtUHJlZnNTeW5jaEVycm9yID0gLTQyMzIKfTsK
IyAzMjU5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNE
ZXByZWNhdGVkLmgiIDMKI2RlZmluZSBrQ01EZXZpY2VSZWdpc3RlcmVkTm90aWZpY2F0aW9uIENG
U1RSKCJDTURldmljZVJlZ2lzdGVyZWROb3RpZmljYXRpb24iKQojZGVmaW5lIGtDTURldmljZVVu
cmVnaXN0ZXJlZE5vdGlmaWNhdGlvbiBDRlNUUigiQ01EZXZpY2VVbnJlZ2lzdGVyZWROb3RpZmlj
YXRpb24iKQojZGVmaW5lIGtDTURldmljZU9ubGluZU5vdGlmaWNhdGlvbiBDRlNUUigiQ01EZXZp
Y2VPbmxpbmVOb3RpZmljYXRpb24iKQojZGVmaW5lIGtDTURldmljZU9mZmxpbmVOb3RpZmljYXRp
b24gQ0ZTVFIoIkNNRGV2aWNlT2ZmbGluZU5vdGlmaWNhdGlvbiIpCiNkZWZpbmUga0NNRGV2aWNl
U3RhdGVOb3RpZmljYXRpb24gQ0ZTVFIoIkNNRGV2aWNlU3RhdGVOb3RpZmljYXRpb24iKQojZGVm
aW5lIGtDTURlZmF1bHREZXZpY2VOb3RpZmljYXRpb24gQ0ZTVFIoIkNNRGVmYXVsdERldmljZU5v
dGlmaWNhdGlvbiIpCiNkZWZpbmUga0NNRGV2aWNlUHJvZmlsZXNOb3RpZmljYXRpb24gQ0ZTVFIo
IkNNRGV2aWNlUHJvZmlsZXNOb3RpZmljYXRpb24iKQojZGVmaW5lIGtDTURlZmF1bHREZXZpY2VQ
cm9maWxlTm90aWZpY2F0aW9uIENGU1RSKCJDTURlZmF1bHREZXZpY2VQcm9maWxlTm90aWZpY2F0
aW9uIikKI2RlZmluZSBrQ01EaXNwbGF5RGV2aWNlUHJvZmlsZXNOb3RpZmljYXRpb24gQ0ZTVFIo
IkNNRGlzcGxheURldmljZVByb2ZpbGVzTm90aWZpY2F0aW9uIikKCgoKCnR5cGVkZWYgVUludDMy
IENNRGV2aWNlU3RhdGU7CgoKCgoKdHlwZWRlZiBVSW50MzIgQ01EZXZpY2VJRDsKCgoKCnR5cGVk
ZWYgVUludDMyIENNRGV2aWNlUHJvZmlsZUlEOwoKCgplbnVtIHsKICBjbVNjYW5uZXJEZXZpY2VD
bGFzcyA9ICdzY25yJywKICBjbUNhbWVyYURldmljZUNsYXNzID0gJ2NtcmEnLAogIGNtRGlzcGxh
eURldmljZUNsYXNzID0gJ21udHInLAogIGNtUHJpbnRlckRldmljZUNsYXNzID0gJ3BydHInLAog
IGNtUHJvb2ZEZXZpY2VDbGFzcyA9ICdwcnVmJwp9OwoKdHlwZWRlZiBPU1R5cGUgQ01EZXZpY2VD
bGFzczsKCgoKCgp0eXBlZGVmIHN0cnVjdCBDTURldmljZVNjb3BlIHsKICBDRlN0cmluZ1JlZiBk
ZXZpY2VVc2VyOwogIENGU3RyaW5nUmVmIGRldmljZUhvc3Q7Cn0gQ01EZXZpY2VTY29wZSwgQ01E
ZXZpY2VQcm9maWxlU2NvcGU7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgQ01EZXZpY2VJbmZvIHsKICBV
SW50MzIgZGF0YVZlcnNpb247CiAgQ01EZXZpY2VDbGFzcyBkZXZpY2VDbGFzczsKICBDTURldmlj
ZUlEIGRldmljZUlEOwogIENNRGV2aWNlU2NvcGUgZGV2aWNlU2NvcGU7CiAgQ01EZXZpY2VTdGF0
ZSBkZXZpY2VTdGF0ZTsKICBDTURldmljZVByb2ZpbGVJRCBkZWZhdWx0UHJvZmlsZUlEOwogIENG
RGljdGlvbmFyeVJlZiAqIGRldmljZU5hbWU7CgogIFVJbnQzMiBwcm9maWxlQ291bnQ7CiAgVUlu
dDMyIHJlc2VydmVkOwp9IENNRGV2aWNlSW5mbywgKkNNRGV2aWNlSW5mb1B0cjsKCgoKCgp0eXBl
ZGVmIHN0cnVjdCBDTURldmljZVByb2ZpbGVJbmZvIHsKICBVSW50MzIgZGF0YVZlcnNpb247CiAg
Q01EZXZpY2VQcm9maWxlSUQgcHJvZmlsZUlEOwogIENNUHJvZmlsZUxvY2F0aW9uIHByb2ZpbGVM
b2M7CiAgQ0ZEaWN0aW9uYXJ5UmVmIHByb2ZpbGVOYW1lOwogIFVJbnQzMiByZXNlcnZlZDsKfSBD
TURldmljZVByb2ZpbGVJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgTkNNRGV2aWNlUHJvZmlsZUluZm8g
ewogIFVJbnQzMiBkYXRhVmVyc2lvbjsKICBDTURldmljZVByb2ZpbGVJRCBwcm9maWxlSUQ7CiAg
Q01Qcm9maWxlTG9jYXRpb24gcHJvZmlsZUxvYzsKICBDRkRpY3Rpb25hcnlSZWYgcHJvZmlsZU5h
bWU7CiAgQ01EZXZpY2VQcm9maWxlU2NvcGUgcHJvZmlsZVNjb3BlOwogIFVJbnQzMiByZXNlcnZl
ZDsKfSBOQ01EZXZpY2VQcm9maWxlSW5mbzsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IENNRGV2aWNl
UHJvZmlsZUFycmF5IHsKICBVSW50MzIgcHJvZmlsZUNvdW50OwogIENNRGV2aWNlUHJvZmlsZUlu
Zm8gcHJvZmlsZXNbMV07Cn0gQ01EZXZpY2VQcm9maWxlQXJyYXksICpDTURldmljZVByb2ZpbGVB
cnJheVB0cjsKCgoKCgoKdHlwZWRlZiBPU0VyciAoICogQ01JdGVyYXRlRGV2aWNlSW5mb1Byb2NQ
dHIpKGNvbnN0IENNRGV2aWNlSW5mbyAqZGV2aWNlSW5mbywgdm9pZCAqcmVmQ29uKTsKdHlwZWRl
ZiBPU0VyciAoICogQ01JdGVyYXRlRGV2aWNlUHJvZmlsZVByb2NQdHIpKGNvbnN0IENNRGV2aWNl
SW5mbyAqZGV2aWNlSW5mbywgY29uc3QgTkNNRGV2aWNlUHJvZmlsZUluZm8gKnByb2ZpbGVJbmZv
LCB2b2lkICpyZWZDb24pOwojIDMzODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9I
ZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTVJlZ2lzdGVyQ29sb3JEZXZpY2UoCiAgQ01E
ZXZpY2VDbGFzcyBkZXZpY2VDbGFzcywKICBDTURldmljZUlEIGRldmljZUlELAogIENGRGljdGlv
bmFyeVJlZiBkZXZpY2VOYW1lLAogIGNvbnN0IENNRGV2aWNlU2NvcGUgKiBkZXZpY2VTY29wZSkg
OwojIDMzOTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3lu
Y0RlcHJlY2F0ZWQuaCIgMwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBl
eHRlcm4gQ01FcnJvcgpDTVVucmVnaXN0ZXJDb2xvckRldmljZSgKICBDTURldmljZUNsYXNzIGRl
dmljZUNsYXNzLAogIENNRGV2aWNlSUQgZGV2aWNlSUQpIDsKIyAzNDE1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
bG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMKX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01TZXREZWZh
dWx0RGV2aWNlKAogIENNRGV2aWNlQ2xhc3MgZGV2aWNlQ2xhc3MsCiAgQ01EZXZpY2VJRCBkZXZp
Y2VJRCkgOwojIDM0MjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0Nv
bG9yU3luY0RlcHJlY2F0ZWQuaCIgMwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKSBleHRlcm4gQ01FcnJvcgpDTUdldERlZmF1bHREZXZpY2UoCiAgQ01EZXZpY2VDbGFzcyBk
ZXZpY2VDbGFzcywKICBDTURldmljZUlEICogZGV2aWNlSUQpIDsKIyAzNDQ4ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMKX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01TZXRE
ZXZpY2VGYWN0b3J5UHJvZmlsZXMoCiAgQ01EZXZpY2VDbGFzcyBkZXZpY2VDbGFzcywKICBDTURl
dmljZUlEIGRldmljZUlELAogIENNRGV2aWNlUHJvZmlsZUlEIGRlZmF1bHRQcm9mSUQsCiAgY29u
c3QgQ01EZXZpY2VQcm9maWxlQXJyYXkgKiBkZXZpY2VQcm9maWxlcykgOwojIDM0NjggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIg
MwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpD
TUdldERldmljZUZhY3RvcnlQcm9maWxlcygKICBDTURldmljZUNsYXNzIGRldmljZUNsYXNzLAog
IENNRGV2aWNlSUQgZGV2aWNlSUQsCiAgQ01EZXZpY2VQcm9maWxlSUQgKiBkZWZhdWx0UHJvZklE
LAogIFVJbnQzMiAqIGFycmF5U2l6ZSwKICBDTURldmljZVByb2ZpbGVBcnJheSAqIGRldmljZVBy
b2ZpbGVzKSA7CiMgMzUyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMv
Q29sb3JTeW5jRGVwcmVjYXRlZC5oIiAzCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIGV4dGVybiBDTUVycm9yCkNNU2V0RGV2aWNlRGVmYXVsdFByb2ZpbGVJRCgKICBDTURl
dmljZUNsYXNzIGRldmljZUNsYXNzLAogIENNRGV2aWNlSUQgZGV2aWNlSUQsCiAgQ01EZXZpY2VQ
cm9maWxlSUQgZGVmYXVsdFByb2ZJRCkgOwojIDM1NDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZy
YW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIgMwpfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpDTUdldERldmljZURlZmF1bHRQ
cm9maWxlSUQoCiAgQ01EZXZpY2VDbGFzcyBkZXZpY2VDbGFzcywKICBDTURldmljZUlEIGRldmlj
ZUlELAogIENNRGV2aWNlUHJvZmlsZUlEICogZGVmYXVsdFByb2ZJRCkgOwojIDM1NjEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJlY2F0ZWQuaCIg
MwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ01FcnJvcgpD
TVNldERldmljZVByb2ZpbGUoCiAgQ01EZXZpY2VDbGFzcyBkZXZpY2VDbGFzcywKICBDTURldmlj
ZUlEIGRldmljZUlELAogIGNvbnN0IENNRGV2aWNlUHJvZmlsZVNjb3BlICogcHJvZmlsZVNjb3Bl
LAogIENNRGV2aWNlUHJvZmlsZUlEIHByb2ZpbGVJRCwKICBjb25zdCBDTVByb2ZpbGVMb2NhdGlv
biAqIHByb2ZpbGVMb2MpIDsKIyAzNTc5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsv
SGVhZGVycy9Db2xvclN5bmNEZXByZWNhdGVkLmgiIDMKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENNRXJyb3IKQ01HZXREZXZpY2VQcm9maWxlKAogIENNRGV2
aWNlQ2xhc3MgZGV2aWNlQ2xhc3MsCiAgQ01EZXZpY2VJRCBkZXZpY2VJRCwKICBDTURldmljZVBy
b2ZpbGVJRCBwcm9maWxlSUQsCiAgQ01Qcm9maWxlTG9jYXRpb24gKiBwcm9maWxlTG9jKSA7CiMg
MzYwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVw
cmVjYXRlZC5oIiAzCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVy
biBDTUVycm9yCkNNU2V0RGV2aWNlU3RhdGUoCiAgQ01EZXZpY2VDbGFzcyBkZXZpY2VDbGFzcywK
ICBDTURldmljZUlEIGRldmljZUlELAogIENNRGV2aWNlU3RhdGUgZGV2aWNlU3RhdGUpIDsKIyAz
NjE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNEZXBy
ZWNhdGVkLmgiIDMKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJu
IENNRXJyb3IKQ01HZXREZXZpY2VTdGF0ZSgKICBDTURldmljZUNsYXNzIGRldmljZUNsYXNzLAog
IENNRGV2aWNlSUQgZGV2aWNlSUQsCiAgQ01EZXZpY2VTdGF0ZSAqIGRldmljZVN0YXRlKSA7CiMg
MzYzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVw
cmVjYXRlZC5oIiAzCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVy
biBDTUVycm9yCkNNR2V0RGV2aWNlSW5mbygKICBDTURldmljZUNsYXNzIGRldmljZUNsYXNzLAog
IENNRGV2aWNlSUQgZGV2aWNlSUQsCiAgQ01EZXZpY2VJbmZvICogZGV2aWNlSW5mbykgOwojIDM2
NjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJl
Y2F0ZWQuaCIgMwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4g
Q01FcnJvcgpDTUl0ZXJhdGVDb2xvckRldmljZXMoCiAgQ01JdGVyYXRlRGV2aWNlSW5mb1Byb2NQ
dHIgcHJvYywKICBVSW50MzIgKiBzZWVkLAogIFVJbnQzMiAqIGNvdW50LAogIHZvaWQgKiByZWZD
b24pIDsKIyAzNjg4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xv
clN5bmNEZXByZWNhdGVkLmgiIDMKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgZXh0ZXJuIENNRXJyb3IKQ01JdGVyYXRlRGV2aWNlUHJvZmlsZXMoCiAgQ01JdGVyYXRlRGV2
aWNlUHJvZmlsZVByb2NQdHIgcHJvYywKICBVSW50MzIgKiBzZWVkLAogIFVJbnQzMiAqIGNvdW50
LAogIFVJbnQzMiBmbGFncywKICB2b2lkICogcmVmQ29uKSA7CgoKCgoKCn0KIyAzMCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RRC5oIiAyIDMKIyA0MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5m
cmFtZXdvcmsvSGVhZGVycy9RRC5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVh
ZGVycy9RdWlja2RyYXdUeXBlcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsv
SGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCiNkZWZpbmUgX19RVUlDS0RSQVdUWVBFU19fIAoK
CgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3Jl
R3JhcGhpY3MuaCIgMSAzCiMgMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVp
Y2tkcmF3VHlwZXMuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVy
cy9RdWlja2RyYXdUZXh0LmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFk
ZXJzL1F1aWNrZHJhd1RleHQuaCIgMwojZGVmaW5lIF9fUVVJQ0tEUkFXVEVYVF9fIAojIDMxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1RleHQuaCIgMwpleHRlcm4g
IkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdv
cmsvSGVhZGVycy9RdWlja2RyYXdUZXh0LmgiIDMKZW51bSB7CgogIGxlZnRDYXJldCA9IDAsCiAg
cmlnaHRDYXJldCA9IC0xLAogIGtIaWxpdGUgPSAxCn07CgplbnVtIHsKICBzbUxlZnRDYXJldCA9
IDAsCiAgc21SaWdodENhcmV0ID0gLTEsCiAgc21IaWxpdGUgPSAxCn07CgoKZW51bSB7CiAgb25s
eVN0eWxlUnVuID0gMCwKICBsZWZ0U3R5bGVSdW4gPSAxLAogIHJpZ2h0U3R5bGVSdW4gPSAyLAog
IG1pZGRsZVN0eWxlUnVuID0gMywKICBzbU9ubHlTdHlsZVJ1biA9IDAsCiAgc21MZWZ0U3R5bGVS
dW4gPSAxLAogIHNtUmlnaHRTdHlsZVJ1biA9IDIsCiAgc21NaWRkbGVTdHlsZVJ1biA9IDMKfTsK
Cgp0eXBlZGVmIHNob3J0IEp1c3RTdHlsZUNvZGU7Cgp0eXBlZGVmIHNob3J0IFRydW5jQ29kZTsK
CmVudW0gewogIHRydW5jRW5kID0gMCwKICB0cnVuY01pZGRsZSA9IDB4NDAwMCwKICBzbVRydW5j
RW5kID0gMCwKICBzbVRydW5jTWlkZGxlID0gMHg0MDAwCn07CgoKZW51bSB7CiAgbm90VHJ1bmNh
dGVkID0gMCwKICB0cnVuY2F0ZWQgPSAxLAogIHRydW5jRXJyID0gLTEsCiAgc21Ob3RUcnVuY2F0
ZWQgPSAwLAogIHNtVHJ1bmNhdGVkID0gMSwKICBzbVRydW5jRXJyID0gLTEKfTsKCnR5cGVkZWYg
U0ludDggU3R5bGVkTGluZUJyZWFrQ29kZTsKZW51bSB7CiAgc21CcmVha1dvcmQgPSAwLAogIHNt
QnJlYWtDaGFyID0gMSwKICBzbUJyZWFrT3ZlcmZsb3cgPSAyCn07CgoKZW51bSB7CiAgdGZBbnRp
QWxpYXMgPSAxIDw8IDAsCiAgdGZVbmljb2RlID0gMSA8PCAxCn07CgpzdHJ1Y3QgRm9udEluZm8g
ewogIHNob3J0IGFzY2VudDsKICBzaG9ydCBkZXNjZW50OwogIHNob3J0IHdpZE1heDsKICBzaG9y
dCBsZWFkaW5nOwp9Owp0eXBlZGVmIHN0cnVjdCBGb250SW5mbyBGb250SW5mbzsKCnR5cGVkZWYg
c2hvcnQgRm9ybWF0T3JkZXJbMV07CnR5cGVkZWYgRm9ybWF0T3JkZXIgKiBGb3JtYXRPcmRlclB0
cjsKIyAxNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3VGV4dC5o
IiAzCnR5cGVkZWYgQm9vbGVhbiAoICogU3R5bGVSdW5EaXJlY3Rpb25Qcm9jUHRyKShzaG9ydCBz
dHlsZVJ1bkluZGV4LCB2b2lkICpkaXJQYXJhbSk7CnR5cGVkZWYgU3R5bGVSdW5EaXJlY3Rpb25Q
cm9jUHRyIFN0eWxlUnVuRGlyZWN0aW9uVVBQOwojIDE1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdv
cmsvSGVhZGVycy9RdWlja2RyYXdUZXh0LmgiIDMKZXh0ZXJuIFN0eWxlUnVuRGlyZWN0aW9uVVBQ
Ck5ld1N0eWxlUnVuRGlyZWN0aW9uVVBQKFN0eWxlUnVuRGlyZWN0aW9uUHJvY1B0ciB1c2VyUm91
dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDE2NyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5m
cmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUZXh0LmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVN0
eWxlUnVuRGlyZWN0aW9uVVBQKFN0eWxlUnVuRGlyZWN0aW9uVVBQIHVzZXJVUFApIF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxNzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRl
cnMvUXVpY2tkcmF3VGV4dC5oIiAzCmV4dGVybiBCb29sZWFuCkludm9rZVN0eWxlUnVuRGlyZWN0
aW9uVVBQKAogIHNob3J0IHN0eWxlUnVuSW5kZXgsCiAgdm9pZCAqIGRpclBhcmFtLAogIFN0eWxl
UnVuRGlyZWN0aW9uVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoK
ICAgIGlubGluZSBTdHlsZVJ1bkRpcmVjdGlvblVQUCBOZXdTdHlsZVJ1bkRpcmVjdGlvblVQUChT
dHlsZVJ1bkRpcmVjdGlvblByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5l
OyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlU3R5bGVSdW5EaXJlY3Rpb25VUFAoU3R5bGVSdW5E
aXJlY3Rpb25VUFApIHsgfQogICAgaW5saW5lIEJvb2xlYW4gSW52b2tlU3R5bGVSdW5EaXJlY3Rp
b25VUFAoc2hvcnQgc3R5bGVSdW5JbmRleCwgdm9pZCAqIGRpclBhcmFtLCBTdHlsZVJ1bkRpcmVj
dGlvblVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHN0eWxlUnVuSW5kZXgsIGRpclBh
cmFtKTsgfQojIDcyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdU
ZXh0LmgiIDMKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3
b3JrL0hlYWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xv
clN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVwcmVjYXRlZC5oIiAxIDMKIyAzNCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAyIDMKIyA0
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4
dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQoKZW51bSB7CiAgaW52YWxDb2xSZXEg
PSAtMQp9OwoKZW51bSB7CgogIHNyY0NvcHkgPSAwLAogIHNyY09yID0gMSwKICBzcmNYb3IgPSAy
LAogIHNyY0JpYyA9IDMsCiAgbm90U3JjQ29weSA9IDQsCiAgbm90U3JjT3IgPSA1LAogIG5vdFNy
Y1hvciA9IDYsCiAgbm90U3JjQmljID0gNywKICBwYXRDb3B5ID0gOCwKICBwYXRPciA9IDksCiAg
cGF0WG9yID0gMTAsCiAgcGF0QmljID0gMTEsCiAgbm90UGF0Q29weSA9IDEyLAogIG5vdFBhdE9y
ID0gMTMsCiAgbm90UGF0WG9yID0gMTQsCiAgbm90UGF0QmljID0gMTUsCiAgZ3JheWlzaFRleHRP
ciA9IDQ5LAogIGhpbGl0ZXRyYW5zZmVybW9kZSA9IDUwLAogIGhpbGl0ZSA9IDUwLAogIGJsZW5k
ID0gMzIsCiAgYWRkUGluID0gMzMsCiAgYWRkT3ZlciA9IDM0LAogIHN1YlBpbiA9IDM1LAogIGFk
ZE1heCA9IDM3LAogIGFkTWF4ID0gMzcsCiAgc3ViT3ZlciA9IDM4LAogIGFkTWluID0gMzksCiAg
ZGl0aGVyQ29weSA9IDY0LAogIHRyYW5zcGFyZW50ID0gMzYKfTsKCmVudW0gewogIGl0YWxpY0Jp
dCA9IDEsCiAgdWxpbmVCaXQgPSAyLAogIG91dGxpbmVCaXQgPSAzLAogIHNoYWRvd0JpdCA9IDQs
CiAgY29uZGVuc2VCaXQgPSA1LAogIGV4dGVuZEJpdCA9IDYKfTsKCmVudW0gewoKICBub3JtYWxC
aXQgPSAwLAogIGludmVyc2VCaXQgPSAxLAogIHJlZEJpdCA9IDQsCiAgZ3JlZW5CaXQgPSAzLAog
IGJsdWVCaXQgPSAyLAogIGN5YW5CaXQgPSA4LAogIG1hZ2VudGFCaXQgPSA3LAogIHllbGxvd0Jp
dCA9IDYsCiAgYmxhY2tCaXQgPSA1Cn07CgplbnVtIHsKICBibGFja0NvbG9yID0gMzMsCiAgd2hp
dGVDb2xvciA9IDMwLAogIHJlZENvbG9yID0gMjA1LAogIGdyZWVuQ29sb3IgPSAzNDEsCiAgYmx1
ZUNvbG9yID0gNDA5LAogIGN5YW5Db2xvciA9IDI3MywKICBtYWdlbnRhQ29sb3IgPSAxMzcsCiAg
eWVsbG93Q29sb3IgPSA2OQp9OwoKZW51bSB7CiAgcGljTFBhcmVuID0gMCwKICBwaWNSUGFyZW4g
PSAxCn07CgoKZW51bSB7CiAgY2x1dFR5cGUgPSAwLAogIGZpeGVkVHlwZSA9IDEsCiAgZGlyZWN0
VHlwZSA9IDIKfTsKCgplbnVtIHsKICBnZERldlR5cGUgPSAwLAogIGludGVybGFjZWREZXZpY2Ug
PSAyLAogIGh3TWlycm9yZWREZXZpY2UgPSA0LAogIHJvdW5kZWREZXZpY2UgPSA1LAogIGhhc0F1
eE1lbnVCYXIgPSA2LAogIGJ1cnN0RGV2aWNlID0gNywKICBleHQzMkRldmljZSA9IDgsCiAgcmFt
SW5pdCA9IDEwLAogIG1haW5TY3JlZW4gPSAxMSwKICBhbGxJbml0ID0gMTIsCiAgc2NyZWVuRGV2
aWNlID0gMTMsCiAgbm9Ecml2ZXIgPSAxNCwKICBzY3JlZW5BY3RpdmUgPSAxNQp9OwoKZW51bSB7
CiAgaGlsaXRlQml0ID0gNywKICBwSGlsaXRlQml0ID0gMAp9OwoKCmVudW0gewogIGRlZlFEQ29s
b3JzID0gMTI3LAogIFJHQkRpcmVjdCA9IDE2LAogIGJhc2VBZGRyMzIgPSA0Cn07CgplbnVtIHsK
ICBzeXNQYXRMaXN0SUQgPSAwLAogIGlCZWFtQ3Vyc29yID0gMSwKICBjcm9zc0N1cnNvciA9IDIs
CiAgcGx1c0N1cnNvciA9IDMsCiAgd2F0Y2hDdXJzb3IgPSA0Cn07CgplbnVtIHsKICBrUURHcmFm
VmVyYkZyYW1lID0gMCwKICBrUURHcmFmVmVyYlBhaW50ID0gMSwKICBrUURHcmFmVmVyYkVyYXNl
ID0gMiwKICBrUURHcmFmVmVyYkludmVydCA9IDMsCiAga1FER3JhZlZlcmJGaWxsID0gNAp9Owoj
IDE4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAz
CnR5cGVkZWYgU0ludDggR3JhZlZlcmI7CmVudW0gewogIGNodW5reSA9IDAsCiAgY2h1bmt5UGxh
bmFyID0gMSwKICBwbGFuYXIgPSAyCn07Cgp0eXBlZGVmIFNJbnQ4IFBpeGVsVHlwZTsKdHlwZWRl
ZiBzaG9ydCBCaXRzMTZbMTZdOwojIDIwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVy
cy9RdWlja2RyYXdUeXBlcy5oIiAzCnN0cnVjdCBQYXR0ZXJuIHsKICBVSW50OCBwYXRbOF07Cn07
CnR5cGVkZWYgc3RydWN0IFBhdHRlcm4gUGF0dGVybjsKCgoKCgp0eXBlZGVmIGNvbnN0IFBhdHRl
cm4gKiBDb25zdFBhdHRlcm5QYXJhbTsKdHlwZWRlZiBQYXR0ZXJuICogUGF0UHRyOwp0eXBlZGVm
IFBhdFB0ciAqIFBhdEhhbmRsZTsKdHlwZWRlZiBTaWduZWRCeXRlIFFEQnl0ZTsKdHlwZWRlZiBR
REJ5dGUgKiBRRFB0cjsKdHlwZWRlZiBRRFB0ciAqIFFESGFuZGxlOwp0eXBlZGVmIHNob3J0IFFE
RXJyOwplbnVtIHsKICBzaW5nbGVEZXZpY2VzQml0ID0gMCwKICBkb250TWF0Y2hTZWVkc0JpdCA9
IDEsCiAgYWxsRGV2aWNlc0JpdCA9IDIKfTsKCmVudW0gewogIHNpbmdsZURldmljZXMgPSAxIDw8
IHNpbmdsZURldmljZXNCaXQsCiAgZG9udE1hdGNoU2VlZHMgPSAxIDw8IGRvbnRNYXRjaFNlZWRz
Qml0LAogIGFsbERldmljZXMgPSAxIDw8IGFsbERldmljZXNCaXQKfTsKCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBEZXZpY2VMb29wRmxhZ3M7CgoKCnR5cGVkZWYgU0ludDMyIFByaW50ZXJTdGF0dXNP
cGNvZGU7CmVudW0gewogIGtQcmludGVyRm9udFN0YXR1cyA9IDAsCiAga1ByaW50ZXJTY2FsaW5n
U3RhdHVzID0gMQp9OwoKc3RydWN0IFByaW50ZXJGb250U3RhdHVzIHsKICBTSW50MzIgb1Jlc3Vs
dDsKICBTSW50MTYgaUZvbmRJRDsKICBTdHlsZSBpU3R5bGU7Cn07CnR5cGVkZWYgc3RydWN0IFBy
aW50ZXJGb250U3RhdHVzIFByaW50ZXJGb250U3RhdHVzOwpzdHJ1Y3QgUHJpbnRlclNjYWxpbmdT
dGF0dXMgewogIFBvaW50IG9TY2FsaW5nRmFjdG9yczsKfTsKdHlwZWRlZiBzdHJ1Y3QgUHJpbnRl
clNjYWxpbmdTdGF0dXMgUHJpbnRlclNjYWxpbmdTdGF0dXM7CnN0cnVjdCBCaXRNYXAgewogIFB0
ciBiYXNlQWRkcjsKICBzaG9ydCByb3dCeXRlczsKICBSZWN0IGJvdW5kczsKfTsKdHlwZWRlZiBz
dHJ1Y3QgQml0TWFwIEJpdE1hcDsKdHlwZWRlZiBCaXRNYXAgKiBCaXRNYXBQdHI7CnR5cGVkZWYg
Qml0TWFwUHRyICogQml0TWFwSGFuZGxlOwpzdHJ1Y3QgQ3Vyc29yIHsKICBCaXRzMTYgZGF0YTsK
ICBCaXRzMTYgbWFzazsKICBQb2ludCBob3RTcG90Owp9Owp0eXBlZGVmIHN0cnVjdCBDdXJzb3Ig
Q3Vyc29yOwp0eXBlZGVmIEN1cnNvciAqIEN1cnNQdHI7CnR5cGVkZWYgQ3Vyc1B0ciAqIEN1cnNI
YW5kbGU7CnN0cnVjdCBQZW5TdGF0ZSB7CiAgUG9pbnQgcG5Mb2M7CiAgUG9pbnQgcG5TaXplOwog
IHNob3J0IHBuTW9kZTsKICBQYXR0ZXJuIHBuUGF0Owp9Owp0eXBlZGVmIHN0cnVjdCBQZW5TdGF0
ZSBQZW5TdGF0ZTsKIyAyOTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tk
cmF3VHlwZXMuaCIgMwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVSZ25IYW5kbGUqIFJnbkhhbmRsZTsK
CgpzdHJ1Y3QgUGljdHVyZSB7CiAgc2hvcnQgcGljU2l6ZTsKICBSZWN0IHBpY0ZyYW1lOwp9Owp0
eXBlZGVmIHN0cnVjdCBQaWN0dXJlIFBpY3R1cmU7CnR5cGVkZWYgUGljdHVyZSAqIFBpY1B0cjsK
dHlwZWRlZiBQaWNQdHIgKiBQaWNIYW5kbGU7CnN0cnVjdCBNYWNQb2x5Z29uIHsKICBzaG9ydCBw
b2x5U2l6ZTsKICBSZWN0IHBvbHlCQm94OwogIFBvaW50IHBvbHlQb2ludHNbMV07Cn07CnR5cGVk
ZWYgc3RydWN0IE1hY1BvbHlnb24gTWFjUG9seWdvbjsKCgoKCnR5cGVkZWYgTWFjUG9seWdvbiBQ
b2x5Z29uOwp0eXBlZGVmIE1hY1BvbHlnb24gKiBQb2x5UHRyOwp0eXBlZGVmIFBvbHlQdHIgKiBQ
b2x5SGFuZGxlOwp0eXBlZGVmIHZvaWQgKCAqIFFEVGV4dFByb2NQdHIpKHNob3J0IGJ5dGVDb3Vu
dCwgY29uc3Qgdm9pZCAqdGV4dEJ1ZiwgUG9pbnQgbnVtZXIsIFBvaW50IGRlbm9tKTsKdHlwZWRl
ZiB2b2lkICggKiBRRExpbmVQcm9jUHRyKShQb2ludCBuZXdQdCk7CnR5cGVkZWYgdm9pZCAoICog
UURSZWN0UHJvY1B0cikoR3JhZlZlcmIgdmVyYiwgY29uc3QgUmVjdCAqcik7CnR5cGVkZWYgdm9p
ZCAoICogUURSUmVjdFByb2NQdHIpKEdyYWZWZXJiIHZlcmIsIGNvbnN0IFJlY3QgKnIsIHNob3J0
IG92YWxXaWR0aCwgc2hvcnQgb3ZhbEhlaWdodCk7CnR5cGVkZWYgdm9pZCAoICogUURPdmFsUHJv
Y1B0cikoR3JhZlZlcmIgdmVyYiwgY29uc3QgUmVjdCAqcik7CnR5cGVkZWYgdm9pZCAoICogUURB
cmNQcm9jUHRyKShHcmFmVmVyYiB2ZXJiLCBjb25zdCBSZWN0ICpyLCBzaG9ydCBzdGFydEFuZ2xl
LCBzaG9ydCBhcmNBbmdsZSk7CnR5cGVkZWYgdm9pZCAoICogUURQb2x5UHJvY1B0cikoR3JhZlZl
cmIgdmVyYiwgUG9seUhhbmRsZSBwb2x5KTsKdHlwZWRlZiB2b2lkICggKiBRRFJnblByb2NQdHIp
KEdyYWZWZXJiIHZlcmIsIFJnbkhhbmRsZSByZ24pOwp0eXBlZGVmIHZvaWQgKCAqIFFEQml0c1By
b2NQdHIpKGNvbnN0IEJpdE1hcCAqc3JjQml0cywgY29uc3QgUmVjdCAqc3JjUmVjdCwgY29uc3Qg
UmVjdCAqZHN0UmVjdCwgc2hvcnQgbW9kZSwgUmduSGFuZGxlIG1hc2tSZ24pOwp0eXBlZGVmIHZv
aWQgKCAqIFFEQ29tbWVudFByb2NQdHIpKHNob3J0IGtpbmQsIHNob3J0IGRhdGFTaXplLCBIYW5k
bGUgZGF0YUhhbmRsZSk7CnR5cGVkZWYgc2hvcnQgKCAqIFFEVHhNZWFzUHJvY1B0cikoc2hvcnQg
Ynl0ZUNvdW50LCBjb25zdCB2b2lkICp0ZXh0QWRkciwgUG9pbnQgKm51bWVyLCBQb2ludCAqZGVu
b20sIEZvbnRJbmZvICppbmZvKTsKdHlwZWRlZiB2b2lkICggKiBRREdldFBpY1Byb2NQdHIpKHZv
aWQgKmRhdGFQdHIsIHNob3J0IGJ5dGVDb3VudCk7CnR5cGVkZWYgdm9pZCAoICogUURQdXRQaWNQ
cm9jUHRyKShjb25zdCB2b2lkICpkYXRhUHRyLCBzaG9ydCBieXRlQ291bnQpOwp0eXBlZGVmIHZv
aWQgKCAqIFFET3Bjb2RlUHJvY1B0cikoY29uc3QgUmVjdCAqZnJvbVJlY3QsIGNvbnN0IFJlY3Qg
KnRvUmVjdCwgVUludDE2IG9wY29kZSwgU0ludDE2IHZlcnNpb24pOwoKdHlwZWRlZiBPU1N0YXR1
cyAoICogUURTdGRHbHlwaHNQcm9jUHRyKSh2b2lkICpkYXRhU3RyZWFtLCBCeXRlQ291bnQgc2l6
ZSk7CnR5cGVkZWYgdm9pZCAoICogUURKU2hpZWxkQ3Vyc29yUHJvY1B0cikoc2hvcnQgbGVmdCwg
c2hvcnQgdG9wLCBzaG9ydCByaWdodCwgc2hvcnQgYm90dG9tKTsKdHlwZWRlZiBRRFRleHRQcm9j
UHRyIFFEVGV4dFVQUDsKdHlwZWRlZiBRRExpbmVQcm9jUHRyIFFETGluZVVQUDsKdHlwZWRlZiBR
RFJlY3RQcm9jUHRyIFFEUmVjdFVQUDsKdHlwZWRlZiBRRFJSZWN0UHJvY1B0ciBRRFJSZWN0VVBQ
Owp0eXBlZGVmIFFET3ZhbFByb2NQdHIgUURPdmFsVVBQOwp0eXBlZGVmIFFEQXJjUHJvY1B0ciBR
REFyY1VQUDsKdHlwZWRlZiBRRFBvbHlQcm9jUHRyIFFEUG9seVVQUDsKdHlwZWRlZiBRRFJnblBy
b2NQdHIgUURSZ25VUFA7CnR5cGVkZWYgUURCaXRzUHJvY1B0ciBRREJpdHNVUFA7CnR5cGVkZWYg
UURDb21tZW50UHJvY1B0ciBRRENvbW1lbnRVUFA7CnR5cGVkZWYgUURUeE1lYXNQcm9jUHRyIFFE
VHhNZWFzVVBQOwp0eXBlZGVmIFFER2V0UGljUHJvY1B0ciBRREdldFBpY1VQUDsKdHlwZWRlZiBR
RFB1dFBpY1Byb2NQdHIgUURQdXRQaWNVUFA7CnR5cGVkZWYgUURPcGNvZGVQcm9jUHRyIFFET3Bj
b2RlVVBQOwp0eXBlZGVmIFFEU3RkR2x5cGhzUHJvY1B0ciBRRFN0ZEdseXBoc1VQUDsKdHlwZWRl
ZiBRREpTaGllbGRDdXJzb3JQcm9jUHRyIFFESlNoaWVsZEN1cnNvclVQUDsKc3RydWN0IFFEUHJv
Y3MgewogIFFEVGV4dFVQUCB0ZXh0UHJvYzsKICBRRExpbmVVUFAgbGluZVByb2M7CiAgUURSZWN0
VVBQIHJlY3RQcm9jOwogIFFEUlJlY3RVUFAgclJlY3RQcm9jOwogIFFET3ZhbFVQUCBvdmFsUHJv
YzsKICBRREFyY1VQUCBhcmNQcm9jOwogIFFEUG9seVVQUCBwb2x5UHJvYzsKICBRRFJnblVQUCBy
Z25Qcm9jOwogIFFEQml0c1VQUCBiaXRzUHJvYzsKICBRRENvbW1lbnRVUFAgY29tbWVudFByb2M7
CiAgUURUeE1lYXNVUFAgdHhNZWFzUHJvYzsKICBRREdldFBpY1VQUCBnZXRQaWNQcm9jOwogIFFE
UHV0UGljVVBQIHB1dFBpY1Byb2M7Cn07CnR5cGVkZWYgc3RydWN0IFFEUHJvY3MgUURQcm9jczsK
dHlwZWRlZiBRRFByb2NzICogUURQcm9jc1B0cjsKIyAzNzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3
b3JrL0hlYWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gUURUZXh0VVBQCk5ld1FEVGV4
dFVQUChRRFRleHRQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7CiMgMzgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVz
LmgiIDMKZXh0ZXJuIFFETGluZVVQUApOZXdRRExpbmVVUFAoUURMaW5lUHJvY1B0ciB1c2VyUm91
dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDM5NCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5m
cmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiBRRFJlY3RVUFAKTmV3
UURSZWN0VVBQKFFEUmVjdFByb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKIyA0MDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3
VHlwZXMuaCIgMwpleHRlcm4gUURSUmVjdFVQUApOZXdRRFJSZWN0VVBQKFFEUlJlY3RQcm9jUHRy
IHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNDE2ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIFFET3Zh
bFVQUApOZXdRRE92YWxVUFAoUURPdmFsUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVf
XygoZGVwcmVjYXRlZCkpOwojIDQyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9R
dWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiBRREFyY1VQUApOZXdRREFyY1VQUChRREFyY1Byb2NQ
dHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA0MzggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gUURQ
b2x5VVBQCk5ld1FEUG9seVVQUChRRFBvbHlQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0
ZV9fKChkZXByZWNhdGVkKSk7CiMgNDQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJz
L1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIFFEUmduVVBQCk5ld1FEUmduVVBQKFFEUmduUHJv
Y1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDQ2MCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiBR
REJpdHNVUFAKTmV3UURCaXRzVVBQKFFEQml0c1Byb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA0NzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRl
cnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gUURDb21tZW50VVBQCk5ld1FEQ29tbWVudFVQ
UChRRENvbW1lbnRQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7CiMgNDgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVz
LmgiIDMKZXh0ZXJuIFFEVHhNZWFzVVBQCk5ld1FEVHhNZWFzVVBQKFFEVHhNZWFzUHJvY1B0ciB1
c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDQ5MyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiBRREdldFBp
Y1VQUApOZXdRREdldFBpY1VQUChRREdldFBpY1Byb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA1MDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRl
cnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gUURQdXRQaWNVUFAKTmV3UURQdXRQaWNVUFAo
UURQdXRQaWNQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CiMgNTE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgi
IDMKZXh0ZXJuIFFET3Bjb2RlVVBQCk5ld1FET3Bjb2RlVVBQKFFET3Bjb2RlUHJvY1B0ciB1c2Vy
Um91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDUyNiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9R
RC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiBRRFN0ZEdseXBo
c1VQUApOZXdRRFN0ZEdseXBoc1VQUChRRFN0ZEdseXBoc1Byb2NQdHIgdXNlclJvdXRpbmUpIF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA1MzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3Jr
L0hlYWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gUURKU2hpZWxkQ3Vyc29yVVBQCk5l
d1FESlNoaWVsZEN1cnNvclVQUChRREpTaGllbGRDdXJzb3JQcm9jUHRyIHVzZXJSb3V0aW5lKSBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNTQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29y
ay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVFEVGV4dFVQ
UChRRFRleHRVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDU1OSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVy
biB2b2lkCkRpc3Bvc2VRRExpbmVVUFAoUURMaW5lVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKIyA1NzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVp
Y2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlUURSZWN0VVBQKFFEUmVjdFVQUCB1
c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNTgxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9z
ZVFEUlJlY3RVUFAoUURSUmVjdFVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7CiMgNTkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVz
LmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVFET3ZhbFVQUChRRE92YWxVUFAgdXNlclVQUCkgX19h
dHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDYwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsv
SGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VRREFyY1VQUChR
REFyY1VQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNjE0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIHZv
aWQKRGlzcG9zZVFEUG9seVVQUChRRFBvbHlVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwojIDYyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2Ry
YXdUeXBlcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VRRFJnblVQUChRRFJnblVQUCB1c2VyVVBQ
KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNjM2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1l
d29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVFEQml0
c1VQUChRREJpdHNVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDY0
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4
dGVybiB2b2lkCkRpc3Bvc2VRRENvbW1lbnRVUFAoUURDb21tZW50VVBQIHVzZXJVUFApIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA2NTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hl
YWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlUURUeE1lYXNVUFAo
UURUeE1lYXNVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDY2OSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVy
biB2b2lkCkRpc3Bvc2VRREdldFBpY1VQUChRREdldFBpY1VQUCB1c2VyVVBQKSBfX2F0dHJpYnV0
ZV9fKChkZXByZWNhdGVkKSk7CiMgNjgwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJz
L1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVFEUHV0UGljVVBQKFFEUHV0
UGljVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA2OTEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gdm9p
ZApEaXNwb3NlUURPcGNvZGVVUFAoUURPcGNvZGVVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDcwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlj
a2RyYXdUeXBlcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VRRFN0ZEdseXBoc1VQUChRRFN0ZEds
eXBoc1VQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNzEzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIHZv
aWQKRGlzcG9zZVFESlNoaWVsZEN1cnNvclVQUChRREpTaGllbGRDdXJzb3JVUFAgdXNlclVQUCkg
X19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDcyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdv
cmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiB2b2lkCkludm9rZVFEVGV4dFVQ
UCgKICBzaG9ydCBieXRlQ291bnQsCiAgY29uc3Qgdm9pZCAqIHRleHRCdWYsCiAgUG9pbnQgbnVt
ZXIsCiAgUG9pbnQgZGVub20sCiAgUURUZXh0VVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKIyA3NDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tk
cmF3VHlwZXMuaCIgMwpleHRlcm4gdm9pZApJbnZva2VRRExpbmVVUFAoCiAgUG9pbnQgbmV3UHQs
CiAgUURMaW5lVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA3NTMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRl
cm4gdm9pZApJbnZva2VRRFJlY3RVUFAoCiAgR3JhZlZlcmIgdmVyYiwKICBjb25zdCBSZWN0ICog
ciwKICBRRFJlY3RVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDc2
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4
dGVybiB2b2lkCkludm9rZVFEUlJlY3RVUFAoCiAgR3JhZlZlcmIgdmVyYiwKICBjb25zdCBSZWN0
ICogciwKICBzaG9ydCBvdmFsV2lkdGgsCiAgc2hvcnQgb3ZhbEhlaWdodCwKICBRRFJSZWN0VVBQ
IHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA3ODMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
UUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gdm9pZApJbnZv
a2VRRE92YWxVUFAoCiAgR3JhZlZlcmIgdmVyYiwKICBjb25zdCBSZWN0ICogciwKICBRRE92YWxV
UFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDc5NyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiB2b2lkCklu
dm9rZVFEQXJjVVBQKAogIEdyYWZWZXJiIHZlcmIsCiAgY29uc3QgUmVjdCAqIHIsCiAgc2hvcnQg
c3RhcnRBbmdsZSwKICBzaG9ydCBhcmNBbmdsZSwKICBRREFyY1VQUCB1c2VyVVBQKSBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgODEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFk
ZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlUURQb2x5VVBQKAogIEdy
YWZWZXJiIHZlcmIsCiAgUG9seUhhbmRsZSBwb2x5LAogIFFEUG9seVVQUCB1c2VyVVBQKSBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgODI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9I
ZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlUURSZ25VUFAoCiAg
R3JhZlZlcmIgdmVyYiwKICBSZ25IYW5kbGUgcmduLAogIFFEUmduVVBQIHVzZXJVUFApIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA4NDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hl
YWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gdm9pZApJbnZva2VRREJpdHNVUFAoCiAg
Y29uc3QgQml0TWFwICogc3JjQml0cywKICBjb25zdCBSZWN0ICogc3JjUmVjdCwKICBjb25zdCBS
ZWN0ICogZHN0UmVjdCwKICBzaG9ydCBtb2RlLAogIFJnbkhhbmRsZSBtYXNrUmduLAogIFFEQml0
c1VQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgODU4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIHZvaWQK
SW52b2tlUURDb21tZW50VVBQKAogIHNob3J0IGtpbmQsCiAgc2hvcnQgZGF0YVNpemUsCiAgSGFu
ZGxlIGRhdGFIYW5kbGUsCiAgUURDb21tZW50VVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKIyA4NzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tk
cmF3VHlwZXMuaCIgMwpleHRlcm4gc2hvcnQKSW52b2tlUURUeE1lYXNVUFAoCiAgc2hvcnQgYnl0
ZUNvdW50LAogIGNvbnN0IHZvaWQgKiB0ZXh0QWRkciwKICBQb2ludCAqIG51bWVyLAogIFBvaW50
ICogZGVub20sCiAgRm9udEluZm8gKiBpbmZvLAogIFFEVHhNZWFzVVBQIHVzZXJVUFApIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA4OTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hl
YWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gdm9pZApJbnZva2VRREdldFBpY1VQUCgK
ICB2b2lkICogZGF0YVB0ciwKICBzaG9ydCBieXRlQ291bnQsCiAgUURHZXRQaWNVUFAgdXNlclVQ
UCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDkwNCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFt
ZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiB2b2lkCkludm9rZVFEUHV0
UGljVVBQKAogIGNvbnN0IHZvaWQgKiBkYXRhUHRyLAogIHNob3J0IGJ5dGVDb3VudCwKICBRRFB1
dFBpY1VQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgOTE4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIHZv
aWQKSW52b2tlUURPcGNvZGVVUFAoCiAgY29uc3QgUmVjdCAqIGZyb21SZWN0LAogIGNvbnN0IFJl
Y3QgKiB0b1JlY3QsCiAgVUludDE2IG9wY29kZSwKICBTSW50MTYgdmVyc2lvbiwKICBRRE9wY29k
ZVVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgOTM0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzCkludm9rZVFEU3RkR2x5cGhzVVBQKAogIHZvaWQgKiBkYXRhU3RyZWFtLAogIEJ5dGVDb3Vu
dCBzaXplLAogIFFEU3RkR2x5cGhzVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKIyA5NDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3VHlw
ZXMuaCIgMwpleHRlcm4gdm9pZApJbnZva2VRREpTaGllbGRDdXJzb3JVUFAoCiAgc2hvcnQgbGVm
dCwKICBzaG9ydCB0b3AsCiAgc2hvcnQgcmlnaHQsCiAgc2hvcnQgYm90dG9tLAogIFFESlNoaWVs
ZEN1cnNvclVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCiAgICBp
bmxpbmUgUURUZXh0VVBQIE5ld1FEVGV4dFVQUChRRFRleHRQcm9jUHRyIHVzZXJSb3V0aW5lKSB7
IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIFFETGluZVVQUCBOZXdRRExpbmVVUFAo
UURMaW5lUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlu
bGluZSBRRFJlY3RVUFAgTmV3UURSZWN0VVBQKFFEUmVjdFByb2NQdHIgdXNlclJvdXRpbmUpIHsg
cmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgUURSUmVjdFVQUCBOZXdRRFJSZWN0VVBQ
KFFEUlJlY3RQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAg
aW5saW5lIFFET3ZhbFVQUCBOZXdRRE92YWxVUFAoUURPdmFsUHJvY1B0ciB1c2VyUm91dGluZSkg
eyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBRREFyY1VQUCBOZXdRREFyY1VQUChR
REFyY1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxp
bmUgUURQb2x5VVBQIE5ld1FEUG9seVVQUChRRFBvbHlQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJl
dHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIFFEUmduVVBQIE5ld1FEUmduVVBQKFFEUmdu
UHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBR
REJpdHNVUFAgTmV3UURCaXRzVVBQKFFEQml0c1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJu
IHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgUURDb21tZW50VVBQIE5ld1FEQ29tbWVudFVQUChR
RENvbW1lbnRQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAg
aW5saW5lIFFEVHhNZWFzVVBQIE5ld1FEVHhNZWFzVVBQKFFEVHhNZWFzUHJvY1B0ciB1c2VyUm91
dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBRREdldFBpY1VQUCBOZXdR
REdldFBpY1VQUChRREdldFBpY1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0
aW5lOyB9CiAgICBpbmxpbmUgUURQdXRQaWNVUFAgTmV3UURQdXRQaWNVUFAoUURQdXRQaWNQcm9j
UHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIFFET3Bj
b2RlVVBQIE5ld1FET3Bjb2RlVVBQKFFET3Bjb2RlUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1
cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBRRFN0ZEdseXBoc1VQUCBOZXdRRFN0ZEdseXBo
c1VQUChRRFN0ZEdseXBoc1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5l
OyB9CiAgICBpbmxpbmUgUURKU2hpZWxkQ3Vyc29yVVBQIE5ld1FESlNoaWVsZEN1cnNvclVQUChR
REpTaGllbGRDdXJzb3JQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsg
fQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVFEVGV4dFVQUChRRFRleHRVUFApIHsgfQogICAgaW5s
aW5lIHZvaWQgRGlzcG9zZVFETGluZVVQUChRRExpbmVVUFApIHsgfQogICAgaW5saW5lIHZvaWQg
RGlzcG9zZVFEUmVjdFVQUChRRFJlY3RVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVFE
UlJlY3RVUFAoUURSUmVjdFVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlUURPdmFsVVBQ
KFFET3ZhbFVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlUURBcmNVUFAoUURBcmNVUFAp
IHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVFEUG9seVVQUChRRFBvbHlVUFApIHsgfQogICAg
aW5saW5lIHZvaWQgRGlzcG9zZVFEUmduVVBQKFFEUmduVVBQKSB7IH0KICAgIGlubGluZSB2b2lk
IERpc3Bvc2VRREJpdHNVUFAoUURCaXRzVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VR
RENvbW1lbnRVUFAoUURDb21tZW50VVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VRRFR4
TWVhc1VQUChRRFR4TWVhc1VQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlUURHZXRQaWNV
UFAoUURHZXRQaWNVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVFEUHV0UGljVVBQKFFE
UHV0UGljVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VRRE9wY29kZVVQUChRRE9wY29k
ZVVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlUURTdGRHbHlwaHNVUFAoUURTdGRHbHlw
aHNVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVFESlNoaWVsZEN1cnNvclVQUChRREpT
aGllbGRDdXJzb3JVUFApIHsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlUURUZXh0VVBQKHNob3J0
IGJ5dGVDb3VudCwgY29uc3Qgdm9pZCAqIHRleHRCdWYsIFBvaW50IG51bWVyLCBQb2ludCBkZW5v
bSwgUURUZXh0VVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKShieXRlQ291bnQsIHRleHRCdWYsIG51
bWVyLCBkZW5vbSk7IH0KICAgIGlubGluZSB2b2lkIEludm9rZVFETGluZVVQUChQb2ludCBuZXdQ
dCwgUURMaW5lVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKShuZXdQdCk7IH0KICAgIGlubGluZSB2
b2lkIEludm9rZVFEUmVjdFVQUChHcmFmVmVyYiB2ZXJiLCBjb25zdCBSZWN0ICogciwgUURSZWN0
VVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKSh2ZXJiLCByKTsgfQogICAgaW5saW5lIHZvaWQgSW52
b2tlUURSUmVjdFVQUChHcmFmVmVyYiB2ZXJiLCBjb25zdCBSZWN0ICogciwgc2hvcnQgb3ZhbFdp
ZHRoLCBzaG9ydCBvdmFsSGVpZ2h0LCBRRFJSZWN0VVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKSh2
ZXJiLCByLCBvdmFsV2lkdGgsIG92YWxIZWlnaHQpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VR
RE92YWxVUFAoR3JhZlZlcmIgdmVyYiwgY29uc3QgUmVjdCAqIHIsIFFET3ZhbFVQUCB1c2VyVVBQ
KSB7ICgqdXNlclVQUCkodmVyYiwgcik7IH0KICAgIGlubGluZSB2b2lkIEludm9rZVFEQXJjVVBQ
KEdyYWZWZXJiIHZlcmIsIGNvbnN0IFJlY3QgKiByLCBzaG9ydCBzdGFydEFuZ2xlLCBzaG9ydCBh
cmNBbmdsZSwgUURBcmNVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKHZlcmIsIHIsIHN0YXJ0QW5n
bGUsIGFyY0FuZ2xlKTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlUURQb2x5VVBQKEdyYWZWZXJi
IHZlcmIsIFBvbHlIYW5kbGUgcG9seSwgUURQb2x5VVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKSh2
ZXJiLCBwb2x5KTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlUURSZ25VUFAoR3JhZlZlcmIgdmVy
YiwgUmduSGFuZGxlIHJnbiwgUURSZ25VUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKHZlcmIsIHJn
bik7IH0KICAgIGlubGluZSB2b2lkIEludm9rZVFEQml0c1VQUChjb25zdCBCaXRNYXAgKiBzcmNC
aXRzLCBjb25zdCBSZWN0ICogc3JjUmVjdCwgY29uc3QgUmVjdCAqIGRzdFJlY3QsIHNob3J0IG1v
ZGUsIFJnbkhhbmRsZSBtYXNrUmduLCBRREJpdHNVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKHNy
Y0JpdHMsIHNyY1JlY3QsIGRzdFJlY3QsIG1vZGUsIG1hc2tSZ24pOyB9CiAgICBpbmxpbmUgdm9p
ZCBJbnZva2VRRENvbW1lbnRVUFAoc2hvcnQga2luZCwgc2hvcnQgZGF0YVNpemUsIEhhbmRsZSBk
YXRhSGFuZGxlLCBRRENvbW1lbnRVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKGtpbmQsIGRhdGFT
aXplLCBkYXRhSGFuZGxlKTsgfQogICAgaW5saW5lIHNob3J0IEludm9rZVFEVHhNZWFzVVBQKHNo
b3J0IGJ5dGVDb3VudCwgY29uc3Qgdm9pZCAqIHRleHRBZGRyLCBQb2ludCAqIG51bWVyLCBQb2lu
dCAqIGRlbm9tLCBGb250SW5mbyAqIGluZm8sIFFEVHhNZWFzVVBQIHVzZXJVUFApIHsgcmV0dXJu
ICgqdXNlclVQUCkoYnl0ZUNvdW50LCB0ZXh0QWRkciwgbnVtZXIsIGRlbm9tLCBpbmZvKTsgfQog
ICAgaW5saW5lIHZvaWQgSW52b2tlUURHZXRQaWNVUFAodm9pZCAqIGRhdGFQdHIsIHNob3J0IGJ5
dGVDb3VudCwgUURHZXRQaWNVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKGRhdGFQdHIsIGJ5dGVD
b3VudCk7IH0KICAgIGlubGluZSB2b2lkIEludm9rZVFEUHV0UGljVVBQKGNvbnN0IHZvaWQgKiBk
YXRhUHRyLCBzaG9ydCBieXRlQ291bnQsIFFEUHV0UGljVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQ
KShkYXRhUHRyLCBieXRlQ291bnQpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VRRE9wY29kZVVQ
UChjb25zdCBSZWN0ICogZnJvbVJlY3QsIGNvbnN0IFJlY3QgKiB0b1JlY3QsIFVJbnQxNiBvcGNv
ZGUsIFNJbnQxNiB2ZXJzaW9uLCBRRE9wY29kZVVQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCkoZnJv
bVJlY3QsIHRvUmVjdCwgb3Bjb2RlLCB2ZXJzaW9uKTsgfQogICAgaW5saW5lIE9TU3RhdHVzIElu
dm9rZVFEU3RkR2x5cGhzVVBQKHZvaWQgKiBkYXRhU3RyZWFtLCBCeXRlQ291bnQgc2l6ZSwgUURT
dGRHbHlwaHNVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShkYXRhU3RyZWFtLCBzaXpl
KTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlUURKU2hpZWxkQ3Vyc29yVVBQKHNob3J0IGxlZnQs
IHNob3J0IHRvcCwgc2hvcnQgcmlnaHQsIHNob3J0IGJvdHRvbSwgUURKU2hpZWxkQ3Vyc29yVVBQ
IHVzZXJVUFApIHsgKCp1c2VyVVBQKShsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOyB9CiMgMTA5
OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCnR5
cGVkZWYgc3RydWN0IE9wYXF1ZVdpbmRvd1B0ciogV2luZG93UHRyOwp0eXBlZGVmIHN0cnVjdCBP
cGFxdWVEaWFsb2dQdHIqIERpYWxvZ1B0cjsKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlR3JhZlB0ciog
R3JhZlB0cjsKCgp0eXBlZGVmIFdpbmRvd1B0ciBXaW5kb3dSZWY7Cgp0eXBlZGVmIFVJbnQxNiBE
cmFnQ29uc3RyYWludDsKZW51bSB7CiAga05vQ29uc3RyYWludCA9IDAsCiAga1ZlcnRpY2FsQ29u
c3RyYWludCA9IDEsCiAga0hvcml6b250YWxDb25zdHJhaW50ID0gMgp9OwoKCnR5cGVkZWYgdm9p
ZCAoICogRHJhZ0dyYXlSZ25Qcm9jUHRyKSh2b2lkKTsKCgoKCgpzdHJ1Y3QgUkdCQ29sb3Igewog
IHVuc2lnbmVkIHNob3J0IHJlZDsKICB1bnNpZ25lZCBzaG9ydCBncmVlbjsKICB1bnNpZ25lZCBz
aG9ydCBibHVlOwp9Owp0eXBlZGVmIHN0cnVjdCBSR0JDb2xvciBSR0JDb2xvcjsKdHlwZWRlZiBS
R0JDb2xvciAqIFJHQkNvbG9yUHRyOwp0eXBlZGVmIFJHQkNvbG9yUHRyICogUkdCQ29sb3JIZGw7
CnR5cGVkZWYgQm9vbGVhbiAoICogQ29sb3JTZWFyY2hQcm9jUHRyKShSR0JDb2xvciAqcmdiLCBs
b25nICpwb3NpdGlvbik7CnR5cGVkZWYgQm9vbGVhbiAoICogQ29sb3JDb21wbGVtZW50UHJvY1B0
cikoUkdCQ29sb3IgKiByZ2IpOwp0eXBlZGVmIERyYWdHcmF5UmduUHJvY1B0ciBEcmFnR3JheVJn
blVQUDsKdHlwZWRlZiBDb2xvclNlYXJjaFByb2NQdHIgQ29sb3JTZWFyY2hVUFA7CnR5cGVkZWYg
Q29sb3JDb21wbGVtZW50UHJvY1B0ciBDb2xvckNvbXBsZW1lbnRVUFA7CiMgMTE0MCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiBEcmFn
R3JheVJnblVQUApOZXdEcmFnR3JheVJnblVQUChEcmFnR3JheVJnblByb2NQdHIgdXNlclJvdXRp
bmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxMTUxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZy
YW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIENvbG9yU2VhcmNoVVBQ
Ck5ld0NvbG9yU2VhcmNoVVBQKENvbG9yU2VhcmNoUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDExNjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hl
YWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRlcm4gQ29sb3JDb21wbGVtZW50VVBQCk5ld0Nv
bG9yQ29tcGxlbWVudFVQUChDb2xvckNvbXBsZW1lbnRQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTE3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsv
SGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VEcmFnR3JheVJn
blVQUChEcmFnR3JheVJnblVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CiMgMTE4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5o
IiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VDb2xvclNlYXJjaFVQUChDb2xvclNlYXJjaFVQUCB1c2Vy
VVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTE5NSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5m
cmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VD
b2xvckNvbXBsZW1lbnRVUFAoQ29sb3JDb21wbGVtZW50VVBQIHVzZXJVUFApIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKIyAxMjA2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJz
L1F1aWNrZHJhd1R5cGVzLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlRHJhZ0dyYXlSZ25VUFAoRHJh
Z0dyYXlSZ25VUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDEyMTcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpleHRl
cm4gQm9vbGVhbgpJbnZva2VDb2xvclNlYXJjaFVQUCgKICBSR0JDb2xvciAqIHJnYiwKICBsb25n
ICogcG9zaXRpb24sCiAgQ29sb3JTZWFyY2hVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwojIDEyMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tk
cmF3VHlwZXMuaCIgMwpleHRlcm4gQm9vbGVhbgpJbnZva2VDb2xvckNvbXBsZW1lbnRVUFAoCiAg
UkdCQ29sb3IgKiByZ2IsCiAgQ29sb3JDb21wbGVtZW50VVBQIHVzZXJVUFApIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBEcmFnR3JheVJnblVQUCBOZXdEcmFnR3Jh
eVJnblVQUChEcmFnR3JheVJnblByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0
aW5lOyB9CiAgICBpbmxpbmUgQ29sb3JTZWFyY2hVUFAgTmV3Q29sb3JTZWFyY2hVUFAoQ29sb3JT
ZWFyY2hQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5s
aW5lIENvbG9yQ29tcGxlbWVudFVQUCBOZXdDb2xvckNvbXBsZW1lbnRVUFAoQ29sb3JDb21wbGVt
ZW50UHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGlu
ZSB2b2lkIERpc3Bvc2VEcmFnR3JheVJnblVQUChEcmFnR3JheVJnblVQUCkgeyB9CiAgICBpbmxp
bmUgdm9pZCBEaXNwb3NlQ29sb3JTZWFyY2hVUFAoQ29sb3JTZWFyY2hVUFApIHsgfQogICAgaW5s
aW5lIHZvaWQgRGlzcG9zZUNvbG9yQ29tcGxlbWVudFVQUChDb2xvckNvbXBsZW1lbnRVUFApIHsg
fQogICAgaW5saW5lIHZvaWQgSW52b2tlRHJhZ0dyYXlSZ25VUFAoRHJhZ0dyYXlSZ25VUFAgdXNl
clVQUCkgeyAoKnVzZXJVUFApKCk7IH0KICAgIGlubGluZSBCb29sZWFuIEludm9rZUNvbG9yU2Vh
cmNoVVBQKFJHQkNvbG9yICogcmdiLCBsb25nICogcG9zaXRpb24sIENvbG9yU2VhcmNoVVBQIHVz
ZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkocmdiLCBwb3NpdGlvbik7IH0KICAgIGlubGluZSBC
b29sZWFuIEludm9rZUNvbG9yQ29tcGxlbWVudFVQUChSR0JDb2xvciAqIHJnYiwgQ29sb3JDb21w
bGVtZW50VVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkocmdiKTsgfQojIDEyNjAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwpzdHJ1Y3Qg
Q29sb3JTcGVjIHsKICBzaG9ydCB2YWx1ZTsKICBSR0JDb2xvciByZ2I7Cn07CnR5cGVkZWYgc3Ry
dWN0IENvbG9yU3BlYyBDb2xvclNwZWM7CnR5cGVkZWYgQ29sb3JTcGVjICogQ29sb3JTcGVjUHRy
Owp0eXBlZGVmIENvbG9yU3BlYyBDU3BlY0FycmF5WzFdOwpzdHJ1Y3QgQ29sb3JUYWJsZSB7CiAg
U0ludDMyIGN0U2VlZDsKICBzaG9ydCBjdEZsYWdzOwogIHNob3J0IGN0U2l6ZTsKICBDU3BlY0Fy
cmF5IGN0VGFibGU7Cn07CnR5cGVkZWYgc3RydWN0IENvbG9yVGFibGUgQ29sb3JUYWJsZTsKdHlw
ZWRlZiBDb2xvclRhYmxlICogQ1RhYlB0cjsKdHlwZWRlZiBDVGFiUHRyICogQ1RhYkhhbmRsZTsK
c3RydWN0IHhDb2xvclNwZWMgewogIHNob3J0IHZhbHVlOwogIFJHQkNvbG9yIHJnYjsKICBzaG9y
dCB4YWxwaGE7Cn07CnR5cGVkZWYgc3RydWN0IHhDb2xvclNwZWMgeENvbG9yU3BlYzsKdHlwZWRl
ZiB4Q29sb3JTcGVjICogeENvbG9yU3BlY1B0cjsKdHlwZWRlZiB4Q29sb3JTcGVjIHhDU3BlY0Fy
cmF5WzFdOwpzdHJ1Y3QgTWF0Y2hSZWMgewogIHVuc2lnbmVkIHNob3J0IHJlZDsKICB1bnNpZ25l
ZCBzaG9ydCBncmVlbjsKICB1bnNpZ25lZCBzaG9ydCBibHVlOwogIGxvbmcgbWF0Y2hEYXRhOwp9
Owp0eXBlZGVmIHN0cnVjdCBNYXRjaFJlYyBNYXRjaFJlYzsKCiNkZWZpbmUgT0xEUElYTUFQU1RS
VUNUIDAKI2RlZmluZSBOT05fTUFDX1BJWEVMX0ZPUk1BVFMgMQoKI2RlZmluZSBHRVRQSVhNQVBQ
SVhFTEZPUk1BVChwbSkgKCAoKHBtKS0+cGl4ZWxGb3JtYXQgIT0gMCkgPyAoVUludDMyKShwbSkt
PnBpeGVsRm9ybWF0IDogKFVJbnQzMikocG0pLT5waXhlbFNpemUgKQojIDEzMDggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIgMwplbnVtIHsKCiAgazFN
b25vY2hyb21lUGl4ZWxGb3JtYXQgPSAweDAwMDAwMDAxLAogIGsySW5kZXhlZFBpeGVsRm9ybWF0
ID0gMHgwMDAwMDAwMiwKICBrNEluZGV4ZWRQaXhlbEZvcm1hdCA9IDB4MDAwMDAwMDQsCiAgazhJ
bmRleGVkUGl4ZWxGb3JtYXQgPSAweDAwMDAwMDA4LAogIGsxNkJFNTU1UGl4ZWxGb3JtYXQgPSAw
eDAwMDAwMDEwLAogIGsyNFJHQlBpeGVsRm9ybWF0ID0gMHgwMDAwMDAxOCwKICBrMzJBUkdCUGl4
ZWxGb3JtYXQgPSAweDAwMDAwMDIwLAoKICBrMUluZGV4ZWRHcmF5UGl4ZWxGb3JtYXQgPSAweDAw
MDAwMDIxLAogIGsySW5kZXhlZEdyYXlQaXhlbEZvcm1hdCA9IDB4MDAwMDAwMjIsCiAgazRJbmRl
eGVkR3JheVBpeGVsRm9ybWF0ID0gMHgwMDAwMDAyNCwKICBrOEluZGV4ZWRHcmF5UGl4ZWxGb3Jt
YXQgPSAweDAwMDAwMDI4LAogIGsxNkxFNTU1UGl4ZWxGb3JtYXQgPSAnTDU1NScsCiAgazE2TEU1
NTUxUGl4ZWxGb3JtYXQgPSAnNTU1MScsCiAgazE2QkU1NjVQaXhlbEZvcm1hdCA9ICdCNTY1JywK
ICBrMTZMRTU2NVBpeGVsRm9ybWF0ID0gJ0w1NjUnLAogIGsyNEJHUlBpeGVsRm9ybWF0ID0gJzI0
QkcnLAogIGszMkJHUkFQaXhlbEZvcm1hdCA9ICdCR1JBJywKICBrMzJBQkdSUGl4ZWxGb3JtYXQg
PSAnQUJHUicsCiAgazMyUkdCQVBpeGVsRm9ybWF0ID0gJ1JHQkEnLAogIGtZVVZTUGl4ZWxGb3Jt
YXQgPSAneXV2cycsCiAga1lVVlVQaXhlbEZvcm1hdCA9ICd5dXZ1JywKICBrWVZVOVBpeGVsRm9y
bWF0ID0gJ1lWVTknLAogIGtZVVY0MTFQaXhlbEZvcm1hdCA9ICdZNDExJywKICBrWVZZVTQyMlBp
eGVsRm9ybWF0ID0gJ1lWWVUnLAogIGtVWVZZNDIyUGl4ZWxGb3JtYXQgPSAnVVlWWScsCiAga1lV
VjIxMVBpeGVsRm9ybWF0ID0gJ1kyMTEnLAogIGsydnV5UGl4ZWxGb3JtYXQgPSAnMnZ1eScKfTsK
CgpzdHJ1Y3QgUGl4TWFwIHsKICBQdHIgYmFzZUFkZHI7CiAgc2hvcnQgcm93Qnl0ZXM7CiAgUmVj
dCBib3VuZHM7CiAgc2hvcnQgcG1WZXJzaW9uOwogIHNob3J0IHBhY2tUeXBlOwogIFNJbnQzMiBw
YWNrU2l6ZTsKICBGaXhlZCBoUmVzOwogIEZpeGVkIHZSZXM7CiAgc2hvcnQgcGl4ZWxUeXBlOwog
IHNob3J0IHBpeGVsU2l6ZTsKICBzaG9ydCBjbXBDb3VudDsKICBzaG9ydCBjbXBTaXplOwogIE9T
VHlwZSBwaXhlbEZvcm1hdDsKICBDVGFiSGFuZGxlIHBtVGFibGU7CiAgdm9pZCAqIHBtRXh0Owp9
Owp0eXBlZGVmIHN0cnVjdCBQaXhNYXAgUGl4TWFwOwp0eXBlZGVmIFBpeE1hcCAqIFBpeE1hcFB0
cjsKdHlwZWRlZiBQaXhNYXBQdHIgKiBQaXhNYXBIYW5kbGU7CnN0cnVjdCBQaXhQYXQgewogIHNo
b3J0IHBhdFR5cGU7CiAgUGl4TWFwSGFuZGxlIHBhdE1hcDsKICBIYW5kbGUgcGF0RGF0YTsKICBI
YW5kbGUgcGF0WERhdGE7CiAgc2hvcnQgcGF0WFZhbGlkOwogIEhhbmRsZSBwYXRYTWFwOwogIFBh
dHRlcm4gcGF0MURhdGE7Cn07CnR5cGVkZWYgc3RydWN0IFBpeFBhdCBQaXhQYXQ7CnR5cGVkZWYg
UGl4UGF0ICogUGl4UGF0UHRyOwp0eXBlZGVmIFBpeFBhdFB0ciAqIFBpeFBhdEhhbmRsZTsKc3Ry
dWN0IENDcnNyIHsKICBzaG9ydCBjcnNyVHlwZTsKICBQaXhNYXBIYW5kbGUgY3Jzck1hcDsKICBI
YW5kbGUgY3JzckRhdGE7CiAgSGFuZGxlIGNyc3JYRGF0YTsKICBzaG9ydCBjcnNyWFZhbGlkOwog
IEhhbmRsZSBjcnNyWEhhbmRsZTsKICBCaXRzMTYgY3JzcjFEYXRhOwogIEJpdHMxNiBjcnNyTWFz
azsKICBQb2ludCBjcnNySG90U3BvdDsKICBTSW50MzIgY3JzclhUYWJsZTsKICBTSW50MzIgY3Jz
cklEOwp9Owp0eXBlZGVmIHN0cnVjdCBDQ3JzciBDQ3JzcjsKdHlwZWRlZiBDQ3JzciAqIENDcnNy
UHRyOwp0eXBlZGVmIENDcnNyUHRyICogQ0Nyc3JIYW5kbGU7CnN0cnVjdCBHYW1tYVRibCB7CiAg
c2hvcnQgZ1ZlcnNpb247CiAgc2hvcnQgZ1R5cGU7CiAgc2hvcnQgZ0Zvcm11bGFTaXplOwogIHNo
b3J0IGdDaGFuQ250OwogIHNob3J0IGdEYXRhQ250OwogIHNob3J0IGdEYXRhV2lkdGg7CiAgc2hv
cnQgZ0Zvcm11bGFEYXRhWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBHYW1tYVRibCBHYW1tYVRibDsK
dHlwZWRlZiBHYW1tYVRibCAqIEdhbW1hVGJsUHRyOwp0eXBlZGVmIEdhbW1hVGJsUHRyICogR2Ft
bWFUYmxIYW5kbGU7CnN0cnVjdCBJVGFiIHsKICBTSW50MzIgaVRhYlNlZWQ7CiAgc2hvcnQgaVRh
YlJlczsKICBCeXRlIGlUVGFibGVbMV07Cn07CnR5cGVkZWYgc3RydWN0IElUYWIgSVRhYjsKdHlw
ZWRlZiBJVGFiICogSVRhYlB0cjsKdHlwZWRlZiBJVGFiUHRyICogSVRhYkhhbmRsZTsKc3RydWN0
IFNQcm9jUmVjIHsKICBIYW5kbGUgbnh0U3JjaDsKICBDb2xvclNlYXJjaFVQUCBzcmNoUHJvYzsK
fTsKdHlwZWRlZiBzdHJ1Y3QgU1Byb2NSZWMgU1Byb2NSZWM7CnR5cGVkZWYgU1Byb2NSZWMgKiBT
UHJvY1B0cjsKdHlwZWRlZiBTUHJvY1B0ciAqIFNQcm9jSG5kbDsKc3RydWN0IENQcm9jUmVjIHsK
ICBIYW5kbGUgbnh0Q29tcDsKICBDb2xvckNvbXBsZW1lbnRVUFAgY29tcFByb2M7Cn07CnR5cGVk
ZWYgc3RydWN0IENQcm9jUmVjIENQcm9jUmVjOwp0eXBlZGVmIENQcm9jUmVjICogQ1Byb2NQdHI7
CnR5cGVkZWYgQ1Byb2NQdHIgKiBDUHJvY0huZGw7CgojZGVmaW5lIE9MREdERVZJQ0VTVFJVQ1Qg
MAp0eXBlZGVmIHN0cnVjdCBHRGV2aWNlIEdEZXZpY2U7CnR5cGVkZWYgR0RldmljZSAqIEdEUHRy
Owp0eXBlZGVmIEdEUHRyICogR0RIYW5kbGU7CnN0cnVjdCBHRGV2aWNlIHsKICBzaG9ydCBnZFJl
Zk51bTsKICBzaG9ydCBnZElEOwogIHNob3J0IGdkVHlwZTsKICBJVGFiSGFuZGxlIGdkSVRhYmxl
OwogIHNob3J0IGdkUmVzUHJlZjsKICBTUHJvY0huZGwgZ2RTZWFyY2hQcm9jOwogIENQcm9jSG5k
bCBnZENvbXBQcm9jOwogIHNob3J0IGdkRmxhZ3M7CiAgUGl4TWFwSGFuZGxlIGdkUE1hcDsKICBT
SW50MzIgZ2RSZWZDb247CiAgR0RIYW5kbGUgZ2ROZXh0R0Q7CiAgUmVjdCBnZFJlY3Q7CiAgU0lu
dDMyIGdkTW9kZTsKICBzaG9ydCBnZENDQnl0ZXM7CiAgc2hvcnQgZ2RDQ0RlcHRoOwogIEhhbmRs
ZSBnZENDWERhdGE7CiAgSGFuZGxlIGdkQ0NYTWFzazsKICBIYW5kbGUgZ2RFeHQ7Cn07CgpzdHJ1
Y3QgR3JhZlZhcnMgewogIFJHQkNvbG9yIHJnYk9wQ29sb3I7CiAgUkdCQ29sb3IgcmdiSGlsaXRl
Q29sb3I7CiAgSGFuZGxlIHBtRmdDb2xvcjsKICBzaG9ydCBwbUZnSW5kZXg7CiAgSGFuZGxlIHBt
QmtDb2xvcjsKICBzaG9ydCBwbUJrSW5kZXg7CiAgc2hvcnQgcG1GbGFnczsKfTsKdHlwZWRlZiBz
dHJ1Y3QgR3JhZlZhcnMgR3JhZlZhcnM7CnR5cGVkZWYgR3JhZlZhcnMgKiBHVmFyUHRyOwp0eXBl
ZGVmIEdWYXJQdHIgKiBHVmFySGFuZGxlOwoKCgoKCnR5cGVkZWYgR3JhZlB0ciBDR3JhZlB0cjsK
Cgp0eXBlZGVmIE9TU3RhdHVzICggKiBRRFByaW50ZXJTdGF0dXNQcm9jUHRyKShQcmludGVyU3Rh
dHVzT3Bjb2RlIG9wY29kZSwgQ0dyYWZQdHIgY3VycmVudFBvcnQsIHZvaWQgKnByaW50ZXJTdGF0
dXMpOwp0eXBlZGVmIFFEUHJpbnRlclN0YXR1c1Byb2NQdHIgUURQcmludGVyU3RhdHVzVVBQOwoK
c3RydWN0IENRRFByb2NzIHsKICBRRFRleHRVUFAgdGV4dFByb2M7CiAgUURMaW5lVVBQIGxpbmVQ
cm9jOwogIFFEUmVjdFVQUCByZWN0UHJvYzsKICBRRFJSZWN0VVBQIHJSZWN0UHJvYzsKICBRRE92
YWxVUFAgb3ZhbFByb2M7CiAgUURBcmNVUFAgYXJjUHJvYzsKICBRRFBvbHlVUFAgcG9seVByb2M7
CiAgUURSZ25VUFAgcmduUHJvYzsKICBRREJpdHNVUFAgYml0c1Byb2M7CiAgUURDb21tZW50VVBQ
IGNvbW1lbnRQcm9jOwogIFFEVHhNZWFzVVBQIHR4TWVhc1Byb2M7CiAgUURHZXRQaWNVUFAgZ2V0
UGljUHJvYzsKICBRRFB1dFBpY1VQUCBwdXRQaWNQcm9jOwogIFFET3Bjb2RlVVBQIG9wY29kZVBy
b2M7CiAgVW5pdmVyc2FsUHJvY1B0ciBuZXdQcm9jMTsKICBRRFN0ZEdseXBoc1VQUCBnbHlwaHNQ
cm9jOwogIFFEUHJpbnRlclN0YXR1c1VQUCBwcmludGVyU3RhdHVzUHJvYzsKICBVbml2ZXJzYWxQ
cm9jUHRyIG5ld1Byb2M0OwogIFVuaXZlcnNhbFByb2NQdHIgbmV3UHJvYzU7CiAgVW5pdmVyc2Fs
UHJvY1B0ciBuZXdQcm9jNjsKfTsKdHlwZWRlZiBzdHJ1Y3QgQ1FEUHJvY3MgQ1FEUHJvY3M7CnR5
cGVkZWYgQ1FEUHJvY3MgKiBDUURQcm9jc1B0cjsKIyAxNTM1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1l
d29yay9IZWFkZXJzL1F1aWNrZHJhd1R5cGVzLmgiIDMKdHlwZWRlZiBXaW5kb3dQdHIgQ1dpbmRv
d1B0cjsKCgoKCnN0cnVjdCBSZXFMaXN0UmVjIHsKICBzaG9ydCByZXFMU2l6ZTsKICBzaG9ydCBy
ZXFMRGF0YVsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgUmVxTGlzdFJlYyBSZXFMaXN0UmVjOwpzdHJ1
Y3QgT3BlbkNQaWNQYXJhbXMgewogIFJlY3Qgc3JjUmVjdDsKICBGaXhlZCBoUmVzOwogIEZpeGVk
IHZSZXM7CiAgc2hvcnQgdmVyc2lvbjsKICBzaG9ydCByZXNlcnZlZDE7CiAgU0ludDMyIHJlc2Vy
dmVkMjsKfTsKdHlwZWRlZiBzdHJ1Y3QgT3BlbkNQaWNQYXJhbXMgT3BlbkNQaWNQYXJhbXM7CnR5
cGVkZWYgdm9pZCAoICogRGV2aWNlTG9vcERyYXdpbmdQcm9jUHRyKShzaG9ydCBkZXB0aCwgc2hv
cnQgZGV2aWNlRmxhZ3MsIEdESGFuZGxlIHRhcmdldERldmljZSwgU1JlZkNvbiB1c2VyRGF0YSk7
CnR5cGVkZWYgRGV2aWNlTG9vcERyYXdpbmdQcm9jUHRyIERldmljZUxvb3BEcmF3aW5nVVBQOwoj
IDE1NzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3VHlwZXMuaCIg
MwpleHRlcm4gRGV2aWNlTG9vcERyYXdpbmdVUFAKTmV3RGV2aWNlTG9vcERyYXdpbmdVUFAoRGV2
aWNlTG9vcERyYXdpbmdQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7CiMgMTU5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdU
eXBlcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VEZXZpY2VMb29wRHJhd2luZ1VQUChEZXZpY2VM
b29wRHJhd2luZ1VQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTYx
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdUeXBlcy5oIiAzCmV4
dGVybiB2b2lkCkludm9rZURldmljZUxvb3BEcmF3aW5nVVBQKAogIHNob3J0IGRlcHRoLAogIHNo
b3J0IGRldmljZUZsYWdzLAogIEdESGFuZGxlIHRhcmdldERldmljZSwKICBTUmVmQ29uIHVzZXJE
YXRhLAogIERldmljZUxvb3BEcmF3aW5nVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKCgoKICAgIGlubGluZSBEZXZpY2VMb29wRHJhd2luZ1VQUCBOZXdEZXZpY2VMb29w
RHJhd2luZ1VQUChEZXZpY2VMb29wRHJhd2luZ1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJu
IHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlRGV2aWNlTG9vcERyYXdpbmdV
UFAoRGV2aWNlTG9vcERyYXdpbmdVUFApIHsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlRGV2aWNl
TG9vcERyYXdpbmdVUFAoc2hvcnQgZGVwdGgsIHNob3J0IGRldmljZUZsYWdzLCBHREhhbmRsZSB0
YXJnZXREZXZpY2UsIFNSZWZDb24gdXNlckRhdGEsIERldmljZUxvb3BEcmF3aW5nVVBQIHVzZXJV
UFApIHsgKCp1c2VyVVBQKShkZXB0aCwgZGV2aWNlRmxhZ3MsIHRhcmdldERldmljZSwgdXNlckRh
dGEpOyB9CiMgMTY2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdU
eXBlcy5oIiAzCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDQyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1l
d29yay9IZWFkZXJzL1FELmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hl
YWRlcnMvUXVpY2tkcmF3QVBJLmgiIDEgMwojIDE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9I
ZWFkZXJzL1F1aWNrZHJhd0FQSS5oIiAzCiNkZWZpbmUgX19RVUlDS0RSQVdBUElfXyAKCgoKCgoK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlR3JhcGhp
Y3MuaCIgMSAzCiMgMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3
QVBJLmgiIDIgMwojIDM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJh
d0FQSS5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29s
b3JTeW5jRGVwcmVjYXRlZC5oIiAxIDMKIyAzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVh
ZGVycy9RdWlja2RyYXdBUEkuaCIgMiAzCiMgNDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hl
YWRlcnMvUXVpY2tkcmF3QVBJLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gs
IDIpCiMgMTM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd0FQSS5o
IiAzCmVudW0gewogIGtRRFJlZ2lvblRvUmVjdHNNc2dJbml0ID0gMSwKICBrUURSZWdpb25Ub1Jl
Y3RzTXNnUGFyc2UgPSAyLAogIGtRRFJlZ2lvblRvUmVjdHNNc2dUZXJtaW5hdGUgPSAzCn07Cgpl
bnVtIHsKICBrUURQYXJzZVJlZ2lvbkZyb21Ub3AgPSAoMSA8PCAwKSwKICBrUURQYXJzZVJlZ2lv
bkZyb21Cb3R0b20gPSAoMSA8PCAxKSwKICBrUURQYXJzZVJlZ2lvbkZyb21MZWZ0ID0gKDEgPDwg
MiksCiAga1FEUGFyc2VSZWdpb25Gcm9tUmlnaHQgPSAoMSA8PCAzKSwKICBrUURQYXJzZVJlZ2lv
bkZyb21Ub3BMZWZ0ID0ga1FEUGFyc2VSZWdpb25Gcm9tVG9wIHwga1FEUGFyc2VSZWdpb25Gcm9t
TGVmdCwKICBrUURQYXJzZVJlZ2lvbkZyb21Cb3R0b21SaWdodCA9IGtRRFBhcnNlUmVnaW9uRnJv
bUJvdHRvbSB8IGtRRFBhcnNlUmVnaW9uRnJvbVJpZ2h0Cn07Cgp0eXBlZGVmIFNJbnQzMiBRRFJl
Z2lvblBhcnNlRGlyZWN0aW9uOwp0eXBlZGVmIE9TU3RhdHVzICggKiBSZWdpb25Ub1JlY3RzUHJv
Y1B0cikoVUludDE2IG1lc3NhZ2UsIFJnbkhhbmRsZSByZ24sIGNvbnN0IFJlY3QgKnJlY3QsIHZv
aWQgKnJlZkNvbik7CnR5cGVkZWYgUmVnaW9uVG9SZWN0c1Byb2NQdHIgUmVnaW9uVG9SZWN0c1VQ
UDsKIyAxNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3QVBJLmgi
IDMKZXh0ZXJuIFJlZ2lvblRvUmVjdHNVUFAKTmV3UmVnaW9uVG9SZWN0c1VQUChSZWdpb25Ub1Jl
Y3RzUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDE3
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdBUEkuaCIgMwpleHRl
cm4gdm9pZApEaXNwb3NlUmVnaW9uVG9SZWN0c1VQUChSZWdpb25Ub1JlY3RzVVBQIHVzZXJVUFAp
IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3
b3JrL0hlYWRlcnMvUXVpY2tkcmF3QVBJLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkludm9rZVJlZ2lv
blRvUmVjdHNVUFAoCiAgVUludDE2IG1lc3NhZ2UsCiAgUmduSGFuZGxlIHJnbiwKICBjb25zdCBS
ZWN0ICogcmVjdCwKICB2b2lkICogcmVmQ29uLAogIFJlZ2lvblRvUmVjdHNVUFAgdXNlclVQUCkg
X19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCgogICAgaW5saW5lIFJlZ2lvblRvUmVjdHNV
UFAgTmV3UmVnaW9uVG9SZWN0c1VQUChSZWdpb25Ub1JlY3RzUHJvY1B0ciB1c2VyUm91dGluZSkg
eyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VSZWdpb25Ub1Jl
Y3RzVVBQKFJlZ2lvblRvUmVjdHNVUFApIHsgfQogICAgaW5saW5lIE9TU3RhdHVzIEludm9rZVJl
Z2lvblRvUmVjdHNVUFAoVUludDE2IG1lc3NhZ2UsIFJnbkhhbmRsZSByZ24sIGNvbnN0IFJlY3Qg
KiByZWN0LCB2b2lkICogcmVmQ29uLCBSZWdpb25Ub1JlY3RzVVBQIHVzZXJVUFApIHsgcmV0dXJu
ICgqdXNlclVQUCkobWVzc2FnZSwgcmduLCByZWN0LCByZWZDb24pOyB9CiMgMjE4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd0FQSS5oIiAzCmV4dGVybiBPU1N0YXR1
cwpRRFJlZ2lvblRvUmVjdHMoCiAgUmduSGFuZGxlIHJnbiwKICBRRFJlZ2lvblBhcnNlRGlyZWN0
aW9uIGRpciwKICBSZWdpb25Ub1JlY3RzVVBQIHByb2MsCiAgdm9pZCAqIHVzZXJEYXRhKSA7CiMg
OTEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd0FQSS5oIiAzCiNk
ZWZpbmUgTWFjU2V0UmVjdCBTZXRSZWN0CgpleHRlcm4gdm9pZApTZXRSZWN0KAogIFJlY3QgKiBy
LAogIHNob3J0IGxlZnQsCiAgc2hvcnQgdG9wLAogIHNob3J0IHJpZ2h0LAogIHNob3J0IGJvdHRv
bSkgOwojIDkzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdBUEku
aCIgMwojZGVmaW5lIE1hY09mZnNldFJlY3QgT2Zmc2V0UmVjdAoKZXh0ZXJuIHZvaWQKT2Zmc2V0
UmVjdCgKICBSZWN0ICogciwKICBzaG9ydCBkaCwKICBzaG9ydCBkdikgOwojIDk1NyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdBUEkuaCIgMwojZGVmaW5lIE1hY0lu
c2V0UmVjdCBJbnNldFJlY3QKCmV4dGVybiB2b2lkCkluc2V0UmVjdCgKICBSZWN0ICogciwKICBz
aG9ydCBkaCwKICBzaG9ydCBkdikgOwojIDk3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVh
ZGVycy9RdWlja2RyYXdBUEkuaCIgMwpleHRlcm4gQm9vbGVhbgpTZWN0UmVjdCgKICBjb25zdCBS
ZWN0ICogc3JjMSwKICBjb25zdCBSZWN0ICogc3JjMiwKICBSZWN0ICogZHN0UmVjdCkgOwojIDk5
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdBUEkuaCIgMwojZGVm
aW5lIE1hY1VuaW9uUmVjdCBVbmlvblJlY3QKCmV4dGVybiB2b2lkClVuaW9uUmVjdCgKICBjb25z
dCBSZWN0ICogc3JjMSwKICBjb25zdCBSZWN0ICogc3JjMiwKICBSZWN0ICogZHN0UmVjdCkgOwoj
IDEwMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3QVBJLmgiIDMK
I2RlZmluZSBNYWNFcXVhbFJlY3QgRXF1YWxSZWN0CgpleHRlcm4gQm9vbGVhbgpFcXVhbFJlY3Qo
CiAgY29uc3QgUmVjdCAqIHJlY3QxLAogIGNvbnN0IFJlY3QgKiByZWN0MikgOwojIDEwMzYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3QVBJLmgiIDMKZXh0ZXJuIEJv
b2xlYW4KRW1wdHlSZWN0KGNvbnN0IFJlY3QgKiByKSA7CiMgMjIxNSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5m
cmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdBUEkuaCIgMwpleHRlcm4gdm9pZApTZXRQdCgKICBQ
b2ludCAqIHB0LAogIHNob3J0IGgsCiAgc2hvcnQgdikgOwojIDIzMTkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQu
ZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3QVBJLmgiIDMKZXh0ZXJuIHZvaWQKU2NhbGVQdCgK
ICBQb2ludCAqIHB0LAogIGNvbnN0IFJlY3QgKiBzcmNSZWN0LAogIGNvbnN0IFJlY3QgKiBkc3RS
ZWN0KSA7CiMgMjMzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdB
UEkuaCIgMwpleHRlcm4gdm9pZApNYXBQdCgKICBQb2ludCAqIHB0LAogIGNvbnN0IFJlY3QgKiBz
cmNSZWN0LAogIGNvbnN0IFJlY3QgKiBkc3RSZWN0KSA7CiMgMjM1NSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5m
cmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdBUEkuaCIgMwpleHRlcm4gdm9pZApNYXBSZWN0KAog
IFJlY3QgKiByLAogIGNvbnN0IFJlY3QgKiBzcmNSZWN0LAogIGNvbnN0IFJlY3QgKiBkc3RSZWN0
KSA7CiMgMjYyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdBUEku
aCIgMwpleHRlcm4gdm9pZApBZGRQdCgKICBQb2ludCBzcmMsCiAgUG9pbnQgKiBkc3QpIDsKIyAy
NjQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd0FQSS5oIiAzCmV4
dGVybiBCb29sZWFuCkVxdWFsUHQoCiAgUG9pbnQgcHQxLAogIFBvaW50IHB0MikgOwojIDI2NTkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3QVBJLmgiIDMKI2RlZmlu
ZSBNYWNQdEluUmVjdCBQdEluUmVjdAoKZXh0ZXJuIEJvb2xlYW4KUHRJblJlY3QoCiAgUG9pbnQg
cHQsCiAgY29uc3QgUmVjdCAqIHIpIDsKIyAyNjc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9I
ZWFkZXJzL1F1aWNrZHJhd0FQSS5oIiAzCmV4dGVybiB2b2lkClB0MlJlY3QoCiAgUG9pbnQgcHQx
LAogIFBvaW50IHB0MiwKICBSZWN0ICogZHN0UmVjdCkgOwojIDI2OTYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQu
ZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3QVBJLmgiIDMKZXh0ZXJuIHZvaWQKUHRUb0FuZ2xl
KAogIGNvbnN0IFJlY3QgKiByLAogIFBvaW50IHB0LAogIHNob3J0ICogYW5nbGUpIDsKIyAyNzE0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1F1aWNrZHJhd0FQSS5oIiAzCmV4dGVy
biB2b2lkClN1YlB0KAogIFBvaW50IHNyYywKICBQb2ludCAqIGRzdCkgOwojIDQwNzYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3QVBJLmgiIDMKZW51bSB7CiAgY29s
b3JYb3JYRmVyID0gNTIsCiAgbm9pc2VYRmVyID0gNTMsCiAgY3VzdG9tWEZlciA9IDU0Cn07CgoK
ZW51bSB7CiAga1hGZXIxUGl4ZWxBdEFUaW1lID0gMHgwMDAwMDAwMSwKICBrWEZlckNvbnZlcnRQ
aXhlbFRvUkdCMzIgPSAweDAwMDAwMDAyCn07CgpzdHJ1Y3QgQ3VzdG9tWEZlclJlYyB7CiAgVUlu
dDMyIHZlcnNpb247CiAgdm9pZCAqIHNyY1BpeGVsczsKICB2b2lkICogZGVzdFBpeGVsczsKICB2
b2lkICogcmVzdWx0UGl4ZWxzOwogIFVJbnQzMiByZWZDb247CiAgVUludDMyIHBpeGVsU2l6ZTsK
ICBVSW50MzIgcGl4ZWxDb3VudDsKICBQb2ludCBmaXJzdFBpeGVsSFY7CiAgUmVjdCBkZXN0Qm91
bmRzOwp9Owp0eXBlZGVmIHN0cnVjdCBDdXN0b21YRmVyUmVjIEN1c3RvbVhGZXJSZWM7CnR5cGVk
ZWYgQ3VzdG9tWEZlclJlYyAqIEN1c3RvbVhGZXJSZWNQdHI7CnR5cGVkZWYgdm9pZCAoICogQ3Vz
dG9tWEZlclByb2NQdHIpKEN1c3RvbVhGZXJSZWNQdHIgaW5mbyk7CiMgNDE0NCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXdBUEkuaCIgMwplbnVtIHsKICBrQ3Vyc29y
Q29tcG9uZW50c1ZlcnNpb24gPSAweDAwMDEwMDAxCn07CgplbnVtIHsKICBrQ3Vyc29yQ29tcG9u
ZW50VHlwZSA9ICdjdXJzJwp9OwoKCmVudW0gewogIGN1cnNvckRvZXNBbmltYXRlID0gMUwgPDwg
MCwKICBjdXJzb3JEb2VzSGFyZHdhcmUgPSAxTCA8PCAxLAogIGN1cnNvckRvZXNVbnJlYWRhYmxl
U2NyZWVuQml0cyA9IDFMIDw8IDIKfTsKCgplbnVtIHsKICBrUmVuZGVyQ3Vyc29ySW5IYXJkd2Fy
ZSA9IDFMIDw8IDAsCiAga1JlbmRlckN1cnNvckluU29mdHdhcmUgPSAxTCA8PCAxCn07CgoKc3Ry
dWN0IEN1cnNvckluZm8gewogIGxvbmcgdmVyc2lvbjsKICBsb25nIGNhcGFiaWxpdGllczsKICBs
b25nIGFuaW1hdGVEdXJhdGlvbjsKICBSZWN0IGJvdW5kczsKICBQb2ludCBob3RzcG90OwogIGxv
bmcgcmVzZXJ2ZWQ7Cgp9Owp0eXBlZGVmIHN0cnVjdCBDdXJzb3JJbmZvIEN1cnNvckluZm87Cgpl
bnVtIHsKICBrQ3Vyc29yQ29tcG9uZW50SW5pdCA9IDB4MDAwMSwKICBrQ3Vyc29yQ29tcG9uZW50
R2V0SW5mbyA9IDB4MDAwMiwKICBrQ3Vyc29yQ29tcG9uZW50U2V0T3V0cHV0TW9kZSA9IDB4MDAw
MywKICBrQ3Vyc29yQ29tcG9uZW50U2V0RGF0YSA9IDB4MDAwNCwKICBrQ3Vyc29yQ29tcG9uZW50
UmVjb25maWd1cmUgPSAweDAwMDUsCiAga0N1cnNvckNvbXBvbmVudERyYXcgPSAweDAwMDYsCiAg
a0N1cnNvckNvbXBvbmVudEVyYXNlID0gMHgwMDA3LAogIGtDdXJzb3JDb21wb25lbnRNb3ZlID0g
MHgwMDA4LAogIGtDdXJzb3JDb21wb25lbnRBbmltYXRlID0gMHgwMDA5LAogIGtDdXJzb3JDb21w
b25lbnRMYXN0UmVzZXJ2ZWQgPSAweDAwNTAKfTsKIyA2MDAwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1l
d29yay9IZWFkZXJzL1F1aWNrZHJhd0FQSS5oIiAzCnR5cGVkZWYgc3RydWN0IE9wYXF1ZVFEUmVn
aW9uQml0c1JlZiogUURSZWdpb25CaXRzUmVmOwojIDYzNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3
b3JrL0hlYWRlcnMvUXVpY2tkcmF3QVBJLmgiIDMKZW51bSB7CiAga1FEWEFycm93Q3Vyc29yID0g
MCwKICBrUURYSUJlYW1DdXJzb3IgPSAxLAogIGtRRFhJQmVhbVhPUkN1cnNvciA9IDIsCiAga1FE
WEFsaWFzQ3Vyc29yID0gMywKICBrUURYQ29weUN1cnNvciA9IDQsCiAga1FEWE1vdmVDdXJzb3Ig
PSA1LAogIGtRRFhOdW1iZXJPZlN5c3RlbUN1cnNvcnMgPSA2Cn07CgoKdHlwZWRlZiBVSW50MzIg
UURYU3lzdGVtQ3Vyc29ySUQ7CiMgNjQ5MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVy
cy9RdWlja2RyYXdBUEkuaCIgMwplbnVtIHsKICBrUURVc2VEZWZhdWx0VGV4dFJlbmRlcmluZyA9
IDAsCgogIGtRRFVzZVRydWVUeXBlU2NhbGVyR2x5cGhzID0gKDEgPDwgMCksCiAga1FEVXNlQ0dU
ZXh0UmVuZGVyaW5nID0gKDEgPDwgMSksCiAga1FEVXNlQ0dUZXh0TWV0cmljcyA9ICgxIDw8IDIp
LAogIGtRRFN1cHBvcnRlZEZsYWdzID0ga1FEVXNlVHJ1ZVR5cGVTY2FsZXJHbHlwaHMgfCBrUURV
c2VDR1RleHRSZW5kZXJpbmcgfCBrUURVc2VDR1RleHRNZXRyaWNzLAogIGtRRERvbnRDaGFuZ2VG
bGFncyA9IChpbnQpMHhGRkZGRkZGRgp9OwojIDcwNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3Jr
L0hlYWRlcnMvUXVpY2tkcmF3QVBJLmgiIDMKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgNDYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUUQuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RdWlja2RyYXcuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
UUQuZnJhbWV3b3JrL0hlYWRlcnMvUXVpY2tkcmF3LmgiIDMKI2RlZmluZSBfX1FVSUNLRFJBV19f
IAojIDUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1FELmgiIDIgMwoKCgojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUURPZmZzY3JlZW4uaCIgMSAzCiMgMTcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUURPZmZzY3JlZW4uaCIgMwojZGVmaW5l
IF9fUURPRkZTQ1JFRU5fXyAKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9R
RE9mZnNjcmVlbi5oIiAzCmV4dGVybiAiQyIgewoKCgoKCgoKZW51bSB7CiAgcGl4UHVyZ2VCaXQg
PSAwLAogIG5vTmV3RGV2aWNlQml0ID0gMSwKICB1c2VUZW1wTWVtQml0ID0gMiwKICBrZWVwTG9j
YWxCaXQgPSAzLAogIHVzZURpc3RhbnRIZHdyTWVtQml0ID0gNCwKICB1c2VMb2NhbEhkd3JNZW1C
aXQgPSA1LAogIHBpeGVsc1B1cmdlYWJsZUJpdCA9IDYsCiAgcGl4ZWxzTG9ja2VkQml0ID0gNywK
ICBuYXRpdmVFbmRpYW5QaXhNYXBCaXQgPSA4LAogIG1hcFBpeEJpdCA9IDE2LAogIG5ld0RlcHRo
Qml0ID0gMTcsCiAgYWxpZ25QaXhCaXQgPSAxOCwKICBuZXdSb3dCeXRlc0JpdCA9IDE5LAogIHJl
YWxsb2NQaXhCaXQgPSAyMCwKICBjbGlwUGl4Qml0ID0gMjgsCiAgc3RyZXRjaFBpeEJpdCA9IDI5
LAogIGRpdGhlclBpeEJpdCA9IDMwLAogIGd3RmxhZ0VyckJpdCA9IDMxCn07CgplbnVtIHsKICBw
aXhQdXJnZSA9IDFMIDw8IHBpeFB1cmdlQml0LAogIG5vTmV3RGV2aWNlID0gMUwgPDwgbm9OZXdE
ZXZpY2VCaXQsCiAgdXNlVGVtcE1lbSA9IDFMIDw8IHVzZVRlbXBNZW1CaXQsCiAga2VlcExvY2Fs
ID0gMUwgPDwga2VlcExvY2FsQml0LAogIHVzZURpc3RhbnRIZHdyTWVtID0gMUwgPDwgdXNlRGlz
dGFudEhkd3JNZW1CaXQsCiAgdXNlTG9jYWxIZHdyTWVtID0gMUwgPDwgdXNlTG9jYWxIZHdyTWVt
Qml0LAogIHBpeGVsc1B1cmdlYWJsZSA9IDFMIDw8IHBpeGVsc1B1cmdlYWJsZUJpdCwKICBwaXhl
bHNMb2NrZWQgPSAxTCA8PCBwaXhlbHNMb2NrZWRCaXQsCiAga05hdGl2ZUVuZGlhblBpeE1hcCA9
IDFMIDw8IG5hdGl2ZUVuZGlhblBpeE1hcEJpdCwKICBrQWxsb2NEaXJlY3REcmF3U3VyZmFjZSA9
IDFMIDw8IDE0LAogIG1hcFBpeCA9IDFMIDw8IG1hcFBpeEJpdCwKICBuZXdEZXB0aCA9IDFMIDw8
IG5ld0RlcHRoQml0LAogIGFsaWduUGl4ID0gMUwgPDwgYWxpZ25QaXhCaXQsCiAgbmV3Um93Qnl0
ZXMgPSAxTCA8PCBuZXdSb3dCeXRlc0JpdCwKICByZWFsbG9jUGl4ID0gMUwgPDwgcmVhbGxvY1Bp
eEJpdCwKICBjbGlwUGl4ID0gMUwgPDwgY2xpcFBpeEJpdCwKICBzdHJldGNoUGl4ID0gMUwgPDwg
c3RyZXRjaFBpeEJpdCwKICBkaXRoZXJQaXggPSAxTCA8PCBkaXRoZXJQaXhCaXQsCiAgZ3dGbGFn
RXJyID0gMUwgPDwgZ3dGbGFnRXJyQml0Cn07Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgR1dvcmxk
RmxhZ3M7Cgp0eXBlZGVmIENHcmFmUHRyIEdXb3JsZFB0cjsKIyAxMTIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQu
ZnJhbWV3b3JrL0hlYWRlcnMvUURPZmZzY3JlZW4uaCIgMwplbnVtIHsKICBkZXZpY2VJc0luZGly
ZWN0ID0gKDFMIDw8IDApLAogIGRldmljZU5lZWRzTG9jayA9ICgxTCA8PCAxKSwKICBkZXZpY2VJ
c1N0YXRpYyA9ICgxTCA8PCAyKSwKICBkZXZpY2VJc0V4dGVybmFsQnVmZmVyID0gKDFMIDw8IDMp
LAogIGRldmljZUlzRERTdXJmYWNlID0gKDFMIDw8IDQpLAogIGRldmljZUlzRENJU3VyZmFjZSA9
ICgxTCA8PCA1KSwKICBkZXZpY2VJc0dESVN1cmZhY2UgPSAoMUwgPDwgNiksCiAgZGV2aWNlSXNB
U2NyZWVuID0gKDFMIDw8IDcpLAogIGRldmljZUlzT3ZlcmxheVN1cmZhY2UgPSAoMUwgPDwgOCkK
fTsKIyA0OTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUURPZmZzY3JlZW4uaCIg
Mwp9CiMgNTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUUQuaCIgMiAzCgoKCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RRFBpY3RUb0NHQ29udGV4dC5oIiAx
IDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RRFBpY3RUb0NHQ29udGV4
dC5oIiAzCiNkZWZpbmUgX19RRFBJQ1RUT0NHQ09OVEVYVF9fIAoKCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b3JlR3JhcGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb250ZXh0LmgiIDEgMwojIDIxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1FEUGljdFRvQ0dDb250ZXh0LmgiIDIgMwojIDMy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1FEUGljdFRvQ0dDb250ZXh0LmgiIDMK
ZXh0ZXJuICJDIiB7CgoKdHlwZWRlZiBzdHJ1Y3QgUURQaWN0KiBRRFBpY3RSZWY7CiMgMTcwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1FEUGljdFRvQ0dDb250ZXh0LmgiIDMKfQoj
IDU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1FELmgiIDIgMwoKCgoKCgoKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0ZvbnRzLmgiIDEgMwojIDE3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0ZvbnRzLmgiIDMKI2RlZmluZSBfX0ZPTlRTX18g
CiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvRm9udHMuaCIgMwpleHRlcm4g
IkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyAxNTggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3
b3JrL0hlYWRlcnMvRm9udHMuaCIgMwplbnVtIHsKICBzeXN0ZW1Gb250ID0gMCwKICBhcHBsRm9u
dCA9IDEKfTsKCmVudW0gewogIGtGTURlZmF1bHRPcHRpb25zID0ga05pbE9wdGlvbnMKfTsKCgpl
bnVtIHsKICBrRk1EZWZhdWx0QWN0aXZhdGlvbkNvbnRleHQgPSBrRk1EZWZhdWx0T3B0aW9ucywK
ICBrRk1HbG9iYWxBY3RpdmF0aW9uQ29udGV4dCA9IDB4MDAwMDAwMDEsCiAga0ZNTG9jYWxBY3Rp
dmF0aW9uQ29udGV4dCA9IGtGTURlZmF1bHRBY3RpdmF0aW9uQ29udGV4dAp9OwoKCmVudW0gewog
IGtGTURlZmF1bHRJdGVyYXRpb25TY29wZSA9IGtGTURlZmF1bHRPcHRpb25zLAogIGtGTUdsb2Jh
bEl0ZXJhdGlvblNjb3BlID0gMHgwMDAwMDAwMSwKICBrRk1Mb2NhbEl0ZXJhdGlvblNjb3BlID0g
a0ZNRGVmYXVsdEl0ZXJhdGlvblNjb3BlCn07CgoKZW51bSB7CiAga1BsYXRmb3JtRGVmYXVsdEd1
aUZvbnRJRCA9IGFwcGxGb250Cn07CgplbnVtIHsKICBjb21tYW5kTWFyayA9IDE3LAogIGNoZWNr
TWFyayA9IDE4LAogIGRpYW1vbmRNYXJrID0gMTksCiAgYXBwbGVNYXJrID0gMjAKfTsKCmVudW0g
ewogIHByb3BGb250ID0gMzY4NjQsCiAgcHJwRm50SCA9IDM2ODY1LAogIHBycEZudFcgPSAzNjg2
NiwKICBwcnBGbnRIVyA9IDM2ODY3LAogIGZpeGVkRm9udCA9IDQ1MDU2LAogIGZ4ZEZudEggPSA0
NTA1NywKICBmeGRGbnRXID0gNDUwNTgsCiAgZnhkRm50SFcgPSA0NTA1OSwKICBmb250V2lkID0g
NDQyMDgKfTsKCnN0cnVjdCBGTUlucHV0IHsKICBzaG9ydCBmYW1pbHk7CiAgc2hvcnQgc2l6ZTsK
ICBTdHlsZSBmYWNlOwogIEJvb2xlYW4gbmVlZEJpdHM7CiAgc2hvcnQgZGV2aWNlOwogIFBvaW50
IG51bWVyOwogIFBvaW50IGRlbm9tOwp9Owp0eXBlZGVmIHN0cnVjdCBGTUlucHV0IEZNSW5wdXQ7
CnN0cnVjdCBGTU91dHB1dCB7CiAgc2hvcnQgZXJyTnVtOwogIEhhbmRsZSBmb250SGFuZGxlOwog
IFVJbnQ4IGJvbGRQaXhlbHM7CiAgVUludDggaXRhbGljUGl4ZWxzOwogIFVJbnQ4IHVsT2Zmc2V0
OwogIFVJbnQ4IHVsU2hhZG93OwogIFVJbnQ4IHVsVGhpY2s7CiAgVUludDggc2hhZG93UGl4ZWxz
OwogIFNJbnQ4IGV4dHJhOwogIFVJbnQ4IGFzY2VudDsKICBVSW50OCBkZXNjZW50OwogIFVJbnQ4
IHdpZE1heDsKICBTSW50OCBsZWFkaW5nOwogIFNJbnQ4IGN1clN0eWxlOwogIFBvaW50IG51bWVy
OwogIFBvaW50IGRlbm9tOwp9Owp0eXBlZGVmIHN0cnVjdCBGTU91dHB1dCBGTU91dHB1dDsKdHlw
ZWRlZiBGTU91dHB1dCAqIEZNT3V0cHV0UHRyOwp0eXBlZGVmIEZNT3V0cHV0UHRyIEZNT3V0UHRy
OwpzdHJ1Y3QgRk1ldHJpY1JlYyB7CiAgRml4ZWQgYXNjZW50OwogIEZpeGVkIGRlc2NlbnQ7CiAg
Rml4ZWQgbGVhZGluZzsKICBGaXhlZCB3aWRNYXg7CiAgSGFuZGxlIHdUYWJIYW5kbGU7Cn07CnR5
cGVkZWYgc3RydWN0IEZNZXRyaWNSZWMgRk1ldHJpY1JlYzsKdHlwZWRlZiBGTWV0cmljUmVjICog
Rk1ldHJpY1JlY1B0cjsKdHlwZWRlZiBGTWV0cmljUmVjUHRyICogRk1ldHJpY1JlY0hhbmRsZTsK
IyAxMTQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0ZvbnRzLmgiIDMKdHlwZWRl
ZiBGTUZvbnRGYW1pbHkgRm9udEZhbWlseUlEOwp0eXBlZGVmIEZNRm9udFNpemUgRm9udFBvaW50
U2l6ZTsKZW51bSB7CiAga0ZNVXNlR2xvYmFsU2NvcGVPcHRpb24gPSAweDAwMDAwMDAxCn07CgoK
CgoKZW51bSB7CiAga0ZvbnRJRE5ld1lvcmsgPSAyLAogIGtGb250SURHZW5ldmEgPSAzLAogIGtG
b250SURNb25hY28gPSA0LAogIGtGb250SURWZW5pY2UgPSA1LAogIGtGb250SURMb25kb24gPSA2
LAogIGtGb250SURBdGhlbnMgPSA3LAogIGtGb250SURTYW5GcmFuY2lzY28gPSA4LAogIGtGb250
SURUb3JvbnRvID0gOSwKICBrRm9udElEQ2Fpcm8gPSAxMSwKICBrRm9udElETG9zQW5nZWxlcyA9
IDEyLAogIGtGb250SURUaW1lcyA9IDIwLAogIGtGb250SURIZWx2ZXRpY2EgPSAyMSwKICBrRm9u
dElEQ291cmllciA9IDIyLAogIGtGb250SURTeW1ib2wgPSAyMywKICBrRm9udElETW9iaWxlID0g
MjQKfTsKIyAxMTg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0ZvbnRzLmgiIDMK
c3RydWN0IFdpZEVudHJ5IHsKICBTSW50MTYgd2lkU3R5bGU7Cn07CnR5cGVkZWYgc3RydWN0IFdp
ZEVudHJ5IFdpZEVudHJ5OwpzdHJ1Y3QgV2lkVGFibGUgewogIFNJbnQxNiBudW1XaWR0aHM7Cn07
CnR5cGVkZWYgc3RydWN0IFdpZFRhYmxlIFdpZFRhYmxlOwpzdHJ1Y3QgQXNzY0VudHJ5IHsKICBT
SW50MTYgZm9udFNpemU7CiAgU0ludDE2IGZvbnRTdHlsZTsKICBTSW50MTYgZm9udElEOwp9Owp0
eXBlZGVmIHN0cnVjdCBBc3NjRW50cnkgQXNzY0VudHJ5OwpzdHJ1Y3QgRm9udEFzc29jIHsKICBT
SW50MTYgbnVtQXNzb2M7Cn07CnR5cGVkZWYgc3RydWN0IEZvbnRBc3NvYyBGb250QXNzb2M7CnN0
cnVjdCBTdHlsZVRhYmxlIHsKICBTSW50MTYgZm9udENsYXNzOwogIFNJbnQzMiBvZmZzZXQ7CiAg
U0ludDMyIHJlc2VydmVkOwogIGNoYXIgaW5kZXhlc1s0OF07Cn07CnR5cGVkZWYgc3RydWN0IFN0
eWxlVGFibGUgU3R5bGVUYWJsZTsKc3RydWN0IE5hbWVUYWJsZSB7CiAgU0ludDE2IHN0cmluZ0Nv
dW50OwogIFN0cjI1NSBiYXNlRm9udE5hbWU7Cn07CnR5cGVkZWYgc3RydWN0IE5hbWVUYWJsZSBO
YW1lVGFibGU7CnN0cnVjdCBLZXJuUGFpciB7CiAgY2hhciBrZXJuRmlyc3Q7CiAgY2hhciBrZXJu
U2Vjb25kOwogIFNJbnQxNiBrZXJuV2lkdGg7Cn07CnR5cGVkZWYgc3RydWN0IEtlcm5QYWlyIEtl
cm5QYWlyOwpzdHJ1Y3QgS2VybkVudHJ5IHsKICBTSW50MTYga2VyblN0eWxlOwogIFNJbnQxNiBr
ZXJuTGVuZ3RoOwp9Owp0eXBlZGVmIHN0cnVjdCBLZXJuRW50cnkgS2VybkVudHJ5OwpzdHJ1Y3Qg
S2VyblRhYmxlIHsKICBTSW50MTYgbnVtS2VybnM7Cn07CnR5cGVkZWYgc3RydWN0IEtlcm5UYWJs
ZSBLZXJuVGFibGU7CnN0cnVjdCBXaWR0aFRhYmxlIHsKICBGaXhlZCB0YWJEYXRhWzI1Nl07CiAg
SGFuZGxlIHRhYkZvbnQ7CiAgbG9uZyBzRXh0cmE7CiAgbG9uZyBzdHlsZTsKICBzaG9ydCBmSUQ7
CiAgc2hvcnQgZlNpemU7CiAgc2hvcnQgZmFjZTsKICBzaG9ydCBkZXZpY2U7CiAgUG9pbnQgaW5O
dW1lcjsKICBQb2ludCBpbkRlbm9tOwogIHNob3J0IGFGSUQ7CiAgSGFuZGxlIGZIYW5kOwogIEJv
b2xlYW4gdXNlZEZhbTsKICBVSW50OCBhRmFjZTsKICBzaG9ydCB2T3V0cHV0OwogIHNob3J0IGhP
dXRwdXQ7CiAgc2hvcnQgdkZhY3RvcjsKICBzaG9ydCBoRmFjdG9yOwogIHNob3J0IGFTaXplOwog
IHNob3J0IHRhYlNpemU7Cn07CnR5cGVkZWYgc3RydWN0IFdpZHRoVGFibGUgV2lkdGhUYWJsZTsK
dHlwZWRlZiBXaWR0aFRhYmxlICogV2lkdGhUYWJsZVB0cjsKdHlwZWRlZiBXaWR0aFRhYmxlUHRy
ICogV2lkdGhUYWJsZUhkbDsKc3RydWN0IEZhbVJlYyB7CiAgU0ludDE2IGZmRmxhZ3M7CiAgU0lu
dDE2IGZmRmFtSUQ7CiAgU0ludDE2IGZmRmlyc3RDaGFyOwogIFNJbnQxNiBmZkxhc3RDaGFyOwog
IFNJbnQxNiBmZkFzY2VudDsKICBTSW50MTYgZmZEZXNjZW50OwogIFNJbnQxNiBmZkxlYWRpbmc7
CiAgU0ludDE2IGZmV2lkTWF4OwogIFNJbnQzMiBmZldUYWJPZmY7CiAgU0ludDMyIGZmS2Vybk9m
ZjsKICBTSW50MzIgZmZTdHlsT2ZmOwogIFNJbnQxNiBmZlByb3BlcnR5WzldOwogIFNJbnQxNiBm
ZkludGxbMl07CiAgU0ludDE2IGZmVmVyc2lvbjsKfTsKdHlwZWRlZiBzdHJ1Y3QgRmFtUmVjIEZh
bVJlYzsKc3RydWN0IEZvbnRSZWMgewogIFNJbnQxNiBmb250VHlwZTsKICBTSW50MTYgZmlyc3RD
aGFyOwogIFNJbnQxNiBsYXN0Q2hhcjsKICBTSW50MTYgd2lkTWF4OwogIFNJbnQxNiBrZXJuTWF4
OwogIFNJbnQxNiBuRGVzY2VudDsKICBTSW50MTYgZlJlY3RXaWR0aDsKICBTSW50MTYgZlJlY3RI
ZWlnaHQ7CiAgVUludDE2IG93VExvYzsKICBTSW50MTYgYXNjZW50OwogIFNJbnQxNiBkZXNjZW50
OwogIFNJbnQxNiBsZWFkaW5nOwogIFNJbnQxNiByb3dXb3JkczsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
Rm9udFJlYyBGb250UmVjOwp0eXBlZGVmIEZvbnRSZWMgKiBGb250UmVjUHRyOwp0eXBlZGVmIEZv
bnRSZWNQdHIgKiBGb250UmVjSGRsOwojIDEzMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hl
YWRlcnMvRm9udHMuaCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyA2NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9R
RC5mcmFtZXdvcmsvSGVhZGVycy9RRC5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1l
d29yay9IZWFkZXJzL1BhbGV0dGVzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29y
ay9IZWFkZXJzL1BhbGV0dGVzLmgiIDMKI2RlZmluZSBfX1BBTEVUVEVTX18gCiMgMzIgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUGFsZXR0ZXMuaCIgMwpleHRlcm4gIkMiIHsKCgoj
cHJhZ21hIHBhY2socHVzaCwgMikKCmVudW0gewogIHBtQ291cnRlb3VzID0gMCwKICBwbURpdGhl
cmVkID0gMHgwMDAxLAogIHBtVG9sZXJhbnQgPSAweDAwMDIsCiAgcG1BbmltYXRlZCA9IDB4MDAw
NCwKICBwbUV4cGxpY2l0ID0gMHgwMDA4LAogIHBtV2hpdGUgPSAweDAwMTAsCiAgcG1CbGFjayA9
IDB4MDAyMCwKICBwbUluaGliaXRHMiA9IDB4MDEwMCwKICBwbUluaGliaXRDMiA9IDB4MDIwMCwK
ICBwbUluaGliaXRHNCA9IDB4MDQwMCwKICBwbUluaGliaXRDNCA9IDB4MDgwMCwKICBwbUluaGli
aXRHOCA9IDB4MTAwMCwKICBwbUluaGliaXRDOCA9IDB4MjAwMCwKICBwbU5vVXBkYXRlcyA9IDB4
ODAwMCwKICBwbUJrVXBkYXRlcyA9IDB4QTAwMCwKICBwbUZnVXBkYXRlcyA9IDB4QzAwMCwKICBw
bUFsbFVwZGF0ZXMgPSAweEUwMDAKfTsKCnN0cnVjdCBDb2xvckluZm8gewogIFJHQkNvbG9yIGNp
UkdCOwogIHNob3J0IGNpVXNhZ2U7CiAgc2hvcnQgY2lUb2xlcmFuY2U7CiAgc2hvcnQgY2lEYXRh
RmllbGRzWzNdOwp9Owp0eXBlZGVmIHN0cnVjdCBDb2xvckluZm8gQ29sb3JJbmZvOwp0eXBlZGVm
IENvbG9ySW5mbyAqIENvbG9ySW5mb1B0cjsKdHlwZWRlZiBDb2xvckluZm9QdHIgKiBDb2xvcklu
Zm9IYW5kbGU7CnN0cnVjdCBQYWxldHRlIHsKICBzaG9ydCBwbUVudHJpZXM7CiAgc2hvcnQgcG1E
YXRhRmllbGRzWzddOwogIENvbG9ySW5mbyBwbUluZm9bMV07Cn07CnR5cGVkZWYgc3RydWN0IFBh
bGV0dGUgUGFsZXR0ZTsKdHlwZWRlZiBQYWxldHRlICogUGFsZXR0ZVB0cjsKdHlwZWRlZiBQYWxl
dHRlUHRyICogUGFsZXR0ZUhhbmRsZTsKIyA1MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hl
YWRlcnMvUGFsZXR0ZXMuaCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyA3MCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RRC5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZy
YW1ld29yay9IZWFkZXJzL1BpY3RVdGlscy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFt
ZXdvcmsvSGVhZGVycy9QaWN0VXRpbHMuaCIgMwojZGVmaW5lIF9fUElDVFVUSUxTX18gCiMgMzYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUGljdFV0aWxzLmgiIDMKZXh0ZXJuICJD
IiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgoKZW51bSB7CiAgcmV0dXJuQ29sb3JUYWJsZSA9
IDB4MDAwMSwKICByZXR1cm5QYWxldHRlID0gMHgwMDAyLAogIHJlY29yZENvbW1lbnRzID0gMHgw
MDA0LAogIHJlY29yZEZvbnRJbmZvID0gMHgwMDA4LAogIHN1cHByZXNzQmxhY2tBbmRXaGl0ZSA9
IDB4MDAxMAp9OwoKZW51bSB7CgogIHN5c3RlbU1ldGhvZCA9IDAsCiAgcG9wdWxhck1ldGhvZCA9
IDEsCiAgbWVkaWFuTWV0aG9kID0gMgp9OwoKZW51bSB7CgogIENvbG9yQmFua0lzQ3VzdG9tID0g
LTEsCiAgQ29sb3JCYW5rSXNFeGFjdEFuZDU1NSA9IDAsCiAgQ29sb3JCYW5rSXM1NTUgPSAxCn07
Cgp0eXBlZGVmIGxvbmcgUGljdEluZm9JRDsKc3RydWN0IENvbW1lbnRTcGVjIHsKICBzaG9ydCBj
b3VudDsKICBzaG9ydCBJRDsKfTsKdHlwZWRlZiBzdHJ1Y3QgQ29tbWVudFNwZWMgQ29tbWVudFNw
ZWM7CnR5cGVkZWYgQ29tbWVudFNwZWMgKiBDb21tZW50U3BlY1B0cjsKdHlwZWRlZiBDb21tZW50
U3BlY1B0ciAqIENvbW1lbnRTcGVjSGFuZGxlOwpzdHJ1Y3QgRm9udFNwZWMgewogIHNob3J0IHBp
Y3RGb250SUQ7CiAgc2hvcnQgc3lzRm9udElEOwogIGxvbmcgc2l6ZVs0XTsKICBzaG9ydCBzdHls
ZTsKICBsb25nIG5hbWVPZmZzZXQ7Cn07CnR5cGVkZWYgc3RydWN0IEZvbnRTcGVjIEZvbnRTcGVj
Owp0eXBlZGVmIEZvbnRTcGVjICogRm9udFNwZWNQdHI7CnR5cGVkZWYgRm9udFNwZWNQdHIgKiBG
b250U3BlY0hhbmRsZTsKc3RydWN0IFBpY3RJbmZvIHsKICBzaG9ydCB2ZXJzaW9uOwogIGxvbmcg
dW5pcXVlQ29sb3JzOwogIFBhbGV0dGVIYW5kbGUgdGhlUGFsZXR0ZTsKICBDVGFiSGFuZGxlIHRo
ZUNvbG9yVGFibGU7CiAgRml4ZWQgaFJlczsKICBGaXhlZCB2UmVzOwogIHNob3J0IGRlcHRoOwog
IFJlY3Qgc291cmNlUmVjdDsKICBsb25nIHRleHRDb3VudDsKICBsb25nIGxpbmVDb3VudDsKICBs
b25nIHJlY3RDb3VudDsKICBsb25nIHJSZWN0Q291bnQ7CiAgbG9uZyBvdmFsQ291bnQ7CiAgbG9u
ZyBhcmNDb3VudDsKICBsb25nIHBvbHlDb3VudDsKICBsb25nIHJlZ2lvbkNvdW50OwogIGxvbmcg
Yml0TWFwQ291bnQ7CiAgbG9uZyBwaXhNYXBDb3VudDsKICBsb25nIGNvbW1lbnRDb3VudDsKICBs
b25nIHVuaXF1ZUNvbW1lbnRzOwogIENvbW1lbnRTcGVjSGFuZGxlIGNvbW1lbnRIYW5kbGU7CiAg
bG9uZyB1bmlxdWVGb250czsKICBGb250U3BlY0hhbmRsZSBmb250SGFuZGxlOwogIEhhbmRsZSBm
b250TmFtZXNIYW5kbGU7CiAgbG9uZyByZXNlcnZlZDE7CiAgbG9uZyByZXNlcnZlZDI7Cn07CnR5
cGVkZWYgc3RydWN0IFBpY3RJbmZvIFBpY3RJbmZvOwp0eXBlZGVmIFBpY3RJbmZvICogUGljdElu
Zm9QdHI7CnR5cGVkZWYgUGljdEluZm9QdHIgKiBQaWN0SW5mb0hhbmRsZTsKdHlwZWRlZiBPU0Vy
ciAoICogSW5pdFBpY2tNZXRob2RQcm9jUHRyKShTSW50MTYgY29sb3JzUmVxdWVzdGVkLCBVSW50
MzIgKmRhdGFSZWYsIFNJbnQxNiAqY29sb3JCYW5rVHlwZSk7CnR5cGVkZWYgT1NFcnIgKCAqIFJl
Y29yZENvbG9yc1Byb2NQdHIpKFVJbnQzMiBkYXRhUmVmLCBSR0JDb2xvciAqY29sb3JzQXJyYXks
IFNJbnQzMiBjb2xvckNvdW50LCBTSW50MzIgKnVuaXF1ZUNvbG9ycyk7CnR5cGVkZWYgT1NFcnIg
KCAqIENhbGNDb2xvclRhYmxlUHJvY1B0cikoVUludDMyIGRhdGFSZWYsIFNJbnQxNiBjb2xvcnNS
ZXF1ZXN0ZWQsIHZvaWQgKmNvbG9yQmFua1B0ciwgQ1NwZWNBcnJheSByZXN1bHRQdHIpOwp0eXBl
ZGVmIE9TRXJyICggKiBEaXNwb3NlQ29sb3JQaWNrTWV0aG9kUHJvY1B0cikoVUludDMyIGRhdGFS
ZWYpOwp0eXBlZGVmIEluaXRQaWNrTWV0aG9kUHJvY1B0ciBJbml0UGlja01ldGhvZFVQUDsKdHlw
ZWRlZiBSZWNvcmRDb2xvcnNQcm9jUHRyIFJlY29yZENvbG9yc1VQUDsKdHlwZWRlZiBDYWxjQ29s
b3JUYWJsZVByb2NQdHIgQ2FsY0NvbG9yVGFibGVVUFA7CnR5cGVkZWYgRGlzcG9zZUNvbG9yUGlj
a01ldGhvZFByb2NQdHIgRGlzcG9zZUNvbG9yUGlja01ldGhvZFVQUDsKIyAxMjkgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUGljdFV0aWxzLmgiIDMKZXh0ZXJuIEluaXRQaWNrTWV0
aG9kVVBQCk5ld0luaXRQaWNrTWV0aG9kVVBQKEluaXRQaWNrTWV0aG9kUHJvY1B0ciB1c2VyUm91
dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDE0MCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5m
cmFtZXdvcmsvSGVhZGVycy9QaWN0VXRpbHMuaCIgMwpleHRlcm4gUmVjb3JkQ29sb3JzVVBQCk5l
d1JlY29yZENvbG9yc1VQUChSZWNvcmRDb2xvcnNQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTUxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFk
ZXJzL1BpY3RVdGlscy5oIiAzCmV4dGVybiBDYWxjQ29sb3JUYWJsZVVQUApOZXdDYWxjQ29sb3JU
YWJsZVVQUChDYWxjQ29sb3JUYWJsZVByb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKIyAxNjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUGlj
dFV0aWxzLmgiIDMKZXh0ZXJuIERpc3Bvc2VDb2xvclBpY2tNZXRob2RVUFAKTmV3RGlzcG9zZUNv
bG9yUGlja01ldGhvZFVQUChEaXNwb3NlQ29sb3JQaWNrTWV0aG9kUHJvY1B0ciB1c2VyUm91dGlu
ZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDE3MyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFt
ZXdvcmsvSGVhZGVycy9QaWN0VXRpbHMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlSW5pdFBpY2tN
ZXRob2RVUFAoSW5pdFBpY2tNZXRob2RVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwojIDE4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9QaWN0VXRpbHMu
aCIgMwpleHRlcm4gdm9pZApEaXNwb3NlUmVjb3JkQ29sb3JzVVBQKFJlY29yZENvbG9yc1VQUCB1
c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTk1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL1BpY3RVdGlscy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VDYWxj
Q29sb3JUYWJsZVVQUChDYWxjQ29sb3JUYWJsZVVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7CiMgMjA2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1BpY3RV
dGlscy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VEaXNwb3NlQ29sb3JQaWNrTWV0aG9kVVBQKERp
c3Bvc2VDb2xvclBpY2tNZXRob2RVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwojIDIxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9QaWN0VXRpbHMuaCIg
MwpleHRlcm4gT1NFcnIKSW52b2tlSW5pdFBpY2tNZXRob2RVUFAoCiAgU0ludDE2IGNvbG9yc1Jl
cXVlc3RlZCwKICBVSW50MzIgKiBkYXRhUmVmLAogIFNJbnQxNiAqIGNvbG9yQmFua1R5cGUsCiAg
SW5pdFBpY2tNZXRob2RVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoj
IDIzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9QaWN0VXRpbHMuaCIgMwpleHRl
cm4gT1NFcnIKSW52b2tlUmVjb3JkQ29sb3JzVVBQKAogIFVJbnQzMiBkYXRhUmVmLAogIFJHQkNv
bG9yICogY29sb3JzQXJyYXksCiAgU0ludDMyIGNvbG9yQ291bnQsCiAgU0ludDMyICogdW5pcXVl
Q29sb3JzLAogIFJlY29yZENvbG9yc1VQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7CiMgMjQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1BpY3RVdGlscy5o
IiAzCmV4dGVybiBPU0VycgpJbnZva2VDYWxjQ29sb3JUYWJsZVVQUCgKICBVSW50MzIgZGF0YVJl
ZiwKICBTSW50MTYgY29sb3JzUmVxdWVzdGVkLAogIHZvaWQgKiBjb2xvckJhbmtQdHIsCiAgQ1Nw
ZWNBcnJheSByZXN1bHRQdHIsCiAgQ2FsY0NvbG9yVGFibGVVUFAgdXNlclVQUCkgX19hdHRyaWJ1
dGVfXygoZGVwcmVjYXRlZCkpOwojIDI2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVy
cy9QaWN0VXRpbHMuaCIgMwpleHRlcm4gT1NFcnIKSW52b2tlRGlzcG9zZUNvbG9yUGlja01ldGhv
ZFVQUCgKICBVSW50MzIgZGF0YVJlZiwKICBEaXNwb3NlQ29sb3JQaWNrTWV0aG9kVVBQIHVzZXJV
UFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBJbml0UGlja01l
dGhvZFVQUCBOZXdJbml0UGlja01ldGhvZFVQUChJbml0UGlja01ldGhvZFByb2NQdHIgdXNlclJv
dXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgUmVjb3JkQ29sb3JzVVBQ
IE5ld1JlY29yZENvbG9yc1VQUChSZWNvcmRDb2xvcnNQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJl
dHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIENhbGNDb2xvclRhYmxlVVBQIE5ld0NhbGND
b2xvclRhYmxlVVBQKENhbGNDb2xvclRhYmxlUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4g
dXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBEaXNwb3NlQ29sb3JQaWNrTWV0aG9kVVBQIE5ld0Rp
c3Bvc2VDb2xvclBpY2tNZXRob2RVUFAoRGlzcG9zZUNvbG9yUGlja01ldGhvZFByb2NQdHIgdXNl
clJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3Nl
SW5pdFBpY2tNZXRob2RVUFAoSW5pdFBpY2tNZXRob2RVUFApIHsgfQogICAgaW5saW5lIHZvaWQg
RGlzcG9zZVJlY29yZENvbG9yc1VQUChSZWNvcmRDb2xvcnNVUFApIHsgfQogICAgaW5saW5lIHZv
aWQgRGlzcG9zZUNhbGNDb2xvclRhYmxlVVBQKENhbGNDb2xvclRhYmxlVVBQKSB7IH0KICAgIGlu
bGluZSB2b2lkIERpc3Bvc2VEaXNwb3NlQ29sb3JQaWNrTWV0aG9kVVBQKERpc3Bvc2VDb2xvclBp
Y2tNZXRob2RVUFApIHsgfQogICAgaW5saW5lIE9TRXJyIEludm9rZUluaXRQaWNrTWV0aG9kVVBQ
KFNJbnQxNiBjb2xvcnNSZXF1ZXN0ZWQsIFVJbnQzMiAqIGRhdGFSZWYsIFNJbnQxNiAqIGNvbG9y
QmFua1R5cGUsIEluaXRQaWNrTWV0aG9kVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCko
Y29sb3JzUmVxdWVzdGVkLCBkYXRhUmVmLCBjb2xvckJhbmtUeXBlKTsgfQogICAgaW5saW5lIE9T
RXJyIEludm9rZVJlY29yZENvbG9yc1VQUChVSW50MzIgZGF0YVJlZiwgUkdCQ29sb3IgKiBjb2xv
cnNBcnJheSwgU0ludDMyIGNvbG9yQ291bnQsIFNJbnQzMiAqIHVuaXF1ZUNvbG9ycywgUmVjb3Jk
Q29sb3JzVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoZGF0YVJlZiwgY29sb3JzQXJy
YXksIGNvbG9yQ291bnQsIHVuaXF1ZUNvbG9ycyk7IH0KICAgIGlubGluZSBPU0VyciBJbnZva2VD
YWxjQ29sb3JUYWJsZVVQUChVSW50MzIgZGF0YVJlZiwgU0ludDE2IGNvbG9yc1JlcXVlc3RlZCwg
dm9pZCAqIGNvbG9yQmFua1B0ciwgQ1NwZWNBcnJheSByZXN1bHRQdHIsIENhbGNDb2xvclRhYmxl
VVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoZGF0YVJlZiwgY29sb3JzUmVxdWVzdGVk
LCBjb2xvckJhbmtQdHIsIHJlc3VsdFB0cik7IH0KICAgIGlubGluZSBPU0VyciBJbnZva2VEaXNw
b3NlQ29sb3JQaWNrTWV0aG9kVVBQKFVJbnQzMiBkYXRhUmVmLCBEaXNwb3NlQ29sb3JQaWNrTWV0
aG9kVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoZGF0YVJlZik7IH0KIyA0MTggIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUGljdFV0aWxzLmgiIDMKI3ByYWdtYSBwYWNr
KHBvcCkKCgp9CiMgNzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvUUQuaCIgMiAz
CgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9WaWRlby5oIiAxIDMKIyAx
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9WaWRlby5oIiAzCiNkZWZpbmUgX19W
SURFT19fIAojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1ZpZGVvLmgiIDMK
I3ByYWdtYSBwYWNrKHB1c2gsIDIpCiMgNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRl
cnMvVmlkZW8uaCIgMwplbnVtIHsKICBtQmFzZU9mZnNldCA9IDEsCiAgbVJvd0J5dGVzID0gMiwK
ICBtQm91bmRzID0gMywKICBtVmVyc2lvbiA9IDQsCiAgbUhSZXMgPSA1LAogIG1WUmVzID0gNiwK
ICBtUGl4ZWxUeXBlID0gNywKICBtUGl4ZWxTaXplID0gOCwKICBtQ21wQ291bnQgPSA5LAogIG1D
bXBTaXplID0gMTAsCiAgbVBsYW5lQnl0ZXMgPSAxMSwKICBtVmVydFJlZlJhdGUgPSAxNCwKICBt
VmlkUGFyYW1zID0gMSwKICBtVGFibGUgPSAyLAogIG1QYWdlQ250ID0gMywKICBtRGV2VHlwZSA9
IDQsCiAgb25lQml0TW9kZSA9IDEyOCwKICB0d29CaXRNb2RlID0gMTI5LAogIGZvdXJCaXRNb2Rl
ID0gMTMwLAogIGVpZ2h0Qml0TW9kZSA9IDEzMQp9OwoKZW51bSB7CiAgc2l4dGVlbkJpdE1vZGUg
PSAxMzIsCiAgdGhpcnR5VHdvQml0TW9kZSA9IDEzMywKICBmaXJzdFZpZE1vZGUgPSAxMjgsCiAg
c2Vjb25kVmlkTW9kZSA9IDEyOSwKICB0aGlyZFZpZE1vZGUgPSAxMzAsCiAgZm91cnRoVmlkTW9k
ZSA9IDEzMSwKICBmaWZ0aFZpZE1vZGUgPSAxMzIsCiAgc2l4dGhWaWRNb2RlID0gMTMzLAogIHNw
R2FtbWFEaXIgPSA2NCwKICBzcFZpZE5hbWVzRGlyID0gNjUKfTsKCgoKCmVudW0gewogIGtEZWNs
Uk9NdGFibGVzID0gJ2RlY2wnLAogIGtEZXRhaWxlZFRpbWluZ0Zvcm1hdCA9ICdhcmJhJwp9OwoK
CmVudW0gewogIGtERENCbG9ja1NpemUgPSAxMjgKfTsKCgplbnVtIHsKICBrRERDQmxvY2tUeXBl
RURJRCA9IDAKfTsKCgplbnVtIHsKICBrRERDRm9yY2VSZWFkQml0ID0gMCwKICBrRERDRm9yY2VS
ZWFkTWFzayA9ICgxIDw8IGtERENGb3JjZVJlYWRCaXQpCn07CiMgMTE0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL1ZpZGVvLmgiIDMKZW51bSB7CiAgdGltaW5nSW52YWxpZCA9IDAs
CiAgdGltaW5nSW52YWxpZF9TTV9UMjQgPSA4LAogIHRpbWluZ0FwcGxlX0ZpeGVkUmF0ZUxDRCA9
IDQyLAogIHRpbWluZ0FwcGxlXzUxMngzODRfNjBoeiA9IDEzMCwKICB0aW1pbmdBcHBsZV81NjB4
Mzg0XzYwaHogPSAxMzUsCiAgdGltaW5nQXBwbGVfNjQweDQ4MF82N2h6ID0gMTQwLAogIHRpbWlu
Z0FwcGxlXzY0MHg0MDBfNjdoeiA9IDE0NSwKICB0aW1pbmdWRVNBXzY0MHg0ODBfNjBoeiA9IDE1
MCwKICB0aW1pbmdWRVNBXzY0MHg0ODBfNzJoeiA9IDE1MiwKICB0aW1pbmdWRVNBXzY0MHg0ODBf
NzVoeiA9IDE1NCwKICB0aW1pbmdWRVNBXzY0MHg0ODBfODVoeiA9IDE1OCwKICB0aW1pbmdHVEZf
NjQweDQ4MF8xMjBoeiA9IDE1OSwKICB0aW1pbmdBcHBsZV82NDB4ODcwXzc1aHogPSAxNjAsCiAg
dGltaW5nQXBwbGVfNjQweDgxOF83NWh6ID0gMTY1LAogIHRpbWluZ0FwcGxlXzgzMng2MjRfNzVo
eiA9IDE3MCwKICB0aW1pbmdWRVNBXzgwMHg2MDBfNTZoeiA9IDE4MCwKICB0aW1pbmdWRVNBXzgw
MHg2MDBfNjBoeiA9IDE4MiwKICB0aW1pbmdWRVNBXzgwMHg2MDBfNzJoeiA9IDE4NCwKICB0aW1p
bmdWRVNBXzgwMHg2MDBfNzVoeiA9IDE4NiwKICB0aW1pbmdWRVNBXzgwMHg2MDBfODVoeiA9IDE4
OCwKICB0aW1pbmdWRVNBXzEwMjR4NzY4XzYwaHogPSAxOTAsCiAgdGltaW5nVkVTQV8xMDI0eDc2
OF83MGh6ID0gMjAwLAogIHRpbWluZ1ZFU0FfMTAyNHg3NjhfNzVoeiA9IDIwNCwKICB0aW1pbmdW
RVNBXzEwMjR4NzY4Xzg1aHogPSAyMDgsCiAgdGltaW5nQXBwbGVfMTAyNHg3NjhfNzVoeiA9IDIx
MCwKICB0aW1pbmdBcHBsZV8xMTUyeDg3MF83NWh6ID0gMjIwLAogIHRpbWluZ0FwcGxlTlRTQ19T
VCA9IDIzMCwKICB0aW1pbmdBcHBsZU5UU0NfRkYgPSAyMzIsCiAgdGltaW5nQXBwbGVOVFNDX1NU
Y29udiA9IDIzNCwKICB0aW1pbmdBcHBsZU5UU0NfRkZjb252ID0gMjM2LAogIHRpbWluZ0FwcGxl
UEFMX1NUID0gMjM4LAogIHRpbWluZ0FwcGxlUEFMX0ZGID0gMjQwLAogIHRpbWluZ0FwcGxlUEFM
X1NUY29udiA9IDI0MiwKICB0aW1pbmdBcHBsZVBBTF9GRmNvbnYgPSAyNDQsCiAgdGltaW5nVkVT
QV8xMjgweDk2MF83NWh6ID0gMjUwLAogIHRpbWluZ1ZFU0FfMTI4MHg5NjBfNjBoeiA9IDI1MiwK
ICB0aW1pbmdWRVNBXzEyODB4OTYwXzg1aHogPSAyNTQsCiAgdGltaW5nVkVTQV8xMjgweDEwMjRf
NjBoeiA9IDI2MCwKICB0aW1pbmdWRVNBXzEyODB4MTAyNF83NWh6ID0gMjYyLAogIHRpbWluZ1ZF
U0FfMTI4MHgxMDI0Xzg1aHogPSAyNjgsCiAgdGltaW5nVkVTQV8xNjAweDEyMDBfNjBoeiA9IDI4
MCwKICB0aW1pbmdWRVNBXzE2MDB4MTIwMF82NWh6ID0gMjgyLAogIHRpbWluZ1ZFU0FfMTYwMHgx
MjAwXzcwaHogPSAyODQsCiAgdGltaW5nVkVTQV8xNjAweDEyMDBfNzVoeiA9IDI4NiwKICB0aW1p
bmdWRVNBXzE2MDB4MTIwMF84MGh6ID0gMjg4LAogIHRpbWluZ1ZFU0FfMTYwMHgxMjAwXzg1aHog
PSAyODksCiAgdGltaW5nVkVTQV8xNzkyeDEzNDRfNjBoeiA9IDI5NiwKICB0aW1pbmdWRVNBXzE3
OTJ4MTM0NF83NWh6ID0gMjk4LAogIHRpbWluZ1ZFU0FfMTg1NngxMzkyXzYwaHogPSAzMDAsCiAg
dGltaW5nVkVTQV8xODU2eDEzOTJfNzVoeiA9IDMwMiwKICB0aW1pbmdWRVNBXzE5MjB4MTQ0MF82
MGh6ID0gMzA0LAogIHRpbWluZ1ZFU0FfMTkyMHgxNDQwXzc1aHogPSAzMDYsCiAgdGltaW5nU01Q
VEUyNDBNXzYwaHogPSA0MDAsCiAgdGltaW5nRmlsbVJhdGVfNDhoeiA9IDQxMCwKICB0aW1pbmdT
b255XzE2MDB4MTAyNF83Nmh6ID0gNTAwLAogIHRpbWluZ1NvbnlfMTkyMHgxMDgwXzYwaHogPSA1
MTAsCiAgdGltaW5nU29ueV8xOTIweDEwODBfNzJoeiA9IDUyMCwKICB0aW1pbmdTb255XzE5MjB4
MTIwMF83Nmh6ID0gNTQwLAogIHRpbWluZ0FwcGxlXzB4MF8waHpfT2ZmbGluZSA9IDU1MAp9OwoK
CgplbnVtIHsKICB0aW1pbmdBcHBsZTEyID0gdGltaW5nQXBwbGVfNTEyeDM4NF82MGh6LAogIHRp
bWluZ0FwcGxlMTJ4ID0gdGltaW5nQXBwbGVfNTYweDM4NF82MGh6LAogIHRpbWluZ0FwcGxlMTMg
PSB0aW1pbmdBcHBsZV82NDB4NDgwXzY3aHosCiAgdGltaW5nQXBwbGUxM3ggPSB0aW1pbmdBcHBs
ZV82NDB4NDAwXzY3aHosCiAgdGltaW5nQXBwbGVWR0EgPSB0aW1pbmdWRVNBXzY0MHg0ODBfNjBo
eiwKICB0aW1pbmdBcHBsZTE1ID0gdGltaW5nQXBwbGVfNjQweDg3MF83NWh6LAogIHRpbWluZ0Fw
cGxlMTV4ID0gdGltaW5nQXBwbGVfNjQweDgxOF83NWh6LAogIHRpbWluZ0FwcGxlMTYgPSB0aW1p
bmdBcHBsZV84MzJ4NjI0Xzc1aHosCiAgdGltaW5nQXBwbGVTVkdBID0gdGltaW5nVkVTQV84MDB4
NjAwXzU2aHosCiAgdGltaW5nQXBwbGUxS2EgPSB0aW1pbmdWRVNBXzEwMjR4NzY4XzYwaHosCiAg
dGltaW5nQXBwbGUxS2IgPSB0aW1pbmdWRVNBXzEwMjR4NzY4XzcwaHosCiAgdGltaW5nQXBwbGUx
OSA9IHRpbWluZ0FwcGxlXzEwMjR4NzY4Xzc1aHosCiAgdGltaW5nQXBwbGUyMSA9IHRpbWluZ0Fw
cGxlXzExNTJ4ODcwXzc1aHosCiAgdGltaW5nU29ueV8xOTAweDEyMDBfNzRoeiA9IDUzMCwKICB0
aW1pbmdTb255XzE5MDB4MTIwMF83Nmh6ID0gdGltaW5nU29ueV8xOTIweDEyMDBfNzZoegp9OwoK
CmVudW0gewogIGtBbGxNb2Rlc1ZhbGlkID0gMCwKICBrQWxsTW9kZXNTYWZlID0gMSwKICBrUmVw
b3J0c1RhZ2dpbmcgPSAyLAogIGtIYXNEaXJlY3RDb25uZWN0aW9uID0gMywKICBrSXNNb25vRGV2
ID0gNCwKICBrVW5jZXJ0YWluQ29ubmVjdGlvbiA9IDUsCiAga1RhZ2dpbmdJbmZvTm9uU3RhbmRh
cmQgPSA2LAogIGtSZXBvcnRzRERDQ29ubmVjdGlvbiA9IDcsCiAga0hhc0REQ0Nvbm5lY3Rpb24g
PSA4LAogIGtDb25uZWN0aW9uSW5hY3RpdmUgPSA5LAogIGtEZXBlbmRlbnRDb25uZWN0aW9uID0g
MTAsCiAga0J1aWx0SW5Db25uZWN0aW9uID0gMTEsCiAga092ZXJyaWRlQ29ubmVjdGlvbiA9IDEy
LAogIGtGYXN0Q2hlY2tGb3JEREMgPSAxMywKICBrUmVwb3J0c0hvdFBsdWdnaW5nID0gMTQKfTsK
CgoKZW51bSB7CiAga1Vua25vd25Db25uZWN0ID0gMSwKICBrUGFuZWxDb25uZWN0ID0gMiwKICBr
UGFuZWxURlRDb25uZWN0ID0gMiwKICBrRml4ZWRNb2RlQ1JUQ29ubmVjdCA9IDMsCiAga011bHRp
TW9kZUNSVDFDb25uZWN0ID0gNCwKICBrTXVsdGlNb2RlQ1JUMkNvbm5lY3QgPSA1LAogIGtNdWx0
aU1vZGVDUlQzQ29ubmVjdCA9IDYsCiAga011bHRpTW9kZUNSVDRDb25uZWN0ID0gNywKICBrTW9k
ZWxlc3NDb25uZWN0ID0gOCwKICBrRnVsbFBhZ2VDb25uZWN0ID0gOSwKICBrVkdBQ29ubmVjdCA9
IDEwLAogIGtOVFNDQ29ubmVjdCA9IDExLAogIGtQQUxDb25uZWN0ID0gMTIsCiAga0hSQ29ubmVj
dCA9IDEzLAogIGtQYW5lbEZTVE5Db25uZWN0ID0gMTQsCiAga01vbm9Ud29QYWdlQ29ubmVjdCA9
IDE1LAogIGtDb2xvclR3b1BhZ2VDb25uZWN0ID0gMTYsCiAga0NvbG9yMTZDb25uZWN0ID0gMTcs
CiAga0NvbG9yMTlDb25uZWN0ID0gMTgsCiAga0dlbmVyaWNDUlQgPSAxOSwKICBrR2VuZXJpY0xD
RCA9IDIwLAogIGtERENDb25uZWN0ID0gMjEsCiAga05vQ29ubmVjdCA9IDIyCn07CgoKZW51bSB7
CiAga01vZGVWYWxpZCA9IDAsCiAga01vZGVTYWZlID0gMSwKICBrTW9kZURlZmF1bHQgPSAyLAog
IGtNb2RlU2hvd05vdyA9IDMsCiAga01vZGVOb3RSZXNpemUgPSA0LAogIGtNb2RlUmVxdWlyZXNQ
YW4gPSA1LAogIGtNb2RlSW50ZXJsYWNlZCA9IDYsCiAga01vZGVTaG93TmV2ZXIgPSA3LAogIGtN
b2RlU2ltdWxzY2FuID0gOCwKICBrTW9kZU5vdFByZXNldCA9IDksCiAga01vZGVCdWlsdEluID0g
MTAsCiAga01vZGVTdHJldGNoZWQgPSAxMQp9OwoKCmVudW0gewogIGtEZXB0aERlcGVuZGVudCA9
IDAKfTsKCgplbnVtIHsKICBrUmVzb2x1dGlvbkhhc011bHRpcGxlRGVwdGhTaXplcyA9IDAKfTsK
CgplbnVtIHsKCiAga0FWUG93ZXJPZmYgPSAwLAogIGtBVlBvd2VyU3RhbmRieSA9IDEsCiAga0FW
UG93ZXJTdXNwZW5kID0gMiwKICBrQVZQb3dlck9uID0gMywKICBrSGFyZHdhcmVTbGVlcCA9IDEy
OCwKICBrSGFyZHdhcmVXYWtlID0gMTI5LAogIGtIYXJkd2FyZVdha2VGcm9tU3VzcGVuZCA9IDEz
MCwKICBrSGFyZHdhcmVXYWtlVG9Eb3plID0gMTMxLAogIGtIYXJkd2FyZVdha2VUb0RvemVGcm9t
U3VzcGVuZCA9IDEzMgp9OwoKZW51bSB7CgogIGtQb3dlclN0YXRlTmVlZHNSZWZyZXNoID0gMCwK
ICBrUG93ZXJTdGF0ZVNsZWVwQXdhcmVCaXQgPSAxLAogIGtQb3dlclN0YXRlU2xlZXBGb3JiaWRk
ZW5CaXQgPSAyLAogIGtQb3dlclN0YXRlU2xlZXBDYW5Qb3dlck9mZkJpdCA9IDMsCiAga1Bvd2Vy
U3RhdGVTbGVlcE5vRFBNU0JpdCA9IDQsCiAga1Bvd2VyU3RhdGVTbGVlcFdha2V0b0RvemVCaXQg
PSA1LAogIGtQb3dlclN0YXRlTmVlZHNSZWZyZXNoTWFzayA9ICgxTCA8PCBrUG93ZXJTdGF0ZU5l
ZWRzUmVmcmVzaCksCiAga1Bvd2VyU3RhdGVTbGVlcEF3YXJlTWFzayA9ICgxTCA8PCBrUG93ZXJT
dGF0ZVNsZWVwQXdhcmVCaXQpLAogIGtQb3dlclN0YXRlU2xlZXBGb3JiaWRkZW5NYXNrID0gKDFM
IDw8IGtQb3dlclN0YXRlU2xlZXBGb3JiaWRkZW5CaXQpLAogIGtQb3dlclN0YXRlU2xlZXBDYW5Q
b3dlck9mZk1hc2sgPSAoMUwgPDwga1Bvd2VyU3RhdGVTbGVlcENhblBvd2VyT2ZmQml0KSwKICBr
UG93ZXJTdGF0ZVNsZWVwTm9EUE1TTWFzayA9ICgxTCA8PCBrUG93ZXJTdGF0ZVNsZWVwTm9EUE1T
Qml0KSwKICBrUG93ZXJTdGF0ZVNsZWVwV2FrZXRvRG96ZU1hc2sgPSAoMUwgPDwga1Bvd2VyU3Rh
dGVTbGVlcFdha2V0b0RvemVCaXQpCn07CgoKZW51bSB7CgogIGNzY1Jlc2V0ID0gMCwKICBjc2NL
aWxsSU8gPSAxLAogIGNzY1NldE1vZGUgPSAyLAogIGNzY1NldEVudHJpZXMgPSAzLAogIGNzY1Nl
dEdhbW1hID0gNCwKICBjc2NHcmF5UGFnZSA9IDUsCiAgY3NjR3JheVNjcmVlbiA9IDUsCiAgY3Nj
U2V0R3JheSA9IDYsCiAgY3NjU2V0SW50ZXJydXB0ID0gNywKICBjc2NEaXJlY3RTZXRFbnRyaWVz
ID0gOCwKICBjc2NTZXREZWZhdWx0TW9kZSA9IDksCiAgY3NjU3dpdGNoTW9kZSA9IDEwLAogIGNz
Y1NldFN5bmMgPSAxMSwKICBjc2NTYXZlUHJlZmVycmVkQ29uZmlndXJhdGlvbiA9IDE2LAogIGNz
Y1NldEhhcmR3YXJlQ3Vyc29yID0gMjIsCiAgY3NjRHJhd0hhcmR3YXJlQ3Vyc29yID0gMjMsCiAg
Y3NjU2V0Q29udm9sdXRpb24gPSAyNCwKICBjc2NTZXRQb3dlclN0YXRlID0gMjUsCiAgY3NjUHJp
dmF0ZUNvbnRyb2xDYWxsID0gMjYsCiAgY3NjU2V0TXVsdGlDb25uZWN0ID0gMjgsCiAgY3NjU2V0
Q2x1dEJlaGF2aW9yID0gMjksCiAgY3NjU2V0RGV0YWlsZWRUaW1pbmcgPSAzMSwKICBjc2NEb0Nv
bW11bmljYXRpb24gPSAzMywKICBjc2NQcm9iZUNvbm5lY3Rpb24gPSAzNCwKICBjc2NVbnVzZWRD
YWxsID0gMTI3Cn07CgplbnVtIHsKCiAgY3NjR2V0TW9kZSA9IDIsCiAgY3NjR2V0RW50cmllcyA9
IDMsCiAgY3NjR2V0UGFnZUNudCA9IDQsCiAgY3NjR2V0UGFnZXMgPSA0LAogIGNzY0dldFBhZ2VC
YXNlID0gNSwKICBjc2NHZXRCYXNlQWRkciA9IDUsCiAgY3NjR2V0R3JheSA9IDYsCiAgY3NjR2V0
SW50ZXJydXB0ID0gNywKICBjc2NHZXRHYW1tYSA9IDgsCiAgY3NjR2V0RGVmYXVsdE1vZGUgPSA5
LAogIGNzY0dldEN1ck1vZGUgPSAxMCwKICBjc2NHZXRTeW5jID0gMTEsCiAgY3NjR2V0Q29ubmVj
dGlvbiA9IDEyLAogIGNzY0dldE1vZGVUaW1pbmcgPSAxMywKICBjc2NHZXRNb2RlQmFzZUFkZHJl
c3MgPSAxNCwKICBjc2NHZXRTY2FuUHJvYyA9IDE1LAogIGNzY0dldFByZWZlcnJlZENvbmZpZ3Vy
YXRpb24gPSAxNiwKICBjc2NHZXROZXh0UmVzb2x1dGlvbiA9IDE3LAogIGNzY0dldFZpZGVvUGFy
YW1ldGVycyA9IDE4LAogIGNzY0dldEdhbW1hSW5mb0xpc3QgPSAyMCwKICBjc2NSZXRyaWV2ZUdh
bW1hVGFibGUgPSAyMSwKICBjc2NTdXBwb3J0c0hhcmR3YXJlQ3Vyc29yID0gMjIsCiAgY3NjR2V0
SGFyZHdhcmVDdXJzb3JEcmF3U3RhdGUgPSAyMywKICBjc2NHZXRDb252b2x1dGlvbiA9IDI0LAog
IGNzY0dldFBvd2VyU3RhdGUgPSAyNSwKICBjc2NQcml2YXRlU3RhdHVzQ2FsbCA9IDI2LAogIGNz
Y0dldEREQ0Jsb2NrID0gMjcsCiAgY3NjR2V0TXVsdGlDb25uZWN0ID0gMjgsCiAgY3NjR2V0Q2x1
dEJlaGF2aW9yID0gMjksCiAgY3NjR2V0VGltaW5nUmFuZ2VzID0gMzAsCiAgY3NjR2V0RGV0YWls
ZWRUaW1pbmcgPSAzMSwKICBjc2NHZXRDb21tdW5pY2F0aW9uSW5mbyA9IDMyCn07CgoKZW51bSB7
CiAga0Rpc2FibGVIb3Jpem9udGFsU3luY0JpdCA9IDAsCiAga0Rpc2FibGVWZXJ0aWNhbFN5bmNC
aXQgPSAxLAogIGtEaXNhYmxlQ29tcG9zaXRlU3luY0JpdCA9IDIsCiAga0VuYWJsZVN5bmNPbkJs
dWUgPSAzLAogIGtFbmFibGVTeW5jT25HcmVlbiA9IDQsCiAga0VuYWJsZVN5bmNPblJlZCA9IDUs
CiAga05vU2VwYXJhdGVTeW5jQ29udHJvbEJpdCA9IDYsCiAga1RyaVN0YXRlU3luY0JpdCA9IDcs
CiAga0hvcml6b250YWxTeW5jTWFzayA9IDB4MDEsCiAga1ZlcnRpY2FsU3luY01hc2sgPSAweDAy
LAogIGtDb21wb3NpdGVTeW5jTWFzayA9IDB4MDQsCiAga0RQTVNTeW5jTWFzayA9IDB4MDcsCiAg
a1RyaVN0YXRlU3luY01hc2sgPSAweDgwLAogIGtTeW5jT25CbHVlTWFzayA9IDB4MDgsCiAga1N5
bmNPbkdyZWVuTWFzayA9IDB4MTAsCiAga1N5bmNPblJlZE1hc2sgPSAweDIwLAogIGtTeW5jT25N
YXNrID0gMHgzOAp9OwoKZW51bSB7CgogIGtEUE1TU3luY09uID0gMCwKICBrRFBNU1N5bmNTdGFu
ZGJ5ID0gMSwKICBrRFBNU1N5bmNTdXNwZW5kID0gMiwKICBrRFBNU1N5bmNPZmYgPSA3Cn07CgoK
ZW51bSB7CiAga0NvbnZvbHZlZCA9IDAsCiAga0xpdmVWaWRlb1Bhc3NUaHJ1ID0gMSwKICBrQ29u
dm9sdmVkTWFzayA9IDB4MDEsCiAga0xpdmVWaWRlb1Bhc3NUaHJ1TWFzayA9IDB4MDIKfTsKCgpz
dHJ1Y3QgVlBCbG9jayB7CiAgbG9uZyB2cEJhc2VPZmZzZXQ7CiAgc2hvcnQgdnBSb3dCeXRlczsK
ICBSZWN0IHZwQm91bmRzOwogIHNob3J0IHZwVmVyc2lvbjsKICBzaG9ydCB2cFBhY2tUeXBlOwog
IGxvbmcgdnBQYWNrU2l6ZTsKICBsb25nIHZwSFJlczsKICBsb25nIHZwVlJlczsKICBzaG9ydCB2
cFBpeGVsVHlwZTsKICBzaG9ydCB2cFBpeGVsU2l6ZTsKICBzaG9ydCB2cENtcENvdW50OwogIHNo
b3J0IHZwQ21wU2l6ZTsKICBsb25nIHZwUGxhbmVCeXRlczsKfTsKdHlwZWRlZiBzdHJ1Y3QgVlBC
bG9jayBWUEJsb2NrOwp0eXBlZGVmIFZQQmxvY2sgKiBWUEJsb2NrUHRyOwpzdHJ1Y3QgVkRFbnRy
eVJlY29yZCB7CiAgUHRyIGNzVGFibGU7Cn07CnR5cGVkZWYgc3RydWN0IFZERW50cnlSZWNvcmQg
VkRFbnRyeVJlY29yZDsKdHlwZWRlZiBWREVudHJ5UmVjb3JkICogVkRFbnRSZWNQdHI7CgpzdHJ1
Y3QgVkRHcmF5UmVjb3JkIHsKICBCb29sZWFuIGNzTW9kZTsKICBTSW50OCBmaWxsZXI7Cn07CnR5
cGVkZWYgc3RydWN0IFZER3JheVJlY29yZCBWREdyYXlSZWNvcmQ7CnR5cGVkZWYgVkRHcmF5UmVj
b3JkICogVkRHcmF5UHRyOwoKc3RydWN0IFZERmxhZ1JlY29yZCB7CiAgU0ludDggY3NNb2RlOwog
IFNJbnQ4IGZpbGxlcjsKfTsKdHlwZWRlZiBzdHJ1Y3QgVkRGbGFnUmVjb3JkIFZERmxhZ1JlY29y
ZDsKdHlwZWRlZiBWREZsYWdSZWNvcmQgKiBWREZsYWdSZWNQdHI7CgpzdHJ1Y3QgVkRTZXRFbnRy
eVJlY29yZCB7CiAgQ29sb3JTcGVjICogY3NUYWJsZTsKICBzaG9ydCBjc1N0YXJ0OwogIHNob3J0
IGNzQ291bnQ7Cn07CnR5cGVkZWYgc3RydWN0IFZEU2V0RW50cnlSZWNvcmQgVkRTZXRFbnRyeVJl
Y29yZDsKdHlwZWRlZiBWRFNldEVudHJ5UmVjb3JkICogVkRTZXRFbnRyeVB0cjsKCnN0cnVjdCBW
REdhbW1hUmVjb3JkIHsKICBQdHIgY3NHVGFibGU7Cn07CnR5cGVkZWYgc3RydWN0IFZER2FtbWFS
ZWNvcmQgVkRHYW1tYVJlY29yZDsKdHlwZWRlZiBWREdhbW1hUmVjb3JkICogVkRHYW1SZWNQdHI7
CnN0cnVjdCBWREJhc2VBZGRyZXNzSW5mb1JlYyB7CiAgbG9uZyBjc0RldkRhdGE7CiAgbG9uZyBj
c0RldkJhc2U7CiAgc2hvcnQgY3NNb2RlUmVzZXJ2ZWQ7CiAgbG9uZyBjc01vZGVCYXNlOwp9Owp0
eXBlZGVmIHN0cnVjdCBWREJhc2VBZGRyZXNzSW5mb1JlYyBWREJhc2VBZGRyZXNzSW5mb1JlYzsK
dHlwZWRlZiBWREJhc2VBZGRyZXNzSW5mb1JlYyAqIFZEQmFzZUFkZHJlc3NJbmZvUHRyOwpzdHJ1
Y3QgVkRTd2l0Y2hJbmZvUmVjIHsKICB1bnNpZ25lZCBzaG9ydCBjc01vZGU7CiAgdW5zaWduZWQg
bG9uZyBjc0RhdGE7CiAgdW5zaWduZWQgc2hvcnQgY3NQYWdlOwogIFB0ciBjc0Jhc2VBZGRyOwog
IHVuc2lnbmVkIGxvbmcgY3NSZXNlcnZlZDsKfTsKdHlwZWRlZiBzdHJ1Y3QgVkRTd2l0Y2hJbmZv
UmVjIFZEU3dpdGNoSW5mb1JlYzsKdHlwZWRlZiBWRFN3aXRjaEluZm9SZWMgKiBWRFN3aXRjaElu
Zm9QdHI7CnN0cnVjdCBWRFRpbWluZ0luZm9SZWMgewogIHVuc2lnbmVkIGxvbmcgY3NUaW1pbmdN
b2RlOwogIHVuc2lnbmVkIGxvbmcgY3NUaW1pbmdSZXNlcnZlZDsKICB1bnNpZ25lZCBsb25nIGNz
VGltaW5nRm9ybWF0OwogIHVuc2lnbmVkIGxvbmcgY3NUaW1pbmdEYXRhOwogIHVuc2lnbmVkIGxv
bmcgY3NUaW1pbmdGbGFnczsKfTsKdHlwZWRlZiBzdHJ1Y3QgVkRUaW1pbmdJbmZvUmVjIFZEVGlt
aW5nSW5mb1JlYzsKdHlwZWRlZiBWRFRpbWluZ0luZm9SZWMgKiBWRFRpbWluZ0luZm9QdHI7CnN0
cnVjdCBWRERpc3BsYXlDb25uZWN0SW5mb1JlYyB7CiAgdW5zaWduZWQgc2hvcnQgY3NEaXNwbGF5
VHlwZTsKICB1bnNpZ25lZCBjaGFyIGNzQ29ubmVjdFRhZ2dlZFR5cGU7CiAgdW5zaWduZWQgY2hh
ciBjc0Nvbm5lY3RUYWdnZWREYXRhOwogIHVuc2lnbmVkIGxvbmcgY3NDb25uZWN0RmxhZ3M7CiAg
dW5zaWduZWQgbG9uZyBjc0Rpc3BsYXlDb21wb25lbnQ7CiAgdW5zaWduZWQgbG9uZyBjc0Nvbm5l
Y3RSZXNlcnZlZDsKfTsKdHlwZWRlZiBzdHJ1Y3QgVkREaXNwbGF5Q29ubmVjdEluZm9SZWMgVkRE
aXNwbGF5Q29ubmVjdEluZm9SZWM7CnR5cGVkZWYgVkREaXNwbGF5Q29ubmVjdEluZm9SZWMgKiBW
RERpc3BsYXlDb25uZWN0SW5mb1B0cjsKc3RydWN0IFZETXVsdGlDb25uZWN0SW5mb1JlYyB7CiAg
dW5zaWduZWQgbG9uZyBjc0Rpc3BsYXlDb3VudE9yTnVtYmVyOwogIFZERGlzcGxheUNvbm5lY3RJ
bmZvUmVjIGNzQ29ubmVjdEluZm87Cn07CnR5cGVkZWYgc3RydWN0IFZETXVsdGlDb25uZWN0SW5m
b1JlYyBWRE11bHRpQ29ubmVjdEluZm9SZWM7CnR5cGVkZWYgVkRNdWx0aUNvbm5lY3RJbmZvUmVj
ICogVkRNdWx0aUNvbm5lY3RJbmZvUHRyOwojIDUwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsv
SGVhZGVycy9WaWRlby5oIiAzCnR5cGVkZWYgdW5zaWduZWQgY2hhciBSYXdTZW5zZUNvZGU7CmVu
dW0gewogIGtSU0NaZXJvID0gMCwKICBrUlNDT25lID0gMSwKICBrUlNDVHdvID0gMiwKICBrUlND
VGhyZWUgPSAzLAogIGtSU0NGb3VyID0gNCwKICBrUlNDRml2ZSA9IDUsCiAga1JTQ1NpeCA9IDYs
CiAga1JTQ1NldmVuID0gNwp9OwojIDUzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVy
cy9WaWRlby5oIiAzCnR5cGVkZWYgdW5zaWduZWQgY2hhciBFeHRlbmRlZFNlbnNlQ29kZTsKZW51
bSB7CiAga0VTQ1plcm8yMUluY2ggPSAweDAwLAogIGtFU0NPbmVQb3J0cmFpdE1vbm8gPSAweDE0
LAogIGtFU0NUd28xMkluY2ggPSAweDIxLAogIGtFU0NUaHJlZTIxSW5jaFJhZGl1cyA9IDB4MzEs
CiAga0VTQ1RocmVlMjFJbmNoTW9ub1JhZGl1cyA9IDB4MzQsCiAga0VTQ1RocmVlMjFJbmNoTW9u
byA9IDB4MzUsCiAga0VTQ0ZvdXJOVFNDID0gMHgwQSwKICBrRVNDRml2ZVBvcnRyYWl0ID0gMHgx
RSwKICBrRVNDU2l4TVNCMSA9IDB4MDMsCiAga0VTQ1NpeE1TQjIgPSAweDBCLAogIGtFU0NTaXhN
U0IzID0gMHgyMywKICBrRVNDU2l4U3RhbmRhcmQgPSAweDJCLAogIGtFU0NTZXZlblBBTCA9IDB4
MDAsCiAga0VTQ1NldmVuTlRTQyA9IDB4MTQsCiAga0VTQ1NldmVuVkdBID0gMHgxNywKICBrRVND
U2V2ZW4xNkluY2ggPSAweDJELAogIGtFU0NTZXZlblBBTEFsdGVybmF0ZSA9IDB4MzAsCiAga0VT
Q1NldmVuMTlJbmNoID0gMHgzQSwKICBrRVNDU2V2ZW5EREMgPSAweDNFLAogIGtFU0NTZXZlbk5v
RGlzcGxheSA9IDB4M0YKfTsKIyA1NzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMv
VmlkZW8uaCIgMwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IERlcHRoTW9kZTsKZW51bSB7CiAga0Rl
cHRoTW9kZTEgPSAxMjgsCiAga0RlcHRoTW9kZTIgPSAxMjksCiAga0RlcHRoTW9kZTMgPSAxMzAs
CiAga0RlcHRoTW9kZTQgPSAxMzEsCiAga0RlcHRoTW9kZTUgPSAxMzIsCiAga0RlcHRoTW9kZTYg
PSAxMzMKfTsKCmVudW0gewogIGtGaXJzdERlcHRoTW9kZSA9IDEyOCwKICBrU2Vjb25kRGVwdGhN
b2RlID0gMTI5LAogIGtUaGlyZERlcHRoTW9kZSA9IDEzMCwKICBrRm91cnRoRGVwdGhNb2RlID0g
MTMxLAogIGtGaWZ0aERlcHRoTW9kZSA9IDEzMiwKICBrU2l4dGhEZXB0aE1vZGUgPSAxMzMKfTsK
CgpzdHJ1Y3QgVkRQYWdlSW5mbyB7CiAgc2hvcnQgY3NNb2RlOwogIGxvbmcgY3NEYXRhOwogIHNo
b3J0IGNzUGFnZTsKICBQdHIgY3NCYXNlQWRkcjsKfTsKdHlwZWRlZiBzdHJ1Y3QgVkRQYWdlSW5m
byBWRFBhZ2VJbmZvOwp0eXBlZGVmIFZEUGFnZUluZm8gKiBWRFBnSW5mb1B0cjsKc3RydWN0IFZE
U2l6ZUluZm8gewogIHNob3J0IGNzSFNpemU7CiAgc2hvcnQgY3NIUG9zOwogIHNob3J0IGNzVlNp
emU7CiAgc2hvcnQgY3NWUG9zOwp9Owp0eXBlZGVmIHN0cnVjdCBWRFNpemVJbmZvIFZEU2l6ZUlu
Zm87CnR5cGVkZWYgVkRTaXplSW5mbyAqIFZEU3pJbmZvUHRyOwpzdHJ1Y3QgVkRTZXR0aW5ncyB7
CiAgc2hvcnQgY3NQYXJhbUNudDsKICBzaG9ydCBjc0JyaWdodE1heDsKICBzaG9ydCBjc0JyaWdo
dERlZjsKICBzaG9ydCBjc0JyaWdodFZhbDsKICBzaG9ydCBjc0NudHJzdE1heDsKICBzaG9ydCBj
c0NudHJzdERlZjsKICBzaG9ydCBjc0NudHJzdFZhbDsKICBzaG9ydCBjc1RpbnRNYXg7CiAgc2hv
cnQgY3NUaW50RGVmOwogIHNob3J0IGNzVGludFZhbDsKICBzaG9ydCBjc0h1ZU1heDsKICBzaG9y
dCBjc0h1ZURlZjsKICBzaG9ydCBjc0h1ZVZhbDsKICBzaG9ydCBjc0hvcml6RGVmOwogIHNob3J0
IGNzSG9yaXpWYWw7CiAgc2hvcnQgY3NIb3Jpek1heDsKICBzaG9ydCBjc1ZlcnREZWY7CiAgc2hv
cnQgY3NWZXJ0VmFsOwogIHNob3J0IGNzVmVydE1heDsKfTsKdHlwZWRlZiBzdHJ1Y3QgVkRTZXR0
aW5ncyBWRFNldHRpbmdzOwp0eXBlZGVmIFZEU2V0dGluZ3MgKiBWRFNldHRpbmdzUHRyOwpzdHJ1
Y3QgVkREZWZNb2RlIHsKICBVSW50OCBjc0lEOwogIFNJbnQ4IGZpbGxlcjsKfTsKdHlwZWRlZiBz
dHJ1Y3QgVkREZWZNb2RlIFZERGVmTW9kZTsKdHlwZWRlZiBWRERlZk1vZGUgKiBWRERlZk1vZGVQ
dHI7CnN0cnVjdCBWRFN5bmNJbmZvUmVjIHsKICBVSW50OCBjc01vZGU7CiAgVUludDggY3NGbGFn
czsKfTsKdHlwZWRlZiBzdHJ1Y3QgVkRTeW5jSW5mb1JlYyBWRFN5bmNJbmZvUmVjOwp0eXBlZGVm
IFZEU3luY0luZm9SZWMgKiBWRFN5bmNJbmZvUHRyOwp0eXBlZGVmIFVJbnQzMiBBVklEVHlwZTsK
dHlwZWRlZiBBVklEVHlwZSBEaXNwbGF5SURUeXBlOwp0eXBlZGVmIFVJbnQzMiBEaXNwbGF5TW9k
ZUlEOwp0eXBlZGVmIFVJbnQzMiBWaWRlb0RldmljZVR5cGU7CnR5cGVkZWYgVUludDMyIEdhbW1h
VGFibGVJRDsKCgoKCgplbnVtIHsKICBrRGlzcGxheU1vZGVJREN1cnJlbnQgPSAweDAwLAogIGtE
aXNwbGF5TW9kZUlESW52YWxpZCA9IChpbnQpMHhGRkZGRkZGRiwKICBrRGlzcGxheU1vZGVJREZp
bmRGaXJzdFJlc29sdXRpb24gPSAoaW50KTB4RkZGRkZGRkUsCiAga0Rpc3BsYXlNb2RlSUROb01v
cmVSZXNvbHV0aW9ucyA9IChpbnQpMHhGRkZGRkZGRCwKICBrRGlzcGxheU1vZGVJREZpbmRGaXJz
dFByb2dyYW1tYWJsZSA9IChpbnQpMHhGRkZGRkZGQywKICBrRGlzcGxheU1vZGVJREJvb3RQcm9n
cmFtbWFibGUgPSAoaW50KTB4RkZGRkZGRkIsCiAga0Rpc3BsYXlNb2RlSURSZXNlcnZlZEJhc2Ug
PSAoaW50KTB4ODAwMDAwMDAKfTsKCgplbnVtIHsKICBrR2FtbWFUYWJsZUlERmluZEZpcnN0ID0g
KGludCkweEZGRkZGRkZFLAogIGtHYW1tYVRhYmxlSUROb01vcmVUYWJsZXMgPSAoaW50KTB4RkZG
RkZGRkQsCiAga0dhbW1hVGFibGVJRFNwZWNpZmljID0gMHgwMAp9OwoKCmVudW0gewogIGtHZXRD
b25uZWN0aW9uQ291bnQgPSAoaW50KTB4RkZGRkZGRkYsCiAga0FjdGl2YXRlQ29ubmVjdGlvbiA9
ICgwIDw8IGtDb25uZWN0aW9uSW5hY3RpdmUpLAogIGtEZWFjdGl2YXRlQ29ubmVjdGlvbiA9ICgx
IDw8IGtDb25uZWN0aW9uSW5hY3RpdmUpCn07CgoKZW51bSB7CiAga1ZpZGVvRGVmYXVsdEJ1cyA9
IDAKfTsKCgoKZW51bSB7CiAga1ZpZGVvQnVzVHlwZUludmFsaWQgPSAwLAogIGtWaWRlb0J1c1R5
cGVJMkMgPSAxCn07CgoKCmVudW0gewogIGtWaWRlb05vVHJhbnNhY3Rpb25UeXBlID0gMCwKICBr
VmlkZW9TaW1wbGVJMkNUeXBlID0gMSwKICBrVmlkZW9ERENjaVJlcGx5VHlwZSA9IDIKfTsKCgpl
bnVtIHsKICBrVmlkZW9SZXBseU1pY3JvU2VjRGVsYXlNYXNrID0gKDEgPDwgMCkKfTsKCgoKc3Ry
dWN0IFZEUmVzb2x1dGlvbkluZm9SZWMgewogIERpc3BsYXlNb2RlSUQgY3NQcmV2aW91c0Rpc3Bs
YXlNb2RlSUQ7CiAgRGlzcGxheU1vZGVJRCBjc0Rpc3BsYXlNb2RlSUQ7CiAgdW5zaWduZWQgbG9u
ZyBjc0hvcml6b250YWxQaXhlbHM7CiAgdW5zaWduZWQgbG9uZyBjc1ZlcnRpY2FsTGluZXM7CiAg
Rml4ZWQgY3NSZWZyZXNoUmF0ZTsKICBEZXB0aE1vZGUgY3NNYXhEZXB0aE1vZGU7CiAgdW5zaWdu
ZWQgbG9uZyBjc1Jlc29sdXRpb25GbGFnczsKICB1bnNpZ25lZCBsb25nIGNzUmVzZXJ2ZWQ7Cn07
CnR5cGVkZWYgc3RydWN0IFZEUmVzb2x1dGlvbkluZm9SZWMgVkRSZXNvbHV0aW9uSW5mb1JlYzsK
dHlwZWRlZiBWRFJlc29sdXRpb25JbmZvUmVjICogVkRSZXNvbHV0aW9uSW5mb1B0cjsKc3RydWN0
IFZEVmlkZW9QYXJhbWV0ZXJzSW5mb1JlYyB7CiAgRGlzcGxheU1vZGVJRCBjc0Rpc3BsYXlNb2Rl
SUQ7CiAgRGVwdGhNb2RlIGNzRGVwdGhNb2RlOwogIFZQQmxvY2tQdHIgY3NWUEJsb2NrUHRyOwog
IHVuc2lnbmVkIGxvbmcgY3NQYWdlQ291bnQ7CiAgVmlkZW9EZXZpY2VUeXBlIGNzRGV2aWNlVHlw
ZTsKICBVSW50MzIgY3NEZXB0aEZsYWdzOwp9Owp0eXBlZGVmIHN0cnVjdCBWRFZpZGVvUGFyYW1l
dGVyc0luZm9SZWMgVkRWaWRlb1BhcmFtZXRlcnNJbmZvUmVjOwp0eXBlZGVmIFZEVmlkZW9QYXJh
bWV0ZXJzSW5mb1JlYyAqIFZEVmlkZW9QYXJhbWV0ZXJzSW5mb1B0cjsKc3RydWN0IFZER2FtbWFJ
bmZvUmVjIHsKICBHYW1tYVRhYmxlSUQgY3NMYXN0R2FtbWFJRDsKICBHYW1tYVRhYmxlSUQgY3NO
ZXh0R2FtbWFJRDsKICBQdHIgY3NHYW1tYVB0cjsKICB1bnNpZ25lZCBsb25nIGNzUmVzZXJ2ZWQ7
Cn07CnR5cGVkZWYgc3RydWN0IFZER2FtbWFJbmZvUmVjIFZER2FtbWFJbmZvUmVjOwp0eXBlZGVm
IFZER2FtbWFJbmZvUmVjICogVkRHYW1tYUluZm9QdHI7CnN0cnVjdCBWREdldEdhbW1hTGlzdFJl
YyB7CiAgR2FtbWFUYWJsZUlEIGNzUHJldmlvdXNHYW1tYVRhYmxlSUQ7CiAgR2FtbWFUYWJsZUlE
IGNzR2FtbWFUYWJsZUlEOwogIHVuc2lnbmVkIGxvbmcgY3NHYW1tYVRhYmxlU2l6ZTsKICBjaGFy
ICogY3NHYW1tYVRhYmxlTmFtZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgVkRHZXRHYW1tYUxpc3RSZWMg
VkRHZXRHYW1tYUxpc3RSZWM7CnR5cGVkZWYgVkRHZXRHYW1tYUxpc3RSZWMgKiBWREdldEdhbW1h
TGlzdFB0cjsKc3RydWN0IFZEUmV0cmlldmVHYW1tYVJlYyB7CiAgR2FtbWFUYWJsZUlEIGNzR2Ft
bWFUYWJsZUlEOwogIEdhbW1hVGJsICogY3NHYW1tYVRhYmxlUHRyOwp9Owp0eXBlZGVmIHN0cnVj
dCBWRFJldHJpZXZlR2FtbWFSZWMgVkRSZXRyaWV2ZUdhbW1hUmVjOwp0eXBlZGVmIFZEUmV0cmll
dmVHYW1tYVJlYyAqIFZEUmV0cmlldmVHYW1tYVB0cjsKc3RydWN0IFZEU2V0SGFyZHdhcmVDdXJz
b3JSZWMgewogIHZvaWQgKiBjc0N1cnNvclJlZjsKICBVSW50MzIgY3NSZXNlcnZlZDE7CiAgVUlu
dDMyIGNzUmVzZXJ2ZWQyOwp9Owp0eXBlZGVmIHN0cnVjdCBWRFNldEhhcmR3YXJlQ3Vyc29yUmVj
IFZEU2V0SGFyZHdhcmVDdXJzb3JSZWM7CnR5cGVkZWYgVkRTZXRIYXJkd2FyZUN1cnNvclJlYyAq
IFZEU2V0SGFyZHdhcmVDdXJzb3JQdHI7CnN0cnVjdCBWRERyYXdIYXJkd2FyZUN1cnNvclJlYyB7
CiAgU0ludDMyIGNzQ3Vyc29yWDsKICBTSW50MzIgY3NDdXJzb3JZOwogIFVJbnQzMiBjc0N1cnNv
clZpc2libGU7CiAgVUludDMyIGNzUmVzZXJ2ZWQxOwogIFVJbnQzMiBjc1Jlc2VydmVkMjsKfTsK
dHlwZWRlZiBzdHJ1Y3QgVkREcmF3SGFyZHdhcmVDdXJzb3JSZWMgVkREcmF3SGFyZHdhcmVDdXJz
b3JSZWM7CnR5cGVkZWYgVkREcmF3SGFyZHdhcmVDdXJzb3JSZWMgKiBWRERyYXdIYXJkd2FyZUN1
cnNvclB0cjsKc3RydWN0IFZEU3VwcG9ydHNIYXJkd2FyZUN1cnNvclJlYyB7CiAgVUludDMyIGNz
U3VwcG9ydHNIYXJkd2FyZUN1cnNvcjsKCiAgVUludDMyIGNzUmVzZXJ2ZWQxOwogIFVJbnQzMiBj
c1Jlc2VydmVkMjsKfTsKdHlwZWRlZiBzdHJ1Y3QgVkRTdXBwb3J0c0hhcmR3YXJlQ3Vyc29yUmVj
IFZEU3VwcG9ydHNIYXJkd2FyZUN1cnNvclJlYzsKdHlwZWRlZiBWRFN1cHBvcnRzSGFyZHdhcmVD
dXJzb3JSZWMgKiBWRFN1cHBvcnRzSGFyZHdhcmVDdXJzb3JQdHI7CnN0cnVjdCBWREhhcmR3YXJl
Q3Vyc29yRHJhd1N0YXRlUmVjIHsKICBTSW50MzIgY3NDdXJzb3JYOwogIFNJbnQzMiBjc0N1cnNv
clk7CiAgVUludDMyIGNzQ3Vyc29yVmlzaWJsZTsKICBVSW50MzIgY3NDdXJzb3JTZXQ7CiAgVUlu
dDMyIGNzUmVzZXJ2ZWQxOwogIFVJbnQzMiBjc1Jlc2VydmVkMjsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
VkRIYXJkd2FyZUN1cnNvckRyYXdTdGF0ZVJlYyBWREhhcmR3YXJlQ3Vyc29yRHJhd1N0YXRlUmVj
Owp0eXBlZGVmIFZESGFyZHdhcmVDdXJzb3JEcmF3U3RhdGVSZWMgKiBWREhhcmR3YXJlQ3Vyc29y
RHJhd1N0YXRlUHRyOwpzdHJ1Y3QgVkRDb252b2x1dGlvbkluZm9SZWMgewogIERpc3BsYXlNb2Rl
SUQgY3NEaXNwbGF5TW9kZUlEOwogIERlcHRoTW9kZSBjc0RlcHRoTW9kZTsKICB1bnNpZ25lZCBs
b25nIGNzUGFnZTsKICBVSW50MzIgY3NGbGFnczsKICBVSW50MzIgY3NSZXNlcnZlZDsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgVkRDb252b2x1dGlvbkluZm9SZWMgVkRDb252b2x1dGlvbkluZm9SZWM7CnR5
cGVkZWYgVkRDb252b2x1dGlvbkluZm9SZWMgKiBWRENvbnZvbHV0aW9uSW5mb1B0cjsKc3RydWN0
IFZEUG93ZXJTdGF0ZVJlYyB7CiAgdW5zaWduZWQgbG9uZyBwb3dlclN0YXRlOwogIHVuc2lnbmVk
IGxvbmcgcG93ZXJGbGFnczsKCiAgdW5zaWduZWQgbG9uZyBwb3dlclJlc2VydmVkMTsKICB1bnNp
Z25lZCBsb25nIHBvd2VyUmVzZXJ2ZWQyOwp9Owp0eXBlZGVmIHN0cnVjdCBWRFBvd2VyU3RhdGVS
ZWMgVkRQb3dlclN0YXRlUmVjOwp0eXBlZGVmIFZEUG93ZXJTdGF0ZVJlYyAqIFZEUG93ZXJTdGF0
ZVB0cjsKIyA4MTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvVmlkZW8uaCIgMwpz
dHJ1Y3QgVkRQcml2YXRlU2VsZWN0b3JEYXRhUmVjIHsKICBMb2dpY2FsQWRkcmVzcyBwcml2YXRl
UGFyYW1ldGVyczsKICBCeXRlQ291bnQgcHJpdmF0ZVBhcmFtZXRlcnNTaXplOwogIExvZ2ljYWxB
ZGRyZXNzIHByaXZhdGVSZXN1bHRzOwogIEJ5dGVDb3VudCBwcml2YXRlUmVzdWx0c1NpemU7Cn07
CnR5cGVkZWYgc3RydWN0IFZEUHJpdmF0ZVNlbGVjdG9yRGF0YVJlYyBWRFByaXZhdGVTZWxlY3Rv
ckRhdGFSZWM7CgpzdHJ1Y3QgVkRQcml2YXRlU2VsZWN0b3JSZWMgewogIFVJbnQzMiByZXNlcnZl
ZDsKICBWRFByaXZhdGVTZWxlY3RvckRhdGFSZWMgZGF0YVsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
VkRQcml2YXRlU2VsZWN0b3JSZWMgVkRQcml2YXRlU2VsZWN0b3JSZWM7CnN0cnVjdCBWREREQ0Js
b2NrUmVjIHsKICBVSW50MzIgZGRjQmxvY2tOdW1iZXI7CiAgUmVzVHlwZSBkZGNCbG9ja1R5cGU7
CiAgVUludDMyIGRkY0ZsYWdzOwogIFVJbnQzMiBkZGNSZXNlcnZlZDsKICBCeXRlIGRkY0Jsb2Nr
RGF0YVsxMjhdOwp9Owp0eXBlZGVmIHN0cnVjdCBWREREQ0Jsb2NrUmVjIFZERERDQmxvY2tSZWM7
CnR5cGVkZWYgVkRERENCbG9ja1JlYyAqIFZERERDQmxvY2tQdHI7CgplbnVtIHsKCiAga1N5bmNJ
bnRlcmxhY2VNYXNrID0gKDEgPDwgNyksCiAga1N5bmNBbmFsb2dDb21wb3NpdGVNYXNrID0gMCwK
ICBrU3luY0FuYWxvZ0NvbXBvc2l0ZVNlcnJhdGVNYXNrID0gKDEgPDwgMiksCiAga1N5bmNBbmFs
b2dDb21wb3NpdGVSR0JTeW5jTWFzayA9ICgxIDw8IDEpLAogIGtTeW5jQW5hbG9nQmlwb2xhck1h
c2sgPSAoMSA8PCAzKSwKICBrU3luY0FuYWxvZ0JpcG9sYXJTZXJyYXRlTWFzayA9ICgxIDw8IDIp
LAogIGtTeW5jQW5hbG9nQmlwb2xhclNSR0JTeW5jTWFzayA9ICgxIDw8IDEpLAogIGtTeW5jRGln
aXRhbENvbXBvc2l0ZU1hc2sgPSAoMSA8PCA0KSwKICBrU3luY0RpZ2l0YWxDb21wb3NpdGVTZXJy
YXRlTWFzayA9ICgxIDw8IDIpLAogIGtTeW5jRGlnaXRhbENvbXBvc2l0ZU1hdGNoSFN5bmNNYXNr
ID0gKDEgPDwgMiksCiAga1N5bmNEaWdpdGFsU2VwZXJhdGVNYXNrID0gKDEgPDwgNCkgKyAoMSA8
PCAzKSwKICBrU3luY0RpZ2l0YWxWU3luY1Bvc2l0aXZlTWFzayA9ICgxIDw8IDIpLAogIGtTeW5j
RGlnaXRhbEhTeW5jUG9zaXRpdmVNYXNrID0gKDEgPDwgMSkKfTsKCgoKc3RydWN0IFZERGlzcGxh
eVRpbWluZ1JhbmdlUmVjIHsKICBVSW50MzIgY3NSYW5nZVNpemU7CiAgVUludDMyIGNzUmFuZ2VU
eXBlOwogIFVJbnQzMiBjc1JhbmdlVmVyc2lvbjsKICBVSW50MzIgY3NSYW5nZVJlc2VydmVkOwoK
ICBVSW50MzIgY3NSYW5nZUJsb2NrSW5kZXg7CiAgVUludDMyIGNzUmFuZ2VHcm91cDsKICBVSW50
MzIgY3NSYW5nZUJsb2NrQ291bnQ7CiAgVUludDMyIGNzUmFuZ2VGbGFnczsKCiAgVUludDY0IGNz
TWluUGl4ZWxDbG9jazsKICBVSW50NjQgY3NNYXhQaXhlbENsb2NrOwoKICBVSW50MzIgY3NNYXhQ
aXhlbEVycm9yOwogIFVJbnQzMiBjc1RpbWluZ1JhbmdlU3luY0ZsYWdzOwogIFVJbnQzMiBjc1Rp
bWluZ1JhbmdlU2lnbmFsTGV2ZWxzOwogIFVJbnQzMiBjc1Jlc2VydmVkMDsKCiAgVUludDMyIGNz
TWluRnJhbWVSYXRlOwogIFVJbnQzMiBjc01heEZyYW1lUmF0ZTsKICBVSW50MzIgY3NNaW5MaW5l
UmF0ZTsKICBVSW50MzIgY3NNYXhMaW5lUmF0ZTsKCgogIFVJbnQzMiBjc01heEhvcml6b250YWxU
b3RhbDsKICBVSW50MzIgY3NNYXhWZXJ0aWNhbFRvdGFsOwogIFVJbnQzMiBjc01heFRvdGFsUmVz
ZXJ2ZWQxOwogIFVJbnQzMiBjc01heFRvdGFsUmVzZXJ2ZWQyOwojIDg5MyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9R
RC5mcmFtZXdvcmsvSGVhZGVycy9WaWRlby5oIiAzCiAgVUludDggY3NDaGFyU2l6ZUhvcml6b250
YWxBY3RpdmU7CiAgVUludDggY3NDaGFyU2l6ZUhvcml6b250YWxCbGFua2luZzsKICBVSW50OCBj
c0NoYXJTaXplSG9yaXpvbnRhbFN5bmNPZmZzZXQ7CiAgVUludDggY3NDaGFyU2l6ZUhvcml6b250
YWxTeW5jUHVsc2U7CgogIFVJbnQ4IGNzQ2hhclNpemVWZXJ0aWNhbEFjdGl2ZTsKICBVSW50OCBj
c0NoYXJTaXplVmVydGljYWxCbGFua2luZzsKICBVSW50OCBjc0NoYXJTaXplVmVydGljYWxTeW5j
T2Zmc2V0OwogIFVJbnQ4IGNzQ2hhclNpemVWZXJ0aWNhbFN5bmNQdWxzZTsKCiAgVUludDggY3ND
aGFyU2l6ZUhvcml6b250YWxCb3JkZXJMZWZ0OwogIFVJbnQ4IGNzQ2hhclNpemVIb3Jpem9udGFs
Qm9yZGVyUmlnaHQ7CiAgVUludDggY3NDaGFyU2l6ZVZlcnRpY2FsQm9yZGVyVG9wOwogIFVJbnQ4
IGNzQ2hhclNpemVWZXJ0aWNhbEJvcmRlckJvdHRvbTsKCiAgVUludDggY3NDaGFyU2l6ZUhvcml6
b250YWxUb3RhbDsKICBVSW50OCBjc0NoYXJTaXplVmVydGljYWxUb3RhbDsKICBVSW50MTYgY3ND
aGFyU2l6ZVJlc2VydmVkMTsKCgogIFVJbnQzMiBjc01pbkhvcml6b250YWxBY3RpdmVDbG9ja3M7
CiAgVUludDMyIGNzTWF4SG9yaXpvbnRhbEFjdGl2ZUNsb2NrczsKICBVSW50MzIgY3NNaW5Ib3Jp
em9udGFsQmxhbmtpbmdDbG9ja3M7CiAgVUludDMyIGNzTWF4SG9yaXpvbnRhbEJsYW5raW5nQ2xv
Y2tzOwoKICBVSW50MzIgY3NNaW5Ib3Jpem9udGFsU3luY09mZnNldENsb2NrczsKICBVSW50MzIg
Y3NNYXhIb3Jpem9udGFsU3luY09mZnNldENsb2NrczsKICBVSW50MzIgY3NNaW5Ib3Jpem9udGFs
UHVsc2VXaWR0aENsb2NrczsKICBVSW50MzIgY3NNYXhIb3Jpem9udGFsUHVsc2VXaWR0aENsb2Nr
czsKCiAgVUludDMyIGNzTWluVmVydGljYWxBY3RpdmVDbG9ja3M7CiAgVUludDMyIGNzTWF4VmVy
dGljYWxBY3RpdmVDbG9ja3M7CiAgVUludDMyIGNzTWluVmVydGljYWxCbGFua2luZ0Nsb2NrczsK
ICBVSW50MzIgY3NNYXhWZXJ0aWNhbEJsYW5raW5nQ2xvY2tzOwoKICBVSW50MzIgY3NNaW5WZXJ0
aWNhbFN5bmNPZmZzZXRDbG9ja3M7CiAgVUludDMyIGNzTWF4VmVydGljYWxTeW5jT2Zmc2V0Q2xv
Y2tzOwogIFVJbnQzMiBjc01pblZlcnRpY2FsUHVsc2VXaWR0aENsb2NrczsKICBVSW50MzIgY3NN
YXhWZXJ0aWNhbFB1bHNlV2lkdGhDbG9ja3M7CgoKICBVSW50MzIgY3NNaW5Ib3Jpem9udGFsQm9y
ZGVyTGVmdDsKICBVSW50MzIgY3NNYXhIb3Jpem9udGFsQm9yZGVyTGVmdDsKICBVSW50MzIgY3NN
aW5Ib3Jpem9udGFsQm9yZGVyUmlnaHQ7CiAgVUludDMyIGNzTWF4SG9yaXpvbnRhbEJvcmRlclJp
Z2h0OwoKICBVSW50MzIgY3NNaW5WZXJ0aWNhbEJvcmRlclRvcDsKICBVSW50MzIgY3NNYXhWZXJ0
aWNhbEJvcmRlclRvcDsKICBVSW50MzIgY3NNaW5WZXJ0aWNhbEJvcmRlckJvdHRvbTsKICBVSW50
MzIgY3NNYXhWZXJ0aWNhbEJvcmRlckJvdHRvbTsKCiAgVUludDMyIGNzUmVzZXJ2ZWQxOwogIFVJ
bnQzMiBjc1Jlc2VydmVkMjsKICBVSW50MzIgY3NSZXNlcnZlZDM7CiAgVUludDMyIGNzUmVzZXJ2
ZWQ0OwoKICBVSW50MzIgY3NSZXNlcnZlZDU7CiAgVUludDMyIGNzUmVzZXJ2ZWQ2OwogIFVJbnQz
MiBjc1Jlc2VydmVkNzsKICBVSW50MzIgY3NSZXNlcnZlZDg7Cn07CnR5cGVkZWYgc3RydWN0IFZE
RGlzcGxheVRpbWluZ1JhbmdlUmVjIFZERGlzcGxheVRpbWluZ1JhbmdlUmVjOwp0eXBlZGVmIFZE
RGlzcGxheVRpbWluZ1JhbmdlUmVjICogVkREaXNwbGF5VGltaW5nUmFuZ2VQdHI7CgplbnVtIHsK
CiAga0RNU01vZGVSZWFkeSA9IDAsCiAga0RNU01vZGVOb3RSZWFkeSA9IDEsCiAga0RNU01vZGVG
cmVlID0gMgp9OwoKCgplbnVtIHsKICBrVGltaW5nQ2hhbmdlUmVzdHJpY3RlZEVyciA9IC0xMDkz
MCwKICBrVmlkZW9JMkNSZXBseVBlbmRpbmdFcnIgPSAtMTA5MzEsCiAga1ZpZGVvSTJDVHJhbnNh
Y3Rpb25FcnIgPSAtMTA5MzIsCiAga1ZpZGVvSTJDQnVzeUVyciA9IC0xMDkzMywKICBrVmlkZW9J
MkNUcmFuc2FjdGlvblR5cGVFcnIgPSAtMTA5MzQsCiAga1ZpZGVvQnVmZmVyU2l6ZUVyciA9IC0x
MDkzNQp9OwoKCmVudW0gewoKICBrUmFuZ2VTdXBwb3J0c1NpZ25hbF8wNzAwXzAzMDBfQml0ID0g
MCwKICBrUmFuZ2VTdXBwb3J0c1NpZ25hbF8wNzE0XzAyODZfQml0ID0gMSwKICBrUmFuZ2VTdXBw
b3J0c1NpZ25hbF8xMDAwXzA0MDBfQml0ID0gMiwKICBrUmFuZ2VTdXBwb3J0c1NpZ25hbF8wNzAw
XzAwMDBfQml0ID0gMywKICBrUmFuZ2VTdXBwb3J0c1NpZ25hbF8wNzAwXzAzMDBfTWFzayA9ICgx
IDw8IGtSYW5nZVN1cHBvcnRzU2lnbmFsXzA3MDBfMDMwMF9CaXQpLAogIGtSYW5nZVN1cHBvcnRz
U2lnbmFsXzA3MTRfMDI4Nl9NYXNrID0gKDEgPDwga1JhbmdlU3VwcG9ydHNTaWduYWxfMDcxNF8w
Mjg2X0JpdCksCiAga1JhbmdlU3VwcG9ydHNTaWduYWxfMTAwMF8wNDAwX01hc2sgPSAoMSA8PCBr
UmFuZ2VTdXBwb3J0c1NpZ25hbF8xMDAwXzA0MDBfQml0KSwKICBrUmFuZ2VTdXBwb3J0c1NpZ25h
bF8wNzAwXzAwMDBfTWFzayA9ICgxIDw8IGtSYW5nZVN1cHBvcnRzU2lnbmFsXzA3MDBfMDAwMF9C
aXQpCn07CgoKZW51bSB7CgogIGtEaWdpdGFsU2lnbmFsQml0ID0gMCwKICBrQW5hbG9nU2V0dXBF
eHBlY3RlZEJpdCA9IDEsCiAga0RpZ2l0YWxTaWduYWxNYXNrID0gKDEgPDwga0RpZ2l0YWxTaWdu
YWxCaXQpLAogIGtBbmFsb2dTZXR1cEV4cGVjdGVkTWFzayA9ICgxIDw8IGtBbmFsb2dTZXR1cEV4
cGVjdGVkQml0KQp9OwoKCmVudW0gewoKICBrQW5hbG9nU2lnbmFsTGV2ZWxfMDcwMF8wMzAwID0g
MCwKICBrQW5hbG9nU2lnbmFsTGV2ZWxfMDcxNF8wMjg2ID0gMSwKICBrQW5hbG9nU2lnbmFsTGV2
ZWxfMTAwMF8wNDAwID0gMiwKICBrQW5hbG9nU2lnbmFsTGV2ZWxfMDcwMF8wMDAwID0gMwp9OwoK
CmVudW0gewoKICBrUmFuZ2VTdXBwb3J0c1NlcGVyYXRlU3luY3NCaXQgPSAwLAogIGtSYW5nZVN1
cHBvcnRzU3luY09uR3JlZW5CaXQgPSAxLAogIGtSYW5nZVN1cHBvcnRzQ29tcG9zaXRlU3luY0Jp
dCA9IDIsCiAga1JhbmdlU3VwcG9ydHNWU3luY1NlcnJhdGlvbkJpdCA9IDMsCiAga1JhbmdlU3Vw
cG9ydHNTZXBlcmF0ZVN5bmNzTWFzayA9ICgxIDw8IGtSYW5nZVN1cHBvcnRzU2VwZXJhdGVTeW5j
c0JpdCksCiAga1JhbmdlU3VwcG9ydHNTeW5jT25HcmVlbk1hc2sgPSAoMSA8PCBrUmFuZ2VTdXBw
b3J0c1N5bmNPbkdyZWVuQml0KSwKICBrUmFuZ2VTdXBwb3J0c0NvbXBvc2l0ZVN5bmNNYXNrID0g
KDEgPDwga1JhbmdlU3VwcG9ydHNDb21wb3NpdGVTeW5jQml0KSwKICBrUmFuZ2VTdXBwb3J0c1ZT
eW5jU2VycmF0aW9uTWFzayA9ICgxIDw8IGtSYW5nZVN1cHBvcnRzVlN5bmNTZXJyYXRpb25CaXQp
Cn07CgoKCmVudW0gewoKICBrU3luY1Bvc2l0aXZlUG9sYXJpdHlCaXQgPSAwLAogIGtTeW5jUG9z
aXRpdmVQb2xhcml0eU1hc2sgPSAoMSA8PCBrU3luY1Bvc2l0aXZlUG9sYXJpdHlCaXQpCn07CgoK
CgoKc3RydWN0IFZERGV0YWlsZWRUaW1pbmdSZWMgewogIFVJbnQzMiBjc1RpbWluZ1NpemU7CiAg
VUludDMyIGNzVGltaW5nVHlwZTsKICBVSW50MzIgY3NUaW1pbmdWZXJzaW9uOwogIFVJbnQzMiBj
c1RpbWluZ1Jlc2VydmVkOwoKICBEaXNwbGF5TW9kZUlEIGNzRGlzcGxheU1vZGVJRDsKICBVSW50
MzIgY3NEaXNwbGF5TW9kZVNlZWQ7CiAgVUludDMyIGNzRGlzcGxheU1vZGVTdGF0ZTsKICBVSW50
MzIgY3NEaXNwbGF5TW9kZUFsaWFzOwoKICBVSW50MzIgY3NTaWduYWxDb25maWc7CiAgVUludDMy
IGNzU2lnbmFsTGV2ZWxzOwoKICBVSW50NjQgY3NQaXhlbENsb2NrOwoKICBVSW50NjQgY3NNaW5Q
aXhlbENsb2NrOwogIFVJbnQ2NCBjc01heFBpeGVsQ2xvY2s7CgoKICBVSW50MzIgY3NIb3Jpem9u
dGFsQWN0aXZlOwogIFVJbnQzMiBjc0hvcml6b250YWxCbGFua2luZzsKICBVSW50MzIgY3NIb3Jp
em9udGFsU3luY09mZnNldDsKICBVSW50MzIgY3NIb3Jpem9udGFsU3luY1B1bHNlV2lkdGg7Cgog
IFVJbnQzMiBjc1ZlcnRpY2FsQWN0aXZlOwogIFVJbnQzMiBjc1ZlcnRpY2FsQmxhbmtpbmc7CiAg
VUludDMyIGNzVmVydGljYWxTeW5jT2Zmc2V0OwogIFVJbnQzMiBjc1ZlcnRpY2FsU3luY1B1bHNl
V2lkdGg7CgogIFVJbnQzMiBjc0hvcml6b250YWxCb3JkZXJMZWZ0OwogIFVJbnQzMiBjc0hvcml6
b250YWxCb3JkZXJSaWdodDsKICBVSW50MzIgY3NWZXJ0aWNhbEJvcmRlclRvcDsKICBVSW50MzIg
Y3NWZXJ0aWNhbEJvcmRlckJvdHRvbTsKCiAgVUludDMyIGNzSG9yaXpvbnRhbFN5bmNDb25maWc7
CiAgVUludDMyIGNzSG9yaXpvbnRhbFN5bmNMZXZlbDsKICBVSW50MzIgY3NWZXJ0aWNhbFN5bmND
b25maWc7CiAgVUludDMyIGNzVmVydGljYWxTeW5jTGV2ZWw7CgogIFVJbnQzMiBjc1Jlc2VydmVk
MTsKICBVSW50MzIgY3NSZXNlcnZlZDI7CiAgVUludDMyIGNzUmVzZXJ2ZWQzOwogIFVJbnQzMiBj
c1Jlc2VydmVkNDsKCiAgVUludDMyIGNzUmVzZXJ2ZWQ1OwogIFVJbnQzMiBjc1Jlc2VydmVkNjsK
ICBVSW50MzIgY3NSZXNlcnZlZDc7CiAgVUludDMyIGNzUmVzZXJ2ZWQ4Owp9Owp0eXBlZGVmIHN0
cnVjdCBWRERldGFpbGVkVGltaW5nUmVjIFZERGV0YWlsZWRUaW1pbmdSZWM7CnR5cGVkZWYgVkRE
ZXRhaWxlZFRpbWluZ1JlYyAqIFZERGV0YWlsZWRUaW1pbmdQdHI7CnR5cGVkZWYgVUludDMyIFZE
Q2x1dEJlaGF2aW9yOwp0eXBlZGVmIFZEQ2x1dEJlaGF2aW9yICogVkRDbHV0QmVoYXZpb3JQdHI7
CmVudW0gewogIGtTZXRDbHV0QXRTZXRFbnRyaWVzID0gMCwKICBrU2V0Q2x1dEF0VkJMID0gMQp9
OwoKCnN0cnVjdCBWRENvbW11bmljYXRpb25SZWMgewogIFNJbnQzMiBjc0J1c0lEOwogIFVJbnQz
MiBjc0NvbW1GbGFnczsKICBVSW50MzIgY3NNaW5SZXBseURlbGF5OwogIFVJbnQzMiBjc1Jlc2Vy
dmVkMjsKCiAgVUludDMyIGNzU2VuZEFkZHJlc3M7CiAgVUludDMyIGNzU2VuZFR5cGU7CiAgTG9n
aWNhbEFkZHJlc3MgY3NTZW5kQnVmZmVyOwogIEJ5dGVDb3VudCBjc1NlbmRTaXplOwoKICBVSW50
MzIgY3NSZXBseUFkZHJlc3M7CiAgVUludDMyIGNzUmVwbHlUeXBlOwogIExvZ2ljYWxBZGRyZXNz
IGNzUmVwbHlCdWZmZXI7CiAgQnl0ZUNvdW50IGNzUmVwbHlTaXplOwoKICBVSW50MzIgY3NSZXNl
cnZlZDM7CiAgVUludDMyIGNzUmVzZXJ2ZWQ0OwogIFVJbnQzMiBjc1Jlc2VydmVkNTsKICBVSW50
MzIgY3NSZXNlcnZlZDY7Cn07CnR5cGVkZWYgc3RydWN0IFZEQ29tbXVuaWNhdGlvblJlYyBWRENv
bW11bmljYXRpb25SZWM7CnR5cGVkZWYgVkRDb21tdW5pY2F0aW9uUmVjICogVkRDb21tdW5pY2F0
aW9uUHRyOwpzdHJ1Y3QgVkRDb21tdW5pY2F0aW9uSW5mb1JlYyB7CiAgU0ludDMyIGNzQnVzSUQ7
CiAgVUludDMyIGNzQnVzVHlwZTsKICBTSW50MzIgY3NNaW5CdXM7CiAgU0ludDMyIGNzTWF4QnVz
OwoKICBVSW50MzIgY3NTdXBwb3J0ZWRUeXBlczsKICBVSW50MzIgY3NTdXBwb3J0ZWRDb21tRmxh
Z3M7CiAgVUludDMyIGNzUmVzZXJ2ZWQyOwogIFVJbnQzMiBjc1Jlc2VydmVkMzsKCiAgVUludDMy
IGNzUmVzZXJ2ZWQ0OwogIFVJbnQzMiBjc1Jlc2VydmVkNTsKICBVSW50MzIgY3NSZXNlcnZlZDY7
CiAgVUludDMyIGNzUmVzZXJ2ZWQ3Owp9Owp0eXBlZGVmIHN0cnVjdCBWRENvbW11bmljYXRpb25J
bmZvUmVjIFZEQ29tbXVuaWNhdGlvbkluZm9SZWM7CnR5cGVkZWYgVkRDb21tdW5pY2F0aW9uSW5m
b1JlYyAqIFZEQ29tbXVuaWNhdGlvbkluZm9QdHI7CgojcHJhZ21hIHBhY2socG9wKQojIDc4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL1FELmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvRGlzcGxheXMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
UUQuZnJhbWV3b3JrL0hlYWRlcnMvRGlzcGxheXMuaCIgMwojZGVmaW5lIF9fRElTUExBWVNfXyAK
IyAyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9EaXNwbGF5cy5oIiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGVwcmVjYXRl
ZC5oIiAxIDMKIyAyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9EaXNwbGF5cy5o
IiAyIDMKIyA0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9EaXNwbGF5cy5oIiAz
CmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQojIDU2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL0Rpc3BsYXlzLmgiIDMKdHlwZWRlZiB2b2lkICogRE1Qcm9jZXNz
SW5mb1B0cjsKdHlwZWRlZiB2b2lkICogRE1Nb2RhbEZpbHRlclVQUDsKZW51bSB7CgogIGtBRVN5
c3RlbUNvbmZpZ05vdGljZSA9ICdjbmZnJywKICBrQUVEaXNwbGF5Tm90aWNlID0gJ2RzcGwnLAog
IGtBRURpc3BsYXlTdW1tYXJ5ID0gJ2RzdW0nLAogIGtleURNQ29uZmlnVmVyc2lvbiA9ICdkbWN2
JywKICBrZXlETUNvbmZpZ0ZsYWdzID0gJ2RtY2YnLAogIGtleURNQ29uZmlnUmVzZXJ2ZWQgPSAn
ZG1jcicsCiAga2V5RGlzcGxheUlEID0gJ2RtaWQnLAogIGtleURpc3BsYXlDb21wb25lbnQgPSAn
ZG1kYycsCiAga2V5RGlzcGxheURldmljZSA9ICdkbWRkJywKICBrZXlEaXNwbGF5RmxhZ3MgPSAn
ZG1kZicsCiAga2V5RGlzcGxheU1vZGUgPSAnZG1kbScsCiAga2V5RGlzcGxheU1vZGVSZXNlcnZl
ZCA9ICdkbW1yJywKICBrZXlEaXNwbGF5UmVzZXJ2ZWQgPSAnZG1kcicsCiAga2V5RGlzcGxheU1p
cnJvcmVkSWQgPSAnZG1taScsCiAga2V5RGV2aWNlRmxhZ3MgPSAnZGRkZicsCiAga2V5RGV2aWNl
RGVwdGhNb2RlID0gJ2RkZG0nLAogIGtleURldmljZVJlY3QgPSAnZGRkcicsCiAga2V5UGl4TWFw
UmVjdCA9ICdkcGRyJywKICBrZXlQaXhNYXBIUmVzb2x1dGlvbiA9ICdkcGhyJywKICBrZXlQaXhN
YXBWUmVzb2x1dGlvbiA9ICdkcHZyJywKICBrZXlQaXhNYXBQaXhlbFR5cGUgPSAnZHBwdCcsCiAg
a2V5UGl4TWFwUGl4ZWxTaXplID0gJ2RwcHMnLAogIGtleVBpeE1hcENtcENvdW50ID0gJ2RwY2Mn
LAogIGtleVBpeE1hcENtcFNpemUgPSAnZHBjcycsCiAga2V5UGl4TWFwQWxpZ25tZW50ID0gJ2Rw
cGEnLAogIGtleVBpeE1hcFJlc1Jlc2VydmVkID0gJ2RwcnInLAogIGtleVBpeE1hcFJlc2VydmVk
ID0gJ2RwcHInLAogIGtleVBpeE1hcENvbG9yVGFibGVTZWVkID0gJ2RwY3QnLAogIGtleVN1bW1h
cnlNZW51YmFyID0gJ2RzbWInLAogIGtleVN1bW1hcnlDaGFuZ2VzID0gJ2RzY2gnLAogIGtleURp
c3BsYXlPbGRDb25maWcgPSAnZG9sZCcsCiAga2V5RGlzcGxheU5ld0NvbmZpZyA9ICdkbmV3Jwp9
OwoKZW51bSB7CiAgZG1Pbmx5QWN0aXZlRGlzcGxheXMgPSB0cnVlLAogIGRtQWxsRGlzcGxheXMg
PSBmYWxzZQp9OwoKCmVudW0gewoKICBrRGVwZW5kZW50Tm90aWZ5Q2xhc3NTaG93Q3Vyc29yID0g
J3NoY3InLAogIGtEZXBlbmRlbnROb3RpZnlDbGFzc0RyaXZlck92ZXJyaWRlID0gJ25kcnYnLAog
IGtEZXBlbmRlbnROb3RpZnlDbGFzc0Rpc3BsYXlNZ3JPdmVycmlkZSA9ICdkbWdyJywKICBrRGVw
ZW5kZW50Tm90aWZ5Q2xhc3NQcm9maWxlQ2hhbmdlZCA9ICdwcm9mJwp9OwoKCmVudW0gewoKICBr
Tm9Td2l0Y2hDb25maXJtQml0ID0gMCwKICBrRGVwdGhOb3RBdmFpbGFibGVCaXQgPSAxLAogIGtT
aG93TW9kZUJpdCA9IDMsCiAga01vZGVOb3RSZXNpemVCaXQgPSA0LAogIGtOZXZlclNob3dNb2Rl
Qml0ID0gNQp9OwoKCgoKZW51bSB7CiAga0JlZ2luRW5kQ29uZmlndXJlQml0ID0gMCwKICBrTW92
ZWREaXNwbGF5Qml0ID0gMSwKICBrU2V0TWFpbkRpc3BsYXlCaXQgPSAyLAogIGtTZXREaXNwbGF5
TW9kZUJpdCA9IDMsCiAga0FkZERpc3BsYXlCaXQgPSA0LAogIGtSZW1vdmVEaXNwbGF5Qml0ID0g
NSwKICBrTmV3RGlzcGxheUJpdCA9IDYsCiAga0Rpc3Bvc2VEaXNwbGF5Qml0ID0gNywKICBrRW5h
YmxlZERpc3BsYXlCaXQgPSA4LAogIGtEaXNhYmxlZERpc3BsYXlCaXQgPSA5LAogIGtNaXJyb3JE
aXNwbGF5Qml0ID0gMTAsCiAga1VuTWlycm9yRGlzcGxheUJpdCA9IDExCn07CgoKZW51bSB7Cgog
IGtETU5vdGlmeVJlcXVlc3RDb25uZWN0aW9uUHJvYmUgPSAwLAogIGtETU5vdGlmeUluc3RhbGxl
ZCA9IDEsCiAga0RNTm90aWZ5RXZlbnQgPSAyLAogIGtETU5vdGlmeVJlbW92ZWQgPSAzLAogIGtE
TU5vdGlmeVByZXAgPSA0LAogIGtETU5vdGlmeUV4dGVuZEV2ZW50ID0gNSwKICBrRE1Ob3RpZnlE
ZXBlbmRlbnRzID0gNiwKICBrRE1Ob3RpZnlTdXNwZW5kQ29uZmlndXJlID0gNywKICBrRE1Ob3Rp
ZnlSZXN1bWVDb25maWd1cmUgPSA4LAogIGtETU5vdGlmeVJlcXVlc3REaXNwbGF5UHJvYmUgPSA5
LAogIGtETU5vdGlmeURpc3BsYXlXaWxsU2xlZXAgPSAxMCwKICBrRE1Ob3RpZnlEaXNwbGF5RGlk
V2FrZSA9IDExLAoKICBrRXh0ZW5kZWROb3RpZmljYXRpb25Qcm9jID0gKDFMIDw8IDE2KQp9OwoK
CgplbnVtIHsKICBrRnVsbE5vdGlmeSA9IDAsCiAga0Z1bGxEZXBlbmRlbmN5Tm90aWZ5ID0gMQp9
OwoKCmVudW0gewogIGtEdW1teURldmljZUlEID0gMHgwMEZGLAogIGtJbnZhbGlkRGlzcGxheUlE
ID0gMHgwMDAwLAogIGtGaXJzdERpc3BsYXlJRCA9IDB4MDEwMAp9OwoKZW51bSB7CgogIGtBbGxv
d0R1cGxpY2F0ZXNCaXQgPSAwCn07CgplbnVtIHsKCiAga1N1cHByZXNzTnVtYmVyQml0ID0gMCwK
ICBrU3VwcHJlc3NOdW1iZXJNYXNrID0gMSwKICBrRm9yY2VOdW1iZXJCaXQgPSAxLAogIGtGb3Jj
ZU51bWJlck1hc2sgPSAyLAogIGtTdXBwcmVzc05hbWVCaXQgPSAyLAogIGtTdXBwcmVzc05hbWVN
YXNrID0gNAp9OwoKCmVudW0gewogIGtETVN1cHJlc3NOdW1iZXJzTWFzayA9ICgxIDw8IDApLAog
IGtETUZvcmNlTnVtYmVyc01hc2sgPSAoMSA8PCAxKSwKICBrRE1TdXByZXNzTmFtZU1hc2sgPSAo
MSA8PCAyKQp9OwoKCgoKZW51bSB7CiAga05vRmlkZWxpdHkgPSAwLAogIGtNaW5pbXVtRmlkZWxp
dHkgPSAxLAogIGtEZWZhdWx0RmlkZWxpdHkgPSA1MDAsCiAga0RlZmF1bHRNYW51ZmFjdHVyZXJG
aWRlbGl0eSA9IDEwMDAKfTsKCmVudW0gewogIGtBbnlQYW5lbFR5cGUgPSAwLAogIGtBbnlFbmdp
bmVUeXBlID0gMCwKICBrQW55RGV2aWNlVHlwZSA9IDAsCiAga0FueVBvcnRUeXBlID0gMAp9OwoK
CmVudW0gewoKICBrUExJbmNsdWRlT2ZmbGluZURldmljZXNCaXQgPSAwCn07CgoKCmVudW0gewog
IGtGb3JjZUNvbmZpcm1CaXQgPSAwLAogIGtGb3JjZUNvbmZpcm1NYXNrID0gKDEgPDwga0ZvcmNl
Q29uZmlybUJpdCkKfTsKCgoKZW51bSB7CiAga0Rpc3BsYXlNb2RlTGlzdE5vdFByZWZlcnJlZEJp
dCA9IDAsCiAga0Rpc3BsYXlNb2RlTGlzdE5vdFByZWZlcnJlZE1hc2sgPSAoMSA8PCBrRGlzcGxh
eU1vZGVMaXN0Tm90UHJlZmVycmVkQml0KQp9OwoKCgplbnVtIHsKICBrQ29tcG9uZW50TGlzdE5v
dFByZWZlcnJlZEJpdCA9IDAsCiAga0NvbXBvbmVudExpc3ROb3RQcmVmZXJyZWRNYXNrID0gKDEg
PDwga0NvbXBvbmVudExpc3ROb3RQcmVmZXJyZWRCaXQpCn07CgplbnVtIHsKICBrRGlzcGxheVRp
bWluZ0luZm9WZXJzaW9uWmVybyA9IDEsCiAga0Rpc3BsYXlUaW1pbmdJbmZvUmVzZXJ2ZWRDb3Vu
dFZlcnNpb25aZXJvID0gMTYsCiAga0Rpc3BsYXlNb2RlRW50cnlWZXJzaW9uWmVybyA9IDAsCiAg
a0Rpc3BsYXlNb2RlRW50cnlWZXJzaW9uT25lID0gMQp9OwoKCmVudW0gewogIGtNYWtlQW5kTW9k
ZWxSZXNlcnZlZENvdW50ID0gNAp9OwoKCgplbnVtIHsKICBrRGlzcGxheUdlc3RhbHREaXNwbGF5
Q29tbXVuaWNhdGlvbkF0dHIgPSAnY29tbScsCiAga0Rpc3BsYXlHZXN0YWx0Rm9yYmlkSTJDTWFz
ayA9ICgxIDw8IDApLAogIGtEaXNwbGF5R2VzdGFsdFVzZUkyQ1Bvd2VyTWFzayA9ICgxIDw8IDEp
LAogIGtEaXNwbGF5R2VzdGFsdENhbGlicmF0b3JBdHRyID0gJ2NhbGknLAogIGtEaXNwbGF5R2Vz
dGFsdEJyaWdodG5lc3NBZmZlY3RzR2FtbWFNYXNrID0gKDEgPDwgMCksCiAga0Rpc3BsYXlHZXN0
YWx0Vmlld0FuZ2xlQWZmZWN0c0dhbW1hTWFzayA9ICgxIDw8IDEpCn07CgoKdHlwZWRlZiBVSW50
MzIgRE1GaWRlbGl0eVR5cGU7CgoKCgoKCnR5cGVkZWYgdm9pZCAqIERNTGlzdFR5cGU7CnR5cGVk
ZWYgVUludDMyIERNTGlzdEluZGV4VHlwZTsKdHlwZWRlZiBWRFBvd2VyU3RhdGVSZWMgQVZQb3dl
clN0YXRlUmVjOwp0eXBlZGVmIFZEUG93ZXJTdGF0ZVJlYyAqIEFWUG93ZXJTdGF0ZVB0cjsKc3Ry
dWN0IERNRGlzcGxheVRpbWluZ0luZm9SZWMgewogIFVJbnQzMiB0aW1pbmdJbmZvVmVyc2lvbjsK
ICBVSW50MzIgdGltaW5nSW5mb0F0dHJpYnV0ZXM7CiAgU0ludDMyIHRpbWluZ0luZm9SZWxhdGl2
ZVF1YWxpdHk7CiAgU0ludDMyIHRpbWluZ0luZm9SZWxhdGl2ZURlZmF1bHQ7CgogIFVJbnQzMiB0
aW1pbmdJbmZvUmVzZXJ2ZWRbMTZdOwp9Owp0eXBlZGVmIHN0cnVjdCBETURpc3BsYXlUaW1pbmdJ
bmZvUmVjIERNRGlzcGxheVRpbWluZ0luZm9SZWM7CnR5cGVkZWYgRE1EaXNwbGF5VGltaW5nSW5m
b1JlYyAqIERNRGlzcGxheVRpbWluZ0luZm9QdHI7CgpzdHJ1Y3QgRE1Db21wb25lbnRMaXN0RW50
cnlSZWMgewogIERpc3BsYXlJRFR5cGUgaXRlbUlEOwogIENvbXBvbmVudCBpdGVtQ29tcG9uZW50
OwogIENvbXBvbmVudERlc2NyaXB0aW9uIGl0ZW1EZXNjcmlwdGlvbjsKCiAgUmVzVHlwZSBpdGVt
Q2xhc3M7CiAgRE1GaWRlbGl0eVR5cGUgaXRlbUZpZGVsaXR5OwogIFJlc1R5cGUgaXRlbVN1YkNs
YXNzOwogIFBvaW50IGl0ZW1Tb3J0OwoKICBVSW50MzIgaXRlbUZsYWdzOwogIFJlc1R5cGUgaXRl
bVJlc2VydmVkOwogIFVJbnQzMiBpdGVtRnV0dXJlMTsKICBVSW50MzIgaXRlbUZ1dHVyZTI7CiAg
VUludDMyIGl0ZW1GdXR1cmUzOwogIFVJbnQzMiBpdGVtRnV0dXJlNDsKfTsKdHlwZWRlZiBzdHJ1
Y3QgRE1Db21wb25lbnRMaXN0RW50cnlSZWMgRE1Db21wb25lbnRMaXN0RW50cnlSZWM7CnR5cGVk
ZWYgRE1Db21wb25lbnRMaXN0RW50cnlSZWMgKiBETUNvbXBvbmVudExpc3RFbnRyeVB0cjsKCnN0
cnVjdCBBVkxvY2F0aW9uUmVjIHsKICBVSW50MzIgbG9jYXRpb25Db25zdGFudDsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgQVZMb2NhdGlvblJlYyBBVkxvY2F0aW9uUmVjOwp0eXBlZGVmIEFWTG9jYXRpb25S
ZWMgKiBBVkxvY2F0aW9uUHRyOwpzdHJ1Y3QgRE1EZXB0aEluZm9SZWMgewogIFZEU3dpdGNoSW5m
b1B0ciBkZXB0aFN3aXRjaEluZm87CiAgVlBCbG9ja1B0ciBkZXB0aFZQQmxvY2s7CiAgVUludDMy
IGRlcHRoRmxhZ3M7CiAgVUludDMyIGRlcHRoUmVzZXJ2ZWQxOwogIFVJbnQzMiBkZXB0aFJlc2Vy
dmVkMjsKfTsKdHlwZWRlZiBzdHJ1Y3QgRE1EZXB0aEluZm9SZWMgRE1EZXB0aEluZm9SZWM7CnR5
cGVkZWYgRE1EZXB0aEluZm9SZWMgKiBETURlcHRoSW5mb1B0cjsKc3RydWN0IERNRGVwdGhJbmZv
QmxvY2tSZWMgewogIFVJbnQzMiBkZXB0aEJsb2NrQ291bnQ7CiAgRE1EZXB0aEluZm9QdHIgZGVw
dGhWUEJsb2NrOwogIFVJbnQzMiBkZXB0aEJsb2NrRmxhZ3M7CiAgVUludDMyIGRlcHRoQmxvY2tS
ZXNlcnZlZDE7CiAgVUludDMyIGRlcHRoQmxvY2tSZXNlcnZlZDI7Cn07CnR5cGVkZWYgc3RydWN0
IERNRGVwdGhJbmZvQmxvY2tSZWMgRE1EZXB0aEluZm9CbG9ja1JlYzsKdHlwZWRlZiBETURlcHRo
SW5mb0Jsb2NrUmVjICogRE1EZXB0aEluZm9CbG9ja1B0cjsKc3RydWN0IERNRGlzcGxheU1vZGVM
aXN0RW50cnlSZWMgewogIFVJbnQzMiBkaXNwbGF5TW9kZUZsYWdzOwogIFZEU3dpdGNoSW5mb1B0
ciBkaXNwbGF5TW9kZVN3aXRjaEluZm87CiAgVkRSZXNvbHV0aW9uSW5mb1B0ciBkaXNwbGF5TW9k
ZVJlc29sdXRpb25JbmZvOwogIFZEVGltaW5nSW5mb1B0ciBkaXNwbGF5TW9kZVRpbWluZ0luZm87
CiAgRE1EZXB0aEluZm9CbG9ja1B0ciBkaXNwbGF5TW9kZURlcHRoQmxvY2tJbmZvOwogIFVJbnQz
MiBkaXNwbGF5TW9kZVZlcnNpb247CiAgU3RyaW5nUHRyIGRpc3BsYXlNb2RlTmFtZTsKICBETURp
c3BsYXlUaW1pbmdJbmZvUHRyIGRpc3BsYXlNb2RlRGlzcGxheUluZm87Cn07CnR5cGVkZWYgc3Ry
dWN0IERNRGlzcGxheU1vZGVMaXN0RW50cnlSZWMgRE1EaXNwbGF5TW9kZUxpc3RFbnRyeVJlYzsK
dHlwZWRlZiBETURpc3BsYXlNb2RlTGlzdEVudHJ5UmVjICogRE1EaXNwbGF5TW9kZUxpc3RFbnRy
eVB0cjsKCnN0cnVjdCBEZXBlbmRlbnROb3RpZnlSZWMgewogIFJlc1R5cGUgbm90aWZ5VHlwZTsK
ICBSZXNUeXBlIG5vdGlmeUNsYXNzOwogIERpc3BsYXlJRFR5cGUgbm90aWZ5UG9ydElEOwogIENv
bXBvbmVudEluc3RhbmNlIG5vdGlmeUNvbXBvbmVudDsKCiAgVUludDMyIG5vdGlmeVZlcnNpb247
CiAgVUludDMyIG5vdGlmeUZsYWdzOwogIFVJbnQzMiBub3RpZnlSZXNlcnZlZDsKICBVSW50MzIg
bm90aWZ5RnV0dXJlOwp9Owp0eXBlZGVmIHN0cnVjdCBEZXBlbmRlbnROb3RpZnlSZWMgRGVwZW5k
ZW50Tm90aWZ5UmVjOwp0eXBlZGVmIERlcGVuZGVudE5vdGlmeVJlYyAqIERlcGVuZGVudE5vdGlm
eVB0cjsKCnN0cnVjdCBETU1ha2VBbmRNb2RlbFJlYyB7CiAgUmVzVHlwZSBtYW51ZmFjdHVyZXI7
CiAgVUludDMyIG1vZGVsOwogIFVJbnQzMiBzZXJpYWxOdW1iZXI7CiAgVUludDMyIG1hbnVmYWN0
dXJlRGF0ZTsKCiAgVUludDMyIG1ha2VSZXNlcnZlZFs0XTsKfTsKdHlwZWRlZiBzdHJ1Y3QgRE1N
YWtlQW5kTW9kZWxSZWMgRE1NYWtlQW5kTW9kZWxSZWM7CnR5cGVkZWYgRE1NYWtlQW5kTW9kZWxS
ZWMgKiBETU1ha2VBbmRNb2RlbFB0cjsKCmVudW0gewogIGtJbmNsdWRlT25saW5lQWN0aXZlRGlz
cGxheXNNYXNrID0gKDEgPDwgMCksCiAga0luY2x1ZGVPbmxpbmVEaXNhYmxlZERpc3BsYXlzTWFz
ayA9ICgxIDw8IDEpLAogIGtJbmNsdWRlT2ZmbGluZURpc3BsYXlzTWFzayA9ICgxIDw8IDIpLAog
IGtJbmNsdWRlT2ZmbGluZUR1bW15RGlzcGxheXNNYXNrID0gKDEgPDwgMyksCiAga0luY2x1ZGVI
YXJkd2FyZU1pcnJvcmVkRGlzcGxheXNNYXNrID0gKDEgPDwgNCkKfTsKCgplbnVtIHsKCiAga0RN
TW9kZUxpc3RJbmNsdWRlQWxsTW9kZXNNYXNrID0gKDEgPDwgMCksCiAga0RNTW9kZUxpc3RJbmNs
dWRlT2ZmbGluZU1vZGVzTWFzayA9ICgxIDw8IDEpLAogIGtETU1vZGVMaXN0RXhjbHVkZURyaXZl
ck1vZGVzTWFzayA9ICgxIDw8IDIpLAogIGtETU1vZGVMaXN0RXhjbHVkZURpc3BsYXlNb2Rlc01h
c2sgPSAoMSA8PCAzKSwKICBrRE1Nb2RlTGlzdEV4Y2x1ZGVDdXN0b21Nb2Rlc01hc2sgPSAoMSA8
PCA0KSwKICBrRE1Nb2RlTGlzdFByZWZlclN0cmV0Y2hlZE1vZGVzTWFzayA9ICgxIDw8IDUpLAog
IGtETU1vZGVMaXN0UHJlZmVyU2FmZU1vZGVzTWFzayA9ICgxIDw8IDYpCn07CgoKCnN0cnVjdCBE
aXNwbGF5TGlzdEVudHJ5UmVjIHsKICBHREhhbmRsZSBkaXNwbGF5TGlzdEVudHJ5R0RldmljZTsK
ICBEaXNwbGF5SURUeXBlIGRpc3BsYXlMaXN0RW50cnlEaXNwbGF5SUQ7CiAgVUludDMyIGRpc3Bs
YXlMaXN0RW50cnlJbmNsdWRlRmxhZ3M7CiAgVUludDMyIGRpc3BsYXlMaXN0RW50cnlSZXNlcnZl
ZDE7CgogIFVJbnQzMiBkaXNwbGF5TGlzdEVudHJ5UmVzZXJ2ZWQyOwogIFVJbnQzMiBkaXNwbGF5
TGlzdEVudHJ5UmVzZXJ2ZWQzOwogIFVJbnQzMiBkaXNwbGF5TGlzdEVudHJ5UmVzZXJ2ZWQ0Owog
IFVJbnQzMiBkaXNwbGF5TGlzdEVudHJ5UmVzZXJ2ZWQ1Owp9Owp0eXBlZGVmIHN0cnVjdCBEaXNw
bGF5TGlzdEVudHJ5UmVjIERpc3BsYXlMaXN0RW50cnlSZWM7CnR5cGVkZWYgRGlzcGxheUxpc3RF
bnRyeVJlYyAqIERpc3BsYXlMaXN0RW50cnlQdHI7CnN0cnVjdCBETVByb2ZpbGVMaXN0RW50cnlS
ZWMgewogIHZvaWQgKiBwcm9maWxlUmVmOwogIFB0ciBwcm9maWxlUmVzZXJ2ZWQxOwogIFB0ciBw
cm9maWxlUmVzZXJ2ZWQyOwogIFB0ciBwcm9maWxlUmVzZXJ2ZWQzOwp9Owp0eXBlZGVmIHN0cnVj
dCBETVByb2ZpbGVMaXN0RW50cnlSZWMgRE1Qcm9maWxlTGlzdEVudHJ5UmVjOwp0eXBlZGVmIERN
UHJvZmlsZUxpc3RFbnRyeVJlYyAqIERNUHJvZmlsZUxpc3RFbnRyeVB0cjsKdHlwZWRlZiB2b2lk
ICggKiBETU5vdGlmaWNhdGlvblByb2NQdHIpKEFwcGxlRXZlbnQgKiB0aGVFdmVudCk7CnR5cGVk
ZWYgdm9pZCAoICogRE1FeHRlbmRlZE5vdGlmaWNhdGlvblByb2NQdHIpKHZvaWQgKnVzZXJEYXRh
LCBzaG9ydCB0aGVNZXNzYWdlLCB2b2lkICpub3RpZnlEYXRhKTsKdHlwZWRlZiB2b2lkICggKiBE
TUNvbXBvbmVudExpc3RJdGVyYXRvclByb2NQdHIpKHZvaWQgKnVzZXJEYXRhLCBETUxpc3RJbmRl
eFR5cGUgaXRlbUluZGV4LCBETUNvbXBvbmVudExpc3RFbnRyeVB0ciBjb21wb25lbnRJbmZvKTsK
dHlwZWRlZiB2b2lkICggKiBETURpc3BsYXlNb2RlTGlzdEl0ZXJhdG9yUHJvY1B0cikodm9pZCAq
dXNlckRhdGEsIERNTGlzdEluZGV4VHlwZSBpdGVtSW5kZXgsIERNRGlzcGxheU1vZGVMaXN0RW50
cnlQdHIgZGlzcGxheW1vZGVJbmZvKTsKdHlwZWRlZiB2b2lkICggKiBETVByb2ZpbGVMaXN0SXRl
cmF0b3JQcm9jUHRyKSh2b2lkICp1c2VyRGF0YSwgRE1MaXN0SW5kZXhUeXBlIGl0ZW1JbmRleCwg
RE1Qcm9maWxlTGlzdEVudHJ5UHRyIHByb2ZpbGVJbmZvKTsKdHlwZWRlZiB2b2lkICggKiBETURp
c3BsYXlMaXN0SXRlcmF0b3JQcm9jUHRyKSh2b2lkICp1c2VyRGF0YSwgRE1MaXN0SW5kZXhUeXBl
IGl0ZW1JbmRleCwgRGlzcGxheUxpc3RFbnRyeVB0ciBkaXNwbGF5bW9kZUluZm8pOwp0eXBlZGVm
IERNTm90aWZpY2F0aW9uUHJvY1B0ciBETU5vdGlmaWNhdGlvblVQUDsKdHlwZWRlZiBETUV4dGVu
ZGVkTm90aWZpY2F0aW9uUHJvY1B0ciBETUV4dGVuZGVkTm90aWZpY2F0aW9uVVBQOwp0eXBlZGVm
IERNQ29tcG9uZW50TGlzdEl0ZXJhdG9yUHJvY1B0ciBETUNvbXBvbmVudExpc3RJdGVyYXRvclVQ
UDsKdHlwZWRlZiBETURpc3BsYXlNb2RlTGlzdEl0ZXJhdG9yUHJvY1B0ciBETURpc3BsYXlNb2Rl
TGlzdEl0ZXJhdG9yVVBQOwp0eXBlZGVmIERNUHJvZmlsZUxpc3RJdGVyYXRvclByb2NQdHIgRE1Q
cm9maWxlTGlzdEl0ZXJhdG9yVVBQOwp0eXBlZGVmIERNRGlzcGxheUxpc3RJdGVyYXRvclByb2NQ
dHIgRE1EaXNwbGF5TGlzdEl0ZXJhdG9yVVBQOwojIDQyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdv
cmsvSGVhZGVycy9EaXNwbGF5cy5oIiAzCmV4dGVybiBETU5vdGlmaWNhdGlvblVQUApOZXdETU5v
dGlmaWNhdGlvblVQUChETU5vdGlmaWNhdGlvblByb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA0MzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRl
cnMvRGlzcGxheXMuaCIgMwpleHRlcm4gRE1FeHRlbmRlZE5vdGlmaWNhdGlvblVQUApOZXdETUV4
dGVuZGVkTm90aWZpY2F0aW9uVVBQKERNRXh0ZW5kZWROb3RpZmljYXRpb25Qcm9jUHRyIHVzZXJS
b3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNDQ3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL0Rpc3BsYXlzLmgiIDMKZXh0ZXJuIERNQ29tcG9uZW50TGlzdEl0
ZXJhdG9yVVBQCk5ld0RNQ29tcG9uZW50TGlzdEl0ZXJhdG9yVVBQKERNQ29tcG9uZW50TGlzdEl0
ZXJhdG9yUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoj
IDQ1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9EaXNwbGF5cy5oIiAzCmV4dGVy
biBETURpc3BsYXlNb2RlTGlzdEl0ZXJhdG9yVVBQCk5ld0RNRGlzcGxheU1vZGVMaXN0SXRlcmF0
b3JVUFAoRE1EaXNwbGF5TW9kZUxpc3RJdGVyYXRvclByb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA0NjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hl
YWRlcnMvRGlzcGxheXMuaCIgMwpleHRlcm4gRE1Qcm9maWxlTGlzdEl0ZXJhdG9yVVBQCk5ld0RN
UHJvZmlsZUxpc3RJdGVyYXRvclVQUChETVByb2ZpbGVMaXN0SXRlcmF0b3JQcm9jUHRyIHVzZXJS
b3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNDgwICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL0Rpc3BsYXlzLmgiIDMKZXh0ZXJuIERNRGlzcGxheUxpc3RJdGVy
YXRvclVQUApOZXdETURpc3BsYXlMaXN0SXRlcmF0b3JVUFAoRE1EaXNwbGF5TGlzdEl0ZXJhdG9y
UHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDQ5MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9EaXNwbGF5cy5oIiAzCmV4dGVybiB2b2lk
CkRpc3Bvc2VETU5vdGlmaWNhdGlvblVQUChETU5vdGlmaWNhdGlvblVQUCB1c2VyVVBQKSBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNTAyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9I
ZWFkZXJzL0Rpc3BsYXlzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZURNRXh0ZW5kZWROb3RpZmlj
YXRpb25VUFAoRE1FeHRlbmRlZE5vdGlmaWNhdGlvblVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9f
KChkZXByZWNhdGVkKSk7CiMgNTEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0Rp
c3BsYXlzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZURNQ29tcG9uZW50TGlzdEl0ZXJhdG9yVVBQ
KERNQ29tcG9uZW50TGlzdEl0ZXJhdG9yVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKIyA1MjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvRGlzcGxheXMu
aCIgMwpleHRlcm4gdm9pZApEaXNwb3NlRE1EaXNwbGF5TW9kZUxpc3RJdGVyYXRvclVQUChETURp
c3BsYXlNb2RlTGlzdEl0ZXJhdG9yVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKIyA1MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvRGlzcGxheXMuaCIg
MwpleHRlcm4gdm9pZApEaXNwb3NlRE1Qcm9maWxlTGlzdEl0ZXJhdG9yVVBQKERNUHJvZmlsZUxp
c3RJdGVyYXRvclVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNTQ2
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0Rpc3BsYXlzLmgiIDMKZXh0ZXJuIHZv
aWQKRGlzcG9zZURNRGlzcGxheUxpc3RJdGVyYXRvclVQUChETURpc3BsYXlMaXN0SXRlcmF0b3JV
UFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDU1NyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9RRC5mcmFtZXdvcmsvSGVhZGVycy9EaXNwbGF5cy5oIiAzCmV4dGVybiB2b2lkCkludm9rZURN
Tm90aWZpY2F0aW9uVVBQKAogIEFwcGxlRXZlbnQgKiB0aGVFdmVudCwKICBETU5vdGlmaWNhdGlv
blVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNTcwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0Rpc3BsYXlzLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tl
RE1FeHRlbmRlZE5vdGlmaWNhdGlvblVQUCgKICB2b2lkICogdXNlckRhdGEsCiAgc2hvcnQgdGhl
TWVzc2FnZSwKICB2b2lkICogbm90aWZ5RGF0YSwKICBETUV4dGVuZGVkTm90aWZpY2F0aW9uVVBQ
IHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA1ODUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
UUQuZnJhbWV3b3JrL0hlYWRlcnMvRGlzcGxheXMuaCIgMwpleHRlcm4gdm9pZApJbnZva2VETUNv
bXBvbmVudExpc3RJdGVyYXRvclVQUCgKICB2b2lkICogdXNlckRhdGEsCiAgRE1MaXN0SW5kZXhU
eXBlIGl0ZW1JbmRleCwKICBETUNvbXBvbmVudExpc3RFbnRyeVB0ciBjb21wb25lbnRJbmZvLAog
IERNQ29tcG9uZW50TGlzdEl0ZXJhdG9yVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKIyA2MDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvRGlzcGxheXMu
aCIgMwpleHRlcm4gdm9pZApJbnZva2VETURpc3BsYXlNb2RlTGlzdEl0ZXJhdG9yVVBQKAogIHZv
aWQgKiB1c2VyRGF0YSwKICBETUxpc3RJbmRleFR5cGUgaXRlbUluZGV4LAogIERNRGlzcGxheU1v
ZGVMaXN0RW50cnlQdHIgZGlzcGxheW1vZGVJbmZvLAogIERNRGlzcGxheU1vZGVMaXN0SXRlcmF0
b3JVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDYxNSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9EaXNwbGF5cy5oIiAzCmV4dGVybiB2b2lkCkludm9r
ZURNUHJvZmlsZUxpc3RJdGVyYXRvclVQUCgKICB2b2lkICogdXNlckRhdGEsCiAgRE1MaXN0SW5k
ZXhUeXBlIGl0ZW1JbmRleCwKICBETVByb2ZpbGVMaXN0RW50cnlQdHIgcHJvZmlsZUluZm8sCiAg
RE1Qcm9maWxlTGlzdEl0ZXJhdG9yVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKIyA2MzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvRGlzcGxheXMuaCIg
MwpleHRlcm4gdm9pZApJbnZva2VETURpc3BsYXlMaXN0SXRlcmF0b3JVUFAoCiAgdm9pZCAqIHVz
ZXJEYXRhLAogIERNTGlzdEluZGV4VHlwZSBpdGVtSW5kZXgsCiAgRGlzcGxheUxpc3RFbnRyeVB0
ciBkaXNwbGF5bW9kZUluZm8sCiAgRE1EaXNwbGF5TGlzdEl0ZXJhdG9yVVBQIHVzZXJVUFApIF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBETU5vdGlmaWNhdGlvblVQ
UCBOZXdETU5vdGlmaWNhdGlvblVQUChETU5vdGlmaWNhdGlvblByb2NQdHIgdXNlclJvdXRpbmUp
IHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRE1FeHRlbmRlZE5vdGlmaWNhdGlv
blVQUCBOZXdETUV4dGVuZGVkTm90aWZpY2F0aW9uVVBQKERNRXh0ZW5kZWROb3RpZmljYXRpb25Q
cm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIERN
Q29tcG9uZW50TGlzdEl0ZXJhdG9yVVBQIE5ld0RNQ29tcG9uZW50TGlzdEl0ZXJhdG9yVVBQKERN
Q29tcG9uZW50TGlzdEl0ZXJhdG9yUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJv
dXRpbmU7IH0KICAgIGlubGluZSBETURpc3BsYXlNb2RlTGlzdEl0ZXJhdG9yVVBQIE5ld0RNRGlz
cGxheU1vZGVMaXN0SXRlcmF0b3JVUFAoRE1EaXNwbGF5TW9kZUxpc3RJdGVyYXRvclByb2NQdHIg
dXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRE1Qcm9maWxl
TGlzdEl0ZXJhdG9yVVBQIE5ld0RNUHJvZmlsZUxpc3RJdGVyYXRvclVQUChETVByb2ZpbGVMaXN0
SXRlcmF0b3JQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAg
aW5saW5lIERNRGlzcGxheUxpc3RJdGVyYXRvclVQUCBOZXdETURpc3BsYXlMaXN0SXRlcmF0b3JV
UFAoRE1EaXNwbGF5TGlzdEl0ZXJhdG9yUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNl
clJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VETU5vdGlmaWNhdGlvblVQUChETU5v
dGlmaWNhdGlvblVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlRE1FeHRlbmRlZE5vdGlm
aWNhdGlvblVQUChETUV4dGVuZGVkTm90aWZpY2F0aW9uVVBQKSB7IH0KICAgIGlubGluZSB2b2lk
IERpc3Bvc2VETUNvbXBvbmVudExpc3RJdGVyYXRvclVQUChETUNvbXBvbmVudExpc3RJdGVyYXRv
clVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlRE1EaXNwbGF5TW9kZUxpc3RJdGVyYXRv
clVQUChETURpc3BsYXlNb2RlTGlzdEl0ZXJhdG9yVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERp
c3Bvc2VETVByb2ZpbGVMaXN0SXRlcmF0b3JVUFAoRE1Qcm9maWxlTGlzdEl0ZXJhdG9yVVBQKSB7
IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VETURpc3BsYXlMaXN0SXRlcmF0b3JVUFAoRE1EaXNw
bGF5TGlzdEl0ZXJhdG9yVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIEludm9rZURNTm90aWZpY2F0
aW9uVVBQKEFwcGxlRXZlbnQgKiB0aGVFdmVudCwgRE1Ob3RpZmljYXRpb25VUFAgdXNlclVQUCkg
eyAoKnVzZXJVUFApKHRoZUV2ZW50KTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlRE1FeHRlbmRl
ZE5vdGlmaWNhdGlvblVQUCh2b2lkICogdXNlckRhdGEsIHNob3J0IHRoZU1lc3NhZ2UsIHZvaWQg
KiBub3RpZnlEYXRhLCBETUV4dGVuZGVkTm90aWZpY2F0aW9uVVBQIHVzZXJVUFApIHsgKCp1c2Vy
VVBQKSh1c2VyRGF0YSwgdGhlTWVzc2FnZSwgbm90aWZ5RGF0YSk7IH0KICAgIGlubGluZSB2b2lk
IEludm9rZURNQ29tcG9uZW50TGlzdEl0ZXJhdG9yVVBQKHZvaWQgKiB1c2VyRGF0YSwgRE1MaXN0
SW5kZXhUeXBlIGl0ZW1JbmRleCwgRE1Db21wb25lbnRMaXN0RW50cnlQdHIgY29tcG9uZW50SW5m
bywgRE1Db21wb25lbnRMaXN0SXRlcmF0b3JVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKHVzZXJE
YXRhLCBpdGVtSW5kZXgsIGNvbXBvbmVudEluZm8pOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VE
TURpc3BsYXlNb2RlTGlzdEl0ZXJhdG9yVVBQKHZvaWQgKiB1c2VyRGF0YSwgRE1MaXN0SW5kZXhU
eXBlIGl0ZW1JbmRleCwgRE1EaXNwbGF5TW9kZUxpc3RFbnRyeVB0ciBkaXNwbGF5bW9kZUluZm8s
IERNRGlzcGxheU1vZGVMaXN0SXRlcmF0b3JVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKHVzZXJE
YXRhLCBpdGVtSW5kZXgsIGRpc3BsYXltb2RlSW5mbyk7IH0KICAgIGlubGluZSB2b2lkIEludm9r
ZURNUHJvZmlsZUxpc3RJdGVyYXRvclVQUCh2b2lkICogdXNlckRhdGEsIERNTGlzdEluZGV4VHlw
ZSBpdGVtSW5kZXgsIERNUHJvZmlsZUxpc3RFbnRyeVB0ciBwcm9maWxlSW5mbywgRE1Qcm9maWxl
TGlzdEl0ZXJhdG9yVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKSh1c2VyRGF0YSwgaXRlbUluZGV4
LCBwcm9maWxlSW5mbyk7IH0KICAgIGlubGluZSB2b2lkIEludm9rZURNRGlzcGxheUxpc3RJdGVy
YXRvclVQUCh2b2lkICogdXNlckRhdGEsIERNTGlzdEluZGV4VHlwZSBpdGVtSW5kZXgsIERpc3Bs
YXlMaXN0RW50cnlQdHIgZGlzcGxheW1vZGVJbmZvLCBETURpc3BsYXlMaXN0SXRlcmF0b3JVUFAg
dXNlclVQUCkgeyAoKnVzZXJVUFApKHVzZXJEYXRhLCBpdGVtSW5kZXgsIGRpc3BsYXltb2RlSW5m
byk7IH0KIyAxNjgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0Rpc3BsYXlzLmgi
IDMKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgODIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hl
YWRlcnMvUUQuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9G
b250U3luYy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9Gb250
U3luYy5oIiAzCiNkZWZpbmUgX19GT05UU1lOQ19fIAojIDQwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1l
d29yay9IZWFkZXJzL0ZvbnRTeW5jLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBvcHRpb25z
IGFsaWduPXBvd2VyCgoKCnR5cGVkZWYgVUludDMyIEZOU01hdGNoT3B0aW9uczsKZW51bSB7CiAg
a0ZOU01hdGNoTmFtZXMgPSAweDAwMDAwMDAxLAogIGtGTlNNYXRjaFRlY2hub2xvZ3kgPSAweDAw
MDAwMDAyLAogIGtGTlNNYXRjaEdseXBocyA9IDB4MDAwMDAwMDQsCiAga0ZOU01hdGNoRW5jb2Rp
bmdzID0gMHgwMDAwMDAwOCwKICBrRk5TTWF0Y2hRRE1ldHJpY3MgPSAweDAwMDAwMDEwLAogIGtG
TlNNYXRjaEFUU1VNZXRyaWNzID0gMHgwMDAwMDAyMCwKICBrRk5TTWF0Y2hLZXJuaW5nID0gMHgw
MDAwMDA0MCwKICBrRk5TTWF0Y2hXU0xheW91dCA9IDB4MDAwMDAwODAsCiAga0ZOU01hdGNoQUFU
TGF5b3V0ID0gMHgwMDAwMDEwMCwKICBrRk5TTWF0Y2hQcmludEVuY29kaW5nID0gMHgwMDAwMDIw
MCwKICBrRk5TTWlzc2luZ0RhdGFOb01hdGNoID0gKFVJbnQzMikweDgwMDAwMDAwLAogIGtGTlNN
YXRjaEFsbCA9IChVSW50MzIpMHhGRkZGRkZGRiwKICBrRk5TTWF0Y2hEZWZhdWx0cyA9IDAKfTsK
IyA4MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9Gb250U3luYy5oIiAzCnR5cGVk
ZWYgVUludDMyIEZOU09iamVjdFZlcnNpb247CmVudW0gewogIGtGTlNWZXJzaW9uRG9udENhcmUg
PSAwLAogIGtGTlNDdXJTeXNJbmZvVmVyc2lvbiA9IDEKfTsKCgp0eXBlZGVmIFVJbnQzMiBGTlNG
ZWF0dXJlRmxhZ3M7CgoKCgpzdHJ1Y3QgRk5TU3lzSW5mbyB7CiAgRk5TT2JqZWN0VmVyc2lvbiBp
U3lzSW5mb1ZlcnNpb247CiAgRk5TRmVhdHVyZUZsYWdzIG9GZWF0dXJlczsKICBGTlNPYmplY3RW
ZXJzaW9uIG9DdXJSZWZWZXJzaW9uOwogIEZOU09iamVjdFZlcnNpb24gb01pblJlZlZlcnNpb247
CiAgRk5TT2JqZWN0VmVyc2lvbiBvQ3VyUHJvZmlsZVZlcnNpb247CiAgRk5TT2JqZWN0VmVyc2lv
biBvTWluUHJvZmlsZVZlcnNpb247CiAgVUludDE2IG9Gb250U3luY1ZlcnNpb247Cn07CnR5cGVk
ZWYgc3RydWN0IEZOU1N5c0luZm8gRk5TU3lzSW5mbzsKIyAxMjAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJh
bWV3b3JrL0hlYWRlcnMvRm9udFN5bmMuaCIgMwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVGTlNGb250
UmVmZXJlbmNlKiBGTlNGb250UmVmZXJlbmNlOwojIDIxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdv
cmsvSGVhZGVycy9Gb250U3luYy5oIiAzCmVudW0gewogIGtGTlNDcmVhdG9yRGVmYXVsdCA9IDAs
CiAga0ZOU1Byb2ZpbGVGaWxlVHlwZSA9ICdmbnNwJwp9OwoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
Rk5TRm9udFByb2ZpbGUqIEZOU0ZvbnRQcm9maWxlOwojIDU4NSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFt
ZXdvcmsvSGVhZGVycy9Gb250U3luYy5oIiAzCiNwcmFnbWEgb3B0aW9ucyBhbGlnbj1yZXNldAoK
Cn0KIyA4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9RRC5oIiAyIDMKCgoKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGUuaCIgMSAzCiMgMTcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZS5oIiAzCiNkZWZpbmUg
X19BVFNVTklDT0RFX18gCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FU
U1VuaWNvZGVUeXBlcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVy
cy9BVFNVbmljb2RlVHlwZXMuaCIgMwojZGVmaW5lIF9fQVRTVU5JQ09ERVRZUEVTX18gCiMgNTYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgiIDMKZXh0
ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCiMgNzYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJh
bWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
QVRTVVRleHRMYXlvdXQqIEFUU1VUZXh0TGF5b3V0OwojIDkxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1l
d29yay9IZWFkZXJzL0FUU1VuaWNvZGVUeXBlcy5oIiAzCnR5cGVkZWYgc3RydWN0IE9wYXF1ZUFU
U1VTdHlsZSogQVRTVVN0eWxlOwojIDEwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVy
cy9BVFNVbmljb2RlVHlwZXMuaCIgMwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVBVFNVRm9udEZhbGxi
YWNrcyogQVRTVUZvbnRGYWxsYmFja3M7CiMgMTE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9I
ZWFkZXJzL0FUU1VuaWNvZGVUeXBlcy5oIiAzCnR5cGVkZWYgRml4ZWQgQVRTVVRleHRNZWFzdXJl
bWVudDsKIyAxMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5
cGVzLmgiIDMKdHlwZWRlZiBGTUZvbnQgQVRTVUZvbnRJRDsKIyAxMzYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQu
ZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgiIDMKdHlwZWRlZiBVSW50MTYgQVRT
VUZvbnRGZWF0dXJlVHlwZTsKIyAxNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMv
QVRTVW5pY29kZVR5cGVzLmgiIDMKdHlwZWRlZiBVSW50MTYgQVRTVUZvbnRGZWF0dXJlU2VsZWN0
b3I7CiMgMTU2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVUeXBl
cy5oIiAzCnR5cGVkZWYgRm91ckNoYXJDb2RlIEFUU1VGb250VmFyaWF0aW9uQXhpczsKIyAxNjYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgiIDMKdHlw
ZWRlZiBGaXhlZCBBVFNVRm9udFZhcmlhdGlvblZhbHVlOwojIDE4MyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5m
cmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIgMwp0eXBlZGVmIFVJbnQzMiBBVFNV
QXR0cmlidXRlVGFnOwplbnVtIHsKCgoKCgogIGtBVFNVTGluZVdpZHRoVGFnID0gMSwKCgoKCgog
IGtBVFNVTGluZVJvdGF0aW9uVGFnID0gMiwKCgoKCgoKICBrQVRTVUxpbmVEaXJlY3Rpb25UYWcg
PSAzLAoKCgoKCiAga0FUU1VMaW5lSnVzdGlmaWNhdGlvbkZhY3RvclRhZyA9IDQsCgoKCgoKICBr
QVRTVUxpbmVGbHVzaEZhY3RvclRhZyA9IDUsCgoKCgoKCiAga0FUU1VMaW5lQmFzZWxpbmVWYWx1
ZXNUYWcgPSA2LAoKCgoKCgoKICBrQVRTVUxpbmVMYXlvdXRPcHRpb25zVGFnID0gNywKIyAyMzkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgiIDMKICBr
QVRTVUxpbmVBc2NlbnRUYWcgPSA4LAojIDI0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVh
ZGVycy9BVFNVbmljb2RlVHlwZXMuaCIgMwogIGtBVFNVTGluZURlc2NlbnRUYWcgPSA5LAoKCgoK
CgogIGtBVFNVTGluZUxhbmdSZWdpb25UYWcgPSAxMCwKCgoKCgoKICBrQVRTVUxpbmVUZXh0TG9j
YXRvclRhZyA9IDExLAoKCgoKCgogIGtBVFNVTGluZVRydW5jYXRpb25UYWcgPSAxMiwKIyAyODIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgiIDMKICBr
QVRTVUxpbmVGb250RmFsbGJhY2tzVGFnID0gMTMsCgoKCgoKCgogIGtBVFNVTGluZURlY2ltYWxU
YWJDaGFyYWN0ZXJUYWcgPSAxNCwKCgoKCgoKCiAga0FUU1VMYXlvdXRPcGVyYXRpb25PdmVycmlk
ZVRhZyA9IDE1LAoKCgoKCgogIGtBVFNVTGluZUhpZ2hsaWdodENHQ29sb3JUYWcgPSAxNywKCgoK
CgogIGtBVFNVTWF4TGluZVRhZyA9IDE4LAoKCgoKICBrQVRTVUxpbmVMYW5ndWFnZVRhZyA9IDEw
LAojIDMyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMu
aCIgMwogIGtBVFNVQ0dDb250ZXh0VGFnID0gMzI3NjcsCgoKCgoKCgogIGtBVFNVUURCb2xkZmFj
ZVRhZyA9IDI1NiwKCgoKCgoKCiAga0FUU1VRREl0YWxpY1RhZyA9IDI1NywKCgoKCgogIGtBVFNV
UURVbmRlcmxpbmVUYWcgPSAyNTgsCgoKCgoKICBrQVRTVVFEQ29uZGVuc2VkVGFnID0gMjU5LAoK
CgoKCiAga0FUU1VRREV4dGVuZGVkVGFnID0gMjYwLAoKCgoKCiAga0FUU1VGb250VGFnID0gMjYx
LAoKCgoKCiAga0FUU1VTaXplVGFnID0gMjYyLAoKCgoKCiAga0FUU1VDb2xvclRhZyA9IDI2MywK
CgoKCgoKICBrQVRTVUxhbmdSZWdpb25UYWcgPSAyNjQsCgoKCgoKCgogIGtBVFNVVmVydGljYWxD
aGFyYWN0ZXJUYWcgPSAyNjUsCgoKCgoKICBrQVRTVUltcG9zZVdpZHRoVGFnID0gMjY2LAoKCgoK
ICBrQVRTVUJlZm9yZVdpdGhTdHJlYW1TaGlmdFRhZyA9IDI2NywKCgoKCiAga0FUU1VBZnRlcldp
dGhTdHJlYW1TaGlmdFRhZyA9IDI2OCwKCgoKCiAga0FUU1VDcm9zc1N0cmVhbVNoaWZ0VGFnID0g
MjY5LAoKCgoKCiAga0FUU1VUcmFja2luZ1RhZyA9IDI3MCwKCgoKCiAga0FUU1VIYW5naW5nSW5o
aWJpdEZhY3RvclRhZyA9IDI3MSwKCgoKCiAga0FUU1VLZXJuaW5nSW5oaWJpdEZhY3RvclRhZyA9
IDI3MiwKCgoKCgogIGtBVFNVRGVjb21wb3NpdGlvbkZhY3RvclRhZyA9IDI3MywKCgoKCgoKCiAg
a0FUU1VCYXNlbGluZUNsYXNzVGFnID0gMjc0LAoKCgoKCgogIGtBVFNVUHJpb3JpdHlKdXN0T3Zl
cnJpZGVUYWcgPSAyNzUsCgoKCgoKCiAga0FUU1VOb0xpZ2F0dXJlU3BsaXRUYWcgPSAyNzYsCgoK
CgoKCiAga0FUU1VOb0NhcmV0QW5nbGVUYWcgPSAyNzcsCgoKCgoKCiAga0FUU1VTdXBwcmVzc0Ny
b3NzS2VybmluZ1RhZyA9IDI3OCwKCgoKCgoKICBrQVRTVU5vT3B0aWNhbEFsaWdubWVudFRhZyA9
IDI3OSwKCgoKCgoKICBrQVRTVUZvcmNlSGFuZ2luZ1RhZyA9IDI4MCwKCgoKCgoKICBrQVRTVU5v
U3BlY2lhbEp1c3RpZmljYXRpb25UYWcgPSAyODEsCgoKCgoKCiAga0FUU1VTdHlsZVRleHRMb2Nh
dG9yVGFnID0gMjgyLAoKCgoKCgoKICBrQVRTVVN0eWxlUmVuZGVyaW5nT3B0aW9uc1RhZyA9IDI4
MywKIyA1MTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVz
LmgiIDMKICBrQVRTVUFzY2VudFRhZyA9IDI4NCwKIyA1MjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3
b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgiIDMKICBrQVRTVURlc2NlbnRUYWcgPSAyODUs
CiMgNTM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVUeXBlcy5o
IiAzCiAga0FUU1VMZWFkaW5nVGFnID0gMjg2LAoKCgoKCgogIGtBVFNVR2x5cGhTZWxlY3RvclRh
ZyA9IDI4NywKCgoKCgoKICBrQVRTVVJHQkFscGhhQ29sb3JUYWcgPSAyODgsCgoKCgoKCgogIGtB
VFNVRm9udE1hdHJpeFRhZyA9IDI4OSwKCgoKCgoKICBrQVRTVVN0eWxlVW5kZXJsaW5lQ291bnRP
cHRpb25UYWcgPSAyOTAsCgoKCgoKCiAga0FUU1VTdHlsZVVuZGVybGluZUNvbG9yT3B0aW9uVGFn
ID0gMjkxLAoKCgoKCiAga0FUU1VTdHlsZVN0cmlrZVRocm91Z2hUYWcgPSAyOTIsCgoKCgoKCiAg
a0FUU1VTdHlsZVN0cmlrZVRocm91Z2hDb3VudE9wdGlvblRhZyA9IDI5MywKCgoKCgoKICBrQVRT
VVN0eWxlU3RyaWtlVGhyb3VnaENvbG9yT3B0aW9uVGFnID0gMjk0LAoKCgoKCgogIGtBVFNVU3R5
bGVEcm9wU2hhZG93VGFnID0gMjk1LAoKCgoKCiAga0FUU1VTdHlsZURyb3BTaGFkb3dCbHVyT3B0
aW9uVGFnID0gMjk2LAoKCgoKCgogIGtBVFNVU3R5bGVEcm9wU2hhZG93T2Zmc2V0T3B0aW9uVGFn
ID0gMjk3LAoKCgoKCiAga0FUU1VTdHlsZURyb3BTaGFkb3dDb2xvck9wdGlvblRhZyA9IDI5OCwK
CgoKCgogIGtBVFNVTWF4U3R5bGVUYWcgPSAyOTksCgoKCgoKCiAga0FUU1VMYW5ndWFnZVRhZyA9
IDI2NCwKICBrQVRTVU1heEFUU1VJVGFnVmFsdWUgPSA2NTUzNQp9OwojIDY0MSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIgMwp0eXBlZGVmIHZvaWQg
KiBBVFNVQXR0cmlidXRlVmFsdWVQdHI7CnR5cGVkZWYgY29uc3Qgdm9pZCAqIENvbnN0QVRTVUF0
dHJpYnV0ZVZhbHVlUHRyOwojIDY2MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9B
VFNVbmljb2RlVHlwZXMuaCIgMwpzdHJ1Y3QgQVRTVUF0dHJpYnV0ZUluZm8gewogIEFUU1VBdHRy
aWJ1dGVUYWcgZlRhZzsKICBCeXRlQ291bnQgZlZhbHVlU2l6ZTsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
QVRTVUF0dHJpYnV0ZUluZm8gQVRTVUF0dHJpYnV0ZUluZm87CiMgNjc5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVUeXBlcy5oIiAzCnN0cnVjdCBBVFNVQ2FyZXQg
ewogIEZpeGVkIGZYOwogIEZpeGVkIGZZOwogIEZpeGVkIGZEZWx0YVg7CiAgRml4ZWQgZkRlbHRh
WTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQVRTVUNhcmV0IEFUU1VDYXJldDsKIyA2OTYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgiIDMKdHlwZWRlZiBVSW50
MTYgQVRTVUN1cnNvck1vdmVtZW50VHlwZTsKZW51bSB7CgoKCgoKICBrQVRTVUJ5Q2hhcmFjdGVy
ID0gMCwKCgoKCgogIGtBVFNVQnlUeXBvZ3JhcGhpY0NsdXN0ZXIgPSAxLAoKCgoKICBrQVRTVUJ5
V29yZCA9IDIsCgoKCgogIGtBVFNVQnlDaGFyYWN0ZXJDbHVzdGVyID0gMywKCgoKCiAga0FUU1VC
eUNsdXN0ZXIgPSAxCn07CiMgNzQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FU
U1VuaWNvZGVUeXBlcy5oIiAzCnR5cGVkZWYgVUludDMyIEFUU1VMaW5lVHJ1bmNhdGlvbjsKZW51
bSB7CiAga0FUU1VUcnVuY2F0ZU5vbmUgPSAwLAogIGtBVFNVVHJ1bmNhdGVTdGFydCA9IDEsCiAg
a0FUU1VUcnVuY2F0ZUVuZCA9IDIsCiAga0FUU1VUcnVuY2F0ZU1pZGRsZSA9IDMsCiAga0FUU1VU
cnVuY2F0ZVNwZWNpZmljYXRpb25NYXNrID0gMHgwMDAwMDAwNywKICBrQVRTVVRydW5jRmVhdE5v
U3F1aXNoaW5nID0gMHgwMDAwMDAwOAp9OwojIDc2NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsv
SGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIgMwp0eXBlZGVmIFVJbnQxNiBBVFNVU3R5bGVMaW5l
Q291bnRUeXBlOwplbnVtIHsKICBrQVRTVVN0eWxlU2luZ2xlTGluZUNvdW50ID0gMSwKICBrQVRT
VVN0eWxlRG91YmxlTGluZUNvdW50ID0gMgp9OwojIDc4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdv
cmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIgMwp0eXBlZGVmIFVJbnQxNiBBVFNVVmVydGlj
YWxDaGFyYWN0ZXJUeXBlOwplbnVtIHsKICBrQVRTVVN0cm9uZ2x5SG9yaXpvbnRhbCA9IDAsCiAg
a0FUU1VTdHJvbmdseVZlcnRpY2FsID0gMQp9OwojIDc5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdv
cmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIgMwp0eXBlZGVmIFVJbnQxNiBBVFNVU3R5bGVD
b21wYXJpc29uOwplbnVtIHsKICBrQVRTVVN0eWxlVW5lcXVhbCA9IDAsCiAga0FUU1VTdHlsZUNv
bnRhaW5zID0gMSwKICBrQVRTVVN0eWxlRXF1YWxzID0gMiwKICBrQVRTVVN0eWxlQ29udGFpbmVk
QnkgPSAzCn07CiMgODE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNv
ZGVUeXBlcy5oIiAzCnR5cGVkZWYgVUludDE2IEFUU1VGb250RmFsbGJhY2tNZXRob2Q7CmVudW0g
ewoKCgoKCiAga0FUU1VEZWZhdWx0Rm9udEZhbGxiYWNrcyA9IDAsCgoKCgoKICBrQVRTVUxhc3RS
ZXNvcnRPbmx5RmFsbGJhY2sgPSAxLAojIDg0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVh
ZGVycy9BVFNVbmljb2RlVHlwZXMuaCIgMwogIGtBVFNVU2VxdWVudGlhbEZhbGxiYWNrc1ByZWZl
cnJlZCA9IDIsCiMgODUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNv
ZGVUeXBlcy5oIiAzCiAga0FUU1VTZXF1ZW50aWFsRmFsbGJhY2tzRXhjbHVzaXZlID0gMwp9Owoj
IDg3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIg
Mwp0eXBlZGVmIFVJbnQxNiBBVFNVVGFiVHlwZTsKZW51bSB7CiAga0FUU1VMZWZ0VGFiID0gMCwK
ICBrQVRTVUNlbnRlclRhYiA9IDEsCiAga0FUU1VSaWdodFRhYiA9IDIsCiAga0FUU1VEZWNpbWFs
VGFiID0gMywKICBrQVRTVU51bWJlclRhYlR5cGVzID0gNAp9OwojIDg4OSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9R
RC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIgMwpzdHJ1Y3QgQVRTVVRhYiB7
CiAgQVRTVVRleHRNZWFzdXJlbWVudCB0YWJQb3NpdGlvbjsKICBBVFNVVGFiVHlwZSB0YWJUeXBl
Owp9Owp0eXBlZGVmIHN0cnVjdCBBVFNVVGFiIEFUU1VUYWI7CiMgOTAzICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVUeXBlcy5oIiAzCnN0cnVjdCBBVFNVUkdCQWxw
aGFDb2xvciB7CiAgZmxvYXQgcmVkOwogIGZsb2F0IGdyZWVuOwogIGZsb2F0IGJsdWU7CiAgZmxv
YXQgYWxwaGE7Cn07CnR5cGVkZWYgc3RydWN0IEFUU1VSR0JBbHBoYUNvbG9yIEFUU1VSR0JBbHBo
YUNvbG9yOwojIDkyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2Rl
VHlwZXMuaCIgMwp0eXBlZGVmIFVJbnQxNiBHbHlwaENvbGxlY3Rpb247CmVudW0gewogIGtHbHlw
aENvbGxlY3Rpb25HSUQgPSAwLAogIGtHbHlwaENvbGxlY3Rpb25BZG9iZUNOUzEgPSAxLAogIGtH
bHlwaENvbGxlY3Rpb25BZG9iZUdCMSA9IDIsCiAga0dseXBoQ29sbGVjdGlvbkFkb2JlSmFwYW4x
ID0gMywKICBrR2x5cGhDb2xsZWN0aW9uQWRvYmVKYXBhbjIgPSA0LAogIGtHbHlwaENvbGxlY3Rp
b25BZG9iZUtvcmVhMSA9IDUsCiAga0dseXBoQ29sbGVjdGlvblVuc3BlY2lmaWVkID0gMHhGRgp9
OwojIDk0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMu
aCIgMwpzdHJ1Y3QgQVRTVUdseXBoU2VsZWN0b3IgewoKCgoKCiAgR2x5cGhDb2xsZWN0aW9uIGNv
bGxlY3Rpb247CgoKCgoKCiAgR2x5cGhJRCBnbHlwaElEOwp9Owp0eXBlZGVmIHN0cnVjdCBBVFNV
R2x5cGhTZWxlY3RvciBBVFNVR2x5cGhTZWxlY3RvcjsKIyA5NzQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJh
bWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgiIDMKc3RydWN0IEFUU1VHbHlwaEluZm8g
ewogIEdseXBoSUQgZ2x5cGhJRDsKICBVSW50MTYgcmVzZXJ2ZWQ7CiAgVUludDMyIGxheW91dEZs
YWdzOwogIFVuaUNoYXJBcnJheU9mZnNldCBjaGFySW5kZXg7CiAgQVRTVVN0eWxlIHN0eWxlOwog
IEZsb2F0MzIgZGVsdGFZOwogIEZsb2F0MzIgaWRlYWxYOwogIFNJbnQxNiBzY3JlZW5YOwogIFNJ
bnQxNiBjYXJldFg7Cn07CnR5cGVkZWYgc3RydWN0IEFUU1VHbHlwaEluZm8gQVRTVUdseXBoSW5m
bzsKIyAxMDAyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVUeXBl
cy5oIiAzCnN0cnVjdCBBVFNVR2x5cGhJbmZvQXJyYXkgewogIEFUU1VUZXh0TGF5b3V0IGxheW91
dDsKICBJdGVtQ291bnQgbnVtR2x5cGhzOwogIEFUU1VHbHlwaEluZm8gZ2x5cGhzWzFdOwp9Owp0
eXBlZGVmIHN0cnVjdCBBVFNVR2x5cGhJbmZvQXJyYXkgQVRTVUdseXBoSW5mb0FycmF5OwojIDEw
MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgiIDMK
dHlwZWRlZiBVSW50MzIgQVRTVUhpZ2hsaWdodE1ldGhvZDsKZW51bSB7CiAga0ludmVydEhpZ2hs
aWdodGluZyA9IDAsCiAga1JlZHJhd0hpZ2hsaWdodGluZyA9IDEKfTsKIyAxMDQ2ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVUeXBlcy5oIiAzCnR5cGVkZWYgVUlu
dDMyIEFUU1VCYWNrZ3JvdW5kRGF0YVR5cGU7CmVudW0gewogIGtBVFNVQmFja2dyb3VuZENvbG9y
ID0gMCwKICBrQVRTVUJhY2tncm91bmRDYWxsYmFjayA9IDEKfTsKIyAxMDYzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVUeXBlcy5oIiAzCnR5cGVkZWYgQVRTVVJH
QkFscGhhQ29sb3IgQVRTVUJhY2tncm91bmRDb2xvcjsKIyAxMTEwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZy
YW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVUeXBlcy5oIiAzCnR5cGVkZWYgQm9vbGVhbiAoICog
UmVkcmF3QmFja2dyb3VuZFByb2NQdHIpKEFUU1VUZXh0TGF5b3V0IGlMYXlvdXQsIFVuaUNoYXJB
cnJheU9mZnNldCBpVGV4dE9mZnNldCwgVW5pQ2hhckNvdW50IGlUZXh0TGVuZ3RoLCBBVFNUcmFw
ZXpvaWQgaVVuaGlnaGxpZ2h0QXJlYVtdLCBJdGVtQ291bnQgaVRyYXBlem9pZENvdW50KTsKdHlw
ZWRlZiBSZWRyYXdCYWNrZ3JvdW5kUHJvY1B0ciBSZWRyYXdCYWNrZ3JvdW5kVVBQOwojIDExMjAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgiIDMKZXh0
ZXJuIFJlZHJhd0JhY2tncm91bmRVUFAKTmV3UmVkcmF3QmFja2dyb3VuZFVQUChSZWRyYXdCYWNr
Z3JvdW5kUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoj
IDExMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgi
IDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVJlZHJhd0JhY2tncm91bmRVUFAoUmVkcmF3QmFja2dyb3Vu
ZFVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTE0MiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIgMwpleHRlcm4gQm9v
bGVhbgpJbnZva2VSZWRyYXdCYWNrZ3JvdW5kVVBQKAogIEFUU1VUZXh0TGF5b3V0IGlMYXlvdXQs
CiAgVW5pQ2hhckFycmF5T2Zmc2V0IGlUZXh0T2Zmc2V0LAogIFVuaUNoYXJDb3VudCBpVGV4dExl
bmd0aCwKICBBVFNUcmFwZXpvaWQgaVVuaGlnaGxpZ2h0QXJlYVtdLAogIEl0ZW1Db3VudCBpVHJh
cGV6b2lkQ291bnQsCiAgUmVkcmF3QmFja2dyb3VuZFVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9f
KChkZXByZWNhdGVkKSk7CgoKCiAgICBpbmxpbmUgUmVkcmF3QmFja2dyb3VuZFVQUCBOZXdSZWRy
YXdCYWNrZ3JvdW5kVVBQKFJlZHJhd0JhY2tncm91bmRQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJl
dHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVJlZHJhd0JhY2tncm91
bmRVUFAoUmVkcmF3QmFja2dyb3VuZFVQUCkgeyB9CiAgICBpbmxpbmUgQm9vbGVhbiBJbnZva2VS
ZWRyYXdCYWNrZ3JvdW5kVVBQKEFUU1VUZXh0TGF5b3V0IGlMYXlvdXQsIFVuaUNoYXJBcnJheU9m
ZnNldCBpVGV4dE9mZnNldCwgVW5pQ2hhckNvdW50IGlUZXh0TGVuZ3RoLCBBVFNUcmFwZXpvaWQg
aVVuaGlnaGxpZ2h0QXJlYVtdLCBJdGVtQ291bnQgaVRyYXBlem9pZENvdW50LCBSZWRyYXdCYWNr
Z3JvdW5kVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoaUxheW91dCwgaVRleHRPZmZz
ZXQsIGlUZXh0TGVuZ3RoLCBpVW5oaWdobGlnaHRBcmVhLCBpVHJhcGV6b2lkQ291bnQpOyB9CiMg
MTE4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIg
Mwp1bmlvbiBBVFNVQmFja2dyb3VuZERhdGEgewoKCgoKICBBVFNVQmFja2dyb3VuZENvbG9yIGJh
Y2tncm91bmRDb2xvcjsKCgoKCgogIFJlZHJhd0JhY2tncm91bmRVUFAgYmFja2dyb3VuZFVQUDsK
fTsKdHlwZWRlZiB1bmlvbiBBVFNVQmFja2dyb3VuZERhdGEgQVRTVUJhY2tncm91bmREYXRhOwoj
IDEyMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZVR5cGVzLmgi
IDMKc3RydWN0IEFUU1VVbmhpZ2hsaWdodERhdGEgewoKCgoKCgoKICBBVFNVQmFja2dyb3VuZERh
dGFUeXBlIGRhdGFUeXBlOwoKCgoKCgogIEFUU1VCYWNrZ3JvdW5kRGF0YSB1bmhpZ2hsaWdodERh
dGE7Cn07CnR5cGVkZWYgc3RydWN0IEFUU1VVbmhpZ2hsaWdodERhdGEgQVRTVVVuaGlnaGxpZ2h0
RGF0YTsKIyAxMjQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVU
eXBlcy5oIiAzCmVudW0gewoKCgoKICBrQVRTVUxlZnRUb1JpZ2h0QmFzZURpcmVjdGlvbiA9IDAs
CgoKCgogIGtBVFNVUmlnaHRUb0xlZnRCYXNlRGlyZWN0aW9uID0gMQp9OwoKI2RlZmluZSBrQVRT
VVN0YXJ0QWxpZ25tZW50ICgoRnJhY3QpIDB4MDAwMDAwMDBMKQojZGVmaW5lIGtBVFNVRW5kQWxp
Z25tZW50ICgoRnJhY3QpIDB4NDAwMDAwMDBMKQojZGVmaW5lIGtBVFNVQ2VudGVyQWxpZ25tZW50
ICgoRnJhY3QpIDB4MjAwMDAwMDBMKQojZGVmaW5lIGtBVFNVTm9KdXN0aWZpY2F0aW9uICgoRnJh
Y3QpIDB4MDAwMDAwMDBMKQojZGVmaW5lIGtBVFNVRnVsbEp1c3RpZmljYXRpb24gKChGcmFjdCkg
MHg0MDAwMDAwMEwpCgoKCgoKCgplbnVtIHsKICBrQVRTVUludmFsaWRGb250SUQgPSAwCn07CiMg
MTI4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIg
MwplbnVtIHsKICBrQVRTVVVzZUxpbmVDb250cm9sV2lkdGggPSAweDdGRkZGRkZGCn07CiMgMTI5
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIgMwpl
bnVtIHsKICBrQVRTVU5vU2VsZWN0b3IgPSAweDAwMDBGRkZGCn07CiMgMTMxMCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlVHlwZXMuaCIgMwplbnVtIHsKCgoKCiAg
a0FUU1VGcm9tVGV4dEJlZ2lubmluZyA9IChVSW50MzIpMHhGRkZGRkZGRiwKCgoKCiAga0FUU1VU
b1RleHRFbmQgPSAoVUludDMyKTB4RkZGRkZGRkYsCgoKCgogIGtBVFNVRnJvbVByZXZpb3VzTGF5
b3V0ID0gKFVJbnQzMikweEZGRkZGRkZFLAoKCgoKICBrQVRTVUZyb21Gb2xsb3dpbmdMYXlvdXQg
PSAoVUludDMyKTB4RkZGRkZGRkQKfTsKCgoKCgoKZW51bSB7CgoKCgoKCiAga0FUU1VVc2VHcmFm
UG9ydFBlbkxvYyA9IChVSW50MzIpMHhGRkZGRkZGRiwKCgoKCgoKICBrQVRTVUNsZWFyQWxsID0g
KFVJbnQzMikweEZGRkZGRkZGCn07CgoKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgMjEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZS5oIiAyIDMKCgoKIyAxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVPYmplY3RzLmgiIDEgMwojIDE3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVPYmplY3RzLmgiIDMK
I2RlZmluZSBfX0FUU1VOSUNPREVPQkpFQ1RTX18gCiMgMzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3
b3JrL0hlYWRlcnMvQVRTVW5pY29kZU9iamVjdHMuaCIgMwpleHRlcm4gIkMiIHsKIyA4MiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlT2JqZWN0cy5oIiAzCmV4dGVy
biBPU1N0YXR1cwpBVFNVQ3JlYXRlU3R5bGUoQVRTVVN0eWxlICogb1N0eWxlKSBfX2F0dHJpYnV0
ZV9fKChkZXByZWNhdGVkKSk7CiMgMTcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJz
L0FUU1VuaWNvZGVPYmplY3RzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFUU1VEaXNwb3NlU3R5bGUo
QVRTVVN0eWxlIGlTdHlsZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDY4MSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlT2JqZWN0cy5oIiAzCmV4dGVy
biBPU1N0YXR1cwpBVFNVU2V0QXR0cmlidXRlcygKICBBVFNVU3R5bGUgaVN0eWxlLAogIEl0ZW1D
b3VudCBpQXR0cmlidXRlQ291bnQsCiAgY29uc3QgQVRTVUF0dHJpYnV0ZVRhZyBpVGFnW10sCiAg
Y29uc3QgQnl0ZUNvdW50IGlWYWx1ZVNpemVbXSwKICBjb25zdCBBVFNVQXR0cmlidXRlVmFsdWVQ
dHIgaVZhbHVlW10pIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxMDc4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVPYmplY3RzLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCkFUU1VDcmVhdGVUZXh0TGF5b3V0V2l0aFRleHRQdHIoCiAgQ29uc3RVbmlDaGFyQXJy
YXlQdHIgaVRleHQsCiAgVW5pQ2hhckFycmF5T2Zmc2V0IGlUZXh0T2Zmc2V0LAogIFVuaUNoYXJD
b3VudCBpVGV4dExlbmd0aCwKICBVbmlDaGFyQ291bnQgaVRleHRUb3RhbExlbmd0aCwKICBJdGVt
Q291bnQgaU51bWJlck9mUnVucywKICBjb25zdCBVbmlDaGFyQ291bnQgaVJ1bkxlbmd0aHNbXSwK
ICBBVFNVU3R5bGUgaVN0eWxlc1tdLAogIEFUU1VUZXh0TGF5b3V0ICogb1RleHRMYXlvdXQpIF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxMTQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29y
ay9IZWFkZXJzL0FUU1VuaWNvZGVPYmplY3RzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFUU1VDbGVh
ckxheW91dENhY2hlKAogIEFUU1VUZXh0TGF5b3V0IGlUZXh0TGF5b3V0LAogIFVuaUNoYXJBcnJh
eU9mZnNldCBpTGluZVN0YXJ0KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTE5MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlT2JqZWN0cy5oIiAzCmV4
dGVybiBPU1N0YXR1cwpBVFNVRGlzcG9zZVRleHRMYXlvdXQoQVRTVVRleHRMYXlvdXQgaVRleHRM
YXlvdXQpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxMjM0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVPYmplY3RzLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CkFUU1VTZXRUZXh0TGF5b3V0UmVmQ29uKAogIEFUU1VUZXh0TGF5b3V0IGlUZXh0TGF5b3V0LAog
IFVSZWZDb24gaVJlZkNvbikgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDE1OTkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZU9iamVjdHMuaCIgMwpleHRl
cm4gT1NTdGF0dXMKQVRTVVRleHRNb3ZlZCgKICBBVFNVVGV4dExheW91dCBpVGV4dExheW91dCwK
ICBDb25zdFVuaUNoYXJBcnJheVB0ciBpTmV3TG9jYXRpb24pIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKIyAxNzE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNv
ZGVPYmplY3RzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFUU1VTZXRMYXlvdXRDb250cm9scygKICBB
VFNVVGV4dExheW91dCBpVGV4dExheW91dCwKICBJdGVtQ291bnQgaUF0dHJpYnV0ZUNvdW50LAog
IGNvbnN0IEFUU1VBdHRyaWJ1dGVUYWcgaVRhZ1tdLAogIGNvbnN0IEJ5dGVDb3VudCBpVmFsdWVT
aXplW10sCiAgY29uc3QgQVRTVUF0dHJpYnV0ZVZhbHVlUHRyIGlWYWx1ZVtdKSBfX2F0dHJpYnV0
ZV9fKChkZXByZWNhdGVkKSk7CiMgMjM0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVy
cy9BVFNVbmljb2RlT2JqZWN0cy5oIiAzCmV4dGVybiBPU1N0YXR1cwpBVFNVU2V0UnVuU3R5bGUo
CiAgQVRTVVRleHRMYXlvdXQgaVRleHRMYXlvdXQsCiAgQVRTVVN0eWxlIGlTdHlsZSwKICBVbmlD
aGFyQXJyYXlPZmZzZXQgaVJ1blN0YXJ0LAogIFVuaUNoYXJDb3VudCBpUnVuTGVuZ3RoKSBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjg3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsv
SGVhZGVycy9BVFNVbmljb2RlT2JqZWN0cy5oIiAzCmV4dGVybiBPU1N0YXR1cwpBVFNVTWF0Y2hG
b250c1RvVGV4dCgKICBBVFNVVGV4dExheW91dCBpVGV4dExheW91dCwKICBVbmlDaGFyQXJyYXlP
ZmZzZXQgaVRleHRTdGFydCwKICBVbmlDaGFyQ291bnQgaVRleHRMZW5ndGgsCiAgQVRTVUZvbnRJ
RCAqIG9Gb250SUQsCiAgVW5pQ2hhckFycmF5T2Zmc2V0ICogb0NoYW5nZWRPZmZzZXQsCiAgVW5p
Q2hhckNvdW50ICogb0NoYW5nZWRMZW5ndGgpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsK
IyAyOTE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVPYmplY3Rz
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFUU1VTZXRUcmFuc2llbnRGb250TWF0Y2hpbmcoCiAgQVRT
VVRleHRMYXlvdXQgaVRleHRMYXlvdXQsCiAgQm9vbGVhbiBpVHJhbnNpZW50Rm9udE1hdGNoaW5n
KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMzEyOCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFt
ZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlT2JqZWN0cy5oIiAzCn0KIyAyNSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9R
RC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
UUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZURyYXdpbmcuaCIgMSAzCiMgMTcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZURyYXdpbmcuaCIgMwojZGVmaW5l
IF9fQVRTVU5JQ09ERURSQVdJTkdfXyAKIyAzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVh
ZGVycy9BVFNVbmljb2RlRHJhd2luZy5oIiAzCmV4dGVybiAiQyIgewojIDEyNCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlRHJhd2luZy5oIiAzCmV4dGVybiBPU1N0
YXR1cwpBVFNVRHJhd1RleHQoCiAgQVRTVVRleHRMYXlvdXQgaVRleHRMYXlvdXQsCiAgVW5pQ2hh
ckFycmF5T2Zmc2V0IGlMaW5lT2Zmc2V0LAogIFVuaUNoYXJDb3VudCBpTGluZUxlbmd0aCwKICBB
VFNVVGV4dE1lYXN1cmVtZW50IGlMb2NhdGlvblgsCiAgQVRTVVRleHRNZWFzdXJlbWVudCBpTG9j
YXRpb25ZKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNDQ2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVEcmF3aW5nLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CkFUU1VHZXRHbHlwaEJvdW5kcygKICBBVFNVVGV4dExheW91dCBpVGV4dExheW91dCwKICBBVFNV
VGV4dE1lYXN1cmVtZW50IGlUZXh0QmFzZVBvaW50WCwKICBBVFNVVGV4dE1lYXN1cmVtZW50IGlU
ZXh0QmFzZVBvaW50WSwKICBVbmlDaGFyQXJyYXlPZmZzZXQgaUJvdW5kc0NoYXJTdGFydCwKICBV
bmlDaGFyQ291bnQgaUJvdW5kc0NoYXJMZW5ndGgsCiAgVUludDE2IGlUeXBlT2ZCb3VuZHMsCiAg
SXRlbUNvdW50IGlNYXhOdW1iZXJPZkJvdW5kcywKICBBVFNUcmFwZXpvaWQgb0dseXBoQm91bmRz
W10sCiAgSXRlbUNvdW50ICogb0FjdHVhbE51bWJlck9mQm91bmRzKSBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7CiMgMTI5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNV
bmljb2RlRHJhd2luZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpBVFNVUG9zaXRpb25Ub09mZnNldCgK
ICBBVFNVVGV4dExheW91dCBpVGV4dExheW91dCwKICBBVFNVVGV4dE1lYXN1cmVtZW50IGlMb2Nh
dGlvblgsCiAgQVRTVVRleHRNZWFzdXJlbWVudCBpTG9jYXRpb25ZLAogIFVuaUNoYXJBcnJheU9m
ZnNldCAqIGlvUHJpbWFyeU9mZnNldCwKICBCb29sZWFuICogb0lzTGVhZGluZywKICBVbmlDaGFy
QXJyYXlPZmZzZXQgKiBvU2Vjb25kYXJ5T2Zmc2V0KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7CiMgMTg0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlRHJh
d2luZy5oIiAzCn0KIyAyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmlj
b2RlLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5p
Y29kZUZvbnRzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FU
U1VuaWNvZGVGb250cy5oIiAzCiNkZWZpbmUgX19BVFNVTklDT0RFRk9OVFNfXyAKIyAzNSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlRm9udHMuaCIgMwpleHRlcm4g
IkMiIHsKIyA5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlRm9u
dHMuaCIgMwpleHRlcm4gT1NTdGF0dXMKQVRTVVNldEZvbnRGZWF0dXJlcygKICBBVFNVU3R5bGUg
aVN0eWxlLAogIEl0ZW1Db3VudCBpRmVhdHVyZUNvdW50LAogIGNvbnN0IEFUU1VGb250RmVhdHVy
ZVR5cGUgaVR5cGVbXSwKICBjb25zdCBBVFNVRm9udEZlYXR1cmVTZWxlY3RvciBpU2VsZWN0b3Jb
XSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDE4NTAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJh
bWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZUZvbnRzLmgiIDMKfQojIDMzICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9R
RC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlR2x5cGhzLmgiIDEgMwojIDE3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVHbHlwaHMuaCIgMwojZGVmaW5lIF9f
QVRTVU5JQ09ERUdMWVBIU19fIAojIDM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJz
L0FUU1VuaWNvZGVHbHlwaHMuaCIgMwpleHRlcm4gIkMiIHsKIyAyNjAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQu
ZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZUdseXBocy5oIiAzCnR5cGVkZWYgT1NTdGF0dXMg
KCAqIEFUU1F1YWRyYXRpY05ld1BhdGhQcm9jUHRyKSh2b2lkICogY2FsbEJhY2tEYXRhUHRyKTsK
dHlwZWRlZiBBVFNRdWFkcmF0aWNOZXdQYXRoUHJvY1B0ciBBVFNRdWFkcmF0aWNOZXdQYXRoVVBQ
OwojIDI3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlR2x5cGhz
LmgiIDMKZXh0ZXJuIEFUU1F1YWRyYXRpY05ld1BhdGhVUFAKTmV3QVRTUXVhZHJhdGljTmV3UGF0
aFVQUChBVFNRdWFkcmF0aWNOZXdQYXRoUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVf
XygoZGVwcmVjYXRlZCkpOwojIDI4MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9B
VFNVbmljb2RlR2x5cGhzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUFUU1F1YWRyYXRpY05ld1Bh
dGhVUFAoQVRTUXVhZHJhdGljTmV3UGF0aFVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CiMgMjkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNv
ZGVHbHlwaHMuaCIgMwpleHRlcm4gT1NTdGF0dXMKSW52b2tlQVRTUXVhZHJhdGljTmV3UGF0aFVQ
UCgKICB2b2lkICogY2FsbEJhY2tEYXRhUHRyLAogIEFUU1F1YWRyYXRpY05ld1BhdGhVUFAgdXNl
clVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCgogICAgaW5saW5lIEFUU1F1YWRy
YXRpY05ld1BhdGhVUFAgTmV3QVRTUXVhZHJhdGljTmV3UGF0aFVQUChBVFNRdWFkcmF0aWNOZXdQ
YXRoUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGlu
ZSB2b2lkIERpc3Bvc2VBVFNRdWFkcmF0aWNOZXdQYXRoVVBQKEFUU1F1YWRyYXRpY05ld1BhdGhV
UFApIHsgfQogICAgaW5saW5lIE9TU3RhdHVzIEludm9rZUFUU1F1YWRyYXRpY05ld1BhdGhVUFAo
dm9pZCAqIGNhbGxCYWNrRGF0YVB0ciwgQVRTUXVhZHJhdGljTmV3UGF0aFVQUCB1c2VyVVBQKSB7
IHJldHVybiAoKnVzZXJVUFApKGNhbGxCYWNrRGF0YVB0cik7IH0KIyAzMzcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
UUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZUdseXBocy5oIiAzCnR5cGVkZWYgT1NTdGF0
dXMgKCAqIEFUU1F1YWRyYXRpY0xpbmVQcm9jUHRyKShjb25zdCBGbG9hdDMyUG9pbnQgKnB0MSwg
Y29uc3QgRmxvYXQzMlBvaW50ICpwdDIsIHZvaWQgKmNhbGxCYWNrRGF0YVB0cik7CnR5cGVkZWYg
QVRTUXVhZHJhdGljTGluZVByb2NQdHIgQVRTUXVhZHJhdGljTGluZVVQUDsKIyAzNDcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZUdseXBocy5oIiAzCmV4dGVybiBB
VFNRdWFkcmF0aWNMaW5lVVBQCk5ld0FUU1F1YWRyYXRpY0xpbmVVUFAoQVRTUXVhZHJhdGljTGlu
ZVByb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAzNTgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZUdseXBocy5oIiAzCmV4
dGVybiB2b2lkCkRpc3Bvc2VBVFNRdWFkcmF0aWNMaW5lVVBQKEFUU1F1YWRyYXRpY0xpbmVVUFAg
dXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDM2OSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9R
RC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlR2x5cGhzLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
Ckludm9rZUFUU1F1YWRyYXRpY0xpbmVVUFAoCiAgY29uc3QgRmxvYXQzMlBvaW50ICogcHQxLAog
IGNvbnN0IEZsb2F0MzJQb2ludCAqIHB0MiwKICB2b2lkICogY2FsbEJhY2tEYXRhUHRyLAogIEFU
U1F1YWRyYXRpY0xpbmVVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoK
CgogICAgaW5saW5lIEFUU1F1YWRyYXRpY0xpbmVVUFAgTmV3QVRTUXVhZHJhdGljTGluZVVQUChB
VFNRdWFkcmF0aWNMaW5lUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7
IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VBVFNRdWFkcmF0aWNMaW5lVVBQKEFUU1F1YWRyYXRp
Y0xpbmVVUFApIHsgfQogICAgaW5saW5lIE9TU3RhdHVzIEludm9rZUFUU1F1YWRyYXRpY0xpbmVV
UFAoY29uc3QgRmxvYXQzMlBvaW50ICogcHQxLCBjb25zdCBGbG9hdDMyUG9pbnQgKiBwdDIsIHZv
aWQgKiBjYWxsQmFja0RhdGFQdHIsIEFUU1F1YWRyYXRpY0xpbmVVUFAgdXNlclVQUCkgeyByZXR1
cm4gKCp1c2VyVVBQKShwdDEsIHB0MiwgY2FsbEJhY2tEYXRhUHRyKTsgfQojIDQyMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlR2x5cGhzLmgiIDMKdHlwZWRlZiBP
U1N0YXR1cyAoICogQVRTUXVhZHJhdGljQ3VydmVQcm9jUHRyKShjb25zdCBGbG9hdDMyUG9pbnQg
KnB0MSwgY29uc3QgRmxvYXQzMlBvaW50ICpjb250cm9sUHQsIGNvbnN0IEZsb2F0MzJQb2ludCAq
cHQyLCB2b2lkICpjYWxsQmFja0RhdGFQdHIpOwp0eXBlZGVmIEFUU1F1YWRyYXRpY0N1cnZlUHJv
Y1B0ciBBVFNRdWFkcmF0aWNDdXJ2ZVVQUDsKIyA0MzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3Jr
L0hlYWRlcnMvQVRTVW5pY29kZUdseXBocy5oIiAzCmV4dGVybiBBVFNRdWFkcmF0aWNDdXJ2ZVVQ
UApOZXdBVFNRdWFkcmF0aWNDdXJ2ZVVQUChBVFNRdWFkcmF0aWNDdXJ2ZVByb2NQdHIgdXNlclJv
dXRpbmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA0NDIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQu
ZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZUdseXBocy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bv
c2VBVFNRdWFkcmF0aWNDdXJ2ZVVQUChBVFNRdWFkcmF0aWNDdXJ2ZVVQUCB1c2VyVVBQKSBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNDUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9I
ZWFkZXJzL0FUU1VuaWNvZGVHbHlwaHMuaCIgMwpleHRlcm4gT1NTdGF0dXMKSW52b2tlQVRTUXVh
ZHJhdGljQ3VydmVVUFAoCiAgY29uc3QgRmxvYXQzMlBvaW50ICogcHQxLAogIGNvbnN0IEZsb2F0
MzJQb2ludCAqIGNvbnRyb2xQdCwKICBjb25zdCBGbG9hdDMyUG9pbnQgKiBwdDIsCiAgdm9pZCAq
IGNhbGxCYWNrRGF0YVB0ciwKICBBVFNRdWFkcmF0aWNDdXJ2ZVVQUCB1c2VyVVBQKSBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCiAgICBpbmxpbmUgQVRTUXVhZHJhdGljQ3VydmVVUFAg
TmV3QVRTUXVhZHJhdGljQ3VydmVVUFAoQVRTUXVhZHJhdGljQ3VydmVQcm9jUHRyIHVzZXJSb3V0
aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUFUU1F1
YWRyYXRpY0N1cnZlVVBQKEFUU1F1YWRyYXRpY0N1cnZlVVBQKSB7IH0KICAgIGlubGluZSBPU1N0
YXR1cyBJbnZva2VBVFNRdWFkcmF0aWNDdXJ2ZVVQUChjb25zdCBGbG9hdDMyUG9pbnQgKiBwdDEs
IGNvbnN0IEZsb2F0MzJQb2ludCAqIGNvbnRyb2xQdCwgY29uc3QgRmxvYXQzMlBvaW50ICogcHQy
LCB2b2lkICogY2FsbEJhY2tEYXRhUHRyLCBBVFNRdWFkcmF0aWNDdXJ2ZVVQUCB1c2VyVVBQKSB7
IHJldHVybiAoKnVzZXJVUFApKHB0MSwgY29udHJvbFB0LCBwdDIsIGNhbGxCYWNrRGF0YVB0cik7
IH0KIyA0OTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZUdseXBo
cy5oIiAzCnR5cGVkZWYgT1NTdGF0dXMgKCAqIEFUU1F1YWRyYXRpY0Nsb3NlUGF0aFByb2NQdHIp
KHZvaWQgKiBjYWxsQmFja0RhdGFQdHIpOwp0eXBlZGVmIEFUU1F1YWRyYXRpY0Nsb3NlUGF0aFBy
b2NQdHIgQVRTUXVhZHJhdGljQ2xvc2VQYXRoVVBQOwojIDUwNSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFt
ZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlR2x5cGhzLmgiIDMKZXh0ZXJuIEFUU1F1YWRyYXRpY0Ns
b3NlUGF0aFVQUApOZXdBVFNRdWFkcmF0aWNDbG9zZVBhdGhVUFAoQVRTUXVhZHJhdGljQ2xvc2VQ
YXRoUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDUx
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlR2x5cGhzLmgiIDMK
ZXh0ZXJuIHZvaWQKRGlzcG9zZUFUU1F1YWRyYXRpY0Nsb3NlUGF0aFVQUChBVFNRdWFkcmF0aWND
bG9zZVBhdGhVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDUyNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlR2x5cGhzLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzCkludm9rZUFUU1F1YWRyYXRpY0Nsb3NlUGF0aFVQUCgKICB2b2lkICogY2Fs
bEJhY2tEYXRhUHRyLAogIEFUU1F1YWRyYXRpY0Nsb3NlUGF0aFVQUCB1c2VyVVBQKSBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCiAgICBpbmxpbmUgQVRTUXVhZHJhdGljQ2xvc2VQYXRo
VVBQIE5ld0FUU1F1YWRyYXRpY0Nsb3NlUGF0aFVQUChBVFNRdWFkcmF0aWNDbG9zZVBhdGhQcm9j
UHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQg
RGlzcG9zZUFUU1F1YWRyYXRpY0Nsb3NlUGF0aFVQUChBVFNRdWFkcmF0aWNDbG9zZVBhdGhVUFAp
IHsgfQogICAgaW5saW5lIE9TU3RhdHVzIEludm9rZUFUU1F1YWRyYXRpY0Nsb3NlUGF0aFVQUCh2
b2lkICogY2FsbEJhY2tEYXRhUHRyLCBBVFNRdWFkcmF0aWNDbG9zZVBhdGhVUFAgdXNlclVQUCkg
eyByZXR1cm4gKCp1c2VyVVBQKShjYWxsQmFja0RhdGFQdHIpOyB9CiMgNjYxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVHbHlwaHMuaCIgMwp0eXBlZGVmIE9TU3Rh
dHVzICggKiBBVFNDdWJpY01vdmVUb1Byb2NQdHIpKGNvbnN0IEZsb2F0MzJQb2ludCAqcHQsIHZv
aWQgKmNhbGxCYWNrRGF0YVB0cik7CnR5cGVkZWYgQVRTQ3ViaWNNb3ZlVG9Qcm9jUHRyIEFUU0N1
YmljTW92ZVRvVVBQOwojIDY3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNV
bmljb2RlR2x5cGhzLmgiIDMKZXh0ZXJuIEFUU0N1YmljTW92ZVRvVVBQCk5ld0FUU0N1YmljTW92
ZVRvVVBQKEFUU0N1YmljTW92ZVRvUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDY4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNV
bmljb2RlR2x5cGhzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUFUU0N1YmljTW92ZVRvVVBQKEFU
U0N1YmljTW92ZVRvVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA2
OTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZUdseXBocy5oIiAz
CmV4dGVybiBPU1N0YXR1cwpJbnZva2VBVFNDdWJpY01vdmVUb1VQUCgKICBjb25zdCBGbG9hdDMy
UG9pbnQgKiBwdCwKICB2b2lkICogY2FsbEJhY2tEYXRhUHRyLAogIEFUU0N1YmljTW92ZVRvVVBQ
IHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBBVFND
dWJpY01vdmVUb1VQUCBOZXdBVFNDdWJpY01vdmVUb1VQUChBVFNDdWJpY01vdmVUb1Byb2NQdHIg
dXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNw
b3NlQVRTQ3ViaWNNb3ZlVG9VUFAoQVRTQ3ViaWNNb3ZlVG9VUFApIHsgfQogICAgaW5saW5lIE9T
U3RhdHVzIEludm9rZUFUU0N1YmljTW92ZVRvVVBQKGNvbnN0IEZsb2F0MzJQb2ludCAqIHB0LCB2
b2lkICogY2FsbEJhY2tEYXRhUHRyLCBBVFNDdWJpY01vdmVUb1VQUCB1c2VyVVBQKSB7IHJldHVy
biAoKnVzZXJVUFApKHB0LCBjYWxsQmFja0RhdGFQdHIpOyB9CiMgNzM3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVHbHlwaHMuaCIgMwp0eXBlZGVmIE9TU3RhdHVz
ICggKiBBVFNDdWJpY0xpbmVUb1Byb2NQdHIpKGNvbnN0IEZsb2F0MzJQb2ludCAqcHQsIHZvaWQg
KmNhbGxCYWNrRGF0YVB0cik7CnR5cGVkZWYgQVRTQ3ViaWNMaW5lVG9Qcm9jUHRyIEFUU0N1Ymlj
TGluZVRvVVBQOwojIDc0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmlj
b2RlR2x5cGhzLmgiIDMKZXh0ZXJuIEFUU0N1YmljTGluZVRvVVBQCk5ld0FUU0N1YmljTGluZVRv
VVBQKEFUU0N1YmljTGluZVRvUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwojIDc1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmlj
b2RlR2x5cGhzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUFUU0N1YmljTGluZVRvVVBQKEFUU0N1
YmljTGluZVRvVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA3Njkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZUdseXBocy5oIiAzCmV4
dGVybiBPU1N0YXR1cwpJbnZva2VBVFNDdWJpY0xpbmVUb1VQUCgKICBjb25zdCBGbG9hdDMyUG9p
bnQgKiBwdCwKICB2b2lkICogY2FsbEJhY2tEYXRhUHRyLAogIEFUU0N1YmljTGluZVRvVVBQIHVz
ZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBBVFNDdWJp
Y0xpbmVUb1VQUCBOZXdBVFNDdWJpY0xpbmVUb1VQUChBVFNDdWJpY0xpbmVUb1Byb2NQdHIgdXNl
clJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3Nl
QVRTQ3ViaWNMaW5lVG9VUFAoQVRTQ3ViaWNMaW5lVG9VUFApIHsgfQogICAgaW5saW5lIE9TU3Rh
dHVzIEludm9rZUFUU0N1YmljTGluZVRvVVBQKGNvbnN0IEZsb2F0MzJQb2ludCAqIHB0LCB2b2lk
ICogY2FsbEJhY2tEYXRhUHRyLCBBVFNDdWJpY0xpbmVUb1VQUCB1c2VyVVBQKSB7IHJldHVybiAo
KnVzZXJVUFApKHB0LCBjYWxsQmFja0RhdGFQdHIpOyB9CiMgODIwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZy
YW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVHbHlwaHMuaCIgMwp0eXBlZGVmIE9TU3RhdHVzICgg
KiBBVFNDdWJpY0N1cnZlVG9Qcm9jUHRyKShjb25zdCBGbG9hdDMyUG9pbnQgKnB0MSwgY29uc3Qg
RmxvYXQzMlBvaW50ICpwdDIsIGNvbnN0IEZsb2F0MzJQb2ludCAqcHQzLCB2b2lkICpjYWxsQmFj
a0RhdGFQdHIpOwp0eXBlZGVmIEFUU0N1YmljQ3VydmVUb1Byb2NQdHIgQVRTQ3ViaWNDdXJ2ZVRv
VVBQOwojIDgzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlR2x5
cGhzLmgiIDMKZXh0ZXJuIEFUU0N1YmljQ3VydmVUb1VQUApOZXdBVFNDdWJpY0N1cnZlVG9VUFAo
QVRTQ3ViaWNDdXJ2ZVRvUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwojIDg0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2Rl
R2x5cGhzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUFUU0N1YmljQ3VydmVUb1VQUChBVFNDdWJp
Y0N1cnZlVG9VUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDg1MiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlR2x5cGhzLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzCkludm9rZUFUU0N1YmljQ3VydmVUb1VQUCgKICBjb25zdCBGbG9hdDMyUG9p
bnQgKiBwdDEsCiAgY29uc3QgRmxvYXQzMlBvaW50ICogcHQyLAogIGNvbnN0IEZsb2F0MzJQb2lu
dCAqIHB0MywKICB2b2lkICogY2FsbEJhY2tEYXRhUHRyLAogIEFUU0N1YmljQ3VydmVUb1VQUCB1
c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCiAgICBpbmxpbmUgQVRTQ3Vi
aWNDdXJ2ZVRvVVBQIE5ld0FUU0N1YmljQ3VydmVUb1VQUChBVFNDdWJpY0N1cnZlVG9Qcm9jUHRy
IHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlz
cG9zZUFUU0N1YmljQ3VydmVUb1VQUChBVFNDdWJpY0N1cnZlVG9VUFApIHsgfQogICAgaW5saW5l
IE9TU3RhdHVzIEludm9rZUFUU0N1YmljQ3VydmVUb1VQUChjb25zdCBGbG9hdDMyUG9pbnQgKiBw
dDEsIGNvbnN0IEZsb2F0MzJQb2ludCAqIHB0MiwgY29uc3QgRmxvYXQzMlBvaW50ICogcHQzLCB2
b2lkICogY2FsbEJhY2tEYXRhUHRyLCBBVFNDdWJpY0N1cnZlVG9VUFAgdXNlclVQUCkgeyByZXR1
cm4gKCp1c2VyVVBQKShwdDEsIHB0MiwgcHQzLCBjYWxsQmFja0RhdGFQdHIpOyB9CiMgODk0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVHbHlwaHMuaCIgMwp0eXBl
ZGVmIE9TU3RhdHVzICggKiBBVFNDdWJpY0Nsb3NlUGF0aFByb2NQdHIpKHZvaWQgKiBjYWxsQmFj
a0RhdGFQdHIpOwp0eXBlZGVmIEFUU0N1YmljQ2xvc2VQYXRoUHJvY1B0ciBBVFNDdWJpY0Nsb3Nl
UGF0aFVQUDsKIyA5MDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29k
ZUdseXBocy5oIiAzCmV4dGVybiBBVFNDdWJpY0Nsb3NlUGF0aFVQUApOZXdBVFNDdWJpY0Nsb3Nl
UGF0aFVQUChBVFNDdWJpY0Nsb3NlUGF0aFByb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKIyA5MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMv
QVRTVW5pY29kZUdseXBocy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VBVFNDdWJpY0Nsb3NlUGF0
aFVQUChBVFNDdWJpY0Nsb3NlUGF0aFVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7CiMgOTI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVH
bHlwaHMuaCIgMwpleHRlcm4gT1NTdGF0dXMKSW52b2tlQVRTQ3ViaWNDbG9zZVBhdGhVUFAoCiAg
dm9pZCAqIGNhbGxCYWNrRGF0YVB0ciwKICBBVFNDdWJpY0Nsb3NlUGF0aFVQUCB1c2VyVVBQKSBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCiAgICBpbmxpbmUgQVRTQ3ViaWNDbG9zZVBh
dGhVUFAgTmV3QVRTQ3ViaWNDbG9zZVBhdGhVUFAoQVRTQ3ViaWNDbG9zZVBhdGhQcm9jUHRyIHVz
ZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9z
ZUFUU0N1YmljQ2xvc2VQYXRoVVBQKEFUU0N1YmljQ2xvc2VQYXRoVVBQKSB7IH0KICAgIGlubGlu
ZSBPU1N0YXR1cyBJbnZva2VBVFNDdWJpY0Nsb3NlUGF0aFVQUCh2b2lkICogY2FsbEJhY2tEYXRh
UHRyLCBBVFNDdWJpY0Nsb3NlUGF0aFVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGNh
bGxCYWNrRGF0YVB0cik7IH0KIyAxMTYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJz
L0FUU1VuaWNvZGVHbHlwaHMuaCIgMwp9CiMgMzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hl
YWRlcnMvQVRTVW5pY29kZS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9I
ZWFkZXJzL0FUU1VuaWNvZGVGbGF0dGVuaW5nLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZy
YW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVGbGF0dGVuaW5nLmgiIDMKI2RlZmluZSBfX0FUU1VO
SUNPREVGTEFUVEVOSU5HX18gCiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMv
QVRTVW5pY29kZUZsYXR0ZW5pbmcuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVz
aCwgMikKCnR5cGVkZWYgVUludDMyIEFUU1VGbGF0dGVuZWREYXRhU3RyZWFtRm9ybWF0OwplbnVt
IHsKICBrQVRTVURhdGFTdHJlYW1Vbmljb2RlU3R5bGVkVGV4dCA9ICd1c3RsJwp9OwoKCgoKCgoK
dHlwZWRlZiBVSW50MzIgQVRTVUZsYXR0ZW5TdHlsZVJ1bk9wdGlvbnM7CmVudW0gewogIGtBVFNV
RmxhdHRlbk9wdGlvbk5vT3B0aW9uc01hc2sgPSAweDAwMDAwMDAwCn07CgoKCgoKCnR5cGVkZWYg
VUludDMyIEFUU1VVbkZsYXR0ZW5TdHlsZVJ1bk9wdGlvbnM7CmVudW0gewogIGtBVFNVVW5GbGF0
dGVuT3B0aW9uTm9PcHRpb25zTWFzayA9IDB4MDAwMDAwMDAKfTsKIyA4MiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9R
RC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlRmxhdHRlbmluZy5oIiAzCnN0cnVjdCBBVFNV
U3R5bGVSdW5JbmZvIHsKICBVSW50MzIgcnVuTGVuZ3RoOwogIFVJbnQzMiBzdHlsZU9iamVjdElu
ZGV4Owp9Owp0eXBlZGVmIHN0cnVjdCBBVFNVU3R5bGVSdW5JbmZvIEFUU1VTdHlsZVJ1bkluZm87
CiMgMTA2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVGbGF0dGVu
aW5nLmgiIDMKZW51bSB7CiAga0FUU0ZsYXREYXRhVXN0bFZlcnNpb24wID0gMCwKICBrQVRTRmxh
dERhdGFVc3RsVmVyc2lvbjEgPSAxLAogIGtBVFNGbGF0RGF0YVVzdGxWZXJzaW9uMiA9IDIsCiAg
a0FUU0ZsYXREYXRhVXN0bEN1cnJlbnRWZXJzaW9uID0ga0FUU0ZsYXREYXRhVXN0bFZlcnNpb24y
Cn07CiMgMTIxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVGbGF0
dGVuaW5nLmgiIDMKc3RydWN0IEFUU0ZsYXREYXRhTWFpbkhlYWRlckJsb2NrIHsKCgoKCiAgVUlu
dDMyIHZlcnNpb247CgoKCiAgVUludDMyIHNpemVPZkRhdGFCbG9jazsKCgoKICBVSW50MzIgb2Zm
c2V0VG9UZXh0TGF5b3V0czsKCgoKICBVSW50MzIgb2Zmc2V0VG9TdHlsZVJ1bnM7CgoKCiAgVUlu
dDMyIG9mZnNldFRvU3R5bGVMaXN0Owp9Owp0eXBlZGVmIHN0cnVjdCBBVFNGbGF0RGF0YU1haW5I
ZWFkZXJCbG9jayBBVFNGbGF0RGF0YU1haW5IZWFkZXJCbG9jazsKIyAxNTkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
UUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZUZsYXR0ZW5pbmcuaCIgMwpzdHJ1Y3QgQVRT
RmxhdERhdGFUZXh0TGF5b3V0RGF0YUhlYWRlciB7CgoKCiAgVUludDMyIHNpemVPZkxheW91dERh
dGE7CgoKICBVSW50MzIgdGV4dExheW91dExlbmd0aDsKCgoKCiAgVUludDMyIG9mZnNldFRvTGF5
b3V0Q29udHJvbHM7CgoKCgogIFVJbnQzMiBvZmZzZXRUb0xpbmVJbmZvOwoKCgoKCgoKfTsKdHlw
ZWRlZiBzdHJ1Y3QgQVRTRmxhdERhdGFUZXh0TGF5b3V0RGF0YUhlYWRlciBBVFNGbGF0RGF0YVRl
eHRMYXlvdXREYXRhSGVhZGVyOwoKCgoKCnN0cnVjdCBBVFNGbGF0RGF0YVRleHRMYXlvdXRIZWFk
ZXIgewoKCgoKICBVSW50MzIgbnVtRmxhdHRlbmVkVGV4dExheW91dHM7CgoKCgogIEFUU0ZsYXRE
YXRhVGV4dExheW91dERhdGFIZWFkZXIgZmxhdHRlbmVkVGV4dExheW91dHNbMV07Cn07CnR5cGVk
ZWYgc3RydWN0IEFUU0ZsYXREYXRhVGV4dExheW91dEhlYWRlciBBVFNGbGF0RGF0YVRleHRMYXlv
dXRIZWFkZXI7CgoKCgoKc3RydWN0IEFUU0ZsYXREYXRhTGF5b3V0Q29udHJvbHNEYXRhSGVhZGVy
IHsKCgoKICBVSW50MzIgbnVtYmVyT2ZMYXlvdXRDb250cm9sczsKIyAyMjIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
UUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZUZsYXR0ZW5pbmcuaCIgMwogIEFUU1VBdHRy
aWJ1dGVJbmZvIGNvbnRyb2xBcnJheVsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQVRTRmxhdERhdGFM
YXlvdXRDb250cm9sc0RhdGFIZWFkZXIgQVRTRmxhdERhdGFMYXlvdXRDb250cm9sc0RhdGFIZWFk
ZXI7CnN0cnVjdCBBVFNGbGF0RGF0YUxpbmVJbmZvRGF0YSB7CgoKICBVSW50MzIgbGluZUxlbmd0
aDsKCgoKICBVSW50MzIgbnVtYmVyT2ZMaW5lQ29udHJvbHM7CgoKCgp9Owp0eXBlZGVmIHN0cnVj
dCBBVFNGbGF0RGF0YUxpbmVJbmZvRGF0YSBBVFNGbGF0RGF0YUxpbmVJbmZvRGF0YTsKCgoKCgpz
dHJ1Y3QgQVRTRmxhdERhdGFMaW5lSW5mb0hlYWRlciB7CgoKCgoKICBVSW50MzIgbnVtYmVyT2ZM
aW5lczsKCgoKCiAgQVRTRmxhdERhdGFMaW5lSW5mb0RhdGEgbGluZUluZm9BcnJheVsxXTsKfTsK
dHlwZWRlZiBzdHJ1Y3QgQVRTRmxhdERhdGFMaW5lSW5mb0hlYWRlciBBVFNGbGF0RGF0YUxpbmVJ
bmZvSGVhZGVyOwojIDI3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmlj
b2RlRmxhdHRlbmluZy5oIiAzCnN0cnVjdCBBVFNGbGF0RGF0YVN0eWxlUnVuRGF0YUhlYWRlciB7
CgoKICBVSW50MzIgbnVtYmVyT2ZTdHlsZVJ1bnM7CgoKCgogIEFUU1VTdHlsZVJ1bkluZm8gc3R5
bGVSdW5BcnJheVsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQVRTRmxhdERhdGFTdHlsZVJ1bkRhdGFI
ZWFkZXIgQVRTRmxhdERhdGFTdHlsZVJ1bkRhdGFIZWFkZXI7CiMgMjk3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FE
LmZyYW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVGbGF0dGVuaW5nLmgiIDMKc3RydWN0IEFUU0Zs
YXREYXRhU3R5bGVMaXN0U3R5bGVEYXRhSGVhZGVyIHsKCgoKCiAgVUludDMyIHNpemVPZlN0eWxl
SW5mbzsKCgoKCiAgVUludDMyIG51bWJlck9mU2V0QXR0cmlidXRlczsKCgoKICBVSW50MzIgbnVt
YmVyT2ZTZXRGZWF0dXJlczsKCgoKICBVSW50MzIgbnVtYmVyT2ZTZXRWYXJpYXRpb25zOwojIDMz
OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlRmxhdHRlbmluZy5o
IiAzCn07CnR5cGVkZWYgc3RydWN0IEFUU0ZsYXREYXRhU3R5bGVMaXN0U3R5bGVEYXRhSGVhZGVy
IEFUU0ZsYXREYXRhU3R5bGVMaXN0U3R5bGVEYXRhSGVhZGVyOwoKCgoKCnN0cnVjdCBBVFNGbGF0
RGF0YVN0eWxlTGlzdEhlYWRlciB7CgoKICBVSW50MzIgbnVtYmVyT2ZTdHlsZXM7CgoKCgoKCiAg
QVRTRmxhdERhdGFTdHlsZUxpc3RTdHlsZURhdGFIZWFkZXIgc3R5bGVEYXRhQXJyYXlbMV07Cgp9
Owp0eXBlZGVmIHN0cnVjdCBBVFNGbGF0RGF0YVN0eWxlTGlzdEhlYWRlciBBVFNGbGF0RGF0YVN0
eWxlTGlzdEhlYWRlcjsKCgoKCgpzdHJ1Y3QgQVRTRmxhdERhdGFTdHlsZUxpc3RGZWF0dXJlRGF0
YSB7CgoKICBBVFNVRm9udEZlYXR1cmVUeXBlIHRoZUZlYXR1cmVUeXBlOwoKCiAgQVRTVUZvbnRG
ZWF0dXJlU2VsZWN0b3IgdGhlRmVhdHVyZVNlbGVjdG9yOwp9Owp0eXBlZGVmIHN0cnVjdCBBVFNG
bGF0RGF0YVN0eWxlTGlzdEZlYXR1cmVEYXRhIEFUU0ZsYXREYXRhU3R5bGVMaXN0RmVhdHVyZURh
dGE7CgoKCgoKCnN0cnVjdCBBVFNGbGF0RGF0YVN0eWxlTGlzdFZhcmlhdGlvbkRhdGEgewoKCiAg
QVRTVUZvbnRWYXJpYXRpb25BeGlzIHRoZVZhcmlhdGlvbkF4aXM7CgoKICBBVFNVRm9udFZhcmlh
dGlvblZhbHVlIHRoZVZhcmlhdGlvblZhbHVlOwp9Owp0eXBlZGVmIHN0cnVjdCBBVFNGbGF0RGF0
YVN0eWxlTGlzdFZhcmlhdGlvbkRhdGEgQVRTRmxhdERhdGFTdHlsZUxpc3RWYXJpYXRpb25EYXRh
OwojIDQwMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlRmxhdHRl
bmluZy5oIiAzCnR5cGVkZWYgVUludDMyIEFUU0ZsYXREYXRhRm9udFNwZWNpZmVyVHlwZTsKZW51
bSB7CgoKICBrQVRTRmxhdHRlbmVkRm9udFNwZWNpZmllclJhd05hbWVEYXRhID0gJ25hbWQnCn07
CgoKCgoKCnN0cnVjdCBBVFNGbGF0RGF0YUZvbnROYW1lRGF0YUhlYWRlciB7CgoKICBBVFNGbGF0
RGF0YUZvbnRTcGVjaWZlclR5cGUgbmFtZVNwZWNpZmllclR5cGU7CgoKCgoKICBVSW50MzIgbmFt
ZVNwZWNpZmllclNpemU7CgoKCgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBBVFNGbGF0RGF0YUZvbnRO
YW1lRGF0YUhlYWRlciBBVFNGbGF0RGF0YUZvbnROYW1lRGF0YUhlYWRlcjsKCgoKCgoKCnN0cnVj
dCBBVFNGbGF0RGF0YUZvbnRTcGVjUmF3TmFtZURhdGEgewoKCiAgRm9udE5hbWVDb2RlIGZvbnRO
YW1lVHlwZTsKCgoKCgogIEZvbnRQbGF0Zm9ybUNvZGUgZm9udE5hbWVQbGF0Zm9ybTsKCgoKCgog
IEZvbnRTY3JpcHRDb2RlIGZvbnROYW1lU2NyaXB0OwoKCgoKICBGb250TGFuZ3VhZ2VDb2RlIGZv
bnROYW1lTGFuZ3VhZ2U7CgoKCiAgVUludDMyIGZvbnROYW1lTGVuZ3RoOwoKCgoKfTsKdHlwZWRl
ZiBzdHJ1Y3QgQVRTRmxhdERhdGFGb250U3BlY1Jhd05hbWVEYXRhIEFUU0ZsYXREYXRhRm9udFNw
ZWNSYXdOYW1lRGF0YTsKIyA0ODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRT
VW5pY29kZUZsYXR0ZW5pbmcuaCIgMwpzdHJ1Y3QgQVRTRmxhdERhdGFGb250U3BlY1Jhd05hbWVE
YXRhSGVhZGVyIHsKCgoKICBVSW50MzIgbnVtYmVyT2ZGbGF0dGVuZWROYW1lczsKCgoKCgogIEFU
U0ZsYXREYXRhRm9udFNwZWNSYXdOYW1lRGF0YSBuYW1lRGF0YUFycmF5WzFdOwoKfTsKdHlwZWRl
ZiBzdHJ1Y3QgQVRTRmxhdERhdGFGb250U3BlY1Jhd05hbWVEYXRhSGVhZGVyIEFUU0ZsYXREYXRh
Rm9udFNwZWNSYXdOYW1lRGF0YUhlYWRlcjsKIyA3NzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3Jr
L0hlYWRlcnMvQVRTVW5pY29kZUZsYXR0ZW5pbmcuaCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0K
IyA0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlLmgiIDIgMwoK
CgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29kZURpcmVjdEFj
Y2Vzcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmlj
b2RlRGlyZWN0QWNjZXNzLmgiIDMKI2RlZmluZSBfX0FUU1VOSUNPREVESVJFQ1RBQ0NFU1NfXyAK
IyAzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlRGlyZWN0QWNj
ZXNzLmgiIDMKZXh0ZXJuICJDIiB7CiMgNDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRl
cnMvQVRTVW5pY29kZURpcmVjdEFjY2Vzcy5oIiAzCnR5cGVkZWYgVUludDMyIEFUU1VEaXJlY3RE
YXRhU2VsZWN0b3I7CmVudW0gewojIDU5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJz
L0FUU1VuaWNvZGVEaXJlY3RBY2Nlc3MuaCIgMwogIGtBVFNVRGlyZWN0RGF0YUFkdmFuY2VEZWx0
YUZpeGVkQXJyYXkgPSAwLAojIDcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJzL0FU
U1VuaWNvZGVEaXJlY3RBY2Nlc3MuaCIgMwogIGtBVFNVRGlyZWN0RGF0YUJhc2VsaW5lRGVsdGFG
aXhlZEFycmF5ID0gMSwKIyA4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNV
bmljb2RlRGlyZWN0QWNjZXNzLmgiIDMKICBrQVRTVURpcmVjdERhdGFEZXZpY2VEZWx0YVNJbnQx
NkFycmF5ID0gMiwKIyAxMDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5p
Y29kZURpcmVjdEFjY2Vzcy5oIiAzCiAga0FUU1VEaXJlY3REYXRhU3R5bGVJbmRleFVJbnQxNkFy
cmF5ID0gMywKIyAxMDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRlcnMvQVRTVW5pY29k
ZURpcmVjdEFjY2Vzcy5oIiAzCiAga0FUU1VEaXJlY3REYXRhU3R5bGVTZXR0aW5nQVRTVVN0eWxl
U2V0dGluZ1JlZkFycmF5ID0gNCwKIyAxMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL0hlYWRl
cnMvQVRTVW5pY29kZURpcmVjdEFjY2Vzcy5oIiAzCiAga0FUU1VEaXJlY3REYXRhTGF5b3V0UmVj
b3JkQVRTTGF5b3V0UmVjb3JkVmVyc2lvbjEgPSAxMDAsCiMgMTM4ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZy
YW1ld29yay9IZWFkZXJzL0FUU1VuaWNvZGVEaXJlY3RBY2Nlc3MuaCIgMwogIGtBVFNVRGlyZWN0
RGF0YUxheW91dFJlY29yZEFUU0xheW91dFJlY29yZEN1cnJlbnQgPSBrQVRTVURpcmVjdERhdGFM
YXlvdXRSZWNvcmRBVFNMYXlvdXRSZWNvcmRWZXJzaW9uMQp9OwojIDE1MiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9R
RC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlRGlyZWN0QWNjZXNzLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgTExDU3R5bGVJbmZvKiBBVFNVU3R5bGVTZXR0aW5nUmVmOwojIDIyOCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlRGlyZWN0QWNjZXNzLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzCkFUU1VEaXJlY3RHZXRMYXlvdXREYXRhQXJyYXlQdHJGcm9tTGluZVJlZigKICBB
VFNVTGluZVJlZiBpTGluZVJlZiwKICBBVFNVRGlyZWN0RGF0YVNlbGVjdG9yIGlEYXRhU2VsZWN0
b3IsCiAgQm9vbGVhbiBpQ3JlYXRlLAogIHZvaWQgKiBvTGF5b3V0RGF0YUFycmF5UHRyW10sCiAg
SXRlbUNvdW50ICogb0xheW91dERhdGFDb3VudCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
OwojIDM2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdvcmsvSGVhZGVycy9BVFNVbmljb2RlRGlyZWN0
QWNjZXNzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFUU1VEaXJlY3RSZWxlYXNlTGF5b3V0RGF0YUFy
cmF5UHRyKAogIEFUU1VMaW5lUmVmIGlMaW5lUmVmLAogIEFUU1VEaXJlY3REYXRhU2VsZWN0b3Ig
aURhdGFTZWxlY3RvciwKICB2b2lkICogaUxheW91dERhdGFBcnJheVB0cltdKSBfX2F0dHJpYnV0
ZV9fKChkZXByZWNhdGVkKSk7CiMgNDI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9IZWFkZXJz
L0FUU1VuaWNvZGVEaXJlY3RBY2Nlc3MuaCIgMwp9CiMgNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUUQuZnJhbWV3
b3JrL0hlYWRlcnMvQVRTVW5pY29kZS5oIiAyIDMKIyA5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9RRC5mcmFtZXdv
cmsvSGVhZGVycy9RRC5oIiAyIDMKIyAzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BcHBsaWNhdGlvblNlcnZpY2VzLmgi
IDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNl
cnZpY2VzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvSElTZXJ2aWNlcy5oIiAzCiNkZWZpbmUgX19ISVNFUlZJQ0VTX18gCgoKCgoKCgojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNoYXBlLmgiIDEgMwojIDE3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSElTaGFwZS5oIiAzCiNk
ZWZpbmUgX19ISVNIQVBFX18gCiMgMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9ISVNoYXBlLmgiIDMKZXh0ZXJuICJDIiB7CiMgNjggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNoYXBlLmgiIDMKdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X19ISVNoYXBlKiBISVNoYXBlUmVmOwp0eXBlZGVmIHN0cnVjdCBfX0hJU2hhcGUqIEhJTXV0YWJs
ZVNoYXBlUmVmOwoKCgoKCmVudW0gewoKCgoKICBrSElTaGFwZUVudW1lcmF0ZUluaXQgPSAxLAoK
CgoKCiAga0hJU2hhcGVFbnVtZXJhdGVSZWN0ID0gMiwKCgoKCiAga0hJU2hhcGVFbnVtZXJhdGVU
ZXJtaW5hdGUgPSAzCn07CgoKCgoKCmVudW0gewoKCgoKCiAga0hJU2hhcGVQYXJzZUZyb21Ub3Ag
PSAwLAoKCgoKICBrSElTaGFwZVBhcnNlRnJvbUJvdHRvbSA9ICgxIDw8IDApLAoKCgoKCiAga0hJ
U2hhcGVQYXJzZUZyb21MZWZ0ID0gMCwKCgoKCiAga0hJU2hhcGVQYXJzZUZyb21SaWdodCA9ICgx
IDw8IDEpLAoKCgoKCiAga0hJU2hhcGVQYXJzZUZyb21Ub3BMZWZ0ID0ga0hJU2hhcGVQYXJzZUZy
b21Ub3AgfCBrSElTaGFwZVBhcnNlRnJvbUxlZnQsCgoKCgogIGtISVNoYXBlUGFyc2VGcm9tQm90
dG9tUmlnaHQgPSBrSElTaGFwZVBhcnNlRnJvbUJvdHRvbSB8IGtISVNoYXBlUGFyc2VGcm9tUmln
aHQKfTsKIyAxNzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNo
YXBlLmgiIDMKdHlwZWRlZiBPU1N0YXR1cyAoICogSElTaGFwZUVudW1lcmF0ZVByb2NQdHIpKGlu
dCBpbk1lc3NhZ2UsIEhJU2hhcGVSZWYgaW5TaGFwZSwgY29uc3QgQ0dSZWN0ICppblJlY3QsIHZv
aWQgKmluUmVmY29uKTsKIyAxOTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9ISVNoYXBlLmgiIDMKZXh0ZXJuIENGVHlwZUlECkhJU2hhcGVHZXRUeXBlSUQodm9pZCkg
OwojIDIyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0hJU2hhcGUu
aCIgMwpleHRlcm4gSElTaGFwZVJlZgpISVNoYXBlQ3JlYXRlRW1wdHkodm9pZCkgOwojIDI1NSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0hJU2hhcGUuaCIgMwpleHRl
cm4gSElTaGFwZVJlZgpISVNoYXBlQ3JlYXRlV2l0aFFEUmduKFJnbkhhbmRsZSBpblJnbikgOwoj
IDI4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0hJU2hhcGUuaCIg
MwpleHRlcm4gSElTaGFwZVJlZgpISVNoYXBlQ3JlYXRlV2l0aFJlY3QoY29uc3QgQ0dSZWN0ICog
aW5SZWN0KSA7CiMgMzE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
SElTaGFwZS5oIiAzCmV4dGVybiBISVNoYXBlUmVmCkhJU2hhcGVDcmVhdGVDb3B5KEhJU2hhcGVS
ZWYgaW5TaGFwZSkgOwojIDM1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFk
ZXJzL0hJU2hhcGUuaCIgMwpleHRlcm4gSElTaGFwZVJlZgpISVNoYXBlQ3JlYXRlSW50ZXJzZWN0
aW9uKAogIEhJU2hhcGVSZWYgaW5TaGFwZTEsCiAgSElTaGFwZVJlZiBpblNoYXBlMikgOwojIDM4
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0hJU2hhcGUuaCIgMwpl
eHRlcm4gSElTaGFwZVJlZgpISVNoYXBlQ3JlYXRlRGlmZmVyZW5jZSgKICBISVNoYXBlUmVmIGlu
U2hhcGUxLAogIEhJU2hhcGVSZWYgaW5TaGFwZTIpIDsKIyA0MjMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNoYXBlLmgiIDMKZXh0ZXJuIEhJU2hhcGVSZWYKSElT
aGFwZUNyZWF0ZVVuaW9uKAogIEhJU2hhcGVSZWYgaW5TaGFwZTEsCiAgSElTaGFwZVJlZiBpblNo
YXBlMikgOwojIDQ1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0hJ
U2hhcGUuaCIgMwpleHRlcm4gSElTaGFwZVJlZgpISVNoYXBlQ3JlYXRlWG9yKAogIEhJU2hhcGVS
ZWYgaW5TaGFwZTEsCiAgSElTaGFwZVJlZiBpblNoYXBlMikgOwojIDQ5MiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0hJU2hhcGUuaCIgMwpleHRlcm4gQm9vbGVhbgpI
SVNoYXBlSXNFbXB0eShISVNoYXBlUmVmIGluU2hhcGUpIDsKIyA1MjIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNoYXBlLmgiIDMKZXh0ZXJuIEJvb2xlYW4KSElT
aGFwZUlzUmVjdGFuZ3VsYXIoSElTaGFwZVJlZiBpblNoYXBlKSA7CiMgNTU2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSElTaGFwZS5oIiAzCmV4dGVybiBCb29sZWFu
CkhJU2hhcGVDb250YWluc1BvaW50KAogIEhJU2hhcGVSZWYgaW5TaGFwZSwKICBjb25zdCBDR1Bv
aW50ICogaW5Qb2ludCkgOwojIDU5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL0hJU2hhcGUuaCIgMwpleHRlcm4gQm9vbGVhbgpISVNoYXBlSW50ZXJzZWN0c1JlY3Qo
CiAgSElTaGFwZVJlZiBpblNoYXBlLAogIGNvbnN0IENHUmVjdCAqIGluUmVjdCkgOwojIDYyNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0hJU2hhcGUuaCIgMwpleHRl
cm4gQ0dSZWN0ICoKSElTaGFwZUdldEJvdW5kcygKICBISVNoYXBlUmVmIGluU2hhcGUsCiAgQ0dS
ZWN0ICogb3V0UmVjdCkgOwojIDY2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL0hJU2hhcGUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElTaGFwZUdldEFzUURSZ24oCiAg
SElTaGFwZVJlZiBpblNoYXBlLAogIFJnbkhhbmRsZSBvdXRSZ24pIDsKIyA3MDMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNoYXBlLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzCkhJU2hhcGVSZXBsYWNlUGF0aEluQ0dDb250ZXh0KAogIEhJU2hhcGVSZWYgaW5TaGFwZSwK
ICBDR0NvbnRleHRSZWYgaW5Db250ZXh0KSA7CiMgNzg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvSElTaGFwZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpISVNoYXBlRW51
bWVyYXRlKAogIEhJU2hhcGVSZWYgaW5TaGFwZSwKICBPcHRpb25CaXRzIGluT3B0aW9ucywKICBI
SVNoYXBlRW51bWVyYXRlUHJvY1B0ciBpblByb2MsCiAgdm9pZCAqIGluUmVmY29uKSA7CiMgODE5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSElTaGFwZS5oIiAzCmV4
dGVybiBISU11dGFibGVTaGFwZVJlZgpISVNoYXBlQ3JlYXRlTXV0YWJsZSh2b2lkKSA7CiMgODUw
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSElTaGFwZS5oIiAzCmV4
dGVybiBISU11dGFibGVTaGFwZVJlZgpISVNoYXBlQ3JlYXRlTXV0YWJsZUNvcHkoSElTaGFwZVJl
ZiBpbk9yaWcpIDsKIyA4NzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9ISVNoYXBlLmgiIDMKZXh0ZXJuIEhJTXV0YWJsZVNoYXBlUmVmCkhJU2hhcGVDcmVhdGVNdXRh
YmxlV2l0aFJlY3QoY29uc3QgQ0dSZWN0ICogaW5SZWN0KSA7CiMgOTA3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSElTaGFwZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpI
SVNoYXBlU2V0RW1wdHkoSElNdXRhYmxlU2hhcGVSZWYgaW5TaGFwZSkgOwojIDk0MiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0hJU2hhcGUuaCIgMwpleHRlcm4gT1NT
dGF0dXMKSElTaGFwZVNldFdpdGhTaGFwZSgKICBISU11dGFibGVTaGFwZVJlZiBpbkRlc3RTaGFw
ZSwKICBISVNoYXBlUmVmIGluU3JjU2hhcGUpIDsKIyA5ODIgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNl
cy5mcmFtZXdvcmsvSGVhZGVycy9ISVNoYXBlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJU2hhcGVJ
bnRlcnNlY3QoCiAgSElTaGFwZVJlZiBpblNoYXBlMSwKICBISVNoYXBlUmVmIGluU2hhcGUyLAog
IEhJTXV0YWJsZVNoYXBlUmVmIG91dFJlc3VsdCkgOwojIDEwMjMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNoYXBlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJU2hh
cGVEaWZmZXJlbmNlKAogIEhJU2hhcGVSZWYgaW5TaGFwZTEsCiAgSElTaGFwZVJlZiBpblNoYXBl
MiwKICBISU11dGFibGVTaGFwZVJlZiBvdXRSZXN1bHQpIDsKIyAxMDcxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSElTaGFwZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpI
SVNoYXBlVW5pb24oCiAgSElTaGFwZVJlZiBpblNoYXBlMSwKICBISVNoYXBlUmVmIGluU2hhcGUy
LAogIEhJTXV0YWJsZVNoYXBlUmVmIG91dFJlc3VsdCkgOwojIDExMTIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNoYXBlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJ
U2hhcGVYb3IoCiAgSElTaGFwZVJlZiBpblNoYXBlMSwKICBISVNoYXBlUmVmIGluU2hhcGUyLAog
IEhJTXV0YWJsZVNoYXBlUmVmIG91dFJlc3VsdCkgOwojIDExNTEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNoYXBlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJU2hh
cGVPZmZzZXQoCiAgSElNdXRhYmxlU2hhcGVSZWYgaW5TaGFwZSwKICBDR0Zsb2F0IGluRFgsCiAg
Q0dGbG9hdCBpbkRZKSA7CiMgMTE5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL0hJU2hhcGUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElTaGFwZUluc2V0KAogIEhJTXV0
YWJsZVNoYXBlUmVmIGluU2hhcGUsCiAgQ0dGbG9hdCBpbkRYLAogIENHRmxvYXQgaW5EWSkgOwoj
IDEyMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNoYXBlLmgi
IDMKZXh0ZXJuIE9TU3RhdHVzCkhJU2hhcGVVbmlvbldpdGhSZWN0KAogIEhJTXV0YWJsZVNoYXBl
UmVmIGluU2hhcGUsCiAgY29uc3QgQ0dSZWN0ICogaW5SZWN0KSA7CgoKCgp9CiMgMjYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNlcnZpY2VzLmgiIDIgMwoKCgoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JY29ucy5oIiAxIDMK
IyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ljb25zLmgiIDMK
I2RlZmluZSBfX0lDT05TX18gCiMgMjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9JY29ucy5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0dDb250ZXh0LmgiIDEgMwojIDI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvSWNvbnMuaCIgMiAzCiMgNDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9JY29ucy5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhw
dXNoLCAyKQoKCmVudW0gewogIGtBbGlnbk5vbmUgPSAweDAwLAogIGtBbGlnblZlcnRpY2FsQ2Vu
dGVyID0gMHgwMSwKICBrQWxpZ25Ub3AgPSAweDAyLAogIGtBbGlnbkJvdHRvbSA9IDB4MDMsCiAg
a0FsaWduSG9yaXpvbnRhbENlbnRlciA9IDB4MDQsCiAga0FsaWduQWJzb2x1dGVDZW50ZXIgPSBr
QWxpZ25WZXJ0aWNhbENlbnRlciB8IGtBbGlnbkhvcml6b250YWxDZW50ZXIsCiAga0FsaWduQ2Vu
dGVyVG9wID0ga0FsaWduVG9wIHwga0FsaWduSG9yaXpvbnRhbENlbnRlciwKICBrQWxpZ25DZW50
ZXJCb3R0b20gPSBrQWxpZ25Cb3R0b20gfCBrQWxpZ25Ib3Jpem9udGFsQ2VudGVyLAogIGtBbGln
bkxlZnQgPSAweDA4LAogIGtBbGlnbkNlbnRlckxlZnQgPSBrQWxpZ25WZXJ0aWNhbENlbnRlciB8
IGtBbGlnbkxlZnQsCiAga0FsaWduVG9wTGVmdCA9IGtBbGlnblRvcCB8IGtBbGlnbkxlZnQsCiAg
a0FsaWduQm90dG9tTGVmdCA9IGtBbGlnbkJvdHRvbSB8IGtBbGlnbkxlZnQsCiAga0FsaWduUmln
aHQgPSAweDBDLAogIGtBbGlnbkNlbnRlclJpZ2h0ID0ga0FsaWduVmVydGljYWxDZW50ZXIgfCBr
QWxpZ25SaWdodCwKICBrQWxpZ25Ub3BSaWdodCA9IGtBbGlnblRvcCB8IGtBbGlnblJpZ2h0LAog
IGtBbGlnbkJvdHRvbVJpZ2h0ID0ga0FsaWduQm90dG9tIHwga0FsaWduUmlnaHQKfTsKCgplbnVt
IHsKICBhdE5vbmUgPSBrQWxpZ25Ob25lLAogIGF0VmVydGljYWxDZW50ZXIgPSBrQWxpZ25WZXJ0
aWNhbENlbnRlciwKICBhdFRvcCA9IGtBbGlnblRvcCwKICBhdEJvdHRvbSA9IGtBbGlnbkJvdHRv
bSwKICBhdEhvcml6b250YWxDZW50ZXIgPSBrQWxpZ25Ib3Jpem9udGFsQ2VudGVyLAogIGF0QWJz
b2x1dGVDZW50ZXIgPSBrQWxpZ25BYnNvbHV0ZUNlbnRlciwKICBhdENlbnRlclRvcCA9IGtBbGln
bkNlbnRlclRvcCwKICBhdENlbnRlckJvdHRvbSA9IGtBbGlnbkNlbnRlckJvdHRvbSwKICBhdExl
ZnQgPSBrQWxpZ25MZWZ0LAogIGF0Q2VudGVyTGVmdCA9IGtBbGlnbkNlbnRlckxlZnQsCiAgYXRU
b3BMZWZ0ID0ga0FsaWduVG9wTGVmdCwKICBhdEJvdHRvbUxlZnQgPSBrQWxpZ25Cb3R0b21MZWZ0
LAogIGF0UmlnaHQgPSBrQWxpZ25SaWdodCwKICBhdENlbnRlclJpZ2h0ID0ga0FsaWduQ2VudGVy
UmlnaHQsCiAgYXRUb3BSaWdodCA9IGtBbGlnblRvcFJpZ2h0LAogIGF0Qm90dG9tUmlnaHQgPSBr
QWxpZ25Cb3R0b21SaWdodAp9OwoKdHlwZWRlZiBTSW50MTYgSWNvbkFsaWdubWVudFR5cGU7Cgpl
bnVtIHsKICBrVHJhbnNmb3JtTm9uZSA9IDB4MDAsCiAga1RyYW5zZm9ybURpc2FibGVkID0gMHgw
MSwKICBrVHJhbnNmb3JtT2ZmbGluZSA9IDB4MDIsCiAga1RyYW5zZm9ybU9wZW4gPSAweDAzLAog
IGtUcmFuc2Zvcm1MYWJlbDEgPSAweDAxMDAsCiAga1RyYW5zZm9ybUxhYmVsMiA9IDB4MDIwMCwK
ICBrVHJhbnNmb3JtTGFiZWwzID0gMHgwMzAwLAogIGtUcmFuc2Zvcm1MYWJlbDQgPSAweDA0MDAs
CiAga1RyYW5zZm9ybUxhYmVsNSA9IDB4MDUwMCwKICBrVHJhbnNmb3JtTGFiZWw2ID0gMHgwNjAw
LAogIGtUcmFuc2Zvcm1MYWJlbDcgPSAweDA3MDAsCiAga1RyYW5zZm9ybVNlbGVjdGVkID0gMHg0
MDAwLAogIGtUcmFuc2Zvcm1TZWxlY3RlZERpc2FibGVkID0ga1RyYW5zZm9ybVNlbGVjdGVkIHwg
a1RyYW5zZm9ybURpc2FibGVkLAogIGtUcmFuc2Zvcm1TZWxlY3RlZE9mZmxpbmUgPSBrVHJhbnNm
b3JtU2VsZWN0ZWQgfCBrVHJhbnNmb3JtT2ZmbGluZSwKICBrVHJhbnNmb3JtU2VsZWN0ZWRPcGVu
ID0ga1RyYW5zZm9ybVNlbGVjdGVkIHwga1RyYW5zZm9ybU9wZW4KfTsKCgplbnVtIHsKICB0dE5v
bmUgPSBrVHJhbnNmb3JtTm9uZSwKICB0dERpc2FibGVkID0ga1RyYW5zZm9ybURpc2FibGVkLAog
IHR0T2ZmbGluZSA9IGtUcmFuc2Zvcm1PZmZsaW5lLAogIHR0T3BlbiA9IGtUcmFuc2Zvcm1PcGVu
LAogIHR0TGFiZWwxID0ga1RyYW5zZm9ybUxhYmVsMSwKICB0dExhYmVsMiA9IGtUcmFuc2Zvcm1M
YWJlbDIsCiAgdHRMYWJlbDMgPSBrVHJhbnNmb3JtTGFiZWwzLAogIHR0TGFiZWw0ID0ga1RyYW5z
Zm9ybUxhYmVsNCwKICB0dExhYmVsNSA9IGtUcmFuc2Zvcm1MYWJlbDUsCiAgdHRMYWJlbDYgPSBr
VHJhbnNmb3JtTGFiZWw2LAogIHR0TGFiZWw3ID0ga1RyYW5zZm9ybUxhYmVsNywKICB0dFNlbGVj
dGVkID0ga1RyYW5zZm9ybVNlbGVjdGVkLAogIHR0U2VsZWN0ZWREaXNhYmxlZCA9IGtUcmFuc2Zv
cm1TZWxlY3RlZERpc2FibGVkLAogIHR0U2VsZWN0ZWRPZmZsaW5lID0ga1RyYW5zZm9ybVNlbGVj
dGVkT2ZmbGluZSwKICB0dFNlbGVjdGVkT3BlbiA9IGtUcmFuc2Zvcm1TZWxlY3RlZE9wZW4KfTsK
CnR5cGVkZWYgU0ludDE2IEljb25UcmFuc2Zvcm1UeXBlOwoKZW51bSB7CiAga1NlbGVjdG9yTGFy
Z2UxQml0ID0gMHgwMDAwMDAwMSwKICBrU2VsZWN0b3JMYXJnZTRCaXQgPSAweDAwMDAwMDAyLAog
IGtTZWxlY3RvckxhcmdlOEJpdCA9IDB4MDAwMDAwMDQsCiAga1NlbGVjdG9yTGFyZ2UzMkJpdCA9
IDB4MDAwMDAwMDgsCiAga1NlbGVjdG9yTGFyZ2U4Qml0TWFzayA9IDB4MDAwMDAwMTAsCiAga1Nl
bGVjdG9yU21hbGwxQml0ID0gMHgwMDAwMDEwMCwKICBrU2VsZWN0b3JTbWFsbDRCaXQgPSAweDAw
MDAwMjAwLAogIGtTZWxlY3RvclNtYWxsOEJpdCA9IDB4MDAwMDA0MDAsCiAga1NlbGVjdG9yU21h
bGwzMkJpdCA9IDB4MDAwMDA4MDAsCiAga1NlbGVjdG9yU21hbGw4Qml0TWFzayA9IDB4MDAwMDEw
MDAsCiAga1NlbGVjdG9yTWluaTFCaXQgPSAweDAwMDEwMDAwLAogIGtTZWxlY3Rvck1pbmk0Qml0
ID0gMHgwMDAyMDAwMCwKICBrU2VsZWN0b3JNaW5pOEJpdCA9IDB4MDAwNDAwMDAsCiAga1NlbGVj
dG9ySHVnZTFCaXQgPSAweDAxMDAwMDAwLAogIGtTZWxlY3Rvckh1Z2U0Qml0ID0gMHgwMjAwMDAw
MCwKICBrU2VsZWN0b3JIdWdlOEJpdCA9IDB4MDQwMDAwMDAsCiAga1NlbGVjdG9ySHVnZTMyQml0
ID0gMHgwODAwMDAwMCwKICBrU2VsZWN0b3JIdWdlOEJpdE1hc2sgPSAweDEwMDAwMDAwLAogIGtT
ZWxlY3RvckFsbExhcmdlRGF0YSA9IDB4MDAwMDAwRkYsCiAga1NlbGVjdG9yQWxsU21hbGxEYXRh
ID0gMHgwMDAwRkYwMCwKICBrU2VsZWN0b3JBbGxNaW5pRGF0YSA9IDB4MDBGRjAwMDAsCiAga1Nl
bGVjdG9yQWxsSHVnZURhdGEgPSAoVUludDMyKTB4RkYwMDAwMDAsCiAga1NlbGVjdG9yQWxsMUJp
dERhdGEgPSBrU2VsZWN0b3JMYXJnZTFCaXQgfCBrU2VsZWN0b3JTbWFsbDFCaXQgfCBrU2VsZWN0
b3JNaW5pMUJpdCB8IGtTZWxlY3Rvckh1Z2UxQml0LAogIGtTZWxlY3RvckFsbDRCaXREYXRhID0g
a1NlbGVjdG9yTGFyZ2U0Qml0IHwga1NlbGVjdG9yU21hbGw0Qml0IHwga1NlbGVjdG9yTWluaTRC
aXQgfCBrU2VsZWN0b3JIdWdlNEJpdCwKICBrU2VsZWN0b3JBbGw4Qml0RGF0YSA9IGtTZWxlY3Rv
ckxhcmdlOEJpdCB8IGtTZWxlY3RvclNtYWxsOEJpdCB8IGtTZWxlY3Rvck1pbmk4Qml0IHwga1Nl
bGVjdG9ySHVnZThCaXQsCiAga1NlbGVjdG9yQWxsMzJCaXREYXRhID0ga1NlbGVjdG9yTGFyZ2Uz
MkJpdCB8IGtTZWxlY3RvclNtYWxsMzJCaXQgfCBrU2VsZWN0b3JIdWdlMzJCaXQsCiAga1NlbGVj
dG9yQWxsQXZhaWxhYmxlRGF0YSA9IChVSW50MzIpMHhGRkZGRkZGRgp9OwoKdHlwZWRlZiBVSW50
MzIgSWNvblNlbGVjdG9yVmFsdWU7CgplbnVtIHsKICBzdkxhcmdlMUJpdCA9IGtTZWxlY3Rvckxh
cmdlMUJpdCwKICBzdkxhcmdlNEJpdCA9IGtTZWxlY3RvckxhcmdlNEJpdCwKICBzdkxhcmdlOEJp
dCA9IGtTZWxlY3RvckxhcmdlOEJpdCwKICBzdlNtYWxsMUJpdCA9IGtTZWxlY3RvclNtYWxsMUJp
dCwKICBzdlNtYWxsNEJpdCA9IGtTZWxlY3RvclNtYWxsNEJpdCwKICBzdlNtYWxsOEJpdCA9IGtT
ZWxlY3RvclNtYWxsOEJpdCwKICBzdk1pbmkxQml0ID0ga1NlbGVjdG9yTWluaTFCaXQsCiAgc3ZN
aW5pNEJpdCA9IGtTZWxlY3Rvck1pbmk0Qml0LAogIHN2TWluaThCaXQgPSBrU2VsZWN0b3JNaW5p
OEJpdCwKICBzdkFsbExhcmdlRGF0YSA9IGtTZWxlY3RvckFsbExhcmdlRGF0YSwKICBzdkFsbFNt
YWxsRGF0YSA9IGtTZWxlY3RvckFsbFNtYWxsRGF0YSwKICBzdkFsbE1pbmlEYXRhID0ga1NlbGVj
dG9yQWxsTWluaURhdGEsCiAgc3ZBbGwxQml0RGF0YSA9IGtTZWxlY3RvckFsbDFCaXREYXRhLAog
IHN2QWxsNEJpdERhdGEgPSBrU2VsZWN0b3JBbGw0Qml0RGF0YSwKICBzdkFsbDhCaXREYXRhID0g
a1NlbGVjdG9yQWxsOEJpdERhdGEsCiAgc3ZBbGxBdmFpbGFibGVEYXRhID0ga1NlbGVjdG9yQWxs
QXZhaWxhYmxlRGF0YQp9OwoKdHlwZWRlZiBPU0VyciAoICogSWNvbkFjdGlvblByb2NQdHIpKFJl
c1R5cGUgdGhlVHlwZSwgSGFuZGxlICp0aGVJY29uLCB2b2lkICp5b3VyRGF0YVB0cik7CnR5cGVk
ZWYgSGFuZGxlICggKiBJY29uR2V0dGVyUHJvY1B0cikoUmVzVHlwZSB0aGVUeXBlLCB2b2lkICp5
b3VyRGF0YVB0cik7CnR5cGVkZWYgSWNvbkFjdGlvblByb2NQdHIgSWNvbkFjdGlvblVQUDsKdHlw
ZWRlZiBJY29uR2V0dGVyUHJvY1B0ciBJY29uR2V0dGVyVVBQOwojIDE5MiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ljb25zLmgiIDMKZXh0ZXJuIEljb25BY3Rpb25V
UFAKTmV3SWNvbkFjdGlvblVQUChJY29uQWN0aW9uUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDIw
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ljb25zLmgiIDMKZXh0
ZXJuIEljb25HZXR0ZXJVUFAKTmV3SWNvbkdldHRlclVQUChJY29uR2V0dGVyUHJvY1B0ciB1c2Vy
Um91dGluZSkgOwojIDIxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L0ljb25zLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUljb25BY3Rpb25VUFAoSWNvbkFjdGlvblVQ
UCB1c2VyVVBQKSA7CiMgMjI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvSWNvbnMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlSWNvbkdldHRlclVQUChJY29uR2V0dGVy
VVBQIHVzZXJVUFApIDsKIyAyMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9JY29ucy5oIiAzCmV4dGVybiBPU0VycgpJbnZva2VJY29uQWN0aW9uVVBQKAogIFJlc1R5
cGUgdGhlVHlwZSwKICBIYW5kbGUgKiB0aGVJY29uLAogIHZvaWQgKiB5b3VyRGF0YVB0ciwKICBJ
Y29uQWN0aW9uVVBQIHVzZXJVUFApIDsKIyAyNTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9JY29ucy5oIiAzCmV4dGVybiBIYW5kbGUKSW52b2tlSWNvbkdldHRlclVQ
UCgKICBSZXNUeXBlIHRoZVR5cGUsCiAgdm9pZCAqIHlvdXJEYXRhUHRyLAogIEljb25HZXR0ZXJV
UFAgdXNlclVQUCkgOwoKCgogICAgaW5saW5lIEljb25BY3Rpb25VUFAgTmV3SWNvbkFjdGlvblVQ
UChJY29uQWN0aW9uUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0K
ICAgIGlubGluZSBJY29uR2V0dGVyVVBQIE5ld0ljb25HZXR0ZXJVUFAoSWNvbkdldHRlclByb2NQ
dHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBE
aXNwb3NlSWNvbkFjdGlvblVQUChJY29uQWN0aW9uVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERp
c3Bvc2VJY29uR2V0dGVyVVBQKEljb25HZXR0ZXJVUFApIHsgfQogICAgaW5saW5lIE9TRXJyIElu
dm9rZUljb25BY3Rpb25VUFAoUmVzVHlwZSB0aGVUeXBlLCBIYW5kbGUgKiB0aGVJY29uLCB2b2lk
ICogeW91ckRhdGFQdHIsIEljb25BY3Rpb25VUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQ
KSh0aGVUeXBlLCB0aGVJY29uLCB5b3VyRGF0YVB0cik7IH0KICAgIGlubGluZSBIYW5kbGUgSW52
b2tlSWNvbkdldHRlclVQUChSZXNUeXBlIHRoZVR5cGUsIHZvaWQgKiB5b3VyRGF0YVB0ciwgSWNv
bkdldHRlclVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHRoZVR5cGUsIHlvdXJEYXRh
UHRyKTsgfQojIDkzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0lj
b25zLmgiIDMKdHlwZWRlZiBVSW50MzIgUGxvdEljb25SZWZGbGFnczsKZW51bSB7CgoKCgogIGtQ
bG90SWNvblJlZk5vcm1hbEZsYWdzID0gMCwKCgoKCiAga1Bsb3RJY29uUmVmTm9JbWFnZSA9ICgx
IDw8IDEpLAoKCgoKICBrUGxvdEljb25SZWZOb01hc2sgPSAoMSA8PCAyKQp9OwojIDk3OCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ljb25zLmgiIDMKZXh0ZXJuIE9T
RXJyCkljb25SZWZUb0ljb25GYW1pbHkoCiAgSWNvblJlZiB0aGVJY29uUmVmLAogIEljb25TZWxl
Y3RvclZhbHVlIHdoaWNoSWNvbnMsCiAgSWNvbkZhbWlseUhhbmRsZSAqIGljb25GYW1pbHkpIDsK
IyAxMDU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvbnMuaCIg
MwpleHRlcm4gT1NFcnIKU2V0SWNvbkZhbWlseURhdGEoCiAgSWNvbkZhbWlseUhhbmRsZSBpY29u
RmFtaWx5LAogIE9TVHlwZSBpY29uVHlwZSwKICBIYW5kbGUgaCkgOwojIDEwODMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JY29ucy5oIiAzCmV4dGVybiBPU0VycgpH
ZXRJY29uRmFtaWx5RGF0YSgKICBJY29uRmFtaWx5SGFuZGxlIGljb25GYW1pbHksCiAgT1NUeXBl
IGljb25UeXBlLAogIEhhbmRsZSBoKSA7CiMgMTE2MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL0ljb25zLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBsb3RJY29uUmVmSW5D
b250ZXh0KAogIENHQ29udGV4dFJlZiBpbkNvbnRleHQsCiAgY29uc3QgQ0dSZWN0ICogaW5SZWN0
LAogIEljb25BbGlnbm1lbnRUeXBlIGluQWxpZ24sCiAgSWNvblRyYW5zZm9ybVR5cGUgaW5UcmFu
c2Zvcm0sCiAgY29uc3QgUkdCQ29sb3IgKiBpbkxhYmVsQ29sb3IsCiAgUGxvdEljb25SZWZGbGFn
cyBpbkZsYWdzLAogIEljb25SZWYgaW5JY29uUmVmKSA7CiMgMTMwNSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNl
cnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ljb25zLmgiIDMKZXh0ZXJuIEJvb2xlYW4KSWNvblJl
ZkNvbnRhaW5zQ0dQb2ludCgKICBjb25zdCBDR1BvaW50ICogdGVzdFB0LAogIGNvbnN0IENHUmVj
dCAqIGljb25SZWN0LAogIEljb25BbGlnbm1lbnRUeXBlIGFsaWduLAogIEljb25TZXJ2aWNlc1Vz
YWdlRmxhZ3MgaWNvblNlcnZpY2VzVXNhZ2VGbGFncywKICBJY29uUmVmIHRoZUljb25SZWYpIDsK
IyAxMzUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSWNvbnMuaCIg
MwpleHRlcm4gQm9vbGVhbgpJY29uUmVmSW50ZXJzZWN0c0NHUmVjdCgKICBjb25zdCBDR1JlY3Qg
KiB0ZXN0UmVjdCwKICBjb25zdCBDR1JlY3QgKiBpY29uUmVjdCwKICBJY29uQWxpZ25tZW50VHlw
ZSBhbGlnbiwKICBJY29uU2VydmljZXNVc2FnZUZsYWdzIGljb25TZXJ2aWNlc1VzYWdlRmxhZ3Ms
CiAgSWNvblJlZiB0aGVJY29uUmVmKSA7CiMgMTM5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL0ljb25zLmgiIDMKZXh0ZXJuIEhJU2hhcGVSZWYKSWNvblJlZlRvSElT
aGFwZSgKICBjb25zdCBDR1JlY3QgKiBpY29uUmVjdCwKICBJY29uQWxpZ25tZW50VHlwZSBhbGln
biwKICBJY29uU2VydmljZXNVc2FnZUZsYWdzIGljb25TZXJ2aWNlc1VzYWdlRmxhZ3MsCiAgSWNv
blJlZiB0aGVJY29uUmVmKSA7CiMgMTQ2MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0ljb25zLmgiIDMKZXh0ZXJuIEJvb2xlYW4KSXNJY29uUmVmTWFza0VtcHR5KElj
b25SZWYgaWNvblJlZikgOwojIDE0ODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9JY29ucy5oIiAzCmV4dGVybiBJY29uUmVmCkdldEljb25SZWZWYXJpYW50KAogIElj
b25SZWYgaW5JY29uUmVmLAogIE9TVHlwZSBpblZhcmlhbnQsCiAgSWNvblRyYW5zZm9ybVR5cGUg
KiBvdXRUcmFuc2Zvcm0pIDsKIyAxNTA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvSWNvbnMuaCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAzMCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0hJU2VydmljZXMuaCIgMiAzCgoKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgi
IDEgMwojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50ZXJu
ZXRDb25maWcuaCIgMwojZGVmaW5lIF9fSU5URVJORVRDT05GSUdfXyAKIyA1NCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKZXh0ZXJu
ICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgoKCgoKZW51bSB7CiAgaWNQcmVmTm90Rm91
bmRFcnIgPSAtNjY2LAogIGljUGVybUVyciA9IC02NjcsCiAgaWNQcmVmRGF0YUVyciA9IC02Njgs
CiAgaWNJbnRlcm5hbEVyciA9IC02NjksCiAgaWNUcnVuY2F0ZWRFcnIgPSAtNjcwLAogIGljTm9N
b3JlV3JpdGVyc0VyciA9IC02NzEsCiAgaWNOb3RoaW5nVG9PdmVycmlkZUVyciA9IC02NzIsCiAg
aWNOb1VSTEVyciA9IC02NzMsCiAgaWNDb25maWdOb3RGb3VuZEVyciA9IC02NzQsCiAgaWNDb25m
aWdJbmFwcHJvcHJpYXRlRXJyID0gLTY3NSwKICBpY1Byb2ZpbGVOb3RGb3VuZEVyciA9IC02NzYs
CiAgaWNUb29NYW55UHJvZmlsZXNFcnIgPSAtNjc3Cn07CgoKCgoKZW51bSB7CiAga0lDQ29tcG9u
ZW50SW50ZXJmYWNlVmVyc2lvbjAgPSAweDAwMDAwMDAwLAogIGtJQ0NvbXBvbmVudEludGVyZmFj
ZVZlcnNpb24xID0gMHgwMDAxMDAwMCwKICBrSUNDb21wb25lbnRJbnRlcmZhY2VWZXJzaW9uMiA9
IDB4MDAwMjAwMDAsCiAga0lDQ29tcG9uZW50SW50ZXJmYWNlVmVyc2lvbjMgPSAweDAwMDMwMDAw
LAogIGtJQ0NvbXBvbmVudEludGVyZmFjZVZlcnNpb240ID0gMHgwMDA0MDAwMCwKICBrSUNDb21w
b25lbnRJbnRlcmZhY2VWZXJzaW9uID0ga0lDQ29tcG9uZW50SW50ZXJmYWNlVmVyc2lvbjQKfTsK
CgoKCgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVJQ0luc3RhbmNlKiBJQ0luc3RhbmNlOwojIDExMiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgi
IDMKdHlwZWRlZiBVSW50MzIgSUNBdHRyOwplbnVtIHsKICBrSUNBdHRyTG9ja2VkQml0ID0gMCwK
ICBrSUNBdHRyVm9sYXRpbGVCaXQgPSAxCn07CgplbnVtIHsKICBrSUNBdHRyTm9DaGFuZ2UgPSAo
VUludDMyKTB4RkZGRkZGRkYsCiAga0lDQXR0ckxvY2tlZE1hc2sgPSAweDAwMDAwMDAxLAogIGtJ
Q0F0dHJWb2xhdGlsZU1hc2sgPSAweDAwMDAwMDAyCn07CgoKCgp0eXBlZGVmIFVJbnQ4IElDUGVy
bTsKZW51bSB7CiAgaWNOb1Blcm0gPSAwLAogIGljUmVhZE9ubHlQZXJtID0gMSwKICBpY1JlYWRX
cml0ZVBlcm0gPSAyCn07CgoKCgoKdHlwZWRlZiBTSW50MzIgSUNQcm9maWxlSUQ7CnR5cGVkZWYg
SUNQcm9maWxlSUQgKiBJQ1Byb2ZpbGVJRFB0cjsKZW51bSB7CiAga0lDTmlsUHJvZmlsZUlEID0g
MAp9OwoKCgoKZW51bSB7CiAga0lDTm9Vc2VySW50ZXJhY3Rpb25CaXQgPSAwCn07CgplbnVtIHsK
ICBrSUNOb1VzZXJJbnRlcmFjdGlvbk1hc2sgPSAweDAwMDAwMDAxCn07CgplbnVtIHsKICBrSUNG
aWxlVHlwZSA9ICdJQ0FwJywKICBrSUNDcmVhdG9yID0gJ0lDQXAnCn07CgoKCgplbnVtIHsKICBr
SW50ZXJuZXRFdmVudENsYXNzID0gJ0dVUkwnLAogIGtBRUdldFVSTCA9ICdHVVJMJywKICBrQUVG
ZXRjaFVSTCA9ICdGVVJMJywKICBrZXlBRUF0dGFjaGluZyA9ICdBdGNoJwp9OwoKCmVudW0gewog
IGtJQ0VkaXRQcmVmZXJlbmNlRXZlbnRDbGFzcyA9ICdJQ0FwJywKICBrSUNFZGl0UHJlZmVyZW5j
ZUV2ZW50ID0gJ0lDQXAnLAogIGtleUlDRWRpdFByZWZlcmVuY2VEZXN0aW5hdGlvbiA9ICdkZXN0
Jwp9OwoKCgoKZW51bSB7CiAga0lDQ29tcG9uZW50VmVyc2lvbiA9IDAsCiAga0lDTnVtVmVyc2lv
biA9IDEKfTsKCgoKCnN0cnVjdCBJQ0ZvbnRSZWNvcmQgewogIFNJbnQxNiBzaXplOwogIFN0eWxl
IGZhY2U7CiAgY2hhciBwYWQ7CiAgU3RyMjU1IGZvbnQ7Cn07CnR5cGVkZWYgc3RydWN0IElDRm9u
dFJlY29yZCBJQ0ZvbnRSZWNvcmQ7CnR5cGVkZWYgSUNGb250UmVjb3JkICogSUNGb250UmVjb3Jk
UHRyOwp0eXBlZGVmIElDRm9udFJlY29yZFB0ciAqIElDRm9udFJlY29yZEhhbmRsZTsKCgoKCnN0
cnVjdCBJQ0NoYXJUYWJsZSB7CiAgdW5zaWduZWQgY2hhciBuZXRUb01hY1syNTZdOwogIHVuc2ln
bmVkIGNoYXIgbWFjVG9OZXRbMjU2XTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSUNDaGFyVGFibGUgSUND
aGFyVGFibGU7CnR5cGVkZWYgSUNDaGFyVGFibGUgKiBJQ0NoYXJUYWJsZVB0cjsKdHlwZWRlZiBJ
Q0NoYXJUYWJsZVB0ciAqIElDQ2hhclRhYmxlSGFuZGxlOwoKCgoKc3RydWN0IElDQXBwU3BlYyB7
CiAgT1NUeXBlIGZDcmVhdG9yOwogIFN0cjYzIG5hbWU7Cn07CnR5cGVkZWYgc3RydWN0IElDQXBw
U3BlYyBJQ0FwcFNwZWM7CnR5cGVkZWYgSUNBcHBTcGVjICogSUNBcHBTcGVjUHRyOwp0eXBlZGVm
IElDQXBwU3BlY1B0ciAqIElDQXBwU3BlY0hhbmRsZTsKc3RydWN0IElDQXBwU3BlY0xpc3Qgewog
IFNJbnQxNiBudW1iZXJPZkl0ZW1zOwogIElDQXBwU3BlYyBhcHBTcGVjc1sxXTsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgSUNBcHBTcGVjTGlzdCBJQ0FwcFNwZWNMaXN0Owp0eXBlZGVmIElDQXBwU3BlY0xp
c3QgKiBJQ0FwcFNwZWNMaXN0UHRyOwp0eXBlZGVmIElDQXBwU3BlY0xpc3RQdHIgKiBJQ0FwcFNw
ZWNMaXN0SGFuZGxlOwoKCgoKc3RydWN0IElDRmlsZVNwZWMgewogIFN0cjMxIHZvbE5hbWU7CiAg
U0ludDMyIHZvbENyZWF0aW9uRGF0ZTsKICBGU1NwZWMgZnNzOwogIEFsaWFzUmVjb3JkIGFsaWFz
OwoKCn07CnR5cGVkZWYgc3RydWN0IElDRmlsZVNwZWMgSUNGaWxlU3BlYzsKdHlwZWRlZiBJQ0Zp
bGVTcGVjICogSUNGaWxlU3BlY1B0cjsKdHlwZWRlZiBJQ0ZpbGVTcGVjUHRyICogSUNGaWxlU3Bl
Y0hhbmRsZTsKZW51bSB7CiAga0lDRmlsZVNwZWNIZWFkZXJTaXplID0gc2l6ZW9mKElDRmlsZVNw
ZWMpIC0gc2l6ZW9mKEFsaWFzUmVjb3JkKQp9OwoKCgoKdHlwZWRlZiBTSW50MzIgSUNNYXBFbnRy
eUZsYWdzOwp0eXBlZGVmIFNJbnQxNiBJQ0ZpeGVkTGVuZ3RoOwpzdHJ1Y3QgSUNNYXBFbnRyeSB7
CiAgU0ludDE2IHRvdGFsTGVuZ3RoOwogIElDRml4ZWRMZW5ndGggZml4ZWRMZW5ndGg7CiAgU0lu
dDE2IHZlcnNpb247CiAgT1NUeXBlIGZpbGVUeXBlOwogIE9TVHlwZSBmaWxlQ3JlYXRvcjsKICBP
U1R5cGUgcG9zdENyZWF0b3I7CiAgSUNNYXBFbnRyeUZsYWdzIGZsYWdzOwoKICBTdHIyNTUgZXh0
ZW5zaW9uOwogIFN0cjI1NSBjcmVhdG9yQXBwTmFtZTsKICBTdHIyNTUgcG9zdEFwcE5hbWU7CiAg
U3RyMjU1IE1JTUVUeXBlOwogIFN0cjI1NSBlbnRyeU5hbWU7Cn07CnR5cGVkZWYgc3RydWN0IElD
TWFwRW50cnkgSUNNYXBFbnRyeTsKdHlwZWRlZiBJQ01hcEVudHJ5ICogSUNNYXBFbnRyeVB0cjsK
dHlwZWRlZiBJQ01hcEVudHJ5UHRyICogSUNNYXBFbnRyeUhhbmRsZTsKZW51bSB7CiAga0lDTWFw
Rml4ZWRMZW5ndGggPSAyMgp9OwoKZW51bSB7CiAga0lDTWFwQmluYXJ5Qml0ID0gMCwKICBrSUNN
YXBSZXNvdXJjZUZvcmtCaXQgPSAxLAogIGtJQ01hcERhdGFGb3JrQml0ID0gMiwKICBrSUNNYXBQ
b3N0Qml0ID0gMywKICBrSUNNYXBOb3RJbmNvbWluZ0JpdCA9IDQsCiAga0lDTWFwTm90T3V0Z29p
bmdCaXQgPSA1Cn07CgplbnVtIHsKICBrSUNNYXBCaW5hcnlNYXNrID0gMHgwMDAwMDAwMSwKICBr
SUNNYXBSZXNvdXJjZUZvcmtNYXNrID0gMHgwMDAwMDAwMiwKICBrSUNNYXBEYXRhRm9ya01hc2sg
PSAweDAwMDAwMDA0LAogIGtJQ01hcFBvc3RNYXNrID0gMHgwMDAwMDAwOCwKICBrSUNNYXBOb3RJ
bmNvbWluZ01hc2sgPSAweDAwMDAwMDEwLAogIGtJQ01hcE5vdE91dGdvaW5nTWFzayA9IDB4MDAw
MDAwMjAKfTsKCgoKCnR5cGVkZWYgU0ludDE2IElDU2VydmljZUVudHJ5RmxhZ3M7CnN0cnVjdCBJ
Q1NlcnZpY2VFbnRyeSB7CiAgU3RyMjU1IG5hbWU7CiAgU0ludDE2IHBvcnQ7CiAgSUNTZXJ2aWNl
RW50cnlGbGFncyBmbGFnczsKfTsKdHlwZWRlZiBzdHJ1Y3QgSUNTZXJ2aWNlRW50cnkgSUNTZXJ2
aWNlRW50cnk7CnR5cGVkZWYgSUNTZXJ2aWNlRW50cnkgKiBJQ1NlcnZpY2VFbnRyeVB0cjsKdHlw
ZWRlZiBJQ1NlcnZpY2VFbnRyeVB0ciAqIElDU2VydmljZUVudHJ5SGFuZGxlOwoKZW51bSB7CiAg
a0lDU2VydmljZXNUQ1BCaXQgPSAwLAogIGtJQ1NlcnZpY2VzVURQQml0ID0gMQp9OwoKZW51bSB7
CiAga0lDU2VydmljZXNUQ1BNYXNrID0gMHgwMDAwMDAwMSwKICBrSUNTZXJ2aWNlc1VEUE1hc2sg
PSAweDAwMDAwMDAyCn07CgpzdHJ1Y3QgSUNTZXJ2aWNlcyB7CiAgU0ludDE2IGNvdW50OwogIElD
U2VydmljZUVudHJ5IHNlcnZpY2VzWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBJQ1NlcnZpY2VzIElD
U2VydmljZXM7CnR5cGVkZWYgSUNTZXJ2aWNlcyAqIElDU2VydmljZXNQdHI7CnR5cGVkZWYgSUNT
ZXJ2aWNlc1B0ciAqIElDU2VydmljZXNIYW5kbGU7CgoKCgoKCiNkZWZpbmUga0lDUmVzZXJ2ZWRL
ZXkgIlxwa0lDUmVzZXJ2ZWRLZXkiCgoKCiNkZWZpbmUga0lDQXJjaGllQWxsICJccEFyY2hpZUFs
bCIKCgoKI2RlZmluZSBrSUNBcmNoaWVQcmVmZXJyZWQgIlxwQXJjaGllUHJlZmVycmVkIgoKCgoj
ZGVmaW5lIGtJQ0NoYXJhY3RlclNldCAiXHBDaGFyYWN0ZXJTZXQiCgoKCiNkZWZpbmUga0lDRG9j
dW1lbnRGb250ICJccERvY3VtZW50Rm9udCIKCgoKI2RlZmluZSBrSUNEb3dubG9hZEZvbGRlciAi
XHBEb3dubG9hZEZvbGRlciIKCgoKI2RlZmluZSBrSUNFbWFpbCAiXHBFbWFpbCIKCgoKI2RlZmlu
ZSBrSUNGVFBIb3N0ICJccEZUUEhvc3QiCgoKCiNkZWZpbmUga0lDRlRQUHJveHlBY2NvdW50ICJc
cEZUUFByb3h5QWNjb3VudCIKCgoKI2RlZmluZSBrSUNGVFBQcm94eUhvc3QgIlxwRlRQUHJveHlI
b3N0IgoKCgojZGVmaW5lIGtJQ0ZUUFByb3h5UGFzc3dvcmQgIlxwRlRQUHJveHlQYXNzd29yZCIK
CgoKI2RlZmluZSBrSUNGVFBQcm94eVVzZXIgIlxwRlRQUHJveHlVc2VyIgoKCgojZGVmaW5lIGtJ
Q0Zpbmdlckhvc3QgIlxwRmluZ2VySG9zdCIKCgoKI2RlZmluZSBrSUNHb3BoZXJIb3N0ICJccEdv
cGhlckhvc3QiCgoKCiNkZWZpbmUga0lDR29waGVyUHJveHkgIlxwR29waGVyUHJveHkiCgoKCiNk
ZWZpbmUga0lDSFRUUFByb3h5SG9zdCAiXHBIVFRQUHJveHlIb3N0IgoKCgojZGVmaW5lIGtJQ0hl
bHBlciAiXHBIZWxwZXKlIgoKCgojZGVmaW5lIGtJQ0hlbHBlckRlc2MgIlxwSGVscGVyRGVzY6Ui
CgoKCiNkZWZpbmUga0lDSGVscGVyTGlzdCAiXHBIZWxwZXJMaXN0pSIKCgoKI2RlZmluZSBrSUNJ
UkNIb3N0ICJccElSQ0hvc3QiCgoKCiNkZWZpbmUga0lDSW5mb01hY0FsbCAiXHBJbmZvTWFjQWxs
IgoKCgojZGVmaW5lIGtJQ0luZm9NYWNQcmVmZXJyZWQgIlxwSW5mb01hY1ByZWZlcnJlZCIKCgoK
I2RlZmluZSBrSUNMREFQU2VhcmNoYmFzZSAiXHBMREFQU2VhcmNoYmFzZSIKCgoKI2RlZmluZSBr
SUNMREFQU2VydmVyICJccExEQVBTZXJ2ZXIiCgoKCiNkZWZpbmUga0lDTGlzdEZvbnQgIlxwTGlz
dEZvbnQiCgoKCiNkZWZpbmUga0lDTWFjU2VhcmNoSG9zdCAiXHBNYWNTZWFyY2hIb3N0IgoKCgoj
ZGVmaW5lIGtJQ01haWxBY2NvdW50ICJccE1haWxBY2NvdW50IgoKCgojZGVmaW5lIGtJQ01haWxI
ZWFkZXJzICJccE1haWxIZWFkZXJzIgoKCgojZGVmaW5lIGtJQ01haWxQYXNzd29yZCAiXHBNYWls
UGFzc3dvcmQiCgoKCiNkZWZpbmUga0lDTWFwcGluZyAiXHBNYXBwaW5nIgoKCgojZGVmaW5lIGtJ
Q05OVFBIb3N0ICJccE5OVFBIb3N0IgoKCgojZGVmaW5lIGtJQ05UUEhvc3QgIlxwTlRQSG9zdCIK
CgoKI2RlZmluZSBrSUNOZXdNYWlsRGlhbG9nICJccE5ld01haWxEaWFsb2ciCgoKCiNkZWZpbmUg
a0lDTmV3TWFpbEZsYXNoSWNvbiAiXHBOZXdNYWlsRmxhc2hJY29uIgoKCgojZGVmaW5lIGtJQ05l
d01haWxQbGF5U291bmQgIlxwTmV3TWFpbFBsYXlTb3VuZCIKCgoKI2RlZmluZSBrSUNOZXdNYWls
U291bmROYW1lICJccE5ld01haWxTb3VuZE5hbWUiCgoKCiNkZWZpbmUga0lDTmV3c0F1dGhQYXNz
d29yZCAiXHBOZXdzQXV0aFBhc3N3b3JkIgoKCgojZGVmaW5lIGtJQ05ld3NBdXRoVXNlcm5hbWUg
IlxwTmV3c0F1dGhVc2VybmFtZSIKCgoKI2RlZmluZSBrSUNOZXdzSGVhZGVycyAiXHBOZXdzSGVh
ZGVycyIKCgoKI2RlZmluZSBrSUNOb1Byb3h5RG9tYWlucyAiXHBOb1Byb3h5RG9tYWlucyIKCgoK
I2RlZmluZSBrSUNPcmdhbml6YXRpb24gIlxwT3JnYW5pemF0aW9uIgoKCgojZGVmaW5lIGtJQ1Bo
SG9zdCAiXHBQaEhvc3QiCgoKCiNkZWZpbmUga0lDUGxhbiAiXHBQbGFuIgoKCgojZGVmaW5lIGtJ
Q1ByaW50ZXJGb250ICJccFByaW50ZXJGb250IgoKCgojZGVmaW5lIGtJQ1F1b3RpbmdTdHJpbmcg
IlxwUXVvdGluZ1N0cmluZyIKCgoKI2RlZmluZSBrSUNSZWFsTmFtZSAiXHBSZWFsTmFtZSIKCgoK
I2RlZmluZSBrSUNSVFNQUHJveHlIb3N0ICJccFJUU1BQcm94eUhvc3QiCgoKCiNkZWZpbmUga0lD
U01UUEhvc3QgIlxwU01UUEhvc3QiCgoKCiNkZWZpbmUga0lDU2NyZWVuRm9udCAiXHBTY3JlZW5G
b250IgoKCgojZGVmaW5lIGtJQ1NlcnZpY2VzICJccFNlcnZpY2VzIgoKCgojZGVmaW5lIGtJQ1Np
Z25hdHVyZSAiXHBTaWduYXR1cmUiCgoKCiNkZWZpbmUga0lDU25haWxNYWlsQWRkcmVzcyAiXHBT
bmFpbE1haWxBZGRyZXNzIgoKCgojZGVmaW5lIGtJQ1NvY2tzSG9zdCAiXHBTb2Nrc0hvc3QiCgoK
CiNkZWZpbmUga0lDVGVsbmV0SG9zdCAiXHBUZWxuZXRIb3N0IgoKCgojZGVmaW5lIGtJQ1VNaWNo
QWxsICJccFVNaWNoQWxsIgoKCgojZGVmaW5lIGtJQ1VNaWNoUHJlZmVycmVkICJccFVNaWNoUHJl
ZmVycmVkIgoKCgojZGVmaW5lIGtJQ1VzZUZUUFByb3h5ICJccFVzZUZUUFByb3h5IgoKCgojZGVm
aW5lIGtJQ1VzZUdvcGhlclByb3h5ICJccFVzZUdvcGhlclByb3h5IgoKCgojZGVmaW5lIGtJQ1Vz
ZUhUVFBQcm94eSAiXHBVc2VIVFRQUHJveHkiCgoKCiNkZWZpbmUga0lDVXNlUGFzc2l2ZUZUUCAi
XHBVc2VQYXNzaXZlRlRQIgoKCgojZGVmaW5lIGtJQ1VzZVJUU1BQcm94eSAiXHBVc2VSVFNQUHJv
eHkiCgoKCiNkZWZpbmUga0lDVXNlU29ja3MgIlxwVXNlU29ja3MiCgoKCiNkZWZpbmUga0lDV0FJ
U0dhdGV3YXkgIlxwV0FJU0dhdGV3YXkiCgoKCiNkZWZpbmUga0lDV1dXSG9tZVBhZ2UgIlxwV1dX
SG9tZVBhZ2UiCgoKCiNkZWZpbmUga0lDV2ViQmFja2dyb3VuZENvbG91ciAiXHBXZWJCYWNrZ3Jv
dW5kQ29sb3VyIgoKCgojZGVmaW5lIGtJQ1dlYlJlYWRDb2xvciAiXHA2NDZGNjc3N6VXZWJSZWFk
Q29sb3IiCgoKCiNkZWZpbmUga0lDV2ViU2VhcmNoUGFnZVByZWZzICJccFdlYlNlYXJjaFBhZ2VQ
cmVmcyIKCgoKI2RlZmluZSBrSUNXZWJUZXh0Q29sb3IgIlxwV2ViVGV4dENvbG9yIgoKCgojZGVm
aW5lIGtJQ1dlYlVuZGVybGluZUxpbmtzICJccDY0NkY2Nzc3pVdlYlVuZGVybGluZUxpbmtzIgoK
CgojZGVmaW5lIGtJQ1dlYlVucmVhZENvbG9yICJccDY0NkY2Nzc3pVdlYlVucmVhZENvbG9yIgoK
CgojZGVmaW5lIGtJQ1dob2lzSG9zdCAiXHBXaG9pc0hvc3QiCiMgNjYwICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50ZXJuZXRDb25maWcuaCIgMwpleHRlcm4gT1NT
dGF0dXMKSUNTdGFydCgKICBJQ0luc3RhbmNlICogaW5zdCwKICBPU1R5cGUgc2lnbmF0dXJlKSA7
CiMgNjgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50ZXJuZXRD
b25maWcuaCIgMwpleHRlcm4gT1NTdGF0dXMKSUNTdG9wKElDSW5zdGFuY2UgaW5zdCkgOwojIDcw
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmln
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCklDR2V0VmVyc2lvbigKICBJQ0luc3RhbmNlIGluc3QsCiAg
bG9uZyB3aGljaFZlcnNpb24sCiAgVUludDMyICogdmVyc2lvbikgOwojIDcyMyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzCklDR2V0Q29uZmlnTmFtZSgKICBJQ0luc3RhbmNlIGluc3QsCiAgQm9vbGVhbiBs
b25nbmFtZSwKICBTdHIyNTUgbmFtZSkgOwojIDc1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCklDR2V0
U2VlZCgKICBJQ0luc3RhbmNlIGluc3QsCiAgbG9uZyAqIHNlZWQpIDsKIyA3NzMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JbnRlcm5ldENvbmZpZy5oIiAzCmV4dGVy
biBPU1N0YXR1cwpJQ0dldFBlcm0oCiAgSUNJbnN0YW5jZSBpbnN0LAogIElDUGVybSAqIHBlcm0p
IDsKIyA3OTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JbnRlcm5l
dENvbmZpZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpJQ0JlZ2luKAogIElDSW5zdGFuY2UgaW5zdCwK
ICBJQ1Blcm0gcGVybSkgOwojIDgyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCklDR2V0UHJlZigKICBJ
Q0luc3RhbmNlIGluc3QsCiAgQ29uc3RTdHIyNTVQYXJhbSBrZXksCiAgSUNBdHRyICogYXR0ciwK
ICB2b2lkICogYnVmLAogIGxvbmcgKiBzaXplKSA7CiMgODU3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50ZXJuZXRDb25maWcuaCIgMwpleHRlcm4gT1NTdGF0dXMK
SUNTZXRQcmVmKAogIElDSW5zdGFuY2UgaW5zdCwKICBDb25zdFN0cjI1NVBhcmFtIGtleSwKICBJ
Q0F0dHIgYXR0ciwKICBjb25zdCB2b2lkICogYnVmLAogIGxvbmcgc2l6ZSkgOwojIDg5MCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMK
ZXh0ZXJuIE9TU3RhdHVzCklDRmluZFByZWZIYW5kbGUoCiAgSUNJbnN0YW5jZSBpbnN0LAogIENv
bnN0U3RyMjU1UGFyYW0ga2V5LAogIElDQXR0ciAqIGF0dHIsCiAgSGFuZGxlIHByZWZoKSA7CiMg
OTE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50ZXJuZXRDb25m
aWcuaCIgMwpleHRlcm4gT1NTdGF0dXMKSUNHZXRQcmVmSGFuZGxlKAogIElDSW5zdGFuY2UgaW5z
dCwKICBDb25zdFN0cjI1NVBhcmFtIGtleSwKICBJQ0F0dHIgKiBhdHRyLAogIEhhbmRsZSAqIHBy
ZWZoKSA7CiMgOTQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50
ZXJuZXRDb25maWcuaCIgMwpleHRlcm4gT1NTdGF0dXMKSUNTZXRQcmVmSGFuZGxlKAogIElDSW5z
dGFuY2UgaW5zdCwKICBDb25zdFN0cjI1NVBhcmFtIGtleSwKICBJQ0F0dHIgYXR0ciwKICBIYW5k
bGUgcHJlZmgpIDsKIyA5ODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9JbnRlcm5ldENvbmZpZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpJQ0NvdW50UHJlZigKICBJQ0lu
c3RhbmNlIGluc3QsCiAgbG9uZyAqIGNvdW50KSA7CiMgMTAwMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZp
Y2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CklDR2V0SW5kUHJlZigKICBJQ0luc3RhbmNlIGluc3QsCiAgbG9uZyBpbmRleCwKICBTdHIyNTUg
a2V5KSA7CiMgMTAyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0lu
dGVybmV0Q29uZmlnLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCklDRGVsZXRlUHJlZigKICBJQ0luc3Rh
bmNlIGluc3QsCiAgQ29uc3RTdHIyNTVQYXJhbSBrZXkpIDsKIyAxMDQ3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50ZXJuZXRDb25maWcuaCIgMwpleHRlcm4gT1NT
dGF0dXMKSUNFbmQoSUNJbnN0YW5jZSBpbnN0KSA7CiMgMTA2NiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZp
Y2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CklDR2V0RGVmYXVsdFByZWYoCiAgSUNJbnN0YW5jZSBpbnN0LAogIENvbnN0U3RyMjU1UGFyYW0g
a2V5LAogIEhhbmRsZSBwcmVmSCkgOwojIDEwODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9JbnRlcm5ldENvbmZpZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpJQ0VkaXRQ
cmVmZXJlbmNlcygKICBJQ0luc3RhbmNlIGluc3QsCiAgQ29uc3RTdHIyNTVQYXJhbSBrZXkpIDsK
IyAxMTE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50ZXJuZXRD
b25maWcuaCIgMwpleHRlcm4gT1NTdGF0dXMKSUNMYXVuY2hVUkwoCiAgSUNJbnN0YW5jZSBpbnN0
LAogIENvbnN0U3RyMjU1UGFyYW0gaGludCwKICBjb25zdCB2b2lkICogZGF0YSwKICBsb25nIGxl
biwKICBsb25nICogc2VsU3RhcnQsCiAgbG9uZyAqIHNlbEVuZCkgOwojIDExNTcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JbnRlcm5ldENvbmZpZy5oIiAzCmV4dGVy
biBPU1N0YXR1cwpJQ1BhcnNlVVJMKAogIElDSW5zdGFuY2UgaW5zdCwKICBDb25zdFN0cjI1NVBh
cmFtIGhpbnQsCiAgY29uc3Qgdm9pZCAqIGRhdGEsCiAgbG9uZyBsZW4sCiAgbG9uZyAqIHNlbFN0
YXJ0LAogIGxvbmcgKiBzZWxFbmQsCiAgSGFuZGxlIHVybCkgOwojIDExOTYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JbnRlcm5ldENvbmZpZy5oIiAzCmV4dGVybiBP
U1N0YXR1cwpJQ0NyZWF0ZUdVUkxFdmVudCgKICBJQ0luc3RhbmNlIGluc3QsCiAgT1NUeXBlIGhl
bHBlckNyZWF0b3IsCiAgSGFuZGxlIHVybEgsCiAgQXBwbGVFdmVudCAqIHRoZUV2ZW50KSA7CiMg
MTIxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29u
ZmlnLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCklDU2VuZEdVUkxFdmVudCgKICBJQ0luc3RhbmNlIGlu
c3QsCiAgQXBwbGVFdmVudCAqIHRoZUV2ZW50KSA7CiMgMTI0NSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZp
Y2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CklDTWFwRmlsZW5hbWUoCiAgSUNJbnN0YW5jZSBpbnN0LAogIENvbnN0U3RyMjU1UGFyYW0gZmls
ZW5hbWUsCiAgSUNNYXBFbnRyeSAqIGVudHJ5KSA7CiMgMTI2OSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZp
Y2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CklDTWFwVHlwZUNyZWF0b3IoCiAgSUNJbnN0YW5jZSBpbnN0LAogIE9TVHlwZSBmVHlwZSwKICBP
U1R5cGUgZkNyZWF0b3IsCiAgQ29uc3RTdHIyNTVQYXJhbSBmaWxlbmFtZSwKICBJQ01hcEVudHJ5
ICogZW50cnkpIDsKIyAxMjk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvSW50ZXJuZXRDb25maWcuaCIgMwpleHRlcm4gT1NTdGF0dXMKSUNNYXBFbnRyaWVzRmlsZW5h
bWUoCiAgSUNJbnN0YW5jZSBpbnN0LAogIEhhbmRsZSBlbnRyaWVzLAogIENvbnN0U3RyMjU1UGFy
YW0gZmlsZW5hbWUsCiAgSUNNYXBFbnRyeSAqIGVudHJ5KSA7CiMgMTMyMyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCklDTWFwRW50cmllc1R5cGVDcmVhdG9yKAogIElDSW5zdGFuY2UgaW5zdCwKICBIYW5k
bGUgZW50cmllcywKICBPU1R5cGUgZlR5cGUsCiAgT1NUeXBlIGZDcmVhdG9yLAogIENvbnN0U3Ry
MjU1UGFyYW0gZmlsZW5hbWUsCiAgSUNNYXBFbnRyeSAqIGVudHJ5KSA7CiMgMTM1MyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzCklDQ291bnRNYXBFbnRyaWVzKAogIElDSW5zdGFuY2UgaW5zdCwKICBIYW5k
bGUgZW50cmllcywKICBsb25nICogY291bnQpIDsKIyAxMzc2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50ZXJuZXRDb25maWcuaCIgMwpleHRlcm4gT1NTdGF0dXMK
SUNHZXRJbmRNYXBFbnRyeSgKICBJQ0luc3RhbmNlIGluc3QsCiAgSGFuZGxlIGVudHJpZXMsCiAg
bG9uZyBpbmRleCwKICBsb25nICogcG9zLAogIElDTWFwRW50cnkgKiBlbnRyeSkgOwojIDE0MDUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JbnRlcm5ldENvbmZpZy5o
IiAzCmV4dGVybiBPU1N0YXR1cwpJQ0dldE1hcEVudHJ5KAogIElDSW5zdGFuY2UgaW5zdCwKICBI
YW5kbGUgZW50cmllcywKICBsb25nIHBvcywKICBJQ01hcEVudHJ5ICogZW50cnkpIDsKIyAxNDMx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50ZXJuZXRDb25maWcu
aCIgMwpleHRlcm4gT1NTdGF0dXMKSUNTZXRNYXBFbnRyeSgKICBJQ0luc3RhbmNlIGluc3QsCiAg
SGFuZGxlIGVudHJpZXMsCiAgbG9uZyBwb3MsCiAgY29uc3QgSUNNYXBFbnRyeSAqIGVudHJ5KSA7
CiMgMTQ1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0
Q29uZmlnLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCklDRGVsZXRlTWFwRW50cnkoCiAgSUNJbnN0YW5j
ZSBpbnN0LAogIEhhbmRsZSBlbnRyaWVzLAogIGxvbmcgcG9zKSA7CiMgMTQ4NCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzCklDQWRkTWFwRW50cnkoCiAgSUNJbnN0YW5jZSBpbnN0LAogIEhhbmRsZSBlbnRy
aWVzLAogIGNvbnN0IElDTWFwRW50cnkgKiBlbnRyeSkgOwojIDE1MDkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JbnRlcm5ldENvbmZpZy5oIiAzCmV4dGVybiBPU1N0
YXR1cwpJQ0dldEN1cnJlbnRQcm9maWxlKAogIElDSW5zdGFuY2UgaW5zdCwKICBJQ1Byb2ZpbGVJ
RCAqIGN1cnJlbnRJRCkgOwojIDE1MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9JbnRlcm5ldENvbmZpZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpJQ1NldEN1cnJlbnRQ
cm9maWxlKAogIElDSW5zdGFuY2UgaW5zdCwKICBJQ1Byb2ZpbGVJRCBuZXdJRCkgOwojIDE1NDkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9JbnRlcm5ldENvbmZpZy5o
IiAzCmV4dGVybiBPU1N0YXR1cwpJQ0NvdW50UHJvZmlsZXMoCiAgSUNJbnN0YW5jZSBpbnN0LAog
IGxvbmcgKiBjb3VudCkgOwojIDE1NjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9JbnRlcm5ldENvbmZpZy5oIiAzCmV4dGVybiBPU1N0YXR1cwpJQ0dldEluZFByb2Zp
bGUoCiAgSUNJbnN0YW5jZSBpbnN0LAogIGxvbmcgaW5kZXgsCiAgSUNQcm9maWxlSUQgKiB0aGlz
SUQpIDsKIyAxNTkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50
ZXJuZXRDb25maWcuaCIgMwpleHRlcm4gT1NTdGF0dXMKSUNHZXRQcm9maWxlTmFtZSgKICBJQ0lu
c3RhbmNlIGluc3QsCiAgSUNQcm9maWxlSUQgdGhpc0lELAogIFN0cjI1NSBuYW1lKSA7CiMgMTYx
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmln
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCklDU2V0UHJvZmlsZU5hbWUoCiAgSUNJbnN0YW5jZSBpbnN0
LAogIElDUHJvZmlsZUlEIHRoaXNJRCwKICBDb25zdFN0cjI1NVBhcmFtIG5hbWUpIDsKIyAxNjM3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSW50ZXJuZXRDb25maWcu
aCIgMwpleHRlcm4gT1NTdGF0dXMKSUNBZGRQcm9maWxlKAogIElDSW5zdGFuY2UgaW5zdCwKICBJ
Q1Byb2ZpbGVJRCBwcm90b3R5cGVJRCwKICBJQ1Byb2ZpbGVJRCAqIG5ld0lEKSA7CiMgMTY2MyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgi
IDMKZXh0ZXJuIE9TU3RhdHVzCklDRGVsZXRlUHJvZmlsZSgKICBJQ0luc3RhbmNlIGluc3QsCiAg
SUNQcm9maWxlSUQgdGhpc0lEKSA7CiMgMTY3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzL0ludGVybmV0Q29uZmlnLmgiIDMKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMg
MzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNlcnZpY2VzLmgi
IDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qcm9j
ZXNzZXMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9Qcm9jZXNzZXMuaCIgMwojZGVmaW5lIF9fUFJPQ0VTU0VTX18gCiMgMzIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qcm9jZXNzZXMuaCIgMwpleHRlcm4gIkMiIHsK
CgojcHJhZ21hIHBhY2socHVzaCwgMikKCmVudW0gewoKICBrTm9Qcm9jZXNzID0gMCwKICBrU3lz
dGVtUHJvY2VzcyA9IDEsCiAga0N1cnJlbnRQcm9jZXNzID0gMgp9OwoKCgp0eXBlZGVmIFVJbnQx
NiBMYXVuY2hGbGFnczsKZW51bSB7CiAgbGF1bmNoQ29udGludWUgPSAweDQwMDAsCiAgbGF1bmNo
Tm9GaWxlRmxhZ3MgPSAweDA4MDAsCiAgbGF1bmNoVXNlTWluaW11bSA9IDB4MDQwMCwKICBsYXVu
Y2hEb250U3dpdGNoID0gMHgwMjAwLAogIGxhdW5jaEFsbG93MjRCaXQgPSAweDAxMDAsCiAgbGF1
bmNoSW5oaWJpdERhZW1vbiA9IDB4MDA4MAp9OwoKCgpzdHJ1Y3QgQXBwUGFyYW1ldGVycyB7CiAg
c3RydWN0IHsKICAgIFVJbnQxNiB3aGF0OwogICAgVUludDMyIG1lc3NhZ2U7CiAgICBVSW50MzIg
d2hlbjsKICAgIFBvaW50IHdoZXJlOwogICAgVUludDE2IG1vZGlmaWVyczsKICB9IHRoZU1zZ0V2
ZW50OwogIFVJbnQzMiBldmVudFJlZkNvbjsKICBVSW50MzIgbWVzc2FnZUxlbmd0aDsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgQXBwUGFyYW1ldGVycyBBcHBQYXJhbWV0ZXJzOwp0eXBlZGVmIEFwcFBhcmFt
ZXRlcnMgKiBBcHBQYXJhbWV0ZXJzUHRyOwoKCnN0cnVjdCBMYXVuY2hQYXJhbUJsb2NrUmVjIHsK
ICBVSW50MzIgcmVzZXJ2ZWQxOwogIFVJbnQxNiByZXNlcnZlZDI7CiAgVUludDE2IGxhdW5jaEJs
b2NrSUQ7CiAgVUludDMyIGxhdW5jaEVQQkxlbmd0aDsKICBVSW50MTYgbGF1bmNoRmlsZUZsYWdz
OwogIExhdW5jaEZsYWdzIGxhdW5jaENvbnRyb2xGbGFnczsKICBGU1JlZlB0ciBsYXVuY2hBcHBS
ZWY7CiAgUHJvY2Vzc1NlcmlhbE51bWJlciBsYXVuY2hQcm9jZXNzU047CiAgVUludDMyIGxhdW5j
aFByZWZlcnJlZFNpemU7CiAgVUludDMyIGxhdW5jaE1pbmltdW1TaXplOwogIFVJbnQzMiBsYXVu
Y2hBdmFpbGFibGVTaXplOwogIEFwcFBhcmFtZXRlcnNQdHIgbGF1bmNoQXBwUGFyYW1ldGVyczsK
fTsKdHlwZWRlZiBzdHJ1Y3QgTGF1bmNoUGFyYW1CbG9ja1JlYyBMYXVuY2hQYXJhbUJsb2NrUmVj
OwojIDEwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Byb2Nlc3Nl
cy5oIiAzCnR5cGVkZWYgTGF1bmNoUGFyYW1CbG9ja1JlYyAqIExhdW5jaFBCUHRyOwoKCmVudW0g
ewogIGV4dGVuZGVkQmxvY2sgPSAweDRDNDMsCiAgZXh0ZW5kZWRCbG9ja0xlbiA9IHNpemVvZihM
YXVuY2hQYXJhbUJsb2NrUmVjKSAtIDEyCn07CgplbnVtIHsKCiAgbW9kZVJlc2VydmVkID0gMHgw
MTAwMDAwMCwKICBtb2RlQ29udHJvbFBhbmVsID0gMHgwMDA4MDAwMCwKICBtb2RlTGF1bmNoRG9u
dFN3aXRjaCA9IDB4MDAwNDAwMDAsCiAgbW9kZURlc2tBY2Nlc3NvcnkgPSAweDAwMDIwMDAwLAog
IG1vZGVNdWx0aUxhdW5jaCA9IDB4MDAwMTAwMDAsCiAgbW9kZU5lZWRTdXNwZW5kUmVzdW1lID0g
MHgwMDAwNDAwMCwKICBtb2RlQ2FuQmFja2dyb3VuZCA9IDB4MDAwMDEwMDAsCiAgbW9kZURvZXNB
Y3RpdmF0ZU9uRkdTd2l0Y2ggPSAweDAwMDAwODAwLAogIG1vZGVPbmx5QmFja2dyb3VuZCA9IDB4
MDAwMDA0MDAsCiAgbW9kZUdldEZyb250Q2xpY2tzID0gMHgwMDAwMDIwMCwKICBtb2RlR2V0QXBw
RGllZE1zZyA9IDB4MDAwMDAxMDAsCiAgbW9kZTMyQml0Q29tcGF0aWJsZSA9IDB4MDAwMDAwODAs
CiAgbW9kZUhpZ2hMZXZlbEV2ZW50QXdhcmUgPSAweDAwMDAwMDQwLAogIG1vZGVMb2NhbEFuZFJl
bW90ZUhMRXZlbnRzID0gMHgwMDAwMDAyMCwKICBtb2RlU3RhdGlvbmVyeUF3YXJlID0gMHgwMDAw
MDAxMCwKICBtb2RlVXNlVGV4dEVkaXRTZXJ2aWNlcyA9IDB4MDAwMDAwMDgsCiAgbW9kZURpc3Bs
YXlNYW5hZ2VyQXdhcmUgPSAweDAwMDAwMDA0Cn07Cgp0eXBlZGVmIFVJbnQzMiBQcm9jZXNzQXBw
bGljYXRpb25UcmFuc2Zvcm1TdGF0ZTsKZW51bSB7CiAga1Byb2Nlc3NUcmFuc2Zvcm1Ub0ZvcmVn
cm91bmRBcHBsaWNhdGlvbiA9IDEKfTsKIyAxNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9Qcm9jZXNzZXMuaCIgMwpzdHJ1Y3QgUHJvY2Vzc0luZm9SZWMgewogIFVJ
bnQzMiBwcm9jZXNzSW5mb0xlbmd0aDsKICBTdHJpbmdQdHIgcHJvY2Vzc05hbWU7CiAgUHJvY2Vz
c1NlcmlhbE51bWJlciBwcm9jZXNzTnVtYmVyOwogIFVJbnQzMiBwcm9jZXNzVHlwZTsKICBPU1R5
cGUgcHJvY2Vzc1NpZ25hdHVyZTsKICBVSW50MzIgcHJvY2Vzc01vZGU7CiAgUHRyIHByb2Nlc3NM
b2NhdGlvbjsKICBVSW50MzIgcHJvY2Vzc1NpemU7CiAgVUludDMyIHByb2Nlc3NGcmVlTWVtOwog
IFByb2Nlc3NTZXJpYWxOdW1iZXIgcHJvY2Vzc0xhdW5jaGVyOwogIFVJbnQzMiBwcm9jZXNzTGF1
bmNoRGF0ZTsKICBVSW50MzIgcHJvY2Vzc0FjdGl2ZVRpbWU7CiAgRlNSZWZQdHIgcHJvY2Vzc0Fw
cFJlZjsKfTsKdHlwZWRlZiBzdHJ1Y3QgUHJvY2Vzc0luZm9SZWMgUHJvY2Vzc0luZm9SZWM7CiMg
MTk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUHJvY2Vzc2VzLmgi
IDMKdHlwZWRlZiBQcm9jZXNzSW5mb1JlYyAqIFByb2Nlc3NJbmZvUmVjUHRyOwojIDIyMiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Byb2Nlc3Nlcy5oIiAzCnN0cnVj
dCBQcm9jZXNzSW5mb0V4dGVuZGVkUmVjIHsKICBVSW50MzIgcHJvY2Vzc0luZm9MZW5ndGg7CiAg
U3RyaW5nUHRyIHByb2Nlc3NOYW1lOwogIFByb2Nlc3NTZXJpYWxOdW1iZXIgcHJvY2Vzc051bWJl
cjsKICBVSW50MzIgcHJvY2Vzc1R5cGU7CiAgT1NUeXBlIHByb2Nlc3NTaWduYXR1cmU7CiAgVUlu
dDMyIHByb2Nlc3NNb2RlOwogIFB0ciBwcm9jZXNzTG9jYXRpb247CiAgVUludDMyIHByb2Nlc3NT
aXplOwogIFVJbnQzMiBwcm9jZXNzRnJlZU1lbTsKICBQcm9jZXNzU2VyaWFsTnVtYmVyIHByb2Nl
c3NMYXVuY2hlcjsKICBVSW50MzIgcHJvY2Vzc0xhdW5jaERhdGU7CiAgVUludDMyIHByb2Nlc3NB
Y3RpdmVUaW1lOwogIEZTUmVmUHRyIHByb2Nlc3NBcHBSZWY7CiAgVUludDMyIHByb2Nlc3NUZW1w
TWVtVG90YWw7CiAgVUludDMyIHByb2Nlc3NQdXJnZWFibGVUZW1wTWVtVG90YWw7Cn07CnR5cGVk
ZWYgc3RydWN0IFByb2Nlc3NJbmZvRXh0ZW5kZWRSZWMgUHJvY2Vzc0luZm9FeHRlbmRlZFJlYzsK
IyAyNjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qcm9jZXNzZXMu
aCIgMwp0eXBlZGVmIFByb2Nlc3NJbmZvRXh0ZW5kZWRSZWMgKiBQcm9jZXNzSW5mb0V4dGVuZGVk
UmVjUHRyOwoKc3RydWN0IFNpemVSZXNvdXJjZVJlYyB7CiAgVUludDE2IGZsYWdzOwogIFVJbnQz
MiBwcmVmZXJyZWRIZWFwU2l6ZTsKICBVSW50MzIgbWluaW11bUhlYXBTaXplOwp9Owp0eXBlZGVm
IHN0cnVjdCBTaXplUmVzb3VyY2VSZWMgU2l6ZVJlc291cmNlUmVjOwp0eXBlZGVmIFNpemVSZXNv
dXJjZVJlYyAqIFNpemVSZXNvdXJjZVJlY1B0cjsKdHlwZWRlZiBTaXplUmVzb3VyY2VSZWNQdHIg
KiBTaXplUmVzb3VyY2VSZWNIYW5kbGU7CgoKCgoKZW51bSB7CgoKCgoKICBrUHJvY2Vzc0RpY3Rp
b25hcnlJbmNsdWRlQWxsSW5mb3JtYXRpb25NYXNrID0gKGludCkweEZGRkZGRkZGCn07CiMgMjky
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUHJvY2Vzc2VzLmgiIDMK
ZW51bSB7CiAga1F1aXRCZWZvcmVOb3JtYWxUaW1lTWFzayA9IDEsCiAga1F1aXRBdE5vcm1hbFRp
bWVNYXNrID0gMiwKICBrUXVpdEJlZm9yZUZCQXNRdWl0TWFzayA9IDQsCiAga1F1aXRCZWZvcmVT
aGVsbFF1aXRzTWFzayA9IDgsCiAga1F1aXRCZWZvcmVUZXJtaW5hdG9yQXBwUXVpdHNNYXNrID0g
MTYsCiAga1F1aXROZXZlck1hc2sgPSAzMiwKICBrUXVpdE9wdGlvbnNNYXNrID0gMHg3RiwKICBr
UXVpdE5vdFF1aXREdXJpbmdJbnN0YWxsTWFzayA9IDB4MDEwMCwKICBrUXVpdE5vdFF1aXREdXJp
bmdMb2dvdXRNYXNrID0gMHgwMjAwCn07CiMgMzE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvUHJvY2Vzc2VzLmgiIDMKZXh0ZXJuIE9TRXJyCkxhdW5jaEFwcGxpY2F0
aW9uKExhdW5jaFBCUHRyIExhdW5jaFBhcmFtcykgOwojIDQwNCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZp
Y2VzLmZyYW1ld29yay9IZWFkZXJzL1Byb2Nlc3Nlcy5oIiAzCiNkZWZpbmUgTWFjR2V0Q3VycmVu
dFByb2Nlc3MgR2V0Q3VycmVudFByb2Nlc3MKCmV4dGVybiBPU0VycgpHZXRDdXJyZW50UHJvY2Vz
cyhQcm9jZXNzU2VyaWFsTnVtYmVyICogUFNOKSA7CiMgNDIxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvUHJvY2Vzc2VzLmgiIDMKZXh0ZXJuIE9TRXJyCkdldEZyb250
UHJvY2VzcyhQcm9jZXNzU2VyaWFsTnVtYmVyICogUFNOKSA7CiMgNDM2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUHJvY2Vzc2VzLmgiIDMKZXh0ZXJuIE9TRXJyCkdl
dE5leHRQcm9jZXNzKFByb2Nlc3NTZXJpYWxOdW1iZXIgKiBQU04pIDsKIyA0OTQgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qcm9jZXNzZXMuaCIgMwpleHRlcm4gT1NF
cnIKR2V0UHJvY2Vzc0luZm9ybWF0aW9uKAogIGNvbnN0IFByb2Nlc3NTZXJpYWxOdW1iZXIgKiBQ
U04sCiAgUHJvY2Vzc0luZm9SZWMgKiBpbmZvKSA7CiMgNTU3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvUHJvY2Vzc2VzLmgiIDMKZXh0ZXJuIENGRGljdGlvbmFyeVJl
ZgpQcm9jZXNzSW5mb3JtYXRpb25Db3B5RGljdGlvbmFyeSgKICBjb25zdCBQcm9jZXNzU2VyaWFs
TnVtYmVyICogUFNOLAogIFVJbnQzMiBpbmZvVG9SZXR1cm4pIDsKIyA1NzQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qcm9jZXNzZXMuaCIgMwpleHRlcm4gT1NFcnIK
U2V0RnJvbnRQcm9jZXNzKGNvbnN0IFByb2Nlc3NTZXJpYWxOdW1iZXIgKiBQU04pIDsKCgoKCgoK
CmVudW0gewoKCgoKCgogIGtTZXRGcm9udFByb2Nlc3NGcm9udFdpbmRvd09ubHkgPSAoMSA8PCAw
KSwKICBrU2V0RnJvbnRQcm9jZXNzQ2F1c2VkQnlVc2VyID0gKDEgPDwgMSkKfTsKIyA2MjYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qcm9jZXNzZXMuaCIgMwpleHRl
cm4gT1NTdGF0dXMKU2V0RnJvbnRQcm9jZXNzV2l0aE9wdGlvbnMoCiAgY29uc3QgUHJvY2Vzc1Nl
cmlhbE51bWJlciAqIGluUHJvY2VzcywKICBPcHRpb25CaXRzIGluT3B0aW9ucykgOwojIDY0MyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Byb2Nlc3Nlcy5oIiAzCmV4
dGVybiBPU0VycgpXYWtlVXBQcm9jZXNzKGNvbnN0IFByb2Nlc3NTZXJpYWxOdW1iZXIgKiBQU04p
IDsKIyA2NTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qcm9jZXNz
ZXMuaCIgMwpleHRlcm4gT1NFcnIKU2FtZVByb2Nlc3MoCiAgY29uc3QgUHJvY2Vzc1NlcmlhbE51
bWJlciAqIFBTTjEsCiAgY29uc3QgUHJvY2Vzc1NlcmlhbE51bWJlciAqIFBTTjIsCiAgQm9vbGVh
biAqIHJlc3VsdCkgOwojIDY4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFk
ZXJzL1Byb2Nlc3Nlcy5oIiAzCnZvaWQgRXhpdFRvU2hlbGwoKSBfX2F0dHJpYnV0ZV9fICgoIF9f
bm9yZXR1cm5fXyApKTsKIyA3MTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9Qcm9jZXNzZXMuaCIgMwpleHRlcm4gT1NFcnIKS2lsbFByb2Nlc3MoY29uc3QgUHJvY2Vz
c1NlcmlhbE51bWJlciAqIGluUHJvY2VzcykgOwojIDc2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL1Byb2Nlc3Nlcy5oIiAzCmV4dGVybiBPU1N0YXR1cwpHZXRQcm9j
ZXNzQnVuZGxlTG9jYXRpb24oCiAgY29uc3QgUHJvY2Vzc1NlcmlhbE51bWJlciAqIHBzbiwKICBG
U1JlZiAqIGxvY2F0aW9uKSA7CiMgODA2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvUHJvY2Vzc2VzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkNvcHlQcm9jZXNzTmFtZSgK
ICBjb25zdCBQcm9jZXNzU2VyaWFsTnVtYmVyICogcHNuLAogIENGU3RyaW5nUmVmICogbmFtZSkg
OwojIDg0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Byb2Nlc3Nl
cy5oIiAzCmV4dGVybiBPU1N0YXR1cwpHZXRQcm9jZXNzUElEKAogIGNvbnN0IFByb2Nlc3NTZXJp
YWxOdW1iZXIgKiBwc24sCiAgcGlkX3QgKiBwaWQpIDsKIyA4NzQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qcm9jZXNzZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKR2V0
UHJvY2Vzc0ZvclBJRCgKICBwaWRfdCBwaWQsCiAgUHJvY2Vzc1NlcmlhbE51bWJlciAqIHBzbikg
OwojIDkwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Byb2Nlc3Nl
cy5oIiAzCmV4dGVybiBCb29sZWFuCklzUHJvY2Vzc1Zpc2libGUoY29uc3QgUHJvY2Vzc1Nlcmlh
bE51bWJlciAqIHBzbikgOwojIDkzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL1Byb2Nlc3Nlcy5oIiAzCmV4dGVybiBPU0VycgpTaG93SGlkZVByb2Nlc3MoCiAgY29u
c3QgUHJvY2Vzc1NlcmlhbE51bWJlciAqIHBzbiwKICBCb29sZWFuIHZpc2libGUpIDsKIyA5Nzgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Qcm9jZXNzZXMuaCIgMwpl
eHRlcm4gT1NTdGF0dXMKVHJhbnNmb3JtUHJvY2Vzc1R5cGUoCiAgY29uc3QgUHJvY2Vzc1Nlcmlh
bE51bWJlciAqIHBzbiwKICBQcm9jZXNzQXBwbGljYXRpb25UcmFuc2Zvcm1TdGF0ZSB0cmFuc2Zv
cm1TdGF0ZSkgOwoKCgoKCmVudW0gewogIGluaXREZXYgPSAwLAogIGhpdERldiA9IDEsCiAgY2xv
c2VEZXYgPSAyLAogIG51bERldiA9IDMsCiAgdXBkYXRlRGV2ID0gNCwKICBhY3RpdkRldiA9IDUs
CiAgZGVhY3RpdkRldiA9IDYsCiAga2V5RXZ0RGV2ID0gNywKICBtYWNEZXYgPSA4LAogIHVuZG9E
ZXYgPSA5LAogIGN1dERldiA9IDEwLAogIGNvcHlEZXYgPSAxMSwKICBwYXN0ZURldiA9IDEyLAog
IGNsZWFyRGV2ID0gMTMsCiAgY3Vyc29yRGV2ID0gMTQKfTsKCgplbnVtIHsKICBjZGV2R2VuRXJy
ID0gLTEsCiAgY2Rldk1lbUVyciA9IDAsCiAgY2RldlJlc0VyciA9IDEsCiAgY2RldlVuc2V0ID0g
Mwp9OwoKCgoKCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDM4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2Vydmlj
ZXMuZnJhbWV3b3JrL0hlYWRlcnMvSElTZXJ2aWNlcy5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUGFzdGVib2FyZC5oIiAxIDMKIyAxNyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Bhc3RlYm9hcmQuaCIgMwojZGVm
aW5lIF9fUEFTVEVCT0FSRF9fIAojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvUGFzdGVib2FyZC5oIiAzCmV4dGVybiAiQyIgewojIDEwMCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Bhc3RlYm9hcmQuaCIgMwp0eXBlZGVmIHN0cnVj
dCBPcGFxdWVQYXN0ZWJvYXJkUmVmKiBQYXN0ZWJvYXJkUmVmOwp0eXBlZGVmIHZvaWQgKiBQYXN0
ZWJvYXJkSXRlbUlEOwoKZW51bSB7CiAgYmFkUGFzdGVib2FyZFN5bmNFcnIgPSAtMjUxMzAsCiAg
YmFkUGFzdGVib2FyZEluZGV4RXJyID0gLTI1MTMxLAogIGJhZFBhc3RlYm9hcmRJdGVtRXJyID0g
LTI1MTMyLAogIGJhZFBhc3RlYm9hcmRGbGF2b3JFcnIgPSAtMjUxMzMsCiAgZHVwbGljYXRlUGFz
dGVib2FyZEZsYXZvckVyciA9IC0yNTEzNCwKICBub3RQYXN0ZWJvYXJkT3duZXJFcnIgPSAtMjUx
MzUsCiAgbm9QYXN0ZWJvYXJkUHJvbWlzZUtlZXBlckVyciA9IC0yNTEzNgp9OwojIDEyMiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Bhc3RlYm9hcmQuaCIgMwp0eXBl
ZGVmIE9wdGlvbkJpdHMgUGFzdGVib2FyZFN5bmNGbGFnczsKZW51bSB7CiMgMTM0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUGFzdGVib2FyZC5oIiAzCiAga1Bhc3Rl
Ym9hcmRNb2RpZmllZCA9ICgxIDw8IDApLAoKCgoKCgoKICBrUGFzdGVib2FyZENsaWVudElzT3du
ZXIgPSAoMSA8PCAxKQp9OwojIDE4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL1Bhc3RlYm9hcmQuaCIgMwojZGVmaW5lIGtQYXN0ZWJvYXJkVHlwZUZpbGVVUkxQcm9t
aXNlIENGU1RSKCJjb20uYXBwbGUucGFzdGVib2FyZC5wcm9taXNlZC1maWxlLXVybCIpCiMgMTkz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUGFzdGVib2FyZC5oIiAz
CiNkZWZpbmUga1Bhc3RlYm9hcmRUeXBlRmlsZVByb21pc2VDb250ZW50IENGU1RSKCJjb20uYXBw
bGUucGFzdGVib2FyZC5wcm9taXNlZC1maWxlLWNvbnRlbnQtdHlwZSIpCiMgMjA3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUGFzdGVib2FyZC5oIiAzCnR5cGVkZWYg
T3B0aW9uQml0cyBQYXN0ZWJvYXJkRmxhdm9yRmxhZ3M7CmVudW0gewoKCgoKICBrUGFzdGVib2Fy
ZEZsYXZvck5vRmxhZ3MgPSAwLAoKCgoKCgoKICBrUGFzdGVib2FyZEZsYXZvclNlbmRlck9ubHkg
PSAoMSA8PCAwKSwKCgoKCgoKICBrUGFzdGVib2FyZEZsYXZvclNlbmRlclRyYW5zbGF0ZWQgPSAo
MSA8PCAxKSwKCgoKCgoKCiAga1Bhc3RlYm9hcmRGbGF2b3JOb3RTYXZlZCA9ICgxIDw8IDIpLAoj
IDI0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Bhc3RlYm9hcmQu
aCIgMwogIGtQYXN0ZWJvYXJkRmxhdm9yUmVxdWVzdE9ubHkgPSAoMSA8PCAzKSwKIyAyNTcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9QYXN0ZWJvYXJkLmgiIDMKICBr
UGFzdGVib2FyZEZsYXZvclN5c3RlbVRyYW5zbGF0ZWQgPSAoMSA8PCA4KSwKIyAyNjcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9QYXN0ZWJvYXJkLmgiIDMKICBrUGFz
dGVib2FyZEZsYXZvclByb21pc2VkID0gKDEgPDwgOSkKfTsKIyAyODAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9QYXN0ZWJvYXJkLmgiIDMKdHlwZWRlZiBPU1R5cGUg
UGFzdGVib2FyZFN0YW5kYXJkTG9jYXRpb247CmVudW0gewoKCgoKCgoKICBrUGFzdGVib2FyZFN0
YW5kYXJkTG9jYXRpb25UcmFzaCA9ICd0cnNoJywKCgoKCiAga1Bhc3RlYm9hcmRTdGFuZGFyZExv
Y2F0aW9uVW5rbm93biA9ICd1bmtuJwp9OwojIDMxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL1Bhc3RlYm9hcmQuaCIgMwpleHRlcm4gQ0ZUeXBlSUQKUGFzdGVib2Fy
ZEdldFR5cGVJRCh2b2lkKSA7CgoKI2RlZmluZSBrUGFzdGVib2FyZENsaXBib2FyZCBDRlNUUigi
Y29tLmFwcGxlLnBhc3RlYm9hcmQuY2xpcGJvYXJkIikKI2RlZmluZSBrUGFzdGVib2FyZEZpbmQg
Q0ZTVFIoImNvbS5hcHBsZS5wYXN0ZWJvYXJkLmZpbmQiKQojZGVmaW5lIGtQYXN0ZWJvYXJkVW5p
cXVlTmFtZSAoQ0ZTdHJpbmdSZWYpTlVMTAojIDM2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL1Bhc3RlYm9hcmQuaCIgMwpleHRlcm4gT1NTdGF0dXMKUGFzdGVib2Fy
ZENyZWF0ZSgKICBDRlN0cmluZ1JlZiBpbk5hbWUsCiAgUGFzdGVib2FyZFJlZiAqIG91dFBhc3Rl
Ym9hcmQpIDsKIyAzOTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9Q
YXN0ZWJvYXJkLmgiIDMKZXh0ZXJuIFBhc3RlYm9hcmRTeW5jRmxhZ3MKUGFzdGVib2FyZFN5bmNo
cm9uaXplKFBhc3RlYm9hcmRSZWYgaW5QYXN0ZWJvYXJkKSA7CiMgNDI5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUGFzdGVib2FyZC5oIiAzCmV4dGVybiBPU1N0YXR1
cwpQYXN0ZWJvYXJkQ2xlYXIoUGFzdGVib2FyZFJlZiBpblBhc3RlYm9hcmQpIDsKIyA0NjEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9QYXN0ZWJvYXJkLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzClBhc3RlYm9hcmRDb3B5TmFtZSgKICBQYXN0ZWJvYXJkUmVmIGluUGFzdGVi
b2FyZCwKICBDRlN0cmluZ1JlZiAqIG91dE5hbWUpIDsKIyA0OTMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9QYXN0ZWJvYXJkLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBh
c3RlYm9hcmRHZXRJdGVtQ291bnQoCiAgUGFzdGVib2FyZFJlZiBpblBhc3RlYm9hcmQsCiAgSXRl
bUNvdW50ICogb3V0SXRlbUNvdW50KSA7CiMgNTI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJh
bWV3b3JrL0hlYWRlcnMvUGFzdGVib2FyZC5oIiAzCmV4dGVybiBPU1N0YXR1cwpQYXN0ZWJvYXJk
R2V0SXRlbUlkZW50aWZpZXIoCiAgUGFzdGVib2FyZFJlZiBpblBhc3RlYm9hcmQsCiAgQ0ZJbmRl
eCBpbkluZGV4LAogIFBhc3RlYm9hcmRJdGVtSUQgKiBvdXRJdGVtKSA7CiMgNTY2ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvUGFzdGVib2FyZC5oIiAzCmV4dGVybiBP
U1N0YXR1cwpQYXN0ZWJvYXJkQ29weUl0ZW1GbGF2b3JzKAogIFBhc3RlYm9hcmRSZWYgaW5QYXN0
ZWJvYXJkLAogIFBhc3RlYm9hcmRJdGVtSUQgaW5JdGVtLAogIENGQXJyYXlSZWYgKiBvdXRGbGF2
b3JUeXBlcykgOwojIDYwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L1Bhc3RlYm9hcmQuaCIgMwpleHRlcm4gT1NTdGF0dXMKUGFzdGVib2FyZEdldEl0ZW1GbGF2b3JG
bGFncygKICBQYXN0ZWJvYXJkUmVmIGluUGFzdGVib2FyZCwKICBQYXN0ZWJvYXJkSXRlbUlEIGlu
SXRlbSwKICBDRlN0cmluZ1JlZiBpbkZsYXZvclR5cGUsCiAgUGFzdGVib2FyZEZsYXZvckZsYWdz
ICogb3V0RmxhZ3MpIDsKIyA2NDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9QYXN0ZWJvYXJkLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBhc3RlYm9hcmRDb3B5SXRlbUZs
YXZvckRhdGEoCiAgUGFzdGVib2FyZFJlZiBpblBhc3RlYm9hcmQsCiAgUGFzdGVib2FyZEl0ZW1J
RCBpbkl0ZW0sCiAgQ0ZTdHJpbmdSZWYgaW5GbGF2b3JUeXBlLAogIENGRGF0YVJlZiAqIG91dERh
dGEpIDsKCgojZGVmaW5lIGtQYXN0ZWJvYXJkUHJvbWlzZWREYXRhIChDRkRhdGFSZWYpTlVMTAoj
IDcwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1Bhc3RlYm9hcmQu
aCIgMwpleHRlcm4gT1NTdGF0dXMKUGFzdGVib2FyZFB1dEl0ZW1GbGF2b3IoCiAgUGFzdGVib2Fy
ZFJlZiBpblBhc3RlYm9hcmQsCiAgUGFzdGVib2FyZEl0ZW1JRCBpbkl0ZW0sCiAgQ0ZTdHJpbmdS
ZWYgaW5GbGF2b3JUeXBlLAogIENGRGF0YVJlZiBpbkRhdGEsCiAgUGFzdGVib2FyZEZsYXZvckZs
YWdzIGluRmxhZ3MpIDsKIyA3NDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9QYXN0ZWJvYXJkLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBhc3RlYm9hcmRDb3B5UGFzdGVM
b2NhdGlvbigKICBQYXN0ZWJvYXJkUmVmIGluUGFzdGVib2FyZCwKICBDRlVSTFJlZiAqIG91dFBh
c3RlTG9jYXRpb24pIDsKIyA3NzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9QYXN0ZWJvYXJkLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBhc3RlYm9hcmRTZXRQYXN0ZUxv
Y2F0aW9uKAogIFBhc3RlYm9hcmRSZWYgaW5QYXN0ZWJvYXJkLAogIENGVVJMUmVmIGluUGFzdGVM
b2NhdGlvbikgOwojIDgxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJz
L1Bhc3RlYm9hcmQuaCIgMwp0eXBlZGVmIE9TU3RhdHVzICggKiBQYXN0ZWJvYXJkUHJvbWlzZUtl
ZXBlclByb2NQdHIpKFBhc3RlYm9hcmRSZWYgcGFzdGVib2FyZCwgUGFzdGVib2FyZEl0ZW1JRCBp
dGVtLCBDRlN0cmluZ1JlZiBmbGF2b3JUeXBlLCB2b2lkICpjb250ZXh0KTsKIyA4NDIgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9QYXN0ZWJvYXJkLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzClBhc3RlYm9hcmRTZXRQcm9taXNlS2VlcGVyKAogIFBhc3RlYm9hcmRSZWYgaW5Q
YXN0ZWJvYXJkLAogIFBhc3RlYm9hcmRQcm9taXNlS2VlcGVyUHJvY1B0ciBpblByb21pc2VLZWVw
ZXIsCiAgdm9pZCAqIGluQ29udGV4dCkgOwoKCiNkZWZpbmUga1Bhc3RlYm9hcmRSZXNvbHZlQWxs
UHJvbWlzZXMgKFBhc3RlYm9hcmRSZWYpTlVMTAojIDg3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL1Bhc3RlYm9hcmQuaCIgMwpleHRlcm4gT1NTdGF0dXMKUGFzdGVi
b2FyZFJlc29sdmVQcm9taXNlcyhQYXN0ZWJvYXJkUmVmIGluUGFzdGVib2FyZCkgOwoKCgoKfQoj
IDQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSElTZXJ2aWNlcy5o
IiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVHJh
bnNsYXRpb25TZXJ2aWNlcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzL1RyYW5zbGF0aW9uU2VydmljZXMuaCIgMwojZGVmaW5lIF9fVFJBTlNMQVRJ
T05TRVJWSUNFU19fIAojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvVHJhbnNsYXRpb25TZXJ2aWNlcy5oIiAzCmV4dGVybiAiQyIgewojIDExOSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1RyYW5zbGF0aW9uU2VydmljZXMuaCIgMwp0
eXBlZGVmIHN0cnVjdCBPcGFxdWVUcmFuc2xhdGlvblJlZiogVHJhbnNsYXRpb25SZWY7CgplbnVt
IHsKCgoKCgogIGJhZFRyYW5zbGF0aW9uUmVmRXJyID0gLTMwMzEKfTsKIyAxNDIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9UcmFuc2xhdGlvblNlcnZpY2VzLmgiIDMK
dHlwZWRlZiBPcHRpb25CaXRzIFRyYW5zbGF0aW9uRmxhZ3M7CmVudW0gewoKCgoKCiAga1RyYW5z
bGF0aW9uRGF0YVRyYW5zbGF0aW9uID0gKDEgPDwgMCksCgoKCgoKICBrVHJhbnNsYXRpb25GaWxl
VHJhbnNsYXRpb24gPSAoMSA8PCAxKQp9OwojIDE3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL1RyYW5zbGF0aW9uU2VydmljZXMuaCIgMwpleHRlcm4gQ0ZUeXBlSUQK
VHJhbnNsYXRpb25HZXRUeXBlSUQodm9pZCkgOwojIDIxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL1RyYW5zbGF0aW9uU2VydmljZXMuaCIgMwpleHRlcm4gT1NTdGF0
dXMKVHJhbnNsYXRpb25DcmVhdGUoCiAgQ0ZTdHJpbmdSZWYgaW5Tb3VyY2VUeXBlLAogIENGU3Ry
aW5nUmVmIGluRGVzdGluYXRpb25UeXBlLAogIFRyYW5zbGF0aW9uRmxhZ3MgaW5UcmFuc2xhdGlv
bkZsYWdzLAogIFRyYW5zbGF0aW9uUmVmICogb3V0VHJhbnNsYXRpb24pIDsKIyAyNzEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9UcmFuc2xhdGlvblNlcnZpY2VzLmgi
IDMKZXh0ZXJuIE9TU3RhdHVzClRyYW5zbGF0aW9uQ3JlYXRlV2l0aFNvdXJjZUFycmF5KAogIENG
QXJyYXlSZWYgaW5Tb3VyY2VUeXBlcywKICBUcmFuc2xhdGlvbkZsYWdzIGluVHJhbnNsYXRpb25G
bGFncywKICBDRkFycmF5UmVmICogb3V0RGVzdGluYXRpb25UeXBlcywKICBDRkRpY3Rpb25hcnlS
ZWYgKiBvdXRUcmFuc2xhdGlvbnMpIDsKIyAzMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9UcmFuc2xhdGlvblNlcnZpY2VzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRy
YW5zbGF0aW9uUGVyZm9ybUZvckRhdGEoCiAgVHJhbnNsYXRpb25SZWYgaW5UcmFuc2xhdGlvbiwK
ICBDRkRhdGFSZWYgaW5Tb3VyY2VEYXRhLAogIENGRGF0YVJlZiAqIG91dERlc3RpbmF0aW9uRGF0
YSkgOwojIDM3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1RyYW5z
bGF0aW9uU2VydmljZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKVHJhbnNsYXRpb25QZXJmb3JtRm9y
RmlsZSgKICBUcmFuc2xhdGlvblJlZiBpblRyYW5zbGF0aW9uLAogIGNvbnN0IEZTUmVmICogaW5T
b3VyY2VGaWxlLAogIGNvbnN0IEZTUmVmICogaW5EZXN0aW5hdGlvbkRpcmVjdG9yeSwKICBDRlN0
cmluZ1JlZiBpbkRlc3RpbmF0aW9uTmFtZSwKICBGU1JlZiAqIG91dFRyYW5zbGF0ZWRGaWxlKSA7
CiMgNDI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVHJhbnNsYXRp
b25TZXJ2aWNlcy5oIiAzCmV4dGVybiBPU1N0YXR1cwpUcmFuc2xhdGlvblBlcmZvcm1Gb3JVUkwo
CiAgVHJhbnNsYXRpb25SZWYgaW5UcmFuc2xhdGlvbiwKICBDRlVSTFJlZiBpblNvdXJjZVVSTCwK
ICBDRlVSTFJlZiBpbkRlc3RpbmF0aW9uVVJMLAogIENGVVJMUmVmICogb3V0VHJhbnNsYXRlZFVS
TCkgOwojIDQ2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1RyYW5z
bGF0aW9uU2VydmljZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKVHJhbnNsYXRpb25Db3B5U291cmNl
VHlwZSgKICBUcmFuc2xhdGlvblJlZiBpblRyYW5zbGF0aW9uLAogIENGU3RyaW5nUmVmICogb3V0
U291cmNlVHlwZSkgOwojIDQ5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFk
ZXJzL1RyYW5zbGF0aW9uU2VydmljZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKVHJhbnNsYXRpb25D
b3B5RGVzdGluYXRpb25UeXBlKAogIFRyYW5zbGF0aW9uUmVmIGluVHJhbnNsYXRpb24sCiAgQ0ZT
dHJpbmdSZWYgKiBvdXREZXN0aW5hdGlvblR5cGUpIDsKIyA1MjUgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9UcmFuc2xhdGlvblNlcnZpY2VzLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzClRyYW5zbGF0aW9uR2V0VHJhbnNsYXRpb25GbGFncygKICBUcmFuc2xhdGlvblJlZiBp
blRyYW5zbGF0aW9uLAogIFRyYW5zbGF0aW9uRmxhZ3MgKiBvdXRUcmFuc2xhdGlvbkZsYWdzKSA7
CgoKCgp9CiMgNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9ISVNl
cnZpY2VzLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9BY2Nlc3NpYmlsaXR5LmgiIDEgMwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9BY2Nlc3NpYmlsaXR5LmgiIDMKI2RlZmluZSBfX0FDQ0VTU0lCSUxJVFlf
XyAKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYRXJyb3Iu
aCIgMSAzCiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYRXJy
b3IuaCIgMwojZGVmaW5lIF9fQVhFUlJPUl9fIAoKCmV4dGVybiAiQyIgewoKCgoKZW51bSB7CiAg
ICBrQVhFcnJvclN1Y2Nlc3MgPSAwLAogICAga0FYRXJyb3JGYWlsdXJlID0gLTI1MjAwLAogICAg
a0FYRXJyb3JJbGxlZ2FsQXJndW1lbnQgPSAtMjUyMDEsCiAgICBrQVhFcnJvckludmFsaWRVSUVs
ZW1lbnQgPSAtMjUyMDIsCiAgICBrQVhFcnJvckludmFsaWRVSUVsZW1lbnRPYnNlcnZlciA9IC0y
NTIwMywKICAgIGtBWEVycm9yQ2Fubm90Q29tcGxldGUgPSAtMjUyMDQsCiAgICBrQVhFcnJvckF0
dHJpYnV0ZVVuc3VwcG9ydGVkID0gLTI1MjA1LAogICAga0FYRXJyb3JBY3Rpb25VbnN1cHBvcnRl
ZCA9IC0yNTIwNiwKICAgIGtBWEVycm9yTm90aWZpY2F0aW9uVW5zdXBwb3J0ZWQgPSAtMjUyMDcs
CiAgICBrQVhFcnJvck5vdEltcGxlbWVudGVkID0gLTI1MjA4LAogICAga0FYRXJyb3JOb3RpZmlj
YXRpb25BbHJlYWR5UmVnaXN0ZXJlZCA9IC0yNTIwOSwKICAgIGtBWEVycm9yTm90aWZpY2F0aW9u
Tm90UmVnaXN0ZXJlZCA9IC0yNTIxMCwKICAgIGtBWEVycm9yQVBJRGlzYWJsZWQgPSAtMjUyMTEs
CiAgICBrQVhFcnJvck5vVmFsdWUgPSAtMjUyMTIsCiAgICBrQVhFcnJvclBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVVbnN1cHBvcnRlZCA9IC0yNTIxMywKIGtBWEVycm9yTm90RW5vdWdoUHJlY2lzaW9u
ID0gLTI1MjE0Cn07CnR5cGVkZWYgU0ludDMyIEFYRXJyb3I7CgoKCn0KIyAxMiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FjY2Vzc2liaWxpdHkuaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQ29uc3RhbnRzLmgiIDEg
MwojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhDb25zdGFu
dHMuaCIgMwojZGVmaW5lIF9fQVhDT05TVEFOVFNfXyAKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZp
Y2VzLmZyYW1ld29yay9IZWFkZXJzL0FYUm9sZUNvbnN0YW50cy5oIiAxIDMKIyAxMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYUm9sZUNvbnN0YW50cy5oIiAzCiNk
ZWZpbmUgX19BWFJPTEVDT05TVEFOVFNfXyAKIyA1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL0FYUm9sZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYQXBwbGljYXRp
b25Sb2xlIENGU1RSKCJBWEFwcGxpY2F0aW9uIikKI2RlZmluZSBrQVhTeXN0ZW1XaWRlUm9sZSBD
RlNUUigiQVhTeXN0ZW1XaWRlIikKI2RlZmluZSBrQVhXaW5kb3dSb2xlIENGU1RSKCJBWFdpbmRv
dyIpCiNkZWZpbmUga0FYU2hlZXRSb2xlIENGU1RSKCJBWFNoZWV0IikKI2RlZmluZSBrQVhEcmF3
ZXJSb2xlIENGU1RSKCJBWERyYXdlciIpCiNkZWZpbmUga0FYR3Jvd0FyZWFSb2xlIENGU1RSKCJB
WEdyb3dBcmVhIikKI2RlZmluZSBrQVhJbWFnZVJvbGUgQ0ZTVFIoIkFYSW1hZ2UiKQojZGVmaW5l
IGtBWFVua25vd25Sb2xlIENGU1RSKCJBWFVua25vd24iKQojZGVmaW5lIGtBWEJ1dHRvblJvbGUg
Q0ZTVFIoIkFYQnV0dG9uIikKI2RlZmluZSBrQVhSYWRpb0J1dHRvblJvbGUgQ0ZTVFIoIkFYUmFk
aW9CdXR0b24iKQojZGVmaW5lIGtBWENoZWNrQm94Um9sZSBDRlNUUigiQVhDaGVja0JveCIpCiNk
ZWZpbmUga0FYUG9wVXBCdXR0b25Sb2xlIENGU1RSKCJBWFBvcFVwQnV0dG9uIikKI2RlZmluZSBr
QVhNZW51QnV0dG9uUm9sZSBDRlNUUigiQVhNZW51QnV0dG9uIikKI2RlZmluZSBrQVhUYWJHcm91
cFJvbGUgQ0ZTVFIoIkFYVGFiR3JvdXAiKQojZGVmaW5lIGtBWFRhYmxlUm9sZSBDRlNUUigiQVhU
YWJsZSIpCiNkZWZpbmUga0FYQ29sdW1uUm9sZSBDRlNUUigiQVhDb2x1bW4iKQojZGVmaW5lIGtB
WFJvd1JvbGUgQ0ZTVFIoIkFYUm93IikKIyAxMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9BWFJvbGVDb25zdGFudHMuaCIgMwojZGVmaW5lIGtBWE91dGxpbmVSb2xl
IENGU1RSKCJBWE91dGxpbmUiKQojIDE2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0FYUm9sZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYQnJvd3NlclJvbGUgQ0ZT
VFIoIkFYQnJvd3NlciIpCiNkZWZpbmUga0FYU2Nyb2xsQXJlYVJvbGUgQ0ZTVFIoIkFYU2Nyb2xs
QXJlYSIpCiNkZWZpbmUga0FYU2Nyb2xsQmFyUm9sZSBDRlNUUigiQVhTY3JvbGxCYXIiKQojZGVm
aW5lIGtBWFJhZGlvR3JvdXBSb2xlIENGU1RSKCJBWFJhZGlvR3JvdXAiKQojZGVmaW5lIGtBWExp
c3RSb2xlIENGU1RSKCJBWExpc3QiKQojZGVmaW5lIGtBWEdyb3VwUm9sZSBDRlNUUigiQVhHcm91
cCIpCiNkZWZpbmUga0FYVmFsdWVJbmRpY2F0b3JSb2xlIENGU1RSKCJBWFZhbHVlSW5kaWNhdG9y
IikKI2RlZmluZSBrQVhDb21ib0JveFJvbGUgQ0ZTVFIoIkFYQ29tYm9Cb3giKQojZGVmaW5lIGtB
WFNsaWRlclJvbGUgQ0ZTVFIoIkFYU2xpZGVyIikKI2RlZmluZSBrQVhJbmNyZW1lbnRvclJvbGUg
Q0ZTVFIoIkFYSW5jcmVtZW50b3IiKQojZGVmaW5lIGtBWEJ1c3lJbmRpY2F0b3JSb2xlIENGU1RS
KCJBWEJ1c3lJbmRpY2F0b3IiKQojZGVmaW5lIGtBWFByb2dyZXNzSW5kaWNhdG9yUm9sZSBDRlNU
UigiQVhQcm9ncmVzc0luZGljYXRvciIpCiNkZWZpbmUga0FYUmVsZXZhbmNlSW5kaWNhdG9yUm9s
ZSBDRlNUUigiQVhSZWxldmFuY2VJbmRpY2F0b3IiKQojZGVmaW5lIGtBWFRvb2xiYXJSb2xlIENG
U1RSKCJBWFRvb2xiYXIiKQojZGVmaW5lIGtBWERpc2Nsb3N1cmVUcmlhbmdsZVJvbGUgQ0ZTVFIo
IkFYRGlzY2xvc3VyZVRyaWFuZ2xlIikKCgojZGVmaW5lIGtBWFRleHRGaWVsZFJvbGUgQ0ZTVFIo
IkFYVGV4dEZpZWxkIikKI2RlZmluZSBrQVhUZXh0QXJlYVJvbGUgQ0ZTVFIoIkFYVGV4dEFyZWEi
KQojZGVmaW5lIGtBWFN0YXRpY1RleHRSb2xlIENGU1RSKCJBWFN0YXRpY1RleHQiKQoKI2RlZmlu
ZSBrQVhNZW51QmFyUm9sZSBDRlNUUigiQVhNZW51QmFyIikKI2RlZmluZSBrQVhNZW51QmFySXRl
bVJvbGUgQ0ZTVFIoIkFYTWVudUJhckl0ZW0iKQojZGVmaW5lIGtBWE1lbnVSb2xlIENGU1RSKCJB
WE1lbnUiKQojZGVmaW5lIGtBWE1lbnVJdGVtUm9sZSBDRlNUUigiQVhNZW51SXRlbSIpCgojZGVm
aW5lIGtBWFNwbGl0R3JvdXBSb2xlIENGU1RSKCJBWFNwbGl0R3JvdXAiKQojZGVmaW5lIGtBWFNw
bGl0dGVyUm9sZSBDRlNUUigiQVhTcGxpdHRlciIpCiNkZWZpbmUga0FYQ29sb3JXZWxsUm9sZSBD
RlNUUigiQVhDb2xvcldlbGwiKQoKI2RlZmluZSBrQVhUaW1lRmllbGRSb2xlIENGU1RSKCJBWFRp
bWVGaWVsZCIpCiNkZWZpbmUga0FYRGF0ZUZpZWxkUm9sZSBDRlNUUigiQVhEYXRlRmllbGQiKQoK
I2RlZmluZSBrQVhIZWxwVGFnUm9sZSBDRlNUUigiQVhIZWxwVGFnIikKCiNkZWZpbmUga0FYTWF0
dGVSb2xlIENGU1RSKCJBWE1hdHRlUm9sZSIpCgojZGVmaW5lIGtBWERvY2tJdGVtUm9sZSBDRlNU
UigiQVhEb2NrSXRlbSIpCgojZGVmaW5lIGtBWFJ1bGVyUm9sZSBDRlNUUigiQVhSdWxlciIpCiNk
ZWZpbmUga0FYUnVsZXJNYXJrZXJSb2xlIENGU1RSKCJBWFJ1bGVyTWFya2VyIikKCiNkZWZpbmUg
a0FYR3JpZFJvbGUgQ0ZTVFIoIkFYR3JpZCIpCgojZGVmaW5lIGtBWExldmVsSW5kaWNhdG9yUm9s
ZSBDRlNUUigiQVhMZXZlbEluZGljYXRvciIpCgojZGVmaW5lIGtBWENlbGxSb2xlIENGU1RSKCJB
WENlbGwiKQoKI2RlZmluZSBrQVhMYXlvdXRBcmVhUm9sZSBDRlNUUigiQVhMYXlvdXRBcmVhIikK
I2RlZmluZSBrQVhMYXlvdXRJdGVtUm9sZSBDRlNUUigiQVhMYXlvdXRJdGVtIikKI2RlZmluZSBr
QVhIYW5kbGVSb2xlIENGU1RSKCJBWEhhbmRsZSIpCgoKCgoKCgojZGVmaW5lIGtBWENsb3NlQnV0
dG9uU3Vicm9sZSBDRlNUUigiQVhDbG9zZUJ1dHRvbiIpCiNkZWZpbmUga0FYTWluaW1pemVCdXR0
b25TdWJyb2xlIENGU1RSKCJBWE1pbmltaXplQnV0dG9uIikKI2RlZmluZSBrQVhab29tQnV0dG9u
U3Vicm9sZSBDRlNUUigiQVhab29tQnV0dG9uIikKI2RlZmluZSBrQVhUb29sYmFyQnV0dG9uU3Vi
cm9sZSBDRlNUUigiQVhUb29sYmFyQnV0dG9uIikKI2RlZmluZSBrQVhTZWN1cmVUZXh0RmllbGRT
dWJyb2xlIENGU1RSKCJBWFNlY3VyZVRleHRGaWVsZCIpCiNkZWZpbmUga0FYVGFibGVSb3dTdWJy
b2xlIENGU1RSKCJBWFRhYmxlUm93IikKI2RlZmluZSBrQVhPdXRsaW5lUm93U3Vicm9sZSBDRlNU
UigiQVhPdXRsaW5lUm93IikKI2RlZmluZSBrQVhVbmtub3duU3Vicm9sZSBDRlNUUigiQVhVbmtu
b3duIikKCgojZGVmaW5lIGtBWFN0YW5kYXJkV2luZG93U3Vicm9sZSBDRlNUUigiQVhTdGFuZGFy
ZFdpbmRvdyIpCiNkZWZpbmUga0FYRGlhbG9nU3Vicm9sZSBDRlNUUigiQVhEaWFsb2ciKQojZGVm
aW5lIGtBWFN5c3RlbURpYWxvZ1N1YnJvbGUgQ0ZTVFIoIkFYU3lzdGVtRGlhbG9nIikKI2RlZmlu
ZSBrQVhGbG9hdGluZ1dpbmRvd1N1YnJvbGUgQ0ZTVFIoIkFYRmxvYXRpbmdXaW5kb3ciKQojZGVm
aW5lIGtBWFN5c3RlbUZsb2F0aW5nV2luZG93U3Vicm9sZSBDRlNUUigiQVhTeXN0ZW1GbG9hdGlu
Z1dpbmRvdyIpCiNkZWZpbmUga0FYSW5jcmVtZW50QXJyb3dTdWJyb2xlIENGU1RSKCJBWEluY3Jl
bWVudEFycm93IikKI2RlZmluZSBrQVhEZWNyZW1lbnRBcnJvd1N1YnJvbGUgQ0ZTVFIoIkFYRGVj
cmVtZW50QXJyb3ciKQojZGVmaW5lIGtBWEluY3JlbWVudFBhZ2VTdWJyb2xlIENGU1RSKCJBWElu
Y3JlbWVudFBhZ2UiKQojZGVmaW5lIGtBWERlY3JlbWVudFBhZ2VTdWJyb2xlIENGU1RSKCJBWERl
Y3JlbWVudFBhZ2UiKQojZGVmaW5lIGtBWFNvcnRCdXR0b25TdWJyb2xlIENGU1RSKCJBWFNvcnRC
dXR0b24iKQojZGVmaW5lIGtBWFNlYXJjaEZpZWxkU3Vicm9sZSBDRlNUUigiQVhTZWFyY2hGaWVs
ZCIpCiNkZWZpbmUga0FYVGltZWxpbmVTdWJyb2xlIENGU1RSKCJBWFRpbWVsaW5lIikKI2RlZmlu
ZSBrQVhSYXRpbmdJbmRpY2F0b3JTdWJyb2xlIENGU1RSKCJBWFJhdGluZ0luZGljYXRvciIpCiNk
ZWZpbmUga0FYQ29udGVudExpc3RTdWJyb2xlIENGU1RSKCJBWENvbnRlbnRMaXN0IikKI2RlZmlu
ZSBrQVhEZWZpbml0aW9uTGlzdFN1YnJvbGUgQ0ZTVFIoIkFYRGVmaW5pdGlvbkxpc3QiKQoKCiNk
ZWZpbmUga0FYQXBwbGljYXRpb25Eb2NrSXRlbVN1YnJvbGUgQ0ZTVFIoIkFYQXBwbGljYXRpb25E
b2NrSXRlbSIpCiNkZWZpbmUga0FYRG9jdW1lbnREb2NrSXRlbVN1YnJvbGUgQ0ZTVFIoIkFYRG9j
dW1lbnREb2NrSXRlbSIpCiNkZWZpbmUga0FYRm9sZGVyRG9ja0l0ZW1TdWJyb2xlIENGU1RSKCJB
WEZvbGRlckRvY2tJdGVtIikKI2RlZmluZSBrQVhNaW5pbWl6ZWRXaW5kb3dEb2NrSXRlbVN1YnJv
bGUgQ0ZTVFIoIkFYTWluaW1pemVkV2luZG93RG9ja0l0ZW0iKQojZGVmaW5lIGtBWFVSTERvY2tJ
dGVtU3Vicm9sZSBDRlNUUigiQVhVUkxEb2NrSXRlbSIpCiNkZWZpbmUga0FYRG9ja0V4dHJhRG9j
a0l0ZW1TdWJyb2xlIENGU1RSKCJBWERvY2tFeHRyYURvY2tJdGVtIikKI2RlZmluZSBrQVhUcmFz
aERvY2tJdGVtU3Vicm9sZSBDRlNUUigiQVhUcmFzaERvY2tJdGVtIikKI2RlZmluZSBrQVhQcm9j
ZXNzU3dpdGNoZXJMaXN0U3Vicm9sZSBDRlNUUigiQVhQcm9jZXNzU3dpdGNoZXJMaXN0IikKIyAx
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQ29uc3RhbnRzLmgi
IDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BWEF0dHJp
YnV0ZUNvbnN0YW50cy5oIiAxIDMKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgiIDMKI2RlZmluZSBfX0FYQVRUUklCVVRF
Q09OU1RBTlRTX18gCiMgMTc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIgMwojZGVmaW5lIGtBWFJvbGVBdHRyaWJ1dGUgQ0ZT
VFIoIkFYUm9sZSIpCiMgMjAzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIgMwojZGVmaW5lIGtBWFN1YnJvbGVBdHRyaWJ1dGUg
Q0ZTVFIoIkFYU3Vicm9sZSIpCiMgMjI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIgMwojZGVmaW5lIGtBWFJvbGVEZXNjcmlw
dGlvbkF0dHJpYnV0ZSBDRlNUUigiQVhSb2xlRGVzY3JpcHRpb24iKQojIDI0NCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgiIDMK
I2RlZmluZSBrQVhIZWxwQXR0cmlidXRlIENGU1RSKCJBWEhlbHAiKQojIDI2MCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgiIDMK
I2RlZmluZSBrQVhUaXRsZUF0dHJpYnV0ZSBDRlNUUigiQVhUaXRsZSIpCiMgMjg2ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIg
MwojZGVmaW5lIGtBWFZhbHVlQXR0cmlidXRlIENGU1RSKCJBWFZhbHVlIikKIyAzMDcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNvbnN0YW50cy5o
IiAzCiNkZWZpbmUga0FYVmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZSBDRlNUUigiQVhWYWx1ZURl
c2NyaXB0aW9uIikKIyAzMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9BWEF0dHJpYnV0ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYTWluVmFsdWVBdHRyaWJ1dGUg
Q0ZTVFIoIkFYTWluVmFsdWUiKQojIDM0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgiIDMKI2RlZmluZSBrQVhNYXhWYWx1ZUF0
dHJpYnV0ZSBDRlNUUigiQVhNYXhWYWx1ZSIpCiMgMzYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMu
ZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIgMwojZGVmaW5lIGtBWFZh
bHVlSW5jcmVtZW50QXR0cmlidXRlIENGU1RSKCJBWFZhbHVlSW5jcmVtZW50IikKIyAzNzcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNvbnN0YW50
cy5oIiAzCiNkZWZpbmUga0FYQWxsb3dlZFZhbHVlc0F0dHJpYnV0ZSBDRlNUUigiQVhBbGxvd2Vk
VmFsdWVzIikKIyAzOTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9B
WEF0dHJpYnV0ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYUGxhY2Vob2xkZXJWYWx1ZUF0dHJp
YnV0ZSBDRlNUUigiQVhQbGFjZWhvbGRlclZhbHVlIikKIyA0MDYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2
aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUg
a0FYRW5hYmxlZEF0dHJpYnV0ZSBDRlNUUigiQVhFbmFibGVkIikKIyA0MjUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNvbnN0YW50cy5oIiAzCiNk
ZWZpbmUga0FYRm9jdXNlZEF0dHJpYnV0ZSBDRlNUUigiQVhGb2N1c2VkIikKIyA0NDMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNvbnN0YW50cy5o
IiAzCiNkZWZpbmUga0FYUGFyZW50QXR0cmlidXRlIENGU1RSKCJBWFBhcmVudCIpCiMgNDY0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFu
dHMuaCIgMwojZGVmaW5lIGtBWENoaWxkcmVuQXR0cmlidXRlIENGU1RSKCJBWENoaWxkcmVuIikK
IyA0ODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0
ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYU2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSBDRlNU
UigiQVhTZWxlY3RlZENoaWxkcmVuIikKIyA1MDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYVmlzaWJs
ZUNoaWxkcmVuQXR0cmlidXRlIENGU1RSKCJBWFZpc2libGVDaGlsZHJlbiIpCiMgNTE5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMu
aCIgMwojZGVmaW5lIGtBWFdpbmRvd0F0dHJpYnV0ZSBDRlNUUigiQVhXaW5kb3ciKQojIDUzNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3Rh
bnRzLmgiIDMKI2RlZmluZSBrQVhUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZSBDRlNUUigiQVhU
b3BMZXZlbFVJRWxlbWVudCIpCiMgNTU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIgMwojZGVmaW5lIGtBWFBvc2l0aW9uQXR0
cmlidXRlIENGU1RSKCJBWFBvc2l0aW9uIikKIyA1NzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYU2l6
ZUF0dHJpYnV0ZSBDRlNUUigiQVhTaXplIikKIyA1OTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYT3Jp
ZW50YXRpb25BdHRyaWJ1dGUgQ0ZTVFIoIkFYT3JpZW50YXRpb24iKQojIDYxMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgiIDMK
I2RlZmluZSBrQVhEZXNjcmlwdGlvbkF0dHJpYnV0ZSBDRlNUUigiQVhEZXNjcmlwdGlvbiIpCiNk
ZWZpbmUga0FYRGVzY3JpcHRpb24gQ0ZTVFIoIkFYRGVzY3JpcHRpb24iKQojIDYyNiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgi
IDMKI2RlZmluZSBrQVhTZWxlY3RlZFRleHRBdHRyaWJ1dGUgQ0ZTVFIoIkFYU2VsZWN0ZWRUZXh0
IikKIyA2NDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BWEF0dHJp
YnV0ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYU2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGUg
Q0ZTVFIoIkFYU2VsZWN0ZWRUZXh0UmFuZ2UiKQojIDY1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgiIDMKI2RlZmluZSBrQVhT
ZWxlY3RlZFRleHRSYW5nZXNBdHRyaWJ1dGUgQ0ZTVFIoIkFYU2VsZWN0ZWRUZXh0UmFuZ2VzIikK
IyA2NzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0
ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYVmlzaWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRl
IENGU1RSKCJBWFZpc2libGVDaGFyYWN0ZXJSYW5nZSIpCiMgNjg2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2Vy
dmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIgMwojZGVmaW5l
IGtBWE51bWJlck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZSBDRlNUUigiQVhOdW1iZXJPZkNoYXJhY3Rl
cnMiKQojIDY5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0
cmlidXRlQ29uc3RhbnRzLmgiIDMKI2RlZmluZSBrQVhTaGFyZWRUZXh0VUlFbGVtZW50c0F0dHJp
YnV0ZSBDRlNUUigiQVhTaGFyZWRUZXh0VUlFbGVtZW50cyIpCiMgNzEwICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIgMwojZGVm
aW5lIGtBWFNoYXJlZENoYXJhY3RlclJhbmdlQXR0cmlidXRlIENGU1RSKCJBWFNoYXJlZENoYXJh
Y3RlclJhbmdlIikKCiNkZWZpbmUga0FYSW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRl
IENGU1RSKCJBWEluc2VydGlvblBvaW50TGluZU51bWJlciIpCiMgNzI4ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIgMwojZGVm
aW5lIGtBWE1haW5BdHRyaWJ1dGUgQ0ZTVFIoIkFYTWFpbiIpCiMgNzQyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
U2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIgMwojZGVm
aW5lIGtBWE1pbmltaXplZEF0dHJpYnV0ZSBDRlNUUigiQVhNaW5pbWl6ZWQiKQojIDc1NyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRz
LmgiIDMKI2RlZmluZSBrQVhDbG9zZUJ1dHRvbkF0dHJpYnV0ZSBDRlNUUigiQVhDbG9zZUJ1dHRv
biIpCiMgNzcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRy
aWJ1dGVDb25zdGFudHMuaCIgMwojZGVmaW5lIGtBWFpvb21CdXR0b25BdHRyaWJ1dGUgQ0ZTVFIo
IkFYWm9vbUJ1dHRvbiIpCiMgNzg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hl
YWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIgMwojZGVmaW5lIGtBWE1pbmltaXplQnV0dG9u
QXR0cmlidXRlIENGU1RSKCJBWE1pbmltaXplQnV0dG9uIikKIyA4MDIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElT
ZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNvbnN0YW50cy5oIiAzCiNkZWZp
bmUga0FYVG9vbGJhckJ1dHRvbkF0dHJpYnV0ZSBDRlNUUigiQVhUb29sYmFyQnV0dG9uIikKIyA4
MTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNv
bnN0YW50cy5oIiAzCiNkZWZpbmUga0FYUHJveHlBdHRyaWJ1dGUgQ0ZTVFIoIkFYUHJveHkiKQoj
IDgzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRl
Q29uc3RhbnRzLmgiIDMKI2RlZmluZSBrQVhHcm93QXJlYUF0dHJpYnV0ZSBDRlNUUigiQVhHcm93
QXJlYSIpCiMgODQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhB
dHRyaWJ1dGVDb25zdGFudHMuaCIgMwojZGVmaW5lIGtBWE1vZGFsQXR0cmlidXRlIENGU1RSKCJB
WE1vZGFsIikKIyA4NjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9B
WEF0dHJpYnV0ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYRGVmYXVsdEJ1dHRvbkF0dHJpYnV0
ZSBDRlNUUigiQVhEZWZhdWx0QnV0dG9uIikKIyA4NzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5m
cmFtZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYQ2Fu
Y2VsQnV0dG9uQXR0cmlidXRlIENGU1RSKCJBWENhbmNlbEJ1dHRvbiIpCgoKI2RlZmluZSBrQVhN
ZW51SXRlbUNtZENoYXJBdHRyaWJ1dGUgQ0ZTVFIoIkFYTWVudUl0ZW1DbWRDaGFyIikKI2RlZmlu
ZSBrQVhNZW51SXRlbUNtZFZpcnR1YWxLZXlBdHRyaWJ1dGUgQ0ZTVFIoIkFYTWVudUl0ZW1DbWRW
aXJ0dWFsS2V5IikKI2RlZmluZSBrQVhNZW51SXRlbUNtZEdseXBoQXR0cmlidXRlIENGU1RSKCJB
WE1lbnVJdGVtQ21kR2x5cGgiKQojZGVmaW5lIGtBWE1lbnVJdGVtQ21kTW9kaWZpZXJzQXR0cmli
dXRlIENGU1RSKCJBWE1lbnVJdGVtQ21kTW9kaWZpZXJzIikKI2RlZmluZSBrQVhNZW51SXRlbU1h
cmtDaGFyQXR0cmlidXRlIENGU1RSKCJBWE1lbnVJdGVtTWFya0NoYXIiKQojZGVmaW5lIGtBWE1l
bnVJdGVtUHJpbWFyeVVJRWxlbWVudEF0dHJpYnV0ZSBDRlNUUigiQVhNZW51SXRlbVByaW1hcnlV
SUVsZW1lbnQiKQoKCiNkZWZpbmUga0FYTWVudUJhckF0dHJpYnV0ZSBDRlNUUigiQVhNZW51QmFy
IikKI2RlZmluZSBrQVhXaW5kb3dzQXR0cmlidXRlIENGU1RSKCJBWFdpbmRvd3MiKQojZGVmaW5l
IGtBWEZyb250bW9zdEF0dHJpYnV0ZSBDRlNUUigiQVhGcm9udG1vc3QiKQojZGVmaW5lIGtBWEhp
ZGRlbkF0dHJpYnV0ZSBDRlNUUigiQVhIaWRkZW4iKQojZGVmaW5lIGtBWE1haW5XaW5kb3dBdHRy
aWJ1dGUgQ0ZTVFIoIkFYTWFpbldpbmRvdyIpCiNkZWZpbmUga0FYRm9jdXNlZFdpbmRvd0F0dHJp
YnV0ZSBDRlNUUigiQVhGb2N1c2VkV2luZG93IikKI2RlZmluZSBrQVhGb2N1c2VkVUlFbGVtZW50
QXR0cmlidXRlIENGU1RSKCJBWEZvY3VzZWRVSUVsZW1lbnQiKQojIDkxMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgiIDMKI2Rl
ZmluZSBrQVhIZWFkZXJBdHRyaWJ1dGUgQ0ZTVFIoIkFYSGVhZGVyIikKI2RlZmluZSBrQVhFZGl0
ZWRBdHRyaWJ1dGUgQ0ZTVFIoIkFYRWRpdGVkIikKI2RlZmluZSBrQVhWYWx1ZVdyYXBzQXR0cmli
dXRlIENGU1RSKCJBWFZhbHVlV3JhcHMiKQojZGVmaW5lIGtBWFRhYnNBdHRyaWJ1dGUgQ0ZTVFIo
IkFYVGFicyIpCiNkZWZpbmUga0FYVGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGUgQ0ZTVFIoIkFYVGl0
bGVVSUVsZW1lbnQiKQojZGVmaW5lIGtBWEhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGUgQ0ZT
VFIoIkFYSG9yaXpvbnRhbFNjcm9sbEJhciIpCiNkZWZpbmUga0FYVmVydGljYWxTY3JvbGxCYXJB
dHRyaWJ1dGUgQ0ZTVFIoIkFYVmVydGljYWxTY3JvbGxCYXIiKQojZGVmaW5lIGtBWE92ZXJmbG93
QnV0dG9uQXR0cmlidXRlIENGU1RSKCJBWE92ZXJmbG93QnV0dG9uIikKI2RlZmluZSBrQVhGaWxl
bmFtZUF0dHJpYnV0ZSBDRlNUUigiQVhGaWxlbmFtZSIpCiNkZWZpbmUga0FYRXhwYW5kZWRBdHRy
aWJ1dGUgQ0ZTVFIoIkFYRXhwYW5kZWQiKQojZGVmaW5lIGtBWFNlbGVjdGVkQXR0cmlidXRlIENG
U1RSKCJBWFNlbGVjdGVkIikKI2RlZmluZSBrQVhTcGxpdHRlcnNBdHRyaWJ1dGUgQ0ZTVFIoIkFY
U3BsaXR0ZXJzIikKI2RlZmluZSBrQVhOZXh0Q29udGVudHNBdHRyaWJ1dGUgQ0ZTVFIoIkFYTmV4
dENvbnRlbnRzIikKI2RlZmluZSBrQVhEb2N1bWVudEF0dHJpYnV0ZSBDRlNUUigiQVhEb2N1bWVu
dCIpCiNkZWZpbmUga0FYRGVjcmVtZW50QnV0dG9uQXR0cmlidXRlIENGU1RSKCJBWERlY3JlbWVu
dEJ1dHRvbiIpCiNkZWZpbmUga0FYSW5jcmVtZW50QnV0dG9uQXR0cmlidXRlIENGU1RSKCJBWElu
Y3JlbWVudEJ1dHRvbiIpCiNkZWZpbmUga0FYUHJldmlvdXNDb250ZW50c0F0dHJpYnV0ZSBDRlNU
UigiQVhQcmV2aW91c0NvbnRlbnRzIikKIyA5NDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9BWEF0dHJpYnV0ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUga0FYQ29udGVu
dHNBdHRyaWJ1dGUgQ0ZTVFIoIkFYQ29udGVudHMiKQojIDk2MSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZp
Y2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgiIDMKI2RlZmluZSBr
QVhJbmNyZW1lbnRvckF0dHJpYnV0ZSBDRlNUUigiQVhJbmNyZW1lbnRvciIpCiMgOTc2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMu
aCIgMwojZGVmaW5lIGtBWEhvdXJGaWVsZEF0dHJpYnV0ZSBDRlNUUigiQVhIb3VyRmllbGQiKQoj
IDk5MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRl
Q29uc3RhbnRzLmgiIDMKI2RlZmluZSBrQVhNaW51dGVGaWVsZEF0dHJpYnV0ZSBDRlNUUigiQVhN
aW51dGVGaWVsZCIpCiMgMTAwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFk
ZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgiIDMKI2RlZmluZSBrQVhTZWNvbmRGaWVsZEF0dHJp
YnV0ZSBDRlNUUigiQVhTZWNvbmRGaWVsZCIpCiMgMTAyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgiIDMKI2RlZmluZSBrQVhB
TVBNRmllbGRBdHRyaWJ1dGUgQ0ZTVFIoIkFYQU1QTUZpZWxkIikKIyAxMDM2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIgMwoj
ZGVmaW5lIGtBWERheUZpZWxkQXR0cmlidXRlIENGU1RSKCJBWERheUZpZWxkIikKIyAxMDUxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFu
dHMuaCIgMwojZGVmaW5lIGtBWE1vbnRoRmllbGRBdHRyaWJ1dGUgQ0ZTVFIoIkFYTW9udGhGaWVs
ZCIpCiMgMTA2NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQXR0
cmlidXRlQ29uc3RhbnRzLmgiIDMKI2RlZmluZSBrQVhZZWFyRmllbGRBdHRyaWJ1dGUgQ0ZTVFIo
IkFYWWVhckZpZWxkIikKCgoKCgojZGVmaW5lIGtBWENvbHVtblRpdGxlQXR0cmlidXRlIENGU1RS
KCJBWENvbHVtblRpdGxlcyIpCiMgMTA4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL0FYQXR0cmlidXRlQ29uc3RhbnRzLmgiIDMKI2RlZmluZSBrQVhVUkxBdHRyaWJ1
dGUgQ0ZTVFIoIkFYVVJMIikKI2RlZmluZSBrQVhMYWJlbFVJRWxlbWVudHNBdHRyaWJ1dGUgQ0ZT
VFIoIkFYTGFiZWxVSUVsZW1lbnRzIikKI2RlZmluZSBrQVhMYWJlbFZhbHVlQXR0cmlidXRlIENG
U1RSKCJBWExhYmVsVmFsdWUiKQojZGVmaW5lIGtBWFNob3duTWVudVVJRWxlbWVudEF0dHJpYnV0
ZSBDRlNUUigiQVhTaG93bk1lbnVVSUVsZW1lbnQiKQojZGVmaW5lIGtBWFNlcnZlc0FzVGl0bGVG
b3JVSUVsZW1lbnRzQXR0cmlidXRlIENGU1RSKCJBWFNlcnZlc0FzVGl0bGVGb3JVSUVsZW1lbnRz
IikKI2RlZmluZSBrQVhMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlIENGU1RSKCJBWExpbmtlZFVJ
RWxlbWVudHMiKQoKCiNkZWZpbmUga0FYUm93c0F0dHJpYnV0ZSBDRlNUUigiQVhSb3dzIikKI2Rl
ZmluZSBrQVhWaXNpYmxlUm93c0F0dHJpYnV0ZSBDRlNUUigiQVhWaXNpYmxlUm93cyIpCiNkZWZp
bmUga0FYU2VsZWN0ZWRSb3dzQXR0cmlidXRlIENGU1RSKCJBWFNlbGVjdGVkUm93cyIpCiNkZWZp
bmUga0FYQ29sdW1uc0F0dHJpYnV0ZSBDRlNUUigiQVhDb2x1bW5zIikKIyAxMTE0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhBdHRyaWJ1dGVDb25zdGFudHMuaCIg
MwojZGVmaW5lIGtBWFZpc2libGVDb2x1bW5zQXR0cmlidXRlIENGU1RSKCJBWFZpc2libGVDb2x1
bW5zIikKI2RlZmluZSBrQVhTZWxlY3RlZENvbHVtbnNBdHRyaWJ1dGUgQ0ZTVFIoIkFYU2VsZWN0
ZWRDb2x1bW5zIikKI2RlZmluZSBrQVhTb3J0RGlyZWN0aW9uQXR0cmlidXRlIENGU1RSKCJBWFNv
cnREaXJlY3Rpb24iKQoKCiNkZWZpbmUga0FYSW5kZXhBdHRyaWJ1dGUgQ0ZTVFIoIkFYSW5kZXgi
KQoKCiNkZWZpbmUga0FYRGlzY2xvc2luZ0F0dHJpYnV0ZSBDRlNUUigiQVhEaXNjbG9zaW5nIikK
I2RlZmluZSBrQVhEaXNjbG9zZWRSb3dzQXR0cmlidXRlIENGU1RSKCJBWERpc2Nsb3NlZFJvd3Mi
KQojZGVmaW5lIGtBWERpc2Nsb3NlZEJ5Um93QXR0cmlidXRlIENGU1RSKCJBWERpc2Nsb3NlZEJ5
Um93IikKI2RlZmluZSBrQVhEaXNjbG9zdXJlTGV2ZWxBdHRyaWJ1dGUgQ0ZTVFIoIkFYRGlzY2xv
c3VyZUxldmVsIikKCgojZGVmaW5lIGtBWE1hdHRlSG9sZUF0dHJpYnV0ZSBDRlNUUigiQVhNYXR0
ZUhvbGUiKQojZGVmaW5lIGtBWE1hdHRlQ29udGVudFVJRWxlbWVudEF0dHJpYnV0ZSBDRlNUUigi
QVhNYXR0ZUNvbnRlbnRVSUVsZW1lbnQiKQoKCiNkZWZpbmUga0FYTWFya2VyVUlFbGVtZW50c0F0
dHJpYnV0ZSBDRlNUUigiQVhNYXJrZXJVSUVsZW1lbnRzIikKI2RlZmluZSBrQVhVbml0c0F0dHJp
YnV0ZSBDRlNUUigiQVhVbml0cyIpCiNkZWZpbmUga0FYVW5pdERlc2NyaXB0aW9uQXR0cmlidXRl
IENGU1RSKCJBWFVuaXREZXNjcmlwdGlvbiIpCiNkZWZpbmUga0FYTWFya2VyVHlwZUF0dHJpYnV0
ZSBDRlNUUigiQVhNYXJrZXJUeXBlIikKI2RlZmluZSBrQVhNYXJrZXJUeXBlRGVzY3JpcHRpb25B
dHRyaWJ1dGUgQ0ZTVFIoIkFYTWFya2VyVHlwZURlc2NyaXB0aW9uIikKCgojZGVmaW5lIGtBWElz
QXBwbGljYXRpb25SdW5uaW5nQXR0cmlidXRlIENGU1RSKCJBWElzQXBwbGljYXRpb25SdW5uaW5n
IikKCgojZGVmaW5lIGtBWFNlYXJjaEJ1dHRvbkF0dHJpYnV0ZSBDRlNUUigiQVhTZWFyY2hCdXR0
b24iKQojZGVmaW5lIGtBWENsZWFyQnV0dG9uQXR0cmlidXRlIENGU1RSKCJBWENsZWFyQnV0dG9u
IikKCgojZGVmaW5lIGtBWEZvY3VzZWRBcHBsaWNhdGlvbkF0dHJpYnV0ZSBDRlNUUigiQVhGb2N1
c2VkQXBwbGljYXRpb24iKQoKCiNkZWZpbmUga0FYUm93Q291bnRBdHRyaWJ1dGUgQ0ZTVFIoIkFY
Um93Q291bnQiKQojZGVmaW5lIGtBWENvbHVtbkNvdW50QXR0cmlidXRlIENGU1RSKCJBWENvbHVt
bkNvdW50IikKI2RlZmluZSBrQVhPcmRlcmVkQnlSb3dBdHRyaWJ1dGUgQ0ZTVFIoIkFYT3JkZXJl
ZEJ5Um93IikKCgojZGVmaW5lIGtBWFdhcm5pbmdWYWx1ZUF0dHJpYnV0ZSBDRlNUUigiQVhXYXJu
aW5nVmFsdWUiKQojZGVmaW5lIGtBWENyaXRpY2FsVmFsdWVBdHRyaWJ1dGUgQ0ZTVFIoIkFYQ3Jp
dGljYWxWYWx1ZSIpCgoKI2RlZmluZSBrQVhTZWxlY3RlZENlbGxzQXR0cmlidXRlIENGU1RSKCJB
WFNlbGVjdGVkQ2VsbHMiKQojZGVmaW5lIGtBWFZpc2libGVDZWxsc0F0dHJpYnV0ZSBDRlNUUigi
QVhWaXNpYmxlQ2VsbHMiKQojZGVmaW5lIGtBWFJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGUg
Q0ZTVFIoIkFYUm93SGVhZGVyVUlFbGVtZW50cyIpCiNkZWZpbmUga0FYQ29sdW1uSGVhZGVyVUlF
bGVtZW50c0F0dHJpYnV0ZSBDRlNUUigiQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzIikKCgojZGVm
aW5lIGtBWFJvd0luZGV4UmFuZ2VBdHRyaWJ1dGUgQ0ZTVFIoIkFYUm93SW5kZXhSYW5nZSIpCiNk
ZWZpbmUga0FYQ29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZSBDRlNUUigiQVhDb2x1bW5JbmRleFJh
bmdlIikKCgojZGVmaW5lIGtBWEhvcml6b250YWxVbml0c0F0dHJpYnV0ZSBDRlNUUigiQVhIb3Jp
em9udGFsVW5pdHMiKQojZGVmaW5lIGtBWFZlcnRpY2FsVW5pdHNBdHRyaWJ1dGUgQ0ZTVFIoIkFY
VmVydGljYWxVbml0cyIpCiNkZWZpbmUga0FYSG9yaXpvbnRhbFVuaXREZXNjcmlwdGlvbkF0dHJp
YnV0ZSBDRlNUUigiQVhIb3Jpem9udGFsVW5pdERlc2NyaXB0aW9uIikKI2RlZmluZSBrQVhWZXJ0
aWNhbFVuaXREZXNjcmlwdGlvbkF0dHJpYnV0ZSBDRlNUUigiQVhWZXJ0aWNhbFVuaXREZXNjcmlw
dGlvbiIpCiNkZWZpbmUga0FYSGFuZGxlc0F0dHJpYnV0ZSBDRlNUUigiQVhIYW5kbGVzIikKCgoj
ZGVmaW5lIGtBWFRleHRBdHRyaWJ1dGUgQ0ZTVFIoIkFYVGV4dCIpCiNkZWZpbmUga0FYVmlzaWJs
ZVRleHRBdHRyaWJ1dGUgQ0ZTVFIoIkFYVmlzaWJsZVRleHQiKQojZGVmaW5lIGtBWElzRWRpdGFi
bGVBdHRyaWJ1dGUgQ0ZTVFIoIkFYSXNFZGl0YWJsZSIpCiNkZWZpbmUga0FYQ29sdW1uVGl0bGVz
QXR0cmlidXRlIENGU1RSKCJBWENvbHVtblRpdGxlcyIpCgoKCgoKCgojZGVmaW5lIGtBWExpbmVG
b3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQ0ZTVFIoIkFYTGluZUZvckluZGV4IikKI2Rl
ZmluZSBrQVhSYW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIENGU1RSKCJBWFJhbmdl
Rm9yTGluZSIpCiNkZWZpbmUga0FYU3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRl
IENGU1RSKCJBWFN0cmluZ0ZvclJhbmdlIikKI2RlZmluZSBrQVhSYW5nZUZvclBvc2l0aW9uUGFy
YW1ldGVyaXplZEF0dHJpYnV0ZSBDRlNUUigiQVhSYW5nZUZvclBvc2l0aW9uIikKI2RlZmluZSBr
QVhSYW5nZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBDRlNUUigiQVhSYW5nZUZvcklu
ZGV4IikKI2RlZmluZSBrQVhCb3VuZHNGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQ0ZT
VFIoIkFYQm91bmRzRm9yUmFuZ2UiKQojZGVmaW5lIGtBWFJURkZvclJhbmdlUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZSBDRlNUUigiQVhSVEZGb3JSYW5nZSIpCiNkZWZpbmUga0FYQXR0cmlidXRlZFN0
cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBDRlNUUigiQVhBdHRyaWJ1dGVkU3Ry
aW5nRm9yUmFuZ2UiKQojZGVmaW5lIGtBWFN0eWxlUmFuZ2VGb3JJbmRleFBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGUgQ0ZTVFIoIkFYU3R5bGVSYW5nZUZvckluZGV4IikKCgojZGVmaW5lIGtBWENlbGxG
b3JDb2x1bW5BbmRSb3dQYXJhbWV0ZXJpemVkQXR0cmlidXRlIENGU1RSKCJBWENlbGxGb3JDb2x1
bW5BbmRSb3ciKQoKCiNkZWZpbmUga0FYTGF5b3V0UG9pbnRGb3JTY3JlZW5Qb2ludFBhcmFtZXRl
cml6ZWRBdHRyaWJ1dGUgQ0ZTVFIoIkFYTGF5b3V0UG9pbnRGb3JTY3JlZW5Qb2ludCIpCiNkZWZp
bmUga0FYTGF5b3V0U2l6ZUZvclNjcmVlblNpemVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIENGU1RS
KCJBWExheW91dFNpemVGb3JTY3JlZW5TaXplIikKI2RlZmluZSBrQVhTY3JlZW5Qb2ludEZvckxh
eW91dFBvaW50UGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBDRlNUUigiQVhTY3JlZW5Qb2ludEZvckxh
eW91dFBvaW50IikKI2RlZmluZSBrQVhTY3JlZW5TaXplRm9yTGF5b3V0U2l6ZVBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUgQ0ZTVFIoIkFYU2NyZWVuU2l6ZUZvckxheW91dFNpemUiKQojIDE1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhDb25zdGFudHMuaCIgMiAzCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQWN0aW9uQ29uc3Rh
bnRzLmgiIDEgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
QVhBY3Rpb25Db25zdGFudHMuaCIgMwojZGVmaW5lIF9fQVhBQ1RJT05DT05TVEFOVFNfXyAKIyAy
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQWN0aW9uQ29uc3Rh
bnRzLmgiIDMKI2RlZmluZSBrQVhQcmVzc0FjdGlvbiBDRlNUUigiQVhQcmVzcyIpCiNkZWZpbmUg
a0FYSW5jcmVtZW50QWN0aW9uIENGU1RSKCJBWEluY3JlbWVudCIpCiNkZWZpbmUga0FYRGVjcmVt
ZW50QWN0aW9uIENGU1RSKCJBWERlY3JlbWVudCIpCiNkZWZpbmUga0FYQ29uZmlybUFjdGlvbiBD
RlNUUigiQVhDb25maXJtIikKI2RlZmluZSBrQVhDYW5jZWxBY3Rpb24gQ0ZTVFIoIkFYQ2FuY2Vs
IikKCgojZGVmaW5lIGtBWFJhaXNlQWN0aW9uIENGU1RSKCJBWFJhaXNlIikKI2RlZmluZSBrQVhT
aG93TWVudUFjdGlvbiBDRlNUUigiQVhTaG93TWVudSIpCgoKI2RlZmluZSBrQVhQaWNrQWN0aW9u
IENGU1RSKCJBWFBpY2siKQojIDE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hl
YWRlcnMvQVhDb25zdGFudHMuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzL0FYTm90aWZpY2F0aW9uQ29uc3RhbnRzLmgiIDEgMwojIDExICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhOb3RpZmljYXRpb25Db25zdGFudHMu
aCIgMwojZGVmaW5lIF9fQVhOT1RJRklDQVRJT05DT05TVEFOVFNfXyAKCgojZGVmaW5lIGtBWE1h
aW5XaW5kb3dDaGFuZ2VkTm90aWZpY2F0aW9uIENGU1RSKCJBWE1haW5XaW5kb3dDaGFuZ2VkIikK
I2RlZmluZSBrQVhGb2N1c2VkV2luZG93Q2hhbmdlZE5vdGlmaWNhdGlvbiBDRlNUUigiQVhGb2N1
c2VkV2luZG93Q2hhbmdlZCIpCiNkZWZpbmUga0FYRm9jdXNlZFVJRWxlbWVudENoYW5nZWROb3Rp
ZmljYXRpb24gQ0ZTVFIoIkFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQiKQoKCiNkZWZpbmUga0FY
QXBwbGljYXRpb25BY3RpdmF0ZWROb3RpZmljYXRpb24gQ0ZTVFIoIkFYQXBwbGljYXRpb25BY3Rp
dmF0ZWQiKQojZGVmaW5lIGtBWEFwcGxpY2F0aW9uRGVhY3RpdmF0ZWROb3RpZmljYXRpb24gQ0ZT
VFIoIkFYQXBwbGljYXRpb25EZWFjdGl2YXRlZCIpCiNkZWZpbmUga0FYQXBwbGljYXRpb25IaWRk
ZW5Ob3RpZmljYXRpb24gQ0ZTVFIoIkFYQXBwbGljYXRpb25IaWRkZW4iKQojZGVmaW5lIGtBWEFw
cGxpY2F0aW9uU2hvd25Ob3RpZmljYXRpb24gQ0ZTVFIoIkFYQXBwbGljYXRpb25TaG93biIpCgoK
I2RlZmluZSBrQVhXaW5kb3dDcmVhdGVkTm90aWZpY2F0aW9uIENGU1RSKCJBWFdpbmRvd0NyZWF0
ZWQiKQojZGVmaW5lIGtBWFdpbmRvd01vdmVkTm90aWZpY2F0aW9uIENGU1RSKCJBWFdpbmRvd01v
dmVkIikKI2RlZmluZSBrQVhXaW5kb3dSZXNpemVkTm90aWZpY2F0aW9uIENGU1RSKCJBWFdpbmRv
d1Jlc2l6ZWQiKQojZGVmaW5lIGtBWFdpbmRvd01pbmlhdHVyaXplZE5vdGlmaWNhdGlvbiBDRlNU
UigiQVhXaW5kb3dNaW5pYXR1cml6ZWQiKQojZGVmaW5lIGtBWFdpbmRvd0RlbWluaWF0dXJpemVk
Tm90aWZpY2F0aW9uIENGU1RSKCJBWFdpbmRvd0RlbWluaWF0dXJpemVkIikKCgojZGVmaW5lIGtB
WERyYXdlckNyZWF0ZWROb3RpZmljYXRpb24gQ0ZTVFIoIkFYRHJhd2VyQ3JlYXRlZCIpCiNkZWZp
bmUga0FYU2hlZXRDcmVhdGVkTm90aWZpY2F0aW9uIENGU1RSKCJBWFNoZWV0Q3JlYXRlZCIpCiNk
ZWZpbmUga0FYSGVscFRhZ0NyZWF0ZWROb3RpZmljYXRpb24gQ0ZTVFIoIkFYSGVscFRhZ0NyZWF0
ZWQiKQoKCiNkZWZpbmUga0FYVmFsdWVDaGFuZ2VkTm90aWZpY2F0aW9uIENGU1RSKCJBWFZhbHVl
Q2hhbmdlZCIpCiNkZWZpbmUga0FYVUlFbGVtZW50RGVzdHJveWVkTm90aWZpY2F0aW9uIENGU1RS
KCJBWFVJRWxlbWVudERlc3Ryb3llZCIpCgoKI2RlZmluZSBrQVhNZW51T3BlbmVkTm90aWZpY2F0
aW9uIENGU1RSKCJBWE1lbnVPcGVuZWQiKQojZGVmaW5lIGtBWE1lbnVDbG9zZWROb3RpZmljYXRp
b24gQ0ZTVFIoIkFYTWVudUNsb3NlZCIpCiNkZWZpbmUga0FYTWVudUl0ZW1TZWxlY3RlZE5vdGlm
aWNhdGlvbiBDRlNUUigiQVhNZW51SXRlbVNlbGVjdGVkIikKCgojZGVmaW5lIGtBWFJvd0NvdW50
Q2hhbmdlZE5vdGlmaWNhdGlvbiBDRlNUUigiQVhSb3dDb3VudENoYW5nZWQiKQoKCiNkZWZpbmUg
a0FYUm93RXhwYW5kZWROb3RpZmljYXRpb24gQ0ZTVFIoIkFYUm93RXhwYW5kZWQiKQojZGVmaW5l
IGtBWFJvd0NvbGxhcHNlZE5vdGlmaWNhdGlvbiBDRlNUUigiQVhSb3dDb2xsYXBzZWQiKQoKCiNk
ZWZpbmUga0FYU2VsZWN0ZWRDZWxsc0NoYW5nZWROb3RpZmljYXRpb24gQ0ZTVFIoIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiKQoKCiNkZWZpbmUga0FYVW5pdHNDaGFuZ2VkTm90aWZpY2F0aW9uIENG
U1RSKCJBWFVuaXRzQ2hhbmdlZCIpCiNkZWZpbmUga0FYU2VsZWN0ZWRDaGlsZHJlbk1vdmVkTm90
aWZpY2F0aW9uIENGU1RSKCJBWFNlbGVjdGVkQ2hpbGRyZW5Nb3ZlZCIpCgoKI2RlZmluZSBrQVhT
ZWxlY3RlZENoaWxkcmVuQ2hhbmdlZE5vdGlmaWNhdGlvbiBDRlNUUigiQVhTZWxlY3RlZENoaWxk
cmVuQ2hhbmdlZCIpCiNkZWZpbmUga0FYUmVzaXplZE5vdGlmaWNhdGlvbiBDRlNUUigiQVhSZXNp
emVkIikKI2RlZmluZSBrQVhNb3ZlZE5vdGlmaWNhdGlvbiBDRlNUUigiQVhNb3ZlZCIpCiNkZWZp
bmUga0FYQ3JlYXRlZE5vdGlmaWNhdGlvbiBDRlNUUigiQVhDcmVhdGVkIikKI2RlZmluZSBrQVhT
ZWxlY3RlZFJvd3NDaGFuZ2VkTm90aWZpY2F0aW9uIENGU1RSKCJBWFNlbGVjdGVkUm93c0NoYW5n
ZWQiKQojZGVmaW5lIGtBWFNlbGVjdGVkQ29sdW1uc0NoYW5nZWROb3RpZmljYXRpb24gQ0ZTVFIo
IkFYU2VsZWN0ZWRDb2x1bW5zQ2hhbmdlZCIpCiNkZWZpbmUga0FYU2VsZWN0ZWRUZXh0Q2hhbmdl
ZE5vdGlmaWNhdGlvbiBDRlNUUigiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIikKI2RlZmluZSBrQVhU
aXRsZUNoYW5nZWROb3RpZmljYXRpb24gQ0ZTVFIoIkFYVGl0bGVDaGFuZ2VkTm90aWZpY2F0aW9u
IikKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQ29uc3Rh
bnRzLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9B
WFZhbHVlQ29uc3RhbnRzLmgiIDEgMwojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvQVhWYWx1ZUNvbnN0YW50cy5oIiAzCiNkZWZpbmUgX19BWFZBTFVFQ09OU1RB
TlRTX18gCgoKCiNkZWZpbmUga0FYSG9yaXpvbnRhbE9yaWVudGF0aW9uVmFsdWUgQ0ZTVFIoIkFY
SG9yaXpvbnRhbE9yaWVudGF0aW9uIikKI2RlZmluZSBrQVhWZXJ0aWNhbE9yaWVudGF0aW9uVmFs
dWUgQ0ZTVFIoIkFYVmVydGljYWxPcmllbnRhdGlvbiIpCiNkZWZpbmUga0FYVW5rbm93bk9yaWVu
dGF0aW9uVmFsdWUgQ0ZTVFIoIkFYVW5rbm93bk9yaWVudGF0aW9uIikKCgojZGVmaW5lIGtBWEFz
Y2VuZGluZ1NvcnREaXJlY3Rpb25WYWx1ZSBDRlNUUigiQVhBc2NlbmRpbmdTb3J0RGlyZWN0aW9u
IikKI2RlZmluZSBrQVhEZXNjZW5kaW5nU29ydERpcmVjdGlvblZhbHVlIENGU1RSKCJBWERlc2Nl
bmRpbmdTb3J0RGlyZWN0aW9uIikKI2RlZmluZSBrQVhVbmtub3duU29ydERpcmVjdGlvblZhbHVl
IENGU1RSKCJBWFVua25vd25Tb3J0RGlyZWN0aW9uIikKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZp
Y2VzLmZyYW1ld29yay9IZWFkZXJzL0FYQ29uc3RhbnRzLmgiIDIgMwojIDEzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQWNjZXNzaWJpbGl0eS5oIiAyIDMKIyAxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhVSUVsZW1lbnQuaCIgMSAz
CiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FYVUlFbGVtZW50
LmgiIDMKI2RlZmluZSBfX0FYVUlFTEVNRU5UX18gCgoKCgpleHRlcm4gIkMiIHsKCgoKCgpleHRl
cm4gQm9vbGVhbiBBWEFQSUVuYWJsZWQgKHZvaWQpOwpleHRlcm4gQm9vbGVhbiBBWElzUHJvY2Vz
c1RydXN0ZWQgKHZvaWQpIDsKCmV4dGVybiBBWEVycm9yIEFYTWFrZVByb2Nlc3NUcnVzdGVkIChD
RlN0cmluZ1JlZiBleGVjdXRhYmxlUGF0aCkgOwoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19BWFVJ
RWxlbWVudCAqQVhVSUVsZW1lbnRSZWY7CgplbnVtIHsKIGtBWENvcHlNdWx0aXBsZUF0dHJpYnV0
ZU9wdGlvblN0b3BPbkVycm9yID0gMHgxCn07CnR5cGVkZWYgVUludDMyIEFYQ29weU11bHRpcGxl
QXR0cmlidXRlT3B0aW9uczsKCgpleHRlcm4gQ0ZUeXBlSUQgQVhVSUVsZW1lbnRHZXRUeXBlSUQg
KHZvaWQpOwoKZXh0ZXJuIEFYRXJyb3IgQVhVSUVsZW1lbnRDb3B5QXR0cmlidXRlTmFtZXMgKEFY
VUlFbGVtZW50UmVmIGVsZW1lbnQsIENGQXJyYXlSZWYgKm5hbWVzKTsKZXh0ZXJuIEFYRXJyb3Ig
QVhVSUVsZW1lbnRDb3B5QXR0cmlidXRlVmFsdWUgKEFYVUlFbGVtZW50UmVmIGVsZW1lbnQsIENG
U3RyaW5nUmVmIGF0dHJpYnV0ZSwgQ0ZUeXBlUmVmICp2YWx1ZSk7CmV4dGVybiBBWEVycm9yIEFY
VUlFbGVtZW50R2V0QXR0cmlidXRlVmFsdWVDb3VudCAoQVhVSUVsZW1lbnRSZWYgZWxlbWVudCwg
Q0ZTdHJpbmdSZWYgYXR0cmlidXRlLCBDRkluZGV4ICpjb3VudCk7CmV4dGVybiBBWEVycm9yIEFY
VUlFbGVtZW50Q29weUF0dHJpYnV0ZVZhbHVlcyAoQVhVSUVsZW1lbnRSZWYgZWxlbWVudCwgQ0ZT
dHJpbmdSZWYgYXR0cmlidXRlLCBDRkluZGV4IGluZGV4LCBDRkluZGV4IG1heFZhbHVlcywgQ0ZB
cnJheVJlZiAqdmFsdWVzKTsKZXh0ZXJuIEFYRXJyb3IgQVhVSUVsZW1lbnRJc0F0dHJpYnV0ZVNl
dHRhYmxlIChBWFVJRWxlbWVudFJlZiBlbGVtZW50LCBDRlN0cmluZ1JlZiBhdHRyaWJ1dGUsIEJv
b2xlYW4gKnNldHRhYmxlKTsKZXh0ZXJuIEFYRXJyb3IgQVhVSUVsZW1lbnRTZXRBdHRyaWJ1dGVW
YWx1ZSAoQVhVSUVsZW1lbnRSZWYgZWxlbWVudCwgQ0ZTdHJpbmdSZWYgYXR0cmlidXRlLCBDRlR5
cGVSZWYgdmFsdWUpOwpleHRlcm4gQVhFcnJvciBBWFVJRWxlbWVudENvcHlNdWx0aXBsZUF0dHJp
YnV0ZVZhbHVlcyAoQVhVSUVsZW1lbnRSZWYgZWxlbWVudCwgQ0ZBcnJheVJlZiBhdHRyaWJ1dGVz
LCBBWENvcHlNdWx0aXBsZUF0dHJpYnV0ZU9wdGlvbnMgb3B0aW9ucywgQ0ZBcnJheVJlZiAqdmFs
dWVzKSA7CgpleHRlcm4gQVhFcnJvciBBWFVJRWxlbWVudENvcHlQYXJhbWV0ZXJpemVkQXR0cmli
dXRlTmFtZXMgKEFYVUlFbGVtZW50UmVmIGVsZW1lbnQsIENGQXJyYXlSZWYgKm5hbWVzKSA7CmV4
dGVybiBBWEVycm9yIEFYVUlFbGVtZW50Q29weVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVWYWx1ZSAo
QVhVSUVsZW1lbnRSZWYgZWxlbWVudCwgQ0ZTdHJpbmdSZWYgcGFyYW1ldGVyaXplZEF0dHJpYnV0
ZSwgQ0ZUeXBlUmVmIHBhcmFtZXRlciwgQ0ZUeXBlUmVmICpyZXN1bHQpIDsKCmV4dGVybiBBWEVy
cm9yIEFYVUlFbGVtZW50Q29weUFjdGlvbk5hbWVzIChBWFVJRWxlbWVudFJlZiBlbGVtZW50LCBD
RkFycmF5UmVmICpuYW1lcyk7CmV4dGVybiBBWEVycm9yIEFYVUlFbGVtZW50Q29weUFjdGlvbkRl
c2NyaXB0aW9uIChBWFVJRWxlbWVudFJlZiBlbGVtZW50LCBDRlN0cmluZ1JlZiBhY3Rpb24sIENG
U3RyaW5nUmVmICpkZXNjcmlwdGlvbik7CmV4dGVybiBBWEVycm9yIEFYVUlFbGVtZW50UGVyZm9y
bUFjdGlvbiAoQVhVSUVsZW1lbnRSZWYgZWxlbWVudCwgQ0ZTdHJpbmdSZWYgYWN0aW9uKTsKCmV4
dGVybiBBWEVycm9yIEFYVUlFbGVtZW50Q29weUVsZW1lbnRBdFBvc2l0aW9uIChBWFVJRWxlbWVu
dFJlZiBhcHBsaWNhdGlvbiwgZmxvYXQgeCxmbG9hdCB5LCBBWFVJRWxlbWVudFJlZiAqZWxlbWVu
dCk7CgpleHRlcm4gQVhVSUVsZW1lbnRSZWYgQVhVSUVsZW1lbnRDcmVhdGVBcHBsaWNhdGlvbiAo
cGlkX3QgcGlkKTsKZXh0ZXJuIEFYVUlFbGVtZW50UmVmIEFYVUlFbGVtZW50Q3JlYXRlU3lzdGVt
V2lkZSAodm9pZCk7CgpleHRlcm4gQVhFcnJvciBBWFVJRWxlbWVudEdldFBpZCAoQVhVSUVsZW1l
bnRSZWYgZWxlbWVudCwgcGlkX3QgKnBpZCk7CgoKCgoKZXh0ZXJuIEFYRXJyb3IgQVhVSUVsZW1l
bnRTZXRNZXNzYWdpbmdUaW1lb3V0IChBWFVJRWxlbWVudFJlZiBlbGVtZW50LCBmbG9hdCB0aW1l
b3V0SW5TZWNvbmRzKSA7CgoKCmV4dGVybiBBWEVycm9yIEFYVUlFbGVtZW50UG9zdEtleWJvYXJk
RXZlbnQgKEFYVUlFbGVtZW50UmVmIGFwcGxpY2F0aW9uLCBDR0NoYXJDb2RlIGtleUNoYXIsIENH
S2V5Q29kZSB2aXJ0dWFsS2V5LCBCb29sZWFuIGtleURvd24pOwoKCgp0eXBlZGVmIHN0cnVjdCBf
X0FYT2JzZXJ2ZXIgKkFYT2JzZXJ2ZXJSZWY7Cgp0eXBlZGVmIHZvaWQgKCpBWE9ic2VydmVyQ2Fs
bGJhY2spKEFYT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIsIEFYVUlFbGVtZW50UmVmIGVsZW1lbnQsIENG
U3RyaW5nUmVmIG5vdGlmaWNhdGlvbiwgdm9pZCAqcmVmY29uKTsKCkNGVHlwZUlEIEFYT2JzZXJ2
ZXJHZXRUeXBlSUQgKHZvaWQpOwoKZXh0ZXJuIEFYRXJyb3IgQVhPYnNlcnZlckNyZWF0ZSAocGlk
X3QgYXBwbGljYXRpb24sIEFYT2JzZXJ2ZXJDYWxsYmFjayBjYWxsYmFjaywgQVhPYnNlcnZlclJl
ZiAqb3V0T2JzZXJ2ZXIpOwoKZXh0ZXJuIEFYRXJyb3IgQVhPYnNlcnZlckFkZE5vdGlmaWNhdGlv
biAoQVhPYnNlcnZlclJlZiBvYnNlcnZlciwgQVhVSUVsZW1lbnRSZWYgZWxlbWVudCwgQ0ZTdHJp
bmdSZWYgbm90aWZpY2F0aW9uLCB2b2lkICpyZWZjb24pOwpleHRlcm4gQVhFcnJvciBBWE9ic2Vy
dmVyUmVtb3ZlTm90aWZpY2F0aW9uIChBWE9ic2VydmVyUmVmIG9ic2VydmVyLCBBWFVJRWxlbWVu
dFJlZiBlbGVtZW50LCBDRlN0cmluZ1JlZiBub3RpZmljYXRpb24pOwoKZXh0ZXJuIENGUnVuTG9v
cFNvdXJjZVJlZiBBWE9ic2VydmVyR2V0UnVuTG9vcFNvdXJjZSAoQVhPYnNlcnZlclJlZiBvYnNl
cnZlcik7CgoKfQojIDE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMv
QWNjZXNzaWJpbGl0eS5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3Jr
L0hlYWRlcnMvQVhWYWx1ZS5oIiAxIDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1l
d29yay9IZWFkZXJzL0FYVmFsdWUuaCIgMwojZGVmaW5lIF9fQVhWQUxVRV9fIAoKCgoKZXh0ZXJu
ICJDIiB7CgoKCgoKdHlwZWRlZiBlbnVtIHsKCiAgICBrQVhWYWx1ZUNHUG9pbnRUeXBlID0gMSwK
ICAgIGtBWFZhbHVlQ0dTaXplVHlwZSA9IDIsCiAgICBrQVhWYWx1ZUNHUmVjdFR5cGUgPSAzLAoK
CiAgICBrQVhWYWx1ZUNGUmFuZ2VUeXBlID0gNCwKCgogICAga0FYVmFsdWVBWEVycm9yVHlwZSA9
IDUsCgoKICAgIGtBWFZhbHVlSWxsZWdhbFR5cGUgPSAwCgp9IEFYVmFsdWVUeXBlOwoKdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19BWFZhbHVlICpBWFZhbHVlUmVmOwoKZXh0ZXJuIENGVHlwZUlEIEFY
VmFsdWVHZXRUeXBlSUQoKSA7CgoKZXh0ZXJuIEFYVmFsdWVSZWYgQVhWYWx1ZUNyZWF0ZSAoQVhW
YWx1ZVR5cGUgdGhlVHlwZSwgY29uc3Qgdm9pZCAqdmFsdWVQdHIpOwpleHRlcm4gQVhWYWx1ZVR5
cGUgQVhWYWx1ZUdldFR5cGUoQVhWYWx1ZVJlZiB2YWx1ZSk7CgpleHRlcm4gQm9vbGVhbiBBWFZh
bHVlR2V0VmFsdWUoQVhWYWx1ZVJlZiB2YWx1ZSwgQVhWYWx1ZVR5cGUgdGhlVHlwZSwgdm9pZCAq
dmFsdWVQdHIpOwoKCgp9CiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVh
ZGVycy9BY2Nlc3NpYmlsaXR5LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFt
ZXdvcmsvSGVhZGVycy9BWFRleHRBdHRyaWJ1dGVkU3RyaW5nLmgiIDEgMwojIDEwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQVhUZXh0QXR0cmlidXRlZFN0cmluZy5o
IiAzCiNkZWZpbmUgQVhURVhUQVRUUklCVVRFRFNUUklOR19IIAoKCmV4dGVybiAiQyIgewoKCgoK
ZXh0ZXJuIENGU3RyaW5nUmVmIGtBWEZvbnRUZXh0QXR0cmlidXRlIDsKZXh0ZXJuIENGU3RyaW5n
UmVmIGtBWEZvcmVncm91bmRDb2xvclRleHRBdHRyaWJ1dGUgOwpleHRlcm4gQ0ZTdHJpbmdSZWYg
a0FYQmFja2dyb3VuZENvbG9yVGV4dEF0dHJpYnV0ZSA7CmV4dGVybiBDRlN0cmluZ1JlZiBrQVhV
bmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUgOwpleHRlcm4gQ0ZTdHJpbmdSZWYga0FYU3RyaWtl
dGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSA7CmV4dGVybiBDRlN0cmluZ1JlZiBrQVhVbmRlcmxp
bmVUZXh0QXR0cmlidXRlIDsKZXh0ZXJuIENGU3RyaW5nUmVmIGtBWFN1cGVyc2NyaXB0VGV4dEF0
dHJpYnV0ZSA7CmV4dGVybiBDRlN0cmluZ1JlZiBrQVhTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0
ZSA7CmV4dGVybiBDRlN0cmluZ1JlZiBrQVhTaGFkb3dUZXh0QXR0cmlidXRlIDsKCmV4dGVybiBD
RlN0cmluZ1JlZiBrQVhBdHRhY2htZW50VGV4dEF0dHJpYnV0ZSA7CmV4dGVybiBDRlN0cmluZ1Jl
ZiBrQVhMaW5rVGV4dEF0dHJpYnV0ZSA7CgpleHRlcm4gQ0ZTdHJpbmdSZWYga0FYTmF0dXJhbExh
bmd1YWdlVGV4dEF0dHJpYnV0ZSA7CmV4dGVybiBDRlN0cmluZ1JlZiBrQVhSZXBsYWNlbWVudFN0
cmluZ1RleHRBdHRyaWJ1dGUgOwoKZXh0ZXJuIENGU3RyaW5nUmVmIGtBWE1pc3NwZWxsZWRUZXh0
QXR0cmlidXRlIDsKCgpleHRlcm4gQ0ZTdHJpbmdSZWYga0FYRm9udE5hbWVLZXkgOwpleHRlcm4g
Q0ZTdHJpbmdSZWYga0FYRm9udEZhbWlseUtleSA7CmV4dGVybiBDRlN0cmluZ1JlZiBrQVhWaXNp
YmxlTmFtZUtleSA7CmV4dGVybiBDRlN0cmluZ1JlZiBrQVhGb250U2l6ZUtleSA7CgplbnVtIHsK
ICAgIGtBWFVuZGVybGluZVN0eWxlTm9uZSA9IDB4MCwKICAgIGtBWFVuZGVybGluZVN0eWxlU2lu
Z2xlID0gMHgxLAogICAga0FYVW5kZXJsaW5lU3R5bGVUaGljayA9IDB4MiwKICAgIGtBWFVuZGVy
bGluZVN0eWxlRG91YmxlID0gMHg5Cn07CnR5cGVkZWYgVUludDMyIEFYVW5kZXJsaW5lU3R5bGU7
CgoKCmV4dGVybiBDRlN0cmluZ1JlZiBrQVhGb3JlZ291bmRDb2xvclRleHRBdHRyaWJ1dGUgOwoK
Cn0KIyAxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FjY2Vzc2li
aWxpdHkuaCIgMiAzCiMgNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVy
cy9ISVNlcnZpY2VzLmgiIDIgMwoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZyYW1ld29y
ay9IZWFkZXJzL1VuaXZlcnNhbEFjY2Vzcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZp
Y2VzLmZyYW1ld29yay9IZWFkZXJzL1VuaXZlcnNhbEFjY2Vzcy5oIiAzCiNkZWZpbmUgX19VTklW
RVJTQUxBQ0NFU1NfXyAKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9I
ZWFkZXJzL0NvcmVHcmFwaGljcy5oIiAxIDMKIyAyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVNlcnZpY2VzLmZy
YW1ld29yay9IZWFkZXJzL1VuaXZlcnNhbEFjY2Vzcy5oIiAyIDMKIyAzMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL1VuaXZlcnNhbEFjY2Vzcy5oIiAzCmV4dGVybiAi
QyIgewojIDU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvVW5pdmVy
c2FsQWNjZXNzLmgiIDMKdHlwZWRlZiBVSW50MzIgVUFab29tQ2hhbmdlRm9jdXNUeXBlOwplbnVt
IHsKCgoKCiAga1VBWm9vbUZvY3VzVHlwZU90aGVyID0gMCwKCgoKCiAga1VBWm9vbUZvY3VzVHlw
ZUluc2VydGlvblBvaW50ID0gMQp9OwojIDkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3
b3JrL0hlYWRlcnMvVW5pdmVyc2FsQWNjZXNzLmgiIDMKZXh0ZXJuIEJvb2xlYW4KVUFab29tRW5h
YmxlZCh2b2lkKSA7CiMgMTMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRl
cnMvVW5pdmVyc2FsQWNjZXNzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClVBWm9vbUNoYW5nZUZvY3Vz
KAogIGNvbnN0IENHUmVjdCAqIGluUmVjdCwKICBjb25zdCBDR1JlY3QgKiBpbkhpZ2hsaWdodFJl
Y3QsCiAgVUFab29tQ2hhbmdlRm9jdXNUeXBlIGluVHlwZSkgOwoKCgoKfQojIDUzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvSElTZXJ2aWNlcy5oIiAyIDMKIyAzNSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
SGVhZGVycy9BcHBsaWNhdGlvblNlcnZpY2VzLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJp
bnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1ByaW50Q29yZS5oIiAxIDMKIyAxNSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUHJpbnRDb3JlLmgiIDMKI2RlZmluZSBfX1BS
SU5UQ09SRV9fIAoKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFk
ZXJzL0NvbG9yU3luYy5oIiAxIDMKCgoKCgoKCiNkZWZpbmUgX19DT0xPUlNZTkNfTUFJTl9IRUFE
RVJfXyAKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JT
eW5jQmFzZS5oIiAxIDMKCgoKCgoKCiNkZWZpbmUgX19DT0xPUlNZTkNCQVNFX18gCgoKCgpleHRl
cm4gIkMiIHsKIyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29s
b3JTeW5jQmFzZS5oIiAzCiNkZWZpbmUgQ1NFWFRFUk5fUFJJVkFURSBfX3ByaXZhdGVfZXh0ZXJu
X18KCgoKCgoKfQojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9D
b2xvclN5bmMuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRl
cnMvQ29sb3JTeW5jUHJvZmlsZS5oIiAxIDMKCgoKCgoKCiNkZWZpbmUgX19DT0xPUlNZTkNQUk9G
SUxFX18gCgoKZXh0ZXJuICJDIiB7CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdv
cmsvSGVhZGVycy9Db2xvclN5bmNCYXNlLmgiIDEgMwojIDE1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3lu
Yy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNQcm9maWxlLmgiIDIgMwoKdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgQ29sb3JTeW5jUHJvZmlsZSogQ29sb3JTeW5jUHJvZmlsZVJlZjsKCnR5cGVkZWYg
c3RydWN0IENvbG9yU3luY1Byb2ZpbGUqIENvbG9yU3luY011dGFibGVQcm9maWxlUmVmOwoKX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtD
b2xvclN5bmNHZW5lcmljR3JheVByb2ZpbGU7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jR2VuZXJpY0dyYXlHYW1tYTIy
UHJvZmlsZTsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENG
U3RyaW5nUmVmIGtDb2xvclN5bmNHZW5lcmljUkdCUHJvZmlsZTsKX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNHZW5lcmlj
Q01ZS1Byb2ZpbGU7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVy
biBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jU1JHQlByb2ZpbGU7Cl9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jQWRvYmVSR0Ix
OTk4UHJvZmlsZTsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJu
IENGU3RyaW5nUmVmIGtDb2xvclN5bmNHZW5lcmljTGFiUHJvZmlsZTsKX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNHZW5l
cmljWFlaUHJvZmlsZTsKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4
dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jUHJvZmlsZUhlYWRlcjsKX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNQcm9m
aWxlQ2xhc3M7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBD
RlN0cmluZ1JlZiBrQ29sb3JTeW5jUHJvZmlsZUNvbG9yU3BhY2U7Cl9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jUHJvZmls
ZVBDUzsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3Ry
aW5nUmVmIGtDb2xvclN5bmNQcm9maWxlVVJMOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9yU3luY1Byb2ZpbGVEZXNjcmlwdGlv
bjsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5n
UmVmIGtDb2xvclN5bmNQcm9maWxlTUQ1RGlnZXN0OwoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGVHlwZUlEIENvbG9yU3luY1Byb2ZpbGVHZXRUeXBlSUQo
dm9pZCk7CgoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4g
Q29sb3JTeW5jUHJvZmlsZVJlZiBDb2xvclN5bmNQcm9maWxlQ3JlYXRlKENGRGF0YVJlZiBkYXRh
LCBDRkVycm9yUmVmKiBlcnJvcik7CgoKCgoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKSBleHRlcm4gQ29sb3JTeW5jUHJvZmlsZVJlZiBDb2xvclN5bmNQcm9maWxlQ3Jl
YXRlV2l0aFVSTChDRlVSTFJlZiB1cmwsIENGRXJyb3JSZWYqIGVycm9yKTsKCgoKCgoKCl9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDb2xvclN5bmNQcm9maWxl
UmVmIENvbG9yU3luY1Byb2ZpbGVDcmVhdGVXaXRoTmFtZShDRlN0cmluZ1JlZiBuYW1lKTsKCgoK
CgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENvbG9yU3lu
Y1Byb2ZpbGVSZWYgQ29sb3JTeW5jUHJvZmlsZUNyZWF0ZVdpdGhEaXNwbGF5SUQgKHVpbnQzMl90
IGRpc3BsYXlJRCk7CgoKCgoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
IGV4dGVybiBDb2xvclN5bmNQcm9maWxlUmVmIENvbG9yU3luY1Byb2ZpbGVDcmVhdGVEZXZpY2VQ
cm9maWxlIChDRlN0cmluZ1JlZiBkZXZpY2VDbGFzcywgQ0ZVVUlEUmVmIGRldmljZUlELCBDRlR5
cGVSZWYgcHJvZmlsZUlEKTsKIyA4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hl
YWRlcnMvQ29sb3JTeW5jUHJvZmlsZS5oIiAzCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIGV4dGVybiBDb2xvclN5bmNNdXRhYmxlUHJvZmlsZVJlZiBDb2xvclN5bmNQcm9m
aWxlQ3JlYXRlTXV0YWJsZSh2b2lkKTsKCgoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIGV4dGVybiBDb2xvclN5bmNNdXRhYmxlUHJvZmlsZVJlZiBDb2xvclN5bmNQcm9m
aWxlQ3JlYXRlTXV0YWJsZUNvcHkoQ29sb3JTeW5jUHJvZmlsZVJlZiBwcm9mKTsKCgoKCgoKX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENvbG9yU3luY1Byb2Zp
bGVSZWYgQ29sb3JTeW5jUHJvZmlsZUNyZWF0ZUxpbmsgKENGQXJyYXlSZWYgcHJvZmlsZUluZm8s
IENGRGljdGlvbmFyeVJlZiBvcHRpb25zKTsKIyAxMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZy
YW1ld29yay9IZWFkZXJzL0NvbG9yU3luY1Byb2ZpbGUuaCIgMwpfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gYm9vbCBDb2xvclN5bmNQcm9maWxlVmVyaWZ5IChD
b2xvclN5bmNQcm9maWxlUmVmIHByb2YsIENGRXJyb3JSZWYqIGVycm9ycywgQ0ZFcnJvclJlZiog
d2FybmluZ3MpOwojIDEyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMv
Q29sb3JTeW5jUHJvZmlsZS5oIiAzCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpIGV4dGVybiBmbG9hdCBDb2xvclN5bmNQcm9maWxlRXN0aW1hdGVHYW1tYVdpdGhEaXNwbGF5
SUQgKGNvbnN0IGludDMyX3QgZGlzcGxheUlELCBDRkVycm9yUmVmKiBlcnJvcik7CiMgMTM4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNQcm9maWxlLmgi
IDMKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIGZsb2F0IENv
bG9yU3luY1Byb2ZpbGVFc3RpbWF0ZUdhbW1hIChDb2xvclN5bmNQcm9maWxlUmVmIHByb2YsIENG
RXJyb3JSZWYqIGVycm9yKTsKIyAxNDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9I
ZWFkZXJzL0NvbG9yU3luY1Byb2ZpbGUuaCIgMwojZGVmaW5lIENPTE9SU1lOQ19NRDVfTEVOR1RI
IDE2Cgp0eXBlZGVmIHN0cnVjdCB7IHVpbnQ4X3QgZGlnZXN0WzE2XTsgfSBDb2xvclN5bmNNRDU7
CgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ29sb3JTeW5j
TUQ1IENvbG9yU3luY1Byb2ZpbGVHZXRNRDUoQ29sb3JTeW5jUHJvZmlsZVJlZiBwcm9mKTsKCgoK
CgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGRGF0YVJl
ZiBDb2xvclN5bmNQcm9maWxlQ29weURhdGEgKENvbG9yU3luY1Byb2ZpbGVSZWYgcHJvZiwgQ0ZF
cnJvclJlZiogZXJyb3IpOwoKCgoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSkgZXh0ZXJuIENGVVJMUmVmIENvbG9yU3luY1Byb2ZpbGVHZXRVUkwgKENvbG9yU3luY1By
b2ZpbGVSZWYgcHJvZiwgQ0ZFcnJvclJlZiogZXJyb3IpOwoKCgoKCgoKX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGRGF0YVJlZiBDb2xvclN5bmNQcm9maWxl
Q29weUhlYWRlciAoQ29sb3JTeW5jUHJvZmlsZVJlZiBwcm9mKTsKCgoKCgoKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIHZvaWQgQ29sb3JTeW5jUHJvZmlsZVNl
dEhlYWRlciAoQ29sb3JTeW5jTXV0YWJsZVByb2ZpbGVSZWYgcHJvZiwgQ0ZEYXRhUmVmIGhlYWRl
cik7CgoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENG
U3RyaW5nUmVmIENvbG9yU3luY1Byb2ZpbGVDb3B5RGVzY3JpcHRpb25TdHJpbmcgKENvbG9yU3lu
Y1Byb2ZpbGVSZWYgcHJvZik7CgoKCgoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIGV4dGVybiBDRkFycmF5UmVmIENvbG9yU3luY1Byb2ZpbGVDb3B5VGFnU2lnbmF0dXJl
cyAoQ29sb3JTeW5jUHJvZmlsZVJlZiBwcm9mKTsKCgoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIGJvb2wgQ29sb3JTeW5jUHJvZmlsZUNvbnRhaW5zVGFn
IChDb2xvclN5bmNQcm9maWxlUmVmIHByb2YsIENGU3RyaW5nUmVmIHNpZ25hdHVyZSk7CgoKCgoK
CgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZEYXRhUmVm
IENvbG9yU3luY1Byb2ZpbGVDb3B5VGFnIChDb2xvclN5bmNQcm9maWxlUmVmIHByb2YsIENGU3Ry
aW5nUmVmIHNpZ25hdHVyZSk7CgoKCgoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBleHRlcm4gdm9pZCBDb2xvclN5bmNQcm9maWxlU2V0VGFnIChDb2xvclN5bmNNdXRh
YmxlUHJvZmlsZVJlZiBwcm9mLCBDRlN0cmluZ1JlZiBzaWduYXR1cmUsIENGRGF0YVJlZiBkYXRh
KTsKCgoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIHZv
aWQgQ29sb3JTeW5jUHJvZmlsZVJlbW92ZVRhZyAoQ29sb3JTeW5jTXV0YWJsZVByb2ZpbGVSZWYg
cHJvZiwgQ0ZTdHJpbmdSZWYgc2lnbmF0dXJlKTsKCgoKCgoKCnR5cGVkZWYgYm9vbCAoKkNvbG9y
U3luY1Byb2ZpbGVJdGVyYXRlQ2FsbGJhY2spKENGRGljdGlvbmFyeVJlZiBwcm9maWxlSW5mbywg
dm9pZCogdXNlckluZm8pOwoKCgoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKSBleHRlcm4gdm9pZCBDb2xvclN5bmNJdGVyYXRlSW5zdGFsbGVkUHJvZmlsZXMgKENvbG9y
U3luY1Byb2ZpbGVJdGVyYXRlQ2FsbGJhY2sgY2FsbEJhY2ssCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqIHNlZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkKiB1c2VySW5mbywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENGRXJyb3JSZWYqIGVycm9yKTsKIyAyNjIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY1Byb2ZpbGUuaCIgMwp9CiMgMTIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luYy5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNUcmFu
c2Zvcm0uaCIgMSAzCgoKCgoKCgojZGVmaW5lIF9fQ09MT1JTWU5DVFJBTlNGT1JNX18gCgoKZXh0
ZXJuICJDIiB7CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9D
b2xvclN5bmNCYXNlLmgiIDEgMwojIDE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsv
SGVhZGVycy9Db2xvclN5bmNUcmFuc2Zvcm0uaCIgMiAzCgp0eXBlZGVmIHN0cnVjdCBDb2xvclN5
bmNUcmFuc2Zvcm0qIENvbG9yU3luY1RyYW5zZm9ybVJlZjsKCl9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlR5cGVJRCBDb2xvclN5bmNUcmFuc2Zvcm1HZXRU
eXBlSUQodm9pZCk7CgoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBl
eHRlcm4gQ29sb3JTeW5jVHJhbnNmb3JtUmVmIENvbG9yU3luY1RyYW5zZm9ybUNyZWF0ZSAoQ0ZB
cnJheVJlZiBwcm9maWxlU2VxdWVuY2UsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKTsKIyA0NCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jVHJhbnNmb3Jt
LmgiIDMKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGVHlw
ZVJlZiBDb2xvclN5bmNUcmFuc2Zvcm1Db3B5UHJvcGVydHkoQ29sb3JTeW5jVHJhbnNmb3JtUmVm
IHRyYW5zZm9ybSwgQ0ZUeXBlUmVmIGtleSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwoKCgoK
CgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gdm9pZCBDb2xv
clN5bmNUcmFuc2Zvcm1TZXRQcm9wZXJ0eShDb2xvclN5bmNUcmFuc2Zvcm1SZWYgdHJhbnNmb3Jt
LCBDRlR5cGVSZWYga2V5LCBDRlR5cGVSZWYgcHJvcGVydHkpOwoKCgoKCgplbnVtIENvbG9yU3lu
Y0RhdGFEZXB0aCB7CiAgICBrQ29sb3JTeW5jMUJpdEdhbXV0ID0gMSwKICAgIGtDb2xvclN5bmM4
Qml0SW50ZWdlciwKICAgIGtDb2xvclN5bmMxNkJpdEludGVnZXIsCiAgICBrQ29sb3JTeW5jMTZC
aXRGbG9hdCwKICAgIGtDb2xvclN5bmMzMkJpdEludGVnZXIsCiAgICBrQ29sb3JTeW5jMzJCaXRO
YW1lZENvbG9ySW5kZXgsCiAgICBrQ29sb3JTeW5jMzJCaXRGbG9hdAp9OwoKdHlwZWRlZiBlbnVt
IENvbG9yU3luY0RhdGFEZXB0aCBDb2xvclN5bmNEYXRhRGVwdGg7CgplbnVtIENvbG9yU3luY0Fs
cGhhSW5mbyB7CiAgICBrQ29sb3JTeW5jQWxwaGFOb25lLAogICAga0NvbG9yU3luY0FscGhhUHJl
bXVsdGlwbGllZExhc3QsCiAgICBrQ29sb3JTeW5jQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QsCiAg
ICBrQ29sb3JTeW5jQWxwaGFMYXN0LAogICAga0NvbG9yU3luY0FscGhhRmlyc3QsCiAgICBrQ29s
b3JTeW5jQWxwaGFOb25lU2tpcExhc3QsCiAgICBrQ29sb3JTeW5jQWxwaGFOb25lU2tpcEZpcnN0
LAp9OwoKdHlwZWRlZiBlbnVtIENvbG9yU3luY0FscGhhSW5mbyBDb2xvclN5bmNBbHBoYUluZm87
CgplbnVtIHsKICAgIGtDb2xvclN5bmNBbHBoYUluZm9NYXNrID0gMHgxRiwKCiAgICBrQ29sb3JT
eW5jQnl0ZU9yZGVyTWFzayA9IDB4NzAwMCwKICAgIGtDb2xvclN5bmNCeXRlT3JkZXJEZWZhdWx0
ID0gKDAgPDwgMTIpLAogICAga0NvbG9yU3luY0J5dGVPcmRlcjE2TGl0dGxlID0gKDEgPDwgMTIp
LAogICAga0NvbG9yU3luY0J5dGVPcmRlcjMyTGl0dGxlID0gKDIgPDwgMTIpLAogICAga0NvbG9y
U3luY0J5dGVPcmRlcjE2QmlnID0gKDMgPDwgMTIpLAogICAga0NvbG9yU3luY0J5dGVPcmRlcjMy
QmlnID0gKDQgPDwgMTIpCn07CgoKdHlwZWRlZiB1aW50MzJfdCBDb2xvclN5bmNEYXRhTGF5b3V0
OwoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIGJvb2wgQ29s
b3JTeW5jVHJhbnNmb3JtQ29udmVydCAoQ29sb3JTeW5jVHJhbnNmb3JtUmVmIHRyYW5zZm9ybSwg
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQqIGRzdCwgQ29sb3JTeW5jRGF0YURlcHRoIGRzdERlcHRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yU3luY0RhdGFMYXlvdXQg
ZHN0TGF5b3V0LCBzaXplX3QgZHN0Qnl0ZXNQZXJSb3csCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogc3JjLCBDb2xvclN5bmNEYXRhRGVwdGggc3Jj
RGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTeW5j
RGF0YUxheW91dCBzcmNMYXlvdXQsIHNpemVfdCBzcmNCeXRlc1BlclJvdywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyk7CiMg
MTIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclN5bmNUcmFu
c2Zvcm0uaCIgMwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4g
Q0ZTdHJpbmdSZWYga0NvbG9yU3luY1Byb2ZpbGU7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jUmVuZGVyaW5nSW50ZW50
OwoKCiAgICAgICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJu
IENGU3RyaW5nUmVmIGtDb2xvclN5bmNSZW5kZXJpbmdJbnRlbnRQZXJjZXB0dWFsOwogICAgICAg
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1Jl
ZiBrQ29sb3JTeW5jUmVuZGVyaW5nSW50ZW50UmVsYXRpdmU7CiAgICAgICAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNS
ZW5kZXJpbmdJbnRlbnRTYXR1cmF0aW9uOwogICAgICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jUmVuZGVyaW5nSW50
ZW50QWJzb2x1dGU7CiAgICAgICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNSZW5kZXJpbmdJbnRlbnRVc2VQcm9maWxl
SGVhZGVyOwoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENG
U3RyaW5nUmVmIGtDb2xvclN5bmNUcmFuc2Zvcm1UYWc7CgoKICAgICAgICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9yU3luY1Ry
YW5zZm9ybURldmljZVRvUENTOwogICAgICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jVHJhbnNmb3JtUENTVG9QQ1M7
CiAgICAgICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENG
U3RyaW5nUmVmIGtDb2xvclN5bmNUcmFuc2Zvcm1QQ1NUb0RldmljZTsKICAgICAgICBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9y
U3luY1RyYW5zZm9ybURldmljZVRvRGV2aWNlOwogICAgICAgIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jVHJhbnNmb3Jt
R2FtdXRDaGVjazsKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVy
biBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jQmxhY2tQb2ludENvbXBlbnNhdGlvbjsKCgpfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9y
U3luY1ByZWZlcnJlZENNTTsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkg
ZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNDb252ZXJ0UXVhbGl0eTsKCgogICAgICAgIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBr
Q29sb3JTeW5jQmVzdFF1YWxpdHk7CiAgICAgICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNOb3JtYWxRdWFsaXR5Owog
ICAgICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0
cmluZ1JlZiBrQ29sb3JTeW5jRHJhZnRRdWFsaXR5OwoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jQ29udmVydFRocmVh
ZENvdW50OwoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4g
Q0ZTdHJpbmdSZWYga0NvbG9yU3luY1RyYW5mb3JtSW5mbzsKICAgIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jVHJhbnNm
b3JtQ3JlYXRvcjsKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4
dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jVHJhbnNmb3JtU3JjU3BhY2U7CiAgICBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9y
U3luY1RyYW5zZm9ybURzdFNwYWNlOwojIDE5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3
b3JrL0hlYWRlcnMvQ29sb3JTeW5jVHJhbnNmb3JtLmgiIDMKX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNUcmFuc2Zvcm1G
dWxsQ29udmVyc2lvbkRhdGE7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
IGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jVHJhbnNmb3JtU2ltcGxpZmllZENvbnZlcnNp
b25EYXRhOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZT
dHJpbmdSZWYga0NvbG9yU3luY1RyYW5zZm9ybVBhcmFtZXRyaWNDb252ZXJzaW9uRGF0YTsKCgoK
CgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5n
UmVmIGtDb2xvclN5bmNDb252ZXJzaW9uTWF0cml4OwojIDIyMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5
bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jVHJhbnNmb3JtLmgiIDMKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmND
b252ZXJzaW9uUGFyYW1DdXJ2ZTA7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jQ29udmVyc2lvblBhcmFtQ3VydmUxOwpf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYg
a0NvbG9yU3luY0NvbnZlcnNpb25QYXJhbUN1cnZlMjsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNDb252ZXJzaW9uUGFy
YW1DdXJ2ZTM7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBD
RlN0cmluZ1JlZiBrQ29sb3JTeW5jQ29udmVyc2lvblBhcmFtQ3VydmU0OwpfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9yU3luY0Nv
bnZlcnNpb24xREx1dDsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0
ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNDb252ZXJzaW9uR3JpZFBvaW50czsKX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5
bmNDb252ZXJzaW9uQ2hhbm5lbElEOwojIDI0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3
b3JrL0hlYWRlcnMvQ29sb3JTeW5jVHJhbnNmb3JtLmgiIDMKX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNDb252ZXJzaW9u
M0RMdXQ7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0
cmluZ1JlZiBrQ29sb3JTeW5jQ29udmVyc2lvbklucENoYW47Cl9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jQ29udmVyc2lv
bk91dENoYW47CiMgMjUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9D
b2xvclN5bmNUcmFuc2Zvcm0uaCIgMwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9yU3luY0NvbnZlcnNpb25CUEM7CgoKCn0KIyAx
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jLmgiIDIg
MwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0NN
TS5oIiAxIDMKCgoKCgoKCiNkZWZpbmUgX19DT0xPUlNZTkNDTU1fXyAKCgpleHRlcm4gIkMiIHsK
CgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY1By
b2ZpbGUuaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJz
L0NvbG9yU3luY0NNTS5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsv
SGVhZGVycy9Db2xvclN5bmNUcmFuc2Zvcm0uaCIgMSAzCiMgMTYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JT
eW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0NNTS5oIiAyIDMKIyAyOCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jQ01NLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgQ29sb3JTeW5jQ01NKiBDb2xvclN5bmNDTU1SZWY7CgpfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZUeXBlSUQgQ29sb3JTeW5jQ01NR2V0VHlwZUlE
KHZvaWQpOwoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJu
IENvbG9yU3luY0NNTVJlZiBDb2xvclN5bmNDTU1DcmVhdGUoQ0ZCdW5kbGVSZWYgY21tQnVuZGxl
KTsKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRkJ1bmRs
ZVJlZiBDb2xvclN5bmNDTU1HZXRCdW5kbGUoQ29sb3JTeW5jQ01NUmVmKTsKCl9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBDb2xvclN5bmND
TU1Db3B5TG9jYWxpemVkTmFtZShDb2xvclN5bmNDTU1SZWYpOwoKX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIENvbG9yU3luY0NNTUNvcHlD
TU1JZGVudGlmaWVyKENvbG9yU3luY0NNTVJlZik7Cgp0eXBlZGVmIGJvb2wgKCpDb2xvclN5bmND
TU1JdGVyYXRlQ2FsbGJhY2spKENvbG9yU3luY0NNTVJlZiBjbW0sIHZvaWQqIHVzZXJJbmZvKTsK
CgoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gdm9pZCBD
b2xvclN5bmNJdGVyYXRlSW5zdGFsbGVkQ01NcyAoQ29sb3JTeW5jQ01NSXRlcmF0ZUNhbGxiYWNr
IGNhbGxCYWNrLCB2b2lkKiB1c2VySW5mbyk7CiMgNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZy
YW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0NNTS5oIiAzCnR5cGVkZWYgYm9vbCAoKkNNTUluaXRp
YWxpemVMaW5rUHJvZmlsZVByb2MpIChDb2xvclN5bmNNdXRhYmxlUHJvZmlsZVJlZiwgQ0ZBcnJh
eVJlZiBwcm9maWxlSW5mbywgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwoKdHlwZWRlZiBib29s
ICgqQ01NSW5pdGlhbGl6ZVRyYW5zZm9ybVByb2MpIChDb2xvclN5bmNUcmFuc2Zvcm1SZWYsIENG
QXJyYXlSZWYgcHJvZmlsZUluZm8sIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKTsKCnR5cGVkZWYg
Ym9vbCAoKkNNTUFwcGx5VHJhbnNmb3JtUHJvYykoQ29sb3JTeW5jVHJhbnNmb3JtUmVmIHRyYW5z
Zm9ybSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBkc3RQbGFuZXMsIHZvaWQqIGRzdFtdLCBDb2xvclN5bmNE
YXRhRGVwdGggZHN0RGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29sb3JTeW5jRGF0YUxheW91dCBkc3RGb3JtYXQsIHNpemVfdCBkc3RCeXRlc1BlclJvdywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3JjUGxhbmVzLCBjb25z
dCB2b2lkKiBzcmNbXSwgQ29sb3JTeW5jRGF0YURlcHRoIHNyY0RlcHRoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yU3luY0RhdGFMYXlvdXQgc3JjRm9ybWF0LCBz
aXplX3Qgc3JjQnl0ZXNQZXJSb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwoKdHlwZWRlZiBDRlR5cGVSZWYgKCpDTU1DcmVh
dGVUcmFuc2Zvcm1Qcm9wZXJ0eVByb2MpKENvbG9yU3luY1RyYW5zZm9ybVJlZiB0cmFuc2Zvcm0s
IENGVHlwZVJlZiBrZXksIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKTsKCl9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ01NSW5pdGlhbGl6
ZUxpbmtQcm9maWxlUHJvY05hbWU7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ01NSW5pdGlhbGl6ZVRyYW5zZm9ybVByb2NOYW1lOwpf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYg
a0NNTUFwcGx5VHJhbnNmb3JtUHJvY05hbWU7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ01NQ3JlYXRlVHJhbnNmb3JtUHJvcGVydHlQ
cm9jTmFtZTsKIyAxMDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0Nv
bG9yU3luY0NNTS5oIiAzCn0KIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hl
YWRlcnMvQ29sb3JTeW5jLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29y
ay9IZWFkZXJzL0NvbG9yU3luY0RldmljZS5oIiAxIDMKCgoKCgoKCiNkZWZpbmUgX19DT0xPUlNZ
TkNERVZJQ0VfXyAKCgpleHRlcm4gIkMiIHsKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZy
YW1ld29yay9IZWFkZXJzL0NvbG9yU3luY1Byb2ZpbGUuaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RldmljZS5oIiAyIDMKCl9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29s
b3JTeW5jRGV2aWNlSUQ7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4
dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jRGV2aWNlQ2xhc3M7CiAgICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9yU3luY0Nh
bWVyYURldmljZUNsYXNzOwogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNEaXNwbGF5RGV2aWNlQ2xhc3M7CiAgICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYg
a0NvbG9yU3luY1ByaW50ZXJEZXZpY2VDbGFzczsKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jU2Nhbm5lckRldmlj
ZUNsYXNzOwoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENG
U3RyaW5nUmVmIGtDb2xvclN5bmNEZXZpY2VQcm9maWxlVVJMOwoKX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNEZXZpY2VE
ZXNjcmlwdGlvbjsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJu
IENGU3RyaW5nUmVmIGtDb2xvclN5bmNEZXZpY2VEZXNjcmlwdGlvbnM7CgpfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9yU3luY0Zh
Y3RvcnlQcm9maWxlczsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0
ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNDdXN0b21Qcm9maWxlczsKCl9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jRGV2
aWNlTW9kZURlc2NyaXB0aW9uOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9yU3luY0RldmljZU1vZGVEZXNjcmlwdGlvbnM7Cl9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBr
Q29sb3JTeW5jRGV2aWNlRGVmYXVsdFByb2ZpbGVJRDsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNEZXZpY2VIb3N0U2Nv
cGU7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmlu
Z1JlZiBrQ29sb3JTeW5jRGV2aWNlVXNlclNjb3BlOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9yU3luY1Byb2ZpbGVIb3N0U2Nv
cGU7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmlu
Z1JlZiBrQ29sb3JTeW5jUHJvZmlsZVVzZXJTY29wZTsKCl9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jRGV2aWNlUHJvZmls
ZUlzRmFjdG9yeTsKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVy
biBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jRGV2aWNlUHJvZmlsZUlzRGVmYXVsdDsKX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5
bmNEZXZpY2VQcm9maWxlSXNDdXJyZW50OwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBleHRlcm4gQ0ZTdHJpbmdSZWYga0NvbG9yU3luY0RldmljZVByb2ZpbGVJRDsKCl9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBr
Q29sb3JTeW5jRGV2aWNlUmVnaXN0ZXJlZE5vdGlmaWNhdGlvbjsKX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIENGU3RyaW5nUmVmIGtDb2xvclN5bmNEZXZpY2VV
bnJlZ2lzdGVyZWROb3RpZmljYXRpb247Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIGV4dGVybiBDRlN0cmluZ1JlZiBrQ29sb3JTeW5jRGV2aWNlUHJvZmlsZXNOb3RpZmlj
YXRpb247Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRlN0
cmluZ1JlZiBrQ29sb3JTeW5jRGlzcGxheURldmljZVByb2ZpbGVzTm90aWZpY2F0aW9uOwoKX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgZXh0ZXJuIGJvb2wgQ29sb3JTeW5j
UmVnaXN0ZXJEZXZpY2UgKENGU3RyaW5nUmVmIGRldmljZUNsYXNzLCBDRlVVSURSZWYgZGV2aWNl
SUQsIENGRGljdGlvbmFyeVJlZiBkZXZpY2VJbmZvKTsKIyAxMzggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JT
eW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RldmljZS5oIiAzCl9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBib29sIENvbG9yU3luY1VucmVnaXN0ZXJE
ZXZpY2UgKENGU3RyaW5nUmVmIGRldmljZUNsYXNzLCBDRlVVSURSZWYgZGV2aWNlSUQpOwoKCgoK
CgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBleHRlcm4gYm9vbCBDb2xv
clN5bmNEZXZpY2VTZXRDdXN0b21Qcm9maWxlcyAoQ0ZTdHJpbmdSZWYgZGV2aWNlQ2xhc3MsIENG
VVVJRFJlZiBkZXZpY2VJRCwgQ0ZEaWN0aW9uYXJ5UmVmIHByb2ZpbGVJbmZvKTsKIyAxNzggIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RldmljZS5oIiAz
Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiBDRkRpY3Rpb25h
cnlSZWYgQ29sb3JTeW5jRGV2aWNlQ29weURldmljZUluZm8gKENGU3RyaW5nUmVmIGRldmljZUNs
YXNzLCBDRlVVSURSZWYgZGV2SUQpOwojIDIwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3
b3JrL0hlYWRlcnMvQ29sb3JTeW5jRGV2aWNlLmgiIDMKdHlwZWRlZiBib29sICgqQ29sb3JTeW5j
RGV2aWNlUHJvZmlsZUl0ZXJhdGVDYWxsYmFjaykgKENGRGljdGlvbmFyeVJlZiBjb2xvclN5bmNE
ZXZpY2VQcm9maWxlSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQqIHVzZXJJbmZvKTsKIyAyMjAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29sb3JT
eW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RldmljZS5oIiAzCl9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGV4dGVybiB2b2lkIENvbG9yU3luY0l0ZXJhdGVEZXZp
Y2VQcm9maWxlcyhDb2xvclN5bmNEZXZpY2VQcm9maWxlSXRlcmF0ZUNhbGxiYWNrIGNhbGxCYWNr
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHVzZXJJ
bmZvKTsKCgoKfQojIDE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvSGVhZGVycy9D
b2xvclN5bmMuaCIgMiAzCiMgMjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL1ByaW50Q29yZS5oIiAyIDMKCgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvUE1EZWZpbml0aW9ucy5oIiAxIDMKIyAxNSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Qcmlu
dENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1EZWZpbml0aW9ucy5oIiAzCiNkZWZpbmUgX19QTURF
RklOSVRJT05TX18gCiMgMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJz
L1BNRGVmaW5pdGlvbnMuaCIgMwp0eXBlZGVmIGNvbnN0IHZvaWQgKiBQTU9iamVjdDsKdHlwZWRl
ZiBzdHJ1Y3QgT3BhcXVlUE1QcmludFNldHRpbmdzKiBQTVByaW50U2V0dGluZ3M7CnR5cGVkZWYg
c3RydWN0IE9wYXF1ZVBNUGFnZUZvcm1hdCogUE1QYWdlRm9ybWF0Owp0eXBlZGVmIHN0cnVjdCBP
cGFxdWVQTVByaW50U2Vzc2lvbiogUE1QcmludFNlc3Npb247CnR5cGVkZWYgc3RydWN0IE9wYXF1
ZVBNUHJpbnRlciogUE1QcmludGVyOwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVQTVNlcnZlciogUE1T
ZXJ2ZXI7CnR5cGVkZWYgc3RydWN0IE9wYXF1ZVBNUHJlc2V0KiBQTVByZXNldDsKdHlwZWRlZiBz
dHJ1Y3QgT3BhcXVlUE1QYXBlciogUE1QYXBlcjsKZW51bSB7CiAga1BNQ2FuY2VsID0gMHgwMDgw
Cn07CgojZGVmaW5lIGtQTU5vRGF0YSBOVUxMCiNkZWZpbmUga1BNRG9udFdhbnRTaXplIE5VTEwK
I2RlZmluZSBrUE1Eb250V2FudERhdGEgTlVMTAojZGVmaW5lIGtQTURvbnRXYW50Qm9vbGVhbiBO
VUxMCiNkZWZpbmUga1BNTm9SZWZlcmVuY2UgTlVMTAojZGVmaW5lIGtQTUR1cGxleERlZmF1bHQg
a1BNRHVwbGV4Tm9uZQoKI2RlZmluZSBrUE1Ob1ByaW50U2V0dGluZ3MgKChQTVByaW50U2V0dGlu
Z3MpTlVMTCkKCiNkZWZpbmUga1BNTm9QYWdlRm9ybWF0ICgoUE1QYWdlRm9ybWF0KU5VTEwpCgoj
ZGVmaW5lIGtQTVNlcnZlckxvY2FsICgoUE1TZXJ2ZXIpTlVMTCkKdHlwZWRlZiBVSW50MTYgUE1E
ZXN0aW5hdGlvblR5cGU7CmVudW0gewogIGtQTURlc3RpbmF0aW9uSW52YWxpZCA9IDAsCiAga1BN
RGVzdGluYXRpb25QcmludGVyID0gMSwKICBrUE1EZXN0aW5hdGlvbkZpbGUgPSAyLAogIGtQTURl
c3RpbmF0aW9uRmF4ID0gMywKICBrUE1EZXN0aW5hdGlvblByZXZpZXcgPSA0LAogIGtQTURlc3Rp
bmF0aW9uUHJvY2Vzc1BERiA9IDUKfTsKCiNkZWZpbmUga1BNRGVzdGluYXRpb25UeXBlRGVmYXVs
dCBrUE1EZXN0aW5hdGlvblByaW50ZXIKCnR5cGVkZWYgVUludDE2IFBNT3JpZW50YXRpb247CmVu
dW0gewogIGtQTVBvcnRyYWl0ID0gMSwKICBrUE1MYW5kc2NhcGUgPSAyLAogIGtQTVJldmVyc2VQ
b3J0cmFpdCA9IDMsCiAga1BNUmV2ZXJzZUxhbmRzY2FwZSA9IDQKfTsKCgp0eXBlZGVmIFVJbnQx
NiBQTVByaW50ZXJTdGF0ZTsKZW51bSB7CiAga1BNUHJpbnRlcklkbGUgPSAzLAogIGtQTVByaW50
ZXJQcm9jZXNzaW5nID0gNCwKICBrUE1QcmludGVyU3RvcHBlZCA9IDUKfTsKCnR5cGVkZWYgVUlu
dDMyIFBNQ29sb3JTcGFjZU1vZGVsOwplbnVtIHsKICBrUE1Vbmtub3duQ29sb3JTcGFjZU1vZGVs
ID0gMCwKICBrUE1HcmF5Q29sb3JTcGFjZU1vZGVsID0gMSwKICBrUE1SR0JDb2xvclNwYWNlTW9k
ZWwgPSAyLAogIGtQTUNNWUtDb2xvclNwYWNlTW9kZWwgPSAzLAogIGtQTURldk5Db2xvclNwYWNl
TW9kZWwgPSA0Cn07CgojZGVmaW5lIGtQTUNvbG9yU3BhY2VNb2RlbENvdW50IDQKCgp0eXBlZGVm
IFVJbnQzMiBQTVF1YWxpdHlNb2RlOwplbnVtIHsKICBrUE1RdWFsaXR5TG93ZXN0ID0gMHgwMDAw
LAogIGtQTVF1YWxpdHlJbmtTYXZlciA9IDB4MDAwMSwKICBrUE1RdWFsaXR5RHJhZnQgPSAweDAw
MDQsCiAga1BNUXVhbGl0eU5vcm1hbCA9IDB4MDAwOCwKICBrUE1RdWFsaXR5UGhvdG8gPSAweDAw
MEIsCiAga1BNUXVhbGl0eUJlc3QgPSAweDAwMEQsCiAga1BNUXVhbGl0eUhpZ2hlc3QgPSAweDAw
MEYKfTsKCgoKdHlwZWRlZiBVSW50MzIgUE1QYXBlclR5cGU7CmVudW0gewogIGtQTVBhcGVyVHlw
ZVVua25vd24gPSAweDAwMDAsCiAga1BNUGFwZXJUeXBlUGxhaW4gPSAweDAwMDEsCiAga1BNUGFw
ZXJUeXBlQ29hdGVkID0gMHgwMDAyLAogIGtQTVBhcGVyVHlwZVByZW1pdW0gPSAweDAwMDMsCiAg
a1BNUGFwZXJUeXBlR2xvc3N5ID0gMHgwMDA0LAogIGtQTVBhcGVyVHlwZVRyYW5zcGFyZW5jeSA9
IDB4MDAwNSwKICBrUE1QYXBlclR5cGVUU2hpcnQgPSAweDAwMDYKfTsKCgp0eXBlZGVmIFVJbnQx
NiBQTVNjYWxpbmdBbGlnbm1lbnQ7CmVudW0gewogIGtQTVNjYWxpbmdQaW5Ub3BMZWZ0ID0gMSwK
ICBrUE1TY2FsaW5nUGluVG9wUmlnaHQgPSAyLAogIGtQTVNjYWxpbmdQaW5Cb3R0b21MZWZ0ID0g
MywKICBrUE1TY2FsaW5nUGluQm90dG9tUmlnaHQgPSA0LAogIGtQTVNjYWxpbmdDZW50ZXJPblBh
cGVyID0gNSwKICBrUE1TY2FsaW5nQ2VudGVyT25JbWdBcmVhID0gNgp9OwoKCnR5cGVkZWYgVUlu
dDMyIFBNRHVwbGV4TW9kZTsKZW51bSB7CiAga1BNRHVwbGV4Tm9uZSA9IDB4MDAwMSwKICBrUE1E
dXBsZXhOb1R1bWJsZSA9IDB4MDAwMiwKICBrUE1EdXBsZXhUdW1ibGUgPSAweDAwMDMsCiAga1BN
U2ltcGxleFR1bWJsZSA9IDB4MDAwNAp9OwoKCnR5cGVkZWYgVUludDE2IFBNTGF5b3V0RGlyZWN0
aW9uOwplbnVtIHsKCiAga1BNTGF5b3V0TGVmdFJpZ2h0VG9wQm90dG9tID0gMSwKICBrUE1MYXlv
dXRMZWZ0UmlnaHRCb3R0b21Ub3AgPSAyLAogIGtQTUxheW91dFJpZ2h0TGVmdFRvcEJvdHRvbSA9
IDMsCiAga1BNTGF5b3V0UmlnaHRMZWZ0Qm90dG9tVG9wID0gNCwKICBrUE1MYXlvdXRUb3BCb3R0
b21MZWZ0UmlnaHQgPSA1LAogIGtQTUxheW91dFRvcEJvdHRvbVJpZ2h0TGVmdCA9IDYsCiAga1BN
TGF5b3V0Qm90dG9tVG9wTGVmdFJpZ2h0ID0gNywKICBrUE1MYXlvdXRCb3R0b21Ub3BSaWdodExl
ZnQgPSA4Cn07CgoKdHlwZWRlZiBVSW50MTYgUE1Cb3JkZXJUeXBlOwplbnVtIHsKICBrUE1Cb3Jk
ZXJTaW5nbGVIYWlybGluZSA9IDEsCiAga1BNQm9yZGVyRG91YmxlSGFpcmxpbmUgPSAyLAogIGtQ
TUJvcmRlclNpbmdsZVRoaWNrbGluZSA9IDMsCiAga1BNQm9yZGVyRG91YmxlVGhpY2tsaW5lID0g
NAp9OwoKCgoKCnR5cGVkZWYgT3B0aW9uQml0cyBQTVByaW50RGlhbG9nT3B0aW9uRmxhZ3M7CmVu
dW0gewoga1BNSGlkZUlubGluZUl0ZW1zID0gKDBMIDw8IDApLAoga1BNU2hvd0RlZmF1bHRJbmxp
bmVJdGVtcyA9ICgxTCA8PCAxNSksCiBrUE1TaG93SW5saW5lQ29waWVzID0gKDFMIDw8IDApLAog
a1BNU2hvd0lubGluZVBhZ2VSYW5nZSA9ICgxTCA8PCAxKSwKIGtQTVNob3dJbmxpbmVQYWdlUmFu
Z2VXaXRoU2VsZWN0aW9uID0gKDFMIDw8IDYpLAoga1BNU2hvd0lubGluZVBhcGVyU2l6ZSA9ICgx
TCA8PCAyKSwKIGtQTVNob3dJbmxpbmVPcmllbnRhdGlvbiA9ICgxTCA8PCAzKSwKIGtQTVNob3dJ
bmxpbmVTY2FsZSA9ICgxTCA8PCA3KSwKIGtQTVNob3dQYWdlQXR0cmlidXRlc1BERSA9ICgxTCA8
PCA4KSwKfTsKCnR5cGVkZWYgVUludDE2IFBNUFBERG9tYWluOwplbnVtIHsKICBrQWxsUFBERG9t
YWlucyA9IDEsCiAga1N5c3RlbVBQRERvbWFpbiA9IDIsCiAga0xvY2FsUFBERG9tYWluID0gMywK
ICBrTmV0d29ya1BQRERvbWFpbiA9IDQsCiAga1VzZXJQUEREb21haW4gPSA1LAogIGtDVVBTUFBE
RG9tYWluID0gNgp9OwoKCgojZGVmaW5lIGtQTVBQRERlc2NyaXB0aW9uVHlwZSBDRlNUUigiUE1Q
UEREZXNjcmlwdGlvblR5cGUiKQoKI2RlZmluZSBrUE1Eb2N1bWVudEZvcm1hdERlZmF1bHQgQ0ZT
VFIoImNvbS5hcHBsZS5kb2N1bWVudGZvcm1hdC5kZWZhdWx0IikKI2RlZmluZSBrUE1Eb2N1bWVu
dEZvcm1hdFBERiBDRlNUUigiYXBwbGljYXRpb24vcGRmIikKI2RlZmluZSBrUE1Eb2N1bWVudEZv
cm1hdFBvc3RTY3JpcHQgQ0ZTVFIoImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiKQoKI2RlZmluZSBr
UE1HcmFwaGljc0NvbnRleHREZWZhdWx0IENGU1RSKCJjb20uYXBwbGUuZ3JhcGhpY3Njb250ZXh0
LmRlZmF1bHQiKQojZGVmaW5lIGtQTUdyYXBoaWNzQ29udGV4dENvcmVHcmFwaGljcyBDRlNUUigi
Y29tLmFwcGxlLmdyYXBoaWNzY29udGV4dC5jb3JlZ3JhcGhpY3MiKQoKI2RlZmluZSBrUERGV29y
a0Zsb3dJdGVtVVJMS2V5IENGU1RSKCJpdGVtVVJMIikKI2RlZmluZSBrUERGV29ya2Zsb3dGb2xk
ZXJVUkxLZXkgQ0ZTVFIoImZvbGRlclVSTCIpCiNkZWZpbmUga1BERldvcmtmbG93RGlzcGxheU5h
bWVLZXkgQ0ZTVFIoImRpc3BsYXlOYW1lIikKI2RlZmluZSBrUERGV29ya2Zsb3dJdGVtc0tleSBD
RlNUUigiaXRlbXMiKQoKCmVudW0gewogIGtQTU5vRXJyb3IgPSBub0VyciwKICBrUE1HZW5lcmFs
RXJyb3IgPSAtMzA4NzAsCiAga1BNT3V0T2ZTY29wZSA9IC0zMDg3MSwKICBrUE1JbnZhbGlkUGFy
YW1ldGVyID0gcGFyYW1FcnIsCiAga1BNTm9EZWZhdWx0UHJpbnRlciA9IC0zMDg3MiwKICBrUE1O
b3RJbXBsZW1lbnRlZCA9IC0zMDg3MywKICBrUE1Ob1N1Y2hFbnRyeSA9IC0zMDg3NCwKICBrUE1J
bnZhbGlkUHJpbnRTZXR0aW5ncyA9IC0zMDg3NSwKICBrUE1JbnZhbGlkUGFnZUZvcm1hdCA9IC0z
MDg3NiwKICBrUE1WYWx1ZU91dE9mUmFuZ2UgPSAtMzA4NzcsCiAga1BNTG9ja0lnbm9yZWQgPSAt
MzA4NzgKfTsKCmVudW0gewogIGtQTUludmFsaWRQcmludFNlc3Npb24gPSAtMzA4NzksCiAga1BN
SW52YWxpZFByaW50ZXIgPSAtMzA4ODAsCiAga1BNT2JqZWN0SW5Vc2UgPSAtMzA4ODEsCiAga1BN
SW52YWxpZFByZXNldCA9IC0zMDg5OQp9OwoKCmVudW0gewogIGtQTVByaW50QWxsUGFnZXMgPSAt
MQp9OwoKZW51bSB7CiAga1BNVW5sb2NrZWQgPSBmYWxzZQp9OwoKc3RydWN0IFBNUmVjdCB7CiAg
ZG91YmxlIHRvcDsKICBkb3VibGUgbGVmdDsKICBkb3VibGUgYm90dG9tOwogIGRvdWJsZSByaWdo
dDsKfTsKdHlwZWRlZiBzdHJ1Y3QgUE1SZWN0IFBNUmVjdDsKc3RydWN0IFBNUmVzb2x1dGlvbiB7
CiAgZG91YmxlIGhSZXM7CiAgZG91YmxlIHZSZXM7Cn07CnR5cGVkZWYgc3RydWN0IFBNUmVzb2x1
dGlvbiBQTVJlc29sdXRpb247CnN0cnVjdCBQTUxhbmd1YWdlSW5mbyB7CiAgU3RyMzIgbGV2ZWw7
CiAgU3RyMzIgdmVyc2lvbjsKICBTdHIzMiByZWxlYXNlOwp9Owp0eXBlZGVmIHN0cnVjdCBQTUxh
bmd1YWdlSW5mbyBQTUxhbmd1YWdlSW5mbzsKCnR5cGVkZWYgUE1SZWN0IFBNUGFwZXJNYXJnaW5z
OwojIDI4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1EZWZpbml0
aW9ucy5oIiAzCmVudW0gUE1EYXRhRm9ybWF0IHsKICBrUE1EYXRhRm9ybWF0WE1MRGVmYXVsdCA9
IDAsCiAga1BNRGF0YUZvcm1hdFhNTE1pbmltYWwgPSAxLAogIGtQTURhdGFGb3JtYXRYTUxDb21w
cmVzc2VkID0gMgp9Owp0eXBlZGVmIGVudW0gUE1EYXRhRm9ybWF0IFBNRGF0YUZvcm1hdDsKCgoK
CgojZGVmaW5lIGtQTVByZXNldEdyYXBoaWNzVHlwZUtleSBDRlNUUigiY29tLmFwcGxlLnByaW50
LnByZXNldC5ncmFwaGljc1R5cGUiKQoKCgoKI2RlZmluZSBrUE1QcmVzZXRHcmFwaGljc1R5cGVQ
aG90byBDRlNUUigiUGhvdG8iKQoKCgoKI2RlZmluZSBrUE1QcmVzZXRHcmFwaGljc1R5cGVBbGwg
Q0ZTVFIoIkFsbCIpCgoKCiNkZWZpbmUga1BNUHJlc2V0R3JhcGhpY3NUeXBlR2VuZXJhbCBDRlNU
UigiR2VuZXJhbCIpCgoKCiNkZWZpbmUga1BNUHJlc2V0R3JhcGhpY3NUeXBlTm9uZSBDRlNUUigi
Tm9uZSIpCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1ByaW50
Q29yZS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9QTUNvcmUuaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL1BNQ29yZS5oIiAzCiNkZWZpbmUgX19QTUNPUkVfXyAKCgoKCgoKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlR3JhcGhpY3MuaCIgMSAzCiMgMjMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAyIDMKIyAz
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0
ZXJuICJDIiB7CgoKCiNkZWZpbmUgUE1fVVNFX1NFU1NJT05fQVBJUyAxCgoKCgogICAgICAgCiAg
ICAgICAKICAgICAgIAojIDczICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1SZXRhaW4oUE1PYmplY3Qgb2JqZWN0KSA7
CiMgMTA2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIg
MwpleHRlcm4gT1NTdGF0dXMKUE1SZWxlYXNlKFBNT2JqZWN0IG9iamVjdCkgOwoKICAgICAgIAog
ICAgICAgCiAgICAgICAKIyAxMjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTUNyZWF0ZVNlc3Npb24oUE1QcmludFNl
c3Npb24gKiBwcmludFNlc3Npb24pIDsKIyAxNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1l
d29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVNlc3Npb25FcnJvcihQ
TVByaW50U2Vzc2lvbiBwcmludFNlc3Npb24pIDsKIyAxNTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3Jl
LmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVNlc3Npb25T
ZXRFcnJvcigKICBQTVByaW50U2Vzc2lvbiBwcmludFNlc3Npb24sCiAgT1NTdGF0dXMgcHJpbnRF
cnJvcikgOwoKICAgICAgIAogICAgICAgCiAgICAgICAKIyAxODIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRD
b3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVNlc3Np
b25CZWdpbkNHRG9jdW1lbnROb0RpYWxvZygKICBQTVByaW50U2Vzc2lvbiBwcmludFNlc3Npb24s
CiAgUE1QcmludFNldHRpbmdzIHByaW50U2V0dGluZ3MsCiAgUE1QYWdlRm9ybWF0IHBhZ2VGb3Jt
YXQpIDsKIyAxOTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29y
ZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVNlc3Npb25FbmREb2N1bWVudE5vRGlhbG9nKFBNUHJp
bnRTZXNzaW9uIHByaW50U2Vzc2lvbikgOwojIDIxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNU2Vzc2lvbkJlZ2lu
UGFnZU5vRGlhbG9nKAogIFBNUHJpbnRTZXNzaW9uIHByaW50U2Vzc2lvbiwKICBQTVBhZ2VGb3Jt
YXQgcGFnZUZvcm1hdCwKICBjb25zdCBQTVJlY3QgKiBwYWdlRnJhbWUpIDsKIyAyMzggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0
YXR1cwpQTVNlc3Npb25FbmRQYWdlTm9EaWFsb2coUE1QcmludFNlc3Npb24gcHJpbnRTZXNzaW9u
KSA7CiMgMjcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUu
aCIgMwpleHRlcm4gT1NTdGF0dXMKUE1TZXNzaW9uR2V0Q0dHcmFwaGljc0NvbnRleHQoCiAgUE1Q
cmludFNlc3Npb24gcHJpbnRTZXNzaW9uLAogIENHQ29udGV4dFJlZiAqIGNvbnRleHQpIDsKCiAg
ICAgICAKICAgICAgIAogICAgICAgCiMgMzI0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdv
cmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1TZXNzaW9uR2V0RGVzdGlu
YXRpb25UeXBlKAogIFBNUHJpbnRTZXNzaW9uIHByaW50U2Vzc2lvbiwKICBQTVByaW50U2V0dGlu
Z3MgcHJpbnRTZXR0aW5ncywKICBQTURlc3RpbmF0aW9uVHlwZSAqIGRlc3RUeXBlUCkgOwojIDM2
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzClBNU2Vzc2lvbkNvcHlEZXN0aW5hdGlvbkZvcm1hdCgKICBQTVByaW50U2Vz
c2lvbiBwcmludFNlc3Npb24sCiAgUE1QcmludFNldHRpbmdzIHByaW50U2V0dGluZ3MsCiAgQ0ZT
dHJpbmdSZWYgKiBkZXN0Rm9ybWF0UCkgOwojIDQxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNU2Vzc2lvbkNvcHlE
ZXN0aW5hdGlvbkxvY2F0aW9uKAogIFBNUHJpbnRTZXNzaW9uIHByaW50U2Vzc2lvbiwKICBQTVBy
aW50U2V0dGluZ3MgcHJpbnRTZXR0aW5ncywKICBDRlVSTFJlZiAqIGRlc3RMb2NhdGlvblApIDsK
IyA0NzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAz
CmV4dGVybiBPU1N0YXR1cwpQTVNlc3Npb25TZXREZXN0aW5hdGlvbigKICBQTVByaW50U2Vzc2lv
biBwcmludFNlc3Npb24sCiAgUE1QcmludFNldHRpbmdzIHByaW50U2V0dGluZ3MsCiAgUE1EZXN0
aW5hdGlvblR5cGUgZGVzdFR5cGUsCiAgQ0ZTdHJpbmdSZWYgZGVzdEZvcm1hdCwKICBDRlVSTFJl
ZiBkZXN0TG9jYXRpb24pIDsKIyA1MjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9I
ZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVNlc3Npb25Db3B5T3V0cHV0Rm9y
bWF0TGlzdCgKICBQTVByaW50U2Vzc2lvbiBwcmludFNlc3Npb24sCiAgUE1EZXN0aW5hdGlvblR5
cGUgZGVzdFR5cGUsCiAgQ0ZBcnJheVJlZiAqIGRvY3VtZW50Rm9ybWF0UCkgOwojIDU3NCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzClBNU2Vzc2lvbkNyZWF0ZVBhZ2VGb3JtYXRMaXN0KAogIFBNUHJpbnRTZXNzaW9uIHBy
aW50U2Vzc2lvbiwKICBQTVByaW50ZXIgcHJpbnRlciwKICBDRkFycmF5UmVmICogcGFnZUZvcm1h
dExpc3QpIDsKIyA1OTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BN
Q29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVNlc3Npb25DcmVhdGVQcmludGVyTGlzdCgKICBQ
TVByaW50U2Vzc2lvbiBwcmludFNlc3Npb24sCiAgQ0ZBcnJheVJlZiAqIHByaW50ZXJMaXN0LAog
IENGSW5kZXggKiBjdXJyZW50SW5kZXgsCiAgUE1QcmludGVyICogY3VycmVudFByaW50ZXIpIDsK
IyA2MDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAz
CmV4dGVybiBPU1N0YXR1cwpQTVNlc3Npb25HZXRDdXJyZW50UHJpbnRlcigKICBQTVByaW50U2Vz
c2lvbiBwcmludFNlc3Npb24sCiAgUE1QcmludGVyICogY3VycmVudFByaW50ZXIpIDsKIyA2MjUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVy
biBPU1N0YXR1cwpQTVNlc3Npb25TZXRDdXJyZW50UE1QcmludGVyKAogIFBNUHJpbnRTZXNzaW9u
IHNlc3Npb24sCiAgUE1QcmludGVyIHByaW50ZXIpIDsKIyA2MzggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRD
b3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVNlc3Np
b25HZXREYXRhRnJvbVNlc3Npb24oCiAgUE1QcmludFNlc3Npb24gcHJpbnRTZXNzaW9uLAogIENG
U3RyaW5nUmVmIGtleSwKICBDRlR5cGVSZWYgKiBkYXRhKSA7CiMgNjUyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1By
aW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1T
ZXNzaW9uU2V0RGF0YUluU2Vzc2lvbigKICBQTVByaW50U2Vzc2lvbiBwcmludFNlc3Npb24sCiAg
Q0ZTdHJpbmdSZWYga2V5LAogIENGVHlwZVJlZiBkYXRhKSA7CgogICAgICAgCiAgICAgICAKICAg
ICAgIAojIDY3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3Jl
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNQ3JlYXRlUGFnZUZvcm1hdChQTVBhZ2VGb3JtYXQgKiBw
YWdlRm9ybWF0KSA7CiMgNjg4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1TZXNzaW9uRGVmYXVsdFBhZ2VGb3JtYXQo
CiAgUE1QcmludFNlc3Npb24gcHJpbnRTZXNzaW9uLAogIFBNUGFnZUZvcm1hdCBwYWdlRm9ybWF0
KSA7CiMgNzAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUu
aCIgMwpleHRlcm4gT1NTdGF0dXMKUE1TZXNzaW9uVmFsaWRhdGVQYWdlRm9ybWF0KAogIFBNUHJp
bnRTZXNzaW9uIHByaW50U2Vzc2lvbiwKICBQTVBhZ2VGb3JtYXQgcGFnZUZvcm1hdCwKICBCb29s
ZWFuICogcmVzdWx0KSA7CiMgNzE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1Db3B5UGFnZUZvcm1hdCgKICBQTVBh
Z2VGb3JtYXQgZm9ybWF0U3JjLAogIFBNUGFnZUZvcm1hdCBmb3JtYXREZXN0KSA7CiMgNzQyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4g
T1NTdGF0dXMKUE1DcmVhdGVQYWdlRm9ybWF0V2l0aFBNUGFwZXIoCiAgUE1QYWdlRm9ybWF0ICog
cGFnZUZvcm1hdCwKICBQTVBhcGVyIHBhcGVyKSA7CiMgNzY3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1QYWdlRm9y
bWF0Q3JlYXRlRGF0YVJlcHJlc2VudGF0aW9uKAogIFBNUGFnZUZvcm1hdCBwYWdlRm9ybWF0LAog
IENGRGF0YVJlZiAqIGRhdGEsCiAgUE1EYXRhRm9ybWF0IGZvcm1hdCkgOwojIDc4NyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzClBNUGFnZUZvcm1hdENyZWF0ZVdpdGhEYXRhUmVwcmVzZW50YXRpb24oCiBDRkRhdGFSZWYg
ZGF0YSwKIFBNUGFnZUZvcm1hdCAqIHBhZ2VGb3JtYXQpIDsKCgoKICAgICAgIAojIDgwMyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzClBNR2V0QWRqdXN0ZWRQYWdlUmVjdCgKICBQTVBhZ2VGb3JtYXQgcGFnZUZvcm1hdCwK
ICBQTVJlY3QgKiBwYWdlUmVjdCkgOwojIDgxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNR2V0QWRqdXN0ZWRQYXBl
clJlY3QoCiAgUE1QYWdlRm9ybWF0IHBhZ2VGb3JtYXQsCiAgUE1SZWN0ICogcGFwZXJSZWN0KSA7
CiMgODMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIg
MwpleHRlcm4gT1NTdGF0dXMKUE1HZXRPcmllbnRhdGlvbigKICBQTVBhZ2VGb3JtYXQgcGFnZUZv
cm1hdCwKICBQTU9yaWVudGF0aW9uICogb3JpZW50YXRpb24pIDsKIyA4NDUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
UHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQ
TUdldFBhZ2VGb3JtYXRFeHRlbmRlZERhdGEoCiAgUE1QYWdlRm9ybWF0IHBhZ2VGb3JtYXQsCiAg
T1NUeXBlIGRhdGFJRCwKICBVSW50MzIgKiBzaXplLAogIHZvaWQgKiBleHRlbmRlZERhdGEpIDsK
IyA4NzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAz
CmV4dGVybiBPU1N0YXR1cwpQTVBhZ2VGb3JtYXRHZXRQcmludGVySUQoCiBQTVBhZ2VGb3JtYXQg
cGFnZUZvcm1hdCwKIENGU3RyaW5nUmVmKiBwcmludGVySUQgKSA7CiMgODk2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMK
UE1HZXRTY2FsZSgKICBQTVBhZ2VGb3JtYXQgcGFnZUZvcm1hdCwKICBkb3VibGUgKiBzY2FsZSkg
OwojIDkxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgi
IDMKZXh0ZXJuIE9TU3RhdHVzClBNR2V0VW5hZGp1c3RlZFBhZ2VSZWN0KAogIFBNUGFnZUZvcm1h
dCBwYWdlRm9ybWF0LAogIFBNUmVjdCAqIHBhZ2VSZWN0KSA7CiMgOTQyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1By
aW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1H
ZXRVbmFkanVzdGVkUGFwZXJSZWN0KAogIFBNUGFnZUZvcm1hdCBwYWdlRm9ybWF0LAogIFBNUmVj
dCAqIHBhcGVyUmVjdCkgOwoKCiAgICAgICAKIyA5NzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZy
YW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVNldE9yaWVudGF0
aW9uKAogIFBNUGFnZUZvcm1hdCBwYWdlRm9ybWF0LAogIFBNT3JpZW50YXRpb24gb3JpZW50YXRp
b24sCiAgQm9vbGVhbiBsb2NrKSA7CiMgOTg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdv
cmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1TZXRQYWdlRm9ybWF0RXh0
ZW5kZWREYXRhKAogIFBNUGFnZUZvcm1hdCBwYWdlRm9ybWF0LAogIE9TVHlwZSBkYXRhSUQsCiAg
VUludDMyIHNpemUsCiAgdm9pZCAqIGV4dGVuZGVkRGF0YSkgOwojIDEwMDMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
UHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQ
TVNldFNjYWxlKAogIFBNUGFnZUZvcm1hdCBwYWdlRm9ybWF0LAogIGRvdWJsZSBzY2FsZSkgOwoK
CiAgICAgICAKICAgICAgIAogICAgICAgCiMgMTAyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNQ3JlYXRlUHJpbnRT
ZXR0aW5ncyhQTVByaW50U2V0dGluZ3MgKiBwcmludFNldHRpbmdzKSA7CiMgMTA0MCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzClBNU2Vzc2lvbkRlZmF1bHRQcmludFNldHRpbmdzKAogIFBNUHJpbnRTZXNzaW9uIHByaW50
U2Vzc2lvbiwKICBQTVByaW50U2V0dGluZ3MgcHJpbnRTZXR0aW5ncykgOwojIDEwNTMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0
YXR1cwpQTVNlc3Npb25WYWxpZGF0ZVByaW50U2V0dGluZ3MoCiAgUE1QcmludFNlc3Npb24gcHJp
bnRTZXNzaW9uLAogIFBNUHJpbnRTZXR0aW5ncyBwcmludFNldHRpbmdzLAogIEJvb2xlYW4gKiBy
ZXN1bHQpIDsKIyAxMDY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Q
TUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1Db3B5UHJpbnRTZXR0aW5ncygKICBQTVByaW50
U2V0dGluZ3Mgc2V0dGluZ1NyYywKICBQTVByaW50U2V0dGluZ3Mgc2V0dGluZ0Rlc3QpIDsKIyAx
MDk2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpl
eHRlcm4gT1NTdGF0dXMKUE1QcmludFNldHRpbmdzQ3JlYXRlRGF0YVJlcHJlc2VudGF0aW9uKAog
IFBNUHJpbnRTZXR0aW5ncyBwcmludFNldHRpbmdzLAogIENGRGF0YVJlZiAqIGRhdGEsCiAgUE1E
YXRhRm9ybWF0IGZvcm1hdCkgOwojIDExMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29y
ay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVByaW50U2V0dGluZ3NDcmVh
dGVXaXRoRGF0YVJlcHJlc2VudGF0aW9uKAogQ0ZEYXRhUmVmIGRhdGEsCiBQTVByaW50U2V0dGlu
Z3MgKnByaW50U2V0dGluZ3MpIDsKCgoKICAgICAgIAojIDExMzMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRD
b3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTUdldENv
bGxhdGUoCiAgUE1QcmludFNldHRpbmdzIHByaW50U2V0dGluZ3MsCiAgQm9vbGVhbiAqIGNvbGxh
dGUpIDsKIyAxMTQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNv
cmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1HZXRDb3BpZXMoCiAgUE1QcmludFNldHRpbmdzIHBy
aW50U2V0dGluZ3MsCiAgVUludDMyICogY29waWVzKSA7CiMgMTE2MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Qcmlu
dENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNR2V0
RHVwbGV4KAogIFBNUHJpbnRTZXR0aW5ncyBwcmludFNldHRpbmdzLAogIFBNRHVwbGV4TW9kZSAq
IGR1cGxleFNldHRpbmcpIDsKIyAxMTc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsv
SGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1HZXRGaXJzdFBhZ2UoCiAgUE1Q
cmludFNldHRpbmdzIHByaW50U2V0dGluZ3MsCiAgVUludDMyICogZmlyc3QpIDsKIyAxMTg5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4g
T1NTdGF0dXMKUE1HZXRMYXN0UGFnZSgKICBQTVByaW50U2V0dGluZ3MgcHJpbnRTZXR0aW5ncywK
ICBVSW50MzIgKiBsYXN0KSA7CiMgMTIxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNR2V0UGFnZVJhbmdlKAogIFBN
UHJpbnRTZXR0aW5ncyBwcmludFNldHRpbmdzLAogIFVJbnQzMiAqIG1pblBhZ2UsCiAgVUludDMy
ICogbWF4UGFnZSkgOwojIDEyMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVByaW50U2V0dGluZ3NHZXRKb2JOYW1l
KAogIFBNUHJpbnRTZXR0aW5ncyBwcmludFNldHRpbmdzLAogIENGU3RyaW5nUmVmICogbmFtZSkg
OwojIDEyNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5o
IiAzCmV4dGVybiBPU1N0YXR1cwpQTVByaW50U2V0dGluZ3NHZXRWYWx1ZSgKICBQTVByaW50U2V0
dGluZ3MgcHJpbnRTZXR0aW5ncywKICBDRlN0cmluZ1JlZiBrZXksCiAgQ0ZUeXBlUmVmICogdmFs
dWUpIDsKCiAgICAgICAKIyAxMjY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1TZXRDb2xsYXRlKAogIFBNUHJpbnRT
ZXR0aW5ncyBwcmludFNldHRpbmdzLAogIEJvb2xlYW4gY29sbGF0ZSkgOwojIDEyODAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0
YXR1cwpQTVNldENvcGllcygKICBQTVByaW50U2V0dGluZ3MgcHJpbnRTZXR0aW5ncywKICBVSW50
MzIgY29waWVzLAogIEJvb2xlYW4gbG9jaykgOwojIDEyOTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3Jl
LmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVNldER1cGxl
eCgKICBQTVByaW50U2V0dGluZ3MgcHJpbnRTZXR0aW5ncywKICBQTUR1cGxleE1vZGUgZHVwbGV4
U2V0dGluZykgOwojIDEzMDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJz
L1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVNldEZpcnN0UGFnZSgKICBQTVByaW50U2V0
dGluZ3MgcHJpbnRTZXR0aW5ncywKICBVSW50MzIgZmlyc3QsCiAgQm9vbGVhbiBsb2NrKSA7CiMg
MTMyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMK
ZXh0ZXJuIE9TU3RhdHVzClBNU2V0TGFzdFBhZ2UoCiAgUE1QcmludFNldHRpbmdzIHByaW50U2V0
dGluZ3MsCiAgVUludDMyIGxhc3QsCiAgQm9vbGVhbiBsb2NrKSA7CiMgMTM0NyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
ClBNU2V0UGFnZVJhbmdlKAogIFBNUHJpbnRTZXR0aW5ncyBwcmludFNldHRpbmdzLAogIFVJbnQz
MiBtaW5QYWdlLAogIFVJbnQzMiBtYXhQYWdlKSA7CiMgMTM2MiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNUHJpbnRT
ZXR0aW5nc1NldEpvYk5hbWUoCiAgUE1QcmludFNldHRpbmdzIHByaW50U2V0dGluZ3MsCiAgQ0ZT
dHJpbmdSZWYgbmFtZSkgOwojIDEzOTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9I
ZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVByaW50U2V0dGluZ3NTZXRWYWx1
ZSgKICBQTVByaW50U2V0dGluZ3MgcHJpbnRTZXR0aW5ncywKICBDRlN0cmluZ1JlZiBrZXksCiAg
Q0ZUeXBlUmVmIHZhbHVlLAogIEJvb2xlYW4gbG9ja2VkKSA7CiMgMTQxOSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Q
cmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBN
UHJpbnRTZXR0aW5nc0NvcHlBc0RpY3Rpb25hcnkoCiAgUE1QcmludFNldHRpbmdzIHByaW50U2V0
dGluZ3MsCiAgQ0ZEaWN0aW9uYXJ5UmVmICpzZXR0aW5nc0RpY3Rpb25hcnkpIDsKIyAxNDQ0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4g
T1NTdGF0dXMKUE1QcmludFNldHRpbmdzQ29weUtleXMoCiBQTVByaW50U2V0dGluZ3MgcHJpbnRT
ZXR0aW5ncywKIENGQXJyYXlSZWYgKnNldHRpbmdzS2V5cykgOwoKCgogICAgICAgCiAgICAgICAK
ICAgICAgIAojIDE0NzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BN
Q29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTUNyZWF0ZUdlbmVyaWNQcmludGVyKCBQTVByaW50
ZXIqIHByaW50ZXIgKSA7CiMgMTQ5NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNU2VydmVyQ3JlYXRlUHJpbnRlckxp
c3QoCiAgUE1TZXJ2ZXIgc2VydmVyLAogIENGQXJyYXlSZWYgKiBwcmludGVyTGlzdCkgOwojIDE1
MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4
dGVybiBPU1N0YXR1cwpQTVNlcnZlckxhdW5jaFByaW50ZXJCcm93c2VyKAogIFBNU2VydmVyIHNl
cnZlciwKICBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucykgOwojIDE1NTYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJp
bnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBQTVByaW50ZXIKUE1Q
cmludGVyQ3JlYXRlRnJvbVByaW50ZXJJRChDRlN0cmluZ1JlZiBwcmludGVySUQpIDsKIyAxNTg4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRl
cm4gT1NTdGF0dXMKUE1QcmludGVyQ29weURlc2NyaXB0aW9uVVJMKAogIFBNUHJpbnRlciBwcmlu
dGVyLAogIENGU3RyaW5nUmVmIGRlc2NyaXB0aW9uVHlwZSwKICBDRlVSTFJlZiAqIGZpbGVVUkwp
IDsKIyAxNjE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUu
aCIgMwpleHRlcm4gT1NTdGF0dXMKUE1QcmludGVyQ29weURldmljZVVSSSgKICBQTVByaW50ZXIg
cHJpbnRlciwKICBDRlVSTFJlZiAqIGRldmljZVVSSSkgOwojIDE2MzQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJp
bnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVBy
aW50ZXJDb3B5SG9zdE5hbWUoCiAgUE1QcmludGVyIHByaW50ZXIsCiAgQ0ZTdHJpbmdSZWYgKiBo
b3N0TmFtZVApIDsKIyAxNjcxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1QcmludGVyQ29weVByZXNldHMoCiAgUE1Q
cmludGVyIHByaW50ZXIsCiAgQ0ZBcnJheVJlZiAqIHByZXNldExpc3QpIDsKIyAxNzE2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NT
dGF0dXMKUE1QcmludGVyR2V0Q29tbUluZm8oCiAgUE1QcmludGVyIHByaW50ZXIsCiAgQm9vbGVh
biAqIHN1cHBvcnRzQ29udHJvbENoYXJSYW5nZVAsCiAgQm9vbGVhbiAqIHN1cHBvcnRzRWlnaHRC
aXRQKSA7CiMgMTczMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1D
b3JlLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmClBNUHJpbnRlckdldElEKFBNUHJpbnRlciBwcmlu
dGVyKSA7CiMgMTc0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1D
b3JlLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmClBNUHJpbnRlckdldExvY2F0aW9uKFBNUHJpbnRl
ciBwcmludGVyKSA7CiMgMTc1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNUHJpbnRlckdldERyaXZlckNyZWF0b3Io
CiAgUE1QcmludGVyIHByaW50ZXIsCiAgT1NUeXBlICogY3JlYXRvcikgOwojIDE3NjkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0
YXR1cwpQTVByaW50ZXJHZXREcml2ZXJSZWxlYXNlSW5mbygKICBQTVByaW50ZXIgcHJpbnRlciwK
ICBWZXJzUmVjICogcmVsZWFzZSkgOwojIDE3OTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1l
d29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVByaW50ZXJHZXRQcmlu
dGVyUmVzb2x1dGlvbkNvdW50KAogIFBNUHJpbnRlciBwcmludGVyLAogIFVJbnQzMiAqIGNvdW50
UCkgOwojIDE4MjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29y
ZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVByaW50ZXJHZXRJbmRleGVkUHJpbnRlclJlc29sdXRp
b24oCiAgUE1QcmludGVyIHByaW50ZXIsCiAgVUludDMyIGluZGV4LAogIFBNUmVzb2x1dGlvbiAq
IHJlc29sdXRpb25QKSA7CiMgMTg3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvUE1Db3JlLmgiIDMKT1NTdGF0dXMgUE1QcmludGVyR2V0T3V0cHV0UmVzb2x1dGlvbigK
ICBQTVByaW50ZXIgcHJpbnRlciwKICBQTVByaW50U2V0dGluZ3MgcHJpbnRTZXR0aW5ncywKICBQ
TVJlc29sdXRpb24gKnJlc29sdXRpb25QKSA7CiMgMTkxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKT1NTdGF0dXMgUE1QcmludGVyU2V0T3V0cHV0
UmVzb2x1dGlvbigKICBQTVByaW50ZXIgcHJpbnRlciwKICBQTVByaW50U2V0dGluZ3MgcHJpbnRT
ZXR0aW5ncywKICBjb25zdCBQTVJlc29sdXRpb24gKnJlc29sdXRpb25QKSA7CiMgMTkyNCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzClBNUHJpbnRlckdldExhbmd1YWdlSW5mbygKICBQTVByaW50ZXIgcHJpbnRlciwKICBQ
TUxhbmd1YWdlSW5mbyAqIGluZm8pIDsKIyAxOTM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1QcmludGVyR2V0TWFr
ZUFuZE1vZGVsTmFtZSgKICBQTVByaW50ZXIgcHJpbnRlciwKICBDRlN0cmluZ1JlZiAqIG1ha2VB
bmRNb2RlbCkgOwojIDE5NzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJz
L1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVByaW50ZXJHZXRNaW1lVHlwZXMoCiAgUE1Q
cmludGVyIHByaW50ZXIsCiAgUE1QcmludFNldHRpbmdzIHNldHRpbmdzLAogIENGQXJyYXlSZWYg
KiBtaW1lVHlwZXMpIDsKIyAxOTg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYKUE1QcmludGVyR2V0TmFtZShQTVBy
aW50ZXIgcHJpbnRlcikgOwojIDIwMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9I
ZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVByaW50ZXJHZXRQYXBlckxpc3Qo
CiAgUE1QcmludGVyIHByaW50ZXIsCiAgQ0ZBcnJheVJlZiAqIHBhcGVyTGlzdCkgOwojIDIwMjgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVy
biBPU1N0YXR1cwpQTVByaW50ZXJHZXRTdGF0ZSgKICBQTVByaW50ZXIgcHJpbnRlciwKICBQTVBy
aW50ZXJTdGF0ZSAqIHN0YXRlKSA7CiMgMjA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIEJvb2xlYW4KUE1QcmludGVySXNEZWZhdWx0
KFBNUHJpbnRlciBwcmludGVyKSA7CiMgMjA1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIEJvb2xlYW4KUE1QcmludGVySXNGYXZvcml0
ZShQTVByaW50ZXIgcHJpbnRlcikgOwojIDIwNjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1l
d29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBCb29sZWFuClBNUHJpbnRlcklzUG9zdFNj
cmlwdENhcGFibGUoUE1QcmludGVyIHByaW50ZXIpIDsKIyAyMDgzICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1Qcmlu
dGVySXNQb3N0U2NyaXB0UHJpbnRlcihQTVByaW50ZXIgcHJpbnRlciwgQm9vbGVhbiAqaXNQU1By
aW50ZXIpIDsKIyAyMTA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Q
TUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1QcmludGVySXNSZW1vdGUoCiAgUE1QcmludGVy
IHByaW50ZXIsCiAgQm9vbGVhbiAqIGlzUmVtb3RlUCkgOwojIDIxMzYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJp
bnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cyBQTVBy
aW50ZXJTZXREZWZhdWx0KFBNUHJpbnRlciBwcmludGVyKSA7CgoKICAgICAgIAogICAgICAgCiAg
ICAgICAKIyAyMTYzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNv
cmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1QcmVzZXRDb3B5TmFtZSgKICBQTVByZXNldCBwcmVz
ZXQsCiAgQ0ZTdHJpbmdSZWYgKiBuYW1lKSA7CiMgMjE5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNUHJlc2V0Q3Jl
YXRlUHJpbnRTZXR0aW5ncygKICBQTVByZXNldCBwcmVzZXQsCiAgUE1QcmludFNlc3Npb24gc2Vz
c2lvbiwKICBQTVByaW50U2V0dGluZ3MgKiBwcmludFNldHRpbmdzKSA7CiMgMjIzMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzClBNUHJlc2V0R2V0QXR0cmlidXRlcygKICBQTVByZXNldCBwcmVzZXQsCiAgQ0ZEaWN0aW9u
YXJ5UmVmICogYXR0cmlidXRlcykgOwoKCiAgICAgICAKICAgICAgIAogICAgICAgCiMgMjI2MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzClBNR2V0UGFnZUZvcm1hdFBhcGVyKAogIFBNUGFnZUZvcm1hdCBmb3JtYXQsCiAg
UE1QYXBlciAqIHBhcGVyKSA7CiMgMjMwOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNUGFwZXJDcmVhdGVDdXN0b20o
CiAgUE1QcmludGVyIHByaW50ZXIsCiAgQ0ZTdHJpbmdSZWYgaWQsCiAgQ0ZTdHJpbmdSZWYgbmFt
ZSwKICBkb3VibGUgd2lkdGgsCiAgZG91YmxlIGhlaWdodCwKICBjb25zdCBQTVBhcGVyTWFyZ2lu
cyAqIG1hcmdpbnMsCiAgUE1QYXBlciAqIHBhcGVyUCkgOwojIDIzMzkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJp
bnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVBh
cGVyR2V0V2lkdGgoCiAgUE1QYXBlciBwYXBlciwKICBkb3VibGUgKiBwYXBlcldpZHRoKSA7CiMg
MjM2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMK
ZXh0ZXJuIE9TU3RhdHVzClBNUGFwZXJHZXRIZWlnaHQoCiAgUE1QYXBlciBwYXBlciwKICBkb3Vi
bGUgKiBwYXBlckhlaWdodCkgOwojIDIzODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29y
ay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVBhcGVyR2V0TWFyZ2lucygK
ICBQTVBhcGVyIHBhcGVyLAogIFBNUGFwZXJNYXJnaW5zICogcGFwZXJNYXJnaW5zKSA7CiMgMjQx
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzClBNUGFwZXJHZXRJRCgKICBQTVBhcGVyIHBhcGVyLAogIENGU3RyaW5nUmVm
ICogcGFwZXJJRCkgOwojIDI0NDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVBhcGVyR2V0TmFtZSgKICBQTVBhcGVy
IHBhcGVyLAogIENGU3RyaW5nUmVmICogcGFwZXJOYW1lKSA7CiMgMjQ3MiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Q
cmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBN
UGFwZXJHZXRQUERQYXBlck5hbWUoCiAgUE1QYXBlciBwYXBlciwKICBDRlN0cmluZ1JlZiAqIHBh
cGVyTmFtZSkgOwojIDI1MDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJz
L1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVBhcGVyQ3JlYXRlTG9jYWxpemVkTmFtZSgK
ICBQTVBhcGVyIHBhcGVyLAogIFBNUHJpbnRlciBwcmludGVyLAogIENGU3RyaW5nUmVmICogcGFw
ZXJOYW1lKSA7CiMgMjUzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
UE1Db3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNUGFwZXJHZXRQcmludGVySUQoCiAgUE1QYXBl
ciBwYXBlciwKICBDRlN0cmluZ1JlZiAqIHByaW50ZXJJRCkgOwojIDI1NTMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
UHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBCb29sZWFuClBN
UGFwZXJJc0N1c3RvbSgKICBQTVBhcGVyIHBhcGVyICkgOwoKICAgICAgIAogICAgICAgCiAgICAg
ICAKIyAyNTkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUu
aCIgMwpleHRlcm4gT1NTdGF0dXMKUE1Xb3JrZmxvd0NvcHlJdGVtcyhDRkFycmF5UmVmICogd29y
a2Zsb3dJdGVtcykgOwojIDI2MzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVdvcmtmbG93U3VibWl0UERGV2l0aE9w
dGlvbnMoCiAgQ0ZVUkxSZWYgd29ya2Zsb3dJdGVtLAogIENGU3RyaW5nUmVmIHRpdGxlLAogIGNv
bnN0IGNoYXIgKiBvcHRpb25zLAogIENGVVJMUmVmIHBkZkZpbGUpIDsKIyAyNjgzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0
dXMKUE1Xb3JrZmxvd1N1Ym1pdFBERldpdGhTZXR0aW5ncygKICBDRlVSTFJlZiB3b3JrZmxvd0l0
ZW0sCiAgUE1QcmludFNldHRpbmdzIHNldHRpbmdzLAogIENGVVJMUmVmIHBkZkZpbGUpIDsKCgog
ICAgICAgCiAgICAgICAKICAgICAgIAojIDI3MjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1l
d29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVByaW50ZXJQcmludFdp
dGhQcm92aWRlcigKICBQTVByaW50ZXIgcHJpbnRlciwKICBQTVByaW50U2V0dGluZ3Mgc2V0dGlu
Z3MsCiAgUE1QYWdlRm9ybWF0IGZvcm1hdCwKICBDRlN0cmluZ1JlZiBtaW1lVHlwZSwKICBDR0Rh
dGFQcm92aWRlclJlZiBwcm92aWRlcikgOwojIDI3NzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZy
YW1ld29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTVByaW50ZXJQcmlu
dFdpdGhGaWxlKAogIFBNUHJpbnRlciBwcmludGVyLAogIFBNUHJpbnRTZXR0aW5ncyBzZXR0aW5n
cywKICBQTVBhZ2VGb3JtYXQgZm9ybWF0LAogIENGU3RyaW5nUmVmIG1pbWVUeXBlLAogIENGVVJM
UmVmIGZpbGVVUkwpIDsKIyAyODI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1QcmludGVyV3JpdGVQb3N0U2NyaXB0
VG9VUkwoCiAgIFBNUHJpbnRlciBwcmludGVyLAogICBQTVByaW50U2V0dGluZ3Mgc2V0dGluZ3Ms
CiAgIFBNUGFnZUZvcm1hdCBmb3JtYXQsCiAgIENGU3RyaW5nUmVmIG1pbWVUeXBlLAogICBDRlVS
TFJlZiBzb3VyY2VGaWxlVVJMLAogICBDRlVSTFJlZiBkZXN0aW5hdGlvbkZpbGVVUkwpIDsKIyAy
ODYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpl
eHRlcm4gT1NTdGF0dXMKUE1QcmludFNldHRpbmdzVG9PcHRpb25zKAogIFBNUHJpbnRTZXR0aW5n
cyBzZXR0aW5ncywKICBjaGFyICoqIG9wdGlvbnMpIDsKIyAyODk3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1Qcmlu
dFNldHRpbmdzVG9PcHRpb25zV2l0aFByaW50ZXJBbmRQYWdlRm9ybWF0KAogIFBNUHJpbnRTZXR0
aW5ncyBzZXR0aW5ncywKICBQTVByaW50ZXIgcHJpbnRlciwKICBQTVBhZ2VGb3JtYXQgcGFnZUZv
cm1hdCwKICBjaGFyICoqIG9wdGlvbnMpIDsKCiAgICAgICAKICAgICAgIAogICAgICAgCiMgMjkz
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzClBNUHJpbnRlclNlbmRDb21tYW5kKAogIFBNUHJpbnRlciBwcmludGVyLAog
IENGU3RyaW5nUmVmIGNvbW1hbmRTdHJpbmcsCiAgQ0ZTdHJpbmdSZWYgam9iVGl0bGUsCiAgQ0ZE
aWN0aW9uYXJ5UmVmIG9wdGlvbnMpIDsKIyAzMDA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1QcmludGVyQ29weVN0
YXRlKAogIFBNUHJpbnRlciBwcmludGVyLAogIENGRGljdGlvbmFyeVJlZiAqc3RhdGVEaWN0KSA7
CgoKICAgICAgIAogICAgICAgCiAgICAgICAKIyAzMDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5m
cmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1Db3B5QXZhaWxh
YmxlUFBEcygKICBQTVBQRERvbWFpbiBkb21haW4sCiAgQ0ZBcnJheVJlZiAqIHBwZHMpIDsKIyAz
MDY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmUuaCIgMwpl
eHRlcm4gT1NTdGF0dXMKUE1Db3B5TG9jYWxpemVkUFBEKAogIENGVVJMUmVmIHBwZCwKICBDRlVS
TFJlZiAqIGxvY2FsaXplZFBQRCkgOwojIDMwOTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1l
d29yay9IZWFkZXJzL1BNQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTUNvcHlQUEREYXRhKAog
IENGVVJMUmVmIHBwZCwKICBDRkRhdGFSZWYgKiBkYXRhKSA7CgoKICAgICAgIAogICAgICAgCiAg
ICAgICAKIyAzMTYzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNv
cmUuaCIgMwpleHRlcm4gQ0dJbWFnZVJlZgpQTUNHSW1hZ2VDcmVhdGVXaXRoRVBTRGF0YVByb3Zp
ZGVyKAogIENHRGF0YVByb3ZpZGVyUmVmIGVwc0RhdGFQcm92aWRlciwKICBDR0ltYWdlUmVmIGVw
c1ByZXZpZXcpIDsKCgoKfQojIDM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9QcmludENvcmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvUE1EZWZpbml0aW9uc0RlcHJlY2F0ZWQuaCIgMSAzCiMgMzkgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1ByaW50Q29yZS5oIiAyIDMKCgoKIyAxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmVEZXByZWNhdGVkLmgi
IDEgMwojIDE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmVE
ZXByZWNhdGVkLmgiIDMKI2RlZmluZSBfX1BNQ09SRV9ERVBSRUNBVEVEX18gCiMgMjUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZURlcHJlY2F0ZWQuaCIgMwoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29sb3JTeW5jLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yU3luY0RlcHJl
Y2F0ZWQuaCIgMSAzCiMgMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJz
L1BNQ29yZURlcHJlY2F0ZWQuaCIgMiAzCiMgNDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1l
d29yay9IZWFkZXJzL1BNQ29yZURlcHJlY2F0ZWQuaCIgMwpleHRlcm4gIkMiIHsKIyA1OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlRGVwcmVjYXRlZC5oIiAz
CmV4dGVybiBPU1N0YXR1cwpQTUZsYXR0ZW5QYWdlRm9ybWF0VG9DRkRhdGEoCiAgUE1QYWdlRm9y
bWF0IHBhZ2VGb3JtYXQsCiAgQ0ZEYXRhUmVmICogZmxhdEZvcm1hdCkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDc5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9QTUNvcmVEZXByZWNhdGVkLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBNRmxhdHRlblBhZ2VGb3Jt
YXRUb1VSTCgKICBQTVBhZ2VGb3JtYXQgcGFnZUZvcm1hdCwKICBDRlVSTFJlZiBmbGF0dGVuRmls
ZVVSTCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDEwOSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Qcmlu
dENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1Db3JlRGVwcmVjYXRlZC5oIiAzCmV4dGVybiBPU1N0
YXR1cwpQTVVuZmxhdHRlblBhZ2VGb3JtYXRXaXRoQ0ZEYXRhKAogIENGRGF0YVJlZiBmbGF0dGVu
Q0ZEYXRhLAogIFBNUGFnZUZvcm1hdCAqIHBhZ2VGb3JtYXQpIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKIyAxNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BN
Q29yZURlcHJlY2F0ZWQuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1VbmZsYXR0ZW5QYWdlRm9ybWF0
V2l0aFVSTCgKICBDRlVSTFJlZiBmbGF0dGVuRmlsZVVSTCwKICBQTVBhZ2VGb3JtYXQgKiBwYWdl
Rm9ybWF0KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTU5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1By
aW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUNvcmVEZXByZWNhdGVkLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzClBNRmxhdHRlblByaW50U2V0dGluZ3NUb0NGRGF0YSgKICBQTVByaW50U2V0dGluZ3Mg
cHJpbnRTZXR0aW5ncywKICBDRkRhdGFSZWYgKiBmbGF0U2V0dGluZykgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDE3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvUE1Db3JlRGVwcmVjYXRlZC5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTUZsYXR0ZW5QcmludFNl
dHRpbmdzVG9VUkwoCiAgUE1QcmludFNldHRpbmdzIHByaW50U2V0dGluZ3MsCiAgQ0ZVUkxSZWYg
ZmxhdHRlbkZpbGVVUkwpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyMTAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNQ29yZURlcHJlY2F0ZWQuaCIgMwpl
eHRlcm4gT1NTdGF0dXMKUE1VbmZsYXR0ZW5QcmludFNldHRpbmdzV2l0aENGRGF0YSgKICBDRkRh
dGFSZWYgZmxhdHRlbkNGRGF0YSwKICBQTVByaW50U2V0dGluZ3MgKiBwcmludFNldHRpbmdzKSBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5m
cmFtZXdvcmsvSGVhZGVycy9QTUNvcmVEZXByZWNhdGVkLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClBN
VW5mbGF0dGVuUHJpbnRTZXR0aW5nc1dpdGhVUkwoCiAgQ0ZVUkxSZWYgZmxhdHRlbkZpbGVVUkws
CiAgUE1QcmludFNldHRpbmdzICogcHJpbnRTZXR0aW5ncykgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwojIDI1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1D
b3JlRGVwcmVjYXRlZC5oIiAzCmV4dGVybiBPU1N0YXR1cwpQTUdldFByaW50U2V0dGluZ3NFeHRl
bmRlZERhdGEoCiAgUE1QcmludFNldHRpbmdzIHByaW50U2V0dGluZ3MsCiAgT1NUeXBlIGRhdGFJ
RCwKICBVSW50MzIgKiBzaXplLAogIHZvaWQgKiBleHRlbmRlZERhdGEpIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKIyAyNzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL1BNQ29yZURlcHJlY2F0ZWQuaCIgMwpleHRlcm4gT1NTdGF0dXMKUE1TZXRQcmludFNldHRp
bmdzRXh0ZW5kZWREYXRhKAogIFBNUHJpbnRTZXR0aW5ncyBwcmludFNldHRpbmdzLAogIE9TVHlw
ZSBkYXRhSUQsCiAgVUludDMyIHNpemUsCiAgdm9pZCAqIGV4dGVuZGVkRGF0YSkgX19hdHRyaWJ1
dGVfXygoZGVwcmVjYXRlZCkpOwojIDE2NjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29y
ay9IZWFkZXJzL1BNQ29yZURlcHJlY2F0ZWQuaCIgMwp9CiMgNDMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRD
b3JlLmZyYW1ld29yay9IZWFkZXJzL1ByaW50Q29yZS5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTVByaW50QUVUeXBlcy5oIiAxIDMKIyAxOCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUE1QcmludEFFVHlwZXMuaCIg
MwojZGVmaW5lIF9fUE1QcmludEFFVHlwZXNfXyAKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvUE1QcmludEFFVHlwZXMuaCIgMwpleHRlcm4gIkMiIHsKCgojZGVm
aW5lIGtQTVByaW50U2V0dGluZ3NBRVR5cGUgJ3BzZXQnCiNkZWZpbmUga1BNU2hvd1ByaW50RGlh
bG9nQUVUeXBlICdwZGxnJwojZGVmaW5lIGtQTVByaW50ZXJBRVR5cGUgJ3RycHInCgojZGVmaW5l
IGtQTUNvcGllc0FFUHJvcCAiY29waWVzIgojZGVmaW5lIGtQTUNvcGllc0FFS2V5ICdsd2NwJwoj
ZGVmaW5lIGtQTUNvcGllQUVUeXBlIHR5cGVTSW50MzIKCiNkZWZpbmUga1BNQ29sbGF0ZUFFUHJv
cCAiY29sbGF0aW5nIgojZGVmaW5lIGtQTUNvbGxhdGVBRUtleSAnbHdjbCcKI2RlZmluZSBrUE1D
b2xsYXRlQUVUeXBlIHR5cGVCb29sZWFuCgojZGVmaW5lIGtQTUZpcnN0UGFnZUFFUHJvcCAic3Rh
cnRpbmcgcGFnZSIKI2RlZmluZSBrUE1GaXJzdFBhZ2VBRUtleSAnbHdmcCcKI2RlZmluZSBrUE1G
aXJzdFBhZ2VBRVR5cGUgdHlwZVNJbnQzMgoKI2RlZmluZSBrUE1MYXN0UGFnZUFFUHJvcCAiZW5k
aW5nIHBhZ2UiCiNkZWZpbmUga1BNTGFzdFBhZ2VBRUtleSAnbHdscCcKI2RlZmluZSBrUE1MYXN0
UGFnZUFFVHlwZSB0eXBlU0ludDMyCgojZGVmaW5lIGtQTUxheW91dEFjcm9zc0FFUHJvcCAicGFn
ZXMgYWNyb3NzIgojZGVmaW5lIGtQTUxheW91dEFjcm9zc0FFS2V5ICdsd2xhJwojZGVmaW5lIGtQ
TUxheW91dEFjcm9zc0FFVHlwZSB0eXBlU0ludDMyCgojZGVmaW5lIGtQTUxheW91dERvd25BRVBy
b3AgInBhZ2VzIGRvd24iCiNkZWZpbmUga1BNTGF5b3V0RG93bkFFS2V5ICdsd2xkJwojZGVmaW5l
IGtQTUxheW91dERvd25BRVR5cGUgdHlwZVNJbnQzMgoKI2RlZmluZSBrUE1FcnJvckhhbmRsaW5n
QUVQcm9wICJlcnJvciBoYW5kbGluZyIKI2RlZmluZSBrUE1FcnJvckhhbmRsaW5nQUVLZXkgJ2x3
ZWgnCiNkZWZpbmUga1BNRXJyb3JIYW5kbGluZ0FFVHlwZSB0eXBlRW51bWVyYXRlZAoKI2RlZmlu
ZSBrUE1QcmludFRpbWVBRVByb3AgInJlcXVlc3RlZCBwcmludCB0aW1lIgojZGVmaW5lIGtQTVBy
aW50VGltZUFFS2V5ICdsd3F0JwojZGVmaW5lIGtQTVByaW50VGltZUFFVHlwZSBjTG9uZ0RhdGVU
aW1lCgojZGVmaW5lIGtQTUZlYXR1cmVBRVByb3AgInByaW50ZXIgZmVhdHVyZXMiCiNkZWZpbmUg
a1BNRmVhdHVyZUFFS2V5ICdsd3BmJwojZGVmaW5lIGtQTUZlYXR1cmVBRVR5cGUgdHlwZUFFTGlz
dAoKI2RlZmluZSBrUE1GYXhOdW1iZXJBRVByb3AgImZheCBudW1iZXIiCiNkZWZpbmUga1BNRmF4
TnVtYmVyQUVLZXkgJ2ZheG4nCiNkZWZpbmUga1BNRmF4TnVtYmVyQUVUeXBlIHR5cGVDaGFyCgoj
ZGVmaW5lIGtQTVRhcmdldFByaW50ZXJBRVByb3AgInRhcmdldCBwcmludGVyIgojZGVmaW5lIGtQ
TVRhcmdldFByaW50ZXJBRUtleSAndHJwcicKI2RlZmluZSBrUE1UYXJnZXRQcmludGVyQUVUeXBl
IHR5cGVDaGFyCgoKCgojZGVmaW5lIGtQTUVycm9ySGFuZGxpbmdTdGFuZGFyZEVudW0gJ2x3c3Qn
CiNkZWZpbmUga1BNRXJyb3JIYW5kbGluZ0RldGFpbGVkRW51bSAnbHdkdCcKCgp9CiMgNDcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1ByaW50Q29yZS5oIiAyIDMKCgoK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTVByaW50U2V0dGlu
Z3NLZXlzLmgiIDEgMwojIDE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9QTVByaW50U2V0dGluZ3NLZXlzLmgiIDMKI2RlZmluZSBfX1BNUFJJTlRTRVRUSU5HU0tFWVNf
XyAKCgpleHRlcm4gIkMiIHsKCgojZGVmaW5lIGtQTUNvcGllc1N0ciAiY29tLmFwcGxlLnByaW50
LlByaW50U2V0dGluZ3MuUE1Db3BpZXMiCiNkZWZpbmUga1BNQ29waWVzS2V5IENGU1RSKCBrUE1D
b3BpZXNTdHIgKQoKI2RlZmluZSBrUE1Db3B5Q29sbGF0ZVN0ciAiY29tLmFwcGxlLnByaW50LlBy
aW50U2V0dGluZ3MuUE1Db3B5Q29sbGF0ZSIKI2RlZmluZSBrUE1Db3B5Q29sbGF0ZUtleSBDRlNU
Uigga1BNQ29weUNvbGxhdGVTdHIgKQoKI2RlZmluZSBrUE1PdXRwdXRPcmRlclN0ciAiT3V0cHV0
T3JkZXIiCiNkZWZpbmUga1BNT3V0cHV0T3JkZXJLZXkgQ0ZTVFIoa1BNT3V0cHV0T3JkZXJTdHIp
CgojZGVmaW5lIGtQTVBhZ2VTZXRTdHIgInBhZ2Utc2V0IgojZGVmaW5lIGtQTVBhZ2VTZXRLZXkg
Q0ZTVFIoa1BNUGFnZVNldFN0cikKCiNkZWZpbmUga1BNTWlycm9yU3RyICJtaXJyb3IiCiNkZWZp
bmUga1BNTWlycm9yS2V5IENGU1RSKGtQTU1pcnJvclN0cikKCgojZGVmaW5lIGtQTVByaW50U2Vs
ZWN0aW9uT25seVN0ciAiY29tLmFwcGxlLnByaW50LlByaW50U2V0dGluZ3MuUE1QcmludFNlbGVj
dGlvbk9ubHkiCiNkZWZpbmUga1BNUHJpbnRTZWxlY3Rpb25Pbmx5S2V5IENGU1RSKCBrUE1Qcmlu
dFNlbGVjdGlvbk9ubHlTdHIgKQoKI2RlZmluZSBrUE1Cb3JkZXJTdHIgImNvbS5hcHBsZS5wcmlu
dC5QcmludFNldHRpbmdzLlBNQm9yZGVyIgojZGVmaW5lIGtQTUJvcmRlcktleSBDRlNUUigga1BN
Qm9yZGVyU3RyICkKCiNkZWZpbmUga1BNQm9yZGVyVHlwZVN0ciAiY29tLmFwcGxlLnByaW50LlBy
aW50U2V0dGluZ3MuUE1Cb3JkZXJUeXBlIgojZGVmaW5lIGtQTUJvcmRlclR5cGVLZXkgQ0ZTVFIo
IGtQTUJvcmRlclR5cGVTdHIgKQoKI2RlZmluZSBrUE1MYXlvdXROVXBTdHIgImNvbS5hcHBsZS5w
cmludC5QcmludFNldHRpbmdzLlBNTGF5b3V0TlVwIgojZGVmaW5lIGtQTUxheW91dE5VcEtleSBD
RlNUUigga1BNTGF5b3V0TlVwU3RyICkKCiNkZWZpbmUga1BNTGF5b3V0Um93c1N0ciAiY29tLmFw
cGxlLnByaW50LlByaW50U2V0dGluZ3MuUE1MYXlvdXRSb3dzIgojZGVmaW5lIGtQTUxheW91dFJv
d3NLZXkgQ0ZTVFIoIGtQTUxheW91dFJvd3NTdHIgKQoKI2RlZmluZSBrUE1MYXlvdXRDb2x1bW5z
U3RyICJjb20uYXBwbGUucHJpbnQuUHJpbnRTZXR0aW5ncy5QTUxheW91dENvbHVtbnMiCiNkZWZp
bmUga1BNTGF5b3V0Q29sdW1uc0tleSBDRlNUUigga1BNTGF5b3V0Q29sdW1uc1N0ciApCgojZGVm
aW5lIGtQTUxheW91dERpcmVjdGlvblN0ciAiY29tLmFwcGxlLnByaW50LlByaW50U2V0dGluZ3Mu
UE1MYXlvdXREaXJlY3Rpb24iCiNkZWZpbmUga1BNTGF5b3V0RGlyZWN0aW9uS2V5IENGU1RSKCBr
UE1MYXlvdXREaXJlY3Rpb25TdHIgKQoKI2RlZmluZSBrUE1MYXlvdXRUaWxlT3JpZW50YXRpb25T
dHIgImNvbS5hcHBsZS5wcmludC5QcmludFNldHRpbmdzLlBNTGF5b3V0VGlsZU9yaWVudGF0aW9u
IgojZGVmaW5lIGtQTUxheW91dFRpbGVPcmllbnRhdGlvbktleSBDRlNUUigga1BNTGF5b3V0VGls
ZU9yaWVudGF0aW9uU3RyICkKCiNkZWZpbmUga1BNSm9iU3RhdGVTdHIgImNvbS5hcHBsZS5wcmlu
dC5QcmludFNldHRpbmdzLlBNSm9iU3RhdGUiCiNkZWZpbmUga1BNSm9iU3RhdGVLZXkgQ0ZTVFIo
IGtQTUpvYlN0YXRlU3RyICkKCiNkZWZpbmUga1BNSm9iSG9sZFVudGlsVGltZVN0ciAiY29tLmFw
cGxlLnByaW50LlByaW50U2V0dGluZ3MuUE1Kb2JIb2xkVW50aWxUaW1lIgojZGVmaW5lIGtQTUpv
YkhvbGRVbnRpbFRpbWVLZXkgQ0ZTVFIoIGtQTUpvYkhvbGRVbnRpbFRpbWVTdHIgKQoKI2RlZmlu
ZSBrUE1Kb2JQcmlvcml0eVN0ciAiY29tLmFwcGxlLnByaW50LlByaW50U2V0dGluZ3MuUE1Kb2JQ
cmlvcml0eSIKI2RlZmluZSBrUE1Kb2JQcmlvcml0eUtleSBDRlNUUigga1BNSm9iUHJpb3JpdHlT
dHIgKQoKI2RlZmluZSBrUE1EdXBsZXhpbmdTdHIgImNvbS5hcHBsZS5wcmludC5QcmludFNldHRp
bmdzLlBNRHVwbGV4aW5nIgojZGVmaW5lIGtQTUR1cGxleGluZ0tleSBDRlNUUigga1BNRHVwbGV4
aW5nU3RyICkKCiNkZWZpbmUga1BNQ29sb3JTeW5jUHJvZmlsZUlEU3RyICJjb20uYXBwbGUucHJp
bnQuUHJpbnRTZXR0aW5ncy5QTUNvbG9yU3luY1Byb2ZpbGVJRCIKI2RlZmluZSBrUE1Db2xvclN5
bmNQcm9maWxlSURLZXkgQ0ZTVFIoIGtQTUNvbG9yU3luY1Byb2ZpbGVJRFN0ciApCgojZGVmaW5l
IGtQTVByaW1hcnlQYXBlckZlZWRTdHIgImNvbS5hcHBsZS5wcmludC5QcmludFNldHRpbmdzLlBN
UHJpbWFyeVBhcGVyRmVlZCIKI2RlZmluZSBrUE1QcmltYXJ5UGFwZXJGZWVkS2V5IENGU1RSKCBr
UE1QcmltYXJ5UGFwZXJGZWVkU3RyICkKCiNkZWZpbmUga1BNU2Vjb25kYXJ5UGFwZXJGZWVkU3Ry
ICJjb20uYXBwbGUucHJpbnQuUHJpbnRTZXR0aW5ncy5QTVNlY29uZGFyeVBhcGVyRmVlZCIKI2Rl
ZmluZSBrUE1TZWNvbmRhcnlQYXBlckZlZWRLZXkgQ0ZTVFIoIGtQTVNlY29uZGFyeVBhcGVyRmVl
ZFN0ciApCgojZGVmaW5lIGtQTVBTRXJyb3JIYW5kbGVyU3RyICJjb20uYXBwbGUucHJpbnQuUHJp
bnRTZXR0aW5ncy5QTVBTRXJyb3JIYW5kbGVyIgojZGVmaW5lIGtQTVBTRXJyb3JIYW5kbGVyS2V5
IENGU1RSKCBrUE1QU0Vycm9ySGFuZGxlclN0ciApCgojZGVmaW5lIGtQTVBTVHJheVN3aXRjaFN0
ciAiY29tLmFwcGxlLnByaW50LlByaW50U2V0dGluZ3MuUE1QU1RyYXlTd2l0Y2giCiNkZWZpbmUg
a1BNUFNUcmF5U3dpdGNoS2V5IENGU1RSKCBrUE1QU1RyYXlTd2l0Y2hTdHIgKQoKI2RlZmluZSBr
UE1Ub3RhbEJlZ2luUGFnZXNTdHIgImNvbS5hcHBsZS5wcmludC5QcmludFNldHRpbmdzLlBNVG90
YWxCZWdpblBhZ2VzIgojZGVmaW5lIGtQTVRvdGFsQmVnaW5QYWdlc0tleSBDRlNUUigga1BNVG90
YWxCZWdpblBhZ2VzU3RyICkKCiNkZWZpbmUga1BNVG90YWxTaWRlc0ltYWdlZFN0ciAiY29tLmFw
cGxlLnByaW50LlByaW50U2V0dGluZ3MuUE1Ub3RhbFNpZGVzSW1hZ2VkIgojZGVmaW5lIGtQTVRv
dGFsU2lkZXNJbWFnZWRLZXkgQ0ZTVFIoIGtQTVRvdGFsU2lkZXNJbWFnZWRTdHIgKQoKCgoKI2Rl
ZmluZSBrUE1GYXhOdW1iZXJTdHIgInBob25lIgojZGVmaW5lIGtQTUZheE51bWJlcktleSBDRlNU
Uigga1BNRmF4TnVtYmVyU3RyICkKCiNkZWZpbmUga1BNRmF4VG9TdHIgImZheFRvIgojZGVmaW5l
IGtQTUZheFRvS2V5IENGU1RSKCBrUE1GYXhUb1N0ciApCgojZGVmaW5lIGtQTUZheFByZWZpeFN0
ciAiZmF4UHJlZml4IgojZGVmaW5lIGtQTUZheFByZWZpeEtleSBDRlNUUigga1BNRmF4UHJlZml4
U3RyICkKCiNkZWZpbmUga1BNRmF4U3ViamVjdFN0ciAiZmF4U3ViamVjdCIKI2RlZmluZSBrUE1G
YXhTdWJqZWN0S2V5IENGU1RSKCBrUE1GYXhTdWJqZWN0U3RyICkKCiNkZWZpbmUga1BNRmF4Q292
ZXJTaGVldFN0ciAiZmF4Q292ZXJTaGVldCIKI2RlZmluZSBrUE1GYXhDb3ZlclNoZWV0S2V5IENG
U1RSKCBrUE1GYXhDb3ZlclNoZWV0U3RyICkKCiNkZWZpbmUga1BNRmF4Q292ZXJTaGVldE1lc3Nh
Z2VTdHIgImZheENvdmVyU2hlZXRNZXNzYWdlIgojZGVmaW5lIGtQTUZheENvdmVyU2hlZXRNZXNz
YWdlS2V5IENGU1RSKCBrUE1GYXhDb3ZlclNoZWV0TWVzc2FnZVN0ciApCgojZGVmaW5lIGtQTUZh
eFRvbmVEaWFsaW5nU3RyICJmYXhUb25lRGlhbGluZyIKI2RlZmluZSBrUE1GYXhUb25lRGlhbGlu
Z0tleSBDRlNUUigga1BNRmF4VG9uZURpYWxpbmdTdHIgKQoKI2RlZmluZSBrUE1GYXhVc2VTb3Vu
ZFN0ciAiZmF4VXNlU291bmQiCiNkZWZpbmUga1BNRmF4VXNlU291bmRLZXkgQ0ZTVFIoIGtQTUZh
eFVzZVNvdW5kU3RyICkKCiNkZWZpbmUga1BNRmF4V2FpdEZvckRpYWxUb25lU3RyICJmYXhXYWl0
Rm9yRGlhbFRvbmUiCiNkZWZpbmUga1BNRmF4V2FpdEZvckRpYWxUb25lS2V5IENGU1RSKCBrUE1G
YXhXYWl0Rm9yRGlhbFRvbmVTdHIgKQoKI2RlZmluZSBrUE1GYXhUb0xhYmVsU3RyICJmYXhUb0xh
YmVsIgojZGVmaW5lIGtQTUZheFRvTGFiZWxLZXkgQ0ZTVFIoIGtQTUZheFRvTGFiZWxTdHIgKQoK
I2RlZmluZSBrUE1GYXhGcm9tTGFiZWxTdHIgImZheEZyb21MYWJlbCIKI2RlZmluZSBrUE1GYXhG
cm9tTGFiZWxLZXkgQ0ZTVFIoIGtQTUZheEZyb21MYWJlbFN0ciApCgojZGVmaW5lIGtQTUZheERh
dGVMYWJlbFN0ciAiZmF4RGF0ZUxhYmVsIgojZGVmaW5lIGtQTUZheERhdGVMYWJlbEtleSBDRlNU
Uigga1BNRmF4RGF0ZUxhYmVsU3RyICkKCiNkZWZpbmUga1BNRmF4U3ViamVjdExhYmVsU3RyICJm
YXhTdWJqZWN0TGFiZWwiCiNkZWZpbmUga1BNRmF4U3ViamVjdExhYmVsS2V5IENGU1RSKCBrUE1G
YXhTdWJqZWN0TGFiZWxTdHIgKQoKI2RlZmluZSBrUE1GYXhTaGVldHNMYWJlbFN0ciAiZmF4U2hl
ZXRzTGFiZWwiCiNkZWZpbmUga1BNRmF4U2hlZXRzTGFiZWxLZXkgQ0ZTVFIoIGtQTUZheFNoZWV0
c0xhYmVsU3RyICkKCgoKI2RlZmluZSBrUE1Db3ZlclBhZ2VTdHIgImNvbS5hcHBsZS5wcmludC5Q
cmludFNldHRpbmdzLlBNQ292ZXJQYWdlIgojZGVmaW5lIGtQTUNvdmVyUGFnZUtleSBDRlNUUigg
a1BNQ292ZXJQYWdlU3RyICkKCgoKZW51bSB7CiBrUE1Db3ZlclBhZ2VOb25lID0gMSwKCiAgICAg
a1BNQ292ZXJQYWdlQmVmb3JlID0gMiwKCiBrUE1Db3ZlclBhZ2VBZnRlciA9IDMKfTsKCgojZGVm
aW5lIGtQTUNvdmVyUGFnZURlZmF1bHQgKGtQTUNvdmVyUGFnZU5vbmUpCgoKI2RlZmluZSBrUE1D
b3ZlclBhZ2VTb3VyY2VTdHIgImNvbS5hcHBsZS5wcmludC5QcmludFNldHRpbmdzLlBNQ292ZXJQ
YWdlU291cmNlIgojZGVmaW5lIGtQTUNvdmVyUGFnZVNvdXJjZUtleSBDRlNUUigga1BNQ292ZXJQ
YWdlU291cmNlU3RyICkKCgojZGVmaW5lIGtQTURlc3RpbmF0aW9uUHJpbnRlcklEU3RyICJEZXN0
aW5hdGlvblByaW50ZXJJRCIKI2RlZmluZSBrUE1EZXN0aW5hdGlvblByaW50ZXJJREtleSBDRlNU
Uigga1BNRGVzdGluYXRpb25QcmludGVySURTdHIgKQoKI2RlZmluZSBrUE1JbmxpbmVXb3JrZmxv
d1N0ciAiaW5saW5lV29ya2Zsb3ciCiNkZWZpbmUga1BNSW5saW5lV29ya2Zsb3dLZXkgQ0ZTVFIo
IGtQTUlubGluZVdvcmtmbG93U3RyICkKCiNkZWZpbmUga1BNUGFnZVRvUGFwZXJNYXBwaW5nVHlw
ZVN0ciAiY29tLmFwcGxlLnByaW50LlBhZ2VUb1BhcGVyTWFwcGluZ1R5cGUiCiNkZWZpbmUga1BN
UGFnZVRvUGFwZXJNYXBwaW5nVHlwZUtleSBDRlNUUihrUE1QYWdlVG9QYXBlck1hcHBpbmdUeXBl
U3RyKQoKI2RlZmluZSBrUE1QYWdlVG9QYXBlck1lZGlhTmFtZVN0ciAiY29tLmFwcGxlLnByaW50
LlBhZ2VUb1BhcGVyTWFwcGluZ01lZGlhTmFtZSIKI2RlZmluZSBrUE1QYWdlVG9QYXBlck1lZGlh
TmFtZUtleSBDRlNUUihrUE1QYWdlVG9QYXBlck1lZGlhTmFtZVN0cikKCiNkZWZpbmUga1BNUGFn
ZVRvUGFwZXJNYXBwaW5nQWxsb3dTY2FsaW5nVXBTdHIgImNvbS5hcHBsZS5wcmludC5QYWdlVG9Q
YXBlck1hcHBpbmdBbGxvd1NjYWxpbmdVcCIKI2RlZmluZSBrUE1QYWdlVG9QYXBlck1hcHBpbmdB
bGxvd1NjYWxpbmdVcEtleSBDRlNUUihrUE1QYWdlVG9QYXBlck1hcHBpbmdBbGxvd1NjYWxpbmdV
cFN0cikKCgoKCgoKCiNkZWZpbmUga1BNQ3VzdG9tUHJvZmlsZVBhdGhTdHIgIlBNQ3VzdG9tUHJv
ZmlsZVBhdGgiCiNkZWZpbmUga1BNQ3VzdG9tUHJvZmlsZVBhdGhLZXkgQ0ZTVFIoIGtQTUN1c3Rv
bVByb2ZpbGVQYXRoU3RyICkKCgp0eXBlZGVmIGVudW17CiAgICBrUE1QYWdlVG9QYXBlck1hcHBp
bmdOb25lID0gMSwKICAgIGtQTVBhZ2VUb1BhcGVyTWFwcGluZ1NjYWxlVG9GaXQsCn1QTVBhZ2VU
b1BhcGVyTWFwcGluZ1R5cGU7CgoKCgojZGVmaW5lIGtQTVZlbmRvckNvbG9yTWF0Y2hpbmdTdHIg
IkFQX1ZlbmRvckNvbG9yTWF0Y2hpbmciCiNkZWZpbmUga1BNVmVuZG9yQ29sb3JNYXRjaGluZyBD
RlNUUigga1BNVmVuZG9yQ29sb3JNYXRjaGluZ1N0ciApCiNkZWZpbmUga1BNQXBwbGljYXRpb25D
b2xvck1hdGNoaW5nU3RyICJBUF9BcHBsaWNhdGlvbkNvbG9yTWF0Y2hpbmciCiNkZWZpbmUga1BN
QXBwbGljYXRpb25Db2xvck1hdGNoaW5nIENGU1RSKCBrUE1BcHBsaWNhdGlvbkNvbG9yTWF0Y2hp
bmdTdHIgKQoKI2RlZmluZSBrUE1Db2xvck1hdGNoaW5nTW9kZVN0ciAiQVBfQ29sb3JNYXRjaGlu
Z01vZGUiCiNkZWZpbmUga1BNQ29sb3JNYXRjaGluZ01vZGVLZXkgQ0ZTVFIoIGtQTUNvbG9yTWF0
Y2hpbmdNb2RlU3RyICkKCgoKCiNkZWZpbmUga1BNRGVzdGluYXRpb25UeXBlU3RyICJjb20uYXBw
bGUucHJpbnQuUHJpbnRTZXR0aW5ncy5QTURlc3RpbmF0aW9uVHlwZSIKI2RlZmluZSBrUE1EZXN0
aW5hdGlvblR5cGVLZXkgQ0ZTVFIoIGtQTURlc3RpbmF0aW9uVHlwZVN0ciApCiNkZWZpbmUga1BN
T3V0cHV0RmlsZW5hbWVTdHIgImNvbS5hcHBsZS5wcmludC5QcmludFNldHRpbmdzLlBNT3V0cHV0
RmlsZW5hbWUiCiNkZWZpbmUga1BNT3V0cHV0RmlsZW5hbWVLZXkgQ0ZTVFIoIGtQTU91dHB1dEZp
bGVuYW1lU3RyICkKCgoKfQojIDUxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVh
ZGVycy9QcmludENvcmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvUE1FcnJvcnMuaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZy
YW1ld29yay9IZWFkZXJzL1BNRXJyb3JzLmgiIDMKI2RlZmluZSBfX1BNRVJST1JTX18gCiMgMjUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNRXJyb3JzLmgiIDMKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTURlZmluaXRpb25zLmgi
IDEgMwojIDI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9QTUVycm9y
cy5oIiAyIDMKCgoKCgoKZXh0ZXJuICJDIiB7CgoKZW51bSB7CiMgNTggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJp
bnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1BNRXJyb3JzLmgiIDMKICAgIGtQTUFsbG9jYXRpb25G
YWlsdXJlID0gbWVtRnVsbEVyciwKICAgIGtQTUludGVybmFsRXJyb3IgPSBrUE1HZW5lcmFsRXJy
b3IsCgogICAga1BNSW52YWxpZEluZGV4ID0gLTMwODgyLAogICAga1BNU3RyaW5nQ29udmVyc2lv
bkZhaWx1cmUgPSAtMzA4ODMsCiAgICBrUE1YTUxQYXJzZUVycm9yID0gLTMwODg0LAoKICAgIGtQ
TUludmFsaWRKb2JUZW1wbGF0ZSA9IC0zMDg4NSwKICAgIGtQTUludmFsaWRQcmludGVySW5mbyA9
IC0zMDg4NiwKICAgIGtQTUludmFsaWRDb25uZWN0aW9uID0gLTMwODg3LAogICAga1BNSW52YWxp
ZEtleSA9IC0zMDg4OCwKICAgIGtQTUludmFsaWRWYWx1ZSA9IC0zMDg4OSwKICAgIGtQTUludmFs
aWRBbGxvY2F0b3IgPSAtMzA4OTAsCiAgICBrUE1JbnZhbGlkVGlja2V0ID0gLTMwODkxLAogICAg
a1BNSW52YWxpZEl0ZW0gPSAtMzA4OTIsCiAgICBrUE1JbnZhbGlkVHlwZSA9IC0zMDg5MywKICAg
IGtQTUludmFsaWRSZXBseSA9IC0zMDg5NCwKICAgIGtQTUludmFsaWRGaWxlVHlwZSA9IC0zMDg5
NSwKICAgIGtQTUludmFsaWRPYmplY3QgPSAtMzA4OTYsCiAgICBrUE1JbnZhbGlkUGFwZXIgPSAt
MzA4OTcsCiAgICBrUE1JbnZhbGlkQ2FsaWJyYXRpb25UYXJnZXQgPSAtMzA4OTgsCgoKICAgIGtQ
TU5vRGVmYXVsdEl0ZW0gPSAtOTUwMCwKICAgIGtQTU5vRGVmYXVsdFNldHRpbmdzID0gLTk1MDEs
CiAgICBrUE1JbnZhbGlkUERFQ29udGV4dCA9IC05NTMwLAoga1BNRG9udFN3aXRjaFBERUVycm9y
ID0gLTk1MzEsCiBrUE1VbmFibGVUb0ZpbmRQcm9jZXNzID0gLTk1MzIsCiBrUE1GZWF0dXJlTm90
SW5zdGFsbGVkID0gLTk1MzMsCgoKIGtQTUludmFsaWRQQk1SZWYgPSAtOTU0MCwKIGtQTU5vU2Vs
ZWN0ZWRQcmludGVycyA9IC05NTQxLAoga1BNSW52YWxpZExvb2t1cFNwZWMgPSAtOTU0MiwKIGtQ
TVN5bmNSZXF1ZXN0RmFpbGVkID0gLTk1NDMsCiBrUE1FZGl0UmVxdWVzdEZhaWxlZCA9IC05NTQ0
LAoga1BNUHJCcm93c2VyTm9VSSA9IC05NTQ1LAoKCiAgICBrUE1UaWNrZXRUeXBlTm90Rm91bmQg
PSAtOTU4MCwKICAgIGtQTVVwZGF0ZVRpY2tldEZhaWxlZCA9IC05NTgxLAoga1BNVmFsaWRhdGVU
aWNrZXRGYWlsZWQgPSAtOTU4MiwKICAgIGtQTVN1YlRpY2tldE5vdEZvdW5kID0gLTk1ODMsCiAg
ICBrUE1JbnZhbGlkU3ViVGlja2V0ID0gLTk1ODQsCiAgICBrUE1EZWxldGVTdWJUaWNrZXRGYWls
ZWQgPSAtOTU4NSwKICAgIGtQTUl0ZW1Jc0xvY2tlZCA9IC05NTg2LAogICAga1BNVGlja2V0SXNM
b2NrZWQgPSAtOTU4NywKICAgIGtQTVRlbXBsYXRlSXNMb2NrZWQgPSAtOTU4OCwKIGtQTUtleU5v
dEZvdW5kID0gLTk1ODksCiAgICBrUE1LZXlOb3RVbmlxdWUgPSAtOTU5MCwKICAgIGtQTVVua25v
d25EYXRhVHlwZSA9IC05NTkxLAoKCiAgICBrUE1DcmVhdGVNZXNzYWdlRmFpbGVkID0gLTk2MjAs
CiAgICBrUE1TZXJ2ZXJDb21tdW5pY2F0aW9uRmFpbGVkID0gLTk2MjEsCiAgICBrUE1LZXlPclZh
bHVlTm90Rm91bmQgPSAtOTYyMywKICAgIGtQTU1lc3NhZ2luZ0Vycm9yID0gLTk2MjQsCgoKICAg
IGtQTVNlcnZlck5vdEZvdW5kID0gLTk2MzAsCiAgICBrUE1TZXJ2ZXJBbHJlYWR5UnVubmluZyA9
IC05NjMxLAogICAga1BNU2VydmVyU3VzcGVuZGVkID0gLTk2MzIsCiAgICBrUE1TZXJ2ZXJBdHRy
aWJ1dGVSZXN0cmljdGVkID0gLTk2MzMsCiAgICBrUE1GaWxlT3JEaXJPcGVyYXRpb25GYWlsZWQg
PSAtOTYzNCwKICAgIGtQTVVzZXJPckdyb3VwTm90Rm91bmQgPSAtOTYzNSwKICAgIGtQTVBlcm1p
c3Npb25FcnJvciA9IC05NjM2LAogICAga1BNVW5rbm93bk1lc3NhZ2UgPSAtOTYzNywKICAgIGtQ
TVF1ZXVlTm90Rm91bmQgPSAtOTYzOCwKICAgIGtQTVF1ZXVlQWxyZWFkeUV4aXN0cyA9IC05NjM5
LAogICAga1BNUXVldWVKb2JGYWlsZWQgPSAtOTY0MCwKICAgIGtQTUpvYk5vdEZvdW5kID0gLTk2
NDEsCiAgICBrUE1Kb2JCdXN5ID0gLTk2NDIsCiAgICBrUE1Kb2JDYW5jZWxlZCA9IC05NjQzLAog
ICAga1BNRG9jdW1lbnROb3RGb3VuZCA9IC05NjQ0LAoKCiAgICBrUE1QTVN5bWJvbE5vdEZvdW5k
ID0gLTk2NjAsCiAgICBrUE1JT01TeW1ib2xOb3RGb3VuZCA9IC05NjYxLAogICAga1BNQ1ZNU3lt
Ym9sTm90Rm91bmQgPSAtOTY2MiwKICAgIGtQTUludmFsaWRQTUNvbnRleHQgPSAtOTY2MywKICAg
IGtQTUludmFsaWRJT01Db250ZXh0ID0gLTk2NjQsCiAgICBrUE1JbnZhbGlkQ1ZNQ29udGV4dCA9
IC05NjY1LAogICAga1BNSW52YWxpZEpvYklEID0gLTk2NjYsCiAgICBrUE1Ob1ByaW50ZXJKb2JJ
RCA9IC05NjY3LAogICAga1BNSm9iU3RyZWFtT3BlbkZhaWxlZCA9IC05NjY4LAogICAga1BNSm9i
U3RyZWFtUmVhZEZhaWxlZCA9IC05NjY5LAogICAga1BNSm9iU3RyZWFtRW5kRXJyb3IgPSAtOTY3
MCwKICAgIGtQTUpvYk1hbmFnZXJBYm9ydGVkID0gLTk2NzEsCiAgICBrUE1Kb2JHZXRUaWNrZXRC
YWRGb3JtYXRFcnJvciA9IC05NjcyLAogICAga1BNSm9iR2V0VGlja2V0UmVhZEVycm9yID0gLTk2
NzMsCgoKIGtQTVBsdWdpbk5vdEZvdW5kID0gLTk3MDEsCiAgICBrUE1QbHVnaW5SZWdpc3RlcmF0
aW9uRmFpbGVkID0gLTk3MDIsCiBrUE1Gb250Tm90Rm91bmQgPSAtOTcwMywKIGtQTUZvbnROYW1l
VG9vTG9uZyA9IC05NzA0LAoga1BNR2VuZXJhbENHRXJyb3IgPSAtOTcwNSwKIGtQTUludmFsaWRT
dGF0ZSA9IC05NzA2LAoga1BNVW5leHBlY3RlZEltYWdpbmdFcnJvciA9IC05NzA3LAoKCgoKIGtQ
TUludmFsaWRQcmludGVyQWRkcmVzcyA9IC05NzgwLAoga1BNT3BlbkZhaWxlZCA9IC05NzgxLAog
a1BNUmVhZEZhaWxlZCA9IC05NzgyLAoga1BNV3JpdGVGYWlsZWQgPSAtOTc4MywKIGtQTVN0YXR1
c0ZhaWxlZCA9IC05Nzg0LAoga1BNQ2xvc2VGYWlsZWQgPSAtOTc4NSwKIGtQTVVuc3VwcG9ydGVk
Q29ubmVjdGlvbiA9IC05Nzg2LAoga1BNSU9BdHRyTm90QXZhaWxhYmxlID0gLTk3ODcsCiBrUE1S
ZWFkR290WmVyb0RhdGEgPSAtOTc4OCwKCiAgICBrUE1MYXN0RXJyb3JDb2RlVG9NYWtlTWFpbnRl
bmFuY2VPZlRoaXNMaXN0RWFzaWVyID0gLTk3OTkKfTsKCgp9CiMgNTUgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJp
bnRDb3JlLmZyYW1ld29yay9IZWFkZXJzL1ByaW50Q29yZS5oIiAyIDMKIyAzOSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9B
cHBsaWNhdGlvblNlcnZpY2VzLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNz
LmZyYW1ld29yay9IZWFkZXJzL0NvcmVHcmFwaGljcy5oIiAxIDMKIyA0MyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BcHBs
aWNhdGlvblNlcnZpY2VzLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGFuZ0FuYWx5c2lzLmZy
YW1ld29yay9IZWFkZXJzL0xhbmdBbmFseXNpcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYW5n
QW5hbHlzaXMuZnJhbWV3b3JrL0hlYWRlcnMvTGFuZ0FuYWx5c2lzLmgiIDMKI2RlZmluZSBfX0xB
TkdBTkFMWVNJU19fIAojIDMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhbmdBbmFseXNpcy5mcmFtZXdvcmsvSGVh
ZGVycy9MYW5nQW5hbHlzaXMuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGFuZ0FuYWx5c2lzLmZyYW1l
d29yay9IZWFkZXJzL0xhbmd1YWdlQW5hbHlzaXMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGFu
Z0FuYWx5c2lzLmZyYW1ld29yay9IZWFkZXJzL0xhbmd1YWdlQW5hbHlzaXMuaCIgMwojZGVmaW5l
IF9fTEFOR1VBR0VBTkFMWVNJU19fIAojIDI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhbmdBbmFseXNpcy5mcmFt
ZXdvcmsvSGVhZGVycy9MYW5ndWFnZUFuYWx5c2lzLmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhbmdB
bmFseXNpcy5mcmFtZXdvcmsvSGVhZGVycy9EaWN0aW9uYXJ5LmgiIDEgMwojIDE3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0xhbmdBbmFseXNpcy5mcmFtZXdvcmsvSGVhZGVycy9EaWN0aW9uYXJ5LmgiIDMKI2RlZmlu
ZSBfX0RJQ1RJT05BUllfXyAKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYW5nQW5hbHlzaXMuZnJhbWV3b3Jr
L0hlYWRlcnMvRGljdGlvbmFyeS5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgb3B0aW9ucyBh
bGlnbj1wb3dlcgojIDQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhbmdBbmFseXNpcy5mcmFtZXdvcmsvSGVhZGVy
cy9EaWN0aW9uYXJ5LmgiIDMKZW51bSB7CiAga0RpY3Rpb25hcnlGaWxlVHlwZSA9ICdkaWN0JywK
ICBrRENNRGljdGlvbmFyeUhlYWRlclNpZ25hdHVyZSA9ICdkaWN0JywKICBrRENNRGljdGlvbmFy
eUhlYWRlclZlcnNpb24gPSAyCn07CgplbnVtIHsKICBrRENNQW55RmllbGRUYWcgPSB0eXBlV2ls
ZENhcmQsCiAga0RDTUFueUZpZWxkVHlwZSA9IHR5cGVXaWxkQ2FyZAp9OwoKCgoKZW51bSB7CiAg
a2V5RENNRmllbGRUYWcgPSAnZnRhZycsCiAga2V5RENNRmllbGRUeXBlID0gJ2Z0eXAnLAogIGtl
eURDTU1heFJlY29yZFNpemUgPSAnbXJzeicsCiAga2V5RENNRmllbGRBdHRyaWJ1dGVzID0gJ2Zh
dHInLAogIGtleURDTUZpZWxkRGVmYXVsdERhdGEgPSAnZmRlZicsCiAga2V5RENNRmllbGROYW1l
ID0gJ2ZuYW0nLAogIGtleURDTUZpZWxkRmluZE1ldGhvZHMgPSAnZmZuZCcKfTsKCgoKCmVudW0g
ewogIHR5cGVEQ01GaWVsZEF0dHJpYnV0ZXMgPSAnZmF0cicsCiAgdHlwZURDTUZpbmRNZXRob2Qg
PSAnZm10aCcKfTsKCgoKCgplbnVtIHsKICBrRENNSW5kZXhlZEZpZWxkTWFzayA9IDB4MDAwMDAw
MDEsCiAga0RDTVJlcXVpcmVkRmllbGRNYXNrID0gMHgwMDAwMDAwMiwKICBrRENNSWRlbnRpZnlG
aWVsZE1hc2sgPSAweDAwMDAwMDA0LAogIGtEQ01GaXhlZFNpemVGaWVsZE1hc2sgPSAweDAwMDAw
MDA4LAogIGtEQ01IaWRkZW5GaWVsZE1hc2sgPSAoaW50KTB4ODAwMDAwMDAKfTsKCnR5cGVkZWYg
T3B0aW9uQml0cyBEQ01GaWVsZEF0dHJpYnV0ZXM7CgoKCmVudW0gewogIHBEQ01BY2Nlc3NNZXRo
b2QgPSAnYW10ZCcsCiAgcERDTVBlcm1pc3Npb24gPSAncGVybScsCiAgcERDTUxpc3RpbmcgPSAn
bGlzdCcsCiAgcERDTU1haW50ZW5hbmNlID0gJ210bmMnLAogIHBEQ01Mb2NhbGUgPSAnbG9jbCcs
CiAgcERDTUNsYXNzID0gcENsYXNzLAogIHBEQ01Db3B5cmlnaHQgPSAnaW5mbycKfTsKCgoKCmVu
dW0gewogIGtEQ01SZWFkT25seURpY3Rpb25hcnkgPSAwLAogIGtEQ01SZWFkV3JpdGVEaWN0aW9u
YXJ5ID0gMQp9OwoKCgoKZW51bSB7CiAga0RDTUFsbG93TGlzdGluZyA9IDAsCiAga0RDTVByb2hp
Yml0TGlzdGluZyA9IDEKfTsKCgoKCmVudW0gewogIGtEQ01Vc2VyRGljdGlvbmFyeUNsYXNzID0g
MCwKICBrRENNU3BlY2lmaWNEaWN0aW9uYXJ5Q2xhc3MgPSAxLAogIGtEQ01CYXNpY0RpY3Rpb25h
cnlDbGFzcyA9IDIKfTsKCgoKCmVudW0gewogIGtEQ01GaW5kTWV0aG9kRXhhY3RNYXRjaCA9IGtB
RUVxdWFscywKICBrRENNRmluZE1ldGhvZEJlZ2lubmluZ01hdGNoID0ga0FFQmVnaW5zV2l0aCwK
ICBrRENNRmluZE1ldGhvZENvbnRhaW5zTWF0Y2ggPSBrQUVDb250YWlucywKICBrRENNRmluZE1l
dGhvZEVuZGluZ01hdGNoID0ga0FFRW5kc1dpdGgsCiAga0RDTUZpbmRNZXRob2RGb3J3YXJkVHJp
ZSA9ICdmdHJpJywKICBrRENNRmluZE1ldGhvZEJhY2t3YXJkVHJpZSA9ICdidHJpJwp9OwoKdHlw
ZWRlZiBPU1R5cGUgRENNRmluZE1ldGhvZDsKCgoKZW51bSB7CiAga0RDTUNhblVzZUZpbGVEaWN0
aW9uYXJ5TWFzayA9IDB4MDAwMDAwMDEsCiAga0RDTUNhblVzZU1lbW9yeURpY3Rpb25hcnlNYXNr
ID0gMHgwMDAwMDAwMiwKICBrRENNQ2FuU3RyZWFtRGljdGlvbmFyeU1hc2sgPSAweDAwMDAwMDA0
LAogIGtEQ01DYW5IYXZlTXVsdGlwbGVJbmRleE1hc2sgPSAweDAwMDAwMDA4LAogIGtEQ01DYW5N
b2RpZnlEaWN0aW9uYXJ5TWFzayA9IDB4MDAwMDAwMTAsCiAga0RDTUNhbkNyZWF0ZURpY3Rpb25h
cnlNYXNrID0gMHgwMDAwMDAyMCwKICBrRENNQ2FuQWRkRGljdGlvbmFyeUZpZWxkTWFzayA9IDB4
MDAwMDAwNDAsCiAga0RDTUNhblVzZVRyYW5zYWN0aW9uTWFzayA9IDB4MDAwMDAwODAKfTsKCnR5
cGVkZWYgT3B0aW9uQml0cyBEQ01BY2Nlc3NNZXRob2RGZWF0dXJlOwp0eXBlZGVmIFVJbnQzMiBE
Q01VbmlxdWVJRDsKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlRENNT2JqZWN0SUQqIERDTU9iamVjdElE
Owp0eXBlZGVmIERDTU9iamVjdElEIERDTUFjY2Vzc01ldGhvZElEOwp0eXBlZGVmIERDTU9iamVj
dElEIERDTURpY3Rpb25hcnlJRDsKI2RlZmluZSBrRENNSW52YWxpZE9iamVjdElEICgoRENNT2Jq
ZWN0SUQpIGtJbnZhbGlkSUQpCnR5cGVkZWYgc3RydWN0IE9wYXF1ZURDTU9iamVjdFJlZiogRENN
T2JqZWN0UmVmOwp0eXBlZGVmIERDTU9iamVjdFJlZiBEQ01EaWN0aW9uYXJ5UmVmOwp0eXBlZGVm
IERDTU9iamVjdFJlZiBEQ01EaWN0aW9uYXJ5U3RyZWFtUmVmOwojZGVmaW5lIGtEQ01JbnZhbGlk
T2JqZWN0UmVmICgoRENNT2JqZWN0UmVmKSBrSW52YWxpZElEKQp0eXBlZGVmIHN0cnVjdCBPcGFx
dWVEQ01PYmplY3RJdGVyYXRvciogRENNT2JqZWN0SXRlcmF0b3I7CnR5cGVkZWYgRENNT2JqZWN0
SXRlcmF0b3IgRENNQWNjZXNzTWV0aG9kSXRlcmF0b3I7CnR5cGVkZWYgRENNT2JqZWN0SXRlcmF0
b3IgRENNRGljdGlvbmFyeUl0ZXJhdG9yOwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVEQ01Gb3VuZFJl
Y29yZEl0ZXJhdG9yKiBEQ01Gb3VuZFJlY29yZEl0ZXJhdG9yOwoKCgp0eXBlZGVmIERlc2NUeXBl
IERDTUZpZWxkVGFnOwp0eXBlZGVmIERlc2NUeXBlIERDTUZpZWxkVHlwZTsKCgoKc3RydWN0IERD
TURpY3Rpb25hcnlIZWFkZXIgewogIEZvdXJDaGFyQ29kZSBoZWFkZXJTaWduYXR1cmU7CiAgVUlu
dDMyIGhlYWRlclZlcnNpb247CiAgVUludDMyIGhlYWRlclNpemU7CiAgU3RyNjMgYWNjZXNzTWV0
aG9kOwp9Owp0eXBlZGVmIHN0cnVjdCBEQ01EaWN0aW9uYXJ5SGVhZGVyIERDTURpY3Rpb25hcnlI
ZWFkZXI7CgoKCnR5cGVkZWYgQm9vbGVhbiAoICogRENNUHJvZ3Jlc3NGaWx0ZXJQcm9jUHRyKShC
b29sZWFuIGRldGVybWluYXRlUHJvY2VzcywgVUludDE2IHBlcmNlbnRhZ2VDb21wbGV0ZSwgVUlu
dDMyIGNhbGxiYWNrVUQpOwp0eXBlZGVmIERDTVByb2dyZXNzRmlsdGVyUHJvY1B0ciBEQ01Qcm9n
cmVzc0ZpbHRlclVQUDsKIyAxMTE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhbmdBbmFseXNpcy5mcmFtZXdvcmsv
SGVhZGVycy9EaWN0aW9uYXJ5LmgiIDMKICAgIGlubGluZSBCb29sZWFuIERDTURpY3Rpb25hcnlN
YW5hZ2VyQXZhaWxhYmxlKCkgeyByZXR1cm4gdHJ1ZTsgfQojIDExMzIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTGFu
Z0FuYWx5c2lzLmZyYW1ld29yay9IZWFkZXJzL0RpY3Rpb25hcnkuaCIgMwojZGVmaW5lIGtBcHBs
ZUphcGFuZXNlRGVmYXVsdEFjY2Vzc01ldGhvZE5hbWUgIlxwREFNOkFwcGxlIEJhY2t3YXJkIFRy
aWUgQWNjZXNzIE1ldGhvZCIKCgoKZW51bSB7CiAga01heFlvbWlMZW5ndGhJbkFwcGxlSmFwYW5l
c2VEaWN0aW9uYXJ5ID0gNDAsCiAga01heEthbmppTGVuZ3RoSW5BcHBsZUphcGFuZXNlRGljdGlv
bmFyeSA9IDY0Cn07CgoKCgplbnVtIHsKICBrRENNSmFwYW5lc2VZb21pVGFnID0gJ3lvbWknLAog
IGtEQ01KYXBhbmVzZUh5b2tpVGFnID0gJ2h5b2snLAogIGtEQ01KYXBhbmVzZUhpbnNoaVRhZyA9
ICdoaW5zJywKICBrRENNSmFwYW5lc2VXZWlnaHRUYWcgPSAnaGluZCcsCiAga0RDTUphcGFuZXNl
UGhvbmV0aWNUYWcgPSAnaHRvbicsCiAga0RDTUphcGFuZXNlQWNjZW50VGFnID0gJ2FjbnQnLAog
IGtEQ01KYXBhbmVzZU9uS3VuUmVhZGluZ1RhZyA9ICdPbktuJywKICBrRENNSmFwYW5lc2VGdWt1
Z291SW5mb1RhZyA9ICdmdWt1Jwp9OwoKZW51bSB7CiAga0RDTUphcGFuZXNlWW9taVR5cGUgPSB0
eXBlVW5pY29kZVRleHQsCiAga0RDTUphcGFuZXNlSHlva2lUeXBlID0gdHlwZVVuaWNvZGVUZXh0
LAogIGtEQ01KYXBhbmVzZUhpbnNoaVR5cGUgPSAnaGlucycsCiAga0RDTUphcGFuZXNlV2VpZ2h0
VHlwZSA9IHR5cGVTSW50MTYsCiAga0RDTUphcGFuZXNlUGhvbmV0aWNUeXBlID0gdHlwZVVuaWNv
ZGVUZXh0LAogIGtEQ01KYXBhbmVzZUFjY2VudFR5cGUgPSAnYnl0ZScsCiAga0RDTUphcGFuZXNl
T25LdW5SZWFkaW5nVHlwZSA9IHR5cGVVbmljb2RlVGV4dCwKICBrRENNSmFwYW5lc2VGdWt1Z291
SW5mb1R5cGUgPSAnZnVrdScKfTsKCgoKI3ByYWdtYSBvcHRpb25zIGFsaWduPXJlc2V0CgoKfQoj
IDI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0xhbmdBbmFseXNpcy5mcmFtZXdvcmsvSGVhZGVycy9MYW5ndWFnZUFu
YWx5c2lzLmgiIDIgMwojIDQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhbmdBbmFseXNpcy5mcmFtZXdvcmsvSGVh
ZGVycy9MYW5ndWFnZUFuYWx5c2lzLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBvcHRpb25z
IGFsaWduPXBvd2VyCgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVMQUVudmlyb25tZW50UmVmKiBMQUVu
dmlyb25tZW50UmVmOwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVMQUNvbnRleHRSZWYqIExBQ29udGV4
dFJlZjsKdHlwZWRlZiBBRUtleXdvcmQgTEFQcm9wZXJ0eUtleTsKdHlwZWRlZiBEZXNjVHlwZSBM
QVByb3BlcnR5VHlwZTsKCgoKc3RydWN0IExBTW9ycGhlbWVSZWMgewogIFVJbnQzMiBzb3VyY2VU
ZXh0TGVuZ3RoOwogIExvZ2ljYWxBZGRyZXNzIHNvdXJjZVRleHRQdHI7CiAgVUludDMyIG1vcnBo
ZW1lVGV4dExlbmd0aDsKICBMb2dpY2FsQWRkcmVzcyBtb3JwaGVtZVRleHRQdHI7CiAgVUludDMy
IHBhcnRPZlNwZWVjaDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTEFNb3JwaGVtZVJlYyBMQU1vcnBoZW1l
UmVjOwpzdHJ1Y3QgTEFNb3JwaGVtZXNBcnJheSB7CiAgSXRlbUNvdW50IG1vcnBoZW1lc0NvdW50
OwogIFVJbnQzMiBwcm9jZXNzZWRUZXh0TGVuZ3RoOwogIFVJbnQzMiBtb3JwaGVtZXNUZXh0TGVu
Z3RoOwogIExBTW9ycGhlbWVSZWMgbW9ycGhlbWVzWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBMQU1v
cnBoZW1lc0FycmF5IExBTW9ycGhlbWVzQXJyYXk7CnR5cGVkZWYgTEFNb3JwaGVtZXNBcnJheSAq
IExBTW9ycGhlbWVzQXJyYXlQdHI7CmVudW0gewogIGtMQU1vcnBoZW1lc0FycmF5VmVyc2lvbiA9
IDAKfTsKCgoKCnR5cGVkZWYgQUVSZWNvcmQgTEFNb3JwaGVtZUJ1bmRsZTsKdHlwZWRlZiBBRVJl
Y29yZCBMQU1vcnBoZW1lUGF0aDsKdHlwZWRlZiBBRVJlY29yZCBMQU1vcnBoZW1lOwp0eXBlZGVm
IEFFUmVjb3JkIExBSG9tb2dyYXBoOwplbnVtIHsKICBrZXlBRUxBTW9ycGhlbWVCdW5kbGUgPSAn
bG1mYicsCiAga2V5QUVMQU1vcnBoZW1lUGF0aCA9ICdsbWZwJywKICBrZXlBRUxBTW9ycGhlbWUg
PSAnbG1mbicsCiAga2V5QUVMQUhvbW9ncmFwaCA9ICdsbWZoJwp9OwoKZW51bSB7CiAgdHlwZUxB
TW9ycGhlbWVCdW5kbGUgPSB0eXBlQUVSZWNvcmQsCiAgdHlwZUxBTW9ycGhlbWVQYXRoID0gdHlw
ZUFFUmVjb3JkLAogIHR5cGVMQU1vcnBoZW1lID0gdHlwZUFFTGlzdCwKICB0eXBlTEFIb21vZ3Jh
cGggPSB0eXBlQUVMaXN0Cn07CgoKCgplbnVtIHsKICBrZXlBRU1vcnBoZW1lUGFydE9mU3BlZWNo
Q29kZSA9ICdsYW1jJywKICBrZXlBRU1vcnBoZW1lVGV4dFJhbmdlID0gJ2xhbXQnCn07CgplbnVt
IHsKICB0eXBlQUVNb3JwaGVtZVBhcnRPZlNwZWVjaENvZGUgPSAnbGFtYycsCiAgdHlwZUFFTW9y
cGhlbWVUZXh0UmFuZ2UgPSAnbGFtdCcKfTsKCnR5cGVkZWYgVUludDMyIE1vcnBoZW1lUGFydE9m
U3BlZWNoOwpzdHJ1Y3QgTW9ycGhlbWVUZXh0UmFuZ2UgewogIFVJbnQzMiBzb3VyY2VPZmZzZXQ7
CiAgVUludDMyIGxlbmd0aDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTW9ycGhlbWVUZXh0UmFuZ2UgTW9y
cGhlbWVUZXh0UmFuZ2U7CgoKCmVudW0gewogIGtMQUVuZE9mU291cmNlVGV4dE1hc2sgPSAweDAw
MDAwMDAxCn07CgoKCgplbnVtIHsKICBrTEFEZWZhdWx0RWRnZSA9IDAsCiAga0xBRnJlZUVkZ2Ug
PSAxLAogIGtMQUluY29tcGxldGVFZGdlID0gMgp9OwoKCgoKZW51bSB7CiAga0xBQWxsTW9ycGhl
bWVzID0gMAp9OwojIDUxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYW5nQW5hbHlzaXMuZnJhbWV3b3JrL0hlYWRl
cnMvTGFuZ3VhZ2VBbmFseXNpcy5oIiAzCiAgICBpbmxpbmUgQm9vbGVhbiBMQUxhbmd1YWdlQW5h
bHlzaXNBdmFpbGFibGUoKSB7IHJldHVybiB0cnVlOyB9CiMgNTI4ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhbmdB
bmFseXNpcy5mcmFtZXdvcmsvSGVhZGVycy9MYW5ndWFnZUFuYWx5c2lzLmgiIDMKI2RlZmluZSBr
TEFKYXBhbmVzZUthbmFLYW5qaUVudmlyb25tZW50ICJccEthbmFLYW5qaUNvbnZlcnNpb24iCiNk
ZWZpbmUga0xBSmFwYW5lc2VNb3JwaGVtZUFuYWx5c2lzRW52aXJvbm1lbnQgIlxwSmFwYW5lc2VN
b3JwaGVtZUFuYWx5c2lzIgojZGVmaW5lIGtMQUphcGFuZXNlVFRTRW52aXJvbm1lbnQgIlxwSmFw
YW5lc2VUZXh0VG9TcGVlY2giCgoKCmVudW0gewogIGtBcHBsZUphcGFuZXNlRGljdGlvbmFyeVNp
Z25hdHVyZSA9ICdqbGFuJwp9OwoKCgoKZW51bSB7CiAga01heElucHV0TGVuZ3RoT2ZBcHBsZUph
cGFuZXNlRW5naW5lID0gMjAwCn07CgoKCgoKdHlwZWRlZiBNb3JwaGVtZVBhcnRPZlNwZWVjaCBK
YXBhbmVzZVBhcnRPZlNwZWVjaDsKdHlwZWRlZiBVSW50MTYgSG9tb2dyYXBoV2VpZ2h0Owp0eXBl
ZGVmIFVJbnQ4IEhvbW9ncmFwaEFjY2VudDsKCgoKZW51bSB7CiAga2V5QUVIb21vZ3JhcGhEaWNJ
bmZvID0gJ2xhaGQnLAogIGtleUFFSG9tb2dyYXBoV2VpZ2h0ID0gJ2xhaHcnLAogIGtleUFFSG9t
b2dyYXBoQWNjZW50ID0gJ2xhaGEnCn07CgplbnVtIHsKICB0eXBlQUVIb21vZ3JhcGhEaWNJbmZv
ID0gJ2xhaGQnLAogIHR5cGVBRUhvbW9ncmFwaFdlaWdodCA9IHR5cGVTSW50MTYsCiAgdHlwZUFF
SG9tb2dyYXBoQWNjZW50ID0gJ2xhaGEnCn07CgoKCgpzdHJ1Y3QgSG9tb2dyYXBoRGljSW5mb1Jl
YyB7CiAgRENNRGljdGlvbmFyeUlEIGRpY3Rpb25hcnlJRDsKICBEQ01VbmlxdWVJRCB1bmlxdWVJ
RDsKfTsKdHlwZWRlZiBzdHJ1Y3QgSG9tb2dyYXBoRGljSW5mb1JlYyBIb21vZ3JhcGhEaWNJbmZv
UmVjOwojIDU4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9MYW5nQW5hbHlzaXMuZnJhbWV3b3JrL0hlYWRlcnMvTGFu
Z3VhZ2VBbmFseXNpcy5oIiAzCmVudW0gewogIGtMQVNwZWVjaFJvdWdoQ2xhc3NNYXNrID0gMHgw
MDAwRjAwMCwKICBrTEFTcGVlY2hNZWRpdW1DbGFzc01hc2sgPSAweDAwMDBGRjAwLAogIGtMQVNw
ZWVjaFN0cmljdENsYXNzTWFzayA9IDB4MDAwMEZGRjAsCiAga0xBU3BlZWNoS2F0c3V5b3VNYXNr
ID0gMHgwMDAwMDAwRgp9OwoKCgoKCmVudW0gewogIGtMQVNwZWVjaE1laXNoaSA9IDB4MDAwMDAw
MDAsCiAga0xBU3BlZWNoRnV0c3V1TWVpc2hpID0gMHgwMDAwMDAwMCwKICBrTEFTcGVlY2hKaW5t
ZWkgPSAweDAwMDAwMTAwLAogIGtMQVNwZWVjaEppbm1laVNlaSA9IDB4MDAwMDAxMTAsCiAga0xB
U3BlZWNoSmlubWVpTWVpID0gMHgwMDAwMDEyMCwKICBrTEFTcGVlY2hDaGltZWkgPSAweDAwMDAw
MjAwLAogIGtMQVNwZWVjaFNldHN1YmlDaGltZWkgPSAweDAwMDAwMjEwLAogIGtMQVNwZWVjaFNv
c2hpa2ltZWkgPSAweDAwMDAwMzAwLAogIGtMQVNwZWVjaEtveXV1TWVpc2hpID0gMHgwMDAwMDQw
MCwKICBrTEFTcGVlY2hTYWhlbk1laXNoaSA9IDB4MDAwMDA1MDAsCiAga0xBU3BlZWNoS2VpZG91
TWVpc2hpID0gMHgwMDAwMDYwMCwKICBrTEFTcGVlY2hSZW50YWlzaGkgPSAweDAwMDAxMDAwLAog
IGtMQVNwZWVjaEZ1a3VzaGkgPSAweDAwMDAyMDAwLAogIGtMQVNwZWVjaFNldHN1em9rdXNoaSA9
IDB4MDAwMDMwMDAsCiAga0xBU3BlZWNoS2FuZG91c2hpID0gMHgwMDAwNDAwMCwKICBrTEFTcGVl
Y2hEb3VzaGkgPSAweDAwMDA1MDAwLAogIGtMQVNwZWVjaEdvZGFuRG91c2hpID0gMHgwMDAwNTAw
MCwKICBrTEFTcGVlY2hLYWd5b3VHb2RhbiA9IDB4MDAwMDUwMDAsCiAga0xBU3BlZWNoU2FneW91
R29kYW4gPSAweDAwMDA1MDEwLAogIGtMQVNwZWVjaFRhZ3lvdUdvZGFuID0gMHgwMDAwNTAyMCwK
ICBrTEFTcGVlY2hOYWd5b3VHb2RhbiA9IDB4MDAwMDUwMzAsCiAga0xBU3BlZWNoTWFneW91R29k
YW4gPSAweDAwMDA1MDQwLAogIGtMQVNwZWVjaFJhZ3lvdUdvZGFuID0gMHgwMDAwNTA1MCwKICBr
TEFTcGVlY2hXYWd5b3VHb2RhbiA9IDB4MDAwMDUwNjAsCiAga0xBU3BlZWNoR2FneW91R29kYW4g
PSAweDAwMDA1MDcwLAogIGtMQVNwZWVjaEJhZ3lvdUdvZGFuID0gMHgwMDAwNTA4MCwKICBrTEFT
cGVlY2hJY2hpZGFuRG91c2hpID0gMHgwMDAwNTEwMCwKICBrTEFTcGVlY2hLYWhlbkRvdXNoaSA9
IDB4MDAwMDUyMDAsCiAga0xBU3BlZWNoU2FoZW5Eb3VzaGkgPSAweDAwMDA1MzAwLAogIGtMQVNw
ZWVjaFphaGVuRG91c2hpID0gMHgwMDAwNTQwMCwKICBrTEFTcGVlY2hLZWl5b3VzaGkgPSAweDAw
MDA2MDAwLAogIGtMQVNwZWVjaEtlaXlvdWRvdXNoaSA9IDB4MDAwMDcwMDAsCiAga0xBU3BlZWNo
U2V0dG91Z28gPSAweDAwMDA4MDAwLAogIGtMQVNwZWVjaFN1dWppU2V0dG91Z28gPSAweDAwMDA4
MTAwLAogIGtMQVNwZWVjaFNldHN1YmlnbyA9IDB4MDAwMDkwMDAsCiAga0xBU3BlZWNoSmlubWVp
U2V0c3ViaWdvID0gMHgwMDAwOTEwMCwKICBrTEFTcGVlY2hDaGltZWlTZXRzdWJpZ28gPSAweDAw
MDA5MjAwLAogIGtMQVNwZWVjaFNvc2hpa2ltZWlTZXRzdWJpZ28gPSAweDAwMDA5MzAwLAogIGtM
QVNwZWVjaFN1dWppU2V0c3ViaWdvID0gMHgwMDAwOTQwMCwKICBrTEFTcGVlY2hNdWhpbnNoaSA9
IDB4MDAwMEEwMDAsCiAga0xBU3BlZWNoVGFua2FuamkgPSAweDAwMDBBMDAwLAogIGtMQVNwZWVj
aEtpZ291ID0gMHgwMDAwQTEwMCwKICBrTEFTcGVlY2hLdXRlbiA9IDB4MDAwMEExMTAsCiAga0xB
U3BlZWNoVG91dGVuID0gMHgwMDAwQTEyMCwKICBrTEFTcGVlY2hTdXVzaGkgPSAweDAwMDBBMjAw
LAogIGtMQVNwZWVjaERva3VyaXRzdWdvID0gMHgwMDAwQTMwMCwKICBrTEFTcGVlY2hTZWlrdSA9
IDB4MDAwMEE0MDAsCiAga0xBU3BlZWNoSm9kb3VzaGkgPSAweDAwMDBCMDAwLAogIGtMQVNwZWVj
aEpvc2hpID0gMHgwMDAwQzAwMAp9OwoKCgoKCmVudW0gewogIGtMQVNwZWVjaEthdHN1eW91R29r
YW4gPSAweDAwMDAwMDAxLAogIGtMQVNwZWVjaEthdHN1eW91TWl6ZW4gPSAweDAwMDAwMDAyLAog
IGtMQVNwZWVjaEthdHN1eW91UmVueW91ID0gMHgwMDAwMDAwMywKICBrTEFTcGVlY2hLYXRzdXlv
dVN5dXVzaGkgPSAweDAwMDAwMDA0LAogIGtMQVNwZWVjaEthdHN1eW91UmVudGFpID0gMHgwMDAw
MDAwNSwKICBrTEFTcGVlY2hLYXRzdXlvdUthdGVpID0gMHgwMDAwMDAwNiwKICBrTEFTcGVlY2hL
YXRzdXlvdU1laXJlaSA9IDB4MDAwMDAwMDcKfTsKCgoKI3ByYWdtYSBvcHRpb25zIGFsaWduPXJl
c2V0CgoKfQojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0xhbmdBbmFseXNpcy5mcmFtZXdvcmsvSGVhZGVycy9M
YW5nQW5hbHlzaXMuaCIgMiAzCiMgNDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0hlYWRlcnMvQXBwbGljYXRpb25TZXJ2aWNlcy5oIiAy
IDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9T
cGVlY2hTeW50aGVzaXMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZy
YW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCiNkZWZpbmUgX19TUEVFQ0hTWU5U
SEVTSVNfXyAKIyAzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRl
cnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gs
IDIpCgplbnVtIHsKICBrVGV4dFRvU3BlZWNoU3ludGhUeXBlID0gJ3R0c2MnLAogIGtUZXh0VG9T
cGVlY2hWb2ljZVR5cGUgPSAndHR2ZCcsCiAga1RleHRUb1NwZWVjaFZvaWNlRmlsZVR5cGUgPSAn
dHR2ZicsCiAga1RleHRUb1NwZWVjaFZvaWNlQnVuZGxlVHlwZSA9ICd0dHZiJwp9OwoKZW51bSB7
CiAga05vRW5kaW5nUHJvc29keSA9IDEsCiAga05vU3BlZWNoSW50ZXJydXB0ID0gMiwKICBrUHJl
ZmxpZ2h0VGhlblBhdXNlID0gNAp9OwoKZW51bSB7CiAga0ltbWVkaWF0ZSA9IDAsCiAga0VuZE9m
V29yZCA9IDEsCiAga0VuZE9mU2VudGVuY2UgPSAyCn07CgoKCgoKZW51bSB7CiAgc29TdGF0dXMg
PSAnc3RhdCcsCiAgc29FcnJvcnMgPSAnZXJybycsCiAgc29JbnB1dE1vZGUgPSAnaW5wdCcsCiAg
c29DaGFyYWN0ZXJNb2RlID0gJ2NoYXInLAogIHNvTnVtYmVyTW9kZSA9ICdubWJyJywKICBzb1Jh
dGUgPSAncmF0ZScsCiAgc29QaXRjaEJhc2UgPSAncGJhcycsCiAgc29QaXRjaE1vZCA9ICdwbW9k
JywKICBzb1ZvbHVtZSA9ICd2b2xtJywKICBzb1N5bnRoVHlwZSA9ICd2ZXJzJywKICBzb1JlY2Vu
dFN5bmMgPSAnc3luYycsCiAgc29QaG9uZW1lU3ltYm9scyA9ICdwaHN5JywKICBzb0N1cnJlbnRW
b2ljZSA9ICdjdm94JywKICBzb0NvbW1hbmREZWxpbWl0ZXIgPSAnZGxpbScsCiAgc29SZXNldCA9
ICdyc2V0JywKICBzb0N1cnJlbnRBNSA9ICdteUE1JywKICBzb1JlZkNvbiA9ICdyZWZjJywKICBz
b1RleHREb25lQ2FsbEJhY2sgPSAndGRjYicsCiAgc29TcGVlY2hEb25lQ2FsbEJhY2sgPSAnc2Rj
YicsCiAgc29TeW5jQ2FsbEJhY2sgPSAnc3ljYicsCiAgc29FcnJvckNhbGxCYWNrID0gJ2VyY2In
LAogIHNvUGhvbmVtZUNhbGxCYWNrID0gJ3BoY2InLAogIHNvV29yZENhbGxCYWNrID0gJ3dkY2In
LAogIHNvU3ludGhFeHRlbnNpb24gPSAneHRuZCcsCiAgc29Tb3VuZE91dHB1dCA9ICdzbmRvJywK
ICBzb091dHB1dFRvRmlsZVdpdGhDRlVSTCA9ICdvcGFmJywKICBzb091dHB1dFRvRXh0QXVkaW9G
aWxlID0gJ29wYXgnLAogIHNvT3V0cHV0VG9BdWRpb0RldmljZSA9ICdvcGFkJywKICBzb1Bob25l
bWVPcHRpb25zID0gJ3BvcHQnCn07CgoKCmVudW0gewogIGtTcGVlY2hJbW1lZGlhdGVCb3VuZGFy
eSA9IDAsCiAga1NwZWVjaFdvcmRCb3VuZGFyeSA9IDEsCiAga1NwZWVjaFNlbnRlbmNlQm91bmRh
cnkgPSAyCn07Cgp0eXBlZGVmIFVJbnQzMiBTcGVlY2hCb3VuZGFyeTsKCgoKZW51bSB7CiAgbW9k
ZVRleHQgPSAnVEVYVCcsCiAgbW9kZVBob25lbWVzID0gJ1BIT04nLAogIG1vZGVOb3JtYWwgPSAn
Tk9STScsCiAgbW9kZUxpdGVyYWwgPSAnTFRSTCcKfTsKCgplbnVtIHsKICBzb1ZvaWNlRGVzY3Jp
cHRpb24gPSAnaW5mbycsCiAgc29Wb2ljZUZpbGUgPSAnZnJlZicKfTsKCgoKCmVudW0gewogIGtT
cGVlY2hHZW5lcmF0ZVR1bmUgPSAxLAogIGtTcGVlY2hSZWxhdGl2ZVBpdGNoID0gMiwKICBrU3Bl
ZWNoUmVsYXRpdmVEdXJhdGlvbiA9IDQsCiAga1NwZWVjaFNob3dTeWxsYWJsZXMgPSA4Cn07CgoK
CgplbnVtIHsKICBrQXVkaW9Vbml0U3ViVHlwZV9TcGVlY2hTeW50aGVzaXMgPSAndHRzcCcsCiAg
a0F1ZGlvVW5pdFByb3BlcnR5X1ZvaWNlID0gMzMzMCwKICBrQXVkaW9Vbml0UHJvcGVydHlfU3Bl
ZWNoQ2hhbm5lbCA9IDMzMzEKfTsKCgoKCgpzdHJ1Y3QgU3BlZWNoQ2hhbm5lbFJlY29yZCB7CiAg
bG9uZyBkYXRhWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBTcGVlY2hDaGFubmVsUmVjb3JkIFNwZWVj
aENoYW5uZWxSZWNvcmQ7CnR5cGVkZWYgU3BlZWNoQ2hhbm5lbFJlY29yZCAqIFNwZWVjaENoYW5u
ZWw7CgpzdHJ1Y3QgVm9pY2VTcGVjIHsKICBPU1R5cGUgY3JlYXRvcjsKICBPU1R5cGUgaWQ7Cn07
CnR5cGVkZWYgc3RydWN0IFZvaWNlU3BlYyBWb2ljZVNwZWM7CnR5cGVkZWYgVm9pY2VTcGVjICog
Vm9pY2VTcGVjUHRyOwoKZW51bSB7CiAga05ldXRlciA9IDAsCiAga01hbGUgPSAxLAogIGtGZW1h
bGUgPSAyCn07CgoKCgpzdHJ1Y3QgVm9pY2VEZXNjcmlwdGlvbiB7CiAgU0ludDMyIGxlbmd0aDsK
ICBWb2ljZVNwZWMgdm9pY2U7CiAgU0ludDMyIHZlcnNpb247CiAgU3RyNjMgbmFtZTsKICBTdHIy
NTUgY29tbWVudDsKICBTSW50MTYgZ2VuZGVyOwogIFNJbnQxNiBhZ2U7CiAgU0ludDE2IHNjcmlw
dDsKICBTSW50MTYgbGFuZ3VhZ2U7CiAgU0ludDE2IHJlZ2lvbjsKICBTSW50MzIgcmVzZXJ2ZWRb
NF07Cn07CnR5cGVkZWYgc3RydWN0IFZvaWNlRGVzY3JpcHRpb24gVm9pY2VEZXNjcmlwdGlvbjsK
CgpzdHJ1Y3QgVm9pY2VGaWxlSW5mbyB7CiAgRlNTcGVjIGZpbGVTcGVjOwogIFNJbnQxNiByZXNJ
RDsKfTsKdHlwZWRlZiBzdHJ1Y3QgVm9pY2VGaWxlSW5mbyBWb2ljZUZpbGVJbmZvOwpzdHJ1Y3Qg
U3BlZWNoU3RhdHVzSW5mbyB7CiAgQm9vbGVhbiBvdXRwdXRCdXN5OwogIEJvb2xlYW4gb3V0cHV0
UGF1c2VkOwogIGxvbmcgaW5wdXRCeXRlc0xlZnQ7CiAgU0ludDE2IHBob25lbWVDb2RlOwp9Owp0
eXBlZGVmIHN0cnVjdCBTcGVlY2hTdGF0dXNJbmZvIFNwZWVjaFN0YXR1c0luZm87CgoKc3RydWN0
IFNwZWVjaEVycm9ySW5mbyB7CiAgU0ludDE2IGNvdW50OwogIE9TRXJyIG9sZGVzdDsKICBsb25n
IG9sZFBvczsKICBPU0VyciBuZXdlc3Q7CiAgbG9uZyBuZXdQb3M7Cn07CnR5cGVkZWYgc3RydWN0
IFNwZWVjaEVycm9ySW5mbyBTcGVlY2hFcnJvckluZm87CgoKc3RydWN0IFNwZWVjaFZlcnNpb25J
bmZvIHsKICBPU1R5cGUgc3ludGhUeXBlOwogIE9TVHlwZSBzeW50aFN1YlR5cGU7CiAgT1NUeXBl
IHN5bnRoTWFudWZhY3R1cmVyOwogIFNJbnQzMiBzeW50aEZsYWdzOwogIE51bVZlcnNpb24gc3lu
dGhWZXJzaW9uOwp9Owp0eXBlZGVmIHN0cnVjdCBTcGVlY2hWZXJzaW9uSW5mbyBTcGVlY2hWZXJz
aW9uSW5mbzsKCgpzdHJ1Y3QgUGhvbmVtZUluZm8gewogIFNJbnQxNiBvcGNvZGU7CiAgU3RyMTUg
cGhTdHI7CiAgU3RyMzEgZXhhbXBsZVN0cjsKICBTSW50MTYgaGlsaXRlU3RhcnQ7CiAgU0ludDE2
IGhpbGl0ZUVuZDsKfTsKdHlwZWRlZiBzdHJ1Y3QgUGhvbmVtZUluZm8gUGhvbmVtZUluZm87Cgpz
dHJ1Y3QgUGhvbmVtZURlc2NyaXB0b3IgewogIFNJbnQxNiBwaG9uZW1lQ291bnQ7CiAgUGhvbmVt
ZUluZm8gdGhlUGhvbmVtZXNbMV07Cn07CnR5cGVkZWYgc3RydWN0IFBob25lbWVEZXNjcmlwdG9y
IFBob25lbWVEZXNjcmlwdG9yOwpzdHJ1Y3QgU3BlZWNoWHRuZERhdGEgewogIE9TVHlwZSBzeW50
aENyZWF0b3I7CiAgQnl0ZSBzeW50aERhdGFbMl07Cn07CnR5cGVkZWYgc3RydWN0IFNwZWVjaFh0
bmREYXRhIFNwZWVjaFh0bmREYXRhOwoKc3RydWN0IERlbGltaXRlckluZm8gewogIEJ5dGUgc3Rh
cnREZWxpbWl0ZXJbMl07CiAgQnl0ZSBlbmREZWxpbWl0ZXJbMl07Cn07CnR5cGVkZWYgc3RydWN0
IERlbGltaXRlckluZm8gRGVsaW1pdGVySW5mbzsKIyAyNTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3lu
dGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0
cmluZ1JlZiBrU3BlZWNoU3RhdHVzUHJvcGVydHkgOwojIDI2MCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hT
eW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIENG
U3RyaW5nUmVmIGtTcGVlY2hFcnJvcnNQcm9wZXJ0eSA7CiMgMjY5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVj
aFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4g
Q0ZTdHJpbmdSZWYga1NwZWVjaElucHV0TW9kZVByb3BlcnR5IDsKIyAyNzggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
U3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4
dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNoQ2hhcmFjdGVyTW9kZVByb3BlcnR5IDsKIyAyODcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNp
cy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNoTnVtYmVyTW9kZVByb3BlcnR5IDsKIyAy
OTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5
bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNoUmF0ZVByb3BlcnR5IDsKIyAz
MDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5
bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNoUGl0Y2hCYXNlUHJvcGVydHkg
OwojIDMxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3Bl
ZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hQaXRjaE1vZFByb3Bl
cnR5IDsKIyAzMjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJz
L1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNoVm9sdW1lUHJv
cGVydHkgOwojIDMzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRl
cnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hTeW50aGVz
aXplckluZm9Qcm9wZXJ0eSA7CiMgMzQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFt
ZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1Nw
ZWVjaFJlY2VudFN5bmNQcm9wZXJ0eSA7CiMgMzUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNp
cy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdS
ZWYga1NwZWVjaFBob25lbWVTeW1ib2xzUHJvcGVydHkgOwojIDM1OSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVl
Y2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJu
IENGU3RyaW5nUmVmIGtTcGVlY2hDdXJyZW50Vm9pY2VQcm9wZXJ0eSA7CiMgMzY4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIg
MwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaENvbW1hbmREZWxpbWl0ZXJQcm9wZXJ0eSA7CiMg
Mzc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hT
eW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaFJlc2V0UHJvcGVydHkgOwoj
IDM4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNo
U3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hPdXRwdXRUb0ZpbGVVUkxQ
cm9wZXJ0eSA7CiMgMzk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVh
ZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaE91dHB1
dFRvRXh0QXVkaW9GaWxlUHJvcGVydHkgOwojIDQwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVz
aXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5n
UmVmIGtTcGVlY2hPdXRwdXRUb0F1ZGlvRGV2aWNlUHJvcGVydHkgOwojIDQxMyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMK
ZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hSZWZDb25Qcm9wZXJ0eSA7CiMgNDIyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIg
MwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaFRleHREb25lQ2FsbEJhY2sgOwojIDQzMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lz
LmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hTcGVlY2hEb25lQ2FsbEJhY2sgOwojIDQ0
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3lu
dGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hTeW5jQ2FsbEJhY2sgOwojIDQ0
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3lu
dGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hQaG9uZW1lQ2FsbEJhY2sgOwoj
IDQ1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNo
U3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hFcnJvckNGQ2FsbEJhY2sg
OwojIDQ2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3Bl
ZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hXb3JkQ0ZDYWxsQmFj
ayA7CiMgNDc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9T
cGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaFBob25lbWVPcHRp
b25zUHJvcGVydHkgOwojIDQ4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3Jr
L0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hN
b2RlVGV4dCA7CiMgNDk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVh
ZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaE1vZGVQ
aG9uZW1lIDsKIyA1MDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFk
ZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNoTW9kZU5v
cm1hbCA7CiMgNTEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVy
cy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaE1vZGVMaXRl
cmFsIDsKIyA1MjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJz
L1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNoTm9FbmRpbmdQ
cm9zb2R5IDsKIyA1MzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFk
ZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNoTm9TcGVl
Y2hJbnRlcnJ1cHQgOwojIDU0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3Jr
L0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hQ
cmVmbGlnaHRUaGVuUGF1c2UgOwojIDU1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJh
bWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtT
cGVlY2hTdGF0dXNPdXRwdXRCdXN5IDsKIyA1NjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lz
LmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1Jl
ZiBrU3BlZWNoU3RhdHVzT3V0cHV0UGF1c2VkIDsKIyA1NjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3lu
dGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0
cmluZ1JlZiBrU3BlZWNoU3RhdHVzTnVtYmVyT2ZDaGFyYWN0ZXJzTGVmdCA7CiMgNTc4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMu
aCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaFN0YXR1c1Bob25lbWVDb2RlIDsKIyA1ODgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRo
ZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNoRXJyb3JDb3VudCA7CiMgNTk3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVz
aXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaEVycm9yT2xkZXN0IDsKIyA2MDYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNp
cy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNoRXJyb3JPbGRlc3RDaGFyYWN0ZXJPZmZz
ZXQgOwojIDYxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMv
U3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hFcnJvck5ld2Vz
dCA7CiMgNjI0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9T
cGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaEVycm9yTmV3ZXN0
Q2hhcmFjdGVyT2Zmc2V0IDsKIyA2MzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1l
d29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3Bl
ZWNoU3ludGhlc2l6ZXJJbmZvSWRlbnRpZmllciA7CiMgNjQzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5
bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZT
dHJpbmdSZWYga1NwZWVjaFN5bnRoZXNpemVySW5mb01hbnVmYWN0dXJlciA7CiMgNjUyICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMu
aCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaFN5bnRoZXNpemVySW5mb1ZlcnNpb24gOwoj
IDY2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNo
U3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hQaG9uZW1lSW5mb09wY29k
ZSA7CiMgNjcxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9T
cGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaFBob25lbWVJbmZv
U3ltYm9sIDsKIyA2ODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFk
ZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNoUGhvbmVt
ZUluZm9FeGFtcGxlIDsKIyA2ODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29y
ay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZiBrU3BlZWNo
UGhvbmVtZUluZm9IaWxpdGVTdGFydCA7CiMgNjk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNp
cy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdS
ZWYga1NwZWVjaFBob25lbWVJbmZvSGlsaXRlRW5kIDsKIyA3MDggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNo
U3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBD
RlN0cmluZ1JlZiBrU3BlZWNoVm9pY2VDcmVhdG9yIDsKIyA3MTcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNo
U3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBD
RlN0cmluZ1JlZiBrU3BlZWNoVm9pY2VJRCA7CiMgNzI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRo
ZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJp
bmdSZWYga1NwZWVjaENvbW1hbmRQcmVmaXggOwojIDczNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50
aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3Ry
aW5nUmVmIGtTcGVlY2hDb21tYW5kU3VmZml4IDsKIyA3NDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3lu
dGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0
cmluZ1JlZiBrU3BlZWNoRGljdGlvbmFyeUxvY2FsZUlkZW50aWZpZXIgOwojIDc1NSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgi
IDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hEaWN0aW9uYXJ5TW9kaWZpY2F0aW9uRGF0ZSA7
CiMgNzY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVl
Y2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaERpY3Rpb25hcnlQcm9u
dW5jaWF0aW9ucyA7CiMgNzczICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsv
SGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaERp
Y3Rpb25hcnlBYmJyZXZpYXRpb25zIDsKIyA3ODIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lz
LmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBDRlN0cmluZ1Jl
ZiBrU3BlZWNoRGljdGlvbmFyeUVudHJ5U3BlbGxpbmcgOwojIDc5MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVl
Y2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJu
IENGU3RyaW5nUmVmIGtTcGVlY2hEaWN0aW9uYXJ5RW50cnlQaG9uZW1lcyA7CiMgODAxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMu
aCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYga1NwZWVjaEVycm9yQ2FsbGJhY2tTcG9rZW5TdHJpbmcg
OwojIDgxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3Bl
ZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIENGU3RyaW5nUmVmIGtTcGVlY2hFcnJvckNhbGxiYWNr
Q2hhcmFjdGVyT2Zmc2V0IDsKCnR5cGVkZWYgdm9pZCAoICogU3BlZWNoVGV4dERvbmVQcm9jUHRy
KShTcGVlY2hDaGFubmVsIGNoYW4sIFNSZWZDb24gcmVmQ29uLCBjb25zdCB2b2lkICoqbmV4dEJ1
ZiwgdW5zaWduZWQgbG9uZyAqYnl0ZUxlbiwgU0ludDMyICpjb250cm9sRmxhZ3MpOwp0eXBlZGVm
IHZvaWQgKCAqIFNwZWVjaERvbmVQcm9jUHRyKShTcGVlY2hDaGFubmVsIGNoYW4sIFNSZWZDb24g
cmVmQ29uKTsKdHlwZWRlZiB2b2lkICggKiBTcGVlY2hTeW5jUHJvY1B0cikoU3BlZWNoQ2hhbm5l
bCBjaGFuLCBTUmVmQ29uIHJlZkNvbiwgT1NUeXBlIHN5bmNNZXNzYWdlKTsKdHlwZWRlZiB2b2lk
ICggKiBTcGVlY2hFcnJvclByb2NQdHIpKFNwZWVjaENoYW5uZWwgY2hhbiwgU1JlZkNvbiByZWZD
b24sIE9TRXJyIHRoZUVycm9yLCBsb25nIGJ5dGVQb3MpOwp0eXBlZGVmIHZvaWQgKCAqIFNwZWVj
aFBob25lbWVQcm9jUHRyKShTcGVlY2hDaGFubmVsIGNoYW4sIFNSZWZDb24gcmVmQ29uLCBTSW50
MTYgcGhvbmVtZU9wY29kZSk7CnR5cGVkZWYgdm9pZCAoICogU3BlZWNoV29yZFByb2NQdHIpKFNw
ZWVjaENoYW5uZWwgY2hhbiwgU1JlZkNvbiByZWZDb24sIHVuc2lnbmVkIGxvbmcgd29yZFBvcywg
VUludDE2IHdvcmRMZW4pOwp0eXBlZGVmIFNwZWVjaFRleHREb25lUHJvY1B0ciBTcGVlY2hUZXh0
RG9uZVVQUDsKdHlwZWRlZiBTcGVlY2hEb25lUHJvY1B0ciBTcGVlY2hEb25lVVBQOwp0eXBlZGVm
IFNwZWVjaFN5bmNQcm9jUHRyIFNwZWVjaFN5bmNVUFA7CnR5cGVkZWYgU3BlZWNoRXJyb3JQcm9j
UHRyIFNwZWVjaEVycm9yVVBQOwp0eXBlZGVmIFNwZWVjaFBob25lbWVQcm9jUHRyIFNwZWVjaFBo
b25lbWVVUFA7CnR5cGVkZWYgU3BlZWNoV29yZFByb2NQdHIgU3BlZWNoV29yZFVQUDsKIyA4MzIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRo
ZXNpcy5oIiAzCmV4dGVybiBTcGVlY2hUZXh0RG9uZVVQUApOZXdTcGVlY2hUZXh0RG9uZVVQUChT
cGVlY2hUZXh0RG9uZVByb2NQdHIgdXNlclJvdXRpbmUpIDsKIyA4NDMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3Bl
ZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVy
biBTcGVlY2hEb25lVVBQCk5ld1NwZWVjaERvbmVVUFAoU3BlZWNoRG9uZVByb2NQdHIgdXNlclJv
dXRpbmUpIDsKIyA4NTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFk
ZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBTcGVlY2hTeW5jVVBQCk5ld1NwZWVjaFN5
bmNVUFAoU3BlZWNoU3luY1Byb2NQdHIgdXNlclJvdXRpbmUpIDsKIyA4NjUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
U3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4
dGVybiBTcGVlY2hFcnJvclVQUApOZXdTcGVlY2hFcnJvclVQUChTcGVlY2hFcnJvclByb2NQdHIg
dXNlclJvdXRpbmUpIDsKIyA4NzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29y
ay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBTcGVlY2hQaG9uZW1lVVBQCk5l
d1NwZWVjaFBob25lbWVVUFAoU3BlZWNoUGhvbmVtZVByb2NQdHIgdXNlclJvdXRpbmUpIDsKIyA4
ODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5
bnRoZXNpcy5oIiAzCmV4dGVybiBTcGVlY2hXb3JkVVBQCk5ld1NwZWVjaFdvcmRVUFAoU3BlZWNo
V29yZFByb2NQdHIgdXNlclJvdXRpbmUpIDsKIyA4OTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhl
c2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiB2b2lkCkRp
c3Bvc2VTcGVlY2hUZXh0RG9uZVVQUChTcGVlY2hUZXh0RG9uZVVQUCB1c2VyVVBQKSA7CiMgOTA5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50
aGVzaXMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlU3BlZWNoRG9uZVVQUChTcGVlY2hEb25lVVBQ
IHVzZXJVUFApIDsKIyA5MjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9I
ZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VTcGVlY2hTeW5j
VVBQKFNwZWVjaFN5bmNVUFAgdXNlclVQUCkgOwojIDkzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50
aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIHZvaWQK
RGlzcG9zZVNwZWVjaEVycm9yVVBQKFNwZWVjaEVycm9yVVBQIHVzZXJVUFApIDsKIyA5NDIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNp
cy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VTcGVlY2hQaG9uZW1lVVBQKFNwZWVjaFBob25lbWVV
UFAgdXNlclVQUCkgOwojIDk1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3Jr
L0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVNwZWVjaFdv
cmRVUFAoU3BlZWNoV29yZFVQUCB1c2VyVVBQKSA7CiMgOTY0ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5
bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gdm9p
ZApJbnZva2VTcGVlY2hUZXh0RG9uZVVQUCgKICBTcGVlY2hDaGFubmVsIGNoYW4sCiAgU1JlZkNv
biByZWZDb24sCiAgY29uc3Qgdm9pZCAqKiBuZXh0QnVmLAogIHVuc2lnbmVkIGxvbmcgKiBieXRl
TGVuLAogIFNJbnQzMiAqIGNvbnRyb2xGbGFncywKICBTcGVlY2hUZXh0RG9uZVVQUCB1c2VyVVBQ
KSA7CiMgOTgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9T
cGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gdm9pZApJbnZva2VTcGVlY2hEb25lVVBQKAogIFNw
ZWVjaENoYW5uZWwgY2hhbiwKICBTUmVmQ29uIHJlZkNvbiwKICBTcGVlY2hEb25lVVBQIHVzZXJV
UFApIDsKIyA5OTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJz
L1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiB2b2lkCkludm9rZVNwZWVjaFN5bmNVUFAoCiAg
U3BlZWNoQ2hhbm5lbCBjaGFuLAogIFNSZWZDb24gcmVmQ29uLAogIE9TVHlwZSBzeW5jTWVzc2Fn
ZSwKICBTcGVlY2hTeW5jVVBQIHVzZXJVUFApIDsKIyAxMDEwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5
bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gdm9p
ZApJbnZva2VTcGVlY2hFcnJvclVQUCgKICBTcGVlY2hDaGFubmVsIGNoYW4sCiAgU1JlZkNvbiBy
ZWZDb24sCiAgT1NFcnIgdGhlRXJyb3IsCiAgbG9uZyBieXRlUG9zLAogIFNwZWVjaEVycm9yVVBQ
IHVzZXJVUFApIDsKIyAxMDI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsv
SGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gdm9pZApJbnZva2VTcGVlY2hQaG9u
ZW1lVVBQKAogIFNwZWVjaENoYW5uZWwgY2hhbiwKICBTUmVmQ29uIHJlZkNvbiwKICBTSW50MTYg
cGhvbmVtZU9wY29kZSwKICBTcGVlY2hQaG9uZW1lVVBQIHVzZXJVUFApIDsKIyAxMDQxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMu
aCIgMwpleHRlcm4gdm9pZApJbnZva2VTcGVlY2hXb3JkVVBQKAogIFNwZWVjaENoYW5uZWwgY2hh
biwKICBTUmVmQ29uIHJlZkNvbiwKICB1bnNpZ25lZCBsb25nIHdvcmRQb3MsCiAgVUludDE2IHdv
cmRMZW4sCiAgU3BlZWNoV29yZFVQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgU3BlZWNoVGV4
dERvbmVVUFAgTmV3U3BlZWNoVGV4dERvbmVVUFAoU3BlZWNoVGV4dERvbmVQcm9jUHRyIHVzZXJS
b3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIFNwZWVjaERvbmVVUFAg
TmV3U3BlZWNoRG9uZVVQUChTcGVlY2hEb25lUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4g
dXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBTcGVlY2hTeW5jVVBQIE5ld1NwZWVjaFN5bmNVUFAo
U3BlZWNoU3luY1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAg
ICBpbmxpbmUgU3BlZWNoRXJyb3JVUFAgTmV3U3BlZWNoRXJyb3JVUFAoU3BlZWNoRXJyb3JQcm9j
UHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIFNwZWVj
aFBob25lbWVVUFAgTmV3U3BlZWNoUGhvbmVtZVVQUChTcGVlY2hQaG9uZW1lUHJvY1B0ciB1c2Vy
Um91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBTcGVlY2hXb3JkVVBQ
IE5ld1NwZWVjaFdvcmRVUFAoU3BlZWNoV29yZFByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJu
IHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlU3BlZWNoVGV4dERvbmVVUFAo
U3BlZWNoVGV4dERvbmVVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVNwZWVjaERvbmVV
UFAoU3BlZWNoRG9uZVVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlU3BlZWNoU3luY1VQ
UChTcGVlY2hTeW5jVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VTcGVlY2hFcnJvclVQ
UChTcGVlY2hFcnJvclVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlU3BlZWNoUGhvbmVt
ZVVQUChTcGVlY2hQaG9uZW1lVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VTcGVlY2hX
b3JkVVBQKFNwZWVjaFdvcmRVUFApIHsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlU3BlZWNoVGV4
dERvbmVVUFAoU3BlZWNoQ2hhbm5lbCBjaGFuLCBTUmVmQ29uIHJlZkNvbiwgY29uc3Qgdm9pZCAq
KiBuZXh0QnVmLCB1bnNpZ25lZCBsb25nICogYnl0ZUxlbiwgU0ludDMyICogY29udHJvbEZsYWdz
LCBTcGVlY2hUZXh0RG9uZVVQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCkoY2hhbiwgcmVmQ29uLCBu
ZXh0QnVmLCBieXRlTGVuLCBjb250cm9sRmxhZ3MpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VT
cGVlY2hEb25lVVBQKFNwZWVjaENoYW5uZWwgY2hhbiwgU1JlZkNvbiByZWZDb24sIFNwZWVjaERv
bmVVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKGNoYW4sIHJlZkNvbik7IH0KICAgIGlubGluZSB2
b2lkIEludm9rZVNwZWVjaFN5bmNVUFAoU3BlZWNoQ2hhbm5lbCBjaGFuLCBTUmVmQ29uIHJlZkNv
biwgT1NUeXBlIHN5bmNNZXNzYWdlLCBTcGVlY2hTeW5jVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQ
KShjaGFuLCByZWZDb24sIHN5bmNNZXNzYWdlKTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlU3Bl
ZWNoRXJyb3JVUFAoU3BlZWNoQ2hhbm5lbCBjaGFuLCBTUmVmQ29uIHJlZkNvbiwgT1NFcnIgdGhl
RXJyb3IsIGxvbmcgYnl0ZVBvcywgU3BlZWNoRXJyb3JVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFAp
KGNoYW4sIHJlZkNvbiwgdGhlRXJyb3IsIGJ5dGVQb3MpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZv
a2VTcGVlY2hQaG9uZW1lVVBQKFNwZWVjaENoYW5uZWwgY2hhbiwgU1JlZkNvbiByZWZDb24sIFNJ
bnQxNiBwaG9uZW1lT3Bjb2RlLCBTcGVlY2hQaG9uZW1lVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQ
KShjaGFuLCByZWZDb24sIHBob25lbWVPcGNvZGUpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VT
cGVlY2hXb3JkVVBQKFNwZWVjaENoYW5uZWwgY2hhbiwgU1JlZkNvbiByZWZDb24sIHVuc2lnbmVk
IGxvbmcgd29yZFBvcywgVUludDE2IHdvcmRMZW4sIFNwZWVjaFdvcmRVUFAgdXNlclVQUCkgeyAo
KnVzZXJVUFApKGNoYW4sIHJlZkNvbiwgd29yZFBvcywgd29yZExlbik7IH0KIyAxMDkxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMu
aCIgMwp0eXBlZGVmIHZvaWQgKCAqIFNwZWVjaEVycm9yQ0ZQcm9jUHRyKShTcGVlY2hDaGFubmVs
IGNoYW4sIFNSZWZDb24gcmVmQ29uLCBDRkVycm9yUmVmIHRoZUVycm9yKTsKdHlwZWRlZiB2b2lk
ICggKiBTcGVlY2hXb3JkQ0ZQcm9jUHRyKShTcGVlY2hDaGFubmVsIGNoYW4sIFNSZWZDb24gcmVm
Q29uLCBDRlN0cmluZ1JlZiBhU3RyaW5nLCBDRlJhbmdlIHdvcmRSYW5nZSk7CiMgMTEwMiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lz
LmgiIDMKZXh0ZXJuIE51bVZlcnNpb24KU3BlZWNoTWFuYWdlclZlcnNpb24odm9pZCkgOwojIDEx
MTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5
bnRoZXNpcy5oIiAzCmV4dGVybiBPU0VycgpNYWtlVm9pY2VTcGVjKAogIE9TVHlwZSBjcmVhdG9y
LAogIE9TVHlwZSBpZCwKICBWb2ljZVNwZWMgKiB2b2ljZSkgOwojIDExMjkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
U3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4
dGVybiBPU0VycgpDb3VudFZvaWNlcyhTSW50MTYgKiBudW1Wb2ljZXMpIDsKIyAxMTQxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMu
aCIgMwpleHRlcm4gT1NFcnIKR2V0SW5kVm9pY2UoCiAgU0ludDE2IGluZGV4LAogIFZvaWNlU3Bl
YyAqIHZvaWNlKSA7CiMgMTE1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3Jr
L0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIE9TRXJyCkdldFZvaWNlRGVzY3Jp
cHRpb24oCiAgY29uc3QgVm9pY2VTcGVjICogdm9pY2UsCiAgVm9pY2VEZXNjcmlwdGlvbiAqIGlu
Zm8sCiAgbG9uZyBpbmZvTGVuZ3RoKSA7CiMgMTE3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVz
aXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIE9TRXJyCkdl
dFZvaWNlSW5mbygKICBjb25zdCBWb2ljZVNwZWMgKiB2b2ljZSwKICBPU1R5cGUgc2VsZWN0b3Is
CiAgdm9pZCAqIHZvaWNlSW5mbykgOwojIDExODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lz
LmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBPU0VycgpOZXdT
cGVlY2hDaGFubmVsKAogIFZvaWNlU3BlYyAqIHZvaWNlLAogIFNwZWVjaENoYW5uZWwgKiBjaGFu
KSA7CiMgMTE5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMv
U3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIE9TRXJyCkRpc3Bvc2VTcGVlY2hDaGFubmVsKFNw
ZWVjaENoYW5uZWwgY2hhbikgOwojIDEyMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZy
YW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBPU0VycgpTcGVha1N0
cmluZyhDb25zdFN0cjI1NVBhcmFtIHRleHRUb0JlU3Bva2VuKSA7CiMgMTIyMyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMK
ZXh0ZXJuIE9TRXJyClNwZWFrVGV4dCgKICBTcGVlY2hDaGFubmVsIGNoYW4sCiAgY29uc3Qgdm9p
ZCAqIHRleHRCdWYsCiAgdW5zaWduZWQgbG9uZyB0ZXh0Qnl0ZXMpIDsKIyAxMjM4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIg
MwpleHRlcm4gT1NFcnIKU3BlYWtCdWZmZXIoCiAgU3BlZWNoQ2hhbm5lbCBjaGFuLAogIGNvbnN0
IHZvaWQgKiB0ZXh0QnVmLAogIHVuc2lnbmVkIGxvbmcgdGV4dEJ5dGVzLAogIFNJbnQzMiBjb250
cm9sRmxhZ3MpIDsKIyAxMjU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsv
SGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gT1NFcnIKU3RvcFNwZWVjaChTcGVl
Y2hDaGFubmVsIGNoYW4pIDsKIyAxMjY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFt
ZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gT1NFcnIKU3RvcFNwZWVj
aEF0KAogIFNwZWVjaENoYW5uZWwgY2hhbiwKICBTSW50MzIgd2hlcmVUb1N0b3ApIDsKIyAxMjgw
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50
aGVzaXMuaCIgMwpleHRlcm4gT1NFcnIKUGF1c2VTcGVlY2hBdCgKICBTcGVlY2hDaGFubmVsIGNo
YW4sCiAgU0ludDMyIHdoZXJlVG9QYXVzZSkgOwojIDEyOTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3lu
dGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBPU0Vy
cgpDb250aW51ZVNwZWVjaChTcGVlY2hDaGFubmVsIGNoYW4pIDsKIyAxMzA2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpl
eHRlcm4gU0ludDE2ClNwZWVjaEJ1c3kodm9pZCkgOwojIDEzMTggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNo
U3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBT
SW50MTYKU3BlZWNoQnVzeVN5c3RlbVdpZGUodm9pZCkgOwojIDEzMzAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3Bl
ZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVy
biBPU0VycgpTZXRTcGVlY2hSYXRlKAogIFNwZWVjaENoYW5uZWwgY2hhbiwKICBGaXhlZCByYXRl
KSA7CiMgMTM0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMv
U3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIE9TRXJyCkdldFNwZWVjaFJhdGUoCiAgU3BlZWNo
Q2hhbm5lbCBjaGFuLAogIEZpeGVkICogcmF0ZSkgOwojIDEzNTggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNo
U3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBP
U0VycgpTZXRTcGVlY2hQaXRjaCgKICBTcGVlY2hDaGFubmVsIGNoYW4sCiAgRml4ZWQgcGl0Y2gp
IDsKIyAxMzcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9T
cGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gT1NFcnIKR2V0U3BlZWNoUGl0Y2goCiAgU3BlZWNo
Q2hhbm5lbCBjaGFuLAogIEZpeGVkICogcGl0Y2gpIDsKIyAxMzg2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVj
aFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4g
T1NFcnIKU2V0U3BlZWNoSW5mbygKICBTcGVlY2hDaGFubmVsIGNoYW4sCiAgT1NUeXBlIHNlbGVj
dG9yLAogIGNvbnN0IHZvaWQgKiBzcGVlY2hJbmZvKSA7CiMgMTQwMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVl
Y2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJu
IE9TRXJyCkdldFNwZWVjaEluZm8oCiAgU3BlZWNoQ2hhbm5lbCBjaGFuLAogIE9TVHlwZSBzZWxl
Y3RvciwKICB2b2lkICogc3BlZWNoSW5mbykgOwojIDE0MTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3lu
dGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBPU0Vy
cgpUZXh0VG9QaG9uZW1lcygKICBTcGVlY2hDaGFubmVsIGNoYW4sCiAgY29uc3Qgdm9pZCAqIHRl
eHRCdWYsCiAgdW5zaWduZWQgbG9uZyB0ZXh0Qnl0ZXMsCiAgSGFuZGxlIHBob25lbWVCdWYsCiAg
bG9uZyAqIHBob25lbWVCeXRlcykgOwojIDE0MzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lz
LmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFN5bnRoZXNpcy5oIiAzCmV4dGVybiBPU0VycgpVc2VE
aWN0aW9uYXJ5KAogIFNwZWVjaENoYW5uZWwgY2hhbiwKICBIYW5kbGUgZGljdGlvbmFyeSkgOwoj
IDE0NDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9IZWFkZXJzL1NwZWVj
aFN5bnRoZXNpcy5oIiAzCmV4dGVybiBPU0VycgpTcGVha0NGU3RyaW5nKAogIFNwZWVjaENoYW5u
ZWwgY2hhbiwKICBDRlN0cmluZ1JlZiBhU3RyaW5nLAogIENGRGljdGlvbmFyeVJlZiBvcHRpb25z
KSA7CiMgMTQ2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMv
U3BlZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIE9TRXJyClVzZVNwZWVjaERpY3Rpb25hcnkoCiAg
U3BlZWNoQ2hhbm5lbCBjaGFuLAogIENGRGljdGlvbmFyeVJlZiBzcGVlY2hEaWN0aW9uYXJ5KSA7
CiMgMTQ3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3Bl
ZWNoU3ludGhlc2lzLmgiIDMKZXh0ZXJuIE9TRXJyCkNvcHlQaG9uZW1lc0Zyb21UZXh0KAogIFNw
ZWVjaENoYW5uZWwgY2hhbiwKICBDRlN0cmluZ1JlZiB0ZXh0LAogIENGU3RyaW5nUmVmICogcGhv
bmVtZXMpIDsKIyAxNDk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdvcmsvSGVh
ZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gT1NFcnIKQ29weVNwZWVjaFByb3BlcnR5
KAogIFNwZWVjaENoYW5uZWwgY2hhbiwKICBDRlN0cmluZ1JlZiBwcm9wZXJ0eSwKICBDRlR5cGVS
ZWYgKiBvYmplY3QpIDsKIyAxNTExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFtZXdv
cmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gT1NFcnIKU2V0U3BlZWNoUHJv
cGVydHkoCiAgU3BlZWNoQ2hhbm5lbCBjaGFuLAogIENGU3RyaW5nUmVmIHByb3BlcnR5LAogIENG
VHlwZVJlZiBvYmplY3QpIDsKIyAxNTI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFN5bnRoZXNpcy5mcmFt
ZXdvcmsvSGVhZGVycy9TcGVlY2hTeW50aGVzaXMuaCIgMwpleHRlcm4gT1NFcnIKU3BlZWNoU3lu
dGhlc2lzUmVnaXN0ZXJNb2R1bGVVUkwoQ0ZVUkxSZWYgdXJsKSA7CiMgMTUzOSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoU3ludGhlc2lzLmgiIDMK
ZXh0ZXJuIE9TRXJyClNwZWVjaFN5bnRoZXNpc1VucmVnaXN0ZXJNb2R1bGVVUkwoQ0ZVUkxSZWYg
dXJsKSA7CgoKCgojcHJhZ21hIHBhY2socG9wKQoKCn0KIyA1MSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvSGVhZGVycy9BcHBsaWNhdGlv
blNlcnZpY2VzLmgiIDIgMwoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVh
ZGVycy9Db3JlVGV4dC5oIiAxIDMKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsv
SGVhZGVycy9Db3JlVGV4dC5oIiAzCiNkZWZpbmUgX19DT1JFVEVYVF9fIAoKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAxIDMKIyAxOCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwojZGVmaW5lIF9fQ1RG
T05UX18gCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250
RGVzY3JpcHRvci5oIiAxIDMKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVh
ZGVycy9DVEZvbnREZXNjcmlwdG9yLmgiIDMKI2RlZmluZSBfX0NURk9OVERFU0NSSVBUT1JfXyAK
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnRUcmFpdHMu
aCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250
VHJhaXRzLmgiIDMKI2RlZmluZSBfX0NURk9OVFRSQUlUU19fIAoKCgoKCmV4dGVybiAiQyIgewoK
CgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZvbnRTeW1ib2xpY1RyYWl0IDsKCgoK
CgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9udFdlaWdodFRyYWl0IDsKCgoKCgpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9udFdpZHRoVHJhaXQgOwoKCgoKCmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrQ1RGb250U2xhbnRUcmFpdCA7CgoKCgoKCmVudW0gewogICAga0NURm9u
dENsYXNzTWFza1NoaWZ0ID0gMjgKfTsKIyA2MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVEZvbnRUcmFpdHMuaCIgMwplbnVtIHsKICAgIGtDVEZvbnRJdGFsaWNUcmFp
dCA9ICgxIDw8IDApLAogICAga0NURm9udEJvbGRUcmFpdCA9ICgxIDw8IDEpLAogICAga0NURm9u
dEV4cGFuZGVkVHJhaXQgPSAoMSA8PCA1KSwKICAgIGtDVEZvbnRDb25kZW5zZWRUcmFpdCA9ICgx
IDw8IDYpLAogICAga0NURm9udE1vbm9TcGFjZVRyYWl0ID0gKDEgPDwgMTApLAogICAga0NURm9u
dFZlcnRpY2FsVHJhaXQgPSAoMSA8PCAxMSksCiAgICBrQ1RGb250VUlPcHRpbWl6ZWRUcmFpdCA9
ICgxIDw8IDEyKSwKCiAgICBrQ1RGb250Q2xhc3NNYXNrVHJhaXQgPSAoMTUgPDwga0NURm9udENs
YXNzTWFza1NoaWZ0KQp9Owp0eXBlZGVmIHVpbnQzMl90IENURm9udFN5bWJvbGljVHJhaXRzOwoK
CgoKCgplbnVtIHsKICAgIGtDVEZvbnRVbmtub3duQ2xhc3MgPSAoMCA8PCBrQ1RGb250Q2xhc3NN
YXNrU2hpZnQpLAogICAga0NURm9udE9sZFN0eWxlU2VyaWZzQ2xhc3MgPSAoMSA8PCBrQ1RGb250
Q2xhc3NNYXNrU2hpZnQpLAogICAga0NURm9udFRyYW5zaXRpb25hbFNlcmlmc0NsYXNzID0gKDIg
PDwga0NURm9udENsYXNzTWFza1NoaWZ0KSwKICAgIGtDVEZvbnRNb2Rlcm5TZXJpZnNDbGFzcyA9
ICgzIDw8IGtDVEZvbnRDbGFzc01hc2tTaGlmdCksCiAgICBrQ1RGb250Q2xhcmVuZG9uU2VyaWZz
Q2xhc3MgPSAoNCA8PCBrQ1RGb250Q2xhc3NNYXNrU2hpZnQpLAogICAga0NURm9udFNsYWJTZXJp
ZnNDbGFzcyA9ICg1IDw8IGtDVEZvbnRDbGFzc01hc2tTaGlmdCksCiAgICBrQ1RGb250RnJlZWZv
cm1TZXJpZnNDbGFzcyA9ICg3IDw8IGtDVEZvbnRDbGFzc01hc2tTaGlmdCksCiAgICBrQ1RGb250
U2Fuc1NlcmlmQ2xhc3MgPSAoOCA8PCBrQ1RGb250Q2xhc3NNYXNrU2hpZnQpLAogICAga0NURm9u
dE9ybmFtZW50YWxzQ2xhc3MgPSAoOSA8PCBrQ1RGb250Q2xhc3NNYXNrU2hpZnQpLAogICAga0NU
Rm9udFNjcmlwdHNDbGFzcyA9ICgxMCA8PCBrQ1RGb250Q2xhc3NNYXNrU2hpZnQpLAogICAga0NU
Rm9udFN5bWJvbGljQ2xhc3MgPSAoMTIgPDwga0NURm9udENsYXNzTWFza1NoaWZ0KQp9Owp0eXBl
ZGVmIHVpbnQzMl90IENURm9udFN0eWxpc3RpY0NsYXNzOwoKCn0KIyAyMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnREZXNjcmlwdG9yLmgiIDIgMwojIDMwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udERlc2NyaXB0b3IuaCIg
MwpleHRlcm4gIkMiIHsKIyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVy
cy9DVEZvbnREZXNjcmlwdG9yLmgiIDMKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DVEZvbnREZXNj
cmlwdG9yICogQ1RGb250RGVzY3JpcHRvclJlZjsKCgoKCgoKCkNGVHlwZUlEIENURm9udERlc2Ny
aXB0b3JHZXRUeXBlSUQoIHZvaWQgKSA7CiMgNjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3
b3JrL0hlYWRlcnMvQ1RGb250RGVzY3JpcHRvci5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ1RGb250VVJMQXR0cmlidXRlIDsKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NU
Rm9udE5hbWVBdHRyaWJ1dGUgOwoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250
RGlzcGxheU5hbWVBdHRyaWJ1dGUgOwoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RG
b250RmFtaWx5TmFtZUF0dHJpYnV0ZSA7CgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtD
VEZvbnRTdHlsZU5hbWVBdHRyaWJ1dGUgOwoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q1RGb250VHJhaXRzQXR0cmlidXRlIDsKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NU
Rm9udFZhcmlhdGlvbkF0dHJpYnV0ZSA7CgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtD
VEZvbnRTaXplQXR0cmlidXRlIDsKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9u
dE1hdHJpeEF0dHJpYnV0ZSA7CgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZvbnRD
YXNjYWRlTGlzdEF0dHJpYnV0ZSA7CgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZv
bnRDaGFyYWN0ZXJTZXRBdHRyaWJ1dGUgOwoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q1RGb250TGFuZ3VhZ2VzQXR0cmlidXRlIDsKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0NURm9udEJhc2VsaW5lQWRqdXN0QXR0cmlidXRlIDsKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NURm9udE1hY2ludG9zaEVuY29kaW5nc0F0dHJpYnV0ZSA7CgoKCgoKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtDVEZvbnRGZWF0dXJlc0F0dHJpYnV0ZSA7CgoKCgoKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtDVEZvbnRGZWF0dXJlU2V0dGluZ3NBdHRyaWJ1dGUgOwoKCgoKCmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250Rml4ZWRBZHZhbmNlQXR0cmlidXRlIDsKCgoK
CgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9udE9yaWVudGF0aW9uQXR0cmlidXRlIDsK
CgoKCgplbnVtIHsKICAgIGtDVEZvbnREZWZhdWx0T3JpZW50YXRpb24gPSAwLAogICAga0NURm9u
dEhvcml6b250YWxPcmllbnRhdGlvbiA9IDEsCiAgICBrQ1RGb250VmVydGljYWxPcmllbnRhdGlv
biA9IDIKfTsKdHlwZWRlZiB1aW50MzJfdCBDVEZvbnRPcmllbnRhdGlvbjsKCgoKCgoKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDVEZvbnRGb3JtYXRBdHRyaWJ1dGUgOwojIDE5NyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnREZXNjcmlwdG9yLmgiIDMKZW51
bSB7CiAgICBrQ1RGb250Rm9ybWF0VW5yZWNvZ25pemVkID0gMCwKICAgIGtDVEZvbnRGb3JtYXRP
cGVuVHlwZVBvc3RTY3JpcHQgPSAxLAogICAga0NURm9udEZvcm1hdE9wZW5UeXBlVHJ1ZVR5cGUg
PSAyLAogICAga0NURm9udEZvcm1hdFRydWVUeXBlID0gMywKICAgIGtDVEZvbnRGb3JtYXRQb3N0
U2NyaXB0ID0gNCwKICAgIGtDVEZvbnRGb3JtYXRCaXRtYXAgPSA1Cn07CnR5cGVkZWYgdWludDMy
X3QgQ1RGb250Rm9ybWF0OwoKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9udFJl
Z2lzdHJhdGlvblNjb3BlQXR0cmlidXRlIDsKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0NURm9udFByaW9yaXR5QXR0cmlidXRlIDsKIyAyMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJh
bWV3b3JrL0hlYWRlcnMvQ1RGb250RGVzY3JpcHRvci5oIiAzCmVudW0gewogICAga0NURm9udFBy
aW9yaXR5U3lzdGVtID0gMTAwMDAsCiAgICBrQ1RGb250UHJpb3JpdHlOZXR3b3JrID0gMjAwMDAs
CiAgICBrQ1RGb250UHJpb3JpdHlDb21wdXRlciA9IDMwMDAwLAogICAga0NURm9udFByaW9yaXR5
VXNlciA9IDQwMDAwLAogICAga0NURm9udFByaW9yaXR5RHluYW1pYyA9IDUwMDAwLAogICAga0NU
Rm9udFByaW9yaXR5UHJvY2VzcyA9IDYwMDAwCn07CnR5cGVkZWYgdWludDMyX3QgQ1RGb250UHJp
b3JpdHk7CgoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250RW5hYmxlZEF0dHJp
YnV0ZSA7CiMgMjY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9u
dERlc2NyaXB0b3IuaCIgMwpDVEZvbnREZXNjcmlwdG9yUmVmIENURm9udERlc2NyaXB0b3JDcmVh
dGVXaXRoTmFtZUFuZFNpemUoCiAgICBDRlN0cmluZ1JlZiBuYW1lLAogICAgQ0dGbG9hdCBzaXpl
ICkgOwojIDI4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnRE
ZXNjcmlwdG9yLmgiIDMKQ1RGb250RGVzY3JpcHRvclJlZiBDVEZvbnREZXNjcmlwdG9yQ3JlYXRl
V2l0aEF0dHJpYnV0ZXMoCiAgICBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyApIDsKIyAyOTUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250RGVzY3JpcHRvci5o
IiAzCkNURm9udERlc2NyaXB0b3JSZWYgQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoQXR0
cmlidXRlcygKICAgIENURm9udERlc2NyaXB0b3JSZWYgb3JpZ2luYWwsCiAgICBDRkRpY3Rpb25h
cnlSZWYgYXR0cmlidXRlcyApIDsKIyAzMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3Jr
L0hlYWRlcnMvQ1RGb250RGVzY3JpcHRvci5oIiAzCkNURm9udERlc2NyaXB0b3JSZWYgQ1RGb250
RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoVmFyaWF0aW9uKAogICAgQ1RGb250RGVzY3JpcHRvclJl
ZiBvcmlnaW5hbCwKICAgIENGTnVtYmVyUmVmIHZhcmlhdGlvbklkZW50aWZpZXIsCiAgICBDR0Zs
b2F0IHZhcmlhdGlvblZhbHVlICkgOwojIDMzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVEZvbnREZXNjcmlwdG9yLmgiIDMKQ1RGb250RGVzY3JpcHRvclJlZiBDVEZv
bnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhGZWF0dXJlKAogICAgQ1RGb250RGVzY3JpcHRvclJl
ZiBvcmlnaW5hbCwKICAgIENGTnVtYmVyUmVmIGZlYXR1cmVUeXBlSWRlbnRpZmllciwKICAgIENG
TnVtYmVyUmVmIGZlYXR1cmVTZWxlY3RvcklkZW50aWZpZXIgKSA7CiMgMzUzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udERlc2NyaXB0b3IuaCIgMwpDRkFycmF5
UmVmIENURm9udERlc2NyaXB0b3JDcmVhdGVNYXRjaGluZ0ZvbnREZXNjcmlwdG9ycygKICAgIENU
Rm9udERlc2NyaXB0b3JSZWYgZGVzY3JpcHRvciwKICAgIENGU2V0UmVmIG1hbmRhdG9yeUF0dHJp
YnV0ZXMgKSA7CiMgMzY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NU
Rm9udERlc2NyaXB0b3IuaCIgMwpDVEZvbnREZXNjcmlwdG9yUmVmIENURm9udERlc2NyaXB0b3JD
cmVhdGVNYXRjaGluZ0ZvbnREZXNjcmlwdG9yKAogICAgQ1RGb250RGVzY3JpcHRvclJlZiBkZXNj
cmlwdG9yLAogICAgQ0ZTZXRSZWYgbWFuZGF0b3J5QXR0cmlidXRlcyApIDsKIyAzODYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250RGVzY3JpcHRvci5oIiAzCkNG
RGljdGlvbmFyeVJlZiBDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZXMoCiAgICBDVEZvbnRE
ZXNjcmlwdG9yUmVmIGRlc2NyaXB0b3IgKSA7CiMgNDAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZy
YW1ld29yay9IZWFkZXJzL0NURm9udERlc2NyaXB0b3IuaCIgMwpDRlR5cGVSZWYgQ1RGb250RGVz
Y3JpcHRvckNvcHlBdHRyaWJ1dGUoCiAgICBDVEZvbnREZXNjcmlwdG9yUmVmIGRlc2NyaXB0b3Is
CiAgICBDRlN0cmluZ1JlZiBhdHRyaWJ1dGUgKSA7CiMgNDIyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0
LmZyYW1ld29yay9IZWFkZXJzL0NURm9udERlc2NyaXB0b3IuaCIgMwpDRlR5cGVSZWYgQ1RGb250
RGVzY3JpcHRvckNvcHlMb2NhbGl6ZWRBdHRyaWJ1dGUoCiAgICBDVEZvbnREZXNjcmlwdG9yUmVm
IGRlc2NyaXB0b3IsCiAgICBDRlN0cmluZ1JlZiBhdHRyaWJ1dGUsCiAgICBDRlN0cmluZ1JlZiAq
bGFuZ3VhZ2UgKSA7CgoKfQojIDIxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFk
ZXJzL0NURm9udC5oIiAyIDMKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL0hlYWRlcnMv
QVRTVHlwZXMuaCIgMSAzCiMgMjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRl
cnMvQ1RGb250LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9I
ZWFkZXJzL0NHRm9udC5oIiAxIDMKIyAyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsv
SGVhZGVycy9DVEZvbnQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3
b3JrL0hlYWRlcnMvQ0dQYXRoLmgiIDEgMwojIDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1l
d29yay9IZWFkZXJzL0NURm9udC5oIiAyIDMKCgpleHRlcm4gIkMiIHsKIyAzOSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwp0eXBlZGVmIGNvbnN0IHN0
cnVjdCBfX0NURm9udCAqIENURm9udFJlZjsKCgoKCgoKQ0ZUeXBlSUQgQ1RGb250R2V0VHlwZUlE
KCB2b2lkICkgOwojIDU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NU
Rm9udC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250Q29weXJpZ2h0TmFtZUtl
eSA7CgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9udEZhbWlseU5hbWVLZXkgOwoK
CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZvbnRTdWJGYW1pbHlOYW1lS2V5IDsKCgoK
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250U3R5bGVOYW1lS2V5IDsKCgoKCgoKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZvbnRVbmlxdWVOYW1lS2V5IDsKCgoKCmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrQ1RGb250RnVsbE5hbWVLZXkgOwoKCgoKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtDVEZvbnRWZXJzaW9uTmFtZUtleSA7CgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NURm9udFBvc3RTY3JpcHROYW1lS2V5IDsKCgoKCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ1RGb250VHJhZGVtYXJrTmFtZUtleSA7CgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga0NURm9udE1hbnVmYWN0dXJlck5hbWVLZXkgOwoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtDVEZvbnREZXNpZ25lck5hbWVLZXkgOwoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDVEZvbnREZXNjcmlwdGlvbk5hbWVLZXkgOwoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDVEZvbnRWZW5kb3JVUkxOYW1lS2V5IDsKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q1RGb250RGVzaWduZXJVUkxOYW1lS2V5IDsKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q1RGb250TGljZW5zZU5hbWVLZXkgOwoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZv
bnRMaWNlbnNlVVJMTmFtZUtleSA7CgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9u
dFNhbXBsZVRleHROYW1lS2V5IDsKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250
UG9zdFNjcmlwdENJRE5hbWVLZXkgOwojIDE2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDVEZvbnRSZWYgQ1RGb250Q3JlYXRlV2l0aE5hbWUoCiAg
ICBDRlN0cmluZ1JlZiBuYW1lLAogICAgQ0dGbG9hdCBzaXplLAogICAgY29uc3QgQ0dBZmZpbmVU
cmFuc2Zvcm0gKm1hdHJpeCApIDsKIyAxODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3Jr
L0hlYWRlcnMvQ1RGb250LmgiIDMKQ1RGb250UmVmIENURm9udENyZWF0ZVdpdGhGb250RGVzY3Jp
cHRvcigKICAgIENURm9udERlc2NyaXB0b3JSZWYgZGVzY3JpcHRvciwKICAgIENHRmxvYXQgc2l6
ZSwKICAgIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICptYXRyaXggKSA7CiMgMTk4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAzCmVudW0gewogICAga0NU
Rm9udE9wdGlvbnNEZWZhdWx0ID0gMCwKICAgIGtDVEZvbnRPcHRpb25zUHJldmVudEF1dG9BY3Rp
dmF0aW9uID0gMSA8PCAwLAogICAga0NURm9udE9wdGlvbnNQcmVmZXJTeXN0ZW1Gb250ID0gMSA8
PCAyLAp9Owp0eXBlZGVmIENGT3B0aW9uRmxhZ3MgQ1RGb250T3B0aW9uczsKIyAyMjQgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250LmgiIDMKQ1RGb250UmVmIENU
Rm9udENyZWF0ZVdpdGhOYW1lQW5kT3B0aW9ucygKICAgIENGU3RyaW5nUmVmIG5hbWUsCiAgICBD
R0Zsb2F0IHNpemUsCiAgICBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSAqbWF0cml4LAogICAgQ1RG
b250T3B0aW9ucyBvcHRpb25zICkgOwojIDI0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDVEZvbnRSZWYgQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNj
cmlwdG9yQW5kT3B0aW9ucygKICAgIENURm9udERlc2NyaXB0b3JSZWYgZGVzY3JpcHRvciwKICAg
IENHRmxvYXQgc2l6ZSwKICAgIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICptYXRyaXgsCiAgICBD
VEZvbnRPcHRpb25zIG9wdGlvbnMgKSA7CgoKCgoKCmVudW0gewogICAga0NURm9udE5vRm9udFR5
cGUgPSAodWludDMyX3QpLTEsCiAgICBrQ1RGb250VXNlckZvbnRUeXBlID0gMCwKICAgIGtDVEZv
bnRVc2VyRml4ZWRQaXRjaEZvbnRUeXBlID0gMSwKICAgIGtDVEZvbnRTeXN0ZW1Gb250VHlwZSA9
IDIsCiAgICBrQ1RGb250RW1waGFzaXplZFN5c3RlbUZvbnRUeXBlID0gMywKICAgIGtDVEZvbnRT
bWFsbFN5c3RlbUZvbnRUeXBlID0gNCwKICAgIGtDVEZvbnRTbWFsbEVtcGhhc2l6ZWRTeXN0ZW1G
b250VHlwZSA9IDUsCiAgICBrQ1RGb250TWluaVN5c3RlbUZvbnRUeXBlID0gNiwKICAgIGtDVEZv
bnRNaW5pRW1waGFzaXplZFN5c3RlbUZvbnRUeXBlID0gNywKICAgIGtDVEZvbnRWaWV3c0ZvbnRU
eXBlID0gOCwKICAgIGtDVEZvbnRBcHBsaWNhdGlvbkZvbnRUeXBlID0gOSwKICAgIGtDVEZvbnRM
YWJlbEZvbnRUeXBlID0gMTAsCiAgICBrQ1RGb250TWVudVRpdGxlRm9udFR5cGUgPSAxMSwKICAg
IGtDVEZvbnRNZW51SXRlbUZvbnRUeXBlID0gMTIsCiAgICBrQ1RGb250TWVudUl0ZW1NYXJrRm9u
dFR5cGUgPSAxMywKICAgIGtDVEZvbnRNZW51SXRlbUNtZEtleUZvbnRUeXBlID0gMTQsCiAgICBr
Q1RGb250V2luZG93VGl0bGVGb250VHlwZSA9IDE1LAogICAga0NURm9udFB1c2hCdXR0b25Gb250
VHlwZSA9IDE2LAogICAga0NURm9udFV0aWxpdHlXaW5kb3dUaXRsZUZvbnRUeXBlID0gMTcsCiAg
ICBrQ1RGb250QWxlcnRIZWFkZXJGb250VHlwZSA9IDE4LAogICAga0NURm9udFN5c3RlbURldGFp
bEZvbnRUeXBlID0gMTksCiAgICBrQ1RGb250RW1waGFzaXplZFN5c3RlbURldGFpbEZvbnRUeXBl
ID0gMjAsCiAgICBrQ1RGb250VG9vbGJhckZvbnRUeXBlID0gMjEsCiAgICBrQ1RGb250U21hbGxU
b29sYmFyRm9udFR5cGUgPSAyMiwKICAgIGtDVEZvbnRNZXNzYWdlRm9udFR5cGUgPSAyMywKICAg
IGtDVEZvbnRQYWxldHRlRm9udFR5cGUgPSAyNCwKICAgIGtDVEZvbnRUb29sVGlwRm9udFR5cGUg
PSAyNSwKICAgIGtDVEZvbnRDb250cm9sQ29udGVudEZvbnRUeXBlID0gMjYKfTsKdHlwZWRlZiB1
aW50MzJfdCBDVEZvbnRVSUZvbnRUeXBlOwojIDMwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFt
ZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDVEZvbnRSZWYgQ1RGb250Q3JlYXRlVUlGb250Rm9y
TGFuZ3VhZ2UoCiAgICBDVEZvbnRVSUZvbnRUeXBlIHVpVHlwZSwKICAgIENHRmxvYXQgc2l6ZSwK
ICAgIENGU3RyaW5nUmVmIGxhbmd1YWdlICkgOwojIDMzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5m
cmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDVEZvbnRSZWYgQ1RGb250Q3JlYXRlQ29weVdp
dGhBdHRyaWJ1dGVzKAogICAgQ1RGb250UmVmIGZvbnQsCiAgICBDR0Zsb2F0IHNpemUsCiAgICBj
b25zdCBDR0FmZmluZVRyYW5zZm9ybSAqbWF0cml4LAogICAgQ1RGb250RGVzY3JpcHRvclJlZiBh
dHRyaWJ1dGVzICkgOwojIDM1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVy
cy9DVEZvbnQuaCIgMwpDVEZvbnRSZWYgQ1RGb250Q3JlYXRlQ29weVdpdGhTeW1ib2xpY1RyYWl0
cygKICAgIENURm9udFJlZiBmb250LAogICAgQ0dGbG9hdCBzaXplLAogICAgY29uc3QgQ0dBZmZp
bmVUcmFuc2Zvcm0gKm1hdHJpeCwKICAgIENURm9udFN5bWJvbGljVHJhaXRzIHN5bVRyYWl0VmFs
dWUsCiAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyBzeW1UcmFpdE1hc2sgKSA7CiMgMzgzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAzCkNURm9udFJlZiBD
VEZvbnRDcmVhdGVDb3B5V2l0aEZhbWlseSgKICAgIENURm9udFJlZiBmb250LAogICAgQ0dGbG9h
dCBzaXplLAogICAgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0gKm1hdHJpeCwKICAgIENGU3RyaW5n
UmVmIGZhbWlseSApIDsKIyA0MDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRl
cnMvQ1RGb250LmgiIDMKQ1RGb250UmVmIENURm9udENyZWF0ZUZvclN0cmluZygKICAgIENURm9u
dFJlZiBjdXJyZW50Rm9udCwKICAgIENGU3RyaW5nUmVmIHN0cmluZywKICAgIENGUmFuZ2UgcmFu
Z2UgKSA7CiMgNDI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9u
dC5oIiAzCkNURm9udERlc2NyaXB0b3JSZWYgQ1RGb250Q29weUZvbnREZXNjcmlwdG9yKAogICAg
Q1RGb250UmVmIGZvbnQgKSA7CiMgNDQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9I
ZWFkZXJzL0NURm9udC5oIiAzCkNGVHlwZVJlZiBDVEZvbnRDb3B5QXR0cmlidXRlKAogICAgQ1RG
b250UmVmIGZvbnQsCiAgICBDRlN0cmluZ1JlZiBhdHRyaWJ1dGUgKSA7CiMgNDU0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAzCkNHRmxvYXQgQ1RGb250
R2V0U2l6ZSggQ1RGb250UmVmIGZvbnQgKSA7CiMgNDY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZy
YW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAzCkNHQWZmaW5lVHJhbnNmb3JtIENURm9udEdldE1h
dHJpeCggQ1RGb250UmVmIGZvbnQgKSA7CiMgNDc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1l
d29yay9IZWFkZXJzL0NURm9udC5oIiAzCkNURm9udFN5bWJvbGljVHJhaXRzIENURm9udEdldFN5
bWJvbGljVHJhaXRzKCBDVEZvbnRSZWYgZm9udCApIDsKIyA0ODcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRl
eHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250LmgiIDMKQ0ZEaWN0aW9uYXJ5UmVmIENURm9udENv
cHlUcmFpdHMoIENURm9udFJlZiBmb250ICkgOwojIDUwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5m
cmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDRlN0cmluZ1JlZiBDVEZvbnRDb3B5UG9zdFNj
cmlwdE5hbWUoIENURm9udFJlZiBmb250ICkgOwojIDUxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5m
cmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDRlN0cmluZ1JlZiBDVEZvbnRDb3B5RmFtaWx5
TmFtZSggQ1RGb250UmVmIGZvbnQgKSA7CiMgNTI0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1l
d29yay9IZWFkZXJzL0NURm9udC5oIiAzCkNGU3RyaW5nUmVmIENURm9udENvcHlGdWxsTmFtZSgg
Q1RGb250UmVmIGZvbnQgKSA7CiMgNTM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9I
ZWFkZXJzL0NURm9udC5oIiAzCkNGU3RyaW5nUmVmIENURm9udENvcHlEaXNwbGF5TmFtZSggQ1RG
b250UmVmIGZvbnQgKSA7CiMgNTQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFk
ZXJzL0NURm9udC5oIiAzCkNGU3RyaW5nUmVmIENURm9udENvcHlOYW1lKAogICAgQ1RGb250UmVm
IGZvbnQsCiAgICBDRlN0cmluZ1JlZiBuYW1lS2V5ICkgOwojIDU2OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3Jl
VGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDRlN0cmluZ1JlZiBDVEZvbnRDb3B5
TG9jYWxpemVkTmFtZSgKICAgIENURm9udFJlZiBmb250LAogICAgQ0ZTdHJpbmdSZWYgbmFtZUtl
eSwKICAgIENGU3RyaW5nUmVmICpsYW5ndWFnZSApIDsKIyA1ODYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRl
eHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250LmgiIDMKQ0ZDaGFyYWN0ZXJTZXRSZWYgQ1RGb250
Q29weUNoYXJhY3RlclNldCggQ1RGb250UmVmIGZvbnQgKSA7CiMgNTk3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
cmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAzCkNGU3RyaW5nRW5jb2RpbmcgQ1RG
b250R2V0U3RyaW5nRW5jb2RpbmcoIENURm9udFJlZiBmb250ICkgOwojIDYwOCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDRkFycmF5UmVmIENURm9u
dENvcHlTdXBwb3J0ZWRMYW5ndWFnZXMoIENURm9udFJlZiBmb250ICkgOwojIDYzMiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpib29sIENURm9udEdl
dEdseXBoc0ZvckNoYXJhY3RlcnMoCiAgICBDVEZvbnRSZWYgZm9udCwKICAgIGNvbnN0IFVuaUNo
YXIgY2hhcmFjdGVyc1tdLAogICAgQ0dHbHlwaCBnbHlwaHNbXSwKICAgIENGSW5kZXggY291bnQg
KSA7CiMgNjUxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5o
IiAzCkNHRmxvYXQgQ1RGb250R2V0QXNjZW50KCBDVEZvbnRSZWYgZm9udCApIDsKIyA2NjIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250LmgiIDMKQ0dGbG9hdCBD
VEZvbnRHZXREZXNjZW50KCBDVEZvbnRSZWYgZm9udCApIDsKIyA2NzMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29y
ZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250LmgiIDMKQ0dGbG9hdCBDVEZvbnRHZXRMZWFk
aW5nKCBDVEZvbnRSZWYgZm9udCApIDsKIyA2ODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3
b3JrL0hlYWRlcnMvQ1RGb250LmgiIDMKdW5zaWduZWQgQ1RGb250R2V0VW5pdHNQZXJFbSggQ1RG
b250UmVmIGZvbnQgKSA7CiMgNjk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFk
ZXJzL0NURm9udC5oIiAzCkNGSW5kZXggQ1RGb250R2V0R2x5cGhDb3VudCggQ1RGb250UmVmIGZv
bnQgKSA7CiMgNzA2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9u
dC5oIiAzCkNHUmVjdCBDVEZvbnRHZXRCb3VuZGluZ0JveCggQ1RGb250UmVmIGZvbnQgKSA7CiMg
NzE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAzCkNH
RmxvYXQgQ1RGb250R2V0VW5kZXJsaW5lUG9zaXRpb24oIENURm9udFJlZiBmb250ICkgOwojIDcy
OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDR0Zs
b2F0IENURm9udEdldFVuZGVybGluZVRoaWNrbmVzcyggQ1RGb250UmVmIGZvbnQgKSA7CiMgNzM5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAzCkNHRmxv
YXQgQ1RGb250R2V0U2xhbnRBbmdsZSggQ1RGb250UmVmIGZvbnQgKSA7CiMgNzUwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAzCkNHRmxvYXQgQ1RGb250
R2V0Q2FwSGVpZ2h0KCBDVEZvbnRSZWYgZm9udCApIDsKIyA3NjEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRl
eHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250LmgiIDMKQ0dGbG9hdCBDVEZvbnRHZXRYSGVpZ2h0
KCBDVEZvbnRSZWYgZm9udCApIDsKIyA3NzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3Jr
L0hlYWRlcnMvQ1RGb250LmgiIDMKQ0dHbHlwaCBDVEZvbnRHZXRHbHlwaFdpdGhOYW1lKAogICAg
Q1RGb250UmVmIGZvbnQsCiAgICBDRlN0cmluZ1JlZiBnbHlwaE5hbWUgKSA7CiMgODA1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAzCkNHUmVjdCBDVEZv
bnRHZXRCb3VuZGluZ1JlY3RzRm9yR2x5cGhzKAogICAgQ1RGb250UmVmIGZvbnQsCiAgICBDVEZv
bnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwKICAgIGNvbnN0IENHR2x5cGggZ2x5cGhzW10sCiAg
ICBDR1JlY3QgYm91bmRpbmdSZWN0c1tdLAogICAgQ0ZJbmRleCBjb3VudCApIDsKIyA4MzMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250LmgiIDMKZG91YmxlIENU
Rm9udEdldEFkdmFuY2VzRm9yR2x5cGhzKAogICAgQ1RGb250UmVmIGZvbnQsCiAgICBDVEZvbnRP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiwKICAgIGNvbnN0IENHR2x5cGggZ2x5cGhzW10sCiAgICBD
R1NpemUgYWR2YW5jZXNbXSwKICAgIENGSW5kZXggY291bnQgKSA7CiMgODU2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAzCnZvaWQgQ1RGb250R2V0VmVy
dGljYWxUcmFuc2xhdGlvbnNGb3JHbHlwaHMoCiAgICBDVEZvbnRSZWYgZm9udCwKICAgIGNvbnN0
IENHR2x5cGggZ2x5cGhzW10sCiAgICBDR1NpemUgdHJhbnNsYXRpb25zW10sCiAgICBDRkluZGV4
IGNvdW50ICkgOwojIDg3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9D
VEZvbnQuaCIgMwpDR1BhdGhSZWYgQ1RGb250Q3JlYXRlUGF0aEZvckdseXBoKAogICAgQ1RGb250
UmVmIGZvbnQsCiAgICBDR0dseXBoIGdseXBoLAogICAgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0g
KiB0cmFuc2Zvcm0gKSA7CiMgODkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFk
ZXJzL0NURm9udC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250VmFyaWF0aW9u
QXhpc0lkZW50aWZpZXJLZXkgOwoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250
VmFyaWF0aW9uQXhpc01pbmltdW1WYWx1ZUtleSA7CgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtDVEZvbnRWYXJpYXRpb25BeGlzTWF4aW11bVZhbHVlS2V5IDsKCgoKCgpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0NURm9udFZhcmlhdGlvbkF4aXNEZWZhdWx0VmFsdWVLZXkgOwoKCgoK
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250VmFyaWF0aW9uQXhpc05hbWVLZXkgOwoj
IDkyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpD
RkFycmF5UmVmIENURm9udENvcHlWYXJpYXRpb25BeGVzKCBDVEZvbnRSZWYgZm9udCApIDsKIyA5
MzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250LmgiIDMKQ0ZE
aWN0aW9uYXJ5UmVmIENURm9udENvcHlWYXJpYXRpb24oIENURm9udFJlZiBmb250ICkgOwojIDk1
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9udEZlYXR1cmVUeXBlSWRlbnRpZmllcktleSA7CgoK
CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZvbnRGZWF0dXJlVHlwZU5hbWVLZXkgOwoK
CgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250RmVhdHVyZVR5cGVFeGNsdXNpdmVL
ZXkgOwoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250RmVhdHVyZVR5cGVTZWxl
Y3RvcnNLZXkgOwoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250RmVhdHVyZVNl
bGVjdG9ySWRlbnRpZmllcktleSA7CgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZv
bnRGZWF0dXJlU2VsZWN0b3JOYW1lS2V5IDsKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0NURm9udEZlYXR1cmVTZWxlY3RvckRlZmF1bHRLZXkgOwoKCgoKCmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrQ1RGb250RmVhdHVyZVNlbGVjdG9yU2V0dGluZ0tleSA7CiMgMTAwMyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDRkFycmF5UmVmIENU
Rm9udENvcHlGZWF0dXJlcyggQ1RGb250UmVmIGZvbnQgKSA7CiMgMTAxNiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDRkFycmF5UmVmIENURm9udENv
cHlGZWF0dXJlU2V0dGluZ3MoIENURm9udFJlZiBmb250ICkgOwojIDEwMzQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250LmgiIDMKQ0dGb250UmVmIENURm9udENv
cHlHcmFwaGljc0ZvbnQoCiAgICBDVEZvbnRSZWYgZm9udCwKICAgIENURm9udERlc2NyaXB0b3JS
ZWYgKmF0dHJpYnV0ZXMgKSA7CiMgMTA1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsv
SGVhZGVycy9DVEZvbnQuaCIgMwpDVEZvbnRSZWYgQ1RGb250Q3JlYXRlV2l0aEdyYXBoaWNzRm9u
dCgKICAgIENHRm9udFJlZiBncmFwaGljc0ZvbnQsCiAgICBDR0Zsb2F0IHNpemUsCiAgICBjb25z
dCBDR0FmZmluZVRyYW5zZm9ybSAqbWF0cml4LAogICAgQ1RGb250RGVzY3JpcHRvclJlZiBhdHRy
aWJ1dGVzICkgOwojIDEwNzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMv
Q1RGb250LmgiIDMKQVRTRm9udFJlZiBDVEZvbnRHZXRQbGF0Zm9ybUZvbnQoCiAgICBDVEZvbnRS
ZWYgZm9udCwKICAgIENURm9udERlc2NyaXB0b3JSZWYgKmF0dHJpYnV0ZXMgKSA7CiMgMTA5NiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDVEZvbnRS
ZWYgQ1RGb250Q3JlYXRlV2l0aFBsYXRmb3JtRm9udCgKICAgIEFUU0ZvbnRSZWYgcGxhdGZvcm1G
b250LAogICAgQ0dGbG9hdCBzaXplLAogICAgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0gKm1hdHJp
eCwKICAgIENURm9udERlc2NyaXB0b3JSZWYgYXR0cmlidXRlcyApIDsKIyAxMTIyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udC5oIiAzCkNURm9udFJlZiBDVEZv
bnRDcmVhdGVXaXRoUXVpY2tkcmF3SW5zdGFuY2UoCiAgICBDb25zdFN0cjI1NVBhcmFtIG5hbWUs
CiAgICBpbnQxNl90IGlkZW50aWZpZXIsCiAgICB1aW50OF90IHN0eWxlLAogICAgQ0dGbG9hdCBz
aXplICkgOwoKCgoKCmVudW0gewogICAga0NURm9udFRhYmxlQkFTRSA9ICdCQVNFJywKICAgIGtD
VEZvbnRUYWJsZUNGRiA9ICdDRkYgJywKICAgIGtDVEZvbnRUYWJsZURTSUcgPSAnRFNJRycsCiAg
ICBrQ1RGb250VGFibGVFQkRUID0gJ0VCRFQnLAogICAga0NURm9udFRhYmxlRUJMQyA9ICdFQkxD
JywKICAgIGtDVEZvbnRUYWJsZUVCU0MgPSAnRUJTQycsCiAgICBrQ1RGb250VGFibGVHREVGID0g
J0dERUYnLAogICAga0NURm9udFRhYmxlR1BPUyA9ICdHUE9TJywKICAgIGtDVEZvbnRUYWJsZUdT
VUIgPSAnR1NVQicsCiAgICBrQ1RGb250VGFibGVKU1RGID0gJ0pTVEYnLAogICAga0NURm9udFRh
YmxlTFRTSCA9ICdMVFNIJywKICAgIGtDVEZvbnRUYWJsZU9TMiA9ICdPUy8yJywKICAgIGtDVEZv
bnRUYWJsZVBDTFQgPSAnUENMVCcsCiAgICBrQ1RGb250VGFibGVWRE1YID0gJ1ZETVgnLAogICAg
a0NURm9udFRhYmxlVk9SRyA9ICdWT1JHJywKICAgIGtDVEZvbnRUYWJsZVphcGYgPSAnWmFwZics
CiAgICBrQ1RGb250VGFibGVBY250ID0gJ2FjbnQnLAogICAga0NURm9udFRhYmxlQXZhciA9ICdh
dmFyJywKICAgIGtDVEZvbnRUYWJsZUJkYXQgPSAnYmRhdCcsCiAgICBrQ1RGb250VGFibGVCaGVk
ID0gJ2JoZWQnLAogICAga0NURm9udFRhYmxlQmxvYyA9ICdibG9jJywKICAgIGtDVEZvbnRUYWJs
ZUJzbG4gPSAnYnNsbicsCiAgICBrQ1RGb250VGFibGVDbWFwID0gJ2NtYXAnLAogICAga0NURm9u
dFRhYmxlQ3ZhciA9ICdjdmFyJywKICAgIGtDVEZvbnRUYWJsZUN2dCA9ICdjdnQgJywKICAgIGtD
VEZvbnRUYWJsZUZkc2MgPSAnZmRzYycsCiAgICBrQ1RGb250VGFibGVGZWF0ID0gJ2ZlYXQnLAog
ICAga0NURm9udFRhYmxlRm10eCA9ICdmbXR4JywKICAgIGtDVEZvbnRUYWJsZUZwZ20gPSAnZnBn
bScsCiAgICBrQ1RGb250VGFibGVGdmFyID0gJ2Z2YXInLAogICAga0NURm9udFRhYmxlR2FzcCA9
ICdnYXNwJywKICAgIGtDVEZvbnRUYWJsZUdseWYgPSAnZ2x5ZicsCiAgICBrQ1RGb250VGFibGVH
dmFyID0gJ2d2YXInLAogICAga0NURm9udFRhYmxlSGRteCA9ICdoZG14JywKICAgIGtDVEZvbnRU
YWJsZUhlYWQgPSAnaGVhZCcsCiAgICBrQ1RGb250VGFibGVIaGVhID0gJ2hoZWEnLAogICAga0NU
Rm9udFRhYmxlSG10eCA9ICdobXR4JywKICAgIGtDVEZvbnRUYWJsZUhzdHkgPSAnaHN0eScsCiAg
ICBrQ1RGb250VGFibGVKdXN0ID0gJ2p1c3QnLAogICAga0NURm9udFRhYmxlS2VybiA9ICdrZXJu
JywKICAgIGtDVEZvbnRUYWJsZUxjYXIgPSAnbGNhcicsCiAgICBrQ1RGb250VGFibGVMb2NhID0g
J2xvY2EnLAogICAga0NURm9udFRhYmxlTWF4cCA9ICdtYXhwJywKICAgIGtDVEZvbnRUYWJsZU1v
cnQgPSAnbW9ydCcsCiAgICBrQ1RGb250VGFibGVNb3J4ID0gJ21vcngnLAogICAga0NURm9udFRh
YmxlTmFtZSA9ICduYW1lJywKICAgIGtDVEZvbnRUYWJsZU9wYmQgPSAnb3BiZCcsCiAgICBrQ1RG
b250VGFibGVQb3N0ID0gJ3Bvc3QnLAogICAga0NURm9udFRhYmxlUHJlcCA9ICdwcmVwJywKICAg
IGtDVEZvbnRUYWJsZVByb3AgPSAncHJvcCcsCiAgICBrQ1RGb250VGFibGVUcmFrID0gJ3RyYWsn
LAogICAga0NURm9udFRhYmxlVmhlYSA9ICd2aGVhJywKICAgIGtDVEZvbnRUYWJsZVZtdHggPSAn
dm10eCcKfTsKdHlwZWRlZiB1aW50MzJfdCBDVEZvbnRUYWJsZVRhZzsKCmVudW0gewogICAga0NU
Rm9udFRhYmxlT3B0aW9uTm9PcHRpb25zID0gMCwKICAgIGtDVEZvbnRUYWJsZU9wdGlvbkV4Y2x1
ZGVTeW50aGV0aWMgPSAoMSA8PCAwKQp9Owp0eXBlZGVmIHVpbnQzMl90IENURm9udFRhYmxlT3B0
aW9uczsKIyAxMjA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9u
dC5oIiAzCkNGQXJyYXlSZWYgQ1RGb250Q29weUF2YWlsYWJsZVRhYmxlcygKICAgIENURm9udFJl
ZiBmb250LAogICAgQ1RGb250VGFibGVPcHRpb25zIG9wdGlvbnMgKSA7CiMgMTIyNSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMwpDRkRhdGFSZWYgQ1RG
b250Q29weVRhYmxlKAogICAgQ1RGb250UmVmIGZvbnQsCiAgICBDVEZvbnRUYWJsZVRhZyB0YWJs
ZSwKICAgIENURm9udFRhYmxlT3B0aW9ucyBvcHRpb25zICkgOwoKCn0KIyAyMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9Db3JlVGV4dC5oIiAyIDMKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udENvbGxlY3Rpb24uaCIgMSAzCiMg
MTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250Q29sbGVjdGlv
bi5oIiAzCiNkZWZpbmUgX19DVEZPTlRDT0xMRUNUSU9OX18gCgojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29y
ZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250RGVzY3JpcHRvci5oIiAxIDMKIyAyMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnRDb2xsZWN0aW9uLmgiIDIg
MwoKCmV4dGVybiAiQyIgewojIDM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFk
ZXJzL0NURm9udENvbGxlY3Rpb24uaCIgMwp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NURm9udENv
bGxlY3Rpb24gKiBDVEZvbnRDb2xsZWN0aW9uUmVmOwoKCgoKCgpDRlR5cGVJRCBDVEZvbnRDb2xs
ZWN0aW9uR2V0VHlwZUlEKCB2b2lkICkgOwoKCgoKCgp0eXBlZGVmIENGQ29tcGFyaXNvblJlc3Vs
dCAoKkNURm9udENvbGxlY3Rpb25Tb3J0RGVzY3JpcHRvcnNDYWxsYmFjaykoQ1RGb250RGVzY3Jp
cHRvclJlZiBmaXJzdCwgQ1RGb250RGVzY3JpcHRvclJlZiBzZWNvbmQsIHZvaWQgKnJlZkNvbik7
CiMgNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250Q29sbGVj
dGlvbi5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250Q29sbGVjdGlvblJlbW92
ZUR1cGxpY2F0ZXNPcHRpb24gOwojIDc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9I
ZWFkZXJzL0NURm9udENvbGxlY3Rpb24uaCIgMwpDVEZvbnRDb2xsZWN0aW9uUmVmIENURm9udENv
bGxlY3Rpb25DcmVhdGVGcm9tQXZhaWxhYmxlRm9udHMoIENGRGljdGlvbmFyeVJlZiBvcHRpb25z
ICkgOwojIDg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udENv
bGxlY3Rpb24uaCIgMwpDVEZvbnRDb2xsZWN0aW9uUmVmIENURm9udENvbGxlY3Rpb25DcmVhdGVX
aXRoRm9udERlc2NyaXB0b3JzKAogICAgQ0ZBcnJheVJlZiBkZXNjcmlwdG9ycywKICAgIENGRGlj
dGlvbmFyeVJlZiBvcHRpb25zICkgOwojIDEwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVEZvbnRDb2xsZWN0aW9uLmgiIDMKQ1RGb250Q29sbGVjdGlvblJlZiBDVEZv
bnRDb2xsZWN0aW9uQ3JlYXRlQ29weVdpdGhGb250RGVzY3JpcHRvcnMoCiAgICBDVEZvbnRDb2xs
ZWN0aW9uUmVmIG9yaWdpbmFsLAogICAgQ0ZBcnJheVJlZiBkZXNjcmlwdG9ycywKICAgIENGRGlj
dGlvbmFyeVJlZiBvcHRpb25zICkgOwojIDEyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVEZvbnRDb2xsZWN0aW9uLmgiIDMKQ0ZBcnJheVJlZiBDVEZvbnRDb2xsZWN0
aW9uQ3JlYXRlTWF0Y2hpbmdGb250RGVzY3JpcHRvcnMoIENURm9udENvbGxlY3Rpb25SZWYgY29s
bGVjdGlvbiApIDsKIyAxNDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMv
Q1RGb250Q29sbGVjdGlvbi5oIiAzCkNGQXJyYXlSZWYgQ1RGb250Q29sbGVjdGlvbkNyZWF0ZU1h
dGNoaW5nRm9udERlc2NyaXB0b3JzU29ydGVkV2l0aENhbGxiYWNrKAogICAgQ1RGb250Q29sbGVj
dGlvblJlZiBjb2xsZWN0aW9uLAogICAgQ1RGb250Q29sbGVjdGlvblNvcnREZXNjcmlwdG9yc0Nh
bGxiYWNrIHNvcnRDYWxsYmFjaywKICAgIHZvaWQgKnJlZkNvbiApIDsKCgp9CiMgMjIgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZVRleHQuaCIgMiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnREZXNjcmlwdG9yLmgiIDEg
MwojIDIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NvcmVUZXh0Lmgi
IDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250TWFu
YWdlci5oIiAxIDMKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9D
VEZvbnRNYW5hZ2VyLmgiIDMKI2RlZmluZSBfX0NURk9OVE1BTkFHRVJfXyAKCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnREZXNjcmlwdG9yLmgiIDEgMwoj
IDIxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udE1hbmFnZXIu
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnRN
YW5hZ2VyRXJyb3JzLmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9I
ZWFkZXJzL0NURm9udE1hbmFnZXJFcnJvcnMuaCIgMwojZGVmaW5lIF9fQ1RGT05UTUFOQUdFUkVS
Uk9SU19fIAoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0NURm9udE1hbmFnZXJFcnJvckRvbWFpbiA7CgoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ1RGb250TWFuYWdlckVycm9yRm9udFVSTHNLZXkgOwojIDQ3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVU
ZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udE1hbmFnZXJFcnJvcnMuaCIgMwplbnVtIHsKICAg
IGtDVEZvbnRNYW5hZ2VyRXJyb3JGaWxlTm90Rm91bmQgPSAxMDEsCiAgICBrQ1RGb250TWFuYWdl
ckVycm9ySW5zdWZmaWNpZW50UGVybWlzc2lvbnMgPSAxMDIsCiAgICBrQ1RGb250TWFuYWdlckVy
cm9yVW5yZWNvZ25pemVkRm9ybWF0ID0gMTAzLAogICAga0NURm9udE1hbmFnZXJFcnJvckludmFs
aWRGb250RGF0YSA9IDEwNCwKICAgIGtDVEZvbnRNYW5hZ2VyRXJyb3JBbHJlYWR5UmVnaXN0ZXJl
ZCA9IDEwNSwKfTsKIyA2NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9D
VEZvbnRNYW5hZ2VyRXJyb3JzLmgiIDMKZW51bSB7CiAgICBrQ1RGb250TWFuYWdlckVycm9yTm90
UmVnaXN0ZXJlZCA9IDIwMSwKICAgIGtDVEZvbnRNYW5hZ2VyRXJyb3JJblVzZSA9IDIwMiwKICAg
IGtDVEZvbnRNYW5hZ2VyRXJyb3JTeXN0ZW1SZXF1aXJlZCA9IDIwMiwKfTsKCnR5cGVkZWYgQ0ZJ
bmRleCBDVEZvbnRNYW5hZ2VyRXJyb3I7CgoKfQojIDIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZy
YW1ld29yay9IZWFkZXJzL0NURm9udE1hbmFnZXIuaCIgMiAzCgoKCgpleHRlcm4gIkMiIHsKIyA0
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnRNYW5hZ2VyLmgi
IDMKQ0ZBcnJheVJlZiBDVEZvbnRNYW5hZ2VyQ29weUF2YWlsYWJsZVBvc3RTY3JpcHROYW1lcygg
dm9pZCApIDsKCgoKCgoKCkNGQXJyYXlSZWYgQ1RGb250TWFuYWdlckNvcHlBdmFpbGFibGVGb250
RmFtaWx5TmFtZXMoIHZvaWQgKSA7CgoKCgoKCgpDRkFycmF5UmVmIENURm9udE1hbmFnZXJDb3B5
QXZhaWxhYmxlRm9udFVSTHMoIHZvaWQgKSA7CiMgNzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJh
bWV3b3JrL0hlYWRlcnMvQ1RGb250TWFuYWdlci5oIiAzCkNGQ29tcGFyaXNvblJlc3VsdCBDVEZv
bnRNYW5hZ2VyQ29tcGFyZUZvbnRGYW1pbHlOYW1lcygKICAgIGNvbnN0IHZvaWQgKiBmYW1pbHkx
LAogICAgY29uc3Qgdm9pZCAqIGZhbWlseTIsCiAgICB2b2lkICogY29udGV4dCkgOwojIDg1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udE1hbmFnZXIuaCIgMwpD
RkFycmF5UmVmIENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRvcnNGcm9tVVJMKAogICAg
Q0ZVUkxSZWYgZmlsZVVSTCApIDsKIyA5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsv
SGVhZGVycy9DVEZvbnRNYW5hZ2VyLmgiIDMKZW51bSB7CiAgICBrQ1RGb250TWFuYWdlclNjb3Bl
Tm9uZSA9IDAsCiAgICBrQ1RGb250TWFuYWdlclNjb3BlUHJvY2VzcyA9IDEsCiAgICBrQ1RGb250
TWFuYWdlclNjb3BlVXNlciA9IDIsCiAgICBrQ1RGb250TWFuYWdlclNjb3BlU2Vzc2lvbiA9IDMK
fTsKdHlwZWRlZiB1aW50MzJfdCBDVEZvbnRNYW5hZ2VyU2NvcGU7CiMgMTIxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udE1hbmFnZXIuaCIgMwpib29sIENURm9u
dE1hbmFnZXJSZWdpc3RlckZvbnRzRm9yVVJMKAogICAgQ0ZVUkxSZWYgZm9udFVSTCwKICAgIENU
Rm9udE1hbmFnZXJTY29wZSBzY29wZSwKICAgIENGRXJyb3JSZWYgKiBlcnJvciApIDsKIyAxNDIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250TWFuYWdlci5oIiAz
CmJvb2wgQ1RGb250TWFuYWdlclVucmVnaXN0ZXJGb250c0ZvclVSTCgKICAgIENGVVJMUmVmIGZv
bnRVUkwsCiAgICBDVEZvbnRNYW5hZ2VyU2NvcGUgc2NvcGUsCiAgICBDRkVycm9yUmVmICogZXJy
b3IgKSA7CiMgMTYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9u
dE1hbmFnZXIuaCIgMwpib29sIENURm9udE1hbmFnZXJSZWdpc3RlckZvbnRzRm9yVVJMcygKICAg
IENGQXJyYXlSZWYgZm9udFVSTHMsCiAgICBDVEZvbnRNYW5hZ2VyU2NvcGUgc2NvcGUsCiAgICBD
RkFycmF5UmVmICogZXJyb3JzICkgOwojIDE4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVEZvbnRNYW5hZ2VyLmgiIDMKYm9vbCBDVEZvbnRNYW5hZ2VyVW5yZWdpc3Rl
ckZvbnRzRm9yVVJMcygKICAgIENGQXJyYXlSZWYgZm9udFVSTHMsCiAgICBDVEZvbnRNYW5hZ2Vy
U2NvcGUgc2NvcGUsCiAgICBDRkFycmF5UmVmICogZXJyb3JzICkgOwojIDE5NyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnRNYW5hZ2VyLmgiIDMKdm9pZCBDVEZv
bnRNYW5hZ2VyRW5hYmxlRm9udERlc2NyaXB0b3JzKAogICAgQ0ZBcnJheVJlZiBkZXNjcmlwdG9y
cywKICAgIGJvb2wgZW5hYmxlICkgOwojIDIxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVEZvbnRNYW5hZ2VyLmgiIDMKQ1RGb250TWFuYWdlclNjb3BlIENURm9udE1h
bmFnZXJHZXRTY29wZUZvclVSTCgKICAgIENGVVJMUmVmIGZvbnRVUkwgKSA7CiMgMjIyICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURm9udE1hbmFnZXIuaCIgMwpib29s
IENURm9udE1hbmFnZXJJc1N1cHBvcnRlZEZvbnQoCiAgICBDRlVSTFJlZiBmb250VVJMICkgOwoj
IDIzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZvbnRNYW5hZ2Vy
LmgiIDMKQ0ZSdW5Mb29wU291cmNlUmVmIENURm9udE1hbmFnZXJDcmVhdGVGb250UmVxdWVzdFJ1
bkxvb3BTb3VyY2UoCiBDRkluZGV4IHNvdXJjZU9yZGVyLAogQ0ZBcnJheVJlZiAoXmNyZWF0ZU1h
dGNoZXNDYWxsYmFjaykoQ0ZEaWN0aW9uYXJ5UmVmIHJlcXVlc3RBdHRyaWJ1dGVzLCBwaWRfdCBy
ZXF1ZXN0aW5nUHJvY2VzcykpIDsKCgoKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RG
b250TWFuYWdlckJ1bmRsZUlkZW50aWZpZXIgOwojIDI2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5m
cmFtZXdvcmsvSGVhZGVycy9DVEZvbnRNYW5hZ2VyLmgiIDMKZW51bSB7CiAgICBrQ1RGb250TWFu
YWdlckF1dG9BY3RpdmF0aW9uRGVmYXVsdCA9IDAsCiAgICBrQ1RGb250TWFuYWdlckF1dG9BY3Rp
dmF0aW9uRGlzYWJsZWQgPSAxLAogICAga0NURm9udE1hbmFnZXJBdXRvQWN0aXZhdGlvbkVuYWJs
ZWQgPSAyLAogICAga0NURm9udE1hbmFnZXJBdXRvQWN0aXZhdGlvblByb21wdFVzZXIgPSAzCn07
CnR5cGVkZWYgdWludDMyX3QgQ1RGb250TWFuYWdlckF1dG9BY3RpdmF0aW9uU2V0dGluZzsKIyAy
ODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250TWFuYWdlci5o
IiAzCnZvaWQgQ1RGb250TWFuYWdlclNldEF1dG9BY3RpdmF0aW9uU2V0dGluZygKICAgIENGU3Ry
aW5nUmVmIGJ1bmRsZUlkZW50aWZpZXIsCiAgICBDVEZvbnRNYW5hZ2VyQXV0b0FjdGl2YXRpb25T
ZXR0aW5nIHNldHRpbmcgKSA7CiMgMjk2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9I
ZWFkZXJzL0NURm9udE1hbmFnZXIuaCIgMwpDVEZvbnRNYW5hZ2VyQXV0b0FjdGl2YXRpb25TZXR0
aW5nIENURm9udE1hbmFnZXJHZXRBdXRvQWN0aXZhdGlvblNldHRpbmcoCiAgICBDRlN0cmluZ1Jl
ZiBidW5kbGVJZGVudGlmaWVyICkgOwojIDMxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVEZvbnRNYW5hZ2VyLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtD
VEZvbnRNYW5hZ2VyUmVnaXN0ZXJlZEZvbnRzQ2hhbmdlZE5vdGlmaWNhdGlvbiA7CgoKfQojIDI0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NvcmVUZXh0LmgiIDIgMwoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGb250VHJhaXRzLmgi
IDEgMwojIDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NvcmVUZXh0
LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGcmFt
ZS5oIiAxIDMKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZy
YW1lLmgiIDMKI2RlZmluZSBfX0NURlJBTUVfXyAKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdy
YXBoaWNzLmZyYW1ld29yay9IZWFkZXJzL0NHQ29udGV4dC5oIiAxIDMKIyAyNSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZyYW1lLmgiIDIgMwoKCgpleHRlcm4gIkMi
IHsKCgoKCgoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DVEZyYW1lICogQ1RGcmFtZVJlZjsKCgoK
CgoKCkNGVHlwZUlEIENURnJhbWVHZXRUeXBlSUQoIHZvaWQgKSA7CiMgNjcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGcmFtZS5oIiAzCmVudW0Kewoga0NURnJhbWVQ
cm9ncmVzc2lvblRvcFRvQm90dG9tID0gMCwKIGtDVEZyYW1lUHJvZ3Jlc3Npb25SaWdodFRvTGVm
dCA9IDEKfTsKdHlwZWRlZiB1aW50MzJfdCBDVEZyYW1lUHJvZ3Jlc3Npb247CiMgODcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGcmFtZS5oIiAzCmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrQ1RGcmFtZVByb2dyZXNzaW9uQXR0cmlidXRlTmFtZSA7CiMgMTA4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURnJhbWUuaCIgMwpDRlJhbmdl
IENURnJhbWVHZXRTdHJpbmdSYW5nZSgKIENURnJhbWVSZWYgZnJhbWUgKSA7CiMgMTMxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NURnJhbWUuaCIgMwpDRlJhbmdlIENU
RnJhbWVHZXRWaXNpYmxlU3RyaW5nUmFuZ2UoCiBDVEZyYW1lUmVmIGZyYW1lICkgOwojIDE0MyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZyYW1lLmgiIDMKQ0dQYXRo
UmVmIENURnJhbWVHZXRQYXRoKAogQ1RGcmFtZVJlZiBmcmFtZSApIDsKIyAxNjUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGcmFtZS5oIiAzCkNGRGljdGlvbmFyeVJl
ZiBDVEZyYW1lR2V0RnJhbWVBdHRyaWJ1dGVzKAogQ1RGcmFtZVJlZiBmcmFtZSApIDsKIyAxODcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGcmFtZS5oIiAzCkNGQXJy
YXlSZWYgQ1RGcmFtZUdldExpbmVzKAogQ1RGcmFtZVJlZiBmcmFtZSApIDsKIyAyMjIgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGcmFtZS5oIiAzCnZvaWQgQ1RGcmFt
ZUdldExpbmVPcmlnaW5zKAogQ1RGcmFtZVJlZiBmcmFtZSwKIENGUmFuZ2UgcmFuZ2UsCiBDR1Bv
aW50IG9yaWdpbnNbXSApIDsKIyAyNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hl
YWRlcnMvQ1RGcmFtZS5oIiAzCnZvaWQgQ1RGcmFtZURyYXcoCiBDVEZyYW1lUmVmIGZyYW1lLAog
Q0dDb250ZXh0UmVmIGNvbnRleHQgKSA7CgoKCn0KIyAyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5m
cmFtZXdvcmsvSGVhZGVycy9Db3JlVGV4dC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0
LmZyYW1ld29yay9IZWFkZXJzL0NURnJhbWVzZXR0ZXIuaCIgMSAzCiMgMTggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGcmFtZXNldHRlci5oIiAzCiNkZWZpbmUgX19D
VEZSQU1FU0VUVEVSX18gCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRl
cnMvQ1RGcmFtZS5oIiAxIDMKIyAyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVh
ZGVycy9DVEZyYW1lc2V0dGVyLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3
b3JrL0hlYWRlcnMvQ1RUeXBlc2V0dGVyLmgiIDEgMwojIDE4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0
LmZyYW1ld29yay9IZWFkZXJzL0NUVHlwZXNldHRlci5oIiAzCiNkZWZpbmUgX19DVFRZUEVTRVRU
RVJfXyAKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVExpbmUu
aCIgMSAzCiMgMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RMaW5l
LmgiIDMKI2RlZmluZSBfX0NUTElORV9fIAoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNz
LmZyYW1ld29yay9IZWFkZXJzL0NHQ29udGV4dC5oIiAxIDMKIyAyMyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3Jl
VGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVExpbmUuaCIgMiAzCgoKCmV4dGVybiAiQyIgewoKCgoK
Cgp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NUTGluZSAqIENUTGluZVJlZjsKIyA1NSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVExpbmUuaCIgMwplbnVtCnsKIGtDVExp
bmVUcnVuY2F0aW9uU3RhcnQgPSAwLAoga0NUTGluZVRydW5jYXRpb25FbmQgPSAxLAoga0NUTGlu
ZVRydW5jYXRpb25NaWRkbGUgPSAyCn07CnR5cGVkZWYgdWludDMyX3QgQ1RMaW5lVHJ1bmNhdGlv
blR5cGU7CgoKCgoKCgpDRlR5cGVJRCBDVExpbmVHZXRUeXBlSUQoIHZvaWQgKSA7CiMgOTQgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RMaW5lLmgiIDMKQ1RMaW5lUmVm
IENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKAogQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVm
IHN0cmluZyApIDsKIyAxMjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMv
Q1RMaW5lLmgiIDMKQ1RMaW5lUmVmIENUTGluZUNyZWF0ZVRydW5jYXRlZExpbmUoCiBDVExpbmVS
ZWYgbGluZSwKIGRvdWJsZSB3aWR0aCwKIENUTGluZVRydW5jYXRpb25UeXBlIHRydW5jYXRpb25U
eXBlLAogQ1RMaW5lUmVmIHRydW5jYXRpb25Ub2tlbiApIDsKIyAxNTggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29y
ZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RMaW5lLmgiIDMKQ1RMaW5lUmVmIENUTGluZUNyZWF0
ZUp1c3RpZmllZExpbmUoCiBDVExpbmVSZWYgbGluZSwKIENHRmxvYXQganVzdGlmaWNhdGlvbkZh
Y3RvciwKIGRvdWJsZSBqdXN0aWZpY2F0aW9uV2lkdGggKSA7CiMgMTgxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
cmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUTGluZS5oIiAzCkNGSW5kZXggQ1RMaW5lR2V0R2x5
cGhDb3VudCgKIENUTGluZVJlZiBsaW5lICkgOwojIDE5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5m
cmFtZXdvcmsvSGVhZGVycy9DVExpbmUuaCIgMwpDRkFycmF5UmVmIENUTGluZUdldEdseXBoUnVu
cygKIENUTGluZVJlZiBsaW5lICkgOwojIDIxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVExpbmUuaCIgMwpDRlJhbmdlIENUTGluZUdldFN0cmluZ1JhbmdlKAogQ1RM
aW5lUmVmIGxpbmUgKSA7CiMgMjM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFk
ZXJzL0NUTGluZS5oIiAzCmRvdWJsZSBDVExpbmVHZXRQZW5PZmZzZXRGb3JGbHVzaCgKIENUTGlu
ZVJlZiBsaW5lLAogQ0dGbG9hdCBmbHVzaEZhY3RvciwKIGRvdWJsZSBmbHVzaFdpZHRoICkgOwoj
IDI2MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVExpbmUuaCIgMwp2
b2lkIENUTGluZURyYXcoCiBDVExpbmVSZWYgbGluZSwKIENHQ29udGV4dFJlZiBjb250ZXh0ICkg
OwojIDI4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVExpbmUuaCIg
MwpDR1JlY3QgQ1RMaW5lR2V0SW1hZ2VCb3VuZHMoCiBDVExpbmVSZWYgbGluZSwKIENHQ29udGV4
dFJlZiBjb250ZXh0ICkgOwojIDMxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVh
ZGVycy9DVExpbmUuaCIgMwpkb3VibGUgQ1RMaW5lR2V0VHlwb2dyYXBoaWNCb3VuZHMoCiBDVExp
bmVSZWYgbGluZSwKIENHRmxvYXQqIGFzY2VudCwKIENHRmxvYXQqIGRlc2NlbnQsCiBDR0Zsb2F0
KiBsZWFkaW5nICkgOwojIDMzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVy
cy9DVExpbmUuaCIgMwpkb3VibGUgQ1RMaW5lR2V0VHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGgoCiBD
VExpbmVSZWYgbGluZSApIDsKIyAzNjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hl
YWRlcnMvQ1RMaW5lLmgiIDMKQ0ZJbmRleCBDVExpbmVHZXRTdHJpbmdJbmRleEZvclBvc2l0aW9u
KAogQ1RMaW5lUmVmIGxpbmUsCiBDR1BvaW50IHBvc2l0aW9uICkgOwojIDQwNSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVExpbmUuaCIgMwpDR0Zsb2F0IENUTGluZUdl
dE9mZnNldEZvclN0cmluZ0luZGV4KAogQ1RMaW5lUmVmIGxpbmUsCiBDRkluZGV4IGNoYXJJbmRl
eCwKIENHRmxvYXQqIHNlY29uZGFyeU9mZnNldCApIDsKCgoKfQojIDIxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
cmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUVHlwZXNldHRlci5oIiAyIDMKCgpleHRlcm4gIkMi
IHsKCgoKCgoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DVFR5cGVzZXR0ZXIgKiBDVFR5cGVzZXR0
ZXJSZWY7CgoKCgoKCgpDRlR5cGVJRCBDVFR5cGVzZXR0ZXJHZXRUeXBlSUQoIHZvaWQgKSA7CiMg
NTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RUeXBlc2V0dGVyLmgi
IDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVFR5cGVzZXR0ZXJPcHRpb25EaXNhYmxlQmlk
aVByb2Nlc3NpbmcgOwojIDY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJz
L0NUVHlwZXNldHRlci5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RUeXBlc2V0dGVy
T3B0aW9uRm9yY2VkRW1iZWRkaW5nTGV2ZWwgOwojIDkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZy
YW1ld29yay9IZWFkZXJzL0NUVHlwZXNldHRlci5oIiAzCkNUVHlwZXNldHRlclJlZiBDVFR5cGVz
ZXR0ZXJDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZygKIENGQXR0cmlidXRlZFN0cmluZ1JlZiBz
dHJpbmcgKSA7CiMgMTE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NU
VHlwZXNldHRlci5oIiAzCkNUVHlwZXNldHRlclJlZiBDVFR5cGVzZXR0ZXJDcmVhdGVXaXRoQXR0
cmlidXRlZFN0cmluZ0FuZE9wdGlvbnMoCiBDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgc3RyaW5nLAog
Q0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMgKSA7CiMgMTQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZy
YW1ld29yay9IZWFkZXJzL0NUVHlwZXNldHRlci5oIiAzCkNUTGluZVJlZiBDVFR5cGVzZXR0ZXJD
cmVhdGVMaW5lKAogQ1RUeXBlc2V0dGVyUmVmIHR5cGVzZXR0ZXIsCiBDRlJhbmdlIHN0cmluZ1Jh
bmdlICkgOwojIDE3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFR5
cGVzZXR0ZXIuaCIgMwpDRkluZGV4IENUVHlwZXNldHRlclN1Z2dlc3RMaW5lQnJlYWsoCiBDVFR5
cGVzZXR0ZXJSZWYgdHlwZXNldHRlciwKIENGSW5kZXggc3RhcnRJbmRleCwKIGRvdWJsZSB3aWR0
aCApIDsKIyAyMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RUeXBl
c2V0dGVyLmgiIDMKQ0ZJbmRleCBDVFR5cGVzZXR0ZXJTdWdnZXN0Q2x1c3RlckJyZWFrKAogQ1RU
eXBlc2V0dGVyUmVmIHR5cGVzZXR0ZXIsCiBDRkluZGV4IHN0YXJ0SW5kZXgsCiBkb3VibGUgd2lk
dGggKSA7CgoKCn0KIyAyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9D
VEZyYW1lc2V0dGVyLmgiIDIgMwoKCmV4dGVybiAiQyIgewoKCgoKCgp0eXBlZGVmIGNvbnN0IHN0
cnVjdCBfX0NURnJhbWVzZXR0ZXIgKiBDVEZyYW1lc2V0dGVyUmVmOwoKCgoKCgoKQ0ZUeXBlSUQg
Q1RGcmFtZXNldHRlckdldFR5cGVJRCggdm9pZCApIDsKIyA2MiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4
dC5mcmFtZXdvcmsvSGVhZGVycy9DVEZyYW1lc2V0dGVyLmgiIDMKQ1RGcmFtZXNldHRlclJlZiBD
VEZyYW1lc2V0dGVyQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoCiBDRkF0dHJpYnV0ZWRTdHJp
bmdSZWYgc3RyaW5nICkgOwojIDEwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVh
ZGVycy9DVEZyYW1lc2V0dGVyLmgiIDMKQ1RGcmFtZVJlZiBDVEZyYW1lc2V0dGVyQ3JlYXRlRnJh
bWUoCiBDVEZyYW1lc2V0dGVyUmVmIGZyYW1lc2V0dGVyLAogQ0ZSYW5nZSBzdHJpbmdSYW5nZSwK
IENHUGF0aFJlZiBwYXRoLAogQ0ZEaWN0aW9uYXJ5UmVmIGZyYW1lQXR0cmlidXRlcyApIDsKIyAx
MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RGcmFtZXNldHRlci5o
IiAzCkNUVHlwZXNldHRlclJlZiBDVEZyYW1lc2V0dGVyR2V0VHlwZXNldHRlcigKIENURnJhbWVz
ZXR0ZXJSZWYgZnJhbWVzZXR0ZXIgKSA7CiMgMTY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1l
d29yay9IZWFkZXJzL0NURnJhbWVzZXR0ZXIuaCIgMwpDR1NpemUgQ1RGcmFtZXNldHRlclN1Z2dl
c3RGcmFtZVNpemVXaXRoQ29uc3RyYWludHMoCiBDVEZyYW1lc2V0dGVyUmVmIGZyYW1lc2V0dGVy
LAogQ0ZSYW5nZSBzdHJpbmdSYW5nZSwKIENGRGljdGlvbmFyeVJlZiBmcmFtZUF0dHJpYnV0ZXMs
CiBDR1NpemUgY29uc3RyYWludHMsCiBDRlJhbmdlKiBmaXRSYW5nZSApIDsKCgoKfQojIDI3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NvcmVUZXh0LmgiIDIgMwojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RHbHlwaEluZm8uaCIgMSAz
CiMgMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RHbHlwaEluZm8u
aCIgMwojZGVmaW5lIF9fQ1RHTFlQSElORk9fXyAKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5m
cmFtZXdvcmsvSGVhZGVycy9DVEZvbnQuaCIgMSAzCiMgMjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQu
ZnJhbWV3b3JrL0hlYWRlcnMvQ1RHbHlwaEluZm8uaCIgMiAzCgoKZXh0ZXJuICJDIiB7CgoKCgoK
CnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ1RHbHlwaEluZm8gKiBDVEdseXBoSW5mb1JlZjsKCgoK
CgoKQ0ZUeXBlSUQgQ1RHbHlwaEluZm9HZXRUeXBlSUQoIHZvaWQgKSA7CiMgNjggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RHbHlwaEluZm8uaCIgMwplbnVtCnsKIGtD
VElkZW50aXR5TWFwcGluZ0NoYXJhY3RlckNvbGxlY3Rpb24gPSAwLAoga0NUQWRvYmVDTlMxQ2hh
cmFjdGVyQ29sbGVjdGlvbiA9IDEsCiBrQ1RBZG9iZUdCMUNoYXJhY3RlckNvbGxlY3Rpb24gPSAy
LAoga0NUQWRvYmVKYXBhbjFDaGFyYWN0ZXJDb2xsZWN0aW9uID0gMywKIGtDVEFkb2JlSmFwYW4y
Q2hhcmFjdGVyQ29sbGVjdGlvbiA9IDQsCiBrQ1RBZG9iZUtvcmVhMUNoYXJhY3RlckNvbGxlY3Rp
b24gPSA1Cn07CnR5cGVkZWYgdWludDE2X3QgQ1RDaGFyYWN0ZXJDb2xsZWN0aW9uOwojIDEwNiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVEdseXBoSW5mby5oIiAzCkNU
R2x5cGhJbmZvUmVmIENUR2x5cGhJbmZvQ3JlYXRlV2l0aEdseXBoTmFtZSgKIENGU3RyaW5nUmVm
IGdseXBoTmFtZSwKIENURm9udFJlZiBmb250LAogQ0ZTdHJpbmdSZWYgYmFzZVN0cmluZyApIDsK
IyAxMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RHbHlwaEluZm8u
aCIgMwpDVEdseXBoSW5mb1JlZiBDVEdseXBoSW5mb0NyZWF0ZVdpdGhHbHlwaCgKIENHR2x5cGgg
Z2x5cGgsCiBDVEZvbnRSZWYgZm9udCwKIENGU3RyaW5nUmVmIGJhc2VTdHJpbmcgKSA7CiMgMTYy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUR2x5cGhJbmZvLmgiIDMK
Q1RHbHlwaEluZm9SZWYgQ1RHbHlwaEluZm9DcmVhdGVXaXRoQ2hhcmFjdGVySWRlbnRpZmllcigK
IENHRm9udEluZGV4IGNpZCwKIENUQ2hhcmFjdGVyQ29sbGVjdGlvbiBjb2xsZWN0aW9uLAogQ0ZT
dHJpbmdSZWYgYmFzZVN0cmluZyApIDsKIyAxODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3
b3JrL0hlYWRlcnMvQ1RHbHlwaEluZm8uaCIgMwpDRlN0cmluZ1JlZiBDVEdseXBoSW5mb0dldEds
eXBoTmFtZSgKIENUR2x5cGhJbmZvUmVmIGdseXBoSW5mbyApIDsKIyAyMDQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RHbHlwaEluZm8uaCIgMwpDR0ZvbnRJbmRleCBD
VEdseXBoSW5mb0dldENoYXJhY3RlcklkZW50aWZpZXIoCiBDVEdseXBoSW5mb1JlZiBnbHlwaElu
Zm8gKSA7CiMgMjI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUR2x5
cGhJbmZvLmgiIDMKQ1RDaGFyYWN0ZXJDb2xsZWN0aW9uIENUR2x5cGhJbmZvR2V0Q2hhcmFjdGVy
Q29sbGVjdGlvbigKIENUR2x5cGhJbmZvUmVmIGdseXBoSW5mbyApIDsKCgoKfQojIDI4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NvcmVUZXh0LmgiIDIgMwojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RMaW5lLmgiIDEgMwojIDI5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NvcmVUZXh0LmgiIDIgMwojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RQYXJhZ3JhcGhTdHlsZS5o
IiAxIDMKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFBhcmFn
cmFwaFN0eWxlLmgiIDMKI2RlZmluZSBfX0NUUEFSQUdSQVBIU1RZTEVfXyAKCgoKCgoKZXh0ZXJu
ICJDIiB7CgoKCgoKCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ1RQYXJhZ3JhcGhTdHlsZSAqIENU
UGFyYWdyYXBoU3R5bGVSZWY7CgoKCgoKCgpDRlR5cGVJRCBDVFBhcmFncmFwaFN0eWxlR2V0VHlw
ZUlEKCB2b2lkICkgOwojIDY4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJz
L0NUUGFyYWdyYXBoU3R5bGUuaCIgMwplbnVtCnsKIGtDVExlZnRUZXh0QWxpZ25tZW50ID0gMCwK
IGtDVFJpZ2h0VGV4dEFsaWdubWVudCA9IDEsCiBrQ1RDZW50ZXJUZXh0QWxpZ25tZW50ID0gMiwK
IGtDVEp1c3RpZmllZFRleHRBbGlnbm1lbnQgPSAzLAoga0NUTmF0dXJhbFRleHRBbGlnbm1lbnQg
PSA0Cn07CnR5cGVkZWYgdWludDhfdCBDVFRleHRBbGlnbm1lbnQ7CiMgMTA5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUUGFyYWdyYXBoU3R5bGUuaCIgMwplbnVtCnsK
IGtDVExpbmVCcmVha0J5V29yZFdyYXBwaW5nID0gMCwKIGtDVExpbmVCcmVha0J5Q2hhcldyYXBw
aW5nID0gMSwKIGtDVExpbmVCcmVha0J5Q2xpcHBpbmcgPSAyLAoga0NUTGluZUJyZWFrQnlUcnVu
Y2F0aW5nSGVhZCA9IDMsCiBrQ1RMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsID0gNCwKIGtDVExp
bmVCcmVha0J5VHJ1bmNhdGluZ01pZGRsZSA9IDUKfTsKdHlwZWRlZiB1aW50OF90IENUTGluZUJy
ZWFrTW9kZTsKIyAxMzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RQ
YXJhZ3JhcGhTdHlsZS5oIiAzCmVudW0Kewoga0NUV3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwgPSAt
MSwKIGtDVFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA9IDAsCiBrQ1RXcml0aW5nRGlyZWN0
aW9uUmlnaHRUb0xlZnQgPSAxCn07CnR5cGVkZWYgaW50OF90IENUV3JpdGluZ0RpcmVjdGlvbjsK
IyAyOTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RQYXJhZ3JhcGhT
dHlsZS5oIiAzCmVudW0Kewoga0NUUGFyYWdyYXBoU3R5bGVTcGVjaWZpZXJBbGlnbm1lbnQgPSAw
LAoga0NUUGFyYWdyYXBoU3R5bGVTcGVjaWZpZXJGaXJzdExpbmVIZWFkSW5kZW50ID0gMSwKIGtD
VFBhcmFncmFwaFN0eWxlU3BlY2lmaWVySGVhZEluZGVudCA9IDIsCiBrQ1RQYXJhZ3JhcGhTdHls
ZVNwZWNpZmllclRhaWxJbmRlbnQgPSAzLAoga0NUUGFyYWdyYXBoU3R5bGVTcGVjaWZpZXJUYWJT
dG9wcyA9IDQsCiBrQ1RQYXJhZ3JhcGhTdHlsZVNwZWNpZmllckRlZmF1bHRUYWJJbnRlcnZhbCA9
IDUsCiBrQ1RQYXJhZ3JhcGhTdHlsZVNwZWNpZmllckxpbmVCcmVha01vZGUgPSA2LAoga0NUUGFy
YWdyYXBoU3R5bGVTcGVjaWZpZXJMaW5lSGVpZ2h0TXVsdGlwbGUgPSA3LAoga0NUUGFyYWdyYXBo
U3R5bGVTcGVjaWZpZXJNYXhpbXVtTGluZUhlaWdodCA9IDgsCiBrQ1RQYXJhZ3JhcGhTdHlsZVNw
ZWNpZmllck1pbmltdW1MaW5lSGVpZ2h0ID0gOSwKIGtDVFBhcmFncmFwaFN0eWxlU3BlY2lmaWVy
TGluZVNwYWNpbmcgPSAxMCwKIGtDVFBhcmFncmFwaFN0eWxlU3BlY2lmaWVyUGFyYWdyYXBoU3Bh
Y2luZyA9IDExLAoga0NUUGFyYWdyYXBoU3R5bGVTcGVjaWZpZXJQYXJhZ3JhcGhTcGFjaW5nQmVm
b3JlID0gMTIsCiBrQ1RQYXJhZ3JhcGhTdHlsZVNwZWNpZmllckJhc2VXcml0aW5nRGlyZWN0aW9u
ID0gMTMsCgoga0NUUGFyYWdyYXBoU3R5bGVTcGVjaWZpZXJDb3VudCA9IDE0Cn07CnR5cGVkZWYg
dWludDMyX3QgQ1RQYXJhZ3JhcGhTdHlsZVNwZWNpZmllcjsKIyAzMzYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29y
ZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RQYXJhZ3JhcGhTdHlsZS5oIiAzCnR5cGVkZWYgc3Ry
dWN0IENUUGFyYWdyYXBoU3R5bGVTZXR0aW5nCnsKIENUUGFyYWdyYXBoU3R5bGVTcGVjaWZpZXIg
c3BlYzsKIHNpemVfdCB2YWx1ZVNpemU7CiBjb25zdCB2b2lkKiB2YWx1ZTsKCn0gQ1RQYXJhZ3Jh
cGhTdHlsZVNldHRpbmc7CiMgMzc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFk
ZXJzL0NUUGFyYWdyYXBoU3R5bGUuaCIgMwpDVFBhcmFncmFwaFN0eWxlUmVmIENUUGFyYWdyYXBo
U3R5bGVDcmVhdGUoCiBjb25zdCBDVFBhcmFncmFwaFN0eWxlU2V0dGluZyogc2V0dGluZ3MsCiBD
RkluZGV4IHNldHRpbmdDb3VudCApIDsKIyAzOTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3
b3JrL0hlYWRlcnMvQ1RQYXJhZ3JhcGhTdHlsZS5oIiAzCkNUUGFyYWdyYXBoU3R5bGVSZWYgQ1RQ
YXJhZ3JhcGhTdHlsZUNyZWF0ZUNvcHkoCiBDVFBhcmFncmFwaFN0eWxlUmVmIHBhcmFncmFwaFN0
eWxlICkgOwojIDQ0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFBh
cmFncmFwaFN0eWxlLmgiIDMKYm9vbCBDVFBhcmFncmFwaFN0eWxlR2V0VmFsdWVGb3JTcGVjaWZp
ZXIoCiBDVFBhcmFncmFwaFN0eWxlUmVmIHBhcmFncmFwaFN0eWxlLAogQ1RQYXJhZ3JhcGhTdHls
ZVNwZWNpZmllciBzcGVjLAogc2l6ZV90IHZhbHVlQnVmZmVyU2l6ZSwKIHZvaWQqIHZhbHVlQnVm
ZmVyICkgOwoKCgp9CiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMv
Q29yZVRleHQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVy
cy9DVFJ1bi5oIiAxIDMKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVy
cy9DVFJ1bi5oIiAzCiNkZWZpbmUgX19DVFJVTl9fIAoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlR3Jh
cGhpY3MuZnJhbWV3b3JrL0hlYWRlcnMvQ0dDb250ZXh0LmgiIDEgMwojIDIyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUUnVuLmgiIDIgMwoKCgpleHRlcm4gIkMiIHsK
CgoKCgoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DVFJ1biAqIENUUnVuUmVmOwojIDU3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUUnVuLmgiIDMKZW51bQp7CiBrQ1RS
dW5TdGF0dXNOb1N0YXR1cyA9IDAsCiBrQ1RSdW5TdGF0dXNSaWdodFRvTGVmdCA9ICgxIDw8IDAp
LAoga0NUUnVuU3RhdHVzTm9uTW9ub3RvbmljID0gKDEgPDwgMSksCiBrQ1RSdW5TdGF0dXNIYXNO
b25JZGVudGl0eU1hdHJpeCA9ICgxIDw8IDIpCn07CnR5cGVkZWYgdWludDMyX3QgQ1RSdW5TdGF0
dXM7CgoKCgoKCgpDRlR5cGVJRCBDVFJ1bkdldFR5cGVJRCggdm9pZCApIDsKIyA5MSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFJ1bi5oIiAzCkNGSW5kZXggQ1RSdW5H
ZXRHbHlwaENvdW50KAogQ1RSdW5SZWYgcnVuICkgOwojIDExMiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4
dC5mcmFtZXdvcmsvSGVhZGVycy9DVFJ1bi5oIiAzCkNGRGljdGlvbmFyeVJlZiBDVFJ1bkdldEF0
dHJpYnV0ZXMoCiBDVFJ1blJlZiBydW4gKSA7CiMgMTM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZy
YW1ld29yay9IZWFkZXJzL0NUUnVuLmgiIDMKQ1RSdW5TdGF0dXMgQ1RSdW5HZXRTdGF0dXMoCiBD
VFJ1blJlZiBydW4gKSA7CiMgMTU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFk
ZXJzL0NUUnVuLmgiIDMKY29uc3QgQ0dHbHlwaCogQ1RSdW5HZXRHbHlwaHNQdHIoCiBDVFJ1blJl
ZiBydW4gKSA7CiMgMTc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NU
UnVuLmgiIDMKdm9pZCBDVFJ1bkdldEdseXBocygKIENUUnVuUmVmIHJ1biwKIENGUmFuZ2UgcmFu
Z2UsCiBDR0dseXBoIGJ1ZmZlcltdICkgOwojIDIwMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFt
ZXdvcmsvSGVhZGVycy9DVFJ1bi5oIiAzCmNvbnN0IENHUG9pbnQqIENUUnVuR2V0UG9zaXRpb25z
UHRyKAogQ1RSdW5SZWYgcnVuICkgOwojIDIyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVFJ1bi5oIiAzCnZvaWQgQ1RSdW5HZXRQb3NpdGlvbnMoCiBDVFJ1blJlZiBy
dW4sCiBDRlJhbmdlIHJhbmdlLAogQ0dQb2ludCBidWZmZXJbXSApIDsKIyAyNTMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RSdW4uaCIgMwpjb25zdCBDR1NpemUqIENU
UnVuR2V0QWR2YW5jZXNQdHIoCiBDVFJ1blJlZiBydW4gKSA7CiMgMjc1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
cmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUUnVuLmgiIDMKdm9pZCBDVFJ1bkdldEFkdmFuY2Vz
KAogQ1RSdW5SZWYgcnVuLAogQ0ZSYW5nZSByYW5nZSwKIENHU2l6ZSBidWZmZXJbXSApIDsKIyAz
MDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RSdW4uaCIgMwpjb25z
dCBDRkluZGV4KiBDVFJ1bkdldFN0cmluZ0luZGljZXNQdHIoCiBDVFJ1blJlZiBydW4gKSA7CiMg
MzI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUUnVuLmgiIDMKdm9p
ZCBDVFJ1bkdldFN0cmluZ0luZGljZXMoCiBDVFJ1blJlZiBydW4sCiBDRlJhbmdlIHJhbmdlLAog
Q0ZJbmRleCBidWZmZXJbXSApIDsKIyAzNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3Jr
L0hlYWRlcnMvQ1RSdW4uaCIgMwpDRlJhbmdlIENUUnVuR2V0U3RyaW5nUmFuZ2UoCiBDVFJ1blJl
ZiBydW4gKSA7CiMgMzc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NU
UnVuLmgiIDMKZG91YmxlIENUUnVuR2V0VHlwb2dyYXBoaWNCb3VuZHMoCiBDVFJ1blJlZiBydW4s
CiBDRlJhbmdlIHJhbmdlLAogQ0dGbG9hdCogYXNjZW50LAogQ0dGbG9hdCogZGVzY2VudCwKIENH
RmxvYXQqIGxlYWRpbmcgKSA7CiMgNDA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9I
ZWFkZXJzL0NUUnVuLmgiIDMKQ0dSZWN0IENUUnVuR2V0SW1hZ2VCb3VuZHMoCiBDVFJ1blJlZiBy
dW4sCiBDR0NvbnRleHRSZWYgY29udGV4dCwKIENGUmFuZ2UgcmFuZ2UgKSA7CiMgNDI5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUUnVuLmgiIDMKQ0dBZmZpbmVUcmFu
c2Zvcm0gQ1RSdW5HZXRUZXh0TWF0cml4KAogQ1RSdW5SZWYgcnVuICkgOwojIDQ1NyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFJ1bi5oIiAzCnZvaWQgQ1RSdW5EcmF3
KAogQ1RSdW5SZWYgcnVuLAogQ0dDb250ZXh0UmVmIGNvbnRleHQsCiBDRlJhbmdlIHJhbmdlICkg
OwoKCgp9CiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZVRl
eHQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFN0
cmluZ0F0dHJpYnV0ZXMuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3Jr
L0hlYWRlcnMvQ1RTdHJpbmdBdHRyaWJ1dGVzLmgiIDMKI2RlZmluZSBfX0NUU1RSSU5HQVRUUklC
VVRFU19fIAoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9IZWFkZXJz
L0NHQ29sb3IuaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0
aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRl
cnMvQ1RTdHJpbmdBdHRyaWJ1dGVzLmgiIDIgMwoKCmV4dGVybiAiQyIgewojIDM3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUU3RyaW5nQXR0cmlidXRlcy5oIiAzCmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250QXR0cmlidXRlTmFtZSA7CiMgNTUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RTdHJpbmdBdHRyaWJ1dGVzLmgiIDMK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZvcmVncm91bmRDb2xvckZyb21Db250ZXh0QXR0
cmlidXRlTmFtZSA7CiMgNzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMv
Q1RTdHJpbmdBdHRyaWJ1dGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEtlcm5B
dHRyaWJ1dGVOYW1lIDsKIyA5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVy
cy9DVFN0cmluZ0F0dHJpYnV0ZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NUTGln
YXR1cmVBdHRyaWJ1dGVOYW1lIDsKIyAxMDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3Jr
L0hlYWRlcnMvQ1RTdHJpbmdBdHRyaWJ1dGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgOwojIDExNiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3Jl
VGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFN0cmluZ0F0dHJpYnV0ZXMuaCIgMwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0NUUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lIDsKIyAxMzAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RTdHJpbmdBdHRyaWJ1dGVzLmgi
IDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVFN0cm9rZVdpZHRoQXR0cmlidXRlTmFtZSA7
CiMgMTQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUU3RyaW5nQXR0
cmlidXRlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RTdHJva2VDb2xvckF0dHJp
YnV0ZU5hbWUgOwojIDE1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9D
VFN0cmluZ0F0dHJpYnV0ZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NUVW5kZXJs
aW5lU3R5bGVBdHRyaWJ1dGVOYW1lIDsKIyAxNjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3
b3JrL0hlYWRlcnMvQ1RTdHJpbmdBdHRyaWJ1dGVzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtDVFN1cGVyc2NyaXB0QXR0cmlidXRlTmFtZSA7CiMgMTc3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVU
ZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUU3RyaW5nQXR0cmlidXRlcy5oIiAzCmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrQ1RVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWUgOwojIDE4OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFN0cmluZ0F0dHJpYnV0ZXMuaCIg
MwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NUVmVydGljYWxGb3Jtc0F0dHJpYnV0ZU5hbWUg
OwojIDIwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFN0cmluZ0F0
dHJpYnV0ZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NUR2x5cGhJbmZvQXR0cmli
dXRlTmFtZSA7CiMgMjE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NU
U3RyaW5nQXR0cmlidXRlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RDaGFyYWN0
ZXJTaGFwZUF0dHJpYnV0ZU5hbWUgOwojIDIyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdv
cmsvSGVhZGVycy9DVFN0cmluZ0F0dHJpYnV0ZXMuaCIgMwplbnVtCnsKIGtDVFVuZGVybGluZVN0
eWxlTm9uZSA9IDB4MDAsCiBrQ1RVbmRlcmxpbmVTdHlsZVNpbmdsZSA9IDB4MDEsCiBrQ1RVbmRl
cmxpbmVTdHlsZVRoaWNrID0gMHgwMiwKIGtDVFVuZGVybGluZVN0eWxlRG91YmxlID0gMHgwOQp9
Owp0eXBlZGVmIGludDMyX3QgQ1RVbmRlcmxpbmVTdHlsZTsKIyAyNDggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29y
ZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RTdHJpbmdBdHRyaWJ1dGVzLmgiIDMKZW51bQp7CiBr
Q1RVbmRlcmxpbmVQYXR0ZXJuU29saWQgPSAweDAwMDAsCiBrQ1RVbmRlcmxpbmVQYXR0ZXJuRG90
ID0gMHgwMTAwLAoga0NUVW5kZXJsaW5lUGF0dGVybkRhc2ggPSAweDAyMDAsCiBrQ1RVbmRlcmxp
bmVQYXR0ZXJuRGFzaERvdCA9IDB4MDMwMCwKIGtDVFVuZGVybGluZVBhdHRlcm5EYXNoRG90RG90
ID0gMHgwNDAwCn07CnR5cGVkZWYgaW50MzJfdCBDVFVuZGVybGluZVN0eWxlTW9kaWZpZXJzOwoK
Cgp9CiMgMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZVRleHQu
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFRleHRU
YWIuaCIgMSAzCiMgMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RU
ZXh0VGFiLmgiIDMKI2RlZmluZSBfX0NUVEVYVFRBQl9fIAoKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVU
ZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUUGFyYWdyYXBoU3R5bGUuaCIgMSAzCiMgMjEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1l
d29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RUZXh0VGFiLmgiIDIgMwoKCgoKCmV4
dGVybiAiQyIgewojIDQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NU
VGV4dFRhYi5oIiAzCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ1RUZXh0VGFiICogQ1RUZXh0VGFi
UmVmOwoKCgoKCgoKQ0ZUeXBlSUQgQ1RUZXh0VGFiR2V0VHlwZUlEKCB2b2lkICkgOwojIDcyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NUVGV4dFRhYi5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrQ1RUYWJDb2x1bW5UZXJtaW5hdG9yc0F0dHJpYnV0ZU5hbWUg
OwojIDEwMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFRleHRUYWIu
aCIgMwpDVFRleHRUYWJSZWYgQ1RUZXh0VGFiQ3JlYXRlKAogQ1RUZXh0QWxpZ25tZW50IGFsaWdu
bWVudCwKIGRvdWJsZSBsb2NhdGlvbiwKIENGRGljdGlvbmFyeVJlZiBvcHRpb25zICkgOwojIDEy
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9DVFRleHRUYWIuaCIgMwpD
VFRleHRBbGlnbm1lbnQgQ1RUZXh0VGFiR2V0QWxpZ25tZW50KAogQ1RUZXh0VGFiUmVmIHRhYiAp
IDsKIyAxMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RUZXh0VGFi
LmgiIDMKZG91YmxlIENUVGV4dFRhYkdldExvY2F0aW9uKAogQ1RUZXh0VGFiUmVmIHRhYiApIDsK
IyAxNDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ1RUZXh0VGFiLmgi
IDMKQ0ZEaWN0aW9uYXJ5UmVmIENUVGV4dFRhYkdldE9wdGlvbnMoCiBDVFRleHRUYWJSZWYgdGFi
ICkgOwoKCgp9CiMgMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hlYWRlcnMvQ29y
ZVRleHQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcmsvSGVhZGVycy9D
VFR5cGVzZXR0ZXIuaCIgMSAzCiMgMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL0hl
YWRlcnMvQ29yZVRleHQuaCIgMiAzCgoKCmV4dGVybiAiQyIgewojIDU5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
cmVUZXh0LmZyYW1ld29yay9IZWFkZXJzL0NvcmVUZXh0LmgiIDMKdWludDMyX3QgQ1RHZXRDb3Jl
VGV4dFZlcnNpb24oIHZvaWQgKSA7CgojZGVmaW5lIGtDVFZlcnNpb25OdW1iZXIxMF81IDB4MDAw
MjAwMDAKI2RlZmluZSBrQ1RWZXJzaW9uTnVtYmVyMTBfNV8yIDB4MDAwMjAwMDEKI2RlZmluZSBr
Q1RWZXJzaW9uTnVtYmVyMTBfNV8zIDB4MDAwMjAwMDIKI2RlZmluZSBrQ1RWZXJzaW9uTnVtYmVy
MTBfNV81IDB4MDAwMjAwMDMKI2RlZmluZSBrQ1RWZXJzaW9uTnVtYmVyMTBfNiAweDAwMDMwMDAw
CgoKfQojIDU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9IZWFkZXJzL0FwcGxpY2F0aW9uU2VydmljZXMuaCIgMiAzCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JTeW5jLmgiIDEgMwojIDU1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9I
ZWFkZXJzL0FwcGxpY2F0aW9uU2VydmljZXMuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUlP
LmZyYW1ld29yay9IZWFkZXJzL0ltYWdlSU8uaCIgMSAzCgoKCgoKCgojZGVmaW5lIF9fSU1BR0VJ
T19fIAoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9IZWFkZXJzL0NHSW1h
Z2VTb3VyY2UuaCIgMSAzCgoKCgoKCgojZGVmaW5lIENHSU1BR0VTT1VSQ0VfSF8gCgp0eXBlZGVm
IHN0cnVjdCBDR0ltYWdlU291cmNlICpDR0ltYWdlU291cmNlUmVmOwoKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvSGVhZGVycy9Db3JlR3JhcGhpY3MuaCIgMSAzCiMgMTMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvSGVhZGVycy9DR0ltYWdlU291cmNlLmgiIDIg
MwoKCgplbnVtIENHSW1hZ2VTb3VyY2VTdGF0dXMgewogICAga0NHSW1hZ2VTdGF0dXNVbmV4cGVj
dGVkRU9GID0gLTUsCiAgICBrQ0dJbWFnZVN0YXR1c0ludmFsaWREYXRhID0gLTQsCiAgICBrQ0dJ
bWFnZVN0YXR1c1Vua25vd25UeXBlID0gLTMsCiAgICBrQ0dJbWFnZVN0YXR1c1JlYWRpbmdIZWFk
ZXIgPSAtMiwKICAgIGtDR0ltYWdlU3RhdHVzSW5jb21wbGV0ZSA9IC0xLAogICAga0NHSW1hZ2VT
dGF0dXNDb21wbGV0ZSA9IDAKfTsKdHlwZWRlZiBlbnVtIENHSW1hZ2VTb3VyY2VTdGF0dXMgQ0dJ
bWFnZVNvdXJjZVN0YXR1czsKIyAzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9IZWFk
ZXJzL0NHSW1hZ2VTb3VyY2UuaCIgMwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0lt
YWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwojIDQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrL0hlYWRlcnMvQ0dJ
bWFnZVNvdXJjZS5oIiAzCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3Vy
Y2VTaG91bGRDYWNoZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTaG91bGRBbGxv
d0Zsb2F0IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDY0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrL0hlYWRlcnMvQ0dJbWFnZVNvdXJjZS5oIiAzCmV4dGVy
biAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VDcmVhdGVUaHVtYm5haWxGcm9t
SW1hZ2VJZkFic2VudCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA3
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9IZWFkZXJzL0NHSW1hZ2VTb3VyY2UuaCIg
MwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlU291cmNlQ3JlYXRlVGh1bWJu
YWlsRnJvbUltYWdlQWx3YXlzIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwoKCgoKCgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlU291cmNlVGh1bWJu
YWlsTWF4UGl4ZWxTaXplIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgoKCgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlU291cmNlQ3JlYXRlVGh1
bWJuYWlsV2l0aFRyYW5zZm9ybSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKCgoKCgpleHRlcm4gIkMiIENGVHlwZUlEIENHSW1hZ2VTb3VyY2VHZXRUeXBlSUQgKHZvaWQp
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gIkMiIENG
QXJyYXlSZWYgQ0dJbWFnZVNvdXJjZUNvcHlUeXBlSWRlbnRpZmllcnModm9pZCkgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBDR0ltYWdlU291
cmNlUmVmIENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoRGF0YVByb3ZpZGVyKENHRGF0YVByb3ZpZGVy
UmVmIHByb3ZpZGVyLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucykgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBDR0ltYWdlU291cmNlUmVmIENH
SW1hZ2VTb3VyY2VDcmVhdGVXaXRoRGF0YShDRkRhdGFSZWYgZGF0YSwgQ0ZEaWN0aW9uYXJ5UmVm
IG9wdGlvbnMpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4
dGVybiAiQyIgQ0dJbWFnZVNvdXJjZVJlZiBDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVSTChDRlVS
TFJlZiB1cmwsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0ZXJuICJDIiBDRlN0cmluZ1JlZiBDR0ltYWdlU291
cmNlR2V0VHlwZShDR0ltYWdlU291cmNlUmVmIGlzcmMpIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBzaXplX3QgQ0dJbWFnZVNvdXJjZUdldENv
dW50KENHSW1hZ2VTb3VyY2VSZWYgaXNyYykgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJDIiBDRkRpY3Rpb25hcnlSZWYgQ0dJbWFnZVNvdXJjZUNv
cHlQcm9wZXJ0aWVzKENHSW1hZ2VTb3VyY2VSZWYgaXNyYywgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlv
bnMpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgpleHRlcm4g
IkMiIENGRGljdGlvbmFyeVJlZiBDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KENH
SW1hZ2VTb3VyY2VSZWYgaXNyYywgc2l6ZV90IGluZGV4LCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9u
cykgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0ZXJuICJD
IiBDR0ltYWdlUmVmIENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgoQ0dJbWFnZVNvdXJj
ZVJlZiBpc3JjLCBzaXplX3QgaW5kZXgsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0ZXJuICJDIiBDR0ltYWdl
UmVmIENHSW1hZ2VTb3VyY2VDcmVhdGVUaHVtYm5haWxBdEluZGV4KENHSW1hZ2VTb3VyY2VSZWYg
aXNyYywgc2l6ZV90IGluZGV4LCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucykgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKCgpleHRlcm4gIkMiIENHSW1hZ2VTb3Vy
Y2VSZWYgQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVudGFsKENGRGljdGlvbmFyeVJlZiBvcHRp
b25zKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgoKZXh0ZXJu
ICJDIiB2b2lkIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKENHSW1hZ2VTb3VyY2VSZWYgaXNyYywg
Q0ZEYXRhUmVmIGRhdGEsIGJvb2wgZmluYWwpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgoKCgpleHRlcm4gIkMiIHZvaWQgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQ
cm92aWRlcihDR0ltYWdlU291cmNlUmVmIGlzcmMsIENHRGF0YVByb3ZpZGVyUmVmIHByb3ZpZGVy
LCBib29sIGZpbmFsKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoK
CgpleHRlcm4gIkMiIENHSW1hZ2VTb3VyY2VTdGF0dXMgQ0dJbWFnZVNvdXJjZUdldFN0YXR1cyhD
R0ltYWdlU291cmNlUmVmIGlzcmMpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwoKCgoKCgpleHRlcm4gIkMiIENHSW1hZ2VTb3VyY2VTdGF0dXMgQ0dJbWFnZVNvdXJjZUdl
dFN0YXR1c0F0SW5kZXgoQ0dJbWFnZVNvdXJjZVJlZiBpc3JjLCBzaXplX3QgaW5kZXgpIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDE1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdl
SU8uZnJhbWV3b3JrL0hlYWRlcnMvSW1hZ2VJTy5oIiAyIDMKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFn
ZUlPLmZyYW1ld29yay9IZWFkZXJzL0NHSW1hZ2VEZXN0aW5hdGlvbi5oIiAxIDMKCgoKCgoKCiNk
ZWZpbmUgQ0dJTUFHRURFU1RJTkFUSU9OX0hfIAoKdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZURlc3Rp
bmF0aW9uICpDR0ltYWdlRGVzdGluYXRpb25SZWY7CgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29yZUdyYXBo
aWNzLmZyYW1ld29yay9IZWFkZXJzL0NvcmVHcmFwaGljcy5oIiAxIDMKIyAxMyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9JbWFnZUlPLmZyYW1ld29yay9IZWFkZXJzL0NHSW1hZ2VEZXN0aW5hdGlvbi5oIiAyIDMKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrL0hlYWRlcnMvQ0dJbWFnZVNvdXJjZS5oIiAx
IDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9IZWFkZXJzL0NHSW1hZ2VEZXN0
aW5hdGlvbi5oIiAyIDMKIyAyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9IZWFkZXJz
L0NHSW1hZ2VEZXN0aW5hdGlvbi5oIiAzCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NH
SW1hZ2VEZXN0aW5hdGlvbkxvc3N5Q29tcHJlc3Npb25RdWFsaXR5IF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3Jr
L0hlYWRlcnMvQ0dJbWFnZURlc3RpbmF0aW9uLmgiIDMKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0dJbWFnZURlc3RpbmF0aW9uQmFja2dyb3VuZENvbG9yIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiAiQyIgQ0ZUeXBlSUQgQ0dJbWFnZURl
c3RpbmF0aW9uR2V0VHlwZUlEKHZvaWQpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKCgpleHRlcm4gIkMiIENGQXJyYXlSZWYgQ0dJbWFnZURlc3RpbmF0aW9uQ29weVR5
cGVJZGVudGlmaWVycyh2b2lkKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKIyA1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9IZWFkZXJzL0NHSW1hZ2VEZXN0
aW5hdGlvbi5oIiAzCmV4dGVybiAiQyIgQ0dJbWFnZURlc3RpbmF0aW9uUmVmIENHSW1hZ2VEZXN0
aW5hdGlvbkNyZWF0ZVdpdGhEYXRhQ29uc3VtZXIoQ0dEYXRhQ29uc3VtZXJSZWYgY29uc3VtZXIs
IENGU3RyaW5nUmVmIHR5cGUsIHNpemVfdCBjb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMp
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgoKZXh0ZXJuICJD
IiBDR0ltYWdlRGVzdGluYXRpb25SZWYgQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEo
Q0ZNdXRhYmxlRGF0YVJlZiBkYXRhLCBDRlN0cmluZ1JlZiB0eXBlLCBzaXplX3QgY291bnQsIENG
RGljdGlvbmFyeVJlZiBvcHRpb25zKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKIyA3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9IZWFkZXJzL0NHSW1hZ2VE
ZXN0aW5hdGlvbi5oIiAzCmV4dGVybiAiQyIgQ0dJbWFnZURlc3RpbmF0aW9uUmVmIENHSW1hZ2VE
ZXN0aW5hdGlvbkNyZWF0ZVdpdGhVUkwoQ0ZVUkxSZWYgdXJsLCBDRlN0cmluZ1JlZiB0eXBlLCBz
aXplX3QgY291bnQsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBDR0ltYWdlRGVzdGluYXRp
b25TZXRQcm9wZXJ0aWVzKENHSW1hZ2VEZXN0aW5hdGlvblJlZiBpZHN0LCBDRkRpY3Rpb25hcnlS
ZWYgcHJvcGVydGllcykgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CgoKCmV4dGVybiAiQyIgdm9pZCBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShDR0ltYWdlRGVz
dGluYXRpb25SZWYgaWRzdCwgQ0dJbWFnZVJlZiBpbWFnZSwgQ0ZEaWN0aW9uYXJ5UmVmIHByb3Bl
cnRpZXMpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDk1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrL0hlYWRlcnMvQ0dJbWFnZURlc3RpbmF0aW9uLmgiIDMK
ZXh0ZXJuICJDIiB2b2lkIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlRnJvbVNvdXJjZShDR0lt
YWdlRGVzdGluYXRpb25SZWYgaWRzdCwgQ0dJbWFnZVNvdXJjZVJlZiBpc3JjLCBzaXplX3QgaW5k
ZXgsIENGRGljdGlvbmFyeVJlZiBwcm9wZXJ0aWVzKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgoKCgoKCmV4dGVybiAiQyIgYm9vbCBDR0ltYWdlRGVzdGluYXRpb25G
aW5hbGl6ZShDR0ltYWdlRGVzdGluYXRpb25SZWYgaWRzdCkgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvSGVh
ZGVycy9JbWFnZUlPLmgiIDIgMwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrL0hl
YWRlcnMvQ0dJbWFnZVByb3BlcnRpZXMuaCIgMSAzCgoKCgoKCgojZGVmaW5lIF9fQ0dJTUFHRVBS
T1BFUlRJRVNfXyAKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9IZWFkZXJzL0NH
SW1hZ2VQcm9wZXJ0aWVzLmgiIDMKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFn
ZVByb3BlcnR5VElGRkRpY3Rpb25hcnkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdJRkRp
Y3Rpb25hcnkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAi
QyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUpGSUZEaWN0aW9uYXJ5IF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3Ry
aW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlmRGljdGlvbmFyeSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFn
ZVByb3BlcnR5UE5HRGljdGlvbmFyeSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ0Rp
Y3Rpb25hcnkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAi
QyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdQU0RpY3Rpb25hcnkgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJp
bmdSZWYga0NHSW1hZ2VQcm9wZXJ0eVJhd0RpY3Rpb25hcnkgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQ
cm9wZXJ0eUNJRkZEaWN0aW9uYXJ5IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlNYWtlckNh
bm9uRGljdGlvbmFyeTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3Bl
cnR5TWFrZXJOaWtvbkRpY3Rpb25hcnk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NH
SW1hZ2VQcm9wZXJ0eU1ha2VyTWlub2x0YURpY3Rpb25hcnkgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQ
cm9wZXJ0eU1ha2VyRnVqaURpY3Rpb25hcnkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eU1h
a2VyT2x5bXB1c0RpY3Rpb25hcnkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eU1ha2VyUGVu
dGF4RGljdGlvbmFyeSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0
ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5OEJJTURpY3Rpb25hcnkg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3Qg
Q0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUROR0RpY3Rpb25hcnk7CmV4dGVybiAiQyIgY29u
c3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZBdXhEaWN0aW9uYXJ5IF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlSU8u
ZnJhbWV3b3JrL0hlYWRlcnMvQ0dJbWFnZVByb3BlcnRpZXMuaCIgMwpleHRlcm4gIkMiIGNvbnN0
IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlGaWxlU2l6ZSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKIyA1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9I
ZWFkZXJzL0NHSW1hZ2VQcm9wZXJ0aWVzLmgiIDMKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxIZWlnaHQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0
eVBpeGVsV2lkdGggX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpl
eHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlEUElIZWlnaHQgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZT
dHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eURQSVdpZHRoIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFn
ZVByb3BlcnR5RGVwdGggX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMg
ODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvSGVhZGVycy9DR0ltYWdlUHJvcGVydGll
cy5oIiAzCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eU9yaWVu
dGF0aW9uIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJu
ICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SXNGbG9hdCBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJp
bmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlzSW5kZXhlZCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQ
cm9wZXJ0eUhhc0FscGhhIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5Q29sb3JNb2Rl
bCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiAiQyIg
Y29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eVByb2ZpbGVOYW1lIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0dJbWFnZVByb3BlcnR5Q29sb3JNb2RlbFJHQiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVBy
b3BlcnR5Q29sb3JNb2RlbEdyYXkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUNvbG9yTW9k
ZWxDTVlLIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMi
IGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlDb2xvck1vZGVsTGFiIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5VElGRkNvbXByZXNzaW9uIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0lt
YWdlUHJvcGVydHlUSUZGUGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbiBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJ
bWFnZVByb3BlcnR5VElGRkRvY3VtZW50TmFtZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
VElGRkltYWdlRGVzY3JpcHRpb24gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eVRJRkZNYWtl
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0
IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlUSUZGTW9kZWwgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1h
Z2VQcm9wZXJ0eVRJRkZPcmllbnRhdGlvbiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5VElG
RlhSZXNvbHV0aW9uIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRl
cm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlUSUZGWVJlc29sdXRpb24g
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3Qg
Q0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eVRJRkZSZXNvbHV0aW9uVW5pdCBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0dJbWFnZVByb3BlcnR5VElGRlNvZnR3YXJlIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVy
dHlUSUZGVHJhbnNmZXJGdW5jdGlvbiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5VElGRkRh
dGVUaW1lIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMi
IGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlUSUZGQXJ0aXN0IF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVm
IGtDR0ltYWdlUHJvcGVydHlUSUZGSG9zdENvbXB1dGVyIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJv
cGVydHlUSUZGQ29weXJpZ2h0IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlUSUZGV2hpdGVQ
b2ludCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5VElGRlByaW1hcnlDaHJvbWF0aWNpdGll
cyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SkZJRlZlcnNpb24gX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYg
a0NHSW1hZ2VQcm9wZXJ0eUpGSUZYRGVuc2l0eSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
SkZJRllEZW5zaXR5IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRl
cm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlKRklGRGVuc2l0eVVuaXQg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3Qg
Q0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUpGSUZJc1Byb2dyZXNzaXZlIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0dJbWFnZVByb3BlcnR5RXhpZkV4cG9zdXJlVGltZSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFn
ZVByb3BlcnR5RXhpZkZOdW1iZXIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZFeHBv
c3VyZVByb2dyYW0gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVy
biAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZTcGVjdHJhbFNlbnNp
dGl2aXR5IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMi
IGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlmSVNPU3BlZWRSYXRpbmdzIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENG
U3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlmT0VDRiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVBy
b3BlcnR5RXhpZlZlcnNpb24gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZEYXRlVGlt
ZU9yaWdpbmFsIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4g
IkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlmRGF0ZVRpbWVEaWdpdGl6
ZWQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29u
c3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZDb21wb25lbnRzQ29uZmlndXJhdGlv
biBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25z
dCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5RXhpZkNvbXByZXNzZWRCaXRzUGVyUGl4ZWwg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3Qg
Q0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZTaHV0dGVyU3BlZWRWYWx1ZSBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0dJbWFnZVByb3BlcnR5RXhpZkFwZXJ0dXJlVmFsdWUgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1h
Z2VQcm9wZXJ0eUV4aWZCcmlnaHRuZXNzVmFsdWUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0
eUV4aWZFeHBvc3VyZUJpYXNWYWx1ZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5RXhpZk1h
eEFwZXJ0dXJlVmFsdWUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4
dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZTdWJqZWN0RGlz
dGFuY2UgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIg
Y29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZNZXRlcmluZ01vZGUgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJp
bmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZMaWdodFNvdXJjZSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFn
ZVByb3BlcnR5RXhpZkZsYXNoIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlmRm9jYWxM
ZW5ndGggX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIg
Y29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZTdWJqZWN0QXJlYSBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0dJbWFnZVByb3BlcnR5RXhpZk1ha2VyTm90ZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVBy
b3BlcnR5RXhpZlVzZXJDb21tZW50IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlmU3Vi
c2VjVGltZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJD
IiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5RXhpZlN1YnNlY1RpbWVPcmdpbmFs
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0
IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlmU3Vic2VjVGltZURpZ2l0aXplZCBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5RXhpZkZsYXNoUGl4VmVyc2lvbiBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0dJbWFnZVByb3BlcnR5RXhpZkNvbG9yU3BhY2UgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0
eUV4aWZQaXhlbFhEaW1lbnNpb24gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZQaXhl
bFlEaW1lbnNpb24gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVy
biAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZSZWxhdGVkU291bmRG
aWxlIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNv
bnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlmRmxhc2hFbmVyZ3kgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdS
ZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZTcGF0aWFsRnJlcXVlbmN5UmVzcG9uc2UgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdS
ZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZGb2NhbFBsYW5lWFJlc29sdXRpb24gX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYg
a0NHSW1hZ2VQcm9wZXJ0eUV4aWZGb2NhbFBsYW5lWVJlc29sdXRpb24gX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NH
SW1hZ2VQcm9wZXJ0eUV4aWZGb2NhbFBsYW5lUmVzb2x1dGlvblVuaXQgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NH
SW1hZ2VQcm9wZXJ0eUV4aWZTdWJqZWN0TG9jYXRpb24gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9w
ZXJ0eUV4aWZFeHBvc3VyZUluZGV4IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlmU2Vu
c2luZ01ldGhvZCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJu
ICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5RXhpZkZpbGVTb3VyY2UgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZT
dHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZTY2VuZVR5cGUgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1h
Z2VQcm9wZXJ0eUV4aWZDRkFQYXR0ZXJuIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlm
Q3VzdG9tUmVuZGVyZWQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4
dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZFeHBvc3VyZU1v
ZGUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29u
c3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZXaGl0ZUJhbGFuY2UgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdS
ZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZEaWdpdGFsWm9vbVJhdGlvIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0lt
YWdlUHJvcGVydHlFeGlmRm9jYWxMZW5JbjM1bW1GaWxtIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJv
cGVydHlFeGlmU2NlbmVDYXB0dXJlVHlwZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5RXhp
ZkdhaW5Db250cm9sIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRl
cm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlmQ29udHJhc3QgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZT
dHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZTYXR1cmF0aW9uIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0lt
YWdlUHJvcGVydHlFeGlmU2hhcnBuZXNzIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlm
RGV2aWNlU2V0dGluZ0Rlc2NyaXB0aW9uIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlFeGlm
U3ViamVjdERpc3RSYW5nZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
ZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5RXhpZkltYWdlVW5p
cXVlSUQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIg
Y29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZHYW1tYSBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVm
IGtDR0ltYWdlUHJvcGVydHlFeGlmQXV4TGVuc0luZm8gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9w
ZXJ0eUV4aWZBdXhMZW5zTW9kZWwgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZBdXhT
ZXJpYWxOdW1iZXIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVy
biAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZBdXhMZW5zSUQgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZT
dHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUV4aWZBdXhMZW5zU2VyaWFsTnVtYmVyIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5n
UmVmIGtDR0ltYWdlUHJvcGVydHlFeGlmQXV4SW1hZ2VOdW1iZXIgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1h
Z2VQcm9wZXJ0eUV4aWZBdXhGbGFzaENvbXBlbnNhdGlvbiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVBy
b3BlcnR5RXhpZkF1eE93bmVyTmFtZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5RXhpZkF1
eEZpcm13YXJlIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRl
cm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlHSUZMb29wQ291bnQgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZT
dHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdJRkRlbGF5VGltZSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFn
ZVByb3BlcnR5R0lGSW1hZ2VDb2xvck1hcCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5R0lG
SGFzR2xvYmFsQ29sb3JNYXAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdJRlVuY2xhbXBl
ZERlbGF5VGltZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0
ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5UE5HR2FtbWEgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJp
bmdSZWYga0NHSW1hZ2VQcm9wZXJ0eVBOR0ludGVybGFjZVR5cGUgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1h
Z2VQcm9wZXJ0eVBOR1hQaXhlbHNQZXJNZXRlciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
UE5HWVBpeGVsc1Blck1ldGVyIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlQTkdzUkdCSW50
ZW50IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNv
bnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlQTkdDaHJvbWF0aWNpdGllcyBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5R1BTVmVyc2lvbiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVBy
b3BlcnR5R1BTTGF0aXR1ZGVSZWYgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdQU0xhdGl0
dWRlIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNv
bnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlHUFNMb25naXR1ZGVSZWYgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdS
ZWYga0NHSW1hZ2VQcm9wZXJ0eUdQU0xvbmdpdHVkZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3Bl
cnR5R1BTQWx0aXR1ZGVSZWYgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdQU0FsdGl0dWRl
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0
IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlHUFNUaW1lU3RhbXAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NH
SW1hZ2VQcm9wZXJ0eUdQU1NhdGVsbGl0ZXMgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdQ
U1N0YXR1cyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJD
IiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5R1BTTWVhc3VyZU1vZGUgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJp
bmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdQU0RPUCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
R1BTU3BlZWRSZWYgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVy
biAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdQU1NwZWVkIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5n
UmVmIGtDR0ltYWdlUHJvcGVydHlHUFNUcmFja1JlZiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3Bl
cnR5R1BTVHJhY2sgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVy
biAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdQU0ltZ0RpcmVjdGlvblJl
ZiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25z
dCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5R1BTSW1nRGlyZWN0aW9uIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVm
IGtDR0ltYWdlUHJvcGVydHlHUFNNYXBEYXR1bSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
R1BTRGVzdExhdGl0dWRlUmVmIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlHUFNEZXN0TGF0
aXR1ZGUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIg
Y29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdQU0Rlc3RMb25naXR1ZGVSZWYgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZT
dHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdQU0Rlc3RMb25naXR1ZGUgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NH
SW1hZ2VQcm9wZXJ0eUdQU0Rlc3RCZWFyaW5nUmVmIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVy
dHlHUFNEZXN0QmVhcmluZyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
ZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5R1BTRGVzdERpc3Rh
bmNlUmVmIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMi
IGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlHUFNEZXN0RGlzdGFuY2UgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJp
bmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUdQU1Byb2Nlc3NpbmdNZXRob2QgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NH
SW1hZ2VQcm9wZXJ0eUdQU0FyZWFJbmZvcm1hdGlvbiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3Bl
cnR5R1BTRGF0ZVN0YW1wIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpl
eHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlHUFNEaWZmZXJlbnRh
bCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ09iamVjdFR5cGVSZWZlcmVuY2Ug
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3Qg
Q0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENPYmplY3RBdHRyaWJ1dGVSZWZlcmVuY2Ug
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3Qg
Q0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENPYmplY3ROYW1lIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtD
R0ltYWdlUHJvcGVydHlJUFRDRWRpdFN0YXR1cyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
SVBUQ0VkaXRvcmlhbFVwZGF0ZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ1VyZ2Vu
Y3kgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29u
c3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENTdWJqZWN0UmVmZXJlbmNlIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3Ry
aW5nUmVmIGtDR0ltYWdlUHJvcGVydHlJUFRDQ2F0ZWdvcnkgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQ
cm9wZXJ0eUlQVENTdXBwbGVtZW50YWxDYXRlZ29yeSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3Bl
cnR5SVBUQ0ZpeHR1cmVJZGVudGlmaWVyIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlJUFRD
S2V5d29yZHMgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAi
QyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENDb250ZW50TG9jYXRpb25D
b2RlIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNv
bnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlJUFRDQ29udGVudExvY2F0aW9uTmFtZSBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ1JlbGVhc2VEYXRlIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtD
R0ltYWdlUHJvcGVydHlJUFRDUmVsZWFzZVRpbWUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0
eUlQVENFeHBpcmF0aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ0V4cGly
YXRpb25UaW1lIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4g
IkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlJUFRDU3BlY2lhbEluc3RydWN0
aW9ucyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ0FjdGlvbkFkdmlzZWQgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJp
bmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENSZWZlcmVuY2VTZXJ2aWNlIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtD
R0ltYWdlUHJvcGVydHlJUFRDUmVmZXJlbmNlRGF0ZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3Bl
cnR5SVBUQ1JlZmVyZW5jZU51bWJlciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ0Rh
dGVDcmVhdGVkIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4g
IkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlJUFRDVGltZUNyZWF0ZWQgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZT
dHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENEaWdpdGFsQ3JlYXRpb25EYXRlIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5n
UmVmIGtDR0ltYWdlUHJvcGVydHlJUFRDRGlnaXRhbENyZWF0aW9uVGltZSBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0dJbWFnZVByb3BlcnR5SVBUQ09yaWdpbmF0aW5nUHJvZ3JhbSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFn
ZVByb3BlcnR5SVBUQ1Byb2dyYW1WZXJzaW9uIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlJ
UFRDT2JqZWN0Q3ljbGUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4
dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENCeWxpbmUgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZT
dHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENCeWxpbmVUaXRsZSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJ
bWFnZVByb3BlcnR5SVBUQ0NpdHkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENTdWJM
b2NhdGlvbiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJD
IiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ1Byb3ZpbmNlU3RhdGUgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZT
dHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENDb3VudHJ5UHJpbWFyeUxvY2F0aW9uQ29kZSBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ0NvdW50cnlQcmltYXJ5TG9jYXRpb25OYW1l
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0
IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlJUFRDT3JpZ2luYWxUcmFuc21pc3Npb25SZWZl
cmVuY2UgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIg
Y29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENIZWFkbGluZSBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ0NyZWRpdCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
SVBUQ1NvdXJjZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJu
ICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ0NvcHlyaWdodE5vdGlj
ZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25z
dCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ0NvbnRhY3QgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NH
SW1hZ2VQcm9wZXJ0eUlQVENDYXB0aW9uQWJzdHJhY3QgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9w
ZXJ0eUlQVENXcml0ZXJFZGl0b3IgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENJbWFn
ZVR5cGUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIg
Y29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENJbWFnZU9yaWVudGF0aW9uIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENG
U3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlJUFRDTGFuZ3VhZ2VJZGVudGlmaWVyIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5n
UmVmIGtDR0ltYWdlUHJvcGVydHlJUFRDU3RhclJhdGluZyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVBy
b3BlcnR5SVBUQ0NyZWF0b3JDb250YWN0SW5mbyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
SVBUQ1JpZ2h0c1VzYWdlVGVybXMgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVENTY2Vu
ZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuICJDIiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ0NvbnRhY3RJbmZvQ2l0eSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ0NvbnRhY3RJbmZvQ291bnRyeSBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0dJbWFnZVByb3BlcnR5SVBUQ0NvbnRhY3RJbmZvQWRkcmVzcyBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJ
bWFnZVByb3BlcnR5SVBUQ0NvbnRhY3RJbmZvUG9zdGFsQ29kZSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFn
ZVByb3BlcnR5SVBUQ0NvbnRhY3RJbmZvU3RhdGVQcm92aW5jZSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFn
ZVByb3BlcnR5SVBUQ0NvbnRhY3RJbmZvRW1haWxzIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVy
dHlJUFRDQ29udGFjdEluZm9QaG9uZXMgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUlQVEND
b250YWN0SW5mb1dlYlVSTHMgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eThCSU1MYXll
ck5hbWVzOwoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
RE5HVmVyc2lvbjsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
RE5HQmFja3dhcmRWZXJzaW9uOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdl
UHJvcGVydHlETkdVbmlxdWVDYW1lcmFNb2RlbDsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0dJbWFnZVByb3BlcnR5RE5HTG9jYWxpemVkQ2FtZXJhTW9kZWw7CmV4dGVybiAiQyIgY29u
c3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUROR0NhbWVyYVNlcmlhbE51bWJlcjsKZXh0
ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5RE5HTGVuc0luZm87CgoK
CgpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlDSUZGRGVzY3Jp
cHRpb247CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUNJRkZG
aXJtd2FyZTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5Q0lG
Rk93bmVyTmFtZTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
Q0lGRkltYWdlTmFtZTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3Bl
cnR5Q0lGRkltYWdlRmlsZU5hbWU7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1h
Z2VQcm9wZXJ0eUNJRkZSZWxlYXNlTWV0aG9kOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVm
IGtDR0ltYWdlUHJvcGVydHlDSUZGUmVsZWFzZVRpbWluZzsKZXh0ZXJuICJDIiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5Q0lGRlJlY29yZElEOwpleHRlcm4gIkMiIGNvbnN0IENG
U3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlDSUZGU2VsZlRpbWluZ1RpbWU7CmV4dGVybiAiQyIg
Y29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUNJRkZDYW1lcmFTZXJpYWxOdW1iZXI7
CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUNJRkZJbWFnZVNl
cmlhbE51bWJlcjsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5
Q0lGRkNvbnRpbnVvdXNEcml2ZTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFn
ZVByb3BlcnR5Q0lGRkZvY3VzTW9kZTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJ
bWFnZVByb3BlcnR5Q0lGRk1ldGVyaW5nTW9kZTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0dJbWFnZVByb3BlcnR5Q0lGRlNob290aW5nTW9kZTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0
cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5Q0lGRkxlbnNNb2RlbDsKZXh0ZXJuICJDIiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5Q0lGRkxlbnNNYXhNTTsKZXh0ZXJuICJDIiBjb25z
dCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5Q0lGRkxlbnNNaW5NTTsKZXh0ZXJuICJDIiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5Q0lGRldoaXRlQmFsYW5jZUluZGV4Owpl
eHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlDSUZGRmxhc2hFeHBv
c3VyZUNvbXA7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eUNJ
RkZNZWFzdXJlZEVWOwoKCgoKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVBy
b3BlcnR5TWFrZXJOaWtvbklTT1NldHRpbmc7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYg
a0NHSW1hZ2VQcm9wZXJ0eU1ha2VyTmlrb25Db2xvck1vZGU7CmV4dGVybiAiQyIgY29uc3QgQ0ZT
dHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eU1ha2VyTmlrb25RdWFsaXR5OwpleHRlcm4gIkMiIGNv
bnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlNYWtlck5pa29uV2hpdGVCYWxhbmNlTW9k
ZTsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5TWFrZXJOaWtv
blNoYXJwZW5Nb2RlOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVy
dHlNYWtlck5pa29uRm9jdXNNb2RlOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0lt
YWdlUHJvcGVydHlNYWtlck5pa29uRmxhc2hTZXR0aW5nOwpleHRlcm4gIkMiIGNvbnN0IENGU3Ry
aW5nUmVmIGtDR0ltYWdlUHJvcGVydHlNYWtlck5pa29uSVNPU2VsZWN0aW9uOwpleHRlcm4gIkMi
IGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlNYWtlck5pa29uRmxhc2hFeHBvc3Vy
ZUNvbXA7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eU1ha2Vy
Tmlrb25JbWFnZUFkanVzdG1lbnQ7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1h
Z2VQcm9wZXJ0eU1ha2VyTmlrb25MZW5zQWRhcHRlcjsKZXh0ZXJuICJDIiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0dJbWFnZVByb3BlcnR5TWFrZXJOaWtvbkxlbnNUeXBlOwpleHRlcm4gIkMiIGNvbnN0
IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlNYWtlck5pa29uTGVuc0luZm87CmV4dGVybiAi
QyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eU1ha2VyTmlrb25Gb2N1c0Rpc3Rh
bmNlOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlNYWtlck5p
a29uRGlnaXRhbFpvb207CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9w
ZXJ0eU1ha2VyTmlrb25TaG9vdGluZ01vZGU7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYg
a0NHSW1hZ2VQcm9wZXJ0eU1ha2VyTmlrb25DYW1lcmFTZXJpYWxOdW1iZXI7CmV4dGVybiAiQyIg
Y29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eU1ha2VyTmlrb25TaHV0dGVyQ291bnQ7
CgoKCmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0eU1ha2VyQ2Fu
b25Pd25lck5hbWU7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VQcm9wZXJ0
eU1ha2VyQ2Fub25DYW1lcmFTZXJpYWxOdW1iZXI7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdS
ZWYga0NHSW1hZ2VQcm9wZXJ0eU1ha2VyQ2Fub25JbWFnZVNlcmlhbE51bWJlcjsKZXh0ZXJuICJD
IiBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVByb3BlcnR5TWFrZXJDYW5vbkZsYXNoRXhwb3N1
cmVDb21wOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlUHJvcGVydHlNYWtl
ckNhbm9uQ29udGludW91c0RyaXZlOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIGtDR0lt
YWdlUHJvcGVydHlNYWtlckNhbm9uTGVuc01vZGVsOwpleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5n
UmVmIGtDR0ltYWdlUHJvcGVydHlNYWtlckNhbm9uRmlybXdhcmUgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1h
Z2VQcm9wZXJ0eU1ha2VyQ2Fub25Bc3BlY3RSYXRpb0luZm8gX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CiMgMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvSGVh
ZGVycy9JbWFnZUlPLmgiIDIgMwojIDU2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9IZWFkZXJzL0FwcGxpY2F0aW9uU2VydmljZXMuaCIg
MiAzCiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9OU0FwcGxlRXZlbnREZXNjcmlwdG9yLmgiIDIgMwoKQGNsYXNzIE5TRGF0YTsKCkBp
bnRlcmZhY2UgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciA6IE5TT2JqZWN0PE5TQ29weWluZz4gewog
ICAgQHByaXZhdGUKICAgIEFFRGVzYyBfZGVzYzsKICAgIEJPT0wgX2hhc1ZhbGlkRGVzYzsKICAg
IGNoYXIgX3BhZGRpbmdbM107Cn0KCgorIChOU0FwcGxlRXZlbnREZXNjcmlwdG9yICopbnVsbERl
c2NyaXB0b3I7CgoKCisgKE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKilkZXNjcmlwdG9yV2l0aERl
c2NyaXB0b3JUeXBlOihEZXNjVHlwZSlkZXNjcmlwdG9yVHlwZSBieXRlczooY29uc3Qgdm9pZCAq
KWJ5dGVzIGxlbmd0aDooTlNVSW50ZWdlcilieXRlQ291bnQ7CgorIChOU0FwcGxlRXZlbnREZXNj
cmlwdG9yICopZGVzY3JpcHRvcldpdGhEZXNjcmlwdG9yVHlwZTooRGVzY1R5cGUpZGVzY3JpcHRv
clR5cGUgZGF0YTooTlNEYXRhICopZGF0YTsKCgoKKyAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAq
KWRlc2NyaXB0b3JXaXRoQm9vbGVhbjooQm9vbGVhbilib29sZWFuOworIChOU0FwcGxlRXZlbnRE
ZXNjcmlwdG9yICopZGVzY3JpcHRvcldpdGhFbnVtQ29kZTooT1NUeXBlKWVudW1lcmF0b3I7Cisg
KE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKilkZXNjcmlwdG9yV2l0aEludDMyOihTSW50MzIpc2ln
bmVkSW50OworIChOU0FwcGxlRXZlbnREZXNjcmlwdG9yICopZGVzY3JpcHRvcldpdGhUeXBlQ29k
ZTooT1NUeXBlKXR5cGVDb2RlOwoKCgoKKyAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAqKWRlc2Ny
aXB0b3JXaXRoU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZzsKCgoKKyAoTlNBcHBsZUV2ZW50RGVz
Y3JpcHRvciAqKWFwcGxlRXZlbnRXaXRoRXZlbnRDbGFzczooQUVFdmVudENsYXNzKWV2ZW50Q2xh
c3MgZXZlbnRJRDooQUVFdmVudElEKWV2ZW50SUQgdGFyZ2V0RGVzY3JpcHRvcjooTlNBcHBsZUV2
ZW50RGVzY3JpcHRvciAqKXRhcmdldERlc2NyaXB0b3IgcmV0dXJuSUQ6KEFFUmV0dXJuSUQpcmV0
dXJuSUQgdHJhbnNhY3Rpb25JRDooQUVUcmFuc2FjdGlvbklEKXRyYW5zYWN0aW9uSUQ7CisgKE5T
QXBwbGVFdmVudERlc2NyaXB0b3IgKilsaXN0RGVzY3JpcHRvcjsKKyAoTlNBcHBsZUV2ZW50RGVz
Y3JpcHRvciAqKXJlY29yZERlc2NyaXB0b3I7CgoKCi0gKGlkKWluaXRXaXRoQUVEZXNjTm9Db3B5
Oihjb25zdCBBRURlc2MgKilhZURlc2M7CgoKCi0gKGlkKWluaXRXaXRoRGVzY3JpcHRvclR5cGU6
KERlc2NUeXBlKWRlc2NyaXB0b3JUeXBlIGJ5dGVzOihjb25zdCB2b2lkICopYnl0ZXMgbGVuZ3Ro
OihOU1VJbnRlZ2VyKWJ5dGVDb3VudDsKLSAoaWQpaW5pdFdpdGhEZXNjcmlwdG9yVHlwZTooRGVz
Y1R5cGUpZGVzY3JpcHRvclR5cGUgZGF0YTooTlNEYXRhICopZGF0YTsKLSAoaWQpaW5pdFdpdGhF
dmVudENsYXNzOihBRUV2ZW50Q2xhc3MpZXZlbnRDbGFzcyBldmVudElEOihBRUV2ZW50SUQpZXZl
bnRJRCB0YXJnZXREZXNjcmlwdG9yOihOU0FwcGxlRXZlbnREZXNjcmlwdG9yICopdGFyZ2V0RGVz
Y3JpcHRvciByZXR1cm5JRDooQUVSZXR1cm5JRClyZXR1cm5JRCB0cmFuc2FjdGlvbklEOihBRVRy
YW5zYWN0aW9uSUQpdHJhbnNhY3Rpb25JRDsKLSAoaWQpaW5pdExpc3REZXNjcmlwdG9yOwotIChp
ZClpbml0UmVjb3JkRGVzY3JpcHRvcjsKCgoKLSAoY29uc3QgQUVEZXNjICopYWVEZXNjOwoKCgot
IChEZXNjVHlwZSlkZXNjcmlwdG9yVHlwZTsKLSAoTlNEYXRhICopZGF0YTsKCgoKLSAoQm9vbGVh
bilib29sZWFuVmFsdWU7Ci0gKE9TVHlwZSllbnVtQ29kZVZhbHVlOwotIChTSW50MzIpaW50MzJW
YWx1ZTsKLSAoT1NUeXBlKXR5cGVDb2RlVmFsdWU7CgoKCgotIChOU1N0cmluZyAqKXN0cmluZ1Zh
bHVlOwoKCgotIChBRUV2ZW50Q2xhc3MpZXZlbnRDbGFzczsKLSAoQUVFdmVudElEKWV2ZW50SUQ7
Ci0gKEFFUmV0dXJuSUQpcmV0dXJuSUQ7Ci0gKEFFVHJhbnNhY3Rpb25JRCl0cmFuc2FjdGlvbklE
OwoKCi0gKHZvaWQpc2V0UGFyYW1EZXNjcmlwdG9yOihOU0FwcGxlRXZlbnREZXNjcmlwdG9yICop
ZGVzY3JpcHRvciBmb3JLZXl3b3JkOihBRUtleXdvcmQpa2V5d29yZDsKLSAoTlNBcHBsZUV2ZW50
RGVzY3JpcHRvciAqKXBhcmFtRGVzY3JpcHRvckZvcktleXdvcmQ6KEFFS2V5d29yZClrZXl3b3Jk
OwotICh2b2lkKXJlbW92ZVBhcmFtRGVzY3JpcHRvcldpdGhLZXl3b3JkOihBRUtleXdvcmQpa2V5
d29yZDsKCgotICh2b2lkKXNldEF0dHJpYnV0ZURlc2NyaXB0b3I6KE5TQXBwbGVFdmVudERlc2Ny
aXB0b3IgKilkZXNjcmlwdG9yIGZvcktleXdvcmQ6KEFFS2V5d29yZClrZXl3b3JkOwotIChOU0Fw
cGxlRXZlbnREZXNjcmlwdG9yICopYXR0cmlidXRlRGVzY3JpcHRvckZvcktleXdvcmQ6KEFFS2V5
d29yZClrZXl3b3JkOwoKCi0gKE5TSW50ZWdlciludW1iZXJPZkl0ZW1zOwoKCi0gKHZvaWQpaW5z
ZXJ0RGVzY3JpcHRvcjooTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAqKWRlc2NyaXB0b3IgYXRJbmRl
eDooTlNJbnRlZ2VyKWluZGV4OwotIChOU0FwcGxlRXZlbnREZXNjcmlwdG9yICopZGVzY3JpcHRv
ckF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKCi0gKHZvaWQpcmVtb3ZlRGVzY3JpcHRvckF0SW5k
ZXg6KE5TSW50ZWdlcilpbmRleDsKCgoKCgotICh2b2lkKXNldERlc2NyaXB0b3I6KE5TQXBwbGVF
dmVudERlc2NyaXB0b3IgKilkZXNjcmlwdG9yIGZvcktleXdvcmQ6KEFFS2V5d29yZClrZXl3b3Jk
OwotIChOU0FwcGxlRXZlbnREZXNjcmlwdG9yICopZGVzY3JpcHRvckZvcktleXdvcmQ6KEFFS2V5
d29yZClrZXl3b3JkOwotICh2b2lkKXJlbW92ZURlc2NyaXB0b3JXaXRoS2V5d29yZDooQUVLZXl3
b3JkKWtleXdvcmQ7CgoKLSAoQUVLZXl3b3JkKWtleXdvcmRGb3JEZXNjcmlwdG9yQXRJbmRleDoo
TlNJbnRlZ2VyKWluZGV4OwoKCi0gKE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKiljb2VyY2VUb0Rl
c2NyaXB0b3JUeXBlOihEZXNjVHlwZSlkZXNjcmlwdG9yVHlwZTsKCkBlbmQKIyAxMTUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRh
dGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL05TQXBwbGVFdmVudE1hbmFnZXIuaCIgMSAzCiMgMTAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNBcHBsZUV2
ZW50TWFuYWdlci5oIiAzCkBjbGFzcyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yOwoKCgp0eXBlZGVm
IGNvbnN0IHN0cnVjdCBfX05TQXBwbGVFdmVudE1hbmFnZXJTdXNwZW5zaW9uKiBOU0FwcGxlRXZl
bnRNYW5hZ2VyU3VzcGVuc2lvbklEOwoKCgpleHRlcm4gY29uc3QgZG91YmxlIE5TQXBwbGVFdmVu
dFRpbWVPdXREZWZhdWx0OwpleHRlcm4gY29uc3QgZG91YmxlIE5TQXBwbGVFdmVudFRpbWVPdXRO
b25lOwoKZXh0ZXJuIE5TU3RyaW5nICpOU0FwcGxlRXZlbnRNYW5hZ2VyV2lsbFByb2Nlc3NGaXJz
dEV2ZW50Tm90aWZpY2F0aW9uOwoKQGludGVyZmFjZSBOU0FwcGxlRXZlbnRNYW5hZ2VyIDogTlNP
YmplY3QgewogICAgQHByaXZhdGUKICAgIEJPT0wgX2lzUHJlcGFyZWRGb3JEaXNwYXRjaDsKICAg
IGNoYXIgX3BhZGRpbmdbM107Cn0KCgorIChOU0FwcGxlRXZlbnRNYW5hZ2VyICopc2hhcmVkQXBw
bGVFdmVudE1hbmFnZXI7CgoKCgotICh2b2lkKXNldEV2ZW50SGFuZGxlcjooaWQpaGFuZGxlciBh
bmRTZWxlY3RvcjooU0VMKWhhbmRsZUV2ZW50U2VsZWN0b3IgZm9yRXZlbnRDbGFzczooQUVFdmVu
dENsYXNzKWV2ZW50Q2xhc3MgYW5kRXZlbnRJRDooQUVFdmVudElEKWV2ZW50SUQ7Ci0gKHZvaWQp
cmVtb3ZlRXZlbnRIYW5kbGVyRm9yRXZlbnRDbGFzczooQUVFdmVudENsYXNzKWV2ZW50Q2xhc3Mg
YW5kRXZlbnRJRDooQUVFdmVudElEKWV2ZW50SUQ7CgoKCi0gKE9TRXJyKWRpc3BhdGNoUmF3QXBw
bGVFdmVudDooY29uc3QgQXBwbGVFdmVudCAqKXRoZUFwcGxlRXZlbnQgd2l0aFJhd1JlcGx5OihB
cHBsZUV2ZW50ICopdGhlUmVwbHkgaGFuZGxlclJlZkNvbjooU1JlZkNvbiloYW5kbGVyUmVmQ29u
OwoKCgoKLSAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAqKWN1cnJlbnRBcHBsZUV2ZW50OwoKCi0g
KE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKiljdXJyZW50UmVwbHlBcHBsZUV2ZW50OwoKCi0gKE5T
QXBwbGVFdmVudE1hbmFnZXJTdXNwZW5zaW9uSUQpc3VzcGVuZEN1cnJlbnRBcHBsZUV2ZW50OwoK
Ci0gKE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKilhcHBsZUV2ZW50Rm9yU3VzcGVuc2lvbklEOihO
U0FwcGxlRXZlbnRNYW5hZ2VyU3VzcGVuc2lvbklEKXN1c3BlbnNpb25JRDsKCgotIChOU0FwcGxl
RXZlbnREZXNjcmlwdG9yICopcmVwbHlBcHBsZUV2ZW50Rm9yU3VzcGVuc2lvbklEOihOU0FwcGxl
RXZlbnRNYW5hZ2VyU3VzcGVuc2lvbklEKXN1c3BlbnNpb25JRDsKCgotICh2b2lkKXNldEN1cnJl
bnRBcHBsZUV2ZW50QW5kUmVwbHlFdmVudFdpdGhTdXNwZW5zaW9uSUQ6KE5TQXBwbGVFdmVudE1h
bmFnZXJTdXNwZW5zaW9uSUQpc3VzcGVuc2lvbklEOwoKCi0gKHZvaWQpcmVzdW1lV2l0aFN1c3Bl
bnNpb25JRDooTlNBcHBsZUV2ZW50TWFuYWdlclN1c3BlbnNpb25JRClzdXNwZW5zaW9uSUQ7CgoK
CkBlbmQKIyAxMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TQXBwbGVTY3JpcHQuaCIgMSAzCiMg
MTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvTlNBcHBsZVNjcmlwdC5oIiAzCkBjbGFzcyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yLCBOU0Rp
Y3Rpb25hcnksIE5TU3RyaW5nLCBOU1VSTDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBO
U0FwcGxlU2NyaXB0RXJyb3JNZXNzYWdlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNB
cHBsZVNjcmlwdEVycm9yTnVtYmVyIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBcHBs
ZVNjcmlwdEVycm9yQXBwTmFtZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQXBwbGVT
Y3JpcHRFcnJvckJyaWVmTWVzc2FnZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQXBw
bGVTY3JpcHRFcnJvclJhbmdlIDsKCkBpbnRlcmZhY2UgTlNBcHBsZVNjcmlwdCA6IE5TT2JqZWN0
PE5TQ29weWluZz4gewogICAgQHByaXZhdGUKICAgIE5TU3RyaW5nICpfc291cmNlOwogICAgdW5z
aWduZWQgaW50IF9jb21waWxlZFNjcmlwdElEOwogICAgdm9pZCAqX3Jlc2VydmVkMTsKICAgIHZv
aWQgKl9yZXNlcnZlZDI7Cn0KCgotIChpZClpbml0V2l0aENvbnRlbnRzT2ZVUkw6KE5TVVJMICop
dXJsIGVycm9yOihOU0RpY3Rpb25hcnkgKiopZXJyb3JJbmZvOwoKCi0gKGlkKWluaXRXaXRoU291
cmNlOihOU1N0cmluZyAqKXNvdXJjZTsKCgotIChOU1N0cmluZyAqKXNvdXJjZTsKCgotIChCT09M
KWlzQ29tcGlsZWQ7CgoKLSAoQk9PTCljb21waWxlQW5kUmV0dXJuRXJyb3I6KE5TRGljdGlvbmFy
eSAqKillcnJvckluZm87CgoKLSAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAqKWV4ZWN1dGVBbmRS
ZXR1cm5FcnJvcjooTlNEaWN0aW9uYXJ5ICoqKWVycm9ySW5mbzsKCgotIChOU0FwcGxlRXZlbnRE
ZXNjcmlwdG9yICopZXhlY3V0ZUFwcGxlRXZlbnQ6KE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKill
dmVudCBlcnJvcjooTlNEaWN0aW9uYXJ5ICoqKWVycm9ySW5mbzsKCkBlbmQKIyAxMTcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRh
dGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL05TQXR0cmlidXRlZFN0cmluZy5oIiAxIDMKCgoKCgoKCkBpbnRlcmZh
Y2UgTlNBdHRyaWJ1dGVkU3RyaW5nIDogTlNPYmplY3QgPE5TQ29weWluZywgTlNNdXRhYmxlQ29w
eWluZywgTlNDb2Rpbmc+CgotIChOU1N0cmluZyAqKXN0cmluZzsKLSAoTlNEaWN0aW9uYXJ5ICop
YXR0cmlidXRlc0F0SW5kZXg6KE5TVUludGVnZXIpbG9jYXRpb24gZWZmZWN0aXZlUmFuZ2U6KE5T
UmFuZ2VQb2ludGVyKXJhbmdlOwoKQGVuZAoKQGludGVyZmFjZSBOU0F0dHJpYnV0ZWRTdHJpbmcg
KE5TRXh0ZW5kZWRBdHRyaWJ1dGVkU3RyaW5nKQoKLSAoTlNVSW50ZWdlcilsZW5ndGg7Ci0gKGlk
KWF0dHJpYnV0ZTooTlNTdHJpbmcgKilhdHRyTmFtZSBhdEluZGV4OihOU1VJbnRlZ2VyKWxvY2F0
aW9uIGVmZmVjdGl2ZVJhbmdlOihOU1JhbmdlUG9pbnRlcilyYW5nZTsKLSAoTlNBdHRyaWJ1dGVk
U3RyaW5nICopYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZTooTlNSYW5nZSlyYW5nZTsKCi0g
KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXNBdEluZGV4OihOU1VJbnRlZ2VyKWxvY2F0aW9uIGxv
bmdlc3RFZmZlY3RpdmVSYW5nZTooTlNSYW5nZVBvaW50ZXIpcmFuZ2UgaW5SYW5nZTooTlNSYW5n
ZSlyYW5nZUxpbWl0OwotIChpZClhdHRyaWJ1dGU6KE5TU3RyaW5nICopYXR0ck5hbWUgYXRJbmRl
eDooTlNVSW50ZWdlcilsb2NhdGlvbiBsb25nZXN0RWZmZWN0aXZlUmFuZ2U6KE5TUmFuZ2VQb2lu
dGVyKXJhbmdlIGluUmFuZ2U6KE5TUmFuZ2UpcmFuZ2VMaW1pdDsKCi0gKEJPT0wpaXNFcXVhbFRv
QXR0cmlidXRlZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopb3RoZXI7CgotIChpZClpbml0
V2l0aFN0cmluZzooTlNTdHJpbmcgKilzdHI7Ci0gKGlkKWluaXRXaXRoU3RyaW5nOihOU1N0cmlu
ZyAqKXN0ciBhdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilhdHRyczsKLSAoaWQpaW5pdFdpdGhB
dHRyaWJ1dGVkU3RyaW5nOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilhdHRyU3RyOwoKCmVudW0gewog
IE5TQXR0cmlidXRlZFN0cmluZ0VudW1lcmF0aW9uUmV2ZXJzZSA9ICgxVUwgPDwgMSksCiAgTlNB
dHRyaWJ1dGVkU3RyaW5nRW51bWVyYXRpb25Mb25nZXN0RWZmZWN0aXZlUmFuZ2VOb3RSZXF1aXJl
ZCA9ICgxVUwgPDwgMjApCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU0F0dHJpYnV0ZWRTdHJpbmdF
bnVtZXJhdGlvbk9wdGlvbnM7CgotICh2b2lkKWVudW1lcmF0ZUF0dHJpYnV0ZXNJblJhbmdlOihO
U1JhbmdlKWVudW1lcmF0aW9uUmFuZ2Ugb3B0aW9uczooTlNBdHRyaWJ1dGVkU3RyaW5nRW51bWVy
YXRpb25PcHRpb25zKW9wdHMgdXNpbmdCbG9jazoodm9pZCAoXikoTlNEaWN0aW9uYXJ5ICphdHRy
cywgTlNSYW5nZSByYW5nZSwgQk9PTCAqc3RvcCkpYmxvY2sgOwotICh2b2lkKWVudW1lcmF0ZUF0
dHJpYnV0ZTooTlNTdHJpbmcgKilhdHRyTmFtZSBpblJhbmdlOihOU1JhbmdlKWVudW1lcmF0aW9u
UmFuZ2Ugb3B0aW9uczooTlNBdHRyaWJ1dGVkU3RyaW5nRW51bWVyYXRpb25PcHRpb25zKW9wdHMg
dXNpbmdCbG9jazoodm9pZCAoXikoaWQgdmFsdWUsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKnN0b3Ap
KWJsb2NrIDsKCgpAZW5kCgpAaW50ZXJmYWNlIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgOiBO
U0F0dHJpYnV0ZWRTdHJpbmcKCi0gKHZvaWQpcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOihOU1Jh
bmdlKXJhbmdlIHdpdGhTdHJpbmc6KE5TU3RyaW5nICopc3RyOwotICh2b2lkKXNldEF0dHJpYnV0
ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJzIHJhbmdlOihOU1JhbmdlKXJhbmdlOwoKQGVuZAoKQGlu
dGVyZmFjZSBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIChOU0V4dGVuZGVkTXV0YWJsZUF0dHJp
YnV0ZWRTdHJpbmcpCgotIChOU011dGFibGVTdHJpbmcgKiltdXRhYmxlU3RyaW5nOwoKLSAodm9p
ZClhZGRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZSB2YWx1ZTooaWQpdmFsdWUgcmFuZ2U6KE5T
UmFuZ2UpcmFuZ2U7Ci0gKHZvaWQpYWRkQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cnMg
cmFuZ2U6KE5TUmFuZ2UpcmFuZ2U7Ci0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmluZyAq
KW5hbWUgcmFuZ2U6KE5TUmFuZ2UpcmFuZ2U7CgotICh2b2lkKXJlcGxhY2VDaGFyYWN0ZXJzSW5S
YW5nZTooTlNSYW5nZSlyYW5nZSB3aXRoQXR0cmlidXRlZFN0cmluZzooTlNBdHRyaWJ1dGVkU3Ry
aW5nICopYXR0clN0cmluZzsKLSAodm9pZClpbnNlcnRBdHRyaWJ1dGVkU3RyaW5nOihOU0F0dHJp
YnV0ZWRTdHJpbmcgKilhdHRyU3RyaW5nIGF0SW5kZXg6KE5TVUludGVnZXIpbG9jOwotICh2b2lk
KWFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6KE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJTdHJpbmc7
Ci0gKHZvaWQpZGVsZXRlQ2hhcmFjdGVyc0luUmFuZ2U6KE5TUmFuZ2UpcmFuZ2U7Ci0gKHZvaWQp
c2V0QXR0cmlidXRlZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0clN0cmluZzsKCi0g
KHZvaWQpYmVnaW5FZGl0aW5nOwotICh2b2lkKWVuZEVkaXRpbmc7CgpAZW5kCiMgMTE4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5k
YXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9OU0NhY2hlLmgiIDEgMwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNDYWNoZS5oIiAzCkBjbGFzcyBO
U1N0cmluZzsKCkBpbnRlcmZhY2UgTlNDYWNoZSA6IE5TT2JqZWN0IHsKQHByaXZhdGUKICAgIGlk
IF9kZWxlZ2F0ZTsKICAgIHZvaWQgKl9wcml2YXRlWzVdOwogICAgdm9pZCAqX3Jlc2VydmVkOwp9
CgotICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbjsKLSAoTlNTdHJpbmcgKiluYW1lOwoKLSAo
dm9pZClzZXREZWxlZ2F0ZTooaWQpZDsKLSAoaWQpZGVsZWdhdGU7CgotIChpZClvYmplY3RGb3JL
ZXk6KGlkKWtleTsKLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iaiBmb3JLZXk6KGlkKWtleTsKLSAo
dm9pZClzZXRPYmplY3Q6KGlkKW9iaiBmb3JLZXk6KGlkKWtleSBjb3N0OihOU1VJbnRlZ2VyKWc7
Ci0gKHZvaWQpcmVtb3ZlT2JqZWN0Rm9yS2V5OihpZClrZXk7CgotICh2b2lkKXJlbW92ZUFsbE9i
amVjdHM7CgotICh2b2lkKXNldFRvdGFsQ29zdExpbWl0OihOU1VJbnRlZ2VyKWxpbTsKLSAoTlNV
SW50ZWdlcil0b3RhbENvc3RMaW1pdDsKCi0gKHZvaWQpc2V0Q291bnRMaW1pdDooTlNVSW50ZWdl
cilsaW07Ci0gKE5TVUludGVnZXIpY291bnRMaW1pdDsKCi0gKEJPT0wpZXZpY3RzT2JqZWN0c1dp
dGhEaXNjYXJkZWRDb250ZW50OwotICh2b2lkKXNldEV2aWN0c09iamVjdHNXaXRoRGlzY2FyZGVk
Q29udGVudDooQk9PTCliOwoKQGVuZAoKQHByb3RvY29sIE5TQ2FjaGVEZWxlZ2F0ZQpAb3B0aW9u
YWwKLSAodm9pZCljYWNoZTooTlNDYWNoZSAqKWNhY2hlIHdpbGxFdmljdE9iamVjdDooaWQpb2Jq
OwpAZW5kCiMgMTE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0NhbGVuZGFyRGF0ZS5oIiAxIDMK
CgoKCgoKQGNsYXNzIE5TU3RyaW5nLCBOU0FycmF5LCBOU1RpbWVab25lOwoKQGludGVyZmFjZSBO
U0NhbGVuZGFyRGF0ZSA6IE5TRGF0ZSB7CkBwcml2YXRlCiAgICBOU1VJbnRlZ2VyIHJlZkNvdW50
OwogICAgTlNUaW1lSW50ZXJ2YWwgX3RpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTsKICAg
IE5TVGltZVpvbmUgKl90aW1lWm9uZTsKICAgIE5TU3RyaW5nICpfZm9ybWF0U3RyaW5nOwogICAg
dm9pZCAqX3Jlc2VydmVkOwp9CgoKCgoKCisgKGlkKWNhbGVuZGFyRGF0ZTsKKyAoaWQpZGF0ZVdp
dGhTdHJpbmc6KE5TU3RyaW5nICopZGVzY3JpcHRpb24gY2FsZW5kYXJGb3JtYXQ6KE5TU3RyaW5n
ICopZm9ybWF0IGxvY2FsZTooaWQpbG9jYWxlOworIChpZClkYXRlV2l0aFN0cmluZzooTlNTdHJp
bmcgKilkZXNjcmlwdGlvbiBjYWxlbmRhckZvcm1hdDooTlNTdHJpbmcgKilmb3JtYXQ7CisgKGlk
KWRhdGVXaXRoWWVhcjooTlNJbnRlZ2VyKXllYXIgbW9udGg6KE5TVUludGVnZXIpbW9udGggZGF5
OihOU1VJbnRlZ2VyKWRheSBob3VyOihOU1VJbnRlZ2VyKWhvdXIgbWludXRlOihOU1VJbnRlZ2Vy
KW1pbnV0ZSBzZWNvbmQ6KE5TVUludGVnZXIpc2Vjb25kIHRpbWVab25lOihOU1RpbWVab25lICop
YVRpbWVab25lOwotIChOU0NhbGVuZGFyRGF0ZSAqKWRhdGVCeUFkZGluZ1llYXJzOihOU0ludGVn
ZXIpeWVhciBtb250aHM6KE5TSW50ZWdlciltb250aCBkYXlzOihOU0ludGVnZXIpZGF5IGhvdXJz
OihOU0ludGVnZXIpaG91ciBtaW51dGVzOihOU0ludGVnZXIpbWludXRlIHNlY29uZHM6KE5TSW50
ZWdlcilzZWNvbmQ7Ci0gKE5TSW50ZWdlcilkYXlPZkNvbW1vbkVyYTsKLSAoTlNJbnRlZ2VyKWRh
eU9mTW9udGg7Ci0gKE5TSW50ZWdlcilkYXlPZldlZWs7Ci0gKE5TSW50ZWdlcilkYXlPZlllYXI7
Ci0gKE5TSW50ZWdlcilob3VyT2ZEYXk7Ci0gKE5TSW50ZWdlciltaW51dGVPZkhvdXI7Ci0gKE5T
SW50ZWdlciltb250aE9mWWVhcjsKLSAoTlNJbnRlZ2VyKXNlY29uZE9mTWludXRlOwotIChOU0lu
dGVnZXIpeWVhck9mQ29tbW9uRXJhOwotIChOU1N0cmluZyAqKWNhbGVuZGFyRm9ybWF0OwotIChO
U1N0cmluZyAqKWRlc2NyaXB0aW9uV2l0aENhbGVuZGFyRm9ybWF0OihOU1N0cmluZyAqKWZvcm1h
dCBsb2NhbGU6KGlkKWxvY2FsZTsKLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbldpdGhDYWxlbmRh
ckZvcm1hdDooTlNTdHJpbmcgKilmb3JtYXQ7Ci0gKE5TU3RyaW5nICopZGVzY3JpcHRpb25XaXRo
TG9jYWxlOihpZClsb2NhbGU7Ci0gKE5TVGltZVpvbmUgKil0aW1lWm9uZTsKLSAoaWQpaW5pdFdp
dGhTdHJpbmc6KE5TU3RyaW5nICopZGVzY3JpcHRpb24gY2FsZW5kYXJGb3JtYXQ6KE5TU3RyaW5n
ICopZm9ybWF0IGxvY2FsZTooaWQpbG9jYWxlOwotIChpZClpbml0V2l0aFN0cmluZzooTlNTdHJp
bmcgKilkZXNjcmlwdGlvbiBjYWxlbmRhckZvcm1hdDooTlNTdHJpbmcgKilmb3JtYXQ7Ci0gKGlk
KWluaXRXaXRoU3RyaW5nOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uOwotIChpZClpbml0V2l0aFll
YXI6KE5TSW50ZWdlcil5ZWFyIG1vbnRoOihOU1VJbnRlZ2VyKW1vbnRoIGRheTooTlNVSW50ZWdl
cilkYXkgaG91cjooTlNVSW50ZWdlcilob3VyIG1pbnV0ZTooTlNVSW50ZWdlciltaW51dGUgc2Vj
b25kOihOU1VJbnRlZ2VyKXNlY29uZCB0aW1lWm9uZTooTlNUaW1lWm9uZSAqKWFUaW1lWm9uZTsK
LSAodm9pZClzZXRDYWxlbmRhckZvcm1hdDooTlNTdHJpbmcgKilmb3JtYXQ7Ci0gKHZvaWQpc2V0
VGltZVpvbmU6KE5TVGltZVpvbmUgKilhVGltZVpvbmU7Ci0gKHZvaWQpeWVhcnM6KE5TSW50ZWdl
ciAqKXlwIG1vbnRoczooTlNJbnRlZ2VyICopbW9wIGRheXM6KE5TSW50ZWdlciAqKWRwIGhvdXJz
OihOU0ludGVnZXIgKilocCBtaW51dGVzOihOU0ludGVnZXIgKiltaXAgc2Vjb25kczooTlNJbnRl
Z2VyICopc3Agc2luY2VEYXRlOihOU0NhbGVuZGFyRGF0ZSAqKWRhdGU7CgpAZW5kCgpAaW50ZXJm
YWNlIE5TRGF0ZSAoTlNDYWxlbmRhckRhdGVFeHRyYXMpCgoKCgoKKyAoaWQpZGF0ZVdpdGhOYXR1
cmFsTGFuZ3VhZ2VTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGxvY2FsZTooaWQpbG9jYWxlOwor
IChpZClkYXRlV2l0aE5hdHVyYWxMYW5ndWFnZVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmc7Cisg
KGlkKWRhdGVXaXRoU3RyaW5nOihOU1N0cmluZyAqKWFTdHJpbmc7Ci0gKE5TQ2FsZW5kYXJEYXRl
ICopZGF0ZVdpdGhDYWxlbmRhckZvcm1hdDooTlNTdHJpbmcgKilmb3JtYXQgdGltZVpvbmU6KE5T
VGltZVpvbmUgKilhVGltZVpvbmU7Ci0gKE5TU3RyaW5nICopZGVzY3JpcHRpb25XaXRoQ2FsZW5k
YXJGb3JtYXQ6KE5TU3RyaW5nICopZm9ybWF0IHRpbWVab25lOihOU1RpbWVab25lICopYVRpbWVa
b25lIGxvY2FsZTooaWQpbG9jYWxlOwotIChpZClpbml0V2l0aFN0cmluZzooTlNTdHJpbmcgKilk
ZXNjcmlwdGlvbjsKQGVuZAojIDEyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNDbGFzc0Rlc2Ny
aXB0aW9uLmgiIDEgMwoKCgoKCgoKQGNsYXNzIE5TU3RyaW5nLCBOU0FycmF5LCBOU0RpY3Rpb25h
cnk7CgpAaW50ZXJmYWNlIE5TQ2xhc3NEZXNjcmlwdGlvbiA6IE5TT2JqZWN0CgorICh2b2lkKXJl
Z2lzdGVyQ2xhc3NEZXNjcmlwdGlvbjooTlNDbGFzc0Rlc2NyaXB0aW9uICopZGVzY3JpcHRpb24g
Zm9yQ2xhc3M6KENsYXNzKWFDbGFzczsKKyAodm9pZClpbnZhbGlkYXRlQ2xhc3NEZXNjcmlwdGlv
bkNhY2hlOworIChOU0NsYXNzRGVzY3JpcHRpb24gKiljbGFzc0Rlc2NyaXB0aW9uRm9yQ2xhc3M6
KENsYXNzKWFDbGFzczsKCi0gKE5TQXJyYXkgKilhdHRyaWJ1dGVLZXlzOwotIChOU0FycmF5ICop
dG9PbmVSZWxhdGlvbnNoaXBLZXlzOwotIChOU0FycmF5ICopdG9NYW55UmVsYXRpb25zaGlwS2V5
czsKLSAoTlNTdHJpbmcgKilpbnZlcnNlRm9yUmVsYXRpb25zaGlwS2V5OihOU1N0cmluZyAqKXJl
bGF0aW9uc2hpcEtleTsKCkBlbmQKCkBpbnRlcmZhY2UgTlNPYmplY3QgKE5TQ2xhc3NEZXNjcmlw
dGlvblByaW1pdGl2ZXMpCgotIChOU0NsYXNzRGVzY3JpcHRpb24gKiljbGFzc0Rlc2NyaXB0aW9u
OwotIChOU0FycmF5ICopYXR0cmlidXRlS2V5czsKLSAoTlNBcnJheSAqKXRvT25lUmVsYXRpb25z
aGlwS2V5czsKLSAoTlNBcnJheSAqKXRvTWFueVJlbGF0aW9uc2hpcEtleXM7Ci0gKE5TU3RyaW5n
ICopaW52ZXJzZUZvclJlbGF0aW9uc2hpcEtleTooTlNTdHJpbmcgKilyZWxhdGlvbnNoaXBLZXk7
CgpAZW5kCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0NsYXNzRGVzY3JpcHRpb25OZWVkZWRGb3JD
bGFzc05vdGlmaWNhdGlvbjsKIyAxMjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TQ29tcGFyaXNv
blByZWRpY2F0ZS5oIiAxIDMKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91
bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1ByZWRpY2F0ZS5oIiAxIDMKIyAxMyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1ByZWRp
Y2F0ZS5oIiAzCkBpbnRlcmZhY2UgTlNQcmVkaWNhdGUgOiBOU09iamVjdCA8TlNDb2RpbmcsIE5T
Q29weWluZz4gewogICAgdm9pZCAqX3Jlc2VydmVkOwp9CgoKKyAoTlNQcmVkaWNhdGUgKilwcmVk
aWNhdGVXaXRoRm9ybWF0OihOU1N0cmluZyAqKXByZWRpY2F0ZUZvcm1hdCBhcmd1bWVudEFycmF5
OihOU0FycmF5ICopYXJndW1lbnRzOworIChOU1ByZWRpY2F0ZSAqKXByZWRpY2F0ZVdpdGhGb3Jt
YXQ6KE5TU3RyaW5nICopcHJlZGljYXRlRm9ybWF0LCAuLi47CisgKE5TUHJlZGljYXRlICopcHJl
ZGljYXRlV2l0aEZvcm1hdDooTlNTdHJpbmcgKilwcmVkaWNhdGVGb3JtYXQgYXJndW1lbnRzOih2
YV9saXN0KWFyZ0xpc3Q7CgorIChOU1ByZWRpY2F0ZSAqKXByZWRpY2F0ZVdpdGhWYWx1ZTooQk9P
TCl2YWx1ZTsKCgorIChOU1ByZWRpY2F0ZSopcHJlZGljYXRlV2l0aEJsb2NrOihCT09MICheKShp
ZCBldmFsdWF0ZWRPYmplY3QsIE5TRGljdGlvbmFyeSAqYmluZGluZ3MpKWJsb2NrIDsKCgotIChO
U1N0cmluZyAqKXByZWRpY2F0ZUZvcm1hdDsKCi0gKE5TUHJlZGljYXRlICopcHJlZGljYXRlV2l0
aFN1YnN0aXR1dGlvblZhcmlhYmxlczooTlNEaWN0aW9uYXJ5ICopdmFyaWFibGVzOwoKLSAoQk9P
TClldmFsdWF0ZVdpdGhPYmplY3Q6KGlkKW9iamVjdDsKCgotIChCT09MKWV2YWx1YXRlV2l0aE9i
amVjdDooaWQpb2JqZWN0IHN1YnN0aXR1dGlvblZhcmlhYmxlczooTlNEaWN0aW9uYXJ5ICopYmlu
ZGluZ3M7CgoKQGVuZAoKQGludGVyZmFjZSBOU0FycmF5IChOU1ByZWRpY2F0ZVN1cHBvcnQpCi0g
KE5TQXJyYXkgKilmaWx0ZXJlZEFycmF5VXNpbmdQcmVkaWNhdGU6KE5TUHJlZGljYXRlICopcHJl
ZGljYXRlOwpAZW5kCgpAaW50ZXJmYWNlIE5TTXV0YWJsZUFycmF5IChOU1ByZWRpY2F0ZVN1cHBv
cnQpCi0gKHZvaWQpZmlsdGVyVXNpbmdQcmVkaWNhdGU6KE5TUHJlZGljYXRlICopcHJlZGljYXRl
OwpAZW5kCgoKCkBpbnRlcmZhY2UgTlNTZXQgKE5TUHJlZGljYXRlU3VwcG9ydCkKLSAoTlNTZXQg
KilmaWx0ZXJlZFNldFVzaW5nUHJlZGljYXRlOihOU1ByZWRpY2F0ZSAqKXByZWRpY2F0ZTsKQGVu
ZAoKQGludGVyZmFjZSBOU011dGFibGVTZXQgKE5TUHJlZGljYXRlU3VwcG9ydCkKLSAodm9pZClm
aWx0ZXJVc2luZ1ByZWRpY2F0ZTooTlNQcmVkaWNhdGUgKilwcmVkaWNhdGU7CkBlbmQKIyA2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05T
Q29tcGFyaXNvblByZWRpY2F0ZS5oIiAyIDMKCgoKCmVudW0gewogICAgTlNDYXNlSW5zZW5zaXRp
dmVQcmVkaWNhdGVPcHRpb24gPSAweDAxLAogICAgTlNEaWFjcml0aWNJbnNlbnNpdGl2ZVByZWRp
Y2F0ZU9wdGlvbiA9IDB4MDIsCn07CgoKZW51bSB7CiAgICBOU0RpcmVjdFByZWRpY2F0ZU1vZGlm
aWVyID0gMCwKICAgIE5TQWxsUHJlZGljYXRlTW9kaWZpZXIsCiAgICBOU0FueVByZWRpY2F0ZU1v
ZGlmaWVyCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU0NvbXBhcmlzb25QcmVkaWNhdGVNb2RpZmll
cjsKCgoKZW51bSB7CiAgICBOU0xlc3NUaGFuUHJlZGljYXRlT3BlcmF0b3JUeXBlID0gMCwKICAg
IE5TTGVzc1RoYW5PckVxdWFsVG9QcmVkaWNhdGVPcGVyYXRvclR5cGUsCiAgICBOU0dyZWF0ZXJU
aGFuUHJlZGljYXRlT3BlcmF0b3JUeXBlLAogICAgTlNHcmVhdGVyVGhhbk9yRXF1YWxUb1ByZWRp
Y2F0ZU9wZXJhdG9yVHlwZSwKICAgIE5TRXF1YWxUb1ByZWRpY2F0ZU9wZXJhdG9yVHlwZSwKICAg
IE5TTm90RXF1YWxUb1ByZWRpY2F0ZU9wZXJhdG9yVHlwZSwKICAgIE5TTWF0Y2hlc1ByZWRpY2F0
ZU9wZXJhdG9yVHlwZSwKICAgIE5TTGlrZVByZWRpY2F0ZU9wZXJhdG9yVHlwZSwKICAgIE5TQmVn
aW5zV2l0aFByZWRpY2F0ZU9wZXJhdG9yVHlwZSwKICAgIE5TRW5kc1dpdGhQcmVkaWNhdGVPcGVy
YXRvclR5cGUsCiAgICBOU0luUHJlZGljYXRlT3BlcmF0b3JUeXBlLAogICAgTlNDdXN0b21TZWxl
Y3RvclByZWRpY2F0ZU9wZXJhdG9yVHlwZQoKICAgICwKICAgIE5TQ29udGFpbnNQcmVkaWNhdGVP
cGVyYXRvclR5cGUgPSA5OSwKICAgIE5TQmV0d2VlblByZWRpY2F0ZU9wZXJhdG9yVHlwZQoKfTsK
dHlwZWRlZiBOU1VJbnRlZ2VyIE5TUHJlZGljYXRlT3BlcmF0b3JUeXBlOwoKQGNsYXNzIE5TUHJl
ZGljYXRlT3BlcmF0b3I7CkBjbGFzcyBOU0V4cHJlc3Npb247CgoKCkBpbnRlcmZhY2UgTlNDb21w
YXJpc29uUHJlZGljYXRlIDogTlNQcmVkaWNhdGUgewogICAgQHByaXZhdGUKICAgIHZvaWQgKl9y
ZXNlcnZlZDI7CiAgICBOU1ByZWRpY2F0ZU9wZXJhdG9yICpfcHJlZGljYXRlT3BlcmF0b3I7CiAg
ICBOU0V4cHJlc3Npb24gKl9saHM7CiAgICBOU0V4cHJlc3Npb24gKl9yaHM7Cn0KCisgKE5TUHJl
ZGljYXRlICopcHJlZGljYXRlV2l0aExlZnRFeHByZXNzaW9uOihOU0V4cHJlc3Npb24gKilsaHMg
cmlnaHRFeHByZXNzaW9uOihOU0V4cHJlc3Npb24gKilyaHMgbW9kaWZpZXI6KE5TQ29tcGFyaXNv
blByZWRpY2F0ZU1vZGlmaWVyKW1vZGlmaWVyIHR5cGU6KE5TUHJlZGljYXRlT3BlcmF0b3JUeXBl
KXR5cGUgb3B0aW9uczooTlNVSW50ZWdlcilvcHRpb25zOworIChOU1ByZWRpY2F0ZSAqKXByZWRp
Y2F0ZVdpdGhMZWZ0RXhwcmVzc2lvbjooTlNFeHByZXNzaW9uICopbGhzIHJpZ2h0RXhwcmVzc2lv
bjooTlNFeHByZXNzaW9uICopcmhzIGN1c3RvbVNlbGVjdG9yOihTRUwpc2VsZWN0b3I7CgotIChp
ZClpbml0V2l0aExlZnRFeHByZXNzaW9uOihOU0V4cHJlc3Npb24gKilsaHMgcmlnaHRFeHByZXNz
aW9uOihOU0V4cHJlc3Npb24gKilyaHMgbW9kaWZpZXI6KE5TQ29tcGFyaXNvblByZWRpY2F0ZU1v
ZGlmaWVyKW1vZGlmaWVyIHR5cGU6KE5TUHJlZGljYXRlT3BlcmF0b3JUeXBlKXR5cGUgb3B0aW9u
czooTlNVSW50ZWdlcilvcHRpb25zOwotIChpZClpbml0V2l0aExlZnRFeHByZXNzaW9uOihOU0V4
cHJlc3Npb24gKilsaHMgcmlnaHRFeHByZXNzaW9uOihOU0V4cHJlc3Npb24gKilyaHMgY3VzdG9t
U2VsZWN0b3I6KFNFTClzZWxlY3RvcjsKCi0gKE5TUHJlZGljYXRlT3BlcmF0b3JUeXBlKXByZWRp
Y2F0ZU9wZXJhdG9yVHlwZTsKLSAoTlNDb21wYXJpc29uUHJlZGljYXRlTW9kaWZpZXIpY29tcGFy
aXNvblByZWRpY2F0ZU1vZGlmaWVyOwotIChOU0V4cHJlc3Npb24gKilsZWZ0RXhwcmVzc2lvbjsK
LSAoTlNFeHByZXNzaW9uICopcmlnaHRFeHByZXNzaW9uOwotIChTRUwpY3VzdG9tU2VsZWN0b3I7
Ci0gKE5TVUludGVnZXIpb3B0aW9uczsKCkBlbmQKIyAxMjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJz
L05TQ29tcG91bmRQcmVkaWNhdGUuaCIgMSAzCiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0NvbXBvdW5kUHJlZGljYXRlLmgiIDMK
QGNsYXNzIE5TQXJyYXk7CgoKCmVudW0gewogICAgTlNOb3RQcmVkaWNhdGVUeXBlID0gMCwKICAg
IE5TQW5kUHJlZGljYXRlVHlwZSwKICAgIE5TT3JQcmVkaWNhdGVUeXBlLAp9Owp0eXBlZGVmIE5T
VUludGVnZXIgTlNDb21wb3VuZFByZWRpY2F0ZVR5cGU7CgpAaW50ZXJmYWNlIE5TQ29tcG91bmRQ
cmVkaWNhdGUgOiBOU1ByZWRpY2F0ZSB7CiAgICBAcHJpdmF0ZQogICAgdm9pZCAqX3Jlc2VydmVk
MjsKICAgIE5TVUludGVnZXIgX3R5cGU7CiAgICBOU0FycmF5ICpfc3VicHJlZGljYXRlczsKfQoK
LSAoaWQpaW5pdFdpdGhUeXBlOihOU0NvbXBvdW5kUHJlZGljYXRlVHlwZSl0eXBlIHN1YnByZWRp
Y2F0ZXM6KE5TQXJyYXkgKilzdWJwcmVkaWNhdGVzOwoKLSAoTlNDb21wb3VuZFByZWRpY2F0ZVR5
cGUpY29tcG91bmRQcmVkaWNhdGVUeXBlOwotIChOU0FycmF5ICopc3VicHJlZGljYXRlczsKCgor
IChOU1ByZWRpY2F0ZSAqKWFuZFByZWRpY2F0ZVdpdGhTdWJwcmVkaWNhdGVzOihOU0FycmF5ICop
c3VicHJlZGljYXRlczsKKyAoTlNQcmVkaWNhdGUgKilvclByZWRpY2F0ZVdpdGhTdWJwcmVkaWNh
dGVzOihOU0FycmF5ICopc3VicHJlZGljYXRlczsKKyAoTlNQcmVkaWNhdGUgKilub3RQcmVkaWNh
dGVXaXRoU3VicHJlZGljYXRlOihOU1ByZWRpY2F0ZSAqKXByZWRpY2F0ZTsKQGVuZAojIDEyMyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9G
b3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvTlNEaXN0cmlidXRlZExvY2suaCIgMSAzCgoKCgoKCkBjbGFz
cyBOU0RhdGU7CgpAaW50ZXJmYWNlIE5TRGlzdHJpYnV0ZWRMb2NrIDogTlNPYmplY3QgewpAcHJp
dmF0ZQogICAgdm9pZCAqX3ByaXY7Cn0KCisgKE5TRGlzdHJpYnV0ZWRMb2NrICopbG9ja1dpdGhQ
YXRoOihOU1N0cmluZyAqKXBhdGg7CgotIChpZClpbml0V2l0aFBhdGg6KE5TU3RyaW5nICopcGF0
aDsKCi0gKEJPT0wpdHJ5TG9jazsKLSAodm9pZCl1bmxvY2s7Ci0gKHZvaWQpYnJlYWtMb2NrOwot
IChOU0RhdGUgKilsb2NrRGF0ZTsKCkBlbmQKIyAxMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05T
RXhwcmVzc2lvbi5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TRXhwcmVzc2lvbi5oIiAzCkBjbGFzcyBOU1N0cmluZzsK
QGNsYXNzIE5TQXJyYXk7CkBjbGFzcyBOU011dGFibGVEaWN0aW9uYXJ5OwpAY2xhc3MgTlNQcmVk
aWNhdGU7CgoKCmVudW0gewogICAgTlNDb25zdGFudFZhbHVlRXhwcmVzc2lvblR5cGUgPSAwLAog
ICAgTlNFdmFsdWF0ZWRPYmplY3RFeHByZXNzaW9uVHlwZSwKICAgIE5TVmFyaWFibGVFeHByZXNz
aW9uVHlwZSwKICAgIE5TS2V5UGF0aEV4cHJlc3Npb25UeXBlLAogICAgTlNGdW5jdGlvbkV4cHJl
c3Npb25UeXBlCgogICAgLAogICAgTlNVbmlvblNldEV4cHJlc3Npb25UeXBlLAogICAgTlNJbnRl
cnNlY3RTZXRFeHByZXNzaW9uVHlwZSwKICAgIE5TTWludXNTZXRFeHByZXNzaW9uVHlwZSwKICAg
IE5TU3VicXVlcnlFeHByZXNzaW9uVHlwZSA9IDEzLAogICAgTlNBZ2dyZWdhdGVFeHByZXNzaW9u
VHlwZQoKCiAgICAsCiAgICBOU0Jsb2NrRXhwcmVzc2lvblR5cGUgPSAxOQoKfTsKdHlwZWRlZiBO
U1VJbnRlZ2VyIE5TRXhwcmVzc2lvblR5cGU7CgpAaW50ZXJmYWNlIE5TRXhwcmVzc2lvbiA6IE5T
T2JqZWN0IDxOU0NvZGluZywgTlNDb3B5aW5nPiB7CiAgICBAcHJpdmF0ZQogICAgdm9pZCAqX3Jl
c2VydmVkOwogICAgTlNFeHByZXNzaW9uVHlwZSBfZXhwcmVzc2lvblR5cGU7Cn0KCisgKE5TRXhw
cmVzc2lvbiAqKWV4cHJlc3Npb25Gb3JDb25zdGFudFZhbHVlOihpZClvYmo7CisgKE5TRXhwcmVz
c2lvbiAqKWV4cHJlc3Npb25Gb3JFdmFsdWF0ZWRPYmplY3Q7CisgKE5TRXhwcmVzc2lvbiAqKWV4
cHJlc3Npb25Gb3JWYXJpYWJsZTooTlNTdHJpbmcgKilzdHJpbmc7CisgKE5TRXhwcmVzc2lvbiAq
KWV4cHJlc3Npb25Gb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGg7CisgKE5TRXhwcmVzc2lv
biAqKWV4cHJlc3Npb25Gb3JGdW5jdGlvbjooTlNTdHJpbmcgKiluYW1lIGFyZ3VtZW50czooTlNB
cnJheSAqKXBhcmFtZXRlcnM7CiMgODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5k
YXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNFeHByZXNzaW9uLmgiIDMKKyAoTlNFeHByZXNzaW9u
ICopZXhwcmVzc2lvbkZvckFnZ3JlZ2F0ZTooTlNBcnJheSAqKXN1YmV4cHJlc3Npb25zOworIChO
U0V4cHJlc3Npb24gKilleHByZXNzaW9uRm9yVW5pb25TZXQ6KE5TRXhwcmVzc2lvbiAqKWxlZnQg
d2l0aDooTlNFeHByZXNzaW9uICopcmlnaHQ7CisgKE5TRXhwcmVzc2lvbiAqKWV4cHJlc3Npb25G
b3JJbnRlcnNlY3RTZXQ6KE5TRXhwcmVzc2lvbiAqKWxlZnQgd2l0aDooTlNFeHByZXNzaW9uICop
cmlnaHQ7CisgKE5TRXhwcmVzc2lvbiAqKWV4cHJlc3Npb25Gb3JNaW51c1NldDooTlNFeHByZXNz
aW9uICopbGVmdCB3aXRoOihOU0V4cHJlc3Npb24gKilyaWdodDsKKyAoTlNFeHByZXNzaW9uICop
ZXhwcmVzc2lvbkZvclN1YnF1ZXJ5OihOU0V4cHJlc3Npb24gKilleHByZXNzaW9uIHVzaW5nSXRl
cmF0b3JWYXJpYWJsZTooTlNTdHJpbmcgKil2YXJpYWJsZSBwcmVkaWNhdGU6KGlkKXByZWRpY2F0
ZTsKKyAoTlNFeHByZXNzaW9uICopZXhwcmVzc2lvbkZvckZ1bmN0aW9uOihOU0V4cHJlc3Npb24g
Kil0YXJnZXQgc2VsZWN0b3JOYW1lOihOU1N0cmluZyAqKW5hbWUgYXJndW1lbnRzOihOU0FycmF5
ICopcGFyYW1ldGVyczsKCgoKKyAoTlNFeHByZXNzaW9uICopZXhwcmVzc2lvbkZvckJsb2NrOihp
ZCAoXikoaWQgZXZhbHVhdGVkT2JqZWN0LCBOU0FycmF5ICpleHByZXNzaW9ucywgTlNNdXRhYmxl
RGljdGlvbmFyeSAqY29udGV4dCkpYmxvY2sgYXJndW1lbnRzOihOU0FycmF5ICopYXJndW1lbnRz
IDsKCgotIChpZClpbml0V2l0aEV4cHJlc3Npb25UeXBlOihOU0V4cHJlc3Npb25UeXBlKXR5cGU7
CgoKLSAoTlNFeHByZXNzaW9uVHlwZSlleHByZXNzaW9uVHlwZTsKLSAoaWQpY29uc3RhbnRWYWx1
ZTsKLSAoTlNTdHJpbmcgKilrZXlQYXRoOwotIChOU1N0cmluZyAqKWZ1bmN0aW9uOwotIChOU1N0
cmluZyAqKXZhcmlhYmxlOwotIChOU0V4cHJlc3Npb24gKilvcGVyYW5kOwotIChOU0FycmF5ICop
YXJndW1lbnRzOwoKCi0gKGlkKWNvbGxlY3Rpb247Ci0gKE5TUHJlZGljYXRlICopcHJlZGljYXRl
OwotIChOU0V4cHJlc3Npb24gKilsZWZ0RXhwcmVzc2lvbjsKLSAoTlNFeHByZXNzaW9uICopcmln
aHRFeHByZXNzaW9uOwoKCgotIChpZCAoXikoaWQsIE5TQXJyYXkgKiwgTlNNdXRhYmxlRGljdGlv
bmFyeSAqKSlleHByZXNzaW9uQmxvY2s7CgoKCi0gKGlkKWV4cHJlc3Npb25WYWx1ZVdpdGhPYmpl
Y3Q6KGlkKW9iamVjdCBjb250ZXh0OihOU011dGFibGVEaWN0aW9uYXJ5ICopY29udGV4dDsKQGVu
ZAojIDEyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNHYXJiYWdlQ29sbGVjdG9yLmgiIDEgMwoj
IDE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFk
ZXJzL05TR2FyYmFnZUNvbGxlY3Rvci5oIiAzCkBpbnRlcmZhY2UgTlNHYXJiYWdlQ29sbGVjdG9y
IDogTlNPYmplY3QKCgoKKyAoaWQpZGVmYXVsdENvbGxlY3RvcjsKCgotIChCT09MKWlzQ29sbGVj
dGluZyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgotICh2b2lkKWRpc2FibGU7Ci0gKHZv
aWQpZW5hYmxlOwotIChCT09MKWlzRW5hYmxlZDsKCi0gKHZvaWQpY29sbGVjdElmTmVlZGVkOwot
ICh2b2lkKWNvbGxlY3RFeGhhdXN0aXZlbHk7CgoKLSAodm9pZClkaXNhYmxlQ29sbGVjdG9yRm9y
UG9pbnRlcjoodm9pZCAqKXB0cjsKLSAodm9pZCllbmFibGVDb2xsZWN0b3JGb3JQb2ludGVyOih2
b2lkICopcHRyOwoKCgoKCgoKLSAoTlNab25lICopem9uZTsKQGVuZAojIDEyNiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9u
LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvTlNIRlNGaWxlVHlwZXMuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNIRlNGaWxlVHlwZXMuaCIg
MwpAY2xhc3MgTlNTdHJpbmc7CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGaWxlVHlwZUZvckhG
U1R5cGVDb2RlKE9TVHlwZSBoZnNGaWxlVHlwZUNvZGUpOwoKCmV4dGVybiAiQyIgT1NUeXBlIE5T
SEZTVHlwZUNvZGVGcm9tRmlsZVR5cGUoTlNTdHJpbmcgKmZpbGVUeXBlU3RyaW5nKTsKCgpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU0hGU1R5cGVPZkZpbGUoTlNTdHJpbmcgKmZ1bGxGaWxlUGF0aCk7
CiMgMTI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU0hhc2hUYWJsZS5oIiAxIDMKCgoKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9O
U1BvaW50ZXJGdW5jdGlvbnMuaCIgMSAzCiMgMjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNQb2ludGVyRnVuY3Rpb25zLmgiIDMKZW51
bSB7CgoKCiAgICBOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgPSAoMFVMIDw8IDApLAog
ICAgTlNQb2ludGVyRnVuY3Rpb25zWmVyb2luZ1dlYWtNZW1vcnkgPSAoMVVMIDw8IDApLAogICAg
TlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlTWVtb3J5ID0gKDJVTCA8PCAwKSwKICAgIE5TUG9pbnRl
ckZ1bmN0aW9uc01hbGxvY01lbW9yeSA9ICgzVUwgPDwgMCksCiAgICBOU1BvaW50ZXJGdW5jdGlv
bnNNYWNoVmlydHVhbE1lbW9yeSA9ICg0VUwgPDwgMCksCgoKCiAgICBOU1BvaW50ZXJGdW5jdGlv
bnNPYmplY3RQZXJzb25hbGl0eSA9ICgwVUwgPDwgOCksCiAgICBOU1BvaW50ZXJGdW5jdGlvbnNP
cGFxdWVQZXJzb25hbGl0eSA9ICgxVUwgPDwgOCksCiAgICBOU1BvaW50ZXJGdW5jdGlvbnNPYmpl
Y3RQb2ludGVyUGVyc29uYWxpdHkgPSAoMlVMIDw8IDgpLAogICAgTlNQb2ludGVyRnVuY3Rpb25z
Q1N0cmluZ1BlcnNvbmFsaXR5ID0gKDNVTCA8PCA4KSwKICAgIE5TUG9pbnRlckZ1bmN0aW9uc1N0
cnVjdFBlcnNvbmFsaXR5ID0gKDRVTCA8PCA4KSwKICAgIE5TUG9pbnRlckZ1bmN0aW9uc0ludGVn
ZXJQZXJzb25hbGl0eSA9ICg1VUwgPDwgOCksCgogICAgTlNQb2ludGVyRnVuY3Rpb25zQ29weUlu
ID0gKDFVTCA8PCAxNiksCn07Cgp0eXBlZGVmIE5TVUludGVnZXIgTlNQb2ludGVyRnVuY3Rpb25z
T3B0aW9uczsKCkBpbnRlcmZhY2UgTlNQb2ludGVyRnVuY3Rpb25zIDogTlNPYmplY3QgPE5TQ29w
eWluZz4KCi0gKGlkKWluaXRXaXRoT3B0aW9uczooTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucylv
cHRpb25zOworIChpZClwb2ludGVyRnVuY3Rpb25zV2l0aE9wdGlvbnM6KE5TUG9pbnRlckZ1bmN0
aW9uc09wdGlvbnMpb3B0aW9uczsKCgpAcHJvcGVydHkgTlNVSW50ZWdlciAoKmhhc2hGdW5jdGlv
bikoY29uc3Qgdm9pZCAqaXRlbSwgTlNVSW50ZWdlciAoKnNpemUpKGNvbnN0IHZvaWQgKml0ZW0p
KTsKQHByb3BlcnR5IEJPT0wgKCppc0VxdWFsRnVuY3Rpb24pKGNvbnN0IHZvaWQgKml0ZW0xLCBj
b25zdCB2b2lkKml0ZW0yLCBOU1VJbnRlZ2VyICgqc2l6ZSkoY29uc3Qgdm9pZCAqaXRlbSkpOwpA
cHJvcGVydHkgTlNVSW50ZWdlciAoKnNpemVGdW5jdGlvbikoY29uc3Qgdm9pZCAqaXRlbSk7CkBw
cm9wZXJ0eSBOU1N0cmluZyAqKCpkZXNjcmlwdGlvbkZ1bmN0aW9uKShjb25zdCB2b2lkICppdGVt
KTsKCgpAcHJvcGVydHkgdm9pZCAoKnJlbGlucXVpc2hGdW5jdGlvbikoY29uc3Qgdm9pZCAqaXRl
bSwgTlNVSW50ZWdlciAoKnNpemUpKGNvbnN0IHZvaWQgKml0ZW0pKTsKQHByb3BlcnR5IHZvaWQg
KigqYWNxdWlyZUZ1bmN0aW9uKShjb25zdCB2b2lkICpzcmMsIE5TVUludGVnZXIgKCpzaXplKShj
b25zdCB2b2lkICppdGVtKSwgQk9PTCBzaG91bGRDb3B5KTsKCgpAcHJvcGVydHkgQk9PTCB1c2Vz
U3Ryb25nV3JpdGVCYXJyaWVyOwpAcHJvcGVydHkgQk9PTCB1c2VzV2Vha1JlYWRBbmRXcml0ZUJh
cnJpZXJzOwoKQGVuZAojIDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvTlNIYXNoVGFibGUuaCIgMiAzCgoKCkBjbGFzcyBOU0FycmF5LCBO
U1NldCwgTlNIYXNoVGFibGU7CgoKCgoKCgplbnVtIHsKICAgIE5TSGFzaFRhYmxlU3Ryb25nTWVt
b3J5ID0gMCwKICAgIE5TSGFzaFRhYmxlWmVyb2luZ1dlYWtNZW1vcnkgPSBOU1BvaW50ZXJGdW5j
dGlvbnNaZXJvaW5nV2Vha01lbW9yeSwKICAgIE5TSGFzaFRhYmxlQ29weUluID0gTlNQb2ludGVy
RnVuY3Rpb25zQ29weUluLAogICAgTlNIYXNoVGFibGVPYmplY3RQb2ludGVyUGVyc29uYWxpdHkg
PSBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQb2ludGVyUGVyc29uYWxpdHksCn07Cgp0eXBlZGVm
IE5TVUludGVnZXIgTlNIYXNoVGFibGVPcHRpb25zOwoKQGludGVyZmFjZSBOU0hhc2hUYWJsZSA6
IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TQ29kaW5nLCBOU0Zhc3RFbnVtZXJhdGlvbj4KCi0gKGlk
KWluaXRXaXRoT3B0aW9uczooTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucylvcHRpb25zIGNhcGFj
aXR5OihOU1VJbnRlZ2VyKWluaXRpYWxDYXBhY2l0eTsKLSAoaWQpaW5pdFdpdGhQb2ludGVyRnVu
Y3Rpb25zOihOU1BvaW50ZXJGdW5jdGlvbnMgKilmdW5jdGlvbnMgY2FwYWNpdHk6KE5TVUludGVn
ZXIpaW5pdGlhbENhcGFjaXR5OwoKCgorIChpZCloYXNoVGFibGVXaXRoT3B0aW9uczooTlNQb2lu
dGVyRnVuY3Rpb25zT3B0aW9ucylvcHRpb25zOwoKKyAoaWQpaGFzaFRhYmxlV2l0aFdlYWtPYmpl
Y3RzOwoKCgotIChOU1BvaW50ZXJGdW5jdGlvbnMgKilwb2ludGVyRnVuY3Rpb25zOwoKLSAoTlNV
SW50ZWdlciljb3VudDsKLSAoaWQpbWVtYmVyOihpZClvYmplY3Q7Ci0gKE5TRW51bWVyYXRvciAq
KW9iamVjdEVudW1lcmF0b3I7CgotICh2b2lkKWFkZE9iamVjdDooaWQpb2JqZWN0OwotICh2b2lk
KXJlbW92ZU9iamVjdDooaWQpb2JqZWN0OwoKCi0gKHZvaWQpcmVtb3ZlQWxsT2JqZWN0czsKCi0g
KE5TQXJyYXkgKilhbGxPYmplY3RzOwoKLSAoaWQpYW55T2JqZWN0OwotIChCT09MKWNvbnRhaW5z
T2JqZWN0OihpZClhbk9iamVjdDsKCi0gKEJPT0wpaW50ZXJzZWN0c0hhc2hUYWJsZTooTlNIYXNo
VGFibGUgKilvdGhlcjsKLSAoQk9PTClpc0VxdWFsVG9IYXNoVGFibGU6KE5TSGFzaFRhYmxlICop
b3RoZXI7Ci0gKEJPT0wpaXNTdWJzZXRPZkhhc2hUYWJsZTooTlNIYXNoVGFibGUgKilvdGhlcjsK
Ci0gKHZvaWQpaW50ZXJzZWN0SGFzaFRhYmxlOihOU0hhc2hUYWJsZSAqKW90aGVyOwotICh2b2lk
KXVuaW9uSGFzaFRhYmxlOihOU0hhc2hUYWJsZSAqKW90aGVyOwotICh2b2lkKW1pbnVzSGFzaFRh
YmxlOihOU0hhc2hUYWJsZSAqKW90aGVyOwoKLSAoTlNTZXQgKilzZXRSZXByZXNlbnRhdGlvbjsK
CkBlbmQKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qge05TVUludGVnZXIgX3BpOyBOU1VJbnRlZ2VyIF9z
aTsgdm9pZCAqX2JzO30gTlNIYXNoRW51bWVyYXRvcjsKCmV4dGVybiAiQyIgdm9pZCBOU0ZyZWVI
YXNoVGFibGUoTlNIYXNoVGFibGUgKnRhYmxlKTsKZXh0ZXJuICJDIiB2b2lkIE5TUmVzZXRIYXNo
VGFibGUoTlNIYXNoVGFibGUgKnRhYmxlKTsKZXh0ZXJuICJDIiBCT09MIE5TQ29tcGFyZUhhc2hU
YWJsZXMoTlNIYXNoVGFibGUgKnRhYmxlMSwgTlNIYXNoVGFibGUgKnRhYmxlMik7CmV4dGVybiAi
QyIgTlNIYXNoVGFibGUgKk5TQ29weUhhc2hUYWJsZVdpdGhab25lKE5TSGFzaFRhYmxlICp0YWJs
ZSwgTlNab25lICp6b25lKTsKZXh0ZXJuICJDIiB2b2lkICpOU0hhc2hHZXQoTlNIYXNoVGFibGUg
KnRhYmxlLCBjb25zdCB2b2lkICpwb2ludGVyKTsKZXh0ZXJuICJDIiB2b2lkIE5TSGFzaEluc2Vy
dChOU0hhc2hUYWJsZSAqdGFibGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwpleHRlcm4gIkMiIHZv
aWQgTlNIYXNoSW5zZXJ0S25vd25BYnNlbnQoTlNIYXNoVGFibGUgKnRhYmxlLCBjb25zdCB2b2lk
ICpwb2ludGVyKTsKZXh0ZXJuICJDIiB2b2lkICpOU0hhc2hJbnNlcnRJZkFic2VudChOU0hhc2hU
YWJsZSAqdGFibGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwpleHRlcm4gIkMiIHZvaWQgTlNIYXNo
UmVtb3ZlKE5TSGFzaFRhYmxlICp0YWJsZSwgY29uc3Qgdm9pZCAqcG9pbnRlcik7CmV4dGVybiAi
QyIgTlNIYXNoRW51bWVyYXRvciBOU0VudW1lcmF0ZUhhc2hUYWJsZShOU0hhc2hUYWJsZSAqdGFi
bGUpOwpleHRlcm4gIkMiIHZvaWQgKk5TTmV4dEhhc2hFbnVtZXJhdG9ySXRlbShOU0hhc2hFbnVt
ZXJhdG9yICplbnVtZXJhdG9yKTsKZXh0ZXJuICJDIiB2b2lkIE5TRW5kSGFzaFRhYmxlRW51bWVy
YXRpb24oTlNIYXNoRW51bWVyYXRvciAqZW51bWVyYXRvcik7CmV4dGVybiAiQyIgTlNVSW50ZWdl
ciBOU0NvdW50SGFzaFRhYmxlKE5TSGFzaFRhYmxlICp0YWJsZSk7CmV4dGVybiAiQyIgTlNTdHJp
bmcgKk5TU3RyaW5nRnJvbUhhc2hUYWJsZShOU0hhc2hUYWJsZSAqdGFibGUpOwpleHRlcm4gIkMi
IE5TQXJyYXkgKk5TQWxsSGFzaFRhYmxlT2JqZWN0cyhOU0hhc2hUYWJsZSAqdGFibGUpOwoKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgTlNVSW50ZWdlciAoKmhhc2gpKE5TSGFzaFRhYmxlICp0YWJs
ZSwgY29uc3Qgdm9pZCAqKTsKICAgIEJPT0wgKCppc0VxdWFsKShOU0hhc2hUYWJsZSAqdGFibGUs
IGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKICAgIHZvaWQgKCpyZXRhaW4pKE5TSGFzaFRh
YmxlICp0YWJsZSwgY29uc3Qgdm9pZCAqKTsKICAgIHZvaWQgKCpyZWxlYXNlKShOU0hhc2hUYWJs
ZSAqdGFibGUsIHZvaWQgKik7CiAgICBOU1N0cmluZyAqKCpkZXNjcmliZSkoTlNIYXNoVGFibGUg
KnRhYmxlLCBjb25zdCB2b2lkICopOwp9IE5TSGFzaFRhYmxlQ2FsbEJhY2tzOwoKZXh0ZXJuICJD
IiBOU0hhc2hUYWJsZSAqTlNDcmVhdGVIYXNoVGFibGVXaXRoWm9uZShOU0hhc2hUYWJsZUNhbGxC
YWNrcyBjYWxsQmFja3MsIE5TVUludGVnZXIgY2FwYWNpdHksIE5TWm9uZSAqem9uZSk7CmV4dGVy
biAiQyIgTlNIYXNoVGFibGUgKk5TQ3JlYXRlSGFzaFRhYmxlKE5TSGFzaFRhYmxlQ2FsbEJhY2tz
IGNhbGxCYWNrcywgTlNVSW50ZWdlciBjYXBhY2l0eSk7CgoKZXh0ZXJuICJDIiBjb25zdCBOU0hh
c2hUYWJsZUNhbGxCYWNrcyBOU0ludGVnZXJIYXNoQ2FsbEJhY2tzIDsKZXh0ZXJuICJDIiBjb25z
dCBOU0hhc2hUYWJsZUNhbGxCYWNrcyBOU05vbk93bmVkUG9pbnRlckhhc2hDYWxsQmFja3M7CmV4
dGVybiAiQyIgY29uc3QgTlNIYXNoVGFibGVDYWxsQmFja3MgTlNOb25SZXRhaW5lZE9iamVjdEhh
c2hDYWxsQmFja3M7CmV4dGVybiAiQyIgY29uc3QgTlNIYXNoVGFibGVDYWxsQmFja3MgTlNPYmpl
Y3RIYXNoQ2FsbEJhY2tzOwpleHRlcm4gIkMiIGNvbnN0IE5TSGFzaFRhYmxlQ2FsbEJhY2tzIE5T
T3duZWRPYmplY3RJZGVudGl0eUhhc2hDYWxsQmFja3M7CmV4dGVybiAiQyIgY29uc3QgTlNIYXNo
VGFibGVDYWxsQmFja3MgTlNPd25lZFBvaW50ZXJIYXNoQ2FsbEJhY2tzOwpleHRlcm4gIkMiIGNv
bnN0IE5TSGFzaFRhYmxlQ2FsbEJhY2tzIE5TUG9pbnRlclRvU3RydWN0SGFzaENhbGxCYWNrczsK
ZXh0ZXJuICJDIiBjb25zdCBOU0hhc2hUYWJsZUNhbGxCYWNrcyBOU0ludEhhc2hDYWxsQmFja3Mg
X19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDEyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
TlNIb3N0LmgiIDEgMwoKCgoKCgpAY2xhc3MgTlNTdHJpbmcsIE5TQXJyYXksIE5TTXV0YWJsZUFy
cmF5OwoKQGludGVyZmFjZSBOU0hvc3QgOiBOU09iamVjdCB7CkBwcml2YXRlCiAgICBOU0FycmF5
ICpuYW1lczsKICAgIE5TQXJyYXkgKmFkZHJlc3NlczsKICAgIHZvaWQgKnJlc2VydmVkOwp9Cgor
IChOU0hvc3QgKiljdXJyZW50SG9zdDsKKyAoTlNIb3N0ICopaG9zdFdpdGhOYW1lOihOU1N0cmlu
ZyAqKW5hbWU7CisgKE5TSG9zdCAqKWhvc3RXaXRoQWRkcmVzczooTlNTdHJpbmcgKilhZGRyZXNz
OwoKCisgKHZvaWQpc2V0SG9zdENhY2hlRW5hYmxlZDooQk9PTClmbGFnOworIChCT09MKWlzSG9z
dENhY2hlRW5hYmxlZDsKKyAodm9pZClmbHVzaEhvc3RDYWNoZTsKCi0gKEJPT0wpaXNFcXVhbFRv
SG9zdDooTlNIb3N0ICopYUhvc3Q7CgotIChOU1N0cmluZyAqKW5hbWU7Ci0gKE5TQXJyYXkgKilu
YW1lczsKCi0gKE5TU3RyaW5nICopYWRkcmVzczsKLSAoTlNBcnJheSAqKWFkZHJlc3NlczsKCi0g
KE5TU3RyaW5nICopbG9jYWxpemVkTmFtZSA7CgpAZW5kCiMgMTI5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAz
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9OU01hcFRhYmxlLmgiIDEgMwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Zv
dW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNNYXBUYWJsZS5oIiAzCkBjbGFzcyBOU0FycmF5
LCBOU0RpY3Rpb25hcnksIE5TTWFwVGFibGU7CiMgMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNNYXBUYWJsZS5oIiAzCmVudW0gewog
ICAgTlNNYXBUYWJsZVN0cm9uZ01lbW9yeSA9IDAsCiAgICBOU01hcFRhYmxlWmVyb2luZ1dlYWtN
ZW1vcnkgPSBOU1BvaW50ZXJGdW5jdGlvbnNaZXJvaW5nV2Vha01lbW9yeSwKICAgIE5TTWFwVGFi
bGVDb3B5SW4gPSBOU1BvaW50ZXJGdW5jdGlvbnNDb3B5SW4sCiAgICBOU01hcFRhYmxlT2JqZWN0
UG9pbnRlclBlcnNvbmFsaXR5ID0gTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UG9pbnRlclBlcnNv
bmFsaXR5Cn07Cgp0eXBlZGVmIE5TVUludGVnZXIgTlNNYXBUYWJsZU9wdGlvbnM7CgpAaW50ZXJm
YWNlIE5TTWFwVGFibGUgOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZywgTlNGYXN0RW51
bWVyYXRpb24+CgotIChpZClpbml0V2l0aEtleU9wdGlvbnM6KE5TUG9pbnRlckZ1bmN0aW9uc09w
dGlvbnMpa2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6KE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMp
dmFsdWVPcHRpb25zIGNhcGFjaXR5OihOU1VJbnRlZ2VyKWluaXRpYWxDYXBhY2l0eTsKLSAoaWQp
aW5pdFdpdGhLZXlQb2ludGVyRnVuY3Rpb25zOihOU1BvaW50ZXJGdW5jdGlvbnMgKilrZXlGdW5j
dGlvbnMgdmFsdWVQb2ludGVyRnVuY3Rpb25zOihOU1BvaW50ZXJGdW5jdGlvbnMgKil2YWx1ZUZ1
bmN0aW9ucyBjYXBhY2l0eTooTlNVSW50ZWdlcilpbml0aWFsQ2FwYWNpdHk7CgorIChpZCltYXBU
YWJsZVdpdGhLZXlPcHRpb25zOihOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zKWtleU9wdGlvbnMg
dmFsdWVPcHRpb25zOihOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zKXZhbHVlT3B0aW9uczsKCisg
KGlkKW1hcFRhYmxlV2l0aFN0cm9uZ1RvU3Ryb25nT2JqZWN0czsKKyAoaWQpbWFwVGFibGVXaXRo
V2Vha1RvU3Ryb25nT2JqZWN0czsKKyAoaWQpbWFwVGFibGVXaXRoU3Ryb25nVG9XZWFrT2JqZWN0
czsKKyAoaWQpbWFwVGFibGVXaXRoV2Vha1RvV2Vha09iamVjdHM7CgoKLSAoTlNQb2ludGVyRnVu
Y3Rpb25zICopa2V5UG9pbnRlckZ1bmN0aW9uczsKLSAoTlNQb2ludGVyRnVuY3Rpb25zICopdmFs
dWVQb2ludGVyRnVuY3Rpb25zOwoKLSAoaWQpb2JqZWN0Rm9yS2V5OihpZClhS2V5OwoKLSAodm9p
ZClyZW1vdmVPYmplY3RGb3JLZXk6KGlkKWFLZXk7Ci0gKHZvaWQpc2V0T2JqZWN0OihpZClhbk9i
amVjdCBmb3JLZXk6KGlkKWFLZXk7CgotIChOU1VJbnRlZ2VyKWNvdW50OwoKLSAoTlNFbnVtZXJh
dG9yICopa2V5RW51bWVyYXRvcjsKLSAoTlNFbnVtZXJhdG9yICopb2JqZWN0RW51bWVyYXRvcjsK
Ci0gKHZvaWQpcmVtb3ZlQWxsT2JqZWN0czsKCi0gKE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnlS
ZXByZXNlbnRhdGlvbjsKQGVuZAoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qge05TVUludGVnZXIgX3Bp
OyBOU1VJbnRlZ2VyIF9zaTsgdm9pZCAqX2JzO30gTlNNYXBFbnVtZXJhdG9yOwoKCgpleHRlcm4g
IkMiIHZvaWQgTlNGcmVlTWFwVGFibGUoTlNNYXBUYWJsZSAqdGFibGUpOwpleHRlcm4gIkMiIHZv
aWQgTlNSZXNldE1hcFRhYmxlKE5TTWFwVGFibGUgKnRhYmxlKTsKZXh0ZXJuICJDIiBCT09MIE5T
Q29tcGFyZU1hcFRhYmxlcyhOU01hcFRhYmxlICp0YWJsZTEsIE5TTWFwVGFibGUgKnRhYmxlMik7
CmV4dGVybiAiQyIgTlNNYXBUYWJsZSAqTlNDb3B5TWFwVGFibGVXaXRoWm9uZShOU01hcFRhYmxl
ICp0YWJsZSwgTlNab25lICp6b25lKTsKZXh0ZXJuICJDIiBCT09MIE5TTWFwTWVtYmVyKE5TTWFw
VGFibGUgKnRhYmxlLCBjb25zdCB2b2lkICprZXksIHZvaWQgKipvcmlnaW5hbEtleSwgdm9pZCAq
KnZhbHVlKTsKZXh0ZXJuICJDIiB2b2lkICpOU01hcEdldChOU01hcFRhYmxlICp0YWJsZSwgY29u
c3Qgdm9pZCAqa2V5KTsKZXh0ZXJuICJDIiB2b2lkIE5TTWFwSW5zZXJ0KE5TTWFwVGFibGUgKnRh
YmxlLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKnZhbHVlKTsKZXh0ZXJuICJDIiB2b2lk
IE5TTWFwSW5zZXJ0S25vd25BYnNlbnQoTlNNYXBUYWJsZSAqdGFibGUsIGNvbnN0IHZvaWQgKmtl
eSwgY29uc3Qgdm9pZCAqdmFsdWUpOwpleHRlcm4gIkMiIHZvaWQgKk5TTWFwSW5zZXJ0SWZBYnNl
bnQoTlNNYXBUYWJsZSAqdGFibGUsIGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqdmFsdWUp
OwpleHRlcm4gIkMiIHZvaWQgTlNNYXBSZW1vdmUoTlNNYXBUYWJsZSAqdGFibGUsIGNvbnN0IHZv
aWQgKmtleSk7CmV4dGVybiAiQyIgTlNNYXBFbnVtZXJhdG9yIE5TRW51bWVyYXRlTWFwVGFibGUo
TlNNYXBUYWJsZSAqdGFibGUpOwpleHRlcm4gIkMiIEJPT0wgTlNOZXh0TWFwRW51bWVyYXRvclBh
aXIoTlNNYXBFbnVtZXJhdG9yICplbnVtZXJhdG9yLCB2b2lkICoqa2V5LCB2b2lkICoqdmFsdWUp
OwpleHRlcm4gIkMiIHZvaWQgTlNFbmRNYXBUYWJsZUVudW1lcmF0aW9uKE5TTWFwRW51bWVyYXRv
ciAqZW51bWVyYXRvcik7CmV4dGVybiAiQyIgTlNVSW50ZWdlciBOU0NvdW50TWFwVGFibGUoTlNN
YXBUYWJsZSAqdGFibGUpOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1N0cmluZ0Zyb21NYXBUYWJs
ZShOU01hcFRhYmxlICp0YWJsZSk7CmV4dGVybiAiQyIgTlNBcnJheSAqTlNBbGxNYXBUYWJsZUtl
eXMoTlNNYXBUYWJsZSAqdGFibGUpOwpleHRlcm4gIkMiIE5TQXJyYXkgKk5TQWxsTWFwVGFibGVW
YWx1ZXMoTlNNYXBUYWJsZSAqdGFibGUpOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgTlNVSW50
ZWdlciAoKmhhc2gpKE5TTWFwVGFibGUgKnRhYmxlLCBjb25zdCB2b2lkICopOwogICAgQk9PTCAo
KmlzRXF1YWwpKE5TTWFwVGFibGUgKnRhYmxlLCBjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7
CiAgICB2b2lkICgqcmV0YWluKShOU01hcFRhYmxlICp0YWJsZSwgY29uc3Qgdm9pZCAqKTsKICAg
IHZvaWQgKCpyZWxlYXNlKShOU01hcFRhYmxlICp0YWJsZSwgdm9pZCAqKTsKICAgIE5TU3RyaW5n
ICooKmRlc2NyaWJlKShOU01hcFRhYmxlICp0YWJsZSwgY29uc3Qgdm9pZCAqKTsKICAgIGNvbnN0
IHZvaWQgKm5vdEFLZXlNYXJrZXI7Cn0gTlNNYXBUYWJsZUtleUNhbGxCYWNrczsKCiNkZWZpbmUg
TlNOb3RBbkludE1hcEtleSAoKGNvbnN0IHZvaWQgKilOU0ludGVnZXJNaW4pCiNkZWZpbmUgTlNO
b3RBbkludGVnZXJNYXBLZXkgKChjb25zdCB2b2lkICopTlNJbnRlZ2VyTWluKQojZGVmaW5lIE5T
Tm90QVBvaW50ZXJNYXBLZXkgKChjb25zdCB2b2lkICopVUlOVFBUUl9NQVgpCgp0eXBlZGVmIHN0
cnVjdCB7CiAgICB2b2lkICgqcmV0YWluKShOU01hcFRhYmxlICp0YWJsZSwgY29uc3Qgdm9pZCAq
KTsKICAgIHZvaWQgKCpyZWxlYXNlKShOU01hcFRhYmxlICp0YWJsZSwgdm9pZCAqKTsKICAgIE5T
U3RyaW5nICooKmRlc2NyaWJlKShOU01hcFRhYmxlICp0YWJsZSwgY29uc3Qgdm9pZCAqKTsKfSBO
U01hcFRhYmxlVmFsdWVDYWxsQmFja3M7CgpleHRlcm4gIkMiIE5TTWFwVGFibGUgKk5TQ3JlYXRl
TWFwVGFibGVXaXRoWm9uZShOU01hcFRhYmxlS2V5Q2FsbEJhY2tzIGtleUNhbGxCYWNrcywgTlNN
YXBUYWJsZVZhbHVlQ2FsbEJhY2tzIHZhbHVlQ2FsbEJhY2tzLCBOU1VJbnRlZ2VyIGNhcGFjaXR5
LCBOU1pvbmUgKnpvbmUpOwpleHRlcm4gIkMiIE5TTWFwVGFibGUgKk5TQ3JlYXRlTWFwVGFibGUo
TlNNYXBUYWJsZUtleUNhbGxCYWNrcyBrZXlDYWxsQmFja3MsIE5TTWFwVGFibGVWYWx1ZUNhbGxC
YWNrcyB2YWx1ZUNhbGxCYWNrcywgTlNVSW50ZWdlciBjYXBhY2l0eSk7CgoKCgpleHRlcm4gIkMi
IGNvbnN0IE5TTWFwVGFibGVLZXlDYWxsQmFja3MgTlNJbnRlZ2VyTWFwS2V5Q2FsbEJhY2tzIDsK
ZXh0ZXJuICJDIiBjb25zdCBOU01hcFRhYmxlS2V5Q2FsbEJhY2tzIE5TTm9uT3duZWRQb2ludGVy
TWFwS2V5Q2FsbEJhY2tzOwpleHRlcm4gIkMiIGNvbnN0IE5TTWFwVGFibGVLZXlDYWxsQmFja3Mg
TlNOb25Pd25lZFBvaW50ZXJPck51bGxNYXBLZXlDYWxsQmFja3M7CmV4dGVybiAiQyIgY29uc3Qg
TlNNYXBUYWJsZUtleUNhbGxCYWNrcyBOU05vblJldGFpbmVkT2JqZWN0TWFwS2V5Q2FsbEJhY2tz
OwpleHRlcm4gIkMiIGNvbnN0IE5TTWFwVGFibGVLZXlDYWxsQmFja3MgTlNPYmplY3RNYXBLZXlD
YWxsQmFja3M7CmV4dGVybiAiQyIgY29uc3QgTlNNYXBUYWJsZUtleUNhbGxCYWNrcyBOU093bmVk
UG9pbnRlck1hcEtleUNhbGxCYWNrczsKZXh0ZXJuICJDIiBjb25zdCBOU01hcFRhYmxlS2V5Q2Fs
bEJhY2tzIE5TSW50TWFwS2V5Q2FsbEJhY2tzIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsK
CgoKZXh0ZXJuICJDIiBjb25zdCBOU01hcFRhYmxlVmFsdWVDYWxsQmFja3MgTlNJbnRlZ2VyTWFw
VmFsdWVDYWxsQmFja3MgOwpleHRlcm4gIkMiIGNvbnN0IE5TTWFwVGFibGVWYWx1ZUNhbGxCYWNr
cyBOU05vbk93bmVkUG9pbnRlck1hcFZhbHVlQ2FsbEJhY2tzOwpleHRlcm4gIkMiIGNvbnN0IE5T
TWFwVGFibGVWYWx1ZUNhbGxCYWNrcyBOU09iamVjdE1hcFZhbHVlQ2FsbEJhY2tzOwpleHRlcm4g
IkMiIGNvbnN0IE5TTWFwVGFibGVWYWx1ZUNhbGxCYWNrcyBOU05vblJldGFpbmVkT2JqZWN0TWFw
VmFsdWVDYWxsQmFja3M7CmV4dGVybiAiQyIgY29uc3QgTlNNYXBUYWJsZVZhbHVlQ2FsbEJhY2tz
IE5TT3duZWRQb2ludGVyTWFwVmFsdWVDYWxsQmFja3M7CmV4dGVybiAiQyIgY29uc3QgTlNNYXBU
YWJsZVZhbHVlQ2FsbEJhY2tzIE5TSW50TWFwVmFsdWVDYWxsQmFja3MgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDEzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNNZXRhZGF0YS5oIiAx
IDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9OU01ldGFkYXRhLmgiIDMKQGNsYXNzIE5TU3RyaW5nLCBOU0FycmF5LCBOU0RpY3Rp
b25hcnksIE5TUHJlZGljYXRlOwpAY2xhc3MgTlNNZXRhZGF0YUl0ZW0sIE5TTWV0YWRhdGFRdWVy
eUF0dHJpYnV0ZVZhbHVlVHVwbGUsIE5TTWV0YWRhdGFRdWVyeVJlc3VsdEdyb3VwOwpAcHJvdG9j
b2wgTlNNZXRhZGF0YVF1ZXJ5RGVsZWdhdGU7CgpAaW50ZXJmYWNlIE5TTWV0YWRhdGFRdWVyeSA6
IE5TT2JqZWN0IHsKQHByaXZhdGUKICAgIE5TVUludGVnZXIgX2ZsYWdzOwogICAgTlNUaW1lSW50
ZXJ2YWwgX2ludGVydmFsOwogICAgaWQgX3ByaXZhdGVbMTFdOwogICAgdm9pZCAqX3Jlc2VydmVk
Owp9CgotIChpZClpbml0OwoKLSAoaWQgPE5TTWV0YWRhdGFRdWVyeURlbGVnYXRlPilkZWxlZ2F0
ZTsKLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPE5TTWV0YWRhdGFRdWVyeURlbGVnYXRlPilkZWxl
Z2F0ZTsKCi0gKE5TUHJlZGljYXRlICopcHJlZGljYXRlOwotICh2b2lkKXNldFByZWRpY2F0ZToo
TlNQcmVkaWNhdGUgKilwcmVkaWNhdGU7CgotIChOU0FycmF5ICopc29ydERlc2NyaXB0b3JzOwot
ICh2b2lkKXNldFNvcnREZXNjcmlwdG9yczooTlNBcnJheSAqKWRlc2NyaXB0b3JzOwoKLSAoTlNB
cnJheSAqKXZhbHVlTGlzdEF0dHJpYnV0ZXM7Ci0gKHZvaWQpc2V0VmFsdWVMaXN0QXR0cmlidXRl
czooTlNBcnJheSAqKWF0dHJzOwoKLSAoTlNBcnJheSAqKWdyb3VwaW5nQXR0cmlidXRlczsKLSAo
dm9pZClzZXRHcm91cGluZ0F0dHJpYnV0ZXM6KE5TQXJyYXkgKilhdHRyczsKCi0gKE5TVGltZUlu
dGVydmFsKW5vdGlmaWNhdGlvbkJhdGNoaW5nSW50ZXJ2YWw7Ci0gKHZvaWQpc2V0Tm90aWZpY2F0
aW9uQmF0Y2hpbmdJbnRlcnZhbDooTlNUaW1lSW50ZXJ2YWwpdGk7CgotIChOU0FycmF5ICopc2Vh
cmNoU2NvcGVzOwotICh2b2lkKXNldFNlYXJjaFNjb3BlczooTlNBcnJheSAqKXNjb3BlczsKCgoK
CgoKLSAoQk9PTClzdGFydFF1ZXJ5OwotICh2b2lkKXN0b3BRdWVyeTsKCi0gKEJPT0wpaXNTdGFy
dGVkOwotIChCT09MKWlzR2F0aGVyaW5nOwotIChCT09MKWlzU3RvcHBlZDsKCi0gKHZvaWQpZGlz
YWJsZVVwZGF0ZXM7Ci0gKHZvaWQpZW5hYmxlVXBkYXRlczsKCgoKLSAoTlNVSW50ZWdlcilyZXN1
bHRDb3VudDsKLSAoaWQpcmVzdWx0QXRJbmRleDooTlNVSW50ZWdlcilpZHg7CgotIChOU0FycmF5
ICopcmVzdWx0czsKCi0gKE5TVUludGVnZXIpaW5kZXhPZlJlc3VsdDooaWQpcmVzdWx0OwoKLSAo
TlNEaWN0aW9uYXJ5ICopdmFsdWVMaXN0czsKCi0gKE5TQXJyYXkgKilncm91cGVkUmVzdWx0czsK
Ci0gKGlkKXZhbHVlT2ZBdHRyaWJ1dGU6KE5TU3RyaW5nICopYXR0ck5hbWUgZm9yUmVzdWx0QXRJ
bmRleDooTlNVSW50ZWdlcilpZHg7CgpAZW5kCgpAcHJvdG9jb2wgTlNNZXRhZGF0YVF1ZXJ5RGVs
ZWdhdGUgPE5TT2JqZWN0PgpAb3B0aW9uYWwKCi0gKGlkKW1ldGFkYXRhUXVlcnk6KE5TTWV0YWRh
dGFRdWVyeSAqKXF1ZXJ5IHJlcGxhY2VtZW50T2JqZWN0Rm9yUmVzdWx0T2JqZWN0OihOU01ldGFk
YXRhSXRlbSAqKXJlc3VsdDsKLSAoaWQpbWV0YWRhdGFRdWVyeTooTlNNZXRhZGF0YVF1ZXJ5ICop
cXVlcnkgcmVwbGFjZW1lbnRWYWx1ZUZvckF0dHJpYnV0ZTooTlNTdHJpbmcgKilhdHRyTmFtZSB2
YWx1ZTooaWQpYXR0clZhbHVlOwoKQGVuZAoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBO
U01ldGFkYXRhUXVlcnlEaWRTdGFydEdhdGhlcmluZ05vdGlmaWNhdGlvbiA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU01ldGFkYXRhUXVlcnlHYXRoZXJpbmdQcm9ncmVzc05vdGlmaWNh
dGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU01ldGFkYXRhUXVlcnlEaWRGaW5p
c2hHYXRoZXJpbmdOb3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNN
ZXRhZGF0YVF1ZXJ5RGlkVXBkYXRlTm90aWZpY2F0aW9uIDsKCmV4dGVybiAiQyIgTlNTdHJpbmcg
KiBjb25zdCBOU01ldGFkYXRhUXVlcnlSZXN1bHRDb250ZW50UmVsZXZhbmNlQXR0cmlidXRlIDsK
CgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNNZXRhZGF0YVF1ZXJ5VXNlckhvbWVTY29w
ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU01ldGFkYXRhUXVlcnlMb2NhbENvbXB1
dGVyU2NvcGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNNZXRhZGF0YVF1ZXJ5TmV0
d29ya1Njb3BlIDsKCkBpbnRlcmZhY2UgTlNNZXRhZGF0YUl0ZW0gOiBOU09iamVjdCB7CkBwcml2
YXRlCiAgICBpZCBfaXRlbTsKICAgIHZvaWQgKl9yZXNlcnZlZDsKfQoKLSAoaWQpdmFsdWVGb3JB
dHRyaWJ1dGU6KE5TU3RyaW5nICopa2V5OwotIChOU0RpY3Rpb25hcnkgKil2YWx1ZXNGb3JBdHRy
aWJ1dGVzOihOU0FycmF5ICopa2V5czsKCi0gKE5TQXJyYXkgKilhdHRyaWJ1dGVzOwoKQGVuZAoK
QGludGVyZmFjZSBOU01ldGFkYXRhUXVlcnlBdHRyaWJ1dGVWYWx1ZVR1cGxlIDogTlNPYmplY3Qg
ewpAcHJpdmF0ZQogICAgaWQgX2F0dHI7CiAgICBpZCBfdmFsdWU7CiAgICBOU1VJbnRlZ2VyIF9j
b3VudDsKICAgIHZvaWQgKl9yZXNlcnZlZDsKfQoKLSAoTlNTdHJpbmcgKilhdHRyaWJ1dGU7Ci0g
KGlkKXZhbHVlOwotIChOU1VJbnRlZ2VyKWNvdW50OwoKQGVuZAoKQGludGVyZmFjZSBOU01ldGFk
YXRhUXVlcnlSZXN1bHRHcm91cCA6IE5TT2JqZWN0IHsKQHByaXZhdGUKICAgIGlkIF9wcml2YXRl
WzldOwogICAgTlNVSW50ZWdlciBfcHJpdmF0ZTJbMV07CiAgICB2b2lkICpfcmVzZXJ2ZWQ7Cn0K
Ci0gKE5TU3RyaW5nICopYXR0cmlidXRlOwotIChpZCl2YWx1ZTsKCi0gKE5TQXJyYXkgKilzdWJn
cm91cHM7CgotIChOU1VJbnRlZ2VyKXJlc3VsdENvdW50OwotIChpZClyZXN1bHRBdEluZGV4OihO
U1VJbnRlZ2VyKWlkeDsKCi0gKE5TQXJyYXkgKilyZXN1bHRzOwoKQGVuZAojIDEzMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0
aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvTlNPYmplY3RTY3JpcHRpbmcuaCIgMSAzCiMgOSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU09iamVjdFNjcmlw
dGluZy5oIiAzCkBjbGFzcyBOU0RpY3Rpb25hcnksIE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyOwoK
QGludGVyZmFjZSBOU09iamVjdChOU1NjcmlwdGluZykKCgoKCgotIChpZClzY3JpcHRpbmdWYWx1
ZUZvclNwZWNpZmllcjooTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKilvYmplY3RTcGVjaWZpZXI7
CgoKCgoKCgotIChOU0RpY3Rpb25hcnkgKilzY3JpcHRpbmdQcm9wZXJ0aWVzOwoKCgotICh2b2lk
KXNldFNjcmlwdGluZ1Byb3BlcnRpZXM6KE5TRGljdGlvbmFyeSAqKXByb3BlcnRpZXM7CgoKCgoK
CgotIChpZCljb3B5U2NyaXB0aW5nVmFsdWU6KGlkKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilr
ZXkgd2l0aFByb3BlcnRpZXM6KE5TRGljdGlvbmFyeSAqKXByb3BlcnRpZXM7CgoKCi0gKGlkKW5l
d1NjcmlwdGluZ09iamVjdE9mQ2xhc3M6KENsYXNzKW9iamVjdENsYXNzIGZvclZhbHVlRm9yS2V5
OihOU1N0cmluZyAqKWtleSB3aXRoQ29udGVudHNWYWx1ZTooaWQpY29udGVudHNWYWx1ZSBwcm9w
ZXJ0aWVzOihOU0RpY3Rpb25hcnkgKilwcm9wZXJ0aWVzOwoKCgpAZW5kCiMgMTMyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRp
b24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9OU09ydGhvZ3JhcGh5LmgiIDEgMwojIDkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNPcnRob2dyYXBoeS5oIiAz
CkBjbGFzcyBOU1N0cmluZywgTlNBcnJheSwgTlNEaWN0aW9uYXJ5OwoKCgpAaW50ZXJmYWNlIE5T
T3J0aG9ncmFwaHkgOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4KCgpAcHJvcGVydHkg
KHJlYWRvbmx5KSBOU1N0cmluZyAqZG9taW5hbnRTY3JpcHQ7CkBwcm9wZXJ0eSAocmVhZG9ubHkp
IE5TRGljdGlvbmFyeSAqbGFuZ3VhZ2VNYXA7CgpAZW5kCgpAaW50ZXJmYWNlIE5TT3J0aG9ncmFw
aHkgKE5TT3J0aG9ncmFwaHlFeHRlbmRlZCkKCgotIChOU0FycmF5ICopbGFuZ3VhZ2VzRm9yU2Ny
aXB0OihOU1N0cmluZyAqKXNjcmlwdDsKLSAoTlNTdHJpbmcgKilkb21pbmFudExhbmd1YWdlRm9y
U2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKCgpAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1N0cmlu
ZyAqZG9taW5hbnRMYW5ndWFnZTsKQHByb3BlcnR5IChyZWFkb25seSkgTlNBcnJheSAqYWxsU2Ny
aXB0czsKQHByb3BlcnR5IChyZWFkb25seSkgTlNBcnJheSAqYWxsTGFuZ3VhZ2VzOwoKQGVuZAoK
QGludGVyZmFjZSBOU09ydGhvZ3JhcGh5IChOU09ydGhvZ3JhcGh5Q3JlYXRpb24pCgorIChpZClv
cnRob2dyYXBoeVdpdGhEb21pbmFudFNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQgbGFuZ3VhZ2VN
YXA6KE5TRGljdGlvbmFyeSAqKW1hcDsKLSAoaWQpaW5pdFdpdGhEb21pbmFudFNjcmlwdDooTlNT
dHJpbmcgKilzY3JpcHQgbGFuZ3VhZ2VNYXA6KE5TRGljdGlvbmFyeSAqKW1hcDsKCkBlbmQKIyAx
MzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvRm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3Vu
ZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TUG9pbnRlckFycmF5LmgiIDEgMwojIDI2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TUG9p
bnRlckFycmF5LmgiIDMKQGludGVyZmFjZSBOU1BvaW50ZXJBcnJheSA6IE5TT2JqZWN0IDxOU0Zh
c3RFbnVtZXJhdGlvbiwgTlNDb3B5aW5nLCBOU0NvZGluZz4KCi0gaW5pdFdpdGhPcHRpb25zOihO
U1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zKW9wdGlvbnM7Ci0gaW5pdFdpdGhQb2ludGVyRnVuY3Rp
b25zOihOU1BvaW50ZXJGdW5jdGlvbnMgKilmdW5jdGlvbnM7CgorIHBvaW50ZXJBcnJheVdpdGhP
cHRpb25zOihOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zKW9wdGlvbnM7CisgcG9pbnRlckFycmF5
V2l0aFBvaW50ZXJGdW5jdGlvbnM6KE5TUG9pbnRlckZ1bmN0aW9ucyAqKWZ1bmN0aW9uczsKCgot
IChOU1BvaW50ZXJGdW5jdGlvbnMgKilwb2ludGVyRnVuY3Rpb25zOwoKLSAodm9pZCAqKXBvaW50
ZXJBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OwoKCi0gKHZvaWQpYWRkUG9pbnRlcjoodm9pZCAq
KXBvaW50ZXI7Ci0gKHZvaWQpcmVtb3ZlUG9pbnRlckF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7
Ci0gKHZvaWQpaW5zZXJ0UG9pbnRlcjoodm9pZCAqKWl0ZW0gYXRJbmRleDooTlNVSW50ZWdlcilp
bmRleDsKCi0gKHZvaWQpcmVwbGFjZVBvaW50ZXJBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4IHdp
dGhQb2ludGVyOih2b2lkICopaXRlbTsKCi0gKHZvaWQpY29tcGFjdDsKCi0gKE5TVUludGVnZXIp
Y291bnQ7Ci0gKHZvaWQpc2V0Q291bnQ6KE5TVUludGVnZXIpY291bnQ7CgpAZW5kCgoKCgoKQGlu
dGVyZmFjZSBOU1BvaW50ZXJBcnJheSAoTlNBcnJheUNvbnZlbmllbmNlcykKCgorIHBvaW50ZXJB
cnJheVdpdGhTdHJvbmdPYmplY3RzOworIHBvaW50ZXJBcnJheVdpdGhXZWFrT2JqZWN0czsKCi0g
KE5TQXJyYXkgKilhbGxPYmplY3RzOwoKQGVuZAojIDEzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwoKCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9OU1NjcmlwdENsYXNzRGVzY3JpcHRpb24uaCIgMSAzCiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1NjcmlwdENsYXNzRGVzY3Jp
cHRpb24uaCIgMwpAY2xhc3MgTlNTY3JpcHRDb21tYW5kRGVzY3JpcHRpb247CgpAaW50ZXJmYWNl
IE5TU2NyaXB0Q2xhc3NEZXNjcmlwdGlvbiA6IE5TQ2xhc3NEZXNjcmlwdGlvbiB7CiAgICBAcHJp
dmF0ZQogICAgTlNTdHJpbmcgKl9zdWl0ZU5hbWU7CiAgICBOU1N0cmluZyAqX29iamNDbGFzc05h
bWU7CiAgICBGb3VyQ2hhckNvZGUgX2FwcGxlRXZlbnRDb2RlOwogICAgTlNPYmplY3QgKl9zdXBl
cmNsYXNzTmFtZU9yRGVzY3JpcHRpb247CiAgICBOU0FycmF5ICpfYXR0cmlidXRlRGVzY3JpcHRp
b25zOwogICAgTlNBcnJheSAqX3RvT25lUmVsYXRpb25zaGlwRGVzY3JpcHRpb25zOwogICAgTlNB
cnJheSAqX3RvTWFueVJlbGF0aW9uc2hpcERlc2NyaXB0aW9uczsKICAgIE5TRGljdGlvbmFyeSAq
X2NvbW1hbmRNZXRob2RTZWxlY3RvcnNCeU5hbWU7CiAgICBpZCBfbW9yZVZhcnM7Cn0KCgoKKyAo
TlNTY3JpcHRDbGFzc0Rlc2NyaXB0aW9uICopY2xhc3NEZXNjcmlwdGlvbkZvckNsYXNzOihDbGFz
cylhQ2xhc3M7CgoKCi0gKGlkKWluaXRXaXRoU3VpdGVOYW1lOihOU1N0cmluZyAqKXN1aXRlTmFt
ZSBjbGFzc05hbWU6KE5TU3RyaW5nICopY2xhc3NOYW1lIGRpY3Rpb25hcnk6KE5TRGljdGlvbmFy
eSAqKWNsYXNzRGVjbGFyYXRpb247CgoKCi0gKE5TU3RyaW5nICopc3VpdGVOYW1lOwotIChOU1N0
cmluZyAqKWNsYXNzTmFtZTsKCgoKCgotIChOU1N0cmluZyAqKWltcGxlbWVudGF0aW9uQ2xhc3NO
YW1lOwoKCgoKCi0gKE5TU2NyaXB0Q2xhc3NEZXNjcmlwdGlvbiAqKXN1cGVyY2xhc3NEZXNjcmlw
dGlvbjsKCgoKLSAoRm91ckNoYXJDb2RlKWFwcGxlRXZlbnRDb2RlOwoKCgotIChCT09MKW1hdGNo
ZXNBcHBsZUV2ZW50Q29kZTooRm91ckNoYXJDb2RlKWFwcGxlRXZlbnRDb2RlOwoKCgotIChCT09M
KXN1cHBvcnRzQ29tbWFuZDooTlNTY3JpcHRDb21tYW5kRGVzY3JpcHRpb24gKiljb21tYW5kRGVz
Y3JpcHRpb247CgoKCi0gKFNFTClzZWxlY3RvckZvckNvbW1hbmQ6KE5TU2NyaXB0Q29tbWFuZERl
c2NyaXB0aW9uICopY29tbWFuZERlc2NyaXB0aW9uOwoKCgotIChOU1N0cmluZyAqKXR5cGVGb3JL
ZXk6KE5TU3RyaW5nICopa2V5OwoKCgotIChOU1NjcmlwdENsYXNzRGVzY3JpcHRpb24gKiljbGFz
c0Rlc2NyaXB0aW9uRm9yS2V5OihOU1N0cmluZyAqKWtleTsKCgoKLSAoRm91ckNoYXJDb2RlKWFw
cGxlRXZlbnRDb2RlRm9yS2V5OihOU1N0cmluZyAqKWtleTsKCgoKLSAoTlNTdHJpbmcgKilrZXlX
aXRoQXBwbGVFdmVudENvZGU6KEZvdXJDaGFyQ29kZSlhcHBsZUV2ZW50Q29kZTsKCgoKCgotIChO
U1N0cmluZyAqKWRlZmF1bHRTdWJjb250YWluZXJBdHRyaWJ1dGVLZXk7CgoKCi0gKEJPT0wpaXNM
b2NhdGlvblJlcXVpcmVkVG9DcmVhdGVGb3JLZXk6KE5TU3RyaW5nICopdG9NYW55UmVsYXRpb25z
aGlwS2V5OwoKCgoKCgoKLSAoQk9PTCloYXNQcm9wZXJ0eUZvcktleTooTlNTdHJpbmcgKilrZXk7
Ci0gKEJPT0wpaGFzT3JkZXJlZFRvTWFueVJlbGF0aW9uc2hpcEZvcktleTooTlNTdHJpbmcgKilr
ZXk7Ci0gKEJPT0wpaGFzUmVhZGFibGVQcm9wZXJ0eUZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0g
KEJPT0wpaGFzV3JpdGFibGVQcm9wZXJ0eUZvcktleTooTlNTdHJpbmcgKilrZXk7CgoKCkBlbmQK
CkBpbnRlcmZhY2UgTlNTY3JpcHRDbGFzc0Rlc2NyaXB0aW9uKE5TRGVwcmVjYXRlZCkKCgoKLSAo
Qk9PTClpc1JlYWRPbmx5S2V5OihOU1N0cmluZyAqKWtleSBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7CgpAZW5kCgpAaW50ZXJmYWNlIE5TT2JqZWN0KE5TU2NyaXB0Q2xhc3NEZXNjcmlwdGlv
bikKCgoKLSAoRm91ckNoYXJDb2RlKWNsYXNzQ29kZTsKCgoKLSAoTlNTdHJpbmcgKiljbGFzc05h
bWU7CgpAZW5kCiMgMTM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZy
YW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1NjcmlwdENvZXJjaW9uSGFu
ZGxlci5oIiAxIDMKCgoKCgoKQGludGVyZmFjZSBOU1NjcmlwdENvZXJjaW9uSGFuZGxlciA6IE5T
T2JqZWN0IHsKICAgIEBwcml2YXRlCiAgICBpZCBfY29lcmNlcnM7Cn0KCisgKE5TU2NyaXB0Q29l
cmNpb25IYW5kbGVyICopc2hhcmVkQ29lcmNpb25IYW5kbGVyOwoKLSAoaWQpY29lcmNlVmFsdWU6
KGlkKXZhbHVlIHRvQ2xhc3M6KENsYXNzKXRvQ2xhc3M7CgotICh2b2lkKXJlZ2lzdGVyQ29lcmNl
cjooaWQpY29lcmNlciBzZWxlY3RvcjooU0VMKXNlbGVjdG9yIHRvQ29udmVydEZyb21DbGFzczoo
Q2xhc3MpZnJvbUNsYXNzIHRvQ2xhc3M6KENsYXNzKXRvQ2xhc3M7CgoKQGVuZAojIDEzOCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9Gb3Vu
ZGF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvTlNTY3JpcHRDb21tYW5kLmgiIDEgMwojIDkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNTY3JpcHRDb21t
YW5kLmgiIDMKQGNsYXNzIE5TQXBwbGVFdmVudERlc2NyaXB0b3IsIE5TRGljdGlvbmFyeSwgTlNN
dXRhYmxlRGljdGlvbmFyeSwgTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIsIE5TU2NyaXB0Q29tbWFu
ZERlc2NyaXB0aW9uLCBOU1N0cmluZzsKCgplbnVtIHsKICAgIE5TTm9TY3JpcHRFcnJvciA9IDAs
CiAgICBOU1JlY2VpdmVyRXZhbHVhdGlvblNjcmlwdEVycm9yLAogICAgTlNLZXlTcGVjaWZpZXJF
dmFsdWF0aW9uU2NyaXB0RXJyb3IsCiAgICBOU0FyZ3VtZW50RXZhbHVhdGlvblNjcmlwdEVycm9y
LAogICAgTlNSZWNlaXZlcnNDYW50SGFuZGxlQ29tbWFuZFNjcmlwdEVycm9yLAogICAgTlNSZXF1
aXJlZEFyZ3VtZW50c01pc3NpbmdTY3JpcHRFcnJvciwKICAgIE5TQXJndW1lbnRzV3JvbmdTY3Jp
cHRFcnJvciwKICAgIE5TVW5rbm93bktleVNjcmlwdEVycm9yLAogICAgTlNJbnRlcm5hbFNjcmlw
dEVycm9yLAogICAgTlNPcGVyYXRpb25Ob3RTdXBwb3J0ZWRGb3JLZXlTY3JpcHRFcnJvciwKICAg
IE5TQ2Fubm90Q3JlYXRlU2NyaXB0Q29tbWFuZEVycm9yCn07CgpAaW50ZXJmYWNlIE5TU2NyaXB0
Q29tbWFuZCA6IE5TT2JqZWN0IDxOU0NvZGluZz4gewoKCiAgICBAcHJpdmF0ZQogICAgTlNTY3Jp
cHRDb21tYW5kRGVzY3JpcHRpb24gKl9jb21tYW5kRGVzY3JpcHRpb247CiAgICBpZCBfZGlyZWN0
UGFyYW1ldGVyOwogICAgTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKl9yZWNlaXZlcnNTcGVjaWZp
ZXI7CiAgICBpZCBfZXZhbHVhdGVkUmVjZWl2ZXJzOwogICAgTlNEaWN0aW9uYXJ5ICpfYXJndW1l
bnRzOwogICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2V2YWx1YXRlZEFyZ3VtZW50czsKICAgIHN0
cnVjdCB7CiAgICAgICAgdW5zaWduZWQgaW50IGhhc0V2YWx1YXRlZFJlY2VpdmVyczoxOwogICAg
ICAgIHVuc2lnbmVkIGludCBoYXNFdmFsdWF0ZWRBcmd1bWVudHM6MTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgUkVTRVJWRUQ6MzA7CiAgICB9IF9mbGFnczsKICAgIGlkIF9tb3JlVmFyczsKICAgIHZv
aWQgKl9yZXNlcnZlZDsKCn0KCi0gKGlkKWluaXRXaXRoQ29tbWFuZERlc2NyaXB0aW9uOihOU1Nj
cmlwdENvbW1hbmREZXNjcmlwdGlvbiAqKWNvbW1hbmREZWY7CgotIChOU1NjcmlwdENvbW1hbmRE
ZXNjcmlwdGlvbiAqKWNvbW1hbmREZXNjcmlwdGlvbjsKCgotICh2b2lkKXNldERpcmVjdFBhcmFt
ZXRlcjooaWQpZGlyZWN0UGFyYW1ldGVyOwotIChpZClkaXJlY3RQYXJhbWV0ZXI7CgoKLSAodm9p
ZClzZXRSZWNlaXZlcnNTcGVjaWZpZXI6KE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICopcmVjZWl2
ZXJzUmVmOwotIChOU1NjcmlwdE9iamVjdFNwZWNpZmllciAqKXJlY2VpdmVyc1NwZWNpZmllcjsK
CgoKLSAoaWQpZXZhbHVhdGVkUmVjZWl2ZXJzOwoKCi0gKHZvaWQpc2V0QXJndW1lbnRzOihOU0Rp
Y3Rpb25hcnkgKilhcmdzOwotIChOU0RpY3Rpb25hcnkgKilhcmd1bWVudHM7Ci0gKE5TRGljdGlv
bmFyeSAqKWV2YWx1YXRlZEFyZ3VtZW50czsKCgotIChCT09MKWlzV2VsbEZvcm1lZDsKCgoKCi0g
KGlkKXBlcmZvcm1EZWZhdWx0SW1wbGVtZW50YXRpb247CgoKCi0gKGlkKWV4ZWN1dGVDb21tYW5k
OwoKCi0gKHZvaWQpc2V0U2NyaXB0RXJyb3JOdW1iZXI6KGludCllcnJvck51bWJlcjsKCi0gKHZv
aWQpc2V0U2NyaXB0RXJyb3JPZmZlbmRpbmdPYmplY3REZXNjcmlwdG9yOihOU0FwcGxlRXZlbnRE
ZXNjcmlwdG9yICopZXJyb3JPZmZlbmRpbmdPYmplY3REZXNjcmlwdG9yOwotICh2b2lkKXNldFNj
cmlwdEVycm9yRXhwZWN0ZWRUeXBlRGVzY3JpcHRvcjooTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAq
KWVycm9yRXhwZWN0ZWRUeXBlRGVzY3JpcHRvcjsKCi0gKHZvaWQpc2V0U2NyaXB0RXJyb3JTdHJp
bmc6KE5TU3RyaW5nICopZXJyb3JTdHJpbmc7CgoKLSAoaW50KXNjcmlwdEVycm9yTnVtYmVyOwoK
LSAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAqKXNjcmlwdEVycm9yT2ZmZW5kaW5nT2JqZWN0RGVz
Y3JpcHRvcjsKLSAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAqKXNjcmlwdEVycm9yRXhwZWN0ZWRU
eXBlRGVzY3JpcHRvcjsKCi0gKE5TU3RyaW5nICopc2NyaXB0RXJyb3JTdHJpbmc7CgoKCgorIChO
U1NjcmlwdENvbW1hbmQgKiljdXJyZW50Q29tbWFuZDsKCgotIChOU0FwcGxlRXZlbnREZXNjcmlw
dG9yICopYXBwbGVFdmVudDsKCgotICh2b2lkKXN1c3BlbmRFeGVjdXRpb247CgoKCgoKLSAodm9p
ZClyZXN1bWVFeGVjdXRpb25XaXRoUmVzdWx0OihpZClyZXN1bHQ7CgoKCkBlbmQKIyAxMzkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91
bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL05TU2NyaXB0Q29tbWFuZERlc2NyaXB0aW9uLmgiIDEgMwojIDkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
TlNTY3JpcHRDb21tYW5kRGVzY3JpcHRpb24uaCIgMwpAY2xhc3MgTlNBcnJheSwgTlNEaWN0aW9u
YXJ5LCBOU1NjcmlwdENvbW1hbmQsIE5TU3RyaW5nOwoKQGludGVyZmFjZSBOU1NjcmlwdENvbW1h
bmREZXNjcmlwdGlvbiA6IE5TT2JqZWN0PE5TQ29kaW5nPiB7CiAgICBAcHJpdmF0ZQogICAgTlNT
dHJpbmcgKl9zdWl0ZU5hbWU7CiAgICBOU1N0cmluZyAqX3BsaXN0Q29tbWFuZE5hbWU7CiAgICBG
b3VyQ2hhckNvZGUgX2NsYXNzQXBwbGVFdmVudENvZGU7CiAgICBGb3VyQ2hhckNvZGUgX2lkQXBw
bGVFdmVudENvZGU7CiAgICBOU1N0cmluZyAqX29iamNDbGFzc05hbWU7CiAgICBOU09iamVjdCAq
X3Jlc3VsdFR5cGVOYW1lT3JEZXNjcmlwdGlvbjsKICAgIEZvdXJDaGFyQ29kZSBfcGxpc3RSZXN1
bHRUeXBlQXBwbGVFdmVudENvZGU7CiAgICBpZCBfbW9yZVZhcnM7Cn0KCgoKLSAoaWQpaW5pdFdp
dGhTdWl0ZU5hbWU6KE5TU3RyaW5nICopc3VpdGVOYW1lIGNvbW1hbmROYW1lOihOU1N0cmluZyAq
KWNvbW1hbmROYW1lIGRpY3Rpb25hcnk6KE5TRGljdGlvbmFyeSAqKWNvbW1hbmREZWNsYXJhdGlv
bjsKCgoKLSAoTlNTdHJpbmcgKilzdWl0ZU5hbWU7Ci0gKE5TU3RyaW5nICopY29tbWFuZE5hbWU7
CgoKCi0gKEZvdXJDaGFyQ29kZSlhcHBsZUV2ZW50Q2xhc3NDb2RlOwotIChGb3VyQ2hhckNvZGUp
YXBwbGVFdmVudENvZGU7CgoKCi0gKE5TU3RyaW5nICopY29tbWFuZENsYXNzTmFtZTsKCgoKLSAo
TlNTdHJpbmcgKilyZXR1cm5UeXBlOwoKCgotIChGb3VyQ2hhckNvZGUpYXBwbGVFdmVudENvZGVG
b3JSZXR1cm5UeXBlOwoKCgotIChOU0FycmF5ICopYXJndW1lbnROYW1lczsKCgoKLSAoTlNTdHJp
bmcgKil0eXBlRm9yQXJndW1lbnRXaXRoTmFtZTooTlNTdHJpbmcgKilhcmd1bWVudE5hbWU7CgoK
Ci0gKEZvdXJDaGFyQ29kZSlhcHBsZUV2ZW50Q29kZUZvckFyZ3VtZW50V2l0aE5hbWU6KE5TU3Ry
aW5nICopYXJndW1lbnROYW1lOwoKCgotIChCT09MKWlzT3B0aW9uYWxBcmd1bWVudFdpdGhOYW1l
OihOU1N0cmluZyAqKWFyZ3VtZW50TmFtZTsKCgoKLSAoTlNTY3JpcHRDb21tYW5kICopY3JlYXRl
Q29tbWFuZEluc3RhbmNlOwotIChOU1NjcmlwdENvbW1hbmQgKiljcmVhdGVDb21tYW5kSW5zdGFu
Y2VXaXRoWm9uZTooTlNab25lICopem9uZTsKCkBlbmQKIyAxNDAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFk
ZXJzL05TU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIiAzCkBjbGFzcyBOU0Nvbm5lY3Rpb247CgpAaW50ZXJmYWNlIE5TU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA6IE5TT2JqZWN0IHsKICAgIEBwcml2YXRlCiAgICBpZCBfdG9wTGV2ZWxP
YmplY3Q7CiAgICBpZCBfb2JqZWN0QmVpbmdUZXN0ZWQ7CiAgICBpZCBfcmFuZ2VDb250YWluZXJP
YmplY3Q7CiAgICBpZCBfbW9yZVZhcnM7Cn0KCisgKE5TU2NyaXB0RXhlY3V0aW9uQ29udGV4dCAq
KXNoYXJlZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CgotIChpZCl0b3BMZXZlbE9iamVjdDsKLSAo
dm9pZClzZXRUb3BMZXZlbE9iamVjdDooaWQpb2JqOwoKLSAoaWQpb2JqZWN0QmVpbmdUZXN0ZWQ7
Ci0gKHZvaWQpc2V0T2JqZWN0QmVpbmdUZXN0ZWQ6KGlkKW9iajsKCi0gKGlkKXJhbmdlQ29udGFp
bmVyT2JqZWN0OwotICh2b2lkKXNldFJhbmdlQ29udGFpbmVyT2JqZWN0OihpZClvYmo7CgpAZW5k
CiMgMTQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9I
ZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Rm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1NjcmlwdEtleVZhbHVlQ29kaW5nLmgiIDEg
MwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvTlNTY3JpcHRLZXlWYWx1ZUNvZGluZy5oIiAzCkBjbGFzcyBOU1N0cmluZzsKCmV4dGVy
biBOU1N0cmluZyAqTlNPcGVyYXRpb25Ob3RTdXBwb3J0ZWRGb3JLZXlFeGNlcHRpb247CgpAaW50
ZXJmYWNlIE5TT2JqZWN0KE5TU2NyaXB0S2V5VmFsdWVDb2RpbmcpCgoKCi0gKGlkKXZhbHVlQXRJ
bmRleDooTlNVSW50ZWdlcilpbmRleCBpblByb3BlcnR5V2l0aEtleTooTlNTdHJpbmcgKilrZXk7
CgoKCgoKLSAoaWQpdmFsdWVXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lIGluUHJvcGVydHlXaXRo
S2V5OihOU1N0cmluZyAqKWtleTsKCgoKLSAoaWQpdmFsdWVXaXRoVW5pcXVlSUQ6KGlkKXVuaXF1
ZUlEIGluUHJvcGVydHlXaXRoS2V5OihOU1N0cmluZyAqKWtleTsKCgoKCgotICh2b2lkKWluc2Vy
dFZhbHVlOihpZCl2YWx1ZSBhdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4IGluUHJvcGVydHlXaXRo
S2V5OihOU1N0cmluZyAqKWtleTsKLSAodm9pZClyZW1vdmVWYWx1ZUF0SW5kZXg6KE5TVUludGVn
ZXIpaW5kZXggZnJvbVByb3BlcnR5V2l0aEtleTooTlNTdHJpbmcgKilrZXk7Ci0gKHZvaWQpcmVw
bGFjZVZhbHVlQXRJbmRleDooTlNVSW50ZWdlcilpbmRleCBpblByb3BlcnR5V2l0aEtleTooTlNT
dHJpbmcgKilrZXkgd2l0aFZhbHVlOihpZCl2YWx1ZTsKCgoKCgotICh2b2lkKWluc2VydFZhbHVl
OihpZCl2YWx1ZSBpblByb3BlcnR5V2l0aEtleTooTlNTdHJpbmcgKilrZXk7CgoKCgoKLSAoaWQp
Y29lcmNlVmFsdWU6KGlkKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CgpAZW5kCiMgMTQy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJz
L0ZvdW5kYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1NjcmlwdE9iamVjdFNwZWNpZmllcnMuaCIgMSAzCiMg
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9OU1NjcmlwdE9iamVjdFNwZWNpZmllcnMuaCIgMwpAY2xhc3MgTlNBcnJheSwgTlNBcHBsZUV2
ZW50RGVzY3JpcHRvciwgTlNTY3JpcHRDbGFzc0Rlc2NyaXB0aW9uLCBOU1NjcmlwdFdob3NlVGVz
dCwgTlNTdHJpbmc7CgoKZW51bSB7CiAgICBOU05vU3BlY2lmaWVyRXJyb3IgPSAwLAogICAgTlNO
b1RvcExldmVsQ29udGFpbmVyc1NwZWNpZmllckVycm9yLAogICAgTlNDb250YWluZXJTcGVjaWZp
ZXJFcnJvciwKICAgIE5TVW5rbm93bktleVNwZWNpZmllckVycm9yLAogICAgTlNJbnZhbGlkSW5k
ZXhTcGVjaWZpZXJFcnJvciwKICAgIE5TSW50ZXJuYWxTcGVjaWZpZXJFcnJvciwKICAgIE5TT3Bl
cmF0aW9uTm90U3VwcG9ydGVkRm9yS2V5U3BlY2lmaWVyRXJyb3IKfTsKCgplbnVtIHsKICAgIE5T
UG9zaXRpb25BZnRlciwKICAgIE5TUG9zaXRpb25CZWZvcmUsCiAgICBOU1Bvc2l0aW9uQmVnaW5u
aW5nLAogICAgTlNQb3NpdGlvbkVuZCwKICAgIE5TUG9zaXRpb25SZXBsYWNlCn07CnR5cGVkZWYg
TlNVSW50ZWdlciBOU0luc2VydGlvblBvc2l0aW9uOwoKZW51bSB7CiAgICBOU1JlbGF0aXZlQWZ0
ZXIgPSAwLAogICAgTlNSZWxhdGl2ZUJlZm9yZQp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNSZWxh
dGl2ZVBvc2l0aW9uOwoKZW51bSB7CiAgICBOU0luZGV4U3ViZWxlbWVudCA9IDAsCiAgICBOU0V2
ZXJ5U3ViZWxlbWVudCA9IDEsCiAgICBOU01pZGRsZVN1YmVsZW1lbnQgPSAyLAogICAgTlNSYW5k
b21TdWJlbGVtZW50ID0gMywKICAgIE5TTm9TdWJlbGVtZW50ID0gNAp9Owp0eXBlZGVmIE5TVUlu
dGVnZXIgTlNXaG9zZVN1YmVsZW1lbnRJZGVudGlmaWVyOwoKCgoKCkBpbnRlcmZhY2UgTlNTY3Jp
cHRPYmplY3RTcGVjaWZpZXIgOiBOU09iamVjdCA8TlNDb2Rpbmc+IHsKICAgIEBwcml2YXRlCiAg
ICBOU1NjcmlwdE9iamVjdFNwZWNpZmllciAqX2NvbnRhaW5lcjsKICAgIE5TU2NyaXB0T2JqZWN0
U3BlY2lmaWVyICpfY2hpbGQ7CiAgICBOU1N0cmluZyAqX2tleTsKICAgIE5TU2NyaXB0Q2xhc3NE
ZXNjcmlwdGlvbiAqX2NvbnRhaW5lckNsYXNzRGVzY3JpcHRpb247CiAgICBCT09MIF9jb250YWlu
ZXJJc09iamVjdEJlaW5nVGVzdGVkOwogICAgQk9PTCBfY29udGFpbmVySXNSYW5nZUNvbnRhaW5l
ck9iamVjdDsKICAgIGNoYXIgX3BhZGRpbmdbMl07CiAgICBOU0FwcGxlRXZlbnREZXNjcmlwdG9y
ICpfZGVzY3JpcHRvcjsKICAgIE5TSW50ZWdlciBfZXJyb3I7Cn0KCgoKCgorIChOU1NjcmlwdE9i
amVjdFNwZWNpZmllciAqKW9iamVjdFNwZWNpZmllcldpdGhEZXNjcmlwdG9yOihOU0FwcGxlRXZl
bnREZXNjcmlwdG9yICopZGVzY3JpcHRvcjsKCgoKLSAoaWQpaW5pdFdpdGhDb250YWluZXJTcGVj
aWZpZXI6KE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICopY29udGFpbmVyIGtleTooTlNTdHJpbmcg
Kilwcm9wZXJ0eTsKCgotIChpZClpbml0V2l0aENvbnRhaW5lckNsYXNzRGVzY3JpcHRpb246KE5T
U2NyaXB0Q2xhc3NEZXNjcmlwdGlvbiAqKWNsYXNzRGVzYyBjb250YWluZXJTcGVjaWZpZXI6KE5T
U2NyaXB0T2JqZWN0U3BlY2lmaWVyICopY29udGFpbmVyIGtleTooTlNTdHJpbmcgKilwcm9wZXJ0
eTsKCgotIChOU1NjcmlwdE9iamVjdFNwZWNpZmllciAqKWNoaWxkU3BlY2lmaWVyOwotICh2b2lk
KXNldENoaWxkU3BlY2lmaWVyOihOU1NjcmlwdE9iamVjdFNwZWNpZmllciAqKWNoaWxkOwoKCi0g
KE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICopY29udGFpbmVyU3BlY2lmaWVyOwotICh2b2lkKXNl
dENvbnRhaW5lclNwZWNpZmllcjooTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKilzdWJSZWY7CgoK
LSAoQk9PTCljb250YWluZXJJc09iamVjdEJlaW5nVGVzdGVkOwotICh2b2lkKXNldENvbnRhaW5l
cklzT2JqZWN0QmVpbmdUZXN0ZWQ6KEJPT0wpZmxhZzsKCi0gKEJPT0wpY29udGFpbmVySXNSYW5n
ZUNvbnRhaW5lck9iamVjdDsKLSAodm9pZClzZXRDb250YWluZXJJc1JhbmdlQ29udGFpbmVyT2Jq
ZWN0OihCT09MKWZsYWc7CgoKCi0gKE5TU3RyaW5nICopa2V5OwotICh2b2lkKXNldEtleTooTlNT
dHJpbmcgKilrZXk7CgoKLSAoTlNTY3JpcHRDbGFzc0Rlc2NyaXB0aW9uICopY29udGFpbmVyQ2xh
c3NEZXNjcmlwdGlvbjsKLSAodm9pZClzZXRDb250YWluZXJDbGFzc0Rlc2NyaXB0aW9uOihOU1Nj
cmlwdENsYXNzRGVzY3JpcHRpb24gKiljbGFzc0Rlc2M7Ci0gKE5TU2NyaXB0Q2xhc3NEZXNjcmlw
dGlvbiAqKWtleUNsYXNzRGVzY3JpcHRpb247CgotIChOU0ludGVnZXIgKilpbmRpY2VzT2ZPYmpl
Y3RzQnlFdmFsdWF0aW5nV2l0aENvbnRhaW5lcjooaWQpY29udGFpbmVyIGNvdW50OihOU0ludGVn
ZXIgKiljb3VudDsKCgotIChpZClvYmplY3RzQnlFdmFsdWF0aW5nV2l0aENvbnRhaW5lcnM6KGlk
KWNvbnRhaW5lcnM7Ci0gKGlkKW9iamVjdHNCeUV2YWx1YXRpbmdTcGVjaWZpZXI7CgotIChOU0lu
dGVnZXIpZXZhbHVhdGlvbkVycm9yTnVtYmVyOwotICh2b2lkKXNldEV2YWx1YXRpb25FcnJvck51
bWJlcjooTlNJbnRlZ2VyKWVycm9yOwoKLSAoTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKilldmFs
dWF0aW9uRXJyb3JTcGVjaWZpZXI7CgoKCgoKLSAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAqKWRl
c2NyaXB0b3I7CgoKCkBlbmQKCgpAaW50ZXJmYWNlIE5TT2JqZWN0IChOU1NjcmlwdE9iamVjdFNw
ZWNpZmllcnMpCgotIChOU1NjcmlwdE9iamVjdFNwZWNpZmllciAqKW9iamVjdFNwZWNpZmllcjsK
CgotIChOU0FycmF5ICopaW5kaWNlc09mT2JqZWN0c0J5RXZhbHVhdGluZ09iamVjdFNwZWNpZmll
cjooTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKilzcGVjaWZpZXI7CgoKQGVuZAoKCgoKQGludGVy
ZmFjZSBOU0luZGV4U3BlY2lmaWVyIDogTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgewogICAgQHBy
aXZhdGUKICAgIE5TSW50ZWdlciBfaW5kZXg7Cn0KCi0gKGlkKWluaXRXaXRoQ29udGFpbmVyQ2xh
c3NEZXNjcmlwdGlvbjooTlNTY3JpcHRDbGFzc0Rlc2NyaXB0aW9uICopY2xhc3NEZXNjIGNvbnRh
aW5lclNwZWNpZmllcjooTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKiljb250YWluZXIga2V5OihO
U1N0cmluZyAqKXByb3BlcnR5IGluZGV4OihOU0ludGVnZXIpaW5kZXg7CgotIChOU0ludGVnZXIp
aW5kZXg7Ci0gKHZvaWQpc2V0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKCkBlbmQKCgoKCkBpbnRl
cmZhY2UgTlNNaWRkbGVTcGVjaWZpZXIgOiBOU1NjcmlwdE9iamVjdFNwZWNpZmllciB7fQoKQGVu
ZAoKCgoKCgpAaW50ZXJmYWNlIE5TTmFtZVNwZWNpZmllciA6IE5TU2NyaXB0T2JqZWN0U3BlY2lm
aWVyIHsKICAgIEBwcml2YXRlCiAgICBOU1N0cmluZyAqX25hbWU7Cn0KCi0gKGlkKWluaXRXaXRo
Q29udGFpbmVyQ2xhc3NEZXNjcmlwdGlvbjooTlNTY3JpcHRDbGFzc0Rlc2NyaXB0aW9uICopY2xh
c3NEZXNjIGNvbnRhaW5lclNwZWNpZmllcjooTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKiljb250
YWluZXIga2V5OihOU1N0cmluZyAqKXByb3BlcnR5IG5hbWU6KE5TU3RyaW5nICopbmFtZTsKCi0g
KE5TU3RyaW5nICopbmFtZTsKLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWU7CgpAZW5k
CgoKCgpAaW50ZXJmYWNlIE5TUG9zaXRpb25hbFNwZWNpZmllciA6IE5TT2JqZWN0IHsKICAgIEBw
cml2YXRlCiAgICBOU1NjcmlwdE9iamVjdFNwZWNpZmllciAqX3NwZWNpZmllcjsKICAgIE5TSW5z
ZXJ0aW9uUG9zaXRpb24gX3VuYWRqdXN0ZWRQb3NpdGlvbjsKICAgIE5TU2NyaXB0Q2xhc3NEZXNj
cmlwdGlvbiAqX2luc2VydGlvbkNsYXNzRGVzY3JpcHRpb247CiAgICBpZCBfbW9yZVZhcnM7CiAg
ICB2b2lkICpfcmVzZXJ2ZWQwOwp9CgoKLSAoaWQpaW5pdFdpdGhQb3NpdGlvbjooTlNJbnNlcnRp
b25Qb3NpdGlvbilwb3NpdGlvbiBvYmplY3RTcGVjaWZpZXI6KE5TU2NyaXB0T2JqZWN0U3BlY2lm
aWVyICopc3BlY2lmaWVyOwoKCgoKLSAoTlNJbnNlcnRpb25Qb3NpdGlvbilwb3NpdGlvbjsKLSAo
TlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKilvYmplY3RTcGVjaWZpZXI7CgoKCgoKCi0gKHZvaWQp
c2V0SW5zZXJ0aW9uQ2xhc3NEZXNjcmlwdGlvbjooTlNTY3JpcHRDbGFzc0Rlc2NyaXB0aW9uICop
Y2xhc3NEZXNjcmlwdGlvbjsKCgoKCi0gKHZvaWQpZXZhbHVhdGU7CgoKLSAoaWQpaW5zZXJ0aW9u
Q29udGFpbmVyOwoKCi0gKE5TU3RyaW5nICopaW5zZXJ0aW9uS2V5OwoKCi0gKE5TSW50ZWdlcilp
bnNlcnRpb25JbmRleDsKCgoKCi0gKEJPT0wpaW5zZXJ0aW9uUmVwbGFjZXM7CgoKCkBlbmQKCgoK
CkBpbnRlcmZhY2UgTlNQcm9wZXJ0eVNwZWNpZmllciA6IE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVy
IHt9CgpAZW5kCgoKCgpAaW50ZXJmYWNlIE5TUmFuZG9tU3BlY2lmaWVyIDogTlNTY3JpcHRPYmpl
Y3RTcGVjaWZpZXIge30KCkBlbmQKCgoKCkBpbnRlcmZhY2UgTlNSYW5nZVNwZWNpZmllciA6IE5T
U2NyaXB0T2JqZWN0U3BlY2lmaWVyIHsKICAgIEBwcml2YXRlCiAgICBOU1NjcmlwdE9iamVjdFNw
ZWNpZmllciAqX3N0YXJ0U3BlYzsKICAgIE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICpfZW5kU3Bl
YzsKfQoKLSAoaWQpaW5pdFdpdGhDb250YWluZXJDbGFzc0Rlc2NyaXB0aW9uOihOU1NjcmlwdENs
YXNzRGVzY3JpcHRpb24gKiljbGFzc0Rlc2MgY29udGFpbmVyU3BlY2lmaWVyOihOU1NjcmlwdE9i
amVjdFNwZWNpZmllciAqKWNvbnRhaW5lciBrZXk6KE5TU3RyaW5nICopcHJvcGVydHkgc3RhcnRT
cGVjaWZpZXI6KE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICopc3RhcnRTcGVjIGVuZFNwZWNpZmll
cjooTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKillbmRTcGVjOwoKLSAoTlNTY3JpcHRPYmplY3RT
cGVjaWZpZXIgKilzdGFydFNwZWNpZmllcjsKLSAodm9pZClzZXRTdGFydFNwZWNpZmllcjooTlNT
Y3JpcHRPYmplY3RTcGVjaWZpZXIgKilzdGFydFNwZWM7CgotIChOU1NjcmlwdE9iamVjdFNwZWNp
ZmllciAqKWVuZFNwZWNpZmllcjsKLSAodm9pZClzZXRFbmRTcGVjaWZpZXI6KE5TU2NyaXB0T2Jq
ZWN0U3BlY2lmaWVyICopZW5kU3BlYzsKCkBlbmQKCgpAaW50ZXJmYWNlIE5TUmVsYXRpdmVTcGVj
aWZpZXIgOiBOU1NjcmlwdE9iamVjdFNwZWNpZmllciB7CiAgICBAcHJpdmF0ZQogICAgTlNSZWxh
dGl2ZVBvc2l0aW9uIF9yZWxhdGl2ZVBvc2l0aW9uOwogICAgTlNTY3JpcHRPYmplY3RTcGVjaWZp
ZXIgKl9iYXNlU3BlY2lmaWVyOwp9CgotIChpZClpbml0V2l0aENvbnRhaW5lckNsYXNzRGVzY3Jp
cHRpb246KE5TU2NyaXB0Q2xhc3NEZXNjcmlwdGlvbiAqKWNsYXNzRGVzYyBjb250YWluZXJTcGVj
aWZpZXI6KE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICopY29udGFpbmVyIGtleTooTlNTdHJpbmcg
Kilwcm9wZXJ0eSByZWxhdGl2ZVBvc2l0aW9uOihOU1JlbGF0aXZlUG9zaXRpb24pcmVsUG9zIGJh
c2VTcGVjaWZpZXI6KE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICopYmFzZVNwZWNpZmllcjsKCi0g
KE5TUmVsYXRpdmVQb3NpdGlvbilyZWxhdGl2ZVBvc2l0aW9uOwotICh2b2lkKXNldFJlbGF0aXZl
UG9zaXRpb246KE5TUmVsYXRpdmVQb3NpdGlvbilyZWxQb3M7CgotIChOU1NjcmlwdE9iamVjdFNw
ZWNpZmllciAqKWJhc2VTcGVjaWZpZXI7Ci0gKHZvaWQpc2V0QmFzZVNwZWNpZmllcjooTlNTY3Jp
cHRPYmplY3RTcGVjaWZpZXIgKiliYXNlU3BlY2lmaWVyOwoKCkBlbmQKCgoKCgoKQGludGVyZmFj
ZSBOU1VuaXF1ZUlEU3BlY2lmaWVyIDogTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgewogICAgQHBy
aXZhdGUKICAgIGlkIF91bmlxdWVJRDsKfQoKLSAoaWQpaW5pdFdpdGhDb250YWluZXJDbGFzc0Rl
c2NyaXB0aW9uOihOU1NjcmlwdENsYXNzRGVzY3JpcHRpb24gKiljbGFzc0Rlc2MgY29udGFpbmVy
U3BlY2lmaWVyOihOU1NjcmlwdE9iamVjdFNwZWNpZmllciAqKWNvbnRhaW5lciBrZXk6KE5TU3Ry
aW5nICopcHJvcGVydHkgdW5pcXVlSUQ6KGlkKXVuaXF1ZUlEOwoKLSAoaWQpdW5pcXVlSUQ7Ci0g
KHZvaWQpc2V0VW5pcXVlSUQ6KGlkKXVuaXF1ZUlEOwoKQGVuZAojIDMwNCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1NjcmlwdE9iamVj
dFNwZWNpZmllcnMuaCIgMwpAaW50ZXJmYWNlIE5TV2hvc2VTcGVjaWZpZXIgOiBOU1NjcmlwdE9i
amVjdFNwZWNpZmllciB7CiAgICBAcHJpdmF0ZQogICAgTlNTY3JpcHRXaG9zZVRlc3QgKl90ZXN0
OwogICAgTlNXaG9zZVN1YmVsZW1lbnRJZGVudGlmaWVyIF9zdGFydFN1YmVsZW1lbnRJZGVudGlm
aWVyOwogICAgTlNJbnRlZ2VyIF9zdGFydFN1YmVsZW1lbnRJbmRleDsKICAgIE5TV2hvc2VTdWJl
bGVtZW50SWRlbnRpZmllciBfZW5kU3ViZWxlbWVudElkZW50aWZpZXI7CiAgICBOU0ludGVnZXIg
X2VuZFN1YmVsZW1lbnRJbmRleDsKfQoKLSAoaWQpaW5pdFdpdGhDb250YWluZXJDbGFzc0Rlc2Ny
aXB0aW9uOihOU1NjcmlwdENsYXNzRGVzY3JpcHRpb24gKiljbGFzc0Rlc2MgY29udGFpbmVyU3Bl
Y2lmaWVyOihOU1NjcmlwdE9iamVjdFNwZWNpZmllciAqKWNvbnRhaW5lciBrZXk6KE5TU3RyaW5n
ICopcHJvcGVydHkgdGVzdDooTlNTY3JpcHRXaG9zZVRlc3QgKil0ZXN0OwoKLSAoTlNTY3JpcHRX
aG9zZVRlc3QgKil0ZXN0OwotICh2b2lkKXNldFRlc3Q6KE5TU2NyaXB0V2hvc2VUZXN0ICopdGVz
dDsKCgotIChOU1dob3NlU3ViZWxlbWVudElkZW50aWZpZXIpc3RhcnRTdWJlbGVtZW50SWRlbnRp
ZmllcjsKLSAodm9pZClzZXRTdGFydFN1YmVsZW1lbnRJZGVudGlmaWVyOihOU1dob3NlU3ViZWxl
bWVudElkZW50aWZpZXIpc3ViZWxlbWVudDsKCi0gKE5TSW50ZWdlcilzdGFydFN1YmVsZW1lbnRJ
bmRleDsKLSAodm9pZClzZXRTdGFydFN1YmVsZW1lbnRJbmRleDooTlNJbnRlZ2VyKWluZGV4OwoK
Ci0gKE5TV2hvc2VTdWJlbGVtZW50SWRlbnRpZmllcillbmRTdWJlbGVtZW50SWRlbnRpZmllcjsK
LSAodm9pZClzZXRFbmRTdWJlbGVtZW50SWRlbnRpZmllcjooTlNXaG9zZVN1YmVsZW1lbnRJZGVu
dGlmaWVyKXN1YmVsZW1lbnQ7CgotIChOU0ludGVnZXIpZW5kU3ViZWxlbWVudEluZGV4OwotICh2
b2lkKXNldEVuZFN1YmVsZW1lbnRJbmRleDooTlNJbnRlZ2VyKWluZGV4OwoKCkBlbmQKIyAxNDMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
Rm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TU2NyaXB0U3RhbmRhcmRTdWl0ZUNvbW1hbmRzLmgiIDEg
MwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvTlNTY3JpcHRTdGFuZGFyZFN1aXRlQ29tbWFuZHMuaCIgMwpAY2xhc3MgTlNEaWN0aW9u
YXJ5OwpAY2xhc3MgTlNTY3JpcHRPYmplY3RTcGVjaWZpZXI7CkBjbGFzcyBOU1NjcmlwdENsYXNz
RGVzY3JpcHRpb247CgoKZW51bSB7CiAgICBOU1NhdmVPcHRpb25zWWVzID0gMCwKICAgIE5TU2F2
ZU9wdGlvbnNObywKICAgIE5TU2F2ZU9wdGlvbnNBc2sKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5T
U2F2ZU9wdGlvbnM7CgpAaW50ZXJmYWNlIE5TQ2xvbmVDb21tYW5kIDogTlNTY3JpcHRDb21tYW5k
IHsKICAgIEBwcml2YXRlCiAgICBOU1NjcmlwdE9iamVjdFNwZWNpZmllciAqX2tleVNwZWNpZmll
cjsKfQoKLSAodm9pZClzZXRSZWNlaXZlcnNTcGVjaWZpZXI6KE5TU2NyaXB0T2JqZWN0U3BlY2lm
aWVyICopcmVjZWl2ZXJzUmVmOwoKCi0gKE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICopa2V5U3Bl
Y2lmaWVyOwoKQGVuZAoKCkBpbnRlcmZhY2UgTlNDbG9zZUNvbW1hbmQgOiBOU1NjcmlwdENvbW1h
bmQge30KCi0gKE5TU2F2ZU9wdGlvbnMpc2F2ZU9wdGlvbnM7CgoKQGVuZAoKCkBpbnRlcmZhY2Ug
TlNDb3VudENvbW1hbmQgOiBOU1NjcmlwdENvbW1hbmQge30KCkBlbmQKCgpAaW50ZXJmYWNlIE5T
Q3JlYXRlQ29tbWFuZCA6IE5TU2NyaXB0Q29tbWFuZCB7CiAgICBAcHJpdmF0ZQogICAgaWQgX21v
cmVWYXJzMjsKfQoKLSAoTlNTY3JpcHRDbGFzc0Rlc2NyaXB0aW9uICopY3JlYXRlQ2xhc3NEZXNj
cmlwdGlvbjsKCgotIChOU0RpY3Rpb25hcnkgKilyZXNvbHZlZEtleURpY3Rpb25hcnk7CgoKQGVu
ZAoKCkBpbnRlcmZhY2UgTlNEZWxldGVDb21tYW5kIDogTlNTY3JpcHRDb21tYW5kIHsKICAgIEBw
cml2YXRlCiAgICBOU1NjcmlwdE9iamVjdFNwZWNpZmllciAqX2tleVNwZWNpZmllcjsKfQoKLSAo
dm9pZClzZXRSZWNlaXZlcnNTcGVjaWZpZXI6KE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICopcmVj
ZWl2ZXJzUmVmOwoKCi0gKE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICopa2V5U3BlY2lmaWVyOwoK
QGVuZAoKCkBpbnRlcmZhY2UgTlNFeGlzdHNDb21tYW5kIDogTlNTY3JpcHRDb21tYW5kIHt9CgpA
ZW5kCgoKQGludGVyZmFjZSBOU0dldENvbW1hbmQgOiBOU1NjcmlwdENvbW1hbmQge30KCkBlbmQK
CgpAaW50ZXJmYWNlIE5TTW92ZUNvbW1hbmQgOiBOU1NjcmlwdENvbW1hbmQgewogICAgQHByaXZh
dGUKICAgIE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICpfa2V5U3BlY2lmaWVyOwp9CgotICh2b2lk
KXNldFJlY2VpdmVyc1NwZWNpZmllcjooTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKilyZWNlaXZl
cnNSZWY7CgoKLSAoTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKilrZXlTcGVjaWZpZXI7CgpAZW5k
CgoKQGludGVyZmFjZSBOU1F1aXRDb21tYW5kIDogTlNTY3JpcHRDb21tYW5kIHt9CgotIChOU1Nh
dmVPcHRpb25zKXNhdmVPcHRpb25zOwoKCkBlbmQKCgpAaW50ZXJmYWNlIE5TU2V0Q29tbWFuZCA6
IE5TU2NyaXB0Q29tbWFuZCB7CiAgICBAcHJpdmF0ZQogICAgTlNTY3JpcHRPYmplY3RTcGVjaWZp
ZXIgKl9rZXlTcGVjaWZpZXI7Cn0KCi0gKHZvaWQpc2V0UmVjZWl2ZXJzU3BlY2lmaWVyOihOU1Nj
cmlwdE9iamVjdFNwZWNpZmllciAqKXJlY2VpdmVyc1JlZjsKCgotIChOU1NjcmlwdE9iamVjdFNw
ZWNpZmllciAqKWtleVNwZWNpZmllcjsKCkBlbmQKIyAxNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJz
L05TU2NyaXB0U3VpdGVSZWdpc3RyeS5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TU2NyaXB0U3VpdGVSZWdpc3RyeS5o
IiAzCkBjbGFzcyBOU0FycmF5LCBOU0J1bmRsZSwgTlNEYXRhLCBOU0RpY3Rpb25hcnksIE5TTXV0
YWJsZUFycmF5LCBOU011dGFibGVEaWN0aW9uYXJ5LCBOU011dGFibGVTZXQsIE5TU2NyaXB0Q2xh
c3NEZXNjcmlwdGlvbiwgTlNTY3JpcHRDb21tYW5kRGVzY3JpcHRpb247CgpAaW50ZXJmYWNlIE5T
U2NyaXB0U3VpdGVSZWdpc3RyeSA6IE5TT2JqZWN0IHsKICAgIEBwcml2YXRlCiAgICBCT09MIF9p
c0xvYWRpbmdTREVGRmlsZXM7CiAgICBjaGFyIF9yZXNlcnZlZDFbM107CiAgICBOU011dGFibGVT
ZXQgKl9zZWVuQnVuZGxlczsKICAgIE5TTXV0YWJsZUFycmF5ICpfc3VpdGVEZXNjcmlwdGlvbnNC
ZWluZ0NvbGxlY3RlZDsKICAgIE5TU2NyaXB0Q2xhc3NEZXNjcmlwdGlvbiAqX2NsYXNzRGVzY3Jp
cHRpb25OZWVkaW5nUmVnaXN0cmF0aW9uOwogICAgTlNNdXRhYmxlQXJyYXkgKl9zdWl0ZURlc2Ny
aXB0aW9uczsKICAgIE5TU2NyaXB0Q29tbWFuZERlc2NyaXB0aW9uICpfY29tbWFuZERlc2NyaXB0
aW9uTmVlZGluZ1JlZ2lzdHJhdGlvbjsKICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9jYWNoZWRD
bGFzc0Rlc2NyaXB0aW9uc0J5QXBwbGVFdmVudENvZGU7CiAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICpfY2FjaGVkQ29tbWFuZERlc2NyaXB0aW9uc0J5QXBwbGVFdmVudENvZGVzOwogICAgTlNEaWN0
aW9uYXJ5ICpfY2FjaGVkU3VpdGVEZXNjcmlwdGlvbnNCeU5hbWU7CiAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICpfY29tcGxleFR5cGVEZXNjcmlwdGlvbnNCeU5hbWU7CiAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICpfbGlzdFR5cGVEZXNjcmlwdGlvbnNCeU5hbWU7CiAgICB1bnNpZ25lZCBpbnQgX25l
eHRDb21wbGV4VHlwZUFwcGxlRXZlbnRDb2RlOwogICAgdm9pZCAqX3Jlc2VydmVkMls0XTsKfQoK
CgorIChOU1NjcmlwdFN1aXRlUmVnaXN0cnkgKilzaGFyZWRTY3JpcHRTdWl0ZVJlZ2lzdHJ5Owor
ICh2b2lkKXNldFNoYXJlZFNjcmlwdFN1aXRlUmVnaXN0cnk6KE5TU2NyaXB0U3VpdGVSZWdpc3Ry
eSAqKXJlZ2lzdHJ5OwoKCgotICh2b2lkKWxvYWRTdWl0ZXNGcm9tQnVuZGxlOihOU0J1bmRsZSAq
KWJ1bmRsZTsKCgoKLSAodm9pZClsb2FkU3VpdGVXaXRoRGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5
ICopc3VpdGVEZWNsYXJhdGlvbiBmcm9tQnVuZGxlOihOU0J1bmRsZSAqKWJ1bmRsZTsKCgoKLSAo
dm9pZClyZWdpc3RlckNsYXNzRGVzY3JpcHRpb246KE5TU2NyaXB0Q2xhc3NEZXNjcmlwdGlvbiAq
KWNsYXNzRGVzY3JpcHRpb247Ci0gKHZvaWQpcmVnaXN0ZXJDb21tYW5kRGVzY3JpcHRpb246KE5T
U2NyaXB0Q29tbWFuZERlc2NyaXB0aW9uICopY29tbWFuZERlc2NyaXB0aW9uOwoKCgotIChOU0Fy
cmF5ICopc3VpdGVOYW1lczsKCgoKLSAoRm91ckNoYXJDb2RlKWFwcGxlRXZlbnRDb2RlRm9yU3Vp
dGU6KE5TU3RyaW5nICopc3VpdGVOYW1lOwoKCgotIChOU0J1bmRsZSAqKWJ1bmRsZUZvclN1aXRl
OihOU1N0cmluZyAqKXN1aXRlTmFtZTsKCgoKLSAoTlNEaWN0aW9uYXJ5ICopY2xhc3NEZXNjcmlw
dGlvbnNJblN1aXRlOihOU1N0cmluZyAqKXN1aXRlTmFtZTsKLSAoTlNEaWN0aW9uYXJ5ICopY29t
bWFuZERlc2NyaXB0aW9uc0luU3VpdGU6KE5TU3RyaW5nICopc3VpdGVOYW1lOwoKCgotIChOU1N0
cmluZyAqKXN1aXRlRm9yQXBwbGVFdmVudENvZGU6KEZvdXJDaGFyQ29kZSlhcHBsZUV2ZW50Q29k
ZTsKCgoKLSAoTlNTY3JpcHRDbGFzc0Rlc2NyaXB0aW9uICopY2xhc3NEZXNjcmlwdGlvbldpdGhB
cHBsZUV2ZW50Q29kZTooRm91ckNoYXJDb2RlKWFwcGxlRXZlbnRDb2RlOwoKCgotIChOU1Njcmlw
dENvbW1hbmREZXNjcmlwdGlvbiAqKWNvbW1hbmREZXNjcmlwdGlvbldpdGhBcHBsZUV2ZW50Q2xh
c3M6KEZvdXJDaGFyQ29kZSlhcHBsZUV2ZW50Q2xhc3NDb2RlIGFuZEFwcGxlRXZlbnRDb2RlOihG
b3VyQ2hhckNvZGUpYXBwbGVFdmVudElEQ29kZTsKCgoKLSAoTlNEYXRhICopYWV0ZVJlc291cmNl
OihOU1N0cmluZyAqKWxhbmd1YWdlTmFtZTsKCkBlbmQKIyAxNDUgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlvbi5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFk
ZXJzL05TU2NyaXB0V2hvc2VUZXN0cy5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TU2NyaXB0V2hvc2VUZXN0cy5oIiAz
CkBjbGFzcyBOU0FycmF5OwpAY2xhc3MgTlNTY3JpcHRPYmplY3RTcGVjaWZpZXI7CkBjbGFzcyBO
U1N0cmluZzsKCgplbnVtIHsKICAgIE5TRXF1YWxUb0NvbXBhcmlzb24gPSAwLAogICAgTlNMZXNz
VGhhbk9yRXF1YWxUb0NvbXBhcmlzb24sCiAgICBOU0xlc3NUaGFuQ29tcGFyaXNvbiwKICAgIE5T
R3JlYXRlclRoYW5PckVxdWFsVG9Db21wYXJpc29uLAogICAgTlNHcmVhdGVyVGhhbkNvbXBhcmlz
b24sCiAgICBOU0JlZ2luc1dpdGhDb21wYXJpc29uLAogICAgTlNFbmRzV2l0aENvbXBhcmlzb24s
CiAgICBOU0NvbnRhaW5zQ29tcGFyaXNvbgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNUZXN0Q29t
cGFyaXNvbk9wZXJhdGlvbjsKCkBpbnRlcmZhY2UgTlNTY3JpcHRXaG9zZVRlc3QgOiBOU09iamVj
dCA8TlNDb2Rpbmc+IHt9CgotIChCT09MKWlzVHJ1ZTsKCkBlbmQKCgpAaW50ZXJmYWNlIE5TTG9n
aWNhbFRlc3QgOiBOU1NjcmlwdFdob3NlVGVzdCB7CiAgICBAcHJpdmF0ZQogICAgaW50IF9vcGVy
YXRvcjsKICAgIGlkIF9zdWJUZXN0czsKfQoKLSAoaWQpaW5pdEFuZFRlc3RXaXRoVGVzdHM6KE5T
QXJyYXkgKilzdWJUZXN0czsKLSAoaWQpaW5pdE9yVGVzdFdpdGhUZXN0czooTlNBcnJheSAqKXN1
YlRlc3RzOwotIChpZClpbml0Tm90VGVzdFdpdGhUZXN0OihOU1NjcmlwdFdob3NlVGVzdCAqKXN1
YlRlc3Q7CgpAZW5kCgoKCgoKQGludGVyZmFjZSBOU1NwZWNpZmllclRlc3QgOiBOU1NjcmlwdFdo
b3NlVGVzdCB7CiAgICBAcHJpdmF0ZQogICAgTlNUZXN0Q29tcGFyaXNvbk9wZXJhdGlvbiBfY29t
cGFyaXNvbk9wZXJhdG9yOwogICAgTlNTY3JpcHRPYmplY3RTcGVjaWZpZXIgKl9vYmplY3QxOwog
ICAgaWQgX29iamVjdDI7Cn0KCi0gKGlkKWluaXRXaXRoT2JqZWN0U3BlY2lmaWVyOihOU1Njcmlw
dE9iamVjdFNwZWNpZmllciAqKW9iajEgY29tcGFyaXNvbk9wZXJhdG9yOihOU1Rlc3RDb21wYXJp
c29uT3BlcmF0aW9uKWNvbXBPcCB0ZXN0T2JqZWN0OihpZClvYmoyOwoKQGVuZAoKCkBpbnRlcmZh
Y2UgTlNPYmplY3QgKE5TQ29tcGFyaXNvbk1ldGhvZHMpCi0gKEJPT0wpaXNFcXVhbFRvOihpZClv
YmplY3Q7CgotIChCT09MKWlzTGVzc1RoYW5PckVxdWFsVG86KGlkKW9iamVjdDsKCi0gKEJPT0wp
aXNMZXNzVGhhbjooaWQpb2JqZWN0OwoKLSAoQk9PTClpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvOihp
ZClvYmplY3Q7CgotIChCT09MKWlzR3JlYXRlclRoYW46KGlkKW9iamVjdDsKCi0gKEJPT0wpaXNO
b3RFcXVhbFRvOihpZClvYmplY3Q7CgotIChCT09MKWRvZXNDb250YWluOihpZClvYmplY3Q7CgoK
LSAoQk9PTClpc0xpa2U6KE5TU3RyaW5nICopb2JqZWN0OwoKCgotIChCT09MKWlzQ2FzZUluc2Vu
c2l0aXZlTGlrZTooTlNTdHJpbmcgKilvYmplY3Q7CkBlbmQKCgpAaW50ZXJmYWNlIE5TT2JqZWN0
IChOU1NjcmlwdGluZ0NvbXBhcmlzb25NZXRob2RzKQoKCgoKCgotIChCT09MKXNjcmlwdGluZ0lz
RXF1YWxUbzooaWQpb2JqZWN0OwotIChCT09MKXNjcmlwdGluZ0lzTGVzc1RoYW5PckVxdWFsVG86
KGlkKW9iamVjdDsKLSAoQk9PTClzY3JpcHRpbmdJc0xlc3NUaGFuOihpZClvYmplY3Q7Ci0gKEJP
T0wpc2NyaXB0aW5nSXNHcmVhdGVyVGhhbk9yRXF1YWxUbzooaWQpb2JqZWN0OwotIChCT09MKXNj
cmlwdGluZ0lzR3JlYXRlclRoYW46KGlkKW9iamVjdDsKCi0gKEJPT0wpc2NyaXB0aW5nQmVnaW5z
V2l0aDooaWQpb2JqZWN0OwotIChCT09MKXNjcmlwdGluZ0VuZHNXaXRoOihpZClvYmplY3Q7Ci0g
KEJPT0wpc2NyaXB0aW5nQ29udGFpbnM6KGlkKW9iamVjdDsKCkBlbmQKIyAxNDYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvRm91bmRhdGlv
bi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yay9IZWFkZXJzL05TU3BlbGxTZXJ2ZXIuaCIgMSAzCgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1RleHRDaGVja2lu
Z1Jlc3VsdC5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzL05TVGV4dENoZWNraW5nUmVzdWx0LmgiIDMKQGNsYXNzIE5TU3Ry
aW5nLCBOU0FycmF5LCBOU0RpY3Rpb25hcnksIE5TRGF0ZSwgTlNUaW1lWm9uZSwgTlNPcnRob2dy
YXBoeSwgTlNVUkw7CgoKCmVudW0gewogICAgTlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkg
PSAxVUxMIDw8IDAsCiAgICBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyA9IDFVTEwgPDwgMSwK
ICAgIE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgPSAxVUxMIDw8IDIsCiAgICBOU1RleHRDaGVj
a2luZ1R5cGVEYXRlID0gMVVMTCA8PCAzLAogICAgTlNUZXh0Q2hlY2tpbmdUeXBlQWRkcmVzcyA9
IDFVTEwgPDwgNCwKICAgIE5TVGV4dENoZWNraW5nVHlwZUxpbmsgPSAxVUxMIDw8IDUsCiAgICBO
U1RleHRDaGVja2luZ1R5cGVRdW90ZSA9IDFVTEwgPDwgNiwKICAgIE5TVGV4dENoZWNraW5nVHlw
ZURhc2ggPSAxVUxMIDw8IDcsCiAgICBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCA9IDFV
TEwgPDwgOCwKICAgIE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gPSAxVUxMIDw8IDkKfTsK
dHlwZWRlZiB1aW50NjRfdCBOU1RleHRDaGVja2luZ1R5cGU7CgplbnVtIHsKICAgIE5TVGV4dENo
ZWNraW5nQWxsU3lzdGVtVHlwZXMgPSAweGZmZmZmZmZmVUxMLAogICAgTlNUZXh0Q2hlY2tpbmdB
bGxDdXN0b21UeXBlcyA9IDB4ZmZmZmZmZmZVTEwgPDwgMzIsCiAgICBOU1RleHRDaGVja2luZ0Fs
bFR5cGVzID0gKE5TVGV4dENoZWNraW5nQWxsU3lzdGVtVHlwZXMgfCBOU1RleHRDaGVja2luZ0Fs
bEN1c3RvbVR5cGVzKQp9Owp0eXBlZGVmIHVpbnQ2NF90IE5TVGV4dENoZWNraW5nVHlwZXM7CgoK
CkBpbnRlcmZhY2UgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgOiBOU09iamVjdCA8TlNDb3B5aW5nLCBO
U0NvZGluZz4KCgpAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1RleHRDaGVja2luZ1R5cGUgcmVzdWx0
VHlwZTsKQHByb3BlcnR5IChyZWFkb25seSkgTlNSYW5nZSByYW5nZTsKCkBlbmQKCkBpbnRlcmZh
Y2UgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKE5TVGV4dENoZWNraW5nUmVzdWx0T3B0aW9uYWwpCgoK
QHByb3BlcnR5IChyZWFkb25seSkgTlNPcnRob2dyYXBoeSAqb3J0aG9ncmFwaHk7CkBwcm9wZXJ0
eSAocmVhZG9ubHkpIE5TQXJyYXkgKmdyYW1tYXJEZXRhaWxzOwpAcHJvcGVydHkgKHJlYWRvbmx5
KSBOU0RhdGUgKmRhdGU7CkBwcm9wZXJ0eSAocmVhZG9ubHkpIE5TVGltZVpvbmUgKnRpbWVab25l
OwpAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1RpbWVJbnRlcnZhbCBkdXJhdGlvbjsKQHByb3BlcnR5
IChyZWFkb25seSkgTlNEaWN0aW9uYXJ5ICphZGRyZXNzQ29tcG9uZW50czsKQHByb3BlcnR5IChy
ZWFkb25seSkgTlNVUkwgKlVSTDsKQHByb3BlcnR5IChyZWFkb25seSkgTlNTdHJpbmcgKnJlcGxh
Y2VtZW50U3RyaW5nOwoKQGVuZAoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1RleHRD
aGVja2luZ05hbWVLZXk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1RleHRDaGVja2lu
Z0pvYlRpdGxlS2V5OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNUZXh0Q2hlY2tpbmdP
cmdhbml6YXRpb25LZXk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1RleHRDaGVja2lu
Z1N0cmVldEtleTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVGV4dENoZWNraW5nQ2l0
eUtleTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVGV4dENoZWNraW5nU3RhdGVLZXk7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1RleHRDaGVja2luZ1pJUEtleTsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVGV4dENoZWNraW5nQ291bnRyeUtleTsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqIGNvbnN0IE5TVGV4dENoZWNraW5nUGhvbmVLZXk7CgoKQGludGVyZmFjZSBO
U1RleHRDaGVja2luZ1Jlc3VsdCAoTlNUZXh0Q2hlY2tpbmdSZXN1bHRDcmVhdGlvbikKCgorIChO
U1RleHRDaGVja2luZ1Jlc3VsdCAqKW9ydGhvZ3JhcGh5Q2hlY2tpbmdSZXN1bHRXaXRoUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2Ugb3J0aG9ncmFwaHk6KE5TT3J0aG9ncmFwaHkgKilvcnRob2dyYXBoeTsK
KyAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKilzcGVsbENoZWNraW5nUmVzdWx0V2l0aFJhbmdlOihO
U1JhbmdlKXJhbmdlOworIChOU1RleHRDaGVja2luZ1Jlc3VsdCAqKWdyYW1tYXJDaGVja2luZ1Jl
c3VsdFdpdGhSYW5nZTooTlNSYW5nZSlyYW5nZSBkZXRhaWxzOihOU0FycmF5ICopZGV0YWlsczsK
KyAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKilkYXRlQ2hlY2tpbmdSZXN1bHRXaXRoUmFuZ2U6KE5T
UmFuZ2UpcmFuZ2UgZGF0ZTooTlNEYXRlICopZGF0ZTsKKyAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQg
KilkYXRlQ2hlY2tpbmdSZXN1bHRXaXRoUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZGF0ZTooTlNEYXRl
ICopZGF0ZSB0aW1lWm9uZTooTlNUaW1lWm9uZSAqKXRpbWVab25lIGR1cmF0aW9uOihOU1RpbWVJ
bnRlcnZhbClkdXJhdGlvbjsKKyAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKilhZGRyZXNzQ2hlY2tp
bmdSZXN1bHRXaXRoUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgY29tcG9uZW50czooTlNEaWN0aW9uYXJ5
ICopY29tcG9uZW50czsKKyAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKilsaW5rQ2hlY2tpbmdSZXN1
bHRXaXRoUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgVVJMOihOU1VSTCAqKXVybDsKKyAoTlNUZXh0Q2hl
Y2tpbmdSZXN1bHQgKilxdW90ZUNoZWNraW5nUmVzdWx0V2l0aFJhbmdlOihOU1JhbmdlKXJhbmdl
IHJlcGxhY2VtZW50U3RyaW5nOihOU1N0cmluZyAqKXJlcGxhY2VtZW50U3RyaW5nOworIChOU1Rl
eHRDaGVja2luZ1Jlc3VsdCAqKWRhc2hDaGVja2luZ1Jlc3VsdFdpdGhSYW5nZTooTlNSYW5nZSly
YW5nZSByZXBsYWNlbWVudFN0cmluZzooTlNTdHJpbmcgKilyZXBsYWNlbWVudFN0cmluZzsKKyAo
TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKilyZXBsYWNlbWVudENoZWNraW5nUmVzdWx0V2l0aFJhbmdl
OihOU1JhbmdlKXJhbmdlIHJlcGxhY2VtZW50U3RyaW5nOihOU1N0cmluZyAqKXJlcGxhY2VtZW50
U3RyaW5nOworIChOU1RleHRDaGVja2luZ1Jlc3VsdCAqKWNvcnJlY3Rpb25DaGVja2luZ1Jlc3Vs
dFdpdGhSYW5nZTooTlNSYW5nZSlyYW5nZSByZXBsYWNlbWVudFN0cmluZzooTlNTdHJpbmcgKily
ZXBsYWNlbWVudFN0cmluZzsKCkBlbmQKIyA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9G
b3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TU3BlbGxTZXJ2ZXIuaCIgMiAzCgpAY2xhc3Mg
TlNBcnJheSwgTlNPcnRob2dyYXBoeTsKQHByb3RvY29sIE5TU3BlbGxTZXJ2ZXJEZWxlZ2F0ZTsK
CgoKCgoKQGludGVyZmFjZSBOU1NwZWxsU2VydmVyIDogTlNPYmplY3QgewoKCgogIEBwcml2YXRl
CgogICAgaWQgX2RlbGVnYXRlOwogICAgTlNJbnRlZ2VyIF9jYXNlU2Vuc2l0aXZlOwogICAgaWQg
X3NwZWxsU2VydmVyQ29ubmVjdGlvbjsKICAgIGlkIF9kaWN0aW9uYXJpZXM7CiAgICBOU0FycmF5
ICpfbGVhcm5lZERpY3Rpb25hcmllczsKCiAgICBzdHJ1Y3QgX19zc0ZsYWdzIHsKICAgICAgICB1
bnNpZ25lZCBpbnQgZGVsZWdhdGVMZWFybnNXb3JkczoxOwogICAgICAgIHVuc2lnbmVkIGludCBk
ZWxlZ2F0ZUZvcmdldHNXb3JkczoxOwogICAgICAgIHVuc2lnbmVkIGludCBidXN5OjE7CiAgICAg
ICAgdW5zaWduZWQgaW50IF9yZXNlcnZlZDoyOTsKICAgIH0gX3NzRmxhZ3M7CgogICAgdm9pZCAq
X3Jlc2VydmVkU3BlbGxTZXJ2ZXIxOwogICAgdm9pZCAqX3Jlc2VydmVkU3BlbGxTZXJ2ZXIyOwp9
CgotICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNTcGVsbFNlcnZlckRlbGVnYXRlPilhbk9iamVj
dDsKLSAoaWQgPE5TU3BlbGxTZXJ2ZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7CgoKLSAoQk9PTClyZWdp
c3Rlckxhbmd1YWdlOihOU1N0cmluZyAqKWxhbmd1YWdlIGJ5VmVuZG9yOihOU1N0cmluZyAqKXZl
bmRvcjsKCgotIChCT09MKWlzV29yZEluVXNlckRpY3Rpb25hcmllczooTlNTdHJpbmcgKil3b3Jk
IGNhc2VTZW5zaXRpdmU6KEJPT0wpZmxhZzsKCgotICh2b2lkKXJ1bjsKCkBlbmQKIyA3MCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1Nw
ZWxsU2VydmVyLmgiIDMKQHByb3RvY29sIE5TU3BlbGxTZXJ2ZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+
CkBvcHRpb25hbAoKLSAoTlNSYW5nZSlzcGVsbFNlcnZlcjooTlNTcGVsbFNlcnZlciAqKXNlbmRl
ciBmaW5kTWlzc3BlbGxlZFdvcmRJblN0cmluZzooTlNTdHJpbmcgKilzdHJpbmdUb0NoZWNrIGxh
bmd1YWdlOihOU1N0cmluZyAqKWxhbmd1YWdlIHdvcmRDb3VudDooTlNJbnRlZ2VyICopd29yZENv
dW50IGNvdW50T25seTooQk9PTCljb3VudE9ubHk7CgotIChOU0FycmF5ICopc3BlbGxTZXJ2ZXI6
KE5TU3BlbGxTZXJ2ZXIgKilzZW5kZXIgc3VnZ2VzdEd1ZXNzZXNGb3JXb3JkOihOU1N0cmluZyAq
KXdvcmQgaW5MYW5ndWFnZTooTlNTdHJpbmcgKilsYW5ndWFnZTsKCi0gKHZvaWQpc3BlbGxTZXJ2
ZXI6KE5TU3BlbGxTZXJ2ZXIgKilzZW5kZXIgZGlkTGVhcm5Xb3JkOihOU1N0cmluZyAqKXdvcmQg
aW5MYW5ndWFnZTooTlNTdHJpbmcgKilsYW5ndWFnZTsKCi0gKHZvaWQpc3BlbGxTZXJ2ZXI6KE5T
U3BlbGxTZXJ2ZXIgKilzZW5kZXIgZGlkRm9yZ2V0V29yZDooTlNTdHJpbmcgKil3b3JkIGluTGFu
Z3VhZ2U6KE5TU3RyaW5nICopbGFuZ3VhZ2U7CgoKLSAoTlNBcnJheSAqKXNwZWxsU2VydmVyOihO
U1NwZWxsU2VydmVyICopc2VuZGVyIHN1Z2dlc3RDb21wbGV0aW9uc0ZvclBhcnRpYWxXb3JkUmFu
Z2U6KE5TUmFuZ2UpcmFuZ2UgaW5TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGxhbmd1YWdlOihO
U1N0cmluZyAqKWxhbmd1YWdlOwoKCgotIChOU1JhbmdlKXNwZWxsU2VydmVyOihOU1NwZWxsU2Vy
dmVyICopc2VuZGVyIGNoZWNrR3JhbW1hckluU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZ1RvQ2hl
Y2sgbGFuZ3VhZ2U6KE5TU3RyaW5nICopbGFuZ3VhZ2UgZGV0YWlsczooTlNBcnJheSAqKilkZXRh
aWxzOwoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TR3JhbW1hclJhbmdlOwpleHRlcm4g
IkMiIE5TU3RyaW5nICpjb25zdCBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb247CmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TR3JhbW1hckNvcnJlY3Rpb25zOwoKCgoKLSAoTlNBcnJheSAqKXNw
ZWxsU2VydmVyOihOU1NwZWxsU2VydmVyICopc2VuZGVyIGNoZWNrU3RyaW5nOihOU1N0cmluZyAq
KXN0cmluZ1RvQ2hlY2sgb2Zmc2V0OihOU1VJbnRlZ2VyKW9mZnNldCB0eXBlczooTlNUZXh0Q2hl
Y2tpbmdUeXBlcyljaGVja2luZ1R5cGVzIG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnMg
b3J0aG9ncmFwaHk6KE5TT3J0aG9ncmFwaHkgKilvcnRob2dyYXBoeSB3b3JkQ291bnQ6KE5TSW50
ZWdlciAqKXdvcmRDb3VudDsKCgpAZW5kCiMgMTQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0ZvdW5kYXRpb24uaCIgMiAzCgojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNV
UkxEb3dubG9hZC5oIiAxIDMKIyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRh
dGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTERvd25sb2FkLmgiIDMKQGNsYXNzIE5TRXJyb3I7
CkBjbGFzcyBOU1N0cmluZzsKQGNsYXNzIE5TRGF0YTsKQGNsYXNzIE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U7CkBjbGFzcyBOU1VSTERvd25sb2FkSW50ZXJuYWw7CkBjbGFzcyBOU1VSTFJl
cXVlc3Q7CkBjbGFzcyBOU1VSTFJlc3BvbnNlOwpAY2xhc3MgTlNVUkxQcm90ZWN0aW9uU3BhY2U7
CgoKCgoKCgpAaW50ZXJmYWNlIE5TVVJMRG93bmxvYWQgOiBOU09iamVjdAp7CiAgICBAcHJpdmF0
ZQogICAgTlNVUkxEb3dubG9hZEludGVybmFsICpfaW50ZXJuYWw7Cn0KIyA0NSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTERvd25s
b2FkLmgiIDMKKyAoQk9PTCljYW5SZXN1bWVEb3dubG9hZERlY29kZWRXaXRoRW5jb2RpbmdNSU1F
VHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZTsKIyA1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTERvd25sb2FkLmgiIDMKLSAoaWQp
aW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGRlbGVnYXRlOihpZClkZWxl
Z2F0ZTsKIyA2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9OU1VSTERvd25sb2FkLmgiIDMKLSAoaWQpaW5pdFdpdGhSZXN1bWVEYXRhOihO
U0RhdGEgKilyZXN1bWVEYXRhIGRlbGVnYXRlOihpZClkZWxlZ2F0ZSBwYXRoOihOU1N0cmluZyAq
KXBhdGg7CgoKCgoKLSAodm9pZCljYW5jZWw7CiMgODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxEb3dubG9hZC5oIiAzCi0gKHZv
aWQpc2V0RGVzdGluYXRpb246KE5TU3RyaW5nICopcGF0aCBhbGxvd092ZXJ3cml0ZTooQk9PTClh
bGxvd092ZXJ3cml0ZTsKCgoKCgoKLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIyAxMDMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNV
UkxEb3dubG9hZC5oIiAzCi0gKE5TRGF0YSAqKXJlc3VtZURhdGE7CiMgMTEzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMRG93bmxv
YWQuaCIgMwotICh2b2lkKXNldERlbGV0ZXNGaWxlVXBvbkZhaWx1cmU6KEJPT0wpZGVsZXRlc0Zp
bGVVcG9uRmFpbHVyZTsKCgoKCgoKLSAoQk9PTClkZWxldGVzRmlsZVVwb25GYWlsdXJlOwoKQGVu
ZAoKCgoKCkBpbnRlcmZhY2UgTlNPYmplY3QgKE5TVVJMRG93bmxvYWREZWxlZ2F0ZSkKCgoKCgoK
LSAodm9pZClkb3dubG9hZERpZEJlZ2luOihOU1VSTERvd25sb2FkICopZG93bmxvYWQ7CiMgMTQ4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJz
L05TVVJMRG93bmxvYWQuaCIgMwotIChOU1VSTFJlcXVlc3QgKilkb3dubG9hZDooTlNVUkxEb3du
bG9hZCAqKWRvd25sb2FkIHdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBy
ZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZTsKIyAxNjQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
TlNVUkxEb3dubG9hZC5oIiAzCi0gKEJPT0wpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKiljb25u
ZWN0aW9uIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6KE5TVVJMUHJvdGVj
dGlvblNwYWNlICopcHJvdGVjdGlvblNwYWNlOwojIDE3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VSTERvd25sb2FkLmgiIDMKLSAo
dm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5n
ZTsKCgoKCgoKCi0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRD
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZTsKIyAxOTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxEb3dubG9hZC5oIiAzCi0gKEJPT0wpZG93bmxvYWRT
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkOwojIDIx
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9OU1VSTERvd25sb2FkLmgiIDMKLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlOwojIDIy
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9OU1VSTERvd25sb2FkLmgiIDMKLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRv
d25sb2FkIHdpbGxSZXN1bWVXaXRoUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBm
cm9tQnl0ZToobG9uZyBsb25nKXN0YXJ0aW5nQnl0ZTsKIyAyMzMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxEb3dubG9hZC5oIiAz
Ci0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlRGF0
YU9mTGVuZ3RoOihOU1VJbnRlZ2VyKWxlbmd0aDsKIyAyNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxEb3dubG9hZC5oIiAzCi0g
KEJPT0wpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBzaG91bGREZWNvZGVTb3Vy
Y2VEYXRhT2ZNSU1FVHlwZTooTlNTdHJpbmcgKillbmNvZGluZ1R5cGU7CiMgMjU5ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVVJMRG93
bmxvYWQuaCIgMwotICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWU7
CgoKCgoKCgotICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQgZGlkQ3Jl
YXRlRGVzdGluYXRpb246KE5TU3RyaW5nICopcGF0aDsKIyAyNzYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVUkxEb3dubG9hZC5oIiAz
Ci0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZDsKIyAy
ODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvTlNVUkxEb3dubG9hZC5oIiAzCi0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilk
b3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CgpAZW5kCiMgMTQ5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL0Zv
dW5kYXRpb24uaCIgMiAzCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvTlNVbmRvTWFuYWdlci5oIiAxIDMKIyAxMiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9OU1VuZG9NYW5h
Z2VyLmgiIDMKQGNsYXNzIE5TQXJyYXk7CkBjbGFzcyBOU1N0cmluZzsKCgplbnVtIHsKICAgIE5T
VW5kb0Nsb3NlR3JvdXBpbmdSdW5Mb29wT3JkZXJpbmcgPSAzNTAwMDAKfTsKCkBpbnRlcmZhY2Ug
TlNVbmRvTWFuYWdlciA6IE5TT2JqZWN0IHsKICAgIEBwcml2YXRlCiAgICBpZCBfdW5kb1N0YWNr
OwogICAgaWQgX3JlZG9TdGFjazsKICAgIE5TQXJyYXkgKl9ydW5Mb29wTW9kZXM7CiAgICBOU0lu
dGVnZXIgX2Rpc2FibGVkOwogICAgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5kb2lu
ZzoxOwogICAgICAgIHVuc2lnbmVkIGludCByZWRvaW5nOjE7CiAgICAgICAgdW5zaWduZWQgaW50
IHJlZ2lzdGVyZWRGb3JDYWxsYmFjazoxOwogICAgICAgIHVuc2lnbmVkIGludCBwb3N0aW5nQ2hl
Y2twb2ludE5vdGlmaWNhdGlvbjoxOwogICAgICAgIHVuc2lnbmVkIGludCBncm91cHNCeUV2ZW50
OjE7CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkOjI3OwogICAgfSBfZmxhZ3M7CiAgICBp
ZCBfdGFyZ2V0OwogICAgaWQgX3Byb3h5OwogICAgdm9pZCAqX05TVW5kb01hbmFnZXJSZXNlcnZl
ZDE7CiAgICB2b2lkICpfTlNVbmRvTWFuYWdlclJlc2VydmVkMjsKfQoKCgotICh2b2lkKWJlZ2lu
VW5kb0dyb3VwaW5nOwotICh2b2lkKWVuZFVuZG9Hcm91cGluZzsKCgotIChOU0ludGVnZXIpZ3Jv
dXBpbmdMZXZlbDsKCgoKCi0gKHZvaWQpZGlzYWJsZVVuZG9SZWdpc3RyYXRpb247Ci0gKHZvaWQp
ZW5hYmxlVW5kb1JlZ2lzdHJhdGlvbjsKLSAoQk9PTClpc1VuZG9SZWdpc3RyYXRpb25FbmFibGVk
OwoKCgotIChCT09MKWdyb3Vwc0J5RXZlbnQ7Ci0gKHZvaWQpc2V0R3JvdXBzQnlFdmVudDooQk9P
TClncm91cHNCeUV2ZW50OwoKCgoKCgotICh2b2lkKXNldExldmVsc09mVW5kbzooTlNVSW50ZWdl
cilsZXZlbHM7Ci0gKE5TVUludGVnZXIpbGV2ZWxzT2ZVbmRvOwoKCgoKCgotICh2b2lkKXNldFJ1
bkxvb3BNb2RlczooTlNBcnJheSAqKXJ1bkxvb3BNb2RlczsKLSAoTlNBcnJheSAqKXJ1bkxvb3BN
b2RlczsKCgoKLSAodm9pZCl1bmRvOwoKCgotICh2b2lkKXJlZG87CgoKLSAodm9pZCl1bmRvTmVz
dGVkR3JvdXA7CgoKCi0gKEJPT0wpY2FuVW5kbzsKLSAoQk9PTCljYW5SZWRvOwoKCi0gKEJPT0wp
aXNVbmRvaW5nOwotIChCT09MKWlzUmVkb2luZzsKCgoKCgotICh2b2lkKXJlbW92ZUFsbEFjdGlv
bnM7CgotICh2b2lkKXJlbW92ZUFsbEFjdGlvbnNXaXRoVGFyZ2V0OihpZCl0YXJnZXQ7CgoKCi0g
KHZvaWQpcmVnaXN0ZXJVbmRvV2l0aFRhcmdldDooaWQpdGFyZ2V0IHNlbGVjdG9yOihTRUwpc2Vs
ZWN0b3Igb2JqZWN0OihpZClhbk9iamVjdDsKCgoKLSAoaWQpcHJlcGFyZVdpdGhJbnZvY2F0aW9u
VGFyZ2V0OihpZCl0YXJnZXQ7CgoKCgoKCgotIChOU1N0cmluZyAqKXVuZG9BY3Rpb25OYW1lOwot
IChOU1N0cmluZyAqKXJlZG9BY3Rpb25OYW1lOwoKCgotICh2b2lkKXNldEFjdGlvbk5hbWU6KE5T
U3RyaW5nICopYWN0aW9uTmFtZTsKCgoKCgotIChOU1N0cmluZyAqKXVuZG9NZW51SXRlbVRpdGxl
OwotIChOU1N0cmluZyAqKXJlZG9NZW51SXRlbVRpdGxlOwoKCgoKCgotIChOU1N0cmluZyAqKXVu
ZG9NZW51VGl0bGVGb3JVbmRvQWN0aW9uTmFtZTooTlNTdHJpbmcgKilhY3Rpb25OYW1lOwotIChO
U1N0cmluZyAqKXJlZG9NZW51VGl0bGVGb3JVbmRvQWN0aW9uTmFtZTooTlNTdHJpbmcgKilhY3Rp
b25OYW1lOwoKCgoKQGVuZAoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVW5kb01hbmFn
ZXJDaGVja3BvaW50Tm90aWZpY2F0aW9uOwoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0
IE5TVW5kb01hbmFnZXJXaWxsVW5kb0NoYW5nZU5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqIGNvbnN0IE5TVW5kb01hbmFnZXJXaWxsUmVkb0NoYW5nZU5vdGlmaWNhdGlvbjsKCmV4
dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1VuZG9NYW5hZ2VyRGlkVW5kb0NoYW5nZU5vdGlm
aWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVW5kb01hbmFnZXJEaWRSZWRv
Q2hhbmdlTm90aWZpY2F0aW9uOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVW5kb01h
bmFnZXJEaWRPcGVuVW5kb0dyb3VwTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICog
Y29uc3QgTlNVbmRvTWFuYWdlcldpbGxDbG9zZVVuZG9Hcm91cE5vdGlmaWNhdGlvbjsKIyAxNTEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
Rm91bmRhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0
aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVmFsdWVUcmFuc2Zvcm1lci5oIiAxIDMKIyA5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9IZWFkZXJzL05TVmFs
dWVUcmFuc2Zvcm1lci5oIiAzCkBjbGFzcyBOU0FycmF5LCBOU1N0cmluZzsKCmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU05lZ2F0ZUJvb2xlYW5UcmFuc2Zvcm1lck5hbWUgOwpleHRlcm4g
IkMiIE5TU3RyaW5nICogY29uc3QgTlNJc05pbFRyYW5zZm9ybWVyTmFtZSA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU0lzTm90TmlsVHJhbnNmb3JtZXJOYW1lIDsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqIGNvbnN0IE5TVW5hcmNoaXZlRnJvbURhdGFUcmFuc2Zvcm1lck5hbWUgOwpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNLZXllZFVuYXJjaGl2ZUZyb21EYXRhVHJhbnNmb3Jt
ZXJOYW1lIDsKCkBpbnRlcmZhY2UgTlNWYWx1ZVRyYW5zZm9ybWVyIDogTlNPYmplY3Qgewp9CgoK
CisgKHZvaWQpc2V0VmFsdWVUcmFuc2Zvcm1lcjooTlNWYWx1ZVRyYW5zZm9ybWVyICopdHJhbnNm
b3JtZXIgZm9yTmFtZTooTlNTdHJpbmcgKiluYW1lOworIChOU1ZhbHVlVHJhbnNmb3JtZXIgKil2
YWx1ZVRyYW5zZm9ybWVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lOworIChOU0FycmF5ICopdmFs
dWVUcmFuc2Zvcm1lck5hbWVzOwoKCisgKENsYXNzKXRyYW5zZm9ybWVkVmFsdWVDbGFzczsKKyAo
Qk9PTClhbGxvd3NSZXZlcnNlVHJhbnNmb3JtYXRpb247CgotIChpZCl0cmFuc2Zvcm1lZFZhbHVl
OihpZCl2YWx1ZTsKLSAoaWQpcmV2ZXJzZVRyYW5zZm9ybWVkVmFsdWU6KGlkKXZhbHVlOwoKQGVu
ZAojIDE1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9Gb3VuZGF0aW9uLmgiIDIgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNBbmltYXRpb24uaCIgMiAzCgoKCkBjbGFzcyBO
U0FycmF5LCBOU0dyYXBoaWNzQ29udGV4dCwgTlNNdXRhYmxlQXJyYXksIE5TU3RyaW5nLCBOU1Rp
bWVyOwpAcHJvdG9jb2wgTlNBbmltYXRpb25EZWxlZ2F0ZTsKCmVudW0gewogICAgTlNBbmltYXRp
b25FYXNlSW5PdXQsCiAgICBOU0FuaW1hdGlvbkVhc2VJbiwKICAgIE5TQW5pbWF0aW9uRWFzZU91
dCwKICAgIE5TQW5pbWF0aW9uTGluZWFyCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU0FuaW1hdGlv
bkN1cnZlOwoKZW51bSB7CiAgICBOU0FuaW1hdGlvbkJsb2NraW5nLAogICAgTlNBbmltYXRpb25O
b25ibG9ja2luZywKICAgIE5TQW5pbWF0aW9uTm9uYmxvY2tpbmdUaHJlYWRlZAp9Owp0eXBlZGVm
IE5TVUludGVnZXIgTlNBbmltYXRpb25CbG9ja2luZ01vZGU7Cgp0eXBlZGVmIGZsb2F0IE5TQW5p
bWF0aW9uUHJvZ3Jlc3M7CgpleHRlcm4gTlNTdHJpbmcqIE5TQW5pbWF0aW9uUHJvZ3Jlc3NNYXJr
Tm90aWZpY2F0aW9uOwpleHRlcm4gTlNTdHJpbmcqIE5TQW5pbWF0aW9uUHJvZ3Jlc3NNYXJrOwoK
QGludGVyZmFjZSBOU0FuaW1hdGlvbiA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TQ29kaW5nPiB7
CiAgQHByaXZhdGUKICAgIE5TVGltZUludGVydmFsIF9kdXJhdGlvbjsKICAgIE5TQW5pbWF0aW9u
UHJvZ3Jlc3MgX2N1cnJlbnRQcm9ncmVzczsKICAgIGZsb2F0IF9mcmFtZXNQZXJTZWNvbmQ7CiAg
ICBpZCBfZGVsZWdhdGU7CiAgICBOU1RpbWVyKiBfdGltZXI7CiAgICBOU1RpbWVJbnRlcnZhbCBf
c3RhcnRUaW1lOwogICAgTlNNdXRhYmxlQXJyYXkqIF9wcm9ncmVzc01hcmtzOwogICAgTlNBbmlt
YXRpb24qIF9zdGFydEFuaW1hdGlvbjsKICAgIE5TQW5pbWF0aW9uKiBfc3RvcEFuaW1hdGlvbjsK
ICAgIGludCBfbmV4dFByb2dyZXNzTWFyazsKICAgIHN0cnVjdCBfX2FGbGFncyB7CiB1bnNpZ25l
ZCBpbnQgZGVsZWdhdGVBbmltYXRpb25TaG91bGRTdGFydDoxOwogdW5zaWduZWQgaW50IGRlbGVn
YXRlQW5pbWF0aW9uRGlkU3RvcDoxOwogdW5zaWduZWQgaW50IGRlbGVnYXRlQW5pbWF0aW9uRGlk
RW5kOjE7CiB1bnNpZ25lZCBpbnQgZGVsZWdhdGVBbmltYXRpb25WYWx1ZUZvclByb2dyZXNzOjE7
CiB1bnNpZ25lZCBpbnQgZGVsZWdhdGVBbmltYXRpb25EaWRSZWFjaFByb2dyZXNzTWFyazoxOwog
dW5zaWduZWQgaW50IGFuaW1hdGluZzoxOwogdW5zaWduZWQgaW50IGJsb2NraW5nOjE7CiB1bnNp
Z25lZCBpbnQgcmVzZXJ2ZWQ6MjU7CiAgICB9IF9hRmxhZ3M7CiAgICBzdHJ1Y3QgX19hU2V0dGlu
Z3MgewogdW5zaWduZWQgaW50IGFuaW1hdGlvbkN1cnZlOjg7CiB1bnNpZ25lZCBpbnQgYW5pbWF0
aW9uQmxvY2tpbmdNb2RlOjI7CiB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQ6MjI7CiAgICB9IF9hU2V0
dGluZ3M7CiAgICBOU1J1bkxvb3AgKl9zY2hlZHVsZWRSdW5Mb29wOwogICAgTlNJbnRlZ2VyIF9y
ZXNlcnZlZDI7CiAgICBOU0ludGVnZXIgX3Jlc2VydmVkMzsKICAgIE5TSW50ZWdlciBfcmVzZXJ2
ZWQ0Owp9CgotIChpZClpbml0V2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbiBh
bmltYXRpb25DdXJ2ZTooTlNBbmltYXRpb25DdXJ2ZSlhbmltYXRpb25DdXJ2ZTsKCi0gKHZvaWQp
c3RhcnRBbmltYXRpb247Ci0gKHZvaWQpc3RvcEFuaW1hdGlvbjsKLSAoQk9PTClpc0FuaW1hdGlu
ZzsKCi0gKE5TQW5pbWF0aW9uUHJvZ3Jlc3MpY3VycmVudFByb2dyZXNzOwotICh2b2lkKXNldEN1
cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzczsKCi0gKHZvaWQpc2V0
RHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uOwotIChOU1RpbWVJbnRlcnZhbClkdXJh
dGlvbjsKCi0gKE5TQW5pbWF0aW9uQmxvY2tpbmdNb2RlKWFuaW1hdGlvbkJsb2NraW5nTW9kZTsK
LSAodm9pZClzZXRBbmltYXRpb25CbG9ja2luZ01vZGU6KE5TQW5pbWF0aW9uQmxvY2tpbmdNb2Rl
KWFuaW1hdGlvbkJsb2NraW5nTW9kZTsKCi0gKHZvaWQpc2V0RnJhbWVSYXRlOihmbG9hdClmcmFt
ZXNQZXJTZWNvbmQ7Ci0gKGZsb2F0KWZyYW1lUmF0ZTsKCi0gKHZvaWQpc2V0QW5pbWF0aW9uQ3Vy
dmU6KE5TQW5pbWF0aW9uQ3VydmUpY3VydmU7Ci0gKE5TQW5pbWF0aW9uQ3VydmUpYW5pbWF0aW9u
Q3VydmU7CgotIChmbG9hdCljdXJyZW50VmFsdWU7CgotICh2b2lkKXNldERlbGVnYXRlOihpZCA8
TlNBbmltYXRpb25EZWxlZ2F0ZT4pZGVsZWdhdGU7Ci0gKGlkIDxOU0FuaW1hdGlvbkRlbGVnYXRl
PilkZWxlZ2F0ZTsKCi0gKE5TQXJyYXkqKXByb2dyZXNzTWFya3M7Ci0gKHZvaWQpc2V0UHJvZ3Jl
c3NNYXJrczooTlNBcnJheSopcHJvZ3Jlc3NNYXJrczsKCi0gKHZvaWQpYWRkUHJvZ3Jlc3NNYXJr
OihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzTWFyazsKLSAodm9pZClyZW1vdmVQcm9ncmVz
c01hcms6KE5TQW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3NNYXJrOwoKLSAodm9pZClzdGFydFdo
ZW5BbmltYXRpb246KE5TQW5pbWF0aW9uKilhbmltYXRpb24gcmVhY2hlc1Byb2dyZXNzOihOU0Fu
aW1hdGlvblByb2dyZXNzKXN0YXJ0UHJvZ3Jlc3M7Ci0gKHZvaWQpc3RvcFdoZW5BbmltYXRpb246
KE5TQW5pbWF0aW9uKilhbmltYXRpb24gcmVhY2hlc1Byb2dyZXNzOihOU0FuaW1hdGlvblByb2dy
ZXNzKXN0b3BQcm9ncmVzczsKCi0gKHZvaWQpY2xlYXJTdGFydEFuaW1hdGlvbjsKLSAodm9pZClj
bGVhclN0b3BBbmltYXRpb247CgotIChOU0FycmF5KilydW5Mb29wTW9kZXNGb3JBbmltYXRpbmc7
CgpAZW5kCgpAcHJvdG9jb2wgTlNBbmltYXRpb25EZWxlZ2F0ZSA8TlNPYmplY3Q+CkBvcHRpb25h
bAotIChCT09MKWFuaW1hdGlvblNob3VsZFN0YXJ0OihOU0FuaW1hdGlvbiopYW5pbWF0aW9uOwot
ICh2b2lkKWFuaW1hdGlvbkRpZFN0b3A6KE5TQW5pbWF0aW9uKilhbmltYXRpb247Ci0gKHZvaWQp
YW5pbWF0aW9uRGlkRW5kOihOU0FuaW1hdGlvbiopYW5pbWF0aW9uOwotIChmbG9hdClhbmltYXRp
b246KE5TQW5pbWF0aW9uKilhbmltYXRpb24gdmFsdWVGb3JQcm9ncmVzczooTlNBbmltYXRpb25Q
cm9ncmVzcylwcm9ncmVzczsKLSAodm9pZClhbmltYXRpb246KE5TQW5pbWF0aW9uKilhbmltYXRp
b24gZGlkUmVhY2hQcm9ncmVzc01hcms6KE5TQW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3M7CkBl
bmQKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyogTlNWaWV3QW5pbWF0aW9uVGFyZ2V0S2V5IDsKZXh0
ZXJuICJDIiBOU1N0cmluZyogTlNWaWV3QW5pbWF0aW9uU3RhcnRGcmFtZUtleSA7CmV4dGVybiAi
QyIgTlNTdHJpbmcqIE5TVmlld0FuaW1hdGlvbkVuZEZyYW1lS2V5IDsKZXh0ZXJuICJDIiBOU1N0
cmluZyogTlNWaWV3QW5pbWF0aW9uRWZmZWN0S2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyogTlNW
aWV3QW5pbWF0aW9uRmFkZUluRWZmZWN0IDsKZXh0ZXJuICJDIiBOU1N0cmluZyogTlNWaWV3QW5p
bWF0aW9uRmFkZU91dEVmZmVjdCA7CgpAaW50ZXJmYWNlIE5TVmlld0FuaW1hdGlvbiA6IE5TQW5p
bWF0aW9uIHsKICBAcHJpdmF0ZQogICAgTlNBcnJheSogX3ZpZXdBbmltYXRpb25zOwogICAgQ0ZN
dXRhYmxlRGljdGlvbmFyeVJlZiBfdmlld0FuaW1hdGlvbkluZm87CiAgICBDRk11dGFibGVEaWN0
aW9uYXJ5UmVmIF93aW5kb3dBbmltYXRpb25JbmZvOwogICAgTlNVSW50ZWdlciBfcmVzZXJ2ZWQ0
YTsKICAgIE5TVUludGVnZXIgX3Jlc2VydmVkNGI7CiAgICBOU1VJbnRlZ2VyIF9yZXNlcnZlZDRj
OwogICAgc3RydWN0IF9fdmFGbGFncyB7CiB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQ6MzI7CiAgICB9
IF92YUZsYWdzOwogICAgTlNVSW50ZWdlciBfcmVzZXJ2ZWQ1OwogICAgTlNVSW50ZWdlciBfcmVz
ZXJ2ZWQ2OwogICAgTlNVSW50ZWdlciBfcmVzZXJ2ZWQ3OwogICAgTlNVSW50ZWdlciBfcmVzZXJ2
ZWQ4Owp9CgotIChpZClpbml0V2l0aFZpZXdBbmltYXRpb25zOihOU0FycmF5Kil2aWV3QW5pbWF0
aW9uczsKCi0gKE5TQXJyYXkqKXZpZXdBbmltYXRpb25zOwotICh2b2lkKXNldFZpZXdBbmltYXRp
b25zOihOU0FycmF5Kil2aWV3QW5pbWF0aW9uczsKCkBlbmQKCgoKQHByb3RvY29sIE5TQW5pbWF0
YWJsZVByb3BlcnR5Q29udGFpbmVyCgoKCgoKLSAoaWQpYW5pbWF0b3I7CgoKCi0gKE5TRGljdGlv
bmFyeSAqKWFuaW1hdGlvbnM7Ci0gKHZvaWQpc2V0QW5pbWF0aW9uczooTlNEaWN0aW9uYXJ5ICop
ZGljdDsKCgoKLSAoaWQpYW5pbWF0aW9uRm9yS2V5OihOU1N0cmluZyAqKWtleTsKIyAxOTIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0FuaW1h
dGlvbi5oIiAzCisgKGlkKWRlZmF1bHRBbmltYXRpb25Gb3JLZXk6KE5TU3RyaW5nICopa2V5OwoK
QGVuZAoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNBbmltYXRpb25UcmlnZ2VyT3JkZXJJbiA7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKk5TQW5pbWF0aW9uVHJpZ2dlck9yZGVyT3V0IDsKIyAxNCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVmlldy5o
IiAyIDMKCkBjbGFzcyBOU0JpdG1hcEltYWdlUmVwLCBOU0N1cnNvciwgTlNHcmFwaGljc0NvbnRl
eHQsIE5TSW1hZ2UsIE5TUGFzdGVib2FyZCwgTlNTY3JvbGxWaWV3LCBOU1RleHRJbnB1dENvbnRl
eHQsIE5TV2luZG93LCBOU0F0dHJpYnV0ZWRTdHJpbmc7CgpAY2xhc3MgQ0lGaWx0ZXIsIENBTGF5
ZXIsIE5TRGljdGlvbmFyeSwgTlNTY3JlZW4sIE5TU2hhZG93LCBOU1RyYWNraW5nQXJlYTsKCgoK
ZW51bSB7CiAgICBOU1ZpZXdOb3RTaXphYmxlID0gMCwKICAgIE5TVmlld01pblhNYXJnaW4gPSAx
LAogICAgTlNWaWV3V2lkdGhTaXphYmxlID0gMiwKICAgIE5TVmlld01heFhNYXJnaW4gPSA0LAog
ICAgTlNWaWV3TWluWU1hcmdpbiA9IDgsCiAgICBOU1ZpZXdIZWlnaHRTaXphYmxlID0gMTYsCiAg
ICBOU1ZpZXdNYXhZTWFyZ2luID0gMzIKfTsKCmVudW0gewogICAgTlNOb0JvcmRlciA9IDAsCiAg
ICBOU0xpbmVCb3JkZXIgPSAxLAogICAgTlNCZXplbEJvcmRlciA9IDIsCiAgICBOU0dyb292ZUJv
cmRlciA9IDMKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TQm9yZGVyVHlwZTsKCgplbnVtIHsKICAg
IE5TVmlld0xheWVyQ29udGVudHNSZWRyYXdOZXZlciA9IDAsCiAgICBOU1ZpZXdMYXllckNvbnRl
bnRzUmVkcmF3T25TZXROZWVkc0Rpc3BsYXkgPSAxLAogICAgTlNWaWV3TGF5ZXJDb250ZW50c1Jl
ZHJhd0R1cmluZ1ZpZXdSZXNpemUgPSAyLAogICAgTlNWaWV3TGF5ZXJDb250ZW50c1JlZHJhd0Jl
Zm9yZVZpZXdSZXNpemUgPSAzCn07Cgp0eXBlZGVmIE5TSW50ZWdlciBOU1ZpZXdMYXllckNvbnRl
bnRzUmVkcmF3UG9saWN5OwoKCmVudW0gewogICAgTlNWaWV3TGF5ZXJDb250ZW50c1BsYWNlbWVu
dFNjYWxlQXhlc0luZGVwZW5kZW50bHkgPSAwLAogICAgTlNWaWV3TGF5ZXJDb250ZW50c1BsYWNl
bWVudFNjYWxlUHJvcG9ydGlvbmFsbHlUb0ZpdCA9IDEsCiAgICBOU1ZpZXdMYXllckNvbnRlbnRz
UGxhY2VtZW50U2NhbGVQcm9wb3J0aW9uYWxseVRvRmlsbCA9IDIsCiAgICBOU1ZpZXdMYXllckNv
bnRlbnRzUGxhY2VtZW50Q2VudGVyID0gMywKICAgIE5TVmlld0xheWVyQ29udGVudHNQbGFjZW1l
bnRUb3AgPSA0LAogICAgTlNWaWV3TGF5ZXJDb250ZW50c1BsYWNlbWVudFRvcFJpZ2h0ID0gNSwK
ICAgIE5TVmlld0xheWVyQ29udGVudHNQbGFjZW1lbnRSaWdodCA9IDYsCiAgICBOU1ZpZXdMYXll
ckNvbnRlbnRzUGxhY2VtZW50Qm90dG9tUmlnaHQgPSA3LAogICAgTlNWaWV3TGF5ZXJDb250ZW50
c1BsYWNlbWVudEJvdHRvbSA9IDgsCiAgICBOU1ZpZXdMYXllckNvbnRlbnRzUGxhY2VtZW50Qm90
dG9tTGVmdCA9IDksCiAgICBOU1ZpZXdMYXllckNvbnRlbnRzUGxhY2VtZW50TGVmdCA9IDEwLAog
ICAgTlNWaWV3TGF5ZXJDb250ZW50c1BsYWNlbWVudFRvcExlZnQgPSAxMQp9OwoKdHlwZWRlZiBO
U0ludGVnZXIgTlNWaWV3TGF5ZXJDb250ZW50c1BsYWNlbWVudDsKCnR5cGVkZWYgc3RydWN0IF9f
VkZsYWdzIHsKIyA5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29y
ay9IZWFkZXJzL05TVmlldy5oIiAzCiB1bnNpZ25lZCBpbnQgYWJvdXRUb1Jlc2l6ZToxOwogdW5z
aWduZWQgaW50IHJldGFpbkNvdW50T3Zlck1heDoxOwogdW5zaWduZWQgaW50IHJldGFpbkNvdW50
OjY7CiB1bnNpZ25lZCBpbnQgaW50ZXJmYWNlU3R5bGUxOjE7CiB1bnNpZ25lZCBpbnQgc3BlY2lh
bEFyY2hpdmluZzoxOwogdW5zaWduZWQgaW50IG5lZWRzRGlzcGxheUZvckJvdW5kczoxOwogdW5z
aWduZWQgaW50IGludGVyZmFjZVN0eWxlMDoxOwogICAgICAgIHVuc2lnbmVkIGludCByZW1vdmlu
Z1dpdGhvdXRJbnZhbGlkYXRpb246MTsKIHVuc2lnbmVkIGludCBuZWVkc0JvdW5kc0NoYW5nZU5v
dGU6MTsKIHVuc2lnbmVkIGludCBib3VuZHNDaGFuZ2VOb3Rlc1N1c3BlbmRlZDoxOwogdW5zaWdu
ZWQgaW50IGZvY3VzQ2hhbmdlTm90ZXNTdXNwZW5kZWQ6MTsKIHVuc2lnbmVkIGludCBuZWVkc0Zy
YW1lQ2hhbmdlTm90ZToxOwogdW5zaWduZWQgaW50IGZyYW1lQ2hhbmdlTm90ZXNTdXNwZW5kZWQ6
MTsKIHVuc2lnbmVkIGludCBub1ZlcnRpY2FsQXV0b3NpemluZzoxOwogdW5zaWduZWQgaW50IG5l
d0dTdGF0ZToxOwogdW5zaWduZWQgaW50IHZhbGlkR1N0YXRlOjE7CiB1bnNpZ25lZCBpbnQgbmVl
ZHNEaXNwbGF5OjE7CiB1bnNpZ25lZCBpbnQgd2FudHNHU3RhdGU6MTsKIHVuc2lnbmVkIGludCBh
dXRvcmVzaXplU3Vidmlld3M6MTsKIHVuc2lnbmVkIGludCBhdXRvc2l6aW5nOjY7CiB1bnNpZ25l
ZCBpbnQgcm90YXRlZE9yU2NhbGVkRnJvbUJhc2U6MTsKIHVuc2lnbmVkIGludCByb3RhdGVkRnJv
bUJhc2U6MTsKCn0gX1ZGbGFnczsKCnR5cGVkZWYgTlNJbnRlZ2VyIE5TVHJhY2tpbmdSZWN0VGFn
Owp0eXBlZGVmIE5TSW50ZWdlciBOU1Rvb2xUaXBUYWc7CgpAY2xhc3MgX05TVmlld0F1eGlsaWFy
eTsKCkBpbnRlcmZhY2UgTlNWaWV3IDogTlNSZXNwb25kZXIKCjxOU0FuaW1hdGFibGVQcm9wZXJ0
eUNvbnRhaW5lcj4KCnsKCiAgICBOU1JlY3QgX2ZyYW1lOwogICAgTlNSZWN0IF9ib3VuZHM7CiAg
ICBpZCBfc3VwZXJ2aWV3OwogICAgaWQgX3N1YnZpZXdzOwogICAgTlNXaW5kb3cgKl93aW5kb3c7
CiAgICBpZCBfZ1N0YXRlOwogICAgaWQgX2ZyYW1lTWF0cml4OwogICAgaWQgX2RyYXdNYXRyaXg7
CiAgICBpZCBfZHJhZ1R5cGVzOwogICAgX05TVmlld0F1eGlsaWFyeSAqX3ZpZXdBdXhpbGlhcnk7
CiAgICBfVkZsYWdzIF92RmxhZ3M7CiAgICBzdHJ1Y3QgX19WRmxhZ3MyIHsKIHVuc2lnbmVkIGlu
dCBuZXh0S2V5Vmlld1JlZkNvdW50OjE0OwogdW5zaWduZWQgaW50IHByZXZpb3VzS2V5Vmlld1Jl
ZkNvdW50OjE0OwogdW5zaWduZWQgaW50IGlzVmlzaWJsZVJlY3Q6MTsKIHVuc2lnbmVkIGludCBo
YXNUb29sVGlwOjE7CiB1bnNpZ25lZCBpbnQgbmVlZHNSZWFsTG9ja0ZvY3VzOjE7CiB1bnNpZ25l
ZCBpbnQgbWVudVdhc1NldDoxOwogICAgfSBfdkZsYWdzMjsKfQoKCi0gKGlkKWluaXRXaXRoRnJh
bWU6KE5TUmVjdClmcmFtZVJlY3Q7CgotIChOU1dpbmRvdyAqKXdpbmRvdzsKLSAoTlNWaWV3ICop
c3VwZXJ2aWV3OwotIChOU0FycmF5ICopc3Vidmlld3M7Ci0gKEJPT0wpaXNEZXNjZW5kYW50T2Y6
KE5TVmlldyAqKWFWaWV3OwotIChOU1ZpZXcgKilhbmNlc3RvclNoYXJlZFdpdGhWaWV3OihOU1Zp
ZXcgKilhVmlldzsKLSAoTlNWaWV3ICopb3BhcXVlQW5jZXN0b3I7CgotICh2b2lkKXNldEhpZGRl
bjooQk9PTClmbGFnOwotIChCT09MKWlzSGlkZGVuOwotIChCT09MKWlzSGlkZGVuT3JIYXNIaWRk
ZW5BbmNlc3RvcjsKCi0gKHZvaWQpZ2V0UmVjdHNCZWluZ0RyYXduOihjb25zdCBOU1JlY3QgKiop
cmVjdHMgY291bnQ6KE5TSW50ZWdlciAqKWNvdW50OwotIChCT09MKW5lZWRzVG9EcmF3UmVjdDoo
TlNSZWN0KWFSZWN0OwotIChCT09MKXdhbnRzRGVmYXVsdENsaXBwaW5nOwoKCi0gKHZvaWQpdmll
d0RpZEhpZGU7Ci0gKHZvaWQpdmlld0RpZFVuaGlkZTsKCi0gKHZvaWQpc2V0U3Vidmlld3M6KE5T
QXJyYXkgKiluZXdTdWJ2aWV3czsKCi0gKHZvaWQpYWRkU3VidmlldzooTlNWaWV3ICopYVZpZXc7
Ci0gKHZvaWQpYWRkU3VidmlldzooTlNWaWV3ICopYVZpZXcgcG9zaXRpb25lZDooTlNXaW5kb3dP
cmRlcmluZ01vZGUpcGxhY2UgcmVsYXRpdmVUbzooTlNWaWV3ICopb3RoZXJWaWV3OwotICh2b2lk
KXNvcnRTdWJ2aWV3c1VzaW5nRnVuY3Rpb246KE5TQ29tcGFyaXNvblJlc3VsdCAoKikoaWQsIGlk
LCB2b2lkICopKWNvbXBhcmUgY29udGV4dDoodm9pZCAqKWNvbnRleHQ7Ci0gKHZvaWQpdmlld1dp
bGxNb3ZlVG9XaW5kb3c6KE5TV2luZG93ICopbmV3V2luZG93OwotICh2b2lkKXZpZXdEaWRNb3Zl
VG9XaW5kb3c7Ci0gKHZvaWQpdmlld1dpbGxNb3ZlVG9TdXBlcnZpZXc6KE5TVmlldyAqKW5ld1N1
cGVydmlldzsKLSAodm9pZCl2aWV3RGlkTW92ZVRvU3VwZXJ2aWV3OwotICh2b2lkKWRpZEFkZFN1
YnZpZXc6KE5TVmlldyAqKXN1YnZpZXc7Ci0gKHZvaWQpd2lsbFJlbW92ZVN1YnZpZXc6KE5TVmll
dyAqKXN1YnZpZXc7Ci0gKHZvaWQpcmVtb3ZlRnJvbVN1cGVydmlldzsKLSAodm9pZClyZXBsYWNl
U3VidmlldzooTlNWaWV3ICopb2xkVmlldyB3aXRoOihOU1ZpZXcgKiluZXdWaWV3OwotICh2b2lk
KXJlbW92ZUZyb21TdXBlcnZpZXdXaXRob3V0TmVlZGluZ0Rpc3BsYXk7CgotICh2b2lkKXNldFBv
c3RzRnJhbWVDaGFuZ2VkTm90aWZpY2F0aW9uczooQk9PTClmbGFnOwotIChCT09MKXBvc3RzRnJh
bWVDaGFuZ2VkTm90aWZpY2F0aW9uczsKLSAodm9pZClyZXNpemVTdWJ2aWV3c1dpdGhPbGRTaXpl
OihOU1NpemUpb2xkU2l6ZTsKLSAodm9pZClyZXNpemVXaXRoT2xkU3VwZXJ2aWV3U2l6ZTooTlNT
aXplKW9sZFNpemU7Ci0gKHZvaWQpc2V0QXV0b3Jlc2l6ZXNTdWJ2aWV3czooQk9PTClmbGFnOwot
IChCT09MKWF1dG9yZXNpemVzU3Vidmlld3M7Ci0gKHZvaWQpc2V0QXV0b3Jlc2l6aW5nTWFzazoo
TlNVSW50ZWdlciltYXNrOwotIChOU1VJbnRlZ2VyKWF1dG9yZXNpemluZ01hc2s7CgotICh2b2lk
KXNldEZyYW1lT3JpZ2luOihOU1BvaW50KW5ld09yaWdpbjsKLSAodm9pZClzZXRGcmFtZVNpemU6
KE5TU2l6ZSluZXdTaXplOwotICh2b2lkKXNldEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0OwotIChO
U1JlY3QpZnJhbWU7Ci0gKHZvaWQpc2V0RnJhbWVSb3RhdGlvbjooQ0dGbG9hdClhbmdsZTsKLSAo
Q0dGbG9hdClmcmFtZVJvdGF0aW9uOwoKLSAodm9pZClzZXRGcmFtZUNlbnRlclJvdGF0aW9uOihD
R0Zsb2F0KWFuZ2xlOwotIChDR0Zsb2F0KWZyYW1lQ2VudGVyUm90YXRpb247CgoKLSAodm9pZClz
ZXRCb3VuZHNPcmlnaW46KE5TUG9pbnQpbmV3T3JpZ2luOwotICh2b2lkKXNldEJvdW5kc1NpemU6
KE5TU2l6ZSluZXdTaXplOwotICh2b2lkKXNldEJvdW5kc1JvdGF0aW9uOihDR0Zsb2F0KWFuZ2xl
OwotIChDR0Zsb2F0KWJvdW5kc1JvdGF0aW9uOwotICh2b2lkKXRyYW5zbGF0ZU9yaWdpblRvUG9p
bnQ6KE5TUG9pbnQpdHJhbnNsYXRpb247Ci0gKHZvaWQpc2NhbGVVbml0U3F1YXJlVG9TaXplOihO
U1NpemUpbmV3VW5pdFNpemU7Ci0gKHZvaWQpcm90YXRlQnlBbmdsZTooQ0dGbG9hdClhbmdsZTsK
LSAodm9pZClzZXRCb3VuZHM6KE5TUmVjdClhUmVjdDsKLSAoTlNSZWN0KWJvdW5kczsKCi0gKEJP
T0wpaXNGbGlwcGVkOwotIChCT09MKWlzUm90YXRlZEZyb21CYXNlOwotIChCT09MKWlzUm90YXRl
ZE9yU2NhbGVkRnJvbUJhc2U7Ci0gKEJPT0wpaXNPcGFxdWU7CgotIChOU1BvaW50KWNvbnZlcnRQ
b2ludDooTlNQb2ludClhUG9pbnQgZnJvbVZpZXc6KE5TVmlldyAqKWFWaWV3OwotIChOU1BvaW50
KWNvbnZlcnRQb2ludDooTlNQb2ludClhUG9pbnQgdG9WaWV3OihOU1ZpZXcgKilhVmlldzsKLSAo
TlNTaXplKWNvbnZlcnRTaXplOihOU1NpemUpYVNpemUgZnJvbVZpZXc6KE5TVmlldyAqKWFWaWV3
OwotIChOU1NpemUpY29udmVydFNpemU6KE5TU2l6ZSlhU2l6ZSB0b1ZpZXc6KE5TVmlldyAqKWFW
aWV3OwotIChOU1JlY3QpY29udmVydFJlY3Q6KE5TUmVjdClhUmVjdCBmcm9tVmlldzooTlNWaWV3
ICopYVZpZXc7Ci0gKE5TUmVjdCljb252ZXJ0UmVjdDooTlNSZWN0KWFSZWN0IHRvVmlldzooTlNW
aWV3ICopYVZpZXc7Ci0gKE5TUmVjdCljZW50ZXJTY2FuUmVjdDooTlNSZWN0KWFSZWN0OwoKCi0g
KE5TUG9pbnQpY29udmVydFBvaW50VG9CYXNlOihOU1BvaW50KWFQb2ludDsKLSAoTlNQb2ludClj
b252ZXJ0UG9pbnRGcm9tQmFzZTooTlNQb2ludClhUG9pbnQ7Ci0gKE5TU2l6ZSljb252ZXJ0U2l6
ZVRvQmFzZTooTlNTaXplKWFTaXplOwotIChOU1NpemUpY29udmVydFNpemVGcm9tQmFzZTooTlNT
aXplKWFTaXplOwotIChOU1JlY3QpY29udmVydFJlY3RUb0Jhc2U6KE5TUmVjdClhUmVjdDsKLSAo
TlNSZWN0KWNvbnZlcnRSZWN0RnJvbUJhc2U6KE5TUmVjdClhUmVjdDsKCgoKCi0gKEJPT0wpY2Fu
RHJhd0NvbmN1cnJlbnRseSA7CgoKLSAodm9pZClzZXRDYW5EcmF3Q29uY3VycmVudGx5OihCT09M
KWZsYWcgOwoKLSAoQk9PTCljYW5EcmF3OwotICh2b2lkKXNldE5lZWRzRGlzcGxheTooQk9PTClm
bGFnOwotICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooTlNSZWN0KWludmFsaWRSZWN0Owot
IChCT09MKW5lZWRzRGlzcGxheTsKLSAodm9pZClsb2NrRm9jdXM7Ci0gKHZvaWQpdW5sb2NrRm9j
dXM7Ci0gKEJPT0wpbG9ja0ZvY3VzSWZDYW5EcmF3OwoKLSAoQk9PTClsb2NrRm9jdXNJZkNhbkRy
YXdJbkNvbnRleHQ6KE5TR3JhcGhpY3NDb250ZXh0ICopY29udGV4dDsKCisgKE5TVmlldyAqKWZv
Y3VzVmlldzsKLSAoTlNSZWN0KXZpc2libGVSZWN0OwoKLSAodm9pZClkaXNwbGF5OwotICh2b2lk
KWRpc3BsYXlJZk5lZWRlZDsKLSAodm9pZClkaXNwbGF5SWZOZWVkZWRJZ25vcmluZ09wYWNpdHk7
Ci0gKHZvaWQpZGlzcGxheVJlY3Q6KE5TUmVjdClyZWN0OwotICh2b2lkKWRpc3BsYXlJZk5lZWRl
ZEluUmVjdDooTlNSZWN0KXJlY3Q7Ci0gKHZvaWQpZGlzcGxheVJlY3RJZ25vcmluZ09wYWNpdHk6
KE5TUmVjdClyZWN0OwotICh2b2lkKWRpc3BsYXlJZk5lZWRlZEluUmVjdElnbm9yaW5nT3BhY2l0
eTooTlNSZWN0KXJlY3Q7Ci0gKHZvaWQpZHJhd1JlY3Q6KE5TUmVjdClkaXJ0eVJlY3Q7CgotICh2
b2lkKWRpc3BsYXlSZWN0SWdub3JpbmdPcGFjaXR5OihOU1JlY3QpYVJlY3QgaW5Db250ZXh0OihO
U0dyYXBoaWNzQ29udGV4dCAqKWNvbnRleHQ7CgotIChOU0JpdG1hcEltYWdlUmVwICopYml0bWFw
SW1hZ2VSZXBGb3JDYWNoaW5nRGlzcGxheUluUmVjdDooTlNSZWN0KXJlY3Q7Ci0gKHZvaWQpY2Fj
aGVEaXNwbGF5SW5SZWN0OihOU1JlY3QpcmVjdCB0b0JpdG1hcEltYWdlUmVwOihOU0JpdG1hcElt
YWdlUmVwICopYml0bWFwSW1hZ2VSZXA7CgoKLSAodm9pZCl2aWV3V2lsbERyYXc7CgoKLSAoTlNJ
bnRlZ2VyKWdTdGF0ZTsKLSAodm9pZClhbGxvY2F0ZUdTdGF0ZTsKLSAodm9pZClyZWxlYXNlR1N0
YXRlOwotICh2b2lkKXNldFVwR1N0YXRlOwotICh2b2lkKXJlbmV3R1N0YXRlOwoKLSAodm9pZClz
Y3JvbGxQb2ludDooTlNQb2ludClhUG9pbnQ7Ci0gKEJPT0wpc2Nyb2xsUmVjdFRvVmlzaWJsZToo
TlNSZWN0KWFSZWN0OwotIChCT09MKWF1dG9zY3JvbGw6KE5TRXZlbnQgKil0aGVFdmVudDsKLSAo
TlNSZWN0KWFkanVzdFNjcm9sbDooTlNSZWN0KW5ld1Zpc2libGU7Ci0gKHZvaWQpc2Nyb2xsUmVj
dDooTlNSZWN0KWFSZWN0IGJ5OihOU1NpemUpZGVsdGE7CgotICh2b2lkKXRyYW5zbGF0ZVJlY3Rz
TmVlZGluZ0Rpc3BsYXlJblJlY3Q6KE5TUmVjdCljbGlwUmVjdCBieTooTlNTaXplKWRlbHRhOwoK
Ci0gKE5TVmlldyAqKWhpdFRlc3Q6KE5TUG9pbnQpYVBvaW50OwotIChCT09MKW1vdXNlOihOU1Bv
aW50KWFQb2ludCBpblJlY3Q6KE5TUmVjdClhUmVjdDsKLSAoaWQpdmlld1dpdGhUYWc6KE5TSW50
ZWdlcilhVGFnOwotIChOU0ludGVnZXIpdGFnOwotIChCT09MKXBlcmZvcm1LZXlFcXVpdmFsZW50
OihOU0V2ZW50ICopdGhlRXZlbnQ7Ci0gKEJPT0wpYWNjZXB0c0ZpcnN0TW91c2U6KE5TRXZlbnQg
Kil0aGVFdmVudDsKLSAoQk9PTClzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZlbnQ6KE5T
RXZlbnQgKil0aGVFdmVudDsKLSAoQk9PTCluZWVkc1BhbmVsVG9CZWNvbWVLZXk7CgotIChCT09M
KW1vdXNlRG93bkNhbk1vdmVXaW5kb3c7CgoKCgotICh2b2lkKXNldEFjY2VwdHNUb3VjaEV2ZW50
czooQk9PTClmbGFnIDsKLSAoQk9PTClhY2NlcHRzVG91Y2hFdmVudHMgOwoKCgotICh2b2lkKXNl
dFdhbnRzUmVzdGluZ1RvdWNoZXM6KEJPT0wpZmxhZyA7Ci0gKEJPT0wpd2FudHNSZXN0aW5nVG91
Y2hlcyA7CgotICh2b2lkKWFkZEN1cnNvclJlY3Q6KE5TUmVjdClhUmVjdCBjdXJzb3I6KE5TQ3Vy
c29yICopYW5PYmo7Ci0gKHZvaWQpcmVtb3ZlQ3Vyc29yUmVjdDooTlNSZWN0KWFSZWN0IGN1cnNv
cjooTlNDdXJzb3IgKilhbk9iajsKLSAodm9pZClkaXNjYXJkQ3Vyc29yUmVjdHM7Ci0gKHZvaWQp
cmVzZXRDdXJzb3JSZWN0czsKCi0gKE5TVHJhY2tpbmdSZWN0VGFnKWFkZFRyYWNraW5nUmVjdDoo
TlNSZWN0KWFSZWN0IG93bmVyOihpZClhbk9iamVjdCB1c2VyRGF0YToodm9pZCAqKWRhdGEgYXNz
dW1lSW5zaWRlOihCT09MKWZsYWc7Ci0gKHZvaWQpcmVtb3ZlVHJhY2tpbmdSZWN0OihOU1RyYWNr
aW5nUmVjdFRhZyl0YWc7CgotIChDQUxheWVyICopbWFrZUJhY2tpbmdMYXllciA7CgotIChOU1Zp
ZXdMYXllckNvbnRlbnRzUmVkcmF3UG9saWN5KWxheWVyQ29udGVudHNSZWRyYXdQb2xpY3kgOwot
ICh2b2lkKXNldExheWVyQ29udGVudHNSZWRyYXdQb2xpY3k6KE5TVmlld0xheWVyQ29udGVudHNS
ZWRyYXdQb2xpY3kpbmV3UG9saWN5IDsKCi0gKE5TVmlld0xheWVyQ29udGVudHNQbGFjZW1lbnQp
bGF5ZXJDb250ZW50c1BsYWNlbWVudCA7Ci0gKHZvaWQpc2V0TGF5ZXJDb250ZW50c1BsYWNlbWVu
dDooTlNWaWV3TGF5ZXJDb250ZW50c1BsYWNlbWVudCluZXdQbGFjZW1lbnQgOwoKCi0gKHZvaWQp
c2V0V2FudHNMYXllcjooQk9PTClmbGFnOwotIChCT09MKXdhbnRzTGF5ZXI7CgotICh2b2lkKXNl
dExheWVyOihDQUxheWVyICopbmV3TGF5ZXI7Ci0gKENBTGF5ZXIgKilsYXllcjsKCi0gKHZvaWQp
c2V0QWxwaGFWYWx1ZTooQ0dGbG9hdCl2aWV3QWxwaGE7Ci0gKENHRmxvYXQpYWxwaGFWYWx1ZTsK
Ci0gKHZvaWQpc2V0QmFja2dyb3VuZEZpbHRlcnM6KE5TQXJyYXkgKilmaWx0ZXJzOwotIChOU0Fy
cmF5ICopYmFja2dyb3VuZEZpbHRlcnM7CgotICh2b2lkKXNldENvbXBvc2l0aW5nRmlsdGVyOihD
SUZpbHRlciAqKWZpbHRlcjsKLSAoQ0lGaWx0ZXIgKiljb21wb3NpdGluZ0ZpbHRlcjsKCi0gKHZv
aWQpc2V0Q29udGVudEZpbHRlcnM6KE5TQXJyYXkgKilmaWx0ZXJzOwotIChOU0FycmF5ICopY29u
dGVudEZpbHRlcnM7CgotICh2b2lkKXNldFNoYWRvdzooTlNTaGFkb3cgKilzaGFkb3c7Ci0gKE5T
U2hhZG93ICopc2hhZG93OwoKCgotICh2b2lkKWFkZFRyYWNraW5nQXJlYTooTlNUcmFja2luZ0Fy
ZWEgKil0cmFja2luZ0FyZWE7Ci0gKHZvaWQpcmVtb3ZlVHJhY2tpbmdBcmVhOihOU1RyYWNraW5n
QXJlYSAqKXRyYWNraW5nQXJlYTsKLSAoTlNBcnJheSAqKXRyYWNraW5nQXJlYXM7CgoKCi0gKHZv
aWQpdXBkYXRlVHJhY2tpbmdBcmVhczsKCgoKLSAoQk9PTClzaG91bGREcmF3Q29sb3I7CgotICh2
b2lkKXNldFBvc3RzQm91bmRzQ2hhbmdlZE5vdGlmaWNhdGlvbnM6KEJPT0wpZmxhZzsKLSAoQk9P
TClwb3N0c0JvdW5kc0NoYW5nZWROb3RpZmljYXRpb25zOwoKLSAoTlNTY3JvbGxWaWV3ICopZW5j
bG9zaW5nU2Nyb2xsVmlldzsKCi0gKE5TTWVudSAqKW1lbnVGb3JFdmVudDooTlNFdmVudCAqKWV2
ZW50OworIChOU01lbnUgKilkZWZhdWx0TWVudTsKCi0gKHZvaWQpc2V0VG9vbFRpcDooTlNTdHJp
bmcgKilzdHJpbmc7Ci0gKE5TU3RyaW5nICopdG9vbFRpcDsKLSAoTlNUb29sVGlwVGFnKWFkZFRv
b2xUaXBSZWN0OihOU1JlY3QpYVJlY3Qgb3duZXI6KGlkKWFuT2JqZWN0IHVzZXJEYXRhOih2b2lk
ICopZGF0YTsKLSAodm9pZClyZW1vdmVUb29sVGlwOihOU1Rvb2xUaXBUYWcpdGFnOwotICh2b2lk
KXJlbW92ZUFsbFRvb2xUaXBzOwoKCgotICh2b2lkKXZpZXdXaWxsU3RhcnRMaXZlUmVzaXplOwoK
LSAodm9pZCl2aWV3RGlkRW5kTGl2ZVJlc2l6ZTsKCi0gKEJPT0wpaW5MaXZlUmVzaXplOwoKCi0g
KEJPT0wpcHJlc2VydmVzQ29udGVudER1cmluZ0xpdmVSZXNpemU7CgotIChOU1JlY3QpcmVjdFBy
ZXNlcnZlZER1cmluZ0xpdmVSZXNpemU7CgotICh2b2lkKWdldFJlY3RzRXhwb3NlZER1cmluZ0xp
dmVSZXNpemU6KE5TUmVjdFs0XSlleHBvc2VkUmVjdHMgY291bnQ6KE5TSW50ZWdlciAqKWNvdW50
OwoKCgoKCi0gKE5TVGV4dElucHV0Q29udGV4dCAqKWlucHV0Q29udGV4dCA7CkBlbmQKCkBpbnRl
cmZhY2UgTlNPYmplY3QoTlNUb29sVGlwT3duZXIpCi0gKE5TU3RyaW5nICopdmlldzooTlNWaWV3
ICopdmlldyBzdHJpbmdGb3JUb29sVGlwOihOU1Rvb2xUaXBUYWcpdGFnIHBvaW50OihOU1BvaW50
KXBvaW50IHVzZXJEYXRhOih2b2lkICopZGF0YTsKQGVuZAoKQGludGVyZmFjZSBOU1ZpZXcoTlNL
ZXlib2FyZFVJKQotIChCT09MKXBlcmZvcm1NbmVtb25pYzooTlNTdHJpbmcgKil0aGVTdHJpbmc7
Ci0gKHZvaWQpc2V0TmV4dEtleVZpZXc6KE5TVmlldyAqKW5leHQ7Ci0gKE5TVmlldyAqKW5leHRL
ZXlWaWV3OwotIChOU1ZpZXcgKilwcmV2aW91c0tleVZpZXc7Ci0gKE5TVmlldyAqKW5leHRWYWxp
ZEtleVZpZXc7Ci0gKE5TVmlldyAqKXByZXZpb3VzVmFsaWRLZXlWaWV3OwoKCi0gKEJPT0wpY2Fu
QmVjb21lS2V5VmlldzsKCgotICh2b2lkKXNldEtleWJvYXJkRm9jdXNSaW5nTmVlZHNEaXNwbGF5
SW5SZWN0OihOU1JlY3QpcmVjdDsKCgotICh2b2lkKXNldEZvY3VzUmluZ1R5cGU6KE5TRm9jdXNS
aW5nVHlwZSlmb2N1c1JpbmdUeXBlOwotIChOU0ZvY3VzUmluZ1R5cGUpZm9jdXNSaW5nVHlwZTsK
KyAoTlNGb2N1c1JpbmdUeXBlKWRlZmF1bHRGb2N1c1JpbmdUeXBlOwoKQGVuZAoKQGludGVyZmFj
ZSBOU1ZpZXcoTlNQcmludGluZykKCgotICh2b2lkKXdyaXRlRVBTSW5zaWRlUmVjdDooTlNSZWN0
KXJlY3QgdG9QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkOwotIChOU0RhdGEg
KilkYXRhV2l0aEVQU0luc2lkZVJlY3Q6KE5TUmVjdClyZWN0OwotICh2b2lkKXdyaXRlUERGSW5z
aWRlUmVjdDooTlNSZWN0KXJlY3QgdG9QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJv
YXJkOwotIChOU0RhdGEgKilkYXRhV2l0aFBERkluc2lkZVJlY3Q6KE5TUmVjdClyZWN0OwoKCi0g
KHZvaWQpcHJpbnQ6KGlkKXNlbmRlcjsKCgotIChCT09MKWtub3dzUGFnZVJhbmdlOihOU1Jhbmdl
UG9pbnRlcilyYW5nZTsKLSAoQ0dGbG9hdCloZWlnaHRBZGp1c3RMaW1pdDsKLSAoQ0dGbG9hdCl3
aWR0aEFkanVzdExpbWl0OwotICh2b2lkKWFkanVzdFBhZ2VXaWR0aE5ldzooQ0dGbG9hdCAqKW5l
d1JpZ2h0IGxlZnQ6KENHRmxvYXQpb2xkTGVmdCByaWdodDooQ0dGbG9hdClvbGRSaWdodCBsaW1p
dDooQ0dGbG9hdClyaWdodExpbWl0OwotICh2b2lkKWFkanVzdFBhZ2VIZWlnaHROZXc6KENHRmxv
YXQgKiluZXdCb3R0b20gdG9wOihDR0Zsb2F0KW9sZFRvcCBib3R0b206KENHRmxvYXQpb2xkQm90
dG9tIGxpbWl0OihDR0Zsb2F0KWJvdHRvbUxpbWl0OwotIChOU1JlY3QpcmVjdEZvclBhZ2U6KE5T
SW50ZWdlcilwYWdlOwotIChOU1BvaW50KWxvY2F0aW9uT2ZQcmludFJlY3Q6KE5TUmVjdClhUmVj
dDsKLSAodm9pZClkcmF3UGFnZUJvcmRlcldpdGhTaXplOihOU1NpemUpYm9yZGVyU2l6ZTsKCi0g
KE5TQXR0cmlidXRlZFN0cmluZyAqKXBhZ2VIZWFkZXI7Ci0gKE5TQXR0cmlidXRlZFN0cmluZyAq
KXBhZ2VGb290ZXI7CgoKCi0gKHZvaWQpZHJhd1NoZWV0Qm9yZGVyV2l0aFNpemU6KE5TU2l6ZSli
b3JkZXJTaXplOwoKCgotIChOU1N0cmluZyAqKXByaW50Sm9iVGl0bGU7Ci0gKHZvaWQpYmVnaW5E
b2N1bWVudDsKLSAodm9pZCllbmREb2N1bWVudDsKCi0gKHZvaWQpYmVnaW5QYWdlSW5SZWN0OihO
U1JlY3QpYVJlY3QgYXRQbGFjZW1lbnQ6KE5TUG9pbnQpbG9jYXRpb247Ci0gKHZvaWQpZW5kUGFn
ZTsKQGVuZAoKCkBpbnRlcmZhY2UgTlNWaWV3KE5TRHJhZykKLSAodm9pZClkcmFnSW1hZ2U6KE5T
SW1hZ2UgKilhbkltYWdlIGF0OihOU1BvaW50KXZpZXdMb2NhdGlvbiBvZmZzZXQ6KE5TU2l6ZSlp
bml0aWFsT2Zmc2V0IGV2ZW50OihOU0V2ZW50ICopZXZlbnQgcGFzdGVib2FyZDooTlNQYXN0ZWJv
YXJkICopcGJvYXJkIHNvdXJjZTooaWQpc291cmNlT2JqIHNsaWRlQmFjazooQk9PTClzbGlkZUZs
YWc7CgoKLSAoTlNBcnJheSAqKXJlZ2lzdGVyZWREcmFnZ2VkVHlwZXM7CgotICh2b2lkKXJlZ2lz
dGVyRm9yRHJhZ2dlZFR5cGVzOihOU0FycmF5ICopbmV3VHlwZXM7Ci0gKHZvaWQpdW5yZWdpc3Rl
ckRyYWdnZWRUeXBlczsKCi0gKEJPT0wpZHJhZ0ZpbGU6KE5TU3RyaW5nICopZmlsZW5hbWUgZnJv
bVJlY3Q6KE5TUmVjdClyZWN0IHNsaWRlQmFjazooQk9PTClhRmxhZyBldmVudDooTlNFdmVudCAq
KWV2ZW50OwoKLSAoQk9PTClkcmFnUHJvbWlzZWRGaWxlc09mVHlwZXM6KE5TQXJyYXkgKil0eXBl
QXJyYXkgZnJvbVJlY3Q6KE5TUmVjdClyZWN0IHNvdXJjZTooaWQpc291cmNlT2JqZWN0IHNsaWRl
QmFjazooQk9PTClhRmxhZyBldmVudDooTlNFdmVudCAqKWV2ZW50OwoKQGVuZAoKCkBpbnRlcmZh
Y2UgTlNWaWV3IChOU0Z1bGxTY3JlZW5Nb2RlKQotIChCT09MKWVudGVyRnVsbFNjcmVlbk1vZGU6
KE5TU2NyZWVuICopc2NyZWVuIHdpdGhPcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zOwot
ICh2b2lkKWV4aXRGdWxsU2NyZWVuTW9kZVdpdGhPcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRp
b25zOwotIChCT09MKWlzSW5GdWxsU2NyZWVuTW9kZTsKQGVuZAoKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKiBjb25zdCBOU0Z1bGxTY3JlZW5Nb2RlQWxsU2NyZWVuczsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IE5TRnVsbFNjcmVlbk1vZGVTZXR0aW5nOwpleHRlcm4gIkMiIE5TU3RyaW5nICog
Y29uc3QgTlNGdWxsU2NyZWVuTW9kZVdpbmRvd0xldmVsOwpleHRlcm4gIkMiIE5TU3RyaW5nICog
Y29uc3QgTlNGdWxsU2NyZWVuTW9kZUFwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9uczsKCgpA
aW50ZXJmYWNlIE5TVmlldyhOU0RlZmluaXRpb24pCgoKCgoKCi0gKHZvaWQpc2hvd0RlZmluaXRp
b25Gb3JBdHRyaWJ1dGVkU3RyaW5nOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilhdHRyU3RyaW5nIGF0
UG9pbnQ6KE5TUG9pbnQpdGV4dEJhc2VsaW5lT3JpZ2luIDsKIyA1MTIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1ZpZXcuaCIgMwotICh2b2lk
KXNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICop
YXR0clN0cmluZyByYW5nZTooTlNSYW5nZSl0YXJnZXRSYW5nZSBvcHRpb25zOihOU0RpY3Rpb25h
cnkgKilvcHRpb25zIGJhc2VsaW5lT3JpZ2luUHJvdmlkZXI6KE5TUG9pbnQgKF4pKE5TUmFuZ2Ug
YWRqdXN0ZWRSYW5nZSkpb3JpZ2luUHJvdmlkZXIgOwoKCkBlbmQKCgoKCmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBOU0RlZmluaXRpb25QcmVzZW50YXRpb25UeXBlS2V5IDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqIGNvbnN0IE5TRGVmaW5pdGlvblByZXNlbnRhdGlvblR5cGVPdmVybGF5IDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TRGVmaW5pdGlvblByZXNlbnRhdGlvblR5cGVE
aWN0aW9uYXJ5QXBwbGljYXRpb24gOwoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNWaWV3RnJh
bWVEaWRDaGFuZ2VOb3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVmlld0ZvY3Vz
RGlkQ2hhbmdlTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1ZpZXdCb3VuZHNE
aWRDaGFuZ2VOb3RpZmljYXRpb247CgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1ZpZXdHbG9iYWxG
cmFtZURpZENoYW5nZU5vdGlmaWNhdGlvbjsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1ZpZXdE
aWRVcGRhdGVUcmFja2luZ0FyZWFzTm90aWZpY2F0aW9uIDsKIyA5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNDb250cm9sLmgiIDIgMwojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1Rl
eHQuaCIgMSAzCiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29y
ay9IZWFkZXJzL05TVGV4dC5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yay9IZWFkZXJzL05TU3BlbGxQcm90b2NvbC5oIiAxIDMKIyAxNCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU3BlbGxQcm90
b2NvbC5oIiAzCkBwcm90b2NvbCBOU0NoYW5nZVNwZWxsaW5nCi0gKHZvaWQpY2hhbmdlU3BlbGxp
bmc6KGlkKXNlbmRlcjsKQGVuZAoKCgoKCkBwcm90b2NvbCBOU0lnbm9yZU1pc3NwZWxsZWRXb3Jk
cwotICh2b2lkKWlnbm9yZVNwZWxsaW5nOihpZClzZW5kZXI7CkBlbmQKIyAxMCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGV4dC5oIiAyIDMK
CkBjbGFzcyBOU0NvbG9yLCBOU0ZvbnQsIE5TTm90aWZpY2F0aW9uOwpAcHJvdG9jb2wgTlNUZXh0
RGVsZWdhdGU7CgoKZW51bSB7CiAgICBOU0VudGVyQ2hhcmFjdGVyID0gMHgwMDAzLAogICAgTlNC
YWNrc3BhY2VDaGFyYWN0ZXIgPSAweDAwMDgsCiAgICBOU1RhYkNoYXJhY3RlciA9IDB4MDAwOSwK
ICAgIE5TTmV3bGluZUNoYXJhY3RlciA9IDB4MDAwYSwKICAgIE5TRm9ybUZlZWRDaGFyYWN0ZXIg
PSAweDAwMGMsCiAgICBOU0NhcnJpYWdlUmV0dXJuQ2hhcmFjdGVyID0gMHgwMDBkLAogICAgTlNC
YWNrVGFiQ2hhcmFjdGVyID0gMHgwMDE5LAogICAgTlNEZWxldGVDaGFyYWN0ZXIgPSAweDAwN2Ys
CiAgICBOU0xpbmVTZXBhcmF0b3JDaGFyYWN0ZXIgPSAweDIwMjgsCiAgICBOU1BhcmFncmFwaFNl
cGFyYXRvckNoYXJhY3RlciA9IDB4MjAyOQp9OwoKCmVudW0gewogICAgTlNMZWZ0VGV4dEFsaWdu
bWVudCA9IDAsCiAgICBOU1JpZ2h0VGV4dEFsaWdubWVudCA9IDEsCiAgICBOU0NlbnRlclRleHRB
bGlnbm1lbnQgPSAyLAogICAgTlNKdXN0aWZpZWRUZXh0QWxpZ25tZW50ID0gMywKICAgIE5TTmF0
dXJhbFRleHRBbGlnbm1lbnQgPSA0Cn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1RleHRBbGlnbm1l
bnQ7CgoKZW51bSB7CgogICAgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCA9IC0xLAoKICAgIE5T
V3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID0gMCwKICAgIE5TV3JpdGluZ0RpcmVjdGlvblJp
Z2h0VG9MZWZ0ID0gMQp9Owp0eXBlZGVmIE5TSW50ZWdlciBOU1dyaXRpbmdEaXJlY3Rpb247CgoK
ZW51bSB7CiAgICBOU1RleHRXcml0aW5nRGlyZWN0aW9uRW1iZWRkaW5nID0gKDAgPDwgMSksCiAg
ICBOU1RleHRXcml0aW5nRGlyZWN0aW9uT3ZlcnJpZGUgPSAoMSA8PCAxKQp9OwoKCgplbnVtIHsK
ICAgIE5TSWxsZWdhbFRleHRNb3ZlbWVudCA9IDAsCiAgICBOU1JldHVyblRleHRNb3ZlbWVudCA9
IDB4MTAsCiAgICBOU1RhYlRleHRNb3ZlbWVudCA9IDB4MTEsCiAgICBOU0JhY2t0YWJUZXh0TW92
ZW1lbnQgPSAweDEyLAogICAgTlNMZWZ0VGV4dE1vdmVtZW50ID0gMHgxMywKICAgIE5TUmlnaHRU
ZXh0TW92ZW1lbnQgPSAweDE0LAogICAgTlNVcFRleHRNb3ZlbWVudCA9IDB4MTUsCiAgICBOU0Rv
d25UZXh0TW92ZW1lbnQgPSAweDE2CgogICAgLAogICAgTlNDYW5jZWxUZXh0TW92ZW1lbnQgPSAw
eDE3LAogICAgTlNPdGhlclRleHRNb3ZlbWVudCA9IDAKCn07CgpAaW50ZXJmYWNlIE5TVGV4dCA6
IE5TVmlldyA8TlNDaGFuZ2VTcGVsbGluZywgTlNJZ25vcmVNaXNzcGVsbGVkV29yZHM+IHsKCiAg
ICBpZCBfaXZhcnM7Cn0KCi0gKE5TU3RyaW5nICopc3RyaW5nOwotICh2b2lkKXNldFN0cmluZzoo
TlNTdHJpbmcgKilzdHJpbmc7CgotICh2b2lkKXJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTooTlNS
YW5nZSlyYW5nZSB3aXRoU3RyaW5nOihOU1N0cmluZyAqKWFTdHJpbmc7Ci0gKHZvaWQpcmVwbGFj
ZUNoYXJhY3RlcnNJblJhbmdlOihOU1JhbmdlKXJhbmdlIHdpdGhSVEY6KE5TRGF0YSAqKXJ0ZkRh
dGE7Ci0gKHZvaWQpcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOihOU1JhbmdlKXJhbmdlIHdpdGhS
VEZEOihOU0RhdGEgKilydGZkRGF0YTsKCi0gKE5TRGF0YSAqKVJURkZyb21SYW5nZTooTlNSYW5n
ZSlyYW5nZTsKLSAoTlNEYXRhICopUlRGREZyb21SYW5nZTooTlNSYW5nZSlyYW5nZTsKCi0gKEJP
T0wpd3JpdGVSVEZEVG9GaWxlOihOU1N0cmluZyAqKXBhdGggYXRvbWljYWxseTooQk9PTClmbGFn
OwotIChCT09MKXJlYWRSVEZERnJvbUZpbGU6KE5TU3RyaW5nICopcGF0aDsKCi0gKGlkIDxOU1Rl
eHREZWxlZ2F0ZT4pZGVsZWdhdGU7Ci0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxOU1RleHREZWxl
Z2F0ZT4pYW5PYmplY3Q7CgotIChCT09MKWlzRWRpdGFibGU7Ci0gKHZvaWQpc2V0RWRpdGFibGU6
KEJPT0wpZmxhZzsKLSAoQk9PTClpc1NlbGVjdGFibGU7Ci0gKHZvaWQpc2V0U2VsZWN0YWJsZToo
Qk9PTClmbGFnOwotIChCT09MKWlzUmljaFRleHQ7Ci0gKHZvaWQpc2V0UmljaFRleHQ6KEJPT0wp
ZmxhZzsKLSAoQk9PTClpbXBvcnRzR3JhcGhpY3M7Ci0gKHZvaWQpc2V0SW1wb3J0c0dyYXBoaWNz
OihCT09MKWZsYWc7Ci0gKEJPT0wpaXNGaWVsZEVkaXRvcjsKLSAodm9pZClzZXRGaWVsZEVkaXRv
cjooQk9PTClmbGFnOwotIChCT09MKXVzZXNGb250UGFuZWw7Ci0gKHZvaWQpc2V0VXNlc0ZvbnRQ
YW5lbDooQk9PTClmbGFnOwotIChCT09MKWRyYXdzQmFja2dyb3VuZDsKLSAodm9pZClzZXREcmF3
c0JhY2tncm91bmQ6KEJPT0wpZmxhZzsKLSAoTlNDb2xvciAqKWJhY2tncm91bmRDb2xvcjsKLSAo
dm9pZClzZXRCYWNrZ3JvdW5kQ29sb3I6KE5TQ29sb3IgKiljb2xvcjsKCi0gKEJPT0wpaXNSdWxl
clZpc2libGU7CgotIChOU1JhbmdlKXNlbGVjdGVkUmFuZ2U7Ci0gKHZvaWQpc2V0U2VsZWN0ZWRS
YW5nZTooTlNSYW5nZSlyYW5nZTsKCi0gKHZvaWQpc2Nyb2xsUmFuZ2VUb1Zpc2libGU6KE5TUmFu
Z2UpcmFuZ2U7CgotICh2b2lkKXNldEZvbnQ6KE5TRm9udCAqKW9iajsKLSAoTlNGb250ICopZm9u
dDsKLSAodm9pZClzZXRUZXh0Q29sb3I6KE5TQ29sb3IgKiljb2xvcjsKLSAoTlNDb2xvciAqKXRl
eHRDb2xvcjsKLSAoTlNUZXh0QWxpZ25tZW50KWFsaWdubWVudDsKLSAodm9pZClzZXRBbGlnbm1l
bnQ6KE5TVGV4dEFsaWdubWVudCltb2RlOwoKLSAoTlNXcml0aW5nRGlyZWN0aW9uKWJhc2VXcml0
aW5nRGlyZWN0aW9uOwotICh2b2lkKXNldEJhc2VXcml0aW5nRGlyZWN0aW9uOihOU1dyaXRpbmdE
aXJlY3Rpb24pd3JpdGluZ0RpcmVjdGlvbjsKCgotICh2b2lkKXNldFRleHRDb2xvcjooTlNDb2xv
ciAqKWNvbG9yIHJhbmdlOihOU1JhbmdlKXJhbmdlOwotICh2b2lkKXNldEZvbnQ6KE5TRm9udCAq
KWZvbnQgcmFuZ2U6KE5TUmFuZ2UpcmFuZ2U7CgotIChOU1NpemUpbWF4U2l6ZTsKLSAodm9pZClz
ZXRNYXhTaXplOihOU1NpemUpbmV3TWF4U2l6ZTsKLSAoTlNTaXplKW1pblNpemU7Ci0gKHZvaWQp
c2V0TWluU2l6ZTooTlNTaXplKW5ld01pblNpemU7CgotIChCT09MKWlzSG9yaXpvbnRhbGx5UmVz
aXphYmxlOwotICh2b2lkKXNldEhvcml6b250YWxseVJlc2l6YWJsZTooQk9PTClmbGFnOwotIChC
T09MKWlzVmVydGljYWxseVJlc2l6YWJsZTsKLSAodm9pZClzZXRWZXJ0aWNhbGx5UmVzaXphYmxl
OihCT09MKWZsYWc7CgotICh2b2lkKXNpemVUb0ZpdDsKCi0gKHZvaWQpY29weTooaWQpc2VuZGVy
OwotICh2b2lkKWNvcHlGb250OihpZClzZW5kZXI7Ci0gKHZvaWQpY29weVJ1bGVyOihpZClzZW5k
ZXI7Ci0gKHZvaWQpY3V0OihpZClzZW5kZXI7Ci0gKHZvaWQpZGVsZXRlOihpZClzZW5kZXI7Ci0g
KHZvaWQpcGFzdGU6KGlkKXNlbmRlcjsKLSAodm9pZClwYXN0ZUZvbnQ6KGlkKXNlbmRlcjsKLSAo
dm9pZClwYXN0ZVJ1bGVyOihpZClzZW5kZXI7Ci0gKHZvaWQpc2VsZWN0QWxsOihpZClzZW5kZXI7
Ci0gKHZvaWQpY2hhbmdlRm9udDooaWQpc2VuZGVyOwotICh2b2lkKWFsaWduTGVmdDooaWQpc2Vu
ZGVyOwotICh2b2lkKWFsaWduUmlnaHQ6KGlkKXNlbmRlcjsKLSAodm9pZClhbGlnbkNlbnRlcjoo
aWQpc2VuZGVyOwotICh2b2lkKXN1YnNjcmlwdDooaWQpc2VuZGVyOwotICh2b2lkKXN1cGVyc2Ny
aXB0OihpZClzZW5kZXI7Ci0gKHZvaWQpdW5kZXJsaW5lOihpZClzZW5kZXI7Ci0gKHZvaWQpdW5z
Y3JpcHQ6KGlkKXNlbmRlcjsKLSAodm9pZClzaG93R3Vlc3NQYW5lbDooaWQpc2VuZGVyOwotICh2
b2lkKWNoZWNrU3BlbGxpbmc6KGlkKXNlbmRlcjsKLSAodm9pZCl0b2dnbGVSdWxlcjooaWQpc2Vu
ZGVyOwoKQGVuZAoKQHByb3RvY29sIE5TVGV4dERlbGVnYXRlIDxOU09iamVjdD4KQG9wdGlvbmFs
Ci0gKEJPT0wpdGV4dFNob3VsZEJlZ2luRWRpdGluZzooTlNUZXh0ICopdGV4dE9iamVjdDsKLSAo
Qk9PTCl0ZXh0U2hvdWxkRW5kRWRpdGluZzooTlNUZXh0ICopdGV4dE9iamVjdDsKLSAodm9pZCl0
ZXh0RGlkQmVnaW5FZGl0aW5nOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLSAodm9p
ZCl0ZXh0RGlkRW5kRWRpdGluZzooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0gKHZv
aWQpdGV4dERpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CkBlbmQKCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICpOU1RleHREaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb247CmV4
dGVybiAiQyIgTlNTdHJpbmcgKk5TVGV4dERpZEVuZEVkaXRpbmdOb3RpZmljYXRpb247CmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TVGV4dERpZENoYW5nZU5vdGlmaWNhdGlvbjsKIyAxMCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQ29udHJvbC5o
IiAyIDMKCkBjbGFzcyBOU0NlbGwsIE5TRm9udCwgTlNUZXh0VmlldywgTlNOb3RpZmljYXRpb24s
IE5TQXR0cmlidXRlZFN0cmluZywgTlNGb3JtYXR0ZXI7CgpAaW50ZXJmYWNlIE5TQ29udHJvbCA6
IE5TVmlldwp7CgogICAgTlNJbnRlZ2VyIF90YWc7CiAgICBpZCBfY2VsbDsKICAgIHN0cnVjdCBf
X2NvbkZsYWdzIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZW5hYmxlZDoxOwogICAgICAgIHVuc2ln
bmVkIGludCBpZ25vcmVNdWx0aUNsaWNrOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGNhbGNTaXpl
OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGRyYXdpbmdBbmNlc3RvcjoxOwogICAgICAgIHVuc2ln
bmVkIGludCBpYlJlc2VydmVkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHVwZGF0ZUNlbGxGb2N1
czoxOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZDoyNjsKICAgIH0gX2NvbkZsYWdzOwp9
CgorICh2b2lkKXNldENlbGxDbGFzczooQ2xhc3MpZmFjdG9yeUlkOworIChDbGFzcyljZWxsQ2xh
c3M7CgotIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0OwotICh2b2lkKXNpemVU
b0ZpdDsKLSAodm9pZCljYWxjU2l6ZTsKLSAoaWQpY2VsbDsKLSAodm9pZClzZXRDZWxsOihOU0Nl
bGwgKilhQ2VsbDsKLSAoaWQpc2VsZWN0ZWRDZWxsOwotIChpZCl0YXJnZXQ7Ci0gKHZvaWQpc2V0
VGFyZ2V0OihpZClhbk9iamVjdDsKLSAoU0VMKWFjdGlvbjsKLSAodm9pZClzZXRBY3Rpb246KFNF
TClhU2VsZWN0b3I7Ci0gKE5TSW50ZWdlcil0YWc7Ci0gKHZvaWQpc2V0VGFnOihOU0ludGVnZXIp
YW5JbnQ7Ci0gKE5TSW50ZWdlcilzZWxlY3RlZFRhZzsKLSAodm9pZClzZXRJZ25vcmVzTXVsdGlD
bGljazooQk9PTClmbGFnOwotIChCT09MKWlnbm9yZXNNdWx0aUNsaWNrOwotIChOU0ludGVnZXIp
c2VuZEFjdGlvbk9uOihOU0ludGVnZXIpbWFzazsKLSAoQk9PTClpc0NvbnRpbnVvdXM7Ci0gKHZv
aWQpc2V0Q29udGludW91czooQk9PTClmbGFnOwotIChCT09MKWlzRW5hYmxlZDsKLSAodm9pZClz
ZXRFbmFibGVkOihCT09MKWZsYWc7Ci0gKE5TVGV4dEFsaWdubWVudClhbGlnbm1lbnQ7Ci0gKHZv
aWQpc2V0QWxpZ25tZW50OihOU1RleHRBbGlnbm1lbnQpbW9kZTsKLSAoTlNGb250ICopZm9udDsK
LSAodm9pZClzZXRGb250OihOU0ZvbnQgKilmb250T2JqOwotICh2b2lkKXNldEZvcm1hdHRlcjoo
TlNGb3JtYXR0ZXIgKiluZXdGb3JtYXR0ZXI7Ci0gKGlkKWZvcm1hdHRlcjsKLSAodm9pZClzZXRP
YmplY3RWYWx1ZTooaWQ8TlNDb3B5aW5nPilvYmo7Ci0gKHZvaWQpc2V0U3RyaW5nVmFsdWU6KE5T
U3RyaW5nICopYVN0cmluZzsKLSAodm9pZClzZXRJbnRWYWx1ZTooaW50KWFuSW50OwotICh2b2lk
KXNldEZsb2F0VmFsdWU6KGZsb2F0KWFGbG9hdDsKLSAodm9pZClzZXREb3VibGVWYWx1ZTooZG91
YmxlKWFEb3VibGU7Ci0gKGlkKW9iamVjdFZhbHVlOwotIChOU1N0cmluZyAqKXN0cmluZ1ZhbHVl
OwotIChpbnQpaW50VmFsdWU7Ci0gKGZsb2F0KWZsb2F0VmFsdWU7Ci0gKGRvdWJsZSlkb3VibGVW
YWx1ZTsKLSAodm9pZClzZXROZWVkc0Rpc3BsYXk7Ci0gKHZvaWQpdXBkYXRlQ2VsbDooTlNDZWxs
ICopYUNlbGw7Ci0gKHZvaWQpdXBkYXRlQ2VsbEluc2lkZTooTlNDZWxsICopYUNlbGw7Ci0gKHZv
aWQpZHJhd0NlbGxJbnNpZGU6KE5TQ2VsbCAqKWFDZWxsOwotICh2b2lkKWRyYXdDZWxsOihOU0Nl
bGwgKilhQ2VsbDsKLSAodm9pZClzZWxlY3RDZWxsOihOU0NlbGwgKilhQ2VsbDsKCi0gKEJPT0wp
c2VuZEFjdGlvbjooU0VMKXRoZUFjdGlvbiB0bzooaWQpdGhlVGFyZ2V0OwotICh2b2lkKXRha2VJ
bnRWYWx1ZUZyb206KGlkKXNlbmRlcjsKLSAodm9pZCl0YWtlRmxvYXRWYWx1ZUZyb206KGlkKXNl
bmRlcjsKLSAodm9pZCl0YWtlRG91YmxlVmFsdWVGcm9tOihpZClzZW5kZXI7Ci0gKHZvaWQpdGFr
ZVN0cmluZ1ZhbHVlRnJvbTooaWQpc2VuZGVyOwotICh2b2lkKXRha2VPYmplY3RWYWx1ZUZyb206
KGlkKXNlbmRlcjsKLSAoTlNUZXh0ICopY3VycmVudEVkaXRvcjsKLSAoQk9PTClhYm9ydEVkaXRp
bmc7Ci0gKHZvaWQpdmFsaWRhdGVFZGl0aW5nOwotICh2b2lkKW1vdXNlRG93bjooTlNFdmVudCAq
KXRoZUV2ZW50OwoKCi0gKE5TV3JpdGluZ0RpcmVjdGlvbiliYXNlV3JpdGluZ0RpcmVjdGlvbjsK
LSAodm9pZClzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbjooTlNXcml0aW5nRGlyZWN0aW9uKXdyaXRp
bmdEaXJlY3Rpb247CgoKCi0gKE5TSW50ZWdlcilpbnRlZ2VyVmFsdWU7Ci0gKHZvaWQpc2V0SW50
ZWdlclZhbHVlOihOU0ludGVnZXIpYW5JbnRlZ2VyOwotICh2b2lkKXRha2VJbnRlZ2VyVmFsdWVG
cm9tOihpZClzZW5kZXI7CgoKQGVuZAoKQGludGVyZmFjZSBOU0NvbnRyb2woTlNLZXlib2FyZFVJ
KQotICh2b2lkKXBlcmZvcm1DbGljazpzZW5kZXI7Ci0gKHZvaWQpc2V0UmVmdXNlc0ZpcnN0UmVz
cG9uZGVyOihCT09MKWZsYWc7Ci0gKEJPT0wpcmVmdXNlc0ZpcnN0UmVzcG9uZGVyOwpAZW5kCgpA
aW50ZXJmYWNlIE5TT2JqZWN0KE5TQ29udHJvbFN1YmNsYXNzTm90aWZpY2F0aW9ucykKCi0gKHZv
aWQpY29udHJvbFRleHREaWRCZWdpbkVkaXRpbmc6KE5TTm90aWZpY2F0aW9uICopb2JqOwotICh2
b2lkKWNvbnRyb2xUZXh0RGlkRW5kRWRpdGluZzooTlNOb3RpZmljYXRpb24gKilvYmo7Ci0gKHZv
aWQpY29udHJvbFRleHREaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopb2JqOwoKQGVuZAoKCgpA
cHJvdG9jb2wgTlNDb250cm9sVGV4dEVkaXRpbmdEZWxlZ2F0ZSA8TlNPYmplY3Q+CkBvcHRpb25h
bAoKCgotIChCT09MKWNvbnRyb2w6KE5TQ29udHJvbCAqKWNvbnRyb2wgdGV4dFNob3VsZEJlZ2lu
RWRpdGluZzooTlNUZXh0ICopZmllbGRFZGl0b3I7Ci0gKEJPT0wpY29udHJvbDooTlNDb250cm9s
ICopY29udHJvbCB0ZXh0U2hvdWxkRW5kRWRpdGluZzooTlNUZXh0ICopZmllbGRFZGl0b3I7Ci0g
KEJPT0wpY29udHJvbDooTlNDb250cm9sICopY29udHJvbCBkaWRGYWlsVG9Gb3JtYXRTdHJpbmc6
KE5TU3RyaW5nICopc3RyaW5nIGVycm9yRGVzY3JpcHRpb246KE5TU3RyaW5nICopZXJyb3I7Ci0g
KHZvaWQpY29udHJvbDooTlNDb250cm9sICopY29udHJvbCBkaWRGYWlsVG9WYWxpZGF0ZVBhcnRp
YWxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGVycm9yRGVzY3JpcHRpb246KE5TU3RyaW5nICop
ZXJyb3I7Ci0gKEJPT0wpY29udHJvbDooTlNDb250cm9sICopY29udHJvbCBpc1ZhbGlkT2JqZWN0
OihpZClvYmo7CgotIChCT09MKWNvbnRyb2w6KE5TQ29udHJvbCAqKWNvbnRyb2wgdGV4dFZpZXc6
KE5TVGV4dFZpZXcgKil0ZXh0VmlldyBkb0NvbW1hbmRCeVNlbGVjdG9yOihTRUwpY29tbWFuZFNl
bGVjdG9yOwoKLSAoTlNBcnJheSAqKWNvbnRyb2w6KE5TQ29udHJvbCAqKWNvbnRyb2wgdGV4dFZp
ZXc6KE5TVGV4dFZpZXcgKil0ZXh0VmlldyBjb21wbGV0aW9uczooTlNBcnJheSAqKXdvcmRzIGZv
clBhcnRpYWxXb3JkUmFuZ2U6KE5TUmFuZ2UpY2hhclJhbmdlIGluZGV4T2ZTZWxlY3RlZEl0ZW06
KE5TSW50ZWdlciAqKWluZGV4OwoKQGVuZAoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQ29udHJv
bFRleHREaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5T
Q29udHJvbFRleHREaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU0NvbnRyb2xUZXh0RGlkQ2hhbmdlTm90aWZpY2F0aW9uOwoKQGludGVyZmFjZSBOU0NvbnRy
b2woTlNDb250cm9sQXR0cmlidXRlZFN0cmluZ01ldGhvZHMpCi0gKE5TQXR0cmlidXRlZFN0cmlu
ZyAqKWF0dHJpYnV0ZWRTdHJpbmdWYWx1ZTsKLSAodm9pZClzZXRBdHRyaWJ1dGVkU3RyaW5nVmFs
dWU6KE5TQXR0cmlidXRlZFN0cmluZyAqKW9iajsKQGVuZAoKQGludGVyZmFjZSBOU0NvbnRyb2wg
KE5TRGVwcmVjYXRlZCkKCgotICh2b2lkKXNldEZsb2F0aW5nUG9pbnRGb3JtYXQ6KEJPT0wpYXV0
b1JhbmdlIGxlZnQ6KE5TVUludGVnZXIpbGVmdERpZ2l0cyByaWdodDooTlNVSW50ZWdlcilyaWdo
dERpZ2l0cyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgpAZW5kCiMgOSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQnV0dG9uLmgiIDIg
MwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9OU0J1dHRvbkNlbGwuaCIgMSAzCgoKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0FjdGlvbkNlbGwuaCIgMSAzCgoKCgoKCgoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9O
U0NlbGwuaCIgMSAzCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9OU0NlbGwuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1BhcmFncmFwaFN0eWxlLmgiIDEgMwojIDEyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNQYXJh
Z3JhcGhTdHlsZS5oIiAzCmVudW0gewogICAgTlNMZWZ0VGFiU3RvcFR5cGUgPSAwLAogICAgTlNS
aWdodFRhYlN0b3BUeXBlLAogICAgTlNDZW50ZXJUYWJTdG9wVHlwZSwKICAgIE5TRGVjaW1hbFRh
YlN0b3BUeXBlCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1RleHRUYWJUeXBlOwoKZW51bSB7CiAg
ICBOU0xpbmVCcmVha0J5V29yZFdyYXBwaW5nID0gMCwKICAgIE5TTGluZUJyZWFrQnlDaGFyV3Jh
cHBpbmcsCiAgICBOU0xpbmVCcmVha0J5Q2xpcHBpbmcsCiAgICBOU0xpbmVCcmVha0J5VHJ1bmNh
dGluZ0hlYWQsCiAgICBOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWwsCiAgICBOU0xpbmVCcmVh
a0J5VHJ1bmNhdGluZ01pZGRsZQp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNMaW5lQnJlYWtNb2Rl
OwoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUYWJDb2x1bW5UZXJtaW5hdG9yc0F0dHJpYnV0
ZU5hbWUgOwoKCkBpbnRlcmZhY2UgTlNUZXh0VGFiIDogTlNPYmplY3QgPE5TQ29weWluZywgTlND
b2Rpbmc+IHsKCiAgICBzdHJ1Y3QgewogTlNUZXh0QWxpZ25tZW50IGFsaWdubWVudDo0OwogICAg
ICAgIHVuc2lnbmVkIGludCByZWZDb3VudDoyNDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW51c2Vk
OjQ7CgogICAgICAgIHVuc2lnbmVkIGludCA6MzI7CgogICAgfSBfZmxhZ3M7CiAgICBDR0Zsb2F0
IF9sb2NhdGlvbjsKICAgIGlkIF9yZXNlcnZlZDsKfQojIDY3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNQYXJhZ3JhcGhTdHlsZS5oIiAzCi0g
KGlkKWluaXRXaXRoVGV4dEFsaWdubWVudDooTlNUZXh0QWxpZ25tZW50KWFsaWdubWVudCBsb2Nh
dGlvbjooQ0dGbG9hdClsb2Mgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9uczsKCi0gKE5T
VGV4dEFsaWdubWVudClhbGlnbm1lbnQ7Ci0gKE5TRGljdGlvbmFyeSAqKW9wdGlvbnM7CgotIChp
ZClpbml0V2l0aFR5cGU6KE5TVGV4dFRhYlR5cGUpdHlwZSBsb2NhdGlvbjooQ0dGbG9hdClsb2M7
Ci0gKENHRmxvYXQpbG9jYXRpb247Ci0gKE5TVGV4dFRhYlR5cGUpdGFiU3RvcFR5cGU7CkBlbmQK
CkBpbnRlcmZhY2UgTlNQYXJhZ3JhcGhTdHlsZSA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TTXV0
YWJsZUNvcHlpbmcsIE5TQ29kaW5nPiB7CgogICAgQ0dGbG9hdCBfbGluZVNwYWNpbmc7CiAgICBD
R0Zsb2F0IF9wYXJhZ3JhcGhTcGFjaW5nOwogICAgQ0dGbG9hdCBfaGVhZEluZGVudDsKICAgIENH
RmxvYXQgX3RhaWxJbmRlbnQ7CiAgICBDR0Zsb2F0IF9maXJzdExpbmVIZWFkSW5kZW50OwogICAg
Q0dGbG9hdCBfbWluaW11bUxpbmVIZWlnaHQ7CiAgICBDR0Zsb2F0IF9tYXhpbXVtTGluZUhlaWdo
dDsKICAgIE5TQXJyYXkgKl90YWJTdG9wczsKICAgIHN0cnVjdCB7CiBOU1RleHRBbGlnbm1lbnQg
YWxpZ25tZW50OjQ7CiAgICAgICAgTlNMaW5lQnJlYWtNb2RlIGxpbmVCcmVha01vZGU6NDsKICAg
ICAgICB1bnNpZ25lZCBpbnQgdGFiU3RvcHNJc011dGFibGU6MTsKICAgICAgICB1bnNpZ25lZCBp
bnQgaXNOYXR1cmFsRGlyZWN0aW9uOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHJpZ2h0VG9MZWZ0
RGlyZWN0aW9uOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGZpeGVkTXVsdGlwbGU6MjsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcmVmQ291bnQ6MTk7CgogICAgICAgIHVuc2lnbmVkIGludCA6MzI7Cgog
ICAgfSBfZmxhZ3M7CiAgICBDR0Zsb2F0IF9kZWZhdWx0VGFiSW50ZXJ2YWw7CiAgICBpZCBfZXh0
cmFEYXRhOwp9CgorIChOU1BhcmFncmFwaFN0eWxlICopZGVmYXVsdFBhcmFncmFwaFN0eWxlOwoK
CisgKE5TV3JpdGluZ0RpcmVjdGlvbilkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkZvckxhbmd1YWdl
OihOU1N0cmluZyAqKWxhbmd1YWdlTmFtZTsKCgotIChDR0Zsb2F0KWxpbmVTcGFjaW5nOwotIChD
R0Zsb2F0KXBhcmFncmFwaFNwYWNpbmc7Ci0gKE5TVGV4dEFsaWdubWVudClhbGlnbm1lbnQ7CgoK
Ci0gKENHRmxvYXQpaGVhZEluZGVudDsKLSAoQ0dGbG9hdCl0YWlsSW5kZW50OwotIChDR0Zsb2F0
KWZpcnN0TGluZUhlYWRJbmRlbnQ7Ci0gKE5TQXJyYXkgKil0YWJTdG9wczsKCi0gKENHRmxvYXQp
bWluaW11bUxpbmVIZWlnaHQ7Ci0gKENHRmxvYXQpbWF4aW11bUxpbmVIZWlnaHQ7CgotIChOU0xp
bmVCcmVha01vZGUpbGluZUJyZWFrTW9kZTsKCgotIChOU1dyaXRpbmdEaXJlY3Rpb24pYmFzZVdy
aXRpbmdEaXJlY3Rpb247CgoKCi0gKENHRmxvYXQpbGluZUhlaWdodE11bHRpcGxlOwotIChDR0Zs
b2F0KXBhcmFncmFwaFNwYWNpbmdCZWZvcmU7Ci0gKENHRmxvYXQpZGVmYXVsdFRhYkludGVydmFs
OwoKCgotIChOU0FycmF5ICopdGV4dEJsb2NrczsKLSAoTlNBcnJheSAqKXRleHRMaXN0czsKCgoK
LSAoZmxvYXQpaHlwaGVuYXRpb25GYWN0b3I7CgoKCi0gKGZsb2F0KXRpZ2h0ZW5pbmdGYWN0b3JG
b3JUcnVuY2F0aW9uOwoKCi0gKE5TSW50ZWdlciloZWFkZXJMZXZlbDsKCgpAZW5kCgpAaW50ZXJm
YWNlIE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlIDogTlNQYXJhZ3JhcGhTdHlsZQoKLSAodm9pZClz
ZXRMaW5lU3BhY2luZzooQ0dGbG9hdClhRmxvYXQ7Ci0gKHZvaWQpc2V0UGFyYWdyYXBoU3BhY2lu
ZzooQ0dGbG9hdClhRmxvYXQ7Ci0gKHZvaWQpc2V0QWxpZ25tZW50OihOU1RleHRBbGlnbm1lbnQp
YWxpZ25tZW50OwotICh2b2lkKXNldEZpcnN0TGluZUhlYWRJbmRlbnQ6KENHRmxvYXQpYUZsb2F0
OwotICh2b2lkKXNldEhlYWRJbmRlbnQ6KENHRmxvYXQpYUZsb2F0OwotICh2b2lkKXNldFRhaWxJ
bmRlbnQ6KENHRmxvYXQpYUZsb2F0OwotICh2b2lkKXNldExpbmVCcmVha01vZGU6KE5TTGluZUJy
ZWFrTW9kZSltb2RlOwotICh2b2lkKXNldE1pbmltdW1MaW5lSGVpZ2h0OihDR0Zsb2F0KWFGbG9h
dDsKLSAodm9pZClzZXRNYXhpbXVtTGluZUhlaWdodDooQ0dGbG9hdClhRmxvYXQ7Ci0gKHZvaWQp
YWRkVGFiU3RvcDooTlNUZXh0VGFiICopYW5PYmplY3Q7Ci0gKHZvaWQpcmVtb3ZlVGFiU3RvcDoo
TlNUZXh0VGFiICopYW5PYmplY3Q7Ci0gKHZvaWQpc2V0VGFiU3RvcHM6KE5TQXJyYXkgKilhcnJh
eTsKLSAodm9pZClzZXRQYXJhZ3JhcGhTdHlsZTooTlNQYXJhZ3JhcGhTdHlsZSAqKW9iajsKCi0g
KHZvaWQpc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb246KE5TV3JpdGluZ0RpcmVjdGlvbil3cml0aW5n
RGlyZWN0aW9uOwoKCi0gKHZvaWQpc2V0TGluZUhlaWdodE11bHRpcGxlOihDR0Zsb2F0KWFGbG9h
dDsKLSAodm9pZClzZXRQYXJhZ3JhcGhTcGFjaW5nQmVmb3JlOihDR0Zsb2F0KWFGbG9hdDsKLSAo
dm9pZClzZXREZWZhdWx0VGFiSW50ZXJ2YWw6KENHRmxvYXQpYUZsb2F0OwoKCi0gKHZvaWQpc2V0
VGV4dEJsb2NrczooTlNBcnJheSAqKWFycmF5OwotICh2b2lkKXNldFRleHRMaXN0czooTlNBcnJh
eSAqKWFycmF5OwotICh2b2lkKXNldEh5cGhlbmF0aW9uRmFjdG9yOihmbG9hdClhRmFjdG9yOwot
ICh2b2lkKXNldFRpZ2h0ZW5pbmdGYWN0b3JGb3JUcnVuY2F0aW9uOihmbG9hdClhRmFjdG9yOwot
ICh2b2lkKXNldEhlYWRlckxldmVsOihOU0ludGVnZXIpbGV2ZWw7CgpAZW5kCiMgMTIgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0NlbGwuaCIg
MiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFk
ZXJzL05TQXBwbGljYXRpb24uaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0FwcGxpY2F0aW9uLmgiIDMKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNVc2VySW50ZXJm
YWNlVmFsaWRhdGlvbi5oIiAxIDMKIyA2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yay9IZWFkZXJzL05TVXNlckludGVyZmFjZVZhbGlkYXRpb24uaCIgMwpAcHJv
dG9jb2wgTlNWYWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbQotIChTRUwpYWN0aW9uOwotIChOU0lu
dGVnZXIpdGFnOwpAZW5kCgoKQHByb3RvY29sIE5TVXNlckludGVyZmFjZVZhbGlkYXRpb25zCi0g
KEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTooaWQgPE5TVmFsaWRhdGVkVXNlckludGVy
ZmFjZUl0ZW0+KWFuSXRlbTsKQGVuZAojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNBcHBsaWNhdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNSdW5uaW5nQXBw
bGljYXRpb24uaCIgMSAzCiMgMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9OU1J1bm5pbmdBcHBsaWNhdGlvbi5oIiAzCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TV29ya3NwYWNlLmgi
IDEgMwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvTlNXb3Jrc3BhY2UuaCIgMwpAY2xhc3MgTlNBcnJheSwgTlNFcnJvciwgTlNJbWFnZSwg
TlNWaWV3LCBOU05vdGlmaWNhdGlvbkNlbnRlciwgTlNVUkwsIE5TU2NyZWVuLCBOU1J1bm5pbmdB
cHBsaWNhdGlvbjsKCgp0eXBlZGVmIE5TVUludGVnZXIgTlNXb3Jrc3BhY2VMYXVuY2hPcHRpb25z
OwplbnVtIHsKICAgICBOU1dvcmtzcGFjZUxhdW5jaEFuZFByaW50ID0gMHgwMDAwMDAwMiwKICAg
ICBOU1dvcmtzcGFjZUxhdW5jaEluaGliaXRpbmdCYWNrZ3JvdW5kT25seSA9IDB4MDAwMDAwODAs
CiAgICAgTlNXb3Jrc3BhY2VMYXVuY2hXaXRob3V0QWRkaW5nVG9SZWNlbnRzID0gMHgwMDAwMDEw
MCwKICAgICBOU1dvcmtzcGFjZUxhdW5jaFdpdGhvdXRBY3RpdmF0aW9uID0gMHgwMDAwMDIwMCwK
ICAgICBOU1dvcmtzcGFjZUxhdW5jaEFzeW5jID0gMHgwMDAxMDAwMCwKICAgICBOU1dvcmtzcGFj
ZUxhdW5jaEFsbG93aW5nQ2xhc3NpY1N0YXJ0dXAgPSAweDAwMDIwMDAwLAogICAgIE5TV29ya3Nw
YWNlTGF1bmNoUHJlZmVycmluZ0NsYXNzaWMgPSAweDAwMDQwMDAwLAogICAgIE5TV29ya3NwYWNl
TGF1bmNoTmV3SW5zdGFuY2UgPSAweDAwMDgwMDAwLAogICAgIE5TV29ya3NwYWNlTGF1bmNoQW5k
SGlkZSA9IDB4MDAxMDAwMDAsCiAgICAgTlNXb3Jrc3BhY2VMYXVuY2hBbmRIaWRlT3RoZXJzID0g
MHgwMDIwMDAwMCwKCiAgICAgTlNXb3Jrc3BhY2VMYXVuY2hEZWZhdWx0ID0gTlNXb3Jrc3BhY2VM
YXVuY2hBc3luYyB8Ck5TV29ya3NwYWNlTGF1bmNoQWxsb3dpbmdDbGFzc2ljU3RhcnR1cAp9OwoK
Cgp0eXBlZGVmIE5TVUludGVnZXIgTlNXb3Jrc3BhY2VJY29uQ3JlYXRpb25PcHRpb25zOwplbnVt
IHsKICAgIE5TRXhjbHVkZVF1aWNrRHJhd0VsZW1lbnRzSWNvbkNyZWF0aW9uT3B0aW9uID0gMSA8
PCAxLAogICAgTlNFeGNsdWRlMTBfNEVsZW1lbnRzSWNvbkNyZWF0aW9uT3B0aW9uID0gMSA8PCAy
Cn07CgoKQGludGVyZmFjZSBOU1dvcmtzcGFjZSA6IE5TT2JqZWN0IHsKCiAgQHByaXZhdGUKICAg
IE5TTm90aWZpY2F0aW9uQ2VudGVyICpub3RpZmljYXRpb25DZW50ZXI7CgoKCgogICAgaWQgX3Jl
c2VydmVkV29ya3NwYWNlMTsKfQoKCisgKE5TV29ya3NwYWNlICopc2hhcmVkV29ya3NwYWNlOwoK
Ci0gKE5TTm90aWZpY2F0aW9uQ2VudGVyICopbm90aWZpY2F0aW9uQ2VudGVyOwoKCgotIChCT09M
KW9wZW5GaWxlOihOU1N0cmluZyAqKWZ1bGxQYXRoOwotIChCT09MKW9wZW5GaWxlOihOU1N0cmlu
ZyAqKWZ1bGxQYXRoIHdpdGhBcHBsaWNhdGlvbjooTlNTdHJpbmcgKilhcHBOYW1lOwotIChCT09M
KW9wZW5GaWxlOihOU1N0cmluZyAqKWZ1bGxQYXRoIHdpdGhBcHBsaWNhdGlvbjooTlNTdHJpbmcg
KilhcHBOYW1lIGFuZERlYWN0aXZhdGU6KEJPT0wpZmxhZzsKCgotIChCT09MKW9wZW5GaWxlOihO
U1N0cmluZyAqKWZ1bGxQYXRoIGZyb21JbWFnZTooTlNJbWFnZSAqKWFuSW1hZ2UgYXQ6KE5TUG9p
bnQpcG9pbnQgaW5WaWV3OihOU1ZpZXcgKilhVmlldzsKCgotIChCT09MKW9wZW5VUkw6KE5TVVJM
ICopdXJsOwoKCi0gKEJPT0wpbGF1bmNoQXBwbGljYXRpb246KE5TU3RyaW5nICopYXBwTmFtZTsK
CgoKCgotIChOU1J1bm5pbmdBcHBsaWNhdGlvbiAqKWxhdW5jaEFwcGxpY2F0aW9uQXRVUkw6KE5T
VVJMICopdXJsIG9wdGlvbnM6KE5TV29ya3NwYWNlTGF1bmNoT3B0aW9ucylvcHRpb25zIGNvbmZp
Z3VyYXRpb246KE5TRGljdGlvbmFyeSAqKWNvbmZpZ3VyYXRpb24gZXJyb3I6KE5TRXJyb3IgKiop
ZXJyb3IgOwoKCi0gKEJPT0wpbGF1bmNoQXBwbGljYXRpb246KE5TU3RyaW5nICopYXBwTmFtZSBz
aG93SWNvbjooQk9PTClzaG93SWNvbiBhdXRvbGF1bmNoOihCT09MKWF1dG9sYXVuY2g7CgoKLSAo
TlNTdHJpbmcgKilmdWxsUGF0aEZvckFwcGxpY2F0aW9uOihOU1N0cmluZyAqKWFwcE5hbWU7CgoK
LSAoQk9PTClzZWxlY3RGaWxlOihOU1N0cmluZyAqKWZ1bGxQYXRoIGluRmlsZVZpZXdlclJvb3Rl
ZEF0UGF0aDooTlNTdHJpbmcgKilyb290RnVsbFBhdGg7CgoKLSAodm9pZClhY3RpdmF0ZUZpbGVW
aWV3ZXJTZWxlY3RpbmdVUkxzOihOU0FycmF5ICopZmlsZVVSTHMgOwoKCgotIChCT09MKXNob3dT
ZWFyY2hSZXN1bHRzRm9yUXVlcnlTdHJpbmc6KE5TU3RyaW5nICopcXVlcnlTdHJpbmcgOwoKCi0g
KHZvaWQpbm90ZUZpbGVTeXN0ZW1DaGFuZ2VkOihOU1N0cmluZyAqKXBhdGg7CgoKLSAoQk9PTCln
ZXRJbmZvRm9yRmlsZTooTlNTdHJpbmcgKilmdWxsUGF0aCBhcHBsaWNhdGlvbjooTlNTdHJpbmcg
KiopYXBwTmFtZSB0eXBlOihOU1N0cmluZyAqKil0eXBlOwoKCi0gKEJPT0wpaXNGaWxlUGFja2Fn
ZUF0UGF0aDooTlNTdHJpbmcgKilmdWxsUGF0aDsKCgotIChOU0ltYWdlICopaWNvbkZvckZpbGU6
KE5TU3RyaW5nICopZnVsbFBhdGg7CgoKLSAoTlNJbWFnZSAqKWljb25Gb3JGaWxlczooTlNBcnJh
eSAqKWZ1bGxQYXRoczsKCgotIChOU0ltYWdlICopaWNvbkZvckZpbGVUeXBlOihOU1N0cmluZyAq
KWZpbGVUeXBlOwoKCgoKLSAoQk9PTClzZXRJY29uOihOU0ltYWdlICopaW1hZ2UgZm9yRmlsZToo
TlNTdHJpbmcgKilmdWxsUGF0aCBvcHRpb25zOihOU1dvcmtzcGFjZUljb25DcmVhdGlvbk9wdGlv
bnMpb3B0aW9uczsKCgoKLSAoTlNBcnJheSAqKWZpbGVMYWJlbHMgOwoKCi0gKE5TQXJyYXkgKilm
aWxlTGFiZWxDb2xvcnMgOwojIDEzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0
LmZyYW1ld29yay9IZWFkZXJzL05TV29ya3NwYWNlLmgiIDMKLSAodm9pZClyZWN5Y2xlVVJMczoo
TlNBcnJheSAqKVVSTHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGljdGlvbmFyeSAq
bmV3VVJMcywgTlNFcnJvciAqZXJyb3IpKWhhbmRsZXIgOwotICh2b2lkKWR1cGxpY2F0ZVVSTHM6
KE5TQXJyYXkgKilVUkxzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RpY3Rpb25hcnkg
Km5ld1VSTHMsIE5TRXJyb3IgKmVycm9yKSloYW5kbGVyIDsKIyAxNDQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1dvcmtzcGFjZS5oIiAzCi0g
KEJPT0wpZ2V0RmlsZVN5c3RlbUluZm9Gb3JQYXRoOihOU1N0cmluZyAqKWZ1bGxQYXRoIGlzUmVt
b3ZhYmxlOihCT09MICopcmVtb3ZhYmxlRmxhZyBpc1dyaXRhYmxlOihCT09MICopd3JpdGFibGVG
bGFnIGlzVW5tb3VudGFibGU6KEJPT0wgKil1bm1vdW50YWJsZUZsYWcgZGVzY3JpcHRpb246KE5T
U3RyaW5nICoqKWRlc2NyaXB0aW9uIHR5cGU6KE5TU3RyaW5nICoqKWZpbGVTeXN0ZW1UeXBlOwoK
CgoKLSAoQk9PTClwZXJmb3JtRmlsZU9wZXJhdGlvbjooTlNTdHJpbmcgKilvcGVyYXRpb24gc291
cmNlOihOU1N0cmluZyAqKXNvdXJjZSBkZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlv
biBmaWxlczooTlNBcnJheSAqKWZpbGVzIHRhZzooTlNJbnRlZ2VyICopdGFnOwoKCi0gKEJPT0wp
dW5tb3VudEFuZEVqZWN0RGV2aWNlQXRQYXRoOihOU1N0cmluZyAqKXBhdGg7CgoKLSAoQk9PTCl1
bm1vdW50QW5kRWplY3REZXZpY2VBdFVSTDooTlNVUkwgKil1cmwgZXJyb3I6KE5TRXJyb3IgKiop
ZXJyb3IgOwoKCi0gKE5TSW50ZWdlcilleHRlbmRQb3dlck9mZkJ5OihOU0ludGVnZXIpcmVxdWVz
dGVkOwoKCi0gKHZvaWQpaGlkZU90aGVyQXBwbGljYXRpb25zOwoKCi0gKE5TQXJyYXkgKiltb3Vu
dGVkTG9jYWxWb2x1bWVQYXRoczsKCgotIChOU0FycmF5ICopbW91bnRlZFJlbW92YWJsZU1lZGlh
OwoKCi0gKE5TVVJMICopVVJMRm9yQXBwbGljYXRpb25XaXRoQnVuZGxlSWRlbnRpZmllcjooTlNT
dHJpbmcgKilidW5kbGVJZGVudGlmaWVyIDsKCgotIChOU1VSTCAqKVVSTEZvckFwcGxpY2F0aW9u
VG9PcGVuVVJMOihOU1VSTCAqKXVybCA7CgoKCi0gKE5TU3RyaW5nICopYWJzb2x1dGVQYXRoRm9y
QXBwQnVuZGxlV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopYnVuZGxlSWRlbnRpZmllcjsKCgoK
Ci0gKEJPT0wpbGF1bmNoQXBwV2l0aEJ1bmRsZUlkZW50aWZpZXI6KE5TU3RyaW5nICopYnVuZGxl
SWRlbnRpZmllciBvcHRpb25zOihOU1dvcmtzcGFjZUxhdW5jaE9wdGlvbnMpb3B0aW9ucyBhZGRp
dGlvbmFsRXZlbnRQYXJhbURlc2NyaXB0b3I6KE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKilkZXNj
cmlwdG9yIGxhdW5jaElkZW50aWZpZXI6KE5TTnVtYmVyICoqKWlkZW50aWZpZXI7Ci0gKEJPT0wp
b3BlblVSTHM6KE5TQXJyYXkgKil1cmxzIHdpdGhBcHBCdW5kbGVJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWJ1bmRsZUlkZW50aWZpZXIgb3B0aW9uczooTlNXb3Jrc3BhY2VMYXVuY2hPcHRpb25zKW9w
dGlvbnMgYWRkaXRpb25hbEV2ZW50UGFyYW1EZXNjcmlwdG9yOihOU0FwcGxlRXZlbnREZXNjcmlw
dG9yICopZGVzY3JpcHRvciBsYXVuY2hJZGVudGlmaWVyczooTlNBcnJheSAqKilpZGVudGlmaWVy
czsKIyAxOTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9OU1dvcmtzcGFjZS5oIiAzCi0gKE5TQXJyYXkgKilsYXVuY2hlZEFwcGxpY2F0aW9uczsK
CgotIChOU0RpY3Rpb25hcnkgKilhY3RpdmVBcHBsaWNhdGlvbjsKIyAyMTIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1dvcmtzcGFjZS5oIiAz
Ci0gKE5TU3RyaW5nICopdHlwZU9mRmlsZTooTlNTdHJpbmcgKilhYnNvbHV0ZUZpbGVQYXRoIGVy
cm9yOihOU0Vycm9yICoqKW91dEVycm9yOwoKCgoKCi0gKE5TU3RyaW5nICopbG9jYWxpemVkRGVz
Y3JpcHRpb25Gb3JUeXBlOihOU1N0cmluZyAqKXR5cGVOYW1lOwoKCgoKCi0gKE5TU3RyaW5nICop
cHJlZmVycmVkRmlsZW5hbWVFeHRlbnNpb25Gb3JUeXBlOihOU1N0cmluZyAqKXR5cGVOYW1lOwoK
CgoKCi0gKEJPT0wpZmlsZW5hbWVFeHRlbnNpb246KE5TU3RyaW5nICopZmlsZW5hbWVFeHRlbnNp
b24gaXNWYWxpZEZvclR5cGU6KE5TU3RyaW5nICopdHlwZU5hbWU7CgoKCgoKCgotIChCT09MKXR5
cGU6KE5TU3RyaW5nICopZmlyc3RUeXBlTmFtZSBjb25mb3Jtc1RvVHlwZTooTlNTdHJpbmcgKilz
ZWNvbmRUeXBlTmFtZTsKCgoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TV29ya3NwYWNlIChOU0Rlc2t0
b3BJbWFnZXMpCgoKCgoKLSAoQk9PTClzZXREZXNrdG9wSW1hZ2VVUkw6KE5TVVJMICopdXJsIGZv
clNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4gb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9u
cyBlcnJvcjooTlNFcnJvciAqKillcnJvciA7CgoKCi0gKE5TVVJMICopZGVza3RvcEltYWdlVVJM
Rm9yU2NyZWVuOihOU1NjcmVlbiAqKXNjcmVlbiA7CgoKCi0gKE5TRGljdGlvbmFyeSAqKWRlc2t0
b3BJbWFnZU9wdGlvbnNGb3JTY3JlZW46KE5TU2NyZWVuICopc2NyZWVuIDsKCkBlbmQKCgoKCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNXb3Jrc3BhY2VEZXNrdG9wSW1hZ2VTY2FsaW5n
S2V5IDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TV29ya3NwYWNlRGVza3RvcElt
YWdlQWxsb3dDbGlwcGluZ0tleSA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1dv
cmtzcGFjZURlc2t0b3BJbWFnZUZpbGxDb2xvcktleSA7CgoKCgoKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKiBjb25zdCBOU1dvcmtzcGFjZUFwcGxpY2F0aW9uS2V5IDsKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKiBOU1dvcmtzcGFjZVdpbGxMYXVuY2hBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbjsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqIE5TV29ya3NwYWNlRGlkTGF1bmNoQXBwbGljYXRpb25Ob3RpZmljYXRp
b247CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBOU1dvcmtzcGFjZURpZFRlcm1pbmF0ZUFwcGxpY2F0
aW9uTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNXb3Jrc3BhY2VE
aWRIaWRlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29u
c3QgTlNXb3Jrc3BhY2VEaWRVbmhpZGVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKiBjb25zdCBOU1dvcmtzcGFjZURpZEFjdGl2YXRlQXBwbGljYXRpb25Ob3Rp
ZmljYXRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNXb3Jrc3BhY2VEaWREZWFj
dGl2YXRlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gOwoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5n
ICogY29uc3QgTlNXb3Jrc3BhY2VWb2x1bWVMb2NhbGl6ZWROYW1lS2V5IDsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqIGNvbnN0IE5TV29ya3NwYWNlVm9sdW1lVVJMS2V5IDsKCgoKZXh0ZXJuICJDIiBO
U1N0cmluZyAqIGNvbnN0IE5TV29ya3NwYWNlVm9sdW1lT2xkTG9jYWxpemVkTmFtZUtleSA7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1dvcmtzcGFjZVZvbHVtZU9sZFVSTEtleSA7Cgpl
eHRlcm4gIkMiIE5TU3RyaW5nICogTlNXb3Jrc3BhY2VEaWRNb3VudE5vdGlmaWNhdGlvbjsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqIE5TV29ya3NwYWNlRGlkVW5tb3VudE5vdGlmaWNhdGlvbjsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqIE5TV29ya3NwYWNlV2lsbFVubW91bnROb3RpZmljYXRpb247CgoK
CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1dvcmtzcGFjZURpZFJlbmFtZVZvbHVtZU5v
dGlmaWNhdGlvbiA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1dvcmtzcGFjZVdp
bGxQb3dlck9mZk5vdGlmaWNhdGlvbjsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBOU1dvcmtzcGFj
ZVdpbGxTbGVlcE5vdGlmaWNhdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBOU1dvcmtzcGFj
ZURpZFdha2VOb3RpZmljYXRpb24gOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TV29y
a3NwYWNlU2NyZWVuc0RpZFNsZWVwTm90aWZpY2F0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
IGNvbnN0IE5TV29ya3NwYWNlU2NyZWVuc0RpZFdha2VOb3RpZmljYXRpb24gOwoKCmV4dGVybiAi
QyIgTlNTdHJpbmcgKiBOU1dvcmtzcGFjZVNlc3Npb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRp
b24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICogTlNXb3Jrc3BhY2VTZXNzaW9uRGlkUmVzaWduQWN0
aXZlTm90aWZpY2F0aW9uIDsKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBOU1dvcmtzcGFjZURp
ZFBlcmZvcm1GaWxlT3BlcmF0aW9uTm90aWZpY2F0aW9uOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5n
ICogY29uc3QgTlNXb3Jrc3BhY2VEaWRDaGFuZ2VGaWxlTGFiZWxzTm90aWZpY2F0aW9uIDsKCmV4
dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1dvcmtzcGFjZUFjdGl2ZVNwYWNlRGlkQ2hhbmdl
Tm90aWZpY2F0aW9uIDsKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1dvcmtzcGFj
ZUxhdW5jaENvbmZpZ3VyYXRpb25BcHBsZUV2ZW50IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNv
bnN0IE5TV29ya3NwYWNlTGF1bmNoQ29uZmlndXJhdGlvbkFyZ3VtZW50cyA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU1dvcmtzcGFjZUxhdW5jaENvbmZpZ3VyYXRpb25FbnZpcm9ubWVu
dCA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1dvcmtzcGFjZUxhdW5jaENvbmZpZ3Vy
YXRpb25BcmNoaXRlY3R1cmUgOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogTlNXb3Jrc3BhY2VN
b3ZlT3BlcmF0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICogTlNXb3Jrc3BhY2VDb3B5T3BlcmF0
aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICogTlNXb3Jrc3BhY2VMaW5rT3BlcmF0aW9uOwpleHRl
cm4gIkMiIE5TU3RyaW5nICogTlNXb3Jrc3BhY2VDb21wcmVzc09wZXJhdGlvbjsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqIE5TV29ya3NwYWNlRGVjb21wcmVzc09wZXJhdGlvbjsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqIE5TV29ya3NwYWNlRW5jcnlwdE9wZXJhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIE5TV29ya3NwYWNlRGVjcnlwdE9wZXJhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIE5T
V29ya3NwYWNlRGVzdHJveU9wZXJhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIE5TV29ya3Nw
YWNlUmVjeWNsZU9wZXJhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIE5TV29ya3NwYWNlRHVw
bGljYXRlT3BlcmF0aW9uOwoKCgoKQGludGVyZmFjZSBOU1dvcmtzcGFjZSAoTlNEZXByZWNhdGVk
KQotIChCT09MKW9wZW5UZW1wRmlsZTooTlNTdHJpbmcgKilmdWxsUGF0aCBfX2F0dHJpYnV0ZV9f
KChkZXByZWNhdGVkKSk7Ci0gKHZvaWQpZmluZEFwcGxpY2F0aW9ucyBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7Ci0gKHZvaWQpbm90ZVVzZXJEZWZhdWx0c0NoYW5nZWQgX19hdHRyaWJ1dGVf
XygoZGVwcmVjYXRlZCkpOwotICh2b2lkKXNsaWRlSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBmcm9t
OihOU1BvaW50KWZyb21Qb2ludCB0bzooTlNQb2ludCl0b1BvaW50IF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKLSAodm9pZCljaGVja0ZvclJlbW92YWJsZU1lZGlhIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKLSAodm9pZClub3RlRmlsZVN5c3RlbUNoYW5nZWQgX19hdHRyaWJ1dGVf
XygoZGVwcmVjYXRlZCkpOwotIChCT09MKWZpbGVTeXN0ZW1DaGFuZ2VkIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKLSAoQk9PTCl1c2VyRGVmYXVsdHNDaGFuZ2VkIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKLSAoTlNBcnJheSAqKW1vdW50TmV3UmVtb3ZhYmxlTWVkaWEgX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpAZW5kCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1BsYWlu
RmlsZVR5cGUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU0RpcmVjdG9yeUZpbGVUeXBlIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqTlNBcHBsaWNhdGlvbkZpbGVUeXBlIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGaWxlc3lzdGVtRmlsZVR5cGUgX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1NoZWxsQ29tbWFu
ZEZpbGVUeXBlIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyNSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUnVubmluZ0FwcGxpY2F0
aW9uLmgiIDIgMwoKCmVudW0gewoKICAgIE5TQXBwbGljYXRpb25BY3RpdmF0ZUFsbFdpbmRvd3Mg
PSAxIDw8IDAsCgoKCgogICAgTlNBcHBsaWNhdGlvbkFjdGl2YXRlSWdub3JpbmdPdGhlckFwcHMg
PSAxIDw8IDEKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TQXBwbGljYXRpb25BY3RpdmF0aW9uT3B0
aW9uczsKCgoKZW51bSB7CgogICAgTlNBcHBsaWNhdGlvbkFjdGl2YXRpb25Qb2xpY3lSZWd1bGFy
LAoKCiAgICBOU0FwcGxpY2F0aW9uQWN0aXZhdGlvblBvbGljeUFjY2Vzc29yeSwKCgogICAgTlNB
cHBsaWNhdGlvbkFjdGl2YXRpb25Qb2xpY3lQcm9oaWJpdGVkCn07CnR5cGVkZWYgTlNJbnRlZ2Vy
IE5TQXBwbGljYXRpb25BY3RpdmF0aW9uUG9saWN5OwoKCgpAY2xhc3MgTlNMb2NrLCBOU0RhdGUs
IE5TSW1hZ2UsIE5TVVJMOwoKQGludGVyZmFjZSBOU1J1bm5pbmdBcHBsaWNhdGlvbiA6IE5TT2Jq
ZWN0IHsKICAgIEBwcml2YXRlCiAgICBpZCBfc3VwZXJSZXNlcnZlZDsKICAgIHZvaWQgKl9hc247
CiAgICB2b2lkICoqX2hlbHBlcnM7CiAgICB2b2lkICpfb2JzSW5mbzsKICAgIE5TTG9jayAqX2xv
Y2s7CiAgICBOU1N0cmluZyAqX2J1bmRsZUlEOwogICAgTlNTdHJpbmcgKl9sb2NhbGl6ZWROYW1l
OwogICAgTlNVUkwgKl9idW5kbGVVUkw7CiAgICBOU1VSTCAqX2V4ZWN1dGFibGVVUkw7CiAgICBO
U0RhdGUgKl9sYXVuY2hEYXRlOwogICAgTlNJbWFnZSAqX2ljb247CiAgICBpbnQgX3BpZDsKICAg
IHVuc2lnbmVkIGludCBfbGFzdFNlZWQ7CiAgICB1bnNpZ25lZCBpbnQgX2FjdGl2ZVNlZWQ7CiAg
ICB1bnNpZ25lZCBpbnQgX3N0YWxlU2VlZDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfb2JzTWFz
azsKICAgIHN0cnVjdCB7CiB1bnNpZ25lZCBmZXRjaGVkRHluYW1pYzoxOwogdW5zaWduZWQgZGVh
ZFRvVXM6MTsKICAgICAgICB1bnNpZ25lZCB0ZXJtaW5hdGVkOjE7CiAgICAgICAgdW5zaWduZWQg
ZmluaXNoZWRMYXVuY2hpbmc6MTsKICAgICAgICB1bnNpZ25lZCBoaWRkZW46MTsKICAgICAgICB1
bnNpZ25lZCBhY3RpdmU6MTsKIHVuc2lnbmVkIGFyY2g6MzsKIHVuc2lnbmVkIGFjdGl2YXRpb25Q
b2xpY3k6MzsKICAgICAgICB1bnNpZ25lZCByZXNlcnZlZDE6MjA7CiAgICB9IF9hZmxhZ3M7CiAg
ICBpZCBfYXBwUmVzZXJ2ZWQ7Cn0KCgpAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNUZXJt
aW5hdGVkKSBCT09MIHRlcm1pbmF0ZWQ7CgoKQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlz
RmluaXNoZWRMYXVuY2hpbmcpIEJPT0wgZmluaXNoZWRMYXVuY2hpbmc7CgoKQHByb3BlcnR5IChy
ZWFkb25seSwgZ2V0dGVyPWlzSGlkZGVuKSBCT09MIGhpZGRlbjsKCgpAcHJvcGVydHkgKHJlYWRv
bmx5LCBnZXR0ZXI9aXNBY3RpdmUpIEJPT0wgYWN0aXZlOwoKCkBwcm9wZXJ0eSAocmVhZG9ubHkp
IE5TQXBwbGljYXRpb25BY3RpdmF0aW9uUG9saWN5IGFjdGl2YXRpb25Qb2xpY3k7CgoKQHByb3Bl
cnR5IChyZWFkb25seSkgTlNTdHJpbmcgKmxvY2FsaXplZE5hbWU7CgoKQHByb3BlcnR5IChyZWFk
b25seSkgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXI7CgoKQHByb3BlcnR5IChyZWFkb25seSkg
TlNVUkwgKmJ1bmRsZVVSTDsKCgpAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1VSTCAqZXhlY3V0YWJs
ZVVSTDsKCgpAcHJvcGVydHkgKHJlYWRvbmx5KSBwaWRfdCBwcm9jZXNzSWRlbnRpZmllcjsKCgpA
cHJvcGVydHkgKHJlYWRvbmx5KSBOU0RhdGUgKmxhdW5jaERhdGU7CgoKQHByb3BlcnR5IChyZWFk
b25seSkgTlNJbWFnZSAqaWNvbjsKCgpAcHJvcGVydHkgKHJlYWRvbmx5KSBOU0ludGVnZXIgZXhl
Y3V0YWJsZUFyY2hpdGVjdHVyZTsKCgotIChCT09MKWhpZGU7Ci0gKEJPT0wpdW5oaWRlOwoKCi0g
KEJPT0wpYWN0aXZhdGVXaXRoT3B0aW9uczooTlNBcHBsaWNhdGlvbkFjdGl2YXRpb25PcHRpb25z
KW9wdGlvbnM7CgoKLSAoQk9PTCl0ZXJtaW5hdGU7CgoKLSAoQk9PTClmb3JjZVRlcm1pbmF0ZTsK
CgorIChOU0FycmF5ICopcnVubmluZ0FwcGxpY2F0aW9uc1dpdGhCdW5kbGVJZGVudGlmaWVyOihO
U1N0cmluZyAqKWJ1bmRsZUlkZW50aWZpZXI7CgoKKyAoTlNSdW5uaW5nQXBwbGljYXRpb24gKily
dW5uaW5nQXBwbGljYXRpb25XaXRoUHJvY2Vzc0lkZW50aWZpZXI6KHBpZF90KXBpZDsKCgorIChO
U1J1bm5pbmdBcHBsaWNhdGlvbiAqKWN1cnJlbnRBcHBsaWNhdGlvbjsKCkBlbmQKCkBpbnRlcmZh
Y2UgTlNXb3Jrc3BhY2UgKE5TV29ya3NwYWNlUnVubmluZ0FwcGxpY2F0aW9ucykKCgoKCgoKCi0g
KE5TQXJyYXkgKilydW5uaW5nQXBwbGljYXRpb25zIDsKCkBlbmQKIyAxMiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQXBwbGljYXRpb24uaCIg
MiAzCgpAY2xhc3MgTlNEYXRlLCBOU0RpY3Rpb25hcnksIE5TRXJyb3IsIE5TRXhjZXB0aW9uLCBO
U05vdGlmaWNhdGlvbjsKQGNsYXNzIE5TR3JhcGhpY3NDb250ZXh0LCBOU0ltYWdlLCBOU1Bhc3Rl
Ym9hcmQsIE5TV2luZG93OwoKQGNsYXNzIE5TRG9ja1RpbGU7CgpAcHJvdG9jb2wgTlNBcHBsaWNh
dGlvbkRlbGVnYXRlOwoKCmV4dGVybiAiQyIgY29uc3QgZG91YmxlIE5TQXBwS2l0VmVyc2lvbk51
bWJlcjsKCiNkZWZpbmUgTlNBcHBLaXRWZXJzaW9uTnVtYmVyMTBfMCA1NzcKI2RlZmluZSBOU0Fw
cEtpdFZlcnNpb25OdW1iZXIxMF8xIDYyMAojZGVmaW5lIE5TQXBwS2l0VmVyc2lvbk51bWJlcjEw
XzIgNjYzCiNkZWZpbmUgTlNBcHBLaXRWZXJzaW9uTnVtYmVyMTBfMl8zIDY2My42CiNkZWZpbmUg
TlNBcHBLaXRWZXJzaW9uTnVtYmVyMTBfMyA3NDMKI2RlZmluZSBOU0FwcEtpdFZlcnNpb25OdW1i
ZXIxMF8zXzIgNzQzLjE0CiNkZWZpbmUgTlNBcHBLaXRWZXJzaW9uTnVtYmVyMTBfM18zIDc0My4y
CiNkZWZpbmUgTlNBcHBLaXRWZXJzaW9uTnVtYmVyMTBfM181IDc0My4yNAojZGVmaW5lIE5TQXBw
S2l0VmVyc2lvbk51bWJlcjEwXzNfNyA3NDMuMzMKI2RlZmluZSBOU0FwcEtpdFZlcnNpb25OdW1i
ZXIxMF8zXzkgNzQzLjM2CiNkZWZpbmUgTlNBcHBLaXRWZXJzaW9uTnVtYmVyMTBfNCA4MjQKI2Rl
ZmluZSBOU0FwcEtpdFZlcnNpb25OdW1iZXIxMF80XzEgODI0LjEKI2RlZmluZSBOU0FwcEtpdFZl
cnNpb25OdW1iZXIxMF80XzMgODI0LjIzCiNkZWZpbmUgTlNBcHBLaXRWZXJzaW9uTnVtYmVyMTBf
NF80IDgyNC4zMwojZGVmaW5lIE5TQXBwS2l0VmVyc2lvbk51bWJlcjEwXzRfNyA4MjQuNDEKI2Rl
ZmluZSBOU0FwcEtpdFZlcnNpb25OdW1iZXIxMF81IDk0OQojZGVmaW5lIE5TQXBwS2l0VmVyc2lv
bk51bWJlcjEwXzVfMiA5NDkuMjcKI2RlZmluZSBOU0FwcEtpdFZlcnNpb25OdW1iZXIxMF81XzMg
OTQ5LjMzCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TTW9kYWxQYW5lbFJ1bkxvb3BNb2RlOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpOU0V2ZW50VHJhY2tpbmdSdW5Mb29wTW9kZTsKCgplbnVtIHsK
ICAgIE5TUnVuU3RvcHBlZFJlc3BvbnNlID0gKC0xMDAwKSwKICAgIE5TUnVuQWJvcnRlZFJlc3Bv
bnNlID0gKC0xMDAxKSwKICAgIE5TUnVuQ29udGludWVzUmVzcG9uc2UgPSAoLTEwMDIpCn07CgoK
ZW51bSB7CiAgICBOU1VwZGF0ZVdpbmRvd3NSdW5Mb29wT3JkZXJpbmcgPSA1MDAwMDAKfTsKCgoK
ZW51bSB7CiAgICBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uRGVmYXVsdCA9IDAsCiAgICBOU0Fw
cGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVEb2NrID0gKDEgPDwgMCksCiAgICBOU0FwcGxp
Y2F0aW9uUHJlc2VudGF0aW9uSGlkZURvY2sgPSAoMSA8PCAxKSwKCiAgICBOU0FwcGxpY2F0aW9u
UHJlc2VudGF0aW9uQXV0b0hpZGVNZW51QmFyID0gKDEgPDwgMiksCiAgICBOU0FwcGxpY2F0aW9u
UHJlc2VudGF0aW9uSGlkZU1lbnVCYXIgPSAoMSA8PCAzKSwKCiAgICBOU0FwcGxpY2F0aW9uUHJl
c2VudGF0aW9uRGlzYWJsZUFwcGxlTWVudSA9ICgxIDw8IDQpLAogICAgTlNBcHBsaWNhdGlvblBy
ZXNlbnRhdGlvbkRpc2FibGVQcm9jZXNzU3dpdGNoaW5nID0gKDEgPDwgNSksCiAgICBOU0FwcGxp
Y2F0aW9uUHJlc2VudGF0aW9uRGlzYWJsZUZvcmNlUXVpdCA9ICgxIDw8IDYpLAogICAgTlNBcHBs
aWNhdGlvblByZXNlbnRhdGlvbkRpc2FibGVTZXNzaW9uVGVybWluYXRpb24gPSAoMSA8PCA3KSwK
ICAgIE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25EaXNhYmxlSGlkZUFwcGxpY2F0aW9uID0gKDEg
PDwgOCksCiAgICBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uRGlzYWJsZU1lbnVCYXJUcmFuc3Bh
cmVuY3kgPSAoMSA8PCA5KQp9OwoKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TQXBwbGljYXRpb25QcmVz
ZW50YXRpb25PcHRpb25zOwoKZXh0ZXJuICJDIiBpZCBOU0FwcDsKCgp0eXBlZGVmIHN0cnVjdCBf
TlNNb2RhbFNlc3Npb24gKk5TTW9kYWxTZXNzaW9uOwoKdHlwZWRlZiBzdHJ1Y3QgTlNUaHJlYWRQ
cml2YXRlIF9OU1RocmVhZFByaXZhdGU7CgpAaW50ZXJmYWNlIE5TQXBwbGljYXRpb24gOiBOU1Jl
c3BvbmRlciA8TlNVc2VySW50ZXJmYWNlVmFsaWRhdGlvbnM+CnsKCiAgICBOU0V2ZW50ICpfY3Vy
cmVudEV2ZW50OwogICAgaWQgX3dpbmRvd0xpc3Q7CiAgICBpZCBfa2V5V2luZG93OwogICAgaWQg
X21haW5XaW5kb3c7CiAgICBpZCBfZGVsZWdhdGU7CiAgICBpZCAqX2hpZGRlbkxpc3Q7CiAgICBp
bnQgX2hpZGRlbkNvdW50OwogICAgTlNJbnRlZ2VyIF9jb250ZXh0OwogICAgdm9pZCAqX2FwcGxl
RXZlbnRTdXNwZW5zaW9uSUQ7CiAgICBfX2F0dHJpYnV0ZV9fKChvYmpjX2djKHdlYWspKSkgaWQg
X3ByZXZpb3VzS2V5V2luZG93OwogICAgc2hvcnQgX3VudXNlZEFwcDsKICAgIHNob3J0IF9ydW5u
aW5nOwogICAgc3RydWN0IF9fYXBwRmxhZ3MgewogdW5zaWduZWQgaW50IF9oaWRkZW46MTsKIHVu
c2lnbmVkIGludCBfUkVTRVJWRUQxOjE7CiB1bnNpZ25lZCBpbnQgX2FjdGl2ZToxOwogdW5zaWdu
ZWQgaW50IF9oYXNCZWVuUnVuOjE7CiB1bnNpZ25lZCBpbnQgX2RvaW5nVW5oaWRlOjE7CiB1bnNp
Z25lZCBpbnQgX2RlbGVnYXRlUmV0dXJuc1ZhbGlkUmVxdWVzdG9yOjE7CiB1bnNpZ25lZCBpbnQg
X2RlYWN0UGVuZGluZzoxOwogdW5zaWduZWQgaW50IF9pbnZhbGlkU3RhdGU6MTsKIHVuc2lnbmVk
IGludCBfaW52YWxpZEV2ZW50OjE7CiB1bnNpZ25lZCBpbnQgX3Bvc3RlZFdpbmRvd3NOZWVkVXBk
YXRlTm90ZToxOwogICAgICAgIHVuc2lnbmVkIGludCBfd2FudHNUb0FjdGl2YXRlOjE7CiAgICAg
ICAgdW5zaWduZWQgaW50IF9kb2luZ0hpZGU6MTsKIHVuc2lnbmVkIGludCBfZG9udFNlbmRTaG91
bGRUZXJtaW5hdGU6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX3NraXBXaW4zMkRlbGF5ZWRSZXN0
b3JlS2V5V2luZG93QWZ0ZXJIaWRlOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9maW5pc2hlZExh
dW5jaGluZzoxOwogICAgICAgIHVuc2lnbmVkIGludCBfaGFzRXZlbnREZWxlZ2F0ZToxOwogICAg
ICAgIHVuc2lnbmVkIGludCBfYXBwRHlpbmc6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX2RpZE5T
T3Blbk9yUHJpbnQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX2luRGVhbGxvYzoxOwogICAgICAg
IHVuc2lnbmVkIGludCBfcGVuZGluZ0RpZEZpbmlzaDoxOwogICAgICAgIHVuc2lnbmVkIGludCBf
aGFzS2V5Rm9jdXM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX3BhbmVsc05vbmFjdGl2YXRpbmc6
MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX2hpZGRlbk9uTGF1bmNoOjE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IF9vcGVuU3RhdHVzOjI7CiB1bnNpZ25lZCBpbnQgX2JhdGNoT3JkZXJpbmc6MTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgX3dhaXRpbmdGb3JUZXJtaW5hdGlvblJlcGx5OjE7CiAgICAgICAg
dW5zaWduZWQgaW50IF93aW5kb3dNb3ZlRGlzYWJsZWQ6MTsKIHVuc2lnbmVkIGludCBfcmVzZXJ2
ZWQ6NDsKICAgIH0gX2FwcEZsYWdzOwogICAgaWQgX21haW5NZW51OwogICAgaWQgX2FwcEljb247
CiAgICBpZCBfbmFtZVRhYmxlOwogICAgaWQgX2V2ZW50RGVsZWdhdGU7CiAgICBfTlNUaHJlYWRQ
cml2YXRlICpfdGhyZWFkaW5nU3VwcG9ydDsKfQoKKyAoTlNBcHBsaWNhdGlvbiAqKXNoYXJlZEFw
cGxpY2F0aW9uOwotICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNBcHBsaWNhdGlvbkRlbGVnYXRl
Pilhbk9iamVjdDsKLSAoaWQgPE5TQXBwbGljYXRpb25EZWxlZ2F0ZT4pZGVsZWdhdGU7Ci0gKE5T
R3JhcGhpY3NDb250ZXh0Kiljb250ZXh0OwotICh2b2lkKWhpZGU6KGlkKXNlbmRlcjsKLSAodm9p
ZCl1bmhpZGU6KGlkKXNlbmRlcjsKLSAodm9pZCl1bmhpZGVXaXRob3V0QWN0aXZhdGlvbjsKLSAo
TlNXaW5kb3cgKil3aW5kb3dXaXRoV2luZG93TnVtYmVyOihOU0ludGVnZXIpd2luZG93TnVtOwot
IChOU1dpbmRvdyAqKW1haW5XaW5kb3c7Ci0gKE5TV2luZG93ICopa2V5V2luZG93OwotIChCT09M
KWlzQWN0aXZlOwotIChCT09MKWlzSGlkZGVuOwotIChCT09MKWlzUnVubmluZzsKLSAodm9pZClk
ZWFjdGl2YXRlOwotICh2b2lkKWFjdGl2YXRlSWdub3JpbmdPdGhlckFwcHM6KEJPT0wpZmxhZzsK
Ci0gKHZvaWQpaGlkZU90aGVyQXBwbGljYXRpb25zOihpZClzZW5kZXI7Ci0gKHZvaWQpdW5oaWRl
QWxsQXBwbGljYXRpb25zOihpZClzZW5kZXI7CgotICh2b2lkKWZpbmlzaExhdW5jaGluZzsKLSAo
dm9pZClydW47Ci0gKE5TSW50ZWdlcilydW5Nb2RhbEZvcldpbmRvdzooTlNXaW5kb3cgKil0aGVX
aW5kb3c7Ci0gKHZvaWQpc3RvcDooaWQpc2VuZGVyOwotICh2b2lkKXN0b3BNb2RhbDsKLSAodm9p
ZClzdG9wTW9kYWxXaXRoQ29kZTooTlNJbnRlZ2VyKXJldHVybkNvZGU7Ci0gKHZvaWQpYWJvcnRN
b2RhbDsKLSAoTlNXaW5kb3cgKiltb2RhbFdpbmRvdzsKLSAoTlNNb2RhbFNlc3Npb24pYmVnaW5N
b2RhbFNlc3Npb25Gb3JXaW5kb3c6KE5TV2luZG93ICopdGhlV2luZG93OwotIChOU0ludGVnZXIp
cnVuTW9kYWxTZXNzaW9uOihOU01vZGFsU2Vzc2lvbilzZXNzaW9uOwotICh2b2lkKWVuZE1vZGFs
U2Vzc2lvbjooTlNNb2RhbFNlc3Npb24pc2Vzc2lvbjsKLSAodm9pZCl0ZXJtaW5hdGU6KGlkKXNl
bmRlcjsKCmVudW0gewogICAgICBOU0NyaXRpY2FsUmVxdWVzdCA9IDAsCiAgICAgIE5TSW5mb3Jt
YXRpb25hbFJlcXVlc3QgPSAxMAp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNSZXF1ZXN0VXNlckF0
dGVudGlvblR5cGU7CgoKLSAoTlNJbnRlZ2VyKXJlcXVlc3RVc2VyQXR0ZW50aW9uOihOU1JlcXVl
c3RVc2VyQXR0ZW50aW9uVHlwZSlyZXF1ZXN0VHlwZTsKLSAodm9pZCljYW5jZWxVc2VyQXR0ZW50
aW9uUmVxdWVzdDooTlNJbnRlZ2VyKXJlcXVlc3Q7CiMgMTg4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNBcHBsaWNhdGlvbi5oIiAzCi0gKHZv
aWQpYmVnaW5TaGVldDooTlNXaW5kb3cgKilzaGVldCBtb2RhbEZvcldpbmRvdzooTlNXaW5kb3cg
Kilkb2NXaW5kb3cgbW9kYWxEZWxlZ2F0ZTooaWQpbW9kYWxEZWxlZ2F0ZSBkaWRFbmRTZWxlY3Rv
cjooU0VMKWRpZEVuZFNlbGVjdG9yIGNvbnRleHRJbmZvOih2b2lkICopY29udGV4dEluZm87Ci0g
KHZvaWQpZW5kU2hlZXQ6KE5TV2luZG93ICopc2hlZXQ7Ci0gKHZvaWQpZW5kU2hlZXQ6KE5TV2lu
ZG93ICopc2hlZXQgcmV0dXJuQ29kZTooTlNJbnRlZ2VyKXJldHVybkNvZGU7CgotIChOU0V2ZW50
ICopbmV4dEV2ZW50TWF0Y2hpbmdNYXNrOihOU1VJbnRlZ2VyKW1hc2sgdW50aWxEYXRlOihOU0Rh
dGUgKilleHBpcmF0aW9uIGluTW9kZTooTlNTdHJpbmcgKiltb2RlIGRlcXVldWU6KEJPT0wpZGVx
RmxhZzsKLSAodm9pZClkaXNjYXJkRXZlbnRzTWF0Y2hpbmdNYXNrOihOU1VJbnRlZ2VyKW1hc2sg
YmVmb3JlRXZlbnQ6KE5TRXZlbnQgKilsYXN0RXZlbnQ7Ci0gKHZvaWQpcG9zdEV2ZW50OihOU0V2
ZW50ICopZXZlbnQgYXRTdGFydDooQk9PTClmbGFnOwotIChOU0V2ZW50ICopY3VycmVudEV2ZW50
OwoKLSAodm9pZClzZW5kRXZlbnQ6KE5TRXZlbnQgKil0aGVFdmVudDsKLSAodm9pZClwcmV2ZW50
V2luZG93T3JkZXJpbmc7Ci0gKE5TV2luZG93ICopbWFrZVdpbmRvd3NQZXJmb3JtOihTRUwpYVNl
bGVjdG9yIGluT3JkZXI6KEJPT0wpZmxhZzsKLSAoTlNBcnJheSAqKXdpbmRvd3M7Ci0gKHZvaWQp
c2V0V2luZG93c05lZWRVcGRhdGU6KEJPT0wpbmVlZFVwZGF0ZTsKLSAodm9pZCl1cGRhdGVXaW5k
b3dzOwoKLSAodm9pZClzZXRNYWluTWVudTooTlNNZW51ICopYU1lbnU7Ci0gKE5TTWVudSAqKW1h
aW5NZW51OwoKCgoKLSAodm9pZClzZXRIZWxwTWVudTooTlNNZW51ICopaGVscE1lbnUgOwotIChO
U01lbnUgKiloZWxwTWVudSA7CgotICh2b2lkKXNldEFwcGxpY2F0aW9uSWNvbkltYWdlOihOU0lt
YWdlICopaW1hZ2U7Ci0gKE5TSW1hZ2UgKilhcHBsaWNhdGlvbkljb25JbWFnZTsKCgoKLSAoTlNB
cHBsaWNhdGlvbkFjdGl2YXRpb25Qb2xpY3kpYWN0aXZhdGlvblBvbGljeSA7CgoKCi0gKEJPT0wp
c2V0QWN0aXZhdGlvblBvbGljeTooTlNBcHBsaWNhdGlvbkFjdGl2YXRpb25Qb2xpY3kpYWN0aXZh
dGlvblBvbGljeSA7CgoKCi0gKE5TRG9ja1RpbGUgKilkb2NrVGlsZTsKCgotIChCT09MKXNlbmRB
Y3Rpb246KFNFTCl0aGVBY3Rpb24gdG86KGlkKXRoZVRhcmdldCBmcm9tOihpZClzZW5kZXI7Ci0g
KGlkKXRhcmdldEZvckFjdGlvbjooU0VMKXRoZUFjdGlvbjsKLSAoaWQpdGFyZ2V0Rm9yQWN0aW9u
OihTRUwpdGhlQWN0aW9uIHRvOihpZCl0aGVUYXJnZXQgZnJvbTooaWQpc2VuZGVyOwotIChCT09M
KXRyeVRvUGVyZm9ybTooU0VMKWFuQWN0aW9uIHdpdGg6KGlkKWFuT2JqZWN0OwotIChpZCl2YWxp
ZFJlcXVlc3RvckZvclNlbmRUeXBlOihOU1N0cmluZyAqKXNlbmRUeXBlIHJldHVyblR5cGU6KE5T
U3RyaW5nICopcmV0dXJuVHlwZTsKCi0gKHZvaWQpcmVwb3J0RXhjZXB0aW9uOihOU0V4Y2VwdGlv
biAqKXRoZUV4Y2VwdGlvbjsKKyAodm9pZClkZXRhY2hEcmF3aW5nVGhyZWFkOihTRUwpc2VsZWN0
b3IgdG9UYXJnZXQ6KGlkKXRhcmdldCB3aXRoT2JqZWN0OihpZClhcmd1bWVudDsKCgotICh2b2lk
KXJlcGx5VG9BcHBsaWNhdGlvblNob3VsZFRlcm1pbmF0ZTooQk9PTClzaG91bGRUZXJtaW5hdGU7
CgoKZW51bSB7CiAgICBOU0FwcGxpY2F0aW9uRGVsZWdhdGVSZXBseVN1Y2Nlc3MgPSAwLAogICAg
TlNBcHBsaWNhdGlvbkRlbGVnYXRlUmVwbHlDYW5jZWwgPSAxLAogICAgTlNBcHBsaWNhdGlvbkRl
bGVnYXRlUmVwbHlGYWlsdXJlID0gMgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNBcHBsaWNhdGlv
bkRlbGVnYXRlUmVwbHk7CgoKLSAodm9pZClyZXBseVRvT3Blbk9yUHJpbnQ6KE5TQXBwbGljYXRp
b25EZWxlZ2F0ZVJlcGx5KXJlcGx5OwoKCgotICh2b2lkKW9yZGVyRnJvbnRDaGFyYWN0ZXJQYWxl
dHRlOihpZClzZW5kZXI7CgoKCgotIChOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucylw
cmVzZW50YXRpb25PcHRpb25zIDsKLSAodm9pZClzZXRQcmVzZW50YXRpb25PcHRpb25zOihOU0Fw
cGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyluZXdPcHRpb25zIDsKCgoKLSAoTlNBcHBsaWNh
dGlvblByZXNlbnRhdGlvbk9wdGlvbnMpY3VycmVudFN5c3RlbVByZXNlbnRhdGlvbk9wdGlvbnMg
OwoKQGVuZAoKQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uKE5TV2luZG93c01lbnUpCi0gKHZvaWQp
c2V0V2luZG93c01lbnU6KE5TTWVudSAqKWFNZW51OwotIChOU01lbnUgKil3aW5kb3dzTWVudTsK
LSAodm9pZClhcnJhbmdlSW5Gcm9udDooaWQpc2VuZGVyOwotICh2b2lkKXJlbW92ZVdpbmRvd3NJ
dGVtOihOU1dpbmRvdyAqKXdpbjsKLSAodm9pZClhZGRXaW5kb3dzSXRlbTooTlNXaW5kb3cgKil3
aW4gdGl0bGU6KE5TU3RyaW5nICopYVN0cmluZyBmaWxlbmFtZTooQk9PTClpc0ZpbGVuYW1lOwot
ICh2b2lkKWNoYW5nZVdpbmRvd3NJdGVtOihOU1dpbmRvdyAqKXdpbiB0aXRsZTooTlNTdHJpbmcg
KilhU3RyaW5nIGZpbGVuYW1lOihCT09MKWlzRmlsZW5hbWU7Ci0gKHZvaWQpdXBkYXRlV2luZG93
c0l0ZW06KE5TV2luZG93ICopd2luOwotICh2b2lkKW1pbmlhdHVyaXplQWxsOihpZClzZW5kZXI7
CkBlbmQKCkBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbihOU0Z1bGxLZXlib2FyZEFjY2VzcykKCgot
IChCT09MKWlzRnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA7CkBlbmQKCgplbnVtIHsKICAgICAg
ICBOU1Rlcm1pbmF0ZUNhbmNlbCA9IDAsCiAgICAgICAgTlNUZXJtaW5hdGVOb3cgPSAxLAogICAg
ICAgIE5TVGVybWluYXRlTGF0ZXIgPSAyCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU0FwcGxpY2F0
aW9uVGVybWluYXRlUmVwbHk7CgoKCmVudW0gewogICAgTlNQcmludGluZ0NhbmNlbGxlZCA9IDAs
CiAgICBOU1ByaW50aW5nU3VjY2VzcyA9IDEsCiAgICBOU1ByaW50aW5nRmFpbHVyZSA9IDMsCiAg
ICBOU1ByaW50aW5nUmVwbHlMYXRlciA9IDIKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TQXBwbGlj
YXRpb25QcmludFJlcGx5OwoKCkBwcm90b2NvbCBOU0FwcGxpY2F0aW9uRGVsZWdhdGUgPE5TT2Jq
ZWN0PgpAb3B0aW9uYWwKCgoKCgoKCi0gKE5TQXBwbGljYXRpb25UZXJtaW5hdGVSZXBseSlhcHBs
aWNhdGlvblNob3VsZFRlcm1pbmF0ZTooTlNBcHBsaWNhdGlvbiAqKXNlbmRlcjsKLSAoQk9PTClh
cHBsaWNhdGlvbjooTlNBcHBsaWNhdGlvbiAqKXNlbmRlciBvcGVuRmlsZTooTlNTdHJpbmcgKilm
aWxlbmFtZTsKCi0gKHZvaWQpYXBwbGljYXRpb246KE5TQXBwbGljYXRpb24gKilzZW5kZXIgb3Bl
bkZpbGVzOihOU0FycmF5ICopZmlsZW5hbWVzOwoKLSAoQk9PTClhcHBsaWNhdGlvbjooTlNBcHBs
aWNhdGlvbiAqKXNlbmRlciBvcGVuVGVtcEZpbGU6KE5TU3RyaW5nICopZmlsZW5hbWU7Ci0gKEJP
T0wpYXBwbGljYXRpb25TaG91bGRPcGVuVW50aXRsZWRGaWxlOihOU0FwcGxpY2F0aW9uICopc2Vu
ZGVyOwotIChCT09MKWFwcGxpY2F0aW9uT3BlblVudGl0bGVkRmlsZTooTlNBcHBsaWNhdGlvbiAq
KXNlbmRlcjsKLSAoQk9PTClhcHBsaWNhdGlvbjooaWQpc2VuZGVyIG9wZW5GaWxlV2l0aG91dFVJ
OihOU1N0cmluZyAqKWZpbGVuYW1lOwotIChCT09MKWFwcGxpY2F0aW9uOihOU0FwcGxpY2F0aW9u
ICopc2VuZGVyIHByaW50RmlsZTooTlNTdHJpbmcgKilmaWxlbmFtZTsKCi0gKE5TQXBwbGljYXRp
b25QcmludFJlcGx5KWFwcGxpY2F0aW9uOihOU0FwcGxpY2F0aW9uICopYXBwbGljYXRpb24gcHJp
bnRGaWxlczooTlNBcnJheSAqKWZpbGVOYW1lcyB3aXRoU2V0dGluZ3M6KE5TRGljdGlvbmFyeSAq
KXByaW50U2V0dGluZ3Mgc2hvd1ByaW50UGFuZWxzOihCT09MKXNob3dQcmludFBhbmVsczsKCi0g
KEJPT0wpYXBwbGljYXRpb25TaG91bGRUZXJtaW5hdGVBZnRlckxhc3RXaW5kb3dDbG9zZWQ6KE5T
QXBwbGljYXRpb24gKilzZW5kZXI7Ci0gKEJPT0wpYXBwbGljYXRpb25TaG91bGRIYW5kbGVSZW9w
ZW46KE5TQXBwbGljYXRpb24gKilzZW5kZXIgaGFzVmlzaWJsZVdpbmRvd3M6KEJPT0wpZmxhZzsK
LSAoTlNNZW51ICopYXBwbGljYXRpb25Eb2NrTWVudTooTlNBcHBsaWNhdGlvbiAqKXNlbmRlcjsK
Ci0gKE5TRXJyb3IgKilhcHBsaWNhdGlvbjooTlNBcHBsaWNhdGlvbiAqKWFwcGxpY2F0aW9uIHdp
bGxQcmVzZW50RXJyb3I6KE5TRXJyb3IgKillcnJvcjsKCgoKCi0gKHZvaWQpYXBwbGljYXRpb25X
aWxsRmluaXNoTGF1bmNoaW5nOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLSAodm9p
ZClhcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZzooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb247Ci0gKHZvaWQpYXBwbGljYXRpb25XaWxsSGlkZTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb247Ci0gKHZvaWQpYXBwbGljYXRpb25EaWRIaWRlOihOU05vdGlmaWNhdGlvbiAqKW5v
dGlmaWNhdGlvbjsKLSAodm9pZClhcHBsaWNhdGlvbldpbGxVbmhpZGU6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uOwotICh2b2lkKWFwcGxpY2F0aW9uRGlkVW5oaWRlOihOU05vdGlmaWNh
dGlvbiAqKW5vdGlmaWNhdGlvbjsKLSAodm9pZClhcHBsaWNhdGlvbldpbGxCZWNvbWVBY3RpdmU6
KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotICh2b2lkKWFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLSAodm9pZClhcHBsaWNh
dGlvbldpbGxSZXNpZ25BY3RpdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotICh2
b2lkKWFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbjsKLSAodm9pZClhcHBsaWNhdGlvbldpbGxVcGRhdGU6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uOwotICh2b2lkKWFwcGxpY2F0aW9uRGlkVXBkYXRlOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbjsKLSAodm9pZClhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGU6KE5TTm90aWZp
Y2F0aW9uICopbm90aWZpY2F0aW9uOwotICh2b2lkKWFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVu
UGFyYW1ldGVyczooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CgpAZW5kCgpAaW50ZXJm
YWNlIE5TQXBwbGljYXRpb24oTlNTZXJ2aWNlc01lbnUpCi0gKHZvaWQpc2V0U2VydmljZXNNZW51
OihOU01lbnUgKilhTWVudTsKLSAoTlNNZW51ICopc2VydmljZXNNZW51OwotICh2b2lkKXJlZ2lz
dGVyU2VydmljZXNNZW51U2VuZFR5cGVzOihOU0FycmF5ICopc2VuZFR5cGVzIHJldHVyblR5cGVz
OihOU0FycmF5ICopcmV0dXJuVHlwZXM7CkBlbmQKCkBpbnRlcmZhY2UgTlNPYmplY3QoTlNTZXJ2
aWNlc1JlcXVlc3RzKQotIChCT09MKXdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOihOU1Bhc3Rl
Ym9hcmQgKilwYm9hcmQgdHlwZXM6KE5TQXJyYXkgKil0eXBlczsKLSAoQk9PTClyZWFkU2VsZWN0
aW9uRnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBib2FyZDsKQGVuZAoKQGludGVyZmFj
ZSBOU0FwcGxpY2F0aW9uKE5TU2VydmljZXNIYW5kbGluZykKLSAodm9pZClzZXRTZXJ2aWNlc1By
b3ZpZGVyOihpZClwcm92aWRlcjsKLSAoaWQpc2VydmljZXNQcm92aWRlcjsKQGVuZAoKQGludGVy
ZmFjZSBOU0FwcGxpY2F0aW9uKE5TU3RhbmRhcmRBYm91dFBhbmVsKQotICh2b2lkKW9yZGVyRnJv
bnRTdGFuZGFyZEFib3V0UGFuZWw6KGlkKXNlbmRlcjsKLSAodm9pZClvcmRlckZyb250U3RhbmRh
cmRBYm91dFBhbmVsV2l0aE9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnNEaWN0aW9uYXJ5
OwojIDM5NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFk
ZXJzL05TQXBwbGljYXRpb24uaCIgMwpAZW5kCgoKCmVudW0gewogICAgTlNVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgPSAwLAogICAgTlNVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uUmlnaHRUb0xlZnQgPSAxCn07CnR5cGVkZWYgTlNJbnRlZ2VyIE5TVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbjsKCkBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbiAoTlNBcHBsaWNh
dGlvbkxheW91dERpcmVjdGlvbikKLSAoTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKXVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gOwpAZW5kCgoKCmV4dGVybiAiQyIgaW50IE5TQXBw
bGljYXRpb25NYWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pOwoKCgoKZXh0ZXJuICJD
IiBCT09MIE5TQXBwbGljYXRpb25Mb2FkKHZvaWQpOwoKCgpleHRlcm4gIkMiIEJPT0wgTlNTaG93
c1NlcnZpY2VzTWVudUl0ZW0oTlNTdHJpbmcgKiBpdGVtTmFtZSk7CgoKZXh0ZXJuICJDIiBOU0lu
dGVnZXIgTlNTZXRTaG93c1NlcnZpY2VzTWVudUl0ZW0oTlNTdHJpbmcgKiBpdGVtTmFtZSwgQk9P
TCBlbmFibGVkKTsKCgoKZXh0ZXJuICJDIiB2b2lkIE5TVXBkYXRlRHluYW1pY1NlcnZpY2VzKHZv
aWQpOwpleHRlcm4gIkMiIEJPT0wgTlNQZXJmb3JtU2VydmljZShOU1N0cmluZyAqaXRlbU5hbWUs
IE5TUGFzdGVib2FyZCAqcGJvYXJkKTsKCmV4dGVybiAiQyIgdm9pZCBOU1JlZ2lzdGVyU2Vydmlj
ZXNQcm92aWRlcihpZCBwcm92aWRlciwgTlNTdHJpbmcgKm5hbWUpOwpleHRlcm4gIkMiIHZvaWQg
TlNVbnJlZ2lzdGVyU2VydmljZXNQcm92aWRlcihOU1N0cmluZyAqbmFtZSk7CgoKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbjsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqTlNBcHBsaWNhdGlvbkRpZEhpZGVOb3RpZmljYXRpb247CmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TQXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hpbmdOb3RpZmljYXRp
b247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmVOb3Rp
ZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQXBwbGljYXRpb25EaWRVbmhpZGVOb3Rp
ZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQXBwbGljYXRpb25EaWRVcGRhdGVOb3Rp
ZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQXBwbGljYXRpb25XaWxsQmVjb21lQWN0
aXZlTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0FwcGxpY2F0aW9uV2lsbEhp
ZGVOb3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQXBwbGljYXRpb25XaWxsRmlu
aXNoTGF1bmNoaW5nTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0FwcGxpY2F0
aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNB
cHBsaWNhdGlvbldpbGxVbmhpZGVOb3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5T
QXBwbGljYXRpb25XaWxsVXBkYXRlTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpO
U0FwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZU5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqTlNBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNOb3RpZmljYXRpb247CgoK
QGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChOU0RlcHJlY2F0ZWQpCgoKCgoKLSAoTlNJbnRlZ2Vy
KXJ1bk1vZGFsRm9yV2luZG93OihOU1dpbmRvdyAqKXRoZVdpbmRvdyByZWxhdGl2ZVRvV2luZG93
OihOU1dpbmRvdyAqKWRvY1dpbmRvdyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCgoK
LSAoTlNNb2RhbFNlc3Npb24pYmVnaW5Nb2RhbFNlc3Npb25Gb3JXaW5kb3c6KE5TV2luZG93ICop
dGhlV2luZG93IHJlbGF0aXZlVG9XaW5kb3c6KE5TV2luZG93ICopZG9jV2luZG93IF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKCgotICh2b2lkKWFwcGxpY2F0aW9uOihOU0FwcGxpY2F0aW9u
ICopc2VuZGVyIHByaW50RmlsZXM6KE5TQXJyYXkgKilmaWxlbmFtZXMgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwoKQGVuZAojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNDZWxsLmgiIDIgMwoKQGNsYXNzIE5TQXR0cmlidXRlZFN0
cmluZywgTlNFdmVudCwgTlNGb250LCBOU0Zvcm1hdHRlciwgTlNJbWFnZSwgTlNNZW51LCBOU1Rl
eHQsIE5TVmlldywgTlNUZXh0VmlldzsKCmVudW0gewogICAgTlNBbnlUeXBlID0gMCwKICAgIE5T
SW50VHlwZSA9IDEsCiAgICBOU1Bvc2l0aXZlSW50VHlwZSA9IDIsCiAgICBOU0Zsb2F0VHlwZSA9
IDMsCiAgICBOU1Bvc2l0aXZlRmxvYXRUeXBlID0gNCwKICAgIE5TRG91YmxlVHlwZSA9IDYsCiAg
ICBOU1Bvc2l0aXZlRG91YmxlVHlwZSA9IDcKfTsKCmVudW0gewogICAgTlNOdWxsQ2VsbFR5cGUg
PSAwLAogICAgTlNUZXh0Q2VsbFR5cGUgPSAxLAogICAgTlNJbWFnZUNlbGxUeXBlID0gMgp9Owp0
eXBlZGVmIE5TVUludGVnZXIgTlNDZWxsVHlwZTsKCmVudW0gewogICAgTlNDZWxsRGlzYWJsZWQg
PSAwLAogICAgTlNDZWxsU3RhdGUgPSAxLAogICAgTlNQdXNoSW5DZWxsID0gMiwKICAgIE5TQ2Vs
bEVkaXRhYmxlID0gMywKICAgIE5TQ2hhbmdlR3JheUNlbGwgPSA0LAogICAgTlNDZWxsSGlnaGxp
Z2h0ZWQgPSA1LAogICAgTlNDZWxsTGlnaHRzQnlDb250ZW50cyA9IDYsCiAgICBOU0NlbGxMaWdo
dHNCeUdyYXkgPSA3LAogICAgTlNDaGFuZ2VCYWNrZ3JvdW5kQ2VsbCA9IDgsCiAgICBOU0NlbGxM
aWdodHNCeUJhY2tncm91bmQgPSA5LAogICAgTlNDZWxsSXNCb3JkZXJlZCA9IDEwLAogICAgTlND
ZWxsSGFzT3ZlcmxhcHBpbmdJbWFnZSA9IDExLAogICAgTlNDZWxsSGFzSW1hZ2VIb3Jpem9udGFs
ID0gMTIsCiAgICBOU0NlbGxIYXNJbWFnZU9uTGVmdE9yQm90dG9tID0gMTMsCiAgICBOU0NlbGxD
aGFuZ2VzQ29udGVudHMgPSAxNCwKICAgIE5TQ2VsbElzSW5zZXRCdXR0b24gPSAxNSwKICAgIE5T
Q2VsbEFsbG93c01peGVkU3RhdGUgPSAxNgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNDZWxsQXR0
cmlidXRlOwoKZW51bSB7CiAgICBOU05vSW1hZ2UgPSAwLAogICAgTlNJbWFnZU9ubHkgPSAxLAog
ICAgTlNJbWFnZUxlZnQgPSAyLAogICAgTlNJbWFnZVJpZ2h0ID0gMywKICAgIE5TSW1hZ2VCZWxv
dyA9IDQsCiAgICBOU0ltYWdlQWJvdmUgPSA1LAogICAgTlNJbWFnZU92ZXJsYXBzID0gNgp9Owp0
eXBlZGVmIE5TVUludGVnZXIgTlNDZWxsSW1hZ2VQb3NpdGlvbjsKCgplbnVtIHsKICAgIE5TSW1h
Z2VTY2FsZVByb3BvcnRpb25hbGx5RG93biA9IDAsCiAgICBOU0ltYWdlU2NhbGVBeGVzSW5kZXBl
bmRlbnRseSwKICAgIE5TSW1hZ2VTY2FsZU5vbmUsCiAgICBOU0ltYWdlU2NhbGVQcm9wb3J0aW9u
YWxseVVwT3JEb3duCn07Cgp0eXBlZGVmIE5TVUludGVnZXIgTlNJbWFnZVNjYWxpbmc7CgplbnVt
IHsKICAgIE5TTWl4ZWRTdGF0ZSA9IC0xLAogICAgTlNPZmZTdGF0ZSA9IDAsCiAgICBOU09uU3Rh
dGUgPSAxCn07CnR5cGVkZWYgTlNJbnRlZ2VyIE5TQ2VsbFN0YXRlVmFsdWU7CgoKCmVudW0gewog
ICAgTlNOb0NlbGxNYXNrID0gMCwKICAgIE5TQ29udGVudHNDZWxsTWFzayA9IDEsCiAgICBOU1B1
c2hJbkNlbGxNYXNrID0gMiwKICAgIE5TQ2hhbmdlR3JheUNlbGxNYXNrID0gNCwKICAgIE5TQ2hh
bmdlQmFja2dyb3VuZENlbGxNYXNrID0gOAp9OwoKZW51bSB7CiAgICBOU0RlZmF1bHRDb250cm9s
VGludCA9IDAsCgogICAgTlNCbHVlQ29udHJvbFRpbnQgPSAxLAogICAgTlNHcmFwaGl0ZUNvbnRy
b2xUaW50ID0gNiwKCiAgICBOU0NsZWFyQ29udHJvbFRpbnQgPSA3Cn07CnR5cGVkZWYgTlNVSW50
ZWdlciBOU0NvbnRyb2xUaW50OwoKZW51bSB7CiAgICBOU1JlZ3VsYXJDb250cm9sU2l6ZSwKICAg
IE5TU21hbGxDb250cm9sU2l6ZQoKICAgICwgTlNNaW5pQ29udHJvbFNpemUKCn07CnR5cGVkZWYg
TlNVSW50ZWdlciBOU0NvbnRyb2xTaXplOwoKdHlwZWRlZiBzdHJ1Y3QgX19DRmxhZ3MgewogICAg
dW5zaWduZWQgaW50IHN0YXRlOjE7CiAgICB1bnNpZ25lZCBpbnQgaGlnaGxpZ2h0ZWQ6MTsKICAg
IHVuc2lnbmVkIGludCBkaXNhYmxlZDoxOwogICAgdW5zaWduZWQgaW50IGVkaXRhYmxlOjE7CiAg
ICBOU0NlbGxUeXBlIHR5cGU6MjsKICAgIHVuc2lnbmVkIGludCB2Q2VudGVyZWQ6MTsKICAgIHVu
c2lnbmVkIGludCBoQ2VudGVyZWQ6MTsKICAgIHVuc2lnbmVkIGludCBib3JkZXJlZDoxOwogICAg
dW5zaWduZWQgaW50IGJlemVsZWQ6MTsKICAgIHVuc2lnbmVkIGludCBzZWxlY3RhYmxlOjE7CiAg
ICB1bnNpZ25lZCBpbnQgc2Nyb2xsYWJsZToxOwogICAgdW5zaWduZWQgaW50IGNvbnRpbnVvdXM6
MTsKICAgIHVuc2lnbmVkIGludCBhY3RPbk1vdXNlRG93bjoxOwogICAgdW5zaWduZWQgaW50IGlz
TGVhZjoxOwogICAgdW5zaWduZWQgaW50IGludmFsaWRPYmplY3RWYWx1ZToxOwogICAgdW5zaWdu
ZWQgaW50IGludmFsaWRGb250OjE7CiAgICBOU0xpbmVCcmVha01vZGUgbGluZUJyZWFrTW9kZToz
OwogICAgdW5zaWduZWQgaW50IGNlbGxSZXNlcnZlZDE6MjsKICAgIHVuc2lnbmVkIGludCBzaW5n
bGVMaW5lTW9kZToxOwogICAgdW5zaWduZWQgaW50IGFjdE9uTW91c2VEcmFnZ2VkOjE7CiAgICB1
bnNpZ25lZCBpbnQgaXNMb2FkZWQ6MTsKICAgIHVuc2lnbmVkIGludCB0cnVuY2F0ZUxhc3RMaW5l
OjE7CiAgICB1bnNpZ25lZCBpbnQgZG9udEFjdE9uTW91c2VVcDoxOwogICAgdW5zaWduZWQgaW50
IGlzV2hpdGU6MTsKICAgIHVuc2lnbmVkIGludCB1c2VVc2VyS2V5RXF1aXZhbGVudDoxOwogICAg
dW5zaWduZWQgaW50IHNob3dzRmlyc3RSZXNwb25kZXI6MTsKICAgIHVuc2lnbmVkIGludCBmb2N1
c1JpbmdUeXBlOjI7CiAgICB1bnNpZ25lZCBpbnQgd2FzU2VsZWN0YWJsZToxOwogICAgdW5zaWdu
ZWQgaW50IGhhc0ludmFsaWRPYmplY3Q6MTsKICAgIHVuc2lnbmVkIGludCBhbGxvd3NFZGl0aW5n
VGV4dEF0dHJpYnV0ZXM6MTsKICAgIHVuc2lnbmVkIGludCBpbXBvcnRzR3JhcGhpY3M6MTsKICAg
IE5TVGV4dEFsaWdubWVudCBhbGlnbm1lbnQ6MzsKICAgIHVuc2lnbmVkIGludCBsYXlvdXREaXJl
Y3Rpb25SVEw6MTsKICAgIHVuc2lnbmVkIGludCBiYWNrZ3JvdW5kU3R5bGU6MzsKICAgIHVuc2ln
bmVkIGludCBjZWxsUmVzZXJ2ZWQyOjQ7CiAgICB1bnNpZ25lZCBpbnQgcmVmdXNlc0ZpcnN0UmVz
cG9uZGVyOjE7CiAgICB1bnNpZ25lZCBpbnQgbmVlZHNIaWdobGlnaHRlZFRleHQ6MTsKICAgIHVu
c2lnbmVkIGludCBkb250QWxsb3dzVW5kbzoxOwogICAgdW5zaWduZWQgaW50IGN1cnJlbnRseUVk
aXRpbmc6MTsKICAgIHVuc2lnbmVkIGludCBhbGxvd3NNaXhlZFN0YXRlOjE7CiAgICB1bnNpZ25l
ZCBpbnQgaW5NaXhlZFN0YXRlOjE7CiAgICB1bnNpZ25lZCBpbnQgc2VuZHNBY3Rpb25PbkVuZEVk
aXRpbmc6MTsKICAgIHVuc2lnbmVkIGludCBpblNlbmRBY3Rpb246MTsKICAgIHVuc2lnbmVkIGlu
dCBtZW51V2FzU2V0OjE7CiAgICB1bnNpZ25lZCBpbnQgY29udHJvbFRpbnQ6MzsKICAgIHVuc2ln
bmVkIGludCBjb250cm9sU2l6ZToyOwogICAgdW5zaWduZWQgaW50IGJyYW5jaEltYWdlRGlzYWJs
ZWQ6MTsKICAgIHVuc2lnbmVkIGludCBkcmF3aW5nSW5SZXZlYWxvdmVyOjE7CiAgICB1bnNpZ25l
ZCBpbnQgbmVlZHNIaWdobGlnaHRlZFRleHRIaW50OjE7Cn0gX0NGbGFnczsKCgoKQGludGVyZmFj
ZSBOU0NlbGwgOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4KewoKICAgIGlkIF9jb250
ZW50czsKICAgIF9DRmxhZ3MgX2NGbGFnczsKQHByaXZhdGUKCgogICAgaWQgX3N1cHBvcnQ7Cn0K
CgorIChCT09MKXByZWZlcnNUcmFja2luZ1VudGlsTW91c2VVcDsKCgotIChpZClpbml0VGV4dENl
bGw6KE5TU3RyaW5nICopYVN0cmluZzsKLSAoaWQpaW5pdEltYWdlQ2VsbDooTlNJbWFnZSAqKWlt
YWdlOwoKLSAoTlNWaWV3ICopY29udHJvbFZpZXc7CgotICh2b2lkKXNldENvbnRyb2xWaWV3OihO
U1ZpZXcqKXZpZXc7CgotIChOU0NlbGxUeXBlKXR5cGU7Ci0gKHZvaWQpc2V0VHlwZTooTlNDZWxs
VHlwZSlhVHlwZTsKLSAoTlNJbnRlZ2VyKXN0YXRlOwotICh2b2lkKXNldFN0YXRlOihOU0ludGVn
ZXIpdmFsdWU7Ci0gKGlkKXRhcmdldDsKLSAodm9pZClzZXRUYXJnZXQ6KGlkKWFuT2JqZWN0Owot
IChTRUwpYWN0aW9uOwotICh2b2lkKXNldEFjdGlvbjooU0VMKWFTZWxlY3RvcjsKLSAoTlNJbnRl
Z2VyKXRhZzsKLSAodm9pZClzZXRUYWc6KE5TSW50ZWdlcilhbkludDsKLSAoTlNTdHJpbmcqKXRp
dGxlOwotICh2b2lkKXNldFRpdGxlOihOU1N0cmluZyopYVN0cmluZzsKLSAoQk9PTClpc09wYXF1
ZTsKLSAoQk9PTClpc0VuYWJsZWQ7Ci0gKHZvaWQpc2V0RW5hYmxlZDooQk9PTClmbGFnOwotIChO
U0ludGVnZXIpc2VuZEFjdGlvbk9uOihOU0ludGVnZXIpbWFzazsKLSAoQk9PTClpc0NvbnRpbnVv
dXM7Ci0gKHZvaWQpc2V0Q29udGludW91czooQk9PTClmbGFnOwotIChCT09MKWlzRWRpdGFibGU7
Ci0gKHZvaWQpc2V0RWRpdGFibGU6KEJPT0wpZmxhZzsKLSAoQk9PTClpc1NlbGVjdGFibGU7Ci0g
KHZvaWQpc2V0U2VsZWN0YWJsZTooQk9PTClmbGFnOwotIChCT09MKWlzQm9yZGVyZWQ7Ci0gKHZv
aWQpc2V0Qm9yZGVyZWQ6KEJPT0wpZmxhZzsKLSAoQk9PTClpc0JlemVsZWQ7Ci0gKHZvaWQpc2V0
QmV6ZWxlZDooQk9PTClmbGFnOwotIChCT09MKWlzU2Nyb2xsYWJsZTsKLSAodm9pZClzZXRTY3Jv
bGxhYmxlOihCT09MKWZsYWc7Ci0gKEJPT0wpaXNIaWdobGlnaHRlZDsKLSAodm9pZClzZXRIaWdo
bGlnaHRlZDooQk9PTClmbGFnOwotIChOU1RleHRBbGlnbm1lbnQpYWxpZ25tZW50OwotICh2b2lk
KXNldEFsaWdubWVudDooTlNUZXh0QWxpZ25tZW50KW1vZGU7Ci0gKEJPT0wpd3JhcHM7Ci0gKHZv
aWQpc2V0V3JhcHM6KEJPT0wpZmxhZzsKLSAoTlNGb250ICopZm9udDsKLSAodm9pZClzZXRGb250
OihOU0ZvbnQgKilmb250T2JqOwotIChCT09MKWlzRW50cnlBY2NlcHRhYmxlOihOU1N0cmluZyAq
KWFTdHJpbmc7Ci0gKE5TU3RyaW5nICopa2V5RXF1aXZhbGVudDsKLSAodm9pZClzZXRGb3JtYXR0
ZXI6KE5TRm9ybWF0dGVyICopbmV3Rm9ybWF0dGVyOwotIChpZClmb3JtYXR0ZXI7Ci0gKGlkKW9i
amVjdFZhbHVlOwotICh2b2lkKXNldE9iamVjdFZhbHVlOihpZCA8TlNDb3B5aW5nPilvYmo7Ci0g
KEJPT0wpaGFzVmFsaWRPYmplY3RWYWx1ZTsKLSAoTlNTdHJpbmcgKilzdHJpbmdWYWx1ZTsKLSAo
dm9pZClzZXRTdHJpbmdWYWx1ZTooTlNTdHJpbmcgKilhU3RyaW5nOwotIChOU0NvbXBhcmlzb25S
ZXN1bHQpY29tcGFyZTooaWQpb3RoZXJDZWxsOwotIChpbnQpaW50VmFsdWU7Ci0gKHZvaWQpc2V0
SW50VmFsdWU6KGludClhbkludDsKLSAoZmxvYXQpZmxvYXRWYWx1ZTsKLSAodm9pZClzZXRGbG9h
dFZhbHVlOihmbG9hdClhRmxvYXQ7Ci0gKGRvdWJsZSlkb3VibGVWYWx1ZTsKLSAodm9pZClzZXRE
b3VibGVWYWx1ZTooZG91YmxlKWFEb3VibGU7Ci0gKHZvaWQpdGFrZUludFZhbHVlRnJvbTooaWQp
c2VuZGVyOwotICh2b2lkKXRha2VGbG9hdFZhbHVlRnJvbTooaWQpc2VuZGVyOwotICh2b2lkKXRh
a2VEb3VibGVWYWx1ZUZyb206KGlkKXNlbmRlcjsKLSAodm9pZCl0YWtlU3RyaW5nVmFsdWVGcm9t
OihpZClzZW5kZXI7Ci0gKHZvaWQpdGFrZU9iamVjdFZhbHVlRnJvbTooaWQpc2VuZGVyOwotIChO
U0ltYWdlICopaW1hZ2U7Ci0gKHZvaWQpc2V0SW1hZ2U6KE5TSW1hZ2UgKilpbWFnZTsKLSAodm9p
ZClzZXRDb250cm9sVGludDooTlNDb250cm9sVGludCljb250cm9sVGludDsKLSAoTlNDb250cm9s
VGludCljb250cm9sVGludDsKLSAodm9pZClzZXRDb250cm9sU2l6ZTooTlNDb250cm9sU2l6ZSlz
aXplOwotIChOU0NvbnRyb2xTaXplKWNvbnRyb2xTaXplOwotIChpZClyZXByZXNlbnRlZE9iamVj
dDsKLSAodm9pZClzZXRSZXByZXNlbnRlZE9iamVjdDooaWQpYW5PYmplY3Q7Ci0gKE5TSW50ZWdl
ciljZWxsQXR0cmlidXRlOihOU0NlbGxBdHRyaWJ1dGUpYVBhcmFtZXRlcjsKLSAodm9pZClzZXRD
ZWxsQXR0cmlidXRlOihOU0NlbGxBdHRyaWJ1dGUpYVBhcmFtZXRlciB0bzooTlNJbnRlZ2VyKXZh
bHVlOwotIChOU1JlY3QpaW1hZ2VSZWN0Rm9yQm91bmRzOihOU1JlY3QpdGhlUmVjdDsKLSAoTlNS
ZWN0KXRpdGxlUmVjdEZvckJvdW5kczooTlNSZWN0KXRoZVJlY3Q7Ci0gKE5TUmVjdClkcmF3aW5n
UmVjdEZvckJvdW5kczooTlNSZWN0KXRoZVJlY3Q7Ci0gKE5TU2l6ZSljZWxsU2l6ZTsKLSAoTlNT
aXplKWNlbGxTaXplRm9yQm91bmRzOihOU1JlY3QpYVJlY3Q7Ci0gKE5TQ29sb3IgKiloaWdobGln
aHRDb2xvcldpdGhGcmFtZTooTlNSZWN0KWNlbGxGcmFtZSBpblZpZXc6KE5TVmlldyAqKWNvbnRy
b2xWaWV3OwotICh2b2lkKWNhbGNEcmF3SW5mbzooTlNSZWN0KWFSZWN0OwotIChOU1RleHQgKilz
ZXRVcEZpZWxkRWRpdG9yQXR0cmlidXRlczooTlNUZXh0ICopdGV4dE9iajsKLSAodm9pZClkcmF3
SW50ZXJpb3JXaXRoRnJhbWU6KE5TUmVjdCljZWxsRnJhbWUgaW5WaWV3OihOU1ZpZXcgKiljb250
cm9sVmlldzsKLSAodm9pZClkcmF3V2l0aEZyYW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzoo
TlNWaWV3ICopY29udHJvbFZpZXc7Ci0gKHZvaWQpaGlnaGxpZ2h0OihCT09MKWZsYWcgd2l0aEZy
YW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzooTlNWaWV3ICopY29udHJvbFZpZXc7Ci0gKE5T
SW50ZWdlciltb3VzZURvd25GbGFnczsKLSAodm9pZClnZXRQZXJpb2RpY0RlbGF5OihmbG9hdCAq
KWRlbGF5IGludGVydmFsOihmbG9hdCAqKWludGVydmFsOwotIChCT09MKXN0YXJ0VHJhY2tpbmdB
dDooTlNQb2ludClzdGFydFBvaW50IGluVmlldzooTlNWaWV3ICopY29udHJvbFZpZXc7Ci0gKEJP
T0wpY29udGludWVUcmFja2luZzooTlNQb2ludClsYXN0UG9pbnQgYXQ6KE5TUG9pbnQpY3VycmVu
dFBvaW50IGluVmlldzooTlNWaWV3ICopY29udHJvbFZpZXc7Ci0gKHZvaWQpc3RvcFRyYWNraW5n
OihOU1BvaW50KWxhc3RQb2ludCBhdDooTlNQb2ludClzdG9wUG9pbnQgaW5WaWV3OihOU1ZpZXcg
Kiljb250cm9sVmlldyBtb3VzZUlzVXA6KEJPT0wpZmxhZzsKLSAoQk9PTCl0cmFja01vdXNlOihO
U0V2ZW50ICopdGhlRXZlbnQgaW5SZWN0OihOU1JlY3QpY2VsbEZyYW1lIG9mVmlldzooTlNWaWV3
ICopY29udHJvbFZpZXcgdW50aWxNb3VzZVVwOihCT09MKWZsYWc7Ci0gKHZvaWQpZWRpdFdpdGhG
cmFtZTooTlNSZWN0KWFSZWN0IGluVmlldzooTlNWaWV3ICopY29udHJvbFZpZXcgZWRpdG9yOihO
U1RleHQgKil0ZXh0T2JqIGRlbGVnYXRlOihpZClhbk9iamVjdCBldmVudDooTlNFdmVudCAqKXRo
ZUV2ZW50OwotICh2b2lkKXNlbGVjdFdpdGhGcmFtZTooTlNSZWN0KWFSZWN0IGluVmlldzooTlNW
aWV3ICopY29udHJvbFZpZXcgZWRpdG9yOihOU1RleHQgKil0ZXh0T2JqIGRlbGVnYXRlOihpZClh
bk9iamVjdCBzdGFydDooTlNJbnRlZ2VyKXNlbFN0YXJ0IGxlbmd0aDooTlNJbnRlZ2VyKXNlbExl
bmd0aDsKLSAodm9pZCllbmRFZGl0aW5nOihOU1RleHQgKil0ZXh0T2JqOwotICh2b2lkKXJlc2V0
Q3Vyc29yUmVjdDooTlNSZWN0KWNlbGxGcmFtZSBpblZpZXc6KE5TVmlldyAqKWNvbnRyb2xWaWV3
OwoKLSAodm9pZClzZXRNZW51OihOU01lbnUgKilhTWVudTsKLSAoTlNNZW51ICopbWVudTsKLSAo
TlNNZW51ICopbWVudUZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQgaW5SZWN0OihOU1JlY3QpY2Vs
bEZyYW1lIG9mVmlldzooTlNWaWV3ICopdmlldzsKKyAoTlNNZW51ICopZGVmYXVsdE1lbnU7Cgot
ICh2b2lkKXNldFNlbmRzQWN0aW9uT25FbmRFZGl0aW5nOihCT09MKWZsYWc7Ci0gKEJPT0wpc2Vu
ZHNBY3Rpb25PbkVuZEVkaXRpbmc7CgoKLSAoTlNXcml0aW5nRGlyZWN0aW9uKWJhc2VXcml0aW5n
RGlyZWN0aW9uOwotICh2b2lkKXNldEJhc2VXcml0aW5nRGlyZWN0aW9uOihOU1dyaXRpbmdEaXJl
Y3Rpb24pd3JpdGluZ0RpcmVjdGlvbjsKCi0gKHZvaWQpc2V0TGluZUJyZWFrTW9kZTooTlNMaW5l
QnJlYWtNb2RlKW1vZGU7Ci0gKE5TTGluZUJyZWFrTW9kZSlsaW5lQnJlYWtNb2RlOwoKLSAodm9p
ZClzZXRBbGxvd3NVbmRvOihCT09MKWFsbG93c1VuZG87Ci0gKEJPT0wpYWxsb3dzVW5kbzsKCgoK
LSAoTlNJbnRlZ2VyKWludGVnZXJWYWx1ZTsKLSAodm9pZClzZXRJbnRlZ2VyVmFsdWU6KE5TSW50
ZWdlcilhbkludGVnZXI7Ci0gKHZvaWQpdGFrZUludGVnZXJWYWx1ZUZyb206KGlkKXNlbmRlcjsK
CgoKCi0gKEJPT0wpdHJ1bmNhdGVzTGFzdFZpc2libGVMaW5lIDsKLSAodm9pZClzZXRUcnVuY2F0
ZXNMYXN0VmlzaWJsZUxpbmU6KEJPT0wpZmxhZyA7CgoKCi0gKE5TVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbil1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIDsKLSAodm9pZClzZXRVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOihOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24p
bGF5b3V0RGlyZWN0aW9uIDsKCgoKLSAoTlNUZXh0VmlldyAqKWZpZWxkRWRpdG9yRm9yVmlldzoo
TlNWaWV3ICopYUNvbnRyb2xWaWV3IDsKCgoKLSAoQk9PTCl1c2VzU2luZ2xlTGluZU1vZGUgOwot
ICh2b2lkKXNldFVzZXNTaW5nbGVMaW5lTW9kZTooQk9PTClmbGFnIDsKQGVuZAoKQGludGVyZmFj
ZSBOU0NlbGwoTlNLZXlib2FyZFVJKQotICh2b2lkKXNldFJlZnVzZXNGaXJzdFJlc3BvbmRlcjoo
Qk9PTClmbGFnOwotIChCT09MKXJlZnVzZXNGaXJzdFJlc3BvbmRlcjsKLSAoQk9PTClhY2NlcHRz
Rmlyc3RSZXNwb25kZXI7Ci0gKHZvaWQpc2V0U2hvd3NGaXJzdFJlc3BvbmRlcjooQk9PTClzaG93
RlI7Ci0gKEJPT0wpc2hvd3NGaXJzdFJlc3BvbmRlcjsKLSAodm9pZClzZXRNbmVtb25pY0xvY2F0
aW9uOihOU1VJbnRlZ2VyKWxvY2F0aW9uOwotIChOU1VJbnRlZ2VyKW1uZW1vbmljTG9jYXRpb247
Ci0gKE5TU3RyaW5nICopbW5lbW9uaWM7Ci0gKHZvaWQpc2V0VGl0bGVXaXRoTW5lbW9uaWM6KE5T
U3RyaW5nICopc3RyaW5nV2l0aEFtcGVyc2FuZDsKLSAodm9pZClwZXJmb3JtQ2xpY2s6KGlkKXNl
bmRlcjsKCgotICh2b2lkKXNldEZvY3VzUmluZ1R5cGU6KE5TRm9jdXNSaW5nVHlwZSlmb2N1c1Jp
bmdUeXBlOwotIChOU0ZvY3VzUmluZ1R5cGUpZm9jdXNSaW5nVHlwZTsKKyAoTlNGb2N1c1JpbmdU
eXBlKWRlZmF1bHRGb2N1c1JpbmdUeXBlOwoKCi0gKEJPT0wpd2FudHNOb3RpZmljYXRpb25Gb3JN
YXJrZWRUZXh0OwoKQGVuZAoKQGludGVyZmFjZSBOU0NlbGwoTlNDZWxsQXR0cmlidXRlZFN0cmlu
Z01ldGhvZHMpCi0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmdWYWx1ZTsK
LSAodm9pZClzZXRBdHRyaWJ1dGVkU3RyaW5nVmFsdWU6KE5TQXR0cmlidXRlZFN0cmluZyAqKW9i
ajsKCi0gKEJPT0wpYWxsb3dzRWRpdGluZ1RleHRBdHRyaWJ1dGVzOwotICh2b2lkKXNldEFsbG93
c0VkaXRpbmdUZXh0QXR0cmlidXRlczooQk9PTClmbGFnOwotIChCT09MKWltcG9ydHNHcmFwaGlj
czsKLSAodm9pZClzZXRJbXBvcnRzR3JhcGhpY3M6KEJPT0wpZmxhZzsKQGVuZAoKQGludGVyZmFj
ZSBOU0NlbGwoTlNDZWxsTWl4ZWRTdGF0ZSkKLSAodm9pZClzZXRBbGxvd3NNaXhlZFN0YXRlOihC
T09MKWZsYWc7Ci0gKEJPT0wpYWxsb3dzTWl4ZWRTdGF0ZTsKLSAoTlNJbnRlZ2VyKW5leHRTdGF0
ZTsKLSAodm9pZClzZXROZXh0U3RhdGU7CkBlbmQKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQ29u
dHJvbFRpbnREaWRDaGFuZ2VOb3RpZmljYXRpb247CgoKCgoKZW51bSB7CgogICAgTlNDZWxsSGl0
Tm9uZSA9IDAsCgogICAgTlNDZWxsSGl0Q29udGVudEFyZWEgPSAxIDw8IDAsCgogICAgTlNDZWxs
SGl0RWRpdGFibGVUZXh0QXJlYSA9IDEgPDwgMSwKCiAgICBOU0NlbGxIaXRUcmFja2FibGVBcmVh
ID0gMSA8PCAyLAp9OwoKQGludGVyZmFjZSBOU0NlbGwoTlNDZWxsSGl0VGVzdCkKIyAzOTUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0NlbGwu
aCIgMwotIChOU1VJbnRlZ2VyKWhpdFRlc3RGb3JFdmVudDooTlNFdmVudCAqKWV2ZW50IGluUmVj
dDooTlNSZWN0KWNlbGxGcmFtZSBvZlZpZXc6KE5TVmlldyAqKWNvbnRyb2xWaWV3OwpAZW5kCgpA
aW50ZXJmYWNlIE5TQ2VsbChOU0NlbGxFeHBhbnNpb24pCgoKLSAoTlNSZWN0KWV4cGFuc2lvbkZy
YW1lV2l0aEZyYW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzooTlNWaWV3ICopdmlldzsKCgoK
LSAodm9pZClkcmF3V2l0aEV4cGFuc2lvbkZyYW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzoo
TlNWaWV3ICopdmlldzsKQGVuZAoKZW51bSB7CiAgICBOU0JhY2tncm91bmRTdHlsZUxpZ2h0ID0g
MCwKICAgIE5TQmFja2dyb3VuZFN0eWxlRGFyaywKICAgIE5TQmFja2dyb3VuZFN0eWxlUmFpc2Vk
LAogICAgTlNCYWNrZ3JvdW5kU3R5bGVMb3dlcmVkCn07CnR5cGVkZWYgTlNJbnRlZ2VyIE5TQmFj
a2dyb3VuZFN0eWxlOwoKQGludGVyZmFjZSBOU0NlbGwgKE5TQ2VsbEJhY2tncm91bmRTdHlsZSkK
CgoKLSAoTlNCYWNrZ3JvdW5kU3R5bGUpYmFja2dyb3VuZFN0eWxlOwotICh2b2lkKXNldEJhY2tn
cm91bmRTdHlsZTooTlNCYWNrZ3JvdW5kU3R5bGUpc3R5bGU7CgoKCgoKCi0gKE5TQmFja2dyb3Vu
ZFN0eWxlKWludGVyaW9yQmFja2dyb3VuZFN0eWxlOwoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TQ2Vs
bCAoTlNEZXByZWNhdGVkKQoKZW51bSB7CiAgICBOU1NjYWxlUHJvcG9ydGlvbmFsbHkgPSAwLAog
ICAgTlNTY2FsZVRvRml0LAogICAgTlNTY2FsZU5vbmUKfTsKCgotIChOU0ludGVnZXIpZW50cnlU
eXBlIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZClzZXRFbnRyeVR5cGU6KE5T
SW50ZWdlcilhVHlwZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKHZvaWQpc2V0Rmxv
YXRpbmdQb2ludEZvcm1hdDooQk9PTClhdXRvUmFuZ2UgbGVmdDooTlNVSW50ZWdlcilsZWZ0RGln
aXRzIHJpZ2h0OihOU1VJbnRlZ2VyKXJpZ2h0RGlnaXRzIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKCkBlbmQKCgoKCgoKZXh0ZXJuICJDIiB2b2lkIE5TRHJhd1RocmVlUGFydEltYWdlKE5T
UmVjdCBmcmFtZSwgTlNJbWFnZSAqc3RhcnRDYXAsIE5TSW1hZ2UgKmNlbnRlckZpbGwsIE5TSW1h
Z2UgKmVuZENhcCwgQk9PTCB2ZXJ0aWNhbCwgTlNDb21wb3NpdGluZ09wZXJhdGlvbiBvcCwgQ0dG
bG9hdCBhbHBoYUZyYWN0aW9uLCBCT09MIGZsaXBwZWQpIDsKCgoKCgpleHRlcm4gIkMiIHZvaWQg
TlNEcmF3TmluZVBhcnRJbWFnZShOU1JlY3QgZnJhbWUsIE5TSW1hZ2UgKnRvcExlZnRDb3JuZXIs
IE5TSW1hZ2UgKnRvcEVkZ2VGaWxsLCBOU0ltYWdlICp0b3BSaWdodENvcm5lciwgTlNJbWFnZSAq
bGVmdEVkZ2VGaWxsLCBOU0ltYWdlICpjZW50ZXJGaWxsLCBOU0ltYWdlICpyaWdodEVkZ2VGaWxs
LCBOU0ltYWdlICpib3R0b21MZWZ0Q29ybmVyLCBOU0ltYWdlICpib3R0b21FZGdlRmlsbCwgTlNJ
bWFnZSAqYm90dG9tUmlnaHRDb3JuZXIsIE5TQ29tcG9zaXRpbmdPcGVyYXRpb24gb3AsIENHRmxv
YXQgYWxwaGFGcmFjdGlvbiwgQk9PTCBmbGlwcGVkKSA7CiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQWN0aW9uQ2VsbC5oIiAyIDMKCkBp
bnRlcmZhY2UgTlNBY3Rpb25DZWxsIDogTlNDZWxsCnsKCiAgICBOU0ludGVnZXIgX3RhZzsKICAg
IGlkIF90YXJnZXQ7CiAgICBTRUwgX2FjdGlvbjsKICAgIGlkIF9jb250cm9sVmlldzsKfQoKLSAo
aWQpdGFyZ2V0OwotICh2b2lkKXNldFRhcmdldDooaWQpYW5PYmplY3Q7Ci0gKFNFTClhY3Rpb247
Ci0gKHZvaWQpc2V0QWN0aW9uOihTRUwpYVNlbGVjdG9yOwotIChOU0ludGVnZXIpdGFnOwotICh2
b2lkKXNldFRhZzooTlNJbnRlZ2VyKWFuSW50OwoKQGVuZAojIDkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0J1dHRvbkNlbGwuaCIgMiAzCgpA
Y2xhc3MgTlNBdHRyaWJ1dGVkU3RyaW5nLCBOU0ZvbnQsIE5TSW1hZ2UsIE5TU291bmQ7CgplbnVt
IHsKICAgIE5TTW9tZW50YXJ5TGlnaHRCdXR0b24gPSAwLAogICAgTlNQdXNoT25QdXNoT2ZmQnV0
dG9uID0gMSwKICAgIE5TVG9nZ2xlQnV0dG9uID0gMiwKICAgIE5TU3dpdGNoQnV0dG9uID0gMywK
ICAgIE5TUmFkaW9CdXR0b24gPSA0LAogICAgTlNNb21lbnRhcnlDaGFuZ2VCdXR0b24gPSA1LAog
ICAgTlNPbk9mZkJ1dHRvbiA9IDYsCiAgICBOU01vbWVudGFyeVB1c2hJbkJ1dHRvbiA9IDcsCgoK
CgogICAgTlNNb21lbnRhcnlQdXNoQnV0dG9uID0gMCwKICAgIE5TTW9tZW50YXJ5TGlnaHQgPSA3
Cgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNCdXR0b25UeXBlOwoKZW51bSB7CgogICAgTlNSb3Vu
ZGVkQmV6ZWxTdHlsZSA9IDEsCiAgICBOU1JlZ3VsYXJTcXVhcmVCZXplbFN0eWxlID0gMiwKICAg
IE5TVGhpY2tTcXVhcmVCZXplbFN0eWxlID0gMywKICAgIE5TVGhpY2tlclNxdWFyZUJlemVsU3R5
bGUgPSA0LAoKICAgIE5TRGlzY2xvc3VyZUJlemVsU3R5bGUgPSA1LAoKICAgIE5TU2hhZG93bGVz
c1NxdWFyZUJlemVsU3R5bGUgPSA2LAogICAgTlNDaXJjdWxhckJlemVsU3R5bGUgPSA3LAoKICAg
IE5TVGV4dHVyZWRTcXVhcmVCZXplbFN0eWxlID0gOCwKICAgIE5TSGVscEJ1dHRvbkJlemVsU3R5
bGUgPSA5LAoKCiAgICBOU1NtYWxsU3F1YXJlQmV6ZWxTdHlsZSA9IDEwLAogICAgTlNUZXh0dXJl
ZFJvdW5kZWRCZXplbFN0eWxlID0gMTEsCiAgICBOU1JvdW5kUmVjdEJlemVsU3R5bGUgPSAxMiwK
ICAgIE5TUmVjZXNzZWRCZXplbFN0eWxlID0gMTMsCiAgICBOU1JvdW5kZWREaXNjbG9zdXJlQmV6
ZWxTdHlsZSA9IDE0LAoKCgoKICAgIE5TU21hbGxJY29uQnV0dG9uQmV6ZWxTdHlsZSA9IDIKCn07
CnR5cGVkZWYgTlNVSW50ZWdlciBOU0JlemVsU3R5bGU7Cgp0eXBlZGVmIHN0cnVjdCBfX0JDRmxh
Z3MgewojIDg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvTlNCdXR0b25DZWxsLmgiIDMKICAgIHVuc2lnbmVkIGludCBhbHRlcm5hdGVNbmVtb25p
Y0xvY2F0aW9uOjg7CiAgICB1bnNpZ25lZCBpbnQgdXNlQnV0dG9uSW1hZ2VTb3VyY2U6MTsKICAg
IHVuc2lnbmVkIGludCByZXNlcnZlZDoyOwogICAgdW5zaWduZWQgaW50IHN1cHByZXNzQVhWYWx1
ZUNoYW5nZU5vdGU6MTsKICAgIHVuc2lnbmVkIGludCBkb2VzTm90RGltSW1hZ2U6MTsKICAgIHVu
c2lnbmVkIGludCBpbnNldDoyOwogICAgdW5zaWduZWQgaW50IHRyYW5zcGFyZW50OjE7CiAgICB1
bnNpZ25lZCBpbnQgbGFzdFN0YXRlOjE7CiAgICB1bnNpZ25lZCBpbnQgaGFzS2V5RXF1aXZhbGVu
dEluc3RlYWRPZkltYWdlOjE7CiAgICB1bnNpZ25lZCBpbnQgaW1hZ2VTaXplRGlmZjoxOwogICAg
dW5zaWduZWQgaW50IGltYWdlQW5kVGV4dDoxOwogICAgdW5zaWduZWQgaW50IGJvdHRvbU9yTGVm
dDoxOwogICAgdW5zaWduZWQgaW50IGhvcml6b250YWw6MTsKICAgIHVuc2lnbmVkIGludCBpbWFn
ZU92ZXJsYXBzOjE7CiAgICB1bnNpZ25lZCBpbnQgYm9yZGVyZWQ6MTsKICAgIHVuc2lnbmVkIGlu
dCBkcmF3aW5nOjE7CiAgICB1bnNpZ25lZCBpbnQgbGlnaHRCeUdyYXk6MTsKICAgIHVuc2lnbmVk
IGludCBsaWdodEJ5QmFja2dyb3VuZDoxOwogICAgdW5zaWduZWQgaW50IGxpZ2h0QnlDb250ZW50
czoxOwogICAgdW5zaWduZWQgaW50IGNoYW5nZUdyYXk6MTsKICAgIHVuc2lnbmVkIGludCBjaGFu
Z2VCYWNrZ3JvdW5kOjE7CiAgICB1bnNpZ25lZCBpbnQgY2hhbmdlQ29udGVudHM6MTsKICAgIHVu
c2lnbmVkIGludCBwdXNoSW46MTsKCn0gX0JDRmxhZ3M7Cgp0eXBlZGVmIHN0cnVjdCBfX0JDRmxh
Z3MyIHsKIyAxMjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU0J1dHRvbkNlbGwuaCIgMwogICAgdW5zaWduZWQgaW50IGJlemVsU3R5bGU6MzsK
ICAgIHVuc2lnbmVkIGludCBzaG93c0JvcmRlck9ubHlXaGlsZU1vdXNlSW5zaWRlOjE7CiAgICB1
bnNpZ25lZCBpbnQgbW91c2VJbnNpZGU6MTsKICAgIHVuc2lnbmVkIGludCBiZXplbFN0eWxlMjox
OwogICAgdW5zaWduZWQgaW50IGltYWdlU2NhbGluZzoyOwogICAgdW5zaWduZWQgaW50IGtleUVx
dWl2YWxlbnRNb2RpZmllck1hc2s6MjQ7Cgp9IF9CQ0ZsYWdzMjsKCkBpbnRlcmZhY2UgTlNCdXR0
b25DZWxsIDogTlNBY3Rpb25DZWxsCnsKCiAgICBOU1N0cmluZyAqX2FsdENvbnRlbnRzOwogICAg
aWQgX3NvdW5kOwogICAgTlNTdHJpbmcgKl9rZXlFcXVpdmFsZW50OwogICAgX0JDRmxhZ3MyIF9i
Y0ZsYWdzMjsKICAgIHVuc2lnbmVkIHNob3J0IF9wZXJpb2RpY0RlbGF5OwogICAgdW5zaWduZWQg
c2hvcnQgX3BlcmlvZGljSW50ZXJ2YWw7CiAgICBfQkNGbGFncyBfYmNGbGFnczsKICAgIE5TSW1h
Z2UgKl9ub3JtYWxJbWFnZTsKICAgIGlkIF9hbHRlcm5hdGVJbWFnZU9yS2V5RXF1aXZhbGVudEZv
bnQ7Cn0KCgotIChOU1N0cmluZyAqKXRpdGxlOwotICh2b2lkKXNldFRpdGxlOihOU1N0cmluZyAq
KWFTdHJpbmc7Ci0gKE5TU3RyaW5nICopYWx0ZXJuYXRlVGl0bGU7Ci0gKHZvaWQpc2V0QWx0ZXJu
YXRlVGl0bGU6KE5TU3RyaW5nICopYVN0cmluZzsKCi0gKE5TSW1hZ2UgKilhbHRlcm5hdGVJbWFn
ZTsKLSAodm9pZClzZXRBbHRlcm5hdGVJbWFnZTooTlNJbWFnZSAqKWltYWdlOwotIChOU0NlbGxJ
bWFnZVBvc2l0aW9uKWltYWdlUG9zaXRpb247Ci0gKHZvaWQpc2V0SW1hZ2VQb3NpdGlvbjooTlND
ZWxsSW1hZ2VQb3NpdGlvbilhUG9zaXRpb247CgotIChOU0ltYWdlU2NhbGluZylpbWFnZVNjYWxp
bmc7Ci0gKHZvaWQpc2V0SW1hZ2VTY2FsaW5nOihOU0ltYWdlU2NhbGluZylzY2FsaW5nOwoKCi0g
KE5TSW50ZWdlciloaWdobGlnaHRzQnk7Ci0gKHZvaWQpc2V0SGlnaGxpZ2h0c0J5OihOU0ludGVn
ZXIpYVR5cGU7Ci0gKE5TSW50ZWdlcilzaG93c1N0YXRlQnk7Ci0gKHZvaWQpc2V0U2hvd3NTdGF0
ZUJ5OihOU0ludGVnZXIpYVR5cGU7Ci0gKHZvaWQpc2V0QnV0dG9uVHlwZTooTlNCdXR0b25UeXBl
KWFUeXBlOwotIChCT09MKWlzT3BhcXVlOwotICh2b2lkKXNldEZvbnQ6KE5TRm9udCAqKWZvbnRP
Ymo7Ci0gKEJPT0wpaXNUcmFuc3BhcmVudDsKLSAodm9pZClzZXRUcmFuc3BhcmVudDooQk9PTClm
bGFnOwotICh2b2lkKXNldFBlcmlvZGljRGVsYXk6KGZsb2F0KWRlbGF5IGludGVydmFsOihmbG9h
dClpbnRlcnZhbDsKLSAodm9pZClnZXRQZXJpb2RpY0RlbGF5OihmbG9hdCAqKWRlbGF5IGludGVy
dmFsOihmbG9hdCAqKWludGVydmFsOwotIChOU1N0cmluZyAqKWtleUVxdWl2YWxlbnQ7Ci0gKHZv
aWQpc2V0S2V5RXF1aXZhbGVudDooTlNTdHJpbmcgKilhS2V5RXF1aXZhbGVudDsKLSAoTlNVSW50
ZWdlcilrZXlFcXVpdmFsZW50TW9kaWZpZXJNYXNrOwotICh2b2lkKXNldEtleUVxdWl2YWxlbnRN
b2RpZmllck1hc2s6KE5TVUludGVnZXIpbWFzazsKLSAoTlNGb250ICopa2V5RXF1aXZhbGVudEZv
bnQ7Ci0gKHZvaWQpc2V0S2V5RXF1aXZhbGVudEZvbnQ6KE5TRm9udCAqKWZvbnRPYmo7Ci0gKHZv
aWQpc2V0S2V5RXF1aXZhbGVudEZvbnQ6KE5TU3RyaW5nICopZm9udE5hbWUgc2l6ZTooQ0dGbG9h
dClmb250U2l6ZTsKLSAodm9pZClwZXJmb3JtQ2xpY2s6KGlkKXNlbmRlcjsKCgotICh2b2lkKWRy
YXdJbWFnZTooTlNJbWFnZSopaW1hZ2Ugd2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgaW5WaWV3OihO
U1ZpZXcqKWNvbnRyb2xWaWV3OwotIChOU1JlY3QpZHJhd1RpdGxlOihOU0F0dHJpYnV0ZWRTdHJp
bmcqKXRpdGxlIHdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGluVmlldzooTlNWaWV3Kiljb250cm9s
VmlldzsKLSAodm9pZClkcmF3QmV6ZWxXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBpblZpZXc6KE5T
VmlldyopY29udHJvbFZpZXc7CgpAZW5kCgpAaW50ZXJmYWNlIE5TQnV0dG9uQ2VsbChOU0tleWJv
YXJkVUkpCi0gKHZvaWQpc2V0VGl0bGVXaXRoTW5lbW9uaWM6KE5TU3RyaW5nICopc3RyaW5nV2l0
aEFtcGVyc2FuZDsKLSAodm9pZClzZXRBbHRlcm5hdGVUaXRsZVdpdGhNbmVtb25pYzooTlNTdHJp
bmcgKilzdHJpbmdXaXRoQW1wZXJzYW5kOwotICh2b2lkKXNldEFsdGVybmF0ZU1uZW1vbmljTG9j
YXRpb246KE5TVUludGVnZXIpbG9jYXRpb247Ci0gKE5TVUludGVnZXIpYWx0ZXJuYXRlTW5lbW9u
aWNMb2NhdGlvbjsKLSAoTlNTdHJpbmcgKilhbHRlcm5hdGVNbmVtb25pYzsKQGVuZAojIDIwMiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQnV0
dG9uQ2VsbC5oIiAzCmVudW0gewogICAgTlNHcmFkaWVudE5vbmUgPSAwLAogICAgTlNHcmFkaWVu
dENvbmNhdmVXZWFrID0gMSwKICAgIE5TR3JhZGllbnRDb25jYXZlU3Ryb25nID0gMiwKICAgIE5T
R3JhZGllbnRDb252ZXhXZWFrID0gMywKICAgIE5TR3JhZGllbnRDb252ZXhTdHJvbmcgPSA0Cn07
CnR5cGVkZWYgTlNVSW50ZWdlciBOU0dyYWRpZW50VHlwZTsKCkBpbnRlcmZhY2UgTlNCdXR0b25D
ZWxsKE5TQnV0dG9uQ2VsbEV4dGVuc2lvbnMpCi0gKE5TR3JhZGllbnRUeXBlKWdyYWRpZW50VHlw
ZTsKLSAodm9pZClzZXRHcmFkaWVudFR5cGU6KE5TR3JhZGllbnRUeXBlKXR5cGU7CgoKCi0gKHZv
aWQpc2V0SW1hZ2VEaW1zV2hlbkRpc2FibGVkOihCT09MKWZsYWc7Ci0gKEJPT0wpaW1hZ2VEaW1z
V2hlbkRpc2FibGVkOwoKLSAodm9pZCkgc2V0U2hvd3NCb3JkZXJPbmx5V2hpbGVNb3VzZUluc2lk
ZTooQk9PTClzaG93OwotIChCT09MKSBzaG93c0JvcmRlck9ubHlXaGlsZU1vdXNlSW5zaWRlOwoK
LSAodm9pZCkgbW91c2VFbnRlcmVkOihOU0V2ZW50KilldmVudDsKLSAodm9pZCkgbW91c2VFeGl0
ZWQ6KE5TRXZlbnQqKWV2ZW50OwoKCi0gKE5TQ29sb3IqKWJhY2tncm91bmRDb2xvcjsKLSAodm9p
ZClzZXRCYWNrZ3JvdW5kQ29sb3I6KE5TQ29sb3IqKWNvbG9yOwoKCkBlbmQKCkBpbnRlcmZhY2Ug
TlNCdXR0b25DZWxsKE5TQnV0dG9uQ2VsbEF0dHJpYnV0ZWRTdHJpbmdNZXRob2RzKQotIChOU0F0
dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1dGVkVGl0bGU7Ci0gKHZvaWQpc2V0QXR0cmlidXRlZFRp
dGxlOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilvYmo7Ci0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0
dHJpYnV0ZWRBbHRlcm5hdGVUaXRsZTsKLSAodm9pZClzZXRBdHRyaWJ1dGVkQWx0ZXJuYXRlVGl0
bGU6KE5TQXR0cmlidXRlZFN0cmluZyAqKW9iajsKQGVuZAoKQGludGVyZmFjZSBOU0J1dHRvbkNl
bGwoTlNCdXR0b25DZWxsQmV6ZWxTdHlsZXMpCgotICh2b2lkKSBzZXRCZXplbFN0eWxlOihOU0Jl
emVsU3R5bGUpYmV6ZWxTdHlsZTsKLSAoTlNCZXplbFN0eWxlKWJlemVsU3R5bGU7CgpAZW5kCgpA
aW50ZXJmYWNlIE5TQnV0dG9uQ2VsbCAoTlNCdXR0b25DZWxsU291bmRFeHRlbnNpb25zKQotICh2
b2lkKXNldFNvdW5kOihOU1NvdW5kICopYVNvdW5kOwotIChOU1NvdW5kICopc291bmQ7CkBlbmQK
IyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJz
L05TQnV0dG9uLmgiIDIgMwoKCkBjbGFzcyBOU1NvdW5kOwoKQGludGVyZmFjZSBOU0J1dHRvbiA6
IE5TQ29udHJvbCA8TlNVc2VySW50ZXJmYWNlVmFsaWRhdGlvbnM+CgotIChOU1N0cmluZyAqKXRp
dGxlOwotICh2b2lkKXNldFRpdGxlOihOU1N0cmluZyAqKWFTdHJpbmc7Ci0gKE5TU3RyaW5nICop
YWx0ZXJuYXRlVGl0bGU7Ci0gKHZvaWQpc2V0QWx0ZXJuYXRlVGl0bGU6KE5TU3RyaW5nICopYVN0
cmluZzsKLSAoTlNJbWFnZSAqKWltYWdlOwotICh2b2lkKXNldEltYWdlOihOU0ltYWdlICopaW1h
Z2U7Ci0gKE5TSW1hZ2UgKilhbHRlcm5hdGVJbWFnZTsKLSAodm9pZClzZXRBbHRlcm5hdGVJbWFn
ZTooTlNJbWFnZSAqKWltYWdlOwotIChOU0NlbGxJbWFnZVBvc2l0aW9uKWltYWdlUG9zaXRpb247
Ci0gKHZvaWQpc2V0SW1hZ2VQb3NpdGlvbjooTlNDZWxsSW1hZ2VQb3NpdGlvbilhUG9zaXRpb247
Ci0gKHZvaWQpc2V0QnV0dG9uVHlwZTooTlNCdXR0b25UeXBlKWFUeXBlOwotIChOU0ludGVnZXIp
c3RhdGU7Ci0gKHZvaWQpc2V0U3RhdGU6KE5TSW50ZWdlcil2YWx1ZTsKLSAoQk9PTClpc0JvcmRl
cmVkOwotICh2b2lkKXNldEJvcmRlcmVkOihCT09MKWZsYWc7Ci0gKEJPT0wpaXNUcmFuc3BhcmVu
dDsKLSAodm9pZClzZXRUcmFuc3BhcmVudDooQk9PTClmbGFnOwotICh2b2lkKXNldFBlcmlvZGlj
RGVsYXk6KGZsb2F0KWRlbGF5IGludGVydmFsOihmbG9hdClpbnRlcnZhbDsKLSAodm9pZClnZXRQ
ZXJpb2RpY0RlbGF5OihmbG9hdCAqKWRlbGF5IGludGVydmFsOihmbG9hdCAqKWludGVydmFsOwot
IChOU1N0cmluZyAqKWtleUVxdWl2YWxlbnQ7Ci0gKHZvaWQpc2V0S2V5RXF1aXZhbGVudDooTlNT
dHJpbmcgKiljaGFyQ29kZTsKLSAoTlNVSW50ZWdlcilrZXlFcXVpdmFsZW50TW9kaWZpZXJNYXNr
OwotICh2b2lkKXNldEtleUVxdWl2YWxlbnRNb2RpZmllck1hc2s6KE5TVUludGVnZXIpbWFzazsK
LSAodm9pZCloaWdobGlnaHQ6KEJPT0wpZmxhZzsKLSAoQk9PTClwZXJmb3JtS2V5RXF1aXZhbGVu
dDooTlNFdmVudCAqKWtleTsKCkBlbmQKCkBpbnRlcmZhY2UgTlNCdXR0b24oTlNLZXlib2FyZFVJ
KQotICh2b2lkKXNldFRpdGxlV2l0aE1uZW1vbmljOihOU1N0cmluZyAqKXN0cmluZ1dpdGhBbXBl
cnNhbmQ7CkBlbmQKCkBpbnRlcmZhY2UgTlNCdXR0b24oTlNCdXR0b25BdHRyaWJ1dGVkU3RyaW5n
TWV0aG9kcykKLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFRpdGxlOwotICh2b2lk
KXNldEF0dHJpYnV0ZWRUaXRsZTooTlNBdHRyaWJ1dGVkU3RyaW5nICopYVN0cmluZzsKLSAoTlNB
dHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZEFsdGVybmF0ZVRpdGxlOwotICh2b2lkKXNldEF0
dHJpYnV0ZWRBbHRlcm5hdGVUaXRsZTooTlNBdHRyaWJ1dGVkU3RyaW5nICopb2JqOwpAZW5kCgpA
aW50ZXJmYWNlIE5TQnV0dG9uKE5TQnV0dG9uQmV6ZWxTdHlsZXMpCi0gKHZvaWQpIHNldEJlemVs
U3R5bGU6KE5TQmV6ZWxTdHlsZSliZXplbFN0eWxlOwotIChOU0JlemVsU3R5bGUpYmV6ZWxTdHls
ZTsKQGVuZAoKQGludGVyZmFjZSBOU0J1dHRvbihOU0J1dHRvbk1peGVkU3RhdGUpCi0gKHZvaWQp
c2V0QWxsb3dzTWl4ZWRTdGF0ZTooQk9PTClmbGFnOwotIChCT09MKWFsbG93c01peGVkU3RhdGU7
Ci0gKHZvaWQpc2V0TmV4dFN0YXRlOwpAZW5kCgpAaW50ZXJmYWNlIE5TQnV0dG9uKE5TQnV0dG9u
Qm9yZGVyKQotICh2b2lkKSBzZXRTaG93c0JvcmRlck9ubHlXaGlsZU1vdXNlSW5zaWRlOihCT09M
KXNob3c7Ci0gKEJPT0wpIHNob3dzQm9yZGVyT25seVdoaWxlTW91c2VJbnNpZGU7CkBlbmQKCkBp
bnRlcmZhY2UgTlNCdXR0b24gKE5TQnV0dG9uU291bmRFeHRlbnNpb25zKQotICh2b2lkKXNldFNv
dW5kOihOU1NvdW5kICopYVNvdW5kOwotIChOU1NvdW5kICopc291bmQ7CkBlbmQKIyAyOSAiLi4v
Li4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIuaCIgMgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUZXh0RmllbGQuaCIgMSAzCiMgOSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGV4dEZpZWxkLmgiIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
TlNUZXh0RmllbGRDZWxsLmgiIDEgMwojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUZXh0RmllbGRDZWxsLmgiIDMKZW51bSB7CiAgICBO
U1RleHRGaWVsZFNxdWFyZUJlemVsID0gMCwKICAgIE5TVGV4dEZpZWxkUm91bmRlZEJlemVsID0g
MQp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNUZXh0RmllbGRCZXplbFN0eWxlOwoKCkBjbGFzcyBO
U0NvbG9yOwoKQGludGVyZmFjZSBOU1RleHRGaWVsZENlbGwgOiBOU0FjdGlvbkNlbGwgewoKICAg
IE5TQ29sb3IgKl9iYWNrZ3JvdW5kQ29sb3I7CiAgICBOU0NvbG9yICpfdGV4dENvbG9yOwogICAg
c3RydWN0IF9fdGZGbGFncyB7CiB1bnNpZ25lZCBpbnQgZHJhd3NCYWNrZ3JvdW5kOjE7CiB1bnNp
Z25lZCBpbnQgYmV6ZWxTdHlsZTozOwogdW5zaWduZWQgaW50IHRoY1NvcnREaXJlY3Rpb246MjsK
IHVuc2lnbmVkIGludCB0aGNTb3J0UHJpb3JpdHk6NDsKIHVuc2lnbmVkIGludCBtaW5pOjE7CiB1
bnNpZ25lZCBpbnQgdGV4dENvbG9ySWdub3Jlc05vcm1hbERpc2FibGVGbGFnOjE7CiB1bnNpZ25l
ZCBpbnQgdGV4dENvbG9yRGlzYWJsZUZsYWc6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgdGhjRm9y
Y2VIaWdobGlnaHRGb3JTb3J0OjE7CiB1bnNpZ25lZCBpbnQgaW52YWxpZFRleHRDb2xvcjoxOwog
ICAgICAgIHVuc2lnbmVkIGludCBub3RpZmljYXRpb25Gb3JNYXJrZWRUZXh0OjE7CiB1bnNpZ25l
ZCBpbnQgcmVzZXJ2ZWRUZXh0RmllbGRDZWxsOjE2OwogICAgfSBfdGZGbGFnczsKfQoKLSAodm9p
ZClzZXRCYWNrZ3JvdW5kQ29sb3I6KE5TQ29sb3IgKiljb2xvcjsKLSAoTlNDb2xvciAqKWJhY2tn
cm91bmRDb2xvcjsKLSAodm9pZClzZXREcmF3c0JhY2tncm91bmQ6KEJPT0wpZmxhZzsKLSAoQk9P
TClkcmF3c0JhY2tncm91bmQ7Ci0gKHZvaWQpc2V0VGV4dENvbG9yOihOU0NvbG9yICopY29sb3I7
Ci0gKE5TQ29sb3IgKil0ZXh0Q29sb3I7Ci0gKE5TVGV4dCAqKXNldFVwRmllbGRFZGl0b3JBdHRy
aWJ1dGVzOihOU1RleHQgKil0ZXh0T2JqOwoKCi0gKHZvaWQpc2V0QmV6ZWxTdHlsZTooTlNUZXh0
RmllbGRCZXplbFN0eWxlKXN0eWxlOwotIChOU1RleHRGaWVsZEJlemVsU3R5bGUpYmV6ZWxTdHls
ZTsKCgoKLSAodm9pZClzZXRQbGFjZWhvbGRlclN0cmluZzooTlNTdHJpbmcqKXN0cmluZzsKLSAo
TlNTdHJpbmcqKXBsYWNlaG9sZGVyU3RyaW5nOwotICh2b2lkKXNldFBsYWNlaG9sZGVyQXR0cmli
dXRlZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nKilzdHJpbmc7Ci0gKE5TQXR0cmlidXRlZFN0
cmluZyopcGxhY2Vob2xkZXJBdHRyaWJ1dGVkU3RyaW5nOwoKCgotICh2b2lkKXNldFdhbnRzTm90
aWZpY2F0aW9uRm9yTWFya2VkVGV4dDooQk9PTClmbGFnOwoKCgotIChOU0FycmF5ICopYWxsb3dl
ZElucHV0U291cmNlTG9jYWxlczsKLSAodm9pZClzZXRBbGxvd2VkSW5wdXRTb3VyY2VMb2NhbGVz
OihOU0FycmF5ICopbG9jYWxlSWRlbnRpZmllcnM7CgoKQGVuZAojIDEwICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUZXh0RmllbGQuaCIgMiAz
CgoKQHByb3RvY29sIE5TVGV4dEZpZWxkRGVsZWdhdGU7CgpAaW50ZXJmYWNlIE5TVGV4dEZpZWxk
IDogTlNDb250cm9sIDxOU1VzZXJJbnRlcmZhY2VWYWxpZGF0aW9ucz4KewoKICAgIGlkIF9kZWxl
Z2F0ZTsKICAgIFNFTCBfZXJyb3JBY3Rpb247Cn0KCi0gKHZvaWQpc2V0QmFja2dyb3VuZENvbG9y
OihOU0NvbG9yICopY29sb3I7Ci0gKE5TQ29sb3IgKiliYWNrZ3JvdW5kQ29sb3I7Ci0gKHZvaWQp
c2V0RHJhd3NCYWNrZ3JvdW5kOihCT09MKWZsYWc7Ci0gKEJPT0wpZHJhd3NCYWNrZ3JvdW5kOwot
ICh2b2lkKXNldFRleHRDb2xvcjooTlNDb2xvciAqKWNvbG9yOwotIChOU0NvbG9yICopdGV4dENv
bG9yOwotIChCT09MKWlzQm9yZGVyZWQ7Ci0gKHZvaWQpc2V0Qm9yZGVyZWQ6KEJPT0wpZmxhZzsK
LSAoQk9PTClpc0JlemVsZWQ7Ci0gKHZvaWQpc2V0QmV6ZWxlZDooQk9PTClmbGFnOwotIChCT09M
KWlzRWRpdGFibGU7Ci0gKHZvaWQpc2V0RWRpdGFibGU6KEJPT0wpZmxhZzsKLSAoQk9PTClpc1Nl
bGVjdGFibGU7Ci0gKHZvaWQpc2V0U2VsZWN0YWJsZTooQk9PTClmbGFnOwotICh2b2lkKXNlbGVj
dFRleHQ6KGlkKXNlbmRlcjsKLSAoaWQgPE5TVGV4dEZpZWxkRGVsZWdhdGU+KWRlbGVnYXRlOwot
ICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNUZXh0RmllbGREZWxlZ2F0ZT4pYW5PYmplY3Q7Ci0g
KEJPT0wpdGV4dFNob3VsZEJlZ2luRWRpdGluZzooTlNUZXh0ICopdGV4dE9iamVjdDsKLSAoQk9P
TCl0ZXh0U2hvdWxkRW5kRWRpdGluZzooTlNUZXh0ICopdGV4dE9iamVjdDsKLSAodm9pZCl0ZXh0
RGlkQmVnaW5FZGl0aW5nOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLSAodm9pZCl0
ZXh0RGlkRW5kRWRpdGluZzooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0gKHZvaWQp
dGV4dERpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0gKEJPT0wpYWNj
ZXB0c0ZpcnN0UmVzcG9uZGVyOwoKCi0gKHZvaWQpc2V0QmV6ZWxTdHlsZTooTlNUZXh0RmllbGRC
ZXplbFN0eWxlKXN0eWxlOwotIChOU1RleHRGaWVsZEJlemVsU3R5bGUpYmV6ZWxTdHlsZTsKCkBl
bmQKCkBpbnRlcmZhY2UgTlNUZXh0RmllbGQoTlNLZXlib2FyZFVJKQotICh2b2lkKXNldFRpdGxl
V2l0aE1uZW1vbmljOihOU1N0cmluZyAqKXN0cmluZ1dpdGhBbXBlcnNhbmQ7CkBlbmQKCkBpbnRl
cmZhY2UgTlNUZXh0RmllbGQoTlNUZXh0RmllbGRBdHRyaWJ1dGVkU3RyaW5nTWV0aG9kcykKLSAo
Qk9PTClhbGxvd3NFZGl0aW5nVGV4dEF0dHJpYnV0ZXM7Ci0gKHZvaWQpc2V0QWxsb3dzRWRpdGlu
Z1RleHRBdHRyaWJ1dGVzOihCT09MKWZsYWc7Ci0gKEJPT0wpaW1wb3J0c0dyYXBoaWNzOwotICh2
b2lkKXNldEltcG9ydHNHcmFwaGljczooQk9PTClmbGFnOwpAZW5kCgpAcHJvdG9jb2wgTlNUZXh0
RmllbGREZWxlZ2F0ZSA8TlNDb250cm9sVGV4dEVkaXRpbmdEZWxlZ2F0ZT4gQGVuZAojIDMxICIu
Li8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVE
V2luZG93Q29udHJvbGxlci5oIiAyCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yay9IZWFkZXJzL05TVHJhY2tpbmdBcmVhLmgiIDEgMwojIDE0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUcmFja2luZ0Fy
ZWEuaCIgMwpAY2xhc3MgTlNEaWN0aW9uYXJ5OwoKCmVudW0gewogICAgTlNUcmFja2luZ01vdXNl
RW50ZXJlZEFuZEV4aXRlZCA9IDB4MDEsCiAgICBOU1RyYWNraW5nTW91c2VNb3ZlZCA9IDB4MDIs
CiAgICBOU1RyYWNraW5nQ3Vyc29yVXBkYXRlID0gMHgwNCwKfTsKCgplbnVtIHsKICAgIE5TVHJh
Y2tpbmdBY3RpdmVXaGVuRmlyc3RSZXNwb25kZXIgPSAweDEwLAogICAgTlNUcmFja2luZ0FjdGl2
ZUluS2V5V2luZG93ID0gMHgyMCwKICAgIE5TVHJhY2tpbmdBY3RpdmVJbkFjdGl2ZUFwcCA9IDB4
NDAsCiAgICBOU1RyYWNraW5nQWN0aXZlQWx3YXlzID0gMHg4MCwKfTsKCgplbnVtIHsKICAgIE5T
VHJhY2tpbmdBc3N1bWVJbnNpZGUgPSAweDEwMCwKICAgIE5TVHJhY2tpbmdJblZpc2libGVSZWN0
ID0gMHgyMDAsCiAgICBOU1RyYWNraW5nRW5hYmxlZER1cmluZ01vdXNlRHJhZyA9IDB4NDAwCn07
Cgp0eXBlZGVmIE5TVUludGVnZXIgTlNUcmFja2luZ0FyZWFPcHRpb25zOwoKQGludGVyZmFjZSBO
U1RyYWNraW5nQXJlYSA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TQ29kaW5nPgp7CkBwcml2YXRl
CiAgICBOU1JlY3QgX3JlY3Q7CiAgICBfX2F0dHJpYnV0ZV9fKChvYmpjX2djKHdlYWspKSkgaWQg
X293bmVyOwogICAgTlNEaWN0aW9uYXJ5ICogX3VzZXJJbmZvOwogICAgTlNUcmFja2luZ0FyZWFP
cHRpb25zIF9vcHRpb25zOwogICAgTlNJbnRlZ2VyIF9wcml2YXRlRmxhZ3M7CiAgICB2b2lkICpf
cmVzZXJ2ZWQ7Cn0KLSAoaWQpaW5pdFdpdGhSZWN0OihOU1JlY3QpcmVjdCBvcHRpb25zOihOU1Ry
YWNraW5nQXJlYU9wdGlvbnMpb3B0aW9ucyBvd25lcjooaWQpb3duZXIgdXNlckluZm86KE5TRGlj
dGlvbmFyeSAqKXVzZXJJbmZvOwotIChOU1JlY3QpcmVjdDsKLSAoTlNUcmFja2luZ0FyZWFPcHRp
b25zKW9wdGlvbnM7Ci0gKGlkKW93bmVyOwotIChOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKQGVu
ZAojIDMyICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxs
c2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oIiAyCgoKbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKfQoKQHByb3RvY29sIFdlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZTsKCkBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlcgp7CiAgICBpZCA8V2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPiBfZGVsZWdhdGU7CiAgICBO
U1RpbWVyICpfdGltZWxpbmVVcGRhdGVUaW1lcjsKICAgIE5TVHJhY2tpbmdBcmVhICpfYXJlYTsK
ICAgIEJPT0wgX21vdXNlSXNJbkhVRDsKICAgIEJPT0wgX2lzRW5kaW5nRnVsbHNjcmVlbjsKICAg
IEJPT0wgX2lzU2NydWJiaW5nOwoKICAgIE5TQ29udHJvbCAqX3RpbWVsaW5lOwogICAgTlNUZXh0
RmllbGQgKl9yZW1haW5pbmdUaW1lVGV4dDsKICAgIE5TVGV4dEZpZWxkICpfZWxhcHNlZFRpbWVU
ZXh0OwogICAgTlNDb250cm9sICpfdm9sdW1lU2xpZGVyOwogICAgTlNCdXR0b24gKl9wbGF5QnV0
dG9uOwp9CgotIChpZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVn
YXRlPilkZWxlZ2F0ZTsKLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPFdlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7Ci0gKHZvaWQpZmFkZVdpbmRv
d0luOwotICh2b2lkKWZhZGVXaW5kb3dPdXQ7Ci0gKHZvaWQpY2xvc2VXaW5kb3c7Ci0gKHZvaWQp
dXBkYXRlUmF0ZTsKCkBlbmQKCkBwcm90b2NvbCBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dD
b250cm9sbGVyRGVsZWdhdGUgPE5TT2JqZWN0PgotICh2b2lkKXJlcXVlc3RFeGl0RnVsbHNjcmVl
bjsKLSAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCopbWVkaWFFbGVtZW50OwpAZW5kCiMgMzMg
Ii4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLm1tIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYldpbmRvd0FuaW1hdGlvbi5oIiAxCiMgMjYgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24uaCIKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db2NvYS5mcmFtZXdvcmsvSGVhZGVycy9Db2NvYS5oIiAxIDMKIyAxMyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrL0hlYWRlcnMvQ29jb2EuaCIgMwoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9B
cHBLaXQuaCIgMSAzCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXRFcnJvcnMuaCIgMSAzCiMgMTQgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXRFcnJv
cnMuaCIgMwplbnVtIHsKICAgIE5TVGV4dFJlYWRJbmFwcGxpY2FibGVEb2N1bWVudFR5cGVFcnJv
ciA9IDY1ODA2LAogICAgTlNUZXh0V3JpdGVJbmFwcGxpY2FibGVEb2N1bWVudFR5cGVFcnJvciA9
IDY2MDYyLAoKCiAgICBOU1RleHRSZWFkV3JpdGVFcnJvck1pbmltdW0gPSA2NTc5MiwKICAgIE5T
VGV4dFJlYWRXcml0ZUVycm9yTWF4aW11bSA9IDY2MzAzLAoKCiAgICBOU1NlcnZpY2VBcHBsaWNh
dGlvbk5vdEZvdW5kRXJyb3IgPSA2NjU2MCwKICAgIE5TU2VydmljZUFwcGxpY2F0aW9uTGF1bmNo
RmFpbGVkRXJyb3IgPSA2NjU2MSwKICAgIE5TU2VydmljZVJlcXVlc3RUaW1lZE91dEVycm9yID0g
NjY1NjIsCiAgICBOU1NlcnZpY2VJbnZhbGlkUGFzdGVib2FyZERhdGFFcnJvciA9IDY2NTYzLAog
ICAgTlNTZXJ2aWNlTWFsZm9ybWVkU2VydmljZURpY3Rpb25hcnlFcnJvciA9IDY2NTY0LAogICAg
TlNTZXJ2aWNlTWlzY2VsbGFuZW91c0Vycm9yID0gNjY4MDAsCgoKICAgIE5TU2VydmljZUVycm9y
TWluaW11bSA9IDY2NTYwLAogICAgTlNTZXJ2aWNlRXJyb3JNYXhpbXVtID0gNjY4MTcKfTsKIyAx
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0Fw
cEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvTlNHcmFwaGljc0NvbnRleHQuaCIgMSAzCiMgMTMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0dyYXBoaWNzQ29udGV4dC5o
IiAzCkBjbGFzcyBOU0RpY3Rpb25hcnk7CkBjbGFzcyBOU1N0cmluZzsKQGNsYXNzIE5TV2luZG93
OwpAY2xhc3MgTlNCaXRtYXBJbWFnZVJlcDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0dyYXBo
aWNzQ29udGV4dERlc3RpbmF0aW9uQXR0cmlidXRlTmFtZTsKCgpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU0dyYXBoaWNzQ29udGV4dFJlcHJlc2VudGF0aW9uRm9ybWF0QXR0cmlidXRlTmFtZTsKCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICpOU0dyYXBoaWNzQ29udGV4dFBTRm9ybWF0OwpleHRlcm4gIkMi
IE5TU3RyaW5nICpOU0dyYXBoaWNzQ29udGV4dFBERkZvcm1hdDsKCmVudW0gewogICBOU0ltYWdl
SW50ZXJwb2xhdGlvbkRlZmF1bHQgPSAwLAogICBOU0ltYWdlSW50ZXJwb2xhdGlvbk5vbmUgPSAx
LAogICBOU0ltYWdlSW50ZXJwb2xhdGlvbkxvdyA9IDIsCgogICBOU0ltYWdlSW50ZXJwb2xhdGlv
bk1lZGl1bSA9IDQsCgogICBOU0ltYWdlSW50ZXJwb2xhdGlvbkhpZ2ggPSAzCn07CnR5cGVkZWYg
TlNVSW50ZWdlciBOU0ltYWdlSW50ZXJwb2xhdGlvbjsKCkBpbnRlcmZhY2UgTlNHcmFwaGljc0Nv
bnRleHQgOiBOU09iamVjdCB7Cn0KCgorIChOU0dyYXBoaWNzQ29udGV4dCAqKWdyYXBoaWNzQ29u
dGV4dFdpdGhBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilhdHRyaWJ1dGVzOwoKCisgKE5TR3Jh
cGhpY3NDb250ZXh0ICopZ3JhcGhpY3NDb250ZXh0V2l0aFdpbmRvdzooTlNXaW5kb3cgKil3aW5k
b3c7CgoKCgorIChOU0dyYXBoaWNzQ29udGV4dCAqKWdyYXBoaWNzQ29udGV4dFdpdGhCaXRtYXBJ
bWFnZVJlcDooTlNCaXRtYXBJbWFnZVJlcCAqKWJpdG1hcFJlcDsKCgoKKyAoTlNHcmFwaGljc0Nv
bnRleHQgKilncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0Oih2b2lkICopZ3JhcGhpY3NQ
b3J0IGZsaXBwZWQ6KEJPT0wpaW5pdGlhbEZsaXBwZWRTdGF0ZTsKCgoKKyAoTlNHcmFwaGljc0Nv
bnRleHQgKiljdXJyZW50Q29udGV4dDsKKyAodm9pZClzZXRDdXJyZW50Q29udGV4dDooTlNHcmFw
aGljc0NvbnRleHQgKiljb250ZXh0OwoKCisgKEJPT0wpY3VycmVudENvbnRleHREcmF3aW5nVG9T
Y3JlZW47CgoKCisgKHZvaWQpc2F2ZUdyYXBoaWNzU3RhdGU7CgorICh2b2lkKXJlc3RvcmVHcmFw
aGljc1N0YXRlOwoKKyAodm9pZClzZXRHcmFwaGljc1N0YXRlOihOU0ludGVnZXIpZ1N0YXRlOwoK
Ci0gKE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXM7CgoKLSAoQk9PTClpc0RyYXdpbmdUb1NjcmVl
bjsKCgotICh2b2lkKXNhdmVHcmFwaGljc1N0YXRlOwotICh2b2lkKXJlc3RvcmVHcmFwaGljc1N0
YXRlOwoKLSAodm9pZClmbHVzaEdyYXBoaWNzOwoKCi0gKHZvaWQgKilncmFwaGljc1BvcnQ7CgoK
CgotIChCT09MKWlzRmxpcHBlZDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNHcmFwaGljc0NvbnRleHQo
TlNHcmFwaGljc0NvbnRleHRfUmVuZGVyaW5nT3B0aW9ucykKCi0gKHZvaWQpc2V0U2hvdWxkQW50
aWFsaWFzOihCT09MKWFudGlhbGlhczsKLSAoQk9PTClzaG91bGRBbnRpYWxpYXM7Ci0gKHZvaWQp
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uOihOU0ltYWdlSW50ZXJwb2xhdGlvbilpbnRlcnBvbGF0aW9u
OwotIChOU0ltYWdlSW50ZXJwb2xhdGlvbilpbWFnZUludGVycG9sYXRpb247CgoKLSAodm9pZClz
ZXRQYXR0ZXJuUGhhc2U6KE5TUG9pbnQpcGhhc2U7Ci0gKE5TUG9pbnQpcGF0dGVyblBoYXNlOwoK
Ci0gKHZvaWQpc2V0Q29tcG9zaXRpbmdPcGVyYXRpb246KE5TQ29tcG9zaXRpbmdPcGVyYXRpb24p
b3BlcmF0aW9uOwotIChOU0NvbXBvc2l0aW5nT3BlcmF0aW9uKWNvbXBvc2l0aW5nT3BlcmF0aW9u
OwoKCi0gKE5TQ29sb3JSZW5kZXJpbmdJbnRlbnQpY29sb3JSZW5kZXJpbmdJbnRlbnQ7Ci0gKHZv
aWQpc2V0Q29sb3JSZW5kZXJpbmdJbnRlbnQ6KE5TQ29sb3JSZW5kZXJpbmdJbnRlbnQpcmVuZGVy
aW5nSW50ZW50OwoKQGVuZAoKCkBjbGFzcyBDSUNvbnRleHQ7CkBpbnRlcmZhY2UgTlNHcmFwaGlj
c0NvbnRleHQgKE5TUXVhcnR6Q29yZUFkZGl0aW9ucykKLSAoQ0lDb250ZXh0ICopQ0lDb250ZXh0
OwpAZW5kCiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yay9IZWFkZXJzL05TQWNjZXNzaWJpbGl0eS5oIiAxIDMKIyA5ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNBY2Nlc3NpYmls
aXR5LmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvTlNFcnJvcnMuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0Vycm9ycy5oIiAzCkBjbGFzcyBOU1N0cmluZzsK
CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUZXh0TGluZVRvb0xvbmdFeGNlcHRpb247CmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TVGV4dE5vU2VsZWN0aW9uRXhjZXB0aW9uOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpOU1dvcmRUYWJsZXNXcml0ZUV4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
TlNXb3JkVGFibGVzUmVhZEV4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUZXh0UmVh
ZEV4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUZXh0V3JpdGVFeGNlcHRpb247CmV4
dGVybiAiQyIgTlNTdHJpbmcgKk5TUGFzdGVib2FyZENvbW11bmljYXRpb25FeGNlcHRpb247CmV4
dGVybiAiQyIgTlNTdHJpbmcgKk5TUHJpbnRpbmdDb21tdW5pY2F0aW9uRXhjZXB0aW9uOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU0Fib3J0TW9kYWxFeGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJp
bmcgKk5TQWJvcnRQcmludGluZ0V4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNJbGxl
Z2FsU2VsZWN0b3JFeGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQXBwS2l0VmlydHVh
bE1lbW9yeUV4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNCYWRSVEZEaXJlY3RpdmVF
eGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQmFkUlRGRm9udFRhYmxlRXhjZXB0aW9u
OwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0JhZFJURlN0eWxlU2hlZXRFeGNlcHRpb247CmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TVHlwZWRTdHJlYW1WZXJzaW9uRXhjZXB0aW9uOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpOU1RJRkZFeGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TUHJpbnRQ
YWNrYWdlRXhjZXB0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0JhZFJURkNvbG9yVGFibGVF
eGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRHJhZ2dpbmdFeGNlcHRpb247CmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TQ29sb3JMaXN0SU9FeGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJp
bmcgKk5TQ29sb3JMaXN0Tm90RWRpdGFibGVFeGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcg
Kk5TQmFkQml0bWFwUGFyYW1ldGVyc0V4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNX
aW5kb3dTZXJ2ZXJDb21tdW5pY2F0aW9uRXhjZXB0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpO
U0ZvbnRVbmF2YWlsYWJsZUV4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNQUERJbmNs
dWRlTm90Rm91bmRFeGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TUFBEUGFyc2VFeGNl
cHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TUFBESW5jbHVkZVN0YWNrT3ZlcmZsb3dFeGNl
cHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TUFBESW5jbHVkZVN0YWNrVW5kZXJmbG93RXhj
ZXB0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1JURlByb3BlcnR5U3RhY2tPdmVyZmxvd0V4
Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNBcHBLaXRJZ25vcmVkRXhjZXB0aW9uOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpOU0JhZENvbXBhcmlzb25FeGNlcHRpb247CmV4dGVybiAiQyIg
TlNTdHJpbmcgKk5TSW1hZ2VDYWNoZUV4Y2VwdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNO
aWJMb2FkaW5nRXhjZXB0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0Jyb3dzZXJJbGxlZ2Fs
RGVsZWdhdGVFeGNlcHRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQWNjZXNzaWJpbGl0eUV4
Y2VwdGlvbjsKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29y
ay9IZWFkZXJzL05TQWNjZXNzaWJpbGl0eS5oIiAyIDMKCgoKQGNsYXNzIE5TU3RyaW5nLCBOU0Fy
cmF5OwoKCgoKCgpAaW50ZXJmYWNlIE5TT2JqZWN0IChOU0FjY2Vzc2liaWxpdHkpCgoKCi0gKE5T
QXJyYXkgKilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXM7Ci0gKGlkKWFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcgKilhdHRyaWJ1dGU7Ci0gKEJPT0wpYWNjZXNzaWJpbGl0
eUlzQXR0cmlidXRlU2V0dGFibGU6KE5TU3RyaW5nICopYXR0cmlidXRlOwotICh2b2lkKWFjY2Vz
c2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJp
YnV0ZTsKCgoKLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0cmlidXRl
TmFtZXMgOwotIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nICopYXR0
cmlidXRlIGZvclBhcmFtZXRlcjooaWQpcGFyYW1ldGVyIDsKCgoKLSAoTlNBcnJheSAqKWFjY2Vz
c2liaWxpdHlBY3Rpb25OYW1lczsKLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5QWN0aW9uRGVz
Y3JpcHRpb246KE5TU3RyaW5nICopYWN0aW9uOwotICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3Jt
QWN0aW9uOihOU1N0cmluZyAqKWFjdGlvbjsKCgoKLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkOwoKCgotIChpZClhY2Nlc3NpYmlsaXR5SGl0VGVzdDooTlNQb2ludClwb2ludDsKCgoKLSAo
aWQpYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQ7CgoKCgoKCgotIChOU1VJbnRlZ2VyKWFj
Y2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkIDsKCgoKLSAoTlNVSW50ZWdlcilhY2Nl
c3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGUgOwoKCgot
IChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOihOU1N0cmluZyAq
KWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilpbmRleCBtYXhDb3VudDooTlNVSW50ZWdlcilt
YXhDb3VudCA7CgpAZW5kCgoKCgpAaW50ZXJmYWNlIE5TT2JqZWN0IChOU0FjY2Vzc2liaWxpdHlB
ZGRpdGlvbnMpCgoKCi0gKEJPT0wpYWNjZXNzaWJpbGl0eVNldE92ZXJyaWRlVmFsdWU6KGlkKXZh
bHVlIGZvckF0dHJpYnV0ZTooTlNTdHJpbmcgKilhdHRyaWJ1dGUgOwoKQGVuZAoKCgoKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uKE5TU3RyaW5nICpy
b2xlLCBOU1N0cmluZyAqc3Vicm9sZSkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0FjY2Vzc2li
aWxpdHlSb2xlRGVzY3JpcHRpb25Gb3JVSUVsZW1lbnQoaWQgZWxlbWVudCkgOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpOU0FjY2Vzc2liaWxpdHlBY3Rpb25EZXNjcmlwdGlvbihOU1N0cmluZyAqYWN0
aW9uKSA7CgoKCgpleHRlcm4gIkMiIHZvaWQgTlNBY2Nlc3NpYmlsaXR5UmFpc2VCYWRBcmd1bWVu
dEV4Y2VwdGlvbihpZCBlbGVtZW50LCBOU1N0cmluZyAqYXR0cmlidXRlLCBpZCB2YWx1ZSkgOwoK
CgoKZXh0ZXJuICJDIiBpZCBOU0FjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihpZCBlbGVt
ZW50KTsKZXh0ZXJuICJDIiBpZCBOU0FjY2Vzc2liaWxpdHlVbmlnbm9yZWREZXNjZW5kYW50KGlk
IGVsZW1lbnQpOwpleHRlcm4gIkMiIE5TQXJyYXkgKk5TQWNjZXNzaWJpbGl0eVVuaWdub3JlZENo
aWxkcmVuKE5TQXJyYXkgKm9yaWdpbmFsQ2hpbGRyZW4pOwpleHRlcm4gIkMiIE5TQXJyYXkgKk5T
QWNjZXNzaWJpbGl0eVVuaWdub3JlZENoaWxkcmVuRm9yT25seUNoaWxkKGlkIG9yaWdpbmFsQ2hp
bGQpOwoKCgoKCmV4dGVybiAiQyIgdm9pZCBOU0FjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
KGlkIGVsZW1lbnQsIE5TU3RyaW5nICpub3RpZmljYXRpb24pOwojIDExNSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQWNjZXNzaWJpbGl0eS5o
IiAzCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUVycm9yQ29kZUV4
Y2VwdGlvbkluZm87CgoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJp
bGl0eVJvbGVBdHRyaWJ1dGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJp
bGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29u
c3QgTlNBY2Nlc3NpYmlsaXR5SGVscEF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29u
c3QgTlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0cmlidXRlOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpjb25zdCBOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZTsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlOwpleHRlcm4g
IkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZTsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVu
dEF0dHJpYnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBO
U0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGU7CmV4dGVybiAiQyIgTlNTdHJp
bmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlDb250ZW50c0F0dHJpYnV0ZTsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGU7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlCiAg
ICA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVNob3duTWVudUF0
dHJpYnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlW
YWx1ZURlc2NyaXB0aW9uQXR0cmlidXRlCiAgICA7CgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpj
b25zdCBOU0FjY2Vzc2liaWxpdHlQcmV2aW91c0NvbnRlbnRzQXR0cmlidXRlOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlOZXh0Q29udGVudHNBdHRyaWJ1dGU7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZTsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5RWRpdGVkQXR0cmlidXRl
OwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRl
OwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlIb3Jpem9udGFsU2Ny
b2xsQmFyQXR0cmlidXRlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxp
dHlWZXJ0aWNhbFNjcm9sbEJhckF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5T3ZlcmZsb3dCdXR0b25BdHRyaWJ1dGU7CmV4dGVybiAiQyIgTlNTdHJp
bmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEJ1dHRvbkF0dHJpYnV0ZTsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50QnV0dG9uQXR0cmli
dXRlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlGaWxlbmFtZUF0
dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5RXhwYW5k
ZWRBdHRyaWJ1dGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVNl
bGVjdGVkQXR0cmlidXRlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxp
dHlTcGxpdHRlcnNBdHRyaWJ1dGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNz
aWJpbGl0eURvY3VtZW50QXR0cmlidXRlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0Fj
Y2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGUKICAgIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGUKICAgIDsKCmV4dGVybiAiQyIgTlNTdHJpbmcg
KmNvbnN0IE5TQWNjZXNzaWJpbGl0eVJvd0NvdW50QXR0cmlidXRlCiAgICA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUNvbHVtbkNvdW50QXR0cmlidXRlCiAgICA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eU9yZGVyZWRCeVJvd0F0
dHJpYnV0ZQogICAgOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5
V2FybmluZ1ZhbHVlQXR0cmlidXRlCiAgICA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5T
QWNjZXNzaWJpbGl0eUNyaXRpY2FsVmFsdWVBdHRyaWJ1dGUKICAgIDsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZQogICAg
OwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxl
bWVudEF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5
U2VydmVzQXNUaXRsZUZvclVJRWxlbWVudHNBdHRyaWJ1dGUKICAgIDsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZQogICAg
OwoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRU
ZXh0QXR0cmlidXRlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlT
ZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNB
Y2Nlc3NpYmlsaXR5TnVtYmVyT2ZDaGFyYWN0ZXJzQXR0cmlidXRlCiAgICA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJp
YnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlTaGFy
ZWRUZXh0VUlFbGVtZW50c0F0dHJpYnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU0FjY2Vzc2liaWxpdHlTaGFyZWRDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZQogICAgOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlJbnNlcnRpb25Qb2ludExpbmVO
dW1iZXJBdHRyaWJ1dGUKICAgIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3Np
YmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VzQXR0cmlidXRlCiAgICA7CgoKCgpleHRlcm4gIkMiIE5T
U3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0
cmlidXRlCiAgICA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVJh
bmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKICAgIDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5U3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmli
dXRlCiAgICA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVJhbmdl
Rm9yUG9zaXRpb25QYXJhbWV0ZXJpemVkQXR0cmlidXRlCiAgICA7CmV4dGVybiAiQyIgTlNTdHJp
bmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVJhbmdlRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmli
dXRlCiAgICA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUJvdW5k
c0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpjb25zdCBOU0FjY2Vzc2liaWxpdHlSVEZGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUK
ICAgIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5U3R5bGVSYW5n
ZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpjb25zdCBOU0FjY2Vzc2liaWxpdHlBdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJp
emVkQXR0cmlidXRlCiAgICA7CgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vz
c2liaWxpdHlGb250VGV4dEF0dHJpYnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU0FjY2Vzc2liaWxpdHlGb3JlZ3JvdW5kQ29sb3JUZXh0QXR0cmlidXRlCiAgICA7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUJhY2tncm91bmRDb2xvclRleHRB
dHRyaWJ1dGUKICAgIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5
VW5kZXJsaW5lQ29sb3JUZXh0QXR0cmlidXRlCiAgICA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hDb2xvclRleHRBdHRyaWJ1dGUKICAgIDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0
dHJpYnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlT
dXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUKICAgIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaFRleHRBdHRyaWJ1dGUKICAgIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5U2hhZG93VGV4dEF0dHJpYnV0ZQogICAg
OwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlBdHRhY2htZW50VGV4
dEF0dHJpYnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxp
dHlMaW5rVGV4dEF0dHJpYnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0Fj
Y2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZQogICAgOwoKZXh0ZXJuICJDIiBOU1N0
cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5Rm9udE5hbWVLZXkKICAgIDsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5Rm9udEZhbWlseUtleQogICAgOwpleHRlcm4g
IkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlTmFtZUtleQogICAgOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlGb250U2l6ZUtleQogICAg
OwoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5TWFpbkF0dHJp
YnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5TWluaW1pemVk
QXR0cmlidXRlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlDbG9z
ZUJ1dHRvbkF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmls
aXR5Wm9vbUJ1dHRvbkF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nl
c3NpYmlsaXR5TWluaW1pemVCdXR0b25BdHRyaWJ1dGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TQWNjZXNzaWJpbGl0eVRvb2xiYXJCdXR0b25BdHRyaWJ1dGU7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVByb3h5QXR0cmlidXRlOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlHcm93QXJlYUF0dHJpYnV0ZTsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5TW9kYWxBdHRyaWJ1dGUKICAgIDsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5RGVmYXVsdEJ1dHRvbkF0dHJp
YnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlDYW5j
ZWxCdXR0b25BdHRyaWJ1dGUKICAgIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNB
Y2Nlc3NpYmlsaXR5TWVudUJhckF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5V2luZG93c0F0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29u
c3QgTlNBY2Nlc3NpYmlsaXR5RnJvbnRtb3N0QXR0cmlidXRlOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpjb25zdCBOU0FjY2Vzc2liaWxpdHlIaWRkZW5BdHRyaWJ1dGU7CmV4dGVybiAiQyIgTlNTdHJp
bmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eU1haW5XaW5kb3dBdHRyaWJ1dGU7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRXaW5kb3dBdHRyaWJ1dGU7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnRB
dHRyaWJ1dGU7CgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlPcmll
bnRhdGlvbkF0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmls
aXR5VmVydGljYWxPcmllbnRhdGlvblZhbHVlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBO
U0FjY2Vzc2liaWxpdHlIb3Jpem9udGFsT3JpZW50YXRpb25WYWx1ZTsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5VW5rbm93bk9yaWVudGF0aW9uVmFsdWUgOwoKZXh0
ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5Q29sdW1uVGl0bGVzQXR0cmli
dXRlOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5U2VhcmNoQnV0
dG9uQXR0cmlidXRlCiAgICA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJp
bGl0eVNlYXJjaE1lbnVBdHRyaWJ1dGUKICAgIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5Q2xlYXJCdXR0b25BdHRyaWJ1dGUKICAgIDsKCgoKCmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGU7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1
dGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRy
aWJ1dGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVZpc2libGVD
b2x1bW5zQXR0cmlidXRlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZENvbHVtbnNBdHRyaWJ1dGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5T
QWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25BdHRyaWJ1dGUKICAgIDsKCgoKZXh0ZXJuICJDIiBO
U1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDZWxsc0F0dHJpYnV0ZSA7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVZpc2libGVDZWxsc0F0dHJp
YnV0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVJvd0hlYWRl
clVJRWxlbWVudHNBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vz
c2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlIDsKCgoKZXh0ZXJuICJDIiBO
U1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5Q2VsbEZvckNvbHVtbkFuZFJvd1BhcmFtZXRl
cml6ZWRBdHRyaWJ1dGUgOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2li
aWxpdHlSb3dJbmRleFJhbmdlQXR0cmlidXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZSA7CgoKCmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxVbml0c0F0dHJpYnV0ZSA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVZlcnRpY2FsVW5pdHNB
dHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlIb3Jp
em9udGFsVW5pdERlc2NyaXB0aW9uQXR0cmlidXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29u
c3QgTlNBY2Nlc3NpYmlsaXR5VmVydGljYWxVbml0RGVzY3JpcHRpb25BdHRyaWJ1dGUgOwoKCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlMYXlvdXRQb2ludEZvclNj
cmVlblBvaW50UGFyYW1ldGVyaXplZEF0dHJpYnV0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TQWNjZXNzaWJpbGl0eUxheW91dFNpemVGb3JTY3JlZW5TaXplUGFyYW1ldGVyaXplZEF0
dHJpYnV0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVNjcmVl
blBvaW50Rm9yTGF5b3V0UG9pbnRQYXJhbWV0ZXJpemVkQXR0cmlidXRlIDsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5U2NyZWVuU2l6ZUZvckxheW91dFNpemVQYXJh
bWV0ZXJpemVkQXR0cmlidXRlIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nl
c3NpYmlsaXR5SGFuZGxlc0F0dHJpYnV0ZSA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0
IE5TQWNjZXNzaWJpbGl0eUFzY2VuZGluZ1NvcnREaXJlY3Rpb25WYWx1ZSA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eURlc2NlbmRpbmdTb3J0RGlyZWN0aW9uVmFs
dWUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlVbmtub3duU29y
dERpcmVjdGlvblZhbHVlIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3Np
YmlsaXR5RGlzY2xvc2luZ0F0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNB
Y2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
Y29uc3QgTlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkQnlSb3dBdHRyaWJ1dGU7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZQog
ICAgOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlBbGxvd2Vk
VmFsdWVzQXR0cmlidXRlCiAgICA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNz
aWJpbGl0eUxhYmVsVUlFbGVtZW50c0F0dHJpYnV0ZQogICAgOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpjb25zdCBOU0FjY2Vzc2liaWxpdHlMYWJlbFZhbHVlQXR0cmlidXRlCiAgICA7CgoKCmV4dGVy
biAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eU1hdHRlSG9sZUF0dHJpYnV0ZQog
ICAgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlNYXR0ZUNvbnRl
bnRVSUVsZW1lbnRBdHRyaWJ1dGUKICAgIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5TWFya2VyVUlFbGVtZW50c0F0dHJpYnV0ZQogICAgOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlNYXJrZXJWYWx1ZXNBdHRyaWJ1dGUKICAg
IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5TWFya2VyR3JvdXBV
SUVsZW1lbnRBdHRyaWJ1dGUKICAgIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nl
c3NpYmlsaXR5VW5pdHNBdHRyaWJ1dGUKICAgIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5VW5pdERlc2NyaXB0aW9uQXR0cmlidXRlCiAgICA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eU1hcmtlclR5cGVBdHRyaWJ1dGUKICAgIDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5TWFya2VyVHlwZURlc2Ny
aXB0aW9uQXR0cmlidXRlCiAgICA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNj
ZXNzaWJpbGl0eUxlZnRUYWJTdG9wTWFya2VyVHlwZVZhbHVlIDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5UmlnaHRUYWJTdG9wTWFya2VyVHlwZVZhbHVlIDsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5Q2VudGVyVGFiU3RvcE1hcmtl
clR5cGVWYWx1ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eURl
Y2ltYWxUYWJTdG9wTWFya2VyVHlwZVZhbHVlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5SGVhZEluZGVudE1hcmtlclR5cGVWYWx1ZSA7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVRhaWxJbmRlbnRNYXJrZXJUeXBlVmFsdWUgOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlGaXJzdExpbmVJbmRlbnRN
YXJrZXJUeXBlVmFsdWUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxp
dHlVbmtub3duTWFya2VyVHlwZVZhbHVlIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5SW5jaGVzVW5pdFZhbHVlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29u
c3QgTlNBY2Nlc3NpYmlsaXR5Q2VudGltZXRlcnNVbml0VmFsdWUgOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlQb2ludHNVbml0VmFsdWUgOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlQaWNhc1VuaXRWYWx1ZSA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVVua25vd25Vbml0VmFsdWUgOwoKCgpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbjsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb247CmV4
dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUNvbmZpcm1BY3Rpb247CmV4
dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVBpY2tBY3Rpb247CmV4dGVy
biAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUNhbmNlbEFjdGlvbiA7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVJhaXNlQWN0aW9uIDsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb24gOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlEZWxldGVBY3Rpb24gOwoKCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlNYWluV2luZG93Q2hhbmdl
ZE5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5
Rm9jdXNlZFdpbmRvd0NoYW5nZWROb3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkTm90aWZpY2F0aW9uOwoK
CgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlBcHBsaWNhdGlvbkFj
dGl2YXRlZE5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3Np
YmlsaXR5QXBwbGljYXRpb25EZWFjdGl2YXRlZE5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5QXBwbGljYXRpb25IaWRkZW5Ob3RpZmljYXRpb247
CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUFwcGxpY2F0aW9uU2hv
d25Ob3RpZmljYXRpb247CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJp
bGl0eVdpbmRvd0NyZWF0ZWROb3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0
IE5TQWNjZXNzaWJpbGl0eVdpbmRvd01vdmVkTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlXaW5kb3dSZXNpemVkTm90aWZpY2F0aW9uOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlXaW5kb3dNaW5pYXR1cml6ZWRO
b3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVdp
bmRvd0RlbWluaWF0dXJpemVkTm90aWZpY2F0aW9uOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpj
b25zdCBOU0FjY2Vzc2liaWxpdHlEcmF3ZXJDcmVhdGVkTm90aWZpY2F0aW9uIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5U2hlZXRDcmVhdGVkTm90aWZpY2F0aW9u
IDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
RGVzdHJveWVkTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vz
c2liaWxpdHlWYWx1ZUNoYW5nZWROb3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TQWNjZXNzaWJpbGl0eVRpdGxlQ2hhbmdlZE5vdGlmaWNhdGlvbiA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVJlc2l6ZWROb3RpZmljYXRpb24gOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlNb3ZlZE5vdGlmaWNhdGlvbiA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUNyZWF0ZWROb3RpZmlj
YXRpb24gOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlIZWxw
VGFnQ3JlYXRlZE5vdGlmaWNhdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNj
ZXNzaWJpbGl0eVNlbGVjdGVkVGV4dENoYW5nZWROb3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlSb3dDb3VudENoYW5nZWROb3RpZmljYXRpb24g
OwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxk
cmVuQ2hhbmdlZE5vdGlmaWNhdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNj
ZXNzaWJpbGl0eVNlbGVjdGVkUm93c0NoYW5nZWROb3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENvbHVtbnNDaGFuZ2VkTm90aWZp
Y2F0aW9uIDsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVJvd0V4
cGFuZGVkTm90aWZpY2F0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3Np
YmlsaXR5Um93Q29sbGFwc2VkTm90aWZpY2F0aW9uIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAq
Y29uc3QgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDZWxsc0NoYW5nZWROb3RpZmljYXRpb24gOwoK
CgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlVbml0c0NoYW5nZWRO
b3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlT
ZWxlY3RlZENoaWxkcmVuTW92ZWROb3RpZmljYXRpb24gOwoKCgoKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcg
KmNvbnN0IE5TQWNjZXNzaWJpbGl0eUJ1dHRvblJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TQWNjZXNzaWJpbGl0eVJhZGlvQnV0dG9uUm9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
Y29uc3QgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpj
b25zdCBOU0FjY2Vzc2liaWxpdHlTbGlkZXJSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU0FjY2Vzc2liaWxpdHlUYWJHcm91cFJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0
IE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0
IE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU0FjY2Vzc2liaWxpdHlUZXh0QXJlYVJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0
IE5TQWNjZXNzaWJpbGl0eVNjcm9sbEFyZWFSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU0FjY2Vzc2liaWxpdHlQb3BVcEJ1dHRvblJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TQWNjZXNzaWJpbGl0eU1lbnVCdXR0b25Sb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpj
b25zdCBOU0FjY2Vzc2liaWxpdHlUYWJsZVJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0
IE5TQWNjZXNzaWJpbGl0eUFwcGxpY2F0aW9uUm9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29u
c3QgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBO
U0FjY2Vzc2liaWxpdHlSYWRpb0dyb3VwUm9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5TGlzdFJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNj
ZXNzaWJpbGl0eVNjcm9sbEJhclJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNj
ZXNzaWJpbGl0eVZhbHVlSW5kaWNhdG9yUm9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNBY2Nlc3NpYmlsaXR5SW1hZ2VSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0Fj
Y2Vzc2liaWxpdHlNZW51QmFyUm9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nl
c3NpYmlsaXR5TWVudVJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJp
bGl0eU1lbnVJdGVtUm9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmls
aXR5Q29sdW1uUm9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5
Um93Um9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5VG9vbGJh
clJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUJ1c3lJbmRp
Y2F0b3JSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlQcm9n
cmVzc0luZGljYXRvclJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJp
bGl0eVdpbmRvd1JvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0
eURyYXdlclJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVN5
c3RlbVdpZGVSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlP
dXRsaW5lUm9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5SW5j
cmVtZW50b3JSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlC
cm93c2VyUm9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5Q29t
Ym9Cb3hSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlTcGxp
dEdyb3VwUm9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5U3Bs
aXR0ZXJSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlDb2xv
cldlbGxSb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlHcm93
QXJlYVJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVNoZWV0
Um9sZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmlsaXR5SGVscFRhZ1Jv
bGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlNYXR0ZVJvbGUg
OwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlSdWxlclJvbGUgOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlSdWxlck1hcmtlclJvbGUg
OwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlMaW5rUm9sZSA7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVUcmlhbmds
ZVJvbGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlHcmlkUm9s
ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVJlbGV2YW5jZUlu
ZGljYXRvclJvbGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlM
ZXZlbEluZGljYXRvclJvbGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2li
aWxpdHlDZWxsUm9sZSA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJp
bGl0eUxheW91dEFyZWFSb2xlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3Np
YmlsaXR5TGF5b3V0SXRlbVJvbGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vz
c2liaWxpdHlIYW5kbGVSb2xlIDsKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNj
ZXNzaWJpbGl0eVVua25vd25TdWJyb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0Fj
Y2Vzc2liaWxpdHlDbG9zZUJ1dHRvblN1YnJvbGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0
IE5TQWNjZXNzaWJpbGl0eVpvb21CdXR0b25TdWJyb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpj
b25zdCBOU0FjY2Vzc2liaWxpdHlNaW5pbWl6ZUJ1dHRvblN1YnJvbGU7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVRvb2xiYXJCdXR0b25TdWJyb2xlOwpleHRlcm4g
IkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlUYWJsZVJvd1N1YnJvbGU7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eU91dGxpbmVSb3dTdWJyb2xlOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlTZWN1cmVUZXh0RmllbGRT
dWJyb2xlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlTdGFuZGFy
ZFdpbmRvd1N1YnJvbGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxp
dHlEaWFsb2dTdWJyb2xlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmls
aXR5U3lzdGVtRGlhbG9nU3Vicm9sZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNj
ZXNzaWJpbGl0eUZsb2F0aW5nV2luZG93U3Vicm9sZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TQWNjZXNzaWJpbGl0eVN5c3RlbUZsb2F0aW5nV2luZG93U3Vicm9sZSA7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEFycm93U3Vicm9sZSA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eURlY3JlbWVudEFycm93
U3Vicm9sZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUluY3Jl
bWVudFBhZ2VTdWJyb2xlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNBY2Nlc3NpYmls
aXR5RGVjcmVtZW50UGFnZVN1YnJvbGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0Fj
Y2Vzc2liaWxpdHlTZWFyY2hGaWVsZFN1YnJvbGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU0FjY2Vzc2liaWxpdHlUZXh0QXR0YWNobWVudFN1YnJvbGUgOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlUZXh0TGlua1N1YnJvbGUgOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlUaW1lbGluZVN1YnJvbGUgOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlTb3J0QnV0dG9uU3Vicm9sZSA7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eVJhdGluZ0luZGljYXRvclN1YnJv
bGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlDb250ZW50TGlz
dFN1YnJvbGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vzc2liaWxpdHlEZWZp
bml0aW9uTGlzdFN1YnJvbGUgOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0FjY2Vz
c2liaWxpdHlTb3J0QnV0dG9uUm9sZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TQWNjZXNzaWJpbGl0eUhvcml6b250aWFsVW5pdHNBdHRy
aWJ1dGUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICpj
b25zdCBOU0FjY2Vzc2liaWxpdHlIb3Jpem9udGlhbFVuaXREZXNjcmlwdGlvbkF0dHJpYnV0ZSBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCgojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0FsZXJ0LmgiIDEg
MwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNBbGVydC5oIiAzCkBjbGFzcyBOU1RleHRGaWVsZCwgTlNQYW5lbCwgTlNBcnJheSwgTlNX
aW5kb3csIE5TSW1hZ2UsIE5TQnV0dG9uLCBOU0Vycm9yOwpAcHJvdG9jb2wgTlNBbGVydERlbGVn
YXRlOwoKCgoKCmVudW0gewogICAgTlNXYXJuaW5nQWxlcnRTdHlsZSA9IDAsCiAgICBOU0luZm9y
bWF0aW9uYWxBbGVydFN0eWxlID0gMSwKICAgIE5TQ3JpdGljYWxBbGVydFN0eWxlID0gMgp9Owp0
eXBlZGVmIE5TVUludGVnZXIgTlNBbGVydFN0eWxlOwoKQGludGVyZmFjZSBOU0FsZXJ0IDogTlNP
YmplY3QKewogICAgQHByaXZhdGUKCiAgICBOU1RleHRGaWVsZCAqX2luZm9ybWF0aW9uRmllbGQ7
CiAgICBpZCBfZmlyc3Q7CiAgICBpZCBfc2Vjb25kOwogICAgaWQgX3RoaXJkOwogICAgTlNBcnJh
eSAqX2J1dHRvbnM7CiAgICBOU1BhbmVsICpfcGFuZWw7CiAgICBpZCBfbWVzc2FnZUZpZWxkOwog
ICAgaWQgX2ltYWdlVmlldzsKICAgIE5TU2l6ZSBfbWluQnV0dG9uU2l6ZTsKICAgIENHRmxvYXQg
X2J1dHRvblNwYWNpbmc7CiAgICBDR0Zsb2F0IF9idXR0b25QYWRkaW5nOwogICAgQ0dGbG9hdCBf
bWVzc2FnZVBhZGRpbmc7CiAgICBDR0Zsb2F0IF9idXR0b25TcGFjaW5nTWF4WDsKICAgIENHRmxv
YXQgX2J1dHRvblNwYWNpbmdZOwogICAgaWQgX21vZGFsRGVsZWdhdGU7CiAgICBOU1dpbmRvdyAq
X2RvY1dpbmRvdzsKICAgIFNFTCBfZGlkRW5kU2VsZWN0b3I7CiAgICBTRUwgX2RpZERpc21pc3NT
ZWxlY3RvcjsKICAgIE5TSW1hZ2UgKl91bmJhZGdlZEltYWdlOwogICAgTlNTaXplIF9kZWZhdWx0
UGFuZWxTaXplOwogICAgaWQgX2hlbHBCdXR0b247CiAgICBpZCBfZGVsZWdhdGU7CiAgICBOU0Fs
ZXJ0U3R5bGUgX2FsZXJ0U3R5bGU7CiAgICBpZCBfaGVscEFuY2hvcjsKICAgIEJPT0wgX2xheW91
dERvbmU7CiAgICBCT09MIF9zaG93c0hlbHA7CiAgICBCT09MIF9zaG93c1N1cHByZXNzaW9uQnV0
dG9uOwogICAgQk9PTCByZXNlcnZlZDsKICAgIGlkIF9zdXBwcmVzc2lvbkJ1dHRvbjsKICAgIGlk
IF9hY2Nlc3NvcnlWaWV3Owp9CgoKCgoKKyAoTlNBbGVydCAqKWFsZXJ0V2l0aEVycm9yOihOU0Vy
cm9yICopZXJyb3I7CgoKCgoKKyAoTlNBbGVydCAqKWFsZXJ0V2l0aE1lc3NhZ2VUZXh0OihOU1N0
cmluZyAqKW1lc3NhZ2UgZGVmYXVsdEJ1dHRvbjooTlNTdHJpbmcgKilkZWZhdWx0QnV0dG9uIGFs
dGVybmF0ZUJ1dHRvbjooTlNTdHJpbmcgKilhbHRlcm5hdGVCdXR0b24gb3RoZXJCdXR0b246KE5T
U3RyaW5nICopb3RoZXJCdXR0b24gaW5mb3JtYXRpdmVUZXh0V2l0aEZvcm1hdDooTlNTdHJpbmcg
Kilmb3JtYXQsIC4uLjsKCi0gKHZvaWQpc2V0TWVzc2FnZVRleHQ6KE5TU3RyaW5nICopbWVzc2Fn
ZVRleHQ7Ci0gKHZvaWQpc2V0SW5mb3JtYXRpdmVUZXh0OihOU1N0cmluZyAqKWluZm9ybWF0aXZl
VGV4dDsKCi0gKE5TU3RyaW5nICopbWVzc2FnZVRleHQ7Ci0gKE5TU3RyaW5nICopaW5mb3JtYXRp
dmVUZXh0OwoKCgotICh2b2lkKXNldEljb246KE5TSW1hZ2UgKilpY29uOwotIChOU0ltYWdlICop
aWNvbjsKCgoKLSAoTlNCdXR0b24gKilhZGRCdXR0b25XaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0
bGU7CgoKLSAoTlNBcnJheSAqKWJ1dHRvbnM7CiMgOTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0FsZXJ0LmgiIDMKZW51bSB7CiBOU0FsZXJ0
Rmlyc3RCdXR0b25SZXR1cm4gPSAxMDAwLAogTlNBbGVydFNlY29uZEJ1dHRvblJldHVybiA9IDEw
MDEsCiBOU0FsZXJ0VGhpcmRCdXR0b25SZXR1cm4gPSAxMDAyCn07CiMgMTE4ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNBbGVydC5oIiAzCi0g
KHZvaWQpc2V0U2hvd3NIZWxwOihCT09MKXNob3dzSGVscDsKLSAoQk9PTClzaG93c0hlbHA7Cgot
ICh2b2lkKXNldEhlbHBBbmNob3I6KE5TU3RyaW5nICopYW5jaG9yOwotIChOU1N0cmluZyAqKWhl
bHBBbmNob3I7CgotICh2b2lkKXNldEFsZXJ0U3R5bGU6KE5TQWxlcnRTdHlsZSlzdHlsZTsKLSAo
TlNBbGVydFN0eWxlKWFsZXJ0U3R5bGU7CgotICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNBbGVy
dERlbGVnYXRlPilkZWxlZ2F0ZTsKLSAoaWQgPE5TQWxlcnREZWxlZ2F0ZT4pZGVsZWdhdGU7CgoK
CgotICh2b2lkKXNldFNob3dzU3VwcHJlc3Npb25CdXR0b246KEJPT0wpZmxhZzsKLSAoQk9PTClz
aG93c1N1cHByZXNzaW9uQnV0dG9uOwoKCgotIChOU0J1dHRvbiAqKXN1cHByZXNzaW9uQnV0dG9u
OwoKCgoKLSAodm9pZClzZXRBY2Nlc3NvcnlWaWV3OihOU1ZpZXcgKil2aWV3OwotIChOU1ZpZXcg
KilhY2Nlc3NvcnlWaWV3OwoKCgotICh2b2lkKWxheW91dDsKCgoKCgotIChOU0ludGVnZXIpcnVu
TW9kYWw7CgoKCgoKLSAodm9pZCliZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6KE5TV2luZG93ICop
d2luZG93IG1vZGFsRGVsZWdhdGU6KGlkKWRlbGVnYXRlIGRpZEVuZFNlbGVjdG9yOihTRUwpZGlk
RW5kU2VsZWN0b3IgY29udGV4dEluZm86KHZvaWQgKiljb250ZXh0SW5mbzsKCgoKLSAoaWQpd2lu
ZG93OwoKQGVuZAoKQHByb3RvY29sIE5TQWxlcnREZWxlZ2F0ZSA8TlNPYmplY3Q+CkBvcHRpb25h
bAoKCi0gKEJPT0wpYWxlcnRTaG93SGVscDooTlNBbGVydCAqKWFsZXJ0OwpAZW5kCiMgMTcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQu
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9I
ZWFkZXJzL05TQW5pbWF0aW9uQ29udGV4dC5oIiAxIDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQW5pbWF0aW9uQ29udGV4dC5oIiAz
CkBpbnRlcmZhY2UgTlNBbmltYXRpb25Db250ZXh0IDogTlNPYmplY3QKewogICAgTlNUaW1lSW50
ZXJ2YWwgX2R1cmF0aW9uOwogICAgaWQgX3Jlc2VydmVkWzVdOwp9CisgKHZvaWQpYmVnaW5Hcm91
cGluZzsKKyAodm9pZCllbmRHcm91cGluZzsKCisgKE5TQW5pbWF0aW9uQ29udGV4dCAqKWN1cnJl
bnRDb250ZXh0OwoKLSAodm9pZClzZXREdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb247
Ci0gKE5TVGltZUludGVydmFsKWR1cmF0aW9uOwpAZW5kCiMgMTggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQXBwbGVT
Y3JpcHRFeHRlbnNpb25zLmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNBcHBsZVNjcmlwdEV4dGVuc2lvbnMuaCIgMwpAY2xh
c3MgTlNBdHRyaWJ1dGVkU3RyaW5nOwoKCgoKQGludGVyZmFjZSBOU0FwcGxlU2NyaXB0KE5TRXh0
ZW5zaW9ucykKCgotIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilyaWNoVGV4dFNvdXJjZTsKCkBlbmQK
IyAxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJz
L0FwcEtpdC5oIiAyIDMKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZy
YW1ld29yay9IZWFkZXJzL05TQm94LmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNCb3guaCIgMwpAY2xhc3MgTlNGb250OwoK
ZW51bSB7CiAgICBOU05vVGl0bGUgPSAwLAogICAgTlNBYm92ZVRvcCA9IDEsCiAgICBOU0F0VG9w
ID0gMiwKICAgIE5TQmVsb3dUb3AgPSAzLAogICAgTlNBYm92ZUJvdHRvbSA9IDQsCiAgICBOU0F0
Qm90dG9tID0gNSwKICAgIE5TQmVsb3dCb3R0b20gPSA2Cn07CnR5cGVkZWYgTlNVSW50ZWdlciBO
U1RpdGxlUG9zaXRpb247CgplbnVtIHsKICAgIE5TQm94UHJpbWFyeSA9IDAsCiAgICBOU0JveFNl
Y29uZGFyeSA9IDEsCiAgICBOU0JveFNlcGFyYXRvciA9IDIsCiAgICBOU0JveE9sZFN0eWxlID0g
MywKCiAgICBOU0JveEN1c3RvbSA9IDQKCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU0JveFR5cGU7
CgpAaW50ZXJmYWNlIE5TQm94IDogTlNWaWV3CnsKCiAgICBpZCBfdGl0bGVDZWxsOwogICAgaWQg
X2NvbnRlbnRWaWV3OwogICAgTlNTaXplIF9vZmZzZXRzOwogICAgTlNSZWN0IF9ib3JkZXJSZWN0
OwogICAgTlNSZWN0IF90aXRsZVJlY3Q7CiAgICBzdHJ1Y3QgX19iRmxhZ3MgewogTlNCb3JkZXJU
eXBlIGJvcmRlclR5cGU6MjsKIE5TVGl0bGVQb3NpdGlvbiB0aXRsZVBvc2l0aW9uOjM7CiB1bnNp
Z25lZCBpbnQgYmFja2dyb3VuZFRyYW5zcGFyZW50OjE7CiAgICAgICAgdW5zaWduZWQgaW50IHJl
c2VydmVkOjI7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRzVGlsZToxOwogICAgICAgIHVuc2ln
bmVkIGludCB0cmFuc3BhcmVudDoxOwogICAgICAgIHVuc2lnbmVkIGludCBjb2xvckFsdEludGVy
cHJldGF0aW9uOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGJveFR5cGU6MzsKICAgICAgICB1bnNp
Z25lZCBpbnQgX1JFU0VSVkVEOjE4OwogICAgfSBfYkZsYWdzOwogICAgaWQgX3VudXNlZDsKfQoK
LSAoTlNCb3JkZXJUeXBlKWJvcmRlclR5cGU7Ci0gKE5TVGl0bGVQb3NpdGlvbil0aXRsZVBvc2l0
aW9uOwotICh2b2lkKXNldEJvcmRlclR5cGU6KE5TQm9yZGVyVHlwZSlhVHlwZTsKLSAodm9pZClz
ZXRCb3hUeXBlOihOU0JveFR5cGUpYm94VHlwZTsKLSAoTlNCb3hUeXBlKWJveFR5cGU7Ci0gKHZv
aWQpc2V0VGl0bGVQb3NpdGlvbjooTlNUaXRsZVBvc2l0aW9uKWFQb3NpdGlvbjsKLSAoTlNTdHJp
bmcgKil0aXRsZTsKLSAodm9pZClzZXRUaXRsZTooTlNTdHJpbmcgKilhU3RyaW5nOwotIChOU0Zv
bnQgKil0aXRsZUZvbnQ7Ci0gKHZvaWQpc2V0VGl0bGVGb250OihOU0ZvbnQgKilmb250T2JqOwot
IChOU1JlY3QpYm9yZGVyUmVjdDsKLSAoTlNSZWN0KXRpdGxlUmVjdDsKLSAoaWQpdGl0bGVDZWxs
OwotICh2b2lkKXNpemVUb0ZpdDsKLSAoTlNTaXplKWNvbnRlbnRWaWV3TWFyZ2luczsKLSAodm9p
ZClzZXRDb250ZW50Vmlld01hcmdpbnM6KE5TU2l6ZSlvZmZzZXRTaXplOwotICh2b2lkKXNldEZy
YW1lRnJvbUNvbnRlbnRGcmFtZTooTlNSZWN0KWNvbnRlbnRGcmFtZTsKLSAoaWQpY29udGVudFZp
ZXc7Ci0gKHZvaWQpc2V0Q29udGVudFZpZXc6KE5TVmlldyAqKWFWaWV3OwoKCgotIChCT09MKWlz
VHJhbnNwYXJlbnQ7Ci0gKHZvaWQpc2V0VHJhbnNwYXJlbnQ6KEJPT0wpZmxhZzsKCgpAZW5kCgpA
aW50ZXJmYWNlIE5TQm94KE5TS2V5Ym9hcmRVSSkKLSAodm9pZClzZXRUaXRsZVdpdGhNbmVtb25p
YzooTlNTdHJpbmcgKilzdHJpbmdXaXRoQW1wZXJzYW5kOwpAZW5kCgoKQGludGVyZmFjZSBOU0Jv
eCAoTlNDdXN0b21Cb3hUeXBlUHJvcGVydGllcykKCgoKLSAoQ0dGbG9hdClib3JkZXJXaWR0aDsK
LSAodm9pZClzZXRCb3JkZXJXaWR0aDooQ0dGbG9hdClib3JkZXJXaWR0aDsKCi0gKENHRmxvYXQp
Y29ybmVyUmFkaXVzOwotICh2b2lkKXNldENvcm5lclJhZGl1czooQ0dGbG9hdCljb3JuZXJSYWRp
dXM7CgotIChOU0NvbG9yICopYm9yZGVyQ29sb3I7Ci0gKHZvaWQpc2V0Qm9yZGVyQ29sb3I6KE5T
Q29sb3IgKilib3JkZXJDb2xvcjsKCi0gKE5TQ29sb3IgKilmaWxsQ29sb3I7Ci0gKHZvaWQpc2V0
RmlsbENvbG9yOihOU0NvbG9yICopZmlsbENvbG9yOwoKQGVuZAojIDIxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwoKCgoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9O
U0NsaXBWaWV3LmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNDbGlwVmlldy5oIiAzCkBjbGFzcyBOU0NvbG9yLCBOU05vdGlm
aWNhdGlvbjsKCkBpbnRlcmZhY2UgTlNDbGlwVmlldyA6IE5TVmlldwp7CgogICAgTlNDb2xvciAq
X2JhY2tncm91bmRDb2xvcjsKICAgIE5TVmlldyAqX2RvY1ZpZXc7CiAgICBOU1JlY3QgX2RvY1Jl
Y3Q7CiAgICBOU1JlY3QgX29sZERvY0ZyYW1lOwogICAgTlNDdXJzb3IgKl9jdXJzb3I7CiAgICBp
ZCBfc2Nyb2xsQW5pbWF0aW9uSGVscGVyOwogICAgc3RydWN0IF9fY3ZGbGFncyB7CiB1bnNpZ25l
ZCBpbnQgaXNGbGlwcGVkOjE7CiB1bnNpZ25lZCBpbnQgb25seVVuY292ZXJlZDoxOwogdW5zaWdu
ZWQgaW50IHJlZmxlY3RTY3JvbGw6MTsKIHVuc2lnbmVkIGludCB1c2VkQnlDZWxsOjE7CiB1bnNp
Z25lZCBpbnQgc2Nyb2xsQ2xpcFRvOjE7CiB1bnNpZ25lZCBpbnQgbm9Db3B5T25TY3JvbGw6MTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZHJhd3NCYWNrZ3JvdW5kOjE7CiAgICAgICAgdW5zaWduZWQg
aW50IHNjcm9sbEluUHJvZ3Jlc3M6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2tpcFJlbW92ZVN1
cGVydmlld0NoZWNrOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGFuaW1hdGVDdXJyZW50U2Nyb2xs
OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGNhbkFuaW1hdGVTY3JvbGxzOjE7CiAgICAgICAgdW5z
aWduZWQgaW50IG5leHRTY3JvbGxSZWxhdGl2ZVRvQ3VycmVudFBvc2l0aW9uOjE7CiAgICAgICAg
dW5zaWduZWQgaW50IHZpZXdCb3VuZHNDaGFuZ2VkT3ZlcnJpZGRlbjoxOwogICAgICAgIHVuc2ln
bmVkIGludCB2aWV3RnJhbWVDaGFuZ2VkT3ZlcnJpZGRlbjoxOwogICAgICAgIHVuc2lnbmVkIGlu
dCBkb2N1bWVudFZpZXdBbGlnbm1lbnQ6NDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVkcmF3bldo
aWxlU2Nyb2xsaW5nOjE7CiAgICAgICAgdW5zaWduZWQgaW50IFJFU0VSVkVEOjEzOwogICAgfSBf
Y3ZGbGFnczsKfQoKLSAodm9pZClzZXRCYWNrZ3JvdW5kQ29sb3I6KE5TQ29sb3IgKiljb2xvcjsK
LSAoTlNDb2xvciAqKWJhY2tncm91bmRDb2xvcjsKLSAodm9pZClzZXREcmF3c0JhY2tncm91bmQ6
KEJPT0wpZmxhZzsKLSAoQk9PTClkcmF3c0JhY2tncm91bmQ7Ci0gKHZvaWQpc2V0RG9jdW1lbnRW
aWV3OihOU1ZpZXcgKilhVmlldzsKLSAoaWQpZG9jdW1lbnRWaWV3OwotIChOU1JlY3QpZG9jdW1l
bnRSZWN0OwotICh2b2lkKXNldERvY3VtZW50Q3Vyc29yOihOU0N1cnNvciAqKWFuT2JqOwotIChO
U0N1cnNvciAqKWRvY3VtZW50Q3Vyc29yOwotIChOU1JlY3QpZG9jdW1lbnRWaXNpYmxlUmVjdDsK
LSAodm9pZCl2aWV3RnJhbWVDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsK
LSAodm9pZCl2aWV3Qm91bmRzQ2hhbmdlZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247
Ci0gKHZvaWQpc2V0Q29waWVzT25TY3JvbGw6KEJPT0wpZmxhZzsKLSAoQk9PTCljb3BpZXNPblNj
cm9sbDsKLSAoQk9PTClhdXRvc2Nyb2xsOihOU0V2ZW50ICopdGhlRXZlbnQ7Ci0gKE5TUG9pbnQp
Y29uc3RyYWluU2Nyb2xsUG9pbnQ6KE5TUG9pbnQpbmV3T3JpZ2luOwotICh2b2lkKXNjcm9sbFRv
UG9pbnQ6KE5TUG9pbnQpbmV3T3JpZ2luOwoKQGVuZAoKQGludGVyZmFjZSBOU1ZpZXcoTlNDbGlw
Vmlld1N1cGVydmlldykKLSAodm9pZClyZWZsZWN0U2Nyb2xsZWRDbGlwVmlldzooTlNDbGlwVmll
dyAqKWFDbGlwVmlldzsKLSAodm9pZClzY3JvbGxDbGlwVmlldzooTlNDbGlwVmlldyAqKWFDbGlw
VmlldyB0b1BvaW50OihOU1BvaW50KWFQb2ludDsKQGVuZAojIDI1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwoKIyAxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNEb2Nr
VGlsZS5oIiAxIDMKIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL05TRG9ja1RpbGUuaCIgMwojZGVmaW5lIE5TQXBwS2l0VmVyc2lvbk51bWJl
cldpdGhEb2NrVGlsZVBsdWdJblN1cHBvcnQgMTAwMS4wCgoKCkBjbGFzcyBOU1ZpZXc7CgpAaW50
ZXJmYWNlIE5TRG9ja1RpbGUgOiBOU09iamVjdCB7CiAgICBAcHJpdmF0ZTsKICAgIGlkIF9vd25l
cjsKICAgIHZvaWQgKl9kb2NrQ29udGV4dFJlZjsKICAgIE5TVmlldyAqX2NvbnRlbnRWaWV3Owog
ICAgTlNWaWV3ICpfZnJhbWVWaWV3OwogICAgTlNWaWV3ICpfYmFja3N0b3BWaWV3OwogICAgTlNT
dHJpbmcgKl9iYWRnZUxhYmVsOwogICAgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQgc2hv
d3NBcHBCYWRnZToxOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZDozMTsKICAgIH0gX2RG
bGFnczsKICAgIE5TU2l6ZSBfZG9ja1RpbGVTaXplOwogICAgaWQgcmVzZXJ2ZWRbNV07Cn0KCgoK
LSAoTlNTaXplKXNpemU7CgoKCi0gKHZvaWQpc2V0Q29udGVudFZpZXc6KE5TVmlldyAqKXZpZXc7
Ci0gKE5TVmlldyAqKWNvbnRlbnRWaWV3OwoKCgotICh2b2lkKWRpc3BsYXk7CgoKCi0gKHZvaWQp
c2V0U2hvd3NBcHBsaWNhdGlvbkJhZGdlOihCT09MKWZsYWc7Ci0gKEJPT0wpc2hvd3NBcHBsaWNh
dGlvbkJhZGdlOwoKCgotICh2b2lkKXNldEJhZGdlTGFiZWw6KE5TU3RyaW5nICopc3RyaW5nOwot
IChOU1N0cmluZyAqKWJhZGdlTGFiZWw7CgoKCi0gKGlkKW93bmVyOwoKQGVuZAoKCgoKCkBjbGFz
cyBOU01lbnU7CgoKCkBwcm90b2NvbCBOU0RvY2tUaWxlUGx1Z0luIDxOU09iamVjdD4KCkByZXF1
aXJlZAotICh2b2lkKXNldERvY2tUaWxlOihOU0RvY2tUaWxlKilkb2NrVGlsZTsKCkBvcHRpb25h
bAotIChOU01lbnUqKWRvY2tNZW51OwoKQGVuZAojIDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0ZvbnQuaCIgMSAz
CiMgMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9OU0ZvbnQuaCIgMwpAY2xhc3MgTlNGb250RGVzY3JpcHRvciwgTlNBZmZpbmVUcmFuc2Zvcm0s
IE5TR3JhcGhpY3NDb250ZXh0OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgTlNHbHlwaDsKCmVu
dW0gewogICAgTlNDb250cm9sR2x5cGggPSAweDAwRkZGRkZGLAogICAgTlNOdWxsR2x5cGggPSAw
eDAKfTsKCgoKCmV4dGVybiAiQyIgY29uc3QgQ0dGbG9hdCAqTlNGb250SWRlbnRpdHlNYXRyaXg7
CgoKCgplbnVtIHsKICAgIE5TTmF0aXZlU2hvcnRHbHlwaFBhY2tpbmcgPSA1Cn07CnR5cGVkZWYg
TlNVSW50ZWdlciBOU011bHRpYnl0ZUdseXBoUGFja2luZzsKCgoKZW51bSB7CiAgICBOU0ZvbnRE
ZWZhdWx0UmVuZGVyaW5nTW9kZSA9IDAsCiAgICBOU0ZvbnRBbnRpYWxpYXNlZFJlbmRlcmluZ01v
ZGUgPSAxLAogICAgTlNGb250SW50ZWdlckFkdmFuY2VtZW50c1JlbmRlcmluZ01vZGUgPSAyLAog
ICAgTlNGb250QW50aWFsaWFzZWRJbnRlZ2VyQWR2YW5jZW1lbnRzUmVuZGVyaW5nTW9kZSA9IDMK
fTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TRm9udFJlbmRlcmluZ01vZGU7CgoKQGludGVyZmFjZSBO
U0ZvbnQgOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4gewoKICAgIE5TU3RyaW5nICpf
bmFtZTsKICAgIENHRmxvYXQgX3NpemU7CiAgICBOU0ludGVnZXIgX3JldGFpbkNvdW50OwogICAg
c3RydWN0IF9fZkZsYWdzIHsKICAgICAgICB1bnNpZ25lZCBpbnQgX2lzU2NyZWVuRm9udDoxOwog
ICAgICAgIHVuc2lnbmVkIGludCBfc3lzdGVtRm9udFR5cGU6ODsKICAgICAgICB1bnNpZ25lZCBp
bnQgX3Jlc2VydmVkMTo0OwogICAgICAgIHVuc2lnbmVkIGludCBfbWF0cml4SXNJZGVudGl0eTox
OwogICAgICAgIHVuc2lnbmVkIGludCBfcmVuZGVyaW5nTW9kZTozOwogICAgICAgIHVuc2lnbmVk
IGludCBfcmVzZXJ2ZWQyOjE1OwogICAgfSBfZkZsYWdzOwogICAgaWQgX3ByaXZhdGU7Cn0KCgor
IChOU0ZvbnQgKilmb250V2l0aE5hbWU6KE5TU3RyaW5nICopZm9udE5hbWUgc2l6ZTooQ0dGbG9h
dClmb250U2l6ZTsKKyAoTlNGb250ICopZm9udFdpdGhOYW1lOihOU1N0cmluZyAqKWZvbnROYW1l
IG1hdHJpeDooY29uc3QgQ0dGbG9hdCAqKWZvbnRNYXRyaXg7CgoKCisgKE5TRm9udCAqKWZvbnRX
aXRoRGVzY3JpcHRvcjooTlNGb250RGVzY3JpcHRvciAqKWZvbnREZXNjcmlwdG9yIHNpemU6KENH
RmxvYXQpZm9udFNpemU7CgoKCisgKE5TRm9udCAqKWZvbnRXaXRoRGVzY3JpcHRvcjooTlNGb250
RGVzY3JpcHRvciAqKWZvbnREZXNjcmlwdG9yIHRleHRUcmFuc2Zvcm06KE5TQWZmaW5lVHJhbnNm
b3JtICopdGV4dFRyYW5zZm9ybTsKCgoKCgorIChOU0ZvbnQgKil1c2VyRm9udE9mU2l6ZTooQ0dG
bG9hdClmb250U2l6ZTsKKyAoTlNGb250ICopdXNlckZpeGVkUGl0Y2hGb250T2ZTaXplOihDR0Zs
b2F0KWZvbnRTaXplOworICh2b2lkKXNldFVzZXJGb250OihOU0ZvbnQgKilhRm9udDsKKyAodm9p
ZClzZXRVc2VyRml4ZWRQaXRjaEZvbnQ6KE5TRm9udCAqKWFGb250OwoKCgorIChOU0ZvbnQgKilz
eXN0ZW1Gb250T2ZTaXplOihDR0Zsb2F0KWZvbnRTaXplOworIChOU0ZvbnQgKilib2xkU3lzdGVt
Rm9udE9mU2l6ZTooQ0dGbG9hdClmb250U2l6ZTsKKyAoTlNGb250ICopbGFiZWxGb250T2ZTaXpl
OihDR0Zsb2F0KWZvbnRTaXplOwoKKyAoTlNGb250ICopdGl0bGVCYXJGb250T2ZTaXplOihDR0Zs
b2F0KWZvbnRTaXplOworIChOU0ZvbnQgKiltZW51Rm9udE9mU2l6ZTooQ0dGbG9hdClmb250U2l6
ZTsKCisgKE5TRm9udCAqKW1lbnVCYXJGb250T2ZTaXplOihDR0Zsb2F0KWZvbnRTaXplOwoKKyAo
TlNGb250ICopbWVzc2FnZUZvbnRPZlNpemU6KENHRmxvYXQpZm9udFNpemU7CisgKE5TRm9udCAq
KXBhbGV0dGVGb250T2ZTaXplOihDR0Zsb2F0KWZvbnRTaXplOworIChOU0ZvbnQgKil0b29sVGlw
c0ZvbnRPZlNpemU6KENHRmxvYXQpZm9udFNpemU7CisgKE5TRm9udCAqKWNvbnRyb2xDb250ZW50
Rm9udE9mU2l6ZTooQ0dGbG9hdClmb250U2l6ZTsKCgoKKyAoQ0dGbG9hdClzeXN0ZW1Gb250U2l6
ZTsKKyAoQ0dGbG9hdClzbWFsbFN5c3RlbUZvbnRTaXplOworIChDR0Zsb2F0KWxhYmVsRm9udFNp
emU7CgoKKyAoQ0dGbG9hdClzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplOihOU0NvbnRyb2xT
aXplKWNvbnRyb2xTaXplOwoKCgotIChOU1N0cmluZyAqKWZvbnROYW1lOwotIChDR0Zsb2F0KXBv
aW50U2l6ZTsKLSAoY29uc3QgQ0dGbG9hdCAqKW1hdHJpeDsKLSAoTlNTdHJpbmcgKilmYW1pbHlO
YW1lOwotIChOU1N0cmluZyAqKWRpc3BsYXlOYW1lOwoKLSAoTlNGb250RGVzY3JpcHRvciAqKWZv
bnREZXNjcmlwdG9yOwoKCi0gKE5TQWZmaW5lVHJhbnNmb3JtICopdGV4dFRyYW5zZm9ybTsKCgoK
LSAoTlNVSW50ZWdlciludW1iZXJPZkdseXBoczsKLSAoTlNTdHJpbmdFbmNvZGluZyltb3N0Q29t
cGF0aWJsZVN0cmluZ0VuY29kaW5nOwotIChOU0dseXBoKWdseXBoV2l0aE5hbWU6KE5TU3RyaW5n
ICopYU5hbWU7CgotIChOU0NoYXJhY3RlclNldCAqKWNvdmVyZWRDaGFyYWN0ZXJTZXQ7CgoKCgoK
LSAoTlNSZWN0KWJvdW5kaW5nUmVjdEZvckZvbnQ7Ci0gKE5TU2l6ZSltYXhpbXVtQWR2YW5jZW1l
bnQ7CgotIChDR0Zsb2F0KWFzY2VuZGVyOwotIChDR0Zsb2F0KWRlc2NlbmRlcjsKCi0gKENHRmxv
YXQpbGVhZGluZzsKCgotIChDR0Zsb2F0KXVuZGVybGluZVBvc2l0aW9uOwotIChDR0Zsb2F0KXVu
ZGVybGluZVRoaWNrbmVzczsKLSAoQ0dGbG9hdClpdGFsaWNBbmdsZTsKLSAoQ0dGbG9hdCljYXBI
ZWlnaHQ7Ci0gKENHRmxvYXQpeEhlaWdodDsKLSAoQk9PTClpc0ZpeGVkUGl0Y2g7CgoKLSAoTlNS
ZWN0KWJvdW5kaW5nUmVjdEZvckdseXBoOihOU0dseXBoKWFHbHlwaDsKLSAoTlNTaXplKWFkdmFu
Y2VtZW50Rm9yR2x5cGg6KE5TR2x5cGgpYWc7CgoKCi0gKHZvaWQpZ2V0Qm91bmRpbmdSZWN0czoo
TlNSZWN0QXJyYXkpYm91bmRzIGZvckdseXBoczooY29uc3QgTlNHbHlwaCAqKWdseXBocyBjb3Vu
dDooTlNVSW50ZWdlcilnbHlwaENvdW50OwotICh2b2lkKWdldEFkdmFuY2VtZW50czooTlNTaXpl
QXJyYXkpYWR2YW5jZW1lbnRzIGZvckdseXBoczooY29uc3QgTlNHbHlwaCAqKWdseXBocyBjb3Vu
dDooTlNVSW50ZWdlcilnbHlwaENvdW50OwotICh2b2lkKWdldEFkdmFuY2VtZW50czooTlNTaXpl
QXJyYXkpYWR2YW5jZW1lbnRzIGZvclBhY2tlZEdseXBoczooY29uc3Qgdm9pZCAqKXBhY2tlZEds
eXBocyBsZW5ndGg6KE5TVUludGVnZXIpbGVuZ3RoOwoKCgotICh2b2lkKXNldDsKCi0gKHZvaWQp
c2V0SW5Db250ZXh0OihOU0dyYXBoaWNzQ29udGV4dCAqKWdyYXBoaWNzQ29udGV4dDsKCgoKLSAo
TlNGb250ICopcHJpbnRlckZvbnQ7Ci0gKE5TRm9udCAqKXNjcmVlbkZvbnQ7CgotIChOU0ZvbnQg
KilzY3JlZW5Gb250V2l0aFJlbmRlcmluZ01vZGU6KE5TRm9udFJlbmRlcmluZ01vZGUpcmVuZGVy
aW5nTW9kZTsKLSAoTlNGb250UmVuZGVyaW5nTW9kZSlyZW5kZXJpbmdNb2RlOwoKQGVuZAoKCgoK
ZXh0ZXJuICJDIiBOU0ludGVnZXIgTlNDb252ZXJ0R2x5cGhzVG9QYWNrZWRHbHlwaHMoTlNHbHlw
aCAqZ2xCdWYsIE5TSW50ZWdlciBjb3VudCwgTlNNdWx0aWJ5dGVHbHlwaFBhY2tpbmcgcGFja2lu
ZywgY2hhciAqcGFja2VkR2x5cGhzKTsKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQW50aWFs
aWFzVGhyZXNob2xkQ2hhbmdlZE5vdGlmaWNhdGlvbiA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcg
Kk5TRm9udFNldENoYW5nZWROb3RpZmljYXRpb24gOwojIDI4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0ZvbnREZXNj
cmlwdG9yLmgiIDEgMwojIDIxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvTlNGb250RGVzY3JpcHRvci5oIiAzCnR5cGVkZWYgdWludDMyX3QgTlNG
b250U3ltYm9saWNUcmFpdHM7CgoKCgoKCgplbnVtIHsKICAgIE5TRm9udFVua25vd25DbGFzcyA9
IDAgPDwgMjgsCiAgICBOU0ZvbnRPbGRTdHlsZVNlcmlmc0NsYXNzID0gMSA8PCAyOCwKICAgIE5T
Rm9udFRyYW5zaXRpb25hbFNlcmlmc0NsYXNzID0gMiA8PCAyOCwKICAgIE5TRm9udE1vZGVyblNl
cmlmc0NsYXNzID0gMyA8PCAyOCwKICAgIE5TRm9udENsYXJlbmRvblNlcmlmc0NsYXNzID0gNCA8
PCAyOCwKICAgIE5TRm9udFNsYWJTZXJpZnNDbGFzcyA9IDUgPDwgMjgsCiAgICBOU0ZvbnRGcmVl
Zm9ybVNlcmlmc0NsYXNzID0gNyA8PCAyOCwKICAgIE5TRm9udFNhbnNTZXJpZkNsYXNzID0gOCA8
PCAyOCwKICAgIE5TRm9udE9ybmFtZW50YWxzQ2xhc3MgPSA5IDw8IDI4LAogICAgTlNGb250U2Ny
aXB0c0NsYXNzID0gMTAgPDwgMjgsCiAgICBOU0ZvbnRTeW1ib2xpY0NsYXNzID0gMTIgPDwgMjgK
fTsKdHlwZWRlZiB1aW50MzJfdCBOU0ZvbnRGYW1pbHlDbGFzczsKCmVudW0gewogICAgTlNGb250
RmFtaWx5Q2xhc3NNYXNrID0gMHhGMDAwMDAwMAp9OwoKCmVudW0gewogICAgTlNGb250SXRhbGlj
VHJhaXQgPSAoMSA8PCAwKSwKICAgIE5TRm9udEJvbGRUcmFpdCA9ICgxIDw8IDEpLAogICAgTlNG
b250RXhwYW5kZWRUcmFpdCA9ICgxIDw8IDUpLAogICAgTlNGb250Q29uZGVuc2VkVHJhaXQgPSAo
MSA8PCA2KSwKICAgIE5TRm9udE1vbm9TcGFjZVRyYWl0ID0gKDEgPDwgMTApLAogICAgTlNGb250
VmVydGljYWxUcmFpdCA9ICgxIDw8IDExKSwKICAgIE5TRm9udFVJT3B0aW1pemVkVHJhaXQgPSAo
MSA8PCAxMikKfTsKCgpAY2xhc3MgTlNNdXRhYmxlRGljdGlvbmFyeSwgTlNEaWN0aW9uYXJ5LCBO
U0FycmF5LCBOU1NldCwgTlNBZmZpbmVUcmFuc2Zvcm07CgpAaW50ZXJmYWNlIE5TRm9udERlc2Ny
aXB0b3I6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TQ29kaW5nPiB7CgogICAgTlNNdXRhYmxlRGlj
dGlvbmFyeSAqX2F0dHJpYnV0ZXM7CiAgICBpZCBfcmVzZXJ2ZWQxOwogICAgaWQgX3Jlc2VydmVk
MjsKICAgIGlkIF9yZXNlcnZlZDM7CiAgICBpZCBfcmVzZXJ2ZWQ0OwogICAgaWQgX3Jlc2VydmVk
NTsKfQoKCgotIChOU1N0cmluZyAqKXBvc3RzY3JpcHROYW1lOwotIChDR0Zsb2F0KXBvaW50U2l6
ZTsKLSAoTlNBZmZpbmVUcmFuc2Zvcm0gKiltYXRyaXg7Ci0gKE5TRm9udFN5bWJvbGljVHJhaXRz
KXN5bWJvbGljVHJhaXRzOwoKLSAoaWQpb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWFuQXR0cmli
dXRlOwoKCi0gKE5TRGljdGlvbmFyeSAqKWZvbnRBdHRyaWJ1dGVzOwoKCisgKE5TRm9udERlc2Ny
aXB0b3IgKilmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICop
YXR0cmlidXRlczsKKyAoTlNGb250RGVzY3JpcHRvciAqKWZvbnREZXNjcmlwdG9yV2l0aE5hbWU6
KE5TU3RyaW5nICopZm9udE5hbWUgc2l6ZTooQ0dGbG9hdClzaXplOwoKKyAoTlNGb250RGVzY3Jp
cHRvciAqKWZvbnREZXNjcmlwdG9yV2l0aE5hbWU6KE5TU3RyaW5nICopZm9udE5hbWUgbWF0cml4
OihOU0FmZmluZVRyYW5zZm9ybSAqKW1hdHJpeDsKCgotIChpZClpbml0V2l0aEZvbnRBdHRyaWJ1
dGVzOihOU0RpY3Rpb25hcnkgKilhdHRyaWJ1dGVzOwoKCgoKLSAoTlNBcnJheSAqKW1hdGNoaW5n
Rm9udERlc2NyaXB0b3JzV2l0aE1hbmRhdG9yeUtleXM6KE5TU2V0ICopbWFuZGF0b3J5S2V5czsK
CgoKLSAoTlNGb250RGVzY3JpcHRvciAqKW1hdGNoaW5nRm9udERlc2NyaXB0b3JXaXRoTWFuZGF0
b3J5S2V5czooTlNTZXQgKiltYW5kYXRvcnlLZXlzIDsKCi0gKE5TRm9udERlc2NyaXB0b3IgKilm
b250RGVzY3JpcHRvckJ5QWRkaW5nQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRl
czsKLSAoTlNGb250RGVzY3JpcHRvciAqKWZvbnREZXNjcmlwdG9yV2l0aFN5bWJvbGljVHJhaXRz
OihOU0ZvbnRTeW1ib2xpY1RyYWl0cylzeW1ib2xpY1RyYWl0czsKLSAoTlNGb250RGVzY3JpcHRv
ciAqKWZvbnREZXNjcmlwdG9yV2l0aFNpemU6KENHRmxvYXQpbmV3UG9pbnRTaXplOwotIChOU0Zv
bnREZXNjcmlwdG9yICopZm9udERlc2NyaXB0b3JXaXRoTWF0cml4OihOU0FmZmluZVRyYW5zZm9y
bSAqKW1hdHJpeDsKLSAoTlNGb250RGVzY3JpcHRvciAqKWZvbnREZXNjcmlwdG9yV2l0aEZhY2U6
KE5TU3RyaW5nICopbmV3RmFjZTsKLSAoTlNGb250RGVzY3JpcHRvciAqKWZvbnREZXNjcmlwdG9y
V2l0aEZhbWlseTooTlNTdHJpbmcgKiluZXdGYW1pbHk7CgpAZW5kCgoKCgpleHRlcm4gIkMiIE5T
U3RyaW5nICpOU0ZvbnRGYW1pbHlBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0Zv
bnROYW1lQXR0cmlidXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGb250RmFjZUF0dHJpYnV0
ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRm9udFNpemVBdHRyaWJ1dGUgOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpOU0ZvbnRWaXNpYmxlTmFtZUF0dHJpYnV0ZSA7CgpleHRlcm4gIkMiIE5TU3Ry
aW5nICpOU0ZvbnRNYXRyaXhBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0ZvbnRW
YXJpYXRpb25BdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0ZvbnRDaGFyYWN0ZXJT
ZXRBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0ZvbnRDYXNjYWRlTGlzdEF0dHJp
YnV0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRm9udFRyYWl0c0F0dHJpYnV0ZSA7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TRm9udEZpeGVkQWR2YW5jZUF0dHJpYnV0ZSA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKk5TRm9udEZlYXR1cmVTZXR0aW5nc0F0dHJpYnV0ZSA7CgpleHRlcm4gIkMiIE5T
U3RyaW5nICpOU0ZvbnRDb2xvckF0dHJpYnV0ZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0ZvbnRTeW1ib2xpY1RyYWl0IDsKCgoKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqTlNGb250V2VpZ2h0VHJhaXQgOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU0ZvbnRXaWR0aFRyYWl0IDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGb250U2xhbnRU
cmFpdCA7CgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0ZvbnRWYXJpYXRpb25BeGlzSWRlbnRp
ZmllcktleSA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRm9udFZhcmlhdGlvbkF4aXNNaW5p
bXVtVmFsdWVLZXkgOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0ZvbnRWYXJpYXRpb25BeGlz
TWF4aW11bVZhbHVlS2V5IDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGb250VmFyaWF0aW9u
QXhpc0RlZmF1bHRWYWx1ZUtleSA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRm9udFZhcmlh
dGlvbkF4aXNOYW1lS2V5IDsKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRm9udEZlYXR1cmVU
eXBlSWRlbnRpZmllcktleSA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRm9udEZlYXR1cmVT
ZWxlY3RvcklkZW50aWZpZXJLZXkgOwojIDI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0ZvbnRNYW5hZ2VyLmgiIDEg
MwojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNGb250TWFuYWdlci5oIiAzCkBjbGFzcyBOU0FycmF5LCBOU0RpY3Rpb25hcnksIE5TRm9u
dCwgTlNGb250UGFuZWwsIE5TTWVudSwgTlNGb250RGVzY3JpcHRvcjsKCnR5cGVkZWYgTlNVSW50
ZWdlciBOU0ZvbnRUcmFpdE1hc2s7CiMgMjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0ZvbnRNYW5hZ2VyLmgiIDMKZW51bSB7CiAgICBOU0l0
YWxpY0ZvbnRNYXNrID0gMHgwMDAwMDAwMSwKICAgIE5TQm9sZEZvbnRNYXNrID0gMHgwMDAwMDAw
MiwKICAgIE5TVW5ib2xkRm9udE1hc2sgPSAweDAwMDAwMDA0LAogICAgTlNOb25TdGFuZGFyZENo
YXJhY3RlclNldEZvbnRNYXNrID0gMHgwMDAwMDAwOCwKICAgIE5TTmFycm93Rm9udE1hc2sgPSAw
eDAwMDAwMDEwLAogICAgTlNFeHBhbmRlZEZvbnRNYXNrID0gMHgwMDAwMDAyMCwKICAgIE5TQ29u
ZGVuc2VkRm9udE1hc2sgPSAweDAwMDAwMDQwLAogICAgTlNTbWFsbENhcHNGb250TWFzayA9IDB4
MDAwMDAwODAsCiAgICBOU1Bvc3RlckZvbnRNYXNrID0gMHgwMDAwMDEwMCwKICAgIE5TQ29tcHJl
c3NlZEZvbnRNYXNrID0gMHgwMDAwMDIwMCwKICAgIE5TRml4ZWRQaXRjaEZvbnRNYXNrID0gMHgw
MDAwMDQwMCwKICAgIE5TVW5pdGFsaWNGb250TWFzayA9IDB4MDEwMDAwMDAKfTsKCgoKCmVudW0g
ewogICBOU0ZvbnRDb2xsZWN0aW9uQXBwbGljYXRpb25Pbmx5TWFzayA9IDEgPDwgMAp9OwoKCgoK
CmVudW0gewogICAgTlNOb0ZvbnRDaGFuZ2VBY3Rpb24gPSAwLAogICAgTlNWaWFQYW5lbEZvbnRB
Y3Rpb24gPSAxLAogICAgTlNBZGRUcmFpdEZvbnRBY3Rpb24gPSAyLAogICAgTlNTaXplVXBGb250
QWN0aW9uID0gMywKICAgIE5TU2l6ZURvd25Gb250QWN0aW9uID0gNCwKICAgIE5TSGVhdmllckZv
bnRBY3Rpb24gPSA1LAogICAgTlNMaWdodGVyRm9udEFjdGlvbiA9IDYsCiAgICBOU1JlbW92ZVRy
YWl0Rm9udEFjdGlvbiA9IDcKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TRm9udEFjdGlvbjsKCkBp
bnRlcmZhY2UgTlNGb250TWFuYWdlciA6IE5TT2JqZWN0CnsKCkBwcml2YXRlCiAgICBOU0ZvbnRQ
YW5lbCAqIF9wYW5lbDsKICAgIHVuc2lnbmVkIGludCBfZm1SZXNlcnZlZDE7CiAgICBTRUwgX2Fj
dGlvbjsKICAgIGlkIF9hY3Rpb25PcmlnaW47CiAgICBpZCBfdGFyZ2V0OwogICAgTlNGb250ICpf
c2VsRm9udDsKICAgIHN0cnVjdCBfZm1GbGFncyB7CiB1bnNpZ25lZCBpbnQgbXVsdGlwbGVGb250
OjE7CiB1bnNpZ25lZCBpbnQgZGlzYWJsZWQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VuZGVy
VGFnTW9kZToyOwogdW5zaWduZWQgaW50IF9SRVNFUlZFRDoxMjsKICAgIH0gX2ZtRmxhZ3M7CiAg
ICB1bnNpZ25lZCBzaG9ydCBfZm1SZXNlcnZlZDM7CiAgICBpZCBfZGVsZWdhdGU7CiAgICBpZCBf
Y29sbGVjdGlvbnM7CiAgICBpZCBfaGlkZGVuQ29sbGVjdGlvbnM7CiAgICBOU1VJbnRlZ2VyIF9m
bVJlc2VydmVkNDsKfQoKKyAodm9pZClzZXRGb250UGFuZWxGYWN0b3J5OihDbGFzcylmYWN0b3J5
SWQ7CisgKHZvaWQpc2V0Rm9udE1hbmFnZXJGYWN0b3J5OihDbGFzcylmYWN0b3J5SWQ7CisgKE5T
Rm9udE1hbmFnZXIgKilzaGFyZWRGb250TWFuYWdlcjsKCi0gKEJPT0wpaXNNdWx0aXBsZTsKLSAo
TlNGb250ICopc2VsZWN0ZWRGb250OwotICh2b2lkKXNldFNlbGVjdGVkRm9udDooTlNGb250ICop
Zm9udE9iaiBpc011bHRpcGxlOihCT09MKWZsYWc7Ci0gKHZvaWQpc2V0Rm9udE1lbnU6KE5TTWVu
dSAqKW5ld01lbnU7Ci0gKE5TTWVudSAqKWZvbnRNZW51OihCT09MKWNyZWF0ZTsKLSAoTlNGb250
UGFuZWwgKilmb250UGFuZWw6KEJPT0wpY3JlYXRlOwotIChOU0ZvbnQgKilmb250V2l0aEZhbWls
eTooTlNTdHJpbmcgKilmYW1pbHkgdHJhaXRzOihOU0ZvbnRUcmFpdE1hc2spdHJhaXRzIHdlaWdo
dDooTlNJbnRlZ2VyKXdlaWdodCBzaXplOihDR0Zsb2F0KXNpemU7Ci0gKE5TRm9udFRyYWl0TWFz
ayl0cmFpdHNPZkZvbnQ6KE5TRm9udCAqKWZvbnRPYmo7Ci0gKE5TSW50ZWdlcil3ZWlnaHRPZkZv
bnQ6KE5TRm9udCAqKWZvbnRPYmo7CgoKCi0gKE5TQXJyYXkgKilhdmFpbGFibGVGb250czsKLSAo
TlNBcnJheSAqKWF2YWlsYWJsZUZvbnRGYW1pbGllczsKLSAoTlNBcnJheSAqKWF2YWlsYWJsZU1l
bWJlcnNPZkZvbnRGYW1pbHk6KE5TU3RyaW5nICopZmFtOwoKLSAoTlNGb250ICopY29udmVydEZv
bnQ6KE5TRm9udCAqKWZvbnRPYmo7Ci0gKE5TRm9udCAqKWNvbnZlcnRGb250OihOU0ZvbnQgKilm
b250T2JqIHRvU2l6ZTooQ0dGbG9hdClzaXplOwotIChOU0ZvbnQgKiljb252ZXJ0Rm9udDooTlNG
b250ICopZm9udE9iaiB0b0ZhY2U6KE5TU3RyaW5nICopdHlwZWZhY2U7Ci0gKE5TRm9udCAqKWNv
bnZlcnRGb250OihOU0ZvbnQgKilmb250T2JqIHRvRmFtaWx5OihOU1N0cmluZyAqKWZhbWlseTsK
LSAoTlNGb250ICopY29udmVydEZvbnQ6KE5TRm9udCAqKWZvbnRPYmogdG9IYXZlVHJhaXQ6KE5T
Rm9udFRyYWl0TWFzayl0cmFpdDsKLSAoTlNGb250ICopY29udmVydEZvbnQ6KE5TRm9udCAqKWZv
bnRPYmogdG9Ob3RIYXZlVHJhaXQ6KE5TRm9udFRyYWl0TWFzayl0cmFpdDsKLSAoTlNGb250ICop
Y29udmVydFdlaWdodDooQk9PTCl1cEZsYWcgb2ZGb250OihOU0ZvbnQgKilmb250T2JqOwotIChC
T09MKWlzRW5hYmxlZDsKLSAodm9pZClzZXRFbmFibGVkOihCT09MKWZsYWc7Ci0gKFNFTClhY3Rp
b247Ci0gKHZvaWQpc2V0QWN0aW9uOihTRUwpYVNlbGVjdG9yOwotIChCT09MKXNlbmRBY3Rpb247
Ci0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkKWFuT2JqZWN0OwotIChpZClkZWxlZ2F0ZTsKCi0gKE5T
U3RyaW5nICopIGxvY2FsaXplZE5hbWVGb3JGYW1pbHk6KE5TU3RyaW5nICopZmFtaWx5IGZhY2U6
KE5TU3RyaW5nICopZmFjZUtleTsKCgotICh2b2lkKXNldFNlbGVjdGVkQXR0cmlidXRlczooTlNE
aWN0aW9uYXJ5ICopYXR0cmlidXRlcyBpc011bHRpcGxlOihCT09MKWZsYWc7Ci0gKE5TRGljdGlv
bmFyeSAqKWNvbnZlcnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilhdHRyaWJ1dGVzOwoKLSAo
TlNBcnJheSAqKWF2YWlsYWJsZUZvbnROYW1lc01hdGNoaW5nRm9udERlc2NyaXB0b3I6KE5TRm9u
dERlc2NyaXB0b3IgKilkZXNjcmlwdG9yOwoKLSAoTlNBcnJheSAqKWNvbGxlY3Rpb25OYW1lczsK
LSAoTlNBcnJheSAqKWZvbnREZXNjcmlwdG9yc0luQ29sbGVjdGlvbjooTlNTdHJpbmcgKiljb2xs
ZWN0aW9uTmFtZXM7Ci0gKEJPT0wpYWRkQ29sbGVjdGlvbjooTlNTdHJpbmcgKiljb2xsZWN0aW9u
TmFtZSBvcHRpb25zOihOU0ludGVnZXIpY29sbGVjdGlvbk9wdGlvbnM7Ci0gKEJPT0wpcmVtb3Zl
Q29sbGVjdGlvbjooTlNTdHJpbmcgKiljb2xsZWN0aW9uTmFtZTsKCi0gKHZvaWQpYWRkRm9udERl
c2NyaXB0b3JzOihOU0FycmF5ICopZGVzY3JpcHRvcnMgdG9Db2xsZWN0aW9uOihOU1N0cmluZyAq
KWNvbGxlY3Rpb25OYW1lOwotICh2b2lkKXJlbW92ZUZvbnREZXNjcmlwdG9yOihOU0ZvbnREZXNj
cmlwdG9yICopZGVzY3JpcHRvciBmcm9tQ29sbGVjdGlvbjooTlNTdHJpbmcgKiljb2xsZWN0aW9u
OwoKCgoKCi0gKE5TRm9udEFjdGlvbiljdXJyZW50Rm9udEFjdGlvbjsKCgoKLSAoTlNGb250VHJh
aXRNYXNrKWNvbnZlcnRGb250VHJhaXRzOihOU0ZvbnRUcmFpdE1hc2spdHJhaXRzOwoKLSAodm9p
ZClzZXRUYXJnZXQ6KGlkKWFUYXJnZXQ7Ci0gKGlkKXRhcmdldDsKCgpAZW5kCgpAaW50ZXJmYWNl
IE5TRm9udE1hbmFnZXIoTlNGb250TWFuYWdlck1lbnVBY3Rpb25NZXRob2RzKQoKLSAoQk9PTClm
b250TmFtZWQ6KE5TU3RyaW5nICopZk5hbWUgaGFzVHJhaXRzOihOU0ZvbnRUcmFpdE1hc2spc29t
ZVRyYWl0czsKCgoKLSAoTlNBcnJheSAqKWF2YWlsYWJsZUZvbnROYW1lc1dpdGhUcmFpdHM6KE5T
Rm9udFRyYWl0TWFzaylzb21lVHJhaXRzOwoKCgotICh2b2lkKWFkZEZvbnRUcmFpdDooaWQpc2Vu
ZGVyOwotICh2b2lkKXJlbW92ZUZvbnRUcmFpdDooaWQpc2VuZGVyOwotICh2b2lkKW1vZGlmeUZv
bnRWaWFQYW5lbDooaWQpc2VuZGVyOwotICh2b2lkKW1vZGlmeUZvbnQ6KGlkKXNlbmRlcjsKLSAo
dm9pZClvcmRlckZyb250Rm9udFBhbmVsOihpZClzZW5kZXI7CgotICh2b2lkKW9yZGVyRnJvbnRT
dHlsZXNQYW5lbDooaWQpc2VuZGVyOwoKCkBlbmQKCgoKQGludGVyZmFjZSBOU09iamVjdChOU0Zv
bnRNYW5hZ2VyRGVsZWdhdGUpCi0gKEJPT0wpZm9udE1hbmFnZXI6KGlkKXNlbmRlciB3aWxsSW5j
bHVkZUZvbnQ6KE5TU3RyaW5nICopZm9udE5hbWU7CkBlbmQKCgoKQGludGVyZmFjZSBOU09iamVj
dChOU0ZvbnRNYW5hZ2VyUmVzcG9uZGVyTWV0aG9kKQotICh2b2lkKWNoYW5nZUZvbnQ6KGlkKXNl
bmRlcjsKQGVuZAojIDMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0ZvbnRQYW5lbC5oIiAxIDMKCgoKCgoKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUGFu
ZWwuaCIgMSAzCgoKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9OU1dpbmRvdy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TV2luZG93LmgiIDMKQGNsYXNzIE5T
QnV0dG9uLCBOU0J1dHRvbkNlbGwsIE5TQ29sb3IsIE5TSW1hZ2UsIE5TUGFzdGVib2FyZCwgTlNT
Y3JlZW47CkBjbGFzcyBOU05vdGlmaWNhdGlvbiwgTlNUZXh0LCBOU1ZpZXcsIE5TTXV0YWJsZVNl
dCwgTlNTZXQsIE5TRGF0ZTsKQGNsYXNzIE5TVG9vbGJhciwgTlNHcmFwaGljc0NvbnRleHQsIE5T
VVJMLCBOU0NvbG9yU3BhY2U7CgpAY2xhc3MgTlNEb2NrVGlsZTsKCgpAcHJvdG9jb2wgTlNXaW5k
b3dEZWxlZ2F0ZTsKCiNkZWZpbmUgTlNBcHBLaXRWZXJzaW9uTnVtYmVyV2l0aEN1c3RvbVNoZWV0
UG9zaXRpb24gNjg2LjAKI2RlZmluZSBOU0FwcEtpdFZlcnNpb25OdW1iZXJXaXRoRGVmZXJyZWRX
aW5kb3dEaXNwbGF5U3VwcG9ydCAxMDE5LjAKCmVudW0gewogICAgTlNCb3JkZXJsZXNzV2luZG93
TWFzayA9IDAsCiAgICBOU1RpdGxlZFdpbmRvd01hc2sgPSAxIDw8IDAsCiAgICBOU0Nsb3NhYmxl
V2luZG93TWFzayA9IDEgPDwgMSwKICAgIE5TTWluaWF0dXJpemFibGVXaW5kb3dNYXNrID0gMSA8
PCAyLAogICAgTlNSZXNpemFibGVXaW5kb3dNYXNrID0gMSA8PCAzCgp9OwoKCgoKZW51bSB7CiAg
ICBOU1RleHR1cmVkQmFja2dyb3VuZFdpbmRvd01hc2sgPSAxIDw8IDgKfTsKCgoKCgplbnVtIHsK
ICAgIE5TVW5zY2FsZWRXaW5kb3dNYXNrID0gMSA8PCAxMQp9OwoKCgplbnVtIHsKICAgIE5TVW5p
ZmllZFRpdGxlQW5kVG9vbGJhcldpbmRvd01hc2sgPSAxIDw8IDEyCn07CgoKCgplbnVtIHsKICAg
IE5TRGlzcGxheVdpbmRvd1J1bkxvb3BPcmRlcmluZyA9IDYwMDAwMCwKICAgIE5TUmVzZXRDdXJz
b3JSZWN0c1J1bkxvb3BPcmRlcmluZyA9IDcwMDAwMAp9OwoKCgplbnVtIHsKIE5TV2luZG93U2hh
cmluZ05vbmUgPSAwLAogTlNXaW5kb3dTaGFyaW5nUmVhZE9ubHkgPSAxLAogTlNXaW5kb3dTaGFy
aW5nUmVhZFdyaXRlID0gMgp9OwoKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TV2luZG93U2hhcmluZ1R5
cGU7CgplbnVtIHsKIE5TV2luZG93QmFja2luZ0xvY2F0aW9uRGVmYXVsdCA9IDAsCiBOU1dpbmRv
d0JhY2tpbmdMb2NhdGlvblZpZGVvTWVtb3J5ID0gMSwKIE5TV2luZG93QmFja2luZ0xvY2F0aW9u
TWFpbk1lbW9yeSA9IDIKfTsKCnR5cGVkZWYgTlNVSW50ZWdlciBOU1dpbmRvd0JhY2tpbmdMb2Nh
dGlvbjsKCmVudW0gewogIE5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yRGVmYXVsdCA9IDAsCiAg
TlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3JDYW5Kb2luQWxsU3BhY2VzID0gMSA8PCAwLAogIE5T
V2luZG93Q29sbGVjdGlvbkJlaGF2aW9yTW92ZVRvQWN0aXZlU3BhY2UgPSAxIDw8IDEKfTsKCgoK
ZW51bSB7CiBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvck1hbmFnZWQgPSAxIDw8IDIsCiBOU1dp
bmRvd0NvbGxlY3Rpb25CZWhhdmlvclRyYW5zaWVudCA9IDEgPDwgMywKIE5TV2luZG93Q29sbGVj
dGlvbkJlaGF2aW9yU3RhdGlvbmFyeSA9IDEgPDwgNCwKfTsKCgplbnVtIHsKICBOU1dpbmRvd0Nv
bGxlY3Rpb25CZWhhdmlvclBhcnRpY2lwYXRlc0luQ3ljbGUgPSAxIDw8IDUsCiAgTlNXaW5kb3dD
b2xsZWN0aW9uQmVoYXZpb3JJZ25vcmVzQ3ljbGUgPSAxIDw8IDYKfTsKCgp0eXBlZGVmIE5TVUlu
dGVnZXIgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3I7CgoKCgoKZW51bSB7CiAgICBOU1dpbmRv
d051bWJlckxpc3RBbGxBcHBsaWNhdGlvbnMgPSAxIDw8IDAsCiAgICBOU1dpbmRvd051bWJlckxp
c3RBbGxTcGFjZXMgPSAxIDw8IDQKfTsKCgp0eXBlZGVmIE5TVUludGVnZXIgTlNXaW5kb3dOdW1i
ZXJMaXN0T3B0aW9uczsKCiNkZWZpbmUgTlNOb3JtYWxXaW5kb3dMZXZlbCBrQ0dOb3JtYWxXaW5k
b3dMZXZlbAojZGVmaW5lIE5TRmxvYXRpbmdXaW5kb3dMZXZlbCBrQ0dGbG9hdGluZ1dpbmRvd0xl
dmVsCiNkZWZpbmUgTlNTdWJtZW51V2luZG93TGV2ZWwga0NHVG9ybk9mZk1lbnVXaW5kb3dMZXZl
bAojZGVmaW5lIE5TVG9ybk9mZk1lbnVXaW5kb3dMZXZlbCBrQ0dUb3JuT2ZmTWVudVdpbmRvd0xl
dmVsCiNkZWZpbmUgTlNNYWluTWVudVdpbmRvd0xldmVsIGtDR01haW5NZW51V2luZG93TGV2ZWwK
I2RlZmluZSBOU1N0YXR1c1dpbmRvd0xldmVsIGtDR1N0YXR1c1dpbmRvd0xldmVsCgojZGVmaW5l
IE5TRG9ja1dpbmRvd0xldmVsIGtDR0RvY2tXaW5kb3dMZXZlbAojZGVmaW5lIE5TTW9kYWxQYW5l
bFdpbmRvd0xldmVsIGtDR01vZGFsUGFuZWxXaW5kb3dMZXZlbAojZGVmaW5lIE5TUG9wVXBNZW51
V2luZG93TGV2ZWwga0NHUG9wVXBNZW51V2luZG93TGV2ZWwKI2RlZmluZSBOU1NjcmVlblNhdmVy
V2luZG93TGV2ZWwga0NHU2NyZWVuU2F2ZXJXaW5kb3dMZXZlbAoKCmVudW0gewogICAgTlNEaXJl
Y3RTZWxlY3Rpb24gPSAwLAogICAgTlNTZWxlY3RpbmdOZXh0LAogICAgTlNTZWxlY3RpbmdQcmV2
aW91cwp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNTZWxlY3Rpb25EaXJlY3Rpb247CgoKCmVudW0g
ewogICAgTlNXaW5kb3dDbG9zZUJ1dHRvbiwKICAgIE5TV2luZG93TWluaWF0dXJpemVCdXR0b24s
CiAgICBOU1dpbmRvd1pvb21CdXR0b24sCiAgICBOU1dpbmRvd1Rvb2xiYXJCdXR0b24sCiAgICBO
U1dpbmRvd0RvY3VtZW50SWNvbkJ1dHRvbgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNXaW5kb3dC
dXR0b247CgoKQGNsYXNzIE5TV2luZG93QXV4aWxpYXJ5OwpAY2xhc3MgTlNFdmVudDsKQGNsYXNz
IE5TV2luZG93Q29udHJvbGxlcjsKCkBpbnRlcmZhY2UgTlNXaW5kb3cgOiBOU1Jlc3BvbmRlcgoK
PE5TQW5pbWF0YWJsZVByb3BlcnR5Q29udGFpbmVyLCBOU1VzZXJJbnRlcmZhY2VWYWxpZGF0aW9u
cz4KCgoKewoKICAgIE5TUmVjdCBfZnJhbWU7CiAgICBpZCBfY29udGVudFZpZXc7CiAgICBpZCBf
ZGVsZWdhdGU7CiAgICBOU1Jlc3BvbmRlciAqX2ZpcnN0UmVzcG9uZGVyOwogICAgTlNWaWV3ICpf
bGFzdExlZnRIaXQ7CiAgICBOU1ZpZXcgKl9sYXN0UmlnaHRIaXQ7CiAgICBpZCBfY291bnRlcnBh
cnQ7CiAgICBpZCBfZmllbGRFZGl0b3I7CiAgICBpbnQgX3dpbkV2ZW50TWFzazsKICAgIE5TSW50
ZWdlciBfd2luZG93TnVtOwogICAgaW50IF9sZXZlbDsKICAgIE5TQ29sb3IgKl9iYWNrZ3JvdW5k
Q29sb3I7CiAgICBpZCBfYm9yZGVyVmlldzsKICAgIHVuc2lnbmVkIGNoYXIgX3Bvc3RpbmdEaXNh
YmxlZDsKICAgIHVuc2lnbmVkIGNoYXIgX3N0eWxlTWFzazsKICAgIHVuc2lnbmVkIGNoYXIgX2Zs
dXNoRGlzYWJsZWQ7CiAgICB1bnNpZ25lZCBjaGFyIF9yZXNlcnZlZFdpbmRvdzE7CiAgICB2b2lk
ICpfY3Vyc29yUmVjdHM7CiAgICB2b2lkICpfdHJlY3RUYWJsZTsKICAgIE5TSW1hZ2UgKl9taW5p
SWNvbjsKICAgIGludCBfdW51c2VkOwogICAgTlNNdXRhYmxlU2V0ICpfZHJhZ1R5cGVzOwogICAg
TlNVUkwgKl9yZXByZXNlbnRlZFVSTDsKICAgIE5TU2l6ZSAqX3NpemVMaW1pdHM7CiAgICBOU1N0
cmluZyAqX2ZyYW1lU2F2ZU5hbWU7CiAgICBOU1NldCAqX3JlZ0RyYWdUeXBlczsKICAgIHN0cnVj
dCBfX3dGbGFncyB7CiAgICAgICAgdW5zaWduZWQgaW50IGJhY2tpbmc6MjsKICAgICAgICB1bnNp
Z25lZCBpbnQgdmlzaWJsZToxOwogICAgICAgIHVuc2lnbmVkIGludCBpc01haW5XaW5kb3c6MTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgaXNLZXlXaW5kb3c6MTsKICAgICAgICB1bnNpZ25lZCBpbnQg
aGlkZXNPbkRlYWN0aXZhdGU6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZG9udEZyZWVXaGVuQ2xv
c2VkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IG9uZVNob3Q6MTsKICAgICAgICB1bnNpZ25lZCBp
bnQgZGVmZXJyZWQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgY3Vyc29yUmVjdHNEaXNhYmxlZDox
OwogICAgICAgIHVuc2lnbmVkIGludCBoYXZlRnJlZUN1cnNvclJlY3RzOjE7CiAgICAgICAgdW5z
aWduZWQgaW50IHZhbGlkQ3Vyc29yUmVjdHM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZG9jRWRp
dGVkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGR5bmFtaWNEZXB0aExpbWl0OjE7CiAgICAgICAg
dW5zaWduZWQgaW50IHdvcmtzV2hlbk1vZGFsOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGxpbWl0
ZWRCZWNvbWVLZXk6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZHNGbHVzaDoxOwogICAgICAg
IHVuc2lnbmVkIGludCB2aWV3c05lZWREaXNwbGF5OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGln
bm9yZWRGaXJzdE1vdXNlOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcG9zdGVkRmlyc3RNb3Vz
ZToxOwogICAgICAgIHVuc2lnbmVkIGludCB3aW5kb3dEeWluZzoxOwogICAgICAgIHVuc2lnbmVk
IGludCB0ZW1wSGlkZGVuOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGZsb2F0aW5nUGFuZWw6MTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgd2FudHNUb0JlT25NYWluU2NyZWVuOjE7CiAgICAgICAgdW5z
aWduZWQgaW50IG9wdGltaXplZERyYXdpbmdPazoxOwogICAgICAgIHVuc2lnbmVkIGludCBvcHRp
bWl6ZURyYXdpbmc6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgdGl0bGVJc1JlcHJlc2VudGVkRmls
ZW5hbWU6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZXhjbHVkZWRGcm9tV2luZG93c01lbnU6MTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZGVwdGhMaW1pdDo0OwogICAgICAgIHVuc2lnbmVkIGludCBk
ZWxlZ2F0ZVJldHVybnNWYWxpZFJlcXVlc3RvcjoxOwogICAgICAgIHVuc2lnbmVkIGludCBsbW91
c2V1cFBlbmRpbmc6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgcm1vdXNldXBQZW5kaW5nOjE7CiAg
ICAgICAgdW5zaWduZWQgaW50IHdhbnRzVG9EZXN0cm95UmVhbFdpbmRvdzoxOwogICAgICAgIHVu
c2lnbmVkIGludCB3YW50c1RvUmVnRHJhZ1R5cGVzOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHNl
bnRJbnZhbGlkYXRlQ3Vyc29yUmVjdHNNc2c6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgYXZvaWRz
QWN0aXZhdGlvbjoxOwogICAgICAgIHVuc2lnbmVkIGludCBmcmFtZVNhdmVkVXNpbmdUaXRsZTox
OwogICAgICAgIHVuc2lnbmVkIGludCBkaWRSZWdEcmFnVHlwZXM6MTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgZGVsYXllZE9uZVNob3Q6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgcG9zdGVkTmVlZHNE
aXNwbGF5Tm90ZToxOwogICAgICAgIHVuc2lnbmVkIGludCBwb3N0ZWRJbnZhbGlkQ3Vyc29yUmVj
dHNOb3RlOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGluaXRpYWxGaXJzdFJlc3BvbmRlclRlbXBT
ZXQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgYXV0b2Rpc3BsYXk6MTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgdG9zc2VkRmlyc3RFdmVudDoxOwogICAgICAgIHVuc2lnbmVkIGludCBpc0ltYWdlQ2Fj
aGU6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgaW50ZXJmYWNlU3R5bGU6MzsKICAgICAgICB1bnNp
Z25lZCBpbnQga2V5Vmlld1NlbGVjdGlvbkRpcmVjdGlvbjoyOwogICAgICAgIHVuc2lnbmVkIGlu
dCBkZWZhdWx0QnV0dG9uQ2VsbEtFVGVtcG9yYXJpbHlEaXNhYmxlZDoxOwogICAgICAgIHVuc2ln
bmVkIGludCBkZWZhdWx0QnV0dG9uQ2VsbEtFRGlzYWJsZWQ6MTsKICAgICAgICB1bnNpZ25lZCBp
bnQgbWVudUhhc0JlZW5TZXQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FudHNUb0JlTW9kYWw6
MTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2hvd2luZ01vZGFsRnJhbWU6MTsKICAgICAgICB1bnNp
Z25lZCBpbnQgaXNUZXJtaW5hdGluZzoxOwogICAgICAgIHVuc2lnbmVkIGludCB3aW4zMk1vdXNl
QWN0aXZhdGlvbkluUHJvZ3Jlc3M6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgbWFraW5nRmlyc3RS
ZXNwb25kZXJGb3JNb3VzZURvd246MTsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZHNab29tOjE7
CiAgICAgICAgdW5zaWduZWQgaW50IHNlbnRXaW5kb3dOZWVkc0Rpc3BsYXlNc2c6MTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgbGl2ZVJlc2l6ZUFjdGl2ZToxOwogICAgfSBfd0ZsYWdzOwogICAgaWQg
X2RlZmF1bHRCdXR0b25DZWxsOwogICAgTlNWaWV3ICpfaW5pdGlhbEZpcnN0UmVzcG9uZGVyOwog
ICAgTlNXaW5kb3dBdXhpbGlhcnkgKl9hdXhpbGlhcnlTdG9yYWdlOwp9CgorIChOU1JlY3QpZnJh
bWVSZWN0Rm9yQ29udGVudFJlY3Q6KE5TUmVjdCljUmVjdCBzdHlsZU1hc2s6KE5TVUludGVnZXIp
YVN0eWxlOworIChOU1JlY3QpY29udGVudFJlY3RGb3JGcmFtZVJlY3Q6KE5TUmVjdClmUmVjdCBz
dHlsZU1hc2s6KE5TVUludGVnZXIpYVN0eWxlOworIChDR0Zsb2F0KW1pbkZyYW1lV2lkdGhXaXRo
VGl0bGU6KE5TU3RyaW5nICopYVRpdGxlIHN0eWxlTWFzazooTlNVSW50ZWdlcilhU3R5bGU7Cisg
KE5TV2luZG93RGVwdGgpZGVmYXVsdERlcHRoTGltaXQ7CgoKLSAoTlNSZWN0KWZyYW1lUmVjdEZv
ckNvbnRlbnRSZWN0OihOU1JlY3QpY29udGVudFJlY3Q7Ci0gKE5TUmVjdCljb250ZW50UmVjdEZv
ckZyYW1lUmVjdDooTlNSZWN0KWZyYW1lUmVjdDsKCgotIChpZClpbml0V2l0aENvbnRlbnRSZWN0
OihOU1JlY3QpY29udGVudFJlY3Qgc3R5bGVNYXNrOihOU1VJbnRlZ2VyKWFTdHlsZSBiYWNraW5n
OihOU0JhY2tpbmdTdG9yZVR5cGUpYnVmZmVyaW5nVHlwZSBkZWZlcjooQk9PTClmbGFnOwotIChp
ZClpbml0V2l0aENvbnRlbnRSZWN0OihOU1JlY3QpY29udGVudFJlY3Qgc3R5bGVNYXNrOihOU1VJ
bnRlZ2VyKWFTdHlsZSBiYWNraW5nOihOU0JhY2tpbmdTdG9yZVR5cGUpYnVmZmVyaW5nVHlwZSBk
ZWZlcjooQk9PTClmbGFnIHNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW47CgotIChOU1N0cmluZyAq
KXRpdGxlOwotICh2b2lkKXNldFRpdGxlOihOU1N0cmluZyAqKWFTdHJpbmc7CgoKCgoKLSAodm9p
ZClzZXRSZXByZXNlbnRlZFVSTDooTlNVUkwgKil1cmw7Ci0gKE5TVVJMICopcmVwcmVzZW50ZWRV
Ukw7CgotIChOU1N0cmluZyAqKXJlcHJlc2VudGVkRmlsZW5hbWU7Ci0gKHZvaWQpc2V0UmVwcmVz
ZW50ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilhU3RyaW5nOwotICh2b2lkKXNldFRpdGxlV2l0aFJl
cHJlc2VudGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWU7Ci0gKHZvaWQpc2V0RXhjbHVk
ZWRGcm9tV2luZG93c01lbnU6KEJPT0wpZmxhZzsKLSAoQk9PTClpc0V4Y2x1ZGVkRnJvbVdpbmRv
d3NNZW51OwotICh2b2lkKXNldENvbnRlbnRWaWV3OihOU1ZpZXcgKilhVmlldzsKLSAoaWQpY29u
dGVudFZpZXc7Ci0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxOU1dpbmRvd0RlbGVnYXRlPilhbk9i
amVjdDsKLSAoaWQgPE5TV2luZG93RGVsZWdhdGU+KWRlbGVnYXRlOwotIChOU0ludGVnZXIpd2lu
ZG93TnVtYmVyOwotIChOU1VJbnRlZ2VyKXN0eWxlTWFzazsKCi0gKHZvaWQpc2V0U3R5bGVNYXNr
OihOU1VJbnRlZ2VyKXN0eWxlTWFzayA7Ci0gKE5TVGV4dCAqKWZpZWxkRWRpdG9yOihCT09MKWNy
ZWF0ZUZsYWcgZm9yT2JqZWN0OihpZClhbk9iamVjdDsKLSAodm9pZCllbmRFZGl0aW5nRm9yOihp
ZClhbk9iamVjdDsKCi0gKE5TUmVjdCljb25zdHJhaW5GcmFtZVJlY3Q6KE5TUmVjdClmcmFtZVJl
Y3QgdG9TY3JlZW46KE5TU2NyZWVuICopc2NyZWVuOwotICh2b2lkKXNldEZyYW1lOihOU1JlY3Qp
ZnJhbWVSZWN0IGRpc3BsYXk6KEJPT0wpZmxhZzsKLSAodm9pZClzZXRDb250ZW50U2l6ZTooTlNT
aXplKWFTaXplOwotICh2b2lkKXNldEZyYW1lT3JpZ2luOihOU1BvaW50KWFQb2ludDsKLSAodm9p
ZClzZXRGcmFtZVRvcExlZnRQb2ludDooTlNQb2ludClhUG9pbnQ7Ci0gKE5TUG9pbnQpY2FzY2Fk
ZVRvcExlZnRGcm9tUG9pbnQ6KE5TUG9pbnQpdG9wTGVmdFBvaW50OwotIChOU1JlY3QpZnJhbWU7
CgoKCgotIChOU1RpbWVJbnRlcnZhbClhbmltYXRpb25SZXNpemVUaW1lOihOU1JlY3QpbmV3RnJh
bWU7CgoKLSAodm9pZClzZXRGcmFtZTooTlNSZWN0KWZyYW1lUmVjdCBkaXNwbGF5OihCT09MKWRp
c3BsYXlGbGFnIGFuaW1hdGU6KEJPT0wpYW5pbWF0ZUZsYWc7CgotIChCT09MKWluTGl2ZVJlc2l6
ZSA7CgoKLSAodm9pZClzZXRTaG93c1Jlc2l6ZUluZGljYXRvcjooQk9PTClzaG93OwotIChCT09M
KXNob3dzUmVzaXplSW5kaWNhdG9yOwoKLSAodm9pZClzZXRSZXNpemVJbmNyZW1lbnRzOihOU1Np
emUpaW5jcmVtZW50czsKLSAoTlNTaXplKXJlc2l6ZUluY3JlbWVudHM7Ci0gKHZvaWQpc2V0QXNw
ZWN0UmF0aW86KE5TU2l6ZSlyYXRpbzsKLSAoTlNTaXplKWFzcGVjdFJhdGlvOwoKCi0gKHZvaWQp
c2V0Q29udGVudFJlc2l6ZUluY3JlbWVudHM6KE5TU2l6ZSlpbmNyZW1lbnRzOwotIChOU1NpemUp
Y29udGVudFJlc2l6ZUluY3JlbWVudHM7Ci0gKHZvaWQpc2V0Q29udGVudEFzcGVjdFJhdGlvOihO
U1NpemUpcmF0aW87Ci0gKE5TU2l6ZSljb250ZW50QXNwZWN0UmF0aW87CgoKLSAodm9pZCl1c2VP
cHRpbWl6ZWREcmF3aW5nOihCT09MKWZsYWc7Ci0gKHZvaWQpZGlzYWJsZUZsdXNoV2luZG93Owot
ICh2b2lkKWVuYWJsZUZsdXNoV2luZG93OwotIChCT09MKWlzRmx1c2hXaW5kb3dEaXNhYmxlZDsK
LSAodm9pZClmbHVzaFdpbmRvdzsKLSAodm9pZClmbHVzaFdpbmRvd0lmTmVlZGVkOwotICh2b2lk
KXNldFZpZXdzTmVlZERpc3BsYXk6KEJPT0wpZmxhZzsKLSAoQk9PTCl2aWV3c05lZWREaXNwbGF5
OwotICh2b2lkKWRpc3BsYXlJZk5lZWRlZDsKLSAodm9pZClkaXNwbGF5OwotICh2b2lkKXNldEF1
dG9kaXNwbGF5OihCT09MKWZsYWc7Ci0gKEJPT0wpaXNBdXRvZGlzcGxheTsKCgotIChCT09MKXBy
ZXNlcnZlc0NvbnRlbnREdXJpbmdMaXZlUmVzaXplOwotICh2b2lkKXNldFByZXNlcnZlc0NvbnRl
bnREdXJpbmdMaXZlUmVzaXplOihCT09MKWZsYWc7CgoKLSAodm9pZCl1cGRhdGU7Ci0gKEJPT0wp
bWFrZUZpcnN0UmVzcG9uZGVyOihOU1Jlc3BvbmRlciAqKWFSZXNwb25kZXI7Ci0gKE5TUmVzcG9u
ZGVyICopZmlyc3RSZXNwb25kZXI7Ci0gKE5TSW50ZWdlcilyZXNpemVGbGFnczsKLSAodm9pZClr
ZXlEb3duOihOU0V2ZW50ICopdGhlRXZlbnQ7Ci0gKHZvaWQpY2xvc2U7Ci0gKHZvaWQpc2V0UmVs
ZWFzZWRXaGVuQ2xvc2VkOihCT09MKWZsYWc7Ci0gKEJPT0wpaXNSZWxlYXNlZFdoZW5DbG9zZWQ7
Ci0gKHZvaWQpbWluaWF0dXJpemU6KGlkKXNlbmRlcjsKLSAodm9pZClkZW1pbmlhdHVyaXplOihp
ZClzZW5kZXI7Ci0gKEJPT0wpaXNab29tZWQ7Ci0gKHZvaWQpem9vbTooaWQpc2VuZGVyOwotIChC
T09MKWlzTWluaWF0dXJpemVkOwotIChCT09MKXRyeVRvUGVyZm9ybTooU0VMKWFuQWN0aW9uIHdp
dGg6KGlkKWFuT2JqZWN0OwotIChpZCl2YWxpZFJlcXVlc3RvckZvclNlbmRUeXBlOihOU1N0cmlu
ZyAqKXNlbmRUeXBlIHJldHVyblR5cGU6KE5TU3RyaW5nICopcmV0dXJuVHlwZTsKLSAodm9pZClz
ZXRCYWNrZ3JvdW5kQ29sb3I6KE5TQ29sb3IgKiljb2xvcjsKLSAoTlNDb2xvciAqKWJhY2tncm91
bmRDb2xvcjsKCgotICh2b2lkKXNldENvbnRlbnRCb3JkZXJUaGlja25lc3M6KENHRmxvYXQpdGhp
Y2tuZXNzIGZvckVkZ2U6KE5TUmVjdEVkZ2UpZWRnZTsKLSAoQ0dGbG9hdCljb250ZW50Qm9yZGVy
VGhpY2tuZXNzRm9yRWRnZTooTlNSZWN0RWRnZSllZGdlOwoKLSAodm9pZClzZXRBdXRvcmVjYWxj
dWxhdGVzQ29udGVudEJvcmRlclRoaWNrbmVzczooQk9PTClmbGFnIGZvckVkZ2U6KE5TUmVjdEVk
Z2UpZWRnZTsKLSAoQk9PTClhdXRvcmVjYWxjdWxhdGVzQ29udGVudEJvcmRlclRoaWNrbmVzc0Zv
ckVkZ2U6KE5TUmVjdEVkZ2UpZWRnZTsKCgoKLSAodm9pZClzZXRNb3ZhYmxlOihCT09MKWZsYWcg
OwotIChCT09MKWlzTW92YWJsZSA7CgoKLSAodm9pZClzZXRNb3ZhYmxlQnlXaW5kb3dCYWNrZ3Jv
dW5kOihCT09MKWZsYWc7Ci0gKEJPT0wpaXNNb3ZhYmxlQnlXaW5kb3dCYWNrZ3JvdW5kOwoKCi0g
KHZvaWQpc2V0SGlkZXNPbkRlYWN0aXZhdGU6KEJPT0wpZmxhZzsKLSAoQk9PTCloaWRlc09uRGVh
Y3RpdmF0ZTsKCgotICh2b2lkKXNldENhbkhpZGU6KEJPT0wpZmxhZzsKLSAoQk9PTCljYW5IaWRl
OwoKLSAodm9pZCljZW50ZXI7Ci0gKHZvaWQpbWFrZUtleUFuZE9yZGVyRnJvbnQ6KGlkKXNlbmRl
cjsKLSAodm9pZClvcmRlckZyb250OihpZClzZW5kZXI7Ci0gKHZvaWQpb3JkZXJCYWNrOihpZClz
ZW5kZXI7Ci0gKHZvaWQpb3JkZXJPdXQ6KGlkKXNlbmRlcjsKLSAodm9pZClvcmRlcldpbmRvdzoo
TlNXaW5kb3dPcmRlcmluZ01vZGUpcGxhY2UgcmVsYXRpdmVUbzooTlNJbnRlZ2VyKW90aGVyV2lu
OwotICh2b2lkKW9yZGVyRnJvbnRSZWdhcmRsZXNzOwoKLSAodm9pZClzZXRNaW5pd2luZG93SW1h
Z2U6KE5TSW1hZ2UgKilpbWFnZTsKLSAodm9pZClzZXRNaW5pd2luZG93VGl0bGU6KE5TU3RyaW5n
ICopdGl0bGU7Ci0gKE5TSW1hZ2UgKiltaW5pd2luZG93SW1hZ2U7Ci0gKE5TU3RyaW5nICopbWlu
aXdpbmRvd1RpdGxlOwoKCi0gKE5TRG9ja1RpbGUgKilkb2NrVGlsZTsKCgotICh2b2lkKXNldERv
Y3VtZW50RWRpdGVkOihCT09MKWZsYWc7Ci0gKEJPT0wpaXNEb2N1bWVudEVkaXRlZDsKLSAoQk9P
TClpc1Zpc2libGU7Ci0gKEJPT0wpaXNLZXlXaW5kb3c7Ci0gKEJPT0wpaXNNYWluV2luZG93Owot
IChCT09MKWNhbkJlY29tZUtleVdpbmRvdzsKLSAoQk9PTCljYW5CZWNvbWVNYWluV2luZG93Owot
ICh2b2lkKW1ha2VLZXlXaW5kb3c7Ci0gKHZvaWQpbWFrZU1haW5XaW5kb3c7Ci0gKHZvaWQpYmVj
b21lS2V5V2luZG93OwotICh2b2lkKXJlc2lnbktleVdpbmRvdzsKLSAodm9pZCliZWNvbWVNYWlu
V2luZG93OwotICh2b2lkKXJlc2lnbk1haW5XaW5kb3c7CgotIChCT09MKXdvcmtzV2hlbk1vZGFs
OwoKCi0gKEJPT0wpcHJldmVudHNBcHBsaWNhdGlvblRlcm1pbmF0aW9uV2hlbk1vZGFsIDsKLSAo
dm9pZClzZXRQcmV2ZW50c0FwcGxpY2F0aW9uVGVybWluYXRpb25XaGVuTW9kYWw6KEJPT0wpZmxh
ZyA7CgotIChOU1BvaW50KWNvbnZlcnRCYXNlVG9TY3JlZW46KE5TUG9pbnQpYVBvaW50OwotIChO
U1BvaW50KWNvbnZlcnRTY3JlZW5Ub0Jhc2U6KE5TUG9pbnQpYVBvaW50OwotICh2b2lkKXBlcmZv
cm1DbG9zZTooaWQpc2VuZGVyOwotICh2b2lkKXBlcmZvcm1NaW5pYXR1cml6ZTooaWQpc2VuZGVy
OwotICh2b2lkKXBlcmZvcm1ab29tOihpZClzZW5kZXI7Ci0gKE5TSW50ZWdlcilnU3RhdGU7Ci0g
KHZvaWQpc2V0T25lU2hvdDooQk9PTClmbGFnOwotIChCT09MKWlzT25lU2hvdDsKLSAoTlNEYXRh
ICopZGF0YVdpdGhFUFNJbnNpZGVSZWN0OihOU1JlY3QpcmVjdDsKLSAoTlNEYXRhICopZGF0YVdp
dGhQREZJbnNpZGVSZWN0OihOU1JlY3QpcmVjdDsKLSAodm9pZClwcmludDooaWQpc2VuZGVyOwoK
LSAodm9pZClkaXNhYmxlQ3Vyc29yUmVjdHM7Ci0gKHZvaWQpZW5hYmxlQ3Vyc29yUmVjdHM7Ci0g
KHZvaWQpZGlzY2FyZEN1cnNvclJlY3RzOwotIChCT09MKWFyZUN1cnNvclJlY3RzRW5hYmxlZDsK
LSAodm9pZClpbnZhbGlkYXRlQ3Vyc29yUmVjdHNGb3JWaWV3OihOU1ZpZXcgKilhVmlldzsKLSAo
dm9pZClyZXNldEN1cnNvclJlY3RzOwoKCi0gKHZvaWQpc2V0QWxsb3dzVG9vbFRpcHNXaGVuQXBw
bGljYXRpb25Jc0luYWN0aXZlOihCT09MKWFsbG93V2hlbkluYWN0aXZlOwoKCi0gKEJPT0wpYWxs
b3dzVG9vbFRpcHNXaGVuQXBwbGljYXRpb25Jc0luYWN0aXZlOwoKCgotICh2b2lkKXNldEJhY2tp
bmdUeXBlOihOU0JhY2tpbmdTdG9yZVR5cGUpYnVmZmVyaW5nVHlwZTsKLSAoTlNCYWNraW5nU3Rv
cmVUeXBlKWJhY2tpbmdUeXBlOwotICh2b2lkKXNldExldmVsOihOU0ludGVnZXIpbmV3TGV2ZWw7
Ci0gKE5TSW50ZWdlcilsZXZlbDsKLSAodm9pZClzZXREZXB0aExpbWl0OihOU1dpbmRvd0RlcHRo
KWxpbWl0OwotIChOU1dpbmRvd0RlcHRoKWRlcHRoTGltaXQ7Ci0gKHZvaWQpc2V0RHluYW1pY0Rl
cHRoTGltaXQ6KEJPT0wpZmxhZzsKLSAoQk9PTCloYXNEeW5hbWljRGVwdGhMaW1pdDsKLSAoTlNT
Y3JlZW4gKilzY3JlZW47Ci0gKE5TU2NyZWVuICopZGVlcGVzdFNjcmVlbjsKLSAoQk9PTCljYW5T
dG9yZUNvbG9yOwotICh2b2lkKXNldEhhc1NoYWRvdzooQk9PTCloYXNTaGFkb3c7Ci0gKEJPT0wp
aGFzU2hhZG93OwoKLSAodm9pZClpbnZhbGlkYXRlU2hhZG93OwoKLSAodm9pZClzZXRBbHBoYVZh
bHVlOihDR0Zsb2F0KXdpbmRvd0FscGhhOwotIChDR0Zsb2F0KWFscGhhVmFsdWU7Ci0gKHZvaWQp
c2V0T3BhcXVlOihCT09MKWlzT3BhcXVlOwotIChCT09MKWlzT3BhcXVlOwoKCgoKCi0gKHZvaWQp
c2V0U2hhcmluZ1R5cGU6KE5TV2luZG93U2hhcmluZ1R5cGUpdHlwZTsKLSAoTlNXaW5kb3dTaGFy
aW5nVHlwZSlzaGFyaW5nVHlwZTsKCgoKLSAodm9pZClzZXRQcmVmZXJyZWRCYWNraW5nTG9jYXRp
b246KE5TV2luZG93QmFja2luZ0xvY2F0aW9uKWJhY2tpbmdMb2NhdGlvbjsKCgotIChOU1dpbmRv
d0JhY2tpbmdMb2NhdGlvbilwcmVmZXJyZWRCYWNraW5nTG9jYXRpb247CgoKLSAoTlNXaW5kb3dC
YWNraW5nTG9jYXRpb24pYmFja2luZ0xvY2F0aW9uOwoKCgoKCi0gKEJPT0wpYWxsb3dzQ29uY3Vy
cmVudFZpZXdEcmF3aW5nIDsKCgoKLSAodm9pZClzZXRBbGxvd3NDb25jdXJyZW50Vmlld0RyYXdp
bmc6KEJPT0wpZmxhZyA7CgoKLSAoQk9PTClkaXNwbGF5c1doZW5TY3JlZW5Qcm9maWxlQ2hhbmdl
czsKLSAodm9pZClzZXREaXNwbGF5c1doZW5TY3JlZW5Qcm9maWxlQ2hhbmdlczooQk9PTClmbGFn
OwoKLSAodm9pZClkaXNhYmxlU2NyZWVuVXBkYXRlc1VudGlsRmx1c2g7CgoKCgoKLSAoQk9PTClj
YW5CZWNvbWVWaXNpYmxlV2l0aG91dExvZ2luOwotICh2b2lkKXNldENhbkJlY29tZVZpc2libGVX
aXRob3V0TG9naW46KEJPT0wpZmxhZzsKCgotICh2b2lkKXNldENvbGxlY3Rpb25CZWhhdmlvcjoo
TlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3IpYmVoYXZpb3I7Ci0gKE5TV2luZG93Q29sbGVjdGlv
bkJlaGF2aW9yKWNvbGxlY3Rpb25CZWhhdmlvcjsKCgoKCgotKEJPT0wpY2FuQmVWaXNpYmxlT25B
bGxTcGFjZXMgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotKHZvaWQpc2V0Q2FuQmVWaXNp
YmxlT25BbGxTcGFjZXM6KEJPT0wpZmxhZyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoK
LSAoQk9PTClpc09uQWN0aXZlU3BhY2UgOwoKLSAoTlNTdHJpbmcgKilzdHJpbmdXaXRoU2F2ZWRG
cmFtZTsKLSAodm9pZClzZXRGcmFtZUZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nOwotICh2
b2lkKXNhdmVGcmFtZVVzaW5nTmFtZTooTlNTdHJpbmcgKiluYW1lOwoKLSAoQk9PTClzZXRGcmFt
ZVVzaW5nTmFtZTooTlNTdHJpbmcgKiluYW1lIGZvcmNlOihCT09MKWZvcmNlOwotIChCT09MKXNl
dEZyYW1lVXNpbmdOYW1lOihOU1N0cmluZyAqKW5hbWU7Ci0gKEJPT0wpc2V0RnJhbWVBdXRvc2F2
ZU5hbWU6KE5TU3RyaW5nICopbmFtZTsKLSAoTlNTdHJpbmcgKilmcmFtZUF1dG9zYXZlTmFtZTsK
KyAodm9pZClyZW1vdmVGcmFtZVVzaW5nTmFtZTooTlNTdHJpbmcgKiluYW1lOwoKCi0gKHZvaWQp
Y2FjaGVJbWFnZUluUmVjdDooTlNSZWN0KWFSZWN0OwotICh2b2lkKXJlc3RvcmVDYWNoZWRJbWFn
ZTsKLSAodm9pZClkaXNjYXJkQ2FjaGVkSW1hZ2U7CgotIChOU1NpemUpbWluU2l6ZTsKLSAoTlNT
aXplKW1heFNpemU7Ci0gKHZvaWQpc2V0TWluU2l6ZTooTlNTaXplKXNpemU7Ci0gKHZvaWQpc2V0
TWF4U2l6ZTooTlNTaXplKXNpemU7CgotIChOU1NpemUpY29udGVudE1pblNpemU7Ci0gKE5TU2l6
ZSljb250ZW50TWF4U2l6ZTsKLSAodm9pZClzZXRDb250ZW50TWluU2l6ZTooTlNTaXplKXNpemU7
Ci0gKHZvaWQpc2V0Q29udGVudE1heFNpemU6KE5TU2l6ZSlzaXplOwoKLSAoTlNFdmVudCAqKW5l
eHRFdmVudE1hdGNoaW5nTWFzazooTlNVSW50ZWdlciltYXNrOwotIChOU0V2ZW50ICopbmV4dEV2
ZW50TWF0Y2hpbmdNYXNrOihOU1VJbnRlZ2VyKW1hc2sgdW50aWxEYXRlOihOU0RhdGUgKilleHBp
cmF0aW9uIGluTW9kZTooTlNTdHJpbmcgKiltb2RlIGRlcXVldWU6KEJPT0wpZGVxRmxhZzsKLSAo
dm9pZClkaXNjYXJkRXZlbnRzTWF0Y2hpbmdNYXNrOihOU1VJbnRlZ2VyKW1hc2sgYmVmb3JlRXZl
bnQ6KE5TRXZlbnQgKilsYXN0RXZlbnQ7Ci0gKHZvaWQpcG9zdEV2ZW50OihOU0V2ZW50ICopZXZl
bnQgYXRTdGFydDooQk9PTClmbGFnOwotIChOU0V2ZW50ICopY3VycmVudEV2ZW50OwotICh2b2lk
KXNldEFjY2VwdHNNb3VzZU1vdmVkRXZlbnRzOihCT09MKWZsYWc7Ci0gKEJPT0wpYWNjZXB0c01v
dXNlTW92ZWRFdmVudHM7CgotICh2b2lkKXNldElnbm9yZXNNb3VzZUV2ZW50czooQk9PTClmbGFn
OwotIChCT09MKWlnbm9yZXNNb3VzZUV2ZW50czsKCi0gKE5TRGljdGlvbmFyeSAqKWRldmljZURl
c2NyaXB0aW9uOwotICh2b2lkKXNlbmRFdmVudDooTlNFdmVudCAqKXRoZUV2ZW50OwotIChOU1Bv
aW50KW1vdXNlTG9jYXRpb25PdXRzaWRlT2ZFdmVudFN0cmVhbTsKKyAodm9pZCltZW51Q2hhbmdl
ZDooTlNNZW51ICopbWVudTsKCi0gKGlkKXdpbmRvd0NvbnRyb2xsZXI7Ci0gKHZvaWQpc2V0V2lu
ZG93Q29udHJvbGxlcjooTlNXaW5kb3dDb250cm9sbGVyICopd2luZG93Q29udHJvbGxlcjsKCi0g
KEJPT0wpaXNTaGVldDsKLSAoTlNXaW5kb3cgKilhdHRhY2hlZFNoZWV0OwoKCisgKE5TQnV0dG9u
ICopc3RhbmRhcmRXaW5kb3dCdXR0b246KE5TV2luZG93QnV0dG9uKWIgZm9yU3R5bGVNYXNrOihO
U1VJbnRlZ2VyKXN0eWxlTWFzazsKLSAoTlNCdXR0b24gKilzdGFuZGFyZFdpbmRvd0J1dHRvbjoo
TlNXaW5kb3dCdXR0b24pYjsKCgoKLSAodm9pZClhZGRDaGlsZFdpbmRvdzooTlNXaW5kb3cgKilj
aGlsZFdpbiBvcmRlcmVkOihOU1dpbmRvd09yZGVyaW5nTW9kZSlwbGFjZTsKLSAodm9pZClyZW1v
dmVDaGlsZFdpbmRvdzooTlNXaW5kb3cgKiljaGlsZFdpbjsKLSAoTlNBcnJheSAqKWNoaWxkV2lu
ZG93czsKCi0gKE5TV2luZG93ICopcGFyZW50V2luZG93OwotICh2b2lkKXNldFBhcmVudFdpbmRv
dzooTlNXaW5kb3cgKil3aW5kb3c7CgoKCgoKLSAoTlNHcmFwaGljc0NvbnRleHQgKilncmFwaGlj
c0NvbnRleHQ7CgoKCi0gKENHRmxvYXQpdXNlclNwYWNlU2NhbGVGYWN0b3I7CgoKCi0gKHZvaWQp
c2V0Q29sb3JTcGFjZTooTlNDb2xvclNwYWNlICopY29sb3JTcGFjZSA7Ci0gKE5TQ29sb3JTcGFj
ZSAqKWNvbG9yU3BhY2UgOwojIDYxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0
LmZyYW1ld29yay9IZWFkZXJzL05TV2luZG93LmgiIDMKKyAoTlNBcnJheSAqKXdpbmRvd051bWJl
cnNXaXRoT3B0aW9uczooTlNXaW5kb3dOdW1iZXJMaXN0T3B0aW9ucylvcHRpb25zIDsKCgoKKyAo
TlNJbnRlZ2VyKXdpbmRvd051bWJlckF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgYmVsb3dXaW5kb3dX
aXRoV2luZG93TnVtYmVyOihOU0ludGVnZXIpd2luZG93TnVtYmVyIDsKCkBlbmQKCkBpbnRlcmZh
Y2UgTlNXaW5kb3coTlNLZXlib2FyZFVJKQotICh2b2lkKXNldEluaXRpYWxGaXJzdFJlc3BvbmRl
cjooTlNWaWV3ICopdmlldzsKLSAoTlNWaWV3ICopaW5pdGlhbEZpcnN0UmVzcG9uZGVyOwotICh2
b2lkKXNlbGVjdE5leHRLZXlWaWV3OihpZClzZW5kZXI7Ci0gKHZvaWQpc2VsZWN0UHJldmlvdXNL
ZXlWaWV3OihpZClzZW5kZXI7Ci0gKHZvaWQpc2VsZWN0S2V5Vmlld0ZvbGxvd2luZ1ZpZXc6KE5T
VmlldyAqKWFWaWV3OwotICh2b2lkKXNlbGVjdEtleVZpZXdQcmVjZWRpbmdWaWV3OihOU1ZpZXcg
KilhVmlldzsKLSAoTlNTZWxlY3Rpb25EaXJlY3Rpb24pa2V5Vmlld1NlbGVjdGlvbkRpcmVjdGlv
bjsKLSAodm9pZClzZXREZWZhdWx0QnV0dG9uQ2VsbDooTlNCdXR0b25DZWxsICopZGVmQnV0dDsK
LSAoTlNCdXR0b25DZWxsICopZGVmYXVsdEJ1dHRvbkNlbGw7Ci0gKHZvaWQpZGlzYWJsZUtleUVx
dWl2YWxlbnRGb3JEZWZhdWx0QnV0dG9uQ2VsbDsKLSAodm9pZCllbmFibGVLZXlFcXVpdmFsZW50
Rm9yRGVmYXVsdEJ1dHRvbkNlbGw7CgotICh2b2lkKXNldEF1dG9yZWNhbGN1bGF0ZXNLZXlWaWV3
TG9vcDooQk9PTClmbGFnOwotIChCT09MKWF1dG9yZWNhbGN1bGF0ZXNLZXlWaWV3TG9vcDsKLSAo
dm9pZClyZWNhbGN1bGF0ZUtleVZpZXdMb29wOwoKQGVuZAoKQGludGVyZmFjZSBOU1dpbmRvdyAo
TlNUb29sYmFyU3VwcG9ydCkKLSAodm9pZClzZXRUb29sYmFyOihOU1Rvb2xiYXIqKXRvb2xiYXI7
Ci0gKE5TVG9vbGJhciAqKXRvb2xiYXI7Ci0gKHZvaWQpdG9nZ2xlVG9vbGJhclNob3duOihpZClz
ZW5kZXI7Ci0gKHZvaWQpcnVuVG9vbGJhckN1c3RvbWl6YXRpb25QYWxldHRlOihpZClzZW5kZXI7
CgotICh2b2lkKXNldFNob3dzVG9vbGJhckJ1dHRvbjooQk9PTClzaG93OwotIChCT09MKXNob3dz
VG9vbGJhckJ1dHRvbjsKCkBlbmQKCkBpbnRlcmZhY2UgTlNXaW5kb3coTlNEcmFnKQotICh2b2lk
KWRyYWdJbWFnZTooTlNJbWFnZSAqKWFuSW1hZ2UgYXQ6KE5TUG9pbnQpYmFzZUxvY2F0aW9uIG9m
ZnNldDooTlNTaXplKWluaXRpYWxPZmZzZXQgZXZlbnQ6KE5TRXZlbnQgKilldmVudCBwYXN0ZWJv
YXJkOihOU1Bhc3RlYm9hcmQgKilwYm9hcmQgc291cmNlOihpZClzb3VyY2VPYmogc2xpZGVCYWNr
OihCT09MKXNsaWRlRmxhZzsKCi0gKHZvaWQpcmVnaXN0ZXJGb3JEcmFnZ2VkVHlwZXM6KE5TQXJy
YXkgKiluZXdUeXBlczsKLSAodm9pZCl1bnJlZ2lzdGVyRHJhZ2dlZFR5cGVzOwpAZW5kCgpAaW50
ZXJmYWNlIE5TV2luZG93KE5TQ2FyYm9uRXh0ZW5zaW9ucykKCi0gKE5TV2luZG93ICopaW5pdFdp
dGhXaW5kb3dSZWY6KHZvaWQgKiApd2luZG93UmVmOwoKLSAodm9pZCAqICl3aW5kb3dSZWY7CkBl
bmQKCkBwcm90b2NvbCBOU1dpbmRvd0RlbGVnYXRlIDxOU09iamVjdD4KQG9wdGlvbmFsCi0gKEJP
T0wpd2luZG93U2hvdWxkQ2xvc2U6KGlkKXNlbmRlcjsKLSAoaWQpd2luZG93V2lsbFJldHVybkZp
ZWxkRWRpdG9yOihOU1dpbmRvdyAqKXNlbmRlciB0b09iamVjdDooaWQpY2xpZW50OwotIChOU1Np
emUpd2luZG93V2lsbFJlc2l6ZTooTlNXaW5kb3cgKilzZW5kZXIgdG9TaXplOihOU1NpemUpZnJh
bWVTaXplOwotIChOU1JlY3Qpd2luZG93V2lsbFVzZVN0YW5kYXJkRnJhbWU6KE5TV2luZG93ICop
d2luZG93IGRlZmF1bHRGcmFtZTooTlNSZWN0KW5ld0ZyYW1lOwotIChCT09MKXdpbmRvd1Nob3Vs
ZFpvb206KE5TV2luZG93ICopd2luZG93IHRvRnJhbWU6KE5TUmVjdCluZXdGcmFtZTsKLSAoTlNV
bmRvTWFuYWdlciAqKXdpbmRvd1dpbGxSZXR1cm5VbmRvTWFuYWdlcjooTlNXaW5kb3cgKil3aW5k
b3c7CgotIChOU1JlY3Qpd2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyB3aWxsUG9zaXRpb25TaGVl
dDooTlNXaW5kb3cgKilzaGVldCB1c2luZ1JlY3Q6KE5TUmVjdClyZWN0OwoKCgoKLSAoQk9PTCl3
aW5kb3c6KE5TV2luZG93ICopd2luZG93IHNob3VsZFBvcFVwRG9jdW1lbnRQYXRoTWVudTooTlNN
ZW51ICopbWVudTsKCgoKLSAoQk9PTCl3aW5kb3c6KE5TV2luZG93ICopd2luZG93IHNob3VsZERy
YWdEb2N1bWVudFdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50IGZyb206KE5TUG9pbnQpZHJhZ0lt
YWdlTG9jYXRpb24gd2l0aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQ7CgoK
Ci0gKHZvaWQpd2luZG93RGlkUmVzaXplOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsK
LSAodm9pZCl3aW5kb3dEaWRFeHBvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwot
ICh2b2lkKXdpbmRvd1dpbGxNb3ZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLSAo
dm9pZCl3aW5kb3dEaWRNb3ZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLSAodm9p
ZCl3aW5kb3dEaWRCZWNvbWVLZXk6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotICh2
b2lkKXdpbmRvd0RpZFJlc2lnbktleTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0g
KHZvaWQpd2luZG93RGlkQmVjb21lTWFpbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247
Ci0gKHZvaWQpd2luZG93RGlkUmVzaWduTWFpbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRp
b247Ci0gKHZvaWQpd2luZG93V2lsbENsb3NlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bjsKLSAodm9pZCl3aW5kb3dXaWxsTWluaWF0dXJpemU6KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uOwotICh2b2lkKXdpbmRvd0RpZE1pbmlhdHVyaXplOihOU05vdGlmaWNhdGlvbiAqKW5v
dGlmaWNhdGlvbjsKLSAodm9pZCl3aW5kb3dEaWREZW1pbmlhdHVyaXplOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbjsKLSAodm9pZCl3aW5kb3dEaWRVcGRhdGU6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uOwotICh2b2lkKXdpbmRvd0RpZENoYW5nZVNjcmVlbjooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb247CgotICh2b2lkKXdpbmRvd0RpZENoYW5nZVNjcmVlblByb2Zp
bGU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwoKLSAodm9pZCl3aW5kb3dXaWxsQmVn
aW5TaGVldDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0gKHZvaWQpd2luZG93RGlk
RW5kU2hlZXQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwoKLSAodm9pZCl3aW5kb3dX
aWxsU3RhcnRMaXZlUmVzaXplOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbiA7Ci0gKHZv
aWQpd2luZG93RGlkRW5kTGl2ZVJlc2l6ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24g
OwpAZW5kCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TV2luZG93RGlkQmVjb21lS2V5Tm90aWZp
Y2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1dpbmRvd0RpZEJlY29tZU1haW5Ob3RpZmlj
YXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TV2luZG93RGlkQ2hhbmdlU2NyZWVuTm90aWZp
Y2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1dpbmRvd0RpZERlbWluaWF0dXJpemVOb3Rp
ZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TV2luZG93RGlkRXhwb3NlTm90aWZpY2F0
aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1dpbmRvd0RpZE1pbmlhdHVyaXplTm90aWZpY2F0
aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1dpbmRvd0RpZE1vdmVOb3RpZmljYXRpb247CmV4
dGVybiAiQyIgTlNTdHJpbmcgKk5TV2luZG93RGlkUmVzaWduS2V5Tm90aWZpY2F0aW9uOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU1dpbmRvd0RpZFJlc2lnbk1haW5Ob3RpZmljYXRpb247CmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TV2luZG93RGlkUmVzaXplTm90aWZpY2F0aW9uOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpOU1dpbmRvd0RpZFVwZGF0ZU5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqTlNXaW5kb3dXaWxsQ2xvc2VOb3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcg
Kk5TV2luZG93V2lsbE1pbmlhdHVyaXplTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU1dpbmRvd1dpbGxNb3ZlTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1dp
bmRvd1dpbGxCZWdpblNoZWV0Tm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1dp
bmRvd0RpZEVuZFNoZWV0Tm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1dpbmRv
d0RpZENoYW5nZVNjcmVlblByb2ZpbGVOb3RpZmljYXRpb24gOwoKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IE5TV2luZG93V2lsbFN0YXJ0TGl2ZVJlc2l6ZU5vdGlmaWNhdGlvbiA7CgpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNXaW5kb3dEaWRFbmRMaXZlUmVzaXplTm90aWZpY2F0
aW9uIDsKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvTlNQYW5lbC5oIiAyIDMKCgoKCgoKCmV4dGVybiAiQyIgTlNJbnRlZ2VyIE5TUnVuQWxl
cnRQYW5lbChOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICptc2dGb3JtYXQsIE5TU3RyaW5nICpk
ZWZhdWx0QnV0dG9uLCBOU1N0cmluZyAqYWx0ZXJuYXRlQnV0dG9uLCBOU1N0cmluZyAqb3RoZXJC
dXR0b24sIC4uLik7CmV4dGVybiAiQyIgTlNJbnRlZ2VyIE5TUnVuSW5mb3JtYXRpb25hbEFsZXJ0
UGFuZWwoTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqbXNnRm9ybWF0LCBOU1N0cmluZyAqZGVm
YXVsdEJ1dHRvbiwgTlNTdHJpbmcgKmFsdGVybmF0ZUJ1dHRvbiwgTlNTdHJpbmcgKm90aGVyQnV0
dG9uLCAuLi4pOwpleHRlcm4gIkMiIE5TSW50ZWdlciBOU1J1bkNyaXRpY2FsQWxlcnRQYW5lbChO
U1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICptc2dGb3JtYXQsIE5TU3RyaW5nICpkZWZhdWx0QnV0
dG9uLCBOU1N0cmluZyAqYWx0ZXJuYXRlQnV0dG9uLCBOU1N0cmluZyAqb3RoZXJCdXR0b24sIC4u
Lik7CgoKCgoKZXh0ZXJuICJDIiBOU0ludGVnZXIgTlNSdW5BbGVydFBhbmVsUmVsYXRpdmVUb1dp
bmRvdyhOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICptc2dGb3JtYXQsIE5TU3RyaW5nICpkZWZh
dWx0QnV0dG9uLCBOU1N0cmluZyAqYWx0ZXJuYXRlQnV0dG9uLCBOU1N0cmluZyAqb3RoZXJCdXR0
b24sIE5TV2luZG93ICpkb2NXaW5kb3csIC4uLikgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
OwpleHRlcm4gIkMiIE5TSW50ZWdlciBOU1J1bkluZm9ybWF0aW9uYWxBbGVydFBhbmVsUmVsYXRp
dmVUb1dpbmRvdyhOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICptc2dGb3JtYXQsIE5TU3RyaW5n
ICpkZWZhdWx0QnV0dG9uLCBOU1N0cmluZyAqYWx0ZXJuYXRlQnV0dG9uLCBOU1N0cmluZyAqb3Ro
ZXJCdXR0b24sIE5TV2luZG93ICpkb2NXaW5kb3csIC4uLikgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwpleHRlcm4gIkMiIE5TSW50ZWdlciBOU1J1bkNyaXRpY2FsQWxlcnRQYW5lbFJlbGF0
aXZlVG9XaW5kb3coTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqbXNnRm9ybWF0LCBOU1N0cmlu
ZyAqZGVmYXVsdEJ1dHRvbiwgTlNTdHJpbmcgKmFsdGVybmF0ZUJ1dHRvbiwgTlNTdHJpbmcgKm90
aGVyQnV0dG9uLCBOU1dpbmRvdyAqZG9jV2luZG93LCAuLi4pIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKIyAzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29y
ay9IZWFkZXJzL05TUGFuZWwuaCIgMwpleHRlcm4gIkMiIHZvaWQgTlNCZWdpbkFsZXJ0U2hlZXQo
TlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqZGVmYXVsdEJ1dHRvbiwgTlNTdHJpbmcgKmFsdGVy
bmF0ZUJ1dHRvbiwgTlNTdHJpbmcgKm90aGVyQnV0dG9uLCBOU1dpbmRvdyAqZG9jV2luZG93LCBp
ZCBtb2RhbERlbGVnYXRlLCBTRUwgZGlkRW5kU2VsZWN0b3IsIFNFTCBkaWREaXNtaXNzU2VsZWN0
b3IsIHZvaWQgKmNvbnRleHRJbmZvLCBOU1N0cmluZyAqbXNnRm9ybWF0LCAuLi4pOwpleHRlcm4g
IkMiIHZvaWQgTlNCZWdpbkluZm9ybWF0aW9uYWxBbGVydFNoZWV0KE5TU3RyaW5nICp0aXRsZSwg
TlNTdHJpbmcgKmRlZmF1bHRCdXR0b24sIE5TU3RyaW5nICphbHRlcm5hdGVCdXR0b24sIE5TU3Ry
aW5nICpvdGhlckJ1dHRvbiwgTlNXaW5kb3cgKmRvY1dpbmRvdywgaWQgbW9kYWxEZWxlZ2F0ZSwg
U0VMIGRpZEVuZFNlbGVjdG9yLCBTRUwgZGlkRGlzbWlzc1NlbGVjdG9yLCB2b2lkICpjb250ZXh0
SW5mbywgTlNTdHJpbmcgKm1zZ0Zvcm1hdCwgLi4uKTsKZXh0ZXJuICJDIiB2b2lkIE5TQmVnaW5D
cml0aWNhbEFsZXJ0U2hlZXQoTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqZGVmYXVsdEJ1dHRv
biwgTlNTdHJpbmcgKmFsdGVybmF0ZUJ1dHRvbiwgTlNTdHJpbmcgKm90aGVyQnV0dG9uLCBOU1dp
bmRvdyAqZG9jV2luZG93LCBpZCBtb2RhbERlbGVnYXRlLCBTRUwgZGlkRW5kU2VsZWN0b3IsIFNF
TCBkaWREaXNtaXNzU2VsZWN0b3IsIHZvaWQgKmNvbnRleHRJbmZvLCBOU1N0cmluZyAqbXNnRm9y
bWF0LCAuLi4pOwoKZXh0ZXJuICJDIiBpZCBOU0dldEFsZXJ0UGFuZWwoTlNTdHJpbmcgKnRpdGxl
LCBOU1N0cmluZyAqbXNnRm9ybWF0LCBOU1N0cmluZyAqZGVmYXVsdEJ1dHRvbiwgTlNTdHJpbmcg
KmFsdGVybmF0ZUJ1dHRvbiwgTlNTdHJpbmcgKm90aGVyQnV0dG9uLCAuLi4pOwpleHRlcm4gIkMi
IGlkIE5TR2V0SW5mb3JtYXRpb25hbEFsZXJ0UGFuZWwoTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmlu
ZyAqbXNnRm9ybWF0LCBOU1N0cmluZyAqZGVmYXVsdEJ1dHRvbiwgTlNTdHJpbmcgKmFsdGVybmF0
ZUJ1dHRvbiwgTlNTdHJpbmcgKm90aGVyQnV0dG9uLCAuLi4pOwpleHRlcm4gIkMiIGlkIE5TR2V0
Q3JpdGljYWxBbGVydFBhbmVsKE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKm1zZ0Zvcm1hdCwg
TlNTdHJpbmcgKmRlZmF1bHRCdXR0b24sIE5TU3RyaW5nICphbHRlcm5hdGVCdXR0b24sIE5TU3Ry
aW5nICpvdGhlckJ1dHRvbiwgLi4uKTsKCmV4dGVybiAiQyIgdm9pZCBOU1JlbGVhc2VBbGVydFBh
bmVsKGlkIHBhbmVsKTsKCgoKCgoKZW51bSB7CiAgICBOU0FsZXJ0RGVmYXVsdFJldHVybiA9IDEs
CiAgICBOU0FsZXJ0QWx0ZXJuYXRlUmV0dXJuID0gMCwKICAgIE5TQWxlcnRPdGhlclJldHVybiA9
IC0xLAogICAgTlNBbGVydEVycm9yUmV0dXJuID0gLTIKfTsKCmVudW0gewogICAgTlNPS0J1dHRv
biA9IDEsCiAgICBOU0NhbmNlbEJ1dHRvbiA9IDAKfTsKCgplbnVtIHsKICAgIE5TVXRpbGl0eVdp
bmRvd01hc2sgPSAxIDw8IDQsCiAgICBOU0RvY01vZGFsV2luZG93TWFzayA9IDEgPDwgNgp9OwoK
CmVudW0gewogICAgTlNOb25hY3RpdmF0aW5nUGFuZWxNYXNrID0gMSA8PCA3Cn07CgoKCmVudW0g
ewogICAgTlNIVURXaW5kb3dNYXNrID0gMSA8PCAxMwp9OwoKCkBpbnRlcmZhY2UgTlNQYW5lbCA6
IE5TV2luZG93CnsKCn0KCi0gKEJPT0wpaXNGbG9hdGluZ1BhbmVsOwotICh2b2lkKXNldEZsb2F0
aW5nUGFuZWw6KEJPT0wpZmxhZzsKLSAoQk9PTCliZWNvbWVzS2V5T25seUlmTmVlZGVkOwotICh2
b2lkKXNldEJlY29tZXNLZXlPbmx5SWZOZWVkZWQ6KEJPT0wpZmxhZzsKLSAoQk9PTCl3b3Jrc1do
ZW5Nb2RhbDsKLSAodm9pZClzZXRXb3Jrc1doZW5Nb2RhbDooQk9PTClmbGFnOwoKQGVuZAojIDkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0Zv
bnRQYW5lbC5oIiAyIDMKCkBjbGFzcyBOU0ZvbnRQYW5lbCwgTlNNdXRhYmxlRGljdGlvbmFyeSwg
TlNGb250TWFuYWdlciwgTlNNdXRhYmxlQXJyYXksIE5TVGFibGVWaWV3LCBOU0ZvbnREZXNjcmlw
dG9yLCBOU0ZvbnQ7CgoKCkBpbnRlcmZhY2UgTlNPYmplY3QgKE5TRm9udFBhbmVsVmFsaWRhdGlv
bkFkZGl0aW9ucykKLSAoTlNVSW50ZWdlcikgdmFsaWRNb2Rlc0ZvckZvbnRQYW5lbDogKE5TRm9u
dFBhbmVsICopIGZvbnRQYW5lbDsKQGVuZAoKCgpAaW50ZXJmYWNlIE5TRm9udFBhbmVsIDogTlNQ
YW5lbCB7CgogICAgTlNGb250TWFuYWdlciAqX21hbmFnZXI7CiAgICBOU0FycmF5ICpfY29sbGVj
dGlvbk5hbWVzOwogICAgaWQgX3NlbGVjdGlvbjsKICAgIHZvaWQgKl9jYXJib25Ob3RpZmljYXRp
b247CiAgICBpZCBfdGFyZ2V0T2JqZWN0OwoKICAgIGlkIF9mYW1pbHlMaXN0OwogICAgaWQgX2Zh
Y2VMaXN0OwogICAgaWQgX3NpemVMaXN0OwogICAgaWQgX21haW5Db2xsZWN0aW9uTGlzdDsKICAg
IGlkIF9zaXplRmllbGQ7CiAgICBpZCBfc2l6ZVNsaWRlcjsKICAgIGlkIF9zaXplU2xpZGVyQm94
OwogICAgaWQgX3ByZXZpZXc7CiAgICBpZCBfcHJldmlld0NhcHRpb247CiAgICBpZCBfbWFpblNw
bGl0VmlldzsKICAgIGlkIF9tbUNvbGxlY3Rpb25MaXN0OwogICAgaWQgX21tRmFtaWx5TGlzdDsK
ICAgIGlkIF9tbUZhY2VMaXN0OwogICAgaWQgX21tU2l6ZUxpc3Q7CiAgICBpZCBfZXh0cmFzUG9w
dXA7CiAgICBpZCBfc2VhcmNoRmllbGQ7CiAgICBpZCBfZml4ZWRMaXN0QnV0dG9uOwogICAgaWQg
X3NsaWRlckJ1dHRvbjsKICAgIGlkIF9hY2Nlc3NvcnlWaWV3OwogICAgc3RydWN0IF9fZnBGbGFn
cyB7CiB1bnNpZ25lZCBpbnQgc2V0Rm9udENoYW5nZToxOwogdW5zaWduZWQgaW50IHNldEZvbnRB
dHRyaWJ1dGVDaGFuZ2U6MTsKIHVuc2lnbmVkIGludCBfZGVsUmVzcEZhbWlseToxOwogdW5zaWdu
ZWQgaW50IF9kZWxSZXNwRmFjZToxOwogdW5zaWduZWQgaW50IF9kZWxSZXNwU2l6ZToxOwogdW5z
aWduZWQgaW50IF9kZWxSZXNwQ29sbDoxOwogdW5zaWduZWQgaW50IF9jb2xsZWN0aW9uRGlzYWJs
ZWQ6MTsKIHVuc2lnbmVkIGludCBfc2l6ZURpc2FibGVkOjE7CiB1bnNpZ25lZCBpbnQgX2ZhY2VE
aXNhYmxlZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBzaG93RWZmZWN0czoxOwogICAgICAgIHVu
c2lnbmVkIGludCBfdWlNb2RlOjg7CiAgICAgICAgdW5zaWduZWQgaW50IF9yZXNlcnZlZDoxNDsK
ICAgIH0gX2ZwRmxhZ3M7CgogICAgaWQgX3JlZ3VsYXJNb2RlQm94OwogICAgaWQgX21pbmlNb2Rl
Qm94OwogICAgaWQgX21vZGVCb3hTdXBlcnZpZXc7CiAgICBpZCBfY29sbGVjdGlvbkxhYmVsOwog
ICAgaWQgX3NpemVMYWJlbDsKICAgIGlkIF9mYWNlTGFiZWw7CiAgICBpZCBfZmFtaWx5TGFiZWw7
CiAgICBpZCBfc2l6ZVN0eWxlQnV0dG9uOwogICAgaWQgX25ld1NpemVGaWVsZDsKICAgIGlkIF9l
ZGl0U2l6ZUxpc3Q7CiAgICBpZCBfZWRpdFNpemVMaXN0Qm94OwogICAgaWQgX2VkaXRTaXplU2xp
ZGVyQm94OwogICAgaWQgX2VkaXRTaXplU2xpZGVyTWF4RmllbGQ7CiAgICBpZCBfZWRpdFNpemVT
bGlkZXJNaW5GaWVsZDsKICAgIGlkIF9zaXplRWRpdFdpbmRvdzsKICAgIGlkIF9hdmFpbGFibGVT
aXplczsKCiAgICBpZCBfYWRkQ29sbGVjdGlvbkJ1dHRvbjsKICAgIGlkIF9yZW1vdmVDb2xsZWN0
aW9uQnV0dG9uOwoKICAgIENHRmxvYXQgX2ZvbnRQYW5lbFByZXZpZXdIZWlnaHQ7CiAgICBpZCBf
dHlwb2dyYXBoeVBhbmVsOwogICAgaWQgX2FjdGlvbkJ1dHRvbjsKICAgIGlkIF9mb250RWZmZWN0
c0JveDsKICAgIGludCBfc2l6ZVN0eWxlOwoKCgoKfQoKKyAoTlNGb250UGFuZWwgKilzaGFyZWRG
b250UGFuZWw7CisgKEJPT0wpc2hhcmVkRm9udFBhbmVsRXhpc3RzOwoKLSAoTlNWaWV3ICopYWNj
ZXNzb3J5VmlldzsKLSAodm9pZClzZXRBY2Nlc3NvcnlWaWV3OihOU1ZpZXcgKilhVmlldzsKLSAo
dm9pZClzZXRQYW5lbEZvbnQ6KE5TRm9udCAqKWZvbnRPYmogaXNNdWx0aXBsZTooQk9PTClmbGFn
OwotIChOU0ZvbnQgKilwYW5lbENvbnZlcnRGb250OihOU0ZvbnQgKilmb250T2JqOwotIChCT09M
KXdvcmtzV2hlbk1vZGFsOwotIChCT09MKWlzRW5hYmxlZDsKLSAodm9pZClzZXRFbmFibGVkOihC
T09MKWZsYWc7CgoKCi0gKHZvaWQpIHJlbG9hZERlZmF1bHRGb250RmFtaWxpZXM7CgpAZW5kCgoK
CgoKZW51bSB7CiAgICBOU0ZQUHJldmlld0J1dHRvbiA9IDEzMSwKICAgIE5TRlBSZXZlcnRCdXR0
b24gPSAxMzAsCiAgICBOU0ZQU2V0QnV0dG9uID0gMTMyLAogICAgTlNGUFByZXZpZXdGaWVsZCA9
IDEyOCwKICAgIE5TRlBTaXplRmllbGQgPSAxMjksCiAgICBOU0ZQU2l6ZVRpdGxlID0gMTMzLAog
ICAgTlNGUEN1cnJlbnRGaWVsZCA9IDEzNAp9OwoKCgplbnVtIHsKICAgIE5TRm9udFBhbmVsRmFj
ZU1vZGVNYXNrID0gMSA8PCAwLAogICAgTlNGb250UGFuZWxTaXplTW9kZU1hc2sgPSAxIDw8IDEs
CiAgICBOU0ZvbnRQYW5lbENvbGxlY3Rpb25Nb2RlTWFzayA9IDEgPDwgMiwKCgogICAgTlNGb250
UGFuZWxVbmRlcmxpbmVFZmZlY3RNb2RlTWFzayA9IDE8PDgsCiAgICBOU0ZvbnRQYW5lbFN0cmlr
ZXRocm91Z2hFZmZlY3RNb2RlTWFzayA9IDE8PDksCiAgICBOU0ZvbnRQYW5lbFRleHRDb2xvckVm
ZmVjdE1vZGVNYXNrID0gMTw8IDEwLAogICAgTlNGb250UGFuZWxEb2N1bWVudENvbG9yRWZmZWN0
TW9kZU1hc2sgPSAxPDwxMSwKICAgIE5TRm9udFBhbmVsU2hhZG93RWZmZWN0TW9kZU1hc2sgPSAx
PDwxMiwKICAgIE5TRm9udFBhbmVsQWxsRWZmZWN0c01vZGVNYXNrID0gMFhGRkYwMCwKCgogICAg
TlNGb250UGFuZWxTdGFuZGFyZE1vZGVzTWFzayA9IDB4RkZGRiwKICAgIE5TRm9udFBhbmVsQWxs
TW9kZXNNYXNrID0gMHhGRkZGRkZGRgp9OwojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0Zvcm0uaCIgMSAzCgoK
CgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9OU01hdHJpeC5oIiAxIDMKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yay9IZWFkZXJzL05TTWF0cml4LmgiIDMKQGNsYXNzIE5TQ29sb3IsIE5TTXV0
YWJsZUFycmF5OwpAcHJvdG9jb2wgTlNNYXRyaXhEZWxlZ2F0ZTsKCgoKZW51bSB7CiAgICBOU1Jh
ZGlvTW9kZU1hdHJpeCA9IDAsCiAgICBOU0hpZ2hsaWdodE1vZGVNYXRyaXggPSAxLAogICAgTlNM
aXN0TW9kZU1hdHJpeCA9IDIsCiAgICBOU1RyYWNrTW9kZU1hdHJpeCA9IDMKfTsKdHlwZWRlZiBO
U1VJbnRlZ2VyIE5TTWF0cml4TW9kZTsKCnR5cGVkZWYgc3RydWN0IF9fTUZsYWdzIHsKIyA1NiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TTWF0
cml4LmgiIDMKICAgIHVuc2lnbmVkIGludCByZXNlcnZlZE1hdHJpeDo0OwogICAgdW5zaWduZWQg
aW50IGRyYXdpbmdDb250ZXh0TWVudUhpZ2hsaWdodE9uQWxsU2VsZWN0ZWRSb3dzOjE7CiAgICB1
bnNpZ25lZCBpbnQgZHJhd2luZ0NvbnRleHRNZW51SGlnaGxpZ2h0OjE7CiAgICB1bnNpZ25lZCBp
bnQgYnJvd3Nlck9wdGltaXphdGlvbnNFbmFibGVkOjE7CiAgICB1bnNpZ25lZCBpbnQgbmVlZHNS
ZWRyYXdCZWZvcmVGaXJzdExpdmVSZXNpemVDYWNoZToxOwogICAgdW5zaWduZWQgaW50IHRtcEFs
bG93Tm9uVmlzaWJsZUNlbGxzVG9CZWNvbWVGaXJzdFJlc3BvbmRlcjoxOwogICAgdW5zaWduZWQg
aW50IHN1YmNsYXNzSXNTYWZlRm9yTGl2ZVJlc2l6ZToxOwogICAgdW5zaWduZWQgaW50IGhhc0Nh
Y2hlZFN1YmNsYXNzSXNTYWZlRm9yTGl2ZVJlc2l6ZToxOwogICAgdW5zaWduZWQgaW50IGxpdmVS
ZXNpemVJbWFnZUNhY2hlaW5nRW5hYmxlZDoxOwogICAgdW5zaWduZWQgaW50IGNoZWNrRm9yU2lt
cGxlVHJhY2tpbmdNb2RlOjE7CiAgICB1bnNpZ25lZCBpbnQgdXNlU2ltcGxlVHJhY2tpbmdNb2Rl
OjE7CiAgICB1bnNpZ25lZCBpbnQgcmVmdXNlc0ZpcnN0UmVzcG9uZGVyOjE7CiAgICB1bnNpZ25l
ZCBpbnQgZG9udFNjcm9sbDoxOwogICAgdW5zaWduZWQgaW50IGNoYW5naW5nU2VsZWN0aW9uV2l0
aEtleWJvYXJkOjE7CiAgICB1bnNpZ25lZCBpbnQgb25seVNldEtleUNlbGw6MTsKICAgIHVuc2ln
bmVkIGludCBjdXJyZW50bHlTZWxlY3RpbmdDZWxsOjE7CiAgICB1bnNpZ25lZCBpbnQgYWxsb3dz
SW5jcmVtZW50YWxTZWFyY2hpbmc6MTsKICAgIHVuc2lnbmVkIGludCB0YWJLZXlUcmF2ZXJzZXND
ZWxsc0V4cGxpY2l0bHlTZXQ6MTsKICAgIHVuc2lnbmVkIGludCB0YWJLZXlUcmF2ZXJzZXNDZWxs
czoxOwogICAgdW5zaWduZWQgaW50IGRyYXdpbmdBbmNlc3RvcjoxOwogICAgdW5zaWduZWQgaW50
IGF1dG9zaXplQ2VsbHM6MTsKICAgIHVuc2lnbmVkIGludCBkcmF3c0JhY2tncm91bmQ6MTsKICAg
IHVuc2lnbmVkIGludCBkcmF3c0NlbGxCYWNrZ3JvdW5kOjE7CiAgICB1bnNpZ25lZCBpbnQgc2Vs
ZWN0aW9uQnlSZWN0OjE7CiAgICB1bnNpZ25lZCBpbnQgYXV0b3Njcm9sbDoxOwogICAgdW5zaWdu
ZWQgaW50IGFsbG93RW1wdHlTZWw6MTsKICAgIHVuc2lnbmVkIGludCBsaXN0TW9kZToxOwogICAg
dW5zaWduZWQgaW50IHJhZGlvTW9kZToxOwogICAgdW5zaWduZWQgaW50IGhpZ2hsaWdodE1vZGU6
MTsKCn0gX01GbGFnczsKCkBpbnRlcmZhY2UgTlNNYXRyaXggOiBOU0NvbnRyb2wgPE5TVXNlcklu
dGVyZmFjZVZhbGlkYXRpb25zPgp7CgogICAgaWQgX3RhcmdldDsKICAgIFNFTCBfYWN0aW9uOwog
ICAgU0VMIF9kb3VibGVBY3Rpb247CiAgICBTRUwgX2Vycm9yQWN0aW9uOwogICAgaWQgX2RlbGVn
YXRlOwogICAgaWQgX3NlbGVjdGVkQ2VsbDsKICAgIE5TSW50ZWdlciBfc2VsZWN0ZWRSb3c7CiAg
ICBOU0ludGVnZXIgX3NlbGVjdGVkQ29sOwogICAgTlNJbnRlZ2VyIF9udW1Sb3dzOwogICAgTlNJ
bnRlZ2VyIF9udW1Db2xzOwogICAgTlNTaXplIF9jZWxsU2l6ZTsKICAgIE5TU2l6ZSBfaW50ZXJj
ZWxsOwogICAgaWQgX2ZvbnQ7CiAgICBpZCBfcHJvdG9DZWxsOwogICAgaWQgX2NlbGxDbGFzczsK
ICAgIE5TQ29sb3IgKl9iYWNrZ3JvdW5kQ29sb3I7CiAgICBpZCBfcHJpdmF0ZTsKICAgIE5TTXV0
YWJsZUFycmF5ICpfY2VsbHM7CiAgICBfTUZsYWdzIF9tRmxhZ3M7Cn0KCgotIChpZClpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0OwotIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJh
bWVSZWN0IG1vZGU6KE5TTWF0cml4TW9kZSlhTW9kZSBwcm90b3R5cGU6KE5TQ2VsbCAqKWFDZWxs
IG51bWJlck9mUm93czooTlNJbnRlZ2VyKXJvd3NIaWdoIG51bWJlck9mQ29sdW1uczooTlNJbnRl
Z2VyKWNvbHNXaWRlOwotIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0IG1vZGU6
KE5TTWF0cml4TW9kZSlhTW9kZSBjZWxsQ2xhc3M6KENsYXNzKWZhY3RvcnlJZCBudW1iZXJPZlJv
d3M6KE5TSW50ZWdlcilyb3dzSGlnaCBudW1iZXJPZkNvbHVtbnM6KE5TSW50ZWdlciljb2xzV2lk
ZTsKCgotICh2b2lkKXNldENlbGxDbGFzczooQ2xhc3MpZmFjdG9yeUlkOwotIChDbGFzcyljZWxs
Q2xhc3M7Ci0gKGlkKXByb3RvdHlwZTsKLSAodm9pZClzZXRQcm90b3R5cGU6KE5TQ2VsbCAqKWFD
ZWxsOwotIChOU0NlbGwgKiltYWtlQ2VsbEF0Um93OihOU0ludGVnZXIpcm93IGNvbHVtbjooTlNJ
bnRlZ2VyKWNvbDsKLSAoTlNNYXRyaXhNb2RlKW1vZGU7Ci0gKHZvaWQpc2V0TW9kZTooTlNNYXRy
aXhNb2RlKWFNb2RlOwotICh2b2lkKXNldEFsbG93c0VtcHR5U2VsZWN0aW9uOihCT09MKWZsYWc7
Ci0gKEJPT0wpYWxsb3dzRW1wdHlTZWxlY3Rpb247Ci0gKHZvaWQpc2VuZEFjdGlvbjooU0VMKWFT
ZWxlY3RvciB0bzooaWQpYW5PYmplY3QgZm9yQWxsQ2VsbHM6KEJPT0wpZmxhZzsKLSAoTlNBcnJh
eSAqKWNlbGxzOwotICh2b2lkKXNvcnRVc2luZ1NlbGVjdG9yOihTRUwpY29tcGFyYXRvcjsKLSAo
dm9pZClzb3J0VXNpbmdGdW5jdGlvbjooTlNJbnRlZ2VyICgqKShpZCwgaWQsIHZvaWQgKikpY29t
cGFyZSBjb250ZXh0Oih2b2lkICopY29udGV4dDsKLSAoaWQpc2VsZWN0ZWRDZWxsOwotIChOU0Fy
cmF5ICopc2VsZWN0ZWRDZWxsczsKLSAoTlNJbnRlZ2VyKXNlbGVjdGVkUm93OwotIChOU0ludGVn
ZXIpc2VsZWN0ZWRDb2x1bW47Ci0gKHZvaWQpc2V0U2VsZWN0aW9uQnlSZWN0OihCT09MKWZsYWc7
Ci0gKEJPT0wpaXNTZWxlY3Rpb25CeVJlY3Q7Ci0gKHZvaWQpc2V0U2VsZWN0aW9uRnJvbTooTlNJ
bnRlZ2VyKXN0YXJ0UG9zIHRvOihOU0ludGVnZXIpZW5kUG9zIGFuY2hvcjooTlNJbnRlZ2VyKWFu
Y2hvclBvcyBoaWdobGlnaHQ6KEJPT0wpbGl0OwotICh2b2lkKWRlc2VsZWN0U2VsZWN0ZWRDZWxs
OwotICh2b2lkKWRlc2VsZWN0QWxsQ2VsbHM7Ci0gKHZvaWQpc2VsZWN0Q2VsbEF0Um93OihOU0lu
dGVnZXIpcm93IGNvbHVtbjooTlNJbnRlZ2VyKWNvbDsKLSAodm9pZClzZWxlY3RBbGw6KGlkKXNl
bmRlcjsKLSAoQk9PTClzZWxlY3RDZWxsV2l0aFRhZzooTlNJbnRlZ2VyKWFuSW50OwotIChOU1Np
emUpY2VsbFNpemU7Ci0gKHZvaWQpc2V0Q2VsbFNpemU6KE5TU2l6ZSlhU2l6ZTsKLSAoTlNTaXpl
KWludGVyY2VsbFNwYWNpbmc7Ci0gKHZvaWQpc2V0SW50ZXJjZWxsU3BhY2luZzooTlNTaXplKWFT
aXplOwotICh2b2lkKXNldFNjcm9sbGFibGU6KEJPT0wpZmxhZzsKLSAodm9pZClzZXRCYWNrZ3Jv
dW5kQ29sb3I6KE5TQ29sb3IgKiljb2xvcjsKLSAoTlNDb2xvciAqKWJhY2tncm91bmRDb2xvcjsK
LSAodm9pZClzZXRDZWxsQmFja2dyb3VuZENvbG9yOihOU0NvbG9yICopY29sb3I7Ci0gKE5TQ29s
b3IgKiljZWxsQmFja2dyb3VuZENvbG9yOwotICh2b2lkKXNldERyYXdzQ2VsbEJhY2tncm91bmQ6
KEJPT0wpZmxhZzsKLSAoQk9PTClkcmF3c0NlbGxCYWNrZ3JvdW5kOwotICh2b2lkKXNldERyYXdz
QmFja2dyb3VuZDooQk9PTClmbGFnOwotIChCT09MKWRyYXdzQmFja2dyb3VuZDsKLSAodm9pZClz
ZXRTdGF0ZTooTlNJbnRlZ2VyKXZhbHVlIGF0Um93OihOU0ludGVnZXIpcm93IGNvbHVtbjooTlNJ
bnRlZ2VyKWNvbDsKLSAodm9pZClnZXROdW1iZXJPZlJvd3M6KE5TSW50ZWdlciAqKXJvd0NvdW50
IGNvbHVtbnM6KE5TSW50ZWdlciAqKWNvbENvdW50OwotIChOU0ludGVnZXIpbnVtYmVyT2ZSb3dz
OwotIChOU0ludGVnZXIpbnVtYmVyT2ZDb2x1bW5zOwotIChpZCljZWxsQXRSb3c6KE5TSW50ZWdl
cilyb3cgY29sdW1uOihOU0ludGVnZXIpY29sOwotIChOU1JlY3QpY2VsbEZyYW1lQXRSb3c6KE5T
SW50ZWdlcilyb3cgY29sdW1uOihOU0ludGVnZXIpY29sOwotIChCT09MKWdldFJvdzooTlNJbnRl
Z2VyICopcm93IGNvbHVtbjooTlNJbnRlZ2VyICopY29sIG9mQ2VsbDooTlNDZWxsICopYUNlbGw7
Ci0gKEJPT0wpZ2V0Um93OihOU0ludGVnZXIgKilyb3cgY29sdW1uOihOU0ludGVnZXIgKiljb2wg
Zm9yUG9pbnQ6KE5TUG9pbnQpYVBvaW50OwotICh2b2lkKXJlbmV3Um93czooTlNJbnRlZ2VyKW5l
d1Jvd3MgY29sdW1uczooTlNJbnRlZ2VyKW5ld0NvbHM7Ci0gKHZvaWQpcHV0Q2VsbDooTlNDZWxs
ICopbmV3Q2VsbCBhdFJvdzooTlNJbnRlZ2VyKXJvdyBjb2x1bW46KE5TSW50ZWdlciljb2w7Ci0g
KHZvaWQpYWRkUm93OwotICh2b2lkKWFkZFJvd1dpdGhDZWxsczooTlNBcnJheSAqKW5ld0NlbGxz
OwotICh2b2lkKWluc2VydFJvdzooTlNJbnRlZ2VyKXJvdzsKLSAodm9pZClpbnNlcnRSb3c6KE5T
SW50ZWdlcilyb3cgd2l0aENlbGxzOihOU0FycmF5ICopbmV3Q2VsbHM7Ci0gKHZvaWQpcmVtb3Zl
Um93OihOU0ludGVnZXIpcm93OwotICh2b2lkKWFkZENvbHVtbjsKLSAodm9pZClhZGRDb2x1bW5X
aXRoQ2VsbHM6KE5TQXJyYXkgKiluZXdDZWxsczsKLSAodm9pZClpbnNlcnRDb2x1bW46KE5TSW50
ZWdlciljb2x1bW47Ci0gKHZvaWQpaW5zZXJ0Q29sdW1uOihOU0ludGVnZXIpY29sdW1uIHdpdGhD
ZWxsczooTlNBcnJheSAqKW5ld0NlbGxzOwotICh2b2lkKXJlbW92ZUNvbHVtbjooTlNJbnRlZ2Vy
KWNvbDsKLSAoaWQpY2VsbFdpdGhUYWc6KE5TSW50ZWdlcilhbkludDsKLSAoU0VMKWRvdWJsZUFj
dGlvbjsKLSAodm9pZClzZXREb3VibGVBY3Rpb246KFNFTClhU2VsZWN0b3I7Ci0gKHZvaWQpc2V0
QXV0b3NpemVzQ2VsbHM6KEJPT0wpZmxhZzsKLSAoQk9PTClhdXRvc2l6ZXNDZWxsczsKLSAodm9p
ZClzaXplVG9DZWxsczsKLSAodm9pZClzZXRWYWxpZGF0ZVNpemU6KEJPT0wpZmxhZzsKLSAodm9p
ZClkcmF3Q2VsbEF0Um93OihOU0ludGVnZXIpcm93IGNvbHVtbjooTlNJbnRlZ2VyKWNvbDsKLSAo
dm9pZCloaWdobGlnaHRDZWxsOihCT09MKWZsYWcgYXRSb3c6KE5TSW50ZWdlcilyb3cgY29sdW1u
OihOU0ludGVnZXIpY29sOwoKLSAodm9pZClzZXRBdXRvc2Nyb2xsOihCT09MKWZsYWc7Ci0gKEJP
T0wpaXNBdXRvc2Nyb2xsOwotICh2b2lkKXNjcm9sbENlbGxUb1Zpc2libGVBdFJvdzooTlNJbnRl
Z2VyKXJvdyBjb2x1bW46KE5TSW50ZWdlciljb2w7Ci0gKE5TSW50ZWdlciltb3VzZURvd25GbGFn
czsKLSAodm9pZCltb3VzZURvd246KE5TRXZlbnQgKil0aGVFdmVudDsKLSAoQk9PTClwZXJmb3Jt
S2V5RXF1aXZhbGVudDooTlNFdmVudCAqKXRoZUV2ZW50OwotIChCT09MKXNlbmRBY3Rpb247Ci0g
KHZvaWQpc2VuZERvdWJsZUFjdGlvbjsKLSAoaWQgPE5TTWF0cml4RGVsZWdhdGU+KWRlbGVnYXRl
OwotICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNNYXRyaXhEZWxlZ2F0ZT4pYW5PYmplY3Q7Ci0g
KEJPT0wpdGV4dFNob3VsZEJlZ2luRWRpdGluZzooTlNUZXh0ICopdGV4dE9iamVjdDsKLSAoQk9P
TCl0ZXh0U2hvdWxkRW5kRWRpdGluZzooTlNUZXh0ICopdGV4dE9iamVjdDsKLSAodm9pZCl0ZXh0
RGlkQmVnaW5FZGl0aW5nOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLSAodm9pZCl0
ZXh0RGlkRW5kRWRpdGluZzooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0gKHZvaWQp
dGV4dERpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0gKHZvaWQpc2Vs
ZWN0VGV4dDooaWQpc2VuZGVyOwotIChpZClzZWxlY3RUZXh0QXRSb3c6KE5TSW50ZWdlcilyb3cg
Y29sdW1uOihOU0ludGVnZXIpY29sOwotIChCT09MKWFjY2VwdHNGaXJzdE1vdXNlOihOU0V2ZW50
ICopdGhlRXZlbnQ7Ci0gKHZvaWQpcmVzZXRDdXJzb3JSZWN0czsKLSAodm9pZClzZXRUb29sVGlw
OihOU1N0cmluZyAqKXRvb2xUaXBTdHJpbmcgZm9yQ2VsbDooTlNDZWxsICopY2VsbDsKLSAoTlNT
dHJpbmcgKil0b29sVGlwRm9yQ2VsbDooTlNDZWxsICopY2VsbDsKQGVuZAoKQGludGVyZmFjZSBO
U01hdHJpeChOU0tleWJvYXJkVUkpCi0gKHZvaWQpc2V0VGFiS2V5VHJhdmVyc2VzQ2VsbHM6KEJP
T0wpZmxhZzsKLSAoQk9PTCl0YWJLZXlUcmF2ZXJzZXNDZWxsczsKLSAodm9pZClzZXRLZXlDZWxs
OihOU0NlbGwgKilrZXlDZWxsOwotIChpZClrZXlDZWxsOwpAZW5kCgpAcHJvdG9jb2wgTlNNYXRy
aXhEZWxlZ2F0ZSA8TlNDb250cm9sVGV4dEVkaXRpbmdEZWxlZ2F0ZT4gQGVuZAojIDkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0Zvcm0uaCIg
MiAzCgpAY2xhc3MgTlNGb3JtQ2VsbDsKCkBpbnRlcmZhY2UgTlNGb3JtIDogTlNNYXRyaXgKCi0g
KE5TSW50ZWdlcilpbmRleE9mU2VsZWN0ZWRJdGVtOwotICh2b2lkKXNldEVudHJ5V2lkdGg6KENH
RmxvYXQpd2lkdGg7Ci0gKHZvaWQpc2V0SW50ZXJsaW5lU3BhY2luZzooQ0dGbG9hdClzcGFjaW5n
OwotICh2b2lkKXNldEJvcmRlcmVkOihCT09MKWZsYWc7Ci0gKHZvaWQpc2V0QmV6ZWxlZDooQk9P
TClmbGFnOwotICh2b2lkKXNldFRpdGxlQWxpZ25tZW50OihOU1RleHRBbGlnbm1lbnQpbW9kZTsK
LSAodm9pZClzZXRUZXh0QWxpZ25tZW50OihOU1RleHRBbGlnbm1lbnQpbW9kZTsKLSAodm9pZClz
ZXRUaXRsZUZvbnQ6KE5TRm9udCAqKWZvbnRPYmo7Ci0gKHZvaWQpc2V0VGV4dEZvbnQ6KE5TRm9u
dCAqKWZvbnRPYmo7Ci0gKGlkKWNlbGxBdEluZGV4OihOU0ludGVnZXIpaW5kZXg7Ci0gKHZvaWQp
ZHJhd0NlbGxBdEluZGV4OihOU0ludGVnZXIpaW5kZXg7Ci0gKE5TRm9ybUNlbGwgKilhZGRFbnRy
eTooTlNTdHJpbmcgKil0aXRsZTsKLSAoTlNGb3JtQ2VsbCAqKWluc2VydEVudHJ5OihOU1N0cmlu
ZyAqKXRpdGxlIGF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKLSAodm9pZClyZW1vdmVFbnRyeUF0
SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKLSAoTlNJbnRlZ2VyKWluZGV4T2ZDZWxsV2l0aFRhZzoo
TlNJbnRlZ2VyKWFUYWc7Ci0gKHZvaWQpc2VsZWN0VGV4dEF0SW5kZXg6KE5TSW50ZWdlcilpbmRl
eDsKLSAodm9pZClzZXRGcmFtZVNpemU6KE5TU2l6ZSluZXdTaXplOwoKLSAodm9pZClzZXRUaXRs
ZUJhc2VXcml0aW5nRGlyZWN0aW9uOihOU1dyaXRpbmdEaXJlY3Rpb24pd3JpdGluZ0RpcmVjdGlv
bjsKLSAodm9pZClzZXRUZXh0QmFzZVdyaXRpbmdEaXJlY3Rpb246KE5TV3JpdGluZ0RpcmVjdGlv
bil3cml0aW5nRGlyZWN0aW9uOwoKQGVuZAojIDMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0Zvcm1DZWxsLmgiIDEg
MwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNGb3JtQ2VsbC5oIiAzCkBpbnRlcmZhY2UgTlNGb3JtQ2VsbCA6IE5TQWN0aW9uQ2VsbAp7
CgogICAgQ0dGbG9hdCBfdGl0bGVXaWR0aDsKICAgIGlkIF90aXRsZUNlbGw7CiAgICBDR0Zsb2F0
IF90aXRsZUVuZFBvaW50Owp9CgotIChpZClpbml0VGV4dENlbGw6KE5TU3RyaW5nICopYVN0cmlu
ZzsKCi0gKENHRmxvYXQpdGl0bGVXaWR0aDooTlNTaXplKWFTaXplOwotIChDR0Zsb2F0KXRpdGxl
V2lkdGg7Ci0gKHZvaWQpc2V0VGl0bGVXaWR0aDooQ0dGbG9hdCl3aWR0aDsKLSAoTlNTdHJpbmcg
Kil0aXRsZTsKLSAodm9pZClzZXRUaXRsZTooTlNTdHJpbmcgKilhU3RyaW5nOwotIChOU0ZvbnQg
Kil0aXRsZUZvbnQ7Ci0gKHZvaWQpc2V0VGl0bGVGb250OihOU0ZvbnQgKilmb250T2JqOwotIChO
U1RleHRBbGlnbm1lbnQpdGl0bGVBbGlnbm1lbnQ7Ci0gKHZvaWQpc2V0VGl0bGVBbGlnbm1lbnQ6
KE5TVGV4dEFsaWdubWVudCltb2RlOwotIChCT09MKWlzT3BhcXVlOwoKCi0gKHZvaWQpc2V0UGxh
Y2Vob2xkZXJTdHJpbmc6KE5TU3RyaW5nKilzdHJpbmc7Ci0gKE5TU3RyaW5nKilwbGFjZWhvbGRl
clN0cmluZzsKLSAodm9pZClzZXRQbGFjZWhvbGRlckF0dHJpYnV0ZWRTdHJpbmc6KE5TQXR0cmli
dXRlZFN0cmluZyopc3RyaW5nOwotIChOU0F0dHJpYnV0ZWRTdHJpbmcqKXBsYWNlaG9sZGVyQXR0
cmlidXRlZFN0cmluZzsKCgoKLSAoTlNXcml0aW5nRGlyZWN0aW9uKXRpdGxlQmFzZVdyaXRpbmdE
aXJlY3Rpb247Ci0gKHZvaWQpc2V0VGl0bGVCYXNlV3JpdGluZ0RpcmVjdGlvbjooTlNXcml0aW5n
RGlyZWN0aW9uKXdyaXRpbmdEaXJlY3Rpb247CgoKQGVuZAoKQGludGVyZmFjZSBOU0Zvcm1DZWxs
KE5TS2V5Ym9hcmRVSSkKLSAodm9pZClzZXRUaXRsZVdpdGhNbmVtb25pYzooTlNTdHJpbmcgKilz
dHJpbmdXaXRoQW1wZXJzYW5kOwpAZW5kCgpAaW50ZXJmYWNlIE5TRm9ybUNlbGwoTlNGb3JtQ2Vs
bEF0dHJpYnV0ZWRTdHJpbmdNZXRob2RzKQotIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1
dGVkVGl0bGU7Ci0gKHZvaWQpc2V0QXR0cmlidXRlZFRpdGxlOihOU0F0dHJpYnV0ZWRTdHJpbmcg
KilvYmo7CkBlbmQKIyAzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TTWVudS5oIiAxIDMKIyAxMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TTWVudS5oIiAzCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05T
TWVudUl0ZW0uaCIgMSAzCiMgMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9OU01lbnVJdGVtLmgiIDMKQGNsYXNzIE5TTWVudTsKQGNsYXNzIE5T
SW1hZ2UsIE5TQXR0cmlidXRlZFN0cmluZywgTlNWaWV3OwoKQGludGVyZmFjZSBOU01lbnVJdGVt
IDogTlNPYmplY3QgPE5TQ29weWluZywgTlNDb2RpbmcsIE5TVmFsaWRhdGVkVXNlckludGVyZmFj
ZUl0ZW0+CnsKCiAgICBAcHJpdmF0ZQogICAgTlNNZW51ICpfbWVudTsKICAgIE5TU3RyaW5nICpf
dGl0bGU7CiAgICBOU1N0cmluZyAqX2tleUVxdWl2YWxlbnQ7CiAgICBOU1VJbnRlZ2VyIF9rZXlF
cXVpdmFsZW50TW9kaWZpZXJNYXNrOwogICAgTlNJbnRlZ2VyIF91c2VyS0VHZW5lcmF0aW9uQ291
bnQ7CiAgICBOU0ludGVnZXIgX3N0YXRlOwogICAgTlNJbWFnZSAqX2ltYWdlOwogICAgTlNNZW51
ICpfc3VibWVudTsKICAgIE5TU3RyaW5nICpfdWlpZDsKICAgIGlkIF9yZXBPYmplY3Q7CiAgICBp
ZCBfdGFyZ2V0OwogICAgU0VMIF9hY3Rpb247CiAgICBOU0ludGVnZXIgX3RhZzsKICAgIGlkIF9l
eHRyYURhdGE7CiAgICBzdHJ1Y3QgX19taUZsYWdzIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZGlz
YWJsZWQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgaXNTZXBhcmF0b3I6MTsKICAgICAgICB1bnNp
Z25lZCBpbnQgaGlkZGVuOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGFsdGVybmF0ZToxOwogICAg
ICAgIHVuc2lnbmVkIGludCBpbmRlbnQ6NDsKICAgICAgICB1bnNpZ25lZCBpbnQga2VTaGFyZU1v
ZGU6MzsKICAgICAgICB1bnNpZ25lZCBpbnQgUkVTRVJWRUQxOjEzOwogICAgICAgIHVuc2lnbmVk
IGludCBoaWdobGlnaHRlZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBsaW1pdGVkVmlldzoxOwog
ICAgICAgIHVuc2lnbmVkIGludCBuZXh0SXRlbUlzQWx0ZXJuYXRlOjE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGJsb2NrS0U6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgaWdub3JlZEZvckFjY2Vzc2li
aWxpdHk6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgaGlkZGVuQWN0aXZlS0U6MTsKICAgICAgICB1
bnNpZ25lZCBpbnQgbm9SZXBlYXRLRXM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgUkVTRVJWRUQ6
MTsKICAgIH0gX21pRmxhZ3M7Cn0KCisgKHZvaWQpc2V0VXNlc1VzZXJLZXlFcXVpdmFsZW50czoo
Qk9PTClmbGFnOworIChCT09MKXVzZXNVc2VyS2V5RXF1aXZhbGVudHM7CgorIChOU01lbnVJdGVt
ICopc2VwYXJhdG9ySXRlbTsKCi0gKGlkKWluaXRXaXRoVGl0bGU6KE5TU3RyaW5nICopYVN0cmlu
ZyBhY3Rpb246KFNFTClhU2VsZWN0b3Iga2V5RXF1aXZhbGVudDooTlNTdHJpbmcgKiljaGFyQ29k
ZTsKCi0gKHZvaWQpc2V0TWVudTooTlNNZW51ICopbWVudTsKLSAoTlNNZW51ICopbWVudTsKCgoK
LSAoQk9PTCloYXNTdWJtZW51OwotICh2b2lkKXNldFN1Ym1lbnU6KE5TTWVudSAqKXN1Ym1lbnU7
Ci0gKE5TTWVudSAqKXN1Ym1lbnU7CgoKCi0gKE5TTWVudUl0ZW0gKilwYXJlbnRJdGVtIDsKCi0g
KHZvaWQpc2V0VGl0bGU6KE5TU3RyaW5nICopYVN0cmluZzsKLSAoTlNTdHJpbmcgKil0aXRsZTsK
Ci0gKHZvaWQpc2V0QXR0cmlidXRlZFRpdGxlOihOU0F0dHJpYnV0ZWRTdHJpbmcqKXN0cmluZzsK
LSAoTlNBdHRyaWJ1dGVkU3RyaW5nKilhdHRyaWJ1dGVkVGl0bGU7CgoKLSAoQk9PTClpc1NlcGFy
YXRvckl0ZW07CgotICh2b2lkKXNldEtleUVxdWl2YWxlbnQ6KE5TU3RyaW5nICopYUtleUVxdWl2
YWxlbnQ7Ci0gKE5TU3RyaW5nICopa2V5RXF1aXZhbGVudDsKLSAodm9pZClzZXRLZXlFcXVpdmFs
ZW50TW9kaWZpZXJNYXNrOihOU1VJbnRlZ2VyKW1hc2s7Ci0gKE5TVUludGVnZXIpa2V5RXF1aXZh
bGVudE1vZGlmaWVyTWFzazsKCi0gKE5TU3RyaW5nICopdXNlcktleUVxdWl2YWxlbnQ7CgotICh2
b2lkKXNldFRpdGxlV2l0aE1uZW1vbmljOihOU1N0cmluZyAqKXN0cmluZ1dpdGhBbXBlcnNhbmQ7
CgotICh2b2lkKXNldEltYWdlOihOU0ltYWdlICopbWVudUltYWdlOwotIChOU0ltYWdlICopaW1h
Z2U7CgotICh2b2lkKXNldFN0YXRlOihOU0ludGVnZXIpc3RhdGU7Ci0gKE5TSW50ZWdlcilzdGF0
ZTsKLSAodm9pZClzZXRPblN0YXRlSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZTsKLSAoTlNJbWFnZSAq
KW9uU3RhdGVJbWFnZTsKLSAodm9pZClzZXRPZmZTdGF0ZUltYWdlOihOU0ltYWdlICopaW1hZ2U7
Ci0gKE5TSW1hZ2UgKilvZmZTdGF0ZUltYWdlOwotICh2b2lkKXNldE1peGVkU3RhdGVJbWFnZToo
TlNJbWFnZSAqKWltYWdlOwotIChOU0ltYWdlICopbWl4ZWRTdGF0ZUltYWdlOwoKLSAodm9pZClz
ZXRFbmFibGVkOihCT09MKWZsYWc7Ci0gKEJPT0wpaXNFbmFibGVkOwoKCgotICh2b2lkKXNldEFs
dGVybmF0ZTooQk9PTClpc0FsdGVybmF0ZTsKLSAoQk9PTClpc0FsdGVybmF0ZTsKCi0gKHZvaWQp
c2V0SW5kZW50YXRpb25MZXZlbDooTlNJbnRlZ2VyKWluZGVudGF0aW9uTGV2ZWw7Ci0gKE5TSW50
ZWdlcilpbmRlbnRhdGlvbkxldmVsOwoKCi0gKHZvaWQpc2V0VGFyZ2V0OihpZClhbk9iamVjdDsK
LSAoaWQpdGFyZ2V0OwotICh2b2lkKXNldEFjdGlvbjooU0VMKWFTZWxlY3RvcjsKLSAoU0VMKWFj
dGlvbjsKCi0gKHZvaWQpc2V0VGFnOihOU0ludGVnZXIpYW5JbnQ7Ci0gKE5TSW50ZWdlcil0YWc7
CgotICh2b2lkKXNldFJlcHJlc2VudGVkT2JqZWN0OihpZClhbk9iamVjdDsKLSAoaWQpcmVwcmVz
ZW50ZWRPYmplY3Q7CiMgMTM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvTlNNZW51SXRlbS5oIiAzCi0gKHZvaWQpc2V0VmlldzooTlNWaWV3ICop
dmlldzsKLSAoTlNWaWV3ICopdmlldzsKCgotIChCT09MKWlzSGlnaGxpZ2h0ZWQ7CgoKLSAodm9p
ZClzZXRIaWRkZW46KEJPT0wpaGlkZGVuOwotIChCT09MKWlzSGlkZGVuOwotIChCT09MKWlzSGlk
ZGVuT3JIYXNIaWRkZW5BbmNlc3RvcjsKCgoKCi0gKHZvaWQpIHNldFRvb2xUaXA6KE5TU3RyaW5n
Kil0b29sVGlwOwotIChOU1N0cmluZyopdG9vbFRpcDsKCgpAZW5kCgoKQGludGVyZmFjZSBOU1Zp
ZXcgKE5TVmlld0VuY2xvc2luZ01lbnVJdGVtKQoKLSAoTlNNZW51SXRlbSAqKWVuY2xvc2luZ01l
bnVJdGVtOwpAZW5kCgoKCgpfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSkKCkBwcm90b2NvbCBO
U01lbnVJdGVtOwoKCkBpbnRlcmZhY2UgTlNNZW51SXRlbSAoTlNEZXByZWNhdGVkKQoKLSAodm9p
ZClzZXRNbmVtb25pY0xvY2F0aW9uOihOU1VJbnRlZ2VyKWxvY2F0aW9uIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKLSAoTlNVSW50ZWdlciltbmVtb25pY0xvY2F0aW9uIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKLSAoTlNTdHJpbmcgKiltbmVtb25pYyBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7CgpAZW5kCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9OU01lbnUuaCIgMiAzCgpAY2xhc3MgTlNFdmVudCwgTlNWaWV3
LCBOU0ZvbnQ7CkBjbGFzcyBOU01lbnU7CkBjbGFzcyBOU011dGFibGVBcnJheSwgTlNBcnJheTsK
QHByb3RvY29sIE5TTWVudURlbGVnYXRlOwoKQGludGVyZmFjZSBOU01lbnUgOiBOU09iamVjdCA8
TlNDb3B5aW5nLCBOU0NvZGluZz4KewoKICAgIEBwcml2YXRlCiAgICBOU01lbnUgKl9zdXBlcm1l
bnU7CiAgICBOU1N0cmluZyAqX3RpdGxlOwogICAgaWQgX2l0ZW1BcnJheTsKICAgIGlkIF9leHRy
YTsKICAgIHN0cnVjdCBfX21GbGFncyB7CiAgICAgICAgdW5zaWduZWQgaW50IG5vQXV0b2VuYWJs
ZToxOwogICAgICAgIHVuc2lnbmVkIGludCBpbk1haW46MTsKICAgICAgICB1bnNpZ25lZCBpbnQg
aW50ZXJuYWxQZXJmb3JtQWN0aW9uOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGNvbmRlbnNlU2Vw
YXJhdG9yczoxOwogICAgICAgIHVuc2lnbmVkIGludCBkaXNhYmxlZDoxOwogICAgICAgIHVuc2ln
bmVkIGludCBvd25lZEJ5UG9wVXA6MTsKIHVuc2lnbmVkIGludCBkZWxlZ2F0ZU5lZWRzVXBkYXRl
OjE7CiB1bnNpZ25lZCBpbnQgZGVsZWdhdGVVcGRhdGVJdGVtOjE7CiB1bnNpZ25lZCBpbnQgZGVs
ZWdhdGVIYXNLZXlFcXVpdjoxOwogdW5zaWduZWQgaW50IGRlbGVnYXRlSGFzQWx0S2V5RXF1aXY6
MTsKIHVuc2lnbmVkIGludCBleGNsdWRlTWFya0NvbHVtbjoxOwogdW5zaWduZWQgaW50IGlzQ29u
dGV4dHVhbE1lbnU6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgY21QbHVnaW5Nb2RlOjI7CiAgICAg
ICAgdW5zaWduZWQgaW50IGludmVydGVkQ01QbHVnaW5UeXBlczoyOwogICAgICAgIHVuc2lnbmVk
IGludCBhbGxvd3NEaWZmZXJlbnRTZWxlY3Rpb246MTsKICAgICAgICB1bnNpZ25lZCBpbnQgUkVT
RVJWRUQ6MTU7CiAgICB9IF9tRmxhZ3M7CiAgICBOU1N0cmluZyAqX25hbWU7Cn0KCgoKLSAoaWQp
aW5pdFdpdGhUaXRsZTooTlNTdHJpbmcgKilhVGl0bGU7CgoKLSAodm9pZClzZXRUaXRsZTooTlNT
dHJpbmcgKilhU3RyaW5nOwotIChOU1N0cmluZyAqKXRpdGxlOwoKCgoKCgorICh2b2lkKXBvcFVw
Q29udGV4dE1lbnU6KE5TTWVudSopbWVudSB3aXRoRXZlbnQ6KE5TRXZlbnQqKWV2ZW50IGZvclZp
ZXc6KE5TVmlldyopdmlldzsKKyAodm9pZClwb3BVcENvbnRleHRNZW51OihOU01lbnUqKW1lbnUg
d2l0aEV2ZW50OihOU0V2ZW50KilldmVudCBmb3JWaWV3OihOU1ZpZXcqKXZpZXcgd2l0aEZvbnQ6
KE5TRm9udCopZm9udCA7CgoKCi0gKEJPT0wpcG9wVXBNZW51UG9zaXRpb25pbmdJdGVtOihOU01l
bnVJdGVtICopaXRlbSBhdExvY2F0aW9uOihOU1BvaW50KWxvY2F0aW9uIGluVmlldzooTlNWaWV3
ICopdmlldyA7CgoKKyAodm9pZClzZXRNZW51QmFyVmlzaWJsZTooQk9PTCl2aXNpYmxlIDsKKyAo
Qk9PTCltZW51QmFyVmlzaWJsZSA7CgoKLSAoTlNNZW51ICopc3VwZXJtZW51OwoKCiAtICh2b2lk
KXNldFN1cGVybWVudTooTlNNZW51ICopc3VwZXJtZW51OwoKCi0gKHZvaWQpaW5zZXJ0SXRlbToo
TlNNZW51SXRlbSAqKW5ld0l0ZW0gYXRJbmRleDooTlNJbnRlZ2VyKWluZGV4OwoKCi0gKHZvaWQp
YWRkSXRlbTooTlNNZW51SXRlbSAqKW5ld0l0ZW07CgoKCi0gKE5TTWVudUl0ZW0gKilpbnNlcnRJ
dGVtV2l0aFRpdGxlOihOU1N0cmluZyAqKWFTdHJpbmcgYWN0aW9uOihTRUwpYVNlbGVjdG9yIGtl
eUVxdWl2YWxlbnQ6KE5TU3RyaW5nICopY2hhckNvZGUgYXRJbmRleDooTlNJbnRlZ2VyKWluZGV4
OwoKCi0gKE5TTWVudUl0ZW0gKilhZGRJdGVtV2l0aFRpdGxlOihOU1N0cmluZyAqKWFTdHJpbmcg
YWN0aW9uOihTRUwpYVNlbGVjdG9yIGtleUVxdWl2YWxlbnQ6KE5TU3RyaW5nICopY2hhckNvZGU7
CgoKLSAodm9pZClyZW1vdmVJdGVtQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4OwoKCi0gKHZvaWQp
cmVtb3ZlSXRlbTooTlNNZW51SXRlbSAqKWl0ZW07CgoKLSAodm9pZClzZXRTdWJtZW51OihOU01l
bnUgKilhTWVudSBmb3JJdGVtOihOU01lbnVJdGVtICopYW5JdGVtOwoKCgotICh2b2lkKXJlbW92
ZUFsbEl0ZW1zIDsKCgotIChOU0FycmF5ICopaXRlbUFycmF5OwoKCi0gKE5TSW50ZWdlciludW1i
ZXJPZkl0ZW1zOwoKCiAtIChOU01lbnVJdGVtICopaXRlbUF0SW5kZXg6KE5TSW50ZWdlcilpbmRl
eDsKCgotIChOU0ludGVnZXIpaW5kZXhPZkl0ZW06KE5TTWVudUl0ZW0gKilpbmRleDsKCgotIChO
U0ludGVnZXIpaW5kZXhPZkl0ZW1XaXRoVGl0bGU6KE5TU3RyaW5nICopYVRpdGxlOwotIChOU0lu
dGVnZXIpaW5kZXhPZkl0ZW1XaXRoVGFnOihOU0ludGVnZXIpYVRhZzsKLSAoTlNJbnRlZ2VyKWlu
ZGV4T2ZJdGVtV2l0aFJlcHJlc2VudGVkT2JqZWN0OihpZClvYmplY3Q7Ci0gKE5TSW50ZWdlcilp
bmRleE9mSXRlbVdpdGhTdWJtZW51OihOU01lbnUgKilzdWJtZW51OwotIChOU0ludGVnZXIpaW5k
ZXhPZkl0ZW1XaXRoVGFyZ2V0OihpZCl0YXJnZXQgYW5kQWN0aW9uOihTRUwpYWN0aW9uU2VsZWN0
b3I7CgoKLSAoTlNNZW51SXRlbSAqKWl0ZW1XaXRoVGl0bGU6KE5TU3RyaW5nICopYVRpdGxlOwot
IChOU01lbnVJdGVtICopaXRlbVdpdGhUYWc6KE5TSW50ZWdlcil0YWc7CgoKLSAodm9pZClzZXRB
dXRvZW5hYmxlc0l0ZW1zOihCT09MKWZsYWc7Ci0gKEJPT0wpYXV0b2VuYWJsZXNJdGVtczsKCgot
ICh2b2lkKXVwZGF0ZTsKCgoKLSAoQk9PTClwZXJmb3JtS2V5RXF1aXZhbGVudDooTlNFdmVudCAq
KXRoZUV2ZW50OwoKCgotICh2b2lkKWl0ZW1DaGFuZ2VkOihOU01lbnVJdGVtICopaXRlbTsKCgoK
LSAodm9pZClwZXJmb3JtQWN0aW9uRm9ySXRlbUF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKCgot
ICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNNZW51RGVsZWdhdGU+KWFuT2JqZWN0IDsKLSAoaWQg
PE5TTWVudURlbGVnYXRlPilkZWxlZ2F0ZSA7CgoKCi0gKENHRmxvYXQpbWVudUJhckhlaWdodCA7
CgoKLSAodm9pZCljYW5jZWxUcmFja2luZyA7CgoKLSAodm9pZCljYW5jZWxUcmFja2luZ1dpdGhv
dXRBbmltYXRpb24gOwoKCi0gKE5TTWVudUl0ZW0gKiloaWdobGlnaHRlZEl0ZW0gOwoKCgotIChD
R0Zsb2F0KW1pbmltdW1XaWR0aCA7Ci0gKHZvaWQpc2V0TWluaW11bVdpZHRoOihDR0Zsb2F0KXdp
ZHRoIDsKCgoKLSAoTlNTaXplKXNpemUgOwoKCgotIChOU0ZvbnQgKilmb250IDsKLSAodm9pZClz
ZXRGb250OihOU0ZvbnQgKilmb250IDsKCgoKLSAoQk9PTClhbGxvd3NDb250ZXh0TWVudVBsdWdJ
bnMgOwotICh2b2lkKXNldEFsbG93c0NvbnRleHRNZW51UGx1Z0luczooQk9PTClhbGxvd3MgOwoK
Ci0gKHZvaWQpc2V0U2hvd3NTdGF0ZUNvbHVtbjooQk9PTClzaG93c1N0YXRlIDsKLSAoQk9PTClz
aG93c1N0YXRlQ29sdW1uIDsKCgorIChOU1pvbmUgKiltZW51Wm9uZTsKCgotICh2b2lkKXNldE1l
bnVDaGFuZ2VkTWVzc2FnZXNFbmFibGVkOihCT09MKWZsYWc7Ci0gKEJPT0wpbWVudUNoYW5nZWRN
ZXNzYWdlc0VuYWJsZWQ7Ci0gKHZvaWQpaGVscFJlcXVlc3RlZDooTlNFdmVudCAqKWV2ZW50UHRy
OwotIChCT09MKWlzVG9ybk9mZjsKCkBlbmQKCkBpbnRlcmZhY2UgTlNNZW51IChOU1N1Ym1lbnVB
Y3Rpb24pCi0gKHZvaWQpc3VibWVudUFjdGlvbjooaWQpc2VuZGVyOwpAZW5kCgpAaW50ZXJmYWNl
IE5TT2JqZWN0IChOU01lbnVWYWxpZGF0aW9uKQotIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5T
TWVudUl0ZW0gKiltZW51SXRlbTsKQGVuZAoKCkBwcm90b2NvbCBOU01lbnVEZWxlZ2F0ZSA8TlNP
YmplY3Q+CkBvcHRpb25hbAotICh2b2lkKW1lbnVOZWVkc1VwZGF0ZTooTlNNZW51KiltZW51OwoK
LSAoTlNJbnRlZ2VyKW51bWJlck9mSXRlbXNJbk1lbnU6KE5TTWVudSopbWVudTsKLSAoQk9PTClt
ZW51OihOU01lbnUqKW1lbnUgdXBkYXRlSXRlbTooTlNNZW51SXRlbSopaXRlbSBhdEluZGV4OihO
U0ludGVnZXIpaW5kZXggc2hvdWxkQ2FuY2VsOihCT09MKXNob3VsZENhbmNlbDsKCi0gKEJPT0wp
bWVudUhhc0tleUVxdWl2YWxlbnQ6KE5TTWVudSopbWVudSBmb3JFdmVudDooTlNFdmVudCopZXZl
bnQgdGFyZ2V0OihpZCopdGFyZ2V0IGFjdGlvbjooU0VMKilhY3Rpb247CgoKCgotICh2b2lkKW1l
bnVXaWxsT3BlbjooTlNNZW51ICopbWVudTsKLSAodm9pZCltZW51RGlkQ2xvc2U6KE5TTWVudSAq
KW1lbnU7CgoKLSAodm9pZCltZW51OihOU01lbnUgKiltZW51IHdpbGxIaWdobGlnaHRJdGVtOihO
U01lbnVJdGVtICopaXRlbTsKCgoKCgoKLSAoTlNSZWN0KWNvbmZpbmVtZW50UmVjdEZvck1lbnU6
KE5TTWVudSAqKW1lbnUgb25TY3JlZW46KE5TU2NyZWVuICopc2NyZWVuOwoKCkBlbmQKCgoKCmVu
dW0gewogICAgTlNNZW51UHJvcGVydHlJdGVtVGl0bGUgPSAxIDw8IDAsCiAgICBOU01lbnVQcm9w
ZXJ0eUl0ZW1BdHRyaWJ1dGVkVGl0bGUgPSAxIDw8IDEsCiAgICBOU01lbnVQcm9wZXJ0eUl0ZW1L
ZXlFcXVpdmFsZW50ID0gMSA8PCAyLAogICAgTlNNZW51UHJvcGVydHlJdGVtSW1hZ2UgPSAxIDw8
IDMsCiAgICBOU01lbnVQcm9wZXJ0eUl0ZW1FbmFibGVkID0gMSA8PCA0LAogICAgTlNNZW51UHJv
cGVydHlJdGVtQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uID0gMSA8PCA1Cn07CnR5cGVkZWYgTlNV
SW50ZWdlciBOU01lbnVQcm9wZXJ0aWVzOwoKCgoKCkBpbnRlcmZhY2UgTlNNZW51IChOU01lbnVQ
cm9wZXJ0aWVzVG9VcGRhdGUpCi0gKE5TTWVudVByb3BlcnRpZXMpcHJvcGVydGllc1RvVXBkYXRl
IDsKQGVuZAoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNNZW51V2lsbFNlbmRBY3Rpb25Ob3RpZmlj
YXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TTWVudURpZFNlbmRBY3Rpb25Ob3RpZmljYXRp
b247CgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU01lbnVEaWRBZGRJdGVtTm90aWZpY2F0aW9uOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpOU01lbnVEaWRSZW1vdmVJdGVtTm90aWZpY2F0aW9uOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU01lbnVEaWRDaGFuZ2VJdGVtTm90aWZpY2F0aW9uOwoKCmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TTWVudURpZEJlZ2luVHJhY2tpbmdOb3RpZmljYXRpb24gOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU01lbnVEaWRFbmRUcmFja2luZ05vdGlmaWNhdGlvbiA7CgoKQGlu
dGVyZmFjZSBOU01lbnUgKE5TRGVwcmVjYXRlZCkKCi0gKHZvaWQpc2V0TWVudVJlcHJlc2VudGF0
aW9uOihpZCltZW51UmVwIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoaWQpbWVudVJl
cHJlc2VudGF0aW9uIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCi0gKHZvaWQpc2V0Q29u
dGV4dE1lbnVSZXByZXNlbnRhdGlvbjooaWQpbWVudVJlcCBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7Ci0gKGlkKWNvbnRleHRNZW51UmVwcmVzZW50YXRpb24gX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwoKLSAodm9pZClzZXRUZWFyT2ZmTWVudVJlcHJlc2VudGF0aW9uOihpZCltZW51
UmVwIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoaWQpdGVhck9mZk1lbnVSZXByZXNl
bnRhdGlvbiBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgorICh2b2lkKXNldE1lbnVab25l
OihOU1pvbmUgKilhWm9uZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgotIChOU01lbnUg
KilhdHRhY2hlZE1lbnUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChCT09MKWlzQXR0
YWNoZWQgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotICh2b2lkKXNpemVUb0ZpdCBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKE5TUG9pbnQpbG9jYXRpb25Gb3JTdWJtZW51OihO
U01lbnUgKilhU3VibWVudSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgpAZW5kCiMgMzUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBL
aXQuaCIgMiAzCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9OU0NvbG9yLmgiIDEgMwojIDMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNDb2xvci5oIiAzCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUGFzdGVib2FyZC5oIiAx
IDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFk
ZXJzL05TUGFzdGVib2FyZC5oIiAzCkBjbGFzcyBOU0FycmF5LCBOU0RhdGEsIE5TRmlsZVdyYXBw
ZXIsIE5TTXV0YWJsZURpY3Rpb25hcnk7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5T
UGFzdGVib2FyZFR5cGVTdHJpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1Bhc3Rl
Ym9hcmRUeXBlUERGIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQYXN0ZWJvYXJkVHlw
ZVRJRkYgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1Bhc3RlYm9hcmRUeXBlUE5HIDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQYXN0ZWJvYXJkVHlwZVJURiA7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKmNvbnN0IE5TUGFzdGVib2FyZFR5cGVSVEZEIDsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqY29uc3QgTlNQYXN0ZWJvYXJkVHlwZUhUTUwgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpj
b25zdCBOU1Bhc3RlYm9hcmRUeXBlVGFidWxhclRleHQgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpj
b25zdCBOU1Bhc3RlYm9hcmRUeXBlRm9udCA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5T
UGFzdGVib2FyZFR5cGVSdWxlciA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUGFzdGVi
b2FyZFR5cGVDb2xvciA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUGFzdGVib2FyZFR5
cGVTb3VuZCA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUGFzdGVib2FyZFR5cGVNdWx0
aXBsZVRleHRTZWxlY3Rpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1Bhc3RlYm9h
cmRUeXBlRmluZFBhbmVsU2VhcmNoT3B0aW9ucyA7CgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpO
U0dlbmVyYWxQYm9hcmQ7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRm9udFBib2FyZDsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqTlNSdWxlclBib2FyZDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGaW5k
UGJvYXJkOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0RyYWdQYm9hcmQ7CgoKCgoKCgpAY2xhc3Mg
TlNQYXN0ZWJvYXJkSXRlbTsKCkBpbnRlcmZhY2UgTlNQYXN0ZWJvYXJkIDogTlNPYmplY3QKewog
ICAgQHByaXZhdGUKICAgIGlkIF9wYm9hcmQ7CiAgICBpbnQgX2dlbjsKICAgIGlkIF9vd25lcnM7
CiAgICBDRkluZGV4IF9jYWNoZWRUeXBlTmFtZUNoYW5nZUNvdW50OwogICAgaWQgX2NhY2hlZFR5
cGVOYW1lczsKICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9wcm9taXNlVHlwZU5hbWVzQnlJZGVu
dGlmaWVyOwogICAgaWQgX3N1cHBvcnQ7CiAgICBpZCBfcGFzdGVib2FyZEl0ZW1zOwogICAgdm9p
ZCAqIF9yZXNlcnZlZFszXTsKfQoKKyAoTlNQYXN0ZWJvYXJkICopZ2VuZXJhbFBhc3RlYm9hcmQ7
CisgKE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lOwor
IChOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkV2l0aFVuaXF1ZU5hbWU7CgotIChOU1N0cmluZyAq
KW5hbWU7CgotIChOU0ludGVnZXIpY2hhbmdlQ291bnQ7CgotICh2b2lkKXJlbGVhc2VHbG9iYWxs
eTsKCgoKCi0gKE5TSW50ZWdlciljbGVhckNvbnRlbnRzIDsKCgoKCi0gKEJPT0wpd3JpdGVPYmpl
Y3RzOihOU0FycmF5ICopb2JqZWN0cyA7CgoKCgoKCi0gKE5TQXJyYXkgKilyZWFkT2JqZWN0c0Zv
ckNsYXNzZXM6KE5TQXJyYXkgKiljbGFzc0FycmF5IG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKW9w
dGlvbnMgOwoKCgoKLSAoTlNBcnJheSAqKXBhc3RlYm9hcmRJdGVtcyA7CgoKCgotIChOU1VJbnRl
Z2VyKWluZGV4T2ZQYXN0ZWJvYXJkSXRlbTooTlNQYXN0ZWJvYXJkSXRlbSAqKXBhc3RlYm9hcmRJ
dGVtIDsKCgoKCi0gKEJPT0wpY2FuUmVhZEl0ZW1XaXRoRGF0YUNvbmZvcm1pbmdUb1R5cGVzOihO
U0FycmF5ICopdHlwZXMgOwoKCgoKLSAoQk9PTCljYW5SZWFkT2JqZWN0Rm9yQ2xhc3NlczooTlNB
cnJheSAqKWNsYXNzQXJyYXkgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9ucyA7CgoKCgoK
CgotIChOU0ludGVnZXIpZGVjbGFyZVR5cGVzOihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlk
KW5ld093bmVyOwoKCgotIChOU0ludGVnZXIpYWRkVHlwZXM6KE5TQXJyYXkgKiluZXdUeXBlcyBv
d25lcjooaWQpbmV3T3duZXI7CgoKCi0gKE5TQXJyYXkgKil0eXBlczsKLSAoTlNTdHJpbmcgKilh
dmFpbGFibGVUeXBlRnJvbUFycmF5OihOU0FycmF5ICopdHlwZXM7CgoKCi0gKEJPT0wpc2V0RGF0
YTooTlNEYXRhICopZGF0YSBmb3JUeXBlOihOU1N0cmluZyAqKWRhdGFUeXBlOwotIChCT09MKXNl
dFByb3BlcnR5TGlzdDooaWQpcGxpc3QgZm9yVHlwZTooTlNTdHJpbmcgKilkYXRhVHlwZTsKLSAo
Qk9PTClzZXRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZvclR5cGU6KE5TU3RyaW5nICopZGF0
YVR5cGU7CgoKCi0gKE5TRGF0YSAqKWRhdGFGb3JUeXBlOihOU1N0cmluZyAqKWRhdGFUeXBlOwot
IChpZClwcm9wZXJ0eUxpc3RGb3JUeXBlOihOU1N0cmluZyAqKWRhdGFUeXBlOwotIChOU1N0cmlu
ZyAqKXN0cmluZ0ZvclR5cGU6KE5TU3RyaW5nICopZGF0YVR5cGU7CgoKQGVuZAoKCkBpbnRlcmZh
Y2UgTlNQYXN0ZWJvYXJkKEZpbHRlclNlcnZpY2VzKQorIChOU0FycmF5ICopdHlwZXNGaWx0ZXJh
YmxlVG86KE5TU3RyaW5nICopdHlwZTsKCisgKE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmRCeUZp
bHRlcmluZ0ZpbGU6KE5TU3RyaW5nICopZmlsZW5hbWU7CisgKE5TUGFzdGVib2FyZCAqKXBhc3Rl
Ym9hcmRCeUZpbHRlcmluZ0RhdGE6KE5TRGF0YSAqKWRhdGEgb2ZUeXBlOihOU1N0cmluZyAqKXR5
cGU7CisgKE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmRCeUZpbHRlcmluZ1R5cGVzSW5QYXN0ZWJv
YXJkOihOU1Bhc3RlYm9hcmQgKilwYm9hcmQ7CkBlbmQKCgpAaW50ZXJmYWNlIE5TT2JqZWN0KE5T
UGFzdGVib2FyZE93bmVyKQotICh2b2lkKXBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXNlbmRl
ciBwcm92aWRlRGF0YUZvclR5cGU6KE5TU3RyaW5nICopdHlwZTsKLSAodm9pZClwYXN0ZWJvYXJk
Q2hhbmdlZE93bmVyOihOU1Bhc3RlYm9hcmQgKilzZW5kZXI7CkBlbmQKIyAxNjUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1Bhc3RlYm9hcmQu
aCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1Bhc3RlYm9hcmRVUkxSZWFkaW5nRmls
ZVVSTHNPbmx5S2V5IDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQYXN0ZWJvYXJk
VVJMUmVhZGluZ0NvbnRlbnRzQ29uZm9ybVRvVHlwZXNLZXkgOwojIDE4MSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUGFzdGVib2FyZC5oIiAz
CmVudW0gewogICAgTlNQYXN0ZWJvYXJkV3JpdGluZ1Byb21pc2VkID0gMSA8PCA5LAp9Owp0eXBl
ZGVmIE5TVUludGVnZXIgTlNQYXN0ZWJvYXJkV3JpdGluZ09wdGlvbnM7CgoKQHByb3RvY29sIE5T
UGFzdGVib2FyZFdyaXRpbmcgPE5TT2JqZWN0PgoKQHJlcXVpcmVkCgoKLSAoTlNBcnJheSAqKXdy
aXRhYmxlVHlwZXNGb3JQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkOwoKCkBv
cHRpb25hbAoKCi0gKE5TUGFzdGVib2FyZFdyaXRpbmdPcHRpb25zKXdyaXRpbmdPcHRpb25zRm9y
VHlwZTooTlNTdHJpbmcgKil0eXBlIHBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9h
cmQ7CgoKQHJlcXVpcmVkCgoKLSAoaWQpcGFzdGVib2FyZFByb3BlcnR5TGlzdEZvclR5cGU6KE5T
U3RyaW5nICopdHlwZTsKCkBlbmQKIyAyMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1Bhc3RlYm9hcmQuaCIgMwplbnVtIHsKICAgIE5TUGFz
dGVib2FyZFJlYWRpbmdBc0RhdGEgPSAwLAogICAgTlNQYXN0ZWJvYXJkUmVhZGluZ0FzU3RyaW5n
ID0gMSA8PCAwLAogICAgTlNQYXN0ZWJvYXJkUmVhZGluZ0FzUHJvcGVydHlMaXN0ID0gMSA8PCAx
LAogICAgTlNQYXN0ZWJvYXJkUmVhZGluZ0FzS2V5ZWRBcmNoaXZlID0gMSA8PCAyLAp9Owp0eXBl
ZGVmIE5TVUludGVnZXIgTlNQYXN0ZWJvYXJkUmVhZGluZ09wdGlvbnM7CgoKQHByb3RvY29sIE5T
UGFzdGVib2FyZFJlYWRpbmcgPE5TT2JqZWN0PgoKCgpAcmVxdWlyZWQKKyAoTlNBcnJheSAqKXJl
YWRhYmxlVHlwZXNGb3JQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkOwoKCkBv
cHRpb25hbAoKCisgKE5TUGFzdGVib2FyZFJlYWRpbmdPcHRpb25zKXJlYWRpbmdPcHRpb25zRm9y
VHlwZTooTlNTdHJpbmcgKil0eXBlIHBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9h
cmQ7CgoKCgpAb3B0aW9uYWwKLSAoaWQpaW5pdFdpdGhQYXN0ZWJvYXJkUHJvcGVydHlMaXN0Oihp
ZClwcm9wZXJ0eUxpc3Qgb2ZUeXBlOihOU1N0cmluZyAqKXR5cGU7CgpAZW5kCiMgMjc1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNQYXN0ZWJv
YXJkLmgiIDMKQGludGVyZmFjZSBOU1VSTChOU1Bhc3RlYm9hcmRTdXBwb3J0KQoKPE5TUGFzdGVi
b2FyZFdyaXRpbmcsIE5TUGFzdGVib2FyZFJlYWRpbmc+CgorIChOU1VSTCAqKVVSTEZyb21QYXN0
ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZUJvYXJkOwotICh2b2lkKXdyaXRlVG9QYXN0ZWJv
YXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZUJvYXJkOwpAZW5kCgoKCgoKQGludGVyZmFjZSBOU1N0
cmluZyhOU1Bhc3RlYm9hcmRTdXBwb3J0KSA8TlNQYXN0ZWJvYXJkV3JpdGluZywgTlNQYXN0ZWJv
YXJkUmVhZGluZz4KQGVuZAoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1N0cmluZ1Bib2Fy
ZFR5cGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRmlsZW5hbWVzUGJvYXJkVHlwZTsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqTlNUSUZGUGJvYXJkVHlwZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNS
VEZQYm9hcmRUeXBlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1RhYnVsYXJUZXh0UGJvYXJkVHlw
ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGb250UGJvYXJkVHlwZTsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqTlNSdWxlclBib2FyZFR5cGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQ29sb3JQYm9h
cmRUeXBlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1JURkRQYm9hcmRUeXBlOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpOU0hUTUxQYm9hcmRUeXBlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1VSTFBi
b2FyZFR5cGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TUERGUGJvYXJkVHlwZTsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNNdWx0aXBsZVRleHRTZWxlY3Rpb25QYm9hcmRUeXBlIDsKCmV4dGVybiAi
QyIgTlNTdHJpbmcgKk5TUG9zdFNjcmlwdFBib2FyZFR5cGU7CmV4dGVybiAiQyIgTlNTdHJpbmcg
Kk5TVkNhcmRQYm9hcmRUeXBlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNJbmtUZXh0UGJvYXJk
VHlwZSA7CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGaWxlc1Byb21pc2VQYm9hcmRUeXBlIDsK
CgoKCgoKQGludGVyZmFjZSBOU1Bhc3RlYm9hcmQoTlNGaWxlQ29udGVudHMpCi0gKEJPT0wpd3Jp
dGVGaWxlQ29udGVudHM6KE5TU3RyaW5nICopZmlsZW5hbWU7Ci0gKE5TU3RyaW5nICopcmVhZEZp
bGVDb250ZW50c1R5cGU6KE5TU3RyaW5nICopdHlwZSB0b0ZpbGU6KE5TU3RyaW5nICopZmlsZW5h
bWU7CgotIChCT09MKXdyaXRlRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKil3cmFwcGVyOwot
IChOU0ZpbGVXcmFwcGVyICopcmVhZEZpbGVXcmFwcGVyOwoKQGVuZAoKZXh0ZXJuICJDIiBOU1N0
cmluZyAqTlNGaWxlQ29udGVudHNQYm9hcmRUeXBlOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlND
cmVhdGVGaWxlbmFtZVBib2FyZFR5cGUoTlNTdHJpbmcgKmZpbGVUeXBlKTsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqTlNDcmVhdGVGaWxlQ29udGVudHNQYm9hcmRUeXBlKE5TU3RyaW5nICpmaWxlVHlw
ZSk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TR2V0RmlsZVR5cGUoTlNTdHJpbmcgKnBib2FyZFR5
cGUpOwpleHRlcm4gIkMiIE5TQXJyYXkgKk5TR2V0RmlsZVR5cGVzKE5TQXJyYXkgKnBib2FyZFR5
cGVzKTsKIyAzNDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU1Bhc3RlYm9hcmQuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1BJQ1RQYm9h
cmRUeXBlIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAzMyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQ29sb3IuaCIgMiAzCgojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
Q0lDb2xvci5oIiAxIDMKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0
ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lWZWN0b3IuaCIgMSAzCiMgMTkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lWZWN0b3IuaCIg
MwpAaW50ZXJmYWNlIENJVmVjdG9yOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4Kewog
ICAgc2l6ZV90IF9jb3VudDsKCiAgICB1bmlvbiB7CiBDR0Zsb2F0IHZlY1s0XTsKIENHRmxvYXQg
KnB0cjsKICAgIH0gX3U7Cn0KCgoKKyAoQ0lWZWN0b3IgKil2ZWN0b3JXaXRoVmFsdWVzOihjb25z
dCBDR0Zsb2F0ICopdmFsdWVzIGNvdW50OihzaXplX3QpY291bnQ7CgorIChDSVZlY3RvciAqKXZl
Y3RvcldpdGhYOihDR0Zsb2F0KXg7CisgKENJVmVjdG9yICopdmVjdG9yV2l0aFg6KENHRmxvYXQp
eCBZOihDR0Zsb2F0KXk7CisgKENJVmVjdG9yICopdmVjdG9yV2l0aFg6KENHRmxvYXQpeCBZOihD
R0Zsb2F0KXkgWjooQ0dGbG9hdCl6OworIChDSVZlY3RvciAqKXZlY3RvcldpdGhYOihDR0Zsb2F0
KXggWTooQ0dGbG9hdCl5IFo6KENHRmxvYXQpeiBXOihDR0Zsb2F0KXc7CgorIChDSVZlY3RvciAq
KXZlY3RvcldpdGhTdHJpbmc6KE5TU3RyaW5nICopcmVwcmVzZW50YXRpb247CgoKCi0gKGlkKWlu
aXRXaXRoVmFsdWVzOihjb25zdCBDR0Zsb2F0ICopdmFsdWVzIGNvdW50OihzaXplX3QpY291bnQ7
CgotIChpZClpbml0V2l0aFg6KENHRmxvYXQpeDsKLSAoaWQpaW5pdFdpdGhYOihDR0Zsb2F0KXgg
WTooQ0dGbG9hdCl5OwotIChpZClpbml0V2l0aFg6KENHRmxvYXQpeCBZOihDR0Zsb2F0KXkgWjoo
Q0dGbG9hdCl6OwotIChpZClpbml0V2l0aFg6KENHRmxvYXQpeCBZOihDR0Zsb2F0KXkgWjooQ0dG
bG9hdCl6IFc6KENHRmxvYXQpdzsKCi0gKGlkKWluaXRXaXRoU3RyaW5nOihOU1N0cmluZyAqKXJl
cHJlc2VudGF0aW9uOwoKCgoKCi0gKENHRmxvYXQpdmFsdWVBdEluZGV4OihzaXplX3QpaW5kZXg7
CgoKCi0gKHNpemVfdCljb3VudDsKCgoKLSAoQ0dGbG9hdClYOwotIChDR0Zsb2F0KVk7Ci0gKENH
RmxvYXQpWjsKLSAoQ0dGbG9hdClXOwoKCgoKCi0gKE5TU3RyaW5nICopc3RyaW5nUmVwcmVzZW50
YXRpb247CgpAZW5kCiMgNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5m
cmFtZXdvcmsvSGVhZGVycy9DSUNvbG9yLmgiIDIgMwoKQGludGVyZmFjZSBDSUNvbG9yIDogTlNP
YmplY3QgPE5TQ29kaW5nLCBOU0NvcHlpbmc+CnsKICAgIHZvaWQgKl9wcml2OwogICAgdm9pZCAq
X3BhZFszXTsKfQoKCgorIChDSUNvbG9yICopY29sb3JXaXRoQ0dDb2xvcjooQ0dDb2xvclJlZilj
OwoKCgorIChDSUNvbG9yICopY29sb3JXaXRoUmVkOihDR0Zsb2F0KXIgZ3JlZW46KENHRmxvYXQp
ZyBibHVlOihDR0Zsb2F0KWIgYWxwaGE6KENHRmxvYXQpYTsKKyAoQ0lDb2xvciAqKWNvbG9yV2l0
aFJlZDooQ0dGbG9hdClyIGdyZWVuOihDR0Zsb2F0KWcgYmx1ZTooQ0dGbG9hdCliOwoKCgoKKyAo
Q0lDb2xvciAqKWNvbG9yV2l0aFN0cmluZzooTlNTdHJpbmcgKilyZXByZXNlbnRhdGlvbjsKCgoK
LSAoaWQpaW5pdFdpdGhDR0NvbG9yOihDR0NvbG9yUmVmKWM7CgoKCi0gKHNpemVfdCludW1iZXJP
ZkNvbXBvbmVudHM7CgoKCi0gKGNvbnN0IENHRmxvYXQgKiljb21wb25lbnRzOwoKCgotIChDR0Zs
b2F0KWFscGhhOwoKCgotIChDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZTsKCgoKLSAoQ0dGbG9h
dClyZWQ7Ci0gKENHRmxvYXQpZ3JlZW47Ci0gKENHRmxvYXQpYmx1ZTsKCgoKLSAoTlNTdHJpbmcg
KilzdHJpbmdSZXByZXNlbnRhdGlvbjsKCkBlbmQKIyAzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQ29sb3IuaCIgMiAzCgoKQGNsYXNzIE5T
RGljdGlvbmFyeSwgTlNJbWFnZSwgTlNDb2xvclNwYWNlOwoKI2RlZmluZSBOU0FwcEtpdFZlcnNp
b25OdW1iZXJXaXRoUGF0dGVybkNvbG9yTGVha0ZpeCA2NDEuMAoKCgpAaW50ZXJmYWNlIE5TQ29s
b3IgOiBOU09iamVjdAoKPE5TQ29weWluZywgTlNDb2RpbmcsIE5TUGFzdGVib2FyZFJlYWRpbmcs
IE5TUGFzdGVib2FyZFdyaXRpbmc+CgoKCgoKCisgKE5TQ29sb3IgKiljb2xvcldpdGhDYWxpYnJh
dGVkV2hpdGU6KENHRmxvYXQpd2hpdGUgYWxwaGE6KENHRmxvYXQpYWxwaGE7CgoKCgorIChOU0Nv
bG9yICopY29sb3JXaXRoQ2FsaWJyYXRlZEh1ZTooQ0dGbG9hdClodWUgc2F0dXJhdGlvbjooQ0dG
bG9hdClzYXR1cmF0aW9uIGJyaWdodG5lc3M6KENHRmxvYXQpYnJpZ2h0bmVzcyBhbHBoYTooQ0dG
bG9hdClhbHBoYTsKKyAoTlNDb2xvciAqKWNvbG9yV2l0aENhbGlicmF0ZWRSZWQ6KENHRmxvYXQp
cmVkIGdyZWVuOihDR0Zsb2F0KWdyZWVuIGJsdWU6KENHRmxvYXQpYmx1ZSBhbHBoYTooQ0dGbG9h
dClhbHBoYTsKCgoKCisgKE5TQ29sb3IgKiljb2xvcldpdGhEZXZpY2VXaGl0ZTooQ0dGbG9hdCl3
aGl0ZSBhbHBoYTooQ0dGbG9hdClhbHBoYTsKKyAoTlNDb2xvciAqKWNvbG9yV2l0aERldmljZUh1
ZTooQ0dGbG9hdClodWUgc2F0dXJhdGlvbjooQ0dGbG9hdClzYXR1cmF0aW9uIGJyaWdodG5lc3M6
KENHRmxvYXQpYnJpZ2h0bmVzcyBhbHBoYTooQ0dGbG9hdClhbHBoYTsKKyAoTlNDb2xvciAqKWNv
bG9yV2l0aERldmljZVJlZDooQ0dGbG9hdClyZWQgZ3JlZW46KENHRmxvYXQpZ3JlZW4gYmx1ZToo
Q0dGbG9hdClibHVlIGFscGhhOihDR0Zsb2F0KWFscGhhOworIChOU0NvbG9yICopY29sb3JXaXRo
RGV2aWNlQ3lhbjooQ0dGbG9hdCljeWFuIG1hZ2VudGE6KENHRmxvYXQpbWFnZW50YSB5ZWxsb3c6
KENHRmxvYXQpeWVsbG93IGJsYWNrOihDR0Zsb2F0KWJsYWNrIGFscGhhOihDR0Zsb2F0KWFscGhh
OwoKCgoKKyAoTlNDb2xvciAqKWNvbG9yV2l0aENhdGFsb2dOYW1lOihOU1N0cmluZyAqKWxpc3RO
YW1lIGNvbG9yTmFtZTooTlNTdHJpbmcgKiljb2xvck5hbWU7CgoKCgoKKyAoTlNDb2xvciAqKWNv
bG9yV2l0aENvbG9yU3BhY2U6KE5TQ29sb3JTcGFjZSAqKXNwYWNlIGNvbXBvbmVudHM6KGNvbnN0
IENHRmxvYXQgKiljb21wb25lbnRzIGNvdW50OihOU0ludGVnZXIpbnVtYmVyT2ZDb21wb25lbnRz
OwoKCgoKCisgKE5TQ29sb3IgKilibGFja0NvbG9yOworIChOU0NvbG9yICopZGFya0dyYXlDb2xv
cjsKKyAoTlNDb2xvciAqKWxpZ2h0R3JheUNvbG9yOworIChOU0NvbG9yICopd2hpdGVDb2xvcjsK
KyAoTlNDb2xvciAqKWdyYXlDb2xvcjsKKyAoTlNDb2xvciAqKXJlZENvbG9yOworIChOU0NvbG9y
ICopZ3JlZW5Db2xvcjsKKyAoTlNDb2xvciAqKWJsdWVDb2xvcjsKKyAoTlNDb2xvciAqKWN5YW5D
b2xvcjsKKyAoTlNDb2xvciAqKXllbGxvd0NvbG9yOworIChOU0NvbG9yICopbWFnZW50YUNvbG9y
OworIChOU0NvbG9yICopb3JhbmdlQ29sb3I7CisgKE5TQ29sb3IgKilwdXJwbGVDb2xvcjsKKyAo
TlNDb2xvciAqKWJyb3duQ29sb3I7CisgKE5TQ29sb3IgKiljbGVhckNvbG9yOwoKKyAoTlNDb2xv
ciAqKWNvbnRyb2xTaGFkb3dDb2xvcjsKKyAoTlNDb2xvciAqKWNvbnRyb2xEYXJrU2hhZG93Q29s
b3I7CisgKE5TQ29sb3IgKiljb250cm9sQ29sb3I7CisgKE5TQ29sb3IgKiljb250cm9sSGlnaGxp
Z2h0Q29sb3I7CisgKE5TQ29sb3IgKiljb250cm9sTGlnaHRIaWdobGlnaHRDb2xvcjsKKyAoTlND
b2xvciAqKWNvbnRyb2xUZXh0Q29sb3I7CisgKE5TQ29sb3IgKiljb250cm9sQmFja2dyb3VuZENv
bG9yOworIChOU0NvbG9yICopc2VsZWN0ZWRDb250cm9sQ29sb3I7CisgKE5TQ29sb3IgKilzZWNv
bmRhcnlTZWxlY3RlZENvbnRyb2xDb2xvcjsKKyAoTlNDb2xvciAqKXNlbGVjdGVkQ29udHJvbFRl
eHRDb2xvcjsKKyAoTlNDb2xvciAqKWRpc2FibGVkQ29udHJvbFRleHRDb2xvcjsKKyAoTlNDb2xv
ciAqKXRleHRDb2xvcjsKKyAoTlNDb2xvciAqKXRleHRCYWNrZ3JvdW5kQ29sb3I7CisgKE5TQ29s
b3IgKilzZWxlY3RlZFRleHRDb2xvcjsKKyAoTlNDb2xvciAqKXNlbGVjdGVkVGV4dEJhY2tncm91
bmRDb2xvcjsKKyAoTlNDb2xvciAqKWdyaWRDb2xvcjsKKyAoTlNDb2xvciAqKWtleWJvYXJkRm9j
dXNJbmRpY2F0b3JDb2xvcjsKKyAoTlNDb2xvciAqKXdpbmRvd0JhY2tncm91bmRDb2xvcjsKCisg
KE5TQ29sb3IgKilzY3JvbGxCYXJDb2xvcjsKKyAoTlNDb2xvciAqKWtub2JDb2xvcjsKKyAoTlND
b2xvciAqKXNlbGVjdGVkS25vYkNvbG9yOwoKKyAoTlNDb2xvciAqKXdpbmRvd0ZyYW1lQ29sb3I7
CisgKE5TQ29sb3IgKil3aW5kb3dGcmFtZVRleHRDb2xvcjsKCisgKE5TQ29sb3IgKilzZWxlY3Rl
ZE1lbnVJdGVtQ29sb3I7CisgKE5TQ29sb3IgKilzZWxlY3RlZE1lbnVJdGVtVGV4dENvbG9yOwoK
KyAoTlNDb2xvciAqKWhpZ2hsaWdodENvbG9yOworIChOU0NvbG9yICopc2hhZG93Q29sb3I7Cgor
IChOU0NvbG9yICopaGVhZGVyQ29sb3I7CisgKE5TQ29sb3IgKiloZWFkZXJUZXh0Q29sb3I7CgoK
KyAoTlNDb2xvciAqKWFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbENvbG9yOworIChOU0NvbG9yICop
YWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9sVGV4dENvbG9yOwoKCgorIChOU0FycmF5ICopY29udHJv
bEFsdGVybmF0aW5nUm93QmFja2dyb3VuZENvbG9yczsKCgotIChOU0NvbG9yICopaGlnaGxpZ2h0
V2l0aExldmVsOihDR0Zsb2F0KXZhbDsKLSAoTlNDb2xvciAqKXNoYWRvd1dpdGhMZXZlbDooQ0dG
bG9hdCl2YWw7CgorIChOU0NvbG9yICopY29sb3JGb3JDb250cm9sVGludDooTlNDb250cm9sVGlu
dCljb250cm9sVGludDsKCgorIChOU0NvbnRyb2xUaW50KSBjdXJyZW50Q29udHJvbFRpbnQ7CgoK
CgoKLSAodm9pZClzZXQ7CgoKCgotICh2b2lkKXNldEZpbGw7Ci0gKHZvaWQpc2V0U3Ryb2tlOwoK
CgoKLSAoTlNTdHJpbmcgKiljb2xvclNwYWNlTmFtZTsKIyAxNzcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0NvbG9yLmgiIDMKLSAoTlNDb2xv
ciAqKWNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTooTlNTdHJpbmcgKiljb2xvclNwYWNlOwotIChO
U0NvbG9yICopY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOihOU1N0cmluZyAqKWNvbG9yU3BhY2Ug
ZGV2aWNlOihOU0RpY3Rpb25hcnkgKilkZXZpY2VEZXNjcmlwdGlvbjsKCgoKCgotIChOU0NvbG9y
ICopY29sb3JVc2luZ0NvbG9yU3BhY2U6KE5TQ29sb3JTcGFjZSAqKXNwYWNlOwoKCgoKCi0gKE5T
Q29sb3IgKilibGVuZGVkQ29sb3JXaXRoRnJhY3Rpb246KENHRmxvYXQpZnJhY3Rpb24gb2ZDb2xv
cjooTlNDb2xvciAqKWNvbG9yOwoKCgoKLSAoTlNDb2xvciAqKWNvbG9yV2l0aEFscGhhQ29tcG9u
ZW50OihDR0Zsb2F0KWFscGhhOwoKCgoKCgotIChOU1N0cmluZyAqKWNhdGFsb2dOYW1lQ29tcG9u
ZW50OwotIChOU1N0cmluZyAqKWNvbG9yTmFtZUNvbXBvbmVudDsKCgoKLSAoTlNTdHJpbmcgKils
b2NhbGl6ZWRDYXRhbG9nTmFtZUNvbXBvbmVudDsKLSAoTlNTdHJpbmcgKilsb2NhbGl6ZWRDb2xv
ck5hbWVDb21wb25lbnQ7CgoKCi0gKENHRmxvYXQpcmVkQ29tcG9uZW50OwotIChDR0Zsb2F0KWdy
ZWVuQ29tcG9uZW50OwotIChDR0Zsb2F0KWJsdWVDb21wb25lbnQ7Ci0gKHZvaWQpZ2V0UmVkOihD
R0Zsb2F0ICopcmVkIGdyZWVuOihDR0Zsb2F0ICopZ3JlZW4gYmx1ZTooQ0dGbG9hdCAqKWJsdWUg
YWxwaGE6KENHRmxvYXQgKilhbHBoYTsKCgoKLSAoQ0dGbG9hdClodWVDb21wb25lbnQ7Ci0gKENH
RmxvYXQpc2F0dXJhdGlvbkNvbXBvbmVudDsKLSAoQ0dGbG9hdClicmlnaHRuZXNzQ29tcG9uZW50
OwotICh2b2lkKWdldEh1ZTooQ0dGbG9hdCAqKWh1ZSBzYXR1cmF0aW9uOihDR0Zsb2F0ICopc2F0
dXJhdGlvbiBicmlnaHRuZXNzOihDR0Zsb2F0ICopYnJpZ2h0bmVzcyBhbHBoYTooQ0dGbG9hdCAq
KWFscGhhOwoKCgoKLSAoQ0dGbG9hdCl3aGl0ZUNvbXBvbmVudDsKLSAodm9pZClnZXRXaGl0ZToo
Q0dGbG9hdCAqKXdoaXRlIGFscGhhOihDR0Zsb2F0ICopYWxwaGE7CgoKCgotIChDR0Zsb2F0KWN5
YW5Db21wb25lbnQ7Ci0gKENHRmxvYXQpbWFnZW50YUNvbXBvbmVudDsKLSAoQ0dGbG9hdCl5ZWxs
b3dDb21wb25lbnQ7Ci0gKENHRmxvYXQpYmxhY2tDb21wb25lbnQ7Ci0gKHZvaWQpZ2V0Q3lhbjoo
Q0dGbG9hdCAqKWN5YW4gbWFnZW50YTooQ0dGbG9hdCAqKW1hZ2VudGEgeWVsbG93OihDR0Zsb2F0
ICopeWVsbG93IGJsYWNrOihDR0Zsb2F0ICopYmxhY2sgYWxwaGE6KENHRmxvYXQgKilhbHBoYTsK
CgoKCgotIChOU0NvbG9yU3BhY2UgKiljb2xvclNwYWNlOwotIChOU0ludGVnZXIpbnVtYmVyT2ZD
b21wb25lbnRzOwotICh2b2lkKWdldENvbXBvbmVudHM6KENHRmxvYXQgKiljb21wb25lbnRzOwoK
CgoKCi0gKENHRmxvYXQpYWxwaGFDb21wb25lbnQ7CgoKCgorIChOU0NvbG9yICopY29sb3JGcm9t
UGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVCb2FyZDsKLSAodm9pZCl3cml0ZVRvUGFz
dGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVCb2FyZDsKCgoKKyAoTlNDb2xvciAqKWNvbG9y
V2l0aFBhdHRlcm5JbWFnZTooTlNJbWFnZSopaW1hZ2U7Ci0gKE5TSW1hZ2UgKilwYXR0ZXJuSW1h
Z2U7CgoKCi0gKHZvaWQpZHJhd1N3YXRjaEluUmVjdDooTlNSZWN0KXJlY3Q7CgoKCgoKCisgKHZv
aWQpc2V0SWdub3Jlc0FscGhhOihCT09MKWZsYWc7CisgKEJPT0wpaWdub3Jlc0FscGhhOwoKQGVu
ZAoKCgpAaW50ZXJmYWNlIE5TQ29sb3IgKE5TUXVhcnR6Q29yZUFkZGl0aW9ucykKKyAoTlNDb2xv
ciAqKWNvbG9yV2l0aENJQ29sb3I6KENJQ29sb3IgKiljb2xvcjsKQGVuZAoKQGludGVyZmFjZSBD
SUNvbG9yIChOU0FwcEtpdEFkZGl0aW9ucykKLSAoaWQpaW5pdFdpdGhDb2xvcjooTlNDb2xvciAq
KWNvbG9yOwpAZW5kCgoKQGludGVyZmFjZSBOU0NvZGVyKE5TQXBwS2l0Q29sb3JFeHRlbnNpb25z
KQoKCgotIChOU0NvbG9yICopZGVjb2RlTlhDb2xvcjsKCkBlbmQKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKk5TU3lzdGVtQ29sb3JzRGlkQ2hhbmdlTm90aWZpY2F0aW9uOwojIDM3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9O
U0NvbG9yU3BhY2UuaCIgMSAzCiMgMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9OU0NvbG9yU3BhY2UuaCIgMwpAY2xhc3MgTlNEYXRhLCBOU0Fy
cmF5OwoKCgoKZW51bSB7CiAgICBOU1Vua25vd25Db2xvclNwYWNlTW9kZWwgPSAtMSwKICAgIE5T
R3JheUNvbG9yU3BhY2VNb2RlbCwKICAgIE5TUkdCQ29sb3JTcGFjZU1vZGVsLAogICAgTlNDTVlL
Q29sb3JTcGFjZU1vZGVsLAogICAgTlNMQUJDb2xvclNwYWNlTW9kZWwsCiAgICBOU0RldmljZU5D
b2xvclNwYWNlTW9kZWwsCiAgICBOU0luZGV4ZWRDb2xvclNwYWNlTW9kZWwsCiAgICBOU1BhdHRl
cm5Db2xvclNwYWNlTW9kZWwKfTsKdHlwZWRlZiBOU0ludGVnZXIgTlNDb2xvclNwYWNlTW9kZWw7
CgoKQGludGVyZmFjZSBOU0NvbG9yU3BhY2UgOiBOU09iamVjdCA8TlNDb2Rpbmc+IHsKICAgIGlk
IF9wcm9maWxlOwogICAgc3RydWN0IHsKIHVuc2lnbmVkIGludCBjb2xvclNwYWNlSUQ6ODsKIHVu
c2lnbmVkIGludCBzdG9yYWdlVHlwZTozOwogdW5zaWduZWQgaW50IHJlcGxhY2VkRHVyaW5nVW5h
cmNoaXZpbmc6MTsKIHVuc2lnbmVkIGludCA6MjA7CgogdW5zaWduZWQgaW50IDozMjsKCiAgICB9
IF9mbGFnczsKICAgIHZvaWQgKl9fY2dDb2xvclNwYWNlOwogICAgdm9pZCAqX3Jlc2VydmVkWzVd
Owp9CgotIChpZClpbml0V2l0aElDQ1Byb2ZpbGVEYXRhOihOU0RhdGEgKilpY2NEYXRhOwotIChO
U0RhdGEgKilJQ0NQcm9maWxlRGF0YTsKCi0gKGlkKWluaXRXaXRoQ29sb3JTeW5jUHJvZmlsZToo
dm9pZCAqIClwcm9mOwotICh2b2lkICogKWNvbG9yU3luY1Byb2ZpbGU7CgoKCi0gKGlkKWluaXRX
aXRoQ0dDb2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY2dDb2xvclNwYWNlIDsKCgoKLSAoQ0dD
b2xvclNwYWNlUmVmKUNHQ29sb3JTcGFjZSA7CgotIChOU0ludGVnZXIpbnVtYmVyT2ZDb2xvckNv
bXBvbmVudHM7Ci0gKE5TQ29sb3JTcGFjZU1vZGVsKWNvbG9yU3BhY2VNb2RlbDsKLSAoTlNTdHJp
bmcgKilsb2NhbGl6ZWROYW1lOwoKKyAoTlNDb2xvclNwYWNlICopZ2VuZXJpY1JHQkNvbG9yU3Bh
Y2U7CisgKE5TQ29sb3JTcGFjZSAqKWdlbmVyaWNHcmF5Q29sb3JTcGFjZTsKKyAoTlNDb2xvclNw
YWNlICopZ2VuZXJpY0NNWUtDb2xvclNwYWNlOworIChOU0NvbG9yU3BhY2UgKilkZXZpY2VSR0JD
b2xvclNwYWNlOworIChOU0NvbG9yU3BhY2UgKilkZXZpY2VHcmF5Q29sb3JTcGFjZTsKKyAoTlND
b2xvclNwYWNlICopZGV2aWNlQ01ZS0NvbG9yU3BhY2U7CgorIChOU0NvbG9yU3BhY2UgKilzUkdC
Q29sb3JTcGFjZSA7CisgKE5TQ29sb3JTcGFjZSAqKWdlbmVyaWNHYW1tYTIyR3JheUNvbG9yU3Bh
Y2UgOwoKKyAoTlNDb2xvclNwYWNlICopYWRvYmVSR0IxOTk4Q29sb3JTcGFjZSA7CgoKCisgKE5T
QXJyYXkgKilhdmFpbGFibGVDb2xvclNwYWNlc1dpdGhNb2RlbDooTlNDb2xvclNwYWNlTW9kZWwp
bW9kZWwgOwoKQGVuZAojIDM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0JpdG1hcEltYWdlUmVwLmgiIDEgMwoKCgoK
CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNJbWFnZVJlcC5oIiAxIDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yay9IZWFkZXJzL05TSW1hZ2VSZXAuaCIgMwpAY2xhc3MgTlNBcnJheSwgTlNQ
YXN0ZWJvYXJkLCBOU0dyYXBoaWNzQ29udGV4dCwgTlNVUkw7CgoKCmVudW0gewogICAgTlNJbWFn
ZVJlcE1hdGNoZXNEZXZpY2UgPSAwCn07CgpAaW50ZXJmYWNlIE5TSW1hZ2VSZXAgOiBOU09iamVj
dCA8TlNDb3B5aW5nLCBOU0NvZGluZz4gewoKICAgIHN0cnVjdCBfX3JlcEZsYWdzIHsKIHVuc2ln
bmVkIGludCBoYXNBbHBoYToxOwogdW5zaWduZWQgaW50IGlzT3BhcXVlOjE7CiAgICAgICAgdW5z
aWduZWQgaW50IGNhY2hlUGFyYW1zQ29tcHV0ZWQ6MSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7CiAgICAgICAgdW5zaWduZWQgaW50IGNhY2hlQWxwaGFDb21wdXRlZDoxIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKICAgICAgICB1bnNpZ25lZCBpbnQgbG9hZFN0YXRlOjI7CiAgICAg
ICAgdW5zaWduZWQgaW50IGtlZXBDYWNoZVdpbmRvdzoxIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQ6MTsKICAgICAgICB1bnNpZ25lZCBp
bnQgYml0c1BlclNhbXBsZTo4OwogdW5zaWduZWQgaW50IGdzYXZlZDoxNjsKICAgIH0gX3JlcEZs
YWdzOwogICAgTlNTdHJpbmcgKl9jb2xvclNwYWNlTmFtZTsKICAgIE5TU2l6ZSBfc2l6ZTsKICAg
IGludCBfcGl4ZWxzV2lkZTsKICAgIGludCBfcGl4ZWxzSGlnaDsKfQoKCgotIChCT09MKWRyYXc7
Ci0gKEJPT0wpZHJhd0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQ7Ci0gKEJPT0wpZHJhd0luUmVjdDoo
TlNSZWN0KXJlY3Q7Ci0gKEJPT0wpZHJhd0luUmVjdDooTlNSZWN0KWRzdFNwYWNlUG9ydGlvblJl
Y3QgZnJvbVJlY3Q6KE5TUmVjdClzcmNTcGFjZVBvcnRpb25SZWN0IG9wZXJhdGlvbjooTlNDb21w
b3NpdGluZ09wZXJhdGlvbilvcCBmcmFjdGlvbjooQ0dGbG9hdClyZXF1ZXN0ZWRBbHBoYSByZXNw
ZWN0RmxpcHBlZDooQk9PTClyZXNwZWN0Q29udGV4dElzRmxpcHBlZCBoaW50czooTlNEaWN0aW9u
YXJ5ICopaGludHMgOwoKCgotICh2b2lkKXNldFNpemU6KE5TU2l6ZSlhU2l6ZTsKLSAoTlNTaXpl
KXNpemU7Ci0gKHZvaWQpc2V0QWxwaGE6KEJPT0wpZmxhZzsKLSAoQk9PTCloYXNBbHBoYTsKLSAo
dm9pZClzZXRPcGFxdWU6KEJPT0wpZmxhZzsKLSAoQk9PTClpc09wYXF1ZTsKLSAodm9pZClzZXRD
b2xvclNwYWNlTmFtZTooTlNTdHJpbmcgKilzdHJpbmc7Ci0gKE5TU3RyaW5nICopY29sb3JTcGFj
ZU5hbWU7Ci0gKHZvaWQpc2V0Qml0c1BlclNhbXBsZTooTlNJbnRlZ2VyKWFuSW50OwotIChOU0lu
dGVnZXIpYml0c1BlclNhbXBsZTsKLSAodm9pZClzZXRQaXhlbHNXaWRlOihOU0ludGVnZXIpYW5J
bnQ7Ci0gKE5TSW50ZWdlcilwaXhlbHNXaWRlOwotICh2b2lkKXNldFBpeGVsc0hpZ2g6KE5TSW50
ZWdlcilhbkludDsKLSAoTlNJbnRlZ2VyKXBpeGVsc0hpZ2g7CgoKCgoKCisgKHZvaWQpcmVnaXN0
ZXJJbWFnZVJlcENsYXNzOihDbGFzcylpbWFnZVJlcENsYXNzOworICh2b2lkKXVucmVnaXN0ZXJJ
bWFnZVJlcENsYXNzOihDbGFzcylpbWFnZVJlcENsYXNzOworIChOU0FycmF5ICopcmVnaXN0ZXJl
ZEltYWdlUmVwQ2xhc3NlczsKKyAoQ2xhc3MpaW1hZ2VSZXBDbGFzc0ZvckZpbGVUeXBlOihOU1N0
cmluZyAqKXR5cGU7CisgKENsYXNzKWltYWdlUmVwQ2xhc3NGb3JQYXN0ZWJvYXJkVHlwZTooTlNT
dHJpbmcgKil0eXBlOwoKKyAoQ2xhc3MpaW1hZ2VSZXBDbGFzc0ZvclR5cGU6KE5TU3RyaW5nICop
dHlwZTsKCisgKENsYXNzKWltYWdlUmVwQ2xhc3NGb3JEYXRhOihOU0RhdGEgKilkYXRhOwoKCgor
IChCT09MKWNhbkluaXRXaXRoRGF0YTooTlNEYXRhICopZGF0YTsKCgoKKyAoTlNBcnJheSAqKWlt
YWdlVW5maWx0ZXJlZEZpbGVUeXBlczsKKyAoTlNBcnJheSAqKWltYWdlVW5maWx0ZXJlZFBhc3Rl
Ym9hcmRUeXBlczsKCgoKKyAoTlNBcnJheSAqKWltYWdlRmlsZVR5cGVzOworIChOU0FycmF5ICop
aW1hZ2VQYXN0ZWJvYXJkVHlwZXM7CgoKCgoKKyAoTlNBcnJheSAqKWltYWdlVW5maWx0ZXJlZFR5
cGVzOwoKCgorIChOU0FycmF5ICopaW1hZ2VUeXBlczsKCgoKCgorIChCT09MKWNhbkluaXRXaXRo
UGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZDsKCgoKKyAoTlNBcnJheSAqKWlt
YWdlUmVwc1dpdGhDb250ZW50c09mRmlsZTooTlNTdHJpbmcgKilmaWxlbmFtZTsKKyAoaWQpaW1h
Z2VSZXBXaXRoQ29udGVudHNPZkZpbGU6KE5TU3RyaW5nICopZmlsZW5hbWU7CisgKE5TQXJyYXkg
KilpbWFnZVJlcHNXaXRoQ29udGVudHNPZlVSTDooTlNVUkwgKil1cmw7CisgKGlkKWltYWdlUmVw
V2l0aENvbnRlbnRzT2ZVUkw6KE5TVVJMICopdXJsOworIChOU0FycmF5ICopaW1hZ2VSZXBzV2l0
aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQ7CisgKGlkKWltYWdlUmVwV2l0
aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQ7CiMgMTI5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNJbWFnZVJlcC5oIiAz
Ci0gKENHSW1hZ2VSZWYpQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDooTlNSZWN0ICopcHJvcG9zZWRE
ZXN0UmVjdCBjb250ZXh0OihOU0dyYXBoaWNzQ29udGV4dCAqKWNvbnRleHQgaGludHM6KE5TRGlj
dGlvbmFyeSAqKWhpbnRzIDsKCkBlbmQKCgojZGVmaW5lIE5TSW1hZ2VSZXBSZWdpc3RyeUNoYW5n
ZWROb3RpZmljYXRpb24gTlNJbWFnZVJlcFJlZ2lzdHJ5RGlkQ2hhbmdlTm90aWZpY2F0aW9uCmV4
dGVybiAiQyIgTlNTdHJpbmcgKk5TSW1hZ2VSZXBSZWdpc3RyeURpZENoYW5nZU5vdGlmaWNhdGlv
bjsKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNCaXRtYXBJbWFnZVJlcC5oIiAyIDMKCgpAY2xhc3MgQ0lJbWFnZTsKQGNsYXNzIE5TQ29s
b3I7CkBjbGFzcyBOU0NvbG9yU3BhY2U7CgplbnVtIHsKICAgIE5TVElGRkNvbXByZXNzaW9uTm9u
ZSA9IDEsCiAgICBOU1RJRkZDb21wcmVzc2lvbkNDSVRURkFYMyA9IDMsCiAgICBOU1RJRkZDb21w
cmVzc2lvbkNDSVRURkFYNCA9IDQsCiAgICBOU1RJRkZDb21wcmVzc2lvbkxaVyA9IDUsCiAgICBO
U1RJRkZDb21wcmVzc2lvbkpQRUcgPSA2LAogICAgTlNUSUZGQ29tcHJlc3Npb25ORVhUID0gMzI3
NjYsCiAgICBOU1RJRkZDb21wcmVzc2lvblBhY2tCaXRzID0gMzI3NzMsCiAgICBOU1RJRkZDb21w
cmVzc2lvbk9sZEpQRUcgPSAzMjg2NQp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNUSUZGQ29tcHJl
c3Npb247CgplbnVtIHsKICAgIE5TVElGRkZpbGVUeXBlLAogICAgTlNCTVBGaWxlVHlwZSwKICAg
IE5TR0lGRmlsZVR5cGUsCiAgICBOU0pQRUdGaWxlVHlwZSwKICAgIE5TUE5HRmlsZVR5cGUsCgog
ICAgTlNKUEVHMjAwMEZpbGVUeXBlCgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNCaXRtYXBJbWFn
ZUZpbGVUeXBlOwoKCmVudW0gewogICAgTlNJbWFnZVJlcExvYWRTdGF0dXNVbmtub3duVHlwZSA9
IC0xLAogICAgTlNJbWFnZVJlcExvYWRTdGF0dXNSZWFkaW5nSGVhZGVyID0gLTIsCiAgICBOU0lt
YWdlUmVwTG9hZFN0YXR1c1dpbGxOZWVkQWxsRGF0YSA9IC0zLAogICAgTlNJbWFnZVJlcExvYWRT
dGF0dXNJbnZhbGlkRGF0YSA9IC00LAogICAgTlNJbWFnZVJlcExvYWRTdGF0dXNVbmV4cGVjdGVk
RU9GID0gLTUsCiAgICBOU0ltYWdlUmVwTG9hZFN0YXR1c0NvbXBsZXRlZCA9IC02Cn07CnR5cGVk
ZWYgTlNJbnRlZ2VyIE5TSW1hZ2VSZXBMb2FkU3RhdHVzOwoKCgplbnVtIHsKICAgIE5TQWxwaGFG
aXJzdEJpdG1hcEZvcm1hdCA9IDEgPDwgMCwKICAgIE5TQWxwaGFOb25wcmVtdWx0aXBsaWVkQml0
bWFwRm9ybWF0ID0gMSA8PCAxLAogICAgTlNGbG9hdGluZ1BvaW50U2FtcGxlc0JpdG1hcEZvcm1h
dCA9IDEgPDwgMgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNCaXRtYXBGb3JtYXQ7CgoKZXh0ZXJu
ICJDIiBOU1N0cmluZyogTlNJbWFnZUNvbXByZXNzaW9uTWV0aG9kOwpleHRlcm4gIkMiIE5TU3Ry
aW5nKiBOU0ltYWdlQ29tcHJlc3Npb25GYWN0b3I7CmV4dGVybiAiQyIgTlNTdHJpbmcqIE5TSW1h
Z2VEaXRoZXJUcmFuc3BhcmVuY3k7CmV4dGVybiAiQyIgTlNTdHJpbmcqIE5TSW1hZ2VSR0JDb2xv
clRhYmxlOwpleHRlcm4gIkMiIE5TU3RyaW5nKiBOU0ltYWdlSW50ZXJsYWNlZDsKZXh0ZXJuICJD
IiBOU1N0cmluZyogTlNJbWFnZUNvbG9yU3luY1Byb2ZpbGVEYXRhOwpleHRlcm4gIkMiIE5TU3Ry
aW5nKiBOU0ltYWdlRnJhbWVDb3VudCA7CmV4dGVybiAiQyIgTlNTdHJpbmcqIE5TSW1hZ2VDdXJy
ZW50RnJhbWUgOwpleHRlcm4gIkMiIE5TU3RyaW5nKiBOU0ltYWdlQ3VycmVudEZyYW1lRHVyYXRp
b24gOwpleHRlcm4gIkMiIE5TU3RyaW5nKiBOU0ltYWdlTG9vcENvdW50IDsKZXh0ZXJuICJDIiBO
U1N0cmluZyogTlNJbWFnZUdhbW1hIDsKZXh0ZXJuICJDIiBOU1N0cmluZyogTlNJbWFnZVByb2dy
ZXNzaXZlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyogTlNJbWFnZUVYSUZEYXRhIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyogTlNJbWFnZUZhbGxiYWNrQmFja2dyb3VuZENvbG9yIDsKCkBpbnRlcmZhY2Ug
TlNCaXRtYXBJbWFnZVJlcCA6IE5TSW1hZ2VSZXAgewoKICAgIHN0cnVjdCBfX2JpdG1hcFJlcEZs
YWdzIHsKICAgICAgICB1bnNpZ25lZCBpbnQgYml0c1BlclBpeGVsOjg7CiB1bnNpZ25lZCBpbnQg
aXNQbGFuYXI6MTsKIHVuc2lnbmVkIGludCBleHBsaWNpdFBsYW5lczoxOwogdW5zaWduZWQgaW50
IGltYWdlU291cmNlSXNJbmRleGVkOjE7CiB1bnNpZ25lZCBpbnQgZGF0YUxvYWRlZDoxOwogICAg
ICAgIHVuc2lnbmVkIGludCBjb2xvck1vZGVsOjQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRpZXJU
d29JbmZvSXNMb2FkZWQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzcGVjdE86MTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgY29tcHJlc3Npb25GYWN0b3I6MTQ7CiAgICAgICAgdW5zaWduZWQgaW50
IGltYWdlTnVtYmVyOjg7CiAgICAgICAgdW5zaWduZWQgaW50IGJpdG1hcEZvcm1hdDozOwogICAg
ICAgIHVuc2lnbmVkIGludCBjZ0ltYWdlSXNQcmltYXJ5OjE7CiB1bnNpZ25lZCBpbnQgY29tcHJl
c3Npb246MjA7CiAgICB9IF9tb3JlUmVwRmxhZ3M7CiAgICB1bnNpZ25lZCBpbnQgX2J5dGVzUGVy
Um93OwogICAgdm9sYXRpbGUgaWQgX2RhdGFPYmo7CiAgICBOU0RhdGEgKl90aWZmRGF0YTsKICAg
IGlkIF9wcm9wZXJ0aWVzOwp9CgotIChpZClpbml0V2l0aEZvY3VzZWRWaWV3UmVjdDooTlNSZWN0
KXJlY3Q7CgotIChpZClpbml0V2l0aEJpdG1hcERhdGFQbGFuZXM6KHVuc2lnbmVkIGNoYXIgKiop
cGxhbmVzIHBpeGVsc1dpZGU6KE5TSW50ZWdlcil3aWR0aCBwaXhlbHNIaWdoOihOU0ludGVnZXIp
aGVpZ2h0IGJpdHNQZXJTYW1wbGU6KE5TSW50ZWdlcilicHMgc2FtcGxlc1BlclBpeGVsOihOU0lu
dGVnZXIpc3BwIGhhc0FscGhhOihCT09MKWFscGhhIGlzUGxhbmFyOihCT09MKWlzUGxhbmFyIGNv
bG9yU3BhY2VOYW1lOihOU1N0cmluZyAqKWNvbG9yU3BhY2VOYW1lIGJ5dGVzUGVyUm93OihOU0lu
dGVnZXIpckJ5dGVzIGJpdHNQZXJQaXhlbDooTlNJbnRlZ2VyKXBCaXRzOwoKLSAoaWQpaW5pdFdp
dGhCaXRtYXBEYXRhUGxhbmVzOih1bnNpZ25lZCBjaGFyICoqKXBsYW5lcyBwaXhlbHNXaWRlOihO
U0ludGVnZXIpd2lkdGggcGl4ZWxzSGlnaDooTlNJbnRlZ2VyKWhlaWdodCBiaXRzUGVyU2FtcGxl
OihOU0ludGVnZXIpYnBzIHNhbXBsZXNQZXJQaXhlbDooTlNJbnRlZ2VyKXNwcCBoYXNBbHBoYToo
Qk9PTClhbHBoYSBpc1BsYW5hcjooQk9PTClpc1BsYW5hciBjb2xvclNwYWNlTmFtZTooTlNTdHJp
bmcgKiljb2xvclNwYWNlTmFtZSBiaXRtYXBGb3JtYXQ6KE5TQml0bWFwRm9ybWF0KWJpdG1hcEZv
cm1hdCBieXRlc1BlclJvdzooTlNJbnRlZ2VyKXJCeXRlcyBiaXRzUGVyUGl4ZWw6KE5TSW50ZWdl
cilwQml0czsKCgotIChpZClpbml0V2l0aENHSW1hZ2U6KENHSW1hZ2VSZWYpY2dJbWFnZTsKLSAo
aWQpaW5pdFdpdGhDSUltYWdlOihDSUltYWdlICopY2lJbWFnZTsKCgorIChOU0FycmF5ICopaW1h
Z2VSZXBzV2l0aERhdGE6KE5TRGF0YSAqKWRhdGE7CgorIChpZClpbWFnZVJlcFdpdGhEYXRhOihO
U0RhdGEgKilkYXRhOwotIChpZClpbml0V2l0aERhdGE6KE5TRGF0YSAqKWRhdGE7CgotICh1bnNp
Z25lZCBjaGFyICopYml0bWFwRGF0YTsKLSAodm9pZClnZXRCaXRtYXBEYXRhUGxhbmVzOih1bnNp
Z25lZCBjaGFyICoqKWRhdGE7Ci0gKEJPT0wpaXNQbGFuYXI7Ci0gKE5TSW50ZWdlcilzYW1wbGVz
UGVyUGl4ZWw7Ci0gKE5TSW50ZWdlciliaXRzUGVyUGl4ZWw7Ci0gKE5TSW50ZWdlcilieXRlc1Bl
clJvdzsKLSAoTlNJbnRlZ2VyKWJ5dGVzUGVyUGxhbmU7Ci0gKE5TSW50ZWdlciludW1iZXJPZlBs
YW5lczsKCi0gKE5TQml0bWFwRm9ybWF0KWJpdG1hcEZvcm1hdDsKCgotICh2b2lkKWdldENvbXBy
ZXNzaW9uOihOU1RJRkZDb21wcmVzc2lvbiAqKWNvbXByZXNzaW9uIGZhY3RvcjooZmxvYXQgKilm
YWN0b3I7Ci0gKHZvaWQpc2V0Q29tcHJlc3Npb246KE5TVElGRkNvbXByZXNzaW9uKWNvbXByZXNz
aW9uIGZhY3RvcjooZmxvYXQpZmFjdG9yOwoKLSAoTlNEYXRhICopVElGRlJlcHJlc2VudGF0aW9u
OwotIChOU0RhdGEgKilUSUZGUmVwcmVzZW50YXRpb25Vc2luZ0NvbXByZXNzaW9uOihOU1RJRkZD
b21wcmVzc2lvbiljb21wIGZhY3RvcjooZmxvYXQpZmFjdG9yOwoKKyAoTlNEYXRhICopVElGRlJl
cHJlc2VudGF0aW9uT2ZJbWFnZVJlcHNJbkFycmF5OihOU0FycmF5ICopYXJyYXk7CisgKE5TRGF0
YSAqKVRJRkZSZXByZXNlbnRhdGlvbk9mSW1hZ2VSZXBzSW5BcnJheTooTlNBcnJheSAqKWFycmF5
IHVzaW5nQ29tcHJlc3Npb246KE5TVElGRkNvbXByZXNzaW9uKWNvbXAgZmFjdG9yOihmbG9hdClm
YWN0b3I7CgorICh2b2lkKWdldFRJRkZDb21wcmVzc2lvblR5cGVzOihjb25zdCBOU1RJRkZDb21w
cmVzc2lvbiAqKilsaXN0IGNvdW50OihOU0ludGVnZXIgKiludW1UeXBlczsKKyAoTlNTdHJpbmcg
Kilsb2NhbGl6ZWROYW1lRm9yVElGRkNvbXByZXNzaW9uVHlwZTooTlNUSUZGQ29tcHJlc3Npb24p
Y29tcHJlc3Npb247Ci0gKEJPT0wpY2FuQmVDb21wcmVzc2VkVXNpbmc6KE5TVElGRkNvbXByZXNz
aW9uKWNvbXByZXNzaW9uOwoKCgoKCi0gKHZvaWQpY29sb3JpemVCeU1hcHBpbmdHcmF5OihDR0Zs
b2F0KW1pZFBvaW50IHRvQ29sb3I6KE5TQ29sb3IgKiltaWRQb2ludENvbG9yIGJsYWNrTWFwcGlu
ZzooTlNDb2xvciAqKXNoYWRvd0NvbG9yIHdoaXRlTWFwcGluZzooTlNDb2xvciAqKWxpZ2h0Q29s
b3I7CgoKLSAoaWQpaW5pdEZvckluY3JlbWVudGFsTG9hZDsKLSAoTlNJbnRlZ2VyKWluY3JlbWVu
dGFsTG9hZEZyb21EYXRhOihOU0RhdGEqKWRhdGEgY29tcGxldGU6KEJPT0wpY29tcGxldGU7CgoK
Ci0gKHZvaWQpc2V0Q29sb3I6KE5TQ29sb3IqKWNvbG9yIGF0WDooTlNJbnRlZ2VyKXggeTooTlNJ
bnRlZ2VyKXk7Ci0gKE5TQ29sb3IqKWNvbG9yQXRYOihOU0ludGVnZXIpeCB5OihOU0ludGVnZXIp
eTsKCi0gKHZvaWQpZ2V0UGl4ZWw6KE5TVUludGVnZXJbXSlwIGF0WDooTlNJbnRlZ2VyKXggeToo
TlNJbnRlZ2VyKXk7Ci0gKHZvaWQpc2V0UGl4ZWw6KE5TVUludGVnZXJbXSlwIGF0WDooTlNJbnRl
Z2VyKXggeTooTlNJbnRlZ2VyKXk7CgoKCi0gKENHSW1hZ2VSZWYpQ0dJbWFnZTsKCgoKLSAoTlND
b2xvclNwYWNlICopY29sb3JTcGFjZSA7CgotIChOU0JpdG1hcEltYWdlUmVwICopYml0bWFwSW1h
Z2VSZXBCeUNvbnZlcnRpbmdUb0NvbG9yU3BhY2U6KE5TQ29sb3JTcGFjZSAqKXRhcmdldFNwYWNl
IHJlbmRlcmluZ0ludGVudDooTlNDb2xvclJlbmRlcmluZ0ludGVudClyZW5kZXJpbmdJbnRlbnQg
OwotIChOU0JpdG1hcEltYWdlUmVwICopYml0bWFwSW1hZ2VSZXBCeVJldGFnZ2luZ1dpdGhDb2xv
clNwYWNlOihOU0NvbG9yU3BhY2UgKiluZXdTcGFjZSA7CgpAZW5kCgoKQGludGVyZmFjZSBOU0Jp
dG1hcEltYWdlUmVwIChOU0JpdG1hcEltYWdlRmlsZVR5cGVFeHRlbnNpb25zKQoKKyAoTlNEYXRh
ICopcmVwcmVzZW50YXRpb25PZkltYWdlUmVwc0luQXJyYXk6KE5TQXJyYXkgKilpbWFnZVJlcHMg
dXNpbmdUeXBlOihOU0JpdG1hcEltYWdlRmlsZVR5cGUpc3RvcmFnZVR5cGUgcHJvcGVydGllczoo
TlNEaWN0aW9uYXJ5ICopcHJvcGVydGllczsKCi0gKE5TRGF0YSAqKXJlcHJlc2VudGF0aW9uVXNp
bmdUeXBlOihOU0JpdG1hcEltYWdlRmlsZVR5cGUpc3RvcmFnZVR5cGUgcHJvcGVydGllczooTlNE
aWN0aW9uYXJ5ICopcHJvcGVydGllczsKCi0gKHZvaWQpc2V0UHJvcGVydHk6KE5TU3RyaW5nICop
cHJvcGVydHkgd2l0aFZhbHVlOihpZCl2YWx1ZTsKLSAoaWQpdmFsdWVGb3JQcm9wZXJ0eTooTlNT
dHJpbmcgKilwcm9wZXJ0eTsKCkBlbmQKIyAzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNCcm93c2VyLmgiIDEgMwoj
IDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9O
U0Jyb3dzZXIuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9OU0RyYWdnaW5nLmgiIDEgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNEcmFnZ2luZy5oIiAzCkBjbGFzcyBO
U0ltYWdlLCBOU1Bhc3RlYm9hcmQsIE5TV2luZG93LCBOU1VSTCwgTlNBcnJheTsKCnR5cGVkZWYg
TlNVSW50ZWdlciBOU0RyYWdPcGVyYXRpb247CgplbnVtIHsKICAgIE5TRHJhZ09wZXJhdGlvbk5v
bmUgPSAwLAogICAgTlNEcmFnT3BlcmF0aW9uQ29weSA9IDEsCiAgICBOU0RyYWdPcGVyYXRpb25M
aW5rID0gMiwKICAgIE5TRHJhZ09wZXJhdGlvbkdlbmVyaWMgPSA0LAogICAgTlNEcmFnT3BlcmF0
aW9uUHJpdmF0ZSA9IDgsCiAgICBOU0RyYWdPcGVyYXRpb25BbGxfT2Jzb2xldGUgPSAxNSwKICAg
IE5TRHJhZ09wZXJhdGlvbk1vdmUgPSAxNiwKICAgIE5TRHJhZ09wZXJhdGlvbkRlbGV0ZSA9IDMy
LAogICAgTlNEcmFnT3BlcmF0aW9uRXZlcnkgPSAoOTIyMzM3MjAzNjg1NDc3NTgwN0wgKiAyVUwg
KyAxVUwpCn07CgoKI2RlZmluZSBOU0RyYWdPcGVyYXRpb25BbGwgTlNEcmFnT3BlcmF0aW9uQWxs
X09ic29sZXRlCgoKCgoKQHByb3RvY29sIE5TRHJhZ2dpbmdJbmZvCi0gKE5TV2luZG93ICopZHJh
Z2dpbmdEZXN0aW5hdGlvbldpbmRvdzsKLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzazsKLSAoTlNQb2ludClkcmFnZ2luZ0xvY2F0aW9uOwotIChOU1BvaW50KWRy
YWdnZWRJbWFnZUxvY2F0aW9uOwotIChOU0ltYWdlICopZHJhZ2dlZEltYWdlOwotIChOU1Bhc3Rl
Ym9hcmQgKilkcmFnZ2luZ1Bhc3RlYm9hcmQ7Ci0gKGlkKWRyYWdnaW5nU291cmNlOwotIChOU0lu
dGVnZXIpZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcjsKLSAodm9pZClzbGlkZURyYWdnZWRJbWFnZVRv
OihOU1BvaW50KXNjcmVlblBvaW50OwoKLSAoTlNBcnJheSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVz
RHJvcHBlZEF0RGVzdGluYXRpb246KE5TVVJMICopZHJvcERlc3RpbmF0aW9uOwoKQGVuZAoKCgoK
CgpAaW50ZXJmYWNlIE5TT2JqZWN0KE5TRHJhZ2dpbmdEZXN0aW5hdGlvbikKLSAoTlNEcmFnT3Bl
cmF0aW9uKWRyYWdnaW5nRW50ZXJlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilzZW5kZXI7Ci0gKE5T
RHJhZ09wZXJhdGlvbilkcmFnZ2luZ1VwZGF0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pc2VuZGVy
OwotICh2b2lkKWRyYWdnaW5nRXhpdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KXNlbmRlcjsKLSAo
Qk9PTClwcmVwYXJlRm9yRHJhZ09wZXJhdGlvbjooaWQgPE5TRHJhZ2dpbmdJbmZvPilzZW5kZXI7
Ci0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlkIDxOU0RyYWdnaW5nSW5mbz4pc2VuZGVy
OwotICh2b2lkKWNvbmNsdWRlRHJhZ09wZXJhdGlvbjooaWQgPE5TRHJhZ2dpbmdJbmZvPilzZW5k
ZXI7CgotICh2b2lkKWRyYWdnaW5nRW5kZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pc2VuZGVyOwoK
Ci0gKEJPT0wpd2FudHNQZXJpb2RpY0RyYWdnaW5nVXBkYXRlczsKCkBlbmQKCgoKCgoKQGludGVy
ZmFjZSBOU09iamVjdChOU0RyYWdnaW5nU291cmNlKQotIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTG9jYWw6KEJPT0wpZmxhZzsKCi0gKE5TQXJyYXkgKilu
YW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0
aW5hdGlvbjsKCi0gKHZvaWQpZHJhZ2dlZEltYWdlOihOU0ltYWdlICopaW1hZ2UgYmVnYW5BdDoo
TlNQb2ludClzY3JlZW5Qb2ludDsKLSAodm9pZClkcmFnZ2VkSW1hZ2U6KE5TSW1hZ2UgKilpbWFn
ZSBlbmRlZEF0OihOU1BvaW50KXNjcmVlblBvaW50IG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9u
KW9wZXJhdGlvbjsKLSAodm9pZClkcmFnZ2VkSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBtb3ZlZFRv
OihOU1BvaW50KXNjcmVlblBvaW50OwotIChCT09MKWlnbm9yZU1vZGlmaWVyS2V5c1doaWxlRHJh
Z2dpbmc7CkBlbmQKCkBpbnRlcmZhY2UgTlNPYmplY3QoTlNEcmFnZ2luZ1NvdXJjZURlcHJlY2F0
ZWQpCgotICh2b2lkKWRyYWdnZWRJbWFnZTooTlNJbWFnZSAqKWltYWdlIGVuZGVkQXQ6KE5TUG9p
bnQpc2NyZWVuUG9pbnQgZGVwb3NpdGVkOihCT09MKWZsYWcgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwpAZW5kCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9OU0Jyb3dzZXIuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVmlld0NvbnRyb2xsZXIuaCIgMSAzCiMg
MTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9O
U1ZpZXdDb250cm9sbGVyLmgiIDMKQGNsYXNzIE5TQXJyYXksIE5TQnVuZGxlLCBOU1BvaW50ZXJB
cnJheSwgTlNWaWV3OwoKQGludGVyZmFjZSBOU1ZpZXdDb250cm9sbGVyIDogTlNSZXNwb25kZXIK
CjxOU0NvZGluZz4KCnsKICAgIEBwcml2YXRlCiAgICBOU1N0cmluZyAqX25pYk5hbWU7CiAgICBO
U0J1bmRsZSAqX25pYkJ1bmRsZTsKICAgIGlkIF9yZXByZXNlbnRlZE9iamVjdDsKICAgIE5TU3Ry
aW5nICpfdGl0bGU7CiAgICBOU1ZpZXcgKnZpZXc7CiAgICBOU0FycmF5ICpfdG9wTGV2ZWxPYmpl
Y3RzOwogICAgTlNQb2ludGVyQXJyYXkgKl9lZGl0b3JzOwogICAgaWQgX2F1dG91bmJpbmRlcjsK
ICAgIE5TU3RyaW5nICpfZGVzaWduTmliQnVuZGxlSWRlbnRpZmllcjsKICAgIGlkIF9yZXNlcnZl
ZFsyXTsKfQoKCgotIChpZClpbml0V2l0aE5pYk5hbWU6KE5TU3RyaW5nICopbmliTmFtZU9yTmls
IGJ1bmRsZTooTlNCdW5kbGUgKiluaWJCdW5kbGVPck5pbDsKCgoKLSAodm9pZClzZXRSZXByZXNl
bnRlZE9iamVjdDooaWQpcmVwcmVzZW50ZWRPYmplY3Q7Ci0gKGlkKXJlcHJlc2VudGVkT2JqZWN0
OwoKCgotICh2b2lkKXNldFRpdGxlOihOU1N0cmluZyAqKXRpdGxlOwotIChOU1N0cmluZyAqKXRp
dGxlOwoKCgotIChOU1ZpZXcgKil2aWV3OwoKCgotICh2b2lkKWxvYWRWaWV3OwoKCgotIChOU1N0
cmluZyAqKW5pYk5hbWU7Ci0gKE5TQnVuZGxlICopbmliQnVuZGxlOwoKCgotICh2b2lkKXNldFZp
ZXc6KE5TVmlldyAqKXZpZXc7CgoKCi0gKHZvaWQpY29tbWl0RWRpdGluZ1dpdGhEZWxlZ2F0ZToo
aWQpZGVsZWdhdGUgZGlkQ29tbWl0U2VsZWN0b3I6KFNFTClkaWRDb21taXRTZWxlY3RvciBjb250
ZXh0SW5mbzoodm9pZCAqKWNvbnRleHRJbmZvOwotIChCT09MKWNvbW1pdEVkaXRpbmc7Ci0gKHZv
aWQpZGlzY2FyZEVkaXRpbmc7CgpAZW5kCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0Jyb3dzZXIuaCIgMiAzCgojZGVmaW5lIE5TQXBw
S2l0VmVyc2lvbk51bWJlcldpdGhDb250aW51b3VzU2Nyb2xsaW5nQnJvd3NlciA2ODAuMAojZGVm
aW5lIE5TQXBwS2l0VmVyc2lvbk51bWJlcldpdGhDb2x1bW5SZXNpemluZ0Jyb3dzZXIgNjg1LjAK
CkBjbGFzcyBOU01hdHJpeCwgTlNTY3JvbGxlciwgTlNNdXRhYmxlQXJyYXksIE5TSW5kZXhTZXQ7
CkBwcm90b2NvbCBOU0Jyb3dzZXJEZWxlZ2F0ZTsKCnR5cGVkZWYgc3RydWN0IF9fQnJmbGFncyB7
CiMgNDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9OU0Jyb3dzZXIuaCIgMwogICAgdW5zaWduZWQgaW50IGZpcnN0VmlzaWJsZUNhbGN1bGF0aW9u
RGlzYWJsZWQ6MTsKICAgIHVuc2lnbmVkIGludCBwcmVmZXJzQWxsQ29sdW1uVXNlclJlc2l6aW5n
OjE7CiAgICB1bnNpZ25lZCBpbnQgdXNlc1NtYWxsU2Nyb2xsZXJzOjE7CiAgICB1bnNpZ25lZCBp
bnQgdXNlc1NtYWxsU2l6ZVRpdGxlRm9udDoxOwogICAgdW5zaWduZWQgaW50IGFjdGlvbk5lZWRz
VG9CZVNlbnQ6MTsKICAgIHVuc2lnbmVkIGludCBhY2NlcHRzRmlyc3RNb3VzZToxOwogICAgdW5z
aWduZWQgaW50IHJlZnVzZXNGaXJzdFJlc3BvbmRlcjoxOwogICAgdW5zaWduZWQgaW50IGRpc2Fi
bGVDb21wb3NpdGluZzo2OwogICAgdW5zaWduZWQgaW50IGRlbGVnYXRlU2VsZWN0c0NlbGxzQnlS
b3c6MTsKICAgIHVuc2lnbmVkIGludCBhbGxvd3NJbmNyZW1lbnRhbFNlYXJjaGluZzoxOwogICAg
dW5zaWduZWQgaW50IHRpbWU6MTsKICAgIHVuc2lnbmVkIGludCBoYXNIb3Jpem9udGFsU2Nyb2xs
ZXI6MTsKICAgIHVuc2lnbmVkIGludCBwcm9oaWJpdEVtcHR5U2VsOjE7CiAgICB1bnNpZ25lZCBp
bnQgc2VuZEFjdGlvbk9uQXJyb3dLZXlzOjE7CiAgICB1bnNpZ25lZCBpbnQgZG9udERyYXdUaXRs
ZXM6MTsKICAgIHVuc2lnbmVkIGludCBhY2NlcHRBcnJvd0tleXM6MTsKICAgIHVuc2lnbmVkIGlu
dCBkZWxlZ2F0ZVZhbGlkYXRlc0NvbHVtbnM6MTsKICAgIHVuc2lnbmVkIGludCBkZWxlZ2F0ZURv
ZXNOb3RDcmVhdGVSb3dzSW5NYXRyaXg6MTsKICAgIHVuc2lnbmVkIGludCBkZWxlZ2F0ZVNlbGVj
dHNDZWxsc0J5U3RyaW5nOjE7CiAgICB1bnNpZ25lZCBpbnQgZGVsZWdhdGVTZXRzVGl0bGVzOjE7
CiAgICB1bnNpZ25lZCBpbnQgZGVsZWdhdGVJbXBsZW1lbnRzV2lsbERpc3BsYXlDZWxsOjE7CiAg
ICB1bnNpZ25lZCBpbnQgc2VwYXJhdGVDb2x1bW5zOjE7CiAgICB1bnNpZ25lZCBpbnQgdGl0bGVG
cm9tUHJldmlvdXM6MTsKICAgIHVuc2lnbmVkIGludCBpc1RpdGxlZDoxOwogICAgdW5zaWduZWQg
aW50IHJldXNlQ29sdW1uczoxOwogICAgdW5zaWduZWQgaW50IGFsbG93c0JyYW5jaFNlbGVjdGlv
bjoxOwogICAgdW5zaWduZWQgaW50IGFsbG93c011bHRpcGxlU2VsZWN0aW9uOjE7Cgp9IF9CcmZs
YWdzOwoKCgplbnVtIHsKCgogICAgTlNCcm93c2VyTm9Db2x1bW5SZXNpemluZyA9IDAsCgoKCiAg
ICBOU0Jyb3dzZXJBdXRvQ29sdW1uUmVzaXppbmcgPSAxLAoKCgogICAgTlNCcm93c2VyVXNlckNv
bHVtblJlc2l6aW5nID0gMiwKfTsKCgoKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TQnJvd3NlckNvbHVt
blJlc2l6aW5nVHlwZTsKCgoKCgplbnVtIHsKICAgIE5TQnJvd3NlckRyb3BPbiwKICAgIE5TQnJv
d3NlckRyb3BBYm92ZSwKfTsKCgoKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TQnJvd3NlckRyb3BPcGVy
YXRpb247CgpAaW50ZXJmYWNlIE5TQnJvd3NlciA6IE5TQ29udHJvbAp7CgogICAgaWQgX3Rhcmdl
dDsKICAgIFNFTCBfYWN0aW9uOwogICAgaWQgX2RlbGVnYXRlOwogICAgU0VMIF9kb3VibGVBY3Rp
b247CiAgICBDbGFzcyBfbWF0cml4Q2xhc3M7CiAgICBpZCBfY2VsbFByb3RvdHlwZTsKICAgIE5T
U2l6ZSBfY29sdW1uU2l6ZTsKICAgIHNob3J0IF9udW1iZXJPZlZpc2libGVDb2x1bW5zOwogICAg
c2hvcnQgX21pbkNvbHVtbldpZHRoOwogICAgc2hvcnQgX2ZpcnN0VmlzaWJsZUNvbHVtbjsKICAg
IHNob3J0IF9tYXhWaXNpYmxlQ29sdW1uczsKICAgIE5TTXV0YWJsZUFycmF5ICpfdGl0bGVzOwog
ICAgTlNTdHJpbmcgKl9wYXRoU2VwYXJhdG9yOwogICAgTlNNdXRhYmxlQXJyYXkgKl9jb2x1bW5z
OwogICAgaWQgX2JyQXV4aWxpYXJ5U3RvcmFnZTsKICAgIE5TU3RyaW5nICpfZmlyc3RDb2x1bW5U
aXRsZTsKICAgIE5TU2Nyb2xsZXIgKl9zY3JvbGxlcjsKICAgIF9CcmZsYWdzIF9icmZsYWdzOwp9
CgorIChDbGFzcyljZWxsQ2xhc3M7CgotICh2b2lkKWxvYWRDb2x1bW5aZXJvOwotIChCT09MKWlz
TG9hZGVkOwoKLSAodm9pZClzZXREb3VibGVBY3Rpb246KFNFTClhU2VsZWN0b3I7Ci0gKFNFTClk
b3VibGVBY3Rpb247Ci0gKHZvaWQpc2V0TWF0cml4Q2xhc3M6KENsYXNzKWZhY3RvcnlJZDsKLSAo
Q2xhc3MpbWF0cml4Q2xhc3M7Ci0gKHZvaWQpc2V0Q2VsbENsYXNzOihDbGFzcylmYWN0b3J5SWQ7
Ci0gKHZvaWQpc2V0Q2VsbFByb3RvdHlwZTooTlNDZWxsICopYUNlbGw7Ci0gKGlkKWNlbGxQcm90
b3R5cGU7Ci0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxOU0Jyb3dzZXJEZWxlZ2F0ZT4pYW5PYmpl
Y3Q7Ci0gKGlkIDxOU0Jyb3dzZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7Ci0gKHZvaWQpc2V0UmV1c2Vz
Q29sdW1uczooQk9PTClmbGFnOwotIChCT09MKXJldXNlc0NvbHVtbnM7CgotICh2b2lkKXNldEhh
c0hvcml6b250YWxTY3JvbGxlcjooQk9PTClmbGFnOwotIChCT09MKWhhc0hvcml6b250YWxTY3Jv
bGxlcjsKLSAodm9pZClzZXRBdXRvaGlkZXNTY3JvbGxlcjooQk9PTClmbGFnIDsKLSAoQk9PTClh
dXRvaGlkZXNTY3JvbGxlciA7Ci0gKHZvaWQpc2V0U2VwYXJhdGVzQ29sdW1uczooQk9PTClmbGFn
OwotIChCT09MKXNlcGFyYXRlc0NvbHVtbnM7Ci0gKHZvaWQpc2V0VGl0bGVkOihCT09MKWZsYWc7
Ci0gKEJPT0wpaXNUaXRsZWQ7Ci0gKHZvaWQpc2V0TWluQ29sdW1uV2lkdGg6KENHRmxvYXQpY29s
dW1uV2lkdGg7Ci0gKENHRmxvYXQpbWluQ29sdW1uV2lkdGg7CgotICh2b2lkKXNldE1heFZpc2li
bGVDb2x1bW5zOihOU0ludGVnZXIpY29sdW1uQ291bnQ7Ci0gKE5TSW50ZWdlciltYXhWaXNpYmxl
Q29sdW1uczsKCi0gKHZvaWQpc2V0QWxsb3dzTXVsdGlwbGVTZWxlY3Rpb246KEJPT0wpZmxhZzsK
LSAoQk9PTClhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsKLSAodm9pZClzZXRBbGxvd3NCcmFuY2hT
ZWxlY3Rpb246KEJPT0wpZmxhZzsKLSAoQk9PTClhbGxvd3NCcmFuY2hTZWxlY3Rpb247Ci0gKHZv
aWQpc2V0QWxsb3dzRW1wdHlTZWxlY3Rpb246KEJPT0wpZmxhZzsKLSAoQk9PTClhbGxvd3NFbXB0
eVNlbGVjdGlvbjsKLSAodm9pZClzZXRUYWtlc1RpdGxlRnJvbVByZXZpb3VzQ29sdW1uOihCT09M
KWZsYWc7Ci0gKEJPT0wpdGFrZXNUaXRsZUZyb21QcmV2aW91c0NvbHVtbjsKCi0gKHZvaWQpc2V0
U2VuZHNBY3Rpb25PbkFycm93S2V5czooQk9PTClmbGFnOwotIChCT09MKXNlbmRzQWN0aW9uT25B
cnJvd0tleXM7CgoKCi0gKGlkKWl0ZW1BdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBh
dGggOwoKCgotIChpZClpdGVtQXRSb3c6KE5TSW50ZWdlcilyb3cgaW5Db2x1bW46KE5TSW50ZWdl
ciljb2x1bW4gOwoKCgotIChOU0luZGV4UGF0aCAqKWluZGV4UGF0aEZvckNvbHVtbjooTlNJbnRl
Z2VyKWNvbHVtbiA7CgoKCi0gKEJPT0wpaXNMZWFmSXRlbTooaWQpaXRlbSA7CgoKCi0gKHZvaWQp
cmVsb2FkRGF0YUZvclJvd0luZGV4ZXM6KE5TSW5kZXhTZXQgKilyb3dJbmRleGVzIGluQ29sdW1u
OihOU0ludGVnZXIpY29sdW1uIDsKCgoKLSAoaWQpcGFyZW50Rm9ySXRlbXNJbkNvbHVtbjooTlNJ
bnRlZ2VyKWNvbHVtbiA7CgoKCi0gKHZvaWQpc2Nyb2xsUm93VG9WaXNpYmxlOihOU0ludGVnZXIp
cm93IGluQ29sdW1uOihOU0ludGVnZXIpY29sdW1uIDsKCi0gKHZvaWQpc2V0VGl0bGU6KE5TU3Ry
aW5nICopYVN0cmluZyBvZkNvbHVtbjooTlNJbnRlZ2VyKWNvbHVtbjsKLSAoTlNTdHJpbmcgKil0
aXRsZU9mQ29sdW1uOihOU0ludGVnZXIpY29sdW1uOwotICh2b2lkKXNldFBhdGhTZXBhcmF0b3I6
KE5TU3RyaW5nICopbmV3U3RyaW5nOwotIChOU1N0cmluZyAqKXBhdGhTZXBhcmF0b3I7Ci0gKEJP
T0wpc2V0UGF0aDooTlNTdHJpbmcgKilwYXRoOwotIChOU1N0cmluZyAqKXBhdGg7Ci0gKE5TU3Ry
aW5nICopcGF0aFRvQ29sdW1uOihOU0ludGVnZXIpY29sdW1uOwoKCgotIChOU0ludGVnZXIpY2xp
Y2tlZENvbHVtbiA7Ci0gKE5TSW50ZWdlciljbGlja2VkUm93IDsKCi0gKE5TSW50ZWdlcilzZWxl
Y3RlZENvbHVtbjsKCgoKLSAoaWQpc2VsZWN0ZWRDZWxsOwotIChpZClzZWxlY3RlZENlbGxJbkNv
bHVtbjooTlNJbnRlZ2VyKWNvbHVtbjsKCgoKLSAoTlNBcnJheSAqKXNlbGVjdGVkQ2VsbHM7Cgot
ICh2b2lkKXNlbGVjdFJvdzooTlNJbnRlZ2VyKXJvdyBpbkNvbHVtbjooTlNJbnRlZ2VyKWNvbHVt
bjsKCi0gKE5TSW50ZWdlcilzZWxlY3RlZFJvd0luQ29sdW1uOihOU0ludGVnZXIpY29sdW1uOwoK
CgotIChOU0luZGV4UGF0aCAqKXNlbGVjdGlvbkluZGV4UGF0aCA7CgoKCi0gKHZvaWQpc2V0U2Vs
ZWN0aW9uSW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKXBhdGggOwoKCgotIChOU0FycmF5ICopc2Vs
ZWN0aW9uSW5kZXhQYXRocyA7CgoKCi0gKHZvaWQpc2V0U2VsZWN0aW9uSW5kZXhQYXRoczooTlNB
cnJheSAqKXBhdGhzIDsKCgoKLSAodm9pZClzZWxlY3RSb3dJbmRleGVzOihOU0luZGV4U2V0ICop
aW5kZXhlcyBpbkNvbHVtbjooTlNJbnRlZ2VyKWNvbHVtbiA7CgoKCi0gKE5TSW5kZXhTZXQgKilz
ZWxlY3RlZFJvd0luZGV4ZXNJbkNvbHVtbjooTlNJbnRlZ2VyKWNvbHVtbiA7CgotICh2b2lkKXJl
bG9hZENvbHVtbjooTlNJbnRlZ2VyKWNvbHVtbjsKLSAodm9pZCl2YWxpZGF0ZVZpc2libGVDb2x1
bW5zOwotICh2b2lkKXNjcm9sbENvbHVtbnNSaWdodEJ5OihOU0ludGVnZXIpc2hpZnRBbW91bnQ7
Ci0gKHZvaWQpc2Nyb2xsQ29sdW1uc0xlZnRCeTooTlNJbnRlZ2VyKXNoaWZ0QW1vdW50OwotICh2
b2lkKXNjcm9sbENvbHVtblRvVmlzaWJsZTooTlNJbnRlZ2VyKWNvbHVtbjsKCgoKLSAoTlNJbnRl
Z2VyKWxhc3RDb2x1bW47CgoKCi0gKHZvaWQpc2V0TGFzdENvbHVtbjooTlNJbnRlZ2VyKWNvbHVt
bjsKCgoKLSAodm9pZClhZGRDb2x1bW47CgotIChOU0ludGVnZXIpbnVtYmVyT2ZWaXNpYmxlQ29s
dW1uczsKLSAoTlNJbnRlZ2VyKWZpcnN0VmlzaWJsZUNvbHVtbjsKLSAoTlNJbnRlZ2VyKWxhc3RW
aXNpYmxlQ29sdW1uOwoKCgotIChOU0ludGVnZXIpY29sdW1uT2ZNYXRyaXg6KE5TTWF0cml4ICop
bWF0cml4OwoKCgotIChOU01hdHJpeCAqKW1hdHJpeEluQ29sdW1uOihOU0ludGVnZXIpY29sdW1u
OwoKLSAoaWQpbG9hZGVkQ2VsbEF0Um93OihOU0ludGVnZXIpcm93IGNvbHVtbjooTlNJbnRlZ2Vy
KWNvbDsKLSAodm9pZClzZWxlY3RBbGw6KGlkKXNlbmRlcjsKLSAodm9pZCl0aWxlOwotICh2b2lk
KWRvQ2xpY2s6KGlkKXNlbmRlcjsKLSAodm9pZClkb0RvdWJsZUNsaWNrOihpZClzZW5kZXI7Ci0g
KEJPT0wpc2VuZEFjdGlvbjsKCi0gKE5TUmVjdCl0aXRsZUZyYW1lT2ZDb2x1bW46KE5TSW50ZWdl
ciljb2x1bW47Ci0gKHZvaWQpZHJhd1RpdGxlT2ZDb2x1bW46KE5TSW50ZWdlciljb2x1bW4gaW5S
ZWN0OihOU1JlY3QpYVJlY3Q7Ci0gKENHRmxvYXQpdGl0bGVIZWlnaHQ7Ci0gKE5TUmVjdClmcmFt
ZU9mQ29sdW1uOihOU0ludGVnZXIpY29sdW1uOwotIChOU1JlY3QpZnJhbWVPZkluc2lkZU9mQ29s
dW1uOihOU0ludGVnZXIpY29sdW1uOwoKCgotIChOU1JlY3QpZnJhbWVPZlJvdzooTlNJbnRlZ2Vy
KXJvdyBpbkNvbHVtbjooTlNJbnRlZ2VyKWNvbHVtbiA7CgoKCi0gKEJPT0wpZ2V0Um93OihOU0lu
dGVnZXIgKilyb3cgY29sdW1uOihOU0ludGVnZXIgKiljb2x1bW4gZm9yUG9pbnQ6KE5TUG9pbnQp
cG9pbnQgOwoKCgotIChDR0Zsb2F0KWNvbHVtbldpZHRoRm9yQ29sdW1uQ29udGVudFdpZHRoOihD
R0Zsb2F0KWNvbHVtbkNvbnRlbnRXaWR0aCA7Ci0gKENHRmxvYXQpY29sdW1uQ29udGVudFdpZHRo
Rm9yQ29sdW1uV2lkdGg6KENHRmxvYXQpY29sdW1uV2lkdGggOwoKCgotICh2b2lkKXNldENvbHVt
blJlc2l6aW5nVHlwZTooTlNCcm93c2VyQ29sdW1uUmVzaXppbmdUeXBlKWNvbHVtblJlc2l6aW5n
VHlwZSA7Ci0gKE5TQnJvd3NlckNvbHVtblJlc2l6aW5nVHlwZSljb2x1bW5SZXNpemluZ1R5cGUg
OwoKCgotICh2b2lkKXNldFByZWZlcnNBbGxDb2x1bW5Vc2VyUmVzaXppbmc6KEJPT0wpcHJlZmVy
c0FsbENvbHVtblJlc2l6aW5nIDsKLSAoQk9PTClwcmVmZXJzQWxsQ29sdW1uVXNlclJlc2l6aW5n
IDsKCgoKLSAodm9pZClzZXRXaWR0aDooQ0dGbG9hdCljb2x1bW5XaWR0aCBvZkNvbHVtbjooTlNJ
bnRlZ2VyKWNvbHVtbkluZGV4IDsKLSAoQ0dGbG9hdCl3aWR0aE9mQ29sdW1uOihOU0ludGVnZXIp
Y29sdW1uIDsKCgoKLSAodm9pZClzZXRSb3dIZWlnaHQ6KENHRmxvYXQpaGVpZ2h0IDsKLSAoQ0dG
bG9hdClyb3dIZWlnaHQgOwoKCgotICh2b2lkKW5vdGVIZWlnaHRPZlJvd3NXaXRoSW5kZXhlc0No
YW5nZWQ6KE5TSW5kZXhTZXQgKilpbmRleFNldCBpbkNvbHVtbjooTlNJbnRlZ2VyKWNvbHVtbklu
ZGV4IDsKCgoKCi0gKHZvaWQpc2V0RGVmYXVsdENvbHVtbldpZHRoOihDR0Zsb2F0KWNvbHVtbldp
ZHRoIDsKLSAoQ0dGbG9hdClkZWZhdWx0Q29sdW1uV2lkdGggOwoKCgotICh2b2lkKXNldENvbHVt
bnNBdXRvc2F2ZU5hbWU6KE5TU3RyaW5nICopbmFtZSA7Ci0gKE5TU3RyaW5nICopY29sdW1uc0F1
dG9zYXZlTmFtZSA7CgoKCisgKHZvaWQpcmVtb3ZlU2F2ZWRDb2x1bW5zV2l0aEF1dG9zYXZlTmFt
ZTooTlNTdHJpbmcgKiluYW1lIDsKCgogICAgICAgCiAgICAgICAKCgoKLSAoQk9PTCljYW5EcmFn
Um93c1dpdGhJbmRleGVzOihOU0luZGV4U2V0ICopcm93SW5kZXhlcyBpbkNvbHVtbjooTlNJbnRl
Z2VyKWNvbHVtbiB3aXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudCA7CgoKCi0gKE5TSW1hZ2UgKilk
cmFnZ2luZ0ltYWdlRm9yUm93c1dpdGhJbmRleGVzOihOU0luZGV4U2V0ICopcm93SW5kZXhlcyBp
bkNvbHVtbjooTlNJbnRlZ2VyKWNvbHVtbiB3aXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudCBvZmZz
ZXQ6KE5TUG9pbnRQb2ludGVyKWRyYWdJbWFnZU9mZnNldCA7CgoKCi0gKHZvaWQpc2V0RHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrOihOU0RyYWdPcGVyYXRpb24pbWFzayBmb3JMb2NhbDooQk9P
TClpc0xvY2FsIDsKCiAgICAgICAKCgoKLSAoQk9PTClhbGxvd3NUeXBlU2VsZWN0IDsKLSAodm9p
ZClzZXRBbGxvd3NUeXBlU2VsZWN0OihCT09MKXZhbHVlIDsKCgoKLSAodm9pZClzZXRCYWNrZ3Jv
dW5kQ29sb3I6KE5TQ29sb3IgKiljb2xvciA7Ci0gKE5TQ29sb3IgKiliYWNrZ3JvdW5kQ29sb3Ig
OwoKCgotICh2b2lkKWVkaXRJdGVtQXRJbmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRo
IHdpdGhFdmVudDooTlNFdmVudCAqKXRoZUV2ZW50IHNlbGVjdDooQk9PTClzZWxlY3QgOwoKQGVu
ZAoKICAgICAgIAogICAgICAgCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQnJvd3NlckNvbHVt
bkNvbmZpZ3VyYXRpb25EaWRDaGFuZ2VOb3RpZmljYXRpb24gOwoKICAgICAgIAogICAgICAgCgpA
cHJvdG9jb2wgTlNCcm93c2VyRGVsZWdhdGUgPE5TT2JqZWN0PgpAb3B0aW9uYWwKCgoKCgoKCi0g
KE5TSW50ZWdlcilicm93c2VyOihOU0Jyb3dzZXIgKilzZW5kZXIgbnVtYmVyT2ZSb3dzSW5Db2x1
bW46KE5TSW50ZWdlciljb2x1bW47CgoKCi0gKHZvaWQpYnJvd3NlcjooTlNCcm93c2VyICopc2Vu
ZGVyIGNyZWF0ZVJvd3NGb3JDb2x1bW46KE5TSW50ZWdlciljb2x1bW4gaW5NYXRyaXg6KE5TTWF0
cml4ICopbWF0cml4OwoKICAgICAgIAoKCgoKCi0gKE5TSW50ZWdlcilicm93c2VyOihOU0Jyb3dz
ZXIgKilicm93c2VyIG51bWJlck9mQ2hpbGRyZW5PZkl0ZW06KGlkKWl0ZW0gOwoKCgotIChpZCli
cm93c2VyOihOU0Jyb3dzZXIgKilicm93c2VyIGNoaWxkOihOU0ludGVnZXIpaW5kZXggb2ZJdGVt
OihpZClpdGVtIDsKCgoKLSAoQk9PTClicm93c2VyOihOU0Jyb3dzZXIgKilicm93c2VyIGlzTGVh
Zkl0ZW06KGlkKWl0ZW0gOwoKCgotIChpZClicm93c2VyOihOU0Jyb3dzZXIgKilicm93c2VyIG9i
amVjdFZhbHVlRm9ySXRlbTooaWQpaXRlbSA7CgoKCgotIChDR0Zsb2F0KWJyb3dzZXI6KE5TQnJv
d3NlciAqKWJyb3dzZXIgaGVpZ2h0T2ZSb3c6KE5TSW50ZWdlcilyb3cgaW5Db2x1bW46KE5TSW50
ZWdlciljb2x1bW5JbmRleCA7CgogICAgICAgCgoKCgotIChpZClyb290SXRlbUZvckJyb3dzZXI6
KE5TQnJvd3NlciAqKWJyb3dzZXIgOwoKCgoKLSAodm9pZClicm93c2VyOihOU0Jyb3dzZXIgKili
cm93c2VyIHNldE9iamVjdFZhbHVlOihpZClvYmplY3QgZm9ySXRlbTooaWQpaXRlbSA7CgoKCgot
IChCT09MKWJyb3dzZXI6KE5TQnJvd3NlciAqKWJyb3dzZXIgc2hvdWxkRWRpdEl0ZW06KGlkKWl0
ZW0gOwoKICAgICAgIAoKCgoKLSAodm9pZClicm93c2VyOihOU0Jyb3dzZXIgKilzZW5kZXIgd2ls
bERpc3BsYXlDZWxsOihpZCljZWxsIGF0Um93OihOU0ludGVnZXIpcm93IGNvbHVtbjooTlNJbnRl
Z2VyKWNvbHVtbjsKCi0gKE5TU3RyaW5nICopYnJvd3NlcjooTlNCcm93c2VyICopc2VuZGVyIHRp
dGxlT2ZDb2x1bW46KE5TSW50ZWdlciljb2x1bW47CgoKCi0gKEJPT0wpYnJvd3NlcjooTlNCcm93
c2VyICopc2VuZGVyIHNlbGVjdENlbGxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXRpdGxlIGluQ29s
dW1uOihOU0ludGVnZXIpY29sdW1uOwoKCgotIChCT09MKWJyb3dzZXI6KE5TQnJvd3NlciAqKXNl
bmRlciBzZWxlY3RSb3c6KE5TSW50ZWdlcilyb3cgaW5Db2x1bW46KE5TSW50ZWdlciljb2x1bW47
CgoKCi0gKEJPT0wpYnJvd3NlcjooTlNCcm93c2VyICopc2VuZGVyIGlzQ29sdW1uVmFsaWQ6KE5T
SW50ZWdlciljb2x1bW47CgotICh2b2lkKWJyb3dzZXJXaWxsU2Nyb2xsOihOU0Jyb3dzZXIgKilz
ZW5kZXI7Ci0gKHZvaWQpYnJvd3NlckRpZFNjcm9sbDooTlNCcm93c2VyICopc2VuZGVyOwojIDQ4
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05T
QnJvd3Nlci5oIiAzCi0gKENHRmxvYXQpYnJvd3NlcjooTlNCcm93c2VyICopYnJvd3NlciBzaG91
bGRTaXplQ29sdW1uOihOU0ludGVnZXIpY29sdW1uSW5kZXggZm9yVXNlclJlc2l6ZTooQk9PTClm
b3JVc2VyUmVzaXplIHRvV2lkdGg6KENHRmxvYXQpc3VnZ2VzdGVkV2lkdGggOwoKCgoKLSAoQ0dG
bG9hdClicm93c2VyOihOU0Jyb3dzZXIgKilicm93c2VyIHNpemVUb0ZpdFdpZHRoT2ZDb2x1bW46
KE5TSW50ZWdlciljb2x1bW5JbmRleCA7CgoKCgotICh2b2lkKWJyb3dzZXJDb2x1bW5Db25maWd1
cmF0aW9uRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbiA7CgoKCgotIChC
T09MKWJyb3dzZXI6KE5TQnJvd3NlciAqKWJyb3dzZXIgc2hvdWxkU2hvd0NlbGxFeHBhbnNpb25G
b3JSb3c6KE5TSW50ZWdlcilyb3cgY29sdW1uOihOU0ludGVnZXIpY29sdW1uIDsKCgogICAgICAg
CiAgICAgICAKCiAgICAgICAKCgoKLSAoQk9PTClicm93c2VyOihOU0Jyb3dzZXIgKilicm93c2Vy
IHdyaXRlUm93c1dpdGhJbmRleGVzOihOU0luZGV4U2V0ICopcm93SW5kZXhlcyBpbkNvbHVtbjoo
TlNJbnRlZ2VyKWNvbHVtbiB0b1Bhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQg
OwoKCgotIChOU0FycmF5ICopYnJvd3NlcjooTlNCcm93c2VyICopYnJvd3NlciBuYW1lc09mUHJv
bWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0aW5hdGlvbiBm
b3JEcmFnZ2VkUm93c1dpdGhJbmRleGVzOihOU0luZGV4U2V0ICopcm93SW5kZXhlcyBpbkNvbHVt
bjooTlNJbnRlZ2VyKWNvbHVtbiA7CgoKCi0gKEJPT0wpYnJvd3NlcjooTlNCcm93c2VyICopYnJv
d3NlciBjYW5EcmFnUm93c1dpdGhJbmRleGVzOihOU0luZGV4U2V0ICopcm93SW5kZXhlcyBpbkNv
bHVtbjooTlNJbnRlZ2VyKWNvbHVtbiB3aXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudCA7CgoKCi0g
KE5TSW1hZ2UgKilicm93c2VyOihOU0Jyb3dzZXIgKilicm93c2VyIGRyYWdnaW5nSW1hZ2VGb3JS
b3dzV2l0aEluZGV4ZXM6KE5TSW5kZXhTZXQgKilyb3dJbmRleGVzIGluQ29sdW1uOihOU0ludGVn
ZXIpY29sdW1uIHdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50IG9mZnNldDooTlNQb2ludFBvaW50
ZXIpZHJhZ0ltYWdlT2Zmc2V0IDsKCiAgICAgICAKCgoKCgoKCi0gKE5TRHJhZ09wZXJhdGlvbili
cm93c2VyOihOU0Jyb3dzZXIgKilicm93c2VyIHZhbGlkYXRlRHJvcDooaWQgPE5TRHJhZ2dpbmdJ
bmZvPilpbmZvIHByb3Bvc2VkUm93OihOU0ludGVnZXIgKilyb3cgY29sdW1uOihOU0ludGVnZXIg
Kiljb2x1bW4gZHJvcE9wZXJhdGlvbjooTlNCcm93c2VyRHJvcE9wZXJhdGlvbiAqKWRyb3BPcGVy
YXRpb24gOwoKCgotIChCT09MKWJyb3dzZXI6KE5TQnJvd3NlciAqKWJyb3dzZXIgYWNjZXB0RHJv
cDooaWQgPE5TRHJhZ2dpbmdJbmZvPilpbmZvIGF0Um93OihOU0ludGVnZXIpcm93IGNvbHVtbjoo
TlNJbnRlZ2VyKWNvbHVtbiBkcm9wT3BlcmF0aW9uOihOU0Jyb3dzZXJEcm9wT3BlcmF0aW9uKWRy
b3BPcGVyYXRpb24gOwoKICAgICAgIAoKICAgICAgIAoKCgoKLSAoTlNTdHJpbmcgKilicm93c2Vy
OihOU0Jyb3dzZXIgKilicm93c2VyIHR5cGVTZWxlY3RTdHJpbmdGb3JSb3c6KE5TSW50ZWdlcily
b3cgaW5Db2x1bW46KE5TSW50ZWdlciljb2x1bW4gOwoKCgoKLSAoQk9PTClicm93c2VyOihOU0Jy
b3dzZXIgKilicm93c2VyIHNob3VsZFR5cGVTZWxlY3RGb3JFdmVudDooTlNFdmVudCAqKWV2ZW50
IHdpdGhDdXJyZW50U2VhcmNoU3RyaW5nOihOU1N0cmluZyAqKXNlYXJjaFN0cmluZyA7CgoKCgot
IChOU0ludGVnZXIpYnJvd3NlcjooTlNCcm93c2VyICopYnJvd3NlciBuZXh0VHlwZVNlbGVjdE1h
dGNoRnJvbVJvdzooTlNJbnRlZ2VyKXN0YXJ0Um93IHRvUm93OihOU0ludGVnZXIpZW5kUm93IGlu
Q29sdW1uOihOU0ludGVnZXIpY29sdW1uIGZvclN0cmluZzooTlNTdHJpbmcgKilzZWFyY2hTdHJp
bmcgOwoKICAgICAgIAoKCgoKLSAoTlNWaWV3Q29udHJvbGxlciAqKWJyb3dzZXI6KE5TQnJvd3Nl
ciAqKWJyb3dzZXIgcHJldmlld1ZpZXdDb250cm9sbGVyRm9yTGVhZkl0ZW06KGlkKWl0ZW0gOwoK
CgoKLSAoTlNWaWV3Q29udHJvbGxlciAqKWJyb3dzZXI6KE5TQnJvd3NlciAqKWJyb3dzZXIgaGVh
ZGVyVmlld0NvbnRyb2xsZXJGb3JJdGVtOihpZClpdGVtIDsKCgoKLSAodm9pZClicm93c2VyOihO
U0Jyb3dzZXIgKilicm93c2VyIGRpZENoYW5nZUxhc3RDb2x1bW46KE5TSW50ZWdlcilvbGRMYXN0
Q29sdW1uIHRvQ29sdW1uOihOU0ludGVnZXIpY29sdW1uOwoKCgotIChOU0luZGV4U2V0ICopYnJv
d3NlcjooTlNCcm93c2VyICopYnJvd3NlciBzZWxlY3Rpb25JbmRleGVzRm9yUHJvcG9zZWRTZWxl
Y3Rpb246KE5TSW5kZXhTZXQgKilwcm9wb3NlZFNlbGVjdGlvbkluZGV4ZXMgaW5Db2x1bW46KE5T
SW50ZWdlciljb2x1bW4gOwoKQGVuZAoKICAgICAgIAogICAgICAgCgpAaW50ZXJmYWNlIE5TQnJv
d3NlcihOU0RlcHJlY2F0ZWQpCgoKCi0gKHZvaWQpc2V0QWNjZXB0c0Fycm93S2V5czooQk9PTClm
bGFnIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoQk9PTClhY2NlcHRzQXJyb3dLZXlz
IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKLSAodm9pZClkaXNwbGF5Q29sdW1uOihO
U0ludGVnZXIpY29sdW1uIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKLSAodm9pZClk
aXNwbGF5QWxsQ29sdW1ucyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCi0gKHZvaWQp
c2Nyb2xsVmlhU2Nyb2xsZXI6KE5TU2Nyb2xsZXIgKilzZW5kZXIgX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwoKCgotICh2b2lkKXVwZGF0ZVNjcm9sbGVyIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKCkBlbmQKIyA0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZy
YW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNCcm93c2VyQ2VsbC5oIiAxIDMKIyAxMCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQnJv
d3NlckNlbGwuaCIgMwpAY2xhc3MgTlNJbWFnZTsKCkBpbnRlcmZhY2UgTlNCcm93c2VyQ2VsbCA6
IE5TQ2VsbAoKKyAoTlNJbWFnZSAqKWJyYW5jaEltYWdlOworIChOU0ltYWdlICopaGlnaGxpZ2h0
ZWRCcmFuY2hJbWFnZTsKCi0gKE5TQ29sb3IgKiloaWdobGlnaHRDb2xvckluVmlldzooTlNWaWV3
ICopY29udHJvbFZpZXc7CgotIChCT09MKWlzTGVhZjsKLSAodm9pZClzZXRMZWFmOihCT09MKWZs
YWc7Ci0gKEJPT0wpaXNMb2FkZWQ7Ci0gKHZvaWQpc2V0TG9hZGVkOihCT09MKWZsYWc7Ci0gKHZv
aWQpcmVzZXQ7Ci0gKHZvaWQpc2V0OwotICh2b2lkKXNldEltYWdlOihOU0ltYWdlICopaW1hZ2U7
Ci0gKE5TSW1hZ2UgKilpbWFnZTsKLSAodm9pZClzZXRBbHRlcm5hdGVJbWFnZTooTlNJbWFnZSAq
KW5ld0FsdEltYWdlOwotIChOU0ltYWdlICopYWx0ZXJuYXRlSW1hZ2U7CgpAZW5kCiMgNDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQu
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9I
ZWFkZXJzL05TQ2FjaGVkSW1hZ2VSZXAuaCIgMSAzCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0NhY2hlZEltYWdlUmVwLmgiIDMKQGNs
YXNzIE5TV2luZG93OwoKCkBpbnRlcmZhY2UgTlNDYWNoZWRJbWFnZVJlcCA6IE5TSW1hZ2VSZXAg
ewoKICAgIE5TUG9pbnQgX29yaWdpbjsKICAgIE5TV2luZG93ICpfd2luZG93OwogICAgdm9pZCAq
X2NhY2hlOwp9CgoKLSAoaWQpaW5pdFdpdGhXaW5kb3c6KE5TV2luZG93ICopd2luIHJlY3Q6KE5T
UmVjdClyZWN0IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgotIChpZClpbml0V2l0aFNp
emU6KE5TU2l6ZSlzaXplIGRlcHRoOihOU1dpbmRvd0RlcHRoKWRlcHRoIHNlcGFyYXRlOihCT09M
KWZsYWcgYWxwaGE6KEJPT0wpYWxwaGEgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKLSAo
TlNXaW5kb3cgKil3aW5kb3cgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChOU1JlY3Qp
cmVjdCBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgpAZW5kCiMgNDIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05T
Q0lJbWFnZVJlcC5oIiAxIDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0
LmZyYW1ld29yay9IZWFkZXJzL05TQ0lJbWFnZVJlcC5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DSUltYWdlLmgiIDEgMwoK
CgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29y
ay9IZWFkZXJzL0NWSW1hZ2VCdWZmZXIuaCIgMSAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWSW1hZ2VCdWZmZXIuaCIgMSAzCiMg
MTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVy
cy9DVkltYWdlQnVmZmVyLmgiIDMKI2RlZmluZSBfX0NPUkVWSURFT19DVklNQUdFQlVGRkVSX0hf
XyAxCiMgMjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsv
SGVhZGVycy9DVkltYWdlQnVmZmVyLmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZCdWZmZXIuaCIgMSAzCiMgMTkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVkJ1ZmZl
ci5oIiAzCiNkZWZpbmUgX19DT1JFVklERU9fQ1ZCVUZGRVJfSF9fIDEKCgoKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZCYXNlLmgi
IDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3Jr
L0hlYWRlcnMvQ1ZCYXNlLmgiIDMKI2RlZmluZSBfX0NPUkVWSURFT19DVkJBU0VfSF9fIDEKIyAy
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJz
L0NWQmFzZS5oIiAzCmV4dGVybiAiQyIgewoKCiNkZWZpbmUgQ09SRVZJREVPX1NVUFBPUlRTX09Q
RU5HTCAoVEFSR0VUX09TX01BQyAmJiAhIFRBUkdFVF9PU19JUEhPTkUpCiNkZWZpbmUgQ09SRVZJ
REVPX1NVUFBPUlRTX0NPTE9SU1BBQ0UgKFRBUkdFVF9PU19NQUMgJiYgISBUQVJHRVRfT1NfSVBI
T05FKQojZGVmaW5lIENPUkVWSURFT19TVVBQT1JUU19ESVNQTEFZTElOSyAoISBUQVJHRVRfT1Nf
SVBIT05FKQojZGVmaW5lIENPUkVWSURFT19TVVBQT1JUU19JT1NVUkZBQ0UgKFRBUkdFVF9PU19J
UEhPTkUgPyBUQVJHRVRfT1NfRU1CRURERUQgOiAoVEFSR0VUX09TX01BQyAmJiAoKE1BQ19PU19Y
X1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTA2MCkpKSkKCiNkZWZpbmUgQ1ZfRVhQT1JUIENGX0VY
UE9SVAojZGVmaW5lIENWX0lOTElORSBDRl9JTkxJTkUKCgoKCgoKdHlwZWRlZiB1aW50NjRfdCBD
Vk9wdGlvbkZsYWdzOwojIDY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8u
ZnJhbWV3b3JrL0hlYWRlcnMvQ1ZCYXNlLmgiIDMKc3RydWN0IENWU01QVEVUaW1lCnsKICAgIFNJ
bnQxNiBzdWJmcmFtZXM7CiAgICBTSW50MTYgc3ViZnJhbWVEaXZpc29yOwogICAgVUludDMyIGNv
dW50ZXI7CiAgICBVSW50MzIgdHlwZTsKICAgIFVJbnQzMiBmbGFnczsKICAgIFNJbnQxNiBob3Vy
czsKICAgIFNJbnQxNiBtaW51dGVzOwogICAgU0ludDE2IHNlY29uZHM7CiAgICBTSW50MTYgZnJh
bWVzOwp9Owp0eXBlZGVmIHN0cnVjdCBDVlNNUFRFVGltZSBDVlNNUFRFVGltZTsKIyAxMDMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVkJh
c2UuaCIgMwplbnVtCnsKICAgIGtDVlNNUFRFVGltZVR5cGUyNCA9IDAsCiAgICBrQ1ZTTVBURVRp
bWVUeXBlMjUgPSAxLAogICAga0NWU01QVEVUaW1lVHlwZTMwRHJvcCA9IDIsCiAgICBrQ1ZTTVBU
RVRpbWVUeXBlMzAgPSAzLAogICAga0NWU01QVEVUaW1lVHlwZTI5OTcgPSA0LAogICAga0NWU01Q
VEVUaW1lVHlwZTI5OTdEcm9wID0gNSwKICAgIGtDVlNNUFRFVGltZVR5cGU2MCA9IDYsCiAgICBr
Q1ZTTVBURVRpbWVUeXBlNTk5NCA9IDcKfTsKIyAxMjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVkJhc2UuaCIgMwplbnVtCnsKICAgIGtD
VlNNUFRFVGltZVZhbGlkID0gKDFMIDw8IDApLAogICAga0NWU01QVEVUaW1lUnVubmluZyA9ICgx
TCA8PCAxKQp9OwoKCmVudW0gewogICAga0NWVGltZUlzSW5kZWZpbml0ZSA9IDEgPDwgMAp9OwoK
dHlwZWRlZiBzdHJ1Y3QKewogICAgaW50NjRfdCB0aW1lVmFsdWU7CiAgICBpbnQzMl90IHRpbWVT
Y2FsZTsKICAgIGludDMyX3QgZmxhZ3M7Cn0gQ1ZUaW1lOwojIDE2OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWQmFzZS5oIiAzCnR5cGVk
ZWYgc3RydWN0CnsKICAgIHVpbnQzMl90IHZlcnNpb247CiAgICBpbnQzMl90IHZpZGVvVGltZVNj
YWxlOwogICAgaW50NjRfdCB2aWRlb1RpbWU7CiAgICB1aW50NjRfdCBob3N0VGltZTsKICAgIGRv
dWJsZSByYXRlU2NhbGFyOwogICAgaW50NjRfdCB2aWRlb1JlZnJlc2hQZXJpb2Q7CiAgICBDVlNN
UFRFVGltZSBzbXB0ZVRpbWU7CiAgICB1aW50NjRfdCBmbGFnczsKICAgIHVpbnQ2NF90IHJlc2Vy
dmVkOwp9IENWVGltZVN0YW1wOwoKCmVudW0KewogICAga0NWVGltZVN0YW1wVmlkZW9UaW1lVmFs
aWQgPSAoMUwgPDwgMCksCiAgICBrQ1ZUaW1lU3RhbXBIb3N0VGltZVZhbGlkID0gKDFMIDw8IDEp
LAogICAga0NWVGltZVN0YW1wU01QVEVUaW1lVmFsaWQgPSAoMUwgPDwgMiksCiAgICBrQ1ZUaW1l
U3RhbXBWaWRlb1JlZnJlc2hQZXJpb2RWYWxpZCA9ICgxTCA8PCAzKSwKICAgIGtDVlRpbWVTdGFt
cFJhdGVTY2FsYXJWYWxpZCA9ICgxTCA8PCA0KSwKCgogICAga0NWVGltZVN0YW1wVG9wRmllbGQg
PSAoMUwgPDwgMTYpLAogICAga0NWVGltZVN0YW1wQm90dG9tRmllbGQgPSAoMUwgPDwgMTcpCn07
CgoKZW51bQp7CiAgICBrQ1ZUaW1lU3RhbXBWaWRlb0hvc3RUaW1lVmFsaWQgPSAoa0NWVGltZVN0
YW1wVmlkZW9UaW1lVmFsaWQgfCBrQ1ZUaW1lU3RhbXBIb3N0VGltZVZhbGlkKSwKICAgIGtDVlRp
bWVTdGFtcElzSW50ZXJsYWNlZCA9IChrQ1ZUaW1lU3RhbXBUb3BGaWVsZCB8IGtDVlRpbWVTdGFt
cEJvdHRvbUZpZWxkKQp9OwoKZXh0ZXJuIGNvbnN0IENWVGltZSBrQ1ZaZXJvVGltZTsKZXh0ZXJu
IGNvbnN0IENWVGltZSBrQ1ZJbmRlZmluaXRlVGltZTsKCgp9CiMgMjQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVkJ1ZmZlci5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRl
cnMvQ1ZSZXR1cm4uaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVW
aWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlJldHVybi5oIiAzCiNkZWZpbmUgX19DT1JFVklERU9f
Q1ZSRVRVUk5fSF9fIDEKCgoKCgoKZXh0ZXJuICJDIiB7CiMgNTEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlJldHVybi5oIiAzCmVudW0g
X0NWUmV0dXJuCnsKICAgIGtDVlJldHVyblN1Y2Nlc3MgPSAwLAoKICAgIGtDVlJldHVybkZpcnN0
ID0gLTY2NjAsCgogICAga0NWUmV0dXJuRXJyb3IgPSBrQ1ZSZXR1cm5GaXJzdCwKICAgIGtDVlJl
dHVybkludmFsaWRBcmd1bWVudCA9IC02NjYxLAogICAga0NWUmV0dXJuQWxsb2NhdGlvbkZhaWxl
ZCA9IC02NjYyLAoKCiAgICBrQ1ZSZXR1cm5JbnZhbGlkRGlzcGxheSA9IC02NjcwLAogICAga0NW
UmV0dXJuRGlzcGxheUxpbmtBbHJlYWR5UnVubmluZyA9IC02NjcxLAogICAga0NWUmV0dXJuRGlz
cGxheUxpbmtOb3RSdW5uaW5nID0gLTY2NzIsCiAgICBrQ1ZSZXR1cm5EaXNwbGF5TGlua0NhbGxi
YWNrc05vdFNldCA9IC02NjczLAoKCiAgICBrQ1ZSZXR1cm5JbnZhbGlkUGl4ZWxGb3JtYXQgPSAt
NjY4MCwKICAgIGtDVlJldHVybkludmFsaWRTaXplID0gLTY2ODEsCiAgICBrQ1ZSZXR1cm5JbnZh
bGlkUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzID0gLTY2ODIsCiAgICBrQ1ZSZXR1cm5QaXhlbEJ1ZmZl
ck5vdE9wZW5HTENvbXBhdGlibGUgPSAtNjY4MywKCgogICAga0NWUmV0dXJuUG9vbEFsbG9jYXRp
b25GYWlsZWQgPSAtNjY5MCwKICAgIGtDVlJldHVybkludmFsaWRQb29sQXR0cmlidXRlcyA9IC02
NjkxLAoKICAgIGtDVlJldHVybkxhc3QgPSAtNjY5OQoKfTsKdHlwZWRlZiBpbnQzMl90IENWUmV0
dXJuOwoKCn0KIyAyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1l
d29yay9IZWFkZXJzL0NWQnVmZmVyLmgiIDIgMwoKCgoKCmV4dGVybiAiQyIgewoKCiAgICAgICAK
CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVkJ1ZmZlclByb3BhZ2F0ZWRBdHRhY2htZW50
c0tleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZCdWZmZXJOb25Qcm9wYWdhdGVkQXR0
YWNobWVudHNLZXkgOwoKICAgICAgIAoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVkJ1ZmZl
ck1vdmllVGltZUtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZCdWZmZXJUaW1lVmFs
dWVLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWQnVmZmVyVGltZVNjYWxlS2V5IDsK
CgogICAgICAgCgplbnVtIHsKIGtDVkF0dGFjaG1lbnRNb2RlX1Nob3VsZE5vdFByb3BhZ2F0ZSA9
IDAsCiBrQ1ZBdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUgPSAxCn07CnR5cGVkZWYgdWlu
dDMyX3QgQ1ZBdHRhY2htZW50TW9kZTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAq
Q1ZCdWZmZXJSZWY7CiMgNjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5m
cmFtZXdvcmsvSGVhZGVycy9DVkJ1ZmZlci5oIiAzCmV4dGVybiBDVkJ1ZmZlclJlZiBDVkJ1ZmZl
clJldGFpbihDVkJ1ZmZlclJlZiBidWZmZXIpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgQ1ZCdWZmZXJS
ZWxlYXNlKENWQnVmZmVyUmVmIGJ1ZmZlcikgOwoKICAgICAgIAojIDkwICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZCdWZmZXIuaCIgMwpl
eHRlcm4gdm9pZCBDVkJ1ZmZlclNldEF0dGFjaG1lbnQoQ1ZCdWZmZXJSZWYgYnVmZmVyLCBDRlN0
cmluZ1JlZiBrZXksIENGVHlwZVJlZiB2YWx1ZSwgQ1ZBdHRhY2htZW50TW9kZSBhdHRhY2htZW50
TW9kZSkgOwojIDEwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1l
d29yay9IZWFkZXJzL0NWQnVmZmVyLmgiIDMKZXh0ZXJuIENGVHlwZVJlZiBDVkJ1ZmZlckdldEF0
dGFjaG1lbnQoQ1ZCdWZmZXJSZWYgYnVmZmVyLCBDRlN0cmluZ1JlZiBrZXksIENWQXR0YWNobWVu
dE1vZGUgKmF0dGFjaG1lbnRNb2RlKSA7CiMgMTExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZCdWZmZXIuaCIgMwpleHRlcm4gdm9pZCBD
VkJ1ZmZlclJlbW92ZUF0dGFjaG1lbnQoQ1ZCdWZmZXJSZWYgYnVmZmVyLCBDRlN0cmluZ1JlZiBr
ZXkpIDsKCgoKCgoKCmV4dGVybiB2b2lkIENWQnVmZmVyUmVtb3ZlQWxsQXR0YWNobWVudHMoQ1ZC
dWZmZXJSZWYgYnVmZmVyKSA7CiMgMTI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
VmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZCdWZmZXIuaCIgMwpleHRlcm4gQ0ZEaWN0aW9uYXJ5
UmVmIENWQnVmZmVyR2V0QXR0YWNobWVudHMoQ1ZCdWZmZXJSZWYgYnVmZmVyLCBDVkF0dGFjaG1l
bnRNb2RlIGF0dGFjaG1lbnRNb2RlKSA7CgoKCgoKCgpleHRlcm4gdm9pZCBDVkJ1ZmZlclNldEF0
dGFjaG1lbnRzKENWQnVmZmVyUmVmIGJ1ZmZlciwgQ0ZEaWN0aW9uYXJ5UmVmIHRoZUF0dGFjaG1l
bnRzLCBDVkF0dGFjaG1lbnRNb2RlIGF0dGFjaG1lbnRNb2RlKSA7CiMgMTQ3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZCdWZmZXIuaCIg
MwpleHRlcm4gdm9pZCBDVkJ1ZmZlclByb3BhZ2F0ZUF0dGFjaG1lbnRzKENWQnVmZmVyUmVmIHNv
dXJjZUJ1ZmZlciwgQ1ZCdWZmZXJSZWYgZGVzdGluYXRpb25CdWZmZXIpIDsKCgp9CiMgMjggIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVklt
YWdlQnVmZmVyLmgiIDIgMwoKCmV4dGVybiAiQyIgewoKCiAgICAgICAKCmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZlckNHQ29sb3JTcGFjZUtleSA7CgpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NWSW1hZ2VCdWZmZXJDbGVhbkFwZXJ0dXJlS2V5IDsKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDVkltYWdlQnVmZmVyQ2xlYW5BcGVydHVyZVdpZHRoS2V5IDsKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDVkltYWdlQnVmZmVyQ2xlYW5BcGVydHVyZUhlaWdodEtleSA7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZlckNsZWFuQXBlcnR1cmVIb3Jp
em9udGFsT2Zmc2V0S2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVkltYWdlQnVmZmVy
Q2xlYW5BcGVydHVyZVZlcnRpY2FsT2Zmc2V0S2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDVkltYWdlQnVmZmVyUHJlZmVycmVkQ2xlYW5BcGVydHVyZUtleSA7CgpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NWSW1hZ2VCdWZmZXJGaWVsZENvdW50S2V5IDsKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtDVkltYWdlQnVmZmVyRmllbGREZXRhaWxLZXkgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0NWSW1hZ2VCdWZmZXJGaWVsZERldGFpbFRlbXBvcmFsVG9wRmlyc3QgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWSW1hZ2VCdWZmZXJGaWVsZERldGFpbFRlbXBvcmFsQm90
dG9tRmlyc3QgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWSW1hZ2VCdWZmZXJGaWVsZERl
dGFpbFNwYXRpYWxGaXJzdExpbmVFYXJseSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZJ
bWFnZUJ1ZmZlckZpZWxkRGV0YWlsU3BhdGlhbEZpcnN0TGluZUxhdGUgOwoKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDVkltYWdlQnVmZmVyUGl4ZWxBc3BlY3RSYXRpb0tleSA7CmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZlclBpeGVsQXNwZWN0UmF0aW9Ib3Jpem9udGFs
U3BhY2luZ0tleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZlclBpeGVs
QXNwZWN0UmF0aW9WZXJ0aWNhbFNwYWNpbmdLZXkgOwoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtDVkltYWdlQnVmZmVyRGlzcGxheURpbWVuc2lvbnNLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NWSW1hZ2VCdWZmZXJEaXNwbGF5V2lkdGhLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NWSW1hZ2VCdWZmZXJEaXNwbGF5SGVpZ2h0S2V5IDsKCmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZlckdhbW1hTGV2ZWxLZXkgOwoKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtDVkltYWdlQnVmZmVySUNDUHJvZmlsZUtleSA7CgpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeEtleSA7CmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4X0lUVV9SXzcwOV8yIDsKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfSVRVX1JfNjAxXzQgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9TTVBURV8yNDBN
XzE5OTUgOwoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVkltYWdlQnVmZmVyQ29sb3JQcmlt
YXJpZXNLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWSW1hZ2VCdWZmZXJDb2xvclBy
aW1hcmllc19JVFVfUl83MDlfMiA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1
ZmZlckNvbG9yUHJpbWFyaWVzX0VCVV8zMjEzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtD
VkltYWdlQnVmZmVyQ29sb3JQcmltYXJpZXNfU01QVEVfQyA7CgpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0aW9uS2V5IDsKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtDVkltYWdlQnVmZmVyVHJhbnNmZXJGdW5jdGlvbl9JVFVfUl83MDlfMiA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fU01Q
VEVfMjQwTV8xOTk1IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVkltYWdlQnVmZmVyVHJh
bnNmZXJGdW5jdGlvbl9Vc2VHYW1tYSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZJbWFn
ZUJ1ZmZlclRyYW5zZmVyRnVuY3Rpb25fRUJVXzMyMTMgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWSW1hZ2VCdWZmZXJUcmFuc2ZlckZ1bmN0
aW9uX1NNUFRFX0MgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZlckNocm9tYUxvY2F0aW9uVG9wRmllbGRLZXkgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWSW1hZ2VCdWZmZXJDaHJvbWFMb2NhdGlvbkJvdHRvbUZp
ZWxkS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVkltYWdlQnVmZmVyQ2hyb21hTG9j
YXRpb25fTGVmdCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZlckNocm9t
YUxvY2F0aW9uX0NlbnRlciA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZl
ckNocm9tYUxvY2F0aW9uX1RvcExlZnQgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWSW1h
Z2VCdWZmZXJDaHJvbWFMb2NhdGlvbl9Ub3AgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NW
SW1hZ2VCdWZmZXJDaHJvbWFMb2NhdGlvbl9Cb3R0b21MZWZ0IDsKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtDVkltYWdlQnVmZmVyQ2hyb21hTG9jYXRpb25fQm90dG9tIDsKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDVkltYWdlQnVmZmVyQ2hyb21hTG9jYXRpb25fRFY0MjAgOwoKCgpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWSW1hZ2VCdWZmZXJDaHJvbWFTdWJzYW1wbGluZ0tleSA7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZlckNocm9tYVN1YnNhbXBsaW5n
XzQyMCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZlckNocm9tYVN1YnNh
bXBsaW5nXzQyMiA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZJbWFnZUJ1ZmZlckNocm9t
YVN1YnNhbXBsaW5nXzQxMSA7CgogICAgICAgCgoKCgoKCnR5cGVkZWYgQ1ZCdWZmZXJSZWYgQ1ZJ
bWFnZUJ1ZmZlclJlZjsKIyAxMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRl
by5mcmFtZXdvcmsvSGVhZGVycy9DVkltYWdlQnVmZmVyLmgiIDMKZXh0ZXJuIENHU2l6ZSBDVklt
YWdlQnVmZmVyR2V0RW5jb2RlZFNpemUoQ1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZUJ1ZmZlcikgOwoj
IDEyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFk
ZXJzL0NWSW1hZ2VCdWZmZXIuaCIgMwpleHRlcm4gQ0dTaXplIENWSW1hZ2VCdWZmZXJHZXREaXNw
bGF5U2l6ZShDVkltYWdlQnVmZmVyUmVmIGltYWdlQnVmZmVyKSA7CiMgMTM4ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZJbWFnZUJ1ZmZl
ci5oIiAzCmV4dGVybiBDR1JlY3QgQ1ZJbWFnZUJ1ZmZlckdldENsZWFuUmVjdChDVkltYWdlQnVm
ZmVyUmVmIGltYWdlQnVmZmVyKSA7CiMgMTQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZJbWFnZUJ1ZmZlci5oIiAzCmV4dGVybiBDR0Nv
bG9yU3BhY2VSZWYgQ1ZJbWFnZUJ1ZmZlckdldENvbG9yU3BhY2UoQ1ZJbWFnZUJ1ZmZlclJlZiBp
bWFnZUJ1ZmZlcikgOwoKCn0KIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpD
b3JlLmZyYW1ld29yay9IZWFkZXJzL0NWSW1hZ2VCdWZmZXIuaCIgMiAzCiMgOSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DSUltYWdlLmgi
IDIgMwoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9TdXJmYWNlLmZyYW1ld29y
ay9IZWFkZXJzL0lPU3VyZmFjZS5oIiAxIDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvSU9TdXJmYWNlLmZyYW1ld29yay9IZWFkZXJzL0lPU3VyZmFjZS5oIiAzCiNkZWZpbmUgX0lP
U1VSRkFDRV9IIDEKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9TdXJmYWNlLmZy
YW1ld29yay9IZWFkZXJzL0lPU3VyZmFjZUJhc2UuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0lPU3VyZmFjZS5mcmFtZXdvcmsvSGVhZGVycy9JT1N1cmZhY2VCYXNlLmgi
IDMKI2RlZmluZSBfSU9TVVJGQUNFX0JBU0VfSCAKIyAyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvSU9TdXJmYWNlLmZyYW1ld29yay9IZWFkZXJzL0lPU3VyZmFjZUJhc2UuaCIgMwojZGVm
aW5lIElPU0ZDX0RFUFJFQ0FURUQgREVQUkVDQVRFRF9BVFRSSUJVVEUKI2RlZmluZSBJT1NGQ19B
VkFJTEFCTEVfU1RBUlRJTkcgX19PU1hfQVZBSUxBQkxFX1NUQVJUSU5HCiNkZWZpbmUgSU9TRkNf
QVZBSUxBQkxFX0JVVF9ERVBSRUNBVEVEIF9fT1NYX0FWQUlMQUJMRV9CVVRfREVQUkVDQVRFRAoj
IDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT1N1cmZhY2UuZnJhbWV3b3JrL0hlYWRl
cnMvSU9TdXJmYWNlLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPU3Vy
ZmFjZS5mcmFtZXdvcmsvSGVhZGVycy9JT1N1cmZhY2VBUEkuaCIgMSAzCiMgMTAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0lPU3VyZmFjZS5mcmFtZXdvcmsvSGVhZGVycy9JT1N1cmZhY2VB
UEkuaCIgMwojZGVmaW5lIF9JT1NVUkZBQ0VfQVBJX0ggMQoKCgoKZXh0ZXJuICJDIiB7Cgp0eXBl
ZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSAqSU9TdXJmYWNlUmVmOwoKdHlwZWRlZiB1aW50MzJfdCBJ
T1N1cmZhY2VJRDsKCgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJT1N1cmZhY2VBbGxv
Y1NpemUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtJT1N1cmZhY2VXaWR0aCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lPU3VyZmFjZUhlaWdo
dCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrSU9TdXJmYWNlQnl0ZXNQZXJSb3cgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lPU3VyZmFj
ZUJ5dGVzUGVyRWxlbWVudCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lPU3VyZmFjZUVsZW1lbnRXaWR0aCBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga0lPU3VyZmFjZUVsZW1lbnRIZWlnaHQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJT1N1cmZhY2VPZmZzZXQgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0lPU3VyZmFjZVBsYW5lSW5mbyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lPU3VyZmFjZVBsYW5lV2lk
dGggX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtJT1N1cmZhY2VQbGFuZUhlaWdodCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSU9TdXJmYWNl
UGxhbmVCeXRlc1BlclJvdyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJT1N1cmZhY2VQbGFuZU9mZnNldCBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga0lPU3VyZmFjZVBsYW5lU2l6ZSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKCgoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSU9TdXJmYWNlUGxhbmVCYXNlIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrSU9TdXJmYWNlUGxhbmVCeXRlc1BlckVsZW1lbnQgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJT1N1cmZh
Y2VQbGFuZUVsZW1lbnRXaWR0aCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lPU3VyZmFjZVBsYW5lRWxlbWVudEhlaWdo
dCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrSU9TdXJmYWNlQ2FjaGVNb2RlIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSU9TdXJmYWNlSXNH
bG9iYWwgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtJT1N1cmZhY2VQaXhlbEZvcm1hdCBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCkNGVHlwZUlEIElPU3VyZmFjZUdldFR5cGVJRCh2b2lkKQog
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKSU9TdXJmYWNlUmVmIElP
U3VyZmFjZUNyZWF0ZShDRkRpY3Rpb25hcnlSZWYgcHJvcGVydGllcykKIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCgpJT1N1cmZhY2VSZWYgSU9TdXJmYWNlTG9v
a3VwKElPU3VyZmFjZUlEIGNzaWQpCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKCgpJT1N1cmZhY2VJRCBJT1N1cmZhY2VHZXRJRChJT1N1cmZhY2VSZWYgYnVmZmVyKQog
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgplbnVtCnsKCgoKIGtJT1N1
cmZhY2VMb2NrUmVhZE9ubHkgPSAweDAwMDAwMDAxLAoKCgoKIGtJT1N1cmZhY2VMb2NrQXZvaWRT
eW5jID0gMHgwMDAwMDAwMgp9OwojIDE1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9T
dXJmYWNlLmZyYW1ld29yay9IZWFkZXJzL0lPU3VyZmFjZUFQSS5oIiAzCklPUmV0dXJuIElPU3Vy
ZmFjZUxvY2soSU9TdXJmYWNlUmVmIGJ1ZmZlciwgdWludDMyX3Qgb3B0aW9ucywgdWludDMyX3Qg
KnNlZWQpCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKSU9SZXR1cm4g
SU9TdXJmYWNlVW5sb2NrKElPU3VyZmFjZVJlZiBidWZmZXIsIHVpbnQzMl90IG9wdGlvbnMsIHVp
bnQzMl90ICpzZWVkKQogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
c2l6ZV90IElPU3VyZmFjZUdldEFsbG9jU2l6ZShJT1N1cmZhY2VSZWYgYnVmZmVyKQogX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgpzaXplX3QgSU9TdXJmYWNlR2V0V2lk
dGgoSU9TdXJmYWNlUmVmIGJ1ZmZlcikKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKc2l6ZV90IElPU3VyZmFjZUdldEhlaWdodChJT1N1cmZhY2VSZWYgYnVmZmVyKQog
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgpzaXplX3QgSU9TdXJmYWNl
R2V0Qnl0ZXNQZXJFbGVtZW50KElPU3VyZmFjZVJlZiBidWZmZXIpCiBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCnNpemVfdCBJT1N1cmZhY2VHZXRCeXRlc1BlclJvdyhJ
T1N1cmZhY2VSZWYgYnVmZmVyKQogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7Cgp2b2lkICpJT1N1cmZhY2VHZXRCYXNlQWRkcmVzcyhJT1N1cmZhY2VSZWYgYnVmZmVyKQog
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgpzaXplX3QgSU9TdXJmYWNl
R2V0RWxlbWVudFdpZHRoKElPU3VyZmFjZVJlZiBidWZmZXIpCiBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKTsKCnNpemVfdCBJT1N1cmZhY2VHZXRFbGVtZW50SGVpZ2h0KElP
U3VyZmFjZVJlZiBidWZmZXIpCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKCk9TVHlwZSBJT1N1cmZhY2VHZXRQaXhlbEZvcm1hdChJT1N1cmZhY2VSZWYgYnVmZmVyKQog
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCnVpbnQzMl90IElPU3Vy
ZmFjZUdldFNlZWQoSU9TdXJmYWNlUmVmIGJ1ZmZlcikKIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwoKCnNpemVfdCBJT1N1cmZhY2VHZXRQbGFuZUNvdW50KElPU3VyZmFj
ZVJlZiBidWZmZXIpCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAy
MDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPU3VyZmFjZS5mcmFtZXdvcmsvSGVhZGVy
cy9JT1N1cmZhY2VBUEkuaCIgMwpzaXplX3QgSU9TdXJmYWNlR2V0V2lkdGhPZlBsYW5lKElPU3Vy
ZmFjZVJlZiBidWZmZXIsIHNpemVfdCBwbGFuZUluZGV4KQogX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CgpzaXplX3QgSU9TdXJmYWNlR2V0SGVpZ2h0T2ZQbGFuZShJT1N1
cmZhY2VSZWYgYnVmZmVyLCBzaXplX3QgcGxhbmVJbmRleCkKIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpOwoKc2l6ZV90IElPU3VyZmFjZUdldEJ5dGVzUGVyRWxlbWVudE9m
UGxhbmUoSU9TdXJmYWNlUmVmIGJ1ZmZlciwgc2l6ZV90IHBsYW5lSW5kZXgpCiBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCnNpemVfdCBJT1N1cmZhY2VHZXRCeXRlc1Bl
clJvd09mUGxhbmUoSU9TdXJmYWNlUmVmIGJ1ZmZlciwgc2l6ZV90IHBsYW5lSW5kZXgpCiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCnZvaWQgKklPU3VyZmFjZUdldEJh
c2VBZGRyZXNzT2ZQbGFuZShJT1N1cmZhY2VSZWYgYnVmZmVyLCBzaXplX3QgcGxhbmVJbmRleCkK
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKc2l6ZV90IElPU3VyZmFj
ZUdldEVsZW1lbnRXaWR0aE9mUGxhbmUoSU9TdXJmYWNlUmVmIGJ1ZmZlciwgc2l6ZV90IHBsYW5l
SW5kZXgpCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCnNpemVfdCBJ
T1N1cmZhY2VHZXRFbGVtZW50SGVpZ2h0T2ZQbGFuZShJT1N1cmZhY2VSZWYgYnVmZmVyLCBzaXpl
X3QgcGxhbmVJbmRleCkKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoK
CgoKdm9pZCBJT1N1cmZhY2VTZXRWYWx1ZShJT1N1cmZhY2VSZWYgYnVmZmVyLCBDRlN0cmluZ1Jl
ZiBrZXksIENGVHlwZVJlZiB2YWx1ZSkKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwoKQ0ZUeXBlUmVmIElPU3VyZmFjZUNvcHlWYWx1ZShJT1N1cmZhY2VSZWYgYnVmZmVy
LCBDRlN0cmluZ1JlZiBrZXkpCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKCnZvaWQgSU9TdXJmYWNlUmVtb3ZlVmFsdWUoSU9TdXJmYWNlUmVmIGJ1ZmZlciwgQ0ZTdHJp
bmdSZWYga2V5KQogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpt
YWNoX3BvcnRfdCBJT1N1cmZhY2VDcmVhdGVNYWNoUG9ydChJT1N1cmZhY2VSZWYgYnVmZmVyKQog
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCklPU3VyZmFjZVJlZiBJ
T1N1cmZhY2VMb29rdXBGcm9tTWFjaFBvcnQobWFjaF9wb3J0X3QgcG9ydCkKIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDI2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvSU9TdXJmYWNlLmZyYW1ld29yay9IZWFkZXJzL0lPU3VyZmFjZUFQSS5oIiAzCnNpemVf
dCBJT1N1cmZhY2VHZXRQcm9wZXJ0eU1heGltdW0oQ0ZTdHJpbmdSZWYgcHJvcGVydHkpCiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyODIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0lPU3VyZmFjZS5mcmFtZXdvcmsvSGVhZGVycy9JT1N1cmZhY2VBUEkuaCIg
MwpzaXplX3QgSU9TdXJmYWNlR2V0UHJvcGVydHlBbGlnbm1lbnQoQ0ZTdHJpbmdSZWYgcHJvcGVy
dHkpCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKc2l6ZV90IElP
U3VyZmFjZUFsaWduUHJvcGVydHkoQ0ZTdHJpbmdSZWYgcHJvcGVydHksIHNpemVfdCB2YWx1ZSkK
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKfQojIDE0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9JT1N1cmZhY2UuZnJhbWV3b3JrL0hlYWRlcnMvSU9TdXJmYWNl
LmgiIDIgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1l
d29yay9IZWFkZXJzL0NJSW1hZ2UuaCIgMiAzCgoKCgoKCgpAY2xhc3MgTlNEYXRhLCBOU1VSTCwg
TlNEaWN0aW9uYXJ5LCBDSUNvbnRleHQsIENJRmlsdGVyU2hhcGUsIENJQ29sb3I7CgpAaW50ZXJm
YWNlIENJSW1hZ2UgOiBOU09iamVjdCA8TlNDb2RpbmcsIE5TQ29weWluZz4KewogICAgdm9pZCAq
X3N0YXRlOwogICAgdm9pZCAqX3ByaXY7Cn0KCgoKdHlwZWRlZiBpbnQgQ0lGb3JtYXQ7CgpleHRl
cm4gQ0lGb3JtYXQga0NJRm9ybWF0QVJHQjggOwpleHRlcm4gQ0lGb3JtYXQga0NJRm9ybWF0UkdC
QTE2IDsKZXh0ZXJuIENJRm9ybWF0IGtDSUZvcm1hdFJHQkFmIDsKCgoKCgoKZXh0ZXJuIE5TU3Ry
aW5nICprQ0lJbWFnZUNvbG9yU3BhY2UgOwoKCgorIChDSUltYWdlICopaW1hZ2VXaXRoQ0dJbWFn
ZTooQ0dJbWFnZVJlZilpbWFnZTsKKyAoQ0lJbWFnZSAqKWltYWdlV2l0aENHSW1hZ2U6KENHSW1h
Z2VSZWYpaW1hZ2Ugb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopZDsKCgoKKyAoQ0lJbWFnZSAqKWlt
YWdlV2l0aENHTGF5ZXI6KENHTGF5ZXJSZWYpbGF5ZXI7CisgKENJSW1hZ2UgKilpbWFnZVdpdGhD
R0xheWVyOihDR0xheWVyUmVmKWxheWVyIG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKWQ7CgoKCgoK
CisgKENJSW1hZ2UgKilpbWFnZVdpdGhCaXRtYXBEYXRhOihOU0RhdGEgKilkIGJ5dGVzUGVyUm93
OihzaXplX3QpYnByCiAgICBzaXplOihDR1NpemUpc2l6ZSBmb3JtYXQ6KENJRm9ybWF0KWYgY29s
b3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNzOwoKCgoKCgoKKyAoQ0lJbWFnZSAqKWltYWdlV2l0
aFRleHR1cmU6KHVuc2lnbmVkIGludCluYW1lIHNpemU6KENHU2l6ZSlzaXplCiAgICBmbGlwcGVk
OihCT09MKWZsYWcgY29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNzOwoKKyAoQ0lJbWFnZSAq
KWltYWdlV2l0aENvbnRlbnRzT2ZVUkw6IChOU1VSTCAqKXVybDsKKyAoQ0lJbWFnZSAqKWltYWdl
V2l0aENvbnRlbnRzT2ZVUkw6IChOU1VSTCAqKXVybCBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilk
OwoKKyAoQ0lJbWFnZSAqKWltYWdlV2l0aERhdGE6IChOU0RhdGEgKilkYXRhOworIChDSUltYWdl
ICopaW1hZ2VXaXRoRGF0YTogKE5TRGF0YSAqKWRhdGEgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICop
ZDsKCgoKKyAoQ0lJbWFnZSAqKWltYWdlV2l0aENWSW1hZ2VCdWZmZXI6KENWSW1hZ2VCdWZmZXJS
ZWYpaW1hZ2VCdWZmZXI7CisgKENJSW1hZ2UgKilpbWFnZVdpdGhDVkltYWdlQnVmZmVyOihDVklt
YWdlQnVmZmVyUmVmKWltYWdlQnVmZmVyCiAgICBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilkaWN0
OwoKCgoKKyAoQ0lJbWFnZSAqKWltYWdlV2l0aElPU3VyZmFjZTooSU9TdXJmYWNlUmVmKXN1cmZh
Y2UgOworIChDSUltYWdlICopaW1hZ2VXaXRoSU9TdXJmYWNlOihJT1N1cmZhY2VSZWYpc3VyZmFj
ZSBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilkIDsKCgoKCgorIChDSUltYWdlICopaW1hZ2VXaXRo
Q29sb3I6KENJQ29sb3IgKiljb2xvcjsKCgorIChDSUltYWdlICopZW1wdHlJbWFnZTsKCgoKLSAo
aWQpaW5pdFdpdGhDR0ltYWdlOihDR0ltYWdlUmVmKWltYWdlOwotIChpZClpbml0V2l0aENHSW1h
Z2U6KENHSW1hZ2VSZWYpaW1hZ2Ugb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopZDsKCi0gKGlkKWlu
aXRXaXRoQ0dMYXllcjooQ0dMYXllclJlZilsYXllcjsKLSAoaWQpaW5pdFdpdGhDR0xheWVyOihD
R0xheWVyUmVmKWxheWVyIG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKWQ7CgotIChpZClpbml0V2l0
aERhdGE6KE5TRGF0YSAqKWRhdGE7Ci0gKGlkKWluaXRXaXRoRGF0YTooTlNEYXRhICopZGF0YSBv
cHRpb25zOihOU0RpY3Rpb25hcnkgKilkOwoKLSAoaWQpaW5pdFdpdGhCaXRtYXBEYXRhOihOU0Rh
dGEgKilkIGJ5dGVzUGVyUm93OihzaXplX3QpYnByIHNpemU6KENHU2l6ZSlzaXplCiAgICBmb3Jt
YXQ6KENJRm9ybWF0KWYgY29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWM7CgotIChpZClpbml0
V2l0aFRleHR1cmU6KHVuc2lnbmVkIGludCluYW1lIHNpemU6KENHU2l6ZSlzaXplIGZsaXBwZWQ6
KEJPT0wpZmxhZwogICAgY29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNzOwoKLSAoaWQpaW5p
dFdpdGhDb250ZW50c09mVVJMOiAoTlNVUkwgKil1cmw7Ci0gKGlkKWluaXRXaXRoQ29udGVudHNP
ZlVSTDogKE5TVVJMICopdXJsIG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKWQ7CgoKLSAoaWQpaW5p
dFdpdGhJT1N1cmZhY2U6KElPU3VyZmFjZVJlZilzdXJmYWNlIDsKLSAoaWQpaW5pdFdpdGhJT1N1
cmZhY2U6KElPU3VyZmFjZVJlZilzdXJmYWNlIG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKWQgOwoK
Ci0gKGlkKWluaXRXaXRoQ1ZJbWFnZUJ1ZmZlcjooQ1ZJbWFnZUJ1ZmZlclJlZilpbWFnZUJ1ZmZl
cjsKLSAoaWQpaW5pdFdpdGhDVkltYWdlQnVmZmVyOihDVkltYWdlQnVmZmVyUmVmKWltYWdlQnVm
ZmVyCiAgICBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilkaWN0OwoKLSAoaWQpaW5pdFdpdGhDb2xv
cjooQ0lDb2xvciAqKWNvbG9yOwoKCgoKLSAoQ0lJbWFnZSAqKWltYWdlQnlBcHBseWluZ1RyYW5z
Zm9ybTooQ0dBZmZpbmVUcmFuc2Zvcm0pbWF0cml4OwoKCgotIChDSUltYWdlICopaW1hZ2VCeUNy
b3BwaW5nVG9SZWN0OihDR1JlY3QpcjsKCgoKLSAoQ0dSZWN0KWV4dGVudDsKCgoKLSAoQ0lGaWx0
ZXJTaGFwZSAqKWRlZmluaXRpb247CgoKCgotIChOU1VSTCAqKXVybDsKCgoKCi0gKENHQ29sb3JT
cGFjZVJlZiljb2xvclNwYWNlOwoKQGVuZAojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNDSUltYWdlUmVwLmgiIDIgMwoKCgpAY2xhc3Mg
TlNCaXRtYXBJbWFnZVJlcDsKCkBpbnRlcmZhY2UgTlNDSUltYWdlUmVwIDogTlNJbWFnZVJlcAp7
CiAgICBDSUltYWdlICpfY2lJbWFnZTsKfQorIChpZClpbWFnZVJlcFdpdGhDSUltYWdlOihDSUlt
YWdlICopaW1hZ2U7Ci0gKGlkKWluaXRXaXRoQ0lJbWFnZTooQ0lJbWFnZSAqKWltYWdlOwotIChD
SUltYWdlICopQ0lJbWFnZTsKQGVuZAoKQGludGVyZmFjZSBDSUltYWdlIChOU0FwcEtpdEFkZGl0
aW9ucykKLSAoaWQpaW5pdFdpdGhCaXRtYXBJbWFnZVJlcDooTlNCaXRtYXBJbWFnZVJlcCAqKWJp
dG1hcEltYWdlUmVwOwoKLSAodm9pZClkcmF3SW5SZWN0OihOU1JlY3QpcmVjdCBmcm9tUmVjdDoo
TlNSZWN0KWZyb21SZWN0IG9wZXJhdGlvbjooTlNDb21wb3NpdGluZ09wZXJhdGlvbilvcCBmcmFj
dGlvbjooQ0dGbG9hdClkZWx0YTsKLSAodm9pZClkcmF3QXRQb2ludDooTlNQb2ludClwb2ludCBm
cm9tUmVjdDooTlNSZWN0KWZyb21SZWN0IG9wZXJhdGlvbjooTlNDb21wb3NpdGluZ09wZXJhdGlv
bilvcCBmcmFjdGlvbjooQ0dGbG9hdClkZWx0YTsKQGVuZAojIDQzICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0NvbG9y
TGlzdC5oIiAxIDMKIyAxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL05TQ29sb3JMaXN0LmgiIDMKQGNsYXNzIE5TQXJyYXksIE5TTXV0YWJsZUFy
cmF5LCBOU0NvbG9yLCBOU0J1bmRsZTsKCkBpbnRlcmZhY2UgTlNDb2xvckxpc3QgOiBOU09iamVj
dCA8TlNDb2Rpbmc+IHsKCiAgICBOU011dGFibGVBcnJheSAqX2tleUFycmF5OwogICAgTlNNdXRh
YmxlQXJyYXkgKl9jb2xvckFycmF5OwogICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBfa2V5VG9J
bmRleFRhYmxlOwogICAgTlNTdHJpbmcgKl9uYW1lOwogICAgTlNTdHJpbmcgKl9wcmludGVyVHlw
ZTsKICAgIE5TU3RyaW5nICpfZmlsZU5hbWU7CiAgICBzdHJ1Y3QgX2NvbG9yTGlzdEZsYWdzIHsK
IHVuc2lnbmVkIGludCBjb2xvcnNMb2FkZWQ6MTsKIHVuc2lnbmVkIGludCBlZGl0YWJsZToxOwog
dW5zaWduZWQgaW50IGhhc0RldmljZVNwZWNpZmljTGlzdHM6MTsKIHVuc2lnbmVkIGludCBkaXJ0
eToxOwogdW5zaWduZWQgaW50IGhhc0Zyb3plbjoxOwogdW5zaWduZWQgaW50IG5vdGlmaWNhdGlv
bnNEaXNhYmxlZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBoYXNBdHRlbXB0ZWRMb2FkaW5nQnVu
ZGxlRm9yRGlyZWN0b3J5OjE7CiB1bnNpZ25lZCBpbnQgaXNQcm9maWxlQmFzZWQ6MTsKIHVuc2ln
bmVkIGludCA6MjQ7CgogdW5zaWduZWQgaW50IDozMjsKCiAgICB9IF9mbGFnczsKICAgIGlkIF9j
bEF1eGlsaWFyeVN0b3JhZ2U7Cn0KCgoKKyAoTlNBcnJheSAqKWF2YWlsYWJsZUNvbG9yTGlzdHM7
CgoKCisgKE5TQ29sb3JMaXN0ICopY29sb3JMaXN0TmFtZWQ6KE5TU3RyaW5nICopbmFtZTsKCgoK
LSAoaWQpaW5pdFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWU7Ci0gKGlkKWluaXRXaXRoTmFtZToo
TlNTdHJpbmcgKiluYW1lIGZyb21GaWxlOihOU1N0cmluZyAqKXBhdGg7CgoKCi0gKE5TU3RyaW5n
ICopbmFtZTsKCgoKLSAodm9pZClzZXRDb2xvcjooTlNDb2xvciAqKWNvbG9yIGZvcktleTooTlNT
dHJpbmcgKilrZXk7CgoKCi0gKHZvaWQpaW5zZXJ0Q29sb3I6KE5TQ29sb3IgKiljb2xvciBrZXk6
KE5TU3RyaW5nICopa2V5IGF0SW5kZXg6KE5TVUludGVnZXIpbG9jOwoKCgotICh2b2lkKXJlbW92
ZUNvbG9yV2l0aEtleTooTlNTdHJpbmcgKilrZXk7CgoKCi0gKE5TQ29sb3IgKiljb2xvcldpdGhL
ZXk6KE5TU3RyaW5nICopa2V5OwoKCgotIChOU0FycmF5ICopYWxsS2V5czsKCgoKLSAoQk9PTClp
c0VkaXRhYmxlOwoKCgotIChCT09MKXdyaXRlVG9GaWxlOihOU1N0cmluZyAqKXBhdGg7CgoKCi0g
KHZvaWQpcmVtb3ZlRmlsZTsKCkBlbmQKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0NvbG9yTGlz
dERpZENoYW5nZU5vdGlmaWNhdGlvbjsKIyA0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNDb2xvclBhbmVsLmgiIDEg
MwojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNDb2xvclBhbmVsLmgiIDMKQGNsYXNzIE5TQ29sb3JMaXN0LCBOU011dGFibGVBcnJheTsK
CnR5cGVkZWYgTlNJbnRlZ2VyIE5TQ29sb3JQYW5lbE1vZGU7CgplbnVtIHsKCgogICAgTlNOb01v
ZGVDb2xvclBhbmVsID0gLTEsCgogICAgTlNHcmF5TW9kZUNvbG9yUGFuZWwgPSAwLAogICAgTlNS
R0JNb2RlQ29sb3JQYW5lbCA9IDEsCiAgICBOU0NNWUtNb2RlQ29sb3JQYW5lbCA9IDIsCiAgICBO
U0hTQk1vZGVDb2xvclBhbmVsID0gMywKICAgIE5TQ3VzdG9tUGFsZXR0ZU1vZGVDb2xvclBhbmVs
ID0gNCwKICAgIE5TQ29sb3JMaXN0TW9kZUNvbG9yUGFuZWwgPSA1LAogICAgTlNXaGVlbE1vZGVD
b2xvclBhbmVsID0gNiwKCiAgICBOU0NyYXlvbk1vZGVDb2xvclBhbmVsID0gNwoKfTsKCmVudW0g
ewogICAgTlNDb2xvclBhbmVsR3JheU1vZGVNYXNrID0gMHgwMDAwMDAwMSwKICAgIE5TQ29sb3JQ
YW5lbFJHQk1vZGVNYXNrID0gMHgwMDAwMDAwMiwKICAgIE5TQ29sb3JQYW5lbENNWUtNb2RlTWFz
ayA9IDB4MDAwMDAwMDQsCiAgICBOU0NvbG9yUGFuZWxIU0JNb2RlTWFzayA9IDB4MDAwMDAwMDgs
CiAgICBOU0NvbG9yUGFuZWxDdXN0b21QYWxldHRlTW9kZU1hc2sgPSAweDAwMDAwMDEwLAogICAg
TlNDb2xvclBhbmVsQ29sb3JMaXN0TW9kZU1hc2sgPSAweDAwMDAwMDIwLAogICAgTlNDb2xvclBh
bmVsV2hlZWxNb2RlTWFzayA9IDB4MDAwMDAwNDAsCgogICAgTlNDb2xvclBhbmVsQ3JheW9uTW9k
ZU1hc2sgPSAweDAwMDAwMDgwLAoKICAgIE5TQ29sb3JQYW5lbEFsbE1vZGVzTWFzayA9IDB4MDAw
MGZmZmYKfTsKCgoKQGludGVyZmFjZSBOU0NvbG9yUGFuZWwgOiBOU1BhbmVsCnsKCiAgICBpZCBf
Y29sb3JTd2F0Y2g7CiAgICBpZCBfcmVzZXJ2ZWQxOwogICAgaWQgX2NvbG9yV2VsbDsKICAgIE5T
TXV0YWJsZUFycmF5ICpfcGlja2Vyc1dpdGhMb2FkZWRWaWV3czsKICAgIGlkIF9tYWduaWZ5QnV0
dG9uOwogICAgaWQgX21pZGRsZVZpZXc7CiAgICBpZCBfb3BhY2l0eVNsaWRlcjsKICAgIGlkIF9v
cGFjaXR5VGV4dDsKICAgIGlkIF9vcGFjaXR5VmlldzsKICAgIGlkIF9tb2RhbEJ1dHRvbnM7CiAg
ICBpZCBfcGlja2VyVmlldzsKICAgIGlkIF9jdXN0b21WaWV3c0xpc3Q7CiAgICBpZCBfY3VzdG9t
UGlja2VyTGlzdDsKICAgIGlkIF9jdXJyVmlld09iamVjdDsKICAgIGlkIF9ib3hBYm92ZVN3YXRj
aDsKICAgIGlkIF90YXJnZXQ7CiAgICBpZCBfYWNjZXNzb3J5VmlldzsKICAgIFNFTCBfYWN0aW9u
OwogICAgTlNTaXplIF9taW5Db2xvclBhbmVsU2l6ZTsKICAgIE5TU2l6ZSBfbWF4Q29sb3JQYW5l
bFNpemU7CiAgICBOU1NpemUgX3Jlc2VydmVkMjsKICAgIE5TU2l6ZSBfcmVzZXJ2ZWQzOwogICAg
aWQgX3Jlc2l6ZURpbXBsZTsKICAgIEJPT0wgX3Jlc2VydmVkNTsKICAgIEJPT0wgX3Jlc2VydmVk
NjsKICAgIEJPT0wgX2hhbmRsaW5nT3BhY2l0eU1vdmVBY3Rpb247CiAgICBCT09MIF9pZ25vcmVD
b25zdHJhaW50czsKICAgIEJPT0wgX2NvbnRpbnVvdXM7CiAgICBCT09MIF9hbGxvd0NvbG9yU2V0
dGluZzsKICAgIEJPT0wgX3N0aWxsSW5pdGlhbGl6aW5nOwogICAgaWQgX29wYWNpdHlUZXh0Q29u
dHJvbGxlcjsKfQoKKyAoTlNDb2xvclBhbmVsICopc2hhcmVkQ29sb3JQYW5lbDsKKyAoQk9PTClz
aGFyZWRDb2xvclBhbmVsRXhpc3RzOworIChCT09MKWRyYWdDb2xvcjooTlNDb2xvciAqKWNvbG9y
IHdpdGhFdmVudDooTlNFdmVudCAqKXRoZUV2ZW50IGZyb21WaWV3OihOU1ZpZXcgKilzb3VyY2VW
aWV3OworICh2b2lkKXNldFBpY2tlck1hc2s6KE5TVUludGVnZXIpbWFzazsKKyAodm9pZClzZXRQ
aWNrZXJNb2RlOihOU0NvbG9yUGFuZWxNb2RlKW1vZGU7CgotICh2b2lkKXNldEFjY2Vzc29yeVZp
ZXc6KE5TVmlldyAqKWFWaWV3OwotIChOU1ZpZXcgKilhY2Nlc3NvcnlWaWV3OwotICh2b2lkKXNl
dENvbnRpbnVvdXM6KEJPT0wpZmxhZzsKLSAoQk9PTClpc0NvbnRpbnVvdXM7Ci0gKHZvaWQpc2V0
U2hvd3NBbHBoYTooQk9PTClmbGFnOwotIChCT09MKXNob3dzQWxwaGE7Ci0gKHZvaWQpc2V0TW9k
ZTooTlNDb2xvclBhbmVsTW9kZSltb2RlOwotIChOU0NvbG9yUGFuZWxNb2RlKW1vZGU7Ci0gKHZv
aWQpc2V0Q29sb3I6KE5TQ29sb3IgKiljb2xvcjsKLSAoTlNDb2xvciAqKWNvbG9yOwotIChDR0Zs
b2F0KWFscGhhOwotICh2b2lkKXNldEFjdGlvbjooU0VMKWFTZWxlY3RvcjsKLSAodm9pZClzZXRU
YXJnZXQ6KGlkKWFuT2JqZWN0OwotICh2b2lkKWF0dGFjaENvbG9yTGlzdDooTlNDb2xvckxpc3Qg
Kiljb2xvckxpc3Q7Ci0gKHZvaWQpZGV0YWNoQ29sb3JMaXN0OihOU0NvbG9yTGlzdCAqKWNvbG9y
TGlzdDsKQGVuZAoKQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uKE5TQ29sb3JQYW5lbCkKLSAodm9p
ZClvcmRlckZyb250Q29sb3JQYW5lbDooaWQpc2VuZGVyOwpAZW5kCgpAaW50ZXJmYWNlIE5TT2Jq
ZWN0KE5TQ29sb3JQYW5lbFJlc3BvbmRlck1ldGhvZCkKLSAodm9pZCljaGFuZ2VDb2xvcjooaWQp
c2VuZGVyOwpAZW5kCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNDb2xvclBhbmVsQ29sb3JEaWRD
aGFuZ2VOb3RpZmljYXRpb247CiMgNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQ29sb3JQaWNraW5nLmgiIDEgMwoj
IDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
TlNDb2xvclBpY2tpbmcuaCIgMwpAY2xhc3MgTlNCdXR0b25DZWxsLCBOU0NvbG9yLCBOU0NvbG9y
UGFuZWwsIE5TQ29sb3JMaXN0LCBOU0ltYWdlLCBOU1ZpZXc7CgpAcHJvdG9jb2wgTlNDb2xvclBp
Y2tpbmdEZWZhdWx0CiMgMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9OU0NvbG9yUGlja2luZy5oIiAzCi0gKGlkKWluaXRXaXRoUGlja2VyTWFz
azooTlNVSW50ZWdlciltYXNrIGNvbG9yUGFuZWw6KE5TQ29sb3JQYW5lbCAqKW93bmluZ0NvbG9y
UGFuZWw7CgoKCi0gKE5TSW1hZ2UgKilwcm92aWRlTmV3QnV0dG9uSW1hZ2U7Ci0gKHZvaWQpaW5z
ZXJ0TmV3QnV0dG9uSW1hZ2U6KE5TSW1hZ2UgKiluZXdCdXR0b25JbWFnZSBpbjooTlNCdXR0b25D
ZWxsICopYnV0dG9uQ2VsbDsKLSAodm9pZCl2aWV3U2l6ZUNoYW5nZWQ6KGlkKXNlbmRlcjsKLSAo
dm9pZClhbHBoYUNvbnRyb2xBZGRlZE9yUmVtb3ZlZDooaWQpc2VuZGVyOwotICh2b2lkKWF0dGFj
aENvbG9yTGlzdDooTlNDb2xvckxpc3QgKiljb2xvckxpc3Q7Ci0gKHZvaWQpZGV0YWNoQ29sb3JM
aXN0OihOU0NvbG9yTGlzdCAqKWNvbG9yTGlzdDsKLSAodm9pZClzZXRNb2RlOihOU0NvbG9yUGFu
ZWxNb2RlKW1vZGU7CgoKCgoKLSAoTlNTdHJpbmcgKilidXR0b25Ub29sVGlwOwoKCgotIChOU1Np
emUpbWluQ29udGVudFNpemU7CgoKCkBlbmQKCgoKQHByb3RvY29sIE5TQ29sb3JQaWNraW5nQ3Vz
dG9tIDxOU0NvbG9yUGlja2luZ0RlZmF1bHQ+CgoKCi0gKEJPT0wpc3VwcG9ydHNNb2RlOihOU0Nv
bG9yUGFuZWxNb2RlKW1vZGU7CgoKCi0gKE5TQ29sb3JQYW5lbE1vZGUpY3VycmVudE1vZGU7CgoK
Ci0gKE5TVmlldyAqKXByb3ZpZGVOZXdWaWV3OihCT09MKWluaXRpYWxSZXF1ZXN0OwoKCgotICh2
b2lkKXNldENvbG9yOihOU0NvbG9yICopbmV3Q29sb3I7CkBlbmQKIyA0NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlND
b2xvclBpY2tlci5oIiAxIDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0
LmZyYW1ld29yay9IZWFkZXJzL05TQ29sb3JQaWNrZXIuaCIgMwpAaW50ZXJmYWNlIE5TQ29sb3JQ
aWNrZXIgOiBOU09iamVjdCA8TlNDb2xvclBpY2tpbmdEZWZhdWx0Pgp7CgogICAgaWQgX2ltYWdl
T2JqZWN0OwogICAgTlNDb2xvclBhbmVsICpfY29sb3JQYW5lbDsKICAgIE5TU3RyaW5nICpfYnV0
dG9uVG9vbFRpcDsKfQotIChpZClpbml0V2l0aFBpY2tlck1hc2s6KE5TVUludGVnZXIpbWFzayBj
b2xvclBhbmVsOihOU0NvbG9yUGFuZWwgKilvd25pbmdDb2xvclBhbmVsOwotIChOU0NvbG9yUGFu
ZWwgKiljb2xvclBhbmVsOwotIChOU0ltYWdlICopcHJvdmlkZU5ld0J1dHRvbkltYWdlOwotICh2
b2lkKWluc2VydE5ld0J1dHRvbkltYWdlOihOU0ltYWdlICopbmV3QnV0dG9uSW1hZ2UgaW46KE5T
QnV0dG9uQ2VsbCAqKWJ1dHRvbkNlbGw7Ci0gKHZvaWQpdmlld1NpemVDaGFuZ2VkOihpZClzZW5k
ZXI7Ci0gKHZvaWQpYXR0YWNoQ29sb3JMaXN0OihOU0NvbG9yTGlzdCAqKWNvbG9yTGlzdDsKLSAo
dm9pZClkZXRhY2hDb2xvckxpc3Q6KE5TQ29sb3JMaXN0ICopY29sb3JMaXN0OwotICh2b2lkKXNl
dE1vZGU6KE5TQ29sb3JQYW5lbE1vZGUpbW9kZTsKCi0gKE5TU3RyaW5nICopYnV0dG9uVG9vbFRp
cDsKCi0gKE5TU2l6ZSltaW5Db250ZW50U2l6ZTsKQGVuZAojIDQ3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0NvbG9y
V2VsbC5oIiAxIDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL05TQ29sb3JXZWxsLmgiIDMKQGludGVyZmFjZSBOU0NvbG9yV2VsbCA6IE5T
Q29udHJvbAp7CgogICAgTlNDb2xvciAqX2NvbG9yOwogICAgaWQgX3RhcmdldDsKICAgIFNFTCBf
YWN0aW9uOwogICAgc3RydWN0IF9fY3dGbGFncyB7CiB1bnNpZ25lZCBpbnQgaXNBY3RpdmU6MTsK
IHVuc2lnbmVkIGludCBpc0JvcmRlcmVkOjE7CiB1bnNpZ25lZCBpbnQgY2FudERyYXc6MTsKIHVu
c2lnbmVkIGludCBpc05vdENvbnRpbnVvdXM6MTsKIHVuc2lnbmVkIGludCByZXNlcnZlZENvbG9y
V2VsbDoyODsKICAgIH0gX2N3RmxhZ3M7Cn0KCi0gKHZvaWQpZGVhY3RpdmF0ZTsKLSAodm9pZClh
Y3RpdmF0ZTooQk9PTClleGNsdXNpdmU7Ci0gKEJPT0wpaXNBY3RpdmU7CgotICh2b2lkKWRyYXdX
ZWxsSW5zaWRlOihOU1JlY3QpaW5zaWRlUmVjdDsKCi0gKEJPT0wpaXNCb3JkZXJlZDsKLSAodm9p
ZClzZXRCb3JkZXJlZDooQk9PTClmbGFnOwoKLSAodm9pZCl0YWtlQ29sb3JGcm9tOihpZClzZW5k
ZXI7Ci0gKHZvaWQpc2V0Q29sb3I6KE5TQ29sb3IgKiljb2xvcjsKLSAoTlNDb2xvciAqKWNvbG9y
OwoKQGVuZAojIDQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0N1cnNvci5oIiAxIDMKIyAxMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQ3Vyc29yLmgiIDMKQGNs
YXNzIE5TQ29sb3IsIE5TRXZlbnQsIE5TSW1hZ2U7CgojZGVmaW5lIE5TQXBwS2l0VmVyc2lvbk51
bWJlcldpdGhDdXJzb3JTaXplU3VwcG9ydCA2ODIuMAoKQGludGVyZmFjZSBOU0N1cnNvciA6IE5T
T2JqZWN0IDxOU0NvZGluZz4gewoKICAgIE5TUG9pbnQgX2hvdFNwb3Q7CiAgICBzdHJ1Y3QgX2N1
cnNvckZsYWdzIHsKIHVuc2lnbmVkIGludCBvbk1vdXNlRXhpdGVkOjE7CiB1bnNpZ25lZCBpbnQg
b25Nb3VzZUVudGVyZWQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgY3Vyc29yVHlwZTo4OwogdW5z
aWduZWQgaW50IDoyMjsKICAgIH0gX2ZsYWdzOwogICAgaWQgX2ltYWdlOwp9CgoKCisgKE5TQ3Vy
c29yICopY3VycmVudEN1cnNvcjsKCgoKCgoKCisgKE5TQ3Vyc29yICopY3VycmVudFN5c3RlbUN1
cnNvciA7CgorIChOU0N1cnNvciAqKWFycm93Q3Vyc29yOworIChOU0N1cnNvciAqKUlCZWFtQ3Vy
c29yOworIChOU0N1cnNvciAqKXBvaW50aW5nSGFuZEN1cnNvciA7CisgKE5TQ3Vyc29yICopY2xv
c2VkSGFuZEN1cnNvciA7CisgKE5TQ3Vyc29yICopb3BlbkhhbmRDdXJzb3IgOworIChOU0N1cnNv
ciAqKXJlc2l6ZUxlZnRDdXJzb3IgOworIChOU0N1cnNvciAqKXJlc2l6ZVJpZ2h0Q3Vyc29yIDsK
KyAoTlNDdXJzb3IgKilyZXNpemVMZWZ0UmlnaHRDdXJzb3IgOworIChOU0N1cnNvciAqKXJlc2l6
ZVVwQ3Vyc29yIDsKKyAoTlNDdXJzb3IgKilyZXNpemVEb3duQ3Vyc29yIDsKKyAoTlNDdXJzb3Ig
KilyZXNpemVVcERvd25DdXJzb3IgOworIChOU0N1cnNvciAqKWNyb3NzaGFpckN1cnNvciA7Cisg
KE5TQ3Vyc29yICopZGlzYXBwZWFyaW5nSXRlbUN1cnNvciA7CisgKE5TQ3Vyc29yICopb3BlcmF0
aW9uTm90QWxsb3dlZEN1cnNvciA7CisgKE5TQ3Vyc29yICopZHJhZ0xpbmtDdXJzb3IgOworIChO
U0N1cnNvciAqKWRyYWdDb3B5Q3Vyc29yIDsKKyAoTlNDdXJzb3IgKiljb250ZXh0dWFsTWVudUN1
cnNvciA7CgotIChpZClpbml0V2l0aEltYWdlOihOU0ltYWdlICopbmV3SW1hZ2UgaG90U3BvdDoo
TlNQb2ludClhUG9pbnQ7Ci0gKGlkKWluaXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKiluZXdJbWFnZSBm
b3JlZ3JvdW5kQ29sb3JIaW50OihOU0NvbG9yICopZmcgYmFja2dyb3VuZENvbG9ySGludDooTlND
b2xvciAqKWJnIGhvdFNwb3Q6KE5TUG9pbnQpaG90U3BvdDsKCisgKHZvaWQpaGlkZTsKKyAodm9p
ZCl1bmhpZGU7CisgKHZvaWQpc2V0SGlkZGVuVW50aWxNb3VzZU1vdmVzOihCT09MKWZsYWc7Cisg
KHZvaWQpcG9wOwoKLSAoTlNJbWFnZSAqKWltYWdlOwotIChOU1BvaW50KWhvdFNwb3Q7Ci0gKHZv
aWQpcHVzaDsKLSAodm9pZClwb3A7Ci0gKHZvaWQpc2V0OwotICh2b2lkKXNldE9uTW91c2VFeGl0
ZWQ6KEJPT0wpZmxhZzsKLSAodm9pZClzZXRPbk1vdXNlRW50ZXJlZDooQk9PTClmbGFnOwotIChC
T09MKWlzU2V0T25Nb3VzZUV4aXRlZDsKLSAoQk9PTClpc1NldE9uTW91c2VFbnRlcmVkOwotICh2
b2lkKW1vdXNlRW50ZXJlZDooTlNFdmVudCAqKXRoZUV2ZW50OwotICh2b2lkKW1vdXNlRXhpdGVk
OihOU0V2ZW50ICopdGhlRXZlbnQ7CgpAZW5kCiMgNDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQ3VzdG9tSW1hZ2VS
ZXAuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9OU0N1c3RvbUltYWdlUmVwLmgiIDMKQGludGVyZmFjZSBOU0N1c3RvbUltYWdl
UmVwIDogTlNJbWFnZVJlcCB7CgogICAgU0VMIF9kcmF3TWV0aG9kOwogICAgaWQgX2RyYXdPYmpl
Y3Q7CiAgICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVkOwp9CgotIChpZClpbml0V2l0aERyYXdTZWxl
Y3RvcjooU0VMKWFNZXRob2QgZGVsZWdhdGU6KGlkKWFuT2JqZWN0OwotIChTRUwpZHJhd1NlbGVj
dG9yOwotIChpZClkZWxlZ2F0ZTsKCkBlbmQKIyA1MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNEb2N1bWVudC5oIiAx
IDMKIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFk
ZXJzL05TRG9jdW1lbnQuaCIgMwpAY2xhc3MgTlNBcnJheSwgTlNEYXRhLCBOU0RhdGUsIE5TRGlj
dGlvbmFyeSwgTlNFcnJvciwgTlNGaWxlV3JhcHBlciwgTlNNZW51SXRlbSwgTlNQYWdlTGF5b3V0
LCBOU1ByaW50SW5mbywgTlNQcmludE9wZXJhdGlvbiwgTlNTYXZlUGFuZWwsIE5TVW5kb01hbmFn
ZXIsIE5TVVJMLCBOU1ZpZXcsIE5TV2luZG93LCBOU1dpbmRvd0NvbnRyb2xsZXI7CgplbnVtIHsK
CgoKICAgIE5TQ2hhbmdlRG9uZSA9IDAsCgoKCiAgICBOU0NoYW5nZVVuZG9uZSA9IDEsCgoKCiAg
ICBOU0NoYW5nZUNsZWFyZWQgPSAyLAoKCgoKCiAgICBOU0NoYW5nZVJlZG9uZSA9IDUsCgoKCgoK
CgogICAgTlNDaGFuZ2VSZWFkT3RoZXJDb250ZW50cyA9IDMsCgoKCiAgICBOU0NoYW5nZUF1dG9z
YXZlZCA9IDQKCgoKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TRG9jdW1lbnRDaGFuZ2VUeXBlOwoK
ZW51bSB7CgoKCiAgICBOU1NhdmVPcGVyYXRpb24gPSAwLAoKCgogICAgTlNTYXZlQXNPcGVyYXRp
b24gPSAxLAoKCgogICAgTlNTYXZlVG9PcGVyYXRpb24gPSAyLAoKCgoKCiAgICBOU0F1dG9zYXZl
T3BlcmF0aW9uID0gMwoKCgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNTYXZlT3BlcmF0aW9uVHlw
ZTsKCkBpbnRlcmZhY2UgTlNEb2N1bWVudCA6IE5TT2JqZWN0PE5TVXNlckludGVyZmFjZVZhbGlk
YXRpb25zPiB7CiAgICBAcHJpdmF0ZQogICAgTlNXaW5kb3cgKl93aW5kb3c7CiAgICBpZCBfd2lu
ZG93Q29udHJvbGxlcnM7CiAgICBOU1VSTCAqX2ZpbGVVUkw7CiAgICBOU1N0cmluZyAqX2ZpbGVU
eXBlOwogICAgTlNQcmludEluZm8gKl9wcmludEluZm87CiAgICBsb25nIF9jaGFuZ2VDb3VudDsK
ICAgIE5TVmlldyAqc2F2ZVBhbmVsQWNjZXNzb3J5OwogICAgaWQgX2Rpc3BsYXlOYW1lOwogICAg
aWQgX3ByaXZhdGVEYXRhOwogICAgTlNVbmRvTWFuYWdlciAqX3VuZG9NYW5hZ2VyOwogICAgc3Ry
dWN0IF9fZG9jRmxhZ3MgewogdW5zaWduZWQgaW50IGluQ2xvc2U6MTsKIHVuc2lnbmVkIGludCBo
YXNVbmRvTWFuYWdlcjoxOwogdW5zaWduZWQgaW50IGlzU2hvd2luZ1BhZ2VMYXlvdXQ6MTsKIHVu
c2lnbmVkIGludCBpc1J1bm5pbmdQcmludE9wZXJhdGlvbjoxOwogdW5zaWduZWQgaW50IHNhdmVQ
YW5lbE5hbWVFeHRlbnNpb25IaWRkZW46MTsKIHVuc2lnbmVkIGludCByZWNvbmNpbGVkVG9GaWxl
TmFtZToxOwogdW5zaWduZWQgaW50IGNoZWNraW5nRGlzcGxheU5hbWU6MTsKIHVuc2lnbmVkIGlu
dCBkZWZpbml0ZWx5SGFzVW5zYXZlZENoYW5nZXM6MTsKIHVuc2lnbmVkIGludCBkZWZpbml0ZWx5
SGFzVW5hdXRvc2F2ZWRDaGFuZ2VzOjE7CiB1bnNpZ25lZCBpbnQgUkVTRVJWRUQ6MjM7CiAgICB9
IF9kb2NGbGFnczsKICAgIE5TU3RyaW5nICpfc2F2ZVBhbmVsU2F2ZVR5cGU7Cn0KCiAgICAgICAK
CgoKCgotIChpZClpbml0OwoKICAgICAgIAoKCgoKCi0gKGlkKWluaXRXaXRoVHlwZTooTlNTdHJp
bmcgKil0eXBlTmFtZSBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvciA7CgogICAgICAgCgoKCisg
KEJPT0wpY2FuQ29uY3VycmVudGx5UmVhZERvY3VtZW50c09mVHlwZTooTlNTdHJpbmcgKil0eXBl
TmFtZSA7CgoKCgoKLSAoaWQpaW5pdFdpdGhDb250ZW50c09mVVJMOihOU1VSTCAqKWFic29sdXRl
VVJMIG9mVHlwZTooTlNTdHJpbmcgKil0eXBlTmFtZSBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJv
ciA7CgogICAgICAgCgoKCgoKCgotIChpZClpbml0Rm9yVVJMOihOU1VSTCAqKWFic29sdXRlRG9j
dW1lbnRVUkwgd2l0aENvbnRlbnRzT2ZVUkw6KE5TVVJMICopYWJzb2x1dGVEb2N1bWVudENvbnRl
bnRzVVJMIG9mVHlwZTooTlNTdHJpbmcgKil0eXBlTmFtZSBlcnJvcjooTlNFcnJvciAqKilvdXRF
cnJvciA7CgogICAgICAgCgoKCgoKCi0gKHZvaWQpc2V0RmlsZVR5cGU6KE5TU3RyaW5nICopdHlw
ZU5hbWU7Ci0gKE5TU3RyaW5nICopZmlsZVR5cGU7CgoKCgoKLSAodm9pZClzZXRGaWxlVVJMOihO
U1VSTCAqKWFic29sdXRlVVJMIDsKLSAoTlNVUkwgKilmaWxlVVJMIDsKCgoKLSAodm9pZClzZXRG
aWxlTW9kaWZpY2F0aW9uRGF0ZTooTlNEYXRlICopbW9kaWZpY2F0aW9uRGF0ZSA7Ci0gKE5TRGF0
ZSAqKWZpbGVNb2RpZmljYXRpb25EYXRlIDsKCiAgICAgICAKCgoKLSAodm9pZClyZXZlcnREb2N1
bWVudFRvU2F2ZWQ6KGlkKXNlbmRlcjsKCgoKCgotIChCT09MKXJldmVydFRvQ29udGVudHNPZlVS
TDooTlNVUkwgKilhYnNvbHV0ZVVSTCBvZlR5cGU6KE5TU3RyaW5nICopdHlwZU5hbWUgZXJyb3I6
KE5TRXJyb3IgKiopb3V0RXJyb3IgOwoKICAgICAgIAoKCgoKCgoKLSAoQk9PTClyZWFkRnJvbVVS
TDooTlNVUkwgKilhYnNvbHV0ZVVSTCBvZlR5cGU6KE5TU3RyaW5nICopdHlwZU5hbWUgZXJyb3I6
KE5TRXJyb3IgKiopb3V0RXJyb3IgOwoKCgoKCi0gKEJPT0wpcmVhZEZyb21GaWxlV3JhcHBlcjoo
TlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIG9mVHlwZTooTlNTdHJpbmcgKil0eXBlTmFtZSBl
cnJvcjooTlNFcnJvciAqKilvdXRFcnJvciA7CgoKCgoKLSAoQk9PTClyZWFkRnJvbURhdGE6KE5T
RGF0YSAqKWRhdGEgb2ZUeXBlOihOU1N0cmluZyAqKXR5cGVOYW1lIGVycm9yOihOU0Vycm9yICoq
KW91dEVycm9yIDsKCgoKCgoKCi0gKEJPT0wpd3JpdGVUb1VSTDooTlNVUkwgKilhYnNvbHV0ZVVS
TCBvZlR5cGU6KE5TU3RyaW5nICopdHlwZU5hbWUgZXJyb3I6KE5TRXJyb3IgKiopb3V0RXJyb3Ig
OwoKCgoKCi0gKE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlck9mVHlwZTooTlNTdHJpbmcgKil0
eXBlTmFtZSBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvciA7CgoKCgoKLSAoTlNEYXRhICopZGF0
YU9mVHlwZTooTlNTdHJpbmcgKil0eXBlTmFtZSBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvciA7
CgogICAgICAgCiMgMjMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvTlNEb2N1bWVudC5oIiAzCi0gKEJPT0wpd3JpdGVTYWZlbHlUb1VSTDooTlNV
UkwgKilhYnNvbHV0ZVVSTCBvZlR5cGU6KE5TU3RyaW5nICopdHlwZU5hbWUgZm9yU2F2ZU9wZXJh
dGlvbjooTlNTYXZlT3BlcmF0aW9uVHlwZSlzYXZlT3BlcmF0aW9uIGVycm9yOihOU0Vycm9yICoq
KW91dEVycm9yIDsKCgoKCgotIChCT09MKXdyaXRlVG9VUkw6KE5TVVJMICopYWJzb2x1dGVVUkwg
b2ZUeXBlOihOU1N0cmluZyAqKXR5cGVOYW1lIGZvclNhdmVPcGVyYXRpb246KE5TU2F2ZU9wZXJh
dGlvblR5cGUpc2F2ZU9wZXJhdGlvbiBvcmlnaW5hbENvbnRlbnRzVVJMOihOU1VSTCAqKWFic29s
dXRlT3JpZ2luYWxDb250ZW50c1VSTCBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvciA7CiMgMjQ3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNE
b2N1bWVudC5oIiAzCi0gKE5TRGljdGlvbmFyeSAqKWZpbGVBdHRyaWJ1dGVzVG9Xcml0ZVRvVVJM
OihOU1VSTCAqKWFic29sdXRlVVJMIG9mVHlwZTooTlNTdHJpbmcgKil0eXBlTmFtZSBmb3JTYXZl
T3BlcmF0aW9uOihOU1NhdmVPcGVyYXRpb25UeXBlKXNhdmVPcGVyYXRpb24gb3JpZ2luYWxDb250
ZW50c1VSTDooTlNVUkwgKilhYnNvbHV0ZU9yaWdpbmFsQ29udGVudHNVUkwgZXJyb3I6KE5TRXJy
b3IgKiopb3V0RXJyb3IgOwoKCgotIChCT09MKWtlZXBCYWNrdXBGaWxlOwoKICAgICAgIAoKCgot
ICh2b2lkKXNhdmVEb2N1bWVudDooaWQpc2VuZGVyOwoKCgotICh2b2lkKXNhdmVEb2N1bWVudEFz
OihpZClzZW5kZXI7CgoKCi0gKHZvaWQpc2F2ZURvY3VtZW50VG86KGlkKXNlbmRlcjsKIyAyNzcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0Rv
Y3VtZW50LmgiIDMKLSAodm9pZClzYXZlRG9jdW1lbnRXaXRoRGVsZWdhdGU6KGlkKWRlbGVnYXRl
IGRpZFNhdmVTZWxlY3RvcjooU0VMKWRpZFNhdmVTZWxlY3RvciBjb250ZXh0SW5mbzoodm9pZCAq
KWNvbnRleHRJbmZvOwojIDI4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZy
YW1ld29yay9IZWFkZXJzL05TRG9jdW1lbnQuaCIgMwotICh2b2lkKXJ1bk1vZGFsU2F2ZVBhbmVs
Rm9yU2F2ZU9wZXJhdGlvbjooTlNTYXZlT3BlcmF0aW9uVHlwZSlzYXZlT3BlcmF0aW9uIGRlbGVn
YXRlOihpZClkZWxlZ2F0ZSBkaWRTYXZlU2VsZWN0b3I6KFNFTClkaWRTYXZlU2VsZWN0b3IgY29u
dGV4dEluZm86KHZvaWQgKiljb250ZXh0SW5mbzsKCgoKLSAoQk9PTClzaG91bGRSdW5TYXZlUGFu
ZWxXaXRoQWNjZXNzb3J5VmlldzsKCgoKLSAoQk9PTClwcmVwYXJlU2F2ZVBhbmVsOihOU1NhdmVQ
YW5lbCAqKXNhdmVQYW5lbDsKCgoKLSAoQk9PTClmaWxlTmFtZUV4dGVuc2lvbldhc0hpZGRlbklu
TGFzdFJ1blNhdmVQYW5lbDsKCgoKLSAoTlNTdHJpbmcgKilmaWxlVHlwZUZyb21MYXN0UnVuU2F2
ZVBhbmVsOwoKCgoKCgoKLSAodm9pZClzYXZlVG9VUkw6KE5TVVJMICopYWJzb2x1dGVVUkwgb2ZU
eXBlOihOU1N0cmluZyAqKXR5cGVOYW1lIGZvclNhdmVPcGVyYXRpb246KE5TU2F2ZU9wZXJhdGlv
blR5cGUpc2F2ZU9wZXJhdGlvbiBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUgZGlkU2F2ZVNlbGVjdG9y
OihTRUwpZGlkU2F2ZVNlbGVjdG9yIGNvbnRleHRJbmZvOih2b2lkICopY29udGV4dEluZm8gOwoK
CgoKCi0gKEJPT0wpc2F2ZVRvVVJMOihOU1VSTCAqKWFic29sdXRlVVJMIG9mVHlwZTooTlNTdHJp
bmcgKil0eXBlTmFtZSBmb3JTYXZlT3BlcmF0aW9uOihOU1NhdmVPcGVyYXRpb25UeXBlKXNhdmVP
cGVyYXRpb24gZXJyb3I6KE5TRXJyb3IgKiopb3V0RXJyb3IgOwoKICAgICAgIAoKCgotIChCT09M
KWhhc1VuYXV0b3NhdmVkQ2hhbmdlcyA7CiMgMzMzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNEb2N1bWVudC5oIiAzCi0gKHZvaWQpYXV0b3Nh
dmVEb2N1bWVudFdpdGhEZWxlZ2F0ZTooaWQpZGVsZWdhdGUgZGlkQXV0b3NhdmVTZWxlY3Rvcjoo
U0VMKWRpZEF1dG9zYXZlU2VsZWN0b3IgY29udGV4dEluZm86KHZvaWQgKiljb250ZXh0SW5mbyA7
CgoKCi0gKE5TU3RyaW5nICopYXV0b3NhdmluZ0ZpbGVUeXBlIDsKCgoKLSAodm9pZClzZXRBdXRv
c2F2ZWRDb250ZW50c0ZpbGVVUkw6KE5TVVJMICopYWJzb2x1dGVVUkwgOwotIChOU1VSTCAqKWF1
dG9zYXZlZENvbnRlbnRzRmlsZVVSTCA7CgogICAgICAgCgoKCgoKCgotICh2b2lkKWNhbkNsb3Nl
RG9jdW1lbnRXaXRoRGVsZWdhdGU6KGlkKWRlbGVnYXRlIHNob3VsZENsb3NlU2VsZWN0b3I6KFNF
TClzaG91bGRDbG9zZVNlbGVjdG9yIGNvbnRleHRJbmZvOih2b2lkICopY29udGV4dEluZm87CgoK
Ci0gKHZvaWQpY2xvc2U7CgogICAgICAgCgoKCi0gKHZvaWQpcnVuUGFnZUxheW91dDooaWQpc2Vu
ZGVyOwoKCgoKCgoKLSAodm9pZClydW5Nb2RhbFBhZ2VMYXlvdXRXaXRoUHJpbnRJbmZvOihOU1By
aW50SW5mbyAqKXByaW50SW5mbyBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUgZGlkUnVuU2VsZWN0b3I6
KFNFTClkaWRSdW5TZWxlY3RvciBjb250ZXh0SW5mbzoodm9pZCAqKWNvbnRleHRJbmZvOwoKCgot
IChCT09MKXByZXBhcmVQYWdlTGF5b3V0OihOU1BhZ2VMYXlvdXQgKilwYWdlTGF5b3V0OwoKCgot
IChCT09MKXNob3VsZENoYW5nZVByaW50SW5mbzooTlNQcmludEluZm8gKiluZXdQcmludEluZm87
CgoKCi0gKHZvaWQpc2V0UHJpbnRJbmZvOihOU1ByaW50SW5mbyAqKXByaW50SW5mbzsKLSAoTlNQ
cmludEluZm8gKilwcmludEluZm87CgoKCi0gKHZvaWQpcHJpbnREb2N1bWVudDooaWQpc2VuZGVy
OwojIDM5NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFk
ZXJzL05TRG9jdW1lbnQuaCIgMwotICh2b2lkKXByaW50RG9jdW1lbnRXaXRoU2V0dGluZ3M6KE5T
RGljdGlvbmFyeSAqKXByaW50U2V0dGluZ3Mgc2hvd1ByaW50UGFuZWw6KEJPT0wpc2hvd1ByaW50
UGFuZWwgZGVsZWdhdGU6KGlkKWRlbGVnYXRlIGRpZFByaW50U2VsZWN0b3I6KFNFTClkaWRQcmlu
dFNlbGVjdG9yIGNvbnRleHRJbmZvOih2b2lkICopY29udGV4dEluZm8gOwoKCgotIChOU1ByaW50
T3BlcmF0aW9uICopcHJpbnRPcGVyYXRpb25XaXRoU2V0dGluZ3M6KE5TRGljdGlvbmFyeSAqKXBy
aW50U2V0dGluZ3MgZXJyb3I6KE5TRXJyb3IgKiopb3V0RXJyb3IgOwoKCgoKCi0gKHZvaWQpcnVu
TW9kYWxQcmludE9wZXJhdGlvbjooTlNQcmludE9wZXJhdGlvbiAqKXByaW50T3BlcmF0aW9uIGRl
bGVnYXRlOihpZClkZWxlZ2F0ZSBkaWRSdW5TZWxlY3RvcjooU0VMKWRpZFJ1blNlbGVjdG9yIGNv
bnRleHRJbmZvOih2b2lkICopY29udGV4dEluZm87CgogICAgICAgCgoKCi0gKEJPT0wpaXNEb2N1
bWVudEVkaXRlZDsKCgoKLSAodm9pZCl1cGRhdGVDaGFuZ2VDb3VudDooTlNEb2N1bWVudENoYW5n
ZVR5cGUpY2hhbmdlOwoKCi0gKHZvaWQpc2V0VW5kb01hbmFnZXI6KE5TVW5kb01hbmFnZXIgKil1
bmRvTWFuYWdlcjsKLSAoTlNVbmRvTWFuYWdlciAqKXVuZG9NYW5hZ2VyOwoKCi0gKHZvaWQpc2V0
SGFzVW5kb01hbmFnZXI6KEJPT0wpaGFzVW5kb01hbmFnZXI7Ci0gKEJPT0wpaGFzVW5kb01hbmFn
ZXI7CgogICAgICAgCiMgNDM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvTlNEb2N1bWVudC5oIiAzCi0gKHZvaWQpcHJlc2VudEVycm9yOihOU0Vy
cm9yICopZXJyb3IgbW9kYWxGb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93IGRlbGVnYXRlOihp
ZClkZWxlZ2F0ZSBkaWRQcmVzZW50U2VsZWN0b3I6KFNFTClkaWRQcmVzZW50U2VsZWN0b3IgY29u
dGV4dEluZm86KHZvaWQgKiljb250ZXh0SW5mbyA7Ci0gKEJPT0wpcHJlc2VudEVycm9yOihOU0Vy
cm9yICopZXJyb3IgOwotIChOU0Vycm9yICopd2lsbFByZXNlbnRFcnJvcjooTlNFcnJvciAqKWVy
cm9yIDsKCiAgICAgICAKCgoKLSAodm9pZCltYWtlV2luZG93Q29udHJvbGxlcnM7CgoKCi0gKE5T
U3RyaW5nICopd2luZG93TmliTmFtZTsKCgoKLSAodm9pZCl3aW5kb3dDb250cm9sbGVyV2lsbExv
YWROaWI6KE5TV2luZG93Q29udHJvbGxlciAqKXdpbmRvd0NvbnRyb2xsZXI7Ci0gKHZvaWQpd2lu
ZG93Q29udHJvbGxlckRpZExvYWROaWI6KE5TV2luZG93Q29udHJvbGxlciAqKXdpbmRvd0NvbnRy
b2xsZXI7CgoKCi0gKHZvaWQpc2V0V2luZG93OihOU1dpbmRvdyAqKXdpbmRvdzsKCgoKLSAodm9p
ZClhZGRXaW5kb3dDb250cm9sbGVyOihOU1dpbmRvd0NvbnRyb2xsZXIgKil3aW5kb3dDb250cm9s
bGVyOwotICh2b2lkKXJlbW92ZVdpbmRvd0NvbnRyb2xsZXI6KE5TV2luZG93Q29udHJvbGxlciAq
KXdpbmRvd0NvbnRyb2xsZXI7CgoKCi0gKHZvaWQpc2hvd1dpbmRvd3M7CgoKCi0gKE5TQXJyYXkg
Kil3aW5kb3dDb250cm9sbGVyczsKCgoKCgoKCi0gKHZvaWQpc2hvdWxkQ2xvc2VXaW5kb3dDb250
cm9sbGVyOihOU1dpbmRvd0NvbnRyb2xsZXIgKil3aW5kb3dDb250cm9sbGVyIGRlbGVnYXRlOihp
ZClkZWxlZ2F0ZSBzaG91bGRDbG9zZVNlbGVjdG9yOihTRUwpc2hvdWxkQ2xvc2VTZWxlY3RvciBj
b250ZXh0SW5mbzoodm9pZCAqKWNvbnRleHRJbmZvOwoKCgotIChOU1N0cmluZyAqKWRpc3BsYXlO
YW1lOwoKCgotIChOU1dpbmRvdyAqKXdpbmRvd0ZvclNoZWV0IDsKCiAgICAgICAKCgoKKyAoTlNB
cnJheSAqKXJlYWRhYmxlVHlwZXM7CgoKCisgKE5TQXJyYXkgKil3cml0YWJsZVR5cGVzOwoKCgor
IChCT09MKWlzTmF0aXZlVHlwZTooTlNTdHJpbmcgKil0eXBlOwoKCgoKCgoKLSAoTlNBcnJheSAq
KXdyaXRhYmxlVHlwZXNGb3JTYXZlT3BlcmF0aW9uOihOU1NhdmVPcGVyYXRpb25UeXBlKXNhdmVP
cGVyYXRpb24gOwoKCgoKCi0gKE5TU3RyaW5nICopZmlsZU5hbWVFeHRlbnNpb25Gb3JUeXBlOihO
U1N0cmluZyAqKXR5cGVOYW1lIHNhdmVPcGVyYXRpb246KE5TU2F2ZU9wZXJhdGlvblR5cGUpc2F2
ZU9wZXJhdGlvbiA7CgogICAgICAgCgoKCi0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRl
bTooaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+KWFuSXRlbTsKCkBlbmQKCkBpbnRl
cmZhY2UgTlNEb2N1bWVudChOU0RlcHJlY2F0ZWQpCgogICAgICAgCgoKCi0gKE5TRGF0YSAqKWRh
dGFSZXByZXNlbnRhdGlvbk9mVHlwZTooTlNTdHJpbmcgKil0eXBlIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKLSAoTlNEaWN0aW9uYXJ5ICopZmlsZUF0dHJpYnV0ZXNUb1dyaXRlVG9GaWxl
OihOU1N0cmluZyAqKWZ1bGxEb2N1bWVudFBhdGggb2ZUeXBlOihOU1N0cmluZyAqKWRvY3VtZW50
VHlwZU5hbWUgc2F2ZU9wZXJhdGlvbjooTlNTYXZlT3BlcmF0aW9uVHlwZSlzYXZlT3BlcmF0aW9u
VHlwZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKE5TU3RyaW5nICopZmlsZU5hbWUg
X19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBw
ZXJSZXByZXNlbnRhdGlvbk9mVHlwZTooTlNTdHJpbmcgKil0eXBlIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKLSAoaWQpaW5pdFdpdGhDb250ZW50c09mRmlsZTooTlNTdHJpbmcgKilhYnNv
bHV0ZVBhdGggb2ZUeXBlOihOU1N0cmluZyAqKXR5cGVOYW1lIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKLSAoaWQpaW5pdFdpdGhDb250ZW50c09mVVJMOihOU1VSTCAqKWFic29sdXRlVVJM
IG9mVHlwZTooTlNTdHJpbmcgKil0eXBlTmFtZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
Ci0gKEJPT0wpbG9hZERhdGFSZXByZXNlbnRhdGlvbjooTlNEYXRhICopZGF0YSBvZlR5cGU6KE5T
U3RyaW5nICopdHlwZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKEJPT0wpbG9hZEZp
bGVXcmFwcGVyUmVwcmVzZW50YXRpb246KE5TRmlsZVdyYXBwZXIgKil3cmFwcGVyIG9mVHlwZToo
TlNTdHJpbmcgKil0eXBlIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZClwcmlu
dFNob3dpbmdQcmludFBhbmVsOihCT09MKWZsYWcgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
OwotIChCT09MKXJlYWRGcm9tRmlsZTooTlNTdHJpbmcgKilmaWxlTmFtZSBvZlR5cGU6KE5TU3Ry
aW5nICopdHlwZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKEJPT0wpcmVhZEZyb21V
Ukw6KE5TVVJMICopdXJsIG9mVHlwZTooTlNTdHJpbmcgKil0eXBlIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKLSAoQk9PTClyZXZlcnRUb1NhdmVkRnJvbUZpbGU6KE5TU3RyaW5nICopZmls
ZU5hbWUgb2ZUeXBlOihOU1N0cmluZyAqKXR5cGUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
OwotIChCT09MKXJldmVydFRvU2F2ZWRGcm9tVVJMOihOU1VSTCAqKXVybCBvZlR5cGU6KE5TU3Ry
aW5nICopdHlwZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKE5TSW50ZWdlcilydW5N
b2RhbFBhZ2VMYXlvdXRXaXRoUHJpbnRJbmZvOihOU1ByaW50SW5mbyAqKXByaW50SW5mbyBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKHZvaWQpc2F2ZVRvRmlsZTooTlNTdHJpbmcgKilm
aWxlTmFtZSBzYXZlT3BlcmF0aW9uOihOU1NhdmVPcGVyYXRpb25UeXBlKXNhdmVPcGVyYXRpb24g
ZGVsZWdhdGU6KGlkKWRlbGVnYXRlIGRpZFNhdmVTZWxlY3RvcjooU0VMKWRpZFNhdmVTZWxlY3Rv
ciBjb250ZXh0SW5mbzoodm9pZCAqKWNvbnRleHRJbmZvIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKLSAodm9pZClzZXRGaWxlTmFtZTooTlNTdHJpbmcgKilmaWxlTmFtZSBfX2F0dHJpYnV0
ZV9fKChkZXByZWNhdGVkKSk7Ci0gKEJPT0wpd3JpdGVUb0ZpbGU6KE5TU3RyaW5nICopZmlsZU5h
bWUgb2ZUeXBlOihOU1N0cmluZyAqKXR5cGUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwot
IChCT09MKXdyaXRlVG9GaWxlOihOU1N0cmluZyAqKWZ1bGxEb2N1bWVudFBhdGggb2ZUeXBlOihO
U1N0cmluZyAqKWRvY3VtZW50VHlwZU5hbWUgb3JpZ2luYWxGaWxlOihOU1N0cmluZyAqKWZ1bGxP
cmlnaW5hbERvY3VtZW50UGF0aCBzYXZlT3BlcmF0aW9uOihOU1NhdmVPcGVyYXRpb25UeXBlKXNh
dmVPcGVyYXRpb25UeXBlIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoQk9PTCl3cml0
ZVRvVVJMOihOU1VSTCAqKXVybCBvZlR5cGU6KE5TU3RyaW5nICopdHlwZSBfX2F0dHJpYnV0ZV9f
KChkZXByZWNhdGVkKSk7Ci0gKEJPT0wpd3JpdGVXaXRoQmFja3VwVG9GaWxlOihOU1N0cmluZyAq
KWZ1bGxEb2N1bWVudFBhdGggb2ZUeXBlOihOU1N0cmluZyAqKWRvY3VtZW50VHlwZU5hbWUgc2F2
ZU9wZXJhdGlvbjooTlNTYXZlT3BlcmF0aW9uVHlwZSlzYXZlT3BlcmF0aW9uVHlwZSBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CgpAZW5kCiMgNTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TRG9jdW1lbnRDb250
cm9sbGVyLmgiIDEgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvTlNEb2N1bWVudENvbnRyb2xsZXIuaCIgMwpAY2xhc3MgTlNBcnJheSwg
TlNEb2N1bWVudCwgTlNFcnJvciwgTlNNZW51SXRlbSwgTlNNdXRhYmxlRGljdGlvbmFyeSwgTlNP
cGVuUGFuZWwsIE5TVVJMLCBOU1dpbmRvdzsKCkBpbnRlcmZhY2UgTlNEb2N1bWVudENvbnRyb2xs
ZXIgOiBOU09iamVjdDxOU0NvZGluZywgTlNVc2VySW50ZXJmYWNlVmFsaWRhdGlvbnM+IHsKICAg
IEBwcml2YXRlCiAgICBpZCBfZG9jdW1lbnRzOwogICAgaWQgX21vcmVWYXJzOwogICAgTlNBcnJh
eSAqX2NhY2hlZFR5cGVEZXNjcmlwdGlvbnM7CiAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfcmVj
ZW50czsKICAgIGludCBfcmVjZW50c0xpbWl0Owp9CgogICAgICAgCgoKCgoKKyAoaWQpc2hhcmVk
RG9jdW1lbnRDb250cm9sbGVyOwoKCgotIChpZClpbml0OwoKICAgICAgIAoKCgotIChOU0FycmF5
ICopZG9jdW1lbnRzOwoKCgotIChpZCljdXJyZW50RG9jdW1lbnQ7CgoKCi0gKE5TU3RyaW5nICop
Y3VycmVudERpcmVjdG9yeTsKCgoKCgotIChpZClkb2N1bWVudEZvclVSTDooTlNVUkwgKilhYnNv
bHV0ZVVSTCA7CgoKCi0gKGlkKWRvY3VtZW50Rm9yV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdzsK
CgoKLSAodm9pZClhZGREb2N1bWVudDooTlNEb2N1bWVudCAqKWRvY3VtZW50OwotICh2b2lkKXJl
bW92ZURvY3VtZW50OihOU0RvY3VtZW50ICopZG9jdW1lbnQ7CgogICAgICAgCgoKCi0gKHZvaWQp
bmV3RG9jdW1lbnQ6KGlkKXNlbmRlcjsKCgoKCgotIChpZClvcGVuVW50aXRsZWREb2N1bWVudEFu
ZERpc3BsYXk6KEJPT0wpZGlzcGxheURvY3VtZW50IGVycm9yOihOU0Vycm9yICoqKW91dEVycm9y
IDsKCgoKCgotIChpZCltYWtlVW50aXRsZWREb2N1bWVudE9mVHlwZTooTlNTdHJpbmcgKil0eXBl
TmFtZSBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvciA7CgogICAgICAgCgoKCi0gKHZvaWQpb3Bl
bkRvY3VtZW50OihpZClzZW5kZXI7CgoKCi0gKE5TQXJyYXkgKilVUkxzRnJvbVJ1bm5pbmdPcGVu
UGFuZWw7CgoKCi0gKE5TSW50ZWdlcilydW5Nb2RhbE9wZW5QYW5lbDooTlNPcGVuUGFuZWwgKilv
cGVuUGFuZWwgZm9yVHlwZXM6KE5TQXJyYXkgKil0eXBlczsKCgoKCgotIChpZClvcGVuRG9jdW1l
bnRXaXRoQ29udGVudHNPZlVSTDooTlNVUkwgKilhYnNvbHV0ZVVSTCBkaXNwbGF5OihCT09MKWRp
c3BsYXlEb2N1bWVudCBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvciA7CgoKCgoKLSAoaWQpbWFr
ZURvY3VtZW50V2l0aENvbnRlbnRzT2ZVUkw6KE5TVVJMICopYWJzb2x1dGVVUkwgb2ZUeXBlOihO
U1N0cmluZyAqKXR5cGVOYW1lIGVycm9yOihOU0Vycm9yICoqKW91dEVycm9yIDsKCiAgICAgICAK
CgoKLSAoQk9PTClyZW9wZW5Eb2N1bWVudEZvclVSTDooTlNVUkwgKilhYnNvbHV0ZURvY3VtZW50
VVJMIHdpdGhDb250ZW50c09mVVJMOihOU1VSTCAqKWFic29sdXRlRG9jdW1lbnRDb250ZW50c1VS
TCBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvciA7CgoKCi0gKGlkKW1ha2VEb2N1bWVudEZvclVS
TDooTlNVUkwgKilhYnNvbHV0ZURvY3VtZW50VVJMIHdpdGhDb250ZW50c09mVVJMOihOU1VSTCAq
KWFic29sdXRlRG9jdW1lbnRDb250ZW50c1VSTCBvZlR5cGU6KE5TU3RyaW5nICopdHlwZU5hbWUg
ZXJyb3I6KE5TRXJyb3IgKiopb3V0RXJyb3IgOwoKICAgICAgIAoKCgotICh2b2lkKXNldEF1dG9z
YXZpbmdEZWxheTooTlNUaW1lSW50ZXJ2YWwpYXV0b3NhdmluZ0RlbGF5IDsKLSAoTlNUaW1lSW50
ZXJ2YWwpYXV0b3NhdmluZ0RlbGF5IDsKCiAgICAgICAKCgoKLSAodm9pZClzYXZlQWxsRG9jdW1l
bnRzOihpZClzZW5kZXI7CgogICAgICAgCgoKCi0gKEJPT0wpaGFzRWRpdGVkRG9jdW1lbnRzOwoK
CgoKCi0gKHZvaWQpcmV2aWV3VW5zYXZlZERvY3VtZW50c1dpdGhBbGVydFRpdGxlOihOU1N0cmlu
ZyAqKXRpdGxlIGNhbmNlbGxhYmxlOihCT09MKWNhbmNlbGxhYmxlIGRlbGVnYXRlOihpZClkZWxl
Z2F0ZSBkaWRSZXZpZXdBbGxTZWxlY3RvcjooU0VMKWRpZFJldmlld0FsbFNlbGVjdG9yIGNvbnRl
eHRJbmZvOih2b2lkICopY29udGV4dEluZm87CgoKCgoKLSAodm9pZCljbG9zZUFsbERvY3VtZW50
c1dpdGhEZWxlZ2F0ZTooaWQpZGVsZWdhdGUgZGlkQ2xvc2VBbGxTZWxlY3RvcjooU0VMKWRpZENs
b3NlQWxsU2VsZWN0b3IgY29udGV4dEluZm86KHZvaWQgKiljb250ZXh0SW5mbzsKCiAgICAgICAK
IyAxNTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9OU0RvY3VtZW50Q29udHJvbGxlci5oIiAzCi0gKHZvaWQpcHJlc2VudEVycm9yOihOU0Vycm9y
ICopZXJyb3IgbW9kYWxGb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93IGRlbGVnYXRlOihpZClk
ZWxlZ2F0ZSBkaWRQcmVzZW50U2VsZWN0b3I6KFNFTClkaWRQcmVzZW50U2VsZWN0b3IgY29udGV4
dEluZm86KHZvaWQgKiljb250ZXh0SW5mbyA7Ci0gKEJPT0wpcHJlc2VudEVycm9yOihOU0Vycm9y
ICopZXJyb3IgOwotIChOU0Vycm9yICopd2lsbFByZXNlbnRFcnJvcjooTlNFcnJvciAqKWVycm9y
IDsKCiAgICAgICAKCgoKLSAoTlNVSW50ZWdlciltYXhpbXVtUmVjZW50RG9jdW1lbnRDb3VudCA7
CgoKCi0gKHZvaWQpY2xlYXJSZWNlbnREb2N1bWVudHM6KGlkKXNlbmRlcjsKCgoKLSAodm9pZClu
b3RlTmV3UmVjZW50RG9jdW1lbnQ6KE5TRG9jdW1lbnQgKilkb2N1bWVudDsKCgoKLSAodm9pZClu
b3RlTmV3UmVjZW50RG9jdW1lbnRVUkw6KE5TVVJMICopYWJzb2x1dGVVUkw7CgoKCi0gKE5TQXJy
YXkgKilyZWNlbnREb2N1bWVudFVSTHM7CgogICAgICAgCgoKCi0gKE5TU3RyaW5nICopZGVmYXVs
dFR5cGUgOwoKCgoKCi0gKE5TU3RyaW5nICopdHlwZUZvckNvbnRlbnRzT2ZVUkw6KE5TVVJMICop
aW5BYnNvbHV0ZVVSTCBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvciA7CgoKCi0gKE5TQXJyYXkg
Kilkb2N1bWVudENsYXNzTmFtZXMgOwoKCgotIChDbGFzcylkb2N1bWVudENsYXNzRm9yVHlwZToo
TlNTdHJpbmcgKil0eXBlTmFtZTsKCgoKLSAoTlNTdHJpbmcgKilkaXNwbGF5TmFtZUZvclR5cGU6
KE5TU3RyaW5nICopdHlwZU5hbWU7CgogICAgICAgCgoKCi0gKEJPT0wpdmFsaWRhdGVVc2VySW50
ZXJmYWNlSXRlbTooaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+KWFuSXRlbTsKCkBl
bmQKCkBpbnRlcmZhY2UgTlNEb2N1bWVudENvbnRyb2xsZXIoTlNEZXByZWNhdGVkKQoKICAgICAg
IAoKCgotIChOU0FycmF5ICopZmlsZUV4dGVuc2lvbnNGcm9tVHlwZTooTlNTdHJpbmcgKil0eXBl
TmFtZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKE5TU3RyaW5nICopdHlwZUZyb21G
aWxlRXh0ZW5zaW9uOihOU1N0cmluZyAqKWZpbGVOYW1lRXh0ZW5zaW9uT3JIRlNGaWxlVHlwZSBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCi0gKGlkKWRvY3VtZW50Rm9yRmlsZU5hbWU6
KE5TU3RyaW5nICopZmlsZU5hbWUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChOU0Fy
cmF5ICopZmlsZU5hbWVzRnJvbVJ1bm5pbmdPcGVuUGFuZWwgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwotIChpZCltYWtlRG9jdW1lbnRXaXRoQ29udGVudHNPZkZpbGU6KE5TU3RyaW5nICop
ZmlsZU5hbWUgb2ZUeXBlOihOU1N0cmluZyAqKXR5cGUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwotIChpZCltYWtlRG9jdW1lbnRXaXRoQ29udGVudHNPZlVSTDooTlNVUkwgKil1cmwgb2ZU
eXBlOihOU1N0cmluZyAqKXR5cGUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChpZClt
YWtlVW50aXRsZWREb2N1bWVudE9mVHlwZTooTlNTdHJpbmcgKil0eXBlIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKLSAoaWQpb3BlbkRvY3VtZW50V2l0aENvbnRlbnRzT2ZGaWxlOihOU1N0
cmluZyAqKWZpbGVOYW1lIGRpc3BsYXk6KEJPT0wpZGlzcGxheSBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7Ci0gKGlkKW9wZW5Eb2N1bWVudFdpdGhDb250ZW50c09mVVJMOihOU1VSTCAqKXVy
bCBkaXNwbGF5OihCT09MKWRpc3BsYXkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChp
ZClvcGVuVW50aXRsZWREb2N1bWVudE9mVHlwZTooTlNTdHJpbmcqKXR5cGUgZGlzcGxheTooQk9P
TClkaXNwbGF5IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZClzZXRTaG91bGRD
cmVhdGVVSTooQk9PTClmbGFnIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoQk9PTClz
aG91bGRDcmVhdGVVSSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgpAZW5kCiMgNTIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQu
aCIgMiAzCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU0VQU0ltYWdlUmVwLmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNFUFNJbWFnZVJlcC5oIiAzCkBjbGFzcyBO
U1BERkltYWdlUmVwOwoKQGludGVyZmFjZSBOU0VQU0ltYWdlUmVwIDogTlNJbWFnZVJlcCB7Cgog
ICAgTlNQb2ludCBfYkJveE9yaWdpbjsKICAgIE5TRGF0YSAqX2Vwc0RhdGE7CiAgICBOU1BERklt
YWdlUmVwKiBfcGRmSW1hZ2VSZXA7Cn0KCisgKGlkKWltYWdlUmVwV2l0aERhdGE6KE5TRGF0YSAq
KWVwc0RhdGE7Ci0gKGlkKWluaXRXaXRoRGF0YTooTlNEYXRhICopZXBzRGF0YTsKCi0gKHZvaWQp
cHJlcGFyZUdTdGF0ZTsKCi0gKE5TRGF0YSAqKUVQU1JlcHJlc2VudGF0aW9uOwoKLSAoTlNSZWN0
KWJvdW5kaW5nQm94OwoKQGVuZAojIDU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwoKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNFdmVudC5oIiAxIDMKCgoKCgoK
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJz
L05TVG91Y2guaCIgMSAzCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9OU1RvdWNoLmgiIDMKQGNsYXNzIE5TVmlldzsKCgplbnVtIHsKICAg
IE5TVG91Y2hQaGFzZUJlZ2FuID0gMVUgPDwgMCwKICAgIE5TVG91Y2hQaGFzZU1vdmVkID0gMVUg
PDwgMSwKICAgIE5TVG91Y2hQaGFzZVN0YXRpb25hcnkgPSAxVSA8PCAyLAogICAgTlNUb3VjaFBo
YXNlRW5kZWQgPSAxVSA8PCAzLAogICAgTlNUb3VjaFBoYXNlQ2FuY2VsbGVkID0gMVUgPDwgNCwK
CiAgICBOU1RvdWNoUGhhc2VUb3VjaGluZyA9IE5TVG91Y2hQaGFzZUJlZ2FuIHwgTlNUb3VjaFBo
YXNlTW92ZWQgfCBOU1RvdWNoUGhhc2VTdGF0aW9uYXJ5LAogICAgTlNUb3VjaFBoYXNlQW55ID0g
KDkyMjMzNzIwMzY4NTQ3NzU4MDdMICogMlVMICsgMVVMKQp9OwoKdHlwZWRlZiBOU1VJbnRlZ2Vy
IE5TVG91Y2hQaGFzZTsKCgoKCgpAaW50ZXJmYWNlIE5TVG91Y2ggOiBOU09iamVjdCA8TlNDb3B5
aW5nPiB7CkBwcml2YXRlCiAgICBOU0ludGVnZXIgX2luZGV4OwogICAgaWQgX2lkZW50aXR5Owog
ICAgTlNUb3VjaFBoYXNlIF9waGFzZTsKICAgIE5TUG9pbnQgX25vcm1hbGl6ZWRQb3NpdGlvbjsK
ICAgIE5TSW50ZWdlciBfcHJpdmF0ZUZsYWdzOwogICAgTlNWaWV3ICpfdmlldzsKICAgIGlkIF9y
ZXNlcnZlZDE7CiAgICBpZCBfcmVzZXJ2ZWQyOwogICAgaWQgX3Jlc2VydmVkMzsKICAgIGlkIF9y
ZXNlcnZlZDQ7CgogICAgaWQgX2RldmljZTsKICAgIE5TU2l6ZSBfZGV2aWNlU2l6ZTsKICAgIGlk
IF9yZXNlcnZlZDU7CiAgICBpZCBfcmVzZXJ2ZWQ2OwogICAgaWQgX3Jlc2VydmVkNzsKICAgIGlk
IF9yZXNlcnZlZDg7Cn0KCgoKCkBwcm9wZXJ0eShyZWFkb25seSwgcmV0YWluKSBpZDxOU09iamVj
dCwgTlNDb3B5aW5nPiBpZGVudGl0eTsKQHByb3BlcnR5KHJlYWRvbmx5KSBOU1RvdWNoUGhhc2Ug
cGhhc2U7CkBwcm9wZXJ0eShyZWFkb25seSkgTlNQb2ludCBub3JtYWxpemVkUG9zaXRpb247CkBw
cm9wZXJ0eShyZWFkb25seSkgQk9PTCBpc1Jlc3Rpbmc7CgoKQHByb3BlcnR5KHJlYWRvbmx5LCBy
ZXRhaW4pIGlkIGRldmljZTsKCgoKQHByb3BlcnR5KHJlYWRvbmx5KSBOU1NpemUgZGV2aWNlU2l6
ZTsKCkBlbmQKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvTlNFdmVudC5oIiAyIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TRXZlbnQuaCIgMwpAY2xhc3MgTlNHcmFwaGljc0Nv
bnRleHQsIE5TV2luZG93LCBOU1RyYWNraW5nQXJlYSwgTlNTZXQ7CgplbnVtIHsKICAgIE5TTGVm
dE1vdXNlRG93biA9IDEsCiAgICBOU0xlZnRNb3VzZVVwID0gMiwKICAgIE5TUmlnaHRNb3VzZURv
d24gPSAzLAogICAgTlNSaWdodE1vdXNlVXAgPSA0LAogICAgTlNNb3VzZU1vdmVkID0gNSwKICAg
IE5TTGVmdE1vdXNlRHJhZ2dlZCA9IDYsCiAgICBOU1JpZ2h0TW91c2VEcmFnZ2VkID0gNywKICAg
IE5TTW91c2VFbnRlcmVkID0gOCwKICAgIE5TTW91c2VFeGl0ZWQgPSA5LAogICAgTlNLZXlEb3du
ID0gMTAsCiAgICBOU0tleVVwID0gMTEsCiAgICBOU0ZsYWdzQ2hhbmdlZCA9IDEyLAogICAgTlNB
cHBLaXREZWZpbmVkID0gMTMsCiAgICBOU1N5c3RlbURlZmluZWQgPSAxNCwKICAgIE5TQXBwbGlj
YXRpb25EZWZpbmVkID0gMTUsCiAgICBOU1BlcmlvZGljID0gMTYsCiAgICBOU0N1cnNvclVwZGF0
ZSA9IDE3LAogICAgTlNTY3JvbGxXaGVlbCA9IDIyLAoKICAgIE5TVGFibGV0UG9pbnQgPSAyMywK
ICAgIE5TVGFibGV0UHJveGltaXR5ID0gMjQsCgogICAgTlNPdGhlck1vdXNlRG93biA9IDI1LAog
ICAgTlNPdGhlck1vdXNlVXAgPSAyNiwKICAgIE5TT3RoZXJNb3VzZURyYWdnZWQgPSAyNywKCgog
ICAgTlNFdmVudFR5cGVHZXN0dXJlID0gMjksCiAgICBOU0V2ZW50VHlwZU1hZ25pZnkgPSAzMCwK
ICAgIE5TRXZlbnRUeXBlU3dpcGUgPSAzMSwKICAgIE5TRXZlbnRUeXBlUm90YXRlID0gMTgsCiAg
ICBOU0V2ZW50VHlwZUJlZ2luR2VzdHVyZSA9IDE5LAogICAgTlNFdmVudFR5cGVFbmRHZXN0dXJl
ID0gMjAKCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU0V2ZW50VHlwZTsKCgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyBOU0V2ZW50TWFzazsKCmVudW0gewogICAgTlNMZWZ0TW91c2VEb3duTWFz
ayA9IDEgPDwgTlNMZWZ0TW91c2VEb3duLAogICAgTlNMZWZ0TW91c2VVcE1hc2sgPSAxIDw8IE5T
TGVmdE1vdXNlVXAsCiAgICBOU1JpZ2h0TW91c2VEb3duTWFzayA9IDEgPDwgTlNSaWdodE1vdXNl
RG93biwKICAgIE5TUmlnaHRNb3VzZVVwTWFzayA9IDEgPDwgTlNSaWdodE1vdXNlVXAsCiAgICBO
U01vdXNlTW92ZWRNYXNrID0gMSA8PCBOU01vdXNlTW92ZWQsCiAgICBOU0xlZnRNb3VzZURyYWdn
ZWRNYXNrID0gMSA8PCBOU0xlZnRNb3VzZURyYWdnZWQsCiAgICBOU1JpZ2h0TW91c2VEcmFnZ2Vk
TWFzayA9IDEgPDwgTlNSaWdodE1vdXNlRHJhZ2dlZCwKICAgIE5TTW91c2VFbnRlcmVkTWFzayA9
IDEgPDwgTlNNb3VzZUVudGVyZWQsCiAgICBOU01vdXNlRXhpdGVkTWFzayA9IDEgPDwgTlNNb3Vz
ZUV4aXRlZCwKICAgIE5TS2V5RG93bk1hc2sgPSAxIDw8IE5TS2V5RG93biwKICAgIE5TS2V5VXBN
YXNrID0gMSA8PCBOU0tleVVwLAogICAgTlNGbGFnc0NoYW5nZWRNYXNrID0gMSA8PCBOU0ZsYWdz
Q2hhbmdlZCwKICAgIE5TQXBwS2l0RGVmaW5lZE1hc2sgPSAxIDw8IE5TQXBwS2l0RGVmaW5lZCwK
ICAgIE5TU3lzdGVtRGVmaW5lZE1hc2sgPSAxIDw8IE5TU3lzdGVtRGVmaW5lZCwKICAgIE5TQXBw
bGljYXRpb25EZWZpbmVkTWFzayA9IDEgPDwgTlNBcHBsaWNhdGlvbkRlZmluZWQsCiAgICBOU1Bl
cmlvZGljTWFzayA9IDEgPDwgTlNQZXJpb2RpYywKICAgIE5TQ3Vyc29yVXBkYXRlTWFzayA9IDEg
PDwgTlNDdXJzb3JVcGRhdGUsCiAgICBOU1Njcm9sbFdoZWVsTWFzayA9IDEgPDwgTlNTY3JvbGxX
aGVlbCwKCiAgICBOU1RhYmxldFBvaW50TWFzayA9IDEgPDwgTlNUYWJsZXRQb2ludCwKICAgIE5T
VGFibGV0UHJveGltaXR5TWFzayA9IDEgPDwgTlNUYWJsZXRQcm94aW1pdHksCgogICAgTlNPdGhl
ck1vdXNlRG93bk1hc2sgPSAxIDw8IE5TT3RoZXJNb3VzZURvd24sCiAgICBOU090aGVyTW91c2VV
cE1hc2sgPSAxIDw8IE5TT3RoZXJNb3VzZVVwLAogICAgTlNPdGhlck1vdXNlRHJhZ2dlZE1hc2sg
PSAxIDw8IE5TT3RoZXJNb3VzZURyYWdnZWQsCgoKICAgIE5TRXZlbnRNYXNrR2VzdHVyZSA9IDEg
PDwgTlNFdmVudFR5cGVHZXN0dXJlLAogICAgTlNFdmVudE1hc2tNYWduaWZ5ID0gMSA8PCBOU0V2
ZW50VHlwZU1hZ25pZnksCiAgICBOU0V2ZW50TWFza1N3aXBlID0gMVUgPDwgTlNFdmVudFR5cGVT
d2lwZSwKICAgIE5TRXZlbnRNYXNrUm90YXRlID0gMSA8PCBOU0V2ZW50VHlwZVJvdGF0ZSwKICAg
IE5TRXZlbnRNYXNrQmVnaW5HZXN0dXJlID0gMSA8PCBOU0V2ZW50VHlwZUJlZ2luR2VzdHVyZSwK
ICAgIE5TRXZlbnRNYXNrRW5kR2VzdHVyZSA9IDEgPDwgTlNFdmVudFR5cGVFbmRHZXN0dXJlLAoK
ICAgIE5TQW55RXZlbnRNYXNrID0gKDkyMjMzNzIwMzY4NTQ3NzU4MDdMICogMlVMICsgMVVMKQp9
OwoKc3RhdGljIF9faW5saW5lX18gX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIE5TVUlu
dGVnZXIgTlNFdmVudE1hc2tGcm9tVHlwZShOU0V2ZW50VHlwZSB0eXBlKSB7IHJldHVybiAoMSA8
PCB0eXBlKTsgfQoKCmVudW0gewogICAgTlNBbHBoYVNoaWZ0S2V5TWFzayA9IDEgPDwgMTYsCiAg
ICBOU1NoaWZ0S2V5TWFzayA9IDEgPDwgMTcsCiAgICBOU0NvbnRyb2xLZXlNYXNrID0gMSA8PCAx
OCwKICAgIE5TQWx0ZXJuYXRlS2V5TWFzayA9IDEgPDwgMTksCiAgICBOU0NvbW1hbmRLZXlNYXNr
ID0gMSA8PCAyMCwKICAgIE5TTnVtZXJpY1BhZEtleU1hc2sgPSAxIDw8IDIxLAogICAgTlNIZWxw
S2V5TWFzayA9IDEgPDwgMjIsCiAgICBOU0Z1bmN0aW9uS2V5TWFzayA9IDEgPDwgMjMsCgogICAg
TlNEZXZpY2VJbmRlcGVuZGVudE1vZGlmaWVyRmxhZ3NNYXNrID0gMHhmZmZmMDAwMFVMCgp9OwoK
CgplbnVtIHsKICAgIE5TVW5rbm93blBvaW50aW5nRGV2aWNlID0gMCwKICAgIE5TUGVuUG9pbnRp
bmdEZXZpY2UgPSAxLAogICAgTlNDdXJzb3JQb2ludGluZ0RldmljZSA9IDIsCiAgICBOU0VyYXNl
clBvaW50aW5nRGV2aWNlID0gMwp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNQb2ludGluZ0Rldmlj
ZVR5cGU7CgoKZW51bSB7CiAgICBOU1BlblRpcE1hc2sgPSAweDAwMDEsCiAgICBOU1Blbkxvd2Vy
U2lkZU1hc2sgPSAweDAwMDIsCiAgICBOU1BlblVwcGVyU2lkZU1hc2sgPSAweDAwMDQKfTsKCgpA
aW50ZXJmYWNlIE5TRXZlbnQgOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4gewoKICAg
IE5TRXZlbnRUeXBlIF90eXBlOwogICAgTlNQb2ludCBfbG9jYXRpb247CiAgICB1bnNpZ25lZCBp
bnQgX21vZGlmaWVyRmxhZ3M7CiAgICBpZCBfV1NUaW1lc3RhbXA7CiAgICBOU1RpbWVJbnRlcnZh
bCBfdGltZXN0YW1wOwogICAgTlNJbnRlZ2VyIF93aW5kb3dOdW1iZXI7CiAgICBOU1dpbmRvdyAq
X3dpbmRvdzsKICAgIE5TR3JhcGhpY3NDb250ZXh0KiBfY29udGV4dDsKICAgIHVuaW9uIHsKICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICBpbnQgZXZlbnROdW1iZXI7CiAgICAgICAgICAgIGlu
dCBjbGlja0NvdW50OwogICAgICAgICAgICBmbG9hdCBwcmVzc3VyZTsKCiAgICAgICAgICAgIENH
RmxvYXQgZGVsdGFYOwogICAgICAgICAgICBDR0Zsb2F0IGRlbHRhWTsKICAgICAgICAgICAgaW50
IHN1YnR5cGU7CiAgICAgICAgICAgIHNob3J0IGJ1dHRvbk51bWJlcjsKICAgICAgICAgICAgc2hv
cnQgcmVzZXJ2ZWQxOwogICAgICAgICAgICBpbnQgcmVzZXJ2ZWQyWzNdOwoKICAgICAgICB9IG1v
dXNlOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgIE5TU3RyaW5nICprZXlzOwogICAgICAg
ICAgICBOU1N0cmluZyAqdW5tb2RLZXlzOwogICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlOwogICAgICAgICAgICBCT09MIGlzQVJlcGVhdDsKCiAgICAgICAgICAgIGludCBldmVudEZs
YWdzOwogICAgICAgICAgICBpbnQgcmVzZXJ2ZWRbNV07CgogICAgICAgIH0ga2V5OwogICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgIGludCBldmVudE51bWJlcjsKICAgICAgICAgICAgTlNJbnRl
Z2VyIHRyYWNraW5nTnVtYmVyOwogICAgICAgICAgICB2b2lkICp1c2VyRGF0YTsKCiAgICAgICAg
ICAgIGludCByZXNlcnZlZFs2XTsKCiAgICAgICAgfSB0cmFja2luZzsKICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICBDR0Zsb2F0IGRlbHRhWDsKICAgICAgICAgICAgQ0dGbG9hdCBkZWx0YVk7
CiAgICAgICAgICAgIENHRmxvYXQgZGVsdGFaOwoKICAgICAgICAgICAgc2hvcnQgc3VidHlwZTsK
ICAgICAgICAgICAgc2hvcnQgcmVzZXJ2ZWQxOwogICAgICAgICAgICBpbnQgcmVzZXJ2ZWQyWzZd
OwoKICAgICAgICB9IHNjcm9sbFdoZWVsOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBD
R0Zsb2F0IGRlbHRhWDsKICAgICAgICAgICAgQ0dGbG9hdCBkZWx0YVk7CiAgICAgICAgICAgIENH
RmxvYXQgZGVsdGFaOwoKICAgICAgICAgICAgaW50IHJlc2VydmVkWzddOwoKICAgICAgICB9IGF4
aXNHZXN0dXJlOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgIHNob3J0IHN1YnR5cGU7CiAg
ICAgICAgICAgIEJPT0wgZ2VzdHVyZUVuZGVkOwogICAgICAgICAgICBCT09MIHJlc2VydmVkOwog
ICAgICAgICAgICBpbnQgdmFsdWU7CiAgICAgICAgICAgIGZsb2F0IHBlcmNlbnRhZ2U7CgogICAg
ICAgICAgICBpbnQgcmVzZXJ2ZWQyWzddOwoKICAgICAgICB9IG1pc2NHZXN0dXJlOwoKICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICBpbnQgc3VidHlwZTsKICAgICAgICAgICAgTlNJbnRlZ2Vy
IGRhdGExOwogICAgICAgICAgICBOU0ludGVnZXIgZGF0YTI7CgogICAgICAgICAgICBpbnQgcmVz
ZXJ2ZWRbNl07CgogICAgICAgIH0gbWlzYzsKCiAgICAgICAgaW50IHRhYmxldFBvaW50RGF0YVsx
NF07CiAgICAgICAgaW50IHRhYmxldFByb3hpbWl0eURhdGFbMTRdOwoKICAgIH0gX2RhdGE7CiAg
ICB2b2lkICpfZXZlbnRSZWY7CgogICAgdm9pZCAqcmVzZXJ2ZWQxOwogICAgdm9pZCAqcmVzZXJ2
ZWQyOwoKfQoKCgotIChOU0V2ZW50VHlwZSl0eXBlOwotIChOU1VJbnRlZ2VyKW1vZGlmaWVyRmxh
Z3M7Ci0gKE5TVGltZUludGVydmFsKXRpbWVzdGFtcDsKLSAoTlNXaW5kb3cgKil3aW5kb3c7Ci0g
KE5TSW50ZWdlcil3aW5kb3dOdW1iZXI7Ci0gKE5TR3JhcGhpY3NDb250ZXh0Kiljb250ZXh0OwoK
Ci0gKE5TSW50ZWdlciljbGlja0NvdW50OwotIChOU0ludGVnZXIpYnV0dG9uTnVtYmVyOwoKLSAo
TlNJbnRlZ2VyKWV2ZW50TnVtYmVyOwoKCi0gKGZsb2F0KXByZXNzdXJlOwoKLSAoTlNQb2ludCls
b2NhdGlvbkluV2luZG93OwoKCi0gKENHRmxvYXQpZGVsdGFYOwotIChDR0Zsb2F0KWRlbHRhWTsK
LSAoQ0dGbG9hdClkZWx0YVo7CgoKLSAoTlNTdHJpbmcgKiljaGFyYWN0ZXJzOwotIChOU1N0cmlu
ZyAqKWNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKCi0gKEJPT0wpaXNBUmVwZWF0OwoKLSAo
dW5zaWduZWQgc2hvcnQpa2V5Q29kZTsKCgotIChOU0ludGVnZXIpdHJhY2tpbmdOdW1iZXI7Ci0g
KHZvaWQgKil1c2VyRGF0YTsKCgotIChOU1RyYWNraW5nQXJlYSAqKXRyYWNraW5nQXJlYTsKCgoK
Ci0gKHNob3J0KXN1YnR5cGU7CgoKLSAoTlNJbnRlZ2VyKWRhdGExOwotIChOU0ludGVnZXIpZGF0
YTI7CgoKCgoKCi0gKGNvbnN0IHZvaWQgKiApZXZlbnRSZWY7CgoKKyAoTlNFdmVudCAqKWV2ZW50
V2l0aEV2ZW50UmVmOihjb25zdCB2b2lkICogKWV2ZW50UmVmOwoKCgotIChDR0V2ZW50UmVmKUNH
RXZlbnQ7CgoKCisgKE5TRXZlbnQgKilldmVudFdpdGhDR0V2ZW50OihDR0V2ZW50UmVmKWNnRXZl
bnQ7CgoKCisgKHZvaWQpc2V0TW91c2VDb2FsZXNjaW5nRW5hYmxlZDooQk9PTClmbGFnOworIChC
T09MKWlzTW91c2VDb2FsZXNjaW5nRW5hYmxlZDsKCgoKCi0gKENHRmxvYXQpbWFnbmlmaWNhdGlv
biA7CgoKCi0gKE5TVUludGVnZXIpZGV2aWNlSUQ7CgoKLSAoZmxvYXQpcm90YXRpb247CgoKCi0g
KE5TSW50ZWdlcilhYnNvbHV0ZVg7CgotIChOU0ludGVnZXIpYWJzb2x1dGVZOwoKLSAoTlNJbnRl
Z2VyKWFic29sdXRlWjsKCi0gKE5TVUludGVnZXIpYnV0dG9uTWFzazsKCi0gKE5TUG9pbnQpdGls
dDsKCi0gKGZsb2F0KXRhbmdlbnRpYWxQcmVzc3VyZTsKCi0gKGlkKXZlbmRvckRlZmluZWQ7CgoK
Ci0gKE5TVUludGVnZXIpdmVuZG9ySUQ7CgotIChOU1VJbnRlZ2VyKXRhYmxldElEOwoKLSAoTlNV
SW50ZWdlcilwb2ludGluZ0RldmljZUlEOwoKLSAoTlNVSW50ZWdlcilzeXN0ZW1UYWJsZXRJRDsK
Ci0gKE5TVUludGVnZXIpdmVuZG9yUG9pbnRpbmdEZXZpY2VUeXBlOwoKLSAoTlNVSW50ZWdlcilw
b2ludGluZ0RldmljZVNlcmlhbE51bWJlcjsKCi0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1bmlxdWVJ
RDsKCi0gKE5TVUludGVnZXIpY2FwYWJpbGl0eU1hc2s7CgotIChOU1BvaW50aW5nRGV2aWNlVHlw
ZSlwb2ludGluZ0RldmljZVR5cGU7CgotIChCT09MKWlzRW50ZXJpbmdQcm94aW1pdHk7CgoKCi0g
KE5TU2V0ICopdG91Y2hlc01hdGNoaW5nUGhhc2U6KE5TVG91Y2hQaGFzZSlwaGFzZSBpblZpZXc6
KE5TVmlldyopdmlldyA7CgoKKyAodm9pZClzdGFydFBlcmlvZGljRXZlbnRzQWZ0ZXJEZWxheToo
TlNUaW1lSW50ZXJ2YWwpZGVsYXkgd2l0aFBlcmlvZDooTlNUaW1lSW50ZXJ2YWwpcGVyaW9kOwor
ICh2b2lkKXN0b3BQZXJpb2RpY0V2ZW50czsKCgorIChOU0V2ZW50ICopbW91c2VFdmVudFdpdGhU
eXBlOihOU0V2ZW50VHlwZSl0eXBlIGxvY2F0aW9uOihOU1BvaW50KWxvY2F0aW9uIG1vZGlmaWVy
RmxhZ3M6KE5TVUludGVnZXIpZmxhZ3MgdGltZXN0YW1wOihOU1RpbWVJbnRlcnZhbCl0aW1lIHdp
bmRvd051bWJlcjooTlNJbnRlZ2VyKXdOdW0gY29udGV4dDooTlNHcmFwaGljc0NvbnRleHQqKWNv
bnRleHQgZXZlbnROdW1iZXI6KE5TSW50ZWdlcillTnVtIGNsaWNrQ291bnQ6KE5TSW50ZWdlcilj
TnVtIHByZXNzdXJlOihmbG9hdClwcmVzc3VyZTsKKyAoTlNFdmVudCAqKWtleUV2ZW50V2l0aFR5
cGU6KE5TRXZlbnRUeXBlKXR5cGUgbG9jYXRpb246KE5TUG9pbnQpbG9jYXRpb24gbW9kaWZpZXJG
bGFnczooTlNVSW50ZWdlcilmbGFncyB0aW1lc3RhbXA6KE5TVGltZUludGVydmFsKXRpbWUgd2lu
ZG93TnVtYmVyOihOU0ludGVnZXIpd051bSBjb250ZXh0OihOU0dyYXBoaWNzQ29udGV4dCopY29u
dGV4dCBjaGFyYWN0ZXJzOihOU1N0cmluZyAqKWtleXMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzOihOU1N0cmluZyAqKXVrZXlzIGlzQVJlcGVhdDooQk9PTClmbGFnIGtleUNvZGU6KHVuc2ln
bmVkIHNob3J0KWNvZGU7CisgKE5TRXZlbnQgKillbnRlckV4aXRFdmVudFdpdGhUeXBlOihOU0V2
ZW50VHlwZSl0eXBlIGxvY2F0aW9uOihOU1BvaW50KWxvY2F0aW9uIG1vZGlmaWVyRmxhZ3M6KE5T
VUludGVnZXIpZmxhZ3MgdGltZXN0YW1wOihOU1RpbWVJbnRlcnZhbCl0aW1lIHdpbmRvd051bWJl
cjooTlNJbnRlZ2VyKXdOdW0gY29udGV4dDooTlNHcmFwaGljc0NvbnRleHQqKWNvbnRleHQgZXZl
bnROdW1iZXI6KE5TSW50ZWdlcillTnVtIHRyYWNraW5nTnVtYmVyOihOU0ludGVnZXIpdE51bSB1
c2VyRGF0YToodm9pZCAqKWRhdGE7CisgKE5TRXZlbnQgKilvdGhlckV2ZW50V2l0aFR5cGU6KE5T
RXZlbnRUeXBlKXR5cGUgbG9jYXRpb246KE5TUG9pbnQpbG9jYXRpb24gbW9kaWZpZXJGbGFnczoo
TlNVSW50ZWdlcilmbGFncyB0aW1lc3RhbXA6KE5TVGltZUludGVydmFsKXRpbWUgd2luZG93TnVt
YmVyOihOU0ludGVnZXIpd051bSBjb250ZXh0OihOU0dyYXBoaWNzQ29udGV4dCopY29udGV4dCBz
dWJ0eXBlOihzaG9ydClzdWJ0eXBlIGRhdGExOihOU0ludGVnZXIpZDEgZGF0YTI6KE5TSW50ZWdl
cilkMjsKCgorIChOU1BvaW50KW1vdXNlTG9jYXRpb247CgoKKyAoTlNVSW50ZWdlciltb2RpZmll
ckZsYWdzIDsKCgorIChOU1VJbnRlZ2VyKXByZXNzZWRNb3VzZUJ1dHRvbnMgOwoKCisgKE5TVGlt
ZUludGVydmFsKWRvdWJsZUNsaWNrSW50ZXJ2YWwgOwoKKyAoTlNUaW1lSW50ZXJ2YWwpa2V5UmVw
ZWF0RGVsYXkgOwoKKyAoTlNUaW1lSW50ZXJ2YWwpa2V5UmVwZWF0SW50ZXJ2YWwgOwojIDM4NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TRXZl
bnQuaCIgMworIChpZClhZGRHbG9iYWxNb25pdG9yRm9yRXZlbnRzTWF0Y2hpbmdNYXNrOihOU0V2
ZW50TWFzayltYXNrIGhhbmRsZXI6KHZvaWQgKF4pKE5TRXZlbnQqKSlibG9jayA7CisgKGlkKWFk
ZExvY2FsTW9uaXRvckZvckV2ZW50c01hdGNoaW5nTWFzazooTlNFdmVudE1hc2spbWFzayBoYW5k
bGVyOihOU0V2ZW50KiAoXikoTlNFdmVudCopKWJsb2NrIDsKKyAodm9pZClyZW1vdmVNb25pdG9y
OihpZClldmVudE1vbml0b3IgOwoKCkBlbmQKCgoKZW51bSB7CiAgICBOU1VwQXJyb3dGdW5jdGlv
bktleSA9IDB4RjcwMCwKICAgIE5TRG93bkFycm93RnVuY3Rpb25LZXkgPSAweEY3MDEsCiAgICBO
U0xlZnRBcnJvd0Z1bmN0aW9uS2V5ID0gMHhGNzAyLAogICAgTlNSaWdodEFycm93RnVuY3Rpb25L
ZXkgPSAweEY3MDMsCiAgICBOU0YxRnVuY3Rpb25LZXkgPSAweEY3MDQsCiAgICBOU0YyRnVuY3Rp
b25LZXkgPSAweEY3MDUsCiAgICBOU0YzRnVuY3Rpb25LZXkgPSAweEY3MDYsCiAgICBOU0Y0RnVu
Y3Rpb25LZXkgPSAweEY3MDcsCiAgICBOU0Y1RnVuY3Rpb25LZXkgPSAweEY3MDgsCiAgICBOU0Y2
RnVuY3Rpb25LZXkgPSAweEY3MDksCiAgICBOU0Y3RnVuY3Rpb25LZXkgPSAweEY3MEEsCiAgICBO
U0Y4RnVuY3Rpb25LZXkgPSAweEY3MEIsCiAgICBOU0Y5RnVuY3Rpb25LZXkgPSAweEY3MEMsCiAg
ICBOU0YxMEZ1bmN0aW9uS2V5ID0gMHhGNzBELAogICAgTlNGMTFGdW5jdGlvbktleSA9IDB4Rjcw
RSwKICAgIE5TRjEyRnVuY3Rpb25LZXkgPSAweEY3MEYsCiAgICBOU0YxM0Z1bmN0aW9uS2V5ID0g
MHhGNzEwLAogICAgTlNGMTRGdW5jdGlvbktleSA9IDB4RjcxMSwKICAgIE5TRjE1RnVuY3Rpb25L
ZXkgPSAweEY3MTIsCiAgICBOU0YxNkZ1bmN0aW9uS2V5ID0gMHhGNzEzLAogICAgTlNGMTdGdW5j
dGlvbktleSA9IDB4RjcxNCwKICAgIE5TRjE4RnVuY3Rpb25LZXkgPSAweEY3MTUsCiAgICBOU0Yx
OUZ1bmN0aW9uS2V5ID0gMHhGNzE2LAogICAgTlNGMjBGdW5jdGlvbktleSA9IDB4RjcxNywKICAg
IE5TRjIxRnVuY3Rpb25LZXkgPSAweEY3MTgsCiAgICBOU0YyMkZ1bmN0aW9uS2V5ID0gMHhGNzE5
LAogICAgTlNGMjNGdW5jdGlvbktleSA9IDB4RjcxQSwKICAgIE5TRjI0RnVuY3Rpb25LZXkgPSAw
eEY3MUIsCiAgICBOU0YyNUZ1bmN0aW9uS2V5ID0gMHhGNzFDLAogICAgTlNGMjZGdW5jdGlvbktl
eSA9IDB4RjcxRCwKICAgIE5TRjI3RnVuY3Rpb25LZXkgPSAweEY3MUUsCiAgICBOU0YyOEZ1bmN0
aW9uS2V5ID0gMHhGNzFGLAogICAgTlNGMjlGdW5jdGlvbktleSA9IDB4RjcyMCwKICAgIE5TRjMw
RnVuY3Rpb25LZXkgPSAweEY3MjEsCiAgICBOU0YzMUZ1bmN0aW9uS2V5ID0gMHhGNzIyLAogICAg
TlNGMzJGdW5jdGlvbktleSA9IDB4RjcyMywKICAgIE5TRjMzRnVuY3Rpb25LZXkgPSAweEY3MjQs
CiAgICBOU0YzNEZ1bmN0aW9uS2V5ID0gMHhGNzI1LAogICAgTlNGMzVGdW5jdGlvbktleSA9IDB4
RjcyNiwKICAgIE5TSW5zZXJ0RnVuY3Rpb25LZXkgPSAweEY3MjcsCiAgICBOU0RlbGV0ZUZ1bmN0
aW9uS2V5ID0gMHhGNzI4LAogICAgTlNIb21lRnVuY3Rpb25LZXkgPSAweEY3MjksCiAgICBOU0Jl
Z2luRnVuY3Rpb25LZXkgPSAweEY3MkEsCiAgICBOU0VuZEZ1bmN0aW9uS2V5ID0gMHhGNzJCLAog
ICAgTlNQYWdlVXBGdW5jdGlvbktleSA9IDB4RjcyQywKICAgIE5TUGFnZURvd25GdW5jdGlvbktl
eSA9IDB4RjcyRCwKICAgIE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleSA9IDB4RjcyRSwKICAgIE5T
U2Nyb2xsTG9ja0Z1bmN0aW9uS2V5ID0gMHhGNzJGLAogICAgTlNQYXVzZUZ1bmN0aW9uS2V5ID0g
MHhGNzMwLAogICAgTlNTeXNSZXFGdW5jdGlvbktleSA9IDB4RjczMSwKICAgIE5TQnJlYWtGdW5j
dGlvbktleSA9IDB4RjczMiwKICAgIE5TUmVzZXRGdW5jdGlvbktleSA9IDB4RjczMywKICAgIE5T
U3RvcEZ1bmN0aW9uS2V5ID0gMHhGNzM0LAogICAgTlNNZW51RnVuY3Rpb25LZXkgPSAweEY3MzUs
CiAgICBOU1VzZXJGdW5jdGlvbktleSA9IDB4RjczNiwKICAgIE5TU3lzdGVtRnVuY3Rpb25LZXkg
PSAweEY3MzcsCiAgICBOU1ByaW50RnVuY3Rpb25LZXkgPSAweEY3MzgsCiAgICBOU0NsZWFyTGlu
ZUZ1bmN0aW9uS2V5ID0gMHhGNzM5LAogICAgTlNDbGVhckRpc3BsYXlGdW5jdGlvbktleSA9IDB4
RjczQSwKICAgIE5TSW5zZXJ0TGluZUZ1bmN0aW9uS2V5ID0gMHhGNzNCLAogICAgTlNEZWxldGVM
aW5lRnVuY3Rpb25LZXkgPSAweEY3M0MsCiAgICBOU0luc2VydENoYXJGdW5jdGlvbktleSA9IDB4
RjczRCwKICAgIE5TRGVsZXRlQ2hhckZ1bmN0aW9uS2V5ID0gMHhGNzNFLAogICAgTlNQcmV2RnVu
Y3Rpb25LZXkgPSAweEY3M0YsCiAgICBOU05leHRGdW5jdGlvbktleSA9IDB4Rjc0MCwKICAgIE5T
U2VsZWN0RnVuY3Rpb25LZXkgPSAweEY3NDEsCiAgICBOU0V4ZWN1dGVGdW5jdGlvbktleSA9IDB4
Rjc0MiwKICAgIE5TVW5kb0Z1bmN0aW9uS2V5ID0gMHhGNzQzLAogICAgTlNSZWRvRnVuY3Rpb25L
ZXkgPSAweEY3NDQsCiAgICBOU0ZpbmRGdW5jdGlvbktleSA9IDB4Rjc0NSwKICAgIE5TSGVscEZ1
bmN0aW9uS2V5ID0gMHhGNzQ2LAogICAgTlNNb2RlU3dpdGNoRnVuY3Rpb25LZXkgPSAweEY3NDcK
fTsKCgplbnVtIHsKICAgIE5TV2luZG93RXhwb3NlZEV2ZW50VHlwZSA9IDAsCiAgICBOU0FwcGxp
Y2F0aW9uQWN0aXZhdGVkRXZlbnRUeXBlID0gMSwKICAgIE5TQXBwbGljYXRpb25EZWFjdGl2YXRl
ZEV2ZW50VHlwZSA9IDIsCiAgICBOU1dpbmRvd01vdmVkRXZlbnRUeXBlID0gNCwKICAgIE5TU2Ny
ZWVuQ2hhbmdlZEV2ZW50VHlwZSA9IDgsCiAgICBOU0FXVEV2ZW50VHlwZSA9IDE2Cn07CgplbnVt
IHsKICAgIE5TUG93ZXJPZmZFdmVudFR5cGUgPSAxCn07CgoKCmVudW0gewogICAgTlNNb3VzZUV2
ZW50U3VidHlwZSA9IDAsCiAgICBOU1RhYmxldFBvaW50RXZlbnRTdWJ0eXBlID0gMSwKICAgIE5T
VGFibGV0UHJveGltaXR5RXZlbnRTdWJ0eXBlID0gMiwKCiAgICBOU1RvdWNoRXZlbnRTdWJ0eXBl
ID0gMwoKfTsKIyA1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29y
ay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNGaWxlV3JhcHBlci5oIiAxIDMKIyAxMCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TRmlsZVdyYXBw
ZXIuaCIgMwpAY2xhc3MgTlNEYXRhLCBOU0RpY3Rpb25hcnksIE5TRXJyb3IsIE5TSW1hZ2UsIE5T
VVJMOwoKCgplbnVtIHsKCgoKICAgIE5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlID0gMSA8
PCAwLAoKCgogICAgTlNGaWxlV3JhcHBlclJlYWRpbmdXaXRob3V0TWFwcGluZyA9IDEgPDwgMQoK
fTsKCgoKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TRmlsZVdyYXBwZXJSZWFkaW5nT3B0aW9uczsKCgoK
ZW51bSB7CgoKCiAgICBOU0ZpbGVXcmFwcGVyV3JpdGluZ0F0b21pYyA9IDEgPDwgMCwKCgoKICAg
IE5TRmlsZVdyYXBwZXJXcml0aW5nV2l0aE5hbWVVcGRhdGluZyA9IDEgPDwgMQoKfTsKCgoKdHlw
ZWRlZiBOU1VJbnRlZ2VyIE5TRmlsZVdyYXBwZXJXcml0aW5nT3B0aW9uczsKCkBpbnRlcmZhY2Ug
TlNGaWxlV3JhcHBlciA6IE5TT2JqZWN0PE5TQ29kaW5nPiB7CiAgICBAcHJpdmF0ZQogICAgTlNE
aWN0aW9uYXJ5ICpfZmlsZUF0dHJpYnV0ZXM7CiAgICBOU1N0cmluZyAqX3ByZWZlcnJlZEZpbGVO
YW1lOwogICAgTlNTdHJpbmcgKl9maWxlTmFtZTsKICAgIGlkIF9jb250ZW50czsKICAgIE5TSW1h
Z2UgKl9pY29uOwogICAgaWQgX21vcmVWYXJzOwp9CgogICAgICAgCgoKCi0gKGlkKWluaXRXaXRo
VVJMOihOU1VSTCAqKXVybCBvcHRpb25zOihOU0ZpbGVXcmFwcGVyUmVhZGluZ09wdGlvbnMpb3B0
aW9ucyBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvciA7CgoKCi0gKGlkKWluaXREaXJlY3RvcnlX
aXRoRmlsZVdyYXBwZXJzOihOU0RpY3Rpb25hcnkgKiljaGlsZHJlbkJ5UHJlZmVycmVkTmFtZTsK
CgoKLSAoaWQpaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOihOU0RhdGEgKiljb250ZW50czsK
CgoKLSAoaWQpaW5pdFN5bWJvbGljTGlua1dpdGhEZXN0aW5hdGlvblVSTDooTlNVUkwgKil1cmwg
OwoKCgotIChpZClpbml0V2l0aFNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbjooTlNEYXRhICopc2Vy
aWFsaXplUmVwcmVzZW50YXRpb247CgogICAgICAgCgoKCi0gKEJPT0wpaXNEaXJlY3Rvcnk7Ci0g
KEJPT0wpaXNSZWd1bGFyRmlsZTsKLSAoQk9PTClpc1N5bWJvbGljTGluazsKCgoKLSAodm9pZClz
ZXRQcmVmZXJyZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlTmFtZTsKLSAoTlNTdHJpbmcgKilw
cmVmZXJyZWRGaWxlbmFtZTsKCgoKLSAodm9pZClzZXRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxl
TmFtZTsKLSAoTlNTdHJpbmcgKilmaWxlbmFtZTsKCgoKLSAodm9pZClzZXRGaWxlQXR0cmlidXRl
czooTlNEaWN0aW9uYXJ5ICopZmlsZUF0dHJpYnV0ZXM7Ci0gKE5TRGljdGlvbmFyeSAqKWZpbGVB
dHRyaWJ1dGVzOwoKCgotICh2b2lkKXNldEljb246KE5TSW1hZ2UgKilpY29uOwotIChOU0ltYWdl
ICopaWNvbjsKCiAgICAgICAKCgoKLSAoQk9PTCltYXRjaGVzQ29udGVudHNPZlVSTDooTlNVUkwg
Kil1cmwgOwoKCgotIChCT09MKXJlYWRGcm9tVVJMOihOU1VSTCAqKXVybCBvcHRpb25zOihOU0Zp
bGVXcmFwcGVyUmVhZGluZ09wdGlvbnMpb3B0aW9ucyBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJv
ciA7CgogICAgICAgCgoKCi0gKEJPT0wpd3JpdGVUb1VSTDooTlNVUkwgKil1cmwgb3B0aW9uczoo
TlNGaWxlV3JhcHBlcldyaXRpbmdPcHRpb25zKW9wdGlvbnMgb3JpZ2luYWxDb250ZW50c1VSTDoo
TlNVUkwgKilvcmlnaW5hbENvbnRlbnRzVVJMIGVycm9yOihOU0Vycm9yICoqKW91dEVycm9yIDsK
CiAgICAgICAKCgoKLSAoTlNEYXRhICopc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uOwoKICAgICAg
IAoKCgoKCi0gKE5TU3RyaW5nICopYWRkRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKiljaGls
ZDsKCgoKLSAoTlNTdHJpbmcgKilhZGRSZWd1bGFyRmlsZVdpdGhDb250ZW50czooTlNEYXRhICop
ZGF0YSBwcmVmZXJyZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlTmFtZTsKCgoKLSAodm9pZCly
ZW1vdmVGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWNoaWxkOwoKCgotIChOU0RpY3Rpb25h
cnkgKilmaWxlV3JhcHBlcnM7CgoKCi0gKE5TU3RyaW5nICopa2V5Rm9yRmlsZVdyYXBwZXI6KE5T
RmlsZVdyYXBwZXIgKiljaGlsZDsKCiAgICAgICAKCgoKCgotIChOU0RhdGEgKilyZWd1bGFyRmls
ZUNvbnRlbnRzOwoKICAgICAgIAoKCgoKCi0gKE5TVVJMICopc3ltYm9saWNMaW5rRGVzdGluYXRp
b25VUkwgOwoKQGVuZAoKQGludGVyZmFjZSBOU0ZpbGVXcmFwcGVyKE5TRGVwcmVjYXRlZCkKCiAg
ICAgICAKCgoKLSAoaWQpaW5pdFdpdGhQYXRoOihOU1N0cmluZyAqKXBhdGg7Ci0gKGlkKWluaXRT
eW1ib2xpY0xpbmtXaXRoRGVzdGluYXRpb246KE5TU3RyaW5nICopcGF0aDsKCgoKLSAoQk9PTClu
ZWVkc1RvQmVVcGRhdGVkRnJvbVBhdGg6KE5TU3RyaW5nICopcGF0aDsKLSAoQk9PTCl1cGRhdGVG
cm9tUGF0aDooTlNTdHJpbmcgKilwYXRoOwoKCgotIChCT09MKXdyaXRlVG9GaWxlOihOU1N0cmlu
ZyAqKXBhdGggYXRvbWljYWxseTooQk9PTClhdG9taWNGbGFnIHVwZGF0ZUZpbGVuYW1lczooQk9P
TCl1cGRhdGVGaWxlbmFtZXNGbGFnOwoKCgotIChOU1N0cmluZyAqKWFkZEZpbGVXaXRoUGF0aDoo
TlNTdHJpbmcgKilwYXRoOwotIChOU1N0cmluZyAqKWFkZFN5bWJvbGljTGlua1dpdGhEZXN0aW5h
dGlvbjooTlNTdHJpbmcgKilwYXRoIHByZWZlcnJlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVu
YW1lOwoKCgotIChOU1N0cmluZyAqKXN5bWJvbGljTGlua0Rlc3RpbmF0aW9uOwoKQGVuZAojIDU3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBw
S2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9OU0hlbHBNYW5hZ2VyLmgiIDEgMwojIDE1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNIZWxwTWFuYWdlci5oIiAzCkBjbGFz
cyBOU0F0dHJpYnV0ZWRTdHJpbmcsIE5TV2luZG93OwoKQGludGVyZmFjZSBOU0hlbHBNYW5hZ2Vy
IDogTlNPYmplY3QKewoKICAgIE5TTWFwVGFibGUgKl9oZWxwTWFwVGFibGU7CiAgICBOU01hcFRh
YmxlICpfa2V5TWFwVGFibGU7CiAgICBOU01hcFRhYmxlICpfYnVuZGxlTWFwVGFibGU7CiAgICBO
U1dpbmRvdyAqX2hlbHBXaW5kb3c7CiAgICBOU1dpbmRvdyAqX3NoYWRvd1dpbmRvdzsKICAgIE5T
V2luZG93ICpfZXZ0V2luZG93OwogICAgTlNCdW5kbGUgKl9oZWxwQnVuZGxlOwp9CgorIChOU0hl
bHBNYW5hZ2VyICopc2hhcmVkSGVscE1hbmFnZXI7CisgKHZvaWQpc2V0Q29udGV4dEhlbHBNb2Rl
QWN0aXZlOihCT09MKWFjdGl2ZTsKKyAoQk9PTClpc0NvbnRleHRIZWxwTW9kZUFjdGl2ZTsKCi0g
KHZvaWQpc2V0Q29udGV4dEhlbHA6KE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJTdHJpbmcgZm9y
T2JqZWN0OihpZClvYmplY3Q7Ci0gKHZvaWQpcmVtb3ZlQ29udGV4dEhlbHBGb3JPYmplY3Q6KGlk
KW9iamVjdDsKLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopY29udGV4dEhlbHBGb3JPYmplY3Q6KGlk
KW9iamVjdDsKCi0gKEJPT0wpc2hvd0NvbnRleHRIZWxwRm9yT2JqZWN0OihpZClvYmplY3QgbG9j
YXRpb25IaW50OihOU1BvaW50KXB0OwoKCi0gKHZvaWQpb3BlbkhlbHBBbmNob3I6KE5TU3RyaW5n
ICopYW5jaG9yIGluQm9vazooTlNTdHJpbmcgKilib29rOwotICh2b2lkKWZpbmRTdHJpbmc6KE5T
U3RyaW5nICopcXVlcnkgaW5Cb29rOihOU1N0cmluZyAqKWJvb2s7CgoKCi0gKEJPT0wpcmVnaXN0
ZXJCb29rc0luQnVuZGxlOihOU0J1bmRsZSAqKWJ1bmRsZSA7CgpAZW5kCgoKCgoKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNDb250ZXh0SGVscE1vZGVEaWRBY3RpdmF0ZU5vdGlmaWNhdGlvbjsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqTlNDb250ZXh0SGVscE1vZGVEaWREZWFjdGl2YXRlTm90aWZpY2F0
aW9uOwoKCgoKCkBpbnRlcmZhY2UgTlNCdW5kbGUoTlNCdW5kbGVIZWxwRXh0ZW5zaW9uKQotIChO
U0F0dHJpYnV0ZWRTdHJpbmcgKiljb250ZXh0SGVscEZvcktleTooTlNTdHJpbmcgKilrZXk7CkBl
bmQKCgoKCgpAaW50ZXJmYWNlIE5TQXBwbGljYXRpb24oTlNBcHBsaWNhdGlvbkhlbHBFeHRlbnNp
b24pCi0gKHZvaWQpYWN0aXZhdGVDb250ZXh0SGVscE1vZGU6KGlkKXNlbmRlcjsKCi0gKHZvaWQp
c2hvd0hlbHA6KGlkKXNlbmRlcjsKQGVuZAojIDU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0dyYWRpZW50LmgiIDEg
MwojIDE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNHcmFkaWVudC5oIiAzCkBjbGFzcyBOU0FycmF5LCBOU0JlemllclBhdGgsIE5TQ29sb3Is
IE5TQ29sb3JTcGFjZTsKCnR5cGVkZWYgTlNVSW50ZWdlciBOU0dyYWRpZW50RHJhd2luZ09wdGlv
bnM7CgplbnVtIHsKICAgIE5TR3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0aW5nTG9jYXRpb24gPSAo
MSA8PCAwKSwKICAgIE5TR3JhZGllbnREcmF3c0FmdGVyRW5kaW5nTG9jYXRpb24gPSAoMSA8PCAx
KSwKfTsKIyA1MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9I
ZWFkZXJzL05TR3JhZGllbnQuaCIgMwpAaW50ZXJmYWNlIE5TR3JhZGllbnQgOiBOU09iamVjdCA8
TlNDb3B5aW5nLCBOU0NvZGluZz4gewpAcHJpdmF0ZQogICAgTlNBcnJheSAqX2NvbG9yQXJyYXk7
CiAgICBOU0NvbG9yU3BhY2UgKl9jb2xvclNwYWNlOwogICAgdm9pZCAqX2Z1bmN0aW9uUmVmOwog
ICAgdm9pZCAqX2NvbXBvbmVudEFycmF5OwogICAgdm9pZCAqX3Jlc2VydmVkMTsKICAgIHZvaWQg
Kl9yZXNlcnZlZDI7CiAgICB2b2lkICpfcmVzZXJ2ZWQzOwp9CgoKCgotIChpZClpbml0V2l0aFN0
YXJ0aW5nQ29sb3I6KE5TQ29sb3IgKilzdGFydGluZ0NvbG9yIGVuZGluZ0NvbG9yOihOU0NvbG9y
ICopZW5kaW5nQ29sb3I7CgoKCgotIChpZClpbml0V2l0aENvbG9yczooTlNBcnJheSAqKWNvbG9y
QXJyYXk7CiMgNzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU0dyYWRpZW50LmgiIDMKLSAoaWQpaW5pdFdpdGhDb2xvcnNBbmRMb2NhdGlvbnM6
KE5TQ29sb3IgKilmaXJzdENvbG9yLCAuLi4gX19hdHRyaWJ1dGVfXygoc2VudGluZWwoMCwxKSkp
OwoKCgoKLSAoaWQpaW5pdFdpdGhDb2xvcnM6KE5TQXJyYXkgKiljb2xvckFycmF5IGF0TG9jYXRp
b25zOihjb25zdCBDR0Zsb2F0ICopbG9jYXRpb25zIGNvbG9yU3BhY2U6KE5TQ29sb3JTcGFjZSAq
KWNvbG9yU3BhY2U7CgoKCgoKCi0gKHZvaWQpZHJhd0Zyb21Qb2ludDooTlNQb2ludClzdGFydGlu
Z1BvaW50IHRvUG9pbnQ6KE5TUG9pbnQpZW5kaW5nUG9pbnQgb3B0aW9uczooTlNHcmFkaWVudERy
YXdpbmdPcHRpb25zKW9wdGlvbnM7CgoKCgotICh2b2lkKWRyYXdJblJlY3Q6KE5TUmVjdClyZWN0
IGFuZ2xlOihDR0Zsb2F0KWFuZ2xlOwoKCgoKLSAodm9pZClkcmF3SW5CZXppZXJQYXRoOihOU0Jl
emllclBhdGggKilwYXRoIGFuZ2xlOihDR0Zsb2F0KWFuZ2xlOwoKCgoKCgotICh2b2lkKWRyYXdG
cm9tQ2VudGVyOihOU1BvaW50KXN0YXJ0Q2VudGVyIHJhZGl1czooQ0dGbG9hdClzdGFydFJhZGl1
cyB0b0NlbnRlcjooTlNQb2ludCllbmRDZW50ZXIgcmFkaXVzOihDR0Zsb2F0KWVuZFJhZGl1cyBv
cHRpb25zOihOU0dyYWRpZW50RHJhd2luZ09wdGlvbnMpb3B0aW9uczsKCgoKCgoKLSAodm9pZClk
cmF3SW5SZWN0OihOU1JlY3QpcmVjdCByZWxhdGl2ZUNlbnRlclBvc2l0aW9uOihOU1BvaW50KXJl
bGF0aXZlQ2VudGVyUG9zaXRpb247CgoKCgoKCi0gKHZvaWQpZHJhd0luQmV6aWVyUGF0aDooTlNC
ZXppZXJQYXRoICopcGF0aCByZWxhdGl2ZUNlbnRlclBvc2l0aW9uOihOU1BvaW50KXJlbGF0aXZl
Q2VudGVyUG9zaXRpb247CiMgMTMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNHcmFkaWVudC5oIiAzCi0gKE5TQ29sb3JTcGFjZSAqKWNvbG9y
U3BhY2U7CgoKCi0gKE5TSW50ZWdlciludW1iZXJPZkNvbG9yU3RvcHM7CgoKCi0gKHZvaWQpZ2V0
Q29sb3I6KE5TQ29sb3IgKiopY29sb3IgbG9jYXRpb246KENHRmxvYXQgKilsb2NhdGlvbiBhdElu
ZGV4OihOU0ludGVnZXIpaW5kZXg7CgoKCgoKCi0gKE5TQ29sb3IgKilpbnRlcnBvbGF0ZWRDb2xv
ckF0TG9jYXRpb246KENHRmxvYXQpbG9jYXRpb247CgoKQGVuZAojIDU5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwoKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNJ
bWFnZS5oIiAxIDMKIyAxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL05TSW1hZ2UuaCIgMwpAY2xhc3MgTlNBcnJheSwgTlNDb2xvciwgTlNJbWFn
ZVJlcCwgTlNHcmFwaGljc0NvbnRleHQsIE5TVVJMOwpAcHJvdG9jb2wgTlNJbWFnZURlbGVnYXRl
OwoKCgplbnVtIHsKICAgIE5TSW1hZ2VMb2FkU3RhdHVzQ29tcGxldGVkLAogICAgTlNJbWFnZUxv
YWRTdGF0dXNDYW5jZWxsZWQsCiAgICBOU0ltYWdlTG9hZFN0YXR1c0ludmFsaWREYXRhLAogICAg
TlNJbWFnZUxvYWRTdGF0dXNVbmV4cGVjdGVkRU9GLAogICAgTlNJbWFnZUxvYWRTdGF0dXNSZWFk
RXJyb3IKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TSW1hZ2VMb2FkU3RhdHVzOwoKZW51bSB7CiAg
ICBOU0ltYWdlQ2FjaGVEZWZhdWx0LAogICAgTlNJbWFnZUNhY2hlQWx3YXlzLAogICAgTlNJbWFn
ZUNhY2hlQnlTaXplLAogICAgTlNJbWFnZUNhY2hlTmV2ZXIKfTsKdHlwZWRlZiBOU1VJbnRlZ2Vy
IE5TSW1hZ2VDYWNoZU1vZGU7CgoKCkBjbGFzcyBfTlNJbWFnZUF1eGlsaWFyeTsKCkBpbnRlcmZh
Y2UgTlNJbWFnZSA6IE5TT2JqZWN0Cgo8TlNDb3B5aW5nLCBOU0NvZGluZywgTlNQYXN0ZWJvYXJk
UmVhZGluZywgTlNQYXN0ZWJvYXJkV3JpdGluZz4KCgoKewoKICAgIE5TU3RyaW5nICpfbmFtZTsK
ICAgIE5TU2l6ZSBfc2l6ZTsKICAgIHN0cnVjdCBfX2ltYWdlRmxhZ3MgewogdW5zaWduZWQgaW50
IHNjYWxhYmxlOjE7CiB1bnNpZ25lZCBpbnQgZGF0YVJldGFpbmVkOjE7CiB1bnNpZ25lZCBpbnQg
dW5pcXVlV2luZG93OjE7CiB1bnNpZ25lZCBpbnQgc2l6ZVdhc0V4cGxpY2l0bHlTZXQ6MTsKIHVu
c2lnbmVkIGludCBidWlsdEluOjE7CiB1bnNpZ25lZCBpbnQgbmVlZHNUb0V4cGFuZDoxOwogdW5z
aWduZWQgaW50IHVzZUVQU09uUmVzb2x1dGlvbk1pc21hdGNoOjE7CiB1bnNpZ25lZCBpbnQgY29s
b3JNYXRjaFByZWZlcnJlZDoxOwogdW5zaWduZWQgaW50IG11bHRpcGxlUmVzb2x1dGlvbk1hdGNo
aW5nOjE7CiB1bnNpZ25lZCBpbnQgZm9jdXNlZFdoaWxlUHJpbnRpbmc6MTsKIHVuc2lnbmVkIGlu
dCBhcmNoaXZlQnlOYW1lOjE7CiB1bnNpZ25lZCBpbnQgdW5ib3VuZGVkQ2FjaGVEZXB0aDoxOwog
ICAgICAgIHVuc2lnbmVkIGludCBmbGlwcGVkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGFsaWFz
ZWQ6MTsKIHVuc2lnbmVkIGludCBkaXJ0aWVkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGNhY2hl
TW9kZToyOwogICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVNb2RlOjM7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHJlc2VydmVkMjoxOwogICAgICAgIHVuc2lnbmVkIGludCBpc1RlbXBsYXRlOjE7CiAg
ICAgICAgdW5zaWduZWQgaW50IGZhaWxlZFRvRXhwYW5kOjE7CiAgICAgICAgdW5zaWduZWQgaW50
IHJlc2VydmVkMTo5OwogICAgfSBfZmxhZ3M7CiAgICB2b2xhdGlsZSBpZCBfcmVwczsKICAgIF9O
U0ltYWdlQXV4aWxpYXJ5ICpfaW1hZ2VBdXhpbGlhcnk7Cn0KCisgKGlkKWltYWdlTmFtZWQ6KE5T
U3RyaW5nICopbmFtZTsKCi0gKGlkKWluaXRXaXRoU2l6ZTooTlNTaXplKWFTaXplOwotIChpZClp
bml0V2l0aERhdGE6KE5TRGF0YSAqKWRhdGE7Ci0gKGlkKWluaXRXaXRoQ29udGVudHNPZkZpbGU6
KE5TU3RyaW5nICopZmlsZU5hbWU7Ci0gKGlkKWluaXRXaXRoQ29udGVudHNPZlVSTDooTlNVUkwg
Kil1cmw7Ci0gKGlkKWluaXRCeVJlZmVyZW5jaW5nRmlsZTooTlNTdHJpbmcgKilmaWxlTmFtZTsK
Ci0gKGlkKWluaXRCeVJlZmVyZW5jaW5nVVJMOihOU1VSTCAqKXVybDsKCgotIChpZClpbml0V2l0
aEljb25SZWY6KEljb25SZWYpaWNvblJlZjsKCi0gKGlkKWluaXRXaXRoUGFzdGVib2FyZDooTlNQ
YXN0ZWJvYXJkICopcGFzdGVib2FyZDsKCgotIChpZClpbml0V2l0aERhdGFJZ25vcmluZ09yaWVu
dGF0aW9uOihOU0RhdGEgKilkYXRhIDsKCi0gKHZvaWQpc2V0U2l6ZTooTlNTaXplKWFTaXplOwot
IChOU1NpemUpc2l6ZTsKLSAoQk9PTClzZXROYW1lOihOU1N0cmluZyAqKXN0cmluZzsKLSAoTlNT
dHJpbmcgKiluYW1lOwotICh2b2lkKXNldEJhY2tncm91bmRDb2xvcjooTlNDb2xvciAqKWFDb2xv
cjsKLSAoTlNDb2xvciAqKWJhY2tncm91bmRDb2xvcjsKLSAodm9pZClzZXRVc2VzRVBTT25SZXNv
bHV0aW9uTWlzbWF0Y2g6KEJPT0wpZmxhZzsKLSAoQk9PTCl1c2VzRVBTT25SZXNvbHV0aW9uTWlz
bWF0Y2g7Ci0gKHZvaWQpc2V0UHJlZmVyc0NvbG9yTWF0Y2g6KEJPT0wpZmxhZzsKLSAoQk9PTClw
cmVmZXJzQ29sb3JNYXRjaDsKLSAodm9pZClzZXRNYXRjaGVzT25NdWx0aXBsZVJlc29sdXRpb246
KEJPT0wpZmxhZzsKLSAoQk9PTCltYXRjaGVzT25NdWx0aXBsZVJlc29sdXRpb247Ci0gKHZvaWQp
ZHJhd0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgZnJvbVJlY3Q6KE5TUmVjdClmcm9tUmVjdCBvcGVy
YXRpb246KE5TQ29tcG9zaXRpbmdPcGVyYXRpb24pb3AgZnJhY3Rpb246KENHRmxvYXQpZGVsdGE7
Ci0gKHZvaWQpZHJhd0luUmVjdDooTlNSZWN0KXJlY3QgZnJvbVJlY3Q6KE5TUmVjdClmcm9tUmVj
dCBvcGVyYXRpb246KE5TQ29tcG9zaXRpbmdPcGVyYXRpb24pb3AgZnJhY3Rpb246KENHRmxvYXQp
ZGVsdGE7Ci0gKHZvaWQpZHJhd0luUmVjdDooTlNSZWN0KWRzdFNwYWNlUG9ydGlvblJlY3QgZnJv
bVJlY3Q6KE5TUmVjdClzcmNTcGFjZVBvcnRpb25SZWN0IG9wZXJhdGlvbjooTlNDb21wb3NpdGlu
Z09wZXJhdGlvbilvcCBmcmFjdGlvbjooQ0dGbG9hdClyZXF1ZXN0ZWRBbHBoYSByZXNwZWN0Rmxp
cHBlZDooQk9PTClyZXNwZWN0Q29udGV4dElzRmxpcHBlZCBoaW50czooTlNEaWN0aW9uYXJ5ICop
aGludHMgOwotIChCT09MKWRyYXdSZXByZXNlbnRhdGlvbjooTlNJbWFnZVJlcCAqKWltYWdlUmVw
IGluUmVjdDooTlNSZWN0KXJlY3Q7Ci0gKHZvaWQpcmVjYWNoZTsKLSAoTlNEYXRhICopVElGRlJl
cHJlc2VudGF0aW9uOwotIChOU0RhdGEgKilUSUZGUmVwcmVzZW50YXRpb25Vc2luZ0NvbXByZXNz
aW9uOihOU1RJRkZDb21wcmVzc2lvbiljb21wIGZhY3RvcjooZmxvYXQpYUZsb2F0OwoKLSAoTlNB
cnJheSAqKXJlcHJlc2VudGF0aW9uczsKLSAodm9pZClhZGRSZXByZXNlbnRhdGlvbnM6KE5TQXJy
YXkgKilpbWFnZVJlcHM7Ci0gKHZvaWQpYWRkUmVwcmVzZW50YXRpb246KE5TSW1hZ2VSZXAgKilp
bWFnZVJlcDsKLSAodm9pZClyZW1vdmVSZXByZXNlbnRhdGlvbjooTlNJbWFnZVJlcCAqKWltYWdl
UmVwOwoKLSAoQk9PTClpc1ZhbGlkOwotICh2b2lkKWxvY2tGb2N1czsKLSAodm9pZClsb2NrRm9j
dXNGbGlwcGVkOihCT09MKWZsaXBwZWQgOwotICh2b2lkKXVubG9ja0ZvY3VzOwoKCi0gKE5TSW1h
Z2VSZXAgKiliZXN0UmVwcmVzZW50YXRpb25Gb3JEZXZpY2U6KE5TRGljdGlvbmFyeSAqKWRldmlj
ZURlc2NyaXB0aW9uIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCi0gKHZvaWQpc2V0RGVs
ZWdhdGU6KGlkIDxOU0ltYWdlRGVsZWdhdGU+KWFuT2JqZWN0OwotIChpZCA8TlNJbWFnZURlbGVn
YXRlPilkZWxlZ2F0ZTsKCgoKKyAoTlNBcnJheSAqKWltYWdlVW5maWx0ZXJlZEZpbGVUeXBlczsK
KyAoTlNBcnJheSAqKWltYWdlVW5maWx0ZXJlZFBhc3RlYm9hcmRUeXBlczsKKyAoTlNBcnJheSAq
KWltYWdlRmlsZVR5cGVzOworIChOU0FycmF5ICopaW1hZ2VQYXN0ZWJvYXJkVHlwZXM7CgoKKyAo
TlNBcnJheSAqKWltYWdlVHlwZXM7CisgKE5TQXJyYXkgKilpbWFnZVVuZmlsdGVyZWRUeXBlczsK
CgorIChCT09MKWNhbkluaXRXaXRoUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2Fy
ZDsKCgotICh2b2lkKWNhbmNlbEluY3JlbWVudGFsTG9hZDsKCi0odm9pZClzZXRDYWNoZU1vZGU6
KE5TSW1hZ2VDYWNoZU1vZGUpbW9kZTsKLShOU0ltYWdlQ2FjaGVNb2RlKWNhY2hlTW9kZTsKIyAx
NjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9O
U0ltYWdlLmgiIDMKLSAoTlNSZWN0KWFsaWdubWVudFJlY3Q7Ci0gKHZvaWQpc2V0QWxpZ25tZW50
UmVjdDooTlNSZWN0KXJlY3Q7CgoKCgoKLSAoQk9PTClpc1RlbXBsYXRlOwotICh2b2lkKXNldFRl
bXBsYXRlOihCT09MKWlzVGVtcGxhdGU7CgoKCgotIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlE
ZXNjcmlwdGlvbiA7Ci0gKHZvaWQpc2V0QWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uOihOU1N0cmlu
ZyAqKWRlc2NyaXB0aW9uIDsKIyAxODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9OU0ltYWdlLmgiIDMKLSAoaWQpaW5pdFdpdGhDR0ltYWdlOihD
R0ltYWdlUmVmKWNnSW1hZ2Ugc2l6ZTooTlNTaXplKXNpemUgOwojIDIwNyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TSW1hZ2UuaCIgMwotIChD
R0ltYWdlUmVmKUNHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6KE5TUmVjdCAqKXByb3Bvc2VkRGVzdFJl
Y3QgY29udGV4dDooTlNHcmFwaGljc0NvbnRleHQgKilyZWZlcmVuY2VDb250ZXh0IGhpbnRzOihO
U0RpY3Rpb25hcnkgKiloaW50cyA7CgoKCi0gKE5TSW1hZ2VSZXAgKiliZXN0UmVwcmVzZW50YXRp
b25Gb3JSZWN0OihOU1JlY3QpcmVjdCBjb250ZXh0OihOU0dyYXBoaWNzQ29udGV4dCAqKXJlZmVy
ZW5jZUNvbnRleHQgaGludHM6KE5TRGljdGlvbmFyeSAqKWhpbnRzIDsKCgoKLSAoQk9PTCloaXRU
ZXN0UmVjdDooTlNSZWN0KXRlc3RSZWN0RGVzdFNwYWNlIHdpdGhJbWFnZURlc3RpbmF0aW9uUmVj
dDooTlNSZWN0KWltYWdlUmVjdERlc3RTcGFjZSBjb250ZXh0OihOU0dyYXBoaWNzQ29udGV4dCAq
KWNvbnRleHQgaGludHM6KE5TRGljdGlvbmFyeSAqKWhpbnRzIGZsaXBwZWQ6KEJPT0wpZmxpcHBl
ZCA7CgpAZW5kCgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdlSGludENUTSA7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1hZ2VIaW50SW50ZXJwb2xhdGlvbiA7CgpAcHJv
dG9jb2wgTlNJbWFnZURlbGVnYXRlIDxOU09iamVjdD4KQG9wdGlvbmFsCgotIChOU0ltYWdlICop
aW1hZ2VEaWROb3REcmF3OihpZClzZW5kZXIgaW5SZWN0OihOU1JlY3QpYVJlY3Q7CgoKLSAodm9p
ZClpbWFnZTooTlNJbWFnZSopaW1hZ2Ugd2lsbExvYWRSZXByZXNlbnRhdGlvbjooTlNJbWFnZVJl
cCopcmVwOwotICh2b2lkKWltYWdlOihOU0ltYWdlKilpbWFnZSBkaWRMb2FkUmVwcmVzZW50YXRp
b25IZWFkZXI6KE5TSW1hZ2VSZXAqKXJlcDsKLSAodm9pZClpbWFnZTooTlNJbWFnZSopaW1hZ2Ug
ZGlkTG9hZFBhcnRPZlJlcHJlc2VudGF0aW9uOihOU0ltYWdlUmVwKilyZXAgd2l0aFZhbGlkUm93
czooTlNJbnRlZ2VyKXJvd3M7Ci0gKHZvaWQpaW1hZ2U6KE5TSW1hZ2UqKWltYWdlIGRpZExvYWRS
ZXByZXNlbnRhdGlvbjooTlNJbWFnZVJlcCopcmVwIHdpdGhTdGF0dXM6KE5TSW1hZ2VMb2FkU3Rh
dHVzKXN0YXR1czsKCkBlbmQKCkBpbnRlcmZhY2UgTlNCdW5kbGUoTlNCdW5kbGVJbWFnZUV4dGVu
c2lvbikKLSAoTlNTdHJpbmcgKilwYXRoRm9ySW1hZ2VSZXNvdXJjZTooTlNTdHJpbmcgKiluYW1l
OwotIChOU1VSTCAqKVVSTEZvckltYWdlUmVzb3VyY2U6KE5TU3RyaW5nICopbmFtZSA7CkBlbmQK
CkBpbnRlcmZhY2UgTlNJbWFnZSAoTlNEZXByZWNhdGVkKQoKCi0gKHZvaWQpc2V0RmxpcHBlZDoo
Qk9PTClmbGFnOwotIChCT09MKWlzRmxpcHBlZDsKCgotICh2b2lkKWRpc3NvbHZlVG9Qb2ludDoo
TlNQb2ludClwb2ludCBmcmFjdGlvbjooQ0dGbG9hdClhRmxvYXQ7Ci0gKHZvaWQpZGlzc29sdmVU
b1BvaW50OihOU1BvaW50KXBvaW50IGZyb21SZWN0OihOU1JlY3QpcmVjdCBmcmFjdGlvbjooQ0dG
bG9hdClhRmxvYXQ7Ci0gKHZvaWQpY29tcG9zaXRlVG9Qb2ludDooTlNQb2ludClwb2ludCBvcGVy
YXRpb246KE5TQ29tcG9zaXRpbmdPcGVyYXRpb24pb3A7Ci0gKHZvaWQpY29tcG9zaXRlVG9Qb2lu
dDooTlNQb2ludClwb2ludCBmcm9tUmVjdDooTlNSZWN0KXJlY3Qgb3BlcmF0aW9uOihOU0NvbXBv
c2l0aW5nT3BlcmF0aW9uKW9wOwotICh2b2lkKWNvbXBvc2l0ZVRvUG9pbnQ6KE5TUG9pbnQpcG9p
bnQgb3BlcmF0aW9uOihOU0NvbXBvc2l0aW5nT3BlcmF0aW9uKW9wIGZyYWN0aW9uOihDR0Zsb2F0
KWRlbHRhOwotICh2b2lkKWNvbXBvc2l0ZVRvUG9pbnQ6KE5TUG9pbnQpcG9pbnQgZnJvbVJlY3Q6
KE5TUmVjdClyZWN0IG9wZXJhdGlvbjooTlNDb21wb3NpdGluZ09wZXJhdGlvbilvcCBmcmFjdGlv
bjooQ0dGbG9hdClkZWx0YTsKCgotICh2b2lkKWxvY2tGb2N1c09uUmVwcmVzZW50YXRpb246KE5T
SW1hZ2VSZXAgKilpbWFnZVJlcHJlc2VudGF0aW9uOwoKCi0gKHZvaWQpc2V0U2NhbGVzV2hlblJl
c2l6ZWQ6KEJPT0wpZmxhZzsKLSAoQk9PTClzY2FsZXNXaGVuUmVzaXplZDsKLSAodm9pZClzZXRE
YXRhUmV0YWluZWQ6KEJPT0wpZmxhZzsKLSAoQk9PTClpc0RhdGFSZXRhaW5lZDsKLSAodm9pZClz
ZXRDYWNoZWRTZXBhcmF0ZWx5OihCT09MKWZsYWc7Ci0gKEJPT0wpaXNDYWNoZWRTZXBhcmF0ZWx5
OwotICh2b2lkKXNldENhY2hlRGVwdGhNYXRjaGVzSW1hZ2VEZXB0aDooQk9PTClmbGFnOwotIChC
T09MKWNhY2hlRGVwdGhNYXRjaGVzSW1hZ2VEZXB0aDsKCkBlbmQKCiAgICAgICAKICAgICAgIAoj
IDI4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJz
L05TSW1hZ2UuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFtZVF1aWNr
TG9va1RlbXBsYXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJbWFnZU5hbWVCbHVl
dG9vdGhUZW1wbGF0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1hZ2VOYW1lSUNo
YXRUaGVhdGVyVGVtcGxhdGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFt
ZVNsaWRlc2hvd1RlbXBsYXRlIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJbWFn
ZU5hbWVBY3Rpb25UZW1wbGF0ZSA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1h
Z2VOYW1lU21hcnRCYWRnZVRlbXBsYXRlIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNJbWFnZU5hbWVJY29uVmlld1RlbXBsYXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNJbWFnZU5hbWVMaXN0Vmlld1RlbXBsYXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNJbWFnZU5hbWVDb2x1bW5WaWV3VGVtcGxhdGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU0ltYWdlTmFtZUZsb3dWaWV3VGVtcGxhdGUgOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29u
c3QgTlNJbWFnZU5hbWVQYXRoVGVtcGxhdGUgOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU0ltYWdlTmFtZUludmFsaWREYXRhRnJlZXN0YW5kaW5nVGVtcGxhdGUgOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFtZUxvY2tMb2NrZWRUZW1wbGF0ZSA7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1hZ2VOYW1lTG9ja1VubG9ja2VkVGVtcGxhdGUgOwoKCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFtZUdvUmlnaHRUZW1wbGF0ZSA7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1hZ2VOYW1lR29MZWZ0VGVtcGxhdGUgOwoKCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFtZVJpZ2h0RmFjaW5nVHJpYW5nbGVU
ZW1wbGF0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1hZ2VOYW1lTGVmdEZhY2lu
Z1RyaWFuZ2xlVGVtcGxhdGUgOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJbWFnZU5h
bWVBZGRUZW1wbGF0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1hZ2VOYW1lUmVt
b3ZlVGVtcGxhdGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFtZVJldmVh
bEZyZWVzdGFuZGluZ1RlbXBsYXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJbWFn
ZU5hbWVGb2xsb3dMaW5rRnJlZXN0YW5kaW5nVGVtcGxhdGUgOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpjb25zdCBOU0ltYWdlTmFtZUVudGVyRnVsbFNjcmVlblRlbXBsYXRlIDsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqY29uc3QgTlNJbWFnZU5hbWVFeGl0RnVsbFNjcmVlblRlbXBsYXRlIDsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqY29uc3QgTlNJbWFnZU5hbWVTdG9wUHJvZ3Jlc3NUZW1wbGF0ZSA7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1hZ2VOYW1lU3RvcFByb2dyZXNzRnJlZXN0YW5k
aW5nVGVtcGxhdGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFtZVJlZnJl
c2hUZW1wbGF0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1hZ2VOYW1lUmVmcmVz
aEZyZWVzdGFuZGluZ1RlbXBsYXRlIDsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1h
Z2VOYW1lQm9uam91ciA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1hZ2VOYW1lQ29t
cHV0ZXIgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFtZUZvbGRlckJ1cm5h
YmxlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJbWFnZU5hbWVGb2xkZXJTbWFydCA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1hZ2VOYW1lRm9sZGVyIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNJbWFnZU5hbWVOZXR3b3JrIDsKCgoKZXh0ZXJuICJDIiBOU1N0
cmluZyAqY29uc3QgTlNJbWFnZU5hbWVEb3RNYWMgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU0ltYWdlTmFtZU1vYmlsZU1lIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJ
bWFnZU5hbWVNdWx0aXBsZURvY3VtZW50cyA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0
IE5TSW1hZ2VOYW1lVXNlckFjY291bnRzIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJ
bWFnZU5hbWVQcmVmZXJlbmNlc0dlbmVyYWwgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBO
U0ltYWdlTmFtZUFkdmFuY2VkIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJbWFn
ZU5hbWVJbmZvIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJbWFnZU5hbWVGb250UGFu
ZWwgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFtZUNvbG9yUGFuZWwgOwoK
CgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFtZVVzZXIgOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFtZVVzZXJHcm91cCA7CmV4dGVybiAiQyIgTlNTdHJp
bmcgKmNvbnN0IE5TSW1hZ2VOYW1lRXZlcnlvbmUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU0ltYWdlTmFtZVVzZXJHdWVzdCA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5T
SW1hZ2VOYW1lTWVudU9uU3RhdGVUZW1wbGF0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0
IE5TSW1hZ2VOYW1lTWVudU1peGVkU3RhdGVUZW1wbGF0ZSA7CgoKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKmNvbnN0IE5TSW1hZ2VOYW1lQXBwbGljYXRpb25JY29uIDsKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKmNvbnN0IE5TSW1hZ2VOYW1lVHJhc2hFbXB0eSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TSW1hZ2VOYW1lVHJhc2hGdWxsIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJ
bWFnZU5hbWVIb21lVGVtcGxhdGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdl
TmFtZUJvb2ttYXJrc1RlbXBsYXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJbWFn
ZU5hbWVDYXV0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNJbWFnZU5hbWVTdGF0
dXNBdmFpbGFibGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdlTmFtZVN0YXR1
c1BhcnRpYWxseUF2YWlsYWJsZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TSW1hZ2VO
YW1lU3RhdHVzVW5hdmFpbGFibGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU0ltYWdl
TmFtZVN0YXR1c05vbmUgOwojIDYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0ltYWdlQ2VsbC5oIiAxIDMKIyAxMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TSW1h
Z2VDZWxsLmgiIDMKQGNsYXNzIE5TSW1hZ2U7CgplbnVtIHsKICAgIE5TSW1hZ2VBbGlnbkNlbnRl
ciA9IDAsCiAgICBOU0ltYWdlQWxpZ25Ub3AsCiAgICBOU0ltYWdlQWxpZ25Ub3BMZWZ0LAogICAg
TlNJbWFnZUFsaWduVG9wUmlnaHQsCiAgICBOU0ltYWdlQWxpZ25MZWZ0LAogICAgTlNJbWFnZUFs
aWduQm90dG9tLAogICAgTlNJbWFnZUFsaWduQm90dG9tTGVmdCwKICAgIE5TSW1hZ2VBbGlnbkJv
dHRvbVJpZ2h0LAogICAgTlNJbWFnZUFsaWduUmlnaHQKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5T
SW1hZ2VBbGlnbm1lbnQ7CgplbnVtIHsKICAgIE5TSW1hZ2VGcmFtZU5vbmUgPSAwLAogICAgTlNJ
bWFnZUZyYW1lUGhvdG8sCiAgICBOU0ltYWdlRnJhbWVHcmF5QmV6ZWwsCiAgICBOU0ltYWdlRnJh
bWVHcm9vdmUsCiAgICBOU0ltYWdlRnJhbWVCdXR0b24KfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5T
SW1hZ2VGcmFtZVN0eWxlOwoKCkBpbnRlcmZhY2UgTlNJbWFnZUNlbGwgOiBOU0NlbGwgPE5TQ29w
eWluZywgTlNDb2Rpbmc+CnsKCiAgICBpZCBfY29udHJvbFZpZXc7CiAgICBzdHJ1Y3QgX19JQ0Zs
YWdzIHsKICAgICAgICB1bnNpZ25lZCBpbnQgX3VudXNlZDoyMjsKICAgICAgICB1bnNpZ25lZCBp
bnQgX2FuaW1hdGVzOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9hbGlnbjo0OwogICAgICAgIHVu
c2lnbmVkIGludCBfc2NhbGU6MjsKICAgICAgICB1bnNpZ25lZCBpbnQgX3N0eWxlOjM7CiAgICB9
IF9pY0ZsYWdzOwogICAgc3RydWN0IF9OU0ltYWdlQ2VsbEFuaW1hdGlvblN0YXRlICpfYW5pbWF0
aW9uU3RhdGU7CiAgICBOU0ltYWdlICpfc2NhbGVkSW1hZ2U7Cn0KCi0gKE5TSW1hZ2VBbGlnbm1l
bnQpaW1hZ2VBbGlnbm1lbnQ7Ci0gKHZvaWQpc2V0SW1hZ2VBbGlnbm1lbnQ6KE5TSW1hZ2VBbGln
bm1lbnQpbmV3QWxpZ247Ci0gKE5TSW1hZ2VTY2FsaW5nKWltYWdlU2NhbGluZzsKLSAodm9pZClz
ZXRJbWFnZVNjYWxpbmc6KE5TSW1hZ2VTY2FsaW5nKW5ld1NjYWxpbmc7Ci0gKE5TSW1hZ2VGcmFt
ZVN0eWxlKWltYWdlRnJhbWVTdHlsZTsKLSAodm9pZClzZXRJbWFnZUZyYW1lU3R5bGU6KE5TSW1h
Z2VGcmFtZVN0eWxlKW5ld1N0eWxlOwoKQGVuZAojIDYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwoKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNJbWFnZVZpZXcu
aCIgMSAzCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU0ltYWdlVmlldy5oIiAzCkBpbnRlcmZhY2UgTlNJbWFnZVZpZXcgOiBOU0NvbnRy
b2wKewoKICAgIHN0cnVjdCBfX0lWRmxhZ3MgewogICAgICAgIHVuc2lnbmVkIGludCBfdW51c2Vk
OjI2OwogICAgICAgIHVuc2lnbmVkIGludCBfcmVqZWN0c011bHRpRmlsZURyb3BzOjE7CiAgICAg
ICAgdW5zaWduZWQgaW50IF9jb21wYXRpYmxlU2NhbGluZ0FuZEFsaWdubWVudDoxOwogICAgICAg
IHVuc2lnbmVkIGludCBfcmVzZXJ2ZWQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX292ZXJyaWRl
c0RyYXdpbmc6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX2FsbG93c0N1dENvcHlQYXN0ZToxOwog
ICAgICAgIHVuc2lnbmVkIGludCBfZWRpdGFibGU6MTsKICAgIH0gX2l2RmxhZ3M7CiAgICBpZCBf
dGFyZ2V0OwogICAgU0VMIF9hY3Rpb247Cn0KCgotIChOU0ltYWdlICopaW1hZ2U7Ci0gKHZvaWQp
c2V0SW1hZ2U6KE5TSW1hZ2UgKiluZXdJbWFnZTsKCi0gKE5TSW1hZ2VBbGlnbm1lbnQpaW1hZ2VB
bGlnbm1lbnQ7Ci0gKHZvaWQpc2V0SW1hZ2VBbGlnbm1lbnQ6KE5TSW1hZ2VBbGlnbm1lbnQpbmV3
QWxpZ247Ci0gKE5TSW1hZ2VTY2FsaW5nKWltYWdlU2NhbGluZzsKLSAodm9pZClzZXRJbWFnZVNj
YWxpbmc6KE5TSW1hZ2VTY2FsaW5nKW5ld1NjYWxpbmc7Ci0gKE5TSW1hZ2VGcmFtZVN0eWxlKWlt
YWdlRnJhbWVTdHlsZTsKLSAodm9pZClzZXRJbWFnZUZyYW1lU3R5bGU6KE5TSW1hZ2VGcmFtZVN0
eWxlKW5ld1N0eWxlOwotICh2b2lkKXNldEVkaXRhYmxlOihCT09MKXluOwotIChCT09MKWlzRWRp
dGFibGU7CgoKLSAodm9pZClzZXRBbmltYXRlczooQk9PTClmbGFnOwotIChCT09MKWFuaW1hdGVz
OwoKCgotIChCT09MKWFsbG93c0N1dENvcHlQYXN0ZTsKLSAodm9pZClzZXRBbGxvd3NDdXRDb3B5
UGFzdGU6KEJPT0wpYWxsb3c7CgoKQGVuZAojIDY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU05pYi5oIiAxIDMKIyAy
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05T
TmliLmgiIDMKQGNsYXNzIE5TQXJyYXksIE5TQnVuZGxlLCBOU0RhdGEsIE5TRGljdGlvbmFyeSwg
TlNJQk9iamVjdERhdGEsIE5TVVJMOwoKQGludGVyZmFjZSBOU05pYiA6IE5TT2JqZWN0IDxOU0Nv
ZGluZz4gewogICBAcHJpdmF0ZQogICAgTlNEYXRhICpfZGF0YTsKICAgIE5TQXJyYXkgKl9pbWFn
ZXM7CiAgICBOU0FycmF5ICpfc291bmRzOwogICAgTlNCdW5kbGUgKl9idW5kbGU7CiAgICBzdHJ1
Y3QgX05TTmliRmxhZ3MgewogICAgICAgIHVuc2lnbmVkIGludCBfaXNLZXllZDoxOwogICAgICAg
IHVuc2lnbmVkIGludCBfcmVzZXJ2ZWQ6MzE7CiAgICB9IF9mbGFnczsKICAgIE5TU3RyaW5nICpf
cGF0aDsKICAgIGlkIHJlc2VydmVkMjsKCn0KCgoKCgotIChpZClpbml0V2l0aENvbnRlbnRzT2ZV
Ukw6KE5TVVJMICopbmliRmlsZVVSTDsKCgoKCgotIChpZClpbml0V2l0aE5pYk5hbWVkOihOU1N0
cmluZyAqKW5pYk5hbWUgYnVuZGxlOihOU0J1bmRsZSAqKWJ1bmRsZTsKIyA2MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TTmliLmgiIDMKLSAo
Qk9PTClpbnN0YW50aWF0ZU5pYldpdGhFeHRlcm5hbE5hbWVUYWJsZTooTlNEaWN0aW9uYXJ5ICop
ZXh0ZXJuYWxOYW1lVGFibGU7CgoKCgoKCi0gKEJPT0wpaW5zdGFudGlhdGVOaWJXaXRoT3duZXI6
KGlkKW93bmVyIHRvcExldmVsT2JqZWN0czooTlNBcnJheSAqKil0b3BMZXZlbE9iamVjdHM7CgpA
ZW5kCgoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TTmliT3duZXI7CgoKCmV4dGVybiAiQyIg
TlNTdHJpbmcgKk5TTmliVG9wTGV2ZWxPYmplY3RzOwojIDY1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU05pYkxvYWRp
bmcuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9OU05pYkxvYWRpbmcuaCIgMwpAY2xhc3MgTlNTdHJpbmcsIE5TRGljdGlvbmFy
eTsKCkBpbnRlcmZhY2UgTlNCdW5kbGUoTlNOaWJMb2FkaW5nKQoKKyAoQk9PTClsb2FkTmliRmls
ZTooTlNTdHJpbmcgKilmaWxlTmFtZSBleHRlcm5hbE5hbWVUYWJsZTooTlNEaWN0aW9uYXJ5ICop
Y29udGV4dCB3aXRoWm9uZTooTlNab25lICopem9uZTsKCgorIChCT09MKWxvYWROaWJOYW1lZDoo
TlNTdHJpbmcgKiluaWJOYW1lIG93bmVyOihpZClvd25lcjsKCgotIChCT09MKWxvYWROaWJGaWxl
OihOU1N0cmluZyAqKWZpbGVOYW1lIGV4dGVybmFsTmFtZVRhYmxlOihOU0RpY3Rpb25hcnkgKilj
b250ZXh0IHdpdGhab25lOihOU1pvbmUgKil6b25lOwoKCkBlbmQKCkBpbnRlcmZhY2UgTlNPYmpl
Y3QgKE5TTmliQXdha2luZykKLSAodm9pZClhd2FrZUZyb21OaWI7CgpAZW5kCiMgNjYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIg
MiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFk
ZXJzL05TUHJpbnRlci5oIiAxIDMKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yay9IZWFkZXJzL05TUHJpbnRlci5oIiAzCkBjbGFzcyBOU0FycmF5LCBOU0Rp
Y3Rpb25hcnksIE5TU3RyaW5nOwoKCgplbnVtIHsKICAgIE5TUHJpbnRlclRhYmxlT0sgPSAwLAog
ICAgTlNQcmludGVyVGFibGVOb3RGb3VuZCA9IDEsCiAgICBOU1ByaW50ZXJUYWJsZUVycm9yID0g
Mgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNQcmludGVyVGFibGVTdGF0dXM7CgpAaW50ZXJmYWNl
IE5TUHJpbnRlcjogTlNPYmplY3Q8TlNDb3B5aW5nLCBOU0NvZGluZz4gewogICAgQHByaXZhdGUK
ICAgIE5TU3RyaW5nICpfcHJpbnRlck5hbWU7CiAgICB2b2lkICpfcHJpbnRlcjsKICAgIE5TRGlj
dGlvbmFyeSAqX2NhY2hlZERldmljZURlc2NyaXB0aW9uOwogICAgaW50IF9wcGRDcmVhdGlvbk51
bTsKICAgIHZvaWQgKl9wcGROb2RlczsKICAgIHZvaWQgKl9wcGRQcml2OwoKICAgIGlkIF9yZXNl
cnZlZFszXTsKCgoKfQoKCgorIChOU0FycmF5ICopcHJpbnRlck5hbWVzOwoKCgorIChOU0FycmF5
ICopcHJpbnRlclR5cGVzOwoKCgorIChOU1ByaW50ZXIgKilwcmludGVyV2l0aE5hbWU6KE5TU3Ry
aW5nICopbmFtZTsKCgoKKyAoTlNQcmludGVyICopcHJpbnRlcldpdGhUeXBlOihOU1N0cmluZyAq
KXR5cGU7CgoKCi0gKE5TU3RyaW5nICopbmFtZTsKCgoKLSAoTlNTdHJpbmcgKil0eXBlOwoKCgot
IChOU0ludGVnZXIpbGFuZ3VhZ2VMZXZlbDsKCgoKLSAoTlNTaXplKXBhZ2VTaXplRm9yUGFwZXI6
KE5TU3RyaW5nICopcGFwZXJOYW1lOwoKCgotIChOU1ByaW50ZXJUYWJsZVN0YXR1cylzdGF0dXNG
b3JUYWJsZTooTlNTdHJpbmcgKil0YWJsZU5hbWU7CgoKCi0gKEJPT0wpaXNLZXk6KE5TU3RyaW5n
ICopa2V5IGluVGFibGU6KE5TU3RyaW5nICopdGFibGU7Ci0gKEJPT0wpYm9vbGVhbkZvcktleToo
TlNTdHJpbmcgKilrZXkgaW5UYWJsZTooTlNTdHJpbmcgKil0YWJsZTsKLSAoZmxvYXQpZmxvYXRG
b3JLZXk6KE5TU3RyaW5nICopa2V5IGluVGFibGU6KE5TU3RyaW5nICopdGFibGU7Ci0gKGludClp
bnRGb3JLZXk6KE5TU3RyaW5nICopa2V5IGluVGFibGU6KE5TU3RyaW5nICopdGFibGU7Ci0gKE5T
UmVjdClyZWN0Rm9yS2V5OihOU1N0cmluZyAqKWtleSBpblRhYmxlOihOU1N0cmluZyAqKXRhYmxl
OwotIChOU1NpemUpc2l6ZUZvcktleTooTlNTdHJpbmcgKilrZXkgaW5UYWJsZTooTlNTdHJpbmcg
Kil0YWJsZTsKLSAoTlNTdHJpbmcgKilzdHJpbmdGb3JLZXk6KE5TU3RyaW5nICopa2V5IGluVGFi
bGU6KE5TU3RyaW5nICopdGFibGU7Ci0gKE5TQXJyYXkgKilzdHJpbmdMaXN0Rm9yS2V5OihOU1N0
cmluZyAqKWtleSBpblRhYmxlOihOU1N0cmluZyAqKXRhYmxlOwoKCgotIChOU0RpY3Rpb25hcnkg
KilkZXZpY2VEZXNjcmlwdGlvbjsKCkBlbmQKCkBpbnRlcmZhY2UgTlNQcmludGVyKE5TRGVwcmVj
YXRlZCkKCgoKLSAoTlNSZWN0KWltYWdlUmVjdEZvclBhcGVyOihOU1N0cmluZyAqKXBhcGVyTmFt
ZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCi0gKEJPT0wpYWNjZXB0c0JpbmFyeSBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKEJPT0wpaXNDb2xvciBfX2F0dHJpYnV0ZV9f
KChkZXByZWNhdGVkKSk7Ci0gKEJPT0wpaXNGb250QXZhaWxhYmxlOihOU1N0cmluZyAqKWZhY2VO
YW1lIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAoQk9PTClpc091dHB1dFN0YWNrSW5S
ZXZlcnNlT3JkZXIgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCgorIChOU1ByaW50ZXIg
KilwcmludGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZSBkb21haW46KE5TU3RyaW5nICopZG9t
YWluIGluY2x1ZGVVbmF2YWlsYWJsZTooQk9PTClmbGFnIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKLSAoTlNTdHJpbmcgKilkb21haW4gX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwot
IChOU1N0cmluZyAqKWhvc3QgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChOU1N0cmlu
ZyAqKW5vdGUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKQGVuZAojIDY3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIg
MwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9OU1NwZWVjaFJlY29nbml6ZXIuaCIgMSAzCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1NwZWVjaFJlY29nbml6ZXIuaCIgMwpAY2xh
c3MgTlNBcnJheSwgTlNTdHJpbmc7CkBwcm90b2NvbCBOU1NwZWVjaFJlY29nbml6ZXJEZWxlZ2F0
ZTsKCgoKQGludGVyZmFjZSBOU1NwZWVjaFJlY29nbml6ZXIgOiBOU09iamVjdCB7CkBwcml2YXRl
CiAgICBpZCBfcHJpdmF0ZU5TU3BlZWNoUmVjb2duaXplclZhcnM7Cn0KCi0gKGlkKWluaXQ7Cgot
ICh2b2lkKXN0YXJ0TGlzdGVuaW5nOwotICh2b2lkKXN0b3BMaXN0ZW5pbmc7CgotIChpZCA8TlNT
cGVlY2hSZWNvZ25pemVyRGVsZWdhdGU+KWRlbGVnYXRlOwotICh2b2lkKXNldERlbGVnYXRlOihp
ZCA8TlNTcGVlY2hSZWNvZ25pemVyRGVsZWdhdGU+KWFuT2JqZWN0OwoKLSAoTlNBcnJheSAqKWNv
bW1hbmRzOwotICh2b2lkKXNldENvbW1hbmRzOihOU0FycmF5ICopY29tbWFuZHM7CgotIChOU1N0
cmluZyAqKWRpc3BsYXllZENvbW1hbmRzVGl0bGU7Ci0gKHZvaWQpc2V0RGlzcGxheWVkQ29tbWFu
ZHNUaXRsZTooTlNTdHJpbmcgKil0aXRsZTsKCi0gKEJPT0wpbGlzdGVuc0luRm9yZWdyb3VuZE9u
bHk7Ci0gKHZvaWQpc2V0TGlzdGVuc0luRm9yZWdyb3VuZE9ubHk6KEJPT0wpZmxhZzsKCi0gKEJP
T0wpYmxvY2tzT3RoZXJSZWNvZ25pemVyczsKLSAodm9pZClzZXRCbG9ja3NPdGhlclJlY29nbml6
ZXJzOihCT09MKWZsYWc7CgpAZW5kCgpAcHJvdG9jb2wgTlNTcGVlY2hSZWNvZ25pemVyRGVsZWdh
dGUgPE5TT2JqZWN0PgpAb3B0aW9uYWwKLSAodm9pZClzcGVlY2hSZWNvZ25pemVyOihOU1NwZWVj
aFJlY29nbml6ZXIgKilzZW5kZXIgZGlkUmVjb2duaXplQ29tbWFuZDooaWQpY29tbWFuZDsKCkBl
bmQKIyA2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFk
ZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNTcGVlY2hTeW50aGVzaXplci5oIiAxIDMKIyAxMiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU3BlZWNoU3lu
dGhlc2l6ZXIuaCIgMwpAY2xhc3MgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBOU1N0cmluZywgTlNV
UkwsIE5TRXJyb3I7CkBwcm90b2NvbCBOU1NwZWVjaFN5bnRoZXNpemVyRGVsZWdhdGU7CgpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1ZvaWNlTmFtZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcg
KmNvbnN0IE5TVm9pY2VJZGVudGlmaWVyIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNW
b2ljZUFnZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TVm9pY2VHZW5kZXIgOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1ZvaWNlRGVtb1RleHQgOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICpjb25zdCBOU1ZvaWNlTG9jYWxlSWRlbnRpZmllciA7CmV4dGVybiAiQyIgTlNTdHJpbmcg
KmNvbnN0IE5TVm9pY2VTdXBwb3J0ZWRDaGFyYWN0ZXJzIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
Y29uc3QgTlNWb2ljZUluZGl2aWR1YWxseVNwb2tlbkNoYXJhY3RlcnMgOwoKCmV4dGVybiAiQyIg
TlNTdHJpbmcgKmNvbnN0IE5TVm9pY2VHZW5kZXJOZXV0ZXIgOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpjb25zdCBOU1ZvaWNlR2VuZGVyTWFsZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5T
Vm9pY2VHZW5kZXJGZW1hbGUgOwoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TVm9pY2VM
YW5ndWFnZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCmVudW0gewogICAgTlNTcGVl
Y2hJbW1lZGlhdGVCb3VuZGFyeSA9IDAsCiAgICBOU1NwZWVjaFdvcmRCb3VuZGFyeSwKICAgIE5T
U3BlZWNoU2VudGVuY2VCb3VuZGFyeQp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNTcGVlY2hCb3Vu
ZGFyeTsKCgoKCkBpbnRlcmZhY2UgTlNTcGVlY2hTeW50aGVzaXplciA6IE5TT2JqZWN0IHsKQHBy
aXZhdGUKICAgIGlkIF9wcml2YXRlTlNTcGVlY2hTeW50aGVzaXplclZhcnM7Cn0KCi0gKGlkKWlu
aXRXaXRoVm9pY2U6KE5TU3RyaW5nICopdm9pY2U7CgotIChCT09MKXN0YXJ0U3BlYWtpbmdTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nOwotIChCT09MKXN0YXJ0U3BlYWtpbmdTdHJpbmc6KE5TU3Ry
aW5nICopc3RyaW5nIHRvVVJMOihOU1VSTCAqKXVybDsKCi0gKEJPT0wpaXNTcGVha2luZzsKLSAo
dm9pZClzdG9wU3BlYWtpbmc7CgotICh2b2lkKXN0b3BTcGVha2luZ0F0Qm91bmRhcnk6KE5TU3Bl
ZWNoQm91bmRhcnkpYm91bmRhcnk7Ci0gKHZvaWQpcGF1c2VTcGVha2luZ0F0Qm91bmRhcnk6KE5T
U3BlZWNoQm91bmRhcnkpYm91bmRhcnk7Ci0gKHZvaWQpY29udGludWVTcGVha2luZzsKCgotIChp
ZCA8TlNTcGVlY2hTeW50aGVzaXplckRlbGVnYXRlPilkZWxlZ2F0ZTsKLSAodm9pZClzZXREZWxl
Z2F0ZTooaWQgPE5TU3BlZWNoU3ludGhlc2l6ZXJEZWxlZ2F0ZT4pYW5PYmplY3Q7Ci0gKE5TU3Ry
aW5nICopdm9pY2U7Ci0gKEJPT0wpc2V0Vm9pY2U6KE5TU3RyaW5nICopdm9pY2U7CgotIChmbG9h
dClyYXRlOwotICh2b2lkKXNldFJhdGU6KGZsb2F0KXJhdGU7Ci0gKGZsb2F0KXZvbHVtZTsKLSAo
dm9pZClzZXRWb2x1bWU6KGZsb2F0KXZvbHVtZTsKCi0gKEJPT0wpdXNlc0ZlZWRiYWNrV2luZG93
OwotICh2b2lkKXNldFVzZXNGZWVkYmFja1dpbmRvdzooQk9PTClmbGFnOwoKCi0gKHZvaWQpYWRk
U3BlZWNoRGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5KilzcGVlY2hEaWN0aW9uYXJ5OwotIChOU1N0
cmluZyAqKXBob25lbWVzRnJvbVRleHQ6KE5TU3RyaW5nICopdGV4dDsKCi0gKGlkKW9iamVjdEZv
clByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5IGVycm9yOihOU0Vycm9yICoqKW91dEVycm9y
OwotIChCT09MKXNldE9iamVjdDooaWQpb2JqZWN0IGZvclByb3BlcnR5OihOU1N0cmluZyAqKXBy
b3BlcnR5IGVycm9yOihOU0Vycm9yICoqKW91dEVycm9yOwoKCisgKEJPT0wpaXNBbnlBcHBsaWNh
dGlvblNwZWFraW5nOworIChOU1N0cmluZyAqKWRlZmF1bHRWb2ljZTsKKyAoTlNBcnJheSAqKWF2
YWlsYWJsZVZvaWNlczsKKyAoTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlc0ZvclZvaWNlOihOU1N0
cmluZyopdm9pY2U7CgpAZW5kCgpAcHJvdG9jb2wgTlNTcGVlY2hTeW50aGVzaXplckRlbGVnYXRl
IDxOU09iamVjdD4KQG9wdGlvbmFsCi0gKHZvaWQpc3BlZWNoU3ludGhlc2l6ZXI6KE5TU3BlZWNo
U3ludGhlc2l6ZXIgKilzZW5kZXIgZGlkRmluaXNoU3BlYWtpbmc6KEJPT0wpZmluaXNoZWRTcGVh
a2luZzsKLSAodm9pZClzcGVlY2hTeW50aGVzaXplcjooTlNTcGVlY2hTeW50aGVzaXplciAqKXNl
bmRlciB3aWxsU3BlYWtXb3JkOihOU1JhbmdlKWNoYXJhY3RlclJhbmdlIG9mU3RyaW5nOihOU1N0
cmluZyAqKXN0cmluZzsKLSAodm9pZClzcGVlY2hTeW50aGVzaXplcjooTlNTcGVlY2hTeW50aGVz
aXplciAqKXNlbmRlciB3aWxsU3BlYWtQaG9uZW1lOihzaG9ydClwaG9uZW1lT3Bjb2RlOwoKLSAo
dm9pZClzcGVlY2hTeW50aGVzaXplcjooTlNTcGVlY2hTeW50aGVzaXplciAqKXNlbmRlciBkaWRF
bmNvdW50ZXJFcnJvckF0SW5kZXg6KE5TVUludGVnZXIpY2hhcmFjdGVySW5kZXggb2ZTdHJpbmc6
KE5TU3RyaW5nICopc3RyaW5nIG1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZTsKLSAodm9pZClz
cGVlY2hTeW50aGVzaXplcjooTlNTcGVlY2hTeW50aGVzaXplciAqKXNlbmRlciBkaWRFbmNvdW50
ZXJTeW5jTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlOwoKQGVuZAoKCmV4dGVybiAiQyIgTlNT
dHJpbmcgKmNvbnN0IE5TU3BlZWNoU3RhdHVzUHJvcGVydHkgOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpjb25zdCBOU1NwZWVjaEVycm9yc1Byb3BlcnR5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29u
c3QgTlNTcGVlY2hJbnB1dE1vZGVQcm9wZXJ0eSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0
IE5TU3BlZWNoQ2hhcmFjdGVyTW9kZVByb3BlcnR5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29u
c3QgTlNTcGVlY2hOdW1iZXJNb2RlUHJvcGVydHkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU1NwZWVjaFJhdGVQcm9wZXJ0eSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TU3Bl
ZWNoUGl0Y2hCYXNlUHJvcGVydHkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1NwZWVj
aFBpdGNoTW9kUHJvcGVydHkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1NwZWVjaFZv
bHVtZVByb3BlcnR5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNTcGVlY2hTeW50aGVz
aXplckluZm9Qcm9wZXJ0eSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TU3BlZWNoUmVj
ZW50U3luY1Byb3BlcnR5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNTcGVlY2hQaG9u
ZW1lU3ltYm9sc1Byb3BlcnR5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNTcGVlY2hD
dXJyZW50Vm9pY2VQcm9wZXJ0eSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TU3BlZWNo
Q29tbWFuZERlbGltaXRlclByb3BlcnR5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNT
cGVlY2hSZXNldFByb3BlcnR5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNTcGVlY2hP
dXRwdXRUb0ZpbGVVUkxQcm9wZXJ0eSA7CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNT
cGVlY2hNb2RlVGV4dCA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TU3BlZWNoTW9kZVBo
b25lbWUgOwoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TU3BlZWNoTW9kZU5vcm1hbCA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TU3BlZWNoTW9kZUxpdGVyYWwgOwoKCmV4dGVy
biAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TU3BlZWNoU3RhdHVzT3V0cHV0QnVzeSA7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKmNvbnN0IE5TU3BlZWNoU3RhdHVzT3V0cHV0UGF1c2VkIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNTcGVlY2hTdGF0dXNOdW1iZXJPZkNoYXJhY3RlcnNMZWZ0IDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNTcGVlY2hTdGF0dXNQaG9uZW1lQ29kZSA7CgoK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNTcGVlY2hFcnJvckNvdW50IDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNTcGVlY2hFcnJvck9sZGVzdENvZGUgOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpjb25zdCBOU1NwZWVjaEVycm9yT2xkZXN0Q2hhcmFjdGVyT2Zmc2V0IDsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqY29uc3QgTlNTcGVlY2hFcnJvck5ld2VzdENvZGUgOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpjb25zdCBOU1NwZWVjaEVycm9yTmV3ZXN0Q2hhcmFjdGVyT2Zmc2V0IDsKCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1NwZWVjaFN5bnRoZXNpemVySW5mb0lkZW50aWZp
ZXIgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1NwZWVjaFN5bnRoZXNpemVySW5mb1Zl
cnNpb24gOwoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TU3BlZWNoUGhvbmVtZUluZm9P
cGNvZGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1NwZWVjaFBob25lbWVJbmZvU3lt
Ym9sIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNTcGVlY2hQaG9uZW1lSW5mb0V4YW1w
bGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1NwZWVjaFBob25lbWVJbmZvSGlsaXRl
U3RhcnQgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1NwZWVjaFBob25lbWVJbmZvSGls
aXRlRW5kIDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1NwZWVjaENvbW1hbmRQcmVm
aXggOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1NwZWVjaENvbW1hbmRTdWZmaXggOwoK
CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TU3BlZWNoRGljdGlvbmFyeUxvY2FsZUlkZW50
aWZpZXIgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1NwZWVjaERpY3Rpb25hcnlNb2Rp
ZmljYXRpb25EYXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNTcGVlY2hEaWN0aW9u
YXJ5UHJvbnVuY2lhdGlvbnMgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1NwZWVjaERp
Y3Rpb25hcnlBYmJyZXZpYXRpb25zIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNTcGVl
Y2hEaWN0aW9uYXJ5RW50cnlTcGVsbGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5T
U3BlZWNoRGljdGlvbmFyeUVudHJ5UGhvbmVtZXMgOwojIDY5ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1NwZWxsQ2hl
Y2tlci5oIiAxIDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL05TU3BlbGxDaGVja2VyLmgiIDMKQGNsYXNzIE5TQXJyYXksIE5TRGljdGlv
bmFyeSwgTlNTdHJpbmcsIE5TT3J0aG9ncmFwaHksIE5TUGFuZWwsIE5TVmlldywgTlNWaWV3Q29u
dHJvbGxlciwgTlNNZW51OwojIDIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNTcGVsbENoZWNrZXIuaCIgMwpAaW50ZXJmYWNlIE5TU3BlbGxD
aGVja2VyIDogTlNPYmplY3QgewoKCgpAcHJpdmF0ZQoKICAgIGlkIF9ndWVzc2VzQnJvd3NlcjsK
ICAgIGlkIF93b3JkRmllbGQ7CiAgICBpZCBfbGFuZ3VhZ2VQb3BVcDsKICAgIGlkIF9yZXNlcnZl
ZDE7CiAgICBpZCBfcGFuZWw7CiAgICBpZCBfcmVzZXJ2ZWQyOwogICAgaWQgX2NvcnJlY3RCdXR0
b247CiAgICBpZCBfZ3Vlc3NCdXR0b247CiAgICBpZCBfaWdub3JlQnV0dG9uOwogICAgaWQgX3Jl
c2VydmVkMzsKICAgIGlkIF9sYW5ndWFnZXNCcm93c2VyOwogICAgaWQgX3F1b3Rlc0Jyb3dzZXI7
CiAgICBpZCBfcmVwbGFjZW1lbnRzQnJvd3NlcjsKICAgIGlkIF9kZWZpbmVCdXR0b247CgogICAg
c3RydWN0IF9fc2NGbGFncyB7CiAgICAgICAgdW5zaWduZWQgaW50IGF1dG9TaG93R3Vlc3Nlczox
OwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkRGVsYXllZEd1ZXNzOjE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHVuaWdub3JlSW5Qcm9ncmVzczoxOwogICAgICAgIHVuc2lnbmVkIGludCB3b3JkRmll
bGRFZGl0ZWQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgaW5TcGVsbGluZzoxOwogICAgICAgIHVu
c2lnbmVkIGludCByZWNvbm5lY3RTcGVsbGluZzoxOwogICAgICAgIHVuc2lnbmVkIGludCBpbkdy
YW1tYXI6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVjb25uZWN0R3JhbW1hcjoxOwogICAgICAg
IHVuc2lnbmVkIGludCBsYW5ndWFnZUlkZW50aWZpY2F0aW9uOjE7CiAgICAgICAgdW5zaWduZWQg
aW50IGxhbmd1YWdlc0hpZGRlbjoxOwogICAgICAgIHVuc2lnbmVkIGludCBxdW90ZXNCeUxhbmd1
YWdlOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9yZXNlcnZlZDoyMTsKICAgIH0gX3NjRmxhZ3M7
CgogICAgaWQgX3N1YnN0aXR1dGlvbnNQYW5lbDsKICAgIGlkIF9yZXNlcnZlZDQ7CiAgICBpZCBf
bGVhcm5CdXR0b247CiAgICBpZCBfaW5mb0ZpZWxkOwogICAgaWQgX2dyYW1tYXJDb250cm9sOwp9
CgoKKyAoTlNTcGVsbENoZWNrZXIgKilzaGFyZWRTcGVsbENoZWNrZXI7CisgKEJPT0wpc2hhcmVk
U3BlbGxDaGVja2VyRXhpc3RzOwoKCisgKE5TSW50ZWdlcil1bmlxdWVTcGVsbERvY3VtZW50VGFn
OwoKCi0gKE5TUmFuZ2UpY2hlY2tTcGVsbGluZ09mU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZ1Rv
Q2hlY2sgc3RhcnRpbmdBdDooTlNJbnRlZ2VyKXN0YXJ0aW5nT2Zmc2V0IGxhbmd1YWdlOihOU1N0
cmluZyAqKWxhbmd1YWdlIHdyYXA6KEJPT0wpd3JhcEZsYWcgaW5TcGVsbERvY3VtZW50V2l0aFRh
ZzooTlNJbnRlZ2VyKXRhZyB3b3JkQ291bnQ6KE5TSW50ZWdlciAqKXdvcmRDb3VudDsKCi0gKE5T
UmFuZ2UpY2hlY2tTcGVsbGluZ09mU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZ1RvQ2hlY2sgc3Rh
cnRpbmdBdDooTlNJbnRlZ2VyKXN0YXJ0aW5nT2Zmc2V0OwoKCi0gKE5TSW50ZWdlciljb3VudFdv
cmRzSW5TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nVG9Db3VudCBsYW5ndWFnZTooTlNTdHJpbmcg
KilsYW5ndWFnZTsKCgotIChOU1JhbmdlKWNoZWNrR3JhbW1hck9mU3RyaW5nOihOU1N0cmluZyAq
KXN0cmluZ1RvQ2hlY2sgc3RhcnRpbmdBdDooTlNJbnRlZ2VyKXN0YXJ0aW5nT2Zmc2V0IGxhbmd1
YWdlOihOU1N0cmluZyAqKWxhbmd1YWdlIHdyYXA6KEJPT0wpd3JhcEZsYWcgaW5TcGVsbERvY3Vt
ZW50V2l0aFRhZzooTlNJbnRlZ2VyKXRhZyBkZXRhaWxzOihOU0FycmF5ICoqKWRldGFpbHMgOwoK
CgotIChOU0FycmF5ICopY2hlY2tTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nVG9DaGVjayByYW5n
ZTooTlNSYW5nZSlyYW5nZSB0eXBlczooTlNUZXh0Q2hlY2tpbmdUeXBlcyljaGVja2luZ1R5cGVz
IG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnMgaW5TcGVsbERvY3VtZW50V2l0aFRhZzoo
TlNJbnRlZ2VyKXRhZyBvcnRob2dyYXBoeTooTlNPcnRob2dyYXBoeSAqKilvcnRob2dyYXBoeSB3
b3JkQ291bnQ6KE5TSW50ZWdlciAqKXdvcmRDb3VudDsKCgoKLSAoTlNJbnRlZ2VyKXJlcXVlc3RD
aGVja2luZ09mU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZ1RvQ2hlY2sgcmFuZ2U6KE5TUmFuZ2Up
cmFuZ2UgdHlwZXM6KE5TVGV4dENoZWNraW5nVHlwZXMpY2hlY2tpbmdUeXBlcyBvcHRpb25zOihO
U0RpY3Rpb25hcnkgKilvcHRpb25zIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6KE5TSW50ZWdlcil0
YWcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwg
TlNBcnJheSAqcmVzdWx0cywgTlNPcnRob2dyYXBoeSAqb3J0aG9ncmFwaHksIE5TSW50ZWdlciB3
b3JkQ291bnQpKWNvbXBsZXRpb25IYW5kbGVyOwoKCgotIChOU01lbnUgKiltZW51Rm9yUmVzdWx0
OihOU1RleHRDaGVja2luZ1Jlc3VsdCAqKXJlc3VsdCBzdHJpbmc6KE5TU3RyaW5nICopY2hlY2tl
ZFN0cmluZyBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zIGF0TG9jYXRpb246KE5TUG9p
bnQpbG9jYXRpb24gaW5WaWV3OihOU1ZpZXcgKil2aWV3OwoKCgpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU1RleHRDaGVja2luZ09ydGhvZ3JhcGh5S2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNU
ZXh0Q2hlY2tpbmdRdW90ZXNLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1RleHRDaGVja2lu
Z1JlcGxhY2VtZW50c0tleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVGV4dENoZWNraW5nUmVm
ZXJlbmNlRGF0ZUtleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVGV4dENoZWNraW5nUmVmZXJl
bmNlVGltZVpvbmVLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1RleHRDaGVja2luZ0RvY3Vt
ZW50VVJMS2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUZXh0Q2hlY2tpbmdEb2N1bWVudFRp
dGxlS2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUZXh0Q2hlY2tpbmdEb2N1bWVudEF1dGhv
cktleSA7CgoKLSAoTlNBcnJheSAqKXVzZXJRdW90ZXNBcnJheUZvckxhbmd1YWdlOihOU1N0cmlu
ZyAqKWxhbmd1YWdlIDsKLSAoTlNEaWN0aW9uYXJ5ICopdXNlclJlcGxhY2VtZW50c0RpY3Rpb25h
cnkgOwoKCi0gKHZvaWQpdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhNaXNzcGVsbGVkV29yZDooTlNT
dHJpbmcgKil3b3JkOwoKCi0gKHZvaWQpdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZyBkZXRhaWw6KE5TRGljdGlvbmFyeSAqKWRldGFpbCA7CgoK
LSAoTlNQYW5lbCAqKXNwZWxsaW5nUGFuZWw7Ci0gKE5TVmlldyAqKWFjY2Vzc29yeVZpZXc7Ci0g
KHZvaWQpc2V0QWNjZXNzb3J5VmlldzooTlNWaWV3ICopYVZpZXc7CgoKLSAoTlNQYW5lbCAqKXN1
YnN0aXR1dGlvbnNQYW5lbCA7Ci0gKE5TVmlld0NvbnRyb2xsZXIgKilzdWJzdGl0dXRpb25zUGFu
ZWxBY2Nlc3NvcnlWaWV3Q29udHJvbGxlciA7Ci0gKHZvaWQpc2V0U3Vic3RpdHV0aW9uc1BhbmVs
QWNjZXNzb3J5Vmlld0NvbnRyb2xsZXI6KE5TVmlld0NvbnRyb2xsZXIgKilhY2Nlc3NvcnlDb250
cm9sbGVyIDsKCgotICh2b2lkKXVwZGF0ZVBhbmVscyA7CgoKLSAodm9pZClpZ25vcmVXb3JkOihO
U1N0cmluZyAqKXdvcmRUb0lnbm9yZSBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOihOU0ludGVnZXIp
dGFnOwoKLSAoTlNBcnJheSAqKWlnbm9yZWRXb3Jkc0luU3BlbGxEb2N1bWVudFdpdGhUYWc6KE5T
SW50ZWdlcil0YWc7Ci0gKHZvaWQpc2V0SWdub3JlZFdvcmRzOihOU0FycmF5ICopd29yZHMgaW5T
cGVsbERvY3VtZW50V2l0aFRhZzooTlNJbnRlZ2VyKXRhZzsKLSAoTlNBcnJheSAqKWd1ZXNzZXNG
b3JXb3JkUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgaW5TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGxh
bmd1YWdlOihOU1N0cmluZyAqKWxhbmd1YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6KE5TSW50
ZWdlcil0YWcgOwoKCi0gKE5TQXJyYXkgKiljb21wbGV0aW9uc0ZvclBhcnRpYWxXb3JkUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2UgaW5TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGxhbmd1YWdlOihOU1N0
cmluZyAqKWxhbmd1YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6KE5TSW50ZWdlcil0YWcgOwoK
Ci0gKHZvaWQpY2xvc2VTcGVsbERvY3VtZW50V2l0aFRhZzooTlNJbnRlZ2VyKXRhZzsKCgotIChO
U0FycmF5ICopYXZhaWxhYmxlTGFuZ3VhZ2VzIDsKLSAoTlNBcnJheSAqKXVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMgOwotIChCT09MKWF1dG9tYXRpY2FsbHlJZGVudGlmaWVzTGFuZ3VhZ2VzIDsKLSAo
dm9pZClzZXRBdXRvbWF0aWNhbGx5SWRlbnRpZmllc0xhbmd1YWdlczooQk9PTClmbGFnIDsKLSAo
TlNTdHJpbmcgKilsYW5ndWFnZTsKLSAoQk9PTClzZXRMYW5ndWFnZTooTlNTdHJpbmcgKilsYW5n
dWFnZTsKCgotICh2b2lkKXNldFdvcmRGaWVsZFN0cmluZ1ZhbHVlOihOU1N0cmluZyAqKWFTdHJp
bmc7CgoKLSAodm9pZClsZWFybldvcmQ6KE5TU3RyaW5nICopd29yZDsKLSAoQk9PTCloYXNMZWFy
bmVkV29yZDooTlNTdHJpbmcgKil3b3JkIDsKLSAodm9pZCl1bmxlYXJuV29yZDooTlNTdHJpbmcg
Kil3b3JkIDsKCgoKQGVuZAoKQGludGVyZmFjZSBOU1NwZWxsQ2hlY2tlcihOU0RlcHJlY2F0ZWQp
CgoKLSAoTlNBcnJheSAqKWd1ZXNzZXNGb3JXb3JkOihOU1N0cmluZyAqKXdvcmQ7CgoKLSAodm9p
ZClmb3JnZXRXb3JkOihOU1N0cmluZyAqKXdvcmQgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
OwoKQGVuZAojIDcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1NwbGl0Vmlldy5oIiAxIDMKIyAxMCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU3BsaXRWaWV3Lmgi
IDMKQGNsYXNzIE5TTm90aWZpY2F0aW9uOwpAcHJvdG9jb2wgTlNTcGxpdFZpZXdEZWxlZ2F0ZTsK
CgoKZW51bSB7CiAgICBOU1NwbGl0Vmlld0RpdmlkZXJTdHlsZVRoaWNrID0gMSwKICAgIE5TU3Bs
aXRWaWV3RGl2aWRlclN0eWxlVGhpbiA9IDIsCgogICAgTlNTcGxpdFZpZXdEaXZpZGVyU3R5bGVQ
YW5lU3BsaXR0ZXIgPSAzLAoKfTsKdHlwZWRlZiBOU0ludGVnZXIgTlNTcGxpdFZpZXdEaXZpZGVy
U3R5bGU7CgoKCkBpbnRlcmZhY2UgTlNTcGxpdFZpZXcgOiBOU1ZpZXcgewogICAgQHByaXZhdGUK
ICAgIGlkIF92YXJpYWJsZXM7Cn0KCgoKLSAodm9pZClzZXRWZXJ0aWNhbDooQk9PTClmbGFnOwot
IChCT09MKWlzVmVydGljYWw7CgoKCgoKLSAodm9pZClzZXREaXZpZGVyU3R5bGU6KE5TU3BsaXRW
aWV3RGl2aWRlclN0eWxlKWRpdmlkZXJTdHlsZTsKLSAoTlNTcGxpdFZpZXdEaXZpZGVyU3R5bGUp
ZGl2aWRlclN0eWxlOwoKCgotICh2b2lkKXNldEF1dG9zYXZlTmFtZTooTlNTdHJpbmcgKilhdXRv
c2F2ZU5hbWU7Ci0gKE5TU3RyaW5nICopYXV0b3NhdmVOYW1lOwoKCgoKCi0gKHZvaWQpc2V0RGVs
ZWdhdGU6KGlkIDxOU1NwbGl0Vmlld0RlbGVnYXRlPilkZWxlZ2F0ZTsKLSAoaWQgPE5TU3BsaXRW
aWV3RGVsZWdhdGU+KWRlbGVnYXRlOwoKCgotICh2b2lkKWRyYXdEaXZpZGVySW5SZWN0OihOU1Jl
Y3QpcmVjdDsKCgoKCgotIChOU0NvbG9yICopZGl2aWRlckNvbG9yOwoKCgoKCi0gKENHRmxvYXQp
ZGl2aWRlclRoaWNrbmVzczsKCgoKLSAodm9pZClhZGp1c3RTdWJ2aWV3czsKCgoKLSAoQk9PTClp
c1N1YnZpZXdDb2xsYXBzZWQ6KE5TVmlldyAqKXN1YnZpZXc7CiMgODYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1NwbGl0Vmlldy5oIiAzCi0g
KENHRmxvYXQpbWluUG9zc2libGVQb3NpdGlvbk9mRGl2aWRlckF0SW5kZXg6KE5TSW50ZWdlcilk
aXZpZGVySW5kZXg7Ci0gKENHRmxvYXQpbWF4UG9zc2libGVQb3NpdGlvbk9mRGl2aWRlckF0SW5k
ZXg6KE5TSW50ZWdlcilkaXZpZGVySW5kZXg7CgoKCi0gKHZvaWQpc2V0UG9zaXRpb246KENHRmxv
YXQpcG9zaXRpb24gb2ZEaXZpZGVyQXRJbmRleDooTlNJbnRlZ2VyKWRpdmlkZXJJbmRleDsKCgoK
QGVuZAoKQHByb3RvY29sIE5TU3BsaXRWaWV3RGVsZWdhdGUgPE5TT2JqZWN0PgpAb3B0aW9uYWwK
CgoKCgoKLSAoQk9PTClzcGxpdFZpZXc6KE5TU3BsaXRWaWV3ICopc3BsaXRWaWV3IGNhbkNvbGxh
cHNlU3VidmlldzooTlNWaWV3ICopc3VidmlldzsKCgoKCgotIChCT09MKXNwbGl0VmlldzooTlNT
cGxpdFZpZXcgKilzcGxpdFZpZXcgc2hvdWxkQ29sbGFwc2VTdWJ2aWV3OihOU1ZpZXcgKilzdWJ2
aWV3IGZvckRvdWJsZUNsaWNrT25EaXZpZGVyQXRJbmRleDooTlNJbnRlZ2VyKWRpdmlkZXJJbmRl
eDsKCgoKCgoKCi0gKENHRmxvYXQpc3BsaXRWaWV3OihOU1NwbGl0VmlldyAqKXNwbGl0VmlldyBj
b25zdHJhaW5NaW5Db29yZGluYXRlOihDR0Zsb2F0KXByb3Bvc2VkTWluaW11bVBvc2l0aW9uIG9m
U3Vidmlld0F0OihOU0ludGVnZXIpZGl2aWRlckluZGV4OwoKCgoKCi0gKENHRmxvYXQpc3BsaXRW
aWV3OihOU1NwbGl0VmlldyAqKXNwbGl0VmlldyBjb25zdHJhaW5NYXhDb29yZGluYXRlOihDR0Zs
b2F0KXByb3Bvc2VkTWF4aW11bVBvc2l0aW9uIG9mU3Vidmlld0F0OihOU0ludGVnZXIpZGl2aWRl
ckluZGV4OwoKCgotIChDR0Zsb2F0KXNwbGl0VmlldzooTlNTcGxpdFZpZXcgKilzcGxpdFZpZXcg
Y29uc3RyYWluU3BsaXRQb3NpdGlvbjooQ0dGbG9hdClwcm9wb3NlZFBvc2l0aW9uIG9mU3Vidmll
d0F0OihOU0ludGVnZXIpZGl2aWRlckluZGV4OwoKCgoKCi0gKHZvaWQpc3BsaXRWaWV3OihOU1Nw
bGl0VmlldyAqKXNwbGl0VmlldyByZXNpemVTdWJ2aWV3c1dpdGhPbGRTaXplOihOU1NpemUpb2xk
U2l6ZTsKCgoKCgotIChCT09MKXNwbGl0VmlldzooTlNTcGxpdFZpZXcgKilzcGxpdFZpZXcgc2hv
dWxkQWRqdXN0U2l6ZU9mU3VidmlldzooTlNWaWV3ICopdmlldzsKCgoKCgoKCi0gKEJPT0wpc3Bs
aXRWaWV3OihOU1NwbGl0VmlldyAqKXNwbGl0VmlldyBzaG91bGRIaWRlRGl2aWRlckF0SW5kZXg6
KE5TSW50ZWdlcilkaXZpZGVySW5kZXg7CgoKCi0gKE5TUmVjdClzcGxpdFZpZXc6KE5TU3BsaXRW
aWV3ICopc3BsaXRWaWV3IGVmZmVjdGl2ZVJlY3Q6KE5TUmVjdClwcm9wb3NlZEVmZmVjdGl2ZVJl
Y3QgZm9yRHJhd25SZWN0OihOU1JlY3QpZHJhd25SZWN0IG9mRGl2aWRlckF0SW5kZXg6KE5TSW50
ZWdlcilkaXZpZGVySW5kZXg7CgoKCi0gKE5TUmVjdClzcGxpdFZpZXc6KE5TU3BsaXRWaWV3ICop
c3BsaXRWaWV3IGFkZGl0aW9uYWxFZmZlY3RpdmVSZWN0T2ZEaXZpZGVyQXRJbmRleDooTlNJbnRl
Z2VyKWRpdmlkZXJJbmRleDsKCgoKCgotICh2b2lkKXNwbGl0Vmlld1dpbGxSZXNpemVTdWJ2aWV3
czooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0gKHZvaWQpc3BsaXRWaWV3RGlkUmVz
aXplU3Vidmlld3M6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwoKQGVuZAoKCgpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU1NwbGl0Vmlld1dpbGxSZXNpemVTdWJ2aWV3c05vdGlmaWNhdGlv
bjsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNTcGxpdFZpZXdEaWRSZXNpemVTdWJ2aWV3c05v
dGlmaWNhdGlvbjsKCgpAaW50ZXJmYWNlIE5TU3BsaXRWaWV3IChOU0RlcHJlY2F0ZWQpCgoKCi0g
KHZvaWQpc2V0SXNQYW5lU3BsaXR0ZXI6KEJPT0wpZmxhZyBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7Ci0gKEJPT0wpaXNQYW5lU3BsaXR0ZXIgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
OwoKQGVuZAojIDcxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU09wZW5QYW5lbC5oIiAxIDMKCgoKCgoKCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU2F2ZVBh
bmVsLmgiIDEgMwojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvTlNTYXZlUGFuZWwuaCIgMwpAY2xhc3MgTlNCb3gsIE5TTXV0YWJsZUFycmF5
LCBOU05hdlZpZXcsIE5TVGV4dEZpZWxkLCBOU1RleHRWaWV3LCBOU1ZpZXcsIE5TVVJMLCBOU1By
b2dyZXNzSW5kaWNhdG9yOwpAcHJvdG9jb2wgTlNPcGVuU2F2ZVBhbmVsRGVsZWdhdGU7CgoKCmVu
dW0gewogICAgTlNGaWxlSGFuZGxpbmdQYW5lbENhbmNlbEJ1dHRvbiA9IE5TQ2FuY2VsQnV0dG9u
LAogICAgTlNGaWxlSGFuZGxpbmdQYW5lbE9LQnV0dG9uID0gTlNPS0J1dHRvbiwKfTsKCnR5cGVk
ZWYgc3RydWN0IF9fU1BGbGFncyB7CiAgICB1bnNpZ25lZCBpbnQgc2F2ZU1vZGU6MTsKICAgIHVu
c2lnbmVkIGludCBpc0V4cGFuZGVkOjE7CiAgICB1bnNpZ25lZCBpbnQgYWxsb3dzT3RoZXJGaWxl
VHlwZXM6MTsKICAgIHVuc2lnbmVkIGludCBjYW5DcmVhdGVEaXJlY3RvcmllczoxOwogICAgdW5z
aWduZWQgaW50IGNhblNlbGVjdGVkSGlkZGVuRXh0ZW5zaW9uOjE7CiAgICB1bnNpZ25lZCBpbnQg
aW5Db25maWd1cmVGb3JEaXJlY3Rvcnk6MTsKICAgIHVuc2lnbmVkIGludCBkZWxlZ2F0ZV9zaG91
bGRTaG93RmlsZW5hbWU6MTsKICAgIHVuc2lnbmVkIGludCBkZWxlZ2F0ZV9jb21wYXJlRmlsZW5h
bWU6MTsKICAgIHVuc2lnbmVkIGludCBkZWxlZ2F0ZV9zaG91bGRFbmFibGVVUkw6MTsKICAgIHVu
c2lnbmVkIGludCBkZWxlZ2F0ZV92YWxpZGF0ZVVSTDoxOwogICAgdW5zaWduZWQgaW50IGRlbGVn
YXRlX2RpZENoYW5nZVRvRGlyZWN0b3J5VVJMOjE7CiAgICB1bnNpZ25lZCBpbnQgY2hhbmdpbmdG
cmFtZVNpemU6MTsKICAgIHVuc2lnbmVkIGludCBtb3ZpbmdBY2Nlc3NvcnlWaWV3OjE7CiAgICB1
bnNpZ25lZCBpbnQgdXNlckFjY2Vzc29yeVZpZXdGcmFtZUNoYW5nZToxOwogICAgdW5zaWduZWQg
aW50IHJlc2VydmVkOjE4Owp9IF9TUEZsYWdzOwoKQGNsYXNzIE5TU2F2ZVBhbmVsQXV4aWxpYXJ5
OwoKQGludGVyZmFjZSBOU1NhdmVQYW5lbCA6IE5TUGFuZWwgewpAcHJvdGVjdGVkCgogICAgTlNO
YXZWaWV3ICpfbmF2VmlldzsKICAgIE5TVmlldyAqX2FjY2Vzc29yeVZpZXc7CiAgICBOU0FycmF5
ICpfYWxsb3dlZEZpbGVUeXBlczsKICAgIE5TU3RyaW5nICpfdmFsaWRhdGVkUG9zaXhOYW1lOwog
ICAgTlNTdHJpbmcgKl9oaWRkZW5FeHRlbnNpb247CgogICAgTlNUZXh0RmllbGQgKl9tZXNzYWdl
VGV4dEZpZWxkOwogICAgTlNWaWV3ICpfc2F2ZVBhbmU7CiAgICBOU0JveCAqX3NhdmVOYXZTZXBh
cmF0b3JCb3g7CiAgICBOU1ZpZXcgKl9zYXZlUGFuZVRvcFBhcnRzQ29udGFpbmVyOwogICAgTlNU
ZXh0RmllbGQgKl9uYW1lRmllbGQ7CiAgICBOU1RleHRGaWVsZCAqX25hbWVGaWVsZExhYmVsOwog
ICAgTlNCdXR0b24gKl9leHBhbnNpb25CdXR0b247CiAgICBOU1ZpZXcgKl9kaXJlY3RvcnlQb3BV
cENvbnRhaW5lcjsKICAgIGlkIF9kaXJlY3RvcnlQb3BVcDsKICAgIE5TVGV4dEZpZWxkICpfZGly
ZWN0b3J5UG9wVXBMYWJlbDsKICAgIE5TQm94ICpfbmF2Vmlld0NvbnRhaW5lcjsKICAgIE5TQm94
ICpfYWNjZXNzb3J5Vmlld0NvbnRhaW5lcjsKICAgIE5TVmlldyAqX2JvdHRvbUNvbnRyb2xzQ29u
dGFpbmVyOwogICAgTlNCdXR0b24gKl9oaWRlRXh0ZW5zaW9uQnV0dG9uOwogICAgTlNCdXR0b24g
Kl9uZXdGb2xkZXJCdXR0b247CiAgICBOU0J1dHRvbiAqX2NhbmNlbEJ1dHRvbjsKICAgIE5TQnV0
dG9uICpfb2tCdXR0b247CgogICAgaWQgX2ZpbGVwYXRoSW5wdXRDb250cm9sbGVyOwogICAgaWQg
X25ld0ZvbGRlckNvbnRyb2xsZXI7CgogICAgX1NQRmxhZ3MgX3NwRmxhZ3M7CgogICAgTlNTYXZl
UGFuZWxBdXhpbGlhcnkgKl9zcEF1eGlsaWFyeVN0b3JhZ2U7CgpAcHJpdmF0ZQogICAgY2hhciBf
cmVzZXJ2ZWRbNV07CiAgICBOU1Byb2dyZXNzSW5kaWNhdG9yICpfb3BlblByb2dyZXNzSW5kaWNh
dG9yOwp9CgoKCisgKE5TU2F2ZVBhbmVsICopc2F2ZVBhbmVsOwoKICAgICAgIAogICAgICAgCgoK
CgotIChOU1VSTCAqKVVSTDsKCiAgICAgICAKICAgICAgIAoKCgotIChOU1VSTCAqKWRpcmVjdG9y
eVVSTCA7Ci0gKHZvaWQpc2V0RGlyZWN0b3J5VVJMOihOU1VSTCAqKXVybCA7CgoKCgoKLSAoTlNB
cnJheSAqKWFsbG93ZWRGaWxlVHlwZXMgOwotICh2b2lkKXNldEFsbG93ZWRGaWxlVHlwZXM6KE5T
QXJyYXkgKil0eXBlcyA7CgoKCgotIChCT09MKWFsbG93c090aGVyRmlsZVR5cGVzIDsKLSAodm9p
ZClzZXRBbGxvd3NPdGhlckZpbGVUeXBlczooQk9PTClmbGFnIDsKCgoKLSAoTlNWaWV3ICopYWNj
ZXNzb3J5VmlldzsKLSAodm9pZClzZXRBY2Nlc3NvcnlWaWV3OihOU1ZpZXcgKil2aWV3OwoKCgot
IChpZCA8TlNPcGVuU2F2ZVBhbmVsRGVsZWdhdGU+KWRlbGVnYXRlIDsKLSAodm9pZClzZXREZWxl
Z2F0ZTooaWQ8TlNPcGVuU2F2ZVBhbmVsRGVsZWdhdGU+KWRlbGVnYXRlOwoKCgoKLSAoQk9PTClp
c0V4cGFuZGVkOwoKCgotIChCT09MKWNhbkNyZWF0ZURpcmVjdG9yaWVzIDsKLSAodm9pZClzZXRD
YW5DcmVhdGVEaXJlY3RvcmllczooQk9PTClmbGFnIDsKCgoKCi0gKEJPT0wpY2FuU2VsZWN0SGlk
ZGVuRXh0ZW5zaW9uIDsKLSAodm9pZClzZXRDYW5TZWxlY3RIaWRkZW5FeHRlbnNpb246KEJPT0wp
ZmxhZzsKCgoKCi0gKEJPT0wpaXNFeHRlbnNpb25IaWRkZW47Ci0gKHZvaWQpc2V0RXh0ZW5zaW9u
SGlkZGVuOihCT09MKWZsYWc7CgoKCi0gKEJPT0wpdHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rv
cmllczsKLSAodm9pZClzZXRUcmVhdHNGaWxlUGFja2FnZXNBc0RpcmVjdG9yaWVzOihCT09MKWZs
YWc7CgoKCi0gKE5TU3RyaW5nICopcHJvbXB0OwotICh2b2lkKXNldFByb21wdDooTlNTdHJpbmcg
Kilwcm9tcHQ7CgoKCi0gKE5TU3RyaW5nICopdGl0bGU7Ci0gKHZvaWQpc2V0VGl0bGU6KE5TU3Ry
aW5nICopdGl0bGU7CgoKCgotIChOU1N0cmluZyAqKW5hbWVGaWVsZExhYmVsIDsKLSAodm9pZClz
ZXROYW1lRmllbGRMYWJlbDooTlNTdHJpbmcgKilsYWJlbCA7CgoKCgotIChOU1N0cmluZyAqKW5h
bWVGaWVsZFN0cmluZ1ZhbHVlIDsKLSAodm9pZClzZXROYW1lRmllbGRTdHJpbmdWYWx1ZTooTlNT
dHJpbmcgKil2YWx1ZSA7CgoKCi0gKE5TU3RyaW5nICopbWVzc2FnZSA7Ci0gKHZvaWQpc2V0TWVz
c2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIDsKCi0gKHZvaWQpdmFsaWRhdGVWaXNpYmxlQ29sdW1u
czsKCgoKLSAoQk9PTClzaG93c0hpZGRlbkZpbGVzIDsKLSAodm9pZClzZXRTaG93c0hpZGRlbkZp
bGVzOihCT09MKWZsYWcgOwoKICAgICAgIAogICAgICAgCgotICh2b2lkKW9rOihpZClzZW5kZXI7
Ci0gKHZvaWQpY2FuY2VsOihpZClzZW5kZXI7CgogICAgICAgCiAgICAgICAKCgoKCgotICh2b2lk
KWJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TSW50ZWdlciByZXN1bHQpKWhhbmRsZXIgOwoKCgotICh2b2lkKWJl
Z2luV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0ludGVnZXIgcmVzdWx0KSloYW5k
bGVyIDsKCgoKCgotIChOU0ludGVnZXIpcnVuTW9kYWw7CgpAZW5kCgoKQHByb3RvY29sIE5TT3Bl
blNhdmVQYW5lbERlbGVnYXRlIDxOU09iamVjdD4KQG9wdGlvbmFsCgoKCgoKLSAoQk9PTClwYW5l
bDooaWQpc2VuZGVyIHNob3VsZEVuYWJsZVVSTDooTlNVUkwgKil1cmwgOwoKCgoKCi0gKEJPT0wp
cGFuZWw6KGlkKXNlbmRlciB2YWxpZGF0ZVVSTDooTlNVUkwgKil1cmwgZXJyb3I6KE5TRXJyb3Ig
Kiopb3V0RXJyb3IgOwoKCgotICh2b2lkKXBhbmVsOihpZClzZW5kZXIgZGlkQ2hhbmdlVG9EaXJl
Y3RvcnlVUkw6KE5TVVJMICopdXJsIDsKCgoKLSAoTlNTdHJpbmcgKilwYW5lbDooaWQpc2VuZGVy
IHVzZXJFbnRlcmVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29uZmlybWVkOihCT09M
KW9rRmxhZzsKCgoKLSAodm9pZClwYW5lbDooaWQpc2VuZGVyIHdpbGxFeHBhbmQ6KEJPT0wpZXhw
YW5kaW5nOwoKCgotICh2b2lkKXBhbmVsU2VsZWN0aW9uRGlkQ2hhbmdlOihpZClzZW5kZXIgOwoK
QGVuZAoKQGludGVyZmFjZSBOU09iamVjdChOU1NhdmVQYW5lbERlbGVnYXRlRGVwcmVjYXRlZCkK
CgoKLSAoQk9PTClwYW5lbDooaWQpc2VuZGVyIGlzVmFsaWRGaWxlbmFtZTooTlNTdHJpbmcgKilm
aWxlbmFtZTsKCgoKLSAodm9pZClwYW5lbDooaWQpc2VuZGVyIGRpcmVjdG9yeURpZENoYW5nZToo
TlNTdHJpbmcgKilwYXRoIDsKCgoKIC0gKE5TQ29tcGFyaXNvblJlc3VsdClwYW5lbDooaWQpc2Vu
ZGVyIGNvbXBhcmVGaWxlbmFtZTooTlNTdHJpbmcgKiluYW1lMSB3aXRoOihOU1N0cmluZyAqKW5h
bWUyIGNhc2VTZW5zaXRpdmU6KEJPT0wpY2FzZVNlbnNpdGl2ZTsKCgoKLSAoQk9PTClwYW5lbDoo
aWQpc2VuZGVyIHNob3VsZFNob3dGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZTsKCkBlbmQK
CkBpbnRlcmZhY2UgTlNTYXZlUGFuZWwoTlNEZXByZWNhdGVkKQoKCgotIChOU1N0cmluZyAqKWZp
bGVuYW1lOwoKCgotIChOU1N0cmluZyAqKWRpcmVjdG9yeTsKLSAodm9pZClzZXREaXJlY3Rvcnk6
KE5TU3RyaW5nICopcGF0aDsKCgoKLSAoTlNTdHJpbmcgKilyZXF1aXJlZEZpbGVUeXBlOwotICh2
b2lkKXNldFJlcXVpcmVkRmlsZVR5cGU6KE5TU3RyaW5nICopdHlwZTsKCgoKLSAodm9pZCliZWdp
blNoZWV0Rm9yRGlyZWN0b3J5OihOU1N0cmluZyAqKXBhdGggZmlsZTooTlNTdHJpbmcgKiluYW1l
IG1vZGFsRm9yV2luZG93OihOU1dpbmRvdyAqKWRvY1dpbmRvdyBtb2RhbERlbGVnYXRlOihpZClk
ZWxlZ2F0ZSBkaWRFbmRTZWxlY3RvcjooU0VMKWRpZEVuZFNlbGVjdG9yIGNvbnRleHRJbmZvOih2
b2lkICopY29udGV4dEluZm87CgoKCi0gKE5TSW50ZWdlcilydW5Nb2RhbEZvckRpcmVjdG9yeToo
TlNTdHJpbmcgKilwYXRoIGZpbGU6KE5TU3RyaW5nICopbmFtZTsKCgoKLSAodm9pZClzZWxlY3RU
ZXh0OihpZClzZW5kZXIgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKQGVuZAojIDkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU09wZW5Q
YW5lbC5oIiAyIDMKQGNsYXNzIE5TQXJyYXk7CkBjbGFzcyBOU1N0cmluZzsKQGNsYXNzIE5TV2lu
ZG93OwoKQGludGVyZmFjZSBOU09wZW5QYW5lbCA6IE5TU2F2ZVBhbmVsIHsKQHByaXZhdGUKICAg
IGNoYXIgX3Jlc2VydmVkT3BlblBhbmVsWzRdOwogICAgdm9pZCAqX3ByaXZhdGVPcGVuUGFuZWw7
Cn0KCgoKKyAoTlNPcGVuUGFuZWwgKilvcGVuUGFuZWw7CgotIChOU0FycmF5ICopVVJMczsKCi0g
KEJPT0wpcmVzb2x2ZXNBbGlhc2VzOwotICh2b2lkKXNldFJlc29sdmVzQWxpYXNlczooQk9PTClm
bGFnOwoKLSAoQk9PTCljYW5DaG9vc2VEaXJlY3RvcmllczsKLSAodm9pZClzZXRDYW5DaG9vc2VE
aXJlY3RvcmllczooQk9PTClmbGFnOwoKLSAoQk9PTClhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsK
LSAodm9pZClzZXRBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjooQk9PTClmbGFnOwoKLSAoQk9PTClj
YW5DaG9vc2VGaWxlczsKLSAodm9pZClzZXRDYW5DaG9vc2VGaWxlczooQk9PTClmbGFnOwoKQGVu
ZAoKQGludGVyZmFjZSBOU09wZW5QYW5lbCAoTlNEZXByZWNhdGVkKQoKCgotIChOU0FycmF5ICop
ZmlsZW5hbWVzOwoKCgoKCi0gKHZvaWQpYmVnaW5TaGVldEZvckRpcmVjdG9yeTooTlNTdHJpbmcg
KilwYXRoIGZpbGU6KE5TU3RyaW5nICopbmFtZSB0eXBlczooTlNBcnJheSAqKWZpbGVUeXBlcyBt
b2RhbEZvcldpbmRvdzooTlNXaW5kb3cgKilkb2NXaW5kb3cgbW9kYWxEZWxlZ2F0ZTooaWQpZGVs
ZWdhdGUgZGlkRW5kU2VsZWN0b3I6KFNFTClkaWRFbmRTZWxlY3RvciBjb250ZXh0SW5mbzoodm9p
ZCAqKWNvbnRleHRJbmZvOwoKCgoKCi0gKHZvaWQpYmVnaW5Gb3JEaXJlY3Rvcnk6KE5TU3RyaW5n
ICopcGF0aCBmaWxlOihOU1N0cmluZyAqKW5hbWUgdHlwZXM6KE5TQXJyYXkgKilmaWxlVHlwZXMg
bW9kZWxlc3NEZWxlZ2F0ZTooaWQpZGVsZWdhdGUgZGlkRW5kU2VsZWN0b3I6KFNFTClkaWRFbmRT
ZWxlY3RvciBjb250ZXh0SW5mbzoodm9pZCAqKWNvbnRleHRJbmZvIDsKCgoKCgotIChOU0ludGVn
ZXIpcnVuTW9kYWxGb3JEaXJlY3Rvcnk6KE5TU3RyaW5nICopcGF0aCBmaWxlOihOU1N0cmluZyAq
KW5hbWUgdHlwZXM6KE5TQXJyYXkgKilmaWxlVHlwZXM7CgoKCgotIChOU0ludGVnZXIpcnVuTW9k
YWxGb3JUeXBlczooTlNBcnJheSAqKWZpbGVUeXBlczsKCkBlbmQKIyA3MiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNQ
YWdlTGF5b3V0LmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNQYWdlTGF5b3V0LmgiIDMKQGNsYXNzIE5TQXJyYXksIE5TTXV0
YWJsZUFycmF5LCBOU1ByaW50SW5mbywgTlNWaWV3LCBOU1ZpZXdDb250cm9sbGVyLCBOU1dpbmRv
dywgTlNXaW5kb3dDb250cm9sbGVyOwoKQGludGVyZmFjZSBOU1BhZ2VMYXlvdXQgOiBOU09iamVj
dCB7CiAgICBAcHJpdmF0ZQogICAgTlNNdXRhYmxlQXJyYXkgKl9hY2Nlc3NvcnlDb250cm9sbGVy
czsKICAgIE5TUHJpbnRJbmZvICpfb3JpZ2luYWxQcmludEluZm87CiAgICBpZCBfZGVsZWdhdGU7
CiAgICBTRUwgX2RpZEVuZFNlbGVjdG9yOwogICAgdm9pZCAqX2NvbnRleHRJbmZvOwogICAgTlNQ
cmludEluZm8gKl9wcmVzZW50ZWRQcmludEluZm87CiAgICBOU1dpbmRvd0NvbnRyb2xsZXIgKl93
aW5kb3dDb250cm9sbGVyOwoKICAgIGlkIF9yZXNlcnZlZFs0XTsKCgoKfQoKCgorIChOU1BhZ2VM
YXlvdXQgKilwYWdlTGF5b3V0OwoKCgoKCi0gKHZvaWQpYWRkQWNjZXNzb3J5Q29udHJvbGxlcjoo
TlNWaWV3Q29udHJvbGxlciAqKWFjY2Vzc29yeUNvbnRyb2xsZXI7Ci0gKHZvaWQpcmVtb3ZlQWNj
ZXNzb3J5Q29udHJvbGxlcjooTlNWaWV3Q29udHJvbGxlciAqKWFjY2Vzc29yeUNvbnRyb2xsZXI7
Ci0gKE5TQXJyYXkgKilhY2Nlc3NvcnlDb250cm9sbGVyczsKCgoKCgoKCi0gKHZvaWQpYmVnaW5T
aGVldFdpdGhQcmludEluZm86KE5TUHJpbnRJbmZvICopcHJpbnRJbmZvIG1vZGFsRm9yV2luZG93
OihOU1dpbmRvdyAqKWRvY1dpbmRvdyBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUgZGlkRW5kU2VsZWN0
b3I6KFNFTClkaWRFbmRTZWxlY3RvciBjb250ZXh0SW5mbzoodm9pZCAqKWNvbnRleHRJbmZvOwoK
CgotIChOU0ludGVnZXIpcnVuTW9kYWxXaXRoUHJpbnRJbmZvOihOU1ByaW50SW5mbyAqKXByaW50
SW5mbzsKLSAoTlNJbnRlZ2VyKXJ1bk1vZGFsOwoKCgotIChOU1ByaW50SW5mbyAqKXByaW50SW5m
bzsKCkBlbmQKCkBpbnRlcmZhY2UgTlNQYWdlTGF5b3V0KE5TRGVwcmVjYXRlZCkKCgoKLSAodm9p
ZClzZXRBY2Nlc3NvcnlWaWV3OihOU1ZpZXcgKilhY2Nlc3NvcnlWaWV3IF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKLSAoTlNWaWV3ICopYWNjZXNzb3J5VmlldyBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7CgoKCi0gKHZvaWQpcmVhZFByaW50SW5mbyBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7Ci0gKHZvaWQpd3JpdGVQcmludEluZm8gX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRl
ZCkpOwoKQGVuZAoKQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uKE5TUGFnZUxheW91dFBhbmVsKQoK
CgotICh2b2lkKXJ1blBhZ2VMYXlvdXQ6KGlkKXNlbmRlcjsKCkBlbmQKIyA3MyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMK
CgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9OU1Bhc3RlYm9hcmRJdGVtLmgiIDEgMwojIDE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNQYXN0ZWJvYXJkSXRlbS5oIiAzCkBjbGFzcyBO
U1Bhc3RlYm9hcmQ7CkBwcm90b2NvbCBOU1Bhc3RlYm9hcmRJdGVtRGF0YVByb3ZpZGVyOwojIDM1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNQ
YXN0ZWJvYXJkSXRlbS5oIiAzCkBpbnRlcmZhY2UgTlNQYXN0ZWJvYXJkSXRlbSA6IE5TT2JqZWN0
IDxOU1Bhc3RlYm9hcmRXcml0aW5nLCBOU1Bhc3RlYm9hcmRSZWFkaW5nPiB7CiAgICBAcHJpdmF0
ZQogICAgTlNQYXN0ZWJvYXJkICpfcGFzdGVib2FyZDsKICAgIE5TVUludGVnZXIgX2luZGV4Owog
ICAgTlNJbnRlZ2VyIF9nZW47CiAgICBpZCBfYXV4T2JqZWN0OwogICAgdm9pZCAqX3Jlc2VydmVk
Owp9CgoKCi0gKE5TQXJyYXkgKil0eXBlczsKCgoKLSAoTlNTdHJpbmcgKilhdmFpbGFibGVUeXBl
RnJvbUFycmF5OihOU0FycmF5ICopdHlwZXM7CgoKCi0gKEJPT0wpc2V0RGF0YVByb3ZpZGVyOihp
ZCA8TlNQYXN0ZWJvYXJkSXRlbURhdGFQcm92aWRlcj4pZGF0YVByb3ZpZGVyIGZvclR5cGVzOihO
U0FycmF5ICopdHlwZXM7CgoKCi0gKEJPT0wpc2V0RGF0YTooTlNEYXRhICopZGF0YSBmb3JUeXBl
OihOU1N0cmluZyAqKXR5cGU7Ci0gKEJPT0wpc2V0U3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBm
b3JUeXBlOihOU1N0cmluZyAqKXR5cGU7Ci0gKEJPT0wpc2V0UHJvcGVydHlMaXN0OihpZClwcm9w
ZXJ0eUxpc3QgZm9yVHlwZTooTlNTdHJpbmcgKil0eXBlOwoKCgotIChOU0RhdGEgKilkYXRhRm9y
VHlwZTooTlNTdHJpbmcgKil0eXBlOwotIChOU1N0cmluZyAqKXN0cmluZ0ZvclR5cGU6KE5TU3Ry
aW5nICopdHlwZTsKLSAoaWQpcHJvcGVydHlMaXN0Rm9yVHlwZTooTlNTdHJpbmcgKil0eXBlOwoK
QGVuZAoKCgpAcHJvdG9jb2wgTlNQYXN0ZWJvYXJkSXRlbURhdGFQcm92aWRlciA8TlNPYmplY3Q+
CgoKQHJlcXVpcmVkCi0gKHZvaWQpcGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2Fy
ZCBpdGVtOihOU1Bhc3RlYm9hcmRJdGVtICopaXRlbSBwcm92aWRlRGF0YUZvclR5cGU6KE5TU3Ry
aW5nICopdHlwZTsKCgoKQG9wdGlvbmFsCi0gKHZvaWQpcGFzdGVib2FyZEZpbmlzaGVkV2l0aERh
dGFQcm92aWRlcjooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZDsKCkBlbmQKIyA3NiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNQb3BVcEJ1dHRvbi5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNQb3BVcEJ1dHRvbi5oIiAzCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TTWVudUl0ZW1DZWxs
LmgiIDEgMwojIDE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvTlNNZW51SXRlbUNlbGwuaCIgMwpAaW50ZXJmYWNlIE5TTWVudUl0ZW1DZWxsIDog
TlNCdXR0b25DZWxsIHsKCiAgICBAcHJpdmF0ZQogICAgaWQgX2V4dHJhRGF0YTsKICAgIE5TU2l6
ZSBfc3RhdGVJbWFnZVNpemU7CiAgICBOU1NpemUgX2ltYWdlU2l6ZTsKICAgIE5TU2l6ZSBfdGl0
bGVTaXplOwogICAgTlNTaXplIF9rZXlFcXVpdmFsZW50U2l6ZTsKICAgIE5TU2l6ZSBfc2l6ZTsK
ICAgIHN0cnVjdCBfX21pY0ZsYWdzIHsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZHNTaXppbmc6
MTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQg
bmVlZHNEaXNwbGF5OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGtleUVxdWl2R2x5cGhXaWR0aDox
NjsKIHVuc2lnbmVkIGludCB1bmlxdWVBZ2FpbnN0TWFpbjoxOwogICAgICAgIHVuc2lnbmVkIGlu
dCBSRVNFUlZFRDoxMjsKICAgIH0gX21pY0ZsYWdzOwp9CgotICh2b2lkKXNldE1lbnVJdGVtOihO
U01lbnVJdGVtICopaXRlbTsKLSAoTlNNZW51SXRlbSAqKW1lbnVJdGVtOwoKCgoKCgotICh2b2lk
KXNldE5lZWRzU2l6aW5nOihCT09MKWZsYWc7Ci0gKEJPT0wpbmVlZHNTaXppbmc7Ci0gKHZvaWQp
Y2FsY1NpemU7CgotICh2b2lkKXNldE5lZWRzRGlzcGxheTooQk9PTClmbGFnOwotIChCT09MKW5l
ZWRzRGlzcGxheTsKCi0gKENHRmxvYXQpc3RhdGVJbWFnZVdpZHRoOwotIChDR0Zsb2F0KWltYWdl
V2lkdGg7Ci0gKENHRmxvYXQpdGl0bGVXaWR0aDsKLSAoQ0dGbG9hdClrZXlFcXVpdmFsZW50V2lk
dGg7CgotIChOU1JlY3Qpc3RhdGVJbWFnZVJlY3RGb3JCb3VuZHM6KE5TUmVjdCljZWxsRnJhbWU7
Ci0gKE5TUmVjdCl0aXRsZVJlY3RGb3JCb3VuZHM6KE5TUmVjdCljZWxsRnJhbWU7Ci0gKE5TUmVj
dClrZXlFcXVpdmFsZW50UmVjdEZvckJvdW5kczooTlNSZWN0KWNlbGxGcmFtZTsKCi0gKHZvaWQp
ZHJhd1NlcGFyYXRvckl0ZW1XaXRoRnJhbWU6KE5TUmVjdCljZWxsRnJhbWUgaW5WaWV3OihOU1Zp
ZXcgKiljb250cm9sVmlldzsKLSAodm9pZClkcmF3U3RhdGVJbWFnZVdpdGhGcmFtZTooTlNSZWN0
KWNlbGxGcmFtZSBpblZpZXc6KE5TVmlldyAqKWNvbnRyb2xWaWV3OwotICh2b2lkKWRyYXdJbWFn
ZVdpdGhGcmFtZTooTlNSZWN0KWNlbGxGcmFtZSBpblZpZXc6KE5TVmlldyAqKWNvbnRyb2xWaWV3
OwotICh2b2lkKWRyYXdUaXRsZVdpdGhGcmFtZTooTlNSZWN0KWNlbGxGcmFtZSBpblZpZXc6KE5T
VmlldyAqKWNvbnRyb2xWaWV3OwotICh2b2lkKWRyYXdLZXlFcXVpdmFsZW50V2l0aEZyYW1lOihO
U1JlY3QpY2VsbEZyYW1lIGluVmlldzooTlNWaWV3ICopY29udHJvbFZpZXc7Ci0gKHZvaWQpZHJh
d0JvcmRlckFuZEJhY2tncm91bmRXaXRoRnJhbWU6KE5TUmVjdCljZWxsRnJhbWUgaW5WaWV3OihO
U1ZpZXcgKiljb250cm9sVmlldzsKCi0gKE5TSW50ZWdlcil0YWc7CgpAZW5kCiMgMTAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1BvcFVwQnV0
dG9uLmgiIDIgMwoKCkBjbGFzcyBOU01lbnU7CgpAaW50ZXJmYWNlIE5TUG9wVXBCdXR0b24gOiBO
U0J1dHRvbiB7CgogICAgQHByaXZhdGUKICAgIHN0cnVjdCBfX3BiRmxhZ3MgewogICAgICAgIHVu
c2lnbmVkIGludCBuZWVkc1B1bGxzRG93bkZyb21UZW1wbGF0ZToxOwogICAgICAgIHVuc2lnbmVk
IGludCBSRVNFUlZFRDozMTsKICAgIH0gX3BiRmxhZ3M7CgogICAgaWQgX3BvcHVwUmVzZXJ2ZWQ7
Cgp9CgotIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpYnV0dG9uRnJhbWUgcHVsbHNEb3duOihC
T09MKWZsYWc7CgoKLSAodm9pZClzZXRNZW51OihOU01lbnUgKiltZW51OwotIChOU01lbnUgKilt
ZW51OwoKCi0gKHZvaWQpc2V0UHVsbHNEb3duOihCT09MKWZsYWc7Ci0gKEJPT0wpcHVsbHNEb3du
OwoKLSAodm9pZClzZXRBdXRvZW5hYmxlc0l0ZW1zOihCT09MKWZsYWc7Ci0gKEJPT0wpYXV0b2Vu
YWJsZXNJdGVtczsKCi0gKHZvaWQpc2V0UHJlZmVycmVkRWRnZTooTlNSZWN0RWRnZSllZGdlOwot
IChOU1JlY3RFZGdlKXByZWZlcnJlZEVkZ2U7CgoKCi0gKHZvaWQpYWRkSXRlbVdpdGhUaXRsZToo
TlNTdHJpbmcgKil0aXRsZTsKLSAodm9pZClhZGRJdGVtc1dpdGhUaXRsZXM6KE5TQXJyYXkgKilp
dGVtVGl0bGVzOwotICh2b2lkKWluc2VydEl0ZW1XaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUg
YXRJbmRleDooTlNJbnRlZ2VyKWluZGV4OwoKLSAodm9pZClyZW1vdmVJdGVtV2l0aFRpdGxlOihO
U1N0cmluZyAqKXRpdGxlOwotICh2b2lkKXJlbW92ZUl0ZW1BdEluZGV4OihOU0ludGVnZXIpaW5k
ZXg7Ci0gKHZvaWQpcmVtb3ZlQWxsSXRlbXM7CgoKCi0gKE5TQXJyYXkgKilpdGVtQXJyYXk7Ci0g
KE5TSW50ZWdlciludW1iZXJPZkl0ZW1zOwoKLSAoTlNJbnRlZ2VyKWluZGV4T2ZJdGVtOihOU01l
bnVJdGVtICopaXRlbTsKLSAoTlNJbnRlZ2VyKWluZGV4T2ZJdGVtV2l0aFRpdGxlOihOU1N0cmlu
ZyAqKXRpdGxlOwotIChOU0ludGVnZXIpaW5kZXhPZkl0ZW1XaXRoVGFnOihOU0ludGVnZXIpdGFn
OwotIChOU0ludGVnZXIpaW5kZXhPZkl0ZW1XaXRoUmVwcmVzZW50ZWRPYmplY3Q6KGlkKW9iajsK
LSAoTlNJbnRlZ2VyKWluZGV4T2ZJdGVtV2l0aFRhcmdldDooaWQpdGFyZ2V0IGFuZEFjdGlvbjoo
U0VMKWFjdGlvblNlbGVjdG9yOwoKLSAoTlNNZW51SXRlbSAqKWl0ZW1BdEluZGV4OihOU0ludGVn
ZXIpaW5kZXg7Ci0gKE5TTWVudUl0ZW0gKilpdGVtV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxl
OwotIChOU01lbnVJdGVtICopbGFzdEl0ZW07CgoKCi0gKHZvaWQpc2VsZWN0SXRlbTooTlNNZW51
SXRlbSAqKWl0ZW07Ci0gKHZvaWQpc2VsZWN0SXRlbUF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsK
LSAodm9pZClzZWxlY3RJdGVtV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlOwoKLSAoQk9PTClz
ZWxlY3RJdGVtV2l0aFRhZzooTlNJbnRlZ2VyKXRhZzsKCi0gKHZvaWQpc2V0VGl0bGU6KE5TU3Ry
aW5nICopYVN0cmluZzsKCi0gKE5TTWVudUl0ZW0gKilzZWxlY3RlZEl0ZW07Ci0gKE5TSW50ZWdl
cilpbmRleE9mU2VsZWN0ZWRJdGVtOwotICh2b2lkKXN5bmNocm9uaXplVGl0bGVBbmRTZWxlY3Rl
ZEl0ZW07CgoKLSAoTlNTdHJpbmcgKilpdGVtVGl0bGVBdEluZGV4OihOU0ludGVnZXIpaW5kZXg7
Ci0gKE5TQXJyYXkgKilpdGVtVGl0bGVzOwotIChOU1N0cmluZyAqKXRpdGxlT2ZTZWxlY3RlZEl0
ZW07CgpAZW5kCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNQb3BVcEJ1dHRvbldpbGxQb3BVcE5v
dGlmaWNhdGlvbjsKIyA3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNQcmludEluZm8uaCIgMSAzCiMgMTIgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1ByaW50SW5m
by5oIiAzCkBjbGFzcyBOU011dGFibGVEaWN0aW9uYXJ5LCBOU1ByaW50ZXI7CgoKCmVudW0gewog
ICAgTlNQb3J0cmFpdE9yaWVudGF0aW9uID0gMCwKICAgIE5TTGFuZHNjYXBlT3JpZW50YXRpb24g
PSAxCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1ByaW50aW5nT3JpZW50YXRpb247CgoKCmVudW0g
ewogICAgTlNBdXRvUGFnaW5hdGlvbiA9IDAsCiAgICBOU0ZpdFBhZ2luYXRpb24gPSAxLAogICAg
TlNDbGlwUGFnaW5hdGlvbiA9IDIKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TUHJpbnRpbmdQYWdp
bmF0aW9uTW9kZTsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQcmludFNwb29sSm9i
OwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1ByaW50UHJldmlld0pvYjsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNQcmludFNhdmVKb2I7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TUHJpbnRDYW5jZWxKb2I7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJp
bnRQYXBlck5hbWU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJpbnRQYXBlclNpemU7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJpbnRPcmllbnRhdGlvbjsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNQcmludFNjYWxpbmdGYWN0b3I7CgoKCmV4dGVybiAiQyIgTlNT
dHJpbmcgKmNvbnN0IE5TUHJpbnRMZWZ0TWFyZ2luOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25z
dCBOU1ByaW50UmlnaHRNYXJnaW47CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJpbnRU
b3BNYXJnaW47CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJpbnRCb3R0b21NYXJnaW47
CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJpbnRIb3Jpem9udGFsbHlDZW50ZXJlZDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQcmludFZlcnRpY2FsbHlDZW50ZXJlZDsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQcmludEhvcml6b250YWxQYWdpbmF0aW9uOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1ByaW50VmVydGljYWxQYWdpbmF0aW9uOwoKCgpleHRl
cm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1ByaW50UHJpbnRlcjsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqY29uc3QgTlNQcmludENvcGllczsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQcmlu
dEFsbFBhZ2VzOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1ByaW50Rmlyc3RQYWdlOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1ByaW50TGFzdFBhZ2U7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKmNvbnN0IE5TUHJpbnRNdXN0Q29sbGF0ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29u
c3QgTlNQcmludFJldmVyc2VQYWdlT3JkZXI7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5T
UHJpbnRKb2JEaXNwb3NpdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQcmludFBh
Z2VzQWNyb3NzIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQcmludFBhZ2VzRG93biA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJpbnRUaW1lIDsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqY29uc3QgTlNQcmludERldGFpbGVkRXJyb3JSZXBvcnRpbmcgOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpjb25zdCBOU1ByaW50RmF4TnVtYmVyIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29u
c3QgTlNQcmludFByaW50ZXJOYW1lIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQcmlu
dFNlbGVjdGlvbk9ubHkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1ByaW50Sm9iU2F2
aW5nVVJMIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQcmludEpvYlNhdmluZ0ZpbGVO
YW1lRXh0ZW5zaW9uSGlkZGVuIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQcmlu
dEhlYWRlckFuZEZvb3RlciA7CgpAaW50ZXJmYWNlIE5TUHJpbnRJbmZvIDogTlNPYmplY3Q8TlND
b3B5aW5nLCBOU0NvZGluZz4gewogICAgQHByaXZhdGUKICAgIE5TTXV0YWJsZURpY3Rpb25hcnkg
Kl9hdHRyaWJ1dGVzOwogICAgaWQgX21vcmVWYXJzOwp9CgoKCisgKHZvaWQpc2V0U2hhcmVkUHJp
bnRJbmZvOihOU1ByaW50SW5mbyAqKXByaW50SW5mbzsKKyAoTlNQcmludEluZm8gKilzaGFyZWRQ
cmludEluZm87CgoKCi0gKGlkKWluaXRXaXRoRGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5ICopYXR0
cmlidXRlczsKCgoKLSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7CgoKCi0gKHZv
aWQpc2V0UGFwZXJOYW1lOihOU1N0cmluZyAqKW5hbWU7Ci0gKHZvaWQpc2V0UGFwZXJTaXplOihO
U1NpemUpc2l6ZTsKLSAodm9pZClzZXRPcmllbnRhdGlvbjooTlNQcmludGluZ09yaWVudGF0aW9u
KW9yaWVudGF0aW9uOwotICh2b2lkKXNldFNjYWxpbmdGYWN0b3I6KENHRmxvYXQpc2NhbGluZ0Zh
Y3RvciA7Ci0gKE5TU3RyaW5nICopcGFwZXJOYW1lOwotIChOU1NpemUpcGFwZXJTaXplOwotIChO
U1ByaW50aW5nT3JpZW50YXRpb24pb3JpZW50YXRpb247Ci0gKENHRmxvYXQpc2NhbGluZ0ZhY3Rv
ciA7CgoKCi0gKHZvaWQpc2V0TGVmdE1hcmdpbjooQ0dGbG9hdCltYXJnaW47Ci0gKHZvaWQpc2V0
UmlnaHRNYXJnaW46KENHRmxvYXQpbWFyZ2luOwotICh2b2lkKXNldFRvcE1hcmdpbjooQ0dGbG9h
dCltYXJnaW47Ci0gKHZvaWQpc2V0Qm90dG9tTWFyZ2luOihDR0Zsb2F0KW1hcmdpbjsKLSAoQ0dG
bG9hdClsZWZ0TWFyZ2luOwotIChDR0Zsb2F0KXJpZ2h0TWFyZ2luOwotIChDR0Zsb2F0KXRvcE1h
cmdpbjsKLSAoQ0dGbG9hdClib3R0b21NYXJnaW47Ci0gKHZvaWQpc2V0SG9yaXpvbnRhbGx5Q2Vu
dGVyZWQ6KEJPT0wpZmxhZzsKLSAodm9pZClzZXRWZXJ0aWNhbGx5Q2VudGVyZWQ6KEJPT0wpZmxh
ZzsKLSAoQk9PTClpc0hvcml6b250YWxseUNlbnRlcmVkOwotIChCT09MKWlzVmVydGljYWxseUNl
bnRlcmVkOwotICh2b2lkKXNldEhvcml6b250YWxQYWdpbmF0aW9uOihOU1ByaW50aW5nUGFnaW5h
dGlvbk1vZGUpbW9kZTsKLSAodm9pZClzZXRWZXJ0aWNhbFBhZ2luYXRpb246KE5TUHJpbnRpbmdQ
YWdpbmF0aW9uTW9kZSltb2RlOwotIChOU1ByaW50aW5nUGFnaW5hdGlvbk1vZGUpaG9yaXpvbnRh
bFBhZ2luYXRpb247Ci0gKE5TUHJpbnRpbmdQYWdpbmF0aW9uTW9kZSl2ZXJ0aWNhbFBhZ2luYXRp
b247CgoKCi0gKHZvaWQpc2V0Sm9iRGlzcG9zaXRpb246KE5TU3RyaW5nICopZGlzcG9zaXRpb247
Ci0gKE5TU3RyaW5nICopam9iRGlzcG9zaXRpb247CgoKCi0gKHZvaWQpc2V0UHJpbnRlcjooTlNQ
cmludGVyICopcHJpbnRlcjsKLSAoTlNQcmludGVyICopcHJpbnRlcjsKCgoKLSAodm9pZClzZXRV
cFByaW50T3BlcmF0aW9uRGVmYXVsdFZhbHVlczsKCgoKCgotIChOU1JlY3QpaW1hZ2VhYmxlUGFn
ZUJvdW5kczsKCgoKCgoKCi0gKE5TU3RyaW5nICopbG9jYWxpemVkUGFwZXJOYW1lOwoKCgoKCisg
KE5TUHJpbnRlciAqKWRlZmF1bHRQcmludGVyOwoKCgoKCi0gKE5TTXV0YWJsZURpY3Rpb25hcnkg
KilwcmludFNldHRpbmdzOwoKCgotICh2b2lkICopUE1QcmludFNlc3Npb247Ci0gKHZvaWQgKilQ
TVBhZ2VGb3JtYXQ7Ci0gKHZvaWQgKilQTVByaW50U2V0dGluZ3M7CgoKCi0gKHZvaWQpdXBkYXRl
RnJvbVBNUGFnZUZvcm1hdDsKLSAodm9pZCl1cGRhdGVGcm9tUE1QcmludFNldHRpbmdzOwoKCgoK
CgotICh2b2lkKXNldFNlbGVjdGlvbk9ubHk6KEJPT0wpc2VsZWN0aW9uT25seSA7Ci0gKEJPT0wp
aXNTZWxlY3Rpb25Pbmx5IDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNQcmludEluZm8oTlNEZXByZWNh
dGVkKQoKCgorICh2b2lkKXNldERlZmF1bHRQcmludGVyOihOU1ByaW50ZXIgKilwcmludGVyIF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKKyAoTlNTaXplKXNpemVGb3JQYXBlck5hbWU6
KE5TU3RyaW5nICopbmFtZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgpAZW5kCgoKCmV4
dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJpbnRGb3JtTmFtZSBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJpbnRKb2JGZWF0dXJl
cyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0
IE5TUHJpbnRNYW51YWxGZWVkIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqY29uc3QgTlNQcmludFBhZ2VzUGVyU2hlZXQgX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwpleHRlcm4gIkMiIE5TU3RyaW5nICpjb25zdCBOU1ByaW50UGFwZXJGZWVkIF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3Qg
TlNQcmludFNhdmVQYXRoOwojIDc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1ByaW50T3BlcmF0aW9uLmgiIDEgMwoj
IDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
TlNQcmludE9wZXJhdGlvbi5oIiAzCkBjbGFzcyBOU011dGFibGVEYXRhLCBOU0dyYXBoaWNzQ29u
dGV4dCwgTlNQcmludFBhbmVsLCBOU1ByaW50SW5mbywgTlNWaWV3LCBOU1dpbmRvdzsKCgoKZW51
bSB7CiAgICBOU0Rlc2NlbmRpbmdQYWdlT3JkZXIgPSAtMSwKICAgIE5TU3BlY2lhbFBhZ2VPcmRl
ciA9IDAsCiAgICBOU0FzY2VuZGluZ1BhZ2VPcmRlciA9IDEsCiAgICBOU1Vua25vd25QYWdlT3Jk
ZXIgPSAyCn07CnR5cGVkZWYgTlNJbnRlZ2VyIE5TUHJpbnRpbmdQYWdlT3JkZXI7CgoKCmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TUHJpbnRPcGVyYXRpb25FeGlzdHNFeGNlcHRpb247CgpAaW50ZXJm
YWNlIE5TUHJpbnRPcGVyYXRpb24gOiBOU09iamVjdCB7Cn0KCgoKKyAoTlNQcmludE9wZXJhdGlv
biAqKXByaW50T3BlcmF0aW9uV2l0aFZpZXc6KE5TVmlldyAqKXZpZXcgcHJpbnRJbmZvOihOU1By
aW50SW5mbyAqKXByaW50SW5mbzsKKyAoTlNQcmludE9wZXJhdGlvbiAqKVBERk9wZXJhdGlvbldp
dGhWaWV3OihOU1ZpZXcgKil2aWV3IGluc2lkZVJlY3Q6KE5TUmVjdClyZWN0IHRvRGF0YTooTlNN
dXRhYmxlRGF0YSAqKWRhdGEgcHJpbnRJbmZvOihOU1ByaW50SW5mbyAqKXByaW50SW5mbzsKKyAo
TlNQcmludE9wZXJhdGlvbiAqKVBERk9wZXJhdGlvbldpdGhWaWV3OihOU1ZpZXcgKil2aWV3IGlu
c2lkZVJlY3Q6KE5TUmVjdClyZWN0IHRvUGF0aDooTlNTdHJpbmcgKilwYXRoIHByaW50SW5mbzoo
TlNQcmludEluZm8gKilwcmludEluZm87CisgKE5TUHJpbnRPcGVyYXRpb24gKilFUFNPcGVyYXRp
b25XaXRoVmlldzooTlNWaWV3ICopdmlldyBpbnNpZGVSZWN0OihOU1JlY3QpcmVjdCB0b0RhdGE6
KE5TTXV0YWJsZURhdGEgKilkYXRhIHByaW50SW5mbzooTlNQcmludEluZm8gKilwcmludEluZm87
CisgKE5TUHJpbnRPcGVyYXRpb24gKilFUFNPcGVyYXRpb25XaXRoVmlldzooTlNWaWV3ICopdmll
dyBpbnNpZGVSZWN0OihOU1JlY3QpcmVjdCB0b1BhdGg6KE5TU3RyaW5nICopcGF0aCBwcmludElu
Zm86KE5TUHJpbnRJbmZvICopcHJpbnRJbmZvOwoKCgorIChOU1ByaW50T3BlcmF0aW9uICopcHJp
bnRPcGVyYXRpb25XaXRoVmlldzooTlNWaWV3ICopdmlldzsKKyAoTlNQcmludE9wZXJhdGlvbiAq
KVBERk9wZXJhdGlvbldpdGhWaWV3OihOU1ZpZXcgKil2aWV3IGluc2lkZVJlY3Q6KE5TUmVjdCly
ZWN0IHRvRGF0YTooTlNNdXRhYmxlRGF0YSAqKWRhdGE7CisgKE5TUHJpbnRPcGVyYXRpb24gKilF
UFNPcGVyYXRpb25XaXRoVmlldzooTlNWaWV3ICopdmlldyBpbnNpZGVSZWN0OihOU1JlY3QpcmVj
dCB0b0RhdGE6KE5TTXV0YWJsZURhdGEgKilkYXRhOwoKCgorIChOU1ByaW50T3BlcmF0aW9uICop
Y3VycmVudE9wZXJhdGlvbjsKKyAodm9pZClzZXRDdXJyZW50T3BlcmF0aW9uOihOU1ByaW50T3Bl
cmF0aW9uICopb3BlcmF0aW9uOwoKCgotIChCT09MKWlzQ29weWluZ09wZXJhdGlvbjsKCgoKCgot
ICh2b2lkKXNldEpvYlRpdGxlOihOU1N0cmluZyAqKWpvYlRpdGxlOwotIChOU1N0cmluZyAqKWpv
YlRpdGxlOwoKCgoKCgoKLSAodm9pZClzZXRTaG93c1ByaW50UGFuZWw6KEJPT0wpZmxhZzsKLSAo
Qk9PTClzaG93c1ByaW50UGFuZWw7Ci0gKHZvaWQpc2V0U2hvd3NQcm9ncmVzc1BhbmVsOihCT09M
KWZsYWc7Ci0gKEJPT0wpc2hvd3NQcm9ncmVzc1BhbmVsOwoKCgoKCi0gKHZvaWQpc2V0UHJpbnRQ
YW5lbDooTlNQcmludFBhbmVsICopcGFuZWw7Ci0gKE5TUHJpbnRQYW5lbCAqKXByaW50UGFuZWw7
CgoKCi0gKHZvaWQpc2V0Q2FuU3Bhd25TZXBhcmF0ZVRocmVhZDooQk9PTCljYW5TcGF3blNlcGFy
YXRlVGhyZWFkOwotIChCT09MKWNhblNwYXduU2VwYXJhdGVUaHJlYWQ7CgoKCi0gKHZvaWQpc2V0
UGFnZU9yZGVyOihOU1ByaW50aW5nUGFnZU9yZGVyKXBhZ2VPcmRlcjsKLSAoTlNQcmludGluZ1Bh
Z2VPcmRlcilwYWdlT3JkZXI7CgoKCgoKCgotICh2b2lkKXJ1bk9wZXJhdGlvbk1vZGFsRm9yV2lu
ZG93OihOU1dpbmRvdyAqKWRvY1dpbmRvdyBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUgZGlkUnVuU2Vs
ZWN0b3I6KFNFTClkaWRSdW5TZWxlY3RvciBjb250ZXh0SW5mbzoodm9pZCAqKWNvbnRleHRJbmZv
OwoKCgotIChCT09MKXJ1bk9wZXJhdGlvbjsKCgoKLSAoTlNWaWV3ICopdmlldzsKCgoKLSAoTlNQ
cmludEluZm8gKilwcmludEluZm87Ci0gKHZvaWQpc2V0UHJpbnRJbmZvOihOU1ByaW50SW5mbyAq
KXByaW50SW5mbzsKCgoKLSAoTlNHcmFwaGljc0NvbnRleHQgKiljb250ZXh0OwoKCgoKCi0gKE5T
UmFuZ2UpcGFnZVJhbmdlOwoKCgoKCi0gKE5TSW50ZWdlciljdXJyZW50UGFnZTsKCgoKLSAoTlNH
cmFwaGljc0NvbnRleHQgKiljcmVhdGVDb250ZXh0OwotICh2b2lkKWRlc3Ryb3lDb250ZXh0Owot
IChCT09MKWRlbGl2ZXJSZXN1bHQ7Ci0gKHZvaWQpY2xlYW5VcE9wZXJhdGlvbjsKCkBlbmQKCkBp
bnRlcmZhY2UgTlNQcmludE9wZXJhdGlvbihOU0RlcHJlY2F0ZWQpCgoKCi0gKHZvaWQpc2V0QWNj
ZXNzb3J5VmlldzooTlNWaWV3ICopdmlldyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0g
KE5TVmlldyAqKWFjY2Vzc29yeVZpZXcgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKLSAo
dm9pZClzZXRKb2JTdHlsZUhpbnQ6KE5TU3RyaW5nICopaGludCBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7Ci0gKE5TU3RyaW5nICopam9iU3R5bGVIaW50IF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKCgoKLSAodm9pZClzZXRTaG93UGFuZWxzOihCT09MKWZsYWcgX19hdHRyaWJ1dGVf
XygoZGVwcmVjYXRlZCkpOwotIChCT09MKXNob3dQYW5lbHMgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwoKQGVuZAojIDc5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1ByaW50UGFuZWwuaCIgMSAzCiMgMTEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1ByaW50
UGFuZWwuaCIgMwpAY2xhc3MgTlNBcnJheSwgTlNNdXRhYmxlQXJyYXksIE5TUHJpbnRJbmZvLCBO
U1NldCwgTlNWaWV3LCBOU1ZpZXdDb250cm9sbGVyLCBOU1dpbmRvdywgTlNXaW5kb3dDb250cm9s
bGVyOwoKCgplbnVtIHsKCgoKICAgIE5TUHJpbnRQYW5lbFNob3dzQ29waWVzID0gMSA8PCAwLAog
ICAgTlNQcmludFBhbmVsU2hvd3NQYWdlUmFuZ2UgPSAxIDw8IDEsCiAgICBOU1ByaW50UGFuZWxT
aG93c1BhcGVyU2l6ZSA9IDEgPDwgMiwKICAgIE5TUHJpbnRQYW5lbFNob3dzT3JpZW50YXRpb24g
PSAxIDw8IDMsCiAgICBOU1ByaW50UGFuZWxTaG93c1NjYWxpbmcgPSAxIDw8IDQsCgoKCgoKICAg
IE5TUHJpbnRQYW5lbFNob3dzUHJpbnRTZWxlY3Rpb24gPSAxIDw8IDUsCgoKCgoKICAgIE5TUHJp
bnRQYW5lbFNob3dzUGFnZVNldHVwQWNjZXNzb3J5ID0gMSA8PCA4LAoKCgoKCiAgICBOU1ByaW50
UGFuZWxTaG93c1ByZXZpZXcgPSAxIDw8IDE3Cgp9Owp0eXBlZGVmIE5TSW50ZWdlciBOU1ByaW50
UGFuZWxPcHRpb25zOwoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJpbnRQaG90
b0pvYlN0eWxlSGludCA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJpbnRBbGxQcmVz
ZXRzSm9iU3R5bGVIaW50IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNQcmludE5vUHJl
c2V0c0pvYlN0eWxlSGludCA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKmNvbnN0IE5TUHJpbnRQ
YW5lbEFjY2Vzc29yeVN1bW1hcnlJdGVtTmFtZUtleSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKmNv
bnN0IE5TUHJpbnRQYW5lbEFjY2Vzc29yeVN1bW1hcnlJdGVtRGVzY3JpcHRpb25LZXkgOwoKCgpA
cHJvdG9jb2wgTlNQcmludFBhbmVsQWNjZXNzb3JpemluZwoKCgotIChOU0FycmF5ICopbG9jYWxp
emVkU3VtbWFyeUl0ZW1zOwoKQG9wdGlvbmFsCgoKCi0gKE5TU2V0ICopa2V5UGF0aHNGb3JWYWx1
ZXNBZmZlY3RpbmdQcmV2aWV3OwoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TUHJpbnRQYW5lbCA6IE5T
T2JqZWN0IHsKICAgIEBwcml2YXRlCiAgICBOU011dGFibGVBcnJheSAqX2FjY2Vzc29yeUNvbnRy
b2xsZXJzOwogICAgaWQgX3ByZXZpZXdDb250cm9sbGVyOwogICAgTlNWaWV3ICpfdGh1bWJuYWls
VmlldzsKICAgIE5TSW50ZWdlciBfb3B0aW9uczsKICAgIE5TU3RyaW5nICpfZGVmYXVsdEJ1dHRv
blRpdGxlOwogICAgTlNTdHJpbmcgKl9oZWxwQW5jaG9yOwogICAgTlNTdHJpbmcgKl9qb2JTdHls
ZUhpbnQ7CiAgICBOU1ByaW50SW5mbyAqX29yaWdpbmFsUHJpbnRJbmZvOwogICAgaWQgX2RlbGVn
YXRlOwogICAgU0VMIF9kaWRFbmRTZWxlY3RvcjsKICAgIHZvaWQgKl9jb250ZXh0SW5mbzsKICAg
IE5TUHJpbnRJbmZvICpfcHJlc2VudGVkUHJpbnRJbmZvOwogICAgTlNXaW5kb3dDb250cm9sbGVy
ICpfd2luZG93Q29udHJvbGxlcjsKCiAgICBpZCBfcmVzZXJ2ZWRbMl07CgoKCn0KCgoKKyAoTlNQ
cmludFBhbmVsICopcHJpbnRQYW5lbDsKCgoKCgotICh2b2lkKWFkZEFjY2Vzc29yeUNvbnRyb2xs
ZXI6KE5TVmlld0NvbnRyb2xsZXI8TlNQcmludFBhbmVsQWNjZXNzb3JpemluZz4gKilhY2Nlc3Nv
cnlDb250cm9sbGVyOwotICh2b2lkKXJlbW92ZUFjY2Vzc29yeUNvbnRyb2xsZXI6KE5TVmlld0Nv
bnRyb2xsZXI8TlNQcmludFBhbmVsQWNjZXNzb3JpemluZz4gKilhY2Nlc3NvcnlDb250cm9sbGVy
OwotIChOU0FycmF5ICopYWNjZXNzb3J5Q29udHJvbGxlcnM7CgoKCi0gKHZvaWQpc2V0T3B0aW9u
czooTlNQcmludFBhbmVsT3B0aW9ucylvcHRpb25zOwotIChOU1ByaW50UGFuZWxPcHRpb25zKW9w
dGlvbnM7CgoKCi0gKHZvaWQpc2V0RGVmYXVsdEJ1dHRvblRpdGxlOihOU1N0cmluZyAqKWRlZmF1
bHRCdXR0b25UaXRsZTsKLSAoTlNTdHJpbmcgKilkZWZhdWx0QnV0dG9uVGl0bGU7CgoKCi0gKHZv
aWQpc2V0SGVscEFuY2hvcjooTlNTdHJpbmcgKiloZWxwQW5jaG9yOwotIChOU1N0cmluZyAqKWhl
bHBBbmNob3I7CgoKCgoKCi0gKHZvaWQpc2V0Sm9iU3R5bGVIaW50OihOU1N0cmluZyAqKWhpbnQ7
Ci0gKE5TU3RyaW5nICopam9iU3R5bGVIaW50OwoKCgoKCgoKLSAodm9pZCliZWdpblNoZWV0V2l0
aFByaW50SW5mbzooTlNQcmludEluZm8gKilwcmludEluZm8gbW9kYWxGb3JXaW5kb3c6KE5TV2lu
ZG93ICopZG9jV2luZG93IGRlbGVnYXRlOihpZClkZWxlZ2F0ZSBkaWRFbmRTZWxlY3RvcjooU0VM
KWRpZEVuZFNlbGVjdG9yIGNvbnRleHRJbmZvOih2b2lkICopY29udGV4dEluZm87CgoKCgotIChO
U0ludGVnZXIpcnVuTW9kYWxXaXRoUHJpbnRJbmZvOihOU1ByaW50SW5mbyAqKXByaW50SW5mbzsK
Ci0gKE5TSW50ZWdlcilydW5Nb2RhbDsKCgoKCgotIChOU1ByaW50SW5mbyAqKXByaW50SW5mbzsK
CgoKQGVuZAoKQGludGVyZmFjZSBOU1ByaW50UGFuZWwoTlNEZXByZWNhdGVkKQoKCgotICh2b2lk
KXNldEFjY2Vzc29yeVZpZXc6KE5TVmlldyAqKWFjY2Vzc29yeVZpZXcgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwotIChOU1ZpZXcgKilhY2Nlc3NvcnlWaWV3IF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKCgoKLSAodm9pZCl1cGRhdGVGcm9tUHJpbnRJbmZvIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKLSAodm9pZClmaW5hbFdyaXRlUHJpbnRJbmZvIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKCkBlbmQKIyA4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNTY3JvbGxWaWV3LmgiIDEg
MwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNTY3JvbGxWaWV3LmgiIDMKQGNsYXNzIE5TQ29sb3IsIE5TQ2xpcFZpZXcsIE5TUnVsZXJW
aWV3LCBOU1Njcm9sbGVyOwoKdHlwZWRlZiBzdHJ1Y3QgX19TRmxhZ3MgewojIDMzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNTY3JvbGxWaWV3
LmgiIDMKICAgIHVuc2lnbmVkIGludCBSRVNFUlZFRDoxNDsKICAgIHVuc2lnbmVkIGludCBhdXRv
Zm9yd2FyZHNTY3JvbGxXaGVlbEV2ZW50czoxOwogICAgdW5zaWduZWQgaW50IGF1dG9oaWRlc1Nj
cm9sbGVyczoxOwogICAgdW5zaWduZWQgaW50IGhhc0N1c3RvbUxpbmVCb3JkZXJDb2xvcjoxOwog
ICAgdW5zaWduZWQgaW50IGZvY3VzUmluZ05lZWRzUmVkaXNwbGF5OjE7CiAgICB1bnNpZ25lZCBp
bnQgc2tpcFJlbW92ZVN1cGVydmlld0NoZWNrOjE7CiAgICB1bnNpZ25lZCBpbnQgZG9lc05vdERy
YXdCYWNrZ3JvdW5kOjE7CiAgICB1bnNpZ25lZCBpbnQgbmVlZHNUaWxlOjE7CiAgICB1bnNpZ25l
ZCBpbnQgaGFzVmVydGljYWxSdWxlcjoxOwogICAgdW5zaWduZWQgaW50IGhhc0hvcml6b250YWxS
dWxlcjoxOwogICAgdW5zaWduZWQgaW50IHNob3dSdWxlcnM6MTsKICAgIHVuc2lnbmVkIGludCBv
bGRSdWxlckluc3RhbGxlZDoxOwogICAgTlNCb3JkZXJUeXBlIGJvcmRlclR5cGU6MjsKICAgIHVu
c2lnbmVkIGludCBub0R5bmFtaWNTY3JvbGxpbmc6MTsKICAgIHVuc2lnbmVkIGludCBoU2Nyb2xs
ZXJTdGF0dXM6MTsKICAgIHVuc2lnbmVkIGludCB2U2Nyb2xsZXJTdGF0dXM6MTsKICAgIHVuc2ln
bmVkIGludCBoU2Nyb2xsZXJSZXF1aXJlZDoxOwogICAgdW5zaWduZWQgaW50IHZTY3JvbGxlclJl
cXVpcmVkOjE7Cgp9IF9TRmxhZ3M7CgpAaW50ZXJmYWNlIE5TU2Nyb2xsVmlldyA6IE5TVmlldwp7
CgogICAgTlNTY3JvbGxlciAqX3ZTY3JvbGxlcjsKICAgIE5TU2Nyb2xsZXIgKl9oU2Nyb2xsZXI7
CiAgICBOU0NsaXBWaWV3ICpfY29udGVudFZpZXc7CiAgICBOU0NsaXBWaWV3ICpfaGVhZGVyQ2xp
cFZpZXc7CiAgICBOU1ZpZXcgKiBfY29ybmVyVmlldzsKICAgIGlkIF9ydWxlcjsKICAgIF9TRmxh
Z3MgX3NGbGFnczsKICAgIHZvaWQgKl9leHRyYUl2YXJzOwoKCiAgICBOU1J1bGVyVmlldyAqX2hv
cml6b250YWxSdWxlcjsKICAgIE5TUnVsZXJWaWV3ICpfdmVydGljYWxSdWxlcjsKfQoKKyAoTlNT
aXplKWZyYW1lU2l6ZUZvckNvbnRlbnRTaXplOihOU1NpemUpY1NpemUgaGFzSG9yaXpvbnRhbFNj
cm9sbGVyOihCT09MKWhGbGFnIGhhc1ZlcnRpY2FsU2Nyb2xsZXI6KEJPT0wpdkZsYWcgYm9yZGVy
VHlwZTooTlNCb3JkZXJUeXBlKWFUeXBlOworIChOU1NpemUpY29udGVudFNpemVGb3JGcmFtZVNp
emU6KE5TU2l6ZSlmU2l6ZSBoYXNIb3Jpem9udGFsU2Nyb2xsZXI6KEJPT0wpaEZsYWcgaGFzVmVy
dGljYWxTY3JvbGxlcjooQk9PTCl2RmxhZyBib3JkZXJUeXBlOihOU0JvcmRlclR5cGUpYVR5cGU7
CgotIChOU1JlY3QpZG9jdW1lbnRWaXNpYmxlUmVjdDsKLSAoTlNTaXplKWNvbnRlbnRTaXplOwoK
LSAodm9pZClzZXREb2N1bWVudFZpZXc6KE5TVmlldyAqKWFWaWV3OwotIChpZClkb2N1bWVudFZp
ZXc7Ci0gKHZvaWQpc2V0Q29udGVudFZpZXc6KE5TQ2xpcFZpZXcgKiljb250ZW50VmlldzsKLSAo
TlNDbGlwVmlldyAqKWNvbnRlbnRWaWV3OwotICh2b2lkKXNldERvY3VtZW50Q3Vyc29yOihOU0N1
cnNvciAqKWFuT2JqOwotIChOU0N1cnNvciAqKWRvY3VtZW50Q3Vyc29yOwotICh2b2lkKXNldEJv
cmRlclR5cGU6KE5TQm9yZGVyVHlwZSlhVHlwZTsKLSAoTlNCb3JkZXJUeXBlKWJvcmRlclR5cGU7
Ci0gKHZvaWQpc2V0QmFja2dyb3VuZENvbG9yOihOU0NvbG9yICopY29sb3I7Ci0gKE5TQ29sb3Ig
KiliYWNrZ3JvdW5kQ29sb3I7Ci0gKHZvaWQpc2V0RHJhd3NCYWNrZ3JvdW5kOihCT09MKWZsYWc7
Ci0gKEJPT0wpZHJhd3NCYWNrZ3JvdW5kOwotICh2b2lkKXNldEhhc1ZlcnRpY2FsU2Nyb2xsZXI6
KEJPT0wpZmxhZzsKLSAoQk9PTCloYXNWZXJ0aWNhbFNjcm9sbGVyOwotICh2b2lkKXNldEhhc0hv
cml6b250YWxTY3JvbGxlcjooQk9PTClmbGFnOwotIChCT09MKWhhc0hvcml6b250YWxTY3JvbGxl
cjsKLSAodm9pZClzZXRWZXJ0aWNhbFNjcm9sbGVyOihOU1Njcm9sbGVyICopYW5PYmplY3Q7Ci0g
KE5TU2Nyb2xsZXIgKil2ZXJ0aWNhbFNjcm9sbGVyOwotICh2b2lkKXNldEhvcml6b250YWxTY3Jv
bGxlcjooTlNTY3JvbGxlciAqKWFuT2JqZWN0OwotIChOU1Njcm9sbGVyICopaG9yaXpvbnRhbFNj
cm9sbGVyOwoKLSAoQk9PTClhdXRvaGlkZXNTY3JvbGxlcnM7Ci0gKHZvaWQpc2V0QXV0b2hpZGVz
U2Nyb2xsZXJzOihCT09MKWZsYWc7CgotICh2b2lkKXNldEhvcml6b250YWxMaW5lU2Nyb2xsOihD
R0Zsb2F0KXZhbHVlOwotICh2b2lkKXNldFZlcnRpY2FsTGluZVNjcm9sbDooQ0dGbG9hdCl2YWx1
ZTsKLSAodm9pZClzZXRMaW5lU2Nyb2xsOihDR0Zsb2F0KXZhbHVlOwotIChDR0Zsb2F0KWhvcml6
b250YWxMaW5lU2Nyb2xsOwotIChDR0Zsb2F0KXZlcnRpY2FsTGluZVNjcm9sbDsKLSAoQ0dGbG9h
dClsaW5lU2Nyb2xsOwotICh2b2lkKXNldEhvcml6b250YWxQYWdlU2Nyb2xsOihDR0Zsb2F0KXZh
bHVlOwotICh2b2lkKXNldFZlcnRpY2FsUGFnZVNjcm9sbDooQ0dGbG9hdCl2YWx1ZTsKLSAodm9p
ZClzZXRQYWdlU2Nyb2xsOihDR0Zsb2F0KXZhbHVlOwotIChDR0Zsb2F0KWhvcml6b250YWxQYWdl
U2Nyb2xsOwotIChDR0Zsb2F0KXZlcnRpY2FsUGFnZVNjcm9sbDsKLSAoQ0dGbG9hdClwYWdlU2Ny
b2xsOwotICh2b2lkKXNldFNjcm9sbHNEeW5hbWljYWxseTooQk9PTClmbGFnOwotIChCT09MKXNj
cm9sbHNEeW5hbWljYWxseTsKLSAodm9pZCl0aWxlOwotICh2b2lkKXJlZmxlY3RTY3JvbGxlZENs
aXBWaWV3OihOU0NsaXBWaWV3ICopY1ZpZXc7Ci0gKHZvaWQpc2Nyb2xsV2hlZWw6KE5TRXZlbnQg
Kil0aGVFdmVudDsKQGVuZAoKQGludGVyZmFjZSBOU1Njcm9sbFZpZXcoTlNSdWxlclN1cHBvcnQp
CgorICh2b2lkKXNldFJ1bGVyVmlld0NsYXNzOihDbGFzcylydWxlclZpZXdDbGFzczsKKyAoQ2xh
c3MpcnVsZXJWaWV3Q2xhc3M7CgotICh2b2lkKXNldFJ1bGVyc1Zpc2libGU6KEJPT0wpZmxhZzsK
LSAoQk9PTClydWxlcnNWaXNpYmxlOwoKLSAodm9pZClzZXRIYXNIb3Jpem9udGFsUnVsZXI6KEJP
T0wpZmxhZzsKLSAoQk9PTCloYXNIb3Jpem9udGFsUnVsZXI7Ci0gKHZvaWQpc2V0SGFzVmVydGlj
YWxSdWxlcjooQk9PTClmbGFnOwotIChCT09MKWhhc1ZlcnRpY2FsUnVsZXI7CgotICh2b2lkKXNl
dEhvcml6b250YWxSdWxlclZpZXc6KE5TUnVsZXJWaWV3ICopcnVsZXI7Ci0gKE5TUnVsZXJWaWV3
ICopaG9yaXpvbnRhbFJ1bGVyVmlldzsKLSAodm9pZClzZXRWZXJ0aWNhbFJ1bGVyVmlldzooTlNS
dWxlclZpZXcgKilydWxlcjsKLSAoTlNSdWxlclZpZXcgKil2ZXJ0aWNhbFJ1bGVyVmlldzsKCkBl
bmQKIyA4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFk
ZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNTY3JvbGxlci5oIiAxIDMKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU2Nyb2xsZXIuaCIgMwplbnVt
IHsKICAgIE5TU2Nyb2xsZXJBcnJvd3NNYXhFbmQgPSAwLAogICAgTlNTY3JvbGxlckFycm93c01p
bkVuZCA9IDEsCiAgICBOU1Njcm9sbGVyQXJyb3dzRGVmYXVsdFNldHRpbmcgPSAwLAogICAgTlNT
Y3JvbGxlckFycm93c05vbmUgPSAyCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1Njcm9sbEFycm93
UG9zaXRpb247CgplbnVtIHsKICAgIE5TTm9TY3JvbGxlclBhcnRzID0gMCwKICAgIE5TT25seVNj
cm9sbGVyQXJyb3dzID0gMSwKICAgIE5TQWxsU2Nyb2xsZXJQYXJ0cyA9IDIKfTsKdHlwZWRlZiBO
U1VJbnRlZ2VyIE5TVXNhYmxlU2Nyb2xsZXJQYXJ0czsKCmVudW0gewogICAgTlNTY3JvbGxlck5v
UGFydCA9IDAsCiAgICBOU1Njcm9sbGVyRGVjcmVtZW50UGFnZSA9IDEsCiAgICBOU1Njcm9sbGVy
S25vYiA9IDIsCiAgICBOU1Njcm9sbGVySW5jcmVtZW50UGFnZSA9IDMsCiAgICBOU1Njcm9sbGVy
RGVjcmVtZW50TGluZSA9IDQsCiAgICBOU1Njcm9sbGVySW5jcmVtZW50TGluZSA9IDUsCiAgICBO
U1Njcm9sbGVyS25vYlNsb3QgPSA2Cn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1Njcm9sbGVyUGFy
dDsKCmVudW0gewogICAgTlNTY3JvbGxlckluY3JlbWVudEFycm93ID0gMCwKICAgIE5TU2Nyb2xs
ZXJEZWNyZW1lbnRBcnJvdyA9IDEKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TU2Nyb2xsZXJBcnJv
dzsKCkBpbnRlcmZhY2UgTlNTY3JvbGxlciA6IE5TQ29udHJvbAp7CgogICAgQ0dGbG9hdCBfY3Vy
VmFsdWU7CiAgICBDR0Zsb2F0IF9wZXJjZW50OwogICAgQ0dGbG9hdCBfa25vYlNpemU7CiAgICBz
dHJ1Y3QgX19zRmxhZ3MyIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaGl0UGFydDo0OwogICAgICAg
IHVuc2lnbmVkIGludCBjb250cm9sU2l6ZToyOwogICAgICAgIHVuc2lnbmVkIGludCBpbk1heEVu
ZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBzZXRGbG9hdFZhbHVlT3ZlcnJpZGRlbjoxOwogICAg
ICAgIHVuc2lnbmVkIGludCBzZXRGbG9hdFZhbHVlS25vYlByb3BvcnRpb25PdmVycmlkZGVuOjE7
CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkOjIzOwogICAgfSBfc0ZsYWdzMjsKICAgIGlk
IF90YXJnZXQ7CiAgICBTRUwgX2FjdGlvbjsKICAgIHN0cnVjdCBfc0ZsYWdzIHsKIHVuc2lnbmVk
IGludCBpc0hvcml6OjE7CiAgICAgICAgTlNTY3JvbGxBcnJvd1Bvc2l0aW9uIGFycm93c0xvYzoy
OwogICAgICAgIE5TVXNhYmxlU2Nyb2xsZXJQYXJ0cyBwYXJ0c1VzYWJsZToyOwogdW5zaWduZWQg
aW50IGZpbmU6MTsKIHVuc2lnbmVkIGludCBuZWVkc0VuYWJsZUZsdXNoOjE7CiB1bnNpZ25lZCBp
bnQgdGh1bWJpbmc6MTsKIHVuc2lnbmVkIGludCBzbG90RHJhd246MTsKIHVuc2lnbmVkIGludCBr
bm9iRHJhd246MTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGl0OjE7CiAgICAgICAgdW5zaWduZWQg
aW50IGtub2JMaXQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQ6MTsKICAgICAgICB1
bnNpZ25lZCBpbnQgY29udHJvbFRpbnQ6MzsKIHVuc2lnbmVkIGludCByZXBlYXRDb3VudDoxNjsK
ICAgIH0gc0ZsYWdzOwp9CgorIChDR0Zsb2F0KXNjcm9sbGVyV2lkdGg7CisgKENHRmxvYXQpc2Ny
b2xsZXJXaWR0aEZvckNvbnRyb2xTaXplOihOU0NvbnRyb2xTaXplKWNvbnRyb2xTaXplOwoKLSAo
dm9pZClkcmF3UGFydHM7Ci0gKE5TUmVjdClyZWN0Rm9yUGFydDooTlNTY3JvbGxlclBhcnQpcGFy
dENvZGU7Ci0gKHZvaWQpY2hlY2tTcGFjZUZvclBhcnRzOwotIChOU1VzYWJsZVNjcm9sbGVyUGFy
dHMpdXNhYmxlUGFydHM7Ci0gKHZvaWQpc2V0QXJyb3dzUG9zaXRpb246KE5TU2Nyb2xsQXJyb3dQ
b3NpdGlvbil3aGVyZTsKLSAoTlNTY3JvbGxBcnJvd1Bvc2l0aW9uKWFycm93c1Bvc2l0aW9uOwot
ICh2b2lkKXNldENvbnRyb2xUaW50OihOU0NvbnRyb2xUaW50KWNvbnRyb2xUaW50OwotIChOU0Nv
bnRyb2xUaW50KWNvbnRyb2xUaW50OwotICh2b2lkKXNldENvbnRyb2xTaXplOihOU0NvbnRyb2xT
aXplKWNvbnRyb2xTaXplOwotIChOU0NvbnRyb2xTaXplKWNvbnRyb2xTaXplOwotICh2b2lkKWRy
YXdBcnJvdzooTlNTY3JvbGxlckFycm93KXdoaWNoQXJyb3cgaGlnaGxpZ2h0OihCT09MKWZsYWc7
Ci0gKHZvaWQpZHJhd0tub2I7Ci0gKHZvaWQpZHJhd0tub2JTbG90SW5SZWN0OihOU1JlY3Qpc2xv
dFJlY3QgaGlnaGxpZ2h0OihCT09MKWZsYWc7Ci0gKHZvaWQpaGlnaGxpZ2h0OihCT09MKWZsYWc7
Ci0gKE5TU2Nyb2xsZXJQYXJ0KXRlc3RQYXJ0OihOU1BvaW50KXRoZVBvaW50OwotICh2b2lkKXRy
YWNrS25vYjooTlNFdmVudCAqKXRoZUV2ZW50OwotICh2b2lkKXRyYWNrU2Nyb2xsQnV0dG9uczoo
TlNFdmVudCAqKXRoZUV2ZW50OwotIChOU1Njcm9sbGVyUGFydCloaXRQYXJ0OwotIChDR0Zsb2F0
KWtub2JQcm9wb3J0aW9uOwoKLSAodm9pZClzZXRLbm9iUHJvcG9ydGlvbjooQ0dGbG9hdClwcm9w
b3J0aW9uOwoKCkBlbmQKCkBpbnRlcmZhY2UgTlNTY3JvbGxlcihOU0RlcHJlY2F0ZWQpCgoKLSAo
dm9pZClzZXRGbG9hdFZhbHVlOihmbG9hdClhRmxvYXQga25vYlByb3BvcnRpb246KENHRmxvYXQp
cHJvcG9ydGlvbiBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CkBlbmQKIyA4NSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNTZWdtZW50ZWRDb250cm9sLmgiIDEgMwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNTZWdtZW50ZWRDb250cm9sLmgiIDMKQGNs
YXNzIE5TSW1hZ2U7CgoKZW51bSB7CiAgICBOU1NlZ21lbnRTdHlsZUF1dG9tYXRpYyA9IDAsCiAg
ICBOU1NlZ21lbnRTdHlsZVJvdW5kZWQgPSAxLAogICAgTlNTZWdtZW50U3R5bGVUZXh0dXJlZFJv
dW5kZWQgPSAyLAogICAgTlNTZWdtZW50U3R5bGVSb3VuZFJlY3QgPSAzLAogICAgTlNTZWdtZW50
U3R5bGVUZXh0dXJlZFNxdWFyZSA9IDQsCiAgICBOU1NlZ21lbnRTdHlsZUNhcHN1bGUgPSA1LAog
ICAgTlNTZWdtZW50U3R5bGVTbWFsbFNxdWFyZSA9IDYKfTsKCnR5cGVkZWYgTlNJbnRlZ2VyIE5T
U2VnbWVudFN0eWxlOwoKCkBpbnRlcmZhY2UgTlNTZWdtZW50ZWRDb250cm9sIDogTlNDb250cm9s
IHsKICBAcHJpdmF0ZQogICAgTlNJbnRlZ2VyIF9yZXNlcnZlZDE7CiAgICBOU0ludGVnZXIgX3Jl
c2VydmVkMjsKICAgIE5TSW50ZWdlciBfcmVzZXJ2ZWQzOwogICAgTlNJbnRlZ2VyIF9yZXNlcnZl
ZDQ7Cn0KCi0gKHZvaWQpc2V0U2VnbWVudENvdW50OihOU0ludGVnZXIpY291bnQ7Ci0gKE5TSW50
ZWdlcilzZWdtZW50Q291bnQ7CgotICh2b2lkKXNldFNlbGVjdGVkU2VnbWVudDooTlNJbnRlZ2Vy
KXNlbGVjdGVkU2VnbWVudDsKLSAoTlNJbnRlZ2VyKXNlbGVjdGVkU2VnbWVudDsKCgotIChCT09M
KXNlbGVjdFNlZ21lbnRXaXRoVGFnOihOU0ludGVnZXIpdGFnOwoKCi0gKHZvaWQpc2V0V2lkdGg6
KENHRmxvYXQpd2lkdGggZm9yU2VnbWVudDooTlNJbnRlZ2VyKXNlZ21lbnQ7Ci0gKENHRmxvYXQp
d2lkdGhGb3JTZWdtZW50OihOU0ludGVnZXIpc2VnbWVudDsKCi0gKHZvaWQpc2V0SW1hZ2U6KE5T
SW1hZ2UgKilpbWFnZSBmb3JTZWdtZW50OihOU0ludGVnZXIpc2VnbWVudDsKLSAoTlNJbWFnZSAq
KWltYWdlRm9yU2VnbWVudDooTlNJbnRlZ2VyKXNlZ21lbnQ7CgoKCi0gKHZvaWQpc2V0SW1hZ2VT
Y2FsaW5nOihOU0ltYWdlU2NhbGluZylzY2FsaW5nIGZvclNlZ21lbnQ6KE5TSW50ZWdlcilzZWdt
ZW50OwotIChOU0ltYWdlU2NhbGluZylpbWFnZVNjYWxpbmdGb3JTZWdtZW50OihOU0ludGVnZXIp
c2VnbWVudDsKCgoKLSAodm9pZClzZXRMYWJlbDooTlNTdHJpbmcgKilsYWJlbCBmb3JTZWdtZW50
OihOU0ludGVnZXIpc2VnbWVudDsKLSAoTlNTdHJpbmcgKilsYWJlbEZvclNlZ21lbnQ6KE5TSW50
ZWdlcilzZWdtZW50OwoKLSAodm9pZClzZXRNZW51OihOU01lbnUgKiltZW51IGZvclNlZ21lbnQ6
KE5TSW50ZWdlcilzZWdtZW50OwotIChOU01lbnUgKiltZW51Rm9yU2VnbWVudDooTlNJbnRlZ2Vy
KXNlZ21lbnQ7CgotICh2b2lkKXNldFNlbGVjdGVkOihCT09MKXNlbGVjdGVkIGZvclNlZ21lbnQ6
KE5TSW50ZWdlcilzZWdtZW50OwotIChCT09MKWlzU2VsZWN0ZWRGb3JTZWdtZW50OihOU0ludGVn
ZXIpc2VnbWVudDsKCi0gKHZvaWQpc2V0RW5hYmxlZDooQk9PTCllbmFibGVkIGZvclNlZ21lbnQ6
KE5TSW50ZWdlcilzZWdtZW50OwotIChCT09MKWlzRW5hYmxlZEZvclNlZ21lbnQ6KE5TSW50ZWdl
cilzZWdtZW50OwoKCi0gKHZvaWQpc2V0U2VnbWVudFN0eWxlOihOU1NlZ21lbnRTdHlsZSlzZWdt
ZW50U3R5bGU7Ci0gKE5TU2VnbWVudFN0eWxlKXNlZ21lbnRTdHlsZTsKCgpAZW5kCiMgODYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQu
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9I
ZWFkZXJzL05TU2VnbWVudGVkQ2VsbC5oIiAxIDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU2VnbWVudGVkQ2VsbC5oIiAzCmVudW0g
ewogICAgTlNTZWdtZW50U3dpdGNoVHJhY2tpbmdTZWxlY3RPbmUgPSAwLAogICAgTlNTZWdtZW50
U3dpdGNoVHJhY2tpbmdTZWxlY3RBbnkgPSAxLAogICAgTlNTZWdtZW50U3dpdGNoVHJhY2tpbmdN
b21lbnRhcnkgPSAyCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1NlZ21lbnRTd2l0Y2hUcmFja2lu
ZzsKCkBjbGFzcyBOU011dGFibGVBcnJheTsKCkBpbnRlcmZhY2UgTlNTZWdtZW50ZWRDZWxsIDog
TlNBY3Rpb25DZWxsIHsKICBAcHJpdmF0ZQogICAgTlNNdXRhYmxlQXJyYXkqIF9zZWdtZW50SXRl
bXM7CiAgICBOU0ludGVnZXIgX3NlbGVjdGVkU2VnbWVudDsKICAgIE5TSW50ZWdlciBfa2V5U2Vn
bWVudDsKICAgIE5TUmVjdCBfbGFzdEJvdW5kczsKICAgIHN0cnVjdCB7CiB1bnNpZ25lZCBpbnQg
dHJhY2tpbmdNb2RlOjM7CiB1bnNpZ25lZCBpbnQgdHJpbW1lZExhYmVsczoxOwogdW5zaWduZWQg
aW50IGRyYXdpbmc6MTsKIHVuc2lnbmVkIGludCByZXNlcnZlZDE6MjsKIHVuc2lnbmVkIGludCBy
ZWNhbGNUb29sVGlwczoxOwogICAgICAgIHVuc2lnbmVkIGludCB1c2VzV2luZG93c1N0eWxlOjE7
CiAgICAgICAgdW5zaWduZWQgaW50IGRvbnRTaG93U2VsZWN0ZWRBbmRQcmVzc2VkQXBwZWFyYW5j
ZToxOwogICAgICAgIHVuc2lnbmVkIGludCBtZW51U2hvdWxkQmVVbmlxdWVkQWdhaW5zdE1haW46
MTsKIHVuc2lnbmVkIGludCBzdHlsZTo4OwogdW5zaWduZWQgaW50IHJlc2VydmVkOjEzOwogICAg
fSBfc2VGbGFnczsKICAgIGlkIF9zZWdtZW50VHJhY2tpbmdJbmZvOwogICAgaWQgX21lbnVVbmlx
dWVyOwogICAgTlNJbnRlZ2VyIF9yZXNlcnZlZDM7CiAgICBOU0ludGVnZXIgX3Jlc2VydmVkNDsK
fQoKCgotICh2b2lkKXNldFNlZ21lbnRDb3VudDooTlNJbnRlZ2VyKWNvdW50OwotIChOU0ludGVn
ZXIpc2VnbWVudENvdW50OwoKCgotICh2b2lkKXNldFNlbGVjdGVkU2VnbWVudDooTlNJbnRlZ2Vy
KXNlbGVjdGVkU2VnbWVudDsKLSAoTlNJbnRlZ2VyKXNlbGVjdGVkU2VnbWVudDsKCgotIChCT09M
KXNlbGVjdFNlZ21lbnRXaXRoVGFnOihOU0ludGVnZXIpdGFnOwoKCgoKLSAodm9pZCltYWtlTmV4
dFNlZ21lbnRLZXk7Ci0gKHZvaWQpbWFrZVByZXZpb3VzU2VnbWVudEtleTsKCi0gKHZvaWQpc2V0
VHJhY2tpbmdNb2RlOihOU1NlZ21lbnRTd2l0Y2hUcmFja2luZyl0cmFja2luZ01vZGU7Ci0gKE5T
U2VnbWVudFN3aXRjaFRyYWNraW5nKXRyYWNraW5nTW9kZTsKCgoKCgoKLSAodm9pZClzZXRXaWR0
aDooQ0dGbG9hdCl3aWR0aCBmb3JTZWdtZW50OihOU0ludGVnZXIpc2VnbWVudDsKLSAoQ0dGbG9h
dCl3aWR0aEZvclNlZ21lbnQ6KE5TSW50ZWdlcilzZWdtZW50OwoKLSAodm9pZClzZXRJbWFnZToo
TlNJbWFnZSAqKWltYWdlIGZvclNlZ21lbnQ6KE5TSW50ZWdlcilzZWdtZW50OwotIChOU0ltYWdl
ICopaW1hZ2VGb3JTZWdtZW50OihOU0ludGVnZXIpc2VnbWVudDsKCgoKLSAodm9pZClzZXRJbWFn
ZVNjYWxpbmc6KE5TSW1hZ2VTY2FsaW5nKXNjYWxpbmcgZm9yU2VnbWVudDooTlNJbnRlZ2VyKXNl
Z21lbnQ7Ci0gKE5TSW1hZ2VTY2FsaW5nKWltYWdlU2NhbGluZ0ZvclNlZ21lbnQ6KE5TSW50ZWdl
cilzZWdtZW50OwoKCgotICh2b2lkKXNldExhYmVsOihOU1N0cmluZyAqKWxhYmVsIGZvclNlZ21l
bnQ6KE5TSW50ZWdlcilzZWdtZW50OwotIChOU1N0cmluZyAqKWxhYmVsRm9yU2VnbWVudDooTlNJ
bnRlZ2VyKXNlZ21lbnQ7CgotICh2b2lkKXNldFNlbGVjdGVkOihCT09MKXNlbGVjdGVkIGZvclNl
Z21lbnQ6KE5TSW50ZWdlcilzZWdtZW50OwotIChCT09MKWlzU2VsZWN0ZWRGb3JTZWdtZW50OihO
U0ludGVnZXIpc2VnbWVudDsKCi0gKHZvaWQpc2V0RW5hYmxlZDooQk9PTCllbmFibGVkIGZvclNl
Z21lbnQ6KE5TSW50ZWdlcilzZWdtZW50OwotIChCT09MKWlzRW5hYmxlZEZvclNlZ21lbnQ6KE5T
SW50ZWdlcilzZWdtZW50OwoKLSAodm9pZClzZXRNZW51OihOU01lbnUgKiltZW51IGZvclNlZ21l
bnQ6KE5TSW50ZWdlcilzZWdtZW50OwotIChOU01lbnUgKiltZW51Rm9yU2VnbWVudDooTlNJbnRl
Z2VyKXNlZ21lbnQ7CgotICh2b2lkKXNldFRvb2xUaXA6KE5TU3RyaW5nICopdG9vbFRpcCBmb3JT
ZWdtZW50OihOU0ludGVnZXIpc2VnbWVudDsKLSAoTlNTdHJpbmcgKil0b29sVGlwRm9yU2VnbWVu
dDooTlNJbnRlZ2VyKXNlZ21lbnQ7CgotICh2b2lkKXNldFRhZzooTlNJbnRlZ2VyKXRhZyBmb3JT
ZWdtZW50OihOU0ludGVnZXIpc2VnbWVudDsKLSAoTlNJbnRlZ2VyKXRhZ0ZvclNlZ21lbnQ6KE5T
SW50ZWdlcilzZWdtZW50OwoKCgotICh2b2lkKXNldFNlZ21lbnRTdHlsZTooTlNTZWdtZW50U3R5
bGUpc2VnbWVudFN0eWxlOwotIChOU1NlZ21lbnRTdHlsZSlzZWdtZW50U3R5bGU7CgoKCgotICh2
b2lkKWRyYXdTZWdtZW50OihOU0ludGVnZXIpc2VnbWVudCBpbkZyYW1lOihOU1JlY3QpZnJhbWUg
d2l0aFZpZXc6KE5TVmlldyAqKWNvbnRyb2xWaWV3OwoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TU2Vn
bWVudGVkQ2VsbCAoTlNTZWdtZW50QmFja2dyb3VuZFN0eWxlKQoKCi0gKE5TQmFja2dyb3VuZFN0
eWxlKWludGVyaW9yQmFja2dyb3VuZFN0eWxlRm9yU2VnbWVudDooTlNJbnRlZ2VyKXNlZ21lbnQ7
CkBlbmQKIyA4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9I
ZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNTbGlkZXIuaCIgMSAzCiMgOSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU2xpZGVyLmgiIDMKIyAxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNTbGlk
ZXJDZWxsLmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvTlNTbGlkZXJDZWxsLmgiIDMKZW51bSB7CiAgICBOU1RpY2tNYXJrQmVs
b3cgPSAwLAogICAgTlNUaWNrTWFya0Fib3ZlID0gMSwKICAgIE5TVGlja01hcmtMZWZ0ID0gTlNU
aWNrTWFya0Fib3ZlLAogICAgTlNUaWNrTWFya1JpZ2h0ID0gTlNUaWNrTWFya0JlbG93Cn07CnR5
cGVkZWYgTlNVSW50ZWdlciBOU1RpY2tNYXJrUG9zaXRpb247CgoKZW51bSB7CiAgICBOU0xpbmVh
clNsaWRlciA9IDAsCiAgICBOU0NpcmN1bGFyU2xpZGVyID0gMQp9Owp0eXBlZGVmIE5TVUludGVn
ZXIgTlNTbGlkZXJUeXBlOwoKCkBpbnRlcmZhY2UgTlNTbGlkZXJDZWxsIDogTlNBY3Rpb25DZWxs
CnsKCiAgICBpbnQgX3Jlc2VydmVkWzNdOwogICAgaW50IF9udW1iZXJPZlRpY2tNYXJrczsKICAg
IGRvdWJsZSBfYWx0SW5jVmFsdWU7CiAgICBkb3VibGUgX3ZhbHVlOwogICAgZG91YmxlIF9tYXhW
YWx1ZTsKICAgIGRvdWJsZSBfbWluVmFsdWU7CiAgICBOU1JlY3QgX3RyYWNrUmVjdDsKICAgIHN0
cnVjdCBfX3NsaWRlckNlbGxGbGFncyB7CiAgICAgICAgdW5zaWduZWQgaW50IHdlQXJlVmVydGlj
YWw6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgd2VBcmVWZXJ0aWNhbFNldDoxOwogICAgICAgIHVu
c2lnbmVkIGludCByZXNlcnZlZDE6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgaXNQcmVzc2VkOjE7
CiAgICAgICAgdW5zaWduZWQgaW50IGFsbG93c1RpY2tNYXJrVmFsdWVzT25seToxOwogICAgICAg
IHVuc2lnbmVkIGludCB0aWNrTWFya1Bvc2l0aW9uOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHNs
aWRlclR5cGU6MjsKICAgICAgICB1bnNpZ25lZCBpbnQgZHJhd2luZzoxOwogICAgICAgIHVuc2ln
bmVkIGludCByZXNlcnZlZDI6MjM7CiAgICB9IF9zY0ZsYWdzOwp9CgoKKyAoQk9PTClwcmVmZXJz
VHJhY2tpbmdVbnRpbE1vdXNlVXA7CgoKLSAoZG91YmxlKW1pblZhbHVlOwotICh2b2lkKXNldE1p
blZhbHVlOihkb3VibGUpYURvdWJsZTsKLSAoZG91YmxlKW1heFZhbHVlOwotICh2b2lkKXNldE1h
eFZhbHVlOihkb3VibGUpYURvdWJsZTsKLSAodm9pZClzZXRBbHRJbmNyZW1lbnRWYWx1ZTooZG91
YmxlKWluY1ZhbHVlOwotIChkb3VibGUpYWx0SW5jcmVtZW50VmFsdWU7Ci0gKE5TSW50ZWdlcilp
c1ZlcnRpY2FsOwotICh2b2lkKXNldFRpdGxlQ29sb3I6KE5TQ29sb3IgKiluZXdDb2xvcjsKLSAo
TlNDb2xvciAqKXRpdGxlQ29sb3I7Ci0gKHZvaWQpc2V0VGl0bGVGb250OihOU0ZvbnQgKilmb250
T2JqOwotIChOU0ZvbnQgKil0aXRsZUZvbnQ7Ci0gKE5TU3RyaW5nICopdGl0bGU7Ci0gKHZvaWQp
c2V0VGl0bGU6KE5TU3RyaW5nICopYVN0cmluZzsKLSAodm9pZClzZXRUaXRsZUNlbGw6KE5TQ2Vs
bCAqKWFDZWxsOwotIChpZCl0aXRsZUNlbGw7Ci0gKHZvaWQpc2V0S25vYlRoaWNrbmVzczooQ0dG
bG9hdClhRmxvYXQ7Ci0gKENHRmxvYXQpa25vYlRoaWNrbmVzczsKLSAoTlNSZWN0KWtub2JSZWN0
RmxpcHBlZDooQk9PTClmbGlwcGVkOwotICh2b2lkKWRyYXdLbm9iOihOU1JlY3Qpa25vYlJlY3Q7
Ci0gKHZvaWQpZHJhd0tub2I7Ci0gKHZvaWQpZHJhd0Jhckluc2lkZTooTlNSZWN0KWFSZWN0IGZs
aXBwZWQ6KEJPT0wpZmxpcHBlZDsKLSAoTlNSZWN0KXRyYWNrUmVjdDsKCgotICh2b2lkKSBzZXRT
bGlkZXJUeXBlOihOU1NsaWRlclR5cGUpc2xpZGVyVHlwZTsKLSAoTlNTbGlkZXJUeXBlKXNsaWRl
clR5cGU7CgoKQGVuZAoKQGludGVyZmFjZSBOU1NsaWRlckNlbGwoTlNUaWNrTWFya1N1cHBvcnQp
CgoKCi0gKHZvaWQpc2V0TnVtYmVyT2ZUaWNrTWFya3M6KE5TSW50ZWdlciljb3VudDsKLSAoTlNJ
bnRlZ2VyKW51bWJlck9mVGlja01hcmtzOwoKCgotICh2b2lkKXNldFRpY2tNYXJrUG9zaXRpb246
KE5TVGlja01hcmtQb3NpdGlvbilwb3NpdGlvbjsKLSAoTlNUaWNrTWFya1Bvc2l0aW9uKXRpY2tN
YXJrUG9zaXRpb247CgoKCgotICh2b2lkKXNldEFsbG93c1RpY2tNYXJrVmFsdWVzT25seTooQk9P
TCl5b3JuOwotIChCT09MKWFsbG93c1RpY2tNYXJrVmFsdWVzT25seTsKCgoKLSAoZG91YmxlKXRp
Y2tNYXJrVmFsdWVBdEluZGV4OihOU0ludGVnZXIpaW5kZXg7CgoKCi0gKE5TUmVjdClyZWN0T2ZU
aWNrTWFya0F0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKCgoKCi0gKE5TSW50ZWdlcilpbmRleE9m
VGlja01hcmtBdFBvaW50OihOU1BvaW50KXBvaW50OwoKLSAoZG91YmxlKWNsb3Nlc3RUaWNrTWFy
a1ZhbHVlVG9WYWx1ZTooZG91YmxlKXZhbHVlOwoKQGVuZAojIDEwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNTbGlkZXIuaCIgMiAzCgpAaW50
ZXJmYWNlIE5TU2xpZGVyIDogTlNDb250cm9sCgotIChkb3VibGUpbWluVmFsdWU7Ci0gKHZvaWQp
c2V0TWluVmFsdWU6KGRvdWJsZSlhRG91YmxlOwotIChkb3VibGUpbWF4VmFsdWU7Ci0gKHZvaWQp
c2V0TWF4VmFsdWU6KGRvdWJsZSlhRG91YmxlOwotICh2b2lkKXNldEFsdEluY3JlbWVudFZhbHVl
Oihkb3VibGUpaW5jVmFsdWU7Ci0gKGRvdWJsZSlhbHRJbmNyZW1lbnRWYWx1ZTsKLSAodm9pZClz
ZXRUaXRsZUNlbGw6KE5TQ2VsbCAqKWFDZWxsOwotIChpZCl0aXRsZUNlbGw7Ci0gKHZvaWQpc2V0
VGl0bGVDb2xvcjooTlNDb2xvciAqKW5ld0NvbG9yOwotIChOU0NvbG9yICopdGl0bGVDb2xvcjsK
LSAodm9pZClzZXRUaXRsZUZvbnQ6KE5TRm9udCAqKWZvbnRPYmo7Ci0gKE5TRm9udCAqKXRpdGxl
Rm9udDsKLSAoTlNTdHJpbmcgKil0aXRsZTsKLSAodm9pZClzZXRUaXRsZTooTlNTdHJpbmcgKilh
U3RyaW5nOwotICh2b2lkKXNldEtub2JUaGlja25lc3M6KENHRmxvYXQpYUZsb2F0OwotIChDR0Zs
b2F0KWtub2JUaGlja25lc3M7Ci0gKHZvaWQpc2V0SW1hZ2U6KE5TSW1hZ2UgKiliYWNrZ3JvdW5k
SW1hZ2U7Ci0gKE5TSW1hZ2UgKilpbWFnZTsKLSAoTlNJbnRlZ2VyKWlzVmVydGljYWw7Ci0gKEJP
T0wpYWNjZXB0c0ZpcnN0TW91c2U6KE5TRXZlbnQgKil0aGVFdmVudDsKCkBlbmQKCkBpbnRlcmZh
Y2UgTlNTbGlkZXIoTlNUaWNrTWFya1N1cHBvcnQpCgoKCi0gKHZvaWQpc2V0TnVtYmVyT2ZUaWNr
TWFya3M6KE5TSW50ZWdlciljb3VudDsKLSAoTlNJbnRlZ2VyKW51bWJlck9mVGlja01hcmtzOwoK
CgotICh2b2lkKXNldFRpY2tNYXJrUG9zaXRpb246KE5TVGlja01hcmtQb3NpdGlvbilwb3NpdGlv
bjsKLSAoTlNUaWNrTWFya1Bvc2l0aW9uKXRpY2tNYXJrUG9zaXRpb247CgoKCgotICh2b2lkKXNl
dEFsbG93c1RpY2tNYXJrVmFsdWVzT25seTooQk9PTCl5b3JuOwotIChCT09MKWFsbG93c1RpY2tN
YXJrVmFsdWVzT25seTsKCgoKLSAoZG91YmxlKXRpY2tNYXJrVmFsdWVBdEluZGV4OihOU0ludGVn
ZXIpaW5kZXg7CgoKCi0gKE5TUmVjdClyZWN0T2ZUaWNrTWFya0F0SW5kZXg6KE5TSW50ZWdlcilp
bmRleDsKCgoKCi0gKE5TSW50ZWdlcilpbmRleE9mVGlja01hcmtBdFBvaW50OihOU1BvaW50KXBv
aW50OwoKLSAoZG91YmxlKWNsb3Nlc3RUaWNrTWFya1ZhbHVlVG9WYWx1ZTooZG91YmxlKXZhbHVl
OwoKQGVuZAojIDg4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvQXBwS2l0LmgiIDIgMwoKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1Rva2VuRmllbGQuaCIgMSAzCgoKCgoKCgoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9O
U1RleHRDb250YWluZXIuaCIgMSAzCiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1RleHRDb250YWluZXIuaCIgMwpAY2xhc3MgTlNMYXlv
dXRNYW5hZ2VyOwpAY2xhc3MgTlNUZXh0VmlldzsKCgplbnVtIHsKICAgIE5TTGluZVN3ZWVwTGVm
dCA9IDAsCiAgICBOU0xpbmVTd2VlcFJpZ2h0ID0gMSwKICAgIE5TTGluZVN3ZWVwRG93biA9IDIs
CiAgICBOU0xpbmVTd2VlcFVwID0gMwp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNMaW5lU3dlZXBE
aXJlY3Rpb247CgoKZW51bSB7CiAgICBOU0xpbmVEb2VzbnRNb3ZlID0gMCwKICAgIE5TTGluZU1v
dmVzTGVmdCA9IDEsCiAgICBOU0xpbmVNb3Zlc1JpZ2h0ID0gMiwKICAgIE5TTGluZU1vdmVzRG93
biA9IDMsCiAgICBOU0xpbmVNb3Zlc1VwID0gNAp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNMaW5l
TW92ZW1lbnREaXJlY3Rpb247CgoKQGludGVyZmFjZSBOU1RleHRDb250YWluZXIgOiBOU09iamVj
dCA8TlNDb2Rpbmc+IHsKCgoKICBAcHJpdmF0ZQogICAgTlNMYXlvdXRNYW5hZ2VyICpfbGF5b3V0
TWFuYWdlcjsKICAgIE5TVGV4dFZpZXcgKl90ZXh0VmlldzsKICAgIE5TU2l6ZSBfc2l6ZTsKICAg
IENHRmxvYXQgX2xpbmVGcmFnbWVudFBhZGRpbmc7CiAgICBzdHJ1Y3QgX190Y0ZsYWdzIHsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB3aWR0aFRyYWNrc1RleHRWaWV3OjE7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgaGVpZ2h0VHJhY2tzVGV4dFZpZXc6MTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBv
YnNlcnZpbmdGcmFtZUNoYW5nZXM6MTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfcmVzZXJ2ZWQ6
MTM7CiAgICB9IF90Y0ZsYWdzOwp9CgoKCi0gKGlkKWluaXRXaXRoQ29udGFpbmVyU2l6ZTooTlNT
aXplKXNpemU7CgoKCi0gKE5TTGF5b3V0TWFuYWdlciAqKWxheW91dE1hbmFnZXI7Ci0gKHZvaWQp
c2V0TGF5b3V0TWFuYWdlcjooTlNMYXlvdXRNYW5hZ2VyICopbGF5b3V0TWFuYWdlcjsKCgotICh2
b2lkKXJlcGxhY2VMYXlvdXRNYW5hZ2VyOihOU0xheW91dE1hbmFnZXIgKiluZXdMYXlvdXRNYW5h
Z2VyOwoKCi0gKE5TVGV4dFZpZXcgKil0ZXh0VmlldzsKLSAodm9pZClzZXRUZXh0VmlldzooTlNU
ZXh0VmlldyAqKXRleHRWaWV3OwoKCi0gKHZvaWQpc2V0V2lkdGhUcmFja3NUZXh0VmlldzooQk9P
TClmbGFnOwotIChCT09MKXdpZHRoVHJhY2tzVGV4dFZpZXc7Ci0gKHZvaWQpc2V0SGVpZ2h0VHJh
Y2tzVGV4dFZpZXc6KEJPT0wpZmxhZzsKLSAoQk9PTCloZWlnaHRUcmFja3NUZXh0VmlldzsKCgoK
Ci0gKHZvaWQpc2V0Q29udGFpbmVyU2l6ZTooTlNTaXplKXNpemU7Ci0gKE5TU2l6ZSljb250YWlu
ZXJTaXplOwoKCi0gKHZvaWQpc2V0TGluZUZyYWdtZW50UGFkZGluZzooQ0dGbG9hdClwYWQ7Ci0g
KENHRmxvYXQpbGluZUZyYWdtZW50UGFkZGluZzsKCgoKCi0gKE5TUmVjdClsaW5lRnJhZ21lbnRS
ZWN0Rm9yUHJvcG9zZWRSZWN0OihOU1JlY3QpcHJvcG9zZWRSZWN0IHN3ZWVwRGlyZWN0aW9uOihO
U0xpbmVTd2VlcERpcmVjdGlvbilzd2VlcERpcmVjdGlvbiBtb3ZlbWVudERpcmVjdGlvbjooTlNM
aW5lTW92ZW1lbnREaXJlY3Rpb24pbW92ZW1lbnREaXJlY3Rpb24gcmVtYWluaW5nUmVjdDooTlNS
ZWN0UG9pbnRlcilyZW1haW5pbmdSZWN0OwoKCi0gKEJPT0wpaXNTaW1wbGVSZWN0YW5ndWxhclRl
eHRDb250YWluZXI7CgoKCgotIChCT09MKWNvbnRhaW5zUG9pbnQ6KE5TUG9pbnQpcG9pbnQ7CgoK
QGVuZAojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9OU1Rva2VuRmllbGQuaCIgMiAzCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1Rva2VuRmllbGRDZWxsLmgiIDEgMwojIDE0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUb2tl
bkZpZWxkQ2VsbC5oIiAzCkBjbGFzcyBOU011dGFibGVBcnJheSwgTlNNdXRhYmxlQ2hhcmFjdGVy
U2V0LCBOU011dGFibGVEaWN0aW9uYXJ5LCBOU1RleHRDb250YWluZXI7CkBwcm90b2NvbCBOU1Rv
a2VuRmllbGRDZWxsRGVsZWdhdGU7CgplbnVtIHsKICAgIE5TRGVmYXVsdFRva2VuU3R5bGUsCiAg
ICBOU1BsYWluVGV4dFRva2VuU3R5bGUsCiAgICBOU1JvdW5kZWRUb2tlblN0eWxlCn07CnR5cGVk
ZWYgTlNVSW50ZWdlciBOU1Rva2VuU3R5bGU7CgoKQGludGVyZmFjZSBOU1Rva2VuRmllbGRDZWxs
IDogTlNUZXh0RmllbGRDZWxsIHsKQHByaXZhdGUKICAgIE5TQ2hhcmFjdGVyU2V0ICpfdG9rZW5p
emluZ0NoYXJhY3RlclNldDsKICAgIGlkIF9kZWxlZ2F0ZTsKICAgIE5TVGltZUludGVydmFsIF9j
b21wbGV0aW9uRGVsYXk7CiAgICBpZCBfY2FjaGU7CiAgICBpZCBfZGVmYXVsdFRlcm1pbmF0b3I7
CiAgICBpZCBfdHJhY2tpbmdBcmVhOwogICAgaWQgX2xhc3RDZWxsOwogICAgTlNSZWN0IF9sYXN0
Q2VsbEZyYW1lOwogICAgaWQgX3Jlc2VydmVkWzddOwogICAgc3RydWN0IHsKICAgICAgICB1bnNp
Z25lZCBpbnQgX3N0eWxlOjQ7CgogICAgICAgIHVuc2lnbmVkIGludCBfaW52YWxpZENhY2hlOjE7
CiAgICAgICAgdW5zaWduZWQgaW50IF9pbkRpZENoYW5nZToxOwogICAgICAgIHVuc2lnbmVkIGlu
dCBfdmFsaWRhdGlvbkRpc2FibGVkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9wZW5kaW5nQ29t
cGxldGU6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX2F1dG9Db21wbGV0ZU1vZGU6MjsKICAgICAg
ICB1bnNpZ25lZCBpbnQgX2luVmFsaWRhdGVFZGl0aW5nOjE7CiAgICAgICAgdW5zaWduZWQgaW50
IF9wZXJmb3JtaW5nRHJvcDoxOwoKICAgICAgICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVkOjIwOwog
ICAgfSBfdGZjRmxhZ3M7Cn0KCgoKLSAodm9pZClzZXRUb2tlblN0eWxlOihOU1Rva2VuU3R5bGUp
c3R5bGU7Ci0gKE5TVG9rZW5TdHlsZSl0b2tlblN0eWxlOwoKCgotICh2b2lkKXNldENvbXBsZXRp
b25EZWxheTooTlNUaW1lSW50ZXJ2YWwpZGVsYXk7Ci0gKE5TVGltZUludGVydmFsKWNvbXBsZXRp
b25EZWxheTsKKyAoTlNUaW1lSW50ZXJ2YWwpZGVmYXVsdENvbXBsZXRpb25EZWxheTsKCi0gKHZv
aWQpc2V0VG9rZW5pemluZ0NoYXJhY3RlclNldDooTlNDaGFyYWN0ZXJTZXQgKiljaGFyYWN0ZXJT
ZXQ7Ci0gKE5TQ2hhcmFjdGVyU2V0ICopdG9rZW5pemluZ0NoYXJhY3RlclNldDsKKyAoTlNDaGFy
YWN0ZXJTZXQgKilkZWZhdWx0VG9rZW5pemluZ0NoYXJhY3RlclNldDsKCi0gKHZvaWQpc2V0RGVs
ZWdhdGU6KGlkIDxOU1Rva2VuRmllbGRDZWxsRGVsZWdhdGU+KWFuT2JqZWN0OwotIChpZCA8TlNU
b2tlbkZpZWxkQ2VsbERlbGVnYXRlPilkZWxlZ2F0ZTsKCkBlbmQKCkBwcm90b2NvbCBOU1Rva2Vu
RmllbGRDZWxsRGVsZWdhdGUgPE5TT2JqZWN0PgoKQG9wdGlvbmFsCgoKCgoKLSAoTlNBcnJheSAq
KXRva2VuRmllbGRDZWxsOihOU1Rva2VuRmllbGRDZWxsICopdG9rZW5GaWVsZENlbGwgY29tcGxl
dGlvbnNGb3JTdWJzdHJpbmc6KE5TU3RyaW5nICopc3Vic3RyaW5nIGluZGV4T2ZUb2tlbjooTlNJ
bnRlZ2VyKXRva2VuSW5kZXggaW5kZXhPZlNlbGVjdGVkSXRlbTooTlNJbnRlZ2VyICopc2VsZWN0
ZWRJbmRleDsKCgoKCi0gKE5TQXJyYXkgKil0b2tlbkZpZWxkQ2VsbDooTlNUb2tlbkZpZWxkQ2Vs
bCAqKXRva2VuRmllbGRDZWxsIHNob3VsZEFkZE9iamVjdHM6KE5TQXJyYXkgKil0b2tlbnMgYXRJ
bmRleDooTlNVSW50ZWdlcilpbmRleDsKCgoKLSAoTlNTdHJpbmcgKil0b2tlbkZpZWxkQ2VsbDoo
TlNUb2tlbkZpZWxkQ2VsbCAqKXRva2VuRmllbGRDZWxsIGRpc3BsYXlTdHJpbmdGb3JSZXByZXNl
bnRlZE9iamVjdDooaWQpcmVwcmVzZW50ZWRPYmplY3Q7Ci0gKE5TU3RyaW5nICopdG9rZW5GaWVs
ZENlbGw6KE5TVG9rZW5GaWVsZENlbGwgKil0b2tlbkZpZWxkQ2VsbCBlZGl0aW5nU3RyaW5nRm9y
UmVwcmVzZW50ZWRPYmplY3Q6KGlkKXJlcHJlc2VudGVkT2JqZWN0OwotIChpZCl0b2tlbkZpZWxk
Q2VsbDooTlNUb2tlbkZpZWxkQ2VsbCAqKXRva2VuRmllbGRDZWxsIHJlcHJlc2VudGVkT2JqZWN0
Rm9yRWRpdGluZ1N0cmluZzogKE5TU3RyaW5nICopZWRpdGluZ1N0cmluZzsKCgoKLSAoQk9PTCl0
b2tlbkZpZWxkQ2VsbDooTlNUb2tlbkZpZWxkQ2VsbCAqKXRva2VuRmllbGRDZWxsIHdyaXRlUmVw
cmVzZW50ZWRPYmplY3RzOihOU0FycmF5ICopb2JqZWN0cyB0b1Bhc3RlYm9hcmQ6KE5TUGFzdGVi
b2FyZCAqKXBib2FyZDsKCgotIChOU0FycmF5ICopdG9rZW5GaWVsZENlbGw6KE5TVG9rZW5GaWVs
ZENlbGwgKil0b2tlbkZpZWxkQ2VsbCByZWFkRnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAq
KXBib2FyZDsKCgotIChOU01lbnUgKil0b2tlbkZpZWxkQ2VsbDooTlNUb2tlbkZpZWxkQ2VsbCAq
KXRva2VuRmllbGRDZWxsIG1lbnVGb3JSZXByZXNlbnRlZE9iamVjdDooaWQpcmVwcmVzZW50ZWRP
YmplY3Q7Ci0gKEJPT0wpdG9rZW5GaWVsZENlbGw6KE5TVG9rZW5GaWVsZENlbGwgKil0b2tlbkZp
ZWxkQ2VsbCBoYXNNZW51Rm9yUmVwcmVzZW50ZWRPYmplY3Q6KGlkKXJlcHJlc2VudGVkT2JqZWN0
OwoKCi0gKE5TVG9rZW5TdHlsZSl0b2tlbkZpZWxkQ2VsbDooTlNUb2tlbkZpZWxkQ2VsbCAqKXRv
a2VuRmllbGRDZWxsIHN0eWxlRm9yUmVwcmVzZW50ZWRPYmplY3Q6KGlkKXJlcHJlc2VudGVkT2Jq
ZWN0OwoKQGVuZAojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvTlNUb2tlbkZpZWxkLmgiIDIgMwoKCkBwcm90b2NvbCBOU1Rva2VuRmllbGRE
ZWxlZ2F0ZTsKCgoKQGludGVyZmFjZSBOU1Rva2VuRmllbGQgOiBOU1RleHRGaWVsZCB7CiAgICBC
T09MIF9yZXNlcnZlZDE7CiAgICBCT09MIF9yZXNlcnZlZDI7CiAgICBCT09MIF9yZXNlcnZlZDM7
CiAgICBCT09MIF9yZXNlcnZlZDQ7CgogICAgTlNUcmFja2luZ1JlY3RUYWcgX3RyYWNraW5nUmVj
dFRhZzsKICAgIGlkIF9yZXNlcnZlZDU7CiAgICBpZCBfcmVzZXJ2ZWQ2OwogICAgaWQgX3Jlc2Vy
dmVkNzsKfQoKLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPE5TVG9rZW5GaWVsZERlbGVnYXRlPilh
bk9iamVjdDsKLSAoaWQgPE5TVG9rZW5GaWVsZERlbGVnYXRlPilkZWxlZ2F0ZTsKCgoKLSAodm9p
ZClzZXRUb2tlblN0eWxlOiAoTlNUb2tlblN0eWxlKSBzdHlsZTsKLSAoTlNUb2tlblN0eWxlKXRv
a2VuU3R5bGU7CgotICh2b2lkKXNldENvbXBsZXRpb25EZWxheTogKE5TVGltZUludGVydmFsKSBk
ZWxheTsKLSAoTlNUaW1lSW50ZXJ2YWwpY29tcGxldGlvbkRlbGF5OworIChOU1RpbWVJbnRlcnZh
bClkZWZhdWx0Q29tcGxldGlvbkRlbGF5OwoKLSAodm9pZClzZXRUb2tlbml6aW5nQ2hhcmFjdGVy
U2V0OihOU0NoYXJhY3RlclNldCAqKWNoYXJhY3RlclNldDsKLSAoTlNDaGFyYWN0ZXJTZXQgKil0
b2tlbml6aW5nQ2hhcmFjdGVyU2V0OworIChOU0NoYXJhY3RlclNldCAqKWRlZmF1bHRUb2tlbml6
aW5nQ2hhcmFjdGVyU2V0OwoKQGVuZAoKQHByb3RvY29sIE5TVG9rZW5GaWVsZERlbGVnYXRlIDxO
U1RleHRGaWVsZERlbGVnYXRlPgoKQG9wdGlvbmFsCgoKCgoKLSAoTlNBcnJheSAqKXRva2VuRmll
bGQ6KE5TVG9rZW5GaWVsZCAqKXRva2VuRmllbGQgY29tcGxldGlvbnNGb3JTdWJzdHJpbmc6KE5T
U3RyaW5nICopc3Vic3RyaW5nIGluZGV4T2ZUb2tlbjooTlNJbnRlZ2VyKXRva2VuSW5kZXggaW5k
ZXhPZlNlbGVjdGVkSXRlbTooTlNJbnRlZ2VyICopc2VsZWN0ZWRJbmRleDsKCgoKCi0gKE5TQXJy
YXkgKil0b2tlbkZpZWxkOihOU1Rva2VuRmllbGQgKil0b2tlbkZpZWxkIHNob3VsZEFkZE9iamVj
dHM6KE5TQXJyYXkgKil0b2tlbnMgYXRJbmRleDooTlNVSW50ZWdlcilpbmRleDsKCgoKLSAoTlNT
dHJpbmcgKil0b2tlbkZpZWxkOihOU1Rva2VuRmllbGQgKil0b2tlbkZpZWxkIGRpc3BsYXlTdHJp
bmdGb3JSZXByZXNlbnRlZE9iamVjdDooaWQpcmVwcmVzZW50ZWRPYmplY3Q7Ci0gKE5TU3RyaW5n
ICopdG9rZW5GaWVsZDooTlNUb2tlbkZpZWxkICopdG9rZW5GaWVsZCBlZGl0aW5nU3RyaW5nRm9y
UmVwcmVzZW50ZWRPYmplY3Q6KGlkKXJlcHJlc2VudGVkT2JqZWN0OwotIChpZCl0b2tlbkZpZWxk
OihOU1Rva2VuRmllbGQgKil0b2tlbkZpZWxkIHJlcHJlc2VudGVkT2JqZWN0Rm9yRWRpdGluZ1N0
cmluZzogKE5TU3RyaW5nICopZWRpdGluZ1N0cmluZzsKCgoKLSAoQk9PTCl0b2tlbkZpZWxkOihO
U1Rva2VuRmllbGQgKil0b2tlbkZpZWxkIHdyaXRlUmVwcmVzZW50ZWRPYmplY3RzOihOU0FycmF5
ICopb2JqZWN0cyB0b1Bhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBib2FyZDsKCgotIChOU0Fy
cmF5ICopdG9rZW5GaWVsZDooTlNUb2tlbkZpZWxkICopdG9rZW5GaWVsZCByZWFkRnJvbVBhc3Rl
Ym9hcmQ6KE5TUGFzdGVib2FyZCAqKXBib2FyZDsKCgotIChOU01lbnUgKil0b2tlbkZpZWxkOihO
U1Rva2VuRmllbGQgKil0b2tlbkZpZWxkIG1lbnVGb3JSZXByZXNlbnRlZE9iamVjdDooaWQpcmVw
cmVzZW50ZWRPYmplY3Q7Ci0gKEJPT0wpdG9rZW5GaWVsZDooTlNUb2tlbkZpZWxkICopdG9rZW5G
aWVsZCBoYXNNZW51Rm9yUmVwcmVzZW50ZWRPYmplY3Q6KGlkKXJlcHJlc2VudGVkT2JqZWN0OwoK
Ci0gKE5TVG9rZW5TdHlsZSl0b2tlbkZpZWxkOihOU1Rva2VuRmllbGQgKil0b2tlbkZpZWxkIHN0
eWxlRm9yUmVwcmVzZW50ZWRPYmplY3Q6KGlkKXJlcHJlc2VudGVkT2JqZWN0OwoKQGVuZAojIDk1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBw
S2l0LmgiIDIgMwojIDEwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL0FwcEtpdC5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQ29tYm9Cb3guaCIgMSAzCiMgMTAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0NvbWJvQm94Lmgi
IDMKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNDb21ib0JveFdpbGxQb3BVcE5vdGlmaWNhdGlvbjsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNDb21ib0JveFdpbGxEaXNtaXNzTm90aWZpY2F0aW9uOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpOU0NvbWJvQm94U2VsZWN0aW9uRGlkQ2hhbmdlTm90aWZpY2F0
aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0NvbWJvQm94U2VsZWN0aW9uSXNDaGFuZ2luZ05v
dGlmaWNhdGlvbjsKCkBwcm90b2NvbCBOU0NvbWJvQm94RGVsZWdhdGUsIE5TQ29tYm9Cb3hEYXRh
U291cmNlOwoKQGludGVyZmFjZSBOU0NvbWJvQm94IDogTlNUZXh0RmllbGQgewoKICAgIGlkIF9k
YXRhU291cmNlOwp9CgotIChCT09MKWhhc1ZlcnRpY2FsU2Nyb2xsZXI7Ci0gKHZvaWQpc2V0SGFz
VmVydGljYWxTY3JvbGxlcjooQk9PTClmbGFnOwotIChOU1NpemUpaW50ZXJjZWxsU3BhY2luZzsK
LSAodm9pZClzZXRJbnRlcmNlbGxTcGFjaW5nOihOU1NpemUpYVNpemU7Ci0gKENHRmxvYXQpaXRl
bUhlaWdodDsKLSAodm9pZClzZXRJdGVtSGVpZ2h0OihDR0Zsb2F0KWl0ZW1IZWlnaHQ7Ci0gKE5T
SW50ZWdlciludW1iZXJPZlZpc2libGVJdGVtczsKLSAodm9pZClzZXROdW1iZXJPZlZpc2libGVJ
dGVtczooTlNJbnRlZ2VyKXZpc2libGVJdGVtczsKCgotICh2b2lkKXNldEJ1dHRvbkJvcmRlcmVk
OihCT09MKWZsYWc7Ci0gKEJPT0wpaXNCdXR0b25Cb3JkZXJlZDsKCgotICh2b2lkKXJlbG9hZERh
dGE7Ci0gKHZvaWQpbm90ZU51bWJlck9mSXRlbXNDaGFuZ2VkOwoKLSAodm9pZClzZXRVc2VzRGF0
YVNvdXJjZTooQk9PTClmbGFnOwotIChCT09MKXVzZXNEYXRhU291cmNlOwoKLSAodm9pZClzY3Jv
bGxJdGVtQXRJbmRleFRvVG9wOihOU0ludGVnZXIpaW5kZXg7Ci0gKHZvaWQpc2Nyb2xsSXRlbUF0
SW5kZXhUb1Zpc2libGU6KE5TSW50ZWdlcilpbmRleDsKCi0gKHZvaWQpc2VsZWN0SXRlbUF0SW5k
ZXg6KE5TSW50ZWdlcilpbmRleDsKLSAodm9pZClkZXNlbGVjdEl0ZW1BdEluZGV4OihOU0ludGVn
ZXIpaW5kZXg7Ci0gKE5TSW50ZWdlcilpbmRleE9mU2VsZWN0ZWRJdGVtOwotIChOU0ludGVnZXIp
bnVtYmVyT2ZJdGVtczsKCi0gKEJPT0wpY29tcGxldGVzOwotICh2b2lkKXNldENvbXBsZXRlczoo
Qk9PTCljb21wbGV0ZXM7CgotIChpZCA8TlNDb21ib0JveERlbGVnYXRlPilkZWxlZ2F0ZTsKLSAo
dm9pZClzZXREZWxlZ2F0ZTooaWQgPE5TQ29tYm9Cb3hEZWxlZ2F0ZT4pYW5PYmplY3Q7CgoKLSAo
aWQgPE5TQ29tYm9Cb3hEYXRhU291cmNlPilkYXRhU291cmNlOwotICh2b2lkKXNldERhdGFTb3Vy
Y2U6KGlkIDxOU0NvbWJvQm94RGF0YVNvdXJjZT4pYVNvdXJjZTsKCgotICh2b2lkKWFkZEl0ZW1X
aXRoT2JqZWN0VmFsdWU6KGlkKW9iamVjdDsKLSAodm9pZClhZGRJdGVtc1dpdGhPYmplY3RWYWx1
ZXM6KE5TQXJyYXkgKilvYmplY3RzOwotICh2b2lkKWluc2VydEl0ZW1XaXRoT2JqZWN0VmFsdWU6
KGlkKW9iamVjdCBhdEluZGV4OihOU0ludGVnZXIpaW5kZXg7Ci0gKHZvaWQpcmVtb3ZlSXRlbVdp
dGhPYmplY3RWYWx1ZTooaWQpb2JqZWN0OwotICh2b2lkKXJlbW92ZUl0ZW1BdEluZGV4OihOU0lu
dGVnZXIpaW5kZXg7Ci0gKHZvaWQpcmVtb3ZlQWxsSXRlbXM7Ci0gKHZvaWQpc2VsZWN0SXRlbVdp
dGhPYmplY3RWYWx1ZTooaWQpb2JqZWN0OwotIChpZClpdGVtT2JqZWN0VmFsdWVBdEluZGV4OihO
U0ludGVnZXIpaW5kZXg7Ci0gKGlkKW9iamVjdFZhbHVlT2ZTZWxlY3RlZEl0ZW07Ci0gKE5TSW50
ZWdlcilpbmRleE9mSXRlbVdpdGhPYmplY3RWYWx1ZTooaWQpb2JqZWN0OwotIChOU0FycmF5ICop
b2JqZWN0VmFsdWVzOwoKQGVuZAoKQHByb3RvY29sIE5TQ29tYm9Cb3hEYXRhU291cmNlIDxOU09i
amVjdD4KQG9wdGlvbmFsCgotIChOU0ludGVnZXIpbnVtYmVyT2ZJdGVtc0luQ29tYm9Cb3g6KE5T
Q29tYm9Cb3ggKilhQ29tYm9Cb3g7Ci0gKGlkKWNvbWJvQm94OihOU0NvbWJvQm94ICopYUNvbWJv
Qm94IG9iamVjdFZhbHVlRm9ySXRlbUF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKCi0gKE5TVUlu
dGVnZXIpY29tYm9Cb3g6KE5TQ29tYm9Cb3ggKilhQ29tYm9Cb3ggaW5kZXhPZkl0ZW1XaXRoU3Ry
aW5nVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nOwotIChOU1N0cmluZyAqKWNvbWJvQm94OihOU0Nv
bWJvQm94ICopYUNvbWJvQm94IGNvbXBsZXRlZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmc7CkBl
bmQKCkBwcm90b2NvbCBOU0NvbWJvQm94RGVsZWdhdGUgPE5TVGV4dEZpZWxkRGVsZWdhdGU+CkBv
cHRpb25hbAoKCi0gKHZvaWQpY29tYm9Cb3hXaWxsUG9wVXA6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uOwotICh2b2lkKWNvbWJvQm94V2lsbERpc21pc3M6KE5TTm90aWZpY2F0aW9uICop
bm90aWZpY2F0aW9uOwotICh2b2lkKWNvbWJvQm94U2VsZWN0aW9uRGlkQ2hhbmdlOihOU05vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLSAodm9pZCljb21ib0JveFNlbGVjdGlvbklzQ2hhbmdp
bmc6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwoKQGVuZAojIDEwNCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
TlNDb21ib0JveENlbGwuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0NvbWJvQm94Q2VsbC5oIiAzCkBjbGFzcyBOU0J1dHRv
bkNlbGwsIE5TVGFibGVWaWV3LCBOU011dGFibGVBcnJheTsKQHByb3RvY29sIE5TQ29tYm9Cb3hD
ZWxsRGF0YVNvdXJjZTsKCkBpbnRlcmZhY2UgTlNDb21ib0JveENlbGwgOiBOU1RleHRGaWVsZENl
bGwgewoKICAgIGlkIF9kZWxlZ2F0ZTsKICAgIGlkIF9kYXRhU291cmNlOwogICAgc3RydWN0IF9f
Y2JjRmxhZ3MgewogICAgICAgIHVuc2lnbmVkIGludCB1c2VzRGF0YVNvdXJjZToxOwogICAgICAg
IHVuc2lnbmVkIGludCBjb21wbGV0ZXM6MTsKIHVuc2lnbmVkIGludCBidXR0b25Cb3JkZXJlZDox
OwogICAgICAgIHVuc2lnbmVkIGludCBwb3BVcElzVXA6MTsKIHVuc2lnbmVkIGludCBmaWx0ZXJp
bmdFdmVudHM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZHJhd2luZzoxOwogICAgICAgIHVuc2ln
bmVkIGludCBzeW5jaHJvbml6aW5nU2VsZWN0aW9uOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHJl
c2VydmVkOjk7CiB1bnNpZ25lZCBpbnQgdmlzaWJsZUl0ZW1zOjE2OwogICAgfSBfY2JjRmxhZ3M7
CiAgICBOU0J1dHRvbkNlbGwgKl9idXR0b25DZWxsOwogICAgTlNUYWJsZVZpZXcgKl90YWJsZVZp
ZXc7CiAgICBOU1Njcm9sbFZpZXcgKl9zY3JvbGxWaWV3OwogICAgTlNXaW5kb3cgKl9wb3BVcDsK
ICAgIE5TTXV0YWJsZUFycmF5ICpfcG9wVXBMaXN0OwogICAgTlNSZWN0ICpfY2VsbEZyYW1lOwog
ICAgdm9pZCAqX3Jlc2VydmVkOwogfQoKLSAoQk9PTCloYXNWZXJ0aWNhbFNjcm9sbGVyOwotICh2
b2lkKXNldEhhc1ZlcnRpY2FsU2Nyb2xsZXI6KEJPT0wpZmxhZzsKLSAoTlNTaXplKWludGVyY2Vs
bFNwYWNpbmc7Ci0gKHZvaWQpc2V0SW50ZXJjZWxsU3BhY2luZzooTlNTaXplKWFTaXplOwotIChD
R0Zsb2F0KWl0ZW1IZWlnaHQ7Ci0gKHZvaWQpc2V0SXRlbUhlaWdodDooQ0dGbG9hdClpdGVtSGVp
Z2h0OwotIChOU0ludGVnZXIpbnVtYmVyT2ZWaXNpYmxlSXRlbXM7Ci0gKHZvaWQpc2V0TnVtYmVy
T2ZWaXNpYmxlSXRlbXM6KE5TSW50ZWdlcil2aXNpYmxlSXRlbXM7CgoKLSAodm9pZClzZXRCdXR0
b25Cb3JkZXJlZDooQk9PTClmbGFnOwotIChCT09MKWlzQnV0dG9uQm9yZGVyZWQ7CgoKLSAodm9p
ZClyZWxvYWREYXRhOwotICh2b2lkKW5vdGVOdW1iZXJPZkl0ZW1zQ2hhbmdlZDsKCi0gKHZvaWQp
c2V0VXNlc0RhdGFTb3VyY2U6KEJPT0wpZmxhZzsKLSAoQk9PTCl1c2VzRGF0YVNvdXJjZTsKCi0g
KHZvaWQpc2Nyb2xsSXRlbUF0SW5kZXhUb1RvcDooTlNJbnRlZ2VyKWluZGV4OwotICh2b2lkKXNj
cm9sbEl0ZW1BdEluZGV4VG9WaXNpYmxlOihOU0ludGVnZXIpaW5kZXg7CgotICh2b2lkKXNlbGVj
dEl0ZW1BdEluZGV4OihOU0ludGVnZXIpaW5kZXg7Ci0gKHZvaWQpZGVzZWxlY3RJdGVtQXRJbmRl
eDooTlNJbnRlZ2VyKWluZGV4OwotIChOU0ludGVnZXIpaW5kZXhPZlNlbGVjdGVkSXRlbTsKLSAo
TlNJbnRlZ2VyKW51bWJlck9mSXRlbXM7CgotIChCT09MKWNvbXBsZXRlczsKLSAodm9pZClzZXRD
b21wbGV0ZXM6KEJPT0wpY29tcGxldGVzOwotIChOU1N0cmluZyAqKWNvbXBsZXRlZFN0cmluZzoo
TlNTdHJpbmcgKilzdHJpbmc7CgoKLSAoaWQgPE5TQ29tYm9Cb3hDZWxsRGF0YVNvdXJjZT4pZGF0
YVNvdXJjZTsKLSAodm9pZClzZXREYXRhU291cmNlOihpZCA8TlNDb21ib0JveENlbGxEYXRhU291
cmNlPilhU291cmNlOwoKCi0gKHZvaWQpYWRkSXRlbVdpdGhPYmplY3RWYWx1ZTooaWQpb2JqZWN0
OwotICh2b2lkKWFkZEl0ZW1zV2l0aE9iamVjdFZhbHVlczooTlNBcnJheSAqKW9iamVjdHM7Ci0g
KHZvaWQpaW5zZXJ0SXRlbVdpdGhPYmplY3RWYWx1ZTooaWQpb2JqZWN0IGF0SW5kZXg6KE5TSW50
ZWdlcilpbmRleDsKLSAodm9pZClyZW1vdmVJdGVtV2l0aE9iamVjdFZhbHVlOihpZClvYmplY3Q7
Ci0gKHZvaWQpcmVtb3ZlSXRlbUF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKLSAodm9pZClyZW1v
dmVBbGxJdGVtczsKLSAodm9pZClzZWxlY3RJdGVtV2l0aE9iamVjdFZhbHVlOihpZClvYmplY3Q7
Ci0gKGlkKWl0ZW1PYmplY3RWYWx1ZUF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKLSAoaWQpb2Jq
ZWN0VmFsdWVPZlNlbGVjdGVkSXRlbTsKLSAoTlNJbnRlZ2VyKWluZGV4T2ZJdGVtV2l0aE9iamVj
dFZhbHVlOihpZClvYmplY3Q7Ci0gKE5TQXJyYXkgKilvYmplY3RWYWx1ZXM7CgpAZW5kCgpAcHJv
dG9jb2wgTlNDb21ib0JveENlbGxEYXRhU291cmNlIDxOU09iamVjdD4KQG9wdGlvbmFsCgotIChO
U0ludGVnZXIpbnVtYmVyT2ZJdGVtc0luQ29tYm9Cb3hDZWxsOihOU0NvbWJvQm94Q2VsbCAqKWNv
bWJvQm94Q2VsbDsKLSAoaWQpY29tYm9Cb3hDZWxsOihOU0NvbWJvQm94Q2VsbCAqKWFDb21ib0Jv
eENlbGwgb2JqZWN0VmFsdWVGb3JJdGVtQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4OwoKLSAoTlNV
SW50ZWdlciljb21ib0JveENlbGw6KE5TQ29tYm9Cb3hDZWxsICopYUNvbWJvQm94Q2VsbCBpbmRl
eE9mSXRlbVdpdGhTdHJpbmdWYWx1ZTooTlNTdHJpbmcgKilzdHJpbmc7Ci0gKE5TU3RyaW5nICop
Y29tYm9Cb3hDZWxsOihOU0NvbWJvQm94Q2VsbCAqKWFDb21ib0JveENlbGwgY29tcGxldGVkU3Ry
aW5nOihOU1N0cmluZyAqKXVuY29tcGxldGVkU3RyaW5nOwpAZW5kCiMgMTA1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9O
U1RhYmxlQ29sdW1uLmgiIDEgMwojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUYWJsZUNvbHVtbi5oIiAzCkBjbGFzcyBOU1RhYmxlVmll
dzsKQGNsYXNzIE5TQ2VsbDsKQGNsYXNzIE5TSW1hZ2U7CkBjbGFzcyBOU1NvcnREZXNjcmlwdG9y
OwoKQGludGVyZmFjZSBOU1RhYmxlQ29sdW1uIDogTlNPYmplY3QgPE5TQ29kaW5nPgp7CgogICAg
aWQgX2lkZW50aWZpZXI7CiAgICBDR0Zsb2F0IF93aWR0aDsKICAgIENHRmxvYXQgX21pbldpZHRo
OwogICAgQ0dGbG9hdCBfbWF4V2lkdGg7CiAgICBOU1RhYmxlVmlldyAqX3RhYmxlVmlldzsKICAg
IE5TQ2VsbCAqX2hlYWRlckNlbGw7CiAgICBOU0NlbGwgKl9kYXRhQ2VsbDsKICAgIHN0cnVjdCBf
X2NvbEZsYWdzIHsKICAgICAgICB1bnNpZ25lZCBpbnQgb2xkSXNSZXNpemFibGU6MTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgaXNFZGl0YWJsZToxOwogICAgICAgIHVuc2lnbmVkIGludCByZXNpemVk
UG9zdGluZ0Rpc2FibGVDb3VudDo4OwogICAgICAgIHVuc2lnbmVkIGludCBjYW5Vc2VSZW9yZGVy
UmVzaXplSW1hZ2VDYWNoZToxOwogICAgICAgIHVuc2lnbmVkIGludCB1c2VyUmVzaXppbmdBbGxv
d2VkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGF1dG9SZXNpemluZ0FsbG93ZWQ6MTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgaGlkZGVuOjE7CiAgICAgICAgdW5zaWduZWQgaW50IFJFU0VSVkVEOjE4
OwogICAgfSBfY0ZsYWdzOwogICAgaWQgX3RjQXV4aWxpYXJ5U3RvcmFnZTsKfQoKCgotIChpZClp
bml0V2l0aElkZW50aWZpZXI6KGlkKWlkZW50aWZpZXI7CgoKCi0gKHZvaWQpc2V0SWRlbnRpZmll
cjooaWQpaWRlbnRpZmllcjsKLSAoaWQpaWRlbnRpZmllcjsKCi0gKHZvaWQpc2V0VGFibGVWaWV3
OihOU1RhYmxlVmlldyAqKXRhYmxlVmlldzsKLSAoTlNUYWJsZVZpZXcgKil0YWJsZVZpZXc7CgoK
Ci0gKHZvaWQpc2V0V2lkdGg6KENHRmxvYXQpd2lkdGg7Ci0gKENHRmxvYXQpd2lkdGg7CgoKCi0g
KHZvaWQpc2V0TWluV2lkdGg6KENHRmxvYXQpbWluV2lkdGg7Ci0gKENHRmxvYXQpbWluV2lkdGg7
CgoKCi0gKHZvaWQpc2V0TWF4V2lkdGg6KENHRmxvYXQpbWF4V2lkdGg7Ci0gKENHRmxvYXQpbWF4
V2lkdGg7CgoKCi0gKHZvaWQpc2V0SGVhZGVyQ2VsbDooTlNDZWxsICopY2VsbDsKLSAoaWQpaGVh
ZGVyQ2VsbDsKCgoKLSAodm9pZClzZXREYXRhQ2VsbDooTlNDZWxsICopY2VsbDsKLSAoaWQpZGF0
YUNlbGw7CgoKCi0gKGlkKWRhdGFDZWxsRm9yUm93OihOU0ludGVnZXIpcm93OwoKCgotICh2b2lk
KXNldEVkaXRhYmxlOihCT09MKWZsYWc7Ci0gKEJPT0wpaXNFZGl0YWJsZTsKCi0gKHZvaWQpc2l6
ZVRvRml0OwoKCgotICh2b2lkKXNldFNvcnREZXNjcmlwdG9yUHJvdG90eXBlOihOU1NvcnREZXNj
cmlwdG9yICopc29ydERlc2NyaXB0b3IgOwotIChOU1NvcnREZXNjcmlwdG9yICopc29ydERlc2Ny
aXB0b3JQcm90b3R5cGUgOwoKCgotICh2b2lkKXNldFJlc2l6aW5nTWFzazooTlNVSW50ZWdlcily
ZXNpemluZ01hc2sgOwotIChOU1VJbnRlZ2VyKXJlc2l6aW5nTWFzayA7CgplbnVtIHsKICAgIE5T
VGFibGVDb2x1bW5Ob1Jlc2l6aW5nID0gMCwKICAgIE5TVGFibGVDb2x1bW5BdXRvcmVzaXppbmdN
YXNrID0gKCAxIDw8IDAgKSwKICAgIE5TVGFibGVDb2x1bW5Vc2VyUmVzaXppbmdNYXNrID0gKCAx
IDw8IDEgKSwKfTsKCgoKLSAodm9pZClzZXRIZWFkZXJUb29sVGlwOihOU1N0cmluZyAqKXN0cmlu
ZyA7Ci0gKE5TU3RyaW5nICopaGVhZGVyVG9vbFRpcCA7CgoKCi0gKEJPT0wpaXNIaWRkZW4gOwot
ICh2b2lkKXNldEhpZGRlbjooQk9PTCloaWRkZW4gOwoKQGVuZAoKCgoKCkBpbnRlcmZhY2UgTlNU
YWJsZUNvbHVtbihOU0RlcHJlY2F0ZWQpCgoKCi0gKHZvaWQpc2V0UmVzaXphYmxlOihCT09MKWZs
YWcgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotIChCT09MKWlzUmVzaXphYmxlIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCkBlbmQKIyAxMDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGFibGVIZWFk
ZXJDZWxsLmgiIDEgMwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9OU1RhYmxlSGVhZGVyQ2VsbC5oIiAzCkBpbnRlcmZhY2UgTlNUYWJsZUhl
YWRlckNlbGwgOiBOU1RleHRGaWVsZENlbGwgewoKfQoKCgotICh2b2lkKWRyYXdTb3J0SW5kaWNh
dG9yV2l0aEZyYW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzooTlNWaWV3ICopY29udHJvbFZp
ZXcgYXNjZW5kaW5nOihCT09MKWFzY2VuZGluZyBwcmlvcml0eTooTlNJbnRlZ2VyKXByaW9yaXR5
IDsKCgoKLSAoTlNSZWN0KXNvcnRJbmRpY2F0b3JSZWN0Rm9yQm91bmRzOihOU1JlY3QpdGhlUmVj
dCA7CgpAZW5kCiMgMTA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1RhYmxlSGVhZGVyVmlldy5oIiAxIDMKIyAxMCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGFi
bGVIZWFkZXJWaWV3LmgiIDMKQGNsYXNzIE5TVGFibGVWaWV3OwpAY2xhc3MgTlNDb2xvcjsKQGNs
YXNzIE5TSW1hZ2U7CkBjbGFzcyBOU0N1cnNvcjsKCkBpbnRlcmZhY2UgTlNUYWJsZUhlYWRlclZp
ZXcgOiBOU1ZpZXcKewoKICAgIE5TVGFibGVWaWV3ICpfdGFibGVWaWV3OwogICAgTlNJbnRlZ2Vy
IF9yZXNpemVkQ29sdW1uOwogICAgTlNJbnRlZ2VyIF9kcmFnZ2VkQ29sdW1uOwogICAgTlNJbnRl
Z2VyIF9wcmVzc2VkQ29sdW1uOwogICAgTlNJbWFnZSAqX2hlYWRlckRyYWdJbWFnZTsKICAgIENH
RmxvYXQgX2RyYWdnZWREaXN0YW5jZTsKICAgIEJPT0wgX2lzQ29sdW1uUmVzaXppbmc7CiAgICBC
T09MIF9zaG93SGFuZEN1cnNvckZpcmVkOwogICAgQk9PTCBfdG9vbFRpcFJlY3RzRGlydHk7CiAg
ICBCT09MIF9hbGlnblRpdGxlV2l0aERhdGFDZWxsOwogICAgQk9PTCBfc2tpcERyYXdpbmdTZXBh
cmF0b3I7CiAgICBpZCBfcmVzZXJ2ZWQ7Cn0KCi0gKHZvaWQpc2V0VGFibGVWaWV3OihOU1RhYmxl
VmlldyAqKXRhYmxlVmlldzsKLSAoTlNUYWJsZVZpZXcgKil0YWJsZVZpZXc7Ci0gKE5TSW50ZWdl
cilkcmFnZ2VkQ29sdW1uOwotIChDR0Zsb2F0KWRyYWdnZWREaXN0YW5jZTsKLSAoTlNJbnRlZ2Vy
KXJlc2l6ZWRDb2x1bW47Ci0gKE5TUmVjdCloZWFkZXJSZWN0T2ZDb2x1bW46KE5TSW50ZWdlcilj
b2x1bW47Ci0gKE5TSW50ZWdlciljb2x1bW5BdFBvaW50OihOU1BvaW50KXBvaW50OwoKQGVuZAoj
IDEwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJz
L0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvTlNUYWJsZVZpZXcuaCIgMSAzCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1RhYmxlVmlldy5oIiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGV4
dFZpZXcuaCIgMSAzCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9OU1RleHRWaWV3LmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNJbnB1dE1hbmFnZXIuaCIgMSAzCiMgMTIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0lu
cHV0TWFuYWdlci5oIiAzCkBjbGFzcyBOU0FycmF5LCBOU0F0dHJpYnV0ZWRTdHJpbmcsIE5TRXZl
bnQsIE5TSW5wdXRTZXJ2ZXIsIE5TSW1hZ2U7CgoKCkBwcm90b2NvbCBOU1RleHRJbnB1dAoKLSAo
dm9pZCkgaW5zZXJ0VGV4dDooaWQpYVN0cmluZzsKLSAodm9pZCkgZG9Db21tYW5kQnlTZWxlY3Rv
cjooU0VMKWFTZWxlY3RvcjsKCi0gKHZvaWQpIHNldE1hcmtlZFRleHQ6KGlkKWFTdHJpbmcgc2Vs
ZWN0ZWRSYW5nZTooTlNSYW5nZSlzZWxSYW5nZTsKCi0gKHZvaWQpIHVubWFya1RleHQ7Ci0gKEJP
T0wpIGhhc01hcmtlZFRleHQ7Ci0gKE5TSW50ZWdlcikgY29udmVyc2F0aW9uSWRlbnRpZmllcjsK
CgoKLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopIGF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6
KE5TUmFuZ2UpdGhlUmFuZ2U7CgoKCi0gKE5TUmFuZ2UpIG1hcmtlZFJhbmdlOwoKCgotIChOU1Jh
bmdlKSBzZWxlY3RlZFJhbmdlOwoKCgotIChOU1JlY3QpIGZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlOihOU1JhbmdlKXRoZVJhbmdlOwoKCgotIChOU1VJbnRlZ2VyKWNoYXJhY3RlckluZGV4Rm9y
UG9pbnQ6KE5TUG9pbnQpdGhlUG9pbnQ7CgoKCi0gKE5TQXJyYXkqKSB2YWxpZEF0dHJpYnV0ZXNG
b3JNYXJrZWRUZXh0OwoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TSW5wdXRNYW5hZ2VyIDogTlNPYmpl
Y3QgPE5TVGV4dElucHV0PiB7CgpAcHJpdmF0ZQogICAgaWQgX2N1cnJlbnRDbGllbnQ7CiAgICBp
ZCBfc2VydmVyOwogICAgaWQgX2J1bmRsZU9iajsKICAgIGlkIF9rZXliaW5kaW5nczsKICAgIE5T
U3RyaW5nICpfdHJ1ZU5hbWU7CiAgICBOU1N0cmluZyAqX2Nvbm5lY3Rpb25OYW1lOwogICAgTlNT
dHJpbmcgKl9ob3N0TmFtZTsKICAgIE5TU3RyaW5nICpfcHJvY1RvRXhlYzsKICAgIE5TU3RyaW5n
ICpfdmlzaWJsZU5hbWU7CiAgICBOU1N0cmluZyAqX2J1bmRsZU5hbWU7CiAgICBOU1N0cmluZyAq
X2xhbmd1YWdlOwogICAgTlNJbWFnZSAqX2ltYWdlOwogICAgdW5zaWduZWQgaW50IF9mbGFnczsK
ICAgIE5TU3RyaW5nICpfa2V5QmluZGluZ3NOYW1lOwogICAgaW50IF9yZXNlcnZlZElucHV0TWFu
YWdlcjI7Cn0KCgoKKyAoTlNJbnB1dE1hbmFnZXIgKikgY3VycmVudElucHV0TWFuYWdlcjsKCgoK
KyAodm9pZCljeWNsZVRvTmV4dElucHV0TGFuZ3VhZ2U6KGlkKXNlbmRlcjsKKyAodm9pZCljeWNs
ZVRvTmV4dElucHV0U2VydmVySW5MYW5ndWFnZTooaWQpc2VuZGVyOwoKLSAoTlNJbnB1dE1hbmFn
ZXIgKikgaW5pdFdpdGhOYW1lOihOU1N0cmluZyAqKWlucHV0U2VydmVyTmFtZSBob3N0OihOU1N0
cmluZyAqKWhvc3ROYW1lIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCi0gKE5TU3RyaW5n
ICopIGxvY2FsaXplZElucHV0TWFuYWdlck5hbWUgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
OwoKCgoKLSAodm9pZCkgbWFya2VkVGV4dEFiYW5kb25lZDooaWQpY2xpOwotICh2b2lkKSBtYXJr
ZWRUZXh0U2VsZWN0aW9uQ2hhbmdlZDooTlNSYW5nZSluZXdTZWwgY2xpZW50OihpZCljbGk7CgoK
Ci0gKEJPT0wpIHdhbnRzVG9JbnRlcnByZXRBbGxLZXlzdHJva2VzIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKCi0gKE5TU3RyaW5nKikgbGFuZ3VhZ2UgX19hdHRyaWJ1dGVfXygoZGVwcmVj
YXRlZCkpOwoKLSAoTlNJbWFnZSAqKSBpbWFnZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CgotIChOU0lucHV0U2VydmVyICopIHNlcnZlciBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CgoKCi0gKEJPT0wpIHdhbnRzVG9IYW5kbGVNb3VzZUV2ZW50czsKCi0gKEJPT0wpIGhhbmRsZU1v
dXNlRXZlbnQ6KE5TRXZlbnQqKXRoZU1vdXNlRXZlbnQ7CgoKCi0gKEJPT0wpIHdhbnRzVG9EZWxh
eVRleHRDaGFuZ2VOb3RpZmljYXRpb25zIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKQGVu
ZAojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNUZXh0Vmlldy5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUZXh0QXR0YWNobWVudC5oIiAxIDMKIyAxNyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGV4dEF0dGFj
aG1lbnQuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9OU0F0dHJpYnV0ZWRTdHJpbmcuaCIgMSAzCiMgMTQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0F0dHJpYnV0ZWRTdHJpbmcu
aCIgMwpAY2xhc3MgTlNGaWxlV3JhcHBlciwgTlNVUkwsIE5TVGV4dEJsb2NrLCBOU1RleHRUYWJs
ZSwgTlNUZXh0TGlzdDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGb250QXR0cmlidXRlTmFt
ZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWU7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKk5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWU7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKk5TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5T
QXR0YWNobWVudEF0dHJpYnV0ZU5hbWU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TTGlnYXR1cmVB
dHRyaWJ1dGVOYW1lOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0Jhc2VsaW5lT2Zmc2V0QXR0cmli
dXRlTmFtZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNLZXJuQXR0cmlidXRlTmFtZTsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqTlNMaW5rQXR0cmlidXRlTmFtZTsKCmV4dGVybiAiQyIgTlNTdHJpbmcg
Kk5TU3Ryb2tlV2lkdGhBdHRyaWJ1dGVOYW1lIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNTdHJv
a2VDb2xvckF0dHJpYnV0ZU5hbWUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1VuZGVybGluZUNv
bG9yQXR0cmlidXRlTmFtZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TU3RyaWtldGhyb3VnaFN0
eWxlQXR0cmlidXRlTmFtZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TU3RyaWtldGhyb3VnaENv
bG9yQXR0cmlidXRlTmFtZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TU2hhZG93QXR0cmlidXRl
TmFtZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TT2JsaXF1ZW5lc3NBdHRyaWJ1dGVOYW1lIDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNFeHBhbnNpb25BdHRyaWJ1dGVOYW1lIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNDdXJzb3JBdHRyaWJ1dGVOYW1lIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
TlNUb29sVGlwQXR0cmlidXRlTmFtZSA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQ2hhcmFj
dGVyU2hhcGVBdHRyaWJ1dGVOYW1lOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0dseXBoSW5m
b0F0dHJpYnV0ZU5hbWUgOwoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1dyaXRpbmdEaXJlY3Rp
b25BdHRyaWJ1dGVOYW1lIDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNNYXJrZWRDbGF1c2VT
ZWdtZW50QXR0cmlidXRlTmFtZSA7CgoKCmVudW0gewogICAgTlNVbmRlcmxpbmVTdHlsZU5vbmUg
PSAweDAwLAogICAgTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSA9IDB4MDEsCiAgICBOU1VuZGVybGlu
ZVN0eWxlVGhpY2sgPSAweDAyLAogICAgTlNVbmRlcmxpbmVTdHlsZURvdWJsZSA9IDB4MDkKfTsK
CmVudW0gewogICAgTlNVbmRlcmxpbmVQYXR0ZXJuU29saWQgPSAweDAwMDAsCiAgICBOU1VuZGVy
bGluZVBhdHRlcm5Eb3QgPSAweDAxMDAsCiAgICBOU1VuZGVybGluZVBhdHRlcm5EYXNoID0gMHgw
MjAwLAogICAgTlNVbmRlcmxpbmVQYXR0ZXJuRGFzaERvdCA9IDB4MDMwMCwKICAgIE5TVW5kZXJs
aW5lUGF0dGVybkRhc2hEb3REb3QgPSAweDA0MDAKfTsKCmV4dGVybiAiQyIgTlNVSW50ZWdlciBO
U1VuZGVybGluZUJ5V29yZE1hc2s7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TU3BlbGxpbmdT
dGF0ZUF0dHJpYnV0ZU5hbWUgOwoKCgoKZW51bSB7CiAgICBOU1NwZWxsaW5nU3RhdGVTcGVsbGlu
Z0ZsYWcgPSAoMSA8PCAwKSwKICAgIE5TU3BlbGxpbmdTdGF0ZUdyYW1tYXJGbGFnID0gKDEgPDwg
MSkKfTsKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1BsYWluVGV4dERvY3VtZW50VHlwZTsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNSVEZUZXh0RG9jdW1lbnRUeXBlOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpOU1JURkRUZXh0RG9jdW1lbnRUeXBlOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU01h
Y1NpbXBsZVRleHREb2N1bWVudFR5cGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TSFRNTFRleHRE
b2N1bWVudFR5cGU7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRG9jRm9ybWF0VGV4dERvY3VtZW50
VHlwZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TV29yZE1MVGV4dERvY3VtZW50VHlwZSA7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKk5TV2ViQXJjaGl2ZVRleHREb2N1bWVudFR5cGUgOwpleHRlcm4g
IkMiIE5TU3RyaW5nICpOU09mZmljZU9wZW5YTUxUZXh0RG9jdW1lbnRUeXBlIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNPcGVuRG9jdW1lbnRUZXh0RG9jdW1lbnRUeXBlIDsKCgoKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNQYXBlclNpemVEb2N1bWVudEF0dHJpYnV0ZSA7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKk5TTGVmdE1hcmdpbkRvY3VtZW50QXR0cmlidXRlIDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqTlNSaWdodE1hcmdpbkRvY3VtZW50QXR0cmlidXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
TlNUb3BNYXJnaW5Eb2N1bWVudEF0dHJpYnV0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQm90
dG9tTWFyZ2luRG9jdW1lbnRBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1ZpZXdT
aXplRG9jdW1lbnRBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1ZpZXdab29tRG9j
dW1lbnRBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1ZpZXdNb2RlRG9jdW1lbnRB
dHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0RvY3VtZW50VHlwZURvY3VtZW50QXR0
cmlidXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNSZWFkT25seURvY3VtZW50QXR0cmlidXRl
IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNDb252ZXJ0ZWREb2N1bWVudEF0dHJpYnV0ZSA7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKk5TQ29jb2FWZXJzaW9uRG9jdW1lbnRBdHRyaWJ1dGUgOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmlidXRlIDsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqTlNIeXBoZW5hdGlvbkZhY3RvckRvY3VtZW50QXR0cmlidXRlIDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNEZWZhdWx0VGFiSW50ZXJ2YWxEb2N1bWVudEF0dHJpYnV0
ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQ2hhcmFjdGVyRW5jb2RpbmdEb2N1bWVudEF0dHJp
YnV0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRmlsZVR5cGVEb2N1bWVudEF0dHJpYnV0ZSA7
CgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1RpdGxlRG9jdW1lbnRBdHRyaWJ1dGUgOwpleHRlcm4g
IkMiIE5TU3RyaW5nICpOU0NvbXBhbnlEb2N1bWVudEF0dHJpYnV0ZSA7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKk5TQ29weXJpZ2h0RG9jdW1lbnRBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU1N1YmplY3REb2N1bWVudEF0dHJpYnV0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQXV0
aG9yRG9jdW1lbnRBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0tleXdvcmRzRG9j
dW1lbnRBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0NvbW1lbnREb2N1bWVudEF0
dHJpYnV0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRWRpdG9yRG9jdW1lbnRBdHRyaWJ1dGUg
OwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0NyZWF0aW9uVGltZURvY3VtZW50QXR0cmlidXRlIDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNNb2RpZmljYXRpb25UaW1lRG9jdW1lbnRBdHRyaWJ1dGUg
OwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU01hbmFnZXJEb2N1bWVudEF0dHJpYnV0ZSA7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TQ2F0ZWdvcnlEb2N1bWVudEF0dHJpYnV0ZSA7CgoKCmV4dGVybiAi
QyIgTlNTdHJpbmcgKk5TRXhjbHVkZWRFbGVtZW50c0RvY3VtZW50QXR0cmlidXRlIDsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqTlNUZXh0RW5jb2RpbmdOYW1lRG9jdW1lbnRBdHRyaWJ1dGUgOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU1ByZWZpeFNwYWNlc0RvY3VtZW50QXR0cmlidXRlIDsKCgoKZXh0
ZXJuICJDIiBOU1N0cmluZyAqTlNEb2N1bWVudFR5cGVEb2N1bWVudE9wdGlvbiA7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKk5TRGVmYXVsdEF0dHJpYnV0ZXNEb2N1bWVudE9wdGlvbiA7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKk5TQ2hhcmFjdGVyRW5jb2RpbmdEb2N1bWVudE9wdGlvbiA7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKk5TVGV4dEVuY29kaW5nTmFtZURvY3VtZW50T3B0aW9uIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNCYXNlVVJMRG9jdW1lbnRPcHRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU1RpbWVvdXREb2N1bWVudE9wdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TV2ViUHJl
ZmVyZW5jZXNEb2N1bWVudE9wdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TV2ViUmVzb3Vy
Y2VMb2FkRGVsZWdhdGVEb2N1bWVudE9wdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVGV4
dFNpemVNdWx0aXBsaWVyRG9jdW1lbnRPcHRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0Zp
bGVUeXBlRG9jdW1lbnRPcHRpb24gOwoKCgoKQGludGVyZmFjZSBOU0F0dHJpYnV0ZWRTdHJpbmcg
KE5TQXR0cmlidXRlZFN0cmluZ0tpdEFkZGl0aW9ucykKCjxOU1Bhc3RlYm9hcmRSZWFkaW5nLCBO
U1Bhc3RlYm9hcmRXcml0aW5nPgoKCgoKLSAoTlNEaWN0aW9uYXJ5ICopZm9udEF0dHJpYnV0ZXNJ
blJhbmdlOihOU1JhbmdlKXJhbmdlOwoKCgotIChOU0RpY3Rpb25hcnkgKilydWxlckF0dHJpYnV0
ZXNJblJhbmdlOihOU1JhbmdlKXJhbmdlOwoKLSAoQk9PTCljb250YWluc0F0dGFjaG1lbnRzOwoK
CgotIChOU1VJbnRlZ2VyKWxpbmVCcmVha0JlZm9yZUluZGV4OihOU1VJbnRlZ2VyKWxvY2F0aW9u
IHdpdGhpblJhbmdlOihOU1JhbmdlKWFSYW5nZTsKCi0gKE5TVUludGVnZXIpbGluZUJyZWFrQnlI
eXBoZW5hdGluZ0JlZm9yZUluZGV4OihOU1VJbnRlZ2VyKWxvY2F0aW9uIHdpdGhpblJhbmdlOihO
U1JhbmdlKWFSYW5nZTsKCgotIChOU1JhbmdlKWRvdWJsZUNsaWNrQXRJbmRleDooTlNVSW50ZWdl
cilsb2NhdGlvbjsKLSAoTlNVSW50ZWdlciluZXh0V29yZEZyb21JbmRleDooTlNVSW50ZWdlcils
b2NhdGlvbiBmb3J3YXJkOihCT09MKWlzRm9yd2FyZDsKCgoKCi0gKE5TVVJMICopVVJMQXRJbmRl
eDooTlNVSW50ZWdlcilsb2NhdGlvbiBlZmZlY3RpdmVSYW5nZTooTlNSYW5nZVBvaW50ZXIpZWZm
ZWN0aXZlUmFuZ2U7CgoKCgoKKyAoTlNBcnJheSAqKXRleHRUeXBlczsKKyAoTlNBcnJheSAqKXRl
eHRVbmZpbHRlcmVkVHlwZXM7CgoKCgoKLSAoTlNSYW5nZSlyYW5nZU9mVGV4dEJsb2NrOihOU1Rl
eHRCbG9jayAqKWJsb2NrIGF0SW5kZXg6KE5TVUludGVnZXIpbG9jYXRpb247Ci0gKE5TUmFuZ2Up
cmFuZ2VPZlRleHRUYWJsZTooTlNUZXh0VGFibGUgKil0YWJsZSBhdEluZGV4OihOU1VJbnRlZ2Vy
KWxvY2F0aW9uOwotIChOU1JhbmdlKXJhbmdlT2ZUZXh0TGlzdDooTlNUZXh0TGlzdCAqKWxpc3Qg
YXRJbmRleDooTlNVSW50ZWdlcilsb2NhdGlvbjsKLSAoTlNJbnRlZ2VyKWl0ZW1OdW1iZXJJblRl
eHRMaXN0OihOU1RleHRMaXN0ICopbGlzdCBhdEluZGV4OihOU1VJbnRlZ2VyKWxvY2F0aW9uOwoK
CgoKCgoKLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsIG9wdGlvbnM6KE5TRGljdGlvbmFy
eSAqKW9wdGlvbnMgZG9jdW1lbnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKiopZGljdCBlcnJv
cjooTlNFcnJvciAqKillcnJvcjsKLSAoaWQpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIG9w
dGlvbnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnMgZG9jdW1lbnRBdHRyaWJ1dGVzOihOU0RpY3Rp
b25hcnkgKiopZGljdCBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKCgoKCi0gKGlkKWluaXRXaXRo
UGF0aDooTlNTdHJpbmcgKilwYXRoIGRvY3VtZW50QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICoq
KWRpY3Q7Ci0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybCBkb2N1bWVudEF0dHJpYnV0ZXM6
KE5TRGljdGlvbmFyeSAqKilkaWN0OwoKCgotIChpZClpbml0V2l0aFJURjooTlNEYXRhICopZGF0
YSBkb2N1bWVudEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKilkaWN0OwotIChpZClpbml0V2l0
aFJURkQ6KE5TRGF0YSAqKWRhdGEgZG9jdW1lbnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKiop
ZGljdDsKLSAoaWQpaW5pdFdpdGhIVE1MOihOU0RhdGEgKilkYXRhIGRvY3VtZW50QXR0cmlidXRl
czooTlNEaWN0aW9uYXJ5ICoqKWRpY3Q7Ci0gKGlkKWluaXRXaXRoSFRNTDooTlNEYXRhICopZGF0
YSBiYXNlVVJMOihOU1VSTCAqKWJhc2UgZG9jdW1lbnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkg
KiopZGljdDsKCi0gKGlkKWluaXRXaXRoRG9jRm9ybWF0OihOU0RhdGEgKilkYXRhIGRvY3VtZW50
QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICoqKWRpY3Q7Ci0gKGlkKWluaXRXaXRoSFRNTDooTlNE
YXRhICopZGF0YSBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zIGRvY3VtZW50QXR0cmli
dXRlczooTlNEaWN0aW9uYXJ5ICoqKWRpY3Q7CgoKCgotIChpZClpbml0V2l0aFJURkRGaWxlV3Jh
cHBlcjooTlNGaWxlV3JhcHBlciAqKXdyYXBwZXIgZG9jdW1lbnRBdHRyaWJ1dGVzOihOU0RpY3Rp
b25hcnkgKiopZGljdDsKCgoKCgoKLSAoTlNEYXRhICopZGF0YUZyb21SYW5nZTooTlNSYW5nZSly
YW5nZSBkb2N1bWVudEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRpY3QgZXJyb3I6KE5TRXJy
b3IgKiopZXJyb3I7Ci0gKE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlckZyb21SYW5nZTooTlNS
YW5nZSlyYW5nZSBkb2N1bWVudEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRpY3QgZXJyb3I6
KE5TRXJyb3IgKiopZXJyb3I7CgoKCgotIChOU0RhdGEgKilSVEZGcm9tUmFuZ2U6KE5TUmFuZ2Up
cmFuZ2UgZG9jdW1lbnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilkaWN0OwotIChOU0RhdGEg
KilSVEZERnJvbVJhbmdlOihOU1JhbmdlKXJhbmdlIGRvY3VtZW50QXR0cmlidXRlczooTlNEaWN0
aW9uYXJ5ICopZGljdDsKLSAoTlNGaWxlV3JhcHBlciAqKVJURkRGaWxlV3JhcHBlckZyb21SYW5n
ZTooTlNSYW5nZSlyYW5nZSBkb2N1bWVudEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRpY3Q7
CgotIChOU0RhdGEgKilkb2NGb3JtYXRGcm9tUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZG9jdW1lbnRB
dHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilkaWN0OwoKCkBlbmQKCkBpbnRlcmZhY2UgTlNBdHRy
aWJ1dGVkU3RyaW5nKE5TRGVwcmVjYXRlZEtpdEFkZGl0aW9ucykKCgoKKyAoTlNBcnJheSAqKXRl
eHRGaWxlVHlwZXMgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOworIChOU0FycmF5ICopdGV4
dFBhc3RlYm9hcmRUeXBlcyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CisgKE5TQXJyYXkg
Kil0ZXh0VW5maWx0ZXJlZEZpbGVUeXBlcyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Cisg
KE5TQXJyYXkgKil0ZXh0VW5maWx0ZXJlZFBhc3RlYm9hcmRUeXBlcyBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7CgpAZW5kCgpAaW50ZXJmYWNlIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcg
KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmdLaXRBZGRpdGlvbnMpCgoKCgoKCi0gKEJPT0wpcmVh
ZEZyb21VUkw6KE5TVVJMICopdXJsIG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKW9wdHMgZG9jdW1l
bnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKiopZGljdCBlcnJvcjooTlNFcnJvciAqKillcnJv
cjsKLSAoQk9PTClyZWFkRnJvbURhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooTlNEaWN0aW9u
YXJ5ICopb3B0cyBkb2N1bWVudEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKilkaWN0IGVycm9y
OihOU0Vycm9yICoqKWVycm9yOwoKCgoKLSAoQk9PTClyZWFkRnJvbVVSTDooTlNVUkwgKil1cmwg
b3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9ucyBkb2N1bWVudEF0dHJpYnV0ZXM6KE5TRGlj
dGlvbmFyeSAqKilkaWN0OwoKLSAoQk9PTClyZWFkRnJvbURhdGE6KE5TRGF0YSAqKWRhdGEgb3B0
aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9ucyBkb2N1bWVudEF0dHJpYnV0ZXM6KE5TRGljdGlv
bmFyeSAqKilkaWN0OwoKCgoKLSAodm9pZClzdXBlcnNjcmlwdFJhbmdlOihOU1JhbmdlKXJhbmdl
OwotICh2b2lkKXN1YnNjcmlwdFJhbmdlOihOU1JhbmdlKXJhbmdlOwotICh2b2lkKXVuc2NyaXB0
UmFuZ2U6KE5TUmFuZ2UpcmFuZ2U7Ci0gKHZvaWQpYXBwbHlGb250VHJhaXRzOihOU0ZvbnRUcmFp
dE1hc2spdHJhaXRNYXNrIHJhbmdlOihOU1JhbmdlKXJhbmdlOwotICh2b2lkKXNldEFsaWdubWVu
dDooTlNUZXh0QWxpZ25tZW50KWFsaWdubWVudCByYW5nZTooTlNSYW5nZSlyYW5nZTsKCi0gKHZv
aWQpc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb246KE5TV3JpdGluZ0RpcmVjdGlvbil3cml0aW5nRGly
ZWN0aW9uIHJhbmdlOihOU1JhbmdlKXJhbmdlOwoKCgoKLSAodm9pZClmaXhBdHRyaWJ1dGVzSW5S
YW5nZTooTlNSYW5nZSlyYW5nZTsKLSAodm9pZClmaXhGb250QXR0cmlidXRlSW5SYW5nZTooTlNS
YW5nZSlyYW5nZTsKLSAodm9pZClmaXhQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZUluUmFuZ2U6KE5T
UmFuZ2UpcmFuZ2U7Ci0gKHZvaWQpZml4QXR0YWNobWVudEF0dHJpYnV0ZUluUmFuZ2U6KE5TUmFu
Z2UpcmFuZ2U7CgpAZW5kCgoKCmVudW0gewogICAgTlNOb1VuZGVybGluZVN0eWxlID0gMCwKICAg
IE5TU2luZ2xlVW5kZXJsaW5lU3R5bGUKfTsKZXh0ZXJuICJDIiBOU1VJbnRlZ2VyIE5TVW5kZXJs
aW5lU3RyaWtldGhyb3VnaE1hc2s7CiMgMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1RleHRBdHRhY2htZW50LmgiIDIgMwoKQGNsYXNzIE5T
RmlsZVdyYXBwZXI7CkBjbGFzcyBOU0xheW91dE1hbmFnZXI7CkBjbGFzcyBOU1RleHRBdHRhY2ht
ZW50OwpAY2xhc3MgTlNUZXh0Q29udGFpbmVyOwoKZW51bSB7CiAgICBOU0F0dGFjaG1lbnRDaGFy
YWN0ZXIgPSAweGZmZmMKfTsKCgoKQHByb3RvY29sIE5TVGV4dEF0dGFjaG1lbnRDZWxsIDxOU09i
amVjdD4KLSAodm9pZClkcmF3V2l0aEZyYW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzooTlNW
aWV3ICopY29udHJvbFZpZXc7Ci0gKEJPT0wpd2FudHNUb1RyYWNrTW91c2U7Ci0gKHZvaWQpaGln
aGxpZ2h0OihCT09MKWZsYWcgd2l0aEZyYW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzooTlNW
aWV3ICopY29udHJvbFZpZXc7Ci0gKEJPT0wpdHJhY2tNb3VzZTooTlNFdmVudCAqKXRoZUV2ZW50
IGluUmVjdDooTlNSZWN0KWNlbGxGcmFtZSBvZlZpZXc6KE5TVmlldyAqKWNvbnRyb2xWaWV3IHVu
dGlsTW91c2VVcDooQk9PTClmbGFnOwotIChOU1NpemUpY2VsbFNpemU7Ci0gKE5TUG9pbnQpY2Vs
bEJhc2VsaW5lT2Zmc2V0OwotICh2b2lkKXNldEF0dGFjaG1lbnQ6KE5TVGV4dEF0dGFjaG1lbnQg
Kilhbk9iamVjdDsKLSAoTlNUZXh0QXR0YWNobWVudCAqKWF0dGFjaG1lbnQ7CgoKLSAodm9pZClk
cmF3V2l0aEZyYW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzooTlNWaWV3ICopY29udHJvbFZp
ZXcgY2hhcmFjdGVySW5kZXg6KE5TVUludGVnZXIpY2hhckluZGV4OwotICh2b2lkKWRyYXdXaXRo
RnJhbWU6KE5TUmVjdCljZWxsRnJhbWUgaW5WaWV3OihOU1ZpZXcgKiljb250cm9sVmlldyBjaGFy
YWN0ZXJJbmRleDooTlNVSW50ZWdlciljaGFySW5kZXggbGF5b3V0TWFuYWdlcjooTlNMYXlvdXRN
YW5hZ2VyICopbGF5b3V0TWFuYWdlcjsKLSAoQk9PTCl3YW50c1RvVHJhY2tNb3VzZUZvckV2ZW50
OihOU0V2ZW50ICopdGhlRXZlbnQgaW5SZWN0OihOU1JlY3QpY2VsbEZyYW1lIG9mVmlldzooTlNW
aWV3ICopY29udHJvbFZpZXcgYXRDaGFyYWN0ZXJJbmRleDooTlNVSW50ZWdlciljaGFySW5kZXg7
Ci0gKEJPT0wpdHJhY2tNb3VzZTooTlNFdmVudCAqKXRoZUV2ZW50IGluUmVjdDooTlNSZWN0KWNl
bGxGcmFtZSBvZlZpZXc6KE5TVmlldyAqKWNvbnRyb2xWaWV3IGF0Q2hhcmFjdGVySW5kZXg6KE5T
VUludGVnZXIpY2hhckluZGV4IHVudGlsTW91c2VVcDooQk9PTClmbGFnOwotIChOU1JlY3QpY2Vs
bEZyYW1lRm9yVGV4dENvbnRhaW5lcjooTlNUZXh0Q29udGFpbmVyICopdGV4dENvbnRhaW5lciBw
cm9wb3NlZExpbmVGcmFnbWVudDooTlNSZWN0KWxpbmVGcmFnIGdseXBoUG9zaXRpb246KE5TUG9p
bnQpcG9zaXRpb24gY2hhcmFjdGVySW5kZXg6KE5TVUludGVnZXIpY2hhckluZGV4OwpAZW5kCgoK
CkBpbnRlcmZhY2UgTlNUZXh0QXR0YWNobWVudENlbGwgOiBOU0NlbGwgPE5TVGV4dEF0dGFjaG1l
bnRDZWxsPiB7CgogICAgTlNUZXh0QXR0YWNobWVudCAqX2F0dGFjaG1lbnQ7Cn0KQGVuZAoKCkBp
bnRlcmZhY2UgTlNUZXh0QXR0YWNobWVudCA6IE5TT2JqZWN0IDxOU0NvZGluZz4gewoKICAgIE5T
RmlsZVdyYXBwZXIgKl9maWxlV3JhcHBlcjsKICAgIGlkIDxOU1RleHRBdHRhY2htZW50Q2VsbD5f
Y2VsbDsKICAgIHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgaW50IGNlbGxXYXNFeHBsaWNpdGx5
U2V0OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGlnbm9yZXNPcmllbnRhdGlvbjoxOwogICAgICAg
IHVuc2lnbmVkIGludCA6MzA7CiAgICB9IF9mbGFnczsKfQoKCgotIChpZClpbml0V2l0aEZpbGVX
cmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXI7CgoKCi0gKHZvaWQpc2V0RmlsZVdy
YXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlcjsKLSAoTlNGaWxlV3JhcHBlciAqKWZp
bGVXcmFwcGVyOwoKCgotIChpZCA8TlNUZXh0QXR0YWNobWVudENlbGw+KWF0dGFjaG1lbnRDZWxs
OwotICh2b2lkKXNldEF0dGFjaG1lbnRDZWxsOihpZCA8TlNUZXh0QXR0YWNobWVudENlbGw+KWNl
bGw7CgpAZW5kCgoKCgpAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoTlNBdHRyaWJ1dGVk
U3RyaW5nQXR0YWNobWVudENvbnZlbmllbmNlcykKCisgKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0
dHJpYnV0ZWRTdHJpbmdXaXRoQXR0YWNobWVudDooTlNUZXh0QXR0YWNobWVudCAqKWF0dGFjaG1l
bnQ7CgpAZW5kCgpAaW50ZXJmYWNlIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmdBdHRhY2htZW50Q29udmVuaWVuY2VzKQoKLSAodm9pZCl1cGRhdGVB
dHRhY2htZW50c0Zyb21QYXRoOihOU1N0cmluZyAqKXBhdGg7CgpAZW5kCiMgMTMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1RleHRWaWV3Lmgi
IDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU1RleHRJbnB1dENsaWVudC5oIiAxIDMKIyAxMyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGV4dElucHV0Q2xpZW50LmgiIDMK
QGNsYXNzIE5TQXJyYXk7CkBjbGFzcyBOU0F0dHJpYnV0ZWRTdHJpbmc7CgpAcHJvdG9jb2wgTlNU
ZXh0SW5wdXRDbGllbnQKQHJlcXVpcmVkCgoKLSAodm9pZClpbnNlcnRUZXh0OihpZClhU3RyaW5n
IHJlcGxhY2VtZW50UmFuZ2U6KE5TUmFuZ2UpcmVwbGFjZW1lbnRSYW5nZTsKCgoKIC0gKHZvaWQp
ZG9Db21tYW5kQnlTZWxlY3RvcjooU0VMKWFTZWxlY3RvcjsKCgoKLSAodm9pZClzZXRNYXJrZWRU
ZXh0OihpZClhU3RyaW5nIHNlbGVjdGVkUmFuZ2U6KE5TUmFuZ2Upc2VsZWN0ZWRSYW5nZSByZXBs
YWNlbWVudFJhbmdlOihOU1JhbmdlKXJlcGxhY2VtZW50UmFuZ2U7CgoKCi0gKHZvaWQpdW5tYXJr
VGV4dDsKCgoKLSAoTlNSYW5nZSlzZWxlY3RlZFJhbmdlOwoKCgotIChOU1JhbmdlKW1hcmtlZFJh
bmdlOwoKCgotIChCT09MKWhhc01hcmtlZFRleHQ7CgoKCi0gKE5TQXR0cmlidXRlZFN0cmluZyAq
KWF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlOihOU1JhbmdlKWFSYW5nZSBhY3R1
YWxSYW5nZTooTlNSYW5nZVBvaW50ZXIpYWN0dWFsUmFuZ2U7CgoKCi0gKE5TQXJyYXkqKXZhbGlk
QXR0cmlidXRlc0Zvck1hcmtlZFRleHQ7CgoKCi0gKE5TUmVjdClmaXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZTooTlNSYW5nZSlhUmFuZ2UgYWN0dWFsUmFuZ2U6KE5TUmFuZ2VQb2ludGVyKWFjdHVh
bFJhbmdlOwoKCgotIChOU1VJbnRlZ2VyKWNoYXJhY3RlckluZGV4Rm9yUG9pbnQ6KE5TUG9pbnQp
YVBvaW50OwoKQG9wdGlvbmFsCgoKLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0
cmluZzsKCgoKLSAoQ0dGbG9hdClmcmFjdGlvbk9mRGlzdGFuY2VUaHJvdWdoR2x5cGhGb3JQb2lu
dDooTlNQb2ludClhUG9pbnQ7CgoKCi0gKENHRmxvYXQpYmFzZWxpbmVEZWx0YUZvckNoYXJhY3Rl
ckF0SW5kZXg6KE5TVUludGVnZXIpYW5JbmRleDsKCgoKLSAoTlNJbnRlZ2VyKXdpbmRvd0xldmVs
OwoKCgotIChCT09MKWRyYXdzVmVydGljYWxseUZvckNoYXJhY3RlckF0SW5kZXg6KE5TVUludGVn
ZXIpY2hhckluZGV4IDsKQGVuZAojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUZXh0Vmlldy5oIiAyIDMKCgpAY2xhc3MgTlNUZXh0Q29u
dGFpbmVyOwpAY2xhc3MgTlNUZXh0U3RvcmFnZTsKQGNsYXNzIE5TTGF5b3V0TWFuYWdlcjsKQGNs
YXNzIE5TUnVsZXJWaWV3OwpAY2xhc3MgTlNSdWxlck1hcmtlcjsKQGNsYXNzIE5TVW5kb01hbmFn
ZXI7CkBjbGFzcyBOU1BhcmFncmFwaFN0eWxlOwpAY2xhc3MgTlNPcnRob2dyYXBoeTsKQHByb3Rv
Y29sIE5TVGV4dFZpZXdEZWxlZ2F0ZTsKCgplbnVtIHsKICAgIE5TU2VsZWN0QnlDaGFyYWN0ZXIg
PSAwLAogICAgTlNTZWxlY3RCeVdvcmQgPSAxLAogICAgTlNTZWxlY3RCeVBhcmFncmFwaCA9IDIK
fTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TU2VsZWN0aW9uR3JhbnVsYXJpdHk7CgoKZW51bSB7CiAg
ICBOU1NlbGVjdGlvbkFmZmluaXR5VXBzdHJlYW0gPSAwLAogICAgTlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0gPSAxCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1NlbGVjdGlvbkFmZmluaXR5
OwoKCmVudW0gewogICAgTlNGaW5kUGFuZWxBY3Rpb25TaG93RmluZFBhbmVsID0gMSwKICAgIE5T
RmluZFBhbmVsQWN0aW9uTmV4dCA9IDIsCiAgICBOU0ZpbmRQYW5lbEFjdGlvblByZXZpb3VzID0g
MywKICAgIE5TRmluZFBhbmVsQWN0aW9uUmVwbGFjZUFsbCA9IDQsCiAgICBOU0ZpbmRQYW5lbEFj
dGlvblJlcGxhY2UgPSA1LAogICAgTlNGaW5kUGFuZWxBY3Rpb25SZXBsYWNlQW5kRmluZCA9IDYs
CiAgICBOU0ZpbmRQYW5lbEFjdGlvblNldEZpbmRTdHJpbmcgPSA3LAogICAgTlNGaW5kUGFuZWxB
Y3Rpb25SZXBsYWNlQWxsSW5TZWxlY3Rpb24gPSA4CgogICAgLAogICAgTlNGaW5kUGFuZWxBY3Rp
b25TZWxlY3RBbGwgPSA5LAogICAgTlNGaW5kUGFuZWxBY3Rpb25TZWxlY3RBbGxJblNlbGVjdGlv
biA9IDEwCgp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNGaW5kUGFuZWxBY3Rpb247CgoKCmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TRmluZFBhbmVsU2VhcmNoT3B0aW9uc1Bib2FyZFR5cGUgOwoKZXh0
ZXJuICJDIiBOU1N0cmluZyAqTlNGaW5kUGFuZWxDYXNlSW5zZW5zaXRpdmVTZWFyY2ggOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU0ZpbmRQYW5lbFN1YnN0cmluZ01hdGNoIDsKCmVudW0gewogICAg
TlNGaW5kUGFuZWxTdWJzdHJpbmdNYXRjaFR5cGVDb250YWlucyA9IDAsCiAgICBOU0ZpbmRQYW5l
bFN1YnN0cmluZ01hdGNoVHlwZVN0YXJ0c1dpdGggPSAxLAogICAgTlNGaW5kUGFuZWxTdWJzdHJp
bmdNYXRjaFR5cGVGdWxsV29yZCA9IDIsCiAgICBOU0ZpbmRQYW5lbFN1YnN0cmluZ01hdGNoVHlw
ZUVuZHNXaXRoID0gMwp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNGaW5kUGFuZWxTdWJzdHJpbmdN
YXRjaFR5cGU7CgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0FsbFJvbWFuSW5wdXRTb3VyY2Vz
TG9jYWxlSWRlbnRpZmllciA7CgpAaW50ZXJmYWNlIE5TVGV4dFZpZXcgOiBOU1RleHQgPE5TVGV4
dElucHV0LCBOU1VzZXJJbnRlcmZhY2VWYWxpZGF0aW9ucwoKLCBOU1RleHRJbnB1dENsaWVudAoK
PgoKCgotIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0IHRleHRDb250YWluZXI6
KE5TVGV4dENvbnRhaW5lciAqKWNvbnRhaW5lcjsKCgotIChpZClpbml0V2l0aEZyYW1lOihOU1Jl
Y3QpZnJhbWVSZWN0OwoKCgoKLSAoTlNUZXh0Q29udGFpbmVyICopdGV4dENvbnRhaW5lcjsKLSAo
dm9pZClzZXRUZXh0Q29udGFpbmVyOihOU1RleHRDb250YWluZXIgKiljb250YWluZXI7CgoKLSAo
dm9pZClyZXBsYWNlVGV4dENvbnRhaW5lcjooTlNUZXh0Q29udGFpbmVyICopbmV3Q29udGFpbmVy
OwoKCi0gKHZvaWQpc2V0VGV4dENvbnRhaW5lckluc2V0OihOU1NpemUpaW5zZXQ7Ci0gKE5TU2l6
ZSl0ZXh0Q29udGFpbmVySW5zZXQ7CgoKLSAoTlNQb2ludCl0ZXh0Q29udGFpbmVyT3JpZ2luOwot
ICh2b2lkKWludmFsaWRhdGVUZXh0Q29udGFpbmVyT3JpZ2luOwoKCi0gKE5TTGF5b3V0TWFuYWdl
ciAqKWxheW91dE1hbmFnZXI7Ci0gKE5TVGV4dFN0b3JhZ2UgKil0ZXh0U3RvcmFnZTsKCgoKCi0g
KHZvaWQpaW5zZXJ0VGV4dDooaWQpaW5zZXJ0U3RyaW5nOwoKCgoKLSAodm9pZClzZXRDb25zdHJh
aW5lZEZyYW1lU2l6ZTooTlNTaXplKWRlc2lyZWRTaXplOwoKCgoKCi0gKHZvaWQpc2V0QWxpZ25t
ZW50OihOU1RleHRBbGlnbm1lbnQpYWxpZ25tZW50IHJhbmdlOihOU1JhbmdlKXJhbmdlOwoKLSAo
dm9pZClzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbjooTlNXcml0aW5nRGlyZWN0aW9uKXdyaXRpbmdE
aXJlY3Rpb24gcmFuZ2U6KE5TUmFuZ2UpcmFuZ2U7CgoKCgotICh2b2lkKXR1cm5PZmZLZXJuaW5n
OihpZClzZW5kZXI7Ci0gKHZvaWQpdGlnaHRlbktlcm5pbmc6KGlkKXNlbmRlcjsKLSAodm9pZCls
b29zZW5LZXJuaW5nOihpZClzZW5kZXI7Ci0gKHZvaWQpdXNlU3RhbmRhcmRLZXJuaW5nOihpZClz
ZW5kZXI7Ci0gKHZvaWQpdHVybk9mZkxpZ2F0dXJlczooaWQpc2VuZGVyOwotICh2b2lkKXVzZVN0
YW5kYXJkTGlnYXR1cmVzOihpZClzZW5kZXI7Ci0gKHZvaWQpdXNlQWxsTGlnYXR1cmVzOihpZClz
ZW5kZXI7Ci0gKHZvaWQpcmFpc2VCYXNlbGluZTooaWQpc2VuZGVyOwotICh2b2lkKWxvd2VyQmFz
ZWxpbmU6KGlkKXNlbmRlcjsKLSAodm9pZCl0b2dnbGVUcmFkaXRpb25hbENoYXJhY3RlclNoYXBl
OihpZClzZW5kZXI7CgotICh2b2lkKW91dGxpbmU6KGlkKXNlbmRlcjsKCgoKCgotICh2b2lkKXBl
cmZvcm1GaW5kUGFuZWxBY3Rpb246KGlkKXNlbmRlcjsKCgoKCgotICh2b2lkKWFsaWduSnVzdGlm
aWVkOihpZClzZW5kZXI7Ci0gKHZvaWQpY2hhbmdlQ29sb3I6KGlkKXNlbmRlcjsKCi0gKHZvaWQp
Y2hhbmdlQXR0cmlidXRlczooaWQpc2VuZGVyOwotICh2b2lkKWNoYW5nZURvY3VtZW50QmFja2dy
b3VuZENvbG9yOihpZClzZW5kZXI7CgoKLSAodm9pZClvcmRlckZyb250U3BhY2luZ1BhbmVsOihp
ZClzZW5kZXI7Ci0gKHZvaWQpb3JkZXJGcm9udExpbmtQYW5lbDooaWQpc2VuZGVyOwotICh2b2lk
KW9yZGVyRnJvbnRMaXN0UGFuZWw6KGlkKXNlbmRlcjsKLSAodm9pZClvcmRlckZyb250VGFibGVQ
YW5lbDooaWQpc2VuZGVyOwoKCgoKLSAodm9pZClydWxlclZpZXc6KE5TUnVsZXJWaWV3ICopcnVs
ZXIgZGlkTW92ZU1hcmtlcjooTlNSdWxlck1hcmtlciAqKW1hcmtlcjsKLSAodm9pZClydWxlclZp
ZXc6KE5TUnVsZXJWaWV3ICopcnVsZXIgZGlkUmVtb3ZlTWFya2VyOihOU1J1bGVyTWFya2VyICop
bWFya2VyOwotICh2b2lkKXJ1bGVyVmlldzooTlNSdWxlclZpZXcgKilydWxlciBkaWRBZGRNYXJr
ZXI6KE5TUnVsZXJNYXJrZXIgKiltYXJrZXI7Ci0gKEJPT0wpcnVsZXJWaWV3OihOU1J1bGVyVmll
dyAqKXJ1bGVyIHNob3VsZE1vdmVNYXJrZXI6KE5TUnVsZXJNYXJrZXIgKiltYXJrZXI7Ci0gKEJP
T0wpcnVsZXJWaWV3OihOU1J1bGVyVmlldyAqKXJ1bGVyIHNob3VsZEFkZE1hcmtlcjooTlNSdWxl
ck1hcmtlciAqKW1hcmtlcjsKLSAoQ0dGbG9hdClydWxlclZpZXc6KE5TUnVsZXJWaWV3ICopcnVs
ZXIgd2lsbE1vdmVNYXJrZXI6KE5TUnVsZXJNYXJrZXIgKiltYXJrZXIgdG9Mb2NhdGlvbjooQ0dG
bG9hdClsb2NhdGlvbjsKLSAoQk9PTClydWxlclZpZXc6KE5TUnVsZXJWaWV3ICopcnVsZXIgc2hv
dWxkUmVtb3ZlTWFya2VyOihOU1J1bGVyTWFya2VyICopbWFya2VyOwotIChDR0Zsb2F0KXJ1bGVy
VmlldzooTlNSdWxlclZpZXcgKilydWxlciB3aWxsQWRkTWFya2VyOihOU1J1bGVyTWFya2VyICop
bWFya2VyIGF0TG9jYXRpb246KENHRmxvYXQpbG9jYXRpb247Ci0gKHZvaWQpcnVsZXJWaWV3OihO
U1J1bGVyVmlldyAqKXJ1bGVyIGhhbmRsZU1vdXNlRG93bjooTlNFdmVudCAqKWV2ZW50OwoKCgot
ICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooTlNSZWN0KXJlY3QgYXZvaWRBZGRpdGlvbmFs
TGF5b3V0OihCT09MKWZsYWc7CgoKLSAoQk9PTClzaG91bGREcmF3SW5zZXJ0aW9uUG9pbnQ7Ci0g
KHZvaWQpZHJhd0luc2VydGlvblBvaW50SW5SZWN0OihOU1JlY3QpcmVjdCBjb2xvcjooTlNDb2xv
ciAqKWNvbG9yIHR1cm5lZE9uOihCT09MKWZsYWc7CgoKLSAodm9pZClkcmF3Vmlld0JhY2tncm91
bmRJblJlY3Q6KE5TUmVjdClyZWN0OwoKCgoKCi0gKHZvaWQpdXBkYXRlUnVsZXI7Ci0gKHZvaWQp
dXBkYXRlRm9udFBhbmVsOwoKLSAodm9pZCl1cGRhdGVEcmFnVHlwZVJlZ2lzdHJhdGlvbjsKCi0g
KE5TUmFuZ2Upc2VsZWN0aW9uUmFuZ2VGb3JQcm9wb3NlZFJhbmdlOihOU1JhbmdlKXByb3Bvc2Vk
Q2hhclJhbmdlIGdyYW51bGFyaXR5OihOU1NlbGVjdGlvbkdyYW51bGFyaXR5KWdyYW51bGFyaXR5
OwoKCgotICh2b2lkKWNsaWNrZWRPbkxpbms6KGlkKWxpbmsgYXRJbmRleDooTlNVSW50ZWdlcilj
aGFySW5kZXg7CgoKCgotICh2b2lkKXN0YXJ0U3BlYWtpbmc6KGlkKXNlbmRlcjsKLSAodm9pZClz
dG9wU3BlYWtpbmc6KGlkKXNlbmRlcjsKCgoKCi0gKE5TVUludGVnZXIpY2hhcmFjdGVySW5kZXhG
b3JJbnNlcnRpb25BdFBvaW50OihOU1BvaW50KXBvaW50OwoKCgpAZW5kCgoKQGludGVyZmFjZSBO
U1RleHRWaWV3IChOU0NvbXBsZXRpb24pCgoKCi0gKHZvaWQpY29tcGxldGU6KGlkKXNlbmRlcjsK
CgotIChOU1JhbmdlKXJhbmdlRm9yVXNlckNvbXBsZXRpb247CgoKLSAoTlNBcnJheSAqKWNvbXBs
ZXRpb25zRm9yUGFydGlhbFdvcmRSYW5nZTooTlNSYW5nZSljaGFyUmFuZ2UgaW5kZXhPZlNlbGVj
dGVkSXRlbTooTlNJbnRlZ2VyICopaW5kZXg7CgoKLSAodm9pZClpbnNlcnRDb21wbGV0aW9uOihO
U1N0cmluZyAqKXdvcmQgZm9yUGFydGlhbFdvcmRSYW5nZTooTlNSYW5nZSljaGFyUmFuZ2UgbW92
ZW1lbnQ6KE5TSW50ZWdlciltb3ZlbWVudCBpc0ZpbmFsOihCT09MKWZsYWc7CgpAZW5kCgoKQGlu
dGVyZmFjZSBOU1RleHRWaWV3IChOU1Bhc3RlYm9hcmQpCiMgMjU3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUZXh0Vmlldy5oIiAzCi0gKE5T
QXJyYXkgKil3cml0YWJsZVBhc3RlYm9hcmRUeXBlczsKCgotIChCT09MKXdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYm9hcmQgdHlwZTooTlNTdHJpbmcgKil0eXBl
OwoKCi0gKEJPT0wpd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBi
b2FyZCB0eXBlczooTlNBcnJheSAqKXR5cGVzOwoKCgotIChOU0FycmF5ICopcmVhZGFibGVQYXN0
ZWJvYXJkVHlwZXM7CgoKLSAoTlNTdHJpbmcgKilwcmVmZXJyZWRQYXN0ZWJvYXJkVHlwZUZyb21B
cnJheTooTlNBcnJheSAqKWF2YWlsYWJsZVR5cGVzIHJlc3RyaWN0ZWRUb1R5cGVzRnJvbUFycmF5
OihOU0FycmF5ICopYWxsb3dlZFR5cGVzOwoKCi0gKEJPT0wpcmVhZFNlbGVjdGlvbkZyb21QYXN0
ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYm9hcmQgdHlwZTooTlNTdHJpbmcgKil0eXBlOwoKCi0g
KEJPT0wpcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYm9hcmQ7
CgoKKyAodm9pZClyZWdpc3RlckZvclNlcnZpY2VzOwoKCi0gKGlkKXZhbGlkUmVxdWVzdG9yRm9y
U2VuZFR5cGU6KE5TU3RyaW5nICopc2VuZFR5cGUgcmV0dXJuVHlwZTooTlNTdHJpbmcgKilyZXR1
cm5UeXBlOwoKCi0gKHZvaWQpcGFzdGVBc1BsYWluVGV4dDooaWQpc2VuZGVyOwotICh2b2lkKXBh
c3RlQXNSaWNoVGV4dDooaWQpc2VuZGVyOwoKCkBlbmQKCkBpbnRlcmZhY2UgTlNUZXh0VmlldyAo
TlNEcmFnZ2luZykKCi0gKEJPT0wpZHJhZ1NlbGVjdGlvbldpdGhFdmVudDooTlNFdmVudCAqKWV2
ZW50IG9mZnNldDooTlNTaXplKW1vdXNlT2Zmc2V0IHNsaWRlQmFjazooQk9PTClzbGlkZUJhY2s7
CgoKLSAoTlNJbWFnZSAqKWRyYWdJbWFnZUZvclNlbGVjdGlvbldpdGhFdmVudDooTlNFdmVudCAq
KWV2ZW50IG9yaWdpbjooTlNQb2ludFBvaW50ZXIpb3JpZ2luOwoKCi0gKE5TQXJyYXkgKilhY2Nl
cHRhYmxlRHJhZ1R5cGVzOwoKCi0gKE5TRHJhZ09wZXJhdGlvbilkcmFnT3BlcmF0aW9uRm9yRHJh
Z2dpbmdJbmZvOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdJbmZvIHR5cGU6KE5TU3RyaW5nICop
dHlwZTsKCgotICh2b2lkKWNsZWFuVXBBZnRlckRyYWdPcGVyYXRpb247CgoKQGVuZAoKQGludGVy
ZmFjZSBOU1RleHRWaWV3IChOU1NoYXJpbmcpCgoKCgoKCi0gKE5TQXJyYXkgKilzZWxlY3RlZFJh
bmdlczsKLSAodm9pZClzZXRTZWxlY3RlZFJhbmdlczooTlNBcnJheSAqKXJhbmdlcyBhZmZpbml0
eTooTlNTZWxlY3Rpb25BZmZpbml0eSlhZmZpbml0eSBzdGlsbFNlbGVjdGluZzooQk9PTClzdGls
bFNlbGVjdGluZ0ZsYWc7Ci0gKHZvaWQpc2V0U2VsZWN0ZWRSYW5nZXM6KE5TQXJyYXkgKilyYW5n
ZXM7CgoKCi0gKHZvaWQpc2V0U2VsZWN0ZWRSYW5nZTooTlNSYW5nZSljaGFyUmFuZ2UgYWZmaW5p
dHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpYWZmaW5pdHkgc3RpbGxTZWxlY3Rpbmc6KEJPT0wpc3Rp
bGxTZWxlY3RpbmdGbGFnOwotIChOU1NlbGVjdGlvbkFmZmluaXR5KXNlbGVjdGlvbkFmZmluaXR5
OwotIChOU1NlbGVjdGlvbkdyYW51bGFyaXR5KXNlbGVjdGlvbkdyYW51bGFyaXR5OwotICh2b2lk
KXNldFNlbGVjdGlvbkdyYW51bGFyaXR5OihOU1NlbGVjdGlvbkdyYW51bGFyaXR5KWdyYW51bGFy
aXR5OwoKLSAodm9pZClzZXRTZWxlY3RlZFRleHRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilh
dHRyaWJ1dGVEaWN0aW9uYXJ5OwotIChOU0RpY3Rpb25hcnkgKilzZWxlY3RlZFRleHRBdHRyaWJ1
dGVzOwoKCi0gKHZvaWQpc2V0SW5zZXJ0aW9uUG9pbnRDb2xvcjooTlNDb2xvciAqKWNvbG9yOwot
IChOU0NvbG9yICopaW5zZXJ0aW9uUG9pbnRDb2xvcjsKCi0gKHZvaWQpdXBkYXRlSW5zZXJ0aW9u
UG9pbnRTdGF0ZUFuZFJlc3RhcnRUaW1lcjooQk9PTClyZXN0YXJ0RmxhZzsKCi0gKHZvaWQpc2V0
TWFya2VkVGV4dEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZURpY3Rpb25hcnk7
Ci0gKE5TRGljdGlvbmFyeSAqKW1hcmtlZFRleHRBdHRyaWJ1dGVzOwoKCgotICh2b2lkKXNldExp
bmtUZXh0QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlRGljdGlvbmFyeTsKLSAo
TlNEaWN0aW9uYXJ5ICopbGlua1RleHRBdHRyaWJ1dGVzOwoKCgoKLSAoQk9PTClkaXNwbGF5c0xp
bmtUb29sVGlwczsKLSAodm9pZClzZXREaXNwbGF5c0xpbmtUb29sVGlwczooQk9PTClmbGFnOwoK
CgoKCgotIChCT09MKWFjY2VwdHNHbHlwaEluZm87Ci0gKHZvaWQpc2V0QWNjZXB0c0dseXBoSW5m
bzooQk9PTClmbGFnOwoKCgoKLSAodm9pZClzZXRSdWxlclZpc2libGU6KEJPT0wpZmxhZzsKLSAo
Qk9PTCl1c2VzUnVsZXI7Ci0gKHZvaWQpc2V0VXNlc1J1bGVyOihCT09MKWZsYWc7CgotICh2b2lk
KXNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZDooQk9PTClmbGFnOwotIChCT09MKWlz
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOwotICh2b2lkKXRvZ2dsZUNvbnRpbnVvdXNT
cGVsbENoZWNraW5nOihpZClzZW5kZXI7CgotIChOU0ludGVnZXIpc3BlbGxDaGVja2VyRG9jdW1l
bnRUYWc7CgoKLSAodm9pZClzZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkOihCT09MKWZsYWc7Ci0g
KEJPT0wpaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkOwotICh2b2lkKXRvZ2dsZUdyYW1tYXJDaGVj
a2luZzooaWQpc2VuZGVyOwoKCi0gKHZvaWQpc2V0U3BlbGxpbmdTdGF0ZTooTlNJbnRlZ2VyKXZh
bHVlIHJhbmdlOihOU1JhbmdlKWNoYXJSYW5nZTsKCgoKLSAoTlNEaWN0aW9uYXJ5ICopdHlwaW5n
QXR0cmlidXRlczsKLSAodm9pZClzZXRUeXBpbmdBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilh
dHRyczsKCgoKLSAoQk9PTClzaG91bGRDaGFuZ2VUZXh0SW5SYW5nZXM6KE5TQXJyYXkgKilhZmZl
Y3RlZFJhbmdlcyByZXBsYWNlbWVudFN0cmluZ3M6KE5TQXJyYXkgKilyZXBsYWNlbWVudFN0cmlu
Z3M7Ci0gKE5TQXJyYXkgKilyYW5nZXNGb3JVc2VyVGV4dENoYW5nZTsKLSAoTlNBcnJheSAqKXJh
bmdlc0ZvclVzZXJDaGFyYWN0ZXJBdHRyaWJ1dGVDaGFuZ2U7Ci0gKE5TQXJyYXkgKilyYW5nZXNG
b3JVc2VyUGFyYWdyYXBoQXR0cmlidXRlQ2hhbmdlOwoKCi0gKEJPT0wpc2hvdWxkQ2hhbmdlVGV4
dEluUmFuZ2U6KE5TUmFuZ2UpYWZmZWN0ZWRDaGFyUmFuZ2UgcmVwbGFjZW1lbnRTdHJpbmc6KE5T
U3RyaW5nICopcmVwbGFjZW1lbnRTdHJpbmc7Ci0gKHZvaWQpZGlkQ2hhbmdlVGV4dDsKCi0gKE5T
UmFuZ2UpcmFuZ2VGb3JVc2VyVGV4dENoYW5nZTsKLSAoTlNSYW5nZSlyYW5nZUZvclVzZXJDaGFy
YWN0ZXJBdHRyaWJ1dGVDaGFuZ2U7Ci0gKE5TUmFuZ2UpcmFuZ2VGb3JVc2VyUGFyYWdyYXBoQXR0
cmlidXRlQ2hhbmdlOwoKCi0gKHZvaWQpc2V0VXNlc0ZpbmRQYW5lbDooQk9PTClmbGFnOwotIChC
T09MKXVzZXNGaW5kUGFuZWw7CgotICh2b2lkKXNldEFsbG93c0RvY3VtZW50QmFja2dyb3VuZENv
bG9yQ2hhbmdlOihCT09MKWZsYWc7Ci0gKEJPT0wpYWxsb3dzRG9jdW1lbnRCYWNrZ3JvdW5kQ29s
b3JDaGFuZ2U7CgotICh2b2lkKXNldERlZmF1bHRQYXJhZ3JhcGhTdHlsZTooTlNQYXJhZ3JhcGhT
dHlsZSAqKXBhcmFncmFwaFN0eWxlOwotIChOU1BhcmFncmFwaFN0eWxlICopZGVmYXVsdFBhcmFn
cmFwaFN0eWxlOwoKCi0gKHZvaWQpc2V0QWxsb3dzVW5kbzooQk9PTClmbGFnOwotIChCT09MKWFs
bG93c1VuZG87CgoKLSAodm9pZClicmVha1VuZG9Db2FsZXNjaW5nOwoKCgotIChCT09MKWlzQ29h
bGVzY2luZ1VuZG87CgoKCi0gKEJPT0wpYWxsb3dzSW1hZ2VFZGl0aW5nOwotICh2b2lkKXNldEFs
bG93c0ltYWdlRWRpdGluZzooQk9PTClmbGFnOwoKCi0gKHZvaWQpc2hvd0ZpbmRJbmRpY2F0b3JG
b3JSYW5nZTooTlNSYW5nZSljaGFyUmFuZ2U7CgoKCgoKLSAoaWQgPE5TVGV4dFZpZXdEZWxlZ2F0
ZT4pZGVsZWdhdGU7Ci0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxOU1RleHRWaWV3RGVsZWdhdGU+
KWFuT2JqZWN0OwotIChCT09MKWlzRWRpdGFibGU7Ci0gKHZvaWQpc2V0RWRpdGFibGU6KEJPT0wp
ZmxhZzsKLSAoQk9PTClpc1NlbGVjdGFibGU7Ci0gKHZvaWQpc2V0U2VsZWN0YWJsZTooQk9PTClm
bGFnOwotIChCT09MKWlzUmljaFRleHQ7Ci0gKHZvaWQpc2V0UmljaFRleHQ6KEJPT0wpZmxhZzsK
LSAoQk9PTClpbXBvcnRzR3JhcGhpY3M7Ci0gKHZvaWQpc2V0SW1wb3J0c0dyYXBoaWNzOihCT09M
KWZsYWc7Ci0gKEJPT0wpZHJhd3NCYWNrZ3JvdW5kOwotICh2b2lkKXNldERyYXdzQmFja2dyb3Vu
ZDooQk9PTClmbGFnOwotIChOU0NvbG9yICopYmFja2dyb3VuZENvbG9yOwotICh2b2lkKXNldEJh
Y2tncm91bmRDb2xvcjooTlNDb2xvciAqKWNvbG9yOwotIChCT09MKWlzRmllbGRFZGl0b3I7Ci0g
KHZvaWQpc2V0RmllbGRFZGl0b3I6KEJPT0wpZmxhZzsKLSAoQk9PTCl1c2VzRm9udFBhbmVsOwot
ICh2b2lkKXNldFVzZXNGb250UGFuZWw6KEJPT0wpZmxhZzsKLSAoQk9PTClpc1J1bGVyVmlzaWJs
ZTsKLSAodm9pZClzZXRTZWxlY3RlZFJhbmdlOihOU1JhbmdlKWNoYXJSYW5nZTsKCgoKCgoKLSAo
TlNBcnJheSAqKWFsbG93ZWRJbnB1dFNvdXJjZUxvY2FsZXM7Ci0gKHZvaWQpc2V0QWxsb3dlZElu
cHV0U291cmNlTG9jYWxlczooTlNBcnJheSAqKWxvY2FsZUlkZW50aWZpZXJzOwoKCkBlbmQKCkBp
bnRlcmZhY2UgTlNUZXh0VmlldyAoTlNUZXh0Q2hlY2tpbmcpCgoKCi0gKEJPT0wpc21hcnRJbnNl
cnREZWxldGVFbmFibGVkOwotICh2b2lkKXNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDooQk9P
TClmbGFnOwotIChOU1JhbmdlKXNtYXJ0RGVsZXRlUmFuZ2VGb3JQcm9wb3NlZFJhbmdlOihOU1Jh
bmdlKXByb3Bvc2VkQ2hhclJhbmdlOwoKLSAodm9pZCl0b2dnbGVTbWFydEluc2VydERlbGV0ZToo
aWQpc2VuZGVyOwoKCi0gKHZvaWQpc21hcnRJbnNlcnRGb3JTdHJpbmc6KE5TU3RyaW5nICopcGFz
dGVTdHJpbmcgcmVwbGFjaW5nUmFuZ2U6KE5TUmFuZ2UpY2hhclJhbmdlVG9SZXBsYWNlIGJlZm9y
ZVN0cmluZzooTlNTdHJpbmcgKiopYmVmb3JlU3RyaW5nIGFmdGVyU3RyaW5nOihOU1N0cmluZyAq
KilhZnRlclN0cmluZzsKLSAoTlNTdHJpbmcgKilzbWFydEluc2VydEJlZm9yZVN0cmluZ0ZvclN0
cmluZzooTlNTdHJpbmcgKilwYXN0ZVN0cmluZyByZXBsYWNpbmdSYW5nZTooTlNSYW5nZSljaGFy
UmFuZ2VUb1JlcGxhY2U7Ci0gKE5TU3RyaW5nICopc21hcnRJbnNlcnRBZnRlclN0cmluZ0ZvclN0
cmluZzooTlNTdHJpbmcgKilwYXN0ZVN0cmluZyByZXBsYWNpbmdSYW5nZTooTlNSYW5nZSljaGFy
UmFuZ2VUb1JlcGxhY2U7CgoKLSAodm9pZClzZXRBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWQ6KEJPT0wpZmxhZzsKLSAoQk9PTClpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5h
YmxlZDsKLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjooaWQpc2VuZGVy
OwotICh2b2lkKXNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOihCT09MKWZsYWc7Ci0g
KEJPT0wpaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDsKLSAodm9pZCl0b2dnbGVBdXRv
bWF0aWNMaW5rRGV0ZWN0aW9uOihpZClzZW5kZXI7CgoKCi0gKHZvaWQpc2V0QXV0b21hdGljRGF0
YURldGVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKLSAoQk9PTClpc0F1dG9tYXRpY0RhdGFEZXRl
Y3Rpb25FbmFibGVkOwotICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0RhdGFEZXRlY3Rpb246KGlkKXNl
bmRlcjsKLSAodm9pZClzZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZDooQk9PTClm
bGFnOwotIChCT09MKWlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ7Ci0gKHZvaWQp
dG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbjooaWQpc2VuZGVyOwotICh2b2lkKXNldEF1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQ6KEJPT0wpZmxhZzsKLSAoQk9PTClpc0F1dG9t
YXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQ7Ci0gKHZvaWQpdG9nZ2xlQXV0b21hdGljVGV4dFJl
cGxhY2VtZW50OihpZClzZW5kZXI7Ci0gKHZvaWQpc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0
aW9uRW5hYmxlZDooQk9PTClmbGFnOwotIChCT09MKWlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0
aW9uRW5hYmxlZDsKLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246KGlk
KXNlbmRlcjsKCi0gKE5TVGV4dENoZWNraW5nVHlwZXMpZW5hYmxlZFRleHRDaGVja2luZ1R5cGVz
OwotICh2b2lkKXNldEVuYWJsZWRUZXh0Q2hlY2tpbmdUeXBlczooTlNUZXh0Q2hlY2tpbmdUeXBl
cyljaGVja2luZ1R5cGVzOwoKCi0gKHZvaWQpY2hlY2tUZXh0SW5SYW5nZTooTlNSYW5nZSlyYW5n
ZSB0eXBlczooTlNUZXh0Q2hlY2tpbmdUeXBlcyljaGVja2luZ1R5cGVzIG9wdGlvbnM6KE5TRGlj
dGlvbmFyeSAqKW9wdGlvbnM7Ci0gKHZvaWQpaGFuZGxlVGV4dENoZWNraW5nUmVzdWx0czooTlNB
cnJheSAqKXJlc3VsdHMgZm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgdHlwZXM6KE5TVGV4dENoZWNr
aW5nVHlwZXMpY2hlY2tpbmdUeXBlcyBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zIG9y
dGhvZ3JhcGh5OihOU09ydGhvZ3JhcGh5ICopb3J0aG9ncmFwaHkgd29yZENvdW50OihOU0ludGVn
ZXIpd29yZENvdW50OwoKCi0gKHZvaWQpb3JkZXJGcm9udFN1YnN0aXR1dGlvbnNQYW5lbDooaWQp
c2VuZGVyOwotICh2b2lkKWNoZWNrVGV4dEluU2VsZWN0aW9uOihpZClzZW5kZXI7Ci0gKHZvaWQp
Y2hlY2tUZXh0SW5Eb2N1bWVudDooaWQpc2VuZGVyOwoKCgpAZW5kCgpAaW50ZXJmYWNlIE5TVGV4
dFZpZXcgKE5TRGVwcmVjYXRlZCkKLSAodm9pZCl0b2dnbGVCYXNlV3JpdGluZ0RpcmVjdGlvbjoo
aWQpc2VuZGVyIDsKCkBlbmQKCgoKQHByb3RvY29sIE5TVGV4dFZpZXdEZWxlZ2F0ZSA8TlNUZXh0
RGVsZWdhdGU+CkBvcHRpb25hbAoKLSAoQk9PTCl0ZXh0VmlldzooTlNUZXh0VmlldyAqKXRleHRW
aWV3IGNsaWNrZWRPbkxpbms6KGlkKWxpbmsgYXRJbmRleDooTlNVSW50ZWdlciljaGFySW5kZXg7
CgoKLSAodm9pZCl0ZXh0VmlldzooTlNUZXh0VmlldyAqKXRleHRWaWV3IGNsaWNrZWRPbkNlbGw6
KGlkIDxOU1RleHRBdHRhY2htZW50Q2VsbD4pY2VsbCBpblJlY3Q6KE5TUmVjdCljZWxsRnJhbWUg
YXRJbmRleDooTlNVSW50ZWdlciljaGFySW5kZXg7CgoKLSAodm9pZCl0ZXh0VmlldzooTlNUZXh0
VmlldyAqKXRleHRWaWV3IGRvdWJsZUNsaWNrZWRPbkNlbGw6KGlkIDxOU1RleHRBdHRhY2htZW50
Q2VsbD4pY2VsbCBpblJlY3Q6KE5TUmVjdCljZWxsRnJhbWUgYXRJbmRleDooTlNVSW50ZWdlcilj
aGFySW5kZXg7CgoKLSAodm9pZCl0ZXh0VmlldzooTlNUZXh0VmlldyAqKXZpZXcgZHJhZ2dlZENl
bGw6KGlkIDxOU1RleHRBdHRhY2htZW50Q2VsbD4pY2VsbCBpblJlY3Q6KE5TUmVjdClyZWN0IGV2
ZW50OihOU0V2ZW50ICopZXZlbnQgYXRJbmRleDooTlNVSW50ZWdlciljaGFySW5kZXg7CgoKLSAo
TlNBcnJheSAqKXRleHRWaWV3OihOU1RleHRWaWV3ICopdmlldyB3cml0YWJsZVBhc3RlYm9hcmRU
eXBlc0ZvckNlbGw6KGlkIDxOU1RleHRBdHRhY2htZW50Q2VsbD4pY2VsbCBhdEluZGV4OihOU1VJ
bnRlZ2VyKWNoYXJJbmRleDsKCgotIChCT09MKXRleHRWaWV3OihOU1RleHRWaWV3ICopdmlldyB3
cml0ZUNlbGw6KGlkIDxOU1RleHRBdHRhY2htZW50Q2VsbD4pY2VsbCBhdEluZGV4OihOU1VJbnRl
Z2VyKWNoYXJJbmRleCB0b1Bhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBib2FyZCB0eXBlOihO
U1N0cmluZyAqKXR5cGUgOwoKCi0gKE5TUmFuZ2UpdGV4dFZpZXc6KE5TVGV4dFZpZXcgKil0ZXh0
VmlldyB3aWxsQ2hhbmdlU2VsZWN0aW9uRnJvbUNoYXJhY3RlclJhbmdlOihOU1JhbmdlKW9sZFNl
bGVjdGVkQ2hhclJhbmdlIHRvQ2hhcmFjdGVyUmFuZ2U6KE5TUmFuZ2UpbmV3U2VsZWN0ZWRDaGFy
UmFuZ2U7CgoKCi0gKE5TQXJyYXkgKil0ZXh0VmlldzooTlNUZXh0VmlldyAqKXRleHRWaWV3IHdp
bGxDaGFuZ2VTZWxlY3Rpb25Gcm9tQ2hhcmFjdGVyUmFuZ2VzOihOU0FycmF5ICopb2xkU2VsZWN0
ZWRDaGFyUmFuZ2VzIHRvQ2hhcmFjdGVyUmFuZ2VzOihOU0FycmF5ICopbmV3U2VsZWN0ZWRDaGFy
UmFuZ2VzOwoKCi0gKEJPT0wpdGV4dFZpZXc6KE5TVGV4dFZpZXcgKil0ZXh0VmlldyBzaG91bGRD
aGFuZ2VUZXh0SW5SYW5nZXM6KE5TQXJyYXkgKilhZmZlY3RlZFJhbmdlcyByZXBsYWNlbWVudFN0
cmluZ3M6KE5TQXJyYXkgKilyZXBsYWNlbWVudFN0cmluZ3M7CgoKLSAoTlNEaWN0aW9uYXJ5ICop
dGV4dFZpZXc6KE5TVGV4dFZpZXcgKil0ZXh0VmlldyBzaG91bGRDaGFuZ2VUeXBpbmdBdHRyaWJ1
dGVzOihOU0RpY3Rpb25hcnkgKilvbGRUeXBpbmdBdHRyaWJ1dGVzIHRvQXR0cmlidXRlczooTlNE
aWN0aW9uYXJ5ICopbmV3VHlwaW5nQXR0cmlidXRlczsKCgoKLSAodm9pZCl0ZXh0Vmlld0RpZENo
YW5nZVNlbGVjdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CgoKLSAodm9pZCl0
ZXh0Vmlld0RpZENoYW5nZVR5cGluZ0F0dHJpYnV0ZXM6KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uOwoKLSAoTlNTdHJpbmcgKil0ZXh0VmlldzooTlNUZXh0VmlldyAqKXRleHRWaWV3IHdp
bGxEaXNwbGF5VG9vbFRpcDooTlNTdHJpbmcgKil0b29sdGlwIGZvckNoYXJhY3RlckF0SW5kZXg6
KE5TVUludGVnZXIpY2hhcmFjdGVySW5kZXg7CgoKLSAoTlNBcnJheSAqKXRleHRWaWV3OihOU1Rl
eHRWaWV3ICopdGV4dFZpZXcgY29tcGxldGlvbnM6KE5TQXJyYXkgKil3b3JkcyBmb3JQYXJ0aWFs
V29yZFJhbmdlOihOU1JhbmdlKWNoYXJSYW5nZSBpbmRleE9mU2VsZWN0ZWRJdGVtOihOU0ludGVn
ZXIgKilpbmRleDsKCgoKLSAoQk9PTCl0ZXh0VmlldzooTlNUZXh0VmlldyAqKXRleHRWaWV3IHNo
b3VsZENoYW5nZVRleHRJblJhbmdlOihOU1JhbmdlKWFmZmVjdGVkQ2hhclJhbmdlIHJlcGxhY2Vt
ZW50U3RyaW5nOihOU1N0cmluZyAqKXJlcGxhY2VtZW50U3RyaW5nOwoKCi0gKEJPT0wpdGV4dFZp
ZXc6KE5TVGV4dFZpZXcgKil0ZXh0VmlldyBkb0NvbW1hbmRCeVNlbGVjdG9yOihTRUwpY29tbWFu
ZFNlbGVjdG9yOwoKCi0gKE5TSW50ZWdlcil0ZXh0VmlldzooTlNUZXh0VmlldyAqKXRleHRWaWV3
IHNob3VsZFNldFNwZWxsaW5nU3RhdGU6KE5TSW50ZWdlcil2YWx1ZSByYW5nZTooTlNSYW5nZSlh
ZmZlY3RlZENoYXJSYW5nZTsKCgotIChOU01lbnUgKil0ZXh0VmlldzooTlNUZXh0VmlldyAqKXZp
ZXcgbWVudTooTlNNZW51ICopbWVudSBmb3JFdmVudDooTlNFdmVudCAqKWV2ZW50IGF0SW5kZXg6
KE5TVUludGVnZXIpY2hhckluZGV4OwoKCgoKLSAoTlNEaWN0aW9uYXJ5ICopdGV4dFZpZXc6KE5T
VGV4dFZpZXcgKil2aWV3IHdpbGxDaGVja1RleHRJblJhbmdlOihOU1JhbmdlKXJhbmdlIG9wdGlv
bnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnMgdHlwZXM6KE5TVGV4dENoZWNraW5nVHlwZXMgKilj
aGVja2luZ1R5cGVzOwoKCi0gKE5TQXJyYXkgKil0ZXh0VmlldzooTlNUZXh0VmlldyAqKXZpZXcg
ZGlkQ2hlY2tUZXh0SW5SYW5nZTooTlNSYW5nZSlyYW5nZSB0eXBlczooTlNUZXh0Q2hlY2tpbmdU
eXBlcyljaGVja2luZ1R5cGVzIG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnMgcmVzdWx0
czooTlNBcnJheSAqKXJlc3VsdHMgb3J0aG9ncmFwaHk6KE5TT3J0aG9ncmFwaHkgKilvcnRob2dy
YXBoeSB3b3JkQ291bnQ6KE5TSW50ZWdlcil3b3JkQ291bnQ7CgoKCgotIChCT09MKXRleHRWaWV3
OihOU1RleHRWaWV3ICopdGV4dFZpZXcgY2xpY2tlZE9uTGluazooaWQpbGluazsKLSAodm9pZCl0
ZXh0VmlldzooTlNUZXh0VmlldyAqKXRleHRWaWV3IGNsaWNrZWRPbkNlbGw6KGlkIDxOU1RleHRB
dHRhY2htZW50Q2VsbD4pY2VsbCBpblJlY3Q6KE5TUmVjdCljZWxsRnJhbWU7Ci0gKHZvaWQpdGV4
dFZpZXc6KE5TVGV4dFZpZXcgKil0ZXh0VmlldyBkb3VibGVDbGlja2VkT25DZWxsOihpZCA8TlNU
ZXh0QXR0YWNobWVudENlbGw+KWNlbGwgaW5SZWN0OihOU1JlY3QpY2VsbEZyYW1lOwotICh2b2lk
KXRleHRWaWV3OihOU1RleHRWaWV3ICopdmlldyBkcmFnZ2VkQ2VsbDooaWQgPE5TVGV4dEF0dGFj
aG1lbnRDZWxsPiljZWxsIGluUmVjdDooTlNSZWN0KXJlY3QgZXZlbnQ6KE5TRXZlbnQgKilldmVu
dDsKLSAoTlNVbmRvTWFuYWdlciAqKXVuZG9NYW5hZ2VyRm9yVGV4dFZpZXc6KE5TVGV4dFZpZXcg
Kil2aWV3OwoKQGVuZAoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUZXh0Vmlld1dpbGxDaGFuZ2VO
b3RpZnlpbmdUZXh0Vmlld05vdGlmaWNhdGlvbjsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1Rl
eHRWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uOwoKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKk5TVGV4dFZpZXdEaWRDaGFuZ2VUeXBpbmdBdHRyaWJ1dGVzTm90aWZpY2F0aW9uIDsKIyAx
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05T
VGFibGVWaWV3LmgiIDIgMwoKQGNsYXNzIE5TVGFibGVIZWFkZXJWaWV3OwpAY2xhc3MgTlNUYWJs
ZUNvbHVtbjsKQGNsYXNzIE5TTXV0YWJsZUFycmF5OwpAY2xhc3MgTlNJbmRleFNldCwgTlNNdXRh
YmxlSW5kZXhTZXQ7CkBwcm90b2NvbCBOU1RhYmxlVmlld0RlbGVnYXRlLCBOU1RhYmxlVmlld0Rh
dGFTb3VyY2U7Cgp0eXBlZGVmIHN0cnVjdCBfX1R2RmxhZ3MgewojIDQyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUYWJsZVZpZXcuaCIgMwog
ICAgdW5zaWduZWQgaW50IHJlZnVzZXNGaXJzdFJlc3BvbmRlcjoxOwogICAgdW5zaWduZWQgaW50
IG1vdmVkUG9zdGluZ0Rpc2FibGVDb3VudDo2OwogICAgdW5zaWduZWQgaW50IHNlbGVjdGlvblBv
c3RpbmdEaXNhYmxlQ291bnQ6NzsKICAgIHVuc2lnbmVkIGludCBkYXRhU291cmNlU2V0T2JqZWN0
VmFsdWU6MTsKICAgIHVuc2lnbmVkIGludCBvbGRBdXRvcmVzaXplc0FsbENvbHVtbnNUb0ZpdDox
OwogICAgdW5zaWduZWQgaW50IGRlbGVnYXRlU2VsZWN0aW9uU2hvdWxkQ2hhbmdlSW5UYWJsZVZp
ZXc6MTsKICAgIHVuc2lnbmVkIGludCBkZWxlZ2F0ZVNob3VsZFNlbGVjdFRhYmxlQ29sdW1uOjE7
CiAgICB1bnNpZ25lZCBpbnQgZGVsZWdhdGVTaG91bGRTZWxlY3RSb3c6MTsKICAgIHVuc2lnbmVk
IGludCBkZWxlZ2F0ZVNob3VsZEVkaXRUYWJsZUNvbHVtbjoxOwogICAgdW5zaWduZWQgaW50IGRl
bGVnYXRlV2lsbERpc3BsYXlDZWxsOjE7CiAgICB1bnNpZ25lZCBpbnQgY29tcGFyZVdpZHRoV2l0
aFN1cGVydmlldzoyOwogICAgdW5zaWduZWQgaW50IGNoYW5naW5nTGF5b3V0OjE7CiAgICB1bnNp
Z25lZCBpbnQgc2VsZWN0aW9uVHlwZToyOwogICAgdW5zaWduZWQgaW50IGFsbG93c0NvbHVtblNl
bGVjdGlvbjoxOwogICAgdW5zaWduZWQgaW50IGFsbG93c011bHRpcGxlU2VsZWN0aW9uOjE7CiAg
ICB1bnNpZ25lZCBpbnQgYWxsb3dzRW1wdHlTZWxlY3Rpb246MTsKICAgIHVuc2lnbmVkIGludCBv
bGREcmF3c0dyaWRGbGFnOjE7CiAgICB1bnNpZ25lZCBpbnQgYWxsb3dzQ29sdW1uUmVzaXppbmc6
MTsKICAgIHVuc2lnbmVkIGludCBhbGxvd3NDb2x1bW5SZW9yZGVyaW5nOjE7Cgp9IF9UdkZsYWdz
OwoKCgplbnVtIHsgTlNUYWJsZVZpZXdEcm9wT24sIE5TVGFibGVWaWV3RHJvcEFib3ZlIH07CnR5
cGVkZWYgTlNVSW50ZWdlciBOU1RhYmxlVmlld0Ryb3BPcGVyYXRpb247CgoKQGludGVyZmFjZSBO
U1RhYmxlVmlldyA6IE5TQ29udHJvbCA8TlNVc2VySW50ZXJmYWNlVmFsaWRhdGlvbnMsIE5TVGV4
dFZpZXdEZWxlZ2F0ZT4KewoKICAgIE5TVGFibGVIZWFkZXJWaWV3ICpfaGVhZGVyVmlldzsKICAg
IE5TVmlldyAqX2Nvcm5lclZpZXc7CiAgICBOU011dGFibGVBcnJheSAqX3RhYmxlQ29sdW1uczsK
ICAgIE5TQ2VsbCAqX2VkaXRpbmdDZWxsOwogICAgaWQgX2RlbGVnYXRlOwogICAgaWQgX2RhdGFT
b3VyY2U7CiAgICBOU1NpemUgX2ludGVyY2VsbFNwYWNpbmc7CiAgICBDR0Zsb2F0IF9yb3dIZWln
aHQ7CiAgICBOU0ludGVnZXIgX2xhc3RTZWxlY3RlZENvbHVtbjsKICAgIE5TSW50ZWdlciBfbGFz
dFNlbGVjdGVkUm93OwogICAgTlNJbnRlZ2VyIF9lZGl0aW5nUm93OwogICAgTlNJbnRlZ2VyIF9l
ZGl0aW5nQ29sdW1uOwogICAgTlNNdXRhYmxlSW5kZXhTZXQgKl9zZWxlY3RlZENvbHVtbnM7CiAg
ICBOU011dGFibGVJbmRleFNldCAqX3NlbGVjdGVkUm93czsKICAgIE5TSW1hZ2UgKl9ib2R5RHJh
Z0ltYWdlOwogICAgTlNDb2xvciAqX2JhY2tncm91bmRDb2xvcjsKICAgIE5TQ29sb3IgKl9ncmlk
Q29sb3I7CiAgICBDR0Zsb2F0IF9kcmFnWVBvczsKICAgIGlkIF90YXJnZXQ7CiAgICBTRUwgX2Fj
dGlvbjsKICAgIFNFTCBfZG91YmxlQWN0aW9uOwogICAgTlNSZWN0IF9yZWN0T2ZMYXN0Q29sdW1u
OwogICAgTlNJbnRlZ2VyIF9sYXN0Q2FjaGVkUmVjdENvbHVtbjsKICAgIE5TUmVjdCBfcmVjdE9m
TGFzdFJvdzsKICAgIE5TSW50ZWdlciBfbGFzdENhY2hlZFJlY3RSb3c7CiAgICBfVHZGbGFncyBf
dHZGbGFnczsKICAgIGlkIF9yZXNlcnZlZDsKfQoKCgotICh2b2lkKXNldERhdGFTb3VyY2U6KGlk
IDxOU1RhYmxlVmlld0RhdGFTb3VyY2U+KWFTb3VyY2U7Ci0gKGlkIDxOU1RhYmxlVmlld0RhdGFT
b3VyY2U+KWRhdGFTb3VyY2U7CgoKCi0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxOU1RhYmxlVmll
d0RlbGVnYXRlPilkZWxlZ2F0ZTsKLSAoaWQgPE5TVGFibGVWaWV3RGVsZWdhdGU+KWRlbGVnYXRl
OwoKCgotICh2b2lkKXNldEhlYWRlclZpZXc6KE5TVGFibGVIZWFkZXJWaWV3ICopaGVhZGVyVmll
dzsKLSAoTlNUYWJsZUhlYWRlclZpZXcgKiloZWFkZXJWaWV3OwoKCgotICh2b2lkKXNldENvcm5l
clZpZXc6KE5TVmlldyAqKWNvcm5lclZpZXc7Ci0gKE5TVmlldyAqKWNvcm5lclZpZXc7CgoKCi0g
KHZvaWQpc2V0QWxsb3dzQ29sdW1uUmVvcmRlcmluZzooQk9PTClmbGFnOwotIChCT09MKWFsbG93
c0NvbHVtblJlb3JkZXJpbmc7CgoKCi0gKHZvaWQpc2V0QWxsb3dzQ29sdW1uUmVzaXppbmc6KEJP
T0wpZmxhZzsKLSAoQk9PTClhbGxvd3NDb2x1bW5SZXNpemluZzsKCmVudW0gewoKCiAgICBOU1Rh
YmxlVmlld05vQ29sdW1uQXV0b3Jlc2l6aW5nID0gMCwKCgoKICAgIE5TVGFibGVWaWV3VW5pZm9y
bUNvbHVtbkF1dG9yZXNpemluZ1N0eWxlLAoKCgoKICAgIE5TVGFibGVWaWV3U2VxdWVudGlhbENv
bHVtbkF1dG9yZXNpemluZ1N0eWxlLAogICAgTlNUYWJsZVZpZXdSZXZlcnNlU2VxdWVudGlhbENv
bHVtbkF1dG9yZXNpemluZ1N0eWxlLAoKCgoKCiAgICBOU1RhYmxlVmlld0xhc3RDb2x1bW5Pbmx5
QXV0b3Jlc2l6aW5nU3R5bGUsCiAgICBOU1RhYmxlVmlld0ZpcnN0Q29sdW1uT25seUF1dG9yZXNp
emluZ1N0eWxlCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1RhYmxlVmlld0NvbHVtbkF1dG9yZXNp
emluZ1N0eWxlOwoKCgoKLSAodm9pZClzZXRDb2x1bW5BdXRvcmVzaXppbmdTdHlsZTooTlNUYWJs
ZVZpZXdDb2x1bW5BdXRvcmVzaXppbmdTdHlsZSlzdHlsZSA7Ci0gKE5TVGFibGVWaWV3Q29sdW1u
QXV0b3Jlc2l6aW5nU3R5bGUpY29sdW1uQXV0b3Jlc2l6aW5nU3R5bGUgOwoKCgplbnVtIHsKICAg
IE5TVGFibGVWaWV3R3JpZE5vbmUgPSAwLAogICAgTlNUYWJsZVZpZXdTb2xpZFZlcnRpY2FsR3Jp
ZExpbmVNYXNrID0gMSA8PCAwLAogICAgTlNUYWJsZVZpZXdTb2xpZEhvcml6b250YWxHcmlkTGlu
ZU1hc2sgPSAxIDw8IDEKfTsKCgoKLSAodm9pZClzZXRHcmlkU3R5bGVNYXNrOihOU1VJbnRlZ2Vy
KWdyaWRUeXBlIDsKLSAoTlNVSW50ZWdlcilncmlkU3R5bGVNYXNrIDsKCgoKLSAodm9pZClzZXRJ
bnRlcmNlbGxTcGFjaW5nOihOU1NpemUpYVNpemU7Ci0gKE5TU2l6ZSlpbnRlcmNlbGxTcGFjaW5n
OwoKCgotICh2b2lkKXNldFVzZXNBbHRlcm5hdGluZ1Jvd0JhY2tncm91bmRDb2xvcnM6KEJPT0wp
dXNlQWx0ZXJuYXRpbmdSb3dDb2xvcnMgOwotIChCT09MKXVzZXNBbHRlcm5hdGluZ1Jvd0JhY2tn
cm91bmRDb2xvcnMgOwoKCgotICh2b2lkKXNldEJhY2tncm91bmRDb2xvcjooTlNDb2xvciAqKWNv
bG9yOwotIChOU0NvbG9yICopYmFja2dyb3VuZENvbG9yOwoKCgotICh2b2lkKXNldEdyaWRDb2xv
cjooTlNDb2xvciAqKWNvbG9yOwotIChOU0NvbG9yICopZ3JpZENvbG9yOwoKCgotICh2b2lkKXNl
dFJvd0hlaWdodDooQ0dGbG9hdClyb3dIZWlnaHQ7Ci0gKENHRmxvYXQpcm93SGVpZ2h0OwoKCgot
ICh2b2lkKW5vdGVIZWlnaHRPZlJvd3NXaXRoSW5kZXhlc0NoYW5nZWQ6KE5TSW5kZXhTZXQgKilp
bmRleFNldCA7CgoKCi0gKE5TQXJyYXkgKil0YWJsZUNvbHVtbnM7CgoKCi0gKE5TSW50ZWdlcilu
dW1iZXJPZkNvbHVtbnM7CgoKCi0gKE5TSW50ZWdlciludW1iZXJPZlJvd3M7CgoKCi0gKHZvaWQp
YWRkVGFibGVDb2x1bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbjsKCgoKLSAodm9pZCly
ZW1vdmVUYWJsZUNvbHVtbjooTlNUYWJsZUNvbHVtbiAqKXRhYmxlQ29sdW1uOwoKCgotICh2b2lk
KW1vdmVDb2x1bW46KE5TSW50ZWdlcilvbGRJbmRleCB0b0NvbHVtbjooTlNJbnRlZ2VyKW5ld0lu
ZGV4OwoKCgotIChOU0ludGVnZXIpY29sdW1uV2l0aElkZW50aWZpZXI6KGlkKWlkZW50aWZpZXI7
CgoKCi0gKE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbldpdGhJZGVudGlmaWVyOihpZClpZGVu
dGlmaWVyOwoKLSAodm9pZCl0aWxlOwotICh2b2lkKXNpemVUb0ZpdDsKLSAodm9pZClzaXplTGFz
dENvbHVtblRvRml0OwoKLSAodm9pZClzY3JvbGxSb3dUb1Zpc2libGU6KE5TSW50ZWdlcilyb3c7
Ci0gKHZvaWQpc2Nyb2xsQ29sdW1uVG9WaXNpYmxlOihOU0ludGVnZXIpY29sdW1uOwoKLSAodm9p
ZClyZWxvYWREYXRhOwotICh2b2lkKW5vdGVOdW1iZXJPZlJvd3NDaGFuZ2VkOwoKCgotICh2b2lk
KXJlbG9hZERhdGFGb3JSb3dJbmRleGVzOihOU0luZGV4U2V0ICopcm93SW5kZXhlcyBjb2x1bW5J
bmRleGVzOihOU0luZGV4U2V0ICopY29sdW1uSW5kZXhlcyA7CgotIChOU0ludGVnZXIpZWRpdGVk
Q29sdW1uOwotIChOU0ludGVnZXIpZWRpdGVkUm93OwoKLSAoTlNJbnRlZ2VyKWNsaWNrZWRDb2x1
bW47Ci0gKE5TSW50ZWdlciljbGlja2VkUm93OwoKLSAodm9pZClzZXREb3VibGVBY3Rpb246KFNF
TClhU2VsZWN0b3I7Ci0gKFNFTClkb3VibGVBY3Rpb247CgoKCgotICh2b2lkKXNldFNvcnREZXNj
cmlwdG9yczooTlNBcnJheSAqKWFycmF5IDsKLSAoTlNBcnJheSAqKXNvcnREZXNjcmlwdG9ycyA7
CgoKCi0gKHZvaWQpc2V0SW5kaWNhdG9ySW1hZ2U6KE5TSW1hZ2UgKilhbkltYWdlIGluVGFibGVD
b2x1bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbjsKLSAoTlNJbWFnZSAqKWluZGljYXRv
ckltYWdlSW5UYWJsZUNvbHVtbjooTlNUYWJsZUNvbHVtbiAqKXRhYmxlQ29sdW1uOwoKCgotICh2
b2lkKXNldEhpZ2hsaWdodGVkVGFibGVDb2x1bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVt
bjsKLSAoTlNUYWJsZUNvbHVtbiAqKWhpZ2hsaWdodGVkVGFibGVDb2x1bW47CgoKCgoKCgotICh2
b2lkKXNldFZlcnRpY2FsTW90aW9uQ2FuQmVnaW5EcmFnOihCT09MKWZsYWc7Ci0gKEJPT0wpdmVy
dGljYWxNb3Rpb25DYW5CZWdpbkRyYWc7CgoKCgoKLSAoQk9PTCljYW5EcmFnUm93c1dpdGhJbmRl
eGVzOihOU0luZGV4U2V0ICopcm93SW5kZXhlcyBhdFBvaW50OihOU1BvaW50KW1vdXNlRG93blBv
aW50IDsKCgoKCgotIChOU0ltYWdlICopZHJhZ0ltYWdlRm9yUm93c1dpdGhJbmRleGVzOihOU0lu
ZGV4U2V0ICopZHJhZ1Jvd3MgdGFibGVDb2x1bW5zOihOU0FycmF5ICopdGFibGVDb2x1bW5zIGV2
ZW50OihOU0V2ZW50KilkcmFnRXZlbnQgb2Zmc2V0OihOU1BvaW50UG9pbnRlcilkcmFnSW1hZ2VP
ZmZzZXQgOwoKCgotICh2b2lkKXNldERyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazooTlNEcmFn
T3BlcmF0aW9uKW1hc2sgZm9yTG9jYWw6KEJPT0wpaXNMb2NhbCA7CgoKCi0gKHZvaWQpc2V0RHJv
cFJvdzooTlNJbnRlZ2VyKXJvdyBkcm9wT3BlcmF0aW9uOihOU1RhYmxlVmlld0Ryb3BPcGVyYXRp
b24pZHJvcE9wZXJhdGlvbjsKCgoKCgoKCi0gKHZvaWQpc2V0QWxsb3dzTXVsdGlwbGVTZWxlY3Rp
b246KEJPT0wpZmxhZzsKLSAoQk9PTClhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsKCgoKLSAodm9p
ZClzZXRBbGxvd3NFbXB0eVNlbGVjdGlvbjooQk9PTClmbGFnOwotIChCT09MKWFsbG93c0VtcHR5
U2VsZWN0aW9uOwoKCgotICh2b2lkKXNldEFsbG93c0NvbHVtblNlbGVjdGlvbjooQk9PTClmbGFn
OwotIChCT09MKWFsbG93c0NvbHVtblNlbGVjdGlvbjsKCi0gKHZvaWQpc2VsZWN0QWxsOihpZClz
ZW5kZXI7CgotICh2b2lkKWRlc2VsZWN0QWxsOihpZClzZW5kZXI7CgoKCgoKLSAodm9pZClzZWxl
Y3RDb2x1bW5JbmRleGVzOihOU0luZGV4U2V0ICopaW5kZXhlcyBieUV4dGVuZGluZ1NlbGVjdGlv
bjooQk9PTClleHRlbmQgOwoKCgoKCgotICh2b2lkKXNlbGVjdFJvd0luZGV4ZXM6KE5TSW5kZXhT
ZXQgKilpbmRleGVzIGJ5RXh0ZW5kaW5nU2VsZWN0aW9uOihCT09MKWV4dGVuZCA7CgotIChOU0lu
ZGV4U2V0ICopc2VsZWN0ZWRDb2x1bW5JbmRleGVzIDsKLSAoTlNJbmRleFNldCAqKXNlbGVjdGVk
Um93SW5kZXhlcyA7CgotICh2b2lkKWRlc2VsZWN0Q29sdW1uOihOU0ludGVnZXIpY29sdW1uOwot
ICh2b2lkKWRlc2VsZWN0Um93OihOU0ludGVnZXIpcm93OwotIChOU0ludGVnZXIpc2VsZWN0ZWRD
b2x1bW47Ci0gKE5TSW50ZWdlcilzZWxlY3RlZFJvdzsKLSAoQk9PTClpc0NvbHVtblNlbGVjdGVk
OihOU0ludGVnZXIpY29sdW1uOwotIChCT09MKWlzUm93U2VsZWN0ZWQ6KE5TSW50ZWdlcilyb3c7
Ci0gKE5TSW50ZWdlciludW1iZXJPZlNlbGVjdGVkQ29sdW1uczsKLSAoTlNJbnRlZ2VyKW51bWJl
ck9mU2VsZWN0ZWRSb3dzOwoKCgoKLSAoQk9PTClhbGxvd3NUeXBlU2VsZWN0IDsKLSAodm9pZClz
ZXRBbGxvd3NUeXBlU2VsZWN0OihCT09MKXZhbHVlIDsKCmVudW0gewoKCgoKICAgIE5TVGFibGVW
aWV3U2VsZWN0aW9uSGlnaGxpZ2h0U3R5bGVOb25lID0gLTEsCgoKCgoKICAgIE5TVGFibGVWaWV3
U2VsZWN0aW9uSGlnaGxpZ2h0U3R5bGVSZWd1bGFyID0gMCwKCgoKICAgIE5TVGFibGVWaWV3U2Vs
ZWN0aW9uSGlnaGxpZ2h0U3R5bGVTb3VyY2VMaXN0ID0gMSwKfTsKdHlwZWRlZiBOU0ludGVnZXIg
TlNUYWJsZVZpZXdTZWxlY3Rpb25IaWdobGlnaHRTdHlsZTsKCgoKLSAoTlNUYWJsZVZpZXdTZWxl
Y3Rpb25IaWdobGlnaHRTdHlsZSlzZWxlY3Rpb25IaWdobGlnaHRTdHlsZSA7Ci0gKHZvaWQpc2V0
U2VsZWN0aW9uSGlnaGxpZ2h0U3R5bGU6KE5TVGFibGVWaWV3U2VsZWN0aW9uSGlnaGxpZ2h0U3R5
bGUpc2VsZWN0aW9uSGlnaGxpZ2h0U3R5bGUgOwoKCgplbnVtIHsKCgogICAgTlNUYWJsZVZpZXdE
cmFnZ2luZ0Rlc3RpbmF0aW9uRmVlZGJhY2tTdHlsZU5vbmUgPSAtMSwKCgoKICAgIE5TVGFibGVW
aWV3RHJhZ2dpbmdEZXN0aW5hdGlvbkZlZWRiYWNrU3R5bGVSZWd1bGFyID0gMCwKCgoKICAgIE5T
VGFibGVWaWV3RHJhZ2dpbmdEZXN0aW5hdGlvbkZlZWRiYWNrU3R5bGVTb3VyY2VMaXN0ID0gMSwK
fTsKCgoKdHlwZWRlZiBOU0ludGVnZXIgTlNUYWJsZVZpZXdEcmFnZ2luZ0Rlc3RpbmF0aW9uRmVl
ZGJhY2tTdHlsZTsKCgoKLSAodm9pZClzZXREcmFnZ2luZ0Rlc3RpbmF0aW9uRmVlZGJhY2tTdHls
ZTooTlNUYWJsZVZpZXdEcmFnZ2luZ0Rlc3RpbmF0aW9uRmVlZGJhY2tTdHlsZSlzdHlsZSA7Ci0g
KE5TVGFibGVWaWV3RHJhZ2dpbmdEZXN0aW5hdGlvbkZlZWRiYWNrU3R5bGUpZHJhZ2dpbmdEZXN0
aW5hdGlvbkZlZWRiYWNrU3R5bGUgOwoKCgotIChOU1JlY3QpcmVjdE9mQ29sdW1uOihOU0ludGVn
ZXIpY29sdW1uOwoKCgotIChOU1JlY3QpcmVjdE9mUm93OihOU0ludGVnZXIpcm93OwoKCgotIChO
U0luZGV4U2V0ICopY29sdW1uSW5kZXhlc0luUmVjdDooTlNSZWN0KXJlY3QgOwoKCgotIChOU1Jh
bmdlKXJvd3NJblJlY3Q6KE5TUmVjdClyZWN0OwoKCgotIChOU0ludGVnZXIpY29sdW1uQXRQb2lu
dDooTlNQb2ludClwb2ludDsKCi0gKE5TSW50ZWdlcilyb3dBdFBvaW50OihOU1BvaW50KXBvaW50
OwoKCgotIChOU1JlY3QpZnJhbWVPZkNlbGxBdENvbHVtbjooTlNJbnRlZ2VyKWNvbHVtbiByb3c6
KE5TSW50ZWdlcilyb3c7CgoKCi0gKE5TQ2VsbCAqKXByZXBhcmVkQ2VsbEF0Q29sdW1uOihOU0lu
dGVnZXIpY29sdW1uIHJvdzooTlNJbnRlZ2VyKXJvdyA7CgoKCgotIChCT09MKXRleHRTaG91bGRC
ZWdpbkVkaXRpbmc6KE5TVGV4dCAqKXRleHRPYmplY3Q7Ci0gKEJPT0wpdGV4dFNob3VsZEVuZEVk
aXRpbmc6KE5TVGV4dCAqKXRleHRPYmplY3Q7Ci0gKHZvaWQpdGV4dERpZEJlZ2luRWRpdGluZzoo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0gKHZvaWQpdGV4dERpZEVuZEVkaXRpbmc6
KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotICh2b2lkKXRleHREaWRDaGFuZ2U6KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwoKCgoKLSAodm9pZClzZXRBdXRvc2F2ZU5hbWU6
KE5TU3RyaW5nICopbmFtZTsKLSAoTlNTdHJpbmcgKilhdXRvc2F2ZU5hbWU7CgoKCi0gKHZvaWQp
c2V0QXV0b3NhdmVUYWJsZUNvbHVtbnM6KEJPT0wpc2F2ZTsKLSAoQk9PTClhdXRvc2F2ZVRhYmxl
Q29sdW1uczsKCgoKCgoKLSAoQk9PTClzaG91bGRGb2N1c0NlbGw6KE5TQ2VsbCAqKWNlbGwgYXRD
b2x1bW46KE5TSW50ZWdlciljb2x1bW4gcm93OihOU0ludGVnZXIpcm93IDsKCgoKLSAoTlNJbnRl
Z2VyKWZvY3VzZWRDb2x1bW4gOwoKCgotICh2b2lkKXNldEZvY3VzZWRDb2x1bW46KE5TSW50ZWdl
cilmb2N1c2VkQ29sdW1uIDsKCgoKLSAodm9pZClwZXJmb3JtQ2xpY2tPbkNlbGxBdENvbHVtbjoo
TlNJbnRlZ2VyKWNvbHVtbiByb3c6KE5TSW50ZWdlcilyb3cgOwoKCgoKCi0gKHZvaWQpZWRpdENv
bHVtbjooTlNJbnRlZ2VyKWNvbHVtbiByb3c6KE5TSW50ZWdlcilyb3cgd2l0aEV2ZW50OihOU0V2
ZW50ICopdGhlRXZlbnQgc2VsZWN0OihCT09MKXNlbGVjdDsKLSAodm9pZClkcmF3Um93OihOU0lu
dGVnZXIpcm93IGNsaXBSZWN0OihOU1JlY3QpY2xpcFJlY3Q7Ci0gKHZvaWQpaGlnaGxpZ2h0U2Vs
ZWN0aW9uSW5DbGlwUmVjdDooTlNSZWN0KWNsaXBSZWN0OwotICh2b2lkKWRyYXdHcmlkSW5DbGlw
UmVjdDooTlNSZWN0KWNsaXBSZWN0OwotICh2b2lkKWRyYXdCYWNrZ3JvdW5kSW5DbGlwUmVjdDoo
TlNSZWN0KWNsaXBSZWN0IDsKCkBlbmQKCkBwcm90b2NvbCBOU1RhYmxlVmlld0RlbGVnYXRlIDxO
U0NvbnRyb2xUZXh0RWRpdGluZ0RlbGVnYXRlPgpAb3B0aW9uYWwKCgoKLSAodm9pZCl0YWJsZVZp
ZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHdpbGxEaXNwbGF5Q2VsbDooaWQpY2VsbCBmb3JU
YWJsZUNvbHVtbjooTlNUYWJsZUNvbHVtbiAqKXRhYmxlQ29sdW1uIHJvdzooTlNJbnRlZ2VyKXJv
dzsKLSAoQk9PTCl0YWJsZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHNob3VsZEVkaXRU
YWJsZUNvbHVtbjooTlNUYWJsZUNvbHVtbiAqKXRhYmxlQ29sdW1uIHJvdzooTlNJbnRlZ2VyKXJv
dzsKLSAoQk9PTClzZWxlY3Rpb25TaG91bGRDaGFuZ2VJblRhYmxlVmlldzooTlNUYWJsZVZpZXcg
Kil0YWJsZVZpZXc7CgoKCi0gKEJPT0wpdGFibGVWaWV3OihOU1RhYmxlVmlldyAqKXRhYmxlVmll
dyBzaG91bGRTZWxlY3RSb3c6KE5TSW50ZWdlcilyb3c7CgoKCi0gKE5TSW5kZXhTZXQgKil0YWJs
ZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHNlbGVjdGlvbkluZGV4ZXNGb3JQcm9wb3Nl
ZFNlbGVjdGlvbjooTlNJbmRleFNldCAqKXByb3Bvc2VkU2VsZWN0aW9uSW5kZXhlcyA7CgotIChC
T09MKXRhYmxlVmlldzooTlNUYWJsZVZpZXcgKil0YWJsZVZpZXcgc2hvdWxkU2VsZWN0VGFibGVD
b2x1bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbjsKCi0gKHZvaWQpdGFibGVWaWV3OihO
U1RhYmxlVmlldyAqKXRhYmxlVmlldyBtb3VzZURvd25JbkhlYWRlck9mVGFibGVDb2x1bW46KE5T
VGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbjsKLSAodm9pZCl0YWJsZVZpZXc6KE5TVGFibGVWaWV3
ICopdGFibGVWaWV3IGRpZENsaWNrVGFibGVDb2x1bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNv
bHVtbjsKLSAodm9pZCl0YWJsZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IGRpZERyYWdU
YWJsZUNvbHVtbjooTlNUYWJsZUNvbHVtbiAqKXRhYmxlQ29sdW1uOwoKCgoKLSAoTlNTdHJpbmcg
Kil0YWJsZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHRvb2xUaXBGb3JDZWxsOihOU0Nl
bGwgKiljZWxsIHJlY3Q6KE5TUmVjdFBvaW50ZXIpcmVjdCB0YWJsZUNvbHVtbjooTlNUYWJsZUNv
bHVtbiAqKXRhYmxlQ29sdW1uIHJvdzooTlNJbnRlZ2VyKXJvdyBtb3VzZUxvY2F0aW9uOihOU1Bv
aW50KW1vdXNlTG9jYXRpb24gOwoKCgoKLSAoQ0dGbG9hdCl0YWJsZVZpZXc6KE5TVGFibGVWaWV3
ICopdGFibGVWaWV3IGhlaWdodE9mUm93OihOU0ludGVnZXIpcm93IDsKCgoKCi0gKE5TU3RyaW5n
ICopdGFibGVWaWV3OihOU1RhYmxlVmlldyAqKXRhYmxlVmlldyB0eXBlU2VsZWN0U3RyaW5nRm9y
VGFibGVDb2x1bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbiByb3c6KE5TSW50ZWdlcily
b3cgOwoKCgoKLSAoTlNJbnRlZ2VyKXRhYmxlVmlldzooTlNUYWJsZVZpZXcgKil0YWJsZVZpZXcg
bmV4dFR5cGVTZWxlY3RNYXRjaEZyb21Sb3c6KE5TSW50ZWdlcilzdGFydFJvdyB0b1JvdzooTlNJ
bnRlZ2VyKWVuZFJvdyBmb3JTdHJpbmc6KE5TU3RyaW5nICopc2VhcmNoU3RyaW5nIDsKCgoKCi0g
KEJPT0wpdGFibGVWaWV3OihOU1RhYmxlVmlldyAqKXRhYmxlVmlldyBzaG91bGRUeXBlU2VsZWN0
Rm9yRXZlbnQ6KE5TRXZlbnQgKilldmVudCB3aXRoQ3VycmVudFNlYXJjaFN0cmluZzooTlNTdHJp
bmcgKilzZWFyY2hTdHJpbmcgOwoKCgoKLSAoQk9PTCl0YWJsZVZpZXc6KE5TVGFibGVWaWV3ICop
dGFibGVWaWV3IHNob3VsZFNob3dDZWxsRXhwYW5zaW9uRm9yVGFibGVDb2x1bW46KE5TVGFibGVD
b2x1bW4gKil0YWJsZUNvbHVtbiByb3c6KE5TSW50ZWdlcilyb3cgOwoKCgoKLSAoQk9PTCl0YWJs
ZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHNob3VsZFRyYWNrQ2VsbDooTlNDZWxsICop
Y2VsbCBmb3JUYWJsZUNvbHVtbjooTlNUYWJsZUNvbHVtbiAqKXRhYmxlQ29sdW1uIHJvdzooTlNJ
bnRlZ2VyKXJvdyA7CgoKCgoKCi0gKE5TQ2VsbCAqKXRhYmxlVmlldzooTlNUYWJsZVZpZXcgKil0
YWJsZVZpZXcgZGF0YUNlbGxGb3JUYWJsZUNvbHVtbjooTlNUYWJsZUNvbHVtbiAqKXRhYmxlQ29s
dW1uIHJvdzooTlNJbnRlZ2VyKXJvdyA7CgoKCgotIChCT09MKXRhYmxlVmlldzooTlNUYWJsZVZp
ZXcgKil0YWJsZVZpZXcgaXNHcm91cFJvdzooTlNJbnRlZ2VyKXJvdyA7CgoKCgoKLSAoQ0dGbG9h
dCl0YWJsZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHNpemVUb0ZpdFdpZHRoT2ZDb2x1
bW46KE5TSW50ZWdlciljb2x1bW4gOwoKCgoKLSAoQk9PTCl0YWJsZVZpZXc6KE5TVGFibGVWaWV3
ICopdGFibGVWaWV3IHNob3VsZFJlb3JkZXJDb2x1bW46KE5TSW50ZWdlciljb2x1bW5JbmRleCB0
b0NvbHVtbjooTlNJbnRlZ2VyKW5ld0NvbHVtbkluZGV4IDsKCgoKLSAodm9pZCl0YWJsZVZpZXdT
ZWxlY3Rpb25EaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotICh2b2lk
KXRhYmxlVmlld0NvbHVtbkRpZE1vdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwot
ICh2b2lkKXRhYmxlVmlld0NvbHVtbkRpZFJlc2l6ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb247Ci0gKHZvaWQpdGFibGVWaWV3U2VsZWN0aW9uSXNDaGFuZ2luZzooTlNOb3RpZmljYXRp
b24gKilub3RpZmljYXRpb247CgpAZW5kCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1RhYmxl
Vmlld1NlbGVjdGlvbkRpZENoYW5nZU5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
TlNUYWJsZVZpZXdDb2x1bW5EaWRNb3ZlTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU1RhYmxlVmlld0NvbHVtbkRpZFJlc2l6ZU5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqTlNUYWJsZVZpZXdTZWxlY3Rpb25Jc0NoYW5naW5nTm90aWZpY2F0aW9uOwoKQHByb3Rv
Y29sIE5TVGFibGVWaWV3RGF0YVNvdXJjZSA8TlNPYmplY3Q+CkBvcHRpb25hbAoKCgotIChOU0lu
dGVnZXIpbnVtYmVyT2ZSb3dzSW5UYWJsZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3Owot
IChpZCl0YWJsZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IG9iamVjdFZhbHVlRm9yVGFi
bGVDb2x1bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbiByb3c6KE5TSW50ZWdlcilyb3c7
CgoKCi0gKHZvaWQpdGFibGVWaWV3OihOU1RhYmxlVmlldyAqKXRhYmxlVmlldyBzZXRPYmplY3RW
YWx1ZTooaWQpb2JqZWN0IGZvclRhYmxlQ29sdW1uOihOU1RhYmxlQ29sdW1uICopdGFibGVDb2x1
bW4gcm93OihOU0ludGVnZXIpcm93OwoKCgoKLSAodm9pZCl0YWJsZVZpZXc6KE5TVGFibGVWaWV3
ICopdGFibGVWaWV3IHNvcnREZXNjcmlwdG9yc0RpZENoYW5nZTooTlNBcnJheSAqKW9sZERlc2Ny
aXB0b3JzIDsKCgoKCgoKLSAoQk9PTCl0YWJsZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3
IHdyaXRlUm93c1dpdGhJbmRleGVzOihOU0luZGV4U2V0ICopcm93SW5kZXhlcyB0b1Bhc3RlYm9h
cmQ6KE5TUGFzdGVib2FyZCAqKXBib2FyZCA7CgoKCi0gKE5TRHJhZ09wZXJhdGlvbil0YWJsZVZp
ZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHZhbGlkYXRlRHJvcDooaWQgPE5TRHJhZ2dpbmdJ
bmZvPilpbmZvIHByb3Bvc2VkUm93OihOU0ludGVnZXIpcm93IHByb3Bvc2VkRHJvcE9wZXJhdGlv
bjooTlNUYWJsZVZpZXdEcm9wT3BlcmF0aW9uKWRyb3BPcGVyYXRpb247CgoKCi0gKEJPT0wpdGFi
bGVWaWV3OihOU1RhYmxlVmlldyAqKXRhYmxlVmlldyBhY2NlcHREcm9wOihpZCA8TlNEcmFnZ2lu
Z0luZm8+KWluZm8gcm93OihOU0ludGVnZXIpcm93IGRyb3BPcGVyYXRpb246KE5TVGFibGVWaWV3
RHJvcE9wZXJhdGlvbilkcm9wT3BlcmF0aW9uOwoKCgotIChOU0FycmF5ICopdGFibGVWaWV3OihO
U1RhYmxlVmlldyAqKXRhYmxlVmlldyBuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3Rp
bmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0aW5hdGlvbiBmb3JEcmFnZ2VkUm93c1dpdGhJbmRleGVz
OihOU0luZGV4U2V0ICopaW5kZXhTZXQgOwoKQGVuZAoKQGludGVyZmFjZSBOU09iamVjdChOU1Rh
YmxlVmlld0RhdGFTb3VyY2VEZXByZWNhdGVkKQoKCgoKCgoKLSAoQk9PTCl0YWJsZVZpZXc6KE5T
VGFibGVWaWV3ICopdGFibGVWaWV3IHdyaXRlUm93czooTlNBcnJheSAqKXJvd3MgdG9QYXN0ZWJv
YXJkOihOU1Bhc3RlYm9hcmQgKilwYm9hcmQgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoK
QGVuZAoKCgoKQGludGVyZmFjZSBOU1RhYmxlVmlldyhOU0RlcHJlY2F0ZWQpCgoKCi0gKHZvaWQp
c2V0RHJhd3NHcmlkOihCT09MKWZsYWcgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCgot
IChCT09MKWRyYXdzR3JpZCBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCi0gKHZvaWQp
c2VsZWN0Q29sdW1uOihOU0ludGVnZXIpY29sdW1uIGJ5RXh0ZW5kaW5nU2VsZWN0aW9uOihCT09M
KWV4dGVuZCBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCi0gKHZvaWQpc2VsZWN0Um93
OihOU0ludGVnZXIpcm93IGJ5RXh0ZW5kaW5nU2VsZWN0aW9uOihCT09MKWV4dGVuZCBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCi0gKE5TRW51bWVyYXRvciAqKXNlbGVjdGVkQ29sdW1u
RW51bWVyYXRvciBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCi0gKE5TRW51bWVyYXRv
ciAqKXNlbGVjdGVkUm93RW51bWVyYXRvciBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoK
Ci0gKE5TSW1hZ2UgKilkcmFnSW1hZ2VGb3JSb3dzOihOU0FycmF5KilkcmFnUm93cyBldmVudDoo
TlNFdmVudCAqKWRyYWdFdmVudCBkcmFnSW1hZ2VPZmZzZXQ6KE5TUG9pbnRQb2ludGVyKWRyYWdJ
bWFnZU9mZnNldCBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCi0gKHZvaWQpc2V0QXV0
b3Jlc2l6ZXNBbGxDb2x1bW5zVG9GaXQ6KEJPT0wpZmxhZyBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7Ci0gKEJPT0wpYXV0b3Jlc2l6ZXNBbGxDb2x1bW5zVG9GaXQgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwoKCgotIChOU1JhbmdlKWNvbHVtbnNJblJlY3Q6KE5TUmVjdClyZWN0IF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCkBlbmQKIyAxMDkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TT3V0bGlu
ZVZpZXcuaCIgMSAzCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9OU091dGxpbmVWaWV3LmgiIDMKQGNsYXNzIE5TQnV0dG9uQ2VsbDsKQGNs
YXNzIE5TVGFibGVWaWV3OwpAY2xhc3MgTlNUYWJsZUhlYWRlclZpZXc7CkBjbGFzcyBOU1RhYmxl
Q29sdW1uOwpAY2xhc3MgTlNNb3VzZVRyYWNrZXI7CkBjbGFzcyBOU05vdGlmaWNhdGlvbjsKQGNs
YXNzIE5TU3RyaW5nOwpAcHJvdG9jb2wgTlNPdXRsaW5lVmlld0RlbGVnYXRlLCBOU091dGxpbmVW
aWV3RGF0YVNvdXJjZTsKCnR5cGVkZWYgc3RydWN0IF9fT3ZGbGFncyB7CiMgNTQgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU091dGxpbmVWaWV3
LmgiIDMKICAgIHVuc2lnbmVkIGludCBfcmVzZXJ2ZWQ6MzsKICAgIHVuc2lnbmVkIGludCBkb250
UmVkaXNwbGF5T25GcmFtZUNoYW5nZToxOwogICAgdW5zaWduZWQgaW50IGZsYXNoaW5nT3V0bGlu
ZUNlbGw6MTsKICAgIHVuc2lnbmVkIGludCBmbGFzaGluZ0VudGlyZVJvdzoxOwogICAgdW5zaWdu
ZWQgaW50IGRlbGVnYXRlU2hvdWxkQXV0b0V4cGFuZEl0ZW06MTsKICAgIHVuc2lnbmVkIGludCBk
ZWxlZ2F0ZUF1dG9Db2xsYXBzZUl0ZW06MTsKICAgIHVuc2lnbmVkIGludCBkZWxlZ2F0ZUF1dG9F
eHBhbmRJdGVtOjE7CiAgICB1bnNpZ25lZCBpbnQgZGVsZWdhdGVTaG91bGRTaG93T3V0bGluZUNl
bGxGb3JJdGVtOjE7CiAgICB1bnNpZ25lZCBpbnQgZGF0YVNvdXJjZURyYWdnZWRJbWFnZU1vdmVk
VG86MTsKICAgIHVuc2lnbmVkIGludCBkYXRhU291cmNlRHJhZ2dpbmdFbmRlZEF0OjE7CiAgICB1
bnNpZ25lZCBpbnQgcmVsb2FkaW5nRGF0YToxOwogICAgdW5zaWduZWQgaW50IHZhbGlkRGF0YVNv
dXJjZU1ldGhvZHM6MTsKICAgIHVuc2lnbmVkIGludCBudW1iZXJPZlJvd3NEYXRhRXhwYW5kRW50
ZXJlZDoxOwogICAgdW5zaWduZWQgaW50IGRlbGF5Um93RW50cnlGcmVlRGlzYWJsZWQ6MTsKICAg
IHVuc2lnbmVkIGludCBkZWxlZ2F0ZUhlaWdodE9mUm93QnlJdGVtOjE7CiAgICB1bnNpZ25lZCBp
bnQgX3VudXNlZDoxOwogICAgdW5zaWduZWQgaW50IGF1dG9FeHBhbmRGbGFzaFN0YXRlOjE7CiAg
ICB1bnNpZ25lZCBpbnQgc2VsZWN0aW9uQWRqdXN0bWVudERpc2FibGVkOjE7CiAgICB1bnNpZ25l
ZCBpbnQgcmVtb3ZlQ2hpbGRJblByb2dyZXNzOjE7CiAgICB1bnNpZ25lZCBpbnQgZGVsZWdhdGVX
aWxsRGlzcGxheU91dGxpbmVDZWxsOjE7CiAgICB1bnNpZ25lZCBpbnQgZW5hYmxlRXhwYW5kTm90
aWZpY2F0aW9uczoxOwogICAgdW5zaWduZWQgaW50IGF1dG9TYXZlRXhwYW5kSXRlbXM6MTsKICAg
IHVuc2lnbmVkIGludCBhdXRvcmVzaXplc091dGxpbmVDb2x1bW46MTsKICAgIHVuc2lnbmVkIGlu
dCBkZWxlZ2F0ZVNob3VsZEV4cGFuZEl0ZW06MTsKICAgIHVuc2lnbmVkIGludCBkZWxlZ2F0ZVNo
b3VsZENvbGxhcHNlSXRlbToxOwogICAgdW5zaWduZWQgaW50IGRlbGVnYXRlU2VsZWN0aW9uU2hv
dWxkQ2hhbmdlSW5PdXRsaW5lVmlldzoxOwogICAgdW5zaWduZWQgaW50IGRlbGVnYXRlU2hvdWxk
U2VsZWN0VGFibGVDb2x1bW46MTsKICAgIHVuc2lnbmVkIGludCBkZWxlZ2F0ZVNob3VsZFNlbGVj
dEl0ZW06MTsKICAgIHVuc2lnbmVkIGludCBkZWxlZ2F0ZVNob3VsZEVkaXRUYWJsZUNvbHVtbjox
OwogICAgdW5zaWduZWQgaW50IGRlbGVnYXRlV2lsbERpc3BsYXlDZWxsOjE7Cgp9IF9PVkZsYWdz
OwoKCgplbnVtIHsgTlNPdXRsaW5lVmlld0Ryb3BPbkl0ZW1JbmRleCA9IC0xIH07CgpAaW50ZXJm
YWNlIE5TT3V0bGluZVZpZXcgOiBOU1RhYmxlVmlldyB7CiAgQHByaXZhdGUKICAgIE5TSW50ZWdl
ciBfbnVtYmVyT2ZSb3dzOwogICAgc3RydWN0IF9fTlNPVlJvd0VudHJ5ICpfcm93RW50cnlUcmVl
OwogICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBfaXRlbVRvRW50cnlNYXA7CiAgICBOU0ludGVn
ZXIgX3VudXNlZDI7CiAgICBOU0ludGVnZXIgX3VudXNlZDM7CiAgICBOU0ludGVnZXIgX3VudXNl
ZDE7CiAgICBOU1RhYmxlQ29sdW1uICpfb3V0bGluZVRhYmxlQ29sdW1uOwogICAgQk9PTCBfaW5p
dGVkUm93czsKICAgIEJPT0wgX2luZGVudGF0aW9uTWFya2VySW5DZWxsOwogICAgTlNJbnRlZ2Vy
IF9pbmRlbnRhdGlvblBlckxldmVsOwogICAgTlNCdXR0b25DZWxsICpfb3V0bGluZUNlbGw7CiAg
ICBOU1JlY3QgX3RyYWNraW5nT3V0bGluZUZyYW1lOwogICAgTlNNb3VzZVRyYWNrZXIgKl90cmFj
a2VyOwogICAgaWQgX3VudXNlZDQ7CiAgICBfT1ZGbGFncyBfb3ZGbGFnczsKICAgIGlkIF9vdkxv
Y2s7CiAgICBsb25nICpfaW5kZW50QXJyYXk7CiAgICBsb25nIF9vcmlnaW5hbFdpZHRoOwogICAg
aWQgX2V4cGFuZFNldDsKICAgIGlkIF9leHBhbmRTZXRUb0V4cGFuZEl0ZW1zSW50bzsKICAgIGxv
bmcgX2luZGVudEFycmF5U2l6ZTsKICAgIE5TQnV0dG9uQ2VsbCAqX3RyYWNraW5nT3V0bGluZUNl
bGw7CiAgICBOU0ludGVnZXIgX3RyYWNraW5nUm93OwogICAgaWQgX292UmVzZXJ2ZWQ7Cn0KCi0g
KHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxOU091dGxpbmVWaWV3RGVsZWdhdGU+KWFuT2JqZWN0Owot
IChpZCA8TlNPdXRsaW5lVmlld0RlbGVnYXRlPilkZWxlZ2F0ZTsKCi0gKHZvaWQpc2V0RGF0YVNv
dXJjZTooaWQgPE5TT3V0bGluZVZpZXdEYXRhU291cmNlPilhU291cmNlOwotIChpZCA8TlNPdXRs
aW5lVmlld0RhdGFTb3VyY2U+KWRhdGFTb3VyY2U7CgoKCi0gKHZvaWQpc2V0T3V0bGluZVRhYmxl
Q29sdW1uOihOU1RhYmxlQ29sdW1uICopb3V0bGluZVRhYmxlQ29sdW1uOwotIChOU1RhYmxlQ29s
dW1uICopb3V0bGluZVRhYmxlQ29sdW1uOwoKCgotIChCT09MKWlzRXhwYW5kYWJsZTooaWQpaXRl
bTsKCgoKLSAodm9pZClleHBhbmRJdGVtOihpZClpdGVtIGV4cGFuZENoaWxkcmVuOihCT09MKWV4
cGFuZENoaWxkcmVuOwoKCgotICh2b2lkKWV4cGFuZEl0ZW06KGlkKWl0ZW07CgoKCi0gKHZvaWQp
Y29sbGFwc2VJdGVtOihpZClpdGVtIGNvbGxhcHNlQ2hpbGRyZW46KEJPT0wpY29sbGFwc2VDaGls
ZHJlbjsKCgoKLSAodm9pZCljb2xsYXBzZUl0ZW06KGlkKWl0ZW07CgoKCi0gKHZvaWQpcmVsb2Fk
SXRlbTooaWQpaXRlbSByZWxvYWRDaGlsZHJlbjooQk9PTClyZWxvYWRDaGlsZHJlbjsKCgoKLSAo
dm9pZClyZWxvYWRJdGVtOihpZClpdGVtOwoKCgotIChpZClwYXJlbnRGb3JJdGVtOihpZClpdGVt
IDsKCgoKLSAoaWQpaXRlbUF0Um93OihOU0ludGVnZXIpcm93OwotIChOU0ludGVnZXIpcm93Rm9y
SXRlbTooaWQpaXRlbTsKCgoKLSAoTlNJbnRlZ2VyKWxldmVsRm9ySXRlbTooaWQpaXRlbTsKLSAo
TlNJbnRlZ2VyKWxldmVsRm9yUm93OihOU0ludGVnZXIpcm93OwotIChCT09MKWlzSXRlbUV4cGFu
ZGVkOihpZClpdGVtOwoKCgotICh2b2lkKXNldEluZGVudGF0aW9uUGVyTGV2ZWw6KENHRmxvYXQp
aW5kZW50YXRpb25QZXJMZXZlbDsKLSAoQ0dGbG9hdClpbmRlbnRhdGlvblBlckxldmVsOwoKCgot
ICh2b2lkKXNldEluZGVudGF0aW9uTWFya2VyRm9sbG93c0NlbGw6KEJPT0wpZHJhd0luQ2VsbDsK
LSAoQk9PTClpbmRlbnRhdGlvbk1hcmtlckZvbGxvd3NDZWxsOwoKLSAodm9pZClzZXRBdXRvcmVz
aXplc091dGxpbmVDb2x1bW46KEJPT0wpcmVzaXplOwotIChCT09MKWF1dG9yZXNpemVzT3V0bGlu
ZUNvbHVtbjsKCgoKLSAoTlNSZWN0KWZyYW1lT2ZPdXRsaW5lQ2VsbEF0Um93OihOU0ludGVnZXIp
cm93IDsKCgoKCgoKLSAodm9pZClzZXREcm9wSXRlbTooaWQpaXRlbSBkcm9wQ2hpbGRJbmRleDoo
TlNJbnRlZ2VyKWluZGV4OwoKCgotIChCT09MKXNob3VsZENvbGxhcHNlQXV0b0V4cGFuZGVkSXRl
bXNGb3JEZXBvc2l0ZWQ6KEJPT0wpZGVwb3NpdGVkOwoKCgotIChCT09MKWF1dG9zYXZlRXhwYW5k
ZWRJdGVtczsKLSAodm9pZClzZXRBdXRvc2F2ZUV4cGFuZGVkSXRlbXM6KEJPT0wpc2F2ZTsKCkBl
bmQKCgoKQHByb3RvY29sIE5TT3V0bGluZVZpZXdEYXRhU291cmNlIDxOU09iamVjdD4KQG9wdGlv
bmFsCgoKCi0gKGlkKW91dGxpbmVWaWV3OihOU091dGxpbmVWaWV3ICopb3V0bGluZVZpZXcgY2hp
bGQ6KE5TSW50ZWdlcilpbmRleCBvZkl0ZW06KGlkKWl0ZW07Ci0gKEJPT0wpb3V0bGluZVZpZXc6
KE5TT3V0bGluZVZpZXcgKilvdXRsaW5lVmlldyBpc0l0ZW1FeHBhbmRhYmxlOihpZClpdGVtOwot
IChOU0ludGVnZXIpb3V0bGluZVZpZXc6KE5TT3V0bGluZVZpZXcgKilvdXRsaW5lVmlldyBudW1i
ZXJPZkNoaWxkcmVuT2ZJdGVtOihpZClpdGVtOwotIChpZClvdXRsaW5lVmlldzooTlNPdXRsaW5l
VmlldyAqKW91dGxpbmVWaWV3IG9iamVjdFZhbHVlRm9yVGFibGVDb2x1bW46KE5TVGFibGVDb2x1
bW4gKil0YWJsZUNvbHVtbiBieUl0ZW06KGlkKWl0ZW07CgoKCi0gKHZvaWQpb3V0bGluZVZpZXc6
KE5TT3V0bGluZVZpZXcgKilvdXRsaW5lVmlldyBzZXRPYmplY3RWYWx1ZTooaWQpb2JqZWN0IGZv
clRhYmxlQ29sdW1uOihOU1RhYmxlQ29sdW1uICopdGFibGVDb2x1bW4gYnlJdGVtOihpZClpdGVt
OwotIChpZClvdXRsaW5lVmlldzooTlNPdXRsaW5lVmlldyAqKW91dGxpbmVWaWV3IGl0ZW1Gb3JQ
ZXJzaXN0ZW50T2JqZWN0OihpZClvYmplY3Q7Ci0gKGlkKW91dGxpbmVWaWV3OihOU091dGxpbmVW
aWV3ICopb3V0bGluZVZpZXcgcGVyc2lzdGVudE9iamVjdEZvckl0ZW06KGlkKWl0ZW07CgoKCgot
ICh2b2lkKW91dGxpbmVWaWV3OihOU091dGxpbmVWaWV3ICopb3V0bGluZVZpZXcgc29ydERlc2Ny
aXB0b3JzRGlkQ2hhbmdlOihOU0FycmF5ICopb2xkRGVzY3JpcHRvcnMgOwoKCgoKCgotIChCT09M
KW91dGxpbmVWaWV3OihOU091dGxpbmVWaWV3ICopb3V0bGluZVZpZXcgd3JpdGVJdGVtczooTlNB
cnJheSAqKWl0ZW1zIHRvUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZDsKCgoK
LSAoTlNEcmFnT3BlcmF0aW9uKW91dGxpbmVWaWV3OihOU091dGxpbmVWaWV3ICopb3V0bGluZVZp
ZXcgdmFsaWRhdGVEcm9wOihpZCA8TlNEcmFnZ2luZ0luZm8+KWluZm8gcHJvcG9zZWRJdGVtOihp
ZClpdGVtIHByb3Bvc2VkQ2hpbGRJbmRleDooTlNJbnRlZ2VyKWluZGV4OwoKCgotIChCT09MKW91
dGxpbmVWaWV3OihOU091dGxpbmVWaWV3ICopb3V0bGluZVZpZXcgYWNjZXB0RHJvcDooaWQgPE5T
RHJhZ2dpbmdJbmZvPilpbmZvIGl0ZW06KGlkKWl0ZW0gY2hpbGRJbmRleDooTlNJbnRlZ2VyKWlu
ZGV4OwoKCgotIChOU0FycmF5ICopb3V0bGluZVZpZXc6KE5TT3V0bGluZVZpZXcgKilvdXRsaW5l
VmlldyBuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRy
b3BEZXN0aW5hdGlvbiBmb3JEcmFnZ2VkSXRlbXM6KE5TQXJyYXkgKilpdGVtcyA7CgpAZW5kCgpA
cHJvdG9jb2wgTlNPdXRsaW5lVmlld0RlbGVnYXRlIDxOU0NvbnRyb2xUZXh0RWRpdGluZ0RlbGVn
YXRlPgpAb3B0aW9uYWwKCgoKLSAodm9pZClvdXRsaW5lVmlldzooTlNPdXRsaW5lVmlldyAqKW91
dGxpbmVWaWV3IHdpbGxEaXNwbGF5Q2VsbDooaWQpY2VsbCBmb3JUYWJsZUNvbHVtbjooTlNUYWJs
ZUNvbHVtbiAqKXRhYmxlQ29sdW1uIGl0ZW06KGlkKWl0ZW07Ci0gKEJPT0wpb3V0bGluZVZpZXc6
KE5TT3V0bGluZVZpZXcgKilvdXRsaW5lVmlldyBzaG91bGRFZGl0VGFibGVDb2x1bW46KE5TVGFi
bGVDb2x1bW4gKil0YWJsZUNvbHVtbiBpdGVtOihpZClpdGVtOwotIChCT09MKXNlbGVjdGlvblNo
b3VsZENoYW5nZUluT3V0bGluZVZpZXc6KE5TT3V0bGluZVZpZXcgKilvdXRsaW5lVmlldzsKCgoK
LSAoQk9PTClvdXRsaW5lVmlldzooTlNPdXRsaW5lVmlldyAqKW91dGxpbmVWaWV3IHNob3VsZFNl
bGVjdEl0ZW06KGlkKWl0ZW07CgoKCi0gKE5TSW5kZXhTZXQgKilvdXRsaW5lVmlldzooTlNPdXRs
aW5lVmlldyAqKW91dGxpbmVWaWV3IHNlbGVjdGlvbkluZGV4ZXNGb3JQcm9wb3NlZFNlbGVjdGlv
bjooTlNJbmRleFNldCAqKXByb3Bvc2VkU2VsZWN0aW9uSW5kZXhlcyA7CgotIChCT09MKW91dGxp
bmVWaWV3OihOU091dGxpbmVWaWV3ICopb3V0bGluZVZpZXcgc2hvdWxkU2VsZWN0VGFibGVDb2x1
bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbjsKCi0gKHZvaWQpb3V0bGluZVZpZXc6KE5T
T3V0bGluZVZpZXcgKilvdXRsaW5lVmlldyBtb3VzZURvd25JbkhlYWRlck9mVGFibGVDb2x1bW46
KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbiA7Ci0gKHZvaWQpb3V0bGluZVZpZXc6KE5TT3V0
bGluZVZpZXcgKilvdXRsaW5lVmlldyBkaWRDbGlja1RhYmxlQ29sdW1uOihOU1RhYmxlQ29sdW1u
ICopdGFibGVDb2x1bW4gOwotICh2b2lkKW91dGxpbmVWaWV3OihOU091dGxpbmVWaWV3ICopb3V0
bGluZVZpZXcgZGlkRHJhZ1RhYmxlQ29sdW1uOihOU1RhYmxlQ29sdW1uICopdGFibGVDb2x1bW4g
OwoKCgoKLSAoTlNTdHJpbmcgKilvdXRsaW5lVmlldzooTlNPdXRsaW5lVmlldyAqKW91dGxpbmVW
aWV3IHRvb2xUaXBGb3JDZWxsOihOU0NlbGwgKiljZWxsIHJlY3Q6KE5TUmVjdFBvaW50ZXIpcmVj
dCB0YWJsZUNvbHVtbjooTlNUYWJsZUNvbHVtbiAqKXRhYmxlQ29sdW1uIGl0ZW06KGlkKWl0ZW0g
bW91c2VMb2NhdGlvbjooTlNQb2ludCltb3VzZUxvY2F0aW9uIDsKCgoKCi0gKENHRmxvYXQpb3V0
bGluZVZpZXc6KE5TT3V0bGluZVZpZXcgKilvdXRsaW5lVmlldyBoZWlnaHRPZlJvd0J5SXRlbToo
aWQpaXRlbSA7CgoKCgotIChOU1N0cmluZyAqKW91dGxpbmVWaWV3OihOU091dGxpbmVWaWV3ICop
b3V0bGluZVZpZXcgdHlwZVNlbGVjdFN0cmluZ0ZvclRhYmxlQ29sdW1uOihOU1RhYmxlQ29sdW1u
ICopdGFibGVDb2x1bW4gaXRlbTooaWQpaXRlbSA7CgoKCgotIChpZClvdXRsaW5lVmlldzooTlNP
dXRsaW5lVmlldyAqKW91dGxpbmVWaWV3IG5leHRUeXBlU2VsZWN0TWF0Y2hGcm9tSXRlbTooaWQp
c3RhcnRJdGVtIHRvSXRlbTooaWQpZW5kSXRlbSBmb3JTdHJpbmc6KE5TU3RyaW5nICopc2VhcmNo
U3RyaW5nIDsKCgoKCi0gKEJPT0wpb3V0bGluZVZpZXc6KE5TT3V0bGluZVZpZXcgKilvdXRsaW5l
VmlldyBzaG91bGRUeXBlU2VsZWN0Rm9yRXZlbnQ6KE5TRXZlbnQgKilldmVudCB3aXRoQ3VycmVu
dFNlYXJjaFN0cmluZzooTlNTdHJpbmcgKilzZWFyY2hTdHJpbmcgOwoKCgoKLSAoQk9PTClvdXRs
aW5lVmlldzooTlNPdXRsaW5lVmlldyAqKW91dGxpbmVWaWV3IHNob3VsZFNob3dDZWxsRXhwYW5z
aW9uRm9yVGFibGVDb2x1bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbiBpdGVtOihpZClp
dGVtIDsKCgoKCi0gKEJPT0wpb3V0bGluZVZpZXc6KE5TT3V0bGluZVZpZXcgKilvdXRsaW5lVmll
dyBzaG91bGRUcmFja0NlbGw6KE5TQ2VsbCAqKWNlbGwgZm9yVGFibGVDb2x1bW46KE5TVGFibGVD
b2x1bW4gKil0YWJsZUNvbHVtbiBpdGVtOihpZClpdGVtIDsKCgoKCgoKLSAoTlNDZWxsICopb3V0
bGluZVZpZXc6KE5TT3V0bGluZVZpZXcgKilvdXRsaW5lVmlldyBkYXRhQ2VsbEZvclRhYmxlQ29s
dW1uOihOU1RhYmxlQ29sdW1uICopdGFibGVDb2x1bW4gaXRlbTooaWQpaXRlbSA7CgoKCgotIChC
T09MKW91dGxpbmVWaWV3OihOU091dGxpbmVWaWV3ICopb3V0bGluZVZpZXcgaXNHcm91cEl0ZW06
KGlkKWl0ZW0gOwoKCgoKLSAoQk9PTClvdXRsaW5lVmlldzooTlNPdXRsaW5lVmlldyAqKW91dGxp
bmVWaWV3IHNob3VsZEV4cGFuZEl0ZW06KGlkKWl0ZW07CgoKCgotIChCT09MKW91dGxpbmVWaWV3
OihOU091dGxpbmVWaWV3ICopb3V0bGluZVZpZXcgc2hvdWxkQ29sbGFwc2VJdGVtOihpZClpdGVt
OwoKCgoKLSAodm9pZClvdXRsaW5lVmlldzooTlNPdXRsaW5lVmlldyAqKW91dGxpbmVWaWV3IHdp
bGxEaXNwbGF5T3V0bGluZUNlbGw6KGlkKWNlbGwgZm9yVGFibGVDb2x1bW46KE5TVGFibGVDb2x1
bW4gKil0YWJsZUNvbHVtbiBpdGVtOihpZClpdGVtOwoKCgoKCi0gKENHRmxvYXQpb3V0bGluZVZp
ZXc6KE5TT3V0bGluZVZpZXcgKilvdXRsaW5lVmlldyBzaXplVG9GaXRXaWR0aE9mQ29sdW1uOihO
U0ludGVnZXIpY29sdW1uIDsKCgoKCi0gKEJPT0wpb3V0bGluZVZpZXc6KE5TT3V0bGluZVZpZXcg
KilvdXRsaW5lVmlldyBzaG91bGRSZW9yZGVyQ29sdW1uOihOU0ludGVnZXIpY29sdW1uSW5kZXgg
dG9Db2x1bW46KE5TSW50ZWdlciluZXdDb2x1bW5JbmRleCA7CgoKCgotIChCT09MKW91dGxpbmVW
aWV3OihOU091dGxpbmVWaWV3ICopb3V0bGluZVZpZXcgc2hvdWxkU2hvd091dGxpbmVDZWxsRm9y
SXRlbTooaWQpaXRlbSA7CgpAZW5kCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU091dGxpbmVW
aWV3U2VsZWN0aW9uRGlkQ2hhbmdlTm90aWZpY2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpO
U091dGxpbmVWaWV3Q29sdW1uRGlkTW92ZU5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqTlNPdXRsaW5lVmlld0NvbHVtbkRpZFJlc2l6ZU5vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqTlNPdXRsaW5lVmlld1NlbGVjdGlvbklzQ2hhbmdpbmdOb3RpZmljYXRpb247CgoK
CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNPdXRsaW5lVmlld0l0ZW1XaWxsRXhwYW5kTm90aWZp
Y2F0aW9uOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU091dGxpbmVWaWV3SXRlbURpZEV4cGFuZE5v
dGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNPdXRsaW5lVmlld0l0ZW1XaWxsQ29s
bGFwc2VOb3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TT3V0bGluZVZpZXdJdGVt
RGlkQ29sbGFwc2VOb3RpZmljYXRpb247CgpAaW50ZXJmYWNlIE5TT2JqZWN0KE5TT3V0bGluZVZp
ZXdOb3RpZmljYXRpb25zKQoKLSAodm9pZClvdXRsaW5lVmlld1NlbGVjdGlvbkRpZENoYW5nZToo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0gKHZvaWQpb3V0bGluZVZpZXdDb2x1bW5E
aWRNb3ZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLSAodm9pZClvdXRsaW5lVmll
d0NvbHVtbkRpZFJlc2l6ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0gKHZvaWQp
b3V0bGluZVZpZXdTZWxlY3Rpb25Jc0NoYW5naW5nOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbjsKLSAodm9pZClvdXRsaW5lVmlld0l0ZW1XaWxsRXhwYW5kOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbjsKLSAodm9pZClvdXRsaW5lVmlld0l0ZW1EaWRFeHBhbmQ6KE5TTm90aWZp
Y2F0aW9uICopbm90aWZpY2F0aW9uOwotICh2b2lkKW91dGxpbmVWaWV3SXRlbVdpbGxDb2xsYXBz
ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0gKHZvaWQpb3V0bGluZVZpZXdJdGVt
RGlkQ29sbGFwc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwoKQGVuZAojIDExMCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtp
dC5oIiAyIDMKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29y
ay9IZWFkZXJzL05TTGF5b3V0TWFuYWdlci5oIiAxIDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TTGF5b3V0TWFuYWdlci5oIiAzCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05T
R2x5cGhHZW5lcmF0b3IuaCIgMSAzCiMgMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0dseXBoR2VuZXJhdG9yLmgiIDMKZW51bSB7CiAgICBO
U1Nob3dDb250cm9sR2x5cGhzID0gKDEgPDwgMCksCiAgICBOU1Nob3dJbnZpc2libGVHbHlwaHMg
PSAoMSA8PCAxKSwKICAgIE5TV2FudHNCaWRpTGV2ZWxzID0gKDEgPDwgMikKfTsKCkBwcm90b2Nv
bCBOU0dseXBoU3RvcmFnZQotICh2b2lkKWluc2VydEdseXBoczooY29uc3QgTlNHbHlwaCAqKWds
eXBocyBsZW5ndGg6KE5TVUludGVnZXIpbGVuZ3RoIGZvclN0YXJ0aW5nR2x5cGhBdEluZGV4OihO
U1VJbnRlZ2VyKWdseXBoSW5kZXggY2hhcmFjdGVySW5kZXg6KE5TVUludGVnZXIpY2hhckluZGV4
OwoKCi0gKHZvaWQpc2V0SW50QXR0cmlidXRlOihOU0ludGVnZXIpYXR0cmlidXRlVGFnIHZhbHVl
OihOU0ludGVnZXIpdmFsIGZvckdseXBoQXRJbmRleDooTlNVSW50ZWdlcilnbHlwaEluZGV4OwoK
LSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZzsKLSAoTlNVSW50ZWdlcils
YXlvdXRPcHRpb25zOwpAZW5kCgpAaW50ZXJmYWNlIE5TR2x5cGhHZW5lcmF0b3IgOiBOU09iamVj
dAotICh2b2lkKWdlbmVyYXRlR2x5cGhzRm9yR2x5cGhTdG9yYWdlOihpZCA8TlNHbHlwaFN0b3Jh
Z2U+KWdseXBoU3RvcmFnZSBkZXNpcmVkTnVtYmVyT2ZDaGFyYWN0ZXJzOihOU1VJbnRlZ2VyKW5D
aGFycyBnbHlwaEluZGV4OihOU1VJbnRlZ2VyICopZ2x5cGhJbmRleCBjaGFyYWN0ZXJJbmRleDoo
TlNVSW50ZWdlciAqKWNoYXJJbmRleDsKCisgKGlkKSBzaGFyZWRHbHlwaEdlbmVyYXRvcjsKQGVu
ZAojIDE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNMYXlvdXRNYW5hZ2VyLmgiIDIgMwoKQGNsYXNzIE5TVGV4dFN0b3JhZ2U7CkBjbGFzcyBO
U1R5cGVzZXR0ZXI7CkBjbGFzcyBOU1RleHRDb250YWluZXI7CkBjbGFzcyBOU1RleHRWaWV3OwpA
Y2xhc3MgTlNXaW5kb3c7CkBjbGFzcyBOU0NvbG9yOwpAY2xhc3MgTlNSdWxlclZpZXc7CkBjbGFz
cyBOU1BhcmFncmFwaFN0eWxlOwpAY2xhc3MgTlNSdWxlck1hcmtlcjsKQGNsYXNzIE5TQm94OwpA
Y2xhc3MgTlNUZXh0RmllbGQ7CkBjbGFzcyBOU01hdHJpeDsKQGNsYXNzIE5TVGFiV2VsbDsKQGNs
YXNzIE5TU3RvcmFnZTsKQGNsYXNzIE5TUnVuU3RvcmFnZTsKQGNsYXNzIE5TU29ydGVkQXJyYXk7
CkBjbGFzcyBOU1ZpZXc7CkBjbGFzcyBOU011dGFibGVBcnJheTsKQGNsYXNzIE5TRXZlbnQ7CkBj
bGFzcyBOU0NlbGw7CkBjbGFzcyBOU0dseXBoR2VuZXJhdG9yOwpAY2xhc3MgTlNUZXh0QmxvY2s7
CgpAcHJvdG9jb2wgTlNMYXlvdXRNYW5hZ2VyRGVsZWdhdGU7CgoKZW51bSB7CiAgICBOU0dseXBo
QXR0cmlidXRlU29mdCA9IDAsCiAgICBOU0dseXBoQXR0cmlidXRlRWxhc3RpYyA9IDEsCgogICAg
TlNHbHlwaEF0dHJpYnV0ZUJpZGlMZXZlbCA9IDIsCgogICAgTlNHbHlwaEF0dHJpYnV0ZUluc2Ny
aWJlID0gNQp9OwoKCmVudW0gewogICAgTlNHbHlwaEluc2NyaWJlQmFzZSA9IDAsCiAgICBOU0ds
eXBoSW5zY3JpYmVCZWxvdyA9IDEsCiAgICBOU0dseXBoSW5zY3JpYmVBYm92ZSA9IDIsCiAgICBO
U0dseXBoSW5zY3JpYmVPdmVyc3RyaWtlID0gMywKICAgIE5TR2x5cGhJbnNjcmliZU92ZXJCZWxv
dyA9IDQKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TR2x5cGhJbnNjcmlwdGlvbjsKCgoKZW51bSB7
CiAgICBOU1R5cGVzZXR0ZXJMYXRlc3RCZWhhdmlvciA9IC0xLAogICAgTlNUeXBlc2V0dGVyT3Jp
Z2luYWxCZWhhdmlvciA9IDAsCiAgICBOU1R5cGVzZXR0ZXJCZWhhdmlvcl8xMF8yX1dpdGhDb21w
YXRpYmlsaXR5ID0gMSwKICAgIE5TVHlwZXNldHRlckJlaGF2aW9yXzEwXzIgPSAyLAogICAgTlNU
eXBlc2V0dGVyQmVoYXZpb3JfMTBfMyA9IDMKCiAgICAsCiAgICBOU1R5cGVzZXR0ZXJCZWhhdmlv
cl8xMF80ID0gNAoKfTsKdHlwZWRlZiBOU0ludGVnZXIgTlNUeXBlc2V0dGVyQmVoYXZpb3I7CgoK
CkBpbnRlcmZhY2UgTlNMYXlvdXRNYW5hZ2VyIDogTlNPYmplY3QgPE5TQ29kaW5nLCBOU0dseXBo
U3RvcmFnZT4gewoKCgoKCgogIEBwcml2YXRlCiAgICBOU1RleHRTdG9yYWdlICpfdGV4dFN0b3Jh
Z2U7CiAgICBOU0dseXBoR2VuZXJhdG9yICpfZ2x5cGhHZW5lcmF0b3I7CiAgICBOU1R5cGVzZXR0
ZXIgKl90eXBlc2V0dGVyOwoKICAgIE5TTXV0YWJsZUFycmF5ICpfdGV4dENvbnRhaW5lcnM7CiAg
ICBOU1N0b3JhZ2UgKl9jb250YWluZXJVc2VkUmVjdHM7CgogICAgTlNTdG9yYWdlICpfZ2x5cGhz
OwogICAgTlNSdW5TdG9yYWdlICpfY29udGFpbmVyUnVuczsKICAgIE5TUnVuU3RvcmFnZSAqX2Zy
YWdtZW50UnVuczsKICAgIE5TUnVuU3RvcmFnZSAqX2dseXBoTG9jYXRpb25zOwogICAgTlNSdW5T
dG9yYWdlICpfZ2x5cGhSb3RhdGlvblJ1bnM7CgogICAgTlNSZWN0IF9leHRyYUxpbmVGcmFnbWVu
dFJlY3Q7CiAgICBOU1JlY3QgX2V4dHJhTGluZUZyYWdtZW50VXNlZFJlY3Q7CiAgICBOU1RleHRD
b250YWluZXIgKl9leHRyYUxpbmVGcmFnbWVudENvbnRhaW5lcjsKCiAgICBOU1NvcnRlZEFycmF5
ICpfZ2x5cGhIb2xlczsKICAgIE5TU29ydGVkQXJyYXkgKl9sYXlvdXRIb2xlczsKCiAgICBzdHJ1
Y3QgX19sbUZsYWdzIHsKICAgICAgICB1bnNpZ25lZCBpbnQgY29udGFpbmVyc0FyZUZ1bGw6MTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZ2x5cGhzTWlnaHREcmF3T3V0c2lkZUxpbmVzOjE7CiAgICAg
ICAgdW5zaWduZWQgaW50IGJhY2tncm91bmRMYXlvdXRFbmFibGVkOjE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHJlc2l6aW5nSW5Qcm9ncmVzczoxOwogICAgICAgIHVuc2lnbmVkIGludCBhbGxvd1Nj
cmVlbkZvbnRzOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGNhY2hlZFJlY3RBcnJheUluVXNlOjE7
CiAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlJbnZhbGlkYXRpb25JblByb2dyZXNzOjE7CiAg
ICAgICAgdW5zaWduZWQgaW50IGluc2VydGlvblBvaW50TmVlZHNVcGRhdGU6MTsKICAgICAgICB1
bnNpZ25lZCBpbnQgbGF5b3V0TWFuYWdlckluRGlydHlMaXN0OjE7CiAgICAgICAgdW5zaWduZWQg
aW50IHVzaW5nR2x5cGhDYWNoZToxOwogICAgICAgIHVuc2lnbmVkIGludCBzaG93SW52aXNpYmxl
Q2hhcmFjdGVyczoxOwogICAgICAgIHVuc2lnbmVkIGludCBzaG93Q29udHJvbENoYXJhY3RlcnM6
MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVsZWdhdGVSZXNwb25kc1RvRGlkSW52YWxpZGF0ZTox
OwogICAgICAgIHVuc2lnbmVkIGludCBkZWxlZ2F0ZVJlc3BvbmRzVG9EaWRDb21wbGV0ZToxOwog
ICAgICAgIHVuc2lnbmVkIGludCBnbHlwaEZvcm1hdDoyOwogICAgICAgIHVuc2lnbmVkIGludCB0
ZXh0U3RvcmFnZVJlc3BvbmRzVG9Jc0VkaXRpbmc6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgbm90
aWZ5RWRpdGVkSW5Qcm9ncmVzczoxOwogICAgICAgIHVuc2lnbmVkIGludCBjb250YWluZXJzQ2hh
bmdlZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBpc0dlbmVyYXRpbmdHbHlwaHM6MTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgaGFzTm9uR2VuZXJhdGVkR2x5cGhEYXRhOjE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGxvZ2dlZEJHTGF5b3V0RXhjZXB0aW9uOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGlz
TGF5b3V0UmVxdWVzdGVkRnJvbVN1YnRocmVhZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBkZWZh
dWx0QXR0YWNobWVudFNjYWxpbmc6MjsKICAgICAgICB1bnNpZ25lZCBpbnQgaXNJblVJTGF5b3V0
TW9kZToxOwogICAgICAgIHVuc2lnbmVkIGludCBzZWVuUmlnaHRUb0xlZnQ6MTsKICAgICAgICB1
bnNpZ25lZCBpbnQgaWdub3Jlc1ZpZXdUcmFuc2Zvcm1hdGlvbnM6MTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbmVlZFRvRmx1c2hHbHlwaDoxOwogICAgICAgIHVuc2lnbmVkIGludCBmbGlwc0lmTmVl
ZGVkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGFsbG93Tm9uQ29udGlnOjE7CiAgICAgICAgdW5z
aWduZWQgaW50IHVzZU5vbkNvbnRpZzoxOwogICAgfSBfbG1GbGFnczsKCiAgICBpZCBfZGVsZWdh
dGU7CgoKICAgIHVuc2lnbmVkIHNob3J0IF90ZXh0Vmlld1Jlc2l6ZURpc2FibGVTdGFjazsKICAg
IHVuc2lnbmVkIHNob3J0IF9kaXNwbGF5SW52YWxpZGF0aW9uRGlzYWJsZVN0YWNrOwogICAgTlNS
YW5nZSBfZGVmZXJyZWREaXNwbGF5Q2hhclJhbmdlOwoKCiAgICBOU1RleHRWaWV3ICpfZmlyc3RU
ZXh0VmlldzsKCgogICAgTlNSZWN0ICpfY2FjaGVkUmVjdEFycmF5OwogICAgTlNVSW50ZWdlciBf
Y2FjaGVkUmVjdEFycmF5Q2FwYWNpdHk7CgoKICAgIGNoYXIgKl9nbHlwaEJ1ZmZlcjsKICAgIE5T
VUludGVnZXIgX2dseXBoQnVmZmVyU2l6ZTsKCgogICAgTlNSYW5nZSBfY2FjaGVkTG9jYXRpb25O
b21pbmFsR2x5cGhSYW5nZTsKICAgIE5TVUludGVnZXIgX2NhY2hlZExvY2F0aW9uR2x5cGhJbmRl
eDsKICAgIE5TUG9pbnQgX2NhY2hlZExvY2F0aW9uOwogICAgTlNSYW5nZSBfY2FjaGVkRm9udENo
YXJSYW5nZTsKICAgIE5TRm9udCAqX2NhY2hlZEZvbnQ7CgoKICAgIE5TVUludGVnZXIgX2ZpcnN0
VW5sYWlkR2x5cGhJbmRleDsKICAgIE5TVUludGVnZXIgX2ZpcnN0VW5sYWlkQ2hhckluZGV4OwoK
CiAgICBOU0JveCAqX3J1bGVyQWNjVmlldzsKICAgIGlkIF9ydWxlckFjY1ZpZXdBbGlnbm1lbnRC
dXR0b25zOwogICAgaWQgX3J1bGVyQWNjVmlld1NwYWNpbmc7CiAgICBOU1RhYldlbGwgKl9ydWxl
ckFjY1ZpZXdMZWZ0VGFiV2VsbDsKICAgIE5TVGFiV2VsbCAqX3J1bGVyQWNjVmlld1JpZ2h0VGFi
V2VsbDsKICAgIE5TVGFiV2VsbCAqX3J1bGVyQWNjVmlld0NlbnRlclRhYldlbGw7CiAgICBOU1Rh
YldlbGwgKl9ydWxlckFjY1ZpZXdEZWNpbWFsVGFiV2VsbDsKICAgIGlkIF9ydWxlckFjY1ZpZXdT
dHlsZXM7CiAgICBpZCBfcnVsZXJBY2NWaWV3TGlzdHM7CgogICAgTlNSYW5nZSBfbmV3bHlGaWxs
ZWRHbHlwaFJhbmdlOwoKICAgIGlkIF9leHRyYURhdGE7Cn0KCgoKLSAoaWQpaW5pdDsKCgoKCi0g
KE5TVGV4dFN0b3JhZ2UgKil0ZXh0U3RvcmFnZTsKLSAodm9pZClzZXRUZXh0U3RvcmFnZTooTlNU
ZXh0U3RvcmFnZSAqKXRleHRTdG9yYWdlOwoKCi0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJp
YnV0ZWRTdHJpbmc7CgoKLSAodm9pZClyZXBsYWNlVGV4dFN0b3JhZ2U6KE5TVGV4dFN0b3JhZ2Ug
KiluZXdUZXh0U3RvcmFnZTsKCgoKLSAoTlNHbHlwaEdlbmVyYXRvciAqKWdseXBoR2VuZXJhdG9y
OwotICh2b2lkKXNldEdseXBoR2VuZXJhdG9yOihOU0dseXBoR2VuZXJhdG9yICopZ2x5cGhHZW5l
cmF0b3I7CgoKCi0gKE5TVHlwZXNldHRlciAqKXR5cGVzZXR0ZXI7Ci0gKHZvaWQpc2V0VHlwZXNl
dHRlcjooTlNUeXBlc2V0dGVyICopdHlwZXNldHRlcjsKCgotIChpZCA8TlNMYXlvdXRNYW5hZ2Vy
RGVsZWdhdGU+KWRlbGVnYXRlOwotICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNMYXlvdXRNYW5h
Z2VyRGVsZWdhdGU+KWRlbGVnYXRlOwoKCgoKLSAoTlNBcnJheSAqKXRleHRDb250YWluZXJzOwoK
LSAodm9pZClhZGRUZXh0Q29udGFpbmVyOihOU1RleHRDb250YWluZXIgKiljb250YWluZXI7Cgot
ICh2b2lkKWluc2VydFRleHRDb250YWluZXI6KE5TVGV4dENvbnRhaW5lciAqKWNvbnRhaW5lciBh
dEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OwoKLSAodm9pZClyZW1vdmVUZXh0Q29udGFpbmVyQXRJ
bmRleDooTlNVSW50ZWdlcilpbmRleDsKCgotICh2b2lkKXRleHRDb250YWluZXJDaGFuZ2VkR2Vv
bWV0cnk6KE5TVGV4dENvbnRhaW5lciAqKWNvbnRhaW5lcjsKCgotICh2b2lkKXRleHRDb250YWlu
ZXJDaGFuZ2VkVGV4dFZpZXc6KE5TVGV4dENvbnRhaW5lciAqKWNvbnRhaW5lcjsKCgoKCi0gKHZv
aWQpc2V0QmFja2dyb3VuZExheW91dEVuYWJsZWQ6KEJPT0wpZmxhZzsKLSAoQk9PTCliYWNrZ3Jv
dW5kTGF5b3V0RW5hYmxlZDsKCgotICh2b2lkKXNldFVzZXNTY3JlZW5Gb250czooQk9PTClmbGFn
OwotIChCT09MKXVzZXNTY3JlZW5Gb250czsKCgotICh2b2lkKXNldFNob3dzSW52aXNpYmxlQ2hh
cmFjdGVyczooQk9PTClmbGFnOwotIChCT09MKXNob3dzSW52aXNpYmxlQ2hhcmFjdGVyczsKCgot
ICh2b2lkKXNldFNob3dzQ29udHJvbENoYXJhY3RlcnM6KEJPT0wpZmxhZzsKLSAoQk9PTClzaG93
c0NvbnRyb2xDaGFyYWN0ZXJzOwoKCi0gKHZvaWQpc2V0SHlwaGVuYXRpb25GYWN0b3I6KGZsb2F0
KWZhY3RvcjsKLSAoZmxvYXQpaHlwaGVuYXRpb25GYWN0b3I7CgoKLSAodm9pZClzZXREZWZhdWx0
QXR0YWNobWVudFNjYWxpbmc6KE5TSW1hZ2VTY2FsaW5nKXNjYWxpbmc7Ci0gKE5TSW1hZ2VTY2Fs
aW5nKWRlZmF1bHRBdHRhY2htZW50U2NhbGluZzsKCgoKLSAodm9pZClzZXRUeXBlc2V0dGVyQmVo
YXZpb3I6KE5TVHlwZXNldHRlckJlaGF2aW9yKXRoZUJlaGF2aW9yOwotIChOU1R5cGVzZXR0ZXJC
ZWhhdmlvcil0eXBlc2V0dGVyQmVoYXZpb3I7CgoKCgotIChOU1VJbnRlZ2VyKWxheW91dE9wdGlv
bnM7CgoKCgotICh2b2lkKXNldEFsbG93c05vbkNvbnRpZ3VvdXNMYXlvdXQ6KEJPT0wpZmxhZzsK
LSAoQk9PTClhbGxvd3NOb25Db250aWd1b3VzTGF5b3V0OwoKLSAoQk9PTCloYXNOb25Db250aWd1
b3VzTGF5b3V0OwoKCgoKCi0gKHZvaWQpaW52YWxpZGF0ZUdseXBoc0ZvckNoYXJhY3RlclJhbmdl
OihOU1JhbmdlKWNoYXJSYW5nZSBjaGFuZ2VJbkxlbmd0aDooTlNJbnRlZ2VyKWRlbHRhIGFjdHVh
bENoYXJhY3RlclJhbmdlOihOU1JhbmdlUG9pbnRlcilhY3R1YWxDaGFyUmFuZ2U7CgoKCi0gKHZv
aWQpaW52YWxpZGF0ZUxheW91dEZvckNoYXJhY3RlclJhbmdlOihOU1JhbmdlKWNoYXJSYW5nZSBh
Y3R1YWxDaGFyYWN0ZXJSYW5nZTooTlNSYW5nZVBvaW50ZXIpYWN0dWFsQ2hhclJhbmdlOwoKLSAo
dm9pZClpbnZhbGlkYXRlTGF5b3V0Rm9yQ2hhcmFjdGVyUmFuZ2U6KE5TUmFuZ2UpY2hhclJhbmdl
IGlzU29mdDooQk9PTClmbGFnIGFjdHVhbENoYXJhY3RlclJhbmdlOihOU1JhbmdlUG9pbnRlcilh
Y3R1YWxDaGFyUmFuZ2U7CgoKLSAodm9pZClpbnZhbGlkYXRlRGlzcGxheUZvckNoYXJhY3RlclJh
bmdlOihOU1JhbmdlKWNoYXJSYW5nZTsKLSAodm9pZClpbnZhbGlkYXRlRGlzcGxheUZvckdseXBo
UmFuZ2U6KE5TUmFuZ2UpZ2x5cGhSYW5nZTsKCgotICh2b2lkKXRleHRTdG9yYWdlOihOU1RleHRT
dG9yYWdlICopc3RyIGVkaXRlZDooTlNVSW50ZWdlcillZGl0ZWRNYXNrIHJhbmdlOihOU1Jhbmdl
KW5ld0NoYXJSYW5nZSBjaGFuZ2VJbkxlbmd0aDooTlNJbnRlZ2VyKWRlbHRhIGludmFsaWRhdGVk
UmFuZ2U6KE5TUmFuZ2UpaW52YWxpZGF0ZWRDaGFyUmFuZ2U7CgoKCgoKLSAodm9pZCllbnN1cmVH
bHlwaHNGb3JDaGFyYWN0ZXJSYW5nZTooTlNSYW5nZSljaGFyUmFuZ2U7Ci0gKHZvaWQpZW5zdXJl
R2x5cGhzRm9yR2x5cGhSYW5nZTooTlNSYW5nZSlnbHlwaFJhbmdlOwotICh2b2lkKWVuc3VyZUxh
eW91dEZvckNoYXJhY3RlclJhbmdlOihOU1JhbmdlKWNoYXJSYW5nZTsKLSAodm9pZCllbnN1cmVM
YXlvdXRGb3JHbHlwaFJhbmdlOihOU1JhbmdlKWdseXBoUmFuZ2U7Ci0gKHZvaWQpZW5zdXJlTGF5
b3V0Rm9yVGV4dENvbnRhaW5lcjooTlNUZXh0Q29udGFpbmVyICopY29udGFpbmVyOwotICh2b2lk
KWVuc3VyZUxheW91dEZvckJvdW5kaW5nUmVjdDooTlNSZWN0KWJvdW5kcyBpblRleHRDb250YWlu
ZXI6KE5TVGV4dENvbnRhaW5lciAqKWNvbnRhaW5lcjsKIyAzMTIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0xheW91dE1hbmFnZXIuaCIgMwot
ICh2b2lkKWluc2VydEdseXBoczooY29uc3QgTlNHbHlwaCAqKWdseXBocyBsZW5ndGg6KE5TVUlu
dGVnZXIpbGVuZ3RoIGZvclN0YXJ0aW5nR2x5cGhBdEluZGV4OihOU1VJbnRlZ2VyKWdseXBoSW5k
ZXggY2hhcmFjdGVySW5kZXg6KE5TVUludGVnZXIpY2hhckluZGV4OwoKCgotICh2b2lkKWluc2Vy
dEdseXBoOihOU0dseXBoKWdseXBoIGF0R2x5cGhJbmRleDooTlNVSW50ZWdlcilnbHlwaEluZGV4
IGNoYXJhY3RlckluZGV4OihOU1VJbnRlZ2VyKWNoYXJJbmRleDsKCgotICh2b2lkKXJlcGxhY2VH
bHlwaEF0SW5kZXg6KE5TVUludGVnZXIpZ2x5cGhJbmRleCB3aXRoR2x5cGg6KE5TR2x5cGgpbmV3
R2x5cGg7CgoKLSAodm9pZClkZWxldGVHbHlwaHNJblJhbmdlOihOU1JhbmdlKWdseXBoUmFuZ2U7
CgoKLSAodm9pZClzZXRDaGFyYWN0ZXJJbmRleDooTlNVSW50ZWdlciljaGFySW5kZXggZm9yR2x5
cGhBdEluZGV4OihOU1VJbnRlZ2VyKWdseXBoSW5kZXg7CgoKLSAodm9pZClzZXRJbnRBdHRyaWJ1
dGU6KE5TSW50ZWdlcilhdHRyaWJ1dGVUYWcgdmFsdWU6KE5TSW50ZWdlcil2YWwgZm9yR2x5cGhB
dEluZGV4OihOU1VJbnRlZ2VyKWdseXBoSW5kZXg7CgoKCi0gKHZvaWQpaW52YWxpZGF0ZUdseXBo
c09uTGF5b3V0SW52YWxpZGF0aW9uRm9yR2x5cGhSYW5nZTooTlNSYW5nZSlnbHlwaFJhbmdlOwoK
CgoKCi0gKE5TVUludGVnZXIpbnVtYmVyT2ZHbHlwaHM7CgoKLSAoTlNHbHlwaClnbHlwaEF0SW5k
ZXg6KE5TVUludGVnZXIpZ2x5cGhJbmRleCBpc1ZhbGlkSW5kZXg6KEJPT0wgKilpc1ZhbGlkSW5k
ZXg7Ci0gKE5TR2x5cGgpZ2x5cGhBdEluZGV4OihOU1VJbnRlZ2VyKWdseXBoSW5kZXg7Ci0gKEJP
T0wpaXNWYWxpZEdseXBoSW5kZXg6KE5TVUludGVnZXIpZ2x5cGhJbmRleDsKCgotIChOU1VJbnRl
Z2VyKWNoYXJhY3RlckluZGV4Rm9yR2x5cGhBdEluZGV4OihOU1VJbnRlZ2VyKWdseXBoSW5kZXg7
CgoKCi0gKE5TVUludGVnZXIpZ2x5cGhJbmRleEZvckNoYXJhY3RlckF0SW5kZXg6KE5TVUludGVn
ZXIpY2hhckluZGV4OwoKCgotIChOU0ludGVnZXIpaW50QXR0cmlidXRlOihOU0ludGVnZXIpYXR0
cmlidXRlVGFnIGZvckdseXBoQXRJbmRleDooTlNVSW50ZWdlcilnbHlwaEluZGV4OwoKCi0gKE5T
VUludGVnZXIpZ2V0R2x5cGhzSW5SYW5nZTooTlNSYW5nZSlnbHlwaFJhbmdlIGdseXBoczooTlNH
bHlwaCAqKWdseXBoQnVmZmVyIGNoYXJhY3RlckluZGV4ZXM6KE5TVUludGVnZXIgKiljaGFySW5k
ZXhCdWZmZXIgZ2x5cGhJbnNjcmlwdGlvbnM6KE5TR2x5cGhJbnNjcmlwdGlvbiAqKWluc2NyaWJl
QnVmZmVyIGVsYXN0aWNCaXRzOihCT09MICopZWxhc3RpY0J1ZmZlcjsKCi0gKE5TVUludGVnZXIp
Z2V0R2x5cGhzSW5SYW5nZTooTlNSYW5nZSlnbHlwaFJhbmdlIGdseXBoczooTlNHbHlwaCAqKWds
eXBoQnVmZmVyIGNoYXJhY3RlckluZGV4ZXM6KE5TVUludGVnZXIgKiljaGFySW5kZXhCdWZmZXIg
Z2x5cGhJbnNjcmlwdGlvbnM6KE5TR2x5cGhJbnNjcmlwdGlvbiAqKWluc2NyaWJlQnVmZmVyIGVs
YXN0aWNCaXRzOihCT09MICopZWxhc3RpY0J1ZmZlciBiaWRpTGV2ZWxzOih1bnNpZ25lZCBjaGFy
ICopYmlkaUxldmVsQnVmZmVyOwoKCgotIChOU1VJbnRlZ2VyKWdldEdseXBoczooTlNHbHlwaCAq
KWdseXBoQXJyYXkgcmFuZ2U6KE5TUmFuZ2UpZ2x5cGhSYW5nZTsKCgoKCgoKLSAodm9pZClzZXRU
ZXh0Q29udGFpbmVyOihOU1RleHRDb250YWluZXIgKiljb250YWluZXIgZm9yR2x5cGhSYW5nZToo
TlNSYW5nZSlnbHlwaFJhbmdlOwoKCi0gKHZvaWQpc2V0TGluZUZyYWdtZW50UmVjdDooTlNSZWN0
KWZyYWdtZW50UmVjdCBmb3JHbHlwaFJhbmdlOihOU1JhbmdlKWdseXBoUmFuZ2UgdXNlZFJlY3Q6
KE5TUmVjdCl1c2VkUmVjdDsKCgotICh2b2lkKXNldEV4dHJhTGluZUZyYWdtZW50UmVjdDooTlNS
ZWN0KWZyYWdtZW50UmVjdCB1c2VkUmVjdDooTlNSZWN0KXVzZWRSZWN0IHRleHRDb250YWluZXI6
KE5TVGV4dENvbnRhaW5lciAqKWNvbnRhaW5lcjsKCgotICh2b2lkKXNldExvY2F0aW9uOihOU1Bv
aW50KWxvY2F0aW9uIGZvclN0YXJ0T2ZHbHlwaFJhbmdlOihOU1JhbmdlKWdseXBoUmFuZ2U7CgoK
Ci0gKHZvaWQpc2V0TG9jYXRpb25zOihOU1BvaW50QXJyYXkpbG9jYXRpb25zIHN0YXJ0aW5nR2x5
cGhJbmRleGVzOihOU1VJbnRlZ2VyICopZ2x5cGhJbmRleGVzIGNvdW50OihOU1VJbnRlZ2VyKWNv
dW50IGZvckdseXBoUmFuZ2U6KE5TUmFuZ2UpZ2x5cGhSYW5nZTsKCgoKLSAodm9pZClzZXROb3RT
aG93bkF0dHJpYnV0ZTooQk9PTClmbGFnIGZvckdseXBoQXRJbmRleDooTlNVSW50ZWdlcilnbHlw
aEluZGV4OwoKCi0gKHZvaWQpc2V0RHJhd3NPdXRzaWRlTGluZUZyYWdtZW50OihCT09MKWZsYWcg
Zm9yR2x5cGhBdEluZGV4OihOU1VJbnRlZ2VyKWdseXBoSW5kZXg7CgoKLSAodm9pZClzZXRBdHRh
Y2htZW50U2l6ZTooTlNTaXplKWF0dGFjaG1lbnRTaXplIGZvckdseXBoUmFuZ2U6KE5TUmFuZ2Up
Z2x5cGhSYW5nZTsKCgoKCgoKLSAodm9pZClnZXRGaXJzdFVubGFpZENoYXJhY3RlckluZGV4OihO
U1VJbnRlZ2VyICopY2hhckluZGV4IGdseXBoSW5kZXg6KE5TVUludGVnZXIgKilnbHlwaEluZGV4
OwotIChOU1VJbnRlZ2VyKWZpcnN0VW5sYWlkQ2hhcmFjdGVySW5kZXg7Ci0gKE5TVUludGVnZXIp
Zmlyc3RVbmxhaWRHbHlwaEluZGV4OwoKCgoKLSAoTlNUZXh0Q29udGFpbmVyICopdGV4dENvbnRh
aW5lckZvckdseXBoQXRJbmRleDooTlNVSW50ZWdlcilnbHlwaEluZGV4IGVmZmVjdGl2ZVJhbmdl
OihOU1JhbmdlUG9pbnRlcillZmZlY3RpdmVHbHlwaFJhbmdlOwoKCi0gKE5TUmVjdCl1c2VkUmVj
dEZvclRleHRDb250YWluZXI6KE5TVGV4dENvbnRhaW5lciAqKWNvbnRhaW5lcjsKCgotIChOU1Jl
Y3QpbGluZUZyYWdtZW50UmVjdEZvckdseXBoQXRJbmRleDooTlNVSW50ZWdlcilnbHlwaEluZGV4
IGVmZmVjdGl2ZVJhbmdlOihOU1JhbmdlUG9pbnRlcillZmZlY3RpdmVHbHlwaFJhbmdlOwoKCi0g
KE5TUmVjdClsaW5lRnJhZ21lbnRVc2VkUmVjdEZvckdseXBoQXRJbmRleDooTlNVSW50ZWdlciln
bHlwaEluZGV4IGVmZmVjdGl2ZVJhbmdlOihOU1JhbmdlUG9pbnRlcillZmZlY3RpdmVHbHlwaFJh
bmdlOwoKCgotIChOU1JlY3QpbGluZUZyYWdtZW50UmVjdEZvckdseXBoQXRJbmRleDooTlNVSW50
ZWdlcilnbHlwaEluZGV4IGVmZmVjdGl2ZVJhbmdlOihOU1JhbmdlUG9pbnRlcillZmZlY3RpdmVH
bHlwaFJhbmdlIHdpdGhvdXRBZGRpdGlvbmFsTGF5b3V0OihCT09MKWZsYWc7Ci0gKE5TUmVjdCls
aW5lRnJhZ21lbnRVc2VkUmVjdEZvckdseXBoQXRJbmRleDooTlNVSW50ZWdlcilnbHlwaEluZGV4
IGVmZmVjdGl2ZVJhbmdlOihOU1JhbmdlUG9pbnRlcillZmZlY3RpdmVHbHlwaFJhbmdlIHdpdGhv
dXRBZGRpdGlvbmFsTGF5b3V0OihCT09MKWZsYWc7Ci0gKE5TVGV4dENvbnRhaW5lciAqKXRleHRD
b250YWluZXJGb3JHbHlwaEF0SW5kZXg6KE5TVUludGVnZXIpZ2x5cGhJbmRleCBlZmZlY3RpdmVS
YW5nZTooTlNSYW5nZVBvaW50ZXIpZWZmZWN0aXZlR2x5cGhSYW5nZSB3aXRob3V0QWRkaXRpb25h
bExheW91dDooQk9PTClmbGFnOwoKCgotIChOU1JlY3QpZXh0cmFMaW5lRnJhZ21lbnRSZWN0Owot
IChOU1JlY3QpZXh0cmFMaW5lRnJhZ21lbnRVc2VkUmVjdDsKLSAoTlNUZXh0Q29udGFpbmVyICop
ZXh0cmFMaW5lRnJhZ21lbnRUZXh0Q29udGFpbmVyOwoKCi0gKE5TUG9pbnQpbG9jYXRpb25Gb3JH
bHlwaEF0SW5kZXg6KE5TVUludGVnZXIpZ2x5cGhJbmRleDsKCgotIChCT09MKW5vdFNob3duQXR0
cmlidXRlRm9yR2x5cGhBdEluZGV4OihOU1VJbnRlZ2VyKWdseXBoSW5kZXg7CgoKLSAoQk9PTClk
cmF3c091dHNpZGVMaW5lRnJhZ21lbnRGb3JHbHlwaEF0SW5kZXg6KE5TVUludGVnZXIpZ2x5cGhJ
bmRleDsKCgotIChOU1NpemUpYXR0YWNobWVudFNpemVGb3JHbHlwaEF0SW5kZXg6KE5TVUludGVn
ZXIpZ2x5cGhJbmRleDsKCgoKCgotICh2b2lkKXNldExheW91dFJlY3Q6KE5TUmVjdClyZWN0IGZv
clRleHRCbG9jazooTlNUZXh0QmxvY2sgKilibG9jayBnbHlwaFJhbmdlOihOU1JhbmdlKWdseXBo
UmFuZ2U7Ci0gKHZvaWQpc2V0Qm91bmRzUmVjdDooTlNSZWN0KXJlY3QgZm9yVGV4dEJsb2NrOihO
U1RleHRCbG9jayAqKWJsb2NrIGdseXBoUmFuZ2U6KE5TUmFuZ2UpZ2x5cGhSYW5nZTsKLSAoTlNS
ZWN0KWxheW91dFJlY3RGb3JUZXh0QmxvY2s6KE5TVGV4dEJsb2NrICopYmxvY2sgZ2x5cGhSYW5n
ZTooTlNSYW5nZSlnbHlwaFJhbmdlOwotIChOU1JlY3QpYm91bmRzUmVjdEZvclRleHRCbG9jazoo
TlNUZXh0QmxvY2sgKilibG9jayBnbHlwaFJhbmdlOihOU1JhbmdlKWdseXBoUmFuZ2U7CgotIChO
U1JlY3QpbGF5b3V0UmVjdEZvclRleHRCbG9jazooTlNUZXh0QmxvY2sgKilibG9jayBhdEluZGV4
OihOU1VJbnRlZ2VyKWdseXBoSW5kZXggZWZmZWN0aXZlUmFuZ2U6KE5TUmFuZ2VQb2ludGVyKWVm
ZmVjdGl2ZUdseXBoUmFuZ2U7Ci0gKE5TUmVjdClib3VuZHNSZWN0Rm9yVGV4dEJsb2NrOihOU1Rl
eHRCbG9jayAqKWJsb2NrIGF0SW5kZXg6KE5TVUludGVnZXIpZ2x5cGhJbmRleCBlZmZlY3RpdmVS
YW5nZTooTlNSYW5nZVBvaW50ZXIpZWZmZWN0aXZlR2x5cGhSYW5nZTsKCgoKCgoKCi0gKE5TUmFu
Z2UpZ2x5cGhSYW5nZUZvckNoYXJhY3RlclJhbmdlOihOU1JhbmdlKWNoYXJSYW5nZSBhY3R1YWxD
aGFyYWN0ZXJSYW5nZTooTlNSYW5nZVBvaW50ZXIpYWN0dWFsQ2hhclJhbmdlOwoKCi0gKE5TUmFu
Z2UpY2hhcmFjdGVyUmFuZ2VGb3JHbHlwaFJhbmdlOihOU1JhbmdlKWdseXBoUmFuZ2UgYWN0dWFs
R2x5cGhSYW5nZTooTlNSYW5nZVBvaW50ZXIpYWN0dWFsR2x5cGhSYW5nZTsKCgoKCi0gKE5TUmFu
Z2UpZ2x5cGhSYW5nZUZvclRleHRDb250YWluZXI6KE5TVGV4dENvbnRhaW5lciAqKWNvbnRhaW5l
cjsKCgotIChOU1JhbmdlKXJhbmdlT2ZOb21pbmFsbHlTcGFjZWRHbHlwaHNDb250YWluaW5nSW5k
ZXg6KE5TVUludGVnZXIpZ2x5cGhJbmRleDsKCgotIChOU1JlY3RBcnJheSlyZWN0QXJyYXlGb3JD
aGFyYWN0ZXJSYW5nZTooTlNSYW5nZSljaGFyUmFuZ2Ugd2l0aGluU2VsZWN0ZWRDaGFyYWN0ZXJS
YW5nZTooTlNSYW5nZSlzZWxDaGFyUmFuZ2UgaW5UZXh0Q29udGFpbmVyOihOU1RleHRDb250YWlu
ZXIgKiljb250YWluZXIgcmVjdENvdW50OihOU1VJbnRlZ2VyICopcmVjdENvdW50OwotIChOU1Jl
Y3RBcnJheSlyZWN0QXJyYXlGb3JHbHlwaFJhbmdlOihOU1JhbmdlKWdseXBoUmFuZ2Ugd2l0aGlu
U2VsZWN0ZWRHbHlwaFJhbmdlOihOU1JhbmdlKXNlbEdseXBoUmFuZ2UgaW5UZXh0Q29udGFpbmVy
OihOU1RleHRDb250YWluZXIgKiljb250YWluZXIgcmVjdENvdW50OihOU1VJbnRlZ2VyICopcmVj
dENvdW50OwoKCgotIChOU1JlY3QpYm91bmRpbmdSZWN0Rm9yR2x5cGhSYW5nZTooTlNSYW5nZSln
bHlwaFJhbmdlIGluVGV4dENvbnRhaW5lcjooTlNUZXh0Q29udGFpbmVyICopY29udGFpbmVyOwoK
Ci0gKE5TUmFuZ2UpZ2x5cGhSYW5nZUZvckJvdW5kaW5nUmVjdDooTlNSZWN0KWJvdW5kcyBpblRl
eHRDb250YWluZXI6KE5TVGV4dENvbnRhaW5lciAqKWNvbnRhaW5lcjsKLSAoTlNSYW5nZSlnbHlw
aFJhbmdlRm9yQm91bmRpbmdSZWN0V2l0aG91dEFkZGl0aW9uYWxMYXlvdXQ6KE5TUmVjdClib3Vu
ZHMgaW5UZXh0Q29udGFpbmVyOihOU1RleHRDb250YWluZXIgKiljb250YWluZXI7CgoKLSAoTlNV
SW50ZWdlcilnbHlwaEluZGV4Rm9yUG9pbnQ6KE5TUG9pbnQpcG9pbnQgaW5UZXh0Q29udGFpbmVy
OihOU1RleHRDb250YWluZXIgKiljb250YWluZXIgZnJhY3Rpb25PZkRpc3RhbmNlVGhyb3VnaEds
eXBoOihDR0Zsb2F0ICopcGFydGlhbEZyYWN0aW9uOwotIChOU1VJbnRlZ2VyKWdseXBoSW5kZXhG
b3JQb2ludDooTlNQb2ludClwb2ludCBpblRleHRDb250YWluZXI6KE5TVGV4dENvbnRhaW5lciAq
KWNvbnRhaW5lcjsKLSAoQ0dGbG9hdClmcmFjdGlvbk9mRGlzdGFuY2VUaHJvdWdoR2x5cGhGb3JQ
b2ludDooTlNQb2ludClwb2ludCBpblRleHRDb250YWluZXI6KE5TVGV4dENvbnRhaW5lciAqKWNv
bnRhaW5lcjsKCgoKLSAoTlNVSW50ZWdlciljaGFyYWN0ZXJJbmRleEZvclBvaW50OihOU1BvaW50
KXBvaW50IGluVGV4dENvbnRhaW5lcjooTlNUZXh0Q29udGFpbmVyICopY29udGFpbmVyIGZyYWN0
aW9uT2ZEaXN0YW5jZUJldHdlZW5JbnNlcnRpb25Qb2ludHM6KENHRmxvYXQgKilwYXJ0aWFsRnJh
Y3Rpb247CgoKCgotIChOU1VJbnRlZ2VyKWdldExpbmVGcmFnbWVudEluc2VydGlvblBvaW50c0Zv
ckNoYXJhY3RlckF0SW5kZXg6KE5TVUludGVnZXIpY2hhckluZGV4IGFsdGVybmF0ZVBvc2l0aW9u
czooQk9PTClhRmxhZyBpbkRpc3BsYXlPcmRlcjooQk9PTClkRmxhZyBwb3NpdGlvbnM6KENHRmxv
YXQgKilwb3NpdGlvbnMgY2hhcmFjdGVySW5kZXhlczooTlNVSW50ZWdlciAqKWNoYXJJbmRleGVz
OwoKCgoKCi0gKE5TRGljdGlvbmFyeSAqKXRlbXBvcmFyeUF0dHJpYnV0ZXNBdENoYXJhY3Rlcklu
ZGV4OihOU1VJbnRlZ2VyKWNoYXJJbmRleCBlZmZlY3RpdmVSYW5nZTooTlNSYW5nZVBvaW50ZXIp
ZWZmZWN0aXZlQ2hhclJhbmdlOwotICh2b2lkKXNldFRlbXBvcmFyeUF0dHJpYnV0ZXM6KE5TRGlj
dGlvbmFyeSAqKWF0dHJzIGZvckNoYXJhY3RlclJhbmdlOihOU1JhbmdlKWNoYXJSYW5nZTsKLSAo
dm9pZClhZGRUZW1wb3JhcnlBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilhdHRycyBmb3JDaGFy
YWN0ZXJSYW5nZTooTlNSYW5nZSljaGFyUmFuZ2U7Ci0gKHZvaWQpcmVtb3ZlVGVtcG9yYXJ5QXR0
cmlidXRlOihOU1N0cmluZyAqKWF0dHJOYW1lIGZvckNoYXJhY3RlclJhbmdlOihOU1JhbmdlKWNo
YXJSYW5nZTsKCgoKLSAoaWQpdGVtcG9yYXJ5QXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJOYW1l
IGF0Q2hhcmFjdGVySW5kZXg6KE5TVUludGVnZXIpbG9jYXRpb24gZWZmZWN0aXZlUmFuZ2U6KE5T
UmFuZ2VQb2ludGVyKXJhbmdlOwotIChpZCl0ZW1wb3JhcnlBdHRyaWJ1dGU6KE5TU3RyaW5nICop
YXR0ck5hbWUgYXRDaGFyYWN0ZXJJbmRleDooTlNVSW50ZWdlcilsb2NhdGlvbiBsb25nZXN0RWZm
ZWN0aXZlUmFuZ2U6KE5TUmFuZ2VQb2ludGVyKXJhbmdlIGluUmFuZ2U6KE5TUmFuZ2UpcmFuZ2VM
aW1pdDsKLSAoTlNEaWN0aW9uYXJ5ICopdGVtcG9yYXJ5QXR0cmlidXRlc0F0Q2hhcmFjdGVySW5k
ZXg6KE5TVUludGVnZXIpbG9jYXRpb24gbG9uZ2VzdEVmZmVjdGl2ZVJhbmdlOihOU1JhbmdlUG9p
bnRlcilyYW5nZSBpblJhbmdlOihOU1JhbmdlKXJhbmdlTGltaXQ7Ci0gKHZvaWQpYWRkVGVtcG9y
YXJ5QXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJOYW1lIHZhbHVlOihpZCl2YWx1ZSBmb3JDaGFy
YWN0ZXJSYW5nZTooTlNSYW5nZSljaGFyUmFuZ2U7CgoKCgoKLSAoTlNGb250ICopc3Vic3RpdHV0
ZUZvbnRGb3JGb250OihOU0ZvbnQgKilvcmlnaW5hbEZvbnQ7CgoKCi0gKENHRmxvYXQpZGVmYXVs
dExpbmVIZWlnaHRGb3JGb250OihOU0ZvbnQgKil0aGVGb250OwoKLSAoQ0dGbG9hdClkZWZhdWx0
QmFzZWxpbmVPZmZzZXRGb3JGb250OihOU0ZvbnQgKil0aGVGb250OwoKLSAoQk9PTCl1c2VzRm9u
dExlYWRpbmc7Ci0gKHZvaWQpc2V0VXNlc0ZvbnRMZWFkaW5nOihCT09MKWZsYWc7CgoKCkBlbmQK
CkBpbnRlcmZhY2UgTlNMYXlvdXRNYW5hZ2VyIChOU1RleHRWaWV3U3VwcG9ydCkKCgoKLSAoTlNB
cnJheSAqKXJ1bGVyTWFya2Vyc0ZvclRleHRWaWV3OihOU1RleHRWaWV3ICopdmlldyBwYXJhZ3Jh
cGhTdHlsZTooTlNQYXJhZ3JhcGhTdHlsZSAqKXN0eWxlIHJ1bGVyOihOU1J1bGVyVmlldyAqKXJ1
bGVyOwotIChOU1ZpZXcgKilydWxlckFjY2Vzc29yeVZpZXdGb3JUZXh0VmlldzooTlNUZXh0Vmll
dyAqKXZpZXcgcGFyYWdyYXBoU3R5bGU6KE5TUGFyYWdyYXBoU3R5bGUgKilzdHlsZSBydWxlcjoo
TlNSdWxlclZpZXcgKilydWxlciBlbmFibGVkOihCT09MKWlzRW5hYmxlZDsKCgoKCi0gKEJPT0wp
bGF5b3V0TWFuYWdlck93bnNGaXJzdFJlc3BvbmRlckluV2luZG93OihOU1dpbmRvdyAqKXdpbmRv
dzsKCgotIChOU1RleHRWaWV3ICopZmlyc3RUZXh0VmlldzsKCi0gKE5TVGV4dFZpZXcgKil0ZXh0
Vmlld0ZvckJlZ2lubmluZ09mU2VsZWN0aW9uOwoKCgoKLSAodm9pZClkcmF3QmFja2dyb3VuZEZv
ckdseXBoUmFuZ2U6KE5TUmFuZ2UpZ2x5cGhzVG9TaG93IGF0UG9pbnQ6KE5TUG9pbnQpb3JpZ2lu
OwotICh2b2lkKWRyYXdHbHlwaHNGb3JHbHlwaFJhbmdlOihOU1JhbmdlKWdseXBoc1RvU2hvdyBh
dFBvaW50OihOU1BvaW50KW9yaWdpbjsKCgotICh2b2lkKXNob3dQYWNrZWRHbHlwaHM6KGNoYXIg
KilnbHlwaHMgbGVuZ3RoOihOU1VJbnRlZ2VyKWdseXBoTGVuIGdseXBoUmFuZ2U6KE5TUmFuZ2Up
Z2x5cGhSYW5nZSBhdFBvaW50OihOU1BvaW50KXBvaW50IGZvbnQ6KE5TRm9udCAqKWZvbnQgY29s
b3I6KE5TQ29sb3IgKiljb2xvciBwcmludGluZ0FkanVzdG1lbnQ6KE5TU2l6ZSlwcmludGluZ0Fk
anVzdG1lbnQ7CgoKLSAodm9pZClzaG93QXR0YWNobWVudENlbGw6KE5TQ2VsbCAqKWNlbGwgaW5S
ZWN0OihOU1JlY3QpcmVjdCBjaGFyYWN0ZXJJbmRleDooTlNVSW50ZWdlcilhdHRhY2htZW50SW5k
ZXg7CgoKCi0gKHZvaWQpZmlsbEJhY2tncm91bmRSZWN0QXJyYXk6KE5TUmVjdEFycmF5KXJlY3RB
cnJheSBjb3VudDooTlNVSW50ZWdlcilyZWN0Q291bnQgZm9yQ2hhcmFjdGVyUmFuZ2U6KE5TUmFu
Z2UpY2hhclJhbmdlIGNvbG9yOihOU0NvbG9yICopY29sb3I7CgoKCi0gKHZvaWQpZHJhd1VuZGVy
bGluZUZvckdseXBoUmFuZ2U6KE5TUmFuZ2UpZ2x5cGhSYW5nZSB1bmRlcmxpbmVUeXBlOihOU0lu
dGVnZXIpdW5kZXJsaW5lVmFsIGJhc2VsaW5lT2Zmc2V0OihDR0Zsb2F0KWJhc2VsaW5lT2Zmc2V0
IGxpbmVGcmFnbWVudFJlY3Q6KE5TUmVjdClsaW5lUmVjdCBsaW5lRnJhZ21lbnRHbHlwaFJhbmdl
OihOU1JhbmdlKWxpbmVHbHlwaFJhbmdlIGNvbnRhaW5lck9yaWdpbjooTlNQb2ludCljb250YWlu
ZXJPcmlnaW47Ci0gKHZvaWQpdW5kZXJsaW5lR2x5cGhSYW5nZTooTlNSYW5nZSlnbHlwaFJhbmdl
IHVuZGVybGluZVR5cGU6KE5TSW50ZWdlcil1bmRlcmxpbmVWYWwgbGluZUZyYWdtZW50UmVjdDoo
TlNSZWN0KWxpbmVSZWN0IGxpbmVGcmFnbWVudEdseXBoUmFuZ2U6KE5TUmFuZ2UpbGluZUdseXBo
UmFuZ2UgY29udGFpbmVyT3JpZ2luOihOU1BvaW50KWNvbnRhaW5lck9yaWdpbjsKCgoKLSAodm9p
ZClkcmF3U3RyaWtldGhyb3VnaEZvckdseXBoUmFuZ2U6KE5TUmFuZ2UpZ2x5cGhSYW5nZSBzdHJp
a2V0aHJvdWdoVHlwZTooTlNJbnRlZ2VyKXN0cmlrZXRocm91Z2hWYWwgYmFzZWxpbmVPZmZzZXQ6
KENHRmxvYXQpYmFzZWxpbmVPZmZzZXQgbGluZUZyYWdtZW50UmVjdDooTlNSZWN0KWxpbmVSZWN0
IGxpbmVGcmFnbWVudEdseXBoUmFuZ2U6KE5TUmFuZ2UpbGluZUdseXBoUmFuZ2UgY29udGFpbmVy
T3JpZ2luOihOU1BvaW50KWNvbnRhaW5lck9yaWdpbjsKLSAodm9pZClzdHJpa2V0aHJvdWdoR2x5
cGhSYW5nZTooTlNSYW5nZSlnbHlwaFJhbmdlIHN0cmlrZXRocm91Z2hUeXBlOihOU0ludGVnZXIp
c3RyaWtldGhyb3VnaFZhbCBsaW5lRnJhZ21lbnRSZWN0OihOU1JlY3QpbGluZVJlY3QgbGluZUZy
YWdtZW50R2x5cGhSYW5nZTooTlNSYW5nZSlsaW5lR2x5cGhSYW5nZSBjb250YWluZXJPcmlnaW46
KE5TUG9pbnQpY29udGFpbmVyT3JpZ2luOwoKCgpAZW5kCgpAcHJvdG9jb2wgTlNMYXlvdXRNYW5h
Z2VyRGVsZWdhdGUgPE5TT2JqZWN0PgpAb3B0aW9uYWwKLSAodm9pZClsYXlvdXRNYW5hZ2VyRGlk
SW52YWxpZGF0ZUxheW91dDooTlNMYXlvdXRNYW5hZ2VyICopc2VuZGVyOwoKCi0gKHZvaWQpbGF5
b3V0TWFuYWdlcjooTlNMYXlvdXRNYW5hZ2VyICopbGF5b3V0TWFuYWdlciBkaWRDb21wbGV0ZUxh
eW91dEZvclRleHRDb250YWluZXI6KE5TVGV4dENvbnRhaW5lciAqKXRleHRDb250YWluZXIgYXRF
bmQ6KEJPT0wpbGF5b3V0RmluaXNoZWRGbGFnOwoKCgotIChOU0RpY3Rpb25hcnkgKilsYXlvdXRN
YW5hZ2VyOihOU0xheW91dE1hbmFnZXIgKilsYXlvdXRNYW5hZ2VyIHNob3VsZFVzZVRlbXBvcmFy
eUF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJzIGZvckRyYXdpbmdUb1NjcmVlbjooQk9P
TCl0b1NjcmVlbiBhdENoYXJhY3RlckluZGV4OihOU1VJbnRlZ2VyKWNoYXJJbmRleCBlZmZlY3Rp
dmVSYW5nZTooTlNSYW5nZVBvaW50ZXIpZWZmZWN0aXZlQ2hhclJhbmdlOwoKCgpAZW5kCiMgMTEy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBw
S2l0LmgiIDIgMwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvTlNUZXh0U3RvcmFnZS5oIiAxIDMKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGV4dFN0b3JhZ2UuaCIgMwpAY2xh
c3MgTlNMYXlvdXRNYW5hZ2VyOwpAY2xhc3MgTlNNdXRhYmxlQXJyYXk7CkBwcm90b2NvbCBOU1Rl
eHRTdG9yYWdlRGVsZWdhdGU7CgoKCmVudW0gewogICAgTlNUZXh0U3RvcmFnZUVkaXRlZEF0dHJp
YnV0ZXMgPSAxLAogICAgTlNUZXh0U3RvcmFnZUVkaXRlZENoYXJhY3RlcnMgPSAyCn07CgpAaW50
ZXJmYWNlIE5TVGV4dFN0b3JhZ2UgOiBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIHsKCiAgICBO
U1JhbmdlIF9lZGl0ZWRSYW5nZTsKICAgIE5TSW50ZWdlciBfZWRpdGVkRGVsdGE7CiAgICBzdHJ1
Y3QgewogICAgICAgIHVuc2lnbmVkIGludCBlZGl0ZWRNYXNrOjg7CiAgICAgICAgdW5zaWduZWQg
aW50IDo4OwogICAgICAgIHVuc2lnbmVkIGludCBkaXNhYmxlZDoxNjsKCiAgICAgICAgdW5zaWdu
ZWQgaW50IDozMjsKCiAgICB9IF9mbGFnczsKICAgIE5TTXV0YWJsZUFycmF5ICpfbGF5b3V0TWFu
YWdlcnM7CiAgICBpZCBfc2lkZURhdGE7Cn0KCgoKLSAodm9pZClhZGRMYXlvdXRNYW5hZ2VyOihO
U0xheW91dE1hbmFnZXIgKilvYmo7Ci0gKHZvaWQpcmVtb3ZlTGF5b3V0TWFuYWdlcjooTlNMYXlv
dXRNYW5hZ2VyICopb2JqOwotIChOU0FycmF5ICopbGF5b3V0TWFuYWdlcnM7CgoKCi0gKHZvaWQp
ZWRpdGVkOihOU1VJbnRlZ2VyKWVkaXRlZE1hc2sgcmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgY2hhbmdl
SW5MZW5ndGg6KE5TSW50ZWdlcilkZWx0YTsKCgoKLSAodm9pZClwcm9jZXNzRWRpdGluZzsKCgot
ICh2b2lkKWludmFsaWRhdGVBdHRyaWJ1dGVzSW5SYW5nZTooTlNSYW5nZSlyYW5nZTsKCgotICh2
b2lkKWVuc3VyZUF0dHJpYnV0ZXNBcmVGaXhlZEluUmFuZ2U6KE5TUmFuZ2UpcmFuZ2U7CgoKCi0g
KEJPT0wpZml4ZXNBdHRyaWJ1dGVzTGF6aWx5OwoKCgotIChOU1VJbnRlZ2VyKWVkaXRlZE1hc2s7
Ci0gKE5TUmFuZ2UpZWRpdGVkUmFuZ2U7Ci0gKE5TSW50ZWdlciljaGFuZ2VJbkxlbmd0aDsKCgoK
LSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPE5TVGV4dFN0b3JhZ2VEZWxlZ2F0ZT4pZGVsZWdhdGU7
Ci0gKGlkIDxOU1RleHRTdG9yYWdlRGVsZWdhdGU+KWRlbGVnYXRlOwoKQGVuZAoKCgoKQHByb3Rv
Y29sIE5TVGV4dFN0b3JhZ2VEZWxlZ2F0ZSA8TlNPYmplY3Q+CkBvcHRpb25hbAoKCgotICh2b2lk
KXRleHRTdG9yYWdlV2lsbFByb2Nlc3NFZGl0aW5nOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbjsKLSAodm9pZCl0ZXh0U3RvcmFnZURpZFByb2Nlc3NFZGl0aW5nOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbjsKCkBlbmQKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUZXh0U3Rv
cmFnZVdpbGxQcm9jZXNzRWRpdGluZ05vdGlmaWNhdGlvbjsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
TlNUZXh0U3RvcmFnZURpZFByb2Nlc3NFZGl0aW5nTm90aWZpY2F0aW9uOwojIDExNCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAy
IDMKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9I
ZWFkZXJzL05TSW5wdXRTZXJ2ZXIuaCIgMSAzCiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0lucHV0U2VydmVyLmgiIDMKQHByb3RvY29s
IE5TSW5wdXRTZXJ2aWNlUHJvdmlkZXIKCi0gKHZvaWQpIGluc2VydFRleHQ6KGlkKWFTdHJpbmcg
Y2xpZW50OihpZClzZW5kZXIgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotICh2b2lkKSBk
b0NvbW1hbmRCeVNlbGVjdG9yOihTRUwpYVNlbGVjdG9yIGNsaWVudDooaWQpc2VuZGVyIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZCkgbWFya2VkVGV4dEFiYW5kb25lZDooaWQp
c2VuZGVyIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZCkgbWFya2VkVGV4dFNl
bGVjdGlvbkNoYW5nZWQ6KE5TUmFuZ2UpbmV3U2VsIGNsaWVudDooaWQpc2VuZGVyIF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZCkgdGVybWluYXRlOihpZClzZW5kZXIgX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCgotIChCT09MKSBjYW5CZURpc2FibGVkIF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKLSAoQk9PTCkgd2FudHNUb0ludGVycHJldEFsbEtleXN0
cm9rZXMgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCi0gKEJPT0wpIHdhbnRzVG9IYW5k
bGVNb3VzZUV2ZW50cyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCi0gKEJPT0wpIHdh
bnRzVG9EZWxheVRleHRDaGFuZ2VOb3RpZmljYXRpb25zIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKCgoKLSAodm9pZCkgaW5wdXRDbGllbnRCZWNvbWVBY3RpdmU6KGlkKXNlbmRlciBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0gKHZvaWQpIGlucHV0Q2xpZW50UmVzaWduQWN0aXZl
OihpZClzZW5kZXIgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCgotICh2b2lkKSBpbnB1
dENsaWVudEVuYWJsZWQ6KGlkKXNlbmRlciBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7Ci0g
KHZvaWQpIGlucHV0Q2xpZW50RGlzYWJsZWQ6KGlkKXNlbmRlciBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CgoKCi0gKHZvaWQpIGFjdGl2ZUNvbnZlcnNhdGlvbldpbGxDaGFuZ2U6KGlkKXNl
bmRlciBmcm9tT2xkQ29udmVyc2F0aW9uOihOU0ludGVnZXIpb2xkQ29udmVyc2F0aW9uIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZCkgYWN0aXZlQ29udmVyc2F0aW9uQ2hhbmdl
ZDooaWQpc2VuZGVyIHRvTmV3Q29udmVyc2F0aW9uOihOU0ludGVnZXIpbmV3Q29udmVyc2F0aW9u
IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCkBlbmQKCgoKQHByb3RvY29sIE5TSW5wdXRT
ZXJ2ZXJNb3VzZVRyYWNrZXIKLSAoQk9PTCkgbW91c2VEb3duT25DaGFyYWN0ZXJJbmRleDooTlNV
SW50ZWdlcil0aGVJbmRleCBhdENvb3JkaW5hdGU6KE5TUG9pbnQpdGhlUG9pbnQgd2l0aE1vZGlm
aWVyOihOU1VJbnRlZ2VyKXRoZUZsYWdzIGNsaWVudDooaWQpc2VuZGVyIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKLSAoQk9PTCkgbW91c2VEcmFnZ2VkT25DaGFyYWN0ZXJJbmRleDooTlNV
SW50ZWdlcil0aGVJbmRleCBhdENvb3JkaW5hdGU6KE5TUG9pbnQpdGhlUG9pbnQgd2l0aE1vZGlm
aWVyOihOU1VJbnRlZ2VyKXRoZUZsYWdzIGNsaWVudDooaWQpc2VuZGVyIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKLSAodm9pZCkgbW91c2VVcE9uQ2hhcmFjdGVySW5kZXg6KE5TVUludGVn
ZXIpdGhlSW5kZXggYXRDb29yZGluYXRlOihOU1BvaW50KXRoZVBvaW50IHdpdGhNb2RpZmllcjoo
TlNVSW50ZWdlcil0aGVGbGFncyBjbGllbnQ6KGlkKXNlbmRlciBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CkBlbmQKCkBpbnRlcmZhY2UgTlNJbnB1dFNlcnZlciA6IE5TT2JqZWN0IDxOU0lu
cHV0U2VydmljZVByb3ZpZGVyLCBOU0lucHV0U2VydmVyTW91c2VUcmFja2VyPiB7CiAgICBOU1N0
cmluZyAqX25hbWU7CiAgICBpZCBfZGVsZWdhdGU7Cn0KCi0gaW5pdFdpdGhEZWxlZ2F0ZTooaWQp
YURlbGVnYXRlIG5hbWU6KE5TU3RyaW5nICopbmFtZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7CkBlbmQKIyAxMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU3RyaW5nRHJhd2luZy5oIiAxIDMKIyAxMiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU3RyaW5n
RHJhd2luZy5oIiAzCkBpbnRlcmZhY2UgTlNTdHJpbmcoTlNTdHJpbmdEcmF3aW5nKQoKLSAoTlNT
aXplKXNpemVXaXRoQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cnM7Ci0gKHZvaWQpZHJh
d0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgd2l0aEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0
dHJzOwotICh2b2lkKWRyYXdJblJlY3Q6KE5TUmVjdClyZWN0IHdpdGhBdHRyaWJ1dGVzOihOU0Rp
Y3Rpb25hcnkgKilhdHRyczsKCkBlbmQKCkBpbnRlcmZhY2UgTlNBdHRyaWJ1dGVkU3RyaW5nKE5T
U3RyaW5nRHJhd2luZykKCi0gKE5TU2l6ZSlzaXplOwotICh2b2lkKWRyYXdBdFBvaW50OihOU1Bv
aW50KXBvaW50OwotICh2b2lkKWRyYXdJblJlY3Q6KE5TUmVjdClyZWN0OwoKQGVuZAoKCmVudW0g
ewoKICAgIE5TU3RyaW5nRHJhd2luZ1RydW5jYXRlc0xhc3RWaXNpYmxlTGluZSA9ICgxIDw8IDUp
LAoKICAgIE5TU3RyaW5nRHJhd2luZ1VzZXNMaW5lRnJhZ21lbnRPcmlnaW4gPSAoMSA8PCAwKSwK
ICAgIE5TU3RyaW5nRHJhd2luZ1VzZXNGb250TGVhZGluZyA9ICgxIDw8IDEpLAogICAgTlNTdHJp
bmdEcmF3aW5nRGlzYWJsZVNjcmVlbkZvbnRTdWJzdGl0dXRpb24gPSAoMSA8PCAyKSwKICAgIE5T
U3RyaW5nRHJhd2luZ1VzZXNEZXZpY2VNZXRyaWNzID0gKDEgPDwgMyksCiAgICBOU1N0cmluZ0Ry
YXdpbmdPbmVTaG90ID0gKDEgPDwgNCkKfTsKdHlwZWRlZiBOU0ludGVnZXIgTlNTdHJpbmdEcmF3
aW5nT3B0aW9uczsKCkBpbnRlcmZhY2UgTlNTdHJpbmcgKE5TRXh0ZW5kZWRTdHJpbmdEcmF3aW5n
KQoKCi0gKHZvaWQpZHJhd1dpdGhSZWN0OihOU1JlY3QpcmVjdCBvcHRpb25zOihOU1N0cmluZ0Ry
YXdpbmdPcHRpb25zKW9wdGlvbnMgYXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRl
czsKCgoKLSAoTlNSZWN0KWJvdW5kaW5nUmVjdFdpdGhTaXplOihOU1NpemUpc2l6ZSBvcHRpb25z
OihOU1N0cmluZ0RyYXdpbmdPcHRpb25zKW9wdGlvbnMgYXR0cmlidXRlczooTlNEaWN0aW9uYXJ5
ICopYXR0cmlidXRlczsKQGVuZAoKQGludGVyZmFjZSBOU0F0dHJpYnV0ZWRTdHJpbmcgKE5TRXh0
ZW5kZWRTdHJpbmdEcmF3aW5nKQotICh2b2lkKWRyYXdXaXRoUmVjdDooTlNSZWN0KXJlY3Qgb3B0
aW9uczooTlNTdHJpbmdEcmF3aW5nT3B0aW9ucylvcHRpb25zOwotIChOU1JlY3QpYm91bmRpbmdS
ZWN0V2l0aFNpemU6KE5TU2l6ZSlzaXplIG9wdGlvbnM6KE5TU3RyaW5nRHJhd2luZ09wdGlvbnMp
b3B0aW9uczsKQGVuZAojIDEyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZy
YW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNSdWxlck1hcmtlci5oIiAxIDMKIyAxMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUnVs
ZXJNYXJrZXIuaCIgMwpAY2xhc3MgTlNFdmVudCwgTlNJbWFnZSwgTlNSdWxlclZpZXc7CgpAaW50
ZXJmYWNlIE5TUnVsZXJNYXJrZXIgOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4gewoK
ICAgIE5TUnVsZXJWaWV3ICpfcnVsZXI7CiAgICBDR0Zsb2F0IF9sb2NhdGlvbjsKICAgIE5TSW1h
Z2UgKl9pbWFnZTsKICAgIE5TUG9pbnQgX2ltYWdlT3JpZ2luOwoKICAgIHN0cnVjdCBfX3JGbGFn
cyB7CiAgICAgICAgdW5zaWduZWQgaW50IG1vdmFibGU6MTsKICAgICAgICB1bnNpZ25lZCBpbnQg
cmVtb3ZhYmxlOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGRyYWdnaW5nOjE7CiAgICAgICAgdW5z
aWduZWQgaW50IHBpbm5lZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfcmVzZXJ2ZWQ6Mjg7CiAg
ICB9IF9yRmxhZ3M7CgogICAgaWQgX3JlcHJlc2VudGVkT2JqZWN0Owp9CgoKCi0gKGlkKWluaXRX
aXRoUnVsZXJWaWV3OihOU1J1bGVyVmlldyAqKXJ1bGVyIG1hcmtlckxvY2F0aW9uOihDR0Zsb2F0
KWxvY2F0aW9uIGltYWdlOihOU0ltYWdlICopaW1hZ2UgaW1hZ2VPcmlnaW46KE5TUG9pbnQpaW1h
Z2VPcmlnaW47CgoKCgotIChOU1J1bGVyVmlldyAqKXJ1bGVyOwoKCgotICh2b2lkKXNldE1hcmtl
ckxvY2F0aW9uOihDR0Zsb2F0KWxvY2F0aW9uOwotIChDR0Zsb2F0KW1hcmtlckxvY2F0aW9uOwoK
Ci0gKHZvaWQpc2V0SW1hZ2U6KE5TSW1hZ2UgKilpbWFnZTsKLSAoTlNJbWFnZSAqKWltYWdlOwoK
Ci0gKHZvaWQpc2V0SW1hZ2VPcmlnaW46KE5TUG9pbnQpaW1hZ2VPcmlnaW47Ci0gKE5TUG9pbnQp
aW1hZ2VPcmlnaW47CgoKLSAodm9pZClzZXRNb3ZhYmxlOihCT09MKWZsYWc7Ci0gKHZvaWQpc2V0
UmVtb3ZhYmxlOihCT09MKWZsYWc7Ci0gKEJPT0wpaXNNb3ZhYmxlOwotIChCT09MKWlzUmVtb3Zh
YmxlOwoKCi0gKEJPT0wpaXNEcmFnZ2luZzsKCgotICh2b2lkKXNldFJlcHJlc2VudGVkT2JqZWN0
OihpZCA8TlNDb3B5aW5nPilyZXByZXNlbnRlZE9iamVjdDsKLSAoaWQgPE5TQ29weWluZz4pcmVw
cmVzZW50ZWRPYmplY3Q7CgoKCgotIChOU1JlY3QpaW1hZ2VSZWN0SW5SdWxlcjsKCgotIChDR0Zs
b2F0KXRoaWNrbmVzc1JlcXVpcmVkSW5SdWxlcjsKCgotICh2b2lkKWRyYXdSZWN0OihOU1JlY3Qp
cmVjdDsKCgotIChCT09MKXRyYWNrTW91c2U6KE5TRXZlbnQgKiltb3VzZURvd25FdmVudCBhZGRp
bmc6KEJPT0wpaXNBZGRpbmc7CgoKQGVuZAojIDEyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNSdWxlclZpZXcuaCIg
MSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9OU1J1bGVyVmlldy5oIiAzCkBjbGFzcyBOU1Njcm9sbFZpZXcsIE5TUnVsZXJNYXJrZXIs
IE5TTXV0YWJsZUFycmF5OwoKCmVudW0gewogICAgTlNIb3Jpem9udGFsUnVsZXIsCiAgICBOU1Zl
cnRpY2FsUnVsZXIKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TUnVsZXJPcmllbnRhdGlvbjsKCkBp
bnRlcmZhY2UgTlNSdWxlclZpZXcgOiBOU1ZpZXcgewoKICBAcHJpdmF0ZQogICAgTlNTY3JvbGxW
aWV3ICpfc2Nyb2xsVmlldzsKICAgIE5TUnVsZXJPcmllbnRhdGlvbiBfb3JpZW50YXRpb247Cgog
ICAgTlNTdHJpbmcgKl91bml0czsKICAgIENHRmxvYXQgX29yaWdpbk9mZnNldDsKCiAgICBDR0Zs
b2F0IF9ydWxlVGhpY2tuZXNzOwogICAgQ0dGbG9hdCBfdGhpY2tuZXNzRm9yTWFya2VyczsKICAg
IENHRmxvYXQgX3RoaWNrbmVzc0ZvckFjY2Vzc29yeVZpZXc7CgogICAgTlNWaWV3ICpfY2xpZW50
VmlldzsKICAgIE5TTXV0YWJsZUFycmF5ICpfbWFya2VyczsKICAgIE5TVmlldyAqX2FjY2Vzc29y
eVZpZXc7CgoKICAgIE5TRGljdGlvbmFyeSAqX2NhY2hlZEhhc2hEaWN0OwogICAgQ0dGbG9hdCBf
Y2FjaGVkRG9jVmlld1RvUnVsZXJDb252ZXJzaW9uOwoKCiAgICBOU1BvaW50IF9jYWNoZWRDb250
ZW50Qm91bmRzT3JpZ2luOwoKCiAgICBOU1J1bGVyTWFya2VyICpfZHJhZ2dpbmdNYXJrZXI7Cgog
ICAgaWQgX3Jlc2VydmVkUnVsZXJWaWV3MTsKfQoKCgorICh2b2lkKXJlZ2lzdGVyVW5pdFdpdGhO
YW1lOihOU1N0cmluZyAqKXVuaXROYW1lIGFiYnJldmlhdGlvbjooTlNTdHJpbmcgKilhYmJyZXZp
YXRpb24gdW5pdFRvUG9pbnRzQ29udmVyc2lvbkZhY3RvcjooQ0dGbG9hdCljb252ZXJzaW9uRmFj
dG9yIHN0ZXBVcEN5Y2xlOihOU0FycmF5ICopc3RlcFVwQ3ljbGUgc3RlcERvd25DeWNsZTooTlNB
cnJheSAqKXN0ZXBEb3duQ3ljbGU7CgoKCi0gKGlkKWluaXRXaXRoU2Nyb2xsVmlldzooTlNTY3Jv
bGxWaWV3ICopc2Nyb2xsVmlldyBvcmllbnRhdGlvbjooTlNSdWxlck9yaWVudGF0aW9uKW9yaWVu
dGF0aW9uOwoKCgoKLSAodm9pZClzZXRTY3JvbGxWaWV3OihOU1Njcm9sbFZpZXcgKilzY3JvbGxW
aWV3OwotIChOU1Njcm9sbFZpZXcgKilzY3JvbGxWaWV3OwoKCi0gKHZvaWQpc2V0T3JpZW50YXRp
b246KE5TUnVsZXJPcmllbnRhdGlvbilvcmllbnRhdGlvbjsKLSAoTlNSdWxlck9yaWVudGF0aW9u
KW9yaWVudGF0aW9uOwoKCgoKCi0gKENHRmxvYXQpYmFzZWxpbmVMb2NhdGlvbjsKCgotIChDR0Zs
b2F0KXJlcXVpcmVkVGhpY2tuZXNzOwoKCi0gKHZvaWQpc2V0UnVsZVRoaWNrbmVzczooQ0dGbG9h
dCl0aGlja25lc3M7Ci0gKENHRmxvYXQpcnVsZVRoaWNrbmVzczsKCgotICh2b2lkKXNldFJlc2Vy
dmVkVGhpY2tuZXNzRm9yTWFya2VyczooQ0dGbG9hdCl0aGlja25lc3M7Ci0gKENHRmxvYXQpcmVz
ZXJ2ZWRUaGlja25lc3NGb3JNYXJrZXJzOwoKCi0gKHZvaWQpc2V0UmVzZXJ2ZWRUaGlja25lc3NG
b3JBY2Nlc3NvcnlWaWV3OihDR0Zsb2F0KXRoaWNrbmVzczsKLSAoQ0dGbG9hdClyZXNlcnZlZFRo
aWNrbmVzc0ZvckFjY2Vzc29yeVZpZXc7CgoKCgotICh2b2lkKXNldE1lYXN1cmVtZW50VW5pdHM6
KE5TU3RyaW5nICopdW5pdE5hbWU7Ci0gKE5TU3RyaW5nICopbWVhc3VyZW1lbnRVbml0czsKCgot
ICh2b2lkKXNldE9yaWdpbk9mZnNldDooQ0dGbG9hdClvZmZzZXQ7Ci0gKENHRmxvYXQpb3JpZ2lu
T2Zmc2V0OwoKCgoKLSAodm9pZClzZXRDbGllbnRWaWV3OihOU1ZpZXcgKiljbGllbnQ7Ci0gKE5T
VmlldyAqKWNsaWVudFZpZXc7CgotICh2b2lkKXNldE1hcmtlcnM6KE5TQXJyYXkgKiltYXJrZXJz
OwotICh2b2lkKWFkZE1hcmtlcjooTlNSdWxlck1hcmtlciAqKW1hcmtlcjsKLSAodm9pZClyZW1v
dmVNYXJrZXI6KE5TUnVsZXJNYXJrZXIgKiltYXJrZXI7Ci0gKE5TQXJyYXkgKiltYXJrZXJzOwoK
Ci0gKEJPT0wpdHJhY2tNYXJrZXI6KE5TUnVsZXJNYXJrZXIgKiltYXJrZXIgd2l0aE1vdXNlRXZl
bnQ6KE5TRXZlbnQgKilldmVudDsKCgotICh2b2lkKXNldEFjY2Vzc29yeVZpZXc6KE5TVmlldyAq
KWFjY2Vzc29yeTsKLSAoTlNWaWV3ICopYWNjZXNzb3J5VmlldzsKCgotICh2b2lkKW1vdmVSdWxl
cmxpbmVGcm9tTG9jYXRpb246KENHRmxvYXQpb2xkTG9jYXRpb24gdG9Mb2NhdGlvbjooQ0dGbG9h
dCluZXdMb2NhdGlvbjsKCgoKCi0gKHZvaWQpaW52YWxpZGF0ZUhhc2hNYXJrczsKCgotICh2b2lk
KWRyYXdIYXNoTWFya3NBbmRMYWJlbHNJblJlY3Q6KE5TUmVjdClyZWN0OwoKCi0gKHZvaWQpZHJh
d01hcmtlcnNJblJlY3Q6KE5TUmVjdClyZWN0OwoKCgoKLSAoQk9PTClpc0ZsaXBwZWQ7CgoKQGVu
ZAoKCkBpbnRlcmZhY2UgTlNWaWV3IChOU1J1bGVyTWFya2VyQ2xpZW50Vmlld0RlbGVnYXRpb24p
CgotIChCT09MKXJ1bGVyVmlldzooTlNSdWxlclZpZXcgKilydWxlciBzaG91bGRNb3ZlTWFya2Vy
OihOU1J1bGVyTWFya2VyICopbWFya2VyOwoKCi0gKENHRmxvYXQpcnVsZXJWaWV3OihOU1J1bGVy
VmlldyAqKXJ1bGVyIHdpbGxNb3ZlTWFya2VyOihOU1J1bGVyTWFya2VyICopbWFya2VyIHRvTG9j
YXRpb246KENHRmxvYXQpbG9jYXRpb247CgoKLSAodm9pZClydWxlclZpZXc6KE5TUnVsZXJWaWV3
ICopcnVsZXIgZGlkTW92ZU1hcmtlcjooTlNSdWxlck1hcmtlciAqKW1hcmtlcjsKCgotIChCT09M
KXJ1bGVyVmlldzooTlNSdWxlclZpZXcgKilydWxlciBzaG91bGRSZW1vdmVNYXJrZXI6KE5TUnVs
ZXJNYXJrZXIgKiltYXJrZXI7CgoKLSAodm9pZClydWxlclZpZXc6KE5TUnVsZXJWaWV3ICopcnVs
ZXIgZGlkUmVtb3ZlTWFya2VyOihOU1J1bGVyTWFya2VyICopbWFya2VyOwoKCi0gKEJPT0wpcnVs
ZXJWaWV3OihOU1J1bGVyVmlldyAqKXJ1bGVyIHNob3VsZEFkZE1hcmtlcjooTlNSdWxlck1hcmtl
ciAqKW1hcmtlcjsKCgotIChDR0Zsb2F0KXJ1bGVyVmlldzooTlNSdWxlclZpZXcgKilydWxlciB3
aWxsQWRkTWFya2VyOihOU1J1bGVyTWFya2VyICopbWFya2VyIGF0TG9jYXRpb246KENHRmxvYXQp
bG9jYXRpb247CgoKLSAodm9pZClydWxlclZpZXc6KE5TUnVsZXJWaWV3ICopcnVsZXIgZGlkQWRk
TWFya2VyOihOU1J1bGVyTWFya2VyICopbWFya2VyOwoKCi0gKHZvaWQpcnVsZXJWaWV3OihOU1J1
bGVyVmlldyAqKXJ1bGVyIGhhbmRsZU1vdXNlRG93bjooTlNFdmVudCAqKWV2ZW50OwoKCi0gKHZv
aWQpcnVsZXJWaWV3OihOU1J1bGVyVmlldyAqKXJ1bGVyIHdpbGxTZXRDbGllbnRWaWV3OihOU1Zp
ZXcgKiluZXdDbGllbnQ7CgoKQGVuZAojIDEyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNTZWN1cmVUZXh0RmllbGQu
aCIgMSAzCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU1NlY3VyZVRleHRGaWVsZC5oIiAzCkBpbnRlcmZhY2UgTlNTZWN1cmVUZXh0Rmll
bGQgOiBOU1RleHRGaWVsZCB7Cgp9CkBlbmQKCkBpbnRlcmZhY2UgTlNTZWN1cmVUZXh0RmllbGRD
ZWxsIDogTlNUZXh0RmllbGRDZWxsIHsKCiAgICBAcHJpdmF0ZQogICAgQk9PTCBfZWNob3NCdWxs
ZXRzOwp9CgotICh2b2lkKXNldEVjaG9zQnVsbGV0czooQk9PTClmbGFnOwotIChCT09MKWVjaG9z
QnVsbGV0czsKCkBlbmQKIyAxMjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TSW50ZXJmYWNlU3R5bGUuaCIgMSAzCiMg
MTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9O
U0ludGVyZmFjZVN0eWxlLmgiIDMKZW51bSB7CiAgICBOU05vSW50ZXJmYWNlU3R5bGUgPSAwLAog
ICAgTlNOZXh0U3RlcEludGVyZmFjZVN0eWxlID0gMSwKICAgIE5TV2luZG93czk1SW50ZXJmYWNl
U3R5bGUgPSAyLAogICAgTlNNYWNpbnRvc2hJbnRlcmZhY2VTdHlsZSA9IDMKfTsKdHlwZWRlZiBO
U1VJbnRlZ2VyIE5TSW50ZXJmYWNlU3R5bGU7CgpleHRlcm4gIkMiIE5TSW50ZXJmYWNlU3R5bGUg
TlNJbnRlcmZhY2VTdHlsZUZvcktleShOU1N0cmluZyAqa2V5LCBOU1Jlc3BvbmRlciAqcmVzcG9u
ZGVyKTsKCgpAaW50ZXJmYWNlIE5TUmVzcG9uZGVyIChOU0ludGVyZmFjZVN0eWxlKQotIChOU0lu
dGVyZmFjZVN0eWxlKWludGVyZmFjZVN0eWxlOwotICh2b2lkKXNldEludGVyZmFjZVN0eWxlOihO
U0ludGVyZmFjZVN0eWxlKWludGVyZmFjZVN0eWxlOwoKQGVuZAoKCgpleHRlcm4gIkMiIE5TU3Ry
aW5nICpOU0ludGVyZmFjZVN0eWxlRGVmYXVsdDsKIyAxMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1Byb2dyZXNz
SW5kaWNhdG9yLmgiIDEgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNQcm9ncmVzc0luZGljYXRvci5oIiAzCnN0cnVjdCBfX05TUHJv
Z3Jlc3NJbmRpY2F0b3JUaHJlYWRJbmZvOwp0eXBlZGVmIHN0cnVjdCBfX05TUHJvZ3Jlc3NJbmRp
Y2F0b3JUaHJlYWRJbmZvIF9OU1Byb2dyZXNzSW5kaWNhdG9yVGhyZWFkSW5mbzsKIyAyNSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUHJvZ3Jl
c3NJbmRpY2F0b3IuaCIgMwplbnVtIHsKICAgIE5TUHJvZ3Jlc3NJbmRpY2F0b3JQcmVmZXJyZWRU
aGlja25lc3MgPSAxNCwKICAgIE5TUHJvZ3Jlc3NJbmRpY2F0b3JQcmVmZXJyZWRTbWFsbFRoaWNr
bmVzcyA9IDEwLAogICAgTlNQcm9ncmVzc0luZGljYXRvclByZWZlcnJlZExhcmdlVGhpY2tuZXNz
ID0gMTgsCiAgICBOU1Byb2dyZXNzSW5kaWNhdG9yUHJlZmVycmVkQXF1YVRoaWNrbmVzcyA9IDEy
Cn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1Byb2dyZXNzSW5kaWNhdG9yVGhpY2tuZXNzOwoKCgpl
bnVtIHsKICAgIE5TUHJvZ3Jlc3NJbmRpY2F0b3JCYXJTdHlsZSA9IDAsCiAgICBOU1Byb2dyZXNz
SW5kaWNhdG9yU3Bpbm5pbmdTdHlsZSA9IDEKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TUHJvZ3Jl
c3NJbmRpY2F0b3JTdHlsZTsKCgoKCgpAaW50ZXJmYWNlIE5TUHJvZ3Jlc3NJbmRpY2F0b3IgOiBO
U1ZpZXcKewpAcHJpdmF0ZQoKICAgIEJPT0wgX2lzQmV6ZWxlZDsKICAgIEJPT0wgX2lzSW5kZXRl
cm1pbmF0ZTsKICAgIEJPT0wgX3RocmVhZGVkQW5pbWF0aW9uOwoKICAgIGRvdWJsZSBfbWluaW11
bTsKICAgIGRvdWJsZSBfbWF4aW11bTsKCgogICAgZG91YmxlIF92YWx1ZTsKCiAgICBpbnQgX2Fu
aW1hdGlvbkluZGV4OwogICAgTlNUaW1lSW50ZXJ2YWwgX2FuaW1hdGlvbkRlbGF5OwoKICAgIGlk
IF90aW1lcjsKCiAgICBDR0Zsb2F0IF9kcmF3aW5nV2lkdGg7CgogICAgaWQgX3JvdW5kQ29sb3I7
CiAgICBpZCBfcmVzZXJ2ZWQ7CgogICAgdm9sYXRpbGUgc3RydWN0IF9fcHJvZ3Jlc3NJbmRpY2F0
b3JGbGFncyB7CiAgICAgICAgdW5zaWduZWQgaW50IGlzU3Bpbm5pbmc6MTsKICAgICAgICB1bnNp
Z25lZCBpbnQgaXNWZWN0b3I6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgaXNMb2NrZWQ6MTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgY29udHJvbFRpbnQ6MzsKICAgICAgICB1bnNpZ25lZCBpbnQgY29u
dHJvbFNpemU6MjsKIHVuc2lnbmVkIGludCBzdHlsZToxOwogICAgICAgIHVuc2lnbmVkIGludCBf
ZGVsYXllZFN0YXJ0dXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX29yZGVyT3V0Rm9yUmVzaXpl
OjE7CiAgdW5zaWduZWQgaW50IGhpZGVXaGVuU3RvcHBlZDoxOwogICAgICAgIHVuc2lnbmVkIGlu
dCByZXZpdmU6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX3RlbXBvcmFyaWx5QmxvY2tIZWFydEJl
YXRpbmc6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX2lzSGlkZGVuOjE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IF9pc0hlYXJ0QmVhdEluc3RhbGxlZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfbGFz
dEZyYW1lOjg7CiAgICAgICAgdW5zaWduZWQgaW50IFJFU0VSVkVEOjg7CiAgICB9IF9wcm9ncmVz
c0luZGljYXRvckZsYWdzOwoKCiAgICBpZCBfTlNQcm9ncmVzc0luZGljYXRvclJlc2VydmVkMTsK
fQoKCgotIChCT09MKWlzSW5kZXRlcm1pbmF0ZTsKLSAodm9pZClzZXRJbmRldGVybWluYXRlOihC
T09MKWZsYWc7CgotIChCT09MKWlzQmV6ZWxlZDsKLSAodm9pZClzZXRCZXplbGVkOihCT09MKWZs
YWc7CgotIChOU0NvbnRyb2xUaW50KWNvbnRyb2xUaW50OwotICh2b2lkKXNldENvbnRyb2xUaW50
OihOU0NvbnRyb2xUaW50KXRpbnQ7CgotIChOU0NvbnRyb2xTaXplKWNvbnRyb2xTaXplOwotICh2
b2lkKXNldENvbnRyb2xTaXplOihOU0NvbnRyb2xTaXplKXNpemU7CgoKCi0gKGRvdWJsZSlkb3Vi
bGVWYWx1ZTsKLSAodm9pZClzZXREb3VibGVWYWx1ZTooZG91YmxlKWRvdWJsZVZhbHVlOwoKLSAo
dm9pZClpbmNyZW1lbnRCeTooZG91YmxlKWRlbHRhOwoKLSAoZG91YmxlKW1pblZhbHVlOwotIChk
b3VibGUpbWF4VmFsdWU7Ci0gKHZvaWQpc2V0TWluVmFsdWU6KGRvdWJsZSluZXdNaW5pbXVtOwot
ICh2b2lkKXNldE1heFZhbHVlOihkb3VibGUpbmV3TWF4aW11bTsKCgoKLSAoQk9PTCl1c2VzVGhy
ZWFkZWRBbmltYXRpb247Ci0gKHZvaWQpc2V0VXNlc1RocmVhZGVkQW5pbWF0aW9uOihCT09MKXRo
cmVhZGVkQW5pbWF0aW9uOwoKLSAodm9pZClzdGFydEFuaW1hdGlvbjooaWQpc2VuZGVyOwotICh2
b2lkKXN0b3BBbmltYXRpb246KGlkKXNlbmRlcjsKCgoKLSAodm9pZCkgc2V0U3R5bGU6IChOU1By
b2dyZXNzSW5kaWNhdG9yU3R5bGUpIHN0eWxlOwotIChOU1Byb2dyZXNzSW5kaWNhdG9yU3R5bGUp
IHN0eWxlOwoKCgotICh2b2lkKSBzaXplVG9GaXQ7CgotIChCT09MKSBpc0Rpc3BsYXllZFdoZW5T
dG9wcGVkOwotICh2b2lkKSBzZXREaXNwbGF5ZWRXaGVuU3RvcHBlZDogKEJPT0wpIGlzRGlzcGxh
eWVkOwoKCkBlbmQKCkBpbnRlcmZhY2UgTlNQcm9ncmVzc0luZGljYXRvciAoTlNQcm9ncmVzc0lu
ZGljYXRvckRlcHJlY2F0ZWQpCi0gKE5TVGltZUludGVydmFsKWFuaW1hdGlvbkRlbGF5IF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKLSAodm9pZClzZXRBbmltYXRpb25EZWxheTooTlNUaW1l
SW50ZXJ2YWwpZGVsYXkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwotICh2b2lkKWFuaW1h
dGU6KGlkKXNlbmRlciBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CkBlbmQKIyAxMjYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQu
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9I
ZWFkZXJzL05TVGFiVmlldy5oIiAxIDMKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGFiVmlldy5oIiAzCkBjbGFzcyBOU0FycmF5LCBO
U0ZvbnQsIE5TVGFiVmlld0l0ZW07CkBwcm90b2NvbCBOU1RhYlZpZXdEZWxlZ2F0ZTsKCiNkZWZp
bmUgTlNBcHBLaXRWZXJzaW9uTnVtYmVyV2l0aERpcmVjdGlvbmFsVGFicyA2MzEuMAoKZW51bSB7
CiAgICBOU1RvcFRhYnNCZXplbEJvcmRlciA9IDAsCiAgICBOU0xlZnRUYWJzQmV6ZWxCb3JkZXIg
PSAxLAogICAgTlNCb3R0b21UYWJzQmV6ZWxCb3JkZXIgPSAyLAogICAgTlNSaWdodFRhYnNCZXpl
bEJvcmRlciA9IDMsCiAgICBOU05vVGFic0JlemVsQm9yZGVyID0gNCwKICAgIE5TTm9UYWJzTGlu
ZUJvcmRlciA9IDUsCiAgICBOU05vVGFic05vQm9yZGVyID0gNgp9Owp0eXBlZGVmIE5TVUludGVn
ZXIgTlNUYWJWaWV3VHlwZTsKCkBpbnRlcmZhY2UgTlNUYWJWaWV3IDogTlNWaWV3CnsKICAgIEBw
cml2YXRlCgoKCiAgICBpZCBfdGFiVmlld0l0ZW1zOwogICAgTlNUYWJWaWV3SXRlbSAqX3NlbGVj
dGVkVGFiVmlld0l0ZW07CiAgICBOU0ZvbnQgKl9mb250OwogICAgTlNUYWJWaWV3VHlwZSBfdGFi
Vmlld1R5cGU7CiAgICBCT09MIF9hbGxvd1RydW5jYXRlZExhYmVsczsKICAgIGlkIF9kZWxlZ2F0
ZTsKCgoKICAgIEJPT0wgX3RhYlZpZXdVbnVzZWRCT09MMTsKCiAgICBCT09MIF9kcmF3c0JhY2tn
cm91bmQ7CiAgICBOU1RhYlZpZXdJdGVtICpfcHJlc3NlZFRhYlZpZXdJdGVtOwogICAgTlNJbnRl
Z2VyIF9lbmRUYWJXaWR0aDsKICAgIE5TSW50ZWdlciBfbWF4T3ZlcmxhcDsKICAgIENHRmxvYXQg
X3RhYkhlaWdodDsKICAgIE5TVGFiVmlld0l0ZW0gKl90YWJWaWV3SXRlbVdpdGhLZXlWaWV3Owog
ICAgTlNWaWV3ICpfb3JpZ2luYWxOZXh0S2V5VmlldzsKICAgIHN0cnVjdCBfX05TVGFiVmlld0Rl
bGVnYXRlUmVzcG9uZFRvIHsKICAgICAgICB1bnNpZ25lZCBpbnQgc2hvdWxkU2VsZWN0VGFiVmll
d0l0ZW06MTsKICAgICAgICB1bnNpZ25lZCBpbnQgd2lsbFNlbGVjdFRhYlZpZXdJdGVtOjE7CiAg
ICAgICAgdW5zaWduZWQgaW50IGRpZFNlbGVjdFRhYlZpZXdJdGVtOjE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGRpZENoYW5nZU51bWJlck9mVGFiVmlld0l0ZW1zOjE7CiAgICAgICAgdW5zaWduZWQg
aW50IHJlc2VydmVkOjI4OwogICAgfSBfZGVsZWdhdGVSZXNwb25kVG87CgogICAgc3RydWN0IF9f
TlNUYWJWaWV3RmxhZ3MgewogICAgICAgIHVuc2lnbmVkIGludCBuZWVkc0xheW91dDoxOwogICAg
ICAgIHVuc2lnbmVkIGludCBjb250cm9sVGludDozOwogICAgICAgIHVuc2lnbmVkIGludCBjb250
cm9sU2l6ZToyOwogICAgICAgIHVuc2lnbmVkIGludCB3aXJpbmdOaWJDb25uZWN0aW9uczoxOwog
ICAgICAgIHVuc2lnbmVkIGludCB3aXJpbmdJbnRlcmlvckxhc3RLZXlWaWV3OjE7CiAgICAgICAg
dW5zaWduZWQgaW50IG9yaWdpbmFsTmV4dEtleVZpZXdDaGFuZ2VkOjE7CiB1bnNpZ25lZCBpbnQg
bGl2ZVJlc2l6ZVNraXBwZWRSZXNldFRvb2xUaXBzOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHJl
c2VydmVkOjIyOwogICAgfSBfZmxhZ3M7CiAgICBOU1RhYlZpZXdJdGVtICpfZm9jdXNlZFRhYlZp
ZXdJdGVtOwogICAgdm9pZCAqX3RhYlZpZXdVbnVzZWQyOwp9CgoKCi0gKHZvaWQpc2VsZWN0VGFi
Vmlld0l0ZW06KE5TVGFiVmlld0l0ZW0gKil0YWJWaWV3SXRlbTsKLSAodm9pZClzZWxlY3RUYWJW
aWV3SXRlbUF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKLSAodm9pZClzZWxlY3RUYWJWaWV3SXRl
bVdpdGhJZGVudGlmaWVyOihpZClpZGVudGlmaWVyOwotICh2b2lkKXRha2VTZWxlY3RlZFRhYlZp
ZXdJdGVtRnJvbVNlbmRlcjooaWQpc2VuZGVyOwoKCgotICh2b2lkKXNlbGVjdEZpcnN0VGFiVmll
d0l0ZW06KGlkKXNlbmRlcjsKLSAodm9pZClzZWxlY3RMYXN0VGFiVmlld0l0ZW06KGlkKXNlbmRl
cjsKLSAodm9pZClzZWxlY3ROZXh0VGFiVmlld0l0ZW06KGlkKXNlbmRlcjsKLSAodm9pZClzZWxl
Y3RQcmV2aW91c1RhYlZpZXdJdGVtOihpZClzZW5kZXI7CgoKCi0gKE5TVGFiVmlld0l0ZW0gKilz
ZWxlY3RlZFRhYlZpZXdJdGVtOwotIChOU0ZvbnQgKilmb250OwotIChOU1RhYlZpZXdUeXBlKXRh
YlZpZXdUeXBlOwotIChOU0FycmF5ICopdGFiVmlld0l0ZW1zOwotIChCT09MKWFsbG93c1RydW5j
YXRlZExhYmVsczsKLSAoTlNTaXplKW1pbmltdW1TaXplOwotIChCT09MKWRyYXdzQmFja2dyb3Vu
ZDsKLSAoTlNDb250cm9sVGludCljb250cm9sVGludDsKLSAoTlNDb250cm9sU2l6ZSljb250cm9s
U2l6ZTsKCgoKLSAodm9pZClzZXRGb250OihOU0ZvbnQgKilmb250OwotICh2b2lkKXNldFRhYlZp
ZXdUeXBlOihOU1RhYlZpZXdUeXBlKXRhYlZpZXdUeXBlOwotICh2b2lkKXNldEFsbG93c1RydW5j
YXRlZExhYmVsczooQk9PTClhbGxvd1RydW5jYXRlZExhYmVsczsKLSAodm9pZClzZXREcmF3c0Jh
Y2tncm91bmQ6KEJPT0wpZmxhZzsKLSAodm9pZClzZXRDb250cm9sVGludDooTlNDb250cm9sVGlu
dCljb250cm9sVGludDsKLSAodm9pZClzZXRDb250cm9sU2l6ZTooTlNDb250cm9sU2l6ZSljb250
cm9sU2l6ZTsKCgoKLSAodm9pZClhZGRUYWJWaWV3SXRlbTooTlNUYWJWaWV3SXRlbSAqKXRhYlZp
ZXdJdGVtOwotICh2b2lkKWluc2VydFRhYlZpZXdJdGVtOihOU1RhYlZpZXdJdGVtICopdGFiVmll
d0l0ZW0gYXRJbmRleDooTlNJbnRlZ2VyKWluZGV4OwotICh2b2lkKXJlbW92ZVRhYlZpZXdJdGVt
OihOU1RhYlZpZXdJdGVtICopdGFiVmlld0l0ZW07CgoKCi0gKHZvaWQpc2V0RGVsZWdhdGU6KGlk
IDxOU1RhYlZpZXdEZWxlZ2F0ZT4pYW5PYmplY3Q7Ci0gKGlkIDxOU1RhYlZpZXdEZWxlZ2F0ZT4p
ZGVsZWdhdGU7CgoKCi0gKE5TVGFiVmlld0l0ZW0gKil0YWJWaWV3SXRlbUF0UG9pbnQ6KE5TUG9p
bnQpcG9pbnQ7CgoKCi0gKE5TUmVjdCljb250ZW50UmVjdDsKCgoKLSAoTlNJbnRlZ2VyKW51bWJl
ck9mVGFiVmlld0l0ZW1zOwotIChOU0ludGVnZXIpaW5kZXhPZlRhYlZpZXdJdGVtOihOU1RhYlZp
ZXdJdGVtICopdGFiVmlld0l0ZW07Ci0gKE5TVGFiVmlld0l0ZW0gKil0YWJWaWV3SXRlbUF0SW5k
ZXg6KE5TSW50ZWdlcilpbmRleDsKLSAoTlNJbnRlZ2VyKWluZGV4T2ZUYWJWaWV3SXRlbVdpdGhJ
ZGVudGlmaWVyOihpZClpZGVudGlmaWVyOwoKQGVuZAoKCgoKCkBwcm90b2NvbCBOU1RhYlZpZXdE
ZWxlZ2F0ZSA8TlNPYmplY3Q+CkBvcHRpb25hbAotIChCT09MKXRhYlZpZXc6KE5TVGFiVmlldyAq
KXRhYlZpZXcgc2hvdWxkU2VsZWN0VGFiVmlld0l0ZW06KE5TVGFiVmlld0l0ZW0gKil0YWJWaWV3
SXRlbTsKLSAodm9pZCl0YWJWaWV3OihOU1RhYlZpZXcgKil0YWJWaWV3IHdpbGxTZWxlY3RUYWJW
aWV3SXRlbTooTlNUYWJWaWV3SXRlbSAqKXRhYlZpZXdJdGVtOwotICh2b2lkKXRhYlZpZXc6KE5T
VGFiVmlldyAqKXRhYlZpZXcgZGlkU2VsZWN0VGFiVmlld0l0ZW06KE5TVGFiVmlld0l0ZW0gKil0
YWJWaWV3SXRlbTsKLSAodm9pZCl0YWJWaWV3RGlkQ2hhbmdlTnVtYmVyT2ZUYWJWaWV3SXRlbXM6
KE5TVGFiVmlldyAqKVRhYlZpZXc7CkBlbmQKIyAxMjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGFiVmlld0l0ZW0u
aCIgMSAzCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU1RhYlZpZXdJdGVtLmgiIDMKQGNsYXNzIE5TQ29sb3IsIE5TVGFiVmlldywgTlNW
aWV3OwoKZW51bSB7CiAgICBOU1NlbGVjdGVkVGFiID0gMCwKICAgIE5TQmFja2dyb3VuZFRhYiA9
IDEsCiAgICBOU1ByZXNzZWRUYWIgPSAyCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1RhYlN0YXRl
OwoKQGludGVyZmFjZSBOU1RhYlZpZXdJdGVtIDogTlNPYmplY3QgPE5TQ29kaW5nPgp7CiAgICBA
cHJpdmF0ZQoKCgogICAgaWQgX2lkZW50aWZpZXI7CiAgICBOU1N0cmluZyAqX2xhYmVsOwogICAg
TlNWaWV3ICpfdmlldzsKICAgIE5TVmlldyAqX2luaXRpYWxGaXJzdFJlc3BvbmRlcjsKICAgIE5T
Q29sb3IgKl9jb2xvcjsKICAgIE5TVGFiVmlldyAqX3RhYlZpZXc7CgoKCiAgICBOU1RhYlN0YXRl
IF90YWJTdGF0ZTsKICAgIE5TVmlldyAqX2xhc3RLZXlWaWV3OwoKICAgIHN0cnVjdCBfX3R2aUZs
YWdzIHsKIHVuc2lnbmVkIGludCBoYXNDdXN0b21Db2xvcjoxOwogdW5zaWduZWQgaW50IGxhYmVs
U2l6ZUlzVmFsaWQ6MTsKIHVuc2lnbmVkIGludCBhdXRvR2VuZXJhdGVkSUZSOjE7CiB1bnNpZ25l
ZCBpbnQgaXNUYWJEaXNhYmxlZDoxOwogdW5zaWduZWQgaW50IFJFU0VSVkVEOjI4OwogICAgfSBf
dHZpRmxhZ3M7CgogICAgTlNTaXplIF9sYWJlbFNpemU7CiAgICBOU1JlY3QgX3RhYlJlY3Q7CiAg
ICBOU1Rvb2xUaXBUYWcgX3RhYlRvb2xUaXBUYWc7CiAgICBpZCBfYXV4aWxpYXJ5U3RvcmFnZTsK
fQoKCgotIChpZClpbml0V2l0aElkZW50aWZpZXI6KGlkKWlkZW50aWZpZXI7CgoKCi0gKGlkKWlk
ZW50aWZpZXI7Ci0gKGlkKXZpZXc7Ci0gKGlkKWluaXRpYWxGaXJzdFJlc3BvbmRlcjsKLSAoTlNT
dHJpbmcgKilsYWJlbDsKLSAoTlNDb2xvciAqKWNvbG9yOwotIChOU1RhYlN0YXRlKXRhYlN0YXRl
OwotIChOU1RhYlZpZXcgKil0YWJWaWV3OwoKCgotICh2b2lkKXNldElkZW50aWZpZXI6KGlkKWlk
ZW50aWZpZXI7Ci0gKHZvaWQpc2V0TGFiZWw6KE5TU3RyaW5nICopbGFiZWw7Ci0gKHZvaWQpc2V0
Q29sb3I6KE5TQ29sb3IgKiljb2xvcjsKLSAodm9pZClzZXRWaWV3OihOU1ZpZXcgKil2aWV3Owot
ICh2b2lkKXNldEluaXRpYWxGaXJzdFJlc3BvbmRlcjooTlNWaWV3ICopdmlldzsKCgoKLSAoTlNT
dHJpbmcgKil0b29sVGlwIDsKLSAodm9pZClzZXRUb29sVGlwOihOU1N0cmluZyAqKXRvb2xUaXAg
OwoKCgoKCi0gKHZvaWQpZHJhd0xhYmVsOihCT09MKXNob3VsZFRydW5jYXRlTGFiZWwgaW5SZWN0
OihOU1JlY3QpbGFiZWxSZWN0OwoKCgotIChOU1NpemUpc2l6ZU9mTGFiZWw6KEJPT0wpY29tcHV0
ZU1pbjsKCkBlbmQKIyAxMjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TTWVudVZpZXcuaCIgMSAzCiMgMTI5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0Lmgi
IDIgMwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvTlNQb3BVcEJ1dHRvbkNlbGwuaCIgMSAzCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1BvcFVwQnV0dG9uQ2VsbC5oIiAzCkBj
bGFzcyBOU01lbnU7CgplbnVtIHsKICAgIE5TUG9wVXBOb0Fycm93ID0gMCwKICAgIE5TUG9wVXBB
cnJvd0F0Q2VudGVyID0gMSwKICAgIE5TUG9wVXBBcnJvd0F0Qm90dG9tID0gMgp9Owp0eXBlZGVm
IE5TVUludGVnZXIgTlNQb3BVcEFycm93UG9zaXRpb247CgpAaW50ZXJmYWNlIE5TUG9wVXBCdXR0
b25DZWxsIDogTlNNZW51SXRlbUNlbGwgewoKICAgIEBwcml2YXRlCiAgICBOU01lbnUgKl9tZW51
OwogICAgaW50IF9zZWxlY3RlZEluZGV4OwogICAgc3RydWN0IF9fcGJjRmxhZ3MgewogICAgICAg
IHVuc2lnbmVkIGludCBwdWxsc0Rvd246MTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHJlZmVycmVk
RWRnZTozOwogICAgICAgIHVuc2lnbmVkIGludCBtZW51SXNBdHRhY2hlZDoxOwogICAgICAgIHVu
c2lnbmVkIGludCB1c2VzSXRlbUZyb21NZW51OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGFsdGVy
c1N0YXRlT2ZTZWxlY3RlZEl0ZW06MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVjb2Rpbmc6MTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgYXJyb3dQb3NpdGlvbjoyOwogICAgICAgIHVuc2lnbmVkIGlu
dCBpZ25vcmVNZW51TGF5b3V0OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGRyYXdpbmc6MTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgbWVudVNob3VsZEJlVW5pcXVlZEFnYWluc3RNYWluOjE7CiAgICAg
ICAgdW5zaWduZWQgaW50IFJFU0VSVkVEOjE5OwogICAgfSBfcGJjRmxhZ3M7CgogICAgaWQgX3Bv
cHVwUmVzZXJ2ZWQ7Cgp9CgotIChpZClpbml0VGV4dENlbGw6KE5TU3RyaW5nICopc3RyaW5nVmFs
dWUgcHVsbHNEb3duOihCT09MKXB1bGxEb3duOwoKCi0gKHZvaWQpc2V0TWVudTooTlNNZW51ICop
bWVudTsKLSAoTlNNZW51ICopbWVudTsKCgoKLSAodm9pZClzZXRQdWxsc0Rvd246KEJPT0wpZmxh
ZzsKLSAoQk9PTClwdWxsc0Rvd247CgotICh2b2lkKXNldEF1dG9lbmFibGVzSXRlbXM6KEJPT0wp
ZmxhZzsKLSAoQk9PTClhdXRvZW5hYmxlc0l0ZW1zOwoKLSAodm9pZClzZXRQcmVmZXJyZWRFZGdl
OihOU1JlY3RFZGdlKWVkZ2U7Ci0gKE5TUmVjdEVkZ2UpcHJlZmVycmVkRWRnZTsKCgotICh2b2lk
KXNldFVzZXNJdGVtRnJvbU1lbnU6KEJPT0wpZmxhZzsKLSAoQk9PTCl1c2VzSXRlbUZyb21NZW51
OwoKCi0gKHZvaWQpc2V0QWx0ZXJzU3RhdGVPZlNlbGVjdGVkSXRlbTooQk9PTClmbGFnOwotIChC
T09MKWFsdGVyc1N0YXRlT2ZTZWxlY3RlZEl0ZW07CgoKCi0gKHZvaWQpYWRkSXRlbVdpdGhUaXRs
ZTooTlNTdHJpbmcgKil0aXRsZTsKLSAodm9pZClhZGRJdGVtc1dpdGhUaXRsZXM6KE5TQXJyYXkg
KilpdGVtVGl0bGVzOwotICh2b2lkKWluc2VydEl0ZW1XaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0
bGUgYXRJbmRleDooTlNJbnRlZ2VyKWluZGV4OwoKLSAodm9pZClyZW1vdmVJdGVtV2l0aFRpdGxl
OihOU1N0cmluZyAqKXRpdGxlOwotICh2b2lkKXJlbW92ZUl0ZW1BdEluZGV4OihOU0ludGVnZXIp
aW5kZXg7Ci0gKHZvaWQpcmVtb3ZlQWxsSXRlbXM7CgoKCi0gKE5TQXJyYXkgKilpdGVtQXJyYXk7
Ci0gKE5TSW50ZWdlciludW1iZXJPZkl0ZW1zOwoKLSAoTlNJbnRlZ2VyKWluZGV4T2ZJdGVtOihO
U01lbnVJdGVtICopaXRlbTsKLSAoTlNJbnRlZ2VyKWluZGV4T2ZJdGVtV2l0aFRpdGxlOihOU1N0
cmluZyAqKXRpdGxlOwotIChOU0ludGVnZXIpaW5kZXhPZkl0ZW1XaXRoVGFnOihOU0ludGVnZXIp
dGFnOwotIChOU0ludGVnZXIpaW5kZXhPZkl0ZW1XaXRoUmVwcmVzZW50ZWRPYmplY3Q6KGlkKW9i
ajsKLSAoTlNJbnRlZ2VyKWluZGV4T2ZJdGVtV2l0aFRhcmdldDooaWQpdGFyZ2V0IGFuZEFjdGlv
bjooU0VMKWFjdGlvblNlbGVjdG9yOwoKLSAoTlNNZW51SXRlbSAqKWl0ZW1BdEluZGV4OihOU0lu
dGVnZXIpaW5kZXg7Ci0gKE5TTWVudUl0ZW0gKilpdGVtV2l0aFRpdGxlOihOU1N0cmluZyAqKXRp
dGxlOwotIChOU01lbnVJdGVtICopbGFzdEl0ZW07CgoKCi0gKHZvaWQpc2VsZWN0SXRlbTooTlNN
ZW51SXRlbSAqKWl0ZW07Ci0gKHZvaWQpc2VsZWN0SXRlbUF0SW5kZXg6KE5TSW50ZWdlcilpbmRl
eDsKLSAodm9pZClzZWxlY3RJdGVtV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlOwoKLSAoQk9P
TClzZWxlY3RJdGVtV2l0aFRhZzooTlNJbnRlZ2VyKXRhZzsKCi0gKHZvaWQpc2V0VGl0bGU6KE5T
U3RyaW5nICopYVN0cmluZzsKCi0gKE5TTWVudUl0ZW0gKilzZWxlY3RlZEl0ZW07Ci0gKE5TSW50
ZWdlcilpbmRleE9mU2VsZWN0ZWRJdGVtOwotICh2b2lkKXN5bmNocm9uaXplVGl0bGVBbmRTZWxl
Y3RlZEl0ZW07CgoKCi0gKE5TU3RyaW5nICopaXRlbVRpdGxlQXRJbmRleDooTlNJbnRlZ2VyKWlu
ZGV4OwotIChOU0FycmF5ICopaXRlbVRpdGxlczsKLSAoTlNTdHJpbmcgKil0aXRsZU9mU2VsZWN0
ZWRJdGVtOwoKLSAodm9pZClhdHRhY2hQb3BVcFdpdGhGcmFtZTooTlNSZWN0KWNlbGxGcmFtZSBp
blZpZXc6KE5TVmlldyAqKWNvbnRyb2xWaWV3OwotICh2b2lkKWRpc21pc3NQb3BVcDsKLSAodm9p
ZClwZXJmb3JtQ2xpY2tXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBpblZpZXc6KE5TVmlldyAqKWNv
bnRyb2xWaWV3OwoKCi0gKE5TUG9wVXBBcnJvd1Bvc2l0aW9uKWFycm93UG9zaXRpb247Ci0gKHZv
aWQpc2V0QXJyb3dQb3NpdGlvbjooTlNQb3BVcEFycm93UG9zaXRpb24pcG9zaXRpb247CgoKLSAo
aWQpb2JqZWN0VmFsdWU7Ci0gKHZvaWQpc2V0T2JqZWN0VmFsdWU6KGlkKW9iajsKCkBlbmQKCgoK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNQb3BVcEJ1dHRvbkNlbGxXaWxsUG9wVXBOb3RpZmljYXRp
b247CiMgMTMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9OU0FmZmluZVRyYW5zZm9ybS5oIiAxIDMKIyAxMCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQWZmaW5lVHJh
bnNmb3JtLmgiIDMKQGNsYXNzIE5TQmV6aWVyUGF0aDsKCkBpbnRlcmZhY2UgTlNBZmZpbmVUcmFu
c2Zvcm0gKE5TQXBwS2l0QWRkaXRvbnMpCgotIChOU0JlemllclBhdGggKil0cmFuc2Zvcm1CZXpp
ZXJQYXRoOihOU0JlemllclBhdGggKilhUGF0aDsKCgotICh2b2lkKXNldDsKLSAodm9pZCljb25j
YXQ7CkBlbmQKIyAxMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQmV6aWVyUGF0aC5oIiAxIDMKIyAxMiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQmV6aWVyUGF0
aC5oIiAzCkBjbGFzcyBOU0FmZmluZVRyYW5zZm9ybTsKCmVudW0gewogICAgTlNCdXR0TGluZUNh
cFN0eWxlID0gMCwKICAgIE5TUm91bmRMaW5lQ2FwU3R5bGUgPSAxLAogICAgTlNTcXVhcmVMaW5l
Q2FwU3R5bGUgPSAyCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU0xpbmVDYXBTdHlsZTsKCmVudW0g
ewogICAgTlNNaXRlckxpbmVKb2luU3R5bGUgPSAwLAogICAgTlNSb3VuZExpbmVKb2luU3R5bGUg
PSAxLAogICAgTlNCZXZlbExpbmVKb2luU3R5bGUgPSAyCn07CnR5cGVkZWYgTlNVSW50ZWdlciBO
U0xpbmVKb2luU3R5bGU7CgplbnVtIHsKICAgIE5TTm9uWmVyb1dpbmRpbmdSdWxlID0gMCwKICAg
IE5TRXZlbk9kZFdpbmRpbmdSdWxlID0gMQp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNXaW5kaW5n
UnVsZTsKCmVudW0gewogICAgTlNNb3ZlVG9CZXppZXJQYXRoRWxlbWVudCwKICAgIE5TTGluZVRv
QmV6aWVyUGF0aEVsZW1lbnQsCiAgICBOU0N1cnZlVG9CZXppZXJQYXRoRWxlbWVudCwKICAgIE5T
Q2xvc2VQYXRoQmV6aWVyUGF0aEVsZW1lbnQKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TQmV6aWVy
UGF0aEVsZW1lbnQ7CgpAaW50ZXJmYWNlIE5TQmV6aWVyUGF0aCA6IE5TT2JqZWN0IDxOU0NvcHlp
bmcsIE5TQ29kaW5nPgp7CiAgICBAcHJpdmF0ZQogICAgTlNJbnRlZ2VyIF9lbGVtZW50Q291bnQ7
CiAgICBOU0ludGVnZXIgX2VsZW1lbnRNYXg7CiAgICBzdHJ1Y3QgUEFUSFNFR01FTlQgKl9oZWFk
OwogICAgTlNJbnRlZ2VyIF9sYXN0U3VicGF0aEluZGV4OwogICAgdm9pZCAqX2V4dHJhU2VnbWVu
dHM7CiAgICBDR0Zsb2F0IF9saW5lV2lkdGg7CiAgICBOU1JlY3QgX2NvbnRyb2xQb2ludEJvdW5k
czsKICAgIENHRmxvYXQgX21pdGVyTGltaXQ7CiAgICBDR0Zsb2F0IF9mbGF0bmVzczsKICAgIENH
RmxvYXQgKl9kYXNoZWRMaW5lUGF0dGVybjsKICAgIE5TVUludGVnZXIgX2Rhc2hlZExpbmVDb3Vu
dDsKICAgIENHRmxvYXQgX2Rhc2hlZExpbmVQaGFzZTsKICAgIHZvaWQgKl9wYXRoOwogICAgTlNJ
bnRlZ2VyIF9leHRyYVNlZ21lbnRDb3VudDsKICAgIE5TSW50ZWdlciBfZXh0cmFTZWdtZW50TWF4
OwogICAgaWQgX3ByaXZhdGVbMl07CiAgICBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCBf
ZmxhZ3M6ODsKICAgICAgICB1bnNpZ25lZCBpbnQgX3BhdGhTdGF0ZToyOwoKICAgICAgICB1bnNp
Z25lZCBpbnQgX3VudXNlZDoyMjsKICAgIH0gX2JwRmxhZ3M7Cn0KCgoKKyAoTlNCZXppZXJQYXRo
ICopYmV6aWVyUGF0aDsKKyAoTlNCZXppZXJQYXRoICopYmV6aWVyUGF0aFdpdGhSZWN0OihOU1Jl
Y3QpcmVjdDsKKyAoTlNCZXppZXJQYXRoICopYmV6aWVyUGF0aFdpdGhPdmFsSW5SZWN0OihOU1Jl
Y3QpcmVjdDsKCisgKE5TQmV6aWVyUGF0aCAqKWJlemllclBhdGhXaXRoUm91bmRlZFJlY3Q6KE5T
UmVjdClyZWN0IHhSYWRpdXM6KENHRmxvYXQpeFJhZGl1cyB5UmFkaXVzOihDR0Zsb2F0KXlSYWRp
dXM7CgoKCgorICh2b2lkKWZpbGxSZWN0OihOU1JlY3QpcmVjdDsKKyAodm9pZClzdHJva2VSZWN0
OihOU1JlY3QpcmVjdDsKKyAodm9pZCljbGlwUmVjdDooTlNSZWN0KXJlY3Q7CisgKHZvaWQpc3Ry
b2tlTGluZUZyb21Qb2ludDooTlNQb2ludClwb2ludDEgdG9Qb2ludDooTlNQb2ludClwb2ludDI7
CisgKHZvaWQpZHJhd1BhY2tlZEdseXBoczooY29uc3QgY2hhciAqKXBhY2tlZEdseXBocyBhdFBv
aW50OihOU1BvaW50KXBvaW50OwoKCgorICh2b2lkKXNldERlZmF1bHRNaXRlckxpbWl0OihDR0Zs
b2F0KWxpbWl0OworIChDR0Zsb2F0KWRlZmF1bHRNaXRlckxpbWl0OworICh2b2lkKXNldERlZmF1
bHRGbGF0bmVzczooQ0dGbG9hdClmbGF0bmVzczsKKyAoQ0dGbG9hdClkZWZhdWx0RmxhdG5lc3M7
CgorICh2b2lkKXNldERlZmF1bHRXaW5kaW5nUnVsZTooTlNXaW5kaW5nUnVsZSl3aW5kaW5nUnVs
ZTsKKyAoTlNXaW5kaW5nUnVsZSlkZWZhdWx0V2luZGluZ1J1bGU7CisgKHZvaWQpc2V0RGVmYXVs
dExpbmVDYXBTdHlsZTooTlNMaW5lQ2FwU3R5bGUpbGluZUNhcFN0eWxlOworIChOU0xpbmVDYXBT
dHlsZSlkZWZhdWx0TGluZUNhcFN0eWxlOworICh2b2lkKXNldERlZmF1bHRMaW5lSm9pblN0eWxl
OihOU0xpbmVKb2luU3R5bGUpbGluZUpvaW5TdHlsZTsKKyAoTlNMaW5lSm9pblN0eWxlKWRlZmF1
bHRMaW5lSm9pblN0eWxlOworICh2b2lkKXNldERlZmF1bHRMaW5lV2lkdGg6KENHRmxvYXQpbGlu
ZVdpZHRoOworIChDR0Zsb2F0KWRlZmF1bHRMaW5lV2lkdGg7CgoKCi0gKHZvaWQpbW92ZVRvUG9p
bnQ6KE5TUG9pbnQpcG9pbnQ7Ci0gKHZvaWQpbGluZVRvUG9pbnQ6KE5TUG9pbnQpcG9pbnQ7Ci0g
KHZvaWQpY3VydmVUb1BvaW50OihOU1BvaW50KWVuZFBvaW50CiAgICAgICBjb250cm9sUG9pbnQx
OihOU1BvaW50KWNvbnRyb2xQb2ludDEKICAgICAgIGNvbnRyb2xQb2ludDI6KE5TUG9pbnQpY29u
dHJvbFBvaW50MjsKLSAodm9pZCljbG9zZVBhdGg7CgotICh2b2lkKXJlbW92ZUFsbFBvaW50czsK
CgoKLSAodm9pZClyZWxhdGl2ZU1vdmVUb1BvaW50OihOU1BvaW50KXBvaW50OwotICh2b2lkKXJl
bGF0aXZlTGluZVRvUG9pbnQ6KE5TUG9pbnQpcG9pbnQ7Ci0gKHZvaWQpcmVsYXRpdmVDdXJ2ZVRv
UG9pbnQ6KE5TUG9pbnQpZW5kUG9pbnQKICAgICAgICBjb250cm9sUG9pbnQxOihOU1BvaW50KWNv
bnRyb2xQb2ludDEKICAgICAgICBjb250cm9sUG9pbnQyOihOU1BvaW50KWNvbnRyb2xQb2ludDI7
CgoKCi0gKENHRmxvYXQpbGluZVdpZHRoOwotICh2b2lkKXNldExpbmVXaWR0aDooQ0dGbG9hdCls
aW5lV2lkdGg7Ci0gKE5TTGluZUNhcFN0eWxlKWxpbmVDYXBTdHlsZTsKLSAodm9pZClzZXRMaW5l
Q2FwU3R5bGU6KE5TTGluZUNhcFN0eWxlKWxpbmVDYXBTdHlsZTsKLSAoTlNMaW5lSm9pblN0eWxl
KWxpbmVKb2luU3R5bGU7Ci0gKHZvaWQpc2V0TGluZUpvaW5TdHlsZTooTlNMaW5lSm9pblN0eWxl
KWxpbmVKb2luU3R5bGU7Ci0gKE5TV2luZGluZ1J1bGUpd2luZGluZ1J1bGU7Ci0gKHZvaWQpc2V0
V2luZGluZ1J1bGU6KE5TV2luZGluZ1J1bGUpd2luZGluZ1J1bGU7Ci0gKENHRmxvYXQpbWl0ZXJM
aW1pdDsKLSAodm9pZClzZXRNaXRlckxpbWl0OihDR0Zsb2F0KW1pdGVyTGltaXQ7Ci0gKENHRmxv
YXQpZmxhdG5lc3M7Ci0gKHZvaWQpc2V0RmxhdG5lc3M6KENHRmxvYXQpZmxhdG5lc3M7Ci0gKHZv
aWQpZ2V0TGluZURhc2g6KENHRmxvYXQgKilwYXR0ZXJuIGNvdW50OihOU0ludGVnZXIgKiljb3Vu
dCBwaGFzZTooQ0dGbG9hdCAqKXBoYXNlOwotICh2b2lkKXNldExpbmVEYXNoOihjb25zdCBDR0Zs
b2F0ICopcGF0dGVybiBjb3VudDooTlNJbnRlZ2VyKWNvdW50IHBoYXNlOihDR0Zsb2F0KXBoYXNl
OwoKCgotICh2b2lkKXN0cm9rZTsKLSAodm9pZClmaWxsOwotICh2b2lkKWFkZENsaXA7Ci0gKHZv
aWQpc2V0Q2xpcDsKCgoKLSAoTlNCZXppZXJQYXRoICopYmV6aWVyUGF0aEJ5RmxhdHRlbmluZ1Bh
dGg7Ci0gKE5TQmV6aWVyUGF0aCAqKWJlemllclBhdGhCeVJldmVyc2luZ1BhdGg7CgoKCi0gKHZv
aWQpdHJhbnNmb3JtVXNpbmdBZmZpbmVUcmFuc2Zvcm06KE5TQWZmaW5lVHJhbnNmb3JtICopdHJh
bnNmb3JtOwoKCgotIChCT09MKWlzRW1wdHk7Ci0gKE5TUG9pbnQpY3VycmVudFBvaW50OwotIChO
U1JlY3QpY29udHJvbFBvaW50Qm91bmRzOwotIChOU1JlY3QpYm91bmRzOwoKCgotIChOU0ludGVn
ZXIpZWxlbWVudENvdW50OwoKCgoKCi0gKE5TQmV6aWVyUGF0aEVsZW1lbnQpZWxlbWVudEF0SW5k
ZXg6KE5TSW50ZWdlcilpbmRleAogICAgICAgYXNzb2NpYXRlZFBvaW50czooTlNQb2ludEFycmF5
KXBvaW50czsKCi0gKE5TQmV6aWVyUGF0aEVsZW1lbnQpZWxlbWVudEF0SW5kZXg6KE5TSW50ZWdl
cilpbmRleDsKLSAodm9pZClzZXRBc3NvY2lhdGVkUG9pbnRzOihOU1BvaW50QXJyYXkpcG9pbnRz
IGF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKCgoKLSAodm9pZClhcHBlbmRCZXppZXJQYXRoOihO
U0JlemllclBhdGggKilwYXRoOwotICh2b2lkKWFwcGVuZEJlemllclBhdGhXaXRoUmVjdDooTlNS
ZWN0KXJlY3Q7Ci0gKHZvaWQpYXBwZW5kQmV6aWVyUGF0aFdpdGhQb2ludHM6KE5TUG9pbnRBcnJh
eSlwb2ludHMgY291bnQ6KE5TSW50ZWdlciljb3VudDsKLSAodm9pZClhcHBlbmRCZXppZXJQYXRo
V2l0aE92YWxJblJlY3Q6KE5TUmVjdClyZWN0OwotICh2b2lkKWFwcGVuZEJlemllclBhdGhXaXRo
QXJjV2l0aENlbnRlcjooTlNQb2ludCljZW50ZXIgcmFkaXVzOihDR0Zsb2F0KXJhZGl1cwogICAg
ICAgICAgc3RhcnRBbmdsZTooQ0dGbG9hdClzdGFydEFuZ2xlCiAgICAgZW5kQW5nbGU6KENHRmxv
YXQpZW5kQW5nbGUKICAgIGNsb2Nrd2lzZTooQk9PTCljbG9ja3dpc2U7CgotICh2b2lkKWFwcGVu
ZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjooTlNQb2ludCljZW50ZXIgcmFkaXVzOihDR0Zs
b2F0KXJhZGl1cwogICAgICAgICAgc3RhcnRBbmdsZTooQ0dGbG9hdClzdGFydEFuZ2xlCiAgICAg
ZW5kQW5nbGU6KENHRmxvYXQpZW5kQW5nbGU7Ci0gKHZvaWQpYXBwZW5kQmV6aWVyUGF0aFdpdGhB
cmNGcm9tUG9pbnQ6KE5TUG9pbnQpcG9pbnQxCiAgICAgdG9Qb2ludDooTlNQb2ludClwb2ludDIK
ICAgICAgcmFkaXVzOihDR0Zsb2F0KXJhZGl1czsKLSAodm9pZClhcHBlbmRCZXppZXJQYXRoV2l0
aEdseXBoOihOU0dseXBoKWdseXBoIGluRm9udDooTlNGb250ICopZm9udDsKLSAodm9pZClhcHBl
bmRCZXppZXJQYXRoV2l0aEdseXBoczooTlNHbHlwaCAqKWdseXBocyBjb3VudDooTlNJbnRlZ2Vy
KWNvdW50CiAgICAgICBpbkZvbnQ6KE5TRm9udCAqKWZvbnQ7Ci0gKHZvaWQpYXBwZW5kQmV6aWVy
UGF0aFdpdGhQYWNrZWRHbHlwaHM6KGNvbnN0IGNoYXIgKilwYWNrZWRHbHlwaHM7CgoKLSAodm9p
ZClhcHBlbmRCZXppZXJQYXRoV2l0aFJvdW5kZWRSZWN0OihOU1JlY3QpcmVjdCB4UmFkaXVzOihD
R0Zsb2F0KXhSYWRpdXMgeVJhZGl1czooQ0dGbG9hdCl5UmFkaXVzOwoKCgotIChCT09MKWNvbnRh
aW5zUG9pbnQ6KE5TUG9pbnQpcG9pbnQ7CkBlbmQKCkBpbnRlcmZhY2UgTlNCZXppZXJQYXRoIChO
U0JlemllclBhdGhEZXByZWNhdGVkKQotIChCT09MKWNhY2hlc0JlemllclBhdGggX19hdHRyaWJ1
dGVfXygoZGVwcmVjYXRlZCkpOwotICh2b2lkKXNldENhY2hlc0JlemllclBhdGg6KEJPT0wpZmxh
ZyBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CkBlbmQKIyAxMzMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUElD
VEltYWdlUmVwLmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNQSUNUSW1hZ2VSZXAuaCIgMwpAaW50ZXJmYWNlIE5TUElDVElt
YWdlUmVwIDogTlNJbWFnZVJlcAp7CgogICAgTlNQb2ludCBfcGljdE9yaWdpbjsKICAgIE5TRGF0
YSogX3BpY3REYXRhOwoKCgoKICAgIGlkIF9pbWFnZVJlcDsKICAgIE5TVUludGVnZXIgX3BpY3RP
ZmZzZXQ7CiAgICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVkMTsKICAgIHVuc2lnbmVkIGludCBfcmVz
ZXJ2ZWQyOwoKfQoKKyAoaWQpaW1hZ2VSZXBXaXRoRGF0YTooTlNEYXRhKilwaWN0RGF0YTsKLSAo
aWQpaW5pdFdpdGhEYXRhOihOU0RhdGEqKXBpY3REYXRhOwoKLSAoTlNEYXRhKikgUElDVFJlcHJl
c2VudGF0aW9uOwotIChOU1JlY3QpIGJvdW5kaW5nQm94OwoKQGVuZAojIDEzNCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
TlNTdGF0dXNCYXIuaCIgMSAzCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9OU1N0YXR1c0Jhci5oIiAzCkBjbGFzcyBOU0NvbG9yOwpAY2xh
c3MgTlNGb250OwpAY2xhc3MgTlNTdGF0dXNJdGVtOwpAY2xhc3MgTlNNdXRhYmxlQXJyYXk7Cgoj
ZGVmaW5lIE5TVmFyaWFibGVTdGF0dXNJdGVtTGVuZ3RoICgtMSkKI2RlZmluZSBOU1NxdWFyZVN0
YXR1c0l0ZW1MZW5ndGggKC0yKQoKQGludGVyZmFjZSBOU1N0YXR1c0JhciA6IE5TT2JqZWN0CnsK
IEBwcml2YXRlCiAgICBpZCBfaXRlbXM7CiAgICB2b2lkICpfZlJlc2VydmVkMTsKICAgIHZvaWQg
Kl9mUmVzZXJ2ZWQyOwogICAgTlNJbnRlZ2VyIF9yZWdpc3RlcmVkRm9yTm90ZTsKfQoKKyAoTlNT
dGF0dXNCYXIqKXN5c3RlbVN0YXR1c0JhcjsKCi0gKE5TU3RhdHVzSXRlbSopc3RhdHVzSXRlbVdp
dGhMZW5ndGg6KENHRmxvYXQpbGVuZ3RoOwotICh2b2lkKXJlbW92ZVN0YXR1c0l0ZW06KE5TU3Rh
dHVzSXRlbSopaXRlbTsKCi0gKEJPT0wpaXNWZXJ0aWNhbDsKLSAoQ0dGbG9hdCl0aGlja25lc3M7
CgpAZW5kCiMgMTM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1N0YXR1c0l0ZW0uaCIgMSAzCiMgMTEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1N0YXR1c0l0ZW0u
aCIgMwpAY2xhc3MgTlNBdHRyaWJ1dGVkU3RyaW5nOwpAY2xhc3MgTlNJbWFnZTsKQGNsYXNzIE5T
TWVudTsKQGNsYXNzIE5TU3RhdHVzQmFyOwpAY2xhc3MgTlNTdHJpbmc7CkBjbGFzcyBOU1ZpZXc7
CkBjbGFzcyBOU1dpbmRvdzsKCgpAaW50ZXJmYWNlIE5TU3RhdHVzSXRlbSA6IE5TT2JqZWN0CnsK
IEBwcml2YXRlCiAgICBOU1N0YXR1c0JhciogX2ZTdGF0dXNCYXI7CiAgICBDR0Zsb2F0IF9mTGVu
Z3RoOwogICAgTlNXaW5kb3cqIF9mV2luZG93OwogICAgTlNWaWV3KiBfZlZpZXc7CiAgICBpbnQg
X2ZQcmlvcml0eTsKICAgIHN0cnVjdCB7CiB1bnNpZ25lZCBpbnQgY3VzdG9tVmlldzoxOwogdW5z
aWduZWQgaW50IGhpZ2hsaWdodE1vZGU6MTsKIHVuc2lnbmVkIGludCBoYXNBbHRlcm5hdGVJbWFn
ZToxOwogdW5zaWduZWQgaW50IGhpZGRlbjoxOwogdW5zaWduZWQgaW50IGJhY2tncm91bmRTdHls
ZTo0OwogdW5zaWduZWQgaW50IGluQWRqdXN0TGVuZ3RoOjE7CiB1bnNpZ25lZCBpbnQgcmVzZXJ2
ZWQ6MjM7CiAgICB9IF9mRmxhZ3M7CiAgICBpZCBfc3RhdHVzSXRlbU1lbnU7CiAgICBpZCBfZlJl
c2VydmVkMjsKICAgIGlkIF9mUmVzZXJ2ZWQzOwogICAgaWQgX2ZSZXNlcnZlZDQ7Cn0KCi0gKE5T
U3RhdHVzQmFyKiApc3RhdHVzQmFyOwoKLSAoQ0dGbG9hdClsZW5ndGg7Ci0gKHZvaWQpc2V0TGVu
Z3RoOihDR0Zsb2F0KWxlbmd0aDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNTdGF0dXNJdGVtIChOU1N0
YXR1c0l0ZW1Db21tb24pCgotIChTRUwpYWN0aW9uOwotICh2b2lkKXNldEFjdGlvbjooU0VMKWFj
dGlvbjsKCgotIChTRUwpZG91YmxlQWN0aW9uOwotICh2b2lkKXNldERvdWJsZUFjdGlvbjooU0VM
KWFjdGlvbjsKCgotIChpZCl0YXJnZXQ7Ci0gKHZvaWQpc2V0VGFyZ2V0OihpZCl0YXJnZXQ7Cgot
IChOU1N0cmluZyogKXRpdGxlOwotICh2b2lkKXNldFRpdGxlOihOU1N0cmluZyopdGl0bGU7Cgot
IChOU0F0dHJpYnV0ZWRTdHJpbmcqIClhdHRyaWJ1dGVkVGl0bGU7Ci0gKHZvaWQpc2V0QXR0cmli
dXRlZFRpdGxlOihOU0F0dHJpYnV0ZWRTdHJpbmcqKXRpdGxlOwoKLSAoTlNJbWFnZSogKWltYWdl
OwotICh2b2lkKXNldEltYWdlOihOU0ltYWdlKilpbWFnZTsKCgotIChOU0ltYWdlICopYWx0ZXJu
YXRlSW1hZ2U7Ci0gKHZvaWQpc2V0QWx0ZXJuYXRlSW1hZ2U6KE5TSW1hZ2UqKWltYWdlOwoKCi0g
KE5TTWVudSogKW1lbnU7Ci0gKHZvaWQpc2V0TWVudTooTlNNZW51KiltZW51OwoKLSAoQk9PTClp
c0VuYWJsZWQ7Ci0gKHZvaWQpc2V0RW5hYmxlZDooQk9PTCllbmFibGVkOwoKLSAoTlNTdHJpbmcq
ICl0b29sVGlwOwotICh2b2lkKXNldFRvb2xUaXA6KE5TU3RyaW5nKil0b29sVGlwOwoKLSAodm9p
ZClzZXRIaWdobGlnaHRNb2RlOihCT09MKWhpZ2hsaWdodE1vZGU7Ci0gKEJPT0wpaGlnaGxpZ2h0
TW9kZTsKCi0gKE5TSW50ZWdlcilzZW5kQWN0aW9uT246KE5TSW50ZWdlciltYXNrOwoKCi0gKHZv
aWQpcG9wVXBTdGF0dXNJdGVtTWVudTooTlNNZW51KiltZW51OwotICh2b2lkKWRyYXdTdGF0dXNC
YXJCYWNrZ3JvdW5kSW5SZWN0OihOU1JlY3QpcmVjdCB3aXRoSGlnaGxpZ2h0OihCT09MKWhpZ2hs
aWdodDsKCgpAZW5kCgpAaW50ZXJmYWNlIE5TU3RhdHVzSXRlbSAoTlNTdGF0dXNJdGVtVmlldykK
Ci0gKE5TVmlldyogKXZpZXc7Ci0gKHZvaWQpc2V0VmlldzooTlNWaWV3Kil2aWV3OwoKQGVuZAoj
IDEzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJz
L0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvTlNTb3VuZC5oIiAxIDMKIyAxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU291bmQuaCIgMwpAY2xhc3MgTlNEYXRh
LCBOU1VSTDsKQHByb3RvY29sIE5TU291bmREZWxlZ2F0ZTsKCmV4dGVybiAiQyIgTlNTdHJpbmcg
KiBjb25zdCBOU1NvdW5kUGJvYXJkVHlwZTsKCkBpbnRlcmZhY2UgTlNTb3VuZCA6IE5TT2JqZWN0
Cgo8TlNDb3B5aW5nLCBOU0NvZGluZywgTlNQYXN0ZWJvYXJkUmVhZGluZywgTlNQYXN0ZWJvYXJk
V3JpdGluZz4KCgoKewpAcHJpdmF0ZQogICAgaWQgX2RlbGVnYXRlOwogICAgaWQgX2luZm87CiAg
ICBpZCBfcmVzZXJ2ZWRbNl07CiAgICBOU1VJbnRlZ2VyIF9zRmxhZ3M7Cn0KCgoKKyAoaWQpc291
bmROYW1lZDooTlNTdHJpbmcgKiluYW1lOwoKCgotIChpZClpbml0V2l0aENvbnRlbnRzT2ZVUkw6
KE5TVVJMICopdXJsIGJ5UmVmZXJlbmNlOihCT09MKWJ5UmVmOwoKCi0gKGlkKWluaXRXaXRoQ29u
dGVudHNPZkZpbGU6KE5TU3RyaW5nICopcGF0aCBieVJlZmVyZW5jZTooQk9PTClieVJlZjsKCgoK
LSAoaWQpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhOwoKLSAoQk9PTClzZXROYW1lOihOU1N0
cmluZyAqKXN0cmluZzsKLSAoTlNTdHJpbmcgKiluYW1lOwoKCisgKEJPT0wpY2FuSW5pdFdpdGhQ
YXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkOwoKKyAoTlNBcnJheSopc291bmRV
bmZpbHRlcmVkVHlwZXM7CgotIChpZClpbml0V2l0aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAq
KXBhc3RlYm9hcmQ7Ci0gKHZvaWQpd3JpdGVUb1Bhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBh
c3RlYm9hcmQ7CgoKLSAoQk9PTClwbGF5OwotIChCT09MKXBhdXNlOwotIChCT09MKXJlc3VtZTsK
LSAoQk9PTClzdG9wOwotIChCT09MKWlzUGxheWluZzsKCi0gKGlkIDxOU1NvdW5kRGVsZWdhdGU+
KWRlbGVnYXRlOwotICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNTb3VuZERlbGVnYXRlPilhRGVs
ZWdhdGU7CgoKCgoKLSAoTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb247CgoKCi0gKHZvaWQpc2V0Vm9s
dW1lOihmbG9hdCl2b2x1bWU7Ci0gKGZsb2F0KXZvbHVtZTsKCgoKLSAoTlNUaW1lSW50ZXJ2YWwp
Y3VycmVudFRpbWU7CgoKCi0gKHZvaWQpc2V0Q3VycmVudFRpbWU6KE5TVGltZUludGVydmFsKXNl
Y29uZHM7CgoKCi0gKHZvaWQpc2V0TG9vcHM6KEJPT0wpdmFsOwoKCi0gKEJPT0wpbG9vcHM7CgoK
Ci0gKHZvaWQpc2V0UGxheWJhY2tEZXZpY2VJZGVudGlmaWVyOihOU1N0cmluZyAqKWRldmljZVVJ
RDsKCgoKLSAoTlNTdHJpbmcgKilwbGF5YmFja0RldmljZUlkZW50aWZpZXI7CgoKCi0gKHZvaWQp
c2V0Q2hhbm5lbE1hcHBpbmc6KE5TQXJyYXkgKiljaGFubmVsTWFwcGluZzsKCgoKLSAoTlNBcnJh
eSAqKWNoYW5uZWxNYXBwaW5nOwoKCgpAZW5kCgpAaW50ZXJmYWNlIE5TU291bmQgKE5TRGVwcmVj
YXRlZCkKCgoKKyAoTlNBcnJheSAqKXNvdW5kVW5maWx0ZXJlZEZpbGVUeXBlcyBfX2F0dHJpYnV0
ZV9fKChkZXByZWNhdGVkKSk7CisgKE5TQXJyYXkgKilzb3VuZFVuZmlsdGVyZWRQYXN0ZWJvYXJk
VHlwZXMgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKQGVuZAoKQHByb3RvY29sIE5TU291
bmREZWxlZ2F0ZSA8TlNPYmplY3Q+CkBvcHRpb25hbAoKLSAodm9pZClzb3VuZDooTlNTb3VuZCAq
KXNvdW5kIGRpZEZpbmlzaFBsYXlpbmc6KEJPT0wpYUJvb2w7CgpAZW5kCgpAaW50ZXJmYWNlIE5T
QnVuZGxlIChOU0J1bmRsZVNvdW5kRXh0ZW5zaW9ucykKCgoKLSAoTlNTdHJpbmcgKilwYXRoRm9y
U291bmRSZXNvdXJjZTooTlNTdHJpbmcgKiluYW1lOwoKQGVuZAojIDEzNyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNN
b3ZpZS5oIiAxIDMKIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL05TTW92aWUuaCIgMwpAY2xhc3MgTlNBcnJheSwgTlNQYXN0ZWJvYXJkLCBO
U1VSTDsKCgpAY2xhc3MgUVRNb3ZpZTsKCgoKCgpAaW50ZXJmYWNlIE5TTW92aWUgOiBOU09iamVj
dCA8TlNDb2Rpbmc+IHsKCgogIEBwcml2YXRlCiAgICB2b2lkKiBfbW92aWU7CiAgICBOU1VSTCog
X3VybDsKICAgIHN0cnVjdCB7CiBpbnQgZGlzcG9zZToxOwogaW50IHJlc2VydmVkOjMxOwogICAg
fSBfbW92aWVGbGFnczsKICAgIGxvbmcgX3Jlc2VydmVkMTsKICAgIGxvbmcgX3Jlc2VydmVkMjsK
fQojIDUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvTlNNb3ZpZS5oIiAzCi0gKGlkKSBpbml0V2l0aE1vdmllOihRVE1vdmllKiltb3ZpZTsKLSAo
UVRNb3ZpZSAqKVFUTW92aWU7CgoKCkBlbmQKIyAxMzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TTW92aWVWaWV3Lmgi
IDEgMwojIDEzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9I
ZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNQREZJbWFnZVJlcC5oIiAxIDMKIyAxMCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUERGSW1hZ2VSZXAu
aCIgMwpAaW50ZXJmYWNlIE5TUERGSW1hZ2VSZXAgOiBOU0ltYWdlUmVwCnsKICBAcHJpdmF0ZQog
ICAgTlNEYXRhKiBfcGRmRGF0YTsKICAgIGludCBfcmVzZXJ2ZWQxOwogICAgaW50IF9yZXNlcnZl
ZDI7CgogICAgaWQgX3ByaXZhdGU7Cn0KCisgKGlkKWltYWdlUmVwV2l0aERhdGE6KE5TRGF0YSop
cGRmRGF0YTsKLSAoaWQpaW5pdFdpdGhEYXRhOihOU0RhdGEqKXBkZkRhdGE7CgotIChOU0RhdGEq
KVBERlJlcHJlc2VudGF0aW9uOwotIChOU1JlY3QpYm91bmRzOwoKLSAodm9pZCkgc2V0Q3VycmVu
dFBhZ2U6KE5TSW50ZWdlcilwYWdlOwotIChOU0ludGVnZXIpIGN1cnJlbnRQYWdlOwotIChOU0lu
dGVnZXIpIHBhZ2VDb3VudDsKCkBlbmQKIyAxNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUXVpY2tEcmF3Vmlldy5o
IiAxIDMKIyAxNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yay9IZWFkZXJzL05TRHJhd2VyLmgiIDEgMwojIDE2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNEcmF3ZXIuaCIgMwpAY2xh
c3MgTlNBcnJheTsKQGNsYXNzIE5TTG9jazsKQGNsYXNzIE5TVmlldzsKQGNsYXNzIE5TV2luZG93
OwpAY2xhc3MgTlNOb3RpZmljYXRpb247CkBwcm90b2NvbCBOU0RyYXdlckRlbGVnYXRlOwoKZW51
bSB7CiAgICBOU0RyYXdlckNsb3NlZFN0YXRlID0gMCwKICAgIE5TRHJhd2VyT3BlbmluZ1N0YXRl
ID0gMSwKICAgIE5TRHJhd2VyT3BlblN0YXRlID0gMiwKICAgIE5TRHJhd2VyQ2xvc2luZ1N0YXRl
ID0gMwp9Owp0eXBlZGVmIE5TVUludGVnZXIgTlNEcmF3ZXJTdGF0ZTsKCkBpbnRlcmZhY2UgTlNE
cmF3ZXIgOiBOU1Jlc3BvbmRlcgp7CgogICAgTlNEcmF3ZXJTdGF0ZSBfZHJhd2VyU3RhdGU7CiAg
ICBOU0RyYXdlclN0YXRlIF9kcmF3ZXJOZXh0U3RhdGU7CiAgICBOU1JlY3RFZGdlIF9kcmF3ZXJF
ZGdlOwogICAgTlNSZWN0RWRnZSBfZHJhd2VyTmV4dEVkZ2U7CiAgICBOU1JlY3RFZGdlIF9kcmF3
ZXJQcmVmZXJyZWRFZGdlOwogICAgZmxvYXQgX2RyYXdlclBlcmNlbnQ7CiAgICBmbG9hdCBfZHJh
d2VyUGVyY2VudFNhdmVkOwogICAgQ0dGbG9hdCBfZHJhd2VyTGVhZGluZ09mZnNldDsKICAgIENH
RmxvYXQgX2RyYXdlclRyYWlsaW5nT2Zmc2V0OwogICAgTlNMb2NrICpfZHJhd2VyTG9jazsKICAg
IE5TV2luZG93ICpfZHJhd2VyV2luZG93OwogICAgTlNXaW5kb3cgKl9kcmF3ZXJQYXJlbnRXaW5k
b3c7CiAgICBOU1dpbmRvdyAqX2RyYXdlck5leHRQYXJlbnRXaW5kb3c7CiAgICBOU1N0cmluZyAq
X2RyYXdlclNhdmVOYW1lOwogICAgQ0ZBYnNvbHV0ZVRpbWUgX2RyYXdlclN0YXJ0VGltZTsKICAg
IENGVGltZUludGVydmFsIF9kcmF3ZXJUb3RhbFRpbWU7CiAgICBDRlJ1bkxvb3BSZWYgX2RyYXdl
ckxvb3A7CiAgICBDRlJ1bkxvb3BUaW1lclJlZiBfZHJhd2VyVGltZXI7CiAgICBpZCBfZHJhd2Vy
RGVsZWdhdGU7CiAgICB1bnNpZ25lZCBpbnQgX2RyYXdlckZsYWdzOwogICAgQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJSZWYgX2RyYXdlck9ic2VydmVyOwp9CgotIChpZClpbml0V2l0aENvbnRlbnRTaXplOihO
U1NpemUpY29udGVudFNpemUgcHJlZmVycmVkRWRnZTooTlNSZWN0RWRnZSllZGdlOwoKLSAodm9p
ZClzZXRQYXJlbnRXaW5kb3c6KE5TV2luZG93ICopcGFyZW50OwotIChOU1dpbmRvdyAqKXBhcmVu
dFdpbmRvdzsKLSAodm9pZClzZXRDb250ZW50VmlldzooTlNWaWV3ICopYVZpZXc7Ci0gKE5TVmll
dyAqKWNvbnRlbnRWaWV3OwotICh2b2lkKXNldFByZWZlcnJlZEVkZ2U6KE5TUmVjdEVkZ2UpZWRn
ZTsKLSAoTlNSZWN0RWRnZSlwcmVmZXJyZWRFZGdlOwotICh2b2lkKXNldERlbGVnYXRlOihpZCA8
TlNEcmF3ZXJEZWxlZ2F0ZT4pYW5PYmplY3Q7Ci0gKGlkIDxOU0RyYXdlckRlbGVnYXRlPilkZWxl
Z2F0ZTsKCi0gKHZvaWQpb3BlbjsKLSAodm9pZClvcGVuT25FZGdlOihOU1JlY3RFZGdlKWVkZ2U7
Ci0gKHZvaWQpY2xvc2U7CgotICh2b2lkKW9wZW46KGlkKXNlbmRlcjsKLSAodm9pZCljbG9zZToo
aWQpc2VuZGVyOwotICh2b2lkKXRvZ2dsZTooaWQpc2VuZGVyOwoKLSAoTlNJbnRlZ2VyKXN0YXRl
OwotIChOU1JlY3RFZGdlKWVkZ2U7CgotICh2b2lkKXNldENvbnRlbnRTaXplOihOU1NpemUpc2l6
ZTsKLSAoTlNTaXplKWNvbnRlbnRTaXplOwotICh2b2lkKXNldE1pbkNvbnRlbnRTaXplOihOU1Np
emUpc2l6ZTsKLSAoTlNTaXplKW1pbkNvbnRlbnRTaXplOwotICh2b2lkKXNldE1heENvbnRlbnRT
aXplOihOU1NpemUpc2l6ZTsKLSAoTlNTaXplKW1heENvbnRlbnRTaXplOwoKLSAodm9pZClzZXRM
ZWFkaW5nT2Zmc2V0OihDR0Zsb2F0KW9mZnNldDsKLSAoQ0dGbG9hdClsZWFkaW5nT2Zmc2V0Owot
ICh2b2lkKXNldFRyYWlsaW5nT2Zmc2V0OihDR0Zsb2F0KW9mZnNldDsKLSAoQ0dGbG9hdCl0cmFp
bGluZ09mZnNldDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNXaW5kb3coRHJhd2VycykKCi0gKE5TQXJy
YXkgKilkcmF3ZXJzOwoKQGVuZAoKQHByb3RvY29sIE5TRHJhd2VyRGVsZWdhdGUgPE5TT2JqZWN0
PgpAb3B0aW9uYWwKLSAoQk9PTClkcmF3ZXJTaG91bGRPcGVuOihOU0RyYXdlciAqKXNlbmRlcjsK
LSAoQk9PTClkcmF3ZXJTaG91bGRDbG9zZTooTlNEcmF3ZXIgKilzZW5kZXI7Ci0gKE5TU2l6ZSlk
cmF3ZXJXaWxsUmVzaXplQ29udGVudHM6KE5TRHJhd2VyICopc2VuZGVyIHRvU2l6ZTooTlNTaXpl
KWNvbnRlbnRTaXplOwoKCi0gKHZvaWQpZHJhd2VyV2lsbE9wZW46KE5TTm90aWZpY2F0aW9uICop
bm90aWZpY2F0aW9uOwotICh2b2lkKWRyYXdlckRpZE9wZW46KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uOwotICh2b2lkKWRyYXdlcldpbGxDbG9zZTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb247Ci0gKHZvaWQpZHJhd2VyRGlkQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uOwoKQGVuZAoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRHJhd2VyV2lsbE9wZW5Ob3Rp
ZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRHJhd2VyRGlkT3Blbk5vdGlmaWNhdGlv
bjsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNEcmF3ZXJXaWxsQ2xvc2VOb3RpZmljYXRpb247CmV4
dGVybiAiQyIgTlNTdHJpbmcgKk5TRHJhd2VyRGlkQ2xvc2VOb3RpZmljYXRpb247CiMgMTQyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0
LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU09wZW5HTC5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNPcGVuR0wuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbC5oIiAxIDMKCiNkZWZpbmUg
X19nbF9oXyAKCgpleHRlcm4gIkMiIHsKIyA0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
T3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgR0xl
bnVtOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0xib29sZWFuOwp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBHTGJpdGZpZWxkOwp0eXBlZGVmIHNpZ25lZCBjaGFyIEdMYnl0ZTsKdHlwZWRlZiBzaG9ydCBH
THNob3J0Owp0eXBlZGVmIGludCBHTGludDsKdHlwZWRlZiBpbnQgR0xzaXplaTsKdHlwZWRlZiB1
bnNpZ25lZCBjaGFyIEdMdWJ5dGU7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0x1c2hvcnQ7CnR5
cGVkZWYgdW5zaWduZWQgaW50IEdMdWludDsKdHlwZWRlZiBmbG9hdCBHTGZsb2F0Owp0eXBlZGVm
IGZsb2F0IEdMY2xhbXBmOwp0eXBlZGVmIGRvdWJsZSBHTGRvdWJsZTsKdHlwZWRlZiBkb3VibGUg
R0xjbGFtcGQ7CnR5cGVkZWYgdm9pZCBHTHZvaWQ7Cgp0eXBlZGVmIGxvbmcgR0xpbnRwdHI7CnR5
cGVkZWYgbG9uZyBHTHNpemVpcHRyOwoKCiNkZWZpbmUgR0xfVFlQRURFRlNfMl8wIAogICAgdHlw
ZWRlZiBjaGFyIEdMY2hhcjsKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVu
R0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMSAzCgoKCgoKI2RlZmluZSBfX2dsZXh0X2hf
IAoKCmV4dGVybiAiQyIgewojIDQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wu
ZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwojZGVmaW5lIEdMX0FSQl9pbWFnaW5nIDEKI2Rl
ZmluZSBHTF9BUkJfdHJhbnNwb3NlX21hdHJpeCAxCiNkZWZpbmUgR0xfQVJCX211bHRpdGV4dHVy
ZSAxCiNkZWZpbmUgR0xfQVJCX3RleHR1cmVfZW52X2FkZCAxCiNkZWZpbmUgR0xfQVJCX3RleHR1
cmVfZW52X2NvbWJpbmUgMQojZGVmaW5lIEdMX0FSQl90ZXh0dXJlX2Vudl9kb3QzIDEKI2RlZmlu
ZSBHTF9BUkJfdGV4dHVyZV9lbnZfY3Jvc3NiYXIgMQojZGVmaW5lIEdMX0FSQl90ZXh0dXJlX2N1
YmVfbWFwIDEKI2RlZmluZSBHTF9BUkJfdGV4dHVyZV9jb21wcmVzc2lvbiAxCiNkZWZpbmUgR0xf
QVJCX211bHRpc2FtcGxlIDEKI2RlZmluZSBHTF9BUkJfdGV4dHVyZV9ib3JkZXJfY2xhbXAgMQoj
ZGVmaW5lIEdMX0FSQl9wb2ludF9wYXJhbWV0ZXJzIDEKI2RlZmluZSBHTF9BUkJfdmVydGV4X3By
b2dyYW0gMQojZGVmaW5lIEdMX0FSQl9mcmFnbWVudF9wcm9ncmFtIDEKI2RlZmluZSBHTF9BUkJf
ZnJhZ21lbnRfcHJvZ3JhbV9zaGFkb3cgMQojZGVmaW5lIEdMX0FSQl90ZXh0dXJlX21pcnJvcmVk
X3JlcGVhdCAxCiNkZWZpbmUgR0xfQVJCX2RlcHRoX3RleHR1cmUgMQojZGVmaW5lIEdMX0FSQl9z
aGFkb3cgMQojZGVmaW5lIEdMX0FSQl9zaGFkb3dfYW1iaWVudCAxCiNkZWZpbmUgR0xfQVJCX3Zl
cnRleF9ibGVuZCAxCiNkZWZpbmUgR0xfQVJCX3dpbmRvd19wb3MgMQojZGVmaW5lIEdMX0FSQl9v
Y2NsdXNpb25fcXVlcnkgMQojZGVmaW5lIEdMX0FSQl9zaGFkZXJfb2JqZWN0cyAxCiNkZWZpbmUg
R0xfQVJCX3ZlcnRleF9zaGFkZXIgMQojZGVmaW5lIEdMX0FSQl9mcmFnbWVudF9zaGFkZXIgMQoj
ZGVmaW5lIEdMX0FSQl9zaGFkaW5nX2xhbmd1YWdlXzEwMCAxCiNkZWZpbmUgR0xfQVJCX3ZlcnRl
eF9idWZmZXJfb2JqZWN0IDEKI2RlZmluZSBHTF9BUkJfcG9pbnRfc3ByaXRlIDEKI2RlZmluZSBH
TF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIDEKI2RlZmluZSBHTF9BUkJfdGV4dHVyZV9y
ZWN0YW5nbGUgMQojZGVmaW5lIEdMX0FSQl9kcmF3X2J1ZmZlcnMgMQojZGVmaW5lIEdMX0FSQl9w
aXhlbF9idWZmZXJfb2JqZWN0IDEKI2RlZmluZSBHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIDEK
I2RlZmluZSBHTF9BUkJfdGV4dHVyZV9mbG9hdCAxCiNkZWZpbmUgR0xfQVJCX2hhbGZfZmxvYXRf
cGl4ZWwgMQojZGVmaW5lIEdMX0FSQl9jb2xvcl9idWZmZXJfZmxvYXQgMQojZGVmaW5lIEdMX0FS
Ql9oYWxmX2Zsb2F0X3ZlcnRleCAxCiNkZWZpbmUgR0xfQVJCX3RleHR1cmVfY29tcHJlc3Npb25f
cmd0YyAxCiNkZWZpbmUgR0xfQVJCX3RleHR1cmVfcmcgMQojZGVmaW5lIEdMX0FSQl91bmlmb3Jt
X2J1ZmZlcl9vYmplY3QgMQojZGVmaW5lIEdMX0FSQl9mcmFtZWJ1ZmZlcl9vYmplY3QgMQojZGVm
aW5lIEdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIDEKI2RlZmluZSBHTF9BUkJfZGVwdGhfYnVmZmVy
X2Zsb2F0IDEKI2RlZmluZSBHTF9FWFRfZHJhd19pbnN0YW5jZWQgMAojZGVmaW5lIEdMX0VYVF9j
bGlwX3ZvbHVtZV9oaW50IDEKI2RlZmluZSBHTF9FWFRfcmVzY2FsZV9ub3JtYWwgMQojZGVmaW5l
IEdMX0VYVF9ibGVuZF9jb2xvciAxCiNkZWZpbmUgR0xfRVhUX2JsZW5kX21pbm1heCAxCiNkZWZp
bmUgR0xfRVhUX2JsZW5kX3N1YnRyYWN0IDEKI2RlZmluZSBHTF9FWFRfY29tcGlsZWRfdmVydGV4
X2FycmF5IDEKI2RlZmluZSBHTF9FWFRfdGV4dHVyZV9hcnJheSAxCiNkZWZpbmUgR0xfRVhUX3Rl
eHR1cmVfbG9kX2JpYXMgMQojZGVmaW5lIEdMX0VYVF90ZXh0dXJlX2Vudl9hZGQgMQojZGVmaW5l
IEdMX0VYVF9hYmdyIDEKI2RlZmluZSBHTF9FWFRfYmdyYSAxCiNkZWZpbmUgR0xfRVhUX3RleHR1
cmVfZmlsdGVyX2FuaXNvdHJvcGljIDEKI2RlZmluZSBHTF9FWFRfc2Vjb25kYXJ5X2NvbG9yIDEK
I2RlZmluZSBHTF9FWFRfc2VwYXJhdGVfc3BlY3VsYXJfY29sb3IgMQojZGVmaW5lIEdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMgMQojZGVmaW5lIEdMX0VYVF90ZXh0dXJlX3JlY3Rhbmds
ZSAxCiNkZWZpbmUgR0xfRVhUX2ZvZ19jb29yZCAxCiNkZWZpbmUgR0xfRVhUX2RyYXdfcmFuZ2Vf
ZWxlbWVudHMgMQojZGVmaW5lIEdMX0VYVF9zdGVuY2lsX3dyYXAgMQojZGVmaW5lIEdMX0VYVF9i
bGVuZF9mdW5jX3NlcGFyYXRlIDEKI2RlZmluZSBHTF9FWFRfbXVsdGlfZHJhd19hcnJheXMgMQoj
ZGVmaW5lIEdMX0VYVF9zaGFkb3dfZnVuY3MgMQojZGVmaW5lIEdMX0VYVF9zdGVuY2lsX3R3b19z
aWRlIDEKI2RlZmluZSBHTF9FWFRfZGVwdGhfYm91bmRzX3Rlc3QgMQojZGVmaW5lIEdMX0VYVF9i
bGVuZF9lcXVhdGlvbl9zZXBhcmF0ZSAxCiNkZWZpbmUgR0xfRVhUX3RleHR1cmVfbWlycm9yX2Ns
YW1wIDEKI2RlZmluZSBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIDEKI2RlZmluZSBH
TF9FWFRfdGV4dHVyZV9zUkdCIDEKI2RlZmluZSBHTF9FWFRfZnJhbWVidWZmZXJfb2JqZWN0IDEK
I2RlZmluZSBHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCAxCiNkZWZpbmUgR0xfRVhUX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIDEKI2RlZmluZSBHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwgMQoj
ZGVmaW5lIEdMX0VYVF9ncHVfcHJvZ3JhbV9wYXJhbWV0ZXJzIDEKI2RlZmluZSBHTF9FWFRfZ2Vv
bWV0cnlfc2hhZGVyNCAxCiNkZWZpbmUgR0xfRVhUX3RyYW5zZm9ybV9mZWVkYmFjayAxCiNkZWZp
bmUgR0xfRVhUX2JpbmRhYmxlX3VuaWZvcm0gMQojZGVmaW5lIEdMX0VYVF90ZXh0dXJlX2ludGVn
ZXIgMQojZGVmaW5lIEdMX0VYVF9ncHVfc2hhZGVyNCAxCiNkZWZpbmUgR0xfRVhUX2RyYXdfYnVm
ZmVyczIgMQojZGVmaW5lIEdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdCIDEKI2RlZmluZSBHTF9FWFRf
cGFja2VkX2Zsb2F0IDEKI2RlZmluZSBHTF9FWFRfdGV4dHVyZV9zaGFyZWRfZXhwb25lbnQgMQoj
ZGVmaW5lIEdMX0VYVF9wcm92b2tpbmdfdmVydGV4IDEKI2RlZmluZSBHTF9FWFRfdmVydGV4X2Fy
cmF5X2JncmEgMQojZGVmaW5lIEdMX0FQUExFX2ZsdXNoX2J1ZmZlcl9yYW5nZSAxCiNkZWZpbmUg
R0xfQVBQTEVfc3BlY3VsYXJfdmVjdG9yIDEKI2RlZmluZSBHTF9BUFBMRV90cmFuc2Zvcm1faGlu
dCAxCiNkZWZpbmUgR0xfQVBQTEVfcGFja2VkX3BpeGVscyAxCiNkZWZpbmUgR0xfQVBQTEVfY2xp
ZW50X3N0b3JhZ2UgMQojZGVmaW5lIEdMX0FQUExFX3ljYmNyXzQyMiAxCiNkZWZpbmUgR0xfQVBQ
TEVfdGV4dHVyZV9yYW5nZSAxCiNkZWZpbmUgR0xfQVBQTEVfZmVuY2UgMQojZGVmaW5lIEdMX0FQ
UExFX3ZlcnRleF9hcnJheV9yYW5nZSAxCiNkZWZpbmUgR0xfQVBQTEVfdmVydGV4X2FycmF5X29i
amVjdCAxCiNkZWZpbmUgR0xfQVBQTEVfZWxlbWVudF9hcnJheSAxCiNkZWZpbmUgR0xfQVBQTEVf
dmVydGV4X3Byb2dyYW1fZXZhbHVhdG9ycyAxCiNkZWZpbmUgR0xfQVBQTEVfZmxvYXRfcGl4ZWxz
IDEKI2RlZmluZSBHTF9BUFBMRV9mbHVzaF9yZW5kZXIgMQojZGVmaW5lIEdMX0FQUExFX3BpeGVs
X2J1ZmZlciAxCiNkZWZpbmUgR0xfQVBQTEVfYXV4X2RlcHRoX3N0ZW5jaWwgMQojZGVmaW5lIEdM
X0FQUExFX3Jvd19ieXRlcyAxCiNkZWZpbmUgR0xfQVBQTEVfb2JqZWN0X3B1cmdlYWJsZSAxCiNk
ZWZpbmUgR0xfQVBQTEVfcmdiXzQyMiAxCiNkZWZpbmUgR0xfQVRJX3BvaW50X2N1bGxfbW9kZSAx
CiNkZWZpbmUgR0xfQVRJX3RleHR1cmVfbWlycm9yX29uY2UgMQojZGVmaW5lIEdMX0FUSV9wbl90
cmlhbmdsZXMgMQojZGVmaW5lIEdMX0FUSV9ibGVuZF9lcXVhdGlvbl9zZXBhcmF0ZSAxCiNkZWZp
bmUgR0xfQVRJX2JsZW5kX3dlaWdodGVkX21pbm1heCAxCiNkZWZpbmUgR0xfQVRJX3RleHR1cmVf
ZW52X2NvbWJpbmUzIDEKI2RlZmluZSBHTF9BVElfc2VwYXJhdGVfc3RlbmNpbCAxCiNkZWZpbmUg
R0xfQVRJX3RleHR1cmVfY29tcHJlc3Npb25fM2RjIDEKI2RlZmluZSBHTF9BVElfdGV4dHVyZV9m
bG9hdCAxCiNkZWZpbmUgR0xfQVRJWF9wbl90cmlhbmdsZXMgMQojZGVmaW5lIEdMX0lCTV9yYXN0
ZXJwb3NfY2xpcCAxCiNkZWZpbmUgR0xfTlZfcG9pbnRfc3ByaXRlIDEKI2RlZmluZSBHTF9OVl9i
bGVuZF9zcXVhcmUgMQojZGVmaW5lIEdMX05WX2ZvZ19kaXN0YW5jZSAxCiNkZWZpbmUgR0xfTlZf
bXVsdGlzYW1wbGVfZmlsdGVyX2hpbnQgMQojZGVmaW5lIEdMX05WX3RleGdlbl9yZWZsZWN0aW9u
IDEKI2RlZmluZSBHTF9OVl9kZXB0aF9jbGFtcCAxCiNkZWZpbmUgR0xfTlZfbGlnaHRfbWF4X2V4
cG9uZW50IDEKI2RlZmluZSBHTF9OVl9mcmFnbWVudF9wcm9ncmFtX29wdGlvbiAxCiNkZWZpbmUg
R0xfTlZfZnJhZ21lbnRfcHJvZ3JhbTIgMQojZGVmaW5lIEdMX05WX3ZlcnRleF9wcm9ncmFtMl9v
cHRpb24gMQojZGVmaW5lIEdMX05WX3ZlcnRleF9wcm9ncmFtMyAxCiNkZWZpbmUgR0xfTlZfY29u
ZGl0aW9uYWxfcmVuZGVyIDEKI2RlZmluZSBHTF9TR0lfY29sb3JfbWF0cml4IDEKI2RlZmluZSBH
TF9TR0lTX3RleHR1cmVfZWRnZV9jbGFtcCAxCiNkZWZpbmUgR0xfU0dJU19nZW5lcmF0ZV9taXBt
YXAgMQojZGVmaW5lIEdMX1NHSVNfdGV4dHVyZV9sb2QgMQojIDMwMCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKdHlwZWRlZiBj
aGFyIEdMY2hhckFSQjsKdHlwZWRlZiB2b2lkICpHTGhhbmRsZUFSQjsKCgoKdHlwZWRlZiBsb25n
IEdMaW50cHRyQVJCOwp0eXBlZGVmIGxvbmcgR0xzaXplaXB0ckFSQjsKCgoKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBHTGhhbGZBUkI7CgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0xoYWxmOwoK
CgojZGVmaW5lIEdMX0dMRVhUX1ZFUlNJT04gNwoKCiNkZWZpbmUgR0xfVEVYVFVSRTBfQVJCIDB4
ODRDMAojZGVmaW5lIEdMX1RFWFRVUkUxX0FSQiAweDg0QzEKI2RlZmluZSBHTF9URVhUVVJFMl9B
UkIgMHg4NEMyCiNkZWZpbmUgR0xfVEVYVFVSRTNfQVJCIDB4ODRDMwojZGVmaW5lIEdMX1RFWFRV
UkU0X0FSQiAweDg0QzQKI2RlZmluZSBHTF9URVhUVVJFNV9BUkIgMHg4NEM1CiNkZWZpbmUgR0xf
VEVYVFVSRTZfQVJCIDB4ODRDNgojZGVmaW5lIEdMX1RFWFRVUkU3X0FSQiAweDg0QzcKI2RlZmlu
ZSBHTF9URVhUVVJFOF9BUkIgMHg4NEM4CiNkZWZpbmUgR0xfVEVYVFVSRTlfQVJCIDB4ODRDOQoj
ZGVmaW5lIEdMX1RFWFRVUkUxMF9BUkIgMHg4NENBCiNkZWZpbmUgR0xfVEVYVFVSRTExX0FSQiAw
eDg0Q0IKI2RlZmluZSBHTF9URVhUVVJFMTJfQVJCIDB4ODRDQwojZGVmaW5lIEdMX1RFWFRVUkUx
M19BUkIgMHg4NENECiNkZWZpbmUgR0xfVEVYVFVSRTE0X0FSQiAweDg0Q0UKI2RlZmluZSBHTF9U
RVhUVVJFMTVfQVJCIDB4ODRDRgojZGVmaW5lIEdMX1RFWFRVUkUxNl9BUkIgMHg4NEQwCiNkZWZp
bmUgR0xfVEVYVFVSRTE3X0FSQiAweDg0RDEKI2RlZmluZSBHTF9URVhUVVJFMThfQVJCIDB4ODRE
MgojZGVmaW5lIEdMX1RFWFRVUkUxOV9BUkIgMHg4NEQzCiNkZWZpbmUgR0xfVEVYVFVSRTIwX0FS
QiAweDg0RDQKI2RlZmluZSBHTF9URVhUVVJFMjFfQVJCIDB4ODRENQojZGVmaW5lIEdMX1RFWFRV
UkUyMl9BUkIgMHg4NEQ2CiNkZWZpbmUgR0xfVEVYVFVSRTIzX0FSQiAweDg0RDcKI2RlZmluZSBH
TF9URVhUVVJFMjRfQVJCIDB4ODREOAojZGVmaW5lIEdMX1RFWFRVUkUyNV9BUkIgMHg4NEQ5CiNk
ZWZpbmUgR0xfVEVYVFVSRTI2X0FSQiAweDg0REEKI2RlZmluZSBHTF9URVhUVVJFMjdfQVJCIDB4
ODREQgojZGVmaW5lIEdMX1RFWFRVUkUyOF9BUkIgMHg4NERDCiNkZWZpbmUgR0xfVEVYVFVSRTI5
X0FSQiAweDg0REQKI2RlZmluZSBHTF9URVhUVVJFMzBfQVJCIDB4ODRERQojZGVmaW5lIEdMX1RF
WFRVUkUzMV9BUkIgMHg4NERGCiNkZWZpbmUgR0xfQUNUSVZFX1RFWFRVUkVfQVJCIDB4ODRFMAoj
ZGVmaW5lIEdMX0NMSUVOVF9BQ1RJVkVfVEVYVFVSRV9BUkIgMHg4NEUxCiNkZWZpbmUgR0xfTUFY
X1RFWFRVUkVfVU5JVFNfQVJCIDB4ODRFMgoKCgojZGVmaW5lIEdMX1RSQU5TUE9TRV9NT0RFTFZJ
RVdfTUFUUklYX0FSQiAweDg0RTMKI2RlZmluZSBHTF9UUkFOU1BPU0VfUFJPSkVDVElPTl9NQVRS
SVhfQVJCIDB4ODRFNAojZGVmaW5lIEdMX1RSQU5TUE9TRV9URVhUVVJFX01BVFJJWF9BUkIgMHg4
NEU1CiNkZWZpbmUgR0xfVFJBTlNQT1NFX0NPTE9SX01BVFJJWF9BUkIgMHg4NEU2CgoKCiNkZWZp
bmUgR0xfTVVMVElTQU1QTEVfQVJCIDB4ODA5RAojZGVmaW5lIEdMX1NBTVBMRV9BTFBIQV9UT19D
T1ZFUkFHRV9BUkIgMHg4MDlFCiNkZWZpbmUgR0xfU0FNUExFX0FMUEhBX1RPX09ORV9BUkIgMHg4
MDlGCiNkZWZpbmUgR0xfU0FNUExFX0NPVkVSQUdFX0FSQiAweDgwQTAKI2RlZmluZSBHTF9TQU1Q
TEVfQlVGRkVSU19BUkIgMHg4MEE4CiNkZWZpbmUgR0xfU0FNUExFU19BUkIgMHg4MEE5CiNkZWZp
bmUgR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFX0FSQiAweDgwQUEKI2RlZmluZSBHTF9TQU1QTEVf
Q09WRVJBR0VfSU5WRVJUX0FSQiAweDgwQUIKI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CSVRfQVJC
IDB4MjAwMDAwMDAKCgoKI2RlZmluZSBHTF9OT1JNQUxfTUFQX0FSQiAweDg1MTEKI2RlZmluZSBH
TF9SRUZMRUNUSU9OX01BUF9BUkIgMHg4NTEyCiNkZWZpbmUgR0xfVEVYVFVSRV9DVUJFX01BUF9B
UkIgMHg4NTEzCiNkZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQX0FSQiAweDg1MTQK
I2RlZmluZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfQVJCIDB4ODUxNQojZGVmaW5l
IEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF9BUkIgMHg4NTE2CiNkZWZpbmUgR0xfVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZX0FSQiAweDg1MTcKI2RlZmluZSBHTF9URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1lfQVJCIDB4ODUxOAojZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWl9BUkIgMHg4NTE5CiNkZWZpbmUgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9aX0FSQiAweDg1MUEKI2RlZmluZSBHTF9QUk9YWV9URVhUVVJFX0NVQkVfTUFQX0FSQiAweDg1
MUIKI2RlZmluZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFX0FSQiAweDg1MUMKCgoKI2Rl
ZmluZSBHTF9DT01QUkVTU0VEX0FMUEhBX0FSQiAweDg0RTkKI2RlZmluZSBHTF9DT01QUkVTU0VE
X0xVTUlOQU5DRV9BUkIgMHg4NEVBCiNkZWZpbmUgR0xfQ09NUFJFU1NFRF9MVU1JTkFOQ0VfQUxQ
SEFfQVJCIDB4ODRFQgojZGVmaW5lIEdMX0NPTVBSRVNTRURfSU5URU5TSVRZX0FSQiAweDg0RUMK
I2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQl9BUkIgMHg4NEVECiNkZWZpbmUgR0xfQ09NUFJFU1NF
RF9SR0JBX0FSQiAweDg0RUUKI2RlZmluZSBHTF9URVhUVVJFX0NPTVBSRVNTSU9OX0hJTlRfQVJC
IDB4ODRFRgojZGVmaW5lIEdMX1RFWFRVUkVfQ09NUFJFU1NFRF9JTUFHRV9TSVpFX0FSQiAweDg2
QTAKI2RlZmluZSBHTF9URVhUVVJFX0NPTVBSRVNTRURfQVJCIDB4ODZBMQojZGVmaW5lIEdMX05V
TV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU19BUkIgMHg4NkEyCiNkZWZpbmUgR0xfQ09NUFJF
U1NFRF9URVhUVVJFX0ZPUk1BVFNfQVJCIDB4ODZBMwoKCgojZGVmaW5lIEdMX01BWF9WRVJURVhf
VU5JVFNfQVJCIDB4ODZBNAojZGVmaW5lIEdMX0FDVElWRV9WRVJURVhfVU5JVFNfQVJCIDB4ODZB
NQojZGVmaW5lIEdMX1dFSUdIVF9TVU1fVU5JVFlfQVJCIDB4ODZBNgojZGVmaW5lIEdMX1ZFUlRF
WF9CTEVORF9BUkIgMHg4NkE3CiNkZWZpbmUgR0xfQ1VSUkVOVF9XRUlHSFRfQVJCIDB4ODZBOAoj
ZGVmaW5lIEdMX1dFSUdIVF9BUlJBWV9UWVBFX0FSQiAweDg2QTkKI2RlZmluZSBHTF9XRUlHSFRf
QVJSQVlfU1RSSURFX0FSQiAweDg2QUEKI2RlZmluZSBHTF9XRUlHSFRfQVJSQVlfU0laRV9BUkIg
MHg4NkFCCiNkZWZpbmUgR0xfV0VJR0hUX0FSUkFZX1BPSU5URVJfQVJCIDB4ODZBQwojZGVmaW5l
IEdMX1dFSUdIVF9BUlJBWV9BUkIgMHg4NkFECiNkZWZpbmUgR0xfTU9ERUxWSUVXMF9BUkIgMHgx
NzAwCiNkZWZpbmUgR0xfTU9ERUxWSUVXMV9BUkIgMHg4NTBBCiNkZWZpbmUgR0xfTU9ERUxWSUVX
Ml9BUkIgMHg4NzIyCiNkZWZpbmUgR0xfTU9ERUxWSUVXM19BUkIgMHg4NzIzCiNkZWZpbmUgR0xf
TU9ERUxWSUVXNF9BUkIgMHg4NzI0CiNkZWZpbmUgR0xfTU9ERUxWSUVXNV9BUkIgMHg4NzI1CiNk
ZWZpbmUgR0xfTU9ERUxWSUVXNl9BUkIgMHg4NzI2CiNkZWZpbmUgR0xfTU9ERUxWSUVXN19BUkIg
MHg4NzI3CiNkZWZpbmUgR0xfTU9ERUxWSUVXOF9BUkIgMHg4NzI4CiNkZWZpbmUgR0xfTU9ERUxW
SUVXOV9BUkIgMHg4NzI5CiNkZWZpbmUgR0xfTU9ERUxWSUVXMTBfQVJCIDB4ODcyQQojZGVmaW5l
IEdMX01PREVMVklFVzExX0FSQiAweDg3MkIKI2RlZmluZSBHTF9NT0RFTFZJRVcxMl9BUkIgMHg4
NzJDCiNkZWZpbmUgR0xfTU9ERUxWSUVXMTNfQVJCIDB4ODcyRAojZGVmaW5lIEdMX01PREVMVklF
VzE0X0FSQiAweDg3MkUKI2RlZmluZSBHTF9NT0RFTFZJRVcxNV9BUkIgMHg4NzJGCiNkZWZpbmUg
R0xfTU9ERUxWSUVXMTZfQVJCIDB4ODczMAojZGVmaW5lIEdMX01PREVMVklFVzE3X0FSQiAweDg3
MzEKI2RlZmluZSBHTF9NT0RFTFZJRVcxOF9BUkIgMHg4NzMyCiNkZWZpbmUgR0xfTU9ERUxWSUVX
MTlfQVJCIDB4ODczMwojZGVmaW5lIEdMX01PREVMVklFVzIwX0FSQiAweDg3MzQKI2RlZmluZSBH
TF9NT0RFTFZJRVcyMV9BUkIgMHg4NzM1CiNkZWZpbmUgR0xfTU9ERUxWSUVXMjJfQVJCIDB4ODcz
NgojZGVmaW5lIEdMX01PREVMVklFVzIzX0FSQiAweDg3MzcKI2RlZmluZSBHTF9NT0RFTFZJRVcy
NF9BUkIgMHg4NzM4CiNkZWZpbmUgR0xfTU9ERUxWSUVXMjVfQVJCIDB4ODczOQojZGVmaW5lIEdM
X01PREVMVklFVzI2X0FSQiAweDg3M0EKI2RlZmluZSBHTF9NT0RFTFZJRVcyN19BUkIgMHg4NzNC
CiNkZWZpbmUgR0xfTU9ERUxWSUVXMjhfQVJCIDB4ODczQwojZGVmaW5lIEdMX01PREVMVklFVzI5
X0FSQiAweDg3M0QKI2RlZmluZSBHTF9NT0RFTFZJRVczMF9BUkIgMHg4NzNFCiNkZWZpbmUgR0xf
TU9ERUxWSUVXMzFfQVJCIDB4ODczRgoKCgojZGVmaW5lIEdMX1NBTVBMRVNfUEFTU0VEX0FSQiAw
eDg5MTQKI2RlZmluZSBHTF9RVUVSWV9DT1VOVEVSX0JJVFNfQVJCIDB4ODg2NAojZGVmaW5lIEdM
X0NVUlJFTlRfUVVFUllfQVJCIDB4ODg2NQojZGVmaW5lIEdMX1FVRVJZX1JFU1VMVF9BUkIgMHg4
ODY2CiNkZWZpbmUgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9BUkIgMHg4ODY3CgoKCiNkZWZp
bmUgR0xfQ0xBTVBfVE9fQk9SREVSX0FSQiAweDgxMkQKCgoKI2RlZmluZSBHTF9ERVBUSF9DT01Q
T05FTlQxNl9BUkIgMHg4MUE1CiNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UMjRfQVJCIDB4ODFB
NgojZGVmaW5lIEdMX0RFUFRIX0NPTVBPTkVOVDMyX0FSQiAweDgxQTcKI2RlZmluZSBHTF9URVhU
VVJFX0RFUFRIX1NJWkVfQVJCIDB4ODg0QQojZGVmaW5lIEdMX0RFUFRIX1RFWFRVUkVfTU9ERV9B
UkIgMHg4ODRCCgoKCiNkZWZpbmUgR0xfVEVYVFVSRV9DT01QQVJFX01PREVfQVJCIDB4ODg0Qwoj
ZGVmaW5lIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DX0FSQiAweDg4NEQKI2RlZmluZSBHTF9DT01Q
QVJFX1JfVE9fVEVYVFVSRV9BUkIgMHg4ODRFCgoKCiNkZWZpbmUgR0xfVEVYVFVSRV9DT01QQVJF
X0ZBSUxfVkFMVUVfQVJCIDB4ODBCRgoKCgojZGVmaW5lIEdMX0NPTUJJTkVfQVJCIDB4ODU3MAoj
ZGVmaW5lIEdMX0NPTUJJTkVfUkdCX0FSQiAweDg1NzEKI2RlZmluZSBHTF9DT01CSU5FX0FMUEhB
X0FSQiAweDg1NzIKI2RlZmluZSBHTF9SR0JfU0NBTEVfQVJCIDB4ODU3MwojZGVmaW5lIEdMX0FE
RF9TSUdORURfQVJCIDB4ODU3NAojZGVmaW5lIEdMX0lOVEVSUE9MQVRFX0FSQiAweDg1NzUKI2Rl
ZmluZSBHTF9DT05TVEFOVF9BUkIgMHg4NTc2CiNkZWZpbmUgR0xfUFJJTUFSWV9DT0xPUl9BUkIg
MHg4NTc3CiNkZWZpbmUgR0xfUFJFVklPVVNfQVJCIDB4ODU3OAojZGVmaW5lIEdMX1NVQlRSQUNU
X0FSQiAweDg0RTcKI2RlZmluZSBHTF9TT1VSQ0UwX1JHQl9BUkIgMHg4NTgwCiNkZWZpbmUgR0xf
U09VUkNFMV9SR0JfQVJCIDB4ODU4MQojZGVmaW5lIEdMX1NPVVJDRTJfUkdCX0FSQiAweDg1ODIK
I2RlZmluZSBHTF9TT1VSQ0UzX1JHQl9BUkIgMHg4NTgzCiNkZWZpbmUgR0xfU09VUkNFNF9SR0Jf
QVJCIDB4ODU4NAojZGVmaW5lIEdMX1NPVVJDRTVfUkdCX0FSQiAweDg1ODUKI2RlZmluZSBHTF9T
T1VSQ0U2X1JHQl9BUkIgMHg4NTg2CiNkZWZpbmUgR0xfU09VUkNFN19SR0JfQVJCIDB4ODU4Nwoj
ZGVmaW5lIEdMX1NPVVJDRTBfQUxQSEFfQVJCIDB4ODU4OAojZGVmaW5lIEdMX1NPVVJDRTFfQUxQ
SEFfQVJCIDB4ODU4OQojZGVmaW5lIEdMX1NPVVJDRTJfQUxQSEFfQVJCIDB4ODU4QQojZGVmaW5l
IEdMX1NPVVJDRTNfQUxQSEFfQVJCIDB4ODU4QgojZGVmaW5lIEdMX1NPVVJDRTRfQUxQSEFfQVJC
IDB4ODU4QwojZGVmaW5lIEdMX1NPVVJDRTVfQUxQSEFfQVJCIDB4ODU4RAojZGVmaW5lIEdMX1NP
VVJDRTZfQUxQSEFfQVJCIDB4ODU4RQojZGVmaW5lIEdMX1NPVVJDRTdfQUxQSEFfQVJCIDB4ODU4
RgojZGVmaW5lIEdMX09QRVJBTkQwX1JHQl9BUkIgMHg4NTkwCiNkZWZpbmUgR0xfT1BFUkFORDFf
UkdCX0FSQiAweDg1OTEKI2RlZmluZSBHTF9PUEVSQU5EMl9SR0JfQVJCIDB4ODU5MgojZGVmaW5l
IEdMX09QRVJBTkQzX1JHQl9BUkIgMHg4NTkzCiNkZWZpbmUgR0xfT1BFUkFORDRfUkdCX0FSQiAw
eDg1OTQKI2RlZmluZSBHTF9PUEVSQU5ENV9SR0JfQVJCIDB4ODU5NQojZGVmaW5lIEdMX09QRVJB
TkQ2X1JHQl9BUkIgMHg4NTk2CiNkZWZpbmUgR0xfT1BFUkFORDdfUkdCX0FSQiAweDg1OTcKI2Rl
ZmluZSBHTF9PUEVSQU5EMF9BTFBIQV9BUkIgMHg4NTk4CiNkZWZpbmUgR0xfT1BFUkFORDFfQUxQ
SEFfQVJCIDB4ODU5OQojZGVmaW5lIEdMX09QRVJBTkQyX0FMUEhBX0FSQiAweDg1OUEKI2RlZmlu
ZSBHTF9PUEVSQU5EM19BTFBIQV9BUkIgMHg4NTlCCiNkZWZpbmUgR0xfT1BFUkFORDRfQUxQSEFf
QVJCIDB4ODU5QwojZGVmaW5lIEdMX09QRVJBTkQ1X0FMUEhBX0FSQiAweDg1OUQKI2RlZmluZSBH
TF9PUEVSQU5ENl9BTFBIQV9BUkIgMHg4NTlFCiNkZWZpbmUgR0xfT1BFUkFORDdfQUxQSEFfQVJC
IDB4ODU5RgoKCgojZGVmaW5lIEdMX01JUlJPUkVEX1JFUEVBVF9BUkIgMHg4MzcwCgoKCiNkZWZp
bmUgR0xfRE9UM19SR0JfQVJCIDB4ODZBRQojZGVmaW5lIEdMX0RPVDNfUkdCQV9BUkIgMHg4NkFG
CgoKCiNkZWZpbmUgR0xfUE9JTlRfU0laRV9NSU5fQVJCIDB4ODEyNgojZGVmaW5lIEdMX1BPSU5U
X1NJWkVfTUFYX0FSQiAweDgxMjcKI2RlZmluZSBHTF9QT0lOVF9GQURFX1RIUkVTSE9MRF9TSVpF
X0FSQiAweDgxMjgKI2RlZmluZSBHTF9QT0lOVF9ESVNUQU5DRV9BVFRFTlVBVElPTl9BUkIgMHg4
MTI5CgoKCiNkZWZpbmUgR0xfRlJBR01FTlRfUFJPR1JBTV9BUkIgMHg4ODA0CiNkZWZpbmUgR0xf
UFJPR1JBTV9BTFVfSU5TVFJVQ1RJT05TX0FSQiAweDg4MDUKI2RlZmluZSBHTF9QUk9HUkFNX1RF
WF9JTlNUUlVDVElPTlNfQVJCIDB4ODgwNgojZGVmaW5lIEdMX1BST0dSQU1fVEVYX0lORElSRUNU
SU9OU19BUkIgMHg4ODA3CiNkZWZpbmUgR0xfUFJPR1JBTV9OQVRJVkVfQUxVX0lOU1RSVUNUSU9O
U19BUkIgMHg4ODA4CiNkZWZpbmUgR0xfUFJPR1JBTV9OQVRJVkVfVEVYX0lOU1RSVUNUSU9OU19B
UkIgMHg4ODA5CiNkZWZpbmUgR0xfUFJPR1JBTV9OQVRJVkVfVEVYX0lORElSRUNUSU9OU19BUkIg
MHg4ODBBCiNkZWZpbmUgR0xfTUFYX1BST0dSQU1fQUxVX0lOU1RSVUNUSU9OU19BUkIgMHg4ODBC
CiNkZWZpbmUgR0xfTUFYX1BST0dSQU1fVEVYX0lOU1RSVUNUSU9OU19BUkIgMHg4ODBDCiNkZWZp
bmUgR0xfTUFYX1BST0dSQU1fVEVYX0lORElSRUNUSU9OU19BUkIgMHg4ODBECiNkZWZpbmUgR0xf
TUFYX1BST0dSQU1fTkFUSVZFX0FMVV9JTlNUUlVDVElPTlNfQVJCIDB4ODgwRQojZGVmaW5lIEdM
X01BWF9QUk9HUkFNX05BVElWRV9URVhfSU5TVFJVQ1RJT05TX0FSQiAweDg4MEYKI2RlZmluZSBH
TF9NQVhfUFJPR1JBTV9OQVRJVkVfVEVYX0lORElSRUNUSU9OU19BUkIgMHg4ODEwCiNkZWZpbmUg
R0xfTUFYX1RFWFRVUkVfQ09PUkRTX0FSQiAweDg4NzEKI2RlZmluZSBHTF9NQVhfVEVYVFVSRV9J
TUFHRV9VTklUU19BUkIgMHg4ODcyCgoKCiNkZWZpbmUgR0xfVkVSVEVYX1BST0dSQU1fQVJCIDB4
ODYyMAojZGVmaW5lIEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkVfQVJCIDB4ODY0MgojZGVm
aW5lIEdMX1ZFUlRFWF9QUk9HUkFNX1RXT19TSURFX0FSQiAweDg2NDMKI2RlZmluZSBHTF9QUk9H
UkFNX0ZPUk1BVF9BU0NJSV9BUkIgMHg4ODc1CiNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJB
WV9FTkFCTEVEX0FSQiAweDg2MjIKI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkVf
QVJCIDB4ODYyMwojZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFX0FSQiAweDg2
MjQKI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEVfQVJCIDB4ODYyNQojZGVmaW5l
IEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRF9BUkIgMHg4ODZBCiNkZWZpbmUgR0xf
Q1VSUkVOVF9WRVJURVhfQVRUUklCX0FSQiAweDg2MjYKI2RlZmluZSBHTF9WRVJURVhfQVRUUklC
X0FSUkFZX1BPSU5URVJfQVJCIDB4ODY0NQojZGVmaW5lIEdMX1BST0dSQU1fTEVOR1RIX0FSQiAw
eDg2MjcKI2RlZmluZSBHTF9QUk9HUkFNX0ZPUk1BVF9BUkIgMHg4ODc2CiNkZWZpbmUgR0xfUFJP
R1JBTV9OQU1FX0FSQiAweDg2NzcKI2RlZmluZSBHTF9QUk9HUkFNX0JJTkRJTkdfQVJCIDB4ODY3
NwojZGVmaW5lIEdMX1BST0dSQU1fSU5TVFJVQ1RJT05TX0FSQiAweDg4QTAKI2RlZmluZSBHTF9N
QVhfUFJPR1JBTV9JTlNUUlVDVElPTlNfQVJCIDB4ODhBMQojZGVmaW5lIEdMX1BST0dSQU1fTkFU
SVZFX0lOU1RSVUNUSU9OU19BUkIgMHg4OEEyCiNkZWZpbmUgR0xfTUFYX1BST0dSQU1fTkFUSVZF
X0lOU1RSVUNUSU9OU19BUkIgMHg4OEEzCiNkZWZpbmUgR0xfUFJPR1JBTV9URU1QT1JBUklFU19B
UkIgMHg4OEE0CiNkZWZpbmUgR0xfTUFYX1BST0dSQU1fVEVNUE9SQVJJRVNfQVJCIDB4ODhBNQoj
ZGVmaW5lIEdMX1BST0dSQU1fTkFUSVZFX1RFTVBPUkFSSUVTX0FSQiAweDg4QTYKI2RlZmluZSBH
TF9NQVhfUFJPR1JBTV9OQVRJVkVfVEVNUE9SQVJJRVNfQVJCIDB4ODhBNwojZGVmaW5lIEdMX1BS
T0dSQU1fUEFSQU1FVEVSU19BUkIgMHg4OEE4CiNkZWZpbmUgR0xfTUFYX1BST0dSQU1fUEFSQU1F
VEVSU19BUkIgMHg4OEE5CiNkZWZpbmUgR0xfUFJPR1JBTV9OQVRJVkVfUEFSQU1FVEVSU19BUkIg
MHg4OEFBCiNkZWZpbmUgR0xfTUFYX1BST0dSQU1fTkFUSVZFX1BBUkFNRVRFUlNfQVJCIDB4ODhB
QgojZGVmaW5lIEdMX1BST0dSQU1fQVRUUklCU19BUkIgMHg4OEFDCiNkZWZpbmUgR0xfTUFYX1BS
T0dSQU1fQVRUUklCU19BUkIgMHg4OEFECiNkZWZpbmUgR0xfUFJPR1JBTV9OQVRJVkVfQVRUUklC
U19BUkIgMHg4OEFFCiNkZWZpbmUgR0xfTUFYX1BST0dSQU1fTkFUSVZFX0FUVFJJQlNfQVJCIDB4
ODhBRgojZGVmaW5lIEdMX1BST0dSQU1fQUREUkVTU19SRUdJU1RFUlNfQVJCIDB4ODhCMAojZGVm
aW5lIEdMX01BWF9QUk9HUkFNX0FERFJFU1NfUkVHSVNURVJTX0FSQiAweDg4QjEKI2RlZmluZSBH
TF9QUk9HUkFNX05BVElWRV9BRERSRVNTX1JFR0lTVEVSU19BUkIgMHg4OEIyCiNkZWZpbmUgR0xf
TUFYX1BST0dSQU1fTkFUSVZFX0FERFJFU1NfUkVHSVNURVJTX0FSQiAweDg4QjMKI2RlZmluZSBH
TF9NQVhfUFJPR1JBTV9MT0NBTF9QQVJBTUVURVJTX0FSQiAweDg4QjQKI2RlZmluZSBHTF9NQVhf
UFJPR1JBTV9FTlZfUEFSQU1FVEVSU19BUkIgMHg4OEI1CiNkZWZpbmUgR0xfUFJPR1JBTV9VTkRF
Ul9OQVRJVkVfTElNSVRTX0FSQiAweDg4QjYKI2RlZmluZSBHTF9QUk9HUkFNX1NUUklOR19BUkIg
MHg4NjI4CiNkZWZpbmUgR0xfUFJPR1JBTV9FUlJPUl9QT1NJVElPTl9BUkIgMHg4NjRCCiNkZWZp
bmUgR0xfQ1VSUkVOVF9NQVRSSVhfQVJCIDB4ODY0MQojZGVmaW5lIEdMX1RSQU5TUE9TRV9DVVJS
RU5UX01BVFJJWF9BUkIgMHg4OEI3CiNkZWZpbmUgR0xfQ1VSUkVOVF9NQVRSSVhfU1RBQ0tfREVQ
VEhfQVJCIDB4ODY0MAojZGVmaW5lIEdMX01BWF9WRVJURVhfQVRUUklCU19BUkIgMHg4ODY5CiNk
ZWZpbmUgR0xfTUFYX1BST0dSQU1fTUFUUklDRVNfQVJCIDB4ODYyRgojZGVmaW5lIEdMX01BWF9Q
Uk9HUkFNX01BVFJJWF9TVEFDS19ERVBUSF9BUkIgMHg4NjJFCiNkZWZpbmUgR0xfUFJPR1JBTV9F
UlJPUl9TVFJJTkdfQVJCIDB4ODg3NAoKI2RlZmluZSBHTF9NQVRSSVgwX0FSQiAweDg4QzAKI2Rl
ZmluZSBHTF9NQVRSSVgxX0FSQiAweDg4QzEKI2RlZmluZSBHTF9NQVRSSVgyX0FSQiAweDg4QzIK
I2RlZmluZSBHTF9NQVRSSVgzX0FSQiAweDg4QzMKI2RlZmluZSBHTF9NQVRSSVg0X0FSQiAweDg4
QzQKI2RlZmluZSBHTF9NQVRSSVg1X0FSQiAweDg4QzUKI2RlZmluZSBHTF9NQVRSSVg2X0FSQiAw
eDg4QzYKI2RlZmluZSBHTF9NQVRSSVg3X0FSQiAweDg4QzcKI2RlZmluZSBHTF9NQVRSSVg4X0FS
QiAweDg4QzgKI2RlZmluZSBHTF9NQVRSSVg5X0FSQiAweDg4QzkKI2RlZmluZSBHTF9NQVRSSVgx
MF9BUkIgMHg4OENBCiNkZWZpbmUgR0xfTUFUUklYMTFfQVJCIDB4ODhDQgojZGVmaW5lIEdMX01B
VFJJWDEyX0FSQiAweDg4Q0MKI2RlZmluZSBHTF9NQVRSSVgxM19BUkIgMHg4OENECiNkZWZpbmUg
R0xfTUFUUklYMTRfQVJCIDB4ODhDRQojZGVmaW5lIEdMX01BVFJJWDE1X0FSQiAweDg4Q0YKI2Rl
ZmluZSBHTF9NQVRSSVgxNl9BUkIgMHg4OEQwCiNkZWZpbmUgR0xfTUFUUklYMTdfQVJCIDB4ODhE
MQojZGVmaW5lIEdMX01BVFJJWDE4X0FSQiAweDg4RDIKI2RlZmluZSBHTF9NQVRSSVgxOV9BUkIg
MHg4OEQzCiNkZWZpbmUgR0xfTUFUUklYMjBfQVJCIDB4ODhENAojZGVmaW5lIEdMX01BVFJJWDIx
X0FSQiAweDg4RDUKI2RlZmluZSBHTF9NQVRSSVgyMl9BUkIgMHg4OEQ2CiNkZWZpbmUgR0xfTUFU
UklYMjNfQVJCIDB4ODhENwojZGVmaW5lIEdMX01BVFJJWDI0X0FSQiAweDg4RDgKI2RlZmluZSBH
TF9NQVRSSVgyNV9BUkIgMHg4OEQ5CiNkZWZpbmUgR0xfTUFUUklYMjZfQVJCIDB4ODhEQQojZGVm
aW5lIEdMX01BVFJJWDI3X0FSQiAweDg4REIKI2RlZmluZSBHTF9NQVRSSVgyOF9BUkIgMHg4OERD
CiNkZWZpbmUgR0xfTUFUUklYMjlfQVJCIDB4ODhERAojZGVmaW5lIEdMX01BVFJJWDMwX0FSQiAw
eDg4REUKI2RlZmluZSBHTF9NQVRSSVgzMV9BUkIgMHg4OERGCgojZGVmaW5lIEdMX0NPTE9SX1NV
TV9BUkIgMHg4NDU4CgoKCiNkZWZpbmUgR0xfUFJPR1JBTV9PQkpFQ1RfQVJCIDB4OEI0MAojZGVm
aW5lIEdMX09CSkVDVF9UWVBFX0FSQiAweDhCNEUKI2RlZmluZSBHTF9PQkpFQ1RfU1VCVFlQRV9B
UkIgMHg4QjRGCiNkZWZpbmUgR0xfT0JKRUNUX0RFTEVURV9TVEFUVVNfQVJCIDB4OEI4MAojZGVm
aW5lIEdMX09CSkVDVF9DT01QSUxFX1NUQVRVU19BUkIgMHg4QjgxCiNkZWZpbmUgR0xfT0JKRUNU
X0xJTktfU1RBVFVTX0FSQiAweDhCODIKI2RlZmluZSBHTF9PQkpFQ1RfVkFMSURBVEVfU1RBVFVT
X0FSQiAweDhCODMKI2RlZmluZSBHTF9PQkpFQ1RfSU5GT19MT0dfTEVOR1RIX0FSQiAweDhCODQK
I2RlZmluZSBHTF9PQkpFQ1RfQVRUQUNIRURfT0JKRUNUU19BUkIgMHg4Qjg1CiNkZWZpbmUgR0xf
T0JKRUNUX0FDVElWRV9VTklGT1JNU19BUkIgMHg4Qjg2CiNkZWZpbmUgR0xfT0JKRUNUX0FDVElW
RV9VTklGT1JNX01BWF9MRU5HVEhfQVJCIDB4OEI4NwojZGVmaW5lIEdMX09CSkVDVF9TSEFERVJf
U09VUkNFX0xFTkdUSF9BUkIgMHg4Qjg4CiNkZWZpbmUgR0xfU0hBREVSX09CSkVDVF9BUkIgMHg4
QjQ4CiNkZWZpbmUgR0xfRkxPQVRfVkVDMl9BUkIgMHg4QjUwCiNkZWZpbmUgR0xfRkxPQVRfVkVD
M19BUkIgMHg4QjUxCiNkZWZpbmUgR0xfRkxPQVRfVkVDNF9BUkIgMHg4QjUyCiNkZWZpbmUgR0xf
SU5UX1ZFQzJfQVJCIDB4OEI1MwojZGVmaW5lIEdMX0lOVF9WRUMzX0FSQiAweDhCNTQKI2RlZmlu
ZSBHTF9JTlRfVkVDNF9BUkIgMHg4QjU1CiNkZWZpbmUgR0xfQk9PTF9BUkIgMHg4QjU2CiNkZWZp
bmUgR0xfQk9PTF9WRUMyX0FSQiAweDhCNTcKI2RlZmluZSBHTF9CT09MX1ZFQzNfQVJCIDB4OEI1
OAojZGVmaW5lIEdMX0JPT0xfVkVDNF9BUkIgMHg4QjU5CiNkZWZpbmUgR0xfRkxPQVRfTUFUMl9B
UkIgMHg4QjVBCiNkZWZpbmUgR0xfRkxPQVRfTUFUM19BUkIgMHg4QjVCCiNkZWZpbmUgR0xfRkxP
QVRfTUFUNF9BUkIgMHg4QjVDCiNkZWZpbmUgR0xfU0FNUExFUl8xRF9BUkIgMHg4QjVECiNkZWZp
bmUgR0xfU0FNUExFUl8yRF9BUkIgMHg4QjVFCiNkZWZpbmUgR0xfU0FNUExFUl8zRF9BUkIgMHg4
QjVGCiNkZWZpbmUgR0xfU0FNUExFUl9DVUJFX0FSQiAweDhCNjAKI2RlZmluZSBHTF9TQU1QTEVS
XzFEX1NIQURPV19BUkIgMHg4QjYxCiNkZWZpbmUgR0xfU0FNUExFUl8yRF9TSEFET1dfQVJCIDB4
OEI2MgojZGVmaW5lIEdMX1NBTVBMRVJfMkRfUkVDVF9BUkIgMHg4QjYzCiNkZWZpbmUgR0xfU0FN
UExFUl8yRF9SRUNUX1NIQURPV19BUkIgMHg4QjY0CgoKCiNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9U
RVhUVVJFX0lNQUdFX1VOSVRTX0FSQiAweDhCNEMKCgoKI2RlZmluZSBHTF9WRVJURVhfU0hBREVS
X0FSQiAweDhCMzEKI2RlZmluZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UU19BUkIg
MHg4QjRBCiNkZWZpbmUgR0xfTUFYX1RFWFRVUkVfQ09PUkRTX0FSQiAweDg4NzEKI2RlZmluZSBH
TF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUU19BUkIgMHg4ODcyCiNkZWZpbmUgR0xfTUFYX1ZBUllJ
TkdfRkxPQVRTX0FSQiAweDhCNEIKI2RlZmluZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlNfQVJCIDB4
ODg2OQojZGVmaW5lIEdMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTX0FSQiAweDhC
NEQKI2RlZmluZSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFX0FSQiAweDg2NDIKI2RlZmlu
ZSBHTF9WRVJURVhfUFJPR1JBTV9UV09fU0lERV9BUkIgMHg4NjQzCiNkZWZpbmUgR0xfT0JKRUNU
X0FDVElWRV9BVFRSSUJVVEVTX0FSQiAweDhCODkKI2RlZmluZSBHTF9PQkpFQ1RfQUNUSVZFX0FU
VFJJQlVURV9NQVhfTEVOR1RIX0FSQiAweDhCOEEKI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FS
UkFZX0VOQUJMRURfQVJCIDB4ODYyMgojZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0la
RV9BUkIgMHg4NjIzCiNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREVfQVJCIDB4
ODYyNAojZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRV9BUkIgMHg4NjI1CiNkZWZp
bmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEX0FSQiAweDg4NkEKI2RlZmluZSBH
TF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUJfQVJCIDB4ODYyNgojZGVmaW5lIEdMX1ZFUlRFWF9BVFRS
SUJfQVJSQVlfUE9JTlRFUl9BUkIgMHg4NjQ1CgoKCiNkZWZpbmUgR0xfRlJBR01FTlRfU0hBREVS
X0FSQiAweDhCMzAKI2RlZmluZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTX0FS
QiAweDhCNDkKI2RlZmluZSBHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX0FSQiAw
eDhCOEIKI2RlZmluZSBHTF9NQVhfVEVYVFVSRV9DT09SRFNfQVJCIDB4ODg3MQojZGVmaW5lIEdM
X01BWF9URVhUVVJFX0lNQUdFX1VOSVRTX0FSQiAweDg4NzIKCgoKI2RlZmluZSBHTF9TSEFESU5H
X0xBTkdVQUdFX1ZFUlNJT05fQVJCIDB4OEI4QwoKCgojZGVmaW5lIEdMX0FSUkFZX0JVRkZFUl9B
UkIgMHg4ODkyCiNkZWZpbmUgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQVJCIDB4ODg5MwojZGVm
aW5lIEdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HX0FSQiAweDg4OTQKI2RlZmluZSBHTF9FTEVNRU5U
X0FSUkFZX0JVRkZFUl9CSU5ESU5HX0FSQiAweDg4OTUKI2RlZmluZSBHTF9WRVJURVhfQVJSQVlf
QlVGRkVSX0JJTkRJTkdfQVJCIDB4ODg5NgojZGVmaW5lIEdMX05PUk1BTF9BUlJBWV9CVUZGRVJf
QklORElOR19BUkIgMHg4ODk3CiNkZWZpbmUgR0xfQ09MT1JfQVJSQVlfQlVGRkVSX0JJTkRJTkdf
QVJCIDB4ODg5OAojZGVmaW5lIEdMX0lOREVYX0FSUkFZX0JVRkZFUl9CSU5ESU5HX0FSQiAweDg4
OTkKI2RlZmluZSBHTF9URVhUVVJFX0NPT1JEX0FSUkFZX0JVRkZFUl9CSU5ESU5HX0FSQiAweDg4
OUEKI2RlZmluZSBHTF9FREdFX0ZMQUdfQVJSQVlfQlVGRkVSX0JJTkRJTkdfQVJCIDB4ODg5Qgoj
ZGVmaW5lIEdMX1NFQ09OREFSWV9DT0xPUl9BUlJBWV9CVUZGRVJfQklORElOR19BUkIgMHg4ODlD
CiNkZWZpbmUgR0xfRk9HX0NPT1JEX0FSUkFZX0JVRkZFUl9CSU5ESU5HX0FSQiAweDg4OUQKI2Rl
ZmluZSBHTF9XRUlHSFRfQVJSQVlfQlVGRkVSX0JJTkRJTkdfQVJCIDB4ODg5RQojZGVmaW5lIEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdfQVJCIDB4ODg5RgojZGVmaW5lIEdM
X1NUUkVBTV9EUkFXX0FSQiAweDg4RTAKI2RlZmluZSBHTF9TVFJFQU1fUkVBRF9BUkIgMHg4OEUx
CiNkZWZpbmUgR0xfU1RSRUFNX0NPUFlfQVJCIDB4ODhFMgojZGVmaW5lIEdMX1NUQVRJQ19EUkFX
X0FSQiAweDg4RTQKI2RlZmluZSBHTF9TVEFUSUNfUkVBRF9BUkIgMHg4OEU1CiNkZWZpbmUgR0xf
U1RBVElDX0NPUFlfQVJCIDB4ODhFNgojZGVmaW5lIEdMX0RZTkFNSUNfRFJBV19BUkIgMHg4OEU4
CiNkZWZpbmUgR0xfRFlOQU1JQ19SRUFEX0FSQiAweDg4RTkKI2RlZmluZSBHTF9EWU5BTUlDX0NP
UFlfQVJCIDB4ODhFQQojZGVmaW5lIEdMX1JFQURfT05MWV9BUkIgMHg4OEI4CiNkZWZpbmUgR0xf
V1JJVEVfT05MWV9BUkIgMHg4OEI5CiNkZWZpbmUgR0xfUkVBRF9XUklURV9BUkIgMHg4OEJBCiNk
ZWZpbmUgR0xfQlVGRkVSX1NJWkVfQVJCIDB4ODc2NAojZGVmaW5lIEdMX0JVRkZFUl9VU0FHRV9B
UkIgMHg4NzY1CiNkZWZpbmUgR0xfQlVGRkVSX0FDQ0VTU19BUkIgMHg4OEJCCiNkZWZpbmUgR0xf
QlVGRkVSX01BUFBFRF9BUkIgMHg4OEJDCiNkZWZpbmUgR0xfQlVGRkVSX01BUF9QT0lOVEVSX0FS
QiAweDg4QkQKCiNkZWZpbmUgR0xfRk9HX0NPT1JESU5BVEVfQVJSQVlfQlVGRkVSX0JJTkRJTkdf
QVJCIDB4ODg5RAoKCgojZGVmaW5lIEdMX1BPSU5UX1NQUklURV9BUkIgMHg4ODYxCiNkZWZpbmUg
R0xfQ09PUkRfUkVQTEFDRV9BUkIgMHg4ODYyCgoKCiNkZWZpbmUgR0xfVEVYVFVSRV9SRUNUQU5H
TEVfQVJCIDB4ODRGNQojZGVmaW5lIEdMX1RFWFRVUkVfQklORElOR19SRUNUQU5HTEVfQVJCIDB4
ODRGNgojZGVmaW5lIEdMX1BST1hZX1RFWFRVUkVfUkVDVEFOR0xFX0FSQiAweDg0RjcKI2RlZmlu
ZSBHTF9NQVhfUkVDVEFOR0xFX1RFWFRVUkVfU0laRV9BUkIgMHg4NEY4CgoKCiNkZWZpbmUgR0xf
TUFYX0RSQVdfQlVGRkVSU19BUkIgMHg4ODI0CiNkZWZpbmUgR0xfRFJBV19CVUZGRVIwX0FSQiAw
eDg4MjUKI2RlZmluZSBHTF9EUkFXX0JVRkZFUjFfQVJCIDB4ODgyNgojZGVmaW5lIEdMX0RSQVdf
QlVGRkVSMl9BUkIgMHg4ODI3CiNkZWZpbmUgR0xfRFJBV19CVUZGRVIzX0FSQiAweDg4MjgKI2Rl
ZmluZSBHTF9EUkFXX0JVRkZFUjRfQVJCIDB4ODgyOQojZGVmaW5lIEdMX0RSQVdfQlVGRkVSNV9B
UkIgMHg4ODJBCiNkZWZpbmUgR0xfRFJBV19CVUZGRVI2X0FSQiAweDg4MkIKI2RlZmluZSBHTF9E
UkFXX0JVRkZFUjdfQVJCIDB4ODgyQwojZGVmaW5lIEdMX0RSQVdfQlVGRkVSOF9BUkIgMHg4ODJE
CiNkZWZpbmUgR0xfRFJBV19CVUZGRVI5X0FSQiAweDg4MkUKI2RlZmluZSBHTF9EUkFXX0JVRkZF
UjEwX0FSQiAweDg4MkYKI2RlZmluZSBHTF9EUkFXX0JVRkZFUjExX0FSQiAweDg4MzAKI2RlZmlu
ZSBHTF9EUkFXX0JVRkZFUjEyX0FSQiAweDg4MzEKI2RlZmluZSBHTF9EUkFXX0JVRkZFUjEzX0FS
QiAweDg4MzIKI2RlZmluZSBHTF9EUkFXX0JVRkZFUjE0X0FSQiAweDg4MzMKI2RlZmluZSBHTF9E
UkFXX0JVRkZFUjE1X0FSQiAweDg4MzQKCgoKI2RlZmluZSBHTF9QSVhFTF9QQUNLX0JVRkZFUl9B
UkIgMHg4OEVCCiNkZWZpbmUgR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9BUkIgMHg4OEVDCiNkZWZp
bmUgR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElOR19BUkIgMHg4OEVECiNkZWZpbmUgR0xfUElY
RUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HX0FSQiAweDg4RUYKCgoKI2RlZmluZSBHTF9URVhUVVJF
X1JFRF9UWVBFX0FSQiAweDhDMTAKI2RlZmluZSBHTF9URVhUVVJFX0dSRUVOX1RZUEVfQVJCIDB4
OEMxMQojZGVmaW5lIEdMX1RFWFRVUkVfQkxVRV9UWVBFX0FSQiAweDhDMTIKI2RlZmluZSBHTF9U
RVhUVVJFX0FMUEhBX1RZUEVfQVJCIDB4OEMxMwojZGVmaW5lIEdMX1RFWFRVUkVfTFVNSU5BTkNF
X1RZUEVfQVJCIDB4OEMxNAojZGVmaW5lIEdMX1RFWFRVUkVfSU5URU5TSVRZX1RZUEVfQVJCIDB4
OEMxNQojZGVmaW5lIEdMX1RFWFRVUkVfREVQVEhfVFlQRV9BUkIgMHg4QzE2CiNkZWZpbmUgR0xf
VU5TSUdORURfTk9STUFMSVpFRF9BUkIgMHg4QzE3CiNkZWZpbmUgR0xfUkdCQTMyRl9BUkIgMHg4
ODE0CiNkZWZpbmUgR0xfUkdCMzJGX0FSQiAweDg4MTUKI2RlZmluZSBHTF9BTFBIQTMyRl9BUkIg
MHg4ODE2CiNkZWZpbmUgR0xfSU5URU5TSVRZMzJGX0FSQiAweDg4MTcKI2RlZmluZSBHTF9MVU1J
TkFOQ0UzMkZfQVJCIDB4ODgxOAojZGVmaW5lIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9BUkIgMHg4
ODE5CiNkZWZpbmUgR0xfUkdCQTE2Rl9BUkIgMHg4ODFBCiNkZWZpbmUgR0xfUkdCMTZGX0FSQiAw
eDg4MUIKI2RlZmluZSBHTF9BTFBIQTE2Rl9BUkIgMHg4ODFDCiNkZWZpbmUgR0xfSU5URU5TSVRZ
MTZGX0FSQiAweDg4MUQKI2RlZmluZSBHTF9MVU1JTkFOQ0UxNkZfQVJCIDB4ODgxRQojZGVmaW5l
IEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9BUkIgMHg4ODFGCgoKCiNkZWZpbmUgR0xfSEFMRl9GTE9B
VF9BUkIgMHgxNDBCCgoKCiNkZWZpbmUgR0xfUkdCQV9GTE9BVF9NT0RFX0FSQiAweDg4MjAKI2Rl
ZmluZSBHTF9DTEFNUF9WRVJURVhfQ09MT1JfQVJCIDB4ODkxQQojZGVmaW5lIEdMX0NMQU1QX0ZS
QUdNRU5UX0NPTE9SX0FSQiAweDg5MUIKI2RlZmluZSBHTF9DTEFNUF9SRUFEX0NPTE9SX0FSQiAw
eDg5MUMKI2RlZmluZSBHTF9GSVhFRF9PTkxZX0FSQiAweDg5MUQKCgoKI2RlZmluZSBHTF9IQUxG
X0ZMT0FUIDB4MTQwQgoKCgojZGVmaW5lIEdMX0NPTVBSRVNTRURfUkVEIDB4ODIyNQojZGVmaW5l
IEdMX0NPTVBSRVNTRURfUkcgMHg4MjI2CiNkZWZpbmUgR0xfUkcgMHg4MjI3CiNkZWZpbmUgR0xf
UkdfSU5URUdFUiAweDgyMjgKI2RlZmluZSBHTF9SOCAweDgyMjkKI2RlZmluZSBHTF9SMTYgMHg4
MjJBCiNkZWZpbmUgR0xfUkc4IDB4ODIyQgojZGVmaW5lIEdMX1JHMTYgMHg4MjJDCiNkZWZpbmUg
R0xfUjE2RiAweDgyMkQKI2RlZmluZSBHTF9SMzJGIDB4ODIyRQojZGVmaW5lIEdMX1JHMTZGIDB4
ODIyRgojZGVmaW5lIEdMX1JHMzJGIDB4ODIzMAojZGVmaW5lIEdMX1I4SSAweDgyMzEKI2RlZmlu
ZSBHTF9SOFVJIDB4ODIzMgojZGVmaW5lIEdMX1IxNkkgMHg4MjMzCiNkZWZpbmUgR0xfUjE2VUkg
MHg4MjM0CiNkZWZpbmUgR0xfUjMySSAweDgyMzUKI2RlZmluZSBHTF9SMzJVSSAweDgyMzYKI2Rl
ZmluZSBHTF9SRzhJIDB4ODIzNwojZGVmaW5lIEdMX1JHOFVJIDB4ODIzOAojZGVmaW5lIEdMX1JH
MTZJIDB4ODIzOQojZGVmaW5lIEdMX1JHMTZVSSAweDgyM0EKI2RlZmluZSBHTF9SRzMySSAweDgy
M0IKI2RlZmluZSBHTF9SRzMyVUkgMHg4MjNDCgoKCiNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9B
UlJBWV9ESVZJU09SX0FSQiAweDg4RkUKCgoKI2RlZmluZSBHTF9VTklGT1JNX0JVRkZFUiAweDhB
MTEKI2RlZmluZSBHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIDB4OEEyOAojZGVmaW5lIEdMX1VO
SUZPUk1fQlVGRkVSX1NUQVJUIDB4OEEyOQojZGVmaW5lIEdMX1VOSUZPUk1fQlVGRkVSX1NJWkUg
MHg4QTJBCiNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUyAweDhBMkIKI2RlZmlu
ZSBHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9CTE9DS1MgMHg4QTJDCiNkZWZpbmUgR0xfTUFYX0ZS
QUdNRU5UX1VOSUZPUk1fQkxPQ0tTIDB4OEEyRAojZGVmaW5lIEdMX01BWF9DT01CSU5FRF9VTklG
T1JNX0JMT0NLUyAweDhBMkUKI2RlZmluZSBHTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1Mg
MHg4QTJGCiNkZWZpbmUgR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRSAweDhBMzAKI2RlZmluZSBH
TF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyAweDhBMzEKI2RlZmluZSBH
TF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTIDB4OEEzMgojZGVmaW5l
IEdMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMgMHg4QTMzCiNkZWZp
bmUgR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCAweDhBMzQKI2RlZmluZSBHTF9B
Q1RJVkVfVU5JRk9STV9CTE9DS19NQVhfTkFNRV9MRU5HVEggMHg4QTM1CiNkZWZpbmUgR0xfQUNU
SVZFX1VOSUZPUk1fQkxPQ0tTIDB4OEEzNgojZGVmaW5lIEdMX1VOSUZPUk1fVFlQRSAweDhBMzcK
I2RlZmluZSBHTF9VTklGT1JNX1NJWkUgMHg4QTM4CiNkZWZpbmUgR0xfVU5JRk9STV9OQU1FX0xF
TkdUSCAweDhBMzkKI2RlZmluZSBHTF9VTklGT1JNX0JMT0NLX0lOREVYIDB4OEEzQQojZGVmaW5l
IEdMX1VOSUZPUk1fT0ZGU0VUIDB4OEEzQgojZGVmaW5lIEdMX1VOSUZPUk1fQVJSQVlfU1RSSURF
IDB4OEEzQwojZGVmaW5lIEdMX1VOSUZPUk1fTUFUUklYX1NUUklERSAweDhBM0QKI2RlZmluZSBH
TF9VTklGT1JNX0lTX1JPV19NQUpPUiAweDhBM0UKI2RlZmluZSBHTF9VTklGT1JNX0JMT0NLX0JJ
TkRJTkcgMHg4QTNGCiNkZWZpbmUgR0xfVU5JRk9STV9CTE9DS19EQVRBX1NJWkUgMHg4QTQwCiNk
ZWZpbmUgR0xfVU5JRk9STV9CTE9DS19OQU1FX0xFTkdUSCAweDhBNDEKI2RlZmluZSBHTF9VTklG
T1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUyAweDhBNDIKI2RlZmluZSBHTF9VTklGT1JNX0JMT0NL
X0FDVElWRV9VTklGT1JNX0lORElDRVMgMHg4QTQzCiNkZWZpbmUgR0xfVU5JRk9STV9CTE9DS19S
RUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVIgMHg4QTQ0CiNkZWZpbmUgR0xfVU5JRk9STV9CTE9D
S19SRUZFUkVOQ0VEX0JZX0dFT01FVFJZX1NIQURFUiAweDhBNDUKI2RlZmluZSBHTF9VTklGT1JN
X0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSIDB4OEE0NgojZGVmaW5lIEdMX0lO
VkFMSURfSU5ERVggMHhGRkZGRkZGRgoKCgojZGVmaW5lIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiAw
eDhDQUMKI2RlZmluZSBHTF9ERVBUSDMyRl9TVEVOQ0lMOCAweDhDQUQKI2RlZmluZSBHTF9GTE9B
VF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYgMHg4REFECgoKCiNkZWZpbmUgR0xfQUJHUl9FWFQg
MHg4MDAwCgoKCiNkZWZpbmUgR0xfQ09OU1RBTlRfQ09MT1JfRVhUIDB4ODAwMQojZGVmaW5lIEdM
X09ORV9NSU5VU19DT05TVEFOVF9DT0xPUl9FWFQgMHg4MDAyCiNkZWZpbmUgR0xfQ09OU1RBTlRf
QUxQSEFfRVhUIDB4ODAwMwojZGVmaW5lIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQV9FWFQg
MHg4MDA0CiNkZWZpbmUgR0xfQkxFTkRfQ09MT1JfRVhUIDB4ODAwNQojIDEwNDYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCiNk
ZWZpbmUgR0xfUkVTQ0FMRV9OT1JNQUxfRVhUIDB4ODAzQQojIDEwODUgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCiNkZWZpbmUg
R0xfRlVOQ19BRERfRVhUIDB4ODAwNgojZGVmaW5lIEdMX01JTl9FWFQgMHg4MDA3CiNkZWZpbmUg
R0xfTUFYX0VYVCAweDgwMDgKI2RlZmluZSBHTF9CTEVORF9FUVVBVElPTl9FWFQgMHg4MDA5CgoK
CiNkZWZpbmUgR0xfRlVOQ19TVUJUUkFDVF9FWFQgMHg4MDBBCiNkZWZpbmUgR0xfRlVOQ19SRVZF
UlNFX1NVQlRSQUNUX0VYVCAweDgwMEIKIyAxMTA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwojZGVmaW5lIEdMX0NMSVBfVk9M
VU1FX0NMSVBQSU5HX0hJTlRfRVhUIDB4ODBGMAojIDExMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCiNkZWZpbmUgR0xfQVJS
QVlfRUxFTUVOVF9MT0NLX0ZJUlNUX0VYVCAweDgxQTgKI2RlZmluZSBHTF9BUlJBWV9FTEVNRU5U
X0xPQ0tfQ09VTlRfRVhUIDB4ODFBOQojIDExNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCiNkZWZpbmUgR0xfTUFYX0VMRU1F
TlRTX1ZFUlRJQ0VTX0VYVCAweDgwRTgKI2RlZmluZSBHTF9NQVhfRUxFTUVOVFNfSU5ESUNFU19F
WFQgMHg4MEU5CiMgMTE2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1l
d29yay9IZWFkZXJzL2dsZXh0LmgiIDMKI2RlZmluZSBHTF9CR1JfRVhUIDB4ODBFMAojZGVmaW5l
IEdMX0JHUkFfRVhUIDB4ODBFMQojIDExODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09w
ZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCiNkZWZpbmUgR0xfTElHSFRfTU9ERUxf
Q09MT1JfQ09OVFJPTF9FWFQgMHg4MUY4CiNkZWZpbmUgR0xfU0lOR0xFX0NPTE9SX0VYVCAweDgx
RjkKI2RlZmluZSBHTF9TRVBBUkFURV9TUEVDVUxBUl9DT0xPUl9FWFQgMHg4MUZBCgoKCiNkZWZp
bmUgR0xfQ09MT1JfU1VNX0VYVCAweDg0NTgKI2RlZmluZSBHTF9DVVJSRU5UX1NFQ09OREFSWV9D
T0xPUl9FWFQgMHg4NDU5CiNkZWZpbmUgR0xfU0VDT05EQVJZX0NPTE9SX0FSUkFZX1NJWkVfRVhU
IDB4ODQ1QQojZGVmaW5lIEdMX1NFQ09OREFSWV9DT0xPUl9BUlJBWV9UWVBFX0VYVCAweDg0NUIK
I2RlZmluZSBHTF9TRUNPTkRBUllfQ09MT1JfQVJSQVlfU1RSSURFX0VYVCAweDg0NUMKI2RlZmlu
ZSBHTF9TRUNPTkRBUllfQ09MT1JfQVJSQVlfUE9JTlRFUl9FWFQgMHg4NDVECiNkZWZpbmUgR0xf
U0VDT05EQVJZX0NPTE9SX0FSUkFZX0VYVCAweDg0NUUKIyAxMjA1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwojZGVmaW5lIEdM
X0ZPR19DT09SRElOQVRFX1NPVVJDRV9FWFQgMHg4NDUwCiNkZWZpbmUgR0xfRk9HX0NPT1JESU5B
VEVfRVhUIDB4ODQ1MQojZGVmaW5lIEdMX0ZSQUdNRU5UX0RFUFRIX0VYVCAweDg0NTIKI2RlZmlu
ZSBHTF9DVVJSRU5UX0ZPR19DT09SRElOQVRFX0VYVCAweDg0NTMKI2RlZmluZSBHTF9GT0dfQ09P
UkRJTkFURV9BUlJBWV9UWVBFX0VYVCAweDg0NTQKI2RlZmluZSBHTF9GT0dfQ09PUkRJTkFURV9B
UlJBWV9TVFJJREVfRVhUIDB4ODQ1NQojZGVmaW5lIEdMX0ZPR19DT09SRElOQVRFX0FSUkFZX1BP
SU5URVJfRVhUIDB4ODQ1NgojZGVmaW5lIEdMX0ZPR19DT09SRElOQVRFX0FSUkFZX0VYVCAweDg0
NTcKIyAxMjc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hl
YWRlcnMvZ2xleHQuaCIgMwojZGVmaW5lIEdMX0JMRU5EX0RTVF9SR0JfRVhUIDB4ODBDOAojZGVm
aW5lIEdMX0JMRU5EX1NSQ19SR0JfRVhUIDB4ODBDOQojZGVmaW5lIEdMX0JMRU5EX0RTVF9BTFBI
QV9FWFQgMHg4MENBCiNkZWZpbmUgR0xfQkxFTkRfU1JDX0FMUEhBX0VYVCAweDgwQ0IKCgoKI2Rl
ZmluZSBHTF9JTkNSX1dSQVBfRVhUIDB4ODUwNwojZGVmaW5lIEdMX0RFQ1JfV1JBUF9FWFQgMHg4
NTA4CiMgMTMxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9I
ZWFkZXJzL2dsZXh0LmgiIDMKI2RlZmluZSBHTF9NQVhfVEVYVFVSRV9MT0RfQklBU19FWFQgMHg4
NEZECiNkZWZpbmUgR0xfVEVYVFVSRV9GSUxURVJfQ09OVFJPTF9FWFQgMHg4NTAwCiNkZWZpbmUg
R0xfVEVYVFVSRV9MT0RfQklBU19FWFQgMHg4NTAxCgoKCiNkZWZpbmUgR0xfVEVYVFVSRV9NQVhf
QU5JU09UUk9QWV9FWFQgMHg4NEZFCiNkZWZpbmUgR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJP
UFlfRVhUIDB4ODRGRgojIDEzMzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5m
cmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCiNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JfUzNU
Q19EWFQxX0VYVCAweDgzRjAKI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCAweDgzRjEKI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCAweDgzRjIK
I2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCAweDgzRjMKCgoKI2RlZmlu
ZSBHTF9URVhUVVJFX1JFQ1RBTkdMRV9FWFQgMHg4NEY1CiNkZWZpbmUgR0xfVEVYVFVSRV9CSU5E
SU5HX1JFQ1RBTkdMRV9FWFQgMHg4NEY2CiNkZWZpbmUgR0xfUFJPWFlfVEVYVFVSRV9SRUNUQU5H
TEVfRVhUIDB4ODRGNwojZGVmaW5lIEdMX01BWF9SRUNUQU5HTEVfVEVYVFVSRV9TSVpFX0VYVCAw
eDg0RjgKCgoKI2RlZmluZSBHTF9TUkdCX0VYVCAweDhDNDAKI2RlZmluZSBHTF9TUkdCOF9FWFQg
MHg4QzQxCiNkZWZpbmUgR0xfU1JHQl9BTFBIQV9FWFQgMHg4QzQyCiNkZWZpbmUgR0xfU1JHQjhf
QUxQSEE4X0VYVCAweDhDNDMKI2RlZmluZSBHTF9TTFVNSU5BTkNFX0FMUEhBX0VYVCAweDhDNDQK
I2RlZmluZSBHTF9TTFVNSU5BTkNFOF9BTFBIQThfRVhUIDB4OEM0NQojZGVmaW5lIEdMX1NMVU1J
TkFOQ0VfRVhUIDB4OEM0NgojZGVmaW5lIEdMX1NMVU1JTkFOQ0U4X0VYVCAweDhDNDcKI2RlZmlu
ZSBHTF9DT01QUkVTU0VEX1NSR0JfRVhUIDB4OEM0OAojZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JH
Ql9BTFBIQV9FWFQgMHg4QzQ5CiNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TTFVNSU5BTkNFX0VYVCAw
eDhDNEEKI2RlZmluZSBHTF9DT01QUkVTU0VEX1NMVU1JTkFOQ0VfQUxQSEFfRVhUIDB4OEM0Qgoj
ZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUIDB4OEM0QwojZGVmaW5lIEdM
X0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUIDB4OEM0RAojZGVmaW5lIEdMX0NP
TVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUIDB4OEM0RQojZGVmaW5lIEdMX0NPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUIDB4OEM0RgojIDE2MDggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCiNkZWZp
bmUgR0xfU1RFTkNJTF9URVNUX1RXT19TSURFX0VYVCAweDg5MTAKI2RlZmluZSBHTF9BQ1RJVkVf
U1RFTkNJTF9GQUNFX0VYVCAweDg5MTEKCgoKI2RlZmluZSBHTF9ERVBUSF9CT1VORFNfVEVTVF9F
WFQgMHg4ODkwCiNkZWZpbmUgR0xfREVQVEhfQk9VTkRTX0VYVCAweDg4OTEKCgoKI2RlZmluZSBH
TF9CTEVORF9FUVVBVElPTl9SR0JfRVhUIDB4ODAwOQojZGVmaW5lIEdMX0JMRU5EX0VRVUFUSU9O
X0FMUEhBX0VYVCAweDg4M0QKCgoKI2RlZmluZSBHTF9NSVJST1JfQ0xBTVBfRVhUIDB4ODc0Mgoj
ZGVmaW5lIEdMX01JUlJPUl9DTEFNUF9UT19FREdFX0VYVCAweDg3NDMKI2RlZmluZSBHTF9NSVJS
T1JfQ0xBTVBfVE9fQk9SREVSX0VYVCAweDg5MTIKCgoKI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9F
WFQgMHg4RDQwCiNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0VYVCAweDhENDEKI2RlZmluZSBHTF9T
VEVOQ0lMX0lOREVYMV9FWFQgMHg4RDQ2CiNkZWZpbmUgR0xfU1RFTkNJTF9JTkRFWDRfRVhUIDB4
OEQ0NwojZGVmaW5lIEdMX1NURU5DSUxfSU5ERVg4X0VYVCAweDhENDgKI2RlZmluZSBHTF9TVEVO
Q0lMX0lOREVYMTZfRVhUIDB4OEQ0OQojZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9XSURUSF9FWFQg
MHg4RDQyCiNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0hFSUdIVF9FWFQgMHg4RDQzCiNkZWZpbmUg
R0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVF9FWFQgMHg4RDQ0CiNkZWZpbmUgR0xfUkVO
REVSQlVGRkVSX1JFRF9TSVpFX0VYVCAweDhENTAKI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfR1JF
RU5fU0laRV9FWFQgMHg4RDUxCiNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0JMVUVfU0laRV9FWFQg
MHg4RDUyCiNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVfRVhUIDB4OEQ1MwojZGVm
aW5lIEdMX1JFTkRFUkJVRkZFUl9ERVBUSF9TSVpFX0VYVCAweDhENTQKI2RlZmluZSBHTF9SRU5E
RVJCVUZGRVJfU1RFTkNJTF9TSVpFX0VYVCAweDhENTUKI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX09CSkVDVF9UWVBFX0VYVCAweDhDRDAKI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX09CSkVDVF9OQU1FX0VYVCAweDhDRDEKI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUxfRVhUIDB4OENEMgojZGVmaW5lIEdMX0ZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFX0VYVCAweDhDRDMKI2RlZmluZSBHTF9G
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfM0RfWk9GRlNFVF9FWFQgMHg4Q0Q0CiNkZWZp
bmUgR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUIDB4OENFMAojZGVmaW5lIEdMX0NPTE9SX0FUVEFD
SE1FTlQxX0VYVCAweDhDRTEKI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMl9FWFQgMHg4Q0Uy
CiNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDNfRVhUIDB4OENFMwojZGVmaW5lIEdMX0NPTE9S
X0FUVEFDSE1FTlQ0X0VYVCAweDhDRTQKI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UNV9FWFQg
MHg4Q0U1CiNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDZfRVhUIDB4OENFNgojZGVmaW5lIEdM
X0NPTE9SX0FUVEFDSE1FTlQ3X0VYVCAweDhDRTcKI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5U
OF9FWFQgMHg4Q0U4CiNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDlfRVhUIDB4OENFOQojZGVm
aW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMF9FWFQgMHg4Q0VBCiNkZWZpbmUgR0xfQ09MT1JfQVRU
QUNITUVOVDExX0VYVCAweDhDRUIKI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTJfRVhUIDB4
OENFQwojZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxM19FWFQgMHg4Q0VECiNkZWZpbmUgR0xf
Q09MT1JfQVRUQUNITUVOVDE0X0VYVCAweDhDRUUKI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5U
MTVfRVhUIDB4OENFRgojZGVmaW5lIEdMX0RFUFRIX0FUVEFDSE1FTlRfRVhUIDB4OEQwMAojZGVm
aW5lIEdMX1NURU5DSUxfQVRUQUNITUVOVF9FWFQgMHg4RDIwCiNkZWZpbmUgR0xfRlJBTUVCVUZG
RVJfQ09NUExFVEVfRVhUIDB4OENENQojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVf
QVRUQUNITUVOVF9FWFQgMHg4Q0Q2CiNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9N
SVNTSU5HX0FUVEFDSE1FTlRfRVhUIDB4OENENwojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfRElNRU5TSU9OU19FWFQgMHg4Q0Q5CiNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9GT1JNQVRTX0VYVCAweDhDREEKI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRF
X0RSQVdfQlVGRkVSX0VYVCAweDhDREIKI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRF
X1JFQURfQlVGRkVSX0VYVCAweDhDREMKI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRF
RF9FWFQgMHg4Q0RECiNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQklORElOR19FWFQgMHg4Q0E2CiNk
ZWZpbmUgR0xfUkVOREVSQlVGRkVSX0JJTkRJTkdfRVhUIDB4OENBNwojZGVmaW5lIEdMX01BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQgMHg4Q0RGCiNkZWZpbmUgR0xfTUFYX1JFTkRFUkJVRkZFUl9T
SVpFX0VYVCAweDg0RTgKI2RlZmluZSBHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTl9F
WFQgMHgwNTA2CgoKCiNkZWZpbmUgR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQgMHg4Q0E4CiNkZWZp
bmUgR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQgMHg4Q0E5CiNkZWZpbmUgR0xfRFJBV19GUkFNRUJV
RkZFUl9CSU5ESU5HX0VYVCAweDhDQTYKI2RlZmluZSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJ
TkdfRVhUIDB4OENBQQoKCgojZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TQU1QTEVTX0VYVCAweDhD
QUIKI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0VYVCAweDhE
NTYKI2RlZmluZSBHTF9NQVhfU0FNUExFU19FWFQgMHg4RDU3CgoKCiNkZWZpbmUgR0xfSU5WQUxJ
RF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gMHgwNTA2CiNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9DT0xPUl9FTkNPRElORyAweDgyMTAKI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX0NPTVBPTkVOVF9UWVBFIDB4ODIxMQojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfUkVEX1NJWkUgMHg4MjEyCiNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9H
UkVFTl9TSVpFIDB4ODIxMwojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQkxVRV9T
SVpFIDB4ODIxNAojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRSAw
eDgyMTUKI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0RFUFRIX1NJWkUgMHg4MjE2
CiNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9TVEVOQ0lMX1NJWkUgMHg4MjE3CiNk
ZWZpbmUgR0xfRlJBTUVCVUZGRVJfREVGQVVMVCAweDgyMTgKI2RlZmluZSBHTF9GUkFNRUJVRkZF
Ul9VTkRFRklORUQgMHg4MjE5CiNkZWZpbmUgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIDB4
ODIxQQojZGVmaW5lIEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRSAweDg0RTgKI2RlZmluZSBHTF9E
RVBUSF9TVEVOQ0lMIDB4ODRGOQojZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF8yNF84IDB4ODRGQQoj
ZGVmaW5lIEdMX0RFUFRIMjRfU1RFTkNJTDggMHg4OEYwCiNkZWZpbmUgR0xfVEVYVFVSRV9TVEVO
Q0lMX1NJWkUgMHg4OEYxCiNkZWZpbmUgR0xfVEVYVFVSRV9SRURfVFlQRSAweDhDMTAKI2RlZmlu
ZSBHTF9URVhUVVJFX0dSRUVOX1RZUEUgMHg4QzExCiNkZWZpbmUgR0xfVEVYVFVSRV9CTFVFX1RZ
UEUgMHg4QzEyCiNkZWZpbmUgR0xfVEVYVFVSRV9BTFBIQV9UWVBFIDB4OEMxMwojZGVmaW5lIEdM
X1RFWFRVUkVfREVQVEhfVFlQRSAweDhDMTYKI2RlZmluZSBHTF9VTlNJR05FRF9OT1JNQUxJWkVE
IDB4OEMxNwojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkcgMHg4Q0E2CiNkZWZpbmUgR0xf
RFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HIEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkcKI2RlZmluZSBH
TF9SRU5ERVJCVUZGRVJfQklORElORyAweDhDQTcKI2RlZmluZSBHTF9SRUFEX0ZSQU1FQlVGRkVS
IDB4OENBOAojZGVmaW5lIEdMX0RSQVdfRlJBTUVCVUZGRVIgMHg4Q0E5CiNkZWZpbmUgR0xfUkVB
RF9GUkFNRUJVRkZFUl9CSU5ESU5HIDB4OENBQQojZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TQU1Q
TEVTIDB4OENBQgojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUg
MHg4Q0QwCiNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSAweDhD
RDEKI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwgMHg4Q0Qy
CiNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0Ug
MHg4Q0QzCiNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xBWUVSIDB4
OENENAojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFIDB4OENENQojZGVmaW5lIEdMX0ZS
QU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCAweDhDRDYKI2RlZmluZSBHTF9GUkFNRUJV
RkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCAweDhDRDcKI2RlZmluZSBHTF9GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX0RSQVdfQlVGRkVSIDB4OENEQgojZGVmaW5lIEdMX0ZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfUkVBRF9CVUZGRVIgMHg4Q0RDCiNkZWZpbmUgR0xfRlJBTUVCVUZGRVJf
VU5TVVBQT1JURUQgMHg4Q0RECiNkZWZpbmUgR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTIDB4OENE
RgojZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQwIDB4OENFMAojZGVmaW5lIEdMX0NPTE9SX0FU
VEFDSE1FTlQxIDB4OENFMQojZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQyIDB4OENFMgojZGVm
aW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQzIDB4OENFMwojZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1F
TlQ0IDB4OENFNAojZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ1IDB4OENFNQojZGVmaW5lIEdM
X0NPTE9SX0FUVEFDSE1FTlQ2IDB4OENFNgojZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ3IDB4
OENFNwojZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ4IDB4OENFOAojZGVmaW5lIEdMX0NPTE9S
X0FUVEFDSE1FTlQ5IDB4OENFOQojZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMCAweDhDRUEK
I2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTEgMHg4Q0VCCiNkZWZpbmUgR0xfQ09MT1JfQVRU
QUNITUVOVDEyIDB4OENFQwojZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMyAweDhDRUQKI2Rl
ZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTQgMHg4Q0VFCiNkZWZpbmUgR0xfQ09MT1JfQVRUQUNI
TUVOVDE1IDB4OENFRgojZGVmaW5lIEdMX0RFUFRIX0FUVEFDSE1FTlQgMHg4RDAwCiNkZWZpbmUg
R0xfU1RFTkNJTF9BVFRBQ0hNRU5UIDB4OEQyMAojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSIDB4OEQ0
MAojZGVmaW5lIEdMX1JFTkRFUkJVRkZFUiAweDhENDEKI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJf
V0lEVEggMHg4RDQyCiNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0hFSUdIVCAweDhENDMKI2RlZmlu
ZSBHTF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUIDB4OEQ0NAojZGVmaW5lIEdMX1NURU5D
SUxfSU5ERVgxIDB4OEQ0NgojZGVmaW5lIEdMX1NURU5DSUxfSU5ERVg0IDB4OEQ0NwojZGVmaW5l
IEdMX1NURU5DSUxfSU5ERVg4IDB4OEQ0OAojZGVmaW5lIEdMX1NURU5DSUxfSU5ERVgxNiAweDhE
NDkKI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfUkVEX1NJWkUgMHg4RDUwCiNkZWZpbmUgR0xfUkVO
REVSQlVGRkVSX0dSRUVOX1NJWkUgMHg4RDUxCiNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0JMVUVf
U0laRSAweDhENTIKI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRSAweDhENTMKI2Rl
ZmluZSBHTF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRSAweDhENTQKI2RlZmluZSBHTF9SRU5ERVJC
VUZGRVJfU1RFTkNJTF9TSVpFIDB4OEQ1NQojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExF
VEVfTVVMVElTQU1QTEUgMHg4RDU2CiNkZWZpbmUgR0xfTUFYX1NBTVBMRVMgMHg4RDU3CgoKCgoj
ZGVmaW5lIEdMX0RFUFRIX1NURU5DSUxfRVhUIDB4ODRGOQojZGVmaW5lIEdMX1VOU0lHTkVEX0lO
VF8yNF84X0VYVCAweDg0RkEKI2RlZmluZSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVCAweDg4RjAK
I2RlZmluZSBHTF9URVhUVVJFX1NURU5DSUxfU0laRV9FWFQgMHg4OEYxCgoKCiNkZWZpbmUgR0xf
R0VPTUVUUllfU0hBREVSX0VYVCAweDhERDkKI2RlZmluZSBHTF9HRU9NRVRSWV9WRVJUSUNFU19P
VVRfRVhUIDB4OEREQQojZGVmaW5lIEdMX0dFT01FVFJZX0lOUFVUX1RZUEVfRVhUIDB4OEREQgoj
ZGVmaW5lIEdMX0dFT01FVFJZX09VVFBVVF9UWVBFX0VYVCAweDhEREMKI2RlZmluZSBHTF9NQVhf
R0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUU19FWFQgMHg4QzI5CiNkZWZpbmUgR0xfTUFYX0dF
T01FVFJZX1ZBUllJTkdfQ09NUE9ORU5UU19FWFQgMHg4RERECiNkZWZpbmUgR0xfTUFYX1ZFUlRF
WF9WQVJZSU5HX0NPTVBPTkVOVFNfRVhUIDB4OERERQojZGVmaW5lIEdMX01BWF9WQVJZSU5HX0NP
TVBPTkVOVFNfRVhUIDB4OEI0QgojZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBP
TkVOVFNfRVhUIDB4OERERgojZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9PVVRQVVRfVkVSVElDRVNf
RVhUIDB4OERFMAojZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5U
U19FWFQgMHg4REUxCiNkZWZpbmUgR0xfTElORVNfQURKQUNFTkNZX0VYVCAweEEKI2RlZmluZSBH
TF9MSU5FX1NUUklQX0FESkFDRU5DWV9FWFQgMHhCCiNkZWZpbmUgR0xfVFJJQU5HTEVTX0FESkFD
RU5DWV9FWFQgMHhDCiNkZWZpbmUgR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZX0VYVCAweEQK
I2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0xBWUVSX1RBUkdFVFNfRVhUIDB4OERB
OAojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTEFZRVJfQ09VTlRfRVhUIDB4OERB
OQojZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfTEFZRVJFRF9FWFQgMHg4REE3CiNk
ZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xBWUVSX0VYVCAweDhDRDQK
I2RlZmluZSBHTF9QUk9HUkFNX1BPSU5UX1NJWkVfRVhUIDB4ODY0MgoKCgojZGVmaW5lIEdMX1RS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfRVhUIDB4OEM4RQojZGVmaW5lIEdMX1RSQU5TRk9STV9G
RUVEQkFDS19CVUZGRVJfU1RBUlRfRVhUIDB4OEM4NAojZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVJfU0laRV9FWFQgMHg4Qzg1CiNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUl9CSU5ESU5HX0VYVCAweDhDOEYKI2RlZmluZSBHTF9JTlRFUkxFQVZFRF9BVFRSSUJT
X0VYVCAweDhDOEMKI2RlZmluZSBHTF9TRVBBUkFURV9BVFRSSUJTX0VYVCAweDhDOEQKI2RlZmlu
ZSBHTF9QUklNSVRJVkVTX0dFTkVSQVRFRF9FWFQgMHg4Qzg3CiNkZWZpbmUgR0xfVFJBTlNGT1JN
X0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTl9FWFQgMHg4Qzg4CiNkZWZpbmUgR0xfUkFTVEVS
SVpFUl9ESVNDQVJEX0VYVCAweDhDODkKI2RlZmluZSBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNL
X0lOVEVSTEVBVkVEX0NPTVBPTkVOVFNfRVhUIDB4OEM4QQojZGVmaW5lIEdMX01BWF9UUkFOU0ZP
Uk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCU19FWFQgMHg4QzhCCiNkZWZpbmUgR0xfTUFYX1RS
QU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTX0VYVCAweDhDODAKI2RlZmluZSBH
TF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1NfRVhUIDB4OEM4MwojZGVmaW5lIEdMX1RSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERV9FWFQgMHg4QzdGCiNkZWZpbmUgR0xfVFJBTlNGT1JN
X0ZFRURCQUNLX1ZBUllJTkdfTUFYX0xFTkdUSF9FWFQgMHg4Qzc2CgoKCiNkZWZpbmUgR0xfTUFY
X1ZFUlRFWF9CSU5EQUJMRV9VTklGT1JNU19FWFQgMHg4REUyCiNkZWZpbmUgR0xfTUFYX0ZSQUdN
RU5UX0JJTkRBQkxFX1VOSUZPUk1TX0VYVCAweDhERTMKI2RlZmluZSBHTF9NQVhfR0VPTUVUUllf
QklOREFCTEVfVU5JRk9STVNfRVhUIDB4OERFNAojZGVmaW5lIEdMX01BWF9CSU5EQUJMRV9VTklG
T1JNX1NJWkVfRVhUIDB4OERFRAojZGVmaW5lIEdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdfRVhU
IDB4OERFRgojZGVmaW5lIEdMX1VOSUZPUk1fQlVGRkVSX0VYVCAweDhERUUKCgoKI2RlZmluZSBH
TF9SR0JBX0lOVEVHRVJfTU9ERV9FWFQgMHg4RDlFCiNkZWZpbmUgR0xfUkdCQTMyVUlfRVhUIDB4
OEQ3MAojZGVmaW5lIEdMX1JHQjMyVUlfRVhUIDB4OEQ3MQojZGVmaW5lIEdMX0FMUEhBMzJVSV9F
WFQgMHg4RDcyCiNkZWZpbmUgR0xfSU5URU5TSVRZMzJVSV9FWFQgMHg4RDczCiNkZWZpbmUgR0xf
TFVNSU5BTkNFMzJVSV9FWFQgMHg4RDc0CiNkZWZpbmUgR0xfTFVNSU5BTkNFX0FMUEhBMzJVSV9F
WFQgMHg4RDc1CiNkZWZpbmUgR0xfUkdCQTE2VUlfRVhUIDB4OEQ3NgojZGVmaW5lIEdMX1JHQjE2
VUlfRVhUIDB4OEQ3NwojZGVmaW5lIEdMX0FMUEhBMTZVSV9FWFQgMHg4RDc4CiNkZWZpbmUgR0xf
SU5URU5TSVRZMTZVSV9FWFQgMHg4RDc5CiNkZWZpbmUgR0xfTFVNSU5BTkNFMTZVSV9FWFQgMHg4
RDdBCiNkZWZpbmUgR0xfTFVNSU5BTkNFX0FMUEhBMTZVSV9FWFQgMHg4RDdCCiNkZWZpbmUgR0xf
UkdCQThVSV9FWFQgMHg4RDdDCiNkZWZpbmUgR0xfUkdCOFVJX0VYVCAweDhEN0QKI2RlZmluZSBH
TF9BTFBIQThVSV9FWFQgMHg4RDdFCiNkZWZpbmUgR0xfSU5URU5TSVRZOFVJX0VYVCAweDhEN0YK
I2RlZmluZSBHTF9MVU1JTkFOQ0U4VUlfRVhUIDB4OEQ4MAojZGVmaW5lIEdMX0xVTUlOQU5DRV9B
TFBIQThVSV9FWFQgMHg4RDgxCiNkZWZpbmUgR0xfUkdCQTMySV9FWFQgMHg4RDgyCiNkZWZpbmUg
R0xfUkdCMzJJX0VYVCAweDhEODMKI2RlZmluZSBHTF9BTFBIQTMySV9FWFQgMHg4RDg0CiNkZWZp
bmUgR0xfSU5URU5TSVRZMzJJX0VYVCAweDhEODUKI2RlZmluZSBHTF9MVU1JTkFOQ0UzMklfRVhU
IDB4OEQ4NgojZGVmaW5lIEdMX0xVTUlOQU5DRV9BTFBIQTMySV9FWFQgMHg4RDg3CiNkZWZpbmUg
R0xfUkdCQTE2SV9FWFQgMHg4RDg4CiNkZWZpbmUgR0xfUkdCMTZJX0VYVCAweDhEODkKI2RlZmlu
ZSBHTF9BTFBIQTE2SV9FWFQgMHg4RDhBCiNkZWZpbmUgR0xfSU5URU5TSVRZMTZJX0VYVCAweDhE
OEIKI2RlZmluZSBHTF9MVU1JTkFOQ0UxNklfRVhUIDB4OEQ4QwojZGVmaW5lIEdMX0xVTUlOQU5D
RV9BTFBIQTE2SV9FWFQgMHg4RDhECiNkZWZpbmUgR0xfUkdCQThJX0VYVCAweDhEOEUKI2RlZmlu
ZSBHTF9SR0I4SV9FWFQgMHg4RDhGCiNkZWZpbmUgR0xfQUxQSEE4SV9FWFQgMHg4RDkwCiNkZWZp
bmUgR0xfSU5URU5TSVRZOElfRVhUIDB4OEQ5MQojZGVmaW5lIEdMX0xVTUlOQU5DRThJX0VYVCAw
eDhEOTIKI2RlZmluZSBHTF9MVU1JTkFOQ0VfQUxQSEE4SV9FWFQgMHg4RDkzCiNkZWZpbmUgR0xf
UkVEX0lOVEVHRVJfRVhUIDB4OEQ5NAojZGVmaW5lIEdMX0dSRUVOX0lOVEVHRVJfRVhUIDB4OEQ5
NQojZGVmaW5lIEdMX0JMVUVfSU5URUdFUl9FWFQgMHg4RDk2CiNkZWZpbmUgR0xfQUxQSEFfSU5U
RUdFUl9FWFQgMHg4RDk3CiNkZWZpbmUgR0xfUkdCX0lOVEVHRVJfRVhUIDB4OEQ5OAojZGVmaW5l
IEdMX1JHQkFfSU5URUdFUl9FWFQgMHg4RDk5CiNkZWZpbmUgR0xfQkdSX0lOVEVHRVJfRVhUIDB4
OEQ5QQojZGVmaW5lIEdMX0JHUkFfSU5URUdFUl9FWFQgMHg4RDlCCiNkZWZpbmUgR0xfTFVNSU5B
TkNFX0lOVEVHRVJfRVhUIDB4OEQ5QwojZGVmaW5lIEdMX0xVTUlOQU5DRV9BTFBIQV9JTlRFR0VS
X0VYVCAweDhEOUQKCgoKI2RlZmluZSBHTF9URVhUVVJFXzFEX0FSUkFZX0VYVCAweDhDMTgKI2Rl
ZmluZSBHTF9QUk9YWV9URVhUVVJFXzFEX0FSUkFZX0VYVCAweDhDMTkKI2RlZmluZSBHTF9URVhU
VVJFXzJEX0FSUkFZX0VYVCAweDhDMUEKI2RlZmluZSBHTF9QUk9YWV9URVhUVVJFXzJEX0FSUkFZ
X0VYVCAweDhDMUIKI2RlZmluZSBHTF9URVhUVVJFX0JJTkRJTkdfMURfQVJSQVlfRVhUIDB4OEMx
QwojZGVmaW5lIEdMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWV9FWFQgMHg4QzFECiNkZWZpbmUg
R0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTX0VYVCAweDg4RkYKI2RlZmluZSBHTF9DT01QQVJF
X1JFRl9ERVBUSF9UT19URVhUVVJFX0VYVCAweDg4NEUKIyAxOTAwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwojZGVmaW5lIEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUl9FWFQgMHg4OEZECiNkZWZpbmUgR0xfU0FNUExF
Ul8xRF9BUlJBWV9FWFQgMHg4REMwCiNkZWZpbmUgR0xfU0FNUExFUl8yRF9BUlJBWV9FWFQgMHg4
REMxCiNkZWZpbmUgR0xfU0FNUExFUl9CVUZGRVJfRVhUIDB4OERDMgojZGVmaW5lIEdMX1NBTVBM
RVJfMURfQVJSQVlfU0hBRE9XX0VYVCAweDhEQzMKI2RlZmluZSBHTF9TQU1QTEVSXzJEX0FSUkFZ
X1NIQURPV19FWFQgMHg4REM0CiNkZWZpbmUgR0xfU0FNUExFUl9DVUJFX1NIQURPV19FWFQgMHg4
REM1CiNkZWZpbmUgR0xfVU5TSUdORURfSU5UX1ZFQzJfRVhUIDB4OERDNgojZGVmaW5lIEdMX1VO
U0lHTkVEX0lOVF9WRUMzX0VYVCAweDhEQzcKI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfVkVDNF9F
WFQgMHg4REM4CiNkZWZpbmUgR0xfSU5UX1NBTVBMRVJfMURfRVhUIDB4OERDOQojZGVmaW5lIEdM
X0lOVF9TQU1QTEVSXzJEX0VYVCAweDhEQ0EKI2RlZmluZSBHTF9JTlRfU0FNUExFUl8zRF9FWFQg
MHg4RENCCiNkZWZpbmUgR0xfSU5UX1NBTVBMRVJfQ1VCRV9FWFQgMHg4RENDCiNkZWZpbmUgR0xf
SU5UX1NBTVBMRVJfMkRfUkVDVF9FWFQgMHg4RENECiNkZWZpbmUgR0xfSU5UX1NBTVBMRVJfMURf
QVJSQVlfRVhUIDB4OERDRQojZGVmaW5lIEdMX0lOVF9TQU1QTEVSXzJEX0FSUkFZX0VYVCAweDhE
Q0YKI2RlZmluZSBHTF9JTlRfU0FNUExFUl9CVUZGRVJfRVhUIDB4OEREMAojZGVmaW5lIEdMX1VO
U0lHTkVEX0lOVF9TQU1QTEVSXzFEX0VYVCAweDhERDEKI2RlZmluZSBHTF9VTlNJR05FRF9JTlRf
U0FNUExFUl8yRF9FWFQgMHg4REQyCiNkZWZpbmUgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfM0Rf
RVhUIDB4OEREMwojZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkVfRVhUIDB4OERE
NAojZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEX1JFQ1RfRVhUIDB4OERENQojZGVm
aW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzFEX0FSUkFZX0VYVCAweDhERDYKI2RlZmluZSBH
TF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWV9FWFQgMHg4REQ3CiNkZWZpbmUgR0xfVU5T
SUdORURfSU5UX1NBTVBMRVJfQlVGRkVSX0VYVCAweDhERDgKI2RlZmluZSBHTF9NSU5fUFJPR1JB
TV9URVhFTF9PRkZTRVRfRVhUIDB4ODkwNAojZGVmaW5lIEdMX01BWF9QUk9HUkFNX1RFWEVMX09G
RlNFVF9FWFQgMHg4OTA1CgoKCiNkZWZpbmUgR0xfRklSU1RfVkVSVEVYX0NPTlZFTlRJT05fRVhU
IDB4OEU0RAojZGVmaW5lIEdMX0xBU1RfVkVSVEVYX0NPTlZFTlRJT05fRVhUIDB4OEU0RQojZGVm
aW5lIEdMX1BST1ZPS0lOR19WRVJURVhfRVhUIDB4OEU0RgojZGVmaW5lIEdMX1FVQURTX0ZPTExP
V19QUk9WT0tJTkdfVkVSVEVYX0NPTlZFTlRJT05fRVhUIDB4OEU0QwoKCgojZGVmaW5lIEdMX0JH
UkEgMHg4MEUxCgoKCiNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQgMHg4REI5CiNkZWZp
bmUgR0xfRlJBTUVCVUZGRVJfU1JHQl9DQVBBQkxFX0VYVCAweDhEQkEKCgoKI2RlZmluZSBHTF9S
MTFGX0cxMUZfQjEwRl9FWFQgMHg4QzNBCiNkZWZpbmUgR0xfVU5TSUdORURfSU5UXzEwRl8xMUZf
MTFGX1JFVl9FWFQgMHg4QzNCCiNkZWZpbmUgR0xfUkdCQV9TSUdORURfQ09NUE9ORU5UU19FWFQg
MHg4QzNDCgoKCiNkZWZpbmUgR0xfUkdCOV9FNV9FWFQgMHg4QzNECiNkZWZpbmUgR0xfVU5TSUdO
RURfSU5UXzVfOV85XzlfUkVWX0VYVCAweDhDM0UKI2RlZmluZSBHTF9URVhUVVJFX1NIQVJFRF9T
SVpFX0VYVCAweDhDM0YKCgoKI2RlZmluZSBHTF9WRVJURVhfQVJSQVlfUkFOR0VfQVBQTEUgMHg4
NTFECiNkZWZpbmUgR0xfVkVSVEVYX0FSUkFZX1JBTkdFX0xFTkdUSF9BUFBMRSAweDg1MUUKI2Rl
ZmluZSBHTF9NQVhfVkVSVEVYX0FSUkFZX1JBTkdFX0VMRU1FTlRfQVBQTEUgMHg4NTIwCiNkZWZp
bmUgR0xfVkVSVEVYX0FSUkFZX1JBTkdFX1BPSU5URVJfQVBQTEUgMHg4NTIxCiNkZWZpbmUgR0xf
VkVSVEVYX0FSUkFZX1NUT1JBR0VfSElOVF9BUFBMRSAweDg1MUYKI2RlZmluZSBHTF9TVE9SQUdF
X0NMSUVOVF9BUFBMRSAweDg1QjQKI2RlZmluZSBHTF9TVE9SQUdFX1BSSVZBVEVfQVBQTEUgMHg4
NUJECiNkZWZpbmUgR0xfU1RPUkFHRV9DQUNIRURfQVBQTEUgMHg4NUJFCiNkZWZpbmUgR0xfU1RP
UkFHRV9TSEFSRURfQVBQTEUgMHg4NUJGCgoKCiNkZWZpbmUgR0xfVkVSVEVYX0FSUkFZX0JJTkRJ
TkdfQVBQTEUgMHg4NUI1CgoKCiNkZWZpbmUgR0xfRUxFTUVOVF9BUlJBWV9BUFBMRSAweDhBMEMK
I2RlZmluZSBHTF9FTEVNRU5UX0FSUkFZX1RZUEVfQVBQTEUgMHg4QTBECiNkZWZpbmUgR0xfRUxF
TUVOVF9BUlJBWV9QT0lOVEVSX0FQUExFIDB4OEEwRQoKCgojZGVmaW5lIEdMX0RSQVdfUElYRUxT
X0FQUExFIDB4OEEwQQojZGVmaW5lIEdMX0ZFTkNFX0FQUExFIDB4OEEwQgojZGVmaW5lIEdMX0JV
RkZFUl9PQkpFQ1RfQVBQTEUgMHg4NUIzCgoKCiNkZWZpbmUgR0xfTElHSFRfTU9ERUxfU1BFQ1VM
QVJfVkVDVE9SX0FQUExFIDB4ODVCMAoKCgojZGVmaW5lIEdMX1RSQU5TRk9STV9ISU5UX0FQUExF
IDB4ODVCMQoKCgojZGVmaW5lIEdMX1VOUEFDS19DTElFTlRfU1RPUkFHRV9BUFBMRSAweDg1QjIK
CgoKI2RlZmluZSBHTF9ZQ0JDUl80MjJfQVBQTEUgMHg4NUI5CgoKCiNkZWZpbmUgR0xfUkdCXzQy
Ml9BUFBMRSAweDhBMUYKCgoKI2RlZmluZSBHTF9VTlNJR05FRF9TSE9SVF84XzhfQVBQTEUgMHg4
NUJBCiNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfOF84X1JFVl9BUFBMRSAweDg1QkIKCgoKI2Rl
ZmluZSBHTF9URVhUVVJFX1JBTkdFX0xFTkdUSF9BUFBMRSAweDg1QjcKI2RlZmluZSBHTF9URVhU
VVJFX1JBTkdFX1BPSU5URVJfQVBQTEUgMHg4NUI4CiNkZWZpbmUgR0xfVEVYVFVSRV9TVE9SQUdF
X0hJTlRfQVBQTEUgMHg4NUJDCiNkZWZpbmUgR0xfVEVYVFVSRV9NSU5JTUlaRV9TVE9SQUdFX0FQ
UExFIDB4ODVCNgojZGVmaW5lIEdMX1NUT1JBR0VfUFJJVkFURV9BUFBMRSAweDg1QkQKI2RlZmlu
ZSBHTF9TVE9SQUdFX0NBQ0hFRF9BUFBMRSAweDg1QkUKI2RlZmluZSBHTF9TVE9SQUdFX1NIQVJF
RF9BUFBMRSAweDg1QkYKCgoKI2RlZmluZSBHTF9IQUxGX0FQUExFIDB4MTQwQgojZGVmaW5lIEdM
X0NPTE9SX0ZMT0FUX0FQUExFIDB4OEEwRgojZGVmaW5lIEdMX1JHQkFfRkxPQVQzMl9BUFBMRSAw
eDg4MTQKI2RlZmluZSBHTF9SR0JfRkxPQVQzMl9BUFBMRSAweDg4MTUKI2RlZmluZSBHTF9BTFBI
QV9GTE9BVDMyX0FQUExFIDB4ODgxNgojZGVmaW5lIEdMX0lOVEVOU0lUWV9GTE9BVDMyX0FQUExF
IDB4ODgxNwojZGVmaW5lIEdMX0xVTUlOQU5DRV9GTE9BVDMyX0FQUExFIDB4ODgxOAojZGVmaW5l
IEdMX0xVTUlOQU5DRV9BTFBIQV9GTE9BVDMyX0FQUExFIDB4ODgxOQojZGVmaW5lIEdMX1JHQkFf
RkxPQVQxNl9BUFBMRSAweDg4MUEKI2RlZmluZSBHTF9SR0JfRkxPQVQxNl9BUFBMRSAweDg4MUIK
I2RlZmluZSBHTF9BTFBIQV9GTE9BVDE2X0FQUExFIDB4ODgxQwojZGVmaW5lIEdMX0lOVEVOU0lU
WV9GTE9BVDE2X0FQUExFIDB4ODgxRAojZGVmaW5lIEdMX0xVTUlOQU5DRV9GTE9BVDE2X0FQUExF
IDB4ODgxRQojZGVmaW5lIEdMX0xVTUlOQU5DRV9BTFBIQV9GTE9BVDE2X0FQUExFIDB4ODgxRgoK
CgojZGVmaW5lIEdMX01JTl9QQlVGRkVSX1ZJRVdQT1JUX0RJTVNfQVBQTEUgMHg4QTEwCgoKCiNk
ZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9NQVAxX0FQUExFIDB4OEEwMAojZGVmaW5lIEdMX1ZFUlRF
WF9BVFRSSUJfTUFQMl9BUFBMRSAweDhBMDEKI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX01BUDFf
U0laRV9BUFBMRSAweDhBMDIKI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX01BUDFfQ09FRkZfQVBQ
TEUgMHg4QTAzCiNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9NQVAxX09SREVSX0FQUExFIDB4OEEw
NAojZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfTUFQMV9ET01BSU5fQVBQTEUgMHg4QTA1CiNkZWZp
bmUgR0xfVkVSVEVYX0FUVFJJQl9NQVAyX1NJWkVfQVBQTEUgMHg4QTA2CiNkZWZpbmUgR0xfVkVS
VEVYX0FUVFJJQl9NQVAyX0NPRUZGX0FQUExFIDB4OEEwNwojZGVmaW5lIEdMX1ZFUlRFWF9BVFRS
SUJfTUFQMl9PUkRFUl9BUFBMRSAweDhBMDgKI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX01BUDJf
RE9NQUlOX0FQUExFIDB4OEEwOQoKCgojZGVmaW5lIEdMX0JVRkZFUl9TRVJJQUxJWkVEX01PRElG
WV9BUFBMRSAweDhBMTIKI2RlZmluZSBHTF9CVUZGRVJfRkxVU0hJTkdfVU5NQVBfQVBQTEUgMHg4
QTEzCgoKCiNkZWZpbmUgR0xfQVVYX0RFUFRIX1NURU5DSUxfQVBQTEUgMHg4QTE0CgoKCiNkZWZp
bmUgR0xfUEFDS19ST1dfQllURVNfQVBQTEUgMHg4QTE1CiNkZWZpbmUgR0xfVU5QQUNLX1JPV19C
WVRFU19BUFBMRSAweDhBMTYKI2RlZmluZSBHTF9QQUNLX0lNQUdFX0JZVEVTX0FQUExFIDB4OEEx
NwojZGVmaW5lIEdMX1VOUEFDS19JTUFHRV9CWVRFU19BUFBMRSAweDhBMTgKCgoKI2RlZmluZSBH
TF9SRUxFQVNFRF9BUFBMRSAweDhBMTkKI2RlZmluZSBHTF9WT0xBVElMRV9BUFBMRSAweDhBMUEK
I2RlZmluZSBHTF9SRVRBSU5FRF9BUFBMRSAweDhBMUIKI2RlZmluZSBHTF9VTkRFRklORURfQVBQ
TEUgMHg4QTFDCiNkZWZpbmUgR0xfUFVSR0VBQkxFX0FQUExFIDB4OEExRAojIDIwOTAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAz
CiNkZWZpbmUgR0xfTUlOX1dFSUdIVEVEX0FUSSAweDg3N0QKI2RlZmluZSBHTF9NQVhfV0VJR0hU
RURfQVRJIDB4ODc3RQoKCgojZGVmaW5lIEdMX01PRFVMQVRFX0FERF9BVEkgMHg4NzQ0CiNkZWZp
bmUgR0xfTU9EVUxBVEVfU0lHTkVEX0FERF9BVEkgMHg4NzQ1CiNkZWZpbmUgR0xfTU9EVUxBVEVf
U1VCVFJBQ1RfQVRJIDB4ODc0NgoKCgojZGVmaW5lIEdMX1NURU5DSUxfQkFDS19GVU5DX0FUSSAw
eDg4MDAKI2RlZmluZSBHTF9TVEVOQ0lMX0JBQ0tfRkFJTF9BVEkgMHg4ODAxCiNkZWZpbmUgR0xf
U1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTF9BVEkgMHg4ODAyCiNkZWZpbmUgR0xfU1RFTkNJ
TF9CQUNLX1BBU1NfREVQVEhfUEFTU19BVEkgMHg4ODAzCgoKCgoKCgojZGVmaW5lIEdMX01JUlJP
Ul9DTEFNUF9BVEkgMHg4NzQyCiNkZWZpbmUgR0xfTUlSUk9SX0NMQU1QX1RPX0VER0VfQVRJIDB4
ODc0MwoKCgojZGVmaW5lIEdMX1BOX1RSSUFOR0xFU19BVEkgMHg2MDkwCiNkZWZpbmUgR0xfTUFY
X1BOX1RSSUFOR0xFU19URVNTRUxBVElPTl9MRVZFTF9BVEkgMHg2MDkxCiNkZWZpbmUgR0xfUE5f
VFJJQU5HTEVTX1BPSU5UX01PREVfQVRJIDB4NjA5MgojZGVmaW5lIEdMX1BOX1RSSUFOR0xFU19O
T1JNQUxfTU9ERV9BVEkgMHg2MDkzCiNkZWZpbmUgR0xfUE5fVFJJQU5HTEVTX1RFU1NFTEFUSU9O
X0xFVkVMX0FUSSAweDYwOTQKI2RlZmluZSBHTF9QTl9UUklBTkdMRVNfUE9JTlRfTU9ERV9MSU5F
QVJfQVRJIDB4NjA5NQojZGVmaW5lIEdMX1BOX1RSSUFOR0xFU19QT0lOVF9NT0RFX0NVQklDX0FU
SSAweDYwOTYKI2RlZmluZSBHTF9QTl9UUklBTkdMRVNfTk9STUFMX01PREVfTElORUFSX0FUSSAw
eDYwOTcKI2RlZmluZSBHTF9QTl9UUklBTkdMRVNfTk9STUFMX01PREVfUVVBRFJBVElDX0FUSSAw
eDYwOTgKCgoKCgoKCiNkZWZpbmUgR0xfQUxQSEFfQkxFTkRfRVFVQVRJT05fQVRJIDB4ODgzRAoK
CgojZGVmaW5lIEdMX1BPSU5UX0NVTExfTU9ERV9BVEkgMHg2MEIzCiNkZWZpbmUgR0xfUE9JTlRf
Q1VMTF9DRU5URVJfQVRJIDB4NjBCNAojZGVmaW5lIEdMX1BPSU5UX0NVTExfQ0xJUF9BVEkgMHg2
MEI1CgoKCiNkZWZpbmUgR0xfUE5fVFJJQU5HTEVTX0FUSVggMHg2MDkwCiNkZWZpbmUgR0xfTUFY
X1BOX1RSSUFOR0xFU19URVNTRUxBVElPTl9MRVZFTF9BVElYIDB4NjA5MQojZGVmaW5lIEdMX1BO
X1RSSUFOR0xFU19QT0lOVF9NT0RFX0FUSVggMHg2MDkyCiNkZWZpbmUgR0xfUE5fVFJJQU5HTEVT
X05PUk1BTF9NT0RFX0FUSVggMHg2MDkzCiNkZWZpbmUgR0xfUE5fVFJJQU5HTEVTX1RFU1NFTEFU
SU9OX0xFVkVMX0FUSVggMHg2MDk0CiNkZWZpbmUgR0xfUE5fVFJJQU5HTEVTX1BPSU5UX01PREVf
TElORUFSX0FUSVggMHg2MDk1CiNkZWZpbmUgR0xfUE5fVFJJQU5HTEVTX1BPSU5UX01PREVfQ1VC
SUNfQVRJWCAweDYwOTYKI2RlZmluZSBHTF9QTl9UUklBTkdMRVNfTk9STUFMX01PREVfTElORUFS
X0FUSVggMHg2MDk3CiNkZWZpbmUgR0xfUE5fVFJJQU5HTEVTX05PUk1BTF9NT0RFX1FVQURSQVRJ
Q19BVElYIDB4NjA5OAoKCgojZGVmaW5lIEdMX0NPTVBSRVNTRURfTFVNSU5BTkNFX0FMUEhBXzNE
Q19BVEkgMHg4ODM3CgoKCiNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SRURfUkdUQzEgMHg4REJCCiNk
ZWZpbmUgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxIDB4OERCQwojZGVmaW5lIEdMX0NP
TVBSRVNTRURfUkdfUkdUQzIgMHg4REJECiNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TSUdORURfUkdf
UkdUQzIgMHg4REJFCgoKCiNkZWZpbmUgR0xfUkdCQV9GTE9BVDMyX0FUSSAweDg4MTQKI2RlZmlu
ZSBHTF9SR0JfRkxPQVQzMl9BVEkgMHg4ODE1CiNkZWZpbmUgR0xfQUxQSEFfRkxPQVQzMl9BVEkg
MHg4ODE2CiNkZWZpbmUgR0xfSU5URU5TSVRZX0ZMT0FUMzJfQVRJIDB4ODgxNwojZGVmaW5lIEdM
X0xVTUlOQU5DRV9GTE9BVDMyX0FUSSAweDg4MTgKI2RlZmluZSBHTF9MVU1JTkFOQ0VfQUxQSEFf
RkxPQVQzMl9BVEkgMHg4ODE5CiNkZWZpbmUgR0xfUkdCQV9GTE9BVDE2X0FUSSAweDg4MUEKI2Rl
ZmluZSBHTF9SR0JfRkxPQVQxNl9BVEkgMHg4ODFCCiNkZWZpbmUgR0xfQUxQSEFfRkxPQVQxNl9B
VEkgMHg4ODFDCiNkZWZpbmUgR0xfSU5URU5TSVRZX0ZMT0FUMTZfQVRJIDB4ODgxRAojZGVmaW5l
IEdMX0xVTUlOQU5DRV9GTE9BVDE2X0FUSSAweDg4MUUKI2RlZmluZSBHTF9MVU1JTkFOQ0VfQUxQ
SEFfRkxPQVQxNl9BVEkgMHg4ODFGCiMgMjIxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
T3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKI2RlZmluZSBHTF9SQVNURVJfUE9T
SVRJT05fVU5DTElQUEVEX0lCTSAweDE5MjYyCiMgMjI3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKI2RlZmluZSBHTF9OT1JN
QUxfTUFQX05WIDB4ODUxMQojZGVmaW5lIEdMX1JFRkxFQ1RJT05fTUFQX05WIDB4ODUxMgoKCgoj
ZGVmaW5lIEdMX01BWF9TSElOSU5FU1NfTlYgMHg4NTA0CiNkZWZpbmUgR0xfTUFYX1NQT1RfRVhQ
T05FTlRfTlYgMHg4NTA1CiMgMjM1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdM
LmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKI2RlZmluZSBHTF9GT0dfRElTVEFOQ0VfTU9E
RV9OViAweDg1NUEKI2RlZmluZSBHTF9FWUVfUkFESUFMX05WIDB4ODU1QgojZGVmaW5lIEdMX0VZ
RV9QTEFORV9BQlNPTFVURV9OViAweDg1NUMKIyAyNTU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwojZGVmaW5lIEdMX1BPSU5U
X1NQUklURV9OViAweDg4NjEKI2RlZmluZSBHTF9DT09SRF9SRVBMQUNFX05WIDB4ODg2MgojZGVm
aW5lIEdMX1BPSU5UX1NQUklURV9SX01PREVfTlYgMHg4ODYzCgoKCiNkZWZpbmUgR0xfREVQVEhf
Q0xBTVBfTlYgMHg4NjRGCgoKCiNkZWZpbmUgR0xfTVVMVElTQU1QTEVfRklMVEVSX0hJTlRfTlYg
MHg4NTM0CgoKCiNkZWZpbmUgR0xfTUFYX1NISU5JTkVTU19OViAweDg1MDQKI2RlZmluZSBHTF9N
QVhfU1BPVF9FWFBPTkVOVF9OViAweDg1MDUKCgoKI2RlZmluZSBHTF9NQVhfUFJPR1JBTV9FWEVD
X0lOU1RSVUNUSU9OU19OViAweDg4RjQKI2RlZmluZSBHTF9NQVhfUFJPR1JBTV9DQUxMX0RFUFRI
X05WIDB4ODhGNQoKCgojZGVmaW5lIEdMX01BWF9QUk9HUkFNX0lGX0RFUFRIX05WIDB4ODhGNgoj
ZGVmaW5lIEdMX01BWF9QUk9HUkFNX0xPT1BfREVQVEhfTlYgMHg4OEY3CiNkZWZpbmUgR0xfTUFY
X1BST0dSQU1fTE9PUF9DT1VOVF9OViAweDg4RjgKCgoKI2RlZmluZSBHTF9RVUVSWV9XQUlUX05W
IDB4OEUxMwojZGVmaW5lIEdMX1FVRVJZX05PX1dBSVRfTlYgMHg4RTE0CiNkZWZpbmUgR0xfUVVF
UllfQllfUkVHSU9OX1dBSVRfTlYgMHg4RTE1CiNkZWZpbmUgR0xfUVVFUllfQllfUkVHSU9OX05P
X1dBSVRfTlYgMHg4RTE2CiMgMjY0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdM
LmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKI2RlZmluZSBHTF9DT0xPUl9NQVRSSVhfU0dJ
IDB4ODBCMQojZGVmaW5lIEdMX0NPTE9SX01BVFJJWF9TVEFDS19ERVBUSF9TR0kgMHg4MEIyCiNk
ZWZpbmUgR0xfTUFYX0NPTE9SX01BVFJJWF9TVEFDS19ERVBUSF9TR0kgMHg4MEIzCiNkZWZpbmUg
R0xfUE9TVF9DT0xPUl9NQVRSSVhfUkVEX1NDQUxFX1NHSSAweDgwQjQKI2RlZmluZSBHTF9QT1NU
X0NPTE9SX01BVFJJWF9HUkVFTl9TQ0FMRV9TR0kgMHg4MEI1CiNkZWZpbmUgR0xfUE9TVF9DT0xP
Ul9NQVRSSVhfQkxVRV9TQ0FMRV9TR0kgMHg4MEI2CiNkZWZpbmUgR0xfUE9TVF9DT0xPUl9NQVRS
SVhfQUxQSEFfU0NBTEVfU0dJIDB4ODBCNwojZGVmaW5lIEdMX1BPU1RfQ09MT1JfTUFUUklYX1JF
RF9CSUFTX1NHSSAweDgwQjgKI2RlZmluZSBHTF9QT1NUX0NPTE9SX01BVFJJWF9HUkVFTl9CSUFT
X1NHSSAweDgwQjkKI2RlZmluZSBHTF9QT1NUX0NPTE9SX01BVFJJWF9CTFVFX0JJQVNfU0dJIDB4
ODBCQQojZGVmaW5lIEdMX1BPU1RfQ09MT1JfTUFUUklYX0FMUEhBX0JJQVNfU0dJIDB4ODBCQgoj
IDI3MzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVy
cy9nbGV4dC5oIiAzCiNkZWZpbmUgR0xfVEVYVFVSRV9NSU5fTE9EX1NHSVMgMHg4MTNBCiNkZWZp
bmUgR0xfVEVYVFVSRV9NQVhfTE9EX1NHSVMgMHg4MTNCCiNkZWZpbmUgR0xfVEVYVFVSRV9CQVNF
X0xFVkVMX1NHSVMgMHg4MTNDCiNkZWZpbmUgR0xfVEVYVFVSRV9NQVhfTEVWRUxfU0dJUyAweDgx
M0QKIyAyNzYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hl
YWRlcnMvZ2xleHQuaCIgMwojZGVmaW5lIEdMX0dFTkVSQVRFX01JUE1BUF9TR0lTIDB4ODE5MQoj
ZGVmaW5lIEdMX0dFTkVSQVRFX01JUE1BUF9ISU5UX1NHSVMgMHg4MTkyCgoKCiNkZWZpbmUgR0xf
Q0xBTVBfVE9fRURHRV9TR0lTIDB4ODEyRgojIDMxMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsQWN0
aXZlVGV4dHVyZUFSQiAoR0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xDbGllbnRBY3RpdmVUZXh0dXJl
QVJCIChHTGVudW0pOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxZEFSQiAoR0xlbnVtLCBH
TGRvdWJsZSk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFkdkFSQiAoR0xlbnVtLCBjb25z
dCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMWZBUkIgKEdMZW51bSwg
R0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFmdkFSQiAoR0xlbnVtLCBjb25z
dCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxaUFSQiAoR0xlbnVtLCBH
TGludCk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFpdkFSQiAoR0xlbnVtLCBjb25zdCBH
TGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMXNBUkIgKEdMZW51bSwgR0xzaG9y
dCk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFzdkFSQiAoR0xlbnVtLCBjb25zdCBHTHNo
b3J0ICopOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQyZEFSQiAoR0xlbnVtLCBHTGRvdWJs
ZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQyZHZBUkIgKEdMZW51bSwg
Y29uc3QgR0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJmQVJCIChHTGVu
dW0sIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQyZnZBUkIg
KEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMmlB
UkIgKEdMZW51bSwgR0xpbnQsIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMml2
QVJCIChHTGVudW0sIGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQy
c0FSQiAoR0xlbnVtLCBHTHNob3J0LCBHTHNob3J0KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENv
b3JkMnN2QVJCIChHTGVudW0sIGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lkIGdsTXVsdGlU
ZXhDb29yZDNkQVJCIChHTGVudW0sIEdMZG91YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUpOwpleHRl
cm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzZHZBUkIgKEdMZW51bSwgY29uc3QgR0xkb3VibGUgKik7
CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDNmQVJCIChHTGVudW0sIEdMZmxvYXQsIEdMZmxv
YXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzZnZBUkIgKEdMZW51bSwg
Y29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2lBUkIgKEdMZW51
bSwgR0xpbnQsIEdMaW50LCBHTGludCk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDNpdkFS
QiAoR0xlbnVtLCBjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM3NB
UkIgKEdMZW51bSwgR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2b2lkIGdsTXVs
dGlUZXhDb29yZDNzdkFSQiAoR0xlbnVtLCBjb25zdCBHTHNob3J0ICopOwpleHRlcm4gdm9pZCBn
bE11bHRpVGV4Q29vcmQ0ZEFSQiAoR0xlbnVtLCBHTGRvdWJsZSwgR0xkb3VibGUsIEdMZG91Ymxl
LCBHTGRvdWJsZSk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRkdkFSQiAoR0xlbnVtLCBj
b25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkNGZBUkIgKEdMZW51
bSwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsTXVs
dGlUZXhDb29yZDRmdkFSQiAoR0xlbnVtLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBn
bE11bHRpVGV4Q29vcmQ0aUFSQiAoR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7
CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRpdkFSQiAoR0xlbnVtLCBjb25zdCBHTGludCAq
KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkNHNBUkIgKEdMZW51bSwgR0xzaG9ydCwgR0xz
aG9ydCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRzdkFS
QiAoR0xlbnVtLCBjb25zdCBHTHNob3J0ICopOwojIDMxNzggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGds
TG9hZFRyYW5zcG9zZU1hdHJpeGZBUkIgKGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGds
TG9hZFRyYW5zcG9zZU1hdHJpeGRBUkIgKGNvbnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBn
bE11bHRUcmFuc3Bvc2VNYXRyaXhmQVJCIChjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBn
bE11bHRUcmFuc3Bvc2VNYXRyaXhkQVJCIChjb25zdCBHTGRvdWJsZSAqKTsKIyAzMTkwICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIg
MwpleHRlcm4gdm9pZCBnbFNhbXBsZUNvdmVyYWdlQVJCIChHTGNsYW1wZiwgR0xib29sZWFuKTsK
ZXh0ZXJuIHZvaWQgZ2xTYW1wbGVQYXNzQVJCIChHTGVudW0pOwojIDMyMDUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVy
biB2b2lkIGdsQ29tcHJlc3NlZFRleEltYWdlM0RBUkIgKEdMZW51bSwgR0xpbnQsIEdMZW51bSwg
R0xzaXplaSwgR0xzaXplaSwgR0xzaXplaSwgR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCAq
KTsKZXh0ZXJuIHZvaWQgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyREFSQiAoR0xlbnVtLCBHTGludCwg
R0xlbnVtLCBHTHNpemVpLCBHTHNpemVpLCBHTGludCwgR0xzaXplaSwgY29uc3QgR0x2b2lkICop
OwpleHRlcm4gdm9pZCBnbENvbXByZXNzZWRUZXhJbWFnZTFEQVJCIChHTGVudW0sIEdMaW50LCBH
TGVudW0sIEdMc2l6ZWksIEdMaW50LCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2
b2lkIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RBUkIgKEdMZW51bSwgR0xpbnQsIEdMaW50LCBH
TGludCwgR0xpbnQsIEdMc2l6ZWksIEdMc2l6ZWksIEdMc2l6ZWksIEdMZW51bSwgR0xzaXplaSwg
Y29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEQVJC
IChHTGVudW0sIEdMaW50LCBHTGludCwgR0xpbnQsIEdMc2l6ZWksIEdMc2l6ZWksIEdMZW51bSwg
R0xzaXplaSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbENvbXByZXNzZWRUZXhTdWJJ
bWFnZTFEQVJCIChHTGVudW0sIEdMaW50LCBHTGludCwgR0xzaXplaSwgR0xlbnVtLCBHTHNpemVp
LCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsR2V0Q29tcHJlc3NlZFRleEltYWdlQVJC
IChHTGVudW0sIEdMaW50LCBHTHZvaWQgKik7CiMgMzIyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKZXh0ZXJuIHZvaWQgZ2xX
ZWlnaHRidkFSQihHTGludCwgY29uc3QgR0xieXRlICopOwpleHRlcm4gdm9pZCBnbFdlaWdodHN2
QVJCKEdMaW50LCBjb25zdCBHTHNob3J0ICopOwpleHRlcm4gdm9pZCBnbFdlaWdodGl2QVJCKEdM
aW50LCBjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xXZWlnaHRmdkFSQihHTGludCwgY29u
c3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xXZWlnaHRkdkFSQihHTGludCwgY29uc3QgR0xk
b3VibGUgKik7CmV4dGVybiB2b2lkIGdsV2VpZ2h0dWJ2QVJCKEdMaW50LCBjb25zdCBHTHVieXRl
ICopOwpleHRlcm4gdm9pZCBnbFdlaWdodHVzdkFSQihHTGludCwgY29uc3QgR0x1c2hvcnQgKik7
CmV4dGVybiB2b2lkIGdsV2VpZ2h0dWl2QVJCKEdMaW50LCBjb25zdCBHTHVpbnQgKik7CmV4dGVy
biB2b2lkIGdsV2VpZ2h0UG9pbnRlckFSQihHTGludCwgR0xlbnVtLCBHTHNpemVpLCBjb25zdCBH
THZvaWQgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4QmxlbmRBUkIoR0xpbnQpOwojIDMyNjAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5o
IiAzCmV4dGVybiB2b2lkIGdsV2luZG93UG9zMmRBUkIgKEdMZG91YmxlLCBHTGRvdWJsZSk7CmV4
dGVybiB2b2lkIGdsV2luZG93UG9zMmR2QVJCIChjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZv
aWQgZ2xXaW5kb3dQb3MyZkFSQiAoR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsV2lu
ZG93UG9zMmZ2QVJCIChjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJp
QVJCIChHTGludCwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJpdkFSQiAoY29uc3Qg
R0xpbnQgKik7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zMnNBUkIgKEdMc2hvcnQsIEdMc2hvcnQp
OwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJzdkFSQiAoY29uc3QgR0xzaG9ydCAqKTsKZXh0ZXJu
IHZvaWQgZ2xXaW5kb3dQb3MzZEFSQiAoR0xkb3VibGUsIEdMZG91YmxlLCBHTGRvdWJsZSk7CmV4
dGVybiB2b2lkIGdsV2luZG93UG9zM2R2QVJCIChjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZv
aWQgZ2xXaW5kb3dQb3MzZkFSQiAoR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2
b2lkIGdsV2luZG93UG9zM2Z2QVJCIChjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFdp
bmRvd1BvczNpQVJCIChHTGludCwgR0xpbnQsIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQ
b3MzaXZBUkIgKGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNzQVJCIChH
THNob3J0LCBHTHNob3J0LCBHTHNob3J0KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3Mzc3ZBUkIg
KGNvbnN0IEdMc2hvcnQgKik7CiMgMzI5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3Bl
bkdMLmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKZXh0ZXJuIHZvaWQgZ2xHZW5RdWVyaWVz
QVJCKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpOwpleHRlcm4gdm9pZCBnbERlbGV0ZVF1ZXJpZXNB
UkIoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7CmV4dGVybiBHTGJvb2xlYW4gZ2xJc1F1
ZXJ5QVJCKEdMdWludCBpZCk7CmV4dGVybiB2b2lkIGdsQmVnaW5RdWVyeUFSQihHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaWQpOwpleHRlcm4gdm9pZCBnbEVuZFF1ZXJ5QVJCKEdMZW51bSB0YXJnZXQp
OwpleHRlcm4gdm9pZCBnbEdldFF1ZXJ5aXZBUkIoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRRdWVyeU9iamVjdGl2QVJCKEdMdWlu
dCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRRdWVy
eU9iamVjdHVpdkFSQihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOwoj
IDMzMDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVy
cy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsUG9pbnRQYXJhbWV0ZXJmQVJCKEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSk7CmV4dGVybiB2b2lkIGdsUG9pbnRQYXJhbWV0ZXJmdkFSQihHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CiMgMzM0MiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKZXh0ZXJuIHZv
aWQgZ2xCaW5kUHJvZ3JhbUFSQihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcHJvZ3JhbSk7CmV4dGVy
biB2b2lkIGdsRGVsZXRlUHJvZ3JhbXNBUkIoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnByb2dy
YW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZW5Qcm9ncmFtc0FSQihHTHNpemVpIG4sIEdMdWludCAqcHJv
Z3JhbXMpOwpleHRlcm4gR0xib29sZWFuIGdsSXNQcm9ncmFtQVJCKEdMdWludCBwcm9ncmFtKTsK
CmV4dGVybiB2b2lkIGdsUHJvZ3JhbUVudlBhcmFtZXRlcjRkQVJCKEdMZW51bSB0YXJnZXQsIEdM
dWludCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUg
dyk7CmV4dGVybiB2b2lkIGdsUHJvZ3JhbUVudlBhcmFtZXRlcjRkdkFSQihHTGVudW0gdGFyZ2V0
LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbFBy
b2dyYW1FbnZQYXJhbWV0ZXI0ZkFSQihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZmxv
YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CmV4dGVybiB2b2lkIGdsUHJv
Z3JhbUVudlBhcmFtZXRlcjRmdkFSQihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsUHJvZ3JhbUxvY2FsUGFyYW1ldGVyNGRB
UkIoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBH
TGRvdWJsZSB6LCBHTGRvdWJsZSB3KTsKZXh0ZXJuIHZvaWQgZ2xQcm9ncmFtTG9jYWxQYXJhbWV0
ZXI0ZHZBUkIoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqcGFy
YW1zKTsKZXh0ZXJuIHZvaWQgZ2xQcm9ncmFtTG9jYWxQYXJhbWV0ZXI0ZkFSQihHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxv
YXQgdyk7CmV4dGVybiB2b2lkIGdsUHJvZ3JhbUxvY2FsUGFyYW1ldGVyNGZ2QVJCKEdMZW51bSB0
YXJnZXQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKCmV4dGVybiB2b2lk
IGdsR2V0UHJvZ3JhbUVudlBhcmFtZXRlcmR2QVJCKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRl
eCwgR0xkb3VibGUgKnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0UHJvZ3JhbUVudlBhcmFtZXRl
cmZ2QVJCKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqcGFyYW1zKTsKCmV4
dGVybiB2b2lkIGdsUHJvZ3JhbUVudlBhcmFtZXRlcnM0ZnZFWFQoR0xlbnVtIHRhcmdldCwgR0x1
aW50IGluZGV4LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwpleHRlcm4g
dm9pZCBnbFByb2dyYW1Mb2NhbFBhcmFtZXRlcnM0ZnZFWFQoR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwoKCmV4dGVybiB2
b2lkIGdsR2V0UHJvZ3JhbUxvY2FsUGFyYW1ldGVyZHZBUkIoR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4LCBHTGRvdWJsZSAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRQcm9ncmFtTG9jYWxQ
YXJhbWV0ZXJmdkFSQihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKnBhcmFt
cyk7CgpleHRlcm4gdm9pZCBnbFByb2dyYW1TdHJpbmdBUkIoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IGZvcm1hdCwgR0xzaXplaSBsZW4sIGNvbnN0IEdMdm9pZCAqc3RyaW5nKTsKZXh0ZXJuIHZvaWQg
Z2xHZXRQcm9ncmFtU3RyaW5nQVJCKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lk
ICpzdHJpbmcpOwoKZXh0ZXJuIHZvaWQgZ2xHZXRQcm9ncmFtaXZBUkIoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKIyAzNDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwpleHRlcm4gdm9pZCBn
bFZlcnRleEF0dHJpYjFkQVJCKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCk7CmV4dGVybiB2b2lk
IGdsVmVydGV4QXR0cmliMWR2QVJCKEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOwpl
eHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjFmQVJCKEdMdWludCBpbmRleCwgR0xmbG9hdCB4KTsK
ZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIxZnZBUkIoR0x1aW50IGluZGV4LCBjb25zdCBHTGZs
b2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIxc0FSQihHTHVpbnQgaW5kZXgsIEdM
c2hvcnQgeCk7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliMXN2QVJCKEdMdWludCBpbmRleCwg
Y29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliMmRBUkIoR0x1aW50
IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRy
aWIyZHZBUkIoR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7CmV4dGVybiB2b2lkIGds
VmVydGV4QXR0cmliMmZBUkIoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CmV4
dGVybiB2b2lkIGdsVmVydGV4QXR0cmliMmZ2QVJCKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9h
dCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliMnNBUkIoR0x1aW50IGluZGV4LCBHTHNo
b3J0IHgsIEdMc2hvcnQgeSk7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliMnN2QVJCKEdMdWlu
dCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliM2RB
UkIoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKZXh0
ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIzZHZBUkIoR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJs
ZSAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliM2ZBUkIoR0x1aW50IGluZGV4LCBHTGZs
b2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIz
ZnZBUkIoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0
ZXhBdHRyaWIzc0FSQihHTHVpbnQgaW5kZXgsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0
IHopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjNzdkFSQihHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMc2hvcnQgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjROYnZBUkIoR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGJ5dGUgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjROaXZBUkIo
R0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmli
NE5zdkFSQihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpOwpleHRlcm4gdm9pZCBnbFZl
cnRleEF0dHJpYjROdWJBUkIoR0x1aW50IGluZGV4LCBHTHVieXRlIHgsIEdMdWJ5dGUgeSwgR0x1
Ynl0ZSB6LCBHTHVieXRlIHcpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjROdWJ2QVJCKEdM
dWludCBpbmRleCwgY29uc3QgR0x1Ynl0ZSAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmli
NE51aXZBUkIoR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpOwpleHRlcm4gdm9pZCBnbFZl
cnRleEF0dHJpYjROdXN2QVJCKEdMdWludCBpbmRleCwgY29uc3QgR0x1c2hvcnQgKnYpOwpleHRl
cm4gdm9pZCBnbFZlcnRleEF0dHJpYjRidkFSQihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMYnl0ZSAq
dik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliNGRBUkIoR0x1aW50IGluZGV4LCBHTGRvdWJs
ZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KTsKZXh0ZXJuIHZvaWQgZ2xW
ZXJ0ZXhBdHRyaWI0ZHZBUkIoR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7CmV4dGVy
biB2b2lkIGdsVmVydGV4QXR0cmliNGZBUkIoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxv
YXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjRm
dkFSQihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRl
eEF0dHJpYjRpdkFSQihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKZXh0ZXJuIHZvaWQg
Z2xWZXJ0ZXhBdHRyaWI0c0FSQihHTHVpbnQgaW5kZXgsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBH
THNob3J0IHosIEdMc2hvcnQgdyk7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliNHN2QVJCKEdM
dWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmli
NHVidkFSQihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWJ5dGUgKnYpOwpleHRlcm4gdm9pZCBnbFZl
cnRleEF0dHJpYjR1aXZBUkIoR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpOwpleHRlcm4g
dm9pZCBnbFZlcnRleEF0dHJpYjR1c3ZBUkIoR0x1aW50IGluZGV4LCBjb25zdCBHTHVzaG9ydCAq
dik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliUG9pbnRlckFSQihHTHVpbnQgaW5kZXgsIEdM
aW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJp
ZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CgpleHRlcm4gdm9pZCBnbERpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheUFSQihHTHVpbnQgaW5kZXgpOwpleHRlcm4gdm9pZCBnbEVuYWJsZVZlcnRleEF0
dHJpYkFycmF5QVJCKEdMdWludCBpbmRleCk7CgpleHRlcm4gdm9pZCBnbEdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2QVJCKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwb2ludGVy
KTsKZXh0ZXJuIHZvaWQgZ2xHZXRWZXJ0ZXhBdHRyaWJkdkFSQihHTHVpbnQgaW5kZXgsIEdMZW51
bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0VmVydGV4QXR0cmli
ZnZBUkIoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVy
biB2b2lkIGdsR2V0VmVydGV4QXR0cmliaXZBUkIoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpOwojIDM1MTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5H
TC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsRGVsZXRlT2JqZWN0
QVJCKEdMaGFuZGxlQVJCIG9iaik7CmV4dGVybiBHTGhhbmRsZUFSQiBnbEdldEhhbmRsZUFSQihH
TGVudW0gcG5hbWUpOwpleHRlcm4gdm9pZCBnbERldGFjaE9iamVjdEFSQihHTGhhbmRsZUFSQiBj
b250YWluZXJPYmosIEdMaGFuZGxlQVJCIGF0dGFjaGVkT2JqKTsKZXh0ZXJuIEdMaGFuZGxlQVJC
IGdsQ3JlYXRlU2hhZGVyT2JqZWN0QVJCKEdMZW51bSBzaGFkZXJUeXBlKTsKZXh0ZXJuIHZvaWQg
Z2xTaGFkZXJTb3VyY2VBUkIoR0xoYW5kbGVBUkIgc2hhZGVyT2JqLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGNoYXJBUkIgKipzdHJpbmcsIGNvbnN0IEdMaW50ICpsZW5ndGgpOwpleHRlcm4gdm9p
ZCBnbENvbXBpbGVTaGFkZXJBUkIoR0xoYW5kbGVBUkIgc2hhZGVyT2JqKTsKZXh0ZXJuIEdMaGFu
ZGxlQVJCIGdsQ3JlYXRlUHJvZ3JhbU9iamVjdEFSQih2b2lkKTsKZXh0ZXJuIHZvaWQgZ2xBdHRh
Y2hPYmplY3RBUkIoR0xoYW5kbGVBUkIgY29udGFpbmVyT2JqLCBHTGhhbmRsZUFSQiBvYmopOwpl
eHRlcm4gdm9pZCBnbExpbmtQcm9ncmFtQVJCKEdMaGFuZGxlQVJCIHByb2dyYW1PYmopOwpleHRl
cm4gdm9pZCBnbFVzZVByb2dyYW1PYmplY3RBUkIoR0xoYW5kbGVBUkIgcHJvZ3JhbU9iaik7CmV4
dGVybiB2b2lkIGdsVmFsaWRhdGVQcm9ncmFtQVJCKEdMaGFuZGxlQVJCIHByb2dyYW1PYmopOwpl
eHRlcm4gdm9pZCBnbFVuaWZvcm0xZkFSQihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCk7CmV4
dGVybiB2b2lkIGdsVW5pZm9ybTJmQVJCKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZs
b2F0IHYxKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtM2ZBUkIoR0xpbnQgbG9jYXRpb24sIEdMZmxv
YXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIpOwpleHRlcm4gdm9pZCBnbFVuaWZvcm00ZkFS
QihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiwgR0xm
bG9hdCB2Myk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybTFpQVJCKEdMaW50IGxvY2F0aW9uLCBHTGlu
dCB2MCk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybTJpQVJCKEdMaW50IGxvY2F0aW9uLCBHTGludCB2
MCwgR0xpbnQgdjEpOwpleHRlcm4gdm9pZCBnbFVuaWZvcm0zaUFSQihHTGludCBsb2NhdGlvbiwg
R0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2Mik7CmV4dGVybiB2b2lkIGdsVW5pZm9ybTRpQVJC
KEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyLCBHTGludCB2Myk7
CmV4dGVybiB2b2lkIGdsVW5pZm9ybTFmdkFSQihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwpleHRlcm4gdm9pZCBnbFVuaWZvcm0yZnZBUkIoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKZXh0ZXJu
IHZvaWQgZ2xVbmlmb3JtM2Z2QVJCKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGZsb2F0ICp2YWx1ZSk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybTRmdkFSQihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwpleHRlcm4gdm9pZCBn
bFVuaWZvcm0xaXZBUkIoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50
ICp2YWx1ZSk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybTJpdkFSQihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtM2l2
QVJCKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOwpl
eHRlcm4gdm9pZCBnbFVuaWZvcm00aXZBUkIoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMaW50ICp2YWx1ZSk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybU1hdHJpeDJmdkFSQihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpOwpleHRlcm4gdm9pZCBnbFVuaWZvcm1NYXRyaXgzZnZBUkIoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtTWF0cml4NGZ2QVJCKEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7CmV4dGVybiB2b2lkIGdsR2V0T2JqZWN0UGFyYW1ldGVyZnZBUkIoR0xoYW5kbGVBUkIg
b2JqLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0T2Jq
ZWN0UGFyYW1ldGVyaXZBUkIoR0xoYW5kbGVBUkIgb2JqLCBHTGVudW0gcG5hbWUsIEdMaW50ICpw
YXJhbXMpOwpleHRlcm4gdm9pZCBnbEdldEluZm9Mb2dBUkIoR0xoYW5kbGVBUkIgb2JqLCBHTHNp
emVpIG1heExlbmd0aCwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXJBUkIgKmluZm9Mb2cpOwpleHRl
cm4gdm9pZCBnbEdldEF0dGFjaGVkT2JqZWN0c0FSQihHTGhhbmRsZUFSQiBjb250YWluZXJPYmos
IEdMc2l6ZWkgbWF4Q291bnQsIEdMc2l6ZWkgKmNvdW50LCBHTGhhbmRsZUFSQiAqb2JqKTsKZXh0
ZXJuIEdMaW50IGdsR2V0VW5pZm9ybUxvY2F0aW9uQVJCKEdMaGFuZGxlQVJCIHByb2dyYW1PYmos
IGNvbnN0IEdMY2hhckFSQiAqbmFtZSk7CmV4dGVybiB2b2lkIGdsR2V0QWN0aXZlVW5pZm9ybUFS
QihHTGhhbmRsZUFSQiBwcm9ncmFtT2JqLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgbWF4TGVuZ3Ro
LCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhckFSQiAq
bmFtZSk7CmV4dGVybiB2b2lkIGdsR2V0VW5pZm9ybWZ2QVJCKEdMaGFuZGxlQVJCIHByb2dyYW1P
YmosIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbEdldFVu
aWZvcm1pdkFSQihHTGhhbmRsZUFSQiBwcm9ncmFtT2JqLCBHTGludCBsb2NhdGlvbiwgR0xpbnQg
KnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0U2hhZGVyU291cmNlQVJCKEdMaGFuZGxlQVJCIG9i
aiwgR0xzaXplaSBtYXhMZW5ndGgsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyQVJCICpzb3VyY2Up
OwojIDM1NjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVh
ZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsQmluZEF0dHJpYkxvY2F0aW9uQVJCKEdMaGFu
ZGxlQVJCIHByb2dyYW1PYmosIEdMdWludCBpbmRleCwgY29uc3QgR0xjaGFyQVJCICpuYW1lKTsK
ZXh0ZXJuIHZvaWQgZ2xHZXRBY3RpdmVBdHRyaWJBUkIoR0xoYW5kbGVBUkIgcHJvZ3JhbU9iaiwg
R0x1aW50IGluZGV4LCBHTHNpemVpIG1heExlbmd0aCwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAq
c2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXJBUkIgKm5hbWUpOwpleHRlcm4gR0xpbnQgZ2xHZXRB
dHRyaWJMb2NhdGlvbkFSQihHTGhhbmRsZUFSQiBwcm9ncmFtT2JqLCBjb25zdCBHTGNoYXJBUkIg
Km5hbWUpOwojIDM1ODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdv
cmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsQmluZEJ1ZmZlckFSQihHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgYnVmZmVyKTsKZXh0ZXJuIHZvaWQgZ2xEZWxldGVCdWZmZXJzQVJCKEdM
c2l6ZWkgbiwgY29uc3QgR0x1aW50ICpidWZmZXJzKTsKZXh0ZXJuIHZvaWQgZ2xHZW5CdWZmZXJz
QVJCKEdMc2l6ZWkgbiwgR0x1aW50ICpidWZmZXJzKTsKZXh0ZXJuIEdMYm9vbGVhbiBnbElzQnVm
ZmVyQVJCKEdMdWludCBidWZmZXIpOwpleHRlcm4gdm9pZCBnbEJ1ZmZlckRhdGFBUkIoR0xlbnVt
IHRhcmdldCwgR0xzaXplaXB0ckFSQiBzaXplLCBjb25zdCBHTHZvaWQgKmRhdGEsIEdMZW51bSB1
c2FnZSk7CmV4dGVybiB2b2lkIGdsQnVmZmVyU3ViRGF0YUFSQihHTGVudW0gdGFyZ2V0LCBHTGlu
dHB0ckFSQiBvZmZzZXQsIEdMc2l6ZWlwdHJBUkIgc2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsK
ZXh0ZXJuIHZvaWQgZ2xHZXRCdWZmZXJTdWJEYXRhQVJCKEdMZW51bSB0YXJnZXQsIEdMaW50cHRy
QVJCIG9mZnNldCwgR0xzaXplaXB0ckFSQiBzaXplLCBHTHZvaWQgKmRhdGEpOwpleHRlcm4gR0x2
b2lkICpnbE1hcEJ1ZmZlckFSQihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKTsKZXh0ZXJu
IEdMYm9vbGVhbiBnbFVubWFwQnVmZmVyQVJCKEdMZW51bSB0YXJnZXQpOwpleHRlcm4gdm9pZCBn
bEdldEJ1ZmZlclBhcmFtZXRlcml2QVJCKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0QnVmZmVyUG9pbnRlcnZBUkIoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwYXJhbXMpOwojIDM2MDMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVy
biB2b2lkIGdsRHJhd0J1ZmZlcnNBUkIoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOwoK
CgoKCgoKZXh0ZXJuIHZvaWQgZ2xDbGFtcENvbG9yQVJCKEdMZW51bSB0YXJnZXQsIEdMZW51bSBj
bGFtcCk7CiMgMzYyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29y
ay9IZWFkZXJzL2dsZXh0LmgiIDMKZXh0ZXJuIHZvaWQgZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQVJC
KEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBwcmltY291
bnQpOwpleHRlcm4gdm9pZCBnbERyYXdFbGVtZW50c0luc3RhbmNlZEFSQihHTGVudW0gbW9kZSwg
R0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgR0xzaXpl
aSBwcmltY291bnQpOwoKCgoKCgpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYkRpdmlzb3JBUkIo
R0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcik7CiMgMzY0NCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKZXh0ZXJuIHZvaWQg
Z2xHZXRVbmlmb3JtSW5kaWNlcyhHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSB1bmlmb3JtQ291bnQs
IGNvbnN0IEdMY2hhcioqIHVuaWZvcm1OYW1lcywgR0x1aW50KiB1bmlmb3JtSW5kaWNlcyk7CmV4
dGVybiB2b2lkIGdsR2V0QWN0aXZlVW5pZm9ybXNpdihHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSB1
bmlmb3JtQ291bnQsIGNvbnN0IEdMdWludCogdW5pZm9ybUluZGljZXMsIEdMZW51bSBwbmFtZSwg
R0xpbnQqIHBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0QWN0aXZlVW5pZm9ybU5hbWUoR0x1aW50
IHByb2dyYW0sIEdMdWludCB1bmlmb3JtSW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSog
bGVuZ3RoLCBHTGNoYXIqIHVuaWZvcm1OYW1lKTsKZXh0ZXJuIEdMdWludCBnbEdldFVuaWZvcm1C
bG9ja0luZGV4KEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIqIHVuaWZvcm1CbG9ja05hbWUp
OwpleHRlcm4gdm9pZCBnbEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdMdWludCBwcm9ncmFtLCBH
THVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyk7CmV4
dGVybiB2b2lkIGdsR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShHTHVpbnQgcHJvZ3JhbSwgR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkqIGxlbmd0aCwg
R0xjaGFyKiB1bmlmb3JtQmxvY2tOYW1lKTsKZXh0ZXJuIHZvaWQgZ2xCaW5kQnVmZmVyUmFuZ2Uo
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQgYnVmZmVyLCBHTGludHB0ciBvZmZz
ZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7CmV4dGVybiB2b2lkIGdsQmluZEJ1ZmZlckJhc2UoR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQgYnVmZmVyKTsKZXh0ZXJuIHZvaWQgZ2xHZXRJ
bnRlZ2VyaV92KEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTGludCogZGF0YSk7CmV4dGVy
biB2b2lkIGdsVW5pZm9ybUJsb2NrQmluZGluZyhHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4LCBHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZyk7CgoKCgoKCgpleHRlcm4g
dm9pZCBnbEJsZW5kQ29sb3JFWFQgKEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xh
bXBmKTsKIyAzODEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3Jr
L0hlYWRlcnMvZ2xleHQuaCIgMwpleHRlcm4gdm9pZCBnbEJsZW5kRXF1YXRpb25FWFQgKEdMZW51
bSk7CiMgMzg2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9I
ZWFkZXJzL2dsZXh0LmgiIDMKZXh0ZXJuIHZvaWQgZ2xMb2NrQXJyYXlzRVhUIChHTGludCwgR0xz
aXplaSk7CmV4dGVybiB2b2lkIGdsVW5sb2NrQXJyYXlzRVhUICh2b2lkKTsKIyAzODgzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIg
MwpleHRlcm4gdm9pZCBnbERyYXdSYW5nZUVsZW1lbnRzRVhUIChHTGVudW0sIEdMdWludCwgR0x1
aW50LCBHTHNpemVpLCBHTGVudW0sIGNvbnN0IEdMdm9pZCAqKTsKIyAzOTMzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwpleHRl
cm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM2JFWFQgKEdMYnl0ZSwgR0xieXRlLCBHTGJ5dGUpOwpl
eHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM2J2RVhUIChjb25zdCBHTGJ5dGUgKik7CmV4dGVy
biB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzZEVYVCAoR0xkb3VibGUsIEdMZG91YmxlLCBHTGRvdWJs
ZSk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzZHZFWFQgKGNvbnN0IEdMZG91YmxlICop
OwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM2ZFWFQgKEdMZmxvYXQsIEdMZmxvYXQsIEdM
ZmxvYXQpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM2Z2RVhUIChjb25zdCBHTGZsb2F0
ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM2lFWFQgKEdMaW50LCBHTGludCwgR0xp
bnQpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM2l2RVhUIChjb25zdCBHTGludCAqKTsK
ZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNzRVhUIChHTHNob3J0LCBHTHNob3J0LCBHTHNo
b3J0KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNzdkVYVCAoY29uc3QgR0xzaG9ydCAq
KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjN1YkVYVCAoR0x1Ynl0ZSwgR0x1Ynl0ZSwg
R0x1Ynl0ZSk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzdWJ2RVhUIChjb25zdCBHTHVi
eXRlICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3VpRVhUIChHTHVpbnQsIEdMdWlu
dCwgR0x1aW50KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjN1aXZFWFQgKGNvbnN0IEdM
dWludCAqKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjN1c0VYVCAoR0x1c2hvcnQsIEdM
dXNob3J0LCBHTHVzaG9ydCk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzdXN2RVhUIChj
b25zdCBHTHVzaG9ydCAqKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvclBvaW50ZXJFWFQg
KEdMaW50LCBHTGVudW0sIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCAqKTsKIyAzOTY2ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwpl
eHRlcm4gdm9pZCBnbE11bHRpRHJhd0FycmF5c0VYVCAoR0xlbnVtLCBjb25zdCBHTGludCAqLCBj
b25zdCBHTHNpemVpICosIEdMc2l6ZWkpOwpleHRlcm4gdm9pZCBnbE11bHRpRHJhd0VsZW1lbnRz
RVhUIChHTGVudW0sIGNvbnN0IEdMc2l6ZWkgKiwgR0xlbnVtLCBjb25zdCBHTHZvaWQqICosIEdM
c2l6ZWkpOwojIDM5NzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdv
cmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsRm9nQ29vcmRmRVhUIChHTGZsb2F0
KTsKZXh0ZXJuIHZvaWQgZ2xGb2dDb29yZGZ2RVhUIChjb25zdCBHTGZsb2F0ICopOwpleHRlcm4g
dm9pZCBnbEZvZ0Nvb3JkZEVYVCAoR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3JkZHZF
WFQgKGNvbnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3JkUG9pbnRlckVYVCAo
R0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7CiMgNDA0MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKZXh0ZXJuIHZv
aWQgZ2xCbGVuZEZ1bmNTZXBhcmF0ZUVYVCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xlbnVt
KTsKIyA0MTk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hl
YWRlcnMvZ2xleHQuaCIgMwpleHRlcm4gdm9pZCBnbEFjdGl2ZVN0ZW5jaWxGYWNlRVhUKEdMZW51
bSBmYWNlKTsKCgoKCgoKCmV4dGVybiB2b2lkIGdsRGVwdGhCb3VuZHNFWFQoR0xjbGFtcGQgem1p
biwgR0xjbGFtcGQgem1heCk7CgoKCgoKCgpleHRlcm4gdm9pZCBnbEJsZW5kRXF1YXRpb25TZXBh
cmF0ZUVYVChHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7CiMgNDIzNSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMK
ZXh0ZXJuIEdMYm9vbGVhbiBnbElzUmVuZGVyYnVmZmVyRVhUKEdMdWludCByZW5kZXJidWZmZXIp
OwpleHRlcm4gdm9pZCBnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xlbnVtIHRhcmdldCwgR0x1aW50
IHJlbmRlcmJ1ZmZlcik7CmV4dGVybiB2b2lkIGdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVChHTHNp
emVpIG4sIGNvbnN0IEdMdWludCAqcmVuZGVyYnVmZmVycyk7CmV4dGVybiB2b2lkIGdsR2VuUmVu
ZGVyYnVmZmVyc0VYVChHTHNpemVpIG4sIEdMdWludCAqcmVuZGVyYnVmZmVycyk7CmV4dGVybiB2
b2lkIGdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKZXh0ZXJuIHZvaWQgZ2xH
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkVYVChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpOwpleHRlcm4gR0xib29sZWFuIGdsSXNGcmFtZWJ1ZmZlckVYVChHTHVp
bnQgZnJhbWVidWZmZXIpOwpleHRlcm4gdm9pZCBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZmZXIpOwpleHRlcm4gdm9pZCBnbERlbGV0ZUZyYW1lYnVm
ZmVyc0VYVChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqZnJhbWVidWZmZXJzKTsKZXh0ZXJuIHZv
aWQgZ2xHZW5GcmFtZWJ1ZmZlcnNFWFQoR0xzaXplaSBuLCBHTHVpbnQgKmZyYW1lYnVmZmVycyk7
CmV4dGVybiBHTGVudW0gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzRVhUKEdMZW51bSB0YXJnZXQp
OwpleHRlcm4gdm9pZCBnbEZyYW1lYnVmZmVyVGV4dHVyZTFERVhUKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQg
bGV2ZWwpOwpleHRlcm4gdm9pZCBnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwg
R0xpbnQgbGV2ZWwpOwpleHRlcm4gdm9pZCBnbEZyYW1lYnVmZmVyVGV4dHVyZTNERVhUKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4
dHVyZSwgR0xpbnQgbGV2ZWwsIEdMaW50IHpvZmZzZXQpOwpleHRlcm4gdm9pZCBnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVu
dW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKZXh0ZXJuIHZvaWQg
Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKZXh0ZXJuIHZv
aWQgZ2xHZW5lcmF0ZU1pcG1hcEVYVChHTGVudW0gdGFyZ2V0KTsKCgoKCgoKCmV4dGVybiB2b2lk
IGdsQmxpdEZyYW1lYnVmZmVyRVhUKEdMaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQgc3Jj
WDEsIEdMaW50IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBH
TGludCBkc3RZMSwgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyKTsKCgoKCgoKCmV4dGVy
biB2b2lkIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKEdMZW51bSB0YXJnZXQs
IEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCk7CiMgNDI3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdM
LmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKZXh0ZXJuIHZvaWQgZ2xQcm9ncmFtUGFyYW1l
dGVyaUVYVChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7CmV4dGVy
biB2b2lkIGdsRnJhbWVidWZmZXJUZXh0dXJlRVhUKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRh
Y2htZW50LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOwpleHRlcm4gdm9pZCBnbEZyYW1l
YnVmZmVyVGV4dHVyZUZhY2VFWFQoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdM
dWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xlbnVtIGZhY2UpOwoKCgoKCgoKZXh0ZXJuIHZv
aWQgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllckVYVChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0
YWNobWVudCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCBsYXllcik7CiMgNDMx
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2ds
ZXh0LmgiIDMKZXh0ZXJuIEdMYm9vbGVhbiBnbElzUmVuZGVyYnVmZmVyIChHTHVpbnQpOwpleHRl
cm4gdm9pZCBnbEJpbmRSZW5kZXJidWZmZXIgKEdMZW51bSwgR0x1aW50KTsKZXh0ZXJuIHZvaWQg
Z2xEZWxldGVSZW5kZXJidWZmZXJzIChHTHNpemVpLCBjb25zdCBHTHVpbnQgKik7CmV4dGVybiB2
b2lkIGdsR2VuUmVuZGVyYnVmZmVycyAoR0xzaXplaSwgR0x1aW50ICopOwpleHRlcm4gdm9pZCBn
bFJlbmRlcmJ1ZmZlclN0b3JhZ2UgKEdMZW51bSwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpKTsK
ZXh0ZXJuIHZvaWQgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiAoR0xlbnVtLCBHTGVudW0s
IEdMaW50ICopOwpleHRlcm4gR0xib29sZWFuIGdsSXNGcmFtZWJ1ZmZlciAoR0x1aW50KTsKZXh0
ZXJuIHZvaWQgZ2xCaW5kRnJhbWVidWZmZXIgKEdMZW51bSwgR0x1aW50KTsKZXh0ZXJuIHZvaWQg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMgKEdMc2l6ZWksIGNvbnN0IEdMdWludCAqKTsKZXh0ZXJuIHZv
aWQgZ2xHZW5GcmFtZWJ1ZmZlcnMgKEdMc2l6ZWksIEdMdWludCAqKTsKZXh0ZXJuIEdMZW51bSBn
bENoZWNrRnJhbWVidWZmZXJTdGF0dXMgKEdMZW51bSk7CmV4dGVybiB2b2lkIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMUQgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCwgR0xpbnQpOwpleHRl
cm4gdm9pZCBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBH
THVpbnQsIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xGcmFtZWJ1ZmZlclRleHR1cmUzRCAoR0xlbnVt
LCBHTGVudW0sIEdMZW51bSwgR0x1aW50LCBHTGludCwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQpOwpl
eHRlcm4gdm9pZCBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2IChHTGVudW0s
IEdMZW51bSwgR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZW5lcmF0ZU1pcG1hcCAo
R0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xCbGl0RnJhbWVidWZmZXIgKEdMaW50LCBHTGludCwgR0xp
bnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xiaXRmaWVsZCwgR0xlbnVt
KTsKZXh0ZXJuIHZvaWQgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUgKEdMZW51bSwg
R0xzaXplaSwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpKTsKZXh0ZXJuIHZvaWQgZ2xGcmFtZWJ1
ZmZlclRleHR1cmVMYXllciAoR0xlbnVtLCBHTGVudW0sIEdMdWludCwgR0xpbnQsIEdMaW50KTsK
IyA0MzQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRl
cnMvZ2xleHQuaCIgMwpleHRlcm4gdm9pZCBnbEJpbmRCdWZmZXJSYW5nZUVYVChHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaW5kZXgsIEdMdWludCBidWZmZXIsIEdMaW50cHRyIG9mZnNldCwgR0xzaXpl
aXB0ciBzaXplKTsKZXh0ZXJuIHZvaWQgZ2xCaW5kQnVmZmVyT2Zmc2V0RVhUKEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCwgR0x1aW50IGJ1ZmZlciwgR0xpbnRwdHIgb2Zmc2V0KTsKZXh0ZXJu
IHZvaWQgZ2xCaW5kQnVmZmVyQmFzZUVYVChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdM
dWludCBidWZmZXIpOwpleHRlcm4gdm9pZCBnbEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQoR0xl
bnVtIHByaW1pdGl2ZU1vZGUpOwpleHRlcm4gdm9pZCBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrRVhU
KHZvaWQpOwpleHRlcm4gdm9pZCBnbFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3NFWFQoR0x1aW50
IHByb2dyYW0sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhciAqKnZhcnlpbmdzLCBHTGVudW0g
YnVmZmVyTW9kZSk7CmV4dGVybiB2b2lkIGdsR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nRVhU
KEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTHNpemVpICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSk7CiMgNDM2
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2ds
ZXh0LmgiIDMKZXh0ZXJuIHZvaWQgZ2xHZXRJbnRlZ2VySW5kZXhlZHZFWFQoR0xlbnVtIHBhcmFt
LCBHTHVpbnQgaW5kZXgsIEdMaW50ICp2YWx1ZXMpOwpleHRlcm4gdm9pZCBnbEdldEJvb2xlYW5J
bmRleGVkdkVYVChHTGVudW0gcGFyYW0sIEdMdWludCBpbmRleCwgR0xib29sZWFuICp2YWx1ZXMp
OwojIDQzNzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVh
ZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsVW5pZm9ybUJ1ZmZlckVYVChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCBidWZmZXIpOwpleHRlcm4gR0xpbnQgZ2xHZXRV
bmlmb3JtQnVmZmVyU2l6ZUVYVChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24pOwpleHRl
cm4gR0xpbnRwdHIgZ2xHZXRVbmlmb3JtT2Zmc2V0RVhUKEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbik7CiMgNDM4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1l
d29yay9IZWFkZXJzL2dsZXh0LmgiIDMKZXh0ZXJuIHZvaWQgZ2xDbGVhckNvbG9ySWlFWFQoIEdM
aW50IHIsIEdMaW50IGcsIEdMaW50IGIsIEdMaW50IGEgKTsKZXh0ZXJuIHZvaWQgZ2xDbGVhckNv
bG9ySXVpRVhUKCBHTHVpbnQgciwgR0x1aW50IGcsIEdMdWludCBiLCBHTHVpbnQgYSApOwpleHRl
cm4gdm9pZCBnbFRleFBhcmFtZXRlcklpdkVYVCggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsVGV4UGFyYW1ldGVySXVpdkVYVCggR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBn
bEdldFRleFBhcmFtZXRlcklpdkVYVCggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2RVhUKCBHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKIyA0NDM0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwpleHRl
cm4gdm9pZCBnbFZlcnRleEF0dHJpYkkxaUVYVChHTHVpbnQgaW5kZXgsIEdMaW50IHgpOwpleHRl
cm4gdm9pZCBnbFZlcnRleEF0dHJpYkkyaUVYVChHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50
IHkpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYkkzaUVYVChHTHVpbnQgaW5kZXgsIEdMaW50
IHgsIEdMaW50IHksIEdMaW50IHopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYkk0aUVYVChH
THVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpOwpleHRlcm4g
dm9pZCBnbFZlcnRleEF0dHJpYkkxdWlFWFQoR0x1aW50IGluZGV4LCBHTHVpbnQgeCk7CmV4dGVy
biB2b2lkIGdsVmVydGV4QXR0cmliSTJ1aUVYVChHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVp
bnQgeSk7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliSTN1aUVYVChHTHVpbnQgaW5kZXgsIEdM
dWludCB4LCBHTHVpbnQgeSwgR0x1aW50IHopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYkk0
dWlFWFQoR0x1aW50IGluZGV4LCBHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB6LCBHTHVpbnQg
dyk7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliSTFpdkVYVChHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMaW50ICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWJJMml2RVhUKEdMdWludCBpbmRl
eCwgY29uc3QgR0xpbnQgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYkkzaXZFWFQoR0x1
aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliSTRp
dkVYVChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhB
dHRyaWJJMXVpdkVYVChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdik7CmV4dGVybiB2b2lk
IGdsVmVydGV4QXR0cmliSTJ1aXZFWFQoR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpOwpl
eHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYkkzdWl2RVhUKEdMdWludCBpbmRleCwgY29uc3QgR0x1
aW50ICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWJJNHVpdkVYVChHTHVpbnQgaW5kZXgs
IGNvbnN0IEdMdWludCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliSTRidkVYVChHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMYnl0ZSAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliSTRz
dkVYVChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRl
eEF0dHJpYkk0dWJ2RVhUKEdMdWludCBpbmRleCwgY29uc3QgR0x1Ynl0ZSAqdik7CmV4dGVybiB2
b2lkIGdsVmVydGV4QXR0cmliSTR1c3ZFWFQoR0x1aW50IGluZGV4LCBjb25zdCBHTHVzaG9ydCAq
dik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliSVBvaW50ZXJFWFQoR0x1aW50IGluZGV4LCBH
TGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9p
bnRlcik7CmV4dGVybiB2b2lkIGdsR2V0VmVydGV4QXR0cmliSWl2RVhUKEdMdWludCBpbmRleCwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRWZXJ0ZXhBdHRy
aWJJdWl2RVhUKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7CmV4
dGVybiB2b2lkIGdsVW5pZm9ybTF1aUVYVChHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwKTsKZXh0
ZXJuIHZvaWQgZ2xVbmlmb3JtMnVpRVhUKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWlu
dCB2MSk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybTN1aUVYVChHTGludCBsb2NhdGlvbiwgR0x1aW50
IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2Mik7CmV4dGVybiB2b2lkIGdsVW5pZm9ybTR1aUVYVChH
TGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MiwgR0x1aW50IHYz
KTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtMXVpdkVYVChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybTJ1aXZFWFQo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOwpleHRl
cm4gdm9pZCBnbFVuaWZvcm0zdWl2RVhUKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTHVpbnQgKnZhbHVlKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtNHVpdkVYVChHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7CmV4dGVybiB2b2lk
IGdsR2V0VW5pZm9ybXVpdkVYVChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWlu
dCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVChHTHVpbnQg
cHJvZ3JhbSwgR0x1aW50IGNvbG9yTnVtYmVyLCBjb25zdCBHTGNoYXIgKm5hbWUpOwpleHRlcm4g
R0xpbnQgZ2xHZXRGcmFnRGF0YUxvY2F0aW9uRVhUKEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNo
YXIgKm5hbWUpOwojIDQ0NzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFt
ZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsQ29sb3JNYXNrSW5kZXhlZEVY
VChHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiByLCBHTGJvb2xlYW4gZywgR0xib29sZWFuIGIsIEdM
Ym9vbGVhbiBhKTsKZXh0ZXJuIHZvaWQgZ2xFbmFibGVJbmRleGVkRVhUKEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCk7CmV4dGVybiB2b2lkIGdsRGlzYWJsZUluZGV4ZWRFWFQoR0xlbnVtIHRh
cmdldCwgR0x1aW50IGluZGV4KTsKZXh0ZXJuIEdMYm9vbGVhbiBnbElzRW5hYmxlZEluZGV4ZWRF
WFQoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKCgoKCgoKCmV4dGVybiB2b2lkIGdsUHJv
dm9raW5nVmVydGV4RVhUKEdMZW51bSBtb2RlKTsKIyA0NDk4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwpleHRlcm4gdm9pZCBn
bFRleHR1cmVSYW5nZUFQUExFKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBH
THZvaWQgKnBvaW50ZXIpOwpleHRlcm4gdm9pZCBnbEdldFRleFBhcmFtZXRlclBvaW50ZXJ2QVBQ
TEUoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwYXJhbXMpOwojIDQ1MDkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4
dC5oIiAzCmV4dGVybiB2b2lkIGdsVmVydGV4QXJyYXlSYW5nZUFQUExFKEdMc2l6ZWkgbGVuZ3Ro
LCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwpleHRlcm4gdm9pZCBnbEZsdXNoVmVydGV4QXJyYXlS
YW5nZUFQUExFKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwpleHRlcm4g
dm9pZCBnbFZlcnRleEFycmF5UGFyYW1ldGVyaUFQUExFKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pOwojIDQ1MjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsv
SGVhZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsQmluZFZlcnRleEFycmF5QVBQTEUoR0x1
aW50IGlkKTsKZXh0ZXJuIHZvaWQgZ2xEZWxldGVWZXJ0ZXhBcnJheXNBUFBMRShHTHNpemVpIG4s
IGNvbnN0IEdMdWludCAqaWRzKTsKZXh0ZXJuIHZvaWQgZ2xHZW5WZXJ0ZXhBcnJheXNBUFBMRShH
THNpemVpIG4sIEdMdWludCAqaWRzKTsKZXh0ZXJuIEdMYm9vbGVhbiBnbElzVmVydGV4QXJyYXlB
UFBMRShHTHVpbnQgaWQpOwojIDQ1NDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5H
TC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsR2VuRmVuY2VzQVBQ
TEUoR0xzaXplaSBuLCBHTHVpbnQgKmZlbmNlcyk7CmV4dGVybiB2b2lkIGdsRGVsZXRlRmVuY2Vz
QVBQTEUoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmZlbmNlcyk7CmV4dGVybiB2b2lkIGdsU2V0
RmVuY2VBUFBMRShHTHVpbnQgZmVuY2UpOwpleHRlcm4gR0xib29sZWFuIGdsSXNGZW5jZUFQUExF
KEdMdWludCBmZW5jZSk7CmV4dGVybiBHTGJvb2xlYW4gZ2xUZXN0RmVuY2VBUFBMRShHTHVpbnQg
ZmVuY2UpOwpleHRlcm4gdm9pZCBnbEZpbmlzaEZlbmNlQVBQTEUoR0x1aW50IGZlbmNlKTsKZXh0
ZXJuIEdMYm9vbGVhbiBnbFRlc3RPYmplY3RBUFBMRShHTGVudW0gb2JqZWN0LCBHTHVpbnQgbmFt
ZSk7CmV4dGVybiB2b2lkIGdsRmluaXNoT2JqZWN0QVBQTEUoR0xlbnVtIG9iamVjdCwgR0x1aW50
IG5hbWUpOwojIDQ1NTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdv
cmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsRWxlbWVudFBvaW50ZXJBUFBMRShH
TGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKZXh0ZXJuIHZvaWQgZ2xEcmF3RWxl
bWVudEFycmF5QVBQTEUoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsK
ZXh0ZXJuIHZvaWQgZ2xEcmF3UmFuZ2VFbGVtZW50QXJyYXlBUFBMRShHTGVudW0gbW9kZSwgR0x1
aW50IHN0YXJ0LCBHTHVpbnQgZW5kLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCk7CmV4dGVy
biB2b2lkIGdsTXVsdGlEcmF3RWxlbWVudEFycmF5QVBQTEUoR0xlbnVtIG1vZGUsIGNvbnN0IEdM
aW50ICpmaXJzdCwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKZXh0
ZXJuIHZvaWQgZ2xNdWx0aURyYXdSYW5nZUVsZW1lbnRBcnJheUFQUExFKEdMZW51bSBtb2RlLCBH
THVpbnQgc3RhcnQsIEdMdWludCBlbmQsIGNvbnN0IEdMaW50ICpmaXJzdCwgY29uc3QgR0xzaXpl
aSAqY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKIyA0NTczICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwpleHRlcm4gdm9pZCBn
bEZsdXNoUmVuZGVyQVBQTEUodm9pZCk7CmV4dGVybiB2b2lkIGdsRmluaXNoUmVuZGVyQVBQTEUo
dm9pZCk7CmV4dGVybiB2b2lkIGdsU3dhcEFQUExFKHZvaWQpOwojIDQ1ODkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVy
biB2b2lkIGdsRW5hYmxlVmVydGV4QXR0cmliQVBQTEUoR0x1aW50IGluZGV4LCBHTGVudW0gcG5h
bWUpOwpleHRlcm4gdm9pZCBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBUFBMRShHTHVpbnQgaW5kZXgs
IEdMZW51bSBwbmFtZSk7CmV4dGVybiBHTGJvb2xlYW4gZ2xJc1ZlcnRleEF0dHJpYkVuYWJsZWRB
UFBMRShHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSk7CmV4dGVybiB2b2lkIGdsTWFwVmVydGV4
QXR0cmliMWRBUFBMRShHTHVpbnQgaW5kZXgsIEdMdWludCBzaXplLCBHTGRvdWJsZSB1MSwgR0xk
b3VibGUgdTIsIEdMaW50IHN0cmlkZSwgR0xpbnQgb3JkZXIsIGNvbnN0IEdMZG91YmxlICpwb2lu
dHMpOwpleHRlcm4gdm9pZCBnbE1hcFZlcnRleEF0dHJpYjFmQVBQTEUoR0x1aW50IGluZGV4LCBH
THVpbnQgc2l6ZSwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiwgR0xpbnQgc3RyaWRlLCBHTGludCBv
cmRlciwgY29uc3QgR0xmbG9hdCAqcG9pbnRzKTsKZXh0ZXJuIHZvaWQgZ2xNYXBWZXJ0ZXhBdHRy
aWIyZEFQUExFKEdMdWludCBpbmRleCwgR0x1aW50IHNpemUsIEdMZG91YmxlIHUxLCBHTGRvdWJs
ZSB1MiwgR0xpbnQgdXN0cmlkZSwgR0xpbnQgdW9yZGVyLCBHTGRvdWJsZSB2MSwgR0xkb3VibGUg
djIsIEdMaW50IHZzdHJpZGUsIEdMaW50IHZvcmRlciwgY29uc3QgR0xkb3VibGUgKnBvaW50cyk7
CmV4dGVybiB2b2lkIGdsTWFwVmVydGV4QXR0cmliMmZBUFBMRShHTHVpbnQgaW5kZXgsIEdMdWlu
dCBzaXplLCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3Jk
ZXIsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMaW50IHZzdHJpZGUsIEdMaW50IHZvcmRlciwg
Y29uc3QgR0xmbG9hdCAqcG9pbnRzKTsKIyA0NjA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwpleHRlcm4gdm9pZCBnbEJ1ZmZl
clBhcmFtZXRlcmlBUFBMRShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFt
KTsKZXh0ZXJuIHZvaWQgZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlQVBQTEUoR0xlbnVtIHRhcmdl
dCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOwojIDQ2MTUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4dGVy
biBHTGVudW0gZ2xPYmplY3RQdXJnZWFibGVBUFBMRShHTGVudW0gb2JqZWN0VHlwZSwgR0x1aW50
IG5hbWUsIEdMZW51bSBvcHRpb24pOwpleHRlcm4gR0xlbnVtIGdsT2JqZWN0VW5wdXJnZWFibGVB
UFBMRShHTGVudW0gb2JqZWN0VHlwZSwgR0x1aW50IG5hbWUsIEdMZW51bSBvcHRpb24pOwpleHRl
cm4gdm9pZCBnbEdldE9iamVjdFBhcmFtZXRlcml2QVBQTEUoR0xlbnVtIG9iamVjdFR5cGUsIEdM
dWludCBuYW1lLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpOwojIDQ2MzYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbGV4dC5oIiAzCmV4
dGVybiB2b2lkIGdsUE5UcmlhbmdsZXNpQVRJKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwpl
eHRlcm4gdm9pZCBnbFBOVHJpYW5nbGVzZkFUSShHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0p
OwoKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVBVEkoR0xlbnVtIGVx
dWF0aW9uUkdCLCBHTGVudW0gZXF1YXRpb25BbHBoYSk7CiMgNDY1NCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsZXh0LmgiIDMKZXh0ZXJuIHZv
aWQgZ2xTdGVuY2lsT3BTZXBhcmF0ZUFUSShHTGVudW0gZmFjZSwgR0xlbnVtIHNmYWlsLCBHTGVu
dW0gZHBmYWlsLCBHTGVudW0gZHBwYXNzKTsKZXh0ZXJuIHZvaWQgZ2xTdGVuY2lsRnVuY1NlcGFy
YXRlQVRJKEdMZW51bSBmcm9udGZ1bmMsIEdMZW51bSBiYWNrZnVuYywgR0xpbnQgcmVmLCBHTHVp
bnQgbWFzayk7CiMgNDY2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1l
d29yay9IZWFkZXJzL2dsZXh0LmgiIDMKZXh0ZXJuIHZvaWQgZ2xQTlRyaWFuZ2xlc2lBVElYKEdM
ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwpleHRlcm4gdm9pZCBnbFBOVHJpYW5nbGVzZkFUSVgo
R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKIyA0OTM3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2xleHQuaCIgMwpleHRlcm4gdm9pZCBn
bFBvaW50UGFyYW1ldGVyaU5WKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwpleHRlcm4gdm9p
ZCBnbFBvaW50UGFyYW1ldGVyaXZOVihHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMp
OwojIDUzODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVh
ZGVycy9nbGV4dC5oIiAzCmV4dGVybiB2b2lkIGdsQmVnaW5Db25kaXRpb25hbFJlbmRlck5WIChH
THVpbnQgaWQsIEdMZW51bSBtb2RlKTsKZXh0ZXJuIHZvaWQgZ2xFbmRDb25kaXRpb25hbFJlbmRl
ck5WICh2b2lkKTsKCgoKfQojIDY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wu
ZnJhbWV3b3JrL0hlYWRlcnMvZ2wuaCIgMiAzCgoKCiNkZWZpbmUgR0xfTE9HSUNfT1AgR0xfSU5E
RVhfTE9HSUNfT1AKI2RlZmluZSBHTF9URVhUVVJFX0NPTVBPTkVOVFMgR0xfVEVYVFVSRV9JTlRF
Uk5BTF9GT1JNQVQKCgoKCiNkZWZpbmUgR0xfVkVSU0lPTl8xXzEgMQojZGVmaW5lIEdMX1ZFUlNJ
T05fMV8yIDEKI2RlZmluZSBHTF9WRVJTSU9OXzFfMyAxCiNkZWZpbmUgR0xfVkVSU0lPTl8xXzQg
MQojZGVmaW5lIEdMX1ZFUlNJT05fMV81IDEKI2RlZmluZSBHTF9WRVJTSU9OXzJfMCAxCiNkZWZp
bmUgR0xfVkVSU0lPTl8yXzEgMQoKCiNkZWZpbmUgR0xfQUNDVU0gMHgwMTAwCiNkZWZpbmUgR0xf
TE9BRCAweDAxMDEKI2RlZmluZSBHTF9SRVRVUk4gMHgwMTAyCiNkZWZpbmUgR0xfTVVMVCAweDAx
MDMKI2RlZmluZSBHTF9BREQgMHgwMTA0CgoKI2RlZmluZSBHTF9ORVZFUiAweDAyMDAKI2RlZmlu
ZSBHTF9MRVNTIDB4MDIwMQojZGVmaW5lIEdMX0VRVUFMIDB4MDIwMgojZGVmaW5lIEdMX0xFUVVB
TCAweDAyMDMKI2RlZmluZSBHTF9HUkVBVEVSIDB4MDIwNAojZGVmaW5lIEdMX05PVEVRVUFMIDB4
MDIwNQojZGVmaW5lIEdMX0dFUVVBTCAweDAyMDYKI2RlZmluZSBHTF9BTFdBWVMgMHgwMjA3CgoK
I2RlZmluZSBHTF9DVVJSRU5UX0JJVCAweDAwMDAwMDAxCiNkZWZpbmUgR0xfUE9JTlRfQklUIDB4
MDAwMDAwMDIKI2RlZmluZSBHTF9MSU5FX0JJVCAweDAwMDAwMDA0CiNkZWZpbmUgR0xfUE9MWUdP
Tl9CSVQgMHgwMDAwMDAwOAojZGVmaW5lIEdMX1BPTFlHT05fU1RJUFBMRV9CSVQgMHgwMDAwMDAx
MAojZGVmaW5lIEdMX1BJWEVMX01PREVfQklUIDB4MDAwMDAwMjAKI2RlZmluZSBHTF9MSUdIVElO
R19CSVQgMHgwMDAwMDA0MAojZGVmaW5lIEdMX0ZPR19CSVQgMHgwMDAwMDA4MAojZGVmaW5lIEdM
X0RFUFRIX0JVRkZFUl9CSVQgMHgwMDAwMDEwMAojZGVmaW5lIEdMX0FDQ1VNX0JVRkZFUl9CSVQg
MHgwMDAwMDIwMAojZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVCAweDAwMDAwNDAwCiNkZWZp
bmUgR0xfVklFV1BPUlRfQklUIDB4MDAwMDA4MDAKI2RlZmluZSBHTF9UUkFOU0ZPUk1fQklUIDB4
MDAwMDEwMDAKI2RlZmluZSBHTF9FTkFCTEVfQklUIDB4MDAwMDIwMDAKI2RlZmluZSBHTF9DT0xP
Ul9CVUZGRVJfQklUIDB4MDAwMDQwMDAKI2RlZmluZSBHTF9ISU5UX0JJVCAweDAwMDA4MDAwCiNk
ZWZpbmUgR0xfRVZBTF9CSVQgMHgwMDAxMDAwMAojZGVmaW5lIEdMX0xJU1RfQklUIDB4MDAwMjAw
MDAKI2RlZmluZSBHTF9URVhUVVJFX0JJVCAweDAwMDQwMDAwCiNkZWZpbmUgR0xfU0NJU1NPUl9C
SVQgMHgwMDA4MDAwMAojZGVmaW5lIEdMX0FMTF9BVFRSSUJfQklUUyAweDAwMGZmZmZmCgoKI2Rl
ZmluZSBHTF9QT0lOVFMgMHgwMDAwCiNkZWZpbmUgR0xfTElORVMgMHgwMDAxCiNkZWZpbmUgR0xf
TElORV9MT09QIDB4MDAwMgojZGVmaW5lIEdMX0xJTkVfU1RSSVAgMHgwMDAzCiNkZWZpbmUgR0xf
VFJJQU5HTEVTIDB4MDAwNAojZGVmaW5lIEdMX1RSSUFOR0xFX1NUUklQIDB4MDAwNQojZGVmaW5l
IEdMX1RSSUFOR0xFX0ZBTiAweDAwMDYKI2RlZmluZSBHTF9RVUFEUyAweDAwMDcKI2RlZmluZSBH
TF9RVUFEX1NUUklQIDB4MDAwOAojZGVmaW5lIEdMX1BPTFlHT04gMHgwMDA5CiMgMTQ0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2wuaCIgMwoj
ZGVmaW5lIEdMX1pFUk8gMAojZGVmaW5lIEdMX09ORSAxCiNkZWZpbmUgR0xfU1JDX0NPTE9SIDB4
MDMwMAojZGVmaW5lIEdMX09ORV9NSU5VU19TUkNfQ09MT1IgMHgwMzAxCiNkZWZpbmUgR0xfU1JD
X0FMUEhBIDB4MDMwMgojZGVmaW5lIEdMX09ORV9NSU5VU19TUkNfQUxQSEEgMHgwMzAzCiNkZWZp
bmUgR0xfRFNUX0FMUEhBIDB4MDMwNAojZGVmaW5lIEdMX09ORV9NSU5VU19EU1RfQUxQSEEgMHgw
MzA1CiMgMTYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hl
YWRlcnMvZ2wuaCIgMwojZGVmaW5lIEdMX0RTVF9DT0xPUiAweDAzMDYKI2RlZmluZSBHTF9PTkVf
TUlOVVNfRFNUX0NPTE9SIDB4MDMwNwojZGVmaW5lIEdMX1NSQ19BTFBIQV9TQVRVUkFURSAweDAz
MDgKIyAxNzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVh
ZGVycy9nbC5oIiAzCiNkZWZpbmUgR0xfVFJVRSAxCiNkZWZpbmUgR0xfRkFMU0UgMAojIDE5MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsLmgi
IDMKI2RlZmluZSBHTF9DTElQX1BMQU5FMCAweDMwMDAKI2RlZmluZSBHTF9DTElQX1BMQU5FMSAw
eDMwMDEKI2RlZmluZSBHTF9DTElQX1BMQU5FMiAweDMwMDIKI2RlZmluZSBHTF9DTElQX1BMQU5F
MyAweDMwMDMKI2RlZmluZSBHTF9DTElQX1BMQU5FNCAweDMwMDQKI2RlZmluZSBHTF9DTElQX1BM
QU5FNSAweDMwMDUKIyAyNTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFt
ZXdvcmsvSGVhZGVycy9nbC5oIiAzCiNkZWZpbmUgR0xfQllURSAweDE0MDAKI2RlZmluZSBHTF9V
TlNJR05FRF9CWVRFIDB4MTQwMQojZGVmaW5lIEdMX1NIT1JUIDB4MTQwMgojZGVmaW5lIEdMX1VO
U0lHTkVEX1NIT1JUIDB4MTQwMwojZGVmaW5lIEdMX0lOVCAweDE0MDQKI2RlZmluZSBHTF9VTlNJ
R05FRF9JTlQgMHgxNDA1CiNkZWZpbmUgR0xfRkxPQVQgMHgxNDA2CiNkZWZpbmUgR0xfMl9CWVRF
UyAweDE0MDcKI2RlZmluZSBHTF8zX0JZVEVTIDB4MTQwOAojZGVmaW5lIEdMXzRfQllURVMgMHgx
NDA5CiNkZWZpbmUgR0xfRE9VQkxFIDB4MTQwQQojIDI3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsLmgiIDMKI2RlZmluZSBHTF9OT05FIDAK
I2RlZmluZSBHTF9GUk9OVF9MRUZUIDB4MDQwMAojZGVmaW5lIEdMX0ZST05UX1JJR0hUIDB4MDQw
MQojZGVmaW5lIEdMX0JBQ0tfTEVGVCAweDA0MDIKI2RlZmluZSBHTF9CQUNLX1JJR0hUIDB4MDQw
MwojZGVmaW5lIEdMX0ZST05UIDB4MDQwNAojZGVmaW5lIEdMX0JBQ0sgMHgwNDA1CiNkZWZpbmUg
R0xfTEVGVCAweDA0MDYKI2RlZmluZSBHTF9SSUdIVCAweDA0MDcKI2RlZmluZSBHTF9GUk9OVF9B
TkRfQkFDSyAweDA0MDgKI2RlZmluZSBHTF9BVVgwIDB4MDQwOQojZGVmaW5lIEdMX0FVWDEgMHgw
NDBBCiNkZWZpbmUgR0xfQVVYMiAweDA0MEIKI2RlZmluZSBHTF9BVVgzIDB4MDQwQwojIDM2OSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsLmgi
IDMKI2RlZmluZSBHTF9OT19FUlJPUiAwCiNkZWZpbmUgR0xfSU5WQUxJRF9FTlVNIDB4MDUwMAoj
ZGVmaW5lIEdMX0lOVkFMSURfVkFMVUUgMHgwNTAxCiNkZWZpbmUgR0xfSU5WQUxJRF9PUEVSQVRJ
T04gMHgwNTAyCiNkZWZpbmUgR0xfU1RBQ0tfT1ZFUkZMT1cgMHgwNTAzCiNkZWZpbmUgR0xfU1RB
Q0tfVU5ERVJGTE9XIDB4MDUwNAojZGVmaW5lIEdMX09VVF9PRl9NRU1PUlkgMHgwNTA1CgoKCiNk
ZWZpbmUgR0xfMkQgMHgwNjAwCiNkZWZpbmUgR0xfM0QgMHgwNjAxCiNkZWZpbmUgR0xfM0RfQ09M
T1IgMHgwNjAyCiNkZWZpbmUgR0xfM0RfQ09MT1JfVEVYVFVSRSAweDA2MDMKI2RlZmluZSBHTF80
RF9DT0xPUl9URVhUVVJFIDB4MDYwNAoKCiNkZWZpbmUgR0xfUEFTU19USFJPVUdIX1RPS0VOIDB4
MDcwMAojZGVmaW5lIEdMX1BPSU5UX1RPS0VOIDB4MDcwMQojZGVmaW5lIEdMX0xJTkVfVE9LRU4g
MHgwNzAyCiNkZWZpbmUgR0xfUE9MWUdPTl9UT0tFTiAweDA3MDMKI2RlZmluZSBHTF9CSVRNQVBf
VE9LRU4gMHgwNzA0CiNkZWZpbmUgR0xfRFJBV19QSVhFTF9UT0tFTiAweDA3MDUKI2RlZmluZSBH
TF9DT1BZX1BJWEVMX1RPS0VOIDB4MDcwNgojZGVmaW5lIEdMX0xJTkVfUkVTRVRfVE9LRU4gMHgw
NzA3CgoKCiNkZWZpbmUgR0xfRVhQIDB4MDgwMAojZGVmaW5lIEdMX0VYUDIgMHgwODAxCiMgNDA5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2wu
aCIgMwojZGVmaW5lIEdMX0NXIDB4MDkwMAojZGVmaW5lIEdMX0NDVyAweDA5MDEKIyA0NDYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbC5oIiAz
CiNkZWZpbmUgR0xfQ09FRkYgMHgwQTAwCiNkZWZpbmUgR0xfT1JERVIgMHgwQTAxCiNkZWZpbmUg
R0xfRE9NQUlOIDB4MEEwMgojIDQ3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdM
LmZyYW1ld29yay9IZWFkZXJzL2dsLmgiIDMKI2RlZmluZSBHTF9DVVJSRU5UX0NPTE9SIDB4MEIw
MAojZGVmaW5lIEdMX0NVUlJFTlRfSU5ERVggMHgwQjAxCiNkZWZpbmUgR0xfQ1VSUkVOVF9OT1JN
QUwgMHgwQjAyCiNkZWZpbmUgR0xfQ1VSUkVOVF9URVhUVVJFX0NPT1JEUyAweDBCMDMKI2RlZmlu
ZSBHTF9DVVJSRU5UX1JBU1RFUl9DT0xPUiAweDBCMDQKI2RlZmluZSBHTF9DVVJSRU5UX1JBU1RF
Ul9JTkRFWCAweDBCMDUKI2RlZmluZSBHTF9DVVJSRU5UX1JBU1RFUl9URVhUVVJFX0NPT1JEUyAw
eDBCMDYKI2RlZmluZSBHTF9DVVJSRU5UX1JBU1RFUl9QT1NJVElPTiAweDBCMDcKI2RlZmluZSBH
TF9DVVJSRU5UX1JBU1RFUl9QT1NJVElPTl9WQUxJRCAweDBCMDgKI2RlZmluZSBHTF9DVVJSRU5U
X1JBU1RFUl9ESVNUQU5DRSAweDBCMDkKI2RlZmluZSBHTF9QT0lOVF9TTU9PVEggMHgwQjEwCiNk
ZWZpbmUgR0xfUE9JTlRfU0laRSAweDBCMTEKI2RlZmluZSBHTF9QT0lOVF9TSVpFX1JBTkdFIDB4
MEIxMgojZGVmaW5lIEdMX1BPSU5UX1NJWkVfR1JBTlVMQVJJVFkgMHgwQjEzCiNkZWZpbmUgR0xf
TElORV9TTU9PVEggMHgwQjIwCiNkZWZpbmUgR0xfTElORV9XSURUSCAweDBCMjEKI2RlZmluZSBH
TF9MSU5FX1dJRFRIX1JBTkdFIDB4MEIyMgojZGVmaW5lIEdMX0xJTkVfV0lEVEhfR1JBTlVMQVJJ
VFkgMHgwQjIzCiNkZWZpbmUgR0xfTElORV9TVElQUExFIDB4MEIyNAojZGVmaW5lIEdMX0xJTkVf
U1RJUFBMRV9QQVRURVJOIDB4MEIyNQojZGVmaW5lIEdMX0xJTkVfU1RJUFBMRV9SRVBFQVQgMHgw
QjI2CgoKCgoKCiNkZWZpbmUgR0xfTElTVF9NT0RFIDB4MEIzMAojZGVmaW5lIEdMX01BWF9MSVNU
X05FU1RJTkcgMHgwQjMxCiNkZWZpbmUgR0xfTElTVF9CQVNFIDB4MEIzMgojZGVmaW5lIEdMX0xJ
U1RfSU5ERVggMHgwQjMzCiNkZWZpbmUgR0xfUE9MWUdPTl9NT0RFIDB4MEI0MAojZGVmaW5lIEdM
X1BPTFlHT05fU01PT1RIIDB4MEI0MQojZGVmaW5lIEdMX1BPTFlHT05fU1RJUFBMRSAweDBCNDIK
I2RlZmluZSBHTF9FREdFX0ZMQUcgMHgwQjQzCiNkZWZpbmUgR0xfQ1VMTF9GQUNFIDB4MEI0NAoj
ZGVmaW5lIEdMX0NVTExfRkFDRV9NT0RFIDB4MEI0NQojZGVmaW5lIEdMX0ZST05UX0ZBQ0UgMHgw
QjQ2CiNkZWZpbmUgR0xfTElHSFRJTkcgMHgwQjUwCiNkZWZpbmUgR0xfTElHSFRfTU9ERUxfTE9D
QUxfVklFV0VSIDB4MEI1MQojZGVmaW5lIEdMX0xJR0hUX01PREVMX1RXT19TSURFIDB4MEI1Mgoj
ZGVmaW5lIEdMX0xJR0hUX01PREVMX0FNQklFTlQgMHgwQjUzCiNkZWZpbmUgR0xfU0hBREVfTU9E
RUwgMHgwQjU0CiNkZWZpbmUgR0xfQ09MT1JfTUFURVJJQUxfRkFDRSAweDBCNTUKI2RlZmluZSBH
TF9DT0xPUl9NQVRFUklBTF9QQVJBTUVURVIgMHgwQjU2CiNkZWZpbmUgR0xfQ09MT1JfTUFURVJJ
QUwgMHgwQjU3CiNkZWZpbmUgR0xfRk9HIDB4MEI2MAojZGVmaW5lIEdMX0ZPR19JTkRFWCAweDBC
NjEKI2RlZmluZSBHTF9GT0dfREVOU0lUWSAweDBCNjIKI2RlZmluZSBHTF9GT0dfU1RBUlQgMHgw
QjYzCiNkZWZpbmUgR0xfRk9HX0VORCAweDBCNjQKI2RlZmluZSBHTF9GT0dfTU9ERSAweDBCNjUK
I2RlZmluZSBHTF9GT0dfQ09MT1IgMHgwQjY2CiNkZWZpbmUgR0xfREVQVEhfUkFOR0UgMHgwQjcw
CiNkZWZpbmUgR0xfREVQVEhfVEVTVCAweDBCNzEKI2RlZmluZSBHTF9ERVBUSF9XUklURU1BU0sg
MHgwQjcyCiNkZWZpbmUgR0xfREVQVEhfQ0xFQVJfVkFMVUUgMHgwQjczCiNkZWZpbmUgR0xfREVQ
VEhfRlVOQyAweDBCNzQKI2RlZmluZSBHTF9BQ0NVTV9DTEVBUl9WQUxVRSAweDBCODAKI2RlZmlu
ZSBHTF9TVEVOQ0lMX1RFU1QgMHgwQjkwCiNkZWZpbmUgR0xfU1RFTkNJTF9DTEVBUl9WQUxVRSAw
eDBCOTEKI2RlZmluZSBHTF9TVEVOQ0lMX0ZVTkMgMHgwQjkyCiNkZWZpbmUgR0xfU1RFTkNJTF9W
QUxVRV9NQVNLIDB4MEI5MwojZGVmaW5lIEdMX1NURU5DSUxfRkFJTCAweDBCOTQKI2RlZmluZSBH
TF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCAweDBCOTUKI2RlZmluZSBHTF9TVEVOQ0lMX1BBU1Nf
REVQVEhfUEFTUyAweDBCOTYKI2RlZmluZSBHTF9TVEVOQ0lMX1JFRiAweDBCOTcKI2RlZmluZSBH
TF9TVEVOQ0lMX1dSSVRFTUFTSyAweDBCOTgKI2RlZmluZSBHTF9NQVRSSVhfTU9ERSAweDBCQTAK
I2RlZmluZSBHTF9OT1JNQUxJWkUgMHgwQkExCiNkZWZpbmUgR0xfVklFV1BPUlQgMHgwQkEyCiNk
ZWZpbmUgR0xfTU9ERUxWSUVXX1NUQUNLX0RFUFRIIDB4MEJBMwojZGVmaW5lIEdMX1BST0pFQ1RJ
T05fU1RBQ0tfREVQVEggMHgwQkE0CiNkZWZpbmUgR0xfVEVYVFVSRV9TVEFDS19ERVBUSCAweDBC
QTUKI2RlZmluZSBHTF9NT0RFTFZJRVdfTUFUUklYIDB4MEJBNgojZGVmaW5lIEdMX1BST0pFQ1RJ
T05fTUFUUklYIDB4MEJBNwojZGVmaW5lIEdMX1RFWFRVUkVfTUFUUklYIDB4MEJBOAojZGVmaW5l
IEdMX0FUVFJJQl9TVEFDS19ERVBUSCAweDBCQjAKI2RlZmluZSBHTF9DTElFTlRfQVRUUklCX1NU
QUNLX0RFUFRIIDB4MEJCMQojZGVmaW5lIEdMX0FMUEhBX1RFU1QgMHgwQkMwCiNkZWZpbmUgR0xf
QUxQSEFfVEVTVF9GVU5DIDB4MEJDMQojZGVmaW5lIEdMX0FMUEhBX1RFU1RfUkVGIDB4MEJDMgoj
ZGVmaW5lIEdMX0RJVEhFUiAweDBCRDAKI2RlZmluZSBHTF9CTEVORF9EU1QgMHgwQkUwCiNkZWZp
bmUgR0xfQkxFTkRfU1JDIDB4MEJFMQojZGVmaW5lIEdMX0JMRU5EIDB4MEJFMgojZGVmaW5lIEdM
X0xPR0lDX09QX01PREUgMHgwQkYwCiNkZWZpbmUgR0xfSU5ERVhfTE9HSUNfT1AgMHgwQkYxCiNk
ZWZpbmUgR0xfQ09MT1JfTE9HSUNfT1AgMHgwQkYyCiNkZWZpbmUgR0xfQVVYX0JVRkZFUlMgMHgw
QzAwCiNkZWZpbmUgR0xfRFJBV19CVUZGRVIgMHgwQzAxCiNkZWZpbmUgR0xfUkVBRF9CVUZGRVIg
MHgwQzAyCiNkZWZpbmUgR0xfU0NJU1NPUl9CT1ggMHgwQzEwCiNkZWZpbmUgR0xfU0NJU1NPUl9U
RVNUIDB4MEMxMQojZGVmaW5lIEdMX0lOREVYX0NMRUFSX1ZBTFVFIDB4MEMyMAojZGVmaW5lIEdM
X0lOREVYX1dSSVRFTUFTSyAweDBDMjEKI2RlZmluZSBHTF9DT0xPUl9DTEVBUl9WQUxVRSAweDBD
MjIKI2RlZmluZSBHTF9DT0xPUl9XUklURU1BU0sgMHgwQzIzCiNkZWZpbmUgR0xfSU5ERVhfTU9E
RSAweDBDMzAKI2RlZmluZSBHTF9SR0JBX01PREUgMHgwQzMxCiNkZWZpbmUgR0xfRE9VQkxFQlVG
RkVSIDB4MEMzMgojZGVmaW5lIEdMX1NURVJFTyAweDBDMzMKI2RlZmluZSBHTF9SRU5ERVJfTU9E
RSAweDBDNDAKI2RlZmluZSBHTF9QRVJTUEVDVElWRV9DT1JSRUNUSU9OX0hJTlQgMHgwQzUwCiNk
ZWZpbmUgR0xfUE9JTlRfU01PT1RIX0hJTlQgMHgwQzUxCiNkZWZpbmUgR0xfTElORV9TTU9PVEhf
SElOVCAweDBDNTIKI2RlZmluZSBHTF9QT0xZR09OX1NNT09USF9ISU5UIDB4MEM1MwojZGVmaW5l
IEdMX0ZPR19ISU5UIDB4MEM1NAojZGVmaW5lIEdMX1RFWFRVUkVfR0VOX1MgMHgwQzYwCiNkZWZp
bmUgR0xfVEVYVFVSRV9HRU5fVCAweDBDNjEKI2RlZmluZSBHTF9URVhUVVJFX0dFTl9SIDB4MEM2
MgojZGVmaW5lIEdMX1RFWFRVUkVfR0VOX1EgMHgwQzYzCiNkZWZpbmUgR0xfUElYRUxfTUFQX0lf
VE9fSSAweDBDNzAKI2RlZmluZSBHTF9QSVhFTF9NQVBfU19UT19TIDB4MEM3MQojZGVmaW5lIEdM
X1BJWEVMX01BUF9JX1RPX1IgMHgwQzcyCiNkZWZpbmUgR0xfUElYRUxfTUFQX0lfVE9fRyAweDBD
NzMKI2RlZmluZSBHTF9QSVhFTF9NQVBfSV9UT19CIDB4MEM3NAojZGVmaW5lIEdMX1BJWEVMX01B
UF9JX1RPX0EgMHgwQzc1CiNkZWZpbmUgR0xfUElYRUxfTUFQX1JfVE9fUiAweDBDNzYKI2RlZmlu
ZSBHTF9QSVhFTF9NQVBfR19UT19HIDB4MEM3NwojZGVmaW5lIEdMX1BJWEVMX01BUF9CX1RPX0Ig
MHgwQzc4CiNkZWZpbmUgR0xfUElYRUxfTUFQX0FfVE9fQSAweDBDNzkKI2RlZmluZSBHTF9QSVhF
TF9NQVBfSV9UT19JX1NJWkUgMHgwQ0IwCiNkZWZpbmUgR0xfUElYRUxfTUFQX1NfVE9fU19TSVpF
IDB4MENCMQojZGVmaW5lIEdMX1BJWEVMX01BUF9JX1RPX1JfU0laRSAweDBDQjIKI2RlZmluZSBH
TF9QSVhFTF9NQVBfSV9UT19HX1NJWkUgMHgwQ0IzCiNkZWZpbmUgR0xfUElYRUxfTUFQX0lfVE9f
Ql9TSVpFIDB4MENCNAojZGVmaW5lIEdMX1BJWEVMX01BUF9JX1RPX0FfU0laRSAweDBDQjUKI2Rl
ZmluZSBHTF9QSVhFTF9NQVBfUl9UT19SX1NJWkUgMHgwQ0I2CiNkZWZpbmUgR0xfUElYRUxfTUFQ
X0dfVE9fR19TSVpFIDB4MENCNwojZGVmaW5lIEdMX1BJWEVMX01BUF9CX1RPX0JfU0laRSAweDBD
QjgKI2RlZmluZSBHTF9QSVhFTF9NQVBfQV9UT19BX1NJWkUgMHgwQ0I5CiNkZWZpbmUgR0xfVU5Q
QUNLX1NXQVBfQllURVMgMHgwQ0YwCiNkZWZpbmUgR0xfVU5QQUNLX0xTQl9GSVJTVCAweDBDRjEK
I2RlZmluZSBHTF9VTlBBQ0tfUk9XX0xFTkdUSCAweDBDRjIKI2RlZmluZSBHTF9VTlBBQ0tfU0tJ
UF9ST1dTIDB4MENGMwojZGVmaW5lIEdMX1VOUEFDS19TS0lQX1BJWEVMUyAweDBDRjQKI2RlZmlu
ZSBHTF9VTlBBQ0tfQUxJR05NRU5UIDB4MENGNQojZGVmaW5lIEdMX1BBQ0tfU1dBUF9CWVRFUyAw
eDBEMDAKI2RlZmluZSBHTF9QQUNLX0xTQl9GSVJTVCAweDBEMDEKI2RlZmluZSBHTF9QQUNLX1JP
V19MRU5HVEggMHgwRDAyCiNkZWZpbmUgR0xfUEFDS19TS0lQX1JPV1MgMHgwRDAzCiNkZWZpbmUg
R0xfUEFDS19TS0lQX1BJWEVMUyAweDBEMDQKI2RlZmluZSBHTF9QQUNLX0FMSUdOTUVOVCAweDBE
MDUKI2RlZmluZSBHTF9NQVBfQ09MT1IgMHgwRDEwCiNkZWZpbmUgR0xfTUFQX1NURU5DSUwgMHgw
RDExCiNkZWZpbmUgR0xfSU5ERVhfU0hJRlQgMHgwRDEyCiNkZWZpbmUgR0xfSU5ERVhfT0ZGU0VU
IDB4MEQxMwojZGVmaW5lIEdMX1JFRF9TQ0FMRSAweDBEMTQKI2RlZmluZSBHTF9SRURfQklBUyAw
eDBEMTUKI2RlZmluZSBHTF9aT09NX1ggMHgwRDE2CiNkZWZpbmUgR0xfWk9PTV9ZIDB4MEQxNwoj
ZGVmaW5lIEdMX0dSRUVOX1NDQUxFIDB4MEQxOAojZGVmaW5lIEdMX0dSRUVOX0JJQVMgMHgwRDE5
CiNkZWZpbmUgR0xfQkxVRV9TQ0FMRSAweDBEMUEKI2RlZmluZSBHTF9CTFVFX0JJQVMgMHgwRDFC
CiNkZWZpbmUgR0xfQUxQSEFfU0NBTEUgMHgwRDFDCiNkZWZpbmUgR0xfQUxQSEFfQklBUyAweDBE
MUQKI2RlZmluZSBHTF9ERVBUSF9TQ0FMRSAweDBEMUUKI2RlZmluZSBHTF9ERVBUSF9CSUFTIDB4
MEQxRgojZGVmaW5lIEdMX01BWF9FVkFMX09SREVSIDB4MEQzMAojZGVmaW5lIEdMX01BWF9MSUdI
VFMgMHgwRDMxCiNkZWZpbmUgR0xfTUFYX0NMSVBfUExBTkVTIDB4MEQzMgojZGVmaW5lIEdMX01B
WF9URVhUVVJFX1NJWkUgMHgwRDMzCiNkZWZpbmUgR0xfTUFYX1BJWEVMX01BUF9UQUJMRSAweDBE
MzQKI2RlZmluZSBHTF9NQVhfQVRUUklCX1NUQUNLX0RFUFRIIDB4MEQzNQojZGVmaW5lIEdMX01B
WF9NT0RFTFZJRVdfU1RBQ0tfREVQVEggMHgwRDM2CiNkZWZpbmUgR0xfTUFYX05BTUVfU1RBQ0tf
REVQVEggMHgwRDM3CiNkZWZpbmUgR0xfTUFYX1BST0pFQ1RJT05fU1RBQ0tfREVQVEggMHgwRDM4
CiNkZWZpbmUgR0xfTUFYX1RFWFRVUkVfU1RBQ0tfREVQVEggMHgwRDM5CiNkZWZpbmUgR0xfTUFY
X1ZJRVdQT1JUX0RJTVMgMHgwRDNBCiNkZWZpbmUgR0xfTUFYX0NMSUVOVF9BVFRSSUJfU1RBQ0tf
REVQVEggMHgwRDNCCiNkZWZpbmUgR0xfU1VCUElYRUxfQklUUyAweDBENTAKI2RlZmluZSBHTF9J
TkRFWF9CSVRTIDB4MEQ1MQojZGVmaW5lIEdMX1JFRF9CSVRTIDB4MEQ1MgojZGVmaW5lIEdMX0dS
RUVOX0JJVFMgMHgwRDUzCiNkZWZpbmUgR0xfQkxVRV9CSVRTIDB4MEQ1NAojZGVmaW5lIEdMX0FM
UEhBX0JJVFMgMHgwRDU1CiNkZWZpbmUgR0xfREVQVEhfQklUUyAweDBENTYKI2RlZmluZSBHTF9T
VEVOQ0lMX0JJVFMgMHgwRDU3CiNkZWZpbmUgR0xfQUNDVU1fUkVEX0JJVFMgMHgwRDU4CiNkZWZp
bmUgR0xfQUNDVU1fR1JFRU5fQklUUyAweDBENTkKI2RlZmluZSBHTF9BQ0NVTV9CTFVFX0JJVFMg
MHgwRDVBCiNkZWZpbmUgR0xfQUNDVU1fQUxQSEFfQklUUyAweDBENUIKI2RlZmluZSBHTF9OQU1F
X1NUQUNLX0RFUFRIIDB4MEQ3MAojZGVmaW5lIEdMX0FVVE9fTk9STUFMIDB4MEQ4MAojZGVmaW5l
IEdMX01BUDFfQ09MT1JfNCAweDBEOTAKI2RlZmluZSBHTF9NQVAxX0lOREVYIDB4MEQ5MQojZGVm
aW5lIEdMX01BUDFfTk9STUFMIDB4MEQ5MgojZGVmaW5lIEdMX01BUDFfVEVYVFVSRV9DT09SRF8x
IDB4MEQ5MwojZGVmaW5lIEdMX01BUDFfVEVYVFVSRV9DT09SRF8yIDB4MEQ5NAojZGVmaW5lIEdM
X01BUDFfVEVYVFVSRV9DT09SRF8zIDB4MEQ5NQojZGVmaW5lIEdMX01BUDFfVEVYVFVSRV9DT09S
RF80IDB4MEQ5NgojZGVmaW5lIEdMX01BUDFfVkVSVEVYXzMgMHgwRDk3CiNkZWZpbmUgR0xfTUFQ
MV9WRVJURVhfNCAweDBEOTgKI2RlZmluZSBHTF9NQVAyX0NPTE9SXzQgMHgwREIwCiNkZWZpbmUg
R0xfTUFQMl9JTkRFWCAweDBEQjEKI2RlZmluZSBHTF9NQVAyX05PUk1BTCAweDBEQjIKI2RlZmlu
ZSBHTF9NQVAyX1RFWFRVUkVfQ09PUkRfMSAweDBEQjMKI2RlZmluZSBHTF9NQVAyX1RFWFRVUkVf
Q09PUkRfMiAweDBEQjQKI2RlZmluZSBHTF9NQVAyX1RFWFRVUkVfQ09PUkRfMyAweDBEQjUKI2Rl
ZmluZSBHTF9NQVAyX1RFWFRVUkVfQ09PUkRfNCAweDBEQjYKI2RlZmluZSBHTF9NQVAyX1ZFUlRF
WF8zIDB4MERCNwojZGVmaW5lIEdMX01BUDJfVkVSVEVYXzQgMHgwREI4CiNkZWZpbmUgR0xfTUFQ
MV9HUklEX0RPTUFJTiAweDBERDAKI2RlZmluZSBHTF9NQVAxX0dSSURfU0VHTUVOVFMgMHgwREQx
CiNkZWZpbmUgR0xfTUFQMl9HUklEX0RPTUFJTiAweDBERDIKI2RlZmluZSBHTF9NQVAyX0dSSURf
U0VHTUVOVFMgMHgwREQzCiNkZWZpbmUgR0xfVEVYVFVSRV8xRCAweDBERTAKI2RlZmluZSBHTF9U
RVhUVVJFXzJEIDB4MERFMQojZGVmaW5lIEdMX0ZFRURCQUNLX0JVRkZFUl9QT0lOVEVSIDB4MERG
MAojZGVmaW5lIEdMX0ZFRURCQUNLX0JVRkZFUl9TSVpFIDB4MERGMQojZGVmaW5lIEdMX0ZFRURC
QUNLX0JVRkZFUl9UWVBFIDB4MERGMgojZGVmaW5lIEdMX1NFTEVDVElPTl9CVUZGRVJfUE9JTlRF
UiAweDBERjMKI2RlZmluZSBHTF9TRUxFQ1RJT05fQlVGRkVSX1NJWkUgMHgwREY0CiMgNzYwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMvZ2wuaCIg
MwojZGVmaW5lIEdMX1RFWFRVUkVfV0lEVEggMHgxMDAwCiNkZWZpbmUgR0xfVEVYVFVSRV9IRUlH
SFQgMHgxMDAxCiNkZWZpbmUgR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVQgMHgxMDAzCiNkZWZp
bmUgR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IgMHgxMDA0CiNkZWZpbmUgR0xfVEVYVFVSRV9CT1JE
RVIgMHgxMDA1CiMgNzgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3
b3JrL0hlYWRlcnMvZ2wuaCIgMwojZGVmaW5lIEdMX0RPTlRfQ0FSRSAweDExMDAKI2RlZmluZSBH
TF9GQVNURVNUIDB4MTEwMQojZGVmaW5lIEdMX05JQ0VTVCAweDExMDIKIyA4MTMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbC5oIiAzCiNkZWZp
bmUgR0xfTElHSFQwIDB4NDAwMAojZGVmaW5lIEdMX0xJR0hUMSAweDQwMDEKI2RlZmluZSBHTF9M
SUdIVDIgMHg0MDAyCiNkZWZpbmUgR0xfTElHSFQzIDB4NDAwMwojZGVmaW5lIEdMX0xJR0hUNCAw
eDQwMDQKI2RlZmluZSBHTF9MSUdIVDUgMHg0MDA1CiNkZWZpbmUgR0xfTElHSFQ2IDB4NDAwNgoj
ZGVmaW5lIEdMX0xJR0hUNyAweDQwMDcKCgojZGVmaW5lIEdMX0FNQklFTlQgMHgxMjAwCiNkZWZp
bmUgR0xfRElGRlVTRSAweDEyMDEKI2RlZmluZSBHTF9TUEVDVUxBUiAweDEyMDIKI2RlZmluZSBH
TF9QT1NJVElPTiAweDEyMDMKI2RlZmluZSBHTF9TUE9UX0RJUkVDVElPTiAweDEyMDQKI2RlZmlu
ZSBHTF9TUE9UX0VYUE9ORU5UIDB4MTIwNQojZGVmaW5lIEdMX1NQT1RfQ1VUT0ZGIDB4MTIwNgoj
ZGVmaW5lIEdMX0NPTlNUQU5UX0FUVEVOVUFUSU9OIDB4MTIwNwojZGVmaW5lIEdMX0xJTkVBUl9B
VFRFTlVBVElPTiAweDEyMDgKI2RlZmluZSBHTF9RVUFEUkFUSUNfQVRURU5VQVRJT04gMHgxMjA5
CiMgODUxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRl
cnMvZ2wuaCIgMwojZGVmaW5lIEdMX0NPTVBJTEUgMHgxMzAwCiNkZWZpbmUgR0xfQ09NUElMRV9B
TkRfRVhFQ1VURSAweDEzMDEKIyA4NjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5H
TC5mcmFtZXdvcmsvSGVhZGVycy9nbC5oIiAzCiNkZWZpbmUgR0xfQ0xFQVIgMHgxNTAwCiNkZWZp
bmUgR0xfQU5EIDB4MTUwMQojZGVmaW5lIEdMX0FORF9SRVZFUlNFIDB4MTUwMgojZGVmaW5lIEdM
X0NPUFkgMHgxNTAzCiNkZWZpbmUgR0xfQU5EX0lOVkVSVEVEIDB4MTUwNAojZGVmaW5lIEdMX05P
T1AgMHgxNTA1CiNkZWZpbmUgR0xfWE9SIDB4MTUwNgojZGVmaW5lIEdMX09SIDB4MTUwNwojZGVm
aW5lIEdMX05PUiAweDE1MDgKI2RlZmluZSBHTF9FUVVJViAweDE1MDkKI2RlZmluZSBHTF9JTlZF
UlQgMHgxNTBBCiNkZWZpbmUgR0xfT1JfUkVWRVJTRSAweDE1MEIKI2RlZmluZSBHTF9DT1BZX0lO
VkVSVEVEIDB4MTUwQwojZGVmaW5lIEdMX09SX0lOVkVSVEVEIDB4MTUwRAojZGVmaW5lIEdMX05B
TkQgMHgxNTBFCiNkZWZpbmUgR0xfU0VUIDB4MTUwRgojIDkxMCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsLmgiIDMKI2RlZmluZSBHTF9FTUlT
U0lPTiAweDE2MDAKI2RlZmluZSBHTF9TSElOSU5FU1MgMHgxNjAxCiNkZWZpbmUgR0xfQU1CSUVO
VF9BTkRfRElGRlVTRSAweDE2MDIKI2RlZmluZSBHTF9DT0xPUl9JTkRFWEVTIDB4MTYwMwoKCgoK
CiNkZWZpbmUgR0xfTU9ERUxWSUVXIDB4MTcwMAojZGVmaW5lIEdMX1BST0pFQ1RJT04gMHgxNzAx
CiNkZWZpbmUgR0xfVEVYVFVSRSAweDE3MDIKIyA5NDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9nbC5oIiAzCiNkZWZpbmUgR0xfQ09MT1IgMHgx
ODAwCiNkZWZpbmUgR0xfREVQVEggMHgxODAxCiNkZWZpbmUgR0xfU1RFTkNJTCAweDE4MDIKCgoj
ZGVmaW5lIEdMX0NPTE9SX0lOREVYIDB4MTkwMAojZGVmaW5lIEdMX1NURU5DSUxfSU5ERVggMHgx
OTAxCiNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UIDB4MTkwMgojZGVmaW5lIEdMX1JFRCAweDE5
MDMKI2RlZmluZSBHTF9HUkVFTiAweDE5MDQKI2RlZmluZSBHTF9CTFVFIDB4MTkwNQojZGVmaW5l
IEdMX0FMUEhBIDB4MTkwNgojZGVmaW5lIEdMX1JHQiAweDE5MDcKI2RlZmluZSBHTF9SR0JBIDB4
MTkwOAojZGVmaW5lIEdMX0xVTUlOQU5DRSAweDE5MDkKI2RlZmluZSBHTF9MVU1JTkFOQ0VfQUxQ
SEEgMHgxOTBBCiMgMTA1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1l
d29yay9IZWFkZXJzL2dsLmgiIDMKI2RlZmluZSBHTF9CSVRNQVAgMHgxQTAwCiMgMTA4MyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsLmgiIDMK
I2RlZmluZSBHTF9QT0lOVCAweDFCMDAKI2RlZmluZSBHTF9MSU5FIDB4MUIwMQojZGVmaW5lIEdM
X0ZJTEwgMHgxQjAyCiMgMTEwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZy
YW1ld29yay9IZWFkZXJzL2dsLmgiIDMKI2RlZmluZSBHTF9SRU5ERVIgMHgxQzAwCiNkZWZpbmUg
R0xfRkVFREJBQ0sgMHgxQzAxCiNkZWZpbmUgR0xfU0VMRUNUIDB4MUMwMgoKCgoKCiNkZWZpbmUg
R0xfRkxBVCAweDFEMDAKI2RlZmluZSBHTF9TTU9PVEggMHgxRDAxCiMgMTEyNSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsLmgiIDMKI2RlZmlu
ZSBHTF9LRUVQIDB4MUUwMAojZGVmaW5lIEdMX1JFUExBQ0UgMHgxRTAxCiNkZWZpbmUgR0xfSU5D
UiAweDFFMDIKI2RlZmluZSBHTF9ERUNSIDB4MUUwMwoKCgojZGVmaW5lIEdMX1ZFTkRPUiAweDFG
MDAKI2RlZmluZSBHTF9SRU5ERVJFUiAweDFGMDEKI2RlZmluZSBHTF9WRVJTSU9OIDB4MUYwMgoj
ZGVmaW5lIEdMX0VYVEVOU0lPTlMgMHgxRjAzCgoKI2RlZmluZSBHTF9TIDB4MjAwMAojZGVmaW5l
IEdMX1QgMHgyMDAxCiNkZWZpbmUgR0xfUiAweDIwMDIKI2RlZmluZSBHTF9RIDB4MjAwMwojIDEx
NTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9n
bC5oIiAzCiNkZWZpbmUgR0xfTU9EVUxBVEUgMHgyMTAwCiNkZWZpbmUgR0xfREVDQUwgMHgyMTAx
CgoKCgojZGVmaW5lIEdMX1RFWFRVUkVfRU5WX01PREUgMHgyMjAwCiNkZWZpbmUgR0xfVEVYVFVS
RV9FTlZfQ09MT1IgMHgyMjAxCgoKI2RlZmluZSBHTF9URVhUVVJFX0VOViAweDIzMDAKCgojZGVm
aW5lIEdMX0VZRV9MSU5FQVIgMHgyNDAwCiNkZWZpbmUgR0xfT0JKRUNUX0xJTkVBUiAweDI0MDEK
I2RlZmluZSBHTF9TUEhFUkVfTUFQIDB4MjQwMgoKCiNkZWZpbmUgR0xfVEVYVFVSRV9HRU5fTU9E
RSAweDI1MDAKI2RlZmluZSBHTF9PQkpFQ1RfUExBTkUgMHgyNTAxCiNkZWZpbmUgR0xfRVlFX1BM
QU5FIDB4MjUwMgoKCiNkZWZpbmUgR0xfTkVBUkVTVCAweDI2MDAKI2RlZmluZSBHTF9MSU5FQVIg
MHgyNjAxCgoKCgojZGVmaW5lIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QgMHgyNzAwCiNkZWZp
bmUgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUIDB4MjcwMQojZGVmaW5lIEdMX05FQVJFU1RfTUlQ
TUFQX0xJTkVBUiAweDI3MDIKI2RlZmluZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUiAweDI3MDMK
CgojZGVmaW5lIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiAweDI4MDAKI2RlZmluZSBHTF9URVhUVVJF
X01JTl9GSUxURVIgMHgyODAxCiNkZWZpbmUgR0xfVEVYVFVSRV9XUkFQX1MgMHgyODAyCiNkZWZp
bmUgR0xfVEVYVFVSRV9XUkFQX1QgMHgyODAzCiMgMTIwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsLmgiIDMKI2RlZmluZSBHTF9DTEFNUCAw
eDI5MDAKI2RlZmluZSBHTF9SRVBFQVQgMHgyOTAxCiMgMTIxNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsLmgiIDMKI2RlZmluZSBHTF9DTElF
TlRfUElYRUxfU1RPUkVfQklUIDB4MDAwMDAwMDEKI2RlZmluZSBHTF9DTElFTlRfVkVSVEVYX0FS
UkFZX0JJVCAweDAwMDAwMDAyCiNkZWZpbmUgR0xfQ0xJRU5UX0FMTF9BVFRSSUJfQklUUyAweGZm
ZmZmZmZmCgoKI2RlZmluZSBHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IgMHg4MDM4CiNkZWZpbmUg
R0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMgMHgyQTAwCiNkZWZpbmUgR0xfUE9MWUdPTl9PRkZTRVRf
UE9JTlQgMHgyQTAxCiNkZWZpbmUgR0xfUE9MWUdPTl9PRkZTRVRfTElORSAweDJBMDIKI2RlZmlu
ZSBHTF9QT0xZR09OX09GRlNFVF9GSUxMIDB4ODAzNwoKCiNkZWZpbmUgR0xfQUxQSEE0IDB4ODAz
QgojZGVmaW5lIEdMX0FMUEhBOCAweDgwM0MKI2RlZmluZSBHTF9BTFBIQTEyIDB4ODAzRAojZGVm
aW5lIEdMX0FMUEhBMTYgMHg4MDNFCiNkZWZpbmUgR0xfTFVNSU5BTkNFNCAweDgwM0YKI2RlZmlu
ZSBHTF9MVU1JTkFOQ0U4IDB4ODA0MAojZGVmaW5lIEdMX0xVTUlOQU5DRTEyIDB4ODA0MQojZGVm
aW5lIEdMX0xVTUlOQU5DRTE2IDB4ODA0MgojZGVmaW5lIEdMX0xVTUlOQU5DRTRfQUxQSEE0IDB4
ODA0MwojZGVmaW5lIEdMX0xVTUlOQU5DRTZfQUxQSEEyIDB4ODA0NAojZGVmaW5lIEdMX0xVTUlO
QU5DRThfQUxQSEE4IDB4ODA0NQojZGVmaW5lIEdMX0xVTUlOQU5DRTEyX0FMUEhBNCAweDgwNDYK
I2RlZmluZSBHTF9MVU1JTkFOQ0UxMl9BTFBIQTEyIDB4ODA0NwojZGVmaW5lIEdMX0xVTUlOQU5D
RTE2X0FMUEhBMTYgMHg4MDQ4CiNkZWZpbmUgR0xfSU5URU5TSVRZIDB4ODA0OQojZGVmaW5lIEdM
X0lOVEVOU0lUWTQgMHg4MDRBCiNkZWZpbmUgR0xfSU5URU5TSVRZOCAweDgwNEIKI2RlZmluZSBH
TF9JTlRFTlNJVFkxMiAweDgwNEMKI2RlZmluZSBHTF9JTlRFTlNJVFkxNiAweDgwNEQKI2RlZmlu
ZSBHTF9SM19HM19CMiAweDJBMTAKI2RlZmluZSBHTF9SR0I0IDB4ODA0RgojZGVmaW5lIEdMX1JH
QjUgMHg4MDUwCiNkZWZpbmUgR0xfUkdCOCAweDgwNTEKI2RlZmluZSBHTF9SR0IxMCAweDgwNTIK
I2RlZmluZSBHTF9SR0IxMiAweDgwNTMKI2RlZmluZSBHTF9SR0IxNiAweDgwNTQKI2RlZmluZSBH
TF9SR0JBMiAweDgwNTUKI2RlZmluZSBHTF9SR0JBNCAweDgwNTYKI2RlZmluZSBHTF9SR0I1X0Ex
IDB4ODA1NwojZGVmaW5lIEdMX1JHQkE4IDB4ODA1OAojZGVmaW5lIEdMX1JHQjEwX0EyIDB4ODA1
OQojZGVmaW5lIEdMX1JHQkExMiAweDgwNUEKI2RlZmluZSBHTF9SR0JBMTYgMHg4MDVCCiNkZWZp
bmUgR0xfVEVYVFVSRV9SRURfU0laRSAweDgwNUMKI2RlZmluZSBHTF9URVhUVVJFX0dSRUVOX1NJ
WkUgMHg4MDVECiNkZWZpbmUgR0xfVEVYVFVSRV9CTFVFX1NJWkUgMHg4MDVFCiNkZWZpbmUgR0xf
VEVYVFVSRV9BTFBIQV9TSVpFIDB4ODA1RgojZGVmaW5lIEdMX1RFWFRVUkVfTFVNSU5BTkNFX1NJ
WkUgMHg4MDYwCiNkZWZpbmUgR0xfVEVYVFVSRV9JTlRFTlNJVFlfU0laRSAweDgwNjEKI2RlZmlu
ZSBHTF9QUk9YWV9URVhUVVJFXzFEIDB4ODA2MwojZGVmaW5lIEdMX1BST1hZX1RFWFRVUkVfMkQg
MHg4MDY0CgoKI2RlZmluZSBHTF9URVhUVVJFX1BSSU9SSVRZIDB4ODA2NgojZGVmaW5lIEdMX1RF
WFRVUkVfUkVTSURFTlQgMHg4MDY3CiNkZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5HXzFEIDB4ODA2
OAojZGVmaW5lIEdMX1RFWFRVUkVfQklORElOR18yRCAweDgwNjkKI2RlZmluZSBHTF9URVhUVVJF
X0JJTkRJTkdfM0QgMHg4MDZBCgoKI2RlZmluZSBHTF9WRVJURVhfQVJSQVkgMHg4MDc0CiNkZWZp
bmUgR0xfTk9STUFMX0FSUkFZIDB4ODA3NQojZGVmaW5lIEdMX0NPTE9SX0FSUkFZIDB4ODA3Ngoj
ZGVmaW5lIEdMX0lOREVYX0FSUkFZIDB4ODA3NwojZGVmaW5lIEdMX1RFWFRVUkVfQ09PUkRfQVJS
QVkgMHg4MDc4CiNkZWZpbmUgR0xfRURHRV9GTEFHX0FSUkFZIDB4ODA3OQojZGVmaW5lIEdMX1ZF
UlRFWF9BUlJBWV9TSVpFIDB4ODA3QQojZGVmaW5lIEdMX1ZFUlRFWF9BUlJBWV9UWVBFIDB4ODA3
QgojZGVmaW5lIEdMX1ZFUlRFWF9BUlJBWV9TVFJJREUgMHg4MDdDCiNkZWZpbmUgR0xfTk9STUFM
X0FSUkFZX1RZUEUgMHg4MDdFCiNkZWZpbmUgR0xfTk9STUFMX0FSUkFZX1NUUklERSAweDgwN0YK
I2RlZmluZSBHTF9DT0xPUl9BUlJBWV9TSVpFIDB4ODA4MQojZGVmaW5lIEdMX0NPTE9SX0FSUkFZ
X1RZUEUgMHg4MDgyCiNkZWZpbmUgR0xfQ09MT1JfQVJSQVlfU1RSSURFIDB4ODA4MwojZGVmaW5l
IEdMX0lOREVYX0FSUkFZX1RZUEUgMHg4MDg1CiNkZWZpbmUgR0xfSU5ERVhfQVJSQVlfU1RSSURF
IDB4ODA4NgojZGVmaW5lIEdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU0laRSAweDgwODgKI2RlZmlu
ZSBHTF9URVhUVVJFX0NPT1JEX0FSUkFZX1RZUEUgMHg4MDg5CiNkZWZpbmUgR0xfVEVYVFVSRV9D
T09SRF9BUlJBWV9TVFJJREUgMHg4MDhBCiNkZWZpbmUgR0xfRURHRV9GTEFHX0FSUkFZX1NUUklE
RSAweDgwOEMKI2RlZmluZSBHTF9WRVJURVhfQVJSQVlfUE9JTlRFUiAweDgwOEUKI2RlZmluZSBH
TF9OT1JNQUxfQVJSQVlfUE9JTlRFUiAweDgwOEYKI2RlZmluZSBHTF9DT0xPUl9BUlJBWV9QT0lO
VEVSIDB4ODA5MAojZGVmaW5lIEdMX0lOREVYX0FSUkFZX1BPSU5URVIgMHg4MDkxCiNkZWZpbmUg
R0xfVEVYVFVSRV9DT09SRF9BUlJBWV9QT0lOVEVSIDB4ODA5MgojZGVmaW5lIEdMX0VER0VfRkxB
R19BUlJBWV9QT0lOVEVSIDB4ODA5MwojZGVmaW5lIEdMX1YyRiAweDJBMjAKI2RlZmluZSBHTF9W
M0YgMHgyQTIxCiNkZWZpbmUgR0xfQzRVQl9WMkYgMHgyQTIyCiNkZWZpbmUgR0xfQzRVQl9WM0Yg
MHgyQTIzCiNkZWZpbmUgR0xfQzNGX1YzRiAweDJBMjQKI2RlZmluZSBHTF9OM0ZfVjNGIDB4MkEy
NQojZGVmaW5lIEdMX0M0Rl9OM0ZfVjNGIDB4MkEyNgojZGVmaW5lIEdMX1QyRl9WM0YgMHgyQTI3
CiNkZWZpbmUgR0xfVDRGX1Y0RiAweDJBMjgKI2RlZmluZSBHTF9UMkZfQzRVQl9WM0YgMHgyQTI5
CiNkZWZpbmUgR0xfVDJGX0MzRl9WM0YgMHgyQTJBCiNkZWZpbmUgR0xfVDJGX04zRl9WM0YgMHgy
QTJCCiNkZWZpbmUgR0xfVDJGX0M0Rl9OM0ZfVjNGIDB4MkEyQwojZGVmaW5lIEdMX1Q0Rl9DNEZf
TjNGX1Y0RiAweDJBMkQKCgojZGVmaW5lIEdMX0JHUiAweDgwRTAKI2RlZmluZSBHTF9CR1JBIDB4
ODBFMQoKCiNkZWZpbmUgR0xfQ09OU1RBTlRfQ09MT1IgMHg4MDAxCiNkZWZpbmUgR0xfT05FX01J
TlVTX0NPTlNUQU5UX0NPTE9SIDB4ODAwMgojZGVmaW5lIEdMX0NPTlNUQU5UX0FMUEhBIDB4ODAw
MwojZGVmaW5lIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSAweDgwMDQKI2RlZmluZSBHTF9C
TEVORF9DT0xPUiAweDgwMDUKCgojZGVmaW5lIEdMX0ZVTkNfQUREIDB4ODAwNgojZGVmaW5lIEdM
X01JTiAweDgwMDcKI2RlZmluZSBHTF9NQVggMHg4MDA4CiNkZWZpbmUgR0xfQkxFTkRfRVFVQVRJ
T04gMHg4MDA5CgoKI2RlZmluZSBHTF9CTEVORF9FUVVBVElPTl9SR0IgMHg4MDA5CiNkZWZpbmUg
R0xfQkxFTkRfRVFVQVRJT05fQUxQSEEgMHg4ODNECgoKI2RlZmluZSBHTF9GVU5DX1NVQlRSQUNU
IDB4ODAwQQojZGVmaW5lIEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVCAweDgwMEIKCgojZGVmaW5l
IEdMX0NPTE9SX01BVFJJWCAweDgwQjEKI2RlZmluZSBHTF9DT0xPUl9NQVRSSVhfU1RBQ0tfREVQ
VEggMHg4MEIyCiNkZWZpbmUgR0xfTUFYX0NPTE9SX01BVFJJWF9TVEFDS19ERVBUSCAweDgwQjMK
I2RlZmluZSBHTF9QT1NUX0NPTE9SX01BVFJJWF9SRURfU0NBTEUgMHg4MEI0CiNkZWZpbmUgR0xf
UE9TVF9DT0xPUl9NQVRSSVhfR1JFRU5fU0NBTEUgMHg4MEI1CiNkZWZpbmUgR0xfUE9TVF9DT0xP
Ul9NQVRSSVhfQkxVRV9TQ0FMRSAweDgwQjYKI2RlZmluZSBHTF9QT1NUX0NPTE9SX01BVFJJWF9B
TFBIQV9TQ0FMRSAweDgwQjcKI2RlZmluZSBHTF9QT1NUX0NPTE9SX01BVFJJWF9SRURfQklBUyAw
eDgwQjgKI2RlZmluZSBHTF9QT1NUX0NPTE9SX01BVFJJWF9HUkVFTl9CSUFTIDB4ODBCOQojZGVm
aW5lIEdMX1BPU1RfQ09MT1JfTUFUUklYX0JMVUVfQklBUyAweDgwQkEKI2RlZmluZSBHTF9QT1NU
X0NPTE9SX01BVFJJWF9BTFBIQV9CSUFTIDB4ODBCQgoKCiNkZWZpbmUgR0xfQ09MT1JfVEFCTEUg
MHg4MEQwCiNkZWZpbmUgR0xfUE9TVF9DT05WT0xVVElPTl9DT0xPUl9UQUJMRSAweDgwRDEKI2Rl
ZmluZSBHTF9QT1NUX0NPTE9SX01BVFJJWF9DT0xPUl9UQUJMRSAweDgwRDIKI2RlZmluZSBHTF9Q
Uk9YWV9DT0xPUl9UQUJMRSAweDgwRDMKI2RlZmluZSBHTF9QUk9YWV9QT1NUX0NPTlZPTFVUSU9O
X0NPTE9SX1RBQkxFIDB4ODBENAojZGVmaW5lIEdMX1BST1hZX1BPU1RfQ09MT1JfTUFUUklYX0NP
TE9SX1RBQkxFIDB4ODBENQojZGVmaW5lIEdMX0NPTE9SX1RBQkxFX1NDQUxFIDB4ODBENgojZGVm
aW5lIEdMX0NPTE9SX1RBQkxFX0JJQVMgMHg4MEQ3CiNkZWZpbmUgR0xfQ09MT1JfVEFCTEVfRk9S
TUFUIDB4ODBEOAojZGVmaW5lIEdMX0NPTE9SX1RBQkxFX1dJRFRIIDB4ODBEOQojZGVmaW5lIEdM
X0NPTE9SX1RBQkxFX1JFRF9TSVpFIDB4ODBEQQojZGVmaW5lIEdMX0NPTE9SX1RBQkxFX0dSRUVO
X1NJWkUgMHg4MERCCiNkZWZpbmUgR0xfQ09MT1JfVEFCTEVfQkxVRV9TSVpFIDB4ODBEQwojZGVm
aW5lIEdMX0NPTE9SX1RBQkxFX0FMUEhBX1NJWkUgMHg4MERECiNkZWZpbmUgR0xfQ09MT1JfVEFC
TEVfTFVNSU5BTkNFX1NJWkUgMHg4MERFCiNkZWZpbmUgR0xfQ09MT1JfVEFCTEVfSU5URU5TSVRZ
X1NJWkUgMHg4MERGCgoKI2RlZmluZSBHTF9DT05WT0xVVElPTl8xRCAweDgwMTAKI2RlZmluZSBH
TF9DT05WT0xVVElPTl8yRCAweDgwMTEKI2RlZmluZSBHTF9TRVBBUkFCTEVfMkQgMHg4MDEyCiNk
ZWZpbmUgR0xfQ09OVk9MVVRJT05fQk9SREVSX01PREUgMHg4MDEzCiNkZWZpbmUgR0xfQ09OVk9M
VVRJT05fRklMVEVSX1NDQUxFIDB4ODAxNAojZGVmaW5lIEdMX0NPTlZPTFVUSU9OX0ZJTFRFUl9C
SUFTIDB4ODAxNQojZGVmaW5lIEdMX1JFRFVDRSAweDgwMTYKI2RlZmluZSBHTF9DT05WT0xVVElP
Tl9GT1JNQVQgMHg4MDE3CiNkZWZpbmUgR0xfQ09OVk9MVVRJT05fV0lEVEggMHg4MDE4CiNkZWZp
bmUgR0xfQ09OVk9MVVRJT05fSEVJR0hUIDB4ODAxOQojZGVmaW5lIEdMX01BWF9DT05WT0xVVElP
Tl9XSURUSCAweDgwMUEKI2RlZmluZSBHTF9NQVhfQ09OVk9MVVRJT05fSEVJR0hUIDB4ODAxQgoj
ZGVmaW5lIEdMX1BPU1RfQ09OVk9MVVRJT05fUkVEX1NDQUxFIDB4ODAxQwojZGVmaW5lIEdMX1BP
U1RfQ09OVk9MVVRJT05fR1JFRU5fU0NBTEUgMHg4MDFECiNkZWZpbmUgR0xfUE9TVF9DT05WT0xV
VElPTl9CTFVFX1NDQUxFIDB4ODAxRQojZGVmaW5lIEdMX1BPU1RfQ09OVk9MVVRJT05fQUxQSEFf
U0NBTEUgMHg4MDFGCiNkZWZpbmUgR0xfUE9TVF9DT05WT0xVVElPTl9SRURfQklBUyAweDgwMjAK
I2RlZmluZSBHTF9QT1NUX0NPTlZPTFVUSU9OX0dSRUVOX0JJQVMgMHg4MDIxCiNkZWZpbmUgR0xf
UE9TVF9DT05WT0xVVElPTl9CTFVFX0JJQVMgMHg4MDIyCiNkZWZpbmUgR0xfUE9TVF9DT05WT0xV
VElPTl9BTFBIQV9CSUFTIDB4ODAyMwojZGVmaW5lIEdMX0NPTlNUQU5UX0JPUkRFUiAweDgxNTEK
I2RlZmluZSBHTF9SRVBMSUNBVEVfQk9SREVSIDB4ODE1MwojZGVmaW5lIEdMX0NPTlZPTFVUSU9O
X0JPUkRFUl9DT0xPUiAweDgxNTQKCgojZGVmaW5lIEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyAw
eDgwRTgKI2RlZmluZSBHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUyAweDgwRTkKCgojZGVmaW5lIEdM
X0hJU1RPR1JBTSAweDgwMjQKI2RlZmluZSBHTF9QUk9YWV9ISVNUT0dSQU0gMHg4MDI1CiNkZWZp
bmUgR0xfSElTVE9HUkFNX1dJRFRIIDB4ODAyNgojZGVmaW5lIEdMX0hJU1RPR1JBTV9GT1JNQVQg
MHg4MDI3CiNkZWZpbmUgR0xfSElTVE9HUkFNX1JFRF9TSVpFIDB4ODAyOAojZGVmaW5lIEdMX0hJ
U1RPR1JBTV9HUkVFTl9TSVpFIDB4ODAyOQojZGVmaW5lIEdMX0hJU1RPR1JBTV9CTFVFX1NJWkUg
MHg4MDJBCiNkZWZpbmUgR0xfSElTVE9HUkFNX0FMUEhBX1NJWkUgMHg4MDJCCiNkZWZpbmUgR0xf
SElTVE9HUkFNX0xVTUlOQU5DRV9TSVpFIDB4ODAyQwojZGVmaW5lIEdMX0hJU1RPR1JBTV9TSU5L
IDB4ODAyRAojZGVmaW5lIEdMX01JTk1BWCAweDgwMkUKI2RlZmluZSBHTF9NSU5NQVhfRk9STUFU
IDB4ODAyRgojZGVmaW5lIEdMX01JTk1BWF9TSU5LIDB4ODAzMAojZGVmaW5lIEdMX1RBQkxFX1RP
T19MQVJHRSAweDgwMzEKCgojZGVmaW5lIEdMX1VOU0lHTkVEX0JZVEVfM18zXzIgMHg4MDMyCiNk
ZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCAweDgwMzMKI2RlZmluZSBHTF9VTlNJR05F
RF9TSE9SVF81XzVfNV8xIDB4ODAzNAojZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF84XzhfOF84IDB4
ODAzNQojZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF8xMF8xMF8xMF8yIDB4ODAzNgojZGVmaW5lIEdM
X1VOU0lHTkVEX0JZVEVfMl8zXzNfUkVWIDB4ODM2MgojZGVmaW5lIEdMX1VOU0lHTkVEX1NIT1JU
XzVfNl81IDB4ODM2MwojZGVmaW5lIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81X1JFViAweDgzNjQK
I2RlZmluZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFViAweDgzNjUKI2RlZmluZSBHTF9V
TlNJR05FRF9TSE9SVF8xXzVfNV81X1JFViAweDgzNjYKI2RlZmluZSBHTF9VTlNJR05FRF9JTlRf
OF84XzhfOF9SRVYgMHg4MzY3CiNkZWZpbmUgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVW
IDB4ODM2OAoKCiNkZWZpbmUgR0xfUkVTQ0FMRV9OT1JNQUwgMHg4MDNBCgoKI2RlZmluZSBHTF9M
SUdIVF9NT0RFTF9DT0xPUl9DT05UUk9MIDB4ODFGOAojZGVmaW5lIEdMX1NJTkdMRV9DT0xPUiAw
eDgxRjkKI2RlZmluZSBHTF9TRVBBUkFURV9TUEVDVUxBUl9DT0xPUiAweDgxRkEKCgojZGVmaW5l
IEdMX1BBQ0tfU0tJUF9JTUFHRVMgMHg4MDZCCiNkZWZpbmUgR0xfUEFDS19JTUFHRV9IRUlHSFQg
MHg4MDZDCiNkZWZpbmUgR0xfVU5QQUNLX1NLSVBfSU1BR0VTIDB4ODA2RAojZGVmaW5lIEdMX1VO
UEFDS19JTUFHRV9IRUlHSFQgMHg4MDZFCiNkZWZpbmUgR0xfVEVYVFVSRV8zRCAweDgwNkYKI2Rl
ZmluZSBHTF9QUk9YWV9URVhUVVJFXzNEIDB4ODA3MAojZGVmaW5lIEdMX1RFWFRVUkVfREVQVEgg
MHg4MDcxCiNkZWZpbmUgR0xfVEVYVFVSRV9XUkFQX1IgMHg4MDcyCiNkZWZpbmUgR0xfTUFYXzNE
X1RFWFRVUkVfU0laRSAweDgwNzMKCgojZGVmaW5lIEdMX0NMQU1QX1RPX0VER0UgMHg4MTJGCiNk
ZWZpbmUgR0xfQ0xBTVBfVE9fQk9SREVSIDB4ODEyRAoKCiNkZWZpbmUgR0xfVEVYVFVSRV9NSU5f
TE9EIDB4ODEzQQojZGVmaW5lIEdMX1RFWFRVUkVfTUFYX0xPRCAweDgxM0IKI2RlZmluZSBHTF9U
RVhUVVJFX0JBU0VfTEVWRUwgMHg4MTNDCiNkZWZpbmUgR0xfVEVYVFVSRV9NQVhfTEVWRUwgMHg4
MTNECgoKI2RlZmluZSBHTF9TTU9PVEhfUE9JTlRfU0laRV9SQU5HRSAweDBCMTIKI2RlZmluZSBH
TF9TTU9PVEhfUE9JTlRfU0laRV9HUkFOVUxBUklUWSAweDBCMTMKI2RlZmluZSBHTF9TTU9PVEhf
TElORV9XSURUSF9SQU5HRSAweDBCMjIKI2RlZmluZSBHTF9TTU9PVEhfTElORV9XSURUSF9HUkFO
VUxBUklUWSAweDBCMjMKI2RlZmluZSBHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UgMHg4NDZE
CiNkZWZpbmUgR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFIDB4ODQ2RQoKI2RlZmluZSBHTF9U
RVhUVVJFMCAweDg0QzAKI2RlZmluZSBHTF9URVhUVVJFMSAweDg0QzEKI2RlZmluZSBHTF9URVhU
VVJFMiAweDg0QzIKI2RlZmluZSBHTF9URVhUVVJFMyAweDg0QzMKI2RlZmluZSBHTF9URVhUVVJF
NCAweDg0QzQKI2RlZmluZSBHTF9URVhUVVJFNSAweDg0QzUKI2RlZmluZSBHTF9URVhUVVJFNiAw
eDg0QzYKI2RlZmluZSBHTF9URVhUVVJFNyAweDg0QzcKI2RlZmluZSBHTF9URVhUVVJFOCAweDg0
QzgKI2RlZmluZSBHTF9URVhUVVJFOSAweDg0QzkKI2RlZmluZSBHTF9URVhUVVJFMTAgMHg4NENB
CiNkZWZpbmUgR0xfVEVYVFVSRTExIDB4ODRDQgojZGVmaW5lIEdMX1RFWFRVUkUxMiAweDg0Q0MK
I2RlZmluZSBHTF9URVhUVVJFMTMgMHg4NENECiNkZWZpbmUgR0xfVEVYVFVSRTE0IDB4ODRDRQoj
ZGVmaW5lIEdMX1RFWFRVUkUxNSAweDg0Q0YKI2RlZmluZSBHTF9URVhUVVJFMTYgMHg4NEQwCiNk
ZWZpbmUgR0xfVEVYVFVSRTE3IDB4ODREMQojZGVmaW5lIEdMX1RFWFRVUkUxOCAweDg0RDIKI2Rl
ZmluZSBHTF9URVhUVVJFMTkgMHg4NEQzCiNkZWZpbmUgR0xfVEVYVFVSRTIwIDB4ODRENAojZGVm
aW5lIEdMX1RFWFRVUkUyMSAweDg0RDUKI2RlZmluZSBHTF9URVhUVVJFMjIgMHg4NEQ2CiNkZWZp
bmUgR0xfVEVYVFVSRTIzIDB4ODRENwojZGVmaW5lIEdMX1RFWFRVUkUyNCAweDg0RDgKI2RlZmlu
ZSBHTF9URVhUVVJFMjUgMHg4NEQ5CiNkZWZpbmUgR0xfVEVYVFVSRTI2IDB4ODREQQojZGVmaW5l
IEdMX1RFWFRVUkUyNyAweDg0REIKI2RlZmluZSBHTF9URVhUVVJFMjggMHg4NERDCiNkZWZpbmUg
R0xfVEVYVFVSRTI5IDB4ODRERAojZGVmaW5lIEdMX1RFWFRVUkUzMCAweDg0REUKI2RlZmluZSBH
TF9URVhUVVJFMzEgMHg4NERGCiNkZWZpbmUgR0xfQUNUSVZFX1RFWFRVUkUgMHg4NEUwCiNkZWZp
bmUgR0xfQ0xJRU5UX0FDVElWRV9URVhUVVJFIDB4ODRFMQojZGVmaW5lIEdMX01BWF9URVhUVVJF
X1VOSVRTIDB4ODRFMgoKI2RlZmluZSBHTF9DT01CSU5FIDB4ODU3MAojZGVmaW5lIEdMX0NPTUJJ
TkVfUkdCIDB4ODU3MQojZGVmaW5lIEdMX0NPTUJJTkVfQUxQSEEgMHg4NTcyCiNkZWZpbmUgR0xf
UkdCX1NDQUxFIDB4ODU3MwojZGVmaW5lIEdMX0FERF9TSUdORUQgMHg4NTc0CiNkZWZpbmUgR0xf
SU5URVJQT0xBVEUgMHg4NTc1CiNkZWZpbmUgR0xfQ09OU1RBTlQgMHg4NTc2CiNkZWZpbmUgR0xf
UFJJTUFSWV9DT0xPUiAweDg1NzcKI2RlZmluZSBHTF9QUkVWSU9VUyAweDg1NzgKI2RlZmluZSBH
TF9TVUJUUkFDVCAweDg0RTcKCiNkZWZpbmUgR0xfU1JDMF9SR0IgMHg4NTgwCiNkZWZpbmUgR0xf
U1JDMV9SR0IgMHg4NTgxCiNkZWZpbmUgR0xfU1JDMl9SR0IgMHg4NTgyCiNkZWZpbmUgR0xfU1JD
M19SR0IgMHg4NTgzCiNkZWZpbmUgR0xfU1JDNF9SR0IgMHg4NTg0CiNkZWZpbmUgR0xfU1JDNV9S
R0IgMHg4NTg1CiNkZWZpbmUgR0xfU1JDNl9SR0IgMHg4NTg2CiNkZWZpbmUgR0xfU1JDN19SR0Ig
MHg4NTg3CiNkZWZpbmUgR0xfU1JDMF9BTFBIQSAweDg1ODgKI2RlZmluZSBHTF9TUkMxX0FMUEhB
IDB4ODU4OQojZGVmaW5lIEdMX1NSQzJfQUxQSEEgMHg4NThBCiNkZWZpbmUgR0xfU1JDM19BTFBI
QSAweDg1OEIKI2RlZmluZSBHTF9TUkM0X0FMUEhBIDB4ODU4QwojZGVmaW5lIEdMX1NSQzVfQUxQ
SEEgMHg4NThECiNkZWZpbmUgR0xfU1JDNl9BTFBIQSAweDg1OEUKI2RlZmluZSBHTF9TUkM3X0FM
UEhBIDB4ODU4RgoKCiNkZWZpbmUgR0xfU09VUkNFMF9SR0IgMHg4NTgwCiNkZWZpbmUgR0xfU09V
UkNFMV9SR0IgMHg4NTgxCiNkZWZpbmUgR0xfU09VUkNFMl9SR0IgMHg4NTgyCiNkZWZpbmUgR0xf
U09VUkNFM19SR0IgMHg4NTgzCiNkZWZpbmUgR0xfU09VUkNFNF9SR0IgMHg4NTg0CiNkZWZpbmUg
R0xfU09VUkNFNV9SR0IgMHg4NTg1CiNkZWZpbmUgR0xfU09VUkNFNl9SR0IgMHg4NTg2CiNkZWZp
bmUgR0xfU09VUkNFN19SR0IgMHg4NTg3CiNkZWZpbmUgR0xfU09VUkNFMF9BTFBIQSAweDg1ODgK
I2RlZmluZSBHTF9TT1VSQ0UxX0FMUEhBIDB4ODU4OQojZGVmaW5lIEdMX1NPVVJDRTJfQUxQSEEg
MHg4NThBCiNkZWZpbmUgR0xfU09VUkNFM19BTFBIQSAweDg1OEIKI2RlZmluZSBHTF9TT1VSQ0U0
X0FMUEhBIDB4ODU4QwojZGVmaW5lIEdMX1NPVVJDRTVfQUxQSEEgMHg4NThECiNkZWZpbmUgR0xf
U09VUkNFNl9BTFBIQSAweDg1OEUKI2RlZmluZSBHTF9TT1VSQ0U3X0FMUEhBIDB4ODU4RgoKI2Rl
ZmluZSBHTF9PUEVSQU5EMF9SR0IgMHg4NTkwCiNkZWZpbmUgR0xfT1BFUkFORDFfUkdCIDB4ODU5
MQojZGVmaW5lIEdMX09QRVJBTkQyX1JHQiAweDg1OTIKI2RlZmluZSBHTF9PUEVSQU5EM19SR0Ig
MHg4NTkzCiNkZWZpbmUgR0xfT1BFUkFORDRfUkdCIDB4ODU5NAojZGVmaW5lIEdMX09QRVJBTkQ1
X1JHQiAweDg1OTUKI2RlZmluZSBHTF9PUEVSQU5ENl9SR0IgMHg4NTk2CiNkZWZpbmUgR0xfT1BF
UkFORDdfUkdCIDB4ODU5NwojZGVmaW5lIEdMX09QRVJBTkQwX0FMUEhBIDB4ODU5OAojZGVmaW5l
IEdMX09QRVJBTkQxX0FMUEhBIDB4ODU5OQojZGVmaW5lIEdMX09QRVJBTkQyX0FMUEhBIDB4ODU5
QQojZGVmaW5lIEdMX09QRVJBTkQzX0FMUEhBIDB4ODU5QgojZGVmaW5lIEdMX09QRVJBTkQ0X0FM
UEhBIDB4ODU5QwojZGVmaW5lIEdMX09QRVJBTkQ1X0FMUEhBIDB4ODU5RAojZGVmaW5lIEdMX09Q
RVJBTkQ2X0FMUEhBIDB4ODU5RQojZGVmaW5lIEdMX09QRVJBTkQ3X0FMUEhBIDB4ODU5RgoKI2Rl
ZmluZSBHTF9ET1QzX1JHQiAweDg2QUUKI2RlZmluZSBHTF9ET1QzX1JHQkEgMHg4NkFGCgojZGVm
aW5lIEdMX1RSQU5TUE9TRV9NT0RFTFZJRVdfTUFUUklYIDB4ODRFMwojZGVmaW5lIEdMX1RSQU5T
UE9TRV9QUk9KRUNUSU9OX01BVFJJWCAweDg0RTQKI2RlZmluZSBHTF9UUkFOU1BPU0VfVEVYVFVS
RV9NQVRSSVggMHg4NEU1CiNkZWZpbmUgR0xfVFJBTlNQT1NFX0NPTE9SX01BVFJJWCAweDg0RTYK
CiNkZWZpbmUgR0xfTk9STUFMX01BUCAweDg1MTEKI2RlZmluZSBHTF9SRUZMRUNUSU9OX01BUCAw
eDg1MTIKI2RlZmluZSBHTF9URVhUVVJFX0NVQkVfTUFQIDB4ODUxMwojZGVmaW5lIEdMX1RFWFRV
UkVfQklORElOR19DVUJFX01BUCAweDg1MTQKI2RlZmluZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1ggMHg4NTE1CiNkZWZpbmUgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YIDB4
ODUxNgojZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSAweDg1MTcKI2RlZmlu
ZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kgMHg4NTE4CiNkZWZpbmUgR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9aIDB4ODUxOQojZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWiAweDg1MUEKI2RlZmluZSBHTF9QUk9YWV9URVhUVVJFX0NVQkVfTUFQIDB4ODUx
QgojZGVmaW5lIEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUgMHg4NTFDCgojZGVmaW5lIEdM
X0NPTVBSRVNTRURfQUxQSEEgMHg4NEU5CiNkZWZpbmUgR0xfQ09NUFJFU1NFRF9MVU1JTkFOQ0Ug
MHg4NEVBCiNkZWZpbmUgR0xfQ09NUFJFU1NFRF9MVU1JTkFOQ0VfQUxQSEEgMHg4NEVCCiNkZWZp
bmUgR0xfQ09NUFJFU1NFRF9JTlRFTlNJVFkgMHg4NEVDCiNkZWZpbmUgR0xfQ09NUFJFU1NFRF9S
R0IgMHg4NEVECiNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBIDB4ODRFRQojZGVmaW5lIEdMX1RF
WFRVUkVfQ09NUFJFU1NJT05fSElOVCAweDg0RUYKI2RlZmluZSBHTF9URVhUVVJFX0NPTVBSRVNT
RURfSU1BR0VfU0laRSAweDg2QTAKI2RlZmluZSBHTF9URVhUVVJFX0NPTVBSRVNTRUQgMHg4NkEx
CiNkZWZpbmUgR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIDB4ODZBMgojZGVmaW5l
IEdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIDB4ODZBMwoKI2RlZmluZSBHTF9NVUxUSVNB
TVBMRSAweDgwOUQKI2RlZmluZSBHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0UgMHg4MDlFCiNk
ZWZpbmUgR0xfU0FNUExFX0FMUEhBX1RPX09ORSAweDgwOUYKI2RlZmluZSBHTF9TQU1QTEVfQ09W
RVJBR0UgMHg4MEEwCiNkZWZpbmUgR0xfU0FNUExFX0JVRkZFUlMgMHg4MEE4CiNkZWZpbmUgR0xf
U0FNUExFUyAweDgwQTkKI2RlZmluZSBHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUUgMHg4MEFBCiNk
ZWZpbmUgR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVCAweDgwQUIKI2RlZmluZSBHTF9NVUxUSVNB
TVBMRV9CSVQgMHgyMDAwMDAwMAoKI2RlZmluZSBHTF9ERVBUSF9DT01QT05FTlQxNiAweDgxQTUK
I2RlZmluZSBHTF9ERVBUSF9DT01QT05FTlQyNCAweDgxQTYKI2RlZmluZSBHTF9ERVBUSF9DT01Q
T05FTlQzMiAweDgxQTcKI2RlZmluZSBHTF9URVhUVVJFX0RFUFRIX1NJWkUgMHg4ODRBCiNkZWZp
bmUgR0xfREVQVEhfVEVYVFVSRV9NT0RFIDB4ODg0QgoKI2RlZmluZSBHTF9URVhUVVJFX0NPTVBB
UkVfTU9ERSAweDg4NEMKI2RlZmluZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQyAweDg4NEQKI2Rl
ZmluZSBHTF9DT01QQVJFX1JfVE9fVEVYVFVSRSAweDg4NEUKCgojZGVmaW5lIEdMX1FVRVJZX0NP
VU5URVJfQklUUyAweDg4NjQKI2RlZmluZSBHTF9DVVJSRU5UX1FVRVJZIDB4ODg2NQojZGVmaW5l
IEdMX1FVRVJZX1JFU1VMVCAweDg4NjYKI2RlZmluZSBHTF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxF
IDB4ODg2NwojZGVmaW5lIEdMX1NBTVBMRVNfUEFTU0VEIDB4ODkxNAoKI2RlZmluZSBHTF9GT0df
Q09PUkRfU1JDIDB4ODQ1MAojZGVmaW5lIEdMX0ZPR19DT09SRCAweDg0NTEKI2RlZmluZSBHTF9G
UkFHTUVOVF9ERVBUSCAweDg0NTIKI2RlZmluZSBHTF9DVVJSRU5UX0ZPR19DT09SRCAweDg0NTMK
I2RlZmluZSBHTF9GT0dfQ09PUkRfQVJSQVlfVFlQRSAweDg0NTQKI2RlZmluZSBHTF9GT0dfQ09P
UkRfQVJSQVlfU1RSSURFIDB4ODQ1NQojZGVmaW5lIEdMX0ZPR19DT09SRF9BUlJBWV9QT0lOVEVS
IDB4ODQ1NgojZGVmaW5lIEdMX0ZPR19DT09SRF9BUlJBWSAweDg0NTcKCgojZGVmaW5lIEdMX0ZP
R19DT09SRElOQVRFX1NPVVJDRSAweDg0NTAKI2RlZmluZSBHTF9GT0dfQ09PUkRJTkFURSAweDg0
NTEKI2RlZmluZSBHTF9DVVJSRU5UX0ZPR19DT09SRElOQVRFIDB4ODQ1MwojZGVmaW5lIEdMX0ZP
R19DT09SRElOQVRFX0FSUkFZX1RZUEUgMHg4NDU0CiNkZWZpbmUgR0xfRk9HX0NPT1JESU5BVEVf
QVJSQVlfU1RSSURFIDB4ODQ1NQojZGVmaW5lIEdMX0ZPR19DT09SRElOQVRFX0FSUkFZX1BPSU5U
RVIgMHg4NDU2CiNkZWZpbmUgR0xfRk9HX0NPT1JESU5BVEVfQVJSQVkgMHg4NDU3CgojZGVmaW5l
IEdMX0NPTE9SX1NVTSAweDg0NTgKI2RlZmluZSBHTF9DVVJSRU5UX1NFQ09OREFSWV9DT0xPUiAw
eDg0NTkKI2RlZmluZSBHTF9TRUNPTkRBUllfQ09MT1JfQVJSQVlfU0laRSAweDg0NUEKI2RlZmlu
ZSBHTF9TRUNPTkRBUllfQ09MT1JfQVJSQVlfVFlQRSAweDg0NUIKI2RlZmluZSBHTF9TRUNPTkRB
UllfQ09MT1JfQVJSQVlfU1RSSURFIDB4ODQ1QwojZGVmaW5lIEdMX1NFQ09OREFSWV9DT0xPUl9B
UlJBWV9QT0lOVEVSIDB4ODQ1RAojZGVmaW5lIEdMX1NFQ09OREFSWV9DT0xPUl9BUlJBWSAweDg0
NUUKCiNkZWZpbmUgR0xfUE9JTlRfU0laRV9NSU4gMHg4MTI2CiNkZWZpbmUgR0xfUE9JTlRfU0la
RV9NQVggMHg4MTI3CiNkZWZpbmUgR0xfUE9JTlRfRkFERV9USFJFU0hPTERfU0laRSAweDgxMjgK
I2RlZmluZSBHTF9QT0lOVF9ESVNUQU5DRV9BVFRFTlVBVElPTiAweDgxMjkKCiNkZWZpbmUgR0xf
QkxFTkRfRFNUX1JHQiAweDgwQzgKI2RlZmluZSBHTF9CTEVORF9TUkNfUkdCIDB4ODBDOQojZGVm
aW5lIEdMX0JMRU5EX0RTVF9BTFBIQSAweDgwQ0EKI2RlZmluZSBHTF9CTEVORF9TUkNfQUxQSEEg
MHg4MENCCgojZGVmaW5lIEdMX0dFTkVSQVRFX01JUE1BUCAweDgxOTEKI2RlZmluZSBHTF9HRU5F
UkFURV9NSVBNQVBfSElOVCAweDgxOTIKCiNkZWZpbmUgR0xfSU5DUl9XUkFQIDB4ODUwNwojZGVm
aW5lIEdMX0RFQ1JfV1JBUCAweDg1MDgKCiNkZWZpbmUgR0xfTUlSUk9SRURfUkVQRUFUIDB4ODM3
MAoKI2RlZmluZSBHTF9NQVhfVEVYVFVSRV9MT0RfQklBUyAweDg0RkQKI2RlZmluZSBHTF9URVhU
VVJFX0ZJTFRFUl9DT05UUk9MIDB4ODUwMAojZGVmaW5lIEdMX1RFWFRVUkVfTE9EX0JJQVMgMHg4
NTAxCgoKI2RlZmluZSBHTF9BUlJBWV9CVUZGRVIgMHg4ODkyCiNkZWZpbmUgR0xfRUxFTUVOVF9B
UlJBWV9CVUZGRVIgMHg4ODkzCiNkZWZpbmUgR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkcgMHg4ODk0
CiNkZWZpbmUgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyAweDg4OTUKI2RlZmluZSBH
TF9WRVJURVhfQVJSQVlfQlVGRkVSX0JJTkRJTkcgMHg4ODk2CiNkZWZpbmUgR0xfTk9STUFMX0FS
UkFZX0JVRkZFUl9CSU5ESU5HIDB4ODg5NwojZGVmaW5lIEdMX0NPTE9SX0FSUkFZX0JVRkZFUl9C
SU5ESU5HIDB4ODg5OAojZGVmaW5lIEdMX0lOREVYX0FSUkFZX0JVRkZFUl9CSU5ESU5HIDB4ODg5
OQojZGVmaW5lIEdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfQlVGRkVSX0JJTkRJTkcgMHg4ODlBCiNk
ZWZpbmUgR0xfRURHRV9GTEFHX0FSUkFZX0JVRkZFUl9CSU5ESU5HIDB4ODg5QgojZGVmaW5lIEdM
X1NFQ09OREFSWV9DT0xPUl9BUlJBWV9CVUZGRVJfQklORElORyAweDg4OUMKI2RlZmluZSBHTF9G
T0dfQ09PUkRfQVJSQVlfQlVGRkVSX0JJTkRJTkcgMHg4ODlECiNkZWZpbmUgR0xfV0VJR0hUX0FS
UkFZX0JVRkZFUl9CSU5ESU5HIDB4ODg5RQojZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlf
QlVGRkVSX0JJTkRJTkcgMHg4ODlGCiNkZWZpbmUgR0xfU1RSRUFNX0RSQVcgMHg4OEUwCiNkZWZp
bmUgR0xfU1RSRUFNX1JFQUQgMHg4OEUxCiNkZWZpbmUgR0xfU1RSRUFNX0NPUFkgMHg4OEUyCiNk
ZWZpbmUgR0xfU1RBVElDX0RSQVcgMHg4OEU0CiNkZWZpbmUgR0xfU1RBVElDX1JFQUQgMHg4OEU1
CiNkZWZpbmUgR0xfU1RBVElDX0NPUFkgMHg4OEU2CiNkZWZpbmUgR0xfRFlOQU1JQ19EUkFXIDB4
ODhFOAojZGVmaW5lIEdMX0RZTkFNSUNfUkVBRCAweDg4RTkKI2RlZmluZSBHTF9EWU5BTUlDX0NP
UFkgMHg4OEVBCiNkZWZpbmUgR0xfUkVBRF9PTkxZIDB4ODhCOAojZGVmaW5lIEdMX1dSSVRFX09O
TFkgMHg4OEI5CiNkZWZpbmUgR0xfUkVBRF9XUklURSAweDg4QkEKI2RlZmluZSBHTF9CVUZGRVJf
U0laRSAweDg3NjQKI2RlZmluZSBHTF9CVUZGRVJfVVNBR0UgMHg4NzY1CiNkZWZpbmUgR0xfQlVG
RkVSX0FDQ0VTUyAweDg4QkIKI2RlZmluZSBHTF9CVUZGRVJfTUFQUEVEIDB4ODhCQwojZGVmaW5l
IEdMX0JVRkZFUl9NQVBfUE9JTlRFUiAweDg4QkQKCiNkZWZpbmUgR0xfRk9HX0NPT1JESU5BVEVf
QVJSQVlfQlVGRkVSX0JJTkRJTkcgMHg4ODlECgoKI2RlZmluZSBHTF9DVVJSRU5UX1BST0dSQU0g
MHg4QjhECiNkZWZpbmUgR0xfU0hBREVSX1RZUEUgMHg4QjRGCiNkZWZpbmUgR0xfREVMRVRFX1NU
QVRVUyAweDhCODAKI2RlZmluZSBHTF9DT01QSUxFX1NUQVRVUyAweDhCODEKI2RlZmluZSBHTF9M
SU5LX1NUQVRVUyAweDhCODIKI2RlZmluZSBHTF9WQUxJREFURV9TVEFUVVMgMHg4QjgzCiNkZWZp
bmUgR0xfSU5GT19MT0dfTEVOR1RIIDB4OEI4NAojZGVmaW5lIEdMX0FUVEFDSEVEX1NIQURFUlMg
MHg4Qjg1CiNkZWZpbmUgR0xfQUNUSVZFX1VOSUZPUk1TIDB4OEI4NgojZGVmaW5lIEdMX0FDVElW
RV9VTklGT1JNX01BWF9MRU5HVEggMHg4Qjg3CiNkZWZpbmUgR0xfU0hBREVSX1NPVVJDRV9MRU5H
VEggMHg4Qjg4CiNkZWZpbmUgR0xfRkxPQVRfVkVDMiAweDhCNTAKI2RlZmluZSBHTF9GTE9BVF9W
RUMzIDB4OEI1MQojZGVmaW5lIEdMX0ZMT0FUX1ZFQzQgMHg4QjUyCiNkZWZpbmUgR0xfSU5UX1ZF
QzIgMHg4QjUzCiNkZWZpbmUgR0xfSU5UX1ZFQzMgMHg4QjU0CiNkZWZpbmUgR0xfSU5UX1ZFQzQg
MHg4QjU1CiNkZWZpbmUgR0xfQk9PTCAweDhCNTYKI2RlZmluZSBHTF9CT09MX1ZFQzIgMHg4QjU3
CiNkZWZpbmUgR0xfQk9PTF9WRUMzIDB4OEI1OAojZGVmaW5lIEdMX0JPT0xfVkVDNCAweDhCNTkK
I2RlZmluZSBHTF9GTE9BVF9NQVQyIDB4OEI1QQojZGVmaW5lIEdMX0ZMT0FUX01BVDMgMHg4QjVC
CiNkZWZpbmUgR0xfRkxPQVRfTUFUNCAweDhCNUMKI2RlZmluZSBHTF9TQU1QTEVSXzFEIDB4OEI1
RAojZGVmaW5lIEdMX1NBTVBMRVJfMkQgMHg4QjVFCiNkZWZpbmUgR0xfU0FNUExFUl8zRCAweDhC
NUYKI2RlZmluZSBHTF9TQU1QTEVSX0NVQkUgMHg4QjYwCiNkZWZpbmUgR0xfU0FNUExFUl8xRF9T
SEFET1cgMHg4QjYxCiNkZWZpbmUgR0xfU0FNUExFUl8yRF9TSEFET1cgMHg4QjYyCiNkZWZpbmUg
R0xfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OIDB4OEI4QwojZGVmaW5lIEdMX1ZFUlRFWF9TSEFE
RVIgMHg4QjMxCiNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMgMHg4QjRB
CiNkZWZpbmUgR0xfTUFYX1ZBUllJTkdfRkxPQVRTIDB4OEI0QgojZGVmaW5lIEdMX01BWF9WRVJU
RVhfVEVYVFVSRV9JTUFHRV9VTklUUyAweDhCNEMKI2RlZmluZSBHTF9NQVhfQ09NQklORURfVEVY
VFVSRV9JTUFHRV9VTklUUyAweDhCNEQKI2RlZmluZSBHTF9BQ1RJVkVfQVRUUklCVVRFUyAweDhC
ODkKI2RlZmluZSBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEggMHg4QjhBCiNkZWZpbmUg
R0xfRlJBR01FTlRfU0hBREVSIDB4OEIzMAojZGVmaW5lIEdMX01BWF9GUkFHTUVOVF9VTklGT1JN
X0NPTVBPTkVOVFMgMHg4QjQ5CiNkZWZpbmUgR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVf
SElOVCAweDhCOEIKI2RlZmluZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlMgMHg4ODY5CiNkZWZpbmUg
R0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEIDB4ODYyMgojZGVmaW5lIEdMX1ZFUlRFWF9B
VFRSSUJfQVJSQVlfU0laRSAweDg2MjMKI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NU
UklERSAweDg2MjQKI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEUgMHg4NjI1CiNk
ZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEIDB4ODg2QQojZGVmaW5lIEdM
X0NVUlJFTlRfVkVSVEVYX0FUVFJJQiAweDg2MjYKI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FS
UkFZX1BPSU5URVIgMHg4NjQ1CiNkZWZpbmUgR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSAw
eDg2NDIKI2RlZmluZSBHTF9WRVJURVhfUFJPR1JBTV9UV09fU0lERSAweDg2NDMKI2RlZmluZSBH
TF9NQVhfVEVYVFVSRV9DT09SRFMgMHg4ODcxCiNkZWZpbmUgR0xfTUFYX1RFWFRVUkVfSU1BR0Vf
VU5JVFMgMHg4ODcyCiNkZWZpbmUgR0xfTUFYX0RSQVdfQlVGRkVSUyAweDg4MjQKI2RlZmluZSBH
TF9EUkFXX0JVRkZFUjAgMHg4ODI1CiNkZWZpbmUgR0xfRFJBV19CVUZGRVIxIDB4ODgyNgojZGVm
aW5lIEdMX0RSQVdfQlVGRkVSMiAweDg4MjcKI2RlZmluZSBHTF9EUkFXX0JVRkZFUjMgMHg4ODI4
CiNkZWZpbmUgR0xfRFJBV19CVUZGRVI0IDB4ODgyOQojZGVmaW5lIEdMX0RSQVdfQlVGRkVSNSAw
eDg4MkEKI2RlZmluZSBHTF9EUkFXX0JVRkZFUjYgMHg4ODJCCiNkZWZpbmUgR0xfRFJBV19CVUZG
RVI3IDB4ODgyQwojZGVmaW5lIEdMX0RSQVdfQlVGRkVSOCAweDg4MkQKI2RlZmluZSBHTF9EUkFX
X0JVRkZFUjkgMHg4ODJFCiNkZWZpbmUgR0xfRFJBV19CVUZGRVIxMCAweDg4MkYKI2RlZmluZSBH
TF9EUkFXX0JVRkZFUjExIDB4ODgzMAojZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTIgMHg4ODMxCiNk
ZWZpbmUgR0xfRFJBV19CVUZGRVIxMyAweDg4MzIKI2RlZmluZSBHTF9EUkFXX0JVRkZFUjE0IDB4
ODgzMwojZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTUgMHg4ODM0CiNkZWZpbmUgR0xfUE9JTlRfU1BS
SVRFIDB4ODg2MQojZGVmaW5lIEdMX0NPT1JEX1JFUExBQ0UgMHg4ODYyCiNkZWZpbmUgR0xfUE9J
TlRfU1BSSVRFX0NPT1JEX09SSUdJTiAweDhDQTAKI2RlZmluZSBHTF9MT1dFUl9MRUZUIDB4OENB
MQojZGVmaW5lIEdMX1VQUEVSX0xFRlQgMHg4Q0EyCiNkZWZpbmUgR0xfU1RFTkNJTF9CQUNLX0ZV
TkMgMHg4ODAwCiNkZWZpbmUgR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sgMHg4Q0E0CiNkZWZp
bmUgR0xfU1RFTkNJTF9CQUNLX1JFRiAweDhDQTMKI2RlZmluZSBHTF9TVEVOQ0lMX0JBQ0tfRkFJ
TCAweDg4MDEKI2RlZmluZSBHTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMIDB4ODgwMgoj
ZGVmaW5lIEdMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MgMHg4ODAzCiNkZWZpbmUgR0xf
U1RFTkNJTF9CQUNLX1dSSVRFTUFTSyAweDhDQTUKCgojZGVmaW5lIEdMX0NVUlJFTlRfUkFTVEVS
X1NFQ09OREFSWV9DT0xPUiAweDg0NUYKI2RlZmluZSBHTF9QSVhFTF9QQUNLX0JVRkZFUiAweDg4
RUIKI2RlZmluZSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSIDB4ODhFQwojZGVmaW5lIEdMX1BJWEVM
X1BBQ0tfQlVGRkVSX0JJTkRJTkcgMHg4OEVECiNkZWZpbmUgR0xfUElYRUxfVU5QQUNLX0JVRkZF
Ul9CSU5ESU5HIDB4ODhFRgojZGVmaW5lIEdMX0ZMT0FUX01BVDJ4MyAweDhCNjUKI2RlZmluZSBH
TF9GTE9BVF9NQVQyeDQgMHg4QjY2CiNkZWZpbmUgR0xfRkxPQVRfTUFUM3gyIDB4OEI2NwojZGVm
aW5lIEdMX0ZMT0FUX01BVDN4NCAweDhCNjgKI2RlZmluZSBHTF9GTE9BVF9NQVQ0eDIgMHg4QjY5
CiNkZWZpbmUgR0xfRkxPQVRfTUFUNHgzIDB4OEI2QQojZGVmaW5lIEdMX1NSR0IgMHg4QzQwCiNk
ZWZpbmUgR0xfU1JHQjggMHg4QzQxCiNkZWZpbmUgR0xfU1JHQl9BTFBIQSAweDhDNDIKI2RlZmlu
ZSBHTF9TUkdCOF9BTFBIQTggMHg4QzQzCiNkZWZpbmUgR0xfU0xVTUlOQU5DRV9BTFBIQSAweDhD
NDQKI2RlZmluZSBHTF9TTFVNSU5BTkNFOF9BTFBIQTggMHg4QzQ1CiNkZWZpbmUgR0xfU0xVTUlO
QU5DRSAweDhDNDYKI2RlZmluZSBHTF9TTFVNSU5BTkNFOCAweDhDNDcKI2RlZmluZSBHTF9DT01Q
UkVTU0VEX1NSR0IgMHg4QzQ4CiNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBIDB4OEM0
OQojZGVmaW5lIEdMX0NPTVBSRVNTRURfU0xVTUlOQU5DRSAweDhDNEEKI2RlZmluZSBHTF9DT01Q
UkVTU0VEX1NMVU1JTkFOQ0VfQUxQSEEgMHg4QzRCCiMgMjQyNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL2dsLmgiIDMKZXh0ZXJuIHZvaWQgZ2xB
Y2N1bSAoR0xlbnVtIG9wLCBHTGZsb2F0IHZhbHVlKTsKZXh0ZXJuIHZvaWQgZ2xBbHBoYUZ1bmMg
KEdMZW51bSBmdW5jLCBHTGNsYW1wZiByZWYpOwpleHRlcm4gR0xib29sZWFuIGdsQXJlVGV4dHVy
ZXNSZXNpZGVudCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnRleHR1cmVzLCBHTGJvb2xlYW4g
KnJlc2lkZW5jZXMpOwpleHRlcm4gdm9pZCBnbEFycmF5RWxlbWVudCAoR0xpbnQgaSk7CmV4dGVy
biB2b2lkIGdsQmVnaW4gKEdMZW51bSBtb2RlKTsKZXh0ZXJuIHZvaWQgZ2xCaW5kVGV4dHVyZSAo
R0xlbnVtIHRhcmdldCwgR0x1aW50IHRleHR1cmUpOwpleHRlcm4gdm9pZCBnbEJpdG1hcCAoR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZmxvYXQgeG9yaWcsIEdMZmxvYXQgeW9yaWcs
IEdMZmxvYXQgeG1vdmUsIEdMZmxvYXQgeW1vdmUsIGNvbnN0IEdMdWJ5dGUgKmJpdG1hcCk7CmV4
dGVybiB2b2lkIGdsQmxlbmRDb2xvciAoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xj
bGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpOwpleHRlcm4gdm9pZCBnbEJsZW5kRXF1YXRpb24g
KEdMZW51bSBtb2RlKTsKZXh0ZXJuIHZvaWQgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUoR0xlbnVt
IG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpOwpleHRlcm4gdm9pZCBnbEJsZW5kRnVuYyAoR0xl
bnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yKTsKZXh0ZXJuIHZvaWQgZ2xDYWxsTGlzdCAoR0x1
aW50IGxpc3QpOwpleHRlcm4gdm9pZCBnbENhbGxMaXN0cyAoR0xzaXplaSBuLCBHTGVudW0gdHlw
ZSwgY29uc3QgR0x2b2lkICpsaXN0cyk7CmV4dGVybiB2b2lkIGdsQ2xlYXIgKEdMYml0ZmllbGQg
bWFzayk7CmV4dGVybiB2b2lkIGdsQ2xlYXJBY2N1bSAoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3Jl
ZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSk7CmV4dGVybiB2b2lkIGdsQ2xlYXJDb2xv
ciAoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYg
YWxwaGEpOwpleHRlcm4gdm9pZCBnbENsZWFyRGVwdGggKEdMY2xhbXBkIGRlcHRoKTsKZXh0ZXJu
IHZvaWQgZ2xDbGVhckluZGV4IChHTGZsb2F0IGMpOwpleHRlcm4gdm9pZCBnbENsZWFyU3RlbmNp
bCAoR0xpbnQgcyk7CmV4dGVybiB2b2lkIGdsQ2xpcFBsYW5lIChHTGVudW0gcGxhbmUsIGNvbnN0
IEdMZG91YmxlICplcXVhdGlvbik7CmV4dGVybiB2b2lkIGdsQ29sb3IzYiAoR0xieXRlIHJlZCwg
R0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSk7CmV4dGVybiB2b2lkIGdsQ29sb3IzYnYgKGNvbnN0
IEdMYnl0ZSAqdik7CmV4dGVybiB2b2lkIGdsQ29sb3IzZCAoR0xkb3VibGUgcmVkLCBHTGRvdWJs
ZSBncmVlbiwgR0xkb3VibGUgYmx1ZSk7CmV4dGVybiB2b2lkIGdsQ29sb3IzZHYgKGNvbnN0IEdM
ZG91YmxlICp2KTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNmIChHTGZsb2F0IHJlZCwgR0xmbG9hdCBn
cmVlbiwgR0xmbG9hdCBibHVlKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNmdiAoY29uc3QgR0xmbG9h
dCAqdik7CmV4dGVybiB2b2lkIGdsQ29sb3IzaSAoR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xp
bnQgYmx1ZSk7CmV4dGVybiB2b2lkIGdsQ29sb3IzaXYgKGNvbnN0IEdMaW50ICp2KTsKZXh0ZXJu
IHZvaWQgZ2xDb2xvcjNzIChHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9ydCBibHVl
KTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNzdiAoY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lk
IGdsQ29sb3IzdWIgKEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpOwpl
eHRlcm4gdm9pZCBnbENvbG9yM3VidiAoY29uc3QgR0x1Ynl0ZSAqdik7CmV4dGVybiB2b2lkIGds
Q29sb3IzdWkgKEdMdWludCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJsdWUpOwpleHRlcm4g
dm9pZCBnbENvbG9yM3VpdiAoY29uc3QgR0x1aW50ICp2KTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjN1
cyAoR0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSk7CmV4dGVybiB2
b2lkIGdsQ29sb3IzdXN2IChjb25zdCBHTHVzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsQ29sb3I0
YiAoR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSwgR0xieXRlIGFscGhhKTsK
ZXh0ZXJuIHZvaWQgZ2xDb2xvcjRidiAoY29uc3QgR0xieXRlICp2KTsKZXh0ZXJuIHZvaWQgZ2xD
b2xvcjRkIChHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVlLCBHTGRv
dWJsZSBhbHBoYSk7CmV4dGVybiB2b2lkIGdsQ29sb3I0ZHYgKGNvbnN0IEdMZG91YmxlICp2KTsK
ZXh0ZXJuIHZvaWQgZ2xDb2xvcjRmIChHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9h
dCBibHVlLCBHTGZsb2F0IGFscGhhKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRmdiAoY29uc3QgR0xm
bG9hdCAqdik7CmV4dGVybiB2b2lkIGdsQ29sb3I0aSAoR0xpbnQgcmVkLCBHTGludCBncmVlbiwg
R0xpbnQgYmx1ZSwgR0xpbnQgYWxwaGEpOwpleHRlcm4gdm9pZCBnbENvbG9yNGl2IChjb25zdCBH
TGludCAqdik7CmV4dGVybiB2b2lkIGdsQ29sb3I0cyAoR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3Jl
ZW4sIEdMc2hvcnQgYmx1ZSwgR0xzaG9ydCBhbHBoYSk7CmV4dGVybiB2b2lkIGdsQ29sb3I0c3Yg
KGNvbnN0IEdMc2hvcnQgKnYpOwpleHRlcm4gdm9pZCBnbENvbG9yNHViIChHTHVieXRlIHJlZCwg
R0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlLCBHTHVieXRlIGFscGhhKTsKZXh0ZXJuIHZvaWQg
Z2xDb2xvcjR1YnYgKGNvbnN0IEdMdWJ5dGUgKnYpOwpleHRlcm4gdm9pZCBnbENvbG9yNHVpIChH
THVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWludCBibHVlLCBHTHVpbnQgYWxwaGEpOwpleHRl
cm4gdm9pZCBnbENvbG9yNHVpdiAoY29uc3QgR0x1aW50ICp2KTsKZXh0ZXJuIHZvaWQgZ2xDb2xv
cjR1cyAoR0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSwgR0x1c2hv
cnQgYWxwaGEpOwpleHRlcm4gdm9pZCBnbENvbG9yNHVzdiAoY29uc3QgR0x1c2hvcnQgKnYpOwpl
eHRlcm4gdm9pZCBnbENvbG9yTWFzayAoR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBH
TGJvb2xlYW4gYmx1ZSwgR0xib29sZWFuIGFscGhhKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvck1hdGVy
aWFsIChHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpOwpleHRlcm4gdm9pZCBnbENvbG9yUG9pbnRl
ciAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQg
KnBvaW50ZXIpOwpleHRlcm4gdm9pZCBnbENvbG9yU3ViVGFibGUgKEdMZW51bSB0YXJnZXQsIEdM
c2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBj
b25zdCBHTHZvaWQgKmRhdGEpOwpleHRlcm4gdm9pZCBnbENvbG9yVGFibGUgKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqdGFibGUpOwpleHRlcm4gdm9pZCBnbENvbG9yVGFi
bGVQYXJhbWV0ZXJmdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0
ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbENvbG9yVGFibGVQYXJhbWV0ZXJpdiAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xD
b252b2x1dGlvbkZpbHRlcjFEIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQg
KmltYWdlKTsKZXh0ZXJuIHZvaWQgZ2xDb252b2x1dGlvbkZpbHRlcjJEIChHTGVudW0gdGFyZ2V0
LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbWFnZSk7CmV4dGVybiB2
b2lkIGdsQ29udm9sdXRpb25QYXJhbWV0ZXJmIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xDb252b2x1dGlvblBhcmFtZXRlcmZ2IChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVy
biB2b2lkIGdsQ29udm9sdXRpb25QYXJhbWV0ZXJpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsIEdMaW50IHBhcmFtcyk7CmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25QYXJhbWV0ZXJpdiAo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKZXh0ZXJu
IHZvaWQgZ2xDb3B5Q29sb3JTdWJUYWJsZSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzdGFydCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CmV4dGVybiB2b2lkIGdsQ29weUNvbG9y
VGFibGUgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xp
bnQgeSwgR0xzaXplaSB3aWR0aCk7CmV4dGVybiB2b2lkIGdsQ29weUNvbnZvbHV0aW9uRmlsdGVy
MUQgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQg
eSwgR0xzaXplaSB3aWR0aCk7CmV4dGVybiB2b2lkIGdsQ29weUNvbnZvbHV0aW9uRmlsdGVyMkQg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwpleHRlcm4gdm9pZCBnbENvcHlQaXhlbHMg
KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g
dHlwZSk7CmV4dGVybiB2b2lkIGdsQ29weVRleEltYWdlMUQgKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkg
d2lkdGgsIEdMaW50IGJvcmRlcik7CmV4dGVybiB2b2lkIGdsQ29weVRleEltYWdlMkQgKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdM
aW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwpleHRl
cm4gdm9pZCBnbENvcHlUZXhTdWJJbWFnZTFEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CmV4dGVybiB2
b2lkIGdsQ29weVRleFN1YkltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCk7CmV4dGVybiB2b2lkIGdsQ29weVRleFN1YkltYWdlM0QgKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGlu
dCB6b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCk7CmV4dGVybiB2b2lkIGdsQ3VsbEZhY2UgKEdMZW51bSBtb2RlKTsKZXh0ZXJuIHZvaWQgZ2xE
ZWxldGVMaXN0cyAoR0x1aW50IGxpc3QsIEdMc2l6ZWkgcmFuZ2UpOwpleHRlcm4gdm9pZCBnbERl
bGV0ZVRleHR1cmVzIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4dHVyZXMpOwpleHRlcm4g
dm9pZCBnbERlcHRoRnVuYyAoR0xlbnVtIGZ1bmMpOwpleHRlcm4gdm9pZCBnbERlcHRoTWFzayAo
R0xib29sZWFuIGZsYWcpOwpleHRlcm4gdm9pZCBnbERlcHRoUmFuZ2UgKEdMY2xhbXBkIHpOZWFy
LCBHTGNsYW1wZCB6RmFyKTsKZXh0ZXJuIHZvaWQgZ2xEaXNhYmxlIChHTGVudW0gY2FwKTsKZXh0
ZXJuIHZvaWQgZ2xEaXNhYmxlQ2xpZW50U3RhdGUgKEdMZW51bSBhcnJheSk7CmV4dGVybiB2b2lk
IGdsRHJhd0FycmF5cyAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsK
ZXh0ZXJuIHZvaWQgZ2xEcmF3QnVmZmVyIChHTGVudW0gbW9kZSk7CmV4dGVybiB2b2lkIGdsRHJh
d0VsZW1lbnRzIChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0
IEdMdm9pZCAqaW5kaWNlcyk7CmV4dGVybiB2b2lkIGdsRHJhd1BpeGVscyAoR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQgKnBpeGVscyk7CmV4dGVybiB2b2lkIGdsRHJhd1JhbmdlRWxlbWVudHMgKEdMZW51bSBtb2Rl
LCBHTHVpbnQgc3RhcnQsIEdMdWludCBlbmQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBj
b25zdCBHTHZvaWQgKmluZGljZXMpOwpleHRlcm4gdm9pZCBnbEVkZ2VGbGFnIChHTGJvb2xlYW4g
ZmxhZyk7CmV4dGVybiB2b2lkIGdsRWRnZUZsYWdQb2ludGVyIChHTHNpemVpIHN0cmlkZSwgY29u
c3QgR0x2b2lkICpwb2ludGVyKTsKZXh0ZXJuIHZvaWQgZ2xFZGdlRmxhZ3YgKGNvbnN0IEdMYm9v
bGVhbiAqZmxhZyk7CmV4dGVybiB2b2lkIGdsRW5hYmxlIChHTGVudW0gY2FwKTsKZXh0ZXJuIHZv
aWQgZ2xFbmFibGVDbGllbnRTdGF0ZSAoR0xlbnVtIGFycmF5KTsKZXh0ZXJuIHZvaWQgZ2xFbmQg
KHZvaWQpOwpleHRlcm4gdm9pZCBnbEVuZExpc3QgKHZvaWQpOwpleHRlcm4gdm9pZCBnbEV2YWxD
b29yZDFkIChHTGRvdWJsZSB1KTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQxZHYgKGNvbnN0IEdM
ZG91YmxlICp1KTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQxZiAoR0xmbG9hdCB1KTsKZXh0ZXJu
IHZvaWQgZ2xFdmFsQ29vcmQxZnYgKGNvbnN0IEdMZmxvYXQgKnUpOwpleHRlcm4gdm9pZCBnbEV2
YWxDb29yZDJkIChHTGRvdWJsZSB1LCBHTGRvdWJsZSB2KTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29v
cmQyZHYgKGNvbnN0IEdMZG91YmxlICp1KTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQyZiAoR0xm
bG9hdCB1LCBHTGZsb2F0IHYpOwpleHRlcm4gdm9pZCBnbEV2YWxDb29yZDJmdiAoY29uc3QgR0xm
bG9hdCAqdSk7CmV4dGVybiB2b2lkIGdsRXZhbE1lc2gxIChHTGVudW0gbW9kZSwgR0xpbnQgaTEs
IEdMaW50IGkyKTsKZXh0ZXJuIHZvaWQgZ2xFdmFsTWVzaDIgKEdMZW51bSBtb2RlLCBHTGludCBp
MSwgR0xpbnQgaTIsIEdMaW50IGoxLCBHTGludCBqMik7CmV4dGVybiB2b2lkIGdsRXZhbFBvaW50
MSAoR0xpbnQgaSk7CmV4dGVybiB2b2lkIGdsRXZhbFBvaW50MiAoR0xpbnQgaSwgR0xpbnQgaik7
CmV4dGVybiB2b2lkIGdsRmVlZGJhY2tCdWZmZXIgKEdMc2l6ZWkgc2l6ZSwgR0xlbnVtIHR5cGUs
IEdMZmxvYXQgKmJ1ZmZlcik7CmV4dGVybiB2b2lkIGdsRmluaXNoICh2b2lkKTsKZXh0ZXJuIHZv
aWQgZ2xGbHVzaCAodm9pZCk7CmV4dGVybiB2b2lkIGdsRm9nZiAoR0xlbnVtIHBuYW1lLCBHTGZs
b2F0IHBhcmFtKTsKZXh0ZXJuIHZvaWQgZ2xGb2dmdiAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZs
b2F0ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbEZvZ2kgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pOwpleHRlcm4gdm9pZCBnbEZvZ2l2IChHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJh
bXMpOwpleHRlcm4gdm9pZCBnbEZyb250RmFjZSAoR0xlbnVtIG1vZGUpOwpleHRlcm4gdm9pZCBn
bEZydXN0dW0gKEdMZG91YmxlIGxlZnQsIEdMZG91YmxlIHJpZ2h0LCBHTGRvdWJsZSBib3R0b20s
IEdMZG91YmxlIHRvcCwgR0xkb3VibGUgek5lYXIsIEdMZG91YmxlIHpGYXIpOwpleHRlcm4gR0x1
aW50IGdsR2VuTGlzdHMgKEdMc2l6ZWkgcmFuZ2UpOwpleHRlcm4gdm9pZCBnbEdlblRleHR1cmVz
IChHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMpOwpleHRlcm4gdm9pZCBnbEdldEJvb2xlYW52
IChHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRDbGlw
UGxhbmUgKEdMZW51bSBwbGFuZSwgR0xkb3VibGUgKmVxdWF0aW9uKTsKZXh0ZXJuIHZvaWQgZ2xH
ZXRDb2xvclRhYmxlIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
R0x2b2lkICp0YWJsZSk7CmV4dGVybiB2b2lkIGdsR2V0Q29sb3JUYWJsZVBhcmFtZXRlcmZ2IChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVybiB2b2lk
IGdsR2V0Q29sb3JUYWJsZVBhcmFtZXRlcml2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbEdldENvbnZvbHV0aW9uRmlsdGVyIChHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICppbWFnZSk7CmV4
dGVybiB2b2lkIGdsR2V0Q29udm9sdXRpb25QYXJhbWV0ZXJmdiAoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbEdldENvbnZvbHV0aW9u
UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7
CmV4dGVybiB2b2lkIGdsR2V0RG91YmxldiAoR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1z
KTsKZXh0ZXJuIEdMZW51bSBnbEdldEVycm9yICh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2xHZXRGbG9h
dHYgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRIaXN0
b2dyYW0gKEdMZW51bSB0YXJnZXQsIEdMYm9vbGVhbiByZXNldCwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIEdMdm9pZCAqdmFsdWVzKTsKZXh0ZXJuIHZvaWQgZ2xHZXRIaXN0b2dyYW1QYXJh
bWV0ZXJmdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwpl
eHRlcm4gdm9pZCBnbEdldEhpc3RvZ3JhbVBhcmFtZXRlcml2IChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbEdldEludGVnZXJ2IChHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbEdldExpZ2h0ZnYgKEdMZW51
bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbEdl
dExpZ2h0aXYgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKZXh0
ZXJuIHZvaWQgZ2xHZXRNYXBkdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGRvdWJs
ZSAqdik7CmV4dGVybiB2b2lkIGdsR2V0TWFwZnYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVy
eSwgR0xmbG9hdCAqdik7CmV4dGVybiB2b2lkIGdsR2V0TWFwaXYgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBxdWVyeSwgR0xpbnQgKnYpOwpleHRlcm4gdm9pZCBnbEdldE1hdGVyaWFsZnYgKEdMZW51
bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0
TWF0ZXJpYWxpdiAoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CmV4
dGVybiB2b2lkIGdsR2V0TWlubWF4IChHTGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVzZXQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnZhbHVlcyk7CmV4dGVybiB2b2lkIGds
R2V0TWlubWF4UGFyYW1ldGVyZnYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRNaW5tYXhQYXJhbWV0ZXJpdiAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhl
bE1hcGZ2IChHTGVudW0gbWFwLCBHTGZsb2F0ICp2YWx1ZXMpOwpleHRlcm4gdm9pZCBnbEdldFBp
eGVsTWFwdWl2IChHTGVudW0gbWFwLCBHTHVpbnQgKnZhbHVlcyk7CmV4dGVybiB2b2lkIGdsR2V0
UGl4ZWxNYXB1c3YgKEdMZW51bSBtYXAsIEdMdXNob3J0ICp2YWx1ZXMpOwpleHRlcm4gdm9pZCBn
bEdldFBvaW50ZXJ2IChHTGVudW0gcG5hbWUsIEdMdm9pZCogKnBhcmFtcyk7CmV4dGVybiB2b2lk
IGdsR2V0UG9seWdvblN0aXBwbGUgKEdMdWJ5dGUgKm1hc2spOwpleHRlcm4gdm9pZCBnbEdldFNl
cGFyYWJsZUZpbHRlciAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IEdMdm9pZCAqcm93LCBHTHZvaWQgKmNvbHVtbiwgR0x2b2lkICpzcGFuKTsKZXh0ZXJuIGNvbnN0
IEdMdWJ5dGUgKiBnbEdldFN0cmluZyAoR0xlbnVtIG5hbWUpOwpleHRlcm4gdm9pZCBnbEdldFRl
eEVudmZ2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CmV4
dGVybiB2b2lkIGdsR2V0VGV4RW52aXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0VGV4R2VuZHYgKEdMZW51bSBjb29yZCwgR0xl
bnVtIHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhHZW5mdiAo
R0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVybiB2b2lk
IGdsR2V0VGV4R2VuaXYgKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1z
KTsKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhJbWFnZSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnBpeGVscyk7CmV4dGVybiB2b2lk
IGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdiAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
ZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhMZXZlbFBh
cmFtZXRlcml2IChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJmdiAoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbEdldFRleFBh
cmFtZXRlcml2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwpl
eHRlcm4gdm9pZCBnbEhpbnQgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKTsKZXh0ZXJuIHZv
aWQgZ2xIaXN0b2dyYW0gKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xib29sZWFuIHNpbmspOwpleHRlcm4gdm9pZCBnbEluZGV4TWFzayAoR0x1
aW50IG1hc2spOwpleHRlcm4gdm9pZCBnbEluZGV4UG9pbnRlciAoR0xlbnVtIHR5cGUsIEdMc2l6
ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwpleHRlcm4gdm9pZCBnbEluZGV4ZCAo
R0xkb3VibGUgYyk7CmV4dGVybiB2b2lkIGdsSW5kZXhkdiAoY29uc3QgR0xkb3VibGUgKmMpOwpl
eHRlcm4gdm9pZCBnbEluZGV4ZiAoR0xmbG9hdCBjKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleGZ2IChj
b25zdCBHTGZsb2F0ICpjKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleGkgKEdMaW50IGMpOwpleHRlcm4g
dm9pZCBnbEluZGV4aXYgKGNvbnN0IEdMaW50ICpjKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleHMgKEdM
c2hvcnQgYyk7CmV4dGVybiB2b2lkIGdsSW5kZXhzdiAoY29uc3QgR0xzaG9ydCAqYyk7CmV4dGVy
biB2b2lkIGdsSW5kZXh1YiAoR0x1Ynl0ZSBjKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleHVidiAoY29u
c3QgR0x1Ynl0ZSAqYyk7CmV4dGVybiB2b2lkIGdsSW5pdE5hbWVzICh2b2lkKTsKZXh0ZXJuIHZv
aWQgZ2xJbnRlcmxlYXZlZEFycmF5cyAoR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBzdHJpZGUsIGNv
bnN0IEdMdm9pZCAqcG9pbnRlcik7CmV4dGVybiBHTGJvb2xlYW4gZ2xJc0VuYWJsZWQgKEdMZW51
bSBjYXApOwpleHRlcm4gR0xib29sZWFuIGdsSXNMaXN0IChHTHVpbnQgbGlzdCk7CmV4dGVybiBH
TGJvb2xlYW4gZ2xJc1RleHR1cmUgKEdMdWludCB0ZXh0dXJlKTsKZXh0ZXJuIHZvaWQgZ2xMaWdo
dE1vZGVsZiAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKZXh0ZXJuIHZvaWQgZ2xMaWdo
dE1vZGVsZnYgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKZXh0ZXJuIHZv
aWQgZ2xMaWdodE1vZGVsaSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CmV4dGVybiB2b2lk
IGdsTGlnaHRNb2RlbGl2IChHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwpleHRl
cm4gdm9pZCBnbExpZ2h0ZiAoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0pOwpleHRlcm4gdm9pZCBnbExpZ2h0ZnYgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBj
b25zdCBHTGZsb2F0ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbExpZ2h0aSAoR0xlbnVtIGxpZ2h0
LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKZXh0ZXJuIHZvaWQgZ2xMaWdodGl2IChHTGVu
dW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CmV4dGVybiB2b2lk
IGdsTGluZVN0aXBwbGUgKEdMaW50IGZhY3RvciwgR0x1c2hvcnQgcGF0dGVybik7CmV4dGVybiB2
b2lkIGdsTGluZVdpZHRoIChHTGZsb2F0IHdpZHRoKTsKZXh0ZXJuIHZvaWQgZ2xMaXN0QmFzZSAo
R0x1aW50IGJhc2UpOwpleHRlcm4gdm9pZCBnbExvYWRJZGVudGl0eSAodm9pZCk7CmV4dGVybiB2
b2lkIGdsTG9hZE1hdHJpeGQgKGNvbnN0IEdMZG91YmxlICptKTsKZXh0ZXJuIHZvaWQgZ2xMb2Fk
TWF0cml4ZiAoY29uc3QgR0xmbG9hdCAqbSk7CmV4dGVybiB2b2lkIGdsTG9hZE5hbWUgKEdMdWlu
dCBuYW1lKTsKZXh0ZXJuIHZvaWQgZ2xMb2dpY09wIChHTGVudW0gb3Bjb2RlKTsKZXh0ZXJuIHZv
aWQgZ2xNYXAxZCAoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGlu
dCBzdHJpZGUsIEdMaW50IG9yZGVyLCBjb25zdCBHTGRvdWJsZSAqcG9pbnRzKTsKZXh0ZXJuIHZv
aWQgZ2xNYXAxZiAoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiwgR0xpbnQg
c3RyaWRlLCBHTGludCBvcmRlciwgY29uc3QgR0xmbG9hdCAqcG9pbnRzKTsKZXh0ZXJuIHZvaWQg
Z2xNYXAyZCAoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGludCB1
c3RyaWRlLCBHTGludCB1b3JkZXIsIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2MiwgR0xpbnQgdnN0
cmlkZSwgR0xpbnQgdm9yZGVyLCBjb25zdCBHTGRvdWJsZSAqcG9pbnRzKTsKZXh0ZXJuIHZvaWQg
Z2xNYXAyZiAoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiwgR0xpbnQgdXN0
cmlkZSwgR0xpbnQgdW9yZGVyLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyLCBHTGludCB2c3RyaWRl
LCBHTGludCB2b3JkZXIsIGNvbnN0IEdMZmxvYXQgKnBvaW50cyk7CmV4dGVybiB2b2lkIGdsTWFw
R3JpZDFkIChHTGludCB1biwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyKTsKZXh0ZXJuIHZvaWQg
Z2xNYXBHcmlkMWYgKEdMaW50IHVuLCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyKTsKZXh0ZXJuIHZv
aWQgZ2xNYXBHcmlkMmQgKEdMaW50IHVuLCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIsIEdMaW50
IHZuLCBHTGRvdWJsZSB2MSwgR0xkb3VibGUgdjIpOwpleHRlcm4gdm9pZCBnbE1hcEdyaWQyZiAo
R0xpbnQgdW4sIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIsIEdMaW50IHZuLCBHTGZsb2F0IHYxLCBH
TGZsb2F0IHYyKTsKZXh0ZXJuIHZvaWQgZ2xNYXRlcmlhbGYgKEdMZW51bSBmYWNlLCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgcGFyYW0pOwpleHRlcm4gdm9pZCBnbE1hdGVyaWFsZnYgKEdMZW51bSBm
YWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVybiB2b2lkIGds
TWF0ZXJpYWxpIChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CmV4dGVy
biB2b2lkIGdsTWF0ZXJpYWxpdiAoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xp
bnQgKnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsTWF0cml4TW9kZSAoR0xlbnVtIG1vZGUpOwpleHRl
cm4gdm9pZCBnbE1pbm1heCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
TGJvb2xlYW4gc2luayk7CmV4dGVybiB2b2lkIGdsTXVsdE1hdHJpeGQgKGNvbnN0IEdMZG91Ymxl
ICptKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0TWF0cml4ZiAoY29uc3QgR0xmbG9hdCAqbSk7CmV4dGVy
biB2b2lkIGdsTmV3TGlzdCAoR0x1aW50IGxpc3QsIEdMZW51bSBtb2RlKTsKZXh0ZXJuIHZvaWQg
Z2xOb3JtYWwzYiAoR0xieXRlIG54LCBHTGJ5dGUgbnksIEdMYnl0ZSBueik7CmV4dGVybiB2b2lk
IGdsTm9ybWFsM2J2IChjb25zdCBHTGJ5dGUgKnYpOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNkIChH
TGRvdWJsZSBueCwgR0xkb3VibGUgbnksIEdMZG91YmxlIG56KTsKZXh0ZXJuIHZvaWQgZ2xOb3Jt
YWwzZHYgKGNvbnN0IEdMZG91YmxlICp2KTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzZiAoR0xmbG9h
dCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueik7CmV4dGVybiB2b2lkIGdsTm9ybWFsM2Z2IChj
b25zdCBHTGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzaSAoR0xpbnQgbngsIEdMaW50
IG55LCBHTGludCBueik7CmV4dGVybiB2b2lkIGdsTm9ybWFsM2l2IChjb25zdCBHTGludCAqdik7
CmV4dGVybiB2b2lkIGdsTm9ybWFsM3MgKEdMc2hvcnQgbngsIEdMc2hvcnQgbnksIEdMc2hvcnQg
bnopOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNzdiAoY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2
b2lkIGdsTm9ybWFsUG9pbnRlciAoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBH
THZvaWQgKnBvaW50ZXIpOwpleHRlcm4gdm9pZCBnbE9ydGhvIChHTGRvdWJsZSBsZWZ0LCBHTGRv
dWJsZSByaWdodCwgR0xkb3VibGUgYm90dG9tLCBHTGRvdWJsZSB0b3AsIEdMZG91YmxlIHpOZWFy
LCBHTGRvdWJsZSB6RmFyKTsKZXh0ZXJuIHZvaWQgZ2xQYXNzVGhyb3VnaCAoR0xmbG9hdCB0b2tl
bik7CmV4dGVybiB2b2lkIGdsUGl4ZWxNYXBmdiAoR0xlbnVtIG1hcCwgR0xpbnQgbWFwc2l6ZSwg
Y29uc3QgR0xmbG9hdCAqdmFsdWVzKTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbE1hcHVpdiAoR0xlbnVt
IG1hcCwgR0xpbnQgbWFwc2l6ZSwgY29uc3QgR0x1aW50ICp2YWx1ZXMpOwpleHRlcm4gdm9pZCBn
bFBpeGVsTWFwdXN2IChHTGVudW0gbWFwLCBHTGludCBtYXBzaXplLCBjb25zdCBHTHVzaG9ydCAq
dmFsdWVzKTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbFN0b3JlZiAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0
IHBhcmFtKTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbFN0b3JlaSAoR0xlbnVtIHBuYW1lLCBHTGludCBw
YXJhbSk7CmV4dGVybiB2b2lkIGdsUGl4ZWxUcmFuc2ZlcmYgKEdMZW51bSBwbmFtZSwgR0xmbG9h
dCBwYXJhbSk7CmV4dGVybiB2b2lkIGdsUGl4ZWxUcmFuc2ZlcmkgKEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0pOwpleHRlcm4gdm9pZCBnbFBpeGVsWm9vbSAoR0xmbG9hdCB4ZmFjdG9yLCBHTGZs
b2F0IHlmYWN0b3IpOwpleHRlcm4gdm9pZCBnbFBvaW50U2l6ZSAoR0xmbG9hdCBzaXplKTsKZXh0
ZXJuIHZvaWQgZ2xQb2x5Z29uTW9kZSAoR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKTsKZXh0ZXJu
IHZvaWQgZ2xQb2x5Z29uT2Zmc2V0IChHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cyk7CmV4
dGVybiB2b2lkIGdsUG9seWdvblN0aXBwbGUgKGNvbnN0IEdMdWJ5dGUgKm1hc2spOwpleHRlcm4g
dm9pZCBnbFBvcEF0dHJpYiAodm9pZCk7CmV4dGVybiB2b2lkIGdsUG9wQ2xpZW50QXR0cmliICh2
b2lkKTsKZXh0ZXJuIHZvaWQgZ2xQb3BNYXRyaXggKHZvaWQpOwpleHRlcm4gdm9pZCBnbFBvcE5h
bWUgKHZvaWQpOwpleHRlcm4gdm9pZCBnbFByaW9yaXRpemVUZXh0dXJlcyAoR0xzaXplaSBuLCBj
b25zdCBHTHVpbnQgKnRleHR1cmVzLCBjb25zdCBHTGNsYW1wZiAqcHJpb3JpdGllcyk7CmV4dGVy
biB2b2lkIGdsUHVzaEF0dHJpYiAoR0xiaXRmaWVsZCBtYXNrKTsKZXh0ZXJuIHZvaWQgZ2xQdXNo
Q2xpZW50QXR0cmliIChHTGJpdGZpZWxkIG1hc2spOwpleHRlcm4gdm9pZCBnbFB1c2hNYXRyaXgg
KHZvaWQpOwpleHRlcm4gdm9pZCBnbFB1c2hOYW1lIChHTHVpbnQgbmFtZSk7CmV4dGVybiB2b2lk
IGdsUmFzdGVyUG9zMmQgKEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOwpleHRlcm4gdm9pZCBnbFJh
c3RlclBvczJkdiAoY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczJm
IChHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zMmZ2IChjb25z
dCBHTGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyaSAoR0xpbnQgeCwgR0xpbnQg
eSk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zMml2IChjb25zdCBHTGludCAqdik7CmV4dGVybiB2
b2lkIGdsUmFzdGVyUG9zMnMgKEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKZXh0ZXJuIHZvaWQgZ2xS
YXN0ZXJQb3Myc3YgKGNvbnN0IEdMc2hvcnQgKnYpOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczNk
IChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKZXh0ZXJuIHZvaWQgZ2xSYXN0
ZXJQb3MzZHYgKGNvbnN0IEdMZG91YmxlICp2KTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MzZiAo
R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9z
M2Z2IChjb25zdCBHTGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MzaSAoR0xpbnQg
eCwgR0xpbnQgeSwgR0xpbnQgeik7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM2l2IChjb25zdCBH
TGludCAqdik7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM3MgKEdMc2hvcnQgeCwgR0xzaG9ydCB5
LCBHTHNob3J0IHopOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczNzdiAoY29uc3QgR0xzaG9ydCAq
dik7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zNGQgKEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdM
ZG91YmxlIHosIEdMZG91YmxlIHcpOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRkdiAoY29uc3Qg
R0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRmIChHTGZsb2F0IHgsIEdMZmxv
YXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRmdiAo
Y29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zNGkgKEdMaW50IHgsIEdM
aW50IHksIEdMaW50IHosIEdMaW50IHcpOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRpdiAoY29u
c3QgR0xpbnQgKnYpOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRzIChHTHNob3J0IHgsIEdMc2hv
cnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0IHcpOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRzdiAo
Y29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsUmVhZEJ1ZmZlciAoR0xlbnVtIG1vZGUp
OwpleHRlcm4gdm9pZCBnbFJlYWRQaXhlbHMgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICpw
aXhlbHMpOwpleHRlcm4gdm9pZCBnbFJlY3RkIChHTGRvdWJsZSB4MSwgR0xkb3VibGUgeTEsIEdM
ZG91YmxlIHgyLCBHTGRvdWJsZSB5Mik7CmV4dGVybiB2b2lkIGdsUmVjdGR2IChjb25zdCBHTGRv
dWJsZSAqdjEsIGNvbnN0IEdMZG91YmxlICp2Mik7CmV4dGVybiB2b2lkIGdsUmVjdGYgKEdMZmxv
YXQgeDEsIEdMZmxvYXQgeTEsIEdMZmxvYXQgeDIsIEdMZmxvYXQgeTIpOwpleHRlcm4gdm9pZCBn
bFJlY3RmdiAoY29uc3QgR0xmbG9hdCAqdjEsIGNvbnN0IEdMZmxvYXQgKnYyKTsKZXh0ZXJuIHZv
aWQgZ2xSZWN0aSAoR0xpbnQgeDEsIEdMaW50IHkxLCBHTGludCB4MiwgR0xpbnQgeTIpOwpleHRl
cm4gdm9pZCBnbFJlY3RpdiAoY29uc3QgR0xpbnQgKnYxLCBjb25zdCBHTGludCAqdjIpOwpleHRl
cm4gdm9pZCBnbFJlY3RzIChHTHNob3J0IHgxLCBHTHNob3J0IHkxLCBHTHNob3J0IHgyLCBHTHNo
b3J0IHkyKTsKZXh0ZXJuIHZvaWQgZ2xSZWN0c3YgKGNvbnN0IEdMc2hvcnQgKnYxLCBjb25zdCBH
THNob3J0ICp2Mik7CmV4dGVybiBHTGludCBnbFJlbmRlck1vZGUgKEdMZW51bSBtb2RlKTsKZXh0
ZXJuIHZvaWQgZ2xSZXNldEhpc3RvZ3JhbSAoR0xlbnVtIHRhcmdldCk7CmV4dGVybiB2b2lkIGds
UmVzZXRNaW5tYXggKEdMZW51bSB0YXJnZXQpOwpleHRlcm4gdm9pZCBnbFJvdGF0ZWQgKEdMZG91
YmxlIGFuZ2xlLCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKZXh0ZXJuIHZv
aWQgZ2xSb3RhdGVmIChHTGZsb2F0IGFuZ2xlLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9h
dCB6KTsKZXh0ZXJuIHZvaWQgZ2xTY2FsZWQgKEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91
YmxlIHopOwpleHRlcm4gdm9pZCBnbFNjYWxlZiAoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv
YXQgeik7CmV4dGVybiB2b2lkIGdsU2Npc3NvciAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpOwpleHRlcm4gdm9pZCBnbFNlbGVjdEJ1ZmZlciAoR0xzaXpl
aSBzaXplLCBHTHVpbnQgKmJ1ZmZlcik7CmV4dGVybiB2b2lkIGdsU2VwYXJhYmxlRmlsdGVyMkQg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnJv
dywgY29uc3QgR0x2b2lkICpjb2x1bW4pOwpleHRlcm4gdm9pZCBnbFNoYWRlTW9kZWwgKEdMZW51
bSBtb2RlKTsKZXh0ZXJuIHZvaWQgZ2xTdGVuY2lsRnVuYyAoR0xlbnVtIGZ1bmMsIEdMaW50IHJl
ZiwgR0x1aW50IG1hc2spOwpleHRlcm4gdm9pZCBnbFN0ZW5jaWxNYXNrIChHTHVpbnQgbWFzayk7
CmV4dGVybiB2b2lkIGdsU3RlbmNpbE9wIChHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVu
dW0genBhc3MpOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMWQgKEdMZG91YmxlIHMpOwpleHRlcm4g
dm9pZCBnbFRleENvb3JkMWR2IChjb25zdCBHTGRvdWJsZSAqdik7CmV4dGVybiB2b2lkIGdsVGV4
Q29vcmQxZiAoR0xmbG9hdCBzKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDFmdiAoY29uc3QgR0xm
bG9hdCAqdik7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQxaSAoR0xpbnQgcyk7CmV4dGVybiB2b2lk
IGdsVGV4Q29vcmQxaXYgKGNvbnN0IEdMaW50ICp2KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDFz
IChHTHNob3J0IHMpOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMXN2IChjb25zdCBHTHNob3J0ICp2
KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJkIChHTGRvdWJsZSBzLCBHTGRvdWJsZSB0KTsKZXh0
ZXJuIHZvaWQgZ2xUZXhDb29yZDJkdiAoY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBn
bFRleENvb3JkMmYgKEdMZmxvYXQgcywgR0xmbG9hdCB0KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29y
ZDJmdiAoY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyaSAoR0xpbnQg
cywgR0xpbnQgdCk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyaXYgKGNvbnN0IEdMaW50ICp2KTsK
ZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJzIChHTHNob3J0IHMsIEdMc2hvcnQgdCk7CmV4dGVybiB2
b2lkIGdsVGV4Q29vcmQyc3YgKGNvbnN0IEdMc2hvcnQgKnYpOwpleHRlcm4gdm9pZCBnbFRleENv
b3JkM2QgKEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIpOwpleHRlcm4gdm9pZCBn
bFRleENvb3JkM2R2IChjb25zdCBHTGRvdWJsZSAqdik7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQz
ZiAoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgcik7CmV4dGVybiB2b2lkIGdsVGV4Q29v
cmQzZnYgKGNvbnN0IEdMZmxvYXQgKnYpOwpleHRlcm4gdm9pZCBnbFRleENvb3JkM2kgKEdMaW50
IHMsIEdMaW50IHQsIEdMaW50IHIpOwpleHRlcm4gdm9pZCBnbFRleENvb3JkM2l2IChjb25zdCBH
TGludCAqdik7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzcyAoR0xzaG9ydCBzLCBHTHNob3J0IHQs
IEdMc2hvcnQgcik7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzc3YgKGNvbnN0IEdMc2hvcnQgKnYp
OwpleHRlcm4gdm9pZCBnbFRleENvb3JkNGQgKEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91
YmxlIHIsIEdMZG91YmxlIHEpOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNGR2IChjb25zdCBHTGRv
dWJsZSAqdik7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0ZiAoR0xmbG9hdCBzLCBHTGZsb2F0IHQs
IEdMZmxvYXQgciwgR0xmbG9hdCBxKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRmdiAoY29uc3Qg
R0xmbG9hdCAqdik7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0aSAoR0xpbnQgcywgR0xpbnQgdCwg
R0xpbnQgciwgR0xpbnQgcSk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0aXYgKGNvbnN0IEdMaW50
ICp2KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRzIChHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xz
aG9ydCByLCBHTHNob3J0IHEpOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNHN2IChjb25zdCBHTHNo
b3J0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZFBvaW50ZXIgKEdMaW50IHNpemUsIEdMZW51
bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKZXh0ZXJuIHZv
aWQgZ2xUZXhFbnZmIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0p
OwpleHRlcm4gdm9pZCBnbFRleEVudmZ2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNv
bnN0IEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsVGV4RW52aSAoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CmV4dGVybiB2b2lkIGdsVGV4RW52aXYgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CmV4dGVybiB2
b2lkIGdsVGV4R2VuZCAoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZG91YmxlIHBhcmFt
KTsKZXh0ZXJuIHZvaWQgZ2xUZXhHZW5kdiAoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNv
bnN0IEdMZG91YmxlICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbFRleEdlbmYgKEdMZW51bSBjb29y
ZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKZXh0ZXJuIHZvaWQgZ2xUZXhHZW5mdiAo
R0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVy
biB2b2lkIGdsVGV4R2VuaSAoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFt
KTsKZXh0ZXJuIHZvaWQgZ2xUZXhHZW5pdiAoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNv
bnN0IEdMaW50ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbFRleEltYWdlMUQgKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
aW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4
ZWxzKTsKZXh0ZXJuIHZvaWQgZ2xUZXhJbWFnZTJEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl
bCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
R0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpw
aXhlbHMpOwpleHRlcm4gdm9pZCBnbFRleEltYWdlM0QgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQgKnBpeGVscyk7CmV4dGVybiB2b2lkIGdsVGV4UGFyYW1ldGVyZiAoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKZXh0ZXJuIHZvaWQgZ2xU
ZXhQYXJhbWV0ZXJmdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0
ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbFRleFBhcmFtZXRlcmkgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwpleHRlcm4gdm9pZCBnbFRleFBhcmFtZXRlcml2IChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwpleHRlcm4g
dm9pZCBnbFRleFN1YkltYWdlMUQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4
b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qg
R0x2b2lkICpwaXhlbHMpOwpleHRlcm4gdm9pZCBnbFRleFN1YkltYWdlMkQgKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdM
dm9pZCAqcGl4ZWxzKTsKZXh0ZXJuIHZvaWQgZ2xUZXhTdWJJbWFnZTNEIChHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNl
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBm
b3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscyk7CmV4dGVybiB2b2lkIGds
VHJhbnNsYXRlZCAoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7CmV4dGVybiB2
b2lkIGdsVHJhbnNsYXRlZiAoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CmV4dGVy
biB2b2lkIGdsVmVydGV4MmQgKEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOwpleHRlcm4gdm9pZCBn
bFZlcnRleDJkdiAoY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleDJmIChH
TGZsb2F0IHgsIEdMZmxvYXQgeSk7CmV4dGVybiB2b2lkIGdsVmVydGV4MmZ2IChjb25zdCBHTGZs
b2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyaSAoR0xpbnQgeCwgR0xpbnQgeSk7CmV4dGVy
biB2b2lkIGdsVmVydGV4Mml2IChjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4
MnMgKEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyc3YgKGNvbnN0
IEdMc2hvcnQgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleDNkIChHTGRvdWJsZSB4LCBHTGRvdWJs
ZSB5LCBHTGRvdWJsZSB6KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgzZHYgKGNvbnN0IEdMZG91Ymxl
ICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgzZiAoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv
YXQgeik7CmV4dGVybiB2b2lkIGdsVmVydGV4M2Z2IChjb25zdCBHTGZsb2F0ICp2KTsKZXh0ZXJu
IHZvaWQgZ2xWZXJ0ZXgzaSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeik7CmV4dGVybiB2b2lk
IGdsVmVydGV4M2l2IChjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4M3MgKEdM
c2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopOwpleHRlcm4gdm9pZCBnbFZlcnRleDNzdiAo
Y29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4NGQgKEdMZG91YmxlIHgsIEdM
ZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpOwpleHRlcm4gdm9pZCBnbFZlcnRleDRk
diAoY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleDRmIChHTGZsb2F0IHgs
IEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpOwpleHRlcm4gdm9pZCBnbFZlcnRleDRm
diAoY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4NGkgKEdMaW50IHgsIEdM
aW50IHksIEdMaW50IHosIEdMaW50IHcpOwpleHRlcm4gdm9pZCBnbFZlcnRleDRpdiAoY29uc3Qg
R0xpbnQgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleDRzIChHTHNob3J0IHgsIEdMc2hvcnQgeSwg
R0xzaG9ydCB6LCBHTHNob3J0IHcpOwpleHRlcm4gdm9pZCBnbFZlcnRleDRzdiAoY29uc3QgR0xz
aG9ydCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4UG9pbnRlciAoR0xpbnQgc2l6ZSwgR0xlbnVt
IHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwpleHRlcm4gdm9p
ZCBnbFZpZXdwb3J0IChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCk7CgpleHRlcm4gdm9pZCBnbFNhbXBsZUNvdmVyYWdlIChHTGNsYW1wZiB2YWx1ZSwgR0xi
b29sZWFuIGludmVydCk7CmV4dGVybiB2b2lkIGdsU2FtcGxlUGFzcyAoR0xlbnVtIHBhc3MpOwoK
ZXh0ZXJuIHZvaWQgZ2xMb2FkVHJhbnNwb3NlTWF0cml4ZiAoY29uc3QgR0xmbG9hdCAqbSk7CmV4
dGVybiB2b2lkIGdsTG9hZFRyYW5zcG9zZU1hdHJpeGQgKGNvbnN0IEdMZG91YmxlICptKTsKZXh0
ZXJuIHZvaWQgZ2xNdWx0VHJhbnNwb3NlTWF0cml4ZiAoY29uc3QgR0xmbG9hdCAqbSk7CmV4dGVy
biB2b2lkIGdsTXVsdFRyYW5zcG9zZU1hdHJpeGQgKGNvbnN0IEdMZG91YmxlICptKTsKCmV4dGVy
biB2b2lkIGdsQ29tcHJlc3NlZFRleEltYWdlM0QgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs
LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
THNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZv
aWQgKmRhdGEpOwpleHRlcm4gdm9pZCBnbENvbXByZXNzZWRUZXhJbWFnZTJEIChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2
b2lkICpkYXRhKTsKZXh0ZXJuIHZvaWQgZ2xDb21wcmVzc2VkVGV4SW1hZ2UxRCAoR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwg
R0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKZXh0
ZXJuIHZvaWQgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBH
THNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKZXh0ZXJuIHZvaWQgZ2xDb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhv
ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVu
dW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKZXh0ZXJu
IHZvaWQgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UxRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMaW50IHhvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkg
aW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEpOwpleHRlcm4gdm9pZCBnbEdldENvbXByZXNz
ZWRUZXhJbWFnZSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbG9kLCBHTHZvaWQgKmltZyk7CgpleHRl
cm4gdm9pZCBnbEFjdGl2ZVRleHR1cmUgKEdMZW51bSB0ZXh0dXJlKTsKZXh0ZXJuIHZvaWQgZ2xD
bGllbnRBY3RpdmVUZXh0dXJlIChHTGVudW0gdGV4dHVyZSk7CmV4dGVybiB2b2lkIGdsTXVsdGlU
ZXhDb29yZDFkIChHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0
aVRleENvb3JkMWR2IChHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdik7CmV4dGVybiB2
b2lkIGdsTXVsdGlUZXhDb29yZDFmIChHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMpOwpleHRlcm4g
dm9pZCBnbE11bHRpVGV4Q29vcmQxZnYgKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYp
OwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxaSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgcyk7
CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFpdiAoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xp
bnQgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxcyAoR0xlbnVtIHRhcmdldCwgR0xz
aG9ydCBzKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMXN2IChHTGVudW0gdGFyZ2V0LCBj
b25zdCBHTHNob3J0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMmQgKEdMZW51bSB0
YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29v
cmQyZHYgKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KTsKZXh0ZXJuIHZvaWQgZ2xN
dWx0aVRleENvb3JkMmYgKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0KTsKZXh0
ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMmZ2IChHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0
ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMmkgKEdMZW51bSB0YXJnZXQsIEdMaW50
IHMsIEdMaW50IHQpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQyaXYgKEdMZW51bSB0YXJn
ZXQsIGNvbnN0IEdMaW50ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMnMgKEdMZW51
bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENv
b3JkMnN2IChHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xN
dWx0aVRleENvb3JkM2QgKEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdM
ZG91YmxlIHIpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzZHYgKEdMZW51bSB0YXJnZXQs
IGNvbnN0IEdMZG91YmxlICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2YgKEdMZW51
bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIpOwpleHRlcm4gdm9pZCBn
bE11bHRpVGV4Q29vcmQzZnYgKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpOwpleHRl
cm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzaSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQg
dCwgR0xpbnQgcik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDNpdiAoR0xlbnVtIHRhcmdl
dCwgY29uc3QgR0xpbnQgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzcyAoR0xlbnVt
IHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgcik7CmV4dGVybiB2b2lkIGds
TXVsdGlUZXhDb29yZDNzdiAoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVy
biB2b2lkIGdsTXVsdGlUZXhDb29yZDRkIChHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRv
dWJsZSB0LCBHTGRvdWJsZSByLCBHTGRvdWJsZSBxKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENv
b3JkNGR2IChHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdik7CmV4dGVybiB2b2lkIGds
TXVsdGlUZXhDb29yZDRmIChHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xm
bG9hdCByLCBHTGZsb2F0IHEpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZnYgKEdMZW51
bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0
aSAoR0xlbnVtIHRhcmdldCwgR0xpbnQsIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIpOwpleHRl
cm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0aXYgKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2
KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkNHMgKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQg
cywgR0xzaG9ydCB0LCBHTHNob3J0IHIsIEdMc2hvcnQgcSk7CmV4dGVybiB2b2lkIGdsTXVsdGlU
ZXhDb29yZDRzdiAoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7CgpleHRlcm4gdm9p
ZCBnbEZvZ0Nvb3JkZiAoR0xmbG9hdCBjb29yZCk7CmV4dGVybiB2b2lkIGdsRm9nQ29vcmRmdiAo
Y29uc3QgR0xmbG9hdCAqY29vcmQpOwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3JkZCAoR0xkb3VibGUg
Y29vcmQpOwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3JkZHYgKGNvbnN0IEdMZG91YmxlICogY29vcmQp
OwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3JkUG9pbnRlciAoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3Ry
aWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwoKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xv
cjNiIChHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKTsKZXh0ZXJuIHZvaWQg
Z2xTZWNvbmRhcnlDb2xvcjNidiAoY29uc3QgR0xieXRlICp2KTsKZXh0ZXJuIHZvaWQgZ2xTZWNv
bmRhcnlDb2xvcjNkIChHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVl
KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNkdiAoY29uc3QgR0xkb3VibGUgKnYpOwpl
eHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM2YgKEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVu
LCBHTGZsb2F0IGJsdWUpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM2Z2IChjb25zdCBH
TGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNpIChHTGludCByZWQsIEdM
aW50IGdyZWVuLCBHTGludCBibHVlKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNpdiAo
Y29uc3QgR0xpbnQgKnYpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3MgKEdMc2hvcnQg
cmVkLCBHTHNob3J0IGdyZWVuLCBHTHNob3J0IGJsdWUpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFy
eUNvbG9yM3N2IChjb25zdCBHTHNob3J0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xv
cjN1YiAoR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgYmx1ZSk7CmV4dGVybiB2
b2lkIGdsU2Vjb25kYXJ5Q29sb3IzdWJ2IChjb25zdCBHTHVieXRlICp2KTsKZXh0ZXJuIHZvaWQg
Z2xTZWNvbmRhcnlDb2xvcjN1aSAoR0x1aW50IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1
ZSk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzdWl2IChjb25zdCBHTHVpbnQgKnYpOwpl
eHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3VzIChHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdy
ZWVuLCBHTHVzaG9ydCBibHVlKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjN1c3YgKGNv
bnN0IEdMdXNob3J0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvclBvaW50ZXIgKEdM
aW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwb2lu
dGVyKTsKCmV4dGVybiB2b2lkIGdsUG9pbnRQYXJhbWV0ZXJmIChHTGVudW0gcG5hbWUsIEdMZmxv
YXQgcGFyYW0pOwpleHRlcm4gdm9pZCBnbFBvaW50UGFyYW1ldGVyZnYgKEdMZW51bSBwbmFtZSwg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xQb2ludFBhcmFtZXRlcmkgKEdM
ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwpleHRlcm4gdm9pZCBnbFBvaW50UGFyYW1ldGVyaXYg
KEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CgpleHRlcm4gdm9pZCBnbEJsZW5k
RnVuY1NlcGFyYXRlIChHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxw
aGEsIEdMZW51bSBkc3RBbHBoYSk7CgpleHRlcm4gdm9pZCBnbE11bHRpRHJhd0FycmF5cyAoR0xl
bnVtIG1vZGUsIGNvbnN0IEdMaW50ICpmaXJzdCwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMc2l6
ZWkgcHJpbWNvdW50KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aURyYXdFbGVtZW50cyAoR0xlbnVtIG1v
ZGUsIGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqaW5k
aWNlcywgR0xzaXplaSBwcmltY291bnQpOwoKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZCAoR0xk
b3VibGUgeCwgR0xkb3VibGUgeSk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zMmR2IChjb25zdCBH
TGRvdWJsZSAqdik7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zMmYgKEdMZmxvYXQgeCwgR0xmbG9h
dCB5KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZnYgKGNvbnN0IEdMZmxvYXQgKnYpOwpleHRl
cm4gdm9pZCBnbFdpbmRvd1BvczJpIChHTGludCB4LCBHTGludCB5KTsKZXh0ZXJuIHZvaWQgZ2xX
aW5kb3dQb3MyaXYgKGNvbnN0IEdMaW50ICp2KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MycyAo
R0xzaG9ydCB4LCBHTHNob3J0IHkpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJzdiAoY29uc3Qg
R0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zM2QgKEdMZG91YmxlIHgsIEdMZG91
YmxlIHksIEdMZG91YmxlIHopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNkdiAoY29uc3QgR0xk
b3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNmIChHTGZsb2F0IHgsIEdMZmxvYXQg
eSwgR0xmbG9hdCB6KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzZnYgKGNvbnN0IEdMZmxvYXQg
KnYpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNpIChHTGludCB4LCBHTGludCB5LCBHTGludCB6
KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzaXYgKGNvbnN0IEdMaW50ICp2KTsKZXh0ZXJuIHZv
aWQgZ2xXaW5kb3dQb3MzcyAoR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeik7CmV4dGVy
biB2b2lkIGdsV2luZG93UG9zM3N2IChjb25zdCBHTHNob3J0ICp2KTsKCmV4dGVybiB2b2lkIGds
R2VuUXVlcmllcyhHTHNpemVpIG4sIEdMdWludCAqaWRzKTsKZXh0ZXJuIHZvaWQgZ2xEZWxldGVR
dWVyaWVzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpOwpleHRlcm4gR0xib29sZWFuIGds
SXNRdWVyeShHTHVpbnQgaWQpOwpleHRlcm4gdm9pZCBnbEJlZ2luUXVlcnkoR0xlbnVtIHRhcmdl
dCwgR0x1aW50IGlkKTsKZXh0ZXJuIHZvaWQgZ2xFbmRRdWVyeShHTGVudW0gdGFyZ2V0KTsKZXh0
ZXJuIHZvaWQgZ2xHZXRRdWVyeWl2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0UXVlcnlPYmplY3RpdihHTHVpbnQgaWQsIEdMZW51
bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0UXVlcnlPYmplY3R1aXYo
R0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKCmV4dGVybiB2b2lkIGds
QmluZEJ1ZmZlciAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGJ1ZmZlcik7CmV4dGVybiB2b2lkIGds
RGVsZXRlQnVmZmVycyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMpOwpleHRlcm4g
dm9pZCBnbEdlbkJ1ZmZlcnMgKEdMc2l6ZWkgbiwgR0x1aW50ICpidWZmZXJzKTsKZXh0ZXJuIEdM
Ym9vbGVhbiBnbElzQnVmZmVyIChHTHVpbnQgYnVmZmVyKTsKZXh0ZXJuIHZvaWQgZ2xCdWZmZXJE
YXRhIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSwg
R0xlbnVtIHVzYWdlKTsKZXh0ZXJuIHZvaWQgZ2xCdWZmZXJTdWJEYXRhIChHTGVudW0gdGFyZ2V0
LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsK
ZXh0ZXJuIHZvaWQgZ2xHZXRCdWZmZXJTdWJEYXRhIChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBv
ZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgR0x2b2lkICpkYXRhKTsKZXh0ZXJuIEdMdm9pZCAqIGds
TWFwQnVmZmVyIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKTsKZXh0ZXJuIEdMYm9vbGVh
biBnbFVubWFwQnVmZmVyIChHTGVudW0gdGFyZ2V0KTsKZXh0ZXJuIHZvaWQgZ2xHZXRCdWZmZXJQ
YXJhbWV0ZXJpdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsK
ZXh0ZXJuIHZvaWQgZ2xHZXRCdWZmZXJQb2ludGVydiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBHTHZvaWQgKipwYXJhbXMpOwoKZXh0ZXJuIHZvaWQgZ2xEcmF3QnVmZmVycyAoR0xzaXpl
aSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjFkIChH
THVpbnQgaW5kZXgsIEdMZG91YmxlIHgpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjFkdiAo
R0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0
cmliMWYgKEdMdWludCBpbmRleCwgR0xmbG9hdCB4KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRy
aWIxZnYgKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiB2b2lkIGdsVmVy
dGV4QXR0cmliMXMgKEdMdWludCBpbmRleCwgR0xzaG9ydCB4KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0
ZXhBdHRyaWIxc3YgKEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lk
IGdsVmVydGV4QXR0cmliMmQgKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7
CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliMmR2IChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91
YmxlICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIyZiAoR0x1aW50IGluZGV4LCBHTGZs
b2F0IHgsIEdMZmxvYXQgeSk7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliMmZ2IChHTHVpbnQg
aW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjJzIChH
THVpbnQgaW5kZXgsIEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhB
dHRyaWIyc3YgKEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGds
VmVydGV4QXR0cmliM2QgKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xk
b3VibGUgeik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliM2R2IChHTHVpbnQgaW5kZXgsIGNv
bnN0IEdMZG91YmxlICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIzZiAoR0x1aW50IGlu
ZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0
ZXhBdHRyaWIzZnYgKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiB2b2lk
IGdsVmVydGV4QXR0cmliM3MgKEdMdWludCBpbmRleCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdM
c2hvcnQgeik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliM3N2IChHTHVpbnQgaW5kZXgsIGNv
bnN0IEdMc2hvcnQgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjROYnYgKEdMdWludCBp
bmRleCwgY29uc3QgR0xieXRlICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0Tml2IChH
THVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0
TnN2IChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRl
eEF0dHJpYjROdWIgKEdMdWludCBpbmRleCwgR0x1Ynl0ZSB4LCBHTHVieXRlIHksIEdMdWJ5dGUg
eiwgR0x1Ynl0ZSB3KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0TnVidiAoR0x1aW50IGlu
ZGV4LCBjb25zdCBHTHVieXRlICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0TnVpdiAo
R0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJp
YjROdXN2IChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdXNob3J0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xW
ZXJ0ZXhBdHRyaWI0YnYgKEdMdWludCBpbmRleCwgY29uc3QgR0xieXRlICp2KTsKZXh0ZXJuIHZv
aWQgZ2xWZXJ0ZXhBdHRyaWI0ZCAoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5
LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0ZHYg
KEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0
dHJpYjRmIChHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdM
ZmxvYXQgdyk7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliNGZ2IChHTHVpbnQgaW5kZXgsIGNv
bnN0IEdMZmxvYXQgKnYpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjRpdiAoR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliNHMgKEdMdWlu
dCBpbmRleCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3KTsKZXh0
ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0c3YgKEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAq
dik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliNHVidiAoR0x1aW50IGluZGV4LCBjb25zdCBH
THVieXRlICp2KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0dWl2IChHTHVpbnQgaW5kZXgs
IGNvbnN0IEdMdWludCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliNHVzdiAoR0x1aW50
IGluZGV4LCBjb25zdCBHTHVzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliUG9p
bnRlciAoR0x1aW50IGluZGV4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5v
cm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwpleHRlcm4g
dm9pZCBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5IChHTHVpbnQgaW5kZXgpOwpleHRlcm4gdm9p
ZCBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAoR0x1aW50IGluZGV4KTsKZXh0ZXJuIHZvaWQg
Z2xHZXRWZXJ0ZXhBdHRyaWJkdiAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZG91Ymxl
ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbEdldFZlcnRleEF0dHJpYmZ2IChHTHVpbnQgaW5kZXgs
IEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRWZXJ0ZXhB
dHRyaWJpdiAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwpleHRl
cm4gdm9pZCBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBw
bmFtZSwgR0x2b2lkKiAqcG9pbnRlcik7CmV4dGVybiB2b2lkIGdsRGVsZXRlU2hhZGVyIChHTHVp
bnQgc2hhZGVyKTsKZXh0ZXJuIHZvaWQgZ2xEZXRhY2hTaGFkZXIgKEdMdWludCBwcm9ncmFtLCBH
THVpbnQgc2hhZGVyKTsKZXh0ZXJuIEdMdWludCBnbENyZWF0ZVNoYWRlciAoR0xlbnVtIHR5cGUp
OwpleHRlcm4gdm9pZCBnbFNoYWRlclNvdXJjZSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xjaGFyKiAqc3RyaW5nLCBjb25zdCBHTGludCAqbGVuZ3RoKTsKZXh0ZXJuIHZv
aWQgZ2xDb21waWxlU2hhZGVyIChHTHVpbnQgc2hhZGVyKTsKZXh0ZXJuIEdMdWludCBnbENyZWF0
ZVByb2dyYW0gKHZvaWQpOwpleHRlcm4gdm9pZCBnbEF0dGFjaFNoYWRlciAoR0x1aW50IHByb2dy
YW0sIEdMdWludCBzaGFkZXIpOwpleHRlcm4gdm9pZCBnbExpbmtQcm9ncmFtIChHTHVpbnQgcHJv
Z3JhbSk7CmV4dGVybiB2b2lkIGdsVXNlUHJvZ3JhbSAoR0x1aW50IHByb2dyYW0pOwpleHRlcm4g
dm9pZCBnbERlbGV0ZVByb2dyYW0gKEdMdWludCBwcm9ncmFtKTsKZXh0ZXJuIHZvaWQgZ2xWYWxp
ZGF0ZVByb2dyYW0gKEdMdWludCBwcm9ncmFtKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtMWYgKEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtMmYgKEdMaW50
IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3Jt
M2YgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKTsK
ZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtNGYgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZs
b2F0IHYxLCBHTGZsb2F0IHYyLCBHTGZsb2F0IHYzKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtMWkg
KEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybTJpIChHTGlu
dCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtM2kg
KEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyKTsKZXh0ZXJuIHZv
aWQgZ2xVbmlmb3JtNGkgKEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50
IHYyLCBHTGludCB2Myk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybTFmdiAoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKZXh0ZXJuIHZvaWQgZ2xVbmlm
b3JtMmZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFs
dWUpOwpleHRlcm4gdm9pZCBnbFVuaWZvcm0zZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybTRmdiAoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKZXh0ZXJu
IHZvaWQgZ2xVbmlmb3JtMWl2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQgKnZhbHVlKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtMml2IChHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3Jt
M2l2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsK
ZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtNGl2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xpbnQgKnZhbHVlKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtTWF0cml4MmZ2IChHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xm
bG9hdCAqdmFsdWUpOwpleHRlcm4gdm9pZCBnbFVuaWZvcm1NYXRyaXgzZnYgKEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybU1hdHJpeDRmdiAoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsK
ZXh0ZXJuIEdMYm9vbGVhbiBnbElzU2hhZGVyIChHTHVpbnQgc2hhZGVyKTsKZXh0ZXJuIEdMYm9v
bGVhbiBnbElzUHJvZ3JhbSAoR0x1aW50IHByb2dyYW0pOwpleHRlcm4gdm9pZCBnbEdldFNoYWRl
cml2IChHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwpleHRlcm4g
dm9pZCBnbEdldFByb2dyYW1pdiAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0QXR0YWNoZWRTaGFkZXJzIChHTHVpbnQgcHJvZ3Jh
bSwgR0xzaXplaSBtYXhDb3VudCwgR0xzaXplaSAqY291bnQsIEdMdWludCAqc2hhZGVycyk7CmV4
dGVybiB2b2lkIGdsR2V0U2hhZGVySW5mb0xvZyAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZT
aXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqaW5mb0xvZyk7CmV4dGVybiB2b2lkIGdsR2V0
UHJvZ3JhbUluZm9Mb2cgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xjaGFyICppbmZvTG9nKTsKZXh0ZXJuIEdMaW50IGdsR2V0VW5pZm9ybUxvY2F0
aW9uIChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKTsKZXh0ZXJuIHZvaWQgZ2xH
ZXRBY3RpdmVVbmlmb3JtIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFy
ICpuYW1lKTsKZXh0ZXJuIHZvaWQgZ2xHZXRVbmlmb3JtZnYgKEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRVbmlmb3JtaXYg
KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFtcyk7CmV4dGVybiB2
b2lkIGdsR2V0U2hhZGVyU291cmNlIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpzb3VyY2UpOwpleHRlcm4gdm9pZCBnbEJpbmRBdHRyaWJM
b2NhdGlvbiAoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3QgR0xjaGFyICpuYW1l
KTsKZXh0ZXJuIHZvaWQgZ2xHZXRBY3RpdmVBdHRyaWIgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQg
aW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xl
bnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpOwpleHRlcm4gR0xpbnQgZ2xHZXRBdHRyaWJMb2NhdGlv
biAoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSk7CmV4dGVybiB2b2lkIGdsU3Rl
bmNpbEZ1bmNTZXBhcmF0ZSAoR0xlbnVtIGZhY2UsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdM
dWludCBtYXNrKTsKZXh0ZXJuIHZvaWQgZ2xTdGVuY2lsT3BTZXBhcmF0ZSAoR0xlbnVtIGZhY2Us
IEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyk7CmV4dGVybiB2b2lkIGds
U3RlbmNpbE1hc2tTZXBhcmF0ZSAoR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKTsKCmV4dGVybiB2
b2lkIGdsVW5pZm9ybU1hdHJpeDJ4M2Z2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwpleHRlcm4gdm9pZCBn
bFVuaWZvcm1NYXRyaXgzeDJmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKZXh0ZXJuIHZvaWQgZ2xVbmlm
b3JtTWF0cml4Mng0ZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CmV4dGVybiB2b2lkIGdsVW5pZm9ybU1h
dHJpeDR4MmZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwpleHRlcm4gdm9pZCBnbFVuaWZvcm1NYXRyaXgz
eDRmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKZXh0ZXJuIHZvaWQgZ2xVbmlmb3JtTWF0cml4NHgzZnYg
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHTGZsb2F0ICp2YWx1ZSk7CgoKCgoKfQojIDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNPcGVuR0wuaCIgMiAzCgpAY2xhc3MgTlNEYXRh
LCBOU1ZpZXcsIE5TU2NyZWVuOwoKCgoKI2RlZmluZSBOU09QRU5HTF9DVVJSRU5UX1ZFUlNJT04g
MQoKCgoKdHlwZWRlZiBlbnVtIHsKIE5TT3BlbkdMR09Gb3JtYXRDYWNoZVNpemUgPSA1MDEsCiBO
U09wZW5HTEdPQ2xlYXJGb3JtYXRDYWNoZSA9IDUwMiwKIE5TT3BlbkdMR09SZXRhaW5SZW5kZXJl
cnMgPSA1MDMsCiBOU09wZW5HTEdPUmVzZXRMaWJyYXJ5ID0gNTA0Cn0gTlNPcGVuR0xHbG9iYWxP
cHRpb247CgoKCgoKZXh0ZXJuIHZvaWQgTlNPcGVuR0xTZXRPcHRpb24oTlNPcGVuR0xHbG9iYWxP
cHRpb24gcG5hbWUsIEdMaW50IHBhcmFtKTsKZXh0ZXJuIHZvaWQgTlNPcGVuR0xHZXRPcHRpb24o
TlNPcGVuR0xHbG9iYWxPcHRpb24gcG5hbWUsIEdMaW50ICpwYXJhbSk7CgoKCgpleHRlcm4gdm9p
ZCBOU09wZW5HTEdldFZlcnNpb24oR0xpbnQgKm1ham9yLCBHTGludCAqbWlub3IpOwojIDQ5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNPcGVu
R0wuaCIgMwplbnVtIHsKIE5TT3BlbkdMUEZBQWxsUmVuZGVyZXJzID0gMSwKIE5TT3BlbkdMUEZB
RG91YmxlQnVmZmVyID0gNSwKIE5TT3BlbkdMUEZBU3RlcmVvID0gNiwKIE5TT3BlbkdMUEZBQXV4
QnVmZmVycyA9IDcsCiBOU09wZW5HTFBGQUNvbG9yU2l6ZSA9IDgsCiBOU09wZW5HTFBGQUFscGhh
U2l6ZSA9IDExLAogTlNPcGVuR0xQRkFEZXB0aFNpemUgPSAxMiwKIE5TT3BlbkdMUEZBU3RlbmNp
bFNpemUgPSAxMywKIE5TT3BlbkdMUEZBQWNjdW1TaXplID0gMTQsCiBOU09wZW5HTFBGQU1pbmlt
dW1Qb2xpY3kgPSA1MSwKIE5TT3BlbkdMUEZBTWF4aW11bVBvbGljeSA9IDUyLAogTlNPcGVuR0xQ
RkFPZmZTY3JlZW4gPSA1MywKIE5TT3BlbkdMUEZBRnVsbFNjcmVlbiA9IDU0LAogTlNPcGVuR0xQ
RkFTYW1wbGVCdWZmZXJzID0gNTUsCiBOU09wZW5HTFBGQVNhbXBsZXMgPSA1NiwKIE5TT3BlbkdM
UEZBQXV4RGVwdGhTdGVuY2lsID0gNTcsCiBOU09wZW5HTFBGQUNvbG9yRmxvYXQgPSA1OCwKCiBO
U09wZW5HTFBGQU11bHRpc2FtcGxlID0gNTksCiBOU09wZW5HTFBGQVN1cGVyc2FtcGxlID0gNjAs
CiBOU09wZW5HTFBGQVNhbXBsZUFscGhhID0gNjEsCgogTlNPcGVuR0xQRkFSZW5kZXJlcklEID0g
NzAsCiBOU09wZW5HTFBGQVNpbmdsZVJlbmRlcmVyID0gNzEsCiBOU09wZW5HTFBGQU5vUmVjb3Zl
cnkgPSA3MiwKIE5TT3BlbkdMUEZBQWNjZWxlcmF0ZWQgPSA3MywKIE5TT3BlbkdMUEZBQ2xvc2Vz
dFBvbGljeSA9IDc0LAogTlNPcGVuR0xQRkFSb2J1c3QgPSA3NSwKIE5TT3BlbkdMUEZBQmFja2lu
Z1N0b3JlID0gNzYsCiBOU09wZW5HTFBGQU1QU2FmZSA9IDc4LAogTlNPcGVuR0xQRkFXaW5kb3cg
PSA4MCwKIE5TT3BlbkdMUEZBTXVsdGlTY3JlZW4gPSA4MSwKIE5TT3BlbkdMUEZBQ29tcGxpYW50
ID0gODMsCiBOU09wZW5HTFBGQVNjcmVlbk1hc2sgPSA4NCwKIE5TT3BlbkdMUEZBUGl4ZWxCdWZm
ZXIgPSA5MCwKIE5TT3BlbkdMUEZBUmVtb3RlUGl4ZWxCdWZmZXIgPSA5MSwKCiBOU09wZW5HTFBG
QUFsbG93T2ZmbGluZVJlbmRlcmVycyA9IDk2LAoKIE5TT3BlbkdMUEZBQWNjZWxlcmF0ZWRDb21w
dXRlID0gOTcsCiBOU09wZW5HTFBGQVZpcnR1YWxTY3JlZW5Db3VudCA9IDEyOAp9Owp0eXBlZGVm
IHVpbnQzMl90IE5TT3BlbkdMUGl4ZWxGb3JtYXRBdHRyaWJ1dGU7CgoKCgoKdHlwZWRlZiBzdHJ1
Y3QgX0NHTFBpeGVsRm9ybWF0T2JqZWN0IE5TT3BlbkdMUGl4ZWxGb3JtYXRBdXhpbGlhcnk7CgpA
aW50ZXJmYWNlIE5TT3BlbkdMUGl4ZWxGb3JtYXQgOiBOU09iamVjdCA8TlNDb2Rpbmc+CnsKQHBy
aXZhdGUKICAgIE5TT3BlbkdMUGl4ZWxGb3JtYXRBdXhpbGlhcnkqIF9waXhlbEZvcm1hdEF1eGls
aWFyeTsKICAgIE5TRGF0YSogX3BpeGVsQXR0cmlidXRlczsKICAgIE5TSW50ZWdlciBfcmVzZXJ2
ZWQxOwogICAgTlNJbnRlZ2VyIF9yZXNlcnZlZDI7CiAgICBOU0ludGVnZXIgX3Jlc2VydmVkMzsK
fQoKLSAoaWQpaW5pdFdpdGhBdHRyaWJ1dGVzOihjb25zdCBOU09wZW5HTFBpeGVsRm9ybWF0QXR0
cmlidXRlICopYXR0cmliczsKLSAoaWQpaW5pdFdpdGhEYXRhOihOU0RhdGEqKWF0dHJpYnM7Ci0g
KGlkKWluaXRXaXRoQ0dMUGl4ZWxGb3JtYXRPYmo6KHZvaWQgKilmb3JtYXQgOwoKLSAoTlNEYXRh
KilhdHRyaWJ1dGVzOwotICh2b2lkKXNldEF0dHJpYnV0ZXM6KE5TRGF0YSopYXR0cmliczsKCi0g
KHZvaWQpZ2V0VmFsdWVzOihHTGludCAqKXZhbHMgZm9yQXR0cmlidXRlOihOU09wZW5HTFBpeGVs
Rm9ybWF0QXR0cmlidXRlKWF0dHJpYiBmb3JWaXJ0dWFsU2NyZWVuOihHTGludClzY3JlZW47Ci0g
KEdMaW50KW51bWJlck9mVmlydHVhbFNjcmVlbnM7CgoKLSAodm9pZCAqKUNHTFBpeGVsRm9ybWF0
T2JqOwoKCkBlbmQKCgoKCgoKQGludGVyZmFjZSBOU09wZW5HTFBpeGVsQnVmZmVyIDogTlNPYmpl
Y3QKewpAcHJpdmF0ZQogICAgc3RydWN0IF9DR0xQQnVmZmVyT2JqZWN0ICpfcGl4ZWxCdWZmZXJB
dXhpbGlhcnk7CiAgICB2b2lkICpfcmVzZXJ2ZWQxOwogICAgdm9pZCAqX3Jlc2VydmVkMjsKfQoj
IDE0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJz
L05TT3BlbkdMLmgiIDMKLSAoaWQpaW5pdFdpdGhUZXh0dXJlVGFyZ2V0OihHTGVudW0pdGFyZ2V0
IHRleHR1cmVJbnRlcm5hbEZvcm1hdDooR0xlbnVtKWZvcm1hdCB0ZXh0dXJlTWF4TWlwTWFwTGV2
ZWw6KEdMaW50KW1heExldmVsIHBpeGVsc1dpZGU6KEdMc2l6ZWkpcGl4ZWxzV2lkZSBwaXhlbHNI
aWdoOihHTHNpemVpKXBpeGVsc0hpZ2g7Ci0gKGlkKWluaXRXaXRoQ0dMUEJ1ZmZlck9iajoodm9p
ZCAqKXBidWZmZXIgOwotICh2b2lkICopQ0dMUEJ1ZmZlck9iaiA7Ci0gKEdMc2l6ZWkpcGl4ZWxz
V2lkZTsKLSAoR0xzaXplaSlwaXhlbHNIaWdoOwotIChHTGVudW0pdGV4dHVyZVRhcmdldDsKLSAo
R0xlbnVtKXRleHR1cmVJbnRlcm5hbEZvcm1hdDsKLSAoR0xpbnQpdGV4dHVyZU1heE1pcE1hcExl
dmVsOwpAZW5kCiMgMTY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvTlNPcGVuR0wuaCIgMwp0eXBlZGVmIGVudW0gewogTlNPcGVuR0xDUFN3YXBS
ZWN0YW5nbGUgPSAyMDAsCiBOU09wZW5HTENQU3dhcFJlY3RhbmdsZUVuYWJsZSA9IDIwMSwKIE5T
T3BlbkdMQ1BSYXN0ZXJpemF0aW9uRW5hYmxlID0gMjIxLAogTlNPcGVuR0xDUFN3YXBJbnRlcnZh
bCA9IDIyMiwKCiBOU09wZW5HTENQU3VyZmFjZU9yZGVyID0gMjM1LAogTlNPcGVuR0xDUFN1cmZh
Y2VPcGFjaXR5ID0gMjM2LAoKIE5TT3BlbkdMQ1BTdGF0ZVZhbGlkYXRpb24gPSAzMDEKfSBOU09w
ZW5HTENvbnRleHRQYXJhbWV0ZXI7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0NHTENvbnRleHRPYmpl
Y3QgTlNPcGVuR0xDb250ZXh0QXV4aWxpYXJ5OwoKQGludGVyZmFjZSBOU09wZW5HTENvbnRleHQg
OiBOU09iamVjdAp7CkBwcml2YXRlCiBOU1ZpZXcgKl92aWV3OwogTlNPcGVuR0xDb250ZXh0QXV4
aWxpYXJ5ICpfY29udGV4dEF1eGlsaWFyeTsKfQoKCi0gKGlkKWluaXRXaXRoRm9ybWF0OihOU09w
ZW5HTFBpeGVsRm9ybWF0ICopZm9ybWF0IHNoYXJlQ29udGV4dDooTlNPcGVuR0xDb250ZXh0ICop
c2hhcmU7Ci0gKGlkKWluaXRXaXRoQ0dMQ29udGV4dE9iajoodm9pZCAqKWNvbnRleHQgOwoKCi0g
KHZvaWQpc2V0VmlldzooTlNWaWV3ICopdmlldzsKLSAoTlNWaWV3ICopdmlldzsKLSAodm9pZClz
ZXRGdWxsU2NyZWVuOwotICh2b2lkKXNldE9mZlNjcmVlbjoodm9pZCAqKWJhc2VhZGRyIHdpZHRo
OihHTHNpemVpKXdpZHRoIGhlaWdodDooR0xzaXplaSloZWlnaHQgcm93Ynl0ZXM6KEdMaW50KXJv
d2J5dGVzOwotICh2b2lkKWNsZWFyRHJhd2FibGU7Ci0gKHZvaWQpdXBkYXRlOwoKCi0gKHZvaWQp
Zmx1c2hCdWZmZXI7CgoKLSAodm9pZCltYWtlQ3VycmVudENvbnRleHQ7CisgKHZvaWQpY2xlYXJD
dXJyZW50Q29udGV4dDsKKyAoTlNPcGVuR0xDb250ZXh0ICopY3VycmVudENvbnRleHQ7CgoKLSAo
dm9pZCljb3B5QXR0cmlidXRlc0Zyb21Db250ZXh0OihOU09wZW5HTENvbnRleHQgKiljb250ZXh0
IHdpdGhNYXNrOihHTGJpdGZpZWxkKW1hc2s7CgoKLSAodm9pZClzZXRWYWx1ZXM6KGNvbnN0IEdM
aW50ICopdmFscyBmb3JQYXJhbWV0ZXI6KE5TT3BlbkdMQ29udGV4dFBhcmFtZXRlcilwYXJhbTsK
LSAodm9pZClnZXRWYWx1ZXM6KEdMaW50ICopdmFscyBmb3JQYXJhbWV0ZXI6KE5TT3BlbkdMQ29u
dGV4dFBhcmFtZXRlcilwYXJhbTsKCgoKCi0gKHZvaWQpc2V0Q3VycmVudFZpcnR1YWxTY3JlZW46
KEdMaW50KXNjcmVlbjsKLSAoR0xpbnQpY3VycmVudFZpcnR1YWxTY3JlZW47CgoKLSAodm9pZClj
cmVhdGVUZXh0dXJlOihHTGVudW0pdGFyZ2V0IGZyb21WaWV3OihOU1ZpZXcgKil2aWV3IGludGVy
bmFsRm9ybWF0OihHTGVudW0pZm9ybWF0OwoKCgoKLSAodm9pZCAqKUNHTENvbnRleHRPYmo7CiMg
MjQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
TlNPcGVuR0wuaCIgMwotICh2b2lkKXNldFBpeGVsQnVmZmVyOihOU09wZW5HTFBpeGVsQnVmZmVy
ICopcGl4ZWxCdWZmZXIgY3ViZU1hcEZhY2U6KEdMZW51bSlmYWNlIG1pcE1hcExldmVsOihHTGlu
dClsZXZlbCBjdXJyZW50VmlydHVhbFNjcmVlbjooR0xpbnQpc2NyZWVuOwotIChOU09wZW5HTFBp
eGVsQnVmZmVyICopcGl4ZWxCdWZmZXI7Ci0gKEdMZW51bSlwaXhlbEJ1ZmZlckN1YmVNYXBGYWNl
OwotIChHTGludClwaXhlbEJ1ZmZlck1pcE1hcExldmVsOwoKCgoKCi0gKHZvaWQpc2V0VGV4dHVy
ZUltYWdlVG9QaXhlbEJ1ZmZlcjooTlNPcGVuR0xQaXhlbEJ1ZmZlciAqKXBpeGVsQnVmZmVyIGNv
bG9yQnVmZmVyOihHTGVudW0pc291cmNlOwoKCkBlbmQKIyAxNDMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TT3BlbkdM
TGF5ZXIuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9OU09wZW5HTExheWVyLmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBT3BlbkdMTGF5ZXIuaCIgMSAz
CgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29y
ay9IZWFkZXJzL0NBTGF5ZXIuaCIgMSAzCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBTWVkaWFUaW1pbmcuaCIgMSAzCgoK
CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9I
ZWFkZXJzL0NBQmFzZS5oIiAxIDMKCgoKCgoKI2RlZmluZSBDQUJBU0VfSCAKIyA0MCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUJhc2Uu
aCIgMwojZGVmaW5lIENBX0VYVEVSTl9DX0JFR0lOIGV4dGVybiAiQyIgewojZGVmaW5lIENBX0VY
VEVSTl9DX0VORCB9CgoKCgoKCiNkZWZpbmUgQ0FfR05VQyhtYWpvcixtaW5vcikgKF9fR05VQ19f
ID4gKG1ham9yKSB8fCAoX19HTlVDX18gPT0gKG1ham9yKSAmJiBfX0dOVUNfTUlOT1JfXyA+PSAo
bWlub3IpKSkKCgoKCgoKI2RlZmluZSBDQV9FWFRFUk4gZXh0ZXJuCgoKCgoKCiNkZWZpbmUgQ0Ff
SU5MSU5FIHN0YXRpYyBpbmxpbmUKIyA3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVh
cnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUJhc2UuaCIgMwojZGVmaW5lIENBX0hJRERFTiBf
X2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSkKCgoKCgoKCiNkZWZpbmUgQ0Ff
UFVSRSBfX2F0dHJpYnV0ZV9fICgocHVyZSkpCgoKCgoKCgojZGVmaW5lIENBX0NPTlNUIF9fYXR0
cmlidXRlX18gKChjb25zdCkpCgoKCgoKCgojZGVmaW5lIENBX05PUkVUVVJOIF9fYXR0cmlidXRl
X18gKChub3JldHVybikpCgoKCgoKCgojZGVmaW5lIENBX01BTExPQyBfX2F0dHJpYnV0ZV9fICgo
bWFsbG9jKSkKCgoKCgoKCiNkZWZpbmUgQ0FfV0FSTl9VTlVTRUQgX19hdHRyaWJ1dGVfXyAoKHdh
cm5fdW51c2VkX3Jlc3VsdCkpCgoKCgoKCiNkZWZpbmUgQ0FfV0FSTl9ERVBSRUNBVEVEIDEKCgoK
CiNkZWZpbmUgQ0FfREVQUkVDQVRFRCBfX2F0dHJpYnV0ZV9fICgoZGVwcmVjYXRlZCkpCgoKCgoK
ZXh0ZXJuICJDIiB7CgoKCgpleHRlcm4gQ0ZUaW1lSW50ZXJ2YWwgQ0FDdXJyZW50TWVkaWFUaW1l
ICh2b2lkKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Cgp9CiMg
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9DQU1lZGlhVGltaW5nLmgiIDIgMwojIDI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9R
dWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBTWVkaWFUaW1pbmcuaCIgMwpAY2xhc3MgTlNT
dHJpbmc7CgpAcHJvdG9jb2wgQ0FNZWRpYVRpbWluZwoKCgoKQHByb3BlcnR5IENGVGltZUludGVy
dmFsIGJlZ2luVGltZTsKCgoKQHByb3BlcnR5IENGVGltZUludGVydmFsIGR1cmF0aW9uOwoKCgoK
CkBwcm9wZXJ0eSBmbG9hdCBzcGVlZDsKCgoKCgoKQHByb3BlcnR5IENGVGltZUludGVydmFsIHRp
bWVPZmZzZXQ7CgoKCkBwcm9wZXJ0eSBmbG9hdCByZXBlYXRDb3VudDsKCgoKQHByb3BlcnR5IENG
VGltZUludGVydmFsIHJlcGVhdER1cmF0aW9uOwoKCgoKQHByb3BlcnR5IEJPT0wgYXV0b3JldmVy
c2VzOwoKCgoKCgoKQHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICpmaWxsTW9kZTsKCkBlbmQKCgoK
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRmlsbE1vZGVGb3J3YXJkcwogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtD
QUZpbGxNb2RlQmFja3dhcmRzCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRmlsbE1vZGVCb3RoCiAgICBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qg
a0NBRmlsbE1vZGVSZW1vdmVkCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRmlsbE1vZGVGcm96ZW4gX19hdHRy
aWJ1dGVfXyAoKGRlcHJlY2F0ZWQpKTsKIyA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9R
dWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBTGF5ZXIuaCIgMiAzCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQVRyYW5zZm9y
bTNELmgiIDEgMwoKCgoKCgojZGVmaW5lIENBVFJBTlNGT1JNX0ggCiMgMTcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FUcmFuc2Zvcm0z
RC5oIiAzCnN0cnVjdCBDQVRyYW5zZm9ybTNECnsKICBDR0Zsb2F0IG0xMSwgbTEyLCBtMTMsIG0x
NDsKICBDR0Zsb2F0IG0yMSwgbTIyLCBtMjMsIG0yNDsKICBDR0Zsb2F0IG0zMSwgbTMyLCBtMzMs
IG0zNDsKICBDR0Zsb2F0IG00MSwgbTQyLCBtNDMsIG00NDsKfTsKCnR5cGVkZWYgc3RydWN0IENB
VHJhbnNmb3JtM0QgQ0FUcmFuc2Zvcm0zRDsKCmV4dGVybiAiQyIgewoKCgpleHRlcm4gY29uc3Qg
Q0FUcmFuc2Zvcm0zRCBDQVRyYW5zZm9ybTNESWRlbnRpdHkKICAgIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gYm9vbCBDQVRyYW5zZm9ybTNESXNJZGVu
dGl0eSAoQ0FUcmFuc2Zvcm0zRCB0KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CgoKCmV4dGVybiBib29sIENBVHJhbnNmb3JtM0RFcXVhbFRvVHJhbnNmb3JtIChD
QVRyYW5zZm9ybTNEIGEsCiAgICBDQVRyYW5zZm9ybTNEIGIpCiAgICBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiBDQVRyYW5zZm9ybTNEIENBVHJhbnNm
b3JtM0RNYWtlVHJhbnNsYXRpb24gKENHRmxvYXQgdHgsCiAgICBDR0Zsb2F0IHR5LCBDR0Zsb2F0
IHR6KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRl
cm4gQ0FUcmFuc2Zvcm0zRCBDQVRyYW5zZm9ybTNETWFrZVNjYWxlIChDR0Zsb2F0IHN4LCBDR0Zs
b2F0IHN5LAogICAgQ0dGbG9hdCBzeikKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgoKCmV4dGVybiBDQVRyYW5zZm9ybTNEIENBVHJhbnNmb3JtM0RNYWtlUm90
YXRpb24gKENHRmxvYXQgYW5nbGUsIENHRmxvYXQgeCwKICAgIENHRmxvYXQgeSwgQ0dGbG9hdCB6
KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4g
Q0FUcmFuc2Zvcm0zRCBDQVRyYW5zZm9ybTNEVHJhbnNsYXRlIChDQVRyYW5zZm9ybTNEIHQsIENH
RmxvYXQgdHgsCiAgICBDR0Zsb2F0IHR5LCBDR0Zsb2F0IHR6KQogICAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgpleHRlcm4gQ0FUcmFuc2Zvcm0zRCBDQVRyYW5z
Zm9ybTNEU2NhbGUgKENBVHJhbnNmb3JtM0QgdCwgQ0dGbG9hdCBzeCwKICAgIENHRmxvYXQgc3ks
IENHRmxvYXQgc3opCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKCgpleHRlcm4gQ0FUcmFuc2Zvcm0zRCBDQVRyYW5zZm9ybTNEUm90YXRlIChDQVRyYW5zZm9y
bTNEIHQsIENHRmxvYXQgYW5nbGUsCiAgICBDR0Zsb2F0IHgsIENHRmxvYXQgeSwgQ0dGbG9hdCB6
KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4dGVybiBD
QVRyYW5zZm9ybTNEIENBVHJhbnNmb3JtM0RDb25jYXQgKENBVHJhbnNmb3JtM0QgYSwgQ0FUcmFu
c2Zvcm0zRCBiKQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoK
CgpleHRlcm4gQ0FUcmFuc2Zvcm0zRCBDQVRyYW5zZm9ybTNESW52ZXJ0IChDQVRyYW5zZm9ybTNE
IHQpCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJu
IENBVHJhbnNmb3JtM0QgQ0FUcmFuc2Zvcm0zRE1ha2VBZmZpbmVUcmFuc2Zvcm0gKENHQWZmaW5l
VHJhbnNmb3JtIG0pCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
CgoKZXh0ZXJuIGJvb2wgQ0FUcmFuc2Zvcm0zRElzQWZmaW5lIChDQVRyYW5zZm9ybTNEIHQpCiAg
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCgpleHRlcm4gQ0dB
ZmZpbmVUcmFuc2Zvcm0gQ0FUcmFuc2Zvcm0zREdldEFmZmluZVRyYW5zZm9ybSAoQ0FUcmFuc2Zv
cm0zRCB0KQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Cgp9CgoK
CgoKQGludGVyZmFjZSBOU1ZhbHVlIChDQVRyYW5zZm9ybTNEQWRkaXRpb25zKQoKKyAoTlNWYWx1
ZSAqKXZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6KENBVHJhbnNmb3JtM0QpdDsKCi0gKENBVHJhbnNm
b3JtM0QpQ0FUcmFuc2Zvcm0zRFZhbHVlOwoKQGVuZAojIDggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FMYXllci5oIiAyIDMKCgpAY2xh
c3MgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBOU0VudW1lcmF0b3IsIENBQW5pbWF0aW9uLCBDQUxh
eWVyQXJyYXk7CkBwcm90b2NvbCBDQUFjdGlvbjsKCgoKZW51bSBDQUF1dG9yZXNpemluZ01hc2sK
ewogIGtDQUxheWVyTm90U2l6YWJsZSA9IDAsCiAga0NBTGF5ZXJNaW5YTWFyZ2luID0gMVUgPDwg
MCwKICBrQ0FMYXllcldpZHRoU2l6YWJsZSA9IDFVIDw8IDEsCiAga0NBTGF5ZXJNYXhYTWFyZ2lu
ID0gMVUgPDwgMiwKICBrQ0FMYXllck1pbllNYXJnaW4gPSAxVSA8PCAzLAogIGtDQUxheWVySGVp
Z2h0U2l6YWJsZSA9IDFVIDw8IDQsCiAga0NBTGF5ZXJNYXhZTWFyZ2luID0gMVUgPDwgNQp9OwoK
CgplbnVtIENBRWRnZUFudGlhbGlhc2luZ01hc2sKewogIGtDQUxheWVyTGVmdEVkZ2UgPSAxVSA8
PCAwLAogIGtDQUxheWVyUmlnaHRFZGdlID0gMVUgPDwgMSwKICBrQ0FMYXllckJvdHRvbUVkZ2Ug
PSAxVSA8PCAyLAogIGtDQUxheWVyVG9wRWRnZSA9IDFVIDw8IDMsCn07CgoKCkBpbnRlcmZhY2Ug
Q0FMYXllciA6IE5TT2JqZWN0IDxOU0NvZGluZywgQ0FNZWRpYVRpbWluZz4KewpAcHJpdmF0ZQog
IHN0cnVjdCBfQ0FMYXllckl2YXJzIHsKICAgIGludDMyX3QgcmVmY291bnQ7CiAgICB1aW50MzJf
dCBmbGFnczsKICAgIHVpbnRwdHJfdCBwYXJlbnQ7CiAgICBDQUxheWVyQXJyYXkgKnN1YmxheWVy
czsKICAgIENBTGF5ZXIgKm1hc2s7CiAgICBzdHJ1Y3QgX0NBTGF5ZXJTdGF0ZSAqc3RhdGU7CiAg
ICBzdHJ1Y3QgX0NBTGF5ZXJTdGF0ZSAqcHJldmlvdXNfc3RhdGU7CiAgICBzdHJ1Y3QgX0NBTGF5
ZXJBbmltYXRpb24gKmFuaW1hdGlvbnM7CiAgICB1aW50cHRyX3Qgc2xvdHNbM107CgogICAgdWlu
dDMyX3QgcmVzZXJ2ZWQ7CgogIH0gX2F0dHI7Cn0KCgoKKyAoaWQpbGF5ZXI7CgoKCi0gKGlkKWlu
aXQ7CgoKCgoKCgotIChpZClpbml0V2l0aExheWVyOihpZClsYXllcjsKIyA4OCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUxheWVyLmgi
IDMKLSAoaWQpcHJlc2VudGF0aW9uTGF5ZXI7CgoKCgoKCgotIChpZCltb2RlbExheWVyOwojIDEy
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9DQUxheWVyLmgiIDMKKyAoaWQpZGVmYXVsdFZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleTsK
CgoKCgoKKyAoQk9PTCluZWVkc0Rpc3BsYXlGb3JLZXk6KE5TU3RyaW5nICopa2V5OwoKCgoKCgot
IChCT09MKXNob3VsZEFyY2hpdmVWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7CgoKCgoKQHBy
b3BlcnR5IENHUmVjdCBib3VuZHM7CgoKCgpAcHJvcGVydHkgQ0dQb2ludCBwb3NpdGlvbjsKCgoK
CkBwcm9wZXJ0eSBDR0Zsb2F0IHpQb3NpdGlvbjsKCgoKCgoKQHByb3BlcnR5IENHUG9pbnQgYW5j
aG9yUG9pbnQ7CgoKCgpAcHJvcGVydHkgQ0dGbG9hdCBhbmNob3JQb2ludFo7CgoKCgpAcHJvcGVy
dHkgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm07CgoKCgotIChDR0FmZmluZVRyYW5zZm9ybSlhZmZp
bmVUcmFuc2Zvcm07Ci0gKHZvaWQpc2V0QWZmaW5lVHJhbnNmb3JtOihDR0FmZmluZVRyYW5zZm9y
bSltOwoKCgoKCgpAcHJvcGVydHkgQ0dSZWN0IGZyYW1lOwoKCgoKQHByb3BlcnR5KGdldHRlcj1p
c0hpZGRlbikgQk9PTCBoaWRkZW47CgoKCgpAcHJvcGVydHkoZ2V0dGVyPWlzRG91YmxlU2lkZWQp
IEJPT0wgZG91YmxlU2lkZWQ7CiMgMjAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFy
dHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBTGF5ZXIuaCIgMwpAcHJvcGVydHkoZ2V0dGVyPWlz
R2VvbWV0cnlGbGlwcGVkKSBCT09MIGdlb21ldHJ5RmxpcHBlZDsKIyAyMTMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FMYXllci5oIiAz
Ci0gKEJPT0wpY29udGVudHNBcmVGbGlwcGVkOwoKCgoKQHByb3BlcnR5KHJlYWRvbmx5KSBDQUxh
eWVyICpzdXBlcmxheWVyOwoKCgoKLSAodm9pZClyZW1vdmVGcm9tU3VwZXJsYXllcjsKCgoKCgoK
CkBwcm9wZXJ0eShjb3B5KSBOU0FycmF5ICpzdWJsYXllcnM7CgoKCgotICh2b2lkKWFkZFN1Ymxh
eWVyOihDQUxheWVyICopbGF5ZXI7CgoKCgoKLSAodm9pZClpbnNlcnRTdWJsYXllcjooQ0FMYXll
ciAqKWxheWVyIGF0SW5kZXg6KHVuc2lnbmVkKWlkeDsKCgoKCgotICh2b2lkKWluc2VydFN1Ymxh
eWVyOihDQUxheWVyICopbGF5ZXIgYmVsb3c6KENBTGF5ZXIgKilzaWJsaW5nOwotICh2b2lkKWlu
c2VydFN1YmxheWVyOihDQUxheWVyICopbGF5ZXIgYWJvdmU6KENBTGF5ZXIgKilzaWJsaW5nOwoK
CgoKCi0gKHZvaWQpcmVwbGFjZVN1YmxheWVyOihDQUxheWVyICopbGF5ZXIgd2l0aDooQ0FMYXll
ciAqKWxheWVyMjsKCgoKCgoKQHByb3BlcnR5IENBVHJhbnNmb3JtM0Qgc3VibGF5ZXJUcmFuc2Zv
cm07CiMgMjcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29y
ay9IZWFkZXJzL0NBTGF5ZXIuaCIgMwpAcHJvcGVydHkocmV0YWluKSBDQUxheWVyICptYXNrOwoK
CgoKCgoKQHByb3BlcnR5IEJPT0wgbWFza3NUb0JvdW5kczsKCgoKLSAoQ0dQb2ludCljb252ZXJ0
UG9pbnQ6KENHUG9pbnQpcCBmcm9tTGF5ZXI6KENBTGF5ZXIgKilsOwotIChDR1BvaW50KWNvbnZl
cnRQb2ludDooQ0dQb2ludClwIHRvTGF5ZXI6KENBTGF5ZXIgKilsOwotIChDR1JlY3QpY29udmVy
dFJlY3Q6KENHUmVjdClyIGZyb21MYXllcjooQ0FMYXllciAqKWw7Ci0gKENHUmVjdCljb252ZXJ0
UmVjdDooQ0dSZWN0KXIgdG9MYXllcjooQ0FMYXllciAqKWw7CgotIChDRlRpbWVJbnRlcnZhbClj
b252ZXJ0VGltZTooQ0ZUaW1lSW50ZXJ2YWwpdCBmcm9tTGF5ZXI6KENBTGF5ZXIgKilsOwotIChD
RlRpbWVJbnRlcnZhbCljb252ZXJ0VGltZTooQ0ZUaW1lSW50ZXJ2YWwpdCB0b0xheWVyOihDQUxh
eWVyICopbDsKIyAzMDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvQ0FMYXllci5oIiAzCi0gKENBTGF5ZXIgKiloaXRUZXN0OihDR1BvaW50
KXA7CgoKCi0gKEJPT0wpY29udGFpbnNQb2ludDooQ0dQb2ludClwOwojIDMxMyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUxheWVyLmgi
IDMKQHByb3BlcnR5KHJldGFpbikgaWQgY29udGVudHM7CiMgMzIyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBTGF5ZXIuaCIgMwpAcHJv
cGVydHkgQ0dSZWN0IGNvbnRlbnRzUmVjdDsKCgoKCgoKCkBwcm9wZXJ0eShjb3B5KSBOU1N0cmlu
ZyAqY29udGVudHNHcmF2aXR5OwojIDM1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVh
cnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUxheWVyLmgiIDMKQHByb3BlcnR5IENHUmVjdCBj
b250ZW50c0NlbnRlcjsKCgoKCgoKCkBwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqbWluaWZpY2F0
aW9uRmlsdGVyLCAqbWFnbmlmaWNhdGlvbkZpbHRlcjsKCgoKCkBwcm9wZXJ0eSBmbG9hdCBtaW5p
ZmljYXRpb25GaWx0ZXJCaWFzOwoKCgoKCkBwcm9wZXJ0eShnZXR0ZXI9aXNPcGFxdWUpIEJPT0wg
b3BhcXVlOwoKCgoKCi0gKHZvaWQpZGlzcGxheTsKCgoKCgotICh2b2lkKXNldE5lZWRzRGlzcGxh
eTsKLSAodm9pZClzZXROZWVkc0Rpc3BsYXlJblJlY3Q6KENHUmVjdClyOwoKCgotIChCT09MKW5l
ZWRzRGlzcGxheTsKCgoKLSAodm9pZClkaXNwbGF5SWZOZWVkZWQ7CgoKCgpAcHJvcGVydHkgQk9P
TCBuZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZTsKCgoKCgoKLSAodm9pZClkcmF3SW5Db250ZXh0
OihDR0NvbnRleHRSZWYpY3R4OwojIDQxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVh
cnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUxheWVyLmgiIDMKLSAodm9pZClyZW5kZXJJbkNv
bnRleHQ6KENHQ29udGV4dFJlZiljdHg7CiMgNDIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBTGF5ZXIuaCIgMwpAcHJvcGVydHkgdW5z
aWduZWQgaW50IGVkZ2VBbnRpYWxpYXNpbmdNYXNrOwoKCgoKQHByb3BlcnR5IENHQ29sb3JSZWYg
YmFja2dyb3VuZENvbG9yOwoKCgoKCkBwcm9wZXJ0eSBDR0Zsb2F0IGNvcm5lclJhZGl1czsKCgoK
CgoKQHByb3BlcnR5IENHRmxvYXQgYm9yZGVyV2lkdGg7CgoKCgpAcHJvcGVydHkgQ0dDb2xvclJl
ZiBib3JkZXJDb2xvcjsKCgoKCgpAcHJvcGVydHkgZmxvYXQgb3BhY2l0eTsKIyA0NjUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FMYXll
ci5oIiAzCkBwcm9wZXJ0eShyZXRhaW4pIGlkIGNvbXBvc2l0aW5nRmlsdGVyOwoKCgoKQHByb3Bl
cnR5KGNvcHkpIE5TQXJyYXkgKmZpbHRlcnM7CgoKCgpAcHJvcGVydHkoY29weSkgTlNBcnJheSAq
YmFja2dyb3VuZEZpbHRlcnM7CgoKCgoKCkBwcm9wZXJ0eSBDR0NvbG9yUmVmIHNoYWRvd0NvbG9y
OwoKCgoKQHByb3BlcnR5IGZsb2F0IHNoYWRvd09wYWNpdHk7CgoKCkBwcm9wZXJ0eSBDR1NpemUg
c2hhZG93T2Zmc2V0OwoKCgpAcHJvcGVydHkgQ0dGbG9hdCBzaGFkb3dSYWRpdXM7CgoKCgoKCgpA
cHJvcGVydHkgdW5zaWduZWQgaW50IGF1dG9yZXNpemluZ01hc2s7CgoKCgoKCkBwcm9wZXJ0eShy
ZXRhaW4pIGlkIGxheW91dE1hbmFnZXI7CgoKCgoKCgotIChDR1NpemUpcHJlZmVycmVkRnJhbWVT
aXplOwojIDUzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdv
cmsvSGVhZGVycy9DQUxheWVyLmgiIDMKLSAodm9pZClzZXROZWVkc0xheW91dDsKCgoKLSAoQk9P
TCluZWVkc0xheW91dDsKCgoKCi0gKHZvaWQpbGF5b3V0SWZOZWVkZWQ7CgoKCgoKCgotICh2b2lk
KWxheW91dFN1YmxheWVyczsKCgoKCgoKCi0gKHZvaWQpcmVzaXplU3VibGF5ZXJzV2l0aE9sZFNp
emU6KENHU2l6ZSlzaXplOwotICh2b2lkKXJlc2l6ZVdpdGhPbGRTdXBlcmxheWVyU2l6ZTooQ0dT
aXplKXNpemU7CiMgNTk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZy
YW1ld29yay9IZWFkZXJzL0NBTGF5ZXIuaCIgMworIChpZDxDQUFjdGlvbj4pZGVmYXVsdEFjdGlv
bkZvcktleTooTlNTdHJpbmcgKilldmVudDsKIyA2MTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FMYXllci5oIiAzCi0gKGlkPENBQWN0
aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICopZXZlbnQ7CgoKCgpAcHJvcGVydHkoY29weSkg
TlNEaWN0aW9uYXJ5ICphY3Rpb25zOwojIDYzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUxheWVyLmgiIDMKLSAodm9pZClhZGRBbmlt
YXRpb246KENBQW5pbWF0aW9uICopYW5pbSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwoKCgotICh2
b2lkKXJlbW92ZUFsbEFuaW1hdGlvbnM7CgoKCi0gKHZvaWQpcmVtb3ZlQW5pbWF0aW9uRm9yS2V5
OihOU1N0cmluZyAqKWtleTsKCgoKCgotIChOU0FycmF5ICopYW5pbWF0aW9uS2V5czsKCgoKCgot
IChDQUFuaW1hdGlvbiAqKWFuaW1hdGlvbkZvcktleTooTlNTdHJpbmcgKilrZXk7CgoKCgoKQHBy
b3BlcnR5KGNvcHkpIE5TU3RyaW5nICpuYW1lOwoKCgoKCkBwcm9wZXJ0eShhc3NpZ24pIGlkIGRl
bGVnYXRlOwojIDY3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9DQUxheWVyLmgiIDMKQHByb3BlcnR5KGNvcHkpIE5TRGljdGlvbmFyeSAq
c3R5bGU7CgpAZW5kCgoKCkBpbnRlcmZhY2UgTlNPYmplY3QgKENBTGF5b3V0TWFuYWdlcikKCgoK
CgotIChDR1NpemUpcHJlZmVycmVkU2l6ZU9mTGF5ZXI6KENBTGF5ZXIgKilsYXllcjsKCgoKCi0g
KHZvaWQpaW52YWxpZGF0ZUxheW91dE9mTGF5ZXI6KENBTGF5ZXIgKilsYXllcjsKCgoKCgotICh2
b2lkKWxheW91dFN1YmxheWVyc09mTGF5ZXI6KENBTGF5ZXIgKilsYXllcjsKCkBlbmQKCgoKQHBy
b3RvY29sIENBQWN0aW9uCgoKCgoKCi0gKHZvaWQpcnVuQWN0aW9uRm9yS2V5OihOU1N0cmluZyAq
KWV2ZW50IG9iamVjdDooaWQpYW5PYmplY3QKICAgIGFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICop
ZGljdDsKCkBlbmQKCgoKQGludGVyZmFjZSBOU09iamVjdCAoQ0FMYXllckRlbGVnYXRlKQoKCgoK
Ci0gKHZvaWQpZGlzcGxheUxheWVyOihDQUxheWVyICopbGF5ZXI7CgoKCi0gKHZvaWQpZHJhd0xh
eWVyOihDQUxheWVyICopbGF5ZXIgaW5Db250ZXh0OihDR0NvbnRleHRSZWYpY3R4OwoKCgoKCi0g
KHZvaWQpbGF5b3V0U3VibGF5ZXJzT2ZMYXllcjooQ0FMYXllciAqKWxheWVyOwojIDc0NiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUxh
eWVyLmgiIDMKLSAoaWQ8Q0FBY3Rpb24+KWFjdGlvbkZvckxheWVyOihDQUxheWVyICopbGF5ZXIg
Zm9yS2V5OihOU1N0cmluZyAqKWV2ZW50OwoKQGVuZAoKCgpleHRlcm4gTlNTdHJpbmcgKiBjb25z
dCBrQ0FHcmF2aXR5Q2VudGVyCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBR3Jhdml0eVRvcAogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtD
QUdyYXZpdHlCb3R0b20KICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
OwpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FHcmF2aXR5TGVmdAogICAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUdy
YXZpdHlSaWdodAogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4
dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUdyYXZpdHlUb3BMZWZ0CiAgICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBR3Jh
dml0eVRvcFJpZ2h0CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBR3Jhdml0eUJvdHRvbUxlZnQKICAgIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBr
Q0FHcmF2aXR5Qm90dG9tUmlnaHQKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FHcmF2aXR5UmVzaXplCiAgICBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29u
c3Qga0NBR3Jhdml0eVJlc2l6ZUFzcGVjdAogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUdyYXZpdHlSZXNpemVBc3Bl
Y3RGaWxsCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0
ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRmlsdGVyTmVhcmVzdAogICAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUZpbHRl
ckxpbmVhcgogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoK
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRmlsdGVyVHJpbGluZWFyCiAgICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiBOU1N0cmluZyAqIGNvbnN0
IGtDQU9uT3JkZXJJbgogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7
CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQU9uT3JkZXJPdXQKICAgIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FU
cmFuc2l0aW9uCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyA3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJz
L0NBT3BlbkdMTGF5ZXIuaCIgMiAzCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09w
ZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9PcGVuR0wuaCIgMSAzCgoKCgoKI2RlZmluZSBfT1BFTkdM
X0ggCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hl
YWRlcnMvQ0dMQ3VycmVudC5oIiAxIDMKCgoKCgojZGVmaW5lIF9DR0xDVVJSRU5UX0ggCgojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvSGVhZGVycy9DR0xU
eXBlcy5oIiAxIDMKCgoKCgojZGVmaW5lIF9DR0xUWVBFU19IIAoKCmV4dGVybiAiQyIgewoKCgoK
Cgp0eXBlZGVmIHN0cnVjdCBfQ0dMQ29udGV4dE9iamVjdCAqQ0dMQ29udGV4dE9iajsKdHlwZWRl
ZiBzdHJ1Y3QgX0NHTFBpeGVsRm9ybWF0T2JqZWN0ICpDR0xQaXhlbEZvcm1hdE9iajsKdHlwZWRl
ZiBzdHJ1Y3QgX0NHTFJlbmRlcmVySW5mb09iamVjdCAqQ0dMUmVuZGVyZXJJbmZvT2JqOwp0eXBl
ZGVmIHN0cnVjdCBfQ0dMUEJ1ZmZlck9iamVjdCAqQ0dMUEJ1ZmZlck9iajsKCgoKCnR5cGVkZWYg
ZW51bSBfQ0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGUgewoga0NHTFBGQUFsbFJlbmRlcmVycyA9IDEs
CiBrQ0dMUEZBRG91YmxlQnVmZmVyID0gNSwKIGtDR0xQRkFTdGVyZW8gPSA2LAoga0NHTFBGQUF1
eEJ1ZmZlcnMgPSA3LAoga0NHTFBGQUNvbG9yU2l6ZSA9IDgsCiBrQ0dMUEZBQWxwaGFTaXplID0g
MTEsCiBrQ0dMUEZBRGVwdGhTaXplID0gMTIsCiBrQ0dMUEZBU3RlbmNpbFNpemUgPSAxMywKIGtD
R0xQRkFBY2N1bVNpemUgPSAxNCwKIGtDR0xQRkFNaW5pbXVtUG9saWN5ID0gNTEsCiBrQ0dMUEZB
TWF4aW11bVBvbGljeSA9IDUyLAoga0NHTFBGQU9mZlNjcmVlbiA9IDUzLAoga0NHTFBGQUZ1bGxT
Y3JlZW4gPSA1NCwKIGtDR0xQRkFTYW1wbGVCdWZmZXJzID0gNTUsCiBrQ0dMUEZBU2FtcGxlcyA9
IDU2LAoga0NHTFBGQUF1eERlcHRoU3RlbmNpbCA9IDU3LAoga0NHTFBGQUNvbG9yRmxvYXQgPSA1
OCwKIGtDR0xQRkFNdWx0aXNhbXBsZSA9IDU5LAoga0NHTFBGQVN1cGVyc2FtcGxlID0gNjAsCiBr
Q0dMUEZBU2FtcGxlQWxwaGEgPSA2MSwKCiBrQ0dMUEZBUmVuZGVyZXJJRCA9IDcwLAoga0NHTFBG
QVNpbmdsZVJlbmRlcmVyID0gNzEsCiBrQ0dMUEZBTm9SZWNvdmVyeSA9IDcyLAoga0NHTFBGQUFj
Y2VsZXJhdGVkID0gNzMsCiBrQ0dMUEZBQ2xvc2VzdFBvbGljeSA9IDc0LAoga0NHTFBGQUJhY2tp
bmdTdG9yZSA9IDc2LAoga0NHTFBGQVdpbmRvdyA9IDgwLAoga0NHTFBGQUNvbXBsaWFudCA9IDgz
LAoga0NHTFBGQURpc3BsYXlNYXNrID0gODQsCiBrQ0dMUEZBUEJ1ZmZlciA9IDkwLAoga0NHTFBG
QVJlbW90ZVBCdWZmZXIgPSA5MSwKIGtDR0xQRkFBbGxvd09mZmxpbmVSZW5kZXJlcnMgPSA5NiwK
IGtDR0xQRkFBY2NlbGVyYXRlZENvbXB1dGUgPSA5NywKIGtDR0xQRkFWaXJ0dWFsU2NyZWVuQ291
bnQgPSAxMjgsCgoKCgoKCgoga0NHTFBGQVJvYnVzdCA9IDc1LAoga0NHTFBGQU1QU2FmZSA9IDc4
LAoga0NHTFBGQU11bHRpU2NyZWVuID0gODEKfSBDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZTsKCgoK
CnR5cGVkZWYgZW51bSBfQ0dMUmVuZGVyZXJQcm9wZXJ0eSB7CiBrQ0dMUlBPZmZTY3JlZW4gPSA1
MywKIGtDR0xSUEZ1bGxTY3JlZW4gPSA1NCwKIGtDR0xSUFJlbmRlcmVySUQgPSA3MCwKIGtDR0xS
UEFjY2VsZXJhdGVkID0gNzMsCiBrQ0dMUlBSb2J1c3QgPSA3NSwKIGtDR0xSUEJhY2tpbmdTdG9y
ZSA9IDc2LAoga0NHTFJQTVBTYWZlID0gNzgsCiBrQ0dMUlBXaW5kb3cgPSA4MCwKIGtDR0xSUE11
bHRpU2NyZWVuID0gODEsCiBrQ0dMUlBDb21wbGlhbnQgPSA4MywKIGtDR0xSUERpc3BsYXlNYXNr
ID0gODQsCiBrQ0dMUlBCdWZmZXJNb2RlcyA9IDEwMCwKIGtDR0xSUENvbG9yTW9kZXMgPSAxMDMs
CiBrQ0dMUlBBY2N1bU1vZGVzID0gMTA0LAoga0NHTFJQRGVwdGhNb2RlcyA9IDEwNSwKIGtDR0xS
UFN0ZW5jaWxNb2RlcyA9IDEwNiwKIGtDR0xSUE1heEF1eEJ1ZmZlcnMgPSAxMDcsCiBrQ0dMUlBN
YXhTYW1wbGVCdWZmZXJzID0gMTA4LAoga0NHTFJQTWF4U2FtcGxlcyA9IDEwOSwKIGtDR0xSUFNh
bXBsZU1vZGVzID0gMTEwLAoga0NHTFJQU2FtcGxlQWxwaGEgPSAxMTEsCiBrQ0dMUlBWaWRlb01l
bW9yeSA9IDEyMCwKIGtDR0xSUFRleHR1cmVNZW1vcnkgPSAxMjEsCiBrQ0dMUlBHUFVWZXJ0UHJv
Y0NhcGFibGUgPSAxMjIsCiBrQ0dMUlBHUFVGcmFnUHJvY0NhcGFibGUgPSAxMjMsCiBrQ0dMUlBS
ZW5kZXJlckNvdW50ID0gMTI4LAoga0NHTFJQT25saW5lID0gMTI5LAoga0NHTFJQQWNjZWxlcmF0
ZWRDb21wdXRlID0gMTMwCn0gQ0dMUmVuZGVyZXJQcm9wZXJ0eTsKCgoKCnR5cGVkZWYgZW51bSBf
Q0dMQ29udGV4dEVuYWJsZSB7CiBrQ0dMQ0VTd2FwUmVjdGFuZ2xlID0gMjAxLAoga0NHTENFU3dh
cExpbWl0ID0gMjAzLAoga0NHTENFUmFzdGVyaXphdGlvbiA9IDIyMSwKIGtDR0xDRVN0YXRlVmFs
aWRhdGlvbiA9IDMwMSwKIGtDR0xDRVN1cmZhY2VCYWNraW5nU2l6ZSA9IDMwNSwKIGtDR0xDRURp
c3BsYXlMaXN0T3B0aW1pemF0aW9uID0gMzA3LAoga0NHTENFTVBFbmdpbmUgPSAzMTMKfSBDR0xD
b250ZXh0RW5hYmxlOwoKCgoKdHlwZWRlZiBlbnVtIF9DR0xDb250ZXh0UGFyYW1ldGVyIHsKIGtD
R0xDUFN3YXBSZWN0YW5nbGUgPSAyMDAsCiBrQ0dMQ1BTd2FwSW50ZXJ2YWwgPSAyMjIsCiBrQ0dM
Q1BEaXNwYXRjaFRhYmxlU2l6ZSA9IDIyNCwKCiBrQ0dMQ1BDbGllbnRTdG9yYWdlID0gMjI2LAog
a0NHTENQU3VyZmFjZVRleHR1cmUgPSAyMjgsCgoKCgoKCiBrQ0dMQ1BTdXJmYWNlT3JkZXIgPSAy
MzUsCiBrQ0dMQ1BTdXJmYWNlT3BhY2l0eSA9IDIzNiwKCgoKIGtDR0xDUFN1cmZhY2VCYWNraW5n
U2l6ZSA9IDMwNCwKCiBrQ0dMQ1BTdXJmYWNlU3VyZmFjZVZvbGF0aWxlID0gMzA2LAoga0NHTENQ
UmVjbGFpbVJlc291cmNlcyA9IDMwOCwKIGtDR0xDUEN1cnJlbnRSZW5kZXJlcklEID0gMzA5LAog
a0NHTENQR1BVVmVydGV4UHJvY2Vzc2luZyA9IDMxMCwKIGtDR0xDUEdQVUZyYWdtZW50UHJvY2Vz
c2luZyA9IDMxMSwKIGtDR0xDUEhhc0RyYXdhYmxlID0gMzE0LAoga0NHTENQTVBTd2Fwc0luRmxp
Z2h0ID0gMzE1LAp9IENHTENvbnRleHRQYXJhbWV0ZXI7CgoKCgp0eXBlZGVmIGVudW0gX0NHTEds
b2JhbE9wdGlvbiB7CiBrQ0dMR09Gb3JtYXRDYWNoZVNpemUgPSA1MDEsCiBrQ0dMR09DbGVhckZv
cm1hdENhY2hlID0gNTAyLAoga0NHTEdPUmV0YWluUmVuZGVyZXJzID0gNTAzLAoga0NHTEdPUmVz
ZXRMaWJyYXJ5ID0gNTA0LAoKIGtDR0xHT1VzZUVycm9ySGFuZGxlciA9IDUwNSwKIGtDR0xHT1Vz
ZUJ1aWxkQ2FjaGUgPSA1MDYsCgp9IENHTEdsb2JhbE9wdGlvbjsKCgoKCnR5cGVkZWYgZW51bSBf
Q0dMRXJyb3Igewoga0NHTE5vRXJyb3IgPSAwLAoga0NHTEJhZEF0dHJpYnV0ZSA9IDEwMDAwLAog
a0NHTEJhZFByb3BlcnR5ID0gMTAwMDEsCiBrQ0dMQmFkUGl4ZWxGb3JtYXQgPSAxMDAwMiwKIGtD
R0xCYWRSZW5kZXJlckluZm8gPSAxMDAwMywKIGtDR0xCYWRDb250ZXh0ID0gMTAwMDQsCiBrQ0dM
QmFkRHJhd2FibGUgPSAxMDAwNSwKIGtDR0xCYWREaXNwbGF5ID0gMTAwMDYsCiBrQ0dMQmFkU3Rh
dGUgPSAxMDAwNywKIGtDR0xCYWRWYWx1ZSA9IDEwMDA4LAoga0NHTEJhZE1hdGNoID0gMTAwMDks
CiBrQ0dMQmFkRW51bWVyYXRpb24gPSAxMDAxMCwKIGtDR0xCYWRPZmZTY3JlZW4gPSAxMDAxMSwK
IGtDR0xCYWRGdWxsU2NyZWVuID0gMTAwMTIsCiBrQ0dMQmFkV2luZG93ID0gMTAwMTMsCiBrQ0dM
QmFkQWRkcmVzcyA9IDEwMDE0LAoga0NHTEJhZENvZGVNb2R1bGUgPSAxMDAxNSwKIGtDR0xCYWRB
bGxvYyA9IDEwMDE2LAoga0NHTEJhZENvbm5lY3Rpb24gPSAxMDAxNwp9IENHTEVycm9yOwoKCgoK
CiNkZWZpbmUga0NHTE1vbm9zY29waWNCaXQgMHgwMDAwMDAwMQojZGVmaW5lIGtDR0xTdGVyZW9z
Y29waWNCaXQgMHgwMDAwMDAwMgojZGVmaW5lIGtDR0xTaW5nbGVCdWZmZXJCaXQgMHgwMDAwMDAw
NAojZGVmaW5lIGtDR0xEb3VibGVCdWZmZXJCaXQgMHgwMDAwMDAwOAoKCgoKI2RlZmluZSBrQ0dM
MEJpdCAweDAwMDAwMDAxCiNkZWZpbmUga0NHTDFCaXQgMHgwMDAwMDAwMgojZGVmaW5lIGtDR0wy
Qml0IDB4MDAwMDAwMDQKI2RlZmluZSBrQ0dMM0JpdCAweDAwMDAwMDA4CiNkZWZpbmUga0NHTDRC
aXQgMHgwMDAwMDAxMAojZGVmaW5lIGtDR0w1Qml0IDB4MDAwMDAwMjAKI2RlZmluZSBrQ0dMNkJp
dCAweDAwMDAwMDQwCiNkZWZpbmUga0NHTDhCaXQgMHgwMDAwMDA4MAojZGVmaW5lIGtDR0wxMEJp
dCAweDAwMDAwMTAwCiNkZWZpbmUga0NHTDEyQml0IDB4MDAwMDAyMDAKI2RlZmluZSBrQ0dMMTZC
aXQgMHgwMDAwMDQwMAojZGVmaW5lIGtDR0wyNEJpdCAweDAwMDAwODAwCiNkZWZpbmUga0NHTDMy
Qml0IDB4MDAwMDEwMDAKI2RlZmluZSBrQ0dMNDhCaXQgMHgwMDAwMjAwMAojZGVmaW5lIGtDR0w2
NEJpdCAweDAwMDA0MDAwCiNkZWZpbmUga0NHTDk2Qml0IDB4MDAwMDgwMDAKI2RlZmluZSBrQ0dM
MTI4Qml0IDB4MDAwMTAwMDAKCgoKCiNkZWZpbmUga0NHTFJHQjQ0NEJpdCAweDAwMDAwMDQwCiNk
ZWZpbmUga0NHTEFSR0I0NDQ0Qml0IDB4MDAwMDAwODAKI2RlZmluZSBrQ0dMUkdCNDQ0QThCaXQg
MHgwMDAwMDEwMAojZGVmaW5lIGtDR0xSR0I1NTVCaXQgMHgwMDAwMDIwMAojZGVmaW5lIGtDR0xB
UkdCMTU1NUJpdCAweDAwMDAwNDAwCiNkZWZpbmUga0NHTFJHQjU1NUE4Qml0IDB4MDAwMDA4MDAK
I2RlZmluZSBrQ0dMUkdCNTY1Qml0IDB4MDAwMDEwMDAKI2RlZmluZSBrQ0dMUkdCNTY1QThCaXQg
MHgwMDAwMjAwMAojZGVmaW5lIGtDR0xSR0I4ODhCaXQgMHgwMDAwNDAwMAojZGVmaW5lIGtDR0xB
UkdCODg4OEJpdCAweDAwMDA4MDAwCiNkZWZpbmUga0NHTFJHQjg4OEE4Qml0IDB4MDAwMTAwMDAK
I2RlZmluZSBrQ0dMUkdCMTAxMDEwQml0IDB4MDAwMjAwMDAKI2RlZmluZSBrQ0dMQVJHQjIxMDEw
MTBCaXQgMHgwMDA0MDAwMAojZGVmaW5lIGtDR0xSR0IxMDEwMTBfQThCaXQgMHgwMDA4MDAwMAoj
ZGVmaW5lIGtDR0xSR0IxMjEyMTJCaXQgMHgwMDEwMDAwMAojZGVmaW5lIGtDR0xBUkdCMTIxMjEy
MTJCaXQgMHgwMDIwMDAwMAojZGVmaW5lIGtDR0xSR0IxNjE2MTZCaXQgMHgwMDQwMDAwMAojZGVm
aW5lIGtDR0xSR0JBMTYxNjE2MTZCaXQgMHgwMDgwMDAwMAojZGVmaW5lIGtDR0xSR0JGbG9hdDY0
Qml0IDB4MDEwMDAwMDAKI2RlZmluZSBrQ0dMUkdCQUZsb2F0NjRCaXQgMHgwMjAwMDAwMAojZGVm
aW5lIGtDR0xSR0JGbG9hdDEyOEJpdCAweDA0MDAwMDAwCiNkZWZpbmUga0NHTFJHQkFGbG9hdDEy
OEJpdCAweDA4MDAwMDAwCiNkZWZpbmUga0NHTFJHQkZsb2F0MjU2Qml0IDB4MTAwMDAwMDAKI2Rl
ZmluZSBrQ0dMUkdCQUZsb2F0MjU2Qml0IDB4MjAwMDAwMDAKCgoKCiNkZWZpbmUga0NHTFN1cGVy
c2FtcGxlQml0IDB4MDAwMDAwMDEKI2RlZmluZSBrQ0dMTXVsdGlzYW1wbGVCaXQgMHgwMDAwMDAw
MgoKCiNkZWZpbmUga0NHTEFSR0IxNjE2MTYxNkJpdCBrQ0dMUkdCQTE2MTYxNjE2Qml0CgoKCn0K
IyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL0hlYWRlcnMv
Q0dMQ3VycmVudC5oIiAyIDMKCgpleHRlcm4gIkMiIHsKCgoKCgoKZXh0ZXJuIENHTEVycm9yIENH
TFNldEN1cnJlbnRDb250ZXh0KENHTENvbnRleHRPYmogY3R4KTsKZXh0ZXJuIENHTENvbnRleHRP
YmogQ0dMR2V0Q3VycmVudENvbnRleHQodm9pZCk7CgoKCn0KIyAxMCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJzL09wZW5HTC5oIiAyIDMKCgoKZXh0
ZXJuICJDIiB7CgoKCgoKCiNkZWZpbmUgQ0dMX1ZFUlNJT05fMV8wIDEKI2RlZmluZSBDR0xfVkVS
U0lPTl8xXzEgMQojZGVmaW5lIENHTF9WRVJTSU9OXzFfMiAxCgoKCgoKZXh0ZXJuIENHTEVycm9y
IENHTENob29zZVBpeGVsRm9ybWF0KGNvbnN0IENHTFBpeGVsRm9ybWF0QXR0cmlidXRlICphdHRy
aWJzLCBDR0xQaXhlbEZvcm1hdE9iaiAqcGl4LCBHTGludCAqbnBpeCk7CmV4dGVybiBDR0xFcnJv
ciBDR0xEZXN0cm95UGl4ZWxGb3JtYXQoQ0dMUGl4ZWxGb3JtYXRPYmogcGl4KTsKZXh0ZXJuIENH
TEVycm9yIENHTERlc2NyaWJlUGl4ZWxGb3JtYXQoQ0dMUGl4ZWxGb3JtYXRPYmogcGl4LCBHTGlu
dCBwaXhfbnVtLCBDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZSBhdHRyaWIsIEdMaW50ICp2YWx1ZSk7
CmV4dGVybiB2b2lkIENHTFJlbGVhc2VQaXhlbEZvcm1hdChDR0xQaXhlbEZvcm1hdE9iaiBwaXgp
IDsKZXh0ZXJuIENHTFBpeGVsRm9ybWF0T2JqIENHTFJldGFpblBpeGVsRm9ybWF0KENHTFBpeGVs
Rm9ybWF0T2JqIHBpeCkgOwpleHRlcm4gR0x1aW50IENHTEdldFBpeGVsRm9ybWF0UmV0YWluQ291
bnQoQ0dMUGl4ZWxGb3JtYXRPYmogcGl4KSA7CgoKCgpleHRlcm4gQ0dMRXJyb3IgQ0dMUXVlcnlS
ZW5kZXJlckluZm8oR0x1aW50IGRpc3BsYXlfbWFzaywgQ0dMUmVuZGVyZXJJbmZvT2JqICpyZW5k
LCBHTGludCAqbnJlbmQpOwpleHRlcm4gQ0dMRXJyb3IgQ0dMRGVzdHJveVJlbmRlcmVySW5mbyhD
R0xSZW5kZXJlckluZm9PYmogcmVuZCk7CmV4dGVybiBDR0xFcnJvciBDR0xEZXNjcmliZVJlbmRl
cmVyKENHTFJlbmRlcmVySW5mb09iaiByZW5kLCBHTGludCByZW5kX251bSwgQ0dMUmVuZGVyZXJQ
cm9wZXJ0eSBwcm9wLCBHTGludCAqdmFsdWUpOwoKCgoKZXh0ZXJuIENHTEVycm9yIENHTENyZWF0
ZUNvbnRleHQoQ0dMUGl4ZWxGb3JtYXRPYmogcGl4LCBDR0xDb250ZXh0T2JqIHNoYXJlLCBDR0xD
b250ZXh0T2JqICpjdHgpOwpleHRlcm4gQ0dMRXJyb3IgQ0dMRGVzdHJveUNvbnRleHQoQ0dMQ29u
dGV4dE9iaiBjdHgpOwpleHRlcm4gQ0dMRXJyb3IgQ0dMQ29weUNvbnRleHQoQ0dMQ29udGV4dE9i
aiBzcmMsIENHTENvbnRleHRPYmogZHN0LCBHTGJpdGZpZWxkIG1hc2spOwpleHRlcm4gQ0dMQ29u
dGV4dE9iaiBDR0xSZXRhaW5Db250ZXh0KENHTENvbnRleHRPYmogY3R4KSA7CmV4dGVybiB2b2lk
IENHTFJlbGVhc2VDb250ZXh0KENHTENvbnRleHRPYmogY3R4KSA7CmV4dGVybiBHTHVpbnQgQ0dM
R2V0Q29udGV4dFJldGFpbkNvdW50KENHTENvbnRleHRPYmogY3R4KSA7CmV4dGVybiBDR0xQaXhl
bEZvcm1hdE9iaiBDR0xHZXRQaXhlbEZvcm1hdChDR0xDb250ZXh0T2JqIGN0eCkgOwoKCgoKZXh0
ZXJuIENHTEVycm9yIENHTENyZWF0ZVBCdWZmZXIoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xpbnQgbWF4X2xldmVs
LCBDR0xQQnVmZmVyT2JqICpwYnVmZmVyKSA7CmV4dGVybiBDR0xFcnJvciBDR0xEZXN0cm95UEJ1
ZmZlcihDR0xQQnVmZmVyT2JqIHBidWZmZXIpIDsKZXh0ZXJuIENHTEVycm9yIENHTERlc2NyaWJl
UEJ1ZmZlcihDR0xQQnVmZmVyT2JqIG9iaiwgR0xzaXplaSAqd2lkdGgsIEdMc2l6ZWkgKmhlaWdo
dCwgR0xlbnVtICp0YXJnZXQsIEdMZW51bSAqaW50ZXJuYWxGb3JtYXQsIEdMaW50ICptaXBtYXAp
IDsKZXh0ZXJuIENHTEVycm9yIENHTFRleEltYWdlUEJ1ZmZlcihDR0xDb250ZXh0T2JqIGN0eCwg
Q0dMUEJ1ZmZlck9iaiBwYnVmZmVyLCBHTGVudW0gc291cmNlKSA7CmV4dGVybiBDR0xQQnVmZmVy
T2JqIENHTFJldGFpblBCdWZmZXIoQ0dMUEJ1ZmZlck9iaiBwYnVmZmVyKSA7CmV4dGVybiB2b2lk
IENHTFJlbGVhc2VQQnVmZmVyKENHTFBCdWZmZXJPYmogcGJ1ZmZlcikgOwpleHRlcm4gR0x1aW50
IENHTEdldFBCdWZmZXJSZXRhaW5Db3VudChDR0xQQnVmZmVyT2JqIHBidWZmZXIpIDsKCgoKCmV4
dGVybiBDR0xFcnJvciBDR0xTZXRPZmZTY3JlZW4oQ0dMQ29udGV4dE9iaiBjdHgsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCByb3dieXRlcywgdm9pZCAqYmFzZWFkZHIpOwpl
eHRlcm4gQ0dMRXJyb3IgQ0dMR2V0T2ZmU2NyZWVuKENHTENvbnRleHRPYmogY3R4LCBHTHNpemVp
ICp3aWR0aCwgR0xzaXplaSAqaGVpZ2h0LCBHTGludCAqcm93Ynl0ZXMsIHZvaWQgKipiYXNlYWRk
cik7CgpleHRlcm4gQ0dMRXJyb3IgQ0dMU2V0RnVsbFNjcmVlbihDR0xDb250ZXh0T2JqIGN0eCkg
X19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKCgpleHRlcm4gQ0dMRXJyb3IgQ0dMU2V0RnVs
bFNjcmVlbk9uRGlzcGxheShDR0xDb250ZXh0T2JqIGN0eCwgR0x1aW50IGRpc3BsYXlfbWFzaykg
OwoKZXh0ZXJuIENHTEVycm9yIENHTFNldFBCdWZmZXIoQ0dMQ29udGV4dE9iaiBjdHgsIENHTFBC
dWZmZXJPYmogcGJ1ZmZlciwgR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGludCBzY3JlZW4p
IDsKZXh0ZXJuIENHTEVycm9yIENHTEdldFBCdWZmZXIoQ0dMQ29udGV4dE9iaiBjdHgsIENHTFBC
dWZmZXJPYmogKnBidWZmZXIsIEdMZW51bSAqZmFjZSwgR0xpbnQgKmxldmVsLCBHTGludCAqc2Ny
ZWVuKSA7CgpleHRlcm4gQ0dMRXJyb3IgQ0dMQ2xlYXJEcmF3YWJsZShDR0xDb250ZXh0T2JqIGN0
eCk7CmV4dGVybiBDR0xFcnJvciBDR0xGbHVzaERyYXdhYmxlKENHTENvbnRleHRPYmogY3R4KTsK
CgoKCmV4dGVybiBDR0xFcnJvciBDR0xFbmFibGUoQ0dMQ29udGV4dE9iaiBjdHgsIENHTENvbnRl
eHRFbmFibGUgcG5hbWUpOwpleHRlcm4gQ0dMRXJyb3IgQ0dMRGlzYWJsZShDR0xDb250ZXh0T2Jq
IGN0eCwgQ0dMQ29udGV4dEVuYWJsZSBwbmFtZSk7CmV4dGVybiBDR0xFcnJvciBDR0xJc0VuYWJs
ZWQoQ0dMQ29udGV4dE9iaiBjdHgsIENHTENvbnRleHRFbmFibGUgcG5hbWUsIEdMaW50ICplbmFi
bGUpOwpleHRlcm4gQ0dMRXJyb3IgQ0dMU2V0UGFyYW1ldGVyKENHTENvbnRleHRPYmogY3R4LCBD
R0xDb250ZXh0UGFyYW1ldGVyIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKZXh0ZXJuIENH
TEVycm9yIENHTEdldFBhcmFtZXRlcihDR0xDb250ZXh0T2JqIGN0eCwgQ0dMQ29udGV4dFBhcmFt
ZXRlciBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CgoKCgpleHRlcm4gQ0dMRXJyb3IgQ0dMU2V0Vmly
dHVhbFNjcmVlbihDR0xDb250ZXh0T2JqIGN0eCwgR0xpbnQgc2NyZWVuKTsKZXh0ZXJuIENHTEVy
cm9yIENHTEdldFZpcnR1YWxTY3JlZW4oQ0dMQ29udGV4dE9iaiBjdHgsIEdMaW50ICpzY3JlZW4p
OwoKCgoKCmV4dGVybiBDR0xFcnJvciBDR0xTZXRHbG9iYWxPcHRpb24oQ0dMR2xvYmFsT3B0aW9u
IHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKSA7CmV4dGVybiBDR0xFcnJvciBDR0xHZXRHbG9i
YWxPcHRpb24oQ0dMR2xvYmFsT3B0aW9uIHBuYW1lLCBHTGludCAqcGFyYW1zKSA7CgoKCgoKZXh0
ZXJuIENHTEVycm9yIENHTFNldE9wdGlvbihDR0xHbG9iYWxPcHRpb24gcG5hbWUsIEdMaW50IHBh
cmFtKTsKZXh0ZXJuIENHTEVycm9yIENHTEdldE9wdGlvbihDR0xHbG9iYWxPcHRpb24gcG5hbWUs
IEdMaW50ICpwYXJhbSk7CgoKCgpleHRlcm4gQ0dMRXJyb3IgQ0dMTG9ja0NvbnRleHQoQ0dMQ29u
dGV4dE9iaiBjdHgpIDsKCmV4dGVybiBDR0xFcnJvciBDR0xVbmxvY2tDb250ZXh0KENHTENvbnRl
eHRPYmogY3R4KSA7CgoKCgpleHRlcm4gdm9pZCBDR0xHZXRWZXJzaW9uKEdMaW50ICptYWpvcnZl
cnMsIEdMaW50ICptaW5vcnZlcnMpOwoKCgoKY29uc3QgY2hhciAqQ0dMRXJyb3JTdHJpbmcoQ0dM
RXJyb3IgZXJyb3IpOwoKCgp9CiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQU9wZW5HTExheWVyLmgiIDIgMwoKQGludGVyZmFjZSBD
QU9wZW5HTExheWVyIDogQ0FMYXllcgp7CkBwcml2YXRlCiAgc3RydWN0IENBT3BlbkdMTGF5ZXJQ
cml2YXRlICpfZ2xQcml2Owp9CgoKCgoKCkBwcm9wZXJ0eShnZXR0ZXI9aXNBc3luY2hyb25vdXMp
IEJPT0wgYXN5bmNocm9ub3VzOwoKCgoKCgotIChCT09MKWNhbkRyYXdJbkNHTENvbnRleHQ6KENH
TENvbnRleHRPYmopY3R4CiAgICBwaXhlbEZvcm1hdDooQ0dMUGl4ZWxGb3JtYXRPYmopcGYgZm9y
TGF5ZXJUaW1lOihDRlRpbWVJbnRlcnZhbCl0CiAgICBkaXNwbGF5VGltZTooY29uc3QgQ1ZUaW1l
U3RhbXAgKil0czsKIyAzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5m
cmFtZXdvcmsvSGVhZGVycy9DQU9wZW5HTExheWVyLmgiIDMKLSAodm9pZClkcmF3SW5DR0xDb250
ZXh0OihDR0xDb250ZXh0T2JqKWN0eCBwaXhlbEZvcm1hdDooQ0dMUGl4ZWxGb3JtYXRPYmopcGYK
ICAgIGZvckxheWVyVGltZTooQ0ZUaW1lSW50ZXJ2YWwpdCBkaXNwbGF5VGltZTooY29uc3QgQ1ZU
aW1lU3RhbXAgKil0czsKIyA0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9DQU9wZW5HTExheWVyLmgiIDMKLSAoQ0dMUGl4ZWxGb3JtYXRP
YmopY29weUNHTFBpeGVsRm9ybWF0Rm9yRGlzcGxheU1hc2s6KHVpbnQzMl90KW1hc2s7CgoKCgoK
LSAodm9pZClyZWxlYXNlQ0dMUGl4ZWxGb3JtYXQ6KENHTFBpeGVsRm9ybWF0T2JqKXBmOwoKCgoK
CgotIChDR0xDb250ZXh0T2JqKWNvcHlDR0xDb250ZXh0Rm9yUGl4ZWxGb3JtYXQ6KENHTFBpeGVs
Rm9ybWF0T2JqKXBmOwoKCgoKLSAodm9pZClyZWxlYXNlQ0dMQ29udGV4dDooQ0dMQ29udGV4dE9i
ailjdHg7CgpAZW5kCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9OU09wZW5HTExheWVyLmgiIDIgMwoKCgpAaW50ZXJmYWNlIE5TT3BlbkdM
TGF5ZXIgOiBDQU9wZW5HTExheWVyCnsKQHByaXZhdGUKICAgIE5TT3BlbkdMUGl4ZWxGb3JtYXQg
Kl9vcGVuR0xQaXhlbEZvcm1hdDsKICAgIE5TT3BlbkdMQ29udGV4dCAqX29wZW5HTENvbnRleHQ7
CiAgICB2b2lkICpfcmVzZXJ2ZWRbNV07Cn0KCgoKQHByb3BlcnR5KGFzc2lnbikgTlNWaWV3ICp2
aWV3OwoKCgpAcHJvcGVydHkocmV0YWluKSBOU09wZW5HTFBpeGVsRm9ybWF0ICpvcGVuR0xQaXhl
bEZvcm1hdDsKCgoKQHByb3BlcnR5KHJldGFpbikgTlNPcGVuR0xDb250ZXh0ICpvcGVuR0xDb250
ZXh0OwoKCgotIChOU09wZW5HTFBpeGVsRm9ybWF0ICopb3BlbkdMUGl4ZWxGb3JtYXRGb3JEaXNw
bGF5TWFzazoodWludDMyX3QpbWFzazsKCgoKLSAoTlNPcGVuR0xDb250ZXh0ICopb3BlbkdMQ29u
dGV4dEZvclBpeGVsRm9ybWF0OihOU09wZW5HTFBpeGVsRm9ybWF0ICopcGl4ZWxGb3JtYXQ7CgoK
Ci0gKEJPT0wpY2FuRHJhd0luT3BlbkdMQ29udGV4dDooTlNPcGVuR0xDb250ZXh0ICopY29udGV4
dCBwaXhlbEZvcm1hdDooTlNPcGVuR0xQaXhlbEZvcm1hdCAqKXBpeGVsRm9ybWF0IGZvckxheWVy
VGltZTooQ0ZUaW1lSW50ZXJ2YWwpdCBkaXNwbGF5VGltZTooY29uc3QgQ1ZUaW1lU3RhbXAgKil0
czsKCgoKLSAodm9pZClkcmF3SW5PcGVuR0xDb250ZXh0OihOU09wZW5HTENvbnRleHQgKiljb250
ZXh0IHBpeGVsRm9ybWF0OihOU09wZW5HTFBpeGVsRm9ybWF0ICopcGl4ZWxGb3JtYXQgZm9yTGF5
ZXJUaW1lOihDRlRpbWVJbnRlcnZhbCl0IGRpc3BsYXlUaW1lOihjb25zdCBDVlRpbWVTdGFtcCAq
KXRzOwoKQGVuZAojIDE0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNPcGVuR0xWaWV3LmgiIDEgMwojIDEwICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNPcGVuR0xW
aWV3LmgiIDMKQGNsYXNzIE5TT3BlbkdMQ29udGV4dCwgTlNPcGVuR0xQaXhlbEZvcm1hdDsKCkBp
bnRlcmZhY2UgTlNPcGVuR0xWaWV3IDogTlNWaWV3IHsKICBAcHJpdmF0ZQogICAgTlNPcGVuR0xD
b250ZXh0KiBfb3BlbkdMQ29udGV4dDsKICAgIE5TT3BlbkdMUGl4ZWxGb3JtYXQqIF9waXhlbEZv
cm1hdDsKICAgIE5TSW50ZWdlciBfcmVzZXJ2ZWQxOwogICAgTlNJbnRlZ2VyIF9yZXNlcnZlZDI7
CiAgICBOU0ludGVnZXIgX3Jlc2VydmVkMzsKfQoKKyAoTlNPcGVuR0xQaXhlbEZvcm1hdCopZGVm
YXVsdFBpeGVsRm9ybWF0OwoKLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lUmVjdCBw
aXhlbEZvcm1hdDooTlNPcGVuR0xQaXhlbEZvcm1hdCopZm9ybWF0OwoKLSAodm9pZClzZXRPcGVu
R0xDb250ZXh0OihOU09wZW5HTENvbnRleHQqKWNvbnRleHQ7Ci0gKE5TT3BlbkdMQ29udGV4dCop
b3BlbkdMQ29udGV4dDsKLSAodm9pZCljbGVhckdMQ29udGV4dDsKCi0gKHZvaWQpdXBkYXRlOwot
ICh2b2lkKXJlc2hhcGU7CgotICh2b2lkKXNldFBpeGVsRm9ybWF0OihOU09wZW5HTFBpeGVsRm9y
bWF0KilwaXhlbEZvcm1hdDsKLSAoTlNPcGVuR0xQaXhlbEZvcm1hdCopcGl4ZWxGb3JtYXQ7CgoK
LSAodm9pZClwcmVwYXJlT3BlbkdMOwoKQGVuZAojIDE0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNBcHBsaWNhdGlv
blNjcmlwdGluZy5oIiAxIDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0
LmZyYW1ld29yay9IZWFkZXJzL05TQXBwbGljYXRpb25TY3JpcHRpbmcuaCIgMwpAaW50ZXJmYWNl
IE5TQXBwbGljYXRpb24oTlNTY3JpcHRpbmcpCgoKLSAoTlNBcnJheSAqKW9yZGVyZWREb2N1bWVu
dHM7CgoKLSAoTlNBcnJheSAqKW9yZGVyZWRXaW5kb3dzOwoKQGVuZAoKQGludGVyZmFjZSBOU09i
amVjdChOU0FwcGxpY2F0aW9uU2NyaXB0aW5nRGVsZWdhdGlvbikKCgotIChCT09MKWFwcGxpY2F0
aW9uOihOU0FwcGxpY2F0aW9uICopc2VuZGVyIGRlbGVnYXRlSGFuZGxlc0tleTooTlNTdHJpbmcg
KilrZXk7CgpAZW5kCiMgMTQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0RvY3VtZW50U2NyaXB0aW5nLmgiIDEgMwoj
IDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
TlNEb2N1bWVudFNjcmlwdGluZy5oIiAzCkBjbGFzcyBOU0Nsb3NlQ29tbWFuZDsKQGNsYXNzIE5T
U2NyaXB0Q29tbWFuZDsKQGNsYXNzIE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyOwpAY2xhc3MgTlNT
dHJpbmc7CgpAaW50ZXJmYWNlIE5TRG9jdW1lbnQgKE5TU2NyaXB0aW5nKQoKLSAoTlNTdHJpbmcg
KilsYXN0Q29tcG9uZW50T2ZGaWxlTmFtZTsKLSAodm9pZClzZXRMYXN0Q29tcG9uZW50T2ZGaWxl
TmFtZTooTlNTdHJpbmcgKilzdHI7CgotIChpZCloYW5kbGVTYXZlU2NyaXB0Q29tbWFuZDooTlNT
Y3JpcHRDb21tYW5kICopY29tbWFuZDsKLSAoaWQpaGFuZGxlQ2xvc2VTY3JpcHRDb21tYW5kOihO
U0Nsb3NlQ29tbWFuZCAqKWNvbW1hbmQ7Ci0gKGlkKWhhbmRsZVByaW50U2NyaXB0Q29tbWFuZDoo
TlNTY3JpcHRDb21tYW5kICopY29tbWFuZDsKCi0gKE5TU2NyaXB0T2JqZWN0U3BlY2lmaWVyICop
b2JqZWN0U3BlY2lmaWVyOwoKQGVuZAojIDE0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUZXh0U3RvcmFnZVNjcmlw
dGluZy5oIiAxIDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL05TVGV4dFN0b3JhZ2VTY3JpcHRpbmcuaCIgMwpAaW50ZXJmYWNlIE5TVGV4
dFN0b3JhZ2UgKFNjcmlwdGluZykKCi0gKE5TQXJyYXkgKilhdHRyaWJ1dGVSdW5zOwotICh2b2lk
KXNldEF0dHJpYnV0ZVJ1bnM6KE5TQXJyYXkgKilhdHRyaWJ1dGVSdW5zOwoKLSAoTlNBcnJheSAq
KXBhcmFncmFwaHM7Ci0gKHZvaWQpc2V0UGFyYWdyYXBoczooTlNBcnJheSAqKXBhcmFncmFwaHM7
CgotIChOU0FycmF5ICopd29yZHM7Ci0gKHZvaWQpc2V0V29yZHM6KE5TQXJyYXkgKil3b3JkczsK
Ci0gKE5TQXJyYXkgKiljaGFyYWN0ZXJzOwotICh2b2lkKXNldENoYXJhY3RlcnM6KE5TQXJyYXkg
KiljaGFyYWN0ZXJzOwoKLSAoTlNGb250ICopZm9udDsKLSAodm9pZClzZXRGb250OihOU0ZvbnQg
Kilmb250OwoKLSAoTlNDb2xvciAqKWZvcmVncm91bmRDb2xvcjsKLSAodm9pZClzZXRGb3JlZ3Jv
dW5kQ29sb3I6KE5TQ29sb3IgKiljb2xvcjsKCkBlbmQKIyAxNDggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVG9vbGJh
ci5oIiAxIDMKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29y
ay9IZWFkZXJzL05TVG9vbGJhci5oIiAzCkBjbGFzcyBOU0FycmF5LCBOU0RpY3Rpb25hcnksIE5T
TXV0YWJsZUFycmF5LCBOU05vdGlmaWNhdGlvbiwgTlNTdHJpbmcsIE5TVG9vbGJhckl0ZW0sIE5T
V2luZG93OwpAcHJvdG9jb2wgTlNUb29sYmFyRGVsZWdhdGU7CgplbnVtIHsgTlNUb29sYmFyRGlz
cGxheU1vZGVEZWZhdWx0LCBOU1Rvb2xiYXJEaXNwbGF5TW9kZUljb25BbmRMYWJlbCwgTlNUb29s
YmFyRGlzcGxheU1vZGVJY29uT25seSwgTlNUb29sYmFyRGlzcGxheU1vZGVMYWJlbE9ubHkgfTsK
dHlwZWRlZiBOU1VJbnRlZ2VyIE5TVG9vbGJhckRpc3BsYXlNb2RlOwoKZW51bSB7IE5TVG9vbGJh
clNpemVNb2RlRGVmYXVsdCwgTlNUb29sYmFyU2l6ZU1vZGVSZWd1bGFyLCBOU1Rvb2xiYXJTaXpl
TW9kZVNtYWxsIH07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1Rvb2xiYXJTaXplTW9kZTsKCkBpbnRl
cmZhY2UgTlNUb29sYmFyIDogTlNPYmplY3QgewpAcHJpdmF0ZQogICAgTlNTdHJpbmcgKiBfdG9v
bGJhcklkZW50aWZpZXI7CgogICAgTlNNdXRhYmxlQXJyYXkgKiBfY3VycmVudEl0ZW1zOwogICAg
TlNNdXRhYmxlQXJyYXkgKiBfY3VycmVudEl0ZW1JZGVudGlmaWVyczsKCiAgICBOU0RpY3Rpb25h
cnkgKiBfaW5pdFBMaXN0RGF0YWJhc2U7CiAgICBpZCBfaW5pdFBMaXN0VGFyZ2V0OwoKICAgIE5T
U3RyaW5nICogX3NlbGVjdGVkSXRlbUlkZW50aWZpZXI7CiAgICB2b2lkICogX21ldHJpY3M7Cgog
ICAgaWQgX2RlbGVnYXRlOwogICAgTlNXaW5kb3cgKiBfd2luZG93OwogICAgaWQgX2NvbmZpZ1Bh
bGV0dGU7CiAgICBpZCBfdG9vbGJhclZpZXc7CiAgICBOU0ludGVnZXIgX3N5bmNQb3N0RW5hYmxl
ZENvdW50OwoKICAgIHN0cnVjdCBfX3RiRmxhZ3MgewogdW5zaWduZWQgaW50IGFsbG93c1VzZXJD
dXN0b21pemF0aW9uOjE7CiB1bnNpZ25lZCBpbnQgYXV0b3NhdmVzVXNpbmdJZGVudGlmaWVyOjE7
CiB1bnNpZ25lZCBpbnQgaW5pdGlhbENvbmZpZ3VyYXRpb25Eb25lOjE7CiB1bnNpZ25lZCBpbnQg
c2hvdWxkSGlkZUFmdGVyQ3VzdG9taXphdGlvbjoxOwogICAgICAgIHVuc2lnbmVkIGludCBkZWxl
Z2F0ZURlZmF1bHRJdGVtSWRlbnRpZmllcnM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVsZWdh
dGVBbGxvd2VkSXRlbUlkZW50aWZpZXJzOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGRlbGVnYXRl
SXRlbVdpdGhJdGVtSWRlbnRpZmllcjoxOwogdW5zaWduZWQgaW50IGRlbGVnYXRlTm90aWZpY2F0
aW9uc0VuYWJsZWQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHJlZmVyc1RvQmVTaG93bjoxOwog
ICAgICAgIHVuc2lnbmVkIGludCBsb2FkSXRlbXNJbW1lZGlhdGVseToxOwogICAgICAgIHVuc2ln
bmVkIGludCBjdXJyZW50SXRlbXNDb250YWluc1BsYWNlaG9sZGVyOjE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGN1c3RvbWl6YXRpb25QYW5lbElzUnVubmluZzoxOwogICAgICAgIHVuc2lnbmVkIGlu
dCB1c2VzQ3VzdG9tU2hlZXRXaWR0aDoxOwogICAgICAgIHVuc2lnbmVkIGludCBjbGlja0FuZERy
YWdQZXJmb3Jtc0N1c3RvbWl6YXRpb246MTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2hvd3NOb0Nv
bnRleHRNZW51OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGN1cnJlbnRseUxvYWRpbmdQbGFjZWhv
bGRlcnM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVsZWdhdGVJdGVtV2l0aEl0ZW1JZGVudGlm
aWVyMjoxOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZDo0OwogICAgICAgIHVuc2lnbmVk
IGludCBrZXlib2FyZExvb3BOZWVkc1VwZGF0aW5nOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHNo
b3dIaWRlRHVyaW5nQ29uZmlndXJhdGlvbkNoYW5nZURpc2FibGVkOjE7CiB1bnNpZ25lZCBpbnQg
ZGlzcGxheU1vZGU6MjsKIHVuc2lnbmVkIGludCBzaXplTW9kZToyOwogdW5zaWduZWQgaW50IGRv
Tm90U2hvd0Jhc2VsaW5lU2VwYXJhdG9yOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGhpZGVXaXRo
b3V0UmVzaXppbmdXaW5kb3dIaW50OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGF1dG92YWxpZGF0
ZXNJdGVtc0Rpc2FibGVkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGluQXV0b3ZhbGlkYXRpb246
MTsKIHVuc2lnbmVkIGludCBsb2FkZWRNZXRyaWNzOjE7CiAgICB9IF90YkZsYWdzOwoKICAgIE5T
SW50ZWdlciBfY3VzdG9taXphdGlvblNoZWV0V2lkdGg7CiAgICBpZCBfdGJSZXNlcnZlZDsKfQoK
LSAoaWQpaW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXI7CgoKLSAodm9p
ZClpbnNlcnRJdGVtV2l0aEl0ZW1JZGVudGlmaWVyOihOU1N0cmluZyAqKWl0ZW1JZGVudGlmaWVy
IGF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKLSAodm9pZClyZW1vdmVJdGVtQXRJbmRleDooTlNJ
bnRlZ2VyKWluZGV4OwoKCi0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxOU1Rvb2xiYXJEZWxlZ2F0
ZT4pZGVsZWdhdGU7Ci0gKGlkIDxOU1Rvb2xiYXJEZWxlZ2F0ZT4pZGVsZWdhdGU7CgoKLSAodm9p
ZClzZXRWaXNpYmxlOihCT09MKXNob3duOwotIChCT09MKWlzVmlzaWJsZTsKCgotICh2b2lkKXJ1
bkN1c3RvbWl6YXRpb25QYWxldHRlOihpZClzZW5kZXI7Ci0gKEJPT0wpY3VzdG9taXphdGlvblBh
bGV0dGVJc1J1bm5pbmc7CgoKCgoKLSAodm9pZClzZXREaXNwbGF5TW9kZTooTlNUb29sYmFyRGlz
cGxheU1vZGUpZGlzcGxheU1vZGU7Ci0gKE5TVG9vbGJhckRpc3BsYXlNb2RlKWRpc3BsYXlNb2Rl
OwoKCi0gKHZvaWQpc2V0U2VsZWN0ZWRJdGVtSWRlbnRpZmllcjooTlNTdHJpbmcgKilpdGVtSWRl
bnRpZmllcjsKLSAoTlNTdHJpbmcgKilzZWxlY3RlZEl0ZW1JZGVudGlmaWVyOwoKCgoKLSAodm9p
ZClzZXRTaXplTW9kZTooTlNUb29sYmFyU2l6ZU1vZGUpc2l6ZU1vZGU7Ci0gKE5TVG9vbGJhclNp
emVNb2RlKXNpemVNb2RlOwoKCgoKCi0gKHZvaWQpc2V0U2hvd3NCYXNlbGluZVNlcGFyYXRvcjoo
Qk9PTClmbGFnOwotIChCT09MKXNob3dzQmFzZWxpbmVTZXBhcmF0b3I7CgoKLSAodm9pZClzZXRB
bGxvd3NVc2VyQ3VzdG9taXphdGlvbjooQk9PTClhbGxvd0N1c3RvbWl6YXRpb247Ci0gKEJPT0wp
YWxsb3dzVXNlckN1c3RvbWl6YXRpb247CgoKCgoKLSAoTlNTdHJpbmcgKilpZGVudGlmaWVyOwoK
Ci0gKE5TQXJyYXkgKilpdGVtczsKCgotIChOU0FycmF5ICopdmlzaWJsZUl0ZW1zOwoKCgoKCi0g
KHZvaWQpc2V0QXV0b3NhdmVzQ29uZmlndXJhdGlvbjooQk9PTClmbGFnOwotIChCT09MKWF1dG9z
YXZlc0NvbmZpZ3VyYXRpb247CgoKLSAodm9pZClzZXRDb25maWd1cmF0aW9uRnJvbURpY3Rpb25h
cnk6KE5TRGljdGlvbmFyeSAqKWNvbmZpZ0RpY3Q7Ci0gKE5TRGljdGlvbmFyeSAqKWNvbmZpZ3Vy
YXRpb25EaWN0aW9uYXJ5OwoKCgoKCi0gKHZvaWQpdmFsaWRhdGVWaXNpYmxlSXRlbXM7CgoKCkBl
bmQKCkBwcm90b2NvbCBOU1Rvb2xiYXJEZWxlZ2F0ZSA8TlNPYmplY3Q+CgoKQG9wdGlvbmFsCgot
IChOU1Rvb2xiYXJJdGVtICopdG9vbGJhcjooTlNUb29sYmFyICopdG9vbGJhciBpdGVtRm9ySXRl
bUlkZW50aWZpZXI6KE5TU3RyaW5nICopaXRlbUlkZW50aWZpZXIgd2lsbEJlSW5zZXJ0ZWRJbnRv
VG9vbGJhcjooQk9PTClmbGFnOwoKCi0gKE5TQXJyYXkgKil0b29sYmFyRGVmYXVsdEl0ZW1JZGVu
dGlmaWVyczooTlNUb29sYmFyKil0b29sYmFyOwoKCi0gKE5TQXJyYXkgKil0b29sYmFyQWxsb3dl
ZEl0ZW1JZGVudGlmaWVyczooTlNUb29sYmFyKil0b29sYmFyOwoKCkBvcHRpb25hbAoKCi0gKE5T
QXJyYXkgKil0b29sYmFyU2VsZWN0YWJsZUl0ZW1JZGVudGlmaWVyczooTlNUb29sYmFyICopdG9v
bGJhcjsKCgoKCgotICh2b2lkKXRvb2xiYXJXaWxsQWRkSXRlbTogKE5TTm90aWZpY2F0aW9uICop
bm90aWZpY2F0aW9uOwoKCi0gKHZvaWQpdG9vbGJhckRpZFJlbW92ZUl0ZW06IChOU05vdGlmaWNh
dGlvbiAqKW5vdGlmaWNhdGlvbjsKCgpAZW5kCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUb29s
YmFyV2lsbEFkZEl0ZW1Ob3RpZmljYXRpb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVG9vbGJh
ckRpZFJlbW92ZUl0ZW1Ob3RpZmljYXRpb247CiMgMTQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1Rvb2xiYXJJdGVt
LmgiIDEgMwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvTlNUb29sYmFySXRlbS5oIiAzCkBjbGFzcyBOU1Rvb2xiYXJJdGVtVmlld2VyLCBO
U01lbnVJdGVtLCBOU1ZpZXcsIE5TSW1hZ2U7CgpAaW50ZXJmYWNlIE5TVG9vbGJhckl0ZW0gOiBO
U09iamVjdCA8TlNDb3B5aW5nLCBOU1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPiB7CkBwcml2
YXRlCiAgICBOU1Rvb2xiYXIgKiBfdG9vbGJhcjsKICAgIE5TSW1hZ2UgKiBfaW1hZ2U7CiAgICBO
U1N0cmluZyAqIF9pdGVtSWRlbnRpZmllcjsKCiAgICBOU1N0cmluZyAqIF9sYWJlbDsKICAgIE5T
VGV4dEFsaWdubWVudCBfbGFiZWxBbGlnbm1lbnQ7CiAgICBOU1N0cmluZyAqIF9wYWxldHRlTGFi
ZWw7CgogICAgTlNTdHJpbmcgKiBfdG9vbFRpcDsKICAgIE5TTWVudUl0ZW0gKiBfbWVudUl0ZW1S
ZXA7CiAgICBOU0ludGVnZXIgX3RhZzsKCiAgICBzdHJ1Y3QgX190YmlGbGFncyB7CiB1bnNpZ25l
ZCBpbnQgdmlld1Jlc3BvbmRzVG9Jc0VuYWJsZWQ6MTsKIHVuc2lnbmVkIGludCB2aWV3UmVzcG9u
ZHNUb1NldEVuYWJsZWQ6MTsKIHVuc2lnbmVkIGludCB2aWV3UmVzcG9uZHNUb1RhZzoxOwogdW5z
aWduZWQgaW50IHZpZXdSZXNwb25kc1RvU2V0VGFnOjE7CiB1bnNpZ25lZCBpbnQgdmlld1Jlc3Bv
bmRzVG9BY3Rpb246MTsKIHVuc2lnbmVkIGludCB2aWV3UmVzcG9uZHNUb1NldEFjdGlvbjoxOwog
dW5zaWduZWQgaW50IHZpZXdSZXNwb25kc1RvVGFyZ2V0OjE7CiB1bnNpZ25lZCBpbnQgdmlld1Jl
c3BvbmRzVG9TZXRUYXJnZXQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgdmlld1Jlc3BvbmRzVG9J
bWFnZToxOwogICAgICAgIHVuc2lnbmVkIGludCB2aWV3UmVzcG9uZHNUb1NldEltYWdlOjE7CiB1
bnNpZ25lZCBpbnQgaXNFbmFibGVkOjE7CiB1bnNpZ25lZCBpbnQgaXNVc2VyUmVtb3ZhYmxlOjE7
CiB1bnNpZ25lZCBpbnQgbWVudUhhc0JlZW5TZXQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgbWVu
dVJlcElzRGVmYXVsdDoxOwogICAgICAgIHVuc2lnbmVkIGludCB2aWV3SGFzQmVlbkxvYWRlZDox
OwogICAgICAgIHVuc2lnbmVkIGludCBkcmF3aW5nRm9yRHJhZ0ltYWdlOjE7CiAgICAgICAgdW5z
aWduZWQgaW50IGlzQ3VzdG9tSXRlbVR5cGU6MTsKIHVuc2lnbmVkIGludCBoYXNWYWxpZGF0ZWRB
dXRvTW9kZUNvbmZpZ3VyYXRpb246MTsKIHVuc2lnbmVkIGludCB1c2VBdXRvTW9kZUNvbmZpZ3Vy
YXRpb246MTsKICAgICAgICB1bnNpZ25lZCBpbnQgUkVTRVJWRUQyOjE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGF1dG92YWxpZGF0aW9uRGlzYWJsZWQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgdGFn
SGFzQmVlblNldDoxOwogdW5zaWduZWQgaW50IHNpemVIYXNCZWVuU2V0OjE7CiAgICAgICAgdW5z
aWduZWQgaW50IHN0YXRlV2FzRGlzYWJsZWRCZWZvcmVTaGVldDoxOwogdW5zaWduZWQgaW50IFJF
U0VSVkVEOjg7CiAgICB9IF90YmlGbGFnczsKICAgIGlkIF90YmlSZXNlcnZlZDsKCiAgICBpZCBf
aXRlbVZpZXdlcjsKICAgIE5TVmlldyAqIF92aWV3OwogICAgTlNTaXplIF9taW5TaXplOwogICAg
TlNTaXplIF9tYXhTaXplOwoKICAgIGlkIF90b29sYmFySXRlbVJlc2VydmVkOwoKfQoKLSAoaWQp
aW5pdFdpdGhJdGVtSWRlbnRpZmllcjooTlNTdHJpbmcgKilpdGVtSWRlbnRpZmllcjsKCgotIChO
U1N0cmluZyAqKWl0ZW1JZGVudGlmaWVyOwotIChOU1Rvb2xiYXIgKil0b29sYmFyOwoKCgoKLSAo
dm9pZClzZXRMYWJlbDooTlNTdHJpbmcgKilsYWJlbDsKLSAoTlNTdHJpbmcgKilsYWJlbDsKCgot
ICh2b2lkKXNldFBhbGV0dGVMYWJlbDooTlNTdHJpbmcgKilwYWxldHRlTGFiZWw7Ci0gKE5TU3Ry
aW5nICopcGFsZXR0ZUxhYmVsOwoKCi0gKHZvaWQpc2V0VG9vbFRpcDooTlNTdHJpbmcqKXRvb2xU
aXA7Ci0gKE5TU3RyaW5nICopdG9vbFRpcDsKCgotICh2b2lkKXNldE1lbnVGb3JtUmVwcmVzZW50
YXRpb246KE5TTWVudUl0ZW0gKiltZW51SXRlbTsKLSAoTlNNZW51SXRlbSAqKW1lbnVGb3JtUmVw
cmVzZW50YXRpb247CgoKLSAodm9pZClzZXRUYWc6KE5TSW50ZWdlcil0YWc7Ci0gKE5TSW50ZWdl
cil0YWc7CgoKLSAodm9pZClzZXRUYXJnZXQ6KGlkKXRhcmdldDsKLSAoaWQpdGFyZ2V0OwoKCi0g
KHZvaWQpc2V0QWN0aW9uOihTRUwpYWN0aW9uOwotIChTRUwpYWN0aW9uOwoKCi0gKHZvaWQpc2V0
RW5hYmxlZDooQk9PTCllbmFibGVkOwotIChCT09MKWlzRW5hYmxlZDsKCgotICh2b2lkKXNldElt
YWdlOihOU0ltYWdlKilpbWFnZTsKLSAoTlNJbWFnZSAqKWltYWdlOwoKCi0gKHZvaWQpc2V0Vmll
dzooTlNWaWV3ICopdmlldzsKLSAoTlNWaWV3ICopdmlldzsKCgotICh2b2lkKXNldE1pblNpemU6
KE5TU2l6ZSlzaXplOwotIChOU1NpemUpbWluU2l6ZTsKCgotICh2b2lkKXNldE1heFNpemU6KE5T
U2l6ZSlzaXplOwotIChOU1NpemUpbWF4U2l6ZTsKCgoKCmVudW0gewogICBOU1Rvb2xiYXJJdGVt
VmlzaWJpbGl0eVByaW9yaXR5U3RhbmRhcmQgPSAwLAogICBOU1Rvb2xiYXJJdGVtVmlzaWJpbGl0
eVByaW9yaXR5TG93ID0gLTEwMDAsCiAgIE5TVG9vbGJhckl0ZW1WaXNpYmlsaXR5UHJpb3JpdHlI
aWdoID0gMTAwMCwKICAgTlNUb29sYmFySXRlbVZpc2liaWxpdHlQcmlvcml0eVVzZXIgPSAyMDAw
Cn07CgotICh2b2lkKXNldFZpc2liaWxpdHlQcmlvcml0eTooTlNJbnRlZ2VyKXZpc2liaWxpdHlQ
cmlvcml0eTsKLSAoTlNJbnRlZ2VyKXZpc2liaWxpdHlQcmlvcml0eTsKCgoKCgoKLSAodm9pZCl2
YWxpZGF0ZTsKCgoKCi0gKHZvaWQpc2V0QXV0b3ZhbGlkYXRlczooQk9PTClyZXNpc3RhbmNlOwot
IChCT09MKWF1dG92YWxpZGF0ZXM7CgoKCgoKCgotIChCT09MKWFsbG93c0R1cGxpY2F0ZXNJblRv
b2xiYXI7CgoKQGVuZAoKCkBpbnRlcmZhY2UgTlNPYmplY3QgKE5TVG9vbGJhckl0ZW1WYWxpZGF0
aW9uKQotIChCT09MKXZhbGlkYXRlVG9vbGJhckl0ZW06KE5TVG9vbGJhckl0ZW0gKil0aGVJdGVt
OwoKCkBlbmQKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVG9vbGJhclNlcGFyYXRvckl0ZW1J
ZGVudGlmaWVyOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1Rvb2xiYXJTcGFjZUl0ZW1JZGVudGlm
aWVyOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1Rvb2xiYXJGbGV4aWJsZVNwYWNlSXRlbUlkZW50
aWZpZXI7CgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1Rvb2xiYXJTaG93Q29sb3JzSXRlbUlkZW50
aWZpZXI7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVG9vbGJhclNob3dGb250c0l0ZW1JZGVudGlm
aWVyOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1Rvb2xiYXJDdXN0b21pemVUb29sYmFySXRlbUlk
ZW50aWZpZXI7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVG9vbGJhclByaW50SXRlbUlkZW50aWZp
ZXI7CiMgMTUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9OU1Rvb2xiYXJJdGVtR3JvdXAuaCIgMSAzCiMgMTYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1Rvb2xiYXJJ
dGVtR3JvdXAuaCIgMwpAaW50ZXJmYWNlIE5TVG9vbGJhckl0ZW1Hcm91cCA6IE5TVG9vbGJhckl0
ZW0gewogICAgQHByaXZhdGUKICAgIGlkIF9ncm91cEl0ZW1zOwogICAgc3RydWN0IHsKICAgICAg
dW5zaWduZWQgZGlydGllZExheW91dDoxOwogICAgICB1bnNpZ25lZCByZXNlcnZlZDozMTsKICAg
IH0gX2dpRmxhZ3M7CiAgICBpZCBfZ2lSZXNlcnZlZDsKfQoKCgotICh2b2lkKXNldFN1Yml0ZW1z
OihOU0FycmF5ICopc3ViaXRlbXM7Ci0gKE5TQXJyYXkgKilzdWJpdGVtczsKCkBlbmQKIyAxNTEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBL
aXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29y
ay9IZWFkZXJzL05TV2luZG93U2NyaXB0aW5nLmgiIDEgMwojIDEwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNXaW5kb3dTY3JpcHRpbmcuaCIg
MwpAY2xhc3MgTlNDbG9zZUNvbW1hbmQ7CkBjbGFzcyBOU1NjcmlwdENvbW1hbmQ7CgpAaW50ZXJm
YWNlIE5TV2luZG93KE5TU2NyaXB0aW5nKQoKCi0gKEJPT0wpaGFzQ2xvc2VCb3g7Ci0gKEJPT0wp
aGFzVGl0bGVCYXI7Ci0gKEJPT0wpaXNGbG9hdGluZ1BhbmVsOwotIChCT09MKWlzTWluaWF0dXJp
emFibGU7Ci0gKEJPT0wpaXNNb2RhbFBhbmVsOwotIChCT09MKWlzUmVzaXphYmxlOwotIChCT09M
KWlzWm9vbWFibGU7Ci0gKE5TSW50ZWdlcilvcmRlcmVkSW5kZXg7CgoKLSAodm9pZClzZXRJc01p
bmlhdHVyaXplZDooQk9PTClmbGFnOwotICh2b2lkKXNldElzVmlzaWJsZTooQk9PTClmbGFnOwot
ICh2b2lkKXNldElzWm9vbWVkOihCT09MKWZsYWc7Ci0gKHZvaWQpc2V0T3JkZXJlZEluZGV4OihO
U0ludGVnZXIpaW5kZXg7CgoKLSAoaWQpaGFuZGxlQ2xvc2VTY3JpcHRDb21tYW5kOihOU0Nsb3Nl
Q29tbWFuZCAqKWNvbW1hbmQ7Ci0gKGlkKWhhbmRsZVByaW50U2NyaXB0Q29tbWFuZDooTlNTY3Jp
cHRDb21tYW5kICopY29tbWFuZDsKLSAoaWQpaGFuZGxlU2F2ZVNjcmlwdENvbW1hbmQ6KE5TU2Ny
aXB0Q29tbWFuZCAqKWNvbW1hbmQ7CgpAZW5kCiMgMTUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1N0ZXBwZXIuaCIg
MSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9OU1N0ZXBwZXIuaCIgMwpAaW50ZXJmYWNlIE5TU3RlcHBlciA6IE5TQ29udHJvbCB7CiAg
QHByaXZhdGUKICAgIHVuc2lnbmVkIGludCBfcmVzZXJ2ZWQxOwogICAgdW5zaWduZWQgaW50IF9y
ZXNlcnZlZDI7CiAgICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVkMzsKICAgIHVuc2lnbmVkIGludCBf
cmVzZXJ2ZWQ0Owp9CgotIChkb3VibGUpbWluVmFsdWU7Ci0gKHZvaWQpc2V0TWluVmFsdWU6KGRv
dWJsZSltaW5WYWx1ZTsKCi0gKGRvdWJsZSltYXhWYWx1ZTsKLSAodm9pZClzZXRNYXhWYWx1ZToo
ZG91YmxlKW1heFZhbHVlOwoKLSAoZG91YmxlKWluY3JlbWVudDsKLSAodm9pZClzZXRJbmNyZW1l
bnQ6KGRvdWJsZSlpbmNyZW1lbnQ7CgotIChCT09MKXZhbHVlV3JhcHM7Ci0gKHZvaWQpc2V0VmFs
dWVXcmFwczooQk9PTCl2YWx1ZVdyYXBzOwoKLSAoQk9PTClhdXRvcmVwZWF0OwotICh2b2lkKXNl
dEF1dG9yZXBlYXQ6KEJPT0wpYXV0b3JlcGVhdDsKCkBlbmQKIyAxNTMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU3Rl
cHBlckNlbGwuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9OU1N0ZXBwZXJDZWxsLmgiIDMKQGludGVyZmFjZSBOU1N0ZXBwZXJD
ZWxsIDogTlNBY3Rpb25DZWxsIHsKICBAcHJpdmF0ZQogICAgZG91YmxlIF92YWx1ZTsKICAgIGRv
dWJsZSBfbWluVmFsdWU7CiAgICBkb3VibGUgX21heFZhbHVlOwogICAgZG91YmxlIF9pbmNyZW1l
bnQ7CiAgICBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCB2YWx1ZVdyYXBzOjE7CiAgICAg
ICAgdW5zaWduZWQgaW50IGF1dG9yZXBlYXQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZHJhd2lu
ZzoxOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZDoyOTsKICAgIH0gX3N0RmxhZ3M7CiAg
ICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVkMTsKICAgIHVuc2lnbmVkIGludCBfcmVzZXJ2ZWQyOwog
ICAgdW5zaWduZWQgaW50IF9yZXNlcnZlZDM7CiAgICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVkNDsK
fQoKLSAoZG91YmxlKW1pblZhbHVlOwotICh2b2lkKXNldE1pblZhbHVlOihkb3VibGUpbWluVmFs
dWU7CgotIChkb3VibGUpbWF4VmFsdWU7Ci0gKHZvaWQpc2V0TWF4VmFsdWU6KGRvdWJsZSltYXhW
YWx1ZTsKCi0gKGRvdWJsZSlpbmNyZW1lbnQ7Ci0gKHZvaWQpc2V0SW5jcmVtZW50Oihkb3VibGUp
aW5jcmVtZW50OwoKLSAoQk9PTCl2YWx1ZVdyYXBzOwotICh2b2lkKXNldFZhbHVlV3JhcHM6KEJP
T0wpdmFsdWVXcmFwczsKCi0gKEJPT0wpYXV0b3JlcGVhdDsKLSAodm9pZClzZXRBdXRvcmVwZWF0
OihCT09MKWF1dG9yZXBlYXQ7CgpAZW5kCiMgMTU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0dseXBoSW5mby5oIiAx
IDMKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFk
ZXJzL05TR2x5cGhJbmZvLmgiIDMKZW51bSB7CiAgICBOU0lkZW50aXR5TWFwcGluZ0NoYXJhY3Rl
ckNvbGxlY3Rpb24gPSAwLAogICAgTlNBZG9iZUNOUzFDaGFyYWN0ZXJDb2xsZWN0aW9uID0gMSwK
ICAgIE5TQWRvYmVHQjFDaGFyYWN0ZXJDb2xsZWN0aW9uID0gMiwKICAgIE5TQWRvYmVKYXBhbjFD
aGFyYWN0ZXJDb2xsZWN0aW9uID0gMywKICAgIE5TQWRvYmVKYXBhbjJDaGFyYWN0ZXJDb2xsZWN0
aW9uID0gNCwKICAgIE5TQWRvYmVLb3JlYTFDaGFyYWN0ZXJDb2xsZWN0aW9uID0gNSwKfTsKdHlw
ZWRlZiBOU1VJbnRlZ2VyIE5TQ2hhcmFjdGVyQ29sbGVjdGlvbjsKCkBpbnRlcmZhY2UgTlNHbHlw
aEluZm8gOiBOU09iamVjdCA8TlNDb3B5aW5nLCBOU0NvZGluZz4gewogICAgTlNTdHJpbmcgKl9i
YXNlU3RyaW5nOwp9CgoKKyAoTlNHbHlwaEluZm8gKilnbHlwaEluZm9XaXRoR2x5cGhOYW1lOihO
U1N0cmluZyAqKWdseXBoTmFtZSBmb3JGb250OihOU0ZvbnQgKilmb250IGJhc2VTdHJpbmc6KE5T
U3RyaW5nICopdGhlU3RyaW5nOwoKCisgKE5TR2x5cGhJbmZvICopZ2x5cGhJbmZvV2l0aEdseXBo
OihOU0dseXBoKWdseXBoIGZvckZvbnQ6KE5TRm9udCAqKWZvbnQgYmFzZVN0cmluZzooTlNTdHJp
bmcgKil0aGVTdHJpbmc7CgoKKyAoTlNHbHlwaEluZm8gKilnbHlwaEluZm9XaXRoQ2hhcmFjdGVy
SWRlbnRpZmllcjooTlNVSW50ZWdlciljaWQgY29sbGVjdGlvbjooTlNDaGFyYWN0ZXJDb2xsZWN0
aW9uKWNoYXJhY3RlckNvbGxlY3Rpb24gYmFzZVN0cmluZzooTlNTdHJpbmcgKil0aGVTdHJpbmc7
CgoKLSAoTlNTdHJpbmcgKilnbHlwaE5hbWU7CgoKLSAoTlNVSW50ZWdlciljaGFyYWN0ZXJJZGVu
dGlmaWVyOwoKCi0gKE5TQ2hhcmFjdGVyQ29sbGVjdGlvbiljaGFyYWN0ZXJDb2xsZWN0aW9uOwpA
ZW5kCiMgMTU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9OU1NoYWRvdy5oIiAxIDMKIyAxMyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU2hhZG93LmgiIDMKQGNsYXNz
IE5TQ29sb3I7CgoKCkBpbnRlcmZhY2UgTlNTaGFkb3cgOiBOU09iamVjdCA8TlNDb3B5aW5nLCBO
U0NvZGluZz4gewoKICAgIE5TVUludGVnZXIgX3NoYWRvd0ZsYWdzOwogICAgTlNTaXplIF9zaGFk
b3dPZmZzZXQ7CiAgICBDR0Zsb2F0IF9zaGFkb3dCbHVyUmFkaXVzOwogICAgTlNDb2xvciAqX3No
YWRvd0NvbG9yOwogICAgQ0dGbG9hdCBfcmVzZXJ2ZWRGbG9hdFszXTsKICAgIHZvaWQgKl9yZXNl
cnZlZDsKfQoKLSAoaWQpaW5pdDsKCi0gKE5TU2l6ZSlzaGFkb3dPZmZzZXQ7Ci0gKHZvaWQpc2V0
U2hhZG93T2Zmc2V0OihOU1NpemUpb2Zmc2V0OwoKLSAoQ0dGbG9hdClzaGFkb3dCbHVyUmFkaXVz
OwotICh2b2lkKXNldFNoYWRvd0JsdXJSYWRpdXM6KENHRmxvYXQpdmFsOwoKLSAoTlNDb2xvciAq
KXNoYWRvd0NvbG9yOwotICh2b2lkKXNldFNoYWRvd0NvbG9yOihOU0NvbG9yICopY29sb3I7Cgot
ICh2b2lkKXNldDsKCkBlbmQKIyAxNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQVRTVHlwZXNldHRlci5oIiAxIDMK
CgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9I
ZWFkZXJzL05TVHlwZXNldHRlci5oIiAxIDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVHlwZXNldHRlci5oIiAzCmVudW0gewogICAg
TlNUeXBlc2V0dGVyWmVyb0FkdmFuY2VtZW50QWN0aW9uID0gKDEgPDwgMCksCiAgICBOU1R5cGVz
ZXR0ZXJXaGl0ZXNwYWNlQWN0aW9uID0gKDEgPDwgMSksCiAgICBOU1R5cGVzZXR0ZXJIb3Jpem9u
dGFsVGFiQWN0aW9uID0gKDEgPDwgMiksCiAgICBOU1R5cGVzZXR0ZXJMaW5lQnJlYWtBY3Rpb24g
PSAoMSA8PCAzKSwKICAgIE5TVHlwZXNldHRlclBhcmFncmFwaEJyZWFrQWN0aW9uID0gKDEgPDwg
NCksCiAgICBOU1R5cGVzZXR0ZXJDb250YWluZXJCcmVha0FjdGlvbiA9ICgxIDw8IDUpCn07CnR5
cGVkZWYgTlNVSW50ZWdlciBOU1R5cGVzZXR0ZXJDb250cm9sQ2hhcmFjdGVyQWN0aW9uOwoKCkBp
bnRlcmZhY2UgTlNUeXBlc2V0dGVyIDogTlNPYmplY3QgewoKICAgIHZvaWQgKl9yZXNlcnZlZDsK
CgoKfQoKCgoKCgotIChCT09MKXVzZXNGb250TGVhZGluZzsKLSAodm9pZClzZXRVc2VzRm9udExl
YWRpbmc6KEJPT0wpZmxhZzsKCgoKLSAoTlNUeXBlc2V0dGVyQmVoYXZpb3IpdHlwZXNldHRlckJl
aGF2aW9yOwotICh2b2lkKXNldFR5cGVzZXR0ZXJCZWhhdmlvcjooTlNUeXBlc2V0dGVyQmVoYXZp
b3IpYmVoYXZpb3I7CgoKCi0gKGZsb2F0KWh5cGhlbmF0aW9uRmFjdG9yOwotICh2b2lkKXNldEh5
cGhlbmF0aW9uRmFjdG9yOihmbG9hdClmYWN0b3I7CgoKCgotIChDR0Zsb2F0KWxpbmVGcmFnbWVu
dFBhZGRpbmc7Ci0gKHZvaWQpc2V0TGluZUZyYWdtZW50UGFkZGluZzooQ0dGbG9hdClwYWRkaW5n
OwoKCi0gKE5TRm9udCAqKXN1YnN0aXR1dGVGb250Rm9yRm9udDooTlNGb250ICopb3JpZ2luYWxG
b250OwoKCgoKLSAoTlNUZXh0VGFiICopdGV4dFRhYkZvckdseXBoTG9jYXRpb246KENHRmxvYXQp
Z2x5cGhMb2NhdGlvbiB3cml0aW5nRGlyZWN0aW9uOihOU1dyaXRpbmdEaXJlY3Rpb24pZGlyZWN0
aW9uIG1heExvY2F0aW9uOihDR0Zsb2F0KW1heExvY2F0aW9uOwoKCgoKLSAoQk9PTCliaWRpUHJv
Y2Vzc2luZ0VuYWJsZWQ7Ci0gKHZvaWQpc2V0QmlkaVByb2Nlc3NpbmdFbmFibGVkOihCT09MKWZs
YWc7CgoKLSAodm9pZClzZXRBdHRyaWJ1dGVkU3RyaW5nOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilh
dHRyU3RyaW5nOwotIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1dGVkU3RyaW5nOwotICh2
b2lkKXNldFBhcmFncmFwaEdseXBoUmFuZ2U6KE5TUmFuZ2UpcGFyYWdyYXBoUmFuZ2Ugc2VwYXJh
dG9yR2x5cGhSYW5nZTooTlNSYW5nZSlwYXJhZ3JhcGhTZXBhcmF0b3JSYW5nZTsKLSAoTlNSYW5n
ZSlwYXJhZ3JhcGhHbHlwaFJhbmdlOwotIChOU1JhbmdlKXBhcmFncmFwaFNlcGFyYXRvckdseXBo
UmFuZ2U7Ci0gKE5TUmFuZ2UpcGFyYWdyYXBoQ2hhcmFjdGVyUmFuZ2U7Ci0gKE5TUmFuZ2UpcGFy
YWdyYXBoU2VwYXJhdG9yQ2hhcmFjdGVyUmFuZ2U7CgoKCgotIChOU1VJbnRlZ2VyKWxheW91dFBh
cmFncmFwaEF0UG9pbnQ6KE5TUG9pbnRQb2ludGVyKWxpbmVGcmFnbWVudE9yaWdpbjsKCgotICh2
b2lkKWJlZ2luUGFyYWdyYXBoOwotICh2b2lkKWVuZFBhcmFncmFwaDsKLSAodm9pZCliZWdpbkxp
bmVXaXRoR2x5cGhBdEluZGV4OihOU1VJbnRlZ2VyKWdseXBoSW5kZXg7Ci0gKHZvaWQpZW5kTGlu
ZVdpdGhHbHlwaFJhbmdlOihOU1JhbmdlKWxpbmVHbHlwaFJhbmdlOwoKCi0gKENHRmxvYXQpbGlu
ZVNwYWNpbmdBZnRlckdseXBoQXRJbmRleDooTlNVSW50ZWdlcilnbHlwaEluZGV4IHdpdGhQcm9w
b3NlZExpbmVGcmFnbWVudFJlY3Q6KE5TUmVjdClyZWN0OwotIChDR0Zsb2F0KXBhcmFncmFwaFNw
YWNpbmdCZWZvcmVHbHlwaEF0SW5kZXg6KE5TVUludGVnZXIpZ2x5cGhJbmRleCB3aXRoUHJvcG9z
ZWRMaW5lRnJhZ21lbnRSZWN0OihOU1JlY3QpcmVjdDsKLSAoQ0dGbG9hdClwYXJhZ3JhcGhTcGFj
aW5nQWZ0ZXJHbHlwaEF0SW5kZXg6KE5TVUludGVnZXIpZ2x5cGhJbmRleCB3aXRoUHJvcG9zZWRM
aW5lRnJhZ21lbnRSZWN0OihOU1JlY3QpcmVjdDsKCgoKCi0gKHZvaWQpZ2V0TGluZUZyYWdtZW50
UmVjdDooTlNSZWN0UG9pbnRlcilsaW5lRnJhZ21lbnRSZWN0IHVzZWRSZWN0OihOU1JlY3RQb2lu
dGVyKWxpbmVGcmFnbWVudFVzZWRSZWN0IGZvclBhcmFncmFwaFNlcGFyYXRvckdseXBoUmFuZ2U6
KE5TUmFuZ2UpcGFyYWdyYXBoU2VwYXJhdG9yR2x5cGhSYW5nZSBhdFByb3Bvc2VkT3JpZ2luOihO
U1BvaW50KWxpbmVPcmlnaW47CgoKCgotIChOU0RpY3Rpb25hcnkgKilhdHRyaWJ1dGVzRm9yRXh0
cmFMaW5lRnJhZ21lbnQ7CgoKCgotIChOU1R5cGVzZXR0ZXJDb250cm9sQ2hhcmFjdGVyQWN0aW9u
KWFjdGlvbkZvckNvbnRyb2xDaGFyYWN0ZXJBdEluZGV4OihOU1VJbnRlZ2VyKWNoYXJJbmRleDsK
CgoKLSAoTlNMYXlvdXRNYW5hZ2VyICopbGF5b3V0TWFuYWdlcjsKLSAoTlNBcnJheSAqKXRleHRD
b250YWluZXJzOwotIChOU1RleHRDb250YWluZXIgKiljdXJyZW50VGV4dENvbnRhaW5lcjsKLSAo
TlNQYXJhZ3JhcGhTdHlsZSAqKWN1cnJlbnRQYXJhZ3JhcGhTdHlsZTsKCgoKLSAodm9pZClzZXRI
YXJkSW52YWxpZGF0aW9uOihCT09MKWZsYWcgZm9yR2x5cGhSYW5nZTooTlNSYW5nZSlnbHlwaFJh
bmdlOwoKCgoKLSAodm9pZClsYXlvdXRHbHlwaHNJbkxheW91dE1hbmFnZXI6KE5TTGF5b3V0TWFu
YWdlciAqKWxheW91dE1hbmFnZXIgc3RhcnRpbmdBdEdseXBoSW5kZXg6KE5TVUludGVnZXIpc3Rh
cnRHbHlwaEluZGV4IG1heE51bWJlck9mTGluZUZyYWdtZW50czooTlNVSW50ZWdlciltYXhOdW1M
aW5lcyBuZXh0R2x5cGhJbmRleDooTlNVSW50ZWdlciAqKW5leHRHbHlwaDsKCgoKLSAoTlNSYW5n
ZSlsYXlvdXRDaGFyYWN0ZXJzSW5SYW5nZTooTlNSYW5nZSljaGFyYWN0ZXJSYW5nZSBmb3JMYXlv
dXRNYW5hZ2VyOihOU0xheW91dE1hbmFnZXIgKilsYXlvdXRNYW5hZ2VyIG1heGltdW1OdW1iZXJP
ZkxpbmVGcmFnbWVudHM6KE5TVUludGVnZXIpbWF4TnVtTGluZXMgOwoKCgorIChOU1NpemUpcHJp
bnRpbmdBZGp1c3RtZW50SW5MYXlvdXRNYW5hZ2VyOihOU0xheW91dE1hbmFnZXIgKilsYXlvdXRN
Z3IgZm9yTm9taW5hbGx5U3BhY2VkR2x5cGhSYW5nZTooTlNSYW5nZSlub21pbmFsbHlTcGFjZWRH
bHlwaHNSYW5nZSBwYWNrZWRHbHlwaHM6KGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwYWNrZWRHbHlw
aHMgY291bnQ6KE5TVUludGVnZXIpcGFja2VkR2x5cGhzQ291bnQ7CgotIChDR0Zsb2F0KWJhc2Vs
aW5lT2Zmc2V0SW5MYXlvdXRNYW5hZ2VyOihOU0xheW91dE1hbmFnZXIgKilsYXlvdXRNZ3IgZ2x5
cGhJbmRleDooTlNVSW50ZWdlcilnbHlwaEluZGV4OwoKCgorIChpZClzaGFyZWRTeXN0ZW1UeXBl
c2V0dGVyOwoKKyAoaWQpc2hhcmVkU3lzdGVtVHlwZXNldHRlckZvckJlaGF2aW9yOihOU1R5cGVz
ZXR0ZXJCZWhhdmlvcil0aGVCZWhhdmlvcjsKKyAoTlNUeXBlc2V0dGVyQmVoYXZpb3IpZGVmYXVs
dFR5cGVzZXR0ZXJCZWhhdmlvcjsKCkBlbmQKCgoKQGludGVyZmFjZSBOU1R5cGVzZXR0ZXIgKE5T
TGF5b3V0UGhhc2VJbnRlcmZhY2UpCgotICh2b2lkKXdpbGxTZXRMaW5lRnJhZ21lbnRSZWN0OihO
U1JlY3RQb2ludGVyKWxpbmVSZWN0IGZvckdseXBoUmFuZ2U6KE5TUmFuZ2UpZ2x5cGhSYW5nZSB1
c2VkUmVjdDooTlNSZWN0UG9pbnRlcil1c2VkUmVjdCBiYXNlbGluZU9mZnNldDooQ0dGbG9hdCAq
KWJhc2VsaW5lT2Zmc2V0OwoKLSAoQk9PTClzaG91bGRCcmVha0xpbmVCeVdvcmRCZWZvcmVDaGFy
YWN0ZXJBdEluZGV4OihOU1VJbnRlZ2VyKWNoYXJJbmRleDsKLSAoQk9PTClzaG91bGRCcmVha0xp
bmVCeUh5cGhlbmF0aW5nQmVmb3JlQ2hhcmFjdGVyQXRJbmRleDooTlNVSW50ZWdlciljaGFySW5k
ZXg7CgotIChmbG9hdCloeXBoZW5hdGlvbkZhY3RvckZvckdseXBoQXRJbmRleDooTlNVSW50ZWdl
cilnbHlwaEluZGV4OwotIChVVEYzMkNoYXIpaHlwaGVuQ2hhcmFjdGVyRm9yR2x5cGhBdEluZGV4
OihOU1VJbnRlZ2VyKWdseXBoSW5kZXg7CgotIChOU1JlY3QpYm91bmRpbmdCb3hGb3JDb250cm9s
R2x5cGhBdEluZGV4OihOU1VJbnRlZ2VyKWdseXBoSW5kZXggZm9yVGV4dENvbnRhaW5lcjooTlNU
ZXh0Q29udGFpbmVyICopdGV4dENvbnRhaW5lciBwcm9wb3NlZExpbmVGcmFnbWVudDooTlNSZWN0
KXByb3Bvc2VkUmVjdCBnbHlwaFBvc2l0aW9uOihOU1BvaW50KWdseXBoUG9zaXRpb24gY2hhcmFj
dGVySW5kZXg6KE5TVUludGVnZXIpY2hhckluZGV4OwpAZW5kCgoKQGludGVyZmFjZSBOU1R5cGVz
ZXR0ZXIgKE5TR2x5cGhTdG9yYWdlSW50ZXJmYWNlKQoKLSAoTlNSYW5nZSljaGFyYWN0ZXJSYW5n
ZUZvckdseXBoUmFuZ2U6KE5TUmFuZ2UpZ2x5cGhSYW5nZSBhY3R1YWxHbHlwaFJhbmdlOihOU1Jh
bmdlUG9pbnRlcilhY3R1YWxHbHlwaFJhbmdlOwotIChOU1JhbmdlKWdseXBoUmFuZ2VGb3JDaGFy
YWN0ZXJSYW5nZTooTlNSYW5nZSljaGFyUmFuZ2UgYWN0dWFsQ2hhcmFjdGVyUmFuZ2U6KE5TUmFu
Z2VQb2ludGVyKWFjdHVhbENoYXJSYW5nZTsKCgotIChOU1VJbnRlZ2VyKWdldEdseXBoc0luUmFu
Z2U6KE5TUmFuZ2UpZ2x5cGhzUmFuZ2UgZ2x5cGhzOihOU0dseXBoICopZ2x5cGhCdWZmZXIgY2hh
cmFjdGVySW5kZXhlczooTlNVSW50ZWdlciAqKWNoYXJJbmRleEJ1ZmZlciBnbHlwaEluc2NyaXB0
aW9uczooTlNHbHlwaEluc2NyaXB0aW9uICopaW5zY3JpYmVCdWZmZXIgZWxhc3RpY0JpdHM6KEJP
T0wgKillbGFzdGljQnVmZmVyIGJpZGlMZXZlbHM6KHVuc2lnbmVkIGNoYXIgKiliaWRpTGV2ZWxC
dWZmZXI7CgoKCgotICh2b2lkKWdldExpbmVGcmFnbWVudFJlY3Q6KE5TUmVjdFBvaW50ZXIpbGlu
ZUZyYWdtZW50UmVjdCB1c2VkUmVjdDooTlNSZWN0UG9pbnRlcilsaW5lRnJhZ21lbnRVc2VkUmVj
dCByZW1haW5pbmdSZWN0OihOU1JlY3RQb2ludGVyKXJlbWFpbmluZ1JlY3QgZm9yU3RhcnRpbmdH
bHlwaEF0SW5kZXg6KE5TVUludGVnZXIpc3RhcnRpbmdHbHlwaEluZGV4IHByb3Bvc2VkUmVjdDoo
TlNSZWN0KXByb3Bvc2VkUmVjdCBsaW5lU3BhY2luZzooQ0dGbG9hdClsaW5lU3BhY2luZyBwYXJh
Z3JhcGhTcGFjaW5nQmVmb3JlOihDR0Zsb2F0KXBhcmFncmFwaFNwYWNpbmdCZWZvcmUgcGFyYWdy
YXBoU3BhY2luZ0FmdGVyOihDR0Zsb2F0KXBhcmFncmFwaFNwYWNpbmdBZnRlcjsKCgotICh2b2lk
KXNldExpbmVGcmFnbWVudFJlY3Q6KE5TUmVjdClmcmFnbWVudFJlY3QgZm9yR2x5cGhSYW5nZToo
TlNSYW5nZSlnbHlwaFJhbmdlIHVzZWRSZWN0OihOU1JlY3QpdXNlZFJlY3QgYmFzZWxpbmVPZmZz
ZXQ6KENHRmxvYXQpYmFzZWxpbmVPZmZzZXQ7Ci0gKHZvaWQpc3Vic3RpdHV0ZUdseXBoc0luUmFu
Z2U6KE5TUmFuZ2UpZ2x5cGhSYW5nZSB3aXRoR2x5cGhzOihOU0dseXBoICopZ2x5cGhzOwotICh2
b2lkKWluc2VydEdseXBoOihOU0dseXBoKWdseXBoIGF0R2x5cGhJbmRleDooTlNVSW50ZWdlciln
bHlwaEluZGV4IGNoYXJhY3RlckluZGV4OihOU1VJbnRlZ2VyKWNoYXJhY3RlckluZGV4OwotICh2
b2lkKWRlbGV0ZUdseXBoc0luUmFuZ2U6KE5TUmFuZ2UpZ2x5cGhSYW5nZTsKLSAodm9pZClzZXRO
b3RTaG93bkF0dHJpYnV0ZTooQk9PTClmbGFnIGZvckdseXBoUmFuZ2U6KE5TUmFuZ2UpZ2x5cGhS
YW5nZTsKLSAodm9pZClzZXREcmF3c091dHNpZGVMaW5lRnJhZ21lbnQ6KEJPT0wpZmxhZyBmb3JH
bHlwaFJhbmdlOihOU1JhbmdlKWdseXBoUmFuZ2U7Ci0gKHZvaWQpc2V0TG9jYXRpb246KE5TUG9p
bnQpbG9jYXRpb24gd2l0aEFkdmFuY2VtZW50czooY29uc3QgQ0dGbG9hdCAqKWFkdmFuY2VtZW50
cyBmb3JTdGFydE9mR2x5cGhSYW5nZTooTlNSYW5nZSlnbHlwaFJhbmdlOwotICh2b2lkKXNldEF0
dGFjaG1lbnRTaXplOihOU1NpemUpYXR0YWNobWVudFNpemUgZm9yR2x5cGhSYW5nZTooTlNSYW5n
ZSlnbHlwaFJhbmdlOwotICh2b2lkKXNldEJpZGlMZXZlbHM6KGNvbnN0IHVpbnQ4X3QgKilsZXZl
bHMgZm9yR2x5cGhSYW5nZTooTlNSYW5nZSlnbHlwaFJhbmdlOwpAZW5kCiMgOSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQVRTVHlwZXNldHRl
ci5oIiAyIDMKCgoKQGludGVyZmFjZSBOU0FUU1R5cGVzZXR0ZXIgOiBOU1R5cGVzZXR0ZXIgewoK
ICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZzsKCiAgICBOU1JhbmdlIHBh
cmFncmFwaEdseXBoUmFuZ2U7CgogICAgTlNSYW5nZSBwYXJhZ3JhcGhTZXBhcmF0b3JHbHlwaFJh
bmdlOwoKICAgIENHRmxvYXQgbGluZUZyYWdtZW50UGFkZGluZzsKCgogICAgTlNMYXlvdXRNYW5h
Z2VyICpsYXlvdXRNYW5hZ2VyOwogICAgTlNBcnJheSAqdGV4dENvbnRhaW5lcnM7CgoKICAgIE5T
VGV4dENvbnRhaW5lciAqY3VycmVudFRleHRDb250YWluZXI7CiAgICBOU1VJbnRlZ2VyIGN1cnJl
bnRUZXh0Q29udGFpbmVySW5kZXg7CiAgICBOU1NpemUgY3VycmVudFRleHRDb250YWluZXJTaXpl
OwoKCiAgICBOU1BhcmFncmFwaFN0eWxlICpjdXJyZW50UGFyYWdyYXBoU3R5bGU7CgpAcHJpdmF0
ZQogICAgdm9pZCAqX2F0c1Jlc2VydmVkWzhdOwogICAgaWQgX3ByaXZhdGU7Cn0KCgorIChpZClz
aGFyZWRUeXBlc2V0dGVyOwpAZW5kCgpAaW50ZXJmYWNlIE5TQVRTVHlwZXNldHRlciAoTlNQYW50
aGVyQ29tcGF0aWJpbGl0eSkKCgotIChOU1JlY3QpbGluZUZyYWdtZW50UmVjdEZvclByb3Bvc2Vk
UmVjdDooTlNSZWN0KXByb3Bvc2VkUmVjdCByZW1haW5pbmdSZWN0OihOU1JlY3RQb2ludGVyKXJl
bWFpbmluZ1JlY3QgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwpAZW5kCiMgMTU3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0Lmgi
IDIgMwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvTlNTZWFyY2hGaWVsZC5oIiAxIDMKIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TU2VhcmNoRmllbGQuaCIgMwpAaW50ZXJmYWNl
IE5TU2VhcmNoRmllbGQgOiBOU1RleHRGaWVsZCB7CiAgQHByaXZhdGUKICAgIHVuc2lnbmVkIGlu
dCBfcmVzZXJ2ZWQxOwogICAgdW5zaWduZWQgaW50IF9yZXNlcnZlZDI7CiAgICB1bnNpZ25lZCBp
bnQgX3Jlc2VydmVkMzsKICAgIHVuc2lnbmVkIGludCBfcmVzZXJ2ZWQ0Owp9CgotICh2b2lkKSBz
ZXRSZWNlbnRTZWFyY2hlczooTlNBcnJheSopc2VhcmNoZXM7Ci0gKE5TQXJyYXkqKSByZWNlbnRT
ZWFyY2hlczsKCgotICh2b2lkKSBzZXRSZWNlbnRzQXV0b3NhdmVOYW1lOihOU1N0cmluZyopc3Ry
aW5nOwotIChOU1N0cmluZyopIHJlY2VudHNBdXRvc2F2ZU5hbWU7CgoKQGVuZAojIDE1OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5o
IiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvTlNTZWFyY2hGaWVsZENlbGwuaCIgMSAzCiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1NlYXJjaEZpZWxkQ2VsbC5oIiAzCiNk
ZWZpbmUgTlNTZWFyY2hGaWVsZFJlY2VudHNUaXRsZU1lbnVJdGVtVGFnIDEwMDAKCgojZGVmaW5l
IE5TU2VhcmNoRmllbGRSZWNlbnRzTWVudUl0ZW1UYWcgMTAwMQoKCiNkZWZpbmUgTlNTZWFyY2hG
aWVsZENsZWFyUmVjZW50c01lbnVJdGVtVGFnIDEwMDIKCgojZGVmaW5lIE5TU2VhcmNoRmllbGRO
b1JlY2VudHNNZW51SXRlbVRhZyAxMDAzCgoKQGNsYXNzIE5TQnV0dG9uQ2VsbCwgTlNNZW51LCBO
U011dGFibGVBcnJheSwgTlNUaW1lcjsKCkBpbnRlcmZhY2UgTlNTZWFyY2hGaWVsZENlbGwgOiBO
U1RleHRGaWVsZENlbGwgewogIEBwcml2YXRlCiAgICBzdHJ1Y3QgX19zZkZsYWdzIHsKIHVuc2ln
bmVkIGludCBzZW5kc1dob2xlU2VhcmNoU3RyaW5nOjE7CiB1bnNpZ25lZCBpbnQgbWF4aW11bVJl
Y2VudHM6ODsKIHVuc2lnbmVkIGludCBjYW5jZWxWaXNpYmxlOjE7CiB1bnNpZ25lZCBpbnQgcmVz
ZXJ2ZWQyOjI7CiB1bnNpZ25lZCBpbnQgZGlzYWJsZVRleHQ6MTsKIHVuc2lnbmVkIGludCBtZW51
VHJhY2tpbmc6MTsKIHVuc2lnbmVkIGludCBkZWZlcnJlZFVwZGF0ZToxOwogdW5zaWduZWQgaW50
IHNlbmRzSW1tZWRpYXRlbHk6MTsKCiB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQ6MTY7CiAgICB9IF9z
ZkZsYWdzOwogICAgTlNCdXR0b25DZWxsKiBfc2VhcmNoQnV0dG9uQ2VsbDsKICAgIE5TQnV0dG9u
Q2VsbCogX2NhbmNlbEJ1dHRvbkNlbGw7CiAgICBOU01lbnUqIF9zZWFyY2hNZW51VGVtcGxhdGU7
CiAgICBOU1N0cmluZyogX3JlY2VudHNBdXRvc2F2ZU5hbWU7CiAgICBOU011dGFibGVBcnJheSog
X3JlY2VudFNlYXJjaGVzOwogICAgTlNNZW51KiBfc2VhcmNoTWVudTsKICAgIE5TVGltZXIqIF9w
YXJ0aWFsU3RyaW5nVGltZXI7CiAgICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVkMTsKICAgIHVuc2ln
bmVkIGludCBfcmVzZXJ2ZWQyOwogICAgdW5zaWduZWQgaW50IF9yZXNlcnZlZDM7CiAgICB1bnNp
Z25lZCBpbnQgX3Jlc2VydmVkNDsKfQoKLSAoTlNCdXR0b25DZWxsKikgc2VhcmNoQnV0dG9uQ2Vs
bDsKLSAodm9pZCkgc2V0U2VhcmNoQnV0dG9uQ2VsbDooTlNCdXR0b25DZWxsKiljZWxsOwoKCi0g
KE5TQnV0dG9uQ2VsbCopIGNhbmNlbEJ1dHRvbkNlbGw7Ci0gKHZvaWQpIHNldENhbmNlbEJ1dHRv
bkNlbGw6KE5TQnV0dG9uQ2VsbCopY2VsbDsKCgotICh2b2lkKSByZXNldFNlYXJjaEJ1dHRvbkNl
bGw7Ci0gKHZvaWQpIHJlc2V0Q2FuY2VsQnV0dG9uQ2VsbDsKCgotIChOU1JlY3QpIHNlYXJjaFRl
eHRSZWN0Rm9yQm91bmRzOihOU1JlY3QpcmVjdDsKLSAoTlNSZWN0KSBzZWFyY2hCdXR0b25SZWN0
Rm9yQm91bmRzOihOU1JlY3QpcmVjdDsKLSAoTlNSZWN0KSBjYW5jZWxCdXR0b25SZWN0Rm9yQm91
bmRzOihOU1JlY3QpcmVjdDsKCgotICh2b2lkKSBzZXRTZWFyY2hNZW51VGVtcGxhdGU6KE5TTWVu
dSopbWVudTsKLSAoTlNNZW51KilzZWFyY2hNZW51VGVtcGxhdGU7CgoKLSAodm9pZCkgc2V0U2Vu
ZHNXaG9sZVNlYXJjaFN0cmluZzooQk9PTClmbGFnOwotIChCT09MKSBzZW5kc1dob2xlU2VhcmNo
U3RyaW5nOwoKCi0gKHZvaWQpIHNldE1heGltdW1SZWNlbnRzOihOU0ludGVnZXIpbWF4UmVjZW50
czsKLSAoTlNJbnRlZ2VyKSBtYXhpbXVtUmVjZW50czsKCgotICh2b2lkKSBzZXRSZWNlbnRTZWFy
Y2hlczooTlNBcnJheSopc2VhcmNoZXM7Ci0gKE5TQXJyYXkqKSByZWNlbnRTZWFyY2hlczsKCgot
ICh2b2lkKSBzZXRSZWNlbnRzQXV0b3NhdmVOYW1lOihOU1N0cmluZyopc3RyaW5nOwotIChOU1N0
cmluZyopIHJlY2VudHNBdXRvc2F2ZU5hbWU7CgoKCi0gKEJPT0wpIHNlbmRzU2VhcmNoU3RyaW5n
SW1tZWRpYXRlbHk7Ci0gKHZvaWQpIHNldFNlbmRzU2VhcmNoU3RyaW5nSW1tZWRpYXRlbHk6KEJP
T0wpZmxhZzsKCgpAZW5kCiMgMTYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0NvbnRyb2xsZXIuaCIgMSAzCgoKCgoK
CgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9OU0tleVZhbHVlQmluZGluZy5oIiAxIDMKIyAxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TS2V5VmFsdWVCaW5kaW5nLmgiIDMKQGNsYXNz
IE5TQXJyYXksIE5TRGljdGlvbmFyeSwgTlNTdHJpbmc7CgpleHRlcm4gIkMiIGlkIE5TTXVsdGlw
bGVWYWx1ZXNNYXJrZXI7CmV4dGVybiAiQyIgaWQgTlNOb1NlbGVjdGlvbk1hcmtlcjsKZXh0ZXJu
ICJDIiBpZCBOU05vdEFwcGxpY2FibGVNYXJrZXI7CgpleHRlcm4gIkMiIEJPT0wgTlNJc0NvbnRy
b2xsZXJNYXJrZXIoaWQgb2JqZWN0KTsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpOU09ic2VydmVk
T2JqZWN0S2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNPYnNlcnZlZEtleVBhdGhLZXkgOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpOU09wdGlvbnNLZXkgOwoKQGludGVyZmFjZSBOU09iamVjdCAo
TlNLZXlWYWx1ZUJpbmRpbmdDcmVhdGlvbikKCisgKHZvaWQpZXhwb3NlQmluZGluZzooTlNTdHJp
bmcgKiliaW5kaW5nOwotIChOU0FycmF5ICopZXhwb3NlZEJpbmRpbmdzOwotIChDbGFzcyl2YWx1
ZUNsYXNzRm9yQmluZGluZzooTlNTdHJpbmcgKiliaW5kaW5nOwoKCgotICh2b2lkKWJpbmQ6KE5T
U3RyaW5nICopYmluZGluZyB0b09iamVjdDooaWQpb2JzZXJ2YWJsZSB3aXRoS2V5UGF0aDooTlNT
dHJpbmcgKilrZXlQYXRoIG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnM7Ci0gKHZvaWQp
dW5iaW5kOihOU1N0cmluZyAqKWJpbmRpbmc7CgoKCgotIChOU0RpY3Rpb25hcnkgKilpbmZvRm9y
QmluZGluZzooTlNTdHJpbmcgKiliaW5kaW5nOwojIDUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNLZXlWYWx1ZUJpbmRpbmcuaCIgMwotIChO
U0FycmF5ICopb3B0aW9uRGVzY3JpcHRpb25zRm9yQmluZGluZzooTlNTdHJpbmcgKilhQmluZGlu
ZzsKCgoKQGVuZAoKQGludGVyZmFjZSBOU09iamVjdCAoTlNQbGFjZWhvbGRlcnMpCgorICh2b2lk
KXNldERlZmF1bHRQbGFjZWhvbGRlcjooaWQpcGxhY2Vob2xkZXIgZm9yTWFya2VyOihpZCltYXJr
ZXIgd2l0aEJpbmRpbmc6KE5TU3RyaW5nICopYmluZGluZzsKKyAoaWQpZGVmYXVsdFBsYWNlaG9s
ZGVyRm9yTWFya2VyOihpZCltYXJrZXIgd2l0aEJpbmRpbmc6KE5TU3RyaW5nICopYmluZGluZzsK
CkBlbmQKCgpAaW50ZXJmYWNlIE5TT2JqZWN0IChOU0VkaXRvclJlZ2lzdHJhdGlvbikKCi0gKHZv
aWQpb2JqZWN0RGlkQmVnaW5FZGl0aW5nOihpZCllZGl0b3I7Ci0gKHZvaWQpb2JqZWN0RGlkRW5k
RWRpdGluZzooaWQpZWRpdG9yOwoKQGVuZAoKCkBpbnRlcmZhY2UgTlNPYmplY3QgKE5TRWRpdG9y
KQoKLSAodm9pZClkaXNjYXJkRWRpdGluZzsKLSAoQk9PTCljb21taXRFZGl0aW5nOwojIDg4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNLZXlW
YWx1ZUJpbmRpbmcuaCIgMwotICh2b2lkKWNvbW1pdEVkaXRpbmdXaXRoRGVsZWdhdGU6KGlkKWRl
bGVnYXRlIGRpZENvbW1pdFNlbGVjdG9yOihTRUwpZGlkQ29tbWl0U2VsZWN0b3IgY29udGV4dElu
Zm86KHZvaWQgKiljb250ZXh0SW5mbzsKCgoKQGVuZAoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5T
QWxpZ25tZW50QmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQWx0ZXJuYXRlSW1hZ2VC
aW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNBbHRlcm5hdGVUaXRsZUJpbmRpbmcgOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpOU0FuaW1hdGVCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqTlNBbmltYXRpb25EZWxheUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0FyZ3Vt
ZW50QmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQXR0cmlidXRlZFN0cmluZ0JpbmRp
bmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0NvbnRlbnRBcnJheUJpbmRpbmcgOwpleHRlcm4g
IkMiIE5TU3RyaW5nICpOU0NvbnRlbnRBcnJheUZvck11bHRpcGxlU2VsZWN0aW9uQmluZGluZyA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQ29udGVudEJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICpOU0NvbnRlbnREaWN0aW9uYXJ5QmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5T
Q29udGVudEhlaWdodEJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0NvbnRlbnRPYmpl
Y3RCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNDb250ZW50T2JqZWN0c0JpbmRpbmcg
OwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0NvbnRlbnRTZXRCaW5kaW5nIDsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqTlNDb250ZW50VmFsdWVzQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5T
Q29udGVudFdpZHRoQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TQ3JpdGljYWxWYWx1
ZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0RhdGFCaW5kaW5nIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNEaXNwbGF5UGF0dGVyblRpdGxlQmluZGluZyA7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKk5TRGlzcGxheVBhdHRlcm5WYWx1ZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU0RvY3VtZW50RWRpdGVkQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRG91Ymxl
Q2xpY2tBcmd1bWVudEJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0RvdWJsZUNsaWNr
VGFyZ2V0QmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRWRpdGFibGVCaW5kaW5nIDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNFbmFibGVkQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJp
bmcgKk5TRXhjbHVkZWRLZXlzQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRmlsdGVy
UHJlZGljYXRlQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRm9udEJpbmRpbmcgOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpOU0ZvbnRCb2xkQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJp
bmcgKk5TRm9udEZhbWlseU5hbWVCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGb250
SXRhbGljQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRm9udE5hbWVCaW5kaW5nIDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNGb250U2l6ZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICpOU0hlYWRlclRpdGxlQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TSGlkZGVu
QmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TSW1hZ2VCaW5kaW5nIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNJbmNsdWRlZEtleXNCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
TlNJbml0aWFsS2V5QmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TSW5pdGlhbFZhbHVl
QmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TSXNJbmRldGVybWluYXRlQmluZGluZyA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TTGFiZWxCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqTlNMb2NhbGl6ZWRLZXlEaWN0aW9uYXJ5QmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcg
Kk5TTWFuYWdlZE9iamVjdENvbnRleHRCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNN
YXhpbXVtUmVjZW50c0JpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU01heFZhbHVlQmlu
ZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TTWF4V2lkdGhCaW5kaW5nIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNNaW5WYWx1ZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU01p
bldpZHRoQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TTWl4ZWRTdGF0ZUltYWdlQmlu
ZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TT2ZmU3RhdGVJbWFnZUJpbmRpbmcgOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU09uU3RhdGVJbWFnZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICpOU1ByZWRpY2F0ZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1JlY2VudFNl
YXJjaGVzQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TUmVwcmVzZW50ZWRGaWxlbmFt
ZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1Jvd0hlaWdodEJpbmRpbmcgOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU1NlbGVjdGVkSWRlbnRpZmllckJpbmRpbmcgOwpleHRlcm4gIkMi
IE5TU3RyaW5nICpOU1NlbGVjdGVkSW5kZXhCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
TlNTZWxlY3RlZExhYmVsQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TU2VsZWN0ZWRP
YmplY3RCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNTZWxlY3RlZE9iamVjdHNCaW5k
aW5nIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNTZWxlY3RlZFRhZ0JpbmRpbmcgOwpleHRlcm4g
IkMiIE5TU3RyaW5nICpOU1NlbGVjdGVkVmFsdWVCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqTlNTZWxlY3RlZFZhbHVlc0JpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1NlbGVj
dGlvbkluZGV4ZXNCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNTZWxlY3Rpb25JbmRl
eFBhdGhzQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TU29ydERlc2NyaXB0b3JzQmlu
ZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVGFyZ2V0QmluZGluZyA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKk5TVGV4dENvbG9yQmluZGluZyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVGl0
bGVCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUb29sVGlwQmluZGluZyA7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKk5TVHJhbnNwYXJlbnRCaW5kaW5nIDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqTlNWYWx1ZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1ZhbHVlUGF0aEJpbmRp
bmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1ZhbHVlVVJMQmluZGluZyA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKk5TVmlzaWJsZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1dhcm5p
bmdWYWx1ZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU1dpZHRoQmluZGluZyA7CgoK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNBbGxvd3NFZGl0aW5nTXVsdGlwbGVWYWx1ZXNTZWxlY3Rp
b25CaW5kaW5nT3B0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNBbGxvd3NOdWxsQXJndW1l
bnRCaW5kaW5nT3B0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNBbHdheXNQcmVzZW50c0Fw
cGxpY2F0aW9uTW9kYWxBbGVydHNCaW5kaW5nT3B0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAq
TlNDb25kaXRpb25hbGx5U2V0c0VkaXRhYmxlQmluZGluZ09wdGlvbiA7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKk5TQ29uZGl0aW9uYWxseVNldHNFbmFibGVkQmluZGluZ09wdGlvbiA7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKk5TQ29uZGl0aW9uYWxseVNldHNIaWRkZW5CaW5kaW5nT3B0aW9uIDsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqTlNDb250aW51b3VzbHlVcGRhdGVzVmFsdWVCaW5kaW5nT3B0aW9u
IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNDcmVhdGVzU29ydERlc2NyaXB0b3JCaW5kaW5nT3B0
aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNEZWxldGVzT2JqZWN0c09uUmVtb3ZlQmluZGlu
Z3NPcHRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICpOU0Rpc3BsYXlOYW1lQmluZGluZ09wdGlv
biA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TRGlzcGxheVBhdHRlcm5CaW5kaW5nT3B0aW9uIDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNDb250ZW50UGxhY2VtZW50VGFnQmluZGluZ09wdGlvbiA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TSGFuZGxlc0NvbnRlbnRBc0NvbXBvdW5kVmFsdWVCaW5k
aW5nT3B0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNJbnNlcnRzTnVsbFBsYWNlaG9sZGVy
QmluZGluZ09wdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TSW52b2tlc1NlcGFyYXRlbHlX
aXRoQXJyYXlPYmplY3RzQmluZGluZ09wdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TTXVs
dGlwbGVWYWx1ZXNQbGFjZWhvbGRlckJpbmRpbmdPcHRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICpOU05vU2VsZWN0aW9uUGxhY2Vob2xkZXJCaW5kaW5nT3B0aW9uIDsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqTlNOb3RBcHBsaWNhYmxlUGxhY2Vob2xkZXJCaW5kaW5nT3B0aW9uIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqTlNOdWxsUGxhY2Vob2xkZXJCaW5kaW5nT3B0aW9uIDsKZXh0ZXJuICJDIiBO
U1N0cmluZyAqTlNSYWlzZXNGb3JOb3RBcHBsaWNhYmxlS2V5c0JpbmRpbmdPcHRpb24gOwpleHRl
cm4gIkMiIE5TU3RyaW5nICpOU1ByZWRpY2F0ZUZvcm1hdEJpbmRpbmdPcHRpb24gOwpleHRlcm4g
IkMiIE5TU3RyaW5nICpOU1NlbGVjdG9yTmFtZUJpbmRpbmdPcHRpb24gOwpleHRlcm4gIkMiIE5T
U3RyaW5nICpOU1NlbGVjdHNBbGxXaGVuU2V0dGluZ0NvbnRlbnRCaW5kaW5nT3B0aW9uIDsKZXh0
ZXJuICJDIiBOU1N0cmluZyAqTlNWYWxpZGF0ZXNJbW1lZGlhdGVseUJpbmRpbmdPcHRpb24gOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICpOU1ZhbHVlVHJhbnNmb3JtZXJOYW1lQmluZGluZ09wdGlvbiA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVmFsdWVUcmFuc2Zvcm1lckJpbmRpbmdPcHRpb24gOwoj
IDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9O
U0NvbnRyb2xsZXIuaCIgMiAzCgoKCgpAY2xhc3MgTlNNdXRhYmxlQXJyYXksIE5TTXV0YWJsZURp
Y3Rpb25hcnksIE5TTXV0YWJsZVNldDsKCkBpbnRlcmZhY2UgTlNDb250cm9sbGVyIDogTlNPYmpl
Y3QgPE5TQ29kaW5nPiB7CkBwcml2YXRlCiAgICB2b2lkICpfcmVzZXJ2ZWQ7CiAgICB2b2lkICpf
cmVzZXJ2ZWQyOwogICAgaW50IF9zcGVjaWFsUHVycG9zZVR5cGU7CiAgICBpZCBfYmluZGluZ0Fk
YXB0b3I7CiAgICBOU011dGFibGVBcnJheSAqX2VkaXRvcnM7CiAgICBOU011dGFibGVBcnJheSAq
X2RlY2xhcmVkS2V5czsKICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9kZXBlbmRlbnRLZXlUb01v
ZGVsS2V5VGFibGU7CiAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfbW9kZWxLZXlUb0RlcGVuZGVu
dEtleVRhYmxlOwogICAgTlNNdXRhYmxlQXJyYXkgKl9tb2RlbEtleXNUb1JlZnJlc2hFYWNoVGlt
ZTsKICAgIHN0cnVjdCBfX2JpbmRpbmdzQ29udHJvbGxlckZsYWdzIHsKICAgICAgICB1bnNpZ25l
ZCBpbnQgX2Fsd2F5c1ByZXNlbnRzQXBwbGljYXRpb25Nb2RhbEFsZXJ0czoxOwogICAgICAgIHVu
c2lnbmVkIGludCBfcmVmcmVzaGVzQWxsTW9kZWxLZXlzOjE7CiAgICAgICAgdW5zaWduZWQgaW50
IF9tdWx0aXBsZU9ic2VydmVkTW9kZWxPYmplY3RzOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9p
c0VkaXRpbmc6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVkQ29udHJvbGxlcjoyODsK
ICAgIH0gX2JpbmRpbmdzQ29udHJvbGxlckZsYWdzOwogICAgTlNNdXRhYmxlRGljdGlvbmFyeSAq
X3Jlc2VydmVkT3RoZXI7CkBwcm90ZWN0ZWQKICAgIGlkIF9tb2RlbE9ic2VydmluZ1RyYWNrZXI7
CiAgICBpZCBfZXhwZWN0ZWRPYnNlcnZpbmdJbmZvOwogICAgaWQgX3NpbmdsZVZhbHVlQWNjZXNz
b3I7Cn0KCi0gKHZvaWQpb2JqZWN0RGlkQmVnaW5FZGl0aW5nOihpZCllZGl0b3I7Ci0gKHZvaWQp
b2JqZWN0RGlkRW5kRWRpdGluZzooaWQpZWRpdG9yOwotICh2b2lkKWRpc2NhcmRFZGl0aW5nOwot
IChCT09MKWNvbW1pdEVkaXRpbmc7Ci0gKHZvaWQpY29tbWl0RWRpdGluZ1dpdGhEZWxlZ2F0ZToo
aWQpZGVsZWdhdGUgZGlkQ29tbWl0U2VsZWN0b3I6KFNFTClkaWRDb21taXRTZWxlY3RvciBjb250
ZXh0SW5mbzoodm9pZCAqKWNvbnRleHRJbmZvOwotIChCT09MKWlzRWRpdGluZzsKCkBlbmQKIyAx
NjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9B
cHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yay9IZWFkZXJzL05TT2JqZWN0Q29udHJvbGxlci5oIiAxIDMKIyAxMyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TT2JqZWN0Q29udHJvbGxl
ci5oIiAzCkBjbGFzcyBOU0FycmF5LCBOU1ByZWRpY2F0ZSwgTlNNYW5hZ2VkT2JqZWN0Q29udGV4
dCwgTlNGZXRjaFJlcXVlc3QsIE5TRXJyb3I7CgpAaW50ZXJmYWNlIE5TT2JqZWN0Q29udHJvbGxl
ciA6IE5TQ29udHJvbGxlciB7CkBwcml2YXRlCiAgICB2b2lkICpfcmVzZXJ2ZWQzOwogICAgaWQg
X21hbmFnZWRQcm94eTsKICAgIHN0cnVjdCBfX29iamVjdENvbnRyb2xsZXJGbGFncyB7CiAgICAg
ICAgdW5zaWduZWQgaW50IF9lZGl0YWJsZToxOwogICAgICAgIHVuc2lnbmVkIGludCBfYXV0b21h
dGljYWxseVByZXBhcmVzQ29udGVudDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfaGFzTG9hZGVk
RGF0YToxOwogICAgICAgIHVuc2lnbmVkIGludCBfZXhwbGljaXRseUNhbm5vdEFkZDoxOwogICAg
ICAgIHVuc2lnbmVkIGludCBfZXhwbGljaXRseUNhbm5vdFJlbW92ZToxOwogICAgICAgIHVuc2ln
bmVkIGludCBfaXNVc2luZ01hbmFnZWRQcm94eToxOwogICAgICAgIHVuc2lnbmVkIGludCBfaGFz
RmV0Y2hlZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfYmF0Y2hlczoxOwogICAgICAgIHVuc2ln
bmVkIGludCBfcmVzZXJ2ZWRPYmplY3RDb250cm9sbGVyOjI0OwogICAgfSBfb2JqZWN0Q29udHJv
bGxlckZsYWdzOwogICAgTlNTdHJpbmcgKl9vYmplY3RDbGFzc05hbWU7CiAgICBDbGFzcyBfb2Jq
ZWN0Q2xhc3M7CiAgICBOU0FycmF5ICpfY29udGVudE9iamVjdEFycmF5OwpAcHJvdGVjdGVkCiAg
ICBpZCBfY29udGVudDsKICAgIGlkIF9vYmplY3RIYW5kbGVyOwp9CgotIChpZClpbml0V2l0aENv
bnRlbnQ6KGlkKWNvbnRlbnQ7CgotICh2b2lkKXNldENvbnRlbnQ6KGlkKWNvbnRlbnQ7Ci0gKGlk
KWNvbnRlbnQ7CgotIChpZClzZWxlY3Rpb247Ci0gKE5TQXJyYXkgKilzZWxlY3RlZE9iamVjdHM7
CgotICh2b2lkKXNldEF1dG9tYXRpY2FsbHlQcmVwYXJlc0NvbnRlbnQ6KEJPT0wpZmxhZzsKLSAo
Qk9PTClhdXRvbWF0aWNhbGx5UHJlcGFyZXNDb250ZW50OwotICh2b2lkKXByZXBhcmVDb250ZW50
OwoKLSAodm9pZClzZXRPYmplY3RDbGFzczooQ2xhc3Mpb2JqZWN0Q2xhc3M7Ci0gKENsYXNzKW9i
amVjdENsYXNzOwotIChpZCluZXdPYmplY3Q7Ci0gKHZvaWQpYWRkT2JqZWN0OihpZClvYmplY3Q7
Ci0gKHZvaWQpcmVtb3ZlT2JqZWN0OihpZClvYmplY3Q7CgotICh2b2lkKXNldEVkaXRhYmxlOihC
T09MKWZsYWc7Ci0gKEJPT0wpaXNFZGl0YWJsZTsKLSAodm9pZClhZGQ6KGlkKXNlbmRlcjsKLSAo
Qk9PTCljYW5BZGQ7Ci0gKHZvaWQpcmVtb3ZlOihpZClzZW5kZXI7Ci0gKEJPT0wpY2FuUmVtb3Zl
OwotIChCT09MKXZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06KGlkIDxOU1ZhbGlkYXRlZFVzZXJJ
bnRlcmZhY2VJdGVtPilpdGVtOwoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TT2JqZWN0Q29udHJvbGxl
ciAoTlNNYW5hZ2VkQ29udHJvbGxlcikKCi0gKE5TTWFuYWdlZE9iamVjdENvbnRleHQgKiltYW5h
Z2VkT2JqZWN0Q29udGV4dDsKLSAodm9pZClzZXRNYW5hZ2VkT2JqZWN0Q29udGV4dDooTlNNYW5h
Z2VkT2JqZWN0Q29udGV4dCAqKW1hbmFnZWRPYmplY3RDb250ZXh0OwoKLSAoTlNTdHJpbmcgKill
bnRpdHlOYW1lOwotICh2b2lkKXNldEVudGl0eU5hbWU6KE5TU3RyaW5nICopZW50aXR5TmFtZTsK
LSAoTlNQcmVkaWNhdGUgKilmZXRjaFByZWRpY2F0ZTsKLSAodm9pZClzZXRGZXRjaFByZWRpY2F0
ZTooTlNQcmVkaWNhdGUgKilwcmVkaWNhdGU7CgotIChCT09MKWZldGNoV2l0aFJlcXVlc3Q6KE5T
RmV0Y2hSZXF1ZXN0ICopZmV0Y2hSZXF1ZXN0IG1lcmdlOihCT09MKW1lcmdlIGVycm9yOihOU0Vy
cm9yICoqKWVycm9yOwoKLSAodm9pZClmZXRjaDooaWQpc2VuZGVyOwoKCgotICh2b2lkKXNldFVz
ZXNMYXp5RmV0Y2hpbmc6KEJPT0wpZW5hYmxlZDsKLSAoQk9PTCl1c2VzTGF6eUZldGNoaW5nOwoK
LSAoTlNGZXRjaFJlcXVlc3QgKilkZWZhdWx0RmV0Y2hSZXF1ZXN0OwoKCgpAZW5kCiMgMTYyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0
LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU0FycmF5Q29udHJvbGxlci5oIiAxIDMKIyAxMyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TQXJyYXlDb250cm9sbGVyLmgiIDMK
QGNsYXNzIE5TQXJyYXksIE5TSW5kZXhTZXQsIE5TTXV0YWJsZUFycmF5LCBOU011dGFibGVJbmRl
eFNldDsKCkBpbnRlcmZhY2UgTlNBcnJheUNvbnRyb2xsZXIgOiBOU09iamVjdENvbnRyb2xsZXIg
ewpAcHJpdmF0ZQogdm9pZCAqX3Jlc2VydmVkNDsKIGlkIF9yZWFycmFuZ2VtZW50RXh0ZW5zaW9u
czsKICAgIE5TTXV0YWJsZUFycmF5ICpfdGVtcG9yYXJ5V29ya09iamVjdHM7CiAgICBzdHJ1Y3Qg
X19hcnJheUNvbnRyb2xsZXJGbGFncyB7CiAgICAgICAgdW5zaWduZWQgaW50IF9hdm9pZHNFbXB0
eVNlbGVjdGlvbjoxOwogICAgICAgIHVuc2lnbmVkIGludCBfcHJlc2VydmVzU2VsZWN0aW9uOjE7
CiAgICAgICAgdW5zaWduZWQgaW50IF9zZWxlY3RzSW5zZXJ0ZWRPYmplY3RzOjE7CiAgICAgICAg
dW5zaWduZWQgaW50IF9hbHdheXNVc2VzTXVsdGlwbGVWYWx1ZXNNYXJrZXI6MTsKICAgICAgICB1
bnNpZ25lZCBpbnQgX3JlZnJlc2hlc0FsbE1vZGVsT2JqZWN0czoxOwogICAgICAgIHVuc2lnbmVk
IGludCBfZmlsdGVyUmVzdHJpY3RzSW5zZXJ0aW9uOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9v
dmVycmlkZXNBcnJhbmdlT2JqZWN0czoxOwogICAgICAgIHVuc2lnbmVkIGludCBfb3ZlcnJpZGVz
RGlkQ2hhbmdlQXJyYW5nZW1lbnRDcml0ZXJpYToxOwogICAgICAgIHVuc2lnbmVkIGludCBfZXhw
bGljaXRseUNhbm5vdEluc2VydDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfZ2VuZXJhdGVkRW1w
dHlBcnJheToxOwogICAgICAgIHVuc2lnbmVkIGludCBfaXNPYnNlcnZpbmdLZXlQYXRoc1Rocm91
Z2hBcnJhbmdlZE9iamVjdHM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX2FycmFuZ2VkT2JqZWN0
c0lzTXV0YWJsZToxOwogICAgICAgIHVuc2lnbmVkIGludCBfY2xlYXJzRmlsdGVyUHJlZGljYXRl
T25JbnNlcnRpb246MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX3NraXBTb3J0aW5nQWZ0ZXJGZXRj
aDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfYXV0b21hdGljYWxseVJlYXJyYW5nZXNPYmplY3Rz
OjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9yZXNlcnZlZEFycmF5Q29udHJvbGxlcjoxNzsKICAg
IH0gX2FycmF5Q29udHJvbGxlckZsYWdzOwogICAgTlNVSW50ZWdlciBfb2JzZXJ2ZWRJbmRleEhp
bnQ7CiAgICBOU011dGFibGVJbmRleFNldCAqX3NlbGVjdGlvbkluZGV4ZXM7CiAgICBOU011dGFi
bGVBcnJheSAqX29iamVjdHM7CiAgICBOU0luZGV4U2V0ICpfY2FjaGVkU2VsZWN0ZWRJbmRleGVz
OwogICAgTlNBcnJheSAqX2NhY2hlZFNlbGVjdGVkT2JqZWN0czsKICAgIE5TQXJyYXkgKl9hcnJh
bmdlZE9iamVjdHM7Cn0KCi0gKHZvaWQpcmVhcnJhbmdlT2JqZWN0czsKCgotICh2b2lkKXNldEF1
dG9tYXRpY2FsbHlSZWFycmFuZ2VzT2JqZWN0czooQk9PTClmbGFnOwotIChCT09MKWF1dG9tYXRp
Y2FsbHlSZWFycmFuZ2VzT2JqZWN0czsKCi0gKE5TQXJyYXkgKilhdXRvbWF0aWNSZWFycmFuZ2Vt
ZW50S2V5UGF0aHM7Ci0gKHZvaWQpZGlkQ2hhbmdlQXJyYW5nZW1lbnRDcml0ZXJpYTsKCgotICh2
b2lkKXNldFNvcnREZXNjcmlwdG9yczooTlNBcnJheSAqKXNvcnREZXNjcmlwdG9yczsKLSAoTlNB
cnJheSAqKXNvcnREZXNjcmlwdG9yczsKCgotICh2b2lkKXNldEZpbHRlclByZWRpY2F0ZTooTlNQ
cmVkaWNhdGUgKilmaWx0ZXJQcmVkaWNhdGU7Ci0gKE5TUHJlZGljYXRlICopZmlsdGVyUHJlZGlj
YXRlOwoKCgotICh2b2lkKXNldENsZWFyc0ZpbHRlclByZWRpY2F0ZU9uSW5zZXJ0aW9uOihCT09M
KWZsYWc7Ci0gKEJPT0wpY2xlYXJzRmlsdGVyUHJlZGljYXRlT25JbnNlcnRpb247CgoKLSAoTlNB
cnJheSAqKWFycmFuZ2VPYmplY3RzOihOU0FycmF5ICopb2JqZWN0czsKLSAoaWQpYXJyYW5nZWRP
YmplY3RzOwoKLSAodm9pZClzZXRBdm9pZHNFbXB0eVNlbGVjdGlvbjooQk9PTClmbGFnOwotIChC
T09MKWF2b2lkc0VtcHR5U2VsZWN0aW9uOwotICh2b2lkKXNldFByZXNlcnZlc1NlbGVjdGlvbjoo
Qk9PTClmbGFnOwotIChCT09MKXByZXNlcnZlc1NlbGVjdGlvbjsKLSAodm9pZClzZXRTZWxlY3Rz
SW5zZXJ0ZWRPYmplY3RzOihCT09MKWZsYWc7Ci0gKEJPT0wpc2VsZWN0c0luc2VydGVkT2JqZWN0
czsKCgoKCi0gKHZvaWQpc2V0QWx3YXlzVXNlc011bHRpcGxlVmFsdWVzTWFya2VyOihCT09MKWZs
YWc7Ci0gKEJPT0wpYWx3YXlzVXNlc011bHRpcGxlVmFsdWVzTWFya2VyOwoKCgoKLSAoQk9PTClz
ZXRTZWxlY3Rpb25JbmRleGVzOihOU0luZGV4U2V0ICopaW5kZXhlczsKLSAoTlNJbmRleFNldCAq
KXNlbGVjdGlvbkluZGV4ZXM7Ci0gKEJPT0wpc2V0U2VsZWN0aW9uSW5kZXg6KE5TVUludGVnZXIp
aW5kZXg7Ci0gKE5TVUludGVnZXIpc2VsZWN0aW9uSW5kZXg7Ci0gKEJPT0wpYWRkU2VsZWN0aW9u
SW5kZXhlczooTlNJbmRleFNldCAqKWluZGV4ZXM7Ci0gKEJPT0wpcmVtb3ZlU2VsZWN0aW9uSW5k
ZXhlczooTlNJbmRleFNldCAqKWluZGV4ZXM7CgotIChCT09MKXNldFNlbGVjdGVkT2JqZWN0czoo
TlNBcnJheSAqKW9iamVjdHM7Ci0gKE5TQXJyYXkgKilzZWxlY3RlZE9iamVjdHM7Ci0gKEJPT0wp
YWRkU2VsZWN0ZWRPYmplY3RzOihOU0FycmF5ICopb2JqZWN0czsKLSAoQk9PTClyZW1vdmVTZWxl
Y3RlZE9iamVjdHM6KE5TQXJyYXkgKilvYmplY3RzOwoKLSAodm9pZClhZGQ6KGlkKXNlbmRlcjsK
LSAodm9pZClyZW1vdmU6KGlkKXNlbmRlcjsKLSAodm9pZClpbnNlcnQ6KGlkKXNlbmRlcjsKLSAo
Qk9PTCljYW5JbnNlcnQ7Ci0gKHZvaWQpc2VsZWN0TmV4dDooaWQpc2VuZGVyOwotICh2b2lkKXNl
bGVjdFByZXZpb3VzOihpZClzZW5kZXI7Ci0gKEJPT0wpY2FuU2VsZWN0TmV4dDsKLSAoQk9PTClj
YW5TZWxlY3RQcmV2aW91czsKCi0gKHZvaWQpYWRkT2JqZWN0OihpZClvYmplY3Q7Ci0gKHZvaWQp
YWRkT2JqZWN0czooTlNBcnJheSAqKW9iamVjdHM7Ci0gKHZvaWQpaW5zZXJ0T2JqZWN0OihpZClv
YmplY3QgYXRBcnJhbmdlZE9iamVjdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OwotICh2b2lkKWlu
c2VydE9iamVjdHM6KE5TQXJyYXkgKilvYmplY3RzIGF0QXJyYW5nZWRPYmplY3RJbmRleGVzOihO
U0luZGV4U2V0ICopaW5kZXhlczsKLSAodm9pZClyZW1vdmVPYmplY3RBdEFycmFuZ2VkT2JqZWN0
SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7Ci0gKHZvaWQpcmVtb3ZlT2JqZWN0c0F0QXJyYW5nZWRP
YmplY3RJbmRleGVzOihOU0luZGV4U2V0ICopaW5kZXhlczsKLSAodm9pZClyZW1vdmVPYmplY3Q6
KGlkKW9iamVjdDsKLSAodm9pZClyZW1vdmVPYmplY3RzOihOU0FycmF5ICopb2JqZWN0czsKCkBl
bmQKIyAxNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0
LmZyYW1ld29yay9IZWFkZXJzL05TRGljdGlvbmFyeUNvbnRyb2xsZXIuaCIgMSAzCiMgMTIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0RpY3Rp
b25hcnlDb250cm9sbGVyLmgiIDMKQGNsYXNzIE5TRGljdGlvbmFyeTsKCgoKCgpAaW50ZXJmYWNl
IE5TT2JqZWN0IChOU0RpY3Rpb25hcnlDb250cm9sbGVyS2V5VmFsdWVQYWlyKQoKLSAodm9pZClz
ZXRMb2NhbGl6ZWRLZXk6KE5TU3RyaW5nICopbG9jYWxpemVkS2V5OwotIChOU1N0cmluZyAqKWxv
Y2FsaXplZEtleTsKLSAodm9pZClzZXRLZXk6KE5TU3RyaW5nICopa2V5OwotIChOU1N0cmluZyAq
KWtleTsKLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWU7Ci0gKGlkKXZhbHVlOwotIChCT09MKWlz
RXhwbGljaXRseUluY2x1ZGVkOwoKQGVuZAoKQGludGVyZmFjZSBOU0RpY3Rpb25hcnlDb250cm9s
bGVyIDogTlNBcnJheUNvbnRyb2xsZXIgewpAcHJpdmF0ZQogICAgdm9pZCAqX3Jlc2VydmVkNTsK
ICAgIHZvaWQgKl9yZXNlcnZlZDY7CiAgICB2b2lkICpfcmVzZXJ2ZWQ3OwogaWQgX2NvbnRlbnRE
aWN0aW9uYXJ5OwogTlNTdHJpbmcgKl9pbml0aWFsS2V5OwogaWQgX2luaXRpYWxWYWx1ZTsKIE5T
VUludGVnZXIgX21pbmltdW1JbnNlcnRpb25LZXlJbmRleDsKIE5TU3RyaW5nICpfbG9jYWxpemVk
S2V5U3RyaW5nc0ZpbGVOYW1lOwogTlNEaWN0aW9uYXJ5ICpfbG9jYWxpemVkS2V5Rm9yS2V5RGlj
dGlvbmFyeTsKIE5TRGljdGlvbmFyeSAqX2tleUZvckxvY2FsaXplZEtleURpY3Rpb25hcnk7CiBO
U0FycmF5ICpfaW5jbHVkZWRLZXlzOwogTlNBcnJheSAqX2V4Y2x1ZGVkS2V5czsKICAgIHN0cnVj
dCBfX2RpY3Rpb25hcnlDb250cm9sbGVyRmxhZ3MgewogICAgICAgIHVuc2lnbmVkIGludCBfZGVl
cENvcGllc1ZhbHVlczoxOwogICAgICAgIHVuc2lnbmVkIGludCBfc3VwcHJlc3NCdWlsZGluZ0Rp
Y3Rpb25hcnk6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVkRGljdGlvbmFyeUNvbnRy
b2xsZXI6MzA7CiAgICB9IF9kaWN0aW9uYXJ5Q29udHJvbGxlckZsYWdzOwp9CgotIChpZCluZXdP
YmplY3Q7CgoKLSAodm9pZClzZXRJbml0aWFsS2V5OihOU1N0cmluZyAqKWtleTsKLSAoTlNTdHJp
bmcgKilpbml0aWFsS2V5OwotICh2b2lkKXNldEluaXRpYWxWYWx1ZTooaWQpdmFsdWU7Ci0gKGlk
KWluaXRpYWxWYWx1ZTsKCgotICh2b2lkKXNldEluY2x1ZGVkS2V5czooTlNBcnJheSAqKWtleXM7
Ci0gKE5TQXJyYXkgKilpbmNsdWRlZEtleXM7Ci0gKHZvaWQpc2V0RXhjbHVkZWRLZXlzOihOU0Fy
cmF5ICopa2V5czsKLSAoTlNBcnJheSAqKWV4Y2x1ZGVkS2V5czsKCgotICh2b2lkKXNldExvY2Fs
aXplZEtleURpY3Rpb25hcnk6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7Ci0gKE5TRGljdGlv
bmFyeSAqKWxvY2FsaXplZEtleURpY3Rpb25hcnk7Ci0gKHZvaWQpc2V0TG9jYWxpemVkS2V5VGFi
bGU6KE5TU3RyaW5nICopc3RyaW5nc0ZpbGVOYW1lOwotIChOU1N0cmluZyAqKWxvY2FsaXplZEtl
eVRhYmxlOwoKQGVuZAojIDE2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZy
YW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUcmVlTm9kZS5oIiAxIDMKIyAxMiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVHJlZU5v
ZGUuaCIgMwpAY2xhc3MgTlNBcnJheSwgTlNNdXRhYmxlQXJyYXksIE5TSW5kZXhQYXRoLCBOU1Ry
ZWVDb250cm9sbGVyOwoKQGludGVyZmFjZSBOU1RyZWVOb2RlIDogTlNPYmplY3QgewogICAgaWQg
X2NoaWxkTm9kZXNQcm94eTsKICAgIGlkIF9yZXByZXNlbnRlZE9iamVjdDsKICAgIHZvaWQgKl9v
YnNlcnZhdGlvbkluZm87CiAgICBpZCBfcmVzZXJ2ZWQyOwogICAgTlNNdXRhYmxlQXJyYXkgKl9j
aGlsZE5vZGVzOwogICAgTlNUcmVlTm9kZSAqX3BhcmVudE5vZGU7CiAgICBzdHJ1Y3QgX19OU1Ry
ZWVOb2RlRmxhZ3MgewogdW5zaWduZWQgaW50IGlnbm9yZU9ic2VydmluZzoxOwogdW5zaWduZWQg
aW50IHJlc2VydmVkOjMxOwogICAgfSBfTlNUcmVlTm9kZUZsYWdzOwp9CgorIChpZCl0cmVlTm9k
ZVdpdGhSZXByZXNlbnRlZE9iamVjdDooaWQpbW9kZWxPYmplY3Q7Ci0gKGlkKWluaXRXaXRoUmVw
cmVzZW50ZWRPYmplY3Q6KGlkKW1vZGVsT2JqZWN0OwoKLSAoaWQpcmVwcmVzZW50ZWRPYmplY3Q7
CgoKLSAoTlNJbmRleFBhdGggKilpbmRleFBhdGg7Ci0gKEJPT0wpaXNMZWFmOwoKLSAoTlNBcnJh
eSAqKWNoaWxkTm9kZXM7Ci0gKE5TTXV0YWJsZUFycmF5ICopbXV0YWJsZUNoaWxkTm9kZXM7Ci0g
KE5TVHJlZU5vZGUgKilkZXNjZW5kYW50Tm9kZUF0SW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKWlu
ZGV4UGF0aDsKCi0gKE5TVHJlZU5vZGUgKilwYXJlbnROb2RlOwoKCi0gKHZvaWQpc29ydFdpdGhT
b3J0RGVzY3JpcHRvcnM6KE5TQXJyYXkgKilzb3J0RGVzY3JpcHRvcnMgcmVjdXJzaXZlbHk6KEJP
T0wpcmVjdXJzaXZlbHk7CgpAZW5kCiMgMTY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1RyZWVDb250cm9sbGVyLmgi
IDEgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvTlNUcmVlQ29udHJvbGxlci5oIiAzCkBjbGFzcyBOU1RyZWVOb2RlOwoKCgoKQGludGVy
ZmFjZSBOU1RyZWVDb250cm9sbGVyIDogTlNPYmplY3RDb250cm9sbGVyIHsKICAgIGlkIF90cmVl
Q29udHJvbGxlclJlc2VydmVkMTsKICAgIE5TQXJyYXkgKl9tb2RlbE9ic2VydmluZ0tleVBhdGhz
OwogICAgaWQgX3RyZWVTdHJ1Y3R1cmVPYnNlcnZlcnM7CiAgICBpZCBfYXJyYW5nZWRPYmplY3Rz
OwogICAgaWQgX3Jvb3ROb2RlOwogICAgaWQgX3NlbGVjdGlvbkluZGV4UGF0aHM7CiAgICBzdHJ1
Y3QgX190cmVlQ29udHJvbGxlckZsYWdzIHsKICAgICAgICB1bnNpZ25lZCBpbnQgX2F2b2lkc0Vt
cHR5U2VsZWN0aW9uOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9wcmVzZXJ2ZXNTZWxlY3Rpb246
MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX3NlbGVjdHNJbnNlcnRlZE9iamVjdHM6MTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgX2V4cGxpY2l0bHlDYW5ub3RJbnNlcnQ6MTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgX2V4cGxpY2l0bHlDYW5ub3RJbnNlcnRDaGlsZDoxOwogICAgICAgIHVuc2lnbmVkIGlu
dCBfZXhwbGljaXRseUNhbm5vdEFkZENoaWxkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9hbHdh
eXNVc2VzTXVsdGlwbGVWYWx1ZXNNYXJrZXI6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX29ic2Vy
dmluZ1Rocm91Z2hBcnJhbmdlZE9iamVjdHM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX211dGF0
aW5nTm9kZXM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX3BlcmZvcm1pbmdGZXRjaDoxOwogICAg
ICAgIHVuc2lnbmVkIGludCBfc2tpcFNvcnRpbmdBZnRlckZldGNoOjE7CiB1bnNpZ25lZCBpbnQg
X3VzZXNJZGVudGljYWxDb21wYXJpc29uT2ZNb2RlbE9iamVjdHM6MTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgX3Jlc2VydmVkVHJlZUNvbnRyb2xsZXI6MjA7CiAgICB9IF90cmVlQ29udHJvbGxlckZs
YWdzOwogICAgTlNBcnJheSAqX3NlbGVjdGVkT2JqZWN0czsKICAgIE5TU3RyaW5nICpfY2hpbGRy
ZW5LZXlQYXRoOwogICAgTlNTdHJpbmcgKl9jb3VudEtleVBhdGg7CiAgICBOU1N0cmluZyAqX2xl
YWZLZXlQYXRoOwogICAgTlNBcnJheSAqX3NvcnREZXNjcmlwdG9yczsKfQoKLSAodm9pZClyZWFy
cmFuZ2VPYmplY3RzOwoKCi0gKGlkKWFycmFuZ2VkT2JqZWN0czsKCi0gKHZvaWQpc2V0Q2hpbGRy
ZW5LZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGg7Ci0gKE5TU3RyaW5nICopY2hpbGRyZW5LZXlQ
YXRoOwotICh2b2lkKXNldENvdW50S2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoOwotIChOU1N0
cmluZyAqKWNvdW50S2V5UGF0aDsKLSAodm9pZClzZXRMZWFmS2V5UGF0aDooTlNTdHJpbmcgKilr
ZXlQYXRoOwotIChOU1N0cmluZyAqKWxlYWZLZXlQYXRoOwoKLSAodm9pZClzZXRTb3J0RGVzY3Jp
cHRvcnM6KE5TQXJyYXkgKilzb3J0RGVzY3JpcHRvcnM7Ci0gKE5TQXJyYXkgKilzb3J0RGVzY3Jp
cHRvcnM7CgotIChpZCljb250ZW50OwotICh2b2lkKXNldENvbnRlbnQ6KGlkKWNvbnRlbnQ7Cgot
ICh2b2lkKWFkZDooaWQpc2VuZGVyOwotICh2b2lkKXJlbW92ZTooaWQpc2VuZGVyOwotICh2b2lk
KWFkZENoaWxkOihpZClzZW5kZXI7Ci0gKHZvaWQpaW5zZXJ0OihpZClzZW5kZXI7Ci0gKHZvaWQp
aW5zZXJ0Q2hpbGQ6KGlkKXNlbmRlcjsKCi0gKEJPT0wpY2FuSW5zZXJ0OwotIChCT09MKWNhbklu
c2VydENoaWxkOwotIChCT09MKWNhbkFkZENoaWxkOwoKLSAodm9pZClpbnNlcnRPYmplY3Q6KGlk
KW9iamVjdCBhdEFycmFuZ2VkT2JqZWN0SW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0
aDsKLSAodm9pZClpbnNlcnRPYmplY3RzOihOU0FycmF5ICopb2JqZWN0cyBhdEFycmFuZ2VkT2Jq
ZWN0SW5kZXhQYXRoczooTlNBcnJheSAqKWluZGV4UGF0aHM7Ci0gKHZvaWQpcmVtb3ZlT2JqZWN0
QXRBcnJhbmdlZE9iamVjdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGg7Ci0gKHZv
aWQpcmVtb3ZlT2JqZWN0c0F0QXJyYW5nZWRPYmplY3RJbmRleFBhdGhzOihOU0FycmF5ICopaW5k
ZXhQYXRoczsKCgotICh2b2lkKXNldEF2b2lkc0VtcHR5U2VsZWN0aW9uOihCT09MKWZsYWc7Ci0g
KEJPT0wpYXZvaWRzRW1wdHlTZWxlY3Rpb247Ci0gKHZvaWQpc2V0UHJlc2VydmVzU2VsZWN0aW9u
OihCT09MKWZsYWc7Ci0gKEJPT0wpcHJlc2VydmVzU2VsZWN0aW9uOwotICh2b2lkKXNldFNlbGVj
dHNJbnNlcnRlZE9iamVjdHM6KEJPT0wpZmxhZzsKLSAoQk9PTClzZWxlY3RzSW5zZXJ0ZWRPYmpl
Y3RzOwotICh2b2lkKXNldEFsd2F5c1VzZXNNdWx0aXBsZVZhbHVlc01hcmtlcjooQk9PTClmbGFn
OwotIChCT09MKWFsd2F5c1VzZXNNdWx0aXBsZVZhbHVlc01hcmtlcjsKCgoKLSAoTlNBcnJheSAq
KXNlbGVjdGVkT2JqZWN0czsKCi0gKEJPT0wpc2V0U2VsZWN0aW9uSW5kZXhQYXRoczooTlNBcnJh
eSAqKWluZGV4UGF0aHM7Ci0gKE5TQXJyYXkgKilzZWxlY3Rpb25JbmRleFBhdGhzOwotIChCT09M
KXNldFNlbGVjdGlvbkluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGg7Ci0gKE5TSW5k
ZXhQYXRoICopc2VsZWN0aW9uSW5kZXhQYXRoOwotIChCT09MKWFkZFNlbGVjdGlvbkluZGV4UGF0
aHM6KE5TQXJyYXkgKilpbmRleFBhdGhzOwotIChCT09MKXJlbW92ZVNlbGVjdGlvbkluZGV4UGF0
aHM6KE5TQXJyYXkgKilpbmRleFBhdGhzOwoKCi0gKE5TQXJyYXkgKilzZWxlY3RlZE5vZGVzOwoK
LSAodm9pZCltb3ZlTm9kZTooTlNUcmVlTm9kZSAqKW5vZGUgdG9JbmRleFBhdGg6KE5TSW5kZXhQ
YXRoICopaW5kZXhQYXRoOwotICh2b2lkKW1vdmVOb2RlczooTlNBcnJheSAqKW5vZGVzIHRvSW5k
ZXhQYXRoOihOU0luZGV4UGF0aCAqKXN0YXJ0aW5nSW5kZXhQYXRoOwoKLSAoTlNTdHJpbmcgKilj
aGlsZHJlbktleVBhdGhGb3JOb2RlOihOU1RyZWVOb2RlICopbm9kZTsKLSAoTlNTdHJpbmcgKilj
b3VudEtleVBhdGhGb3JOb2RlOihOU1RyZWVOb2RlICopbm9kZTsKLSAoTlNTdHJpbmcgKilsZWFm
S2V5UGF0aEZvck5vZGU6KE5TVHJlZU5vZGUgKilub2RlOwoKCgpAZW5kCiMgMTY2ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIg
MwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9OU1VzZXJEZWZhdWx0c0NvbnRyb2xsZXIuaCIgMSAzCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1VzZXJEZWZhdWx0c0NvbnRyb2xs
ZXIuaCIgMwpAY2xhc3MgTlNEaWN0aW9uYXJ5LCBOU1VzZXJEZWZhdWx0czsKCkBpbnRlcmZhY2Ug
TlNVc2VyRGVmYXVsdHNDb250cm9sbGVyIDogTlNDb250cm9sbGVyIHsKQHByaXZhdGUKIHZvaWQg
Kl9yZXNlcnZlZDM7CiB2b2lkICpfcmVzZXJ2ZWQ0OwogICAgTlNVc2VyRGVmYXVsdHMgKl9kZWZh
dWx0czsKICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl92YWx1ZUJ1ZmZlcjsKICAgIE5TRGljdGlv
bmFyeSAqX2luaXRpYWxWYWx1ZXM7CiAgICBzdHJ1Y3QgX191c2VyRGVmYXVsdHNDb250cm9sbGVy
RmxhZ3MgewogICAgICAgIHVuc2lnbmVkIGludCBfc2hhcmVkSW5zdGFuY2U6MTsKICAgICAgICB1
bnNpZ25lZCBpbnQgX2FwcGxpZXNJbW1lZGlhdGVseToxOwogICAgICAgIHVuc2lnbmVkIGludCBf
cmVzZXJ2ZWRVc2VyRGVmYXVsdHNDb250cm9sbGVyOjMwOwogICAgfSBfdXNlckRlZmF1bHRzQ29u
dHJvbGxlckZsYWdzOwp9CgorIChpZClzaGFyZWRVc2VyRGVmYXVsdHNDb250cm9sbGVyOwoKLSAo
aWQpaW5pdFdpdGhEZWZhdWx0czooTlNVc2VyRGVmYXVsdHMgKilkZWZhdWx0cyBpbml0aWFsVmFs
dWVzOihOU0RpY3Rpb25hcnkgKilpbml0aWFsVmFsdWVzOwoKLSAoTlNVc2VyRGVmYXVsdHMgKilk
ZWZhdWx0czsKLSAodm9pZClzZXRJbml0aWFsVmFsdWVzOihOU0RpY3Rpb25hcnkgKilpbml0aWFs
VmFsdWVzOwotIChOU0RpY3Rpb25hcnkgKilpbml0aWFsVmFsdWVzOwoKLSAodm9pZClzZXRBcHBs
aWVzSW1tZWRpYXRlbHk6KEJPT0wpZmxhZzsKLSAoQk9PTClhcHBsaWVzSW1tZWRpYXRlbHk7CgoK
LSAoQk9PTCloYXNVbmFwcGxpZWRDaGFuZ2VzOwoKCi0gKGlkKXZhbHVlczsKCi0gKHZvaWQpcmV2
ZXJ0OihpZClzZW5kZXI7Ci0gKHZvaWQpc2F2ZTooaWQpc2VuZGVyOwotICh2b2lkKXJldmVydFRv
SW5pdGlhbFZhbHVlczooaWQpc2VuZGVyOwoKQGVuZAojIDE2NyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGV4dExp
c3QuaCIgMSAzCiMgMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9OU1RleHRMaXN0LmgiIDMKZW51bSB7CiAgICBOU1RleHRMaXN0UHJlcGVuZEVu
Y2xvc2luZ01hcmtlciA9ICgxIDw8IDApCn07CgpAaW50ZXJmYWNlIE5TVGV4dExpc3QgOiBOU09i
amVjdCA8TlNDb2RpbmcsIE5TQ29weWluZz4gewoKICAgIE5TU3RyaW5nICpfbWFya2VyRm9ybWF0
OwogICAgTlNVSW50ZWdlciBfbGlzdEZsYWdzOwogICAgTlNJbnRlZ2VyIF9zdGFydEluZGV4Owog
ICAgdm9pZCAqX2xpc3RTZWNvbmRhcnk7Cn0KCi0gKGlkKWluaXRXaXRoTWFya2VyRm9ybWF0OihO
U1N0cmluZyAqKWZvcm1hdCBvcHRpb25zOihOU1VJbnRlZ2VyKW1hc2s7Ci0gKE5TU3RyaW5nICop
bWFya2VyRm9ybWF0OwotIChOU1VJbnRlZ2VyKWxpc3RPcHRpb25zOwotIChOU1N0cmluZyAqKW1h
cmtlckZvckl0ZW1OdW1iZXI6KE5TSW50ZWdlcilpdGVtTnVtOwotICh2b2lkKXNldFN0YXJ0aW5n
SXRlbU51bWJlcjooTlNJbnRlZ2VyKWl0ZW1OdW0gOwotIChOU0ludGVnZXIpc3RhcnRpbmdJdGVt
TnVtYmVyIDsKCkBlbmQKIyAxNjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVGV4dFRhYmxlLmgiIDEgMwojIDE0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNUZXh0
VGFibGUuaCIgMwpAY2xhc3MgTlNUZXh0VGFibGU7CkBjbGFzcyBOU0xheW91dE1hbmFnZXI7CkBj
bGFzcyBOU1RleHRDb250YWluZXI7CgoKCgplbnVtIHsKICAgIE5TVGV4dEJsb2NrQWJzb2x1dGVW
YWx1ZVR5cGUgPSAwLAogICAgTlNUZXh0QmxvY2tQZXJjZW50YWdlVmFsdWVUeXBlID0gMQp9Owp0
eXBlZGVmIE5TVUludGVnZXIgTlNUZXh0QmxvY2tWYWx1ZVR5cGU7CgoKZW51bSB7CiAgICBOU1Rl
eHRCbG9ja1dpZHRoID0gMCwKICAgIE5TVGV4dEJsb2NrTWluaW11bVdpZHRoID0gMSwKICAgIE5T
VGV4dEJsb2NrTWF4aW11bVdpZHRoID0gMiwKICAgIE5TVGV4dEJsb2NrSGVpZ2h0ID0gNCwKICAg
IE5TVGV4dEJsb2NrTWluaW11bUhlaWdodCA9IDUsCiAgICBOU1RleHRCbG9ja01heGltdW1IZWln
aHQgPSA2Cn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1RleHRCbG9ja0RpbWVuc2lvbjsKCgplbnVt
IHsKICAgIE5TVGV4dEJsb2NrUGFkZGluZyA9IC0xLAogICAgTlNUZXh0QmxvY2tCb3JkZXIgPSAw
LAogICAgTlNUZXh0QmxvY2tNYXJnaW4gPSAxCn07CnR5cGVkZWYgTlNJbnRlZ2VyIE5TVGV4dEJs
b2NrTGF5ZXI7CgoKZW51bSB7CiAgICBOU1RleHRCbG9ja1RvcEFsaWdubWVudCA9IDAsCiAgICBO
U1RleHRCbG9ja01pZGRsZUFsaWdubWVudCA9IDEsCiAgICBOU1RleHRCbG9ja0JvdHRvbUFsaWdu
bWVudCA9IDIsCiAgICBOU1RleHRCbG9ja0Jhc2VsaW5lQWxpZ25tZW50ID0gMwp9Owp0eXBlZGVm
IE5TVUludGVnZXIgTlNUZXh0QmxvY2tWZXJ0aWNhbEFsaWdubWVudDsKCgplbnVtIHsKICAgIE5T
VGV4dFRhYmxlQXV0b21hdGljTGF5b3V0QWxnb3JpdGhtID0gMCwKICAgIE5TVGV4dFRhYmxlRml4
ZWRMYXlvdXRBbGdvcml0aG0gPSAxCn07CnR5cGVkZWYgTlNVSW50ZWdlciBOU1RleHRUYWJsZUxh
eW91dEFsZ29yaXRobTsKCgpAaW50ZXJmYWNlIE5TVGV4dEJsb2NrIDogTlNPYmplY3QgPE5TQ29k
aW5nLCBOU0NvcHlpbmc+IHsKCiAgICB2b2lkICpfcHJvcFZhbHM7CiAgICBOU1VJbnRlZ2VyIF9w
cm9wTWFzazsKICAgIE5TVUludGVnZXIgX3R5cGVNYXNrOwogICAgaWQgX3ByaW1QYXJhbVZhbDsK
ICAgIGlkIF9vdGhlclBhcmFtVmFsczsKICAgIHZvaWQgKl9ibG9ja1ByaW1hcnk7CiAgICB2b2lk
ICpfYmxvY2tTZWNvbmRhcnk7Cn0KCi0gKGlkKWluaXQ7CgoKLSAodm9pZClzZXRWYWx1ZTooQ0dG
bG9hdCl2YWwgdHlwZTooTlNUZXh0QmxvY2tWYWx1ZVR5cGUpdHlwZSBmb3JEaW1lbnNpb246KE5T
VGV4dEJsb2NrRGltZW5zaW9uKWRpbWVuc2lvbjsKLSAoQ0dGbG9hdCl2YWx1ZUZvckRpbWVuc2lv
bjooTlNUZXh0QmxvY2tEaW1lbnNpb24pZGltZW5zaW9uOwotIChOU1RleHRCbG9ja1ZhbHVlVHlw
ZSl2YWx1ZVR5cGVGb3JEaW1lbnNpb246KE5TVGV4dEJsb2NrRGltZW5zaW9uKWRpbWVuc2lvbjsK
CgotICh2b2lkKXNldENvbnRlbnRXaWR0aDooQ0dGbG9hdCl2YWwgdHlwZTooTlNUZXh0QmxvY2tW
YWx1ZVR5cGUpdHlwZTsKLSAoQ0dGbG9hdCljb250ZW50V2lkdGg7Ci0gKE5TVGV4dEJsb2NrVmFs
dWVUeXBlKWNvbnRlbnRXaWR0aFZhbHVlVHlwZTsKCgotICh2b2lkKXNldFdpZHRoOihDR0Zsb2F0
KXZhbCB0eXBlOihOU1RleHRCbG9ja1ZhbHVlVHlwZSl0eXBlIGZvckxheWVyOihOU1RleHRCbG9j
a0xheWVyKWxheWVyIGVkZ2U6KE5TUmVjdEVkZ2UpZWRnZTsKLSAodm9pZClzZXRXaWR0aDooQ0dG
bG9hdCl2YWwgdHlwZTooTlNUZXh0QmxvY2tWYWx1ZVR5cGUpdHlwZSBmb3JMYXllcjooTlNUZXh0
QmxvY2tMYXllcilsYXllcjsKLSAoQ0dGbG9hdCl3aWR0aEZvckxheWVyOihOU1RleHRCbG9ja0xh
eWVyKWxheWVyIGVkZ2U6KE5TUmVjdEVkZ2UpZWRnZTsKLSAoTlNUZXh0QmxvY2tWYWx1ZVR5cGUp
d2lkdGhWYWx1ZVR5cGVGb3JMYXllcjooTlNUZXh0QmxvY2tMYXllcilsYXllciBlZGdlOihOU1Jl
Y3RFZGdlKWVkZ2U7CgoKLSAodm9pZClzZXRWZXJ0aWNhbEFsaWdubWVudDooTlNUZXh0QmxvY2tW
ZXJ0aWNhbEFsaWdubWVudClhbGlnbm1lbnQ7Ci0gKE5TVGV4dEJsb2NrVmVydGljYWxBbGlnbm1l
bnQpdmVydGljYWxBbGlnbm1lbnQ7CgoKLSAodm9pZClzZXRCYWNrZ3JvdW5kQ29sb3I6KE5TQ29s
b3IgKiljb2xvcjsKLSAoTlNDb2xvciAqKWJhY2tncm91bmRDb2xvcjsKLSAodm9pZClzZXRCb3Jk
ZXJDb2xvcjooTlNDb2xvciAqKWNvbG9yIGZvckVkZ2U6KE5TUmVjdEVkZ2UpZWRnZTsKLSAodm9p
ZClzZXRCb3JkZXJDb2xvcjooTlNDb2xvciAqKWNvbG9yOwotIChOU0NvbG9yICopYm9yZGVyQ29s
b3JGb3JFZGdlOihOU1JlY3RFZGdlKWVkZ2U7CgoKLSAoTlNSZWN0KXJlY3RGb3JMYXlvdXRBdFBv
aW50OihOU1BvaW50KXN0YXJ0aW5nUG9pbnQgaW5SZWN0OihOU1JlY3QpcmVjdCB0ZXh0Q29udGFp
bmVyOihOU1RleHRDb250YWluZXIgKil0ZXh0Q29udGFpbmVyIGNoYXJhY3RlclJhbmdlOihOU1Jh
bmdlKWNoYXJSYW5nZTsKLSAoTlNSZWN0KWJvdW5kc1JlY3RGb3JDb250ZW50UmVjdDooTlNSZWN0
KWNvbnRlbnRSZWN0IGluUmVjdDooTlNSZWN0KXJlY3QgdGV4dENvbnRhaW5lcjooTlNUZXh0Q29u
dGFpbmVyICopdGV4dENvbnRhaW5lciBjaGFyYWN0ZXJSYW5nZTooTlNSYW5nZSljaGFyUmFuZ2U7
CgoKLSAodm9pZClkcmF3QmFja2dyb3VuZFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lUmVjdCBpblZp
ZXc6KE5TVmlldyAqKWNvbnRyb2xWaWV3IGNoYXJhY3RlclJhbmdlOihOU1JhbmdlKWNoYXJSYW5n
ZSBsYXlvdXRNYW5hZ2VyOihOU0xheW91dE1hbmFnZXIgKilsYXlvdXRNYW5hZ2VyOwoKQGVuZAoK
CkBpbnRlcmZhY2UgTlNUZXh0VGFibGVCbG9jayA6IE5TVGV4dEJsb2NrIHsKICAgIE5TVGV4dFRh
YmxlICpfdGFibGU7CiAgICBOU0ludGVnZXIgX3Jvd051bTsKICAgIE5TSW50ZWdlciBfY29sTnVt
OwogICAgTlNJbnRlZ2VyIF9yb3dTcGFuOwogICAgTlNJbnRlZ2VyIF9jb2xTcGFuOwogICAgdm9p
ZCAqX3RhYmxlQmxvY2tQcmltYXJ5OwogICAgdm9pZCAqX3RhYmxlQmxvY2tTZWNvbmRhcnk7Cn0K
Ci0gKGlkKWluaXRXaXRoVGFibGU6KE5TVGV4dFRhYmxlICopdGFibGUgc3RhcnRpbmdSb3c6KE5T
SW50ZWdlcilyb3cgcm93U3BhbjooTlNJbnRlZ2VyKXJvd1NwYW4gc3RhcnRpbmdDb2x1bW46KE5T
SW50ZWdlciljb2wgY29sdW1uU3BhbjooTlNJbnRlZ2VyKWNvbFNwYW47CgoKLSAoTlNUZXh0VGFi
bGUgKil0YWJsZTsKLSAoTlNJbnRlZ2VyKXN0YXJ0aW5nUm93OwotIChOU0ludGVnZXIpcm93U3Bh
bjsKLSAoTlNJbnRlZ2VyKXN0YXJ0aW5nQ29sdW1uOwotIChOU0ludGVnZXIpY29sdW1uU3BhbjsK
CkBlbmQKCgpAaW50ZXJmYWNlIE5TVGV4dFRhYmxlIDogTlNUZXh0QmxvY2sgewogICAgTlNVSW50
ZWdlciBfbnVtQ29sczsKICAgIE5TVUludGVnZXIgX3RhYmxlRmxhZ3M7CiAgICBpZCBfbGNhY2hl
OwogICAgdm9pZCAqX3RhYmxlUHJpbWFyeTsKICAgIHZvaWQgKl90YWJsZVNlY29uZGFyeTsKfQoK
Ci0gKE5TVUludGVnZXIpbnVtYmVyT2ZDb2x1bW5zOwotICh2b2lkKXNldE51bWJlck9mQ29sdW1u
czooTlNVSW50ZWdlciludW1Db2xzOwotIChOU1RleHRUYWJsZUxheW91dEFsZ29yaXRobSlsYXlv
dXRBbGdvcml0aG07Ci0gKHZvaWQpc2V0TGF5b3V0QWxnb3JpdGhtOihOU1RleHRUYWJsZUxheW91
dEFsZ29yaXRobSlhbGdvcml0aG07Ci0gKEJPT0wpY29sbGFwc2VzQm9yZGVyczsKLSAodm9pZClz
ZXRDb2xsYXBzZXNCb3JkZXJzOihCT09MKWZsYWc7Ci0gKEJPT0wpaGlkZXNFbXB0eUNlbGxzOwot
ICh2b2lkKXNldEhpZGVzRW1wdHlDZWxsczooQk9PTClmbGFnOwoKCi0gKE5TUmVjdClyZWN0Rm9y
QmxvY2s6KE5TVGV4dFRhYmxlQmxvY2sgKilibG9jayBsYXlvdXRBdFBvaW50OihOU1BvaW50KXN0
YXJ0aW5nUG9pbnQgaW5SZWN0OihOU1JlY3QpcmVjdCB0ZXh0Q29udGFpbmVyOihOU1RleHRDb250
YWluZXIgKil0ZXh0Q29udGFpbmVyIGNoYXJhY3RlclJhbmdlOihOU1JhbmdlKWNoYXJSYW5nZTsK
LSAoTlNSZWN0KWJvdW5kc1JlY3RGb3JCbG9jazooTlNUZXh0VGFibGVCbG9jayAqKWJsb2NrIGNv
bnRlbnRSZWN0OihOU1JlY3QpY29udGVudFJlY3QgaW5SZWN0OihOU1JlY3QpcmVjdCB0ZXh0Q29u
dGFpbmVyOihOU1RleHRDb250YWluZXIgKil0ZXh0Q29udGFpbmVyIGNoYXJhY3RlclJhbmdlOihO
U1JhbmdlKWNoYXJSYW5nZTsKLSAodm9pZClkcmF3QmFja2dyb3VuZEZvckJsb2NrOihOU1RleHRU
YWJsZUJsb2NrICopYmxvY2sgd2l0aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0IGluVmlldzooTlNW
aWV3ICopY29udHJvbFZpZXcgY2hhcmFjdGVyUmFuZ2U6KE5TUmFuZ2UpY2hhclJhbmdlIGxheW91
dE1hbmFnZXI6KE5TTGF5b3V0TWFuYWdlciAqKWxheW91dE1hbmFnZXI7CgpAZW5kCiMgMTcwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0
LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9OU0RhdGVQaWNrZXJDZWxsLmgiIDEgMwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNEYXRlUGlja2VyQ2VsbC5oIiAzCmVu
dW0gewogICAgTlNUZXh0RmllbGRBbmRTdGVwcGVyRGF0ZVBpY2tlclN0eWxlID0gMCwKICAgIE5T
Q2xvY2tBbmRDYWxlbmRhckRhdGVQaWNrZXJTdHlsZSA9IDEsCiAgICBOU1RleHRGaWVsZERhdGVQ
aWNrZXJTdHlsZSA9IDIKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TRGF0ZVBpY2tlclN0eWxlOwoK
ZW51bSB7CiAgICBOU1NpbmdsZURhdGVNb2RlID0gMCwKICAgIE5TUmFuZ2VEYXRlTW9kZSA9IDEK
fTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TRGF0ZVBpY2tlck1vZGU7Cgp0eXBlZGVmIE5TVUludGVn
ZXIgTlNEYXRlUGlja2VyRWxlbWVudEZsYWdzOwplbnVtIHsKCiAgICBOU0hvdXJNaW51dGVEYXRl
UGlja2VyRWxlbWVudEZsYWcgPSAweDAwMGMsCiAgICBOU0hvdXJNaW51dGVTZWNvbmREYXRlUGlj
a2VyRWxlbWVudEZsYWcgPSAweDAwMGUsCiAgICBOU1RpbWVab25lRGF0ZVBpY2tlckVsZW1lbnRG
bGFnID0gMHgwMDEwLAoKCiAgICBOU1llYXJNb250aERhdGVQaWNrZXJFbGVtZW50RmxhZyA9IDB4
MDBjMCwKICAgIE5TWWVhck1vbnRoRGF5RGF0ZVBpY2tlckVsZW1lbnRGbGFnID0gMHgwMGUwLAog
ICAgTlNFcmFEYXRlUGlja2VyRWxlbWVudEZsYWcgPSAweDAxMDAsCn07CgpAY2xhc3MgTlNDYWxl
bmRhciwgTlNMb2NhbGUsIE5TVGltZVpvbmU7CkBwcm90b2NvbCBOU0RhdGVQaWNrZXJDZWxsRGVs
ZWdhdGU7CgpAaW50ZXJmYWNlIE5TRGF0ZVBpY2tlckNlbGwgOiBOU0FjdGlvbkNlbGwKewpAcHJp
dmF0ZQogICAgTlNUaW1lSW50ZXJ2YWwgX3RpbWVJbnRlcnZhbDsKICAgIE5TRGF0ZSAqX21pbkRh
dGU7CiAgICBOU0RhdGUgKl9tYXhEYXRlOwogICAgc3RydWN0IF9fZGF0ZUNlbGxGbGFncyB7CiAg
ICAgICAgdW5zaWduZWQgaW50IGVsZW1lbnRzOjE2OwogICAgICAgIHVuc2lnbmVkIGludCBjb250
cm9sU3R5bGU6MzsKICAgICAgICB1bnNpZ25lZCBpbnQgY29udHJvbE1vZGU6MjsKICAgICAgICB1
bnNpZ25lZCBpbnQgdHJhY2tpbmdIYW5kOjI7CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVk
Mjo0OwogICAgICAgIHVuc2lnbmVkIGludCBkcmF3c0JhY2tncm91bmQ6MTsKICAgICAgICB1bnNp
Z25lZCBpbnQgZGlnaXRzRW50ZXJlZDoyOwogICAgICAgIHVuc2lnbmVkIGludCBmb3JjZXNMZWFk
aW5nWmVyb2VzOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHdyYXBzRGF0ZUNvbXBvbmVudEFyaXRo
bWV0aWM6MTsKICAgIH0gX2RjRmxhZ3M7CiAgICBpZCBfZGVsZWdhdGU7CiAgICBOU0NhbGVuZGFy
ICpfY2FsZW5kYXI7CiAgICBOU0xvY2FsZSAqX2xvY2FsZTsKICAgIE5TVGltZVpvbmUgKl90aW1l
Wm9uZTsKICAgIE5TQ29sb3IgKl9iYWNrZ3JvdW5kQ29sb3I7CiAgICBOU0NvbG9yICpfdGV4dENv
bG9yOwogICAgaW50IF9pbmRleE9mU2VsZWN0ZWRTdWJmaWVsZDsKICAgIGludCBfcmVzZXJ2ZWQw
OwogICAgaWQgX3Jlc2VydmVkMTsKICAgIGlkIF9yZXNlcnZlZDI7CiAgICBpZCBfcmVzZXJ2ZWQz
OwogICAgaWQgX3Jlc2VydmVkNDsKfQoKICAgICAgIAoKLSAoTlNEYXRlUGlja2VyU3R5bGUpZGF0
ZVBpY2tlclN0eWxlOwotICh2b2lkKXNldERhdGVQaWNrZXJTdHlsZTooTlNEYXRlUGlja2VyU3R5
bGUpbmV3U3R5bGU7CgotIChCT09MKWRyYXdzQmFja2dyb3VuZDsKLSAodm9pZClzZXREcmF3c0Jh
Y2tncm91bmQ6KEJPT0wpZmxhZzsKCi0gKE5TQ29sb3IgKiliYWNrZ3JvdW5kQ29sb3I7Ci0gKHZv
aWQpc2V0QmFja2dyb3VuZENvbG9yOihOU0NvbG9yICopY29sb3I7CgotIChOU0NvbG9yICopdGV4
dENvbG9yOwotICh2b2lkKXNldFRleHRDb2xvcjooTlNDb2xvciAqKWNvbG9yOwoKICAgICAgIAoK
LSAoTlNEYXRlUGlja2VyTW9kZSlkYXRlUGlja2VyTW9kZTsKLSAodm9pZClzZXREYXRlUGlja2Vy
TW9kZTooTlNEYXRlUGlja2VyTW9kZSluZXdNb2RlOwoKICAgICAgIAoKLSAoTlNEYXRlUGlja2Vy
RWxlbWVudEZsYWdzKWRhdGVQaWNrZXJFbGVtZW50czsKLSAodm9pZClzZXREYXRlUGlja2VyRWxl
bWVudHM6KE5TRGF0ZVBpY2tlckVsZW1lbnRGbGFncyllbGVtZW50RmxhZ3M7CgotIChOU0NhbGVu
ZGFyICopY2FsZW5kYXI7Ci0gKHZvaWQpc2V0Q2FsZW5kYXI6KE5TQ2FsZW5kYXIgKiluZXdDYWxl
bmRhcjsKCi0gKE5TTG9jYWxlICopbG9jYWxlOwotICh2b2lkKXNldExvY2FsZTooTlNMb2NhbGUg
KiluZXdMb2NhbGU7CgotIChOU1RpbWVab25lICopdGltZVpvbmU7Ci0gKHZvaWQpc2V0VGltZVpv
bmU6KE5TVGltZVpvbmUgKiluZXdUaW1lWm9uZTsKCiAgICAgICAKCi0gKE5TRGF0ZSAqKWRhdGVW
YWx1ZTsKLSAodm9pZClzZXREYXRlVmFsdWU6KE5TRGF0ZSAqKW5ld1N0YXJ0RGF0ZTsKCi0gKE5T
VGltZUludGVydmFsKXRpbWVJbnRlcnZhbDsKLSAodm9pZClzZXRUaW1lSW50ZXJ2YWw6KE5TVGlt
ZUludGVydmFsKW5ld1RpbWVJbnRlcnZhbDsKCiAgICAgICAKCi0gKE5TRGF0ZSAqKW1pbkRhdGU7
Ci0gKHZvaWQpc2V0TWluRGF0ZTooTlNEYXRlICopZGF0ZTsKCi0gKE5TRGF0ZSAqKW1heERhdGU7
Ci0gKHZvaWQpc2V0TWF4RGF0ZTooTlNEYXRlICopZGF0ZTsKCiAgICAgICAKCi0gKGlkIDxOU0Rh
dGVQaWNrZXJDZWxsRGVsZWdhdGU+KWRlbGVnYXRlOwotICh2b2lkKXNldERlbGVnYXRlOihpZCA8
TlNEYXRlUGlja2VyQ2VsbERlbGVnYXRlPilhbk9iamVjdDsKCkBlbmQKCkBwcm90b2NvbCBOU0Rh
dGVQaWNrZXJDZWxsRGVsZWdhdGUgPE5TT2JqZWN0PgpAb3B0aW9uYWwKLSAodm9pZClkYXRlUGlj
a2VyQ2VsbDooTlNEYXRlUGlja2VyQ2VsbCAqKWFEYXRlUGlja2VyQ2VsbCB2YWxpZGF0ZVByb3Bv
c2VkRGF0ZVZhbHVlOihOU0RhdGUgKiopcHJvcG9zZWREYXRlVmFsdWUgdGltZUludGVydmFsOihO
U1RpbWVJbnRlcnZhbCAqKXByb3Bvc2VkVGltZUludGVydmFsOwpAZW5kCiMgMTcxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIg
MwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9OU0RhdGVQaWNrZXIuaCIgMSAzCiMgMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0RhdGVQaWNrZXIuaCIgMwpAY2xhc3MgTlNDYWxlbmRh
ciwgTlNMb2NhbGUsIE5TVGltZVpvbmU7CgpAaW50ZXJmYWNlIE5TRGF0ZVBpY2tlciA6IE5TQ29u
dHJvbAp7Cn0KCiAgICAgICAKCi0gKE5TRGF0ZVBpY2tlclN0eWxlKWRhdGVQaWNrZXJTdHlsZTsK
LSAodm9pZClzZXREYXRlUGlja2VyU3R5bGU6KE5TRGF0ZVBpY2tlclN0eWxlKW5ld1N0eWxlOwoK
LSAoQk9PTClpc0JlemVsZWQ7Ci0gKHZvaWQpc2V0QmV6ZWxlZDooQk9PTClmbGFnOwoKLSAoQk9P
TClpc0JvcmRlcmVkOwotICh2b2lkKXNldEJvcmRlcmVkOihCT09MKWZsYWc7CgotIChCT09MKWRy
YXdzQmFja2dyb3VuZDsKLSAodm9pZClzZXREcmF3c0JhY2tncm91bmQ6KEJPT0wpZmxhZzsKCi0g
KE5TQ29sb3IgKiliYWNrZ3JvdW5kQ29sb3I7Ci0gKHZvaWQpc2V0QmFja2dyb3VuZENvbG9yOihO
U0NvbG9yICopY29sb3I7CgotIChOU0NvbG9yICopdGV4dENvbG9yOwotICh2b2lkKXNldFRleHRD
b2xvcjooTlNDb2xvciAqKWNvbG9yOwoKICAgICAgIAoKLSAoTlNEYXRlUGlja2VyTW9kZSlkYXRl
UGlja2VyTW9kZTsKLSAodm9pZClzZXREYXRlUGlja2VyTW9kZTooTlNEYXRlUGlja2VyTW9kZSlu
ZXdNb2RlOwoKICAgICAgIAoKLSAoTlNEYXRlUGlja2VyRWxlbWVudEZsYWdzKWRhdGVQaWNrZXJF
bGVtZW50czsKLSAodm9pZClzZXREYXRlUGlja2VyRWxlbWVudHM6KE5TRGF0ZVBpY2tlckVsZW1l
bnRGbGFncyllbGVtZW50RmxhZ3M7CgotIChOU0NhbGVuZGFyICopY2FsZW5kYXI7Ci0gKHZvaWQp
c2V0Q2FsZW5kYXI6KE5TQ2FsZW5kYXIgKiluZXdDYWxlbmRhcjsKCi0gKE5TTG9jYWxlICopbG9j
YWxlOwotICh2b2lkKXNldExvY2FsZTooTlNMb2NhbGUgKiluZXdMb2NhbGU7CgotIChOU1RpbWVa
b25lICopdGltZVpvbmU7Ci0gKHZvaWQpc2V0VGltZVpvbmU6KE5TVGltZVpvbmUgKiluZXdUaW1l
Wm9uZTsKCiAgICAgICAKCi0gKE5TRGF0ZSAqKWRhdGVWYWx1ZTsKLSAodm9pZClzZXREYXRlVmFs
dWU6KE5TRGF0ZSAqKW5ld1N0YXJ0RGF0ZTsKCi0gKE5TVGltZUludGVydmFsKXRpbWVJbnRlcnZh
bDsKLSAodm9pZClzZXRUaW1lSW50ZXJ2YWw6KE5TVGltZUludGVydmFsKW5ld1RpbWVJbnRlcnZh
bDsKCiAgICAgICAKCi0gKE5TRGF0ZSAqKW1pbkRhdGU7Ci0gKHZvaWQpc2V0TWluRGF0ZTooTlNE
YXRlICopZGF0ZTsKCi0gKE5TRGF0ZSAqKW1heERhdGU7Ci0gKHZvaWQpc2V0TWF4RGF0ZTooTlNE
YXRlICopZGF0ZTsKCiAgICAgICAKCi0gKGlkIDxOU0RhdGVQaWNrZXJDZWxsRGVsZWdhdGU+KWRl
bGVnYXRlOwotICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNEYXRlUGlja2VyQ2VsbERlbGVnYXRl
Pilhbk9iamVjdDsKCkBlbmQKIyAxNzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TTGV2ZWxJbmRpY2F0b3JDZWxsLmgi
IDEgMwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvTlNMZXZlbEluZGljYXRvckNlbGwuaCIgMwplbnVtIHsKICAgIE5TUmVsZXZhbmN5TGV2
ZWxJbmRpY2F0b3JTdHlsZSwKICAgIE5TQ29udGludW91c0NhcGFjaXR5TGV2ZWxJbmRpY2F0b3JT
dHlsZSwKICAgIE5TRGlzY3JldGVDYXBhY2l0eUxldmVsSW5kaWNhdG9yU3R5bGUsCiAgICBOU1Jh
dGluZ0xldmVsSW5kaWNhdG9yU3R5bGUKfTsKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TTGV2ZWxJbmRp
Y2F0b3JTdHlsZTsKCkBpbnRlcmZhY2UgTlNMZXZlbEluZGljYXRvckNlbGwgOiBOU0FjdGlvbkNl
bGwgewogIEBwcml2YXRlCiAgICBkb3VibGUgX3ZhbHVlOwogICAgZG91YmxlIF9taW5WYWx1ZTsK
ICAgIGRvdWJsZSBfbWF4VmFsdWU7CiAgICBkb3VibGUgX3dhcm5pbmdWYWx1ZTsKICAgIGRvdWJs
ZSBfY3JpdGljYWxWYWx1ZTsKICAgIGludCBfbnVtYmVyT2ZUaWNrTWFya3M7CiAgICBpbnQgX251
bWJlck9mTWFqb3JUaWNrTWFya3M7CiAgICBzdHJ1Y3QgewogdW5zaWduZWQgaW50IGluZGljYXRv
clN0eWxlOjQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRpY2tNYXJrUG9zaXRpb246MTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc2VsZWN0YWJsZToxOwogdW5zaWduZWQgaW50IHJlc2VydmVkOjI2Owog
ICAgfSBfbGlGbGFnczsKICAgIE5TUmVjdCBfY2VsbEZyYW1lOwogICAgaW50IF9yZXNlcnZlZDE7
CiAgICBpbnQgX3Jlc2VydmVkMjsKICAgIGludCBfcmVzZXJ2ZWQzOwogICAgaW50IF9yZXNlcnZl
ZDQ7Cn0KCi0gKGlkKWluaXRXaXRoTGV2ZWxJbmRpY2F0b3JTdHlsZTooTlNMZXZlbEluZGljYXRv
clN0eWxlKWxldmVsSW5kaWNhdG9yU3R5bGU7CgotIChOU0xldmVsSW5kaWNhdG9yU3R5bGUpbGV2
ZWxJbmRpY2F0b3JTdHlsZTsKLSAodm9pZClzZXRMZXZlbEluZGljYXRvclN0eWxlOihOU0xldmVs
SW5kaWNhdG9yU3R5bGUpbGV2ZWxJbmRpY2F0b3JTdHlsZTsKCi0gKGRvdWJsZSltaW5WYWx1ZTsK
LSAodm9pZClzZXRNaW5WYWx1ZTooZG91YmxlKW1pblZhbHVlOwoKLSAoZG91YmxlKW1heFZhbHVl
OwotICh2b2lkKXNldE1heFZhbHVlOihkb3VibGUpbWF4VmFsdWU7CgotIChkb3VibGUpd2Fybmlu
Z1ZhbHVlOwotICh2b2lkKXNldFdhcm5pbmdWYWx1ZTooZG91YmxlKXdhcm5pbmdWYWx1ZTsKCi0g
KGRvdWJsZSljcml0aWNhbFZhbHVlOwotICh2b2lkKXNldENyaXRpY2FsVmFsdWU6KGRvdWJsZSlj
cml0aWNhbFZhbHVlOwoKLSAodm9pZClzZXRUaWNrTWFya1Bvc2l0aW9uOihOU1RpY2tNYXJrUG9z
aXRpb24pcG9zaXRpb247Ci0gKE5TVGlja01hcmtQb3NpdGlvbil0aWNrTWFya1Bvc2l0aW9uOwoK
LSAodm9pZClzZXROdW1iZXJPZlRpY2tNYXJrczooTlNJbnRlZ2VyKWNvdW50OwotIChOU0ludGVn
ZXIpbnVtYmVyT2ZUaWNrTWFya3M7CgotICh2b2lkKXNldE51bWJlck9mTWFqb3JUaWNrTWFya3M6
KE5TSW50ZWdlciljb3VudDsKLSAoTlNJbnRlZ2VyKW51bWJlck9mTWFqb3JUaWNrTWFya3M7Cgot
IChOU1JlY3QpcmVjdE9mVGlja01hcmtBdEluZGV4OihOU0ludGVnZXIpaW5kZXg7Ci0gKGRvdWJs
ZSl0aWNrTWFya1ZhbHVlQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4OwoKLSAodm9pZClzZXRJbWFn
ZTooTlNJbWFnZSopaW1hZ2U7CgpAZW5kCiMgMTczICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU0xldmVsSW5kaWNhdG9y
LmgiIDEgMwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvTlNMZXZlbEluZGljYXRvci5oIiAzCkBpbnRlcmZhY2UgTlNMZXZlbEluZGljYXRv
ciA6IE5TQ29udHJvbCB7Cn0KCi0gKGRvdWJsZSltaW5WYWx1ZTsKLSAodm9pZClzZXRNaW5WYWx1
ZTooZG91YmxlKW1pblZhbHVlOwoKLSAoZG91YmxlKW1heFZhbHVlOwotICh2b2lkKXNldE1heFZh
bHVlOihkb3VibGUpbWF4VmFsdWU7CgotIChkb3VibGUpd2FybmluZ1ZhbHVlOwotICh2b2lkKXNl
dFdhcm5pbmdWYWx1ZTooZG91YmxlKXdhcm5pbmdWYWx1ZTsKCi0gKGRvdWJsZSljcml0aWNhbFZh
bHVlOwotICh2b2lkKXNldENyaXRpY2FsVmFsdWU6KGRvdWJsZSljcml0aWNhbFZhbHVlOwoKLSAo
TlNUaWNrTWFya1Bvc2l0aW9uKXRpY2tNYXJrUG9zaXRpb247Ci0gKHZvaWQpc2V0VGlja01hcmtQ
b3NpdGlvbjooTlNUaWNrTWFya1Bvc2l0aW9uKXBvc2l0aW9uOwoKLSAoTlNJbnRlZ2VyKW51bWJl
ck9mVGlja01hcmtzOwotICh2b2lkKXNldE51bWJlck9mVGlja01hcmtzOihOU0ludGVnZXIpY291
bnQ7CgotIChOU0ludGVnZXIpbnVtYmVyT2ZNYWpvclRpY2tNYXJrczsKLSAodm9pZClzZXROdW1i
ZXJPZk1ham9yVGlja01hcmtzOihOU0ludGVnZXIpY291bnQ7CgotIChkb3VibGUpdGlja01hcmtW
YWx1ZUF0SW5kZXg6KE5TSW50ZWdlcilpbmRleDsKLSAoTlNSZWN0KXJlY3RPZlRpY2tNYXJrQXRJ
bmRleDooTlNJbnRlZ2VyKWluZGV4OwoKQGVuZAojIDE3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKCiMgMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUGVyc2lzdGVu
dERvY3VtZW50LmgiIDEgMwojIDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNQZXJzaXN0ZW50RG9jdW1lbnQuaCIgMwpAY2xhc3MgTlNNYW5h
Z2VkT2JqZWN0TW9kZWwsIE5TTWFuYWdlZE9iamVjdENvbnRleHQ7CgpAaW50ZXJmYWNlIE5TUGVy
c2lzdGVudERvY3VtZW50IDogTlNEb2N1bWVudCB7CkBwcml2YXRlCiAgICBOU01hbmFnZWRPYmpl
Y3RNb2RlbCAqX21hbmFnZWRPYmplY3RNb2RlbDsKICAgIE5TTWFuYWdlZE9iamVjdENvbnRleHQg
Kl9tYW5hZ2VkT2JqZWN0Q29udGV4dDsKIGlkIF9zdG9yZTsKICAgIHZvaWQgKl9yZXNlcnZlZDsK
ICAgIHZvaWQgKl9yZXNlcnZlZDI7CiAgICB2b2lkICpfcmVzZXJ2ZWQzOwogICAgdm9pZCAqX3Jl
c2VydmVkNDsKfQoKCi0gKE5TTWFuYWdlZE9iamVjdENvbnRleHQgKiltYW5hZ2VkT2JqZWN0Q29u
dGV4dDsKLSAodm9pZClzZXRNYW5hZ2VkT2JqZWN0Q29udGV4dDooTlNNYW5hZ2VkT2JqZWN0Q29u
dGV4dCAqKW1hbmFnZWRPYmplY3RDb250ZXh0OwoKLSAoaWQpbWFuYWdlZE9iamVjdE1vZGVsOwoK
CgoKLSAoQk9PTCljb25maWd1cmVQZXJzaXN0ZW50U3RvcmVDb29yZGluYXRvckZvclVSTDooTlNV
UkwgKil1cmwgb2ZUeXBlOihOU1N0cmluZyAqKWZpbGVUeXBlIG1vZGVsQ29uZmlndXJhdGlvbjoo
TlNTdHJpbmcgKiljb25maWd1cmF0aW9uIHN0b3JlT3B0aW9uczooTlNEaWN0aW9uYXJ5ICopc3Rv
cmVPcHRpb25zIGVycm9yOihOU0Vycm9yICoqKWVycm9yOwoKCgotIChOU1N0cmluZyAqKXBlcnNp
c3RlbnRTdG9yZVR5cGVGb3JGaWxlVHlwZTooTlNTdHJpbmcgKilmaWxlVHlwZTsKCi0gKEJPT0wp
d3JpdGVUb1VSTDooTlNVUkwgKilhYnNvbHV0ZVVSTCBvZlR5cGU6KE5TU3RyaW5nICopdHlwZU5h
bWUgZm9yU2F2ZU9wZXJhdGlvbjooTlNTYXZlT3BlcmF0aW9uVHlwZSlzYXZlT3BlcmF0aW9uIG9y
aWdpbmFsQ29udGVudHNVUkw6KE5TVVJMICopYWJzb2x1dGVPcmlnaW5hbENvbnRlbnRzVVJMIGVy
cm9yOihOU0Vycm9yICoqKWVycm9yOwoKLSAoQk9PTClyZWFkRnJvbVVSTDooTlNVUkwgKilhYnNv
bHV0ZVVSTCBvZlR5cGU6KE5TU3RyaW5nICopdHlwZU5hbWUgZXJyb3I6KE5TRXJyb3IgKiopZXJy
b3I7CgotIChCT09MKXJldmVydFRvQ29udGVudHNPZlVSTDooTlNVUkwgKilpbkFic29sdXRlVVJM
IG9mVHlwZTooTlNTdHJpbmcgKilpblR5cGVOYW1lIGVycm9yOihOU0Vycm9yICoqKW91dEVycm9y
OwoKQGVuZAoKQGludGVyZmFjZSBOU1BlcnNpc3RlbnREb2N1bWVudCAoTlNEZXByZWNhdGVkKQoK
Ci0gKEJPT0wpY29uZmlndXJlUGVyc2lzdGVudFN0b3JlQ29vcmRpbmF0b3JGb3JVUkw6KE5TVVJM
ICopdXJsIG9mVHlwZTooTlNTdHJpbmcgKilmaWxlVHlwZSBlcnJvcjooTlNFcnJvciAqKillcnJv
ciBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgpAZW5kCiMgMTc2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvQXBwS2l0LmgiIDIgMwojIDEg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1J1
bGVFZGl0b3IuaCIgMSAzCiMgMzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9OU1J1bGVFZGl0b3IuaCIgMwpAY2xhc3MgTlNNdXRhYmxlQXJyYXks
IE5TSW5kZXhTZXQsIE5TVmlldywgTlNQcmVkaWNhdGUsIE5TU3RyaW5nLCBOU1ZpZXdBbmltYXRp
b24sIE5TVGltZXI7CkBwcm90b2NvbCBOU1J1bGVFZGl0b3JEZWxlZ2F0ZTsKCmVudW0gewogICAg
TlNSdWxlRWRpdG9yTmVzdGluZ01vZGVTaW5nbGUsCiAgICBOU1J1bGVFZGl0b3JOZXN0aW5nTW9k
ZUxpc3QsCiAgICBOU1J1bGVFZGl0b3JOZXN0aW5nTW9kZUNvbXBvdW5kLAogICAgTlNSdWxlRWRp
dG9yTmVzdGluZ01vZGVTaW1wbGUKfTsKCnR5cGVkZWYgTlNVSW50ZWdlciBOU1J1bGVFZGl0b3JO
ZXN0aW5nTW9kZTsKCmVudW0gewogICAgTlNSdWxlRWRpdG9yUm93VHlwZVNpbXBsZSwKICAgIE5T
UnVsZUVkaXRvclJvd1R5cGVDb21wb3VuZAp9OwoKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TUnVsZUVk
aXRvclJvd1R5cGU7CgpAaW50ZXJmYWNlIE5TUnVsZUVkaXRvciA6IE5TQ29udHJvbCB7CiAgICBA
cHJpdmF0ZQogICAgaWQgX3J1bGVEYXRhU291cmNlOwogICAgaWQgX3J1bGVEZWxlZ2F0ZTsKICAg
IE5TSW5kZXhTZXQgKl9kcmFnZ2luZ1Jvd3M7CiAgICBOU011dGFibGVBcnJheSAqX3Jvd0NhY2hl
OwogICAgTlNWaWV3ICpfc2xpY2VzSG9sZGVyOwogICAgTlNNdXRhYmxlQXJyYXkgKl9zbGljZXM7
CiAgICBDR0Zsb2F0IF9zbGljZUhlaWdodDsKICAgIENHRmxvYXQgX2FsaWdubWVudEdyaWRXaWR0
aDsKICAgIE5TSW50ZWdlciBfc3Vidmlld0luZGV4T2ZEcm9wTGluZTsKICAgIGlkIF9kcm9wTGlu
ZVZpZXc7CiAgICBOU1ZpZXdBbmltYXRpb24gKl9jdXJyZW50QW5pbWF0aW9uOwogICAgTlNUaW1l
ciAqX2ZyYW1lVGltZXI7CiAgICBOU1N0cmluZyAqX3N0cmluZ3NGaWxlTmFtZTsKICAgIGlkIF9z
dGFuZGFyZExvY2FsaXplcjsKICAgIGlkIF9oZWFkZXJMb2NhbGl6ZXI7CiAgICBOU1ByZWRpY2F0
ZSAqX3ByZWRpY2F0ZTsKICAgIE5TSW50ZWdlciBfbmVzdGluZ01vZGU7CiAgICBzdHJ1Y3Qgewog
dW5zaWduZWQgZWxpZGVVcGRhdGluZzoxOwogdW5zaWduZWQgbGFzdEFsdGVybmF0ZUtleVZhbHVl
OjE7CiB1bnNpZ25lZCBleHRlbmRlZERlbGVnYXRlQ2FsbHM6MTsKIHVuc2lnbmVkIGVkaXRhYmxl
OjE7CiB1bnNpZ25lZCBzZXR0aW5nU2l6ZToxOwogdW5zaWduZWQgc3VwcHJlc3NLZXlEb3duOjE7
CiB1bnNpZ25lZCBkcm9wV2FzU3VjY2Vzc2Z1bDoxOwogdW5zaWduZWQgZGVsZWdhdGVXYW50c1Zh
bGlkYXRpb246MTsKIHVuc2lnbmVkIGRpc2FsbG93RW1wdHk6MTsKIHVuc2lnbmVkIGxhc3REcmV3
V2l0aEZSQXBwZWFyYW5jZToxOwogdW5zaWduZWQgYWxsb3dzRW1wdHlDb21wb3VuZFJvd3M6MTsK
IHVuc2lnbmVkIGRyb3BDaGFuZ2VkUm93Q291bnQ6MTsKIHVuc2lnbmVkIHJlc2VydmVkOjIwOwog
ICAgfSBfcnVsZUVkaXRvckZsYWdzOwogICAgTlNTdHJpbmcgKl90eXBlS2V5UGF0aDsKICAgIE5T
U3RyaW5nICpfaXRlbXNLZXlQYXRoOwogICAgTlNTdHJpbmcgKl92YWx1ZXNLZXlQYXRoOwogICAg
TlNTdHJpbmcgKl9zdWJyb3dzQXJyYXlLZXlQYXRoOwogICAgQ2xhc3MgX3Jvd0NsYXNzOwogICAg
aWQgX2JvdW5kQXJyYXlPd25lcjsKICAgIE5TU3RyaW5nICpfYm91bmRBcnJheUtleVBhdGg7CiAg
ICBpZCBfcnVsZVJlc2VydmVkMTsKICAgIE5TSW50ZWdlciBfbGFzdFJvdzsKICAgIGlkIF9ydWxl
UmVzZXJ2ZWQyOwp9CgoKCgotICh2b2lkKXNldERlbGVnYXRlOihpZCA8TlNSdWxlRWRpdG9yRGVs
ZWdhdGU+KWRlbGVnYXRlOwotIChpZCA8TlNSdWxlRWRpdG9yRGVsZWdhdGU+KWRlbGVnYXRlOwoK
Ci0gKHZvaWQpc2V0Rm9ybWF0dGluZ1N0cmluZ3NGaWxlbmFtZTooTlNTdHJpbmcgKilzdHJpbmdz
RmlsZW5hbWU7Ci0gKE5TU3RyaW5nICopZm9ybWF0dGluZ1N0cmluZ3NGaWxlbmFtZTsKCgotICh2
b2lkKXNldEZvcm1hdHRpbmdEaWN0aW9uYXJ5OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Owot
IChOU0RpY3Rpb25hcnkgKilmb3JtYXR0aW5nRGljdGlvbmFyeTsKCgotICh2b2lkKXJlbG9hZENy
aXRlcmlhOwoKCi0gKHZvaWQpc2V0TmVzdGluZ01vZGU6KE5TUnVsZUVkaXRvck5lc3RpbmdNb2Rl
KW1vZGU7Ci0gKE5TUnVsZUVkaXRvck5lc3RpbmdNb2RlKW5lc3RpbmdNb2RlOwoKCi0gKHZvaWQp
c2V0Um93SGVpZ2h0OihDR0Zsb2F0KWhlaWdodDsKLSAoQ0dGbG9hdClyb3dIZWlnaHQ7CgoKLSAo
dm9pZClzZXRFZGl0YWJsZTooQk9PTCllZGl0YWJsZTsKLSAoQk9PTClpc0VkaXRhYmxlOwoKCi0g
KHZvaWQpc2V0Q2FuUmVtb3ZlQWxsUm93czooQk9PTCl2YWw7Ci0gKEJPT0wpY2FuUmVtb3ZlQWxs
Um93czsKCgoKCi0gKE5TUHJlZGljYXRlICopcHJlZGljYXRlOwoKCi0gKHZvaWQpcmVsb2FkUHJl
ZGljYXRlOwoKCi0gKE5TUHJlZGljYXRlICopcHJlZGljYXRlRm9yUm93OihOU0ludGVnZXIpcm93
OwoKCgoKLSAoTlNJbnRlZ2VyKW51bWJlck9mUm93czsKCgotIChOU0luZGV4U2V0ICopc3Vicm93
SW5kZXhlc0ZvclJvdzooTlNJbnRlZ2VyKXJvd0luZGV4OwoKCi0gKE5TQXJyYXkgKiljcml0ZXJp
YUZvclJvdzooTlNJbnRlZ2VyKXJvdzsKCgotIChOU0FycmF5ICopZGlzcGxheVZhbHVlc0ZvclJv
dzooTlNJbnRlZ2VyKXJvdzsKCgotIChOU0ludGVnZXIpcm93Rm9yRGlzcGxheVZhbHVlOihpZClk
aXNwbGF5VmFsdWU7CgoKLSAoTlNSdWxlRWRpdG9yUm93VHlwZSlyb3dUeXBlRm9yUm93OihOU0lu
dGVnZXIpcm93SW5kZXg7CgoKLSAoTlNJbnRlZ2VyKXBhcmVudFJvd0ZvclJvdzooTlNJbnRlZ2Vy
KXJvd0luZGV4OwoKCgoKLSAodm9pZClhZGRSb3c6KGlkKXNlbmRlcjsKCgotICh2b2lkKWluc2Vy
dFJvd0F0SW5kZXg6KE5TSW50ZWdlcilyb3dJbmRleCB3aXRoVHlwZTooTlNSdWxlRWRpdG9yUm93
VHlwZSlyb3dUeXBlIGFzU3Vicm93T2ZSb3c6KE5TSW50ZWdlcilwYXJlbnRSb3cgYW5pbWF0ZToo
Qk9PTClzaG91bGRBbmltYXRlOwoKCi0gKHZvaWQpc2V0Q3JpdGVyaWE6KE5TQXJyYXkgKiljcml0
ZXJpYSBhbmREaXNwbGF5VmFsdWVzOihOU0FycmF5ICopdmFsdWVzIGZvclJvd0F0SW5kZXg6KE5T
SW50ZWdlcilyb3dJbmRleDsKCgotICh2b2lkKXJlbW92ZVJvd0F0SW5kZXg6KE5TSW50ZWdlcily
b3dJbmRleDsKCgotICh2b2lkKXJlbW92ZVJvd3NBdEluZGV4ZXM6KE5TSW5kZXhTZXQgKilyb3dJ
bmRleGVzIGluY2x1ZGVTdWJyb3dzOihCT09MKWluY2x1ZGVTdWJyb3dzOwoKCi0gKE5TSW5kZXhT
ZXQgKilzZWxlY3RlZFJvd0luZGV4ZXM7CgoKLSAodm9pZClzZWxlY3RSb3dJbmRleGVzOihOU0lu
ZGV4U2V0ICopaW5kZXhlcyBieUV4dGVuZGluZ1NlbGVjdGlvbjooQk9PTClleHRlbmQ7CgoKCgot
ICh2b2lkKXNldFJvd0NsYXNzOihDbGFzcylyb3dDbGFzczsKLSAoQ2xhc3Mpcm93Q2xhc3M7CgoK
LSAodm9pZClzZXRSb3dUeXBlS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoOwotIChOU1N0cmlu
ZyAqKXJvd1R5cGVLZXlQYXRoOwoKCi0gKHZvaWQpc2V0U3Vicm93c0tleVBhdGg6KE5TU3RyaW5n
ICopa2V5UGF0aDsKLSAoTlNTdHJpbmcgKilzdWJyb3dzS2V5UGF0aDsKCgotICh2b2lkKXNldENy
aXRlcmlhS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoOwotIChOU1N0cmluZyAqKWNyaXRlcmlh
S2V5UGF0aDsKCgotICh2b2lkKXNldERpc3BsYXlWYWx1ZXNLZXlQYXRoOihOU1N0cmluZyAqKWtl
eVBhdGg7Ci0gKE5TU3RyaW5nICopZGlzcGxheVZhbHVlc0tleVBhdGg7CgpAZW5kCgoKQHByb3Rv
Y29sIE5TUnVsZUVkaXRvckRlbGVnYXRlIDxOU09iamVjdD4KCkByZXF1aXJlZAoKCgoKLSAoTlNJ
bnRlZ2VyKXJ1bGVFZGl0b3I6KE5TUnVsZUVkaXRvciAqKWVkaXRvciBudW1iZXJPZkNoaWxkcmVu
Rm9yQ3JpdGVyaW9uOihpZCljcml0ZXJpb24gd2l0aFJvd1R5cGU6KE5TUnVsZUVkaXRvclJvd1R5
cGUpcm93VHlwZTsKCgotIChpZClydWxlRWRpdG9yOihOU1J1bGVFZGl0b3IgKillZGl0b3IgY2hp
bGQ6KE5TSW50ZWdlcilpbmRleCBmb3JDcml0ZXJpb246KGlkKWNyaXRlcmlvbiB3aXRoUm93VHlw
ZTooTlNSdWxlRWRpdG9yUm93VHlwZSlyb3dUeXBlOwoKCi0gKGlkKXJ1bGVFZGl0b3I6KE5TUnVs
ZUVkaXRvciAqKWVkaXRvciBkaXNwbGF5VmFsdWVGb3JDcml0ZXJpb246KGlkKWNyaXRlcmlvbiBp
blJvdzooTlNJbnRlZ2VyKXJvdzsKCkBvcHRpb25hbAoKCgoKCi0gKE5TRGljdGlvbmFyeSAqKXJ1
bGVFZGl0b3I6KE5TUnVsZUVkaXRvciAqKWVkaXRvciBwcmVkaWNhdGVQYXJ0c0ZvckNyaXRlcmlv
bjooaWQpY3JpdGVyaW9uIHdpdGhEaXNwbGF5VmFsdWU6KGlkKXZhbHVlIGluUm93OihOU0ludGVn
ZXIpcm93OwoKCi0gKHZvaWQpcnVsZUVkaXRvclJvd3NEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uOwoKQGVuZAoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNS
dWxlRWRpdG9yUHJlZGljYXRlTGVmdEV4cHJlc3Npb247CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBj
b25zdCBOU1J1bGVFZGl0b3JQcmVkaWNhdGVSaWdodEV4cHJlc3Npb247CmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBOU1J1bGVFZGl0b3JQcmVkaWNhdGVDb21wYXJpc29uTW9kaWZpZXI7CmV4
dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1J1bGVFZGl0b3JQcmVkaWNhdGVPcHRpb25zOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNSdWxlRWRpdG9yUHJlZGljYXRlT3BlcmF0b3JU
eXBlOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNSdWxlRWRpdG9yUHJlZGljYXRlQ3Vz
dG9tU2VsZWN0b3I7CgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNSdWxlRWRpdG9yUHJl
ZGljYXRlQ29tcG91bmRUeXBlOwoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqY29uc3QgTlNSdWxl
RWRpdG9yUm93c0RpZENoYW5nZU5vdGlmaWNhdGlvbjsKIyAxNzcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUHJlZGlj
YXRlRWRpdG9yLmgiIDEgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNQcmVkaWNhdGVFZGl0b3IuaCIgMwpAY2xhc3MgTlNQcmVkaWNh
dGVUZW1wbGF0ZSwgTlNBcnJheTsKCkBpbnRlcmZhY2UgTlNQcmVkaWNhdGVFZGl0b3IgOiBOU1J1
bGVFZGl0b3IgewogICAgaWQgX2FsbFRlbXBsYXRlczsKICAgIE5TQXJyYXkgKl9yb290VHJlZXM7
CiAgICBOU0FycmF5ICpfcm9vdEhlYWRlclRyZWVzOwogICAgaWQgX3ByZWRpY2F0ZVRhcmdldDsK
ICAgIFNFTCBfcHJlZGljYXRlQWN0aW9uOwogICAgc3RydWN0IHsKIHVuc2lnbmVkIHN1cHByZXNz
QWN0aW9uOjQ7CiB1bnNpZ25lZCByZXNlcnZlZDoyODsKICAgIH0gX3BlRmxhZ3M7CiAgICBpZCBf
cHJlZGljYXRlRWRpdG9yUmVzZXJ2ZWRbM107Cn0KCgoKLSAodm9pZClzZXRSb3dUZW1wbGF0ZXM6
KE5TQXJyYXkgKilyb3dUZW1wbGF0ZXM7CgoKCi0gKE5TQXJyYXkgKilyb3dUZW1wbGF0ZXM7CgpA
ZW5kCiMgMTc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvQXBwS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9OU1ByZWRpY2F0ZUVkaXRvclJvd1RlbXBsYXRlLmgiIDEgMwoj
IDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
TlNQcmVkaWNhdGVFZGl0b3JSb3dUZW1wbGF0ZS5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNBdHRyaWJ1dGVEZXNjcmlwdGlv
bi5oIiAxIDMKIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3
b3JrL0hlYWRlcnMvTlNBdHRyaWJ1dGVEZXNjcmlwdGlvbi5oIiAzCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNQcm9wZXJ0eURlc2Ny
aXB0aW9uLmgiIDEgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRGF0YS5m
cmFtZXdvcmsvSGVhZGVycy9OU1Byb3BlcnR5RGVzY3JpcHRpb24uaCIgMwpAY2xhc3MgTlNBcnJh
eTsKQGNsYXNzIE5TRGljdGlvbmFyeTsKQGNsYXNzIE5TRW50aXR5RGVzY3JpcHRpb247CkBjbGFz
cyBOU011dGFibGVBcnJheTsKQGNsYXNzIE5TTXV0YWJsZURpY3Rpb25hcnk7CkBjbGFzcyBOU1N0
cmluZzsKCgpAaW50ZXJmYWNlIE5TUHJvcGVydHlEZXNjcmlwdGlvbiA6IE5TT2JqZWN0IDxOU0Nv
ZGluZywgTlNDb3B5aW5nPiB7CkBwcml2YXRlCiB2b2lkICpfcmVzZXJ2ZWQ7CiBOU1N0cmluZyAq
X3ZlcnNpb25IYXNoTW9kaWZpZXI7CiBOU0RhdGEgKl92ZXJzaW9uSGFzaDsKICAgIF9fYXR0cmli
dXRlX18oKG9iamNfZ2Mod2VhaykpKSBOU0VudGl0eURlc2NyaXB0aW9uICpfZW50aXR5OwogICAg
TlNTdHJpbmcgKl9uYW1lOwogICAgTlNBcnJheSAqX3ZhbGlkYXRpb25QcmVkaWNhdGVzOwogICAg
TlNBcnJheSAqX3ZhbGlkYXRpb25XYXJuaW5nczsKICAgIHN0cnVjdCBfX3Byb3BlcnR5RGVzY3Jp
cHRpb25GbGFncyB7CiAgICAgICAgdW5zaWduZWQgaW50IF9pc1JlYWRPbmx5OjE7CiAgICAgICAg
dW5zaWduZWQgaW50IF9pc1RyYW5zaWVudDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfaXNPcHRp
b25hbDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfaXNJbmRleGVkOjE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IF9za2lwVmFsaWRhdGlvbjoxOwogICAgICAgIHVuc2lnbmVkIGludCBfaXNJbmRleGVk
QnlTcG90bGlnaHQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX2lzU3RvcmVkSW5FeHRlcm5hbFJl
Y29yZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfcmVzZXJ2ZWRQcm9wZXJ0eURlc2NyaXB0aW9u
OjI1OwogICAgfSBfcHJvcGVydHlEZXNjcmlwdGlvbkZsYWdzOwogICAgdm9pZCAqX2V4dHJhSXZh
cnM7CiAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfdXNlckluZm87CiBsb25nIF9lbnRpdHlzUmVm
ZXJlbmNlSURGb3JQcm9wZXJ0eTsKfQoKLSAoTlNFbnRpdHlEZXNjcmlwdGlvbiAqKWVudGl0eTsK
Ci0gKE5TU3RyaW5nICopbmFtZTsKLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWU7CgoK
LSAoQk9PTClpc09wdGlvbmFsOwotICh2b2lkKXNldE9wdGlvbmFsOihCT09MKWZsYWc7CgoKLSAo
Qk9PTClpc1RyYW5zaWVudDsKLSAodm9pZClzZXRUcmFuc2llbnQ6KEJPT0wpZmxhZzsKCgotIChO
U0FycmF5ICopdmFsaWRhdGlvblByZWRpY2F0ZXM7Ci0gKE5TQXJyYXkgKil2YWxpZGF0aW9uV2Fy
bmluZ3M7Ci0gKHZvaWQpc2V0VmFsaWRhdGlvblByZWRpY2F0ZXM6KE5TQXJyYXkgKil2YWxpZGF0
aW9uUHJlZGljYXRlcyB3aXRoVmFsaWRhdGlvbldhcm5pbmdzOihOU0FycmF5ICopdmFsaWRhdGlv
bldhcm5pbmdzOwoKLSAoTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0gKHZvaWQpc2V0VXNlcklu
Zm86KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7CgoKCi0gKEJPT0wpaXNJbmRleGVkIDsKLSAo
dm9pZClzZXRJbmRleGVkOihCT09MKWZsYWcgOwoKCgotIChOU0RhdGEgKil2ZXJzaW9uSGFzaCA7
CgoKCi0gKE5TU3RyaW5nICopdmVyc2lvbkhhc2hNb2RpZmllciA7Ci0gKHZvaWQpc2V0VmVyc2lv
bkhhc2hNb2RpZmllcjooTlNTdHJpbmcgKiltb2RpZmllclN0cmluZyA7CgoKCi0gKEJPT0wpaXNJ
bmRleGVkQnlTcG90bGlnaHQgOwotICh2b2lkKXNldEluZGV4ZWRCeVNwb3RsaWdodDooQk9PTClm
bGFnIDsKCgoKLSAoQk9PTClpc1N0b3JlZEluRXh0ZXJuYWxSZWNvcmQgOwotICh2b2lkKXNldFN0
b3JlZEluRXh0ZXJuYWxSZWNvcmQ6KEJPT0wpZmxhZyA7CgotIChOU1N0cmluZyAqKXJlbmFtaW5n
SWRlbnRpZmllciA7Ci0gKHZvaWQpc2V0UmVuYW1pbmdJZGVudGlmaWVyOihOU1N0cmluZyAqKXZh
bHVlIDsKCkBlbmQKIyAxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJh
bWV3b3JrL0hlYWRlcnMvTlNBdHRyaWJ1dGVEZXNjcmlwdGlvbi5oIiAyIDMKCkBjbGFzcyBOU0Vu
dGl0eURlc2NyaXB0aW9uOwpAY2xhc3MgTlNTdHJpbmc7CgoKIGVudW0gewogICAgTlNVbmRlZmlu
ZWRBdHRyaWJ1dGVUeXBlID0gMCwKICAgIE5TSW50ZWdlcjE2QXR0cmlidXRlVHlwZSA9IDEwMCwK
ICAgIE5TSW50ZWdlcjMyQXR0cmlidXRlVHlwZSA9IDIwMCwKICAgIE5TSW50ZWdlcjY0QXR0cmli
dXRlVHlwZSA9IDMwMCwKICAgIE5TRGVjaW1hbEF0dHJpYnV0ZVR5cGUgPSA0MDAsCiAgICBOU0Rv
dWJsZUF0dHJpYnV0ZVR5cGUgPSA1MDAsCiAgICBOU0Zsb2F0QXR0cmlidXRlVHlwZSA9IDYwMCwK
ICAgIE5TU3RyaW5nQXR0cmlidXRlVHlwZSA9IDcwMCwKICAgIE5TQm9vbGVhbkF0dHJpYnV0ZVR5
cGUgPSA4MDAsCiAgICBOU0RhdGVBdHRyaWJ1dGVUeXBlID0gOTAwLAogICAgTlNCaW5hcnlEYXRh
QXR0cmlidXRlVHlwZSA9IDEwMDAKCgoKICAgICwgTlNUcmFuc2Zvcm1hYmxlQXR0cmlidXRlVHlw
ZSA9IDE4MDAKCgogICwgTlNPYmplY3RJREF0dHJpYnV0ZVR5cGUgPSAyMDAwCgogfTsKCnR5cGVk
ZWYgTlNVSW50ZWdlciBOU0F0dHJpYnV0ZVR5cGU7CgoKQGludGVyZmFjZSBOU0F0dHJpYnV0ZURl
c2NyaXB0aW9uIDogTlNQcm9wZXJ0eURlc2NyaXB0aW9uIHsKQHByaXZhdGUKIENsYXNzIF9hdHRy
aWJ1dGVWYWx1ZUNsYXNzOwogTlNTdHJpbmcgKl92YWx1ZVRyYW5zZm9ybWVyTmFtZTsKICAgIE5T
QXR0cmlidXRlVHlwZSBfdHlwZTsKICAgIE5TU3RyaW5nICpfYXR0cmlidXRlVmFsdWVDbGFzc05h
bWU7CiAgICBzdHJ1Y3QgX19hdHRyaWJ1dGVEZXNjcmlwdGlvbkZsYWdzIHsKICAgICAgICB1bnNp
Z25lZCBpbnQgX3VzZUZvckxvY2tpbmc6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVk
QXR0cmlidXRlRGVzY3JpcHRpb246MzE7CiAgICB9IF9hdHRyaWJ1dGVEZXNjcmlwdGlvbkZsYWdz
OwogICAgaWQgX2RlZmF1bHRWYWx1ZTsKfQoKCi0gKE5TQXR0cmlidXRlVHlwZSlhdHRyaWJ1dGVU
eXBlOwotICh2b2lkKXNldEF0dHJpYnV0ZVR5cGU6KE5TQXR0cmlidXRlVHlwZSl0eXBlOwoKLSAo
TlNTdHJpbmcgKilhdHRyaWJ1dGVWYWx1ZUNsYXNzTmFtZTsKCi0gKGlkKWRlZmF1bHRWYWx1ZTsK
LSAodm9pZClzZXREZWZhdWx0VmFsdWU6KGlkKXZhbHVlOwoKCgoKCi0gKHZvaWQpc2V0QXR0cmli
dXRlVmFsdWVDbGFzc05hbWU6KE5TU3RyaW5nICopY2xhc3NOYW1lOwoKCgotIChOU0RhdGEgKil2
ZXJzaW9uSGFzaDsKCgoKLSAoTlNTdHJpbmcgKil2YWx1ZVRyYW5zZm9ybWVyTmFtZTsKLSAodm9p
ZClzZXRWYWx1ZVRyYW5zZm9ybWVyTmFtZTooTlNTdHJpbmcgKilzdHJpbmc7CgoKCkBlbmQKIyAx
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05T
UHJlZGljYXRlRWRpdG9yUm93VGVtcGxhdGUuaCIgMiAzCgpAY2xhc3MgTlNQcmVkaWNhdGUsIE5T
QXJyYXksIE5TRW50aXR5RGVzY3JpcHRpb247CgpAaW50ZXJmYWNlIE5TUHJlZGljYXRlRWRpdG9y
Um93VGVtcGxhdGUgOiBOU09iamVjdCA8TlNDb2RpbmcsIE5TQ29weWluZz4gewogICAgQHByaXZh
dGUKICAgIE5TSW50ZWdlciBfdGVtcGxhdGVUeXBlOwogICAgTlNVSW50ZWdlciBfcHJlZGljYXRl
T3B0aW9uczsKICAgIE5TVUludGVnZXIgX3ByZWRpY2F0ZU1vZGlmaWVyOwogICAgTlNVSW50ZWdl
ciBfbGVmdEF0dHJpYnV0ZVR5cGU7CiAgICBOU1VJbnRlZ2VyIF9yaWdodEF0dHJpYnV0ZVR5cGU7
CiAgICBOU0FycmF5ICpfdmlld3M7CgogICAgc3RydWN0IHsKIHVuc2lnbmVkIGxlZnRJc1dpbGRj
YXJkOjE7CiB1bnNpZ25lZCByaWdodElzV2lsZGNhcmQ6MTsKIHVuc2lnbmVkIHJlc2VydmVkOjMw
OwogICAgfSBfcHRGbGFnczsKCiAgICBpZCBfcGF0dGVyblJlc2VydmVkOwp9CgoKCi0gKGRvdWJs
ZSltYXRjaEZvclByZWRpY2F0ZTooTlNQcmVkaWNhdGUgKilwcmVkaWNhdGU7CgoKCi0gKE5TQXJy
YXkgKil0ZW1wbGF0ZVZpZXdzOwoKCgotICh2b2lkKXNldFByZWRpY2F0ZTooTlNQcmVkaWNhdGUg
KilwcmVkaWNhdGU7CgoKLSAoTlNQcmVkaWNhdGUgKilwcmVkaWNhdGVXaXRoU3VicHJlZGljYXRl
czooTlNBcnJheSAqKXN1YnByZWRpY2F0ZXM7CgoKCi0gKE5TQXJyYXkgKilkaXNwbGF5YWJsZVN1
YnByZWRpY2F0ZXNPZlByZWRpY2F0ZTooTlNQcmVkaWNhdGUgKilwcmVkaWNhdGU7CgoKCi0gKGlk
KWluaXRXaXRoTGVmdEV4cHJlc3Npb25zOihOU0FycmF5ICopbGVmdEV4cHJlc3Npb25zIHJpZ2h0
RXhwcmVzc2lvbnM6KE5TQXJyYXkgKilyaWdodEV4cHJlc3Npb25zIG1vZGlmaWVyOihOU0NvbXBh
cmlzb25QcmVkaWNhdGVNb2RpZmllciltb2RpZmllciBvcGVyYXRvcnM6KE5TQXJyYXkgKilvcGVy
YXRvcnMgb3B0aW9uczooTlNVSW50ZWdlcilvcHRpb25zOwoKCgotIChpZClpbml0V2l0aExlZnRF
eHByZXNzaW9uczooTlNBcnJheSAqKWxlZnRFeHByZXNzaW9ucyByaWdodEV4cHJlc3Npb25BdHRy
aWJ1dGVUeXBlOihOU0F0dHJpYnV0ZVR5cGUpYXR0cmlidXRlVHlwZSBtb2RpZmllcjooTlNDb21w
YXJpc29uUHJlZGljYXRlTW9kaWZpZXIpbW9kaWZpZXIgb3BlcmF0b3JzOihOU0FycmF5ICopb3Bl
cmF0b3JzIG9wdGlvbnM6KE5TVUludGVnZXIpb3B0aW9uczsKCgoKLSAoaWQpaW5pdFdpdGhDb21w
b3VuZFR5cGVzOihOU0FycmF5ICopY29tcG91bmRUeXBlczsKCgoKLSAoTlNBcnJheSAqKWxlZnRF
eHByZXNzaW9uczsKLSAoTlNBcnJheSAqKXJpZ2h0RXhwcmVzc2lvbnM7Ci0gKE5TQXR0cmlidXRl
VHlwZSlyaWdodEV4cHJlc3Npb25BdHRyaWJ1dGVUeXBlOwotIChOU0NvbXBhcmlzb25QcmVkaWNh
dGVNb2RpZmllciltb2RpZmllcjsKLSAoTlNBcnJheSAqKW9wZXJhdG9yczsKLSAoTlNVSW50ZWdl
cilvcHRpb25zOwotIChOU0FycmF5ICopY29tcG91bmRUeXBlczsKCgoKKyAoTlNBcnJheSAqKXRl
bXBsYXRlc1dpdGhBdHRyaWJ1dGVLZXlQYXRoczooTlNBcnJheSAqKWtleVBhdGhzIGluRW50aXR5
RGVzY3JpcHRpb246KE5TRW50aXR5RGVzY3JpcHRpb24gKillbnRpdHlEZXNjcmlwdGlvbjsKCkBl
bmQKIyAxNzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9BcHBLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0
LmZyYW1ld29yay9IZWFkZXJzL05TUGF0aENlbGwuaCIgMSAzCiMgMTQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1BhdGhDZWxsLmgiIDMKQGNs
YXNzIE5TU3RyaW5nLCBOU0ltYWdlLCBOU011dGFibGVBcnJheSwgTlNBcnJheSwgTlNBbmltYXRp
b24sIE5TUGF0aENvbXBvbmVudENlbGwsIE5TVVJMLCBOU1BvcFVwQnV0dG9uQ2VsbCwgTlNOb3Rp
ZmljYXRpb24sIE5TT3BlblBhbmVsOwpAcHJvdG9jb2wgTlNQYXRoQ2VsbERlbGVnYXRlLCBOU09w
ZW5TYXZlUGFuZWxEZWxlZ2F0ZTsKIyAzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yay9IZWFkZXJzL05TUGF0aENlbGwuaCIgMwplbnVtIHsKCgogICAgTlNQYXRo
U3R5bGVTdGFuZGFyZCwKCgoKICAgIE5TUGF0aFN0eWxlTmF2aWdhdGlvbkJhciwKCgoKICAgIE5T
UGF0aFN0eWxlUG9wVXAsCn07Cgp0eXBlZGVmIE5TSW50ZWdlciBOU1BhdGhTdHlsZTsKCkBpbnRl
cmZhY2UgTlNQYXRoQ2VsbCA6IE5TQWN0aW9uQ2VsbCA8TlNPcGVuU2F2ZVBhbmVsRGVsZWdhdGU+
IHsKQHByaXZhdGUKICAgIE5TQ29sb3IgKl9iYWNrZ3JvdW5kQ29sb3I7CiAgICBOU011dGFibGVB
cnJheSAqX2JvcmRlckNvbG9yczsKICAgIE5TTXV0YWJsZUFycmF5ICpfY2VsbHM7CiAgICBOU1Bh
dGhDb21wb25lbnRDZWxsICpfY2xpY2tlZENlbGw7CiAgICBOU1BhdGhDb21wb25lbnRDZWxsICpf
aG92ZXJlZENlbGw7CiAgICBOU1BvcFVwQnV0dG9uQ2VsbCAqX3BvcFVwQnV0dG9uQ2VsbDsKICAg
IE5TUmVjdCBfY3VycmVudFJlY3Q7CiAgICBOU0FuaW1hdGlvbiAqX2FuaW1hdGlvbjsKICAgIE5T
QXJyYXkgKl9hbGxvd2VkVHlwZXM7CiAgICBTRUwgX2RvdWJsZUFjdGlvbjsKICAgIGlkIF9kZWxl
Z2F0ZTsKICAgIHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkOjMyOwogICAg
fSBfcGlGbGFnczsKICAgIE5TUGF0aFN0eWxlIF9wYXRoU3R5bGU7CiAgICBpZCBfYXV4Owp9CgoK
Ci0gKE5TUGF0aFN0eWxlKXBhdGhTdHlsZTsKLSAodm9pZClzZXRQYXRoU3R5bGU6KE5TUGF0aFN0
eWxlKXN0eWxlOwoKCgotIChOU1VSTCAqKVVSTDsKLSAodm9pZClzZXRVUkw6KE5TVVJMICopdXJs
OwoKCgotICh2b2lkKXNldE9iamVjdFZhbHVlOihpZCA8TlNDb3B5aW5nPilvYmo7CgoKCi0gKE5T
QXJyYXkgKilhbGxvd2VkVHlwZXM7Ci0gKHZvaWQpc2V0QWxsb3dlZFR5cGVzOihOU0FycmF5ICop
YWxsb3dlZFR5cGVzOwoKCgotIChpZCA8TlNQYXRoQ2VsbERlbGVnYXRlPilkZWxlZ2F0ZTsKLSAo
dm9pZClzZXREZWxlZ2F0ZTooaWQgPE5TUGF0aENlbGxEZWxlZ2F0ZT4pdmFsdWU7CgoKCisgKENs
YXNzKXBhdGhDb21wb25lbnRDZWxsQ2xhc3M7CgoKCi0gKE5TQXJyYXkgKilwYXRoQ29tcG9uZW50
Q2VsbHM7CgoKCi0gKHZvaWQpc2V0UGF0aENvbXBvbmVudENlbGxzOihOU0FycmF5ICopY2VsbHM7
CgoKCi0gKE5TUmVjdClyZWN0T2ZQYXRoQ29tcG9uZW50Q2VsbDooTlNQYXRoQ29tcG9uZW50Q2Vs
bCAqKWNlbGwgd2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgaW5WaWV3OihOU1ZpZXcgKil2aWV3OwoK
CgotIChOU1BhdGhDb21wb25lbnRDZWxsICopcGF0aENvbXBvbmVudENlbGxBdFBvaW50OihOU1Bv
aW50KXBvaW50IHdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGluVmlldzooTlNWaWV3ICopdmlldzsK
CgoKLSAoTlNQYXRoQ29tcG9uZW50Q2VsbCAqKWNsaWNrZWRQYXRoQ29tcG9uZW50Q2VsbDsKCgoK
LSAodm9pZCltb3VzZUVudGVyZWQ6KE5TRXZlbnQgKilldmVudCB3aXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBpblZpZXc6KE5TVmlldyAqKXZpZXc7Ci0gKHZvaWQpbW91c2VFeGl0ZWQ6KE5TRXZlbnQg
KilldmVudCB3aXRoRnJhbWU6KE5TUmVjdClmcmFtZSBpblZpZXc6KE5TVmlldyAqKXZpZXc7CgoK
Ci0gKFNFTClkb3VibGVBY3Rpb247Ci0gKHZvaWQpc2V0RG91YmxlQWN0aW9uOihTRUwpYWN0aW9u
OwoKCgotICh2b2lkKXNldEJhY2tncm91bmRDb2xvcjooTlNDb2xvciAqKWNvbG9yOwotIChOU0Nv
bG9yICopYmFja2dyb3VuZENvbG9yOwoKCgotICh2b2lkKXNldFBsYWNlaG9sZGVyU3RyaW5nOihO
U1N0cmluZyAqKXN0cmluZzsKLSAoTlNTdHJpbmcgKilwbGFjZWhvbGRlclN0cmluZzsKCi0gKHZv
aWQpc2V0UGxhY2Vob2xkZXJBdHRyaWJ1dGVkU3RyaW5nOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilz
dHJpbmc7Ci0gKE5TQXR0cmlidXRlZFN0cmluZyAqKXBsYWNlaG9sZGVyQXR0cmlidXRlZFN0cmlu
ZzsKCgotICh2b2lkKXNldENvbnRyb2xTaXplOihOU0NvbnRyb2xTaXplKXNpemU7CgpAZW5kCgpA
cHJvdG9jb2wgTlNQYXRoQ2VsbERlbGVnYXRlIDxOU09iamVjdD4KCkBvcHRpb25hbAoKCgotICh2
b2lkKXBhdGhDZWxsOihOU1BhdGhDZWxsICopcGF0aENlbGwgd2lsbERpc3BsYXlPcGVuUGFuZWw6
KE5TT3BlblBhbmVsICopb3BlblBhbmVsOwoKCgotICh2b2lkKXBhdGhDZWxsOihOU1BhdGhDZWxs
ICopcGF0aENlbGwgd2lsbFBvcFVwTWVudTooTlNNZW51ICopbWVudTsKCkBlbmQKIyAxODAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQu
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9I
ZWFkZXJzL05TUGF0aENvbnRyb2wuaCIgMSAzCiMgMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1BhdGhDb250cm9sLmgiIDMKQGNsYXNzIE5T
TXV0YWJsZUFycmF5LCBOU1BhdGhDb21wb25lbnRDZWxsLCBOU09wZW5QYW5lbDsKQHByb3RvY29s
IE5TUGF0aENvbnRyb2xEZWxlZ2F0ZTsKIyAyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TUGF0aENvbnRyb2wuaCIgMwpAaW50ZXJmYWNlIE5T
UGF0aENvbnRyb2wgOiBOU0NvbnRyb2wgewpAcHJpdmF0ZQogICAgTlNEcmFnT3BlcmF0aW9uIF9k
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tGb3JMb2NhbDsKICAgIE5TRHJhZ09wZXJhdGlvbiBf
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTm9uTG9jYWw7CiAgICBOU0ludGVnZXIgX3Jl
c2VydmVkOwogICAgaWQgX2RlbGVnYXRlOwogICAgaWQgX2F1eDsKfQoKCgoKLSAoTlNVUkwgKilV
Ukw7Ci0gKHZvaWQpc2V0VVJMOihOU1VSTCAqKXVybDsKCi0gKFNFTClkb3VibGVBY3Rpb247Ci0g
KHZvaWQpc2V0RG91YmxlQWN0aW9uOihTRUwpYWN0aW9uOwoKLSAoTlNQYXRoU3R5bGUpcGF0aFN0
eWxlOwotICh2b2lkKXNldFBhdGhTdHlsZTooTlNQYXRoU3R5bGUpc3R5bGU7CgotIChOU1BhdGhD
b21wb25lbnRDZWxsICopY2xpY2tlZFBhdGhDb21wb25lbnRDZWxsOwoKLSAoTlNBcnJheSAqKXBh
dGhDb21wb25lbnRDZWxsczsKLSAodm9pZClzZXRQYXRoQ29tcG9uZW50Q2VsbHM6KE5TQXJyYXkg
KiljZWxsczsKCgoKLSAodm9pZClzZXRCYWNrZ3JvdW5kQ29sb3I6KE5TQ29sb3IgKiljb2xvcjsK
LSAoTlNDb2xvciAqKWJhY2tncm91bmRDb2xvcjsKCgoKLSAoaWQgPE5TUGF0aENvbnRyb2xEZWxl
Z2F0ZT4pZGVsZWdhdGU7Ci0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxOU1BhdGhDb250cm9sRGVs
ZWdhdGU+KWRlbGVnYXRlOwoKCgoKLSAodm9pZClzZXREcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2s6KE5TRHJhZ09wZXJhdGlvbiltYXNrIGZvckxvY2FsOihCT09MKWlzTG9jYWw7CgoKCi0gKHZv
aWQpc2V0TWVudTooTlNNZW51ICopbWVudTsKLSAoTlNNZW51ICopbWVudTsKCkBlbmQKCgpAcHJv
dG9jb2wgTlNQYXRoQ29udHJvbERlbGVnYXRlIDxOU09iamVjdD4KCkBvcHRpb25hbAoKCgotIChC
T09MKXBhdGhDb250cm9sOihOU1BhdGhDb250cm9sICopcGF0aENvbnRyb2wgc2hvdWxkRHJhZ1Bh
dGhDb21wb25lbnRDZWxsOihOU1BhdGhDb21wb25lbnRDZWxsICopcGF0aENvbXBvbmVudENlbGwg
d2l0aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQ7CgoKCgoKLSAoTlNEcmFn
T3BlcmF0aW9uKXBhdGhDb250cm9sOihOU1BhdGhDb250cm9sICopcGF0aENvbnRyb2wgdmFsaWRh
dGVEcm9wOihpZCA8TlNEcmFnZ2luZ0luZm8+KWluZm87CgoKCgoKCi0gKEJPT0wpcGF0aENvbnRy
b2w6KE5TUGF0aENvbnRyb2wgKilwYXRoQ29udHJvbCBhY2NlcHREcm9wOihpZCA8TlNEcmFnZ2lu
Z0luZm8+KWluZm87CgoKCgoKCi0gKHZvaWQpcGF0aENvbnRyb2w6KE5TUGF0aENvbnRyb2wgKilw
YXRoQ29udHJvbCB3aWxsRGlzcGxheU9wZW5QYW5lbDooTlNPcGVuUGFuZWwgKilvcGVuUGFuZWw7
CgoKCi0gKHZvaWQpcGF0aENvbnRyb2w6KE5TUGF0aENvbnRyb2wgKilwYXRoQ29udHJvbCB3aWxs
UG9wVXBNZW51OihOU01lbnUgKiltZW51OwoKQGVuZAojIDE4MSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNQYXRoQ29t
cG9uZW50Q2VsbC5oIiAxIDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0
LmZyYW1ld29yay9IZWFkZXJzL05TUGF0aENvbXBvbmVudENlbGwuaCIgMwpAY2xhc3MgTlNJbWFn
ZSwgTlNTdHJpbmcsIE5TVVJMOwoKCgoKQGludGVyZmFjZSBOU1BhdGhDb21wb25lbnRDZWxsIDog
TlNUZXh0RmllbGRDZWxsIHsKQHByaXZhdGUKICAgIE5TSW1hZ2UgKl9pbWFnZTsKCiAgICBDR0Zs
b2F0IF9mdWxsV2lkdGg7CgogICAgQ0dGbG9hdCBfcmVzaXplZFdpZHRoOwoKICAgIENHRmxvYXQg
X2N1cnJlbnRXaWR0aDsKICAgIE5TVVJMICpfdXJsOwogICAgc3RydWN0IHsKICAgICAgICB1bnNp
Z25lZCBpbnQgc2hvdWxkRHJhd0Fycm93OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGRyYXdzQXNO
YXZpZ2F0aW9uQmFyOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGlzRmlyc3RJdGVtOjE7CiAgICAg
ICAgdW5zaWduZWQgaW50IGlzTGFzdEl0ZW06MTsKICAgICAgICB1bnNpZ25lZCBpbnQgaXNEcm9w
VGFyZ2V0OjE7CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkOjI3OwogICAgfSBfZmxhZ3M7
CiAgICBpZCBfYXV4Owp9CgoKCi0gKE5TSW1hZ2UgKilpbWFnZTsKLSAodm9pZClzZXRJbWFnZToo
TlNJbWFnZSAqKXZhbHVlOwoKCgotIChOU1VSTCAqKVVSTDsKLSAodm9pZClzZXRVUkw6KE5TVVJM
ICopdXJsOwoKQGVuZAojIDE4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZy
YW1ld29yay9IZWFkZXJzL0FwcEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hlYWRlcnMvTlNDb2xsZWN0aW9uVmlldy5oIiAxIDMKIyAx
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05T
Q29sbGVjdGlvblZpZXcuaCIgMwpAY2xhc3MgTlNDb2xsZWN0aW9uVmlldywgTlNJbmRleFNldCwg
TlNNdXRhYmxlSW5kZXhTZXQsIE5TTmliOwpAcHJvdG9jb2wgTlNDb2xsZWN0aW9uVmlld0RlbGVn
YXRlOwoKdHlwZWRlZiBOU0ludGVnZXIgTlNDb2xsZWN0aW9uVmlld0Ryb3BPcGVyYXRpb247CgoK
QGludGVyZmFjZSBOU0NvbGxlY3Rpb25WaWV3SXRlbSA6IE5TVmlld0NvbnRyb2xsZXIgPE5TQ29w
eWluZz4gewpAcHJpdmF0ZQogICAgTlNDb2xsZWN0aW9uVmlldyAqX2NvbGxlY3Rpb25WaWV3Owog
ICAgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQgaXNTZWxlY3RlZDoxOwogICAgICAgIHVu
c2lnbmVkIGludCBzdXBwcmVzc1NlbGVjdGlvbkNoYW5nZWROb3RpZmljYXRpb246MTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgY29ubmVjdGlvbnNDb3BpZWQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQg
cmVzZXJ2ZWQ6Mjk7CiAgICB9IF9jdmlGbGFnczsKICAgIE5TRGF0YSAqX2NhY2hlZEFyY2hpdmU7
CiAgICB2b2lkICpfcmVzZXJ2ZWQyOwp9CgotIChOU0NvbGxlY3Rpb25WaWV3ICopY29sbGVjdGlv
blZpZXc7CgotICh2b2lkKXNldFNlbGVjdGVkOihCT09MKWZsYWc7Ci0gKEJPT0wpaXNTZWxlY3Rl
ZDsKCkBlbmQKCkBpbnRlcmZhY2UgTlNDb2xsZWN0aW9uVmlldyA6IE5TVmlldyB7CkBwcml2YXRl
CiAgICBOU0FycmF5ICpfY29udGVudDsKICAgIE5TTXV0YWJsZUluZGV4U2V0ICpfc2VsZWN0aW9u
SW5kZXhlczsKICAgIE5TQ29sbGVjdGlvblZpZXdJdGVtICpfaXRlbVByb3RvdHlwZTsKICAgIE5T
U2l6ZSBfbWluSXRlbVNpemU7CiAgICBOU1NpemUgX21heEl0ZW1TaXplOwogICAgTlNVSW50ZWdl
ciBfbWF4R3JpZFJvd3M7CiAgICBOU1VJbnRlZ2VyIF9tYXhHcmlkQ29sdW1uczsKICAgIE5TQXJy
YXkgKl9iYWNrZ3JvdW5kQ29sb3JzOwogICAgTlNNdXRhYmxlQXJyYXkgKl9kaXNwbGF5ZWRJdGVt
czsKICAgIE5TVGltZUludGVydmFsIF9hbmltYXRpb25EdXJhdGlvbjsKICAgIHN0cnVjdCB7CiAg
ICAgICAgdW5zaWduZWQgaW50IGlzRmlyc3RSZXNwb25kZXI6MTsKICAgICAgICB1bnNpZ25lZCBp
bnQgaW52YWxpZGF0ZUl0ZW1WaWV3czoxOwogICAgICAgIHVuc2lnbmVkIGludCBzZWxlY3RhYmxl
OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGFsbG93c011bHRpcGxlU2VsZWN0aW9uOjE7CiAgICAg
ICAgdW5zaWduZWQgaW50IGF2b2lkc0VtcHR5U2VsZWN0aW9uOjE7CiAgICAgICAgdW5zaWduZWQg
aW50IHN1cGVydmlld0lzQ2xpcFZpZXc6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZHNVcGRh
dGVHcmlkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRzVXBkYXRlQmFja2dyb3VuZDoxOwog
ICAgICAgIHVuc2lnbmVkIGludCBncmlkU2V0dGluZ3NOZWVkVXBkYXRlOjE7CiAgICAgICAgdW5z
aWduZWQgaW50IGd1YXJkU2V0RnJhbWVTaXplOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGNhbkRp
c3BsYXlJdGVtczoxOwogICAgICAgIHVuc2lnbmVkIGludCBhbmltYXRlRm9yRHJhZzoxOwogICAg
ICAgIHVuc2lnbmVkIGludCB1bmFyY2hpdmluZzoxOwogICAgICAgIHVuc2lnbmVkIGludCByZXNl
cnZlZDoxOTsKICAgIH0gX2N2RmxhZ3M7CiAgICBpZCBfZGVsZWdhdGU7CiAgICBOU011dGFibGVB
cnJheSAqX2JhY2tncm91bmRMYXllcnM7CiAgICBOU1NpemUgX3N0b3JlZEZyYW1lU2l6ZTsKICAg
IE5TTmliICpfY2FjaGVkTmliOwogICAgTlNUaW1lciAqX2FuaW1UaW1lcjsKICAgIE5TQXJyYXkg
Kl9yZW1vdmVkSXRlbXM7CiAgICBOU1RpbWVyICpfcmVzaXplVGltZXI7CgogICAgTlNJbmRleFNl
dCAqX2RyYWdnZWRJbmRleGVzOwogICAgTlNEcmFnT3BlcmF0aW9uIF9kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2tGb3JMb2NhbDsKICAgIE5TRHJhZ09wZXJhdGlvbiBfZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrRm9yTm9uTG9jYWw7CiAgICBOU0ludGVnZXIgX2N1cnJlbnREcm9wSW5kZXg7
CiAgICBOU0ludGVnZXIgX2N1cnJlbnREcm9wU3BhY2VJbmRleDsKICAgIE5TSW50ZWdlciBfc2hp
ZnRSb3c7CiAgICBOU0RyYWdPcGVyYXRpb24gX2N1cnJlbnREcmFnT3BlcmF0aW9uOwogICAgTlND
b2xsZWN0aW9uVmlld0Ryb3BPcGVyYXRpb24gX2N1cnJlbnREcm9wT3BlcmF0aW9uOwogICAgTlNU
aW1lciAqX2RyYWdUaW1lcjsKCiAgICBpZCBfcHJpdmF0ZTsKICAgIHZvaWQgKl9yZXNlcnZlZFsx
Nl07Cn0KCi0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxOU0NvbGxlY3Rpb25WaWV3RGVsZWdhdGU+
KWFEZWxlZ2F0ZTsKLSAoaWQgPE5TQ29sbGVjdGlvblZpZXdEZWxlZ2F0ZT4pZGVsZWdhdGU7Cgot
IChCT09MKWlzRmlyc3RSZXNwb25kZXI7CgotICh2b2lkKXNldENvbnRlbnQ6KE5TQXJyYXkgKilj
b250ZW50OwotIChOU0FycmF5ICopY29udGVudDsKLSAodm9pZClzZXRTZWxlY3RhYmxlOihCT09M
KWZsYWc7Ci0gKEJPT0wpaXNTZWxlY3RhYmxlOwotICh2b2lkKXNldEFsbG93c011bHRpcGxlU2Vs
ZWN0aW9uOihCT09MKWZsYWc7Ci0gKEJPT0wpYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb247Ci0gKHZv
aWQpc2V0U2VsZWN0aW9uSW5kZXhlczooTlNJbmRleFNldCAqKWluZGV4ZXM7Ci0gKE5TSW5kZXhT
ZXQgKilzZWxlY3Rpb25JbmRleGVzOwoKLSAoTlNDb2xsZWN0aW9uVmlld0l0ZW0gKiluZXdJdGVt
Rm9yUmVwcmVzZW50ZWRPYmplY3Q6KGlkKW9iamVjdDsKCi0gKHZvaWQpc2V0SXRlbVByb3RvdHlw
ZTooTlNDb2xsZWN0aW9uVmlld0l0ZW0gKilwcm90b3R5cGU7Ci0gKE5TQ29sbGVjdGlvblZpZXdJ
dGVtICopaXRlbVByb3RvdHlwZTsKCi0gKHZvaWQpc2V0TWF4TnVtYmVyT2ZSb3dzOihOU1VJbnRl
Z2VyKW51bWJlcjsKLSAoTlNVSW50ZWdlciltYXhOdW1iZXJPZlJvd3M7Ci0gKHZvaWQpc2V0TWF4
TnVtYmVyT2ZDb2x1bW5zOihOU1VJbnRlZ2VyKW51bWJlcjsKLSAoTlNVSW50ZWdlciltYXhOdW1i
ZXJPZkNvbHVtbnM7Ci0gKHZvaWQpc2V0TWluSXRlbVNpemU6KE5TU2l6ZSlzaXplOwotIChOU1Np
emUpbWluSXRlbVNpemU7Ci0gKHZvaWQpc2V0TWF4SXRlbVNpemU6KE5TU2l6ZSlzaXplOwotIChO
U1NpemUpbWF4SXRlbVNpemU7CgotICh2b2lkKXNldEJhY2tncm91bmRDb2xvcnM6KE5TQXJyYXkg
Kiljb2xvcnM7Ci0gKE5TQXJyYXkgKiliYWNrZ3JvdW5kQ29sb3JzOwoKCgotIChOU0NvbGxlY3Rp
b25WaWV3SXRlbSAqKWl0ZW1BdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4IDsKCgoKLSAoTlNSZWN0
KWZyYW1lRm9ySXRlbUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXggOwoKCgoKCi0gKHZvaWQpc2V0
RHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOihOU0RyYWdPcGVyYXRpb24pZHJhZ09wZXJhdGlv
bk1hc2sgZm9yTG9jYWw6KEJPT0wpbG9jYWxEZXN0aW5hdGlvbiA7CgoKCi0gKE5TSW1hZ2UgKilk
cmFnZ2luZ0ltYWdlRm9ySXRlbXNBdEluZGV4ZXM6KE5TSW5kZXhTZXQgKilpbmRleGVzIHdpdGhF
dmVudDooTlNFdmVudCAqKWV2ZW50IG9mZnNldDooTlNQb2ludFBvaW50ZXIpZHJhZ0ltYWdlT2Zm
c2V0IDsKCkBlbmQKCgoKZW51bSB7CiAgICBOU0NvbGxlY3Rpb25WaWV3RHJvcE9uID0gMCwKICAg
IE5TQ29sbGVjdGlvblZpZXdEcm9wQmVmb3JlID0gMSwKfTsKCgoKQHByb3RvY29sIE5TQ29sbGVj
dGlvblZpZXdEZWxlZ2F0ZSA8TlNPYmplY3Q+CkBvcHRpb25hbAoKCgoKCi0gKEJPT0wpY29sbGVj
dGlvblZpZXc6KE5TQ29sbGVjdGlvblZpZXcgKiljb2xsZWN0aW9uVmlldyBjYW5EcmFnSXRlbXNB
dEluZGV4ZXM6KE5TSW5kZXhTZXQgKilpbmRleGVzIHdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50
IDsKCgoKCi0gKEJPT0wpY29sbGVjdGlvblZpZXc6KE5TQ29sbGVjdGlvblZpZXcgKiljb2xsZWN0
aW9uVmlldyB3cml0ZUl0ZW1zQXRJbmRleGVzOihOU0luZGV4U2V0ICopaW5kZXhlcyB0b1Bhc3Rl
Ym9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgOwoKCgotIChOU0FycmF5ICopY29sbGVj
dGlvblZpZXc6KE5TQ29sbGVjdGlvblZpZXcgKiljb2xsZWN0aW9uVmlldyBuYW1lc09mUHJvbWlz
ZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BVUkwgZm9yRHJhZ2dlZEl0
ZW1zQXRJbmRleGVzOihOU0luZGV4U2V0ICopaW5kZXhlcyA7CgoKCi0gKE5TSW1hZ2UgKiljb2xs
ZWN0aW9uVmlldzooTlNDb2xsZWN0aW9uVmlldyAqKWNvbGxlY3Rpb25WaWV3IGRyYWdnaW5nSW1h
Z2VGb3JJdGVtc0F0SW5kZXhlczooTlNJbmRleFNldCAqKWluZGV4ZXMgd2l0aEV2ZW50OihOU0V2
ZW50ICopZXZlbnQgb2Zmc2V0OihOU1BvaW50UG9pbnRlcilkcmFnSW1hZ2VPZmZzZXQgOwoKCgoK
Ci0gKE5TRHJhZ09wZXJhdGlvbiljb2xsZWN0aW9uVmlldzooTlNDb2xsZWN0aW9uVmlldyAqKWNv
bGxlY3Rpb25WaWV3IHZhbGlkYXRlRHJvcDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0lu
Zm8gcHJvcG9zZWRJbmRleDooTlNJbnRlZ2VyICopcHJvcG9zZWREcm9wSW5kZXggZHJvcE9wZXJh
dGlvbjooTlNDb2xsZWN0aW9uVmlld0Ryb3BPcGVyYXRpb24gKilwcm9wb3NlZERyb3BPcGVyYXRp
b24gOwoKCgotIChCT09MKWNvbGxlY3Rpb25WaWV3OihOU0NvbGxlY3Rpb25WaWV3ICopY29sbGVj
dGlvblZpZXcgYWNjZXB0RHJvcDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8gaW5k
ZXg6KE5TSW50ZWdlcilpbmRleCBkcm9wT3BlcmF0aW9uOihOU0NvbGxlY3Rpb25WaWV3RHJvcE9w
ZXJhdGlvbilkcm9wT3BlcmF0aW9uIDsKCkBlbmQKIyAxODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9BcHBLaXQuaCIgMiAzCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1RleHRJbnB1
dENvbnRleHQuaCIgMSAzCiMgMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9OU1RleHRJbnB1dENvbnRleHQuaCIgMwpAY2xhc3MgTlNFdmVudDsK
CkBpbnRlcmZhY2UgTlNUZXh0SW5wdXRDb250ZXh0IDogTlNPYmplY3QgewpAcHJpdmF0ZQogICAg
aWQgX2NsaWVudDsKCiAgICBOU0FycmF5ICpfaW5wdXRMb2NhbGVzOwoKICAgIHZvaWQgKl9kb2N1
bWVudElEOwogICAgaWQgX2tleUJpbmRpbmdzOwogICAgaWQgX2tleUJpbmRpbmdNYW5hZ2VyOwoK
ICAgIE5TU3RyaW5nICpfY29tbWFuZENoYXJhY3RlcnM7CgogICAgaWQgX3Jlc2VydmVkWzNdOwog
ICAgaWQgX2F1eGlsaWFyeTsKCiAgICBzdHJ1Y3QgewogdW5zaWduZWQgaW50IF9hY2NlcHRzR2x5
cGhJbmZvOjE7CgogdW5zaWduZWQgaW50IF9hdHRyaWJ1dGVkU3RyaW5nOjE7CiB1bnNpZ25lZCBp
bnQgX2ZyYWN0aW9uT2ZEaXN0YW5jZToxOwogdW5zaWduZWQgaW50IF9iYXNlbGluZURlbHRhOjE7
CiB1bnNpZ25lZCBpbnQgX3dpbmRvd0xldmVsOjE7CiB1bnNpZ25lZCBpbnQgX2RyYXdzVmVydGlj
YWxseToxOwoKIHVuc2lnbmVkIGludCBfY29tcGF0aWJpbGl0eU1vZGU6MTsKIHVuc2lnbmVkIGlu
dCBfaGFzVFM6MTsKIHVuc2lnbmVkIGludCBfaGFzTE06MTsKCiB1bnNpZ25lZCBpbnQgX2lucHV0
TG9jYWxlR2VuZXJhdGlvbjoxNjsKIHVuc2lnbmVkIGludCBfYmxvY2tUU006MTsKIHVuc2lnbmVk
IGludCBfa2V5UHJvY2VzczoxOwogdW5zaWduZWQgaW50IF9wcmVmbGlnaHQ6MTsKIHVuc2lnbmVk
IGludCBfYmluZGluZ0ZvdW5kOjE7CgogdW5zaWduZWQgaW50IF9yZXNlcnZlZDozOwogICAgfSBf
dGljRmxhZ3M7Cn0KCgoKKyAoTlNUZXh0SW5wdXRDb250ZXh0ICopY3VycmVudElucHV0Q29udGV4
dDsKCgoKLSAoaWQpaW5pdFdpdGhDbGllbnQ6KGlkIDxOU1RleHRJbnB1dENsaWVudD4pdGhlQ2xp
ZW50OwoKCgoKQHByb3BlcnR5KHJlYWRvbmx5KSBpZCA8TlNUZXh0SW5wdXRDbGllbnQ+IGNsaWVu
dDsKCgoKQHByb3BlcnR5IEJPT0wgYWNjZXB0c0dseXBoSW5mbzsKCgoKQHByb3BlcnR5KGNvcHkp
IE5TQXJyYXkgKmFsbG93ZWRJbnB1dFNvdXJjZUxvY2FsZXM7CgoKCgoKLSAodm9pZClhY3RpdmF0
ZTsKLSAodm9pZClkZWFjdGl2YXRlOwoKCgoKLSAoQk9PTCloYW5kbGVFdmVudDooTlNFdmVudCAq
KXRoZUV2ZW50OwoKCgotICh2b2lkKWRpc2NhcmRNYXJrZWRUZXh0OwoKCgotICh2b2lkKWludmFs
aWRhdGVDaGFyYWN0ZXJDb29yZGluYXRlczsKIyAxMDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9OU1RleHRJbnB1dENvbnRleHQuaCIgMwpAcHJv
cGVydHkocmVhZG9ubHkpIE5TQXJyYXkgKmtleWJvYXJkSW5wdXRTb3VyY2VzOwoKCgpAcHJvcGVy
dHkoY29weSkgTlNTdHJpbmcgKnNlbGVjdGVkS2V5Ym9hcmRJbnB1dFNvdXJjZTsKCgoKCgorIChO
U1N0cmluZyAqKWxvY2FsaXplZE5hbWVGb3JJbnB1dFNvdXJjZTooTlNTdHJpbmcgKilpbnB1dFNv
dXJjZUlkZW50aWZpZXI7CkBlbmQKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVGV4dElucHV0
Q29udGV4dEtleWJvYXJkU2VsZWN0aW9uRGlkQ2hhbmdlTm90aWZpY2F0aW9uOwojIDE4NSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL0FwcEtpdC5o
IiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvTlNVc2VySW50ZXJmYWNlSXRlbVNlYXJjaGluZy5oIiAxIDMKIyAxMyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yay9IZWFkZXJzL05TVXNlckludGVyZmFj
ZUl0ZW1TZWFyY2hpbmcuaCIgMwpAcHJvdG9jb2wgTlNVc2VySW50ZXJmYWNlSXRlbVNlYXJjaGlu
ZyA8TlNPYmplY3Q+CgpAcmVxdWlyZWQKCgoKCgoKLSAodm9pZClzZWFyY2hGb3JJdGVtc1dpdGhT
ZWFyY2hTdHJpbmc6KE5TU3RyaW5nICopc2VhcmNoU3RyaW5nIHJlc3VsdExpbWl0OihOU0ludGVn
ZXIpcmVzdWx0TGltaXQgbWF0Y2hlZEl0ZW1IYW5kbGVyOih2b2lkICheKShOU0FycmF5ICppdGVt
cykpaGFuZGxlTWF0Y2hlZEl0ZW1zOwoKCgoKLSAoTlNBcnJheSAqKWxvY2FsaXplZFRpdGxlc0Zv
ckl0ZW06KGlkKWl0ZW07CgpAb3B0aW9uYWwKCgoKLSAodm9pZClwZXJmb3JtQWN0aW9uRm9ySXRl
bTooaWQpaXRlbTsKCgoKLSAodm9pZClzaG93QWxsSGVscFRvcGljc0ZvclNlYXJjaFN0cmluZzoo
TlNTdHJpbmcgKilzZWFyY2hTdHJpbmc7CgpAZW5kCgoKQGludGVyZmFjZSBOU0FwcGxpY2F0aW9u
IChOU1VzZXJJbnRlcmZhY2VJdGVtU2VhcmNoaW5nKQoKCgotICh2b2lkKXJlZ2lzdGVyVXNlcklu
dGVyZmFjZUl0ZW1TZWFyY2hIYW5kbGVyOihpZDxOU1VzZXJJbnRlcmZhY2VJdGVtU2VhcmNoaW5n
PiloYW5kbGVyOwoKCgotICh2b2lkKXVucmVnaXN0ZXJVc2VySW50ZXJmYWNlSXRlbVNlYXJjaEhh
bmRsZXI6KGlkPE5TVXNlckludGVyZmFjZUl0ZW1TZWFyY2hpbmc+KWhhbmRsZXI7CgoKCgotIChC
T09MKXNlYXJjaFN0cmluZzooTlNTdHJpbmcgKilzZWFyY2hTdHJpbmcgaW5Vc2VySW50ZXJmYWNl
SXRlbVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmdUb1NlYXJjaCBzZWFyY2hSYW5nZTooTlNSYW5n
ZSlzZWFyY2hSYW5nZSBmb3VuZFJhbmdlOihOU1JhbmdlICopZm91bmRSYW5nZTsKCkBlbmQKIyAx
ODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvSGVhZGVycy9B
cHBLaXQuaCIgMiAzCiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1l
d29yay9IZWFkZXJzL0NvY29hLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL0NvcmVEYXRhLmgiIDEgMwojIDEwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRGF0YS5o
IiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hl
YWRlcnMvQ29yZURhdGFEZWZpbmVzLmgiIDEgMwoKCgoKCgoKI2RlZmluZSBfQ09SRURBVEFERUZJ
TkVTX0ggCiMgMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29y
ay9IZWFkZXJzL0NvcmVEYXRhRGVmaW5lcy5oIiAzCiNkZWZpbmUgQ09SRURBVEFfRVhURVJOIGV4
dGVybiAiQyIKI2RlZmluZSBDT1JFREFUQV9QUklWQVRFX0VYVEVSTiBfX3ByaXZhdGVfZXh0ZXJu
X18KIyA3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hl
YWRlcnMvQ29yZURhdGFEZWZpbmVzLmgiIDMKZXh0ZXJuICJDIiBkb3VibGUgTlNDb3JlRGF0YVZl
cnNpb25OdW1iZXI7CgojZGVmaW5lIE5TQ29yZURhdGFWZXJzaW9uTnVtYmVyMTBfNCA0Ni4wCiNk
ZWZpbmUgTlNDb3JlRGF0YVZlcnNpb25OdW1iZXIxMF80XzMgNzcuMAojZGVmaW5lIE5TQ29yZURh
dGFWZXJzaW9uTnVtYmVyMTBfNSAxODUuMAojZGVmaW5lIE5TQ29yZURhdGFWZXJzaW9uTnVtYmVy
MTBfNV8zIDE4Ni4wCiMgMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZy
YW1ld29yay9IZWFkZXJzL0NvcmVEYXRhLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL0NvcmVEYXRhRXJyb3JzLmgiIDEgMwoj
IDE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVhZGVy
cy9Db3JlRGF0YUVycm9ycy5oIiAzCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU0RldGFp
bGVkRXJyb3JzS2V5OwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVmFsaWRhdGlvbk9i
amVjdEVycm9yS2V5OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNWYWxpZGF0aW9uS2V5
RXJyb3JLZXk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1ZhbGlkYXRpb25QcmVkaWNh
dGVFcnJvcktleTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TVmFsaWRhdGlvblZhbHVl
RXJyb3JLZXk7CgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNBZmZlY3RlZFN0b3Jlc0Vy
cm9yS2V5OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNBZmZlY3RlZE9iamVjdHNFcnJv
cktleTsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1NRTGl0ZUVycm9yRG9tYWluIDsK
CmVudW0gewogICAgTlNNYW5hZ2VkT2JqZWN0VmFsaWRhdGlvbkVycm9yID0gMTU1MCwKICAgIE5T
VmFsaWRhdGlvbk11bHRpcGxlRXJyb3JzRXJyb3IgPSAxNTYwLAogICAgTlNWYWxpZGF0aW9uTWlz
c2luZ01hbmRhdG9yeVByb3BlcnR5RXJyb3IgPSAxNTcwLAogICAgTlNWYWxpZGF0aW9uUmVsYXRp
b25zaGlwTGFja3NNaW5pbXVtQ291bnRFcnJvciA9IDE1ODAsCiAgICBOU1ZhbGlkYXRpb25SZWxh
dGlvbnNoaXBFeGNlZWRzTWF4aW11bUNvdW50RXJyb3IgPSAxNTkwLAogICAgTlNWYWxpZGF0aW9u
UmVsYXRpb25zaGlwRGVuaWVkRGVsZXRlRXJyb3IgPSAxNjAwLAogICAgTlNWYWxpZGF0aW9uTnVt
YmVyVG9vTGFyZ2VFcnJvciA9IDE2MTAsCiAgICBOU1ZhbGlkYXRpb25OdW1iZXJUb29TbWFsbEVy
cm9yID0gMTYyMCwKICAgIE5TVmFsaWRhdGlvbkRhdGVUb29MYXRlRXJyb3IgPSAxNjMwLAogICAg
TlNWYWxpZGF0aW9uRGF0ZVRvb1Nvb25FcnJvciA9IDE2NDAsCiAgICBOU1ZhbGlkYXRpb25JbnZh
bGlkRGF0ZUVycm9yID0gMTY1MCwKICAgIE5TVmFsaWRhdGlvblN0cmluZ1Rvb0xvbmdFcnJvciA9
IDE2NjAsCiAgICBOU1ZhbGlkYXRpb25TdHJpbmdUb29TaG9ydEVycm9yID0gMTY3MCwKICAgIE5T
VmFsaWRhdGlvblN0cmluZ1BhdHRlcm5NYXRjaGluZ0Vycm9yID0gMTY4MCwKCiAgICBOU01hbmFn
ZWRPYmplY3RDb250ZXh0TG9ja2luZ0Vycm9yID0gMTMyMDAwLAogICAgTlNQZXJzaXN0ZW50U3Rv
cmVDb29yZGluYXRvckxvY2tpbmdFcnJvciA9IDEzMjAxMCwKCiAgICBOU01hbmFnZWRPYmplY3RS
ZWZlcmVudGlhbEludGVncml0eUVycm9yID0gMTMzMDAwLAogICAgTlNNYW5hZ2VkT2JqZWN0RXh0
ZXJuYWxSZWxhdGlvbnNoaXBFcnJvciA9IDEzMzAxMCwKICAgIE5TTWFuYWdlZE9iamVjdE1lcmdl
RXJyb3IgPSAxMzMwMjAsCgogICAgTlNQZXJzaXN0ZW50U3RvcmVJbnZhbGlkVHlwZUVycm9yID0g
MTM0MDAwLAogICAgTlNQZXJzaXN0ZW50U3RvcmVUeXBlTWlzbWF0Y2hFcnJvciA9IDEzNDAxMCwK
ICAgIE5TUGVyc2lzdGVudFN0b3JlSW5jb21wYXRpYmxlU2NoZW1hRXJyb3IgPSAxMzQwMjAsCiAg
ICBOU1BlcnNpc3RlbnRTdG9yZVNhdmVFcnJvciA9IDEzNDAzMCwKICAgIE5TUGVyc2lzdGVudFN0
b3JlSW5jb21wbGV0ZVNhdmVFcnJvciA9IDEzNDA0MCwKCgogICAgTlNDb3JlRGF0YUVycm9yID0g
MTM0MDYwLAogICAgTlNQZXJzaXN0ZW50U3RvcmVPcGVyYXRpb25FcnJvciA9IDEzNDA3MCwKICAg
IE5TUGVyc2lzdGVudFN0b3JlT3BlbkVycm9yID0gMTM0MDgwLAogICAgTlNQZXJzaXN0ZW50U3Rv
cmVUaW1lb3V0RXJyb3IgPSAxMzQwOTAsCgogICAgTlNQZXJzaXN0ZW50U3RvcmVJbmNvbXBhdGli
bGVWZXJzaW9uSGFzaEVycm9yID0gMTM0MTAwLAogICAgTlNNaWdyYXRpb25FcnJvciA9IDEzNDEx
MCwKICAgIE5TTWlncmF0aW9uQ2FuY2VsbGVkRXJyb3IgPSAxMzQxMjAsCiAgICBOU01pZ3JhdGlv
bk1pc3NpbmdTb3VyY2VNb2RlbEVycm9yID0gMTM0MTMwLAogICAgTlNNaWdyYXRpb25NaXNzaW5n
TWFwcGluZ01vZGVsRXJyb3IgPSAxMzQxNDAsCiAgICBOU01pZ3JhdGlvbk1hbmFnZXJTb3VyY2VT
dG9yZUVycm9yID0gMTM0MTUwLAogICAgTlNNaWdyYXRpb25NYW5hZ2VyRGVzdGluYXRpb25TdG9y
ZUVycm9yID0gMTM0MTYwLAogICAgTlNFbnRpdHlNaWdyYXRpb25Qb2xpY3lFcnJvciA9IDEzNDE3
MCwKCiAgICBOU1NRTGl0ZUVycm9yID0gMTM0MTgwCgoKCiAgICAsIE5TSW5mZXJyZWRNYXBwaW5n
TW9kZWxFcnJvciA9IDEzNDE5MAogICAgLCBOU0V4dGVybmFsUmVjb3JkSW1wb3J0RXJyb3IgPSAx
MzQyMDAKCn07CiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1l
d29yay9IZWFkZXJzL0NvcmVEYXRhLmgiIDIgMwoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNFbnRpdHlEZXNjcmlwdGlvbi5oIiAx
IDMKIyAxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hl
YWRlcnMvTlNFbnRpdHlEZXNjcmlwdGlvbi5oIiAzCkBjbGFzcyBOU0FycmF5OwpAY2xhc3MgTlNE
aWN0aW9uYXJ5OwpAY2xhc3MgTlNNYW5hZ2VkT2JqZWN0TW9kZWw7CkBjbGFzcyBOU011dGFibGVE
aWN0aW9uYXJ5OwpAY2xhc3MgTlNTdHJpbmc7CkBjbGFzcyBOU01hbmFnZWRPYmplY3RDb250ZXh0
OwpAY2xhc3MgTlNNYW5hZ2VkT2JqZWN0OwoKCkBpbnRlcmZhY2UgTlNFbnRpdHlEZXNjcmlwdGlv
biA6IE5TT2JqZWN0IDxOU0NvZGluZywgTlNDb3B5aW5nLCBOU0Zhc3RFbnVtZXJhdGlvbj4gewpA
cHJpdmF0ZQogaW50MzJfdCBfY2RfcmM7CiBpZCBfcmVzZXJ2ZWQxOwogTlNTdHJpbmcgKl92ZXJz
aW9uSGFzaE1vZGlmaWVyOwogTlNEYXRhICpfdmVyc2lvbkhhc2g7CiAgICBfX2F0dHJpYnV0ZV9f
KChvYmpjX2djKHdlYWspKSkgTlNNYW5hZ2VkT2JqZWN0TW9kZWwgKl9tb2RlbDsKICAgIE5TU3Ry
aW5nICpfY2xhc3NOYW1lRm9yRW50aXR5OwogICAgQ2xhc3MgX2luc3RhbmNlQ2xhc3M7CiAgICBO
U1N0cmluZyAqX25hbWU7CiAgICBfX2F0dHJpYnV0ZV9fKChvYmpjX2djKHdlYWspKSkgTlNFbnRp
dHlEZXNjcmlwdGlvbiAqX3Jvb3RlbnRpdHk7CiAgICBfX2F0dHJpYnV0ZV9fKChvYmpjX2djKHdl
YWspKSkgTlNFbnRpdHlEZXNjcmlwdGlvbiAqX3N1cGVyZW50aXR5OwogICAgTlNNdXRhYmxlRGlj
dGlvbmFyeSAqX3N1YmVudGl0aWVzOwogICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX3Byb3BlcnRp
ZXM7CiAgICBpZCBfcHJvcGVydHlNYXBwaW5nOwogICAgTlNSYW5nZSAqX3Byb3BlcnR5UmFuZ2Vz
OwogICAgc3RydWN0IF9fZW50aXR5RGVzY3JpcHRpb25GbGFncyB7CiAgICAgICAgdW5zaWduZWQg
aW50IF9pc0Fic3RyYWN0OjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9zaG91bGRWYWxpZGF0ZU9u
U2F2ZToxOwogICAgICAgIHVuc2lnbmVkIGludCBfaXNJbW11dGFibGU6MTsKICAgICAgICB1bnNp
Z25lZCBpbnQgX2lzRmxhdHRlbmVkOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9za2lwVmFsaWRh
dGlvbjoxOwogICAgICAgIHVuc2lnbmVkIGludCBfaGFzUHJvcGVydGllc0luZGV4ZWRCeVNwb3Rs
aWdodDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfaGFzUHJvcGVydGllc1N0b3JlZEluVHJ1dGhG
aWxlOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9yZXNlcnZlZEVudGl0eURlc2NyaXB0aW9uOjI1
OwogICAgfSBfZW50aXR5RGVzY3JpcHRpb25GbGFnczsKICAgIHZvaWQgKl9leHRyYUl2YXJzOwog
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX3VzZXJJbmZvOwogICAgaWQgX2ZsYXR0ZW5lZFN1YmVu
dGl0aWVzOwogICAgaWQqKiBfa3ZjUHJvcGVydHlBY2Nlc3NvcnM7CiAgICBsb25nIF9tb2RlbHNS
ZWZlcmVuY2VJREZvckVudGl0eTsKfQoKKyAoTlNFbnRpdHlEZXNjcmlwdGlvbiAqKWVudGl0eUZv
ck5hbWU6KE5TU3RyaW5nICopZW50aXR5TmFtZSBpbk1hbmFnZWRPYmplY3RDb250ZXh0OihOU01h
bmFnZWRPYmplY3RDb250ZXh0ICopY29udGV4dDsKKyAoaWQpaW5zZXJ0TmV3T2JqZWN0Rm9yRW50
aXR5Rm9yTmFtZTooTlNTdHJpbmcgKillbnRpdHlOYW1lIGluTWFuYWdlZE9iamVjdENvbnRleHQ6
KE5TTWFuYWdlZE9iamVjdENvbnRleHQgKiljb250ZXh0OwoKLSAoTlNNYW5hZ2VkT2JqZWN0TW9k
ZWwgKiltYW5hZ2VkT2JqZWN0TW9kZWw7Ci0gKE5TU3RyaW5nICopbWFuYWdlZE9iamVjdENsYXNz
TmFtZTsKLSAodm9pZClzZXRNYW5hZ2VkT2JqZWN0Q2xhc3NOYW1lOihOU1N0cmluZyAqKW5hbWU7
CgotIChOU1N0cmluZyAqKW5hbWU7Ci0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lOwoK
LSAoQk9PTClpc0Fic3RyYWN0OwotICh2b2lkKXNldEFic3RyYWN0OihCT09MKWZsYWc7Ci0gKE5T
RGljdGlvbmFyeSAqKXN1YmVudGl0aWVzQnlOYW1lOwotIChOU0FycmF5ICopc3ViZW50aXRpZXM7
Ci0gKHZvaWQpc2V0U3ViZW50aXRpZXM6KE5TQXJyYXkgKilhcnJheTsKLSAoTlNFbnRpdHlEZXNj
cmlwdGlvbiAqKXN1cGVyZW50aXR5OwoKLSAoTlNEaWN0aW9uYXJ5ICopcHJvcGVydGllc0J5TmFt
ZTsKLSAoTlNBcnJheSAqKXByb3BlcnRpZXM7Ci0gKHZvaWQpc2V0UHJvcGVydGllczooTlNBcnJh
eSAqKXByb3BlcnRpZXM7CgotIChOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLSAodm9pZClzZXRV
c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeTsKCgotIChOU0RpY3Rpb25hcnkgKilh
dHRyaWJ1dGVzQnlOYW1lOwotIChOU0RpY3Rpb25hcnkgKilyZWxhdGlvbnNoaXBzQnlOYW1lOwot
IChOU0FycmF5ICopcmVsYXRpb25zaGlwc1dpdGhEZXN0aW5hdGlvbkVudGl0eTooTlNFbnRpdHlE
ZXNjcmlwdGlvbiAqKWVudGl0eTsKCgoKLSAoQk9PTClpc0tpbmRPZkVudGl0eTooTlNFbnRpdHlE
ZXNjcmlwdGlvbiAqKWVudGl0eSA7CgoKCi0gKE5TRGF0YSAqKXZlcnNpb25IYXNoIDsKCgoKLSAo
TlNTdHJpbmcgKil2ZXJzaW9uSGFzaE1vZGlmaWVyIDsKLSAodm9pZClzZXRWZXJzaW9uSGFzaE1v
ZGlmaWVyOihOU1N0cmluZyAqKW1vZGlmaWVyU3RyaW5nIDsKCi0gKE5TU3RyaW5nICopcmVuYW1p
bmdJZGVudGlmaWVyIDsKLSAodm9pZClzZXRSZW5hbWluZ0lkZW50aWZpZXI6KE5TU3RyaW5nICop
dmFsdWUgOwoKQGVuZAojIDE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRGF0YS5m
cmFtZXdvcmsvSGVhZGVycy9Db3JlRGF0YS5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVhZGVycy9OU0ZldGNoZWRQcm9wZXJ0eURlc2Ny
aXB0aW9uLmgiIDEgMwojIDE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRGF0YS5m
cmFtZXdvcmsvSGVhZGVycy9OU0ZldGNoZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmgiIDMKQGNsYXNz
IE5TRmV0Y2hSZXF1ZXN0OwoKCkBpbnRlcmZhY2UgTlNGZXRjaGVkUHJvcGVydHlEZXNjcmlwdGlv
biA6IE5TUHJvcGVydHlEZXNjcmlwdGlvbiB7CkBwcml2YXRlCiB2b2lkICpfcmVzZXJ2ZWQ1Owog
dm9pZCAqX3Jlc2VydmVkNjsKICAgIE5TRmV0Y2hSZXF1ZXN0ICpfZmV0Y2hSZXF1ZXN0OwogICAg
TlNTdHJpbmcgKl9sYXp5RmV0Y2hSZXF1ZXN0RW50aXR5TmFtZTsKfQoKCi0gKE5TRmV0Y2hSZXF1
ZXN0ICopZmV0Y2hSZXF1ZXN0OwotICh2b2lkKXNldEZldGNoUmVxdWVzdDooTlNGZXRjaFJlcXVl
c3QgKilmZXRjaFJlcXVlc3Q7CgpAZW5kCiMgMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL0NvcmVEYXRhLmgiIDIgMwoKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVhZGVycy9OU0V4cHJlc3Np
b25EZXNjcmlwdGlvbi5oIiAxIDMKIyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNFeHByZXNzaW9uRGVzY3JpcHRpb24uaCIgMwpAY2xh
c3MgTlNFeHByZXNzaW9uOwoKCgoKCkBpbnRlcmZhY2UgTlNFeHByZXNzaW9uRGVzY3JpcHRpb24g
OiBOU1Byb3BlcnR5RGVzY3JpcHRpb24gewogQHByaXZhdGUKIGlkIF9yZXNlcnZlZHR5cGUxXzE7
CiBpZCBfcmVzZXJ2ZWR0eXBlMV8yOwogICAgTlNBdHRyaWJ1dGVUeXBlIF9yZXNlcnZlZHR5cGUx
XzM7CiAgICBpZCBfcmVzZXJ2ZWR0eXBlMV80OwogICAgTlNVSW50ZWdlciBfcmVzZXJ2ZWR0eXBl
MV81OwogICAgaWQgX3Jlc2VydmVkdHlwZTFfNjsKIHZvaWQgKl9yZXNlcnZlZHR5cGUyXzE7CiB2
b2lkICpfcmVzZXJ2ZWR0eXBlMl8yOwogdm9pZCAqX3Jlc2VydmVkdHlwZTJfMzsKIE5TRXhwcmVz
c2lvbiAqX2V4cHJlc3Npb247CiBOU0F0dHJpYnV0ZVR5cGUgX2V4cHJlc3Npb25SZXN1bHRUeXBl
Owp9CgotIChOU0V4cHJlc3Npb24gKilleHByZXNzaW9uOwotICh2b2lkKXNldEV4cHJlc3Npb246
KE5TRXhwcmVzc2lvbiAqKWV4cHJlc3Npb247CgotIChOU0F0dHJpYnV0ZVR5cGUpZXhwcmVzc2lv
blJlc3VsdFR5cGU7Ci0gKHZvaWQpc2V0RXhwcmVzc2lvblJlc3VsdFR5cGU6KE5TQXR0cmlidXRl
VHlwZSl0eXBlOwoKCgpAZW5kCiMgMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVE
YXRhLmZyYW1ld29yay9IZWFkZXJzL0NvcmVEYXRhLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL05TUmVsYXRpb25zaGlwRGVz
Y3JpcHRpb24uaCIgMSAzCiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRh
LmZyYW1ld29yay9IZWFkZXJzL05TUmVsYXRpb25zaGlwRGVzY3JpcHRpb24uaCIgMwpAY2xhc3Mg
TlNFbnRpdHlEZXNjcmlwdGlvbjsKCiBlbnVtIHsKICAgIE5TTm9BY3Rpb25EZWxldGVSdWxlLAog
ICAgTlNOdWxsaWZ5RGVsZXRlUnVsZSwKICAgIE5TQ2FzY2FkZURlbGV0ZVJ1bGUsCiAgICBOU0Rl
bnlEZWxldGVSdWxlCn0gOwoKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TRGVsZXRlUnVsZTsKCgpAaW50
ZXJmYWNlIE5TUmVsYXRpb25zaGlwRGVzY3JpcHRpb24gOiBOU1Byb3BlcnR5RGVzY3JpcHRpb24g
ewpAcHJpdmF0ZQogdm9pZCAqX3Jlc2VydmVkNTsKIHZvaWQgKl9yZXNlcnZlZDY7CiAgICBfX2F0
dHJpYnV0ZV9fKChvYmpjX2djKHdlYWspKSkgTlNFbnRpdHlEZXNjcmlwdGlvbiAqX2Rlc3RpbmF0
aW9uRW50aXR5OwogICAgTlNTdHJpbmcgKl9sYXp5RGVzdGluYXRpb25FbnRpdHlOYW1lOwogICAg
TlNSZWxhdGlvbnNoaXBEZXNjcmlwdGlvbiAqX2ludmVyc2VSZWxhdGlvbnNoaXA7CiAgICBOU1N0
cmluZyAqX2xhenlJbnZlcnNlUmVsYXRpb25zaGlwTmFtZTsKICAgIHVuc2lnbmVkIGxvbmcgX21h
eENvdW50OwogICAgdW5zaWduZWQgbG9uZyBfbWluQ291bnQ7CiAgICBOU0RlbGV0ZVJ1bGUgX2Rl
bGV0ZVJ1bGU7Cn0KCi0gKE5TRW50aXR5RGVzY3JpcHRpb24gKilkZXN0aW5hdGlvbkVudGl0eTsK
LSAodm9pZClzZXREZXN0aW5hdGlvbkVudGl0eTooTlNFbnRpdHlEZXNjcmlwdGlvbiAqKWVudGl0
eTsKLSAoTlNSZWxhdGlvbnNoaXBEZXNjcmlwdGlvbiAqKWludmVyc2VSZWxhdGlvbnNoaXA7Ci0g
KHZvaWQpc2V0SW52ZXJzZVJlbGF0aW9uc2hpcDooTlNSZWxhdGlvbnNoaXBEZXNjcmlwdGlvbiAq
KXJlbGF0aW9uc2hpcDsKCgotIChOU1VJbnRlZ2VyKW1heENvdW50OwotICh2b2lkKXNldE1heENv
dW50OihOU1VJbnRlZ2VyKW1heENvdW50OwotIChOU1VJbnRlZ2VyKW1pbkNvdW50OwotICh2b2lk
KXNldE1pbkNvdW50OihOU1VJbnRlZ2VyKW1pbkNvdW50OwoKLSAoTlNEZWxldGVSdWxlKWRlbGV0
ZVJ1bGU7Ci0gKHZvaWQpc2V0RGVsZXRlUnVsZTooTlNEZWxldGVSdWxlKXJ1bGU7CgotIChCT09M
KWlzVG9NYW55OwoKCgoKCi0gKE5TRGF0YSAqKXZlcnNpb25IYXNoOwoKCgpAZW5kCiMgMTkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL0NvcmVE
YXRhLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1l
d29yay9IZWFkZXJzL05TRmV0Y2hSZXF1ZXN0LmgiIDEgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVhZGVycy9OU0ZldGNoUmVxdWVzdC5oIiAz
CkBjbGFzcyBOU0FycmF5OwpAY2xhc3MgTlNFbnRpdHlEZXNjcmlwdGlvbjsKQGNsYXNzIE5TTWFu
YWdlZE9iamVjdE1vZGVsOwpAY2xhc3MgTlNQcmVkaWNhdGU7CkBjbGFzcyBOU1N0cmluZzsKCkBp
bnRlcmZhY2UgTlNGZXRjaFJlcXVlc3QgOiBOU09iamVjdCA8TlNDb2RpbmcsIE5TQ29weWluZz4g
ewpAcHJpdmF0ZQogdm9pZCAqX3Jlc2VydmVkOwogdm9pZCAqX3Jlc2VydmVkMjsKIE5TVUludGVn
ZXIgX29mZnNldDsKIE5TQXJyYXkgKl92YWx1ZXNUb0ZldGNoOwogICAgX19hdHRyaWJ1dGVfXygo
b2JqY19nYyh3ZWFrKSkpIE5TRW50aXR5RGVzY3JpcHRpb24gKl9lbnRpdHk7CiAgICBOU1ByZWRp
Y2F0ZSAqX3ByZWRpY2F0ZTsKICAgIE5TQXJyYXkgKl9zb3J0RGVzY3JpcHRvcnM7CiAgICBOU1VJ
bnRlZ2VyIF9iYXRjaFNpemU7CiAgICB1bnNpZ25lZCBsb25nIF9mZXRjaExpbWl0OwogICAgTlNB
cnJheSAqX2FmZmVjdGVkU3RvcmVzOwogICAgTlNBcnJheSAqX3JlbGF0aW9uc2hpcEtleVBhdGhz
Rm9yUHJlZmV0Y2hpbmc7CiAgICBzdHJ1Y3QgX2ZldGNoUmVxdWVzdEZsYWdzIHsKICAgICAgICB1
bnNpZ25lZCBpbnQgZGlzdGluY3RWYWx1ZXNPbmx5OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGlu
Y2x1ZGVzU3ViZW50aXRpZXM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgaW5jbHVkZXNQcm9wZXJ0
eVZhbHVlczoxOwogICAgICAgIHVuc2lnbmVkIGludCByZXN1bHRUeXBlOjM7CiAgICAgICAgdW5z
aWduZWQgaW50IHJldHVybnNPYmplY3RzQXNGYXVsdHM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQg
ZXhjbHVkZVBlbmRpbmdDaGFuZ2VzOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGlzSW5Vc2U6MTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgX1JFU0VSVkVEOjIzOwogICAgfSBfZmxhZ3M7Cn0KCi0gKE5T
RW50aXR5RGVzY3JpcHRpb24gKillbnRpdHk7Ci0gKHZvaWQpc2V0RW50aXR5OihOU0VudGl0eURl
c2NyaXB0aW9uICopZW50aXR5OwoKLSAoTlNQcmVkaWNhdGUgKilwcmVkaWNhdGU7Ci0gKHZvaWQp
c2V0UHJlZGljYXRlOihOU1ByZWRpY2F0ZSAqKXByZWRpY2F0ZTsKCi0gKE5TQXJyYXkgKilzb3J0
RGVzY3JpcHRvcnM7Ci0gKHZvaWQpc2V0U29ydERlc2NyaXB0b3JzOihOU0FycmF5ICopc29ydERl
c2NyaXB0b3JzOwoKLSAoTlNVSW50ZWdlcilmZXRjaExpbWl0OwotICh2b2lkKXNldEZldGNoTGlt
aXQ6KE5TVUludGVnZXIpbGltaXQ7CgotIChOU0FycmF5ICopYWZmZWN0ZWRTdG9yZXM7Ci0gKHZv
aWQpc2V0QWZmZWN0ZWRTdG9yZXM6KE5TQXJyYXkgKilzdG9yZXM7CgoKCgoKZW51bSB7CiAgICBO
U01hbmFnZWRPYmplY3RSZXN1bHRUeXBlID0gMHgwMCwKICAgIE5TTWFuYWdlZE9iamVjdElEUmVz
dWx0VHlwZSA9IDB4MDEKCiAgICAsIE5TRGljdGlvbmFyeVJlc3VsdFR5cGUgPSAweDAyCgp9Owp0
eXBlZGVmIE5TVUludGVnZXIgTlNGZXRjaFJlcXVlc3RSZXN1bHRUeXBlOwoKCgoKLSAoTlNGZXRj
aFJlcXVlc3RSZXN1bHRUeXBlKXJlc3VsdFR5cGU7Ci0gKHZvaWQpc2V0UmVzdWx0VHlwZTooTlNG
ZXRjaFJlcXVlc3RSZXN1bHRUeXBlKXR5cGU7CgoKCgotIChCT09MKWluY2x1ZGVzU3ViZW50aXRp
ZXM7Ci0gKHZvaWQpc2V0SW5jbHVkZXNTdWJlbnRpdGllczooQk9PTCl5ZXNObzsKCgoKCi0gKEJP
T0wpaW5jbHVkZXNQcm9wZXJ0eVZhbHVlczsKLSAodm9pZClzZXRJbmNsdWRlc1Byb3BlcnR5VmFs
dWVzOihCT09MKXllc05vOwoKCgoKLSAoQk9PTClyZXR1cm5zT2JqZWN0c0FzRmF1bHRzOwotICh2
b2lkKXNldFJldHVybnNPYmplY3RzQXNGYXVsdHM6KEJPT0wpeWVzTm87CgoKCgotIChOU0FycmF5
ICopcmVsYXRpb25zaGlwS2V5UGF0aHNGb3JQcmVmZXRjaGluZzsKLSAodm9pZClzZXRSZWxhdGlv
bnNoaXBLZXlQYXRoc0ZvclByZWZldGNoaW5nOihOU0FycmF5ICopa2V5czsKCgoKCgoKLSAoQk9P
TClpbmNsdWRlc1BlbmRpbmdDaGFuZ2VzIDsKLSAodm9pZClzZXRJbmNsdWRlc1BlbmRpbmdDaGFu
Z2VzOihCT09MKWZsYWcgOwoKCi0gKEJPT0wpcmV0dXJuc0Rpc3RpbmN0UmVzdWx0cyA7Ci0gKHZv
aWQpc2V0UmV0dXJuc0Rpc3RpbmN0UmVzdWx0czooQk9PTClmbGFnIDsKCgotIChOU0FycmF5ICop
cHJvcGVydGllc1RvRmV0Y2ggOwotICh2b2lkKXNldFByb3BlcnRpZXNUb0ZldGNoOihOU0FycmF5
ICopdmFsdWVzIDsKCgotIChOU1VJbnRlZ2VyKWZldGNoT2Zmc2V0IDsKLSAodm9pZClzZXRGZXRj
aE9mZnNldDooTlNVSW50ZWdlcilvZmZzZXQgOwoKCgotIChOU1VJbnRlZ2VyKWZldGNoQmF0Y2hT
aXplIDsKLSAodm9pZClzZXRGZXRjaEJhdGNoU2l6ZTooTlNVSW50ZWdlcikgYnNpemUgOwoKQGVu
ZAojIDIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVh
ZGVycy9Db3JlRGF0YS5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
RGF0YS5mcmFtZXdvcmsvSGVhZGVycy9OU0ZldGNoUmVxdWVzdEV4cHJlc3Npb24uaCIgMSAzCiMg
MTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJz
L05TRmV0Y2hSZXF1ZXN0RXhwcmVzc2lvbi5oIiAzCmVudW0gewogICAgTlNGZXRjaFJlcXVlc3RF
eHByZXNzaW9uVHlwZSA9IDUwCn07CgpAaW50ZXJmYWNlIE5TRmV0Y2hSZXF1ZXN0RXhwcmVzc2lv
biA6IE5TRXhwcmVzc2lvbiB7CkBwcml2YXRlCiAgICB2b2lkKiBfcmVzZXJ2ZWQxOwogICAgdm9p
ZCogX3Jlc2VydmVkMjsKICAgIHZvaWQqIF9yZXNlcnZlZDM7CiAgICB2b2lkKiBfcmVzZXJ2ZWQ0
OwogICAgTlNFeHByZXNzaW9uKiBfZmV0Y2hSZXF1ZXN0OwogICAgTlNFeHByZXNzaW9uKiBfbWFu
YWdlZE9iamVjdENvbnRleHQ7CiAgICBzdHJ1Y3QgX2ZldGNoRXhwcmVzc2lvbkZsYWdzIHsKICAg
ICAgICB1bnNpZ25lZCBpbnQgaXNDb3VudE9ubHk6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX1JF
U0VSVkVEOjMxOwogICAgfSBfZmxhZ3M7Cn0KCgoKKyAoTlNFeHByZXNzaW9uKilleHByZXNzaW9u
Rm9yRmV0Y2g6KE5TRXhwcmVzc2lvbiopZmV0Y2ggY29udGV4dDooTlNFeHByZXNzaW9uKiljb250
ZXh0IGNvdW50T25seTooQk9PTCljb3VudEZsYWc7CgoKCgotIChOU0V4cHJlc3Npb24gKilyZXF1
ZXN0RXhwcmVzc2lvbjsKCgoKCi0gKE5TRXhwcmVzc2lvbiAqKWNvbnRleHRFeHByZXNzaW9uOwoK
CgoKLSAoQk9PTClpc0NvdW50T25seVJlcXVlc3Q7CgpAZW5kCiMgMjEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL0NvcmVEYXRhLmgiIDIgMwoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJz
L05TTWFuYWdlZE9iamVjdE1vZGVsLmgiIDEgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVhZGVycy9OU01hbmFnZWRPYmplY3RNb2RlbC5oIiAz
CkBjbGFzcyBOU0FycmF5OwpAY2xhc3MgTlNEaWN0aW9uYXJ5OwpAY2xhc3MgTlNFbnRpdHlEZXNj
cmlwdGlvbjsKQGNsYXNzIE5TRmV0Y2hSZXF1ZXN0OwpAY2xhc3MgTlNNdXRhYmxlRGljdGlvbmFy
eTsKQGNsYXNzIE5TU3RyaW5nOwpAY2xhc3MgTlNVUkw7CgoKQGludGVyZmFjZSBOU01hbmFnZWRP
YmplY3RNb2RlbCA6IE5TT2JqZWN0IDxOU0NvZGluZywgTlNDb3B5aW5nLCBOU0Zhc3RFbnVtZXJh
dGlvbj4gewpAcHJpdmF0ZQogdm9pZCAqX3Jlc2VydmVkOwogdm9pZCAqX3Jlc2VydmVkMjsKICAg
IGlkIF9sb2NhbGl6YXRpb25Qb2xpY3k7CiAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfZW50aXRp
ZXM7CiAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfY29uZmlndXJhdGlvbnM7CiAgICBOU011dGFi
bGVEaWN0aW9uYXJ5ICpfZmV0Y2hSZXF1ZXN0VGVtcGxhdGVzOwogTlNTZXQgKl92ZXJzaW9uSWRl
bnRpZmllcnM7CiAgICBzdHJ1Y3QgX19tYW5hZ2VkT2JqZWN0TW9kZWxGbGFncyB7CiAgICAgICAg
dW5zaWduZWQgaW50IF9pc0luVXNlOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9pc0ltbXV0YWJs
ZToxOwogICAgICAgIHVuc2lnbmVkIGludCBfcmVzZXJ2ZWRFbnRpdHlEZXNjcmlwdGlvbjozMDsK
ICAgIH0gX21hbmFnZWRPYmplY3RNb2RlbEZsYWdzOwp9CgorIChOU01hbmFnZWRPYmplY3RNb2Rl
bCAqKW1lcmdlZE1vZGVsRnJvbUJ1bmRsZXM6KE5TQXJyYXkgKilidW5kbGVzOwoKKyAoTlNNYW5h
Z2VkT2JqZWN0TW9kZWwgKiltb2RlbEJ5TWVyZ2luZ01vZGVsczooTlNBcnJheSAqKW1vZGVsczsK
Ci0gKGlkKWluaXQ7Ci0gKGlkKWluaXRXaXRoQ29udGVudHNPZlVSTDooTlNVUkwgKil1cmw7Cgot
IChOU0RpY3Rpb25hcnkgKillbnRpdGllc0J5TmFtZTsKLSAoTlNBcnJheSAqKWVudGl0aWVzOwot
ICh2b2lkKXNldEVudGl0aWVzOihOU0FycmF5ICopZW50aXRpZXM7CgotIChOU0FycmF5ICopY29u
ZmlndXJhdGlvbnM7Ci0gKE5TQXJyYXkgKillbnRpdGllc0ZvckNvbmZpZ3VyYXRpb246KE5TU3Ry
aW5nICopY29uZmlndXJhdGlvbjsKLSAodm9pZClzZXRFbnRpdGllczooTlNBcnJheSAqKWVudGl0
aWVzIGZvckNvbmZpZ3VyYXRpb246KE5TU3RyaW5nICopY29uZmlndXJhdGlvbjsKCgotICh2b2lk
KXNldEZldGNoUmVxdWVzdFRlbXBsYXRlOihOU0ZldGNoUmVxdWVzdCAqKWZldGNoUmVxdWVzdFRl
bXBsYXRlIGZvck5hbWU6KE5TU3RyaW5nICopbmFtZTsKLSAoTlNGZXRjaFJlcXVlc3QgKilmZXRj
aFJlcXVlc3RUZW1wbGF0ZUZvck5hbWU6KE5TU3RyaW5nICopbmFtZTsKLSAoTlNGZXRjaFJlcXVl
c3QgKilmZXRjaFJlcXVlc3RGcm9tVGVtcGxhdGVXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lIHN1
YnN0aXR1dGlvblZhcmlhYmxlczooTlNEaWN0aW9uYXJ5ICopdmFyaWFibGVzOwojIDcyICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVhZGVycy9OU01hbmFn
ZWRPYmplY3RNb2RlbC5oIiAzCi0gKE5TRGljdGlvbmFyeSAqKWxvY2FsaXphdGlvbkRpY3Rpb25h
cnk7Ci0gKHZvaWQpc2V0TG9jYWxpemF0aW9uRGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5ICopbG9j
YWxpemF0aW9uRGljdGlvbmFyeTsKCgoKCgorIChOU01hbmFnZWRPYmplY3RNb2RlbCAqKW1lcmdl
ZE1vZGVsRnJvbUJ1bmRsZXM6KE5TQXJyYXkgKilidW5kbGVzIGZvclN0b3JlTWV0YWRhdGE6KE5T
RGljdGlvbmFyeSAqKW1ldGFkYXRhOwoKCgoKKyAoTlNNYW5hZ2VkT2JqZWN0TW9kZWwgKiltb2Rl
bEJ5TWVyZ2luZ01vZGVsczooTlNBcnJheSAqKW1vZGVscyBmb3JTdG9yZU1ldGFkYXRhOihOU0Rp
Y3Rpb25hcnkgKiltZXRhZGF0YTsKCgoKCi0gKE5TRGljdGlvbmFyeSAqKWZldGNoUmVxdWVzdFRl
bXBsYXRlc0J5TmFtZTsKCgoKLSAoTlNTZXQgKil2ZXJzaW9uSWRlbnRpZmllcnM7Ci0gKHZvaWQp
c2V0VmVyc2lvbklkZW50aWZpZXJzOihOU1NldCAqKWlkZW50aWZpZXJzOwoKCgoKLSAoQk9PTClp
c0NvbmZpZ3VyYXRpb246KE5TU3RyaW5nICopY29uZmlndXJhdGlvbiBjb21wYXRpYmxlV2l0aFN0
b3JlTWV0YWRhdGE6KE5TRGljdGlvbmFyeSAqKW1ldGFkYXRhOwoKCgoKLSAoTlNEaWN0aW9uYXJ5
ICopZW50aXR5VmVyc2lvbkhhc2hlc0J5TmFtZTsKCgoKQGVuZAojIDIyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRGF0YS5oIiAyIDMK
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRl
cnMvTlNNYW5hZ2VkT2JqZWN0LmgiIDEgMwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVhZGVycy9OU01hbmFnZWRPYmplY3QuaCIgMwpAY2xhc3Mg
TlNEaWN0aW9uYXJ5OwpAY2xhc3MgTlNFbnRpdHlEZXNjcmlwdGlvbjsKQGNsYXNzIE5TRXJyb3I7
CkBjbGFzcyBOU01hbmFnZWRPYmplY3RDb250ZXh0OwpAY2xhc3MgTlNNYW5hZ2VkT2JqZWN0SUQ7
CkBjbGFzcyBOU1N0cmluZzsKCmVudW0gewogTlNTbmFwc2hvdEV2ZW50VW5kb0luc2VydGlvbiA9
IDEgPDwgMSwKIE5TU25hcHNob3RFdmVudFVuZG9EZWxldGlvbiA9IDEgPDwgMiwKIE5TU25hcHNo
b3RFdmVudFVuZG9VcGRhdGUgPSAxIDw8IDMsCiBOU1NuYXBzaG90RXZlbnRSb2xsYmFjayA9IDEg
PDwgNCwKIE5TU25hcHNob3RFdmVudFJlZnJlc2ggPSAxIDw8IDUsCiBOU1NuYXBzaG90RXZlbnRN
ZXJnZVBvbGljeSA9IDEgPDwgNgp9OwoKdHlwZWRlZiBOU1VJbnRlZ2VyIE5TU25hcHNob3RFdmVu
dFR5cGU7CgpAaW50ZXJmYWNlIE5TTWFuYWdlZE9iamVjdCA6IE5TT2JqZWN0IHsKQHByaXZhdGUK
ICAgIGludDMyX3QgX2NkX3JjOwogICAgdWludHB0cl90IF9jZF9zdGF0ZUZsYWdzOwogICAgaWQg
X2NkX3Jhd0RhdGE7CiAgICBpZCBfY2RfZW50aXR5OwogICAgTlNNYW5hZ2VkT2JqZWN0Q29udGV4
dCogX2NkX21hbmFnZWRPYmplY3RDb250ZXh0OwogICAgTlNNYW5hZ2VkT2JqZWN0SUQqIF9jZF9v
YmplY3RJRDsKICAgIGlkIF9jZF9mYXVsdEhhbmRsZXI7CiAgICBpZCBfY2Rfb2JzZXJ2YXRpb25J
bmZvOwogICAgaWQqIF9jZF9zbmFwc2hvdHM7CiAgICB1aW50cHRyX3QgX2NkX2xvY2tpbmdJbmZv
OwogICAgaWQgX2NkX3F1ZXVlUmVmZXJlbmNlOwp9CgoKKyAoQk9PTCljb250ZXh0U2hvdWxkSWdu
b3JlVW5tb2RlbGVkUHJvcGVydHlDaGFuZ2VzIDsKCgotIChpZClpbml0V2l0aEVudGl0eTooTlNF
bnRpdHlEZXNjcmlwdGlvbiAqKWVudGl0eSBpbnNlcnRJbnRvTWFuYWdlZE9iamVjdENvbnRleHQ6
KE5TTWFuYWdlZE9iamVjdENvbnRleHQgKiljb250ZXh0OwoKCi0gKE5TTWFuYWdlZE9iamVjdENv
bnRleHQgKiltYW5hZ2VkT2JqZWN0Q29udGV4dDsKLSAoTlNFbnRpdHlEZXNjcmlwdGlvbiAqKWVu
dGl0eTsKLSAoTlNNYW5hZ2VkT2JqZWN0SUQgKilvYmplY3RJRDsKCgotIChCT09MKWlzSW5zZXJ0
ZWQ7Ci0gKEJPT0wpaXNVcGRhdGVkOwotIChCT09MKWlzRGVsZXRlZDsKCgotIChCT09MKWlzRmF1
bHQ7CgoKLSAoQk9PTCloYXNGYXVsdEZvclJlbGF0aW9uc2hpcE5hbWVkOihOU1N0cmluZyAqKWtl
eSA7CgoKLSAoTlNVSW50ZWdlcilmYXVsdGluZ1N0YXRlIDsKCgotICh2b2lkKXdpbGxBY2Nlc3NW
YWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0gKHZvaWQpZGlkQWNjZXNzVmFsdWVGb3JLZXk6
KE5TU3RyaW5nICopa2V5OwoKCi0gKHZvaWQpd2lsbENoYW5nZVZhbHVlRm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKLSAodm9pZClkaWRDaGFuZ2VWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0g
KHZvaWQpd2lsbENoYW5nZVZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWluS2V5IHdpdGhTZXRNdXRh
dGlvbjooTlNLZXlWYWx1ZVNldE11dGF0aW9uS2luZClpbk11dGF0aW9uS2luZCB1c2luZ09iamVj
dHM6KE5TU2V0ICopaW5PYmplY3RzOwotICh2b2lkKWRpZENoYW5nZVZhbHVlRm9yS2V5OihOU1N0
cmluZyAqKWluS2V5IHdpdGhTZXRNdXRhdGlvbjooTlNLZXlWYWx1ZVNldE11dGF0aW9uS2luZClp
bk11dGF0aW9uS2luZCB1c2luZ09iamVjdHM6KE5TU2V0ICopaW5PYmplY3RzOwoKCi0gKHZvaWQp
c2V0T2JzZXJ2YXRpb25JbmZvOihpZClpbk9ic2VydmF0aW9uSW5mbzsKLSAoaWQpb2JzZXJ2YXRp
b25JbmZvOwoKCi0gKHZvaWQpYXdha2VGcm9tRmV0Y2g7CgoKLSAodm9pZClhd2FrZUZyb21JbnNl
cnQ7CgoKLSAodm9pZClhd2FrZUZyb21TbmFwc2hvdEV2ZW50czooTlNTbmFwc2hvdEV2ZW50VHlw
ZSlmbGFncyA7CgoKLSAodm9pZClwcmVwYXJlRm9yRGVsZXRpb24gOwoKCi0gKHZvaWQpd2lsbFNh
dmU7CgoKLSAodm9pZClkaWRTYXZlOwoKCi0gKHZvaWQpd2lsbFR1cm5JbnRvRmF1bHQgOwoKCi0g
KHZvaWQpZGlkVHVybkludG9GYXVsdDsKCgoKCi0gKGlkKXZhbHVlRm9yS2V5OihOU1N0cmluZyAq
KWtleTsKCgotICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5
OwoKCi0gKGlkKXByaW1pdGl2ZVZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleTsKLSAodm9pZClz
ZXRQcmltaXRpdmVWYWx1ZTooaWQpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKCgotIChO
U0RpY3Rpb25hcnkgKiljb21taXR0ZWRWYWx1ZXNGb3JLZXlzOihOU0FycmF5ICopa2V5czsKCgot
IChOU0RpY3Rpb25hcnkgKiljaGFuZ2VkVmFsdWVzOwoKCgotIChCT09MKXZhbGlkYXRlVmFsdWU6
KGlkICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleSBlcnJvcjooTlNFcnJvciAqKillcnJv
cjsKLSAoQk9PTCl2YWxpZGF0ZUZvckRlbGV0ZTooTlNFcnJvciAqKillcnJvcjsKLSAoQk9PTCl2
YWxpZGF0ZUZvckluc2VydDooTlNFcnJvciAqKillcnJvcjsKLSAoQk9PTCl2YWxpZGF0ZUZvclVw
ZGF0ZTooTlNFcnJvciAqKillcnJvcjsKCkBlbmQKIyAyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZURhdGEuaCIgMiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNNYW5h
Z2VkT2JqZWN0SUQuaCIgMSAzCiMgMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVE
YXRhLmZyYW1ld29yay9IZWFkZXJzL05TTWFuYWdlZE9iamVjdElELmgiIDMKQGNsYXNzIE5TUGVy
c2lzdGVudFN0b3JlOwpAY2xhc3MgTlNFbnRpdHlEZXNjcmlwdGlvbjsKQGNsYXNzIE5TVVJMOwoK
CkBpbnRlcmZhY2UgTlNNYW5hZ2VkT2JqZWN0SUQgOiBOU09iamVjdCA8TlNDb3B5aW5nPiB7Cn0K
Ci0gKE5TRW50aXR5RGVzY3JpcHRpb24gKillbnRpdHk7Ci0gKE5TUGVyc2lzdGVudFN0b3JlICop
cGVyc2lzdGVudFN0b3JlOwoKLSAoQk9PTClpc1RlbXBvcmFyeUlEOwoKLSAoTlNVUkwgKilVUklS
ZXByZXNlbnRhdGlvbjsKCkBlbmQKIyAyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZURhdGEuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNNYW5hZ2VkT2JqZWN0
Q29udGV4dC5oIiAxIDMKIyAyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEu
ZnJhbWV3b3JrL0hlYWRlcnMvTlNNYW5hZ2VkT2JqZWN0Q29udGV4dC5oIiAzCkBjbGFzcyBOU0Fy
cmF5OwpAY2xhc3MgTlNEaWN0aW9uYXJ5OwpAY2xhc3MgTlNFcnJvcjsKQGNsYXNzIE5TRmV0Y2hS
ZXF1ZXN0OwpAY2xhc3MgTlNNYW5hZ2VkT2JqZWN0OwpAY2xhc3MgTlNNYW5hZ2VkT2JqZWN0SUQ7
CkBjbGFzcyBOU011dGFibGVBcnJheTsKQGNsYXNzIE5TTXV0YWJsZURpY3Rpb25hcnk7CkBjbGFz
cyBOU011dGFibGVTZXQ7CkBjbGFzcyBOU1BlcnNpc3RlbnRTdG9yZTsKQGNsYXNzIE5TUGVyc2lz
dGVudFN0b3JlQ29vcmRpbmF0b3I7CkBjbGFzcyBOU1JlY3Vyc2l2ZUxvY2s7CkBjbGFzcyBOU1Nl
dDsKQGNsYXNzIE5TU3RyaW5nOwpAY2xhc3MgTlNVbmRvTWFuYWdlcjsKCgpleHRlcm4gIkMiIE5T
U3RyaW5nICogY29uc3QgTlNNYW5hZ2VkT2JqZWN0Q29udGV4dFdpbGxTYXZlTm90aWZpY2F0aW9u
IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TTWFuYWdlZE9iamVjdENvbnRleHREaWRT
YXZlTm90aWZpY2F0aW9uOwoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU01hbmFnZWRP
YmplY3RDb250ZXh0T2JqZWN0c0RpZENoYW5nZU5vdGlmaWNhdGlvbjsKCgpleHRlcm4gIkMiIE5T
U3RyaW5nICogY29uc3QgTlNJbnNlcnRlZE9iamVjdHNLZXk7CmV4dGVybiAiQyIgTlNTdHJpbmcg
KiBjb25zdCBOU1VwZGF0ZWRPYmplY3RzS2V5OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
TlNEZWxldGVkT2JqZWN0c0tleTsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1JlZnJl
c2hlZE9iamVjdHNLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNJbnZhbGlkYXRl
ZE9iamVjdHNLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNJbnZhbGlkYXRlZEFs
bE9iamVjdHNLZXkgOwoKCmV4dGVybiAiQyIgaWQgTlNFcnJvck1lcmdlUG9saWN5OwoKCmV4dGVy
biAiQyIgaWQgTlNNZXJnZUJ5UHJvcGVydHlTdG9yZVRydW1wTWVyZ2VQb2xpY3k7CgoKZXh0ZXJu
ICJDIiBpZCBOU01lcmdlQnlQcm9wZXJ0eU9iamVjdFRydW1wTWVyZ2VQb2xpY3k7CgoKZXh0ZXJu
ICJDIiBpZCBOU092ZXJ3cml0ZU1lcmdlUG9saWN5OwoKCmV4dGVybiAiQyIgaWQgTlNSb2xsYmFj
a01lcmdlUG9saWN5OwoKCkBpbnRlcmZhY2UgTlNNYW5hZ2VkT2JqZWN0Q29udGV4dCA6IE5TT2Jq
ZWN0IDxOU0NvZGluZywgTlNMb2NraW5nPiB7CkBwcml2YXRlCiAgaW50MzJfdCBfc3BpbkxvY2s7
CiAgTlNQZXJzaXN0ZW50U3RvcmVDb29yZGluYXRvciAqX29iamVjdFN0b3JlOwogIE5TVW5kb01h
bmFnZXIgKl91bmRvTWFuYWdlcjsKICBOU011dGFibGVBcnJheSAqX2NoaWxkcmVuOwogIHN0cnVj
dCBfbWFuYWdlZE9iamVjdENvbnRleHRGbGFncyB7CiAgICAgIHVuc2lnbmVkIGludCBfcmVnaXN0
ZXJlZEZvckNhbGxiYWNrOjE7CiAgICAgIHVuc2lnbmVkIGludCBfcHJvcGFnYXRlc0RlbGV0ZXNB
dEVuZE9mRXZlbnQ6MTsKICAgICAgdW5zaWduZWQgaW50IF9leGhhdXN0aXZlVmFsaWRhdGlvbjox
OwogICAgICB1bnNpZ25lZCBpbnQgX3Byb2Nlc3NpbmdDaGFuZ2VzOjE7CiAgICAgIHVuc2lnbmVk
IGludCBfdXNlQ29tbWl0dGVkU25hcHNob3Q6MTsKICAgICAgdW5zaWduZWQgaW50IF9yZWdpc3Rl
cmVkVW5kb1RyYW5zYWN0aW9uSUQ6MTsKICAgICAgdW5zaWduZWQgaW50IF9yZXRhaW5zQWxsUmVn
aXN0ZXJlZE9iamVjdHM6MTsKICAgICAgdW5zaWduZWQgaW50IF9zYXZpbmdJblByb2dyZXNzOjE7
CiAgICAgIHVuc2lnbmVkIGludCBfd2FzRGlzcG9zZWQ6MTsKICAgICAgdW5zaWduZWQgaW50IF91
bnByb2Nlc3NlZENoYW5nZXNQZW5kaW5nOjE7CiAgICAgIHVuc2lnbmVkIGludCBfaXNEaXJ0eTox
OwogICAgICB1bnNpZ25lZCBpbnQgX2lnbm9yZVVuZG9DaGVja3BvaW50czoxOwogICB1bnNpZ25l
ZCBpbnQgX3Byb3BhZ2F0aW5nRGVsZXRlczoxOwogICB1bnNpZ25lZCBpbnQgX2lzTlNFZGl0b3JF
ZGl0aW5nOjE7CiAgICAgIHVuc2lnbmVkIGludCBfaXNNYWluVGhyZWFkQmxlc3NlZDoxOwogICAg
ICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVkRmxhZ3M6MTc7CiAgfSBfZmxhZ3M7CiAgTlNNdXRhYmxl
U2V0ICpfdW5wcm9jZXNzZWRDaGFuZ2VzOwogIE5TTXV0YWJsZVNldCAqX3VucHJvY2Vzc2VkRGVs
ZXRlczsKICBOU011dGFibGVTZXQgKl91bnByb2Nlc3NlZEluc2VydHM7CiAgTlNNdXRhYmxlU2V0
ICpfaW5zZXJ0ZWRPYmplY3RzOwogIE5TTXV0YWJsZVNldCAqX2RlbGV0ZWRPYmplY3RzOwogIE5T
TXV0YWJsZVNldCAqX2NoYW5nZWRPYmplY3RzOwogIE5TTXV0YWJsZVNldCAqX2xvY2tlZE9iamVj
dHM7CiAgTlNNdXRhYmxlU2V0ICpfcmVmcmVzaGVkT2JqZWN0czsKICBpZCBfaW5mb0J5R0lEOwog
IGlkICpfY2FjaGVkT2JzSW5mb0J5RW50aXR5OwogIHNob3J0IF91bmRvVHJhbnNhY3Rpb25JRDsK
ICBpZCBfbG9jazsKICBsb25nIF9sb2NrQ291bnQ7CiAgbG9uZyBfb2JqZWN0U3RvcmVMb2NrQ291
bnQ7CiAgTlNUaW1lSW50ZXJ2YWwgX2ZldGNoVGltZXN0YW1wOwogIGlkIF9kZWxlZ2F0ZTsKICBp
ZCBfcmVmZXJlbmNlUXVldWU7CiAgbG9uZyBfaWdub3JlQ2hhbmdlTm90aWZpY2F0aW9uOwogIGlk
IF9tZXJnZVBvbGljeTsKICBpbnQzMl90IF9jZF9yYzsKICBpbnQzMl90IF9yZXNlcnZlZDM7CiAg
aWQgX2VkaXRvcnM7CiAgaWQqIF9kZWJ1Z2dpbmdSZWNvcmRzOwogIHZvaWQgKl9yZXNlcnZlZDE7
CiAgdm9pZCAqX3Jlc2VydmVkMjsKfQoKCi0gKHZvaWQpc2V0UGVyc2lzdGVudFN0b3JlQ29vcmRp
bmF0b3I6KE5TUGVyc2lzdGVudFN0b3JlQ29vcmRpbmF0b3IgKiljb29yZGluYXRvcjsKLSAoTlNQ
ZXJzaXN0ZW50U3RvcmVDb29yZGluYXRvciAqKXBlcnNpc3RlbnRTdG9yZUNvb3JkaW5hdG9yOwoK
LSAodm9pZClzZXRVbmRvTWFuYWdlcjooTlNVbmRvTWFuYWdlciAqKXVuZG9NYW5hZ2VyOwotIChO
U1VuZG9NYW5hZ2VyICopdW5kb01hbmFnZXI7Ci0gKEJPT0wpaGFzQ2hhbmdlczsKCgotIChOU01h
bmFnZWRPYmplY3QgKilvYmplY3RSZWdpc3RlcmVkRm9ySUQ6KE5TTWFuYWdlZE9iamVjdElEICop
b2JqZWN0SUQ7CgoKLSAoTlNNYW5hZ2VkT2JqZWN0ICopb2JqZWN0V2l0aElEOihOU01hbmFnZWRP
YmplY3RJRCAqKW9iamVjdElEOwoKCi0gKE5TTWFuYWdlZE9iamVjdCopZXhpc3RpbmdPYmplY3RX
aXRoSUQ6KE5TTWFuYWdlZE9iamVjdElEKilvYmplY3RJRCBlcnJvcjooTlNFcnJvcioqKWVycm9y
IDsKCgotIChOU0FycmF5ICopZXhlY3V0ZUZldGNoUmVxdWVzdDooTlNGZXRjaFJlcXVlc3QgKily
ZXF1ZXN0IGVycm9yOihOU0Vycm9yICoqKWVycm9yOwoKCi0gKE5TVUludGVnZXIpIGNvdW50Rm9y
RmV0Y2hSZXF1ZXN0OiAoTlNGZXRjaFJlcXVlc3QgKilyZXF1ZXN0IGVycm9yOiAoTlNFcnJvciAq
KillcnJvciA7CgotICh2b2lkKWluc2VydE9iamVjdDooTlNNYW5hZ2VkT2JqZWN0ICopb2JqZWN0
OwotICh2b2lkKWRlbGV0ZU9iamVjdDooTlNNYW5hZ2VkT2JqZWN0ICopb2JqZWN0OwoKCi0gKHZv
aWQpcmVmcmVzaE9iamVjdDooTlNNYW5hZ2VkT2JqZWN0ICopb2JqZWN0IG1lcmdlQ2hhbmdlczoo
Qk9PTClmbGFnOwoKCi0gKHZvaWQpZGV0ZWN0Q29uZmxpY3RzRm9yT2JqZWN0OihOU01hbmFnZWRP
YmplY3QgKilvYmplY3Q7CgoKLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmlu
ZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNo
YW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dDsKCgotICh2b2lkKXByb2Nlc3NQZW5kaW5nQ2hh
bmdlczsKCgotICh2b2lkKWFzc2lnbk9iamVjdDooaWQpb2JqZWN0IHRvUGVyc2lzdGVudFN0b3Jl
OihOU1BlcnNpc3RlbnRTdG9yZSAqKXN0b3JlOwoKLSAoTlNTZXQgKilpbnNlcnRlZE9iamVjdHM7
Ci0gKE5TU2V0ICopdXBkYXRlZE9iamVjdHM7Ci0gKE5TU2V0ICopZGVsZXRlZE9iamVjdHM7Ci0g
KE5TU2V0ICopcmVnaXN0ZXJlZE9iamVjdHM7CgotICh2b2lkKXVuZG87Ci0gKHZvaWQpcmVkbzsK
LSAodm9pZClyZXNldDsKLSAodm9pZClyb2xsYmFjazsKLSAoQk9PTClzYXZlOihOU0Vycm9yICoq
KWVycm9yOwoKLSAodm9pZClsb2NrOwotICh2b2lkKXVubG9jazsKLSAoQk9PTCl0cnlMb2NrOwoK
Ci0gKEJPT0wpcHJvcGFnYXRlc0RlbGV0ZXNBdEVuZE9mRXZlbnQ7Ci0gKHZvaWQpc2V0UHJvcGFn
YXRlc0RlbGV0ZXNBdEVuZE9mRXZlbnQ6KEJPT0wpZmxhZzsKCgotIChCT09MKXJldGFpbnNSZWdp
c3RlcmVkT2JqZWN0czsKLSAodm9pZClzZXRSZXRhaW5zUmVnaXN0ZXJlZE9iamVjdHM6KEJPT0wp
ZmxhZzsKCgotIChOU1RpbWVJbnRlcnZhbClzdGFsZW5lc3NJbnRlcnZhbDsKLSAodm9pZClzZXRT
dGFsZW5lc3NJbnRlcnZhbDooTlNUaW1lSW50ZXJ2YWwpZXhwaXJhdGlvbjsKCi0gKHZvaWQpc2V0
TWVyZ2VQb2xpY3k6KGlkKW1lcmdlUG9saWN5OwotIChpZCltZXJnZVBvbGljeTsKCgoKLSAoQk9P
TClvYnRhaW5QZXJtYW5lbnRJRHNGb3JPYmplY3RzOihOU0FycmF5ICopb2JqZWN0cyBlcnJvcjoo
TlNFcnJvciAqKillcnJvciA7CgoKCi0gKHZvaWQpbWVyZ2VDaGFuZ2VzRnJvbUNvbnRleHREaWRT
YXZlTm90aWZpY2F0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbiA7CgpAZW5kCiMg
MjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJz
L0NvcmVEYXRhLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRh
LmZyYW1ld29yay9IZWFkZXJzL05TUGVyc2lzdGVudFN0b3JlQ29vcmRpbmF0b3IuaCIgMSAzCiMg
MjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJz
L05TUGVyc2lzdGVudFN0b3JlQ29vcmRpbmF0b3IuaCIgMwpAY2xhc3MgTlNBcnJheTsKQGNsYXNz
IE5TTXV0YWJsZUFycmF5OwpAY2xhc3MgTlNEaWN0aW9uYXJ5OwpAY2xhc3MgTlNFcnJvcjsKQGNs
YXNzIE5TTWFuYWdlZE9iamVjdElEOwpAY2xhc3MgTlNNYW5hZ2VkT2JqZWN0TW9kZWw7CkBjbGFz
cyBOU1BlcnNpc3RlbnRTdG9yZTsKQGNsYXNzIE5TTXV0YWJsZURpY3Rpb25hcnk7CkBjbGFzcyBO
U1N0cmluZzsKQGNsYXNzIE5TVVJMOwoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1NR
TGl0ZVN0b3JlVHlwZTsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TWE1MU3RvcmVUeXBl
OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNCaW5hcnlTdG9yZVR5cGU7CmV4dGVybiAi
QyIgTlNTdHJpbmcgKiBjb25zdCBOU0luTWVtb3J5U3RvcmVUeXBlOwoKCgoKZXh0ZXJuICJDIiBO
U1N0cmluZyAqIGNvbnN0IE5TU3RvcmVUeXBlS2V5OwoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBj
b25zdCBOU1N0b3JlVVVJREtleTsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNQZXJz
aXN0ZW50U3RvcmVDb29yZGluYXRvclN0b3Jlc0RpZENoYW5nZU5vdGlmaWNhdGlvbjsKCgpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNQZXJzaXN0ZW50U3RvcmVDb29yZGluYXRvcldpbGxS
ZW1vdmVTdG9yZU5vdGlmaWNhdGlvbiA7CgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
TlNBZGRlZFBlcnNpc3RlbnRTdG9yZXNLZXk7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBO
U1JlbW92ZWRQZXJzaXN0ZW50U3RvcmVzS2V5OwoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25z
dCBOU1VVSURDaGFuZ2VkUGVyc2lzdGVudFN0b3Jlc0tleTsKCgoKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKiBjb25zdCBOU1JlYWRPbmx5UGVyc2lzdGVudFN0b3JlT3B0aW9uOwoKCmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBOU1ZhbGlkYXRlWE1MU3RvcmVPcHRpb247CgoKCgoKZXh0ZXJuICJD
IiBOU1N0cmluZyAqIGNvbnN0IE5TUGVyc2lzdGVudFN0b3JlVGltZW91dE9wdGlvbiA7CgoKCmV4
dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU1NRTGl0ZVByYWdtYXNPcHRpb24gOwoKCgpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNTUUxpdGVBbmFseXplT3B0aW9uIDsKCgoKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TU1FMaXRlTWFudWFsVmFjdXVtT3B0aW9uIDsKCgoKZXh0
ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TSWdub3JlUGVyc2lzdGVudFN0b3JlVmVyc2lvbmlu
Z09wdGlvbiA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU01pZ3JhdGVQZXJzaXN0
ZW50U3RvcmVzQXV0b21hdGljYWxseU9wdGlvbiA7CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNv
bnN0IE5TSW5mZXJNYXBwaW5nTW9kZWxBdXRvbWF0aWNhbGx5T3B0aW9uIDsKCgoKZXh0ZXJuICJD
IiBOU1N0cmluZyAqIGNvbnN0IE5TU3RvcmVNb2RlbFZlcnNpb25IYXNoZXNLZXkgOwoKCgpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNTdG9yZU1vZGVsVmVyc2lvbklkZW50aWZpZXJzS2V5
IDsKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TUGVyc2lzdGVudFN0b3JlT1NDb21w
YXRpYmlsaXR5IDsKCgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TWE1MRXh0ZXJu
YWxSZWNvcmRUeXBlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TQmluYXJ5RXh0ZXJu
YWxSZWNvcmRUeXBlIDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgTlNFeHRlcm5hbFJl
Y29yZHNGaWxlRm9ybWF0T3B0aW9uIDsKCgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0
IE5TRXh0ZXJuYWxSZWNvcmRzRGlyZWN0b3J5T3B0aW9uIDsKCgpleHRlcm4gIkMiIE5TU3RyaW5n
ICogY29uc3QgTlNFeHRlcm5hbFJlY29yZEV4dGVuc2lvbk9wdGlvbiA7CgoKZXh0ZXJuICJDIiBO
U1N0cmluZyAqIGNvbnN0IE5TRW50aXR5TmFtZUluUGF0aEtleSA7CgoKZXh0ZXJuICJDIiBOU1N0
cmluZyAqIGNvbnN0IE5TU3RvcmVVVUlESW5QYXRoS2V5IDsKCgpleHRlcm4gIkMiIE5TU3RyaW5n
ICogY29uc3QgTlNTdG9yZVBhdGhLZXkgOwoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBO
U01vZGVsUGF0aEtleSA7CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TT2JqZWN0VVJJ
S2V5IDsKCkBpbnRlcmZhY2UgTlNQZXJzaXN0ZW50U3RvcmVDb29yZGluYXRvciA6IE5TT2JqZWN0
IDxOU0xvY2tpbmc+IHsKQHByaXZhdGUKICAgIHZvaWQgKl9yZXNlcnZlZDsKICAgIHZvaWQgKl9y
ZXNlcnZlZDI7CiAgICB2b2lkICpfcmVzZXJ2ZWQzOwogICAgaWQgX2V4dGVybmFsUmVjb3Jkc0hl
bHBlcjsKICAgIE5TTWFuYWdlZE9iamVjdE1vZGVsICpfbWFuYWdlZE9iamVjdE1vZGVsOwogICAg
aWQgX2NvcmVMb2NrOwogICAgTlNNdXRhYmxlQXJyYXkgKl9wZXJzaXN0ZW50U3RvcmVzOwp9CgoK
CgorIChOU0RpY3Rpb25hcnkgKilyZWdpc3RlcmVkU3RvcmVUeXBlcyA7CgoKCisgKHZvaWQpcmVn
aXN0ZXJTdG9yZUNsYXNzOihDbGFzcylzdG9yZUNsYXNzIGZvclN0b3JlVHlwZTooTlNTdHJpbmcg
KilzdG9yZVR5cGUgOwoKCgorIChOU0RpY3Rpb25hcnkgKiltZXRhZGF0YUZvclBlcnNpc3RlbnRT
dG9yZU9mVHlwZTooTlNTdHJpbmcgKilzdG9yZVR5cGUgVVJMOihOU1VSTCAqKXVybCBlcnJvcjoo
TlNFcnJvciAqKillcnJvciA7CisgKEJPT0wpc2V0TWV0YWRhdGE6KE5TRGljdGlvbmFyeSAqKW1l
dGFkYXRhIGZvclBlcnNpc3RlbnRTdG9yZU9mVHlwZTooTlNTdHJpbmcgKilzdG9yZVR5cGUgVVJM
OihOU1VSTCopdXJsIGVycm9yOihOU0Vycm9yICoqKWVycm9yIDsKIyAxNzkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL05TUGVyc2lzdGVudFN0
b3JlQ29vcmRpbmF0b3IuaCIgMworIChOU0RpY3Rpb25hcnkgKillbGVtZW50c0Rlcml2ZWRGcm9t
RXh0ZXJuYWxSZWNvcmRVUkw6KE5TVVJMICopZmlsZVVSTCA7CgoKCgoKLSAoTlNQZXJzaXN0ZW50
U3RvcmUgKilpbXBvcnRTdG9yZVdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKXN0b3JlSWRlbnRp
ZmllciBmcm9tRXh0ZXJuYWxSZWNvcmRzRGlyZWN0b3J5OihOU1VSTCAqKWV4dGVybmFsUmVjb3Jk
c1VSTCB0b1VSTDooTlNVUkwgKilkZXN0aW5hdGlvblVSTCBvcHRpb25zOihOU0RpY3Rpb25hcnkg
KilvcHRpb25zIHdpdGhUeXBlOihOU1N0cmluZyAqKXN0b3JlVHlwZSBlcnJvcjooTlNFcnJvciAq
KillcnJvciA7CgoKCi0gKHZvaWQpc2V0TWV0YWRhdGE6KE5TRGljdGlvbmFyeSAqKW1ldGFkYXRh
IGZvclBlcnNpc3RlbnRTdG9yZTooTlNQZXJzaXN0ZW50U3RvcmUgKilzdG9yZTsKCgoKLSAoTlNE
aWN0aW9uYXJ5ICopbWV0YWRhdGFGb3JQZXJzaXN0ZW50U3RvcmU6KE5TUGVyc2lzdGVudFN0b3Jl
ICopc3RvcmU7CgotIChpZClpbml0V2l0aE1hbmFnZWRPYmplY3RNb2RlbDooTlNNYW5hZ2VkT2Jq
ZWN0TW9kZWwgKiltb2RlbDsKCi0gKE5TTWFuYWdlZE9iamVjdE1vZGVsICopbWFuYWdlZE9iamVj
dE1vZGVsOwoKLSAoTlNBcnJheSAqKXBlcnNpc3RlbnRTdG9yZXM7Ci0gKE5TUGVyc2lzdGVudFN0
b3JlICopcGVyc2lzdGVudFN0b3JlRm9yVVJMOihOU1VSTCAqKVVSTDsKLSAoTlNVUkwgKilVUkxG
b3JQZXJzaXN0ZW50U3RvcmU6KE5TUGVyc2lzdGVudFN0b3JlICopc3RvcmU7CgoKCi0gKEJPT0wp
c2V0VVJMOihOU1VSTCopdXJsIGZvclBlcnNpc3RlbnRTdG9yZTooTlNQZXJzaXN0ZW50U3RvcmUg
KilzdG9yZSA7CgoKCi0gKE5TUGVyc2lzdGVudFN0b3JlICopYWRkUGVyc2lzdGVudFN0b3JlV2l0
aFR5cGU6KE5TU3RyaW5nICopc3RvcmVUeXBlIGNvbmZpZ3VyYXRpb246KE5TU3RyaW5nICopY29u
ZmlndXJhdGlvbiBVUkw6KE5TVVJMICopc3RvcmVVUkwgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICop
b3B0aW9ucyBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKLSAoQk9PTClyZW1vdmVQZXJzaXN0ZW50
U3RvcmU6KE5TUGVyc2lzdGVudFN0b3JlICopc3RvcmUgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7
CgoKCgotIChOU1BlcnNpc3RlbnRTdG9yZSAqKW1pZ3JhdGVQZXJzaXN0ZW50U3RvcmU6KE5TUGVy
c2lzdGVudFN0b3JlICopc3RvcmUgdG9VUkw6KE5TVVJMICopVVJMIG9wdGlvbnM6KE5TRGljdGlv
bmFyeSAqKW9wdGlvbnMgd2l0aFR5cGU6KE5TU3RyaW5nICopc3RvcmVUeXBlIGVycm9yOihOU0Vy
cm9yICoqKWVycm9yOwoKCgotIChOU01hbmFnZWRPYmplY3RJRCAqKW1hbmFnZWRPYmplY3RJREZv
clVSSVJlcHJlc2VudGF0aW9uOihOU1VSTCAqKXVybDsKCi0gKHZvaWQpbG9jazsKLSAodm9pZCl1
bmxvY2s7Ci0gKEJPT0wpdHJ5TG9jazsKCgoKCisgKE5TRGljdGlvbmFyeSAqKW1ldGFkYXRhRm9y
UGVyc2lzdGVudFN0b3JlV2l0aFVSTDooTlNVUkwgKil1cmwgZXJyb3I6KE5TRXJyb3IgKiopZXJy
b3IgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoKQGVuZAojIDI3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVhZGVycy9Db3JlRGF0YS5oIiAyIDMK
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRl
cnMvTlNQZXJzaXN0ZW50U3RvcmUuaCIgMSAzCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL05TUGVyc2lzdGVudFN0b3JlLmgiIDMKQGNs
YXNzIE5TUGVyc2lzdGVudFN0b3JlQ29vcmRpbmF0b3I7CgpAaW50ZXJmYWNlIE5TUGVyc2lzdGVu
dFN0b3JlIDogTlNPYmplY3QgewogICAgQHByaXZhdGUKICAgIF9fYXR0cmlidXRlX18oKG9iamNf
Z2Mod2VhaykpKSBOU1BlcnNpc3RlbnRTdG9yZUNvb3JkaW5hdG9yICpfY29vcmRpbmF0b3I7CiAg
ICBOU1N0cmluZyAqX2NvbmZpZ3VyYXRpb25OYW1lOwogICAgTlNVUkwgKl91cmw7CiAgICBOU0Rp
Y3Rpb25hcnkgKl9vcHRpb25zOwogICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX29pZEZhY3Rvcmll
czsKICAgIGlkIF9kZWZhdWx0RmF1bHRIYW5kbGVyOwogICAgc3RydWN0IF9vYmplY3RTdG9yZUZs
YWdzIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaXNSZWFkT25seToxOwogICAgICAgIHVuc2lnbmVk
IGludCBjbGVhbk9uUmVtb3ZlOjE7CiAgICAgICAgdW5zaWduZWQgaW50IGlzTUREaXJ0eToxOwog
ICAgICAgIHVuc2lnbmVkIGludCBfUkVTRVJWRUQ6Mjk7CiAgICB9IF9mbGFnczsKIHZvaWQgKl90
ZW1wb3JhcnlJRENsYXNzOwogdm9pZCAqX3Jlc2VydmVkMjsKIHZvaWQgKl9yZXNlcnZlZDM7Cn0K
CgoKKyAoTlNEaWN0aW9uYXJ5ICopbWV0YWRhdGFGb3JQZXJzaXN0ZW50U3RvcmVXaXRoVVJMOihO
U1VSTCAqKXVybCBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKKyAoQk9PTClzZXRNZXRhZGF0YToo
TlNEaWN0aW9uYXJ5ICopbWV0YWRhdGEgZm9yUGVyc2lzdGVudFN0b3JlV2l0aFVSTDooTlNVUkwq
KXVybCBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKCgoKKyAoQ2xhc3MpbWlncmF0aW9uTWFuYWdl
ckNsYXNzIDsKCgotIChpZClpbml0V2l0aFBlcnNpc3RlbnRTdG9yZUNvb3JkaW5hdG9yOihOU1Bl
cnNpc3RlbnRTdG9yZUNvb3JkaW5hdG9yICopcm9vdCBjb25maWd1cmF0aW9uTmFtZTooTlNTdHJp
bmcgKiluYW1lIFVSTDooTlNVUkwgKil1cmwgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9u
cyA7CgoKCi0oQk9PTClsb2FkTWV0YWRhdGE6KE5TRXJyb3IgKiopZXJyb3I7CgoKLSAoTlNQZXJz
aXN0ZW50U3RvcmVDb29yZGluYXRvciopIHBlcnNpc3RlbnRTdG9yZUNvb3JkaW5hdG9yOwoKLSAo
TlNTdHJpbmcgKiljb25maWd1cmF0aW9uTmFtZTsKLSAoTlNEaWN0aW9uYXJ5ICopb3B0aW9uczsK
Ci0gKE5TVVJMICopVVJMOwotICh2b2lkKXNldFVSTDooTlNVUkwgKil1cmw7CgotIChOU1N0cmlu
ZyAqKWlkZW50aWZpZXI7Ci0gKHZvaWQpc2V0SWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlm
aWVyOwoKLSAoTlNTdHJpbmcgKil0eXBlOwoKLSAoQk9PTClpc1JlYWRPbmx5OwotICh2b2lkKXNl
dFJlYWRPbmx5OihCT09MKWZsYWc7CgotIChOU0RpY3Rpb25hcnkgKiltZXRhZGF0YTsKLSAodm9p
ZClzZXRNZXRhZGF0YTooTlNEaWN0aW9uYXJ5ICopc3RvcmVNZXRhZGF0YTsKCgotICh2b2lkKWRp
ZEFkZFRvUGVyc2lzdGVudFN0b3JlQ29vcmRpbmF0b3I6KE5TUGVyc2lzdGVudFN0b3JlQ29vcmRp
bmF0b3IgKiljb29yZGluYXRvcjsKCgoKLSAodm9pZCl3aWxsUmVtb3ZlRnJvbVBlcnNpc3RlbnRT
dG9yZUNvb3JkaW5hdG9yOihOU1BlcnNpc3RlbnRTdG9yZUNvb3JkaW5hdG9yICopY29vcmRpbmF0
b3I7CgpAZW5kCiMgMjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1l
d29yay9IZWFkZXJzL0NvcmVEYXRhLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL05TQXRvbWljU3RvcmUuaCIgMSAzCiMgMTMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL05T
QXRvbWljU3RvcmUuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRh
LmZyYW1ld29yay9IZWFkZXJzL05TQXRvbWljU3RvcmVDYWNoZU5vZGUuaCIgMSAzCiMgMTYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL05TQXRv
bWljU3RvcmVDYWNoZU5vZGUuaCIgMwpAaW50ZXJmYWNlIE5TQXRvbWljU3RvcmVDYWNoZU5vZGUg
OiBOU09iamVjdCB7CiAgICBAcHJpdmF0ZQogICAgTlNNYW5hZ2VkT2JqZWN0SUQgKl9vYmplY3RJ
RDsKICAgIHVpbnRwdHJfdCBfX3ZlcnNpb25OdW1iZXI7CiBOU011dGFibGVEaWN0aW9uYXJ5ICpf
cHJvcGVydHlDYWNoZTsKIHZvaWQgKl9yZXNlcnZlZDE7Cn0KCgotIChpZClpbml0V2l0aE9iamVj
dElEOihOU01hbmFnZWRPYmplY3RJRCAqKW1vaWQ7CgoKLSAoTlNNYW5hZ2VkT2JqZWN0SUQqKW9i
amVjdElEOwoKCgotIChOU011dGFibGVEaWN0aW9uYXJ5ICopcHJvcGVydHlDYWNoZTsKCgoKLSAo
dm9pZClzZXRQcm9wZXJ0eUNhY2hlOihOU011dGFibGVEaWN0aW9uYXJ5ICopcHJvcGVydHlDYWNo
ZTsKCgoKCgoKLSAoaWQpdmFsdWVGb3JLZXk6KE5TU3RyaW5nKilrZXk7CgoKCi0gKHZvaWQpc2V0
VmFsdWU6KGlkKXZhbHVlIGZvcktleTooTlNTdHJpbmcqKWtleTsKCkBlbmQKIyAxNCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNBdG9taWNT
dG9yZS5oIiAyIDMKCgpAaW50ZXJmYWNlIE5TQXRvbWljU3RvcmUgOiBOU1BlcnNpc3RlbnRTdG9y
ZSB7CiBAcHJpdmF0ZQogICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX25vZGVDYWNoZTsKICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkgKl9lbnRpdHlDYWNoZTsKICAgIE5TTXV0YWJsZURpY3Rpb25hcnkg
Kl9zdG9yZU1ldGFkYXRhOwogICAgTlNJbnRlZ2VyIF9uZXh0UmVmZXJlbmNlOwogdm9pZCAqX3Jl
c2VydmVkNDsKIHZvaWQgKl9yZXNlcnZlZDU7Cn0KCgotIChpZClpbml0V2l0aFBlcnNpc3RlbnRT
dG9yZUNvb3JkaW5hdG9yOihOU1BlcnNpc3RlbnRTdG9yZUNvb3JkaW5hdG9yICopY29vcmRpbmF0
b3IgY29uZmlndXJhdGlvbk5hbWU6KE5TU3RyaW5nICopY29uZmlndXJhdGlvbk5hbWUgVVJMOihO
U1VSTCAqKXVybCBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zOwoKCi0gKEJPT0wpbG9h
ZDooTlNFcnJvciAqKillcnJvcjsKCgotIChCT09MKXNhdmU6KE5TRXJyb3IgKiopZXJyb3I7CgoK
LSAoTlNBdG9taWNTdG9yZUNhY2hlTm9kZSAqKW5ld0NhY2hlTm9kZUZvck1hbmFnZWRPYmplY3Q6
KE5TTWFuYWdlZE9iamVjdCAqKW1hbmFnZWRPYmplY3Q7CgoKLSAodm9pZCl1cGRhdGVDYWNoZU5v
ZGU6KE5TQXRvbWljU3RvcmVDYWNoZU5vZGUgKilub2RlIGZyb21NYW5hZ2VkT2JqZWN0OihOU01h
bmFnZWRPYmplY3QgKiltYW5hZ2VkT2JqZWN0OwoKCi0gKE5TU2V0ICopY2FjaGVOb2RlczsKCgot
ICh2b2lkKWFkZENhY2hlTm9kZXM6KE5TU2V0ICopY2FjaGVOb2RlczsKCgotICh2b2lkKXdpbGxS
ZW1vdmVDYWNoZU5vZGVzOihOU1NldCAqKWNhY2hlTm9kZXM7CgoKLSAoTlNBdG9taWNTdG9yZUNh
Y2hlTm9kZSAqKWNhY2hlTm9kZUZvck9iamVjdElEOihOU01hbmFnZWRPYmplY3RJRCAqKW9iamVj
dElEOwoKCi0gKE5TTWFuYWdlZE9iamVjdElEICopb2JqZWN0SURGb3JFbnRpdHk6KE5TRW50aXR5
RGVzY3JpcHRpb24gKillbnRpdHkgcmVmZXJlbmNlT2JqZWN0OihpZClkYXRhOwoKCgoKCi0gKGlk
KW5ld1JlZmVyZW5jZU9iamVjdEZvck1hbmFnZWRPYmplY3Q6KE5TTWFuYWdlZE9iamVjdCAqKW1h
bmFnZWRPYmplY3Q7CgoKLSAoaWQpcmVmZXJlbmNlT2JqZWN0Rm9yT2JqZWN0SUQ6KE5TTWFuYWdl
ZE9iamVjdElEICopb2JqZWN0SUQ7CgpAZW5kCiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL0NvcmVEYXRhLmgiIDIgMwoKCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNFbnRp
dHlNaWdyYXRpb25Qb2xpY3kuaCIgMSAzCiMgMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvcmVEYXRhLmZyYW1ld29yay9IZWFkZXJzL05TRW50aXR5TWlncmF0aW9uUG9saWN5LmgiIDMK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TTWlncmF0aW9uTWFuYWdlcktleSA7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU01pZ3JhdGlvblNvdXJjZU9iamVjdEtleSA7CmV4dGVy
biAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU01pZ3JhdGlvbkRlc3RpbmF0aW9uT2JqZWN0S2V5IDsK
ZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IE5TTWlncmF0aW9uRW50aXR5TWFwcGluZ0tleSA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU01pZ3JhdGlvblByb3BlcnR5TWFwcGluZ0tl
eSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBOU01pZ3JhdGlvbkVudGl0eVBvbGljeUtl
eSA7CgpAY2xhc3MgTlNNYW5hZ2VkT2JqZWN0OwpAY2xhc3MgTlNFbnRpdHlNYXBwaW5nOwpAY2xh
c3MgTlNNaWdyYXRpb25NYW5hZ2VyOwoKQGludGVyZmFjZSBOU0VudGl0eU1pZ3JhdGlvblBvbGlj
eSA6IE5TT2JqZWN0CgoKCgotIChCT09MKWJlZ2luRW50aXR5TWFwcGluZzooTlNFbnRpdHlNYXBw
aW5nICopbWFwcGluZyBtYW5hZ2VyOihOU01pZ3JhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGVycm9y
OihOU0Vycm9yICoqKWVycm9yOwoKCgoKCgotIChCT09MKWNyZWF0ZURlc3RpbmF0aW9uSW5zdGFu
Y2VzRm9yU291cmNlSW5zdGFuY2U6KE5TTWFuYWdlZE9iamVjdCAqKXNJbnN0YW5jZSBlbnRpdHlN
YXBwaW5nOihOU0VudGl0eU1hcHBpbmcgKiltYXBwaW5nIG1hbmFnZXI6KE5TTWlncmF0aW9uTWFu
YWdlciAqKW1hbmFnZXIgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CgoKCgotIChCT09MKWVuZElu
c3RhbmNlQ3JlYXRpb25Gb3JFbnRpdHlNYXBwaW5nOihOU0VudGl0eU1hcHBpbmcgKiltYXBwaW5n
IG1hbmFnZXI6KE5TTWlncmF0aW9uTWFuYWdlciAqKW1hbmFnZXIgZXJyb3I6KE5TRXJyb3IgKiop
ZXJyb3I7CgoKCgotIChCT09MKWNyZWF0ZVJlbGF0aW9uc2hpcHNGb3JEZXN0aW5hdGlvbkluc3Rh
bmNlOihOU01hbmFnZWRPYmplY3QgKilkSW5zdGFuY2UgZW50aXR5TWFwcGluZzooTlNFbnRpdHlN
YXBwaW5nICopbWFwcGluZyBtYW5hZ2VyOihOU01pZ3JhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGVy
cm9yOihOU0Vycm9yICoqKWVycm9yOwoKCgoKLSAoQk9PTCllbmRSZWxhdGlvbnNoaXBDcmVhdGlv
bkZvckVudGl0eU1hcHBpbmc6KE5TRW50aXR5TWFwcGluZyAqKW1hcHBpbmcgbWFuYWdlcjooTlNN
aWdyYXRpb25NYW5hZ2VyICopbWFuYWdlciBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKCgoKCi0g
KEJPT0wpcGVyZm9ybUN1c3RvbVZhbGlkYXRpb25Gb3JFbnRpdHlNYXBwaW5nOihOU0VudGl0eU1h
cHBpbmcgKiltYXBwaW5nIG1hbmFnZXI6KE5TTWlncmF0aW9uTWFuYWdlciAqKW1hbmFnZXIgZXJy
b3I6KE5TRXJyb3IgKiopZXJyb3I7CgoKCgotIChCT09MKWVuZEVudGl0eU1hcHBpbmc6KE5TRW50
aXR5TWFwcGluZyAqKW1hcHBpbmcgbWFuYWdlcjooTlNNaWdyYXRpb25NYW5hZ2VyICopbWFuYWdl
ciBlcnJvcjooTlNFcnJvciAqKillcnJvcjsKCkBlbmQKIyAzMyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZURhdGEuaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNN
YXBwaW5nTW9kZWwuaCIgMSAzCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVE
YXRhLmZyYW1ld29yay9IZWFkZXJzL05TTWFwcGluZ01vZGVsLmgiIDMKQGNsYXNzIE5TTWFuYWdl
ZE9iamVjdE1vZGVsOwoKQGludGVyZmFjZSBOU01hcHBpbmdNb2RlbDogTlNPYmplY3QgewogICAg
QHByaXZhdGUKICAgIHZvaWQgKl9yZXNlcnZlZDsKICAgIHZvaWQgKl9yZXNlcnZlZDE7CiAgICB2
b2lkICpfcmVzZXJ2ZWQyOwogICAgTlNNdXRhYmxlQXJyYXkgKl9lbnRpdHlNYXBwaW5nczsKICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkgKl9lbnRpdHlNYXBwaW5nc0J5TmFtZTsKICAgIHN0cnVjdCBf
X21vZGVsTWFwcGluZ0ZsYWdzIHsKICAgICAgICB1bnNpZ25lZCBpbnQgX2lzSW5Vc2U6MTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgX3Jlc2VydmVkTW9kZWxNYXBwaW5nOjMxOwogICAgfSBfbW9kZWxN
YXBwaW5nRmxhZ3M7Cgp9CgoKCgorIChOU01hcHBpbmdNb2RlbCAqKW1hcHBpbmdNb2RlbEZyb21C
dW5kbGVzOihOU0FycmF5ICopYnVuZGxlcyBmb3JTb3VyY2VNb2RlbDooTlNNYW5hZ2VkT2JqZWN0
TW9kZWwgKilzb3VyY2VNb2RlbCBkZXN0aW5hdGlvbk1vZGVsOihOU01hbmFnZWRPYmplY3RNb2Rl
bCAqKWRlc3RpbmF0aW9uTW9kZWw7CgoKCisgKE5TTWFwcGluZ01vZGVsICopaW5mZXJyZWRNYXBw
aW5nTW9kZWxGb3JTb3VyY2VNb2RlbDooTlNNYW5hZ2VkT2JqZWN0TW9kZWwgKilzb3VyY2VNb2Rl
bCBkZXN0aW5hdGlvbk1vZGVsOihOU01hbmFnZWRPYmplY3RNb2RlbCAqKWRlc3RpbmF0aW9uTW9k
ZWwgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3IgOwoKCgotIChpZClpbml0V2l0aENvbnRlbnRzT2ZV
Ukw6KE5TVVJMICopdXJsOwoKCgoKLSAoTlNBcnJheSAqKWVudGl0eU1hcHBpbmdzOwotICh2b2lk
KXNldEVudGl0eU1hcHBpbmdzOihOU0FycmF5ICopbWFwcGluZ3M7CgoKCgotIChOU0RpY3Rpb25h
cnkgKillbnRpdHlNYXBwaW5nc0J5TmFtZTsKCkBlbmQKIyAzNCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZURhdGEuaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNF
bnRpdHlNYXBwaW5nLmgiIDEgMwojIDEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
RGF0YS5mcmFtZXdvcmsvSGVhZGVycy9OU0VudGl0eU1hcHBpbmcuaCIgMwpAY2xhc3MgTlNFbnRp
dHlEZXNjcmlwdGlvbjsKQGNsYXNzIE5TRW50aXR5TWFwcGluZzsKCgoKZW51bSB7CiAgICBOU1Vu
ZGVmaW5lZEVudGl0eU1hcHBpbmdUeXBlID0gMHgwMCwKICAgIE5TQ3VzdG9tRW50aXR5TWFwcGlu
Z1R5cGUgPSAweDAxLAogICAgTlNBZGRFbnRpdHlNYXBwaW5nVHlwZSA9IDB4MDIsCiAgICBOU1Jl
bW92ZUVudGl0eU1hcHBpbmdUeXBlID0gMHgwMywKICAgIE5TQ29weUVudGl0eU1hcHBpbmdUeXBl
ID0gMHgwNCwKICAgIE5TVHJhbnNmb3JtRW50aXR5TWFwcGluZ1R5cGUgPSAweDA1LAp9Owp0eXBl
ZGVmIE5TVUludGVnZXIgTlNFbnRpdHlNYXBwaW5nVHlwZTsKCgpAaW50ZXJmYWNlIE5TRW50aXR5
TWFwcGluZyA6IE5TT2JqZWN0IHsKCkBwcml2YXRlCiAgICB2b2lkICpfcmVzZXJ2ZWQ7CiAgICB2
b2lkICpfcmVzZXJ2ZWQxOwogICAgdm9pZCAqX3Jlc2VydmVkMjsKICAgIE5TU3RyaW5nICpfbmFt
ZTsKICAgIE5TRW50aXR5TWFwcGluZ1R5cGUgX21hcHBpbmdUeXBlOwogICAgTlNTdHJpbmcgKl9z
b3VyY2VFbnRpdHlOYW1lOwogICAgTlNEYXRhICpfc291cmNlRW50aXR5VmVyc2lvbkhhc2g7CiAg
ICBOU1N0cmluZyAqX2Rlc3RpbmF0aW9uRW50aXR5TmFtZTsKICAgIE5TRGF0YSAqX2Rlc3RpbmF0
aW9uRW50aXR5VmVyc2lvbkhhc2g7CiAgICBOU0V4cHJlc3Npb24gKl9zb3VyY2VFeHByZXNzaW9u
OwogICAgTlNEaWN0aW9uYXJ5ICpfdXNlckluZm87CiAgICBOU1N0cmluZyAqX2VudGl0eU1pZ3Jh
dGlvblBvbGljeUNsYXNzTmFtZTsKICAgIE5TTXV0YWJsZUFycmF5ICpfYXR0cmlidXRlTWFwcGlu
Z3M7CiAgICBOU011dGFibGVBcnJheSAqX3JlbGF0aW9uc2hpcE1hcHBpbmdzOwoKICAgIHN0cnVj
dCBfX2VudGl0eU1hcHBpbmdGbGFncyB7CiAgICAgICAgdW5zaWduZWQgaW50IF9pc0luVXNlOjE7
CiAgICAgICAgdW5zaWduZWQgaW50IF9yZXNlcnZlZEVudGl0eU1hcHBpbmc6MzE7CiAgICB9IF9l
bnRpdHlNYXBwaW5nRmxhZ3M7Cgp9CgoKCi0gKE5TU3RyaW5nICopbmFtZTsKLSAodm9pZClzZXRO
YW1lOihOU1N0cmluZyAqKW5hbWU7CgoKCgotIChOU0VudGl0eU1hcHBpbmdUeXBlKW1hcHBpbmdU
eXBlOwotICh2b2lkKXNldE1hcHBpbmdUeXBlOihOU0VudGl0eU1hcHBpbmdUeXBlKXR5cGU7CgoK
CgotIChOU1N0cmluZyAqKXNvdXJjZUVudGl0eU5hbWU7Ci0gKHZvaWQpc2V0U291cmNlRW50aXR5
TmFtZTooTlNTdHJpbmcgKiluYW1lOwoKCgoKLSAoTlNEYXRhICopc291cmNlRW50aXR5VmVyc2lv
bkhhc2g7Ci0gKHZvaWQpc2V0U291cmNlRW50aXR5VmVyc2lvbkhhc2g6KE5TRGF0YSAqKXZoYXNo
OwoKCgoKLSAoTlNTdHJpbmcgKilkZXN0aW5hdGlvbkVudGl0eU5hbWU7Ci0gKHZvaWQpc2V0RGVz
dGluYXRpb25FbnRpdHlOYW1lOihOU1N0cmluZyAqKW5hbWU7CgoKCgotIChOU0RhdGEgKilkZXN0
aW5hdGlvbkVudGl0eVZlcnNpb25IYXNoOwotICh2b2lkKXNldERlc3RpbmF0aW9uRW50aXR5VmVy
c2lvbkhhc2g6KE5TRGF0YSAqKXZoYXNoOwoKCgoKLSAoTlNBcnJheSAqKWF0dHJpYnV0ZU1hcHBp
bmdzOwotICh2b2lkKXNldEF0dHJpYnV0ZU1hcHBpbmdzOihOU0FycmF5ICopbWFwcGluZ3M7CgoK
CgotIChOU0FycmF5ICopcmVsYXRpb25zaGlwTWFwcGluZ3M7Ci0gKHZvaWQpc2V0UmVsYXRpb25z
aGlwTWFwcGluZ3M6KE5TQXJyYXkgKiltYXBwaW5nczsKCgoKCi0gKE5TRXhwcmVzc2lvbiAqKXNv
dXJjZUV4cHJlc3Npb247Ci0gKHZvaWQpc2V0U291cmNlRXhwcmVzc2lvbjooTlNFeHByZXNzaW9u
ICopc291cmNlOwoKCgoKLSAoTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0gKHZvaWQpc2V0VXNl
ckluZm86KE5TRGljdGlvbmFyeSAqKWRpY3Q7CgoKCgotIChOU1N0cmluZyAqKWVudGl0eU1pZ3Jh
dGlvblBvbGljeUNsYXNzTmFtZTsKLSAodm9pZClzZXRFbnRpdHlNaWdyYXRpb25Qb2xpY3lDbGFz
c05hbWU6KE5TU3RyaW5nICopbmFtZTsKCkBlbmQKIyAzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZURhdGEuaCIgMiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNQcm9w
ZXJ0eU1hcHBpbmcuaCIgMSAzCiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURh
dGEuZnJhbWV3b3JrL0hlYWRlcnMvTlNQcm9wZXJ0eU1hcHBpbmcuaCIgMwpAY2xhc3MgTlNFeHBy
ZXNzaW9uOwoKCgpAaW50ZXJmYWNlIE5TUHJvcGVydHlNYXBwaW5nIDogTlNPYmplY3QgewogICAg
QHByaXZhdGUKICAgIHZvaWQgKl9yZXNlcnZlZDsKICAgIHZvaWQgKl9yZXNlcnZlZDE7CiAgICBO
U0FycmF5ICpfcHJvcGVydHlUcmFuc2Zvcm1zOwogICAgTlNTdHJpbmcgKl9uYW1lOwogICAgTlNF
eHByZXNzaW9uICpfdmFsdWVFeHByZXNzaW9uOwogICAgTlNEaWN0aW9uYXJ5ICpfdXNlckluZm87
CiAgICBzdHJ1Y3QgX19wcm9wZXJ0eU1hcHBpbmdGbGFncyB7CiAgICAgICAgdW5zaWduZWQgaW50
IF9pc0luVXNlOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9yZXNlcnZlZFByb3BlcnR5TWFwcGlu
ZzozMTsKICAgIH0gX3Byb3BlcnR5TWFwcGluZ0ZsYWdzOwoKfQoKCgotIChOU1N0cmluZyAqKW5h
bWU7Ci0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lOwoKCgoKLSAoTlNFeHByZXNzaW9u
ICopdmFsdWVFeHByZXNzaW9uOwotICh2b2lkKXNldFZhbHVlRXhwcmVzc2lvbjooTlNFeHByZXNz
aW9uICopZXhwcmVzc2lvbjsKCgoKCi0gKE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwotICh2b2lk
KXNldFVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKCkBlbmQKIyAzNiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZURhdGEu
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3Jr
L0hlYWRlcnMvTlNNaWdyYXRpb25NYW5hZ2VyLmgiIDEgMwojIDE2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvSGVhZGVycy9OU01pZ3JhdGlvbk1hbmFnZXIu
aCIgMwpAY2xhc3MgTlNFbnRpdHlEZXNjcmlwdGlvbjsKQGNsYXNzIE5TRW50aXR5TWFwcGluZzsK
QGNsYXNzIE5TTWFuYWdlZE9iamVjdENvbnRleHQ7CkBjbGFzcyBOU01hbmFnZWRPYmplY3RNb2Rl
bDsKQGNsYXNzIE5TTWFwcGluZ01vZGVsOwpAY2xhc3MgTlNNaWdyYXRpb25Db250ZXh0OwoKQGlu
dGVyZmFjZSBOU01pZ3JhdGlvbk1hbmFnZXIgOiBOU09iamVjdCB7CiAgICBAcHJpdmF0ZQogICAg
TlNNYW5hZ2VkT2JqZWN0TW9kZWwgKl9zb3VyY2VNb2RlbDsKICAgIE5TRGljdGlvbmFyeSAqX3Nv
dXJjZUVudGl0aWVzQnlWZXJzaW9uSGFzaDsKICAgIE5TTWFuYWdlZE9iamVjdE1vZGVsICpfZGVz
dGluYXRpb25Nb2RlbDsKICAgIE5TRGljdGlvbmFyeSAqX2Rlc3RpbmF0aW9uRW50aXRpZXNCeVZl
cnNpb25IYXNoOwogICAgTlNNYXBwaW5nTW9kZWwgKl9tYXBwaW5nTW9kZWw7CiAgICBOU01hbmFn
ZWRPYmplY3RDb250ZXh0ICpfc291cmNlTWFuYWdlZE9iamVjdENvbnRleHQ7CiAgICBOU01hbmFn
ZWRPYmplY3RDb250ZXh0ICpfZGVzdGluYXRpb25NYW5hZ2VkT2JqZWN0Q29udGV4dDsKICAgIE5T
TWlncmF0aW9uQ29udGV4dCAqX21pZ3JhdGlvbkNvbnRleHQ7CiAgICBOU0RpY3Rpb25hcnkgKl91
c2VySW5mbzsKICAgIHN0cnVjdCBfbWlncmF0aW9uTWFuYWdlckZsYWdzIHsKICAgICAgICB1bnNp
Z25lZCBpbnQgX21pZ3JhdGlvbldhc0NhbmNlbGxlZDoxOwogICAgICAgIHVuc2lnbmVkIGludCBf
cmVzZXJ2ZWRNaWdyYXRpb25NYW5hZ2VyOjMxOwogICAgfSBfbWlncmF0aW9uTWFuYWdlckZsYWdz
OwogTlNFcnJvciAqX21pZ3JhdGlvbkNhbmNlbGxhdGlvbkVycm9yOwogaWQgX3Jlc2VydmVkMTsK
IGlkIF9yZXNlcnZlZDI7CiBpZCBfcmVzZXJ2ZWQzOwogaWQgX3Jlc2VydmVkNDsKfQoKCgoKLSAo
aWQpaW5pdFdpdGhTb3VyY2VNb2RlbDooTlNNYW5hZ2VkT2JqZWN0TW9kZWwgKilzb3VyY2VNb2Rl
bCBkZXN0aW5hdGlvbk1vZGVsOihOU01hbmFnZWRPYmplY3RNb2RlbCAqKWRlc3RpbmF0aW9uTW9k
ZWw7CgoKCgotIChCT09MKW1pZ3JhdGVTdG9yZUZyb21VUkw6KE5TVVJMICopc291cmNlVVJMIHR5
cGU6KE5TU3RyaW5nICopc1N0b3JlVHlwZSBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilzT3B0aW9u
cyB3aXRoTWFwcGluZ01vZGVsOihOU01hcHBpbmdNb2RlbCAqKW1hcHBpbmdzIHRvRGVzdGluYXRp
b25VUkw6KE5TVVJMICopZFVSTCBkZXN0aW5hdGlvblR5cGU6KE5TU3RyaW5nICopZFN0b3JlVHlw
ZSBkZXN0aW5hdGlvbk9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKWRPcHRpb25zIGVycm9yOihOU0Vy
cm9yICoqKWVycm9yOwoKCgoKLSAodm9pZClyZXNldDsKCgoKCi0gKE5TTWFwcGluZ01vZGVsICop
bWFwcGluZ01vZGVsOwotIChOU01hbmFnZWRPYmplY3RNb2RlbCAqKXNvdXJjZU1vZGVsOwotIChO
U01hbmFnZWRPYmplY3RNb2RlbCAqKWRlc3RpbmF0aW9uTW9kZWw7CgoKCgotIChOU01hbmFnZWRP
YmplY3RDb250ZXh0ICopc291cmNlQ29udGV4dDsKLSAoTlNNYW5hZ2VkT2JqZWN0Q29udGV4dCAq
KWRlc3RpbmF0aW9uQ29udGV4dDsKCgoKCi0gKE5TRW50aXR5RGVzY3JpcHRpb24gKilzb3VyY2VF
bnRpdHlGb3JFbnRpdHlNYXBwaW5nOihOU0VudGl0eU1hcHBpbmcgKiltRW50aXR5OwotIChOU0Vu
dGl0eURlc2NyaXB0aW9uICopZGVzdGluYXRpb25FbnRpdHlGb3JFbnRpdHlNYXBwaW5nOihOU0Vu
dGl0eU1hcHBpbmcgKiltRW50aXR5OwoKCgoKCi0gKHZvaWQpYXNzb2NpYXRlU291cmNlSW5zdGFu
Y2U6KE5TTWFuYWdlZE9iamVjdCAqKXNvdXJjZUluc3RhbmNlIHdpdGhEZXN0aW5hdGlvbkluc3Rh
bmNlOihOU01hbmFnZWRPYmplY3QgKilkZXN0aW5hdGlvbkluc3RhbmNlIGZvckVudGl0eU1hcHBp
bmc6KE5TRW50aXR5TWFwcGluZyAqKWVudGl0eU1hcHBpbmc7CgoKCgotIChOU0FycmF5ICopZGVz
dGluYXRpb25JbnN0YW5jZXNGb3JFbnRpdHlNYXBwaW5nTmFtZWQ6KE5TU3RyaW5nICopbWFwcGlu
Z05hbWUgc291cmNlSW5zdGFuY2VzOihOU0FycmF5Kilzb3VyY2VJbnN0YW5jZXM7CgoKCi0gKE5T
QXJyYXkgKilzb3VyY2VJbnN0YW5jZXNGb3JFbnRpdHlNYXBwaW5nTmFtZWQ6KE5TU3RyaW5nICop
bWFwcGluZ05hbWUgZGVzdGluYXRpb25JbnN0YW5jZXM6KE5TQXJyYXkgKilkZXN0aW5hdGlvbklu
c3RhbmNlczsKCgoKLSAoTlNFbnRpdHlNYXBwaW5nICopY3VycmVudEVudGl0eU1hcHBpbmc7CgoK
Ci0gKGZsb2F0KW1pZ3JhdGlvblByb2dyZXNzOwoKCgoKLSAoTlNEaWN0aW9uYXJ5ICopdXNlcklu
Zm87Ci0gKHZvaWQpc2V0VXNlckluZm86KE5TRGljdGlvbmFyeSAqKWRpY3Q7CgoKLSAodm9pZClj
YW5jZWxNaWdyYXRpb25XaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcjsKCkBlbmQKIyAzNiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZURh
dGEuaCIgMiAzCiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29y
ay9IZWFkZXJzL0NvY29hLmgiIDIgMwojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViV2luZG93QW5pbWF0aW9uLmgiIDIKCkBpbnRlcmZhY2UgV2ViV2luZG93U2Nh
bGVBbmltYXRpb24gOiBOU0FuaW1hdGlvbiB7CkBwcml2YXRlCiAgICBOU1JlY3QgX2luaXRpYWxG
cmFtZSwgX2ZpbmFsRnJhbWUsIF9yZWFsRnJhbWU7CiAgICBOU1dpbmRvdyAqX3dpbmRvdzsKICAg
IE5TQW5pbWF0aW9uICpfc3ViQW5pbWF0aW9uOwogICAgTlNUaW1lSW50ZXJ2YWwgX2hpbnRlZER1
cmF0aW9uOwp9Ci0gKGlkKWluaXRXaXRoSGludGVkRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1
cmF0aW9uIHdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgaW5pdGFsRnJhbWU6KE5TUmVjdClpbml0
aWFsRnJhbWUgZmluYWxGcmFtZTooTlNSZWN0KWZpbmFsRnJhbWU7CgotICh2b2lkKXNldFN1YkFu
aW1hdGlvbjooTlNBbmltYXRpb24gKilhbmltYXRpb247CgotIChOU1JlY3QpY3VycmVudEZyYW1l
OwoKCi0gKHZvaWQpc2V0V2luZG93OihOU1dpbmRvdyAqKXdpbmRvdzsKQGVuZAoKCkBpbnRlcmZh
Y2UgV2ViV2luZG93RmFkZUFuaW1hdGlvbiA6IE5TQW5pbWF0aW9uIHsKQHByaXZhdGUKICAgIENH
RmxvYXQgX2luaXRpYWxBbHBoYSwgX2ZpbmFsQWxwaGE7CiAgICBOU1dpbmRvdyAqX3dpbmRvdzsK
ICAgIEJPT0wgX2lzU3RvcHBlZDsKCn0KLSAoaWQpaW5pdFdpdGhEdXJhdGlvbjooTlNUaW1lSW50
ZXJ2YWwpZHVyYXRpb24gd2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyBpbml0aWFsQWxwaGE6KENH
RmxvYXQpaW5pdGlhbEFscGhhIGZpbmFsQWxwaGE6KENHRmxvYXQpZmluYWxBbHBoYTsKCi0gKENH
RmxvYXQpY3VycmVudEFscGhhOwoKCi0gKHZvaWQpc2V0V2luZG93OihOU1dpbmRvdyAqKXdpbmRv
dzsKQGVuZAojIDM0ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSIgMgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvSGVhZGVycy9DYXJib24uaCIgMSAzCiMgMTcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvSGVhZGVycy9DYXJib24uaCIgMwoj
ZGVmaW5lIF9fQ0FSQk9OX18gCiMgMjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvSGVhZGVycy9DYXJib24uaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElUb29sYm94LmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJ
VG9vbGJveC5oIiAzCiNkZWZpbmUgX19ISVRPT0xCT1hfXyAKCgoKCgoKCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISU9iamVjdC5oIiAzCiNkZWZpbmUgX19ISU9CSkVDVF9fIAojIDI4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0hJT2JqZWN0LmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCiNkZWZpbmUgX19DQVJCT05FVkVOVFNDT1JFX18g
CgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUdlb21ldHJ5LmgiIDEgMwoj
IDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJR2VvbWV0cnkuaCIgMwojZGVmaW5lIF9f
SElHRU9NRVRSWV9fIAojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJR2VvbWV0cnku
aCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA1MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISUdlb21ldHJ5LmgiIDMKdHlwZWRlZiBDR1BvaW50IEhJUG9pbnQ7
CiMgNjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElHZW9tZXRyeS5oIiAzCnR5cGVkZWYg
Q0dTaXplIEhJU2l6ZTsKIyA3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUdlb21ldHJ5
LmgiIDMKdHlwZWRlZiBDR1JlY3QgSElSZWN0OwojIDEwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISUdlb21ldHJ5LmgiIDMKdHlwZWRlZiBVSW50MzIgSElDb29yZGluYXRlU3BhY2U7CmVu
dW0gewojIDExNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUdlb21ldHJ5LmgiIDMKICBr
SElDb29yZFNwYWNlNzJEUElHbG9iYWwgPSAxLAoKCgoKCgogIGtISUNvb3JkU3BhY2VTY3JlZW5Q
aXhlbCA9IDIsCgoKCgoKCgogIGtISUNvb3JkU3BhY2VXaW5kb3cgPSAzLAojIDE0MSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9ISUdlb21ldHJ5LmgiIDMKICBrSElDb29yZFNwYWNlVmlldyA9
IDQKfTsKIyAxOTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElHZW9tZXRyeS5oIiAzCmV4
dGVybiB2b2lkCkhJUG9pbnRDb252ZXJ0KAogIEhJUG9pbnQgKiBpb1BvaW50LAogIEhJQ29vcmRp
bmF0ZVNwYWNlIGluU291cmNlU3BhY2UsCiAgdm9pZCAqIGluU291cmNlT2JqZWN0LAogIEhJQ29v
cmRpbmF0ZVNwYWNlIGluRGVzdGluYXRpb25TcGFjZSwKICB2b2lkICogaW5EZXN0aW5hdGlvbk9i
amVjdCkgOwojIDI0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUdlb21ldHJ5LmgiIDMK
ZXh0ZXJuIHZvaWQKSElSZWN0Q29udmVydCgKICBISVJlY3QgKiBpb1JlY3QsCiAgSElDb29yZGlu
YXRlU3BhY2UgaW5Tb3VyY2VTcGFjZSwKICB2b2lkICogaW5Tb3VyY2VPYmplY3QsCiAgSElDb29y
ZGluYXRlU3BhY2UgaW5EZXN0aW5hdGlvblNwYWNlLAogIHZvaWQgKiBpbkRlc3RpbmF0aW9uT2Jq
ZWN0KSA7CiMgMzAzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJR2VvbWV0cnkuaCIgMwpl
eHRlcm4gdm9pZApISVNpemVDb252ZXJ0KAogIEhJU2l6ZSAqIGlvU2l6ZSwKICBISUNvb3JkaW5h
dGVTcGFjZSBpblNvdXJjZVNwYWNlLAogIHZvaWQgKiBpblNvdXJjZU9iamVjdCwKICBISUNvb3Jk
aW5hdGVTcGFjZSBpbkRlc3RpbmF0aW9uU3BhY2UsCiAgdm9pZCAqIGluRGVzdGluYXRpb25PYmpl
Y3QpIDsKCgoKCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMiAzCiMgMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhw
dXNoLCAyKQoKCgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlRXZlbnRSZWYqIEV2ZW50UmVmOwojIDU1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwplbnVtIHsK
CgoKCgogIGV2ZW50QWxyZWFkeVBvc3RlZEVyciA9IC05ODYwLAoKCgoKCiAgZXZlbnRUYXJnZXRC
dXN5RXJyID0gLTk4NjEsCgoKCgogIGV2ZW50Q2xhc3NJbnZhbGlkRXJyID0gLTk4NjIsCgoKCgog
IGV2ZW50Q2xhc3NJbmNvcnJlY3RFcnIgPSAtOTg2NCwKIyA5MiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKICBldmVudERlZmVyQWNjZXNzaWJpbGl0eUV2
ZW50RXJyID0gLTk4NjUsCgoKCgoKCiAgZXZlbnRIYW5kbGVyQWxyZWFkeUluc3RhbGxlZEVyciA9
IC05ODY2LAoKCgoKICBldmVudEludGVybmFsRXJyID0gLTk4NjgsCgoKCgogIGV2ZW50S2luZElu
Y29ycmVjdEVyciA9IC05ODY5LAoKCgoKICBldmVudFBhcmFtZXRlck5vdEZvdW5kRXJyID0gLTk4
NzAsCiMgMTI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIg
MwogIGV2ZW50Tm90SGFuZGxlZEVyciA9IC05ODc0LAoKCgoKCiAgZXZlbnRMb29wVGltZWRPdXRF
cnIgPSAtOTg3NSwKCgoKCgogIGV2ZW50TG9vcFF1aXRFcnIgPSAtOTg3NiwKCgoKCgogIGV2ZW50
Tm90SW5RdWV1ZUVyciA9IC05ODc3LAojIDE1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9D
YXJib25FdmVudHNDb3JlLmgiIDMKICBldmVudEhvdEtleUV4aXN0c0VyciA9IC05ODc4LAoKCgoK
ICBldmVudEhvdEtleUludmFsaWRFcnIgPSAtOTg3OSwKIyAxNzAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCiAgZXZlbnRQYXNzVG9OZXh0VGFyZ2V0RXJy
ID0gLTk4ODAKfTsKCgoKCgoKCmVudW0gewogIGtFdmVudFBhcmFtRGlyZWN0T2JqZWN0ID0gJy0t
LS0nLAogIGtFdmVudFBhcmFtRHJhZ1JlZiA9ICdkcmFnJwp9OwojIDIyMiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKZW51bSB7CiAgdHlwZURyYWdSZWYg
PSAnZHJhZycsCiAgdHlwZUNURm9udFJlZiA9ICdjdGZyJywKICB0eXBlQ1RHbHlwaEluZm9SZWYg
PSAnY3RnaScKfTsKIyAyNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRz
Q29yZS5oIiAzCnR5cGVkZWYgU0ludDE2IEV2ZW50UHJpb3JpdHk7CmVudW0gewoKCgoKCiAga0V2
ZW50UHJpb3JpdHlMb3cgPSAwLAoKCgoKICBrRXZlbnRQcmlvcml0eVN0YW5kYXJkID0gMSwKCgoK
CiAga0V2ZW50UHJpb3JpdHlIaWdoID0gMgp9OwoKZW51bSB7CiAga0V2ZW50TGVhdmVJblF1ZXVl
ID0gZmFsc2UsCiAga0V2ZW50UmVtb3ZlRnJvbVF1ZXVlID0gdHJ1ZQp9OwoKCgoKCgp0eXBlZGVm
IGRvdWJsZSBFdmVudFRpbWU7CnR5cGVkZWYgRXZlbnRUaW1lIEV2ZW50VGltZW91dDsKdHlwZWRl
ZiBFdmVudFRpbWUgRXZlbnRUaW1lckludGVydmFsOwojZGVmaW5lIGtFdmVudER1cmF0aW9uU2Vj
b25kICgoRXZlbnRUaW1lKTEuMCkKI2RlZmluZSBrRXZlbnREdXJhdGlvbk1pbGxpc2Vjb25kICgo
RXZlbnRUaW1lKShrRXZlbnREdXJhdGlvblNlY29uZC8xMDAwKSkKI2RlZmluZSBrRXZlbnREdXJh
dGlvbk1pY3Jvc2Vjb25kICgoRXZlbnRUaW1lKShrRXZlbnREdXJhdGlvblNlY29uZC8xMDAwMDAw
KSkKI2RlZmluZSBrRXZlbnREdXJhdGlvbk5hbm9zZWNvbmQgKChFdmVudFRpbWUpKGtFdmVudER1
cmF0aW9uU2Vjb25kLzEwMDAwMDAwMDApKQojZGVmaW5lIGtFdmVudER1cmF0aW9uTWludXRlICgo
RXZlbnRUaW1lKShrRXZlbnREdXJhdGlvblNlY29uZCo2MCkpCiNkZWZpbmUga0V2ZW50RHVyYXRp
b25Ib3VyICgoRXZlbnRUaW1lKShrRXZlbnREdXJhdGlvbk1pbnV0ZSo2MCkpCiNkZWZpbmUga0V2
ZW50RHVyYXRpb25EYXkgKChFdmVudFRpbWUpKGtFdmVudER1cmF0aW9uSG91cioyNCkpCiNkZWZp
bmUga0V2ZW50RHVyYXRpb25Ob1dhaXQgKChFdmVudFRpbWUpMC4wKQojZGVmaW5lIGtFdmVudER1
cmF0aW9uRm9yZXZlciAoKEV2ZW50VGltZSkoLTEuMCkpCgoKCiAgICBpbmxpbmUgRXZlbnRUaW1l
IFRpY2tzVG9FdmVudFRpbWUoIFVJbnQzMiB0ICkgeyByZXR1cm4gKCAodCkgLyA2MC4wICk7IH0K
ICAgIGlubGluZSBVSW50MzIgRXZlbnRUaW1lVG9UaWNrcyggRXZlbnRUaW1lIHQgKSB7IHJldHVy
biAoVUludDMyKSggKCh0KSAqIDYwKSArIDAuNSApOyB9CiMgMzEzICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpzdHJ1Y3QgRXZlbnRUeXBlU3BlYyB7CiAg
T1NUeXBlIGV2ZW50Q2xhc3M7CiAgVUludDMyIGV2ZW50S2luZDsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
RXZlbnRUeXBlU3BlYyBFdmVudFR5cGVTcGVjOwoKI2RlZmluZSBHZXRFdmVudFR5cGVDb3VudCh0
KSAoc2l6ZW9mKCAodCkgKSAvIHNpemVvZiggRXZlbnRUeXBlU3BlYyApKQoKdHlwZWRlZiBPU1R5
cGUgRXZlbnRQYXJhbU5hbWU7CnR5cGVkZWYgT1NUeXBlIEV2ZW50UGFyYW1UeXBlOwojIDM0MyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgT3BhcXVlRXZlbnRMb29wUmVmKiBFdmVudExvb3BSZWY7CiMgMzYzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gRXZlbnRMb29wUmVm
CkdldEN1cnJlbnRFdmVudExvb3Aodm9pZCkgOwojIDM4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIEV2ZW50TG9vcFJlZgpHZXRNYWluRXZl
bnRMb29wKHZvaWQpIDsKIyA0MTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZl
bnRzQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpSdW5DdXJyZW50RXZlbnRMb29wKEV2ZW50VGlt
ZW91dCBpblRpbWVvdXQpIDsKIyA0NDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpRdWl0RXZlbnRMb29wKEV2ZW50TG9vcFJl
ZiBpbkV2ZW50TG9vcCkgOwojIDQ4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25F
dmVudHNDb3JlLmgiIDMKZXh0ZXJuIENGVHlwZVJlZgpHZXRDRlJ1bkxvb3BGcm9tRXZlbnRMb29w
KEV2ZW50TG9vcFJlZiBpbkV2ZW50TG9vcCkgOwojIDUzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClJlY2VpdmVOZXh0RXZl
bnQoCiAgSXRlbUNvdW50IGluTnVtVHlwZXMsCiAgY29uc3QgRXZlbnRUeXBlU3BlYyAqIGluTGlz
dCwKICBFdmVudFRpbWVvdXQgaW5UaW1lb3V0LAogIEJvb2xlYW4gaW5QdWxsRXZlbnQsCiAgRXZl
bnRSZWYgKiBvdXRFdmVudCkgOwojIDU1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJi
b25FdmVudHNDb3JlLmgiIDMKdHlwZWRlZiBVSW50MzIgRXZlbnRBdHRyaWJ1dGVzOwplbnVtIHsK
CgoKCiAga0V2ZW50QXR0cmlidXRlTm9uZSA9IDAsCgoKCgoKCiAga0V2ZW50QXR0cmlidXRlVXNl
ckV2ZW50ID0gMSA8PCAwLAojIDU3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25F
dmVudHNDb3JlLmgiIDMKICBrRXZlbnRBdHRyaWJ1dGVNb25pdG9yZWQgPSAxIDw8IDMKfTsKIyA2
MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCiNkZWZp
bmUgTWFjQ3JlYXRlRXZlbnQgQ3JlYXRlRXZlbnQKCmV4dGVybiBPU1N0YXR1cwpDcmVhdGVFdmVu
dCgKICBDRkFsbG9jYXRvclJlZiBpbkFsbG9jYXRvciwKICBPU1R5cGUgaW5DbGFzc0lELAogIFVJ
bnQzMiBpbktpbmQsCiAgRXZlbnRUaW1lIGluV2hlbiwKICBFdmVudEF0dHJpYnV0ZXMgaW5BdHRy
aWJ1dGVzLAogIEV2ZW50UmVmICogb3V0RXZlbnQpIDsKIyA2NTEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4dGVybiBFdmVudFJlZgpDb3B5RXZlbnQo
RXZlbnRSZWYgaW5PdGhlcikgOwojIDY5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJi
b25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIEV2ZW50UmVmCkNvcHlFdmVudEFzKAogIENGQWxsb2Nh
dG9yUmVmIGluQWxsb2NhdG9yLAogIEV2ZW50UmVmIGluT3RoZXIsCiAgT1NUeXBlIGluRXZlbnRD
bGFzcywKICBVSW50MzIgaW5FdmVudEtpbmQpIDsKIyA3MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4dGVybiBFdmVudFJlZgpSZXRhaW5FdmVudChF
dmVudFJlZiBpbkV2ZW50KSA7CiMgNzYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJv
bkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gSXRlbUNvdW50CkdldEV2ZW50UmV0YWluQ291bnQoRXZl
bnRSZWYgaW5FdmVudCkgOwojIDc4OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25F
dmVudHNDb3JlLmgiIDMKZXh0ZXJuIHZvaWQKUmVsZWFzZUV2ZW50KEV2ZW50UmVmIGluRXZlbnQp
IDsKIyA4MzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAz
CmV4dGVybiBPU1N0YXR1cwpTZXRFdmVudFBhcmFtZXRlcigKICBFdmVudFJlZiBpbkV2ZW50LAog
IEV2ZW50UGFyYW1OYW1lIGluTmFtZSwKICBFdmVudFBhcmFtVHlwZSBpblR5cGUsCiAgQnl0ZUNv
dW50IGluU2l6ZSwKICBjb25zdCB2b2lkICogaW5EYXRhUHRyKSA7CiMgODk0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKR2V0
RXZlbnRQYXJhbWV0ZXIoCiAgRXZlbnRSZWYgaW5FdmVudCwKICBFdmVudFBhcmFtTmFtZSBpbk5h
bWUsCiAgRXZlbnRQYXJhbVR5cGUgaW5EZXNpcmVkVHlwZSwKICBFdmVudFBhcmFtVHlwZSAqIG91
dEFjdHVhbFR5cGUsCiAgQnl0ZUNvdW50IGluQnVmZmVyU2l6ZSwKICBCeXRlQ291bnQgKiBvdXRB
Y3R1YWxTaXplLAogIHZvaWQgKiBvdXREYXRhKSA7CiMgOTMxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKUmVtb3ZlRXZlbnRQ
YXJhbWV0ZXIoCiAgRXZlbnRSZWYgaW5FdmVudCwKICBFdmVudFBhcmFtTmFtZSBpbk5hbWUpIDsK
IyA5NjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4
dGVybiBPU1R5cGUKR2V0RXZlbnRDbGFzcyhFdmVudFJlZiBpbkV2ZW50KSA7CiMgOTkzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gVUludDMy
CkdldEV2ZW50S2luZChFdmVudFJlZiBpbkV2ZW50KSA7CiMgMTAyMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIEV2ZW50VGltZQpHZXRFdmVu
dFRpbWUoRXZlbnRSZWYgaW5FdmVudCkgOwojIDEwNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpTZXRFdmVudFRpbWUoCiAg
RXZlbnRSZWYgaW5FdmVudCwKICBFdmVudFRpbWUgaW5UaW1lKSA7CiMgMTEwNiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkNy
ZWF0ZUV2ZW50V2l0aENHRXZlbnQoCiAgQ0ZBbGxvY2F0b3JSZWYgaW5BbGxvY2F0b3IsCiAgQ0dF
dmVudFJlZiBpbkV2ZW50LAogIEV2ZW50QXR0cmlidXRlcyBpbkF0dHJpYnV0ZXMsCiAgRXZlbnRS
ZWYgKiBvdXRFdmVudCkgOwojIDExNDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzQ29yZS5oIiAzCmV4dGVybiBDR0V2ZW50UmVmCkNvcHlFdmVudENHRXZlbnQoRXZlbnRS
ZWYgaW5FdmVudCkgOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVFdmVudFF1ZXVlUmVmKiBF
dmVudFF1ZXVlUmVmOwojIDExNzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZl
bnRzQ29yZS5oIiAzCmV4dGVybiBFdmVudFF1ZXVlUmVmCkdldEN1cnJlbnRFdmVudFF1ZXVlKHZv
aWQpIDsKIyAxMjA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUu
aCIgMwpleHRlcm4gRXZlbnRRdWV1ZVJlZgpHZXRNYWluRXZlbnRRdWV1ZSh2b2lkKSA7CiMgMTIy
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKdHlwZWRl
ZiBCb29sZWFuICggKiBFdmVudENvbXBhcmF0b3JQcm9jUHRyKShFdmVudFJlZiBpbkV2ZW50LCB2
b2lkICppbkNvbXBhcmVEYXRhKTsKdHlwZWRlZiBFdmVudENvbXBhcmF0b3JQcm9jUHRyIEV2ZW50
Q29tcGFyYXRvclVQUDsKIyAxMjM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2
ZW50c0NvcmUuaCIgMwpleHRlcm4gRXZlbnRDb21wYXJhdG9yVVBQCk5ld0V2ZW50Q29tcGFyYXRv
clVQUChFdmVudENvbXBhcmF0b3JQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMTI0OCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIHZvaWQKRGlz
cG9zZUV2ZW50Q29tcGFyYXRvclVQUChFdmVudENvbXBhcmF0b3JVUFAgdXNlclVQUCkgOwojIDEy
NTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4dGVy
biBCb29sZWFuCkludm9rZUV2ZW50Q29tcGFyYXRvclVQUCgKICBFdmVudFJlZiBpbkV2ZW50LAog
IHZvaWQgKiBpbkNvbXBhcmVEYXRhLAogIEV2ZW50Q29tcGFyYXRvclVQUCB1c2VyVVBQKSA7CgoK
CiAgICBpbmxpbmUgRXZlbnRDb21wYXJhdG9yVVBQIE5ld0V2ZW50Q29tcGFyYXRvclVQUChFdmVu
dENvbXBhcmF0b3JQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQog
ICAgaW5saW5lIHZvaWQgRGlzcG9zZUV2ZW50Q29tcGFyYXRvclVQUChFdmVudENvbXBhcmF0b3JV
UFApIHsgfQogICAgaW5saW5lIEJvb2xlYW4gSW52b2tlRXZlbnRDb21wYXJhdG9yVVBQKEV2ZW50
UmVmIGluRXZlbnQsIHZvaWQgKiBpbkNvbXBhcmVEYXRhLCBFdmVudENvbXBhcmF0b3JVUFAgdXNl
clVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShpbkV2ZW50LCBpbkNvbXBhcmVEYXRhKTsgfQojIDEz
MzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4dGVy
biBPU1N0YXR1cwpQb3N0RXZlbnRUb1F1ZXVlKAogIEV2ZW50UXVldWVSZWYgaW5RdWV1ZSwKICBF
dmVudFJlZiBpbkV2ZW50LAogIEV2ZW50UHJpb3JpdHkgaW5Qcmlvcml0eSkgOwojIDEzNzYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4dGVybiBPU1N0
YXR1cwpGbHVzaEV2ZW50c01hdGNoaW5nTGlzdEZyb21RdWV1ZSgKICBFdmVudFF1ZXVlUmVmIGlu
UXVldWUsCiAgSXRlbUNvdW50IGluTnVtVHlwZXMsCiAgY29uc3QgRXZlbnRUeXBlU3BlYyAqIGlu
TGlzdCkgOwojIDE0MTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29y
ZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpGbHVzaFNwZWNpZmljRXZlbnRzRnJvbVF1ZXVlKAogIEV2
ZW50UXVldWVSZWYgaW5RdWV1ZSwKICBFdmVudENvbXBhcmF0b3JVUFAgaW5Db21wYXJhdG9yLAog
IHZvaWQgKiBpbkNvbXBhcmVEYXRhKSA7CiMgMTQ1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9DYXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkZsdXNoRXZlbnRRdWV1ZShF
dmVudFF1ZXVlUmVmIGluUXVldWUpIDsKIyAxNDg4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gRXZlbnRSZWYKRmluZFNwZWNpZmljRXZlbnRJ
blF1ZXVlKAogIEV2ZW50UXVldWVSZWYgaW5RdWV1ZSwKICBFdmVudENvbXBhcmF0b3JVUFAgaW5D
b21wYXJhdG9yLAogIHZvaWQgKiBpbkNvbXBhcmVEYXRhKSA7CiMgMTUxNyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIEl0ZW1Db3VudApHZXRO
dW1FdmVudHNJblF1ZXVlKEV2ZW50UXVldWVSZWYgaW5RdWV1ZSkgOwojIDE1NTAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpS
ZW1vdmVFdmVudEZyb21RdWV1ZSgKICBFdmVudFF1ZXVlUmVmIGluUXVldWUsCiAgRXZlbnRSZWYg
aW5FdmVudCkgOwojIDE1ODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRz
Q29yZS5oIiAzCmV4dGVybiBCb29sZWFuCklzRXZlbnRJblF1ZXVlKAogIEV2ZW50UXVldWVSZWYg
aW5RdWV1ZSwKICBFdmVudFJlZiBpbkV2ZW50KSA7CgoKCgoKZW51bSB7CgoKCgoKICBrRXZlbnRR
dWV1ZU9wdGlvbnNOb25lID0gMAp9OwojIDE2NDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
Q2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4dGVybiBFdmVudFJlZgpBY3F1aXJlRmlyc3RNYXRjaGlu
Z0V2ZW50SW5RdWV1ZSgKICBFdmVudFF1ZXVlUmVmIGluUXVldWUsCiAgSXRlbUNvdW50IGluTnVt
VHlwZXMsCiAgY29uc3QgRXZlbnRUeXBlU3BlYyAqIGluTGlzdCwKICBPcHRpb25CaXRzIGluT3B0
aW9ucykgOwojIDE2ODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29y
ZS5oIiAzCmV4dGVybiBFdmVudFJlZgpHZXRDdXJyZW50RXZlbnQodm9pZCkgOwojIDE3NjcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4dGVybiBVSW50
MzIKR2V0Q3VycmVudEV2ZW50QnV0dG9uU3RhdGUodm9pZCkgOwojIDE4NDggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4dGVybiBVSW50MzIKR2V0Q3Vy
cmVudEV2ZW50S2V5TW9kaWZpZXJzKHZvaWQpIDsKIyAxODkxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gSElQb2ludCAqCkhJR2V0TW91c2VQ
b3NpdGlvbigKICBISUNvb3JkaW5hdGVTcGFjZSBpblNwYWNlLAogIHZvaWQgKiBpbk9iamVjdCwK
ICBISVBvaW50ICogb3V0UG9pbnQpIDsKIyAxOTYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gVUludDMyCkdldEN1cnJlbnRCdXR0b25TdGF0
ZSh2b2lkKSA7CiMgMjAwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHND
b3JlLmgiIDMKZXh0ZXJuIFVJbnQzMgpHZXRDdXJyZW50S2V5TW9kaWZpZXJzKHZvaWQpIDsKIyAy
MDMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRl
cm4gRXZlbnRUaW1lCkdldEN1cnJlbnRFdmVudFRpbWUodm9pZCkgOwojIDIwNjkgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCnR5cGVkZWYgc3RydWN0IF9f
RXZlbnRMb29wVGltZXIqIEV2ZW50TG9vcFRpbWVyUmVmOwojIDIwODUgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCnR5cGVkZWYgdm9pZCAoICogRXZlbnRM
b29wVGltZXJQcm9jUHRyKShFdmVudExvb3BUaW1lclJlZiBpblRpbWVyLCB2b2lkICppblVzZXJE
YXRhKTsKCgoKCgplbnVtIHsKCgoKCgoKICBrRXZlbnRMb29wSWRsZVRpbWVyU3RhcnRlZCA9IDEs
CiMgMjEwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMK
ICBrRXZlbnRMb29wSWRsZVRpbWVySWRsaW5nID0gMiwKCgoKCgogIGtFdmVudExvb3BJZGxlVGlt
ZXJTdG9wcGVkID0gMwp9OwoKdHlwZWRlZiBVSW50MTYgRXZlbnRMb29wSWRsZVRpbWVyTWVzc2Fn
ZTsKIyAyMTM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIg
Mwp0eXBlZGVmIHZvaWQgKCAqIEV2ZW50TG9vcElkbGVUaW1lclByb2NQdHIpKEV2ZW50TG9vcFRp
bWVyUmVmIGluVGltZXIsIEV2ZW50TG9vcElkbGVUaW1lck1lc3NhZ2UgaW5TdGF0ZSwgdm9pZCAq
aW5Vc2VyRGF0YSk7CnR5cGVkZWYgRXZlbnRMb29wVGltZXJQcm9jUHRyIEV2ZW50TG9vcFRpbWVy
VVBQOwp0eXBlZGVmIEV2ZW50TG9vcElkbGVUaW1lclByb2NQdHIgRXZlbnRMb29wSWRsZVRpbWVy
VVBQOwojIDIxNDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5o
IiAzCmV4dGVybiBFdmVudExvb3BUaW1lclVQUApOZXdFdmVudExvb3BUaW1lclVQUChFdmVudExv
b3BUaW1lclByb2NQdHIgdXNlclJvdXRpbmUpIDsKIyAyMTU4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gRXZlbnRMb29wSWRsZVRpbWVyVVBQ
Ck5ld0V2ZW50TG9vcElkbGVUaW1lclVQUChFdmVudExvb3BJZGxlVGltZXJQcm9jUHRyIHVzZXJS
b3V0aW5lKSA7CiMgMjE2OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHND
b3JlLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUV2ZW50TG9vcFRpbWVyVVBQKEV2ZW50TG9vcFRp
bWVyVVBQIHVzZXJVUFApIDsKIyAyMTgwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJv
bkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlRXZlbnRMb29wSWRsZVRpbWVyVVBQ
KEV2ZW50TG9vcElkbGVUaW1lclVQUCB1c2VyVVBQKSA7CiMgMjE5MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlRXZlbnRM
b29wVGltZXJVUFAoCiAgRXZlbnRMb29wVGltZXJSZWYgaW5UaW1lciwKICB2b2lkICogaW5Vc2Vy
RGF0YSwKICBFdmVudExvb3BUaW1lclVQUCB1c2VyVVBQKSA7CiMgMjIwNSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlRXZl
bnRMb29wSWRsZVRpbWVyVVBQKAogIEV2ZW50TG9vcFRpbWVyUmVmIGluVGltZXIsCiAgRXZlbnRM
b29wSWRsZVRpbWVyTWVzc2FnZSBpblN0YXRlLAogIHZvaWQgKiBpblVzZXJEYXRhLAogIEV2ZW50
TG9vcElkbGVUaW1lclVQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgRXZlbnRMb29wVGltZXJV
UFAgTmV3RXZlbnRMb29wVGltZXJVUFAoRXZlbnRMb29wVGltZXJQcm9jUHRyIHVzZXJSb3V0aW5l
KSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIEV2ZW50TG9vcElkbGVUaW1lclVQ
UCBOZXdFdmVudExvb3BJZGxlVGltZXJVUFAoRXZlbnRMb29wSWRsZVRpbWVyUHJvY1B0ciB1c2Vy
Um91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VF
dmVudExvb3BUaW1lclVQUChFdmVudExvb3BUaW1lclVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBE
aXNwb3NlRXZlbnRMb29wSWRsZVRpbWVyVVBQKEV2ZW50TG9vcElkbGVUaW1lclVQUCkgeyB9CiAg
ICBpbmxpbmUgdm9pZCBJbnZva2VFdmVudExvb3BUaW1lclVQUChFdmVudExvb3BUaW1lclJlZiBp
blRpbWVyLCB2b2lkICogaW5Vc2VyRGF0YSwgRXZlbnRMb29wVGltZXJVUFAgdXNlclVQUCkgeyAo
KnVzZXJVUFApKGluVGltZXIsIGluVXNlckRhdGEpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VF
dmVudExvb3BJZGxlVGltZXJVUFAoRXZlbnRMb29wVGltZXJSZWYgaW5UaW1lciwgRXZlbnRMb29w
SWRsZVRpbWVyTWVzc2FnZSBpblN0YXRlLCB2b2lkICogaW5Vc2VyRGF0YSwgRXZlbnRMb29wSWRs
ZVRpbWVyVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKShpblRpbWVyLCBpblN0YXRlLCBpblVzZXJE
YXRhKTsgfQojIDIyODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29y
ZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpJbnN0YWxsRXZlbnRMb29wVGltZXIoCiAgRXZlbnRMb29w
UmVmIGluRXZlbnRMb29wLAogIEV2ZW50VGltZXJJbnRlcnZhbCBpbkZpcmVEZWxheSwKICBFdmVu
dFRpbWVySW50ZXJ2YWwgaW5JbnRlcnZhbCwKICBFdmVudExvb3BUaW1lclVQUCBpblRpbWVyUHJv
YywKICB2b2lkICogaW5UaW1lckRhdGEsCiAgRXZlbnRMb29wVGltZXJSZWYgKiBvdXRUaW1lcikg
OwojIDIzODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAz
CmV4dGVybiBPU1N0YXR1cwpSZW1vdmVFdmVudExvb3BUaW1lcihFdmVudExvb3BUaW1lclJlZiBp
blRpbWVyKSA7CiMgMjQyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHND
b3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClNldEV2ZW50TG9vcFRpbWVyTmV4dEZpcmVUaW1lKAog
IEV2ZW50TG9vcFRpbWVyUmVmIGluVGltZXIsCiAgRXZlbnRUaW1lckludGVydmFsIGluTmV4dEZp
cmUpIDsKIyAyNDM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUu
aCIgMwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVFdmVudEhhbmRsZXJSZWYqIEV2ZW50SGFuZGxlclJl
ZjsKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlRXZlbnRIYW5kbGVyQ2FsbFJlZiogRXZlbnRIYW5kbGVy
Q2FsbFJlZjsKIyAyNDc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0Nv
cmUuaCIgMwp0eXBlZGVmIE9TU3RhdHVzICggKiBFdmVudEhhbmRsZXJQcm9jUHRyKShFdmVudEhh
bmRsZXJDYWxsUmVmIGluSGFuZGxlckNhbGxSZWYsIEV2ZW50UmVmIGluRXZlbnQsIHZvaWQgKmlu
VXNlckRhdGEpOwp0eXBlZGVmIEV2ZW50SGFuZGxlclByb2NQdHIgRXZlbnRIYW5kbGVyVVBQOwoj
IDI0ODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4
dGVybiBFdmVudEhhbmRsZXJVUFAKTmV3RXZlbnRIYW5kbGVyVVBQKEV2ZW50SGFuZGxlclByb2NQ
dHIgdXNlclJvdXRpbmUpIDsKIyAyNDk2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJv
bkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlRXZlbnRIYW5kbGVyVVBQKEV2ZW50
SGFuZGxlclVQUCB1c2VyVVBQKSA7CiMgMjUwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9D
YXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkludm9rZUV2ZW50SGFuZGxlclVQ
UCgKICBFdmVudEhhbmRsZXJDYWxsUmVmIGluSGFuZGxlckNhbGxSZWYsCiAgRXZlbnRSZWYgaW5F
dmVudCwKICB2b2lkICogaW5Vc2VyRGF0YSwKICBFdmVudEhhbmRsZXJVUFAgdXNlclVQUCkgOwoK
CgogICAgaW5saW5lIEV2ZW50SGFuZGxlclVQUCBOZXdFdmVudEhhbmRsZXJVUFAoRXZlbnRIYW5k
bGVyUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGlu
ZSB2b2lkIERpc3Bvc2VFdmVudEhhbmRsZXJVUFAoRXZlbnRIYW5kbGVyVVBQKSB7IH0KICAgIGlu
bGluZSBPU1N0YXR1cyBJbnZva2VFdmVudEhhbmRsZXJVUFAoRXZlbnRIYW5kbGVyQ2FsbFJlZiBp
bkhhbmRsZXJDYWxsUmVmLCBFdmVudFJlZiBpbkV2ZW50LCB2b2lkICogaW5Vc2VyRGF0YSwgRXZl
bnRIYW5kbGVyVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoaW5IYW5kbGVyQ2FsbFJl
ZiwgaW5FdmVudCwgaW5Vc2VyRGF0YSk7IH0KCgoKCgoKCnR5cGVkZWYgc3RydWN0IE9wYXF1ZUV2
ZW50VGFyZ2V0UmVmKiBFdmVudFRhcmdldFJlZjsKIyAyNTkzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSW5zdGFsbEV2ZW50
SGFuZGxlcigKICBFdmVudFRhcmdldFJlZiBpblRhcmdldCwKICBFdmVudEhhbmRsZXJVUFAgaW5I
YW5kbGVyLAogIEl0ZW1Db3VudCBpbk51bVR5cGVzLAogIGNvbnN0IEV2ZW50VHlwZVNwZWMgKiBp
bkxpc3QsCiAgdm9pZCAqIGluVXNlckRhdGEsCiAgRXZlbnRIYW5kbGVyUmVmICogb3V0UmVmKSA7
CiMgMjYzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMK
ZXh0ZXJuIE9TU3RhdHVzClJlbW92ZUV2ZW50SGFuZGxlcihFdmVudEhhbmRsZXJSZWYgaW5IYW5k
bGVyUmVmKSA7CiMgMjc2MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHND
b3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkFkZEV2ZW50VHlwZXNUb0hhbmRsZXIoCiAgRXZlbnRI
YW5kbGVyUmVmIGluSGFuZGxlclJlZiwKICBJdGVtQ291bnQgaW5OdW1UeXBlcywKICBjb25zdCBF
dmVudFR5cGVTcGVjICogaW5MaXN0KSA7CiMgMjc5NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9DYXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClJlbW92ZUV2ZW50VHlwZXNG
cm9tSGFuZGxlcigKICBFdmVudEhhbmRsZXJSZWYgaW5IYW5kbGVyUmVmLAogIEl0ZW1Db3VudCBp
bk51bVR5cGVzLAogIGNvbnN0IEV2ZW50VHlwZVNwZWMgKiBpbkxpc3QpIDsKIyAyODQzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gT1NTdGF0
dXMKQ2FsbE5leHRFdmVudEhhbmRsZXIoCiAgRXZlbnRIYW5kbGVyQ2FsbFJlZiBpbkNhbGxSZWYs
CiAgRXZlbnRSZWYgaW5FdmVudCkgOwojIDI4NTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
Q2FyYm9uRXZlbnRzQ29yZS5oIiAzCmVudW0gewojIDI4NjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCiAga0V2ZW50VGFyZ2V0RG9udFByb3BhZ2F0ZSA9
ICgxIDw8IDApLAojIDI4NzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRz
Q29yZS5oIiAzCiAga0V2ZW50VGFyZ2V0U2VuZFRvQWxsSGFuZGxlcnMgPSAoMSA8PCAxKQp9Owoj
IDI5MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzQ29yZS5oIiAzCmV4
dGVybiBPU1N0YXR1cwpTZW5kRXZlbnRUb0V2ZW50VGFyZ2V0KAogIEV2ZW50UmVmIGluRXZlbnQs
CiAgRXZlbnRUYXJnZXRSZWYgaW5UYXJnZXQpIDsKIyAyOTYxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKU2VuZEV2ZW50VG9F
dmVudFRhcmdldFdpdGhPcHRpb25zKAogIEV2ZW50UmVmIGluRXZlbnQsCiAgRXZlbnRUYXJnZXRS
ZWYgaW5UYXJnZXQsCiAgT3B0aW9uQml0cyBpbk9wdGlvbnMpIDsKIyAzMDA1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gT1NTdGF0dXMKRW5h
YmxlU2VjdXJlRXZlbnRJbnB1dCh2b2lkKSA7CiMgMzA0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9DYXJib25FdmVudHNDb3JlLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkRpc2FibGVTZWN1cmVF
dmVudElucHV0KHZvaWQpIDsKIyAzMDY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJv
bkV2ZW50c0NvcmUuaCIgMwpleHRlcm4gQm9vbGVhbgpJc1NlY3VyZUV2ZW50SW5wdXRFbmFibGVk
KHZvaWQpIDsKCgoKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgMjkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvSElPYmplY3QuaCIgMiAzCiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElPYmplY3QuaCIgMwpleHRlcm4gIkMiIHsKIyAxNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvSElPYmplY3QuaCIgMwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVISU9iamVjdENsYXNzUmVmKiBI
SU9iamVjdENsYXNzUmVmOwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVISU9iamVjdFJlZiogSElPYmpl
Y3RSZWY7CiMgMTUxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJT2JqZWN0LmgiIDMKZW51
bSB7CgoKCgogIGhpT2JqZWN0Q2xhc3NFeGlzdHNFcnIgPSAtMjIwODAsCgoKCgoKICBoaU9iamVj
dENsYXNzSGFzSW5zdGFuY2VzRXJyID0gLTIyMDgxLAogIGhpT2JqZWN0Q2xhc3NIYXNTdWJjbGFz
c2VzRXJyID0gLTIyMDgyLAoKCgoKCgogIGhpT2JqZWN0Q2xhc3NJc0Fic3RyYWN0RXJyID0gLTIy
MDgzLAoKCgoKCiAgaGlPYmplY3RDYW5ub3RTdWJjbGFzc1NpbmdsZXRvbkVyciA9IC0yMjA4NCwK
CgoKCgogIGhpT2JqZWN0RGVsZWdhdGVBbHJlYWR5RXhpc3RzRXJyID0gLTIyMDkwLAoKCgoKCiAg
aGlPYmplY3REZWxlZ2F0ZU5vdEZvdW5kRXJyID0gLTIyMDkxCn07CgoKCgoKCmVudW0gewojIDIw
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAzCiAga0hJQ2xhc3NPcHRp
b25TaW5nbGV0b24gPSAxIDw8IDAKfTsKCgoKCgoKCmVudW0gewoKCgoKICBrRXZlbnRDbGFzc0hJ
T2JqZWN0ID0gJ2hpb2InCn07CgoKCgplbnVtIHsKCgoKCgoKICBrRXZlbnRQYXJhbUhJT2JqZWN0
SW5zdGFuY2UgPSAnaGlvaScsCiMgMjQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJT2Jq
ZWN0LmgiIDMKICBrRXZlbnRQYXJhbUhJQXJjaGl2ZSA9ICdoaWFjJywKIyAyNTAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwogIGtFdmVudFBhcmFtQmVmb3JlRGVsZWdh
dGVzID0gJ2JkZWwnLAojIDI1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5o
IiAzCiAga0V2ZW50UGFyYW1BZnRlckRlbGVnYXRlcyA9ICdhZGVsJywKIyAyNjggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwogIGtFdmVudFBhcmFtRGVjb2RpbmdGb3JF
ZGl0b3IgPSAnZGVmZScsCgoKCgoKCgogIGtFdmVudFBhcmFtSW5pdFBhcmFtZXRlcnMgPSAncGFy
YScsCgoKCgogIHR5cGVISU9iamVjdFJlZiA9ICdoaW9iJwp9OwojIDMwMyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSElP
YmplY3RJbml0UGFyYW1Vc2VyTmFtZSA7CiMgMzE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJT2JqZWN0LmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtISU9iamVjdEluaXRQYXJh
bURlc2NyaXB0aW9uIDsKIyAzMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3Qu
aCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0hJT2JqZWN0SW5pdFBhcmFtRXZlbnROYW1l
IDsKIyAzNTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0hJT2JqZWN0SW5pdFBhcmFtRXZlbnRUeXBlIDsKIyA0MTAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwplbnVtIHsKICBrRXZlbnRISU9i
amVjdENvbnN0cnVjdCA9IDEKfTsKIyA0NjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElP
YmplY3QuaCIgMwplbnVtIHsKICBrRXZlbnRISU9iamVjdEluaXRpYWxpemUgPSAyCn07CiMgNDk0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJT2JqZWN0LmgiIDMKZW51bSB7CiAga0V2ZW50
SElPYmplY3REZXN0cnVjdCA9IDMKfTsKIyA1MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElPYmplY3QuaCIgMwplbnVtIHsKICBrRXZlbnRISU9iamVjdElzRXF1YWwgPSA0Cn07CiMgNTUw
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJT2JqZWN0LmgiIDMKZW51bSB7CiAga0V2ZW50
SElPYmplY3RQcmludERlYnVnSW5mbyA9IDUKfTsKIyA1ODIgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElPYmplY3QuaCIgMwplbnVtIHsKICBrRXZlbnRISU9iamVjdEVuY29kZSA9IDYKfTsK
IyA2MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwplbnVtIHsKICBr
RXZlbnRISU9iamVjdENyZWF0ZWRGcm9tQXJjaGl2ZSA9IDcKfTsKIyA2NzggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwplbnVtIHsKICBrRXZlbnRISU9iamVjdEdldElu
aXRQYXJhbWV0ZXJzID0gOAp9OwoKCgoKCgoKZW51bSB7CgoKCgoKICBrRXZlbnRDbGFzc0RlbGVn
YXRlID0gJ2RlbGUnLAoKCgoKICBrRXZlbnRQYXJhbURlbGVnYXRlVGFyZ2V0ID0gJ2RlbHQnLAoK
CgoKCiAga0V2ZW50UGFyYW1EZWxlZ2F0ZVRhcmdldENsYXNzZXMgPSAndHJnYycsCgoKCgoKICBr
RXZlbnRQYXJhbURlbGVnYXRlR3JvdXBDbGFzc2VzID0gJ2dycGMnLAojIDcyMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAzCiAga0V2ZW50UGFyYW1EZWxlZ2F0ZUdyb3Vw
UGFyYW1ldGVycyA9ICdncnBwJwp9OwojIDc2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SU9iamVjdC5oIiAzCmVudW0gewogIGtFdmVudERlbGVnYXRlSW5zdGFsbGVkID0gMQp9OwojIDc5
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAzCmVudW0gewogIGtFdmVu
dERlbGVnYXRlUmVtb3ZlZCA9IDIKfTsKIyA4MzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElPYmplY3QuaCIgMwplbnVtIHsKICBrRXZlbnREZWxlZ2F0ZUdldFRhcmdldENsYXNzZXMgPSAz
Cn07CiMgODYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJT2JqZWN0LmgiIDMKZW51bSB7
CiAga0V2ZW50RGVsZWdhdGVJc0dyb3VwID0gNAp9OwojIDg5MCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISU9iamVjdC5oIiAzCmVudW0gewogIGtFdmVudERlbGVnYXRlR2V0R3JvdXBDbGFz
c2VzID0gNQp9OwojIDk2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAz
CmV4dGVybiBPU1N0YXR1cwpISU9iamVjdFJlZ2lzdGVyU3ViY2xhc3MoCiAgQ0ZTdHJpbmdSZWYg
aW5DbGFzc0lELAogIENGU3RyaW5nUmVmIGluQmFzZUNsYXNzSUQsCiAgT3B0aW9uQml0cyBpbk9w
dGlvbnMsCiAgRXZlbnRIYW5kbGVyVVBQIGluQ29uc3RydWN0UHJvYywKICBJdGVtQ291bnQgaW5O
dW1FdmVudHMsCiAgY29uc3QgRXZlbnRUeXBlU3BlYyAqIGluRXZlbnRMaXN0LAogIHZvaWQgKiBp
bkNvbnN0cnVjdERhdGEsCiAgSElPYmplY3RDbGFzc1JlZiAqIG91dENsYXNzUmVmKSA7CiMgOTk5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJT2JqZWN0LmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CkhJT2JqZWN0VW5yZWdpc3RlckNsYXNzKEhJT2JqZWN0Q2xhc3NSZWYgaW5DbGFzc1JlZikgOwoj
IDEwNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwpleHRlcm4gT1NT
dGF0dXMKSElPYmplY3RDcmVhdGUoCiAgQ0ZTdHJpbmdSZWYgaW5DbGFzc0lELAogIEV2ZW50UmVm
IGluQ29uc3RydWN0RGF0YSwKICBISU9iamVjdFJlZiAqIG91dE9iamVjdCkgOwojIDEwNjkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwpleHRlcm4gRXZlbnRUYXJnZXRS
ZWYKSElPYmplY3RHZXRFdmVudFRhcmdldChISU9iamVjdFJlZiBpbk9iamVjdCkgOwojIDEwOTMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwpleHRlcm4gdm9pZApISU9i
amVjdFByaW50RGVidWdJbmZvKEhJT2JqZWN0UmVmIGluT2JqZWN0KSA7CiMgMTEyMyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZgpISU9i
amVjdENvcHlDbGFzc0lEKEhJT2JqZWN0UmVmIGluT2JqZWN0KSA7CiMgMTE1NSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAzCmV4dGVybiBCb29sZWFuCkhJT2JqZWN0SXNP
ZkNsYXNzKAogIEhJT2JqZWN0UmVmIGluT2JqZWN0LAogIENGU3RyaW5nUmVmIGluT2JqZWN0Q2xh
c3NJRCkgOwojIDExOTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwpl
eHRlcm4gdm9pZCAqCkhJT2JqZWN0RHluYW1pY0Nhc3QoCiAgSElPYmplY3RSZWYgaW5PYmplY3Qs
CiAgQ0ZTdHJpbmdSZWYgaW5DbGFzc0lEKSA7CiMgMTIzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISU9iamVjdC5oIiAzCmV4dGVybiBPU1N0YXR1cwpISU9iamVjdENyZWF0ZUZyb21CdW5k
bGUoCiAgQ0ZCdW5kbGVSZWYgaW5CdW5kbGUsCiAgSElPYmplY3RSZWYgKiBvdXRPYmplY3QpIDsK
IyAxMjYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJT2JqZWN0LmgiIDMKZXh0ZXJuIEhJ
T2JqZWN0UmVmCkhJT2JqZWN0RnJvbUV2ZW50VGFyZ2V0KEV2ZW50VGFyZ2V0UmVmIGluVGFyZ2V0
KSA7CiMgMTI5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAzCmV4dGVy
biBCb29sZWFuCkhJT2JqZWN0SXNBcmNoaXZpbmdJZ25vcmVkKEhJT2JqZWN0UmVmIGluT2JqZWN0
KSA7CiMgMTM2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrSElPYmplY3RDdXN0b21EYXRhUGFyYW1ldGVyTmFtZXNLZXkg
OwojIDEzNzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0hJT2JqZWN0Q3VzdG9tRGF0YVBhcmFtZXRlclR5cGVzS2V5IDsK
IyAxMzg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJT2JqZWN0LmgiIDMKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtISU9iamVjdEN1c3RvbURhdGFQYXJhbWV0ZXJWYWx1ZXNLZXkgOwoj
IDE0MDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0hJT2JqZWN0Q3VzdG9tRGF0YUNsYXNzSURLZXkgOwojIDE0MTQgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0hJT2JqZWN0Q3VzdG9tRGF0YVN1cGVyQ2xhc3NJREtleSA7CiMgMTQzMiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrSElPYmplY3RDdXN0b21EYXRhQ0RFRlByb2NJREtleSA7CiMgMTQ1MSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSElP
YmplY3RDdXN0b21EYXRhRGVsZWdhdGVHcm91cFBhcmFtZXRlcnNLZXkgOwojIDE1NjUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwp0eXBlZGVmIFVJbnQzMiBISURlbGVn
YXRlUG9zaXRpb247CmVudW0gewoKCgoKCgoKICBrSElEZWxlZ2F0ZUFsbCA9IDAsCgoKCgoKCgog
IGtISURlbGVnYXRlQmVmb3JlID0gMSwKIyAxNTkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJT2JqZWN0LmgiIDMKICBrSElEZWxlZ2F0ZUFmdGVyID0gMgp9OwojIDE2MTEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0hJRGVsZWdhdGVCZWZvcmVLZXkgOwojIDE2MjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElPYmplY3QuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0hJRGVsZWdhdGVBZnRlcktl
eSA7CiMgMTY2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISU9iamVjdC5oIiAzCmV4dGVy
biBPU1N0YXR1cwpISU9iamVjdEFkZERlbGVnYXRlKAogIEhJT2JqZWN0UmVmIGluT2JqZWN0LAog
IEhJT2JqZWN0UmVmIGluRGVsZWdhdGUsCiAgSElEZWxlZ2F0ZVBvc2l0aW9uIGluUG9zaXRpb24p
IDsKIyAxNzA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJT2JqZWN0LmgiIDMKZXh0ZXJu
IE9TU3RhdHVzCkhJT2JqZWN0UmVtb3ZlRGVsZWdhdGUoCiAgSElPYmplY3RSZWYgaW5PYmplY3Qs
CiAgSElPYmplY3RSZWYgaW5EZWxlZ2F0ZSwKICBISURlbGVnYXRlUG9zaXRpb24gaW5Qb3NpdGlv
bikgOwojIDE3NTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwpleHRl
cm4gT1NTdGF0dXMKSElPYmplY3RDb3B5RGVsZWdhdGVzKAogIEhJT2JqZWN0UmVmIGluT2JqZWN0
LAogIENGRGljdGlvbmFyeVJlZiAqIG91dERlbGVnYXRlcykgOwojIDE4MDMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwpleHRlcm4gSElPYmplY3RSZWYKSElPYmplY3RH
ZXRFdmVudEhhbmRsZXJPYmplY3QoRXZlbnRIYW5kbGVyQ2FsbFJlZiBpblJlZikgOwojIDE4MTQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElPYmplY3QuaCIgMwp0eXBlZGVmIHN0cnVjdCBP
cGFxdWVDb250cm9sUmVmKiBDb250cm9sUmVmOwoKdHlwZWRlZiBDb250cm9sUmVmIENvbnRyb2xI
YW5kbGU7CnR5cGVkZWYgQ29udHJvbFJlZiBISVZpZXdSZWY7CgoKfQojIDI2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJVG9vbGJveC5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJQXJjaGl2ZS5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9ISUFyY2hpdmUuaCIgMwojZGVmaW5lIF9fSElBUkNISVZFX18gCiMgMzIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElBcmNoaXZlLmgiIDMKZXh0ZXJuICJDIiB7CiMgMTMyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0hJQXJjaGl2ZS5oIiAzCnR5cGVkZWYgc3RydWN0IE9wYXF1ZUhJ
QXJjaGl2ZVJlZiogSElBcmNoaXZlUmVmOwoKCgoKCmVudW0gewoKCgoKCiAgaGlBcmNoaXZlVHlw
ZU1pc21hdGNoRXJyID0gLTY3ODAsCgoKCgogIGhpQXJjaGl2ZUtleU5vdEF2YWlsYWJsZUVyciA9
IC02NzgxLAoKCgoKCiAgaGlBcmNoaXZlRW5jb2RpbmdDb21wbGV0ZUVyciA9IC02NzgyLAoKCgoK
ICBoaUFyY2hpdmVISU9iamVjdElnbm9yZXNBcmNoaXZpbmdFcnIgPSAtNjc4Mwp9OwoKCgoKCgpl
bnVtIHsKIyAxODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElBcmNoaXZlLmgiIDMKICBr
SElBcmNoaXZlRGVjb2RlU3VwZXJjbGFzc0ZvclVucmVnaXN0ZXJlZE9iamVjdHMgPSAoMSA8PCAw
KSwKIyAxOTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElBcmNoaXZlLmgiIDMKICBrSElB
cmNoaXZlRGVjb2RpbmdGb3JFZGl0b3IgPSAoMSA8PCAxKQp9OwojIDU3NCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9ISUFyY2hpdmUuaCIgMwp9CiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElUb29sYm94LmgiIDIgMwoKCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0hJVG9vbGJhci5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRv
b2xiYXIuaCIgMwojZGVmaW5lIF9fSElUT09MQkFSX18gCiMgMjggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvSElUb29sYmFyLmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01l
bnVzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01lbnVzLmgiIDMKI2Rl
ZmluZSBfX01FTlVTX18gCgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBl
YXJhbmNlLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2Uu
aCIgMwojZGVmaW5lIF9fQVBQRUFSQU5DRV9fIAojIDQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0FwcGVhcmFuY2UuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikK
CmVudW0gewogIGtBcHBlYXJhbmNlRXZlbnRDbGFzcyA9ICdhcHByJywKICBrQUVBcHBlYXJhbmNl
Q2hhbmdlZCA9ICd0aG1lJywKICBrQUVTeXN0ZW1Gb250Q2hhbmdlZCA9ICdzeXNmJywKICBrQUVT
bWFsbFN5c3RlbUZvbnRDaGFuZ2VkID0gJ3NzZm4nLAogIGtBRVZpZXdzRm9udENoYW5nZWQgPSAn
dmZudCcKfTsKCgoKCmVudW0gewogIGtUaGVtZURhdGFGaWxlVHlwZSA9ICd0aG1lJywKICBrVGhl
bWVQbGF0aW51bUZpbGVUeXBlID0gJ3BsdG4nLAogIGtUaGVtZUN1c3RvbVRoZW1lc0ZpbGVUeXBl
ID0gJ3NjZW4nLAogIGtUaGVtZVNvdW5kVHJhY2tGaWxlVHlwZSA9ICd0c25kJwp9OwoKCgoKCgoj
ZGVmaW5lIGtUaGVtZUFwcGVhcmFuY2VQbGF0aW51bSBDRlNUUiggImNvbS5hcHBsZS50aGVtZS5h
cHBlYXJhbmNlLnBsYXRpbnVtIiApCiNkZWZpbmUga1RoZW1lQXBwZWFyYW5jZUFxdWEgQ0ZTVFIo
ICJjb20uYXBwbGUudGhlbWUuYXBwZWFyYW5jZS5hcXVhIiApCiNkZWZpbmUga1RoZW1lQXBwZWFy
YW5jZUFxdWFCbHVlIENGU1RSKCAiY29tLmFwcGxlLnRoZW1lLmFwcGVhcmFuY2UuYXF1YS5ibHVl
IiApCiNkZWZpbmUga1RoZW1lQXBwZWFyYW5jZUFxdWFHcmFwaGl0ZSBDRlNUUiggImNvbS5hcHBs
ZS50aGVtZS5hcHBlYXJhbmNlLmFxdWEuZ3JhcGhpdGUiICkKIyA4NiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKdHlwZWRlZiBTSW50MTYgQXBwZWFyYW5jZVBhcnRD
b2RlOwplbnVtIHsKCgoKCgoKICBrQXBwZWFyYW5jZVBhcnRNZXRhTm9uZSA9IDAsCgoKCgoKICBr
QXBwZWFyYW5jZVBhcnRNZXRhRGlzYWJsZWQgPSAyNTQsCgoKCgoKICBrQXBwZWFyYW5jZVBhcnRN
ZXRhSW5hY3RpdmUgPSAyNTUsCgoKCgoKICBrQXBwZWFyYW5jZVBhcnRJbmRpY2F0b3IgPSAxMjks
CgoKCgoKICBrQXBwZWFyYW5jZVBhcnRVcEJ1dHRvbiA9IDIwLAoKCgoKCiAga0FwcGVhcmFuY2VQ
YXJ0RG93bkJ1dHRvbiA9IDIxLAoKCgoKCiAga0FwcGVhcmFuY2VQYXJ0TGVmdEJ1dHRvbiA9IGtB
cHBlYXJhbmNlUGFydFVwQnV0dG9uLAoKCgoKCiAga0FwcGVhcmFuY2VQYXJ0UmlnaHRCdXR0b24g
PSBrQXBwZWFyYW5jZVBhcnREb3duQnV0dG9uLAoKCgoKCiAga0FwcGVhcmFuY2VQYXJ0UGFnZVVw
QXJlYSA9IDIyLAoKCgoKCiAga0FwcGVhcmFuY2VQYXJ0UGFnZURvd25BcmVhID0gMjMsCgoKCgoK
ICBrQXBwZWFyYW5jZVBhcnRQYWdlTGVmdEFyZWEgPSBrQXBwZWFyYW5jZVBhcnRQYWdlVXBBcmVh
LAoKCgoKCiAga0FwcGVhcmFuY2VQYXJ0UGFnZVJpZ2h0QXJlYSA9IGtBcHBlYXJhbmNlUGFydFBh
Z2VEb3duQXJlYQp9OwojIDE3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNl
LmgiIDMKdHlwZWRlZiBVSW50MTYgQXBwZWFyYW5jZVJlZ2lvbkNvZGU7CmVudW0gewogIGtBcHBl
YXJhbmNlUmVnaW9uVGl0bGVCYXIgPSAwLAogIGtBcHBlYXJhbmNlUmVnaW9uVGl0bGVUZXh0ID0g
MSwKICBrQXBwZWFyYW5jZVJlZ2lvbkNsb3NlQm94ID0gMiwKICBrQXBwZWFyYW5jZVJlZ2lvblpv
b21Cb3ggPSAzLAogIGtBcHBlYXJhbmNlUmVnaW9uRHJhZyA9IDUsCiAga0FwcGVhcmFuY2VSZWdp
b25Hcm93ID0gNiwKICBrQXBwZWFyYW5jZVJlZ2lvbkNvbGxhcHNlQm94ID0gNywKICBrQXBwZWFy
YW5jZVJlZ2lvblRpdGxlUHJveHlJY29uID0gOCwKICBrQXBwZWFyYW5jZVJlZ2lvblN0cnVjdHVy
ZSA9IDMyLAogIGtBcHBlYXJhbmNlUmVnaW9uQ29udGVudCA9IDMzLAogIGtBcHBlYXJhbmNlUmVn
aW9uVG9vbGJhckJ1dHRvbiA9IDQxCn07CgoKCgoKCgplbnVtIHsKCgoKCiAga1RoZW1lQnJ1c2hE
aWFsb2dCYWNrZ3JvdW5kQWN0aXZlID0gMSwKCgoKCiAga1RoZW1lQnJ1c2hEaWFsb2dCYWNrZ3Jv
dW5kSW5hY3RpdmUgPSAyLAoKCgoKICBrVGhlbWVCcnVzaEFsZXJ0QmFja2dyb3VuZEFjdGl2ZSA9
IDMsCgoKCgogIGtUaGVtZUJydXNoQWxlcnRCYWNrZ3JvdW5kSW5hY3RpdmUgPSA0LAoKCgoKICBr
VGhlbWVCcnVzaE1vZGVsZXNzRGlhbG9nQmFja2dyb3VuZEFjdGl2ZSA9IDUsCgoKCgogIGtUaGVt
ZUJydXNoTW9kZWxlc3NEaWFsb2dCYWNrZ3JvdW5kSW5hY3RpdmUgPSA2LAoKCgoKICBrVGhlbWVC
cnVzaFV0aWxpdHlXaW5kb3dCYWNrZ3JvdW5kQWN0aXZlID0gNywKCgoKCiAga1RoZW1lQnJ1c2hV
dGlsaXR5V2luZG93QmFja2dyb3VuZEluYWN0aXZlID0gOCwKCgoKCiAga1RoZW1lQnJ1c2hMaXN0
Vmlld1NvcnRDb2x1bW5CYWNrZ3JvdW5kID0gOSwKICBrVGhlbWVCcnVzaExpc3RWaWV3QmFja2dy
b3VuZCA9IDEwLAogIGtUaGVtZUJydXNoSWNvbkxhYmVsQmFja2dyb3VuZCA9IDExLAogIGtUaGVt
ZUJydXNoTGlzdFZpZXdTZXBhcmF0b3IgPSAxMiwKICBrVGhlbWVCcnVzaENoYXNpbmdBcnJvd3Mg
PSAxMywKICBrVGhlbWVCcnVzaERyYWdIaWxpdGUgPSAxNCwKCgoKCiAga1RoZW1lQnJ1c2hEb2N1
bWVudFdpbmRvd0JhY2tncm91bmQgPSAxNSwKICBrVGhlbWVCcnVzaEZpbmRlcldpbmRvd0JhY2tn
cm91bmQgPSAxNiwKCgoKCiAga1RoZW1lQnJ1c2hTY3JvbGxCYXJEZWxpbWl0ZXJBY3RpdmUgPSAx
NywKCgoKCiAga1RoZW1lQnJ1c2hTY3JvbGxCYXJEZWxpbWl0ZXJJbmFjdGl2ZSA9IDE4LAoKCgoK
ICBrVGhlbWVCcnVzaEZvY3VzSGlnaGxpZ2h0ID0gMTksCgoKCgogIGtUaGVtZUJydXNoUG9wdXBB
cnJvd0FjdGl2ZSA9IDIwLAoKCgoKICBrVGhlbWVCcnVzaFBvcHVwQXJyb3dQcmVzc2VkID0gMjEs
CgoKCgogIGtUaGVtZUJydXNoUG9wdXBBcnJvd0luYWN0aXZlID0gMjIsCgoKCgogIGtUaGVtZUJy
dXNoQXBwbGVHdWlkZUNvYWNobWFyayA9IDIzLAoKCgoKICBrVGhlbWVCcnVzaEljb25MYWJlbEJh
Y2tncm91bmRTZWxlY3RlZCA9IDI0LAoKCgoKICBrVGhlbWVCcnVzaFN0YXRpY0FyZWFGaWxsID0g
MjUsCgoKCgogIGtUaGVtZUJydXNoQWN0aXZlQXJlYUZpbGwgPSAyNiwKCgoKCiAga1RoZW1lQnJ1
c2hCdXR0b25GcmFtZUFjdGl2ZSA9IDI3LAoKCgoKICBrVGhlbWVCcnVzaEJ1dHRvbkZyYW1lSW5h
Y3RpdmUgPSAyOCwKCgoKCiAga1RoZW1lQnJ1c2hCdXR0b25GYWNlQWN0aXZlID0gMjksCgoKCgog
IGtUaGVtZUJydXNoQnV0dG9uRmFjZUluYWN0aXZlID0gMzAsCgoKCgogIGtUaGVtZUJydXNoQnV0
dG9uRmFjZVByZXNzZWQgPSAzMSwKCgoKCiAga1RoZW1lQnJ1c2hCdXR0b25BY3RpdmVEYXJrU2hh
ZG93ID0gMzIsCgoKCgogIGtUaGVtZUJydXNoQnV0dG9uQWN0aXZlRGFya0hpZ2hsaWdodCA9IDMz
LAoKCgoKICBrVGhlbWVCcnVzaEJ1dHRvbkFjdGl2ZUxpZ2h0U2hhZG93ID0gMzQsCgoKCgogIGtU
aGVtZUJydXNoQnV0dG9uQWN0aXZlTGlnaHRIaWdobGlnaHQgPSAzNSwKCgoKCiAga1RoZW1lQnJ1
c2hCdXR0b25JbmFjdGl2ZURhcmtTaGFkb3cgPSAzNiwKCgoKCiAga1RoZW1lQnJ1c2hCdXR0b25J
bmFjdGl2ZURhcmtIaWdobGlnaHQgPSAzNywKCgoKCiAga1RoZW1lQnJ1c2hCdXR0b25JbmFjdGl2
ZUxpZ2h0U2hhZG93ID0gMzgsCgoKCgogIGtUaGVtZUJydXNoQnV0dG9uSW5hY3RpdmVMaWdodEhp
Z2hsaWdodCA9IDM5LAoKCgoKICBrVGhlbWVCcnVzaEJ1dHRvblByZXNzZWREYXJrU2hhZG93ID0g
NDAsCgoKCgogIGtUaGVtZUJydXNoQnV0dG9uUHJlc3NlZERhcmtIaWdobGlnaHQgPSA0MSwKCgoK
CiAga1RoZW1lQnJ1c2hCdXR0b25QcmVzc2VkTGlnaHRTaGFkb3cgPSA0MiwKCgoKCiAga1RoZW1l
QnJ1c2hCdXR0b25QcmVzc2VkTGlnaHRIaWdobGlnaHQgPSA0MywKCgoKCiAga1RoZW1lQnJ1c2hC
ZXZlbEFjdGl2ZUxpZ2h0ID0gNDQsCgoKCgogIGtUaGVtZUJydXNoQmV2ZWxBY3RpdmVEYXJrID0g
NDUsCgoKCgogIGtUaGVtZUJydXNoQmV2ZWxJbmFjdGl2ZUxpZ2h0ID0gNDYsCgoKCgogIGtUaGVt
ZUJydXNoQmV2ZWxJbmFjdGl2ZURhcmsgPSA0NywKCgoKCiAga1RoZW1lQnJ1c2hOb3RpZmljYXRp
b25XaW5kb3dCYWNrZ3JvdW5kID0gNDgsCgoKCgoKICBrVGhlbWVCcnVzaE1vdmFibGVNb2RhbEJh
Y2tncm91bmQgPSA0OSwKCgoKCgoKCiAga1RoZW1lQnJ1c2hTaGVldEJhY2tncm91bmRPcGFxdWUg
PSA1MCwKCgoKCgogIGtUaGVtZUJydXNoRHJhd2VyQmFja2dyb3VuZCA9IDUxLAoKCgoKCiAga1Ro
ZW1lQnJ1c2hUb29sYmFyQmFja2dyb3VuZCA9IDUyLAoKCgoKCgoKICBrVGhlbWVCcnVzaFNoZWV0
QmFja2dyb3VuZFRyYW5zcGFyZW50ID0gNTMsCgoKCgogIGtUaGVtZUJydXNoTWVudUJhY2tncm91
bmQgPSA1NCwKCgoKCiAga1RoZW1lQnJ1c2hNZW51QmFja2dyb3VuZFNlbGVjdGVkID0gNTUsCgoK
CgoKCiAga1RoZW1lQnJ1c2hMaXN0Vmlld09kZFJvd0JhY2tncm91bmQgPSA1NiwKCgoKCgoKICBr
VGhlbWVCcnVzaExpc3RWaWV3RXZlblJvd0JhY2tncm91bmQgPSA1NywKIyA0NzcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCiAga1RoZW1lQnJ1c2hMaXN0Vmlld0Nv
bHVtbkRpdmlkZXIgPSA1OCwKCgoKCgogIGtUaGVtZUJydXNoU2hlZXRCYWNrZ3JvdW5kID0ga1Ro
ZW1lQnJ1c2hTaGVldEJhY2tncm91bmRPcGFxdWUsCgoKCgoKCiAga1RoZW1lQnJ1c2hCbGFjayA9
IC0xLAoKCgoKCgogIGtUaGVtZUJydXNoV2hpdGUgPSAtMiwKCgoKCgoKICBrVGhlbWVCcnVzaFBy
aW1hcnlIaWdobGlnaHRDb2xvciA9IC0zLAoKCgoKCgogIGtUaGVtZUJydXNoU2Vjb25kYXJ5SGln
aGxpZ2h0Q29sb3IgPSAtNCwKCgoKCgoKICBrVGhlbWVCcnVzaEFsdGVybmF0ZVByaW1hcnlIaWdo
bGlnaHRDb2xvciA9IC01Cn07Cgp0eXBlZGVmIFNJbnQxNiBUaGVtZUJydXNoOwplbnVtIHsKICBr
VGhlbWVUZXh0Q29sb3JEaWFsb2dBY3RpdmUgPSAxLAogIGtUaGVtZVRleHRDb2xvckRpYWxvZ0lu
YWN0aXZlID0gMiwKICBrVGhlbWVUZXh0Q29sb3JBbGVydEFjdGl2ZSA9IDMsCiAga1RoZW1lVGV4
dENvbG9yQWxlcnRJbmFjdGl2ZSA9IDQsCiAga1RoZW1lVGV4dENvbG9yTW9kZWxlc3NEaWFsb2dB
Y3RpdmUgPSA1LAogIGtUaGVtZVRleHRDb2xvck1vZGVsZXNzRGlhbG9nSW5hY3RpdmUgPSA2LAog
IGtUaGVtZVRleHRDb2xvcldpbmRvd0hlYWRlckFjdGl2ZSA9IDcsCiAga1RoZW1lVGV4dENvbG9y
V2luZG93SGVhZGVySW5hY3RpdmUgPSA4LAogIGtUaGVtZVRleHRDb2xvclBsYWNhcmRBY3RpdmUg
PSA5LAogIGtUaGVtZVRleHRDb2xvclBsYWNhcmRJbmFjdGl2ZSA9IDEwLAogIGtUaGVtZVRleHRD
b2xvclBsYWNhcmRQcmVzc2VkID0gMTEsCiAga1RoZW1lVGV4dENvbG9yUHVzaEJ1dHRvbkFjdGl2
ZSA9IDEyLAogIGtUaGVtZVRleHRDb2xvclB1c2hCdXR0b25JbmFjdGl2ZSA9IDEzLAogIGtUaGVt
ZVRleHRDb2xvclB1c2hCdXR0b25QcmVzc2VkID0gMTQsCiAga1RoZW1lVGV4dENvbG9yQmV2ZWxC
dXR0b25BY3RpdmUgPSAxNSwKICBrVGhlbWVUZXh0Q29sb3JCZXZlbEJ1dHRvbkluYWN0aXZlID0g
MTYsCiAga1RoZW1lVGV4dENvbG9yQmV2ZWxCdXR0b25QcmVzc2VkID0gMTcsCiAga1RoZW1lVGV4
dENvbG9yUG9wdXBCdXR0b25BY3RpdmUgPSAxOCwKICBrVGhlbWVUZXh0Q29sb3JQb3B1cEJ1dHRv
bkluYWN0aXZlID0gMTksCiAga1RoZW1lVGV4dENvbG9yUG9wdXBCdXR0b25QcmVzc2VkID0gMjAs
CiAga1RoZW1lVGV4dENvbG9ySWNvbkxhYmVsID0gMjEsCiAga1RoZW1lVGV4dENvbG9yTGlzdFZp
ZXcgPSAyMgp9OwoKCmVudW0gewogIGtUaGVtZVRleHRDb2xvckRvY3VtZW50V2luZG93VGl0bGVB
Y3RpdmUgPSAyMywKICBrVGhlbWVUZXh0Q29sb3JEb2N1bWVudFdpbmRvd1RpdGxlSW5hY3RpdmUg
PSAyNCwKICBrVGhlbWVUZXh0Q29sb3JNb3ZhYmxlTW9kYWxXaW5kb3dUaXRsZUFjdGl2ZSA9IDI1
LAogIGtUaGVtZVRleHRDb2xvck1vdmFibGVNb2RhbFdpbmRvd1RpdGxlSW5hY3RpdmUgPSAyNiwK
ICBrVGhlbWVUZXh0Q29sb3JVdGlsaXR5V2luZG93VGl0bGVBY3RpdmUgPSAyNywKICBrVGhlbWVU
ZXh0Q29sb3JVdGlsaXR5V2luZG93VGl0bGVJbmFjdGl2ZSA9IDI4LAogIGtUaGVtZVRleHRDb2xv
clBvcHVwV2luZG93VGl0bGVBY3RpdmUgPSAyOSwKICBrVGhlbWVUZXh0Q29sb3JQb3B1cFdpbmRv
d1RpdGxlSW5hY3RpdmUgPSAzMCwKICBrVGhlbWVUZXh0Q29sb3JSb290TWVudUFjdGl2ZSA9IDMx
LAogIGtUaGVtZVRleHRDb2xvclJvb3RNZW51U2VsZWN0ZWQgPSAzMiwKICBrVGhlbWVUZXh0Q29s
b3JSb290TWVudURpc2FibGVkID0gMzMsCiAga1RoZW1lVGV4dENvbG9yTWVudUl0ZW1BY3RpdmUg
PSAzNCwKICBrVGhlbWVUZXh0Q29sb3JNZW51SXRlbVNlbGVjdGVkID0gMzUsCiAga1RoZW1lVGV4
dENvbG9yTWVudUl0ZW1EaXNhYmxlZCA9IDM2LAogIGtUaGVtZVRleHRDb2xvclBvcHVwTGFiZWxB
Y3RpdmUgPSAzNywKICBrVGhlbWVUZXh0Q29sb3JQb3B1cExhYmVsSW5hY3RpdmUgPSAzOAp9OwoK
CgplbnVtIHsKICBrVGhlbWVUZXh0Q29sb3JUYWJGcm9udEFjdGl2ZSA9IDM5LAogIGtUaGVtZVRl
eHRDb2xvclRhYk5vbkZyb250QWN0aXZlID0gNDAsCiAga1RoZW1lVGV4dENvbG9yVGFiTm9uRnJv
bnRQcmVzc2VkID0gNDEsCiAga1RoZW1lVGV4dENvbG9yVGFiRnJvbnRJbmFjdGl2ZSA9IDQyLAog
IGtUaGVtZVRleHRDb2xvclRhYk5vbkZyb250SW5hY3RpdmUgPSA0MywKICBrVGhlbWVUZXh0Q29s
b3JJY29uTGFiZWxTZWxlY3RlZCA9IDQ0LAogIGtUaGVtZVRleHRDb2xvckJldmVsQnV0dG9uU3Rp
Y2t5QWN0aXZlID0gNDUsCiAga1RoZW1lVGV4dENvbG9yQmV2ZWxCdXR0b25TdGlja3lJbmFjdGl2
ZSA9IDQ2Cn07CgoKZW51bSB7CiAga1RoZW1lVGV4dENvbG9yTm90aWZpY2F0aW9uID0gNDcKfTsK
CgoKZW51bSB7CiAga1RoZW1lVGV4dENvbG9yU3lzdGVtRGV0YWlsID0gNDgKfTsKCgoKZW51bSB7
CiAga1RoZW1lVGV4dENvbG9yQmxhY2sgPSAtMSwKICBrVGhlbWVUZXh0Q29sb3JXaGl0ZSA9IC0y
Cn07Cgp0eXBlZGVmIFNJbnQxNiBUaGVtZVRleHRDb2xvcjsKCmVudW0gewogIGtUaGVtZVN0YXRl
SW5hY3RpdmUgPSAwLAogIGtUaGVtZVN0YXRlQWN0aXZlID0gMSwKICBrVGhlbWVTdGF0ZVByZXNz
ZWQgPSAyLAogIGtUaGVtZVN0YXRlUm9sbG92ZXIgPSA2LAogIGtUaGVtZVN0YXRlVW5hdmFpbGFi
bGUgPSA3LAogIGtUaGVtZVN0YXRlVW5hdmFpbGFibGVJbmFjdGl2ZSA9IDgKfTsKCgplbnVtIHsK
ICBrVGhlbWVTdGF0ZURpc2FibGVkID0gMAp9OwoKZW51bSB7CiAga1RoZW1lU3RhdGVQcmVzc2Vk
VXAgPSAyLAogIGtUaGVtZVN0YXRlUHJlc3NlZERvd24gPSAzCn07Cgp0eXBlZGVmIFVJbnQzMiBU
aGVtZURyYXdTdGF0ZTsKCgoKCgoKZW51bSB7CiAga1RoZW1lQXJyb3dDdXJzb3IgPSAwLAogIGtU
aGVtZUNvcHlBcnJvd0N1cnNvciA9IDEsCiAga1RoZW1lQWxpYXNBcnJvd0N1cnNvciA9IDIsCiAg
a1RoZW1lQ29udGV4dHVhbE1lbnVBcnJvd0N1cnNvciA9IDMsCiAga1RoZW1lSUJlYW1DdXJzb3Ig
PSA0LAogIGtUaGVtZUNyb3NzQ3Vyc29yID0gNSwKICBrVGhlbWVQbHVzQ3Vyc29yID0gNiwKICBr
VGhlbWVXYXRjaEN1cnNvciA9IDcsCiAga1RoZW1lQ2xvc2VkSGFuZEN1cnNvciA9IDgsCiAga1Ro
ZW1lT3BlbkhhbmRDdXJzb3IgPSA5LAogIGtUaGVtZVBvaW50aW5nSGFuZEN1cnNvciA9IDEwLAog
IGtUaGVtZUNvdW50aW5nVXBIYW5kQ3Vyc29yID0gMTEsCiAga1RoZW1lQ291bnRpbmdEb3duSGFu
ZEN1cnNvciA9IDEyLAogIGtUaGVtZUNvdW50aW5nVXBBbmREb3duSGFuZEN1cnNvciA9IDEzLAog
IGtUaGVtZVNwaW5uaW5nQ3Vyc29yID0gMTQsCiAga1RoZW1lUmVzaXplTGVmdEN1cnNvciA9IDE1
LAogIGtUaGVtZVJlc2l6ZVJpZ2h0Q3Vyc29yID0gMTYsCiAga1RoZW1lUmVzaXplTGVmdFJpZ2h0
Q3Vyc29yID0gMTcsCiAga1RoZW1lTm90QWxsb3dlZEN1cnNvciA9IDE4LAoKCgoKICBrVGhlbWVS
ZXNpemVVcEN1cnNvciA9IDE5LAoKCgoKICBrVGhlbWVSZXNpemVEb3duQ3Vyc29yID0gMjAsCgoK
CgogIGtUaGVtZVJlc2l6ZVVwRG93bkN1cnNvciA9IDIxLAojIDY2OSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKICBrVGhlbWVQb29mQ3Vyc29yID0gMjIKfTsKCnR5
cGVkZWYgVUludDMyIFRoZW1lQ3Vyc29yOwoKCgplbnVtIHsKICBrVGhlbWVNZW51QmFyTm9ybWFs
ID0gMCwKICBrVGhlbWVNZW51QmFyU2VsZWN0ZWQgPSAxCn07Cgp0eXBlZGVmIFVJbnQxNiBUaGVt
ZU1lbnVCYXJTdGF0ZTsKCmVudW0gewogIGtUaGVtZU1lbnVTcXVhcmVNZW51QmFyID0gKDEgPDwg
MCkKfTsKCgoKCmVudW0gewogIGtUaGVtZU1lbnVBY3RpdmUgPSAwLAogIGtUaGVtZU1lbnVTZWxl
Y3RlZCA9IDEsCiAga1RoZW1lTWVudURpc2FibGVkID0gMwp9OwoKdHlwZWRlZiBVSW50MTYgVGhl
bWVNZW51U3RhdGU7CgoKCgplbnVtIHsKICBrVGhlbWVNZW51VHlwZVB1bGxEb3duID0gMCwKICBr
VGhlbWVNZW51VHlwZVBvcFVwID0gMSwKICBrVGhlbWVNZW51VHlwZUhpZXJhcmNoaWNhbCA9IDIs
CiAga1RoZW1lTWVudVR5cGVJbmFjdGl2ZSA9IDB4MDEwMAp9OwoKdHlwZWRlZiBVSW50MTYgVGhl
bWVNZW51VHlwZTsKZW51bSB7CiAga1RoZW1lTWVudUl0ZW1QbGFpbiA9IDAsCiAga1RoZW1lTWVu
dUl0ZW1IaWVyYXJjaGljYWwgPSAxLAogIGtUaGVtZU1lbnVJdGVtU2Nyb2xsVXBBcnJvdyA9IDIs
CiAga1RoZW1lTWVudUl0ZW1TY3JvbGxEb3duQXJyb3cgPSAzLAogIGtUaGVtZU1lbnVJdGVtQXRU
b3AgPSAweDAxMDAsCiAga1RoZW1lTWVudUl0ZW1BdEJvdHRvbSA9IDB4MDIwMCwKICBrVGhlbWVN
ZW51SXRlbUhpZXJCYWNrZ3JvdW5kID0gMHgwNDAwLAogIGtUaGVtZU1lbnVJdGVtUG9wVXBCYWNr
Z3JvdW5kID0gMHgwODAwLAogIGtUaGVtZU1lbnVJdGVtSGFzSWNvbiA9IDB4ODAwMCwKICBrVGhl
bWVNZW51SXRlbU5vQmFja2dyb3VuZCA9IDB4NDAwMCwKICBrVGhlbWVNZW51SXRlbUFsaWduUmln
aHQgPSAweDIwMDAKfTsKCnR5cGVkZWYgVUludDE2IFRoZW1lTWVudUl0ZW1UeXBlOwoKCgoKCmVu
dW0gewoKCgoKICBrVGhlbWVCYWNrZ3JvdW5kVGFiUGFuZSA9IDEsCgoKCgogIGtUaGVtZUJhY2tn
cm91bmRQbGFjYXJkID0gMiwKCgoKCgoKCiAga1RoZW1lQmFja2dyb3VuZFdpbmRvd0hlYWRlciA9
IDMsCgoKCgoKCiAga1RoZW1lQmFja2dyb3VuZExpc3RWaWV3V2luZG93SGVhZGVyID0gNCwKCgoK
CgogIGtUaGVtZUJhY2tncm91bmRTZWNvbmRhcnlHcm91cEJveCA9IDUsCgoKCgoKICBrVGhlbWVC
YWNrZ3JvdW5kTWV0YWwgPSA2Cn07Cgp0eXBlZGVmIFVJbnQzMiBUaGVtZUJhY2tncm91bmRLaW5k
OwojIDc3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKZW51bSB7
CiAga1RoZW1lTmFtZVRhZyA9ICduYW1lJywKICBrVGhlbWVWYXJpYW50TmFtZVRhZyA9ICd2YXJu
JywKICBrVGhlbWVWYXJpYW50QmFzZVRpbnRUYWcgPSAndGludCcsCiAga1RoZW1lSGlnaGxpZ2h0
Q29sb3JUYWcgPSAnaGNvbCcsCiAga1RoZW1lU2Nyb2xsQmFyQXJyb3dTdHlsZVRhZyA9ICdzYmFy
JywKICBrVGhlbWVTY3JvbGxCYXJUaHVtYlN0eWxlVGFnID0gJ3NidGgnLAogIGtUaGVtZVNvdW5k
c0VuYWJsZWRUYWcgPSAnc25kcycsCiAga1RoZW1lRGJsQ2xpY2tDb2xsYXBzZVRhZyA9ICdjb2xs
Jwp9OwoKZW51bSB7CiAga1RoZW1lQXBwZWFyYW5jZUZpbGVOYW1lVGFnID0gJ3RobWUnLAogIGtU
aGVtZVN5c3RlbUZvbnRUYWcgPSAnbGdzZicsCiAga1RoZW1lU21hbGxTeXN0ZW1Gb250VGFnID0g
J3Ntc2YnLAogIGtUaGVtZVZpZXdzRm9udFRhZyA9ICd2Zm50JywKICBrVGhlbWVWaWV3c0ZvbnRT
aXplVGFnID0gJ3Zmc3onLAogIGtUaGVtZURlc2t0b3BQYXR0ZXJuTmFtZVRhZyA9ICdwYXRuJywK
ICBrVGhlbWVEZXNrdG9wUGF0dGVyblRhZyA9ICdwYXR0JywKICBrVGhlbWVEZXNrdG9wUGljdHVy
ZU5hbWVUYWcgPSAnZHBubScsCiAga1RoZW1lRGVza3RvcFBpY3R1cmVBbGlhc1RhZyA9ICdkcGFs
JywKICBrVGhlbWVEZXNrdG9wUGljdHVyZUFsaWdubWVudFRhZyA9ICdkcGFuJywKICBrVGhlbWVI
aWdobGlnaHRDb2xvck5hbWVUYWcgPSAnaGNubScsCiAga1RoZW1lRXhhbXBsZVBpY3R1cmVJRFRh
ZyA9ICdlcGljJywKICBrVGhlbWVTb3VuZFRyYWNrTmFtZVRhZyA9ICdzbmR0JywKICBrVGhlbWVT
b3VuZE1hc2tUYWcgPSAnc21zaycsCiAga1RoZW1lVXNlckRlZmluZWRUYWcgPSAndXNlcicsCiAg
a1RoZW1lU21vb3RoRm9udEVuYWJsZWRUYWcgPSAnc21vbycsCiAga1RoZW1lU21vb3RoRm9udE1p
blNpemVUYWcgPSAnc21vcycKfTsKCgplbnVtIHsKICBrVGlsZWRPblNjcmVlbiA9IDEsCiAga0Nl
bnRlck9uU2NyZWVuID0gMiwKICBrRml0VG9TY3JlZW4gPSAzLAogIGtGaWxsU2NyZWVuID0gNCwK
ICBrVXNlQmVzdEd1ZXNzID0gNQp9OwoKCgoKZW51bSB7CiAga1RoZW1lQ2hlY2tCb3hDbGFzc2lj
WCA9IDAsCiAga1RoZW1lQ2hlY2tCb3hDaGVja01hcmsgPSAxCn07Cgp0eXBlZGVmIFVJbnQxNiBU
aGVtZUNoZWNrQm94U3R5bGU7CmVudW0gewogIGtUaGVtZVNjcm9sbEJhckFycm93c1NpbmdsZSA9
IDAsCiAga1RoZW1lU2Nyb2xsQmFyQXJyb3dzTG93ZXJSaWdodCA9IDEKfTsKCnR5cGVkZWYgVUlu
dDE2IFRoZW1lU2Nyb2xsQmFyQXJyb3dTdHlsZTsKZW51bSB7CiAga1RoZW1lU2Nyb2xsQmFyVGh1
bWJOb3JtYWwgPSAwLAogIGtUaGVtZVNjcm9sbEJhclRodW1iUHJvcG9ydGlvbmFsID0gMQp9OwoK
dHlwZWRlZiBVSW50MTYgVGhlbWVTY3JvbGxCYXJUaHVtYlN0eWxlOwojIDg1NSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKZW51bSB7CiMgODY0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwogIGtUaGVtZVN5c3RlbUZvbnQgPSAwLAoK
CgoKCgogIGtUaGVtZVNtYWxsU3lzdGVtRm9udCA9IDEsCgoKCgoKCiAga1RoZW1lU21hbGxFbXBo
YXNpemVkU3lzdGVtRm9udCA9IDIsCgoKCgoKICBrVGhlbWVWaWV3c0ZvbnQgPSAzLAoKCgoKCgoK
ICBrVGhlbWVFbXBoYXNpemVkU3lzdGVtRm9udCA9IDQsCgoKCgoKCgogIGtUaGVtZUFwcGxpY2F0
aW9uRm9udCA9IDUsCgoKCgoKCgogIGtUaGVtZUxhYmVsRm9udCA9IDYsCiAga1RoZW1lU3lzdGVt
Rm9udERldGFpbCA9IDcsCiAga1RoZW1lU3lzdGVtRm9udERldGFpbEVtcGhhc2l6ZWQgPSA4LAoK
CgoKCiAga1RoZW1lTWVudVRpdGxlRm9udCA9IDEwMCwKCgoKCgogIGtUaGVtZU1lbnVJdGVtRm9u
dCA9IDEwMSwKCgoKCgogIGtUaGVtZU1lbnVJdGVtTWFya0ZvbnQgPSAxMDIsCgoKCgoKICBrVGhl
bWVNZW51SXRlbUNtZEtleUZvbnQgPSAxMDMsCgoKCgoKICBrVGhlbWVXaW5kb3dUaXRsZUZvbnQg
PSAxMDQsCgoKCgoKICBrVGhlbWVQdXNoQnV0dG9uRm9udCA9IDEwNSwKCgoKCgogIGtUaGVtZVV0
aWxpdHlXaW5kb3dUaXRsZUZvbnQgPSAxMDYsCgoKCgoKICBrVGhlbWVBbGVydEhlYWRlckZvbnQg
PSAxMDcsCgoKCgoKICBrVGhlbWVUb29sYmFyRm9udCA9IDEwOCwKCgoKCgogIGtUaGVtZU1pbmlT
eXN0ZW1Gb250ID0gMTA5LAojIDk5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJh
bmNlLmgiIDMKICBrVGhlbWVDdXJyZW50UG9ydEZvbnQgPSAyMDAsCiMgMTAwNSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKICBrVGhlbWVTcGVjaWZpZWRGb250ID0g
MjAxCn07CgoKZW51bSB7CiAga1B1YmxpY1RoZW1lRm9udENvdW50ID0gMjEKfTsKCnR5cGVkZWYg
VUludDE2IFRoZW1lRm9udElEOwoKCgplbnVtIHsKICBrVGhlbWVUYWJOb25Gcm9udCA9IDAsCiAg
a1RoZW1lVGFiTm9uRnJvbnRQcmVzc2VkID0gMSwKICBrVGhlbWVUYWJOb25Gcm9udEluYWN0aXZl
ID0gMiwKICBrVGhlbWVUYWJGcm9udCA9IDMsCiAga1RoZW1lVGFiRnJvbnRJbmFjdGl2ZSA9IDQs
CiAga1RoZW1lVGFiTm9uRnJvbnRVbmF2YWlsYWJsZSA9IDUsCiAga1RoZW1lVGFiRnJvbnRVbmF2
YWlsYWJsZSA9IDYKfTsKCnR5cGVkZWYgVUludDE2IFRoZW1lVGFiU3R5bGU7CmVudW0gewogIGtU
aGVtZVRhYk5vcnRoID0gMCwKICBrVGhlbWVUYWJTb3V0aCA9IDEsCiAga1RoZW1lVGFiRWFzdCA9
IDIsCiAga1RoZW1lVGFiV2VzdCA9IDMKfTsKCnR5cGVkZWYgVUludDE2IFRoZW1lVGFiRGlyZWN0
aW9uOwojIDEwNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCmVu
dW0gewoKCgoKICBrVGhlbWVTbWFsbFRhYkhlaWdodCA9IDE2LAoKCgoKICBrVGhlbWVMYXJnZVRh
YkhlaWdodCA9IDIxLAoKCgoKICBrVGhlbWVUYWJQYW5lT3ZlcmxhcCA9IDMsCgoKCgoKICBrVGhl
bWVTbWFsbFRhYkhlaWdodE1heCA9IDE5LAoKCgoKCiAga1RoZW1lTGFyZ2VUYWJIZWlnaHRNYXgg
PSAyNAp9OwoKCgoKCgplbnVtIHsKCgoKCgogIGtUaGVtZVNjcm9sbEJhck1lZGl1bSA9IDAsCgoK
CgoKICBrVGhlbWVTY3JvbGxCYXJTbWFsbCA9IDEsCgoKCgoKICBrVGhlbWVTbGlkZXJNZWRpdW0g
PSAyLAoKCgoKCiAga1RoZW1lUHJvZ3Jlc3NCYXJNZWRpdW0gPSAzLAoKCgoKCiAga1RoZW1lSW5k
ZXRlcm1pbmF0ZUJhck1lZGl1bSA9IDQsCgoKCgoKICBrVGhlbWVSZWxldmFuY2VCYXIgPSA1LAoK
CgoKCiAga1RoZW1lU2xpZGVyU21hbGwgPSA2LAoKCgoKCiAga1RoZW1lUHJvZ3Jlc3NCYXJMYXJn
ZSA9IDcsCgoKCgoKICBrVGhlbWVJbmRldGVybWluYXRlQmFyTGFyZ2UgPSA4Cn07CgoKCgoKCgpl
bnVtIHsKCgoKCiAga1RoZW1lU2Nyb2xsQmFyTWluaSA9IDksCgoKCgogIGtUaGVtZVNsaWRlck1p
bmkgPSAxMCwKCgoKCiAga1RoZW1lUHJvZ3Jlc3NCYXJNaW5pID0gMTEsCgoKCgogIGtUaGVtZUlu
ZGV0ZXJtaW5hdGVCYXJNaW5pID0gMTIKfTsKCgoKCgoKCmVudW0gewogIGtUaGVtZU1lZGl1bVNj
cm9sbEJhciA9IGtUaGVtZVNjcm9sbEJhck1lZGl1bSwKICBrVGhlbWVTbWFsbFNjcm9sbEJhciA9
IGtUaGVtZVNjcm9sbEJhclNtYWxsLAogIGtUaGVtZU1lZGl1bVNsaWRlciA9IGtUaGVtZVNsaWRl
ck1lZGl1bSwKICBrVGhlbWVNZWRpdW1Qcm9ncmVzc0JhciA9IGtUaGVtZVByb2dyZXNzQmFyTWVk
aXVtLAogIGtUaGVtZU1lZGl1bUluZGV0ZXJtaW5hdGVCYXIgPSBrVGhlbWVJbmRldGVybWluYXRl
QmFyTWVkaXVtLAogIGtUaGVtZVNtYWxsU2xpZGVyID0ga1RoZW1lU2xpZGVyU21hbGwsCiAga1Ro
ZW1lTGFyZ2VQcm9ncmVzc0JhciA9IGtUaGVtZVByb2dyZXNzQmFyTGFyZ2UsCiAga1RoZW1lTGFy
Z2VJbmRldGVybWluYXRlQmFyID0ga1RoZW1lSW5kZXRlcm1pbmF0ZUJhckxhcmdlLAogIGtUaGVt
ZU1pbmlTY3JvbGxCYXIgPSBrVGhlbWVTY3JvbGxCYXJNaW5pLAogIGtUaGVtZU1pbmlTbGlkZXIg
PSBrVGhlbWVTbGlkZXJNaW5pLAogIGtUaGVtZU1pbmlQcm9ncmVzc0JhciA9IGtUaGVtZVByb2dy
ZXNzQmFyTWluaSwKICBrVGhlbWVNaW5pSW5kZXRlcm1pbmF0ZUJhciA9IGtUaGVtZUluZGV0ZXJt
aW5hdGVCYXJNaW5pCn07Cgp0eXBlZGVmIFVJbnQxNiBUaGVtZVRyYWNrS2luZDsKCgoKZW51bSB7
CgogIGtUaGVtZVRyYWNrQWN0aXZlID0gMCwKICBrVGhlbWVUcmFja0Rpc2FibGVkID0gMSwKICBr
VGhlbWVUcmFja05vdGhpbmdUb1Njcm9sbCA9IDIsCiAga1RoZW1lVHJhY2tJbmFjdGl2ZSA9IDMK
fTsKCnR5cGVkZWYgVUludDggVGhlbWVUcmFja0VuYWJsZVN0YXRlOwoKCgplbnVtIHsKCiAga1Ro
ZW1lTGVmdE91dHNpZGVBcnJvd1ByZXNzZWQgPSAweDAxLAogIGtUaGVtZUxlZnRJbnNpZGVBcnJv
d1ByZXNzZWQgPSAweDAyLAogIGtUaGVtZUxlZnRUcmFja1ByZXNzZWQgPSAweDA0LAogIGtUaGVt
ZVRodW1iUHJlc3NlZCA9IDB4MDgsCiAga1RoZW1lUmlnaHRUcmFja1ByZXNzZWQgPSAweDEwLAog
IGtUaGVtZVJpZ2h0SW5zaWRlQXJyb3dQcmVzc2VkID0gMHgyMCwKICBrVGhlbWVSaWdodE91dHNp
ZGVBcnJvd1ByZXNzZWQgPSAweDQwLAogIGtUaGVtZVRvcE91dHNpZGVBcnJvd1ByZXNzZWQgPSBr
VGhlbWVMZWZ0T3V0c2lkZUFycm93UHJlc3NlZCwKICBrVGhlbWVUb3BJbnNpZGVBcnJvd1ByZXNz
ZWQgPSBrVGhlbWVMZWZ0SW5zaWRlQXJyb3dQcmVzc2VkLAogIGtUaGVtZVRvcFRyYWNrUHJlc3Nl
ZCA9IGtUaGVtZUxlZnRUcmFja1ByZXNzZWQsCiAga1RoZW1lQm90dG9tVHJhY2tQcmVzc2VkID0g
a1RoZW1lUmlnaHRUcmFja1ByZXNzZWQsCiAga1RoZW1lQm90dG9tSW5zaWRlQXJyb3dQcmVzc2Vk
ID0ga1RoZW1lUmlnaHRJbnNpZGVBcnJvd1ByZXNzZWQsCiAga1RoZW1lQm90dG9tT3V0c2lkZUFy
cm93UHJlc3NlZCA9IGtUaGVtZVJpZ2h0T3V0c2lkZUFycm93UHJlc3NlZAp9OwoKdHlwZWRlZiBV
SW50OCBUaGVtZVRyYWNrUHJlc3NTdGF0ZTsKCgoKZW51bSB7CgogIGtUaGVtZVRodW1iUGxhaW4g
PSAwLAogIGtUaGVtZVRodW1iVXB3YXJkID0gMSwKICBrVGhlbWVUaHVtYkRvd253YXJkID0gMgp9
OwoKdHlwZWRlZiBVSW50OCBUaGVtZVRodW1iRGlyZWN0aW9uOwojIDEyNDMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCmVudW0gewoKCgoKICBrVGhlbWVUcmFja0hv
cml6b250YWwgPSAoMSA8PCAwKSwKCgoKCiAga1RoZW1lVHJhY2tSaWdodFRvTGVmdCA9ICgxIDw8
IDEpLAoKCgoKICBrVGhlbWVUcmFja1Nob3dUaHVtYiA9ICgxIDw8IDIpLAoKCgoKICBrVGhlbWVU
cmFja1RodW1iUmduSXNOb3RHaG9zdCA9ICgxIDw8IDMpLAoKCgoKCiAga1RoZW1lVHJhY2tOb1Nj
cm9sbEJhckFycm93cyA9ICgxIDw8IDQpLAoKCgoKCiAga1RoZW1lVHJhY2tIYXNGb2N1cyA9ICgx
IDw8IDUpLAoKCgoKCgogIGtUaGVtZVRyYWNrSGlkZVRyYWNrID0gKDEgPDwgNikKfTsKCnR5cGVk
ZWYgVUludDE2IFRoZW1lVHJhY2tBdHRyaWJ1dGVzOwojIDEyOTcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCnN0cnVjdCBTY3JvbGxCYXJUcmFja0luZm8gewoKCgoK
ICBTSW50MzIgdmlld3NpemU7CgoKCgogIFRoZW1lVHJhY2tQcmVzc1N0YXRlIHByZXNzU3RhdGU7
Cn07CnR5cGVkZWYgc3RydWN0IFNjcm9sbEJhclRyYWNrSW5mbyBTY3JvbGxCYXJUcmFja0luZm87
CiMgMTMyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKc3RydWN0
IFNsaWRlclRyYWNrSW5mbyB7CgoKCgogIFRoZW1lVGh1bWJEaXJlY3Rpb24gdGh1bWJEaXI7CgoK
CgogIFRoZW1lVHJhY2tQcmVzc1N0YXRlIHByZXNzU3RhdGU7Cn07CnR5cGVkZWYgc3RydWN0IFNs
aWRlclRyYWNrSW5mbyBTbGlkZXJUcmFja0luZm87CiMgMTM0NSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKc3RydWN0IFByb2dyZXNzVHJhY2tJbmZvIHsKCgoKCiAg
VUludDggcGhhc2U7Cn07CnR5cGVkZWYgc3RydWN0IFByb2dyZXNzVHJhY2tJbmZvIFByb2dyZXNz
VHJhY2tJbmZvOwojIDEzNjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5o
IiAzCnN0cnVjdCBUaGVtZVRyYWNrRHJhd0luZm8gewoKCgoKICBUaGVtZVRyYWNrS2luZCBraW5k
OwoKCgoKICBSZWN0IGJvdW5kczsKCgoKCiAgU0ludDMyIG1pbjsKCgoKCiAgU0ludDMyIG1heDsK
CgoKCiAgU0ludDMyIHZhbHVlOwoKCgoKICBVSW50MzIgcmVzZXJ2ZWQ7CgoKCgoKCiAgVGhlbWVU
cmFja0F0dHJpYnV0ZXMgYXR0cmlidXRlczsKCgoKCgogIFRoZW1lVHJhY2tFbmFibGVTdGF0ZSBl
bmFibGVTdGF0ZTsKCgoKCiAgVUludDggZmlsbGVyMTsKCiAgdW5pb24gewogICAgU2Nyb2xsQmFy
VHJhY2tJbmZvIHNjcm9sbGJhcjsKICAgIFNsaWRlclRyYWNrSW5mbyBzbGlkZXI7CiAgICBQcm9n
cmVzc1RyYWNrSW5mbyBwcm9ncmVzczsKICB9IHRyYWNrSW5mbzsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
VGhlbWVUcmFja0RyYXdJbmZvIFRoZW1lVHJhY2tEcmF3SW5mbzsKIyAxNDMwICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwplbnVtIHsKCgoKCgogIGtUaGVtZVdpbmRv
d0hhc0dyb3cgPSAoMSA8PCAwKSwKCgoKCgogIGtUaGVtZVdpbmRvd0hhc0hvcml6b250YWxab29t
ID0gKDEgPDwgMyksCgoKCgoKICBrVGhlbWVXaW5kb3dIYXNWZXJ0aWNhbFpvb20gPSAoMSA8PCA0
KSwKCgoKCgogIGtUaGVtZVdpbmRvd0hhc0Z1bGxab29tID0ga1RoZW1lV2luZG93SGFzSG9yaXpv
bnRhbFpvb20gKyBrVGhlbWVXaW5kb3dIYXNWZXJ0aWNhbFpvb20sCgoKCgoKICBrVGhlbWVXaW5k
b3dIYXNDbG9zZUJveCA9ICgxIDw8IDUpLAoKCgoKCiAga1RoZW1lV2luZG93SGFzQ29sbGFwc2VC
b3ggPSAoMSA8PCA2KSwKCgoKCiAga1RoZW1lV2luZG93SGFzVGl0bGVUZXh0ID0gKDEgPDwgNyks
CgoKCgogIGtUaGVtZVdpbmRvd0lzQ29sbGFwc2VkID0gKDEgPDwgOCksCgoKCgoKCgogIGtUaGVt
ZVdpbmRvd0hhc0RpcnR5ID0gKDEgPDwgOSksCgoKCgogIGtUaGVtZVdpbmRvd0hhc1Rvb2xiYXJC
dXR0b24gPSAoMSA8PCAxMSkKfTsKCgp0eXBlZGVmIFVJbnQzMiBUaGVtZVdpbmRvd0F0dHJpYnV0
ZXM7CiMgMTUwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKZW51
bSB7CiAga1RoZW1lRG9jdW1lbnRXaW5kb3cgPSAwLAogIGtUaGVtZURpYWxvZ1dpbmRvdyA9IDEs
CiAga1RoZW1lTW92YWJsZURpYWxvZ1dpbmRvdyA9IDIsCiAga1RoZW1lQWxlcnRXaW5kb3cgPSAz
LAogIGtUaGVtZU1vdmFibGVBbGVydFdpbmRvdyA9IDQsCiAga1RoZW1lUGxhaW5EaWFsb2dXaW5k
b3cgPSA1LAogIGtUaGVtZVNoYWRvd0RpYWxvZ1dpbmRvdyA9IDYsCiAga1RoZW1lUG9wdXBXaW5k
b3cgPSA3LAogIGtUaGVtZVV0aWxpdHlXaW5kb3cgPSA4LAogIGtUaGVtZVV0aWxpdHlTaWRlV2lu
ZG93ID0gOSwKICBrVGhlbWVTaGVldFdpbmRvdyA9IDEwLAogIGtUaGVtZURyYXdlcldpbmRvdyA9
IDExCn07Cgp0eXBlZGVmIFVJbnQxNiBUaGVtZVdpbmRvd1R5cGU7CiMgMTUyNiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKZW51bSB7CiAga1RoZW1lV2lkZ2V0Q2xv
c2VCb3ggPSAwLAogIGtUaGVtZVdpZGdldFpvb21Cb3ggPSAxLAogIGtUaGVtZVdpZGdldENvbGxh
cHNlQm94ID0gMiwKICBrVGhlbWVXaWRnZXREaXJ0eUNsb3NlQm94ID0gNgp9OwoKZW51bSB7Cgog
IGtUaGVtZVdpZGdldEFCb3ggPSAzLAogIGtUaGVtZVdpZGdldEJCb3ggPSA0LAogIGtUaGVtZVdp
ZGdldEJPZmZCb3ggPSA1Cn07Cgp0eXBlZGVmIFVJbnQxNiBUaGVtZVRpdGxlQmFyV2lkZ2V0Owoj
IDE1NDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCmVudW0gewog
IGtUaGVtZUFycm93TGVmdCA9IDAsCiAga1RoZW1lQXJyb3dEb3duID0gMSwKICBrVGhlbWVBcnJv
d1JpZ2h0ID0gMiwKICBrVGhlbWVBcnJvd1VwID0gMwp9OwoKdHlwZWRlZiBVSW50MTYgVGhlbWVB
cnJvd09yaWVudGF0aW9uOwojIDE1NjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFy
YW5jZS5oIiAzCmVudW0gewogIGtUaGVtZUFycm93M3B0ID0gMCwKICBrVGhlbWVBcnJvdzVwdCA9
IDEsCiAga1RoZW1lQXJyb3c3cHQgPSAyLAogIGtUaGVtZUFycm93OXB0ID0gMwp9OwoKdHlwZWRl
ZiBVSW50MTYgVGhlbWVQb3B1cEFycm93U2l6ZTsKIyAxNTgxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwplbnVtIHsKICBrVGhlbWVHcm93TGVmdCA9ICgxIDw8IDAp
LAogIGtUaGVtZUdyb3dSaWdodCA9ICgxIDw8IDEpLAogIGtUaGVtZUdyb3dVcCA9ICgxIDw8IDIp
LAogIGtUaGVtZUdyb3dEb3duID0gKDEgPDwgMykKfTsKCnR5cGVkZWYgVUludDE2IFRoZW1lR3Jv
d0RpcmVjdGlvbjsKCgoKCgplbnVtIHsKIyAxNjA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0FwcGVhcmFuY2UuaCIgMwogIGtUaGVtZVB1c2hCdXR0b24gPSAwLAogIGtUaGVtZUNoZWNrQm94
ID0gMSwKICBrVGhlbWVSYWRpb0J1dHRvbiA9IDIsCgoKCgogIGtUaGVtZUJldmVsQnV0dG9uID0g
MywKCgoKCgoKCiAga1RoZW1lQXJyb3dCdXR0b24gPSA0LAojIDE2MjkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCiAga1RoZW1lUG9wdXBCdXR0b24gPSA1LAoKCgoK
CiAga1RoZW1lRGlzY2xvc3VyZVRyaWFuZ2xlID0gNiwKCgoKCgogIGtUaGVtZUluY0RlY0J1dHRv
biA9IDcsCgoKCgogIGtUaGVtZUJldmVsQnV0dG9uU21hbGwgPSA4LAoKCgoKICBrVGhlbWVCZXZl
bEJ1dHRvbk1lZGl1bSA9IDMsCgoKCgogIGtUaGVtZUJldmVsQnV0dG9uTGFyZ2UgPSA5LAoKCgoK
CiAga1RoZW1lTGlzdEhlYWRlckJ1dHRvbiA9IDEwLAoKCgoKCiAga1RoZW1lUm91bmRCdXR0b24g
PSAxMSwKCgoKCgogIGtUaGVtZVJvdW5kQnV0dG9uTGFyZ2UgPSAxMiwKCgoKCgogIGtUaGVtZUNo
ZWNrQm94U21hbGwgPSAxMywKCgoKCgogIGtUaGVtZVJhZGlvQnV0dG9uU21hbGwgPSAxNCwKCgoK
CgogIGtUaGVtZVJvdW5kZWRCZXZlbEJ1dHRvbiA9IDE1LAoKCgoKCiAga1RoZW1lQ29tYm9Cb3gg
PSAxNiwKCgoKCgogIGtUaGVtZUNvbWJvQm94U21hbGwgPSAxNwp9OwoKCgoKCgplbnVtIHsKCgoK
CgogIGtUaGVtZUNvbWJvQm94TWluaSA9IDE4LAoKCgoKCiAga1RoZW1lQ2hlY2tCb3hNaW5pID0g
MTksCgoKCgoKICBrVGhlbWVSYWRpb0J1dHRvbk1pbmkgPSAyMCwKCgoKCgogIGtUaGVtZUluY0Rl
Y0J1dHRvblNtYWxsID0gMjEsCgoKCgoKICBrVGhlbWVJbmNEZWNCdXR0b25NaW5pID0gMjIsCgoK
CgoKCiAga1RoZW1lQXJyb3dCdXR0b25TbWFsbCA9IDIzLAoKCgoKCgogIGtUaGVtZUFycm93QnV0
dG9uTWluaSA9IDI0LAojIDE3NjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5j
ZS5oIiAzCiAga1RoZW1lUHVzaEJ1dHRvbk5vcm1hbCA9IDI1LAojIDE3NzQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCiAga1RoZW1lUHVzaEJ1dHRvblNtYWxsID0g
MjYsCiMgMTc4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKICBr
VGhlbWVQdXNoQnV0dG9uTWluaSA9IDI3LAojIDE3OTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvQXBwZWFyYW5jZS5oIiAzCiAga1RoZW1lUG9wdXBCdXR0b25Ob3JtYWwgPSAyOCwKIyAxODA0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwogIGtUaGVtZVBvcHVw
QnV0dG9uU21hbGwgPSAyOSwKIyAxODE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVh
cmFuY2UuaCIgMwogIGtUaGVtZVBvcHVwQnV0dG9uTWluaSA9IDMwCn07CgoKCgoKCmVudW0gewoK
CgoKCiAga1RoZW1lQmV2ZWxCdXR0b25JbnNldCA9IDMxLAoKCgoKCgogIGtUaGVtZVB1c2hCdXR0
b25UZXh0dXJlZCA9IDMyLAoKCgoKCgogIGtUaGVtZVB1c2hCdXR0b25UZXh0dXJlZFNtYWxsID0g
MzMsCgoKCgoKICBrVGhlbWVSb3VuZEJ1dHRvbkhlbHAgPSAzNCwKCgoKCgogIGtUaGVtZVB1c2hC
dXR0b25JbnNldCA9IGtUaGVtZVB1c2hCdXR0b25UZXh0dXJlZCwKCgoKCgogIGtUaGVtZVB1c2hC
dXR0b25JbnNldFNtYWxsID0ga1RoZW1lUHVzaEJ1dHRvblRleHR1cmVkU21hbGwKfTsKIyAxODcy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwplbnVtIHsKICBrVGhl
bWVOb3JtYWxDaGVja0JveCA9IGtUaGVtZUNoZWNrQm94LAogIGtUaGVtZU5vcm1hbFJhZGlvQnV0
dG9uID0ga1RoZW1lUmFkaW9CdXR0b24sCiAga1RoZW1lTGFyZ2VCZXZlbEJ1dHRvbiA9IGtUaGVt
ZUJldmVsQnV0dG9uTGFyZ2UsCiAga1RoZW1lTWVkaXVtQmV2ZWxCdXR0b24gPSBrVGhlbWVCZXZl
bEJ1dHRvbk1lZGl1bSwKICBrVGhlbWVNaW5pQ2hlY2tCb3ggPSBrVGhlbWVDaGVja0JveE1pbmks
CiAga1RoZW1lTWluaVJhZGlvQnV0dG9uID0ga1RoZW1lUmFkaW9CdXR0b25NaW5pLAogIGtUaGVt
ZVNtYWxsQmV2ZWxCdXR0b24gPSBrVGhlbWVCZXZlbEJ1dHRvblNtYWxsLAogIGtUaGVtZVNtYWxs
Q2hlY2tCb3ggPSBrVGhlbWVDaGVja0JveFNtYWxsLAogIGtUaGVtZVNtYWxsUmFkaW9CdXR0b24g
PSBrVGhlbWVSYWRpb0J1dHRvblNtYWxsLAogIGtUaGVtZUxhcmdlUm91bmRCdXR0b24gPSBrVGhl
bWVSb3VuZEJ1dHRvbkxhcmdlLAogIGtUaGVtZURpc2Nsb3N1cmVCdXR0b24gPSBrVGhlbWVEaXNj
bG9zdXJlVHJpYW5nbGUKfTsKCnR5cGVkZWYgVUludDE2IFRoZW1lQnV0dG9uS2luZDsKIyAxODk1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwplbnVtIHsKICBrVGhl
bWVCdXR0b25PZmYgPSAwLAogIGtUaGVtZUJ1dHRvbk9uID0gMSwKICBrVGhlbWVCdXR0b25NaXhl
ZCA9IDIsCiAga1RoZW1lRGlzY2xvc3VyZVJpZ2h0ID0gMCwKICBrVGhlbWVEaXNjbG9zdXJlRG93
biA9IDEsCiAga1RoZW1lRGlzY2xvc3VyZUxlZnQgPSAyCn07Cgp0eXBlZGVmIFVJbnQxNiBUaGVt
ZUJ1dHRvblZhbHVlOwojIDE5MTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5j
ZS5oIiAzCmVudW0gewoKCgoKICBrVGhlbWVBZG9ybm1lbnROb25lID0gMCwKCgoKCiAga1RoZW1l
QWRvcm5tZW50RGVmYXVsdCA9ICgxIDw8IDApLAoKCgoKICBrVGhlbWVBZG9ybm1lbnRGb2N1cyA9
ICgxIDw8IDIpLAoKCgoKICBrVGhlbWVBZG9ybm1lbnRSaWdodFRvTGVmdCA9ICgxIDw8IDQpLAoK
CgoKICBrVGhlbWVBZG9ybm1lbnREcmF3SW5kaWNhdG9yT25seSA9ICgxIDw8IDUpLAoKCgoKCiAg
a1RoZW1lQWRvcm5tZW50SGVhZGVyQnV0dG9uTGVmdE5laWdoYm9yU2VsZWN0ZWQgPSAoMSA8PCA2
KSwKCgoKCiAga1RoZW1lQWRvcm5tZW50SGVhZGVyQnV0dG9uUmlnaHROZWlnaGJvclNlbGVjdGVk
ID0gKDEgPDwgNyksCgoKCgogIGtUaGVtZUFkb3JubWVudEhlYWRlckJ1dHRvblNvcnRVcCA9ICgx
IDw8IDgpLAoKCgoKICBrVGhlbWVBZG9ybm1lbnRIZWFkZXJNZW51QnV0dG9uID0gKDEgPDwgOSks
CgoKCgogIGtUaGVtZUFkb3JubWVudEhlYWRlckJ1dHRvbk5vU2hhZG93ID0gKDEgPDwgMTApLAoK
CgoKCiAga1RoZW1lQWRvcm5tZW50SGVhZGVyQnV0dG9uU2hhZG93T25seSA9ICgxIDw8IDExKSwK
CgoKCgogIGtUaGVtZUFkb3JubWVudEhlYWRlckJ1dHRvbk5vU29ydEFycm93ID0gKDEgPDwgMTIp
LAoKCgoKCgogIGtUaGVtZUFkb3JubWVudEFycm93TGVmdEFycm93ID0gKDEgPDwgNiksCgoKCgoK
CiAga1RoZW1lQWRvcm5tZW50QXJyb3dEb3duQXJyb3cgPSAoMSA8PCA3KSwKCgoKCiAga1RoZW1l
QWRvcm5tZW50QXJyb3dEb3VibGVBcnJvdyA9ICgxIDw8IDgpLAoKCgoKICBrVGhlbWVBZG9ybm1l
bnRBcnJvd1VwQXJyb3cgPSAoMSA8PCA5KSwKCgoKCgoKICBrVGhlbWVBZG9ybm1lbnRBcnJvd1Jp
Z2h0QXJyb3cgPSAoMSA8PCAxMCkKfTsKCgoKCgoKCmVudW0gewogIGtUaGVtZUFkb3JubWVudE5v
U2hhZG93ID0ga1RoZW1lQWRvcm5tZW50SGVhZGVyQnV0dG9uTm9TaGFkb3csCiAga1RoZW1lQWRv
cm5tZW50U2hhZG93T25seSA9IGtUaGVtZUFkb3JubWVudEhlYWRlckJ1dHRvblNoYWRvd09ubHkK
fTsKCnR5cGVkZWYgVUludDE2IFRoZW1lQnV0dG9uQWRvcm5tZW50OwojIDIwMzYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCnN0cnVjdCBUaGVtZUJ1dHRvbkRyYXdJ
bmZvIHsKCgoKCiAgVGhlbWVEcmF3U3RhdGUgc3RhdGU7CgoKCgogIFRoZW1lQnV0dG9uVmFsdWUg
dmFsdWU7CgoKCgoKICBUaGVtZUJ1dHRvbkFkb3JubWVudCBhZG9ybm1lbnQ7Cn07CnR5cGVkZWYg
c3RydWN0IFRoZW1lQnV0dG9uRHJhd0luZm8gVGhlbWVCdXR0b25EcmF3SW5mbzsKdHlwZWRlZiBU
aGVtZUJ1dHRvbkRyYXdJbmZvICogVGhlbWVCdXR0b25EcmF3SW5mb1B0cjsKIyAyMDY3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwplbnVtIHsKICBrVGhlbWVOb1Nv
dW5kcyA9IDAsCiAga1RoZW1lV2luZG93U291bmRzTWFzayA9ICgxIDw8IDApLAogIGtUaGVtZU1l
bnVTb3VuZHNNYXNrID0gKDEgPDwgMSksCiAga1RoZW1lQ29udHJvbFNvdW5kc01hc2sgPSAoMSA8
PCAyKSwKICBrVGhlbWVGaW5kZXJTb3VuZHNNYXNrID0gKDEgPDwgMykKfTsKIyAyMDg4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwplbnVtIHsKICBrVGhlbWVEcmFn
U291bmROb25lID0gMCwKICBrVGhlbWVEcmFnU291bmRNb3ZlV2luZG93ID0gJ3dtb3YnLAogIGtU
aGVtZURyYWdTb3VuZEdyb3dXaW5kb3cgPSAnd2dybycsCiAga1RoZW1lRHJhZ1NvdW5kTW92ZVV0
aWxXaW5kb3cgPSAndW1vdicsCiAga1RoZW1lRHJhZ1NvdW5kR3Jvd1V0aWxXaW5kb3cgPSAndWdy
bycsCiAga1RoZW1lRHJhZ1NvdW5kTW92ZURpYWxvZyA9ICdkbW92JywKICBrVGhlbWVEcmFnU291
bmRNb3ZlQWxlcnQgPSAnYW1vdicsCiAga1RoZW1lRHJhZ1NvdW5kTW92ZUljb24gPSAnaW1vdics
CiAga1RoZW1lRHJhZ1NvdW5kU2xpZGVyVGh1bWIgPSAnc2x0aCcsCiAga1RoZW1lRHJhZ1NvdW5k
U2xpZGVyR2hvc3QgPSAnc2xnaCcsCiAga1RoZW1lRHJhZ1NvdW5kU2Nyb2xsQmFyVGh1bWIgPSAn
c2J0aCcsCiAga1RoZW1lRHJhZ1NvdW5kU2Nyb2xsQmFyR2hvc3QgPSAnc2JnaCcsCiAga1RoZW1l
RHJhZ1NvdW5kU2Nyb2xsQmFyQXJyb3dEZWNyZWFzaW5nID0gJ3NiYWQnLAogIGtUaGVtZURyYWdT
b3VuZFNjcm9sbEJhckFycm93SW5jcmVhc2luZyA9ICdzYmFpJywKICBrVGhlbWVEcmFnU291bmRE
cmFnZ2luZyA9ICdkcmFnJwp9OwoKdHlwZWRlZiBPU1R5cGUgVGhlbWVEcmFnU291bmRLaW5kOwoj
IDIxMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCmVudW0gewog
IGtUaGVtZVNvdW5kTm9uZSA9IDAsCiAga1RoZW1lU291bmRNZW51T3BlbiA9ICdtbnVvJywKICBr
VGhlbWVTb3VuZE1lbnVDbG9zZSA9ICdtbnVjJywKICBrVGhlbWVTb3VuZE1lbnVJdGVtSGlsaXRl
ID0gJ21udWknLAogIGtUaGVtZVNvdW5kTWVudUl0ZW1SZWxlYXNlID0gJ21udXMnLAogIGtUaGVt
ZVNvdW5kV2luZG93Q2xvc2VQcmVzcyA9ICd3Y2xwJywKICBrVGhlbWVTb3VuZFdpbmRvd0Nsb3Nl
RW50ZXIgPSAnd2NsZScsCiAga1RoZW1lU291bmRXaW5kb3dDbG9zZUV4aXQgPSAnd2NseCcsCiAg
a1RoZW1lU291bmRXaW5kb3dDbG9zZVJlbGVhc2UgPSAnd2NscicsCiAga1RoZW1lU291bmRXaW5k
b3dab29tUHJlc3MgPSAnd3ptcCcsCiAga1RoZW1lU291bmRXaW5kb3dab29tRW50ZXIgPSAnd3pt
ZScsCiAga1RoZW1lU291bmRXaW5kb3dab29tRXhpdCA9ICd3em14JywKICBrVGhlbWVTb3VuZFdp
bmRvd1pvb21SZWxlYXNlID0gJ3d6bXInLAogIGtUaGVtZVNvdW5kV2luZG93Q29sbGFwc2VQcmVz
cyA9ICd3Y29wJywKICBrVGhlbWVTb3VuZFdpbmRvd0NvbGxhcHNlRW50ZXIgPSAnd2NvZScsCiAg
a1RoZW1lU291bmRXaW5kb3dDb2xsYXBzZUV4aXQgPSAnd2NveCcsCiAga1RoZW1lU291bmRXaW5k
b3dDb2xsYXBzZVJlbGVhc2UgPSAnd2NvcicsCiAga1RoZW1lU291bmRXaW5kb3dEcmFnQm91bmRh
cnkgPSAnd2RiZCcsCiAga1RoZW1lU291bmRVdGlsV2luQ2xvc2VQcmVzcyA9ICd1Y2xwJywKICBr
VGhlbWVTb3VuZFV0aWxXaW5DbG9zZUVudGVyID0gJ3VjbGUnLAogIGtUaGVtZVNvdW5kVXRpbFdp
bkNsb3NlRXhpdCA9ICd1Y2x4JywKICBrVGhlbWVTb3VuZFV0aWxXaW5DbG9zZVJlbGVhc2UgPSAn
dWNscicsCiAga1RoZW1lU291bmRVdGlsV2luWm9vbVByZXNzID0gJ3V6bXAnLAogIGtUaGVtZVNv
dW5kVXRpbFdpblpvb21FbnRlciA9ICd1em1lJywKICBrVGhlbWVTb3VuZFV0aWxXaW5ab29tRXhp
dCA9ICd1em14JywKICBrVGhlbWVTb3VuZFV0aWxXaW5ab29tUmVsZWFzZSA9ICd1em1yJywKICBr
VGhlbWVTb3VuZFV0aWxXaW5Db2xsYXBzZVByZXNzID0gJ3Vjb3AnLAogIGtUaGVtZVNvdW5kVXRp
bFdpbkNvbGxhcHNlRW50ZXIgPSAndWNvZScsCiAga1RoZW1lU291bmRVdGlsV2luQ29sbGFwc2VF
eGl0ID0gJ3Vjb3gnLAogIGtUaGVtZVNvdW5kVXRpbFdpbkNvbGxhcHNlUmVsZWFzZSA9ICd1Y29y
JywKICBrVGhlbWVTb3VuZFV0aWxXaW5EcmFnQm91bmRhcnkgPSAndWRiZCcsCiAga1RoZW1lU291
bmRXaW5kb3dPcGVuID0gJ3dvcG4nLAogIGtUaGVtZVNvdW5kV2luZG93Q2xvc2UgPSAnd2Nscycs
CiAga1RoZW1lU291bmRXaW5kb3dab29tSW4gPSAnd3ptaScsCiAga1RoZW1lU291bmRXaW5kb3da
b29tT3V0ID0gJ3d6bW8nLAogIGtUaGVtZVNvdW5kV2luZG93Q29sbGFwc2VVcCA9ICd3Y29sJywK
ICBrVGhlbWVTb3VuZFdpbmRvd0NvbGxhcHNlRG93biA9ICd3ZXhwJywKICBrVGhlbWVTb3VuZFdp
bmRvd0FjdGl2YXRlID0gJ3dhY3QnLAogIGtUaGVtZVNvdW5kVXRpbFdpbmRvd09wZW4gPSAndW9w
bicsCiAga1RoZW1lU291bmRVdGlsV2luZG93Q2xvc2UgPSAndWNscycsCiAga1RoZW1lU291bmRV
dGlsV2luZG93Wm9vbUluID0gJ3V6bWknLAogIGtUaGVtZVNvdW5kVXRpbFdpbmRvd1pvb21PdXQg
PSAndXptbycsCiAga1RoZW1lU291bmRVdGlsV2luZG93Q29sbGFwc2VVcCA9ICd1Y29sJywKICBr
VGhlbWVTb3VuZFV0aWxXaW5kb3dDb2xsYXBzZURvd24gPSAndWV4cCcsCiAga1RoZW1lU291bmRV
dGlsV2luZG93QWN0aXZhdGUgPSAndWFjdCcsCiAga1RoZW1lU291bmREaWFsb2dPcGVuID0gJ2Rv
cG4nLAogIGtUaGVtZVNvdW5kRGlhbG9nQ2xvc2UgPSAnZGxnYycsCiAga1RoZW1lU291bmRBbGVy
dE9wZW4gPSAnYW9wbicsCiAga1RoZW1lU291bmRBbGVydENsb3NlID0gJ2FsdGMnLAogIGtUaGVt
ZVNvdW5kUG9wdXBXaW5kb3dPcGVuID0gJ3B3b3AnLAogIGtUaGVtZVNvdW5kUG9wdXBXaW5kb3dD
bG9zZSA9ICdwd2NsJywKICBrVGhlbWVTb3VuZEJ1dHRvblByZXNzID0gJ2J0bnAnLAogIGtUaGVt
ZVNvdW5kQnV0dG9uRW50ZXIgPSAnYnRuZScsCiAga1RoZW1lU291bmRCdXR0b25FeGl0ID0gJ2J0
bngnLAogIGtUaGVtZVNvdW5kQnV0dG9uUmVsZWFzZSA9ICdidG5yJywKICBrVGhlbWVTb3VuZERl
ZmF1bHRCdXR0b25QcmVzcyA9ICdkYnRwJywKICBrVGhlbWVTb3VuZERlZmF1bHRCdXR0b25FbnRl
ciA9ICdkYnRlJywKICBrVGhlbWVTb3VuZERlZmF1bHRCdXR0b25FeGl0ID0gJ2RidHgnLAogIGtU
aGVtZVNvdW5kRGVmYXVsdEJ1dHRvblJlbGVhc2UgPSAnZGJ0cicsCiAga1RoZW1lU291bmRDYW5j
ZWxCdXR0b25QcmVzcyA9ICdjYnRwJywKICBrVGhlbWVTb3VuZENhbmNlbEJ1dHRvbkVudGVyID0g
J2NidGUnLAogIGtUaGVtZVNvdW5kQ2FuY2VsQnV0dG9uRXhpdCA9ICdjYnR4JywKICBrVGhlbWVT
b3VuZENhbmNlbEJ1dHRvblJlbGVhc2UgPSAnY2J0cicsCiAga1RoZW1lU291bmRDaGVja2JveFBy
ZXNzID0gJ2Noa3AnLAogIGtUaGVtZVNvdW5kQ2hlY2tib3hFbnRlciA9ICdjaGtlJywKICBrVGhl
bWVTb3VuZENoZWNrYm94RXhpdCA9ICdjaGt4JywKICBrVGhlbWVTb3VuZENoZWNrYm94UmVsZWFz
ZSA9ICdjaGtyJywKICBrVGhlbWVTb3VuZFJhZGlvUHJlc3MgPSAncmFkcCcsCiAga1RoZW1lU291
bmRSYWRpb0VudGVyID0gJ3JhZGUnLAogIGtUaGVtZVNvdW5kUmFkaW9FeGl0ID0gJ3JhZHgnLAog
IGtUaGVtZVNvdW5kUmFkaW9SZWxlYXNlID0gJ3JhZHInLAogIGtUaGVtZVNvdW5kU2Nyb2xsQXJy
b3dQcmVzcyA9ICdzYmFwJywKICBrVGhlbWVTb3VuZFNjcm9sbEFycm93RW50ZXIgPSAnc2JhZScs
CiAga1RoZW1lU291bmRTY3JvbGxBcnJvd0V4aXQgPSAnc2JheCcsCiAga1RoZW1lU291bmRTY3Jv
bGxBcnJvd1JlbGVhc2UgPSAnc2JhcicsCiAga1RoZW1lU291bmRTY3JvbGxFbmRPZlRyYWNrID0g
J3NidGUnLAogIGtUaGVtZVNvdW5kU2Nyb2xsVHJhY2tQcmVzcyA9ICdzYnRwJywKICBrVGhlbWVT
b3VuZFNsaWRlckVuZE9mVHJhY2sgPSAnc2x0ZScsCiAga1RoZW1lU291bmRTbGlkZXJUcmFja1By
ZXNzID0gJ3NsdHAnLAogIGtUaGVtZVNvdW5kQmFsbG9vbk9wZW4gPSAnYmxubycsCiAga1RoZW1l
U291bmRCYWxsb29uQ2xvc2UgPSAnYmxuYycsCiAga1RoZW1lU291bmRCZXZlbFByZXNzID0gJ2Jl
dnAnLAogIGtUaGVtZVNvdW5kQmV2ZWxFbnRlciA9ICdiZXZlJywKICBrVGhlbWVTb3VuZEJldmVs
RXhpdCA9ICdiZXZ4JywKICBrVGhlbWVTb3VuZEJldmVsUmVsZWFzZSA9ICdiZXZyJywKICBrVGhl
bWVTb3VuZExpdHRsZUFycm93VXBQcmVzcyA9ICdsYXVwJywKICBrVGhlbWVTb3VuZExpdHRsZUFy
cm93RG5QcmVzcyA9ICdsYWRwJywKICBrVGhlbWVTb3VuZExpdHRsZUFycm93RW50ZXIgPSAnbGFy
ZScsCiAga1RoZW1lU291bmRMaXR0bGVBcnJvd0V4aXQgPSAnbGFyeCcsCiAga1RoZW1lU291bmRM
aXR0bGVBcnJvd1VwUmVsZWFzZSA9ICdsYXVyJywKICBrVGhlbWVTb3VuZExpdHRsZUFycm93RG5S
ZWxlYXNlID0gJ2xhZHInLAogIGtUaGVtZVNvdW5kUG9wdXBQcmVzcyA9ICdwb3BwJywKICBrVGhl
bWVTb3VuZFBvcHVwRW50ZXIgPSAncG9wZScsCiAga1RoZW1lU291bmRQb3B1cEV4aXQgPSAncG9w
eCcsCiAga1RoZW1lU291bmRQb3B1cFJlbGVhc2UgPSAncG9wcicsCiAga1RoZW1lU291bmREaXNj
bG9zdXJlUHJlc3MgPSAnZHNjcCcsCiAga1RoZW1lU291bmREaXNjbG9zdXJlRW50ZXIgPSAnZHNj
ZScsCiAga1RoZW1lU291bmREaXNjbG9zdXJlRXhpdCA9ICdkc2N4JywKICBrVGhlbWVTb3VuZERp
c2Nsb3N1cmVSZWxlYXNlID0gJ2RzY3InLAogIGtUaGVtZVNvdW5kVGFiUHJlc3NlZCA9ICd0YWJw
JywKICBrVGhlbWVTb3VuZFRhYkVudGVyID0gJ3RhYmUnLAogIGtUaGVtZVNvdW5kVGFiRXhpdCA9
ICd0YWJ4JywKICBrVGhlbWVTb3VuZFRhYlJlbGVhc2UgPSAndGFicicsCiAga1RoZW1lU291bmRE
cmFnVGFyZ2V0SGlsaXRlID0gJ2R0aGknLAogIGtUaGVtZVNvdW5kRHJhZ1RhcmdldFVuaGlsaXRl
ID0gJ2R0dWgnLAogIGtUaGVtZVNvdW5kRHJhZ1RhcmdldERyb3AgPSAnZHRkcicsCiAga1RoZW1l
U291bmRFbXB0eVRyYXNoID0gJ2Z0cnMnLAogIGtUaGVtZVNvdW5kU2VsZWN0SXRlbSA9ICdmc2Vs
JywKICBrVGhlbWVTb3VuZE5ld0l0ZW0gPSAnZm5ldycsCiAga1RoZW1lU291bmRSZWNlaXZlRHJv
cCA9ICdmZHJwJywKICBrVGhlbWVTb3VuZENvcHlEb25lID0gJ2ZjcGQnLAogIGtUaGVtZVNvdW5k
UmVzb2x2ZUFsaWFzID0gJ2ZyYWwnLAogIGtUaGVtZVNvdW5kTGF1bmNoQXBwID0gJ2ZsYXAnLAog
IGtUaGVtZVNvdW5kRGlza0luc2VydCA9ICdkc2tpJywKICBrVGhlbWVTb3VuZERpc2tFamVjdCA9
ICdkc2tlJywKICBrVGhlbWVTb3VuZEZpbmRlckRyYWdPbkljb24gPSAnZmRvbicsCiAga1RoZW1l
U291bmRGaW5kZXJEcmFnT2ZmSWNvbiA9ICdmZG9mJwp9OwoKdHlwZWRlZiBPU1R5cGUgVGhlbWVT
b3VuZEtpbmQ7CiMgMjI1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgi
IDMKZW51bSB7CiAga1RoZW1lUG9wdXBUYWJOb3JtYWxQb3NpdGlvbiA9IDAsCiAga1RoZW1lUG9w
dXBUYWJDZW50ZXJPbldpbmRvdyA9IDEsCiAga1RoZW1lUG9wdXBUYWJDZW50ZXJPbk9mZnNldCA9
IDIKfTsKCnN0cnVjdCBUaGVtZVdpbmRvd01ldHJpY3MgewogIFVJbnQxNiBtZXRyaWNTaXplOwog
IFNJbnQxNiB0aXRsZUhlaWdodDsKICBTSW50MTYgdGl0bGVXaWR0aDsKICBTSW50MTYgcG9wdXBU
YWJPZmZzZXQ7CiAgU0ludDE2IHBvcHVwVGFiV2lkdGg7CiAgVUludDE2IHBvcHVwVGFiUG9zaXRp
b247Cn07CnR5cGVkZWYgc3RydWN0IFRoZW1lV2luZG93TWV0cmljcyBUaGVtZVdpbmRvd01ldHJp
Y3M7CnR5cGVkZWYgVGhlbWVXaW5kb3dNZXRyaWNzICogVGhlbWVXaW5kb3dNZXRyaWNzUHRyOwoK
Cgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVUaGVtZURyYXdpbmdTdGF0ZSogVGhlbWVEcmF3aW5nU3Rh
dGU7CiMgMjI4OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKdHlw
ZWRlZiB2b2lkICggKiBUaGVtZVRhYlRpdGxlRHJhd1Byb2NQdHIpKGNvbnN0IFJlY3QgKmJvdW5k
cywgVGhlbWVUYWJTdHlsZSBzdHlsZSwgVGhlbWVUYWJEaXJlY3Rpb24gZGlyZWN0aW9uLCBTSW50
MTYgZGVwdGgsIEJvb2xlYW4gaXNDb2xvckRldiwgVVJlZkNvbiB1c2VyRGF0YSk7CiMgMjI5OCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKdHlwZWRlZiB2b2lkICgg
KiBUaGVtZUVyYXNlUHJvY1B0cikoY29uc3QgUmVjdCAqYm91bmRzLCBVUmVmQ29uIGVyYXNlRGF0
YSwgU0ludDE2IGRlcHRoLCBCb29sZWFuIGlzQ29sb3JEZXYpOwoKCgoKCgoKdHlwZWRlZiB2b2lk
ICggKiBUaGVtZUJ1dHRvbkRyYXdQcm9jUHRyKShjb25zdCBSZWN0ICpib3VuZHMsIFRoZW1lQnV0
dG9uS2luZCBraW5kLCBjb25zdCBUaGVtZUJ1dHRvbkRyYXdJbmZvICppbmZvLCBVUmVmQ29uIHVz
ZXJEYXRhLCBTSW50MTYgZGVwdGgsIEJvb2xlYW4gaXNDb2xvckRldik7CgoKCgoKCgp0eXBlZGVm
IHZvaWQgKCAqIFdpbmRvd1RpdGxlRHJhd2luZ1Byb2NQdHIpKGNvbnN0IFJlY3QgKmJvdW5kcywg
U0ludDE2IGRlcHRoLCBCb29sZWFuIGNvbG9yRGV2aWNlLCBVUmVmQ29uIHVzZXJEYXRhKTsKCgoK
CgoKCnR5cGVkZWYgQm9vbGVhbiAoICogVGhlbWVJdGVyYXRvclByb2NQdHIpKENvbnN0U3RyMjU1
UGFyYW0gaW5GaWxlTmFtZSwgU0ludDE2IHJlc0lELCBDb2xsZWN0aW9uIGluVGhlbWVTZXR0aW5n
cywgUFJlZkNvbiBpblVzZXJEYXRhKTsKdHlwZWRlZiBUaGVtZVRhYlRpdGxlRHJhd1Byb2NQdHIg
VGhlbWVUYWJUaXRsZURyYXdVUFA7CnR5cGVkZWYgVGhlbWVFcmFzZVByb2NQdHIgVGhlbWVFcmFz
ZVVQUDsKdHlwZWRlZiBUaGVtZUJ1dHRvbkRyYXdQcm9jUHRyIFRoZW1lQnV0dG9uRHJhd1VQUDsK
dHlwZWRlZiBXaW5kb3dUaXRsZURyYXdpbmdQcm9jUHRyIFdpbmRvd1RpdGxlRHJhd2luZ1VQUDsK
dHlwZWRlZiBUaGVtZUl0ZXJhdG9yUHJvY1B0ciBUaGVtZUl0ZXJhdG9yVVBQOwojIDIzMzYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCmV4dGVybiBUaGVtZVRhYlRp
dGxlRHJhd1VQUApOZXdUaGVtZVRhYlRpdGxlRHJhd1VQUChUaGVtZVRhYlRpdGxlRHJhd1Byb2NQ
dHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyMzQ3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwpleHRlcm4gVGhlbWVFcmFzZVVQ
UApOZXdUaGVtZUVyYXNlVVBQKFRoZW1lRXJhc2VQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjM1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9B
cHBlYXJhbmNlLmgiIDMKZXh0ZXJuIFRoZW1lQnV0dG9uRHJhd1VQUApOZXdUaGVtZUJ1dHRvbkRy
YXdVUFAoVGhlbWVCdXR0b25EcmF3UHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDIzNjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5j
ZS5oIiAzCmV4dGVybiBXaW5kb3dUaXRsZURyYXdpbmdVUFAKTmV3V2luZG93VGl0bGVEcmF3aW5n
VVBQKFdpbmRvd1RpdGxlRHJhd2luZ1Byb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKIyAyMzgwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVhcmFu
Y2UuaCIgMwpleHRlcm4gVGhlbWVJdGVyYXRvclVQUApOZXdUaGVtZUl0ZXJhdG9yVVBQKFRoZW1l
SXRlcmF0b3JQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CiMgMjM5MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKZXh0ZXJu
IHZvaWQKRGlzcG9zZVRoZW1lVGFiVGl0bGVEcmF3VVBQKFRoZW1lVGFiVGl0bGVEcmF3VVBQIHVz
ZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyNDAyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlVGhlbWVFcmFz
ZVVQUChUaGVtZUVyYXNlVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsK
IyAyNDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwpleHRlcm4g
dm9pZApEaXNwb3NlVGhlbWVCdXR0b25EcmF3VVBQKFRoZW1lQnV0dG9uRHJhd1VQUCB1c2VyVVBQ
KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjQyNCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVdpbmRvd1RpdGxlRHJh
d2luZ1VQUChXaW5kb3dUaXRsZURyYXdpbmdVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwojIDI0MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5o
IiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VUaGVtZUl0ZXJhdG9yVVBQKFRoZW1lSXRlcmF0b3JVUFAg
dXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDI0NDYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCmV4dGVybiB2b2lkCkludm9rZVRoZW1lVGFi
VGl0bGVEcmF3VVBQKAogIGNvbnN0IFJlY3QgKiBib3VuZHMsCiAgVGhlbWVUYWJTdHlsZSBzdHls
ZSwKICBUaGVtZVRhYkRpcmVjdGlvbiBkaXJlY3Rpb24sCiAgU0ludDE2IGRlcHRoLAogIEJvb2xl
YW4gaXNDb2xvckRldiwKICBVUmVmQ29uIHVzZXJEYXRhLAogIFRoZW1lVGFiVGl0bGVEcmF3VVBQ
IHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyNDY0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwpleHRlcm4gdm9pZApJbnZva2VUaGVtZUVy
YXNlVVBQKAogIGNvbnN0IFJlY3QgKiBib3VuZHMsCiAgVVJlZkNvbiBlcmFzZURhdGEsCiAgU0lu
dDE2IGRlcHRoLAogIEJvb2xlYW4gaXNDb2xvckRldiwKICBUaGVtZUVyYXNlVVBQIHVzZXJVUFAp
IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyNDgwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwpleHRlcm4gdm9pZApJbnZva2VUaGVtZUJ1dHRvbkRyYXdV
UFAoCiAgY29uc3QgUmVjdCAqIGJvdW5kcywKICBUaGVtZUJ1dHRvbktpbmQga2luZCwKICBjb25z
dCBUaGVtZUJ1dHRvbkRyYXdJbmZvICogaW5mbywKICBVUmVmQ29uIHVzZXJEYXRhLAogIFNJbnQx
NiBkZXB0aCwKICBCb29sZWFuIGlzQ29sb3JEZXYsCiAgVGhlbWVCdXR0b25EcmF3VVBQIHVzZXJV
UFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyNDk4ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwpleHRlcm4gdm9pZApJbnZva2VXaW5kb3dUaXRsZURy
YXdpbmdVUFAoCiAgY29uc3QgUmVjdCAqIGJvdW5kcywKICBTSW50MTYgZGVwdGgsCiAgQm9vbGVh
biBjb2xvckRldmljZSwKICBVUmVmQ29uIHVzZXJEYXRhLAogIFdpbmRvd1RpdGxlRHJhd2luZ1VQ
UCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjUxNCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKZXh0ZXJuIEJvb2xlYW4KSW52b2tlVGhl
bWVJdGVyYXRvclVQUCgKICBDb25zdFN0cjI1NVBhcmFtIGluRmlsZU5hbWUsCiAgU0ludDE2IHJl
c0lELAogIENvbGxlY3Rpb24gaW5UaGVtZVNldHRpbmdzLAogIFBSZWZDb24gaW5Vc2VyRGF0YSwK
ICBUaGVtZUl0ZXJhdG9yVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsK
CgoKICAgIGlubGluZSBUaGVtZVRhYlRpdGxlRHJhd1VQUCBOZXdUaGVtZVRhYlRpdGxlRHJhd1VQ
UChUaGVtZVRhYlRpdGxlRHJhd1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0
aW5lOyB9CiAgICBpbmxpbmUgVGhlbWVFcmFzZVVQUCBOZXdUaGVtZUVyYXNlVVBQKFRoZW1lRXJh
c2VQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5l
IFRoZW1lQnV0dG9uRHJhd1VQUCBOZXdUaGVtZUJ1dHRvbkRyYXdVUFAoVGhlbWVCdXR0b25EcmF3
UHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBX
aW5kb3dUaXRsZURyYXdpbmdVUFAgTmV3V2luZG93VGl0bGVEcmF3aW5nVVBQKFdpbmRvd1RpdGxl
RHJhd2luZ1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBp
bmxpbmUgVGhlbWVJdGVyYXRvclVQUCBOZXdUaGVtZUl0ZXJhdG9yVVBQKFRoZW1lSXRlcmF0b3JQ
cm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZv
aWQgRGlzcG9zZVRoZW1lVGFiVGl0bGVEcmF3VVBQKFRoZW1lVGFiVGl0bGVEcmF3VVBQKSB7IH0K
ICAgIGlubGluZSB2b2lkIERpc3Bvc2VUaGVtZUVyYXNlVVBQKFRoZW1lRXJhc2VVUFApIHsgfQog
ICAgaW5saW5lIHZvaWQgRGlzcG9zZVRoZW1lQnV0dG9uRHJhd1VQUChUaGVtZUJ1dHRvbkRyYXdV
UFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVdpbmRvd1RpdGxlRHJhd2luZ1VQUChXaW5k
b3dUaXRsZURyYXdpbmdVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVRoZW1lSXRlcmF0
b3JVUFAoVGhlbWVJdGVyYXRvclVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VUaGVtZVRh
YlRpdGxlRHJhd1VQUChjb25zdCBSZWN0ICogYm91bmRzLCBUaGVtZVRhYlN0eWxlIHN0eWxlLCBU
aGVtZVRhYkRpcmVjdGlvbiBkaXJlY3Rpb24sIFNJbnQxNiBkZXB0aCwgQm9vbGVhbiBpc0NvbG9y
RGV2LCBVUmVmQ29uIHVzZXJEYXRhLCBUaGVtZVRhYlRpdGxlRHJhd1VQUCB1c2VyVVBQKSB7ICgq
dXNlclVQUCkoYm91bmRzLCBzdHlsZSwgZGlyZWN0aW9uLCBkZXB0aCwgaXNDb2xvckRldiwgdXNl
ckRhdGEpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VUaGVtZUVyYXNlVVBQKGNvbnN0IFJlY3Qg
KiBib3VuZHMsIFVSZWZDb24gZXJhc2VEYXRhLCBTSW50MTYgZGVwdGgsIEJvb2xlYW4gaXNDb2xv
ckRldiwgVGhlbWVFcmFzZVVQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCkoYm91bmRzLCBlcmFzZURh
dGEsIGRlcHRoLCBpc0NvbG9yRGV2KTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlVGhlbWVCdXR0
b25EcmF3VVBQKGNvbnN0IFJlY3QgKiBib3VuZHMsIFRoZW1lQnV0dG9uS2luZCBraW5kLCBjb25z
dCBUaGVtZUJ1dHRvbkRyYXdJbmZvICogaW5mbywgVVJlZkNvbiB1c2VyRGF0YSwgU0ludDE2IGRl
cHRoLCBCb29sZWFuIGlzQ29sb3JEZXYsIFRoZW1lQnV0dG9uRHJhd1VQUCB1c2VyVVBQKSB7ICgq
dXNlclVQUCkoYm91bmRzLCBraW5kLCBpbmZvLCB1c2VyRGF0YSwgZGVwdGgsIGlzQ29sb3JEZXYp
OyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VXaW5kb3dUaXRsZURyYXdpbmdVUFAoY29uc3QgUmVj
dCAqIGJvdW5kcywgU0ludDE2IGRlcHRoLCBCb29sZWFuIGNvbG9yRGV2aWNlLCBVUmVmQ29uIHVz
ZXJEYXRhLCBXaW5kb3dUaXRsZURyYXdpbmdVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKGJvdW5k
cywgZGVwdGgsIGNvbG9yRGV2aWNlLCB1c2VyRGF0YSk7IH0KICAgIGlubGluZSBCb29sZWFuIElu
dm9rZVRoZW1lSXRlcmF0b3JVUFAoQ29uc3RTdHIyNTVQYXJhbSBpbkZpbGVOYW1lLCBTSW50MTYg
cmVzSUQsIENvbGxlY3Rpb24gaW5UaGVtZVNldHRpbmdzLCBQUmVmQ29uIGluVXNlckRhdGEsIFRo
ZW1lSXRlcmF0b3JVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShpbkZpbGVOYW1lLCBy
ZXNJRCwgaW5UaGVtZVNldHRpbmdzLCBpblVzZXJEYXRhKTsgfQojIDI1NjggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCnR5cGVkZWYgdm9pZCAoICogTWVudVRpdGxl
RHJhd2luZ1Byb2NQdHIpKGNvbnN0IFJlY3QgKmluQm91bmRzLCBTSW50MTYgaW5EZXB0aCwgQm9v
bGVhbiBpbklzQ29sb3JEZXZpY2UsIFNSZWZDb24gaW5Vc2VyRGF0YSk7CgoKCgoKCgp0eXBlZGVm
IHZvaWQgKCAqIE1lbnVJdGVtRHJhd2luZ1Byb2NQdHIpKGNvbnN0IFJlY3QgKmluQm91bmRzLCBT
SW50MTYgaW5EZXB0aCwgQm9vbGVhbiBpbklzQ29sb3JEZXZpY2UsIFNSZWZDb24gaW5Vc2VyRGF0
YSk7CnR5cGVkZWYgTWVudVRpdGxlRHJhd2luZ1Byb2NQdHIgTWVudVRpdGxlRHJhd2luZ1VQUDsK
dHlwZWRlZiBNZW51SXRlbURyYXdpbmdQcm9jUHRyIE1lbnVJdGVtRHJhd2luZ1VQUDsKIyAyNTg3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwpleHRlcm4gTWVudVRp
dGxlRHJhd2luZ1VQUApOZXdNZW51VGl0bGVEcmF3aW5nVVBQKE1lbnVUaXRsZURyYXdpbmdQcm9j
UHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjU5OCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKZXh0ZXJuIE1lbnVJdGVtRHJh
d2luZ1VQUApOZXdNZW51SXRlbURyYXdpbmdVUFAoTWVudUl0ZW1EcmF3aW5nUHJvY1B0ciB1c2Vy
Um91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDI2MDkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5jZS5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VNZW51VGl0
bGVEcmF3aW5nVVBQKE1lbnVUaXRsZURyYXdpbmdVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDI2MjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5j
ZS5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VNZW51SXRlbURyYXdpbmdVUFAoTWVudUl0ZW1EcmF3
aW5nVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyNjMxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0FwcGVhcmFuY2UuaCIgMwpleHRlcm4gdm9pZApJbnZva2VN
ZW51VGl0bGVEcmF3aW5nVVBQKAogIGNvbnN0IFJlY3QgKiBpbkJvdW5kcywKICBTSW50MTYgaW5E
ZXB0aCwKICBCb29sZWFuIGluSXNDb2xvckRldmljZSwKICBTUmVmQ29uIGluVXNlckRhdGEsCiAg
TWVudVRpdGxlRHJhd2luZ1VQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CiMgMjY0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BcHBlYXJhbmNlLmgiIDMKZXh0ZXJu
IHZvaWQKSW52b2tlTWVudUl0ZW1EcmF3aW5nVVBQKAogIGNvbnN0IFJlY3QgKiBpbkJvdW5kcywK
ICBTSW50MTYgaW5EZXB0aCwKICBCb29sZWFuIGluSXNDb2xvckRldmljZSwKICBTUmVmQ29uIGlu
VXNlckRhdGEsCiAgTWVudUl0ZW1EcmF3aW5nVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBNZW51VGl0bGVEcmF3aW5nVVBQIE5ld01lbnVUaXRs
ZURyYXdpbmdVUFAoTWVudVRpdGxlRHJhd2luZ1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJu
IHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgTWVudUl0ZW1EcmF3aW5nVVBQIE5ld01lbnVJdGVt
RHJhd2luZ1VQUChNZW51SXRlbURyYXdpbmdQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1
c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZU1lbnVUaXRsZURyYXdpbmdVUFAo
TWVudVRpdGxlRHJhd2luZ1VQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlTWVudUl0ZW1E
cmF3aW5nVVBQKE1lbnVJdGVtRHJhd2luZ1VQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VN
ZW51VGl0bGVEcmF3aW5nVVBQKGNvbnN0IFJlY3QgKiBpbkJvdW5kcywgU0ludDE2IGluRGVwdGgs
IEJvb2xlYW4gaW5Jc0NvbG9yRGV2aWNlLCBTUmVmQ29uIGluVXNlckRhdGEsIE1lbnVUaXRsZURy
YXdpbmdVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKGluQm91bmRzLCBpbkRlcHRoLCBpbklzQ29s
b3JEZXZpY2UsIGluVXNlckRhdGEpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VNZW51SXRlbURy
YXdpbmdVUFAoY29uc3QgUmVjdCAqIGluQm91bmRzLCBTSW50MTYgaW5EZXB0aCwgQm9vbGVhbiBp
bklzQ29sb3JEZXZpY2UsIFNSZWZDb24gaW5Vc2VyRGF0YSwgTWVudUl0ZW1EcmF3aW5nVVBQIHVz
ZXJVUFApIHsgKCp1c2VyVVBQKShpbkJvdW5kcywgaW5EZXB0aCwgaW5Jc0NvbG9yRGV2aWNlLCBp
blVzZXJEYXRhKTsgfQojIDUwOTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQXBwZWFyYW5j
ZS5oIiAzCmVudW0gewogIGFwcGVhcmFuY2VCYWRCcnVzaEluZGV4RXJyID0gdGhlbWVJbnZhbGlk
QnJ1c2hFcnIsCiAgYXBwZWFyYW5jZVByb2Nlc3NSZWdpc3RlcmVkRXJyID0gdGhlbWVQcm9jZXNz
UmVnaXN0ZXJlZEVyciwKICBhcHBlYXJhbmNlUHJvY2Vzc05vdFJlZ2lzdGVyZWRFcnIgPSB0aGVt
ZVByb2Nlc3NOb3RSZWdpc3RlcmVkRXJyLAogIGFwcGVhcmFuY2VCYWRUZXh0Q29sb3JJbmRleEVy
ciA9IHRoZW1lQmFkVGV4dENvbG9yRXJyLAogIGFwcGVhcmFuY2VUaGVtZUhhc05vQWNjZW50cyA9
IHRoZW1lSGFzTm9BY2NlbnRzRXJyLAogIGFwcGVhcmFuY2VCYWRDdXJzb3JJbmRleEVyciA9IHRo
ZW1lQmFkQ3Vyc29ySW5kZXhFcnIKfTsKCmVudW0gewogIGtUaGVtZUFjdGl2ZURpYWxvZ0JhY2tn
cm91bmRCcnVzaCA9IGtUaGVtZUJydXNoRGlhbG9nQmFja2dyb3VuZEFjdGl2ZSwKICBrVGhlbWVJ
bmFjdGl2ZURpYWxvZ0JhY2tncm91bmRCcnVzaCA9IGtUaGVtZUJydXNoRGlhbG9nQmFja2dyb3Vu
ZEluYWN0aXZlLAogIGtUaGVtZUFjdGl2ZUFsZXJ0QmFja2dyb3VuZEJydXNoID0ga1RoZW1lQnJ1
c2hBbGVydEJhY2tncm91bmRBY3RpdmUsCiAga1RoZW1lSW5hY3RpdmVBbGVydEJhY2tncm91bmRC
cnVzaCA9IGtUaGVtZUJydXNoQWxlcnRCYWNrZ3JvdW5kSW5hY3RpdmUsCiAga1RoZW1lQWN0aXZl
TW9kZWxlc3NEaWFsb2dCYWNrZ3JvdW5kQnJ1c2ggPSBrVGhlbWVCcnVzaE1vZGVsZXNzRGlhbG9n
QmFja2dyb3VuZEFjdGl2ZSwKICBrVGhlbWVJbmFjdGl2ZU1vZGVsZXNzRGlhbG9nQmFja2dyb3Vu
ZEJydXNoID0ga1RoZW1lQnJ1c2hNb2RlbGVzc0RpYWxvZ0JhY2tncm91bmRJbmFjdGl2ZSwKICBr
VGhlbWVBY3RpdmVVdGlsaXR5V2luZG93QmFja2dyb3VuZEJydXNoID0ga1RoZW1lQnJ1c2hVdGls
aXR5V2luZG93QmFja2dyb3VuZEFjdGl2ZSwKICBrVGhlbWVJbmFjdGl2ZVV0aWxpdHlXaW5kb3dC
YWNrZ3JvdW5kQnJ1c2ggPSBrVGhlbWVCcnVzaFV0aWxpdHlXaW5kb3dCYWNrZ3JvdW5kSW5hY3Rp
dmUsCiAga1RoZW1lTGlzdFZpZXdTb3J0Q29sdW1uQmFja2dyb3VuZEJydXNoID0ga1RoZW1lQnJ1
c2hMaXN0Vmlld1NvcnRDb2x1bW5CYWNrZ3JvdW5kLAogIGtUaGVtZUxpc3RWaWV3QmFja2dyb3Vu
ZEJydXNoID0ga1RoZW1lQnJ1c2hMaXN0Vmlld0JhY2tncm91bmQsCiAga1RoZW1lSWNvbkxhYmVs
QmFja2dyb3VuZEJydXNoID0ga1RoZW1lQnJ1c2hJY29uTGFiZWxCYWNrZ3JvdW5kLAogIGtUaGVt
ZUxpc3RWaWV3U2VwYXJhdG9yQnJ1c2ggPSBrVGhlbWVCcnVzaExpc3RWaWV3U2VwYXJhdG9yLAog
IGtUaGVtZUNoYXNpbmdBcnJvd3NCcnVzaCA9IGtUaGVtZUJydXNoQ2hhc2luZ0Fycm93cywKICBr
VGhlbWVEcmFnSGlsaXRlQnJ1c2ggPSBrVGhlbWVCcnVzaERyYWdIaWxpdGUsCiAga1RoZW1lRG9j
dW1lbnRXaW5kb3dCYWNrZ3JvdW5kQnJ1c2ggPSBrVGhlbWVCcnVzaERvY3VtZW50V2luZG93QmFj
a2dyb3VuZCwKICBrVGhlbWVGaW5kZXJXaW5kb3dCYWNrZ3JvdW5kQnJ1c2ggPSBrVGhlbWVCcnVz
aEZpbmRlcldpbmRvd0JhY2tncm91bmQKfTsKCmVudW0gewogIGtUaGVtZUFjdGl2ZVNjcm9sbEJh
ckRlbGltaXRlckJydXNoID0ga1RoZW1lQnJ1c2hTY3JvbGxCYXJEZWxpbWl0ZXJBY3RpdmUsCiAg
a1RoZW1lSW5hY3RpdmVTY3JvbGxCYXJEZWxpbWl0ZXJCcnVzaCA9IGtUaGVtZUJydXNoU2Nyb2xs
QmFyRGVsaW1pdGVySW5hY3RpdmUsCiAga1RoZW1lRm9jdXNIaWdobGlnaHRCcnVzaCA9IGtUaGVt
ZUJydXNoRm9jdXNIaWdobGlnaHQsCiAga1RoZW1lQWN0aXZlUG9wdXBBcnJvd0JydXNoID0ga1Ro
ZW1lQnJ1c2hQb3B1cEFycm93QWN0aXZlLAogIGtUaGVtZVByZXNzZWRQb3B1cEFycm93QnJ1c2gg
PSBrVGhlbWVCcnVzaFBvcHVwQXJyb3dQcmVzc2VkLAogIGtUaGVtZUluYWN0aXZlUG9wdXBBcnJv
d0JydXNoID0ga1RoZW1lQnJ1c2hQb3B1cEFycm93SW5hY3RpdmUsCiAga1RoZW1lQXBwbGVHdWlk
ZUNvYWNobWFya0JydXNoID0ga1RoZW1lQnJ1c2hBcHBsZUd1aWRlQ29hY2htYXJrCn07CgplbnVt
IHsKICBrVGhlbWVBY3RpdmVEaWFsb2dUZXh0Q29sb3IgPSBrVGhlbWVUZXh0Q29sb3JEaWFsb2dB
Y3RpdmUsCiAga1RoZW1lSW5hY3RpdmVEaWFsb2dUZXh0Q29sb3IgPSBrVGhlbWVUZXh0Q29sb3JE
aWFsb2dJbmFjdGl2ZSwKICBrVGhlbWVBY3RpdmVBbGVydFRleHRDb2xvciA9IGtUaGVtZVRleHRD
b2xvckFsZXJ0QWN0aXZlLAogIGtUaGVtZUluYWN0aXZlQWxlcnRUZXh0Q29sb3IgPSBrVGhlbWVU
ZXh0Q29sb3JBbGVydEluYWN0aXZlLAogIGtUaGVtZUFjdGl2ZU1vZGVsZXNzRGlhbG9nVGV4dENv
bG9yID0ga1RoZW1lVGV4dENvbG9yTW9kZWxlc3NEaWFsb2dBY3RpdmUsCiAga1RoZW1lSW5hY3Rp
dmVNb2RlbGVzc0RpYWxvZ1RleHRDb2xvciA9IGtUaGVtZVRleHRDb2xvck1vZGVsZXNzRGlhbG9n
SW5hY3RpdmUsCiAga1RoZW1lQWN0aXZlV2luZG93SGVhZGVyVGV4dENvbG9yID0ga1RoZW1lVGV4
dENvbG9yV2luZG93SGVhZGVyQWN0aXZlLAogIGtUaGVtZUluYWN0aXZlV2luZG93SGVhZGVyVGV4
dENvbG9yID0ga1RoZW1lVGV4dENvbG9yV2luZG93SGVhZGVySW5hY3RpdmUsCiAga1RoZW1lQWN0
aXZlUGxhY2FyZFRleHRDb2xvciA9IGtUaGVtZVRleHRDb2xvclBsYWNhcmRBY3RpdmUsCiAga1Ro
ZW1lSW5hY3RpdmVQbGFjYXJkVGV4dENvbG9yID0ga1RoZW1lVGV4dENvbG9yUGxhY2FyZEluYWN0
aXZlLAogIGtUaGVtZVByZXNzZWRQbGFjYXJkVGV4dENvbG9yID0ga1RoZW1lVGV4dENvbG9yUGxh
Y2FyZFByZXNzZWQsCiAga1RoZW1lQWN0aXZlUHVzaEJ1dHRvblRleHRDb2xvciA9IGtUaGVtZVRl
eHRDb2xvclB1c2hCdXR0b25BY3RpdmUsCiAga1RoZW1lSW5hY3RpdmVQdXNoQnV0dG9uVGV4dENv
bG9yID0ga1RoZW1lVGV4dENvbG9yUHVzaEJ1dHRvbkluYWN0aXZlLAogIGtUaGVtZVByZXNzZWRQ
dXNoQnV0dG9uVGV4dENvbG9yID0ga1RoZW1lVGV4dENvbG9yUHVzaEJ1dHRvblByZXNzZWQsCiAg
a1RoZW1lQWN0aXZlQmV2ZWxCdXR0b25UZXh0Q29sb3IgPSBrVGhlbWVUZXh0Q29sb3JCZXZlbEJ1
dHRvbkFjdGl2ZSwKICBrVGhlbWVJbmFjdGl2ZUJldmVsQnV0dG9uVGV4dENvbG9yID0ga1RoZW1l
VGV4dENvbG9yQmV2ZWxCdXR0b25JbmFjdGl2ZSwKICBrVGhlbWVQcmVzc2VkQmV2ZWxCdXR0b25U
ZXh0Q29sb3IgPSBrVGhlbWVUZXh0Q29sb3JCZXZlbEJ1dHRvblByZXNzZWQsCiAga1RoZW1lQWN0
aXZlUG9wdXBCdXR0b25UZXh0Q29sb3IgPSBrVGhlbWVUZXh0Q29sb3JQb3B1cEJ1dHRvbkFjdGl2
ZSwKICBrVGhlbWVJbmFjdGl2ZVBvcHVwQnV0dG9uVGV4dENvbG9yID0ga1RoZW1lVGV4dENvbG9y
UG9wdXBCdXR0b25JbmFjdGl2ZSwKICBrVGhlbWVQcmVzc2VkUG9wdXBCdXR0b25UZXh0Q29sb3Ig
PSBrVGhlbWVUZXh0Q29sb3JQb3B1cEJ1dHRvblByZXNzZWQsCiAga1RoZW1lSWNvbkxhYmVsVGV4
dENvbG9yID0ga1RoZW1lVGV4dENvbG9ySWNvbkxhYmVsLAogIGtUaGVtZUxpc3RWaWV3VGV4dENv
bG9yID0ga1RoZW1lVGV4dENvbG9yTGlzdFZpZXcKfTsKCmVudW0gewogIGtUaGVtZUFjdGl2ZURv
Y3VtZW50V2luZG93VGl0bGVUZXh0Q29sb3IgPSBrVGhlbWVUZXh0Q29sb3JEb2N1bWVudFdpbmRv
d1RpdGxlQWN0aXZlLAogIGtUaGVtZUluYWN0aXZlRG9jdW1lbnRXaW5kb3dUaXRsZVRleHRDb2xv
ciA9IGtUaGVtZVRleHRDb2xvckRvY3VtZW50V2luZG93VGl0bGVJbmFjdGl2ZSwKICBrVGhlbWVB
Y3RpdmVNb3ZhYmxlTW9kYWxXaW5kb3dUaXRsZVRleHRDb2xvciA9IGtUaGVtZVRleHRDb2xvck1v
dmFibGVNb2RhbFdpbmRvd1RpdGxlQWN0aXZlLAogIGtUaGVtZUluYWN0aXZlTW92YWJsZU1vZGFs
V2luZG93VGl0bGVUZXh0Q29sb3IgPSBrVGhlbWVUZXh0Q29sb3JNb3ZhYmxlTW9kYWxXaW5kb3dU
aXRsZUluYWN0aXZlLAogIGtUaGVtZUFjdGl2ZVV0aWxpdHlXaW5kb3dUaXRsZVRleHRDb2xvciA9
IGtUaGVtZVRleHRDb2xvclV0aWxpdHlXaW5kb3dUaXRsZUFjdGl2ZSwKICBrVGhlbWVJbmFjdGl2
ZVV0aWxpdHlXaW5kb3dUaXRsZVRleHRDb2xvciA9IGtUaGVtZVRleHRDb2xvclV0aWxpdHlXaW5k
b3dUaXRsZUluYWN0aXZlLAogIGtUaGVtZUFjdGl2ZVBvcHVwV2luZG93VGl0bGVDb2xvciA9IGtU
aGVtZVRleHRDb2xvclBvcHVwV2luZG93VGl0bGVBY3RpdmUsCiAga1RoZW1lSW5hY3RpdmVQb3B1
cFdpbmRvd1RpdGxlQ29sb3IgPSBrVGhlbWVUZXh0Q29sb3JQb3B1cFdpbmRvd1RpdGxlSW5hY3Rp
dmUsCiAga1RoZW1lQWN0aXZlUm9vdE1lbnVUZXh0Q29sb3IgPSBrVGhlbWVUZXh0Q29sb3JSb290
TWVudUFjdGl2ZSwKICBrVGhlbWVTZWxlY3RlZFJvb3RNZW51VGV4dENvbG9yID0ga1RoZW1lVGV4
dENvbG9yUm9vdE1lbnVTZWxlY3RlZCwKICBrVGhlbWVEaXNhYmxlZFJvb3RNZW51VGV4dENvbG9y
ID0ga1RoZW1lVGV4dENvbG9yUm9vdE1lbnVEaXNhYmxlZCwKICBrVGhlbWVBY3RpdmVNZW51SXRl
bVRleHRDb2xvciA9IGtUaGVtZVRleHRDb2xvck1lbnVJdGVtQWN0aXZlLAogIGtUaGVtZVNlbGVj
dGVkTWVudUl0ZW1UZXh0Q29sb3IgPSBrVGhlbWVUZXh0Q29sb3JNZW51SXRlbVNlbGVjdGVkLAog
IGtUaGVtZURpc2FibGVkTWVudUl0ZW1UZXh0Q29sb3IgPSBrVGhlbWVUZXh0Q29sb3JNZW51SXRl
bURpc2FibGVkLAogIGtUaGVtZUFjdGl2ZVBvcHVwTGFiZWxUZXh0Q29sb3IgPSBrVGhlbWVUZXh0
Q29sb3JQb3B1cExhYmVsQWN0aXZlLAogIGtUaGVtZUluYWN0aXZlUG9wdXBMYWJlbFRleHRDb2xv
ciA9IGtUaGVtZVRleHRDb2xvclBvcHVwTGFiZWxJbmFjdGl2ZQp9OwoKZW51bSB7CiAga0FFVGhl
bWVTd2l0Y2ggPSBrQUVBcHBlYXJhbmNlQ2hhbmdlZAp9OwoKZW51bSB7CiAga1RoZW1lTm9BZG9y
bm1lbnQgPSBrVGhlbWVBZG9ybm1lbnROb25lLAogIGtUaGVtZURlZmF1bHRBZG9ybm1lbnQgPSBr
VGhlbWVBZG9ybm1lbnREZWZhdWx0LAogIGtUaGVtZUZvY3VzQWRvcm5tZW50ID0ga1RoZW1lQWRv
cm5tZW50Rm9jdXMsCiAga1RoZW1lUmlnaHRUb0xlZnRBZG9ybm1lbnQgPSBrVGhlbWVBZG9ybm1l
bnRSaWdodFRvTGVmdCwKICBrVGhlbWVEcmF3SW5kaWNhdG9yT25seSA9IGtUaGVtZUFkb3JubWVu
dERyYXdJbmRpY2F0b3JPbmx5Cn07CgplbnVtIHsKICBrVGhlbWVCcnVzaFBhc3NpdmVBcmVhRmls
bCA9IGtUaGVtZUJydXNoU3RhdGljQXJlYUZpbGwKfTsKCmVudW0gewogIGtUaGVtZVNjcm9sbEJh
ciA9IGtUaGVtZU1lZGl1bVNjcm9sbEJhciwKICBrVGhlbWVTbGlkZXIgPSBrVGhlbWVNZWRpdW1T
bGlkZXIsCiAga1RoZW1lUHJvZ3Jlc3NCYXIgPSBrVGhlbWVNZWRpdW1Qcm9ncmVzc0JhciwKICBr
VGhlbWVJbmRldGVybWluYXRlQmFyID0ga1RoZW1lTWVkaXVtSW5kZXRlcm1pbmF0ZUJhcgp9OwoK
CiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01l
bnVzLmgiIDIgMwojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01lbnVzLmgiIDMKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0V2ZW50cy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9FdmVudHMuaCIgMwojZGVmaW5lIF9fRVZFTlRTX18gCiMgMzEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRXZlbnRzLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdt
YSBwYWNrKHB1c2gsIDIpCgp0eXBlZGVmIFVJbnQxNiBFdmVudEtpbmQ7CnR5cGVkZWYgVUludDE2
IEV2ZW50TWFzazsKZW51bSB7CiAgbnVsbEV2ZW50ID0gMCwKICBtb3VzZURvd24gPSAxLAogIG1v
dXNlVXAgPSAyLAogIGtleURvd24gPSAzLAogIGtleVVwID0gNCwKICBhdXRvS2V5ID0gNSwKICB1
cGRhdGVFdnQgPSA2LAogIGRpc2tFdnQgPSA3LAogIGFjdGl2YXRlRXZ0ID0gOCwKICBvc0V2dCA9
IDE1LAogIGtIaWdoTGV2ZWxFdmVudCA9IDIzCn07CgplbnVtIHsKICBtRG93bk1hc2sgPSAxIDw8
IG1vdXNlRG93biwKICBtVXBNYXNrID0gMSA8PCBtb3VzZVVwLAogIGtleURvd25NYXNrID0gMSA8
PCBrZXlEb3duLAogIGtleVVwTWFzayA9IDEgPDwga2V5VXAsCiAgYXV0b0tleU1hc2sgPSAxIDw8
IGF1dG9LZXksCiAgdXBkYXRlTWFzayA9IDEgPDwgdXBkYXRlRXZ0LAogIGRpc2tNYXNrID0gMSA8
PCBkaXNrRXZ0LAogIGFjdGl2TWFzayA9IDEgPDwgYWN0aXZhdGVFdnQsCiAgaGlnaExldmVsRXZl
bnRNYXNrID0gMHgwNDAwLAogIG9zTWFzayA9IDEgPDwgb3NFdnQsCiAgZXZlcnlFdmVudCA9IDB4
RkZGRgp9OwoKZW51bSB7CiAgY2hhckNvZGVNYXNrID0gMHgwMDAwMDBGRiwKICBrZXlDb2RlTWFz
ayA9IDB4MDAwMEZGMDAsCiAgYWRiQWRkck1hc2sgPSAweDAwRkYwMDAwLAogIG9zRXZ0TWVzc2Fn
ZU1hc2sgPSAoVUludDMyKTB4RkYwMDAwMDAKfTsKCmVudW0gewoKICBtb3VzZU1vdmVkTWVzc2Fn
ZSA9IDB4MDBGQSwKICBzdXNwZW5kUmVzdW1lTWVzc2FnZSA9IDB4MDAwMQp9OwoKZW51bSB7CiAg
cmVzdW1lRmxhZyA9IDEKfTsKIyAxMDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRXZlbnRz
LmgiIDMKdHlwZWRlZiBVSW50MTYgRXZlbnRNb2RpZmllcnM7CmVudW0gewoKICBhY3RpdmVGbGFn
Qml0ID0gMCwKICBidG5TdGF0ZUJpdCA9IDcsCiAgY21kS2V5Qml0ID0gOCwKICBzaGlmdEtleUJp
dCA9IDksCiAgYWxwaGFMb2NrQml0ID0gMTAsCiAgb3B0aW9uS2V5Qml0ID0gMTEsCiAgY29udHJv
bEtleUJpdCA9IDEyLAogIHJpZ2h0U2hpZnRLZXlCaXQgPSAxMywKICByaWdodE9wdGlvbktleUJp
dCA9IDE0LAogIHJpZ2h0Q29udHJvbEtleUJpdCA9IDE1Cn07CgplbnVtIHsKICBhY3RpdmVGbGFn
ID0gMSA8PCBhY3RpdmVGbGFnQml0LAogIGJ0blN0YXRlID0gMSA8PCBidG5TdGF0ZUJpdCwKICBj
bWRLZXkgPSAxIDw8IGNtZEtleUJpdCwKICBzaGlmdEtleSA9IDEgPDwgc2hpZnRLZXlCaXQsCiAg
YWxwaGFMb2NrID0gMSA8PCBhbHBoYUxvY2tCaXQsCiAgb3B0aW9uS2V5ID0gMSA8PCBvcHRpb25L
ZXlCaXQsCiAgY29udHJvbEtleSA9IDEgPDwgY29udHJvbEtleUJpdCwKICByaWdodFNoaWZ0S2V5
ID0gMSA8PCByaWdodFNoaWZ0S2V5Qml0LAogIHJpZ2h0T3B0aW9uS2V5ID0gMSA8PCByaWdodE9w
dGlvbktleUJpdCwKICByaWdodENvbnRyb2xLZXkgPSAxIDw8IHJpZ2h0Q29udHJvbEtleUJpdAp9
OwoKCmVudW0gewogIGtOdWxsQ2hhckNvZGUgPSAwLAogIGtIb21lQ2hhckNvZGUgPSAxLAogIGtF
bnRlckNoYXJDb2RlID0gMywKICBrRW5kQ2hhckNvZGUgPSA0LAogIGtIZWxwQ2hhckNvZGUgPSA1
LAogIGtCZWxsQ2hhckNvZGUgPSA3LAogIGtCYWNrc3BhY2VDaGFyQ29kZSA9IDgsCiAga1RhYkNo
YXJDb2RlID0gOSwKICBrTGluZUZlZWRDaGFyQ29kZSA9IDEwLAogIGtWZXJ0aWNhbFRhYkNoYXJD
b2RlID0gMTEsCiAga1BhZ2VVcENoYXJDb2RlID0gMTEsCiAga0Zvcm1GZWVkQ2hhckNvZGUgPSAx
MiwKICBrUGFnZURvd25DaGFyQ29kZSA9IDEyLAogIGtSZXR1cm5DaGFyQ29kZSA9IDEzLAogIGtG
dW5jdGlvbktleUNoYXJDb2RlID0gMTYsCiAga0NvbW1hbmRDaGFyQ29kZSA9IDE3LAogIGtDaGVj
a0NoYXJDb2RlID0gMTgsCiAga0RpYW1vbmRDaGFyQ29kZSA9IDE5LAogIGtBcHBsZUxvZ29DaGFy
Q29kZSA9IDIwLAogIGtFc2NhcGVDaGFyQ29kZSA9IDI3LAogIGtDbGVhckNoYXJDb2RlID0gMjcs
CiAga0xlZnRBcnJvd0NoYXJDb2RlID0gMjgsCiAga1JpZ2h0QXJyb3dDaGFyQ29kZSA9IDI5LAog
IGtVcEFycm93Q2hhckNvZGUgPSAzMCwKICBrRG93bkFycm93Q2hhckNvZGUgPSAzMSwKICBrU3Bh
Y2VDaGFyQ29kZSA9IDMyLAogIGtEZWxldGVDaGFyQ29kZSA9IDEyNywKICBrQnVsbGV0Q2hhckNv
ZGUgPSAxNjUsCiAga05vbkJyZWFraW5nU3BhY2VDaGFyQ29kZSA9IDIwMgp9OwoKCmVudW0gewog
IGtTaGlmdFVuaWNvZGUgPSAweDIxRTcsCiAga0NvbnRyb2xVbmljb2RlID0gMHgyMzAzLAogIGtP
cHRpb25Vbmljb2RlID0gMHgyMzI1LAogIGtDb21tYW5kVW5pY29kZSA9IDB4MjMxOCwKICBrUGVu
Y2lsVW5pY29kZSA9IDB4MjcwRSwKICBrUGVuY2lsTGVmdFVuaWNvZGUgPSAweEY4MDIsCiAga0No
ZWNrVW5pY29kZSA9IDB4MjcxMywKICBrRGlhbW9uZFVuaWNvZGUgPSAweDI1QzYsCiAga0J1bGxl
dFVuaWNvZGUgPSAweDIwMjIsCiAga0FwcGxlTG9nb1VuaWNvZGUgPSAweEY4RkYKfTsKIyAxOTgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRXZlbnRzLmgiIDMKZW51bSB7CiAga1ZLX0FOU0lf
QSA9IDB4MDAsCiAga1ZLX0FOU0lfUyA9IDB4MDEsCiAga1ZLX0FOU0lfRCA9IDB4MDIsCiAga1ZL
X0FOU0lfRiA9IDB4MDMsCiAga1ZLX0FOU0lfSCA9IDB4MDQsCiAga1ZLX0FOU0lfRyA9IDB4MDUs
CiAga1ZLX0FOU0lfWiA9IDB4MDYsCiAga1ZLX0FOU0lfWCA9IDB4MDcsCiAga1ZLX0FOU0lfQyA9
IDB4MDgsCiAga1ZLX0FOU0lfViA9IDB4MDksCiAga1ZLX0FOU0lfQiA9IDB4MEIsCiAga1ZLX0FO
U0lfUSA9IDB4MEMsCiAga1ZLX0FOU0lfVyA9IDB4MEQsCiAga1ZLX0FOU0lfRSA9IDB4MEUsCiAg
a1ZLX0FOU0lfUiA9IDB4MEYsCiAga1ZLX0FOU0lfWSA9IDB4MTAsCiAga1ZLX0FOU0lfVCA9IDB4
MTEsCiAga1ZLX0FOU0lfMSA9IDB4MTIsCiAga1ZLX0FOU0lfMiA9IDB4MTMsCiAga1ZLX0FOU0lf
MyA9IDB4MTQsCiAga1ZLX0FOU0lfNCA9IDB4MTUsCiAga1ZLX0FOU0lfNiA9IDB4MTYsCiAga1ZL
X0FOU0lfNSA9IDB4MTcsCiAga1ZLX0FOU0lfRXF1YWwgPSAweDE4LAogIGtWS19BTlNJXzkgPSAw
eDE5LAogIGtWS19BTlNJXzcgPSAweDFBLAogIGtWS19BTlNJX01pbnVzID0gMHgxQiwKICBrVktf
QU5TSV84ID0gMHgxQywKICBrVktfQU5TSV8wID0gMHgxRCwKICBrVktfQU5TSV9SaWdodEJyYWNr
ZXQgPSAweDFFLAogIGtWS19BTlNJX08gPSAweDFGLAogIGtWS19BTlNJX1UgPSAweDIwLAogIGtW
S19BTlNJX0xlZnRCcmFja2V0ID0gMHgyMSwKICBrVktfQU5TSV9JID0gMHgyMiwKICBrVktfQU5T
SV9QID0gMHgyMywKICBrVktfQU5TSV9MID0gMHgyNSwKICBrVktfQU5TSV9KID0gMHgyNiwKICBr
VktfQU5TSV9RdW90ZSA9IDB4MjcsCiAga1ZLX0FOU0lfSyA9IDB4MjgsCiAga1ZLX0FOU0lfU2Vt
aWNvbG9uID0gMHgyOSwKICBrVktfQU5TSV9CYWNrc2xhc2ggPSAweDJBLAogIGtWS19BTlNJX0Nv
bW1hID0gMHgyQiwKICBrVktfQU5TSV9TbGFzaCA9IDB4MkMsCiAga1ZLX0FOU0lfTiA9IDB4MkQs
CiAga1ZLX0FOU0lfTSA9IDB4MkUsCiAga1ZLX0FOU0lfUGVyaW9kID0gMHgyRiwKICBrVktfQU5T
SV9HcmF2ZSA9IDB4MzIsCiAga1ZLX0FOU0lfS2V5cGFkRGVjaW1hbCA9IDB4NDEsCiAga1ZLX0FO
U0lfS2V5cGFkTXVsdGlwbHkgPSAweDQzLAogIGtWS19BTlNJX0tleXBhZFBsdXMgPSAweDQ1LAog
IGtWS19BTlNJX0tleXBhZENsZWFyID0gMHg0NywKICBrVktfQU5TSV9LZXlwYWREaXZpZGUgPSAw
eDRCLAogIGtWS19BTlNJX0tleXBhZEVudGVyID0gMHg0QywKICBrVktfQU5TSV9LZXlwYWRNaW51
cyA9IDB4NEUsCiAga1ZLX0FOU0lfS2V5cGFkRXF1YWxzID0gMHg1MSwKICBrVktfQU5TSV9LZXlw
YWQwID0gMHg1MiwKICBrVktfQU5TSV9LZXlwYWQxID0gMHg1MywKICBrVktfQU5TSV9LZXlwYWQy
ID0gMHg1NCwKICBrVktfQU5TSV9LZXlwYWQzID0gMHg1NSwKICBrVktfQU5TSV9LZXlwYWQ0ID0g
MHg1NiwKICBrVktfQU5TSV9LZXlwYWQ1ID0gMHg1NywKICBrVktfQU5TSV9LZXlwYWQ2ID0gMHg1
OCwKICBrVktfQU5TSV9LZXlwYWQ3ID0gMHg1OSwKICBrVktfQU5TSV9LZXlwYWQ4ID0gMHg1QiwK
ICBrVktfQU5TSV9LZXlwYWQ5ID0gMHg1Qwp9OwoKCmVudW0gewogIGtWS19SZXR1cm4gPSAweDI0
LAogIGtWS19UYWIgPSAweDMwLAogIGtWS19TcGFjZSA9IDB4MzEsCiAga1ZLX0RlbGV0ZSA9IDB4
MzMsCiAga1ZLX0VzY2FwZSA9IDB4MzUsCiAga1ZLX0NvbW1hbmQgPSAweDM3LAogIGtWS19TaGlm
dCA9IDB4MzgsCiAga1ZLX0NhcHNMb2NrID0gMHgzOSwKICBrVktfT3B0aW9uID0gMHgzQSwKICBr
VktfQ29udHJvbCA9IDB4M0IsCiAga1ZLX1JpZ2h0U2hpZnQgPSAweDNDLAogIGtWS19SaWdodE9w
dGlvbiA9IDB4M0QsCiAga1ZLX1JpZ2h0Q29udHJvbCA9IDB4M0UsCiAga1ZLX0Z1bmN0aW9uID0g
MHgzRiwKICBrVktfRjE3ID0gMHg0MCwKICBrVktfVm9sdW1lVXAgPSAweDQ4LAogIGtWS19Wb2x1
bWVEb3duID0gMHg0OSwKICBrVktfTXV0ZSA9IDB4NEEsCiAga1ZLX0YxOCA9IDB4NEYsCiAga1ZL
X0YxOSA9IDB4NTAsCiAga1ZLX0YyMCA9IDB4NUEsCiAga1ZLX0Y1ID0gMHg2MCwKICBrVktfRjYg
PSAweDYxLAogIGtWS19GNyA9IDB4NjIsCiAga1ZLX0YzID0gMHg2MywKICBrVktfRjggPSAweDY0
LAogIGtWS19GOSA9IDB4NjUsCiAga1ZLX0YxMSA9IDB4NjcsCiAga1ZLX0YxMyA9IDB4NjksCiAg
a1ZLX0YxNiA9IDB4NkEsCiAga1ZLX0YxNCA9IDB4NkIsCiAga1ZLX0YxMCA9IDB4NkQsCiAga1ZL
X0YxMiA9IDB4NkYsCiAga1ZLX0YxNSA9IDB4NzEsCiAga1ZLX0hlbHAgPSAweDcyLAogIGtWS19I
b21lID0gMHg3MywKICBrVktfUGFnZVVwID0gMHg3NCwKICBrVktfRm9yd2FyZERlbGV0ZSA9IDB4
NzUsCiAga1ZLX0Y0ID0gMHg3NiwKICBrVktfRW5kID0gMHg3NywKICBrVktfRjIgPSAweDc4LAog
IGtWS19QYWdlRG93biA9IDB4NzksCiAga1ZLX0YxID0gMHg3QSwKICBrVktfTGVmdEFycm93ID0g
MHg3QiwKICBrVktfUmlnaHRBcnJvdyA9IDB4N0MsCiAga1ZLX0Rvd25BcnJvdyA9IDB4N0QsCiAg
a1ZLX1VwQXJyb3cgPSAweDdFCn07CgoKZW51bSB7CiAga1ZLX0lTT19TZWN0aW9uID0gMHgwQQp9
OwoKCmVudW0gewogIGtWS19KSVNfWWVuID0gMHg1RCwKICBrVktfSklTX1VuZGVyc2NvcmUgPSAw
eDVFLAogIGtWS19KSVNfS2V5cGFkQ29tbWEgPSAweDVGLAogIGtWS19KSVNfRWlzdSA9IDB4NjYs
CiAga1ZLX0pJU19LYW5hID0gMHg2OAp9OwoKc3RydWN0IEV2ZW50UmVjb3JkIHsKICBFdmVudEtp
bmQgd2hhdDsKICB1bnNpZ25lZCBsb25nIG1lc3NhZ2U7CiAgVUludDMyIHdoZW47CiAgUG9pbnQg
d2hlcmU7CiAgRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzOwp9Owp0eXBlZGVmIHN0cnVjdCBFdmVu
dFJlY29yZCBFdmVudFJlY29yZDsKdHlwZWRlZiB2b2lkICggKiBGS0VZUHJvY1B0cikodm9pZCk7
CnR5cGVkZWYgRktFWVByb2NQdHIgRktFWVVQUDsKIyA0MDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvRXZlbnRzLmgiIDMKZXh0ZXJuIEJvb2xlYW4KQnV0dG9uKHZvaWQpIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKIyA0ODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRXZlbnRz
LmgiIDMKdHlwZWRlZiBCaWdFbmRpYW5VSW50MzIgS2V5TWFwWzRdOwoKCnR5cGVkZWYgVUludDgg
S2V5TWFwQnl0ZUFycmF5WzE2XTsKIyA1MDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRXZl
bnRzLmgiIDMKZXh0ZXJuIHZvaWQKR2V0S2V5cyhLZXlNYXAgdGhlS2V5cykgOwoKCgplbnVtIHsK
ICBuZXR3b3JrRXZ0ID0gMTAsCiAgZHJpdmVyRXZ0ID0gMTEsCiAgYXBwMUV2dCA9IDEyLAogIGFw
cDJFdnQgPSAxMywKICBhcHAzRXZ0ID0gMTQsCiAgYXBwNEV2dCA9IDE1LAogIG5ldHdvcmtNYXNr
ID0gMHgwNDAwLAogIGRyaXZlck1hc2sgPSAweDA4MDAsCiAgYXBwMU1hc2sgPSAweDEwMDAsCiAg
YXBwMk1hc2sgPSAweDIwMDAsCiAgYXBwM01hc2sgPSAweDQwMDAsCiAgYXBwNE1hc2sgPSAweDgw
MDAKfTsKCnN0cnVjdCBFdlFFbCB7CiAgUUVsZW1QdHIgcUxpbms7CiAgU0ludDE2IHFUeXBlOwog
IEV2ZW50S2luZCBldnRRV2hhdDsKICB1bnNpZ25lZCBsb25nIGV2dFFNZXNzYWdlOwogIFVJbnQz
MiBldnRRV2hlbjsKICBQb2ludCBldnRRV2hlcmU7CiAgRXZlbnRNb2RpZmllcnMgZXZ0UU1vZGlm
aWVyczsKfTsKdHlwZWRlZiBzdHJ1Y3QgRXZRRWwgRXZRRWw7CnR5cGVkZWYgRXZRRWwgKiBFdlFF
bFB0cjsKdHlwZWRlZiB2b2lkICggKiBHZXROZXh0RXZlbnRGaWx0ZXJQcm9jUHRyKShFdmVudFJl
Y29yZCAqdGhlRXZlbnQsIEJvb2xlYW4gKnJlc3VsdCk7CnR5cGVkZWYgR2V0TmV4dEV2ZW50Rmls
dGVyUHJvY1B0ciBHZXROZXh0RXZlbnRGaWx0ZXJVUFA7CiMgNTYyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0V2ZW50cy5oIiAzCnR5cGVkZWYgR2V0TmV4dEV2ZW50RmlsdGVyVVBQIEdORUZp
bHRlclVQUDsKIyA3MDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRXZlbnRzLmgiIDMKZXh0
ZXJuIHZvaWQKRmx1c2hFdmVudHMoCiAgRXZlbnRNYXNrIHdoaWNoTWFzaywKICBFdmVudE1hc2sg
c3RvcE1hc2spIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA3NTggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvRXZlbnRzLmgiIDMKZXh0ZXJuIEJvb2xlYW4KSXNDbWRDaGFyKAogIGNv
bnN0IEV2ZW50UmVjb3JkICogZXZlbnQsCiAgc2hvcnQgdGVzdCkgX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwojIDc3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9FdmVudHMuaCIgMwpl
eHRlcm4gU0ludDE2CkxNR2V0S2V5VGhyZXNoKHZvaWQpIDsKIyA4MTMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvRXZlbnRzLmgiIDMKZXh0ZXJuIFNJbnQxNgpMTUdldEtleVJlcFRocmVzaCh2
b2lkKSA7CiMgODQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0V2ZW50cy5oIiAzCmV4dGVy
biBVSW50OApMTUdldEtiZExhc3Qodm9pZCkgOwojIDg4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9FdmVudHMuaCIgMwpleHRlcm4gVUludDgKTE1HZXRLYmRUeXBlKHZvaWQpIDsKIyA5MDMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRXZlbnRzLmgiIDMKI3ByYWdtYSBwYWNrKHBvcCkK
Cgp9CiMgMzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMuaCIgMiAzCiMgNTIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21h
IHBhY2socHVzaCwgMikKIyA2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5oIiAz
CmVudW0gewoKCgoKCiAgdGV4dE1lbnVQcm9jID0gMCwKCgoKCgoKCiAga0hJTWVudUFwcGVuZEl0
ZW0gPSAweDAwMDBGRkZGCn07CgplbnVtIHsKICBub01hcmsgPSAwCn07CgoKZW51bSB7CiAga01l
bnVTdGRNZW51UHJvYyA9IDYzLAogIGtNZW51U3RkTWVudUJhclByb2MgPSA2Mwp9OwoKCmVudW0g
ewogIGtNZW51Tm9Nb2RpZmllcnMgPSAwLAogIGtNZW51U2hpZnRNb2RpZmllciA9ICgxIDw8IDAp
LAogIGtNZW51T3B0aW9uTW9kaWZpZXIgPSAoMSA8PCAxKSwKICBrTWVudUNvbnRyb2xNb2RpZmll
ciA9ICgxIDw8IDIpLAogIGtNZW51Tm9Db21tYW5kTW9kaWZpZXIgPSAoMSA8PCAzKQp9OwoKCmVu
dW0gewogIGtNZW51Tm9JY29uID0gMCwKICBrTWVudUljb25UeXBlID0gMSwKICBrTWVudVNocmlu
a0ljb25UeXBlID0gMiwKICBrTWVudVNtYWxsSWNvblR5cGUgPSAzLAogIGtNZW51Q29sb3JJY29u
VHlwZSA9IDQsCiAga01lbnVJY29uU3VpdGVUeXBlID0gNSwKICBrTWVudUljb25SZWZUeXBlID0g
NiwKICBrTWVudUNHSW1hZ2VSZWZUeXBlID0gNywKICBrTWVudVN5c3RlbUljb25TZWxlY3RvclR5
cGUgPSA4LAogIGtNZW51SWNvblJlc291cmNlVHlwZSA9IDkKfTsKCgplbnVtIHsKICBrTWVudU51
bGxHbHlwaCA9IDB4MDAsCiAga01lbnVUYWJSaWdodEdseXBoID0gMHgwMiwKICBrTWVudVRhYkxl
ZnRHbHlwaCA9IDB4MDMsCiAga01lbnVFbnRlckdseXBoID0gMHgwNCwKICBrTWVudVNoaWZ0R2x5
cGggPSAweDA1LAogIGtNZW51Q29udHJvbEdseXBoID0gMHgwNiwKICBrTWVudU9wdGlvbkdseXBo
ID0gMHgwNywKICBrTWVudVNwYWNlR2x5cGggPSAweDA5LAogIGtNZW51RGVsZXRlUmlnaHRHbHlw
aCA9IDB4MEEsCiAga01lbnVSZXR1cm5HbHlwaCA9IDB4MEIsCiAga01lbnVSZXR1cm5SMkxHbHlw
aCA9IDB4MEMsCiAga01lbnVOb25tYXJraW5nUmV0dXJuR2x5cGggPSAweDBELAogIGtNZW51UGVu
Y2lsR2x5cGggPSAweDBGLAogIGtNZW51RG93bndhcmRBcnJvd0Rhc2hlZEdseXBoID0gMHgxMCwK
ICBrTWVudUNvbW1hbmRHbHlwaCA9IDB4MTEsCiAga01lbnVDaGVja21hcmtHbHlwaCA9IDB4MTIs
CiAga01lbnVEaWFtb25kR2x5cGggPSAweDEzLAogIGtNZW51QXBwbGVMb2dvRmlsbGVkR2x5cGgg
PSAweDE0LAogIGtNZW51UGFyYWdyYXBoS29yZWFuR2x5cGggPSAweDE1LAogIGtNZW51RGVsZXRl
TGVmdEdseXBoID0gMHgxNywKICBrTWVudUxlZnRBcnJvd0Rhc2hlZEdseXBoID0gMHgxOCwKICBr
TWVudVVwQXJyb3dEYXNoZWRHbHlwaCA9IDB4MTksCiAga01lbnVSaWdodEFycm93RGFzaGVkR2x5
cGggPSAweDFBLAogIGtNZW51RXNjYXBlR2x5cGggPSAweDFCLAogIGtNZW51Q2xlYXJHbHlwaCA9
IDB4MUMsCiAga01lbnVMZWZ0RG91YmxlUXVvdGVzSmFwYW5lc2VHbHlwaCA9IDB4MUQsCiAga01l
bnVSaWdodERvdWJsZVF1b3Rlc0phcGFuZXNlR2x5cGggPSAweDFFLAogIGtNZW51VHJhZGVtYXJr
SmFwYW5lc2VHbHlwaCA9IDB4MUYsCiAga01lbnVCbGFua0dseXBoID0gMHg2MSwKICBrTWVudVBh
Z2VVcEdseXBoID0gMHg2MiwKICBrTWVudUNhcHNMb2NrR2x5cGggPSAweDYzLAogIGtNZW51TGVm
dEFycm93R2x5cGggPSAweDY0LAogIGtNZW51UmlnaHRBcnJvd0dseXBoID0gMHg2NSwKICBrTWVu
dU5vcnRod2VzdEFycm93R2x5cGggPSAweDY2LAogIGtNZW51SGVscEdseXBoID0gMHg2NywKICBr
TWVudVVwQXJyb3dHbHlwaCA9IDB4NjgsCiAga01lbnVTb3V0aGVhc3RBcnJvd0dseXBoID0gMHg2
OSwKICBrTWVudURvd25BcnJvd0dseXBoID0gMHg2QSwKICBrTWVudVBhZ2VEb3duR2x5cGggPSAw
eDZCLAogIGtNZW51QXBwbGVMb2dvT3V0bGluZUdseXBoID0gMHg2QywKICBrTWVudUNvbnRleHR1
YWxNZW51R2x5cGggPSAweDZELAogIGtNZW51UG93ZXJHbHlwaCA9IDB4NkUsCiAga01lbnVGMUds
eXBoID0gMHg2RiwKICBrTWVudUYyR2x5cGggPSAweDcwLAogIGtNZW51RjNHbHlwaCA9IDB4NzEs
CiAga01lbnVGNEdseXBoID0gMHg3MiwKICBrTWVudUY1R2x5cGggPSAweDczLAogIGtNZW51RjZH
bHlwaCA9IDB4NzQsCiAga01lbnVGN0dseXBoID0gMHg3NSwKICBrTWVudUY4R2x5cGggPSAweDc2
LAogIGtNZW51RjlHbHlwaCA9IDB4NzcsCiAga01lbnVGMTBHbHlwaCA9IDB4NzgsCiAga01lbnVG
MTFHbHlwaCA9IDB4NzksCiAga01lbnVGMTJHbHlwaCA9IDB4N0EsCiAga01lbnVGMTNHbHlwaCA9
IDB4ODcsCiAga01lbnVGMTRHbHlwaCA9IDB4ODgsCiAga01lbnVGMTVHbHlwaCA9IDB4ODksCiAg
a01lbnVDb250cm9sSVNPR2x5cGggPSAweDhBLAogIGtNZW51RWplY3RHbHlwaCA9IDB4OEMsCiAg
a01lbnVFaXN1R2x5cGggPSAweDhELAogIGtNZW51S2FuYUdseXBoID0gMHg4RSwKICBrTWVudUYx
NkdseXBoID0gMHg4RiwKICBrTWVudUYxN0dseXBoID0gMHg5MCwKICBrTWVudUYxOEdseXBoID0g
MHg5MSwKICBrTWVudUYxOUdseXBoID0gMHg5Mgp9OwojIDE5NCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9NZW51cy5oIiAzCnR5cGVkZWYgVUludDMyIE1lbnVBdHRyaWJ1dGVzOwplbnVtIHsK
CgoKCgogIGtNZW51QXR0ckV4Y2x1ZGVzTWFya0NvbHVtbiA9ICgxIDw8IDApLAoKCgoKCiAga01l
bnVBdHRyQXV0b0Rpc2FibGUgPSAoMSA8PCAyKSwKCgoKCgoKCiAga01lbnVBdHRyVXNlUGVuY2ls
R2x5cGggPSAoMSA8PCAzKSwKIyAyMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMu
aCIgMwogIGtNZW51QXR0ckhpZGRlbiA9ICgxIDw8IDQpLAojIDIzNSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9NZW51cy5oIiAzCiAga01lbnVBdHRyQ29uZGVuc2VTZXBhcmF0b3JzID0gKDEg
PDwgNSksCiMgMjQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01lbnVzLmgiIDMKICBrTWVu
dUF0dHJEb05vdENhY2hlSW1hZ2UgPSAoMSA8PCA2KSwKIyAyNjEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvTWVudXMuaCIgMwogIGtNZW51QXR0ckRvTm90VXNlVXNlckNvbW1hbmRLZXlzID0g
KDEgPDwgNykKfTsKIyAyNzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMuaCIgMwp0
eXBlZGVmIFVJbnQzMiBNZW51SXRlbUF0dHJpYnV0ZXM7CmVudW0gewoKCgoKICBrTWVudUl0ZW1B
dHRyRGlzYWJsZWQgPSAoMSA8PCAwKSwKCgoKCiAga01lbnVJdGVtQXR0ckljb25EaXNhYmxlZCA9
ICgxIDw8IDEpLAoKCgoKICBrTWVudUl0ZW1BdHRyU3VibWVudVBhcmVudENob29zYWJsZSA9ICgx
IDw8IDIpLAoKCgoKICBrTWVudUl0ZW1BdHRyRHluYW1pYyA9ICgxIDw8IDMpLAoKCgoKCiAga01l
bnVJdGVtQXR0ck5vdFByZXZpb3VzQWx0ZXJuYXRlID0gKDEgPDwgNCksCgoKCgoKCiAga01lbnVJ
dGVtQXR0ckhpZGRlbiA9ICgxIDw8IDUpLAoKCgoKICBrTWVudUl0ZW1BdHRyU2VwYXJhdG9yID0g
KDEgPDwgNiksCgoKCgoKICBrTWVudUl0ZW1BdHRyU2VjdGlvbkhlYWRlciA9ICgxIDw8IDcpLAoK
CgoKCiAga01lbnVJdGVtQXR0cklnbm9yZU1ldGEgPSAoMSA8PCA4KSwKCgoKCgogIGtNZW51SXRl
bUF0dHJBdXRvUmVwZWF0ID0gKDEgPDwgOSksCgoKCgoKCiAga01lbnVJdGVtQXR0clVzZVZpcnR1
YWxLZXkgPSAoMSA8PCAxMCksCgoKCgoKCgogIGtNZW51SXRlbUF0dHJDdXN0b21EcmF3ID0gKDEg
PDwgMTEpLAojIDM1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5oIiAzCiAga01l
bnVJdGVtQXR0ckluY2x1ZGVJbkNtZEtleU1hdGNoaW5nID0gKDEgPDwgMTIpLAojIDM3NCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5oIiAzCiAga01lbnVJdGVtQXR0ckF1dG9EaXNh
YmxlID0gKDEgPDwgMTMpLAojIDM5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5o
IiAzCiAga01lbnVJdGVtQXR0clVwZGF0ZVNpbmdsZUl0ZW0gPSAoMSA8PCAxNCkKfTsKIyA0MDYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMuaCIgMwp0eXBlZGVmIFVJbnQzMiBNZW51
VHJhY2tpbmdNb2RlOwplbnVtIHsKCgoKCiAga01lbnVUcmFja2luZ01vZGVNb3VzZSA9IDEsCgoK
CgogIGtNZW51VHJhY2tpbmdNb2RlS2V5Ym9hcmQgPSAyCn07CiMgNDI5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL01lbnVzLmgiIDMKdHlwZWRlZiBVSW50MzIgTWVudUV2ZW50T3B0aW9uczsK
ZW51bSB7CgoKCgogIGtNZW51RXZlbnRJbmNsdWRlRGlzYWJsZWRJdGVtcyA9IDB4MDAwMSwKCgoK
CiAga01lbnVFdmVudFF1ZXJ5T25seSA9IDB4MDAwMiwKCgoKCiAga01lbnVFdmVudERvbnRDaGVj
a1N1Ym1lbnVzID0gMHgwMDA0Cn07CgoKCgp0eXBlZGVmIFNJbnQxNiBNZW51SUQ7CnR5cGVkZWYg
VUludDE2IE1lbnVJdGVtSW5kZXg7CnR5cGVkZWYgT1NUeXBlIE1lbnVDb21tYW5kOwojIDQ2NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5oIiAzCnR5cGVkZWYgc3RydWN0IE9wYXF1
ZU1lbnVSZWYqIE1lbnVSZWY7Cgp0eXBlZGVmIE1lbnVSZWYgTWVudUhhbmRsZTsKIyA0NzggIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMuaCIgMwp0eXBlZGVmIEhhbmRsZSBNZW51QmFy
SGFuZGxlOwojIDQ5NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5oIiAzCnN0cnVj
dCBNZW51QmFySGVhZGVyIHsKCgoKCgogIFVJbnQxNiBsYXN0TWVudTsKCgoKCgogIFNJbnQxNiBs
YXN0UmlnaHQ7CgoKCgoKICBTSW50MTYgbWJSZXNJRDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTWVudUJh
ckhlYWRlciBNZW51QmFySGVhZGVyOwojIDUzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9N
ZW51cy5oIiAzCnN0cnVjdCBITWVudUJhckhlYWRlciB7CgoKCgoKICBVSW50MTYgbGFzdEhNZW51
OwoKCgoKCiAgUGl4TWFwSGFuZGxlIG1lbnVUaXRsZUJpdHM7Cn07CnR5cGVkZWYgc3RydWN0IEhN
ZW51QmFySGVhZGVyIEhNZW51QmFySGVhZGVyOwojIDU1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9NZW51cy5oIiAzCnN0cnVjdCBNZW51QmFyTWVudSB7CgoKCgogIE1lbnVSZWYgbWVudTsK
CgoKCgogIFNJbnQxNiBtZW51TGVmdDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTWVudUJhck1lbnUgTWVu
dUJhck1lbnU7CiMgNTc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01lbnVzLmgiIDMKc3Ry
dWN0IEhNZW51QmFyTWVudSB7CgoKCgogIE1lbnVSZWYgbWVudTsKCgoKCiAgU0ludDE2IHJlc2Vy
dmVkOwp9Owp0eXBlZGVmIHN0cnVjdCBITWVudUJhck1lbnUgSE1lbnVCYXJNZW51OwojIDYyMiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5oIiAzCnN0cnVjdCBNZW51VHJhY2tpbmdE
YXRhIHsKICBNZW51UmVmIG1lbnU7CiAgTWVudUl0ZW1JbmRleCBpdGVtU2VsZWN0ZWQ7CiAgTWVu
dUl0ZW1JbmRleCBpdGVtVW5kZXJNb3VzZTsKICBSZWN0IGl0ZW1SZWN0OwogIFNJbnQzMiB2aXJ0
dWFsTWVudVRvcDsKICBTSW50MzIgdmlydHVhbE1lbnVCb3R0b207Cn07CnR5cGVkZWYgc3RydWN0
IE1lbnVUcmFja2luZ0RhdGEgTWVudVRyYWNraW5nRGF0YTsKdHlwZWRlZiBNZW51VHJhY2tpbmdE
YXRhICogTWVudVRyYWNraW5nRGF0YVB0cjsKIyA2NDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvTWVudXMuaCIgMwplbnVtIHsKIyA2NTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVu
dXMuaCIgMwogIGtNZW51SXRlbURhdGFUZXh0ID0gKDEgPDwgMCksCgoKCgoKICBrTWVudUl0ZW1E
YXRhTWFyayA9ICgxIDw8IDEpLAoKCgoKCiAga01lbnVJdGVtRGF0YUNtZEtleSA9ICgxIDw8IDIp
LAoKCgoKCiAga01lbnVJdGVtRGF0YUNtZEtleUdseXBoID0gKDEgPDwgMyksCgoKCgoKICBrTWVu
dUl0ZW1EYXRhQ21kS2V5TW9kaWZpZXJzID0gKDEgPDwgNCksCgoKCgoKICBrTWVudUl0ZW1EYXRh
U3R5bGUgPSAoMSA8PCA1KSwKCgoKCgoKICBrTWVudUl0ZW1EYXRhRW5hYmxlZCA9ICgxIDw8IDYp
LAoKCgoKCiAga01lbnVJdGVtRGF0YUljb25FbmFibGVkID0gKDEgPDwgNyksCgoKCgoKCgogIGtN
ZW51SXRlbURhdGFJY29uSUQgPSAoMSA8PCA4KSwKIyA3MjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvTWVudXMuaCIgMwogIGtNZW51SXRlbURhdGFJY29uSGFuZGxlID0gKDEgPDwgOSksCgoK
CgoKICBrTWVudUl0ZW1EYXRhQ29tbWFuZElEID0gKDEgPDwgMTApLAojIDc0MCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9NZW51cy5oIiAzCiAga01lbnVJdGVtRGF0YVRleHRFbmNvZGluZyA9
ICgxIDw8IDExKSwKCgoKCgogIGtNZW51SXRlbURhdGFTdWJtZW51SUQgPSAoMSA8PCAxMiksCgoK
CgoKCgogIGtNZW51SXRlbURhdGFTdWJtZW51SGFuZGxlID0gKDEgPDwgMTMpLAoKCgoKCiAga01l
bnVJdGVtRGF0YUZvbnRJRCA9ICgxIDw8IDE0KSwKCgoKCgoKICBrTWVudUl0ZW1EYXRhUmVmY29u
ID0gKDEgPDwgMTUpLAojIDc3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5oIiAz
CiAga01lbnVJdGVtRGF0YUF0dHJpYnV0ZXMgPSAoMSA8PCAxNiksCiMgNzk1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL01lbnVzLmgiIDMKICBrTWVudUl0ZW1EYXRhQ0ZTdHJpbmcgPSAoMSA8
PCAxNyksCiMgODEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01lbnVzLmgiIDMKICBrTWVu
dUl0ZW1EYXRhUHJvcGVydGllcyA9ICgxIDw8IDE4KSwKCgoKCgogIGtNZW51SXRlbURhdGFJbmRl
bnQgPSAoMSA8PCAxOSksCiMgODI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01lbnVzLmgi
IDMKICBrTWVudUl0ZW1EYXRhQ21kVmlydHVhbEtleSA9ICgxIDw8IDIwKSwKIyA4MzggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMuaCIgMwogIGtNZW51SXRlbURhdGFBdHRyaWJ1dGVk
VGV4dCA9ICgxIDw8IDIxKSwKIyA4NTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMu
aCIgMwogIGtNZW51SXRlbURhdGFGb250ID0gKDEgPDwgMjIpLAogIGtNZW51SXRlbURhdGFBbGxE
YXRhVmVyc2lvbk9uZSA9IDB4MDAwRkZGRkYsCiAga01lbnVJdGVtRGF0YUFsbERhdGFWZXJzaW9u
VHdvID0ga01lbnVJdGVtRGF0YUFsbERhdGFWZXJzaW9uT25lIHwga01lbnVJdGVtRGF0YUNtZFZp
cnR1YWxLZXksCiAga01lbnVJdGVtRGF0YUFsbERhdGFWZXJzaW9uVGhyZWUgPSBrTWVudUl0ZW1E
YXRhQWxsRGF0YVZlcnNpb25Ud28gfCBrTWVudUl0ZW1EYXRhQXR0cmlidXRlZFRleHQgfCBrTWVu
dUl0ZW1EYXRhRm9udAp9OwoKdHlwZWRlZiBVSW50NjQgTWVudUl0ZW1EYXRhRmxhZ3M7CiMgODc4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01lbnVzLmgiIDMKc3RydWN0IE1lbnVJdGVtRGF0
YVJlYyB7CiAgTWVudUl0ZW1EYXRhRmxhZ3Mgd2hpY2hEYXRhOwogIFN0cmluZ1B0ciB0ZXh0Owog
IFVuaUNoYXIgbWFyazsKICBVbmlDaGFyIGNtZEtleTsKICBVSW50MzIgY21kS2V5R2x5cGg7CiAg
VUludDMyIGNtZEtleU1vZGlmaWVyczsKICBTdHlsZSBzdHlsZTsKICBCb29sZWFuIGVuYWJsZWQ7
CiAgQm9vbGVhbiBpY29uRW5hYmxlZDsKICBVSW50OCBmaWxsZXIxOwogIFNJbnQzMiBpY29uSUQ7
CiAgVUludDMyIGljb25UeXBlOwogIEhhbmRsZSBpY29uSGFuZGxlOwogIE1lbnVDb21tYW5kIGNt
ZElEOwogIFRleHRFbmNvZGluZyBlbmNvZGluZzsKICBNZW51SUQgc3VibWVudUlEOwogIE1lbnVS
ZWYgc3VibWVudUhhbmRsZTsKICBTSW50MzIgZm9udElEOwogIFVSZWZDb24gcmVmY29uOwogIE9w
dGlvbkJpdHMgYXR0cjsKICBDRlN0cmluZ1JlZiBjZlRleHQ7CiAgQ29sbGVjdGlvbiBwcm9wZXJ0
aWVzOwogIFVJbnQzMiBpbmRlbnQ7CiAgVUludDE2IGNtZFZpcnR1YWxLZXk7CiAgQ0ZBdHRyaWJ1
dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRUZXh0OwogIENURm9udFJlZiBmb250Owp9Owp0eXBlZGVm
IHN0cnVjdCBNZW51SXRlbURhdGFSZWMgTWVudUl0ZW1EYXRhUmVjOwp0eXBlZGVmIE1lbnVJdGVt
RGF0YVJlYyAqIE1lbnVJdGVtRGF0YVB0cjsKdHlwZWRlZiBVSW50MzIgTWVudUl0ZW1JRDsKCgoK
CgoKCmVudW0gewoKCgoKCgogIGtNZW51RGVmUHJvY1B0ciA9IDAsCgoKCgoKICBrTWVudURlZkNs
YXNzSUQgPSAxCn07Cgp0eXBlZGVmIFVJbnQzMiBNZW51RGVmVHlwZTsKCnR5cGVkZWYgdm9pZCAq
IE1lbnVEZWZVUFA7CiMgMTAwNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5oIiAz
CnN0cnVjdCBNZW51RGVmU3BlYyB7CgoKCgoKCiAgTWVudURlZlR5cGUgZGVmVHlwZTsKICB1bmlv
biB7CiAgICBNZW51RGVmVVBQIGRlZlByb2M7CiAgICBzdHJ1Y3QgewogICAgICBDRlN0cmluZ1Jl
ZiBjbGFzc0lEOwogICAgICBFdmVudFJlZiBpbml0RXZlbnQ7CiAgICB9IHZpZXc7CiAgfSB1Owp9
Owp0eXBlZGVmIHN0cnVjdCBNZW51RGVmU3BlYyBNZW51RGVmU3BlYzsKdHlwZWRlZiBNZW51RGVm
U3BlYyAqIE1lbnVEZWZTcGVjUHRyOwojIDIzODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
TWVudXMuaCIgMwplbnVtIHsKCgoKCiAga0hJTWVudURpc21pc3NlZEJ5U2VsZWN0aW9uID0gMSwK
CgoKCiAga0hJTWVudURpc21pc3NlZEJ5VXNlckNhbmNlbCA9IDIsCgoKCgoKICBrSElNZW51RGlz
bWlzc2VkQnlNb3VzZURvd24gPSAzLAoKCgoKICBrSElNZW51RGlzbWlzc2VkQnlNb3VzZVVwID0g
NCwKCgoKCiAga0hJTWVudURpc21pc3NlZEJ5S2V5RXZlbnQgPSA1LAoKCgoKCiAga0hJTWVudURp
c21pc3NlZEJ5QXBwU3dpdGNoID0gNiwKCgoKCiAga0hJTWVudURpc21pc3NlZEJ5VGltZW91dCA9
IDcsCgoKCgogIGtISU1lbnVEaXNtaXNzZWRCeUNhbmNlbE1lbnVUcmFja2luZyA9IDgsCgoKCgog
IGtISU1lbnVEaXNtaXNzZWRCeUFjdGl2YXRpb25DaGFuZ2UgPSA5LAoKCgoKCiAga0hJTWVudURp
c21pc3NlZEJ5Rm9jdXNDaGFuZ2UgPSAxMAp9OwojIDQyMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvTWVudXMuaCIgMwplbnVtIHsKICBrTWVudVByb3BlcnR5UGVyc2lzdGVudCA9IDB4MDAw
MDAwMDEKfTsKIyA0Njc0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01lbnVzLmgiIDMKZXh0
ZXJuIE9TU3RhdHVzCkdldE1lbnVUcmFja2luZ0RhdGEoCiAgTWVudVJlZiB0aGVNZW51LAogIE1l
bnVUcmFja2luZ0RhdGEgKiBvdXREYXRhKSA7CiMgNTQ3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9NZW51cy5oIiAzCmVudW0gewogIGtIaWVyYXJjaGljYWxGb250TWVudU9wdGlvbiA9IDB4
MDAwMDAwMDEKfTsKIyA1NTQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01lbnVzLmgiIDMK
ZW51bSB7CiAgZ2VzdGFsdENvbnRleHR1YWxNZW51QXR0ciA9ICdjbW51JywKICBnZXN0YWx0Q29u
dGV4dHVhbE1lbnVVbnVzZWRCaXQgPSAwLAogIGdlc3RhbHRDb250ZXh0dWFsTWVudVRyYXBBdmFp
bGFibGUgPSAxLAogIGdlc3RhbHRDb250ZXh0dWFsTWVudUhhc0F0dHJpYnV0ZUFuZE1vZGlmaWVy
S2V5cyA9IDIsCiAgZ2VzdGFsdENvbnRleHR1YWxNZW51SGFzVW5pY29kZVN1cHBvcnQgPSAzCn07
CgoKCgoKCmVudW0gewoKCgoKCgogIGtDTUhlbHBJdGVtTm9IZWxwID0gMCwKCgoKCgoKICBrQ01I
ZWxwSXRlbUFwcGxlR3VpZGUgPSAxLAojIDU1ODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
TWVudXMuaCIgMwogIGtDTUhlbHBJdGVtT3RoZXJIZWxwID0gMiwKIyA1NTg5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL01lbnVzLmgiIDMKICBrQ01IZWxwSXRlbVJlbW92ZUhlbHAgPSAzCn07
CgoKCgoKCmVudW0gewoKCgoKCiAga0NNTm90aGluZ1NlbGVjdGVkID0gMCwKCgoKCgoKCiAga0NN
TWVudUl0ZW1TZWxlY3RlZCA9IDEsCgoKCgoKCgogIGtDTVNob3dIZWxwU2VsZWN0ZWQgPSAzCn07
CiMgNTYyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5oIiAzCmVudW0gewojIDU2
NDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMuaCIgMwogIGtleUNvbnRleHR1YWxN
ZW51TmFtZSA9ICdwbmFtJywKCgoKCgogIGtleUNvbnRleHR1YWxNZW51Q29tbWFuZElEID0gJ2Nt
Y2QnLAoKCgoKCgogIGtleUNvbnRleHR1YWxNZW51U3VibWVudSA9ICdjbXNiJywKCgoKCgoKICBr
ZXlDb250ZXh0dWFsTWVudUF0dHJpYnV0ZXMgPSAnY21hdCcsCiMgNTY3NCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9NZW51cy5oIiAzCiAga2V5Q29udGV4dHVhbE1lbnVNb2RpZmllcnMgPSAn
Y21tZCcKfTsKIyA1OTA1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01lbnVzLmgiIDMKI2Rl
ZmluZSBrQ29udGV4dHVhbE1lbnVUeXBlSUQgKCBDRlVVSURHZXRDb25zdGFudFVVSURXaXRoQnl0
ZXMoIE5VTEwsIDB4MkYsIDB4NjUsIDB4MjIsIDB4RTksIDB4M0UsIDB4NjYsIDB4MTEsIDB4RDUs
IDB4ODAsIDB4QTcsIDB4MDAsIDB4MzAsIDB4NjUsIDB4QjMsIDB4MDAsIDB4QkMgKSApCgoKCgoK
I2RlZmluZSBrQ29udGV4dHVhbE1lbnVJbnRlcmZhY2VJRCAoIENGVVVJREdldENvbnN0YW50VVVJ
RFdpdGhCeXRlcyggTlVMTCwgMHgzMiwgMHg5OSwgMHg3QiwgMHg2MiwgMHgzRSwgMHg2NiwgMHgx
MSwgMHhENSwgMHhCRSwgMHhBQiwgMHgwMCwgMHgzMCwgMHg2NSwgMHhCMywgMHgwMCwgMHhCQyAp
ICkKCgoKCiNkZWZpbmUgQ01fSVVOS05PV05fQ19HVVRTIHZvaWQgKl9yZXNlcnZlZDsgU0ludDMy
ICgqUXVlcnlJbnRlcmZhY2UpKHZvaWQgKnRoaXNQb2ludGVyLCBDRlVVSURCeXRlcyBpaWQsIHZv
aWQgKiogcHB2KTsgVUludDMyICgqQWRkUmVmKSh2b2lkICp0aGlzUG9pbnRlcik7IFVJbnQzMiAo
KlJlbGVhc2UpKHZvaWQgKnRoaXNQb2ludGVyKQoKCgoKCgpzdHJ1Y3QgQ29udGV4dHVhbE1lbnVJ
bnRlcmZhY2VTdHJ1Y3QKewogICAgdm9pZCAqX3Jlc2VydmVkOyBTSW50MzIgKCpRdWVyeUludGVy
ZmFjZSkodm9pZCAqdGhpc1BvaW50ZXIsIENGVVVJREJ5dGVzIGlpZCwgdm9pZCAqKiBwcHYpOyBV
SW50MzIgKCpBZGRSZWYpKHZvaWQgKnRoaXNQb2ludGVyKTsgVUludDMyICgqUmVsZWFzZSkodm9p
ZCAqdGhpc1BvaW50ZXIpOwogICAgT1NTdGF0dXMgKCAqRXhhbWluZUNvbnRleHQgKSgKICAgICAg
ICAgIHZvaWQqIHRoaXNJbnN0YW5jZSwKICAgICAgICAgIGNvbnN0IEFFRGVzYyogaW5Db250ZXh0
LAogICAgICAgICBBRURlc2NMaXN0KiBvdXRDb21tYW5kUGFpcnMgKTsKIE9TU3RhdHVzICggKkhh
bmRsZVNlbGVjdGlvbiApKAogICAgICAgICB2b2lkKiB0aGlzSW5zdGFuY2UsCiAgICAgICAgICBB
RURlc2MqIGluQ29udGV4dCwKICAgICAgICAgU0ludDMyIGluQ29tbWFuZElEICk7CiB2b2lkICgg
KlBvc3RNZW51Q2xlYW51cCApKAogICAgICAgICB2b2lkKiB0aGlzSW5zdGFuY2UgKTsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgQ29udGV4dHVhbE1lbnVJbnRlcmZhY2VTdHJ1Y3QgQ29udGV4dHVhbE1lbnVJ
bnRlcmZhY2VTdHJ1Y3Q7CgoKCgoKCgpleHRlcm4gT1NTdGF0dXMKQ01QbHVnaW5FeGFtaW5lQ29u
dGV4dCgKICB2b2lkICogdGhpc0luc3RhbmNlLAogIGNvbnN0IEFFRGVzYyAqIGluQ29udGV4dCwK
ICBBRURlc2NMaXN0ICogb3V0Q29tbWFuZFBhaXJzKTsKIyA1OTU4ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL01lbnVzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkNNUGx1Z2luSGFuZGxlU2VsZWN0
aW9uKAogIHZvaWQgKiB0aGlzSW5zdGFuY2UsCiAgQUVEZXNjICogaW5Db250ZXh0LAogIFNJbnQz
MiBpbkNvbW1hbmRJRCk7CiMgNTk3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5o
IiAzCmV4dGVybiB2b2lkCkNNUGx1Z2luUG9zdE1lbnVDbGVhbnVwKHZvaWQgKiB0aGlzSW5zdGFu
Y2UpOwojIDYyOTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMuaCIgMwplbnVtIHsK
CiAga01lbnVEcmF3TXNnID0gMCwKICBrTWVudVNpemVNc2cgPSAyLAogIGtNZW51UG9wVXBNc2cg
PSAzLAogIGtNZW51Q2FsY0l0ZW1Nc2cgPSA1LAogIGtNZW51VGhlbWVTYXZ2eU1zZyA9IDcsCiAg
a01lbnVJbml0TXNnID0gOCwKICBrTWVudURpc3Bvc2VNc2cgPSA5LAogIGtNZW51RmluZEl0ZW1N
c2cgPSAxMCwKICBrTWVudUhpbGl0ZUl0ZW1Nc2cgPSAxMSwKICBrTWVudURyYXdJdGVtc01zZyA9
IDEyLAogIG1EcmF3TXNnID0ga01lbnVEcmF3TXNnLAogIG1TaXplTXNnID0ga01lbnVTaXplTXNn
LAogIG1Qb3BVcE1zZyA9IGtNZW51UG9wVXBNc2csCiAgbUNhbGNJdGVtTXNnID0ga01lbnVDYWxj
SXRlbU1zZwp9OwojIDYzMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMuaCIgMwpl
bnVtIHsKICBrVGhlbWVTYXZ2eU1lbnVSZXNwb25zZSA9IDB4NzQ3Mwp9OwojIDYzMzkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMuaCIgMwpzdHJ1Y3QgTURFRkhpbGl0ZUl0ZW1EYXRh
IHsKCgoKCgogIE1lbnVJdGVtSW5kZXggcHJldmlvdXNJdGVtOwoKCgoKCiAgTWVudUl0ZW1JbmRl
eCBuZXdJdGVtOwoKCgoKCiAgdm9pZCAqIGNvbnRleHQ7Cn07CnR5cGVkZWYgc3RydWN0IE1ERUZI
aWxpdGVJdGVtRGF0YSBNREVGSGlsaXRlSXRlbURhdGE7CnR5cGVkZWYgTURFRkhpbGl0ZUl0ZW1E
YXRhICogTURFRkhpbGl0ZUl0ZW1EYXRhUHRyOwp0eXBlZGVmIE1ERUZIaWxpdGVJdGVtRGF0YSBI
aWxpdGVNZW51SXRlbURhdGE7CnR5cGVkZWYgTURFRkhpbGl0ZUl0ZW1EYXRhUHRyIEhpbGl0ZU1l
bnVJdGVtRGF0YVB0cjsKIyA2MzczICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01lbnVzLmgi
IDMKc3RydWN0IE1ERUZEcmF3RGF0YSB7CgoKCgoKCiAgTWVudVRyYWNraW5nRGF0YSB0cmFja2lu
Z0RhdGE7CgoKCgoKICB2b2lkICogY29udGV4dDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTURFRkRyYXdE
YXRhIE1ERUZEcmF3RGF0YTsKdHlwZWRlZiBNREVGRHJhd0RhdGEgKiBNREVGRHJhd0RhdGFQdHI7
CiMgNjQwMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NZW51cy5oIiAzCnN0cnVjdCBNREVG
RmluZEl0ZW1EYXRhIHsKCgoKCgoKICBNZW51VHJhY2tpbmdEYXRhIHRyYWNraW5nRGF0YTsKCgoK
CgoKICB2b2lkICogY29udGV4dDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTURFRkZpbmRJdGVtRGF0YSBN
REVGRmluZEl0ZW1EYXRhOwp0eXBlZGVmIE1ERUZGaW5kSXRlbURhdGEgKiBNREVGRmluZEl0ZW1E
YXRhUHRyOwojIDY0MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMuaCIgMwpzdHJ1
Y3QgTURFRkRyYXdJdGVtc0RhdGEgewoKCgoKICBNZW51SXRlbUluZGV4IGZpcnN0SXRlbTsKCgoK
CiAgTWVudUl0ZW1JbmRleCBsYXN0SXRlbTsKCgoKCgoKICBNZW51VHJhY2tpbmdEYXRhICogdHJh
Y2tpbmdEYXRhOwoKCgoKCiAgdm9pZCAqIGNvbnRleHQ7Cn07CnR5cGVkZWYgc3RydWN0IE1ERUZE
cmF3SXRlbXNEYXRhIE1ERUZEcmF3SXRlbXNEYXRhOwp0eXBlZGVmIE1ERUZEcmF3SXRlbXNEYXRh
ICogTURFRkRyYXdJdGVtc0RhdGFQdHI7CgplbnVtIHsKICBtY3RBbGxJdGVtcyA9IC05OCwKICBt
Y3RMYXN0SURJbmRpYyA9IC05OQp9OwoKc3RydWN0IE1DRW50cnkgewogIE1lbnVJRCBtY3RJRDsK
ICBzaG9ydCBtY3RJdGVtOwogIFJHQkNvbG9yIG1jdFJHQjE7CiAgUkdCQ29sb3IgbWN0UkdCMjsK
ICBSR0JDb2xvciBtY3RSR0IzOwogIFJHQkNvbG9yIG1jdFJHQjQ7CiAgc2hvcnQgbWN0UmVzZXJ2
ZWQ7Cn07CnR5cGVkZWYgc3RydWN0IE1DRW50cnkgTUNFbnRyeTsKdHlwZWRlZiBNQ0VudHJ5ICog
TUNFbnRyeVB0cjsKdHlwZWRlZiBNQ0VudHJ5IE1DVGFibGVbMV07CnR5cGVkZWYgTUNFbnRyeSAq
IE1DVGFibGVQdHI7CnR5cGVkZWYgTUNUYWJsZVB0ciAqIE1DVGFibGVIYW5kbGU7CnN0cnVjdCBN
ZW51Q1JzcmMgewogIHNob3J0IG51bUVudHJpZXM7CiAgTUNUYWJsZSBtY0VudHJ5UmVjczsKfTsK
dHlwZWRlZiBzdHJ1Y3QgTWVudUNSc3JjIE1lbnVDUnNyYzsKdHlwZWRlZiBNZW51Q1JzcmMgKiBN
ZW51Q1JzcmNQdHI7CnR5cGVkZWYgTWVudUNSc3JjUHRyICogTWVudUNSc3JjSGFuZGxlOwoKCgpl
bnVtIHsKCgoKCgoKCiAgaE1lbnVDbWQgPSAyNywKIyA2NTAzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL01lbnVzLmgiIDMKICBrSW5zZXJ0SGllcmFyY2hpY2FsTWVudSA9IC0xLAoKCgoKCiAg
aGllck1lbnUgPSAtMQp9OwojIDc0NzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWVudXMu
aCIgMwp0eXBlZGVmIGxvbmcgKCAqIE1lbnVCYXJEZWZQcm9jUHRyKShzaG9ydCBzZWxlY3Rvciwg
c2hvcnQgbWVzc2FnZSwgc2hvcnQgcGFyYW1ldGVyMSwgbG9uZyBwYXJhbWV0ZXIyKTsKdHlwZWRl
ZiB2b2lkICggKiBNZW51SG9va1Byb2NQdHIpKHZvaWQpOwp0eXBlZGVmIHNob3J0ICggKiBNQmFy
SG9va1Byb2NQdHIpKFJlY3QgKiBtZW51UmVjdCk7CnR5cGVkZWYgTWVudUJhckRlZlByb2NQdHIg
TWVudUJhckRlZlVQUDsKdHlwZWRlZiBNZW51SG9va1Byb2NQdHIgTWVudUhvb2tVUFA7CnR5cGVk
ZWYgTUJhckhvb2tQcm9jUHRyIE1CYXJIb29rVVBQOwojIDc1ODAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvTWVudXMuaCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAyOSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISVRvb2xiYXIuaCIgMiAzCiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvSElUb29sYmFyLmgiIDMKZXh0ZXJuICJDIiB7CgoKdHlwZWRlZiBISU9iamVjdFJl
ZiBISVRvb2xiYXJSZWY7CnR5cGVkZWYgSElPYmplY3RSZWYgSElUb29sYmFySXRlbVJlZjsKCgoK
I2RlZmluZSBrSElUb29sYmFySWRlbnRpZmllcktleSBDRlNUUigiaWRlbnRpZmllciIpCiNkZWZp
bmUga0hJVG9vbGJhckRhdGFLZXkgQ0ZTVFIoImRhdGEiKQoKCgoKI2RlZmluZSBrSElUb29sYmFy
U2VwYXJhdG9ySWRlbnRpZmllciBDRlNUUigiY29tLmFwcGxlLmhpdG9vbGJveC50b29sYmFyLnNl
cGFyYXRvciIpCiNkZWZpbmUga0hJVG9vbGJhclNwYWNlSWRlbnRpZmllciBDRlNUUigiY29tLmFw
cGxlLmhpdG9vbGJveC50b29sYmFyLnNwYWNlIikKI2RlZmluZSBrSElUb29sYmFyRmxleGlibGVT
cGFjZUlkZW50aWZpZXIgQ0ZTVFIoImNvbS5hcHBsZS5oaXRvb2xib3gudG9vbGJhci5mbGV4aWJs
ZXNwYWNlIikKI2RlZmluZSBrSElUb29sYmFyQ3VzdG9taXplSWRlbnRpZmllciBDRlNUUigiY29t
LmFwcGxlLmhpdG9vbGJveC50b29sYmFyLmN1c3RvbWl6ZSIpCiNkZWZpbmUga0hJVG9vbGJhclBy
aW50SXRlbUlkZW50aWZpZXIgQ0ZTVFIoImNvbS5hcHBsZS5oaXRvb2xib3gudG9vbGJhci5wcmlu
dCIpCiNkZWZpbmUga0hJVG9vbGJhckZvbnRzSXRlbUlkZW50aWZpZXIgQ0ZTVFIoImNvbS5hcHBs
ZS5oaXRvb2xib3gudG9vbGJhci5mb250cyIpCgoKCgoKCgplbnVtIHsKCgoKCgoKICBrSElUb29s
YmFyRGlzcGxheU1vZGVEZWZhdWx0ID0gMCwKCgoKCgogIGtISVRvb2xiYXJEaXNwbGF5TW9kZUlj
b25BbmRMYWJlbCA9IDEsCgoKCgogIGtISVRvb2xiYXJEaXNwbGF5TW9kZUljb25Pbmx5ID0gMiwK
CgoKCiAga0hJVG9vbGJhckRpc3BsYXlNb2RlTGFiZWxPbmx5ID0gMwp9OwoKdHlwZWRlZiBVSW50
MzIgSElUb29sYmFyRGlzcGxheU1vZGU7CgoKCgoKZW51bSB7CgoKCgoKICBrSElUb29sYmFyRGlz
cGxheVNpemVEZWZhdWx0ID0gMCwKCgoKCiAga0hJVG9vbGJhckRpc3BsYXlTaXplTm9ybWFsID0g
MSwKCgoKCiAga0hJVG9vbGJhckRpc3BsYXlTaXplU21hbGwgPSAyCn07Cgp0eXBlZGVmIFVJbnQz
MiBISVRvb2xiYXJEaXNwbGF5U2l6ZTsKCgoKCgplbnVtIHsKCgoKCiAga0hJVG9vbGJhck5vQXR0
cmlidXRlcyA9IDAsCiMgMTM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJhci5o
IiAzCiAga0hJVG9vbGJhckF1dG9TYXZlc0NvbmZpZyA9ICgxIDw8IDApLAoKCgoKCgogIGtISVRv
b2xiYXJJc0NvbmZpZ3VyYWJsZSA9ICgxIDw8IDEpLAogIGtISVRvb2xiYXJWYWxpZEF0dHJzID0g
a0hJVG9vbGJhckF1dG9TYXZlc0NvbmZpZyB8IGtISVRvb2xiYXJJc0NvbmZpZ3VyYWJsZQp9OwoK
CgoKCgoKZW51bSB7CgoKCgoKCgogIGtISUNvbW1hbmRDdXN0b21pemVUb29sYmFyID0gJ3RjZmcn
LAoKCgoKCgogIGtISUNvbW1hbmRTaG93VG9vbGJhciA9ICd0YnNoJywKCgoKCgoKICBrSElDb21t
YW5kSGlkZVRvb2xiYXIgPSAndGJoZCcsCiMgMTg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJVG9vbGJhci5oIiAzCiAga0hJQ29tbWFuZFRvZ2dsZVRvb2xiYXIgPSAndGJ0ZycsCiMgMTk4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJhci5oIiAzCiAga0hJQ29tbWFuZFRv
Z2dsZUFsbFRvb2xiYXJzID0gJ3RidGEnLAojIDIwOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9ISVRvb2xiYXIuaCIgMwogIGtISUNvbW1hbmRDeWNsZVRvb2xiYXJNb2RlU21hbGxlciA9ICd0
Ym1zJywKIyAyMjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMKICBr
SElDb21tYW5kQ3ljbGVUb29sYmFyTW9kZUxhcmdlciA9ICd0Ym1sJywKIyAyMzAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMKICBrSElUb29sYmFyQ29tbWFuZFByZXNz
QWN0aW9uID0gJ3RicHInCn07CiMgMjUxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9v
bGJhci5oIiAzCmVudW0gewogIGtFdmVudFBhcmFtVG9vbGJhciA9ICd0YmFyJywKICBrRXZlbnRQ
YXJhbVRvb2xiYXJJdGVtID0gJ3RiaXQnLAogIGtFdmVudFBhcmFtVG9vbGJhckl0ZW1JZGVudGlm
aWVyID0gJ3RiaWknLAogIGtFdmVudFBhcmFtVG9vbGJhckl0ZW1Db25maWdEYXRhID0gJ3RiaWQn
LAogIHR5cGVISVRvb2xiYXJSZWYgPSAndGJhcicsCiAgdHlwZUhJVG9vbGJhckl0ZW1SZWYgPSAn
dGJpdCcKfTsKIyAyODIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMK
ZW51bSB7CiAga0V2ZW50VG9vbGJhckdldERlZmF1bHRJZGVudGlmaWVycyA9IDEKfTsKIyAzMTAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMKZW51bSB7CiAga0V2ZW50
VG9vbGJhckdldEFsbG93ZWRJZGVudGlmaWVycyA9IDIKfTsKIyAzNDkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMKZW51bSB7CiAga0V2ZW50VG9vbGJhckdldFNlbGVj
dGFibGVJZGVudGlmaWVycyA9IDEwCn07CiMgMzgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJVG9vbGJhci5oIiAzCmVudW0gewogIGtFdmVudFRvb2xiYXJDcmVhdGVJdGVtV2l0aElkZW50
aWZpZXIgPSAzCn07CiMgNDE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJhci5o
IiAzCmVudW0gewogIGtFdmVudFRvb2xiYXJDcmVhdGVJdGVtRnJvbURyYWcgPSA0Cn07CiMgNDQx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJhci5oIiAzCmVudW0gewogIGtFdmVu
dFRvb2xiYXJJdGVtQWRkZWQgPSA1Cn07CiMgNDY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJVG9vbGJhci5oIiAzCmVudW0gewogIGtFdmVudFRvb2xiYXJJdGVtUmVtb3ZlZCA9IDYKfTsK
IyA0ODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMKZW51bSB7CiAg
a0V2ZW50VG9vbGJhckRpc3BsYXlNb2RlQ2hhbmdlZCA9IDcKfTsKIyA1MDYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMKZW51bSB7CiAga0V2ZW50VG9vbGJhckRpc3Bs
YXlTaXplQ2hhbmdlZCA9IDgKfTsKIyA1MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElU
b29sYmFyLmgiIDMKZW51bSB7CiAga0V2ZW50VG9vbGJhckxheW91dENoYW5nZWQgPSA5Cn07CiMg
NTUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJhci5oIiAzCmVudW0gewogIGtF
dmVudFRvb2xiYXJCZWdpbk11bHRpQ2hhbmdlID0gMTIKfTsKIyA1NzQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMKZW51bSB7CiAga0V2ZW50VG9vbGJhckVuZE11bHRp
Q2hhbmdlID0gMTMKfTsKIyA2MDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYmFy
LmgiIDMKZW51bSB7CiAga0V2ZW50VG9vbGJhckl0ZW1JbWFnZUNoYW5nZWQgPSAxCn07CiMgNjI3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJhci5oIiAzCmVudW0gewogIGtFdmVu
dFRvb2xiYXJJdGVtTGFiZWxDaGFuZ2VkID0gMgp9OwojIDY0NiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISVRvb2xiYXIuaCIgMwplbnVtIHsKICBrRXZlbnRUb29sYmFySXRlbUhlbHBUZXh0
Q2hhbmdlZCA9IDMKfTsKIyA2NjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYmFy
LmgiIDMKZW51bSB7CiAga0V2ZW50VG9vbGJhckl0ZW1Db21tYW5kSURDaGFuZ2VkID0gNAp9Owoj
IDY5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRvb2xiYXIuaCIgMwplbnVtIHsKICBr
RXZlbnRUb29sYmFySXRlbUdldFBlcnNpc3RlbnREYXRhID0gNQp9OwojIDcxNyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISVRvb2xiYXIuaCIgMwplbnVtIHsKICBrRXZlbnRUb29sYmFySXRl
bUNyZWF0ZUN1c3RvbVZpZXcgPSA2Cn07CiMgNzQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJVG9vbGJhci5oIiAzCmVudW0gewogIGtFdmVudFRvb2xiYXJJdGVtRW5hYmxlZFN0YXRlQ2hh
bmdlZCA9IDcKfTsKIyA3NzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYmFyLmgi
IDMKZW51bSB7CiAga0V2ZW50VG9vbGJhckl0ZW1TZWxlY3RlZFN0YXRlQ2hhbmdlZCA9IDEyCn07
CiMgNzkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJhci5oIiAzCmVudW0gewog
IGtFdmVudFRvb2xiYXJJdGVtUGVyZm9ybUFjdGlvbiA9IDgKfTsKIyA4MjggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMKZW51bSB7CiAga0V2ZW50VG9vbGJhckl0ZW1X
b3VsZEFjY2VwdERyb3AgPSAxMAp9OwojIDg1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVRvb2xiYXIuaCIgMwplbnVtIHsKICBrRXZlbnRUb29sYmFySXRlbUFjY2VwdERyb3AgPSAxMQp9
OwojIDg2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRvb2xiYXIuaCIgMwplbnVtIHsK
ICBrRXZlbnRQYXJhbVRvb2xiYXJEaXNwbGF5TW9kZSA9ICd0YmRtJywKICBrRXZlbnRQYXJhbVRv
b2xiYXJEaXNwbGF5U2l6ZSA9ICd0YmRzJywKICB0eXBlSElUb29sYmFyRGlzcGxheU1vZGUgPSAn
dGJkbScsCiAgdHlwZUhJVG9vbGJhckRpc3BsYXlTaXplID0gJ3RiZHMnCn07CiMgODk4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJhci5oIiAzCmVudW0gewogIGtFdmVudFRvb2xi
YXJJdGVtVmlld0NvbmZpZ0Zvck1vZGUgPSAzCn07CiMgOTI4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0hJVG9vbGJhci5oIiAzCmVudW0gewogIGtFdmVudFRvb2xiYXJJdGVtVmlld0NvbmZp
Z0ZvclNpemUgPSA0Cn07CiMgOTUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJh
ci5oIiAzCmVudW0gewogIGtFdmVudFRvb2xiYXJJdGVtVmlld0VudGVyQ29uZmlnTW9kZSA9IDUK
fTsKIyA5NzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMKZW51bSB7
CiAga0V2ZW50VG9vbGJhckl0ZW1WaWV3RXhpdENvbmZpZ01vZGUgPSA2Cn07CgoKCgoKCmVudW0g
ewoKCgoKICBrSElUb29sYmFySXRlbU5vQXR0cmlidXRlcyA9IDAsCiMgOTk4ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJVG9vbGJhci5oIiAzCiAga0hJVG9vbGJhckl0ZW1BbGxvd0R1cGxp
Y2F0ZXMgPSAoMSA8PCAwKSwKCgoKCgogIGtISVRvb2xiYXJJdGVtQ2FudEJlUmVtb3ZlZCA9ICgx
IDw8IDEpLAojIDEwMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMK
ICBrSElUb29sYmFySXRlbUFuY2hvcmVkTGVmdCA9ICgxIDw8IDIpLAojIDEwMjQgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYmFyLmgiIDMKICBrSElUb29sYmFySXRlbUlzU2VwYXJh
dG9yID0gKDEgPDwgMyksCgoKCgoKCiAga0hJVG9vbGJhckl0ZW1TZW5kQ21kVG9Vc2VyRm9jdXMg
PSAoMSA8PCA0KSwKIyAxMDQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJhci5o
IiAzCiAga0hJVG9vbGJhckl0ZW1MYWJlbERpc2FibGVkID0gKDEgPDwgNSksCgoKCgoKCiAga0hJ
VG9vbGJhckl0ZW1EaXNhYmxlZCA9ICgxIDw8IDYpLAoKCgoKCiAga0hJVG9vbGJhckl0ZW1TZWxl
Y3RlZCA9ICgxIDw8IDcpLAoKCgoKICBrSElUb29sYmFySXRlbVZhbGlkQXR0cnMgPSBrSElUb29s
YmFySXRlbUFsbG93RHVwbGljYXRlcyB8IGtISVRvb2xiYXJJdGVtSXNTZXBhcmF0b3IgfCBrSElU
b29sYmFySXRlbUNhbnRCZVJlbW92ZWQgfCBrSElUb29sYmFySXRlbUFuY2hvcmVkTGVmdCB8IGtI
SVRvb2xiYXJJdGVtU2VuZENtZFRvVXNlckZvY3VzIHwga0hJVG9vbGJhckl0ZW1MYWJlbERpc2Fi
bGVkIHwga0hJVG9vbGJhckl0ZW1EaXNhYmxlZCB8IGtISVRvb2xiYXJJdGVtU2VsZWN0ZWQsCgoK
CgoKICBrSElUb29sYmFySXRlbU11dGFibGVBdHRycyA9IGtISVRvb2xiYXJJdGVtQ2FudEJlUmVt
b3ZlZCB8IGtISVRvb2xiYXJJdGVtQW5jaG9yZWRMZWZ0IHwga0hJVG9vbGJhckl0ZW1MYWJlbERp
c2FibGVkIHwga0hJVG9vbGJhckl0ZW1EaXNhYmxlZCB8IGtISVRvb2xiYXJJdGVtU2VsZWN0ZWQK
fTsKIyAxNjQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJhci5oIiAzCiNkZWZp
bmUga0hJVG9vbGJhckl0ZW1DbGFzc0lEIENGU1RSKCJjb20uYXBwbGUuaGl0b29sYmFyaXRlbSIp
CiMgMjUzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRvb2xiYXIuaCIgMwp9CiMgMzgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYm94LmgiIDIgMwoKCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElWaWV3LmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJVmlldy5oIiAzCiNkZWZpbmUgX19ISVZJRVdfXyAKCgojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbHMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQ29udHJvbHMuaCIgMwojZGVmaW5lIF9fQ09OVFJPTFNfXyAKIyA0MCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9Db250cm9scy5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9UZXh0RWRpdC5oIiAxIDMKIyAyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9U
ZXh0RWRpdC5oIiAzCiNkZWZpbmUgX19URVhURURJVF9fIAojIDM5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL1RleHRFZGl0LmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gs
IDIpCgp0eXBlZGVmIHN0cnVjdCBURVJlYyBURVJlYzsKdHlwZWRlZiBURVJlYyAqIFRFUHRyOwp0
eXBlZGVmIFRFUHRyICogVEVIYW5kbGU7CnR5cGVkZWYgdm9pZCAoICogSGlnaEhvb2tQcm9jUHRy
KShjb25zdCBSZWN0ICpyLCBURVB0ciBwVEUpOwp0eXBlZGVmIEJvb2xlYW4gKCAqIEVPTEhvb2tQ
cm9jUHRyKShjaGFyIHRoZUNoYXIsIFRFUHRyIHBURSwgVEVIYW5kbGUgaFRFKTsKdHlwZWRlZiB2
b2lkICggKiBDYXJldEhvb2tQcm9jUHRyKShjb25zdCBSZWN0ICpyLCBURVB0ciBwVEUpOwp0eXBl
ZGVmIHVuc2lnbmVkIHNob3J0ICggKiBXaWR0aEhvb2tQcm9jUHRyKSh1bnNpZ25lZCBzaG9ydCB0
ZXh0TGVuLCB1bnNpZ25lZCBzaG9ydCB0ZXh0T2Zmc2V0LCB2b2lkICp0ZXh0QnVmZmVyUHRyLCBU
RVB0ciBwVEUsIFRFSGFuZGxlIGhURSk7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgKCAqIFRleHRX
aWR0aEhvb2tQcm9jUHRyKSh1bnNpZ25lZCBzaG9ydCB0ZXh0TGVuLCB1bnNpZ25lZCBzaG9ydCB0
ZXh0T2Zmc2V0LCB2b2lkICp0ZXh0QnVmZmVyUHRyLCBURVB0ciBwVEUsIFRFSGFuZGxlIGhURSk7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgKCAqIE5XaWR0aEhvb2tQcm9jUHRyKSh1bnNpZ25lZCBz
aG9ydCBzdHlsZVJ1bkxlbiwgdW5zaWduZWQgc2hvcnQgc3R5bGVSdW5PZmZzZXQsIHNob3J0IHNs
b3AsIHNob3J0IGRpcmVjdGlvbiwgdm9pZCAqdGV4dEJ1ZmZlclB0ciwgc2hvcnQgKmxpbmVTdGFy
dCwgVEVQdHIgcFRFLCBURUhhbmRsZSBoVEUpOwp0eXBlZGVmIHZvaWQgKCAqIERyYXdIb29rUHJv
Y1B0cikodW5zaWduZWQgc2hvcnQgdGV4dE9mZnNldCwgdW5zaWduZWQgc2hvcnQgZHJhd0xlbiwg
dm9pZCAqdGV4dEJ1ZmZlclB0ciwgVEVQdHIgcFRFLCBURUhhbmRsZSBoVEUpOwp0eXBlZGVmIEJv
b2xlYW4gKCAqIEhpdFRlc3RIb29rUHJvY1B0cikodW5zaWduZWQgc2hvcnQgc3R5bGVSdW5MZW4s
IHVuc2lnbmVkIHNob3J0IHN0eWxlUnVuT2Zmc2V0LCB1bnNpZ25lZCBzaG9ydCBzbG9wLCB2b2lk
ICp0ZXh0QnVmZmVyUHRyLCBURVB0ciBwVEUsIFRFSGFuZGxlIGhURSwgdW5zaWduZWQgc2hvcnQg
KnBpeGVsV2lkdGgsIHVuc2lnbmVkIHNob3J0ICpjaGFyT2Zmc2V0LCBCb29sZWFuICpwaXhlbElu
Q2hhcik7CnR5cGVkZWYgdm9pZCAoICogVEVGaW5kV29yZFByb2NQdHIpKHVuc2lnbmVkIHNob3J0
IGN1cnJlbnRQb3MsIHNob3J0IGNhbGxlciwgVEVQdHIgcFRFLCBURUhhbmRsZSBoVEUsIHVuc2ln
bmVkIHNob3J0ICp3b3JkU3RhcnQsIHVuc2lnbmVkIHNob3J0ICp3b3JkRW5kKTsKdHlwZWRlZiB2
b2lkICggKiBURVJlY2FsY1Byb2NQdHIpKFRFUHRyIHBURSwgdW5zaWduZWQgc2hvcnQgY2hhbmdl
TGVuZ3RoLCB1bnNpZ25lZCBzaG9ydCAqbGluZVN0YXJ0LCB1bnNpZ25lZCBzaG9ydCAqZmlyc3RD
aGFyLCB1bnNpZ25lZCBzaG9ydCAqbGFzdENoYXIpOwp0eXBlZGVmIHZvaWQgKCAqIFRFRG9UZXh0
UHJvY1B0cikoVEVQdHIgcFRFLCB1bnNpZ25lZCBzaG9ydCBmaXJzdENoYXIsIHVuc2lnbmVkIHNo
b3J0IGxhc3RDaGFyLCBzaG9ydCBzZWxlY3RvciwgR3JhZlB0ciAqY3VycmVudEdyYWZQb3J0LCBz
aG9ydCAqY2hhclBvc2l0aW9uKTsKdHlwZWRlZiBCb29sZWFuICggKiBURUNsaWNrTG9vcFByb2NQ
dHIpKFRFUHRyIHBURSk7CnR5cGVkZWYgQm9vbGVhbiAoICogV29yZEJyZWFrUHJvY1B0cikoUHRy
IHRleHQsIHNob3J0IGNoYXJQb3MpOwojIDIwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9U
ZXh0RWRpdC5oIiAzCnR5cGVkZWYgSGlnaEhvb2tQcm9jUHRyIEhpZ2hIb29rVVBQOwp0eXBlZGVm
IEVPTEhvb2tQcm9jUHRyIEVPTEhvb2tVUFA7CnR5cGVkZWYgQ2FyZXRIb29rUHJvY1B0ciBDYXJl
dEhvb2tVUFA7CnR5cGVkZWYgV2lkdGhIb29rUHJvY1B0ciBXaWR0aEhvb2tVUFA7CnR5cGVkZWYg
VGV4dFdpZHRoSG9va1Byb2NQdHIgVGV4dFdpZHRoSG9va1VQUDsKdHlwZWRlZiBOV2lkdGhIb29r
UHJvY1B0ciBOV2lkdGhIb29rVVBQOwp0eXBlZGVmIERyYXdIb29rUHJvY1B0ciBEcmF3SG9va1VQ
UDsKdHlwZWRlZiBIaXRUZXN0SG9va1Byb2NQdHIgSGl0VGVzdEhvb2tVUFA7CnR5cGVkZWYgVEVG
aW5kV29yZFByb2NQdHIgVEVGaW5kV29yZFVQUDsKdHlwZWRlZiBURVJlY2FsY1Byb2NQdHIgVEVS
ZWNhbGNVUFA7CnR5cGVkZWYgVEVEb1RleHRQcm9jUHRyIFRFRG9UZXh0VVBQOwp0eXBlZGVmIFRF
Q2xpY2tMb29wUHJvY1B0ciBURUNsaWNrTG9vcFVQUDsKdHlwZWRlZiBXb3JkQnJlYWtQcm9jUHRy
IFdvcmRCcmVha1VQUDsKc3RydWN0IFRFUmVjIHsKICBSZWN0IGRlc3RSZWN0OwogIFJlY3Qgdmll
d1JlY3Q7CiAgUmVjdCBzZWxSZWN0OwogIHNob3J0IGxpbmVIZWlnaHQ7CiAgc2hvcnQgZm9udEFz
Y2VudDsKICBQb2ludCBzZWxQb2ludDsKICBzaG9ydCBzZWxTdGFydDsKICBzaG9ydCBzZWxFbmQ7
CiAgc2hvcnQgYWN0aXZlOwogIFdvcmRCcmVha1VQUCB3b3JkQnJlYWs7CiAgVEVDbGlja0xvb3BV
UFAgY2xpY2tMb29wOwogIGxvbmcgY2xpY2tUaW1lOwogIHNob3J0IGNsaWNrTG9jOwogIGxvbmcg
Y2FyZXRUaW1lOwogIHNob3J0IGNhcmV0U3RhdGU7CiAgc2hvcnQganVzdDsKICBzaG9ydCB0ZUxl
bmd0aDsKICBIYW5kbGUgaFRleHQ7CiAgbG9uZyBoRGlzcGF0Y2hSZWM7CiAgc2hvcnQgY2xpa1N0
dWZmOwogIHNob3J0IGNyT25seTsKICBzaG9ydCB0eEZvbnQ7CiAgU3R5bGVGaWVsZCB0eEZhY2U7
CiAgc2hvcnQgdHhNb2RlOwogIHNob3J0IHR4U2l6ZTsKICBHcmFmUHRyIGluUG9ydDsKICBIaWdo
SG9va1VQUCBoaWdoSG9vazsKICBDYXJldEhvb2tVUFAgY2FyZXRIb29rOwogIHNob3J0IG5MaW5l
czsKICBzaG9ydCBsaW5lU3RhcnRzWzE2MDAxXTsKfTsKCmVudW0gewoKICB0ZUp1c3RMZWZ0ID0g
MCwKICB0ZUp1c3RDZW50ZXIgPSAxLAogIHRlSnVzdFJpZ2h0ID0gLTEsCiAgdGVGb3JjZUxlZnQg
PSAtMiwKICB0ZUZsdXNoRGVmYXVsdCA9IDAsCiAgdGVDZW50ZXIgPSAxLAogIHRlRmx1c2hSaWdo
dCA9IC0xLAogIHRlRmx1c2hMZWZ0ID0gLTIKfTsKCmVudW0gewoKICBmb250Qml0ID0gMCwKICBm
YWNlQml0ID0gMSwKICBzaXplQml0ID0gMiwKICBjbHJCaXQgPSAzLAogIGFkZFNpemVCaXQgPSA0
LAogIHRvZ2dsZUJpdCA9IDUKfTsKCmVudW0gewoKICBkb0ZvbnQgPSAxLAogIGRvRmFjZSA9IDIs
CiAgZG9TaXplID0gNCwKICBkb0NvbG9yID0gOCwKICBkb0FsbCA9IDE1LAogIGFkZFNpemUgPSAx
NiwKICBkb1RvZ2dsZSA9IDMyCn07CgplbnVtIHsKCiAgRU9MSG9vayA9IDAsCiAgRFJBV0hvb2sg
PSA0LAogIFdJRFRISG9vayA9IDgsCiAgSElUVEVTVEhvb2sgPSAxMiwKICBuV0lEVEhIb29rID0g
MjQsCiAgVGV4dFdpZHRoSG9vayA9IDI4Cn07CgplbnVtIHsKCiAgaW50RU9MSG9vayA9IDAsCiAg
aW50RHJhd0hvb2sgPSAxLAogIGludFdpZHRoSG9vayA9IDIsCiAgaW50SGl0VGVzdEhvb2sgPSAz
LAogIGludE5XaWR0aEhvb2sgPSA2LAogIGludFRleHRXaWR0aEhvb2sgPSA3LAogIGludElubGlu
ZUlucHV0VFNNVEVQcmVVcGRhdGVIb29rID0gOCwKICBpbnRJbmxpbmVJbnB1dFRTTVRFUG9zdFVw
ZGF0ZUhvb2sgPSA5Cn07CgplbnVtIHsKCiAgdGVGQXV0b1Njcm9sbCA9IDAsCiAgdGVGVGV4dEJ1
ZmZlcmluZyA9IDEsCiAgdGVGT3V0bGluZUhpbGl0ZSA9IDIsCiAgdGVGSW5saW5lSW5wdXQgPSAz
LAogIHRlRlVzZVdoaXRlQmFja2dyb3VuZCA9IDQsCiAgdGVGVXNlSW5saW5lSW5wdXQgPSA1LAog
IHRlRklubGluZUlucHV0QXV0b1Njcm9sbCA9IDYKfTsKCmVudW0gewoKCgoKCgogIHRlRklkbGVX
aXRoRXZlbnRMb29wVGltZXIgPSA3Cn07CgplbnVtIHsKCiAgdGVCaXRDbGVhciA9IDAsCiAgdGVC
aXRTZXQgPSAxLAogIHRlQml0VGVzdCA9IC0xCn07CgplbnVtIHsKCiAgdGVXb3JkU2VsZWN0ID0g
NCwKICB0ZVdvcmREcmFnID0gOCwKICB0ZUZyb21GaW5kID0gMTIsCiAgdGVGcm9tUmVjYWwgPSAx
Ngp9OwoKZW51bSB7CgogIHRlRmluZCA9IDAsCiAgdGVIaWdobGlnaHQgPSAxLAogIHRlRHJhdyA9
IC0xLAogIHRlQ2FyZXQgPSAtMgp9OwoKCnR5cGVkZWYgY2hhciBDaGFyc1szMjAwMV07CnR5cGVk
ZWYgY2hhciAqIENoYXJzUHRyOwp0eXBlZGVmIENoYXJzUHRyICogQ2hhcnNIYW5kbGU7CnN0cnVj
dCBTdHlsZVJ1biB7CiAgc2hvcnQgc3RhcnRDaGFyOwogIHNob3J0IHN0eWxlSW5kZXg7Cn07CnR5
cGVkZWYgc3RydWN0IFN0eWxlUnVuIFN0eWxlUnVuOwpzdHJ1Y3QgU1RFbGVtZW50IHsKICBzaG9y
dCBzdENvdW50OwogIHNob3J0IHN0SGVpZ2h0OwogIHNob3J0IHN0QXNjZW50OwogIHNob3J0IHN0
Rm9udDsKICBTdHlsZUZpZWxkIHN0RmFjZTsKICBzaG9ydCBzdFNpemU7CiAgUkdCQ29sb3Igc3RD
b2xvcjsKfTsKdHlwZWRlZiBzdHJ1Y3QgU1RFbGVtZW50IFNURWxlbWVudDsKdHlwZWRlZiBTVEVs
ZW1lbnQgVEVTdHlsZVRhYmxlWzE3NzddOwp0eXBlZGVmIFNURWxlbWVudCAqIFNUUHRyOwp0eXBl
ZGVmIFNUUHRyICogU1RIYW5kbGU7CnN0cnVjdCBMSEVsZW1lbnQgewogIHNob3J0IGxoSGVpZ2h0
OwogIHNob3J0IGxoQXNjZW50Owp9Owp0eXBlZGVmIHN0cnVjdCBMSEVsZW1lbnQgTEhFbGVtZW50
Owp0eXBlZGVmIExIRWxlbWVudCBMSFRhYmxlWzgwMDFdOwp0eXBlZGVmIExIRWxlbWVudCAqIExI
UHRyOwp0eXBlZGVmIExIUHRyICogTEhIYW5kbGU7CnN0cnVjdCBTY3JwU1RFbGVtZW50IHsKICBT
SW50MzIgc2NycFN0YXJ0Q2hhcjsKICBTSW50MTYgc2NycEhlaWdodDsKICBTSW50MTYgc2NycEFz
Y2VudDsKICBTSW50MTYgc2NycEZvbnQ7CiAgU3R5bGVGaWVsZCBzY3JwRmFjZTsKICBTSW50MTYg
c2NycFNpemU7CiAgUkdCQ29sb3Igc2NycENvbG9yOwp9Owp0eXBlZGVmIHN0cnVjdCBTY3JwU1RF
bGVtZW50IFNjcnBTVEVsZW1lbnQ7Cgp0eXBlZGVmIFNjcnBTVEVsZW1lbnQgU2NycFNUVGFibGVb
MTYwMV07CnN0cnVjdCBTdFNjcnBSZWMgewogIHNob3J0IHNjcnBOU3R5bGVzOwogIFNjcnBTVFRh
YmxlIHNjcnBTdHlsZVRhYjsKfTsKdHlwZWRlZiBzdHJ1Y3QgU3RTY3JwUmVjIFN0U2NycFJlYzsK
dHlwZWRlZiBTdFNjcnBSZWMgKiBTdFNjcnBQdHI7CnR5cGVkZWYgU3RTY3JwUHRyICogU3RTY3Jw
SGFuZGxlOwpzdHJ1Y3QgTnVsbFN0UmVjIHsKICBsb25nIHRlUmVzZXJ2ZWQ7CiAgU3RTY3JwSGFu
ZGxlIG51bGxTY3JhcDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTnVsbFN0UmVjIE51bGxTdFJlYzsKdHlw
ZWRlZiBOdWxsU3RSZWMgKiBOdWxsU3RQdHI7CnR5cGVkZWYgTnVsbFN0UHRyICogTnVsbFN0SGFu
ZGxlOwpzdHJ1Y3QgVEVTdHlsZVJlYyB7CiAgc2hvcnQgblJ1bnM7CiAgc2hvcnQgblN0eWxlczsK
ICBTVEhhbmRsZSBzdHlsZVRhYjsKICBMSEhhbmRsZSBsaFRhYjsKICBsb25nIHRlUmVmQ29uOwog
IE51bGxTdEhhbmRsZSBudWxsU3R5bGU7CiAgU3R5bGVSdW4gcnVuc1s4MDAxXTsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgVEVTdHlsZVJlYyBURVN0eWxlUmVjOwp0eXBlZGVmIFRFU3R5bGVSZWMgKiBURVN0
eWxlUHRyOwp0eXBlZGVmIFRFU3R5bGVQdHIgKiBURVN0eWxlSGFuZGxlOwpzdHJ1Y3QgVGV4dFN0
eWxlIHsKICBzaG9ydCB0c0ZvbnQ7CiAgU3R5bGVGaWVsZCB0c0ZhY2U7CiAgc2hvcnQgdHNTaXpl
OwogIFJHQkNvbG9yIHRzQ29sb3I7Cn07CnR5cGVkZWYgc3RydWN0IFRleHRTdHlsZSBUZXh0U3R5
bGU7CnR5cGVkZWYgVGV4dFN0eWxlICogVGV4dFN0eWxlUHRyOwp0eXBlZGVmIFRleHRTdHlsZVB0
ciAqIFRleHRTdHlsZUhhbmRsZTsKdHlwZWRlZiBzaG9ydCBURUludEhvb2s7CiMgNDM3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL1RleHRFZGl0LmgiIDMKZXh0ZXJuIEhpZ2hIb29rVVBQCk5l
d0hpZ2hIb29rVVBQKEhpZ2hIb29rUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDQ0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RWRpdC5o
IiAzCmV4dGVybiBFT0xIb29rVVBQCk5ld0VPTEhvb2tVUFAoRU9MSG9va1Byb2NQdHIgdXNlclJv
dXRpbmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA0NTkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvVGV4dEVkaXQuaCIgMwpleHRlcm4gQ2FyZXRIb29rVVBQCk5ld0NhcmV0SG9v
a1VQUChDYXJldEhvb2tQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7CiMgNDcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRFZGl0LmgiIDMKZXh0
ZXJuIFdpZHRoSG9va1VQUApOZXdXaWR0aEhvb2tVUFAoV2lkdGhIb29rUHJvY1B0ciB1c2VyUm91
dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDQ4MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9UZXh0RWRpdC5oIiAzCmV4dGVybiBUZXh0V2lkdGhIb29rVVBQCk5ld1RleHRX
aWR0aEhvb2tVUFAoVGV4dFdpZHRoSG9va1Byb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKIyA0OTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVk
aXQuaCIgMwpleHRlcm4gTldpZHRoSG9va1VQUApOZXdOV2lkdGhIb29rVVBQKE5XaWR0aEhvb2tQ
cm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNTAzICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRFZGl0LmgiIDMKZXh0ZXJuIERyYXdIb29rVVBQ
Ck5ld0RyYXdIb29rVVBQKERyYXdIb29rUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVf
XygoZGVwcmVjYXRlZCkpOwojIDUxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RWRp
dC5oIiAzCmV4dGVybiBIaXRUZXN0SG9va1VQUApOZXdIaXRUZXN0SG9va1VQUChIaXRUZXN0SG9v
a1Byb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA1MjUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVkaXQuaCIgMwpleHRlcm4gVEVGaW5kV29y
ZFVQUApOZXdURUZpbmRXb3JkVVBQKFRFRmluZFdvcmRQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0
dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNTM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L1RleHRFZGl0LmgiIDMKZXh0ZXJuIFRFUmVjYWxjVVBQCk5ld1RFUmVjYWxjVVBQKFRFUmVjYWxj
UHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDU0NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RWRpdC5oIiAzCmV4dGVybiBURURvVGV4dFVQ
UApOZXdURURvVGV4dFVQUChURURvVGV4dFByb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKIyA1NTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVk
aXQuaCIgMwpleHRlcm4gVEVDbGlja0xvb3BVUFAKTmV3VEVDbGlja0xvb3BVUFAoVEVDbGlja0xv
b3BQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNTc4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRFZGl0LmgiIDMKZXh0ZXJuIHZvaWQKRGlz
cG9zZUhpZ2hIb29rVVBQKEhpZ2hIb29rVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKIyA1ODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVkaXQuaCIgMwpl
eHRlcm4gdm9pZApEaXNwb3NlRU9MSG9va1VQUChFT0xIb29rVVBQIHVzZXJVUFApIF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA2MDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4
dEVkaXQuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlQ2FyZXRIb29rVVBQKENhcmV0SG9va1VQUCB1
c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNjExICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL1RleHRFZGl0LmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVdpZHRoSG9va1VQ
UChXaWR0aEhvb2tVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDYy
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RWRpdC5oIiAzCmV4dGVybiB2b2lkCkRp
c3Bvc2VUZXh0V2lkdGhIb29rVVBQKFRleHRXaWR0aEhvb2tVUFAgdXNlclVQUCkgX19hdHRyaWJ1
dGVfXygoZGVwcmVjYXRlZCkpOwojIDYzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0
RWRpdC5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VOV2lkdGhIb29rVVBQKE5XaWR0aEhvb2tVUFAg
dXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDY0NCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9UZXh0RWRpdC5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VEcmF3SG9va1VQ
UChEcmF3SG9va1VQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNjU1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRFZGl0LmgiIDMKZXh0ZXJuIHZvaWQKRGlz
cG9zZUhpdFRlc3RIb29rVVBQKEhpdFRlc3RIb29rVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKIyA2NjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVkaXQu
aCIgMwpleHRlcm4gdm9pZApEaXNwb3NlVEVGaW5kV29yZFVQUChURUZpbmRXb3JkVVBQIHVzZXJV
UFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA2NzcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvVGV4dEVkaXQuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlVEVSZWNhbGNVUFAoVEVS
ZWNhbGNVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDY4OCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RWRpdC5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VU
RURvVGV4dFVQUChURURvVGV4dFVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVk
KSk7CiMgNjk5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRFZGl0LmgiIDMKZXh0ZXJu
IHZvaWQKRGlzcG9zZVRFQ2xpY2tMb29wVVBQKFRFQ2xpY2tMb29wVVBQIHVzZXJVUFApIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA3MTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
VGV4dEVkaXQuaCIgMwpleHRlcm4gdm9pZApJbnZva2VIaWdoSG9va1VQUCgKICBjb25zdCBSZWN0
ICogciwKICBURVB0ciBwVEUsCiAgSGlnaEhvb2tVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDczMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RWRpdC5o
IiAzCmV4dGVybiBCb29sZWFuCkludm9rZUVPTEhvb2tVUFAoCiAgY2hhciB0aGVDaGFyLAogIFRF
UHRyIHBURSwKICBURUhhbmRsZSBoVEUsCiAgRU9MSG9va1VQUCB1c2VyVVBQKSBfX2F0dHJpYnV0
ZV9fKChkZXByZWNhdGVkKSk7CiMgNzQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRF
ZGl0LmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlQ2FyZXRIb29rVVBQKAogIGNvbnN0IFJlY3QgKiBy
LAogIFRFUHRyIHBURSwKICBDYXJldEhvb2tVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwojIDc2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RWRpdC5oIiAz
CmV4dGVybiB1bnNpZ25lZCBzaG9ydApJbnZva2VXaWR0aEhvb2tVUFAoCiAgdW5zaWduZWQgc2hv
cnQgdGV4dExlbiwKICB1bnNpZ25lZCBzaG9ydCB0ZXh0T2Zmc2V0LAogIHZvaWQgKiB0ZXh0QnVm
ZmVyUHRyLAogIFRFUHRyIHBURSwKICBURUhhbmRsZSBoVEUsCiAgV2lkdGhIb29rVVBQIHVzZXJV
UFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA3NzkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvVGV4dEVkaXQuaCIgMwpleHRlcm4gdW5zaWduZWQgc2hvcnQKSW52b2tlVGV4dFdp
ZHRoSG9va1VQUCgKICB1bnNpZ25lZCBzaG9ydCB0ZXh0TGVuLAogIHVuc2lnbmVkIHNob3J0IHRl
eHRPZmZzZXQsCiAgdm9pZCAqIHRleHRCdWZmZXJQdHIsCiAgVEVQdHIgcFRFLAogIFRFSGFuZGxl
IGhURSwKICBUZXh0V2lkdGhIb29rVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKIyA3OTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVkaXQuaCIgMwpleHRl
cm4gdW5zaWduZWQgc2hvcnQKSW52b2tlTldpZHRoSG9va1VQUCgKICB1bnNpZ25lZCBzaG9ydCBz
dHlsZVJ1bkxlbiwKICB1bnNpZ25lZCBzaG9ydCBzdHlsZVJ1bk9mZnNldCwKICBzaG9ydCBzbG9w
LAogIHNob3J0IGRpcmVjdGlvbiwKICB2b2lkICogdGV4dEJ1ZmZlclB0ciwKICBzaG9ydCAqIGxp
bmVTdGFydCwKICBURVB0ciBwVEUsCiAgVEVIYW5kbGUgaFRFLAogIE5XaWR0aEhvb2tVUFAgdXNl
clVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDgxNiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9UZXh0RWRpdC5oIiAzCmV4dGVybiB2b2lkCkludm9rZURyYXdIb29rVVBQKAog
IHVuc2lnbmVkIHNob3J0IHRleHRPZmZzZXQsCiAgdW5zaWduZWQgc2hvcnQgZHJhd0xlbiwKICB2
b2lkICogdGV4dEJ1ZmZlclB0ciwKICBURVB0ciBwVEUsCiAgVEVIYW5kbGUgaFRFLAogIERyYXdI
b29rVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA4MzMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVkaXQuaCIgMwpleHRlcm4gQm9vbGVhbgpJbnZva2VI
aXRUZXN0SG9va1VQUCgKICB1bnNpZ25lZCBzaG9ydCBzdHlsZVJ1bkxlbiwKICB1bnNpZ25lZCBz
aG9ydCBzdHlsZVJ1bk9mZnNldCwKICB1bnNpZ25lZCBzaG9ydCBzbG9wLAogIHZvaWQgKiB0ZXh0
QnVmZmVyUHRyLAogIFRFUHRyIHBURSwKICBURUhhbmRsZSBoVEUsCiAgdW5zaWduZWQgc2hvcnQg
KiBwaXhlbFdpZHRoLAogIHVuc2lnbmVkIHNob3J0ICogY2hhck9mZnNldCwKICBCb29sZWFuICog
cGl4ZWxJbkNoYXIsCiAgSGl0VGVzdEhvb2tVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwojIDg1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RWRpdC5oIiAz
CmV4dGVybiB2b2lkCkludm9rZVRFRmluZFdvcmRVUFAoCiAgdW5zaWduZWQgc2hvcnQgY3VycmVu
dFBvcywKICBzaG9ydCBjYWxsZXIsCiAgVEVQdHIgcFRFLAogIFRFSGFuZGxlIGhURSwKICB1bnNp
Z25lZCBzaG9ydCAqIHdvcmRTdGFydCwKICB1bnNpZ25lZCBzaG9ydCAqIHdvcmRFbmQsCiAgVEVG
aW5kV29yZFVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgODcyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRFZGl0LmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tl
VEVSZWNhbGNVUFAoCiAgVEVQdHIgcFRFLAogIHVuc2lnbmVkIHNob3J0IGNoYW5nZUxlbmd0aCwK
ICB1bnNpZ25lZCBzaG9ydCAqIGxpbmVTdGFydCwKICB1bnNpZ25lZCBzaG9ydCAqIGZpcnN0Q2hh
ciwKICB1bnNpZ25lZCBzaG9ydCAqIGxhc3RDaGFyLAogIFRFUmVjYWxjVVBQIHVzZXJVUFApIF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyA4ODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvVGV4dEVkaXQuaCIgMwpleHRlcm4gdm9pZApJbnZva2VURURvVGV4dFVQUCgKICBURVB0ciBw
VEUsCiAgdW5zaWduZWQgc2hvcnQgZmlyc3RDaGFyLAogIHVuc2lnbmVkIHNob3J0IGxhc3RDaGFy
LAogIHNob3J0IHNlbGVjdG9yLAogIEdyYWZQdHIgKiBjdXJyZW50R3JhZlBvcnQsCiAgc2hvcnQg
KiBjaGFyUG9zaXRpb24sCiAgVEVEb1RleHRVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwojIDkwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0RWRpdC5oIiAz
CmV4dGVybiBCb29sZWFuCkludm9rZVRFQ2xpY2tMb29wVVBQKAogIFRFUHRyIHBURSwKICBURUNs
aWNrTG9vcFVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgOTIzICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRFZGl0LmgiIDMKICAgIGlubGluZSBIaWdoSG9v
a1VQUCBOZXdIaWdoSG9va1VQUChIaWdoSG9va1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJu
IHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRU9MSG9va1VQUCBOZXdFT0xIb29rVVBQKEVPTEhv
b2tQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5l
IENhcmV0SG9va1VQUCBOZXdDYXJldEhvb2tVUFAoQ2FyZXRIb29rUHJvY1B0ciB1c2VyUm91dGlu
ZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBXaWR0aEhvb2tVUFAgTmV3V2lk
dGhIb29rVVBQKFdpZHRoSG9va1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0
aW5lOyB9CiAgICBpbmxpbmUgVGV4dFdpZHRoSG9va1VQUCBOZXdUZXh0V2lkdGhIb29rVVBQKFRl
eHRXaWR0aEhvb2tQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQog
ICAgaW5saW5lIE5XaWR0aEhvb2tVUFAgTmV3TldpZHRoSG9va1VQUChOV2lkdGhIb29rUHJvY1B0
ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBEcmF3SG9v
a1VQUCBOZXdEcmF3SG9va1VQUChEcmF3SG9va1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJu
IHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgSGl0VGVzdEhvb2tVUFAgTmV3SGl0VGVzdEhvb2tV
UFAoSGl0VGVzdEhvb2tQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsg
fQogICAgaW5saW5lIFRFRmluZFdvcmRVUFAgTmV3VEVGaW5kV29yZFVQUChURUZpbmRXb3JkUHJv
Y1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBURVJl
Y2FsY1VQUCBOZXdURVJlY2FsY1VQUChURVJlY2FsY1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0
dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgVEVEb1RleHRVUFAgTmV3VEVEb1RleHRVUFAo
VEVEb1RleHRQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAg
aW5saW5lIFRFQ2xpY2tMb29wVVBQIE5ld1RFQ2xpY2tMb29wVVBQKFRFQ2xpY2tMb29wUHJvY1B0
ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERp
c3Bvc2VIaWdoSG9va1VQUChIaWdoSG9va1VQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3Nl
RU9MSG9va1VQUChFT0xIb29rVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VDYXJldEhv
b2tVUFAoQ2FyZXRIb29rVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VXaWR0aEhvb2tV
UFAoV2lkdGhIb29rVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VUZXh0V2lkdGhIb29r
VVBQKFRleHRXaWR0aEhvb2tVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZU5XaWR0aEhv
b2tVUFAoTldpZHRoSG9va1VQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlRHJhd0hvb2tV
UFAoRHJhd0hvb2tVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUhpdFRlc3RIb29rVVBQ
KEhpdFRlc3RIb29rVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VURUZpbmRXb3JkVVBQ
KFRFRmluZFdvcmRVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVRFUmVjYWxjVVBQKFRF
UmVjYWxjVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VURURvVGV4dFVQUChURURvVGV4
dFVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlVEVDbGlja0xvb3BVUFAoVEVDbGlja0xv
b3BVUFApIHsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlSGlnaEhvb2tVUFAoY29uc3QgUmVjdCAq
IHIsIFRFUHRyIHBURSwgSGlnaEhvb2tVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKHIsIHBURSk7
IH0KICAgIGlubGluZSBCb29sZWFuIEludm9rZUVPTEhvb2tVUFAoY2hhciB0aGVDaGFyLCBURVB0
ciBwVEUsIFRFSGFuZGxlIGhURSwgRU9MSG9va1VQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJV
UFApKHRoZUNoYXIsIHBURSwgaFRFKTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlQ2FyZXRIb29r
VVBQKGNvbnN0IFJlY3QgKiByLCBURVB0ciBwVEUsIENhcmV0SG9va1VQUCB1c2VyVVBQKSB7ICgq
dXNlclVQUCkociwgcFRFKTsgfQogICAgaW5saW5lIHVuc2lnbmVkIHNob3J0IEludm9rZVdpZHRo
SG9va1VQUCh1bnNpZ25lZCBzaG9ydCB0ZXh0TGVuLCB1bnNpZ25lZCBzaG9ydCB0ZXh0T2Zmc2V0
LCB2b2lkICogdGV4dEJ1ZmZlclB0ciwgVEVQdHIgcFRFLCBURUhhbmRsZSBoVEUsIFdpZHRoSG9v
a1VQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHRleHRMZW4sIHRleHRPZmZzZXQsIHRl
eHRCdWZmZXJQdHIsIHBURSwgaFRFKTsgfQogICAgaW5saW5lIHVuc2lnbmVkIHNob3J0IEludm9r
ZVRleHRXaWR0aEhvb2tVUFAodW5zaWduZWQgc2hvcnQgdGV4dExlbiwgdW5zaWduZWQgc2hvcnQg
dGV4dE9mZnNldCwgdm9pZCAqIHRleHRCdWZmZXJQdHIsIFRFUHRyIHBURSwgVEVIYW5kbGUgaFRF
LCBUZXh0V2lkdGhIb29rVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkodGV4dExlbiwg
dGV4dE9mZnNldCwgdGV4dEJ1ZmZlclB0ciwgcFRFLCBoVEUpOyB9CiAgICBpbmxpbmUgdW5zaWdu
ZWQgc2hvcnQgSW52b2tlTldpZHRoSG9va1VQUCh1bnNpZ25lZCBzaG9ydCBzdHlsZVJ1bkxlbiwg
dW5zaWduZWQgc2hvcnQgc3R5bGVSdW5PZmZzZXQsIHNob3J0IHNsb3AsIHNob3J0IGRpcmVjdGlv
biwgdm9pZCAqIHRleHRCdWZmZXJQdHIsIHNob3J0ICogbGluZVN0YXJ0LCBURVB0ciBwVEUsIFRF
SGFuZGxlIGhURSwgTldpZHRoSG9va1VQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHN0
eWxlUnVuTGVuLCBzdHlsZVJ1bk9mZnNldCwgc2xvcCwgZGlyZWN0aW9uLCB0ZXh0QnVmZmVyUHRy
LCBsaW5lU3RhcnQsIHBURSwgaFRFKTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlRHJhd0hvb2tV
UFAodW5zaWduZWQgc2hvcnQgdGV4dE9mZnNldCwgdW5zaWduZWQgc2hvcnQgZHJhd0xlbiwgdm9p
ZCAqIHRleHRCdWZmZXJQdHIsIFRFUHRyIHBURSwgVEVIYW5kbGUgaFRFLCBEcmF3SG9va1VQUCB1
c2VyVVBQKSB7ICgqdXNlclVQUCkodGV4dE9mZnNldCwgZHJhd0xlbiwgdGV4dEJ1ZmZlclB0ciwg
cFRFLCBoVEUpOyB9CiAgICBpbmxpbmUgQm9vbGVhbiBJbnZva2VIaXRUZXN0SG9va1VQUCh1bnNp
Z25lZCBzaG9ydCBzdHlsZVJ1bkxlbiwgdW5zaWduZWQgc2hvcnQgc3R5bGVSdW5PZmZzZXQsIHVu
c2lnbmVkIHNob3J0IHNsb3AsIHZvaWQgKiB0ZXh0QnVmZmVyUHRyLCBURVB0ciBwVEUsIFRFSGFu
ZGxlIGhURSwgdW5zaWduZWQgc2hvcnQgKiBwaXhlbFdpZHRoLCB1bnNpZ25lZCBzaG9ydCAqIGNo
YXJPZmZzZXQsIEJvb2xlYW4gKiBwaXhlbEluQ2hhciwgSGl0VGVzdEhvb2tVUFAgdXNlclVQUCkg
eyByZXR1cm4gKCp1c2VyVVBQKShzdHlsZVJ1bkxlbiwgc3R5bGVSdW5PZmZzZXQsIHNsb3AsIHRl
eHRCdWZmZXJQdHIsIHBURSwgaFRFLCBwaXhlbFdpZHRoLCBjaGFyT2Zmc2V0LCBwaXhlbEluQ2hh
cik7IH0KICAgIGlubGluZSB2b2lkIEludm9rZVRFRmluZFdvcmRVUFAodW5zaWduZWQgc2hvcnQg
Y3VycmVudFBvcywgc2hvcnQgY2FsbGVyLCBURVB0ciBwVEUsIFRFSGFuZGxlIGhURSwgdW5zaWdu
ZWQgc2hvcnQgKiB3b3JkU3RhcnQsIHVuc2lnbmVkIHNob3J0ICogd29yZEVuZCwgVEVGaW5kV29y
ZFVQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCkoY3VycmVudFBvcywgY2FsbGVyLCBwVEUsIGhURSwg
d29yZFN0YXJ0LCB3b3JkRW5kKTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlVEVSZWNhbGNVUFAo
VEVQdHIgcFRFLCB1bnNpZ25lZCBzaG9ydCBjaGFuZ2VMZW5ndGgsIHVuc2lnbmVkIHNob3J0ICog
bGluZVN0YXJ0LCB1bnNpZ25lZCBzaG9ydCAqIGZpcnN0Q2hhciwgdW5zaWduZWQgc2hvcnQgKiBs
YXN0Q2hhciwgVEVSZWNhbGNVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKHBURSwgY2hhbmdlTGVu
Z3RoLCBsaW5lU3RhcnQsIGZpcnN0Q2hhciwgbGFzdENoYXIpOyB9CiAgICBpbmxpbmUgdm9pZCBJ
bnZva2VURURvVGV4dFVQUChURVB0ciBwVEUsIHVuc2lnbmVkIHNob3J0IGZpcnN0Q2hhciwgdW5z
aWduZWQgc2hvcnQgbGFzdENoYXIsIHNob3J0IHNlbGVjdG9yLCBHcmFmUHRyICogY3VycmVudEdy
YWZQb3J0LCBzaG9ydCAqIGNoYXJQb3NpdGlvbiwgVEVEb1RleHRVUFAgdXNlclVQUCkgeyAoKnVz
ZXJVUFApKHBURSwgZmlyc3RDaGFyLCBsYXN0Q2hhciwgc2VsZWN0b3IsIGN1cnJlbnRHcmFmUG9y
dCwgY2hhclBvc2l0aW9uKTsgfQogICAgaW5saW5lIEJvb2xlYW4gSW52b2tlVEVDbGlja0xvb3BV
UFAoVEVQdHIgcFRFLCBURUNsaWNrTG9vcFVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFAp
KHBURSk7IH0KIyA5OTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dEVkaXQuaCIgMwpl
bnVtIHsKCiAgdGVGVXNlVGV4dFNlcnZpY2VzID0gNAp9OwojIDE5OTYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvVGV4dEVkaXQuaCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyA0MSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9Db250cm9scy5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0RyYWcuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvRHJhZy5oIiAzCiNkZWZpbmUgX19EUkFHX18gCiMgNDggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvRHJhZy5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQoKCgoK
CgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlRHJhZ1JlZiogRHJhZ1JlZjsKdHlwZWRlZiBVUmVmQ29u
IERyYWdJdGVtUmVmOwp0eXBlZGVmIE9TVHlwZSBGbGF2b3JUeXBlOwoKCgoKCgp0eXBlZGVmIE9w
dGlvbkJpdHMgRHJhZ0F0dHJpYnV0ZXM7CmVudW0gewogIGtEcmFnSGFzTGVmdFNlbmRlcldpbmRv
dyA9ICgxIDw8IDApLAogIGtEcmFnSW5zaWRlU2VuZGVyQXBwbGljYXRpb24gPSAoMSA8PCAxKSwK
ICBrRHJhZ0luc2lkZVNlbmRlcldpbmRvdyA9ICgxIDw8IDIpCn07CiMgODIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvRHJhZy5oIiAzCnR5cGVkZWYgT3B0aW9uQml0cyBEcmFnQmVoYXZpb3Jz
OwplbnVtIHsKICBrRHJhZ0JlaGF2aW9yTm9uZSA9IDAsCiAga0RyYWdCZWhhdmlvclpvb21CYWNr
QW5pbWF0aW9uID0gKDEgPDwgMCkKfTsKIyAxMDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
RHJhZy5oIiAzCnR5cGVkZWYgT3B0aW9uQml0cyBEcmFnSW1hZ2VGbGFnczsKZW51bSB7CgoKCgoK
CgogIGtEcmFnUmVnaW9uQW5kSW1hZ2UgPSAxIDw8IDQsCiMgMTIwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0RyYWcuaCIgMwogIGtEcmFnRG9Ob3RTY2FsZUltYWdlID0gMSA8PCA1Cn07CiMg
MTMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RyYWcuaCIgMwplbnVtIHsKICBrRHJhZ1N0
YW5kYXJkVHJhbnNsdWNlbmN5ID0gMCwKICBrRHJhZ0RhcmtUcmFuc2x1Y2VuY3kgPSAxLAogIGtE
cmFnRGFya2VyVHJhbnNsdWNlbmN5ID0gMiwKICBrRHJhZ09wYXF1ZVRyYW5zbHVjZW5jeSA9IDMK
fTsKIyAxNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRHJhZy5oIiAzCnR5cGVkZWYgVUlu
dDMyIEZsYXZvckZsYWdzOwplbnVtIHsKICBmbGF2b3JTZW5kZXJPbmx5ID0gKDEgPDwgMCksCiAg
Zmxhdm9yU2VuZGVyVHJhbnNsYXRlZCA9ICgxIDw8IDEpLAogIGZsYXZvck5vdFNhdmVkID0gKDEg
PDwgMiksCiAgZmxhdm9yU3lzdGVtVHJhbnNsYXRlZCA9ICgxIDw8IDgpLAogIGZsYXZvckRhdGFQ
cm9taXNlZCA9ICgxIDw8IDkpCn07CiMgMTYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0Ry
YWcuaCIgMwplbnVtIHsKICBrRmxhdm9yVHlwZUNsaXBwaW5nTmFtZSA9ICdjbG5tJywKICBrRmxh
dm9yVHlwZUNsaXBwaW5nRmlsZW5hbWUgPSAnY2xmbicsCiAga0ZsYXZvclR5cGVVbmljb2RlQ2xp
cHBpbmdOYW1lID0gJ3VjbG4nLAogIGtGbGF2b3JUeXBlVW5pY29kZUNsaXBwaW5nRmlsZW5hbWUg
PSAndWNsZicsCiAga0ZsYXZvclR5cGVEcmFnVG9UcmFzaE9ubHkgPSAnZmR0dCcsCiAga0ZsYXZv
clR5cGVGaW5kZXJOb1RyYWNraW5nQmVoYXZpb3IgPSAnZm50YicKfTsKIyAxNzYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvRHJhZy5oIiAzCnR5cGVkZWYgT3B0aW9uQml0cyBEcmFnQWN0aW9u
czsKIyAxOTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRHJhZy5oIiAzCmVudW0gewoKCgoK
CgogIGtEcmFnQWN0aW9uTm90aGluZyA9IDAsCgoKCgogIGtEcmFnQWN0aW9uQ29weSA9IDEsCgoK
CgogIGtEcmFnQWN0aW9uQWxpYXMgPSAoMSA8PCAxKSwKCgoKCgogIGtEcmFnQWN0aW9uR2VuZXJp
YyA9ICgxIDw8IDIpLAoKCgoKCiAga0RyYWdBY3Rpb25Qcml2YXRlID0gKDEgPDwgMyksCgoKCgog
IGtEcmFnQWN0aW9uTW92ZSA9ICgxIDw8IDQpLAoKCgoKICBrRHJhZ0FjdGlvbkRlbGV0ZSA9ICgx
IDw8IDUpLAoKCgoKICBrRHJhZ0FjdGlvbkFsbCA9IChVSW50MzIpMHhGRkZGRkZGRgp9OwojIDI0
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EcmFnLmgiIDMKdHlwZWRlZiBPU0VyciAoICog
RHJhZ0lucHV0UHJvY1B0cikoUG9pbnQgKm1vdXNlLCBTSW50MTYgKm1vZGlmaWVycywgdm9pZCAq
ZHJhZ0lucHV0UmVmQ29uLCBEcmFnUmVmIHRoZURyYWcpOwp0eXBlZGVmIERyYWdJbnB1dFByb2NQ
dHIgRHJhZ0lucHV0VVBQOwojIDI1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EcmFnLmgi
IDMKZXh0ZXJuIERyYWdJbnB1dFVQUApOZXdEcmFnSW5wdXRVUFAoRHJhZ0lucHV0UHJvY1B0ciB1
c2VyUm91dGluZSkgOwojIDI2NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EcmFnLmgiIDMK
ZXh0ZXJuIHZvaWQKRGlzcG9zZURyYWdJbnB1dFVQUChEcmFnSW5wdXRVUFAgdXNlclVQUCkgOwoj
IDI3NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EcmFnLmgiIDMKZXh0ZXJuIE9TRXJyCklu
dm9rZURyYWdJbnB1dFVQUCgKICBQb2ludCAqIG1vdXNlLAogIFNJbnQxNiAqIG1vZGlmaWVycywK
ICB2b2lkICogZHJhZ0lucHV0UmVmQ29uLAogIERyYWdSZWYgdGhlRHJhZywKICBEcmFnSW5wdXRV
UFAgdXNlclVQUCkgOwoKCgogICAgaW5saW5lIERyYWdJbnB1dFVQUCBOZXdEcmFnSW5wdXRVUFAo
RHJhZ0lucHV0UHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAg
IGlubGluZSB2b2lkIERpc3Bvc2VEcmFnSW5wdXRVUFAoRHJhZ0lucHV0VVBQKSB7IH0KICAgIGlu
bGluZSBPU0VyciBJbnZva2VEcmFnSW5wdXRVUFAoUG9pbnQgKiBtb3VzZSwgU0ludDE2ICogbW9k
aWZpZXJzLCB2b2lkICogZHJhZ0lucHV0UmVmQ29uLCBEcmFnUmVmIHRoZURyYWcsIERyYWdJbnB1
dFVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKG1vdXNlLCBtb2RpZmllcnMsIGRyYWdJ
bnB1dFJlZkNvbiwgdGhlRHJhZyk7IH0KIyA4OTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
RHJhZy5oIiAzCmVudW0gewogIGtEcmFnRmxhdm9yVHlwZUhGUyA9ICdoZnMgJywKICBrRHJhZ0Zs
YXZvclR5cGVQcm9taXNlSEZTID0gJ3BoZnMnLAogIGZsYXZvclR5cGVIRlMgPSBrRHJhZ0ZsYXZv
clR5cGVIRlMsCiAgZmxhdm9yVHlwZVByb21pc2VIRlMgPSBrRHJhZ0ZsYXZvclR5cGVQcm9taXNl
SEZTCn07CgplbnVtIHsKICBrRHJhZ1Byb21pc2VkRmxhdm9yRmluZEZpbGUgPSAncldtMScsCiAg
a0RyYWdQcm9taXNlZEZsYXZvciA9ICdmc3NQJwp9OwoKZW51bSB7CiAga0RyYWdQc2V1ZG9DcmVh
dG9yVm9sdW1lT3JEaXJlY3RvcnkgPSAnTUFDUycsCiAga0RyYWdQc2V1ZG9GaWxlVHlwZVZvbHVt
ZSA9ICdkaXNrJywKICBrRHJhZ1BzZXVkb0ZpbGVUeXBlRGlyZWN0b3J5ID0gJ2ZvbGQnCn07CgoK
CgoKCnN0cnVjdCBIRlNGbGF2b3IgewogIE9TVHlwZSBmaWxlVHlwZTsKICBPU1R5cGUgZmlsZUNy
ZWF0b3I7CiAgVUludDE2IGZkRmxhZ3M7CiAgRlNTcGVjIGZpbGVTcGVjOwp9Owp0eXBlZGVmIHN0
cnVjdCBIRlNGbGF2b3IgSEZTRmxhdm9yOwpzdHJ1Y3QgUHJvbWlzZUhGU0ZsYXZvciB7CiAgT1NU
eXBlIGZpbGVUeXBlOwogIE9TVHlwZSBmaWxlQ3JlYXRvcjsKICBVSW50MTYgZmRGbGFnczsKICBG
bGF2b3JUeXBlIHByb21pc2VkRmxhdm9yOwp9Owp0eXBlZGVmIHN0cnVjdCBQcm9taXNlSEZTRmxh
dm9yIFByb21pc2VIRlNGbGF2b3I7CnR5cGVkZWYgU0ludDE2IERyYWdUcmFja2luZ01lc3NhZ2U7
CmVudW0gewogIGtEcmFnVHJhY2tpbmdFbnRlckhhbmRsZXIgPSAxLAogIGtEcmFnVHJhY2tpbmdF
bnRlcldpbmRvdyA9IDIsCiAga0RyYWdUcmFja2luZ0luV2luZG93ID0gMywKICBrRHJhZ1RyYWNr
aW5nTGVhdmVXaW5kb3cgPSA0LAogIGtEcmFnVHJhY2tpbmdMZWF2ZUhhbmRsZXIgPSA1Cn07CgoK
dHlwZWRlZiBTSW50MTYgRHJhZ1JlZ2lvbk1lc3NhZ2U7CmVudW0gewogIGtEcmFnUmVnaW9uQmVn
aW4gPSAxLAogIGtEcmFnUmVnaW9uRHJhdyA9IDIsCiAga0RyYWdSZWdpb25IaWRlID0gMywKICBr
RHJhZ1JlZ2lvbklkbGUgPSA0LAogIGtEcmFnUmVnaW9uRW5kID0gNQp9OwoKCnR5cGVkZWYgU0lu
dDE2IFpvb21BY2NlbGVyYXRpb247CmVudW0gewogIGtab29tTm9BY2NlbGVyYXRpb24gPSAwLAog
IGtab29tQWNjZWxlcmF0ZSA9IDEsCiAga1pvb21EZWNlbGVyYXRlID0gMgp9OwojIDk2MiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9EcmFnLmgiIDMKZW51bSB7CgoKCgoKCgogIGtEcmFnU3Rh
bmRhcmREcm9wTG9jYXRpb25UcmFzaCA9ICd0cnNoJywKCgoKCiAga0RyYWdTdGFuZGFyZERyb3BM
b2NhdGlvblVua25vd24gPSAndW5rbicKfTsKCgp0eXBlZGVmIE9TVHlwZSBTdGFuZGFyZERyb3BM
b2NhdGlvbjsKdHlwZWRlZiBPU0VyciAoICogRHJhZ1NlbmREYXRhUHJvY1B0cikoRmxhdm9yVHlw
ZSB0aGVUeXBlLCB2b2lkICpkcmFnU2VuZFJlZkNvbiwgRHJhZ0l0ZW1SZWYgdGhlSXRlbVJlZiwg
RHJhZ1JlZiB0aGVEcmFnKTsKdHlwZWRlZiBPU0VyciAoICogRHJhZ1RyYWNraW5nSGFuZGxlclBy
b2NQdHIpKERyYWdUcmFja2luZ01lc3NhZ2UgbWVzc2FnZSwgV2luZG93UmVmIHRoZVdpbmRvdywg
dm9pZCAqaGFuZGxlclJlZkNvbiwgRHJhZ1JlZiB0aGVEcmFnKTsKdHlwZWRlZiBPU0VyciAoICog
RHJhZ1JlY2VpdmVIYW5kbGVyUHJvY1B0cikoV2luZG93UmVmIHRoZVdpbmRvdywgdm9pZCAqaGFu
ZGxlclJlZkNvbiwgRHJhZ1JlZiB0aGVEcmFnKTsKdHlwZWRlZiBPU0VyciAoICogRHJhZ0RyYXdp
bmdQcm9jUHRyKShEcmFnUmVnaW9uTWVzc2FnZSBtZXNzYWdlLCBSZ25IYW5kbGUgc2hvd1JlZ2lv
biwgUG9pbnQgc2hvd09yaWdpbiwgUmduSGFuZGxlIGhpZGVSZWdpb24sIFBvaW50IGhpZGVPcmln
aW4sIHZvaWQgKmRyYWdEcmF3aW5nUmVmQ29uLCBEcmFnUmVmIHRoZURyYWcpOwp0eXBlZGVmIERy
YWdTZW5kRGF0YVByb2NQdHIgRHJhZ1NlbmREYXRhVVBQOwp0eXBlZGVmIERyYWdUcmFja2luZ0hh
bmRsZXJQcm9jUHRyIERyYWdUcmFja2luZ0hhbmRsZXJVUFA7CnR5cGVkZWYgRHJhZ1JlY2VpdmVI
YW5kbGVyUHJvY1B0ciBEcmFnUmVjZWl2ZUhhbmRsZXJVUFA7CnR5cGVkZWYgRHJhZ0RyYXdpbmdQ
cm9jUHRyIERyYWdEcmF3aW5nVVBQOwojIDk5NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9E
cmFnLmgiIDMKZXh0ZXJuIERyYWdTZW5kRGF0YVVQUApOZXdEcmFnU2VuZERhdGFVUFAoRHJhZ1Nl
bmREYXRhUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoj
IDEwMDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRHJhZy5oIiAzCmV4dGVybiBEcmFnVHJh
Y2tpbmdIYW5kbGVyVVBQCk5ld0RyYWdUcmFja2luZ0hhbmRsZXJVUFAoRHJhZ1RyYWNraW5nSGFu
ZGxlclByb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAx
MDE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RyYWcuaCIgMwpleHRlcm4gRHJhZ1JlY2Vp
dmVIYW5kbGVyVVBQCk5ld0RyYWdSZWNlaXZlSGFuZGxlclVQUChEcmFnUmVjZWl2ZUhhbmRsZXJQ
cm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTAyOSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EcmFnLmgiIDMKZXh0ZXJuIERyYWdEcmF3aW5nVVBQ
Ck5ld0RyYWdEcmF3aW5nVVBQKERyYWdEcmF3aW5nUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDEwNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
RHJhZy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VEcmFnU2VuZERhdGFVUFAoRHJhZ1NlbmREYXRh
VVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxMDUxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0RyYWcuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlRHJhZ1RyYWNr
aW5nSGFuZGxlclVQUChEcmFnVHJhY2tpbmdIYW5kbGVyVVBQIHVzZXJVUFApIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKIyAxMDYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RyYWcu
aCIgMwpleHRlcm4gdm9pZApEaXNwb3NlRHJhZ1JlY2VpdmVIYW5kbGVyVVBQKERyYWdSZWNlaXZl
SGFuZGxlclVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTA3MyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EcmFnLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZURy
YWdEcmF3aW5nVVBQKERyYWdEcmF3aW5nVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKIyAxMDg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RyYWcuaCIgMwpleHRl
cm4gT1NFcnIKSW52b2tlRHJhZ1NlbmREYXRhVVBQKAogIEZsYXZvclR5cGUgdGhlVHlwZSwKICB2
b2lkICogZHJhZ1NlbmRSZWZDb24sCiAgRHJhZ0l0ZW1SZWYgdGhlSXRlbVJlZiwKICBEcmFnUmVm
IHRoZURyYWcsCiAgRHJhZ1NlbmREYXRhVVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKIyAxMTAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RyYWcuaCIgMwpleHRl
cm4gT1NFcnIKSW52b2tlRHJhZ1RyYWNraW5nSGFuZGxlclVQUCgKICBEcmFnVHJhY2tpbmdNZXNz
YWdlIG1lc3NhZ2UsCiAgV2luZG93UmVmIHRoZVdpbmRvdywKICB2b2lkICogaGFuZGxlclJlZkNv
biwKICBEcmFnUmVmIHRoZURyYWcsCiAgRHJhZ1RyYWNraW5nSGFuZGxlclVQUCB1c2VyVVBQKSBf
X2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTExNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9EcmFnLmgiIDMKZXh0ZXJuIE9TRXJyCkludm9rZURyYWdSZWNlaXZlSGFuZGxlclVQUCgK
ICBXaW5kb3dSZWYgdGhlV2luZG93LAogIHZvaWQgKiBoYW5kbGVyUmVmQ29uLAogIERyYWdSZWYg
dGhlRHJhZywKICBEcmFnUmVjZWl2ZUhhbmRsZXJVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwojIDExMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRHJhZy5oIiAz
CmV4dGVybiBPU0VycgpJbnZva2VEcmFnRHJhd2luZ1VQUCgKICBEcmFnUmVnaW9uTWVzc2FnZSBt
ZXNzYWdlLAogIFJnbkhhbmRsZSBzaG93UmVnaW9uLAogIFBvaW50IHNob3dPcmlnaW4sCiAgUmdu
SGFuZGxlIGhpZGVSZWdpb24sCiAgUG9pbnQgaGlkZU9yaWdpbiwKICB2b2lkICogZHJhZ0RyYXdp
bmdSZWZDb24sCiAgRHJhZ1JlZiB0aGVEcmFnLAogIERyYWdEcmF3aW5nVVBQIHVzZXJVUFApIF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBEcmFnU2VuZERhdGFVUFAg
TmV3RHJhZ1NlbmREYXRhVVBQKERyYWdTZW5kRGF0YVByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0
dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRHJhZ1RyYWNraW5nSGFuZGxlclVQUCBOZXdE
cmFnVHJhY2tpbmdIYW5kbGVyVVBQKERyYWdUcmFja2luZ0hhbmRsZXJQcm9jUHRyIHVzZXJSb3V0
aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIERyYWdSZWNlaXZlSGFuZGxl
clVQUCBOZXdEcmFnUmVjZWl2ZUhhbmRsZXJVUFAoRHJhZ1JlY2VpdmVIYW5kbGVyUHJvY1B0ciB1
c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBEcmFnRHJhd2lu
Z1VQUCBOZXdEcmFnRHJhd2luZ1VQUChEcmFnRHJhd2luZ1Byb2NQdHIgdXNlclJvdXRpbmUpIHsg
cmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlRHJhZ1NlbmREYXRh
VVBQKERyYWdTZW5kRGF0YVVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlRHJhZ1RyYWNr
aW5nSGFuZGxlclVQUChEcmFnVHJhY2tpbmdIYW5kbGVyVVBQKSB7IH0KICAgIGlubGluZSB2b2lk
IERpc3Bvc2VEcmFnUmVjZWl2ZUhhbmRsZXJVUFAoRHJhZ1JlY2VpdmVIYW5kbGVyVVBQKSB7IH0K
ICAgIGlubGluZSB2b2lkIERpc3Bvc2VEcmFnRHJhd2luZ1VQUChEcmFnRHJhd2luZ1VQUCkgeyB9
CiAgICBpbmxpbmUgT1NFcnIgSW52b2tlRHJhZ1NlbmREYXRhVVBQKEZsYXZvclR5cGUgdGhlVHlw
ZSwgdm9pZCAqIGRyYWdTZW5kUmVmQ29uLCBEcmFnSXRlbVJlZiB0aGVJdGVtUmVmLCBEcmFnUmVm
IHRoZURyYWcsIERyYWdTZW5kRGF0YVVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHRo
ZVR5cGUsIGRyYWdTZW5kUmVmQ29uLCB0aGVJdGVtUmVmLCB0aGVEcmFnKTsgfQogICAgaW5saW5l
IE9TRXJyIEludm9rZURyYWdUcmFja2luZ0hhbmRsZXJVUFAoRHJhZ1RyYWNraW5nTWVzc2FnZSBt
ZXNzYWdlLCBXaW5kb3dSZWYgdGhlV2luZG93LCB2b2lkICogaGFuZGxlclJlZkNvbiwgRHJhZ1Jl
ZiB0aGVEcmFnLCBEcmFnVHJhY2tpbmdIYW5kbGVyVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNl
clVQUCkobWVzc2FnZSwgdGhlV2luZG93LCBoYW5kbGVyUmVmQ29uLCB0aGVEcmFnKTsgfQogICAg
aW5saW5lIE9TRXJyIEludm9rZURyYWdSZWNlaXZlSGFuZGxlclVQUChXaW5kb3dSZWYgdGhlV2lu
ZG93LCB2b2lkICogaGFuZGxlclJlZkNvbiwgRHJhZ1JlZiB0aGVEcmFnLCBEcmFnUmVjZWl2ZUhh
bmRsZXJVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKSh0aGVXaW5kb3csIGhhbmRsZXJS
ZWZDb24sIHRoZURyYWcpOyB9CiAgICBpbmxpbmUgT1NFcnIgSW52b2tlRHJhZ0RyYXdpbmdVUFAo
RHJhZ1JlZ2lvbk1lc3NhZ2UgbWVzc2FnZSwgUmduSGFuZGxlIHNob3dSZWdpb24sIFBvaW50IHNo
b3dPcmlnaW4sIFJnbkhhbmRsZSBoaWRlUmVnaW9uLCBQb2ludCBoaWRlT3JpZ2luLCB2b2lkICog
ZHJhZ0RyYXdpbmdSZWZDb24sIERyYWdSZWYgdGhlRHJhZywgRHJhZ0RyYXdpbmdVUFAgdXNlclVQ
UCkgeyByZXR1cm4gKCp1c2VyVVBQKShtZXNzYWdlLCBzaG93UmVnaW9uLCBzaG93T3JpZ2luLCBo
aWRlUmVnaW9uLCBoaWRlT3JpZ2luLCBkcmFnRHJhd2luZ1JlZkNvbiwgdGhlRHJhZyk7IH0KIyAx
ODc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RyYWcuaCIgMwp0eXBlZGVmIERyYWdSZWYg
RHJhZ1JlZmVyZW5jZTsKdHlwZWRlZiBEcmFnSXRlbVJlZiBJdGVtUmVmZXJlbmNlOwojIDE5MTcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRHJhZy5oIiAzCiNwcmFnbWEgcGFjayhwb3ApCgoK
fQojIDQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NvbnRyb2xzLmgiIDIgMwojIDU3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NvbnRyb2xzLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3By
YWdtYSBwYWNrKHB1c2gsIDIpCgoKCgplbnVtIHsKICBrQ29udHJvbERlZlByb2NUeXBlID0gJ0NE
RUYnLAogIGtDb250cm9sVGVtcGxhdGVSZXNvdXJjZVR5cGUgPSAnQ05UTCcsCiAga0NvbnRyb2xD
b2xvclRhYmxlUmVzb3VyY2VUeXBlID0gJ2NjdGInLAogIGtDb250cm9sRGVmUHJvY1Jlc291cmNl
VHlwZSA9ICdDREVGJwp9OwoKCgoKc3RydWN0IENvbnRyb2xUZW1wbGF0ZSB7CiAgUmVjdCBjb250
cm9sUmVjdDsKICBTSW50MTYgY29udHJvbFZhbHVlOwogIEJvb2xlYW4gY29udHJvbFZpc2libGU7
CiAgVUludDggZmlsbDsKICBTSW50MTYgY29udHJvbE1heGltdW07CiAgU0ludDE2IGNvbnRyb2xN
aW5pbXVtOwogIFNJbnQxNiBjb250cm9sRGVmUHJvY0lEOwogIFNJbnQzMiBjb250cm9sUmVmZXJl
bmNlOwogIFN0cjI1NSBjb250cm9sVGl0bGU7Cn07CnR5cGVkZWYgc3RydWN0IENvbnRyb2xUZW1w
bGF0ZSBDb250cm9sVGVtcGxhdGU7CnR5cGVkZWYgQ29udHJvbFRlbXBsYXRlICogQ29udHJvbFRl
bXBsYXRlUHRyOwp0eXBlZGVmIENvbnRyb2xUZW1wbGF0ZVB0ciAqIENvbnRyb2xUZW1wbGF0ZUhh
bmRsZTsKCgp0eXBlZGVmIFNJbnQxNiBDb250cm9sUGFydENvZGU7CgoKCnR5cGVkZWYgdm9pZCAo
ICogQ29udHJvbEFjdGlvblByb2NQdHIpKENvbnRyb2xSZWYgdGhlQ29udHJvbCwgQ29udHJvbFBh
cnRDb2RlIHBhcnRDb2RlKTsKdHlwZWRlZiBDb250cm9sQWN0aW9uUHJvY1B0ciBDb250cm9sQWN0
aW9uVVBQOwojIDEzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9Db250cm9scy5oIiAzCmV4
dGVybiBDb250cm9sQWN0aW9uVVBQCk5ld0NvbnRyb2xBY3Rpb25VUFAoQ29udHJvbEFjdGlvblBy
b2NQdHIgdXNlclJvdXRpbmUpIDsKIyAxNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29u
dHJvbHMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlQ29udHJvbEFjdGlvblVQUChDb250cm9sQWN0
aW9uVVBQIHVzZXJVUFApIDsKIyAxNTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJv
bHMuaCIgMwpleHRlcm4gdm9pZApJbnZva2VDb250cm9sQWN0aW9uVVBQKAogIENvbnRyb2xSZWYg
dGhlQ29udHJvbCwKICBDb250cm9sUGFydENvZGUgcGFydENvZGUsCiAgQ29udHJvbEFjdGlvblVQ
UCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgQ29udHJvbEFjdGlvblVQUCBOZXdDb250cm9sQWN0
aW9uVVBQKENvbnRyb2xBY3Rpb25Qcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91
dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUNvbnRyb2xBY3Rpb25VUFAoQ29udHJvbEFj
dGlvblVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VDb250cm9sQWN0aW9uVVBQKENvbnRy
b2xSZWYgdGhlQ29udHJvbCwgQ29udHJvbFBhcnRDb2RlIHBhcnRDb2RlLCBDb250cm9sQWN0aW9u
VVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKSh0aGVDb250cm9sLCBwYXJ0Q29kZSk7IH0KIyAxNzMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbHMuaCIgMwplbnVtIHsKICBjRnJhbWVD
b2xvciA9IDAsCiAgY0JvZHlDb2xvciA9IDEsCiAgY1RleHRDb2xvciA9IDIsCiAgY1RodW1iQ29s
b3IgPSAzLAogIGtOdW1iZXJDdGxDVGFiRW50cmllcyA9IDQKfTsKCnN0cnVjdCBDdGxDVGFiIHsK
ICBTSW50MzIgY2NTZWVkOwogIFNJbnQxNiBjY1JpZGVyOwogIFNJbnQxNiBjdFNpemU7CiAgQ29s
b3JTcGVjIGN0VGFibGVbNF07Cn07CnR5cGVkZWYgc3RydWN0IEN0bENUYWIgQ3RsQ1RhYjsKdHlw
ZWRlZiBDdGxDVGFiICogQ0NUYWJQdHI7CnR5cGVkZWYgQ0NUYWJQdHIgKiBDQ1RhYkhhbmRsZTsK
IyAyMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbHMuaCIgMwp0eXBlZGVmIFNJ
bnQxNiBDb250cm9sVmFyaWFudDsKZW51bSB7CiAga0NvbnRyb2xOb1ZhcmlhbnQgPSAwLAogIGtD
b250cm9sVXNlc093bmluZ1dpbmRvd3NGb250VmFyaWFudCA9IDEgPDwgMwp9OwoKCgoKCgplbnVt
IHsKICBrQ29udHJvbE5vUGFydCA9IGtBcHBlYXJhbmNlUGFydE1ldGFOb25lLAogIGtDb250cm9s
SW5kaWNhdG9yUGFydCA9IGtBcHBlYXJhbmNlUGFydEluZGljYXRvciwKICBrQ29udHJvbERpc2Fi
bGVkUGFydCA9IGtBcHBlYXJhbmNlUGFydE1ldGFEaXNhYmxlZCwKICBrQ29udHJvbEluYWN0aXZl
UGFydCA9IGtBcHBlYXJhbmNlUGFydE1ldGFJbmFjdGl2ZQp9OwoKCgoKZW51bSB7CiAga0NvbnRy
b2xFbnRpcmVDb250cm9sID0ga0NvbnRyb2xOb1BhcnQKfTsKIyAyNTEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvQ29udHJvbHMuaCIgMwplbnVtIHsKIyAyNjggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQ29udHJvbHMuaCIgMwogIGtDb250cm9sU3RydWN0dXJlTWV0YVBhcnQgPSAtMSwK
IyAyNzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbHMuaCIgMwogIGtDb250cm9s
Q29udGVudE1ldGFQYXJ0ID0gLTIsCiMgMjkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0Nv
bnRyb2xzLmgiIDMKICBrQ29udHJvbE9wYXF1ZU1ldGFQYXJ0ID0gLTMsCiMgMzEzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0NvbnRyb2xzLmgiIDMKICBrQ29udHJvbENsaWNrYWJsZU1ldGFQ
YXJ0ID0gLTQKfTsKCgplbnVtIHsKICBrQ29udHJvbEZvY3VzTm9QYXJ0ID0ga0NvbnRyb2xOb1Bh
cnQsCiAga0NvbnRyb2xGb2N1c05leHRQYXJ0ID0gLTEsCiAga0NvbnRyb2xGb2N1c1ByZXZQYXJ0
ID0gLTIKfTsKCnR5cGVkZWYgQ29udHJvbFBhcnRDb2RlIENvbnRyb2xGb2N1c1BhcnQ7CiMgMzQy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NvbnRyb2xzLmgiIDMKZW51bSB7CgoKCgogIGtD
b250cm9sQ29sbGVjdGlvblRhZ0JvdW5kcyA9ICdib3VuJywKCgoKCiAga0NvbnRyb2xDb2xsZWN0
aW9uVGFnVmFsdWUgPSAndmFsdScsCgoKCgogIGtDb250cm9sQ29sbGVjdGlvblRhZ01pbmltdW0g
PSAnbWluICcsCgoKCgogIGtDb250cm9sQ29sbGVjdGlvblRhZ01heGltdW0gPSAnbWF4ICcsCgoK
CgogIGtDb250cm9sQ29sbGVjdGlvblRhZ1ZpZXdTaXplID0gJ3ZpZXcnLAoKCgoKCgoKICBrQ29u
dHJvbENvbGxlY3Rpb25UYWdWaXNpYmlsaXR5ID0gJ3Zpc2knLAoKCgoKICBrQ29udHJvbENvbGxl
Y3Rpb25UYWdSZWZDb24gPSAncmVmYycsCgoKCgogIGtDb250cm9sQ29sbGVjdGlvblRhZ1RpdGxl
ID0gJ3RpdGwnLAoKCgoKICBrQ29udHJvbENvbGxlY3Rpb25UYWdVbmljb2RlVGl0bGUgPSAndXR0
bCcsCgoKCgogIGtDb250cm9sQ29sbGVjdGlvblRhZ0lEU2lnbmF0dXJlID0gJ2lkc2knLAoKCgoK
ICBrQ29udHJvbENvbGxlY3Rpb25UYWdJRElEID0gJ2lkaWQnLAoKCgoKICBrQ29udHJvbENvbGxl
Y3Rpb25UYWdDb21tYW5kID0gJ2NtZCAnLAoKCgoKICBrQ29udHJvbENvbGxlY3Rpb25UYWdWYXJD
b2RlID0gJ3ZhcmMnCn07CiMgNDIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NvbnRyb2xz
LmgiIDMKZW51bSB7CgoKCgogIGtDb250cm9sQ29udGVudFRleHRPbmx5ID0gMCwKCgoKCiAga0Nv
bnRyb2xOb0NvbnRlbnQgPSAwLAoKCgoKCgogIGtDb250cm9sQ29udGVudEljb25TdWl0ZVJlcyA9
IDEsCgoKCgoKCiAga0NvbnRyb2xDb250ZW50Q0ljb25SZXMgPSAyLAoKCgoKCgogIGtDb250cm9s
Q29udGVudFBpY3RSZXMgPSAzLAoKCgoKCgogIGtDb250cm9sQ29udGVudElDT05SZXMgPSA0LAoj
IDQ3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9Db250cm9scy5oIiAzCiAga0NvbnRyb2xD
b250ZW50QWxlcnRJY29uUmVzID0gNSwKCgoKCgogIGtDb250cm9sQ29udGVudEljb25TdWl0ZUhh
bmRsZSA9IDEyOSwKCgoKCgogIGtDb250cm9sQ29udGVudENJY29uSGFuZGxlID0gMTMwLAoKCgoK
CiAga0NvbnRyb2xDb250ZW50UGljdEhhbmRsZSA9IDEzMSwKCgoKCgogIGtDb250cm9sQ29udGVu
dEljb25SZWYgPSAxMzIsCgoKCgoKICBrQ29udHJvbENvbnRlbnRJQ09OID0gMTMzLAoKCgoKCgog
IGtDb250cm9sQ29udGVudENHSW1hZ2VSZWYgPSAxMzQKfTsKCnR5cGVkZWYgU0ludDE2IENvbnRy
b2xDb250ZW50VHlwZTsKc3RydWN0IENvbnRyb2xJbWFnZUNvbnRlbnRJbmZvIHsKICBDb250cm9s
Q29udGVudFR5cGUgY29udGVudFR5cGU7CiAgdW5pb24gewogICAgU0ludDE2IHJlc0lEOwogICAg
SWNvblJlZiBpY29uUmVmOwogICAgQ0dJbWFnZVJlZiBpbWFnZVJlZjsKIyA1MjYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbHMuaCIgMwogIH0gdTsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
Q29udHJvbEltYWdlQ29udGVudEluZm8gQ29udHJvbEltYWdlQ29udGVudEluZm87CnR5cGVkZWYg
Q29udHJvbEltYWdlQ29udGVudEluZm8gKiBDb250cm9sSW1hZ2VDb250ZW50SW5mb1B0cjsKdHlw
ZWRlZiBDb250cm9sSW1hZ2VDb250ZW50SW5mbyBDb250cm9sQnV0dG9uQ29udGVudEluZm87CnR5
cGVkZWYgQ29udHJvbEJ1dHRvbkNvbnRlbnRJbmZvICogQ29udHJvbEJ1dHRvbkNvbnRlbnRJbmZv
UHRyOwoKCgplbnVtIHsKICBrQ29udHJvbEtleVNjcmlwdEJlaGF2aW9yQWxsb3dBbnlTY3JpcHQg
PSAnYW55ICcsCiAga0NvbnRyb2xLZXlTY3JpcHRCZWhhdmlvclByZWZlcnNSb21hbiA9ICdwcm1u
JywKICBrQ29udHJvbEtleVNjcmlwdEJlaGF2aW9yUmVxdWlyZXNSb21hbiA9ICdycm1uJwp9OwoK
dHlwZWRlZiBVSW50MzIgQ29udHJvbEtleVNjcmlwdEJlaGF2aW9yOwojIDU2MCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9Db250cm9scy5oIiAzCmVudW0gewogIGtDb250cm9sRm9udEJpZ1N5
c3RlbUZvbnQgPSAtMSwKICBrQ29udHJvbEZvbnRTbWFsbFN5c3RlbUZvbnQgPSAtMiwKICBrQ29u
dHJvbEZvbnRTbWFsbEJvbGRTeXN0ZW1Gb250ID0gLTMsCiAga0NvbnRyb2xGb250Vmlld1N5c3Rl
bUZvbnQgPSAtNCwKICBrQ29udHJvbEZvbnRNaW5pU3lzdGVtRm9udCA9IC01Cn07CgoKCgplbnVt
IHsKICBrQ29udHJvbFVzZUZvbnRNYXNrID0gMHgwMDAxLAogIGtDb250cm9sVXNlRmFjZU1hc2sg
PSAweDAwMDIsCiAga0NvbnRyb2xVc2VTaXplTWFzayA9IDB4MDAwNCwKICBrQ29udHJvbFVzZUZv
cmVDb2xvck1hc2sgPSAweDAwMDgsCiAga0NvbnRyb2xVc2VCYWNrQ29sb3JNYXNrID0gMHgwMDEw
LAogIGtDb250cm9sVXNlTW9kZU1hc2sgPSAweDAwMjAsCiAga0NvbnRyb2xVc2VKdXN0TWFzayA9
IDB4MDA0MCwKICBrQ29udHJvbFVzZUFsbE1hc2sgPSAweDAwRkYsCiAga0NvbnRyb2xBZGRGb250
U2l6ZU1hc2sgPSAweDAxMDAKfTsKCgoKCmVudW0gewogIGtDb250cm9sQWRkVG9NZXRhRm9udE1h
c2sgPSAweDAyMDAKfTsKCgoKCgoKCmVudW0gewogIGtDb250cm9sVXNlVGhlbWVGb250SURNYXNr
ID0gMHgwMDgwCn07CgpzdHJ1Y3QgQ29udHJvbEZvbnRTdHlsZVJlYyB7CiAgU0ludDE2IGZsYWdz
OwogIFNJbnQxNiBmb250OwogIFNJbnQxNiBzaXplOwogIFNJbnQxNiBzdHlsZTsKICBTSW50MTYg
bW9kZTsKICBTSW50MTYganVzdDsKICBSR0JDb2xvciBmb3JlQ29sb3I7CiAgUkdCQ29sb3IgYmFj
a0NvbG9yOwp9Owp0eXBlZGVmIHN0cnVjdCBDb250cm9sRm9udFN0eWxlUmVjIENvbnRyb2xGb250
U3R5bGVSZWM7CnR5cGVkZWYgQ29udHJvbEZvbnRTdHlsZVJlYyAqIENvbnRyb2xGb250U3R5bGVQ
dHI7CiMgNjIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NvbnRyb2xzLmgiIDMKZW51bSB7
CiAga0RvTm90QWN0aXZhdGVBbmRJZ25vcmVDbGljayA9IDAsCiAga0RvTm90QWN0aXZhdGVBbmRI
YW5kbGVDbGljayA9IDEsCiAga0FjdGl2YXRlQW5kSWdub3JlQ2xpY2sgPSAyLAogIGtBY3RpdmF0
ZUFuZEhhbmRsZUNsaWNrID0gMwp9OwoKdHlwZWRlZiBVSW50MzIgQ2xpY2tBY3RpdmF0aW9uUmVz
dWx0OwojIDYzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9Db250cm9scy5oIiAzCmVudW0g
ewogIGtDb250cm9sRm9udFN0eWxlVGFnID0gJ2ZvbnQnLAogIGtDb250cm9sS2V5RmlsdGVyVGFn
ID0gJ2ZsdHInLAoKCgoKCiAga0NvbnRyb2xLaW5kVGFnID0gJ2tpbmQnLAojIDY4NiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9Db250cm9scy5oIiAzCiAga0NvbnRyb2xTaXplVGFnID0gJ3Np
emUnLAojIDcwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9Db250cm9scy5oIiAzCiAga0Nv
bnRyb2xDb250ZW50VGFnID0gJ2NvbnQnLAojIDcxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9Db250cm9scy5oIiAzCiAga0NvbnRyb2xUaGVtZVRleHRGb250VGFnID0gJ3RoZnQnLAoKCgoK
CiAga0NvbnRyb2xUaGVtZVRleHRIb3Jpem9udGFsRmx1c2hUYWcgPSAndGhoZicsCgoKCgoKICBr
Q29udHJvbFRoZW1lVGV4dFZlcnRpY2FsRmx1c2hUYWcgPSAndGh2ZicsCgoKCgoKICBrQ29udHJv
bFRoZW1lVGV4dFRydW5jYXRpb25UYWcgPSAndGh0dCcsCiMgNzQwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0NvbnRyb2xzLmgiIDMKICBrQ29udHJvbFRoZW1lVGV4dEluZm9UYWcgPSAndGh0
aScKfTsKIyA3NTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbHMuaCIgMwplbnVt
IHsKICBrQ29udHJvbFN1cHBvcnRzR2hvc3RpbmcgPSAxIDw8IDAsCiAga0NvbnRyb2xTdXBwb3J0
c0VtYmVkZGluZyA9IDEgPDwgMSwKICBrQ29udHJvbFN1cHBvcnRzRm9jdXMgPSAxIDw8IDIsCiAg
a0NvbnRyb2xXYW50c0lkbGUgPSAxIDw8IDMsCiAga0NvbnRyb2xXYW50c0FjdGl2YXRlID0gMSA8
PCA0LAogIGtDb250cm9sSGFuZGxlc1RyYWNraW5nID0gMSA8PCA1LAogIGtDb250cm9sU3VwcG9y
dHNEYXRhQWNjZXNzID0gMSA8PCA2LAogIGtDb250cm9sSGFzU3BlY2lhbEJhY2tncm91bmQgPSAx
IDw8IDcsCiAga0NvbnRyb2xHZXRzRm9jdXNPbkNsaWNrID0gMSA8PCA4LAogIGtDb250cm9sU3Vw
cG9ydHNDYWxjQmVzdFJlY3QgPSAxIDw8IDksCiAga0NvbnRyb2xTdXBwb3J0c0xpdmVGZWVkYmFj
ayA9IDEgPDwgMTAsCiAga0NvbnRyb2xIYXNSYWRpb0JlaGF2aW9yID0gMSA8PCAxMSwKICBrQ29u
dHJvbFN1cHBvcnRzRHJhZ0FuZERyb3AgPSAxIDw8IDEyLAogIGtDb250cm9sQXV0b1RvZ2dsZXMg
PSAxIDw8IDE0LAogIGtDb250cm9sU3VwcG9ydHNHZXRSZWdpb24gPSAxIDw8IDE3LAogIGtDb250
cm9sU3VwcG9ydHNGbGF0dGVuaW5nID0gMSA8PCAxOSwKICBrQ29udHJvbFN1cHBvcnRzU2V0Q3Vy
c29yID0gMSA8PCAyMCwKICBrQ29udHJvbFN1cHBvcnRzQ29udGV4dHVhbE1lbnVzID0gMSA8PCAy
MSwKICBrQ29udHJvbFN1cHBvcnRzQ2xpY2tBY3RpdmF0aW9uID0gMSA8PCAyMiwKICBrQ29udHJv
bElkbGVzV2l0aFRpbWVyID0gMSA8PCAyMywKIyA3ODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvQ29udHJvbHMuaCIgMwogIGtDb250cm9sSW52ZXJ0c1VwRG93blZhbHVlTWVhbmluZyA9IDEg
PDwgMjQKfTsKIyA4NDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbHMuaCIgMwpl
bnVtIHsKCgoKCgogIGtDb250cm9sU2l6ZU5vcm1hbCA9IDAsCiMgODYzICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0NvbnRyb2xzLmgiIDMKICBrQ29udHJvbFNpemVTbWFsbCA9IDEsCgoKCgoK
CiAga0NvbnRyb2xTaXplTGFyZ2UgPSAyLAojIDg3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9Db250cm9scy5oIiAzCiAga0NvbnRyb2xTaXplTWluaSA9IDMsCiMgODg5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0NvbnRyb2xzLmgiIDMKICBrQ29udHJvbFNpemVBdXRvID0gMHhGRkZG
Cn07Cgp0eXBlZGVmIFVJbnQxNiBDb250cm9sU2l6ZTsKCgoKZW51bSB7CiAga0RyYXdDb250cm9s
RW50aXJlQ29udHJvbCA9IDAsCiAga0RyYXdDb250cm9sSW5kaWNhdG9yT25seSA9IDEyOQp9Owoj
IDkxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9Db250cm9scy5oIiAzCnN0cnVjdCBJbmRp
Y2F0b3JEcmFnQ29uc3RyYWludCB7CiAgUmVjdCBsaW1pdFJlY3Q7CiAgUmVjdCBzbG9wUmVjdDsK
ICBEcmFnQ29uc3RyYWludCBheGlzOwp9Owp0eXBlZGVmIHN0cnVjdCBJbmRpY2F0b3JEcmFnQ29u
c3RyYWludCBJbmRpY2F0b3JEcmFnQ29uc3RyYWludDsKdHlwZWRlZiBJbmRpY2F0b3JEcmFnQ29u
c3RyYWludCAqIEluZGljYXRvckRyYWdDb25zdHJhaW50UHRyOwojIDExMjIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQ29udHJvbHMuaCIgMwplbnVtIHsKICBrQ29udHJvbEtleUZpbHRlckJs
b2NrS2V5ID0gMCwKICBrQ29udHJvbEtleUZpbHRlclBhc3NLZXkgPSAxCn07Cgp0eXBlZGVmIFNJ
bnQxNiBDb250cm9sS2V5RmlsdGVyUmVzdWx0Owp0eXBlZGVmIENvbnRyb2xLZXlGaWx0ZXJSZXN1
bHQgKCAqIENvbnRyb2xLZXlGaWx0ZXJQcm9jUHRyKShDb250cm9sUmVmIHRoZUNvbnRyb2wsIFNJ
bnQxNiAqa2V5Q29kZSwgU0ludDE2ICpjaGFyQ29kZSwgRXZlbnRNb2RpZmllcnMgKm1vZGlmaWVy
cyk7CnR5cGVkZWYgQ29udHJvbEtleUZpbHRlclByb2NQdHIgQ29udHJvbEtleUZpbHRlclVQUDsK
IyAxMTM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NvbnRyb2xzLmgiIDMKZXh0ZXJuIENv
bnRyb2xLZXlGaWx0ZXJVUFAKTmV3Q29udHJvbEtleUZpbHRlclVQUChDb250cm9sS2V5RmlsdGVy
UHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDExNDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
Q29udHJvbHMuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlQ29udHJvbEtleUZpbHRlclVQUChDb250
cm9sS2V5RmlsdGVyVVBQIHVzZXJVUFApIDsKIyAxMTYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0NvbnRyb2xzLmgiIDMKZXh0ZXJuIENvbnRyb2xLZXlGaWx0ZXJSZXN1bHQKSW52b2tlQ29u
dHJvbEtleUZpbHRlclVQUCgKICBDb250cm9sUmVmIHRoZUNvbnRyb2wsCiAgU0ludDE2ICoga2V5
Q29kZSwKICBTSW50MTYgKiBjaGFyQ29kZSwKICBFdmVudE1vZGlmaWVycyAqIG1vZGlmaWVycywK
ICBDb250cm9sS2V5RmlsdGVyVVBQIHVzZXJVUFApIDsKCgoKICAgIGlubGluZSBDb250cm9sS2V5
RmlsdGVyVVBQIE5ld0NvbnRyb2xLZXlGaWx0ZXJVUFAoQ29udHJvbEtleUZpbHRlclByb2NQdHIg
dXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNw
b3NlQ29udHJvbEtleUZpbHRlclVQUChDb250cm9sS2V5RmlsdGVyVVBQKSB7IH0KICAgIGlubGlu
ZSBDb250cm9sS2V5RmlsdGVyUmVzdWx0IEludm9rZUNvbnRyb2xLZXlGaWx0ZXJVUFAoQ29udHJv
bFJlZiB0aGVDb250cm9sLCBTSW50MTYgKiBrZXlDb2RlLCBTSW50MTYgKiBjaGFyQ29kZSwgRXZl
bnRNb2RpZmllcnMgKiBtb2RpZmllcnMsIENvbnRyb2xLZXlGaWx0ZXJVUFAgdXNlclVQUCkgeyBy
ZXR1cm4gKCp1c2VyVVBQKSh0aGVDb250cm9sLCBrZXlDb2RlLCBjaGFyQ29kZSwgbW9kaWZpZXJz
KTsgfQojIDExODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbHMuaCIgMwplbnVt
IHsKICBub0NvbnN0cmFpbnQgPSBrTm9Db25zdHJhaW50LAogIGhBeGlzT25seSA9IDEsCiAgdkF4
aXNPbmx5ID0gMgp9OwojIDI4OTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbHMu
aCIgMwpzdHJ1Y3QgQ29udHJvbElEIHsKCgoKCgoKCiAgT1NUeXBlIHNpZ25hdHVyZTsKCgoKCgoK
ICBTSW50MzIgaWQ7Cn07CnR5cGVkZWYgc3RydWN0IENvbnRyb2xJRCBDb250cm9sSUQ7CiMgMzAy
OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9Db250cm9scy5oIiAzCnN0cnVjdCBDb250cm9s
S2luZCB7CiAgT1NUeXBlIHNpZ25hdHVyZTsKICBPU1R5cGUga2luZDsKfTsKdHlwZWRlZiBzdHJ1
Y3QgQ29udHJvbEtpbmQgQ29udHJvbEtpbmQ7CgoKCgoKZW51bSB7CgoKCgogIGtDb250cm9sS2lu
ZFNpZ25hdHVyZUFwcGxlID0gJ2FwcGwnCn07CiMgMzA5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9Db250cm9scy5oIiAzCmVudW0gewogIGtDb250cm9sUHJvcGVydHlQZXJzaXN0ZW50ID0g
MHgwMDAwMDAwMQp9OwojIDQwODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbHMu
aCIgMwplbnVtIHsKCgoKCgogIGtEcmFnVHJhY2tpbmdFbnRlckNvbnRyb2wgPSAyLAoKCgoKCiAg
a0RyYWdUcmFja2luZ0luQ29udHJvbCA9IDMsCgoKCgoKICBrRHJhZ1RyYWNraW5nTGVhdmVDb250
cm9sID0gNAp9OwojIDQ3MzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbHMuaCIg
MwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVZpZXcuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVu
dHMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgi
IDMKI2RlZmluZSBfX0NBUkJPTkVWRU5UU19fIAojIDQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0NhcmJvbkV2ZW50cy5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNX
aW5kb3dzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3Mu
aCIgMwojZGVmaW5lIF9fTUFDV0lORE9XU19fIAojIDUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL01hY1dpbmRvd3MuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikK
IyA2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKdHlwZWRlZiBX
aW5kb3dSZWYgSElXaW5kb3dSZWY7CgoKCnR5cGVkZWYgT1NUeXBlIFByb3BlcnR5Q3JlYXRvcjsK
dHlwZWRlZiBPU1R5cGUgUHJvcGVydHlUYWc7CiMgODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvTWFjV2luZG93cy5oIiAzCnR5cGVkZWYgVUludDMyIFdpbmRvd0NsYXNzOwplbnVtIHsKIyAx
MDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga0FsZXJ0V2lu
ZG93Q2xhc3MgPSAxLAojIDEyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dz
LmgiIDMKICBrTW92YWJsZUFsZXJ0V2luZG93Q2xhc3MgPSAyLAojIDEzOSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBrTW9kYWxXaW5kb3dDbGFzcyA9IDMsCiMg
MTU5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwogIGtNb3ZhYmxl
TW9kYWxXaW5kb3dDbGFzcyA9IDQsCiMgMTc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01h
Y1dpbmRvd3MuaCIgMwogIGtGbG9hdGluZ1dpbmRvd0NsYXNzID0gNSwKIyAxOTIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga0RvY3VtZW50V2luZG93Q2xhc3Mg
PSA2LAojIDIxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBr
VXRpbGl0eVdpbmRvd0NsYXNzID0gOCwKIyAyMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
TWFjV2luZG93cy5oIiAzCiAga0hlbHBXaW5kb3dDbGFzcyA9IDEwLAojIDI0OCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBrU2hlZXRXaW5kb3dDbGFzcyA9IDEx
LAojIDI2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBrVG9v
bGJhcldpbmRvd0NsYXNzID0gMTIsCiMgMjg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01h
Y1dpbmRvd3MuaCIgMwogIGtQbGFpbldpbmRvd0NsYXNzID0gMTMsCiMgMzI2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwogIGtPdmVybGF5V2luZG93Q2xhc3MgPSAx
NCwKIyAzNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga1No
ZWV0QWxlcnRXaW5kb3dDbGFzcyA9IDE1LAojIDM2OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9NYWNXaW5kb3dzLmgiIDMKICBrQWx0UGxhaW5XaW5kb3dDbGFzcyA9IDE2LAojIDM4NSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBrU2ltcGxlV2luZG93Q2xh
c3MgPSAxOCwKIyA0MDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAz
CiAga0RyYXdlcldpbmRvd0NsYXNzID0gMjAsCiMgNDExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL01hY1dpbmRvd3MuaCIgMwogIGtBbGxXaW5kb3dDbGFzc2VzID0gKFVJbnQzMikweEZGRkZG
RkZGCn07CiMgNDIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwpl
bnVtIHsKCgoKCgoKCiAga0hJV2luZG93Qml0Q2xvc2VCb3ggPSAxLAojIDQ0MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBrSElXaW5kb3dCaXRab29tQm94ID0g
MiwKIyA0NTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga0hJ
V2luZG93Qml0Q29sbGFwc2VCb3ggPSA0LAoKCgoKCgogIGtISVdpbmRvd0JpdFJlc2l6YWJsZSA9
IDUsCgoKCgoKCiAga0hJV2luZG93Qml0U2lkZVRpdGxlYmFyID0gNiwKCgoKCgogIGtISVdpbmRv
d0JpdFRvb2xiYXJCdXR0b24gPSA3LAojIDQ4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9N
YWNXaW5kb3dzLmgiIDMKICBrSElXaW5kb3dCaXRVbmlmaWVkVGl0bGVBbmRUb29sYmFyID0gOCwK
IyA0OTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga0hJV2lu
ZG93Qml0VGV4dHVyZWQgPSA5LAoKCgoKCgogIGtISVdpbmRvd0JpdE5vVGl0bGVCYXIgPSAxMCwK
IyA1MTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga0hJV2lu
ZG93Qml0VGV4dHVyZWRTcXVhcmVDb3JuZXJzID0gMTEsCgoKCgoKCgogIGtISVdpbmRvd0JpdE5v
VGV4dHVyZWRDb250ZW50U2VwYXJhdG9yID0gMTIsCiMgNTM5ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL01hY1dpbmRvd3MuaCIgMwogIGtISVdpbmRvd0JpdFJvdW5kQm90dG9tQmFyQ29ybmVy
cyA9IDEzLAoKCgoKCgoKICBrSElXaW5kb3dCaXREb2VzTm90Q3ljbGUgPSAxNiwKCgoKCiAga0hJ
V2luZG93Qml0Tm9VcGRhdGVzID0gMTcsCgoKCgogIGtISVdpbmRvd0JpdE5vQWN0aXZhdGVzID0g
MTgsCgoKCgoKCgogIGtISVdpbmRvd0JpdE9wYXF1ZUZvckV2ZW50cyA9IDE5LAojIDU3NCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBrSElXaW5kb3dCaXRDb21w
b3NpdGluZyA9IDIwLAojIDU4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dz
LmgiIDMKICBrSElXaW5kb3dCaXRGcmFtZXdvcmtTY2FsZWQgPSAyMSwKCgoKCgoKICBrSElXaW5k
b3dCaXROb1NoYWRvdyA9IDIyLAojIDYwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNX
aW5kb3dzLmgiIDMKICBrSElXaW5kb3dCaXRDYW5CZVZpc2libGVXaXRob3V0TG9naW4gPSAyMywK
IyA2MTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga0hJV2lu
ZG93Qml0QXN5bmNEcmFnID0gMjQsCgoKCgoKCgogIGtISVdpbmRvd0JpdEhpZGVPblN1c3BlbmQg
PSAyNSwKCgoKCgogIGtISVdpbmRvd0JpdFN0YW5kYXJkSGFuZGxlciA9IDI2LAoKCgoKCgoKICBr
SElXaW5kb3dCaXRIaWRlT25GdWxsU2NyZWVuID0gMjcsCgoKCgoKCiAga0hJV2luZG93Qml0SW5X
aW5kb3dNZW51ID0gMjgsCgoKCgoKICBrSElXaW5kb3dCaXRMaXZlUmVzaXplID0gMjksCgoKCgoK
CgogIGtISVdpbmRvd0JpdElnbm9yZUNsaWNrcyA9IDMwLAoKCgoKCgoKICBrSElXaW5kb3dCaXRO
b0NvbnN0cmFpbiA9IDMyLAoKCgoKCgogIGtISVdpbmRvd0JpdERvZXNOb3RIaWRlID0gMzMsCiMg
Njg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwogIGtISVdpbmRv
d0JpdEF1dG9WaWV3RHJhZ1RyYWNraW5nID0gMzQsCiMgNjk3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL01hY1dpbmRvd3MuaCIgMwogIGtISVdpbmRvd0JpdEF1dG9DYWxpYnJhdGlvbiA9IDM2
Cn07CiMgNzEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwplbnVt
IHsKCgoKCiAga1dpbmRvd05vQXR0cmlidXRlcyA9IDAsCgoKCgogIGtXaW5kb3dDbG9zZUJveEF0
dHJpYnV0ZSA9ICgxIDw8IChrSElXaW5kb3dCaXRDbG9zZUJveCAtIDEpKSwKCgoKCiAga1dpbmRv
d0hvcml6b250YWxab29tQXR0cmlidXRlID0gKDEgPDwgKGtISVdpbmRvd0JpdFpvb21Cb3ggLSAx
KSksCgoKCgogIGtXaW5kb3dWZXJ0aWNhbFpvb21BdHRyaWJ1dGUgPSAoMSA8PCBrSElXaW5kb3dC
aXRab29tQm94KSwKCgoKCiAga1dpbmRvd0Z1bGxab29tQXR0cmlidXRlID0gKGtXaW5kb3dWZXJ0
aWNhbFpvb21BdHRyaWJ1dGUgfCBrV2luZG93SG9yaXpvbnRhbFpvb21BdHRyaWJ1dGUpLAoKCgoK
ICBrV2luZG93Q29sbGFwc2VCb3hBdHRyaWJ1dGUgPSAoMSA8PCAoa0hJV2luZG93Qml0Q29sbGFw
c2VCb3ggLSAxKSksCgoKCgogIGtXaW5kb3dSZXNpemFibGVBdHRyaWJ1dGUgPSAoMSA8PCAoa0hJ
V2luZG93Qml0UmVzaXphYmxlIC0gMSkpLAoKCgoKICBrV2luZG93U2lkZVRpdGxlYmFyQXR0cmli
dXRlID0gKDEgPDwgKGtISVdpbmRvd0JpdFNpZGVUaXRsZWJhciAtIDEpKSwKCgoKCiAga1dpbmRv
d1Rvb2xiYXJCdXR0b25BdHRyaWJ1dGUgPSAoMSA8PCAoa0hJV2luZG93Qml0VG9vbGJhckJ1dHRv
biAtIDEpKSwKCgoKCiAga1dpbmRvd1VuaWZpZWRUaXRsZUFuZFRvb2xiYXJBdHRyaWJ1dGUgPSAo
MSA8PCAoa0hJV2luZG93Qml0VW5pZmllZFRpdGxlQW5kVG9vbGJhciAtIDEpKSwKCgoKCiAga1dp
bmRvd01ldGFsQXR0cmlidXRlID0gKDEgPDwgKGtISVdpbmRvd0JpdFRleHR1cmVkIC0gMSkpLAoK
CgoKICBrV2luZG93Tm9UaXRsZUJhckF0dHJpYnV0ZSA9ICgxIDw8IChrSElXaW5kb3dCaXROb1Rp
dGxlQmFyIC0gMSkpLAoKCgoKICBrV2luZG93VGV4dHVyZWRTcXVhcmVDb3JuZXJzQXR0cmlidXRl
ID0gKDEgPDwgKGtISVdpbmRvd0JpdFRleHR1cmVkU3F1YXJlQ29ybmVycyAtIDEpKSwKCgoKCiAg
a1dpbmRvd01ldGFsTm9Db250ZW50U2VwYXJhdG9yQXR0cmlidXRlID0gKDEgPDwgKGtISVdpbmRv
d0JpdE5vVGV4dHVyZWRDb250ZW50U2VwYXJhdG9yIC0gMSkpLAogIGtXaW5kb3dIYXNSb3VuZEJv
dHRvbUJhckNvcm5lcnNBdHRyaWJ1dGUgPSAoMSA8PCAoa0hJV2luZG93Qml0Um91bmRCb3R0b21C
YXJDb3JuZXJzIC0gMSkpLAoKCgoKICBrV2luZG93RG9lc05vdEN5Y2xlQXR0cmlidXRlID0gKDEg
PDwgKGtISVdpbmRvd0JpdERvZXNOb3RDeWNsZSAtIDEpKSwKCgoKCiAga1dpbmRvd05vVXBkYXRl
c0F0dHJpYnV0ZSA9ICgxIDw8IChrSElXaW5kb3dCaXROb1VwZGF0ZXMgLSAxKSksCgoKCgogIGtX
aW5kb3dOb0FjdGl2YXRlc0F0dHJpYnV0ZSA9ICgxIDw8IChrSElXaW5kb3dCaXROb0FjdGl2YXRl
cyAtIDEpKSwKCgoKCiAga1dpbmRvd09wYXF1ZUZvckV2ZW50c0F0dHJpYnV0ZSA9ICgxIDw8IChr
SElXaW5kb3dCaXRPcGFxdWVGb3JFdmVudHMgLSAxKSksCgoKCgogIGtXaW5kb3dDb21wb3NpdGlu
Z0F0dHJpYnV0ZSA9ICgxIDw8IChrSElXaW5kb3dCaXRDb21wb3NpdGluZyAtIDEpKSwKCgoKCiAg
a1dpbmRvd05vU2hhZG93QXR0cmlidXRlID0gKDEgPDwgKGtISVdpbmRvd0JpdE5vU2hhZG93IC0g
MSkpLAoKCgoKICBrV2luZG93Q2FuQmVWaXNpYmxlV2l0aG91dExvZ2luQXR0cmlidXRlID0gKDEg
PDwgKGtISVdpbmRvd0JpdENhbkJlVmlzaWJsZVdpdGhvdXRMb2dpbiAtIDEpKSwKCgoKCiAga1dp
bmRvd0hpZGVPblN1c3BlbmRBdHRyaWJ1dGUgPSAoMSA8PCAoa0hJV2luZG93Qml0SGlkZU9uU3Vz
cGVuZCAtIDEpKSwKCgoKCiAga1dpbmRvd0FzeW5jRHJhZ0F0dHJpYnV0ZSA9ICgxIDw8IChrSElX
aW5kb3dCaXRBc3luY0RyYWcgLSAxKSksCgoKCgogIGtXaW5kb3dTdGFuZGFyZEhhbmRsZXJBdHRy
aWJ1dGUgPSAoMSA8PCAoa0hJV2luZG93Qml0U3RhbmRhcmRIYW5kbGVyIC0gMSkpLAoKCgoKICBr
V2luZG93SGlkZU9uRnVsbFNjcmVlbkF0dHJpYnV0ZSA9ICgxIDw8IChrSElXaW5kb3dCaXRIaWRl
T25GdWxsU2NyZWVuIC0gMSkpLAoKCgoKICBrV2luZG93SW5XaW5kb3dNZW51QXR0cmlidXRlID0g
KDEgPDwgKGtISVdpbmRvd0JpdEluV2luZG93TWVudSAtIDEpKSwKCgoKCiAga1dpbmRvd0xpdmVS
ZXNpemVBdHRyaWJ1dGUgPSAoMSA8PCAoa0hJV2luZG93Qml0TGl2ZVJlc2l6ZSAtIDEpKSwKCgoK
CiAga1dpbmRvd0lnbm9yZUNsaWNrc0F0dHJpYnV0ZSA9ICgxIDw8IChrSElXaW5kb3dCaXRJZ25v
cmVDbGlja3MgLSAxKSksCgoKCgogIGtXaW5kb3dGcmFtZXdvcmtTY2FsZWRBdHRyaWJ1dGUgPSAo
MSA8PCAoa0hJV2luZG93Qml0RnJhbWV3b3JrU2NhbGVkIC0gMSkpLAoKCgoKCiAga1dpbmRvd1N0
YW5kYXJkRG9jdW1lbnRBdHRyaWJ1dGVzID0gKGtXaW5kb3dDbG9zZUJveEF0dHJpYnV0ZSB8IGtX
aW5kb3dGdWxsWm9vbUF0dHJpYnV0ZSB8IGtXaW5kb3dDb2xsYXBzZUJveEF0dHJpYnV0ZSB8IGtX
aW5kb3dSZXNpemFibGVBdHRyaWJ1dGUpLAoKCgoKCiAga1dpbmRvd1N0YW5kYXJkRmxvYXRpbmdB
dHRyaWJ1dGVzID0gKGtXaW5kb3dDbG9zZUJveEF0dHJpYnV0ZSB8IGtXaW5kb3dDb2xsYXBzZUJv
eEF0dHJpYnV0ZSkKfTsKCgplbnVtCnsKCgoKICBrV2luZG93Tm9Db25zdHJhaW5BdHRyaWJ1dGUg
PSAweDgwMDAwMDAwCn07CnR5cGVkZWYgT3B0aW9uQml0cyBXaW5kb3dBdHRyaWJ1dGVzOwoKCgpl
bnVtIHsKICBrV2luZG93RGVmUHJvY1R5cGUgPSAnV0RFRicKfTsKCgoKCmVudW0gewogIGtTdGFu
ZGFyZFdpbmRvd0RlZmluaXRpb24gPSAwLAogIGtSb3VuZFdpbmRvd0RlZmluaXRpb24gPSAxLAog
IGtGbG9hdGluZ1dpbmRvd0RlZmluaXRpb24gPSAxMjQKfTsKCgoKCmVudW0gewoKICBrRG9jdW1l
bnRXaW5kb3dWYXJpYW50Q29kZSA9IDAsCiAga01vZGFsRGlhbG9nVmFyaWFudENvZGUgPSAxLAog
IGtQbGFpbkRpYWxvZ1ZhcmlhbnRDb2RlID0gMiwKICBrU2hhZG93RGlhbG9nVmFyaWFudENvZGUg
PSAzLAogIGtNb3ZhYmxlTW9kYWxEaWFsb2dWYXJpYW50Q29kZSA9IDUsCiAga0FsZXJ0VmFyaWFu
dENvZGUgPSA3LAogIGtNb3ZhYmxlQWxlcnRWYXJpYW50Q29kZSA9IDksCiAga1NpZGVGbG9hdGVy
VmFyaWFudENvZGUgPSA4Cn07CgoKCgoKZW51bSB7CgogIGRvY3VtZW50UHJvYyA9IDAsCiAgZEJv
eFByb2MgPSAxLAogIHBsYWluREJveCA9IDIsCiAgYWx0REJveFByb2MgPSAzLAogIG5vR3Jvd0Rv
Y1Byb2MgPSA0LAogIG1vdmFibGVEQm94UHJvYyA9IDUsCiAgem9vbURvY1Byb2MgPSA4LAogIHpv
b21Ob0dyb3cgPSAxMiwKICBmbG9hdFByb2MgPSAxOTg1LAogIGZsb2F0R3Jvd1Byb2MgPSAxOTg3
LAogIGZsb2F0Wm9vbVByb2MgPSAxOTg5LAogIGZsb2F0Wm9vbUdyb3dQcm9jID0gMTk5MSwKICBm
bG9hdFNpZGVQcm9jID0gMTk5MywKICBmbG9hdFNpZGVHcm93UHJvYyA9IDE5OTUsCiAgZmxvYXRT
aWRlWm9vbVByb2MgPSAxOTk3LAogIGZsb2F0U2lkZVpvb21Hcm93UHJvYyA9IDE5OTkKfTsKCmVu
dW0gewoKICBrV2luZG93RG9jdW1lbnREZWZQcm9jUmVzSUQgPSA2NCwKICBrV2luZG93RGlhbG9n
RGVmUHJvY1Jlc0lEID0gNjUsCiAga1dpbmRvd1V0aWxpdHlEZWZQcm9jUmVzSUQgPSA2NiwKICBr
V2luZG93VXRpbGl0eVNpZGVUaXRsZURlZlByb2NSZXNJRCA9IDY3LAogIGtXaW5kb3dTaGVldERl
ZlByb2NSZXNJRCA9IDY4LAogIGtXaW5kb3dTaW1wbGVEZWZQcm9jUmVzSUQgPSA2OSwKICBrV2lu
ZG93U2hlZXRBbGVydERlZlByb2NSZXNJRCA9IDcwCn07CgplbnVtIHsKCiAga1dpbmRvd0RvY3Vt
ZW50UHJvYyA9IDEwMjQsCiAga1dpbmRvd0dyb3dEb2N1bWVudFByb2MgPSAxMDI1LAogIGtXaW5k
b3dWZXJ0Wm9vbURvY3VtZW50UHJvYyA9IDEwMjYsCiAga1dpbmRvd1ZlcnRab29tR3Jvd0RvY3Vt
ZW50UHJvYyA9IDEwMjcsCiAga1dpbmRvd0hvcml6Wm9vbURvY3VtZW50UHJvYyA9IDEwMjgsCiAg
a1dpbmRvd0hvcml6Wm9vbUdyb3dEb2N1bWVudFByb2MgPSAxMDI5LAogIGtXaW5kb3dGdWxsWm9v
bURvY3VtZW50UHJvYyA9IDEwMzAsCiAga1dpbmRvd0Z1bGxab29tR3Jvd0RvY3VtZW50UHJvYyA9
IDEwMzEKfTsKCgplbnVtIHsKCiAga1dpbmRvd1BsYWluRGlhbG9nUHJvYyA9IDEwNDAsCiAga1dp
bmRvd1NoYWRvd0RpYWxvZ1Byb2MgPSAxMDQxLAogIGtXaW5kb3dNb2RhbERpYWxvZ1Byb2MgPSAx
MDQyLAogIGtXaW5kb3dNb3ZhYmxlTW9kYWxEaWFsb2dQcm9jID0gMTA0MywKICBrV2luZG93QWxl
cnRQcm9jID0gMTA0NCwKICBrV2luZG93TW92YWJsZUFsZXJ0UHJvYyA9IDEwNDUKfTsKCgplbnVt
IHsKCiAga1dpbmRvd01vdmFibGVNb2RhbEdyb3dQcm9jID0gMTA0Ngp9OwoKCmVudW0gewoKICBr
V2luZG93RmxvYXRQcm9jID0gMTA1NywKICBrV2luZG93RmxvYXRHcm93UHJvYyA9IDEwNTksCiAg
a1dpbmRvd0Zsb2F0VmVydFpvb21Qcm9jID0gMTA2MSwKICBrV2luZG93RmxvYXRWZXJ0Wm9vbUdy
b3dQcm9jID0gMTA2MywKICBrV2luZG93RmxvYXRIb3Jpelpvb21Qcm9jID0gMTA2NSwKICBrV2lu
ZG93RmxvYXRIb3Jpelpvb21Hcm93UHJvYyA9IDEwNjcsCiAga1dpbmRvd0Zsb2F0RnVsbFpvb21Q
cm9jID0gMTA2OSwKICBrV2luZG93RmxvYXRGdWxsWm9vbUdyb3dQcm9jID0gMTA3MQp9OwoKCmVu
dW0gewoKICBrV2luZG93RmxvYXRTaWRlUHJvYyA9IDEwNzMsCiAga1dpbmRvd0Zsb2F0U2lkZUdy
b3dQcm9jID0gMTA3NSwKICBrV2luZG93RmxvYXRTaWRlVmVydFpvb21Qcm9jID0gMTA3NywKICBr
V2luZG93RmxvYXRTaWRlVmVydFpvb21Hcm93UHJvYyA9IDEwNzksCiAga1dpbmRvd0Zsb2F0U2lk
ZUhvcml6Wm9vbVByb2MgPSAxMDgxLAogIGtXaW5kb3dGbG9hdFNpZGVIb3Jpelpvb21Hcm93UHJv
YyA9IDEwODMsCiAga1dpbmRvd0Zsb2F0U2lkZUZ1bGxab29tUHJvYyA9IDEwODUsCiAga1dpbmRv
d0Zsb2F0U2lkZUZ1bGxab29tR3Jvd1Byb2MgPSAxMDg3Cn07CgoKZW51bSB7CgogIGtXaW5kb3dT
aGVldFByb2MgPSAxMDg4LAogIGtXaW5kb3dTaGVldEFsZXJ0UHJvYyA9IDExMjAKfTsKCgoKCgoK
CmVudW0gewoKCgoKCgogIGtXaW5kb3dTaW1wbGVQcm9jID0gMTEwNCwKCgoKCiAga1dpbmRvd1Np
bXBsZUZyYW1lUHJvYyA9IDExMDUKfTsKCgoKCgoKZW51bSB7CgoKCgogIGtXaW5kb3dPdmVybGF5
UHJvYyA9IDExMzYKfTsKIyAxMDUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRv
d3MuaCIgMwplbnVtIHsKICBrV2luZG93Tm9Qb3NpdGlvbiA9IDB4MDAwMCwKICBrV2luZG93RGVm
YXVsdFBvc2l0aW9uID0gMHgwMDAwLAogIGtXaW5kb3dDZW50ZXJNYWluU2NyZWVuID0gMHgyODBB
LAogIGtXaW5kb3dBbGVydFBvc2l0aW9uTWFpblNjcmVlbiA9IDB4MzAwQSwKICBrV2luZG93U3Rh
Z2dlck1haW5TY3JlZW4gPSAweDM4MEEsCiAga1dpbmRvd0NlbnRlclBhcmVudFdpbmRvdyA9IDB4
QTgwQSwKICBrV2luZG93QWxlcnRQb3NpdGlvblBhcmVudFdpbmRvdyA9IDB4QjAwQSwKICBrV2lu
ZG93U3RhZ2dlclBhcmVudFdpbmRvdyA9IDB4QjgwQSwKICBrV2luZG93Q2VudGVyUGFyZW50V2lu
ZG93U2NyZWVuID0gMHg2ODBBLAogIGtXaW5kb3dBbGVydFBvc2l0aW9uUGFyZW50V2luZG93U2Ny
ZWVuID0gMHg3MDBBLAogIGtXaW5kb3dTdGFnZ2VyUGFyZW50V2luZG93U2NyZWVuID0gMHg3ODBB
Cn07CiMgMTA4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKdHlw
ZWRlZiBVSW50MzIgV2luZG93UG9zaXRpb25NZXRob2Q7CmVudW0gewoKCgoKICBrV2luZG93Q2Vu
dGVyT25NYWluU2NyZWVuID0gMSwKCgoKCgogIGtXaW5kb3dDZW50ZXJPblBhcmVudFdpbmRvdyA9
IDIsCiMgMTEwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBr
V2luZG93Q2VudGVyT25QYXJlbnRXaW5kb3dTY3JlZW4gPSAzLAoKCgoKICBrV2luZG93Q2FzY2Fk
ZU9uTWFpblNjcmVlbiA9IDQsCgoKCgoKICBrV2luZG93Q2FzY2FkZU9uUGFyZW50V2luZG93ID0g
NSwKIyAxMTI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwogIGtX
aW5kb3dDYXNjYWRlT25QYXJlbnRXaW5kb3dTY3JlZW4gPSA2LAojIDExMzUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga1dpbmRvd0Nhc2NhZGVTdGFydEF0UGFy
ZW50V2luZG93U2NyZWVuID0gMTAsCgoKCgogIGtXaW5kb3dBbGVydFBvc2l0aW9uT25NYWluU2Ny
ZWVuID0gNywKCgoKCgogIGtXaW5kb3dBbGVydFBvc2l0aW9uT25QYXJlbnRXaW5kb3cgPSA4LAoj
IDExNTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga1dpbmRv
d0FsZXJ0UG9zaXRpb25PblBhcmVudFdpbmRvd1NjcmVlbiA9IDkKfTsKCgoKCgp0eXBlZGVmIFVJ
bnQxNiBXaW5kb3dSZWdpb25Db2RlOwplbnVtIHsKCiAga1dpbmRvd1RpdGxlQmFyUmduID0gMCwK
ICBrV2luZG93VGl0bGVUZXh0UmduID0gMSwKICBrV2luZG93Q2xvc2VCb3hSZ24gPSAyLAogIGtX
aW5kb3dab29tQm94UmduID0gMywKICBrV2luZG93RHJhZ1JnbiA9IDUsCiAga1dpbmRvd0dyb3dS
Z24gPSA2LAogIGtXaW5kb3dDb2xsYXBzZUJveFJnbiA9IDcsCiAga1dpbmRvd1RpdGxlUHJveHlJ
Y29uUmduID0gOCwKICBrV2luZG93U3RydWN0dXJlUmduID0gMzIsCiAga1dpbmRvd0NvbnRlbnRS
Z24gPSAzMywKICBrV2luZG93VXBkYXRlUmduID0gMzQsCiAga1dpbmRvd09wYXF1ZVJnbiA9IDM1
LAogIGtXaW5kb3dHbG9iYWxQb3J0UmduID0gNDAsCiAga1dpbmRvd1Rvb2xiYXJCdXR0b25SZ24g
PSA0MQp9OwoKCgoKCmVudW0gewogIGRpYWxvZ0tpbmQgPSAyLAogIHVzZXJLaW5kID0gOCwKICBr
RGlhbG9nV2luZG93S2luZCA9IDIsCiAga0FwcGxpY2F0aW9uV2luZG93S2luZCA9IDgKfTsKCgoK
Cgp0eXBlZGVmIFNJbnQxNiBXaW5kb3dQYXJ0Q29kZTsKZW51bSB7CiAgaW5EZXNrID0gMCwKICBp
bk5vV2luZG93ID0gMCwKICBpbk1lbnVCYXIgPSAxLAogIGluU3lzV2luZG93ID0gMiwKICBpbkNv
bnRlbnQgPSAzLAogIGluRHJhZyA9IDQsCiAgaW5Hcm93ID0gNSwKICBpbkdvQXdheSA9IDYsCiAg
aW5ab29tSW4gPSA3LAogIGluWm9vbU91dCA9IDgsCiAgaW5Db2xsYXBzZUJveCA9IDExLAogIGlu
UHJveHlJY29uID0gMTIsCiAgaW5Ub29sYmFyQnV0dG9uID0gMTMsCiAgaW5TdHJ1Y3R1cmUgPSAx
NQp9OwoKCgoKdHlwZWRlZiBTSW50MTYgV2luZG93RGVmUGFydENvZGU7CmVudW0gewogIHdOb0hp
dCA9IDAsCiAgd0luQ29udGVudCA9IDEsCiAgd0luRHJhZyA9IDIsCiAgd0luR3JvdyA9IDMsCiAg
d0luR29Bd2F5ID0gNCwKICB3SW5ab29tSW4gPSA1LAogIHdJblpvb21PdXQgPSA2LAogIHdJbkNv
bGxhcHNlQm94ID0gOSwKICB3SW5Qcm94eUljb24gPSAxMCwKICB3SW5Ub29sYmFyQnV0dG9uID0g
MTEsCiAgd0luU3RydWN0dXJlID0gMTMKfTsKIyAxMjQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL01hY1dpbmRvd3MuaCIgMwplbnVtIHsKCgoKCgoKICBrV2luZG93Q2FuR3JvdyA9ICgxIDw8
IDApLAoKCgoKCgogIGtXaW5kb3dDYW5ab29tID0gKDEgPDwgMSksCgoKCgoKCiAga1dpbmRvd0Nh
bkNvbGxhcHNlID0gKDEgPDwgMiksCgoKCgoKICBrV2luZG93SXNNb2RhbCA9ICgxIDw8IDMpLAoj
IDEyODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga1dpbmRv
d0NhbkdldFdpbmRvd1JlZ2lvbiA9ICgxIDw8IDQpLAoKCgoKCiAga1dpbmRvd0lzQWxlcnQgPSAo
MSA8PCA1KSwKCgoKCgoKICBrV2luZG93SGFzVGl0bGVCYXIgPSAoMSA8PCA2KSwKCgoKCgogIGtX
aW5kb3dTdXBwb3J0c0RyYWdIaWxpdGUgPSAoMSA8PCA3KSwKCgoKCgogIGtXaW5kb3dTdXBwb3J0
c01vZGlmaWVkQml0ID0gKDEgPDwgOCksCgoKCgoKCiAga1dpbmRvd0NhbkRyYXdJbkN1cnJlbnRQ
b3J0ID0gKDEgPDwgOSksCgoKCgoKCiAga1dpbmRvd0NhblNldHVwUHJveHlEcmFnSW1hZ2UgPSAo
MSA8PCAxMCksCgoKCgoKICBrV2luZG93Q2FuTWVhc3VyZVRpdGxlID0gKDEgPDwgMTEpLAoKCgoK
CgoKICBrV2luZG93V2FudHNEaXNwb3NlQXRQcm9jZXNzRGVhdGggPSAoMSA8PCAxMiksCgoKCgoK
CiAga1dpbmRvd1N1cHBvcnRzR2V0R3Jvd0ltYWdlUmVnaW9uID0gKDEgPDwgMTMpLAojIDEzNTUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga1dpbmRvd0lzT3Bh
cXVlID0gKDEgPDwgMTQpLAoKCgoKCgogIGtXaW5kb3dEZWZTdXBwb3J0c0NvbG9yR3JhZlBvcnQg
PSAweDQwMDAwMDAyCn07CgoKCgplbnVtIHsKICBrTW91c2VVcE91dE9mU2xvcCA9IChpbnQpMHg4
MDAwODAwMAp9OwoKCgoKCgoKI2RlZmluZSBrRmlyc3RXaW5kb3dPZkNsYXNzICgoV2luZG93UmVm
KSgtMSkpCiNkZWZpbmUga0xhc3RXaW5kb3dPZkNsYXNzICgoV2luZG93UmVmKTApCgoKCgpzdHJ1
Y3QgV1N0YXRlRGF0YSB7CiAgUmVjdCB1c2VyU3RhdGU7CiAgUmVjdCBzdGRTdGF0ZTsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgV1N0YXRlRGF0YSBXU3RhdGVEYXRhOwp0eXBlZGVmIFdTdGF0ZURhdGEgKiBX
U3RhdGVEYXRhUHRyOwp0eXBlZGVmIFdTdGF0ZURhdGFQdHIgKiBXU3RhdGVEYXRhSGFuZGxlOwoK
CgoKdHlwZWRlZiB2b2lkICogV2luZG93RGVmVVBQOwojIDE0NjEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCmVudW0gewogIGtXaW5kb3dEZWZQcm9jUHRyID0gMCwK
ICBrV2luZG93RGVmT2JqZWN0Q2xhc3MgPSAxLAogIGtXaW5kb3dEZWZQcm9jSUQgPSAyLAogIGtX
aW5kb3dEZWZISVZpZXcgPSAzCn07Cgp0eXBlZGVmIFVJbnQzMiBXaW5kb3dEZWZUeXBlOwpzdHJ1
Y3QgV2luZG93RGVmU3BlYyB7CiAgV2luZG93RGVmVHlwZSBkZWZUeXBlOwogIHVuaW9uIHsKICAg
IFdpbmRvd0RlZlVQUCBkZWZQcm9jOwogICAgdm9pZCAqIGNsYXNzUmVmOwogICAgc2hvcnQgcHJv
Y0lEOwogICAgdm9pZCAqIHJvb3RWaWV3OwogIH0gdTsKfTsKdHlwZWRlZiBzdHJ1Y3QgV2luZG93
RGVmU3BlYyBXaW5kb3dEZWZTcGVjOwp0eXBlZGVmIFdpbmRvd0RlZlNwZWMgKiBXaW5kb3dEZWZT
cGVjUHRyOwojIDIxNzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAz
CmVudW0gewoKCgoKCiAga0hJV2luZG93QmFja2luZ0xvY2F0aW9uRGVmYXVsdCA9IDAsCgoKCgoK
CgogIGtISVdpbmRvd0JhY2tpbmdMb2NhdGlvblZpZGVvTWVtb3J5ID0gMSwKCgoKCgoKICBrSElX
aW5kb3dCYWNraW5nTG9jYXRpb25NYWluTWVtb3J5ID0gMgp9OwoKdHlwZWRlZiBVSW50MzIgSElX
aW5kb3dCYWNraW5nTG9jYXRpb247CiMgMjMyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9N
YWNXaW5kb3dzLmgiIDMKZW51bSB7CgoKCgogIGtISVdpbmRvd1NoYXJpbmdOb25lID0gMCwKCgoK
CiAga0hJV2luZG93U2hhcmluZ1JlYWRPbmx5ID0gMSwKCgoKCiAga0hJV2luZG93U2hhcmluZ1Jl
YWRXcml0ZSA9IDIKfTsKCnR5cGVkZWYgVUludDMyIEhJV2luZG93U2hhcmluZ1R5cGU7CiMgMjQz
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKdHlwZWRlZiBVSW50
MzIgV2luZG93TW9kYWxpdHk7CmVudW0gewoKCgoKCiAga1dpbmRvd01vZGFsaXR5Tm9uZSA9IDAs
CgoKCgoKCiAga1dpbmRvd01vZGFsaXR5U3lzdGVtTW9kYWwgPSAxLAoKCgoKCiAga1dpbmRvd01v
ZGFsaXR5QXBwTW9kYWwgPSAyLAoKCgoKICBrV2luZG93TW9kYWxpdHlXaW5kb3dNb2RhbCA9IDMK
fTsKIyAyNjQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwp0eXBl
ZGVmIHN0cnVjdCBPcGFxdWVXaW5kb3dHcm91cFJlZiogV2luZG93R3JvdXBSZWY7CgojZGVmaW5l
IGtGaXJzdFdpbmRvd09mR3JvdXAgKChXaW5kb3dSZWYpKC0xKSkKI2RlZmluZSBrTGFzdFdpbmRv
d09mR3JvdXAgKChXaW5kb3dSZWYpTlVMTCkKCiNkZWZpbmUga0ZpcnN0V2luZG93R3JvdXAgKChX
aW5kb3dHcm91cFJlZikoLTEpKQojZGVmaW5lIGtMYXN0V2luZG93R3JvdXAgKChXaW5kb3dHcm91
cFJlZilOVUxMKQoKCgoKCgoKdHlwZWRlZiBVSW50MzIgV2luZG93R3JvdXBBdHRyaWJ1dGVzOwpl
bnVtIHsKCgoKCgoKCiAga1dpbmRvd0dyb3VwQXR0clNlbGVjdEFzTGF5ZXIgPSAxIDw8IDAsCiMg
MjY3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBrV2luZG93
R3JvdXBBdHRyTW92ZVRvZ2V0aGVyID0gMSA8PCAxLAojIDI2ODMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga1dpbmRvd0dyb3VwQXR0ckxheWVyVG9nZXRoZXIg
PSAxIDw8IDIsCgoKCgoKCgogIGtXaW5kb3dHcm91cEF0dHJTaGFyZWRBY3RpdmF0aW9uID0gMSA8
PCAzLAojIDI3MDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAg
a1dpbmRvd0dyb3VwQXR0ckhpZGVPbkNvbGxhcHNlID0gMSA8PCA0LAoKCgoKCgoKICBrV2luZG93
R3JvdXBBdHRyRml4ZWRMZXZlbCA9IDEgPDwgNQp9OwojIDI3MjAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCnR5cGVkZWYgVUludDMyIFdpbmRvd0FjdGl2YXRpb25T
Y29wZTsKZW51bSB7CiMgMjczMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dz
LmgiIDMKICBrV2luZG93QWN0aXZhdGlvblNjb3BlTm9uZSA9IDAsCgoKCgoKCgogIGtXaW5kb3dB
Y3RpdmF0aW9uU2NvcGVJbmRlcGVuZGVudCA9IDEsCgoKCgoKCgogIGtXaW5kb3dBY3RpdmF0aW9u
U2NvcGVBbGwgPSAyCn07CgoKCgoKCgplbnVtIHsKCgoKCgogIGtOZXh0V2luZG93R3JvdXAgPSB0
cnVlLAoKCgoKCiAga1ByZXZpb3VzV2luZG93R3JvdXAgPSBmYWxzZQp9OwojIDI3ODAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCnR5cGVkZWYgVUludDMyIFdpbmRv
d0dyb3VwQ29udGVudE9wdGlvbnM7CmVudW0gewoKCgoKCgogIGtXaW5kb3dHcm91cENvbnRlbnRz
UmV0dXJuV2luZG93cyA9IDEgPDwgMCwKCgoKCgoKCiAga1dpbmRvd0dyb3VwQ29udGVudHNSZWN1
cnNlID0gMSA8PCAxLAoKCgoKCgogIGtXaW5kb3dHcm91cENvbnRlbnRzVmlzaWJsZSA9IDEgPDwg
Mgp9OwojIDMxODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCmVu
dW0gewojIDMxOTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAg
a1dpbmRvd0dyb3VwTGV2ZWxBY3RpdmUgPSAxLAoKCgoKCiAga1dpbmRvd0dyb3VwTGV2ZWxJbmFj
dGl2ZSA9IDIsCiMgMzIxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgi
IDMKICBrV2luZG93R3JvdXBMZXZlbFByb21vdGVkID0gMwp9OwojIDM5OTQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiNkZWZpbmUga1VzZXJGb2N1c0F1dG8gKChX
aW5kb3dSZWYpKC0xKSkKIyA0NDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRv
d3MuaCIgMwplbnVtIHsKCgoKCiAga0hJV2luZG93RGVwdGhJbnZhbGlkID0gMCwKCgoKCiAga0hJ
V2luZG93RGVwdGgzMkJpdCA9IDEsCgoKCgogIGtISVdpbmRvd0RlcHRoNjRCaXQgPSAyLAoKCgoK
CiAga0hJV2luZG93RGVwdGhGbG9hdCA9IDMKfTsKCnR5cGVkZWYgVUludDMyIEhJV2luZG93RGVw
dGg7CiMgNDUzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKdHlw
ZWRlZiBVSW50MzIgU2Nyb2xsV2luZG93T3B0aW9uczsKZW51bSB7CiAga1Njcm9sbFdpbmRvd05v
T3B0aW9ucyA9IDAsCiAga1Njcm9sbFdpbmRvd0ludmFsaWRhdGUgPSAoMSA8PCAwKSwKICBrU2Ny
b2xsV2luZG93RXJhc2VUb1BvcnRCYWNrZ3JvdW5kID0gKDEgPDwgMSkKfTsKIyA0NjExICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwplbnVtIHsKCgoKCgoKCiAga0hJ
V2luZG93SWdub3JlT2JzY3VyaW5nV2luZG93cyA9IDEgPDwgMAp9OwojIDQ4MzMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCmVudW0gewoKCgoKCiAga1dpbmRvd01l
bnVJbmNsdWRlUm90YXRlID0gMSA8PCAwCn07CiMgNDg0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9NYWNXaW5kb3dzLmgiIDMKZW51bSB7CgoKCgoKICBrSElXaW5kb3dNZW51Q3JlYXRvciA9
ICd3aW5kJywKIyA0ODY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIg
MwogIGtISVdpbmRvd01lbnVXaW5kb3dUYWcgPSAnd2luZCcKfTsKIyA2MzAzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwp0eXBlZGVmIFVJbnQzMiBXaW5kb3dUcmFu
c2l0aW9uRWZmZWN0OwplbnVtIHsKCgoKCgogIGtXaW5kb3dab29tVHJhbnNpdGlvbkVmZmVjdCA9
IDEsCgoKCgoKCiAga1dpbmRvd1NoZWV0VHJhbnNpdGlvbkVmZmVjdCA9IDIsCgoKCgoKCiAga1dp
bmRvd1NsaWRlVHJhbnNpdGlvbkVmZmVjdCA9IDMsCgoKCgoKICBrV2luZG93RmFkZVRyYW5zaXRp
b25FZmZlY3QgPSA0LAoKCgoKCgogIGtXaW5kb3dHZW5pZVRyYW5zaXRpb25FZmZlY3QgPSA1Cn07
CiMgNjM0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKdHlwZWRl
ZiBVSW50MzIgV2luZG93VHJhbnNpdGlvbkFjdGlvbjsKZW51bSB7CiMgNjM2MCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBrV2luZG93U2hvd1RyYW5zaXRpb25B
Y3Rpb24gPSAxLAojIDYzNzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5o
IiAzCiAga1dpbmRvd0hpZGVUcmFuc2l0aW9uQWN0aW9uID0gMiwKCgoKCgoKCiAga1dpbmRvd01v
dmVUcmFuc2l0aW9uQWN0aW9uID0gMywKCgoKCgoKCiAga1dpbmRvd1Jlc2l6ZVRyYW5zaXRpb25B
Y3Rpb24gPSA0Cn07CiMgNjUwOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dz
LmgiIDMKc3RydWN0IFRyYW5zaXRpb25XaW5kb3dPcHRpb25zIHsKCgoKCiAgVUludDMyIHZlcnNp
b247CiMgNjUyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBF
dmVudFRpbWUgZHVyYXRpb247CgoKCgoKICBXaW5kb3dSZWYgd2luZG93OwoKCgoKCgogIHZvaWQg
KiB1c2VyRGF0YTsKfTsKdHlwZWRlZiBzdHJ1Y3QgVHJhbnNpdGlvbldpbmRvd09wdGlvbnMgVHJh
bnNpdGlvbldpbmRvd09wdGlvbnM7CiMgNzkwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9N
YWNXaW5kb3dzLmgiIDMKdHlwZWRlZiBVSW50MzIgV2luZG93Q29uc3RyYWluT3B0aW9uczsKZW51
bSB7CgoKCgogIGtXaW5kb3dDb25zdHJhaW5NYXlSZXNpemUgPSAoMSA8PCAwKSwKCgoKCiAga1dp
bmRvd0NvbnN0cmFpbk1vdmVSZWdhcmRsZXNzT2ZGaXQgPSAoMSA8PCAxKSwKCgoKCgogIGtXaW5k
b3dDb25zdHJhaW5BbGxvd1BhcnRpYWwgPSAoMSA8PCAyKSwKCgoKCgogIGtXaW5kb3dDb25zdHJh
aW5DYWxjT25seSA9ICgxIDw8IDMpLAoKCgoKCiAga1dpbmRvd0NvbnN0cmFpblVzZVRyYW5zaXRp
b25XaW5kb3cgPSAoMSA8PCA0KSwKIyA3OTQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01h
Y1dpbmRvd3MuaCIgMwogIGtXaW5kb3dDb25zdHJhaW5Nb3ZlTWluaW11bSA9ICgxIDw8IDYpLAoj
IDc5NjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga1dpbmRv
d0NvbnN0cmFpblVzZVNwZWNpZmllZEJvdW5kcyA9ICgxIDw8IDgpLAoKCgoKCgoKICBrV2luZG93
Q29uc3RyYWluU3RhbmRhcmRPcHRpb25zID0ga1dpbmRvd0NvbnN0cmFpbk1vdmVSZWdhcmRsZXNz
T2ZGaXQKfTsKIyA4Mzk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIg
Mwp0eXBlZGVmIFVJbnQzMiBXaW5kb3dMYXRlbnRWaXNpYmlsaXR5OwplbnVtIHsKCgoKCiAga1dp
bmRvd0xhdGVudFZpc2libGVGbG9hdGVyID0gMSA8PCAwLAoKCgoKICBrV2luZG93TGF0ZW50Vmlz
aWJsZVN1c3BlbmQgPSAxIDw8IDEsCgoKCgogIGtXaW5kb3dMYXRlbnRWaXNpYmxlRnVsbFNjcmVl
biA9IDEgPDwgMiwKCgoKCiAga1dpbmRvd0xhdGVudFZpc2libGVBcHBIaWRkZW4gPSAxIDw8IDMs
CgoKCgogIGtXaW5kb3dMYXRlbnRWaXNpYmxlQ29sbGFwc2VkT3duZXIgPSAxIDw8IDQsCgoKCgoK
ICBrV2luZG93TGF0ZW50VmlzaWJsZUNvbGxhcHNlZEdyb3VwID0gMSA8PCA1Cn07CiMgODUwMiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKZW51bSB7CiMgODUxMiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKICBrSElXaW5kb3dCZWhh
dmlvclRyYW5zaWVudCA9IDEgPDwgMCwKCgoKCgoKCiAga0hJV2luZG93QmVoYXZpb3JTdGF0aW9u
YXJ5ID0gMSA8PCAxLAoKCgoKCgoKICBrSElXaW5kb3dDYW5Kb2luQWxsU3BhY2VzID0gMSA8PCA4
LAojIDg1MzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCiAga0hJ
V2luZG93TW92ZVRvQWN0aXZlU3BhY2UgPSAxIDw8IDksCgoKCgoKICBrSElXaW5kb3dFeHBvc2VI
aWRkZW4gPSBrSElXaW5kb3dCZWhhdmlvclRyYW5zaWVudCwKCgoKCgogIGtISVdpbmRvd1Zpc2li
bGVJbkFsbFNwYWNlcyA9IGtISVdpbmRvd0NhbkpvaW5BbGxTcGFjZXMKfTsKCgp0eXBlZGVmIE9w
dGlvbkJpdHMgSElXaW5kb3dBdmFpbGFiaWxpdHk7CiMgODk0OSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKZW51bSB7CgoKCgoKCgogIGtXaW5kb3dFZGdlRGVmYXVs
dCA9IDAsCgoKCgogIGtXaW5kb3dFZGdlVG9wID0gMSA8PCAwLAoKCgoKICBrV2luZG93RWRnZUxl
ZnQgPSAxIDw8IDEsCgoKCgogIGtXaW5kb3dFZGdlQm90dG9tID0gMSA8PCAyLAoKCgoKICBrV2lu
ZG93RWRnZVJpZ2h0ID0gMSA8PCAzCn07CgoKCgoKCmVudW0gewoKCgoKICBrV2luZG93RHJhd2Vy
T3BlbmluZyA9IDEsCgoKCgogIGtXaW5kb3dEcmF3ZXJPcGVuID0gMiwKCgoKCiAga1dpbmRvd0Ry
YXdlckNsb3NpbmcgPSAzLAoKCgoKICBrV2luZG93RHJhd2VyQ2xvc2VkID0gNAp9OwoKdHlwZWRl
ZiBVSW50MzIgV2luZG93RHJhd2VyU3RhdGU7CiMgOTIxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9NYWNXaW5kb3dzLmgiIDMKI2RlZmluZSBrV2luZG93T2Zmc2V0VW5jaGFuZ2VkICgoZmxv
YXQpKC0xLjApKQojIDk3NzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5o
IiAzCmVudW0gewojIDk3OTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5o
IiAzCiAga0hJVG9vbGJhclZpZXdEcmF3QmFja2dyb3VuZFRhZyA9ICdiYWNrJwp9OwojIDk5Nzgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCnR5cGVkZWYgVUludDMy
IEhJV2luZG93U2NhbGVNb2RlOwplbnVtIHsKCgoKCgogIGtISVdpbmRvd1NjYWxlTW9kZVVuc2Nh
bGVkID0gMCwKCgoKCgoKICBrSElXaW5kb3dTY2FsZU1vZGVNYWduaWZpZWQgPSAxLAoKCgoKCgog
IGtISVdpbmRvd1NjYWxlTW9kZUZyYW1ld29ya1NjYWxlZCA9IDIKfTsKIyAxMDA2NCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKc3RydWN0IEhJQ29udGVudEJvcmRl
ck1ldHJpY3MgewoKCgoKICBDR0Zsb2F0IHRvcDsKCgoKCiAgQ0dGbG9hdCBsZWZ0OwoKCgoKICBD
R0Zsb2F0IGJvdHRvbTsKCgoKCiAgQ0dGbG9hdCByaWdodDsKfTsKdHlwZWRlZiBzdHJ1Y3QgSElD
b250ZW50Qm9yZGVyTWV0cmljcyBISUNvbnRlbnRCb3JkZXJNZXRyaWNzOwojIDEwMjU5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwplbnVtIHsKICBrV2luZG93UHJv
cGVydHlQZXJzaXN0ZW50ID0gMHgwMDAwMDAwMQp9OwojIDEwNzgzICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwplbnVtIHsKICBrV2luZG93TXNnRHJhdyA9IDAsCiAg
a1dpbmRvd01zZ0hpdFRlc3QgPSAxLAogIGtXaW5kb3dNc2dDYWxjdWxhdGVTaGFwZSA9IDIsCiAg
a1dpbmRvd01zZ0luaXRpYWxpemUgPSAzLAogIGtXaW5kb3dNc2dDbGVhblVwID0gNCwKICBrV2lu
ZG93TXNnRHJhd0dyb3dPdXRsaW5lID0gNSwKICBrV2luZG93TXNnRHJhd0dyb3dCb3ggPSA2Cn07
CgoKZW51bSB7CiAga1dpbmRvd01zZ0dldEZlYXR1cmVzID0gNywKICBrV2luZG93TXNnR2V0UmVn
aW9uID0gOAp9OwoKCmVudW0gewogIGtXaW5kb3dNc2dEcmFnSGlsaXRlID0gOSwKICBrV2luZG93
TXNnTW9kaWZpZWQgPSAxMCwKICBrV2luZG93TXNnRHJhd0luQ3VycmVudFBvcnQgPSAxMSwKICBr
V2luZG93TXNnU2V0dXBQcm94eURyYWdJbWFnZSA9IDEyLAogIGtXaW5kb3dNc2dTdGF0ZUNoYW5n
ZWQgPSAxMywKICBrV2luZG93TXNnTWVhc3VyZVRpdGxlID0gMTQKfTsKCgplbnVtIHsKICBrV2lu
ZG93TXNnR2V0R3Jvd0ltYWdlUmVnaW9uID0gMTkKfTsKCgplbnVtIHsKICB3RHJhdyA9IGtXaW5k
b3dNc2dEcmF3LAogIHdIaXQgPSBrV2luZG93TXNnSGl0VGVzdCwKICB3Q2FsY1JnbnMgPSBrV2lu
ZG93TXNnQ2FsY3VsYXRlU2hhcGUsCiAgd05ldyA9IGtXaW5kb3dNc2dJbml0aWFsaXplLAogIHdE
aXNwb3NlID0ga1dpbmRvd01zZ0NsZWFuVXAsCiAgd0dyb3cgPSBrV2luZG93TXNnRHJhd0dyb3dP
dXRsaW5lLAogIHdEcmF3R0ljb24gPSBrV2luZG93TXNnRHJhd0dyb3dCb3gKfTsKCgoKCmVudW0g
ewogIGtXaW5kb3dTdGF0ZVRpdGxlQ2hhbmdlZCA9ICgxIDw8IDApCn07CiMgMTA4NDMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCnN0cnVjdCBTZXR1cFdpbmRvd1By
b3h5RHJhZ0ltYWdlUmVjIHsKICBHV29ybGRQdHIgaW1hZ2VHV29ybGQ7CiAgUmduSGFuZGxlIGlt
YWdlUmduOwogIFJnbkhhbmRsZSBvdXRsaW5lUmduOwp9Owp0eXBlZGVmIHN0cnVjdCBTZXR1cFdp
bmRvd1Byb3h5RHJhZ0ltYWdlUmVjIFNldHVwV2luZG93UHJveHlEcmFnSW1hZ2VSZWM7CgpzdHJ1
Y3QgTWVhc3VyZVdpbmRvd1RpdGxlUmVjIHsKCiAgU0ludDE2IGZ1bGxUaXRsZVdpZHRoOwogIFNJ
bnQxNiB0aXRsZVRleHRXaWR0aDsKCgogIEJvb2xlYW4gaXNVbmljb2RlVGl0bGU7CiAgQm9vbGVh
biB1bnVzZWQ7Cn07CnR5cGVkZWYgc3RydWN0IE1lYXN1cmVXaW5kb3dUaXRsZVJlYyBNZWFzdXJl
V2luZG93VGl0bGVSZWM7CnR5cGVkZWYgTWVhc3VyZVdpbmRvd1RpdGxlUmVjICogTWVhc3VyZVdp
bmRvd1RpdGxlUmVjUHRyOwoKCgoKCgoKc3RydWN0IEdldEdyb3dJbWFnZVJlZ2lvblJlYyB7CiAg
UmVjdCBncm93UmVjdDsKICBSZ25IYW5kbGUgZ3Jvd0ltYWdlUmVnaW9uOwp9Owp0eXBlZGVmIHN0
cnVjdCBHZXRHcm93SW1hZ2VSZWdpb25SZWMgR2V0R3Jvd0ltYWdlUmVnaW9uUmVjOwoKc3RydWN0
IEdldFdpbmRvd1JlZ2lvblJlYyB7CiAgUmduSGFuZGxlIHdpblJnbjsKICBXaW5kb3dSZWdpb25D
b2RlIHJlZ2lvbkNvZGU7Cn07CnR5cGVkZWYgc3RydWN0IEdldFdpbmRvd1JlZ2lvblJlYyBHZXRX
aW5kb3dSZWdpb25SZWM7CnR5cGVkZWYgR2V0V2luZG93UmVnaW9uUmVjICogR2V0V2luZG93UmVn
aW9uUHRyOwp0eXBlZGVmIEdldFdpbmRvd1JlZ2lvblJlYyAqIEdldFdpbmRvd1JlZ2lvblJlY1B0
cjsKCgoKZW51bSB7CiAgZGVza1BhdElEID0gMTYKfTsKCgoKCmVudW0gewogIHdDb250ZW50Q29s
b3IgPSAwLAogIHdGcmFtZUNvbG9yID0gMSwKICB3VGV4dENvbG9yID0gMiwKICB3SGlsaXRlQ29s
b3IgPSAzLAogIHdUaXRsZUJhckNvbG9yID0gNAp9OwoKCgoKc3RydWN0IFdpbkNUYWIgewogIGxv
bmcgd0NTZWVkOwogIHNob3J0IHdDUmVzZXJ2ZWQ7CiAgc2hvcnQgY3RTaXplOwogIENvbG9yU3Bl
YyBjdFRhYmxlWzVdOwp9Owp0eXBlZGVmIHN0cnVjdCBXaW5DVGFiIFdpbkNUYWI7CnR5cGVkZWYg
V2luQ1RhYiAqIFdDVGFiUHRyOwp0eXBlZGVmIFdDVGFiUHRyICogV0NUYWJIYW5kbGU7CiMgMTA5
OTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAzCmVudW0gewogIGtX
aW5kb3dEZWZpbml0aW9uVmVyc2lvbk9uZSA9IDEsCiAga1dpbmRvd0RlZmluaXRpb25WZXJzaW9u
VHdvID0gMgp9OwoKCmVudW0gewogIGtXaW5kb3dJc0NvbGxhcHNlZFN0YXRlID0gKDEgPDwgMEwp
Cn07CgpzdHJ1Y3QgQmFzaWNXaW5kb3dEZXNjcmlwdGlvbiB7CiAgVUludDMyIGRlc2NyaXB0aW9u
U2l6ZTsKCiAgUmVjdCB3aW5kb3dDb250ZW50UmVjdDsKICBSZWN0IHdpbmRvd1pvb21SZWN0Owog
IFVSZWZDb24gd2luZG93UmVmQ29uOwogIFVJbnQzMiB3aW5kb3dTdGF0ZUZsYWdzOwogIFdpbmRv
d1Bvc2l0aW9uTWV0aG9kIHdpbmRvd1Bvc2l0aW9uTWV0aG9kOwoKICBVSW50MzIgd2luZG93RGVm
aW5pdGlvblZlcnNpb247CiAgdW5pb24gewogICAgc3RydWN0IHsKICAgICAgU0ludDE2IHdpbmRv
d0RlZlByb2M7CiAgICAgIEJvb2xlYW4gd2luZG93SGFzQ2xvc2VCb3g7CiAgICB9IHZlcnNpb25P
bmU7CgogICAgc3RydWN0IHsKICAgICAgV2luZG93Q2xhc3Mgd2luZG93Q2xhc3M7CiAgICAgIFdp
bmRvd0F0dHJpYnV0ZXMgd2luZG93QXR0cmlidXRlczsKICAgIH0gdmVyc2lvblR3bzsKCiAgfSB3
aW5kb3dEZWZpbml0aW9uOwp9Owp0eXBlZGVmIHN0cnVjdCBCYXNpY1dpbmRvd0Rlc2NyaXB0aW9u
IEJhc2ljV2luZG93RGVzY3JpcHRpb247CgplbnVtIHsKICBrU3RvcmVkV2luZG93U3lzdGVtVGFn
ID0gJ2FwcGwnLAogIGtTdG9yZWRCYXNpY1dpbmRvd0Rlc2NyaXB0aW9uSUQgPSAnc2JhcycsCiAg
a1N0b3JlZFdpbmRvd1Bhc2NhbFRpdGxlSUQgPSAnczI1NScsCiAga1N0b3JlZFdpbmRvd1RpdGxl
Q0ZTdHJpbmdJRCA9ICdjZnN0Jwp9OwojIDExMDM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L01hY1dpbmRvd3MuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIERlc2tIb29rUHJvY1B0cikoQm9vbGVh
biBtb3VzZUNsaWNrLCBFdmVudFJlY29yZCAqdGhlRXZlbnQpOwoKCgoKCgoKdHlwZWRlZiBPU1N0
YXR1cyAoICogV2luZG93UGFpbnRQcm9jUHRyKShHREhhbmRsZSBkZXZpY2UsIEdyYWZQdHIgcWRD
b250ZXh0LCBXaW5kb3dSZWYgd2luZG93LCBSZ25IYW5kbGUgaW5DbGllbnRQYWludFJnbiwgUmdu
SGFuZGxlIG91dFN5c3RlbVBhaW50UmduLCB2b2lkICpyZWZDb24pOwp0eXBlZGVmIERlc2tIb29r
UHJvY1B0ciBEZXNrSG9va1VQUDsKdHlwZWRlZiBXaW5kb3dQYWludFByb2NQdHIgV2luZG93UGFp
bnRVUFA7CiMgMTEwNjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjV2luZG93cy5oIiAz
CmV4dGVybiBXaW5kb3dQYWludFVQUApOZXdXaW5kb3dQYWludFVQUChXaW5kb3dQYWludFByb2NQ
dHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxMTA4NyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9z
ZVdpbmRvd1BhaW50VVBQKFdpbmRvd1BhaW50VVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKIyAxMTEwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dz
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkludm9rZVdpbmRvd1BhaW50VVBQKAogIEdESGFuZGxlIGRl
dmljZSwKICBHcmFmUHRyIHFkQ29udGV4dCwKICBXaW5kb3dSZWYgd2luZG93LAogIFJnbkhhbmRs
ZSBpbkNsaWVudFBhaW50UmduLAogIFJnbkhhbmRsZSBvdXRTeXN0ZW1QYWludFJnbiwKICB2b2lk
ICogcmVmQ29uLAogIFdpbmRvd1BhaW50VVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKCgoKICAgIGlubGluZSBXaW5kb3dQYWludFVQUCBOZXdXaW5kb3dQYWludFVQUChX
aW5kb3dQYWludFByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAg
ICBpbmxpbmUgdm9pZCBEaXNwb3NlV2luZG93UGFpbnRVUFAoV2luZG93UGFpbnRVUFApIHsgfQog
ICAgaW5saW5lIE9TU3RhdHVzIEludm9rZVdpbmRvd1BhaW50VVBQKEdESGFuZGxlIGRldmljZSwg
R3JhZlB0ciBxZENvbnRleHQsIFdpbmRvd1JlZiB3aW5kb3csIFJnbkhhbmRsZSBpbkNsaWVudFBh
aW50UmduLCBSZ25IYW5kbGUgb3V0U3lzdGVtUGFpbnRSZ24sIHZvaWQgKiByZWZDb24sIFdpbmRv
d1BhaW50VVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoZGV2aWNlLCBxZENvbnRleHQs
IHdpbmRvdywgaW5DbGllbnRQYWludFJnbiwgb3V0U3lzdGVtUGFpbnRSZ24sIHJlZkNvbik7IH0K
IyAxMTQ5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNXaW5kb3dzLmgiIDMKZW51bSB7
CiAga1dpbmRvd1BhaW50UHJvY09wdGlvbnNOb25lID0gMAp9OwoKCnR5cGVkZWYgT3B0aW9uQml0
cyBXaW5kb3dQYWludFByb2NPcHRpb25zOwojIDEyMDUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL01hY1dpbmRvd3MuaCIgMwplbnVtIHsKICBrV2luZG93R3JvdXBBdHRyU2VsZWN0YWJsZSA9
IGtXaW5kb3dHcm91cEF0dHJTZWxlY3RBc0xheWVyLAogIGtXaW5kb3dHcm91cEF0dHJQb3NpdGlv
bkZpeGVkID0ga1dpbmRvd0dyb3VwQXR0ck1vdmVUb2dldGhlciwKICBrV2luZG93R3JvdXBBdHRy
Wk9yZGVyRml4ZWQgPSBrV2luZG93R3JvdXBBdHRyTGF5ZXJUb2dldGhlcgp9OwojIDEyMDY1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMwojcHJhZ21hIHBhY2socG9w
KQoKCn0KIyA0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMiAz
CiMgNTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZXh0ZXJu
ICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgoKCgoKCgplbnVtIHsKIyA4NCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwogIGtFdmVudFBhcmFtUG9zdFRh
cmdldCA9ICdwdHJnJywKCgoKCiAgdHlwZUV2ZW50VGFyZ2V0UmVmID0gJ2V0cmcnLAojIDEwNCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwogIGtFdmVudFBhcmFt
UG9zdE9wdGlvbnMgPSAncG9wdCcsCiAgdHlwZUV2ZW50VGFyZ2V0T3B0aW9ucyA9ICdldG9wJwp9
OwojIDE0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVt
IHsKICBrRXZlbnRQYXJhbVdpbmRvd1JlZiA9ICd3aW5kJywKICBrRXZlbnRQYXJhbUdyYWZQb3J0
ID0gJ2dyYWYnLAogIGtFdmVudFBhcmFtTWVudVJlZiA9ICdtZW51JywKICBrRXZlbnRQYXJhbUV2
ZW50UmVmID0gJ2V2bnQnLAogIGtFdmVudFBhcmFtQ29udHJvbFJlZiA9ICdjdHJsJywKICBrRXZl
bnRQYXJhbVJnbkhhbmRsZSA9ICdyZ25oJywKICBrRXZlbnRQYXJhbUVuYWJsZWQgPSAnZW5hYics
CiAga0V2ZW50UGFyYW1EaW1lbnNpb25zID0gJ2RpbXMnLAogIGtFdmVudFBhcmFtQm91bmRzID0g
J2JvdW4nLAogIGtFdmVudFBhcmFtQXZhaWxhYmxlQm91bmRzID0gJ2F2bGInLAogIGtFdmVudFBh
cmFtQUVFdmVudElEID0ga2V5QUVFdmVudElELAogIGtFdmVudFBhcmFtQUVFdmVudENsYXNzID0g
a2V5QUVFdmVudENsYXNzLAogIGtFdmVudFBhcmFtQ0dDb250ZXh0UmVmID0gJ2NudHgnLAogIGtF
dmVudFBhcmFtQ0dJbWFnZVJlZiA9ICdjZ2ltJywKICBrRXZlbnRQYXJhbURldmljZURlcHRoID0g
J2RldmQnLAogIGtFdmVudFBhcmFtRGV2aWNlQ29sb3IgPSAnZGV2YycsCiAga0V2ZW50UGFyYW1N
dXRhYmxlQXJyYXkgPSAnbWFycicsCiAga0V2ZW50UGFyYW1SZXN1bHQgPSAnYW5zcicsCiAga0V2
ZW50UGFyYW1NaW5pbXVtU2l6ZSA9ICdtbnN6JywKICBrRXZlbnRQYXJhbU1heGltdW1TaXplID0g
J214c3onLAogIGtFdmVudFBhcmFtQXR0cmlidXRlcyA9ICdhdHRyJywKICBrRXZlbnRQYXJhbVJl
YXNvbiA9ICd3aHk/JywKICBrRXZlbnRQYXJhbVRyYW5zYWN0aW9uSUQgPSAndHJucycsCiAga0V2
ZW50UGFyYW1EaXNwbGF5RGV2aWNlID0gJ2dkZXYnLAogIGtFdmVudFBhcmFtR0RldmljZSA9IGtF
dmVudFBhcmFtRGlzcGxheURldmljZSwKICBrRXZlbnRQYXJhbUluZGV4ID0gJ2luZHgnLAogIGtF
dmVudFBhcmFtVXNlckRhdGEgPSAndXNyZCcsCiAga0V2ZW50UGFyYW1TaGFwZSA9ICdzaGFwJywK
ICB0eXBlV2luZG93UmVmID0gJ3dpbmQnLAogIHR5cGVHcmFmUHRyID0gJ2dyYWYnLAogIHR5cGVH
V29ybGRQdHIgPSAnZ3dsZCcsCiAgdHlwZU1lbnVSZWYgPSAnbWVudScsCiAgdHlwZUNvbnRyb2xS
ZWYgPSAnY3RybCcsCiAgdHlwZUNvbGxlY3Rpb24gPSAnY2x0bicsCiAgdHlwZVFEUmduSGFuZGxl
ID0gJ3JnbmgnLAogIHR5cGVPU1N0YXR1cyA9ICdvc3N0JywKICB0eXBlQ0ZJbmRleCA9ICdjZml4
JywKICB0eXBlQ0dDb250ZXh0UmVmID0gJ2NudHgnLAogIHR5cGVDR0ltYWdlUmVmID0gJ2NnaW0n
LAogIHR5cGVISVBvaW50ID0gJ2hpcHQnLAogIHR5cGVISVNpemUgPSAnaGlzeicsCiAgdHlwZUhJ
UmVjdCA9ICdoaXJjJywKICB0eXBlSElTaGFwZVJlZiA9ICdzaGFwJywKICB0eXBlVm9pZFB0ciA9
ICd2b2lkJywKICB0eXBlR0RIYW5kbGUgPSAnZ2RldicsCiAgdHlwZUNHRGlzcGxheUlEID0gJ2Nn
aWQnLAogIHR5cGVDR0Zsb2F0ID0gJ2NnZmwnLAogIHR5cGVISVBvaW50NzJEUElHbG9iYWwgPSAn
aGlwZycsCiAgdHlwZUhJUG9pbnRTY3JlZW5QaXhlbCA9ICdoaXBzJywKICB0eXBlSElTaXplNzJE
UElHbG9iYWwgPSAnaGlzZycsCiAgdHlwZUhJU2l6ZVNjcmVlblBpeGVsID0gJ2hpc3MnLAogIHR5
cGVISVJlY3Q3MkRQSUdsb2JhbCA9ICdoaXJnJywKICB0eXBlSElSZWN0U2NyZWVuUGl4ZWwgPSAn
aGlycycsCiAgdHlwZUNHRmxvYXQ3MkRQSUdsb2JhbCA9ICdoaWZnJywKICB0eXBlQ0dGbG9hdFNj
cmVlblBpeGVsID0gJ2hpZnMnLAogIGtFdmVudFBhcmFtRGlzcGxheUNoYW5nZUZsYWdzID0gJ2Nn
ZHAnLAogIHR5cGVDR0Rpc3BsYXlDaGFuZ2VGbGFncyA9ICdjZ2RmJwp9OwojIDMxMCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtCnsKICAgIHR5cGVSZWZD
b24gPSB0eXBlVm9pZFB0cgp9OwojIDMyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJi
b25FdmVudHMuaCIgMwplbnVtCnsKICAgIHR5cGVCeXRlQ291bnQgPSB0eXBlVUludDY0LAogICAg
dHlwZUJ5dGVPZmZzZXQgPSB0eXBlVUludDY0LAogICAgdHlwZVNpZ25lZEJ5dGVDb3VudCA9IHR5
cGVTSW50NjQsCiAgICB0eXBlU2lnbmVkQnl0ZU9mZnNldCA9IHR5cGVTSW50NjQKfTsKIyAzNDMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2
ZW50UGFyYW1Nb3VzZUxvY2F0aW9uID0gJ21sb2MnLAogIGtFdmVudFBhcmFtV2luZG93TW91c2VM
b2NhdGlvbiA9ICd3bW91JywKICBrRXZlbnRQYXJhbU1vdXNlQnV0dG9uID0gJ21idG4nLAogIGtF
dmVudFBhcmFtQ2xpY2tDb3VudCA9ICdjY250JywKICBrRXZlbnRQYXJhbU1vdXNlV2hlZWxBeGlz
ID0gJ213YXgnLAogIGtFdmVudFBhcmFtTW91c2VXaGVlbERlbHRhID0gJ213ZGwnLAogIGtFdmVu
dFBhcmFtTW91c2VXaGVlbFNtb290aFZlcnRpY2FsRGVsdGEgPSAnc2F4eScsCiAga0V2ZW50UGFy
YW1Nb3VzZVdoZWVsU21vb3RoSG9yaXpvbnRhbERlbHRhID0gJ3NheHgnLAogIGtFdmVudFBhcmFt
TW91c2VEZWx0YSA9ICdtZHRhJywKICBrRXZlbnRQYXJhbU1vdXNlQ2hvcmQgPSAnY2hvcicsCiAg
a0V2ZW50UGFyYW1UYWJsZXRFdmVudFR5cGUgPSAndGJsdCcsCiAga0V2ZW50UGFyYW1Nb3VzZVRy
YWNraW5nUmVmID0gJ210cmYnLAogIHR5cGVNb3VzZUJ1dHRvbiA9ICdtYnRuJywKICB0eXBlTW91
c2VXaGVlbEF4aXMgPSAnbXdheCcsCiAgdHlwZU1vdXNlVHJhY2tpbmdSZWYgPSAnbXRyZicKfTsK
CgoKZW51bSB7CiAga0V2ZW50UGFyYW1NYWduaWZpY2F0aW9uQW1vdW50ID0gJ21hZ24nLAogIGtF
dmVudFBhcmFtUm90YXRpb25BbW91bnQgPSAncm90YScsCiAga0V2ZW50UGFyYW1Td2lwZURpcmVj
dGlvbiA9ICdzd2lwJwp9OwoKCgplbnVtIHsKICBrRXZlbnRQYXJhbUtleUNvZGUgPSAna2NvZCcs
CiAga0V2ZW50UGFyYW1LZXlNYWNDaGFyQ29kZXMgPSAna2NocicsCiAga0V2ZW50UGFyYW1LZXlN
b2RpZmllcnMgPSAna21vZCcsCiAga0V2ZW50UGFyYW1LZXlVbmljb2RlcyA9ICdrdW5pJywKICBr
RXZlbnRQYXJhbUtleWJvYXJkVHlwZSA9ICdrYmR0JywKICB0eXBlRXZlbnRIb3RLZXlJRCA9ICdo
a2lkJwp9OwoKCgplbnVtIHsKICBrRXZlbnRQYXJhbVRTTVNlbmRSZWZDb24gPSAndHNyYycsCiAg
a0V2ZW50UGFyYW1UU01TZW5kQ29tcG9uZW50SW5zdGFuY2UgPSAndHNjaScKfTsKCgoKZW51bSB7
CiAga0V2ZW50UGFyYW1UZXh0SW5wdXRTZW5kUmVmQ29uID0ga0V2ZW50UGFyYW1UU01TZW5kUmVm
Q29uLAogIGtFdmVudFBhcmFtVGV4dElucHV0U2VuZENvbXBvbmVudEluc3RhbmNlID0ga0V2ZW50
UGFyYW1UU01TZW5kQ29tcG9uZW50SW5zdGFuY2UsCiAga0V2ZW50UGFyYW1UZXh0SW5wdXRTZW5k
U0xSZWMgPSAndHNzbCcsCiAga0V2ZW50UGFyYW1UZXh0SW5wdXRSZXBseVNMUmVjID0gJ3Ryc2wn
LAogIGtFdmVudFBhcmFtVGV4dElucHV0U2VuZFRleHQgPSAndHN0eCcsCiAga0V2ZW50UGFyYW1U
ZXh0SW5wdXRSZXBseVRleHQgPSAndHJ0eCcsCiAga0V2ZW50UGFyYW1UZXh0SW5wdXRTZW5kQXR0
cmlidXRlZFN0cmluZyA9ICd0c2FzJywKICBrRXZlbnRQYXJhbVRleHRJbnB1dFJlcGx5QXR0cmli
dXRlZFN0cmluZyA9ICd0cmFzJywKICBrRXZlbnRQYXJhbVRleHRJbnB1dFNlbmRVcGRhdGVSbmcg
PSAndHN1cCcsCiAga0V2ZW50UGFyYW1UZXh0SW5wdXRTZW5kSGlsaXRlUm5nID0gJ3RzaGknLAog
IGtFdmVudFBhcmFtVGV4dElucHV0U2VuZENsYXVzZVJuZyA9ICd0c2NsJywKICBrRXZlbnRQYXJh
bVRleHRJbnB1dFNlbmRQaW5SbmcgPSAndHNwbicsCiAga0V2ZW50UGFyYW1UZXh0SW5wdXRTZW5k
Rml4TGVuID0gJ3RzZngnLAogIGtFdmVudFBhcmFtVGV4dElucHV0U2VuZExlYWRpbmdFZGdlID0g
J3RzbGUnLAogIGtFdmVudFBhcmFtVGV4dElucHV0UmVwbHlMZWFkaW5nRWRnZSA9ICd0cmxlJywK
ICBrRXZlbnRQYXJhbVRleHRJbnB1dFNlbmRUZXh0T2Zmc2V0ID0gJ3RzdG8nLAogIGtFdmVudFBh
cmFtVGV4dElucHV0UmVwbHlUZXh0T2Zmc2V0ID0gJ3RydG8nLAogIGtFdmVudFBhcmFtVGV4dElu
cHV0UmVwbHlSZWdpb25DbGFzcyA9ICd0cnJnJywKICBrRXZlbnRQYXJhbVRleHRJbnB1dFNlbmRD
dXJyZW50UG9pbnQgPSAndHNjcCcsCiAga0V2ZW50UGFyYW1UZXh0SW5wdXRTZW5kRHJhZ2dpbmdN
b2RlID0gJ3RzZG0nLAogIGtFdmVudFBhcmFtVGV4dElucHV0UmVwbHlQb2ludCA9ICd0cnB0JywK
ICBrRXZlbnRQYXJhbVRleHRJbnB1dFJlcGx5Rm9udCA9ICd0cmZ0JywKICBrRXZlbnRQYXJhbVRl
eHRJbnB1dFJlcGx5Rk1Gb250ID0gJ3RyZm0nLAogIGtFdmVudFBhcmFtVGV4dElucHV0UmVwbHlQ
b2ludFNpemUgPSAndHJweicsCiAga0V2ZW50UGFyYW1UZXh0SW5wdXRSZXBseUxpbmVIZWlnaHQg
PSAndHJsaCcsCiAga0V2ZW50UGFyYW1UZXh0SW5wdXRSZXBseUxpbmVBc2NlbnQgPSAndHJsYScs
CiAga0V2ZW50UGFyYW1UZXh0SW5wdXRSZXBseUNURm9udFJlZiA9ICd0cmNmJywKICBrRXZlbnRQ
YXJhbVRleHRJbnB1dFJlcGx5QVRTRm9udCA9ICd0cmFmJywKICBrRXZlbnRQYXJhbVRleHRJbnB1
dFJlcGx5VGV4dEFuZ2xlID0gJ3RydGEnLAogIGtFdmVudFBhcmFtVGV4dElucHV0U2VuZFNob3dI
aWRlID0gJ3Rzc2gnLAogIGtFdmVudFBhcmFtVGV4dElucHV0UmVwbHlTaG93SGlkZSA9ICd0cnNo
JywKICBrRXZlbnRQYXJhbVRleHRJbnB1dFNlbmRLZXlib2FyZEV2ZW50ID0gJ3Rza2UnLAogIGtF
dmVudFBhcmFtVGV4dElucHV0U2VuZFRleHRTZXJ2aWNlRW5jb2RpbmcgPSAndHNzZScsCiAga0V2
ZW50UGFyYW1UZXh0SW5wdXRTZW5kVGV4dFNlcnZpY2VNYWNFbmNvZGluZyA9ICd0c3NtJywKICBr
RXZlbnRQYXJhbVRleHRJbnB1dFJlcGx5TWFjRW5jb2RpbmcgPSAndHJtZScsCiAga0V2ZW50UGFy
YW1UZXh0SW5wdXRHbHlwaEluZm9BcnJheSA9ICdnbHBoJywKICBrRXZlbnRQYXJhbVRleHRJbnB1
dFNlbmRHbHlwaEluZm9BcnJheSA9IGtFdmVudFBhcmFtVGV4dElucHV0R2x5cGhJbmZvQXJyYXks
CiAga0V2ZW50UGFyYW1UZXh0SW5wdXRSZXBseUdseXBoSW5mb0FycmF5ID0gJ3JncGgnLAogIGtF
dmVudFBhcmFtVGV4dElucHV0U2VuZFJlcGxhY2VSYW5nZSA9ICd0c3JwJywKICBrRXZlbnRQYXJh
bVRleHRJbnB1dFNlbmRNb3VzZUV2ZW50ID0gJ3RzbWUnCn07CgoKCmVudW0gewogIGtFdmVudFBh
cmFtVFNNRG9jQWNjZXNzU2VuZFJlZkNvbiA9IGtFdmVudFBhcmFtVFNNU2VuZFJlZkNvbiwKICBr
RXZlbnRQYXJhbVRTTURvY0FjY2Vzc1NlbmRDb21wb25lbnRJbnN0YW5jZSA9IGtFdmVudFBhcmFt
VFNNU2VuZENvbXBvbmVudEluc3RhbmNlLAogIGtFdmVudFBhcmFtVFNNRG9jQWNjZXNzQ2hhcmFj
dGVyQ291bnQgPSAndGRjdCcsCiAga0V2ZW50UGFyYW1UU01Eb2NBY2Nlc3NSZXBseUNoYXJhY3Rl
clJhbmdlID0gJ3RkcnInLAogIGtFdmVudFBhcmFtVFNNRG9jQWNjZXNzUmVwbHlDaGFyYWN0ZXJz
UHRyID0gJ3RkcnAnLAogIGtFdmVudFBhcmFtVFNNRG9jQWNjZXNzU2VuZENoYXJhY3RlckluZGV4
ID0gJ3Rkc2knLAogIGtFdmVudFBhcmFtVFNNRG9jQWNjZXNzU2VuZENoYXJhY3RlclJhbmdlID0g
J3Rkc3InLAogIGtFdmVudFBhcmFtVFNNRG9jQWNjZXNzU2VuZENoYXJhY3RlcnNQdHIgPSAndGRz
cCcsCiAga0V2ZW50UGFyYW1UU01Eb2NBY2Nlc3NSZXF1ZXN0ZWRDaGFyYWN0ZXJBdHRyaWJ1dGVz
ID0gJ3RkY2EnLAogIGtFdmVudFBhcmFtVFNNRG9jQWNjZXNzUmVwbHlDVEZvbnRSZWYgPSAndGRj
ZicsCiAga0V2ZW50UGFyYW1UU01Eb2NBY2Nlc3NSZXBseUFUU0ZvbnQgPSAndGRhZicsCiAga0V2
ZW50UGFyYW1UU01Eb2NBY2Nlc3NSZXBseUZvbnRTaXplID0gJ3RkcnMnLAogIGtFdmVudFBhcmFt
VFNNRG9jQWNjZXNzRWZmZWN0aXZlUmFuZ2UgPSAndGRlcicsCiAga0V2ZW50UGFyYW1UU01Eb2NB
Y2Nlc3NSZXBseUNUR2x5cGhJbmZvUmVmID0gJ3RkcmknLAogIGtFdmVudFBhcmFtVFNNRG9jQWNj
ZXNzUmVwbHlBVFNVR2x5cGhTZWxlY3RvciA9ICd0ZHJnJywKICBrRXZlbnRQYXJhbVRTTURvY0Fj
Y2Vzc0xvY2tDb3VudCA9ICd0ZGxjJywKICBrRXZlbnRQYXJhbVRTTURvY0FjY2Vzc0xpbmVCb3Vu
ZHMgPSAndGRsYicsCiAga0V2ZW50UGFyYW1UU01Eb2NBY2Nlc3NCYXNlbGluZURlbHRhID0gJ3Rk
YmQnLAogIHR5cGVBVFNGb250UmVmID0gJ2F0c2YnLAogIHR5cGVHbHlwaFNlbGVjdG9yID0gJ2ds
ZnMnCn07CgoKCmVudW0gewogIGtFdmVudFBhcmFtSElDb21tYW5kID0gJ2hjbWQnLAogIHR5cGVI
SUNvbW1hbmQgPSAnaGNtZCcKfTsKCgoKZW51bSB7CiAga0V2ZW50UGFyYW1XaW5kb3dGZWF0dXJl
cyA9ICd3ZnRyJywKICBrRXZlbnRQYXJhbVdpbmRvd0RlZlBhcnQgPSAnd2RwYycsCiAga0V2ZW50
UGFyYW1XaW5kb3dQYXJ0Q29kZSA9ICd3cGFyJywKICBrRXZlbnRQYXJhbUN1cnJlbnRCb3VuZHMg
PSAnY3JjdCcsCiAga0V2ZW50UGFyYW1PcmlnaW5hbEJvdW5kcyA9ICdvcmN0JywKICBrRXZlbnRQ
YXJhbVByZXZpb3VzQm91bmRzID0gJ3ByY3QnLAogIGtFdmVudFBhcmFtQ2xpY2tBY3RpdmF0aW9u
ID0gJ2NsYWMnLAogIGtFdmVudFBhcmFtV2luZG93UmVnaW9uQ29kZSA9ICd3c2hwJywKICBrRXZl
bnRQYXJhbVdpbmRvd0NvbnRlbnRCb3VuZHMgPSAnd2NibicsCiAga0V2ZW50UGFyYW1XaW5kb3dE
cmFnSGlsaXRlRmxhZyA9ICd3ZGhmJywKICBrRXZlbnRQYXJhbVdpbmRvd01vZGlmaWVkRmxhZyA9
ICd3bWZmJywKICBrRXZlbnRQYXJhbVdpbmRvd1Byb3h5R1dvcmxkUHRyID0gJ3dwZ3cnLAogIGtF
dmVudFBhcmFtV2luZG93UHJveHlJbWFnZVJnbiA9ICd3cGlyJywKICBrRXZlbnRQYXJhbVdpbmRv
d1Byb3h5T3V0bGluZVJnbiA9ICd3cG9yJywKICBrRXZlbnRQYXJhbVdpbmRvd1N0YXRlQ2hhbmdl
ZEZsYWdzID0gJ3dzY2YnLAogIGtFdmVudFBhcmFtV2luZG93VGl0bGVGdWxsV2lkdGggPSAnd3Rm
dycsCiAga0V2ZW50UGFyYW1XaW5kb3dUaXRsZVRleHRXaWR0aCA9ICd3dHR3JywKICBrRXZlbnRQ
YXJhbVdpbmRvd0dyb3dSZWN0ID0gJ2dyY3QnLAogIGtFdmVudFBhcmFtUHJldmlvdXNEb2NrUmVj
dCA9ICdwZHJjJywKICBrRXZlbnRQYXJhbVByZXZpb3VzRG9ja0RldmljZSA9ICdwZGdkJywKICBr
RXZlbnRQYXJhbUN1cnJlbnREb2NrUmVjdCA9ICdjZHJjJywKICBrRXZlbnRQYXJhbUN1cnJlbnRE
b2NrRGV2aWNlID0gJ2NkZ2QnLAogIGtFdmVudFBhcmFtV2luZG93VHJhbnNpdGlvbkFjdGlvbiA9
ICd3dGFjJywKICBrRXZlbnRQYXJhbVdpbmRvd1RyYW5zaXRpb25FZmZlY3QgPSAnd3RlZicsCiAg
dHlwZVdpbmRvd1JlZ2lvbkNvZGUgPSAnd3NocCcsCiAgdHlwZVdpbmRvd0RlZlBhcnRDb2RlID0g
J3dkcHQnLAogIHR5cGVXaW5kb3dQYXJ0Q29kZSA9ICd3cGFyJywKICB0eXBlQ2xpY2tBY3RpdmF0
aW9uUmVzdWx0ID0gJ2NsYWMnLAogIHR5cGVXaW5kb3dUcmFuc2l0aW9uQWN0aW9uID0gJ3d0YWMn
LAogIHR5cGVXaW5kb3dUcmFuc2l0aW9uRWZmZWN0ID0gJ3d0ZWYnCn07CgoKCmVudW0gewogIGtF
dmVudFBhcmFtQ29udHJvbFBhcnQgPSAnY3BydCcsCiAga0V2ZW50UGFyYW1Jbml0Q29sbGVjdGlv
biA9ICdpY29sJywKICBrRXZlbnRQYXJhbUNvbnRyb2xNZXNzYWdlID0gJ2Ntc2cnLAogIGtFdmVu
dFBhcmFtQ29udHJvbFBhcmFtID0gJ2Nwcm0nLAogIGtFdmVudFBhcmFtQ29udHJvbFJlc3VsdCA9
ICdjcnNsJywKICBrRXZlbnRQYXJhbUNvbnRyb2xSZWdpb24gPSAnY3JnbicsCiAga0V2ZW50UGFy
YW1Db250cm9sQWN0aW9uID0gJ2NhdXAnLAogIGtFdmVudFBhcmFtQ29udHJvbEluZGljYXRvckRy
YWdDb25zdHJhaW50ID0gJ2NpZGMnLAogIGtFdmVudFBhcmFtQ29udHJvbEluZGljYXRvclJlZ2lv
biA9ICdjaXJuJywKICBrRXZlbnRQYXJhbUNvbnRyb2xJc0dob3N0aW5nID0gJ2Nnc3QnLAogIGtF
dmVudFBhcmFtQ29udHJvbEluZGljYXRvck9mZnNldCA9ICdjaW9mJywKICBrRXZlbnRQYXJhbUNv
bnRyb2xDbGlja0FjdGl2YXRpb25SZXN1bHQgPSAnY2NhcicsCiAga0V2ZW50UGFyYW1Db250cm9s
U3ViQ29udHJvbCA9ICdjc3ViJywKICBrRXZlbnRQYXJhbUNvbnRyb2xPcHRpbWFsQm91bmRzID0g
J2NvYm4nLAogIGtFdmVudFBhcmFtQ29udHJvbE9wdGltYWxCYXNlbGluZU9mZnNldCA9ICdjb2Jv
JywKICBrRXZlbnRQYXJhbUNvbnRyb2xEYXRhVGFnID0gJ2NkdGcnLAogIGtFdmVudFBhcmFtQ29u
dHJvbERhdGFCdWZmZXIgPSAnY2RiZicsCiAga0V2ZW50UGFyYW1Db250cm9sRGF0YUJ1ZmZlclNp
emUgPSAnY2RicycsCiAga0V2ZW50UGFyYW1Db250cm9sRHJhd0RlcHRoID0gJ2NkZHAnLAogIGtF
dmVudFBhcmFtQ29udHJvbERyYXdJbkNvbG9yID0gJ2NkaWMnLAogIGtFdmVudFBhcmFtQ29udHJv
bERyYXdFbmdyYXZlZCA9ICdjZGVuJywKICBrRXZlbnRQYXJhbUNvbnRyb2xGZWF0dXJlcyA9ICdj
ZnRyJywKICBrRXZlbnRQYXJhbUNvbnRyb2xQYXJ0Qm91bmRzID0gJ2NwYmQnLAogIGtFdmVudFBh
cmFtQ29udHJvbE9yaWdpbmFsT3duaW5nV2luZG93ID0gJ2Nvb3cnLAogIGtFdmVudFBhcmFtQ29u
dHJvbEN1cnJlbnRPd25pbmdXaW5kb3cgPSAnY2NvdycsCiAga0V2ZW50UGFyYW1Db250cm9sRm9j
dXNFdmVyeXRoaW5nID0gJ2NmZXYnLAogIGtFdmVudFBhcmFtTmV4dENvbnRyb2wgPSAnY254Yycs
CiAga0V2ZW50UGFyYW1TdGFydENvbnRyb2wgPSAnY3N0YycsCiAga0V2ZW50UGFyYW1Db250cm9s
U3VidmlldyA9ICdjc3Z3JywKICBrRXZlbnRQYXJhbUNvbnRyb2xQcmV2aW91c1BhcnQgPSAnY29w
YycsCiAga0V2ZW50UGFyYW1Db250cm9sQ3VycmVudFBhcnQgPSAnY25wYycsCiAga0V2ZW50UGFy
YW1Db250cm9sSW52YWxSZ24gPSAnY2l2cicsCiAga0V2ZW50UGFyYW1Db250cm9sVmFsdWUgPSAn
Y3ZhbCcsCiAga0V2ZW50UGFyYW1Db250cm9sSGl0ID0gJ2NoaXQnLAogIGtFdmVudFBhcmFtQ29u
dHJvbFBhcnRBdXRvUmVwZWF0cyA9ICdjYXVyJywKICBrRXZlbnRQYXJhbUNvbnRyb2xGcmFtZU1l
dHJpY3MgPSAnY2ZtdCcsCiAga0V2ZW50UGFyYW1Db250cm9sV291bGRBY2NlcHREcm9wID0gJ2Ns
ZGcnLAogIGtFdmVudFBhcmFtQ29udHJvbFByZWZlcnNTaGFwZSA9ICdjcHNoJywKICB0eXBlQ29u
dHJvbEFjdGlvblVQUCA9ICdjYXVwJywKICB0eXBlSW5kaWNhdG9yRHJhZ0NvbnN0cmFpbnQgPSAn
Y2lkYycsCiAgdHlwZUNvbnRyb2xQYXJ0Q29kZSA9ICdjcHJ0JywKICB0eXBlQ29udHJvbEZyYW1l
TWV0cmljcyA9ICdjaW5zJwp9OwoKCgplbnVtIHsKICBrRXZlbnRQYXJhbUN1cnJlbnRNZW51VHJh
Y2tpbmdNb2RlID0gJ2NtdG0nLAogIGtFdmVudFBhcmFtTmV3TWVudVRyYWNraW5nTW9kZSA9ICdu
bXRtJywKICBrRXZlbnRQYXJhbU1lbnVGaXJzdE9wZW4gPSAnMXN0bycsCiAga0V2ZW50UGFyYW1N
ZW51SXRlbUluZGV4ID0gJ2l0ZW0nLAogIGtFdmVudFBhcmFtTWVudUNvbW1hbmQgPSAnbWNtZCcs
CiAga0V2ZW50UGFyYW1FbmFibGVNZW51Rm9yS2V5RXZlbnQgPSAnZm9yaycsCiAga0V2ZW50UGFy
YW1NZW51RXZlbnRPcHRpb25zID0gJ21lb3AnLAogIGtFdmVudFBhcmFtTWVudUNvbnRleHQgPSAn
bWN0eCcsCiAga0V2ZW50UGFyYW1NZW51RGlzbWlzc2VkID0gJ21kaXMnLAogIGtFdmVudFBhcmFt
TWVudUl0ZW1Cb3VuZHMgPSAnbWl0YicsCiAga0V2ZW50UGFyYW1NZW51TWFya0JvdW5kcyA9ICdt
bWtiJywKICBrRXZlbnRQYXJhbU1lbnVJY29uQm91bmRzID0gJ21pY2InLAogIGtFdmVudFBhcmFt
TWVudVRleHRCb3VuZHMgPSAnbXR4YicsCiAga0V2ZW50UGFyYW1NZW51VGV4dEJhc2VsaW5lID0g
J210YmwnLAogIGtFdmVudFBhcmFtTWVudUNvbW1hbmRLZXlCb3VuZHMgPSAnbWNtYicsCiAga0V2
ZW50UGFyYW1NZW51VmlydHVhbFRvcCA9ICdtdnJ0JywKICBrRXZlbnRQYXJhbU1lbnVWaXJ0dWFs
Qm90dG9tID0gJ212cmInLAogIGtFdmVudFBhcmFtTWVudURyYXdTdGF0ZSA9ICdtZHJzJywKICBr
RXZlbnRQYXJhbU1lbnVJdGVtVHlwZSA9ICdtaXRwJywKICBrRXZlbnRQYXJhbU1lbnVJdGVtV2lk
dGggPSAnbWl0dycsCiAga0V2ZW50UGFyYW1NZW51SXRlbUhlaWdodCA9ICdtaXRoJywKICBrRXZl
bnRQYXJhbU1lbnVGcmFtZVZpZXcgPSAnbWZydicsCiAga0V2ZW50UGFyYW1NZW51VHlwZSA9ICdt
dHlwJywKICBrRXZlbnRQYXJhbU1lbnVJc1BvcHVwID0gJ21wb3AnLAogIGtFdmVudFBhcmFtTWVu
dURpcmVjdGlvbiA9ICdtZGlyJywKICBrRXZlbnRQYXJhbVBhcmVudE1lbnUgPSAnbXBybScsCiAg
a0V2ZW50UGFyYW1QYXJlbnRNZW51SXRlbSA9ICdtcHJpJywKICBrRXZlbnRQYXJhbU1lbnVQb3B1
cEl0ZW0gPSAnbXBpdCcsCiAga0V2ZW50UGFyYW1NZW51Q29udGV4dEhlaWdodCA9ICdtY2h0JywK
ICB0eXBlTWVudUl0ZW1JbmRleCA9ICdtaWR4JywKICB0eXBlTWVudUNvbW1hbmQgPSAnbWNtZCcs
CiAgdHlwZU1lbnVUcmFja2luZ01vZGUgPSAnbXRtZCcsCiAgdHlwZU1lbnVFdmVudE9wdGlvbnMg
PSAnbWVvcCcsCiAgdHlwZVRoZW1lTWVudVN0YXRlID0gJ3RtbnMnLAogIHR5cGVUaGVtZU1lbnVJ
dGVtVHlwZSA9ICd0bWl0JywKICB0eXBlTWVudURpcmVjdGlvbiA9ICdtZGlyJywKICB0eXBlVGhl
bWVNZW51VHlwZSA9ICd0bXR5Jwp9OwoKCgplbnVtIHsKICBrRXZlbnRQYXJhbVByb2Nlc3NJRCA9
ICdwc24gJywKICBrRXZlbnRQYXJhbUxhdW5jaFJlZkNvbiA9ICdscmVmJywKICBrRXZlbnRQYXJh
bUxhdW5jaEVyciA9ICdlcnIgJywKICBrRXZlbnRQYXJhbVN5c3RlbVVJTW9kZSA9ICd1aW1kJywK
ICBrRXZlbnRQYXJhbVN5c3RlbVVJT3B0aW9ucyA9ICd1aW9wJywKICBrRXZlbnRQYXJhbUlzSW5J
bnN0YW50TW91c2VyID0gJ2ltb3UnLAogIGtFdmVudFBhcmFtUHJldmlvdXNXaW5kb3cgPSAncHJ2
dycsCiAga0V2ZW50UGFyYW1DdXJyZW50V2luZG93ID0gJ2N1cncnCn07CgoKCmVudW0gewogIGtF
dmVudFBhcmFtVGFibGV0UG9pbnRSZWMgPSAndGJyYycsCiAga0V2ZW50UGFyYW1UYWJsZXRQcm94
aW1pdHlSZWMgPSAndGJweCcsCiAgdHlwZVRhYmxldFBvaW50UmVjID0gJ3RicmMnLAogIHR5cGVU
YWJsZXRQcm94aW1pdHlSZWMgPSAndGJweCcKfTsKCgoKZW51bSB7CiAga0V2ZW50UGFyYW1OZXdT
Y3JvbGxCYXJWYXJpYW50ID0gJ25zYnYnCn07CgoKCmVudW0gewogIGtFdmVudFBhcmFtUGFzdGVi
b2FyZFJlZiA9ICdwYnJkJywKICBrRXZlbnRQYXJhbVNjcmFwUmVmID0gJ3NjcnAnLAogIGtFdmVu
dFBhcmFtU2VydmljZUNvcHlUeXBlcyA9ICdzdnNkJywKICBrRXZlbnRQYXJhbVNlcnZpY2VQYXN0
ZVR5cGVzID0gJ3N2cHQnLAogIGtFdmVudFBhcmFtU2VydmljZU1lc3NhZ2VOYW1lID0gJ3N2bWcn
LAogIGtFdmVudFBhcmFtU2VydmljZVVzZXJEYXRhID0gJ3N2dWQnLAogIHR5cGVQYXN0ZWJvYXJk
UmVmID0gJ3BicmQnLAogIHR5cGVTY3JhcFJlZiA9ICdzY3JwJwp9OwoKCgplbnVtIHsKICBrRXZl
bnRQYXJhbUFjY2Vzc2libGVPYmplY3QgPSAnYW9iaicsCiAga0V2ZW50UGFyYW1BY2Nlc3NpYmxl
Q2hpbGQgPSAnYWNobCcsCiAga0V2ZW50UGFyYW1BY2Nlc3NpYmxlQXR0cmlidXRlTmFtZSA9ICdh
dG5tJywKICBrRXZlbnRQYXJhbUFjY2Vzc2libGVBdHRyaWJ1dGVOYW1lcyA9ICdhdG5zJywKICBr
RXZlbnRQYXJhbUFjY2Vzc2libGVBdHRyaWJ1dGVWYWx1ZSA9ICdhdHZsJywKICBrRXZlbnRQYXJh
bUFjY2Vzc2libGVBdHRyaWJ1dGVTZXR0YWJsZSA9ICdhdHN0JywKICBrRXZlbnRQYXJhbUFjY2Vz
c2libGVBdHRyaWJ1dGVQYXJhbWV0ZXIgPSAnYXRwYScsCiAga0V2ZW50UGFyYW1BY2Nlc3NpYmxl
QWN0aW9uTmFtZSA9ICdhY25tJywKICBrRXZlbnRQYXJhbUFjY2Vzc2libGVBY3Rpb25OYW1lcyA9
ICdhY25zJywKICBrRXZlbnRQYXJhbUFjY2Vzc2libGVBY3Rpb25EZXNjcmlwdGlvbiA9ICdhY2Rz
JywKICBrRXZlbnRQYXJhbUFjY2Vzc2liaWxpdHlFdmVudFF1ZXVlZCA9ICdhZXF1Jwp9OwoKCgpl
bnVtIHsKICB0eXBlQ0ZSYW5nZSA9ICdjZnJuJwp9OwoKCgplbnVtIHsKICBrRXZlbnRQYXJhbUFw
cGxlRXZlbnQgPSAnYWV2dCcsCiAga0V2ZW50UGFyYW1BcHBsZUV2ZW50UmVwbHkgPSAnYWVycCcK
fTsKIyA2ODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKdHlw
ZWRlZiBVSW50MTYgTW91c2VUcmFja2luZ1Jlc3VsdDsKZW51bSB7CgoKCgoKICBrTW91c2VUcmFj
a2luZ01vdXNlRG93biA9IDEsCgoKCgoKCiAga01vdXNlVHJhY2tpbmdNb3VzZVVwID0gMiwKCgoK
CgoKICBrTW91c2VUcmFja2luZ01vdXNlRXhpdGVkID0gMywKCgoKCgoKICBrTW91c2VUcmFja2lu
Z01vdXNlRW50ZXJlZCA9IDQsCiMgNzE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJv
bkV2ZW50cy5oIiAzCiAga01vdXNlVHJhY2tpbmdNb3VzZURyYWdnZWQgPSA1LAoKCgoKCgogIGtN
b3VzZVRyYWNraW5nS2V5TW9kaWZpZXJzQ2hhbmdlZCA9IDYsCgoKCgoKCgogIGtNb3VzZVRyYWNr
aW5nVXNlckNhbmNlbGxlZCA9IDcsCgoKCgoKICBrTW91c2VUcmFja2luZ1RpbWVkT3V0ID0gOCwK
IyA3NDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKICBrTW91
c2VUcmFja2luZ01vdXNlTW92ZWQgPSA5LAoKCgoKCgoKICBrTW91c2VUcmFja2luZ0NsaWVudEV2
ZW50ID0gMTAsCiMgNzY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5o
IiAzCiAga01vdXNlVHJhY2tpbmdTY3JvbGxXaGVlbCA9IDExCn07CiMgNzc3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewoKCgoKICBrVHJhY2tNb3Vz
ZUxvY2F0aW9uT3B0aW9uRG9udENvbnN1bWVNb3VzZVVwID0gKDEgPDwgMCksCgoKCgoKCiAga1Ry
YWNrTW91c2VMb2NhdGlvbk9wdGlvbkluY2x1ZGVTY3JvbGxXaGVlbCA9ICgxIDw8IDMpCn07CiMg
ODEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmV4dGVybiBC
b29sZWFuCkNoZWNrRXZlbnRRdWV1ZUZvclVzZXJDYW5jZWwodm9pZCkgOwojIDgzNyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwpleHRlcm4gQm9vbGVhbgpJc1Vz
ZXJDYW5jZWxFdmVudFJlZihFdmVudFJlZiBldmVudCkgOwojIDEwNTggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiMgMTA2OCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwogIGtNb3VzZVBhcmFtc1N0aWNreSA9ICdz
dGljJywKIyAxMDgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAz
CiAga01vdXNlUGFyYW1zUHJveHlJY29uID0gJ3Byb3gnLAojIDEwOTMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKICBrTW91c2VQYXJhbXNDbGlja0FuZEhvbGQg
PSAnY2xobycsCiMgMTEwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMu
aCIgMwogIGtNb3VzZVBhcmFtc0RyYWdJbml0aWF0aW9uID0gJ2RyYWcnCn07CiMgMTE0MiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwpleHRlcm4gT1NTdGF0dXMK
SElNb3VzZVRyYWNraW5nR2V0UGFyYW1ldGVycygKICBPU1R5cGUgaW5TZWxlY3RvciwKICBFdmVu
dFRpbWUgKiBvdXRUaW1lLAogIEhJU2l6ZSAqIG91dERpc3RhbmNlKSA7CiMgMTMzMCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKCgoKCiAga0V2ZW50
Q2xhc3NNb3VzZSA9ICdtb3VzJywKCgoKCiAga0V2ZW50Q2xhc3NLZXlib2FyZCA9ICdrZXliJywK
CgoKCiAga0V2ZW50Q2xhc3NUZXh0SW5wdXQgPSAndGV4dCcsCgoKCgogIGtFdmVudENsYXNzQXBw
bGljYXRpb24gPSAnYXBwbCcsCgoKCgogIGtFdmVudENsYXNzQXBwbGVFdmVudCA9ICdlcHBjJywK
CgoKCiAga0V2ZW50Q2xhc3NNZW51ID0gJ21lbnUnLAoKCgoKICBrRXZlbnRDbGFzc1dpbmRvdyA9
ICd3aW5kJywKCgoKCiAga0V2ZW50Q2xhc3NDb250cm9sID0gJ2NudGwnLAoKCgoKCiAga0V2ZW50
Q2xhc3NDb21tYW5kID0gJ2NtZHMnLAoKCgoKICBrRXZlbnRDbGFzc1RhYmxldCA9ICd0Ymx0JywK
CgoKCiAga0V2ZW50Q2xhc3NWb2x1bWUgPSAndm9sICcsCgoKCgogIGtFdmVudENsYXNzQXBwZWFy
YW5jZSA9ICdhcHBtJywKCgoKCiAga0V2ZW50Q2xhc3NTZXJ2aWNlID0gJ3NlcnYnLAoKCgoKICBr
RXZlbnRDbGFzc1Rvb2xiYXIgPSAndGJhcicsCgoKCgogIGtFdmVudENsYXNzVG9vbGJhckl0ZW0g
PSAndGJpdCcsCgoKCgogIGtFdmVudENsYXNzVG9vbGJhckl0ZW1WaWV3ID0gJ3RiaXYnLAoKCgoK
ICBrRXZlbnRDbGFzc0FjY2Vzc2liaWxpdHkgPSAnYWNjZScsCgoKCgogIGtFdmVudENsYXNzU3lz
dGVtID0gJ21hY3MnLAoKCgoKICBrRXZlbnRDbGFzc0luayA9ICdpbmsgJywKICBrRXZlbnRDbGFz
c1RTTURvY3VtZW50QWNjZXNzID0gJ3RkYWMnLAoKCgoKICBrRXZlbnRDbGFzc0dlc3R1cmUgPSAn
Z2VzdCcKfTsKIyAxNDY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5o
IiAzCnR5cGVkZWYgVUludDE2IEV2ZW50TW91c2VCdXR0b247CmVudW0gewoKCgoKCiAga0V2ZW50
TW91c2VCdXR0b25QcmltYXJ5ID0gMSwKCgoKCiAga0V2ZW50TW91c2VCdXR0b25TZWNvbmRhcnkg
PSAyLAoKCgoKICBrRXZlbnRNb3VzZUJ1dHRvblRlcnRpYXJ5ID0gMwp9OwoKCgoKCgp0eXBlZGVm
IFVJbnQxNiBFdmVudE1vdXNlV2hlZWxBeGlzOwplbnVtIHsKCgoKCiAga0V2ZW50TW91c2VXaGVl
bEF4aXNYID0gMCwKCgoKCiAga0V2ZW50TW91c2VXaGVlbEF4aXNZID0gMQp9OwojIDE1ODEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50
TW91c2VEb3duID0gMQp9OwojIDE2NTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50TW91c2VVcCA9IDIKfTsKIyAxNzIxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudE1vdXNl
TW92ZWQgPSA1Cn07CiMgMTc4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVu
dHMuaCIgMwplbnVtIHsKICBrRXZlbnRNb3VzZURyYWdnZWQgPSA2Cn07CiMgMTgyNiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRNb3Vz
ZUVudGVyZWQgPSA4Cn07CiMgMTg2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25F
dmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRNb3VzZUV4aXRlZCA9IDkKfTsKIyAxOTMwICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudE1v
dXNlV2hlZWxNb3ZlZCA9IDEwCn07CiMgMjAxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9D
YXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRNb3VzZVNjcm9sbCA9IDExCn07CiMgMjA2
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBr
RXZlbnRHZXN0dXJlU3RhcnRlZCA9IDEKfTsKIyAyMTA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudEdlc3R1cmVFbmRlZCA9IDIKfTsK
IyAyMTU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0g
ewogIGtFdmVudEdlc3R1cmVNYWduaWZ5ID0gNAp9OwojIDIyMDMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50R2VzdHVyZVN3aXBlID0g
NQp9OwojIDIyNDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMK
ZW51bSB7CiAga0V2ZW50R2VzdHVyZVJvdGF0ZSA9IDYKfTsKIyAyMzU5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFRTTURvY3VtZW50
QWNjZXNzR2V0TGVuZ3RoID0gMQp9OwojIDI0MDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
Q2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50VFNNRG9jdW1lbnRBY2Nlc3NHZXRTZWxl
Y3RlZFJhbmdlID0gMgp9OwojIDI0NjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50VFNNRG9jdW1lbnRBY2Nlc3NHZXRDaGFyYWN0ZXJz
UHRyID0gMwp9OwojIDI1MzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRz
LmgiIDMKZW51bSB7CiAga0V2ZW50VFNNRG9jdW1lbnRBY2Nlc3NHZXRDaGFyYWN0ZXJzUHRyRm9y
TGFyZ2VzdEJ1ZmZlciA9IDQKfTsKIyAyNTkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0Nh
cmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFRTTURvY3VtZW50QWNjZXNzR2V0Q2hhcmFj
dGVycyA9IDUKfTsKIyAyNjIxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50
cy5oIiAzCmVudW0gewojIDI2MzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZl
bnRzLmgiIDMKICBrVFNNRG9jQWNjZXNzRm9udFNpemVBdHRyaWJ1dGVCaXQgPSAwLAoKCgoKCgog
IGtUU01Eb2NBY2Nlc3NFZmZlY3RpdmVSYW5nZUF0dHJpYnV0ZUJpdCA9IDEKfTsKCnR5cGVkZWYg
VUludDMyIFRTTURvY0FjY2Vzc0F0dHJpYnV0ZXM7CmVudW0gewogIGtUU01Eb2NBY2Nlc3NGb250
U2l6ZUF0dHJpYnV0ZSA9IDEgPDwga1RTTURvY0FjY2Vzc0ZvbnRTaXplQXR0cmlidXRlQml0LAog
IGtUU01Eb2NBY2Nlc3NFZmZlY3RpdmVSYW5nZUF0dHJpYnV0ZSA9IDEgPDwga1RTTURvY0FjY2Vz
c0VmZmVjdGl2ZVJhbmdlQXR0cmlidXRlQml0Cn07CiMgMjgxMyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRUU01Eb2N1bWVudEFjY2Vz
c0dldEZvbnQgPSA2Cn07CiMgMjkxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25F
dmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRUU01Eb2N1bWVudEFjY2Vzc0dldEdseXBoSW5mbyA9
IDcKfTsKIyAyOTg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAz
CmVudW0gewogIGtFdmVudFRTTURvY3VtZW50QWNjZXNzR2V0Rmlyc3RSZWN0Rm9yUmFuZ2UgPSAx
MQp9OwojIDMwNjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMK
ZW51bSB7CiAga0V2ZW50VFNNRG9jdW1lbnRBY2Nlc3NMb2NrRG9jdW1lbnQgPSA4Cn07CiMgMzEx
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBr
RXZlbnRUU01Eb2N1bWVudEFjY2Vzc1VubG9ja0RvY3VtZW50ID0gOQp9OwojIDM0MTEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50VGV4
dElucHV0VXBkYXRlQWN0aXZlSW5wdXRBcmVhID0gMQp9OwojIDM1NTUgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50VGV4dElucHV0VW5p
Y29kZUZvcktleUV2ZW50ID0gMgp9OwojIDM5MDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
Q2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50VGV4dElucHV0T2Zmc2V0VG9Qb3MgPSAz
Cn07CiMgNDAyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwpl
bnVtIHsKICBrRXZlbnRUZXh0SW5wdXRQb3NUb09mZnNldCA9IDQKfTsKIyA0MDg5ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFRleHRJ
bnB1dFNob3dIaWRlQm90dG9tV2luZG93ID0gNQp9OwojIDQyMzUgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50VGV4dElucHV0R2V0U2Vs
ZWN0ZWRUZXh0ID0gNgp9OwojIDQzNDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50VGV4dElucHV0VW5pY29kZVRleHQgPSA3Cn07CiMg
NDQwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsK
ICBrRXZlbnRUZXh0SW5wdXRGaWx0ZXJUZXh0ID0gMTQKfTsKIyA0NDcwICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFRleHRJbnB1dElz
TW91c2VFdmVudEluSW5saW5lSW5wdXRBcmVhID0gMTYKfTsKIyA0NTM2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFJhd0tleURvd24g
PSAxCn07CiMgNDU4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIg
MwplbnVtIHsKICBrRXZlbnRSYXdLZXlSZXBlYXQgPSAyCn07CiMgNDYyOSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRSYXdLZXlVcCA9
IDMKfTsKIyA0NjU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAz
CmVudW0gewogIGtFdmVudFJhd0tleU1vZGlmaWVyc0NoYW5nZWQgPSA0Cn07CiMgNDY3OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRI
b3RLZXlQcmVzc2VkID0gNQp9OwojIDQ3MDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2Fy
Ym9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50SG90S2V5UmVsZWFzZWQgPSA2Cn07CiMgNDcx
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKIyA0
NzIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCiAga0V2ZW50
S2V5TW9kaWZpZXJOdW1Mb2NrQml0ID0gMTYsCgoKCgoKICBrRXZlbnRLZXlNb2RpZmllckZuQml0
ID0gMTcKfTsKCmVudW0gewogIGtFdmVudEtleU1vZGlmaWVyTnVtTG9ja01hc2sgPSAxIDw8IGtF
dmVudEtleU1vZGlmaWVyTnVtTG9ja0JpdCwKICBrRXZlbnRLZXlNb2RpZmllckZuTWFzayA9IDEg
PDwga0V2ZW50S2V5TW9kaWZpZXJGbkJpdAp9OwojIDQ3OTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50QXBwQWN0aXZhdGVkID0gMQp9
OwojIDQ4MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51
bSB7CiAga0V2ZW50QXBwRGVhY3RpdmF0ZWQgPSAyCn07CiMgNDg0NiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRBcHBRdWl0ID0gMwp9
OwojIDQ4ODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51
bSB7CiAga0V2ZW50QXBwTGF1bmNoTm90aWZpY2F0aW9uID0gNAp9OwojIDQ5MTQgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50QXBwTGF1
bmNoZWQgPSA1Cn07CiMgNDkzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVu
dHMuaCIgMwplbnVtIHsKICBrRXZlbnRBcHBUZXJtaW5hdGVkID0gNgp9OwojIDQ5NjUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50QXBw
RnJvbnRTd2l0Y2hlZCA9IDcKfTsKIyA0OTg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0Nh
cmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudEFwcEhpZGRlbiA9IDEwNwp9OwojIDUwMDUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2
ZW50QXBwU2hvd24gPSAxMDgKfTsKIyA1MDQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0Nh
cmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudEFwcFN5c3RlbVVJTW9kZUNoYW5nZWQgPSAx
MDkKfTsKCgoKCmVudW0gewoKCgoKCiAga0F2YWlsQm91bmRzQ2hhbmdlZEZvckRvY2sgPSAxIDw8
IDAsCgoKCgoKICBrQXZhaWxCb3VuZHNDaGFuZ2VkRm9yRGlzcGxheSA9IDEgPDwgMQp9OwojIDUx
NjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAg
a0V2ZW50QXBwQXZhaWxhYmxlV2luZG93Qm91bmRzQ2hhbmdlZCA9IDExMAp9OwojIDUyMTIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50
QXBwQWN0aXZlV2luZG93Q2hhbmdlZCA9IDExMQp9OwojIDUyNDcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50QXBwR2V0RG9ja1RpbGVN
ZW51ID0gMjAKfTsKIyA1MjkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50
cy5oIiAzCmVudW0gewogIGtFdmVudEFwcFVwZGF0ZURvY2tUaWxlID0gMjEKfTsKIyA1MzIyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVu
dEFwcEZvY3VzTWVudUJhciA9IDgKfTsKIyA1MzY4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudEFwcEZvY3VzTmV4dERvY3VtZW50V2lu
ZG93ID0gOQp9OwojIDU0MDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRz
LmgiIDMKZW51bSB7CiAga0V2ZW50QXBwRm9jdXNOZXh0RmxvYXRpbmdXaW5kb3cgPSAxMAp9Owoj
IDU0MzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7
CiAga0V2ZW50QXBwRm9jdXNUb29sYmFyID0gMTEKfTsKIyA1NDcyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudEFwcEZvY3VzRHJhd2Vy
ID0gMTIKfTsKIyA1NTAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5o
IiAzCmVudW0gewogIGtFdmVudEFwcElzRXZlbnRJbkluc3RhbnRNb3VzZXIgPSAxMDQKfTsKIyA1
NTYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewog
IGtFdmVudEFwcGxlRXZlbnQgPSAxCn07CiMgNTgzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dBY3RpdmF0ZWQgPSA1Cn07
CiMgNTg3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVt
IHsKICBrRXZlbnRXaW5kb3dEZWFjdGl2YXRlZCA9IDYKfTsKIyA1OTA4ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0hhbmRs
ZUFjdGl2YXRlID0gOTEKfTsKIyA1OTM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJv
bkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0hhbmRsZURlYWN0aXZhdGUgPSA5Mgp9
OwojIDYwMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51
bSB7CiAga0V2ZW50V2luZG93R2V0Q2xpY2tBY3RpdmF0aW9uID0gNwp9OwoKCgoKCgplbnVtIHsK
IyA2MDM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCiAga0hJ
TW9kYWxDbGlja0lzTW9kYWwgPSAxIDw8IDAsCgoKCgoKCiAga0hJTW9kYWxDbGlja0FsbG93RXZl
bnQgPSAxIDw8IDEsCiMgNjA1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVu
dHMuaCIgMwogIGtISU1vZGFsQ2xpY2tBbm5vdW5jZSA9IDEgPDwgMiwKIyA2MDYxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCiAga0hJTW9kYWxDbGlja1JhaXNl
V2luZG93ID0gMSA8PCAzCn07Cgp0eXBlZGVmIFVJbnQzMiBISU1vZGFsQ2xpY2tSZXN1bHQ7CmVu
dW0gewogIHR5cGVNb2RhbENsaWNrUmVzdWx0ID0gJ3dtY3InLAogIHR5cGVXaW5kb3dNb2RhbGl0
eSA9ICd3bW9kJywKICBrRXZlbnRQYXJhbU1vZGFsQ2xpY2tSZXN1bHQgPSB0eXBlTW9kYWxDbGlj
a1Jlc3VsdCwKICBrRXZlbnRQYXJhbU1vZGFsV2luZG93ID0gJ213aW4nLAogIGtFdmVudFBhcmFt
V2luZG93TW9kYWxpdHkgPSB0eXBlV2luZG93TW9kYWxpdHkKfTsKIyA2MTY5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0dl
dENsaWNrTW9kYWxpdHkgPSA4Cn07CiMgNjE4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9D
YXJib25FdmVudHMuaCIgMwplbnVtIHsKCgoKCgogIGtXaW5kb3dCb3VuZHNDaGFuZ2VVc2VyRHJh
ZyA9ICgxIDw8IDApLAoKCgoKICBrV2luZG93Qm91bmRzQ2hhbmdlVXNlclJlc2l6ZSA9ICgxIDw8
IDEpLAoKCgoKCiAga1dpbmRvd0JvdW5kc0NoYW5nZVNpemVDaGFuZ2VkID0gKDEgPDwgMiksCgoK
CgogIGtXaW5kb3dCb3VuZHNDaGFuZ2VPcmlnaW5DaGFuZ2VkID0gKDEgPDwgMyksCiMgNjIxNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwogIGtXaW5kb3dCb3Vu
ZHNDaGFuZ2Vab29tID0gKDEgPDwgNCkKfTsKIyA2MjQxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd1Nob3dpbmcgPSAyMgp9
OwojIDYyNjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51
bSB7CiAga0V2ZW50V2luZG93SGlkaW5nID0gMjMKfTsKIyA2MjkxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd1Nob3duID0g
MjQKfTsKIyA2MzI0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAz
CmVudW0gewogIGtFdmVudFdpbmRvd0hpZGRlbiA9IDI1Cn07CiMgNjM0OSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dDb2xs
YXBzaW5nID0gODYKfTsKIyA2Mzc0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2
ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0NvbGxhcHNlZCA9IDY3Cn07CiMgNjM5OSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZl
bnRXaW5kb3dFeHBhbmRpbmcgPSA4Nwp9OwojIDY0MjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93RXhwYW5kZWQgPSA3MAp9
OwojIDY0NTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51
bSB7CiAga0V2ZW50V2luZG93Wm9vbWVkID0gNzYKfTsKIyA2NTIxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0JvdW5kc0No
YW5naW5nID0gMjYKfTsKIyA2NTY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2
ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0JvdW5kc0NoYW5nZWQgPSAyNwp9OwojIDY1
ODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAg
a0V2ZW50V2luZG93UmVzaXplU3RhcnRlZCA9IDI4Cn07CiMgNjYxNCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dSZXNpemVD
b21wbGV0ZWQgPSAyOQp9OwojIDY2MzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93RHJhZ1N0YXJ0ZWQgPSAzMAp9OwojIDY2
NjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAg
a0V2ZW50V2luZG93RHJhZ0NvbXBsZXRlZCA9IDMxCn07CiMgNjY5NyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dDbG9zZWQg
PSA3Mwp9OwojIDY3MzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgi
IDMKZW51bSB7CiAga0V2ZW50V2luZG93VHJhbnNpdGlvblN0YXJ0ZWQgPSA4OAp9OwojIDY3Nzcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2
ZW50V2luZG93VHJhbnNpdGlvbkNvbXBsZXRlZCA9IDg5Cn07CiMgNzYxMiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dDdXJz
b3JDaGFuZ2UgPSA0MAp9OwojIDc2NDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93Q29sbGFwc2UgPSA2Ngp9OwojIDc2NzYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2
ZW50V2luZG93Q29sbGFwc2VBbGwgPSA2OAp9OwojIDc3MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93RXhwYW5kID0gNjkK
fTsKIyA3NzQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVu
dW0gewogIGtFdmVudFdpbmRvd0V4cGFuZEFsbCA9IDcxCn07CiMgNzc4OSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dDbG9z
ZSA9IDcyCn07CiMgNzgxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMu
aCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dDbG9zZUFsbCA9IDc0Cn07CiMgNzg2MiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5k
b3dab29tID0gNzUKfTsKIyA3OTAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2
ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd1pvb21BbGwgPSA3Nwp9OwojIDc5ODggIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50
V2luZG93Q29udGV4dHVhbE1lbnVTZWxlY3QgPSA3OAp9OwojIDgwMzkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93UGF0aFNl
bGVjdCA9IDc5Cn07CiMgODA4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVu
dHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dHZXRJZGVhbFNpemUgPSA4MAp9OwojIDgxMzMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2
ZW50V2luZG93R2V0SWRlYWxTdGFuZGFyZFN0YXRlID0gOTMKfTsKIyA4MTcyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0dl
dE1pbmltdW1TaXplID0gODEKfTsKIyA4MjEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0Nh
cmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0dldE1heGltdW1TaXplID0gODIK
fTsKIyA4MzU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVu
dW0gewogIGtFdmVudFdpbmRvd0NvbnN0cmFpbiA9IDgzCn07CiMgODM5MCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dSZXN0
b3JlRnJvbURvY2sgPSA4NAp9OwojIDg0MjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2Fy
Ym9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93UHJveHlCZWdpbkRyYWcgPSAxMjgK
fTsKIyA4NDQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVu
dW0gewogIGtFdmVudFdpbmRvd1Byb3h5RW5kRHJhZyA9IDEyOQp9OwojIDg1ODAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93
R2V0RG9ja1RpbGVNZW51ID0gOTAKfTsKIyA4NjE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd1VwZGF0ZURvY2tUaWxlID0g
OTQKfTsKIyA4NjQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAz
CmVudW0gewogIGtFdmVudFdpbmRvd0NvbG9yU3BhY2VDaGFuZ2VkID0gOTUKfTsKIyA4NzQzICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVu
dFdpbmRvd1Rvb2xiYXJTd2l0Y2hNb2RlID0gMTUwCn07CiMgODc3NyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dGb2N1c0Fj
cXVpcmVkID0gMjAwCn07CiMgODgxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25F
dmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dGb2N1c1JlbGlucXVpc2ggPSAyMDEKfTsK
IyA4ODQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0g
ewogIGtFdmVudFdpbmRvd0ZvY3VzTG9zdCA9IDIwNQp9OwojIDg4ODMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93Rm9jdXNS
ZXN0b3JlZCA9IDIwNgp9OwojIDg5MTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93Rm9jdXNDb250ZW50ID0gMjAyCn07CiMg
ODk0MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsK
ICBrRXZlbnRXaW5kb3dGb2N1c1Rvb2xiYXIgPSAyMDMKfTsKIyA4OTc5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0ZvY3Vz
RHJhd2VyID0gMjA0Cn07CiMgOTAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25F
dmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dTaGVldE9wZW5pbmcgPSAyMTAKfTsKIyA5
MDM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewog
IGtFdmVudFdpbmRvd1NoZWV0T3BlbmVkID0gMjExCn07CiMgOTA3MCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dTaGVldENs
b3NpbmcgPSAyMTIKfTsKIyA5MDk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2
ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd1NoZWV0Q2xvc2VkID0gMjEzCn07CiMgOTEy
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBr
RXZlbnRXaW5kb3dEcmF3ZXJPcGVuaW5nID0gMjIwCn07CiMgOTE1NiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dEcmF3ZXJP
cGVuZWQgPSAyMjEKfTsKIyA5MTg4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2
ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0RyYXdlckNsb3NpbmcgPSAyMjIKfTsKIyA5
MjE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewog
IGtFdmVudFdpbmRvd0RyYXdlckNsb3NlZCA9IDIyMwp9OwojIDkyNDMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93RHJhd0Zy
YW1lID0gMTAwMAp9OwojIDkyNzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZl
bnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93RHJhd1BhcnQgPSAxMDAxCn07CiMgOTMyOCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZl
bnRXaW5kb3dHZXRSZWdpb24gPSAxMDAyCn07CiMgOTM1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dIaXRUZXN0ID0gMTAw
Mwp9OwojIDkzOTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMK
ZW51bSB7CiAga0V2ZW50V2luZG93SW5pdCA9IDEwMDQKfTsKIyA5NDI2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0Rpc3Bv
c2UgPSAxMDA1Cn07CiMgOTQ1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVu
dHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dEcmFnSGlsaXRlID0gMTAwNgp9OwojIDk0ODQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2
ZW50V2luZG93TW9kaWZpZWQgPSAxMDA3Cn07CiMgOTU0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dTZXR1cFByb3h5RHJh
Z0ltYWdlID0gMTAwOAp9OwojIDk1NjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93U3RhdGVDaGFuZ2VkID0gMTAwOQp9Owoj
IDk1OTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7
CiAga0V2ZW50V2luZG93TWVhc3VyZVRpdGxlID0gMTAxMAp9OwojIDk2MjYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93RHJh
d0dyb3dCb3ggPSAxMDExCn07CiMgOTY2MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJi
b25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRXaW5kb3dHZXRHcm93SW1hZ2VSZWdpb24gPSAx
MDEyCn07CiMgOTY5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIg
MwplbnVtIHsKICBrRXZlbnRXaW5kb3dQYWludCA9IDEwMTMKfTsKIyA5NzI0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFdpbmRvd0F0
dHJpYnV0ZXNDaGFuZ2VkID0gMTAxOQp9OwojIDk3NTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50V2luZG93VGl0bGVDaGFuZ2VkID0g
MTAyMAp9OwojIDk4MDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgi
IDMKZW51bSB7CgoKCgoKCgogIGtNZW51Q29udGV4dE1lbnVCYXIgPSAxIDw8IDAKfTsKIyA5ODI0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewoKCgoK
CiAga01lbnVDb250ZXh0UHVsbERvd24gPSAxIDw8IDgsCgoKCgoKICBrTWVudUNvbnRleHRQb3BV
cCA9IDEgPDwgOSwKCgoKCgogIGtNZW51Q29udGV4dFN1Ym1lbnUgPSAxIDw8IDEwCn07CiMgOTg1
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKCgoK
CgogIGtNZW51Q29udGV4dE1lbnVCYXJUcmFja2luZyA9IDEgPDwgMTYsCgoKCgoKCgogIGtNZW51
Q29udGV4dFBvcFVwVHJhY2tpbmcgPSAxIDw8IDE3LAoKCgoKCgoKICBrTWVudUNvbnRleHRLZXlN
YXRjaGluZyA9IDEgPDwgMTgsCiMgOTg4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJi
b25FdmVudHMuaCIgMwogIGtNZW51Q29udGV4dE1lbnVFbmFibGluZyA9IDEgPDwgMTksCiMgOTg5
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwogIGtNZW51Q29u
dGV4dENvbW1hbmRJRFNlYXJjaCA9IDEgPDwgMjAsCiMgOTkwNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9DYXJib25FdmVudHMuaCIgMwogIGtNZW51Q29udGV4dEluc3BlY3Rpb24gPSAxIDw8
IDIyLAojIDk5MTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMK
ICBrTWVudUNvbnRleHRDb250ZXh0dWFsTWVudSA9IDEgPDwgMjMKfTsKIyA5OTM1ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewoKCgoKCiAga01lbnVD
b250ZXh0RG9udFVwZGF0ZVRleHQgPSAxIDw8IDI0LAoKCgoKCiAga01lbnVDb250ZXh0RG9udFVw
ZGF0ZUtleSA9IDEgPDwgMjUsCgoKCgoKICBrTWVudUNvbnRleHREb250VXBkYXRlSWNvbiA9IDEg
PDwgMjYsCgoKCgoKICBrTWVudUNvbnRleHREb250VXBkYXRlRW5hYmxlZCA9IDEgPDwgMjcKfTsK
CgoKCgoKZW51bSB7CgoKCgoKICBrSElNZW51UmlnaHREaXJlY3Rpb24gPSAwLAoKCgoKICBrSElN
ZW51TGVmdERpcmVjdGlvbiA9IDEsCgoKCgogIGtISU1lbnVDZW50ZXJEaXJlY3Rpb24gPSAyCn07
CiMgMTAwMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51
bSB7CiAga0V2ZW50TWVudUJlZ2luVHJhY2tpbmcgPSAxCn07CiMgMTAwODQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50TWVudUVuZFRy
YWNraW5nID0gMgp9OwojIDEwMTI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2
ZW50cy5oIiAzCmVudW0gewogIGtFdmVudE1lbnVDaGFuZ2VUcmFja2luZ01vZGUgPSAzCn07CiMg
MTAxNzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7
CiAga0V2ZW50TWVudU9wZW5pbmcgPSA0Cn07CiMgMTAyMDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50TWVudUNsb3NlZCA9IDUKfTsK
IyAxMDIzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVt
IHsKICBrRXZlbnRNZW51VGFyZ2V0SXRlbSA9IDYKfTsKIyAxMDMyMiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRNZW51TWF0Y2hLZXkg
PSA3Cn07CiMgMTAzOTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgi
IDMKZW51bSB7CiAga0V2ZW50TWVudUVuYWJsZUl0ZW1zID0gOAp9OwojIDEwNDYyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudE1lbnVQ
b3B1bGF0ZSA9IDkKfTsKIyAxMDQ4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25F
dmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRNZW51RGlzcG9zZSA9IDEwMDEKfTsKIyAxMDUyNCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZl
bnRNZW51TWVhc3VyZUl0ZW1XaWR0aCA9IDEwMAp9OwojIDEwNTYxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudE1lbnVNZWFzdXJlSXRl
bUhlaWdodCA9IDEwMQp9OwojIDEwNjY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJv
bkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudE1lbnVEcmF3SXRlbSA9IDEwMgp9OwojIDEwNzcx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtF
dmVudE1lbnVEcmF3SXRlbUNvbnRlbnQgPSAxMDMKfTsKIyAxMDgzNiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRNZW51Q2FsY3VsYXRl
U2l6ZSA9IDEwMDQKfTsKIyAxMDg3NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25F
dmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRNZW51Q3JlYXRlRnJhbWVWaWV3ID0gMTAwNQp9Owoj
IDEwOTc0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0g
ewogIGtFdmVudE1lbnVHZXRGcmFtZUJvdW5kcyA9IDEwMDYKfTsKIyAxMTAxMCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRNZW51QmVj
b21lU2Nyb2xsYWJsZSA9IDEwMDcKfTsKIyAxMTA0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRNZW51Q2Vhc2VUb0JlU2Nyb2xsYWJs
ZSA9IDEwMDgKfTsKIyAxMTA2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVu
dHMuaCIgMwplbnVtIHsKICBrRXZlbnRNZW51QmFyU2hvd24gPSAyMDAwCn07CiMgMTEwODkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50
TWVudUJhckhpZGRlbiA9IDIwMDEKfTsKIyAxMTE3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRDb21tYW5kUHJvY2VzcyA9IDEKfTsK
IyAxMTIzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVt
IHsKICBrRXZlbnRDb21tYW5kVXBkYXRlU3RhdHVzID0gMgp9OwoKCgoKCgoKZW51bSB7CgoKCgog
IGtISUNvbW1hbmRPSyA9ICdvayAgJywKCgoKCiAga0hJQ29tbWFuZENhbmNlbCA9ICdub3QhJywK
CgoKCiAga0hJQ29tbWFuZFF1aXQgPSAncXVpdCcsCgoKCgogIGtISUNvbW1hbmRVbmRvID0gJ3Vu
ZG8nLAoKCgoKICBrSElDb21tYW5kUmVkbyA9ICdyZWRvJywKCgoKCiAga0hJQ29tbWFuZEN1dCA9
ICdjdXQgJywKCgoKCiAga0hJQ29tbWFuZENvcHkgPSAnY29weScsCgoKCgogIGtISUNvbW1hbmRQ
YXN0ZSA9ICdwYXN0JywKCgoKCiAga0hJQ29tbWFuZENsZWFyID0gJ2NsZWEnLAoKCgoKICBrSElD
b21tYW5kU2VsZWN0QWxsID0gJ3NhbGwnLAoKCgoKCgogIGtISUNvbW1hbmRIaWRlID0gJ2hpZGUn
LAoKCgoKCgogIGtISUNvbW1hbmRIaWRlT3RoZXJzID0gJ2hpZG8nLAoKCgoKCgogIGtISUNvbW1h
bmRTaG93QWxsID0gJ3NoYWwnLAoKCgoKICBrSElDb21tYW5kUHJlZmVyZW5jZXMgPSAncHJlZics
CiMgMTEzMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKICBr
SElDb21tYW5kWm9vbVdpbmRvdyA9ICd6b29tJywKCgoKCgoKICBrSElDb21tYW5kTWluaW1pemVX
aW5kb3cgPSAnbWluaScsCgoKCgoKCiAga0hJQ29tbWFuZE1pbmltaXplQWxsID0gJ21pbmEnLAoK
CgoKCgogIGtISUNvbW1hbmRNYXhpbWl6ZVdpbmRvdyA9ICdtYXhpJywKCgoKCgogIGtISUNvbW1h
bmRNYXhpbWl6ZUFsbCA9ICdtYXhhJywKCgoKCgoKICBrSElDb21tYW5kQXJyYW5nZUluRnJvbnQg
PSAnZnJudCcsCgoKCgoKCgogIGtISUNvbW1hbmRCcmluZ0FsbFRvRnJvbnQgPSAnYmZydCcsCiMg
MTEzODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKICBrSElD
b21tYW5kV2luZG93TGlzdFNlcGFyYXRvciA9ICd3bGR2JywKIyAxMTM5NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwogIGtISUNvbW1hbmRXaW5kb3dMaXN0VGVy
bWluYXRvciA9ICd3bHN0JywKIyAxMTQyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJi
b25FdmVudHMuaCIgMwogIGtISUNvbW1hbmRTZWxlY3RXaW5kb3cgPSAnc3dpbicsCiMgMTE0MzAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKICBrSElDb21tYW5k
Um90YXRlV2luZG93c0ZvcndhcmQgPSAncm90dycsCiMgMTE0MzkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKICBrSElDb21tYW5kUm90YXRlV2luZG93c0JhY2t3
YXJkID0gJ3JvdGInLAojIDExNDQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2
ZW50cy5oIiAzCiAga0hJQ29tbWFuZFJvdGF0ZUZsb2F0aW5nV2luZG93c0ZvcndhcmQgPSAncnRm
dycsCiMgMTE0NTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMK
ICBrSElDb21tYW5kUm90YXRlRmxvYXRpbmdXaW5kb3dzQmFja3dhcmQgPSAncnRmYicsCiMgMTE0
NjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKICBrSElDb21t
YW5kQWJvdXQgPSAnYWJvdScsCgoKCgogIGtISUNvbW1hbmROZXcgPSAnbmV3ICcsCgoKCgogIGtI
SUNvbW1hbmRPcGVuID0gJ29wZW4nLAojIDExNDg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0NhcmJvbkV2ZW50cy5oIiAzCiAga0hJQ29tbWFuZENsb3NlID0gJ2Nsb3MnLAoKCgoKCgoKICBr
SElDb21tYW5kQ2xvc2VGaWxlID0gJ2Nsb2YnLAoKCgoKICBrSElDb21tYW5kU2F2ZSA9ICdzYXZl
JywKCgoKCiAga0hJQ29tbWFuZFNhdmVBcyA9ICdzdmFzJywKCgoKCgogIGtISUNvbW1hbmRSZXZl
cnQgPSAncnZydCcsCgoKCgogIGtISUNvbW1hbmRQcmludCA9ICdwcm50JywKCgoKCgogIGtISUNv
bW1hbmRQYWdlU2V0dXAgPSAncGFnZScsCiMgMTE1MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvQ2FyYm9uRXZlbnRzLmgiIDMKICBrSElDb21tYW5kQXBwSGVscCA9ICdhaGxwJywKCgoKCgoK
CiAga0hJQ29tbWFuZFNob3dDaGFyYWN0ZXJQYWxldHRlID0gJ2NocnAnLAoKCgoKCgoKICBrSElD
b21tYW5kU2hvd1NwZWxsaW5nUGFuZWwgPSAnc2hzcCcsCgoKCgoKCgogIGtISUNvbW1hbmRDaGVj
a1NwZWxsaW5nID0gJ2Nrc3AnLAogIGtISUNvbW1hbmRDaGFuZ2VTcGVsbGluZyA9ICdjaHNwJywK
CgoKCgoKCiAga0hJQ29tbWFuZENoZWNrU3BlbGxpbmdBc1lvdVR5cGUgPSAnYXNwYycsCgoKCgoK
CgogIGtISUNvbW1hbmRJZ25vcmVTcGVsbGluZyA9ICdpZ3NwJywKCgoKCgoKCiAga0hJQ29tbWFu
ZExlYXJuV29yZCA9ICdscndkJwp9OwojIDExNTkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewoKCgoKCgoKICBrSElDb21tYW5kRnJvbU1lbnUgPSAo
MSA8PCAwKSwKCgoKCgoKCiAga0hJQ29tbWFuZEZyb21Db250cm9sID0gKDEgPDwgMSksCgoKCgoK
CgogIGtISUNvbW1hbmRGcm9tV2luZG93ID0gKDEgPDwgMikKfTsKIyAxMTYzMyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwpzdHJ1Y3QgSElDb21tYW5kIHsKCgoK
CiAgVUludDMyIGF0dHJpYnV0ZXM7CgoKCgogIFVJbnQzMiBjb21tYW5kSUQ7CiAgc3RydWN0IHsK
ICAgIE1lbnVSZWYgbWVudVJlZjsKICAgIE1lbnVJdGVtSW5kZXggbWVudUl0ZW1JbmRleDsKICB9
IG1lbnU7Cn07CnR5cGVkZWYgc3RydWN0IEhJQ29tbWFuZCBISUNvbW1hbmQ7CiMgMTE2ODMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKc3RydWN0IEhJQ29tbWFu
ZEV4dGVuZGVkIHsKCgoKCiAgVUludDMyIGF0dHJpYnV0ZXM7CgoKCgogIFVJbnQzMiBjb21tYW5k
SUQ7CiAgdW5pb24gewogICAgQ29udHJvbFJlZiBjb250cm9sOwogICAgV2luZG93UmVmIHdpbmRv
dzsKICAgIHN0cnVjdCB7CiAgICAgIE1lbnVSZWYgbWVudVJlZjsKICAgICAgTWVudUl0ZW1JbmRl
eCBtZW51SXRlbUluZGV4OwogICAgfSBtZW51OwogIH0gc291cmNlOwp9Owp0eXBlZGVmIHN0cnVj
dCBISUNvbW1hbmRFeHRlbmRlZCBISUNvbW1hbmRFeHRlbmRlZDsKIyAxMTg2NyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRDb250cm9s
Q2xpY2sgPSAxMwp9OwojIDExOTIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2
ZW50cy5oIiAzCmVudW0gewogIGtFdmVudENvbnRyb2xIaXQgPSAxCn07CiMgMTE5NTYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50Q29u
dHJvbEluaXRpYWxpemUgPSAxMDAwCn07CiMgMTE5NzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50Q29udHJvbERpc3Bvc2UgPSAxMDAx
Cn07CiMgMTIwMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMK
ZW51bSB7CiAga0V2ZW50Q29udHJvbEdldE9wdGltYWxCb3VuZHMgPSAxMDAzCn07CiMgMTIwNDIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2
ZW50Q29udHJvbE9wdGltYWxCb3VuZHNDaGFuZ2VkID0gMTAwNAp9OwojIDEyMDg2ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudENvbnRy
b2xTaW11bGF0ZUhpdCA9IDIKfTsKIyAxMjExOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9D
YXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRDb250cm9sSGl0VGVzdCA9IDMKfTsKIyAx
MjE4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsK
ICBrRXZlbnRDb250cm9sRHJhdyA9IDQKfTsKIyAxMjI5NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRDb250cm9sQXBwbHlUZXh0Q29s
b3IgPSA2Cn07CiMgMTIzNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRz
LmgiIDMKZW51bSB7CiAga0V2ZW50Q29udHJvbEdldE5leHRGb2N1c0NhbmRpZGF0ZSA9IDE0Cn07
CiMgMTIzNzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51
bSB7CiAga0V2ZW50Q29udHJvbEdldEF1dG9Ub2dnbGVWYWx1ZSA9IDE1Cn07CiMgMTI0MjIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50
Q29udHJvbEludGVyY2VwdFN1YnZpZXdDbGljayA9IDE2Cn07CiMgMTI1MTQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50Q29udHJvbEdl
dENsaWNrQWN0aXZhdGlvbiA9IDE3Cn07CiMgMTI1NjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50Q29udHJvbERyYWdFbnRlciA9IDE4
Cn07CiMgMTI1OTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMK
ZW51bSB7CiAga0V2ZW50Q29udHJvbERyYWdXaXRoaW4gPSAxOQp9OwojIDEyNjMzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudENvbnRy
b2xEcmFnTGVhdmUgPSAyMAp9OwojIDEyNjY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0Nh
cmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudENvbnRyb2xEcmFnUmVjZWl2ZSA9IDIxCn07
CiMgMTI3MDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51
bSB7CiAga0V2ZW50Q29udHJvbFNldEZvY3VzUGFydCA9IDcKfTsKIyAxMjc0MSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRDb250cm9s
R2V0Rm9jdXNQYXJ0ID0gOAp9OwojIDEyNzY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0Nh
cmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudENvbnRyb2xBY3RpdmF0ZSA9IDkKfTsKIyAx
Mjc4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsK
ICBrRXZlbnRDb250cm9sRGVhY3RpdmF0ZSA9IDEwCn07CiMgMTI4MjcgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50Q29udHJvbFNldEN1
cnNvciA9IDExCn07CiMgMTI5MDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZl
bnRzLmgiIDMKZW51bSB7CiAga0V2ZW50Q29udHJvbENvbnRleHR1YWxNZW51Q2xpY2sgPSAxMgp9
OwojIDEzMDQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVu
dW0gewogIGtFdmVudENvbnRyb2xUcmFjayA9IDUxCn07CiMgMTMwNzkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50Q29udHJvbEdldFNj
cm9sbFRvSGVyZVN0YXJ0UG9pbnQgPSA1Mgp9OwojIDEzMTEzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudENvbnRyb2xHZXRJbmRpY2F0
b3JEcmFnQ29uc3RyYWludCA9IDUzCn07CiMgMTMxNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50Q29udHJvbEluZGljYXRvck1vdmVk
ID0gNTQKfTsKIyAxMzE3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMu
aCIgMwplbnVtIHsKICBrRXZlbnRDb250cm9sR2hvc3RpbmdGaW5pc2hlZCA9IDU1Cn07CiMgMTMy
MTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAg
a0V2ZW50Q29udHJvbEdldEFjdGlvblByb2NQYXJ0ID0gNTYKfTsKIyAxMzMxMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRDb250cm9s
R2V0UGFydFJlZ2lvbiA9IDEwMQp9OwojIDEzMzQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudENvbnRyb2xHZXRQYXJ0Qm91bmRzID0g
MTAyCn07CiMgMTMzODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgi
IDMKZW51bSB7CiAga0V2ZW50Q29udHJvbFNldERhdGEgPSAxMDMKfTsKIyAxMzQyOSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRDb250
cm9sR2V0RGF0YSA9IDEwNAp9OwojIDEzNDY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0Nh
cmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudENvbnRyb2xHZXRTaXplQ29uc3RyYWludHMg
PSAxMDUKfTsKIyAxMzQ5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMu
aCIgMwplbnVtIHsKICBrRXZlbnRDb250cm9sR2V0RnJhbWVNZXRyaWNzID0gMTA2Cn07CiMgMTM1
MjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAg
a0V2ZW50Q29udHJvbFZhbHVlRmllbGRDaGFuZ2VkID0gMTUxCn07CiMgMTM1NDggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50Q29udHJv
bEFkZGVkU3ViQ29udHJvbCA9IDE1Mgp9OwojIDEzNTc0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudENvbnRyb2xSZW1vdmluZ1N1YkNv
bnRyb2wgPSAxNTMKfTsKIyAxMzYyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25F
dmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRDb250cm9sQm91bmRzQ2hhbmdlZCA9IDE1NAp9Owoj
IDEzNjU5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0g
ewogIGtFdmVudENvbnRyb2xJbnZhbGlkYXRlRm9yU2l6ZUNoYW5nZSA9IDIyCn07CiMgMTM2ODMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2
ZW50Q29udHJvbFZpc2liaWxpdHlDaGFuZ2VkID0gMTU3Cn07CiMgMTM3MTYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50Q29udHJvbE93
bmluZ1dpbmRvd0NoYW5nZWQgPSAxNTkKfTsKIyAxMzczOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRDb250cm9sVGl0bGVDaGFuZ2Vk
ID0gMTU4Cn07CiMgMTM3NjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRz
LmgiIDMKZW51bSB7CiAga0V2ZW50Q29udHJvbEhpbGl0ZUNoYW5nZWQgPSAxNjAKfTsKIyAxMzc5
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBr
RXZlbnRDb250cm9sRW5hYmxlZFN0YXRlQ2hhbmdlZCA9IDE2MQp9OwojIDEzODE0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudENvbnRy
b2xMYXlvdXRJbmZvQ2hhbmdlZCA9IDE2Mgp9OwojIDEzODQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudENvbnRyb2xGb2N1c1BhcnRD
aGFuZ2VkID0gMTY0Cn07CiMgMTM5MDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzLmgiIDMKZW51bSB7CgoKCgogIGtDb250cm9sQm91bmRzQ2hhbmdlU2l6ZUNoYW5nZWQg
PSAoMSA8PCAyKSwKCgoKCiAga0NvbnRyb2xCb3VuZHNDaGFuZ2VQb3NpdGlvbkNoYW5nZWQgPSAo
MSA8PCAzKQp9OwojIDEzOTQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50
cy5oIiAzCmVudW0gewogIGtFdmVudFRhYmxldFBvaW50ID0gMQp9OwojIDEzOTcyICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFRhYmxl
dFByb3hpbWl0eSA9IDIKfTsKCnN0cnVjdCBUYWJsZXRQb2ludFJlYyB7CiAgU0ludDMyIGFic1g7
CiAgU0ludDMyIGFic1k7CiAgU0ludDMyIGFic1o7CiAgVUludDE2IGJ1dHRvbnM7CiAgVUludDE2
IHByZXNzdXJlOwogIFNJbnQxNiB0aWx0WDsKICBTSW50MTYgdGlsdFk7CiAgVUludDE2IHJvdGF0
aW9uOwogIFNJbnQxNiB0YW5nZW50aWFsUHJlc3N1cmU7CiAgVUludDE2IGRldmljZUlEOwogIFNJ
bnQxNiB2ZW5kb3IxOwogIFNJbnQxNiB2ZW5kb3IyOwogIFNJbnQxNiB2ZW5kb3IzOwp9Owp0eXBl
ZGVmIHN0cnVjdCBUYWJsZXRQb2ludFJlYyBUYWJsZXRQb2ludFJlYzsKdHlwZWRlZiBUYWJsZXRQ
b2ludFJlYyBUYWJsZXRQb2ludGVyUmVjOwpzdHJ1Y3QgVGFibGV0UHJveGltaXR5UmVjIHsKICBV
SW50MTYgdmVuZG9ySUQ7CiAgVUludDE2IHRhYmxldElEOwogIFVJbnQxNiBwb2ludGVySUQ7CiAg
VUludDE2IGRldmljZUlEOwogIFVJbnQxNiBzeXN0ZW1UYWJsZXRJRDsKICBVSW50MTYgdmVuZG9y
UG9pbnRlclR5cGU7CiAgVUludDMyIHBvaW50ZXJTZXJpYWxOdW1iZXI7CiAgVUludDY0IHVuaXF1
ZUlEOwogIFVJbnQzMiBjYXBhYmlsaXR5TWFzazsKCgogIFVJbnQ4IHBvaW50ZXJUeXBlOwogIFVJ
bnQ4IGVudGVyUHJveGltaXR5Owp9Owp0eXBlZGVmIHN0cnVjdCBUYWJsZXRQcm94aW1pdHlSZWMg
VGFibGV0UHJveGltaXR5UmVjOwojIDE0MDE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0Nh
cmJvbkV2ZW50cy5oIiAzCmVudW0gewogIHR5cGVGU1ZvbHVtZVJlZk51bSA9ICd2b2xuJwp9Owoj
IDE0MDQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0g
ewogIGtFdmVudFZvbHVtZU1vdW50ZWQgPSAxCn07CiMgMTQwNzIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50Vm9sdW1lVW5tb3VudGVk
ID0gMgp9OwojIDE0MTA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5o
IiAzCmVudW0gewogIGtFdmVudEFwcGVhcmFuY2VTY3JvbGxCYXJWYXJpYW50Q2hhbmdlZCA9IDEK
fTsKIyAxNDE3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwpl
bnVtIHsKICBrRXZlbnRTZXJ2aWNlQ29weSA9IDEKfTsKIyAxNDIxMiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRTZXJ2aWNlUGFzdGUg
PSAyCn07CiMgMTQyNTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgi
IDMKZW51bSB7CiAga0V2ZW50U2VydmljZUdldFR5cGVzID0gMwp9OwojIDE0Mjk1ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFNlcnZp
Y2VQZXJmb3JtID0gNAp9OwojIDE0MzQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJv
bkV2ZW50cy5oIiAzCiNkZWZpbmUga0hJU2VydmljZXNNZW51UHJvdmlkZXJOYW1lIENGU1RSKCJr
SElTZXJ2aWNlc01lbnVQcm92aWRlck5hbWUiKQojIDE0MzUyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCiNkZWZpbmUga0hJU2VydmljZXNNZW51SXRlbU5hbWUg
Q0ZTVFIoImtISVNlcnZpY2VzTWVudUl0ZW1OYW1lIikKIyAxNDM2MyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwojZGVmaW5lIGtISVNlcnZpY2VzTWVudUNoYXJD
b2RlIENGU1RSKCJrSElTZXJ2aWNlc01lbnVDaGFyQ29kZSIpCiMgMTQzNzQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKI2RlZmluZSBrSElTZXJ2aWNlc01lbnVL
ZXlNb2RpZmllcnMgQ0ZTVFIoImtISVNlcnZpY2VzTWVudUtleU1vZGlmaWVycyIpCiMgMTQ0NDgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2
ZW50U3lzdGVtVGltZURhdGVDaGFuZ2VkID0gMgp9OwojIDE0NDY5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFN5c3RlbURpc3BsYXlz
QXNsZWVwID0gMwp9OwojIDE0NDkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2
ZW50cy5oIiAzCmVudW0gewogIGtFdmVudFN5c3RlbURpc3BsYXlzQXdha2UgPSA0Cn07CiMgMTQ1
MjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAg
a0V2ZW50U3lzdGVtRGlzcGxheVJlY29uZmlndXJlZCA9IDYKfTsKIyAxNDU0NCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRTeXN0ZW1V
c2VyU2Vzc2lvbkFjdGl2YXRlZCA9IDEwCn07CiMgMTQ1NjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50U3lzdGVtVXNlclNlc3Npb25E
ZWFjdGl2YXRlZCA9IDExCn07CiMgMTQ2ODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2Fy
Ym9uRXZlbnRzLmgiIDMKZXh0ZXJuIEV2ZW50VGFyZ2V0UmVmCkdldEFwcGxpY2F0aW9uRXZlbnRU
YXJnZXQodm9pZCkgOwojIDE0NzM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2
ZW50cy5oIiAzCmV4dGVybiBFdmVudFRhcmdldFJlZgpHZXRFdmVudERpc3BhdGNoZXJUYXJnZXQo
dm9pZCkgOwojIDE0ODA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5o
IiAzCmV4dGVybiBFdmVudFRhcmdldFJlZgpHZXRFdmVudE1vbml0b3JUYXJnZXQodm9pZCkgOwoK
CgojZGVmaW5lIEluc3RhbGxBcHBsaWNhdGlvbkV2ZW50SGFuZGxlcihoYW5kbGVyLG51bVR5cGVz
LGxpc3QsdXNlckRhdGEsb3V0SGFuZGxlclJlZikgSW5zdGFsbEV2ZW50SGFuZGxlciggR2V0QXBw
bGljYXRpb25FdmVudFRhcmdldCgpLCAoaGFuZGxlciksIChudW1UeXBlcyksIChsaXN0KSwgKHVz
ZXJEYXRhKSwgKG91dEhhbmRsZXJSZWYpICkKCgojZGVmaW5lIEluc3RhbGxISU9iamVjdEV2ZW50
SGFuZGxlcih0YXJnZXQsaGFuZGxlcixudW1UeXBlcyxsaXN0LHVzZXJEYXRhLG91dEhhbmRsZXJS
ZWYpIEluc3RhbGxFdmVudEhhbmRsZXIoIEhJT2JqZWN0R2V0RXZlbnRUYXJnZXQoIHRhcmdldCAp
LCAoaGFuZGxlciksIChudW1UeXBlcyksIChsaXN0KSwgKHVzZXJEYXRhKSwgKG91dEhhbmRsZXJS
ZWYpICkKCgojZGVmaW5lIEluc3RhbGxXaW5kb3dFdmVudEhhbmRsZXIodGFyZ2V0LGhhbmRsZXIs
bnVtVHlwZXMsbGlzdCx1c2VyRGF0YSxvdXRIYW5kbGVyUmVmKSBJbnN0YWxsRXZlbnRIYW5kbGVy
KCBHZXRXaW5kb3dFdmVudFRhcmdldCggdGFyZ2V0ICksIChoYW5kbGVyKSwgKG51bVR5cGVzKSwg
KGxpc3QpLCAodXNlckRhdGEpLCAob3V0SGFuZGxlclJlZikgKQoKCiNkZWZpbmUgSW5zdGFsbENv
bnRyb2xFdmVudEhhbmRsZXIodGFyZ2V0LGhhbmRsZXIsbnVtVHlwZXMsbGlzdCx1c2VyRGF0YSxv
dXRIYW5kbGVyUmVmKSBJbnN0YWxsRXZlbnRIYW5kbGVyKCBHZXRDb250cm9sRXZlbnRUYXJnZXQo
IHRhcmdldCApLCAoaGFuZGxlciksIChudW1UeXBlcyksIChsaXN0KSwgKHVzZXJEYXRhKSwgKG91
dEhhbmRsZXJSZWYpICkKCgojZGVmaW5lIEluc3RhbGxNZW51RXZlbnRIYW5kbGVyKHRhcmdldCxo
YW5kbGVyLG51bVR5cGVzLGxpc3QsdXNlckRhdGEsb3V0SGFuZGxlclJlZikgSW5zdGFsbEV2ZW50
SGFuZGxlciggR2V0TWVudUV2ZW50VGFyZ2V0KCB0YXJnZXQgKSwgKGhhbmRsZXIpLCAobnVtVHlw
ZXMpLCAobGlzdCksICh1c2VyRGF0YSksIChvdXRIYW5kbGVyUmVmKSApCgoKI2RlZmluZSBISVZp
ZXdJbnN0YWxsRXZlbnRIYW5kbGVyKHRhcmdldCxoYW5kbGVyLG51bVR5cGVzLGxpc3QsdXNlckRh
dGEsb3V0SGFuZGxlclJlZikgSW5zdGFsbEV2ZW50SGFuZGxlciggSElPYmplY3RHZXRFdmVudFRh
cmdldCggKEhJT2JqZWN0UmVmKSAodGFyZ2V0KSApLCAoaGFuZGxlciksIChudW1UeXBlcyksIChs
aXN0KSwgKHVzZXJEYXRhKSwgKG91dEhhbmRsZXJSZWYpICkKIyAxNDgzMyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwojZGVmaW5lIERFRklORV9PTkVfU0hPVF9I
QU5ETEVSX0dFVFRFUih4KSBFdmVudEhhbmRsZXJVUFAgR2V0ICMjIHggIyMgVVBQKCkgeyBzdGF0
aWMgRXZlbnRIYW5kbGVyVVBQIHNIYW5kbGVyID0gTlVMTDsgaWYgKCBzSGFuZGxlciA9PSBOVUxM
ICkgc0hhbmRsZXIgPSBOZXdFdmVudEhhbmRsZXJVUFAoIHggKTsgcmV0dXJuIHNIYW5kbGVyOyB9
CiMgMTQ4NDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKI2Rl
ZmluZSBTZW5kRXZlbnRUb0FwcGxpY2F0aW9uKGUpIFNlbmRFdmVudFRvRXZlbnRUYXJnZXQoIChl
KSwgR2V0QXBwbGljYXRpb25FdmVudFRhcmdldCgpICkKCgojZGVmaW5lIFNlbmRFdmVudFRvSElP
YmplY3QoZSx0KSBTZW5kRXZlbnRUb0V2ZW50VGFyZ2V0KCAoZSksIEhJT2JqZWN0R2V0RXZlbnRU
YXJnZXQoIHQgKSApCgoKI2RlZmluZSBTZW5kRXZlbnRUb1dpbmRvdyhlLHQpIFNlbmRFdmVudFRv
RXZlbnRUYXJnZXQoIChlKSwgR2V0V2luZG93RXZlbnRUYXJnZXQoIHQgKSApCgoKI2RlZmluZSBT
ZW5kRXZlbnRUb0NvbnRyb2woZSx0KSBTZW5kRXZlbnRUb0V2ZW50VGFyZ2V0KCAoZSksIEdldENv
bnRyb2xFdmVudFRhcmdldCggdCApICkKCgojZGVmaW5lIFNlbmRFdmVudFRvTWVudShlLHQpIFNl
bmRFdmVudFRvRXZlbnRUYXJnZXQoIChlKSwgR2V0TWVudUV2ZW50VGFyZ2V0KCB0ICkgKQoKCiNk
ZWZpbmUgU2VuZEV2ZW50VG9Vc2VyRm9jdXMoZSkgU2VuZEV2ZW50VG9FdmVudFRhcmdldCggKGUp
LCBHZXRVc2VyRm9jdXNFdmVudFRhcmdldCgpICkKIyAxNDg5NyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9DYXJib25FdmVudHMuaCIgMwpleHRlcm4gT1NTdGF0dXMKUHJvY2Vzc0hJQ29tbWFu
ZChjb25zdCBISUNvbW1hbmQgKiBpbkNvbW1hbmQpIDsKIyAxNTA5NiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwpzdHJ1Y3QgRXZlbnRIb3RLZXlJRCB7CiAgT1NU
eXBlIHNpZ25hdHVyZTsKICBVSW50MzIgaWQ7Cn07CnR5cGVkZWYgc3RydWN0IEV2ZW50SG90S2V5
SUQgRXZlbnRIb3RLZXlJRDsKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlRXZlbnRIb3RLZXlSZWYqIEV2
ZW50SG90S2V5UmVmOwoKCgoKCgoKZW51bSB7CgoKCgogIGtFdmVudEhvdEtleU5vT3B0aW9ucyA9
IDAsCiMgMTUxMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMK
ICBrRXZlbnRIb3RLZXlFeGNsdXNpdmUgPSAoMSA8PCAwKQp9OwojIDE1MTk1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmV4dGVybiBPU1N0YXR1cwpSZWdpc3Rl
ckV2ZW50SG90S2V5KAogIFVJbnQzMiBpbkhvdEtleUNvZGUsCiAgVUludDMyIGluSG90S2V5TW9k
aWZpZXJzLAogIEV2ZW50SG90S2V5SUQgaW5Ib3RLZXlJRCwKICBFdmVudFRhcmdldFJlZiBpblRh
cmdldCwKICBPcHRpb25CaXRzIGluT3B0aW9ucywKICBFdmVudEhvdEtleVJlZiAqIG91dFJlZikg
OwojIDE1MjMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbkV2ZW50cy5oIiAzCmV4
dGVybiBPU1N0YXR1cwpVbnJlZ2lzdGVyRXZlbnRIb3RLZXkoRXZlbnRIb3RLZXlSZWYgaW5Ib3RL
ZXkpIDsKIyAxNTI0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIg
MwojZGVmaW5lIGtISVN5bWJvbGljSG90S2V5Q29kZSBDRlNUUigia0hJU3ltYm9saWNIb3RLZXlD
b2RlIikKIyAxNTI1NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIg
MwojZGVmaW5lIGtISVN5bWJvbGljSG90S2V5TW9kaWZpZXJzIENGU1RSKCJrSElTeW1ib2xpY0hv
dEtleU1vZGlmaWVycyIpCiMgMTUyNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzLmgiIDMKI2RlZmluZSBrSElTeW1ib2xpY0hvdEtleUVuYWJsZWQgQ0ZTVFIoImtISVN5
bWJvbGljSG90S2V5RW5hYmxlZCIpCiMgMTUzMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
Q2FyYm9uRXZlbnRzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkNvcHlTeW1ib2xpY0hvdEtleXMoQ0ZB
cnJheVJlZiAqIG91dEhvdEtleUFycmF5KSA7CgoKCgoKCgplbnVtIHsKCgoKCiAga0hJSG90S2V5
TW9kZUFsbEVuYWJsZWQgPSAwLAoKCgoKICBrSElIb3RLZXlNb2RlQWxsRGlzYWJsZWQgPSAoMSA8
PCAwKSwKCgoKCgogIGtISUhvdEtleU1vZGVBbGxEaXNhYmxlZEV4Y2VwdFVuaXZlcnNhbEFjY2Vz
cyA9ICgxIDw8IDEpCn07CiMgMTUzODIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzLmgiIDMKZXh0ZXJuIHZvaWQgKgpQdXNoU3ltYm9saWNIb3RLZXlNb2RlKE9wdGlvbkJp
dHMgaW5PcHRpb25zKSA7CiMgMTU0MTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9u
RXZlbnRzLmgiIDMKZXh0ZXJuIHZvaWQKUG9wU3ltYm9saWNIb3RLZXlNb2RlKHZvaWQgKiBpblRv
a2VuKSA7CiMgMTU0NDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgi
IDMKZXh0ZXJuIE9wdGlvbkJpdHMKR2V0U3ltYm9saWNIb3RLZXlNb2RlKHZvaWQpIDsKIyAxNTQ1
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBr
RXZlbnRQYXJhbUlua1RleHRSZWYgPSAnaXdyZCcsCiAga0V2ZW50UGFyYW1JbmtLZXlib2FyZFNo
b3J0Y3V0ID0gJ2lrYmQnLAogIGtFdmVudFBhcmFtSW5rR2VzdHVyZUtpbmQgPSAnZ2tuZCcsCiAg
a0V2ZW50UGFyYW1JbmtHZXN0dXJlQm91bmRzID0gJ2dibmQnLAogIGtFdmVudFBhcmFtSW5rR2Vz
dHVyZUhvdHNwb3QgPSAnZ2hvdCcKfTsKIyAxNTQ5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9DYXJib25FdmVudHMuaCIgMwplbnVtIHsKICBrRXZlbnRJbmtQb2ludCA9IDEwCn07CiMgMTU1
MzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAg
a0V2ZW50SW5rR2VzdHVyZSA9IDExCn07CiMgMTU1NjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51bSB7CiAga0V2ZW50SW5rVGV4dCA9IDEyCn07CiMgMTYy
NjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgT3BhcXVlVG9vbGJveE9iamVjdENsYXNzUmVmKiBUb29sYm94T2JqZWN0Q2xhc3NSZWY7
CiMgMTYzMDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uRXZlbnRzLmgiIDMKZW51
bSB7CiAga0V2ZW50UGFyYW1UYWJsZXRQb2ludGVyUmVjID0gJ3RicmMnLAogIHR5cGVUYWJsZXRQ
b2ludGVyUmVjID0gJ3RicmMnCn07CgplbnVtIHsKICBrRXZlbnRXaW5kb3dEZWZEcmF3RnJhbWUg
PSBrRXZlbnRXaW5kb3dEcmF3RnJhbWUsCiAga0V2ZW50V2luZG93RGVmRHJhd1BhcnQgPSBrRXZl
bnRXaW5kb3dEcmF3UGFydCwKICBrRXZlbnRXaW5kb3dEZWZHZXRSZWdpb24gPSBrRXZlbnRXaW5k
b3dHZXRSZWdpb24sCiAga0V2ZW50V2luZG93RGVmSGl0VGVzdCA9IGtFdmVudFdpbmRvd0hpdFRl
c3QsCiAga0V2ZW50V2luZG93RGVmSW5pdCA9IGtFdmVudFdpbmRvd0luaXQsCiAga0V2ZW50V2lu
ZG93RGVmRGlzcG9zZSA9IGtFdmVudFdpbmRvd0Rpc3Bvc2UsCiAga0V2ZW50V2luZG93RGVmRHJh
Z0hpbGl0ZSA9IGtFdmVudFdpbmRvd0RyYWdIaWxpdGUsCiAga0V2ZW50V2luZG93RGVmTW9kaWZp
ZWQgPSBrRXZlbnRXaW5kb3dNb2RpZmllZCwKICBrRXZlbnRXaW5kb3dEZWZTZXR1cFByb3h5RHJh
Z0ltYWdlID0ga0V2ZW50V2luZG93U2V0dXBQcm94eURyYWdJbWFnZSwKICBrRXZlbnRXaW5kb3dE
ZWZTdGF0ZUNoYW5nZWQgPSBrRXZlbnRXaW5kb3dTdGF0ZUNoYW5nZWQsCiAga0V2ZW50V2luZG93
RGVmTWVhc3VyZVRpdGxlID0ga0V2ZW50V2luZG93TWVhc3VyZVRpdGxlLAogIGtFdmVudFdpbmRv
d0RlZkRyYXdHcm93Qm94ID0ga0V2ZW50V2luZG93RHJhd0dyb3dCb3gsCiAga0V2ZW50V2luZG93
RGVmR2V0R3Jvd0ltYWdlUmVnaW9uID0ga0V2ZW50V2luZG93R2V0R3Jvd0ltYWdlUmVnaW9uCn07
CgoKZW51bSB7CiAga0V2ZW50Q2xhc3NFUFBDID0ga0V2ZW50Q2xhc3NBcHBsZUV2ZW50LAogIGtF
dmVudEhpZ2hMZXZlbEV2ZW50ID0ga0V2ZW50QXBwbGVFdmVudAp9OwoKZW51bSB7CiAga0V2ZW50
VXBkYXRlQWN0aXZlSW5wdXRBcmVhID0ga0V2ZW50VGV4dElucHV0VXBkYXRlQWN0aXZlSW5wdXRB
cmVhLAogIGtFdmVudFVuaWNvZGVGb3JLZXlFdmVudCA9IGtFdmVudFRleHRJbnB1dFVuaWNvZGVG
b3JLZXlFdmVudCwKICBrRXZlbnRPZmZzZXRUb1BvcyA9IGtFdmVudFRleHRJbnB1dE9mZnNldFRv
UG9zLAogIGtFdmVudFBvc1RvT2Zmc2V0ID0ga0V2ZW50VGV4dElucHV0UG9zVG9PZmZzZXQsCiAg
a0V2ZW50U2hvd0hpZGVCb3R0b21XaW5kb3cgPSBrRXZlbnRUZXh0SW5wdXRTaG93SGlkZUJvdHRv
bVdpbmRvdywKICBrRXZlbnRHZXRTZWxlY3RlZFRleHQgPSBrRXZlbnRUZXh0SW5wdXRHZXRTZWxl
Y3RlZFRleHQKfTsKCmVudW0gewogIGtFdmVudFByb2Nlc3NDb21tYW5kID0ga0V2ZW50Q29tbWFu
ZFByb2Nlc3MsCiAga0V2ZW50VGFibGV0UG9pbnRlciA9IGtFdmVudFRhYmxldFBvaW50Cn07CgoK
CgoKdHlwZWRlZiBVSW50MzIgRXZlbnRDbGFzc0lEOwp0eXBlZGVmIFVJbnQzMiBFdmVudENsYXNz
Owp0eXBlZGVmIFVJbnQzMiBFdmVudFR5cGU7CgplbnVtIHsKICBrTW91c2VUcmFja2luZ01vdXNl
UHJlc3NlZCA9IGtNb3VzZVRyYWNraW5nTW91c2VEb3duLAogIGtNb3VzZVRyYWNraW5nTW91c2VS
ZWxlYXNlZCA9IGtNb3VzZVRyYWNraW5nTW91c2VVcAp9OwoKZW51bSB7CiAga0V2ZW50Q29udHJv
bEdldFN1YnZpZXdGb3JNb3VzZUV2ZW50ID0ga0V2ZW50Q29udHJvbEludGVyY2VwdFN1YnZpZXdD
bGljawp9OwoKCiNwcmFnbWEgcGFjayhwb3ApCgoKfQojIDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0hJVmlldy5oIiAyIDMKCgoKCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9ISVRoZW1lLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUu
aCIgMwojZGVmaW5lIF9fSElUSEVNRV9fIAojIDQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJVGhlbWUuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKCgoKCgoK
CmVudW0gewoKCgoKCiAga0hJVGhlbWVPcmllbnRhdGlvbk5vcm1hbCA9IDAsCgoKCgoKICBrSElU
aGVtZU9yaWVudGF0aW9uSW52ZXJ0ZWQgPSAxCn07Cgp0eXBlZGVmIFVJbnQzMiBISVRoZW1lT3Jp
ZW50YXRpb247CgoKCgoKCmVudW0gewoKCgoKICBrSElUaGVtZVNwbGl0dGVyQWRvcm5tZW50Tm9u
ZSA9IDAsCgoKCgogIGtISVRoZW1lU3BsaXR0ZXJBZG9ybm1lbnRNZXRhbCA9IDEKfTsKCnR5cGVk
ZWYgVUludDMyIEhJVGhlbWVTcGxpdHRlckFkb3JubWVudDsKCgoKCgoKZW51bSB7CgoKCgogIGtI
SVRoZW1lR3Jvd0JveEtpbmROb3JtYWwgPSAwLAoKCgoKCgoKICBrSElUaGVtZUdyb3dCb3hLaW5k
Tm9uZSA9IDEKfTsKCnR5cGVkZWYgVUludDMyIEhJVGhlbWVHcm93Qm94S2luZDsKCgoKZW51bSB7
CgoKCgogIGtISVRoZW1lR3Jvd0JveFNpemVOb3JtYWwgPSAwLAoKCgoKICBrSElUaGVtZUdyb3dC
b3hTaXplU21hbGwgPSAxCn07Cgp0eXBlZGVmIFVJbnQzMiBISVRoZW1lR3Jvd0JveFNpemU7CgoK
CmVudW0gewoKCgoKICBrSElUaGVtZUdyb3VwQm94S2luZFByaW1hcnkgPSAwLAoKCgoKICBrSElU
aGVtZUdyb3VwQm94S2luZFNlY29uZGFyeSA9IDEsCiMgMTUzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0hJVGhlbWUuaCIgMwogIGtISVRoZW1lR3JvdXBCb3hLaW5kUHJpbWFyeU9wYXF1ZSA9
IDMsCiMgMTYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwogIGtISVRo
ZW1lR3JvdXBCb3hLaW5kU2Vjb25kYXJ5T3BhcXVlID0gNAp9OwoKdHlwZWRlZiBVSW50MzIgSElU
aGVtZUdyb3VwQm94S2luZDsKCgoKZW51bSB7CgoKCgoKCiAga0hJVGhlbWVIZWFkZXJLaW5kV2lu
ZG93ID0gMCwKCgoKCgoKICBrSElUaGVtZUhlYWRlcktpbmRMaXN0ID0gMQp9OwoKdHlwZWRlZiBV
SW50MzIgSElUaGVtZUhlYWRlcktpbmQ7CgoKCmVudW0gewoKCgoKICBrSElUaGVtZUZyYW1lVGV4
dEZpZWxkU3F1YXJlID0gMCwKICBrSElUaGVtZUZyYW1lTGlzdEJveCA9IDEsCgoKCgoKICBrSElU
aGVtZUZyYW1lVGV4dEZpZWxkUm91bmQgPSAxMDAwLAoKCgoKCiAga0hJVGhlbWVGcmFtZVRleHRG
aWVsZFJvdW5kU21hbGwgPSAxMDAxLAoKCgoKCiAga0hJVGhlbWVGcmFtZVRleHRGaWVsZFJvdW5k
TWluaSA9IDEwMDIKfTsKCnR5cGVkZWYgVUludDMyIEhJVGhlbWVGcmFtZUtpbmQ7CgoKCmVudW0g
ewoKCgoKCgogIGtISVRoZW1lTWVudVRpdGxlRHJhd0NvbmRlbnNlZCA9IDEgPDwgMAp9OwojIDI0
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKc3RydWN0IEhJU2Nyb2xs
QmFyVHJhY2tJbmZvIHsKCgoKCiAgVUludDMyIHZlcnNpb247CgoKCgogIFRoZW1lVHJhY2tFbmFi
bGVTdGF0ZSBlbmFibGVTdGF0ZTsKCgoKCiAgVGhlbWVUcmFja1ByZXNzU3RhdGUgcHJlc3NTdGF0
ZTsKCgoKCiAgQ0dGbG9hdCB2aWV3c2l6ZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSElTY3JvbGxCYXJU
cmFja0luZm8gSElTY3JvbGxCYXJUcmFja0luZm87CiMgMjc5ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0hJVGhlbWUuaCIgMwpzdHJ1Y3QgSElUaGVtZVRyYWNrRHJhd0luZm8gewoKCgoKICBV
SW50MzIgdmVyc2lvbjsKCgoKCiAgVGhlbWVUcmFja0tpbmQga2luZDsKCgoKCgogIEhJUmVjdCBi
b3VuZHM7CgoKCgogIFNJbnQzMiBtaW47CgoKCgogIFNJbnQzMiBtYXg7CgoKCgogIFNJbnQzMiB2
YWx1ZTsKCgoKCiAgVUludDMyIHJlc2VydmVkOwoKCgoKCgogIFRoZW1lVHJhY2tBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXM7CgoKCgoKICBUaGVtZVRyYWNrRW5hYmxlU3RhdGUgZW5hYmxlU3RhdGU7CgoK
CgogIFVJbnQ4IGZpbGxlcjE7CgogIHVuaW9uIHsKICAgIFNjcm9sbEJhclRyYWNrSW5mbyBzY3Jv
bGxiYXI7CiAgICBTbGlkZXJUcmFja0luZm8gc2xpZGVyOwogICAgUHJvZ3Jlc3NUcmFja0luZm8g
cHJvZ3Jlc3M7CiAgfSB0cmFja0luZm87Cn07CnR5cGVkZWYgc3RydWN0IEhJVGhlbWVUcmFja0Ry
YXdJbmZvIEhJVGhlbWVUcmFja0RyYXdJbmZvOwojIDM1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISVRoZW1lLmgiIDMKc3RydWN0IEhJVGhlbWVBbmltYXRpb25UaW1lSW5mbyB7CgoKCgoK
CgogIENGQWJzb2x1dGVUaW1lIHN0YXJ0OwoKCgoKCgoKICBDRkFic29sdXRlVGltZSBjdXJyZW50
Owp9Owp0eXBlZGVmIHN0cnVjdCBISVRoZW1lQW5pbWF0aW9uVGltZUluZm8gSElUaGVtZUFuaW1h
dGlvblRpbWVJbmZvOwojIDM4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgi
IDMKc3RydWN0IEhJVGhlbWVBbmltYXRpb25GcmFtZUluZm8gewoKCgoKCgogIFVJbnQzMiBpbmRl
eDsKfTsKdHlwZWRlZiBzdHJ1Y3QgSElUaGVtZUFuaW1hdGlvbkZyYW1lSW5mbyBISVRoZW1lQW5p
bWF0aW9uRnJhbWVJbmZvOwojIDQwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1l
LmgiIDMKc3RydWN0IEhJVGhlbWVCdXR0b25EcmF3SW5mbyB7CgoKCgogIFVJbnQzMiB2ZXJzaW9u
OwoKCgoKICBUaGVtZURyYXdTdGF0ZSBzdGF0ZTsKCgoKCiAgVGhlbWVCdXR0b25LaW5kIGtpbmQ7
CgoKCgogIFRoZW1lQnV0dG9uVmFsdWUgdmFsdWU7CgoKCgoKICBUaGVtZUJ1dHRvbkFkb3JubWVu
dCBhZG9ybm1lbnQ7CiAgdW5pb24gewogICAgSElUaGVtZUFuaW1hdGlvblRpbWVJbmZvIHRpbWU7
CiAgICBISVRoZW1lQW5pbWF0aW9uRnJhbWVJbmZvIGZyYW1lOwogIH0gYW5pbWF0aW9uOwp9Owp0
eXBlZGVmIHN0cnVjdCBISVRoZW1lQnV0dG9uRHJhd0luZm8gSElUaGVtZUJ1dHRvbkRyYXdJbmZv
Owp0eXBlZGVmIEhJVGhlbWVCdXR0b25EcmF3SW5mbyAqIEhJVGhlbWVCdXR0b25EcmF3SW5mb1B0
cjsKIyA0NDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCnN0cnVjdCBI
SVRoZW1lU3BsaXR0ZXJEcmF3SW5mbyB7CgoKCgogIFVJbnQzMiB2ZXJzaW9uOwoKCgoKICBUaGVt
ZURyYXdTdGF0ZSBzdGF0ZTsKCgoKCgogIEhJVGhlbWVTcGxpdHRlckFkb3JubWVudCBhZG9ybm1l
bnQ7Cn07CnR5cGVkZWYgc3RydWN0IEhJVGhlbWVTcGxpdHRlckRyYXdJbmZvIEhJVGhlbWVTcGxp
dHRlckRyYXdJbmZvOwp0eXBlZGVmIEhJVGhlbWVTcGxpdHRlckRyYXdJbmZvICogSElUaGVtZVNw
bGl0dGVyRHJhd0luZm9QdHI7CgoKCmVudW0gewoKCgoKICBrSElUaGVtZVRhYkFkb3JubWVudE5v
bmUgPSAwLAoKCgoKICBrSElUaGVtZVRhYkFkb3JubWVudEZvY3VzID0gKDEgPDwgMiksCgoKCgoK
CgogIGtISVRoZW1lVGFiQWRvcm5tZW50TGVhZGluZ1NlcGFyYXRvciA9ICgxIDw8IDMpLAoKCgoK
CgoKICBrSElUaGVtZVRhYkFkb3JubWVudFRyYWlsaW5nU2VwYXJhdG9yID0gKDEgPDwgNCkKfTsK
CnR5cGVkZWYgVUludDMyIEhJVGhlbWVUYWJBZG9ybm1lbnQ7CgoKCgoKCmVudW0gewoKCgoKICBr
SElUaGVtZVRhYlNpemVOb3JtYWwgPSAwLAoKCgoKICBrSElUaGVtZVRhYlNpemVTbWFsbCA9IDEs
CgoKCgogIGtISVRoZW1lVGFiU2l6ZU1pbmkgPSAzCn07Cgp0eXBlZGVmIFVJbnQzMiBISVRoZW1l
VGFiU2l6ZTsKCgoKCgoKZW51bSB7CgoKCgogIGtISVRoZW1lVGFiUG9zaXRpb25GaXJzdCA9IDAs
CgoKCgogIGtISVRoZW1lVGFiUG9zaXRpb25NaWRkbGUgPSAxLAoKCgoKICBrSElUaGVtZVRhYlBv
c2l0aW9uTGFzdCA9IDIsCgoKCgoKCgogIGtISVRoZW1lVGFiUG9zaXRpb25Pbmx5ID0gMwp9OwoK
dHlwZWRlZiBVSW50MzIgSElUaGVtZVRhYlBvc2l0aW9uOwoKCgoKCmVudW0gewogIGtISVRoZW1l
VGFiS2luZE5vcm1hbCA9IDAKfTsKCnR5cGVkZWYgVUludDMyIEhJVGhlbWVUYWJLaW5kOwojIDU3
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKc3RydWN0IEhJVGhlbWVU
YWJEcmF3SW5mbyB7CgoKCgogIFVJbnQzMiB2ZXJzaW9uOwoKCgoKICBUaGVtZVRhYlN0eWxlIHN0
eWxlOwoKCgoKCiAgVGhlbWVUYWJEaXJlY3Rpb24gZGlyZWN0aW9uOwoKCgoKICBISVRoZW1lVGFi
U2l6ZSBzaXplOwoKCgoKCiAgSElUaGVtZVRhYkFkb3JubWVudCBhZG9ybm1lbnQ7CgoKCgogIEhJ
VGhlbWVUYWJLaW5kIGtpbmQ7CgoKCgogIEhJVGhlbWVUYWJQb3NpdGlvbiBwb3NpdGlvbjsKfTsK
dHlwZWRlZiBzdHJ1Y3QgSElUaGVtZVRhYkRyYXdJbmZvIEhJVGhlbWVUYWJEcmF3SW5mbzsKIyA2
MzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCnN0cnVjdCBISVRoZW1l
VGFiRHJhd0luZm9WZXJzaW9uWmVybyB7CiAgVUludDMyIHZlcnNpb247CiAgVGhlbWVUYWJTdHls
ZSBzdHlsZTsKICBUaGVtZVRhYkRpcmVjdGlvbiBkaXJlY3Rpb247CiAgSElUaGVtZVRhYlNpemUg
c2l6ZTsKICBISVRoZW1lVGFiQWRvcm5tZW50IGFkb3JubWVudDsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
SElUaGVtZVRhYkRyYXdJbmZvVmVyc2lvblplcm8gSElUaGVtZVRhYkRyYXdJbmZvVmVyc2lvblpl
cm87CgoKCgoKZW51bSB7CiAga0hJVGhlbWVUYWJQYW5lQWRvcm5tZW50Tm9ybWFsID0gMAp9OwoK
CnR5cGVkZWYgVUludDMyIEhJVGhlbWVUYWJQYW5lQWRvcm5tZW50OwojIDY2MSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKc3RydWN0IEhJVGhlbWVUYWJQYW5lRHJhd0lu
Zm8gewoKCgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCiAgVGhlbWVEcmF3U3RhdGUgc3RhdGU7CgoK
CgoKICBUaGVtZVRhYkRpcmVjdGlvbiBkaXJlY3Rpb247CgoKCgogIEhJVGhlbWVUYWJTaXplIHNp
emU7CgoKCgoKICBISVRoZW1lVGFiS2luZCBraW5kOwoKCgoKCiAgSElUaGVtZVRhYlBhbmVBZG9y
bm1lbnQgYWRvcm5tZW50Owp9Owp0eXBlZGVmIHN0cnVjdCBISVRoZW1lVGFiUGFuZURyYXdJbmZv
IEhJVGhlbWVUYWJQYW5lRHJhd0luZm87CiMgNzA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJVGhlbWUuaCIgMwpzdHJ1Y3QgSElUaGVtZVRhYlBhbmVEcmF3SW5mb1ZlcnNpb25aZXJvIHsK
ICBVSW50MzIgdmVyc2lvbjsKICBUaGVtZURyYXdTdGF0ZSBzdGF0ZTsKICBUaGVtZVRhYkRpcmVj
dGlvbiBkaXJlY3Rpb247CiAgSElUaGVtZVRhYlNpemUgc2l6ZTsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
SElUaGVtZVRhYlBhbmVEcmF3SW5mb1ZlcnNpb25aZXJvIEhJVGhlbWVUYWJQYW5lRHJhd0luZm9W
ZXJzaW9uWmVybzsKCgoKZW51bSB7CgoKCgoKICBrSElUaGVtZU1lbnVEcmF3SW5mb1ZlcnNpb25a
ZXJvID0gMCwKCgoKCgoKICBrSElUaGVtZU1lbnVEcmF3SW5mb1ZlcnNpb25PbmUgPSAxMDAxCn07
CiMgNzQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpzdHJ1Y3QgSElU
aGVtZU1lbnVEcmF3SW5mbyB7CgoKCgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCiAgVGhlbWVNZW51
VHlwZSBtZW51VHlwZTsKCgoKCiAgdW5zaWduZWQgbG9uZyByZXNlcnZlZDE7CgoKCgogIENHRmxv
YXQgcmVzZXJ2ZWQyOwoKCgoKCgogIFVJbnQzMiBtZW51RGlyZWN0aW9uOwoKCgoKICBDR0Zsb2F0
IHJlc2VydmVkMzsKCgoKCiAgQ0dGbG9hdCByZXNlcnZlZDQ7Cn07CnR5cGVkZWYgc3RydWN0IEhJ
VGhlbWVNZW51RHJhd0luZm8gSElUaGVtZU1lbnVEcmF3SW5mbzsKdHlwZWRlZiBISVRoZW1lTWVu
dURyYXdJbmZvICogSElUaGVtZU1lbnVEcmF3SW5mb1B0cjsKIyA3OTkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCnN0cnVjdCBISVRoZW1lTWVudURyYXdJbmZvVmVyc2lv
blplcm8gewoKCgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCiAgVGhlbWVNZW51VHlwZSBtZW51VHlw
ZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSElUaGVtZU1lbnVEcmF3SW5mb1ZlcnNpb25aZXJvIEhJVGhl
bWVNZW51RHJhd0luZm9WZXJzaW9uWmVybzsKdHlwZWRlZiBISVRoZW1lTWVudURyYXdJbmZvVmVy
c2lvblplcm8gKiBISVRoZW1lTWVudURyYXdJbmZvVmVyc2lvblplcm9QdHI7CiMgODI0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpzdHJ1Y3QgSElUaGVtZU1lbnVJdGVt
RHJhd0luZm8gewoKCgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCgogIFRoZW1lTWVudUl0ZW1UeXBl
IGl0ZW1UeXBlOwoKCgoKICBUaGVtZU1lbnVTdGF0ZSBzdGF0ZTsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
SElUaGVtZU1lbnVJdGVtRHJhd0luZm8gSElUaGVtZU1lbnVJdGVtRHJhd0luZm87CnR5cGVkZWYg
SElUaGVtZU1lbnVJdGVtRHJhd0luZm8gKiBISVRoZW1lTWVudUl0ZW1EcmF3SW5mb1B0cjsKIyA4
NTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCnN0cnVjdCBISVRoZW1l
RnJhbWVEcmF3SW5mbyB7CgoKCgogIFVJbnQzMiB2ZXJzaW9uOwoKCgoKICBISVRoZW1lRnJhbWVL
aW5kIGtpbmQ7CgoKCgogIFRoZW1lRHJhd1N0YXRlIHN0YXRlOwoKCgoKCiAgQm9vbGVhbiBpc0Zv
Y3VzZWQ7Cn07CnR5cGVkZWYgc3RydWN0IEhJVGhlbWVGcmFtZURyYXdJbmZvIEhJVGhlbWVGcmFt
ZURyYXdJbmZvOwp0eXBlZGVmIEhJVGhlbWVGcmFtZURyYXdJbmZvICogSElUaGVtZUZyYW1lRHJh
d0luZm9QdHI7CiMgODkxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpz
dHJ1Y3QgSElUaGVtZUdyb3VwQm94RHJhd0luZm8gewoKCgoKICBVSW50MzIgdmVyc2lvbjsKCgoK
CiAgVGhlbWVEcmF3U3RhdGUgc3RhdGU7CgoKCgoKICBISVRoZW1lR3JvdXBCb3hLaW5kIGtpbmQ7
Cn07CnR5cGVkZWYgc3RydWN0IEhJVGhlbWVHcm91cEJveERyYXdJbmZvIEhJVGhlbWVHcm91cEJv
eERyYXdJbmZvOwp0eXBlZGVmIEhJVGhlbWVHcm91cEJveERyYXdJbmZvICogSElUaGVtZUdyb3Vw
Qm94RHJhd0luZm9QdHI7CiMgOTIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUu
aCIgMwpzdHJ1Y3QgSElUaGVtZUdyYWJiZXJEcmF3SW5mbyB7CgoKCgogIFVJbnQzMiB2ZXJzaW9u
OwoKCgoKICBUaGVtZURyYXdTdGF0ZSBzdGF0ZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSElUaGVtZUdy
YWJiZXJEcmF3SW5mbyBISVRoZW1lR3JhYmJlckRyYXdJbmZvOwp0eXBlZGVmIEhJVGhlbWVHcmFi
YmVyRHJhd0luZm8gKiBISVRoZW1lR3JhYmJlckRyYXdJbmZvUHRyOwojIDk0NyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKc3RydWN0IEhJVGhlbWVQbGFjYXJkRHJhd0lu
Zm8gewoKCgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCiAgVGhlbWVEcmF3U3RhdGUgc3RhdGU7Cn07
CnR5cGVkZWYgc3RydWN0IEhJVGhlbWVQbGFjYXJkRHJhd0luZm8gSElUaGVtZVBsYWNhcmREcmF3
SW5mbzsKdHlwZWRlZiBISVRoZW1lUGxhY2FyZERyYXdJbmZvICogSElUaGVtZVBsYWNhcmREcmF3
SW5mb1B0cjsKIyA5NzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCnN0
cnVjdCBISVRoZW1lSGVhZGVyRHJhd0luZm8gewoKCgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCiAg
VGhlbWVEcmF3U3RhdGUgc3RhdGU7CgoKCgogIEhJVGhlbWVIZWFkZXJLaW5kIGtpbmQ7Cn07CnR5
cGVkZWYgc3RydWN0IEhJVGhlbWVIZWFkZXJEcmF3SW5mbyBISVRoZW1lSGVhZGVyRHJhd0luZm87
CnR5cGVkZWYgSElUaGVtZUhlYWRlckRyYXdJbmZvICogSElUaGVtZUhlYWRlckRyYXdJbmZvUHRy
OwojIDEwMDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCnN0cnVjdCBI
SVRoZW1lTWVudUJhckRyYXdJbmZvIHsKCgoKCiAgVUludDMyIHZlcnNpb247CgoKCgogIFRoZW1l
TWVudUJhclN0YXRlIHN0YXRlOwoKCgoKICBPcHRpb25CaXRzIGF0dHJpYnV0ZXM7Cn07CnR5cGVk
ZWYgc3RydWN0IEhJVGhlbWVNZW51QmFyRHJhd0luZm8gSElUaGVtZU1lbnVCYXJEcmF3SW5mbzsK
dHlwZWRlZiBISVRoZW1lTWVudUJhckRyYXdJbmZvICogSElUaGVtZU1lbnVCYXJEcmF3SW5mb1B0
cjsKIyAxMDMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpzdHJ1Y3Qg
SElUaGVtZU1lbnVUaXRsZURyYXdJbmZvIHsKCgoKCiAgVUludDMyIHZlcnNpb247CgoKCgogIFRo
ZW1lTWVudVN0YXRlIHN0YXRlOwoKCgoKCiAgT3B0aW9uQml0cyBhdHRyaWJ1dGVzOwojIDEwNTgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCiAgQ0dGbG9hdCBjb25kZW5z
ZWRUaXRsZUV4dHJhOwp9Owp0eXBlZGVmIHN0cnVjdCBISVRoZW1lTWVudVRpdGxlRHJhd0luZm8g
SElUaGVtZU1lbnVUaXRsZURyYXdJbmZvOwp0eXBlZGVmIEhJVGhlbWVNZW51VGl0bGVEcmF3SW5m
byAqIEhJVGhlbWVNZW51VGl0bGVEcmF3SW5mb1B0cjsKIyAxMDczICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpzdHJ1Y3QgSElUaGVtZVRpY2tNYXJrRHJhd0luZm8gewoK
CgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCiAgVGhlbWVEcmF3U3RhdGUgc3RhdGU7Cn07CnR5cGVk
ZWYgc3RydWN0IEhJVGhlbWVUaWNrTWFya0RyYXdJbmZvIEhJVGhlbWVUaWNrTWFya0RyYXdJbmZv
Owp0eXBlZGVmIEhJVGhlbWVUaWNrTWFya0RyYXdJbmZvICogSElUaGVtZVRpY2tNYXJrRHJhd0lu
Zm9QdHI7CiMgMTA5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKc3Ry
dWN0IEhJVGhlbWVXaW5kb3dEcmF3SW5mbyB7CgoKCgogIFVJbnQzMiB2ZXJzaW9uOwoKCgoKCiAg
VGhlbWVEcmF3U3RhdGUgc3RhdGU7CgoKCgogIFRoZW1lV2luZG93VHlwZSB3aW5kb3dUeXBlOwoK
CgoKICBUaGVtZVdpbmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRlczsKCgoKCiAgQ0dGbG9hdCB0aXRs
ZUhlaWdodDsKCgoKCiAgQ0dGbG9hdCB0aXRsZVdpZHRoOwp9Owp0eXBlZGVmIHN0cnVjdCBISVRo
ZW1lV2luZG93RHJhd0luZm8gSElUaGVtZVdpbmRvd0RyYXdJbmZvOwp0eXBlZGVmIEhJVGhlbWVX
aW5kb3dEcmF3SW5mbyAqIEhJVGhlbWVXaW5kb3dEcmF3SW5mb1B0cjsKIyAxMTQ0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpzdHJ1Y3QgSElUaGVtZVdpbmRvd1dpZGdl
dERyYXdJbmZvIHsKCgoKCiAgVUludDMyIHZlcnNpb247CgoKCgoKICBUaGVtZURyYXdTdGF0ZSB3
aWRnZXRTdGF0ZTsKCgoKCgogIFRoZW1lVGl0bGVCYXJXaWRnZXQgd2lkZ2V0VHlwZTsKCgoKCgog
IFRoZW1lRHJhd1N0YXRlIHdpbmRvd1N0YXRlOwoKCgoKICBUaGVtZVdpbmRvd1R5cGUgd2luZG93
VHlwZTsKCgoKCiAgVGhlbWVXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CgoKCgogIENHRmxv
YXQgdGl0bGVIZWlnaHQ7CgoKCgogIENHRmxvYXQgdGl0bGVXaWR0aDsKfTsKdHlwZWRlZiBzdHJ1
Y3QgSElUaGVtZVdpbmRvd1dpZGdldERyYXdJbmZvIEhJVGhlbWVXaW5kb3dXaWRnZXREcmF3SW5m
bzsKdHlwZWRlZiBISVRoZW1lV2luZG93V2lkZ2V0RHJhd0luZm8gKiBISVRoZW1lV2luZG93V2lk
Z2V0RHJhd0luZm9QdHI7CiMgMTIwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1l
LmgiIDMKc3RydWN0IEhJVGhlbWVTZXBhcmF0b3JEcmF3SW5mbyB7CgoKCgogIFVJbnQzMiB2ZXJz
aW9uOwoKCgoKICBUaGVtZURyYXdTdGF0ZSBzdGF0ZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgSElUaGVt
ZVNlcGFyYXRvckRyYXdJbmZvIEhJVGhlbWVTZXBhcmF0b3JEcmF3SW5mbzsKdHlwZWRlZiBISVRo
ZW1lU2VwYXJhdG9yRHJhd0luZm8gKiBISVRoZW1lU2VwYXJhdG9yRHJhd0luZm9QdHI7CiMgMTIy
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKc3RydWN0IEhJVGhlbWVT
Y3JvbGxCYXJEZWxpbWl0ZXJzRHJhd0luZm8gewoKCgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCiAg
VGhlbWVEcmF3U3RhdGUgc3RhdGU7CgoKCgoKICBUaGVtZVdpbmRvd1R5cGUgd2luZG93VHlwZTsK
CgoKCgogIFRoZW1lV2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwp9Owp0eXBlZGVmIHN0cnVj
dCBISVRoZW1lU2Nyb2xsQmFyRGVsaW1pdGVyc0RyYXdJbmZvIEhJVGhlbWVTY3JvbGxCYXJEZWxp
bWl0ZXJzRHJhd0luZm87CnR5cGVkZWYgSElUaGVtZVNjcm9sbEJhckRlbGltaXRlcnNEcmF3SW5m
byAqIEhJVGhlbWVTY3JvbGxCYXJEZWxpbWl0ZXJzRHJhd0luZm9QdHI7CiMgMTI2NCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKc3RydWN0IEhJVGhlbWVDaGFzaW5nQXJy
b3dzRHJhd0luZm8gewoKCgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCiAgVGhlbWVEcmF3U3RhdGUg
c3RhdGU7CgoKCgoKICBVSW50MzIgaW5kZXg7Cn07CnR5cGVkZWYgc3RydWN0IEhJVGhlbWVDaGFz
aW5nQXJyb3dzRHJhd0luZm8gSElUaGVtZUNoYXNpbmdBcnJvd3NEcmF3SW5mbzsKdHlwZWRlZiBI
SVRoZW1lQ2hhc2luZ0Fycm93c0RyYXdJbmZvICogSElUaGVtZUNoYXNpbmdBcnJvd3NEcmF3SW5m
b1B0cjsKIyAxMjk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpzdHJ1
Y3QgSElUaGVtZVBvcHVwQXJyb3dEcmF3SW5mbyB7CgoKCgogIFVJbnQzMiB2ZXJzaW9uOwoKCgoK
ICBUaGVtZURyYXdTdGF0ZSBzdGF0ZTsKCgoKCgogIFRoZW1lQXJyb3dPcmllbnRhdGlvbiBvcmll
bnRhdGlvbjsKCgoKCiAgVGhlbWVQb3B1cEFycm93U2l6ZSBzaXplOwp9Owp0eXBlZGVmIHN0cnVj
dCBISVRoZW1lUG9wdXBBcnJvd0RyYXdJbmZvIEhJVGhlbWVQb3B1cEFycm93RHJhd0luZm87CnR5
cGVkZWYgSElUaGVtZVBvcHVwQXJyb3dEcmF3SW5mbyAqIEhJVGhlbWVQb3B1cEFycm93RHJhd0lu
Zm9QdHI7CiMgMTMzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKc3Ry
dWN0IEhJVGhlbWVHcm93Qm94RHJhd0luZm8gewoKCgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCiAg
VGhlbWVEcmF3U3RhdGUgc3RhdGU7CgoKCgogIEhJVGhlbWVHcm93Qm94S2luZCBraW5kOwoKCgoK
CiAgVGhlbWVHcm93RGlyZWN0aW9uIGRpcmVjdGlvbjsKCgoKCiAgSElUaGVtZUdyb3dCb3hTaXpl
IHNpemU7Cn07CnR5cGVkZWYgc3RydWN0IEhJVGhlbWVHcm93Qm94RHJhd0luZm8gSElUaGVtZUdy
b3dCb3hEcmF3SW5mbzsKdHlwZWRlZiBISVRoZW1lR3Jvd0JveERyYXdJbmZvICogSElUaGVtZUdy
b3dCb3hEcmF3SW5mb1B0cjsKCgoKCgoKCnN0cnVjdCBISVRoZW1lQmFja2dyb3VuZERyYXdJbmZv
IHsKCgoKCiAgVUludDMyIHZlcnNpb247CgoKCgogIFRoZW1lRHJhd1N0YXRlIHN0YXRlOwoKCgoK
ICBUaGVtZUJhY2tncm91bmRLaW5kIGtpbmQ7Cn07CnR5cGVkZWYgc3RydWN0IEhJVGhlbWVCYWNr
Z3JvdW5kRHJhd0luZm8gSElUaGVtZUJhY2tncm91bmREcmF3SW5mbzsKdHlwZWRlZiBISVRoZW1l
QmFja2dyb3VuZERyYXdJbmZvICogSElUaGVtZUJhY2tncm91bmREcmF3SW5mb1B0cjsKIyAxNDMw
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMK
SElUaGVtZURyYXdCdXR0b24oCiAgY29uc3QgSElSZWN0ICogaW5Cb3VuZHMsCiAgY29uc3QgSElU
aGVtZUJ1dHRvbkRyYXdJbmZvICogaW5EcmF3SW5mbywKICBDR0NvbnRleHRSZWYgaW5Db250ZXh0
LAogIEhJVGhlbWVPcmllbnRhdGlvbiBpbk9yaWVudGF0aW9uLAogIEhJUmVjdCAqIG91dExhYmVs
UmVjdCkgOwojIDE0NzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCmV4
dGVybiBPU1N0YXR1cwpISVRoZW1lR2V0QnV0dG9uU2hhcGUoCiAgY29uc3QgSElSZWN0ICogaW5C
b3VuZHMsCiAgY29uc3QgSElUaGVtZUJ1dHRvbkRyYXdJbmZvICogaW5EcmF3SW5mbywKICBISVNo
YXBlUmVmICogb3V0U2hhcGUpIDsKIyAxNTA1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJ
VGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZUdldEJ1dHRvbkNvbnRlbnRCb3VuZHMo
CiAgY29uc3QgSElSZWN0ICogaW5Cb3VuZHMsCiAgY29uc3QgSElUaGVtZUJ1dHRvbkRyYXdJbmZv
ICogaW5EcmF3SW5mbywKICBISVJlY3QgKiBvdXRCb3VuZHMpIDsKIyAxNTM5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZUdldEJ1
dHRvbkJhY2tncm91bmRCb3VuZHMoCiAgY29uc3QgSElSZWN0ICogaW5Cb3VuZHMsCiAgY29uc3Qg
SElUaGVtZUJ1dHRvbkRyYXdJbmZvICogaW5EcmF3SW5mbywKICBISVJlY3QgKiBvdXRCb3VuZHMp
IDsKIyAxNTgwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4g
T1NTdGF0dXMKSElUaGVtZURyYXdDaGFzaW5nQXJyb3dzKAogIGNvbnN0IEhJUmVjdCAqIGluQm91
bmRzLAogIGNvbnN0IEhJVGhlbWVDaGFzaW5nQXJyb3dzRHJhd0luZm8gKiBpbkRyYXdJbmZvLAog
IENHQ29udGV4dFJlZiBpbkNvbnRleHQsCiAgSElUaGVtZU9yaWVudGF0aW9uIGluT3JpZW50YXRp
b24pIDsKIyAxNjE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRl
cm4gT1NTdGF0dXMKSElUaGVtZURyYXdQb3B1cEFycm93KAogIGNvbnN0IEhJUmVjdCAqIGluQm91
bmRzLAogIGNvbnN0IEhJVGhlbWVQb3B1cEFycm93RHJhd0luZm8gKiBpbkRyYXdJbmZvLAogIENH
Q29udGV4dFJlZiBpbkNvbnRleHQsCiAgSElUaGVtZU9yaWVudGF0aW9uIGluT3JpZW50YXRpb24p
IDsKIyAxNjU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4g
T1NTdGF0dXMKSElUaGVtZURyYXdNZW51QmFyQmFja2dyb3VuZCgKICBjb25zdCBISVJlY3QgKiBp
bkJvdW5kcywKICBjb25zdCBISVRoZW1lTWVudUJhckRyYXdJbmZvICogaW5EcmF3SW5mbywKICBD
R0NvbnRleHRSZWYgaW5Db250ZXh0LAogIEhJVGhlbWVPcmllbnRhdGlvbiBpbk9yaWVudGF0aW9u
KSA7CiMgMTcxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzCkhJVGhlbWVEcmF3TWVudVRpdGxlKAogIGNvbnN0IEhJUmVjdCAqIGluTWVudUJh
clJlY3QsCiAgY29uc3QgSElSZWN0ICogaW5UaXRsZVJlY3QsCiAgY29uc3QgSElUaGVtZU1lbnVU
aXRsZURyYXdJbmZvICogaW5EcmF3SW5mbywKICBDR0NvbnRleHRSZWYgaW5Db250ZXh0LAogIEhJ
VGhlbWVPcmllbnRhdGlvbiBpbk9yaWVudGF0aW9uLAogIEhJUmVjdCAqIG91dExhYmVsUmVjdCkg
OwojIDE3NTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCmV4dGVybiBP
U1N0YXR1cwpISVRoZW1lRHJhd01lbnVCYWNrZ3JvdW5kKAogIGNvbnN0IEhJUmVjdCAqIGluTWVu
dVJlY3QsCiAgY29uc3QgSElUaGVtZU1lbnVEcmF3SW5mbyAqIGluTWVudURyYXdJbmZvLAogIENH
Q29udGV4dFJlZiBpbkNvbnRleHQsCiAgSElUaGVtZU9yaWVudGF0aW9uIGluT3JpZW50YXRpb24p
IDsKIyAxNzk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4g
T1NTdGF0dXMKSElUaGVtZURyYXdNZW51SXRlbSgKICBjb25zdCBISVJlY3QgKiBpbk1lbnVSZWN0
LAogIGNvbnN0IEhJUmVjdCAqIGluSXRlbVJlY3QsCiAgY29uc3QgSElUaGVtZU1lbnVJdGVtRHJh
d0luZm8gKiBpbkl0ZW1EcmF3SW5mbywKICBDR0NvbnRleHRSZWYgaW5Db250ZXh0LAogIEhJVGhl
bWVPcmllbnRhdGlvbiBpbk9yaWVudGF0aW9uLAogIEhJUmVjdCAqIG91dENvbnRlbnRSZWN0KSA7
CiMgMTg0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCkhJVGhlbWVEcmF3TWVudVNlcGFyYXRvcigKICBjb25zdCBISVJlY3QgKiBpbk1lbnVS
ZWN0LAogIGNvbnN0IEhJUmVjdCAqIGluSXRlbVJlY3QsCiAgY29uc3QgSElUaGVtZU1lbnVJdGVt
RHJhd0luZm8gKiBpbkl0ZW1EcmF3SW5mbywKICBDR0NvbnRleHRSZWYgaW5Db250ZXh0LAogIEhJ
VGhlbWVPcmllbnRhdGlvbiBpbk9yaWVudGF0aW9uKSA7CiMgMTg4MiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJVGhlbWVHZXRNZW51QmFj
a2dyb3VuZFNoYXBlKAogIGNvbnN0IEhJUmVjdCAqIGluTWVudVJlY3QsCiAgY29uc3QgSElUaGVt
ZU1lbnVEcmF3SW5mbyAqIGluTWVudURyYXdJbmZvLAogIEhJU2hhcGVSZWYgKiBvdXRTaGFwZSkg
OwojIDE4OTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCmVudW0gewoK
CgoKICBrSElUaGVtZVNlZ21lbnRQb3NpdGlvbkZpcnN0ID0gMCwKCgoKCiAga0hJVGhlbWVTZWdt
ZW50UG9zaXRpb25NaWRkbGUgPSAxLAoKCgoKICBrSElUaGVtZVNlZ21lbnRQb3NpdGlvbkxhc3Qg
PSAyLAoKCgoKCgoKICBrSElUaGVtZVNlZ21lbnRQb3NpdGlvbk9ubHkgPSAzCn07Cgp0eXBlZGVm
IFVJbnQzMiBISVRoZW1lU2VnbWVudFBvc2l0aW9uOwoKCgoKCgplbnVtIHsKCgoKCgogIGtISVRo
ZW1lU2VnbWVudEtpbmROb3JtYWwgPSAwLAoKCgoKICBrSElUaGVtZVNlZ21lbnRLaW5kVGV4dHVy
ZWQgPSAxLAoKCgoKCiAga0hJVGhlbWVTZWdtZW50S2luZEluc2V0ID0ga0hJVGhlbWVTZWdtZW50
S2luZFRleHR1cmVkCn07Cgp0eXBlZGVmIFVJbnQzMiBISVRoZW1lU2VnbWVudEtpbmQ7CgoKCgoK
ZW51bSB7CgoKCgogIGtISVRoZW1lU2VnbWVudFNpemVOb3JtYWwgPSAwLAoKCgoKICBrSElUaGVt
ZVNlZ21lbnRTaXplU21hbGwgPSAxLAoKCgoKICBrSElUaGVtZVNlZ21lbnRTaXplTWluaSA9IDMK
fTsKCnR5cGVkZWYgVUludDMyIEhJVGhlbWVTZWdtZW50U2l6ZTsKCgoKZW51bSB7CgoKCgogIGtI
SVRoZW1lU2VnbWVudEFkb3JubWVudE5vbmUgPSAwLAoKCgoKICBrSElUaGVtZVNlZ21lbnRBZG9y
bm1lbnRGb2N1cyA9ICgxIDw8IDIpLAoKCgoKCgogIGtISVRoZW1lU2VnbWVudEFkb3JubWVudExl
YWRpbmdTZXBhcmF0b3IgPSAoMSA8PCAzKSwKCgoKCgoKICBrSElUaGVtZVNlZ21lbnRBZG9ybm1l
bnRUcmFpbGluZ1NlcGFyYXRvciA9ICgxIDw8IDQpCn07Cgp0eXBlZGVmIFVJbnQzMiBISVRoZW1l
U2VnbWVudEFkb3JubWVudDsKIyAyMDE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhl
bWUuaCIgMwpzdHJ1Y3QgSElUaGVtZVNlZ21lbnREcmF3SW5mbyB7CgoKCgogIFVJbnQzMiB2ZXJz
aW9uOwoKCgoKICBUaGVtZURyYXdTdGF0ZSBzdGF0ZTsKCgoKCiAgVGhlbWVCdXR0b25WYWx1ZSB2
YWx1ZTsKICBISVRoZW1lU2VnbWVudFNpemUgc2l6ZTsKCgoKCiAgSElUaGVtZVNlZ21lbnRLaW5k
IGtpbmQ7CgoKCgogIEhJVGhlbWVTZWdtZW50UG9zaXRpb24gcG9zaXRpb247CgoKCgogIEhJVGhl
bWVTZWdtZW50QWRvcm5tZW50IGFkb3JubWVudDsKfTsKdHlwZWRlZiBzdHJ1Y3QgSElUaGVtZVNl
Z21lbnREcmF3SW5mbyBISVRoZW1lU2VnbWVudERyYXdJbmZvOwp0eXBlZGVmIEhJVGhlbWVTZWdt
ZW50RHJhd0luZm8gKiBISVRoZW1lU2VnbWVudERyYXdJbmZvUHRyOwojIDIwODkgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpISVRoZW1lRHJh
d1NlZ21lbnQoCiAgY29uc3QgSElSZWN0ICogaW5Cb3VuZHMsCiAgY29uc3QgSElUaGVtZVNlZ21l
bnREcmF3SW5mbyAqIGluRHJhd0luZm8sCiAgQ0dDb250ZXh0UmVmIGluQ29udGV4dCwKICBISVRo
ZW1lT3JpZW50YXRpb24gaW5PcmllbnRhdGlvbikgOwojIDIxMjkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvSElUaGVtZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpISVRoZW1lRHJhd1RhYlBhbmUo
CiAgY29uc3QgSElSZWN0ICogaW5SZWN0LAogIGNvbnN0IEhJVGhlbWVUYWJQYW5lRHJhd0luZm8g
KiBpbkRyYXdJbmZvLAogIENHQ29udGV4dFJlZiBpbkNvbnRleHQsCiAgSElUaGVtZU9yaWVudGF0
aW9uIGluT3JpZW50YXRpb24pIDsKIyAyMTY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJ
VGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZURyYXdUYWIoCiAgY29uc3QgSElSZWN0
ICogaW5SZWN0LAogIGNvbnN0IEhJVGhlbWVUYWJEcmF3SW5mbyAqIGluRHJhd0luZm8sCiAgQ0dD
b250ZXh0UmVmIGluQ29udGV4dCwKICBISVRoZW1lT3JpZW50YXRpb24gaW5PcmllbnRhdGlvbiwK
ICBISVJlY3QgKiBvdXRMYWJlbFJlY3QpIDsKIyAyMjE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZUdldFRhYlBhbmVEcmF3U2hh
cGUoCiAgY29uc3QgSElSZWN0ICogaW5SZWN0LAogIFRoZW1lVGFiRGlyZWN0aW9uIGluRGlyZWN0
aW9uLAogIEhJVGhlbWVUYWJTaXplIGluVGFiU2l6ZSwKICBISVNoYXBlUmVmICogb3V0U2hhcGUp
IDsKIyAyMjU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4g
T1NTdGF0dXMKSElUaGVtZUdldFRhYlBhbmVDb250ZW50U2hhcGUoCiAgY29uc3QgSElSZWN0ICog
aW5SZWN0LAogIFRoZW1lVGFiRGlyZWN0aW9uIGluRGlyZWN0aW9uLAogIEhJVGhlbWVUYWJTaXpl
IGluVGFiU2l6ZSwKICBISVNoYXBlUmVmICogb3V0U2hhcGUpIDsKIyAyMjk4ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZUdldFRh
YkRyYXdTaGFwZSgKICBjb25zdCBISVJlY3QgKiBpblJlY3QsCiAgY29uc3QgSElUaGVtZVRhYkRy
YXdJbmZvICogaW5EcmF3SW5mbywKICBISVNoYXBlUmVmICogb3V0U2hhcGUpIDsKIyAyMzM3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElU
aGVtZUdldFRhYlNoYXBlKAogIGNvbnN0IEhJUmVjdCAqIGluUmVjdCwKICBjb25zdCBISVRoZW1l
VGFiRHJhd0luZm8gKiBpbkRyYXdJbmZvLAogIEhJU2hhcGVSZWYgKiBvdXRTaGFwZSkgOwojIDIz
NTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCmVudW0gewoKCgoKICBr
SElUaGVtZVRleHRUcnVuY2F0aW9uTm9uZSA9IDAsCgoKCgoKCiAga0hJVGhlbWVUZXh0VHJ1bmNh
dGlvbk1pZGRsZSA9IDEsCgoKCgoKCiAga0hJVGhlbWVUZXh0VHJ1bmNhdGlvbkVuZCA9IDIsCiAg
a0hJVGhlbWVUZXh0VHJ1bmNhdGlvbkRlZmF1bHQgPSAzCn07Cgp0eXBlZGVmIFVJbnQzMiBISVRo
ZW1lVGV4dFRydW5jYXRpb247CgoKCmVudW0gewoKCgoKCiAga0hJVGhlbWVUZXh0SG9yaXpvbnRh
bEZsdXNoTGVmdCA9IDAsCgoKCgogIGtISVRoZW1lVGV4dEhvcml6b250YWxGbHVzaENlbnRlciA9
IDEsCgoKCgoKICBrSElUaGVtZVRleHRIb3Jpem9udGFsRmx1c2hSaWdodCA9IDIsCiAga0hJVGhl
bWVUZXh0SG9yaXpvbnRhbEZsdXNoRGVmYXVsdCA9IDMKfTsKCnR5cGVkZWYgVUludDMyIEhJVGhl
bWVUZXh0SG9yaXpvbnRhbEZsdXNoOwoKCgplbnVtIHsKCgoKCiAga0hJVGhlbWVUZXh0VmVydGlj
YWxGbHVzaFRvcCA9IDAsCgoKCgogIGtISVRoZW1lVGV4dFZlcnRpY2FsRmx1c2hDZW50ZXIgPSAx
LAoKCgoKICBrSElUaGVtZVRleHRWZXJ0aWNhbEZsdXNoQm90dG9tID0gMiwKICBrSElUaGVtZVRl
eHRWZXJ0aWNhbEZsdXNoRGVmYXVsdCA9IDMKfTsKCnR5cGVkZWYgVUludDMyIEhJVGhlbWVUZXh0
VmVydGljYWxGbHVzaDsKCgoKZW51bSB7CiAga0hJVGhlbWVUZXh0Qm94T3B0aW9uTm9uZSA9IDAs
CgoKCgoKICBrSElUaGVtZVRleHRCb3hPcHRpb25TdHJvbmdseVZlcnRpY2FsID0gKDEgPDwgMSks
CgoKCgoKCiAga0hJVGhlbWVUZXh0Qm94T3B0aW9uRW5ncmF2ZWQgPSAoMSA8PCAyKSwKIyAyNDQ5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwogIGtISVRoZW1lVGV4dEJv
eE9wdGlvbkRvbnRDbGlwID0gKDEgPDwgMTgpCn07Cgp0eXBlZGVmIE9wdGlvbkJpdHMgSElUaGVt
ZVRleHRCb3hPcHRpb25zOwoKCgplbnVtIHsKCgoKCgoKCiAga0hJVGhlbWVUZXh0SW5mb1ZlcnNp
b25aZXJvID0gMCwKCgoKCgoKICBrSElUaGVtZVRleHRJbmZvVmVyc2lvbk9uZSA9IDEKfTsKIyAy
NDg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpzdHJ1Y3QgSElUaGVt
ZVRleHRJbmZvIHsKCgoKCiAgVUludDMyIHZlcnNpb247CgoKCgogIFRoZW1lRHJhd1N0YXRlIHN0
YXRlOwoKCgoKICBUaGVtZUZvbnRJRCBmb250SUQ7CiMgMjUxNCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISVRoZW1lLmgiIDMKICBISVRoZW1lVGV4dEhvcml6b250YWxGbHVzaCBob3Jpem9u
dGFsRmx1c2huZXNzOwojIDI1MjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5o
IiAzCiAgSElUaGVtZVRleHRWZXJ0aWNhbEZsdXNoIHZlcnRpY2FsRmx1c2huZXNzOwoKCgoKCiAg
SElUaGVtZVRleHRCb3hPcHRpb25zIG9wdGlvbnM7CgoKCgoKCiAgSElUaGVtZVRleHRUcnVuY2F0
aW9uIHRydW5jYXRpb25Qb3NpdGlvbjsKCgoKCgoKICBVSW50MzIgdHJ1bmNhdGlvbk1heExpbmVz
OwoKCgoKCgogIEJvb2xlYW4gdHJ1bmNhdGlvbkhhcHBlbmVkOwogIFVJbnQ4IGZpbGxlcjE7CgoK
CgoKCgogIENURm9udFJlZiBmb250Owp9Owp0eXBlZGVmIHN0cnVjdCBISVRoZW1lVGV4dEluZm8g
SElUaGVtZVRleHRJbmZvOwojIDI2MzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVt
ZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpISVRoZW1lR2V0VGV4dERpbWVuc2lvbnMoCiAgQ0ZUeXBl
UmVmIGluU3RyaW5nLAogIENHRmxvYXQgaW5XaWR0aCwKICBISVRoZW1lVGV4dEluZm8gKiBpblRl
eHRJbmZvLAogIENHRmxvYXQgKiBvdXRXaWR0aCwKICBDR0Zsb2F0ICogb3V0SGVpZ2h0LAogIENH
RmxvYXQgKiBvdXRCYXNlbGluZSkgOwojIDI2OTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElUaGVtZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpISVRoZW1lRHJhd1RleHRCb3goCiAgQ0ZUeXBl
UmVmIGluU3RyaW5nLAogIGNvbnN0IEhJUmVjdCAqIGluQm91bmRzLAogIEhJVGhlbWVUZXh0SW5m
byAqIGluVGV4dEluZm8sCiAgQ0dDb250ZXh0UmVmIGluQ29udGV4dCwKICBISVRoZW1lT3JpZW50
YXRpb24gaW5PcmllbnRhdGlvbikgOwojIDI3MzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElUaGVtZS5oIiAzCmV4dGVybiBDVEZvbnRVSUZvbnRUeXBlCkhJVGhlbWVHZXRVSUZvbnRUeXBl
KFRoZW1lRm9udElEIGluRm9udElEKSA7CiMgMjc3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJVGhlbWVEcmF3VHJhY2soCiAgY29uc3Qg
SElUaGVtZVRyYWNrRHJhd0luZm8gKiBpbkRyYXdJbmZvLAogIGNvbnN0IEhJUmVjdCAqIGluR2hv
c3RSZWN0LAogIENHQ29udGV4dFJlZiBpbkNvbnRleHQsCiAgSElUaGVtZU9yaWVudGF0aW9uIGlu
T3JpZW50YXRpb24pIDsKIyAyODE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUu
aCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZURyYXdUcmFja1RpY2tNYXJrcygKICBjb25zdCBI
SVRoZW1lVHJhY2tEcmF3SW5mbyAqIGluRHJhd0luZm8sCiAgSXRlbUNvdW50IGluTnVtVGlja3Ms
CiAgQ0dDb250ZXh0UmVmIGluQ29udGV4dCwKICBISVRoZW1lT3JpZW50YXRpb24gaW5PcmllbnRh
dGlvbikgOwojIDI4NjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCmV4
dGVybiBPU1N0YXR1cwpISVRoZW1lRHJhd1RpY2tNYXJrKAogIGNvbnN0IEhJUmVjdCAqIGluQm91
bmRzLAogIGNvbnN0IEhJVGhlbWVUaWNrTWFya0RyYXdJbmZvICogaW5EcmF3SW5mbywKICBDR0Nv
bnRleHRSZWYgaW5Db250ZXh0LAogIEhJVGhlbWVPcmllbnRhdGlvbiBpbk9yaWVudGF0aW9uKSA7
CiMgMjg5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCkhJVGhlbWVHZXRUcmFja1RodW1iU2hhcGUoCiAgY29uc3QgSElUaGVtZVRyYWNrRHJh
d0luZm8gKiBpbkRyYXdJbmZvLAogIEhJU2hhcGVSZWYgKiBvdXRUaHVtYlNoYXBlKSA7CiMgMjkz
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIEJvb2xlYW4K
SElUaGVtZUhpdFRlc3RUcmFjaygKICBjb25zdCBISVRoZW1lVHJhY2tEcmF3SW5mbyAqIGluRHJh
d0luZm8sCiAgY29uc3QgSElQb2ludCAqIGluTW91c2VQb2ludCwKICBDb250cm9sUGFydENvZGUg
KiBvdXRQYXJ0SGl0KSA7CiMgMjk2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1l
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJVGhlbWVHZXRUcmFja0JvdW5kcygKICBjb25zdCBISVRo
ZW1lVHJhY2tEcmF3SW5mbyAqIGluRHJhd0luZm8sCiAgSElSZWN0ICogb3V0Qm91bmRzKSA7CiMg
MzAwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzCkhJVGhlbWVHZXRUcmFja1BhcnRCb3VuZHMoCiAgY29uc3QgSElUaGVtZVRyYWNrRHJhd0lu
Zm8gKiBpbkRyYXdJbmZvLAogIENvbnRyb2xQYXJ0Q29kZSBpblBhcnRDb2RlLAogIEhJUmVjdCAq
IG91dFBhcnRCb3VuZHMpIDsKIyAzMDUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhl
bWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZUdldFRyYWNrUGFydHMoCiAgY29uc3QgSElU
aGVtZVRyYWNrRHJhd0luZm8gKiBpbkRyYXdJbmZvLAogIFVJbnQzMiAqIG91dE51bWJlck9mUGFy
dHMsCiAgVUludDMyIGluTWF4UGFydHMsCiAgQ29udHJvbFBhcnRDb2RlICogaW9QYXJ0c0J1ZmZl
cikgOwojIDMwODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCmV4dGVy
biBPU1N0YXR1cwpISVRoZW1lR2V0VHJhY2tEcmFnUmVjdCgKICBjb25zdCBISVRoZW1lVHJhY2tE
cmF3SW5mbyAqIGluRHJhd0luZm8sCiAgSElSZWN0ICogb3V0RHJhZ1JlY3QpIDsKIyAzMTE2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElU
aGVtZUdldFRyYWNrVGh1bWJQb3NpdGlvbkZyb21PZmZzZXQoCiAgY29uc3QgSElUaGVtZVRyYWNr
RHJhd0luZm8gKiBpbkRyYXdJbmZvLAogIGNvbnN0IEhJUG9pbnQgKiBpblRodW1iT2Zmc2V0LAog
IENHRmxvYXQgKiBvdXRSZWxhdGl2ZVBvc2l0aW9uKSA7CiMgMzE1MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJVGhlbWVHZXRUcmFja1Ro
dW1iUG9zaXRpb25Gcm9tQm91bmRzKAogIGNvbnN0IEhJVGhlbWVUcmFja0RyYXdJbmZvICogaW5E
cmF3SW5mbywKICBjb25zdCBISVJlY3QgKiBpblRodW1iQm91bmRzLAogIENHRmxvYXQgKiBvdXRS
ZWxhdGl2ZVBvc2l0aW9uKSA7CiMgMzE4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRo
ZW1lLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJVGhlbWVHZXRUcmFja0xpdmVWYWx1ZSgKICBjb25z
dCBISVRoZW1lVHJhY2tEcmF3SW5mbyAqIGluRHJhd0luZm8sCiAgQ0dGbG9hdCBpblJlbGF0aXZl
UG9zaXRpb24sCiAgU0ludDMyICogb3V0VmFsdWUpIDsKIyAzMjI1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZUdldFNjcm9sbEJh
clRyYWNrUmVjdCgKICBjb25zdCBISVJlY3QgKiBpbkJvdW5kcywKICBjb25zdCBISVNjcm9sbEJh
clRyYWNrSW5mbyAqIGluVHJhY2tJbmZvLAogIEJvb2xlYW4gaW5Jc0hvcml6LAogIEhJUmVjdCAq
IG91dFRyYWNrQm91bmRzKSA7CiMgMzI3NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRo
ZW1lLmgiIDMKZXh0ZXJuIEJvb2xlYW4KSElUaGVtZUhpdFRlc3RTY3JvbGxCYXJBcnJvd3MoCiAg
Y29uc3QgSElSZWN0ICogaW5TY3JvbGxCYXJCb3VuZHMsCiAgY29uc3QgSElTY3JvbGxCYXJUcmFj
a0luZm8gKiBpblRyYWNrSW5mbywKICBCb29sZWFuIGluSXNIb3JpeiwKICBjb25zdCBISVBvaW50
ICogaW5QdEhpdCwKICBISVJlY3QgKiBvdXRUcmFja0JvdW5kcywKICBDb250cm9sUGFydENvZGUg
KiBvdXRQYXJ0Q29kZSkgOwojIDMzMjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVt
ZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpISVRoZW1lRHJhd1Njcm9sbEJhckRlbGltaXRlcnMoCiAg
Y29uc3QgSElSZWN0ICogaW5Db250UmVjdCwKICBjb25zdCBISVRoZW1lU2Nyb2xsQmFyRGVsaW1p
dGVyc0RyYXdJbmZvICogaW5EcmF3SW5mbywKICBDR0NvbnRleHRSZWYgaW5Db250ZXh0LAogIEhJ
VGhlbWVPcmllbnRhdGlvbiBpbk9yaWVudGF0aW9uKSA7CiMgMzM2NiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJVGhlbWVEcmF3V2luZG93
RnJhbWUoCiAgY29uc3QgSElSZWN0ICogaW5Db250UmVjdCwKICBjb25zdCBISVRoZW1lV2luZG93
RHJhd0luZm8gKiBpbkRyYXdJbmZvLAogIENHQ29udGV4dFJlZiBpbkNvbnRleHQsCiAgSElUaGVt
ZU9yaWVudGF0aW9uIGluT3JpZW50YXRpb24sCiAgSElSZWN0ICogb3V0VGl0bGVSZWN0KSA7CiMg
MzQxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzCkhJVGhlbWVEcmF3VGl0bGVCYXJXaWRnZXQoCiAgY29uc3QgSElSZWN0ICogaW5Db250UmVj
dCwKICBjb25zdCBISVRoZW1lV2luZG93V2lkZ2V0RHJhd0luZm8gKiBpbkRyYXdJbmZvLAogIENH
Q29udGV4dFJlZiBpbkNvbnRleHQsCiAgSElUaGVtZU9yaWVudGF0aW9uIGluT3JpZW50YXRpb24p
IDsKIyAzNDU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4g
T1NTdGF0dXMKSElUaGVtZURyYXdHcm93Qm94KAogIGNvbnN0IEhJUG9pbnQgKiBpbk9yaWdpbiwK
ICBjb25zdCBISVRoZW1lR3Jvd0JveERyYXdJbmZvICogaW5EcmF3SW5mbywKICBDR0NvbnRleHRS
ZWYgaW5Db250ZXh0LAogIEhJVGhlbWVPcmllbnRhdGlvbiBpbk9yaWVudGF0aW9uKSA7CiMgMzQ5
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CkhJVGhlbWVHZXRHcm93Qm94Qm91bmRzKAogIGNvbnN0IEhJUG9pbnQgKiBpbk9yaWdpbiwKICBj
b25zdCBISVRoZW1lR3Jvd0JveERyYXdJbmZvICogaW5EcmF3SW5mbywKICBISVJlY3QgKiBvdXRC
b3VuZHMpIDsKIyAzNTM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpl
eHRlcm4gT1NTdGF0dXMKSElUaGVtZUdldFdpbmRvd1NoYXBlKAogIGNvbnN0IEhJUmVjdCAqIGlu
Q29udFJlY3QsCiAgY29uc3QgSElUaGVtZVdpbmRvd0RyYXdJbmZvICogaW5EcmF3SW5mbywKICBX
aW5kb3dSZWdpb25Db2RlIGluV2luUmVnaW9uLAogIEhJU2hhcGVSZWYgKiBvdXRTaGFwZSkgOwoj
IDM1NzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCmV4dGVybiBCb29s
ZWFuCkhJVGhlbWVHZXRXaW5kb3dSZWdpb25IaXQoCiAgY29uc3QgSElSZWN0ICogaW5Db250UmVj
dCwKICBjb25zdCBISVRoZW1lV2luZG93RHJhd0luZm8gKiBpbkRyYXdJbmZvLAogIGNvbnN0IEhJ
UG9pbnQgKiBpblBvaW50LAogIFdpbmRvd1JlZ2lvbkNvZGUgKiBvdXRSZWdpb25IaXQpIDsKIyAz
NjE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0
dXMKSElUaGVtZURyYXdGcmFtZSgKICBjb25zdCBISVJlY3QgKiBpblJlY3QsCiAgY29uc3QgSElU
aGVtZUZyYW1lRHJhd0luZm8gKiBpbkRyYXdJbmZvLAogIENHQ29udGV4dFJlZiBpbkNvbnRleHQs
CiAgSElUaGVtZU9yaWVudGF0aW9uIGluT3JpZW50YXRpb24pIDsKIyAzNjU0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZURyYXdH
cm91cEJveCgKICBjb25zdCBISVJlY3QgKiBpblJlY3QsCiAgY29uc3QgSElUaGVtZUdyb3VwQm94
RHJhd0luZm8gKiBpbkRyYXdJbmZvLAogIENHQ29udGV4dFJlZiBpbkNvbnRleHQsCiAgSElUaGVt
ZU9yaWVudGF0aW9uIGluT3JpZW50YXRpb24pIDsKIyAzNjk0ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZURyYXdHZW5lcmljV2Vs
bCgKICBjb25zdCBISVJlY3QgKiBpblJlY3QsCiAgY29uc3QgSElUaGVtZUJ1dHRvbkRyYXdJbmZv
ICogaW5EcmF3SW5mbywKICBDR0NvbnRleHRSZWYgaW5Db250ZXh0LAogIEhJVGhlbWVPcmllbnRh
dGlvbiBpbk9yaWVudGF0aW9uKSA7CiMgMzczMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJVGhlbWVEcmF3UGFuZVNwbGl0dGVyKAogIGNv
bnN0IEhJUmVjdCAqIGluUmVjdCwKICBjb25zdCBISVRoZW1lU3BsaXR0ZXJEcmF3SW5mbyAqIGlu
RHJhd0luZm8sCiAgQ0dDb250ZXh0UmVmIGluQ29udGV4dCwKICBISVRoZW1lT3JpZW50YXRpb24g
aW5PcmllbnRhdGlvbikgOwojIDM3NjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVt
ZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpISVRoZW1lRHJhd0dyYWJiZXIoCiAgY29uc3QgSElSZWN0
ICogaW5SZWN0LAogIGNvbnN0IEhJVGhlbWVHcmFiYmVyRHJhd0luZm8gKiBpbkRyYXdJbmZvLAog
IENHQ29udGV4dFJlZiBpbkNvbnRleHQsCiAgSElUaGVtZU9yaWVudGF0aW9uIGluT3JpZW50YXRp
b24pIDsKIyAzODA1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRl
cm4gT1NTdGF0dXMKSElUaGVtZURyYXdQbGFjYXJkKAogIGNvbnN0IEhJUmVjdCAqIGluUmVjdCwK
ICBjb25zdCBISVRoZW1lUGxhY2FyZERyYXdJbmZvICogaW5EcmF3SW5mbywKICBDR0NvbnRleHRS
ZWYgaW5Db250ZXh0LAogIEhJVGhlbWVPcmllbnRhdGlvbiBpbk9yaWVudGF0aW9uKSA7CiMgMzg0
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CkhJVGhlbWVEcmF3SGVhZGVyKAogIGNvbnN0IEhJUmVjdCAqIGluUmVjdCwKICBjb25zdCBISVRo
ZW1lSGVhZGVyRHJhd0luZm8gKiBpbkRyYXdJbmZvLAogIENHQ29udGV4dFJlZiBpbkNvbnRleHQs
CiAgSElUaGVtZU9yaWVudGF0aW9uIGluT3JpZW50YXRpb24pIDsKIyAzODgwICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZURyYXdG
b2N1c1JlY3QoCiAgY29uc3QgSElSZWN0ICogaW5SZWN0LAogIEJvb2xlYW4gaW5IYXNGb2N1cywK
ICBDR0NvbnRleHRSZWYgaW5Db250ZXh0LAogIEhJVGhlbWVPcmllbnRhdGlvbiBpbk9yaWVudGF0
aW9uKSA7CgoKCgoKZW51bSB7CgoKCgoKICBrSElUaGVtZUZvY3VzUmluZ09ubHkgPSAwLAoKCgoK
CiAga0hJVGhlbWVGb2N1c1JpbmdBYm92ZSA9IDEsCgoKCgoKICBrSElUaGVtZUZvY3VzUmluZ0Jl
bG93ID0gMgp9OwoKCnR5cGVkZWYgVUludDMyIEhJVGhlbWVGb2N1c1Jpbmc7CiMgMzk2MSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJVGhl
bWVCZWdpbkZvY3VzKAogIENHQ29udGV4dFJlZiBpbkNvbnRleHQsCiAgSElUaGVtZUZvY3VzUmlu
ZyBpblJpbmcsCiAgdm9pZCAqIGluUmVzZXJ2ZWQpIDsKIyAzOTk3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZUVuZEZvY3VzKENH
Q29udGV4dFJlZiBpbkNvbnRleHQpIDsKIyA0MDMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKSElUaGVtZURyYXdTZXBhcmF0b3IoCiAgY29u
c3QgSElSZWN0ICogaW5SZWN0LAogIGNvbnN0IEhJVGhlbWVTZXBhcmF0b3JEcmF3SW5mbyAqIGlu
RHJhd0luZm8sCiAgQ0dDb250ZXh0UmVmIGluQ29udGV4dCwKICBISVRoZW1lT3JpZW50YXRpb24g
aW5PcmllbnRhdGlvbikgOwojIDQwNzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVt
ZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpISVRoZW1lU2V0RmlsbCgKICBUaGVtZUJydXNoIGluQnJ1
c2gsCiAgdm9pZCAqIGluSW5mbywKICBDR0NvbnRleHRSZWYgaW5Db250ZXh0LAogIEhJVGhlbWVP
cmllbnRhdGlvbiBpbk9yaWVudGF0aW9uKSA7CiMgNDExOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkhJVGhlbWVTZXRTdHJva2UoCiAgVGhl
bWVCcnVzaCBpbkJydXNoLAogIHZvaWQgKiBpbkluZm8sCiAgQ0dDb250ZXh0UmVmIGluQ29udGV4
dCwKICBISVRoZW1lT3JpZW50YXRpb24gaW5PcmllbnRhdGlvbikgOwojIDQxNjIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpISVRoZW1lU2V0
VGV4dEZpbGwoCiAgVGhlbWVUZXh0Q29sb3IgaW5Db2xvciwKICB2b2lkICogaW5JbmZvLAogIENH
Q29udGV4dFJlZiBpbkNvbnRleHQsCiAgSElUaGVtZU9yaWVudGF0aW9uIGluT3JpZW50YXRpb24p
IDsKIyA0MjA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4g
T1NTdGF0dXMKSElUaGVtZUFwcGx5QmFja2dyb3VuZCgKICBjb25zdCBISVJlY3QgKiBpbkJvdW5k
cywKICBjb25zdCBISVRoZW1lQmFja2dyb3VuZERyYXdJbmZvICogaW5EcmF3SW5mbywKICBDR0Nv
bnRleHRSZWYgaW5Db250ZXh0LAogIEhJVGhlbWVPcmllbnRhdGlvbiBpbk9yaWVudGF0aW9uKSA7
CiMgNDI1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCkhJVGhlbWVEcmF3QmFja2dyb3VuZCgKICBjb25zdCBISVJlY3QgKiBpbkJvdW5kcywK
ICBjb25zdCBISVRoZW1lQmFja2dyb3VuZERyYXdJbmZvICogaW5EcmF3SW5mbywKICBDR0NvbnRl
eHRSZWYgaW5Db250ZXh0LAogIEhJVGhlbWVPcmllbnRhdGlvbiBpbk9yaWVudGF0aW9uKSA7CiMg
NDI5MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzCkhJVGhlbWVCcnVzaENyZWF0ZUNHQ29sb3IoCiAgVGhlbWVCcnVzaCBpbkJydXNoLAogIENH
Q29sb3JSZWYgKiBvdXRDb2xvcikgOwojIDQzNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElUaGVtZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpISVRoZW1lR2V0VGV4dENvbG9yRm9yVGhlbWVC
cnVzaCgKICBUaGVtZUJydXNoIGluQnJ1c2gsCiAgQm9vbGVhbiBpbldpbmRvd0lzQWN0aXZlLAog
IFRoZW1lVGV4dENvbG9yICogb3V0Q29sb3IpIDsKIyA0MzY4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0hJVGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKR2V0VGhlbWVNZW51U2VwYXJhdG9y
SGVpZ2h0KFNJbnQxNiAqIG91dEhlaWdodCkgOwojIDQzOTggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElUaGVtZS5oIiAzCmV4dGVybiBPU1N0YXR1cwpHZXRUaGVtZU1lbnVJdGVtRXh0cmEo
CiAgVGhlbWVNZW51SXRlbVR5cGUgaW5JdGVtVHlwZSwKICBTSW50MTYgKiBvdXRIZWlnaHQsCiAg
U0ludDE2ICogb3V0V2lkdGgpIDsKIyA0NDI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJ
VGhlbWUuaCIgMwpleHRlcm4gT1NTdGF0dXMKR2V0VGhlbWVNZW51VGl0bGVFeHRyYSgKICBTSW50
MTYgKiBvdXRXaWR0aCwKICBCb29sZWFuIGluSXNTcXVpc2hlZCkgOwojIDQ0NDQgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElUaGVtZS5oIiAzCmVudW0gewoKCgoKICBrVGhlbWVNZXRyaWNT
Y3JvbGxCYXJXaWR0aCA9IDAsCgoKCgogIGtUaGVtZU1ldHJpY1NtYWxsU2Nyb2xsQmFyV2lkdGgg
PSAxLAoKCgoKICBrVGhlbWVNZXRyaWNDaGVja0JveEhlaWdodCA9IDIsCgoKCgogIGtUaGVtZU1l
dHJpY1JhZGlvQnV0dG9uSGVpZ2h0ID0gMywKIyA0NDczICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0hJVGhlbWUuaCIgMwogIGtUaGVtZU1ldHJpY0VkaXRUZXh0V2hpdGVzcGFjZSA9IDQsCgoK
CgoKCgogIGtUaGVtZU1ldHJpY0VkaXRUZXh0RnJhbWVPdXRzZXQgPSA1LAoKCgoKCiAga1RoZW1l
TWV0cmljTGlzdEJveEZyYW1lT3V0c2V0ID0gNiwKCgoKCgogIGtUaGVtZU1ldHJpY0ZvY3VzUmVj
dE91dHNldCA9IDcsCgoKCgogIGtUaGVtZU1ldHJpY0ltYWdlV2VsbFRoaWNrbmVzcyA9IDgsCgoK
CgoKCgogIGtUaGVtZU1ldHJpY1Njcm9sbEJhck92ZXJsYXAgPSA5LAoKCgoKICBrVGhlbWVNZXRy
aWNMYXJnZVRhYkhlaWdodCA9IDEwLAoKCgoKCiAga1RoZW1lTWV0cmljTGFyZ2VUYWJDYXBzV2lk
dGggPSAxMSwKCgoKCgoKCiAga1RoZW1lTWV0cmljVGFiRnJhbWVPdmVybGFwID0gMTIsCiMgNDUz
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRoZW1lLmgiIDMKICBrVGhlbWVNZXRyaWNU
YWJJbmRlbnRPclN0eWxlID0gMTMsCgoKCgoKICBrVGhlbWVNZXRyaWNUYWJPdmVybGFwID0gMTQs
CgoKCgoKICBrVGhlbWVNZXRyaWNTbWFsbFRhYkhlaWdodCA9IDE1LAoKCgoKCiAga1RoZW1lTWV0
cmljU21hbGxUYWJDYXBzV2lkdGggPSAxNiwKCgoKCiAga1RoZW1lTWV0cmljUHVzaEJ1dHRvbkhl
aWdodCA9IDE5LAoKCgoKICBrVGhlbWVNZXRyaWNMaXN0SGVhZGVySGVpZ2h0ID0gMjAsCgoKCgoK
ICBrVGhlbWVNZXRyaWNEaXNjbG9zdXJlVHJpYW5nbGVIZWlnaHQgPSAyNSwKCgoKCiAga1RoZW1l
TWV0cmljRGlzY2xvc3VyZVRyaWFuZ2xlV2lkdGggPSAyNiwKCgoKCiAga1RoZW1lTWV0cmljTGl0
dGxlQXJyb3dzSGVpZ2h0ID0gMjcsCgoKCgogIGtUaGVtZU1ldHJpY0xpdHRsZUFycm93c1dpZHRo
ID0gMjgsCgoKCgogIGtUaGVtZU1ldHJpY1BvcHVwQnV0dG9uSGVpZ2h0ID0gMzAsCgoKCgogIGtU
aGVtZU1ldHJpY1NtYWxsUG9wdXBCdXR0b25IZWlnaHQgPSAzMSwKCgoKCiAga1RoZW1lTWV0cmlj
TGFyZ2VQcm9ncmVzc0JhclRoaWNrbmVzcyA9IDMyLAoKCgoKICBrVGhlbWVNZXRyaWNQdWxsRG93
bkhlaWdodCA9IDMzLAoKCgoKICBrVGhlbWVNZXRyaWNTbWFsbFB1bGxEb3duSGVpZ2h0ID0gMzQs
CgoKCgogIGtUaGVtZU1ldHJpY1Jlc2l6ZUNvbnRyb2xIZWlnaHQgPSAzOCwKCgoKCgogIGtUaGVt
ZU1ldHJpY1NtYWxsUmVzaXplQ29udHJvbEhlaWdodCA9IDM5LAoKCgoKICBrVGhlbWVNZXRyaWNI
U2xpZGVySGVpZ2h0ID0gNDEsCgoKCgogIGtUaGVtZU1ldHJpY0hTbGlkZXJUaWNrSGVpZ2h0ID0g
NDIsCgoKCgogIGtUaGVtZU1ldHJpY1ZTbGlkZXJXaWR0aCA9IDQ1LAoKCgoKICBrVGhlbWVNZXRy
aWNWU2xpZGVyVGlja1dpZHRoID0gNDYsCgoKCgoKICBrVGhlbWVNZXRyaWNUaXRsZUJhckNvbnRy
b2xzSGVpZ2h0ID0gNDksCgoKCgogIGtUaGVtZU1ldHJpY0NoZWNrQm94V2lkdGggPSA1MCwKCgoK
CiAga1RoZW1lTWV0cmljUmFkaW9CdXR0b25XaWR0aCA9IDUyLAoKCgoKICBrVGhlbWVNZXRyaWNO
b3JtYWxQcm9ncmVzc0JhclRoaWNrbmVzcyA9IDU4LAoKCgoKICBrVGhlbWVNZXRyaWNQcm9ncmVz
c0JhclNoYWRvd091dHNldCA9IDU5LAoKCgoKCiAga1RoZW1lTWV0cmljU21hbGxQcm9ncmVzc0Jh
clNoYWRvd091dHNldCA9IDYwLAoKCgoKCiAga1RoZW1lTWV0cmljUHJpbWFyeUdyb3VwQm94Q29u
dGVudEluc2V0ID0gNjEsCgoKCgoKICBrVGhlbWVNZXRyaWNTZWNvbmRhcnlHcm91cEJveENvbnRl
bnRJbnNldCA9IDYyLAoKCgoKICBrVGhlbWVNZXRyaWNNZW51TWFya0NvbHVtbldpZHRoID0gNjMs
CgoKCgoKICBrVGhlbWVNZXRyaWNNZW51RXhjbHVkZWRNYXJrQ29sdW1uV2lkdGggPSA2NCwKCgoK
CgogIGtUaGVtZU1ldHJpY01lbnVNYXJrSW5kZW50ID0gNjUsCgoKCgogIGtUaGVtZU1ldHJpY01l
bnVUZXh0TGVhZGluZ0VkZ2VNYXJnaW4gPSA2NiwKCgoKCiAga1RoZW1lTWV0cmljTWVudVRleHRU
cmFpbGluZ0VkZ2VNYXJnaW4gPSA2NywKCgoKCiAga1RoZW1lTWV0cmljTWVudUluZGVudFdpZHRo
ID0gNjgsCgoKCgoKICBrVGhlbWVNZXRyaWNNZW51SWNvblRyYWlsaW5nRWRnZU1hcmdpbiA9IDY5
Cn07CgoKCgoKCmVudW0gewoKCgoKICBrVGhlbWVNZXRyaWNEaXNjbG9zdXJlQnV0dG9uSGVpZ2h0
ID0gMTcsCgoKCgogIGtUaGVtZU1ldHJpY1JvdW5kQnV0dG9uU2l6ZSA9IDE4LAoKCgoKICBrVGhl
bWVNZXRyaWNTbWFsbENoZWNrQm94SGVpZ2h0ID0gMjEsCgoKCgogIGtUaGVtZU1ldHJpY0Rpc2Ns
b3N1cmVCdXR0b25XaWR0aCA9IDIyLAoKCgoKICBrVGhlbWVNZXRyaWNTbWFsbERpc2Nsb3N1cmVC
dXR0b25IZWlnaHQgPSAyMywKCgoKCiAga1RoZW1lTWV0cmljU21hbGxEaXNjbG9zdXJlQnV0dG9u
V2lkdGggPSAyNCwKCgoKCiAga1RoZW1lTWV0cmljUGFuZVNwbGl0dGVySGVpZ2h0ID0gMjksCgoK
CgogIGtUaGVtZU1ldHJpY1NtYWxsUHVzaEJ1dHRvbkhlaWdodCA9IDM1LAoKCgoKICBrVGhlbWVN
ZXRyaWNTbWFsbFJhZGlvQnV0dG9uSGVpZ2h0ID0gMzYsCgoKCgogIGtUaGVtZU1ldHJpY1JlbGV2
YW5jZUluZGljYXRvckhlaWdodCA9IDM3LAoKCgoKICBrVGhlbWVNZXRyaWNMYXJnZVJvdW5kQnV0
dG9uU2l6ZSA9IDQwLAoKCgoKICBrVGhlbWVNZXRyaWNTbWFsbEhTbGlkZXJIZWlnaHQgPSA0MywK
CgoKCgogIGtUaGVtZU1ldHJpY1NtYWxsSFNsaWRlclRpY2tIZWlnaHQgPSA0NCwKCgoKCiAga1Ro
ZW1lTWV0cmljU21hbGxWU2xpZGVyV2lkdGggPSA0NywKCgoKCiAga1RoZW1lTWV0cmljU21hbGxW
U2xpZGVyVGlja1dpZHRoID0gNDgsCgoKCgogIGtUaGVtZU1ldHJpY1NtYWxsQ2hlY2tCb3hXaWR0
aCA9IDUxLAoKCgoKICBrVGhlbWVNZXRyaWNTbWFsbFJhZGlvQnV0dG9uV2lkdGggPSA1MywKCgoK
CgogIGtUaGVtZU1ldHJpY1NtYWxsSFNsaWRlck1pblRodW1iV2lkdGggPSA1NCwKCgoKCiAga1Ro
ZW1lTWV0cmljU21hbGxWU2xpZGVyTWluVGh1bWJIZWlnaHQgPSA1NSwKCgoKCgogIGtUaGVtZU1l
dHJpY1NtYWxsSFNsaWRlclRpY2tPZmZzZXQgPSA1NiwKCgoKCgogIGtUaGVtZU1ldHJpY1NtYWxs
VlNsaWRlclRpY2tPZmZzZXQgPSA1Nwp9OwoKCgoKCgoKZW51bSB7CiAga1RoZW1lTWV0cmljQ29t
Ym9Cb3hMYXJnZUJvdHRvbVNoYWRvd09mZnNldCA9IDcwLAogIGtUaGVtZU1ldHJpY0NvbWJvQm94
TGFyZ2VSaWdodFNoYWRvd09mZnNldCA9IDcxLAogIGtUaGVtZU1ldHJpY0NvbWJvQm94U21hbGxC
b3R0b21TaGFkb3dPZmZzZXQgPSA3MiwKICBrVGhlbWVNZXRyaWNDb21ib0JveFNtYWxsUmlnaHRT
aGFkb3dPZmZzZXQgPSA3MywKICBrVGhlbWVNZXRyaWNDb21ib0JveExhcmdlRGlzY2xvc3VyZVdp
ZHRoID0gNzQsCiAga1RoZW1lTWV0cmljQ29tYm9Cb3hTbWFsbERpc2Nsb3N1cmVXaWR0aCA9IDc1
LAogIGtUaGVtZU1ldHJpY1JvdW5kVGV4dEZpZWxkQ29udGVudEluc2V0TGVmdCA9IDc2LAogIGtU
aGVtZU1ldHJpY1JvdW5kVGV4dEZpZWxkQ29udGVudEluc2V0UmlnaHQgPSA3NywKICBrVGhlbWVN
ZXRyaWNSb3VuZFRleHRGaWVsZENvbnRlbnRJbnNldEJvdHRvbSA9IDc4LAogIGtUaGVtZU1ldHJp
Y1JvdW5kVGV4dEZpZWxkQ29udGVudEluc2V0VG9wID0gNzksCiAga1RoZW1lTWV0cmljUm91bmRU
ZXh0RmllbGRDb250ZW50SGVpZ2h0ID0gODAsCiAga1RoZW1lTWV0cmljQ29tYm9Cb3hNaW5pQm90
dG9tU2hhZG93T2Zmc2V0ID0gODEsCiAga1RoZW1lTWV0cmljQ29tYm9Cb3hNaW5pRGlzY2xvc3Vy
ZVdpZHRoID0gODIsCiAga1RoZW1lTWV0cmljQ29tYm9Cb3hNaW5pUmlnaHRTaGFkb3dPZmZzZXQg
PSA4MywKICBrVGhlbWVNZXRyaWNMaXR0bGVBcnJvd3NNaW5pSGVpZ2h0ID0gODQsCiAga1RoZW1l
TWV0cmljTGl0dGxlQXJyb3dzTWluaVdpZHRoID0gODUsCiAga1RoZW1lTWV0cmljTGl0dGxlQXJy
b3dzU21hbGxIZWlnaHQgPSA4NiwKICBrVGhlbWVNZXRyaWNMaXR0bGVBcnJvd3NTbWFsbFdpZHRo
ID0gODcsCiAga1RoZW1lTWV0cmljTWluaUNoZWNrQm94SGVpZ2h0ID0gODgsCiAga1RoZW1lTWV0
cmljTWluaUNoZWNrQm94V2lkdGggPSA4OSwKICBrVGhlbWVNZXRyaWNNaW5pRGlzY2xvc3VyZUJ1
dHRvbkhlaWdodCA9IDkwLAogIGtUaGVtZU1ldHJpY01pbmlEaXNjbG9zdXJlQnV0dG9uV2lkdGgg
PSA5MSwKICBrVGhlbWVNZXRyaWNNaW5pSFNsaWRlckhlaWdodCA9IDkyLAogIGtUaGVtZU1ldHJp
Y01pbmlIU2xpZGVyTWluVGh1bWJXaWR0aCA9IDkzLAogIGtUaGVtZU1ldHJpY01pbmlIU2xpZGVy
VGlja0hlaWdodCA9IDk0LAogIGtUaGVtZU1ldHJpY01pbmlIU2xpZGVyVGlja09mZnNldCA9IDk1
LAogIGtUaGVtZU1ldHJpY01pbmlQb3B1cEJ1dHRvbkhlaWdodCA9IDk2LAogIGtUaGVtZU1ldHJp
Y01pbmlQdWxsRG93bkhlaWdodCA9IDk3LAogIGtUaGVtZU1ldHJpY01pbmlQdXNoQnV0dG9uSGVp
Z2h0ID0gOTgsCiAga1RoZW1lTWV0cmljTWluaVJhZGlvQnV0dG9uSGVpZ2h0ID0gOTksCiAga1Ro
ZW1lTWV0cmljTWluaVJhZGlvQnV0dG9uV2lkdGggPSAxMDAsCiAga1RoZW1lTWV0cmljTWluaVRh
YkNhcHNXaWR0aCA9IDEwMSwKICBrVGhlbWVNZXRyaWNNaW5pVGFiRnJhbWVPdmVybGFwID0gMTAy
LAogIGtUaGVtZU1ldHJpY01pbmlUYWJIZWlnaHQgPSAxMDMsCiAga1RoZW1lTWV0cmljTWluaVRh
Yk92ZXJsYXAgPSAxMDQsCiAga1RoZW1lTWV0cmljTWluaVZTbGlkZXJNaW5UaHVtYkhlaWdodCA9
IDEwNSwKICBrVGhlbWVNZXRyaWNNaW5pVlNsaWRlclRpY2tPZmZzZXQgPSAxMDYsCiAga1RoZW1l
TWV0cmljTWluaVZTbGlkZXJUaWNrV2lkdGggPSAxMDcsCiAga1RoZW1lTWV0cmljTWluaVZTbGlk
ZXJXaWR0aCA9IDEwOCwKICBrVGhlbWVNZXRyaWNSb3VuZFRleHRGaWVsZENvbnRlbnRJbnNldFdp
dGhJY29uTGVmdCA9IDEwOSwKICBrVGhlbWVNZXRyaWNSb3VuZFRleHRGaWVsZENvbnRlbnRJbnNl
dFdpdGhJY29uUmlnaHQgPSAxMTAsCiAga1RoZW1lTWV0cmljUm91bmRUZXh0RmllbGRNaW5pQ29u
dGVudEhlaWdodCA9IDExMSwKICBrVGhlbWVNZXRyaWNSb3VuZFRleHRGaWVsZE1pbmlDb250ZW50
SW5zZXRCb3R0b20gPSAxMTIsCiAga1RoZW1lTWV0cmljUm91bmRUZXh0RmllbGRNaW5pQ29udGVu
dEluc2V0TGVmdCA9IDExMywKICBrVGhlbWVNZXRyaWNSb3VuZFRleHRGaWVsZE1pbmlDb250ZW50
SW5zZXRSaWdodCA9IDExNCwKICBrVGhlbWVNZXRyaWNSb3VuZFRleHRGaWVsZE1pbmlDb250ZW50
SW5zZXRUb3AgPSAxMTUsCiAga1RoZW1lTWV0cmljUm91bmRUZXh0RmllbGRNaW5pQ29udGVudElu
c2V0V2l0aEljb25MZWZ0ID0gMTE2LAogIGtUaGVtZU1ldHJpY1JvdW5kVGV4dEZpZWxkTWluaUNv
bnRlbnRJbnNldFdpdGhJY29uUmlnaHQgPSAxMTcsCiAga1RoZW1lTWV0cmljUm91bmRUZXh0Rmll
bGRTbWFsbENvbnRlbnRIZWlnaHQgPSAxMTgsCiAga1RoZW1lTWV0cmljUm91bmRUZXh0RmllbGRT
bWFsbENvbnRlbnRJbnNldEJvdHRvbSA9IDExOSwKICBrVGhlbWVNZXRyaWNSb3VuZFRleHRGaWVs
ZFNtYWxsQ29udGVudEluc2V0TGVmdCA9IDEyMCwKICBrVGhlbWVNZXRyaWNSb3VuZFRleHRGaWVs
ZFNtYWxsQ29udGVudEluc2V0UmlnaHQgPSAxMjEsCiAga1RoZW1lTWV0cmljUm91bmRUZXh0Rmll
bGRTbWFsbENvbnRlbnRJbnNldFRvcCA9IDEyMiwKICBrVGhlbWVNZXRyaWNSb3VuZFRleHRGaWVs
ZFNtYWxsQ29udGVudEluc2V0V2l0aEljb25MZWZ0ID0gMTIzLAogIGtUaGVtZU1ldHJpY1JvdW5k
VGV4dEZpZWxkU21hbGxDb250ZW50SW5zZXRXaXRoSWNvblJpZ2h0ID0gMTI0LAogIGtUaGVtZU1l
dHJpY1NtYWxsVGFiRnJhbWVPdmVybGFwID0gMTI1LAogIGtUaGVtZU1ldHJpY1NtYWxsVGFiT3Zl
cmxhcCA9IDEyNiwKCgoKCgogIGtUaGVtZU1ldHJpY1NtYWxsUGFuZVNwbGl0dGVySGVpZ2h0ID0g
MTI3Cn07CgoKCgoKCgplbnVtIHsKCgoKCgogIGtUaGVtZU1ldHJpY0hTbGlkZXJUaWNrT2Zmc2V0
ID0gMTI4LAoKCgoKCiAga1RoZW1lTWV0cmljVlNsaWRlclRpY2tPZmZzZXQgPSAxMjksCgoKCgog
IGtUaGVtZU1ldHJpY1NsaWRlck1pblRodW1iSGVpZ2h0ID0gMTMwLAogIGtUaGVtZU1ldHJpY1Ns
aWRlck1pblRodW1iV2lkdGggPSAxMzEsCgoKCgogIGtUaGVtZU1ldHJpY1Njcm9sbEJhck1pblRo
dW1iSGVpZ2h0ID0gMTMyLAoKCgoKICBrVGhlbWVNZXRyaWNTY3JvbGxCYXJNaW5UaHVtYldpZHRo
ID0gMTMzLAoKCgoKICBrVGhlbWVNZXRyaWNTbWFsbFNjcm9sbEJhck1pblRodW1iSGVpZ2h0ID0g
MTM0LAoKCgoKICBrVGhlbWVNZXRyaWNTbWFsbFNjcm9sbEJhck1pblRodW1iV2lkdGggPSAxMzUs
CgoKCgoKICBrVGhlbWVNZXRyaWNCdXR0b25Sb3VuZGVkSGVpZ2h0ID0gMTM2LAoKCgoKCiAga1Ro
ZW1lTWV0cmljQnV0dG9uUm91bmRlZFJlY2Vzc2VkSGVpZ2h0ID0gMTM3Cn07CgoKCgoKCgplbnVt
IHsKCgoKCgoKCiAga1RoZW1lTWV0cmljU2VwYXJhdG9yU2l6ZSA9IDEzOCwKCgoKCgogIGtUaGVt
ZU1ldHJpY1RleHR1cmVkUHVzaEJ1dHRvbkhlaWdodCA9IDEzOSwKCgoKCgogIGtUaGVtZU1ldHJp
Y1RleHR1cmVkU21hbGxQdXNoQnV0dG9uSGVpZ2h0ID0gMTQwCn07Cgp0eXBlZGVmIFVJbnQzMiBU
aGVtZU1ldHJpYzsKIyA1MDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGhlbWUuaCIg
MwpleHRlcm4gT1NTdGF0dXMKR2V0VGhlbWVNZXRyaWMoCiAgVGhlbWVNZXRyaWMgaW5NZXRyaWMs
CiAgU0ludDMyICogb3V0TWV0cmljKSA7CiMgNTA1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9ISVRoZW1lLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkNvcHlUaGVtZUlkZW50aWZpZXIoQ0ZTdHJp
bmdSZWYgKiBvdXRJZGVudGlmaWVyKSA7CgoKCgoKZW51bSB7CiAga1RoZW1lTWV0cmljQ2hlY2tC
b3hHbHlwaEhlaWdodCA9IGtUaGVtZU1ldHJpY0NoZWNrQm94SGVpZ2h0LAogIGtUaGVtZU1ldHJp
Y1JhZGlvQnV0dG9uR2x5cGhIZWlnaHQgPSBrVGhlbWVNZXRyaWNSYWRpb0J1dHRvbkhlaWdodCwK
ICBrVGhlbWVNZXRyaWNEaXNjbG9zdXJlQnV0dG9uU2l6ZSA9IGtUaGVtZU1ldHJpY0Rpc2Nsb3N1
cmVCdXR0b25IZWlnaHQsCiAga1RoZW1lTWV0cmljQmVzdExpc3RIZWFkZXJIZWlnaHQgPSBrVGhl
bWVNZXRyaWNMaXN0SGVhZGVySGVpZ2h0LAogIGtUaGVtZU1ldHJpY1NtYWxsUHJvZ3Jlc3NCYXJU
aGlja25lc3MgPSBrVGhlbWVNZXRyaWNOb3JtYWxQcm9ncmVzc0JhclRoaWNrbmVzcywKICBrVGhl
bWVNZXRyaWNQcm9ncmVzc0JhclRoaWNrbmVzcyA9IGtUaGVtZU1ldHJpY0xhcmdlUHJvZ3Jlc3NC
YXJUaGlja25lc3MKfTsKCgojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAzMyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9ISVZpZXcuaCIgMiAzCiMgNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvSElWaWV3LmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCgoKQGNs
YXNzIE5TSW1hZ2U7CgoKdHlwZWRlZiBDb250cm9sSUQgSElWaWV3SUQ7CgoKCgoKZW51bSB7CgoK
CgogIGtISVZpZXdaT3JkZXJBYm92ZSA9IDEsCgoKCgogIGtISVZpZXdaT3JkZXJCZWxvdyA9IDIK
fTsKCnR5cGVkZWYgVUludDMyIEhJVmlld1pPcmRlck9wOwojIDg1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJVmlldy5oIiAzCnN0cnVjdCBISVZpZXdGcmFtZU1ldHJpY3MgewoKCgoKICBD
R0Zsb2F0IHRvcDsKCgoKCiAgQ0dGbG9hdCBsZWZ0OwoKCgoKICBDR0Zsb2F0IGJvdHRvbTsKCgoK
CiAgQ0dGbG9hdCByaWdodDsKfTsKdHlwZWRlZiBzdHJ1Y3QgSElWaWV3RnJhbWVNZXRyaWNzIEhJ
Vmlld0ZyYW1lTWV0cmljczsKIyAxMjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElWaWV3
LmgiIDMKZW51bSB7CgoKCgoKCgogIGtISVZpZXdBdHRyaWJ1dGVTZW5kQ29tbWFuZFRvVXNlckZv
Y3VzID0gMSA8PCAwLAojIDEzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVZpZXcuaCIg
MwogIGtISVZpZXdBdHRyaWJ1dGVJc0ZpZWxkRWRpdG9yID0gMSA8PCAxLAoKCgoKCiAga0hJVmll
d1NlbmRDb21tYW5kVG9Vc2VyRm9jdXMgPSBrSElWaWV3QXR0cmlidXRlU2VuZENvbW1hbmRUb1Vz
ZXJGb2N1cwp9OwojIDE2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVZpZXcuaCIgMwpl
bnVtIHsKCgoKCgogIGtISVZpZXdGZWF0dXJlU3VwcG9ydHNHaG9zdGluZyA9IDEgPDwgMCwKCgoK
CiAga0hJVmlld0ZlYXR1cmVBbGxvd3NTdWJ2aWV3cyA9IDEgPDwgMSwKCgoKCgogIGtISVZpZXdG
ZWF0dXJlR2V0c0ZvY3VzT25DbGljayA9IDEgPDwgOCwKCgoKCgoKICBrSElWaWV3RmVhdHVyZVN1
cHBvcnRzTGl2ZUZlZWRiYWNrID0gMSA8PCAxMCwKCgoKCgogIGtISVZpZXdGZWF0dXJlU3VwcG9y
dHNSYWRpb0JlaGF2aW9yID0gMSA8PCAxMSwKIyAyMDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvSElWaWV3LmgiIDMKICBrSElWaWV3RmVhdHVyZUF1dG9Ub2dnbGVzID0gMSA8PCAxNCwKCgoK
CgoKICBrSElWaWV3RmVhdHVyZUlkbGVzV2l0aFRpbWVyID0gMSA8PCAyMywKIyAyMTggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElWaWV3LmgiIDMKICBrSElWaWV3RmVhdHVyZUludmVydHNV
cERvd25WYWx1ZU1lYW5pbmcgPSAxIDw8IDI0LAoKCgoKCgogIGtISVZpZXdGZWF0dXJlSXNPcGFx
dWUgPSAxIDw8IDI1LAojIDIzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVZpZXcuaCIg
MwogIGtISVZpZXdGZWF0dXJlRG9lc05vdERyYXcgPSAxIDw8IDI3LAoKCgoKCgogIGtISVZpZXdG
ZWF0dXJlRG9lc05vdFVzZVNwZWNpYWxQYXJ0cyA9IDEgPDwgMjgsCiMgMjUyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJVmlldy5oIiAzCiAga0hJVmlld0ZlYXR1cmVJZ25vcmVzQ2xpY2tz
ID0gMSA8PCAyOQp9OwojIDI2MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVZpZXcuaCIg
MwplbnVtIHsKICBrSElWaWV3VmFsaWRGZWF0dXJlc0ZvclBhbnRoZXIgPSAweDNCODA0RDAzCn07
CiMgMjc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVmlldy5oIiAzCmVudW0gewogIGtI
SVZpZXdTdXBwb3J0c0dob3N0aW5nID0ga0hJVmlld0ZlYXR1cmVTdXBwb3J0c0dob3N0aW5nLAog
IGtISVZpZXdBbGxvd3NTdWJ2aWV3cyA9IGtISVZpZXdGZWF0dXJlQWxsb3dzU3Vidmlld3MsCiAg
a0hJVmlld0dldHNGb2N1c09uQ2xpY2sgPSBrSElWaWV3RmVhdHVyZUdldHNGb2N1c09uQ2xpY2ss
CiAga0hJVmlld1N1cHBvcnRzTGl2ZUZlZWRiYWNrID0ga0hJVmlld0ZlYXR1cmVTdXBwb3J0c0xp
dmVGZWVkYmFjaywKICBrSElWaWV3U3VwcG9ydHNSYWRpb0JlaGF2aW9yID0ga0hJVmlld0ZlYXR1
cmVTdXBwb3J0c1JhZGlvQmVoYXZpb3IsCiAga0hJVmlld0F1dG9Ub2dnbGVzID0ga0hJVmlld0Zl
YXR1cmVBdXRvVG9nZ2xlcywKICBrSElWaWV3SWRsZXNXaXRoVGltZXIgPSBrSElWaWV3RmVhdHVy
ZUlkbGVzV2l0aFRpbWVyLAogIGtISVZpZXdJbnZlcnRzVXBEb3duVmFsdWVNZWFuaW5nID0ga0hJ
Vmlld0ZlYXR1cmVJbnZlcnRzVXBEb3duVmFsdWVNZWFuaW5nLAogIGtISVZpZXdJc09wYXF1ZSA9
IGtISVZpZXdGZWF0dXJlSXNPcGFxdWUsCiAga0hJVmlld0RvZXNOb3REcmF3ID0ga0hJVmlld0Zl
YXR1cmVEb2VzTm90RHJhdywKICBrSElWaWV3RG9lc05vdFVzZVNwZWNpYWxQYXJ0cyA9IGtISVZp
ZXdGZWF0dXJlRG9lc05vdFVzZVNwZWNpYWxQYXJ0cywKICBrSElWaWV3SWdub3Jlc0NsaWNrcyA9
IGtISVZpZXdGZWF0dXJlSWdub3Jlc0NsaWNrcwp9OwoKCnR5cGVkZWYgVUludDY0IEhJVmlld0Zl
YXR1cmVzOwoKCgp0eXBlZGVmIENvbnRyb2xQYXJ0Q29kZSBISVZpZXdQYXJ0Q29kZTsKCgoKCgpl
bnVtIHsKICBrSElWaWV3Tm9QYXJ0ID0gMCwKICBrSElWaWV3SW5kaWNhdG9yUGFydCA9IDEyOSwK
ICBrSElWaWV3RGlzYWJsZWRQYXJ0ID0gMjU0LAogIGtISVZpZXdJbmFjdGl2ZVBhcnQgPSAyNTUs
CgoKCgoKICBrSElWaWV3RW50aXJlVmlldyA9IGtISVZpZXdOb1BhcnQKfTsKIyAzMjggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElWaWV3LmgiIDMKZW51bSB7CiMgMzQ1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJVmlldy5oIiAzCiAga0hJVmlld1N0cnVjdHVyZU1ldGFQYXJ0ID0g
LTEsCiMgMzU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVmlldy5oIiAzCiAga0hJVmll
d0NvbnRlbnRNZXRhUGFydCA9IC0yLAojIDM3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVZpZXcuaCIgMwogIGtISVZpZXdPcGFxdWVNZXRhUGFydCA9IC0zLAojIDM5MCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISVZpZXcuaCIgMwogIGtISVZpZXdDbGlja2FibGVNZXRhUGFydCA9
IC00Cn07CgoKCgoKCmVudW0gewoKCgoKICBrSElWaWV3Rm9jdXNOb1BhcnQgPSBrSElWaWV3Tm9Q
YXJ0LAoKCgoKICBrSElWaWV3Rm9jdXNOZXh0UGFydCA9IC0xLAoKCgoKICBrSElWaWV3Rm9jdXNQ
cmV2UGFydCA9IC0yCn07CgoKCgp0eXBlZGVmIENvbnRyb2xDb250ZW50VHlwZSBISVZpZXdJbWFn
ZUNvbnRlbnRUeXBlOwp0eXBlZGVmIENvbnRyb2xJbWFnZUNvbnRlbnRJbmZvIEhJVmlld0ltYWdl
Q29udGVudEluZm87CnR5cGVkZWYgU0ludDE2IEhJVmlld0NvbnRlbnRUeXBlOwoKCgoKCgoKZW51
bSB7CgoKCgogIGtISVZpZXdDb250ZW50VGV4dE9ubHkgPSAwLAoKCgoKICBrSElWaWV3Q29udGVu
dE5vbmUgPSAwLAoKCgoKCiAga0hJVmlld0NvbnRlbnRJY29uU3VpdGVSZWYgPSAxMjksCgoKCgoK
ICBrSElWaWV3Q29udGVudEljb25SZWYgPSAxMzIsCgoKCgoKCiAga0hJVmlld0NvbnRlbnRDR0lt
YWdlUmVmID0gMTM0LAoKCgoKCgoKICBrSElWaWV3Q29udGVudEltYWdlUmVzb3VyY2UgPSAxMzUs
CgoKCgoKCgogIGtISVZpZXdDb250ZW50SW1hZ2VGaWxlID0gMTM2LAoKCgoKCgoKICBrSElWaWV3
Q29udGVudEljb25UeXBlQW5kQ3JlYXRvciA9IDEzNywKIyA0OTQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvSElWaWV3LmgiIDMKICBrSElWaWV3Q29udGVudEFsZXJ0SWNvblR5cGUgPSAxMzgs
CgoKCgoKCiAga0hJVmlld0NvbnRlbnROU0ltYWdlID0gMTM5Cn07CiMgNTExICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJVmlldy5oIiAzCnN0cnVjdCBISVR5cGVBbmRDcmVhdG9yIHsKCgoK
CiAgT1NUeXBlIHR5cGU7CgoKCgogIE9TVHlwZSBjcmVhdG9yOwp9Owp0eXBlZGVmIHN0cnVjdCBI
SVR5cGVBbmRDcmVhdG9yIEhJVHlwZUFuZENyZWF0b3I7CiMgNTUzICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJVmlldy5oIiAzCnN0cnVjdCBISVZpZXdDb250ZW50SW5mbyB7CgoKCgogIEhJ
Vmlld0NvbnRlbnRUeXBlIGNvbnRlbnRUeXBlOwogIHVuaW9uIHsKCgoKCgogICAgSWNvblJlZiBp
Y29uUmVmOwogICAgSElUeXBlQW5kQ3JlYXRvciBpY29uVHlwZUFuZENyZWF0b3I7CiAgICBDR0lt
YWdlUmVmIGltYWdlUmVmOwogICAgQ0ZTdHJpbmdSZWYgaW1hZ2VSZXNvdXJjZTsKICAgIENGVVJM
UmVmIGltYWdlRmlsZTsKCgogICAgTlNJbWFnZSAqIG5zSW1hZ2U7CgoKICB9IHU7Cn07CnR5cGVk
ZWYgc3RydWN0IEhJVmlld0NvbnRlbnRJbmZvIEhJVmlld0NvbnRlbnRJbmZvOwp0eXBlZGVmIEhJ
Vmlld0NvbnRlbnRJbmZvICogSElWaWV3Q29udGVudEluZm9QdHI7CiMgNTg3ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJVmlldy5oIiAzCmVudW0gewojIDU5OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISVZpZXcuaCIgMwogIGVyck5lZWRzQ29tcG9zaXRlZFdpbmRvdyA9IC0zMDU5
OAp9OwojIDYxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVZpZXcuaCIgMwojZGVmaW5l
IGtISVZpZXdDbGFzc0lEIENGU1RSKCJjb20uYXBwbGUuaGl2aWV3IikKIyA5NjggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElWaWV3LmgiIDMKc3RydWN0IEhJVmlld0tpbmQgewoKCgoKCiAg
T1NUeXBlIHNpZ25hdHVyZTsKCgoKCgogIE9TVHlwZSBraW5kOwp9Owp0eXBlZGVmIHN0cnVjdCBI
SVZpZXdLaW5kIEhJVmlld0tpbmQ7CgoKCgoKZW51bSB7CgoKCgogIGtISVZpZXdLaW5kU2lnbmF0
dXJlQXBwbGUgPSAnYXBwbCcKfTsKIyAyNzM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJ
Vmlldy5oIiAzCnR5cGVkZWYgc3RydWN0IE9wYXF1ZUhJVmlld1RyYWNraW5nQXJlYVJlZiogSElW
aWV3VHJhY2tpbmdBcmVhUmVmOwplbnVtIHsKICBrRXZlbnRQYXJhbUhJVmlld1RyYWNraW5nQXJl
YSA9ICdjdHJhJywKICB0eXBlSElWaWV3VHJhY2tpbmdBcmVhUmVmID0gJ2N0cmEnCn07CiMgMjc3
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVZpZXcuaCIgMwplbnVtIHsKICBrRXZlbnRD
b250cm9sVHJhY2tpbmdBcmVhRW50ZXJlZCA9IDIzCn07CiMgMjgyMiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISVZpZXcuaCIgMwplbnVtIHsKICBrRXZlbnRDb250cm9sVHJhY2tpbmdBcmVh
RXhpdGVkID0gMjQKfTsKCgp0eXBlZGVmIFVJbnQ2NCBISVZpZXdUcmFja2luZ0FyZWFJRDsKIyAz
NjA1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVmlldy5oIiAzCmVudW0gewojIDM2MTQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElWaWV3LmgiIDMKICBrSElWaWV3Rm9jdXNPbkFu
eUNvbnRyb2wgPSAxIDw8IDAsCiMgMzYyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVZp
ZXcuaCIgMwogIGtISVZpZXdGb2N1c1RyYWRpdGlvbmFsbHkgPSAxIDw8IDEsCiMgMzYzNCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVZpZXcuaCIgMwogIGtISVZpZXdGb2N1c1dpdGhvdXRX
cmFwcGluZyA9IDEgPDwgMgp9OwojIDQwMDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElW
aWV3LmgiIDMKZW51bSB7CgoKCgogIGtISUxheW91dEJpbmROb25lID0gMCwKCgoKCiAga0hJTGF5
b3V0QmluZE1pbiA9IDEsCgoKCgogIGtISUxheW91dEJpbmRNYXggPSAyLAogIGtISUxheW91dEJp
bmRMZWZ0ID0ga0hJTGF5b3V0QmluZE1pbiwKICBrSElMYXlvdXRCaW5kUmlnaHQgPSBrSElMYXlv
dXRCaW5kTWF4LAoKCgoKICBrSElMYXlvdXRCaW5kVG9wID0ga0hJTGF5b3V0QmluZE1pbiwKICBr
SElMYXlvdXRCaW5kQm90dG9tID0ga0hJTGF5b3V0QmluZE1heAp9OwoKdHlwZWRlZiBVSW50MTYg
SElCaW5kaW5nS2luZDsKIyA0MDQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVmlldy5o
IiAzCnN0cnVjdCBISVNpZGVCaW5kaW5nIHsKCgoKCgogIEhJVmlld1JlZiB0b1ZpZXc7CgoKCgog
IEhJQmluZGluZ0tpbmQga2luZDsKCgoKCiAgQ0dGbG9hdCBvZmZzZXQ7Cn07CnR5cGVkZWYgc3Ry
dWN0IEhJU2lkZUJpbmRpbmcgSElTaWRlQmluZGluZzsKCgoKCgoKCnN0cnVjdCBISUJpbmRpbmcg
ewoKCgoKICBISVNpZGVCaW5kaW5nIHRvcDsKCgoKCiAgSElTaWRlQmluZGluZyBsZWZ0OwoKCgoK
ICBISVNpZGVCaW5kaW5nIGJvdHRvbTsKCgoKCiAgSElTaWRlQmluZGluZyByaWdodDsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgSElCaW5kaW5nIEhJQmluZGluZzsKCgoKCgplbnVtIHsKCgoKCiAga0hJTGF5
b3V0U2NhbGVBYnNvbHV0ZSA9IDAKfTsKCgp0eXBlZGVmIFVJbnQxNiBISVNjYWxlS2luZDsKCgoK
CgoKCnN0cnVjdCBISUF4aXNTY2FsZSB7CgoKCgoKCiAgSElWaWV3UmVmIHRvVmlldzsKCgoKCgoK
ICBISVNjYWxlS2luZCBraW5kOwoKCgoKCgogIENHRmxvYXQgcmF0aW87Cn07CnR5cGVkZWYgc3Ry
dWN0IEhJQXhpc1NjYWxlIEhJQXhpc1NjYWxlOwoKCgoKCgoKc3RydWN0IEhJU2NhbGluZyB7CgoK
CgogIEhJQXhpc1NjYWxlIHg7CgoKCgogIEhJQXhpc1NjYWxlIHk7Cn07CnR5cGVkZWYgc3RydWN0
IEhJU2NhbGluZyBISVNjYWxpbmc7CiMgNDE3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVZpZXcuaCIgMwplbnVtIHsKCgoKCiAga0hJTGF5b3V0UG9zaXRpb25Ob25lID0gMCwKCgoKCgog
IGtISUxheW91dFBvc2l0aW9uQ2VudGVyID0gMSwKCgoKCgogIGtISUxheW91dFBvc2l0aW9uTWlu
ID0gMiwKCgoKCgogIGtISUxheW91dFBvc2l0aW9uTWF4ID0gMywKCgoKCiAga0hJTGF5b3V0UG9z
aXRpb25MZWZ0ID0ga0hJTGF5b3V0UG9zaXRpb25NaW4sCiAga0hJTGF5b3V0UG9zaXRpb25SaWdo
dCA9IGtISUxheW91dFBvc2l0aW9uTWF4LAogIGtISUxheW91dFBvc2l0aW9uVG9wID0ga0hJTGF5
b3V0UG9zaXRpb25NaW4sCiAga0hJTGF5b3V0UG9zaXRpb25Cb3R0b20gPSBrSElMYXlvdXRQb3Np
dGlvbk1heAp9OwoKCnR5cGVkZWYgVUludDE2IEhJUG9zaXRpb25LaW5kOwoKCgoKCgoKc3RydWN0
IEhJQXhpc1Bvc2l0aW9uIHsKCgoKCgoKICBISVZpZXdSZWYgdG9WaWV3OwoKCgoKICBISVBvc2l0
aW9uS2luZCBraW5kOwoKCgoKCgogIENHRmxvYXQgb2Zmc2V0Owp9Owp0eXBlZGVmIHN0cnVjdCBI
SUF4aXNQb3NpdGlvbiBISUF4aXNQb3NpdGlvbjsKCgoKCgoKCnN0cnVjdCBISVBvc2l0aW9uaW5n
IHsKCgoKCgogIEhJQXhpc1Bvc2l0aW9uIHg7CiAgSElBeGlzUG9zaXRpb24geTsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgSElQb3NpdGlvbmluZyBISVBvc2l0aW9uaW5nOwojIDQyNzggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElWaWV3LmgiIDMKc3RydWN0IEhJTGF5b3V0SW5mbyB7CgoKCgoKICBV
SW50MzIgdmVyc2lvbjsKCgoKCgogIEhJQmluZGluZyBiaW5kaW5nOwoKCgoKCiAgSElTY2FsaW5n
IHNjYWxlOwoKCgoKCiAgSElQb3NpdGlvbmluZyBwb3NpdGlvbjsKfTsKdHlwZWRlZiBzdHJ1Y3Qg
SElMYXlvdXRJbmZvIEhJTGF5b3V0SW5mbzsKZW51bSB7CiAga0hJTGF5b3V0SW5mb1ZlcnNpb25a
ZXJvID0gMAp9OwojIDUwNTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElWaWV3LmgiIDMK
ZW51bSB7CgoKCgogIGtISVRyYW5zZm9ybU5vbmUgPSAweDAwLAoKCgoKCiAga0hJVHJhbnNmb3Jt
RGlzYWJsZWQgPSAweDAxLAoKCgoKCiAga0hJVHJhbnNmb3JtU2VsZWN0ZWQgPSAweDQwMDAKfTsK
IyA1MTg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVmlldy5oIiAzCiNwcmFnbWEgcGFj
ayhwb3ApCgoKfQojIDQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJveC5oIiAy
IDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGV4dFV0aWxzLmgiIDEgMwoj
IDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGV4dFV0aWxzLmgiIDMKI2RlZmluZSBf
X0hJVEVYVFVUSUxTX18gCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUZXh0VXRp
bHMuaCIgMwpleHRlcm4gIkMiIHsKIyAxMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElU
ZXh0VXRpbHMuaCIgMwp9CiMgNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYm94
LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElBY2Nlc3NpYmlsaXR5
LmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJQWNjZXNzaWJpbGl0eS5o
IiAzCiNkZWZpbmUgX19ISUFDQ0VTU0lCSUxJVFlfXyAKIyA2NCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISUFjY2Vzc2liaWxpdHkuaCIgMwpleHRlcm4gIkMiIHsKIyAxMjEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElBY2Nlc3NpYmlsaXR5LmgiIDMKZW51bSB7CiAga0V2ZW50QWNj
ZXNzaWJsZUdldENoaWxkQXRQb2ludCA9IDEKfTsKIyAxNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElBY2Nlc3NpYmlsaXR5LmgiIDMKZW51bSB7CiAga0V2ZW50QWNjZXNzaWJsZUdldEZv
Y3VzZWRDaGlsZCA9IDIKfTsKIyAxODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElBY2Nl
c3NpYmlsaXR5LmgiIDMKZW51bSB7CiAga0V2ZW50QWNjZXNzaWJsZUdldEFsbEF0dHJpYnV0ZU5h
bWVzID0gMjEKfTsKIyAyMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElBY2Nlc3NpYmls
aXR5LmgiIDMKZW51bSB7CiAga0V2ZW50QWNjZXNzaWJsZUdldEFsbFBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGVOYW1lcyA9IDI1Cn07CiMgMjY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJQWNj
ZXNzaWJpbGl0eS5oIiAzCmVudW0gewogIGtFdmVudEFjY2Vzc2libGVHZXROYW1lZEF0dHJpYnV0
ZSA9IDIyCn07CiMgMzAzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJQWNjZXNzaWJpbGl0
eS5oIiAzCmVudW0gewogIGtFdmVudEFjY2Vzc2libGVTZXROYW1lZEF0dHJpYnV0ZSA9IDIzCn07
CiMgMzQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJQWNjZXNzaWJpbGl0eS5oIiAzCmVu
dW0gewogIGtFdmVudEFjY2Vzc2libGVJc05hbWVkQXR0cmlidXRlU2V0dGFibGUgPSAyNAp9Owoj
IDM3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUFjY2Vzc2liaWxpdHkuaCIgMwplbnVt
IHsKICBrRXZlbnRBY2Nlc3NpYmxlR2V0QWxsQWN0aW9uTmFtZXMgPSA0MQp9OwojIDQyNCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUFjY2Vzc2liaWxpdHkuaCIgMwplbnVtIHsKICBrRXZl
bnRBY2Nlc3NpYmxlUGVyZm9ybU5hbWVkQWN0aW9uID0gNDIKfTsKIyA0NjYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElBY2Nlc3NpYmlsaXR5LmgiIDMKZW51bSB7CiAga0V2ZW50QWNjZXNz
aWJsZUdldE5hbWVkQWN0aW9uRGVzY3JpcHRpb24gPSA0NAp9OwojIDk3NCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9ISUFjY2Vzc2liaWxpdHkuaCIgMwp9CiMgNTAgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElUb29sYm94LmgiIDIgMwoKCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL05vdGlmaWNhdGlvbi5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9Ob3RpZmljYXRpb24uaCIgMwojZGVmaW5lIF9fTk9USUZJQ0FUSU9OX18gCiMgMzEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTm90aWZpY2F0aW9uLmgiIDMKZXh0ZXJuICJDIiB7CgoK
I3ByYWdtYSBwYWNrKHB1c2gsIDIpCgp0eXBlZGVmIHN0cnVjdCBOTVJlYyBOTVJlYzsKdHlwZWRl
ZiBOTVJlYyAqIE5NUmVjUHRyOwp0eXBlZGVmIHZvaWQgKCAqIE5NUHJvY1B0cikoTk1SZWNQdHIg
bm1SZXFQdHIpOwp0eXBlZGVmIE5NUHJvY1B0ciBOTVVQUDsKc3RydWN0IE5NUmVjIHsKICBRRWxl
bVB0ciBxTGluazsKICBzaG9ydCBxVHlwZTsKICBzaG9ydCBubUZsYWdzOwogIFNSZWZDb24gbm1Q
cml2YXRlOwogIHNob3J0IG5tUmVzZXJ2ZWQ7CiAgc2hvcnQgbm1NYXJrOwogIEhhbmRsZSBubUlj
b247CiAgSGFuZGxlIG5tU291bmQ7CiAgU3RyaW5nUHRyIG5tU3RyOwogIE5NVVBQIG5tUmVzcDsK
ICBTUmVmQ29uIG5tUmVmQ29uOwp9OwojIDYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL05v
dGlmaWNhdGlvbi5oIiAzCmV4dGVybiBOTVVQUApOZXdOTVVQUChOTVByb2NQdHIgdXNlclJvdXRp
bmUpIDsKIyA3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9Ob3RpZmljYXRpb24uaCIgMwpl
eHRlcm4gdm9pZApEaXNwb3NlTk1VUFAoTk1VUFAgdXNlclVQUCkgOwojIDg0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL05vdGlmaWNhdGlvbi5oIiAzCmV4dGVybiB2b2lkCkludm9rZU5NVVBQ
KAogIE5NUmVjUHRyIG5tUmVxUHRyLAogIE5NVVBQIHVzZXJVUFApIDsKCgoKICAgIGlubGluZSBO
TVVQUCBOZXdOTVVQUChOTVByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5l
OyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlTk1VUFAoTk1VUFApIHsgfQogICAgaW5saW5lIHZv
aWQgSW52b2tlTk1VUFAoTk1SZWNQdHIgbm1SZXFQdHIsIE5NVVBQIHVzZXJVUFApIHsgKCp1c2Vy
VVBQKShubVJlcVB0cik7IH0KIyAxMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTm90aWZp
Y2F0aW9uLmgiIDMKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgNTggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvSElUb29sYm94LmgiIDIgMwojIDg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJVG9vbGJveC5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EaWFsb2dzLmgi
IDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RpYWxvZ3MuaCIgMwojZGVmaW5l
IF9fRElBTE9HU19fIAojIDUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RpYWxvZ3MuaCIg
MwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKCmVudW0gewoKICBrQ29udHJv
bERpYWxvZ0l0ZW0gPSA0LAogIGtCdXR0b25EaWFsb2dJdGVtID0ga0NvbnRyb2xEaWFsb2dJdGVt
IHwgMCwKICBrQ2hlY2tCb3hEaWFsb2dJdGVtID0ga0NvbnRyb2xEaWFsb2dJdGVtIHwgMSwKICBr
UmFkaW9CdXR0b25EaWFsb2dJdGVtID0ga0NvbnRyb2xEaWFsb2dJdGVtIHwgMiwKICBrUmVzb3Vy
Y2VDb250cm9sRGlhbG9nSXRlbSA9IGtDb250cm9sRGlhbG9nSXRlbSB8IDMsCiAga1N0YXRpY1Rl
eHREaWFsb2dJdGVtID0gOCwKICBrRWRpdFRleHREaWFsb2dJdGVtID0gMTYsCiAga0ljb25EaWFs
b2dJdGVtID0gMzIsCiAga1BpY3R1cmVEaWFsb2dJdGVtID0gNjQsCiAga1VzZXJEaWFsb2dJdGVt
ID0gMCwKICBrSGVscERpYWxvZ0l0ZW0gPSAxLAogIGtJdGVtRGlzYWJsZUJpdCA9IDEyOAp9OwoK
ZW51bSB7CgogIGN0cmxJdGVtID0gNCwKICBidG5DdHJsID0gMCwKICBjaGtDdHJsID0gMSwKICBy
YWRDdHJsID0gMiwKICByZXNDdHJsID0gMywKICBzdGF0VGV4dCA9IDgsCiAgZWRpdFRleHQgPSAx
NiwKICBpY29uSXRlbSA9IDMyLAogIHBpY0l0ZW0gPSA2NCwKICB1c2VySXRlbSA9IDAsCiAgaXRl
bURpc2FibGUgPSAxMjgKfTsKCmVudW0gewoKICBrU3RkT2tJdGVtSW5kZXggPSAxLAogIGtTdGRD
YW5jZWxJdGVtSW5kZXggPSAyLAogIG9rID0ga1N0ZE9rSXRlbUluZGV4LAogIGNhbmNlbCA9IGtT
dGRDYW5jZWxJdGVtSW5kZXgKfTsKCmVudW0gewoKICBrU3RvcEljb24gPSAwLAogIGtOb3RlSWNv
biA9IDEsCiAga0NhdXRpb25JY29uID0gMiwKICBzdG9wSWNvbiA9IGtTdG9wSWNvbiwKICBub3Rl
SWNvbiA9IGtOb3RlSWNvbiwKICBjYXV0aW9uSWNvbiA9IGtDYXV0aW9uSWNvbgp9OwojIDEyNCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EaWFsb2dzLmgiIDMKdHlwZWRlZiBTSW50MTYgRElU
TE1ldGhvZDsKZW51bSB7CiAgb3ZlcmxheURJVEwgPSAwLAogIGFwcGVuZERJVExSaWdodCA9IDEs
CiAgYXBwZW5kRElUTEJvdHRvbSA9IDIKfTsKCnR5cGVkZWYgU0ludDE2IFN0YWdlTGlzdDsKCnR5
cGVkZWYgRGlhbG9nUHRyIERpYWxvZ1JlZjsKIyAxNDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvRGlhbG9ncy5oIiAzCnN0cnVjdCBEaWFsb2dUZW1wbGF0ZSB7CiAgUmVjdCBib3VuZHNSZWN0
OwogIFNJbnQxNiBwcm9jSUQ7CiAgQm9vbGVhbiB2aXNpYmxlOwogIEJvb2xlYW4gZmlsbGVyMTsK
ICBCb29sZWFuIGdvQXdheUZsYWc7CiAgQm9vbGVhbiBmaWxsZXIyOwogIFNJbnQzMiByZWZDb247
CiAgU0ludDE2IGl0ZW1zSUQ7CiAgU3RyMjU1IHRpdGxlOwp9Owp0eXBlZGVmIHN0cnVjdCBEaWFs
b2dUZW1wbGF0ZSBEaWFsb2dUZW1wbGF0ZTsKdHlwZWRlZiBEaWFsb2dUZW1wbGF0ZSAqIERpYWxv
Z1RQdHI7CnR5cGVkZWYgRGlhbG9nVFB0ciAqIERpYWxvZ1RIbmRsOwpzdHJ1Y3QgQWxlcnRUZW1w
bGF0ZSB7CiAgUmVjdCBib3VuZHNSZWN0OwogIFNJbnQxNiBpdGVtc0lEOwogIFN0YWdlTGlzdCBz
dGFnZXM7Cn07CnR5cGVkZWYgc3RydWN0IEFsZXJ0VGVtcGxhdGUgQWxlcnRUZW1wbGF0ZTsKdHlw
ZWRlZiBBbGVydFRlbXBsYXRlICogQWxlcnRUUHRyOwp0eXBlZGVmIEFsZXJ0VFB0ciAqIEFsZXJ0
VEhuZGw7Cgp0eXBlZGVmIFNJbnQxNiBEaWFsb2dJdGVtSW5kZXhaZXJvQmFzZWQ7CnR5cGVkZWYg
U0ludDE2IERpYWxvZ0l0ZW1JbmRleDsKdHlwZWRlZiBTSW50MTYgRGlhbG9nSXRlbVR5cGU7Cgp0
eXBlZGVmIHZvaWQgKCAqIFNvdW5kUHJvY1B0cikoU0ludDE2IHNvdW5kTnVtYmVyKTsKdHlwZWRl
ZiBCb29sZWFuICggKiBNb2RhbEZpbHRlclByb2NQdHIpKERpYWxvZ1JlZiB0aGVEaWFsb2csIEV2
ZW50UmVjb3JkICp0aGVFdmVudCwgRGlhbG9nSXRlbUluZGV4ICppdGVtSGl0KTsKCnR5cGVkZWYg
Qm9vbGVhbiAoICogTW9kYWxGaWx0ZXJZRFByb2NQdHIpKERpYWxvZ1JlZiB0aGVEaWFsb2csIEV2
ZW50UmVjb3JkICp0aGVFdmVudCwgc2hvcnQgKml0ZW1IaXQsIHZvaWQgKnlvdXJEYXRhUHRyKTsK
dHlwZWRlZiB2b2lkICggKiBVc2VySXRlbVByb2NQdHIpKERpYWxvZ1JlZiB0aGVEaWFsb2csIERp
YWxvZ0l0ZW1JbmRleCBpdGVtTm8pOwp0eXBlZGVmIFNvdW5kUHJvY1B0ciBTb3VuZFVQUDsKdHlw
ZWRlZiBNb2RhbEZpbHRlclByb2NQdHIgTW9kYWxGaWx0ZXJVUFA7CnR5cGVkZWYgTW9kYWxGaWx0
ZXJZRFByb2NQdHIgTW9kYWxGaWx0ZXJZRFVQUDsKdHlwZWRlZiBVc2VySXRlbVByb2NQdHIgVXNl
ckl0ZW1VUFA7CiMgMjAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RpYWxvZ3MuaCIgMwpl
eHRlcm4gTW9kYWxGaWx0ZXJVUFAKTmV3TW9kYWxGaWx0ZXJVUFAoTW9kYWxGaWx0ZXJQcm9jUHRy
IHVzZXJSb3V0aW5lKSA7CiMgMjExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RpYWxvZ3Mu
aCIgMwpleHRlcm4gTW9kYWxGaWx0ZXJZRFVQUApOZXdNb2RhbEZpbHRlcllEVVBQKE1vZGFsRmls
dGVyWURQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMjIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0RpYWxvZ3MuaCIgMwpleHRlcm4gVXNlckl0ZW1VUFAKTmV3VXNlckl0ZW1VUFAoVXNlckl0
ZW1Qcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMjQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0RpYWxvZ3MuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlTW9kYWxGaWx0ZXJVUFAoTW9kYWxGaWx0
ZXJVUFAgdXNlclVQUCkgOwojIDI1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EaWFsb2dz
LmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZU1vZGFsRmlsdGVyWURVUFAoTW9kYWxGaWx0ZXJZRFVQ
UCB1c2VyVVBQKSA7CiMgMjY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RpYWxvZ3MuaCIg
MwpleHRlcm4gdm9pZApEaXNwb3NlVXNlckl0ZW1VUFAoVXNlckl0ZW1VUFAgdXNlclVQUCkgOwoj
IDI4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EaWFsb2dzLmgiIDMKZXh0ZXJuIEJvb2xl
YW4KSW52b2tlTW9kYWxGaWx0ZXJVUFAoCiAgRGlhbG9nUmVmIHRoZURpYWxvZywKICBFdmVudFJl
Y29yZCAqIHRoZUV2ZW50LAogIERpYWxvZ0l0ZW1JbmRleCAqIGl0ZW1IaXQsCiAgTW9kYWxGaWx0
ZXJVUFAgdXNlclVQUCkgOwojIDI5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EaWFsb2dz
LmgiIDMKZXh0ZXJuIEJvb2xlYW4KSW52b2tlTW9kYWxGaWx0ZXJZRFVQUCgKICBEaWFsb2dSZWYg
dGhlRGlhbG9nLAogIEV2ZW50UmVjb3JkICogdGhlRXZlbnQsCiAgc2hvcnQgKiBpdGVtSGl0LAog
IHZvaWQgKiB5b3VyRGF0YVB0ciwKICBNb2RhbEZpbHRlcllEVVBQIHVzZXJVUFApIDsKIyAzMTUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRGlhbG9ncy5oIiAzCmV4dGVybiB2b2lkCkludm9r
ZVVzZXJJdGVtVVBQKAogIERpYWxvZ1JlZiB0aGVEaWFsb2csCiAgRGlhbG9nSXRlbUluZGV4IGl0
ZW1ObywKICBVc2VySXRlbVVQUCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgTW9kYWxGaWx0ZXJV
UFAgTmV3TW9kYWxGaWx0ZXJVUFAoTW9kYWxGaWx0ZXJQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJl
dHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIE1vZGFsRmlsdGVyWURVUFAgTmV3TW9kYWxG
aWx0ZXJZRFVQUChNb2RhbEZpbHRlcllEUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNl
clJvdXRpbmU7IH0KICAgIGlubGluZSBVc2VySXRlbVVQUCBOZXdVc2VySXRlbVVQUChVc2VySXRl
bVByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUg
dm9pZCBEaXNwb3NlTW9kYWxGaWx0ZXJVUFAoTW9kYWxGaWx0ZXJVUFApIHsgfQogICAgaW5saW5l
IHZvaWQgRGlzcG9zZU1vZGFsRmlsdGVyWURVUFAoTW9kYWxGaWx0ZXJZRFVQUCkgeyB9CiAgICBp
bmxpbmUgdm9pZCBEaXNwb3NlVXNlckl0ZW1VUFAoVXNlckl0ZW1VUFApIHsgfQogICAgaW5saW5l
IEJvb2xlYW4gSW52b2tlTW9kYWxGaWx0ZXJVUFAoRGlhbG9nUmVmIHRoZURpYWxvZywgRXZlbnRS
ZWNvcmQgKiB0aGVFdmVudCwgRGlhbG9nSXRlbUluZGV4ICogaXRlbUhpdCwgTW9kYWxGaWx0ZXJV
UFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKSh0aGVEaWFsb2csIHRoZUV2ZW50LCBpdGVt
SGl0KTsgfQogICAgaW5saW5lIEJvb2xlYW4gSW52b2tlTW9kYWxGaWx0ZXJZRFVQUChEaWFsb2dS
ZWYgdGhlRGlhbG9nLCBFdmVudFJlY29yZCAqIHRoZUV2ZW50LCBzaG9ydCAqIGl0ZW1IaXQsIHZv
aWQgKiB5b3VyRGF0YVB0ciwgTW9kYWxGaWx0ZXJZRFVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVz
ZXJVUFApKHRoZURpYWxvZywgdGhlRXZlbnQsIGl0ZW1IaXQsIHlvdXJEYXRhUHRyKTsgfQogICAg
aW5saW5lIHZvaWQgSW52b2tlVXNlckl0ZW1VUFAoRGlhbG9nUmVmIHRoZURpYWxvZywgRGlhbG9n
SXRlbUluZGV4IGl0ZW1ObywgVXNlckl0ZW1VUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKHRoZURp
YWxvZywgaXRlbU5vKTsgfQojIDM1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EaWFsb2dz
LmgiIDMKZW51bSB7CgogIGtBbGVydFN0b3BBbGVydCA9IDAsCiAga0FsZXJ0Tm90ZUFsZXJ0ID0g
MSwKICBrQWxlcnRDYXV0aW9uQWxlcnQgPSAyLAogIGtBbGVydFBsYWluQWxlcnQgPSAzCn07Cgp0
eXBlZGVmIFNJbnQxNiBBbGVydFR5cGU7CmVudW0gewogIGtBbGVydERlZmF1bHRPS1RleHQgPSAt
MSwKICBrQWxlcnREZWZhdWx0Q2FuY2VsVGV4dCA9IC0xLAogIGtBbGVydERlZmF1bHRPdGhlclRl
eHQgPSAtMQp9OwoKCmVudW0gewogIGtBbGVydFN0ZEFsZXJ0T0tCdXR0b24gPSAxLAogIGtBbGVy
dFN0ZEFsZXJ0Q2FuY2VsQnV0dG9uID0gMiwKICBrQWxlcnRTdGRBbGVydE90aGVyQnV0dG9uID0g
MywKICBrQWxlcnRTdGRBbGVydEhlbHBCdXR0b24gPSA0Cn07CiMgMzgyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0RpYWxvZ3MuaCIgMwplbnVtIHsKCgoKCgoKICBrRGlhbG9nRmxhZ3NVc2VU
aGVtZUJhY2tncm91bmQgPSAoMSA8PCAwKSwKCgoKCgoKICBrRGlhbG9nRmxhZ3NVc2VDb250cm9s
SGllcmFyY2h5ID0gKDEgPDwgMSksCgoKCgoKICBrRGlhbG9nRmxhZ3NIYW5kbGVNb3ZhYmxlTW9k
YWwgPSAoMSA8PCAyKSwKIyA0MTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRGlhbG9ncy5o
IiAzCiAga0RpYWxvZ0ZsYWdzVXNlVGhlbWVDb250cm9scyA9ICgxIDw8IDMpLAoKCgoKCgoKICBr
RGlhbG9nRmxhZ3NVc2VDb21wb3NpdGluZyA9ICgxIDw8IDgpCn07CiMgNDMwICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0RpYWxvZ3MuaCIgMwplbnVtIHsKCgoKCgoKCiAga0FsZXJ0RmxhZ3NV
c2VUaGVtZUJhY2tncm91bmQgPSAoMSA8PCAwKSwKCgoKCgoKICBrQWxlcnRGbGFnc1VzZUNvbnRy
b2xIaWVyYXJjaHkgPSAoMSA8PCAxKSwKCgoKCgogIGtBbGVydEZsYWdzQWxlcnRJc01vdmFibGUg
PSAoMSA8PCAyKSwKIyA0NjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvRGlhbG9ncy5oIiAz
CiAga0FsZXJ0RmxhZ3NVc2VUaGVtZUNvbnRyb2xzID0gKDEgPDwgMyksCgoKCgoKCiAga0FsZXJ0
RmxhZ3NVc2VDb21wb3NpdGluZyA9ICgxIDw8IDgpCn07CgoKZW51bSB7CiAga0RpYWxvZ0ZvbnRO
b0ZvbnRTdHlsZSA9IDAsCiAga0RpYWxvZ0ZvbnRVc2VGb250TWFzayA9IDB4MDAwMSwKICBrRGlh
bG9nRm9udFVzZUZhY2VNYXNrID0gMHgwMDAyLAogIGtEaWFsb2dGb250VXNlU2l6ZU1hc2sgPSAw
eDAwMDQsCiAga0RpYWxvZ0ZvbnRVc2VGb3JlQ29sb3JNYXNrID0gMHgwMDA4LAogIGtEaWFsb2dG
b250VXNlQmFja0NvbG9yTWFzayA9IDB4MDAxMCwKICBrRGlhbG9nRm9udFVzZU1vZGVNYXNrID0g
MHgwMDIwLAogIGtEaWFsb2dGb250VXNlSnVzdE1hc2sgPSAweDAwNDAsCiAga0RpYWxvZ0ZvbnRV
c2VBbGxNYXNrID0gMHgwMEZGLAogIGtEaWFsb2dGb250QWRkRm9udFNpemVNYXNrID0gMHgwMTAw
LAogIGtEaWFsb2dGb250VXNlRm9udE5hbWVNYXNrID0gMHgwMjAwLAogIGtEaWFsb2dGb250QWRk
VG9NZXRhRm9udE1hc2sgPSAweDA0MDAKfTsKCgoKZW51bSB7CiAga0RpYWxvZ0ZvbnRVc2VUaGVt
ZUZvbnRJRE1hc2sgPSAweDAwODAKfTsKIyA1MDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
RGlhbG9ncy5oIiAzCnN0cnVjdCBBbGVydFN0ZEFsZXJ0UGFyYW1SZWMgewoKCgoKCiAgQm9vbGVh
biBtb3ZhYmxlOwoKCgoKICBCb29sZWFuIGhlbHBCdXR0b247CgoKCgogIE1vZGFsRmlsdGVyVVBQ
IGZpbHRlclByb2M7CgoKCgoKICBDb25zdFN0cmluZ1B0ciBkZWZhdWx0VGV4dDsKCgoKCgogIENv
bnN0U3RyaW5nUHRyIGNhbmNlbFRleHQ7CgoKCgoKICBDb25zdFN0cmluZ1B0ciBvdGhlclRleHQ7
CiMgNTQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0RpYWxvZ3MuaCIgMwogIFNJbnQxNiBk
ZWZhdWx0QnV0dG9uOwoKCgoKCgogIFNJbnQxNiBjYW5jZWxCdXR0b247CgoKCgoKICBVSW50MTYg
cG9zaXRpb247Cn07CnR5cGVkZWYgc3RydWN0IEFsZXJ0U3RkQWxlcnRQYXJhbVJlYyBBbGVydFN0
ZEFsZXJ0UGFyYW1SZWM7CnR5cGVkZWYgQWxlcnRTdGRBbGVydFBhcmFtUmVjICogQWxlcnRTdGRB
bGVydFBhcmFtUHRyOwplbnVtIHsKICBrSElDb21tYW5kT3RoZXIgPSAnb3RocicKfTsKCgoKCmVu
dW0gewoKCgoKICBrU3RkQ0ZTdHJpbmdBbGVydFZlcnNpb25PbmUgPSAxLAoKCgoKCgogIGtTdGRD
RlN0cmluZ0FsZXJ0VmVyc2lvblR3byA9IDIKfTsKCgoKCgoKCmVudW0gewoKCgoKCgogIGtTdGRB
bGVydERvTm90RGlzcG9zZVNoZWV0ID0gMSA8PCAwLAoKCgoKCgogIGtTdGRBbGVydERvTm90QW5p
bWF0ZU9uRGVmYXVsdCA9IDEgPDwgMSwKCgoKCgoKICBrU3RkQWxlcnREb05vdEFuaW1hdGVPbkNh
bmNlbCA9IDEgPDwgMiwKCgoKCgoKICBrU3RkQWxlcnREb05vdEFuaW1hdGVPbk90aGVyID0gMSA8
PCAzLAojIDYzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EaWFsb2dzLmgiIDMKICBrU3Rk
QWxlcnREb05vdENsb3NlT25IZWxwID0gMSA8PCA0Cn07CiMgNjQ5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0RpYWxvZ3MuaCIgMwpzdHJ1Y3QgQWxlcnRTdGRDRlN0cmluZ0FsZXJ0UGFyYW1S
ZWMgewoKCgoKCgoKICBVSW50MzIgdmVyc2lvbjsKCgoKCgogIEJvb2xlYW4gbW92YWJsZTsKCgoK
CiAgQm9vbGVhbiBoZWxwQnV0dG9uOwoKCgoKICBDRlN0cmluZ1JlZiBkZWZhdWx0VGV4dDsKCgoK
CiAgQ0ZTdHJpbmdSZWYgY2FuY2VsVGV4dDsKCgoKCiAgQ0ZTdHJpbmdSZWYgb3RoZXJUZXh0Owoj
IDY5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9EaWFsb2dzLmgiIDMKICBTSW50MTYgZGVm
YXVsdEJ1dHRvbjsKCgoKCgoKICBTSW50MTYgY2FuY2VsQnV0dG9uOwoKCgoKCiAgVUludDE2IHBv
c2l0aW9uOwoKCgoKICBPcHRpb25CaXRzIGZsYWdzOwoKCgoKCgogIEljb25SZWYgaWNvbjsKfTsK
dHlwZWRlZiBzdHJ1Y3QgQWxlcnRTdGRDRlN0cmluZ0FsZXJ0UGFyYW1SZWMgQWxlcnRTdGRDRlN0
cmluZ0FsZXJ0UGFyYW1SZWM7CnR5cGVkZWYgQWxlcnRTdGRDRlN0cmluZ0FsZXJ0UGFyYW1SZWMg
KiBBbGVydFN0ZENGU3RyaW5nQWxlcnRQYXJhbVB0cjsKIyAyMTY5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0RpYWxvZ3MuaCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyA4NiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9ISVRvb2xib3guaCIgMiAzCiMgOTcgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElUb29sYm94LmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L1RleHRTZXJ2aWNlcy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0
U2VydmljZXMuaCIgMwojZGVmaW5lIF9fVEVYVFNFUlZJQ0VTX18gCiMgMzIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvVGV4dFNlcnZpY2VzLmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0FFSW50ZXJhY3Rpb24uaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvQUVJbnRlcmFjdGlvbi5oIiAzCiNkZWZpbmUgX19BRUlOVEVSQUNUSU9OX18gCiMgNDQgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQUVJbnRlcmFjdGlvbi5oIiAzCmV4dGVybiAiQyIgewoK
CgoKCnR5cGVkZWYgQm9vbGVhbiAoICogQUVJZGxlUHJvY1B0cikoRXZlbnRSZWNvcmQgKnRoZUV2
ZW50LCBTSW50MzIgKnNsZWVwVGltZSwgUmduSGFuZGxlICptb3VzZVJnbik7CnR5cGVkZWYgQm9v
bGVhbiAoICogQUVGaWx0ZXJQcm9jUHRyKShFdmVudFJlY29yZCAqdGhlRXZlbnQsIFNJbnQzMiBy
ZXR1cm5JRCwgQUVUcmFuc2FjdGlvbklEIHRyYW5zYWN0aW9uSUQsIGNvbnN0IEFFQWRkcmVzc0Rl
c2MgKnNlbmRlcik7CnR5cGVkZWYgQUVJZGxlUHJvY1B0ciBBRUlkbGVVUFA7CnR5cGVkZWYgQUVG
aWx0ZXJQcm9jUHRyIEFFRmlsdGVyVVBQOwojIDcwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0FFSW50ZXJhY3Rpb24uaCIgMwpleHRlcm4gT1NFcnIKQUVTZW5kKAogIGNvbnN0IEFwcGxlRXZl
bnQgKiB0aGVBcHBsZUV2ZW50LAogIEFwcGxlRXZlbnQgKiByZXBseSwKICBBRVNlbmRNb2RlIHNl
bmRNb2RlLAogIEFFU2VuZFByaW9yaXR5IHNlbmRQcmlvcml0eSwKICBTSW50MzIgdGltZU91dElu
VGlja3MsCiAgQUVJZGxlVVBQIGlkbGVQcm9jLAogIEFFRmlsdGVyVVBQIGZpbHRlclByb2MpIDsK
IyA5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BRUludGVyYWN0aW9uLmgiIDMKZXh0ZXJu
IE9TRXJyCkFFUHJvY2Vzc0FwcGxlRXZlbnQoY29uc3QgRXZlbnRSZWNvcmQgKiB0aGVFdmVudFJl
Y29yZCkgOwojIDEzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BRUludGVyYWN0aW9uLmgi
IDMKZXh0ZXJuIE9TU3RhdHVzCkFFUHJvY2Vzc0V2ZW50KEV2ZW50UmVmIGluRXZlbnQpIDsKIyAx
NTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQUVJbnRlcmFjdGlvbi5oIiAzCmV4dGVybiBP
U0VycgpBRVJlc2V0VGltZXIoY29uc3QgQXBwbGVFdmVudCAqIHJlcGx5KSA7CiMgMTY0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0FFSW50ZXJhY3Rpb24uaCIgMwp0eXBlZGVmIFNJbnQ4IEFF
SW50ZXJhY3RBbGxvd2VkOwplbnVtIHsKICBrQUVJbnRlcmFjdFdpdGhTZWxmID0gMCwKICBrQUVJ
bnRlcmFjdFdpdGhMb2NhbCA9IDEsCiAga0FFSW50ZXJhY3RXaXRoQWxsID0gMgp9OwojIDE4MiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BRUludGVyYWN0aW9uLmgiIDMKZXh0ZXJuIE9TRXJy
CkFFR2V0SW50ZXJhY3Rpb25BbGxvd2VkKEFFSW50ZXJhY3RBbGxvd2VkICogbGV2ZWwpIDsKIyAx
OTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQUVJbnRlcmFjdGlvbi5oIiAzCmV4dGVybiBP
U0VycgpBRVNldEludGVyYWN0aW9uQWxsb3dlZChBRUludGVyYWN0QWxsb3dlZCBsZXZlbCkgOwoj
IDIxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BRUludGVyYWN0aW9uLmgiIDMKZXh0ZXJu
IE9TRXJyCkFFSW50ZXJhY3RXaXRoVXNlcigKICBTSW50MzIgdGltZU91dEluVGlja3MsCiAgTk1S
ZWNQdHIgbm1SZXFQdHIsCiAgQUVJZGxlVVBQIGlkbGVQcm9jKSA7CiMgMjQwICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0FFSW50ZXJhY3Rpb24uaCIgMwpleHRlcm4gT1NFcnIKQUVTdXNwZW5k
VGhlQ3VycmVudEV2ZW50KGNvbnN0IEFwcGxlRXZlbnQgKiB0aGVBcHBsZUV2ZW50KSA7CiMgMjU4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0FFSW50ZXJhY3Rpb24uaCIgMwplbnVtIHsKICBr
QUVEb05vdElnbm9yZUhhbmRsZXIgPSAweDAwMDAwMDAwLAogIGtBRUlnbm9yZUFwcFBoYWNIYW5k
bGVyID0gMHgwMDAwMDAwMSwKICBrQUVJZ25vcmVBcHBFdmVudEhhbmRsZXIgPSAweDAwMDAwMDAy
LAogIGtBRUlnbm9yZVN5c1BoYWNIYW5kbGVyID0gMHgwMDAwMDAwNCwKICBrQUVJZ25vcmVTeXNF
dmVudEhhbmRsZXIgPSAweDAwMDAwMDA4LAogIGtBRUluZ29yZUJ1aWx0SW5FdmVudEhhbmRsZXIg
PSAweDAwMDAwMDEwLAogIGtBRURvbnREaXNwb3NlT25SZXN1bWUgPSAoaW50KTB4ODAwMDAwMDAK
fTsKCgplbnVtIHsKICBrQUVOb0Rpc3BhdGNoID0gMCwKICBrQUVVc2VTdGFuZGFyZERpc3BhdGNo
ID0gKGludCkweEZGRkZGRkZGCn07CiMgMjg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0FF
SW50ZXJhY3Rpb24uaCIgMwpleHRlcm4gT1NFcnIKQUVSZXN1bWVUaGVDdXJyZW50RXZlbnQoCiAg
Y29uc3QgQXBwbGVFdmVudCAqIHRoZUFwcGxlRXZlbnQsCiAgY29uc3QgQXBwbGVFdmVudCAqIHJl
cGx5LAogIEFFRXZlbnRIYW5kbGVyVVBQIGRpc3BhdGNoZXIsCiAgU1JlZkNvbiBoYW5kbGVyUmVm
Y29uKSA7CiMgMzA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0FFSW50ZXJhY3Rpb24uaCIg
MwpleHRlcm4gT1NFcnIKQUVHZXRUaGVDdXJyZW50RXZlbnQoQXBwbGVFdmVudCAqIHRoZUFwcGxl
RXZlbnQpIDsKIyAzMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQUVJbnRlcmFjdGlvbi5o
IiAzCmV4dGVybiBPU0VycgpBRVNldFRoZUN1cnJlbnRFdmVudChjb25zdCBBcHBsZUV2ZW50ICog
dGhlQXBwbGVFdmVudCkgOwojIDMzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BRUludGVy
YWN0aW9uLmgiIDMKZXh0ZXJuIEFFSWRsZVVQUApOZXdBRUlkbGVVUFAoQUVJZGxlUHJvY1B0ciB1
c2VyUm91dGluZSkgOwojIDM0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BRUludGVyYWN0
aW9uLmgiIDMKZXh0ZXJuIEFFRmlsdGVyVVBQCk5ld0FFRmlsdGVyVVBQKEFFRmlsdGVyUHJvY1B0
ciB1c2VyUm91dGluZSkgOwojIDM1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BRUludGVy
YWN0aW9uLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUFFSWRsZVVQUChBRUlkbGVVUFAgdXNlclVQ
UCkgOwojIDM2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BRUludGVyYWN0aW9uLmgiIDMK
ZXh0ZXJuIHZvaWQKRGlzcG9zZUFFRmlsdGVyVVBQKEFFRmlsdGVyVVBQIHVzZXJVUFApIDsKIyAz
NzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQUVJbnRlcmFjdGlvbi5oIiAzCmV4dGVybiBC
b29sZWFuCkludm9rZUFFSWRsZVVQUCgKICBFdmVudFJlY29yZCAqIHRoZUV2ZW50LAogIFNJbnQz
MiAqIHNsZWVwVGltZSwKICBSZ25IYW5kbGUgKiBtb3VzZVJnbiwKICBBRUlkbGVVUFAgdXNlclVQ
UCkgOwojIDM5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BRUludGVyYWN0aW9uLmgiIDMK
ZXh0ZXJuIEJvb2xlYW4KSW52b2tlQUVGaWx0ZXJVUFAoCiAgRXZlbnRSZWNvcmQgKiB0aGVFdmVu
dCwKICBTSW50MzIgcmV0dXJuSUQsCiAgQUVUcmFuc2FjdGlvbklEIHRyYW5zYWN0aW9uSUQsCiAg
Y29uc3QgQUVBZGRyZXNzRGVzYyAqIHNlbmRlciwKICBBRUZpbHRlclVQUCB1c2VyVVBQKSA7CgoK
CiAgICBpbmxpbmUgQUVJZGxlVVBQIE5ld0FFSWRsZVVQUChBRUlkbGVQcm9jUHRyIHVzZXJSb3V0
aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIEFFRmlsdGVyVVBQIE5ld0FF
RmlsdGVyVVBQKEFFRmlsdGVyUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRp
bmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VBRUlkbGVVUFAoQUVJZGxlVVBQKSB7IH0KICAg
IGlubGluZSB2b2lkIERpc3Bvc2VBRUZpbHRlclVQUChBRUZpbHRlclVQUCkgeyB9CiAgICBpbmxp
bmUgQm9vbGVhbiBJbnZva2VBRUlkbGVVUFAoRXZlbnRSZWNvcmQgKiB0aGVFdmVudCwgU0ludDMy
ICogc2xlZXBUaW1lLCBSZ25IYW5kbGUgKiBtb3VzZVJnbiwgQUVJZGxlVVBQIHVzZXJVUFApIHsg
cmV0dXJuICgqdXNlclVQUCkodGhlRXZlbnQsIHNsZWVwVGltZSwgbW91c2VSZ24pOyB9CiAgICBp
bmxpbmUgQm9vbGVhbiBJbnZva2VBRUZpbHRlclVQUChFdmVudFJlY29yZCAqIHRoZUV2ZW50LCBT
SW50MzIgcmV0dXJuSUQsIEFFVHJhbnNhY3Rpb25JRCB0cmFuc2FjdGlvbklELCBjb25zdCBBRUFk
ZHJlc3NEZXNjICogc2VuZGVyLCBBRUZpbHRlclVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJV
UFApKHRoZUV2ZW50LCByZXR1cm5JRCwgdHJhbnNhY3Rpb25JRCwgc2VuZGVyKTsgfQojIDQyNSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9BRUludGVyYWN0aW9uLmgiIDMKfQojIDMzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL1RleHRTZXJ2aWNlcy5oIiAyIDMKIyA1MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9UZXh0U2VydmljZXMuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21h
IHBhY2socHVzaCwgMikKCmVudW0gewogIGtUZXh0U2VydmljZSA9ICd0c3ZjJwp9OwojIDcwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRTZXJ2aWNlcy5oIiAzCmVudW0gewogIGtUU01W
ZXJzaW9uID0gMHgwMTUwLAogIGtUU00xNVZlcnNpb24gPSBrVFNNVmVyc2lvbiwKICBrVFNNMjBW
ZXJzaW9uID0gMHgwMjAwLAogIGtUU00yMlZlcnNpb24gPSAweDAyMjAsCiAga1RTTTIzVmVyc2lv
biA9IDB4MDIzMCwKICBrVFNNMjRWZXJzaW9uID0gMHgwMjQwCn07CgoKCnR5cGVkZWYgT1NUeXBl
IEludGVyZmFjZVR5cGVMaXN0WzFdOwp0eXBlZGVmIE9TVHlwZSBUU01Eb2N1bWVudEludGVyZmFj
ZVR5cGU7CiMgOTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dFNlcnZpY2VzLmgiIDMK
ZW51bSB7CiMgMTA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRTZXJ2aWNlcy5oIiAz
CiAga1RleHRTZXJ2aWNlRG9jdW1lbnRJbnRlcmZhY2VUeXBlID0ga1RleHRTZXJ2aWNlLAoKCgoK
CgoKICBrVFNNVEVEb2N1bWVudEludGVyZmFjZVR5cGUgPSAndG1URScsCgoKCgoKCgogIGtVbmlj
b2RlRG9jdW1lbnRJbnRlcmZhY2VUeXBlID0gJ3Vkb2MnLAoKICBrVW5pY29kZURvY3VtZW50ID0g
a1VuaWNvZGVEb2N1bWVudEludGVyZmFjZVR5cGUKfTsKCgoKCgp0eXBlZGVmIE9TVHlwZSBUZXh0
U2VydmljZUNsYXNzOwojIDE0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0U2Vydmlj
ZXMuaCIgMwplbnVtIHsKIyAxNTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dFNlcnZp
Y2VzLmgiIDMKICBrS2V5Ym9hcmRJbnB1dE1ldGhvZENsYXNzID0gJ2lucG0nLAojIDE3NiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0U2VydmljZXMuaCIgMwogIGtJbmtJbnB1dE1ldGhv
ZENsYXNzID0gJ2luayAnLAojIDIwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0U2Vy
dmljZXMuaCIgMwogIGtDaGFyYWN0ZXJQYWxldHRlSW5wdXRNZXRob2RDbGFzcyA9ICdjcGx0JywK
IyAyMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dFNlcnZpY2VzLmgiIDMKICBrU3Bl
ZWNoSW5wdXRNZXRob2RDbGFzcyA9ICd2b2ljJywKIyAyMjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvVGV4dFNlcnZpY2VzLmgiIDMKICBrT0NSSW5wdXRNZXRob2RDbGFzcyA9ICdvY3IgJwp9
OwoKCnR5cGVkZWYgc3RydWN0IE9wYXF1ZVRTTURvY3VtZW50SUQqIFRTTURvY3VtZW50SUQ7CiMg
MjM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRTZXJ2aWNlcy5oIiAzCnR5cGVkZWYg
T1NUeXBlIFRTTURvY3VtZW50UHJvcGVydHlUYWc7CiMgMjYyICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL1RleHRTZXJ2aWNlcy5oIiAzCmVudW0gewojIDI3NyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9UZXh0U2VydmljZXMuaCIgMwogIGtUU01Eb2N1bWVudFRleHRTZXJ2aWNlUHJvcGVy
dHlUYWcgPSBrVGV4dFNlcnZpY2VEb2N1bWVudEludGVyZmFjZVR5cGUsCgoKCgoKCgogIGtUU01E
b2N1bWVudFVuaWNvZGVQcm9wZXJ0eVRhZyA9IGtVbmljb2RlRG9jdW1lbnRJbnRlcmZhY2VUeXBl
LAoKCgoKCgoKICBrVFNNRG9jdW1lbnRUU01URVByb3BlcnR5VGFnID0ga1RTTVRFRG9jdW1lbnRJ
bnRlcmZhY2VUeXBlLAojIDMwOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0U2Vydmlj
ZXMuaCIgMwogIGtUU01Eb2N1bWVudFN1cHBvcnRHbHlwaEluZm9Qcm9wZXJ0eVRhZyA9ICdkcGdp
JywKIyAzMjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dFNlcnZpY2VzLmgiIDMKICBr
VFNNRG9jdW1lbnRVc2VGbG9hdGluZ1dpbmRvd1Byb3BlcnR5VGFnID0gJ3Vzd20nLAojIDMzMyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0U2VydmljZXMuaCIgMwogIGtUU01Eb2N1bWVu
dFVuaWNvZGVJbnB1dFdpbmRvd1Byb3BlcnR5VGFnID0gJ2RwdWInLAojIDM0NyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9UZXh0U2VydmljZXMuaCIgMwogIGtUU01Eb2N1bWVudFN1cHBvcnRE
b2N1bWVudEFjY2Vzc1Byb3BlcnR5VGFnID0gJ2RhcHknLAoKICBrVFNNRG9jdW1lbnRQcm9wZXJ0
eVN1cHBvcnRHbHlwaEluZm8gPSBrVFNNRG9jdW1lbnRTdXBwb3J0R2x5cGhJbmZvUHJvcGVydHlU
YWcsCiAga1RTTURvY3VtZW50UHJvcGVydHlVbmljb2RlSW5wdXRXaW5kb3cgPSBrVFNNRG9jdW1l
bnRVbmljb2RlSW5wdXRXaW5kb3dQcm9wZXJ0eVRhZywKIyAzNjAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvVGV4dFNlcnZpY2VzLmgiIDMKICBrVFNNRG9jdW1lbnRSZWZjb25Qcm9wZXJ0eVRh
ZyA9ICdyZWZjJywKIyAzNzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dFNlcnZpY2Vz
LmgiIDMKICBrVFNNRG9jdW1lbnRJbnB1dE1vZGVQcm9wZXJ0eVRhZyA9ICdpbWltJywKIyAzOTQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dFNlcnZpY2VzLmgiIDMKICBrVFNNRG9jdW1l
bnRXaW5kb3dMZXZlbFByb3BlcnR5VGFnID0gJ3R3bHAnLAojIDQwOSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9UZXh0U2VydmljZXMuaCIgMwogIGtUU01Eb2N1bWVudElucHV0U291cmNlT3Zl
cnJpZGVQcm9wZXJ0eVRhZyA9ICdpbmlzJywKIyA0MzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvVGV4dFNlcnZpY2VzLmgiIDMKICBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2VzUHJv
cGVydHlUYWcgPSAnZW5pcycKfTsKIyA0NjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4
dFNlcnZpY2VzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRTTVNldERvY3VtZW50UHJvcGVydHkoCiAg
VFNNRG9jdW1lbnRJRCBkb2NJRCwKICBUU01Eb2N1bWVudFByb3BlcnR5VGFnIHByb3BlcnR5VGFn
LAogIFVJbnQzMiBwcm9wZXJ0eVNpemUsCiAgdm9pZCAqIHByb3BlcnR5RGF0YSkgOwojIDQ5OCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0U2VydmljZXMuaCIgMwpleHRlcm4gT1NTdGF0
dXMKVFNNR2V0RG9jdW1lbnRQcm9wZXJ0eSgKICBUU01Eb2N1bWVudElEIGRvY0lELAogIFRTTURv
Y3VtZW50UHJvcGVydHlUYWcgcHJvcGVydHlUYWcsCiAgVUludDMyIGJ1ZmZlclNpemUsCiAgVUlu
dDMyICogYWN0dWFsU2l6ZSwKICB2b2lkICogcHJvcGVydHlCdWZmZXIpIDsKIyA1MTggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dFNlcnZpY2VzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzClRT
TVJlbW92ZURvY3VtZW50UHJvcGVydHkoCiAgVFNNRG9jdW1lbnRJRCBkb2NJRCwKICBUU01Eb2N1
bWVudFByb3BlcnR5VGFnIHByb3BlcnR5VGFnKSA7CgoKCgplbnVtIHsKICBrVW5rbm93bkxhbmd1
YWdlID0gMHhGRkZGLAogIGtVbmtub3duU2NyaXB0ID0gMHhGRkZGLAogIGtOZXV0cmFsU2NyaXB0
ID0gMHhGRkZGCn07CgoKZW51bSB7CgogIGJUYWtlQWN0aXZlRXZlbnQgPSAxNSwKICBiSGFuZGxl
QUVSZWNvcmRpbmcgPSAxNiwKICBiU2NyaXB0TWFzayA9IDB4MDAwMDdGMDAsCiAgYkxhbmd1YWdl
TWFzayA9IDB4MDAwMDAwRkYsCiAgYlNjcmlwdExhbmd1YWdlTWFzayA9IGJTY3JpcHRNYXNrICsg
Ykxhbmd1YWdlTWFzawp9OwoKCmVudW0gewoKICBrQ01HZXRTY3JpcHRMYW5nU3VwcG9ydCA9IDB4
MDAwMSwKICBrQ01Jbml0aWF0ZVRleHRTZXJ2aWNlID0gMHgwMDAyLAogIGtDTVRlcm1pbmF0ZVRl
eHRTZXJ2aWNlID0gMHgwMDAzLAogIGtDTUFjdGl2YXRlVGV4dFNlcnZpY2UgPSAweDAwMDQsCiAg
a0NNRGVhY3RpdmF0ZVRleHRTZXJ2aWNlID0gMHgwMDA1LAogIGtDTVRleHRTZXJ2aWNlRXZlbnQg
PSAweDAwMDYsCiAga0NNVGV4dFNlcnZpY2VFdmVudFJlZiA9IGtDTVRleHRTZXJ2aWNlRXZlbnQs
CiAga0NNR2V0VGV4dFNlcnZpY2VNZW51ID0gMHgwMDA3LAogIGtDTVRleHRTZXJ2aWNlTWVudVNl
bGVjdCA9IDB4MDAwOCwKICBrQ01GaXhUZXh0U2VydmljZSA9IDB4MDAwOSwKICBrQ01TZXRUZXh0
U2VydmljZUN1cnNvciA9IDB4MDAwQSwKICBrQ01IaWRlUGFsZXR0ZVdpbmRvd3MgPSAweDAwMEIs
CiAga0NNR2V0VGV4dFNlcnZpY2VQcm9wZXJ0eSA9IDB4MDAwQywKICBrQ01TZXRUZXh0U2Vydmlj
ZVByb3BlcnR5ID0gMHgwMDBELAogIGtDTVVDVGV4dFNlcnZpY2VFdmVudCA9IDB4MDAwRSwKICBr
Q01Db3B5VGV4dFNlcnZpY2VJbnB1dE1vZGVMaXN0ID0gMHgwMDBGLAogIGtDTUlucHV0TW9kZVBh
bGV0dGVJdGVtSGl0ID0gMHgwMDEwLAogIGtDTUdldElucHV0TW9kZVBhbGV0dGVNZW51ID0gMHgw
MDExCn07CgoKCgojZGVmaW5lIG1HZXRTY3JpcHRDb2RlKGNkUmVjKSAoKFNjcmlwdENvZGUpICgo
Y2RSZWMuY29tcG9uZW50RmxhZ3MgJiBiU2NyaXB0TWFzaykgPj4gOCkpCiNkZWZpbmUgbUdldExh
bmd1YWdlQ29kZShjZFJlYykgKChMYW5nQ29kZSkgY2RSZWMuY29tcG9uZW50RmxhZ3MgJiBiTGFu
Z3VhZ2VNYXNrKQoKCnN0cnVjdCBUZXh0U2VydmljZUluZm8gewogIENvbXBvbmVudCBmQ29tcG9u
ZW50OwogIFN0cjI1NSBmSXRlbU5hbWU7Cn07CnR5cGVkZWYgc3RydWN0IFRleHRTZXJ2aWNlSW5m
byBUZXh0U2VydmljZUluZm87CnR5cGVkZWYgVGV4dFNlcnZpY2VJbmZvICogVGV4dFNlcnZpY2VJ
bmZvUHRyOwpzdHJ1Y3QgVGV4dFNlcnZpY2VMaXN0IHsKICBzaG9ydCBmVGV4dFNlcnZpY2VDb3Vu
dDsKICBUZXh0U2VydmljZUluZm8gZlNlcnZpY2VzWzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBUZXh0
U2VydmljZUxpc3QgVGV4dFNlcnZpY2VMaXN0Owp0eXBlZGVmIFRleHRTZXJ2aWNlTGlzdCAqIFRl
eHRTZXJ2aWNlTGlzdFB0cjsKdHlwZWRlZiBUZXh0U2VydmljZUxpc3RQdHIgKiBUZXh0U2Vydmlj
ZUxpc3RIYW5kbGU7CnN0cnVjdCBTY3JpcHRMYW5ndWFnZVJlY29yZCB7CiAgU2NyaXB0Q29kZSBm
U2NyaXB0OwogIExhbmdDb2RlIGZMYW5ndWFnZTsKfTsKdHlwZWRlZiBzdHJ1Y3QgU2NyaXB0TGFu
Z3VhZ2VSZWNvcmQgU2NyaXB0TGFuZ3VhZ2VSZWNvcmQ7CnN0cnVjdCBTY3JpcHRMYW5ndWFnZVN1
cHBvcnQgewogIFNJbnQxNiBmU2NyaXB0TGFuZ3VhZ2VDb3VudDsKICBTY3JpcHRMYW5ndWFnZVJl
Y29yZCBmU2NyaXB0TGFuZ3VhZ2VBcnJheVsxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgU2NyaXB0TGFu
Z3VhZ2VTdXBwb3J0IFNjcmlwdExhbmd1YWdlU3VwcG9ydDsKdHlwZWRlZiBTY3JpcHRMYW5ndWFn
ZVN1cHBvcnQgKiBTY3JpcHRMYW5ndWFnZVN1cHBvcnRQdHI7CnR5cGVkZWYgU2NyaXB0TGFuZ3Vh
Z2VTdXBwb3J0UHRyICogU2NyaXB0TGFuZ3VhZ2VTdXBwb3J0SGFuZGxlOwpzdHJ1Y3QgVFNNR2x5
cGhJbmZvIHsKICBDRlJhbmdlIHJhbmdlOwogIEFUU0ZvbnRSZWYgZm9udFJlZjsKICBVSW50MTYg
Y29sbGVjdGlvbjsKICBVSW50MTYgZ2x5cGhJRDsKfTsKdHlwZWRlZiBzdHJ1Y3QgVFNNR2x5cGhJ
bmZvIFRTTUdseXBoSW5mbzsKc3RydWN0IFRTTUdseXBoSW5mb0FycmF5IHsKICBJdGVtQ291bnQg
bnVtR2x5cGhJbmZvOwogIFRTTUdseXBoSW5mbyBnbHlwaEluZm9bMV07Cn07CnR5cGVkZWYgc3Ry
dWN0IFRTTUdseXBoSW5mb0FycmF5IFRTTUdseXBoSW5mb0FycmF5OwojIDExMzAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvVGV4dFNlcnZpY2VzLmgiIDMKdHlwZWRlZiBPU1R5cGUgVGV4dFNl
cnZpY2VQcm9wZXJ0eVRhZzsKIyAxMTQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRT
ZXJ2aWNlcy5oIiAzCmVudW0gewojIDExNTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4
dFNlcnZpY2VzLmgiIDMKICBrVGV4dFNlcnZpY2VKYVR5cGluZ01ldGhvZFByb3BlcnR5VGFnID0g
J2p0eXAnLAojIDExOTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dFNlcnZpY2VzLmgi
IDMKICBrVGV4dFNlcnZpY2VJbnB1dE1vZGVQcm9wZXJ0eVRhZyA9IGtUU01Eb2N1bWVudElucHV0
TW9kZVByb3BlcnR5VGFnLAoKICBrSU1KYVR5cGluZ01ldGhvZFByb3BlcnR5ID0ga1RleHRTZXJ2
aWNlSmFUeXBpbmdNZXRob2RQcm9wZXJ0eVRhZywKCiAga0lNSmFUeXBpbmdNZXRob2RSb21hbiA9
ICdyb21hJywKICBrSU1KYVR5cGluZ01ldGhvZEthbmEgPSAna2FuYScKfTsKCgoKdHlwZWRlZiB2
b2lkICogVGV4dFNlcnZpY2VQcm9wZXJ0eVZhbHVlOwojIDEyMTcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvVGV4dFNlcnZpY2VzLmgiIDMKI2RlZmluZSBrVGV4dFNlcnZpY2VJbnB1dE1vZGVS
b21hbiBDRlNUUigiY29tLmFwcGxlLmlucHV0bWV0aG9kLlJvbWFuIikKI2RlZmluZSBrVGV4dFNl
cnZpY2VJbnB1dE1vZGVQYXNzd29yZCBDRlNUUigiY29tLmFwcGxlLmlucHV0bWV0aG9kLlBhc3N3
b3JkIikKCiNkZWZpbmUga1RleHRTZXJ2aWNlSW5wdXRNb2RlSmFwYW5lc2VIaXJhZ2FuYSBDRlNU
UigiY29tLmFwcGxlLmlucHV0bWV0aG9kLkphcGFuZXNlLkhpcmFnYW5hIikKCiNkZWZpbmUga1Rl
eHRTZXJ2aWNlSW5wdXRNb2RlSmFwYW5lc2VLYXRha2FuYSBDRlNUUigiY29tLmFwcGxlLmlucHV0
bWV0aG9kLkphcGFuZXNlLkthdGFrYW5hIikKI2RlZmluZSBrVGV4dFNlcnZpY2VJbnB1dE1vZGVK
YXBhbmVzZUZ1bGxXaWR0aFJvbWFuIENGU1RSKCJjb20uYXBwbGUuaW5wdXRtZXRob2QuSmFwYW5l
c2UuRnVsbFdpZHRoUm9tYW4iKQojZGVmaW5lIGtUZXh0U2VydmljZUlucHV0TW9kZUphcGFuZXNl
SGFsZldpZHRoS2FuYSBDRlNUUigiY29tLmFwcGxlLmlucHV0bWV0aG9kLkphcGFuZXNlLkhhbGZX
aWR0aEthbmEiKQojZGVmaW5lIGtUZXh0U2VydmljZUlucHV0TW9kZUphcGFuZXNlUGxhY2VOYW1l
IENGU1RSKCJjb20uYXBwbGUuaW5wdXRtZXRob2QuSmFwYW5lc2UuUGxhY2VOYW1lIikKI2RlZmlu
ZSBrVGV4dFNlcnZpY2VJbnB1dE1vZGVKYXBhbmVzZUZpcnN0TmFtZSBDRlNUUigiY29tLmFwcGxl
LmlucHV0bWV0aG9kLkphcGFuZXNlLkZpcnN0TmFtZSIpCiNkZWZpbmUga1RleHRTZXJ2aWNlSW5w
dXRNb2RlSmFwYW5lc2VMYXN0TmFtZSBDRlNUUigiY29tLmFwcGxlLmlucHV0bWV0aG9kLkphcGFu
ZXNlLkxhc3ROYW1lIikKCiNkZWZpbmUga1RleHRTZXJ2aWNlSW5wdXRNb2RlQm9wb21vZm8gQ0ZT
VFIoImNvbS5hcHBsZS5pbnB1dG1ldGhvZC5UcmFkQ2hpbmVzZS5Cb3BvbW9mbyIpCiNkZWZpbmUg
a1RleHRTZXJ2aWNlSW5wdXRNb2RlVHJhZENoaW5lc2VQbGFjZU5hbWUgQ0ZTVFIoImNvbS5hcHBs
ZS5pbnB1dG1ldGhvZC5UcmFkQ2hpbmVzZS5QbGFjZU5hbWUiKQoKI2RlZmluZSBrVGV4dFNlcnZp
Y2VJbnB1dE1vZGVIYW5ndWwgQ0ZTVFIoImNvbS5hcHBsZS5pbnB1dG1ldGhvZC5Lb3JlYW4uSGFu
Z3VsIikKCgoKCgojZGVmaW5lIGtUZXh0U2VydmljZUlucHV0TW9kZUphcGFuZXNlIENGU1RSKCJj
b20uYXBwbGUuaW5wdXRtZXRob2QuSmFwYW5lc2UiKQoKI2RlZmluZSBrVGV4dFNlcnZpY2VJbnB1
dE1vZGVUcmFkQ2hpbmVzZSBDRlNUUigiY29tLmFwcGxlLmlucHV0bWV0aG9kLlRyYWRDaGluZXNl
IikKCiNkZWZpbmUga1RleHRTZXJ2aWNlSW5wdXRNb2RlU2ltcENoaW5lc2UgQ0ZTVFIoImNvbS5h
cHBsZS5pbnB1dG1ldGhvZC5TaW1wQ2hpbmVzZSIpCgojZGVmaW5lIGtUZXh0U2VydmljZUlucHV0
TW9kZUtvcmVhbiBDRlNUUigiY29tLmFwcGxlLmlucHV0bWV0aG9kLktvcmVhbiIpCiMgMTM2OCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0U2VydmljZXMuaCIgMwojZGVmaW5lIGtDb21w
b25lbnRCdW5kbGVJbnB1dE1vZGVEaWN0S2V5IENGU1RSKCJDb21wb25lbnRJbnB1dE1vZGVEaWN0
IikKIyAxMzc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRTZXJ2aWNlcy5oIiAzCiNk
ZWZpbmUga1RTSW5wdXRNZXRob2RJY29uRmlsZUtleSBDRlNUUigidHNJbnB1dE1ldGhvZEljb25G
aWxlS2V5IikKI2RlZmluZSBrVFNJbnB1dE1ldGhvZEFsdGVybmF0ZUljb25GaWxlS2V5IENGU1RS
KCJ0c0lucHV0TWV0aG9kQWx0ZXJuYXRlSWNvbkZpbGVLZXkiKQoKCgoKCgojZGVmaW5lIGtUU0lu
cHV0TW9kZUxpc3RLZXkgQ0ZTVFIoInRzSW5wdXRNb2RlTGlzdEtleSIpCiNkZWZpbmUga1RTSW5w
dXRNb2RlTWVudUljb25GaWxlS2V5IENGU1RSKCJ0c0lucHV0TW9kZU1lbnVJY29uRmlsZUtleSIp
CiNkZWZpbmUga1RTSW5wdXRNb2RlQWx0ZXJuYXRlTWVudUljb25GaWxlS2V5IENGU1RSKCJ0c0lu
cHV0TW9kZUFsdGVybmF0ZU1lbnVJY29uRmlsZUtleSIpCiNkZWZpbmUga1RTSW5wdXRNb2RlUGFs
ZXR0ZUljb25GaWxlS2V5IENGU1RSKCJ0c0lucHV0TW9kZVBhbGV0dGVJY29uRmlsZUtleSIpCiNk
ZWZpbmUga1RTSW5wdXRNb2RlRGVmYXVsdFN0YXRlS2V5IENGU1RSKCJ0c0lucHV0TW9kZURlZmF1
bHRTdGF0ZUtleSIpCiNkZWZpbmUga1RTSW5wdXRNb2RlU2NyaXB0S2V5IENGU1RSKCJ0c0lucHV0
TW9kZVNjcmlwdEtleSIpCiNkZWZpbmUga1RTSW5wdXRNb2RlUHJpbWFyeUluU2NyaXB0S2V5IENG
U1RSKCJ0c0lucHV0TW9kZVByaW1hcnlJblNjcmlwdEtleSIpCiNkZWZpbmUga1RTSW5wdXRNb2Rl
SXNWaXNpYmxlS2V5IENGU1RSKCJ0c0lucHV0TW9kZUlzVmlzaWJsZUtleSIpCiNkZWZpbmUga1RT
SW5wdXRNb2RlS2V5RXF1aXZhbGVudE1vZGlmaWVyc0tleSBDRlNUUigidHNJbnB1dE1vZGVLZXlF
cXVpdmFsZW50TW9kaWZpZXJzS2V5IikKI2RlZmluZSBrVFNJbnB1dE1vZGVLZXlFcXVpdmFsZW50
S2V5IENGU1RSKCJ0c0lucHV0TW9kZUtleUVxdWl2YWxlbnRLZXkiKQojZGVmaW5lIGtUU0lucHV0
TW9kZUpJU0tleWJvYXJkU2hvcnRjdXRLZXkgQ0ZTVFIoInRzSW5wdXRNb2RlSklTS2V5Ym9hcmRT
aG9ydGN1dEtleSIpCgoKCgoKCiNkZWZpbmUga1RTVmlzaWJsZUlucHV0TW9kZU9yZGVyZWRBcnJh
eUtleSBDRlNUUigidHNWaXNpYmxlSW5wdXRNb2RlT3JkZXJlZEFycmF5S2V5IikKCgoKCgoKI2Rl
ZmluZSBrQ29tcG9uZW50QnVuZGxlSW52aXNpYmxlSW5TeXN0ZW1VSUtleSBDRlNUUigiQ29tcG9u
ZW50SW52aXNpYmxlSW5TeXN0ZW1VSSIpCiMgMTUwMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9UZXh0U2VydmljZXMuaCIgMwpleHRlcm4gVFNNRG9jdW1lbnRJRApUU01HZXRBY3RpdmVEb2N1
bWVudCh2b2lkKSA7CiMgMTc4MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0U2Vydmlj
ZXMuaCIgMwojZGVmaW5lIGtUU0lucHV0TW9kZVBhbGV0dGVJdGVtVHlwZUtleSBDRlNUUigidHNJ
bnB1dE1vZGVQYWxldHRlSXRlbVR5cGVLZXkiKQoKCiNkZWZpbmUga1RTSW5wdXRNb2RlUGFsZXR0
ZUl0ZW1JY29uS2V5IENGU1RSKCJ0c0lucHV0TW9kZVBhbGV0dGVJdGVtSWNvbktleSIpCgoKI2Rl
ZmluZSBrVFNJbnB1dE1vZGVQYWxldHRlSXRlbUFsdEljb25LZXkgQ0ZTVFIoInRzSW5wdXRNb2Rl
UGFsZXR0ZUl0ZW1BbHRJY29uS2V5IikKCgojZGVmaW5lIGtUU0lucHV0TW9kZVBhbGV0dGVJdGVt
U3RhdGVLZXkgQ0ZTVFIoInRzSW5wdXRNb2RlUGFsZXR0ZUl0ZW1TdGF0ZUtleSIpCgoKI2RlZmlu
ZSBrVFNJbnB1dE1vZGVQYWxldHRlSXRlbUVuYWJsZWRLZXkgQ0ZTVFIoInRzSW5wdXRNb2RlUGFs
ZXR0ZUl0ZW1FbmFibGVkS2V5IikKCgojZGVmaW5lIGtUU0lucHV0TW9kZVBhbGV0dGVJdGVtSURL
ZXkgQ0ZTVFIoInRzSW5wdXRNb2RlUGFsZXR0ZUl0ZW1JREtleSIpCiMgMTkzMyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9UZXh0U2VydmljZXMuaCIgMwojZGVmaW5lIGtUU0lucHV0TW9kZVBh
bGV0dGVJdGVtVGl0bGVLZXkgQ0ZTVFIoInRzSW5wdXRNb2RlUGFsZXR0ZUl0ZW1UaXRsZUtleSIp
CgoKI2RlZmluZSBrVFNJbnB1dE1vZGVQYWxldHRlSXRlbUtleUVxdWl2YWxlbnRLZXkgQ0ZTVFIo
InRzSW5wdXRNb2RlUGFsZXR0ZUl0ZW1LZXlFcXVpdmFsZW50S2V5IikKCgojZGVmaW5lIGtUU0lu
cHV0TW9kZVBhbGV0dGVJdGVtS2V5RXF1aXZhbGVudE1vZGlmaWVyc0tleSBDRlNUUigidHNJbnB1
dE1vZGVQYWxldHRlSXRlbUtleUVxdWl2YWxlbnRNb2RpZmllcnNLZXkiKQoKCgoKCiNwcmFnbWEg
cGFjayhwb3ApCgoKfQojIDk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJveC5o
IiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1NjcmFwLmgiIDEgMwojIDE3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1NjcmFwLmgiIDMKI2RlZmluZSBfX1NDUkFQX18g
CiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvU2NyYXAuaCIgMwpleHRlcm4gIkMiIHsK
CgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9T
Y3JhcC5oIiAzCnR5cGVkZWYgRm91ckNoYXJDb2RlIFNjcmFwRmxhdm9yVHlwZTsKZW51bSB7CiAg
a1NjcmFwRmxhdm9yVHlwZVBpY3R1cmUgPSAnUElDVCcsCiAga1NjcmFwRmxhdm9yVHlwZVRleHQg
PSAnVEVYVCcsCiAga1NjcmFwRmxhdm9yVHlwZVRleHRTdHlsZSA9ICdzdHlsJywKICBrU2NyYXBG
bGF2b3JUeXBlTW92aWUgPSAnbW9vdicsCiAga1NjcmFwRmxhdm9yVHlwZVNvdW5kID0gJ3NuZCAn
LAogIGtTY3JhcEZsYXZvclR5cGVVbmljb2RlID0gJ3V0eHQnLAogIGtTY3JhcEZsYXZvclR5cGVV
VEYxNkV4dGVybmFsID0gJ3V0MTYnLAogIGtTY3JhcEZsYXZvclR5cGVVbmljb2RlU3R5bGUgPSAn
dXN0bCcKfTsKIyAxMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvU2NyYXAuaCIgMwplbnVt
IHsKICBrU2NyYXBGbGF2b3JTaXplVW5rbm93biA9IC0xCn07CgoKCgoKCgplbnVtIHsKICBrU2Ny
YXBSZXNlcnZlZEZsYXZvclR5cGUgPSAnc3JmdCcKfTsKIyAxNTUgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvU2NyYXAuaCIgMwplbnVtIHsKICBrU2NyYXBGbGF2b3JNYXNrTm9uZSA9IDB4MDAw
MDAwMDAsCiAga1NjcmFwRmxhdm9yTWFza1NlbmRlck9ubHkgPSAweDAwMDAwMDAxLAogIGtTY3Jh
cEZsYXZvck1hc2tUcmFuc2xhdGVkID0gMHgwMDAwMDAwMgp9OwoKdHlwZWRlZiBVSW50MzIgU2Ny
YXBGbGF2b3JGbGFnczsKCgoKCnN0cnVjdCBTY3JhcEZsYXZvckluZm8gewogIFNjcmFwRmxhdm9y
VHlwZSBmbGF2b3JUeXBlOwogIFNjcmFwRmxhdm9yRmxhZ3MgZmxhdm9yRmxhZ3M7Cn07CnR5cGVk
ZWYgc3RydWN0IFNjcmFwRmxhdm9ySW5mbyBTY3JhcEZsYXZvckluZm87CnR5cGVkZWYgc3RydWN0
IE9wYXF1ZVNjcmFwUmVmKiBTY3JhcFJlZjsKCgoKCiNkZWZpbmUga1NjcmFwUmVmTm9uZSAoKFNj
cmFwUmVmKU5VTEwpCgoKCgoKI2RlZmluZSBrU2NyYXBDbGlwYm9hcmRTY3JhcCBDRlNUUigiY29t
LmFwcGxlLnNjcmFwLmNsaXBib2FyZCIpCiNkZWZpbmUga1NjcmFwRmluZFNjcmFwIENGU1RSKCJj
b20uYXBwbGUuc2NyYXAuZmluZCIpCgoKCmVudW0gewogIGtTY3JhcEdldE5hbWVkU2NyYXAgPSAw
LAogIGtTY3JhcENsZWFyTmFtZWRTY3JhcCA9ICgxTCA8PCAwKQp9OwojIDQ3NSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9TY3JhcC5oIiAzCnR5cGVkZWYgT1NTdGF0dXMgKCAqIFNjcmFwUHJv
bWlzZUtlZXBlclByb2NQdHIpKFNjcmFwUmVmIHNjcmFwLCBTY3JhcEZsYXZvclR5cGUgZmxhdm9y
VHlwZSwgdm9pZCAqdXNlckRhdGEpOwp0eXBlZGVmIFNjcmFwUHJvbWlzZUtlZXBlclByb2NQdHIg
U2NyYXBQcm9taXNlS2VlcGVyVVBQOwojIDQ4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9T
Y3JhcC5oIiAzCmV4dGVybiBTY3JhcFByb21pc2VLZWVwZXJVUFAKTmV3U2NyYXBQcm9taXNlS2Vl
cGVyVVBQKFNjcmFwUHJvbWlzZUtlZXBlclByb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRl
X18oKGRlcHJlY2F0ZWQpKTsKIyA0OTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvU2NyYXAu
aCIgMwpleHRlcm4gdm9pZApEaXNwb3NlU2NyYXBQcm9taXNlS2VlcGVyVVBQKFNjcmFwUHJvbWlz
ZUtlZXBlclVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNTA3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL1NjcmFwLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkludm9r
ZVNjcmFwUHJvbWlzZUtlZXBlclVQUCgKICBTY3JhcFJlZiBzY3JhcCwKICBTY3JhcEZsYXZvclR5
cGUgZmxhdm9yVHlwZSwKICB2b2lkICogdXNlckRhdGEsCiAgU2NyYXBQcm9taXNlS2VlcGVyVVBQ
IHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBTY3Jh
cFByb21pc2VLZWVwZXJVUFAgTmV3U2NyYXBQcm9taXNlS2VlcGVyVVBQKFNjcmFwUHJvbWlzZUtl
ZXBlclByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxp
bmUgdm9pZCBEaXNwb3NlU2NyYXBQcm9taXNlS2VlcGVyVVBQKFNjcmFwUHJvbWlzZUtlZXBlclVQ
UCkgeyB9CiAgICBpbmxpbmUgT1NTdGF0dXMgSW52b2tlU2NyYXBQcm9taXNlS2VlcGVyVVBQKFNj
cmFwUmVmIHNjcmFwLCBTY3JhcEZsYXZvclR5cGUgZmxhdm9yVHlwZSwgdm9pZCAqIHVzZXJEYXRh
LCBTY3JhcFByb21pc2VLZWVwZXJVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShzY3Jh
cCwgZmxhdm9yVHlwZSwgdXNlckRhdGEpOyB9CiMgNjU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL1NjcmFwLmgiIDMKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgMTAyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0hJVG9vbGJveC5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvTWFjVGV4dEVkaXRvci5oIiAzCiNkZWZpbmUgX19NQUNURVhURURJVE9SX18gCiMgNjAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCmV4dGVybiAiQyIgewoK
CiNwcmFnbWEgcGFjayhwdXNoLCAyKQoKCgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVFhOT2JqZWN0
KiBUWE5PYmplY3Q7CnR5cGVkZWYgVUludDMyIFRYTlZlcnNpb25WYWx1ZTsKIyA3OCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKdHlwZWRlZiBVSW50MzIgVFhO
RnJhbWVJRDsKCgoKCgplbnVtIHsKICBrVFhORGlzYWJsZWRGdW5jdGlvbmFsaXR5RXJyID0gLTIy
MDE5LAogIGtUWE5PcGVyYXRpb25Ob3RBbGxvd2VkRXJyID0gLTIyMDIwCn07CgoKCgoKCmVudW0g
ewogIGtUWE5XaWxsRGVmYXVsdFRvQVRTVUlCaXQgPSAwLAogIGtUWE5XaWxsRGVmYXVsdFRvQ2Fy
Ym9uRXZlbnRCaXQgPSAxCn07Cgp0eXBlZGVmIE9wdGlvbkJpdHMgVFhORmVhdHVyZUJpdHM7CmVu
dW0gewogIGtUWE5XaWxsRGVmYXVsdFRvQVRTVUlNYXNrID0gMSA8PCBrVFhOV2lsbERlZmF1bHRU
b0FUU1VJQml0LAogIGtUWE5XaWxsRGVmYXVsdFRvQ2FyYm9uRXZlbnRNYXNrID0gMSA8PCBrVFhO
V2lsbERlZmF1bHRUb0NhcmJvbkV2ZW50Qml0Cn07CiMgMTQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwplbnVtIHsKICBrVFhORHJhd0dyb3dJY29uQml0ID0g
MCwKICBrVFhOU2hvd1dpbmRvd0JpdCA9IDEsCiAga1RYTldhbnRIU2Nyb2xsQmFyQml0ID0gMiwK
ICBrVFhOV2FudFZTY3JvbGxCYXJCaXQgPSAzLAogIGtUWE5SZWFkT25seUJpdCA9IDUsCiAga1RY
Tk5vU2VsZWN0aW9uQml0ID0gNywKICBrVFhOU2F2ZVN0eWxlc0FzU1RZTFJlc291cmNlQml0ID0g
OCwKICBrT3V0cHV0VGV4dEluVW5pY29kZUVuY29kaW5nQml0ID0gOSwKICBrVFhORG9Ob3RJbnN0
YWxsRHJhZ1Byb2NzQml0ID0gMTAsCiAga1RYTkFsd2F5c1dyYXBBdFZpZXdFZGdlQml0ID0gMTEs
CiAga1RYTkRvbnREcmF3U2VsZWN0aW9uV2hlbkluYWN0aXZlQml0ID0gMTMsCiAga1RYTlNpbmds
ZUxpbmVPbmx5Qml0ID0gMTQsCiAga1RYTkRpc2FibGVEcmFnQW5kRHJvcEJpdCA9IDE1LAogIGtU
WE5Nb25vc3R5bGVkVGV4dEJpdCA9IDE3LAogIGtUWE5Eb0ZvbnRTdWJzdGl0dXRpb25CaXQgPSAy
Mgp9OwojIDE3NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMK
dHlwZWRlZiBPcHRpb25CaXRzIFRYTkZyYW1lT3B0aW9uczsKZW51bSB7CgoKCgogIGtUWE5EcmF3
R3Jvd0ljb25NYXNrID0gMSA8PCBrVFhORHJhd0dyb3dJY29uQml0LAoKCgoKCgoKICBrVFhOU2hv
d1dpbmRvd01hc2sgPSAxIDw8IGtUWE5TaG93V2luZG93Qml0LAojIDE5OSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKICBrVFhOV2FudEhTY3JvbGxCYXJNYXNr
ID0gMSA8PCBrVFhOV2FudEhTY3JvbGxCYXJCaXQsCiMgMjA4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwogIGtUWE5XYW50VlNjcm9sbEJhck1hc2sgPSAxIDw8
IGtUWE5XYW50VlNjcm9sbEJhckJpdCwKIyAyMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
TWFjVGV4dEVkaXRvci5oIiAzCiAga1RYTlJlYWRPbmx5TWFzayA9IDEgPDwga1RYTlJlYWRPbmx5
Qml0LAoKCgoKCiAga1RYTk5vU2VsZWN0aW9uTWFzayA9IDEgPDwga1RYTk5vU2VsZWN0aW9uQml0
LAojIDIzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKICBr
VFhOU2F2ZVN0eWxlc0FzU1RZTFJlc291cmNlTWFzayA9IDEgPDwga1RYTlNhdmVTdHlsZXNBc1NU
WUxSZXNvdXJjZUJpdCwKCgoKCiAga091dHB1dFRleHRJblVuaWNvZGVFbmNvZGluZ01hc2sgPSAx
IDw8IGtPdXRwdXRUZXh0SW5Vbmljb2RlRW5jb2RpbmdCaXQsCgoKCgoKCiAga1RYTkRvTm90SW5z
dGFsbERyYWdQcm9jc01hc2sgPSAxIDw8IGtUWE5Eb05vdEluc3RhbGxEcmFnUHJvY3NCaXQsCgoK
CgogIGtUWE5BbHdheXNXcmFwQXRWaWV3RWRnZU1hc2sgPSAxIDw8IGtUWE5BbHdheXNXcmFwQXRW
aWV3RWRnZUJpdCwKCgoKCgogIGtUWE5Eb250RHJhd1NlbGVjdGlvbldoZW5JbmFjdGl2ZU1hc2sg
PSAxIDw8IGtUWE5Eb250RHJhd1NlbGVjdGlvbldoZW5JbmFjdGl2ZUJpdCwKCgoKCgoKCiAga1RY
TlNpbmdsZUxpbmVPbmx5TWFzayA9IDEgPDwga1RYTlNpbmdsZUxpbmVPbmx5Qml0LAoKCgoKCiAg
a1RYTkRpc2FibGVEcmFnQW5kRHJvcE1hc2sgPSAxIDw8IGtUWE5EaXNhYmxlRHJhZ0FuZERyb3BC
aXQsCgoKCgoKICBrVFhOTW9ub3N0eWxlZFRleHRNYXNrID0gMSA8PCBrVFhOTW9ub3N0eWxlZFRl
eHRCaXQsCgoKCgoKICBrVFhORG9Gb250U3Vic3RpdHV0aW9uTWFzayA9IDEgPDwga1RYTkRvRm9u
dFN1YnN0aXR1dGlvbkJpdAp9OwojIDQxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNU
ZXh0RWRpdG9yLmgiIDMKdHlwZWRlZiBPU1R5cGUgVFhORmlsZVR5cGU7CmVudW0gewogIGtUWE5U
ZXh0RmlsZSA9ICdURVhUJywKICBrVFhOQUlGRkZpbGUgPSAnQUlGRicsCiAga1RYTlVuaWNvZGVU
ZXh0RmlsZSA9ICd1dHh0JywKICBrVFhOVGV4dGVuc2lvbkZpbGUgPSAndHh0bicKfTsKIyA0NDMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCnR5cGVkZWYgVUlu
dDMyIFRYTlBlcm1hbmVudFRleHRFbmNvZGluZ1R5cGU7CmVudW0gewogIGtUWE5TeXN0ZW1EZWZh
dWx0RW5jb2RpbmcgPSAwLAogIGtUWE5NYWNPU0VuY29kaW5nID0gMSwKICBrVFhOVW5pY29kZUVu
Y29kaW5nID0gMgp9OwoKCgoKCnR5cGVkZWYgT1NUeXBlIFRYTkRhdGFUeXBlOwplbnVtIHsKICBr
VFhOVGV4dERhdGEgPSAnVEVYVCcsCiAga1RYTlVuaWNvZGVUZXh0RGF0YSA9ICd1dHh0JywKICBr
VFhOUmljaFRleHRGb3JtYXREYXRhID0gJ1JURiAnCn07CiMgNDkyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1RY
TkFjdGlvblR5cGluZyA7CiMgNTA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRF
ZGl0b3IuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1RYTkFjdGlvbkN1dCA7CiMgNTI0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga1RYTkFjdGlvblBhc3RlIDsKIyA1NDAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVFhO
QWN0aW9uQ2xlYXIgOwojIDU1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRp
dG9yLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUWE5BY3Rpb25DaGFuZ2VGb250IDsK
IyA1NzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrVFhOQWN0aW9uQ2hhbmdlQ29sb3IgOwojIDU4OCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtUWE5BY3Rpb25DaGFuZ2VTaXplIDsKIyA2MDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVFhOQWN0
aW9uQ2hhbmdlU3R5bGUgOwojIDYyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0
RWRpdG9yLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUWE5BY3Rpb25BbGlnbkxlZnQg
OwojIDYzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUWE5BY3Rpb25BbGlnbkNlbnRlciA7CiMgNjUyICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga1RYTkFjdGlvbkFsaWduUmlnaHQgOwojIDY2OCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUWE5B
Y3Rpb25Ecm9wIDsKIyA2ODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRv
ci5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVFhOQWN0aW9uTW92ZSA7CiMgNzAwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga1RYTkFjdGlvbkNoYW5nZUZvbnRGZWF0dXJlIDsKIyA3MTYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrVFhOQWN0aW9uQ2hhbmdlRm9udFZhcmlhdGlvbiA7CiMgNzMyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a1RYTkFjdGlvbkNoYW5nZUdseXBoVmFyaWF0aW9uIDsKIyA3NTAgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVFhO
QWN0aW9uQ2hhbmdlVGV4dFBvc2l0aW9uIDsKIyA3NjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvTWFjVGV4dEVkaXRvci5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVFhOQWN0aW9u
VW5kb0xhc3QgOwoKCgoKCgp0eXBlZGVmIFNJbnQ4IFRYTlRhYlR5cGU7CmVudW0gewogIGtUWE5S
aWdodFRhYiA9IC0xLAogIGtUWE5MZWZ0VGFiID0gMCwKICBrVFhOQ2VudGVyVGFiID0gMQp9OwoK
c3RydWN0IFRYTlRhYiB7CiAgU0ludDE2IHZhbHVlOwogIFRYTlRhYlR5cGUgdGFiVHlwZTsKICBV
SW50OCBmaWxsZXI7Cn07CnR5cGVkZWYgc3RydWN0IFRYTlRhYiBUWE5UYWI7CmVudW0gewogIGtU
WE5MZWZ0VG9SaWdodCA9IDAsCiAga1RYTlJpZ2h0VG9MZWZ0ID0gMQp9OwoKZW51bSB7CiAga1RY
TkZsdXNoRGVmYXVsdCA9IDAsCiAga1RYTkZsdXNoTGVmdCA9IDEsCiAga1RYTkZsdXNoUmlnaHQg
PSAyLAogIGtUWE5DZW50ZXIgPSA0LAogIGtUWE5GdWxsSnVzdCA9IDgsCiAga1RYTkZvcmNlRnVs
bEp1c3QgPSAxNgp9OwojIDgwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRp
dG9yLmgiIDMKc3RydWN0IFRYTk1hcmdpbnMgewogIFNJbnQxNiB0b3BNYXJnaW47CiAgU0ludDE2
IGxlZnRNYXJnaW47CiAgU0ludDE2IGJvdHRvbU1hcmdpbjsKCgoKCgogIFNJbnQxNiByaWdodE1h
cmdpbjsKfTsKdHlwZWRlZiBzdHJ1Y3QgVFhOTWFyZ2lucyBUWE5NYXJnaW5zOwojIDgyOSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKdHlwZWRlZiBGb3VyQ2hh
ckNvZGUgVFhOQ29udHJvbFRhZzsKZW51bSB7CiAga1RYTkxpbmVEaXJlY3Rpb25UYWcgPSAnbG5k
cicsCiAga1RYTkp1c3RpZmljYXRpb25UYWcgPSAnanVzdCcsCiAga1RYTklPUHJpdmlsZWdlc1Rh
ZyA9ICdpb3B2JywKICBrVFhOU2VsZWN0aW9uU3RhdGVUYWcgPSAnc2xzdCcsCiAga1RYTklubGlu
ZVN0YXRlVGFnID0gJ2luc3QnLAogIGtUWE5Xb3JkV3JhcFN0YXRlVGFnID0gJ3d3cnMnLAogIGtU
WE5BdXRvSW5kZW50U3RhdGVUYWcgPSAnYXVpbicsCiAga1RYTlRhYlNldHRpbmdzVGFnID0gJ3Rh
YnMnLAogIGtUWE5SZWZDb25UYWcgPSAncmZjbicsCiAga1RYTk1hcmdpbnNUYWcgPSAnbWFyZycs
CiAga1RYTkZsYXR0ZW5Nb3ZpZXNUYWcgPSAnZmxhdCcsCiAga1RYTkRvRm9udFN1YnN0aXR1dGlv
biA9ICdmU3ViJywKICBrVFhOTm9Vc2VySU9UYWcgPSAnbnVpbycsCgoKCgoKCiAga1RYTlVzZUNh
cmJvbkV2ZW50cyA9ICdjYmNiJywKICBrVFhORHJhd1NlbGVjdGlvbldoZW5JbmFjdGl2ZVRhZyA9
ICdkc2xuJywKICBrVFhORGlzYWJsZURyYWdBbmREcm9wVGFnID0gJ2RyYWcnLAogIGtUWE5TaW5n
bGVMZXZlbFVuZG9UYWcgPSAndW5kbycsCiAga1RYTlZpc2liaWxpdHlUYWcgPSAndmlzYicsCgoK
CgoKCiAga1RYTkRpc2FibGVMYXlvdXRBbmREcmF3VGFnID0ga1RYTlZpc2liaWxpdHlUYWcsCgoK
CgoKCiAga1RYTkF1dG9TY3JvbGxCZWhhdmlvclRhZyA9ICdzYmV2Jwp9OwoKCgoKCgplbnVtIHsK
ICBrVFhOQ2xlYXJUaGlzQ29udHJvbCA9IC0xLAogIGtUWE5DbGVhclRoZXNlRm9udEZlYXR1cmVz
ID0gKGludCkweDgwMDAwMDAwCn07CgoKZW51bSB7CiAga1RYTlJlYWRXcml0ZSA9IGZhbHNlLAog
IGtUWE5SZWFkT25seSA9IHRydWUKfTsKCgplbnVtIHsKICBrVFhOU2VsZWN0aW9uT24gPSB0cnVl
LAogIGtUWE5TZWxlY3Rpb25PZmYgPSBmYWxzZQp9OwoKCmVudW0gewogIGtUWE5Vc2VJbmxpbmUg
PSBmYWxzZSwKICBrVFhOVXNlQm90dG9tbGluZSA9IHRydWUKfTsKCgplbnVtIHsKICBrVFhOQXV0
b1dyYXAgPSBmYWxzZSwKICBrVFhOTm9BdXRvV3JhcCA9IHRydWUKfTsKCgplbnVtIHsKICBrVFhO
QXV0b0luZGVudE9mZiA9IGZhbHNlLAogIGtUWE5BdXRvSW5kZW50T24gPSB0cnVlCn07CgoKZW51
bSB7CiAga1RYTkRvbnREcmF3U2VsZWN0aW9uV2hlbkluYWN0aXZlID0gZmFsc2UsCiAga1RYTkRy
YXdTZWxlY3Rpb25XaGVuSW5hY3RpdmUgPSB0cnVlCn07CgoKZW51bSB7CiAga1RYTkVuYWJsZURy
YWdBbmREcm9wID0gZmFsc2UsCiAga1RYTkRpc2FibGVEcmFnQW5kRHJvcCA9IHRydWUKfTsKCgpl
bnVtIHsKICBrVFhORGlzYWJsZUxheW91dEFuZERyYXcgPSB0cnVlLAogIGtUWE5FbmFibGVMYXlv
dXRBbmREcmF3ID0gZmFsc2UKfTsKCgp1bmlvbiBUWE5Db250cm9sRGF0YSB7CiAgdW5zaWduZWQg
bG9uZyB1VmFsdWU7CiAgbG9uZyBzVmFsdWU7CiAgVFhOVGFiIHRhYlZhbHVlOwogIFRYTk1hcmdp
bnMgKiBtYXJnaW5zUHRyOwp9Owp0eXBlZGVmIHVuaW9uIFRYTkNvbnRyb2xEYXRhIFRYTkNvbnRy
b2xEYXRhOwojIDk1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgi
IDMKdHlwZWRlZiBVSW50MzIgVFhOQXV0b1Njcm9sbEJlaGF2aW9yOwplbnVtIHsKCgoKCgoKICBr
VFhOQXV0b1Njcm9sbEluc2VydGlvbkludG9WaWV3ID0gMCwKCgoKCgoKICBrVFhOQXV0b1Njcm9s
bE5ldmVyID0gMSwKIyA5NzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRv
ci5oIiAzCiAga1RYTkF1dG9TY3JvbGxXaGVuSW5zZXJ0aW9uVmlzaWJsZSA9IDIKfTsKCgoKCgp0
eXBlZGVmIFVJbnQzMiBUWE5PZmZzZXQ7CmVudW0gewogIGtUWE5Vc2VDdXJyZW50U2VsZWN0aW9u
ID0gKFVJbnQzMikweEZGRkZGRkZGLAogIGtUWE5TdGFydE9mZnNldCA9IDAsCiAga1RYTkVuZE9m
ZnNldCA9IDB4N0ZGRkZGRkYKfTsKCgplbnVtIHsKICBrVFhOU2hvd1N0YXJ0ID0gZmFsc2UsCiAg
a1RYTlNob3dFbmQgPSB0cnVlCn07CgoKCgoKCmVudW0gewogIGtUWE5TaW5nbGVTdHlsZVBlclRl
eHREb2N1bWVudFJlc1R5cGUgPSAnTVBTUicsCiAga1RYTk11bHRpcGxlU3R5bGVzUGVyVGV4dERv
Y3VtZW50UmVzVHlwZSA9ICdzdHlsJwp9OwojIDEwMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvTWFjVGV4dEVkaXRvci5oIiAzCnR5cGVkZWYgVUludDMyIFRYTkh5cGVyTGlua1N0YXRlOwpl
bnVtIHsKICBrVFhOTGlua05vdFByZXNzZWQgPSAwLAogIGtUWE5MaW5rV2FzUHJlc3NlZCA9IDEs
CiAga1RYTkxpbmtUcmFja2luZyA9IDMKfTsKIyAxMDM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL01hY1RleHRFZGl0b3IuaCIgMwp0eXBlZGVmIEZvdXJDaGFyQ29kZSBUWE5UeXBlUnVuQXR0
cmlidXRlczsKZW51bSB7CiAga1RYTlRleHRFbmNvZGluZ0F0dHJpYnV0ZSA9ICdlbmNkJywKICBr
VFhOQVRTVUlGb250RmVhdHVyZXNBdHRyaWJ1dGUgPSAnYXRmZScsCiAga1RYTkFUU1VJRm9udFZh
cmlhdGlvbnNBdHRyaWJ1dGUgPSAnYXR2YScsCiAga1RYTlVSTEF0dHJpYnV0ZSA9ICd1cmxhJywK
ICBrVFhOQVRTVUlTdHlsZSA9ICdhc3RsJwp9OwoKdHlwZWRlZiBCeXRlQ291bnQgVFhOVHlwZVJ1
bkF0dHJpYnV0ZVNpemVzOwplbnVtIHsKICBrVFhOVGV4dEVuY29kaW5nQXR0cmlidXRlU2l6ZSA9
IHNpemVvZihUZXh0RW5jb2RpbmcpLAogIGtUWE5BVFNVSVN0eWxlU2l6ZSA9IHNpemVvZihBVFNV
U3R5bGUpCn07CgpzdHJ1Y3QgVFhOQVRTVUlGZWF0dXJlcyB7CiAgSXRlbUNvdW50IGZlYXR1cmVD
b3VudDsKICBBVFNVRm9udEZlYXR1cmVUeXBlICogZmVhdHVyZVR5cGVzOwogIEFUU1VGb250RmVh
dHVyZVNlbGVjdG9yICogZmVhdHVyZVNlbGVjdG9yczsKfTsKdHlwZWRlZiBzdHJ1Y3QgVFhOQVRT
VUlGZWF0dXJlcyBUWE5BVFNVSUZlYXR1cmVzOwoKc3RydWN0IFRYTkFUU1VJVmFyaWF0aW9ucyB7
CiAgSXRlbUNvdW50IHZhcmlhdGlvbkNvdW50OwogIEFUU1VGb250VmFyaWF0aW9uQXhpcyAqIHZh
cmlhdGlvbkF4aXM7CiAgQVRTVUZvbnRWYXJpYXRpb25WYWx1ZSAqIHZhcmlhdGlvblZhbHVlczsK
fTsKdHlwZWRlZiBzdHJ1Y3QgVFhOQVRTVUlWYXJpYXRpb25zIFRYTkFUU1VJVmFyaWF0aW9uczsK
CnVuaW9uIFRYTkF0dHJpYnV0ZURhdGEgewogIHZvaWQgKiBkYXRhUHRyOwogIFVJbnQzMiBkYXRh
VmFsdWU7CiAgVFhOQVRTVUlGZWF0dXJlcyAqIGF0c3VGZWF0dXJlczsKICBUWE5BVFNVSVZhcmlh
dGlvbnMgKiBhdHN1VmFyaWF0aW9uczsKICBDRlVSTFJlZiB1cmxSZWZlcmVuY2U7Cn07CnR5cGVk
ZWYgdW5pb24gVFhOQXR0cmlidXRlRGF0YSBUWE5BdHRyaWJ1dGVEYXRhOwoKc3RydWN0IFRYTlR5
cGVBdHRyaWJ1dGVzIHsKICBUWE5UeXBlUnVuQXR0cmlidXRlcyB0YWc7CiAgQnl0ZUNvdW50IHNp
emU7CiAgVFhOQXR0cmlidXRlRGF0YSBkYXRhOwp9Owp0eXBlZGVmIHN0cnVjdCBUWE5UeXBlQXR0
cmlidXRlcyBUWE5UeXBlQXR0cmlidXRlczsKCgoKZW51bSB7CiAga1RYTkRvbnRDYXJlVHlwZVNp
emUgPSAtMSwKICBrVFhORG9udENhcmVUeXBlU3R5bGUgPSAweEZGLAogIGtUWE5JbmNyZW1lbnRU
eXBlU2l6ZSA9IDB4MDAwMDAwMDEsCiAga1RYTkRlY3JlbWVudFR5cGVTaXplID0gKGludCkweDgw
MDAwMDAwLAogIGtUWE5Vc2VTY3JpcHREZWZhdWx0VmFsdWUgPSAtMSwKCgoKCgoKICBrVFhOTm9G
b250VmFyaWF0aW9ucyA9IDB4N0ZGRgp9OwoKCgoKCgplbnVtIHsKICBrVFhORm9udENvbnRpbnVv
dXNCaXQgPSAwLAogIGtUWE5TaXplQ29udGludW91c0JpdCA9IDEsCiAga1RYTlN0eWxlQ29udGlu
dW91c0JpdCA9IDIsCiAga1RYTkNvbG9yQ29udGludW91c0JpdCA9IDMsCiAga1RYTkFUU1VJU3R5
bGVDb250aW51b3VzQml0ID0gNAp9OwoKdHlwZWRlZiBPcHRpb25CaXRzIFRYTkNvbnRpbnVvdXNG
bGFnczsKZW51bSB7CiAga1RYTkZvbnRDb250aW51b3VzTWFzayA9IDEgPDwga1RYTkZvbnRDb250
aW51b3VzQml0LAogIGtUWE5TaXplQ29udGludW91c01hc2sgPSAxIDw8IGtUWE5TaXplQ29udGlu
dW91c0JpdCwKICBrVFhOU3R5bGVDb250aW51b3VzTWFzayA9IDEgPDwga1RYTlN0eWxlQ29udGlu
dW91c0JpdCwKICBrVFhOQ29sb3JDb250aW51b3VzTWFzayA9IDEgPDwga1RYTkNvbG9yQ29udGlu
dW91c0JpdCwKICBrVFhOQVRTVUlTdHlsZUNvbnRpbnVvdXNNYXNrID0gMSA8PCBrVFhOQVRTVUlT
dHlsZUNvbnRpbnVvdXNCaXQKfTsKCgoKCgoKZW51bSB7CiAga1RYTklnbm9yZUNhc2VCaXQgPSAw
LAogIGtUWE5FbnRpcmVXb3JkQml0ID0gMSwKICBrVFhOVXNlRW5jb2RpbmdXb3JkUnVsZXNCaXQg
PSAzMQp9OwoKdHlwZWRlZiBPcHRpb25CaXRzIFRYTk1hdGNoT3B0aW9uczsKZW51bSB7CiAga1RY
Tklnbm9yZUNhc2VNYXNrID0gMSA8PCBrVFhOSWdub3JlQ2FzZUJpdCwKICBrVFhORW50aXJlV29y
ZE1hc2sgPSAxIDw8IGtUWE5FbnRpcmVXb3JkQml0LAogIGtUWE5Vc2VFbmNvZGluZ1dvcmRSdWxl
c01hc2sgPSAodW5zaWduZWQgaW50KSgxIDw8IGtUWE5Vc2VFbmNvZGluZ1dvcmRSdWxlc0JpdCkK
fTsKCnN0cnVjdCBUWE5NYXRjaFRleHRSZWNvcmQgewogIGNvbnN0IHZvaWQgKiBpVGV4dFB0cjsK
ICBsb25nIGlUZXh0VG9NYXRjaExlbmd0aDsKICBUZXh0RW5jb2RpbmcgaVRleHRFbmNvZGluZzsK
fTsKdHlwZWRlZiBzdHJ1Y3QgVFhOTWF0Y2hUZXh0UmVjb3JkIFRYTk1hdGNoVGV4dFJlY29yZDsK
IyAxMTY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwp0eXBl
ZGVmIFVJbnQzMiBUWE5CYWNrZ3JvdW5kVHlwZTsKZW51bSB7CiAga1RYTkJhY2tncm91bmRUeXBl
UkdCID0gMQp9OwojIDExODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRv
ci5oIiAzCnN0cnVjdCBUWE5CYWNrZ3JvdW5kRGF0YSB7CgoKCgogIFJHQkNvbG9yIGNvbG9yOwp9
Owp0eXBlZGVmIHN0cnVjdCBUWE5CYWNrZ3JvdW5kRGF0YSBUWE5CYWNrZ3JvdW5kRGF0YTsKCnN0
cnVjdCBUWE5CYWNrZ3JvdW5kIHsKICBUWE5CYWNrZ3JvdW5kVHlwZSBiZ1R5cGU7CiAgVFhOQmFj
a2dyb3VuZERhdGEgYmc7Cn07CnR5cGVkZWYgc3RydWN0IFRYTkJhY2tncm91bmQgVFhOQmFja2dy
b3VuZDsKIyAxMjIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIg
MwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1RYTkFjdGlvbkNvdW50T2ZUZXh0Q2hhbmdlcyA7
CiMgMTI0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUWE5BY3Rpb25Db3VudE9mU3R5bGVDaGFuZ2VzIDsKIyAx
MjU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga1RYTkFjdGlvbkNvdW50T2ZBbGxDaGFuZ2VzIDsKIyAxMjY5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwp0eXBlZGVmIFVJbnQz
MiBUWE5TY3JvbGxVbml0OwplbnVtIHsKICBrVFhOU2Nyb2xsVW5pdHNJblBpeGVscyA9IDAsCiAg
a1RYTlNjcm9sbFVuaXRzSW5MaW5lcyA9IDEsCiAga1RYTlNjcm9sbFVuaXRzSW5WaWV3UmVjdHMg
PSAyCn07CiMgMTI4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgi
IDMKdHlwZWRlZiBVSW50MzIgVFhOU2Nyb2xsQmFyT3JpZW50YXRpb247CmVudW0gewogIGtUWE5I
b3Jpem9udGFsID0gMCwKICBrVFhOVmVydGljYWwgPSAxCn07CiMgMTI5NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKdHlwZWRlZiBCb29sZWFuIFRYTlNjcm9s
bEJhclN0YXRlOwplbnVtIHsKICBrU2Nyb2xsQmFyc0Fsd2F5c0FjdGl2ZSA9IHRydWUsCiAga1Nj
cm9sbEJhcnNTeW5jV2l0aEZvY3VzID0gZmFsc2UKfTsKCgoKCgoKZW51bSB7CiAga1RYTkRyYXdJ
dGVtU2Nyb2xsYmFyc0JpdCA9IDAsCiAga1RYTkRyYXdJdGVtVGV4dEJpdCA9IDEsCiAga1RYTkRy
YXdJdGVtVGV4dEFuZFNlbGVjdGlvbkJpdCA9IDIKfTsKCnR5cGVkZWYgT3B0aW9uQml0cyBUWE5E
cmF3SXRlbXM7CmVudW0gewogIGtUWE5EcmF3SXRlbVNjcm9sbGJhcnNNYXNrID0gMSA8PCBrVFhO
RHJhd0l0ZW1TY3JvbGxiYXJzQml0LAogIGtUWE5EcmF3SXRlbVRleHRNYXNrID0gMSA8PCBrVFhO
RHJhd0l0ZW1UZXh0Qml0LAogIGtUWE5EcmF3SXRlbVRleHRBbmRTZWxlY3Rpb25NYXNrID0gMSA8
PCBrVFhORHJhd0l0ZW1UZXh0QW5kU2VsZWN0aW9uQml0LAogIGtUWE5EcmF3SXRlbUFsbE1hc2sg
PSAodW5zaWduZWQgaW50KSgtMSkKfTsKCgoKCgoKdHlwZWRlZiBVSW50MzIgVFhOUmVjdEtleTsK
ZW51bSB7CiAga1RYTlZpZXdSZWN0S2V5ID0gMCwKICBrVFhORGVzdGluYXRpb25SZWN0S2V5ID0g
MSwKICBrVFhOVGV4dFJlY3RLZXkgPSAyLAogIGtUWE5WZXJ0aWNhbFNjcm9sbEJhclJlY3RLZXkg
PSAzLAogIGtUWE5Ib3Jpem9udGFsU2Nyb2xsQmFyUmVjdEtleSA9IDQKfTsKCgoKCgoKI2RlZmlu
ZSBrVFhOVGV4dEhhbmRsZXJLZXkgQ0ZTVFIoIlRleHRJbnB1dCIpCiNkZWZpbmUga1RYTldpbmRv
d0V2ZW50SGFuZGxlcktleSBDRlNUUigiV2luZG93RXZlbnQiKQojZGVmaW5lIGtUWE5XaW5kb3dS
ZXNpemVFdmVudEhhbmRsZXJLZXkgQ0ZTVFIoIldpbmRvd1Jlc2l6ZSIpCiNkZWZpbmUga1RYTkNv
bW1hbmRUYXJnZXRLZXkgQ0ZTVFIoIkNvbW1hbmRUYXJnZXQiKQojZGVmaW5lIGtUWE5Db21tYW5k
VXBkYXRlS2V5IENGU1RSKCJDb21tYW5kVXBkYXRlIikKI2RlZmluZSBrVFhOQWN0aW9uTmFtZU1h
cHBlcktleSBDRlNUUigiQWN0aW9uTmFtZU1hcHBlciIpCiNkZWZpbmUga1RYTldoZWVsTW91c2VF
dmVudEhhbmRsZXJLZXkgQ0ZTVFIoIldoZWVsTW91c2VFdmVudCIpCiNkZWZpbmUga1RYTlRTTURv
Y3VtZW50QWNjZXNzSGFuZGxlcktleSBDRlNUUigiVFNNRG9jdW1lbnRBY2Nlc3MiKQojZGVmaW5l
IGtUWE5Gb250UGFuZWxFdmVudEhhbmRsZXJLZXkgQ0ZTVFIoIkZvbnRQYW5lbCIpCiMgMTM1NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKc3RydWN0IFRYTkNh
cmJvbkV2ZW50SW5mbyB7CgoKCgogIEJvb2xlYW4gdXNlQ2FyYm9uRXZlbnRzOwoKCgoKICBVSW50
OCBmaWxsZXI7CgoKCgogIFVJbnQxNiBmbGFnczsKCgoKCgoKCiAgQ0ZEaWN0aW9uYXJ5UmVmIGZE
aWN0aW9uYXJ5Owp9Owp0eXBlZGVmIHN0cnVjdCBUWE5DYXJib25FdmVudEluZm8gVFhOQ2FyYm9u
RXZlbnRJbmZvOwojIDE0MDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRv
ci5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVFhORG9jdW1lbnRBdHRyaWJ1dGVUaXRs
ZUtleSA7CiMgMTQyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgi
IDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUWE5Eb2N1bWVudEF0dHJpYnV0ZUNvbXBhbnlO
YW1lS2V5IDsKIyAxNDM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3Iu
aCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1RYTkRvY3VtZW50QXR0cmlidXRlU3ViamVj
dEtleSA7CiMgMTQ1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgi
IDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUWE5Eb2N1bWVudEF0dHJpYnV0ZUF1dGhvcktl
eSA7CiMgMTQ3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUWE5Eb2N1bWVudEF0dHJpYnV0ZUtleXdvcmRzS2V5
IDsKIyAxNDg4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1RYTkRvY3VtZW50QXR0cmlidXRlQ29tbWVudEtleSA7
CiMgMTUwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUWE5Eb2N1bWVudEF0dHJpYnV0ZUVkaXRvcktleSA7CiMg
MTUyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtUWE5Eb2N1bWVudEF0dHJpYnV0ZUNyZWF0aW9uVGltZUtleSA7
CiMgMTUzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUWE5Eb2N1bWVudEF0dHJpYnV0ZU1vZGlmaWNhdGlvblRp
bWVLZXkgOwojIDE1NTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5o
IiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVFhORG9jdW1lbnRBdHRyaWJ1dGVDb3B5cmln
aHRLZXkgOwojIDE1NzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5o
IiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVFhORGF0YU9wdGlvbkRvY3VtZW50VHlwZUtl
eSA7CiMgMTU5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUWE5EYXRhT3B0aW9uQ2hhcmFjdGVyRW5jb2RpbmdL
ZXkgOwojIDE2MTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAz
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVFhOUGxhaW5UZXh0RG9jdW1lbnRUeXBlIDsKIyAx
NjI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga1RYTk1MVEVEb2N1bWVudFR5cGUgOwojIDE2NDQgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrVFhOUlRGRG9jdW1lbnRUeXBlIDsKIyAxNjYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL01hY1RleHRFZGl0b3IuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1RYTlF1aWNr
VGltZURvY3VtZW50VHlwZSA7CgoKCgp0eXBlZGVmIE9TU3RhdHVzICggKiBUWE5GaW5kUHJvY1B0
cikoY29uc3QgVFhOTWF0Y2hUZXh0UmVjb3JkICptYXRjaERhdGEsIFRYTkRhdGFUeXBlIGlEYXRh
VHlwZSwgVFhOTWF0Y2hPcHRpb25zIGlNYXRjaE9wdGlvbnMsIGNvbnN0IHZvaWQgKmlTZWFyY2hU
ZXh0UHRyLCBUZXh0RW5jb2RpbmcgZW5jb2RpbmcsIFRYTk9mZnNldCBhYnNTdGFydE9mZnNldCwg
Qnl0ZUNvdW50IHNlYXJjaFRleHRMZW5ndGgsIFRYTk9mZnNldCAqb1N0YXJ0TWF0Y2gsIFRYTk9m
ZnNldCAqb0VuZE1hdGNoLCBCb29sZWFuICpvZm91bmQsIFVSZWZDb24gcmVmQ29uKTsKdHlwZWRl
ZiBDRlN0cmluZ1JlZiAoICogVFhOQWN0aW9uTmFtZU1hcHBlclByb2NQdHIpKENGU3RyaW5nUmVm
IGFjdGlvbk5hbWUsIFVJbnQzMiBjb21tYW5kSUQsIHZvaWQgKmluVXNlckRhdGEpOwp0eXBlZGVm
IHZvaWQgKCAqIFRYTkNvbnRleHR1YWxNZW51U2V0dXBQcm9jUHRyKShNZW51UmVmIGlDb250ZXh0
dWFsTWVudSwgVFhOT2JqZWN0IG9iamVjdCwgdm9pZCAqaW5Vc2VyRGF0YSk7CnR5cGVkZWYgdm9p
ZCAoICogVFhOU2Nyb2xsSW5mb1Byb2NQdHIpKFNJbnQzMiBpVmFsdWUsIFNJbnQzMiBpTWF4aW11
bVZhbHVlLCBUWE5TY3JvbGxCYXJPcmllbnRhdGlvbiBpU2Nyb2xsQmFyT3JpZW50YXRpb24sIFNS
ZWZDb24gaVJlZkNvbik7CnR5cGVkZWYgVFhORmluZFByb2NQdHIgVFhORmluZFVQUDsKdHlwZWRl
ZiBUWE5BY3Rpb25OYW1lTWFwcGVyUHJvY1B0ciBUWE5BY3Rpb25OYW1lTWFwcGVyVVBQOwp0eXBl
ZGVmIFRYTkNvbnRleHR1YWxNZW51U2V0dXBQcm9jUHRyIFRYTkNvbnRleHR1YWxNZW51U2V0dXBV
UFA7CnR5cGVkZWYgVFhOU2Nyb2xsSW5mb1Byb2NQdHIgVFhOU2Nyb2xsSW5mb1VQUDsKIyAxNjgy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwpleHRlcm4gVFhO
RmluZFVQUApOZXdUWE5GaW5kVVBQKFRYTkZpbmRQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMTY5
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0ZXJuIFRY
TkFjdGlvbk5hbWVNYXBwZXJVUFAKTmV3VFhOQWN0aW9uTmFtZU1hcHBlclVQUChUWE5BY3Rpb25O
YW1lTWFwcGVyUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDE3MDQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCmV4dGVybiBUWE5Db250ZXh0dWFsTWVudVNldHVw
VVBQCk5ld1RYTkNvbnRleHR1YWxNZW51U2V0dXBVUFAoVFhOQ29udGV4dHVhbE1lbnVTZXR1cFBy
b2NQdHIgdXNlclJvdXRpbmUpIDsKIyAxNzE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01h
Y1RleHRFZGl0b3IuaCIgMwpleHRlcm4gVFhOU2Nyb2xsSW5mb1VQUApOZXdUWE5TY3JvbGxJbmZv
VVBQKFRYTlNjcm9sbEluZm9Qcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMTcyNiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVRY
TkZpbmRVUFAoVFhORmluZFVQUCB1c2VyVVBQKSA7CiMgMTczNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVRYTkFjdGlvbk5h
bWVNYXBwZXJVUFAoVFhOQWN0aW9uTmFtZU1hcHBlclVQUCB1c2VyVVBQKSA7CiMgMTc0OCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0ZXJuIHZvaWQKRGlz
cG9zZVRYTkNvbnRleHR1YWxNZW51U2V0dXBVUFAoVFhOQ29udGV4dHVhbE1lbnVTZXR1cFVQUCB1
c2VyVVBQKSA7CiMgMTc1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9y
LmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVRYTlNjcm9sbEluZm9VUFAoVFhOU2Nyb2xsSW5mb1VQ
UCB1c2VyVVBQKSA7CiMgMTc3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRp
dG9yLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkludm9rZVRYTkZpbmRVUFAoCiAgY29uc3QgVFhOTWF0
Y2hUZXh0UmVjb3JkICogbWF0Y2hEYXRhLAogIFRYTkRhdGFUeXBlIGlEYXRhVHlwZSwKICBUWE5N
YXRjaE9wdGlvbnMgaU1hdGNoT3B0aW9ucywKICBjb25zdCB2b2lkICogaVNlYXJjaFRleHRQdHIs
CiAgVGV4dEVuY29kaW5nIGVuY29kaW5nLAogIFRYTk9mZnNldCBhYnNTdGFydE9mZnNldCwKICBC
eXRlQ291bnQgc2VhcmNoVGV4dExlbmd0aCwKICBUWE5PZmZzZXQgKiBvU3RhcnRNYXRjaCwKICBU
WE5PZmZzZXQgKiBvRW5kTWF0Y2gsCiAgQm9vbGVhbiAqIG9mb3VuZCwKICBVUmVmQ29uIHJlZkNv
biwKICBUWE5GaW5kVVBQIHVzZXJVUFApIDsKIyAxNzkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL01hY1RleHRFZGl0b3IuaCIgMwpleHRlcm4gQ0ZTdHJpbmdSZWYKSW52b2tlVFhOQWN0aW9u
TmFtZU1hcHBlclVQUCgKICBDRlN0cmluZ1JlZiBhY3Rpb25OYW1lLAogIFVJbnQzMiBjb21tYW5k
SUQsCiAgdm9pZCAqIGluVXNlckRhdGEsCiAgVFhOQWN0aW9uTmFtZU1hcHBlclVQUCB1c2VyVVBQ
KSA7CiMgMTgwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMK
ZXh0ZXJuIHZvaWQKSW52b2tlVFhOQ29udGV4dHVhbE1lbnVTZXR1cFVQUCgKICBNZW51UmVmIGlD
b250ZXh0dWFsTWVudSwKICBUWE5PYmplY3Qgb2JqZWN0LAogIHZvaWQgKiBpblVzZXJEYXRhLAog
IFRYTkNvbnRleHR1YWxNZW51U2V0dXBVUFAgdXNlclVQUCkgOwojIDE4MjMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCmV4dGVybiB2b2lkCkludm9rZVRYTlNj
cm9sbEluZm9VUFAoCiAgU0ludDMyIGlWYWx1ZSwKICBTSW50MzIgaU1heGltdW1WYWx1ZSwKICBU
WE5TY3JvbGxCYXJPcmllbnRhdGlvbiBpU2Nyb2xsQmFyT3JpZW50YXRpb24sCiAgU1JlZkNvbiBp
UmVmQ29uLAogIFRYTlNjcm9sbEluZm9VUFAgdXNlclVQUCkgOwoKCgogICAgaW5saW5lIFRYTkZp
bmRVUFAgTmV3VFhORmluZFVQUChUWE5GaW5kUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4g
dXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBUWE5BY3Rpb25OYW1lTWFwcGVyVVBQIE5ld1RYTkFj
dGlvbk5hbWVNYXBwZXJVUFAoVFhOQWN0aW9uTmFtZU1hcHBlclByb2NQdHIgdXNlclJvdXRpbmUp
IHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgVFhOQ29udGV4dHVhbE1lbnVTZXR1
cFVQUCBOZXdUWE5Db250ZXh0dWFsTWVudVNldHVwVVBQKFRYTkNvbnRleHR1YWxNZW51U2V0dXBQ
cm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIFRY
TlNjcm9sbEluZm9VUFAgTmV3VFhOU2Nyb2xsSW5mb1VQUChUWE5TY3JvbGxJbmZvUHJvY1B0ciB1
c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bv
c2VUWE5GaW5kVVBQKFRYTkZpbmRVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVRYTkFj
dGlvbk5hbWVNYXBwZXJVUFAoVFhOQWN0aW9uTmFtZU1hcHBlclVQUCkgeyB9CiAgICBpbmxpbmUg
dm9pZCBEaXNwb3NlVFhOQ29udGV4dHVhbE1lbnVTZXR1cFVQUChUWE5Db250ZXh0dWFsTWVudVNl
dHVwVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VUWE5TY3JvbGxJbmZvVVBQKFRYTlNj
cm9sbEluZm9VUFApIHsgfQogICAgaW5saW5lIE9TU3RhdHVzIEludm9rZVRYTkZpbmRVUFAoY29u
c3QgVFhOTWF0Y2hUZXh0UmVjb3JkICogbWF0Y2hEYXRhLCBUWE5EYXRhVHlwZSBpRGF0YVR5cGUs
IFRYTk1hdGNoT3B0aW9ucyBpTWF0Y2hPcHRpb25zLCBjb25zdCB2b2lkICogaVNlYXJjaFRleHRQ
dHIsIFRleHRFbmNvZGluZyBlbmNvZGluZywgVFhOT2Zmc2V0IGFic1N0YXJ0T2Zmc2V0LCBCeXRl
Q291bnQgc2VhcmNoVGV4dExlbmd0aCwgVFhOT2Zmc2V0ICogb1N0YXJ0TWF0Y2gsIFRYTk9mZnNl
dCAqIG9FbmRNYXRjaCwgQm9vbGVhbiAqIG9mb3VuZCwgVVJlZkNvbiByZWZDb24sIFRYTkZpbmRV
UFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShtYXRjaERhdGEsIGlEYXRhVHlwZSwgaU1h
dGNoT3B0aW9ucywgaVNlYXJjaFRleHRQdHIsIGVuY29kaW5nLCBhYnNTdGFydE9mZnNldCwgc2Vh
cmNoVGV4dExlbmd0aCwgb1N0YXJ0TWF0Y2gsIG9FbmRNYXRjaCwgb2ZvdW5kLCByZWZDb24pOyB9
CiAgICBpbmxpbmUgQ0ZTdHJpbmdSZWYgSW52b2tlVFhOQWN0aW9uTmFtZU1hcHBlclVQUChDRlN0
cmluZ1JlZiBhY3Rpb25OYW1lLCBVSW50MzIgY29tbWFuZElELCB2b2lkICogaW5Vc2VyRGF0YSwg
VFhOQWN0aW9uTmFtZU1hcHBlclVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGFjdGlv
bk5hbWUsIGNvbW1hbmRJRCwgaW5Vc2VyRGF0YSk7IH0KICAgIGlubGluZSB2b2lkIEludm9rZVRY
TkNvbnRleHR1YWxNZW51U2V0dXBVUFAoTWVudVJlZiBpQ29udGV4dHVhbE1lbnUsIFRYTk9iamVj
dCBvYmplY3QsIHZvaWQgKiBpblVzZXJEYXRhLCBUWE5Db250ZXh0dWFsTWVudVNldHVwVVBQIHVz
ZXJVUFApIHsgKCp1c2VyVVBQKShpQ29udGV4dHVhbE1lbnUsIG9iamVjdCwgaW5Vc2VyRGF0YSk7
IH0KICAgIGlubGluZSB2b2lkIEludm9rZVRYTlNjcm9sbEluZm9VUFAoU0ludDMyIGlWYWx1ZSwg
U0ludDMyIGlNYXhpbXVtVmFsdWUsIFRYTlNjcm9sbEJhck9yaWVudGF0aW9uIGlTY3JvbGxCYXJP
cmllbnRhdGlvbiwgU1JlZkNvbiBpUmVmQ29uLCBUWE5TY3JvbGxJbmZvVVBQIHVzZXJVUFApIHsg
KCp1c2VyVVBQKShpVmFsdWUsIGlNYXhpbXVtVmFsdWUsIGlTY3JvbGxCYXJPcmllbnRhdGlvbiwg
aVJlZkNvbik7IH0KIyA1MTM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0
b3IuaCIgMwp0eXBlZGVmIE9wdGlvbkJpdHMgVFhOQ29tbWFuZEV2ZW50U3VwcG9ydE9wdGlvbnM7
CmVudW0gewoKCgoKCgogIGtUWE5TdXBwb3J0RWRpdENvbW1hbmRQcm9jZXNzaW5nID0gMSA8PCAw
LAojIDUxNjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCiAg
a1RYTlN1cHBvcnRFZGl0Q29tbWFuZFVwZGF0aW5nID0gMSA8PCAxLAojIDUxNzYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCiAga1RYTlN1cHBvcnRTcGVsbENo
ZWNrQ29tbWFuZFByb2Nlc3NpbmcgPSAxIDw8IDIsCiMgNTIwNiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKICBrVFhOU3VwcG9ydFNwZWxsQ2hlY2tDb21tYW5k
VXBkYXRpbmcgPSAxIDw8IDMsCiMgNTIxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNU
ZXh0RWRpdG9yLmgiIDMKICBrVFhOU3VwcG9ydEZvbnRDb21tYW5kUHJvY2Vzc2luZyA9IDEgPDwg
NCwKIyA1MjI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwog
IGtUWE5TdXBwb3J0Rm9udENvbW1hbmRVcGRhdGluZyA9IDEgPDwgNQp9OwojIDU2ODcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCnR5cGVkZWYgRm91ckNoYXJD
b2RlIFRYVE5UYWc7CgoKCgoKCgp0eXBlZGVmIE9TU3RhdHVzIFRYTkVycm9yczsKIyA1NzA0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwp0eXBlZGVmIHZvaWQg
KiBUWE5PYmplY3RSZWZjb247CiMgNTcxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNU
ZXh0RWRpdG9yLmgiIDMKc3RydWN0IFRYTkxvbmdSZWN0IHsKICBTSW50MzIgdG9wOwogIFNJbnQz
MiBsZWZ0OwogIFNJbnQzMiBib3R0b207CiAgU0ludDMyIHJpZ2h0Owp9Owp0eXBlZGVmIHN0cnVj
dCBUWE5Mb25nUmVjdCBUWE5Mb25nUmVjdDsKIyA1NzI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL01hY1RleHRFZGl0b3IuaCIgMwp0eXBlZGVmIFVJbnQzMiBUWE5GcmFtZVR5cGU7CmVudW0g
ewogIGtUWE5UZXh0RWRpdFN0eWxlRnJhbWVUeXBlID0gMSwKICBrVFhOUGFnZUZyYW1lVHlwZSA9
IDIsCiAga1RYTk11bHRpcGxlRnJhbWVUeXBlID0gMwp9OwoKCgplbnVtIHsKICBrVFhOUURGb250
TmFtZUF0dHJpYnV0ZSA9ICdmbnRuJywKICBrVFhOUURGb250RmFtaWx5SURBdHRyaWJ1dGUgPSAn
Zm9udCcsCiAga1RYTlFERm9udFNpemVBdHRyaWJ1dGUgPSAnc2l6ZScsCiAga1RYTlFERm9udFN0
eWxlQXR0cmlidXRlID0gJ2ZhY2UnLAogIGtUWE5RREZvbnRDb2xvckF0dHJpYnV0ZSA9ICdrbG9y
Jwp9OwoKZW51bSB7CiAga1RYTlFERm9udE5hbWVBdHRyaWJ1dGVTaXplID0gc2l6ZW9mKFN0cjI1
NSksCiAga1RYTlFERm9udEZhbWlseUlEQXR0cmlidXRlU2l6ZSA9IHNpemVvZihTSW50MTYpLAog
IGtUWE5Gb250U2l6ZUF0dHJpYnV0ZVNpemUgPSBzaXplb2YoRml4ZWQpLAogIGtUWE5RREZvbnRT
aXplQXR0cmlidXRlU2l6ZSA9IHNpemVvZihTSW50MTYpLAogIGtUWE5RREZvbnRTdHlsZUF0dHJp
YnV0ZVNpemUgPSBzaXplb2YoU3R5bGUpLAogIGtUWE5RREZvbnRDb2xvckF0dHJpYnV0ZVNpemUg
PSBzaXplb2YoUkdCQ29sb3IpCn07CgoKCgoKCmVudW0gewogIGtUWE5Vc2VRRGZvckltYWdpbmdC
aXQgPSAxNgp9OwoKZW51bSB7CiAga1RYTlVzZVFEZm9ySW1hZ2luZ01hc2sgPSAxIDw8IGtUWE5V
c2VRRGZvckltYWdpbmdCaXQKfTsKCmVudW0gewogIGtUWE5JbWFnZVdpdGhRREJpdCA9IDgKfTsK
CmVudW0gewogIGtUWE5JbWFnZVdpdGhRRE1hc2sgPSAxIDw8IGtUWE5JbWFnZVdpdGhRREJpdAp9
OwoKCgoKCgoKZW51bSB7CiAga1RYTkRyYXdDYXJldFdoZW5JbmFjdGl2ZVRhZyA9ICdkY3J0Jwp9
OwoKZW51bSB7CiAga1RYTkRvbnREcmF3Q2FyZXRXaGVuSW5hY3RpdmUgPSBmYWxzZSwKICBrVFhO
RHJhd0NhcmV0V2hlbkluYWN0aXZlID0gdHJ1ZQp9OwoKZW51bSB7CiAga1RYTkRvbnREcmF3Q2Fy
ZXRXaGVuSW5hY3RpdmVCaXQgPSAxMgp9OwoKZW51bSB7CiAga1RYTkRvbnREcmF3Q2FyZXRXaGVu
SW5hY3RpdmVNYXNrID0gMSA8PCBrVFhORG9udERyYXdDYXJldFdoZW5JbmFjdGl2ZUJpdAp9Owoj
IDU4MDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCmVudW0g
ewogIGtUWE5Ob1RTTUV2ZXJCaXQgPSA0Cn07CgplbnVtIHsKICBrVFhOTm9UU01FdmVyTWFzayA9
IDEgPDwga1RYTk5vVFNNRXZlckJpdAp9OwoKCgoKCgoKZW51bSB7CiAga1RYTk5vQXBwbGVFdmVu
dEhhbmRsZXJzQml0ID0gMCwKICBrVFhOUmVzdGFydEFwcGxlRXZlbnRIYW5kbGVyc0JpdCA9IDEK
fTsKCmVudW0gewogIGtUWE5Ob0FwcGxlRXZlbnRIYW5kbGVyc01hc2sgPSAxIDw8IGtUWE5Ob0Fw
cGxlRXZlbnRIYW5kbGVyc0JpdCwKICBrVFhOUmVzdGFydEFwcGxlRXZlbnRIYW5kbGVyc01hc2sg
PSAxIDw8IGtUWE5SZXN0YXJ0QXBwbGVFdmVudEhhbmRsZXJzQml0Cn07CgoKCgoKCgp0eXBlZGVm
IFVJbnQzMiBUWE5BY3Rpb25LZXk7CmVudW0gewogIGtUWE5UeXBpbmdBY3Rpb24gPSAwLAogIGtU
WE5DdXRBY3Rpb24gPSAxLAogIGtUWE5QYXN0ZUFjdGlvbiA9IDIsCiAga1RYTkNsZWFyQWN0aW9u
ID0gMywKICBrVFhOQ2hhbmdlRm9udEFjdGlvbiA9IDQsCiAga1RYTkNoYW5nZUZvbnRDb2xvckFj
dGlvbiA9IDUsCiAga1RYTkNoYW5nZUZvbnRTaXplQWN0aW9uID0gNiwKICBrVFhOQ2hhbmdlU3R5
bGVBY3Rpb24gPSA3LAogIGtUWE5BbGlnbkxlZnRBY3Rpb24gPSA4LAogIGtUWE5BbGlnbkNlbnRl
ckFjdGlvbiA9IDksCiAga1RYTkFsaWduUmlnaHRBY3Rpb24gPSAxMCwKICBrVFhORHJvcEFjdGlv
biA9IDExLAogIGtUWE5Nb3ZlQWN0aW9uID0gMTIsCiAga1RYTkZvbnRGZWF0dXJlQWN0aW9uID0g
MTMsCiAga1RYTkZvbnRWYXJpYXRpb25BY3Rpb24gPSAxNCwKCgoKCiAga1RYTlVuZG9MYXN0QWN0
aW9uID0gMTAyNAp9OwoKCiNkZWZpbmUga1RYTkFjdGlvbktleU1hcHBlcktleSBDRlNUUigiQWN0
aW9uS2V5TWFwcGVyIikKCgp0eXBlZGVmIENGU3RyaW5nUmVmICggKiBUWE5BY3Rpb25LZXlNYXBw
ZXJQcm9jUHRyKShUWE5BY3Rpb25LZXkgYWN0aW9uS2V5LCBVSW50MzIgY29tbWFuZElEKTsKdHlw
ZWRlZiBUWE5BY3Rpb25LZXlNYXBwZXJQcm9jUHRyIFRYTkFjdGlvbktleU1hcHBlclVQUDsKIyA1
ODczICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwpleHRlcm4g
VFhOQWN0aW9uS2V5TWFwcGVyVVBQCk5ld1RYTkFjdGlvbktleU1hcHBlclVQUChUWE5BY3Rpb25L
ZXlNYXBwZXJQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CiMgNTg4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNUZXh0RWRpdG9yLmgiIDMKZXh0
ZXJuIHZvaWQKRGlzcG9zZVRYTkFjdGlvbktleU1hcHBlclVQUChUWE5BY3Rpb25LZXlNYXBwZXJV
UFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDU4OTUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvTWFjVGV4dEVkaXRvci5oIiAzCmV4dGVybiBDRlN0cmluZ1JlZgpJ
bnZva2VUWE5BY3Rpb25LZXlNYXBwZXJVUFAoCiAgVFhOQWN0aW9uS2V5IGFjdGlvbktleSwKICBV
SW50MzIgY29tbWFuZElELAogIFRYTkFjdGlvbktleU1hcHBlclVQUCB1c2VyVVBQKSBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCiAgICBpbmxpbmUgVFhOQWN0aW9uS2V5TWFwcGVyVVBQ
IE5ld1RYTkFjdGlvbktleU1hcHBlclVQUChUWE5BY3Rpb25LZXlNYXBwZXJQcm9jUHRyIHVzZXJS
b3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZVRY
TkFjdGlvbktleU1hcHBlclVQUChUWE5BY3Rpb25LZXlNYXBwZXJVUFApIHsgfQogICAgaW5saW5l
IENGU3RyaW5nUmVmIEludm9rZVRYTkFjdGlvbktleU1hcHBlclVQUChUWE5BY3Rpb25LZXkgYWN0
aW9uS2V5LCBVSW50MzIgY29tbWFuZElELCBUWE5BY3Rpb25LZXlNYXBwZXJVUFAgdXNlclVQUCkg
eyByZXR1cm4gKCp1c2VyVVBQKShhY3Rpb25LZXksIGNvbW1hbmRJRCk7IH0KIyA1OTE4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwplbnVtIHsKICBrVFhOVGV4
dElucHV0Q291bnRCaXQgPSAwLAogIGtUWE5SdW5Db3VudEJpdCA9IDEKfTsKCgoKCgoKdHlwZWRl
ZiBPcHRpb25CaXRzIFRYTkNvdW50T3B0aW9uczsKZW51bSB7CiAga1RYTlRleHRJbnB1dENvdW50
TWFzayA9IDEgPDwga1RYTlRleHRJbnB1dENvdW50Qml0LAogIGtUWE5SdW5Db3VudE1hc2sgPSAx
IDw8IGtUWE5SdW5Db3VudEJpdCwKICBrVFhOQWxsQ291bnRNYXNrID0ga1RYTlRleHRJbnB1dENv
dW50TWFzayB8IGtUWE5SdW5Db3VudE1hc2sKfTsKIyA3MjE2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL01hY1RleHRFZGl0b3IuaCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAxMDYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYm94LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvTWFjSGVscC5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9NYWNIZWxwLmgiIDMKI2RlZmluZSBfX01BQ0hFTFBfXyAKIyA1MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9NYWNIZWxwLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNr
KHB1c2gsIDIpCgoKCgplbnVtIHsKICBrTWFjSGVscFZlcnNpb24gPSAweDAwMDMKfTsKCmVudW0g
ewogIGtITUhlbHBNZW51SUQgPSAtMTY0OTAKfTsKCnR5cGVkZWYgU0ludDE2IEhNQ29udGVudFJl
cXVlc3Q7CmVudW0gewogIGtITVN1cHBseUNvbnRlbnQgPSAwLAogIGtITURpc3Bvc2VDb250ZW50
ID0gMQp9OwojIDgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY0hlbHAuaCIgMwp0eXBl
ZGVmIFVJbnQzMiBITUNvbnRlbnRUeXBlOwplbnVtIHsKCgoKCiAga0hNTm9Db250ZW50ID0gJ25v
bmUnLAojIDEwMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNIZWxwLmgiIDMKICBrSE1D
RlN0cmluZ0NvbnRlbnQgPSAnY2ZzdCcsCiMgMTIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L01hY0hlbHAuaCIgMwogIGtITUNGU3RyaW5nTG9jYWxpemVkQ29udGVudCA9ICdjZnNsJywKCgoK
CgogIGtITVBhc2NhbFN0ckNvbnRlbnQgPSAncHN0cicsCgoKCgoKCgogIGtITVRleHRSZXNDb250
ZW50ID0gJ3RleHQnLAojIDE1MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNIZWxwLmgi
IDMKICBrSE1URUhhbmRsZUNvbnRlbnQgPSAndHh0aCcsCgoKCgoKCgogIGtITVN0cmluZ1Jlc0Nv
bnRlbnQgPSAnc3RyIycsCgoKCgoKCgogIGtITVN0clJlc0NvbnRlbnQgPSAnc3RyICcKfTsKIyAx
NzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjSGVscC5oIiAzCnR5cGVkZWYgU0ludDE2
IEhNVGFnRGlzcGxheVNpZGU7CmVudW0gewoKCgoKICBrSE1EZWZhdWx0U2lkZSA9IDAsCgoKCgog
IGtITU91dHNpZGVUb3BTY3JpcHRBbGlnbmVkID0gMSwKCgoKCiAga0hNT3V0c2lkZUxlZnRDZW50
ZXJBbGlnbmVkID0gMiwKCgoKCiAga0hNT3V0c2lkZUJvdHRvbVNjcmlwdEFsaWduZWQgPSAzLAoK
CgoKICBrSE1PdXRzaWRlUmlnaHRDZW50ZXJBbGlnbmVkID0gNCwKCgoKCiAga0hNT3V0c2lkZVRv
cExlZnRBbGlnbmVkID0gNSwKCgoKCiAga0hNT3V0c2lkZVRvcFJpZ2h0QWxpZ25lZCA9IDYsCgoK
CgogIGtITU91dHNpZGVMZWZ0VG9wQWxpZ25lZCA9IDcsCgoKCgogIGtITU91dHNpZGVMZWZ0Qm90
dG9tQWxpZ25lZCA9IDgsCgoKCgogIGtITU91dHNpZGVCb3R0b21MZWZ0QWxpZ25lZCA9IDksCgoK
CgogIGtITU91dHNpZGVCb3R0b21SaWdodEFsaWduZWQgPSAxMCwKCgoKCiAga0hNT3V0c2lkZVJp
Z2h0VG9wQWxpZ25lZCA9IDExLAoKCgoKICBrSE1PdXRzaWRlUmlnaHRCb3R0b21BbGlnbmVkID0g
MTIsCgoKCgogIGtITU91dHNpZGVUb3BDZW50ZXJBbGlnbmVkID0gMTMsCgoKCgogIGtITU91dHNp
ZGVCb3R0b21DZW50ZXJBbGlnbmVkID0gMTQsCgoKCgogIGtITUluc2lkZVJpZ2h0Q2VudGVyQWxp
Z25lZCA9IDE1LAoKCgoKICBrSE1JbnNpZGVMZWZ0Q2VudGVyQWxpZ25lZCA9IDE2LAoKCgoKICBr
SE1JbnNpZGVCb3R0b21DZW50ZXJBbGlnbmVkID0gMTcsCgoKCgogIGtITUluc2lkZVRvcENlbnRl
ckFsaWduZWQgPSAxOCwKCgoKCiAga0hNSW5zaWRlVG9wTGVmdENvcm5lciA9IDE5LAoKCgoKICBr
SE1JbnNpZGVUb3BSaWdodENvcm5lciA9IDIwLAoKCgoKICBrSE1JbnNpZGVCb3R0b21MZWZ0Q29y
bmVyID0gMjEsCgoKCgogIGtITUluc2lkZUJvdHRvbVJpZ2h0Q29ybmVyID0gMjIsCgoKCgogIGtI
TUFic29sdXRlQ2VudGVyQWxpZ25lZCA9IDIzCn07CgoKZW51bSB7CiAga0hNVG9wU2lkZSA9IGtI
TU91dHNpZGVUb3BTY3JpcHRBbGlnbmVkLAogIGtITUxlZnRTaWRlID0ga0hNT3V0c2lkZUxlZnRD
ZW50ZXJBbGlnbmVkLAogIGtITUJvdHRvbVNpZGUgPSBrSE1PdXRzaWRlQm90dG9tU2NyaXB0QWxp
Z25lZCwKICBrSE1SaWdodFNpZGUgPSBrSE1PdXRzaWRlUmlnaHRDZW50ZXJBbGlnbmVkLAogIGtI
TVRvcExlZnRDb3JuZXIgPSBrSE1PdXRzaWRlVG9wTGVmdEFsaWduZWQsCiAga0hNVG9wUmlnaHRD
b3JuZXIgPSBrSE1PdXRzaWRlVG9wUmlnaHRBbGlnbmVkLAogIGtITUxlZnRUb3BDb3JuZXIgPSBr
SE1PdXRzaWRlTGVmdFRvcEFsaWduZWQsCiAga0hNTGVmdEJvdHRvbUNvcm5lciA9IGtITU91dHNp
ZGVMZWZ0Qm90dG9tQWxpZ25lZCwKICBrSE1Cb3R0b21MZWZ0Q29ybmVyID0ga0hNT3V0c2lkZUJv
dHRvbUxlZnRBbGlnbmVkLAogIGtITUJvdHRvbVJpZ2h0Q29ybmVyID0ga0hNT3V0c2lkZUJvdHRv
bVJpZ2h0QWxpZ25lZCwKICBrSE1SaWdodFRvcENvcm5lciA9IGtITU91dHNpZGVSaWdodFRvcEFs
aWduZWQsCiAga0hNUmlnaHRCb3R0b21Db3JuZXIgPSBrSE1PdXRzaWRlUmlnaHRCb3R0b21BbGln
bmVkCn07Cgp0eXBlZGVmIFNJbnQxNiBITUNvbnRlbnRQcm92aWRlZFR5cGU7CmVudW0gewogIGtI
TUNvbnRlbnRQcm92aWRlZCA9IDAsCiAga0hNQ29udGVudE5vdFByb3ZpZGVkID0gMSwKICBrSE1D
b250ZW50Tm90UHJvdmlkZWREb250UHJvcGFnYXRlID0gMgp9OwoKZW51bSB7CiAga0hNTWluaW11
bUNvbnRlbnRJbmRleCA9IDAsCiAga0hNTWF4aW11bUNvbnRlbnRJbmRleCA9IDEKfTsKCmVudW0g
ewogIGVyckhNSWxsZWdhbENvbnRlbnRGb3JNaW5pbXVtU3RhdGUgPSAtMTA5ODAsCiAgZXJySE1J
bGxlZ2FsQ29udGVudEZvck1heGltdW1TdGF0ZSA9IC0xMDk4MQp9OwoKCmVudW0gewogIGtITUls
bGVnYWxDb250ZW50Rm9yTWluaW11bVN0YXRlID0gZXJySE1JbGxlZ2FsQ29udGVudEZvck1pbmlt
dW1TdGF0ZQp9OwoKZW51bSB7CiAga0hlbHBUYWdFdmVudEhhbmRsZXJUYWcgPSAnaGV2dCcKfTsK
CnN0cnVjdCBITVN0cmluZ1Jlc1R5cGUgewogIHNob3J0IGhtbVJlc0lEOwogIHNob3J0IGhtbUlu
ZGV4Owp9Owp0eXBlZGVmIHN0cnVjdCBITVN0cmluZ1Jlc1R5cGUgSE1TdHJpbmdSZXNUeXBlOwpz
dHJ1Y3QgSE1IZWxwQ29udGVudCB7CiAgSE1Db250ZW50VHlwZSBjb250ZW50VHlwZTsKICB1bmlv
biB7CiAgICBDRlN0cmluZ1JlZiB0YWdDRlN0cmluZzsKICAgIFN0cjI1NSB0YWdTdHJpbmc7CiAg
ICBITVN0cmluZ1Jlc1R5cGUgdGFnU3RyaW5nUmVzOwogICAgVEVIYW5kbGUgdGFnVEVIYW5kbGU7
CiAgICBTSW50MTYgdGFnVGV4dFJlczsKICAgIFNJbnQxNiB0YWdTdHJSZXM7CiAgfSB1Owp9Owp0
eXBlZGVmIHN0cnVjdCBITUhlbHBDb250ZW50IEhNSGVscENvbnRlbnQ7CnN0cnVjdCBITUhlbHBD
b250ZW50UmVjIHsKICBTSW50MzIgdmVyc2lvbjsKICBSZWN0IGFic0hvdFJlY3Q7CiAgSE1UYWdE
aXNwbGF5U2lkZSB0YWdTaWRlOwogIEhNSGVscENvbnRlbnQgY29udGVudFsyXTsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgSE1IZWxwQ29udGVudFJlYyBITUhlbHBDb250ZW50UmVjOwp0eXBlZGVmIEhNSGVs
cENvbnRlbnRSZWMgKiBITUhlbHBDb250ZW50UHRyOwoKCgp0eXBlZGVmIE9TU3RhdHVzICggKiBI
TUNvbnRyb2xDb250ZW50UHJvY1B0cikoQ29udHJvbFJlZiBpbkNvbnRyb2wsIFBvaW50IGluR2xv
YmFsTW91c2UsIEhNQ29udGVudFJlcXVlc3QgaW5SZXF1ZXN0LCBITUNvbnRlbnRQcm92aWRlZFR5
cGUgKm91dENvbnRlbnRQcm92aWRlZCwgSE1IZWxwQ29udGVudFJlYyAqaW9IZWxwQ29udGVudCk7
CnR5cGVkZWYgT1NTdGF0dXMgKCAqIEhNV2luZG93Q29udGVudFByb2NQdHIpKFdpbmRvd1JlZiBp
bldpbmRvdywgUG9pbnQgaW5HbG9iYWxNb3VzZSwgSE1Db250ZW50UmVxdWVzdCBpblJlcXVlc3Qs
IEhNQ29udGVudFByb3ZpZGVkVHlwZSAqb3V0Q29udGVudFByb3ZpZGVkLCBITUhlbHBDb250ZW50
UmVjICppb0hlbHBDb250ZW50KTsKdHlwZWRlZiBPU1N0YXR1cyAoICogSE1NZW51VGl0bGVDb250
ZW50UHJvY1B0cikoTWVudVJlZiBpbk1lbnUsIEhNQ29udGVudFJlcXVlc3QgaW5SZXF1ZXN0LCBI
TUNvbnRlbnRQcm92aWRlZFR5cGUgKm91dENvbnRlbnRQcm92aWRlZCwgSE1IZWxwQ29udGVudFJl
YyAqaW9IZWxwQ29udGVudCk7CnR5cGVkZWYgT1NTdGF0dXMgKCAqIEhNTWVudUl0ZW1Db250ZW50
UHJvY1B0cikoY29uc3QgTWVudVRyYWNraW5nRGF0YSAqaW5UcmFja2luZ0RhdGEsIEhNQ29udGVu
dFJlcXVlc3QgaW5SZXF1ZXN0LCBITUNvbnRlbnRQcm92aWRlZFR5cGUgKm91dENvbnRlbnRQcm92
aWRlZCwgSE1IZWxwQ29udGVudFJlYyAqaW9IZWxwQ29udGVudCk7CnR5cGVkZWYgSE1Db250cm9s
Q29udGVudFByb2NQdHIgSE1Db250cm9sQ29udGVudFVQUDsKdHlwZWRlZiBITVdpbmRvd0NvbnRl
bnRQcm9jUHRyIEhNV2luZG93Q29udGVudFVQUDsKdHlwZWRlZiBITU1lbnVUaXRsZUNvbnRlbnRQ
cm9jUHRyIEhNTWVudVRpdGxlQ29udGVudFVQUDsKdHlwZWRlZiBITU1lbnVJdGVtQ29udGVudFBy
b2NQdHIgSE1NZW51SXRlbUNvbnRlbnRVUFA7CiMgMzg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL01hY0hlbHAuaCIgMwpleHRlcm4gSE1Db250cm9sQ29udGVudFVQUApOZXdITUNvbnRyb2xD
b250ZW50VVBQKEhNQ29udHJvbENvbnRlbnRQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMzk4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY0hlbHAuaCIgMwpleHRlcm4gSE1XaW5kb3dDb250
ZW50VVBQCk5ld0hNV2luZG93Q29udGVudFVQUChITVdpbmRvd0NvbnRlbnRQcm9jUHRyIHVzZXJS
b3V0aW5lKSA7CiMgNDA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY0hlbHAuaCIgMwpl
eHRlcm4gSE1NZW51VGl0bGVDb250ZW50VVBQCk5ld0hNTWVudVRpdGxlQ29udGVudFVQUChITU1l
bnVUaXRsZUNvbnRlbnRQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgNDIwICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL01hY0hlbHAuaCIgMwpleHRlcm4gSE1NZW51SXRlbUNvbnRlbnRVUFAKTmV3
SE1NZW51SXRlbUNvbnRlbnRVUFAoSE1NZW51SXRlbUNvbnRlbnRQcm9jUHRyIHVzZXJSb3V0aW5l
KSA7CiMgNDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY0hlbHAuaCIgMwpleHRlcm4g
dm9pZApEaXNwb3NlSE1Db250cm9sQ29udGVudFVQUChITUNvbnRyb2xDb250ZW50VVBQIHVzZXJV
UFApIDsKIyA0NDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjSGVscC5oIiAzCmV4dGVy
biB2b2lkCkRpc3Bvc2VITVdpbmRvd0NvbnRlbnRVUFAoSE1XaW5kb3dDb250ZW50VVBQIHVzZXJV
UFApIDsKIyA0NTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjSGVscC5oIiAzCmV4dGVy
biB2b2lkCkRpc3Bvc2VITU1lbnVUaXRsZUNvbnRlbnRVUFAoSE1NZW51VGl0bGVDb250ZW50VVBQ
IHVzZXJVUFApIDsKIyA0NjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjSGVscC5oIiAz
CmV4dGVybiB2b2lkCkRpc3Bvc2VITU1lbnVJdGVtQ29udGVudFVQUChITU1lbnVJdGVtQ29udGVu
dFVQUCB1c2VyVVBQKSA7CiMgNDc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY0hlbHAu
aCIgMwpleHRlcm4gT1NTdGF0dXMKSW52b2tlSE1Db250cm9sQ29udGVudFVQUCgKICBDb250cm9s
UmVmIGluQ29udHJvbCwKICBQb2ludCBpbkdsb2JhbE1vdXNlLAogIEhNQ29udGVudFJlcXVlc3Qg
aW5SZXF1ZXN0LAogIEhNQ29udGVudFByb3ZpZGVkVHlwZSAqIG91dENvbnRlbnRQcm92aWRlZCwK
ICBITUhlbHBDb250ZW50UmVjICogaW9IZWxwQ29udGVudCwKICBITUNvbnRyb2xDb250ZW50VVBQ
IHVzZXJVUFApIDsKIyA0OTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjSGVscC5oIiAz
CmV4dGVybiBPU1N0YXR1cwpJbnZva2VITVdpbmRvd0NvbnRlbnRVUFAoCiAgV2luZG93UmVmIGlu
V2luZG93LAogIFBvaW50IGluR2xvYmFsTW91c2UsCiAgSE1Db250ZW50UmVxdWVzdCBpblJlcXVl
c3QsCiAgSE1Db250ZW50UHJvdmlkZWRUeXBlICogb3V0Q29udGVudFByb3ZpZGVkLAogIEhNSGVs
cENvbnRlbnRSZWMgKiBpb0hlbHBDb250ZW50LAogIEhNV2luZG93Q29udGVudFVQUCB1c2VyVVBQ
KSA7CiMgNTA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY0hlbHAuaCIgMwpleHRlcm4g
T1NTdGF0dXMKSW52b2tlSE1NZW51VGl0bGVDb250ZW50VVBQKAogIE1lbnVSZWYgaW5NZW51LAog
IEhNQ29udGVudFJlcXVlc3QgaW5SZXF1ZXN0LAogIEhNQ29udGVudFByb3ZpZGVkVHlwZSAqIG91
dENvbnRlbnRQcm92aWRlZCwKICBITUhlbHBDb250ZW50UmVjICogaW9IZWxwQ29udGVudCwKICBI
TU1lbnVUaXRsZUNvbnRlbnRVUFAgdXNlclVQUCkgOwojIDUyNSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9NYWNIZWxwLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkludm9rZUhNTWVudUl0ZW1Db250
ZW50VVBQKAogIGNvbnN0IE1lbnVUcmFja2luZ0RhdGEgKiBpblRyYWNraW5nRGF0YSwKICBITUNv
bnRlbnRSZXF1ZXN0IGluUmVxdWVzdCwKICBITUNvbnRlbnRQcm92aWRlZFR5cGUgKiBvdXRDb250
ZW50UHJvdmlkZWQsCiAgSE1IZWxwQ29udGVudFJlYyAqIGlvSGVscENvbnRlbnQsCiAgSE1NZW51
SXRlbUNvbnRlbnRVUFAgdXNlclVQUCkgOwoKCgogICAgaW5saW5lIEhNQ29udHJvbENvbnRlbnRV
UFAgTmV3SE1Db250cm9sQ29udGVudFVQUChITUNvbnRyb2xDb250ZW50UHJvY1B0ciB1c2VyUm91
dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBITVdpbmRvd0NvbnRlbnRV
UFAgTmV3SE1XaW5kb3dDb250ZW50VVBQKEhNV2luZG93Q29udGVudFByb2NQdHIgdXNlclJvdXRp
bmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgSE1NZW51VGl0bGVDb250ZW50
VVBQIE5ld0hNTWVudVRpdGxlQ29udGVudFVQUChITU1lbnVUaXRsZUNvbnRlbnRQcm9jUHRyIHVz
ZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIEhNTWVudUl0ZW1D
b250ZW50VVBQIE5ld0hNTWVudUl0ZW1Db250ZW50VVBQKEhNTWVudUl0ZW1Db250ZW50UHJvY1B0
ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERp
c3Bvc2VITUNvbnRyb2xDb250ZW50VVBQKEhNQ29udHJvbENvbnRlbnRVUFApIHsgfQogICAgaW5s
aW5lIHZvaWQgRGlzcG9zZUhNV2luZG93Q29udGVudFVQUChITVdpbmRvd0NvbnRlbnRVUFApIHsg
fQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUhNTWVudVRpdGxlQ29udGVudFVQUChITU1lbnVUaXRs
ZUNvbnRlbnRVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUhNTWVudUl0ZW1Db250ZW50
VVBQKEhNTWVudUl0ZW1Db250ZW50VVBQKSB7IH0KICAgIGlubGluZSBPU1N0YXR1cyBJbnZva2VI
TUNvbnRyb2xDb250ZW50VVBQKENvbnRyb2xSZWYgaW5Db250cm9sLCBQb2ludCBpbkdsb2JhbE1v
dXNlLCBITUNvbnRlbnRSZXF1ZXN0IGluUmVxdWVzdCwgSE1Db250ZW50UHJvdmlkZWRUeXBlICog
b3V0Q29udGVudFByb3ZpZGVkLCBITUhlbHBDb250ZW50UmVjICogaW9IZWxwQ29udGVudCwgSE1D
b250cm9sQ29udGVudFVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGluQ29udHJvbCwg
aW5HbG9iYWxNb3VzZSwgaW5SZXF1ZXN0LCBvdXRDb250ZW50UHJvdmlkZWQsIGlvSGVscENvbnRl
bnQpOyB9CiAgICBpbmxpbmUgT1NTdGF0dXMgSW52b2tlSE1XaW5kb3dDb250ZW50VVBQKFdpbmRv
d1JlZiBpbldpbmRvdywgUG9pbnQgaW5HbG9iYWxNb3VzZSwgSE1Db250ZW50UmVxdWVzdCBpblJl
cXVlc3QsIEhNQ29udGVudFByb3ZpZGVkVHlwZSAqIG91dENvbnRlbnRQcm92aWRlZCwgSE1IZWxw
Q29udGVudFJlYyAqIGlvSGVscENvbnRlbnQsIEhNV2luZG93Q29udGVudFVQUCB1c2VyVVBQKSB7
IHJldHVybiAoKnVzZXJVUFApKGluV2luZG93LCBpbkdsb2JhbE1vdXNlLCBpblJlcXVlc3QsIG91
dENvbnRlbnRQcm92aWRlZCwgaW9IZWxwQ29udGVudCk7IH0KICAgIGlubGluZSBPU1N0YXR1cyBJ
bnZva2VITU1lbnVUaXRsZUNvbnRlbnRVUFAoTWVudVJlZiBpbk1lbnUsIEhNQ29udGVudFJlcXVl
c3QgaW5SZXF1ZXN0LCBITUNvbnRlbnRQcm92aWRlZFR5cGUgKiBvdXRDb250ZW50UHJvdmlkZWQs
IEhNSGVscENvbnRlbnRSZWMgKiBpb0hlbHBDb250ZW50LCBITU1lbnVUaXRsZUNvbnRlbnRVUFAg
dXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShpbk1lbnUsIGluUmVxdWVzdCwgb3V0Q29udGVu
dFByb3ZpZGVkLCBpb0hlbHBDb250ZW50KTsgfQogICAgaW5saW5lIE9TU3RhdHVzIEludm9rZUhN
TWVudUl0ZW1Db250ZW50VVBQKGNvbnN0IE1lbnVUcmFja2luZ0RhdGEgKiBpblRyYWNraW5nRGF0
YSwgSE1Db250ZW50UmVxdWVzdCBpblJlcXVlc3QsIEhNQ29udGVudFByb3ZpZGVkVHlwZSAqIG91
dENvbnRlbnRQcm92aWRlZCwgSE1IZWxwQ29udGVudFJlYyAqIGlvSGVscENvbnRlbnQsIEhNTWVu
dUl0ZW1Db250ZW50VVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoaW5UcmFja2luZ0Rh
dGEsIGluUmVxdWVzdCwgb3V0Q29udGVudFByb3ZpZGVkLCBpb0hlbHBDb250ZW50KTsgfQojIDk2
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNIZWxwLmgiIDMKZW51bSB7CgoKCgoKICBr
SE1IaWRlVGFnRmFkZSA9IDEgPDwgMCwKCgoKCgoKICBrSE1IaWRlVGFnSW1tZWRpYXRlbHkgPSAx
IDw8IDEKfTsKIyAxMDc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY0hlbHAuaCIgMwoj
cHJhZ21hIHBhY2socG9wKQoKCn0KIyAxMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElU
b29sYm94LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElCdXR0b25W
aWV3cy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUJ1dHRvblZpZXdz
LmgiIDMKI2RlZmluZSBfX0hJQlVUVE9OVklFV1NfXyAKIyA0NCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISUJ1dHRvblZpZXdzLmgiIDMKZXh0ZXJuICJDIiB7CiMgNzUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElCdXR0b25WaWV3cy5oIiAzCmVudW0gewogIGtDb250cm9sUHVzaEJ1
dHRvblByb2MgPSAzNjgsCiAga0NvbnRyb2xQdXNoQnV0TGVmdEljb25Qcm9jID0gMzc0LAogIGtD
b250cm9sUHVzaEJ1dFJpZ2h0SWNvblByb2MgPSAzNzUKfTsKCgp0eXBlZGVmIFVJbnQxNiBDb250
cm9sUHVzaEJ1dHRvbkljb25BbGlnbm1lbnQ7CmVudW0gewogIGtDb250cm9sUHVzaEJ1dHRvbklj
b25PbkxlZnQgPSA2LAogIGtDb250cm9sUHVzaEJ1dHRvbkljb25PblJpZ2h0ID0gNwp9OwoKCmVu
dW0gewogIGtDb250cm9sS2luZFB1c2hCdXR0b24gPSAncHVzaCcsCiAga0NvbnRyb2xLaW5kUHVz
aEljb25CdXR0b24gPSAncGljbicKfTsKCgojZGVmaW5lIGtISVB1c2hCdXR0b25DbGFzc0lEIENG
U1RSKCJjb20uYXBwbGUuSElQdXNoQnV0dG9uIikKIyAxODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElCdXR0b25WaWV3cy5oIiAzCmVudW0gewoKCgoKCgogIGtDb250cm9sUHVzaEJ1dHRv
bkRlZmF1bHRUYWcgPSAnZGZsdCcsCgoKCgoKCiAga0NvbnRyb2xQdXNoQnV0dG9uQ2FuY2VsVGFn
ID0gJ2NuY2wnLAojIDIxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUJ1dHRvblZpZXdz
LmgiIDMKICBrQ29udHJvbFB1c2hCdXR0b25Db250ZW50VGFnID0ga0NvbnRyb2xDb250ZW50VGFn
LAoKCgoKCgoKICBrQ29udHJvbFB1c2hCdXR0b25JY29uQWxpZ25tZW50VGFnID0gJ2NwaWEnLAoK
CgoKCgogIGtDb250cm9sUHVzaEJ1dHRvbkFuaW1hdGluZ1RhZyA9ICdhbmltJwp9OwojIDI0MSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUJ1dHRvblZpZXdzLmgiIDMKZW51bSB7CgoKCgoK
CgogIGtDb250cm9sUHVzaEJ1dHRvbklzVGV4dHVyZWRUYWcgPSAnbWV0bCcKfTsKIyAyNjIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElCdXR0b25WaWV3cy5oIiAzCmVudW0gewogIGtDb250
cm9sQ2hlY2tCb3hQcm9jID0gMzY5Cn07CgoKZW51bSB7CiAga0NvbnRyb2xDaGVja0JveEF1dG9U
b2dnbGVQcm9jID0gMzcxCn07CgoKZW51bSB7CiAga0NvbnRyb2xLaW5kQ2hlY2tCb3ggPSAnY2Jv
eCcKfTsKCgojZGVmaW5lIGtISUNoZWNrQm94Q2xhc3NJRCBDRlNUUigiY29tLmFwcGxlLkhJQ2hl
Y2tCb3giKQojIDMzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUJ1dHRvblZpZXdzLmgi
IDMKZW51bSB7CiAga0NvbnRyb2xDaGVja0JveFVuY2hlY2tlZFZhbHVlID0gMCwKICBrQ29udHJv
bENoZWNrQm94Q2hlY2tlZFZhbHVlID0gMSwKICBrQ29udHJvbENoZWNrQm94TWl4ZWRWYWx1ZSA9
IDIKfTsKIyAzNDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElCdXR0b25WaWV3cy5oIiAz
CmVudW0gewogIGtDb250cm9sUmFkaW9CdXR0b25Qcm9jID0gMzcwCn07CgoKZW51bSB7CiAga0Nv
bnRyb2xSYWRpb0J1dHRvbkF1dG9Ub2dnbGVQcm9jID0gMzcyCn07CgoKZW51bSB7CiAga0NvbnRy
b2xSYWRpb0J1dHRvblVuY2hlY2tlZFZhbHVlID0gMCwKICBrQ29udHJvbFJhZGlvQnV0dG9uQ2hl
Y2tlZFZhbHVlID0gMSwKICBrQ29udHJvbFJhZGlvQnV0dG9uTWl4ZWRWYWx1ZSA9IDIKfTsKCgpl
bnVtIHsKICBrQ29udHJvbEtpbmRSYWRpb0J1dHRvbiA9ICdyZGlvJwp9OwoKCiNkZWZpbmUga0hJ
UmFkaW9CdXR0b25DbGFzc0lEIENGU1RSKCJjb20uYXBwbGUuSElSYWRpb0J1dHRvbiIpCiMgNDQ3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJQnV0dG9uVmlld3MuaCIgMwplbnVtIHsKICBr
Q29udHJvbFJhZGlvR3JvdXBQcm9jID0gNDE2Cn07CgoKZW51bSB7CiAga0NvbnRyb2xLaW5kUmFk
aW9Hcm91cCA9ICdyZ3JwJwp9OwoKCiNkZWZpbmUga0hJUmFkaW9Hcm91cENsYXNzSUQgQ0ZTVFIo
ImNvbS5hcHBsZS5ISVJhZGlvR3JvdXAiKQojIDU1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9ISUJ1dHRvblZpZXdzLmgiIDMKZW51bSB7CiAga0NvbnRyb2xCZXZlbEJ1dHRvblNtYWxsQmV2
ZWxQcm9jID0gMzIsCiAga0NvbnRyb2xCZXZlbEJ1dHRvbk5vcm1hbEJldmVsUHJvYyA9IDMzLAog
IGtDb250cm9sQmV2ZWxCdXR0b25MYXJnZUJldmVsUHJvYyA9IDM0Cn07CgoKZW51bSB7CiAga0Nv
bnRyb2xCZXZlbEJ1dHRvblNtYWxsQmV2ZWxWYXJpYW50ID0gMCwKICBrQ29udHJvbEJldmVsQnV0
dG9uTm9ybWFsQmV2ZWxWYXJpYW50ID0gKDEgPDwgMCksCiAga0NvbnRyb2xCZXZlbEJ1dHRvbkxh
cmdlQmV2ZWxWYXJpYW50ID0gKDEgPDwgMSksCiAga0NvbnRyb2xCZXZlbEJ1dHRvbk1lbnVPblJp
Z2h0VmFyaWFudCA9ICgxIDw8IDIpCn07CgoKdHlwZWRlZiBVSW50MTYgQ29udHJvbEJldmVsVGhp
Y2tuZXNzOwplbnVtIHsKICBrQ29udHJvbEJldmVsQnV0dG9uU21hbGxCZXZlbCA9IDAsCiAga0Nv
bnRyb2xCZXZlbEJ1dHRvbk5vcm1hbEJldmVsID0gMSwKICBrQ29udHJvbEJldmVsQnV0dG9uTGFy
Z2VCZXZlbCA9IDIKfTsKCgoKCgplbnVtIHsKICBrQ29udHJvbEJlaGF2aW9yUHVzaGJ1dHRvbiA9
IDAsCiAga0NvbnRyb2xCZWhhdmlvclRvZ2dsZXMgPSAweDAxMDAsCiAga0NvbnRyb2xCZWhhdmlv
clN0aWNreSA9IDB4MDIwMCwKICBrQ29udHJvbEJlaGF2aW9yT2Zmc2V0Q29udGVudHMgPSAweDgw
MDAsCiAga0NvbnRyb2xCZWhhdmlvclNpbmdsZVZhbHVlTWVudSA9IDAsCiAga0NvbnRyb2xCZWhh
dmlvck11bHRpVmFsdWVNZW51ID0gMHg0MDAwCn07CgoKZW51bSB7CiAga0NvbnRyb2xCZWhhdmlv
ckNvbW1hbmRNZW51ID0gMHgyMDAwCn07Cgp0eXBlZGVmIFVJbnQxNiBDb250cm9sQmV2ZWxCdXR0
b25CZWhhdmlvcjsKdHlwZWRlZiBVSW50MTYgQ29udHJvbEJldmVsQnV0dG9uTWVudUJlaGF2aW9y
OwoKdHlwZWRlZiBVSW50MTYgQ29udHJvbEJldmVsQnV0dG9uTWVudVBsYWNlbWVudDsKZW51bSB7
CiAga0NvbnRyb2xCZXZlbEJ1dHRvbk1lbnVPbkJvdHRvbSA9IDAsCiAga0NvbnRyb2xCZXZlbEJ1
dHRvbk1lbnVPblJpZ2h0ID0gKDEgPDwgMikKfTsKCgplbnVtIHsKICBrQ29udHJvbEtpbmRCZXZl
bEJ1dHRvbiA9ICdiZXZsJwp9OwoKCiNkZWZpbmUga0hJQmV2ZWxCdXR0b25DbGFzc0lEIENGU1RS
KCJjb20uYXBwbGUuSElCZXZlbEJ1dHRvbiIpCiMgNjQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0hJQnV0dG9uVmlld3MuaCIgMwp0eXBlZGVmIFNJbnQxNiBDb250cm9sQnV0dG9uR3JhcGhp
Y0FsaWdubWVudDsKZW51bSB7CiAga0NvbnRyb2xCZXZlbEJ1dHRvbkFsaWduU3lzRGlyZWN0aW9u
ID0gLTEsCiAga0NvbnRyb2xCZXZlbEJ1dHRvbkFsaWduQ2VudGVyID0gMCwKICBrQ29udHJvbEJl
dmVsQnV0dG9uQWxpZ25MZWZ0ID0gMSwKICBrQ29udHJvbEJldmVsQnV0dG9uQWxpZ25SaWdodCA9
IDIsCiAga0NvbnRyb2xCZXZlbEJ1dHRvbkFsaWduVG9wID0gMywKICBrQ29udHJvbEJldmVsQnV0
dG9uQWxpZ25Cb3R0b20gPSA0LAogIGtDb250cm9sQmV2ZWxCdXR0b25BbGlnblRvcExlZnQgPSA1
LAogIGtDb250cm9sQmV2ZWxCdXR0b25BbGlnbkJvdHRvbUxlZnQgPSA2LAogIGtDb250cm9sQmV2
ZWxCdXR0b25BbGlnblRvcFJpZ2h0ID0gNywKICBrQ29udHJvbEJldmVsQnV0dG9uQWxpZ25Cb3R0
b21SaWdodCA9IDgKfTsKCgp0eXBlZGVmIFNJbnQxNiBDb250cm9sQnV0dG9uVGV4dEFsaWdubWVu
dDsKZW51bSB7CiAga0NvbnRyb2xCZXZlbEJ1dHRvbkFsaWduVGV4dFN5c0RpcmVjdGlvbiA9IHRl
Rmx1c2hEZWZhdWx0LAogIGtDb250cm9sQmV2ZWxCdXR0b25BbGlnblRleHRDZW50ZXIgPSB0ZUNl
bnRlciwKICBrQ29udHJvbEJldmVsQnV0dG9uQWxpZ25UZXh0Rmx1c2hSaWdodCA9IHRlRmx1c2hS
aWdodCwKICBrQ29udHJvbEJldmVsQnV0dG9uQWxpZ25UZXh0Rmx1c2hMZWZ0ID0gdGVGbHVzaExl
ZnQKfTsKCgp0eXBlZGVmIFNJbnQxNiBDb250cm9sQnV0dG9uVGV4dFBsYWNlbWVudDsKZW51bSB7
CiAga0NvbnRyb2xCZXZlbEJ1dHRvblBsYWNlU3lzRGlyZWN0aW9uID0gLTEsCiAga0NvbnRyb2xC
ZXZlbEJ1dHRvblBsYWNlTm9ybWFsbHkgPSAwLAogIGtDb250cm9sQmV2ZWxCdXR0b25QbGFjZVRv
UmlnaHRPZkdyYXBoaWMgPSAxLAogIGtDb250cm9sQmV2ZWxCdXR0b25QbGFjZVRvTGVmdE9mR3Jh
cGhpYyA9IDIsCiAga0NvbnRyb2xCZXZlbEJ1dHRvblBsYWNlQmVsb3dHcmFwaGljID0gMywKICBr
Q29udHJvbEJldmVsQnV0dG9uUGxhY2VBYm92ZUdyYXBoaWMgPSA0Cn07CgoKCmVudW0gewogIGtD
b250cm9sQmV2ZWxCdXR0b25Db250ZW50VGFnID0ga0NvbnRyb2xDb250ZW50VGFnLAogIGtDb250
cm9sQmV2ZWxCdXR0b25UcmFuc2Zvcm1UYWcgPSAndHJhbicsCiAga0NvbnRyb2xCZXZlbEJ1dHRv
blRleHRBbGlnblRhZyA9ICd0YWxpJywKICBrQ29udHJvbEJldmVsQnV0dG9uVGV4dE9mZnNldFRh
ZyA9ICd0b2ZmJywKICBrQ29udHJvbEJldmVsQnV0dG9uR3JhcGhpY0FsaWduVGFnID0gJ2dhbGkn
LAogIGtDb250cm9sQmV2ZWxCdXR0b25HcmFwaGljT2Zmc2V0VGFnID0gJ2dvZmYnLAogIGtDb250
cm9sQmV2ZWxCdXR0b25UZXh0UGxhY2VUYWcgPSAndHBsYycsCiAga0NvbnRyb2xCZXZlbEJ1dHRv
bk1lbnVWYWx1ZVRhZyA9ICdtdmFsJywKICBrQ29udHJvbEJldmVsQnV0dG9uTWVudUhhbmRsZVRh
ZyA9ICdtaG5kJywKICBrQ29udHJvbEJldmVsQnV0dG9uTWVudVJlZlRhZyA9ICdtaG5kJywKICBr
Q29udHJvbEJldmVsQnV0dG9uQ2VudGVyUG9wdXBHbHlwaFRhZyA9ICdwZ2xjJwp9OwoKCmVudW0g
ewogIGtDb250cm9sQmV2ZWxCdXR0b25MYXN0TWVudVRhZyA9ICdsbW51JywKICBrQ29udHJvbEJl
dmVsQnV0dG9uTWVudURlbGF5VGFnID0gJ21kbHknCn07CgoKZW51bSB7CgoKCgoKICBrQ29udHJv
bEJldmVsQnV0dG9uU2NhbGVJY29uVGFnID0gJ3NjYWwnCn07CgoKZW51bSB7CiAga0NvbnRyb2xC
ZXZlbEJ1dHRvbk93bmVkTWVudVJlZlRhZyA9ICdvbXJmJywKICBrQ29udHJvbEJldmVsQnV0dG9u
S2luZFRhZyA9ICdiZWJrJwp9OwoKCgoKCgplbnVtIHsKCgoKCgoKICBrQ29udHJvbEJldmVsQnV0
dG9uSXNNdWx0aVZhbHVlTWVudVRhZyA9ICdtdWx0Jwp9OwojIDkwMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISUJ1dHRvblZpZXdzLmgiIDMKdHlwZWRlZiBTSW50MTYgQ29udHJvbFJvdW5k
QnV0dG9uU2l6ZTsKZW51bSB7CgoKCgogIGtDb250cm9sUm91bmRCdXR0b25Ob3JtYWxTaXplID0g
a0NvbnRyb2xTaXplTm9ybWFsLAoKCgoKICBrQ29udHJvbFJvdW5kQnV0dG9uTGFyZ2VTaXplID0g
a0NvbnRyb2xTaXplTGFyZ2UKfTsKCgplbnVtIHsKICBrQ29udHJvbFJvdW5kQnV0dG9uQ29udGVu
dFRhZyA9IGtDb250cm9sQ29udGVudFRhZywKICBrQ29udHJvbFJvdW5kQnV0dG9uU2l6ZVRhZyA9
IGtDb250cm9sU2l6ZVRhZwp9OwoKCmVudW0gewogIGtDb250cm9sS2luZFJvdW5kQnV0dG9uID0g
J3JuZGInCn07CgoKI2RlZmluZSBrSElSb3VuZEJ1dHRvbkNsYXNzSUQgQ0ZTVFIoImNvbS5hcHBs
ZS5ISVJvdW5kQnV0dG9uIikKIyA5OTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElCdXR0
b25WaWV3cy5oIiAzCn0KIyAxMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYm94
LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElDbG9ja1ZpZXcuaCIg
MSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElDbG9ja1ZpZXcuaCIgMwojZGVm
aW5lIF9fSElDTE9DS1ZJRVdfXyAKIyA0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNs
b2NrVmlldy5oIiAzCmV4dGVybiAiQyIgewojIDU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJQ2xvY2tWaWV3LmgiIDMKZW51bSB7CiAga0V2ZW50Q2xhc3NDbG9ja1ZpZXcgPSAnY2xvYycK
fTsKIyA4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNsb2NrVmlldy5oIiAzCmVudW0g
ewogIGtFdmVudENsb2NrRGF0ZU9yVGltZUNoYW5nZWQgPSAxCn07CiMgMTA5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJQ2xvY2tWaWV3LmgiIDMKZW51bSB7CiAga0NvbnRyb2xDbG9ja1Rp
bWVQcm9jID0gMjQwLAogIGtDb250cm9sQ2xvY2tUaW1lU2Vjb25kc1Byb2MgPSAyNDEsCiAga0Nv
bnRyb2xDbG9ja0RhdGVQcm9jID0gMjQyLAogIGtDb250cm9sQ2xvY2tNb250aFllYXJQcm9jID0g
MjQzCn07CgoKdHlwZWRlZiBVSW50MTYgQ29udHJvbENsb2NrVHlwZTsKZW51bSB7CiAga0NvbnRy
b2xDbG9ja1R5cGVIb3VyTWludXRlID0gMCwKICBrQ29udHJvbENsb2NrVHlwZUhvdXJNaW51dGVT
ZWNvbmQgPSAxLAogIGtDb250cm9sQ2xvY2tUeXBlTW9udGhEYXlZZWFyID0gMiwKICBrQ29udHJv
bENsb2NrVHlwZU1vbnRoWWVhciA9IDMKfTsKCgoKCnR5cGVkZWYgVUludDMyIENvbnRyb2xDbG9j
a0ZsYWdzOwplbnVtIHsKICBrQ29udHJvbENsb2NrRmxhZ1N0YW5kYXJkID0gMCwKICBrQ29udHJv
bENsb2NrTm9GbGFncyA9IDAsCiAga0NvbnRyb2xDbG9ja0ZsYWdEaXNwbGF5T25seSA9IDEsCiAg
a0NvbnRyb2xDbG9ja0lzRGlzcGxheU9ubHkgPSAxLAogIGtDb250cm9sQ2xvY2tGbGFnTGl2ZSA9
IDIsCiAga0NvbnRyb2xDbG9ja0lzTGl2ZSA9IDIKfTsKCgplbnVtIHsKICBrQ29udHJvbEtpbmRD
bG9jayA9ICdjbGNrJwp9OwoKCiNkZWZpbmUga0hJQ2xvY2tWaWV3Q2xhc3NJRCBDRlNUUigiY29t
LmFwcGxlLkhJQ2xvY2siKQojIDE3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNsb2Nr
Vmlldy5oIiAzCmVudW0gewogIGtDb250cm9sQ2xvY2tMb25nRGF0ZVRhZyA9ICdkYXRlJywKICBr
Q29udHJvbENsb2NrQWJzb2x1dGVUaW1lVGFnID0gJ2Fic3QnLAogIGtDb250cm9sQ2xvY2tGb250
U3R5bGVUYWcgPSBrQ29udHJvbEZvbnRTdHlsZVRhZywKICBrQ29udHJvbENsb2NrQW5pbWF0aW5n
VGFnID0gJ2FuaW0nCn07CgoKCn0KIyAxMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElU
b29sYm94LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElDb2NvYVZp
ZXcuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElDb2NvYVZpZXcuaCIg
MwojZGVmaW5lIF9fSElDT0NPQVZJRVdfXyAKIyAzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9ISUNvY29hVmlldy5oIiAzCmV4dGVybiAiQyIgewoKCgoKCgoKQGNsYXNzIE5TVmlldzsKCgoK
CiNkZWZpbmUga0hJQ29jb2FWaWV3Q2xhc3NJRCBDRlNUUigiY29tLmFwcGxlLkhJQ29jb2FWaWV3
IikKCmVudW0gewogIGtDb250cm9sS2luZEhJQ29jb2FWaWV3ID0gJ2hpbnMnCn07CgoKCgoKCgpl
bnVtIHsKCgoKCiAga0V2ZW50UGFyYW1OU1ZpZXcgPSAnbnN2dycKfTsKIyAxODkgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElDb2NvYVZpZXcuaCIgMwp9CiMgMTIyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0hJVG9vbGJveC5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0hJQ29tYm9Cb3guaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElDb21ib0JveC5oIiAzCiNkZWZpbmUgX19ISUNPTUJPQk9YX18gCiMgNDQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElDb21ib0JveC5oIiAzCmV4dGVybiAiQyIgewojIDYzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0hJQ29tYm9Cb3guaCIgMwojZGVmaW5lIGtISUNvbWJvQm94Q2xh
c3NJRCBDRlNUUigiY29tLmFwcGxlLkhJQ29tYm9Cb3giKQoKCgoKCmVudW0gewogIGtFdmVudENs
YXNzSElDb21ib0JveCA9ICdoaWNiJwp9OwoKZW51bSB7CiAga0V2ZW50UGFyYW1Db21ib0JveExp
c3RTZWxlY3RlZEl0ZW1JbmRleCA9ICdjYmxpJwp9OwojIDEwNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISUNvbWJvQm94LmgiIDMKZW51bSB7CiAga0V2ZW50Q29tYm9Cb3hMaXN0SXRlbVNl
bGVjdGVkID0gMQp9OwoKCgoKCgplbnVtIHsKCgoKCiAga0hJQ29tYm9Cb3hOb0F0dHJpYnV0ZXMg
PSAwLAoKCgoKCgogIGtISUNvbWJvQm94QXV0b0NvbXBsZXRpb25BdHRyaWJ1dGUgPSAoMSA8PCAw
KSwKCgoKCgogIGtISUNvbWJvQm94QXV0b0Rpc2Nsb3N1cmVBdHRyaWJ1dGUgPSAoMSA8PCAxKSwK
CgoKCgogIGtISUNvbWJvQm94QXV0b1NvcnRBdHRyaWJ1dGUgPSAoMSA8PCAyKSwKCgoKCgogIGtI
SUNvbWJvQm94QXV0b1NpemVMaXN0QXR0cmlidXRlID0gKDEgPDwgMyksCgoKCgogIGtISUNvbWJv
Qm94U3RhbmRhcmRBdHRyaWJ1dGVzID0gKGtISUNvbWJvQm94QXV0b0NvbXBsZXRpb25BdHRyaWJ1
dGUgfCBrSElDb21ib0JveEF1dG9EaXNjbG9zdXJlQXR0cmlidXRlIHwga0hJQ29tYm9Cb3hBdXRv
U2l6ZUxpc3RBdHRyaWJ1dGUpCn07CgoKZW51bSB7CiAga0NvbnRyb2xLaW5kSElDb21ib0JveCA9
ICdjYmJ4Jwp9OwoKCmVudW0gewogIGtISUNvbWJvQm94RWRpdFRleHRQYXJ0ID0gNSwKICBrSElD
b21ib0JveERpc2Nsb3N1cmVQYXJ0ID0gMjgKfTsKIyAxODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElDb21ib0JveC5oIiAzCmVudW0gewoKCgoKCgoKICBrSElDb21ib0JveExpc3RUYWcg
PSAnY2JscycsCgoKCgoKICBrSElDb21ib0JveExpc3RQaXhlbFdpZHRoVGFnID0gJ2NibHcnLAoK
CgoKCiAga0hJQ29tYm9Cb3hMaXN0UGl4ZWxIZWlnaHRUYWcgPSAnY2JsaCcsCgoKCgoKICBrSElD
b21ib0JveE51bVZpc2libGVJdGVtc1RhZyA9ICdjYm5pJwp9OwojIDU2MiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9ISUNvbWJvQm94LmgiIDMKfQojIDEyNiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISVRvb2xib3guaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9ISUNvbnRhaW5lclZpZXdzLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJQ29udGFpbmVyVmlld3MuaCIgMwojZGVmaW5lIF9fSElDT05UQUlORVJWSUVXU19fIAojIDQ0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJQ29udGFpbmVyVmlld3MuaCIgMwpleHRlcm4g
IkMiIHsKIyA2MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNvbnRhaW5lclZpZXdzLmgi
IDMKZW51bSB7CiAga0NvbnRyb2xHcm91cEJveFRleHRUaXRsZVByb2MgPSAxNjAsCiAga0NvbnRy
b2xHcm91cEJveENoZWNrQm94UHJvYyA9IDE2MSwKICBrQ29udHJvbEdyb3VwQm94UG9wdXBCdXR0
b25Qcm9jID0gMTYyLAogIGtDb250cm9sR3JvdXBCb3hTZWNvbmRhcnlUZXh0VGl0bGVQcm9jID0g
MTY0LAogIGtDb250cm9sR3JvdXBCb3hTZWNvbmRhcnlDaGVja0JveFByb2MgPSAxNjUsCiAga0Nv
bnRyb2xHcm91cEJveFNlY29uZGFyeVBvcHVwQnV0dG9uUHJvYyA9IDE2Ngp9OwoKCmVudW0gewog
IGtDb250cm9sS2luZEdyb3VwQm94ID0gJ2dycGInLAogIGtDb250cm9sS2luZENoZWNrR3JvdXBC
b3ggPSAnY2dycCcsCiAga0NvbnRyb2xLaW5kUG9wdXBHcm91cEJveCA9ICdwZ3JwJwp9OwoKCiNk
ZWZpbmUga0hJR3JvdXBCb3hDbGFzc0lEIENGU1RSKCJjb20uYXBwbGUuSElHcm91cEJveCIpCgoj
ZGVmaW5lIGtISUNoZWNrQm94R3JvdXBDbGFzc0lEIENGU1RSKCJjb20uYXBwbGUuSElDaGVja0Jv
eEdyb3VwIikKIyAyNDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElDb250YWluZXJWaWV3
cy5oIiAzCmVudW0gewogIGtDb250cm9sR3JvdXBCb3hNZW51SGFuZGxlVGFnID0gJ21oYW4nLAog
IGtDb250cm9sR3JvdXBCb3hNZW51UmVmVGFnID0gJ21oYW4nLAogIGtDb250cm9sR3JvdXBCb3hG
b250U3R5bGVUYWcgPSBrQ29udHJvbEZvbnRTdHlsZVRhZwp9OwoKCmVudW0gewogIGtDb250cm9s
R3JvdXBCb3hUaXRsZVJlY3RUYWcgPSAndHJlYycKfTsKCgoKCgoKZW51bSB7CgoKCgoKCiAga0Nv
bnRyb2xHcm91cEJveEZyYW1lUmVjdFRhZyA9ICdmcmVjJwp9OwoKCgoKCgplbnVtIHsKICBrQ29u
dHJvbFBsYWNhcmRQcm9jID0gMjI0Cn07CgoKZW51bSB7CiAga0NvbnRyb2xLaW5kUGxhY2FyZCA9
ICdwbGFjJwp9OwoKCiNkZWZpbmUga0hJUGxhY2FyZFZpZXdDbGFzc0lEIENGU1RSKCJjb20uYXBw
bGUuSElQbGFjYXJkVmlldyIpCiMgMzI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJQ29u
dGFpbmVyVmlld3MuaCIgMwplbnVtIHsKICBrQ29udHJvbFdpbmRvd0hlYWRlclByb2MgPSAzMzYs
CiAga0NvbnRyb2xXaW5kb3dMaXN0Vmlld0hlYWRlclByb2MgPSAzMzcKfTsKCgplbnVtIHsKICBr
Q29udHJvbEtpbmRXaW5kb3dIZWFkZXIgPSAnd2hlZCcKfTsKCgoKCgoKZW51bSB7CgoKCgoKICBr
Q29udHJvbFdpbmRvd0hlYWRlcklzTGlzdEhlYWRlclRhZyA9ICdpc2xoJwp9OwoKCiNkZWZpbmUg
a0hJV2luZG93SGVhZGVyVmlld0NsYXNzSUQgQ0ZTVFIoImNvbS5hcHBsZS5ISVdpbmRvd0hlYWRl
clZpZXciKQojIDM5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNvbnRhaW5lclZpZXdz
LmgiIDMKZW51bSB7CiAga0NvbnRyb2xVc2VyUGFuZVByb2MgPSAyNTYKfTsKCgplbnVtIHsKICBr
Q29udHJvbEtpbmRVc2VyUGFuZSA9ICd1cGFuJwp9OwoKCiNkZWZpbmUga0hJVXNlclBhbmVDbGFz
c0lEIENGU1RSKCJjb20uYXBwbGUuSElVc2VyUGFuZSIpCiMgNDM0ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJQ29udGFpbmVyVmlld3MuaCIgMwplbnVtIHsKICBrQ29udHJvbFVzZXJJdGVt
RHJhd1Byb2NUYWcgPSAndWlkcCcsCiAga0NvbnRyb2xVc2VyUGFuZURyYXdQcm9jVGFnID0gJ2Ry
YXcnLAogIGtDb250cm9sVXNlclBhbmVIaXRUZXN0UHJvY1RhZyA9ICdoaXR0JywKICBrQ29udHJv
bFVzZXJQYW5lVHJhY2tpbmdQcm9jVGFnID0gJ3RyYWsnLAogIGtDb250cm9sVXNlclBhbmVJZGxl
UHJvY1RhZyA9ICdpZGxlJywKICBrQ29udHJvbFVzZXJQYW5lS2V5RG93blByb2NUYWcgPSAna2V5
ZCcsCiAga0NvbnRyb2xVc2VyUGFuZUFjdGl2YXRlUHJvY1RhZyA9ICdhY3RpJywKICBrQ29udHJv
bFVzZXJQYW5lRm9jdXNQcm9jVGFnID0gJ2ZvY2knLAogIGtDb250cm9sVXNlclBhbmVCYWNrZ3Jv
dW5kUHJvY1RhZyA9ICdiYWNrJwp9OwoKdHlwZWRlZiB2b2lkICggKiBDb250cm9sVXNlclBhbmVE
cmF3UHJvY1B0cikoQ29udHJvbFJlZiBjb250cm9sLCBDb250cm9sUGFydENvZGUgcGFydCk7CnR5
cGVkZWYgQ29udHJvbFBhcnRDb2RlICggKiBDb250cm9sVXNlclBhbmVIaXRUZXN0UHJvY1B0ciko
Q29udHJvbFJlZiBjb250cm9sLCBQb2ludCB3aGVyZSk7CnR5cGVkZWYgQ29udHJvbFBhcnRDb2Rl
ICggKiBDb250cm9sVXNlclBhbmVUcmFja2luZ1Byb2NQdHIpKENvbnRyb2xSZWYgY29udHJvbCwg
UG9pbnQgc3RhcnRQdCwgQ29udHJvbEFjdGlvblVQUCBhY3Rpb25Qcm9jKTsKdHlwZWRlZiB2b2lk
ICggKiBDb250cm9sVXNlclBhbmVJZGxlUHJvY1B0cikoQ29udHJvbFJlZiBjb250cm9sKTsKdHlw
ZWRlZiBDb250cm9sUGFydENvZGUgKCAqIENvbnRyb2xVc2VyUGFuZUtleURvd25Qcm9jUHRyKShD
b250cm9sUmVmIGNvbnRyb2wsIFNJbnQxNiBrZXlDb2RlLCBTSW50MTYgY2hhckNvZGUsIFNJbnQx
NiBtb2RpZmllcnMpOwp0eXBlZGVmIHZvaWQgKCAqIENvbnRyb2xVc2VyUGFuZUFjdGl2YXRlUHJv
Y1B0cikoQ29udHJvbFJlZiBjb250cm9sLCBCb29sZWFuIGFjdGl2YXRpbmcpOwp0eXBlZGVmIENv
bnRyb2xQYXJ0Q29kZSAoICogQ29udHJvbFVzZXJQYW5lRm9jdXNQcm9jUHRyKShDb250cm9sUmVm
IGNvbnRyb2wsIENvbnRyb2xGb2N1c1BhcnQgYWN0aW9uKTsKdHlwZWRlZiBDb250cm9sVXNlclBh
bmVEcmF3UHJvY1B0ciBDb250cm9sVXNlclBhbmVEcmF3VVBQOwp0eXBlZGVmIENvbnRyb2xVc2Vy
UGFuZUhpdFRlc3RQcm9jUHRyIENvbnRyb2xVc2VyUGFuZUhpdFRlc3RVUFA7CnR5cGVkZWYgQ29u
dHJvbFVzZXJQYW5lVHJhY2tpbmdQcm9jUHRyIENvbnRyb2xVc2VyUGFuZVRyYWNraW5nVVBQOwp0
eXBlZGVmIENvbnRyb2xVc2VyUGFuZUlkbGVQcm9jUHRyIENvbnRyb2xVc2VyUGFuZUlkbGVVUFA7
CnR5cGVkZWYgQ29udHJvbFVzZXJQYW5lS2V5RG93blByb2NQdHIgQ29udHJvbFVzZXJQYW5lS2V5
RG93blVQUDsKdHlwZWRlZiBDb250cm9sVXNlclBhbmVBY3RpdmF0ZVByb2NQdHIgQ29udHJvbFVz
ZXJQYW5lQWN0aXZhdGVVUFA7CnR5cGVkZWYgQ29udHJvbFVzZXJQYW5lRm9jdXNQcm9jUHRyIENv
bnRyb2xVc2VyUGFuZUZvY3VzVVBQOwojIDQ2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SUNvbnRhaW5lclZpZXdzLmgiIDMKZXh0ZXJuIENvbnRyb2xVc2VyUGFuZURyYXdVUFAKTmV3Q29u
dHJvbFVzZXJQYW5lRHJhd1VQUChDb250cm9sVXNlclBhbmVEcmF3UHJvY1B0ciB1c2VyUm91dGlu
ZSkgOwojIDQ3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNvbnRhaW5lclZpZXdzLmgi
IDMKZXh0ZXJuIENvbnRyb2xVc2VyUGFuZUhpdFRlc3RVUFAKTmV3Q29udHJvbFVzZXJQYW5lSGl0
VGVzdFVQUChDb250cm9sVXNlclBhbmVIaXRUZXN0UHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDQ5
MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNvbnRhaW5lclZpZXdzLmgiIDMKZXh0ZXJu
IENvbnRyb2xVc2VyUGFuZVRyYWNraW5nVVBQCk5ld0NvbnRyb2xVc2VyUGFuZVRyYWNraW5nVVBQ
KENvbnRyb2xVc2VyUGFuZVRyYWNraW5nUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDUwMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNvbnRhaW5lclZpZXdzLmgiIDMKZXh0ZXJuIENvbnRy
b2xVc2VyUGFuZUlkbGVVUFAKTmV3Q29udHJvbFVzZXJQYW5lSWRsZVVQUChDb250cm9sVXNlclBh
bmVJZGxlUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDUxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISUNvbnRhaW5lclZpZXdzLmgiIDMKZXh0ZXJuIENvbnRyb2xVc2VyUGFuZUtleURvd25V
UFAKTmV3Q29udHJvbFVzZXJQYW5lS2V5RG93blVQUChDb250cm9sVXNlclBhbmVLZXlEb3duUHJv
Y1B0ciB1c2VyUm91dGluZSkgOwojIDUyMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNv
bnRhaW5lclZpZXdzLmgiIDMKZXh0ZXJuIENvbnRyb2xVc2VyUGFuZUFjdGl2YXRlVVBQCk5ld0Nv
bnRyb2xVc2VyUGFuZUFjdGl2YXRlVVBQKENvbnRyb2xVc2VyUGFuZUFjdGl2YXRlUHJvY1B0ciB1
c2VyUm91dGluZSkgOwojIDUzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNvbnRhaW5l
clZpZXdzLmgiIDMKZXh0ZXJuIENvbnRyb2xVc2VyUGFuZUZvY3VzVVBQCk5ld0NvbnRyb2xVc2Vy
UGFuZUZvY3VzVVBQKENvbnRyb2xVc2VyUGFuZUZvY3VzUHJvY1B0ciB1c2VyUm91dGluZSkgOwoj
IDU0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNvbnRhaW5lclZpZXdzLmgiIDMKZXh0
ZXJuIHZvaWQKRGlzcG9zZUNvbnRyb2xVc2VyUGFuZURyYXdVUFAoQ29udHJvbFVzZXJQYW5lRHJh
d1VQUCB1c2VyVVBQKSA7CiMgNTU2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJQ29udGFp
bmVyVmlld3MuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlQ29udHJvbFVzZXJQYW5lSGl0VGVzdFVQ
UChDb250cm9sVXNlclBhbmVIaXRUZXN0VVBQIHVzZXJVUFApIDsKIyA1NjcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElDb250YWluZXJWaWV3cy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VD
b250cm9sVXNlclBhbmVUcmFja2luZ1VQUChDb250cm9sVXNlclBhbmVUcmFja2luZ1VQUCB1c2Vy
VVBQKSA7CiMgNTc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJQ29udGFpbmVyVmlld3Mu
aCIgMwpleHRlcm4gdm9pZApEaXNwb3NlQ29udHJvbFVzZXJQYW5lSWRsZVVQUChDb250cm9sVXNl
clBhbmVJZGxlVVBQIHVzZXJVUFApIDsKIyA1ODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElDb250YWluZXJWaWV3cy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VDb250cm9sVXNlclBhbmVL
ZXlEb3duVVBQKENvbnRyb2xVc2VyUGFuZUtleURvd25VUFAgdXNlclVQUCkgOwojIDYwMCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUNvbnRhaW5lclZpZXdzLmgiIDMKZXh0ZXJuIHZvaWQK
RGlzcG9zZUNvbnRyb2xVc2VyUGFuZUFjdGl2YXRlVVBQKENvbnRyb2xVc2VyUGFuZUFjdGl2YXRl
VVBQIHVzZXJVUFApIDsKIyA2MTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElDb250YWlu
ZXJWaWV3cy5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VDb250cm9sVXNlclBhbmVGb2N1c1VQUChD
b250cm9sVXNlclBhbmVGb2N1c1VQUCB1c2VyVVBQKSA7CiMgNjIyICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJQ29udGFpbmVyVmlld3MuaCIgMwpleHRlcm4gdm9pZApJbnZva2VDb250cm9s
VXNlclBhbmVEcmF3VVBQKAogIENvbnRyb2xSZWYgY29udHJvbCwKICBDb250cm9sUGFydENvZGUg
cGFydCwKICBDb250cm9sVXNlclBhbmVEcmF3VVBQIHVzZXJVUFApIDsKIyA2MzYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElDb250YWluZXJWaWV3cy5oIiAzCmV4dGVybiBDb250cm9sUGFy
dENvZGUKSW52b2tlQ29udHJvbFVzZXJQYW5lSGl0VGVzdFVQUCgKICBDb250cm9sUmVmIGNvbnRy
b2wsCiAgUG9pbnQgd2hlcmUsCiAgQ29udHJvbFVzZXJQYW5lSGl0VGVzdFVQUCB1c2VyVVBQKSA7
CiMgNjUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJQ29udGFpbmVyVmlld3MuaCIgMwpl
eHRlcm4gQ29udHJvbFBhcnRDb2RlCkludm9rZUNvbnRyb2xVc2VyUGFuZVRyYWNraW5nVVBQKAog
IENvbnRyb2xSZWYgY29udHJvbCwKICBQb2ludCBzdGFydFB0LAogIENvbnRyb2xBY3Rpb25VUFAg
YWN0aW9uUHJvYywKICBDb250cm9sVXNlclBhbmVUcmFja2luZ1VQUCB1c2VyVVBQKSA7CiMgNjY1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJQ29udGFpbmVyVmlld3MuaCIgMwpleHRlcm4g
dm9pZApJbnZva2VDb250cm9sVXNlclBhbmVJZGxlVVBQKAogIENvbnRyb2xSZWYgY29udHJvbCwK
ICBDb250cm9sVXNlclBhbmVJZGxlVVBQIHVzZXJVUFApIDsKIyA2NzggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElDb250YWluZXJWaWV3cy5oIiAzCmV4dGVybiBDb250cm9sUGFydENvZGUK
SW52b2tlQ29udHJvbFVzZXJQYW5lS2V5RG93blVQUCgKICBDb250cm9sUmVmIGNvbnRyb2wsCiAg
U0ludDE2IGtleUNvZGUsCiAgU0ludDE2IGNoYXJDb2RlLAogIFNJbnQxNiBtb2RpZmllcnMsCiAg
Q29udHJvbFVzZXJQYW5lS2V5RG93blVQUCB1c2VyVVBQKSA7CiMgNjk0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0hJQ29udGFpbmVyVmlld3MuaCIgMwpleHRlcm4gdm9pZApJbnZva2VDb250
cm9sVXNlclBhbmVBY3RpdmF0ZVVQUCgKICBDb250cm9sUmVmIGNvbnRyb2wsCiAgQm9vbGVhbiBh
Y3RpdmF0aW5nLAogIENvbnRyb2xVc2VyUGFuZUFjdGl2YXRlVVBQIHVzZXJVUFApIDsKIyA3MDgg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElDb250YWluZXJWaWV3cy5oIiAzCmV4dGVybiBD
b250cm9sUGFydENvZGUKSW52b2tlQ29udHJvbFVzZXJQYW5lRm9jdXNVUFAoCiAgQ29udHJvbFJl
ZiBjb250cm9sLAogIENvbnRyb2xGb2N1c1BhcnQgYWN0aW9uLAogIENvbnRyb2xVc2VyUGFuZUZv
Y3VzVVBQIHVzZXJVUFApIDsKCgoKICAgIGlubGluZSBDb250cm9sVXNlclBhbmVEcmF3VVBQIE5l
d0NvbnRyb2xVc2VyUGFuZURyYXdVUFAoQ29udHJvbFVzZXJQYW5lRHJhd1Byb2NQdHIgdXNlclJv
dXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgQ29udHJvbFVzZXJQYW5l
SGl0VGVzdFVQUCBOZXdDb250cm9sVXNlclBhbmVIaXRUZXN0VVBQKENvbnRyb2xVc2VyUGFuZUhp
dFRlc3RQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5s
aW5lIENvbnRyb2xVc2VyUGFuZVRyYWNraW5nVVBQIE5ld0NvbnRyb2xVc2VyUGFuZVRyYWNraW5n
VVBQKENvbnRyb2xVc2VyUGFuZVRyYWNraW5nUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4g
dXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBDb250cm9sVXNlclBhbmVJZGxlVVBQIE5ld0NvbnRy
b2xVc2VyUGFuZUlkbGVVUFAoQ29udHJvbFVzZXJQYW5lSWRsZVByb2NQdHIgdXNlclJvdXRpbmUp
IHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgQ29udHJvbFVzZXJQYW5lS2V5RG93
blVQUCBOZXdDb250cm9sVXNlclBhbmVLZXlEb3duVVBQKENvbnRyb2xVc2VyUGFuZUtleURvd25Q
cm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIENv
bnRyb2xVc2VyUGFuZUFjdGl2YXRlVVBQIE5ld0NvbnRyb2xVc2VyUGFuZUFjdGl2YXRlVVBQKENv
bnRyb2xVc2VyUGFuZUFjdGl2YXRlUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJv
dXRpbmU7IH0KICAgIGlubGluZSBDb250cm9sVXNlclBhbmVGb2N1c1VQUCBOZXdDb250cm9sVXNl
clBhbmVGb2N1c1VQUChDb250cm9sVXNlclBhbmVGb2N1c1Byb2NQdHIgdXNlclJvdXRpbmUpIHsg
cmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlQ29udHJvbFVzZXJQ
YW5lRHJhd1VQUChDb250cm9sVXNlclBhbmVEcmF3VVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERp
c3Bvc2VDb250cm9sVXNlclBhbmVIaXRUZXN0VVBQKENvbnRyb2xVc2VyUGFuZUhpdFRlc3RVUFAp
IHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUNvbnRyb2xVc2VyUGFuZVRyYWNraW5nVVBQKENv
bnRyb2xVc2VyUGFuZVRyYWNraW5nVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VDb250
cm9sVXNlclBhbmVJZGxlVVBQKENvbnRyb2xVc2VyUGFuZUlkbGVVUFApIHsgfQogICAgaW5saW5l
IHZvaWQgRGlzcG9zZUNvbnRyb2xVc2VyUGFuZUtleURvd25VUFAoQ29udHJvbFVzZXJQYW5lS2V5
RG93blVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlQ29udHJvbFVzZXJQYW5lQWN0aXZh
dGVVUFAoQ29udHJvbFVzZXJQYW5lQWN0aXZhdGVVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlz
cG9zZUNvbnRyb2xVc2VyUGFuZUZvY3VzVVBQKENvbnRyb2xVc2VyUGFuZUZvY3VzVVBQKSB7IH0K
ICAgIGlubGluZSB2b2lkIEludm9rZUNvbnRyb2xVc2VyUGFuZURyYXdVUFAoQ29udHJvbFJlZiBj
b250cm9sLCBDb250cm9sUGFydENvZGUgcGFydCwgQ29udHJvbFVzZXJQYW5lRHJhd1VQUCB1c2Vy
VVBQKSB7ICgqdXNlclVQUCkoY29udHJvbCwgcGFydCk7IH0KICAgIGlubGluZSBDb250cm9sUGFy
dENvZGUgSW52b2tlQ29udHJvbFVzZXJQYW5lSGl0VGVzdFVQUChDb250cm9sUmVmIGNvbnRyb2ws
IFBvaW50IHdoZXJlLCBDb250cm9sVXNlclBhbmVIaXRUZXN0VVBQIHVzZXJVUFApIHsgcmV0dXJu
ICgqdXNlclVQUCkoY29udHJvbCwgd2hlcmUpOyB9CiAgICBpbmxpbmUgQ29udHJvbFBhcnRDb2Rl
IEludm9rZUNvbnRyb2xVc2VyUGFuZVRyYWNraW5nVVBQKENvbnRyb2xSZWYgY29udHJvbCwgUG9p
bnQgc3RhcnRQdCwgQ29udHJvbEFjdGlvblVQUCBhY3Rpb25Qcm9jLCBDb250cm9sVXNlclBhbmVU
cmFja2luZ1VQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGNvbnRyb2wsIHN0YXJ0UHQs
IGFjdGlvblByb2MpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VDb250cm9sVXNlclBhbmVJZGxl
VVBQKENvbnRyb2xSZWYgY29udHJvbCwgQ29udHJvbFVzZXJQYW5lSWRsZVVQUCB1c2VyVVBQKSB7
ICgqdXNlclVQUCkoY29udHJvbCk7IH0KICAgIGlubGluZSBDb250cm9sUGFydENvZGUgSW52b2tl
Q29udHJvbFVzZXJQYW5lS2V5RG93blVQUChDb250cm9sUmVmIGNvbnRyb2wsIFNJbnQxNiBrZXlD
b2RlLCBTSW50MTYgY2hhckNvZGUsIFNJbnQxNiBtb2RpZmllcnMsIENvbnRyb2xVc2VyUGFuZUtl
eURvd25VUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShjb250cm9sLCBrZXlDb2RlLCBj
aGFyQ29kZSwgbW9kaWZpZXJzKTsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlQ29udHJvbFVzZXJQ
YW5lQWN0aXZhdGVVUFAoQ29udHJvbFJlZiBjb250cm9sLCBCb29sZWFuIGFjdGl2YXRpbmcsIENv
bnRyb2xVc2VyUGFuZUFjdGl2YXRlVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKShjb250cm9sLCBh
Y3RpdmF0aW5nKTsgfQogICAgaW5saW5lIENvbnRyb2xQYXJ0Q29kZSBJbnZva2VDb250cm9sVXNl
clBhbmVGb2N1c1VQUChDb250cm9sUmVmIGNvbnRyb2wsIENvbnRyb2xGb2N1c1BhcnQgYWN0aW9u
LCBDb250cm9sVXNlclBhbmVGb2N1c1VQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGNv
bnRyb2wsIGFjdGlvbik7IH0KIyA4MTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElDb250
YWluZXJWaWV3cy5oIiAzCn0KIyAxMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29s
Ym94LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nl
ci5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgi
IDMKI2RlZmluZSBfX0hJREFUQUJST1dTRVJfXyAKIyA3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gs
IDIpCgojZGVmaW5lIGtISURhdGFCcm93c2VyQ2xhc3NJRCBDRlNUUigiY29tLmFwcGxlLkhJRGF0
YUJyb3dzZXIiKQoKZW51bSB7CiAga0NvbnRyb2xLaW5kRGF0YUJyb3dzZXIgPSAnZGF0YicKfTsK
CgplbnVtIHsKICBlcnJEYXRhQnJvd3Nlck5vdENvbmZpZ3VyZWQgPSAtNDk3MCwKICBlcnJEYXRh
QnJvd3Nlckl0ZW1Ob3RGb3VuZCA9IC00OTcxLAogIGVyckRhdGFCcm93c2VySXRlbU5vdEFkZGVk
ID0gLTQ5NzUsCiAgZXJyRGF0YUJyb3dzZXJQcm9wZXJ0eU5vdEZvdW5kID0gLTQ5NzIsCiAgZXJy
RGF0YUJyb3dzZXJJbnZhbGlkUHJvcGVydHlQYXJ0ID0gLTQ5NzMsCiAgZXJyRGF0YUJyb3dzZXJJ
bnZhbGlkUHJvcGVydHlEYXRhID0gLTQ5NzQsCiAgZXJyRGF0YUJyb3dzZXJQcm9wZXJ0eU5vdFN1
cHBvcnRlZCA9IC00OTc5Cn07CgplbnVtIHsKCiAga0NvbnRyb2xEYXRhQnJvd3NlckluY2x1ZGVz
RnJhbWVBbmRGb2N1c1RhZyA9ICdicmRyJywKICBrQ29udHJvbERhdGFCcm93c2VyS2V5RmlsdGVy
VGFnID0ga0NvbnRyb2xLZXlGaWx0ZXJUYWcsCiAga0NvbnRyb2xEYXRhQnJvd3NlckVkaXRUZXh0
S2V5RmlsdGVyVGFnID0ga0NvbnRyb2xEYXRhQnJvd3NlcktleUZpbHRlclRhZywKICBrQ29udHJv
bERhdGFCcm93c2VyRWRpdFRleHRWYWxpZGF0aW9uUHJvY1RhZyA9ICd2YWxpJwp9OwoKCnR5cGVk
ZWYgT1NUeXBlIERhdGFCcm93c2VyVmlld1N0eWxlOwplbnVtIHsKICBrRGF0YUJyb3dzZXJOb1Zp
ZXcgPSAweDNGM0YzRjNGLAogIGtEYXRhQnJvd3Nlckxpc3RWaWV3ID0gJ2xzdHYnLAogIGtEYXRh
QnJvd3NlckNvbHVtblZpZXcgPSAnY2xtdicKfTsKCgp0eXBlZGVmIFVJbnQzMiBEYXRhQnJvd3Nl
clNlbGVjdGlvbkZsYWdzOwplbnVtIHsKICBrRGF0YUJyb3dzZXJEcmFnU2VsZWN0ID0gMSA8PCAw
LAogIGtEYXRhQnJvd3NlclNlbGVjdE9ubHlPbmUgPSAxIDw8IDEsCiAga0RhdGFCcm93c2VyUmVz
ZXRTZWxlY3Rpb24gPSAxIDw8IDIsCiAga0RhdGFCcm93c2VyQ21kVG9nZ2xlc1NlbGVjdGlvbiA9
IDEgPDwgMywKICBrRGF0YUJyb3dzZXJOb0Rpc2pvaW50U2VsZWN0aW9uID0gMSA8PCA0LAogIGtE
YXRhQnJvd3NlckFsd2F5c0V4dGVuZFNlbGVjdGlvbiA9IDEgPDwgNSwKICBrRGF0YUJyb3dzZXJO
ZXZlckVtcHR5U2VsZWN0aW9uU2V0ID0gMSA8PCA2Cn07CgoKdHlwZWRlZiBVSW50MTYgRGF0YUJy
b3dzZXJTb3J0T3JkZXI7CmVudW0gewogIGtEYXRhQnJvd3Nlck9yZGVyVW5kZWZpbmVkID0gMCwK
ICBrRGF0YUJyb3dzZXJPcmRlckluY3JlYXNpbmcgPSAxLAogIGtEYXRhQnJvd3Nlck9yZGVyRGVj
cmVhc2luZyA9IDIKfTsKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgRGF0YUJyb3dzZXJJdGVtSUQ7
CmVudW0gewogIGtEYXRhQnJvd3Nlck5vSXRlbSA9IDAKfTsKCnR5cGVkZWYgVUludDMyIERhdGFC
cm93c2VySXRlbVN0YXRlOwplbnVtIHsKICBrRGF0YUJyb3dzZXJJdGVtTm9TdGF0ZSA9IDAsCiAg
a0RhdGFCcm93c2VySXRlbUFueVN0YXRlID0gKHVuc2lnbmVkIGludCkoLTEpLAogIGtEYXRhQnJv
d3Nlckl0ZW1Jc1NlbGVjdGVkID0gMSA8PCAwLAogIGtEYXRhQnJvd3NlckNvbnRhaW5lcklzT3Bl
biA9IDEgPDwgMSwKICBrRGF0YUJyb3dzZXJJdGVtSXNEcmFnVGFyZ2V0ID0gMSA8PCAyCn07CgoK
dHlwZWRlZiBVSW50OCBEYXRhQnJvd3NlclJldmVhbE9wdGlvbnM7CmVudW0gewogIGtEYXRhQnJv
d3NlclJldmVhbE9ubHkgPSAwLAogIGtEYXRhQnJvd3NlclJldmVhbEFuZENlbnRlckluVmlldyA9
IDEgPDwgMCwKICBrRGF0YUJyb3dzZXJSZXZlYWxXaXRob3V0U2VsZWN0aW5nID0gMSA8PCAxCn07
CgoKdHlwZWRlZiBVSW50MzIgRGF0YUJyb3dzZXJTZXRPcHRpb247CmVudW0gewogIGtEYXRhQnJv
d3Nlckl0ZW1zQWRkID0gMCwKICBrRGF0YUJyb3dzZXJJdGVtc0Fzc2lnbiA9IDEsCiAga0RhdGFC
cm93c2VySXRlbXNUb2dnbGUgPSAyLAogIGtEYXRhQnJvd3Nlckl0ZW1zUmVtb3ZlID0gMwp9OwoK
CnR5cGVkZWYgVUludDMyIERhdGFCcm93c2VyU2VsZWN0aW9uQW5jaG9yRGlyZWN0aW9uOwplbnVt
IHsKICBrRGF0YUJyb3dzZXJTZWxlY3Rpb25BbmNob3JVcCA9IDAsCiAga0RhdGFCcm93c2VyU2Vs
ZWN0aW9uQW5jaG9yRG93biA9IDEsCiAga0RhdGFCcm93c2VyU2VsZWN0aW9uQW5jaG9yTGVmdCA9
IDIsCiAga0RhdGFCcm93c2VyU2VsZWN0aW9uQW5jaG9yUmlnaHQgPSAzCn07CgoKdHlwZWRlZiBV
SW50MzIgRGF0YUJyb3dzZXJFZGl0Q29tbWFuZDsKZW51bSB7CiAga0RhdGFCcm93c2VyRWRpdE1z
Z1VuZG8gPSBrSElDb21tYW5kVW5kbywKICBrRGF0YUJyb3dzZXJFZGl0TXNnUmVkbyA9IGtISUNv
bW1hbmRSZWRvLAogIGtEYXRhQnJvd3NlckVkaXRNc2dDdXQgPSBrSElDb21tYW5kQ3V0LAogIGtE
YXRhQnJvd3NlckVkaXRNc2dDb3B5ID0ga0hJQ29tbWFuZENvcHksCiAga0RhdGFCcm93c2VyRWRp
dE1zZ1Bhc3RlID0ga0hJQ29tbWFuZFBhc3RlLAogIGtEYXRhQnJvd3NlckVkaXRNc2dDbGVhciA9
IGtISUNvbW1hbmRDbGVhciwKICBrRGF0YUJyb3dzZXJFZGl0TXNnU2VsZWN0QWxsID0ga0hJQ29t
bWFuZFNlbGVjdEFsbAp9OwoKCnR5cGVkZWYgVUludDMyIERhdGFCcm93c2VySXRlbU5vdGlmaWNh
dGlvbjsKZW51bSB7CiAga0RhdGFCcm93c2VySXRlbUFkZGVkID0gMSwKICBrRGF0YUJyb3dzZXJJ
dGVtUmVtb3ZlZCA9IDIsCiAga0RhdGFCcm93c2VyRWRpdFN0YXJ0ZWQgPSAzLAogIGtEYXRhQnJv
d3NlckVkaXRTdG9wcGVkID0gNCwKICBrRGF0YUJyb3dzZXJJdGVtU2VsZWN0ZWQgPSA1LAogIGtE
YXRhQnJvd3Nlckl0ZW1EZXNlbGVjdGVkID0gNiwKICBrRGF0YUJyb3dzZXJJdGVtRG91YmxlQ2xp
Y2tlZCA9IDcsCiAga0RhdGFCcm93c2VyQ29udGFpbmVyT3BlbmVkID0gOCwKICBrRGF0YUJyb3dz
ZXJDb250YWluZXJDbG9zaW5nID0gOSwKICBrRGF0YUJyb3dzZXJDb250YWluZXJDbG9zZWQgPSAx
MCwKICBrRGF0YUJyb3dzZXJDb250YWluZXJTb3J0aW5nID0gMTEsCiAga0RhdGFCcm93c2VyQ29u
dGFpbmVyU29ydGVkID0gMTIsCiAga0RhdGFCcm93c2VyVXNlclRvZ2dsZWRDb250YWluZXIgPSAx
NiwKICBrRGF0YUJyb3dzZXJUYXJnZXRDaGFuZ2VkID0gMTUsCiAga0RhdGFCcm93c2VyVXNlclN0
YXRlQ2hhbmdlZCA9IDEzLAogIGtEYXRhQnJvd3NlclNlbGVjdGlvblNldENoYW5nZWQgPSAxNAp9
OwojIDIxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZW51
bSB7CgogIGtEYXRhQnJvd3Nlckl0ZW1Ob1Byb3BlcnR5ID0gMCwKICBrRGF0YUJyb3dzZXJJdGVt
SXNBY3RpdmVQcm9wZXJ0eSA9IDEsCiAga0RhdGFCcm93c2VySXRlbUlzU2VsZWN0YWJsZVByb3Bl
cnR5ID0gMiwKICBrRGF0YUJyb3dzZXJJdGVtSXNFZGl0YWJsZVByb3BlcnR5ID0gMywKICBrRGF0
YUJyb3dzZXJJdGVtSXNDb250YWluZXJQcm9wZXJ0eSA9IDQsCiAga0RhdGFCcm93c2VyQ29udGFp
bmVySXNPcGVuYWJsZVByb3BlcnR5ID0gNSwKICBrRGF0YUJyb3dzZXJDb250YWluZXJJc0Nsb3Nh
YmxlUHJvcGVydHkgPSA2LAogIGtEYXRhQnJvd3NlckNvbnRhaW5lcklzU29ydGFibGVQcm9wZXJ0
eSA9IDcsCiAga0RhdGFCcm93c2VySXRlbVNlbGZJZGVudGl0eVByb3BlcnR5ID0gOCwKIyAyNDUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCiAga0RhdGFCcm93
c2VyQ29udGFpbmVyQWxpYXNJRFByb3BlcnR5ID0gOSwKIyAyNjEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCiAga0RhdGFCcm93c2VyQ29sdW1uVmlld1ByZXZp
ZXdQcm9wZXJ0eSA9IDEwLAojIDI4OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFC
cm93c2VyLmgiIDMKICBrRGF0YUJyb3dzZXJJdGVtUGFyZW50Q29udGFpbmVyUHJvcGVydHkgPSAx
MQp9OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIERhdGFCcm93c2VyUHJvcGVydHlJRDsKCgoKdHlw
ZWRlZiBPU1R5cGUgRGF0YUJyb3dzZXJQcm9wZXJ0eVR5cGU7CmVudW0gewoKICBrRGF0YUJyb3dz
ZXJDdXN0b21UeXBlID0gMHgzRjNGM0YzRiwKICBrRGF0YUJyb3dzZXJJY29uVHlwZSA9ICdpY25y
JywKICBrRGF0YUJyb3dzZXJUZXh0VHlwZSA9ICd0ZXh0JywKICBrRGF0YUJyb3dzZXJEYXRlVGlt
ZVR5cGUgPSAnZGF0ZScsCiAga0RhdGFCcm93c2VyU2xpZGVyVHlwZSA9ICdzbGRyJywKICBrRGF0
YUJyb3dzZXJDaGVja2JveFR5cGUgPSAnY2hieCcsCiAga0RhdGFCcm93c2VyUHJvZ3Jlc3NCYXJU
eXBlID0gJ3Byb2cnLAogIGtEYXRhQnJvd3NlclJlbGV2YW5jZVJhbmtUeXBlID0gJ3JhbmsnLAog
IGtEYXRhQnJvd3NlclBvcHVwTWVudVR5cGUgPSAnbWVudScsCiAga0RhdGFCcm93c2VySWNvbkFu
ZFRleHRUeXBlID0gJ3RpY24nCn07CgoKCgp0eXBlZGVmIE9TVHlwZSBEYXRhQnJvd3NlclByb3Bl
cnR5UGFydDsKZW51bSB7CiAga0RhdGFCcm93c2VyUHJvcGVydHlFbmNsb3NpbmdQYXJ0ID0gMCwK
ICBrRGF0YUJyb3dzZXJQcm9wZXJ0eUNvbnRlbnRQYXJ0ID0gJy0tLS0nLAogIGtEYXRhQnJvd3Nl
clByb3BlcnR5RGlzY2xvc3VyZVBhcnQgPSAnZGlzYycsCiAga0RhdGFCcm93c2VyUHJvcGVydHlU
ZXh0UGFydCA9IGtEYXRhQnJvd3NlclRleHRUeXBlLAogIGtEYXRhQnJvd3NlclByb3BlcnR5SWNv
blBhcnQgPSBrRGF0YUJyb3dzZXJJY29uVHlwZSwKICBrRGF0YUJyb3dzZXJQcm9wZXJ0eVNsaWRl
clBhcnQgPSBrRGF0YUJyb3dzZXJTbGlkZXJUeXBlLAogIGtEYXRhQnJvd3NlclByb3BlcnR5Q2hl
Y2tib3hQYXJ0ID0ga0RhdGFCcm93c2VyQ2hlY2tib3hUeXBlLAogIGtEYXRhQnJvd3NlclByb3Bl
cnR5UHJvZ3Jlc3NCYXJQYXJ0ID0ga0RhdGFCcm93c2VyUHJvZ3Jlc3NCYXJUeXBlLAogIGtEYXRh
QnJvd3NlclByb3BlcnR5UmVsZXZhbmNlUmFua1BhcnQgPSBrRGF0YUJyb3dzZXJSZWxldmFuY2VS
YW5rVHlwZQp9OwoKCnR5cGVkZWYgVUludDMyIERhdGFCcm93c2VyUHJvcGVydHlGbGFnczsKCmVu
dW0gewogIGtEYXRhQnJvd3NlclVuaXZlcnNhbFByb3BlcnR5RmxhZ3NNYXNrID0gMHhGRiwKICBr
RGF0YUJyb3dzZXJQcm9wZXJ0eUlzTXV0YWJsZSA9IDEgPDwgMCwKICBrRGF0YUJyb3dzZXJEZWZh
dWx0UHJvcGVydHlGbGFncyA9IDAgPDwgMCwKICBrRGF0YUJyb3dzZXJVbml2ZXJzYWxQcm9wZXJ0
eUZsYWdzID0ga0RhdGFCcm93c2VyVW5pdmVyc2FsUHJvcGVydHlGbGFnc01hc2ssCiAga0RhdGFC
cm93c2VyUHJvcGVydHlJc0VkaXRhYmxlID0ga0RhdGFCcm93c2VyUHJvcGVydHlJc011dGFibGUK
fTsKCgoKCgoKCmVudW0gewogIGtEYXRhQnJvd3NlclByb3BlcnR5RmxhZ3NPZmZzZXQgPSA4LAog
IGtEYXRhQnJvd3NlclByb3BlcnR5RmxhZ3NNYXNrID0gMHhGRiA8PCBrRGF0YUJyb3dzZXJQcm9w
ZXJ0eUZsYWdzT2Zmc2V0LAogIGtEYXRhQnJvd3NlckNoZWNrYm94VHJpU3RhdGUgPSAxIDw8IGtE
YXRhQnJvd3NlclByb3BlcnR5RmxhZ3NPZmZzZXQsCiAga0RhdGFCcm93c2VyRGF0ZVRpbWVSZWxh
dGl2ZSA9IDEgPDwgKGtEYXRhQnJvd3NlclByb3BlcnR5RmxhZ3NPZmZzZXQpLAogIGtEYXRhQnJv
d3NlckRhdGVUaW1lRGF0ZU9ubHkgPSAxIDw8IChrRGF0YUJyb3dzZXJQcm9wZXJ0eUZsYWdzT2Zm
c2V0ICsgMSksCiAga0RhdGFCcm93c2VyRGF0ZVRpbWVUaW1lT25seSA9IDEgPDwgKGtEYXRhQnJv
d3NlclByb3BlcnR5RmxhZ3NPZmZzZXQgKyAyKSwKICBrRGF0YUJyb3dzZXJEYXRlVGltZVNlY29u
ZHNUb28gPSAxIDw8IChrRGF0YUJyb3dzZXJQcm9wZXJ0eUZsYWdzT2Zmc2V0ICsgMyksCiAga0Rh
dGFCcm93c2VyU2xpZGVyUGxhaW5UaHVtYiA9IGtUaGVtZVRodW1iUGxhaW4gPDwga0RhdGFCcm93
c2VyUHJvcGVydHlGbGFnc09mZnNldCwKICBrRGF0YUJyb3dzZXJTbGlkZXJVcHdhcmRUaHVtYiA9
IGtUaGVtZVRodW1iVXB3YXJkIDw8IGtEYXRhQnJvd3NlclByb3BlcnR5RmxhZ3NPZmZzZXQsCiAg
a0RhdGFCcm93c2VyU2xpZGVyRG93bndhcmRUaHVtYiA9IGtUaGVtZVRodW1iRG93bndhcmQgPDwg
a0RhdGFCcm93c2VyUHJvcGVydHlGbGFnc09mZnNldCwKICBrRGF0YUJyb3dzZXJEb05vdFRydW5j
YXRlVGV4dCA9IDMgPDwga0RhdGFCcm93c2VyUHJvcGVydHlGbGFnc09mZnNldCwKICBrRGF0YUJy
b3dzZXJUcnVuY2F0ZVRleHRBdEVuZCA9IDIgPDwga0RhdGFCcm93c2VyUHJvcGVydHlGbGFnc09m
ZnNldCwKICBrRGF0YUJyb3dzZXJUcnVuY2F0ZVRleHRNaWRkbGUgPSAwIDw8IGtEYXRhQnJvd3Nl
clByb3BlcnR5RmxhZ3NPZmZzZXQsCiAga0RhdGFCcm93c2VyVHJ1bmNhdGVUZXh0QXRTdGFydCA9
IDEgPDwga0RhdGFCcm93c2VyUHJvcGVydHlGbGFnc09mZnNldCwKIyAzNjYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCiAga0RhdGFCcm93c2VyUG9wdXBNZW51
QnV0dG9ubGVzcyA9IDEgPDwga0RhdGFCcm93c2VyUHJvcGVydHlGbGFnc09mZnNldCwKICBrRGF0
YUJyb3dzZXJQcm9wZXJ0eU1vZGlmaWNhdGlvbkZsYWdzID0ga0RhdGFCcm93c2VyUHJvcGVydHlG
bGFnc01hc2ssCiAga0RhdGFCcm93c2VyUmVsYXRpdmVEYXRlVGltZSA9IGtEYXRhQnJvd3NlckRh
dGVUaW1lUmVsYXRpdmUKfTsKCgoKCgplbnVtIHsKICBrRGF0YUJyb3dzZXJWaWV3U3BlY2lmaWNG
bGFnc09mZnNldCA9IDE2LAogIGtEYXRhQnJvd3NlclZpZXdTcGVjaWZpY0ZsYWdzTWFzayA9IDB4
RkYgPDwga0RhdGFCcm93c2VyVmlld1NwZWNpZmljRmxhZ3NPZmZzZXQsCiAga0RhdGFCcm93c2Vy
Vmlld1NwZWNpZmljUHJvcGVydHlGbGFncyA9IGtEYXRhQnJvd3NlclZpZXdTcGVjaWZpY0ZsYWdz
TWFzawp9OwoKCmVudW0gewogIGtEYXRhQnJvd3NlckNsaWVudFByb3BlcnR5RmxhZ3NPZmZzZXQg
PSAyNCwKICBrRGF0YUJyb3dzZXJDbGllbnRQcm9wZXJ0eUZsYWdzTWFzayA9IDB4RkYgPDwga0Rh
dGFCcm93c2VyQ2xpZW50UHJvcGVydHlGbGFnc09mZnNldAp9OwoKCnN0cnVjdCBEYXRhQnJvd3Nl
clByb3BlcnR5RGVzYyB7CiAgRGF0YUJyb3dzZXJQcm9wZXJ0eUlEIHByb3BlcnR5SUQ7CiAgRGF0
YUJyb3dzZXJQcm9wZXJ0eVR5cGUgcHJvcGVydHlUeXBlOwogIERhdGFCcm93c2VyUHJvcGVydHlG
bGFncyBwcm9wZXJ0eUZsYWdzOwp9Owp0eXBlZGVmIHN0cnVjdCBEYXRhQnJvd3NlclByb3BlcnR5
RGVzYyBEYXRhQnJvd3NlclByb3BlcnR5RGVzYzsKCnR5cGVkZWYgdm9pZCAoICogRGF0YUJyb3dz
ZXJJdGVtUHJvY1B0cikoRGF0YUJyb3dzZXJJdGVtSUQgaXRlbSwgRGF0YUJyb3dzZXJJdGVtU3Rh
dGUgc3RhdGUsIHZvaWQgKmNsaWVudERhdGEpOwp0eXBlZGVmIERhdGFCcm93c2VySXRlbVByb2NQ
dHIgRGF0YUJyb3dzZXJJdGVtVVBQOwojIDQwNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuIERhdGFCcm93c2VySXRlbVVQUApOZXdEYXRhQnJvd3Nl
ckl0ZW1VUFAoRGF0YUJyb3dzZXJJdGVtUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDQxNiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuIHZvaWQKRGlz
cG9zZURhdGFCcm93c2VySXRlbVVQUChEYXRhQnJvd3Nlckl0ZW1VUFAgdXNlclVQUCkgOwojIDQy
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuIHZv
aWQKSW52b2tlRGF0YUJyb3dzZXJJdGVtVVBQKAogIERhdGFCcm93c2VySXRlbUlEIGl0ZW0sCiAg
RGF0YUJyb3dzZXJJdGVtU3RhdGUgc3RhdGUsCiAgdm9pZCAqIGNsaWVudERhdGEsCiAgRGF0YUJy
b3dzZXJJdGVtVVBQIHVzZXJVUFApIDsKCgoKICAgIGlubGluZSBEYXRhQnJvd3Nlckl0ZW1VUFAg
TmV3RGF0YUJyb3dzZXJJdGVtVVBQKERhdGFCcm93c2VySXRlbVByb2NQdHIgdXNlclJvdXRpbmUp
IHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlRGF0YUJyb3dz
ZXJJdGVtVVBQKERhdGFCcm93c2VySXRlbVVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VE
YXRhQnJvd3Nlckl0ZW1VUFAoRGF0YUJyb3dzZXJJdGVtSUQgaXRlbSwgRGF0YUJyb3dzZXJJdGVt
U3RhdGUgc3RhdGUsIHZvaWQgKiBjbGllbnREYXRhLCBEYXRhQnJvd3Nlckl0ZW1VUFAgdXNlclVQ
UCkgeyAoKnVzZXJVUFApKGl0ZW0sIHN0YXRlLCBjbGllbnREYXRhKTsgfQojIDUxMiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZW51bSB7CgoKCgogIGtEYXRh
QnJvd3NlckF0dHJpYnV0ZU5vbmUgPSAwLAojIDUzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9ISURhdGFCcm93c2VyLmgiIDMKICBrRGF0YUJyb3dzZXJBdHRyaWJ1dGVDb2x1bW5WaWV3UmVz
aXplV2luZG93ID0gKDEgPDwgMCksCgoKCgoKICBrRGF0YUJyb3dzZXJBdHRyaWJ1dGVMaXN0Vmll
d0FsdGVybmF0aW5nUm93Q29sb3JzID0gKDEgPDwgMSksCgoKCgoKICBrRGF0YUJyb3dzZXJBdHRy
aWJ1dGVMaXN0Vmlld0RyYXdDb2x1bW5EaXZpZGVycyA9ICgxIDw8IDIpLAojIDU2OCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKICBrRGF0YUJyb3dzZXJBdHRy
aWJ1dGVBdXRvSGlkZVNjcm9sbEJhcnMgPSAoMSA8PCAzKSwKIyA1NzcgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCiAga0RhdGFCcm93c2VyQXR0cmlidXRlUmVz
ZXJ2ZUdyb3dCb3hTcGFjZSA9ICgxIDw8IDQpCn07CiMgNjU5ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwplbnVtIHsKCgoKCgoKICBrRGF0YUJyb3dzZXJNZXRy
aWNDZWxsQ29udGVudEluc2V0ID0gMSwKCgoKCgogIGtEYXRhQnJvd3Nlck1ldHJpY0ljb25BbmRU
ZXh0R2FwID0gMiwKIyA2ODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nl
ci5oIiAzCiAga0RhdGFCcm93c2VyTWV0cmljRGlzY2xvc3VyZUNvbHVtbkVkZ2VJbnNldCA9IDMs
CgoKCgoKICBrRGF0YUJyb3dzZXJNZXRyaWNEaXNjbG9zdXJlVHJpYW5nbGVBbmRDb250ZW50R2Fw
ID0gNCwKCgoKCgoKICBrRGF0YUJyb3dzZXJNZXRyaWNEaXNjbG9zdXJlQ29sdW1uUGVyRGVwdGhH
YXAgPSA1LAogIGtEYXRhQnJvd3Nlck1ldHJpY0xhc3QgPSBrRGF0YUJyb3dzZXJNZXRyaWNEaXNj
bG9zdXJlQ29sdW1uUGVyRGVwdGhHYXAKfTsKCgp0eXBlZGVmIFVJbnQzMiBEYXRhQnJvd3Nlck1l
dHJpYzsKIyAxNTk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIg
Mwp0eXBlZGVmIHZvaWQgKiBEYXRhQnJvd3Nlckl0ZW1EYXRhUmVmOwojIDIwOTkgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCnR5cGVkZWYgT1NTdGF0dXMgKCAq
IERhdGFCcm93c2VySXRlbURhdGFQcm9jUHRyKShDb250cm9sUmVmIGJyb3dzZXIsIERhdGFCcm93
c2VySXRlbUlEIGl0ZW0sIERhdGFCcm93c2VyUHJvcGVydHlJRCBwcm9wZXJ0eSwgRGF0YUJyb3dz
ZXJJdGVtRGF0YVJlZiBpdGVtRGF0YSwgQm9vbGVhbiBzZXRWYWx1ZSk7CnR5cGVkZWYgRGF0YUJy
b3dzZXJJdGVtRGF0YVByb2NQdHIgRGF0YUJyb3dzZXJJdGVtRGF0YVVQUDsKCgp0eXBlZGVmIEJv
b2xlYW4gKCAqIERhdGFCcm93c2VySXRlbUNvbXBhcmVQcm9jUHRyKShDb250cm9sUmVmIGJyb3dz
ZXIsIERhdGFCcm93c2VySXRlbUlEIGl0ZW1PbmUsIERhdGFCcm93c2VySXRlbUlEIGl0ZW1Ud28s
IERhdGFCcm93c2VyUHJvcGVydHlJRCBzb3J0UHJvcGVydHkpOwp0eXBlZGVmIERhdGFCcm93c2Vy
SXRlbUNvbXBhcmVQcm9jUHRyIERhdGFCcm93c2VySXRlbUNvbXBhcmVVUFA7CiMgMjEyMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKdHlwZWRlZiB2b2lkICgg
KiBEYXRhQnJvd3Nlckl0ZW1Ob3RpZmljYXRpb25XaXRoSXRlbVByb2NQdHIpKENvbnRyb2xSZWYg
YnJvd3NlciwgRGF0YUJyb3dzZXJJdGVtSUQgaXRlbSwgRGF0YUJyb3dzZXJJdGVtTm90aWZpY2F0
aW9uIG1lc3NhZ2UsIERhdGFCcm93c2VySXRlbURhdGFSZWYgaXRlbURhdGEpOwp0eXBlZGVmIHZv
aWQgKCAqIERhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvblByb2NQdHIpKENvbnRyb2xSZWYgYnJv
d3NlciwgRGF0YUJyb3dzZXJJdGVtSUQgaXRlbSwgRGF0YUJyb3dzZXJJdGVtTm90aWZpY2F0aW9u
IG1lc3NhZ2UpOwp0eXBlZGVmIERhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvbldpdGhJdGVtUHJv
Y1B0ciBEYXRhQnJvd3Nlckl0ZW1Ob3RpZmljYXRpb25XaXRoSXRlbVVQUDsKdHlwZWRlZiBEYXRh
QnJvd3Nlckl0ZW1Ob3RpZmljYXRpb25Qcm9jUHRyIERhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlv
blVQUDsKCgoKdHlwZWRlZiBCb29sZWFuICggKiBEYXRhQnJvd3NlckFkZERyYWdJdGVtUHJvY1B0
cikoQ29udHJvbFJlZiBicm93c2VyLCBEcmFnUmVmZXJlbmNlIHRoZURyYWcsIERhdGFCcm93c2Vy
SXRlbUlEIGl0ZW0sIEl0ZW1SZWZlcmVuY2UgKml0ZW1SZWYpOwp0eXBlZGVmIEJvb2xlYW4gKCAq
IERhdGFCcm93c2VyQWNjZXB0RHJhZ1Byb2NQdHIpKENvbnRyb2xSZWYgYnJvd3NlciwgRHJhZ1Jl
ZmVyZW5jZSB0aGVEcmFnLCBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtKTsKdHlwZWRlZiBCb29sZWFu
ICggKiBEYXRhQnJvd3NlclJlY2VpdmVEcmFnUHJvY1B0cikoQ29udHJvbFJlZiBicm93c2VyLCBE
cmFnUmVmZXJlbmNlIHRoZURyYWcsIERhdGFCcm93c2VySXRlbUlEIGl0ZW0pOwp0eXBlZGVmIHZv
aWQgKCAqIERhdGFCcm93c2VyUG9zdFByb2Nlc3NEcmFnUHJvY1B0cikoQ29udHJvbFJlZiBicm93
c2VyLCBEcmFnUmVmZXJlbmNlIHRoZURyYWcsIE9TU3RhdHVzIHRyYWNrRHJhZ1Jlc3VsdCk7CnR5
cGVkZWYgRGF0YUJyb3dzZXJBZGREcmFnSXRlbVByb2NQdHIgRGF0YUJyb3dzZXJBZGREcmFnSXRl
bVVQUDsKdHlwZWRlZiBEYXRhQnJvd3NlckFjY2VwdERyYWdQcm9jUHRyIERhdGFCcm93c2VyQWNj
ZXB0RHJhZ1VQUDsKdHlwZWRlZiBEYXRhQnJvd3NlclJlY2VpdmVEcmFnUHJvY1B0ciBEYXRhQnJv
d3NlclJlY2VpdmVEcmFnVVBQOwp0eXBlZGVmIERhdGFCcm93c2VyUG9zdFByb2Nlc3NEcmFnUHJv
Y1B0ciBEYXRhQnJvd3NlclBvc3RQcm9jZXNzRHJhZ1VQUDsKCgp0eXBlZGVmIHZvaWQgKCAqIERh
dGFCcm93c2VyR2V0Q29udGV4dHVhbE1lbnVQcm9jUHRyKShDb250cm9sUmVmIGJyb3dzZXIsIE1l
bnVSZWYgKm1lbnUsIFVJbnQzMiAqaGVscFR5cGUsIENGU3RyaW5nUmVmICpoZWxwSXRlbVN0cmlu
ZywgQUVEZXNjICpzZWxlY3Rpb24pOwp0eXBlZGVmIHZvaWQgKCAqIERhdGFCcm93c2VyU2VsZWN0
Q29udGV4dHVhbE1lbnVQcm9jUHRyKShDb250cm9sUmVmIGJyb3dzZXIsIE1lbnVSZWYgbWVudSwg
VUludDMyIHNlbGVjdGlvblR5cGUsIFNJbnQxNiBtZW51SUQsIE1lbnVJdGVtSW5kZXggbWVudUl0
ZW0pOwp0eXBlZGVmIERhdGFCcm93c2VyR2V0Q29udGV4dHVhbE1lbnVQcm9jUHRyIERhdGFCcm93
c2VyR2V0Q29udGV4dHVhbE1lbnVVUFA7CnR5cGVkZWYgRGF0YUJyb3dzZXJTZWxlY3RDb250ZXh0
dWFsTWVudVByb2NQdHIgRGF0YUJyb3dzZXJTZWxlY3RDb250ZXh0dWFsTWVudVVQUDsKCgp0eXBl
ZGVmIHZvaWQgKCAqIERhdGFCcm93c2VySXRlbUhlbHBDb250ZW50UHJvY1B0cikoQ29udHJvbFJl
ZiBicm93c2VyLCBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtLCBEYXRhQnJvd3NlclByb3BlcnR5SUQg
cHJvcGVydHksIEhNQ29udGVudFJlcXVlc3QgaW5SZXF1ZXN0LCBITUNvbnRlbnRQcm92aWRlZFR5
cGUgKm91dENvbnRlbnRQcm92aWRlZCwgSE1IZWxwQ29udGVudFJlYyAqaW9IZWxwQ29udGVudCk7
CnR5cGVkZWYgRGF0YUJyb3dzZXJJdGVtSGVscENvbnRlbnRQcm9jUHRyIERhdGFCcm93c2VySXRl
bUhlbHBDb250ZW50VVBQOwojIDIxNTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRh
QnJvd3Nlci5oIiAzCmV4dGVybiBEYXRhQnJvd3Nlckl0ZW1EYXRhVVBQCk5ld0RhdGFCcm93c2Vy
SXRlbURhdGFVUFAoRGF0YUJyb3dzZXJJdGVtRGF0YVByb2NQdHIgdXNlclJvdXRpbmUpIDsKIyAy
MTY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwpleHRlcm4g
RGF0YUJyb3dzZXJJdGVtQ29tcGFyZVVQUApOZXdEYXRhQnJvd3Nlckl0ZW1Db21wYXJlVVBQKERh
dGFCcm93c2VySXRlbUNvbXBhcmVQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMjE3NiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuIERhdGFCcm93c2Vy
SXRlbU5vdGlmaWNhdGlvbldpdGhJdGVtVVBQCk5ld0RhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlv
bldpdGhJdGVtVVBQKERhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvbldpdGhJdGVtUHJvY1B0ciB1
c2VyUm91dGluZSkgOwojIDIxODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJv
d3Nlci5oIiAzCmV4dGVybiBEYXRhQnJvd3Nlckl0ZW1Ob3RpZmljYXRpb25VUFAKTmV3RGF0YUJy
b3dzZXJJdGVtTm90aWZpY2F0aW9uVVBQKERhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvblByb2NQ
dHIgdXNlclJvdXRpbmUpIDsKIyAyMTk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0
YUJyb3dzZXIuaCIgMwpleHRlcm4gRGF0YUJyb3dzZXJBZGREcmFnSXRlbVVQUApOZXdEYXRhQnJv
d3NlckFkZERyYWdJdGVtVVBQKERhdGFCcm93c2VyQWRkRHJhZ0l0ZW1Qcm9jUHRyIHVzZXJSb3V0
aW5lKSA7CiMgMjIwOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgi
IDMKZXh0ZXJuIERhdGFCcm93c2VyQWNjZXB0RHJhZ1VQUApOZXdEYXRhQnJvd3NlckFjY2VwdERy
YWdVUFAoRGF0YUJyb3dzZXJBY2NlcHREcmFnUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDIyMjAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVybiBEYXRh
QnJvd3NlclJlY2VpdmVEcmFnVVBQCk5ld0RhdGFCcm93c2VyUmVjZWl2ZURyYWdVUFAoRGF0YUJy
b3dzZXJSZWNlaXZlRHJhZ1Byb2NQdHIgdXNlclJvdXRpbmUpIDsKIyAyMjMxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwpleHRlcm4gRGF0YUJyb3dzZXJQb3N0
UHJvY2Vzc0RyYWdVUFAKTmV3RGF0YUJyb3dzZXJQb3N0UHJvY2Vzc0RyYWdVUFAoRGF0YUJyb3dz
ZXJQb3N0UHJvY2Vzc0RyYWdQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMjI0MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuIERhdGFCcm93c2VyR2V0
Q29udGV4dHVhbE1lbnVVUFAKTmV3RGF0YUJyb3dzZXJHZXRDb250ZXh0dWFsTWVudVVQUChEYXRh
QnJvd3NlckdldENvbnRleHR1YWxNZW51UHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDIyNTMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVybiBEYXRhQnJv
d3NlclNlbGVjdENvbnRleHR1YWxNZW51VVBQCk5ld0RhdGFCcm93c2VyU2VsZWN0Q29udGV4dHVh
bE1lbnVVUFAoRGF0YUJyb3dzZXJTZWxlY3RDb250ZXh0dWFsTWVudVByb2NQdHIgdXNlclJvdXRp
bmUpIDsKIyAyMjY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIg
MwpleHRlcm4gRGF0YUJyb3dzZXJJdGVtSGVscENvbnRlbnRVUFAKTmV3RGF0YUJyb3dzZXJJdGVt
SGVscENvbnRlbnRVUFAoRGF0YUJyb3dzZXJJdGVtSGVscENvbnRlbnRQcm9jUHRyIHVzZXJSb3V0
aW5lKSA7CiMgMjI3NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgi
IDMKZXh0ZXJuIHZvaWQKRGlzcG9zZURhdGFCcm93c2VySXRlbURhdGFVUFAoRGF0YUJyb3dzZXJJ
dGVtRGF0YVVQUCB1c2VyVVBQKSA7CiMgMjI4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZURhdGFCcm93c2VySXRlbUNvbXBh
cmVVUFAoRGF0YUJyb3dzZXJJdGVtQ29tcGFyZVVQUCB1c2VyVVBQKSA7CiMgMjI5NyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9z
ZURhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvbldpdGhJdGVtVVBQKERhdGFCcm93c2VySXRlbU5v
dGlmaWNhdGlvbldpdGhJdGVtVVBQIHVzZXJVUFApIDsKIyAyMzA4ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlRGF0YUJyb3dz
ZXJJdGVtTm90aWZpY2F0aW9uVVBQKERhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvblVQUCB1c2Vy
VVBQKSA7CiMgMjMxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgi
IDMKZXh0ZXJuIHZvaWQKRGlzcG9zZURhdGFCcm93c2VyQWRkRHJhZ0l0ZW1VUFAoRGF0YUJyb3dz
ZXJBZGREcmFnSXRlbVVQUCB1c2VyVVBQKSA7CiMgMjMzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZURhdGFCcm93c2VyQWNj
ZXB0RHJhZ1VQUChEYXRhQnJvd3NlckFjY2VwdERyYWdVUFAgdXNlclVQUCkgOwojIDIzNDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVybiB2b2lkCkRp
c3Bvc2VEYXRhQnJvd3NlclJlY2VpdmVEcmFnVVBQKERhdGFCcm93c2VyUmVjZWl2ZURyYWdVUFAg
dXNlclVQUCkgOwojIDIzNTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nl
ci5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VEYXRhQnJvd3NlclBvc3RQcm9jZXNzRHJhZ1VQUChE
YXRhQnJvd3NlclBvc3RQcm9jZXNzRHJhZ1VQUCB1c2VyVVBQKSA7CiMgMjM2MyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZURh
dGFCcm93c2VyR2V0Q29udGV4dHVhbE1lbnVVUFAoRGF0YUJyb3dzZXJHZXRDb250ZXh0dWFsTWVu
dVVQUCB1c2VyVVBQKSA7CiMgMjM3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFC
cm93c2VyLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZURhdGFCcm93c2VyU2VsZWN0Q29udGV4dHVh
bE1lbnVVUFAoRGF0YUJyb3dzZXJTZWxlY3RDb250ZXh0dWFsTWVudVVQUCB1c2VyVVBQKSA7CiMg
MjM4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0ZXJu
IHZvaWQKRGlzcG9zZURhdGFCcm93c2VySXRlbUhlbHBDb250ZW50VVBQKERhdGFCcm93c2VySXRl
bUhlbHBDb250ZW50VVBQIHVzZXJVUFApIDsKIyAyMzk2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwpleHRlcm4gT1NTdGF0dXMKSW52b2tlRGF0YUJyb3dzZXJJ
dGVtRGF0YVVQUCgKICBDb250cm9sUmVmIGJyb3dzZXIsCiAgRGF0YUJyb3dzZXJJdGVtSUQgaXRl
bSwKICBEYXRhQnJvd3NlclByb3BlcnR5SUQgcHJvcGVydHksCiAgRGF0YUJyb3dzZXJJdGVtRGF0
YVJlZiBpdGVtRGF0YSwKICBCb29sZWFuIHNldFZhbHVlLAogIERhdGFCcm93c2VySXRlbURhdGFV
UFAgdXNlclVQUCkgOwojIDI0MTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJv
d3Nlci5oIiAzCmV4dGVybiBCb29sZWFuCkludm9rZURhdGFCcm93c2VySXRlbUNvbXBhcmVVUFAo
CiAgQ29udHJvbFJlZiBicm93c2VyLAogIERhdGFCcm93c2VySXRlbUlEIGl0ZW1PbmUsCiAgRGF0
YUJyb3dzZXJJdGVtSUQgaXRlbVR3bywKICBEYXRhQnJvd3NlclByb3BlcnR5SUQgc29ydFByb3Bl
cnR5LAogIERhdGFCcm93c2VySXRlbUNvbXBhcmVVUFAgdXNlclVQUCkgOwojIDI0MjkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVybiB2b2lkCkludm9r
ZURhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvbldpdGhJdGVtVVBQKAogIENvbnRyb2xSZWYgYnJv
d3NlciwKICBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtLAogIERhdGFCcm93c2VySXRlbU5vdGlmaWNh
dGlvbiBtZXNzYWdlLAogIERhdGFCcm93c2VySXRlbURhdGFSZWYgaXRlbURhdGEsCiAgRGF0YUJy
b3dzZXJJdGVtTm90aWZpY2F0aW9uV2l0aEl0ZW1VUFAgdXNlclVQUCkgOwojIDI0NDUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVybiB2b2lkCkludm9r
ZURhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvblVQUCgKICBDb250cm9sUmVmIGJyb3dzZXIsCiAg
RGF0YUJyb3dzZXJJdGVtSUQgaXRlbSwKICBEYXRhQnJvd3Nlckl0ZW1Ob3RpZmljYXRpb24gbWVz
c2FnZSwKICBEYXRhQnJvd3Nlckl0ZW1Ob3RpZmljYXRpb25VUFAgdXNlclVQUCkgOwojIDI0NjAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVybiBCb29s
ZWFuCkludm9rZURhdGFCcm93c2VyQWRkRHJhZ0l0ZW1VUFAoCiAgQ29udHJvbFJlZiBicm93c2Vy
LAogIERyYWdSZWZlcmVuY2UgdGhlRHJhZywKICBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtLAogIEl0
ZW1SZWZlcmVuY2UgKiBpdGVtUmVmLAogIERhdGFCcm93c2VyQWRkRHJhZ0l0ZW1VUFAgdXNlclVQ
UCkgOwojIDI0NzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAz
CmV4dGVybiBCb29sZWFuCkludm9rZURhdGFCcm93c2VyQWNjZXB0RHJhZ1VQUCgKICBDb250cm9s
UmVmIGJyb3dzZXIsCiAgRHJhZ1JlZmVyZW5jZSB0aGVEcmFnLAogIERhdGFCcm93c2VySXRlbUlE
IGl0ZW0sCiAgRGF0YUJyb3dzZXJBY2NlcHREcmFnVVBQIHVzZXJVUFApIDsKIyAyNDkxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwpleHRlcm4gQm9vbGVhbgpJ
bnZva2VEYXRhQnJvd3NlclJlY2VpdmVEcmFnVVBQKAogIENvbnRyb2xSZWYgYnJvd3NlciwKICBE
cmFnUmVmZXJlbmNlIHRoZURyYWcsCiAgRGF0YUJyb3dzZXJJdGVtSUQgaXRlbSwKICBEYXRhQnJv
d3NlclJlY2VpdmVEcmFnVVBQIHVzZXJVUFApIDsKIyAyNTA2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9I
ZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwpleHRlcm4gdm9pZApJbnZva2VEYXRhQnJvd3NlclBv
c3RQcm9jZXNzRHJhZ1VQUCgKICBDb250cm9sUmVmIGJyb3dzZXIsCiAgRHJhZ1JlZmVyZW5jZSB0
aGVEcmFnLAogIE9TU3RhdHVzIHRyYWNrRHJhZ1Jlc3VsdCwKICBEYXRhQnJvd3NlclBvc3RQcm9j
ZXNzRHJhZ1VQUCB1c2VyVVBQKSA7CiMgMjUyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlRGF0YUJyb3dzZXJHZXRDb250ZXh0
dWFsTWVudVVQUCgKICBDb250cm9sUmVmIGJyb3dzZXIsCiAgTWVudVJlZiAqIG1lbnUsCiAgVUlu
dDMyICogaGVscFR5cGUsCiAgQ0ZTdHJpbmdSZWYgKiBoZWxwSXRlbVN0cmluZywKICBBRURlc2Mg
KiBzZWxlY3Rpb24sCiAgRGF0YUJyb3dzZXJHZXRDb250ZXh0dWFsTWVudVVQUCB1c2VyVVBQKSA7
CiMgMjUzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0
ZXJuIHZvaWQKSW52b2tlRGF0YUJyb3dzZXJTZWxlY3RDb250ZXh0dWFsTWVudVVQUCgKICBDb250
cm9sUmVmIGJyb3dzZXIsCiAgTWVudVJlZiBtZW51LAogIFVJbnQzMiBzZWxlY3Rpb25UeXBlLAog
IFNJbnQxNiBtZW51SUQsCiAgTWVudUl0ZW1JbmRleCBtZW51SXRlbSwKICBEYXRhQnJvd3NlclNl
bGVjdENvbnRleHR1YWxNZW51VVBQIHVzZXJVUFApIDsKIyAyNTU1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwpleHRlcm4gdm9pZApJbnZva2VEYXRhQnJvd3Nl
ckl0ZW1IZWxwQ29udGVudFVQUCgKICBDb250cm9sUmVmIGJyb3dzZXIsCiAgRGF0YUJyb3dzZXJJ
dGVtSUQgaXRlbSwKICBEYXRhQnJvd3NlclByb3BlcnR5SUQgcHJvcGVydHksCiAgSE1Db250ZW50
UmVxdWVzdCBpblJlcXVlc3QsCiAgSE1Db250ZW50UHJvdmlkZWRUeXBlICogb3V0Q29udGVudFBy
b3ZpZGVkLAogIEhNSGVscENvbnRlbnRSZWMgKiBpb0hlbHBDb250ZW50LAogIERhdGFCcm93c2Vy
SXRlbUhlbHBDb250ZW50VVBQIHVzZXJVUFApIDsKCgoKICAgIGlubGluZSBEYXRhQnJvd3Nlckl0
ZW1EYXRhVVBQIE5ld0RhdGFCcm93c2VySXRlbURhdGFVUFAoRGF0YUJyb3dzZXJJdGVtRGF0YVBy
b2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRGF0
YUJyb3dzZXJJdGVtQ29tcGFyZVVQUCBOZXdEYXRhQnJvd3Nlckl0ZW1Db21wYXJlVVBQKERhdGFC
cm93c2VySXRlbUNvbXBhcmVQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGlu
ZTsgfQogICAgaW5saW5lIERhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvbldpdGhJdGVtVVBQIE5l
d0RhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvbldpdGhJdGVtVVBQKERhdGFCcm93c2VySXRlbU5v
dGlmaWNhdGlvbldpdGhJdGVtUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRp
bmU7IH0KICAgIGlubGluZSBEYXRhQnJvd3Nlckl0ZW1Ob3RpZmljYXRpb25VUFAgTmV3RGF0YUJy
b3dzZXJJdGVtTm90aWZpY2F0aW9uVVBQKERhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvblByb2NQ
dHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRGF0YUJy
b3dzZXJBZGREcmFnSXRlbVVQUCBOZXdEYXRhQnJvd3NlckFkZERyYWdJdGVtVVBQKERhdGFCcm93
c2VyQWRkRHJhZ0l0ZW1Qcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsg
fQogICAgaW5saW5lIERhdGFCcm93c2VyQWNjZXB0RHJhZ1VQUCBOZXdEYXRhQnJvd3NlckFjY2Vw
dERyYWdVUFAoRGF0YUJyb3dzZXJBY2NlcHREcmFnUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1
cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBEYXRhQnJvd3NlclJlY2VpdmVEcmFnVVBQIE5l
d0RhdGFCcm93c2VyUmVjZWl2ZURyYWdVUFAoRGF0YUJyb3dzZXJSZWNlaXZlRHJhZ1Byb2NQdHIg
dXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRGF0YUJyb3dz
ZXJQb3N0UHJvY2Vzc0RyYWdVUFAgTmV3RGF0YUJyb3dzZXJQb3N0UHJvY2Vzc0RyYWdVUFAoRGF0
YUJyb3dzZXJQb3N0UHJvY2Vzc0RyYWdQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2Vy
Um91dGluZTsgfQogICAgaW5saW5lIERhdGFCcm93c2VyR2V0Q29udGV4dHVhbE1lbnVVUFAgTmV3
RGF0YUJyb3dzZXJHZXRDb250ZXh0dWFsTWVudVVQUChEYXRhQnJvd3NlckdldENvbnRleHR1YWxN
ZW51UHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGlu
ZSBEYXRhQnJvd3NlclNlbGVjdENvbnRleHR1YWxNZW51VVBQIE5ld0RhdGFCcm93c2VyU2VsZWN0
Q29udGV4dHVhbE1lbnVVUFAoRGF0YUJyb3dzZXJTZWxlY3RDb250ZXh0dWFsTWVudVByb2NQdHIg
dXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRGF0YUJyb3dz
ZXJJdGVtSGVscENvbnRlbnRVUFAgTmV3RGF0YUJyb3dzZXJJdGVtSGVscENvbnRlbnRVUFAoRGF0
YUJyb3dzZXJJdGVtSGVscENvbnRlbnRQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2Vy
Um91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZURhdGFCcm93c2VySXRlbURhdGFVUFAo
RGF0YUJyb3dzZXJJdGVtRGF0YVVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlRGF0YUJy
b3dzZXJJdGVtQ29tcGFyZVVQUChEYXRhQnJvd3Nlckl0ZW1Db21wYXJlVVBQKSB7IH0KICAgIGlu
bGluZSB2b2lkIERpc3Bvc2VEYXRhQnJvd3Nlckl0ZW1Ob3RpZmljYXRpb25XaXRoSXRlbVVQUChE
YXRhQnJvd3Nlckl0ZW1Ob3RpZmljYXRpb25XaXRoSXRlbVVQUCkgeyB9CiAgICBpbmxpbmUgdm9p
ZCBEaXNwb3NlRGF0YUJyb3dzZXJJdGVtTm90aWZpY2F0aW9uVVBQKERhdGFCcm93c2VySXRlbU5v
dGlmaWNhdGlvblVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlRGF0YUJyb3dzZXJBZGRE
cmFnSXRlbVVQUChEYXRhQnJvd3NlckFkZERyYWdJdGVtVVBQKSB7IH0KICAgIGlubGluZSB2b2lk
IERpc3Bvc2VEYXRhQnJvd3NlckFjY2VwdERyYWdVUFAoRGF0YUJyb3dzZXJBY2NlcHREcmFnVVBQ
KSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VEYXRhQnJvd3NlclJlY2VpdmVEcmFnVVBQKERh
dGFCcm93c2VyUmVjZWl2ZURyYWdVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZURhdGFC
cm93c2VyUG9zdFByb2Nlc3NEcmFnVVBQKERhdGFCcm93c2VyUG9zdFByb2Nlc3NEcmFnVVBQKSB7
IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VEYXRhQnJvd3NlckdldENvbnRleHR1YWxNZW51VVBQ
KERhdGFCcm93c2VyR2V0Q29udGV4dHVhbE1lbnVVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlz
cG9zZURhdGFCcm93c2VyU2VsZWN0Q29udGV4dHVhbE1lbnVVUFAoRGF0YUJyb3dzZXJTZWxlY3RD
b250ZXh0dWFsTWVudVVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlRGF0YUJyb3dzZXJJ
dGVtSGVscENvbnRlbnRVUFAoRGF0YUJyb3dzZXJJdGVtSGVscENvbnRlbnRVUFApIHsgfQogICAg
aW5saW5lIE9TU3RhdHVzIEludm9rZURhdGFCcm93c2VySXRlbURhdGFVUFAoQ29udHJvbFJlZiBi
cm93c2VyLCBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtLCBEYXRhQnJvd3NlclByb3BlcnR5SUQgcHJv
cGVydHksIERhdGFCcm93c2VySXRlbURhdGFSZWYgaXRlbURhdGEsIEJvb2xlYW4gc2V0VmFsdWUs
IERhdGFCcm93c2VySXRlbURhdGFVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShicm93
c2VyLCBpdGVtLCBwcm9wZXJ0eSwgaXRlbURhdGEsIHNldFZhbHVlKTsgfQogICAgaW5saW5lIEJv
b2xlYW4gSW52b2tlRGF0YUJyb3dzZXJJdGVtQ29tcGFyZVVQUChDb250cm9sUmVmIGJyb3dzZXIs
IERhdGFCcm93c2VySXRlbUlEIGl0ZW1PbmUsIERhdGFCcm93c2VySXRlbUlEIGl0ZW1Ud28sIERh
dGFCcm93c2VyUHJvcGVydHlJRCBzb3J0UHJvcGVydHksIERhdGFCcm93c2VySXRlbUNvbXBhcmVV
UFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShicm93c2VyLCBpdGVtT25lLCBpdGVtVHdv
LCBzb3J0UHJvcGVydHkpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VEYXRhQnJvd3Nlckl0ZW1O
b3RpZmljYXRpb25XaXRoSXRlbVVQUChDb250cm9sUmVmIGJyb3dzZXIsIERhdGFCcm93c2VySXRl
bUlEIGl0ZW0sIERhdGFCcm93c2VySXRlbU5vdGlmaWNhdGlvbiBtZXNzYWdlLCBEYXRhQnJvd3Nl
ckl0ZW1EYXRhUmVmIGl0ZW1EYXRhLCBEYXRhQnJvd3Nlckl0ZW1Ob3RpZmljYXRpb25XaXRoSXRl
bVVQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCkoYnJvd3NlciwgaXRlbSwgbWVzc2FnZSwgaXRlbURh
dGEpOyB9CiAgICBpbmxpbmUgdm9pZCBJbnZva2VEYXRhQnJvd3Nlckl0ZW1Ob3RpZmljYXRpb25V
UFAoQ29udHJvbFJlZiBicm93c2VyLCBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtLCBEYXRhQnJvd3Nl
ckl0ZW1Ob3RpZmljYXRpb24gbWVzc2FnZSwgRGF0YUJyb3dzZXJJdGVtTm90aWZpY2F0aW9uVVBQ
IHVzZXJVUFApIHsgKCp1c2VyVVBQKShicm93c2VyLCBpdGVtLCBtZXNzYWdlKTsgfQogICAgaW5s
aW5lIEJvb2xlYW4gSW52b2tlRGF0YUJyb3dzZXJBZGREcmFnSXRlbVVQUChDb250cm9sUmVmIGJy
b3dzZXIsIERyYWdSZWZlcmVuY2UgdGhlRHJhZywgRGF0YUJyb3dzZXJJdGVtSUQgaXRlbSwgSXRl
bVJlZmVyZW5jZSAqIGl0ZW1SZWYsIERhdGFCcm93c2VyQWRkRHJhZ0l0ZW1VUFAgdXNlclVQUCkg
eyByZXR1cm4gKCp1c2VyVVBQKShicm93c2VyLCB0aGVEcmFnLCBpdGVtLCBpdGVtUmVmKTsgfQog
ICAgaW5saW5lIEJvb2xlYW4gSW52b2tlRGF0YUJyb3dzZXJBY2NlcHREcmFnVVBQKENvbnRyb2xS
ZWYgYnJvd3NlciwgRHJhZ1JlZmVyZW5jZSB0aGVEcmFnLCBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVt
LCBEYXRhQnJvd3NlckFjY2VwdERyYWdVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShi
cm93c2VyLCB0aGVEcmFnLCBpdGVtKTsgfQogICAgaW5saW5lIEJvb2xlYW4gSW52b2tlRGF0YUJy
b3dzZXJSZWNlaXZlRHJhZ1VQUChDb250cm9sUmVmIGJyb3dzZXIsIERyYWdSZWZlcmVuY2UgdGhl
RHJhZywgRGF0YUJyb3dzZXJJdGVtSUQgaXRlbSwgRGF0YUJyb3dzZXJSZWNlaXZlRHJhZ1VQUCB1
c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGJyb3dzZXIsIHRoZURyYWcsIGl0ZW0pOyB9CiAg
ICBpbmxpbmUgdm9pZCBJbnZva2VEYXRhQnJvd3NlclBvc3RQcm9jZXNzRHJhZ1VQUChDb250cm9s
UmVmIGJyb3dzZXIsIERyYWdSZWZlcmVuY2UgdGhlRHJhZywgT1NTdGF0dXMgdHJhY2tEcmFnUmVz
dWx0LCBEYXRhQnJvd3NlclBvc3RQcm9jZXNzRHJhZ1VQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCko
YnJvd3NlciwgdGhlRHJhZywgdHJhY2tEcmFnUmVzdWx0KTsgfQogICAgaW5saW5lIHZvaWQgSW52
b2tlRGF0YUJyb3dzZXJHZXRDb250ZXh0dWFsTWVudVVQUChDb250cm9sUmVmIGJyb3dzZXIsIE1l
bnVSZWYgKiBtZW51LCBVSW50MzIgKiBoZWxwVHlwZSwgQ0ZTdHJpbmdSZWYgKiBoZWxwSXRlbVN0
cmluZywgQUVEZXNjICogc2VsZWN0aW9uLCBEYXRhQnJvd3NlckdldENvbnRleHR1YWxNZW51VVBQ
IHVzZXJVUFApIHsgKCp1c2VyVVBQKShicm93c2VyLCBtZW51LCBoZWxwVHlwZSwgaGVscEl0ZW1T
dHJpbmcsIHNlbGVjdGlvbik7IH0KICAgIGlubGluZSB2b2lkIEludm9rZURhdGFCcm93c2VyU2Vs
ZWN0Q29udGV4dHVhbE1lbnVVUFAoQ29udHJvbFJlZiBicm93c2VyLCBNZW51UmVmIG1lbnUsIFVJ
bnQzMiBzZWxlY3Rpb25UeXBlLCBTSW50MTYgbWVudUlELCBNZW51SXRlbUluZGV4IG1lbnVJdGVt
LCBEYXRhQnJvd3NlclNlbGVjdENvbnRleHR1YWxNZW51VVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQ
KShicm93c2VyLCBtZW51LCBzZWxlY3Rpb25UeXBlLCBtZW51SUQsIG1lbnVJdGVtKTsgfQogICAg
aW5saW5lIHZvaWQgSW52b2tlRGF0YUJyb3dzZXJJdGVtSGVscENvbnRlbnRVUFAoQ29udHJvbFJl
ZiBicm93c2VyLCBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtLCBEYXRhQnJvd3NlclByb3BlcnR5SUQg
cHJvcGVydHksIEhNQ29udGVudFJlcXVlc3QgaW5SZXF1ZXN0LCBITUNvbnRlbnRQcm92aWRlZFR5
cGUgKiBvdXRDb250ZW50UHJvdmlkZWQsIEhNSGVscENvbnRlbnRSZWMgKiBpb0hlbHBDb250ZW50
LCBEYXRhQnJvd3Nlckl0ZW1IZWxwQ29udGVudFVQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCkoYnJv
d3NlciwgaXRlbSwgcHJvcGVydHksIGluUmVxdWVzdCwgb3V0Q29udGVudFByb3ZpZGVkLCBpb0hl
bHBDb250ZW50KTsgfQojIDI2MzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJv
d3Nlci5oIiAzCmVudW0gewogIGtEYXRhQnJvd3NlckxhdGVzdENhbGxiYWNrcyA9IDAKfTsKCnN0
cnVjdCBEYXRhQnJvd3NlckNhbGxiYWNrcyB7CiAgVUludDMyIHZlcnNpb247CgogIHVuaW9uIHsK
ICAgIHN0cnVjdCB7CiAgICAgIERhdGFCcm93c2VySXRlbURhdGFVUFAgaXRlbURhdGFDYWxsYmFj
azsKICAgICAgRGF0YUJyb3dzZXJJdGVtQ29tcGFyZVVQUCBpdGVtQ29tcGFyZUNhbGxiYWNrOwog
ICAgICBEYXRhQnJvd3Nlckl0ZW1Ob3RpZmljYXRpb25VUFAgaXRlbU5vdGlmaWNhdGlvbkNhbGxi
YWNrOwoKICAgICAgRGF0YUJyb3dzZXJBZGREcmFnSXRlbVVQUCBhZGREcmFnSXRlbUNhbGxiYWNr
OwogICAgICBEYXRhQnJvd3NlckFjY2VwdERyYWdVUFAgYWNjZXB0RHJhZ0NhbGxiYWNrOwogICAg
ICBEYXRhQnJvd3NlclJlY2VpdmVEcmFnVVBQIHJlY2VpdmVEcmFnQ2FsbGJhY2s7CiAgICAgIERh
dGFCcm93c2VyUG9zdFByb2Nlc3NEcmFnVVBQIHBvc3RQcm9jZXNzRHJhZ0NhbGxiYWNrOwoKICAg
ICAgRGF0YUJyb3dzZXJJdGVtSGVscENvbnRlbnRVUFAgaXRlbUhlbHBDb250ZW50Q2FsbGJhY2s7
CiAgICAgIERhdGFCcm93c2VyR2V0Q29udGV4dHVhbE1lbnVVUFAgZ2V0Q29udGV4dHVhbE1lbnVD
YWxsYmFjazsKICAgICAgRGF0YUJyb3dzZXJTZWxlY3RDb250ZXh0dWFsTWVudVVQUCBzZWxlY3RD
b250ZXh0dWFsTWVudUNhbGxiYWNrOwogICAgfSB2MTsKICB9IHU7Cn07CnR5cGVkZWYgc3RydWN0
IERhdGFCcm93c2VyQ2FsbGJhY2tzIERhdGFCcm93c2VyQ2FsbGJhY2tzOwojIDI3MjggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmVudW0gewoKCgoKICBrRXZl
bnRDbGFzc0RhdGFCcm93c2VyID0gJ2hpZGInCn07CiMgMjc0NCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZW51bSB7CiAga0V2ZW50UGFyYW1EYXRhQnJvd3Nl
ckl0ZW1JRCA9ICdkYmlkJywKICBrRXZlbnRQYXJhbURhdGFCcm93c2VyUHJvcGVydHlJRCA9ICdk
YnBkJywKICBrRXZlbnRQYXJhbURhdGFCcm93c2VySXRlbVN0YXRlID0gJ2RiaXMnCn07CiMgMjgw
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZW51bSB7CiAg
a0V2ZW50RGF0YUJyb3dzZXJEcmF3Q3VzdG9tSXRlbSA9IDEKfTsKCgoKCnR5cGVkZWYgVUludDMy
IERhdGFCcm93c2VyRHJhZ0ZsYWdzOwp0eXBlZGVmIFNJbnQxNiBEYXRhQnJvd3NlclRyYWNraW5n
UmVzdWx0OwplbnVtIHsKICBrRGF0YUJyb3dzZXJDb250ZW50SGl0ID0gMSwKICBrRGF0YUJyb3dz
ZXJOb3RoaW5nSGl0ID0gMCwKICBrRGF0YUJyb3dzZXJTdG9wVHJhY2tpbmcgPSAtMQp9OwoKdHlw
ZWRlZiB2b2lkICggKiBEYXRhQnJvd3NlckRyYXdJdGVtUHJvY1B0cikoQ29udHJvbFJlZiBicm93
c2VyLCBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtLCBEYXRhQnJvd3NlclByb3BlcnR5SUQgcHJvcGVy
dHksIERhdGFCcm93c2VySXRlbVN0YXRlIGl0ZW1TdGF0ZSwgY29uc3QgUmVjdCAqdGhlUmVjdCwg
U0ludDE2IGdkRGVwdGgsIEJvb2xlYW4gY29sb3JEZXZpY2UpOwp0eXBlZGVmIEJvb2xlYW4gKCAq
IERhdGFCcm93c2VyRWRpdEl0ZW1Qcm9jUHRyKShDb250cm9sUmVmIGJyb3dzZXIsIERhdGFCcm93
c2VySXRlbUlEIGl0ZW0sIERhdGFCcm93c2VyUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ0ZTdHJpbmdS
ZWYgdGhlU3RyaW5nLCBSZWN0ICptYXhFZGl0VGV4dFJlY3QsIEJvb2xlYW4gKnNocmlua1RvRml0
KTsKdHlwZWRlZiBCb29sZWFuICggKiBEYXRhQnJvd3NlckhpdFRlc3RQcm9jUHRyKShDb250cm9s
UmVmIGJyb3dzZXIsIERhdGFCcm93c2VySXRlbUlEIGl0ZW1JRCwgRGF0YUJyb3dzZXJQcm9wZXJ0
eUlEIHByb3BlcnR5LCBjb25zdCBSZWN0ICp0aGVSZWN0LCBjb25zdCBSZWN0ICptb3VzZVJlY3Qp
Owp0eXBlZGVmIERhdGFCcm93c2VyVHJhY2tpbmdSZXN1bHQgKCAqIERhdGFCcm93c2VyVHJhY2tp
bmdQcm9jUHRyKShDb250cm9sUmVmIGJyb3dzZXIsIERhdGFCcm93c2VySXRlbUlEIGl0ZW1JRCwg
RGF0YUJyb3dzZXJQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBSZWN0ICp0aGVSZWN0LCBQb2lu
dCBzdGFydFB0LCBFdmVudE1vZGlmaWVycyBtb2RpZmllcnMpOwp0eXBlZGVmIHZvaWQgKCAqIERh
dGFCcm93c2VySXRlbURyYWdSZ25Qcm9jUHRyKShDb250cm9sUmVmIGJyb3dzZXIsIERhdGFCcm93
c2VySXRlbUlEIGl0ZW1JRCwgRGF0YUJyb3dzZXJQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBS
ZWN0ICp0aGVSZWN0LCBSZ25IYW5kbGUgZHJhZ1Jnbik7CnR5cGVkZWYgRGF0YUJyb3dzZXJEcmFn
RmxhZ3MgKCAqIERhdGFCcm93c2VySXRlbUFjY2VwdERyYWdQcm9jUHRyKShDb250cm9sUmVmIGJy
b3dzZXIsIERhdGFCcm93c2VySXRlbUlEIGl0ZW1JRCwgRGF0YUJyb3dzZXJQcm9wZXJ0eUlEIHBy
b3BlcnR5LCBjb25zdCBSZWN0ICp0aGVSZWN0LCBEcmFnUmVmZXJlbmNlIHRoZURyYWcpOwp0eXBl
ZGVmIEJvb2xlYW4gKCAqIERhdGFCcm93c2VySXRlbVJlY2VpdmVEcmFnUHJvY1B0cikoQ29udHJv
bFJlZiBicm93c2VyLCBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtSUQsIERhdGFCcm93c2VyUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgRGF0YUJyb3dzZXJEcmFnRmxhZ3MgZHJhZ0ZsYWdzLCBEcmFnUmVmZXJl
bmNlIHRoZURyYWcpOwp0eXBlZGVmIERhdGFCcm93c2VyRHJhd0l0ZW1Qcm9jUHRyIERhdGFCcm93
c2VyRHJhd0l0ZW1VUFA7CnR5cGVkZWYgRGF0YUJyb3dzZXJFZGl0SXRlbVByb2NQdHIgRGF0YUJy
b3dzZXJFZGl0SXRlbVVQUDsKdHlwZWRlZiBEYXRhQnJvd3NlckhpdFRlc3RQcm9jUHRyIERhdGFC
cm93c2VySGl0VGVzdFVQUDsKdHlwZWRlZiBEYXRhQnJvd3NlclRyYWNraW5nUHJvY1B0ciBEYXRh
QnJvd3NlclRyYWNraW5nVVBQOwp0eXBlZGVmIERhdGFCcm93c2VySXRlbURyYWdSZ25Qcm9jUHRy
IERhdGFCcm93c2VySXRlbURyYWdSZ25VUFA7CnR5cGVkZWYgRGF0YUJyb3dzZXJJdGVtQWNjZXB0
RHJhZ1Byb2NQdHIgRGF0YUJyb3dzZXJJdGVtQWNjZXB0RHJhZ1VQUDsKdHlwZWRlZiBEYXRhQnJv
d3Nlckl0ZW1SZWNlaXZlRHJhZ1Byb2NQdHIgRGF0YUJyb3dzZXJJdGVtUmVjZWl2ZURyYWdVUFA7
CiMgMjgzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0
ZXJuIERhdGFCcm93c2VyRHJhd0l0ZW1VUFAKTmV3RGF0YUJyb3dzZXJEcmF3SXRlbVVQUChEYXRh
QnJvd3NlckRyYXdJdGVtUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDI4NDkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVybiBEYXRhQnJvd3NlckVkaXRJ
dGVtVVBQCk5ld0RhdGFCcm93c2VyRWRpdEl0ZW1VUFAoRGF0YUJyb3dzZXJFZGl0SXRlbVByb2NQ
dHIgdXNlclJvdXRpbmUpIDsKIyAyODYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0
YUJyb3dzZXIuaCIgMwpleHRlcm4gRGF0YUJyb3dzZXJIaXRUZXN0VVBQCk5ld0RhdGFCcm93c2Vy
SGl0VGVzdFVQUChEYXRhQnJvd3NlckhpdFRlc3RQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgMjg3
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZXh0ZXJuIERh
dGFCcm93c2VyVHJhY2tpbmdVUFAKTmV3RGF0YUJyb3dzZXJUcmFja2luZ1VQUChEYXRhQnJvd3Nl
clRyYWNraW5nUHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDI4ODIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVybiBEYXRhQnJvd3Nlckl0ZW1EcmFnUmdu
VVBQCk5ld0RhdGFCcm93c2VySXRlbURyYWdSZ25VUFAoRGF0YUJyb3dzZXJJdGVtRHJhZ1JnblBy
b2NQdHIgdXNlclJvdXRpbmUpIDsKIyAyODkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJ
RGF0YUJyb3dzZXIuaCIgMwpleHRlcm4gRGF0YUJyb3dzZXJJdGVtQWNjZXB0RHJhZ1VQUApOZXdE
YXRhQnJvd3Nlckl0ZW1BY2NlcHREcmFnVVBQKERhdGFCcm93c2VySXRlbUFjY2VwdERyYWdQcm9j
UHRyIHVzZXJSb3V0aW5lKSA7CiMgMjkwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURh
dGFCcm93c2VyLmgiIDMKZXh0ZXJuIERhdGFCcm93c2VySXRlbVJlY2VpdmVEcmFnVVBQCk5ld0Rh
dGFCcm93c2VySXRlbVJlY2VpdmVEcmFnVVBQKERhdGFCcm93c2VySXRlbVJlY2VpdmVEcmFnUHJv
Y1B0ciB1c2VyUm91dGluZSkgOwojIDI5MTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElE
YXRhQnJvd3Nlci5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VEYXRhQnJvd3NlckRyYXdJdGVtVVBQ
KERhdGFCcm93c2VyRHJhd0l0ZW1VUFAgdXNlclVQUCkgOwojIDI5MjYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VEYXRhQnJv
d3NlckVkaXRJdGVtVVBQKERhdGFCcm93c2VyRWRpdEl0ZW1VUFAgdXNlclVQUCkgOwojIDI5Mzcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVybiB2b2lk
CkRpc3Bvc2VEYXRhQnJvd3NlckhpdFRlc3RVUFAoRGF0YUJyb3dzZXJIaXRUZXN0VVBQIHVzZXJV
UFApIDsKIyAyOTQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIg
MwpleHRlcm4gdm9pZApEaXNwb3NlRGF0YUJyb3dzZXJUcmFja2luZ1VQUChEYXRhQnJvd3NlclRy
YWNraW5nVVBQIHVzZXJVUFApIDsKIyAyOTU5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJ
RGF0YUJyb3dzZXIuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlRGF0YUJyb3dzZXJJdGVtRHJhZ1Jn
blVQUChEYXRhQnJvd3Nlckl0ZW1EcmFnUmduVVBQIHVzZXJVUFApIDsKIyAyOTcwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwpleHRlcm4gdm9pZApEaXNwb3Nl
RGF0YUJyb3dzZXJJdGVtQWNjZXB0RHJhZ1VQUChEYXRhQnJvd3Nlckl0ZW1BY2NlcHREcmFnVVBQ
IHVzZXJVUFApIDsKIyAyOTgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0YUJyb3dz
ZXIuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlRGF0YUJyb3dzZXJJdGVtUmVjZWl2ZURyYWdVUFAo
RGF0YUJyb3dzZXJJdGVtUmVjZWl2ZURyYWdVUFAgdXNlclVQUCkgOwojIDI5OTIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVybiB2b2lkCkludm9rZURh
dGFCcm93c2VyRHJhd0l0ZW1VUFAoCiAgQ29udHJvbFJlZiBicm93c2VyLAogIERhdGFCcm93c2Vy
SXRlbUlEIGl0ZW0sCiAgRGF0YUJyb3dzZXJQcm9wZXJ0eUlEIHByb3BlcnR5LAogIERhdGFCcm93
c2VySXRlbVN0YXRlIGl0ZW1TdGF0ZSwKICBjb25zdCBSZWN0ICogdGhlUmVjdCwKICBTSW50MTYg
Z2REZXB0aCwKICBCb29sZWFuIGNvbG9yRGV2aWNlLAogIERhdGFCcm93c2VyRHJhd0l0ZW1VUFAg
dXNlclVQUCkgOwojIDMwMTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nl
ci5oIiAzCmV4dGVybiBCb29sZWFuCkludm9rZURhdGFCcm93c2VyRWRpdEl0ZW1VUFAoCiAgQ29u
dHJvbFJlZiBicm93c2VyLAogIERhdGFCcm93c2VySXRlbUlEIGl0ZW0sCiAgRGF0YUJyb3dzZXJQ
cm9wZXJ0eUlEIHByb3BlcnR5LAogIENGU3RyaW5nUmVmIHRoZVN0cmluZywKICBSZWN0ICogbWF4
RWRpdFRleHRSZWN0LAogIEJvb2xlYW4gKiBzaHJpbmtUb0ZpdCwKICBEYXRhQnJvd3NlckVkaXRJ
dGVtVVBQIHVzZXJVUFApIDsKIyAzMDI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0
YUJyb3dzZXIuaCIgMwpleHRlcm4gQm9vbGVhbgpJbnZva2VEYXRhQnJvd3NlckhpdFRlc3RVUFAo
CiAgQ29udHJvbFJlZiBicm93c2VyLAogIERhdGFCcm93c2VySXRlbUlEIGl0ZW1JRCwKICBEYXRh
QnJvd3NlclByb3BlcnR5SUQgcHJvcGVydHksCiAgY29uc3QgUmVjdCAqIHRoZVJlY3QsCiAgY29u
c3QgUmVjdCAqIG1vdXNlUmVjdCwKICBEYXRhQnJvd3NlckhpdFRlc3RVUFAgdXNlclVQUCkgOwoj
IDMwNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCmV4dGVy
biBEYXRhQnJvd3NlclRyYWNraW5nUmVzdWx0Ckludm9rZURhdGFCcm93c2VyVHJhY2tpbmdVUFAo
CiAgQ29udHJvbFJlZiBicm93c2VyLAogIERhdGFCcm93c2VySXRlbUlEIGl0ZW1JRCwKICBEYXRh
QnJvd3NlclByb3BlcnR5SUQgcHJvcGVydHksCiAgY29uc3QgUmVjdCAqIHRoZVJlY3QsCiAgUG9p
bnQgc3RhcnRQdCwKICBFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsCiAgRGF0YUJyb3dzZXJUcmFj
a2luZ1VQUCB1c2VyVVBQKSA7CiMgMzA2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURh
dGFCcm93c2VyLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlRGF0YUJyb3dzZXJJdGVtRHJhZ1JnblVQ
UCgKICBDb250cm9sUmVmIGJyb3dzZXIsCiAgRGF0YUJyb3dzZXJJdGVtSUQgaXRlbUlELAogIERh
dGFCcm93c2VyUHJvcGVydHlJRCBwcm9wZXJ0eSwKICBjb25zdCBSZWN0ICogdGhlUmVjdCwKICBS
Z25IYW5kbGUgZHJhZ1JnbiwKICBEYXRhQnJvd3Nlckl0ZW1EcmFnUmduVVBQIHVzZXJVUFApIDsK
IyAzMDgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwpleHRl
cm4gRGF0YUJyb3dzZXJEcmFnRmxhZ3MKSW52b2tlRGF0YUJyb3dzZXJJdGVtQWNjZXB0RHJhZ1VQ
UCgKICBDb250cm9sUmVmIGJyb3dzZXIsCiAgRGF0YUJyb3dzZXJJdGVtSUQgaXRlbUlELAogIERh
dGFCcm93c2VyUHJvcGVydHlJRCBwcm9wZXJ0eSwKICBjb25zdCBSZWN0ICogdGhlUmVjdCwKICBE
cmFnUmVmZXJlbmNlIHRoZURyYWcsCiAgRGF0YUJyb3dzZXJJdGVtQWNjZXB0RHJhZ1VQUCB1c2Vy
VVBQKSA7CiMgMzA5OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgi
IDMKZXh0ZXJuIEJvb2xlYW4KSW52b2tlRGF0YUJyb3dzZXJJdGVtUmVjZWl2ZURyYWdVUFAoCiAg
Q29udHJvbFJlZiBicm93c2VyLAogIERhdGFCcm93c2VySXRlbUlEIGl0ZW1JRCwKICBEYXRhQnJv
d3NlclByb3BlcnR5SUQgcHJvcGVydHksCiAgRGF0YUJyb3dzZXJEcmFnRmxhZ3MgZHJhZ0ZsYWdz
LAogIERyYWdSZWZlcmVuY2UgdGhlRHJhZywKICBEYXRhQnJvd3Nlckl0ZW1SZWNlaXZlRHJhZ1VQ
UCB1c2VyVVBQKSA7CgoKCiAgICBpbmxpbmUgRGF0YUJyb3dzZXJEcmF3SXRlbVVQUCBOZXdEYXRh
QnJvd3NlckRyYXdJdGVtVVBQKERhdGFCcm93c2VyRHJhd0l0ZW1Qcm9jUHRyIHVzZXJSb3V0aW5l
KSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIERhdGFCcm93c2VyRWRpdEl0ZW1V
UFAgTmV3RGF0YUJyb3dzZXJFZGl0SXRlbVVQUChEYXRhQnJvd3NlckVkaXRJdGVtUHJvY1B0ciB1
c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBEYXRhQnJvd3Nl
ckhpdFRlc3RVUFAgTmV3RGF0YUJyb3dzZXJIaXRUZXN0VVBQKERhdGFCcm93c2VySGl0VGVzdFBy
b2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRGF0
YUJyb3dzZXJUcmFja2luZ1VQUCBOZXdEYXRhQnJvd3NlclRyYWNraW5nVVBQKERhdGFCcm93c2Vy
VHJhY2tpbmdQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAg
aW5saW5lIERhdGFCcm93c2VySXRlbURyYWdSZ25VUFAgTmV3RGF0YUJyb3dzZXJJdGVtRHJhZ1Jn
blVQUChEYXRhQnJvd3Nlckl0ZW1EcmFnUmduUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4g
dXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBEYXRhQnJvd3Nlckl0ZW1BY2NlcHREcmFnVVBQIE5l
d0RhdGFCcm93c2VySXRlbUFjY2VwdERyYWdVUFAoRGF0YUJyb3dzZXJJdGVtQWNjZXB0RHJhZ1By
b2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgRGF0
YUJyb3dzZXJJdGVtUmVjZWl2ZURyYWdVUFAgTmV3RGF0YUJyb3dzZXJJdGVtUmVjZWl2ZURyYWdV
UFAoRGF0YUJyb3dzZXJJdGVtUmVjZWl2ZURyYWdQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVy
biB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZURhdGFCcm93c2VyRHJhd0l0
ZW1VUFAoRGF0YUJyb3dzZXJEcmF3SXRlbVVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3Nl
RGF0YUJyb3dzZXJFZGl0SXRlbVVQUChEYXRhQnJvd3NlckVkaXRJdGVtVVBQKSB7IH0KICAgIGlu
bGluZSB2b2lkIERpc3Bvc2VEYXRhQnJvd3NlckhpdFRlc3RVUFAoRGF0YUJyb3dzZXJIaXRUZXN0
VVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VEYXRhQnJvd3NlclRyYWNraW5nVVBQKERh
dGFCcm93c2VyVHJhY2tpbmdVUFApIHsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZURhdGFCcm93
c2VySXRlbURyYWdSZ25VUFAoRGF0YUJyb3dzZXJJdGVtRHJhZ1JnblVQUCkgeyB9CiAgICBpbmxp
bmUgdm9pZCBEaXNwb3NlRGF0YUJyb3dzZXJJdGVtQWNjZXB0RHJhZ1VQUChEYXRhQnJvd3Nlckl0
ZW1BY2NlcHREcmFnVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VEYXRhQnJvd3Nlckl0
ZW1SZWNlaXZlRHJhZ1VQUChEYXRhQnJvd3Nlckl0ZW1SZWNlaXZlRHJhZ1VQUCkgeyB9CiAgICBp
bmxpbmUgdm9pZCBJbnZva2VEYXRhQnJvd3NlckRyYXdJdGVtVVBQKENvbnRyb2xSZWYgYnJvd3Nl
ciwgRGF0YUJyb3dzZXJJdGVtSUQgaXRlbSwgRGF0YUJyb3dzZXJQcm9wZXJ0eUlEIHByb3BlcnR5
LCBEYXRhQnJvd3Nlckl0ZW1TdGF0ZSBpdGVtU3RhdGUsIGNvbnN0IFJlY3QgKiB0aGVSZWN0LCBT
SW50MTYgZ2REZXB0aCwgQm9vbGVhbiBjb2xvckRldmljZSwgRGF0YUJyb3dzZXJEcmF3SXRlbVVQ
UCB1c2VyVVBQKSB7ICgqdXNlclVQUCkoYnJvd3NlciwgaXRlbSwgcHJvcGVydHksIGl0ZW1TdGF0
ZSwgdGhlUmVjdCwgZ2REZXB0aCwgY29sb3JEZXZpY2UpOyB9CiAgICBpbmxpbmUgQm9vbGVhbiBJ
bnZva2VEYXRhQnJvd3NlckVkaXRJdGVtVVBQKENvbnRyb2xSZWYgYnJvd3NlciwgRGF0YUJyb3dz
ZXJJdGVtSUQgaXRlbSwgRGF0YUJyb3dzZXJQcm9wZXJ0eUlEIHByb3BlcnR5LCBDRlN0cmluZ1Jl
ZiB0aGVTdHJpbmcsIFJlY3QgKiBtYXhFZGl0VGV4dFJlY3QsIEJvb2xlYW4gKiBzaHJpbmtUb0Zp
dCwgRGF0YUJyb3dzZXJFZGl0SXRlbVVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGJy
b3dzZXIsIGl0ZW0sIHByb3BlcnR5LCB0aGVTdHJpbmcsIG1heEVkaXRUZXh0UmVjdCwgc2hyaW5r
VG9GaXQpOyB9CiAgICBpbmxpbmUgQm9vbGVhbiBJbnZva2VEYXRhQnJvd3NlckhpdFRlc3RVUFAo
Q29udHJvbFJlZiBicm93c2VyLCBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtSUQsIERhdGFCcm93c2Vy
UHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVjdCAqIHRoZVJlY3QsIGNvbnN0IFJlY3QgKiBt
b3VzZVJlY3QsIERhdGFCcm93c2VySGl0VGVzdFVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJV
UFApKGJyb3dzZXIsIGl0ZW1JRCwgcHJvcGVydHksIHRoZVJlY3QsIG1vdXNlUmVjdCk7IH0KICAg
IGlubGluZSBEYXRhQnJvd3NlclRyYWNraW5nUmVzdWx0IEludm9rZURhdGFCcm93c2VyVHJhY2tp
bmdVUFAoQ29udHJvbFJlZiBicm93c2VyLCBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtSUQsIERhdGFC
cm93c2VyUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVjdCAqIHRoZVJlY3QsIFBvaW50IHN0
YXJ0UHQsIEV2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgRGF0YUJyb3dzZXJUcmFja2luZ1VQUCB1
c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGJyb3dzZXIsIGl0ZW1JRCwgcHJvcGVydHksIHRo
ZVJlY3QsIHN0YXJ0UHQsIG1vZGlmaWVycyk7IH0KICAgIGlubGluZSB2b2lkIEludm9rZURhdGFC
cm93c2VySXRlbURyYWdSZ25VUFAoQ29udHJvbFJlZiBicm93c2VyLCBEYXRhQnJvd3Nlckl0ZW1J
RCBpdGVtSUQsIERhdGFCcm93c2VyUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVjdCAqIHRo
ZVJlY3QsIFJnbkhhbmRsZSBkcmFnUmduLCBEYXRhQnJvd3Nlckl0ZW1EcmFnUmduVVBQIHVzZXJV
UFApIHsgKCp1c2VyVVBQKShicm93c2VyLCBpdGVtSUQsIHByb3BlcnR5LCB0aGVSZWN0LCBkcmFn
UmduKTsgfQogICAgaW5saW5lIERhdGFCcm93c2VyRHJhZ0ZsYWdzIEludm9rZURhdGFCcm93c2Vy
SXRlbUFjY2VwdERyYWdVUFAoQ29udHJvbFJlZiBicm93c2VyLCBEYXRhQnJvd3Nlckl0ZW1JRCBp
dGVtSUQsIERhdGFCcm93c2VyUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVjdCAqIHRoZVJl
Y3QsIERyYWdSZWZlcmVuY2UgdGhlRHJhZywgRGF0YUJyb3dzZXJJdGVtQWNjZXB0RHJhZ1VQUCB1
c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKGJyb3dzZXIsIGl0ZW1JRCwgcHJvcGVydHksIHRo
ZVJlY3QsIHRoZURyYWcpOyB9CiAgICBpbmxpbmUgQm9vbGVhbiBJbnZva2VEYXRhQnJvd3Nlckl0
ZW1SZWNlaXZlRHJhZ1VQUChDb250cm9sUmVmIGJyb3dzZXIsIERhdGFCcm93c2VySXRlbUlEIGl0
ZW1JRCwgRGF0YUJyb3dzZXJQcm9wZXJ0eUlEIHByb3BlcnR5LCBEYXRhQnJvd3NlckRyYWdGbGFn
cyBkcmFnRmxhZ3MsIERyYWdSZWZlcmVuY2UgdGhlRHJhZywgRGF0YUJyb3dzZXJJdGVtUmVjZWl2
ZURyYWdVUFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKShicm93c2VyLCBpdGVtSUQsIHBy
b3BlcnR5LCBkcmFnRmxhZ3MsIHRoZURyYWcpOyB9CiMgMzE1NiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKZW51bSB7CiAga0RhdGFCcm93c2VyTGF0ZXN0Q3Vz
dG9tQ2FsbGJhY2tzID0gMAp9OwoKc3RydWN0IERhdGFCcm93c2VyQ3VzdG9tQ2FsbGJhY2tzIHsK
CiAgVUludDMyIHZlcnNpb247CgogIHVuaW9uIHsKICAgIHN0cnVjdCB7CiAgICAgIERhdGFCcm93
c2VyRHJhd0l0ZW1VUFAgZHJhd0l0ZW1DYWxsYmFjazsKICAgICAgRGF0YUJyb3dzZXJFZGl0SXRl
bVVQUCBlZGl0VGV4dENhbGxiYWNrOwogICAgICBEYXRhQnJvd3NlckhpdFRlc3RVUFAgaGl0VGVz
dENhbGxiYWNrOwogICAgICBEYXRhQnJvd3NlclRyYWNraW5nVVBQIHRyYWNraW5nQ2FsbGJhY2s7
CgogICAgICBEYXRhQnJvd3Nlckl0ZW1EcmFnUmduVVBQIGRyYWdSZWdpb25DYWxsYmFjazsKICAg
ICAgRGF0YUJyb3dzZXJJdGVtQWNjZXB0RHJhZ1VQUCBhY2NlcHREcmFnQ2FsbGJhY2s7CiAgICAg
IERhdGFCcm93c2VySXRlbVJlY2VpdmVEcmFnVVBQIHJlY2VpdmVEcmFnQ2FsbGJhY2s7CiAgICB9
IHYxOwogIH0gdTsKfTsKdHlwZWRlZiBzdHJ1Y3QgRGF0YUJyb3dzZXJDdXN0b21DYWxsYmFja3Mg
RGF0YUJyb3dzZXJDdXN0b21DYWxsYmFja3M7CiMgMzIzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISURhdGFCcm93c2VyLmgiIDMKdHlwZWRlZiBVSW50MzIgRGF0YUJyb3dzZXJUYWJsZVZp
ZXdIaWxpdGVTdHlsZTsKZW51bSB7CiAga0RhdGFCcm93c2VyVGFibGVWaWV3TWluaW1hbEhpbGl0
ZSA9IDAsCiAga0RhdGFCcm93c2VyVGFibGVWaWV3RmlsbEhpbGl0ZSA9IDEKfTsKCnR5cGVkZWYg
VUludDMyIERhdGFCcm93c2VyVGFibGVWaWV3UHJvcGVydHlGbGFnczsKZW51bSB7CgogIGtEYXRh
QnJvd3NlclRhYmxlVmlld1NlbGVjdGlvbkNvbHVtbiA9IDEgPDwga0RhdGFCcm93c2VyVmlld1Nw
ZWNpZmljRmxhZ3NPZmZzZXQKfTsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIERhdGFCcm93c2Vy
VGFibGVWaWV3Um93SW5kZXg7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBEYXRhQnJvd3NlclRhYmxl
Vmlld0NvbHVtbkluZGV4Owp0eXBlZGVmIERhdGFCcm93c2VyUHJvcGVydHlJRCBEYXRhQnJvd3Nl
clRhYmxlVmlld0NvbHVtbklEOwp0eXBlZGVmIERhdGFCcm93c2VyUHJvcGVydHlEZXNjIERhdGFC
cm93c2VyVGFibGVWaWV3Q29sdW1uRGVzYzsKCgplbnVtIHsKICBrRGF0YUJyb3dzZXJUYWJsZVZp
ZXdMYXN0Q29sdW1uID0gLTEKfTsKIyAzNjI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJ
RGF0YUJyb3dzZXIuaCIgMwplbnVtIHsKICBrRGF0YUJyb3dzZXJMaXN0Vmlld1NlbGVjdGlvbkNv
bHVtbiA9IGtEYXRhQnJvd3NlclRhYmxlVmlld1NlbGVjdGlvbkNvbHVtbiwKICBrRGF0YUJyb3dz
ZXJMaXN0Vmlld01vdmFibGVDb2x1bW4gPSAxIDw8IChrRGF0YUJyb3dzZXJWaWV3U3BlY2lmaWNG
bGFnc09mZnNldCArIDEpLAogIGtEYXRhQnJvd3Nlckxpc3RWaWV3U29ydGFibGVDb2x1bW4gPSAx
IDw8IChrRGF0YUJyb3dzZXJWaWV3U3BlY2lmaWNGbGFnc09mZnNldCArIDIpLAojIDM2NDkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCiAga0RhdGFCcm93c2Vy
TGlzdFZpZXdUeXBlU2VsZWN0Q29sdW1uID0gMSA8PCAoa0RhdGFCcm93c2VyVmlld1NwZWNpZmlj
RmxhZ3NPZmZzZXQgKyAzKSwKIyAzNjYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0
YUJyb3dzZXIuaCIgMwogIGtEYXRhQnJvd3Nlckxpc3RWaWV3Tm9HYXBGb3JJY29uSW5IZWFkZXJC
dXR0b24gPSAxIDw8IChrRGF0YUJyb3dzZXJWaWV3U3BlY2lmaWNGbGFnc09mZnNldCArIDQpLAog
IGtEYXRhQnJvd3Nlckxpc3RWaWV3RGVmYXVsdENvbHVtbkZsYWdzID0ga0RhdGFCcm93c2VyTGlz
dFZpZXdNb3ZhYmxlQ29sdW1uICsga0RhdGFCcm93c2VyTGlzdFZpZXdTb3J0YWJsZUNvbHVtbgp9
OwoKdHlwZWRlZiBEYXRhQnJvd3NlclByb3BlcnR5RmxhZ3MgRGF0YUJyb3dzZXJMaXN0Vmlld1By
b3BlcnR5RmxhZ3M7CmVudW0gewogIGtEYXRhQnJvd3Nlckxpc3RWaWV3TGF0ZXN0SGVhZGVyRGVz
YyA9IDAKfTsKCnN0cnVjdCBEYXRhQnJvd3Nlckxpc3RWaWV3SGVhZGVyRGVzYyB7CiAgVUludDMy
IHZlcnNpb247CgogIFVJbnQxNiBtaW5pbXVtV2lkdGg7CiAgVUludDE2IG1heGltdW1XaWR0aDsK
CiAgU0ludDE2IHRpdGxlT2Zmc2V0OwogIENGU3RyaW5nUmVmIHRpdGxlU3RyaW5nOwogIERhdGFC
cm93c2VyU29ydE9yZGVyIGluaXRpYWxPcmRlcjsKICBDb250cm9sRm9udFN0eWxlUmVjIGJ0bkZv
bnRTdHlsZTsKICBDb250cm9sQnV0dG9uQ29udGVudEluZm8gYnRuQ29udGVudEluZm87Cn07CnR5
cGVkZWYgc3RydWN0IERhdGFCcm93c2VyTGlzdFZpZXdIZWFkZXJEZXNjIERhdGFCcm93c2VyTGlz
dFZpZXdIZWFkZXJEZXNjOwpzdHJ1Y3QgRGF0YUJyb3dzZXJMaXN0Vmlld0NvbHVtbkRlc2Mgewog
IERhdGFCcm93c2VyVGFibGVWaWV3Q29sdW1uRGVzYyBwcm9wZXJ0eURlc2M7CiAgRGF0YUJyb3dz
ZXJMaXN0Vmlld0hlYWRlckRlc2MgaGVhZGVyQnRuRGVzYzsKfTsKdHlwZWRlZiBzdHJ1Y3QgRGF0
YUJyb3dzZXJMaXN0Vmlld0NvbHVtbkRlc2MgRGF0YUJyb3dzZXJMaXN0Vmlld0NvbHVtbkRlc2M7
CgplbnVtIHsKICBrRGF0YUJyb3dzZXJMaXN0Vmlld0FwcGVuZENvbHVtbiA9IGtEYXRhQnJvd3Nl
clRhYmxlVmlld0xhc3RDb2x1bW4KfTsKIyA0MDc0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJRGF0YUJyb3dzZXIuaCIgMwpzdHJ1Y3QgRGF0YUJyb3dzZXJBY2Nlc3NpYmlsaXR5SXRlbUlu
Zm9WMCB7CiMgNDA4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgi
IDMKICBEYXRhQnJvd3Nlckl0ZW1JRCBjb250YWluZXI7CiMgNDA5NyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKICBEYXRhQnJvd3Nlckl0ZW1JRCBpdGVtOwoj
IDQxMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCiAgRGF0
YUJyb3dzZXJQcm9wZXJ0eUlEIGNvbHVtblByb3BlcnR5OwojIDQxMjUgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCiAgRGF0YUJyb3dzZXJQcm9wZXJ0eVBhcnQg
cHJvcGVydHlQYXJ0Owp9Owp0eXBlZGVmIHN0cnVjdCBEYXRhQnJvd3NlckFjY2Vzc2liaWxpdHlJ
dGVtSW5mb1YwIERhdGFCcm93c2VyQWNjZXNzaWJpbGl0eUl0ZW1JbmZvVjA7CiMgNDE1MSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKc3RydWN0IERhdGFCcm93
c2VyQWNjZXNzaWJpbGl0eUl0ZW1JbmZvVjEgewojIDQxNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCiAgRGF0YUJyb3dzZXJJdGVtSUQgY29udGFpbmVyOwoj
IDQxNzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElEYXRhQnJvd3Nlci5oIiAzCiAgRGF0
YUJyb3dzZXJJdGVtSUQgaXRlbTsKIyA0MTg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJ
RGF0YUJyb3dzZXIuaCIgMwogIERhdGFCcm93c2VyUHJvcGVydHlJRCBjb2x1bW5Qcm9wZXJ0eTsK
IyA0MjAyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwogIERh
dGFCcm93c2VyUHJvcGVydHlQYXJ0IHByb3BlcnR5UGFydDsKIyA0MjE3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0hJRGF0YUJyb3dzZXIuaCIgMwogIERhdGFCcm93c2VyVGFibGVWaWV3Um93
SW5kZXggcm93SW5kZXg7CiMgNDIzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFC
cm93c2VyLmgiIDMKICBEYXRhQnJvd3NlclRhYmxlVmlld0NvbHVtbkluZGV4IGNvbHVtbkluZGV4
Owp9Owp0eXBlZGVmIHN0cnVjdCBEYXRhQnJvd3NlckFjY2Vzc2liaWxpdHlJdGVtSW5mb1YxIERh
dGFCcm93c2VyQWNjZXNzaWJpbGl0eUl0ZW1JbmZvVjE7CiMgNDI0NyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKc3RydWN0IERhdGFCcm93c2VyQWNjZXNzaWJp
bGl0eUl0ZW1JbmZvIHsKIyA0MjU2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGF0YUJy
b3dzZXIuaCIgMwogIFVJbnQzMiB2ZXJzaW9uOwogIHVuaW9uIHsKICAgIERhdGFCcm93c2VyQWNj
ZXNzaWJpbGl0eUl0ZW1JbmZvVjAgdjA7CiAgICBEYXRhQnJvd3NlckFjY2Vzc2liaWxpdHlJdGVt
SW5mb1YxIHYxOwogIH0gdTsKfTsKdHlwZWRlZiBzdHJ1Y3QgRGF0YUJyb3dzZXJBY2Nlc3NpYmls
aXR5SXRlbUluZm8gRGF0YUJyb3dzZXJBY2Nlc3NpYmlsaXR5SXRlbUluZm87CiMgNDM1MCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURhdGFCcm93c2VyLmgiIDMKI3ByYWdtYSBwYWNrKHBv
cCkKCgp9CiMgMTM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJveC5oIiAyIDMK
CgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGlzY2xvc3VyZVZpZXdzLmgiIDEg
MwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJRGlzY2xvc3VyZVZpZXdzLmgiIDMK
I2RlZmluZSBfX0hJRElTQ0xPU1VSRVZJRVdTX18gCiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElEaXNjbG9zdXJlVmlld3MuaCIgMwpleHRlcm4gIkMiIHsKCgoKCgoKCiNkZWZpbmUg
a0hJRGlzY2xvc3VyZUJ1dHRvbkNsYXNzSUQgQ0ZTVFIoImNvbS5hcHBsZS5ISURpc2Nsb3N1cmVC
dXR0b24iKQojIDEwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISURpc2Nsb3N1cmVWaWV3
cy5oIiAzCmVudW0gewogIGtDb250cm9sS2luZERpc2Nsb3N1cmVCdXR0b24gPSAnZGlzYicKfTsK
CgoKCgoKZW51bSB7CgoKCgogIGtDb250cm9sRGlzY2xvc3VyZUJ1dHRvbkNsb3NlZCA9IDAsCgoK
CgogIGtDb250cm9sRGlzY2xvc3VyZUJ1dHRvbkRpc2Nsb3NlZCA9IDEKfTsKIyAxNTIgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElEaXNjbG9zdXJlVmlld3MuaCIgMwplbnVtIHsKICBrQ29u
dHJvbFRyaWFuZ2xlUHJvYyA9IDY0LAogIGtDb250cm9sVHJpYW5nbGVMZWZ0RmFjaW5nUHJvYyA9
IDY1LAogIGtDb250cm9sVHJpYW5nbGVBdXRvVG9nZ2xlUHJvYyA9IDY2LAogIGtDb250cm9sVHJp
YW5nbGVMZWZ0RmFjaW5nQXV0b1RvZ2dsZVByb2MgPSA2Nwp9OwojIDE2NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9ISURpc2Nsb3N1cmVWaWV3cy5oIiAzCnR5cGVkZWYgVUludDE2IENvbnRy
b2xEaXNjbG9zdXJlVHJpYW5nbGVPcmllbnRhdGlvbjsKZW51bSB7CgoKCgoKICBrQ29udHJvbERp
c2Nsb3N1cmVUcmlhbmdsZVBvaW50RGVmYXVsdCA9IDAsCiAga0NvbnRyb2xEaXNjbG9zdXJlVHJp
YW5nbGVQb2ludFJpZ2h0ID0gMSwKICBrQ29udHJvbERpc2Nsb3N1cmVUcmlhbmdsZVBvaW50TGVm
dCA9IDIKfTsKCgplbnVtIHsKICBrQ29udHJvbEtpbmREaXNjbG9zdXJlVHJpYW5nbGUgPSAnZGlz
dCcKfTsKCgojZGVmaW5lIGtISURpc2Nsb3N1cmVUcmlhbmdsZUNsYXNzSUQgQ0ZTVFIoImNvbS5h
cHBsZS5ISURpc2Nsb3N1cmVUcmlhbmdsZSIpCiMgMjc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0hJRGlzY2xvc3VyZVZpZXdzLmgiIDMKZW51bSB7CgoKCgogIGtDb250cm9sVHJpYW5nbGVM
YXN0VmFsdWVUYWcgPSAnbGFzdCcKfTsKIyAzODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElEaXNjbG9zdXJlVmlld3MuaCIgMwp9CiMgMTM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJVG9vbGJveC5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJSW1h
Z2VWaWV3cy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUltYWdlVmll
d3MuaCIgMwojZGVmaW5lIF9fSElJTUFHRVZJRVdTX18gCiMgMzYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvSElJbWFnZVZpZXdzLmgiIDMKZXh0ZXJuICJDIiB7CiMgNDcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElJbWFnZVZpZXdzLmgiIDMKI2RlZmluZSBrSElJbWFnZVZpZXdDbGFz
c0lEIENGU1RSKCJjb20uYXBwbGUuSElJbWFnZVZpZXciKQoKCgplbnVtIHsKCgoKCiAga0NvbnRy
b2xLaW5kSElJbWFnZVZpZXcgPSAnaW1hZycKfTsKIyAzNjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElJbWFnZVZpZXdzLmgiIDMKdHlwZWRlZiBVSW50MzIgSElJbWFnZVZpZXdBdXRvVHJh
bnNmb3JtT3B0aW9uczsKZW51bSB7CgoKCgogIGtISUltYWdlVmlld0F1dG9UcmFuc2Zvcm1Ob25l
ID0gMCwKCgoKCgogIGtISUltYWdlVmlld0F1dG9UcmFuc2Zvcm1PbkRpc2FibGUgPSAxIDw8IDAs
CgoKCgoKICBrSElJbWFnZVZpZXdBdXRvVHJhbnNmb3JtT25EZWFjdGl2YXRlID0gMSA8PCAxCn07
CiMgNDUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJSW1hZ2VWaWV3cy5oIiAzCmVudW0g
ewoKCgoKCgoKICBrSElJbWFnZVZpZXdJbWFnZVRhZyA9ICdpbWFnJwp9OwojIDQ2OCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9ISUltYWdlVmlld3MuaCIgMwplbnVtIHsKICBrQ29udHJvbElj
b25Qcm9jID0gMzIwLAogIGtDb250cm9sSWNvbk5vVHJhY2tQcm9jID0gMzIxLAogIGtDb250cm9s
SWNvblN1aXRlUHJvYyA9IDMyMiwKICBrQ29udHJvbEljb25TdWl0ZU5vVHJhY2tQcm9jID0gMzIz
Cn07CgplbnVtIHsKCgoKICBrQ29udHJvbEljb25SZWZQcm9jID0gMzI0LAogIGtDb250cm9sSWNv
blJlZk5vVHJhY2tQcm9jID0gMzI1Cn07CgoKZW51bSB7CiAga0NvbnRyb2xLaW5kSWNvbiA9ICdp
Y29uJwp9OwoKCiNkZWZpbmUga0hJSWNvblZpZXdDbGFzc0lEIENGU1RSKCJjb20uYXBwbGUuSElJ
Y29uVmlldyIpCiMgNTUyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJSW1hZ2VWaWV3cy5o
IiAzCmVudW0gewogIGtDb250cm9sSWNvblRyYW5zZm9ybVRhZyA9ICd0cmZtJywKICBrQ29udHJv
bEljb25BbGlnbm1lbnRUYWcgPSAnYWxnbicKfTsKCgplbnVtIHsKICBrQ29udHJvbEljb25SZXNv
dXJjZUlEVGFnID0gJ2lyZXMnLAogIGtDb250cm9sSWNvbkNvbnRlbnRUYWcgPSBrQ29udHJvbENv
bnRlbnRUYWcKfTsKIyA1ODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElJbWFnZVZpZXdz
LmgiIDMKZW51bSB7CiAga0NvbnRyb2xJbWFnZVdlbGxQcm9jID0gMTc2Cn07CgoKZW51bSB7CiAg
a0NvbnRyb2xLaW5kSW1hZ2VXZWxsID0gJ3dlbGwnCn07CgoKI2RlZmluZSBrSElJbWFnZVdlbGxD
bGFzc0lEIENGU1RSKCJjb20uYXBwbGUuSElJbWFnZVdlbGwiKQojIDYyMiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9ISUltYWdlVmlld3MuaCIgMwplbnVtIHsKICBrQ29udHJvbEltYWdlV2Vs
bENvbnRlbnRUYWcgPSBrQ29udHJvbENvbnRlbnRUYWcsCiAga0NvbnRyb2xJbWFnZVdlbGxUcmFu
c2Zvcm1UYWcgPSAndHJhbicsCiAga0NvbnRyb2xJbWFnZVdlbGxJc0RyYWdEZXN0aW5hdGlvblRh
ZyA9ICdkcmFnJwp9OwojIDY4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUltYWdlVmll
d3MuaCIgMwp9CiMgMTQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJveC5oIiAy
IDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJTGl0dGxlQXJyb3dzLmgiIDEg
MwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJTGl0dGxlQXJyb3dzLmgiIDMKI2Rl
ZmluZSBfX0hJTElUVExFQVJST1dTX18gCiMgNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElMaXR0bGVBcnJvd3MuaCIgMwpleHRlcm4gIkMiIHsKIyA1OSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISUxpdHRsZUFycm93cy5oIiAzCmVudW0gewogIGtDb250cm9sTGl0dGxlQXJyb3dz
UHJvYyA9IDk2Cn07CgoKZW51bSB7CiAga0NvbnRyb2xLaW5kTGl0dGxlQXJyb3dzID0gJ2xhcnIn
Cn07CgoKCgoKCmVudW0gewojIDg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJTGl0dGxl
QXJyb3dzLmgiIDMKICBrQ29udHJvbExpdHRsZUFycm93c0luY3JlbWVudFZhbHVlVGFnID0gJ2lu
Y3InCn07CgoKI2RlZmluZSBrSElMaXR0bGVBcnJvd3NDbGFzc0lEIENGU1RSKCJjb20uYXBwbGUu
SElMaXR0bGVBcnJvd3MiKQojIDExOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISUxpdHRs
ZUFycm93cy5oIiAzCn0KIyAxNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYm94
LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElNZW51Vmlldy5oIiAx
IDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISU1lbnVWaWV3LmgiIDMKI2RlZmlu
ZSBfX0hJTUVOVVZJRVdfXyAKIyA0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISU1lbnVW
aWV3LmgiIDMKZXh0ZXJuICJDIiB7CiMgNjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElN
ZW51Vmlldy5oIiAzCiNkZWZpbmUga0hJTWVudVZpZXdDbGFzc0lEIENGU1RSKCJjb20uYXBwbGUu
SElNZW51VmlldyIpCgojZGVmaW5lIGtISVN0YW5kYXJkTWVudVZpZXdDbGFzc0lEIENGU1RSKCJj
b20uYXBwbGUuSElTdGFuZGFyZE1lbnVWaWV3IikKCmVudW0gewogIGtDb250cm9sS2luZEhJTWVu
dVZpZXcgPSAnbWVudScsCiAga0NvbnRyb2xLaW5kSElTdGFuZGFyZE1lbnVWaWV3ID0gJ3NtbnUn
Cn07CiMgOTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElNZW51Vmlldy5oIiAzCmV4dGVy
biBjb25zdCBISVZpZXdJRCBrSElWaWV3TWVudUNvbnRlbnRJRCA7CiMgMTQwICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJTWVudVZpZXcuaCIgMwp9CiMgMTUwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJVG9vbGJveC5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0hJUG9wdXBCdXR0b24uaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElQb3B1cEJ1dHRvbi5oIiAzCiNkZWZpbmUgX19ISVBPUFVQQlVUVE9OX18gCiMgNDQgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElQb3B1cEJ1dHRvbi5oIiAzCmV4dGVybiAiQyIgewojIDY5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJUG9wdXBCdXR0b24uaCIgMwplbnVtIHsKICBr
Q29udHJvbFBvcHVwQnV0dG9uUHJvYyA9IDQwMCwKICBrQ29udHJvbFBvcHVwRml4ZWRXaWR0aFZh
cmlhbnQgPSAxIDw8IDAsCiAga0NvbnRyb2xQb3B1cFZhcmlhYmxlV2lkdGhWYXJpYW50ID0gMSA8
PCAxLAogIGtDb250cm9sUG9wdXBVc2VBZGRSZXNNZW51VmFyaWFudCA9IDEgPDwgMiwKICBrQ29u
dHJvbFBvcHVwVXNlV0ZvbnRWYXJpYW50ID0ga0NvbnRyb2xVc2VzT3duaW5nV2luZG93c0ZvbnRW
YXJpYW50Cn07CgoKZW51bSB7CiAga0NvbnRyb2xLaW5kUG9wdXBCdXR0b24gPSAncG9wYicKfTsK
CgojZGVmaW5lIGtISVBvcHVwQnV0dG9uQ2xhc3NJRCBDRlNUUigiY29tLmFwcGxlLkhJUG9wdXBC
dXR0b24iKQojIDE1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVBvcHVwQnV0dG9uLmgi
IDMKZW51bSB7CiAga0NvbnRyb2xQb3B1cEJ1dHRvbk1lbnVIYW5kbGVUYWcgPSAnbWhhbicsCiAg
a0NvbnRyb2xQb3B1cEJ1dHRvbk1lbnVSZWZUYWcgPSAnbWhhbicsCiAga0NvbnRyb2xQb3B1cEJ1
dHRvbk1lbnVJRFRhZyA9ICdtbmlkJwp9OwoKCmVudW0gewogIGtDb250cm9sUG9wdXBCdXR0b25F
eHRyYUhlaWdodFRhZyA9ICdleGh0JywKICBrQ29udHJvbFBvcHVwQnV0dG9uT3duZWRNZW51UmVm
VGFnID0gJ29tcmYnCn07CgoKZW51bSB7CiAga0NvbnRyb2xQb3B1cEJ1dHRvbkNoZWNrQ3VycmVu
dFRhZyA9ICdjaGNrJwp9OwojIDE4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVBvcHVw
QnV0dG9uLmgiIDMKZW51bSB7CiAga0NvbnRyb2xQb3B1cEFycm93RWFzdFByb2MgPSAxOTIsCiAg
a0NvbnRyb2xQb3B1cEFycm93V2VzdFByb2MgPSAxOTMsCiAga0NvbnRyb2xQb3B1cEFycm93Tm9y
dGhQcm9jID0gMTk0LAogIGtDb250cm9sUG9wdXBBcnJvd1NvdXRoUHJvYyA9IDE5NSwKICBrQ29u
dHJvbFBvcHVwQXJyb3dTbWFsbEVhc3RQcm9jID0gMTk2LAogIGtDb250cm9sUG9wdXBBcnJvd1Nt
YWxsV2VzdFByb2MgPSAxOTcsCiAga0NvbnRyb2xQb3B1cEFycm93U21hbGxOb3J0aFByb2MgPSAx
OTgsCiAga0NvbnRyb2xQb3B1cEFycm93U21hbGxTb3V0aFByb2MgPSAxOTkKfTsKCgplbnVtIHsK
ICBrQ29udHJvbFBvcHVwQXJyb3dPcmllbnRhdGlvbkVhc3QgPSAwLAogIGtDb250cm9sUG9wdXBB
cnJvd09yaWVudGF0aW9uV2VzdCA9IDEsCiAga0NvbnRyb2xQb3B1cEFycm93T3JpZW50YXRpb25O
b3J0aCA9IDIsCiAga0NvbnRyb2xQb3B1cEFycm93T3JpZW50YXRpb25Tb3V0aCA9IDMKfTsKCnR5
cGVkZWYgVUludDE2IENvbnRyb2xQb3B1cEFycm93T3JpZW50YXRpb247CgplbnVtIHsKICBrQ29u
dHJvbFBvcHVwQXJyb3dTaXplTm9ybWFsID0gMCwKICBrQ29udHJvbFBvcHVwQXJyb3dTaXplU21h
bGwgPSAxCn07Cgp0eXBlZGVmIFVJbnQxNiBDb250cm9sUG9wdXBBcnJvd1NpemU7CgplbnVtIHsK
ICBrQ29udHJvbEtpbmRQb3B1cEFycm93ID0gJ3BhcnInCn07CgoKI2RlZmluZSBrSElQb3B1cEFy
cm93Q2xhc3NJRCBDRlNUUigiY29tLmFwcGxlLmhpcG9wdXBhcnJvdyIpCiMgMjY5ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0hJUG9wdXBCdXR0b24uaCIgMwplbnVtIHsKICBwb3B1cEZpeGVk
V2lkdGggPSAxIDw8IDAsCiAgcG9wdXBWYXJpYWJsZVdpZHRoID0gMSA8PCAxLAogIHBvcHVwVXNl
QWRkUmVzTWVudSA9IDEgPDwgMiwKICBwb3B1cFVzZVdGb250ID0gMSA8PCAzCn07CgoKZW51bSB7
CiAgcG9wdXBUaXRsZUJvbGQgPSAxIDw8IDgsCiAgcG9wdXBUaXRsZUl0YWxpYyA9IDEgPDwgOSwK
ICBwb3B1cFRpdGxlVW5kZXJsaW5lID0gMSA8PCAxMCwKICBwb3B1cFRpdGxlT3V0bGluZSA9IDEg
PDwgMTEsCiAgcG9wdXBUaXRsZVNoYWRvdyA9IDEgPDwgMTIsCiAgcG9wdXBUaXRsZUNvbmRlbnNl
ID0gMSA8PCAxMywKICBwb3B1cFRpdGxlRXh0ZW5kID0gMSA8PCAxNCwKICBwb3B1cFRpdGxlTm9T
dHlsZSA9IDEgPDwgMTUKfTsKCgplbnVtIHsKICBwb3B1cFRpdGxlTGVmdEp1c3QgPSAweDAwMDAw
MDAwLAogIHBvcHVwVGl0bGVDZW50ZXJKdXN0ID0gMHgwMDAwMDAwMSwKICBwb3B1cFRpdGxlUmln
aHRKdXN0ID0gMHgwMDAwMDBGRgp9OwoKCgoKfQojIDE1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISVRvb2xib3guaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVByb2dyZXNzVmlld3MuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElQ
cm9ncmVzc1ZpZXdzLmgiIDMKI2RlZmluZSBfX0hJUFJPR1JFU1NWSUVXU19fIAojIDQ0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0hJUHJvZ3Jlc3NWaWV3cy5oIiAzCmV4dGVybiAiQyIgewoj
IDYyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJUHJvZ3Jlc3NWaWV3cy5oIiAzCmVudW0g
ewogIGtDb250cm9sUHJvZ3Jlc3NCYXJQcm9jID0gODAsCiAga0NvbnRyb2xSZWxldmFuY2VCYXJQ
cm9jID0gODEKfTsKCgplbnVtIHsKICBrQ29udHJvbEtpbmRQcm9ncmVzc0JhciA9ICdwcmdiJywK
ICBrQ29udHJvbEtpbmRSZWxldmFuY2VCYXIgPSAncmVsYicKfTsKCgojZGVmaW5lIGtISVByb2dy
ZXNzQmFyQ2xhc3NJRCBDRlNUUigiY29tLmFwcGxlLkhJUHJvZ3Jlc3NCYXIiKQojIDEwMiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVByb2dyZXNzVmlld3MuaCIgMwplbnVtIHsKICBrQ29u
dHJvbFByb2dyZXNzQmFySW5kZXRlcm1pbmF0ZVRhZyA9ICdpbmRlJywKICBrQ29udHJvbFByb2dy
ZXNzQmFyQW5pbWF0aW5nVGFnID0gJ2FuaW0nCn07CgoKCgoKCgplbnVtIHsKICBrQ29udHJvbENo
YXNpbmdBcnJvd3NQcm9jID0gMTEyCn07CgoKZW51bSB7CiAga0NvbnRyb2xLaW5kQ2hhc2luZ0Fy
cm93cyA9ICdjYXJyJwp9OwoKCiNkZWZpbmUga0hJQ2hhc2luZ0Fycm93c0NsYXNzSUQgQ0ZTVFIo
ImNvbS5hcHBsZS5ISUNoYXNpbmdBcnJvd3MiKQojIDE0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISVByb2dyZXNzVmlld3MuaCIgMwplbnVtIHsKICBrQ29udHJvbENoYXNpbmdBcnJvd3NB
bmltYXRpbmdUYWcgPSAnYW5pbScKfTsKCgoKCn0KIyAxNTggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElUb29sYm94LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SElSZWxldmFuY2VCYXIuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElS
ZWxldmFuY2VCYXIuaCIgMwojZGVmaW5lIF9fSElSRUxFVkFOQ0VCQVJfXyAKIyA0NCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9ISVJlbGV2YW5jZUJhci5oIiAzCmV4dGVybiAiQyIgewojIDU4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJUmVsZXZhbmNlQmFyLmgiIDMKI2RlZmluZSBr
SElSZWxldmFuY2VCYXJDbGFzc0lEIENGU1RSKCJjb20uYXBwbGUuSElSZWxldmFuY2VCYXIiKQoj
IDg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJUmVsZXZhbmNlQmFyLmgiIDMKfQojIDE2
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRvb2xib3guaCIgMiAzCgoKCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVNjcm9sbFZpZXcuaCIgMSAzCiMgMTcgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElTY3JvbGxWaWV3LmgiIDMKI2RlZmluZSBfX0hJU0NST0xMVklF
V19fIAojIDQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJU2Nyb2xsVmlldy5oIiAzCmV4
dGVybiAiQyIgewojIDg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJU2Nyb2xsVmlldy5o
IiAzCmVudW0gewogIGtDb250cm9sU2Nyb2xsQmFyUHJvYyA9IDM4NCwKICBrQ29udHJvbFNjcm9s
bEJhckxpdmVQcm9jID0gMzg2Cn07CgoKZW51bSB7CiAga0NvbnRyb2xLaW5kU2Nyb2xsQmFyID0g
J3NiYXInCn07CgoKI2RlZmluZSBrSElTY3JvbGxCYXJDbGFzc0lEIENGU1RSKCJjb20uYXBwbGUu
SElTY3JvbGxCYXIiKQojIDE2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVNjcm9sbFZp
ZXcuaCIgMwplbnVtIHsKICBrQ29udHJvbFNjcm9sbEJhclNob3dzQXJyb3dzVGFnID0gJ2Fycm8n
Cn07CiMgMTk5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJU2Nyb2xsVmlldy5oIiAzCiNk
ZWZpbmUga0hJU2Nyb2xsVmlld0NsYXNzSUQgQ0ZTVFIoImNvbS5hcHBsZS5ISVNjcm9sbFZpZXci
KQoKZW51bSB7CiAga0NvbnRyb2xLaW5kSElTY3JvbGxWaWV3ID0gJ3NjcmwnCn07CiMgMjEyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJU2Nyb2xsVmlldy5oIiAzCmVudW0gewogIGtFdmVu
dENsYXNzU2Nyb2xsYWJsZSA9ICdzY3JsJwp9OwoKCgoKZW51bSB7CiMgMjI4ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJU2Nyb2xsVmlldy5oIiAzCiAga0V2ZW50UGFyYW1JbWFnZVNpemUg
PSAnaW1zeicsCgoKCgoKCiAga0V2ZW50UGFyYW1WaWV3U2l6ZSA9ICd2d3N6JywKCgoKCgoKCiAg
a0V2ZW50UGFyYW1MaW5lU2l6ZSA9ICdsbnN6JywKIyAyNjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElTY3JvbGxWaWV3LmgiIDMKICBrRXZlbnRQYXJhbU9yaWdpbiA9ICdvcmduJwp9Owoj
IDMwMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVNjcm9sbFZpZXcuaCIgMwplbnVtIHsK
ICBrRXZlbnRTY3JvbGxhYmxlR2V0SW5mbyA9IDEKfTsKIyAzMjkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvSElTY3JvbGxWaWV3LmgiIDMKZW51bSB7CiAga0V2ZW50U2Nyb2xsYWJsZUluZm9D
aGFuZ2VkID0gMgp9OwojIDM3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVNjcm9sbFZp
ZXcuaCIgMwplbnVtIHsKICBrRXZlbnRTY3JvbGxhYmxlU2Nyb2xsVG8gPSAxMAp9OwoKCgoKCgpl
bnVtIHsKCgoKCiAga0hJU2Nyb2xsVmlld09wdGlvbnNWZXJ0U2Nyb2xsID0gKDEgPDwgMCksCgoK
CgogIGtISVNjcm9sbFZpZXdPcHRpb25zSG9yaXpTY3JvbGwgPSAoMSA8PCAxKSwKIyA0MDIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElTY3JvbGxWaWV3LmgiIDMKICBrSElTY3JvbGxWaWV3
T3B0aW9uc0FsbG93R3JvdyA9ICgxIDw8IDIpLAoKCgoKCgogIGtISVNjcm9sbFZpZXdPcHRpb25z
RmlsbEdyb3dBcmVhID0gKDEgPDwgMyksCgoKCgoKCiAga0hJU2Nyb2xsVmlld09wdGlvbnNEaXNh
YmxlU21vb3RoU2Nyb2xsaW5nID0gMSA8PCA0LAogIGtISVNjcm9sbFZpZXdWYWxpZE9wdGlvbnMg
PSAoa0hJU2Nyb2xsVmlld09wdGlvbnNWZXJ0U2Nyb2xsIHwga0hJU2Nyb2xsVmlld09wdGlvbnNI
b3JpelNjcm9sbCB8IGtISVNjcm9sbFZpZXdPcHRpb25zQWxsb3dHcm93IHwga0hJU2Nyb2xsVmll
d09wdGlvbnNGaWxsR3Jvd0FyZWEgfCBrSElTY3JvbGxWaWV3T3B0aW9uc0Rpc2FibGVTbW9vdGhT
Y3JvbGxpbmcpCn07CiMgNDI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJU2Nyb2xsVmll
dy5oIiAzCnR5cGVkZWYgVUludDMyIEhJU2Nyb2xsVmlld0FjdGlvbjsKZW51bSB7CgoKCgogIGtI
SVNjcm9sbFZpZXdTY3JvbGxUb1RvcCA9ICgxIDw8IDApLAoKCgoKICBrSElTY3JvbGxWaWV3U2Ny
b2xsVG9Cb3R0b20gPSAoMSA8PCAxKSwKCgoKCiAga0hJU2Nyb2xsVmlld1Njcm9sbFRvTGVmdCA9
ICgxIDw8IDIpLAoKCgoKICBrSElTY3JvbGxWaWV3U2Nyb2xsVG9SaWdodCA9ICgxIDw8IDMpLAoK
CgoKICBrSElTY3JvbGxWaWV3UGFnZVVwID0gKDEgPDwgNCksCgoKCgogIGtISVNjcm9sbFZpZXdQ
YWdlRG93biA9ICgxIDw8IDUpLAoKCgoKICBrSElTY3JvbGxWaWV3UGFnZUxlZnQgPSAoMSA8PCA2
KSwKCgoKCiAga0hJU2Nyb2xsVmlld1BhZ2VSaWdodCA9ICgxIDw8IDcpCn07CiMgNjU0ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0hJU2Nyb2xsVmlldy5oIiAzCn0KIyAxNjYgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYm94LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElTZWFyY2hGaWVsZC5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISVNlYXJjaEZpZWxkLmgiIDMKI2RlZmluZSBfX0hJU0VBUkNIRklFTERfXyAKIyA0
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVNlYXJjaEZpZWxkLmgiIDMKZXh0ZXJuICJD
IiB7CiMgNjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElTZWFyY2hGaWVsZC5oIiAzCiNk
ZWZpbmUga0hJU2VhcmNoRmllbGRDbGFzc0lEIENGU1RSKCJjb20uYXBwbGUuSElTZWFyY2hGaWVs
ZCIpCgplbnVtIHsKICBrQ29udHJvbEtpbmRISVNlYXJjaEZpZWxkID0gJ3NyZmQnCn07CgoKZW51
bSB7CiAga0NvbnRyb2xTZWFyY2hGaWVsZENhbmNlbFBhcnQgPSAzMCwKICBrQ29udHJvbFNlYXJj
aEZpZWxkTWVudVBhcnQgPSAzMQp9OwojIDEwMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVNlYXJjaEZpZWxkLmgiIDMKZW51bSB7CgoKCgogIGtISVNlYXJjaEZpZWxkTm9BdHRyaWJ1dGVz
ID0gMCwKCgoKCiAga0hJU2VhcmNoRmllbGRBdHRyaWJ1dGVzQ2FuY2VsID0gKDEgPDwgMCksCgoK
CgoKCgogIGtISVNlYXJjaEZpZWxkQXR0cmlidXRlc1NlYXJjaEljb24gPSAoMSA8PCAxKQp9OwoK
CmVudW0gewogIGtFdmVudENsYXNzU2VhcmNoRmllbGQgPSAnc3JmZCcKfTsKIyAxNDkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElTZWFyY2hGaWVsZC5oIiAzCmVudW0gewogIGtFdmVudFNl
YXJjaEZpZWxkQ2FuY2VsQ2xpY2tlZCA9IDEKfTsKIyAxODAgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElTZWFyY2hGaWVsZC5oIiAzCmVudW0gewogIGtFdmVudFNlYXJjaEZpZWxkU2VhcmNo
Q2xpY2tlZCA9IDIKfTsKIyA0NjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElTZWFyY2hG
aWVsZC5oIiAzCn0KIyAxNzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYm94Lmgi
IDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElTZWdtZW50ZWRWaWV3Lmgi
IDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJU2VnbWVudGVkVmlldy5oIiAz
CiNkZWZpbmUgX19ISVNFR01FTlRFRFZJRVdfXyAKIyA1OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISVNlZ21lbnRlZFZpZXcuaCIgMwpleHRlcm4gIkMiIHsKCgojZGVmaW5lIGtISVNlZ21l
bnRlZFZpZXdDbGFzc0lEIENGU1RSKCJjb20uYXBwbGUuSElTZWdtZW50ZWRWaWV3IikKCmVudW0g
ewogIGtISVNlZ21lbnRlZFZpZXdLaW5kID0gJ3NnbXQnCn07CiMgMTk0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0hJU2VnbWVudGVkVmlldy5oIiAzCmVudW0gewoKCgoKICBrSElTZWdtZW50
QmVoYXZpb3JNb21lbnRhcnkgPSAxLAoKCgoKCgoKICBrSElTZWdtZW50QmVoYXZpb3JSYWRpbyA9
IDIsCgoKCgoKCiAga0hJU2VnbWVudEJlaGF2aW9yVG9nZ2xlcyA9IDMsCgoKCgoKCiAga0hJU2Vn
bWVudEJlaGF2aW9yU3RpY2t5ID0gNAp9OwoKdHlwZWRlZiBVSW50MzIgSElTZWdtZW50QmVoYXZp
b3I7CiMgMzEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJU2VnbWVudGVkVmlldy5oIiAz
CmVudW0gewoKCgoKICBrSElTZWdtZW50Tm9BdHRyaWJ1dGVzID0gMCwKCgoKCgoKICBrSElTZWdt
ZW50U2VuZENtZFRvVXNlckZvY3VzID0gKDEgPDwgMCkKfTsKIyA5MTMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElTZWdtZW50ZWRWaWV3LmgiIDMKfQojIDE3NCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISVRvb2xib3guaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISVNlcGFyYXRvci5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVNlcGFyYXRvci5oIiAzCiNkZWZpbmUgX19ISVNFUEFSQVRPUl9fIAojIDQ0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJU2VwYXJhdG9yLmgiIDMKZXh0ZXJuICJDIiB7CiMgNjAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElTZXBhcmF0b3IuaCIgMwplbnVtIHsKICBrQ29udHJvbFNl
cGFyYXRvckxpbmVQcm9jID0gMTQ0Cn07CgoKZW51bSB7CiAga0NvbnRyb2xLaW5kU2VwYXJhdG9y
ID0gJ3NlcGEnCn07CgoKI2RlZmluZSBrSElWaXN1YWxTZXBhcmF0b3JDbGFzc0lEIENGU1RSKCJj
b20uYXBwbGUuSElWaXN1YWxTZXBhcmF0b3IiKQojIDk2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0hJU2VwYXJhdG9yLmgiIDMKfQojIDE3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVRvb2xib3guaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVNsaWRl
ci5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVNsaWRlci5oIiAzCiNk
ZWZpbmUgX19ISVNMSURFUl9fIAojIDQwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJU2xp
ZGVyLmgiIDMKZXh0ZXJuICJDIiB7CiMgNzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElT
bGlkZXIuaCIgMwplbnVtIHsKICBrQ29udHJvbFNsaWRlclByb2MgPSA0OCwKICBrQ29udHJvbFNs
aWRlckxpdmVGZWVkYmFjayA9ICgxIDw8IDApLAogIGtDb250cm9sU2xpZGVySGFzVGlja01hcmtz
ID0gKDEgPDwgMSksCiAga0NvbnRyb2xTbGlkZXJSZXZlcnNlRGlyZWN0aW9uID0gKDEgPDwgMiks
CiAga0NvbnRyb2xTbGlkZXJOb25EaXJlY3Rpb25hbCA9ICgxIDw8IDMpCn07CiMgOTQgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElTbGlkZXIuaCIgMwp0eXBlZGVmIFVJbnQxNiBDb250cm9s
U2xpZGVyT3JpZW50YXRpb247CmVudW0gewoKCgoKCgogIGtDb250cm9sU2xpZGVyUG9pbnRzRG93
bk9yUmlnaHQgPSAwLAoKCgoKCgogIGtDb250cm9sU2xpZGVyUG9pbnRzVXBPckxlZnQgPSAxLAoK
CgoKCiAga0NvbnRyb2xTbGlkZXJEb2VzTm90UG9pbnQgPSAyCn07CgoKZW51bSB7CiAga0NvbnRy
b2xLaW5kU2xpZGVyID0gJ3NsZHInCn07CgoKI2RlZmluZSBrSElTbGlkZXJDbGFzc0lEIENGU1RS
KCJjb20uYXBwbGUuSElTbGlkZXIiKQojIDMzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVNsaWRlci5oIiAzCn0KIyAxODIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYm94
LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUYWJiZWRWaWV3Lmgi
IDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGFiYmVkVmlldy5oIiAzCiNk
ZWZpbmUgX19ISVRBQkJFRFZJRVdfXyAKIyA0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVRhYmJlZFZpZXcuaCIgMwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA4
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRhYmJlZFZpZXcuaCIgMwplbnVtIHsKICBr
Q29udHJvbFRhYkxhcmdlUHJvYyA9IDEyOCwKICBrQ29udHJvbFRhYlNtYWxsUHJvYyA9IDEyOSwK
ICBrQ29udHJvbFRhYkxhcmdlTm9ydGhQcm9jID0gMTI4LAogIGtDb250cm9sVGFiU21hbGxOb3J0
aFByb2MgPSAxMjksCiAga0NvbnRyb2xUYWJMYXJnZVNvdXRoUHJvYyA9IDEzMCwKICBrQ29udHJv
bFRhYlNtYWxsU291dGhQcm9jID0gMTMxLAogIGtDb250cm9sVGFiTGFyZ2VFYXN0UHJvYyA9IDEz
MiwKICBrQ29udHJvbFRhYlNtYWxsRWFzdFByb2MgPSAxMzMsCiAga0NvbnRyb2xUYWJMYXJnZVdl
c3RQcm9jID0gMTM0LAogIGtDb250cm9sVGFiU21hbGxXZXN0UHJvYyA9IDEzNQp9OwoKCnR5cGVk
ZWYgVUludDE2IENvbnRyb2xUYWJEaXJlY3Rpb247CmVudW0gewogIGtDb250cm9sVGFiRGlyZWN0
aW9uTm9ydGggPSAwLAogIGtDb250cm9sVGFiRGlyZWN0aW9uU291dGggPSAxLAogIGtDb250cm9s
VGFiRGlyZWN0aW9uRWFzdCA9IDIsCiAga0NvbnRyb2xUYWJEaXJlY3Rpb25XZXN0ID0gMwp9OwoK
CnR5cGVkZWYgVUludDE2IENvbnRyb2xUYWJTaXplOwplbnVtIHsKICBrQ29udHJvbFRhYlNpemVM
YXJnZSA9IGtDb250cm9sU2l6ZU5vcm1hbCwKICBrQ29udHJvbFRhYlNpemVTbWFsbCA9IGtDb250
cm9sU2l6ZVNtYWxsLAogIGtDb250cm9sVGFiU2l6ZU1pbmkgPSBrQ29udHJvbFNpemVNaW5pCn07
CgoKCgoKc3RydWN0IENvbnRyb2xUYWJFbnRyeSB7CiAgQ29udHJvbEJ1dHRvbkNvbnRlbnRJbmZv
ICogaWNvbjsKICBDRlN0cmluZ1JlZiBuYW1lOwogIEJvb2xlYW4gZW5hYmxlZDsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgQ29udHJvbFRhYkVudHJ5IENvbnRyb2xUYWJFbnRyeTsKCmVudW0gewogIGtDb250
cm9sS2luZFRhYnMgPSAndGFicycKfTsKCgojZGVmaW5lIGtISVRhYmJlZFZpZXdDbGFzc0lEIENG
U1RSKCJjb20uYXBwbGUuSElUYWJiZWRWaWV3IikKIyAxNjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElUYWJiZWRWaWV3LmgiIDMKZW51bSB7CgoKCgoKICBrQ29udHJvbFRhYkNvbnRlbnRS
ZWN0VGFnID0gJ3JlY3QnLAoKCgoKCgogIGtDb250cm9sVGFiRW5hYmxlZEZsYWdUYWcgPSAnZW5h
YicsCgoKCgoKCiAga0NvbnRyb2xUYWJGb250U3R5bGVUYWcgPSBrQ29udHJvbEZvbnRTdHlsZVRh
ZywKCgoKCgoKCiAga0NvbnRyb2xUYWJJbmZvVGFnID0gJ3RhYmknLAojIDIwMiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISVRhYmJlZFZpZXcuaCIgMwogIGtDb250cm9sVGFiSW1hZ2VDb250
ZW50VGFnID0ga0NvbnRyb2xDb250ZW50VGFnCn07CgplbnVtIHsKICBrQ29udHJvbFRhYkluZm9W
ZXJzaW9uWmVybyA9IDAsCiAga0NvbnRyb2xUYWJJbmZvVmVyc2lvbk9uZSA9IDEKfTsKCnN0cnVj
dCBDb250cm9sVGFiSW5mb1JlYyB7CiAgU0ludDE2IHZlcnNpb247CiAgU0ludDE2IGljb25TdWl0
ZUlEOwogIFN0cjI1NSBuYW1lOwp9Owp0eXBlZGVmIHN0cnVjdCBDb250cm9sVGFiSW5mb1JlYyBD
b250cm9sVGFiSW5mb1JlYzsKc3RydWN0IENvbnRyb2xUYWJJbmZvUmVjVjEgewogIFNJbnQxNiB2
ZXJzaW9uOwogIFNJbnQxNiBpY29uU3VpdGVJRDsKICBDRlN0cmluZ1JlZiBuYW1lOwoKfTsKdHlw
ZWRlZiBzdHJ1Y3QgQ29udHJvbFRhYkluZm9SZWNWMSBDb250cm9sVGFiSW5mb1JlY1YxOwojIDI2
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRhYmJlZFZpZXcuaCIgMwplbnVtIHsKICBr
Q29udHJvbFRhYkxpc3RSZXNUeXBlID0gJ3RhYiMnCn07CgoKI3ByYWdtYSBwYWNrKHBvcCkKCgp9
CiMgMTg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJveC5oIiAyIDMKCgoKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGV4dFZpZXdzLmgiIDEgMwojIDE3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0hJVGV4dFZpZXdzLmgiIDMKI2RlZmluZSBfX0hJVEVYVFZJ
RVdTX18gCiMgNDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUZXh0Vmlld3MuaCIgMwpl
eHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA2NiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISVRleHRWaWV3cy5oIiAzCmVudW0gewogIGtDb250cm9sU3RhdGljVGV4dFBy
b2MgPSAyODgKfTsKCgplbnVtIHsKICBrQ29udHJvbEtpbmRTdGF0aWNUZXh0ID0gJ3N0eHQnCn07
CgoKI2RlZmluZSBrSElTdGF0aWNUZXh0Vmlld0NsYXNzSUQgQ0ZTVFIoImNvbS5hcHBsZS5ISVN0
YXRpY1RleHRWaWV3IikKIyAxMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUZXh0Vmll
d3MuaCIgMwplbnVtIHsKCgoKCgoKICBrQ29udHJvbFN0YXRpY1RleHRTdHlsZVRhZyA9IGtDb250
cm9sRm9udFN0eWxlVGFnLAojIDE0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRleHRW
aWV3cy5oIiAzCiAga0NvbnRyb2xTdGF0aWNUZXh0VGV4dFRhZyA9ICd0ZXh0JywKCgoKCgoKICBr
Q29udHJvbFN0YXRpY1RleHRUZXh0SGVpZ2h0VGFnID0gJ3RoZWknLAojIDE2NCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISVRleHRWaWV3cy5oIiAzCiAga0NvbnRyb2xTdGF0aWNUZXh0VHJ1
bmNUYWcgPSAndHJ1bicsCiMgMTc3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGV4dFZp
ZXdzLmgiIDMKICBrQ29udHJvbFN0YXRpY1RleHRDRlN0cmluZ1RhZyA9ICdjZnN0JywKIyAxODYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUZXh0Vmlld3MuaCIgMwogIGtDb250cm9sU3Rh
dGljVGV4dElzTXVsdGlsaW5lVGFnID0gJ3N0aW0nCn07CiMgMjEwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJVGV4dFZpZXdzLmgiIDMKZW51bSB7CiAga0V2ZW50Q2xhc3NUZXh0RmllbGQg
PSAndHhmZCcKfTsKCmVudW0gewogIGtFdmVudFBhcmFtVGV4dFNlbGVjdGlvbiA9ICd0eHNsJywK
ICBrRXZlbnRQYXJhbUNhbmRpZGF0ZVRleHQgPSAndHN0eCcsCiAga0V2ZW50UGFyYW1SZXBsYWNl
bWVudFRleHQgPSAndHJ0eCcsCiAga0V2ZW50UGFyYW1VbmNvbmZpcm1lZFJhbmdlID0gJ3R1bnIn
LAogIGtFdmVudFBhcmFtVW5jb25maXJtZWRUZXh0ID0gJ3R4dW4nCn07CiMgMjU0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL0hJVGV4dFZpZXdzLmgiIDMKZW51bSB7CiAga0V2ZW50VGV4dEFj
Y2VwdGVkID0gMQp9OwojIDM1MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRleHRWaWV3
cy5oIiAzCmVudW0gewogIGtFdmVudFRleHRTaG91bGRDaGFuZ2VJblJhbmdlID0gMgp9OwojIDQx
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRleHRWaWV3cy5oIiAzCmVudW0gewogIGtF
dmVudFRleHREaWRDaGFuZ2UgPSAzCn07CiMgNDU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJz
L0hJVGV4dFZpZXdzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtISVRleHRWaWV3Q2xh
c3NJRCA7CgplbnVtIHsKICBrQ29udHJvbEtpbmRISVRleHRWaWV3ID0gJ2hpdHgnCn07CiMgNjEz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGV4dFZpZXdzLmgiIDMKZW51bSB7CiAga0Nv
bnRyb2xFZGl0VW5pY29kZVRleHRQcm9jID0gOTEyLAogIGtDb250cm9sRWRpdFVuaWNvZGVUZXh0
UGFzc3dvcmRQcm9jID0gOTE0Cn07CgoKZW51bSB7CiAga0NvbnRyb2xLaW5kRWRpdFVuaWNvZGVU
ZXh0ID0gJ2V1dHgnCn07CgoKI2RlZmluZSBrSElUZXh0RmllbGRDbGFzc0lEIENGU1RSKCJjb20u
YXBwbGUuSElUZXh0RmllbGQiKQojIDY4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRl
eHRWaWV3cy5oIiAzCmVudW0gewogIGtDb250cm9sRWRpdFRleHRTdHlsZVRhZyA9IGtDb250cm9s
Rm9udFN0eWxlVGFnLAogIGtDb250cm9sRWRpdFRleHRUZXh0VGFnID0gJ3RleHQnLAogIGtDb250
cm9sRWRpdFRleHRLZXlGaWx0ZXJUYWcgPSBrQ29udHJvbEtleUZpbHRlclRhZywKICBrQ29udHJv
bEVkaXRUZXh0U2VsZWN0aW9uVGFnID0gJ3NlbGUnLAogIGtDb250cm9sRWRpdFRleHRQYXNzd29y
ZFRhZyA9ICdwYXNzJywKICBrQ29udHJvbEVkaXRUZXh0Q2hhckNvdW50ID0gJ2NocmMnCn07CgoK
ZW51bSB7CiAga0NvbnRyb2xFZGl0VGV4dEtleVNjcmlwdEJlaGF2aW9yVGFnID0gJ2tzY3InLAoK
ICBrQ29udHJvbEVkaXRUZXh0TG9ja2VkVGFnID0gJ2xvY2snLAogIGtDb250cm9sRWRpdFRleHRG
aXhlZFRleHRUYWcgPSAnZnR4dCcsCiAga0NvbnRyb2xFZGl0VGV4dFZhbGlkYXRpb25Qcm9jVGFn
ID0gJ3ZhbGknCn07CgoKCgoKCmVudW0gewoKCgoKCgogIGtDb250cm9sRWRpdFRleHRDRlN0cmlu
Z1RhZyA9ICdjZnN0JywKCgoKCgoKICBrQ29udHJvbEVkaXRUZXh0UGFzc3dvcmRDRlN0cmluZ1Rh
ZyA9ICdwd2NmJwp9OwoKZW51bSB7CiAga0NvbnRyb2xFZGl0VGV4dFNpbmdsZUxpbmVUYWcgPSAn
c2dsYycsCiAga0NvbnRyb2xFZGl0VGV4dEluc2VydFRleHRCdWZmZXJUYWcgPSAnaW50eCcsCiAg
a0NvbnRyb2xFZGl0VGV4dEluc2VydENGU3RyaW5nUmVmVGFnID0gJ2luY2YnLAogIGtDb250cm9s
RWRpdFVuaWNvZGVUZXh0UG9zdFVwZGF0ZVByb2NUYWcgPSAndXB1cCcsCiAga0NvbnRyb2xFZGl0
VGV4dFNwZWxsQ2hlY2tpbmdUYWcgPSAnc3BjaycsCiAga0NvbnRyb2xFZGl0VGV4dFNwZWxsQ2hl
Y2tBc1lvdVR5cGVUYWcgPSAnc2NhdCcKfTsKCgpzdHJ1Y3QgQ29udHJvbEVkaXRUZXh0U2VsZWN0
aW9uUmVjIHsKICBTSW50MTYgc2VsU3RhcnQ7CiAgU0ludDE2IHNlbEVuZDsKfTsKdHlwZWRlZiBz
dHJ1Y3QgQ29udHJvbEVkaXRUZXh0U2VsZWN0aW9uUmVjIENvbnRyb2xFZGl0VGV4dFNlbGVjdGlv
blJlYzsKdHlwZWRlZiBDb250cm9sRWRpdFRleHRTZWxlY3Rpb25SZWMgKiBDb250cm9sRWRpdFRl
eHRTZWxlY3Rpb25QdHI7CnR5cGVkZWYgdm9pZCAoICogQ29udHJvbEVkaXRUZXh0VmFsaWRhdGlv
blByb2NQdHIpKENvbnRyb2xSZWYgY29udHJvbCk7CgoKCgoKCnR5cGVkZWYgQm9vbGVhbiAoICog
RWRpdFVuaWNvZGVQb3N0VXBkYXRlUHJvY1B0cikoVW5pQ2hhckFycmF5SGFuZGxlIHVuaVRleHQs
IFVuaUNoYXJDb3VudCB1bmlUZXh0TGVuZ3RoLCBVbmlDaGFyQXJyYXlPZmZzZXQgaVN0YXJ0T2Zm
c2V0LCBVbmlDaGFyQXJyYXlPZmZzZXQgaUVuZE9mZnNldCwgdm9pZCAqcmVmY29uKTsKdHlwZWRl
ZiBDb250cm9sRWRpdFRleHRWYWxpZGF0aW9uUHJvY1B0ciBDb250cm9sRWRpdFRleHRWYWxpZGF0
aW9uVVBQOwp0eXBlZGVmIEVkaXRVbmljb2RlUG9zdFVwZGF0ZVByb2NQdHIgRWRpdFVuaWNvZGVQ
b3N0VXBkYXRlVVBQOwojIDc2MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRleHRWaWV3
cy5oIiAzCmV4dGVybiBDb250cm9sRWRpdFRleHRWYWxpZGF0aW9uVVBQCk5ld0NvbnRyb2xFZGl0
VGV4dFZhbGlkYXRpb25VUFAoQ29udHJvbEVkaXRUZXh0VmFsaWRhdGlvblByb2NQdHIgdXNlclJv
dXRpbmUpIDsKIyA3NzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUZXh0Vmlld3MuaCIg
MwpleHRlcm4gRWRpdFVuaWNvZGVQb3N0VXBkYXRlVVBQCk5ld0VkaXRVbmljb2RlUG9zdFVwZGF0
ZVVQUChFZGl0VW5pY29kZVBvc3RVcGRhdGVQcm9jUHRyIHVzZXJSb3V0aW5lKSA7CiMgNzgzICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGV4dFZpZXdzLmgiIDMKZXh0ZXJuIHZvaWQKRGlz
cG9zZUNvbnRyb2xFZGl0VGV4dFZhbGlkYXRpb25VUFAoQ29udHJvbEVkaXRUZXh0VmFsaWRhdGlv
blVQUCB1c2VyVVBQKSA7CiMgNzk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGV4dFZp
ZXdzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUVkaXRVbmljb2RlUG9zdFVwZGF0ZVVQUChFZGl0
VW5pY29kZVBvc3RVcGRhdGVVUFAgdXNlclVQUCkgOwojIDgwNSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9ISVRleHRWaWV3cy5oIiAzCmV4dGVybiB2b2lkCkludm9rZUNvbnRyb2xFZGl0VGV4
dFZhbGlkYXRpb25VUFAoCiAgQ29udHJvbFJlZiBjb250cm9sLAogIENvbnRyb2xFZGl0VGV4dFZh
bGlkYXRpb25VUFAgdXNlclVQUCkgOwojIDgxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9I
SVRleHRWaWV3cy5oIiAzCmV4dGVybiBCb29sZWFuCkludm9rZUVkaXRVbmljb2RlUG9zdFVwZGF0
ZVVQUCgKICBVbmlDaGFyQXJyYXlIYW5kbGUgdW5pVGV4dCwKICBVbmlDaGFyQ291bnQgdW5pVGV4
dExlbmd0aCwKICBVbmlDaGFyQXJyYXlPZmZzZXQgaVN0YXJ0T2Zmc2V0LAogIFVuaUNoYXJBcnJh
eU9mZnNldCBpRW5kT2Zmc2V0LAogIHZvaWQgKiByZWZjb24sCiAgRWRpdFVuaWNvZGVQb3N0VXBk
YXRlVVBQIHVzZXJVUFApIDsKCgoKICAgIGlubGluZSBDb250cm9sRWRpdFRleHRWYWxpZGF0aW9u
VVBQIE5ld0NvbnRyb2xFZGl0VGV4dFZhbGlkYXRpb25VUFAoQ29udHJvbEVkaXRUZXh0VmFsaWRh
dGlvblByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxp
bmUgRWRpdFVuaWNvZGVQb3N0VXBkYXRlVVBQIE5ld0VkaXRVbmljb2RlUG9zdFVwZGF0ZVVQUChF
ZGl0VW5pY29kZVBvc3RVcGRhdGVQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91
dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUNvbnRyb2xFZGl0VGV4dFZhbGlkYXRpb25V
UFAoQ29udHJvbEVkaXRUZXh0VmFsaWRhdGlvblVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNw
b3NlRWRpdFVuaWNvZGVQb3N0VXBkYXRlVVBQKEVkaXRVbmljb2RlUG9zdFVwZGF0ZVVQUCkgeyB9
CiAgICBpbmxpbmUgdm9pZCBJbnZva2VDb250cm9sRWRpdFRleHRWYWxpZGF0aW9uVVBQKENvbnRy
b2xSZWYgY29udHJvbCwgQ29udHJvbEVkaXRUZXh0VmFsaWRhdGlvblVQUCB1c2VyVVBQKSB7ICgq
dXNlclVQUCkoY29udHJvbCk7IH0KICAgIGlubGluZSBCb29sZWFuIEludm9rZUVkaXRVbmljb2Rl
UG9zdFVwZGF0ZVVQUChVbmlDaGFyQXJyYXlIYW5kbGUgdW5pVGV4dCwgVW5pQ2hhckNvdW50IHVu
aVRleHRMZW5ndGgsIFVuaUNoYXJBcnJheU9mZnNldCBpU3RhcnRPZmZzZXQsIFVuaUNoYXJBcnJh
eU9mZnNldCBpRW5kT2Zmc2V0LCB2b2lkICogcmVmY29uLCBFZGl0VW5pY29kZVBvc3RVcGRhdGVV
UFAgdXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKSh1bmlUZXh0LCB1bmlUZXh0TGVuZ3RoLCBp
U3RhcnRPZmZzZXQsIGlFbmRPZmZzZXQsIHJlZmNvbik7IH0KIyA4NDYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvSElUZXh0Vmlld3MuaCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAxOTAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29sYm94LmgiIDIgMwoKCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElXaW5kb3dWaWV3cy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISVdpbmRvd1ZpZXdzLmgiIDMKI2RlZmluZSBfX0hJV0lORE9XVklF
V1NfXyAKIyA0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVdpbmRvd1ZpZXdzLmgiIDMK
ZXh0ZXJuICJDIiB7CiMgODEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElXaW5kb3dWaWV3
cy5oIiAzCmV4dGVybiBjb25zdCBISVZpZXdJRCBrSElWaWV3V2luZG93Q29udGVudElEIDsKIyAx
MDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElXaW5kb3dWaWV3cy5oIiAzCmV4dGVybiBj
b25zdCBISVZpZXdJRCBrSElWaWV3V2luZG93Q2xvc2VCb3hJRCA7CiMgMTIzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0hJV2luZG93Vmlld3MuaCIgMwpleHRlcm4gY29uc3QgSElWaWV3SUQg
a0hJVmlld1dpbmRvd0NvbGxhcHNlQm94SUQgOwojIDE0NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9ISVdpbmRvd1ZpZXdzLmgiIDMKZXh0ZXJuIGNvbnN0IEhJVmlld0lEIGtISVZpZXdXaW5k
b3dab29tQm94SUQgOwojIDE2NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVdpbmRvd1Zp
ZXdzLmgiIDMKZXh0ZXJuIGNvbnN0IEhJVmlld0lEIGtISVZpZXdXaW5kb3dUb29sYmFyQnV0dG9u
SUQgOwojIDE4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVdpbmRvd1ZpZXdzLmgiIDMK
ZXh0ZXJuIGNvbnN0IEhJVmlld0lEIGtISVZpZXdXaW5kb3dUaXRsZUlEIDsKIyAyMDcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvSElXaW5kb3dWaWV3cy5oIiAzCmV4dGVybiBjb25zdCBISVZp
ZXdJRCBrSElWaWV3V2luZG93VG9vbGJhcklEIDsKIyAyMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSElXaW5kb3dWaWV3cy5oIiAzCmV4dGVybiBjb25zdCBISVZpZXdJRCBrSElWaWV3V2lu
ZG93R3Jvd0JveElEIDsKIyAyNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElXaW5kb3dW
aWV3cy5oIiAzCmVudW0gewoKCgoKCgogIGtISVdpbmRvd1RpdGxlQmFyUGFydCA9IDIsCgoKCgoK
CiAga0hJV2luZG93RHJhZ1BhcnQgPSAzLAojIDI2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9ISVdpbmRvd1ZpZXdzLmgiIDMKICBrSElXaW5kb3dUaXRsZVByb3h5SWNvblBhcnQgPSAyCn07
CiMgMjc2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJV2luZG93Vmlld3MuaCIgMwojZGVm
aW5lIGtISUdyb3dCb3hWaWV3Q2xhc3NJRCBDRlNUUigiY29tLmFwcGxlLmhpZ3Jvd2JveHZpZXci
KQoKZW51bSB7CiAga0NvbnRyb2xLaW5kSElHcm93Qm94VmlldyA9ICdncm93Jwp9OwojIDM1MCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVdpbmRvd1ZpZXdzLmgiIDMKfQojIDE5NCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRvb2xib3guaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5m
cmFtZXdvcmsvSGVhZGVycy9ISVRleHRMZW5ndGhGaWx0ZXIuaCIgMSAzCiMgMzggIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSElUZXh0TGVuZ3RoRmlsdGVyLmgiIDMKI2RlZmluZSBfX0hJVEVY
VExFTkdUSEZJTFRFUl9fIAojIDU0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVGV4dExl
bmd0aEZpbHRlci5oIiAzCiNkZWZpbmUga0hJVGV4dExlbmd0aEZpbHRlckNsYXNzSUQgQ0ZTVFIo
ImNvbS5hcHBsZS5hcHBvYmplY3RzLkhJVGV4dExlbmd0aEZpbHRlciIpCgoKCgoKZW51bSB7CgoK
CgoKICBrRXZlbnRQYXJhbVRleHRMZW5ndGggPSAnVExFTicKfTsKIyAxOTggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElUb29sYm94LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQ29udHJvbERlZmluaXRpb25zLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0NvbnRyb2xEZWZpbml0aW9ucy5oIiAzCiNkZWZpbmUgX19DT05UUk9MREVGSU5J
VElPTlNfXyAKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9Db250cm9sRGVmaW5pdGlv
bnMuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTGlzdHMuaCIgMSAzCiMgMTcg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTGlzdHMuaCIgMwojZGVmaW5lIF9fTElTVFNfXyAK
IyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9MaXN0cy5oIiAzCmV4dGVybiAiQyIgewoK
CiNwcmFnbWEgcGFjayhwdXNoLCAyKQojIDUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0xp
c3RzLmgiIDMKdHlwZWRlZiBQb2ludCBDZWxsOwp0eXBlZGVmIFJlY3QgTGlzdEJvdW5kczsKdHlw
ZWRlZiBjaGFyIERhdGFBcnJheVszMjAwMV07CnR5cGVkZWYgY2hhciAqIERhdGFQdHI7CnR5cGVk
ZWYgRGF0YVB0ciAqIERhdGFIYW5kbGU7CnR5cGVkZWYgc2hvcnQgKCAqIExpc3RTZWFyY2hQcm9j
UHRyKShQdHIgYVB0ciwgUHRyIGJQdHIsIHNob3J0IGFMZW4sIHNob3J0IGJMZW4pOwp0eXBlZGVm
IEJvb2xlYW4gKCAqIExpc3RDbGlja0xvb3BQcm9jUHRyKSh2b2lkKTsKdHlwZWRlZiBMaXN0U2Vh
cmNoUHJvY1B0ciBMaXN0U2VhcmNoVVBQOwp0eXBlZGVmIExpc3RDbGlja0xvb3BQcm9jUHRyIExp
c3RDbGlja0xvb3BVUFA7CnN0cnVjdCBMaXN0UmVjIHsKICBSZWN0IHJWaWV3OwogIEdyYWZQdHIg
cG9ydDsKICBQb2ludCBpbmRlbnQ7CiAgUG9pbnQgY2VsbFNpemU7CiAgTGlzdEJvdW5kcyB2aXNp
YmxlOwogIENvbnRyb2xSZWYgdlNjcm9sbDsKICBDb250cm9sUmVmIGhTY3JvbGw7CiAgU0ludDgg
c2VsRmxhZ3M7CiAgQm9vbGVhbiBsQWN0aXZlOwogIFNJbnQ4IGxSZXNlcnZlZDsKICBTSW50OCBs
aXN0RmxhZ3M7CiAgbG9uZyBjbGlrVGltZTsKICBQb2ludCBjbGlrTG9jOwogIFBvaW50IG1vdXNl
TG9jOwogIExpc3RDbGlja0xvb3BVUFAgbENsaWNrTG9vcDsKICBDZWxsIGxhc3RDbGljazsKICBs
b25nIHJlZkNvbjsKICBIYW5kbGUgbGlzdERlZlByb2M7CiAgSGFuZGxlIHVzZXJIYW5kbGU7CiAg
TGlzdEJvdW5kcyBkYXRhQm91bmRzOwogIERhdGFIYW5kbGUgY2VsbHM7CiAgc2hvcnQgbWF4SW5k
ZXg7CiAgc2hvcnQgY2VsbEFycmF5WzFdOwp9Owp0eXBlZGVmIHN0cnVjdCBMaXN0UmVjIExpc3RS
ZWM7CnR5cGVkZWYgTGlzdFJlYyAqIExpc3RQdHI7CnR5cGVkZWYgTGlzdFB0ciAqIExpc3RIYW5k
bGU7Cgp0eXBlZGVmIExpc3RIYW5kbGUgTGlzdFJlZjsKCgplbnVtIHsKCiAgbERyYXdpbmdNb2Rl
T2ZmQml0ID0gMywKICBsRG9WQXV0b3Njcm9sbEJpdCA9IDEsCiAgbERvSEF1dG9zY3JvbGxCaXQg
PSAwCn07CgplbnVtIHsKCiAgbERyYXdpbmdNb2RlT2ZmID0gOCwKICBsRG9WQXV0b3Njcm9sbCA9
IDIsCiAgbERvSEF1dG9zY3JvbGwgPSAxCn07CgoKZW51bSB7CgogIGxPbmx5T25lQml0ID0gNywK
ICBsRXh0ZW5kRHJhZ0JpdCA9IDYsCiAgbE5vRGlzam9pbnRCaXQgPSA1LAogIGxOb0V4dGVuZEJp
dCA9IDQsCiAgbE5vUmVjdEJpdCA9IDMsCiAgbFVzZVNlbnNlQml0ID0gMiwKICBsTm9OaWxIaWxp
dGVCaXQgPSAxCn07CgoKZW51bSB7CgogIGxPbmx5T25lID0gLTEyOCwKICBsRXh0ZW5kRHJhZyA9
IDY0LAogIGxOb0Rpc2pvaW50ID0gMzIsCiAgbE5vRXh0ZW5kID0gMTYsCiAgbE5vUmVjdCA9IDgs
CiAgbFVzZVNlbnNlID0gNCwKICBsTm9OaWxIaWxpdGUgPSAyCn07CgoKZW51bSB7CgogIGxJbml0
TXNnID0gMCwKICBsRHJhd01zZyA9IDEsCiAgbEhpbGl0ZU1zZyA9IDIsCiAgbENsb3NlTXNnID0g
Mwp9OwoKCgoKCnN0cnVjdCBTdGFuZGFyZEljb25MaXN0Q2VsbERhdGFSZWMgewogIEhhbmRsZSBp
Y29uSGFuZGxlOwogIHNob3J0IGZvbnQ7CiAgc2hvcnQgZmFjZTsKICBzaG9ydCBzaXplOwogIFN0
cjI1NSBuYW1lOwp9Owp0eXBlZGVmIHN0cnVjdCBTdGFuZGFyZEljb25MaXN0Q2VsbERhdGFSZWMg
U3RhbmRhcmRJY29uTGlzdENlbGxEYXRhUmVjOwp0eXBlZGVmIFN0YW5kYXJkSWNvbkxpc3RDZWxs
RGF0YVJlYyAqIFN0YW5kYXJkSWNvbkxpc3RDZWxsRGF0YVB0cjsKCgp0eXBlZGVmIHZvaWQgKCAq
IExpc3REZWZQcm9jUHRyKShzaG9ydCBsTWVzc2FnZSwgQm9vbGVhbiBsU2VsZWN0LCBSZWN0ICps
UmVjdCwgQ2VsbCBsQ2VsbCwgc2hvcnQgbERhdGFPZmZzZXQsIHNob3J0IGxEYXRhTGVuLCBMaXN0
SGFuZGxlIGxIYW5kbGUpOwp0eXBlZGVmIExpc3REZWZQcm9jUHRyIExpc3REZWZVUFA7CiMgMTYz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0xpc3RzLmgiIDMKZXh0ZXJuIExpc3RTZWFyY2hV
UFAKTmV3TGlzdFNlYXJjaFVQUChMaXN0U2VhcmNoUHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDE3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9M
aXN0cy5oIiAzCmV4dGVybiBMaXN0Q2xpY2tMb29wVVBQCk5ld0xpc3RDbGlja0xvb3BVUFAoTGlz
dENsaWNrTG9vcFByb2NQdHIgdXNlclJvdXRpbmUpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQp
KTsKIyAxODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTGlzdHMuaCIgMwpleHRlcm4gTGlz
dERlZlVQUApOZXdMaXN0RGVmVVBQKExpc3REZWZQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJp
YnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTk2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0xp
c3RzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUxpc3RTZWFyY2hVUFAoTGlzdFNlYXJjaFVQUCB1
c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjA3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL0xpc3RzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUxpc3RDbGlja0xvb3BV
UFAoTGlzdENsaWNrTG9vcFVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7
CiMgMjE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0xpc3RzLmgiIDMKZXh0ZXJuIHZvaWQK
RGlzcG9zZUxpc3REZWZVUFAoTGlzdERlZlVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CiMgMjI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0xpc3RzLmgiIDMKZXh0
ZXJuIHNob3J0Ckludm9rZUxpc3RTZWFyY2hVUFAoCiAgUHRyIGFQdHIsCiAgUHRyIGJQdHIsCiAg
c2hvcnQgYUxlbiwKICBzaG9ydCBiTGVuLAogIExpc3RTZWFyY2hVUFAgdXNlclVQUCkgX19hdHRy
aWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDI0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9M
aXN0cy5oIiAzCmV4dGVybiBCb29sZWFuCkludm9rZUxpc3RDbGlja0xvb3BVUFAoTGlzdENsaWNr
TG9vcFVQUCB1c2VyVVBQKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjU2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0xpc3RzLmgiIDMKZXh0ZXJuIHZvaWQKSW52b2tlTGlzdERl
ZlVQUCgKICBzaG9ydCBsTWVzc2FnZSwKICBCb29sZWFuIGxTZWxlY3QsCiAgUmVjdCAqIGxSZWN0
LAogIENlbGwgbENlbGwsCiAgc2hvcnQgbERhdGFPZmZzZXQsCiAgc2hvcnQgbERhdGFMZW4sCiAg
TGlzdEhhbmRsZSBsSGFuZGxlLAogIExpc3REZWZVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygo
ZGVwcmVjYXRlZCkpOwoKCgogICAgaW5saW5lIExpc3RTZWFyY2hVUFAgTmV3TGlzdFNlYXJjaFVQ
UChMaXN0U2VhcmNoUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0K
ICAgIGlubGluZSBMaXN0Q2xpY2tMb29wVVBQIE5ld0xpc3RDbGlja0xvb3BVUFAoTGlzdENsaWNr
TG9vcFByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxp
bmUgTGlzdERlZlVQUCBOZXdMaXN0RGVmVVBQKExpc3REZWZQcm9jUHRyIHVzZXJSb3V0aW5lKSB7
IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5lIHZvaWQgRGlzcG9zZUxpc3RTZWFyY2hV
UFAoTGlzdFNlYXJjaFVQUCkgeyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlTGlzdENsaWNrTG9v
cFVQUChMaXN0Q2xpY2tMb29wVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VMaXN0RGVm
VVBQKExpc3REZWZVUFApIHsgfQogICAgaW5saW5lIHNob3J0IEludm9rZUxpc3RTZWFyY2hVUFAo
UHRyIGFQdHIsIFB0ciBiUHRyLCBzaG9ydCBhTGVuLCBzaG9ydCBiTGVuLCBMaXN0U2VhcmNoVVBQ
IHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkoYVB0ciwgYlB0ciwgYUxlbiwgYkxlbik7IH0K
ICAgIGlubGluZSBCb29sZWFuIEludm9rZUxpc3RDbGlja0xvb3BVUFAoTGlzdENsaWNrTG9vcFVQ
UCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKCk7IH0KICAgIGlubGluZSB2b2lkIEludm9r
ZUxpc3REZWZVUFAoc2hvcnQgbE1lc3NhZ2UsIEJvb2xlYW4gbFNlbGVjdCwgUmVjdCAqIGxSZWN0
LCBDZWxsIGxDZWxsLCBzaG9ydCBsRGF0YU9mZnNldCwgc2hvcnQgbERhdGFMZW4sIExpc3RIYW5k
bGUgbEhhbmRsZSwgTGlzdERlZlVQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCkobE1lc3NhZ2UsIGxT
ZWxlY3QsIGxSZWN0LCBsQ2VsbCwgbERhdGFPZmZzZXQsIGxEYXRhTGVuLCBsSGFuZGxlKTsgfQoj
IDI5MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9MaXN0cy5oIiAzCmVudW0gewogIGtMaXN0
RGVmUHJvY1B0ciA9IDAsCiAga0xpc3REZWZVc2VyUHJvY1R5cGUgPSBrTGlzdERlZlByb2NQdHIs
CiAga0xpc3REZWZTdGFuZGFyZFRleHRUeXBlID0gMSwKICBrTGlzdERlZlN0YW5kYXJkSWNvblR5
cGUgPSAyCn07Cgp0eXBlZGVmIFVJbnQzMiBMaXN0RGVmVHlwZTsKc3RydWN0IExpc3REZWZTcGVj
IHsKICBMaXN0RGVmVHlwZSBkZWZUeXBlOwogIHVuaW9uIHsKICAgIExpc3REZWZVUFAgdXNlclBy
b2M7CiAgfSB1Owp9Owp0eXBlZGVmIHN0cnVjdCBMaXN0RGVmU3BlYyBMaXN0RGVmU3BlYzsKdHlw
ZWRlZiBMaXN0RGVmU3BlYyAqIExpc3REZWZTcGVjUHRyOwojIDEzMjcgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvTGlzdHMuaCIgMwojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAzNyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9Db250cm9sRGVmaW5pdGlvbnMuaCIgMiAzCiMgNTYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbERlZmluaXRpb25zLmgiIDMKZXh0ZXJuICJDIiB7
CiMgNzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbERlZmluaXRpb25zLmgiIDMK
ZW51bSB7CiAgcHVzaEJ1dFByb2MgPSAwLAogIGNoZWNrQm94UHJvYyA9IDEsCiAgcmFkaW9CdXRQ
cm9jID0gMiwKICBzY3JvbGxCYXJQcm9jID0gMTYsCiAgcG9wdXBNZW51UHJvYyA9IDEwMDgKfTsK
CgoKCmVudW0gewogIGtDb250cm9sTGFiZWxQYXJ0ID0gMSwKICBrQ29udHJvbE1lbnVQYXJ0ID0g
MiwKICBrQ29udHJvbFRyaWFuZ2xlUGFydCA9IDQsCiAga0NvbnRyb2xFZGl0VGV4dFBhcnQgPSA1
LAogIGtDb250cm9sUGljdHVyZVBhcnQgPSA2LAogIGtDb250cm9sSWNvblBhcnQgPSA3LAogIGtD
b250cm9sQ2xvY2tQYXJ0ID0gOCwKICBrQ29udHJvbExpc3RCb3hQYXJ0ID0gMjQsCiAga0NvbnRy
b2xMaXN0Qm94RG91YmxlQ2xpY2tQYXJ0ID0gMjUsCiAga0NvbnRyb2xJbWFnZVdlbGxQYXJ0ID0g
MjYsCiAga0NvbnRyb2xSYWRpb0dyb3VwUGFydCA9IDI3LAogIGtDb250cm9sQnV0dG9uUGFydCA9
IDEwLAogIGtDb250cm9sQ2hlY2tCb3hQYXJ0ID0gMTEsCiAga0NvbnRyb2xSYWRpb0J1dHRvblBh
cnQgPSAxMSwKICBrQ29udHJvbFVwQnV0dG9uUGFydCA9IGtBcHBlYXJhbmNlUGFydFVwQnV0dG9u
LAogIGtDb250cm9sRG93bkJ1dHRvblBhcnQgPSBrQXBwZWFyYW5jZVBhcnREb3duQnV0dG9uLAog
IGtDb250cm9sUGFnZVVwUGFydCA9IGtBcHBlYXJhbmNlUGFydFBhZ2VVcEFyZWEsCiAga0NvbnRy
b2xQYWdlRG93blBhcnQgPSBrQXBwZWFyYW5jZVBhcnRQYWdlRG93bkFyZWEsCiAga0NvbnRyb2xD
bG9ja0hvdXJEYXlQYXJ0ID0gOSwKICBrQ29udHJvbENsb2NrTWludXRlTW9udGhQYXJ0ID0gMTAs
CiAga0NvbnRyb2xDbG9ja1NlY29uZFllYXJQYXJ0ID0gMTEsCiAga0NvbnRyb2xDbG9ja0FNUE1Q
YXJ0ID0gMTIsCiAga0NvbnRyb2xEYXRhQnJvd3NlclBhcnQgPSAyNCwKICBrQ29udHJvbERhdGFC
cm93c2VyRHJhZ2dlZFBhcnQgPSAyNQp9OwojIDEyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9Db250cm9sRGVmaW5pdGlvbnMuaCIgMwplbnVtIHsKICBrQ29udHJvbEVkaXRUZXh0UHJvYyA9
IDI3MiwKICBrQ29udHJvbEVkaXRUZXh0UGFzc3dvcmRQcm9jID0gMjc0Cn07CgoKZW51bSB7CiAg
a0NvbnRyb2xFZGl0VGV4dElubGluZUlucHV0UHJvYyA9IDI3Ngp9OwoKCmVudW0gewogIGtDb250
cm9sS2luZEVkaXRUZXh0ID0gJ2V0eHQnCn07CiMgMjEyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0NvbnRyb2xEZWZpbml0aW9ucy5oIiAzCmVudW0gewogIGtDb250cm9sRWRpdFRleHRURUhh
bmRsZVRhZyA9ICd0aGFuJywKICBrQ29udHJvbEVkaXRUZXh0SW5saW5lUHJlVXBkYXRlUHJvY1Rh
ZyA9ICdwcnVwJywKICBrQ29udHJvbEVkaXRUZXh0SW5saW5lUG9zdFVwZGF0ZVByb2NUYWcgPSAn
cG91cCcKfTsKIyAyNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbERlZmluaXRp
b25zLmgiIDMKZW51bSB7CiAga0NvbnRyb2xQaWN0dXJlUHJvYyA9IDMwNCwKICBrQ29udHJvbFBp
Y3R1cmVOb1RyYWNrUHJvYyA9IDMwNQp9OwoKCmVudW0gewogIGtDb250cm9sS2luZFBpY3R1cmUg
PSAncGljdCcKfTsKCgojZGVmaW5lIGtISVBpY3R1cmVWaWV3Q2xhc3NJRCBDRlNUUigiY29tLmFw
cGxlLkhJUGljdHVyZVZpZXciKQojIDI5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9Db250
cm9sRGVmaW5pdGlvbnMuaCIgMwplbnVtIHsKICBrQ29udHJvbFBpY3R1cmVIYW5kbGVUYWcgPSAn
cGljaCcKfTsKIyAzMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbERlZmluaXRp
b25zLmgiIDMKZW51bSB7CiAga0NvbnRyb2xMaXN0Qm94UHJvYyA9IDM1MiwKICBrQ29udHJvbExp
c3RCb3hBdXRvU2l6ZVByb2MgPSAzNTMKfTsKCgplbnVtIHsKICBrQ29udHJvbEtpbmRMaXN0Qm94
ID0gJ2xib3gnCn07CiMgMzU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0NvbnRyb2xEZWZp
bml0aW9ucy5oIiAzCmVudW0gewogIGtDb250cm9sTGlzdEJveExpc3RIYW5kbGVUYWcgPSAnbGhh
bicsCiAga0NvbnRyb2xMaXN0Qm94S2V5RmlsdGVyVGFnID0ga0NvbnRyb2xLZXlGaWx0ZXJUYWcs
CiAga0NvbnRyb2xMaXN0Qm94Rm9udFN0eWxlVGFnID0ga0NvbnRyb2xGb250U3R5bGVUYWcKfTsK
CgplbnVtIHsKICBrQ29udHJvbExpc3RCb3hEb3VibGVDbGlja1RhZyA9ICdkYmxjJywKICBrQ29u
dHJvbExpc3RCb3hMREVGVGFnID0gJ2xkZWYnCn07CgoKZW51bSB7CiAga0NvbnRyb2xMaXN0RGVz
Y1Jlc1R5cGUgPSAnbGRlcycKfTsKIyAzOTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29u
dHJvbERlZmluaXRpb25zLmgiIDMKZW51bSB7CiAga0NvbnRyb2xTY3JvbGxUZXh0Qm94UHJvYyA9
IDQzMiwKICBrQ29udHJvbFNjcm9sbFRleHRCb3hBdXRvU2Nyb2xsUHJvYyA9IDQzMwp9OwoKCmVu
dW0gewogIGtDb250cm9sS2luZFNjcm9sbGluZ1RleHRCb3ggPSAnc3RieCcKfTsKIyA0MjcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRv
b2xib3guZnJhbWV3b3JrL0hlYWRlcnMvQ29udHJvbERlZmluaXRpb25zLmgiIDMKZW51bSB7CiAg
a0NvbnRyb2xTY3JvbGxUZXh0Qm94RGVsYXlCZWZvcmVBdXRvU2Nyb2xsVGFnID0gJ3N0ZGwnLAog
IGtDb250cm9sU2Nyb2xsVGV4dEJveERlbGF5QmV0d2VlbkF1dG9TY3JvbGxUYWcgPSAnc2NkbCcs
CiAga0NvbnRyb2xTY3JvbGxUZXh0Qm94QXV0b1Njcm9sbEFtb3VudFRhZyA9ICdzYW10JywKICBr
Q29udHJvbFNjcm9sbFRleHRCb3hDb250ZW50c1RhZyA9ICd0cmVzJywKICBrQ29udHJvbFNjcm9s
bFRleHRCb3hBbmltYXRpbmdUYWcgPSAnYW5pbScKfTsKIyA0NjggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvQ29udHJvbERlZmluaXRpb25zLmgiIDMKfQojIDIwMiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISVRvb2xib3guaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9UcmFuc2xhdGlvbkV4dGVuc2lvbnMuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3Jr
L0hlYWRlcnMvVHJhbnNsYXRpb25FeHRlbnNpb25zLmgiIDMKI2RlZmluZSBfX1RSQU5TTEFUSU9O
RVhURU5TSU9OU19fIAojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RyYW5zbGF0aW9u
RXh0ZW5zaW9ucy5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQoKCgoK
CgplbnVtIHsKICBrU3VwcG9ydHNGaWxlVHJhbnNsYXRpb24gPSAxLAogIGtTdXBwb3J0c1NjcmFw
VHJhbnNsYXRpb24gPSAyLAogIGtUcmFuc2xhdG9yQ2FuR2VuZXJhdGVGaWxlbmFtZSA9IDQKfTsK
CgoKdHlwZWRlZiBPU1R5cGUgRmlsZVR5cGU7CnR5cGVkZWYgUmVzVHlwZSBTY3JhcFR5cGU7Cgp0
eXBlZGVmIFVJbnQzMiBUcmFuc2xhdGlvbkF0dHJpYnV0ZXM7CmVudW0gewogIHRhRHN0RG9jTmVl
ZHNSZXNvdXJjZUZvcmsgPSAxLAogIHRhRHN0SXNBcHBUcmFuc2xhdGlvbiA9IDIKfTsKCgpzdHJ1
Y3QgRmlsZVR5cGVTcGVjIHsKICBGaWxlVHlwZSBmb3JtYXQ7CiAgbG9uZyBoaW50OwogIFRyYW5z
bGF0aW9uQXR0cmlidXRlcyBmbGFnczsKICBPU1R5cGUgY2F0SW5mb1R5cGU7CiAgT1NUeXBlIGNh
dEluZm9DcmVhdG9yOwp9Owp0eXBlZGVmIHN0cnVjdCBGaWxlVHlwZVNwZWMgRmlsZVR5cGVTcGVj
OwpzdHJ1Y3QgRmlsZVRyYW5zbGF0aW9uTGlzdCB7CiAgdW5zaWduZWQgbG9uZyBtb2REYXRlOwog
IHVuc2lnbmVkIGxvbmcgZ3JvdXBDb3VudDsKIyA3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9UcmFuc2xhdGlvbkV4dGVuc2lvbnMuaCIgMwp9Owp0eXBlZGVmIHN0cnVjdCBGaWxlVHJhbnNs
YXRpb25MaXN0IEZpbGVUcmFuc2xhdGlvbkxpc3Q7CnR5cGVkZWYgRmlsZVRyYW5zbGF0aW9uTGlz
dCAqIEZpbGVUcmFuc2xhdGlvbkxpc3RQdHI7CnR5cGVkZWYgRmlsZVRyYW5zbGF0aW9uTGlzdFB0
ciAqIEZpbGVUcmFuc2xhdGlvbkxpc3RIYW5kbGU7CgpzdHJ1Y3QgU2NyYXBUeXBlU3BlYyB7CiAg
U2NyYXBUeXBlIGZvcm1hdDsKICBsb25nIGhpbnQ7Cn07CnR5cGVkZWYgc3RydWN0IFNjcmFwVHlw
ZVNwZWMgU2NyYXBUeXBlU3BlYzsKc3RydWN0IFNjcmFwVHJhbnNsYXRpb25MaXN0IHsKICB1bnNp
Z25lZCBsb25nIG1vZERhdGU7CiAgdW5zaWduZWQgbG9uZyBncm91cENvdW50OwojIDEwMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9UcmFuc2xhdGlvbkV4dGVuc2lvbnMuaCIgMwp9Owp0eXBl
ZGVmIHN0cnVjdCBTY3JhcFRyYW5zbGF0aW9uTGlzdCBTY3JhcFRyYW5zbGF0aW9uTGlzdDsKdHlw
ZWRlZiBTY3JhcFRyYW5zbGF0aW9uTGlzdCAqIFNjcmFwVHJhbnNsYXRpb25MaXN0UHRyOwp0eXBl
ZGVmIFNjcmFwVHJhbnNsYXRpb25MaXN0UHRyICogU2NyYXBUcmFuc2xhdGlvbkxpc3RIYW5kbGU7
CgoKCgoKdHlwZWRlZiBsb25nIFRyYW5zbGF0aW9uUmVmTnVtOwojIDE5MCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9UcmFuc2xhdGlvbkV4dGVuc2lvbnMuaCIgMwplbnVtIHsKICBrVHJhbnNs
YXRlR2V0RmlsZVRyYW5zbGF0aW9uTGlzdCA9IDAsCiAga1RyYW5zbGF0ZUlkZW50aWZ5RmlsZSA9
IDEsCiAga1RyYW5zbGF0ZVRyYW5zbGF0ZUZpbGUgPSAyLAogIGtUcmFuc2xhdGVHZXRUcmFuc2xh
dGVkRmlsZW5hbWUgPSAzLAogIGtUcmFuc2xhdGVHZXRTY3JhcFRyYW5zbGF0aW9uTGlzdCA9IDEw
LAogIGtUcmFuc2xhdGVJZGVudGlmeVNjcmFwID0gMTEsCiAga1RyYW5zbGF0ZVRyYW5zbGF0ZVNj
cmFwID0gMTIsCiAga1RyYW5zbGF0ZUdldFNjcmFwVHJhbnNsYXRpb25MaXN0Q29uc2lkZXJpbmdE
YXRhID0gMTMKfTsKCgoKCgoKCnR5cGVkZWYgQ29tcG9uZW50UmVzdWx0ICggKiBEb0dldEZpbGVU
cmFuc2xhdGlvbkxpc3RQcm9jUHRyKShDb21wb25lbnRJbnN0YW5jZSBzZWxmLCBGaWxlVHJhbnNs
YXRpb25MaXN0SGFuZGxlIHRyYW5zbGF0aW9uTGlzdCk7CnR5cGVkZWYgQ29tcG9uZW50UmVzdWx0
ICggKiBEb0lkZW50aWZ5RmlsZVByb2NQdHIpKENvbXBvbmVudEluc3RhbmNlIHNlbGYsIGNvbnN0
IEZTU3BlYyAqdGhlRG9jdW1lbnQsIEZpbGVUeXBlICpkb2NUeXBlKTsKdHlwZWRlZiBDb21wb25l
bnRSZXN1bHQgKCAqIERvVHJhbnNsYXRlRmlsZVByb2NQdHIpKENvbXBvbmVudEluc3RhbmNlIHNl
bGYsIFRyYW5zbGF0aW9uUmVmTnVtIHJlZk51bSwgY29uc3QgRlNTcGVjICpzb3VyY2VEb2N1bWVu
dCwgRmlsZVR5cGUgc3JjVHlwZSwgbG9uZyBzcmNUeXBlSGludCwgY29uc3QgRlNTcGVjICpkc3RE
b2MsIEZpbGVUeXBlIGRzdFR5cGUsIGxvbmcgZHN0VHlwZUhpbnQpOwp0eXBlZGVmIENvbXBvbmVu
dFJlc3VsdCAoICogRG9HZXRUcmFuc2xhdGVkRmlsZW5hbWVQcm9jUHRyKShDb21wb25lbnRJbnN0
YW5jZSBzZWxmLCBGaWxlVHlwZSBkc3RUeXBlLCBsb25nIGRzdFR5cGVIaW50LCBGU1NwZWMgKnRo
ZURvY3VtZW50KTsKdHlwZWRlZiBDb21wb25lbnRSZXN1bHQgKCAqIERvR2V0U2NyYXBUcmFuc2xh
dGlvbkxpc3RQcm9jUHRyKShDb21wb25lbnRJbnN0YW5jZSBzZWxmLCBTY3JhcFRyYW5zbGF0aW9u
TGlzdEhhbmRsZSBsaXN0KTsKdHlwZWRlZiBDb21wb25lbnRSZXN1bHQgKCAqIERvSWRlbnRpZnlT
Y3JhcFByb2NQdHIpKENvbXBvbmVudEluc3RhbmNlIHNlbGYsIGNvbnN0IHZvaWQgKmRhdGFQdHIs
IFNpemUgZGF0YUxlbmd0aCwgU2NyYXBUeXBlICpkYXRhRm9ybWF0KTsKdHlwZWRlZiBDb21wb25l
bnRSZXN1bHQgKCAqIERvVHJhbnNsYXRlU2NyYXBQcm9jUHRyKShDb21wb25lbnRJbnN0YW5jZSBz
ZWxmLCBUcmFuc2xhdGlvblJlZk51bSByZWZOdW0sIGNvbnN0IHZvaWQgKnNyY0RhdGFQdHIsIFNp
emUgc3JjRGF0YUxlbmd0aCwgU2NyYXBUeXBlIHNyY1R5cGUsIGxvbmcgc3JjVHlwZUhpbnQsIEhh
bmRsZSBkc3REYXRhLCBTY3JhcFR5cGUgZHN0VHlwZSwgbG9uZyBkc3RUeXBlSGludCk7CgojcHJh
Z21hIHBhY2socG9wKQoKCn0KIyAyMDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29s
Ym94LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVHJhbnNsYXRpb24u
aCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVHJhbnNsYXRpb24uaCIgMwoj
ZGVmaW5lIF9fVFJBTlNMQVRJT05fXyAKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9U
cmFuc2xhdGlvbi5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFnbWEgcGFjayhwdXNoLCAyKQoKCgoK
Cgp0eXBlZGVmIHNob3J0IERvY09wZW5NZXRob2Q7CmVudW0gewogIGRvbUNhbm5vdCA9IDAsCiAg
ZG9tTmF0aXZlID0gMSwKICBkb21UcmFuc2xhdGVGaXJzdCA9IDIsCiAgZG9tV2lsZGNhcmQgPSAz
Cn07CgoKdHlwZWRlZiBPU1R5cGUgVHlwZXNCbG9ja1s2NF07CnR5cGVkZWYgT1NUeXBlICogVHlw
ZXNCbG9ja1B0cjsKCmVudW0gewogIGtUcmFuc2xhdGlvblNjcmFwUHJvZ3Jlc3NEaWFsb2dJRCA9
IC0xNjU1NQp9OwoKCnN0cnVjdCBGaWxlVHJhbnNsYXRpb25TcGVjIHsKICBPU1R5cGUgY29tcG9u
ZW50U2lnbmF0dXJlOwogIGNvbnN0IHZvaWQgKiB0cmFuc2xhdGlvblN5c3RlbUluZm87CiAgRmls
ZVR5cGVTcGVjIHNyYzsKICBGaWxlVHlwZVNwZWMgZHN0Owp9Owp0eXBlZGVmIHN0cnVjdCBGaWxl
VHJhbnNsYXRpb25TcGVjIEZpbGVUcmFuc2xhdGlvblNwZWM7CnR5cGVkZWYgRmlsZVRyYW5zbGF0
aW9uU3BlYyAqIEZpbGVUcmFuc2xhdGlvblNwZWNBcnJheVB0cjsKdHlwZWRlZiBGaWxlVHJhbnNs
YXRpb25TcGVjQXJyYXlQdHIgKiBGaWxlVHJhbnNsYXRpb25TcGVjQXJyYXlIYW5kbGU7CiMgMjYy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RyYW5zbGF0aW9uLmgiIDMKdHlwZWRlZiBPU0Vy
ciAoICogR2V0U2NyYXBEYXRhUHJvY1B0cikoU2NyYXBUeXBlIHJlcXVlc3RlZEZvcm1hdCwgSGFu
ZGxlIGRhdGFILCB2b2lkICpzcmNEYXRhR2V0dGVyUmVmQ29uKTsKdHlwZWRlZiBHZXRTY3JhcERh
dGFQcm9jUHRyIEdldFNjcmFwRGF0YVVQUDsKIyAyNzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvVHJhbnNsYXRpb24uaCIgMwpleHRlcm4gR2V0U2NyYXBEYXRhVVBQCk5ld0dldFNjcmFwRGF0
YVVQUChHZXRTY3JhcERhdGFQcm9jUHRyIHVzZXJSb3V0aW5lKSBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSk7CiMgMjgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RyYW5zbGF0aW9uLmgi
IDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUdldFNjcmFwRGF0YVVQUChHZXRTY3JhcERhdGFVUFAgdXNl
clVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDI5NCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9UcmFuc2xhdGlvbi5oIiAzCmV4dGVybiBPU0VycgpJbnZva2VHZXRTY3JhcERh
dGFVUFAoCiAgU2NyYXBUeXBlIHJlcXVlc3RlZEZvcm1hdCwKICBIYW5kbGUgZGF0YUgsCiAgdm9p
ZCAqIHNyY0RhdGFHZXR0ZXJSZWZDb24sCiAgR2V0U2NyYXBEYXRhVVBQIHVzZXJVUFApIF9fYXR0
cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBHZXRTY3JhcERhdGFVUFAgTmV3
R2V0U2NyYXBEYXRhVVBQKEdldFNjcmFwRGF0YVByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJu
IHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlR2V0U2NyYXBEYXRhVVBQKEdl
dFNjcmFwRGF0YVVQUCkgeyB9CiAgICBpbmxpbmUgT1NFcnIgSW52b2tlR2V0U2NyYXBEYXRhVVBQ
KFNjcmFwVHlwZSByZXF1ZXN0ZWRGb3JtYXQsIEhhbmRsZSBkYXRhSCwgdm9pZCAqIHNyY0RhdGFH
ZXR0ZXJSZWZDb24sIEdldFNjcmFwRGF0YVVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFAp
KHJlcXVlc3RlZEZvcm1hdCwgZGF0YUgsIHNyY0RhdGFHZXR0ZXJSZWZDb24pOyB9CgoKCgoKCgp0
eXBlZGVmIEdldFNjcmFwRGF0YVVQUCBHZXRTY3JhcERhdGE7CiMgMzQyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL1RyYW5zbGF0aW9uLmgiIDMKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgMjEw
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJveC5oIiAyIDMKCgoKCgoKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UeXBlU2VsZWN0LmgiIDEgMwojIDE3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94
LmZyYW1ld29yay9IZWFkZXJzL1R5cGVTZWxlY3QuaCIgMwojZGVmaW5lIF9fVFlQRVNFTEVDVF9f
IAojIDMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1R5cGVTZWxlY3QuaCIgMwpleHRlcm4g
IkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9UeXBlU2VsZWN0LmgiIDMKdHlwZWRlZiBTSW50MTYgVFNDb2RlOwplbnVtIHsKICB0c1By
ZXZpb3VzU2VsZWN0TW9kZSA9IC0xLAogIHRzTm9ybWFsU2VsZWN0TW9kZSA9IDAsCiAgdHNOZXh0
U2VsZWN0TW9kZSA9IDEKfTsKCnN0cnVjdCBUeXBlU2VsZWN0UmVjb3JkIHsKICBVSW50MzIgdHNy
TGFzdEtleVRpbWU7CiAgU2NyaXB0Q29kZSB0c3JTY3JpcHQ7CiAgU3RyNjMgdHNyS2V5U3Ryb2tl
czsKfTsKdHlwZWRlZiBzdHJ1Y3QgVHlwZVNlbGVjdFJlY29yZCBUeXBlU2VsZWN0UmVjb3JkOwoj
IDIxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UeXBlU2VsZWN0LmgiIDMKI3ByYWdtYSBw
YWNrKHBvcCkKCgp9CiMgMjE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJveC5o
IiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY0FwcGxpY2F0aW9uLmgi
IDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY0FwcGxpY2F0aW9uLmgiIDMK
I2RlZmluZSBfX01BQ0FQUExJQ0FUSU9OX18gCiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvTWFjQXBwbGljYXRpb24uaCIgMwpleHRlcm4gIkMiIHsKIyA1NyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9NYWNBcHBsaWNhdGlvbi5oIiAzCmV4dGVybiBjb25zdCBmbG9hdCBrSElUb29s
Ym94VmVyc2lvbk51bWJlciA7CgoKI2RlZmluZSBrSElUb29sYm94VmVyc2lvbk51bWJlcjEwXzMg
KDE0NS4wKQojZGVmaW5lIGtISVRvb2xib3hWZXJzaW9uTnVtYmVyMTBfM18yICgxNDUuMzUpCiNk
ZWZpbmUga0hJVG9vbGJveFZlcnNpb25OdW1iZXIxMF8zXzMgKDE0NS4zOCkKI2RlZmluZSBrSElU
b29sYm94VmVyc2lvbk51bWJlcjEwXzNfNCAoMTQ1LjQxKQojZGVmaW5lIGtISVRvb2xib3hWZXJz
aW9uTnVtYmVyMTBfM181ICgxNDUuNDMpCiNkZWZpbmUga0hJVG9vbGJveFZlcnNpb25OdW1iZXIx
MF8zXzkgKDE0NS40OCkKI2RlZmluZSBrSElUb29sYm94VmVyc2lvbk51bWJlcjEwXzQgKDIxOSkK
I2RlZmluZSBrSElUb29sYm94VmVyc2lvbk51bWJlcjEwXzRfMSAoMjE5LjEpCiNkZWZpbmUga0hJ
VG9vbGJveFZlcnNpb25OdW1iZXIxMF80XzIgKDIyMCkKI2RlZmluZSBrSElUb29sYm94VmVyc2lv
bk51bWJlcjEwXzRfMl9TZWNVcGRhdGUgKDIyMSkKI2RlZmluZSBrSElUb29sYm94VmVyc2lvbk51
bWJlcjEwXzRfNCAoMjIyKQojZGVmaW5lIGtISVRvb2xib3hWZXJzaW9uTnVtYmVyMTBfNF80X0lu
dGVsICgyMjMpCiNkZWZpbmUga0hJVG9vbGJveFZlcnNpb25OdW1iZXIxMF80XzYgKDIyNSkKI2Rl
ZmluZSBrSElUb29sYm94VmVyc2lvbk51bWJlcjEwXzRfNyAoMjI2KQojZGVmaW5lIGtISVRvb2xi
b3hWZXJzaW9uTnVtYmVyMTBfNF85ICgyMjcpCiNkZWZpbmUga0hJVG9vbGJveFZlcnNpb25OdW1i
ZXIxMF81ICgzNDMpCiNkZWZpbmUga0hJVG9vbGJveFZlcnNpb25OdW1iZXIxMF81XzEgKDM0MykK
I2RlZmluZSBrSElUb29sYm94VmVyc2lvbk51bWJlcjEwXzVfMiAoMzUyKQojZGVmaW5lIGtISVRv
b2xib3hWZXJzaW9uTnVtYmVyMTBfNV8zICgzNTIpCiNkZWZpbmUga0hJVG9vbGJveFZlcnNpb25O
dW1iZXIxMF81XzQgKDM1MikKI2RlZmluZSBrSElUb29sYm94VmVyc2lvbk51bWJlcjEwXzVfNSAo
MzUyKQojZGVmaW5lIGtISVRvb2xib3hWZXJzaW9uTnVtYmVyMTBfNV82ICgzNTMpCiNkZWZpbmUg
a0hJVG9vbGJveFZlcnNpb25OdW1iZXIxMF81XzcgKDM1MykKIyA5MiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9NYWNBcHBsaWNhdGlvbi5oIiAzCiNkZWZpbmUga0hJQXBwbGljYXRpb25DbGFz
c0lEIENGU1RSKCJjb20uYXBwbGUuSElBcHBsaWNhdGlvbiIpCiMgMTA2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL01hY0FwcGxpY2F0aW9uLmgiIDMKZW51bSB7CgoKCgogIGtVSU1vZGVOb3Jt
YWwgPSAwLAojIDEyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNBcHBsaWNhdGlvbi5o
IiAzCiAga1VJTW9kZUNvbnRlbnRTdXBwcmVzc2VkID0gMSwKCgoKCgoKCiAga1VJTW9kZUNvbnRl
bnRIaWRkZW4gPSAyLAojIDEzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNBcHBsaWNh
dGlvbi5oIiAzCiAga1VJTW9kZUFsbFN1cHByZXNzZWQgPSA0LAojIDE0OCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9NYWNBcHBsaWNhdGlvbi5oIiAzCiAga1VJTW9kZUFsbEhpZGRlbiA9IDMK
fTsKCnR5cGVkZWYgVUludDMyIFN5c3RlbVVJTW9kZTsKCgoKCgoKZW51bSB7CgoKCgoKCiAga1VJ
T3B0aW9uQXV0b1Nob3dNZW51QmFyID0gMSA8PCAwLAoKCgoKICBrVUlPcHRpb25EaXNhYmxlQXBw
bGVNZW51ID0gMSA8PCAyLAojIDE4MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNBcHBs
aWNhdGlvbi5oIiAzCiAga1VJT3B0aW9uRGlzYWJsZVByb2Nlc3NTd2l0Y2ggPSAxIDw8IDMsCgoK
CgoKCgogIGtVSU9wdGlvbkRpc2FibGVGb3JjZVF1aXQgPSAxIDw8IDQsCgoKCgoKCgogIGtVSU9w
dGlvbkRpc2FibGVTZXNzaW9uVGVybWluYXRlID0gMSA8PCA1LAoKCgoKCgoKICBrVUlPcHRpb25E
aXNhYmxlSGlkZSA9IDEgPDwgNiwKIyAyMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFj
QXBwbGljYXRpb24uaCIgMwogIGtVSU9wdGlvbkRpc2FibGVNZW51QmFyVHJhbnNwYXJlbmN5ID0g
MSA8PCA5Cn07Cgp0eXBlZGVmIE9wdGlvbkJpdHMgU3lzdGVtVUlPcHRpb25zOwojIDI2NSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9NYWNBcHBsaWNhdGlvbi5oIiAzCmV4dGVybiBPU1N0YXR1
cwpTZXRTeXN0ZW1VSU1vZGUoCiAgU3lzdGVtVUlNb2RlIGluTW9kZSwKICBTeXN0ZW1VSU9wdGlv
bnMgaW5PcHRpb25zKSA7CiMgMzA2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL01hY0FwcGxp
Y2F0aW9uLmgiIDMKZXh0ZXJuIHZvaWQKR2V0U3lzdGVtVUlNb2RlKAogIFN5c3RlbVVJTW9kZSAq
IG91dE1vZGUsCiAgU3lzdGVtVUlPcHRpb25zICogb3V0T3B0aW9ucykgOwojIDc0OSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9NYWNBcHBsaWNhdGlvbi5oIiAzCmV4dGVybiBUZXh0RW5jb2Rp
bmcKR2V0QXBwbGljYXRpb25UZXh0RW5jb2Rpbmcodm9pZCkgOwojIDc4NSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9NYWNBcHBsaWNhdGlvbi5oIiAzCiNkZWZpbmUga0hJQWJvdXRCb3hOYW1l
S2V5IENGU1RSKCJISUFib3V0Qm94TmFtZSIpCiNkZWZpbmUga0hJQWJvdXRCb3hWZXJzaW9uS2V5
IENGU1RSKCJISUFib3V0Qm94VmVyc2lvbiIpCiNkZWZpbmUga0hJQWJvdXRCb3hDb3B5cmlnaHRL
ZXkgQ0ZTVFIoIkhJQWJvdXRCb3hDb3B5cmlnaHQiKQojZGVmaW5lIGtISUFib3V0Qm94RGVzY3Jp
cHRpb25LZXkgQ0ZTVFIoIkhJQWJvdXRCb3hEZXNjcmlwdGlvbiIpCiNkZWZpbmUga0hJQWJvdXRC
b3hTdHJpbmdGaWxlS2V5IENGU1RSKCJISUFib3V0Qm94U3RyaW5nRmlsZSIpCiMgODkyICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL01hY0FwcGxpY2F0aW9uLmgiIDMKZXh0ZXJuIE9TU3RhdHVz
CkhJU2VhcmNoV2luZG93U2hvdygKICBDRlN0cmluZ1JlZiBpblNlYXJjaFN0cmluZywKICBPcHRp
b25CaXRzIGluRmxhZ3MpIDsKIyA5NTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvTWFjQXBw
bGljYXRpb24uaCIgMwpleHRlcm4gdm9pZApISURpY3Rpb25hcnlXaW5kb3dTaG93KAogIERDU0Rp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeSwKICBDRlR5cGVSZWYgdGV4dFN0cmluZywKICBDRlJhbmdl
IHNlbGVjdGlvblJhbmdlLAogIENURm9udFJlZiB0ZXh0Rm9udCwKICBDR1BvaW50IHRleHRPcmln
aW4sCiAgQm9vbGVhbiB2ZXJ0aWNhbFRleHQsCiAgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0gKiB2
aWV3VHJhbnNmb3JtKSA7CgoKCgp9CiMgMjIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJ
VG9vbGJveC5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0tleWJvYXJk
cy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9LZXlib2FyZHMuaCIgMwoj
ZGVmaW5lIF9fS0VZQk9BUkRTX18gCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvS2V5
Ym9hcmRzLmgiIDMKZXh0ZXJuICJDIiB7CiMgNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
S2V5Ym9hcmRzLmgiIDMKdHlwZWRlZiBPU1R5cGUgUGh5c2ljYWxLZXlib2FyZExheW91dFR5cGU7
CmVudW0gewoKCgoKICBrS2V5Ym9hcmRKSVMgPSAnSklTICcsCgoKCgogIGtLZXlib2FyZEFOU0kg
PSAnQU5TSScsCgoKCgogIGtLZXlib2FyZElTTyA9ICdJU08gJywKCgoKCiAga0tleWJvYXJkVW5r
bm93biA9IGtVbmtub3duVHlwZQp9OwojIDg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0tl
eWJvYXJkcy5oIiAzCnR5cGVkZWYgc3RydWN0IE9wYXF1ZUtleWJvYXJkTGF5b3V0UmVmKiBLZXli
b2FyZExheW91dFJlZjsKIyA5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9LZXlib2FyZHMu
aCIgMwp0eXBlZGVmIFVJbnQzMiBLZXlib2FyZExheW91dFByb3BlcnR5VGFnOwplbnVtIHsKCgoK
CgogIGtLTEtDSFJEYXRhID0gMCwKCgoKCgogIGtLTHVjaHJEYXRhID0gMSwKCgoKCiAga0tMSWRl
bnRpZmllciA9IDIsCgoKCgogIGtLTEljb24gPSAzLAoKCgoKICBrS0xMb2NhbGl6ZWROYW1lID0g
NCwKCgoKCiAga0tMTmFtZSA9IDUsCgoKCgogIGtLTEdyb3VwSWRlbnRpZmllciA9IDYsCgoKCgog
IGtLTEtpbmQgPSA3LAoKCgoKCgoKICBrS0xMYW5ndWFnZUNvZGUgPSA5Cn07CiMgMTU1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL0tleWJvYXJkcy5oIiAzCnR5cGVkZWYgU0ludDMyIEtleWJv
YXJkTGF5b3V0S2luZDsKZW51bSB7CgoKCgogIGtLTEtDSFJ1Y2hyS2luZCA9IDAsCgoKCgogIGtL
TEtDSFJLaW5kID0gMSwKCgoKCiAga0tMdWNocktpbmQgPSAyCn07CiMgMTgxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL0tleWJvYXJkcy5oIiAzCnR5cGVkZWYgU0ludDMyIEtleWJvYXJkTGF5
b3V0SWRlbnRpZmllcjsKZW51bSB7CiAga0tMVVNLZXlib2FyZCA9IDAKfTsKIyAyMDggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xi
b3guZnJhbWV3b3JrL0hlYWRlcnMvS2V5Ym9hcmRzLmgiIDMKZXh0ZXJuIFBoeXNpY2FsS2V5Ym9h
cmRMYXlvdXRUeXBlCktCR2V0TGF5b3V0VHlwZShTSW50MTYgaUtleWJvYXJkVHlwZSkgOwojIDQ5
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9LZXlib2FyZHMuaCIgMwplbnVtIHsKICBfS2V5
Ym9hcmREaXNwYXRjaCA9IDB4QUE3QQp9OwoKCmVudW0gewogIGdlc3RhbHRLZXlib2FyZHNBdHRy
ID0gJ2tiZHMnLAogIGdlc3RhbHRLQlBTMktleWJvYXJkcyA9IDEsCiAgZ2VzdGFsdEtCUFMyU2V0
SURUb0FueSA9IDIsCiAgZ2VzdGFsdEtCUFMyU2V0VHJhbnNsYXRpb25UYWJsZSA9IDQKfTsKCgoK
CgoKZW51bSB7CiAgZXJyS0JQUzJLZXlib2FyZE5vdEF2YWlsYWJsZSA9IC0zMDg1MCwKICBlcnJL
QklsbGlnYWxQYXJhbWV0ZXJzID0gLTMwODUxLAogIGVycktCRmFpbFNldHRpbmdJRCA9IC0zMDg1
MiwKICBlcnJLQkZhaWxTZXR0aW5nVHJhbnNsYXRpb25UYWJsZSA9IC0zMDg1MywKICBlcnJLQkZh
aWxXcml0ZVByZWZlcmVuY2UgPSAtMzA4NTQKfTsKCgoKfQojIDIyNiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9ISVRvb2xib3guaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9JQkNhcmJvblJ1bnRpbWUuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvSUJDYXJib25SdW50aW1lLmgiIDMKI2RlZmluZSBfX0lCQ0FSQk9OUlVOVElNRV9fIAojIDQ1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0lCQ2FyYm9uUnVudGltZS5oIiAzCmV4dGVybiAi
QyIgewoKCmVudW0gewogIGtJQkNhcmJvblJ1bnRpbWVDYW50RmluZE5pYkZpbGUgPSAtMTA5NjAs
CiAga0lCQ2FyYm9uUnVudGltZU9iamVjdE5vdE9mUmVxdWVzdGVkVHlwZSA9IC0xMDk2MSwKICBr
SUJDYXJib25SdW50aW1lQ2FudEZpbmRPYmplY3QgPSAtMTA5NjIKfTsKCgp0eXBlZGVmIHN0cnVj
dCBPcGFxdWVJQk5pYlJlZiogSUJOaWJSZWY7CiMgMjA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL0lCQ2FyYm9uUnVudGltZS5oIiAzCn0KIyAyMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvSElUb29sYm94LmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4
dElucHV0U291cmNlcy5oIiAxIDMKIyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0
SW5wdXRTb3VyY2VzLmgiIDMKI2RlZmluZSBfX1RFWFRJTlBVVFNPVVJDRVNfXyAKIyAyOSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMKZXh0ZXJuICJDIiB7
CiMgMTIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwp0
eXBlZGVmIHN0cnVjdCBfX1RJU0lucHV0U291cmNlKiBUSVNJbnB1dFNvdXJjZVJlZjsKIyAxMzYg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9I
SVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dElucHV0U291cmNlcy5oIiAzCmV4dGVybiBD
RlR5cGVJRApUSVNJbnB1dFNvdXJjZUdldFR5cGVJRCh2b2lkKSA7CiMgMTcyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga1RJU1Byb3BlcnR5SW5wdXRTb3VyY2VDYXRlZ29yeSA7CiMgMTkyICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZy
YW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga1RJU1Byb3BlcnR5SW5wdXRTb3VyY2VUeXBlIDsKIyAyMDUgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3
b3JrL0hlYWRlcnMvVGV4dElucHV0U291cmNlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrVElTUHJvcGVydHlJbnB1dFNvdXJjZUlzQVNDSUlDYXBhYmxlIDsKIyAyNDIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvVGV4dElucHV0U291cmNlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrVElTUHJvcGVydHlJbnB1dFNvdXJjZUlzRW5hYmxlQ2FwYWJsZSA7CiMgMjgxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga1RJU1Byb3BlcnR5SW5wdXRTb3VyY2VJc1NlbGVjdENhcGFibGUgOwoj
IDI5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUSVNQcm9wZXJ0eUlucHV0U291cmNlSXNFbmFibGVkIDsK
IyAzMDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dElucHV0U291cmNlcy5oIiAzCmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVElTUHJvcGVydHlJbnB1dFNvdXJjZUlzU2VsZWN0ZWQg
OwojIDMzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUSVNQcm9wZXJ0eUlucHV0U291cmNlSUQgOwojIDM1
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtUSVNQcm9wZXJ0eUJ1bmRsZUlEIDsKIyAzNzUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvVGV4dElucHV0U291cmNlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0
cmluZ1JlZiBrVElTUHJvcGVydHlJbnB1dE1vZGVJRCA7CiMgMzk0ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a1RJU1Byb3BlcnR5TG9jYWxpemVkTmFtZSA7CiMgNDI1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFk
ZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1RJU1By
b3BlcnR5SW5wdXRTb3VyY2VMYW5ndWFnZXMgOwojIDQ0NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUSVNQ
cm9wZXJ0eVVuaWNvZGVLZXlMYXlvdXREYXRhIDsKIyA0NjggIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvVGV4dElucHV0U291cmNlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVElT
UHJvcGVydHlJY29uUmVmIDsKIyA0OTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dElu
cHV0U291cmNlcy5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrVElTUHJvcGVydHlJY29u
SW1hZ2VVUkwgOwojIDUxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3Vy
Y2VzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUSVNDYXRlZ29yeUtleWJvYXJkSW5w
dXRTb3VyY2UgOwojIDUzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3Vy
Y2VzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUSVNDYXRlZ29yeVBhbGV0dGVJbnB1
dFNvdXJjZSA7CiMgNTQ5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJj
ZXMuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1RJU0NhdGVnb3J5SW5rSW5wdXRTb3Vy
Y2UgOwojIDU3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgi
IDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUSVNUeXBlS2V5Ym9hcmRMYXlvdXQgOwojIDU4
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtUSVNUeXBlS2V5Ym9hcmRJbnB1dE1ldGhvZFdpdGhvdXRNb2Rl
cyA7CiMgNjAyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIg
MwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1RJU1R5cGVLZXlib2FyZElucHV0TWV0aG9kTW9k
ZUVuYWJsZWQgOwojIDYxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3Vy
Y2VzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUSVNUeXBlS2V5Ym9hcmRJbnB1dE1v
ZGUgOwojIDYzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgi
IDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtUSVNUeXBlQ2hhcmFjdGVyUGFsZXR0ZSA7CiMg
NjUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga1RJU1R5cGVLZXlib2FyZFZpZXdlciA7CiMgNjY5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga1RJU1R5cGVJbmsgOwojIDcwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMKZXh0ZXJuIHZvaWQgKgpUSVNHZXRJbnB1dFNvdXJjZVBy
b3BlcnR5KAogIFRJU0lucHV0U291cmNlUmVmIGlucHV0U291cmNlLAogIENGU3RyaW5nUmVmIHBy
b3BlcnR5S2V5KSA7CiMgNzYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNv
dXJjZXMuaCIgMwpleHRlcm4gQ0ZBcnJheVJlZgpUSVNDcmVhdGVJbnB1dFNvdXJjZUxpc3QoCiAg
Q0ZEaWN0aW9uYXJ5UmVmIHByb3BlcnRpZXMsCiAgQm9vbGVhbiBpbmNsdWRlQWxsSW5zdGFsbGVk
KSA7CiMgNzg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIg
MwpleHRlcm4gVElTSW5wdXRTb3VyY2VSZWYKVElTQ29weUN1cnJlbnRLZXlib2FyZElucHV0U291
cmNlKHZvaWQpIDsKIyA4MDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dElucHV0U291
cmNlcy5oIiAzCmV4dGVybiBUSVNJbnB1dFNvdXJjZVJlZgpUSVNDb3B5Q3VycmVudEtleWJvYXJk
TGF5b3V0SW5wdXRTb3VyY2Uodm9pZCkgOwojIDgyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMKZXh0ZXJuIFRJU0lucHV0U291cmNlUmVmClRJU0NvcHlD
dXJyZW50QVNDSUlDYXBhYmxlS2V5Ym9hcmRJbnB1dFNvdXJjZSh2b2lkKSA7CiMgODUzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwpleHRlcm4gVElTSW5w
dXRTb3VyY2VSZWYKVElTQ29weUN1cnJlbnRBU0NJSUNhcGFibGVLZXlib2FyZExheW91dElucHV0
U291cmNlKHZvaWQpIDsKIyA4OTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dElucHV0
U291cmNlcy5oIiAzCmV4dGVybiBUSVNJbnB1dFNvdXJjZVJlZgpUSVNDb3B5SW5wdXRTb3VyY2VG
b3JMYW5ndWFnZShDRlN0cmluZ1JlZiBsYW5ndWFnZSkgOwojIDkyOCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMKZXh0ZXJuIENGQXJyYXlSZWYKVElTQ3Jl
YXRlQVNDSUlDYXBhYmxlSW5wdXRTb3VyY2VMaXN0KHZvaWQpIDsKIyA5NzAgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvVGV4dElucHV0U291cmNlcy5oIiAzCmV4dGVybiBPU1N0YXR1cwpUSVNT
ZWxlY3RJbnB1dFNvdXJjZShUSVNJbnB1dFNvdXJjZVJlZiBpbnB1dFNvdXJjZSkgOwojIDk5NiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzClRJU0Rlc2VsZWN0SW5wdXRTb3VyY2UoVElTSW5wdXRTb3VyY2VSZWYgaW5wdXRTb3Vy
Y2UpIDsKIyAxMDI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMu
aCIgMwpleHRlcm4gT1NTdGF0dXMKVElTRW5hYmxlSW5wdXRTb3VyY2UoVElTSW5wdXRTb3VyY2VS
ZWYgaW5wdXRTb3VyY2UpIDsKIyAxMDU2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJ
bnB1dFNvdXJjZXMuaCIgMwpleHRlcm4gT1NTdGF0dXMKVElTRGlzYWJsZUlucHV0U291cmNlKFRJ
U0lucHV0U291cmNlUmVmIGlucHV0U291cmNlKSA7CiMgMTA3NyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtU
SVNOb3RpZnlTZWxlY3RlZEtleWJvYXJkSW5wdXRTb3VyY2VDaGFuZ2VkIDsKIyAxMDkwICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga1RJU05vdGlmeUVuYWJsZWRLZXlib2FyZElucHV0U291cmNlc0NoYW5nZWQg
OwojIDExNTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvVGV4dElucHV0U291cmNlcy5oIiAz
CmV4dGVybiBPU1N0YXR1cwpUSVNTZXRJbnB1dE1ldGhvZEtleWJvYXJkTGF5b3V0T3ZlcnJpZGUo
VElTSW5wdXRTb3VyY2VSZWYga2V5Ym9hcmRMYXlvdXQpIDsKIyAxMTc1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1l
d29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwpleHRlcm4gVElTSW5wdXRTb3VyY2VS
ZWYKVElTQ29weUlucHV0TWV0aG9kS2V5Ym9hcmRMYXlvdXRPdmVycmlkZSh2b2lkKSA7CiMgMTIz
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9UZXh0SW5wdXRTb3VyY2VzLmgiIDMKZXh0ZXJu
IE9TU3RhdHVzClRJU1JlZ2lzdGVySW5wdXRTb3VyY2UoQ0ZVUkxSZWYgbG9jYXRpb24pIDsKIyAx
Mzc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL1RleHRJbnB1dFNvdXJjZXMuaCIgMwp9CiMg
MjM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJveC5oIiAyIDMKCgoKIyAxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElU
b29sYm94LmZyYW1ld29yay9IZWFkZXJzL0hJVG9vbGJveERlYnVnZ2luZy5oIiAxIDMKCiNkZWZp
bmUgX19ISVRPT0xCT1hERUJVR0dJTkdfXyAKIyAzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVy
cy9ISVRvb2xib3hEZWJ1Z2dpbmcuaCIgMwpleHRlcm4gIkMiIHsKIyAxMTQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJh
bWV3b3JrL0hlYWRlcnMvSElUb29sYm94RGVidWdnaW5nLmgiIDMKZXh0ZXJuIHZvaWQKRGVidWdQ
cmludE1haW5FdmVudFF1ZXVlKHZvaWQpIDsKIyAxMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRl
cnMvSElUb29sYm94RGVidWdnaW5nLmgiIDMKZXh0ZXJuIHZvaWQKRGVidWdQcmludEV2ZW50KEV2
ZW50UmVmIGluRXZlbnQpIDsKIyAzNDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSElUb29s
Ym94RGVidWdnaW5nLmgiIDMKfQojIDIzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9ISVRv
b2xib3guaCIgMiAzCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMvSU1LSW5wdXRT
ZXNzaW9uLmgiIDEgMwojIDE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0lNS0lucHV0U2Vz
c2lvbi5oIiAzCiNkZWZpbmUgX19JTUtJTlBVVFNFU1NJT05fXyAKIyAzMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFt
ZXdvcmsvSGVhZGVycy9JTUtJbnB1dFNlc3Npb24uaCIgMwplbnVtIHsKICBrSU1LTW91c2VUcmFj
a2luZ01vZGUgPSAoMTw8MCksCiAgIGtJTUtOZWFyZXN0Qm91bmRhcnlNb2RlID0gKDE8PDEpCn07
CnR5cGVkZWYgTlNJbnRlZ2VyIElNS0xvY2F0aW9uVG9PZmZzZXRNYXBwaW5nTW9kZTsKIyA0NSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9JTUtJbnB1dFNlc3Npb24uaCIgMwpleHRlcm4gY29u
c3QgTlNTdHJpbmcqIElNS1RleHRPcmllbnRhdGlvbk5hbWU7CgpAY2xhc3MgSU1LQ2xpZW50Owoj
IDU3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0lNS0lucHV0U2Vzc2lvbi5oIiAzCkBwcm90
b2NvbCBJTUtUZXh0SW5wdXQKIyA3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9JTUtJbnB1
dFNlc3Npb24uaCIgMwotICh2b2lkKWluc2VydFRleHQ6KGlkKXN0cmluZyByZXBsYWNlbWVudFJh
bmdlOihOU1JhbmdlKXJlcGxhY2VtZW50UmFuZ2U7CiMgODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hl
YWRlcnMvSU1LSW5wdXRTZXNzaW9uLmgiIDMKLSAodm9pZClzZXRNYXJrZWRUZXh0OihpZClzdHJp
bmcgc2VsZWN0aW9uUmFuZ2U6KE5TUmFuZ2Upc2VsZWN0aW9uUmFuZ2UgcmVwbGFjZW1lbnRSYW5n
ZTooTlNSYW5nZSlyZXBsYWNlbWVudFJhbmdlOwojIDEwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVh
ZGVycy9JTUtJbnB1dFNlc3Npb24uaCIgMwotIChOU1JhbmdlKXNlbGVjdGVkUmFuZ2U7CiMgMTE1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
SElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0lNS0lucHV0U2Vzc2lvbi5oIiAzCi0gKE5TUmFu
Z2UpbWFya2VkUmFuZ2U7CiMgMTMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9IZWFkZXJzL0lNS0lucHV0
U2Vzc2lvbi5oIiAzCi0gKE5TQXR0cmlidXRlZFN0cmluZyopYXR0cmlidXRlZFN1YnN0cmluZ0Zy
b21SYW5nZTooTlNSYW5nZSlyYW5nZTsKIyAxNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL0hlYWRlcnMv
SU1LSW5wdXRTZXNzaW9uLmgiIDMKLSAoTlNJbnRlZ2VyKWxlbmd0aDsKIyAxNTMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9ISVRvb2xib3gu
ZnJhbWV3b3JrL0hlYWRlcnMvSU1LSW5wdXRTZXNzaW9uLmgiIDMKLSAoTlNJbnRlZ2VyKWNoYXJh
Y3RlckluZGV4Rm9yUG9pbnQ6KE5TUG9pbnQpcG9pbnQgdHJhY2tpbmc6KElNS0xvY2F0aW9uVG9P
ZmZzZXRNYXBwaW5nTW9kZSltYXBwaW5nTW9kZSBpbk1hcmtlZFJhbmdlOihCT09MKilpbk1hcmtl
ZFJhbmdlOwojIDE2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9JTUtJbnB1dFNlc3Npb24u
aCIgMwotIChOU0RpY3Rpb25hcnkqKWF0dHJpYnV0ZXNGb3JDaGFyYWN0ZXJJbmRleDooTlNVSW50
ZWdlcilpbmRleCBsaW5lSGVpZ2h0UmVjdGFuZ2xlOihOU1JlY3QqKWxpbmVSZWN0OwojIDE3NSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJ
VG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9JTUtJbnB1dFNlc3Npb24uaCIgMwotIChOU0FycmF5
Kil2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0OwojIDE4NiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsv
SGVhZGVycy9JTUtJbnB1dFNlc3Npb24uaCIgMwotKHZvaWQpb3ZlcnJpZGVLZXlib2FyZFdpdGhL
ZXlib2FyZE5hbWVkOihOU1N0cmluZyopa2V5Ym9hcmRVbmlxdWVOYW1lOwojIDE5NSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJv
eC5mcmFtZXdvcmsvSGVhZGVycy9JTUtJbnB1dFNlc3Npb24uaCIgMwotKHZvaWQpc2VsZWN0SW5w
dXRNb2RlOihOU1N0cmluZyopbW9kZUlkZW50aWZpZXI7CgoKCgoKCgotKEJPT0wpc3VwcG9ydHNV
bmljb2RlOwojIDIxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSGVhZGVycy9JTUtJbnB1dFNlc3Npb24u
aCIgMwotKE5TU3RyaW5nKilidW5kbGVJZGVudGlmaWVyOwojIDIyMyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdv
cmsvSGVhZGVycy9JTUtJbnB1dFNlc3Npb24uaCIgMwotKENHV2luZG93TGV2ZWwpd2luZG93TGV2
ZWw7CgoKCgoKCi0oQk9PTClzdXBwb3J0c1Byb3BlcnR5OihUU01Eb2N1bWVudFByb3BlcnR5VGFn
KXByb3BlcnR5OwoKCkBlbmQKCkBwcm90b2NvbCBJTUtVbmljb2RlVGV4dElucHV0CgoKCgoKCi0o
dm9pZClpbnNlcnRUZXh0OihpZClzdHJpbmc7CgpAZW5kCiMgMjQzICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29y
ay9IZWFkZXJzL0hJVG9vbGJveC5oIiAyIDMKIyAzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbi5oIiAyIDMKIyA0MCAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbi5oIiAzCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT3BlblNjcmlwdGluZy5oIiAxIDMKIyAx
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT3BlblNjcmlwdGluZy5oIiAzCiNkZWZp
bmUgX19PUEVOU0NSSVBUSU5HX18gCiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJz
L09wZW5TY3JpcHRpbmcuaCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09T
QS5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKI2Rl
ZmluZSBfX09TQV9fIAojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIg
MwpleHRlcm4gIkMiIHsKIyA0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgi
IDMKZW51bSB7CiAga09TQUNvbXBvbmVudFR5cGUgPSAnb3NhICcKfTsKCgplbnVtIHsKICBrT1NB
R2VuZXJpY1NjcmlwdGluZ0NvbXBvbmVudFN1YnR5cGUgPSAnc2NwdCcKfTsKCgoKZW51bSB7CiAg
a09TQUZpbGVUeXBlID0gJ29zYXMnCn07CgoKCgoKCmVudW0gewogIGtPU0FTdWl0ZSA9ICdhc2Ny
Jwp9OwoKCmVudW0gewogIGtPU0FSZWNvcmRlZFRleHQgPSAncmVjZCcKfTsKCgoKZW51bSB7CiAg
a09TQVNjcmlwdElzTW9kaWZpZWQgPSAnbW9kaScKfTsKCgoKZW51bSB7CiAga09TQVNjcmlwdElz
VHlwZUNvbXBpbGVkU2NyaXB0ID0gJ2NzY3InCn07CgoKCmVudW0gewogIGtPU0FTY3JpcHRJc1R5
cGVTY3JpcHRWYWx1ZSA9ICd2YWx1Jwp9OwoKCgplbnVtIHsKICBrT1NBU2NyaXB0SXNUeXBlU2Ny
aXB0Q29udGV4dCA9ICdjbnR4Jwp9OwoKCgplbnVtIHsKICBrT1NBU2NyaXB0QmVzdFR5cGUgPSAn
YmVzdCcKfTsKCgoKCgoKCmVudW0gewogIGtPU0FDYW5HZXRTb3VyY2UgPSAnZ3NyYycKfTsKCgpl
bnVtIHsKICB0eXBlT1NBRGlhbGVjdEluZm8gPSAnZGlmbycsCiAga2V5T1NBRGlhbGVjdE5hbWUg
PSAnZG5hbScsCiAga2V5T1NBRGlhbGVjdENvZGUgPSAnZGNvZCcsCiAga2V5T1NBRGlhbGVjdExh
bmdDb2RlID0gJ2RsY2QnLAogIGtleU9TQURpYWxlY3RTY3JpcHRDb2RlID0gJ2RzY2QnCn07Cgp0
eXBlZGVmIENvbXBvbmVudFJlc3VsdCBPU0FFcnJvcjsKCnR5cGVkZWYgVUludDMyIE9TQUlEOwoK
CgoKZW51bSB7CiAga09TQU51bGxTY3JpcHQgPSAwCn07CgoKZW51bSB7CiAga09TQU51bGxNb2Rl
ID0gMCwKICBrT1NBTW9kZU51bGwgPSAwCn07CgoKCgoKdHlwZWRlZiBPU0VyciAoICogT1NBQ3Jl
YXRlQXBwbGVFdmVudFByb2NQdHIpKEFFRXZlbnRDbGFzcyB0aGVBRUV2ZW50Q2xhc3MsIEFFRXZl
bnRJRCB0aGVBRUV2ZW50SUQsIGNvbnN0IEFFQWRkcmVzc0Rlc2MgKnRhcmdldCwgc2hvcnQgcmV0
dXJuSUQsIFNJbnQzMiB0cmFuc2FjdGlvbklELCBBcHBsZUV2ZW50ICpyZXN1bHQsIFNSZWZDb24g
cmVmQ29uKTsKdHlwZWRlZiBPU0VyciAoICogT1NBU2VuZFByb2NQdHIpKGNvbnN0IEFwcGxlRXZl
bnQgKnRoZUFwcGxlRXZlbnQsIEFwcGxlRXZlbnQgKnJlcGx5LCBBRVNlbmRNb2RlIHNlbmRNb2Rl
LCBBRVNlbmRQcmlvcml0eSBzZW5kUHJpb3JpdHksIFNJbnQzMiB0aW1lT3V0SW5UaWNrcywgQUVJ
ZGxlVVBQIGlkbGVQcm9jLCBBRUZpbHRlclVQUCBmaWx0ZXJQcm9jLCBTUmVmQ29uIHJlZkNvbik7
CnR5cGVkZWYgT1NBQ3JlYXRlQXBwbGVFdmVudFByb2NQdHIgT1NBQ3JlYXRlQXBwbGVFdmVudFVQ
UDsKdHlwZWRlZiBPU0FTZW5kUHJvY1B0ciBPU0FTZW5kVVBQOwojIDE1NyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcu
ZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUNyZWF0ZUFwcGxlRXZlbnRVUFAK
TmV3T1NBQ3JlYXRlQXBwbGVFdmVudFVQUChPU0FDcmVhdGVBcHBsZUV2ZW50UHJvY1B0ciB1c2Vy
Um91dGluZSkgOwojIDE2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMK
ZXh0ZXJuIE9TQVNlbmRVUFAKTmV3T1NBU2VuZFVQUChPU0FTZW5kUHJvY1B0ciB1c2VyUm91dGlu
ZSkgOwojIDE3OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJu
IHZvaWQKRGlzcG9zZU9TQUNyZWF0ZUFwcGxlRXZlbnRVUFAoT1NBQ3JlYXRlQXBwbGVFdmVudFVQ
UCB1c2VyVVBQKSA7CiMgMTkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIg
MwpleHRlcm4gdm9pZApEaXNwb3NlT1NBU2VuZFVQUChPU0FTZW5kVVBQIHVzZXJVUFApIDsKIyAy
MDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmV4dGVybiBPU0VycgpJ
bnZva2VPU0FDcmVhdGVBcHBsZUV2ZW50VVBQKAogIEFFRXZlbnRDbGFzcyB0aGVBRUV2ZW50Q2xh
c3MsCiAgQUVFdmVudElEIHRoZUFFRXZlbnRJRCwKICBjb25zdCBBRUFkZHJlc3NEZXNjICogdGFy
Z2V0LAogIHNob3J0IHJldHVybklELAogIFNJbnQzMiB0cmFuc2FjdGlvbklELAogIEFwcGxlRXZl
bnQgKiByZXN1bHQsCiAgU1JlZkNvbiByZWZDb24sCiAgT1NBQ3JlYXRlQXBwbGVFdmVudFVQUCB1
c2VyVVBQKSA7CiMgMjIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwpl
eHRlcm4gT1NFcnIKSW52b2tlT1NBU2VuZFVQUCgKICBjb25zdCBBcHBsZUV2ZW50ICogdGhlQXBw
bGVFdmVudCwKICBBcHBsZUV2ZW50ICogcmVwbHksCiAgQUVTZW5kTW9kZSBzZW5kTW9kZSwKICBB
RVNlbmRQcmlvcml0eSBzZW5kUHJpb3JpdHksCiAgU0ludDMyIHRpbWVPdXRJblRpY2tzLAogIEFF
SWRsZVVQUCBpZGxlUHJvYywKICBBRUZpbHRlclVQUCBmaWx0ZXJQcm9jLAogIFNSZWZDb24gcmVm
Q29uLAogIE9TQVNlbmRVUFAgdXNlclVQUCkgOwoKCgogICAgaW5saW5lIE9TQUNyZWF0ZUFwcGxl
RXZlbnRVUFAgTmV3T1NBQ3JlYXRlQXBwbGVFdmVudFVQUChPU0FDcmVhdGVBcHBsZUV2ZW50UHJv
Y1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSBPU0FT
ZW5kVVBQIE5ld09TQVNlbmRVUFAoT1NBU2VuZFByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJu
IHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgdm9pZCBEaXNwb3NlT1NBQ3JlYXRlQXBwbGVFdmVu
dFVQUChPU0FDcmVhdGVBcHBsZUV2ZW50VVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VP
U0FTZW5kVVBQKE9TQVNlbmRVUFApIHsgfQogICAgaW5saW5lIE9TRXJyIEludm9rZU9TQUNyZWF0
ZUFwcGxlRXZlbnRVUFAoQUVFdmVudENsYXNzIHRoZUFFRXZlbnRDbGFzcywgQUVFdmVudElEIHRo
ZUFFRXZlbnRJRCwgY29uc3QgQUVBZGRyZXNzRGVzYyAqIHRhcmdldCwgc2hvcnQgcmV0dXJuSUQs
IFNJbnQzMiB0cmFuc2FjdGlvbklELCBBcHBsZUV2ZW50ICogcmVzdWx0LCBTUmVmQ29uIHJlZkNv
biwgT1NBQ3JlYXRlQXBwbGVFdmVudFVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHRo
ZUFFRXZlbnRDbGFzcywgdGhlQUVFdmVudElELCB0YXJnZXQsIHJldHVybklELCB0cmFuc2FjdGlv
bklELCByZXN1bHQsIHJlZkNvbik7IH0KICAgIGlubGluZSBPU0VyciBJbnZva2VPU0FTZW5kVVBQ
KGNvbnN0IEFwcGxlRXZlbnQgKiB0aGVBcHBsZUV2ZW50LCBBcHBsZUV2ZW50ICogcmVwbHksIEFF
U2VuZE1vZGUgc2VuZE1vZGUsIEFFU2VuZFByaW9yaXR5IHNlbmRQcmlvcml0eSwgU0ludDMyIHRp
bWVPdXRJblRpY2tzLCBBRUlkbGVVUFAgaWRsZVByb2MsIEFFRmlsdGVyVVBQIGZpbHRlclByb2Ms
IFNSZWZDb24gcmVmQ29uLCBPU0FTZW5kVVBQIHVzZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCko
dGhlQXBwbGVFdmVudCwgcmVwbHksIHNlbmRNb2RlLCBzZW5kUHJpb3JpdHksIHRpbWVPdXRJblRp
Y2tzLCBpZGxlUHJvYywgZmlsdGVyUHJvYywgcmVmQ29uKTsgfQojIDI2MiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcu
ZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZW51bSB7CiAga09TQVN1cHBvcnRzQ29tcGlsaW5n
ID0gMHgwMDAyLAogIGtPU0FTdXBwb3J0c0dldFNvdXJjZSA9IDB4MDAwNCwKICBrT1NBU3VwcG9y
dHNBRUNvZXJjaW9uID0gMHgwMDA4LAogIGtPU0FTdXBwb3J0c0FFU2VuZGluZyA9IDB4MDAxMCwK
ICBrT1NBU3VwcG9ydHNSZWNvcmRpbmcgPSAweDAwMjAsCiAga09TQVN1cHBvcnRzQ29udmVuaWVu
Y2UgPSAweDAwNDAsCiAga09TQVN1cHBvcnRzRGlhbGVjdHMgPSAweDAwODAsCiAga09TQVN1cHBv
cnRzRXZlbnRIYW5kbGluZyA9IDB4MDEwMAp9OwoKCmVudW0gewogIGtPU0FTZWxlY3RMb2FkID0g
MHgwMDAxLAogIGtPU0FTZWxlY3RTdG9yZSA9IDB4MDAwMiwKICBrT1NBU2VsZWN0RXhlY3V0ZSA9
IDB4MDAwMywKICBrT1NBU2VsZWN0RGlzcGxheSA9IDB4MDAwNCwKICBrT1NBU2VsZWN0U2NyaXB0
RXJyb3IgPSAweDAwMDUsCiAga09TQVNlbGVjdERpc3Bvc2UgPSAweDAwMDYsCiAga09TQVNlbGVj
dFNldFNjcmlwdEluZm8gPSAweDAwMDcsCiAga09TQVNlbGVjdEdldFNjcmlwdEluZm8gPSAweDAw
MDgsCiAga09TQVNlbGVjdFNldEFjdGl2ZVByb2MgPSAweDAwMDksCiAga09TQVNlbGVjdEdldEFj
dGl2ZVByb2MgPSAweDAwMEEsCiAga09TQVNlbGVjdENvcHlEaXNwbGF5U3RyaW5nID0gMHgwMDBC
Cn07CgoKZW51bSB7CiAga09TQVNlbGVjdFNjcmlwdGluZ0NvbXBvbmVudE5hbWUgPSAweDAxMDIs
CiAga09TQVNlbGVjdENvbXBpbGUgPSAweDAxMDMsCiAga09TQVNlbGVjdENvcHlJRCA9IDB4MDEw
NCwKICBrT1NBU2VsZWN0Q29weVNjcmlwdCA9IDB4MDEwNQp9OwoKCmVudW0gewogIGtPU0FTZWxl
Y3RHZXRTb3VyY2UgPSAweDAyMDEsCiAga09TQVNlbGVjdENvcHlTb3VyY2VTdHJpbmcgPSAweDAy
MDIKfTsKCgplbnVtIHsKICBrT1NBU2VsZWN0Q29lcmNlRnJvbURlc2MgPSAweDAzMDEsCiAga09T
QVNlbGVjdENvZXJjZVRvRGVzYyA9IDB4MDMwMgp9OwoKCmVudW0gewogIGtPU0FTZWxlY3RTZXRT
ZW5kUHJvYyA9IDB4MDQwMSwKICBrT1NBU2VsZWN0R2V0U2VuZFByb2MgPSAweDA0MDIsCiAga09T
QVNlbGVjdFNldENyZWF0ZVByb2MgPSAweDA0MDMsCiAga09TQVNlbGVjdEdldENyZWF0ZVByb2Mg
PSAweDA0MDQsCiAga09TQVNlbGVjdFNldERlZmF1bHRUYXJnZXQgPSAweDA0MDUKfTsKCgplbnVt
IHsKICBrT1NBU2VsZWN0U3RhcnRSZWNvcmRpbmcgPSAweDA1MDEsCiAga09TQVNlbGVjdFN0b3BS
ZWNvcmRpbmcgPSAweDA1MDIKfTsKCgplbnVtIHsKICBrT1NBU2VsZWN0TG9hZEV4ZWN1dGUgPSAw
eDA2MDEsCiAga09TQVNlbGVjdENvbXBpbGVFeGVjdXRlID0gMHgwNjAyLAogIGtPU0FTZWxlY3RE
b1NjcmlwdCA9IDB4MDYwMwp9OwoKCmVudW0gewogIGtPU0FTZWxlY3RTZXRDdXJyZW50RGlhbGVj
dCA9IDB4MDcwMSwKICBrT1NBU2VsZWN0R2V0Q3VycmVudERpYWxlY3QgPSAweDA3MDIsCiAga09T
QVNlbGVjdEF2YWlsYWJsZURpYWxlY3RzID0gMHgwNzAzLAogIGtPU0FTZWxlY3RHZXREaWFsZWN0
SW5mbyA9IDB4MDcwNCwKICBrT1NBU2VsZWN0QXZhaWxhYmxlRGlhbGVjdENvZGVMaXN0ID0gMHgw
NzA1Cn07CgoKZW51bSB7CiAga09TQVNlbGVjdFNldFJlc3VtZURpc3BhdGNoUHJvYyA9IDB4MDgw
MSwKICBrT1NBU2VsZWN0R2V0UmVzdW1lRGlzcGF0Y2hQcm9jID0gMHgwODAyLAogIGtPU0FTZWxl
Y3RFeGVjdXRlRXZlbnQgPSAweDA4MDMsCiAga09TQVNlbGVjdERvRXZlbnQgPSAweDA4MDQsCiAg
a09TQVNlbGVjdE1ha2VDb250ZXh0ID0gMHgwODA1Cn07CgoKCmVudW0gewogIGtPU0FTZWxlY3RD
b21wb25lbnRTcGVjaWZpY1N0YXJ0ID0gMHgxMDAxCn07CiMgMzcwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFt
ZXdvcmsvSGVhZGVycy9PU0EuaCIgMwplbnVtIHsKICBrT1NBTW9kZVByZXZlbnRHZXRTb3VyY2Ug
PSAweDAwMDAwMDAxCn07CiMgMzgxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0Eu
aCIgMwplbnVtIHsKICBrT1NBTW9kZU5ldmVySW50ZXJhY3QgPSBrQUVOZXZlckludGVyYWN0LAog
IGtPU0FNb2RlQ2FuSW50ZXJhY3QgPSBrQUVDYW5JbnRlcmFjdCwKICBrT1NBTW9kZUFsd2F5c0lu
dGVyYWN0ID0ga0FFQWx3YXlzSW50ZXJhY3QsCiAga09TQU1vZGVEb250UmVjb25uZWN0ID0ga0FF
RG9udFJlY29ubmVjdAp9OwojIDM5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NB
LmgiIDMKZW51bSB7CiAga09TQU1vZGVDYW50U3dpdGNoTGF5ZXIgPSAweDAwMDAwMDQwCn07CiMg
NDEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwplbnVtIHsKICBrT1NB
TW9kZURvUmVjb3JkID0gMHgwMDAwMTAwMAp9OwojIDQyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3Jr
L0hlYWRlcnMvT1NBLmgiIDMKZW51bSB7CiAga09TQU1vZGVDb21waWxlSW50b0NvbnRleHQgPSAw
eDAwMDAwMDAyCn07CiMgNDM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIg
MwplbnVtIHsKICBrT1NBTW9kZUF1Z21lbnRDb250ZXh0ID0gMHgwMDAwMDAwNAp9OwoKCgoKCgoK
ZW51bSB7CiAga09TQU1vZGVEaXNwbGF5Rm9ySHVtYW5zID0gMHgwMDAwMDAwOAp9OwoKCgoKCgoK
ZW51bSB7CiAga09TQU1vZGVEb250U3RvcmVQYXJlbnQgPSAweDAwMDEwMDAwCn07CiMgNDY5ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3Bl
blNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwplbnVtIHsKICBrT1NBTW9kZURp
c3BhdGNoVG9EaXJlY3RPYmplY3QgPSAweDAwMDIwMDAwCn07CgoKCgoKZW51bSB7CiAga09TQU1v
ZGVEb250R2V0RGF0YUZvckFyZ3VtZW50cyA9IDB4MDAwNDAwMDAKfTsKCgoKCgoKZW51bSB7CiAg
a09TQU1vZGVGdWxseVF1YWxpZnlEZXNjcmlwdG9ycyA9IDB4MDAwODAwMDAKfTsKIyA1MDIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVu
U2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmVudW0gewogIGtPU0FTY3JpcHRS
ZXNvdXJjZVR5cGUgPSBrT1NBR2VuZXJpY1NjcmlwdGluZ0NvbXBvbmVudFN1YnR5cGUKfTsKCgoK
CgplbnVtIHsKICB0eXBlT1NBR2VuZXJpY1N0b3JhZ2UgPSBrT1NBU2NyaXB0UmVzb3VyY2VUeXBl
Cn07CiMgNTIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwpleHRlcm4g
T1NBRXJyb3IKT1NBTG9hZCgKICBDb21wb25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21wb25lbnQs
CiAgY29uc3QgQUVEZXNjICogc2NyaXB0RGF0YSwKICBTSW50MzIgbW9kZUZsYWdzLAogIE9TQUlE
ICogcmVzdWx0aW5nU2NyaXB0SUQpIDsKIyA1NTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFk
ZXJzL09TQS5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FTdG9yZSgKICBDb21wb25lbnRJbnN0YW5j
ZSBzY3JpcHRpbmdDb21wb25lbnQsCiAgT1NBSUQgc2NyaXB0SUQsCiAgRGVzY1R5cGUgZGVzaXJl
ZFR5cGUsCiAgU0ludDMyIG1vZGVGbGFncywKICBBRURlc2MgKiByZXN1bHRpbmdTY3JpcHREYXRh
KSA7CiMgNTgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwpleHRlcm4g
T1NBRXJyb3IKT1NBRXhlY3V0ZSgKICBDb21wb25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21wb25l
bnQsCiAgT1NBSUQgY29tcGlsZWRTY3JpcHRJRCwKICBPU0FJRCBjb250ZXh0SUQsCiAgU0ludDMy
IG1vZGVGbGFncywKICBPU0FJRCAqIHJlc3VsdGluZ1NjcmlwdFZhbHVlSUQpIDsKIyA2MjYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVu
U2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FE
aXNwbGF5KAogIENvbXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FJRCBz
Y3JpcHRWYWx1ZUlELAogIERlc2NUeXBlIGRlc2lyZWRUeXBlLAogIFNJbnQzMiBtb2RlRmxhZ3Ms
CiAgQUVEZXNjICogcmVzdWx0aW5nVGV4dCkgOwojIDY2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3Jr
L0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQUNvcHlEaXNwbGF5U3RyaW5nKAog
IENvbXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FJRCBzY3JpcHRJRCwK
ICBTSW50MzIgbW9kZUZsYWdzLAogIENGQXR0cmlidXRlZFN0cmluZ1JlZiAqIHJlc3VsdCkgOwoj
IDY4NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVy
cm9yCk9TQVNjcmlwdEVycm9yKAogIENvbXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVu
dCwKICBPU1R5cGUgc2VsZWN0b3IsCiAgRGVzY1R5cGUgZGVzaXJlZFR5cGUsCiAgQUVEZXNjICog
cmVzdWx0aW5nRXJyb3JEZXNjcmlwdGlvbikgOwojIDcxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3Jr
L0hlYWRlcnMvT1NBLmgiIDMKZW51bSB7CiAga09TQUVycm9yTnVtYmVyID0ga2V5RXJyb3JOdW1i
ZXIKfTsKIyA3MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmVudW0g
ewogIGtPU0FFcnJvck1lc3NhZ2UgPSBrZXlFcnJvclN0cmluZwp9OwojIDc0MiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRp
bmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZW51bSB7CiAga09TQUVycm9yQnJpZWZNZXNz
YWdlID0gJ2VycmInCn07CiMgNzU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0Eu
aCIgMwplbnVtIHsKICBrT1NBRXJyb3JBcHAgPSAnZXJhcCcKfTsKIyA3NjcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5n
LmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmVudW0gewogIGtPU0FFcnJvclBhcnRpYWxSZXN1
bHQgPSAncHRscicKfTsKIyA3NzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5o
IiAzCmVudW0gewogIGtPU0FFcnJvck9mZmVuZGluZ09iamVjdCA9ICdlcm9iJwp9OwoKCgoKCgpl
bnVtIHsKICBrT1NBRXJyb3JFeHBlY3RlZFR5cGUgPSAnZXJydCcKfTsKIyA3OTkgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0
aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmVudW0gewogIGtPU0FFcnJvclJhbmdlID0g
J2VybmcnCn07CgoKCgoKCmVudW0gewogIHR5cGVPU0FFcnJvclJhbmdlID0gJ2VybmcnCn07CgoK
CmVudW0gewogIGtleU9TQVNvdXJjZVN0YXJ0ID0gJ3NyY3MnCn07CgoKCmVudW0gewogIGtleU9T
QVNvdXJjZUVuZCA9ICdzcmNlJwp9OwojIDgzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRl
cnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQURpc3Bvc2UoCiAgQ29tcG9uZW50SW5zdGFu
Y2Ugc2NyaXB0aW5nQ29tcG9uZW50LAogIE9TQUlEIHNjcmlwdElEKSA7CiMgODU3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlw
dGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBU2V0U2Ny
aXB0SW5mbygKICBDb21wb25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21wb25lbnQsCiAgT1NBSUQg
c2NyaXB0SUQsCiAgT1NUeXBlIHNlbGVjdG9yLAogIGxvbmcgdmFsdWUpIDsKIyA4ODMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2Ny
aXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FHZXRT
Y3JpcHRJbmZvKAogIENvbXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FJ
RCBzY3JpcHRJRCwKICBPU1R5cGUgc2VsZWN0b3IsCiAgbG9uZyAqIHJlc3VsdCkgOwojIDkwNiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09w
ZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKdHlwZWRlZiBPU0VyciAoICog
T1NBQWN0aXZlUHJvY1B0cikoU1JlZkNvbiByZWZDb24pOwp0eXBlZGVmIE9TQUFjdGl2ZVByb2NQ
dHIgT1NBQWN0aXZlVVBQOwojIDkxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NB
LmgiIDMKZXh0ZXJuIE9TQUFjdGl2ZVVQUApOZXdPU0FBY3RpdmVVUFAoT1NBQWN0aXZlUHJvY1B0
ciB1c2VyUm91dGluZSkgOwojIDkyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NB
LmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZU9TQUFjdGl2ZVVQUChPU0FBY3RpdmVVUFAgdXNlclVQ
UCkgOwojIDkzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJu
IE9TRXJyCkludm9rZU9TQUFjdGl2ZVVQUCgKICBTUmVmQ29uIHJlZkNvbiwKICBPU0FBY3RpdmVV
UFAgdXNlclVQUCkgOwoKCgogICAgaW5saW5lIE9TQUFjdGl2ZVVQUCBOZXdPU0FBY3RpdmVVUFAo
T1NBQWN0aXZlUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAg
IGlubGluZSB2b2lkIERpc3Bvc2VPU0FBY3RpdmVVUFAoT1NBQWN0aXZlVVBQKSB7IH0KICAgIGlu
bGluZSBPU0VyciBJbnZva2VPU0FBY3RpdmVVUFAoU1JlZkNvbiByZWZDb24sIE9TQUFjdGl2ZVVQ
UCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHJlZkNvbik7IH0KIyA5NjMgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0
aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FTZXRBY3Rp
dmVQcm9jKAogIENvbXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FBY3Rp
dmVVUFAgYWN0aXZlUHJvYywKICBTUmVmQ29uIHJlZkNvbikgOwojIDk4NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcu
ZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQUdldEFjdGl2ZVBy
b2MoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29tcG9uZW50LAogIE9TQUFjdGl2ZVVQ
UCAqIGFjdGl2ZVByb2MsCiAgU1JlZkNvbiAqIHJlZkNvbikgOwojIDEwMTQgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5n
LmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FTY3JpcHRpbmdD
b21wb25lbnROYW1lKAogIENvbXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBB
RURlc2MgKiByZXN1bHRpbmdTY3JpcHRpbmdDb21wb25lbnROYW1lKSA7CiMgMTA0MCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3Jp
cHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQUNvbXBp
bGUoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29tcG9uZW50LAogIGNvbnN0IEFFRGVz
YyAqIHNvdXJjZURhdGEsCiAgU0ludDMyIG1vZGVGbGFncywKICBPU0FJRCAqIHByZXZpb3VzQW5k
UmVzdWx0aW5nU2NyaXB0SUQpIDsKIyAxMDg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVy
cy9PU0EuaCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBQ29weUlEKAogIENvbXBvbmVudEluc3RhbmNl
IHNjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FJRCBmcm9tSUQsCiAgT1NBSUQgKiB0b0lEKSA7CiMg
MTExMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVy
cm9yCk9TQUNvcHlTY3JpcHQoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29tcG9uZW50
LAogIE9TQUlEIGZyb21JRCwKICBPU0FJRCAqIHRvSUQpIDsKIyAxMTQxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5m
cmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBR2V0U291cmNlKAog
IENvbXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FJRCBzY3JpcHRJRCwK
ICBEZXNjVHlwZSBkZXNpcmVkVHlwZSwKICBBRURlc2MgKiByZXN1bHRpbmdTb3VyY2VEYXRhKSA7
CiMgMTE3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9T
QUVycm9yCk9TQUNvcHlTb3VyY2VTdHJpbmcoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5n
Q29tcG9uZW50LAogIE9TQUlEIHNjcmlwdElELAogIFNJbnQzMiBtb2RlRmxhZ3MsCiAgQ0ZBdHRy
aWJ1dGVkU3RyaW5nUmVmICogcmVzdWx0KSA7CiMgMTE5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3Jr
L0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQUNvZXJjZUZyb21EZXNjKAogIENv
bXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBjb25zdCBBRURlc2MgKiBzY3Jp
cHREYXRhLAogIFNJbnQzMiBtb2RlRmxhZ3MsCiAgT1NBSUQgKiByZXN1bHRpbmdTY3JpcHRJRCkg
OwojIDEyMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmV4dGVybiBP
U0FFcnJvcgpPU0FDb2VyY2VUb0Rlc2MoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29t
cG9uZW50LAogIE9TQUlEIHNjcmlwdElELAogIERlc2NUeXBlIGRlc2lyZWRUeXBlLAogIFNJbnQz
MiBtb2RlRmxhZ3MsCiAgQUVEZXNjICogcmVzdWx0KSA7CiMgMTI3MCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJh
bWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQVNldFNlbmRQcm9jKAog
IENvbXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FTZW5kVVBQIHNlbmRQ
cm9jLAogIFNSZWZDb24gcmVmQ29uKSA7CiMgMTI5MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hl
YWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQUdldFNlbmRQcm9jKAogIENvbXBvbmVu
dEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FTZW5kVVBQICogc2VuZFByb2MsCiAg
U1JlZkNvbiAqIHJlZkNvbikgOwojIDEzMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJz
L09TQS5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FTZXRDcmVhdGVQcm9jKAogIENvbXBvbmVudElu
c3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FDcmVhdGVBcHBsZUV2ZW50VVBQIGNyZWF0
ZVByb2MsCiAgU1JlZkNvbiByZWZDb24pIDsKIyAxMzM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsv
SGVhZGVycy9PU0EuaCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBR2V0Q3JlYXRlUHJvYygKICBDb21w
b25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21wb25lbnQsCiAgT1NBQ3JlYXRlQXBwbGVFdmVudFVQ
UCAqIGNyZWF0ZVByb2MsCiAgU1JlZkNvbiAqIHJlZkNvbikgOwojIDEzNjAgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5n
LmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FTZXREZWZhdWx0
VGFyZ2V0KAogIENvbXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBjb25zdCBB
RUFkZHJlc3NEZXNjICogdGFyZ2V0KSA7CiMgMTM5MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hl
YWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQVN0YXJ0UmVjb3JkaW5nKAogIENvbXBv
bmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FJRCAqIGNvbXBpbGVkU2NyaXB0
VG9Nb2RpZnlJRCkgOwojIDE0MjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5o
IiAzCmV4dGVybiBPU0FFcnJvcgpPU0FTdG9wUmVjb3JkaW5nKAogIENvbXBvbmVudEluc3RhbmNl
IHNjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FJRCBjb21waWxlZFNjcmlwdElEKSA7CiMgMTQ1MCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09w
ZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9T
QUxvYWRFeGVjdXRlKAogIENvbXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBj
b25zdCBBRURlc2MgKiBzY3JpcHREYXRhLAogIE9TQUlEIGNvbnRleHRJRCwKICBTSW50MzIgbW9k
ZUZsYWdzLAogIE9TQUlEICogcmVzdWx0aW5nU2NyaXB0VmFsdWVJRCkgOwojIDE0OTEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2Ny
aXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FDb21w
aWxlRXhlY3V0ZSgKICBDb21wb25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21wb25lbnQsCiAgY29u
c3QgQUVEZXNjICogc291cmNlRGF0YSwKICBPU0FJRCBjb250ZXh0SUQsCiAgU0ludDMyIG1vZGVG
bGFncywKICBPU0FJRCAqIHJlc3VsdGluZ1NjcmlwdFZhbHVlSUQpIDsKIyAxNTMxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlw
dGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBRG9TY3Jp
cHQoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29tcG9uZW50LAogIGNvbnN0IEFFRGVz
YyAqIHNvdXJjZURhdGEsCiAgT1NBSUQgY29udGV4dElELAogIERlc2NUeXBlIGRlc2lyZWRUeXBl
LAogIFNJbnQzMiBtb2RlRmxhZ3MsCiAgQUVEZXNjICogcmVzdWx0aW5nVGV4dCkgOwojIDE1ODkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9P
cGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmV4dGVybiBPU0FFcnJvcgpP
U0FTZXRDdXJyZW50RGlhbGVjdCgKICBDb21wb25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21wb25l
bnQsCiAgc2hvcnQgZGlhbGVjdENvZGUpIDsKIyAxNjExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsv
SGVhZGVycy9PU0EuaCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBR2V0Q3VycmVudERpYWxlY3QoCiAg
Q29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29tcG9uZW50LAogIHNob3J0ICogcmVzdWx0aW5n
RGlhbGVjdENvZGUpIDsKIyAxNjMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0Eu
aCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBQXZhaWxhYmxlRGlhbGVjdHMoCiAgQ29tcG9uZW50SW5z
dGFuY2Ugc2NyaXB0aW5nQ29tcG9uZW50LAogIEFFRGVzYyAqIHJlc3VsdGluZ0RpYWxlY3RJbmZv
TGlzdCkgOwojIDE2NTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5oIiAzCmV4
dGVybiBPU0FFcnJvcgpPU0FHZXREaWFsZWN0SW5mbygKICBDb21wb25lbnRJbnN0YW5jZSBzY3Jp
cHRpbmdDb21wb25lbnQsCiAgc2hvcnQgZGlhbGVjdENvZGUsCiAgT1NUeXBlIHNlbGVjdG9yLAog
IEFFRGVzYyAqIHJlc3VsdGluZ0RpYWxlY3RJbmZvKSA7CiMgMTY4OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJh
bWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQUF2YWlsYWJsZURpYWxl
Y3RDb2RlTGlzdCgKICBDb21wb25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21wb25lbnQsCiAgQUVE
ZXNjICogcmVzdWx0aW5nRGlhbGVjdENvZGVMaXN0KSA7CiMgMTczMCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJh
bWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQVNldFJlc3VtZURpc3Bh
dGNoUHJvYygKICBDb21wb25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21wb25lbnQsCiAgQUVFdmVu
dEhhbmRsZXJVUFAgcmVzdW1lRGlzcGF0Y2hQcm9jLAogIFNSZWZDb24gcmVmQ29uKSA7CiMgMTc1
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZW51bSB7CiAga09TQVVz
ZVN0YW5kYXJkRGlzcGF0Y2ggPSBrQUVVc2VTdGFuZGFyZERpc3BhdGNoCn07CiMgMTc2NSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5T
Y3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZW51bSB7CiAga09TQU5vRGlzcGF0
Y2ggPSBrQUVOb0Rpc3BhdGNoCn07CiMgMTc3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRl
cnMvT1NBLmgiIDMKZW51bSB7CiAga09TQURvbnRVc2VQaGFjID0gMHgwMDAxCn07CiMgMTc5OSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09w
ZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9T
QUdldFJlc3VtZURpc3BhdGNoUHJvYygKICBDb21wb25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21w
b25lbnQsCiAgQUVFdmVudEhhbmRsZXJVUFAgKiByZXN1bWVEaXNwYXRjaFByb2MsCiAgU1JlZkNv
biAqIHJlZkNvbikgOwojIDE4MjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQS5o
IiAzCmV4dGVybiBPU0FFcnJvcgpPU0FFeGVjdXRlRXZlbnQoCiAgQ29tcG9uZW50SW5zdGFuY2Ug
c2NyaXB0aW5nQ29tcG9uZW50LAogIGNvbnN0IEFwcGxlRXZlbnQgKiB0aGVBcHBsZUV2ZW50LAog
IE9TQUlEIGNvbnRleHRJRCwKICBTSW50MzIgbW9kZUZsYWdzLAogIE9TQUlEICogcmVzdWx0aW5n
U2NyaXB0VmFsdWVJRCkgOwojIDE4NjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09T
QS5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FEb0V2ZW50KAogIENvbXBvbmVudEluc3RhbmNlIHNj
cmlwdGluZ0NvbXBvbmVudCwKICBjb25zdCBBcHBsZUV2ZW50ICogdGhlQXBwbGVFdmVudCwKICBP
U0FJRCBjb250ZXh0SUQsCiAgU0ludDMyIG1vZGVGbGFncywKICBBcHBsZUV2ZW50ICogcmVwbHkp
IDsKIyAxOTEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwpleHRlcm4g
T1NBRXJyb3IKT1NBTWFrZUNvbnRleHQoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29t
cG9uZW50LAogIGNvbnN0IEFFRGVzYyAqIGNvbnRleHROYW1lLAogIE9TQUlEIHBhcmVudENvbnRl
eHQsCiAgT1NBSUQgKiByZXN1bHRpbmdDb250ZXh0SUQpIDsKIyAxOTQ3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5m
cmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBR2V0U2NyaXB0RGF0
YUZyb21VUkwoCiAgQ0ZVUkxSZWYgc2NyaXB0VVJMLAogIEJvb2xlYW4gKiBzdG9yYWJsZSwKICBT
SW50MzIgbW9kZUZsYWdzLAogIEFFRGVzYyAqIHJlc3VsdGluZ1NjcmlwdERhdGEpIDsKIyAxOTgz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
T3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwpleHRlcm4gT1NBRXJyb3IK
T1NBTG9hZFNjcmlwdERhdGEoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29tcG9uZW50
LAogIGNvbnN0IEFFRGVzYyAqIHNjcmlwdERhdGEsCiAgQ0ZVUkxSZWYgZnJvbVVSTCwKICBTSW50
MzIgbW9kZUZsYWdzLAogIE9TQUlEICogcmVzdWx0aW5nU2NyaXB0SUQpIDsKIyAyMDEyICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNj
cmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0EuaCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBTG9h
ZEZpbGUoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29tcG9uZW50LAogIGNvbnN0IEZT
UmVmICogc2NyaXB0RmlsZSwKICBCb29sZWFuICogc3RvcmFibGUsCiAgU0ludDMyIG1vZGVGbGFn
cywKICBPU0FJRCAqIHJlc3VsdGluZ1NjcmlwdElEKSA7CiMgMjA0MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJh
bWV3b3JrL0hlYWRlcnMvT1NBLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQVN0b3JlRmlsZSgKICBD
b21wb25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21wb25lbnQsCiAgT1NBSUQgc2NyaXB0SUQsCiAg
RGVzY1R5cGUgZGVzaXJlZFR5cGUsCiAgU0ludDMyIG1vZGVGbGFncywKICBjb25zdCBGU1JlZiAq
IHNjcmlwdEZpbGUpIDsKIyAyMDY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0Eu
aCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBTG9hZEV4ZWN1dGVGaWxlKAogIENvbXBvbmVudEluc3Rh
bmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBjb25zdCBGU1JlZiAqIHNjcmlwdEZpbGUsCiAgT1NB
SUQgY29udGV4dElELAogIFNJbnQzMiBtb2RlRmxhZ3MsCiAgT1NBSUQgKiByZXN1bHRpbmdTY3Jp
cHRWYWx1ZUlEKSA7CiMgMjA5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBLmgi
IDMKZXh0ZXJuIE9TQUVycm9yCk9TQURvU2NyaXB0RmlsZSgKICBDb21wb25lbnRJbnN0YW5jZSBz
Y3JpcHRpbmdDb21wb25lbnQsCiAgY29uc3QgRlNSZWYgKiBzY3JpcHRGaWxlLAogIE9TQUlEIGNv
bnRleHRJRCwKICBEZXNjVHlwZSBkZXNpcmVkVHlwZSwKICBTSW50MzIgbW9kZUZsYWdzLAogIEFF
RGVzYyAqIHJlc3VsdGluZ1RleHQpIDsKIyAyMTIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVh
ZGVycy9PU0EuaCIgMwp9CiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09wZW5T
Y3JpcHRpbmcuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NB
Q29tcC5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBQ29tcC5o
IiAzCiNkZWZpbmUgX19PU0FDT01QX18gCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFk
ZXJzL09TQUNvbXAuaCIgMwpleHRlcm4gIkMiIHsKIyA0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3Jr
L0hlYWRlcnMvT1NBQ29tcC5oIiAzCmV4dGVybiBPU0VycgpPU0FHZXRTdG9yYWdlVHlwZSgKICBB
RURhdGFTdG9yYWdlIHNjcmlwdERhdGEsCiAgRGVzY1R5cGUgKiBkc2NUeXBlKSA7CiMgNjIgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVu
U2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQUNvbXAuaCIgMwpleHRlcm4gT1NFcnIKT1NB
QWRkU3RvcmFnZVR5cGUoCiAgQUVEYXRhU3RvcmFnZSBzY3JpcHREYXRhLAogIERlc2NUeXBlIGRz
Y1R5cGUpIDsKIyA3NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBQ29tcC5oIiAz
CmV4dGVybiBPU0VycgpPU0FSZW1vdmVTdG9yYWdlVHlwZShBRURhdGFTdG9yYWdlIHNjcmlwdERh
dGEpIDsKCgoKCn0KIyAzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT3BlblNjcmlw
dGluZy5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0FHZW5l
cmljLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0FHZW5lcmlj
LmgiIDMKI2RlZmluZSBfX09TQUdFTkVSSUNfXyAKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3Jr
L0hlYWRlcnMvT1NBR2VuZXJpYy5oIiAzCmV4dGVybiAiQyIgewojIDQ4ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5m
cmFtZXdvcmsvSGVhZGVycy9PU0FHZW5lcmljLmgiIDMKZW51bSB7CgogIGtHZW5lcmljQ29tcG9u
ZW50VmVyc2lvbiA9IDB4MDEwMAp9OwoKZW51bSB7CiAga0dTU1NlbGVjdEdldERlZmF1bHRTY3Jp
cHRpbmdDb21wb25lbnQgPSAweDEwMDEsCiAga0dTU1NlbGVjdFNldERlZmF1bHRTY3JpcHRpbmdD
b21wb25lbnQgPSAweDEwMDIsCiAga0dTU1NlbGVjdEdldFNjcmlwdGluZ0NvbXBvbmVudCA9IDB4
MTAwMywKICBrR1NTU2VsZWN0R2V0U2NyaXB0aW5nQ29tcG9uZW50RnJvbVN0b3JlZCA9IDB4MTAw
NCwKICBrR1NTU2VsZWN0R2VuZXJpY1RvUmVhbElEID0gMHgxMDA1LAogIGtHU1NTZWxlY3RSZWFs
VG9HZW5lcmljSUQgPSAweDEwMDYsCiAga0dTU1NlbGVjdE91dE9mUmFuZ2UgPSAweDEwMDcKfTsK
CnR5cGVkZWYgT1NUeXBlIFNjcmlwdGluZ0NvbXBvbmVudFNlbGVjdG9yOwp0eXBlZGVmIE9TQUlE
IEdlbmVyaWNJRDsKIyA3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NBR2VuZXJp
Yy5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FHZXREZWZhdWx0U2NyaXB0aW5nQ29tcG9uZW50KAog
IENvbXBvbmVudEluc3RhbmNlIGdlbmVyaWNTY3JpcHRpbmdDb21wb25lbnQsCiAgU2NyaXB0aW5n
Q29tcG9uZW50U2VsZWN0b3IgKiBzY3JpcHRpbmdTdWJUeXBlKSA7CiMgODggIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5n
LmZyYW1ld29yay9IZWFkZXJzL09TQUdlbmVyaWMuaCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBU2V0
RGVmYXVsdFNjcmlwdGluZ0NvbXBvbmVudCgKICBDb21wb25lbnRJbnN0YW5jZSBnZW5lcmljU2Ny
aXB0aW5nQ29tcG9uZW50LAogIFNjcmlwdGluZ0NvbXBvbmVudFNlbGVjdG9yIHNjcmlwdGluZ1N1
YlR5cGUpIDsKIyAxMDMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQUdlbmVyaWMu
aCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBR2V0U2NyaXB0aW5nQ29tcG9uZW50KAogIENvbXBvbmVu
dEluc3RhbmNlIGdlbmVyaWNTY3JpcHRpbmdDb21wb25lbnQsCiAgU2NyaXB0aW5nQ29tcG9uZW50
U2VsZWN0b3Igc2NyaXB0aW5nU3ViVHlwZSwKICBDb21wb25lbnRJbnN0YW5jZSAqIHNjcmlwdGlu
Z0luc3RhbmNlKSA7CiMgMTE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PU0FHZW5l
cmljLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQUdldFNjcmlwdGluZ0NvbXBvbmVudEZyb21TdG9y
ZWQoCiAgQ29tcG9uZW50SW5zdGFuY2UgZ2VuZXJpY1NjcmlwdGluZ0NvbXBvbmVudCwKICBjb25z
dCBBRURlc2MgKiBzY3JpcHREYXRhLAogIFNjcmlwdGluZ0NvbXBvbmVudFNlbGVjdG9yICogc2Ny
aXB0aW5nU3ViVHlwZSkgOwojIDEzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT1NB
R2VuZXJpYy5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FHZW5lcmljVG9SZWFsSUQoCiAgQ29tcG9u
ZW50SW5zdGFuY2UgZ2VuZXJpY1NjcmlwdGluZ0NvbXBvbmVudCwKICBPU0FJRCAqIHRoZVNjcmlw
dElELAogIENvbXBvbmVudEluc3RhbmNlICogdGhlRXhhY3RDb21wb25lbnQpIDsKIyAxNTEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVu
U2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09TQUdlbmVyaWMuaCIgMwpleHRlcm4gT1NBRXJy
b3IKT1NBUmVhbFRvR2VuZXJpY0lEKAogIENvbXBvbmVudEluc3RhbmNlIGdlbmVyaWNTY3JpcHRp
bmdDb21wb25lbnQsCiAgT1NBSUQgKiB0aGVTY3JpcHRJRCwKICBDb21wb25lbnRJbnN0YW5jZSB0
aGVFeGFjdENvbXBvbmVudCkgOwoKCgoKCgp9CiMgMzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9I
ZWFkZXJzL09wZW5TY3JpcHRpbmcuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3Jr
L0hlYWRlcnMvQXBwbGVTY3JpcHQuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9I
ZWFkZXJzL0FwcGxlU2NyaXB0LmgiIDMKI2RlZmluZSBfX0FQUExFU0NSSVBUX18gCiMgNDAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVu
U2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlU2NyaXB0LmgiIDMKZXh0ZXJuICJDIiB7
CiMgNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlU2NyaXB0LmgiIDMKZW51
bSB7CiAgdHlwZUFwcGxlU2NyaXB0ID0gJ2FzY3InLAogIGtBcHBsZVNjcmlwdFN1YnR5cGUgPSB0
eXBlQXBwbGVTY3JpcHQsCiAgdHlwZUFTU3RvcmFnZSA9IHR5cGVBcHBsZVNjcmlwdAp9OwoKCgoK
CmVudW0gewogIGtBU1NlbGVjdEluaXQgPSAweDEwMDEsCiAga0FTU2VsZWN0U2V0U291cmNlU3R5
bGVzID0gMHgxMDAyLAogIGtBU1NlbGVjdEdldFNvdXJjZVN0eWxlcyA9IDB4MTAwMywKICBrQVNT
ZWxlY3RHZXRTb3VyY2VTdHlsZU5hbWVzID0gMHgxMDA0LAogIGtBU1NlbGVjdENvcHlTb3VyY2VB
dHRyaWJ1dGVzID0gMHgxMDA1LAogIGtBU1NlbGVjdFNldFNvdXJjZUF0dHJpYnV0ZXMgPSAweDEw
MDYKfTsKCgoKCgplbnVtIHsKICBrQVNIYXNPcGVuSGFuZGxlciA9ICdoc29kJwp9OwojIDk1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3Bl
blNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9BcHBsZVNjcmlwdC5oIiAzCmV4dGVybiBPU0FF
cnJvcgpBU0luaXQoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29tcG9uZW50LAogIFNJ
bnQzMiBtb2RlRmxhZ3MsCiAgVUludDMyIG1pblN0YWNrU2l6ZSwKICBVSW50MzIgcHJlZmVycmVk
U3RhY2tTaXplLAogIFVJbnQzMiBtYXhTdGFja1NpemUsCiAgVUludDMyIG1pbkhlYXBTaXplLAog
IFVJbnQzMiBwcmVmZXJyZWRIZWFwU2l6ZSwKICBVSW50MzIgbWF4SGVhcFNpemUpIDsKIyAxMjIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9P
cGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlU2NyaXB0LmgiIDMKZW51bSB7CiAg
a0FTRGVmYXVsdE1pblN0YWNrU2l6ZSA9IDQgKiAxMDI0LAogIGtBU0RlZmF1bHRQcmVmZXJyZWRT
dGFja1NpemUgPSAxNiAqIDEwMjQsCiAga0FTRGVmYXVsdE1heFN0YWNrU2l6ZSA9IDE2ICogMTAy
NCwKICBrQVNEZWZhdWx0TWluSGVhcFNpemUgPSA0ICogMTAyNCwKICBrQVNEZWZhdWx0UHJlZmVy
cmVkSGVhcFNpemUgPSAxNiAqIDEwMjQsCiAga0FTRGVmYXVsdE1heEhlYXBTaXplID0gMzJMICog
MTAyNCAqIDEwMjQKfTsKIyAxNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL0FwcGxl
U2NyaXB0LmgiIDMKZXh0ZXJuIE9TQUVycm9yCkFTU2V0U291cmNlU3R5bGVzKAogIENvbXBvbmVu
dEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBTVEhhbmRsZSBzb3VyY2VTdHlsZXMpIF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxNjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9I
ZWFkZXJzL0FwcGxlU2NyaXB0LmgiIDMKZXh0ZXJuIE9TQUVycm9yCkFTR2V0U291cmNlU3R5bGVz
KAogIENvbXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBTVEhhbmRsZSAqIHJl
c3VsdGluZ1NvdXJjZVN0eWxlcykgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDE5NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09w
ZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvQXBwbGVTY3JpcHQuaCIgMwpleHRlcm4gT1NB
RXJyb3IKQVNDb3B5U291cmNlQXR0cmlidXRlcygKICBDb21wb25lbnRJbnN0YW5jZSBzY3JpcHRp
bmdDb21wb25lbnQsCiAgQ0ZBcnJheVJlZiAqIHJlc3VsdGluZ1NvdXJjZUF0dHJpYnV0ZXMpIDsK
IyAyMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlU2NyaXB0LmgiIDMKZXh0
ZXJuIE9TQUVycm9yCkFTU2V0U291cmNlQXR0cmlidXRlcygKICBDb21wb25lbnRJbnN0YW5jZSBz
Y3JpcHRpbmdDb21wb25lbnQsCiAgQ0ZBcnJheVJlZiBzb3VyY2VBdHRyaWJ1dGVzKSA7CiMgMjU2
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
T3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9BcHBsZVNjcmlwdC5oIiAzCmV4dGVybiBP
U0FFcnJvcgpBU0dldFNvdXJjZVN0eWxlTmFtZXMoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0
aW5nQ29tcG9uZW50LAogIFNJbnQzMiBtb2RlRmxhZ3MsCiAgQUVEZXNjTGlzdCAqIHJlc3VsdGlu
Z1NvdXJjZVN0eWxlTmFtZXNMaXN0KSA7CgoKCgoKCgplbnVtIHsKICBrQVNTb3VyY2VTdHlsZVVu
Y29tcGlsZWRUZXh0ID0gMCwKICBrQVNTb3VyY2VTdHlsZU5vcm1hbFRleHQgPSAxLAogIGtBU1Nv
dXJjZVN0eWxlTGFuZ3VhZ2VLZXl3b3JkID0gMiwKICBrQVNTb3VyY2VTdHlsZUFwcGxpY2F0aW9u
S2V5d29yZCA9IDMsCiAga0FTU291cmNlU3R5bGVDb21tZW50ID0gNCwKICBrQVNTb3VyY2VTdHls
ZUxpdGVyYWwgPSA1LAogIGtBU1NvdXJjZVN0eWxlVXNlclN5bWJvbCA9IDYsCiAga0FTU291cmNl
U3R5bGVPYmplY3RTcGVjaWZpZXIgPSA3LAogIGtBU1NvdXJjZVN0eWxlU3RyaW5nID0gNywKICBr
QVNTb3VyY2VTdHlsZUV2ZW50TmFtZSA9IDgsCiAga0FTU291cmNlU3R5bGVQYXJhbWV0ZXJOYW1l
ID0gOSwKICBrQVNTb3VyY2VTdHlsZUNsYXNzID0gMTAsCiAga0FTU291cmNlU3R5bGVQcm9wZXJ0
eSA9IDExLAogIGtBU1NvdXJjZVN0eWxlRW51bVZhbHVlID0gMTIsCiAga0FTU291cmNlU3R5bGVE
eW5hbWljRXZlbnROYW1lID0gMTMsCiAga0FTU291cmNlU3R5bGVEeW5hbWljUGFyYW1ldGVyTmFt
ZSA9IDE0LAogIGtBU1NvdXJjZVN0eWxlRHluYW1pY0NsYXNzID0gMTUsCiAga0FTU291cmNlU3R5
bGVEeW5hbWljUHJvcGVydHkgPSAxNiwKICBrQVNTb3VyY2VTdHlsZUR5bmFtaWNFbnVtVmFsdWUg
PSAxNywKICBrQVNOdW1iZXJPZlNvdXJjZVN0eWxlcyA9IDE4Cn07CgoKCgp9CiMgNDMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2Ny
aXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL09wZW5TY3JpcHRpbmcuaCIgMiAzCgoKCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5T
Y3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvQVNEZWJ1Z2dpbmcuaCIgMSAzCiMgMTcgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2Ny
aXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL0FTRGVidWdnaW5nLmgiIDMKI2RlZmluZSBfX0FTREVC
VUdHSU5HX18gCiMgMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL0FTRGVidWdnaW5n
LmgiIDMKZXh0ZXJuICJDIiB7CiMgNDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL0FT
RGVidWdnaW5nLmgiIDMKZW51bSB7CiAga09TQU1vZGVEb250RGVmaW5lID0gMHgwMDAxCn07CgoK
CgplbnVtIHsKICBrQVNTZWxlY3RTZXRQcm9wZXJ0eU9ic29sZXRlID0gMHgxMTAxLAogIGtBU1Nl
bGVjdEdldFByb3BlcnR5T2Jzb2xldGUgPSAweDExMDIsCiAga0FTU2VsZWN0U2V0SGFuZGxlck9i
c29sZXRlID0gMHgxMTAzLAogIGtBU1NlbGVjdEdldEhhbmRsZXJPYnNvbGV0ZSA9IDB4MTEwNCwK
ICBrQVNTZWxlY3RHZXRBcHBUZXJtaW5vbG9neU9ic29sZXRlID0gMHgxMTA1LAogIGtBU1NlbGVj
dFNldFByb3BlcnR5ID0gMHgxMTA2LAogIGtBU1NlbGVjdEdldFByb3BlcnR5ID0gMHgxMTA3LAog
IGtBU1NlbGVjdFNldEhhbmRsZXIgPSAweDExMDgsCiAga0FTU2VsZWN0R2V0SGFuZGxlciA9IDB4
MTEwOSwKICBrQVNTZWxlY3RHZXRBcHBUZXJtaW5vbG9neSA9IDB4MTEwQSwKICBrQVNTZWxlY3RH
ZXRTeXNUZXJtaW5vbG9neSA9IDB4MTEwQiwKICBrQVNTZWxlY3RHZXRQcm9wZXJ0eU5hbWVzID0g
MHgxMTBDLAogIGtBU1NlbGVjdEdldEhhbmRsZXJOYW1lcyA9IDB4MTEwRAp9OwojIDgxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNj
cmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9BU0RlYnVnZ2luZy5oIiAzCmV4dGVybiBPU0FFcnJv
cgpPU0FTZXRQcm9wZXJ0eSgKICBDb21wb25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21wb25lbnQs
CiAgU0ludDMyIG1vZGVGbGFncywKICBPU0FJRCBjb250ZXh0SUQsCiAgY29uc3QgQUVEZXNjICog
dmFyaWFibGVOYW1lLAogIE9TQUlEIHNjcmlwdFZhbHVlSUQpIDsKIyA5OCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcu
ZnJhbWV3b3JrL0hlYWRlcnMvQVNEZWJ1Z2dpbmcuaCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBR2V0
UHJvcGVydHkoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29tcG9uZW50LAogIFNJbnQz
MiBtb2RlRmxhZ3MsCiAgT1NBSUQgY29udGV4dElELAogIGNvbnN0IEFFRGVzYyAqIHZhcmlhYmxl
TmFtZSwKICBPU0FJRCAqIHJlc3VsdGluZ1NjcmlwdFZhbHVlSUQpIDsKIyAxMTUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0
aW5nLmZyYW1ld29yay9IZWFkZXJzL0FTRGVidWdnaW5nLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9T
QUdldFByb3BlcnR5TmFtZXMoCiAgQ29tcG9uZW50SW5zdGFuY2Ugc2NyaXB0aW5nQ29tcG9uZW50
LAogIFNJbnQzMiBtb2RlRmxhZ3MsCiAgT1NBSUQgY29udGV4dElELAogIEFFRGVzY0xpc3QgKiBy
ZXN1bHRpbmdQcm9wZXJ0eU5hbWVzKSA7CiMgMTMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVh
ZGVycy9BU0RlYnVnZ2luZy5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FTZXRIYW5kbGVyKAogIENv
bXBvbmVudEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBTSW50MzIgbW9kZUZsYWdzLAog
IE9TQUlEIGNvbnRleHRJRCwKICBjb25zdCBBRURlc2MgKiBoYW5kbGVyTmFtZSwKICBPU0FJRCBj
b21waWxlZFNjcmlwdElEKSA7CiMgMTQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9B
U0RlYnVnZ2luZy5oIiAzCmV4dGVybiBPU0FFcnJvcgpPU0FHZXRIYW5kbGVyKAogIENvbXBvbmVu
dEluc3RhbmNlIHNjcmlwdGluZ0NvbXBvbmVudCwKICBTSW50MzIgbW9kZUZsYWdzLAogIE9TQUlE
IGNvbnRleHRJRCwKICBjb25zdCBBRURlc2MgKiBoYW5kbGVyTmFtZSwKICBPU0FJRCAqIHJlc3Vs
dGluZ0NvbXBpbGVkU2NyaXB0SUQpIDsKIyAxNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFk
ZXJzL0FTRGVidWdnaW5nLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQUdldEhhbmRsZXJOYW1lcygK
ICBDb21wb25lbnRJbnN0YW5jZSBzY3JpcHRpbmdDb21wb25lbnQsCiAgU0ludDMyIG1vZGVGbGFn
cywKICBPU0FJRCBjb250ZXh0SUQsCiAgQUVEZXNjTGlzdCAqIHJlc3VsdGluZ0hhbmRsZXJOYW1l
cykgOwojIDIxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvQVNEZWJ1Z2dpbmcuaCIg
MwpleHRlcm4gT1NBRXJyb3IKT1NBR2V0U3lzVGVybWlub2xvZ3koCiAgQ29tcG9uZW50SW5zdGFu
Y2Ugc2NyaXB0aW5nQ29tcG9uZW50LAogIFNJbnQzMiBtb2RlRmxhZ3MsCiAgc2hvcnQgdGVybWlu
b2xvZ3lJRCwKICBBRURlc2MgKiB0ZXJtaW5vbG9neUxpc3QpIDsKIyAyNDEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5n
LmZyYW1ld29yay9IZWFkZXJzL0FTRGVidWdnaW5nLmgiIDMKZXh0ZXJuIE9TQUVycm9yCk9TQUNv
cHlTY3JpcHRpbmdEZWZpbml0aW9uKAogIGNvbnN0IEZTUmVmICogcmVmLAogIFNJbnQzMiBtb2Rl
RmxhZ3MsCiAgQ0ZEYXRhUmVmICogc2RlZikgOwojIDI3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3Jr
L0hlYWRlcnMvQVNEZWJ1Z2dpbmcuaCIgMwpleHRlcm4gT1NBRXJyb3IKT1NBQ29weVNjcmlwdGlu
Z0RlZmluaXRpb25Gcm9tVVJMKAogIENGVVJMUmVmIHVybCwKICBTSW50MzIgbW9kZUZsYWdzLAog
IENGRGF0YVJlZiAqIHNkZWYpIDsKIyAzNzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJz
L0FTRGVidWdnaW5nLmgiIDMKfQojIDQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9P
cGVuU2NyaXB0aW5nLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJz
L0FTUmVnaXN0cnkuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL0FT
UmVnaXN0cnkuaCIgMwojZGVmaW5lIF9fQVNSRUdJU1RSWV9fIAojIDMxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5m
cmFtZXdvcmsvSGVhZGVycy9BU1JlZ2lzdHJ5LmgiIDMKZW51bSB7CiAga2V5QUVUYXJnZXQgPSAn
dGFyZycsCiAga2V5U3ViamVjdEF0dHIgPSAnc3ViaicsCiAga2V5QVNSZXR1cm5pbmcgPSAnS3J0
bicsCiAga0FTQXBwbGVTY3JpcHRTdWl0ZSA9ICdhc2NyJywKICBrQVNTY3JpcHRFZGl0b3JTdWl0
ZSA9ICdUb3lTJywKICBrQVNUeXBlTmFtZXNTdWl0ZSA9ICd0cG5tJywKICB0eXBlQUVURSA9ICdh
ZXRlJywKICB0eXBlQUVVVCA9ICdhZXV0JywKICBrR2V0QUVURSA9ICdnZHRlJywKICBrR2V0QUVV
VCA9ICdnZHV0JywKICBrVXBkYXRlQUVVVCA9ICd1ZHV0JywKICBrVXBkYXRlQUVURSA9ICd1ZHRl
JywKICBrQ2xlYW5VcEFFVVQgPSAnY2R1dCcsCiAga0FTQ29tbWVudCA9ICdjbW50JywKICBrQVNM
YXVuY2hFdmVudCA9ICdub29wJywKICBrZXlTY3N6UmVzb3VyY2UgPSAnc2NzeicsCiAgdHlwZVNj
c3pSZXNvdXJjZSA9ICdzY3N6JywKICBrQVNTdWJyb3V0aW5lRXZlbnQgPSAncHNicicsCiAga2V5
QVNTdWJyb3V0aW5lTmFtZSA9ICdzbmFtJywKICBrQVNQcmVwb3NpdGlvbmFsU3Vicm91dGluZSA9
ICdwc2JyJywKICBrZXlBU1Bvc2l0aW9uYWxBcmdzID0gJ3BhcmcnCn07CgplbnVtIHsKCiAga2V5
QXBwSGFuZGxlZENvZXJjaW9uID0gJ2lkYXMnCn07CgplbnVtIHsKCiAga0FTU3RhcnRMb2dFdmVu
dCA9ICdsb2cxJywKICBrQVNTdG9wTG9nRXZlbnQgPSAnbG9nMCcsCiAga0FTQ29tbWVudEV2ZW50
ID0gJ2NtbnQnCn07CgoKCmVudW0gewoKICBrQVNBZGQgPSAnKyAgICcsCiAga0FTU3VidHJhY3Qg
PSAnLSAgICcsCiAga0FTTXVsdGlwbHkgPSAnKiAgICcsCiAga0FTRGl2aWRlID0gJy8gICAnLAog
IGtBU1F1b3RpZW50ID0gJ2RpdiAnLAogIGtBU1JlbWFpbmRlciA9ICdtb2QgJywKICBrQVNQb3dl
ciA9ICdeICAgJywKICBrQVNFcXVhbCA9IGtBRUVxdWFscywKICBrQVNOb3RFcXVhbCA9IChpbnQp
MHhBRDIwMjAyMCwKICBrQVNHcmVhdGVyVGhhbiA9IGtBRUdyZWF0ZXJUaGFuLAogIGtBU0dyZWF0
ZXJUaGFuT3JFcXVhbCA9IGtBRUdyZWF0ZXJUaGFuRXF1YWxzLAogIGtBU0xlc3NUaGFuID0ga0FF
TGVzc1RoYW4sCiAga0FTTGVzc1RoYW5PckVxdWFsID0ga0FFTGVzc1RoYW5FcXVhbHMsCiAga0FT
Q29tZXNCZWZvcmUgPSAnY2JmcicsCiAga0FTQ29tZXNBZnRlciA9ICdjYWZyJywKICBrQVNDb25j
YXRlbmF0ZSA9ICdjY2F0JywKICBrQVNTdGFydHNXaXRoID0ga0FFQmVnaW5zV2l0aCwKICBrQVNF
bmRzV2l0aCA9IGtBRUVuZHNXaXRoLAogIGtBU0NvbnRhaW5zID0ga0FFQ29udGFpbnMKfTsKCmVu
dW0gewogIGtBU0FuZCA9IGtBRUFORCwKICBrQVNPciA9IGtBRU9SLAogIGtBU05vdCA9IGtBRU5P
VCwKICBrQVNOZWdhdGUgPSAnbmVnICcsCiAga2V5QVNBcmcgPSAnYXJnICcKfTsKCmVudW0gewoK
ICBrQVNFcnJvckV2ZW50Q29kZSA9ICdlcnIgJywKICBrT1NBRXJyb3JBcmdzID0gJ2VycmEnLAog
IGtleUFFRXJyb3JPYmplY3QgPSAnZXJvYicsCiAgcExlbmd0aCA9ICdsZW5nJywKICBwUmV2ZXJz
ZSA9ICdydnNlJywKICBwUmVzdCA9ICdyZXN0JywKICBwSW5oZXJpdHMgPSAnY0AjXicsCiAgcFBy
b3BlcnRpZXMgPSAncEFMTCcsCiAga2V5QVNVc2VyUmVjb3JkRmllbGRzID0gJ3VzcmYnLAogIHR5
cGVVc2VyUmVjb3JkRmllbGRzID0gdHlwZUFFTGlzdAp9OwoKCmVudW0gewogIGtleUFTUHJlcG9z
aXRpb25BdCA9ICdhdCAgJywKICBrZXlBU1ByZXBvc2l0aW9uSW4gPSAnaW4gICcsCiAga2V5QVNQ
cmVwb3NpdGlvbkZyb20gPSAnZnJvbScsCiAga2V5QVNQcmVwb3NpdGlvbkZvciA9ICdmb3IgJywK
ICBrZXlBU1ByZXBvc2l0aW9uVG8gPSAndG8gICcsCiAga2V5QVNQcmVwb3NpdGlvblRocnUgPSAn
dGhydScsCiAga2V5QVNQcmVwb3NpdGlvblRocm91Z2ggPSAndGhnaCcsCiAga2V5QVNQcmVwb3Np
dGlvbkJ5ID0gJ2J5ICAnLAogIGtleUFTUHJlcG9zaXRpb25PbiA9ICdvbiAgJywKICBrZXlBU1By
ZXBvc2l0aW9uSW50byA9ICdpbnRvJywKICBrZXlBU1ByZXBvc2l0aW9uT250byA9ICdvbnRvJywK
ICBrZXlBU1ByZXBvc2l0aW9uQmV0d2VlbiA9ICdidHduJywKICBrZXlBU1ByZXBvc2l0aW9uQWdh
aW5zdCA9ICdhZ3N0JywKICBrZXlBU1ByZXBvc2l0aW9uT3V0T2YgPSAnb3V0bycsCiAga2V5QVNQ
cmVwb3NpdGlvbkluc3RlYWRPZiA9ICdpc3RvJywKICBrZXlBU1ByZXBvc2l0aW9uQXNpZGVGcm9t
ID0gJ2FzZGYnLAogIGtleUFTUHJlcG9zaXRpb25Bcm91bmQgPSAnYXJuZCcsCiAga2V5QVNQcmVw
b3NpdGlvbkJlc2lkZSA9ICdic2lkJywKICBrZXlBU1ByZXBvc2l0aW9uQmVuZWF0aCA9ICdibnRo
JywKICBrZXlBU1ByZXBvc2l0aW9uVW5kZXIgPSAndW5kcicKfTsKCmVudW0gewogIGtleUFTUHJl
cG9zaXRpb25PdmVyID0gJ292ZXInLAogIGtleUFTUHJlcG9zaXRpb25BYm92ZSA9ICdhYnZlJywK
ICBrZXlBU1ByZXBvc2l0aW9uQmVsb3cgPSAnYmVsdycsCiAga2V5QVNQcmVwb3NpdGlvbkFwYXJ0
RnJvbSA9ICdhcHJ0JywKICBrZXlBU1ByZXBvc2l0aW9uR2l2ZW4gPSAnZ2l2bicsCiAga2V5QVNQ
cmVwb3NpdGlvbldpdGggPSAnd2l0aCcsCiAga2V5QVNQcmVwb3NpdGlvbldpdGhvdXQgPSAnd291
dCcsCiAga2V5QVNQcmVwb3NpdGlvbkFib3V0ID0gJ2Fib3UnLAogIGtleUFTUHJlcG9zaXRpb25T
aW5jZSA9ICdzbmNlJywKICBrZXlBU1ByZXBvc2l0aW9uVW50aWwgPSAndGlsbCcKfTsKCmVudW0g
ewoKICBrRGlhbGVjdEJ1bmRsZVJlc1R5cGUgPSAnRGJkbCcsCiAgY0NvbnN0YW50ID0gdHlwZUVu
dW1lcmF0ZWQsCiAgY0NsYXNzSWRlbnRpZmllciA9IHBDbGFzcywKICBjT2JqZWN0QmVpbmdFeGFt
aW5lZCA9IHR5cGVPYmplY3RCZWluZ0V4YW1pbmVkLAogIGNMaXN0ID0gdHlwZUFFTGlzdCwKICBj
U21hbGxSZWFsID0gdHlwZUlFRUUzMkJpdEZsb2F0aW5nUG9pbnQsCiAgY1JlYWwgPSB0eXBlSUVF
RTY0Qml0RmxvYXRpbmdQb2ludCwKICBjUmVjb3JkID0gdHlwZUFFUmVjb3JkLAogIGNSZWZlcmVu
Y2UgPSBjT2JqZWN0U3BlY2lmaWVyLAogIGNVbmRlZmluZWQgPSAndW5kZicsCiAgY01pc3NpbmdW
YWx1ZSA9ICdtc25nJywKICBjU3ltYm9sID0gJ3N5bWInLAogIGNMaW5rZWRMaXN0ID0gJ2xsc3Qn
LAogIGNWZWN0b3IgPSAndmVjdCcsCiAgY0V2ZW50SWRlbnRpZmllciA9ICdldm50JywKICBjS2V5
SWRlbnRpZmllciA9ICdreWlkJywKICBjVXNlcklkZW50aWZpZXIgPSAndWlkICcsCiAgY1ByZXBv
c2l0aW9uID0gJ3ByZXAnLAogIGNLZXlGb3JtID0gZW51bUtleUZvcm0sCiAgY1NjcmlwdCA9ICdz
Y3B0JywKICBjSGFuZGxlciA9ICdoYW5kJywKICBjUHJvY2VkdXJlID0gJ3Byb2MnCn07CgplbnVt
IHsKICBjSGFuZGxlQnJlYWtwb2ludCA9ICdicmFrJwp9OwoKZW51bSB7CiAgY0Nsb3N1cmUgPSAn
Y2xzcicsCiAgY1Jhd0RhdGEgPSAncmRhdCcsCiAgY1N0cmluZ0NsYXNzID0gdHlwZUNoYXIsCiAg
Y051bWJlciA9ICdubWJyJywKICBjTGlzdEVsZW1lbnQgPSAnY2VsbScsCiAgY0xpc3RPclJlY29y
ZCA9ICdsciAgJywKICBjTGlzdE9yU3RyaW5nID0gJ2xzICAnLAogIGNMaXN0UmVjb3JkT3JTdHJp
bmcgPSAnbHJzICcsCiAgY051bWJlck9yU3RyaW5nID0gJ25zICAnLAogIGNOdW1iZXJPckRhdGVU
aW1lID0gJ25kICAnLAogIGNOdW1iZXJEYXRlVGltZU9yU3RyaW5nID0gJ25kcyAnLAogIGNBbGlh
c09yU3RyaW5nID0gJ3NmICAnLAogIGNTZWNvbmRzID0gJ3NjbmQnLAogIHR5cGVTb3VuZCA9ICdz
bmQgJywKICBlbnVtQm9vbGVhblZhbHVlcyA9ICdib292JywKICBrQUVUcnVlID0gdHlwZVRydWUs
CiAga0FFRmFsc2UgPSB0eXBlRmFsc2UsCiAgZW51bU1pc2NWYWx1ZXMgPSAnbWlzYycsCiAga0FT
Q3VycmVudEFwcGxpY2F0aW9uID0gJ2N1cmEnLAogIGZvcm1Vc2VyUHJvcGVydHlJRCA9ICd1c3Jw
Jwp9OwoKZW51bSB7CiAgY1N0cmluZyA9IGNTdHJpbmdDbGFzcwp9OwoKZW51bSB7CgogIHBBU0l0
ID0gJ2l0ICAnLAogIHBBU01lID0gJ21lICAnLAogIHBBU1Jlc3VsdCA9ICdyc2x0JywKICBwQVNT
cGFjZSA9ICdzcGFjJywKICBwQVNSZXR1cm4gPSAncmV0ICcsCiAgcEFTVGFiID0gJ3RhYiAnLAog
IHBBU1BpID0gJ3BpICAnLAogIHBBU1BhcmVudCA9ICdwYXJlJywKICBrQVNJbml0aWFsaXplRXZl
bnRDb2RlID0gJ2luaXQnLAogIHBBU1ByaW50TGVuZ3RoID0gJ3BybG4nLAogIHBBU1ByaW50RGVw
dGggPSAncHJkcCcsCiAgcEFTVG9wTGV2ZWxTY3JpcHQgPSAnYXNjcicKfTsKCmVudW0gewoKICBr
QUVDYXNlID0gJ2Nhc2UnLAogIGtBRURpYWNyaXRpYyA9ICdkaWFjJywKICBrQUVXaGl0ZVNwYWNl
ID0gJ3doaXQnLAogIGtBRUh5cGhlbnMgPSAnaHlwaCcsCiAga0FFRXhwYW5zaW9uID0gJ2V4cGEn
LAogIGtBRVB1bmN0dWF0aW9uID0gJ3B1bmMnLAogIGtBRVplbmtha3VIYW5rYWt1ID0gJ3praGsn
LAogIGtBRVNtYWxsS2FuYSA9ICdza25hJywKICBrQUVLYXRhSGlyYWdhbmEgPSAnaGlrYScsCiAg
a0FTQ29uc2lkZXJSZXBsaWVzID0gJ3JtdGUnLAogIGtBU051bWVyaWNTdHJpbmdzID0gJ251bWUn
LAogIGVudW1Db25zaWRlcmF0aW9ucyA9ICdjb25zJwp9OwoKCmVudW0gewogIGtBRUNhc2VDb25z
aWRlck1hc2sgPSAweDAwMDAwMDAxLAogIGtBRURpYWNyaXRpY0NvbnNpZGVyTWFzayA9IDB4MDAw
MDAwMDIsCiAga0FFV2hpdGVTcGFjZUNvbnNpZGVyTWFzayA9IDB4MDAwMDAwMDQsCiAga0FFSHlw
aGVuc0NvbnNpZGVyTWFzayA9IDB4MDAwMDAwMDgsCiAga0FFRXhwYW5zaW9uQ29uc2lkZXJNYXNr
ID0gMHgwMDAwMDAxMCwKICBrQUVQdW5jdHVhdGlvbkNvbnNpZGVyTWFzayA9IDB4MDAwMDAwMjAs
CiAga0FTQ29uc2lkZXJSZXBsaWVzQ29uc2lkZXJNYXNrID0gMHgwMDAwMDA0MCwKICBrQVNOdW1l
cmljU3RyaW5nc0NvbnNpZGVyTWFzayA9IDB4MDAwMDAwODAsCiAga0FFQ2FzZUlnbm9yZU1hc2sg
PSAweDAwMDEwMDAwLAogIGtBRURpYWNyaXRpY0lnbm9yZU1hc2sgPSAweDAwMDIwMDAwLAogIGtB
RVdoaXRlU3BhY2VJZ25vcmVNYXNrID0gMHgwMDA0MDAwMCwKICBrQUVIeXBoZW5zSWdub3JlTWFz
ayA9IDB4MDAwODAwMDAsCiAga0FFRXhwYW5zaW9uSWdub3JlTWFzayA9IDB4MDAxMDAwMDAsCiAg
a0FFUHVuY3R1YXRpb25JZ25vcmVNYXNrID0gMHgwMDIwMDAwMCwKICBrQVNDb25zaWRlclJlcGxp
ZXNJZ25vcmVNYXNrID0gMHgwMDQwMDAwMCwKICBrQVNOdW1lcmljU3RyaW5nc0lnbm9yZU1hc2sg
PSAweDAwODAwMDAwLAogIGVudW1Db25zaWRzQW5kSWdub3JlcyA9ICdjc2lnJwp9OwoKZW51bSB7
CiAgY0NvZXJjaW9uID0gJ2NvZWMnLAogIGNDb2VyY2VVcHBlckNhc2UgPSAndHh1cCcsCiAgY0Nv
ZXJjZUxvd2VyQ2FzZSA9ICd0eGxvJywKICBjQ29lcmNlUmVtb3ZlRGlhY3JpdGljYWxzID0gJ3R4
ZGMnLAogIGNDb2VyY2VSZW1vdmVQdW5jdHVhdGlvbiA9ICd0eHBjJywKICBjQ29lcmNlUmVtb3Zl
SHlwaGVucyA9ICd0eGh5JywKICBjQ29lcmNlT25lQnl0ZVRvVHdvQnl0ZSA9ICd0eGV4JywKICBj
Q29lcmNlUmVtb3ZlV2hpdGVTcGFjZSA9ICd0eHdzJywKICBjQ29lcmNlU21hbGxLYW5hID0gJ3R4
c2snLAogIGNDb2VyY2VaZW5rYWt1aGFua2FrdSA9ICd0eHplJywKICBjQ29lcmNlS2F0YUhpcmFn
YW5hID0gJ3R4a2gnLAogIGNab25lID0gJ3pvbmUnLAogIGNNYWNoaW5lID0gJ21hY2gnLAogIGNB
ZGRyZXNzID0gJ2FkZHInLAogIGNSdW5uaW5nQWRkcmVzcyA9ICdyYWRkJywKICBjU3RvcmFnZSA9
ICdzdG9yJwp9OwoKZW51bSB7CgogIHBBU1dlZWtkYXkgPSAnd2tkeScsCiAgcEFTTW9udGggPSAn
bW50aCcsCiAgcEFTRGF5ID0gJ2RheSAnLAogIHBBU1llYXIgPSAneWVhcicsCiAgcEFTVGltZSA9
ICd0aW1lJywKICBwQVNEYXRlU3RyaW5nID0gJ2RzdHInLAogIHBBU1RpbWVTdHJpbmcgPSAndHN0
cicsCiAgY01vbnRoID0gcEFTTW9udGgsCiAgY0phbnVhcnkgPSAnamFuICcsCiAgY0ZlYnJ1YXJ5
ID0gJ2ZlYiAnLAogIGNNYXJjaCA9ICdtYXIgJywKICBjQXByaWwgPSAnYXByICcsCiAgY01heSA9
ICdtYXkgJywKICBjSnVuZSA9ICdqdW4gJywKICBjSnVseSA9ICdqdWwgJywKICBjQXVndXN0ID0g
J2F1ZyAnLAogIGNTZXB0ZW1iZXIgPSAnc2VwICcsCiAgY09jdG9iZXIgPSAnb2N0ICcsCiAgY05v
dmVtYmVyID0gJ25vdiAnLAogIGNEZWNlbWJlciA9ICdkZWMgJwp9OwoKZW51bSB7CgogIGNXZWVr
ZGF5ID0gcEFTV2Vla2RheSwKICBjU3VuZGF5ID0gJ3N1biAnLAogIGNNb25kYXkgPSAnbW9uICcs
CiAgY1R1ZXNkYXkgPSAndHVlICcsCiAgY1dlZG5lc2RheSA9ICd3ZWQgJywKICBjVGh1cnNkYXkg
PSAndGh1ICcsCiAgY0ZyaWRheSA9ICdmcmkgJywKICBjU2F0dXJkYXkgPSAnc2F0ICcsCiAgcEFT
UXVvdGUgPSAncXVvdCcsCiAgcEFTU2Vjb25kcyA9ICdzZWNzJywKICBwQVNNaW51dGVzID0gJ21p
biAnLAogIHBBU0hvdXJzID0gJ2hvdXInLAogIHBBU0RheXMgPSAnZGF5cycsCiAgcEFTV2Vla3Mg
PSAnd2VlaycsCiAgY1dyaXRpbmdDb2RlSW5mbyA9ICdjaXRsJywKICBwU2NyaXB0Q29kZSA9ICdw
c2NkJywKICBwTGFuZ0NvZGUgPSAncGxjZCcsCiAga0FTTWFnaWNUZWxsRXZlbnQgPSAndGVsbCcs
CiAga0FTTWFnaWNFbmRUZWxsRXZlbnQgPSAndGVuZCcKfTsKIyA1MSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJh
bWV3b3JrL0hlYWRlcnMvT3BlblNjcmlwdGluZy5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5m
cmFtZXdvcmsvSGVhZGVycy9GaW5kZXJSZWdpc3RyeS5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcu
ZnJhbWV3b3JrL0hlYWRlcnMvRmluZGVyUmVnaXN0cnkuaCIgMwojZGVmaW5lIF9fRklOREVSUkVH
SVNUUllfXyAKIyA0NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvRmluZGVyUmVnaXN0
cnkuaCIgMwplbnVtIHsKICBrQUVGaW5kZXJTdWl0ZSA9ICdmbmRyJwp9OwoKCgoKCgplbnVtIHsK
ICBrQUVDbGVhblVwID0gJ2ZjbHUnLAogIGtBRUVqZWN0ID0gJ2VqY3QnLAogIGtBRUVtcHR5ID0g
J2VtcHQnLAogIGtBRUVyYXNlID0gJ2ZlcmEnLAogIGtBRUdlc3RhbHQgPSAnZ3N0bCcsCiAga0FF
UHV0QXdheSA9ICdwdHd5JywKICBrQUVSZWJ1aWxkRGVza3RvcERCID0gJ3JkZGInLAogIGtBRVN5
bmMgPSAnZnVwZCcsCiAga0FFSW50ZXJjZXB0T3BlbiA9ICdmb3BuJwp9OwoKCmVudW0gewogIGtB
RURhdGFiYXNlU3VpdGUgPSAnREFUQScsCiAga0FFU29ydCA9ICdTT1JUJwp9OwojIDgxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNj
cmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9GaW5kZXJSZWdpc3RyeS5oIiAzCmVudW0gewogIGNJ
bnRlcm5hbEZpbmRlck9iamVjdCA9ICdvYmogJwp9OwoKCgoKCmVudW0gewoKCgogIGNBbGlhc0Zp
bGUgPSAnYWxpYScsCiAgY0FwcGxpY2F0aW9uRmlsZSA9ICdhcHBmJywKICBjQ29udHJvbFBhbmVs
RmlsZSA9ICdjY2R2JywKICBjRGVza0FjY2Vzc29yeUZpbGUgPSAnZGFmaScsCiAgY0RvY3VtZW50
RmlsZSA9ICdkb2NmJywKICBjRm9udEZpbGUgPSAnZm50ZicsCiAgY1NvdW5kRmlsZSA9ICdzbmRm
JywKICBjQ2xpcHBpbmdGaWxlID0gJ2NscGYnLAogIGNDb250YWluZXIgPSAnY3RucicsCiAgY0Rl
c2t0b3AgPSAnY2RzaycsCiAgY1NoYXJhYmxlQ29udGFpbmVyID0gJ3NjdHInLAogIGNEaXNrID0g
J2NkaXMnLAogIGNGb2xkZXIgPSAnY2ZvbCcsCiAgY1N1aXRjYXNlID0gJ3N0Y3MnLAogIGNBY2Nl
c3NvcnlTdWl0Y2FzZSA9ICdkc3V0JywKICBjRm9udFN1aXRjYXNlID0gJ2ZzdXQnLAogIGNUcmFz
aCA9ICdjdHJzJywKICBjRGVza3RvcFByaW50ZXIgPSAnZHNrcCcsCiAgY1BhY2thZ2UgPSAncGFj
aycsCiAgY0NvbnRlbnRTcGFjZSA9ICdkd25kJywKICBjQ29udGFpbmVyV2luZG93ID0gJ2N3bmQn
LAogIGNJbmZvV2luZG93ID0gJ2l3bmQnLAogIGNTaGFyaW5nV2luZG93ID0gJ3N3bmQnLAogIGNT
dGF0dXNXaW5kb3cgPSAncXduZCcsCiAgY0NsaXBwaW5nV2luZG93ID0gJ2x3bmQnLAogIGNQcmVm
ZXJlbmNlc1dpbmRvdyA9ICdwd25kJywKICBjRFRQV2luZG93ID0gJ2R0cHcnLAogIGNQcm9jZXNz
ID0gJ3ByY3MnLAogIGNBY2Nlc3NvcnlQcm9jZXNzID0gJ3BjZGEnLAogIGNBcHBsaWNhdGlvblBy
b2Nlc3MgPSAncGNhcCcsCiAgY0dyb3VwID0gJ3NncnAnLAogIGNVc2VyID0gJ2N1c2UnLAogIGNT
aGFyaW5nUHJpdmlsZWdlcyA9ICdwcml2JywKICBjUHJlZmVyZW5jZXMgPSAnY3ByZicsCiAgY0xh
YmVsID0gJ2NsYmwnLAogIGNTb3VuZCA9ICdzbmQgJywKICBjQWxpYXNMaXN0ID0gJ2Fsc3QnLAog
IGNTcGVjaWFsRm9sZGVycyA9ICdzcGZsJywKICBjT25saW5lRGlzayA9ICdjb2RzJywKICBjT25s
aW5lTG9jYWxEaXNrID0gJ2NsZHMnLAogIGNPbmxpbmVSZW1vdGVEaXNrID0gJ2NyZHMnLAogIGNF
bnRpcmVDb250ZW50cyA9ICdlY3RzJywKICBjSWNvbkZhbWlseSA9ICdpZmFtJwp9OwojIDE0NiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09w
ZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvRmluZGVyUmVnaXN0cnkuaCIgMwplbnVtIHsK
CiAgcENvbW1lbnQgPSAnY29tdCcsCiAgcENvbnRhaW5lciA9IGNDb250YWluZXIsCiAgcENvbnRl
bnRTcGFjZSA9IGNDb250ZW50U3BhY2UsCiAgcENyZWF0aW9uRGF0ZU9sZCA9ICdjcnRkJywKICBw
Q3JlYXRpb25EYXRlID0gJ2FzY2QnLAogIHBEZXNjcmlwdGlvbiA9ICdkc2NyJywKICBwRGlzayA9
IGNEaXNrLAogIHBGb2xkZXJPbGQgPSBjRm9sZGVyLAogIHBGb2xkZXIgPSAnYXNkcicsCiAgcElj
b25CaXRtYXAgPSAnaWltZycsCiAgcEluZm9XaW5kb3cgPSBjSW5mb1dpbmRvdywKICBwS2luZCA9
ICdraW5kJywKICBwTGFiZWxJbmRleCA9ICdsYWJpJywKICBwTW9kaWZpY2F0aW9uRGF0ZU9sZCA9
ICdtb2RkJywKICBwTW9kaWZpY2F0aW9uRGF0ZSA9ICdhc21vJywKCiAgcFBoeXNpY2FsU2l6ZSA9
ICdwaHlzJywKICBwUG9zaXRpb24gPSAncG9zbicsCiAgcElzU2VsZWN0ZWQgPSAnaXNzbCcsCiAg
cFNpemUgPSBwUG9pbnRTaXplLAogIHBXaW5kb3cgPSBjV2luZG93LAogIHBQcmVmZXJlbmNlc1dp
bmRvdyA9IGNQcmVmZXJlbmNlc1dpbmRvdwp9OwoKCgplbnVtIHsKICBwRmlsZUNyZWF0b3IgPSAn
ZmNydCcsCiAgcEZpbGVUeXBlID0gJ2FzdHknLAogIHBGaWxlVHlwZU9sZCA9ICdmaXRwJywKICBw
SXNMb2NrZWQgPSAnYXNsaycsCiAgcElzTG9ja2VkT2xkID0gJ2lzbGsnLAoKCiAgcFByb2R1Y3RW
ZXJzaW9uID0gJ3ZlcjInCn07CgoKCmVudW0gewogIHBPcmlnaW5hbEl0ZW0gPSAnb3JpZycKfTsK
CgplbnVtIHsKICBwTWluQXBwUGFydGl0aW9uID0gJ21wcnQnLAogIHBBcHBQYXJ0aXRpb24gPSAn
YXBwdCcsCiAgcFN1Z2dlc3RlZEFwcFBhcnRpdGlvbiA9ICdzcHJ0JywKICBwSXNTY3JpcHRhYmxl
ID0gJ2lzYWInCn07CgoKZW51bSB7CiAgcEludGVybmV0TG9jYXRpb24gPSAnaWxvYycKfTsKCgpl
bnVtIHsKICBwU291bmQgPSAnc25kICcKfTsKIyAyMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9I
ZWFkZXJzL0ZpbmRlclJlZ2lzdHJ5LmgiIDMKZW51bSB7CiAgcFNob3dGb2xkZXJTaXplID0gJ3Nm
c3onLAogIHBTaG93Q29tbWVudCA9ICdzY29tJywKICBwU2hvd0RhdGUgPSAnc2RhdCcsCiAgcFNo
b3dDcmVhdGlvbkRhdGUgPSAnc2NkYScsCiAgcFNob3dLaW5kID0gJ3NrbmQnLAogIHBTaG93TGFi
ZWwgPSAnc2xibCcsCiAgcFNob3dTaXplID0gJ3NzaXonLAogIHBTaG93VmVyc2lvbiA9ICdzdnJz
JywKICBwU29ydERpcmVjdGlvbiA9ICdzb3JkJywKICBwU2hvd0Rpc2tJbmZvID0gJ3NkaW4nLAog
IHBMaXN0Vmlld0ljb25TaXplID0gJ2x2aXMnLAogIHBHcmlkSWNvbnMgPSAnZmdyZCcsCiAgcFN0
YWdnZXJJY29ucyA9ICdmc3RnJywKICBwVmlld0ZvbnQgPSAndmZudCcsCiAgcFZpZXdGb250U2l6
ZSA9ICd2ZnN6Jwp9OwoKCmVudW0gewogIHBDb21wbGV0ZWx5RXhwYW5kZWQgPSAncGV4YycsCiAg
cENvbnRhaW5lcldpbmRvdyA9IGNDb250YWluZXJXaW5kb3csCiAgcEVudGlyZUNvbnRlbnRzID0g
Y0VudGlyZUNvbnRlbnRzLAogIHBFeHBhbmRhYmxlID0gJ3BleGEnLAogIHBFeHBhbmRlZCA9ICdw
ZXhwJywKICBwUHJldmlvdXNWaWV3ID0gJ3N2ZXcnLAogIHBWaWV3ID0gJ3B2ZXcnLAogIHBJY29u
U2l6ZSA9IHBMaXN0Vmlld0ljb25TaXplLAogIHBLZWVwQXJyYW5nZWQgPSAnYXJyZycsCiAgcEtl
ZXBBcnJhbmdlZEJ5ID0gJ2FyYnknCn07CgoKZW51bSB7CiAgcFN0YXJ0dXBEaXNrID0gJ3Nkc2sn
LAogIHBUcmFzaCA9ICd0cnNoJwp9OwoKCmVudW0gewogIHBPd25lciA9ICdzb3duJywKICBwT3du
ZXJQcml2aWxlZ2VzID0gJ293bnInLAogIHBHcm91cCA9IGNHcm91cCwKICBwR3JvdXBQcml2aWxl
Z2VzID0gJ2dwcHInLAogIHBHdWVzdFByaXZpbGVnZXMgPSAnZ3N0cCcsCiAgcEFyZVByaXZpbGVn
ZXNJbmhlcml0ZWQgPSAnaXBydicsCiAgcEV4cG9ydGVkID0gJ3NleHAnLAogIHBNb3VudGVkID0g
J3Ntb3UnLAogIHBTaGFyaW5nUHJvdGVjdGlvbiA9ICdzcHJvJywKICBwU2hhcmluZyA9ICdzaGFy
JywKICBwU2hhcmluZ1dpbmRvdyA9IGNTaGFyaW5nV2luZG93Cn07CgoKZW51bSB7CiAgcENhcGFj
aXR5ID0gJ2NhcGEnLAogIHBFamVjdGFibGUgPSAnaXNlaicsCiAgcEZyZWVTcGFjZSA9ICdmcnNw
JywKICBwTG9jYWwgPSAnaXNydicsCiAgcElzU3RhcnR1cCA9ICdpc3RkJwp9OwoKCmVudW0gewog
IHBXYXJuT25FbXB0eSA9ICd3YXJuJwp9OwoKCmVudW0gewojIDI5NiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJh
bWV3b3JrL0hlYWRlcnMvRmluZGVyUmVnaXN0cnkuaCIgMwogIHBJc1pvb21lZEZ1bGwgPSAnenVt
ZicsCiAgcElzUG9wdXAgPSAnZHJ3cicsCiAgcElzUHVsbGVkT3BlbiA9ICdwdWxsJywKICBwSXND
b2xsYXBzZWQgPSAnd3NoZCcKfTsKCgplbnVtIHsKICBwT2JqZWN0ID0gY09iamVjdAp9OwoKCmVu
dW0gewogIHBTaGFyYWJsZUNvbnRhaW5lciA9IGNTaGFyYWJsZUNvbnRhaW5lcgp9OwoKCmVudW0g
ewogIHBJbmZvUGFuZWwgPSAncGFubCcKfTsKCgoKZW51bSB7CiAgcEZpbGVTaGFyZU9uID0gJ2Zz
aHInLAogIHBGaWxlU2hhcmVTdGFydGluZ1VwID0gJ2ZzdXAnLAogIHBQcm9ncmFtTGlua2luZ09u
ID0gJ2lhYyAnCn07CgoKZW51bSB7CgoKICBwU2hvd01vZGlmaWNhdGlvbkRhdGUgPSBwU2hvd0Rh
dGUsCiMgMzQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9GaW5kZXJSZWdpc3RyeS5o
IiAzCiAgcFVzZVJlbGF0aXZlRGF0ZSA9ICd1cmR0JywKICBwRGVsYXlCZWZvcmVTcHJpbmdpbmcg
PSAnZGVsYScsCiAgcFNwcmluZ09wZW5Gb2xkZXJzID0gJ3NwcmcnLAogIHBVc2VTaG9ydE1lbnVz
ID0gJ3VzbWUnLAogIHBVc2VXaWRlR3JpZCA9ICd1c3dnJywKICBwTGFiZWwxID0gJ2xibDEnLAog
IHBMYWJlbDIgPSAnbGJsMicsCiAgcExhYmVsMyA9ICdsYmwzJywKICBwTGFiZWw0ID0gJ2xibDQn
LAogIHBMYWJlbDUgPSAnbGJsNScsCiAgcExhYmVsNiA9ICdsYmw2JywKICBwTGFiZWw3ID0gJ2xi
bDcnLAogIHBEZWZhdWx0SWNvblZpZXdJY29uU2l6ZSA9ICdpaXN6JywKICBwRGVmYXVsdEJ1dHRv
blZpZXdJY29uU2l6ZSA9ICdiaXN6JywKICBwRGVmYXVsdExpc3RWaWV3SWNvblNpemUgPSAnbGlz
eicsCiAgcEljb25WaWV3QXJyYW5nZW1lbnQgPSAnaWFycicsCiAgcEJ1dHRvblZpZXdBcnJhbmdl
bWVudCA9ICdiYXJyJwp9OwoKCgoKCmVudW0gewogIHBOb0FycmFuZ2VtZW50ID0gJ25hcnInLAog
IHBTbmFwVG9HcmlkQXJyYW5nZW1lbnQgPSAnZ3JkYScsCiAgcEJ5TmFtZUFycmFuZ2VtZW50ID0g
J25hbWEnLAogIHBCeU1vZGlmaWNhdGlvbkRhdGVBcnJhbmdlbWVudCA9ICdtZHRhJywKICBwQnlD
cmVhdGlvbkRhdGVBcnJhbmdlbWVudCA9ICdjZHRhJywKICBwQnlTaXplQXJyYW5nZW1lbnQgPSAn
c2l6YScsCiAgcEJ5S2luZEFycmFuZ2VtZW50ID0gJ2tpbmEnLAogIHBCeUxhYmVsQXJyYW5nZW1l
bnQgPSAnbGFiYScKfTsKCgoKCmVudW0gewoKICBwRmlsZSA9IGNGaWxlLAoKCgogIHBQYXJ0aXRp
b25TcGFjZVVzZWQgPSAncHVzZCcsCgogIHBMb2NhbEFuZFJlbW90ZUV2ZW50cyA9ICdyZXZ0JywK
ICBwSGFzU2NyaXB0aW5nVGVybWlub2xvZ3kgPSAnaHNjcicKfTsKCgplbnVtIHsKICBwRGVza0Fj
Y2Vzc29yeUZpbGUgPSBjRGVza0FjY2Vzc29yeUZpbGUKfTsKCgplbnVtIHsKICBwQXBwbGljYXRp
b25GaWxlID0gY0FwcGxpY2F0aW9uRmlsZQp9OwojIDQxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3Jr
L0hlYWRlcnMvRmluZGVyUmVnaXN0cnkuaCIgMwplbnVtIHsKCgoKCgoKICBwQ2FuQ29ubmVjdCA9
ICdjY29uJywKICBwQ2FuQ2hhbmdlUGFzc3dvcmQgPSAnY2NwdycsCiAgcENhbkRvUHJvZ3JhbUxp
bmtpbmcgPSAnY2lhYycsCiAgcElzT3duZXIgPSAnaXNvdycsCiAgcEFSQURpYWxJbiA9ICdhcmFk
JywKICBwU2hvdWxkQ2FsbEJhY2sgPSAnY2FsYicsCiAgcENhbGxCYWNrTnVtYmVyID0gJ2Nibm0n
Cn07CgoKCgoKZW51bSB7CiAgcEFib3V0TWFjaW50b3NoID0gJ2FiYngnLAogIHBBcHBsZU1lbnVJ
dGVtc0ZvbGRlciA9ICdhbW51JywKCiAgcENvbnRyb2xQYW5lbHNGb2xkZXIgPSAnY3RybCcsCiAg
cERlc2t0b3AgPSAnZGVzaycsCiAgcEV4dGVuc2lvbnNGb2xkZXIgPSAnZXh0bicsCgogIHBGaW5k
ZXJQcmVmZXJlbmNlcyA9ICdwZnJwJywKICBwRm9udHNGb2xkZXIgPSAnZm9udCcsCiAgcEZvbnRz
Rm9sZGVyUHJlQWxsZWdybyA9ICdmZm50JywKCgogIHBMYXJnZXN0RnJlZUJsb2NrID0gJ21mcmUn
LAogIHBQcmVmZXJlbmNlc0ZvbGRlciA9ICdwcmVmJywKCgoKICBwU2hvcnRDdXRzID0gJ3NjdXQn
LAogIHBTaHV0ZG93bkZvbGRlciA9ICdzaGRmJywKICBwU3RhcnR1cEl0ZW1zRm9sZGVyID0gJ3N0
cnQnLAogIHBTeXN0ZW1Gb2xkZXIgPSAnbWFjcycsCiAgcFRlbXBvcmFyeUZvbGRlciA9ICd0ZW1w
JywKCiAgcFZpZXdQcmVmZXJlbmNlcyA9ICdwdndwJywKICBwU3RhcnRpbmdVcCA9ICdhd2FrJwp9
OwoKCmVudW0gewogIHBTZWVGaWxlcyA9ICdwcnZyJywKICBwU2VlRm9sZGVycyA9ICdwcnZzJywK
ICBwTWFrZUNoYW5nZXMgPSAncHJ2dycKfTsKIyA1MTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9I
ZWFkZXJzL0ZpbmRlclJlZ2lzdHJ5LmgiIDMKZW51bSB7CiAgcFNtYWxsSWNvbiA9ICdzbWljJywK
ICBwU21hbGxCdXR0b24gPSAnc21idScsCiAgcExhcmdlQnV0dG9uID0gJ2xnYnUnLAogIHBHcmlk
ID0gJ2dyaWQnCn07CgoKCgoKCgplbnVtIHsKICBlbnVtVmlld0J5ID0gJ3Z3YnknLAogIGVudW1H
ZXN0YWx0ID0gJ2dzZW4nLAogIGVudW1Db25mbGljdHMgPSAnY2ZsYycsCiAgZW51bUV4aXN0aW5n
SXRlbXMgPSAnZXhzaScsCiAgZW51bU9sZGVySXRlbXMgPSAnb2xkcicKfTsKCmVudW0gewogIGVu
dW1EYXRlID0gJ2VuZGEnLAogIGVudW1BbnlEYXRlID0gJ2FueWQnLAogIGVudW1Ub2RheSA9ICd0
ZGF5JywKICBlbnVtWWVzdGVyZGF5ID0gJ3lkYXknLAogIGVudW1UaGlzV2VlayA9ICd0d2VrJywK
ICBlbnVtTGFzdFdlZWsgPSAnbHdlaycsCiAgZW51bVRoaXNNb250aCA9ICd0bW9uJywKICBlbnVt
TGFzdE1vbnRoID0gJ2xtb24nLAogIGVudW1UaGlzWWVhciA9ICd0eWVyJywKICBlbnVtTGFzdFll
YXIgPSAnbHllcicsCiAgZW51bUJlZm9yZURhdGUgPSAnYmZkdCcsCiAgZW51bUFmdGVyRGF0ZSA9
ICdhZmR0JywKICBlbnVtQmV0d2VlbkRhdGUgPSAnYnRkdCcsCiAgZW51bU9uRGF0ZSA9ICdvbmR0
Jwp9OwoKZW51bSB7CiAgZW51bUFsbERvY3VtZW50cyA9ICdhbGxkJywKICBlbnVtRm9sZGVycyA9
ICdmb2xkJywKICBlbnVtQWxpYXNlcyA9ICdhbGlhJywKICBlbnVtU3RhdGlvbmVyeSA9ICdzdGF0
Jwp9OwoKZW51bSB7CiAgZW51bVdoZXJlID0gJ3doZXInLAogIGVudW1BbGxMb2NhbERpc2tzID0g
J2FsZGsnLAogIGVudW1BbGxSZW1vdGVEaXNrcyA9ICdhcmRrJywKICBlbnVtQWxsRGlza3MgPSAn
YWxsZCcsCiAgZW51bUFsbE9wZW5Gb2xkZXJzID0gJ2FvZm8nCn07CgoKZW51bSB7CiAgZW51bUlj
b25TaXplID0gJ2lzaXonLAogIGVudW1TbWFsbEljb25TaXplID0gcFNtYWxsSWNvbiwKICBlbnVt
TWluaUljb25TaXplID0gJ21paWMnLAogIGVudW1MYXJnZUljb25TaXplID0gJ2xnaWMnCn07Cgpl
bnVtIHsKICBlbnVtU29ydERpcmVjdGlvbiA9ICdzb2RyJywKICBlbnVtU29ydERpcmVjdGlvbk5v
cm1hbCA9ICdzbnJtJywKICBlbnVtU29ydERpcmVjdGlvblJldmVyc2UgPSAnc3J2cycKfTsKCmVu
dW0gewogIGVudW1BcnJhbmdlbWVudCA9ICdlYXJyJwp9OwoKCmVudW0gewogIGVudW1JbmZvV2lu
ZG93UGFuZWwgPSAnaXBubCcsCiAgZW51bUdlbmVyYWxQYW5lbCA9ICdncG5sJywKICBlbnVtU2hh
cmluZ1BhbmVsID0gJ3NwbmwnLAogIGVudW1TdGF0dXNOQ29uZmlnUGFuZWwgPSAnc2NubCcsCiAg
ZW51bUZvbnRzUGFuZWwgPSAnZnBubCcsCiAgZW51bU1lbW9yeVBhbmVsID0gJ21wbmwnCn07CgoK
CmVudW0gewogIGVudW1QcmVmc1dpbmRvd1BhbmVsID0gJ3BwbGUnLAogIGVudW1QcmVmc0dlbmVy
YWxQYW5lbCA9ICdwZ25wJywKICBlbnVtUHJlZnNMYWJlbFBhbmVsID0gJ3BsYnAnLAogIGVudW1Q
cmVmc0ljb25WaWV3UGFuZWwgPSAncGl2cCcsCiAgZW51bVByZWZzQnV0dG9uVmlld1BhbmVsID0g
J3BidnAnLAogIGVudW1QcmVmc0xpc3RWaWV3UGFuZWwgPSAncGx2cCcKfTsKCgoKCgoKCmVudW0g
ewogIHR5cGVJY29uRmFtaWx5ID0gY0ljb25GYW1pbHksCiAgdHlwZUljb25BbmRNYXNrID0gJ0lD
TiMnLAogIHR5cGU4Qml0TWFzayA9ICdsOG1rJywKICB0eXBlMzJCaXRJY29uID0gJ2lsMzInLAog
IHR5cGU4Qml0SWNvbiA9ICdpY2w4JywKICB0eXBlNEJpdEljb24gPSAnaWNsNCcsCiAgdHlwZVNt
YWxsSWNvbkFuZE1hc2sgPSAnaWNzIycsCiAgdHlwZVNtYWxsOEJpdE1hc2sgPSAnczhtaycsCiAg
dHlwZVNtYWxsMzJCaXRJY29uID0gJ2lzMzInLAogIHR5cGVTbWFsbDhCaXRJY29uID0gJ2ljczgn
LAogIHR5cGVTbWFsbDRCaXRJY29uID0gJ2ljczQnLAogIHR5cGVSZWxhdGl2ZVRpbWUgPSAncnRp
bScsCiAgdHlwZUNvbmNlcHR1YWxUaW1lID0gJ3RpbWMnCn07CgoKCgoKCgplbnVtIHsKICBrZXlJ
Y29uQW5kTWFzayA9ICdJQ04jJywKICBrZXkzMkJpdEljb24gPSAnaWwzMicsCiAga2V5OEJpdElj
b24gPSAnaWNsOCcsCiAga2V5NEJpdEljb24gPSAnaWNsNCcsCiAga2V5OEJpdE1hc2sgPSAnbDht
aycsCiAga2V5U21hbGxJY29uQW5kTWFzayA9ICdpY3MjJywKICBrZXlTbWFsbDhCaXRJY29uID0g
J2ljczgnLAogIGtleVNtYWxsNEJpdEljb24gPSAnaWNzNCcsCiAga2V5U21hbGwzMkJpdEljb24g
PSAnaXMzMicsCiAga2V5U21hbGw4Qml0TWFzayA9ICdzOG1rJywKICBrZXlNaW5pMUJpdE1hc2sg
PSAnaWNtIycsCiAga2V5TWluaTRCaXRJY29uID0gJ2ljbTQnLAogIGtleU1pbmk4Qml0SWNvbiA9
ICdpY204JywKICBrZXlBRVVzaW5nID0gJ3VzaW4nLAogIGtleUFFUmVwbGFjaW5nID0gJ2FscnAn
LAogIGtleUFFTm9BdXRvUm91dGluZyA9ICdyb3V0JywKICBrZXlMb2NhbFBvc2l0aW9uTGlzdCA9
ICdtdnBsJywKICBrZXlHbG9iYWxQb3NpdGlvbkxpc3QgPSAnbXZwZycsCiAga2V5UmVkaXJlY3Rl
ZERvY3VtZW50TGlzdCA9ICdmcGRsJwp9OwoKCgoKCgoKZW51bSB7CiAga2V5QVNQcmVwb3NpdGlv
bkhhcyA9ICdoYXMgJywKICBrZXlBbGwgPSAna3lhbCcsCiAga2V5T2xkRmluZGVySXRlbXMgPSAn
ZnNlbCcKfTsKCgoKCgoKCmVudW0gewogIGZvcm1BbGlhcyA9IHR5cGVBbGlhcywKICBmb3JtQ3Jl
YXRvciA9IHBGaWxlQ3JlYXRvcgp9OwojIDY4NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRl
cnMvRmluZGVyUmVnaXN0cnkuaCIgMwplbnVtIHsKICBlcnJGaW5kZXJJc0J1c3kgPSAtMTUyNjAs
CiAgZXJyRmluZGVyV2luZG93Tm90T3BlbiA9IC0xNTI2MSwKICBlcnJGaW5kZXJDYW5ub3RQdXRB
d2F5ID0gLTE1MjYyLAogIGVyckZpbmRlcldpbmRvd011c3RCZUljb25WaWV3ID0gLTE1MjYzLAog
IGVyckZpbmRlcldpbmRvd011c3RCZUxpc3RWaWV3ID0gLTE1MjY0LAogIGVyckZpbmRlckNhbnRN
b3ZlVG9EZXN0aW5hdGlvbiA9IC0xNTI2NSwKICBlcnJGaW5kZXJDYW50TW92ZVNvdXJjZSA9IC0x
NTI2NiwKICBlcnJGaW5kZXJDYW50T3ZlcndyaXRlID0gLTE1MjY3LAogIGVyckZpbmRlckluY2Vz
dHVvdXNNb3ZlID0gLTE1MjY4LAogIGVyckZpbmRlckNhbnRNb3ZlVG9BbmNlc3RvciA9IC0xNTI2
OSwKICBlcnJGaW5kZXJDYW50VXNlVHJhc2hlZEl0ZW1zID0gLTE1MjcwLAogIGVyckZpbmRlckl0
ZW1BbHJlYWR5SW5EZXN0ID0gLTE1MjcxLAogIGVyckZpbmRlclVua25vd25Vc2VyID0gLTE1Mjcy
LAogIGVyckZpbmRlclNoYXJlUG9pbnRzQ2FudEluaGVyaXQgPSAtMTUyNzMsCiAgZXJyRmluZGVy
V2luZG93V3JvbmdUeXBlID0gLTE1Mjc0LAogIGVyckZpbmRlclByb3BlcnR5Tm93V2luZG93QmFz
ZWQgPSAtMTUyNzUsCiAgZXJyRmluZGVyQXBwRm9sZGVyUHJvdGVjdGVkID0gLTE1Mjc2LAogIGVy
ckZpbmRlclN5c0ZvbGRlclByb3RlY3RlZCA9IC0xNTI3NywKICBlcnJGaW5kZXJCb3VuZHNXcm9u
ZyA9IC0xNTI3OCwKICBlcnJBRVZhbHVlT3V0T2ZSYW5nZSA9IC0xNTI3OSwKICBlcnJGaW5kZXJQ
cm9wZXJ0eURvZXNOb3RBcHBseSA9IC0xNTI4MCwKICBlcnJGaW5kZXJGaWxlU2hhcmluZ011c3RC
ZU9uID0gLTE1MjgxLAogIGVyckZpbmRlck11c3RCZUFjdGl2ZSA9IC0xNTI4MiwKICBlcnJGaW5k
ZXJWb2x1bWVOb3RGb3VuZCA9IC0xNTI4MywKICBlcnJGaW5kZXJMb2NrZWRJdGVtc0luVHJhc2gg
PSAtMTUyODQsCiAgZXJyRmluZGVyT25seUxvY2tlZEl0ZW1zSW5UcmFzaCA9IC0xNTI4NSwKICBl
cnJGaW5kZXJQcm9ncmFtTGlua2luZ011c3RCZU9uID0gLTE1Mjg2LAogIGVyckZpbmRlcldpbmRv
d011c3RCZUJ1dHRvblZpZXcgPSAtMTUyODcsCiAgZXJyRmluZGVyQmFkUGFja2FnZUNvbnRlbnRz
ID0gLTE1Mjg4LAogIGVyckZpbmRlclVuc3VwcG9ydGVkSW5zaWRlUGFja2FnZXMgPSAtMTUyODks
CiAgZXJyRmluZGVyQ29ycnVwdE9wZW5Gb2xkZXJMaXN0ID0gLTE1MjkwLAogIGVyckZpbmRlck5v
SW52aXNpYmxlRmlsZXMgPSAtMTUyOTEsCiAgZXJyRmluZGVyQ2FudERlbGV0ZUltbWVkaWF0ZWx5
ID0gLTE1MjkyLAogIGVyckZpbmRlckxhc3RSZXNlcnZlZCA9IC0xNTM3OQp9OwojIDU1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNj
cmlwdGluZy5mcmFtZXdvcmsvSGVhZGVycy9PcGVuU2NyaXB0aW5nLmgiIDIgMwoKCgojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9PcGVu
U2NyaXB0aW5nLmZyYW1ld29yay9IZWFkZXJzL0RpZ2l0YWxIdWJSZWdpc3RyeS5oIiAxIDMKIyAx
NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvRGlnaXRhbEh1YlJlZ2lzdHJ5LmgiIDMK
I2RlZmluZSBfX0RJR0lUQUxIVUJSRUdJU1RSWV9fIAojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdv
cmsvSGVhZGVycy9EaWdpdGFsSHViUmVnaXN0cnkuaCIgMwplbnVtIHsKICBrRGlnaUh1YkV2ZW50
Q2xhc3MgPSAnZGh1YicKfTsKCgoKZW51bSB7CiAga0RpZ2lIdWJNdXNpY0NEID0gJ2F1Y2QnLAog
IGtEaWdpSHViUGljdHVyZUNEID0gJ3BpY2QnLAogIGtEaWdpSHViVmlkZW9EVkQgPSAndmR2ZCcs
CiAga0RpZ2lIdWJCbGFua0NEID0gJ2JjZCAnLAogIGtEaWdpSHViQmxhbmtEVkQgPSAnYmR2ZCcK
fTsKIyA1OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJhbWV3b3JrL0hlYWRlcnMvT3BlblNjcmlwdGluZy5oIiAy
IDMKIyA0MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9IZWFk
ZXJzL0NhcmJvbi5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnQuZnJhbWV3b3JrL0hlYWRlcnMvUHJpbnQuaCIg
MSAzCiMgMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9QcmludC5mcmFtZXdvcmsvSGVhZGVycy9QcmludC5oIiAzCiNkZWZpbmUgX19QUklO
VF9fIAojIDI4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvUHJpbnQuZnJhbWV3b3JrL0hlYWRlcnMvUHJpbnQuaCIgMwojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludC5mcmFt
ZXdvcmsvSGVhZGVycy9QTUFwcGxpY2F0aW9uLmgiIDEgMwojIDE1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnQuZnJhbWV3b3JrL0hl
YWRlcnMvUE1BcHBsaWNhdGlvbi5oIiAzCiNkZWZpbmUgX19QTUFQUExJQ0FUSU9OX18gCiMgMjkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Q
cmludC5mcmFtZXdvcmsvSGVhZGVycy9QcmludC5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvUHJpbnQuZnJhbWV3b3Jr
L0hlYWRlcnMvUE1BcHBsaWNhdGlvbkRlcHJlY2F0ZWQuaCIgMSAzCiMgMTYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9QcmludC5mcmFtZXdv
cmsvSGVhZGVycy9QTUFwcGxpY2F0aW9uRGVwcmVjYXRlZC5oIiAzCiNkZWZpbmUgX19QTUFQUExJ
Q0FUSU9OX0RFUFJFQ0FURURfXyAKIyAzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1ByaW50LmZyYW1ld29yay9IZWFkZXJzL1ByaW50Lmgi
IDIgMwojIDQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0hl
YWRlcnMvQ2FyYm9uLmgiIDIgMwojIDU1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0hlYWRlcnMvQ2FyYm9uLmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29y
ay9IZWFkZXJzL0NvbW1vblBhbmVscy5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsv
SGVhZGVycy9Db21tb25QYW5lbHMuaCIgMwojZGVmaW5lIF9fQ09NTU9OUEFORUxTX18gCiMgMzMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvQ29tbW9uUGFuZWxzLmgiIDMKIyAxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9u
UGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yUGlja2VyLmgiIDEgMwojIDE3ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFu
ZWxzLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yUGlja2VyLmgiIDMKI2RlZmluZSBfX0NPTE9SUElD
S0VSX18gCiMgMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JQaWNrZXIuaCIg
MwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA1MCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5m
cmFtZXdvcmsvSGVhZGVycy9Db2xvclBpY2tlci5oIiAzCmVudW0gewogIGtEZWZhdWx0Q29sb3JQ
aWNrZXJXaWR0aCA9IDM4MywKICBrRGVmYXVsdENvbG9yUGlja2VySGVpZ2h0ID0gMjM4Cn07Cgp0
eXBlZGVmIFNJbnQxNiBEaWFsb2dQbGFjZW1lbnRTcGVjOwplbnVtIHsKICBrQXRTcGVjaWZpZWRP
cmlnaW4gPSAwLAogIGtEZWVwZXN0Q29sb3JTY3JlZW4gPSAxLAogIGtDZW50ZXJPbk1haW5TY3Jl
ZW4gPSAyCn07CgoKZW51bSB7CiAga0NvbG9yUGlja2VyRGlhbG9nSXNNb3ZlYWJsZSA9IDEsCiAg
a0NvbG9yUGlja2VyRGlhbG9nSXNNb2RhbCA9IDIsCiAga0NvbG9yUGlja2VyQ2FuTW9kaWZ5UGFs
ZXR0ZSA9IDQsCiAga0NvbG9yUGlja2VyQ2FuQW5pbWF0ZVBhbGV0dGUgPSA4LAogIGtDb2xvclBp
Y2tlckFwcElzQ29sb3JTeW5jQXdhcmUgPSAxNiwKICBrQ29sb3JQaWNrZXJJblN5c3RlbURpYWxv
ZyA9IDMyLAogIGtDb2xvclBpY2tlckluQXBwbGljYXRpb25EaWFsb2cgPSA2NCwKICBrQ29sb3JQ
aWNrZXJJblBpY2tlckRpYWxvZyA9IDEyOCwKICBrQ29sb3JQaWNrZXJEZXRhY2hlZEZyb21DaG9p
Y2VzID0gMjU2LAogIGtDb2xvclBpY2tlckNhbGxDb2xvclByb2NMaXZlID0gNTEyCn07CiMgMTM4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yUGlja2VyLmgiIDMKc3RydWN0IE5Q
TUNvbG9yIHsKICBDTVByb2ZpbGVSZWYgcHJvZmlsZTsKICBDTUNvbG9yIGNvbG9yOwp9Owp0eXBl
ZGVmIHN0cnVjdCBOUE1Db2xvciBOUE1Db2xvcjsKdHlwZWRlZiBOUE1Db2xvciAqIE5QTUNvbG9y
UHRyOwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVQaWNrZXIqIFBpY2tlcjsKdHlwZWRlZiBQaWNrZXIg
cGlja2VyOwoKc3RydWN0IFBpY2tlck1lbnVJdGVtSW5mbyB7CiAgU0ludDE2IGVkaXRNZW51SUQ7
CiAgU0ludDE2IGN1dEl0ZW07CiAgU0ludDE2IGNvcHlJdGVtOwogIFNJbnQxNiBwYXN0ZUl0ZW07
CiAgU0ludDE2IGNsZWFySXRlbTsKICBTSW50MTYgdW5kb0l0ZW07Cn07CnR5cGVkZWYgc3RydWN0
IFBpY2tlck1lbnVJdGVtSW5mbyBQaWNrZXJNZW51SXRlbUluZm87Cgp0eXBlZGVmIHZvaWQgKCAq
IE5Db2xvckNoYW5nZWRQcm9jUHRyKShTUmVmQ29uIHVzZXJEYXRhLCBOUE1Db2xvciAqbmV3Q29s
b3IpOwp0eXBlZGVmIE5Db2xvckNoYW5nZWRQcm9jUHRyIE5Db2xvckNoYW5nZWRVUFA7CiMgMTY3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0NvbG9yUGlja2VyLmgiIDMKZXh0ZXJuIE5D
b2xvckNoYW5nZWRVUFAKTmV3TkNvbG9yQ2hhbmdlZFVQUChOQ29sb3JDaGFuZ2VkUHJvY1B0ciB1
c2VyUm91dGluZSkgOwojIDE3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclBp
Y2tlci5oIiAzCmV4dGVybiB2b2lkCkRpc3Bvc2VOQ29sb3JDaGFuZ2VkVVBQKE5Db2xvckNoYW5n
ZWRVUFAgdXNlclVQUCkgOwojIDE4OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9Db2xv
clBpY2tlci5oIiAzCmV4dGVybiB2b2lkCkludm9rZU5Db2xvckNoYW5nZWRVUFAoCiAgU1JlZkNv
biB1c2VyRGF0YSwKICBOUE1Db2xvciAqIG5ld0NvbG9yLAogIE5Db2xvckNoYW5nZWRVUFAgdXNl
clVQUCkgOwoKCgogICAgaW5saW5lIE5Db2xvckNoYW5nZWRVUFAgTmV3TkNvbG9yQ2hhbmdlZFVQ
UChOQ29sb3JDaGFuZ2VkUHJvY1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7
IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VOQ29sb3JDaGFuZ2VkVVBQKE5Db2xvckNoYW5nZWRV
UFApIHsgfQogICAgaW5saW5lIHZvaWQgSW52b2tlTkNvbG9yQ2hhbmdlZFVQUChTUmVmQ29uIHVz
ZXJEYXRhLCBOUE1Db2xvciAqIG5ld0NvbG9yLCBOQ29sb3JDaGFuZ2VkVVBQIHVzZXJVUFApIHsg
KCp1c2VyVVBQKSh1c2VyRGF0YSwgbmV3Q29sb3IpOyB9CiMgMjA5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1l
d29yay9IZWFkZXJzL0NvbG9yUGlja2VyLmgiIDMKdHlwZWRlZiB2b2lkICogQ29sb3JDaGFuZ2Vk
VVBQOwp0eXBlZGVmIHZvaWQgKiBVc2VyRXZlbnRVUFA7CiMgMzI2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1l
d29yay9IZWFkZXJzL0NvbG9yUGlja2VyLmgiIDMKc3RydWN0IE5Db2xvclBpY2tlckluZm8gewog
IE5QTUNvbG9yIHRoZUNvbG9yOwogIENNUHJvZmlsZVJlZiBkc3RQcm9maWxlOwogIFVJbnQzMiBm
bGFnczsKICBEaWFsb2dQbGFjZW1lbnRTcGVjIHBsYWNlV2hlcmU7CiAgUG9pbnQgZGlhbG9nT3Jp
Z2luOwogIE9TVHlwZSBwaWNrZXJUeXBlOwoKCgoKCiAgTkNvbG9yQ2hhbmdlZFVQUCBjb2xvclBy
b2M7CiAgVVJlZkNvbiBjb2xvclByb2NEYXRhOwogIFN0cjI1NSBwcm9tcHQ7CiAgUGlja2VyTWVu
dUl0ZW1JbmZvIG1JbmZvOwogIEJvb2xlYW4gbmV3Q29sb3JDaG9zZW47CiAgVUludDggcmVzZXJ2
ZWQ7Cn07CnR5cGVkZWYgc3RydWN0IE5Db2xvclBpY2tlckluZm8gTkNvbG9yUGlja2VySW5mbzsK
IyA0NjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvQ29sb3JQaWNrZXIuaCIgMwpleHRl
cm4gQm9vbGVhbgpHZXRDb2xvcigKICBQb2ludCB3aGVyZSwKICBDb25zdFN0cjI1NVBhcmFtIHBy
b21wdCwKICBjb25zdCBSR0JDb2xvciAqIGluQ29sb3IsCiAgUkdCQ29sb3IgKiBvdXRDb2xvcikg
OwojIDQ5NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9Db2xvclBpY2tlci5oIiAzCmV4
dGVybiBPU0VycgpOUGlja0NvbG9yKE5Db2xvclBpY2tlckluZm8gKiB0aGVDb2xvckluZm8pIDsK
CgoKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRl
cnMvQ29tbW9uUGFuZWxzLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRl
cnMvQ01DYWxpYnJhdG9yLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJz
L0NNQ2FsaWJyYXRvci5oIiAzCiNkZWZpbmUgX19DTUNBTElCUkFUT1JfXyAKIyAzNyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBh
bmVscy5mcmFtZXdvcmsvSGVhZGVycy9DTUNhbGlicmF0b3IuaCIgMwpleHRlcm4gIkMiIHsKCgoj
cHJhZ21hIHBhY2socHVzaCwgMikKCnR5cGVkZWYgdm9pZCAoICogQ2FsaWJyYXRlRXZlbnRQcm9j
UHRyKShFdmVudFJlY29yZCAqIGV2ZW50KTsKdHlwZWRlZiBDYWxpYnJhdGVFdmVudFByb2NQdHIg
Q2FsaWJyYXRlRXZlbnRVUFA7CgoKCgplbnVtIHsKICBrQ2FsaWJyYXRvck5hbWVQcmVmaXggPSAn
Y2FsaScKfTsKCnN0cnVjdCBDYWxpYnJhdG9ySW5mbyB7CiAgVUludDMyIGRhdGFTaXplOwogIENN
RGlzcGxheUlEVHlwZSBkaXNwbGF5SUQ7CiAgVUludDMyIHByb2ZpbGVMb2NhdGlvblNpemU7CiAg
Q01Qcm9maWxlTG9jYXRpb24gKiBwcm9maWxlTG9jYXRpb25QdHI7CiAgQ2FsaWJyYXRlRXZlbnRV
UFAgZXZlbnRQcm9jOwogIEJvb2xlYW4gaXNHb29kOwp9Owp0eXBlZGVmIHN0cnVjdCBDYWxpYnJh
dG9ySW5mbyBDYWxpYnJhdG9ySW5mbzsKdHlwZWRlZiBCb29sZWFuICggKiBDYW5DYWxpYnJhdGVQ
cm9jUHRyKShDTURpc3BsYXlJRFR5cGUgZGlzcGxheUlELCBTdHIyNTUgZXJyTWVzc2FnZSk7CnR5
cGVkZWYgT1NFcnIgKCAqIENhbGlicmF0ZVByb2NQdHIpKENhbGlicmF0b3JJbmZvICogdGhlSW5m
byk7CnR5cGVkZWYgQ2FuQ2FsaWJyYXRlUHJvY1B0ciBDYW5DYWxpYnJhdGVVUFA7CnR5cGVkZWYg
Q2FsaWJyYXRlUHJvY1B0ciBDYWxpYnJhdGVVUFA7CiMgNzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3Jr
L0hlYWRlcnMvQ01DYWxpYnJhdG9yLmgiIDMKZXh0ZXJuIENhbGlicmF0ZUV2ZW50VVBQCk5ld0Nh
bGlicmF0ZUV2ZW50VVBQKENhbGlicmF0ZUV2ZW50UHJvY1B0ciB1c2VyUm91dGluZSkgOwojIDg0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0NNQ2FsaWJyYXRvci5oIiAzCmV4dGVybiBD
YW5DYWxpYnJhdGVVUFAKTmV3Q2FuQ2FsaWJyYXRlVVBQKENhbkNhbGlicmF0ZVByb2NQdHIgdXNl
clJvdXRpbmUpOwojIDk1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0NNQ2FsaWJyYXRv
ci5oIiAzCmV4dGVybiBDYWxpYnJhdGVVUFAKTmV3Q2FsaWJyYXRlVVBQKENhbGlicmF0ZVByb2NQ
dHIgdXNlclJvdXRpbmUpOwojIDEwNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9DTUNh
bGlicmF0b3IuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlQ2FsaWJyYXRlRXZlbnRVUFAoQ2FsaWJy
YXRlRXZlbnRVUFAgdXNlclVQUCkgOwojIDExNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVy
cy9DTUNhbGlicmF0b3IuaCIgMwpleHRlcm4gdm9pZApEaXNwb3NlQ2FuQ2FsaWJyYXRlVVBQKENh
bkNhbGlicmF0ZVVQUCB1c2VyVVBQKTsKIyAxMjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRl
cnMvQ01DYWxpYnJhdG9yLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZUNhbGlicmF0ZVVQUChDYWxp
YnJhdGVVUFAgdXNlclVQUCk7CiMgMTM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0NN
Q2FsaWJyYXRvci5oIiAzCmV4dGVybiB2b2lkCkludm9rZUNhbGlicmF0ZUV2ZW50VVBQKAogIEV2
ZW50UmVjb3JkICogZXZlbnQsCiAgQ2FsaWJyYXRlRXZlbnRVUFAgdXNlclVQUCkgOwojIDE1MiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
bW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9DTUNhbGlicmF0b3IuaCIgMwpleHRlcm4gQm9v
bGVhbgpJbnZva2VDYW5DYWxpYnJhdGVVUFAoCiAgQ01EaXNwbGF5SURUeXBlIGRpc3BsYXlJRCwK
ICBTdHIyNTUgZXJyTWVzc2FnZSwKICBDYW5DYWxpYnJhdGVVUFAgdXNlclVQUCk7CiMgMTY2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29t
bW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0NNQ2FsaWJyYXRvci5oIiAzCmV4dGVybiBPU0Vy
cgpJbnZva2VDYWxpYnJhdGVVUFAoCiAgQ2FsaWJyYXRvckluZm8gKiB0aGVJbmZvLAogIENhbGli
cmF0ZVVQUCB1c2VyVVBQKTsKCgoKICAgIGlubGluZSBDYWxpYnJhdGVFdmVudFVQUCBOZXdDYWxp
YnJhdGVFdmVudFVQUChDYWxpYnJhdGVFdmVudFByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJu
IHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUgQ2FuQ2FsaWJyYXRlVVBQIE5ld0NhbkNhbGlicmF0
ZVVQUChDYW5DYWxpYnJhdGVQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGlu
ZTsgfQogICAgaW5saW5lIENhbGlicmF0ZVVQUCBOZXdDYWxpYnJhdGVVUFAoQ2FsaWJyYXRlUHJv
Y1B0ciB1c2VyUm91dGluZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lk
IERpc3Bvc2VDYWxpYnJhdGVFdmVudFVQUChDYWxpYnJhdGVFdmVudFVQUCkgeyB9CiAgICBpbmxp
bmUgdm9pZCBEaXNwb3NlQ2FuQ2FsaWJyYXRlVVBQKENhbkNhbGlicmF0ZVVQUCkgeyB9CiAgICBp
bmxpbmUgdm9pZCBEaXNwb3NlQ2FsaWJyYXRlVVBQKENhbGlicmF0ZVVQUCkgeyB9CiAgICBpbmxp
bmUgdm9pZCBJbnZva2VDYWxpYnJhdGVFdmVudFVQUChFdmVudFJlY29yZCAqIGV2ZW50LCBDYWxp
YnJhdGVFdmVudFVQUCB1c2VyVVBQKSB7ICgqdXNlclVQUCkoZXZlbnQpOyB9CiAgICBpbmxpbmUg
Qm9vbGVhbiBJbnZva2VDYW5DYWxpYnJhdGVVUFAoQ01EaXNwbGF5SURUeXBlIGRpc3BsYXlJRCwg
U3RyMjU1IGVyck1lc3NhZ2UsIENhbkNhbGlicmF0ZVVQUCB1c2VyVVBQKSB7IHJldHVybiAoKnVz
ZXJVUFApKGRpc3BsYXlJRCwgZXJyTWVzc2FnZSk7IH0KICAgIGlubGluZSBPU0VyciBJbnZva2VD
YWxpYnJhdGVVUFAoQ2FsaWJyYXRvckluZm8gKiB0aGVJbmZvLCBDYWxpYnJhdGVVUFAgdXNlclVQ
UCkgeyByZXR1cm4gKCp1c2VyVVBQKSh0aGVJbmZvKTsgfQojIDIwMyAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFt
ZXdvcmsvSGVhZGVycy9DTUNhbGlicmF0b3IuaCIgMwpleHRlcm4gT1NFcnIKQ01DYWxpYnJhdGVE
aXNwbGF5KENhbGlicmF0b3JJbmZvICogdGhlSW5mbykgOwoKCgoKI3ByYWdtYSBwYWNrKHBvcCkK
Cgp9CiMgMzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvQ29tbW9uUGFuZWxzLmgiIDIg
MwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvTlNMLmgiIDEgMwojIDE3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29t
bW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL05TTC5oIiAzCiNkZWZpbmUgX19OU0xfXyAKIyAz
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9OU0wuaCIgMwpleHRlcm4gIkMiIHsKCgoj
cHJhZ21hIHBhY2socHVzaCwgMikKCnR5cGVkZWYgVUludDMyIE5TTERpYWxvZ09wdGlvbkZsYWdz
OwplbnVtIHsKICBrTlNMRGVmYXVsdE5TTERsb2dPcHRpb25zID0gMHgwMDAwMDAwMCwKICBrTlNM
Tm9VUkxURUZpZWxkID0gMHgwMDAwMDAwMSwKICBrTlNMQWRkU2VydmljZVR5cGVzID0gMHgwMDAw
MDAwMiwKICBrTlNMQ2xpZW50SGFuZGxlc1JlY2VudHMgPSAweDAwMDAwMDA0Cn07CgoKc3RydWN0
IE5TTERpYWxvZ09wdGlvbnMgewogIFVJbnQxNiB2ZXJzaW9uOwogIE5TTERpYWxvZ09wdGlvbkZs
YWdzIGRpYWxvZ09wdGlvbkZsYWdzOwogIFN0cjI1NSB3aW5kb3dUaXRsZTsKICBTdHIyNTUgYWN0
aW9uQnV0dG9uTGFiZWw7CiAgU3RyMjU1IGNhbmNlbEJ1dHRvbkxhYmVsOwogIFN0cjI1NSBtZXNz
YWdlOwp9Owp0eXBlZGVmIHN0cnVjdCBOU0xEaWFsb2dPcHRpb25zIE5TTERpYWxvZ09wdGlvbnM7
CnR5cGVkZWYgQm9vbGVhbiAoICogTlNMVVJMRmlsdGVyUHJvY1B0cikoY2hhciAqdXJsLCBTdHIy
NTUgZGlzcGxheVN0cmluZyk7Cgp0eXBlZGVmIHZvaWQgKCAqIE5TTEV2ZW50UHJvY1B0cikoRXZl
bnRSZWNvcmQgKm5ld0V2ZW50LCB2b2lkICp1c2VyQ29udGV4dCk7CnR5cGVkZWYgTlNMVVJMRmls
dGVyUHJvY1B0ciBOU0xVUkxGaWx0ZXJVUFA7CnR5cGVkZWYgTlNMRXZlbnRQcm9jUHRyIE5TTEV2
ZW50VVBQOwojIDcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL05TTC5oIiAzCmV4dGVy
biBOU0xVUkxGaWx0ZXJVUFAKTmV3TlNMVVJMRmlsdGVyVVBQKE5TTFVSTEZpbHRlclByb2NQdHIg
dXNlclJvdXRpbmUpIDsKIyA4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9OU0wuaCIg
MwpleHRlcm4gTlNMRXZlbnRVUFAKTmV3TlNMRXZlbnRVUFAoTlNMRXZlbnRQcm9jUHRyIHVzZXJS
b3V0aW5lKSA7CiMgOTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvTlNMLmgiIDMKZXh0
ZXJuIHZvaWQKRGlzcG9zZU5TTFVSTEZpbHRlclVQUChOU0xVUkxGaWx0ZXJVUFAgdXNlclVQUCkg
OwojIDEwNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9OU0wuaCIgMwpleHRlcm4gdm9p
ZApEaXNwb3NlTlNMRXZlbnRVUFAoTlNMRXZlbnRVUFAgdXNlclVQUCkgOwojIDExNiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBh
bmVscy5mcmFtZXdvcmsvSGVhZGVycy9OU0wuaCIgMwpleHRlcm4gQm9vbGVhbgpJbnZva2VOU0xV
UkxGaWx0ZXJVUFAoCiAgY2hhciAqIHVybCwKICBTdHIyNTUgZGlzcGxheVN0cmluZywKICBOU0xV
UkxGaWx0ZXJVUFAgdXNlclVQUCkgOwojIDEzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVy
cy9OU0wuaCIgMwpleHRlcm4gdm9pZApJbnZva2VOU0xFdmVudFVQUCgKICBFdmVudFJlY29yZCAq
IG5ld0V2ZW50LAogIHZvaWQgKiB1c2VyQ29udGV4dCwKICBOU0xFdmVudFVQUCB1c2VyVVBQKSA7
CgoKCiAgICBpbmxpbmUgTlNMVVJMRmlsdGVyVVBQIE5ld05TTFVSTEZpbHRlclVQUChOU0xVUkxG
aWx0ZXJQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5s
aW5lIE5TTEV2ZW50VVBQIE5ld05TTEV2ZW50VVBQKE5TTEV2ZW50UHJvY1B0ciB1c2VyUm91dGlu
ZSkgeyByZXR1cm4gdXNlclJvdXRpbmU7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VOU0xVUkxG
aWx0ZXJVUFAoTlNMVVJMRmlsdGVyVVBQKSB7IH0KICAgIGlubGluZSB2b2lkIERpc3Bvc2VOU0xF
dmVudFVQUChOU0xFdmVudFVQUCkgeyB9CiAgICBpbmxpbmUgQm9vbGVhbiBJbnZva2VOU0xVUkxG
aWx0ZXJVUFAoY2hhciAqIHVybCwgU3RyMjU1IGRpc3BsYXlTdHJpbmcsIE5TTFVSTEZpbHRlclVQ
UCB1c2VyVVBQKSB7IHJldHVybiAoKnVzZXJVUFApKHVybCwgZGlzcGxheVN0cmluZyk7IH0KICAg
IGlubGluZSB2b2lkIEludm9rZU5TTEV2ZW50VVBQKEV2ZW50UmVjb3JkICogbmV3RXZlbnQsIHZv
aWQgKiB1c2VyQ29udGV4dCwgTlNMRXZlbnRVUFAgdXNlclVQUCkgeyAoKnVzZXJVUFApKG5ld0V2
ZW50LCB1c2VyQ29udGV4dCk7IH0KIyAyNDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMv
TlNMLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCk5TTFN0YW5kYXJkR2V0VVJMKAogIE5TTERpYWxvZ09w
dGlvbnMgKiBkaWFsb2dPcHRpb25zLAogIE5TTEV2ZW50VVBQIGV2ZW50UHJvYywKICB2b2lkICog
ZXZlbnRQcm9jQ29udGV4dFB0ciwKICBOU0xVUkxGaWx0ZXJVUFAgZmlsdGVyUHJvYywKICBjaGFy
ICogc2VydmljZVR5cGVMaXN0LAogIGNoYXIgKiogdXNlclNlbGVjdGVkVVJMKSA7CiMgMjYwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29t
bW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL05TTC5oIiAzCmV4dGVybiBPU1N0YXR1cwpOU0xH
ZXREZWZhdWx0RGlhbG9nT3B0aW9ucyhOU0xEaWFsb2dPcHRpb25zICogZGlhbG9nT3B0aW9ucykg
OwojIDI3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9OU0wuaCIgMwpleHRlcm4gY2hh
ciAqCk5TTEZyZWVVUkwoY2hhciAqIHVybCkgOwojIDI5MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsv
SGVhZGVycy9OU0wuaCIgMwpleHRlcm4gT1NFcnIKTlNMU2F2ZVVSTEFsaWFzVG9Gb2xkZXIoCiAg
T1NUeXBlIGZvbGRlclNlbGVjdG9yVHlwZSwKICBjb25zdCBjaGFyICogdXJsLAogIGNvbnN0IGNo
YXIgKiB1c2VyRnJpZW5kbHlOYW1lKSA7CgoKCgoKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMgNDIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvQ29tbW9uUGFuZWxzLmgiIDIgMwoKCgoKCgoK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0ZvbnRQYW5lbC5oIiAxIDMKIyAxNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0Nv
bW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9Gb250UGFuZWwuaCIgMwojZGVmaW5lIF9fRk9O
VFBBTkVMX18gCiMgNDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBhbmVsLmgi
IDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBwYWNrKHB1c2gsIDIpCiMgNTMgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMu
ZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBhbmVsLmgiIDMKZW51bSB7CgoKCgogIGtFdmVudENsYXNz
Rm9udCA9ICdmb250Jwp9OwoKCgoKCgplbnVtIHsKCgoKCgoKCiAga0hJQ29tbWFuZFNob3dIaWRl
Rm9udFBhbmVsID0gJ3NoZnAnCn07CiMgOTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMv
Rm9udFBhbmVsLmgiIDMKZW51bSB7CgoKCgoKICBrRXZlbnRGb250UGFuZWxDbG9zZWQgPSAxLAoj
IDExNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9Gb250UGFuZWwuaCIgMwogIGtFdmVu
dEZvbnRTZWxlY3Rpb24gPSAyCn07CiMgMTM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJz
L0ZvbnRQYW5lbC5oIiAzCmVudW0gewogIHR5cGVDVEZvbnREZXNjcmlwdG9yUmVmID0gdHlwZUNG
VHlwZVJlZiwKICB0eXBlQVRTVUZvbnRJRCA9IHR5cGVVSW50MzIsCiAgdHlwZUFUU1VTaXplID0g
dHlwZUZpeGVkLAogIHR5cGVGTUZvbnRGYW1pbHkgPSB0eXBlU0ludDE2LAogIHR5cGVGTUZvbnRT
dHlsZSA9IHR5cGVTSW50MTYsCiAgdHlwZUZNRm9udFNpemUgPSB0eXBlU0ludDE2LAogIHR5cGVG
b250Q29sb3IgPSB0eXBlUkdCQ29sb3IsCiAga0V2ZW50UGFyYW1DVEZvbnREZXNjcmlwdG9yID0g
J2N0ZmQnLAogIGtFdmVudFBhcmFtQVRTVUZvbnRJRCA9ICdhdWlkJywKICBrRXZlbnRQYXJhbUFU
U1VGb250U2l6ZSA9ICdhdXN6JywKICBrRXZlbnRQYXJhbUZNRm9udEZhbWlseSA9ICdmbWZtJywK
ICBrRXZlbnRQYXJhbUZNRm9udFN0eWxlID0gJ2Ztc3QnLAogIGtFdmVudFBhcmFtRk1Gb250U2l6
ZSA9ICdmbXN6JywKICBrRXZlbnRQYXJhbUZvbnRDb2xvciA9ICdmY2xyJywKICBrRXZlbnRQYXJh
bURpY3Rpb25hcnkgPSAnZGljdCcsCiAga0V2ZW50UGFyYW1WaWV3QXR0cmlidXRlc0RpY3Rpb25h
cnkgPSAnZGFkYycKfTsKIyAxNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBh
bmVsLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtGb250UGFuZWxBVFNVRm9udElES2V5
IDsKIyAxNzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBhbmVsLmgiIDMKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtGb250UGFuZWxWYXJpYXRpb25BeGVzS2V5IDsKIyAxODUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBhbmVsLmgiIDMKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtGb250UGFuZWxWYXJpYXRpb25WYWx1ZXNLZXkgOwojIDE5NSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBh
bmVscy5mcmFtZXdvcmsvSGVhZGVycy9Gb250UGFuZWwuaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0ZvbnRQYW5lbEZlYXR1cmVUeXBlc0tleSA7CiMgMjA1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1l
d29yay9IZWFkZXJzL0ZvbnRQYW5lbC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrRm9u
dFBhbmVsRmVhdHVyZVNlbGVjdG9yc0tleSA7CiMgMjE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9I
ZWFkZXJzL0ZvbnRQYW5lbC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrRm9udFBhbmVs
QXR0cmlidXRlc0tleSA7CiMgMjU2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0ZvbnRQ
YW5lbC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrRm9udFBhbmVsQXR0cmlidXRlVGFn
c0tleSA7CiMgMjY2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0ZvbnRQYW5lbC5oIiAz
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrRm9udFBhbmVsQXR0cmlidXRlU2l6ZXNLZXkgOwoj
IDI3NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9Gb250UGFuZWwuaCIgMwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0ZvbnRQYW5lbEF0dHJpYnV0ZVZhbHVlc0tleSA7CiMgMjkxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29t
bW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0ZvbnRQYW5lbC5oIiAzCmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrRm9udFBhbmVsTW91c2VUcmFja2luZ1N0YXRlIDsKIyAzMTEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5l
bHMuZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBhbmVsLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtGb250UGFuZWxCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIDsKCgoKCgoKZW51bSB7
CiAgZm9udFBhbmVsU2hvd0VyciA9IC04ODgwLAogIGZvbnRQYW5lbFNlbGVjdGlvblN0eWxlRXJy
ID0gLTg4ODEsCiAgZm9udFBhbmVsRm9udFNlbGVjdGlvblFEU3R5bGVWZXJzaW9uRXJyID0gLTg4
ODIKfTsKCgoKCgoKZW51bSB7CiAga0ZvbnRTZWxlY3Rpb25BVFNVSVR5cGUgPSAnYXN0bCcsCiAg
a0ZvbnRTZWxlY3Rpb25RRFR5cGUgPSAncXN0bCcsCiAga0ZvbnRTZWxlY3Rpb25Db3JlVGV4dFR5
cGUgPSAnY3RmZCcKfTsKCgoKCgplbnVtIHsKICBrRm9udFNlbGVjdGlvblFEU3R5bGVWZXJzaW9u
WmVybyA9IDAKfTsKIyAzNTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBhbmVs
LmgiIDMKc3RydWN0IEZvbnRTZWxlY3Rpb25RRFN0eWxlIHsKICBVSW50MzIgdmVyc2lvbjsKICBG
TUZvbnRGYW1pbHlJbnN0YW5jZSBpbnN0YW5jZTsKICBGTUZvbnRTaXplIHNpemU7CiAgQm9vbGVh
biBoYXNDb2xvcjsKICBVSW50OCByZXNlcnZlZDsKICBSR0JDb2xvciBjb2xvcjsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgRm9udFNlbGVjdGlvblFEU3R5bGUgRm9udFNlbGVjdGlvblFEU3R5bGU7CnR5cGVk
ZWYgRm9udFNlbGVjdGlvblFEU3R5bGUgKiBGb250U2VsZWN0aW9uUURTdHlsZVB0cjsKIyAzNzMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBhbmVsLmgiIDMKZXh0ZXJuIEJvb2xl
YW4KRlBJc0ZvbnRQYW5lbFZpc2libGUodm9pZCkgOwojIDM4NSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdv
cmsvSGVhZGVycy9Gb250UGFuZWwuaCIgMwpleHRlcm4gT1NTdGF0dXMKRlBTaG93SGlkZUZvbnRQ
YW5lbCh2b2lkKSA7CiMgMzk3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0ZvbnRQYW5l
bC5oIiAzCmV4dGVybiBPU1N0YXR1cwpTZXRGb250SW5mb0ZvclNlbGVjdGlvbigKICBPU1R5cGUg
aVN0eWxlVHlwZSwKICBVSW50MzIgaU51bVN0eWxlcywKICB2b2lkICogaVN0eWxlcywKICBFdmVu
dFRhcmdldFJlZiBpRlBFdmVudFRhcmdldCkgOwojIDQxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsv
SGVhZGVycy9Gb250UGFuZWwuaCIgMwp0eXBlZGVmIHN0cnVjdCBPcGFxdWVGQ0ZvbnREZXNjcmlw
dG9yUmVmKiBGQ0ZvbnREZXNjcmlwdG9yUmVmOwojIDQzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsv
SGVhZGVycy9Gb250UGFuZWwuaCIgMwpleHRlcm4gQ0ZBcnJheVJlZgpGQ0NvcHlDb2xsZWN0aW9u
TmFtZXModm9pZCkgOwojIDQ2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9Gb250UGFu
ZWwuaCIgMwpleHRlcm4gQ0ZBcnJheVJlZgpGQ0NvcHlGb250RGVzY3JpcHRvcnNJbkNvbGxlY3Rp
b24oQ0ZTdHJpbmdSZWYgaUNvbGxlY3Rpb24pIDsKIyA0OTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3Jr
L0hlYWRlcnMvRm9udFBhbmVsLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCkZDQWRkQ29sbGVjdGlvbigK
ICBDRlN0cmluZ1JlZiBpQ29sbGVjdGlvbiwKICBPcHRpb25CaXRzIGlDb2xsZWN0aW9uT3B0aW9u
cykgOwojIDUxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9Gb250UGFuZWwuaCIgMwpl
eHRlcm4gT1NTdGF0dXMKRkNSZW1vdmVDb2xsZWN0aW9uKENGU3RyaW5nUmVmIGlDb2xsZWN0aW9u
KSA7CiMgNTQ4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0ZvbnRQYW5lbC5oIiAzCmV4
dGVybiBPU1N0YXR1cwpGQ0FkZEZvbnREZXNjcmlwdG9yVG9Db2xsZWN0aW9uKAogIEZDRm9udERl
c2NyaXB0b3JSZWYgaURlc2NyaXB0b3IsCiAgQ0ZTdHJpbmdSZWYgaUNvbGxlY3Rpb24pIDsKIyA1
NzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBhbmVsLmgiIDMKZXh0ZXJuIE9T
U3RhdHVzCkZDUmVtb3ZlRm9udERlc2NyaXB0b3JGcm9tQ29sbGVjdGlvbigKICBGQ0ZvbnREZXNj
cmlwdG9yUmVmIGlEZXNjcmlwdG9yLAogIENGU3RyaW5nUmVmIGlDb2xsZWN0aW9uKSA7CiMgNjAz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
Q29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0ZvbnRQYW5lbC5oIiAzCmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrRkNGb250RmFtaWx5QXR0cmlidXRlIDsKIyA2MTYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMu
ZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBhbmVsLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtGQ0ZvbnROYW1lQXR0cmlidXRlIDsKIyA2MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRl
cnMvRm9udFBhbmVsLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtGQ0ZvbnRGYWNlQXR0
cmlidXRlIDsKIyA2NDAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBhbmVsLmgi
IDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtGQ0ZvbnRTaXplQXR0cmlidXRlIDsKIyA2NTMg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9D
b21tb25QYW5lbHMuZnJhbWV3b3JrL0hlYWRlcnMvRm9udFBhbmVsLmgiIDMKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtGQ0ZvbnRWaXNpYmxlTmFtZUF0dHJpYnV0ZSA7CiMgNjY1ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFu
ZWxzLmZyYW1ld29yay9IZWFkZXJzL0ZvbnRQYW5lbC5oIiAzCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrRkNGb250Q0dDb2xvckF0dHJpYnV0ZSA7CiMgNjg3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29y
ay9IZWFkZXJzL0ZvbnRQYW5lbC5oIiAzCmV4dGVybiBGQ0ZvbnREZXNjcmlwdG9yUmVmCkZDRm9u
dERlc2NyaXB0b3JDcmVhdGVXaXRoRm9udEF0dHJpYnV0ZXMoQ0ZEaWN0aW9uYXJ5UmVmIGlBdHRy
aWJ1dGVzKSA7CiMgNzE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9IZWFkZXJzL0ZvbnRQYW5lbC5o
IiAzCmV4dGVybiBGQ0ZvbnREZXNjcmlwdG9yUmVmCkZDRm9udERlc2NyaXB0b3JDcmVhdGVXaXRo
TmFtZSgKICBDRlN0cmluZ1JlZiBpRm9udE5hbWUsCiAgQ0dGbG9hdCBpU2l6ZSkgOwoKCgojcHJh
Z21hIHBhY2socG9wKQoKCn0KIyA1MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvSGVhZGVycy9Db21t
b25QYW5lbHMuaCIgMiAzCiMgNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvSGVhZGVycy9DYXJib24uaCIgMiAzCiMgNjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvSGVhZGVycy9DYXJib24uaCIgMwojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNv
Z25pdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hSZWNvZ25pdGlvbi5oIiAxIDMKIyAxNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1Nw
ZWVjaFJlY29nbml0aW9uLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFJlY29nbml0aW9uLmgiIDMK
I2RlZmluZSBfX1NQRUVDSFJFQ09HTklUSU9OX18gCiMgMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9TcGVlY2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiAiQyIgewoKCiNwcmFn
bWEgcGFjayhwdXNoLCAyKQoKCmVudW0gewogIGtTUk5vdEF2YWlsYWJsZSA9IC01MTAwLAogIGtT
UkludGVybmFsRXJyb3IgPSAtNTEwMSwKICBrU1JDb21wb25lbnROb3RGb3VuZCA9IC01MTAyLAog
IGtTUk91dE9mTWVtb3J5ID0gLTUxMDMsCiAga1NSTm90QVNwZWVjaE9iamVjdCA9IC01MTA0LAog
IGtTUkJhZFBhcmFtZXRlciA9IC01MTA1LAogIGtTUlBhcmFtT3V0T2ZSYW5nZSA9IC01MTA2LAog
IGtTUkJhZFNlbGVjdG9yID0gLTUxMDcsCiAga1NSQnVmZmVyVG9vU21hbGwgPSAtNTEwOCwKICBr
U1JOb3RBUmVjU3lzdGVtID0gLTUxMDksCiAga1NSRmVlZGJhY2tOb3RBdmFpbCA9IC01MTEwLAog
IGtTUkNhbnRTZXRQcm9wZXJ0eSA9IC01MTExLAogIGtTUkNhbnRHZXRQcm9wZXJ0eSA9IC01MTEy
LAogIGtTUkNhbnRTZXREdXJpbmdSZWNvZ25pdGlvbiA9IC01MTEzLAogIGtTUkFscmVhZHlMaXN0
ZW5pbmcgPSAtNTExNCwKICBrU1JOb3RMaXN0ZW5pbmdTdGF0ZSA9IC01MTE1LAogIGtTUk1vZGVs
TWlzbWF0Y2ggPSAtNTExNiwKICBrU1JOb0NsaWVudExhbmd1YWdlTW9kZWwgPSAtNTExNywKICBr
U1JOb1BlbmRpbmdVdHRlcmFuY2VzID0gLTUxMTgsCiAga1NSUmVjb2duaXRpb25DYW5jZWxlZCA9
IC01MTE5LAogIGtTUlJlY29nbml0aW9uRG9uZSA9IC01MTIwLAogIGtTUk90aGVyUmVjQWxyZWFk
eU1vZGFsID0gLTUxMjEsCiAga1NSSGFzTm9TdWJJdGVtcyA9IC01MTIyLAogIGtTUlN1Ykl0ZW1O
b3RGb3VuZCA9IC01MTIzLAogIGtTUkxhbmd1YWdlTW9kZWxUb29CaWcgPSAtNTEyNCwKICBrU1JB
bHJlYWR5UmVsZWFzZWQgPSAtNTEyNSwKICBrU1JBbHJlYWR5RmluaXNoZWQgPSAtNTEyNiwKICBr
U1JXb3JkTm90Rm91bmQgPSAtNTEyNywKICBrU1JOb3RGaW5pc2hlZFdpdGhSZWplY3Rpb24gPSAt
NTEyOCwKICBrU1JFeHBhbnNpb25Ub29EZWVwID0gLTUxMjksCiAga1NSVG9vTWFueUVsZW1lbnRz
ID0gLTUxMzAsCiAga1NSQ2FudEFkZCA9IC01MTMxLAogIGtTUlNuZEluU291cmNlRGlzY29ubmVj
dGVkID0gLTUxMzIsCiAga1NSQ2FudFJlYWRMYW5ndWFnZU9iamVjdCA9IC01MTMzLAoKICBrU1JO
b3RJbXBsZW1lbnRlZFlldCA9IC01MTk5Cn07CgoKCnR5cGVkZWYgc3RydWN0IE9wYXF1ZVNSU3Bl
ZWNoT2JqZWN0KiBTUlNwZWVjaE9iamVjdDsKdHlwZWRlZiBTUlNwZWVjaE9iamVjdCBTUlJlY29n
bml0aW9uU3lzdGVtOwp0eXBlZGVmIFNSU3BlZWNoT2JqZWN0IFNSUmVjb2duaXplcjsKdHlwZWRl
ZiBTUlNwZWVjaE9iamVjdCBTUlNwZWVjaFNvdXJjZTsKdHlwZWRlZiBTUlNwZWVjaFNvdXJjZSBT
UlJlY29nbml0aW9uUmVzdWx0Owp0eXBlZGVmIFNSU3BlZWNoT2JqZWN0IFNSTGFuZ3VhZ2VPYmpl
Y3Q7CnR5cGVkZWYgU1JMYW5ndWFnZU9iamVjdCBTUkxhbmd1YWdlTW9kZWw7CnR5cGVkZWYgU1JM
YW5ndWFnZU9iamVjdCBTUlBhdGg7CnR5cGVkZWYgU1JMYW5ndWFnZU9iamVjdCBTUlBocmFzZTsK
dHlwZWRlZiBTUkxhbmd1YWdlT2JqZWN0IFNSV29yZDsKCnR5cGVkZWYgVUludDE2IFNSU3BlZWRT
ZXR0aW5nOwoKdHlwZWRlZiBVSW50MTYgU1JSZWplY3Rpb25MZXZlbDsKCgoKc3RydWN0IFNSQ2Fs
bEJhY2tTdHJ1Y3QgewogIFVJbnQzMiB3aGF0OwogIGxvbmcgbWVzc2FnZTsKICBTUlJlY29nbml6
ZXIgaW5zdGFuY2U7CiAgT1NFcnIgc3RhdHVzOwogIFNJbnQxNiBmbGFnczsKICBTUmVmQ29uIHJl
ZkNvbjsKfTsKdHlwZWRlZiBzdHJ1Y3QgU1JDYWxsQmFja1N0cnVjdCBTUkNhbGxCYWNrU3RydWN0
OwoKdHlwZWRlZiB2b2lkICggKiBTUkNhbGxCYWNrUHJvY1B0cikoU1JDYWxsQmFja1N0cnVjdCAq
IHBhcmFtKTsKdHlwZWRlZiBTUkNhbGxCYWNrUHJvY1B0ciBTUkNhbGxCYWNrVVBQOwojIDExNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1Nw
ZWVjaFJlY29nbml0aW9uLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFJlY29nbml0aW9uLmgiIDMK
ZXh0ZXJuIFNSQ2FsbEJhY2tVUFAKTmV3U1JDYWxsQmFja1VQUChTUkNhbGxCYWNrUHJvY1B0ciB1
c2VyUm91dGluZSkgOwojIDEyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFJlY29nbml0aW9uLmZyYW1ld29yay9IZWFkZXJzL1Nw
ZWVjaFJlY29nbml0aW9uLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVNSQ2FsbEJhY2tVUFAoU1JD
YWxsQmFja1VQUCB1c2VyVVBQKSA7CiMgMTM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvU3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gdm9pZApJbnZva2VTUkNhbGxCYWNr
VVBQKAogIFNSQ2FsbEJhY2tTdHJ1Y3QgKiBwYXJhbSwKICBTUkNhbGxCYWNrVVBQIHVzZXJVUFAp
IDsKCgoKICAgIGlubGluZSBTUkNhbGxCYWNrVVBQIE5ld1NSQ2FsbEJhY2tVUFAoU1JDYWxsQmFj
a1Byb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBpbmxpbmUg
dm9pZCBEaXNwb3NlU1JDYWxsQmFja1VQUChTUkNhbGxCYWNrVVBQKSB7IH0KICAgIGlubGluZSB2
b2lkIEludm9rZVNSQ2FsbEJhY2tVUFAoU1JDYWxsQmFja1N0cnVjdCAqIHBhcmFtLCBTUkNhbGxC
YWNrVVBQIHVzZXJVUFApIHsgKCp1c2VyVVBQKShwYXJhbSk7IH0KCgoKCgoKCnN0cnVjdCBTUkNh
bGxCYWNrUGFyYW0gewogIFNSQ2FsbEJhY2tVUFAgY2FsbEJhY2s7CiAgU1JlZkNvbiByZWZDb247
Cn07CnR5cGVkZWYgc3RydWN0IFNSQ2FsbEJhY2tQYXJhbSBTUkNhbGxCYWNrUGFyYW07CgplbnVt
IHsKICBrU1JEZWZhdWx0UmVjb2duaXRpb25TeXN0ZW1JRCA9IDAKfTsKCgplbnVtIHsKICBrU1JG
ZWVkYmFja0FuZExpc3RlbmluZ01vZGVzID0gJ2Zid24nLAogIGtTUlJlamVjdGVkV29yZCA9ICdy
ZWpxJywKICBrU1JDbGVhbnVwT25DbGllbnRFeGl0ID0gJ2NsdXAnCn07CgplbnVtIHsKICBrU1JO
b0ZlZWRiYWNrTm9MaXN0ZW5Nb2RlcyA9IDAsCiAga1NSSGFzRmVlZGJhY2tIYXNMaXN0ZW5Nb2Rl
cyA9IDEsCiAga1NSTm9GZWVkYmFja0hhc0xpc3Rlbk1vZGVzID0gMgp9OwoKCmVudW0gewogIGtT
UkRlZmF1bHRTcGVlY2hTb3VyY2UgPSAwLAogIGtTUkxpdmVEZXNrdG9wU3BlZWNoU291cmNlID0g
J2RrbHYnLAogIGtTUkNhbm5lZDIya0h6U3BlZWNoU291cmNlID0gJ2NhMjInCn07CgoKCmVudW0g
ewogIGtTUk5vdGlmeVJlY29nbml0aW9uQmVnaW5uaW5nID0gMUwgPDwgMCwKICBrU1JOb3RpZnlS
ZWNvZ25pdGlvbkRvbmUgPSAxTCA8PCAxCn07CgoKCmVudW0gewogIGtBRVNwZWVjaFN1aXRlID0g
J3NwcmMnCn07CgoKZW51bSB7CiAga0FFU3BlZWNoRG9uZSA9ICdzcnNkJywKICBrQUVTcGVlY2hE
ZXRlY3RlZCA9ICdzcmJkJwp9OwoKCmVudW0gewogIGtleVNSUmVjb2duaXplciA9ICdrcmVjJywK
ICBrZXlTUlNwZWVjaFJlc3VsdCA9ICdrc3ByJywKICBrZXlTUlNwZWVjaFN0YXR1cyA9ICdrc3N0
Jwp9OwoKCmVudW0gewogIHR5cGVTUlJlY29nbml6ZXIgPSAndHJlYycsCiAgdHlwZVNSU3BlZWNo
UmVzdWx0ID0gJ3RzcHInCn07CgoKCmVudW0gewogIGtTUk5vdGlmaWNhdGlvblBhcmFtID0gJ25v
dGknLAogIGtTUkNhbGxCYWNrUGFyYW0gPSAnY2FsbCcsCiAga1NSU2VhcmNoU3RhdHVzUGFyYW0g
PSAnc3RhdCcsCiAga1NSQXV0b0ZpbmlzaGluZ1BhcmFtID0gJ2FmaW4nLAogIGtTUkZvcmVncm91
bmRPbmx5ID0gJ2Znb24nLAogIGtTUkJsb2NrQmFja2dyb3VuZCA9ICdibGJnJywKICBrU1JCbG9j
a01vZGFsbHkgPSAnYmxtZCcsCiAga1NSV2FudHNSZXN1bHRUZXh0RHJhd24gPSAndHhmYicsCiAg
a1NSV2FudHNBdXRvRkJHZXN0dXJlcyA9ICdkZmJyJywKICBrU1JTb3VuZEluVm9sdW1lID0gJ3Zv
bHUnLAogIGtTUlJlYWRBdWRpb0ZTU3BlYyA9ICdhdXJkJywKICBrU1JSZWFkQXVkaW9VUkwgPSAn
YXVybCcsCiAga1NSQ2FuY2VsT25Tb3VuZE91dCA9ICdjYXNvJywKICBrU1JTcGVlZFZzQWNjdXJh
Y3lQYXJhbSA9ICdzcGVkJwp9OwoKCgplbnVtIHsKICBrU1JVc2VUb2dnbGVMaXN0ZW4gPSAwLAog
IGtTUlVzZVB1c2hUb1RhbGsgPSAxCn07CgplbnVtIHsKICBrU1JMaXN0ZW5LZXlNb2RlID0gJ2xr
bWQnLAogIGtTUkxpc3RlbktleUNvbWJvID0gJ2xrZXknLAogIGtTUkxpc3RlbktleU5hbWUgPSAn
bG5hbScsCiAga1NSS2V5V29yZCA9ICdrd3JkJywKICBrU1JLZXlFeHBlY3RlZCA9ICdrZXhwJwp9
OwoKCmVudW0gewogIGtTUklkbGVSZWNvZ25pemVyID0gMUwgPDwgMCwKICBrU1JTZWFyY2hJblBy
b2dyZXNzID0gMUwgPDwgMSwKICBrU1JTZWFyY2hXYWl0Rm9yQWxsQ2xpZW50cyA9IDFMIDw8IDIs
CiAga1NSTXVzdENhbmNlbFNlYXJjaCA9IDFMIDw8IDMsCiAga1NSUGVuZGluZ1NlYXJjaCA9IDFM
IDw8IDQKfTsKCgplbnVtIHsKICBrU1JURVhURm9ybWF0ID0gJ1RFWFQnLAogIGtTUlBocmFzZUZv
cm1hdCA9ICdsbXBoJywKICBrU1JQYXRoRm9ybWF0ID0gJ2xtcHQnLAogIGtTUkxhbmd1YWdlTW9k
ZWxGb3JtYXQgPSAnbG1mbScKfTsKCgplbnVtIHsKICBrU1JTcGVsbGluZyA9ICdzcGVsJywKICBr
U1JMTU9ialR5cGUgPSAnbG10cCcsCiAga1NSUmVmQ29uID0gJ3JlZmMnLAogIGtTUk9wdGlvbmFs
ID0gJ29wdGwnLAogIGtTUkVuYWJsZWQgPSAnZW5ibCcsCiAga1NSUmVwZWF0YWJsZSA9ICdycHRi
JywKICBrU1JSZWplY3RhYmxlID0gJ3JqYmwnLAoKICBrU1JSZWplY3Rpb25MZXZlbCA9ICdyamN0
Jwp9OwoKCmVudW0gewogIGtTUkxhbmd1YWdlTW9kZWxUeXBlID0gJ2xtb2InLAogIGtTUlBhdGhU
eXBlID0gJ3BhdGgnLAogIGtTUlBocmFzZVR5cGUgPSAncGhyYScsCiAga1NSV29yZFR5cGUgPSAn
d29yZCcKfTsKCgplbnVtIHsKICBrU1JEZWZhdWx0UmVqZWN0aW9uTGV2ZWwgPSA1MAp9OwojIDMz
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
L1NwZWVjaFJlY29nbml0aW9uLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFJlY29nbml0aW9uLmgi
IDMKZXh0ZXJuIE9TRXJyClNST3BlblJlY29nbml0aW9uU3lzdGVtKAogIFNSUmVjb2duaXRpb25T
eXN0ZW0gKiBzeXN0ZW0sCiAgT1NUeXBlIHN5c3RlbUlEKSA7CiMgMzQ2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRp
b24uZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIK
U1JDbG9zZVJlY29nbml0aW9uU3lzdGVtKFNSUmVjb2duaXRpb25TeXN0ZW0gc3lzdGVtKSA7CiMg
MzU5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoUmVjb2duaXRpb24u
aCIgMwpleHRlcm4gT1NFcnIKU1JTZXRQcm9wZXJ0eSgKICBTUlNwZWVjaE9iamVjdCBzck9iamVj
dCwKICBPU1R5cGUgc2VsZWN0b3IsCiAgY29uc3Qgdm9pZCAqIHByb3BlcnR5LAogIFNpemUgcHJv
cGVydHlMZW4pIDsKIyAzNzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9TcGVl
Y2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUkdldFByb3BlcnR5KAogIFNSU3BlZWNo
T2JqZWN0IHNyT2JqZWN0LAogIE9TVHlwZSBzZWxlY3RvciwKICB2b2lkICogcHJvcGVydHksCiAg
U2l6ZSAqIHByb3BlcnR5TGVuKSA7CiMgMzkyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvU3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JSZWxlYXNlT2JqZWN0
KFNSU3BlZWNoT2JqZWN0IHNyT2JqZWN0KSA7CiMgNDA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvU3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JHZXRSZWZl
cmVuY2UoCiAgU1JTcGVlY2hPYmplY3Qgc3JPYmplY3QsCiAgU1JTcGVlY2hPYmplY3QgKiBuZXdP
YmplY3RSZWYpIDsKIyA0MTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9TcGVl
Y2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUk5ld1JlY29nbml6ZXIoCiAgU1JSZWNv
Z25pdGlvblN5c3RlbSBzeXN0ZW0sCiAgU1JSZWNvZ25pemVyICogcmVjb2duaXplciwKICBPU1R5
cGUgc291cmNlSUQpIDsKIyA0MzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9T
cGVlY2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUlN0YXJ0TGlzdGVuaW5nKFNSUmVj
b2duaXplciByZWNvZ25pemVyKSA7CiMgNDQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hl
YWRlcnMvU3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JTdG9wTGlzdGVuaW5n
KFNSUmVjb2duaXplciByZWNvZ25pemVyKSA7CiMgNDU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvU3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JTZXRMYW5n
dWFnZU1vZGVsKAogIFNSUmVjb2duaXplciByZWNvZ25pemVyLAogIFNSTGFuZ3VhZ2VNb2RlbCBs
YW5ndWFnZU1vZGVsKSA7CiMgNDcyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
U3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JHZXRMYW5ndWFnZU1vZGVsKAog
IFNSUmVjb2duaXplciByZWNvZ25pemVyLAogIFNSTGFuZ3VhZ2VNb2RlbCAqIGxhbmd1YWdlTW9k
ZWwpIDsKIyA0ODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hSZWNv
Z25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUkNvbnRpbnVlUmVjb2duaXRpb24oU1JSZWNvZ25p
emVyIHJlY29nbml6ZXIpIDsKIyA0OTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsvSGVhZGVy
cy9TcGVlY2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUkNhbmNlbFJlY29nbml0aW9u
KFNSUmVjb2duaXplciByZWNvZ25pemVyKSA7CiMgNTEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3
b3JrL0hlYWRlcnMvU3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JJZGxlKHZv
aWQpIDsKIyA1MjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hSZWNv
Z25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUk5ld0xhbmd1YWdlTW9kZWwoCiAgU1JSZWNvZ25p
dGlvblN5c3RlbSBzeXN0ZW0sCiAgU1JMYW5ndWFnZU1vZGVsICogbW9kZWwsCiAgY29uc3Qgdm9p
ZCAqIG5hbWUsCiAgU0ludDMyIG5hbWVMZW5ndGgpIDsKIyA1MzkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9TcGVlY2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUk5l
d1BhdGgoCiAgU1JSZWNvZ25pdGlvblN5c3RlbSBzeXN0ZW0sCiAgU1JQYXRoICogcGF0aCkgOwoj
IDU1MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NwZWVjaFJlY29nbml0aW9uLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFJlY29nbml0aW9u
LmgiIDMKZXh0ZXJuIE9TRXJyClNSTmV3UGhyYXNlKAogIFNSUmVjb2duaXRpb25TeXN0ZW0gc3lz
dGVtLAogIFNSUGhyYXNlICogcGhyYXNlLAogIGNvbnN0IHZvaWQgKiB0ZXh0LAogIFNJbnQzMiB0
ZXh0TGVuZ3RoKSA7CiMgNTY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvU3Bl
ZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JOZXdXb3JkKAogIFNSUmVjb2duaXRp
b25TeXN0ZW0gc3lzdGVtLAogIFNSV29yZCAqIHdvcmQsCiAgY29uc3Qgdm9pZCAqIHRleHQsCiAg
U0ludDMyIHRleHRMZW5ndGgpIDsKIyA1ODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsvSGVh
ZGVycy9TcGVlY2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUlB1dExhbmd1YWdlT2Jq
ZWN0SW50b0hhbmRsZSgKICBTUkxhbmd1YWdlT2JqZWN0IGxhbmd1YWdlT2JqZWN0LAogIEhhbmRs
ZSBsb2JqSGFuZGxlKSA7CiMgNjAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hlYWRlcnMv
U3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JQdXRMYW5ndWFnZU9iamVjdElu
dG9EYXRhRmlsZSgKICBTUkxhbmd1YWdlT2JqZWN0IGxhbmd1YWdlT2JqZWN0LAogIHNob3J0IGZS
ZWZOdW0pIDsKIyA2MTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hS
ZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUk5ld0xhbmd1YWdlT2JqZWN0RnJvbUhhbmRs
ZSgKICBTUlJlY29nbml0aW9uU3lzdGVtIHN5c3RlbSwKICBTUkxhbmd1YWdlT2JqZWN0ICogbGFu
Z3VhZ2VPYmplY3QsCiAgSGFuZGxlIGxPYmpIYW5kbGUpIDsKIyA2MjkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlv
bi5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpT
Uk5ld0xhbmd1YWdlT2JqZWN0RnJvbURhdGFGaWxlKAogIFNSUmVjb2duaXRpb25TeXN0ZW0gc3lz
dGVtLAogIFNSTGFuZ3VhZ2VPYmplY3QgKiBsYW5ndWFnZU9iamVjdCwKICBzaG9ydCBmUmVmTnVt
KSA7CiMgNjQ0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoUmVjb2du
aXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JFbXB0eUxhbmd1YWdlT2JqZWN0KFNSTGFuZ3VhZ2VP
YmplY3QgbGFuZ3VhZ2VPYmplY3QpIDsKIyA2NTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsv
SGVhZGVycy9TcGVlY2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUkNoYW5nZUxhbmd1
YWdlT2JqZWN0KAogIFNSTGFuZ3VhZ2VPYmplY3QgbGFuZ3VhZ2VPYmplY3QsCiAgY29uc3Qgdm9p
ZCAqIHRleHQsCiAgU0ludDMyIHRleHRMZW5ndGgpIDsKIyA2NzEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5m
cmFtZXdvcmsvSGVhZGVycy9TcGVlY2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUkFk
ZExhbmd1YWdlT2JqZWN0KAogIFNSTGFuZ3VhZ2VPYmplY3QgYmFzZSwKICBTUkxhbmd1YWdlT2Jq
ZWN0IGFkZG9uKSA7CiMgNjg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvU3Bl
ZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JBZGRUZXh0KAogIFNSTGFuZ3VhZ2VP
YmplY3QgYmFzZSwKICBjb25zdCB2b2lkICogdGV4dCwKICBTSW50MzIgdGV4dExlbmd0aCwKICBT
UmVmQ29uIHJlZkNvbikgOwojIDcwMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFJlY29nbml0aW9uLmZyYW1ld29yay9IZWFkZXJz
L1NwZWVjaFJlY29nbml0aW9uLmgiIDMKZXh0ZXJuIE9TRXJyClNSUmVtb3ZlTGFuZ3VhZ2VPYmpl
Y3QoCiAgU1JMYW5ndWFnZU9iamVjdCBiYXNlLAogIFNSTGFuZ3VhZ2VPYmplY3QgdG9SZW1vdmUp
IDsKIyA3MTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsvSGVhZGVycy9TcGVlY2hSZWNvZ25p
dGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUkNvdW50SXRlbXMoCiAgU1JTcGVlY2hPYmplY3QgY29u
dGFpbmVyLAogIGxvbmcgKiBjb3VudCkgOwojIDczMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFJlY29nbml0aW9uLmZyYW1ld29y
ay9IZWFkZXJzL1NwZWVjaFJlY29nbml0aW9uLmgiIDMKZXh0ZXJuIE9TRXJyClNSR2V0SW5kZXhl
ZEl0ZW0oCiAgU1JTcGVlY2hPYmplY3QgY29udGFpbmVyLAogIFNSU3BlZWNoT2JqZWN0ICogaXRl
bSwKICBsb25nIGluZGV4KSA7CiMgNzQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hlYWRl
cnMvU3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JTZXRJbmRleGVkSXRlbSgK
ICBTUlNwZWVjaE9iamVjdCBjb250YWluZXIsCiAgU1JTcGVlY2hPYmplY3QgaXRlbSwKICBsb25n
IGluZGV4KSA7CiMgNzYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3
b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNo
UmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JSZW1vdmVJbmRleGVkSXRlbSgKICBTUlNw
ZWVjaE9iamVjdCBjb250YWluZXIsCiAgbG9uZyBpbmRleCkgOwojIDc3NSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFJlY29nbml0
aW9uLmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFJlY29nbml0aW9uLmgiIDMKZXh0ZXJuIE9TRXJy
ClNSRHJhd1RleHQoCiAgU1JSZWNvZ25pemVyIHJlY29nbml6ZXIsCiAgY29uc3Qgdm9pZCAqIGRp
c3BUZXh0LAogIFNJbnQzMiBkaXNwTGVuZ3RoKSA7CiMgNzkwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJh
bWV3b3JrL0hlYWRlcnMvU3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JEcmF3
UmVjb2duaXplZFRleHQoCiAgU1JSZWNvZ25pemVyIHJlY29nbml6ZXIsCiAgY29uc3Qgdm9pZCAq
IGRpc3BUZXh0LAogIFNJbnQzMiBkaXNwTGVuZ3RoKSA7CiMgODA1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24u
ZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoUmVjb2duaXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JT
cGVha1RleHQoCiAgU1JSZWNvZ25pemVyIHJlY29nbml6ZXIsCiAgY29uc3Qgdm9pZCAqIHNwZWFr
VGV4dCwKICBTSW50MzIgc3BlYWtMZW5ndGgpIDsKIyA4MjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9TcGVlY2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUlNwZWFr
QW5kRHJhd1RleHQoCiAgU1JSZWNvZ25pemVyIHJlY29nbml6ZXIsCiAgY29uc3Qgdm9pZCAqIHRl
eHQsCiAgU0ludDMyIHRleHRMZW5ndGgpIDsKIyA4MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdv
cmsvSGVhZGVycy9TcGVlY2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBPU0VycgpTUlN0b3BTcGVl
Y2goU1JSZWNvZ25pemVyIHJlY29nbml6ZXIpIDsKIyA4NDcgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycy9TcGVlY2hSZWNvZ25pdGlvbi5oIiAzCmV4dGVybiBCb29sZWFuClNSU3Bl
ZWNoQnVzeShTUlJlY29nbml6ZXIgcmVjb2duaXplcikgOwojIDg1OSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NwZWVjaFJlY29nbml0aW9u
LmZyYW1ld29yay9IZWFkZXJzL1NwZWVjaFJlY29nbml0aW9uLmgiIDMKZXh0ZXJuIE9TRXJyClNS
UHJvY2Vzc0JlZ2luKAogIFNSUmVjb2duaXplciByZWNvZ25pemVyLAogIEJvb2xlYW4gZmFpbGVk
KSA7CiMgODczICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU3BlZWNoUmVjb2duaXRpb24uZnJhbWV3b3JrL0hlYWRlcnMvU3BlZWNoUmVjb2du
aXRpb24uaCIgMwpleHRlcm4gT1NFcnIKU1JQcm9jZXNzRW5kKAogIFNSUmVjb2duaXplciByZWNv
Z25pemVyLAogIEJvb2xlYW4gZmFpbGVkKSA7CgoKCgoKI3ByYWdtYSBwYWNrKHBvcCkKCgp9CiMg
NjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvSGVhZGVycy9D
YXJib24uaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL1NlY3VyaXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHlI
SS5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL1NlY3VyaXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHlISS5oIiAz
CiNkZWZpbmUgX19TRUNVUklUWUhJX18gCgoKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1ld29yay9I
ZWFkZXJzL0tleWNoYWluSEkuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1ld29yay9IZWFkZXJz
L0tleWNoYWluSEkuaCIgMwojZGVmaW5lIF9fS0VZQ0hBSU5ISV9fIAojIDMxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VjdXJpdHlISS5m
cmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkhJLmgiIDMKZXh0ZXJuICJDIiB7CiMgNDYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0
eUhJLmZyYW1ld29yay9IZWFkZXJzL0tleWNoYWluSEkuaCIgMwpleHRlcm4gT1NTdGF0dXMKS0NB
ZGRBcHBsZVNoYXJlUGFzc3dvcmQoCiAgQUZQU2VydmVyU2lnbmF0dXJlICogc2VydmVyU2lnbmF0
dXJlLAogIFN0cmluZ1B0ciBzZXJ2ZXJBZGRyZXNzLAogIFN0cmluZ1B0ciBzZXJ2ZXJOYW1lLAog
IFN0cmluZ1B0ciB2b2x1bWVOYW1lLAogIFN0cmluZ1B0ciBhY2NvdW50TmFtZSwKICBVSW50MzIg
cGFzc3dvcmRMZW5ndGgsCiAgY29uc3Qgdm9pZCAqIHBhc3N3b3JkRGF0YSwKICBLQ0l0ZW1SZWYg
KiBpdGVtKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgNjkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1l
d29yay9IZWFkZXJzL0tleWNoYWluSEkuaCIgMwpleHRlcm4gT1NTdGF0dXMKS0NBZGRJbnRlcm5l
dFBhc3N3b3JkKAogIFN0cmluZ1B0ciBzZXJ2ZXJOYW1lLAogIFN0cmluZ1B0ciBzZWN1cml0eURv
bWFpbiwKICBTdHJpbmdQdHIgYWNjb3VudE5hbWUsCiAgVUludDE2IHBvcnQsCiAgT1NUeXBlIHBy
b3RvY29sLAogIE9TVHlwZSBhdXRoVHlwZSwKICBVSW50MzIgcGFzc3dvcmRMZW5ndGgsCiAgY29u
c3Qgdm9pZCAqIHBhc3N3b3JkRGF0YSwKICBLQ0l0ZW1SZWYgKiBpdGVtKSBfX2F0dHJpYnV0ZV9f
KChkZXByZWNhdGVkKSk7CiMgOTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1ld29yay9IZWFkZXJzL0tleWNoYWlu
SEkuaCIgMwpleHRlcm4gT1NTdGF0dXMKS0NBZGRJbnRlcm5ldFBhc3N3b3JkV2l0aFBhdGgoCiAg
U3RyaW5nUHRyIHNlcnZlck5hbWUsCiAgU3RyaW5nUHRyIHNlY3VyaXR5RG9tYWluLAogIFN0cmlu
Z1B0ciBhY2NvdW50TmFtZSwKICBTdHJpbmdQdHIgcGF0aCwKICBVSW50MTYgcG9ydCwKICBPU1R5
cGUgcHJvdG9jb2wsCiAgT1NUeXBlIGF1dGhUeXBlLAogIFVJbnQzMiBwYXNzd29yZExlbmd0aCwK
ICBjb25zdCB2b2lkICogcGFzc3dvcmREYXRhLAogIEtDSXRlbVJlZiAqIGl0ZW0pIF9fYXR0cmli
dXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAxMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1ld29yay9IZWFkZXJzL0tl
eWNoYWluSEkuaCIgMwpleHRlcm4gT1NTdGF0dXMKS0NBZGRHZW5lcmljUGFzc3dvcmQoCiAgU3Ry
aW5nUHRyIHNlcnZpY2VOYW1lLAogIFN0cmluZ1B0ciBhY2NvdW50TmFtZSwKICBVSW50MzIgcGFz
c3dvcmRMZW5ndGgsCiAgY29uc3Qgdm9pZCAqIHBhc3N3b3JkRGF0YSwKICBLQ0l0ZW1SZWYgKiBp
dGVtKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMTM5ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VjdXJpdHlISS5mcmFtZXdv
cmsvSGVhZGVycy9LZXljaGFpbkhJLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCktDQWRkSXRlbShLQ0l0
ZW1SZWYgaXRlbSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDE1NSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlY3VyaXR5SEku
ZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5ISS5oIiAzCmV4dGVybiBPU1N0YXR1cwpLQ1VubG9j
aygKICBLQ1JlZiBrZXljaGFpbiwKICBTdHJpbmdQdHIgcGFzc3dvcmQpIF9fYXR0cmlidXRlX18o
KGRlcHJlY2F0ZWQpKTsKIyAxNzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1ld29yay9IZWFkZXJzL0tleWNoYWlu
SEkuaCIgMwpleHRlcm4gT1NTdGF0dXMKS0NDcmVhdGVLZXljaGFpbigKICBTdHJpbmdQdHIgcGFz
c3dvcmQsCiAgS0NSZWYgKiBrZXljaGFpbikgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwoj
IDE4OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NlY3VyaXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5ISS5oIiAzCmV4dGVybiBP
U1N0YXR1cwpLQ0NoYW5nZVNldHRpbmdzKEtDUmVmIGtleWNoYWluKSBfX2F0dHJpYnV0ZV9fKChk
ZXByZWNhdGVkKSk7CiMgMjA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvU2VjdXJpdHlISS5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkhJ
LmgiIDMKZXh0ZXJuIE9TU3RhdHVzCmtjdW5sb2NrKAogIEtDUmVmIGtleWNoYWluLAogIGNvbnN0
IGNoYXIgKiBwYXNzd29yZCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDIyMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlY3Vy
aXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5ISS5oIiAzCmV4dGVybiBPU1N0YXR1cwpr
Y2NyZWF0ZWtleWNoYWluKAogIGNvbnN0IGNoYXIgKiBwYXNzd29yZCwKICBLQ1JlZiAqIGtleWNo
YWluKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CiMgMjM4ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvU2VjdXJpdHlISS5mcmFtZXdv
cmsvSGVhZGVycy9LZXljaGFpbkhJLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCmtjYWRkYXBwbGVzaGFy
ZXBhc3N3b3JkKAogIEFGUFNlcnZlclNpZ25hdHVyZSAqIHNlcnZlclNpZ25hdHVyZSwKICBjb25z
dCBjaGFyICogc2VydmVyQWRkcmVzcywKICBjb25zdCBjaGFyICogc2VydmVyTmFtZSwKICBjb25z
dCBjaGFyICogdm9sdW1lTmFtZSwKICBjb25zdCBjaGFyICogYWNjb3VudE5hbWUsCiAgVUludDMy
IHBhc3N3b3JkTGVuZ3RoLAogIGNvbnN0IHZvaWQgKiBwYXNzd29yZERhdGEsCiAgS0NJdGVtUmVm
ICogaXRlbSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDI2MSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlY3VyaXR5SEkuZnJh
bWV3b3JrL0hlYWRlcnMvS2V5Y2hhaW5ISS5oIiAzCmV4dGVybiBPU1N0YXR1cwprY2FkZGludGVy
bmV0cGFzc3dvcmQoCiAgY29uc3QgY2hhciAqIHNlcnZlck5hbWUsCiAgY29uc3QgY2hhciAqIHNl
Y3VyaXR5RG9tYWluLAogIGNvbnN0IGNoYXIgKiBhY2NvdW50TmFtZSwKICBVSW50MTYgcG9ydCwK
ICBPU1R5cGUgcHJvdG9jb2wsCiAgT1NUeXBlIGF1dGhUeXBlLAogIFVJbnQzMiBwYXNzd29yZExl
bmd0aCwKICBjb25zdCB2b2lkICogcGFzc3dvcmREYXRhLAogIEtDSXRlbVJlZiAqIGl0ZW0pIF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAyODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1ld29yay9IZWFk
ZXJzL0tleWNoYWluSEkuaCIgMwpleHRlcm4gT1NTdGF0dXMKa2NhZGRpbnRlcm5ldHBhc3N3b3Jk
d2l0aHBhdGgoCiAgY29uc3QgY2hhciAqIHNlcnZlck5hbWUsCiAgY29uc3QgY2hhciAqIHNlY3Vy
aXR5RG9tYWluLAogIGNvbnN0IGNoYXIgKiBhY2NvdW50TmFtZSwKICBjb25zdCBjaGFyICogcGF0
aCwKICBVSW50MTYgcG9ydCwKICBPU1R5cGUgcHJvdG9jb2wsCiAgT1NUeXBlIGF1dGhUeXBlLAog
IFVJbnQzMiBwYXNzd29yZExlbmd0aCwKICBjb25zdCB2b2lkICogcGFzc3dvcmREYXRhLAogIEtD
SXRlbVJlZiAqIGl0ZW0pIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKIyAzMTAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0
eUhJLmZyYW1ld29yay9IZWFkZXJzL0tleWNoYWluSEkuaCIgMwpleHRlcm4gT1NTdGF0dXMKa2Nh
ZGRnZW5lcmljcGFzc3dvcmQoCiAgY29uc3QgY2hhciAqIHNlcnZpY2VOYW1lLAogIGNvbnN0IGNo
YXIgKiBhY2NvdW50TmFtZSwKICBVSW50MzIgcGFzc3dvcmRMZW5ndGgsCiAgY29uc3Qgdm9pZCAq
IHBhc3N3b3JkRGF0YSwKICBLQ0l0ZW1SZWYgKiBpdGVtKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNh
dGVkKSk7CiMgMzQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvU2VjdXJpdHlISS5mcmFtZXdvcmsvSGVhZGVycy9LZXljaGFpbkhJLmgiIDMK
fQojIDI2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvU2VjdXJpdHlISS5mcmFtZXdvcmsvSGVhZGVycy9TZWN1cml0eUhJLmgiIDIgMwoKCgoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9TZWN1cml0eUhJLmZyYW1ld29yay9IZWFkZXJzL1VSTEFjY2Vzcy5oIiAxIDMKIyAxNyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlY3Vy
aXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvVVJMQWNjZXNzLmgiIDMKI2RlZmluZSBfX1VSTEFDQ0VT
U19fIAojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvU2VjdXJpdHlISS5mcmFtZXdvcmsvSGVhZGVycy9VUkxBY2Nlc3MuaCIgMwpleHRl
cm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKCgp0eXBlZGVmIHN0cnVjdCBPcGFxdWVV
UkxSZWZlcmVuY2UqIFVSTFJlZmVyZW5jZTsKdHlwZWRlZiBVSW50MzIgVVJMT3BlbkZsYWdzOwpl
bnVtIHsKICBrVVJMUmVwbGFjZUV4aXN0aW5nRmxhZyA9IDEgPDwgMCwKICBrVVJMQmluSGV4Rmls
ZUZsYWcgPSAxIDw8IDEsCiAga1VSTEV4cGFuZEZpbGVGbGFnID0gMSA8PCAyLAogIGtVUkxEaXNw
bGF5UHJvZ3Jlc3NGbGFnID0gMSA8PCAzLAogIGtVUkxEaXNwbGF5QXV0aEZsYWcgPSAxIDw8IDQs
CiAga1VSTFVwbG9hZEZsYWcgPSAxIDw8IDUsCiAga1VSTElzRGlyZWN0b3J5SGludEZsYWcgPSAx
IDw8IDYsCiAga1VSTERvTm90VHJ5QW5vbnltb3VzRmxhZyA9IDEgPDwgNywKICBrVVJMRGlyZWN0
b3J5TGlzdGluZ0ZsYWcgPSAxIDw8IDgsCiAga1VSTEV4cGFuZEFuZFZlcmlmeUZsYWcgPSAxIDw8
IDksCiAga1VSTE5vQXV0b1JlZGlyZWN0RmxhZyA9IDEgPDwgMTAsCiAga1VSTERlYmluaGV4T25s
eUZsYWcgPSAxIDw8IDExLAogIGtVUkxEb05vdERlbGV0ZU9uRXJyb3JGbGFnID0gMSA8PCAxMiwK
CgogIGtVUkxSZXN1bWVEb3dubG9hZEZsYWcgPSAxIDw8IDEzLAoKCiAga1VSTFJlc2VydmVkRmxh
ZyA9ICh1bnNpZ25lZCBpbnQpKDEgPDwgMzEpCn07Cgp0eXBlZGVmIFVJbnQzMiBVUkxTdGF0ZTsK
ZW51bSB7CiAga1VSTE51bGxTdGF0ZSA9IDAsCiAga1VSTEluaXRpYXRpbmdTdGF0ZSA9IDEsCiAg
a1VSTExvb2tpbmdVcEhvc3RTdGF0ZSA9IDIsCiAga1VSTENvbm5lY3RpbmdTdGF0ZSA9IDMsCiAg
a1VSTFJlc291cmNlRm91bmRTdGF0ZSA9IDQsCiAga1VSTERvd25sb2FkaW5nU3RhdGUgPSA1LAog
IGtVUkxEYXRhQXZhaWxhYmxlU3RhdGUgPSAweDEwICsga1VSTERvd25sb2FkaW5nU3RhdGUsCiAg
a1VSTFRyYW5zYWN0aW9uQ29tcGxldGVTdGF0ZSA9IDYsCiAga1VSTEVycm9yT2NjdXJyZWRTdGF0
ZSA9IDcsCiAga1VSTEFib3J0aW5nU3RhdGUgPSA4LAogIGtVUkxDb21wbGV0ZWRTdGF0ZSA9IDks
CiAga1VSTFVwbG9hZGluZ1N0YXRlID0gMTAKfTsKCnR5cGVkZWYgVUludDMyIFVSTEV2ZW50Owpl
bnVtIHsKICBrVVJMSW5pdGlhdGVkRXZlbnQgPSBrVVJMSW5pdGlhdGluZ1N0YXRlLAogIGtVUkxS
ZXNvdXJjZUZvdW5kRXZlbnQgPSBrVVJMUmVzb3VyY2VGb3VuZFN0YXRlLAogIGtVUkxEb3dubG9h
ZGluZ0V2ZW50ID0ga1VSTERvd25sb2FkaW5nU3RhdGUsCiAga1VSTEFib3J0SW5pdGlhdGVkRXZl
bnQgPSBrVVJMQWJvcnRpbmdTdGF0ZSwKICBrVVJMQ29tcGxldGVkRXZlbnQgPSBrVVJMQ29tcGxl
dGVkU3RhdGUsCiAga1VSTEVycm9yT2NjdXJyZWRFdmVudCA9IGtVUkxFcnJvck9jY3VycmVkU3Rh
dGUsCiAga1VSTERhdGFBdmFpbGFibGVFdmVudCA9IGtVUkxEYXRhQXZhaWxhYmxlU3RhdGUsCiAg
a1VSTFRyYW5zYWN0aW9uQ29tcGxldGVFdmVudCA9IGtVUkxUcmFuc2FjdGlvbkNvbXBsZXRlU3Rh
dGUsCiAga1VSTFVwbG9hZGluZ0V2ZW50ID0ga1VSTFVwbG9hZGluZ1N0YXRlLAogIGtVUkxTeXN0
ZW1FdmVudCA9IDI5LAogIGtVUkxQZXJjZW50RXZlbnQgPSAzMCwKICBrVVJMUGVyaW9kaWNFdmVu
dCA9IDMxLAogIGtVUkxQcm9wZXJ0eUNoYW5nZWRFdmVudCA9IDMyCn07Cgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgVVJMRXZlbnRNYXNrOwplbnVtIHsKICBrVVJMSW5pdGlhdGVkRXZlbnRNYXNrID0g
MSA8PCAoa1VSTEluaXRpYXRlZEV2ZW50IC0gMSksCiAga1VSTFJlc291cmNlRm91bmRFdmVudE1h
c2sgPSAxIDw8IChrVVJMUmVzb3VyY2VGb3VuZEV2ZW50IC0gMSksCiAga1VSTERvd25sb2FkaW5n
TWFzayA9IDEgPDwgKGtVUkxEb3dubG9hZGluZ0V2ZW50IC0gMSksCiAga1VSTFVwbG9hZGluZ01h
c2sgPSAxIDw8IChrVVJMVXBsb2FkaW5nRXZlbnQgLSAxKSwKICBrVVJMQWJvcnRJbml0aWF0ZWRN
YXNrID0gMSA8PCAoa1VSTEFib3J0SW5pdGlhdGVkRXZlbnQgLSAxKSwKICBrVVJMQ29tcGxldGVk
RXZlbnRNYXNrID0gMSA8PCAoa1VSTENvbXBsZXRlZEV2ZW50IC0gMSksCiAga1VSTEVycm9yT2Nj
dXJyZWRFdmVudE1hc2sgPSAxIDw8IChrVVJMRXJyb3JPY2N1cnJlZEV2ZW50IC0gMSksCiAga1VS
TERhdGFBdmFpbGFibGVFdmVudE1hc2sgPSAxIDw8IChrVVJMRGF0YUF2YWlsYWJsZUV2ZW50IC0g
MSksCiAga1VSTFRyYW5zYWN0aW9uQ29tcGxldGVFdmVudE1hc2sgPSAxIDw8IChrVVJMVHJhbnNh
Y3Rpb25Db21wbGV0ZUV2ZW50IC0gMSksCiAga1VSTFN5c3RlbUV2ZW50TWFzayA9IDEgPDwgKGtV
UkxTeXN0ZW1FdmVudCAtIDEpLAogIGtVUkxQZXJjZW50RXZlbnRNYXNrID0gMSA8PCAoa1VSTFBl
cmNlbnRFdmVudCAtIDEpLAogIGtVUkxQZXJpb2RpY0V2ZW50TWFzayA9IDEgPDwgKGtVUkxQZXJp
b2RpY0V2ZW50IC0gMSksCiAga1VSTFByb3BlcnR5Q2hhbmdlZEV2ZW50TWFzayA9IDEgPDwgKGtV
UkxQcm9wZXJ0eUNoYW5nZWRFdmVudCAtIDEpLAogIGtVUkxBbGxCdWZmZXJFdmVudHNNYXNrID0g
a1VSTERhdGFBdmFpbGFibGVFdmVudE1hc2sgKyBrVVJMVHJhbnNhY3Rpb25Db21wbGV0ZUV2ZW50
TWFzaywKICBrVVJMQWxsTm9uQnVmZmVyRXZlbnRzTWFzayA9IGtVUkxJbml0aWF0ZWRFdmVudE1h
c2sgKyBrVVJMRG93bmxvYWRpbmdNYXNrICsga1VSTFVwbG9hZGluZ01hc2sgKyBrVVJMQWJvcnRJ
bml0aWF0ZWRNYXNrICsga1VSTENvbXBsZXRlZEV2ZW50TWFzayArIGtVUkxFcnJvck9jY3VycmVk
RXZlbnRNYXNrICsga1VSTFBlcmNlbnRFdmVudE1hc2sgKyBrVVJMUGVyaW9kaWNFdmVudE1hc2sg
KyBrVVJMUHJvcGVydHlDaGFuZ2VkRXZlbnRNYXNrLAogIGtVUkxBbGxFdmVudHNNYXNrID0gKGlu
dCkweEZGRkZGRkZGCn07CgoKc3RydWN0IFVSTENhbGxiYWNrSW5mbyB7CiAgVUludDMyIHZlcnNp
b247CiAgVVJMUmVmZXJlbmNlIHVybFJlZjsKICBjb25zdCBjaGFyICogcHJvcGVydHk7CiAgVUlu
dDMyIGN1cnJlbnRTaXplOwogIEV2ZW50UmVjb3JkICogc3lzdGVtRXZlbnQ7Cn07CnR5cGVkZWYg
c3RydWN0IFVSTENhbGxiYWNrSW5mbyBVUkxDYWxsYmFja0luZm87CgoKZW51bSB7CiAga1VzZXJO
YW1lQW5kUGFzc3dvcmRGbGFnID0gMHgwMDAwMDAwMQp9OwoKI2RlZmluZSBrVVJMVVJMICJVUkxT
dHJpbmciCiNkZWZpbmUga1VSTFJlc291cmNlU2l6ZSAiVVJMUmVzb3VyY2VTaXplIgojZGVmaW5l
IGtVUkxMYXN0TW9kaWZpZWRUaW1lICJVUkxMYXN0TW9kaWZpZWRUaW1lIgojZGVmaW5lIGtVUkxN
SU1FVHlwZSAiVVJMTUlNRVR5cGUiCiNkZWZpbmUga1VSTEZpbGVUeXBlICJVUkxGaWxlVHlwZSIK
I2RlZmluZSBrVVJMRmlsZUNyZWF0b3IgIlVSTEZpbGVDcmVhdG9yIgojZGVmaW5lIGtVUkxDaGFy
YWN0ZXJTZXQgIlVSTENoYXJhY3RlclNldCIKI2RlZmluZSBrVVJMUmVzb3VyY2VOYW1lICJVUkxS
ZXNvdXJjZU5hbWUiCiNkZWZpbmUga1VSTEhvc3QgIlVSTEhvc3QiCiNkZWZpbmUga1VSTEF1dGhU
eXBlICJVUkxBdXRoVHlwZSIKI2RlZmluZSBrVVJMVXNlck5hbWUgIlVSTFVzZXJOYW1lIgojZGVm
aW5lIGtVUkxQYXNzd29yZCAiVVJMUGFzc3dvcmQiCiNkZWZpbmUga1VSTFN0YXR1c1N0cmluZyAi
VVJMU3RhdHVzU3RyaW5nIgojZGVmaW5lIGtVUkxJc1NlY3VyZSAiVVJMSXNTZWN1cmUiCiNkZWZp
bmUga1VSTENlcnRpZmljYXRlICJVUkxDZXJ0aWZpY2F0ZSIKI2RlZmluZSBrVVJMVG90YWxJdGVt
cyAiVVJMVG90YWxJdGVtcyIKI2RlZmluZSBrVVJMQ29ubmVjdFRpbWVvdXQgIlVSTENvbm5lY3RU
aW1lb3V0IgoKI2RlZmluZSBrVVJMSFRUUFJlcXVlc3RNZXRob2QgIlVSTEhUVFBSZXF1ZXN0TWV0
aG9kIgojZGVmaW5lIGtVUkxIVFRQUmVxdWVzdEhlYWRlciAiVVJMSFRUUFJlcXVlc3RIZWFkZXIi
CiNkZWZpbmUga1VSTEhUVFBSZXF1ZXN0Qm9keSAiVVJMSFRUUFJlcXVlc3RCb2R5IgojZGVmaW5l
IGtVUkxIVFRQUmVzcEhlYWRlciAiVVJMSFRUUFJlc3BIZWFkZXIiCiNkZWZpbmUga1VSTEhUVFBV
c2VyQWdlbnQgIlVSTEhUVFBVc2VyQWdlbnQiCiNkZWZpbmUga1VSTEhUVFBSZWRpcmVjdGVkVVJM
ICJVUkxIVFRQUmVkaXJlY3RlZFVSTCIKI2RlZmluZSBrVVJMU1NMQ2lwaGVyU3VpdGUgIlVSTFNT
TENpcGhlclN1aXRlIgojIDE5NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL1NlY3VyaXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvVVJMQWNjZXNz
LmgiIDMKdHlwZWRlZiBPU1N0YXR1cyAoICogVVJMTm90aWZ5UHJvY1B0cikodm9pZCAqdXNlckNv
bnRleHQsIFVSTEV2ZW50IGV2ZW50LCBVUkxDYWxsYmFja0luZm8gKmNhbGxiYWNrSW5mbyk7CnR5
cGVkZWYgT1NTdGF0dXMgKCAqIFVSTFN5c3RlbUV2ZW50UHJvY1B0cikodm9pZCAqdXNlckNvbnRl
eHQsIEV2ZW50UmVjb3JkICpldmVudCk7CnR5cGVkZWYgVVJMTm90aWZ5UHJvY1B0ciBVUkxOb3Rp
ZnlVUFA7CnR5cGVkZWYgVVJMU3lzdGVtRXZlbnRQcm9jUHRyIFVSTFN5c3RlbUV2ZW50VVBQOwoj
IDIwNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL1NlY3VyaXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvVVJMQWNjZXNzLmgiIDMKZXh0ZXJuIFVS
TE5vdGlmeVVQUApOZXdVUkxOb3RpZnlVUFAoVVJMTm90aWZ5UHJvY1B0ciB1c2VyUm91dGluZSkg
X19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDIxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlY3VyaXR5SEkuZnJhbWV3b3JrL0hl
YWRlcnMvVVJMQWNjZXNzLmgiIDMKZXh0ZXJuIFVSTFN5c3RlbUV2ZW50VVBQCk5ld1VSTFN5c3Rl
bUV2ZW50VVBQKFVSTFN5c3RlbUV2ZW50UHJvY1B0ciB1c2VyUm91dGluZSkgX19hdHRyaWJ1dGVf
XygoZGVwcmVjYXRlZCkpOwojIDIyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL1NlY3VyaXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvVVJMQWNj
ZXNzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVVSTE5vdGlmeVVQUChVUkxOb3RpZnlVUFAgdXNl
clVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDI0MCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlY3VyaXR5SEkuZnJhbWV3
b3JrL0hlYWRlcnMvVVJMQWNjZXNzLmgiIDMKZXh0ZXJuIHZvaWQKRGlzcG9zZVVSTFN5c3RlbUV2
ZW50VVBQKFVSTFN5c3RlbUV2ZW50VVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0
ZWQpKTsKIyAyNTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1ld29yay9IZWFkZXJzL1VSTEFjY2Vzcy5oIiAzCmV4
dGVybiBPU1N0YXR1cwpJbnZva2VVUkxOb3RpZnlVUFAoCiAgdm9pZCAqIHVzZXJDb250ZXh0LAog
IFVSTEV2ZW50IGV2ZW50LAogIFVSTENhbGxiYWNrSW5mbyAqIGNhbGxiYWNrSW5mbywKICBVUkxO
b3RpZnlVUFAgdXNlclVQUCkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkpOwojIDI2NiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlY3Vy
aXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvVVJMQWNjZXNzLmgiIDMKZXh0ZXJuIE9TU3RhdHVzCklu
dm9rZVVSTFN5c3RlbUV2ZW50VVBQKAogIHZvaWQgKiB1c2VyQ29udGV4dCwKICBFdmVudFJlY29y
ZCAqIGV2ZW50LAogIFVSTFN5c3RlbUV2ZW50VVBQIHVzZXJVUFApIF9fYXR0cmlidXRlX18oKGRl
cHJlY2F0ZWQpKTsKCgoKICAgIGlubGluZSBVUkxOb3RpZnlVUFAgTmV3VVJMTm90aWZ5VVBQKFVS
TE5vdGlmeVByb2NQdHIgdXNlclJvdXRpbmUpIHsgcmV0dXJuIHVzZXJSb3V0aW5lOyB9CiAgICBp
bmxpbmUgVVJMU3lzdGVtRXZlbnRVUFAgTmV3VVJMU3lzdGVtRXZlbnRVUFAoVVJMU3lzdGVtRXZl
bnRQcm9jUHRyIHVzZXJSb3V0aW5lKSB7IHJldHVybiB1c2VyUm91dGluZTsgfQogICAgaW5saW5l
IHZvaWQgRGlzcG9zZVVSTE5vdGlmeVVQUChVUkxOb3RpZnlVUFApIHsgfQogICAgaW5saW5lIHZv
aWQgRGlzcG9zZVVSTFN5c3RlbUV2ZW50VVBQKFVSTFN5c3RlbUV2ZW50VVBQKSB7IH0KICAgIGlu
bGluZSBPU1N0YXR1cyBJbnZva2VVUkxOb3RpZnlVUFAodm9pZCAqIHVzZXJDb250ZXh0LCBVUkxF
dmVudCBldmVudCwgVVJMQ2FsbGJhY2tJbmZvICogY2FsbGJhY2tJbmZvLCBVUkxOb3RpZnlVUFAg
dXNlclVQUCkgeyByZXR1cm4gKCp1c2VyVVBQKSh1c2VyQ29udGV4dCwgZXZlbnQsIGNhbGxiYWNr
SW5mbyk7IH0KICAgIGlubGluZSBPU1N0YXR1cyBJbnZva2VVUkxTeXN0ZW1FdmVudFVQUCh2b2lk
ICogdXNlckNvbnRleHQsIEV2ZW50UmVjb3JkICogZXZlbnQsIFVSTFN5c3RlbUV2ZW50VVBQIHVz
ZXJVUFApIHsgcmV0dXJuICgqdXNlclVQUCkodXNlckNvbnRleHQsIGV2ZW50KTsgfQojIDU2NSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1Nl
Y3VyaXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvVVJMQWNjZXNzLmgiIDMKI3ByYWdtYSBwYWNrKHBv
cCkKCgp9CiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1ld29yay9IZWFkZXJzL1NlY3VyaXR5SEkuaCIgMiAz
CgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL1NlY3VyaXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjQ2VydGlmaWNhdGVTdXBwb3J0
LmgiIDEgMwojIDM2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvU2VjdXJpdHlISS5mcmFtZXdvcmsvSGVhZGVycy9TZWNDZXJ0aWZpY2F0ZVN1
cHBvcnQuaCIgMwojZGVmaW5lIF9fU0VDQ0VSVElGSUNBVEVTVVBQT1JUX18gMQoKIyAxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSElUb29s
Ym94LmZyYW1ld29yay9IZWFkZXJzL01hY1dpbmRvd3MuaCIgMSAzCiMgMzkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZy
YW1ld29yay9IZWFkZXJzL1NlY0NlcnRpZmljYXRlU3VwcG9ydC5oIiAyIDMKCgoKCgpleHRlcm4g
IkMiIHsKCgoKCgoKCmVudW0gewogIHR5cGVTZWNJZGVudGl0eVJlZiA9ICdzaWR5Jwp9OwojIDY0
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mv
U2VjdXJpdHlISS5mcmFtZXdvcmsvSGVhZGVycy9TZWNDZXJ0aWZpY2F0ZVN1cHBvcnQuaCIgMwpP
U1N0YXR1cyBTZWNDaG9vc2VJZGVudGl0eShDRlN0cmluZ1JlZiBkaXNwbGF5SW5mbywgQ0ZBcnJh
eVJlZiBpZGVudGl0aWVzLCBTZWNJZGVudGl0eVJlZiAqaWRlbnRpdHlSZWYpIDsKIyA3NSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlY3Vy
aXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjQ2VydGlmaWNhdGVTdXBwb3J0LmgiIDMKT1NTdGF0
dXMgU2VjQ2hvb3NlSWRlbnRpdHlBc1NoZWV0KFdpbmRvd1JlZiBwYXJlbnRXaW5kb3csIEV2ZW50
VGFyZ2V0UmVmIGluVGFyZ2V0LCBDRlN0cmluZ1JlZiBkaXNwbGF5SW5mbywgQ0ZBcnJheVJlZiBp
ZGVudGl0aWVzKSA7CiMgODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1ld29yay9IZWFkZXJzL1NlY0NlcnRpZmlj
YXRlU3VwcG9ydC5oIiAzCk9TU3RhdHVzIFNlY0Rpc3BsYXlDZXJ0aWZpY2F0ZShTZWNDZXJ0aWZp
Y2F0ZVJlZiBjZXJ0aWZpY2F0ZSwgQ0ZBcnJheVJlZiBrZXljaGFpbkxpc3QpIDsKIyA5MyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL1NlY3Vy
aXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjQ2VydGlmaWNhdGVTdXBwb3J0LmgiIDMKT1NTdGF0
dXMgU2VjRGlzcGxheUNlcnRpZmljYXRlR3JvdXAoY29uc3QgQ1NTTV9DRVJUR1JPVVAgKmNlcnRp
ZmljYXRlcywgQ0ZBcnJheVJlZiBrZXljaGFpbkxpc3QpIDsKIyAxMDMgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1l
d29yay9IZWFkZXJzL1NlY0NlcnRpZmljYXRlU3VwcG9ydC5oIiAzCk9TU3RhdHVzIFNlY0VkaXRU
cnVzdChDRlN0cmluZ1JlZiBkaXNwbGF5SW5mbywgU2VjVHJ1c3RSZWYgdHJ1c3QpIDsKIyAxMTQg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9T
ZWN1cml0eUhJLmZyYW1ld29yay9IZWFkZXJzL1NlY0NlcnRpZmljYXRlU3VwcG9ydC5oIiAzCk9T
U3RhdHVzIFNlY0VkaXRUcnVzdEFzU2hlZXQoV2luZG93UmVmIHBhcmVudFdpbmRvdywgRXZlbnRU
YXJnZXRSZWYgaW5UYXJnZXQsIENGU3RyaW5nUmVmIGRpc3BsYXlJbmZvLCBTZWNUcnVzdFJlZiB0
cnVzdCkgOwoKCn0KIyAzNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL1NlY3VyaXR5SEkuZnJhbWV3b3JrL0hlYWRlcnMvU2VjdXJpdHlISS5o
IiAyIDMKIyA3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9I
ZWFkZXJzL0NhcmJvbi5oIiAyIDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW5rLmZyYW1ld29yay9IZWFkZXJzL0luay5oIiAx
IDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0luay5mcmFtZXdvcmsvSGVhZGVycy9JbmsuaCIgMwojZGVmaW5lIF9fSU5LX18gCiMg
MzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKZXh0ZXJuICJDIiB7CgoKI3ByYWdtYSBw
YWNrKHB1c2gsIDIpCiMgMjAwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0ZyYW1ld29ya3MvSW5rLmZyYW1ld29yay9IZWFkZXJzL0luay5oIiAzCnR5cGVkZWYg
c3RydWN0IE9wYXF1ZUlua1RleHRSZWYqIElua1RleHRSZWY7CiMgMjIyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW5rLmZyYW1ld29yay9I
ZWFkZXJzL0luay5oIiAzCnR5cGVkZWYgc3RydWN0IE9wYXF1ZUlua1N0cm9rZVJlZiogSW5rU3Ry
b2tlUmVmOwojIDIzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0luay5mcmFtZXdvcmsvSGVhZGVycy9JbmsuaCIgMwpzdHJ1Y3QgSW5rUG9p
bnQgewoKCgoKCiAgSElQb2ludCBwb2ludDsKCgoKCgogIFRhYmxldFBvaW50UmVjIHRhYmxldFBv
aW50RGF0YTsKCgoKCgogIFVJbnQzMiBrZXlNb2RpZmllcnM7Cn07CnR5cGVkZWYgc3RydWN0IElu
a1BvaW50IElua1BvaW50Owp0eXBlZGVmIElua1BvaW50ICogSW5rUG9pbnRQdHI7CiMgMjYyICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW5r
LmZyYW1ld29yay9IZWFkZXJzL0luay5oIiAzCnR5cGVkZWYgQ0ZJbmRleCBJbmtBbHRlcm5hdGVD
b3VudDsKIyAyNzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKdHlwZWRlZiBGb3VyQ2hh
ckNvZGUgSW5rVXNlcldyaXRpbmdNb2RlVHlwZTsKZW51bSB7CiAga0lua1dyaXRlTm93aGVyZSA9
ICdub3doJywKICBrSW5rV3JpdGVBbnl3aGVyZSA9ICdhbnl3JywKICBrSW5rV3JpdGVJbklua0F3
YXJlQXBwc09ubHkgPSAnaWFwcCcKfTsKIyAyODkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgi
IDMKdHlwZWRlZiBGb3VyQ2hhckNvZGUgSW5rQXBwbGljYXRpb25Xcml0aW5nTW9kZVR5cGU7CmVu
dW0gewogIGtJbmtXcml0ZU5vd2hlcmVJbkFwcCA9ICdub3dhJywKICBrSW5rV3JpdGVBbnl3aGVy
ZUluQXBwID0gJ2FueWEnCn07CiMgMzAzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW5rLmZyYW1ld29yay9IZWFkZXJzL0luay5oIiAzCnR5
cGVkZWYgVUludDMyIElua0RyYXdpbmdNb2RlVHlwZTsKZW51bSB7CiAga0lua0RyYXdOb3RoaW5n
ID0gMCwKICBrSW5rRHJhd0lua09ubHkgPSAxLAogIGtJbmtEcmF3SW5rQW5kV3JpdGluZ0d1aWRl
cyA9IDIKfTsKIyAzMTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKdHlwZWRlZiBVSW50
MzIgSW5rVGV4dERyYXdGbGFnc1R5cGU7CmVudW0gewoKCgoKCgogIGtJbmtUZXh0RHJhd0RlZmF1
bHQgPSAwLAoKCgoKICBrSW5rVGV4dERyYXdJZ25vcmVQcmVzc3VyZSA9IDEsCgoKCgoKICBrSW5r
VGV4dERyYXdIb25vckNvbnRleHQgPSAxIDw8IDEKfTsKIyAzNjEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRl
cnMvSW5rLmgiIDMKdHlwZWRlZiBVSW50MzIgSW5rVGVybWluYXRpb25UeXBlOwplbnVtIHsKCgoK
CiAga0lua1Rlcm1pbmF0aW9uTm9uZSA9IDAsCgoKCgoKCiAga0lua1Rlcm1pbmF0aW9uVGltZU91
dCA9IDEsCiMgMzg3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSW5rLmZyYW1ld29yay9IZWFkZXJzL0luay5oIiAzCiAga0lua1Rlcm1pbmF0
aW9uT3V0T2ZQcm94aW1pdHkgPSAxIDw8IDEsCiAga0lua1Rlcm1pbmF0aW9uUmVjb2duaXplckhv
cml6b250YWxCcmVhayA9IDEgPDwgMiwKICBrSW5rVGVybWluYXRpb25SZWNvZ25pemVyVmVydGlj
YWxCcmVhayA9IDEgPDwgMywKCgoKCgoKICBrSW5rVGVybWluYXRpb25TdHJva2UgPSAxIDw8IDQs
CgoKCgoKICBrSW5rVGVybWluYXRpb25EZWZhdWx0ID0gMHgwRiwKIyA0MTEgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3Jr
L0hlYWRlcnMvSW5rLmgiIDMKICBrSW5rVGVybWluYXRpb25BbGwgPSAoVUludDMyKTB4RkZGRkZG
RkYKfTsKIyA0MjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKdHlwZWRlZiBVSW50MzIg
SW5rU291cmNlVHlwZTsKZW51bSB7CgoKCgogIGtJbmtTb3VyY2VVc2VyID0gMSwKCgoKCiAga0lu
a1NvdXJjZUFwcGxpY2F0aW9uID0gMgp9OwojIDQ1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0luay5mcmFtZXdvcmsvSGVhZGVycy9Jbmsu
aCIgMwp0eXBlZGVmIFVJbnQzMiBJbmtSZWNvZ25pdGlvblR5cGU7CmVudW0gewogIGtJbmtSZWNv
Z25pdGlvbk5vbmUgPSAwLAogIGtJbmtSZWNvZ25pdGlvblRleHQgPSAxLAogIGtJbmtSZWNvZ25p
dGlvbkdlc3R1cmUgPSAxIDw8IDEsCiAga0lua1JlY29nbml0aW9uRGVmYXVsdCA9IDMKfTsKIyA1
NDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKdHlwZWRlZiBGb3VyQ2hhckNvZGUgSW5r
R2VzdHVyZUtpbmQ7CmVudW0gewoKCgoKICBrSW5rR2VzdHVyZVVuZG8gPSAndW5kbycsCiAga0lu
a0dlc3R1cmVDdXQgPSAnY3V0ICcsCiAga0lua0dlc3R1cmVDb3B5ID0gJ2NvcHknLAogIGtJbmtH
ZXN0dXJlUGFzdGUgPSAncGFzdCcsCiAga0lua0dlc3R1cmVDbGVhciA9ICdjbGVhJywKICBrSW5r
R2VzdHVyZVNlbGVjdEFsbCA9ICdzYWxsJywKCgoKCgoKICBrSW5rR2VzdHVyZUVzY2FwZSA9ICdu
b3QhJywKICBrSW5rR2VzdHVyZVRhYiA9ICd0YWIgJywKCgoKCgoKCiAga0lua0dlc3R1cmVMZWZ0
U3BhY2UgPSAnbHNwYycsCiAga0lua0dlc3R1cmVSaWdodFNwYWNlID0gJ3JzcGMnLAojIDU4NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0lu
ay5mcmFtZXdvcmsvSGVhZGVycy9JbmsuaCIgMwogIGtJbmtHZXN0dXJlTGVmdFJldHVybiA9ICds
cnRuJywKICBrSW5rR2VzdHVyZVJpZ2h0UmV0dXJuID0gJ3JydG4nLAojIDU5OSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0luay5mcmFtZXdv
cmsvSGVhZGVycy9JbmsuaCIgMwogIGtJbmtHZXN0dXJlRGVsZXRlID0gJ2RlbCAnLAojIDYyMyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0lu
ay5mcmFtZXdvcmsvSGVhZGVycy9JbmsuaCIgMwogIGtJbmtHZXN0dXJlSm9pbiA9ICdqb2luJwp9
OwoKCgoKCmVudW0gewoKCgoKCiAga0lua0FsdGVybmF0ZUNvbW1hbmQgPSAnaW5rYScsCgoKCgoK
ICBrSW5rU2VwYXJhdG9yQ29tbWFuZCA9ICdpbmtzJywKCgoKCgogIGtJbmtEcmF3aW5nQ29tbWFu
ZCA9ICdpbmtkJwp9OwojIDY3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9GcmFtZXdvcmtzL0luay5mcmFtZXdvcmsvSGVhZGVycy9JbmsuaCIgMwplbnVtIHsK
CgoKCiAga0lua1RhYmxldFBvaW50ZXJVbmtub3duID0gMCArIDAsCgoKCgogIGtJbmtUYWJsZXRQ
b2ludGVyUGVuID0gMSArIDAsCgoKCgogIGtJbmtUYWJsZXRQb2ludGVyQ3Vyc29yID0gMiArIDAs
CgoKCgogIGtJbmtUYWJsZXRQb2ludGVyRXJhc2VyID0gMyArIDAKfTsKIyA3MTQgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3
b3JrL0hlYWRlcnMvSW5rLmgiIDMKZW51bSB7CgoKCgogIGtJbmtQZW5UaXBCdXR0b25NYXNrID0g
MHgwMDAxICsgMCwKCgoKCiAga0lua1Blbkxvd2VyU2lkZUJ1dHRvbk1hc2sgPSAweDAwMDIgKyAw
LAoKCgoKICBrSW5rUGVuVXBwZXJTaWRlQnV0dG9uTWFzayA9IDB4MDAwNCArIDAKfTsKIyA3NzUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9J
bmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKZXh0ZXJuIElua1VzZXJXcml0aW5nTW9kZVR5
cGUKSW5rVXNlcldyaXRpbmdNb2RlKHZvaWQpIDsKIyA4MDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMv
SW5rLmgiIDMKZXh0ZXJuIHZvaWQKSW5rU2V0QXBwbGljYXRpb25Xcml0aW5nTW9kZShJbmtBcHBs
aWNhdGlvbldyaXRpbmdNb2RlVHlwZSBpV3JpdGVXaGVyZSkgOwojIDgzNiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0luay5mcmFtZXdvcmsv
SGVhZGVycy9JbmsuaCIgMwpleHRlcm4gdm9pZApJbmtTZXRBcHBsaWNhdGlvblJlY29nbml0aW9u
TW9kZShJbmtSZWNvZ25pdGlvblR5cGUgaVJlY29nbml0aW9uVHlwZSkgOwojIDg5OCAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0luay5mcmFt
ZXdvcmsvSGVhZGVycy9JbmsuaCIgMwpleHRlcm4gdm9pZApJbmtTZXRQaHJhc2VUZXJtaW5hdGlv
bk1vZGUoCiAgSW5rU291cmNlVHlwZSBpU291cmNlLAogIElua1Rlcm1pbmF0aW9uVHlwZSBpQWxs
b3dlZFRlcm1pbmF0aW9uVHlwZXMpIDsKIyA5MzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgi
IDMKZXh0ZXJuIEJvb2xlYW4KSW5rSXNQaHJhc2VJblByb2dyZXNzKHZvaWQpIDsKCgoKI2RlZmlu
ZSBJbmtJc0lua2luZyBJbmtJc1BocmFzZUluUHJvZ3Jlc3MKIyA5NjkgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hl
YWRlcnMvSW5rLmgiIDMKZXh0ZXJuIHZvaWQKSW5rU2V0RHJhd2luZ01vZGUoSW5rRHJhd2luZ01v
ZGVUeXBlIGlEcmF3aW5nTW9kZSkgOwojIDEwMTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgi
IDMKZXh0ZXJuIHZvaWQKSW5rQWRkU3Ryb2tlVG9DdXJyZW50UGhyYXNlKAogIHVuc2lnbmVkIGxv
bmcgaVBvaW50Q291bnQsCiAgSW5rUG9pbnQgKiBpUG9pbnRBcnJheSkgOwojIDEwNDkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJh
bWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKZXh0ZXJuIHZvaWQKSW5rVGVybWluYXRlQ3VycmVudFBo
cmFzZShJbmtTb3VyY2VUeXBlIGlTb3VyY2UpIDsKIyAxMDc3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW5rLmZyYW1ld29yay9IZWFkZXJz
L0luay5oIiAzCmV4dGVybiBDRkluZGV4Cklua1RleHRBbHRlcm5hdGVzQ291bnQoSW5rVGV4dFJl
ZiBpVGV4dFJlZikgOwojIDExMDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKZXh0ZXJu
IENGU3RyaW5nUmVmCklua1RleHRDcmVhdGVDRlN0cmluZygKICBJbmtUZXh0UmVmIGlUZXh0UmVm
LAogIENGSW5kZXggaUFsdGVybmF0ZUluZGV4KSA7CiMgMTIzOCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0luay5mcmFtZXdvcmsvSGVhZGVy
cy9JbmsuaCIgMwpleHRlcm4gVUludDMyCklua1RleHRLZXlNb2RpZmllcnMoSW5rVGV4dFJlZiBp
VGV4dFJlZikgOwojIDEyNjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKZXh0ZXJuIElu
a1RleHRSZWYKSW5rVGV4dENvcHkoSW5rVGV4dFJlZiBpVGV4dFJlZikgOwojIDEyOTUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJh
bWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKZXh0ZXJuIEhJUmVjdApJbmtUZXh0Qm91bmRzKElua1Rl
eHRSZWYgaVRleHRSZWYpIDsKIyAxMzM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW5rLmZyYW1ld29yay9IZWFkZXJzL0luay5oIiAzCmV4
dGVybiB2b2lkCklua1RleHREcmF3KAogIElua1RleHRSZWYgaVRleHRSZWYsCiAgQ0dDb250ZXh0
UmVmIGlDb250ZXh0LAogIGNvbnN0IENHUmVjdCAqIGlCb3VuZHMsCiAgSW5rVGV4dERyYXdGbGFn
c1R5cGUgaUZsYWdzKSA7CiMgMTM4MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0luay5mcmFtZXdvcmsvSGVhZGVycy9JbmsuaCIgMwpleHRl
cm4gQ0ZJbmRleApJbmtUZXh0RmxhdHRlbigKICBJbmtUZXh0UmVmIGlUZXh0UmVmLAogIENGTXV0
YWJsZURhdGFSZWYgaW9EYXRhUmVmLAogIENGSW5kZXggaUluZGV4KSA7CiMgMTQxOSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0luay5mcmFt
ZXdvcmsvSGVhZGVycy9JbmsuaCIgMwpleHRlcm4gSW5rVGV4dFJlZgpJbmtUZXh0Q3JlYXRlRnJv
bUNGRGF0YSgKICBDRkRhdGFSZWYgaUZsYXR0ZW5lZElua1RleHQsCiAgQ0ZJbmRleCBpSW5kZXgp
IDsKIyAxNDQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSW5rLmZyYW1ld29yay9IZWFkZXJzL0luay5oIiAzCmV4dGVybiBDRlR5cGVJRApJ
bmtUZXh0R2V0VHlwZUlEKHZvaWQpIDsKIyAxNDc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW5rLmZyYW1ld29yay9IZWFkZXJzL0luay5o
IiAzCmV4dGVybiBDRkluZGV4Cklua1RleHRHZXRTdHJva2VDb3VudChJbmtUZXh0UmVmIGlUZXh0
UmVmKSA7CiMgMTUyMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29y
ay9GcmFtZXdvcmtzL0luay5mcmFtZXdvcmsvSGVhZGVycy9JbmsuaCIgMwpleHRlcm4gSW5rU3Ry
b2tlUmVmCklua1RleHRHZXRTdHJva2UoCiAgSW5rVGV4dFJlZiBpVGV4dFJlZiwKICBDRkluZGV4
IGlTdHJva2VJbmRleCkgOwojIDE1NTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKZXh0
ZXJuIENGSW5kZXgKSW5rU3Ryb2tlR2V0UG9pbnRDb3VudChJbmtTdHJva2VSZWYgaVN0cm9rZVJl
ZikgOwojIDE1OTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL0hlYWRlcnMvSW5rLmgiIDMKZXh0ZXJuIElua1BvaW50
ICoKSW5rU3Ryb2tlR2V0UG9pbnRzKAogIElua1N0cm9rZVJlZiBpU3Ryb2tlUmVmLAogIElua1Bv
aW50ICogb1BvaW50QnVmZmVyKSA7CiMgMTYxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0luay5mcmFtZXdvcmsvSGVhZGVycy9JbmsuaCIg
MwpleHRlcm4gQ0ZUeXBlSUQKSW5rU3Ryb2tlR2V0VHlwZUlEKHZvaWQpIDsKCgoKCiNwcmFnbWEg
cGFjayhwb3ApCgoKfQojIDc1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL0hlYWRlcnMvQ2FyYm9uLmgiIDIgMwoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9IZWxwLmZyYW1ld29yay9IZWFkZXJz
L0hlbHAuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9IZWxwLmZyYW1ld29yay9IZWFkZXJzL0hlbHAuaCIgMwojZGVmaW5l
IF9fSEVMUF9fIAoKCgoKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSGVscC5mcmFtZXdvcmsvSGVhZGVycy9BcHBsZUhlbHAuaCIg
MSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9IZWxwLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlSGVscC5oIiAzCiNkZWZpbmUgX19B
UFBMRUhFTFBfXyAKIyAzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0hlbHAuZnJhbWV3b3JrL0hlYWRlcnMvQXBwbGVIZWxwLmgiIDMKZXh0
ZXJuICJDIiB7CgoKCmVudW0gewogIGtBSEludGVybmFsRXJyID0gLTEwNzkwLAogIGtBSEludGVy
bmV0Q29uZmlnUHJlZkVyciA9IC0xMDc5MQp9OwoKCnR5cGVkZWYgU0ludDE2IEFIVE9DVHlwZTsK
ZW51bSB7CiAga0FIVE9DVHlwZVVzZXIgPSAwLAogIGtBSFRPQ1R5cGVEZXZlbG9wZXIgPSAxCn07
CiMgNzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9IZWxwLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlSGVscC5oIiAzCmV4dGVybiBPU1N0YXR1
cwpBSFNlYXJjaCgKICBDRlN0cmluZ1JlZiBib29rbmFtZSwKICBDRlN0cmluZ1JlZiBxdWVyeSkg
OwojIDEwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0hlbHAuZnJhbWV3b3JrL0hlYWRlcnMvQXBwbGVIZWxwLmgiIDMKZXh0ZXJuIE9TU3Rh
dHVzCkFIR290b01haW5UT0MoQUhUT0NUeXBlIHRvY3R5cGUpIF9fYXR0cmlidXRlX18oKGRlcHJl
Y2F0ZWQpKTsKIyAxNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdv
cmsvRnJhbWV3b3Jrcy9IZWxwLmZyYW1ld29yay9IZWFkZXJzL0FwcGxlSGVscC5oIiAzCmV4dGVy
biBPU1N0YXR1cwpBSEdvdG9QYWdlKAogIENGU3RyaW5nUmVmIGJvb2tuYW1lLAogIENGU3RyaW5n
UmVmIHBhdGgsCiAgQ0ZTdHJpbmdSZWYgYW5jaG9yKSA7CiMgMTgwICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSGVscC5mcmFtZXdvcmsvSGVh
ZGVycy9BcHBsZUhlbHAuaCIgMwpleHRlcm4gT1NTdGF0dXMKQUhMb29rdXBBbmNob3IoCiAgQ0ZT
dHJpbmdSZWYgYm9va25hbWUsCiAgQ0ZTdHJpbmdSZWYgYW5jaG9yKSA7CiMgMjE0ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSGVscC5mcmFt
ZXdvcmsvSGVhZGVycy9BcHBsZUhlbHAuaCIgMwpleHRlcm4gT1NTdGF0dXMKQUhSZWdpc3Rlckhl
bHBCb29rKGNvbnN0IEZTUmVmICogYXBwQnVuZGxlUmVmKSA7CgoKZXh0ZXJuIE9TU3RhdHVzCkFI
UmVnaXN0ZXJIZWxwQm9va1dpdGhVUkwoY29uc3QgQ0ZVUkxSZWYgYXBwbGljYXRpb25VUkwpIDsK
CgoKCn0KIyAyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0hlbHAuZnJhbWV3b3JrL0hlYWRlcnMvSGVscC5oIiAyIDMKIyA3OSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9IZWFkZXJzL0NhcmJvbi5oIiAy
IDMKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0Zy
YW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0ltYWdlQ2FwdHVyZS5oIiAx
IDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFt
ZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JbWFnZUNhcHR1cmUuaCIgMwoj
ZGVmaW5lIF9fSU1BR0VDQVBUVVJFX18gCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFk
ZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDEgMwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRl
cnMvSUNBQXBwbGljYXRpb24uaCIgMwogICAgICAgCgoKI2RlZmluZSBfX0lDQUFQUExJQ0FUSU9O
X18gCiMgMzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIg
MwpleHRlcm4gIkMiIHsKCgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA0NiAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5m
cmFtZXdvcmsvSGVhZGVycy9JQ0FBcHBsaWNhdGlvbi5oIiAzCnR5cGVkZWYgT1NFcnIgSUNBRXJy
b3I7CiMgNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIg
MwplbnVtCnsKICAgIGtJQ0FQQlZlcnNpb24gPSAweDAwMDEwMDAwCn07CiMgMTEwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0
dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMKZW51bQp7CiAgICBrSUNB
Q29tbXVuaWNhdGlvbkVyciA9IC05OTAwLAogICAga0lDQURldmljZU5vdEZvdW5kRXJyID0gLTk5
MDEsCiAgICBrSUNBRGV2aWNlTm90T3BlbkVyciA9IC05OTAyLAogICAga0lDQUZpbGVDb3JydXB0
ZWRFcnIgPSAtOTkwMywKICAgIGtJQ0FJT1BlbmRpbmdFcnIgPSAtOTkwNCwKICAgIGtJQ0FJbnZh
bGlkT2JqZWN0RXJyID0gLTk5MDUsCiAgICBrSUNBSW52YWxpZFByb3BlcnR5RXJyID0gLTk5MDYs
CiAgICBrSUNBSW5kZXhPdXRPZlJhbmdlRXJyID0gLTk5MDcsCiAgICBrSUNBUHJvcGVydHlUeXBl
Tm90Rm91bmRFcnIgPSAtOTkwOCwKICAgIGtJQ0FDYW5ub3RZaWVsZERldmljZSA9IC05OTA5LAog
ICAga0lDQURhdGFUeXBlTm90Rm91bmRFcnIgPSAtOTkxMCwKICAgIGtJQ0FEZXZpY2VNZW1vcnlB
bGxvY2F0aW9uRXJyID0gLTk5MTEsCiAgICBrSUNBRGV2aWNlSW50ZXJuYWxFcnIgPSAtOTkxMiwK
ICAgIGtJQ0FEZXZpY2VJbnZhbGlkUGFyYW1FcnIgPSAtOTkxMywKICAgIGtJQ0FEZXZpY2VBbHJl
YWR5T3BlbkVyciA9IC05OTE0LAogICAga0lDQURldmljZUxvY2F0aW9uSUROb3RGb3VuZEVyciA9
IC05OTE1LAogICAga0lDQURldmljZUdVSUROb3RGb3VuZEVyciA9IC05OTE2LAogICAga0lDQURl
dmljZUlPU2VydmljZVBhdGhOb3RGb3VuZEVyciA9IC05OTE3LAogICAga0lDQURldmljZVVuc3Vw
cG9ydGVkRXJyID0gLTk5MTgsCiAgICBrSUNBRnJhbWV3b3JrSW50ZXJuYWxFcnIgPSAtOTkxOSwK
ICAgIGtJQ0FFeHRlbnNpb25JbnRlcm5hbEVyciA9IC05OTIwLAogICAga0lDQUludmFsaWRTZXNz
aW9uRXJyID0gLTk5MjEKfTsKIyAxNzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNB
QXBwbGljYXRpb24uaCIgMwplbnVtCnsKICAgIGtJQ0FEZXZpY2UgPSAnaWNkdicsCiAgICBrSUNB
RGV2aWNlQ2FtZXJhID0gJ2NtcmEnLAogICAga0lDQURldmljZVNjYW5uZXIgPSAnc2NhbicsCiAg
ICBrSUNBRGV2aWNlTUZQID0gJ21mcCAnLAogICAga0lDQURldmljZVBob25lID0gJ3Bob24nLAog
ICAga0lDQURldmljZVBEQSA9ICdwZGEgJywKICAgIGtJQ0FEZXZpY2VPdGhlciA9ICdkb3RoJywK
ICAgIGtJQ0FMaXN0ID0gJ29iamwnLAogICAga0lDQURpcmVjdG9yeSA9ICdkaXJlJywKICAgIGtJ
Q0FGaWxlID0gJ2ZpbGUnLAogICAga0lDQUZpbGVJbWFnZSA9ICdpbWFnJywKICAgIGtJQ0FGaWxl
TW92aWUgPSAnbW9vdicsCiAgICBrSUNBRmlsZUF1ZGlvID0gJ2F1ZG8nLAogICAga0lDQUZpbGVG
aXJtd2FyZSA9ICdmaXJtJywKICAgIGtJQ0FGaWxlT3RoZXIgPSAnb3RoZScKfTsKIyAyMzMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFn
ZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwplbnVtCnsKICAg
IGtJQ0FQcm9wZXJ0eSA9ICdwcm9wJywKICAgIGtJQ0FQcm9wZXJ0eUltYWdlV2lkdGggPSAnMDEw
MCcsCiAgICBrSUNBUHJvcGVydHlJbWFnZUhlaWdodCA9ICcwMTAxJywKICAgIGtJQ0FQcm9wZXJ0
eUltYWdlQml0RGVwdGggPSAnMDEwMicsCiAgICBrSUNBUHJvcGVydHlJbWFnZURQSSA9ICcwMTFB
JywKICAgIGtJQ0FQcm9wZXJ0eUltYWdlRXhwb3N1cmVUaW1lID0gJzgyOUEnLAogICAga0lDQVBy
b3BlcnR5SW1hZ2VGTnVtYmVyID0gJzgyOUQnLAogICAga0lDQVByb3BlcnR5SW1hZ2VEYXRlT3Jp
Z2luYWwgPSAnOTAwMycsCiAgICBrSUNBUHJvcGVydHlJbWFnZURhdGVEaWdpdGl6ZWQgPSAnOTAw
NCcsCiAgICBrSUNBUHJvcGVydHlJbWFnZVNodXR0ZXJTcGVlZCA9ICc5MjAxJywKICAgIGtJQ0FQ
cm9wZXJ0eUltYWdlQXBlcnR1cmUgPSAnOTIwMicsCiAgICBrSUNBUHJvcGVydHlJbWFnZUZsYXNo
ID0gJzkyMDknLAogICAga0lDQVByb3BlcnR5Q29sb3JTcGFjZSA9ICdBMDAxJywKICAgIGtJQ0FQ
cm9wZXJ0eUltYWdlRmlsZW5hbWUgPSAnaWZpbCcsCiAgICBrSUNBUHJvcGVydHlJbWFnZVNpemUg
PSAnaXNpeicsCiAgICBrSUNBUHJvcGVydHlJbWFnZURhdGEgPSAnaWRhdCcsCiAgICBrSUNBUHJv
cGVydHlJbWFnZVRodW1ibmFpbCA9ICd0aHVtJywKICAgIGtJQ0FQcm9wZXJ0eUNvbG9yU3luY1By
b2ZpbGUgPSAncHJvZicKfTsKIyAyODcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNB
QXBwbGljYXRpb24uaCIgMwplbnVtCnsKICAgIGtJQ0FUeXBlVUludDggPSAndWkwOCcsCiAgICBr
SUNBVHlwZVVJbnQxNiA9ICd1aTE2JywKICAgIGtJQ0FUeXBlVUludDMyID0gJ3VpMzInLAogICAg
a0lDQVR5cGVVSW50NjQgPSAndWk2NCcsCiAgICBrSUNBVHlwZVNJbnQxNiA9ICdzaTE2JywKICAg
IGtJQ0FUeXBlU0ludDMyID0gJ3NpMzInLAogICAga0lDQVR5cGVTSW50NjQgPSAnc2k2NCcsCiAg
ICBrSUNBVHlwZUZsb2F0ID0gJ2Zsb2EnLAogICAga0lDQVR5cGVGaXhlZCA9ICdzaW5nJywKICAg
IGtJQ0FUeXBlQm9vbGVhbiA9ICdib29sJywKICAgIGtJQ0FUeXBlU3RyaW5nID0gJ1RFWFQnLAog
ICAga0lDQVR5cGVEYXRhID0gJ2RhdGEnLAogICAga0lDQVR5cGVUaHVtYm5haWwgPSAndGh1bScK
fTsKIyAzMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIg
MwplbnVtCnsKICAgIGtJQ0FGbGFnUmVhZFdyaXRlQWNjZXNzID0gMUwgPDwgMCwKICAgIGtJQ0FG
bGFnUmVhZEFjY2VzcyA9IDFMIDw8IDEKfTsKIyAzMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hl
YWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwplbnVtCnsKICAgIGtJQ0FCdXR0b25TY2FuID0gJ3Nj
YW4nLAogICAga0lDQUJ1dHRvbkNvcHkgPSAnY29weScsCiAgICBrSUNBQnV0dG9uRU1haWwgPSAn
bWFpbCcsCiAgICBrSUNBQnV0dG9uV2ViID0gJ3dlYiAnCn07CiMgMzU0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZy
YW1ld29yay9IZWFkZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMKZW51bQp7CiAgICBrSUNBQ2FtZXJh
UGFzc1RocnVTZW5kID0gMCwKICAgIGtJQ0FDYW1lcmFQYXNzVGhydVJlY2VpdmUgPSAxLAogICAg
a0lDQUNhbWVyYVBhc3NUaHJ1Tm90VXNlZCA9IDIKfTsKIyAzODMgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3
b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwp0eXBlZGVmIHN0cnVjdCBJQ0FQVFBQYXNz
VGhyb3VnaFBCCnsKICAgIFVJbnQzMiBjb21tYW5kQ29kZTsKICAgIFVJbnQzMiByZXN1bHRDb2Rl
OwogICAgVUludDMyIG51bU9mSW5wdXRQYXJhbXM7CiAgICBVSW50MzIgbnVtT2ZPdXRwdXRQYXJh
bXM7CiAgICBVSW50MzIgcGFyYW1zWzRdOwogICAgVUludDMyIGRhdGFVc2FnZU1vZGU7CiAgICBV
SW50MzIgZmxhZ3M7CiAgICBVSW50MzIgZGF0YVNpemU7CiAgICBVSW50OCBkYXRhWzFdOwp9IElD
QVBUUFBhc3NUaHJvdWdoUEI7CiMgNDEwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lD
QUFwcGxpY2F0aW9uLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgSUNBUFRQRXZlbnREYXRhc2V0CnsKICAg
IFVJbnQzMiBkYXRhTGVuZ3RoOwogICAgVUludDE2IGNvbnRhaW5lclR5cGU7CiAgICBVSW50MTYg
ZXZlbnRDb2RlOwogICAgVUludDMyIHRyYW5zYWN0aW9uSUQ7CiAgICBVSW50MzIgcGFyYW1zWzNd
Owp9IElDQVBUUEV2ZW50RGF0YXNldDsKCgoKICAgICAgIAogICAgICAgCgoKCmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrSUNBRGV2aWNlc0FycmF5S2V5IDsKCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrSUNBT2JqZWN0S2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FPYmplY3RO
YW1lS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FVU0JWZW5kb3JJREtleSA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBVVNCUHJvZHVjdElES2V5IDsKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtJQ0FEZXZpY2VUeXBlS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtJQ0FFeGVjdXRhYmxlQXJjaGl0ZWN0dXJlS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtJQ0FSZW1vdGVEZXZpY2VLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQURldmlj
ZVNoYXJlZEtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBRGV2aWNlV2ViU2hhcmVk
S2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FEZXZpY2VVc2VkS2V5IDsKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FCb25qb3VyU2VydmljZVR5cGVLZXkgOwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0lDQUJvbmpvdXJTZXJ2aWNlTmFtZUtleSA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrSUNBQm9uam91clRYVFJlY29yZEtleSA7CmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrSUNBRGV2aWNlQ2FwYWJpbGl0aWVzS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtJQ0FMb2NrU3RhdHVzS2V5IDsKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBRGF0YVBy
b3BlcnR5S2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FEYXRhVHlwZUtleSA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBRGF0YVNpemVLZXkgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0lDQVRodW1ibmFpbFByb3BlcnR5S2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtJQ0FUaHVtYm5haWxTaXplS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FS
YXdLZXkgOwoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FNZWRpYUhlaWdodEtleSA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBTWVkaWFXaWR0aEtleSA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrSUNBQ3JlYXRpb25EYXRlU3RyaW5nS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtJQ0FNb2RpZmljYXRpb25EYXRlU3RyaW5nS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtNZXRhRGF0YURpY3Rpb25hcnlLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0lDQU1lZGlhRHVyYXRpb25JblNlY29uZHNLZXkgOwoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtJQ0FEZXZpY2VUeXBlQ2FtZXJhIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FEZXZp
Y2VUeXBlU2Nhbm5lciA7CiMgNDY5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFw
cGxpY2F0aW9uLmgiIDMKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FVU0JUcmFuc3BvcnRU
eXBlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FGaXJlV2lyZVRyYW5zcG9ydFR5cGUg
OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQUJsdWV0b290aFRyYW5zcG9ydFR5cGUgOwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQVRDUElQVHJhbnNwb3J0VHlwZSA7CmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrSUNBU0NTSVRyYW5zcG9ydFR5cGUgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0lDQVRXQUlOVHJhbnNwb3J0VHlwZSA7CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtJQ0FEZXZpY2VCcm93c2VyRGV2aWNlUmVmS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtJQ0FEZXZpY2VNb2R1bGVQYXRoS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJ
Q0FEZXZpY2VJY29uUGF0aEtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBVHJhbnNw
b3J0VHlwZUtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBQmx1ZXRvb3RoQWRkcmVz
c0tleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBVVNCTG9jYXRpb25JREtleSA7CmV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBRmlyZVdpcmVHVUlES2V5IDsKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtJQ0FJT1NlcnZpY2VQYXRoS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtJQ0FJUEFkZHJlc3NLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQUlQUG9y
dEtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBSVBOYW1lS2V5IDsKZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtJQ0FJUEdVSURLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0lDQVRXQUlORFNQYXRoS2V5IDsKIyA0OTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMv
SUNBQXBwbGljYXRpb24uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQVVzZXJBc3Np
Z25lZERldmljZU5hbWVLZXkgOwojIDUxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9J
Q0FBcHBsaWNhdGlvbi5oIiAzCnR5cGVkZWYgc3RydWN0IElDQUhlYWRlciB7CiAgICBJQ0FFcnJv
ciBlcnI7CiAgICB1bnNpZ25lZCBsb25nIHJlZmNvbjsKfSBJQ0FIZWFkZXI7CgoKCnR5cGVkZWYg
dm9pZCAoICogSUNBQ29tcGxldGlvbikoSUNBSGVhZGVyKiBwYik7Cgp0eXBlZGVmIEJvb2xlYW4g
KCAqIElDQUltcG9ydEZpbHRlclByb2MpKENGRGljdGlvbmFyeVJlZiBpbWFnZUluZm8sIHVuc2ln
bmVkIGxvbmcgcmVmY29uKTsKCnR5cGVkZWYgdm9pZCAoICogSUNBTm90aWZpY2F0aW9uUHJvYyko
Q0ZTdHJpbmdSZWYgbm90aWZpY2F0aW9uVHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlv
bkRpY3Rpb25hcnkpOwoKCgp0eXBlZGVmIFVJbnQzMiBJQ0FPYmplY3Q7CnR5cGVkZWYgVUludDMy
IElDQVByb3BlcnR5Owp0eXBlZGVmIFVJbnQzMiBJQ0FDb25uZWN0aW9uSUQ7CnR5cGVkZWYgVUlu
dDMyIElDQVNlc3Npb25JRDsKdHlwZWRlZiBJQ0FTZXNzaW9uSUQgSUNBU2Nhbm5lclNlc3Npb25J
RDsKdHlwZWRlZiBVSW50MzIgSUNBRXZlbnREYXRhQ29va2llOwoKICAgICAgIAogICAgICAgCiMg
NTQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMKdHlw
ZWRlZiBzdHJ1Y3QgSUNBT2JqZWN0SW5mbyB7CiAgICBPU1R5cGUgb2JqZWN0VHlwZTsKICAgIE9T
VHlwZSBvYmplY3RTdWJ0eXBlOwp9IElDQU9iamVjdEluZm87CiMgNTU5ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZy
YW1ld29yay9IZWFkZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMKZW51bQp7CiAgICBrSUNBQWxsb3dN
dWx0aXBsZUltYWdlcyA9IDB4MDAwMDAwMDEsCiAgICBrSUNBRG93bmxvYWRBbmRSZXR1cm5QYXRo
QXJyYXkgPSAweDAwMDAwMDAyCn07CiMgNTgwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJz
L0lDQUFwcGxpY2F0aW9uLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgSUNBSW1wb3J0SW1hZ2VQQiB7CiAg
ICBJQ0FIZWFkZXIgaGVhZGVyOwogICAgSUNBT2JqZWN0IGRldmljZU9iamVjdDsKICAgIFVJbnQz
MiBmbGFnczsKICAgIENGQXJyYXlSZWYgc3VwcG9ydGVkRmlsZVR5cGVzOwogICAgSUNBSW1wb3J0
RmlsdGVyUHJvYyBmaWx0ZXJQcm9jOwogICAgQ0ZBcnJheVJlZiogaW1wb3J0ZWRJbWFnZXM7Cn0g
SUNBSW1wb3J0SW1hZ2VQQjsKIyA2MzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNB
QXBwbGljYXRpb24uaCIgMwpleHRlcm4gSUNBRXJyb3IKSUNBSW1wb3J0SW1hZ2UoCiAgICBJQ0FJ
bXBvcnRJbWFnZVBCKiBwYiwKICAgIElDQUNvbXBsZXRpb24gY29tcGxldGlvbgopIDsKIyA2NTUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9J
bWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwpleHRlcm4g
SUNBRXJyb3IKSUNBU2hvd0RldmljZUJyb3dzZXIoCiAgICBDRkRpY3Rpb25hcnlSZWYgb3B0aW9u
cwopIDsKCgoKdHlwZWRlZiB2b2lkICggKiBJQ0FOb3RpZmljYXRpb24pKENGU3RyaW5nUmVmIG5v
dGlmaWNhdGlvblR5cGUsIENGRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25EaWN0aW9uYXJ5KTsK
IyA2OTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5cGVPYmplY3RBZGRlZCA7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBTm90aWZpY2F0aW9uVHlwZU9iamVjdFJlbW92
ZWQgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5cGVPYmplY3RJ
bmZvQ2hhbmdlZCA7CgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5
cGVTdG9yZUFkZGVkIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FOb3RpZmljYXRpb25U
eXBlU3RvcmVSZW1vdmVkIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FOb3RpZmljYXRp
b25UeXBlU3RvcmVGdWxsIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FOb3RpZmljYXRp
b25UeXBlU3RvcmVJbmZvQ2hhbmdlZCA7CgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5v
dGlmaWNhdGlvblR5cGVEZXZpY2VBZGRlZCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNB
Tm90aWZpY2F0aW9uVHlwZURldmljZVJlbW92ZWQgOwoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVm
IGtJQ0FOb3RpZmljYXRpb25UeXBlRGV2aWNlSW5mb0NoYW5nZWQgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5cGVEZXZpY2VQcm9wZXJ0eUNoYW5nZWQgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5cGVEZXZpY2VXYXNSZXNldCA7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBTm90aWZpY2F0aW9uVHlwZURldmljZVN0YXR1
c0luZm8gOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5cGVEZXZp
Y2VTdGF0dXNFcnJvciA7CgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlv
blR5cGVDYXB0dXJlQ29tcGxldGUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlm
aWNhdGlvblR5cGVSZXF1ZXN0T2JqZWN0VHJhbnNmZXIgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga0lDQU5vdGlmaWNhdGlvblR5cGVUcmFuc2FjdGlvbkNhbmNlbGVkIDsKCmV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBrSUNBTm90aWZpY2F0aW9uVHlwZVVucmVwb3J0ZWRTdGF0dXMgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5cGVQcm9wcmlldGFyeSA7Cgpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5cGVEZXZpY2VDb25uZWN0
aW9uUHJvZ3Jlc3MgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5
cGVEb3dubG9hZFByb2dyZXNzU3RhdHVzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FO
b3RpZmljYXRpb25UeXBlU2NhblByb2dyZXNzU3RhdHVzIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtJQ0FOb3RpZmljYXRpb25UeXBlU2Nhbm5lclNlc3Npb25DbG9zZWQgOwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5cGVTY2FubmVyU2NhbkRvbmUgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5cGVTY2FubmVyUGFnZURvbmUg
OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5cGVTY2FubmVyQnV0
dG9uUHJlc3NlZCA7CgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblR5
cGVTY2FubmVyT3ZlcnZpZXdPdmVybGF5QXZhaWxhYmxlIDsKCgoKZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtJQ0FFcnJvcktleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBUmVmY29u
S2V5IDsKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBTm90aWZpY2F0aW9uSUNBT2JqZWN0
S2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FOb3RpZmljYXRpb25EZXZpY2VJQ0FP
YmplY3RLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvbkRldmlj
ZUxpc3RJQ0FPYmplY3RLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNh
dGlvbkNsYXNzS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FOb3RpZmljYXRpb25U
eXBlS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FOb3RpZmljYXRpb25SYXdFdmVu
dEtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBTm90aWZpY2F0aW9uRGF0YUtleSA7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBTm90aWZpY2F0aW9uRGF0YVNpemVLZXkgOwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvbkRhdGFDb29raWVLZXkgOwoK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FOb3RpZmljYXRpb25JbWFnZUtleSA7CmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrSUNBTm90aWZpY2F0aW9uSW1hZ2VXaWR0aEtleSA7CmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrSUNBTm90aWZpY2F0aW9uSW1hZ2VIZWlnaHRLZXkgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvbkltYWdlQnl0ZXNQZXJSb3dLZXkg
OwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvbkltYWdlU3RhcnRSb3dL
ZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvbkltYWdlTnVtYmVy
T2ZSb3dzS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FOb3RpZmljYXRpb25JbWFn
ZURhdGFLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvbkltYWdl
RGF0YVNpemVLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvbkRh
dGFJc0JpZ0VuZGlhbktleSA7CgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNh
dGlvblNjYW5uZXJEb2N1bWVudE5hbWVLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lD
QU5vdGlmaWNhdGlvblNjYW5uZXJCdXR0b25UeXBlS2V5IDsKCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrSUNBTm90aWZpY2F0aW9uTnVtZXJPZkltYWdlc1JlbWFpbmluZ0tleSA7CmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrSUNBTm90aWZpY2F0aW9uUGVyY2VudERvd25sb2FkZWRLZXkgOwoK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FOb3RpZmljYXRpb25TdWJUeXBlS2V5IDsKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FOb3RpZmljYXRpb25TdWJUeXBlV2FybVVwU3RhcnRl
ZCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBTm90aWZpY2F0aW9uU3ViVHlwZVdhcm1V
cERvbmUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvblZlbmRvckVy
cm9yQ29kZUtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBTm90aWZpY2F0aW9uU3Vi
VHlwZVBlcmZvcm1PdmVydmlld1NjYW4gOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5v
dGlmaWNhdGlvblN1YlR5cGVEb2N1bWVudExvYWRlZCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrSUNBTm90aWZpY2F0aW9uU3ViVHlwZURvY3VtZW50Tm90TG9hZGVkIDsKCgoKCgpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvbkNsYXNzUFRQU3RhbmRhcmQgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQU5vdGlmaWNhdGlvbkNsYXNzUFRQVmVuZG9yIDsKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FOb3RpZmljYXRpb25DbGFzc1Byb3ByaWV0YXJ5IDsK
CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FEZXZpY2VQcm9wVW5kZWZpbmVkIDsKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FEZXZpY2VQcm9wQmF0dGVyeUxldmVsIDsKZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FEZXZpY2VQcm9wRnVuY3Rpb25hbE1vZGUgOwpleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYga0lDQURldmljZVByb3BJbWFnZVNpemUgOwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0lDQURldmljZVByb3BDb21wcmVzc2lvblNldHRpbmcgOwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0lDQURldmljZVByb3BXaGl0ZUJhbGFuY2UgOwpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0lDQURldmljZVByb3BSR0JHYWluIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtJQ0FEZXZpY2VQcm9wRk51bWJlciA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNB
RGV2aWNlUHJvcEZvY2FsTGVuZ3RoIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FEZXZp
Y2VQcm9wRm9jdXNEaXN0YW5jZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBRGV2aWNl
UHJvcEZvY3VzTW9kZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBRGV2aWNlUHJvcEV4
cG9zdXJlTWV0ZXJpbmdNb2RlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FEZXZpY2VQ
cm9wRmxhc2hNb2RlIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FEZXZpY2VQcm9wRXhw
b3N1cmVUaW1lIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FEZXZpY2VQcm9wRXhwb3N1
cmVQcm9ncmFtTW9kZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBRGV2aWNlUHJvcEV4
cG9zdXJlSW5kZXggOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQURldmljZVByb3BFeHBv
c3VyZUJpYXNDb21wZW5zYXRpb24gOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQURldmlj
ZVByb3BEYXRlVGltZSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBRGV2aWNlUHJvcENh
cHR1cmVEZWxheSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBRGV2aWNlUHJvcFN0aWxs
Q2FwdHVyZU1vZGUgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0lDQURldmljZVByb3BDb250
cmFzdCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBRGV2aWNlUHJvcFNoYXJwbmVzcyA7
CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrSUNBRGV2aWNlUHJvcERpZ2l0YWxab29tIDsKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtJQ0FEZXZpY2VQcm9wRWZmZWN0TW9kZSA7CmV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrSUNBRGV2aWNlUHJvcEJ1cnN0TnVtYmVyIDsKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtJQ0FEZXZpY2VQcm9wQnVyc3RJbnRlcnZhbCA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrSUNBRGV2aWNlUHJvcFRpbWVsYXBzZU51bWJlciA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrSUNBRGV2aWNlUHJvcFRpbWVsYXBzZUludGVydmFsIDsKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtJQ0FEZXZpY2VQcm9wRm9jdXNNZXRlcmluZ01vZGUgOwpleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0lDQURldmljZVByb3BVcGxvYWRVUkwgOwpleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0lDQURldmljZVByb3BBcnRpc3QgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0lDQURldmljZVByb3BDb3B5cmlnaHRJbmZvIDsKIyA4MjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3Jr
L0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwp0eXBlZGVmIHN0cnVjdCBJQ0FSZWdpc3RlckZv
ckV2ZW50Tm90aWZpY2F0aW9uUEIgewogICAgSUNBSGVhZGVyIGhlYWRlcjsKICAgIElDQU9iamVj
dCBvYmplY3RPZkludGVyZXN0OwogICAgQ0ZBcnJheVJlZiBldmVudHNPZkludGVyZXN0OwogICAg
SUNBTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvblByb2M7CiAgICBDRkRpY3Rpb25hcnlSZWYgb3B0
aW9uczsKfSBJQ0FSZWdpc3RlckZvckV2ZW50Tm90aWZpY2F0aW9uUEI7CiMgODUwICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0
dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMKZXh0ZXJuIElDQUVycm9y
CklDQVJlZ2lzdGVyRm9yRXZlbnROb3RpZmljYXRpb24oCiAgICBJQ0FSZWdpc3RlckZvckV2ZW50
Tm90aWZpY2F0aW9uUEIqIHBhcmFtcywKICAgIElDQUNvbXBsZXRpb24gY29tcGxldGlvblByb2MK
KSA7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgSUNBU2VuZE5vdGlmaWNhdGlvblBCCnsKICAgIElDQUhl
YWRlciBoZWFkZXI7CiAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlvbkRpY3Rp
b25hcnk7CiAgICBVSW50MzIgcmVwbHlDb2RlOwp9IElDQVNlbmROb3RpZmljYXRpb25QQjsKCmV4
dGVybiBJQ0FFcnJvciBJQ0FTZW5kTm90aWZpY2F0aW9uKCBJQ0FTZW5kTm90aWZpY2F0aW9uUEIq
IHBiICk7CmV4dGVybiBJQ0FFcnJvciBJQ0FTZW5kTm90aWZpY2F0aW9uQW5kV2FpdEZvclJlcGx5
KCBJQ0FTZW5kTm90aWZpY2F0aW9uUEIqIHBiICk7CgogICAgICAgCiAgICAgICAKIyA4ODAgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFn
ZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwp0eXBlZGVmIHN0
cnVjdCBJQ0FHZXREZXZpY2VMaXN0UEIgewogICAgSUNBSGVhZGVyIGhlYWRlcjsKICAgIElDQU9i
amVjdCBvYmplY3Q7Cn0gSUNBR2V0RGV2aWNlTGlzdFBCOwojIDkyMSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFt
ZXdvcmsvSGVhZGVycy9JQ0FBcHBsaWNhdGlvbi5oIiAzCmV4dGVybiBJQ0FFcnJvcgpJQ0FHZXRE
ZXZpY2VMaXN0KAogICAgSUNBR2V0RGV2aWNlTGlzdFBCKiBwYiwKICAgIElDQUNvbXBsZXRpb24g
Y29tcGxldGlvbgopIDsKIyA5MzcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBw
bGljYXRpb24uaCIgMwp0eXBlZGVmIHN0cnVjdCBJQ0FDb3B5T2JqZWN0UHJvcGVydHlEaWN0aW9u
YXJ5UEIgewogICAgSUNBSGVhZGVyIGhlYWRlcjsKICAgIElDQU9iamVjdCBvYmplY3Q7CiAgICBD
RkRpY3Rpb25hcnlSZWYqIHRoZURpY3Q7Cn0gSUNBQ29weU9iamVjdFByb3BlcnR5RGljdGlvbmFy
eVBCOwojIDk4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9G
cmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FBcHBsaWNhdGlvbi5o
IiAzCmV4dGVybiBJQ0FFcnJvcgpJQ0FDb3B5T2JqZWN0UHJvcGVydHlEaWN0aW9uYXJ5KAogICAg
SUNBQ29weU9iamVjdFByb3BlcnR5RGljdGlvbmFyeVBCKiBwYiwKICAgIElDQUNvbXBsZXRpb24g
Y29tcGxldGlvbgopIDsKIyAxMDAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFw
cGxpY2F0aW9uLmgiIDMKZW51bQp7CiAgICBrSUNBVGh1bWJuYWlsRm9ybWF0SlBFRyA9ICdqcGVn
JywKICAgIGtJQ0FUaHVtYm5haWxGb3JtYXRUSUZGID0gJ3RpZmYnLAogICAga0lDQVRodW1ibmFp
bEZvcm1hdFBORyA9ICdwbmcgJwp9OwojIDEwMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRl
cnMvSUNBQXBwbGljYXRpb24uaCIgMwp0eXBlZGVmIHN0cnVjdCBJQ0FDb3B5T2JqZWN0VGh1bWJu
YWlsUEIgewogICAgSUNBSGVhZGVyIGhlYWRlcjsKICAgIElDQU9iamVjdCBvYmplY3Q7CiAgICBP
U1R5cGUgdGh1bWJuYWlsRm9ybWF0OwogICAgQ0ZEYXRhUmVmKiB0aHVtYm5haWxEYXRhOwp9IElD
QUNvcHlPYmplY3RUaHVtYm5haWxQQjsKIyAxMDY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFk
ZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMKZXh0ZXJuIElDQUVycm9yCklDQUNvcHlPYmplY3RUaHVt
Ym5haWwoCiAgICBJQ0FDb3B5T2JqZWN0VGh1bWJuYWlsUEIqIHBiLAogICAgSUNBQ29tcGxldGlv
biBjb21wbGV0aW9uCikgOwojIDEwODggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNB
QXBwbGljYXRpb24uaCIgMwp0eXBlZGVmIHN0cnVjdCBJQ0FDb3B5T2JqZWN0RGF0YVBCIHsKICAg
IElDQUhlYWRlciBoZWFkZXI7CiAgICBJQ0FPYmplY3Qgb2JqZWN0OwogICAgc2l6ZV90IHN0YXJ0
Qnl0ZTsKICAgIHNpemVfdCByZXF1ZXN0ZWRTaXplOwogICAgQ0ZEYXRhUmVmKiBkYXRhOwp9IElD
QUNvcHlPYmplY3REYXRhUEI7CiMgMTExMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9J
Q0FBcHBsaWNhdGlvbi5oIiAzCmV4dGVybiBJQ0FFcnJvcgpJQ0FDb3B5T2JqZWN0RGF0YSgKICAg
IElDQUNvcHlPYmplY3REYXRhUEIqIHBhcmFtcywKICAgIElDQUNvbXBsZXRpb24gY29tcGxldGlv
blByb2MKKSA7CiMgMTEzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1l
d29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FBcHBsaWNh
dGlvbi5oIiAzCnR5cGVkZWYgc3RydWN0IElDQU1lc3NhZ2UgewogICAgT1NUeXBlIG1lc3NhZ2VU
eXBlOwogICAgVUludDMyIHN0YXJ0Qnl0ZTsKICAgIHZvaWQgKiBkYXRhUHRyOwogICAgVUludDMy
IGRhdGFTaXplOwogICAgT1NUeXBlIGRhdGFUeXBlOwp9IElDQU1lc3NhZ2U7CiMgMTE1OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdl
Q2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FBcHBsaWNhdGlvbi5oIiAzCmVudW0KewogICAg
a0lDQU1lc3NhZ2VDb25uZWN0ID0gJ29wZW4nLAogICAga0lDQU1lc3NhZ2VEaXNjb25uZWN0ID0g
J2Nsb3MnLAogICAga0lDQU1lc3NhZ2VSZXNldCA9ICdyZXNlJywKICAgIGtJQ0FNZXNzYWdlQ2hl
Y2tEZXZpY2UgPSAnY2hrZCcsCiAgICBrSUNBTWVzc2FnZUNhbWVyYVJlYWRDbG9jayA9ICdyY2xr
JywKICAgIGtJQ0FNZXNzYWdlR2V0TGFzdEJ1dHRvblByZXNzZWQgPSAnYnRuPycsCiAgICBrSUNB
TWVzc2FnZUdldEV2ZW50RGF0YSA9ICdtZ2VkJywKICAgIGtJQ0FNZXNzYWdlRGV2aWNlWWllbGQg
PSAneWllbCcsCiAgICBrSUNBTWVzc2FnZUNhbWVyYVBhc3NUaHJvdWdoID0gJ3Bhc3MnLAogICAg
a0lDQU1lc3NhZ2VTY2FubmVyT3ZlcnZpZXdTZWxlY3Rpb25DaGFuZ2VkID0gJ2FyZWEnCn07CiMg
MTE4NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdv
cmtzL0ltYWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FBcHBsaWNhdGlvbi5oIiAzCnR5
cGVkZWYgc3RydWN0IElDQU9iamVjdFNlbmRNZXNzYWdlUEIgewogICAgSUNBSGVhZGVyIGhlYWRl
cjsKICAgIElDQU9iamVjdCBvYmplY3Q7CiAgICBJQ0FNZXNzYWdlIG1lc3NhZ2U7CiAgICBVSW50
MzIgcmVzdWx0Owp9IElDQU9iamVjdFNlbmRNZXNzYWdlUEI7CiMgMTIwNCAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5m
cmFtZXdvcmsvSGVhZGVycy9JQ0FBcHBsaWNhdGlvbi5oIiAzCmV4dGVybiBJQ0FFcnJvcgpJQ0FP
YmplY3RTZW5kTWVzc2FnZSgKICAgIElDQU9iamVjdFNlbmRNZXNzYWdlUEIqIHBiLAogICAgSUNB
Q29tcGxldGlvbiBjb21wbGV0aW9uCikgOwojIDEyMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hl
YWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwplbnVtCnsKICAgIGtEZWxldGVBZnRlckRvd25sb2Fk
ID0gMHgwMDAwMDAwMSwKICAgIGtDcmVhdGVDdXN0b21JY29uID0gMHgwMDAwMDAwMiwKICAgIGtB
ZGRNZXRhRGF0YVRvRmluZGVyQ29tbWVudCA9IDB4MDAwMDAwMDQsCiAgICBrQWRqdXN0Q3JlYXRp
b25EYXRlID0gMHgwMDAwMDAwOCwKICAgIGtTZXRGaWxlVHlwZUFuZENyZWF0b3IgPSAweDAwMDAw
MDEwLAoKICAgIGtSb3RhdGVJbWFnZSA9IDB4MDAwMDAwNDAsCiAgICBrRG9udEVtYmVkQ29sb3JT
eW5jUHJvZmlsZSA9IDB4MDAwMDAwODAKfTsKIyAxMjYxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9I
ZWFkZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgSUNBRG93bmxvYWRGaWxl
UEIgewogICAgSUNBSGVhZGVyIGhlYWRlcjsKICAgIElDQU9iamVjdCBvYmplY3Q7CiAgICBGU1Jl
ZiAqIGRpckZTUmVmOwogICAgVUludDMyIGZsYWdzOwogICAgT1NUeXBlIGZpbGVUeXBlOwogICAg
T1NUeXBlIGZpbGVDcmVhdG9yOwogICAgRml4ZWQgcm90YXRpb25BbmdsZTsKICAgIEZTUmVmICog
ZmlsZUZTUmVmOwp9IElDQURvd25sb2FkRmlsZVBCOwojIDEzMTYgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3
b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwpleHRlcm4gSUNBRXJyb3IKSUNBRG93bmxv
YWRGaWxlKAogICAgSUNBRG93bmxvYWRGaWxlUEIqIHBiLAogICAgSUNBQ29tcGxldGlvbiBjb21w
bGV0aW9uCikgOwojIDEzMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGlj
YXRpb24uaCIgMwplbnVtCnsKICAgIGtJQ0FVcGxvYWRGaWxlQXNJcyA9IDB4MDAwMDAwMDAsCiAg
ICBrSUNBVXBsb2FkRmlsZVNjYWxlVG9GaXQgPSAweDAwMDAwMDAxCn07CiMgMTM0OSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2Fw
dHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FBcHBsaWNhdGlvbi5oIiAzCnR5cGVkZWYgc3RydWN0
IElDQVVwbG9hZEZpbGVQQiB7CiAgICBJQ0FIZWFkZXIgaGVhZGVyOwogICAgSUNBT2JqZWN0IHBh
cmVudE9iamVjdDsKICAgIEZTUmVmKiBmaWxlRlNSZWY7CiAgICBVSW50MzIgZmxhZ3M7Cn0gSUNB
VXBsb2FkRmlsZVBCOwojIDEzOTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBw
bGljYXRpb24uaCIgMwpleHRlcm4gSUNBRXJyb3IKSUNBVXBsb2FkRmlsZSgKICAgIElDQVVwbG9h
ZEZpbGVQQiogcGIsCiAgICBJQ0FDb21wbGV0aW9uIGNvbXBsZXRpb24KKSA7CgogICAgICAgCiAg
ICAgICAKIyAxNDMyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFwcGxpY2F0aW9u
LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgSUNBTG9hZERldmljZU1vZHVsZVBCIHsKICAgIElDQUhlYWRl
ciBoZWFkZXI7CiAgICBDRkRpY3Rpb25hcnlSZWYgcGFyYW1EaWN0aW9uYXJ5Owp9IElDQUxvYWRE
ZXZpY2VNb2R1bGVQQjsKIyAxNDUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFw
cGxpY2F0aW9uLmgiIDMKZXh0ZXJuIElDQUVycm9yCklDQUxvYWREZXZpY2VNb2R1bGUoCiAgICBJ
Q0FMb2FkRGV2aWNlTW9kdWxlUEIqIHBiLAogICAgSUNBQ29tcGxldGlvbiBjb21wbGV0aW9uCikg
OwojIDE0NjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIg
Mwp0eXBlZGVmIHN0cnVjdCBJQ0FVbmxvYWREZXZpY2VNb2R1bGVQQiB7CiAgICBJQ0FIZWFkZXIg
aGVhZGVyOwogICAgSUNBT2JqZWN0IGRldmljZU9iamVjdDsKfSBJQ0FVbmxvYWREZXZpY2VNb2R1
bGVQQjsKIyAxNDgyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFwcGxpY2F0aW9u
LmgiIDMKZXh0ZXJuIElDQUVycm9yCklDQVVubG9hZERldmljZU1vZHVsZSgKICAgIElDQVVubG9h
ZERldmljZU1vZHVsZVBCKiBwYiwKICAgIElDQUNvbXBsZXRpb24gY29tcGxldGlvbgopIDsKIyAx
NDk4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMKdHlw
ZWRlZiBzdHJ1Y3QgSUNBT3BlblNlc3Npb25QQiB7CiAgICBJQ0FIZWFkZXIgaGVhZGVyOwogICAg
SUNBT2JqZWN0IGRldmljZU9iamVjdDsKICAgIElDQVNlc3Npb25JRCBzZXNzaW9uSUQ7Cn0gSUNB
T3BlblNlc3Npb25QQjsKIyAxNTE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFw
cGxpY2F0aW9uLmgiIDMKZXh0ZXJuIElDQUVycm9yCklDQU9wZW5TZXNzaW9uKAogICAgSUNBT3Bl
blNlc3Npb25QQiogcGIsCiAgICBJQ0FDb21wbGV0aW9uIGNvbXBsZXRpb24KKSA7CiMgMTUzMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0lt
YWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FBcHBsaWNhdGlvbi5oIiAzCnR5cGVkZWYg
c3RydWN0IElDQUNsb3NlU2Vzc2lvblBCIHsKICAgIElDQUhlYWRlciBoZWFkZXI7CiAgICBJQ0FT
ZXNzaW9uSUQgc2Vzc2lvbklEOwp9IElDQUNsb3NlU2Vzc2lvblBCOwojIDE1NDkgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1
cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwpleHRlcm4gSUNBRXJyb3IK
SUNBQ2xvc2VTZXNzaW9uKAogICAgSUNBQ2xvc2VTZXNzaW9uUEIqIHBiLAogICAgSUNBQ29tcGxl
dGlvbiBjb21wbGV0aW9uCikgOwojIDE1NjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMv
SUNBQXBwbGljYXRpb24uaCIgMwp0eXBlZGVmIHN0cnVjdCBJQ0FTY2FubmVyT3BlblNlc3Npb25Q
QiB7CiAgICBJQ0FIZWFkZXIgaGVhZGVyOwogICAgSUNBT2JqZWN0IG9iamVjdDsKICAgIElDQVNj
YW5uZXJTZXNzaW9uSUQgc2Vzc2lvbklEOwp9IElDQVNjYW5uZXJPcGVuU2Vzc2lvblBCOwojIDE1
ODQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jr
cy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwpleHRl
cm4gSUNBRXJyb3IKSUNBU2Nhbm5lck9wZW5TZXNzaW9uKAogICAgSUNBU2Nhbm5lck9wZW5TZXNz
aW9uUEIqIHBiLAogICAgSUNBQ29tcGxldGlvbiBjb21wbGV0aW9uCikgOwojIDE1OTggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNh
cHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwp0eXBlZGVmIHN0cnVj
dCBJQ0FTY2FubmVyQ2xvc2VTZXNzaW9uUEIgewogICAgSUNBSGVhZGVyIGhlYWRlcjsKICAgIElD
QVNjYW5uZXJTZXNzaW9uSUQgc2Vzc2lvbklEOwp9IElDQVNjYW5uZXJDbG9zZVNlc3Npb25QQjsK
IyAxNjE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1l
d29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMK
ZXh0ZXJuIElDQUVycm9yCklDQVNjYW5uZXJDbG9zZVNlc3Npb24oCiAgICBJQ0FTY2FubmVyQ2xv
c2VTZXNzaW9uUEIqIHBiLAogICAgSUNBQ29tcGxldGlvbiBjb21wbGV0aW9uCikgOwojIDE2MzAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9J
bWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwp0eXBlZGVm
IHN0cnVjdCBJQ0FTY2FubmVySW5pdGlhbGl6ZVBCIHsKICAgIElDQUhlYWRlciBoZWFkZXI7CiAg
ICBJQ0FTY2FubmVyU2Vzc2lvbklEIHNlc3Npb25JRDsKfSBJQ0FTY2FubmVySW5pdGlhbGl6ZVBC
OwojIDE2NDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQXBwbGljYXRpb24uaCIg
MwpleHRlcm4gSUNBRXJyb3IKSUNBU2Nhbm5lckluaXRpYWxpemUoCiAgICBJQ0FTY2FubmVySW5p
dGlhbGl6ZVBCKiBwYiwKICAgIElDQUNvbXBsZXRpb24gY29tcGxldGlvbgopIDsKIyAxNjY0ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1h
Z2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgSUNBU2Nhbm5lckdldFBhcmFtZXRlcnNQQiB7CiAgICBJQ0FIZWFkZXIgaGVhZGVyOwog
ICAgSUNBU2Nhbm5lclNlc3Npb25JRCBzZXNzaW9uSUQ7CiAgICBDRk11dGFibGVEaWN0aW9uYXJ5
UmVmIHRoZURpY3Q7Cn0gSUNBU2Nhbm5lckdldFBhcmFtZXRlcnNQQjsKIyAxNjgzICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0
dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMKZXh0ZXJuIElDQUVycm9y
CklDQVNjYW5uZXJHZXRQYXJhbWV0ZXJzKAogICAgSUNBU2Nhbm5lckdldFBhcmFtZXRlcnNQQiog
cGIsCiAgICBJQ0FDb21wbGV0aW9uIGNvbXBsZXRpb24KKSA7CiMgMTY5OSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5m
cmFtZXdvcmsvSGVhZGVycy9JQ0FBcHBsaWNhdGlvbi5oIiAzCnR5cGVkZWYgc3RydWN0IElDQVNj
YW5uZXJTZXRQYXJhbWV0ZXJzUEIgewogICAgSUNBSGVhZGVyIGhlYWRlcjsKICAgIElDQVNjYW5u
ZXJTZXNzaW9uSUQgc2Vzc2lvbklEOwogICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiB0aGVEaWN0
Owp9IElDQVNjYW5uZXJTZXRQYXJhbWV0ZXJzUEI7CiMgMTcxOCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFtZXdv
cmsvSGVhZGVycy9JQ0FBcHBsaWNhdGlvbi5oIiAzCmV4dGVybiBJQ0FFcnJvcgpJQ0FTY2FubmVy
U2V0UGFyYW1ldGVycygKICAgIElDQVNjYW5uZXJTZXRQYXJhbWV0ZXJzUEIqIHBiLAogICAgSUNB
Q29tcGxldGlvbiBjb21wbGV0aW9uCikgOwojIDE3MzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hl
YWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwp0eXBlZGVmIHN0cnVjdCBJQ0FTY2FubmVyU3RhdHVz
UEIgewogICAgSUNBSGVhZGVyIGhlYWRlcjsKICAgIElDQVNjYW5uZXJTZXNzaW9uSUQgc2Vzc2lv
bklEOwogICAgVUludDMyIHN0YXR1czsKfSBJQ0FTY2FubmVyU3RhdHVzUEI7CiMgMTc1MyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdl
Q2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FBcHBsaWNhdGlvbi5oIiAzCmV4dGVybiBJQ0FF
cnJvcgpJQ0FTY2FubmVyU3RhdHVzKAogICAgSUNBU2Nhbm5lclN0YXR1c1BCKiBwYiwKICAgIElD
QUNvbXBsZXRpb24gY29tcGxldGlvbgopIDsKIyAxNzY3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9I
ZWFkZXJzL0lDQUFwcGxpY2F0aW9uLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgSUNBU2Nhbm5lclN0YXJ0
UEIgewogICAgSUNBSGVhZGVyIGhlYWRlcjsKICAgIElDQVNjYW5uZXJTZXNzaW9uSUQgc2Vzc2lv
bklEOwp9IElDQVNjYW5uZXJTdGFydFBCOwojIDE3ODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hl
YWRlcnMvSUNBQXBwbGljYXRpb24uaCIgMwpleHRlcm4gSUNBRXJyb3IKSUNBU2Nhbm5lclN0YXJ0
KAogICAgSUNBU2Nhbm5lclN0YXJ0UEIqIHBiLAogICAgSUNBQ29tcGxldGlvbiBjb21wbGV0aW9u
CikgOwoKCgojcHJhZ21hIHBhY2socG9wKQoKCn0KIyAxNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFtZXdvcmsv
SGVhZGVycy9JbWFnZUNhcHR1cmUuaCIgMiAzCgoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFtZXdvcmsv
SGVhZGVycy9JQ0FEZXZpY2UuaCIgMSAzCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRl
cnMvSUNBRGV2aWNlLmgiIDMKICAgICAgIAoKCiNkZWZpbmUgX19JQ0FERVZJQ0VfXyAKIyAzMCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0lt
YWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FEZXZpY2UuaCIgMwpleHRlcm4gIkMiIHsK
CgojcHJhZ21hIHBhY2socHVzaCwgMikKIyA1NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVy
cy9JQ0FEZXZpY2UuaCIgMwp0eXBlZGVmIHN0cnVjdCBJQ0RIZWFkZXIgewogIElDQUVycm9yIGVy
cjsKICB1bnNpZ25lZCBsb25nIHJlZmNvbjsKfSBJQ0RIZWFkZXI7CiMgNjkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUu
ZnJhbWV3b3JrL0hlYWRlcnMvSUNBRGV2aWNlLmgiIDMKdHlwZWRlZiB2b2lkICggKiBJQ0RDb21w
bGV0aW9uKShJQ0RIZWFkZXIgKiBwYik7CiMgODYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRl
cnMvSUNBRGV2aWNlLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgSUNEX05ld09iamVjdFBCIHsKICBJQ0RI
ZWFkZXIgaGVhZGVyOwogIElDQU9iamVjdCBwYXJlbnRPYmplY3Q7CiAgSUNBT2JqZWN0SW5mbyBv
YmplY3RJbmZvOwogIElDQU9iamVjdCBvYmplY3Q7Cn0gSUNEX05ld09iamVjdFBCOwojIDEwNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0lt
YWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FEZXZpY2UuaCIgMwpleHRlcm4gSUNBRXJy
b3IKSUNETmV3T2JqZWN0KAogICAgSUNEX05ld09iamVjdFBCKiBwYiwKICAgIElDRENvbXBsZXRp
b24gY29tcGxldGlvbgopIDsKIyAxMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNB
RGV2aWNlLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgSUNEX0Rpc3Bvc2VPYmplY3RQQiB7CiAgSUNESGVh
ZGVyIGhlYWRlcjsKICBJQ0FPYmplY3Qgb2JqZWN0Owp9IElDRF9EaXNwb3NlT2JqZWN0UEI7CiMg
MTQzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQURldmljZS5oIiAzCmV4dGVybiBJ
Q0FFcnJvcgpJQ0REaXNwb3NlT2JqZWN0KAogICAgSUNEX0Rpc3Bvc2VPYmplY3RQQiogcGIsCiAg
ICBJQ0RDb21wbGV0aW9uIGNvbXBsZXRpb24KKSA7CgoKCiNwcmFnbWEgcGFjayhwb3ApCgoKfQoj
IDE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0ltYWdlQ2FwdHVyZS5oIiAyIDMKCgoK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29y
a3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lDQUNhbWVyYS5oIiAxIDMKIyAxMiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0lt
YWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FDYW1lcmEuaCIgMwogICAgICAgCgoKI2Rl
ZmluZSBfX0lDQUNBTUVSQV9fIAojIDUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL0ZyYW1ld29ya3MvSW1hZ2VDYXB0dXJlLmZyYW1ld29yay9IZWFkZXJzL0lD
QUNhbWVyYS5oIiAzCmVudW0gewogIGtJQ0FQcm9wZXJ0eUNhbWVyYVN0b3JhZ2VUeXBlID0gJ3N0
b3InLAogIGtJQ0FQcm9wZXJ0eUNhbWVyYUZpbGVzeXN0ZW1UeXBlID0gJ2ZzeXMnLAogIGtJQ0FQ
cm9wZXJ0eUNhbWVyYUFjY2Vzc0NhcGFiaWxpdHkgPSAnYWNhcCcsCiAga0lDQVByb3BlcnR5Q2Ft
ZXJhTWF4Q2FwYWNpdHkgPSAnbWF4YycsCiAga0lDQVByb3BlcnR5Q2FtZXJhRnJlZVNwYWNlSW5C
eXRlcyA9ICdmcmVzJywKICBrSUNBUHJvcGVydHlDYW1lcmFGcmVlU3BhY2VJbkltYWdlcyA9ICdm
cmVpJywKICBrSUNBUHJvcGVydHlDYW1lcmFTdG9yYWdlRGVzY3JpcHRpb24gPSAnc3RvZCcsCiAg
a0lDQVByb3BlcnR5Q2FtZXJhVm9sdW1lTGFiZWwgPSAndm9sbCcKfTsKIyA3OSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVy
ZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FDYW1lcmEuaCIgMwplbnVtIHsKICBrSUNBU3RvcmFnZVVu
ZGVmaW5lZCA9IDB4MDAwMCwKICBrSUNBU3RvcmFnZUZpeGVkUk9NID0gMHgwMDAxLAogIGtJQ0FT
dG9yYWdlUmVtb3ZhYmxlUk9NID0gMHgwMDAyLAogIGtJQ0FTdG9yYWdlRml4ZWRSQU0gPSAweDAw
MDMsCiAga0lDQVN0b3JhZ2VSZW1vdmFibGVSQU0gPSAweDAwMDQKfTsKIyAxMDAgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1
cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQ2FtZXJhLmgiIDMKZW51bSB7CiAga0lDQUZpbGV5c3Rl
bVVuZGVmaW5lZCA9IDB4MDAwMCwKICBrSUNBRmlsZXlzdGVtR2VuZXJpY0ZsYXQgPSAweDAwMDEs
CiAga0lDQUZpbGV5c3RlbUdlbmVyaWNIaWVyYXJjaGljYWwgPSAweDAwMDIsCiAga0lDQUZpbGV5
c3RlbURDRiA9IDB4MDAwMwp9OwojIDExOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2Fy
Ym9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9J
Q0FDYW1lcmEuaCIgMwplbnVtIHsKICBrSUNBQWNjZXNzUmVhZFdyaXRlID0gMHgwMDAwLAogIGtJ
Q0FBY2Nlc3NSZWFkT25seSA9IDB4MDAwMSwKICBrSUNBQWNjZXNzUmVhZE9ubHlXaXRoT2JqZWN0
RGVsZXRpb24gPSAweDAwMDIKfTsKIyAxOTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMv
SUNBQ2FtZXJhLmgiIDMKZW51bQp7CiBrSUNBUHJvcGVydHlDYW1lcmFCYXR0ZXJ5TGV2ZWwgPSAn
NTAwMScsCiBrSUNBUHJvcGVydHlDYW1lcmFGdW5jdGlvbmFsTW9kZSA9ICc1MDAyJywKIGtJQ0FQ
cm9wZXJ0eUNhbWVyYUltYWdlU2l6ZSA9ICc1MDAzJywKIGtJQ0FQcm9wZXJ0eUNhbWVyYUNvbXBy
ZXNzaW9uU2V0dGluZyA9ICc1MDA0JywKIGtJQ0FQcm9wZXJ0eUNhbWVyYVdoaXRlQmFsYW5jZSA9
ICc1MDA1JywKIGtJQ0FQcm9wZXJ0eUNhbWVyYVJHQkdhaW4gPSAnNTAwNicsCiBrSUNBUHJvcGVy
dHlDYW1lcmFGTnVtYmVyID0gJzUwMDcnLAoga0lDQVByb3BlcnR5Q2FtZXJhRm9jYWxMZW5ndGgg
PSAnNTAwOCcsCiBrSUNBUHJvcGVydHlDYW1lcmFGb2N1c0Rpc3RhbmNlID0gJzUwMDknLAoga0lD
QVByb3BlcnR5Q2FtZXJhRm9jdXNNb2RlID0gJzUwMEEnLAoga0lDQVByb3BlcnR5Q2FtZXJhRXhw
b3N1cmVNZXRlcmluZ01vZGUgPSAnNTAwQicsCiBrSUNBUHJvcGVydHlDYW1lcmFGbGFzaE1vZGUg
PSAnNTAwQycsCiBrSUNBUHJvcGVydHlDYW1lcmFFeHBvc3VyZVRpbWUgPSAnNTAwRCcsCiBrSUNB
UHJvcGVydHlDYW1lcmFFeHBvc3VyZVByb2dyYW1Nb2RlID0gJzUwMEUnLAoga0lDQVByb3BlcnR5
Q2FtZXJhRXhwb3N1cmVJbmRleCA9ICc1MDBGJywKIGtJQ0FQcm9wZXJ0eUNhbWVyYUV4cG9zdXJl
Qmlhc0NvbXBlbnNhdGlvbiA9ICc1MDEwJywKIGtJQ0FQcm9wZXJ0eUNhbWVyYURhdGVUaW1lID0g
JzUwMTEnLAoga0lDQVByb3BlcnR5Q2FtZXJhQ2FwdHVyZURlbGF5ID0gJzUwMTInLAoga0lDQVBy
b3BlcnR5Q2FtZXJhU3RpbGxDYXB0dXJlTW9kZSA9ICc1MDEzJywKIGtJQ0FQcm9wZXJ0eUNhbWVy
YUNvbnRyYXN0ID0gJzUwMTQnLAoga0lDQVByb3BlcnR5Q2FtZXJhU2hhcnBuZXNzID0gJzUwMTUn
LAoga0lDQVByb3BlcnR5Q2FtZXJhRGlnaXRhbFpvb20gPSAnNTAxNicsCiBrSUNBUHJvcGVydHlD
YW1lcmFFZmZlY3RNb2RlID0gJzUwMTcnLAoga0lDQVByb3BlcnR5Q2FtZXJhQnVyc3ROdW1iZXIg
PSAnNTAxOCcsCiBrSUNBUHJvcGVydHlDYW1lcmFCdXJzdEludGVydmFsID0gJzUwMTknLAoga0lD
QVByb3BlcnR5Q2FtZXJhVGltZWxhcHNlTnVtYmVyID0gJzUwMUEnLAoga0lDQVByb3BlcnR5Q2Ft
ZXJhVGltZWxhcHNlSW50ZXJ2YWwgPSAnNTAxQicsCiBrSUNBUHJvcGVydHlDYW1lcmFGb2N1c01l
dGVyaW5nTW9kZSA9ICc1MDFDJywKICAgIGtJQ0FQcm9wZXJ0eUNhbWVyYVVwbG9hZFVSTCA9ICc1
MDFEJywKICAgIGtJQ0FQcm9wZXJ0eUNhbWVyYUFydGlzdCA9ICc1MDFFJywKICAgIGtJQ0FQcm9w
ZXJ0eUNhbWVyYUNvcHlyaWdodEluZm8gPSAnNTAxRicKfTsKIyAyMzUgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJh
bWV3b3JrL0hlYWRlcnMvSUNBQ2FtZXJhLmgiIDMKZW51bQp7CiBrSUNBUHJvcGVydHlDYW1lcmFJ
Y29uID0gJ2ljb24nLAoga0lDQVByb3BlcnR5Q2FtZXJhU3VwcG9ydGVkTWVzc2FnZXMgPSAnbXNn
cycKfTsKIyAyNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
RnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSUNBQ2FtZXJhLmgiIDMK
ZW51bQp7CiBrSUNBTWVzc2FnZUNhbWVyYUNhcHR1cmVOZXdJbWFnZSA9ICdjY25pJywKICAgIGtJ
Q0FNZXNzYWdlQ2FtZXJhRGVsZXRlT25lID0gJ2RlbDEnLAogICAga0lDQU1lc3NhZ2VDYW1lcmFE
ZWxldGVBbGwgPSAnZGVsYScsCiAgICBrSUNBTWVzc2FnZUNhbWVyYVN5bmNDbG9jayA9ICdzY2xr
JywKICAgIGtJQ0FNZXNzYWdlQ2FtZXJhVXBsb2FkRGF0YSA9ICdsb2FkJwp9OwojIDI4MCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0ltYWdl
Q2FwdHVyZS5mcmFtZXdvcmsvSGVhZGVycy9JQ0FDYW1lcmEuaCIgMwplbnVtCnsKIGtJQ0FDYXBh
YmlsaXR5Q2FuQ2FtZXJhQ2FwdHVyZU5ld0ltYWdlID0gJ2NjbmknLAogICAga0lDQUNhcGFiaWxp
dHlDYW5DYW1lcmFEZWxldGVPbmUgPSAnZGVsMScsCiAgICBrSUNBQ2FwYWJpbGl0eUNhbkNhbWVy
YURlbGV0ZUFsbCA9ICdkZWxhJywKICAgIGtJQ0FDYXBhYmlsaXR5Q2FuQ2FtZXJhU3luY0Nsb2Nr
ID0gJ3NjbGsnLAogICAga0lDQUNhcGFiaWxpdHlDYW5DYW1lcmFVcGxvYWREYXRhID0gJ2xvYWQn
LAogICAga0lDQUNhcGFiaWxpdHlNYXlTdG9yZU5ld0ltYWdlc0luVGVtcFN0b3JlID0gJ3RlbXAn
Cn07CiMgMjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL0hlYWRlcnMvSW1hZ2VDYXB0dXJlLmgiIDIg
MwojIDgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0hlYWRl
cnMvQ2FyYm9uLmgiIDIgMwojIDM1ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSIgMgojIDEgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL3B3cl9tZ3QvSU9QTUxpYi5oIiAx
IDMKIyAyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRl
cnMvcHdyX21ndC9JT1BNTGliLmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9J
T0tpdC5mcmFtZXdvcmsvSGVhZGVycy9wd3JfbWd0L0lPUE1MaWJEZWZzLmgiIDEgMwojIDMwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9wd3JfbWd0
L0lPUE1MaWJEZWZzLmgiIDMKI2RlZmluZSBrUE1TZXRBZ2dyZXNzaXZlbmVzcyAwCiNkZWZpbmUg
a1BNR2V0QWdncmVzc2l2ZW5lc3MgMQojZGVmaW5lIGtQTVNsZWVwU3lzdGVtIDIKI2RlZmluZSBr
UE1BbGxvd1Bvd2VyQ2hhbmdlIDMKI2RlZmluZSBrUE1DYW5jZWxQb3dlckNoYW5nZSA0CiNkZWZp
bmUga1BNU2h1dGRvd25TeXN0ZW0gNQojZGVmaW5lIGtQTVJlc3RhcnRTeXN0ZW0gNgojZGVmaW5l
IGtQTVNsZWVwU3lzdGVtT3B0aW9ucyA3CiNkZWZpbmUga1BNU2V0TWFpbnRlbmFuY2VXYWtlQ2Fs
ZW5kYXIgOAoKI2RlZmluZSBrTnVtUE1NZXRob2RzIDkKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvcHdyX21ndC9JT1BNTGliLmgiIDIgMwoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9IZWFkZXJzL3B3
cl9tZ3QvSU9QTUtleXMuaCIgMSAzCiMgMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lP
S2l0LmZyYW1ld29yay9IZWFkZXJzL3B3cl9tZ3QvSU9QTUtleXMuaCIgMwojZGVmaW5lIF9JT1BN
S0VZU19IXyAKIyA0NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvcHdyX21ndC9JT1BNS2V5cy5oIiAzCiNkZWZpbmUga0lPUE1BdXRvV2FrZSAid2Fr
ZSIKCgoKCgojZGVmaW5lIGtJT1BNQXV0b1Bvd2VyT24gInBvd2Vyb24iCgoKCgoKCgojZGVmaW5l
IGtJT1BNQXV0b1dha2VPclBvd2VyT24gIndha2Vwb3dlcm9uIgoKCgoKCiNkZWZpbmUga0lPUE1B
dXRvU2xlZXAgInNsZWVwIgoKCgoKCiNkZWZpbmUga0lPUE1BdXRvU2h1dGRvd24gInNodXRkb3du
IgoKCgoKCiNkZWZpbmUga0lPUE1BdXRvUmVzdGFydCAicmVzdGFydCIKIyA4NiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvcHdyX21ndC9JT1BNS2V5
cy5oIiAzCiNkZWZpbmUga0lPUE1Qb3dlckV2ZW50VGltZUtleSAidGltZSIKCgoKCgojZGVmaW5l
IGtJT1BNUG93ZXJFdmVudEFwcE5hbWVLZXkgInNjaGVkdWxlZGJ5IgoKCgoKCiNkZWZpbmUga0lP
UE1Qb3dlckV2ZW50VHlwZUtleSAiZXZlbnR0eXBlIgojIDI4ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9wd3JfbWd0L0lPUE1MaWIuaCIgMiAzCgoK
CiNkZWZpbmUgX0lPS0lUX1BXUk1HVF9JT1BNTElCXyAKCgpleHRlcm4gIkMiIHsKIyA0OSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvcHdyX21ndC9J
T1BNTGliLmgiIDMKaW9fY29ubmVjdF90IElPUE1GaW5kUG93ZXJNYW5hZ2VtZW50KCBtYWNoX3Bv
cnRfdCBtYXN0ZXJfZGV2aWNlX3BvcnQgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoj
IDU5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9w
d3JfbWd0L0lPUE1MaWIuaCIgMwpJT1JldHVybiBJT1BNU2V0QWdncmVzc2l2ZW5lc3MgKGlvX2Nv
bm5lY3RfdCBmYiwgdW5zaWduZWQgbG9uZyB0eXBlLCB1bnNpZ25lZCBsb25nIGFnZ3Jlc3NpdmVu
ZXNzICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKIyA2OSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMvcHdyX21ndC9JT1BNTGliLmgiIDMK
SU9SZXR1cm4gSU9QTUdldEFnZ3Jlc3NpdmVuZXNzICggaW9fY29ubmVjdF90IGZiLCB1bnNpZ25l
ZCBsb25nIHR5cGUsIHVuc2lnbmVkIGxvbmcgKiBhZ2dyZXNzaXZlbmVzcyApCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CgoKCgoKYm9vbGVhbl90IElPUE1TbGVlcEVuYWJsZWQgKCB2b2lk
ICkgOwoKCgoKCgoKSU9SZXR1cm4gSU9QTVNsZWVwU3lzdGVtICggaW9fY29ubmVjdF90IGZiICkg
OwojIDkzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVy
cy9wd3JfbWd0L0lPUE1MaWIuaCIgMwpJT1JldHVybiBJT1BNQ29weUJhdHRlcnlJbmZvKCBtYWNo
X3BvcnRfdCBtYXN0ZXJQb3J0LCBDRkFycmF5UmVmICogaW5mbyApCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CiMgMTEzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFt
ZXdvcmsvSGVhZGVycy9wd3JfbWd0L0lPUE1MaWIuaCIgMwppb19jb25uZWN0X3QgSU9SZWdpc3Rl
ckFwcCggdm9pZCAqIHJlZmNvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX3NlcnZp
Y2VfdCB0aGVEcml2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT05vdGlmaWNhdGlv
blBvcnRSZWYgKiB0aGVQb3J0UmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9TZXJ2
aWNlSW50ZXJlc3RDYWxsYmFjayBjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlvX29iamVjdF90ICogbm90aWZpZXIgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoj
IDE2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL0hlYWRlcnMv
cHdyX21ndC9JT1BNTGliLmgiIDMKaW9fY29ubmVjdF90IElPUmVnaXN0ZXJGb3JTeXN0ZW1Qb3dl
ciAoIHZvaWQgKiByZWZjb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJT05vdGlmaWNhdGlvblBvcnRSZWYgKiB0aGVQb3J0UmVmLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSU9TZXJ2aWNlSW50ZXJlc3RDYWxsYmFjayBjYWxsYmFjaywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX29iamVjdF90ICogbm90
aWZpZXIgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKCklP
UmV0dXJuIElPRGVyZWdpc3RlckFwcCAoIGlvX29iamVjdF90ICogbm90aWZpZXIgKSA7CgoKCgoK
CklPUmV0dXJuIElPRGVyZWdpc3RlckZvclN5c3RlbVBvd2VyICggaW9fb2JqZWN0X3QgKiBub3Rp
ZmllciApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiMgMTkyICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9wd3JfbWd0L0lPUE1MaWIuaCIg
MwpJT1JldHVybiBJT0FsbG93UG93ZXJDaGFuZ2UgKCBpb19jb25uZWN0X3Qga2VybmVsUG9ydCwg
bG9uZyBub3RpZmljYXRpb25JRCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiMgMjA4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9wd3Jf
bWd0L0lPUE1MaWIuaCIgMwpJT1JldHVybiBJT0NhbmNlbFBvd2VyQ2hhbmdlICggaW9fY29ubmVj
dF90IGtlcm5lbFBvcnQsIGxvbmcgbm90aWZpY2F0aW9uSUQgKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwojIDIyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3
b3JrL0hlYWRlcnMvcHdyX21ndC9JT1BNTGliLmgiIDMKSU9SZXR1cm4gSU9QTVNjaGVkdWxlUG93
ZXJFdmVudChDRkRhdGVSZWYgdGltZV90b193YWtlLCBDRlN0cmluZ1JlZiBteV9pZCwgQ0ZTdHJp
bmdSZWYgdHlwZSk7CiMgMjM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFt
ZXdvcmsvSGVhZGVycy9wd3JfbWd0L0lPUE1MaWIuaCIgMwpJT1JldHVybiBJT1BNQ2FuY2VsU2No
ZWR1bGVkUG93ZXJFdmVudChDRkRhdGVSZWYgdGltZV90b193YWtlLCBDRlN0cmluZ1JlZiBteV9p
ZCwgQ0ZTdHJpbmdSZWYgdHlwZSk7CgoKCgoKCkNGQXJyYXlSZWYgSU9QTUNvcHlTY2hlZHVsZWRQ
b3dlckV2ZW50cyh2b2lkKTsKIyAyNTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0
LmZyYW1ld29yay9IZWFkZXJzL3B3cl9tZ3QvSU9QTUxpYi5oIiAzCiNkZWZpbmUga0lPUE1Bc3Nl
cnRpb25UeXBlTm9JZGxlU2xlZXAgQ0ZTVFIoIk5vSWRsZVNsZWVwQXNzZXJ0aW9uIikKCgoKCgoj
ZGVmaW5lIGtJT1BNQXNzZXJ0aW9uVHlwZU5vRGlzcGxheVNsZWVwIENGU1RSKCJOb0Rpc3BsYXlT
bGVlcEFzc2VydGlvbiIpCgoKCgoKdHlwZWRlZiB1aW50MzJfdCBJT1BNQXNzZXJ0aW9uSUQ7CgoK
CgoKZW51bSB7CiAgICBrSU9QTU51bGxBc3NlcnRpb25JRCA9IDAKfTsKCgoKCgp0eXBlZGVmIHVp
bnQzMl90IElPUE1Bc3NlcnRpb25MZXZlbDsKCgoKCmVudW0gewoKCgoKICAgIGtJT1BNQXNzZXJ0
aW9uTGV2ZWxPZmYgPSAwLAoKCgoKCiAgICBrSU9QTUFzc2VydGlvbkxldmVsT24gPSAyNTUKIH07
CgoKCgoKCgojZGVmaW5lIGtJT1BNQXNzZXJ0aW9uVHlwZUtleSBDRlNUUigiQXNzZXJ0VHlwZSIp
CgoKCgoKI2RlZmluZSBrSU9QTUFzc2VydGlvbkxldmVsS2V5IENGU1RSKCJBc3NlcnRMZXZlbCIp
CgoKCgoKCgojZGVmaW5lIGtJT1BNQXNzZXJ0aW9uTmFtZUtleSBDRlNUUigiQXNzZXJ0TmFtZSIp
CiMgMzM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVy
cy9wd3JfbWd0L0lPUE1MaWIuaCIgMwpJT1JldHVybiBJT1BNQXNzZXJ0aW9uQ3JlYXRlKENGU3Ry
aW5nUmVmIEFzc2VydGlvblR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIElPUE1Bc3Nl
cnRpb25MZXZlbCBBc3NlcnRpb25MZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9Q
TUFzc2VydGlvbklEICpBc3NlcnRpb25JRCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18oKGRlcHJlY2F0ZWQsdmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMzYwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9wd3JfbWd0
L0lPUE1MaWIuaCIgMwpJT1JldHVybiBJT1BNQXNzZXJ0aW9uQ3JlYXRlV2l0aE5hbWUoCiAgICAg
ICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIEFzc2VydGlvblR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgIElPUE1Bc3NlcnRpb25MZXZlbCBBc3NlcnRpb25MZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgQXNzZXJ0aW9uTmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgSU9QTUFzc2VydGlvbklEICpBc3NlcnRpb25JRCkKICAgICAgICAgICAgICAgICAg
ICAgICAgOwojIDM3NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvcHdyX21ndC9JT1BNTGliLmgiIDMKSU9SZXR1cm4gSU9QTUFzc2VydGlvblJlbGVh
c2UoSU9QTUFzc2VydGlvbklEIEFzc2VydGlvbklEKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CiMgMzkwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVh
ZGVycy9wd3JfbWd0L0lPUE1MaWIuaCIgMwpJT1JldHVybiBJT1BNQ29weUFzc2VydGlvbnNCeVBy
b2Nlc3MoQ0ZEaWN0aW9uYXJ5UmVmICpBc3NlcnRpb25zQnlQSUQpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CiMgNDA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFt
ZXdvcmsvSGVhZGVycy9wd3JfbWd0L0lPUE1MaWIuaCIgMwpJT1JldHVybiBJT1BNQ29weUFzc2Vy
dGlvbnNTdGF0dXMoQ0ZEaWN0aW9uYXJ5UmVmICpBc3NlcnRpb25zU3RhdHVzKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwojIDQxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9L
aXQuZnJhbWV3b3JrL0hlYWRlcnMvcHdyX21ndC9JT1BNTGliLmgiIDMKI2RlZmluZSBrSU9TeXN0
ZW1Mb2FkQWR2aXNvcnlOb3RpZnlOYW1lICJjb20uYXBwbGUuc3lzdGVtLnBvd2VybWFuYWdlbWVu
dC5TeXN0ZW1Mb2FkQWR2aXNvcnkiCgoKCgoKCnR5cGVkZWYgaW50IElPU3lzdGVtTG9hZEFkdmlz
b3J5TGV2ZWw7CgplbnVtIHsKICAgIGtJT1N5c3RlbUxvYWRBZHZpc29yeUxldmVsQmFkID0gMSwK
ICAgIGtJT1N5c3RlbUxvYWRBZHZpc29yeUxldmVsT0sgPSAyLAogICAga0lPU3lzdGVtTG9hZEFk
dmlzb3J5TGV2ZWxHcmVhdCA9IDMKfTsKCgoKCgojZGVmaW5lIGtJT1N5c3RlbUxvYWRBZHZpc29y
eVVzZXJMZXZlbEtleSBDRlNUUigiVXNlckxldmVsIikKCgoKCgojZGVmaW5lIGtJT1N5c3RlbUxv
YWRBZHZpc29yeUJhdHRlcnlMZXZlbEtleSBDRlNUUigiQmF0dGVyeUxldmVsIikKCgoKCgojZGVm
aW5lIGtJT1N5c3RlbUxvYWRBZHZpc29yeVRoZXJtYWxMZXZlbEtleSBDRlNUUigiVGhlcm1hbExl
dmVsIikKIyA0NTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9I
ZWFkZXJzL3B3cl9tZ3QvSU9QTUxpYi5oIiAzCiNkZWZpbmUga0lPU3lzdGVtTG9hZEFkdmlzb3J5
Q29tYmluZWRMZXZlbEtleSBDRlNUUigiQ29tYmluZWRMZXZlbCIpCiMgNDg0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvSGVhZGVycy9wd3JfbWd0L0lPUE1MaWIu
aCIgMwpJT1N5c3RlbUxvYWRBZHZpc29yeUxldmVsIElPR2V0U3lzdGVtTG9hZEFkdmlzb3J5KCB2
b2lkICk7CiMgNDk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsv
SGVhZGVycy9wd3JfbWd0L0lPUE1MaWIuaCIgMwpDRkRpY3Rpb25hcnlSZWYgSU9Db3B5U3lzdGVt
TG9hZEFkdmlzb3J5RGV0YWlsZWQodm9pZCk7CgoKCgp9CiMgMzYgIi4uLy4uLy4uL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tIiAyCiMg
MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRL
aXQuaCIgMSAzCiMgMTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29y
ay9IZWFkZXJzL1FUS2l0LmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9RVEtpdERlZmluZXMuaCIgMSAzCiMgMzYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUS2l0RGVmaW5lcy5oIiAz
CiN1bmRlZiBNQUNfT1NfWF9WRVJTSU9OXzEwXzQKI2RlZmluZSBNQUNfT1NfWF9WRVJTSU9OXzEw
XzQgMTA0MAoKCgoKCiN1bmRlZiBNQUNfT1NfWF9WRVJTSU9OXzEwXzUKI2RlZmluZSBNQUNfT1Nf
WF9WRVJTSU9OXzEwXzUgMTA1MAoKCgoKCiN1bmRlZiBNQUNfT1NfWF9WRVJTSU9OXzEwXzYKI2Rl
ZmluZSBNQUNfT1NfWF9WRVJTSU9OXzEwXzYgMTA2MAojIDg2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVEtpdERlZmluZXMuaCIgMwojZGVmaW5l
IFFUS0lUX1ZFUlNJT05fN18wIDcwMDAwCiNkZWZpbmUgUVRLSVRfVkVSU0lPTl83XzIgNzAyMDAK
I2RlZmluZSBRVEtJVF9WRVJTSU9OXzdfNl8zIDcwNjAzCiNkZWZpbmUgUVRLSVRfVkVSU0lPTl83
XzZfNiA3MDYwNgoKCgojZGVmaW5lIFFUS0lUX1ZFUlNJT05fTUlOX1JFUVVJUkVEIFFUS0lUX1ZF
UlNJT05fN182XzMKIyAxMDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1l
d29yay9IZWFkZXJzL1FUS2l0RGVmaW5lcy5oIiAzCiNkZWZpbmUgUVRLSVRfVkVSU0lPTl9NQVhf
QUxMT1dFRCBRVEtJVF9WRVJTSU9OXzdfNl82CiMgMTIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVEtpdERlZmluZXMuaCIgMwojZGVmaW5lIEFW
QUlMQUJMRV9RVEtJVF9WRVJTSU9OXzdfMF9BTkRfTEFURVIgCiMgMTM2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVEtpdERlZmluZXMuaCIgMwoj
ZGVmaW5lIEFWQUlMQUJMRV9RVEtJVF9WRVJTSU9OXzdfMl9BTkRfTEFURVIgCiMgMTQ2ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVEtpdERlZmlu
ZXMuaCIgMwojZGVmaW5lIEFWQUlMQUJMRV9RVEtJVF9WRVJTSU9OXzdfMF9BTkRfTEFURVJfQlVU
X0RFUFJFQ0FURURfSU5fUVRLSVRfVkVSU0lPTl83XzIgREVQUkVDQVRFRF9BVFRSSUJVVEUKIyAx
NjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FU
S2l0RGVmaW5lcy5oIiAzCiNkZWZpbmUgQVZBSUxBQkxFX1FUS0lUX1ZFUlNJT05fN182XzNfQU5E
X0xBVEVSIAojIDE3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvUVRLaXREZWZpbmVzLmgiIDMKI2RlZmluZSBBVkFJTEFCTEVfUVRLSVRfVkVSU0lP
Tl83XzZfNl9BTkRfTEFURVIgV0VBS19JTVBPUlRfQVRUUklCVVRFCiMgMTg1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVEtpdERlZmluZXMuaCIg
MwojZGVmaW5lIEFWQUlMQUJMRV9RVEtJVF9WRVJTSU9OXzdfMF9BTkRfTEFURVJfQlVUX0RFUFJF
Q0FURURfSU5fUVRLSVRfVkVSU0lPTl83XzZfMyBERVBSRUNBVEVEX0FUVFJJQlVURQojIDE5NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRLaXRE
ZWZpbmVzLmgiIDMKI2RlZmluZSBBVkFJTEFCTEVfUVRLSVRfVkVSU0lPTl83XzJfQU5EX0xBVEVS
X0JVVF9ERVBSRUNBVEVEX0lOX1FUS0lUX1ZFUlNJT05fN182XzMgREVQUkVDQVRFRF9BVFRSSUJV
VEUKCgoKCgojZGVmaW5lIFFUS0lUX0VYVEVSTiBleHRlcm4gIkMiCgoKCgojZGVmaW5lIFFUS0lU
X0hJRERFTiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCiMgMjMzICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVEtpdERlZmlu
ZXMuaCIgMwplbnVtIHsKIGtRVEZpbGVUeXBlQUlGRiA9ICdBSUZGJywKIGtRVEZpbGVUeXBlQUlG
QyA9ICdBSUZDJywKIGtRVEZpbGVUeXBlRFZDID0gJ2R2YyEnLAoga1FURmlsZVR5cGVNSURJID0g
J01pZGknLAoga1FURmlsZVR5cGVQaWN0dXJlID0gJ1BJQ1QnLAoga1FURmlsZVR5cGVNb3ZpZSA9
ICdNb29WJywKIGtRVEZpbGVUeXBlVGV4dCA9ICdURVhUJywKIGtRVEZpbGVUeXBlV2F2ZSA9ICdX
QVZFJywKIGtRVEZpbGVUeXBlU3lzdGVtU2V2ZW5Tb3VuZCA9ICdzZmlsJywKIGtRVEZpbGVUeXBl
TXVMYXcgPSAnVUxBVycsCiBrUVRGaWxlVHlwZUFWSSA9ICdWZlcgJywKIGtRVEZpbGVUeXBlU291
bmREZXNpZ25lcklJID0gJ1NkMmYnLAoga1FURmlsZVR5cGVBdWRpb0NEVHJhY2sgPSAndHJhaycs
CiBrUVRGaWxlVHlwZVBJQ1MgPSAnUElDUycsCiBrUVRGaWxlVHlwZUdJRiA9ICdHSUZmJywKIGtR
VEZpbGVUeXBlUE5HID0gJ1BOR2YnLAoga1FURmlsZVR5cGVUSUZGID0gJ1RJRkYnLAoga1FURmls
ZVR5cGVQaG90b1Nob3AgPSAnOEJQUycsCiBrUVRGaWxlVHlwZVNHSUltYWdlID0gJy5TR0knLAog
a1FURmlsZVR5cGVCTVAgPSAnQk1QZicsCiBrUVRGaWxlVHlwZUpQRUcgPSAnSlBFRycsCiBrUVRG
aWxlVHlwZUpGSUYgPSAnSlBFRycsCiBrUVRGaWxlVHlwZU1hY1BhaW50ID0gJ1BOVEcnLAoga1FU
RmlsZVR5cGVUYXJnYUltYWdlID0gJ1RQSUMnLAoga1FURmlsZVR5cGVRdWlja0RyYXdHWFBpY3R1
cmUgPSAncWRneCcsCiBrUVRGaWxlVHlwZVF1aWNrVGltZUltYWdlID0gJ3F0aWYnLAoga1FURmls
ZVR5cGUzRE1GID0gJzNETUYnLAoga1FURmlsZVR5cGVGTEMgPSAnRkxDICcsCiBrUVRGaWxlVHlw
ZUZsYXNoID0gJ1NXRkwnLAoga1FURmlsZVR5cGVGbGFzaFBpeCA9ICdGUGl4JywKIGtRVEZpbGVU
eXBlTVA0ID0gJ21wZzQnLAoga1FURmlsZVR5cGVQREYgPSAnUERGICcsCiBrUVRGaWxlVHlwZTNH
UFAgPSAnM2dwcCcsCiBrUVRGaWxlVHlwZUFNUiA9ICdhbXIgJywKIGtRVEZpbGVUeXBlU0RWID0g
J3NkdiAnLAoga1FURmlsZVR5cGUzR1AyID0gJzNncDInLAoga1FURmlsZVR5cGVBTUMgPSAnYW1j
ICcsCiBrUVRGaWxlVHlwZUpQRUcyMDAwID0gJ2pwMiAnCn07CgoKZW51bSB7CiBjb2RlY0xvc3Ns
ZXNzUXVhbGl0eSA9IDB4MDAwMDA0MDAsCiBjb2RlY01heFF1YWxpdHkgPSAweDAwMDAwM0ZGLAog
Y29kZWNNaW5RdWFsaXR5ID0gMHgwMDAwMDAwMCwKIGNvZGVjTG93UXVhbGl0eSA9IDB4MDAwMDAx
MDAsCiBjb2RlY05vcm1hbFF1YWxpdHkgPSAweDAwMDAwMjAwLAogY29kZWNIaWdoUXVhbGl0eSA9
IDB4MDAwMDAzMDAKfTsKCmVudW0gewogZ3JhcGhpY3NNb2RlU3RyYWlnaHRBbHBoYSA9IDI1NiwK
IGdyYXBoaWNzTW9kZVByZVdoaXRlQWxwaGEgPSAyNTcsCiBncmFwaGljc01vZGVQcmVCbGFja0Fs
cGhhID0gMjU4LAogZ3JhcGhpY3NNb2RlQ29tcG9zaXRpb24gPSAyNTksCiBncmFwaGljc01vZGVT
dHJhaWdodEFscGhhQmxlbmQgPSAyNjAsCiBncmFwaGljc01vZGVQcmVNdWxDb2xvckFscGhhID0g
MjYxLAogZ3JhcGhpY3NNb2RlUGVyQ29tcG9uZW50QWxwaGEgPSAyNzIKfTsKIyAxMSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRLaXQuaCIgMiAz
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
UVRFcnJvci5oIiAxIDMKIyAxMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvUVRFcnJvci5oIiAzCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBR
VEtpdEVycm9yRG9tYWluIDsKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVEVycm9yQ2Fw
dHVyZUlucHV0S2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFURXJyb3JDYXB0dXJl
T3V0cHV0S2V5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFURXJyb3JEZXZpY2VLZXkg
OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRFcnJvckV4Y2x1ZGluZ0RldmljZUtleSA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVEVycm9yVGltZUtleSA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBRVEVycm9yRmlsZVNpemVLZXkgOwpleHRlcm4gIkMiIE5TU3RyaW5n
ICogY29uc3QgUVRFcnJvclJlY29yZGluZ1N1Y2Nlc2Z1bGx5RmluaXNoZWRLZXkgOwoKZW51bSB7
CiBRVEVycm9yVW5rbm93biA9IC0xLAogUVRFcnJvckluY29tcGF0aWJsZUlucHV0ID0gMTAwMiwK
IFFURXJyb3JJbmNvbXBhdGlibGVPdXRwdXQgPSAxMDAzLAogUVRFcnJvckludmFsaWRJbnB1dHNP
ck91dHB1dHMgPSAxMTAwLAogUVRFcnJvckRldmljZUFscmVhZHlVc2VkYnlBbm90aGVyU2Vzc2lv
biA9IDExMDEsCiBRVEVycm9yTm9EYXRhQ2FwdHVyZWQgPSAxMjAwLAogUVRFcnJvclNlc3Npb25D
b25maWd1cmF0aW9uQ2hhbmdlZCA9IDEyMDEsCiBRVEVycm9yRGlza0Z1bGwgPSAxMjAyLAogUVRF
cnJvckRldmljZVdhc0Rpc2Nvbm5lY3RlZCA9IDEyMDMsCiBRVEVycm9yTWVkaWFDaGFuZ2VkID0g
MTIwNCwKIFFURXJyb3JNYXhpbXVtRHVyYXRpb25SZWFjaGVkID0gMTIwNSwKIFFURXJyb3JNYXhp
bXVtRmlsZVNpemVSZWFjaGVkID0gMTIwNiwKIFFURXJyb3JNZWRpYURpc2NvbnRpbnVpdHkgPSAx
MjA3LAoKICAgIFFURXJyb3JNYXhpbXVtTnVtYmVyT2ZTYW1wbGVzRm9yRmlsZUZvcm1hdFJlYWNo
ZWQgPSAxMjA4LAoKIFFURXJyb3JEZXZpY2VOb3RDb25uZWN0ZWQgPSAxMzAwLAogUVRFcnJvckRl
dmljZUluVXNlQnlBbm90aGVyQXBwbGljYXRpb24gPSAxMzAxLAogUVRFcnJvckRldmljZUV4Y2x1
ZGVkQnlBbm90aGVyRGV2aWNlID0gMTMwMiwKfTsKIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRLaXQuaCIgMiAzCgojIDEgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FURGF0YVJlZmVyZW5j
ZS5oIiAxIDMKIyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvUVREYXRhUmVmZXJlbmNlLmgiIDMKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0
IFFURGF0YVJlZmVyZW5jZVR5cGVGaWxlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFU
RGF0YVJlZmVyZW5jZVR5cGVIYW5kbGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRE
YXRhUmVmZXJlbmNlVHlwZVBvaW50ZXIgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRE
YXRhUmVmZXJlbmNlVHlwZVJlc291cmNlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFU
RGF0YVJlZmVyZW5jZVR5cGVVUkwgOwoKQGludGVyZmFjZSBRVERhdGFSZWZlcmVuY2UgOiBOU09i
amVjdCA8TlNDb2Rpbmc+CnsKQHByaXZhdGUKCiBpbnQzMl90IF9wcm94eTsKIyAzNSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVREYXRhUmVmZXJl
bmNlLmgiIDMKIGxvbmcgX3Jlc2VydmVkMTsKIGxvbmcgX3Jlc2VydmVkMjsKIGxvbmcgX3Jlc2Vy
dmVkMzsKfQoKCisgKGlkKWRhdGFSZWZlcmVuY2VXaXRoRGF0YVJlZjooSGFuZGxlKWRhdGFSZWYg
dHlwZTooTlNTdHJpbmcgKil0eXBlOworIChpZClkYXRhUmVmZXJlbmNlV2l0aERhdGFSZWZEYXRh
OihOU0RhdGEgKilkYXRhUmVmRGF0YSB0eXBlOihOU1N0cmluZyAqKXR5cGU7CisgKGlkKWRhdGFS
ZWZlcmVuY2VXaXRoUmVmZXJlbmNlVG9GaWxlOihOU1N0cmluZyAqKWZpbGVOYW1lOworIChpZClk
YXRhUmVmZXJlbmNlV2l0aFJlZmVyZW5jZVRvVVJMOihOU1VSTCAqKXVybDsKKyAoaWQpZGF0YVJl
ZmVyZW5jZVdpdGhSZWZlcmVuY2VUb0RhdGE6KE5TRGF0YSAqKWRhdGE7CisgKGlkKWRhdGFSZWZl
cmVuY2VXaXRoUmVmZXJlbmNlVG9EYXRhOihOU0RhdGEgKilkYXRhIG5hbWU6KE5TU3RyaW5nICop
bmFtZSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZTsKCgotIChpZClpbml0V2l0aERhdGFS
ZWY6KEhhbmRsZSlkYXRhUmVmIHR5cGU6KE5TU3RyaW5nICopdHlwZTsKLSAoaWQpaW5pdFdpdGhE
YXRhUmVmRGF0YTooTlNEYXRhICopZGF0YVJlZkRhdGEgdHlwZTooTlNTdHJpbmcgKil0eXBlOwot
IChpZClpbml0V2l0aFJlZmVyZW5jZVRvRmlsZTooTlNTdHJpbmcgKilmaWxlTmFtZTsKLSAoaWQp
aW5pdFdpdGhSZWZlcmVuY2VUb1VSTDooTlNVUkwgKil1cmw7Ci0gKGlkKWluaXRXaXRoUmVmZXJl
bmNlVG9EYXRhOihOU0RhdGEgKilkYXRhOwotIChpZClpbml0V2l0aFJlZmVyZW5jZVRvRGF0YToo
TlNEYXRhICopZGF0YSBuYW1lOihOU1N0cmluZyAqKW5hbWUgTUlNRVR5cGU6KE5TU3RyaW5nICop
TUlNRVR5cGU7CgoKLSAoSGFuZGxlKWRhdGFSZWY7Ci0gKE5TRGF0YSAqKWRhdGFSZWZEYXRhOwot
IChOU1N0cmluZyAqKWRhdGFSZWZUeXBlOwotIChOU1N0cmluZyAqKXJlZmVyZW5jZUZpbGU7Ci0g
KE5TVVJMICopcmVmZXJlbmNlVVJMOwotIChOU0RhdGEgKilyZWZlcmVuY2VEYXRhOwotIChOU1N0
cmluZyAqKW5hbWU7Ci0gKE5TU3RyaW5nICopTUlNRVR5cGU7CgoKLSAodm9pZClzZXREYXRhUmVm
OihIYW5kbGUpZGF0YVJlZjsKLSAodm9pZClzZXREYXRhUmVmVHlwZTooTlNTdHJpbmcgKil0eXBl
OwoKQGVuZAojIDE0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9RVEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDEgMwojIDM3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKIyAxICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVFRpbWUuaCIg
MSAzCiMgMTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFk
ZXJzL1FUVGltZS5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUF1ZGlv
LmZyYW1ld29yay9IZWFkZXJzL0NvcmVBdWRpb1R5cGVzLmgiIDEgMwojIDE1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUF1ZGlvVHlw
ZXMuaCIgMwojZGVmaW5lIF9fQ29yZUF1ZGlvVHlwZXNfaF9fIAojIDI0ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUF1ZGlvVHlwZXMu
aCIgMwojZGVmaW5lIENPUkVBVURJT1RZUEVTX1ZFUlNJT04gMTA1MQojIDQxICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUF1ZGlvVHlw
ZXMuaCIgMwojZGVmaW5lIENBX1BSRUZFUl9GSVhFRF9QT0lOVCAwCiMgNTYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVBdWRpby5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQXVkaW9UeXBl
cy5oIiAzCmV4dGVybiAiQyIKewojIDcxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
QXVkaW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUF1ZGlvVHlwZXMuaCIgMwpzdHJ1Y3QgQXVkaW9W
YWx1ZVJhbmdlCnsKICAgIEZsb2F0NjQgbU1pbmltdW07CiAgICBGbG9hdDY0IG1NYXhpbXVtOwp9
Owp0eXBlZGVmIHN0cnVjdCBBdWRpb1ZhbHVlUmFuZ2UgQXVkaW9WYWx1ZVJhbmdlOwojIDkwICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29y
ZUF1ZGlvVHlwZXMuaCIgMwpzdHJ1Y3QgQXVkaW9WYWx1ZVRyYW5zbGF0aW9uCnsKICAgIHZvaWQq
IG1JbnB1dERhdGE7CiAgICBVSW50MzIgbUlucHV0RGF0YVNpemU7CiAgICB2b2lkKiBtT3V0cHV0
RGF0YTsKICAgIFVJbnQzMiBtT3V0cHV0RGF0YVNpemU7Cn07CnR5cGVkZWYgc3RydWN0IEF1ZGlv
VmFsdWVUcmFuc2xhdGlvbiBBdWRpb1ZhbHVlVHJhbnNsYXRpb247CiMgMTA5ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUF1ZGlvVHlw
ZXMuaCIgMwpzdHJ1Y3QgQXVkaW9CdWZmZXIKewogICAgVUludDMyIG1OdW1iZXJDaGFubmVsczsK
ICAgIFVJbnQzMiBtRGF0YUJ5dGVTaXplOwogICAgdm9pZCogbURhdGE7Cn07CnR5cGVkZWYgc3Ry
dWN0IEF1ZGlvQnVmZmVyIEF1ZGlvQnVmZmVyOwojIDEyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZUF1ZGlvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVBdWRpb1R5cGVzLmgiIDMKc3Ry
dWN0IEF1ZGlvQnVmZmVyTGlzdAp7CiAgICBVSW50MzIgbU51bWJlckJ1ZmZlcnM7CiAgICBBdWRp
b0J1ZmZlciBtQnVmZmVyc1sxXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgQXVkaW9CdWZmZXJMaXN0IEF1
ZGlvQnVmZmVyTGlzdDsKCgoKCgoKdHlwZWRlZiBGbG9hdDMyIEF1ZGlvU2FtcGxlVHlwZTsKdHlw
ZWRlZiBGbG9hdDMyIEF1ZGlvVW5pdFNhbXBsZVR5cGU7CiMgMTgzICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUF1ZGlvVHlwZXMuaCIg
MwpzdHJ1Y3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uCnsKICAgIEZsb2F0NjQgbVNhbXBs
ZVJhdGU7CiAgICBVSW50MzIgbUZvcm1hdElEOwogICAgVUludDMyIG1Gb3JtYXRGbGFnczsKICAg
IFVJbnQzMiBtQnl0ZXNQZXJQYWNrZXQ7CiAgICBVSW50MzIgbUZyYW1lc1BlclBhY2tldDsKICAg
IFVJbnQzMiBtQnl0ZXNQZXJGcmFtZTsKICAgIFVJbnQzMiBtQ2hhbm5lbHNQZXJGcmFtZTsKICAg
IFVJbnQzMiBtQml0c1BlckNoYW5uZWw7CiAgICBVSW50MzIgbVJlc2VydmVkOwp9Owp0eXBlZGVm
IHN0cnVjdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uOwojIDIwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUF1ZGlvLmZyYW1l
d29yay9IZWFkZXJzL0NvcmVBdWRpb1R5cGVzLmgiIDMKZW51bQp7CiAgICBrQXVkaW9TdHJlYW1B
bnlSYXRlID0gMAp9OwojIDI5MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUF1ZGlv
LmZyYW1ld29yay9IZWFkZXJzL0NvcmVBdWRpb1R5cGVzLmgiIDMKZW51bQp7CiAgICBrQXVkaW9G
b3JtYXRMaW5lYXJQQ00gPSAnbHBjbScsCiAgICBrQXVkaW9Gb3JtYXRBQzMgPSAnYWMtMycsCiAg
ICBrQXVkaW9Gb3JtYXQ2MDk1OEFDMyA9ICdjYWMzJywKICAgIGtBdWRpb0Zvcm1hdEFwcGxlSU1B
NCA9ICdpbWE0JywKICAgIGtBdWRpb0Zvcm1hdE1QRUc0QUFDID0gJ2FhYyAnLAogICAga0F1ZGlv
Rm9ybWF0TVBFRzRDRUxQID0gJ2NlbHAnLAogICAga0F1ZGlvRm9ybWF0TVBFRzRIVlhDID0gJ2h2
eGMnLAogICAga0F1ZGlvRm9ybWF0TVBFRzRUd2luVlEgPSAndHd2cScsCiAgICBrQXVkaW9Gb3Jt
YXRNQUNFMyA9ICdNQUMzJywKICAgIGtBdWRpb0Zvcm1hdE1BQ0U2ID0gJ01BQzYnLAogICAga0F1
ZGlvRm9ybWF0VUxhdyA9ICd1bGF3JywKICAgIGtBdWRpb0Zvcm1hdEFMYXcgPSAnYWxhdycsCiAg
ICBrQXVkaW9Gb3JtYXRRRGVzaWduID0gJ1FETUMnLAogICAga0F1ZGlvRm9ybWF0UURlc2lnbjIg
PSAnUURNMicsCiAgICBrQXVkaW9Gb3JtYXRRVUFMQ09NTSA9ICdRY2xwJywKICAgIGtBdWRpb0Zv
cm1hdE1QRUdMYXllcjEgPSAnLm1wMScsCiAgICBrQXVkaW9Gb3JtYXRNUEVHTGF5ZXIyID0gJy5t
cDInLAogICAga0F1ZGlvRm9ybWF0TVBFR0xheWVyMyA9ICcubXAzJywKICAgIGtBdWRpb0Zvcm1h
dFRpbWVDb2RlID0gJ3RpbWUnLAogICAga0F1ZGlvRm9ybWF0TUlESVN0cmVhbSA9ICdtaWRpJywK
ICAgIGtBdWRpb0Zvcm1hdFBhcmFtZXRlclZhbHVlU3RyZWFtID0gJ2FwdnMnLAogICAga0F1ZGlv
Rm9ybWF0QXBwbGVMb3NzbGVzcyA9ICdhbGFjJywKICAgIGtBdWRpb0Zvcm1hdE1QRUc0QUFDX0hF
ID0gJ2FhY2gnLAogICAga0F1ZGlvRm9ybWF0TVBFRzRBQUNfTEQgPSAnYWFjbCcsCiAgICBrQXVk
aW9Gb3JtYXRNUEVHNEFBQ19IRV9WMiA9ICdhYWNwJywKICAgIGtBdWRpb0Zvcm1hdE1QRUc0QUFD
X1NwYXRpYWwgPSAnYWFjcycsCiAgICBrQXVkaW9Gb3JtYXRBTVIgPSAnc2FtcicsCiAgICBrQXVk
aW9Gb3JtYXRBdWRpYmxlID0gJ0FVREInLAogICAga0F1ZGlvRm9ybWF0aUxCQyA9ICdpbGJjJywK
ICAgIGtBdWRpb0Zvcm1hdERWSUludGVsSU1BID0gMHg2RDczMDAxMSwKICAgIGtBdWRpb0Zvcm1h
dE1pY3Jvc29mdEdTTSA9IDB4NkQ3MzAwMzEsCiAgICBrQXVkaW9Gb3JtYXRBRVMzID0gJ2FlczMn
Cn07CiMgNDA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3Jr
L0hlYWRlcnMvQ29yZUF1ZGlvVHlwZXMuaCIgMwplbnVtCnsKICAgIGtBdWRpb0Zvcm1hdEZsYWdJ
c0Zsb2F0ID0gKDEgPDwgMCksCiAgICBrQXVkaW9Gb3JtYXRGbGFnSXNCaWdFbmRpYW4gPSAoMSA8
PCAxKSwKICAgIGtBdWRpb0Zvcm1hdEZsYWdJc1NpZ25lZEludGVnZXIgPSAoMSA8PCAyKSwKICAg
IGtBdWRpb0Zvcm1hdEZsYWdJc1BhY2tlZCA9ICgxIDw8IDMpLAogICAga0F1ZGlvRm9ybWF0Rmxh
Z0lzQWxpZ25lZEhpZ2ggPSAoMSA8PCA0KSwKICAgIGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVy
bGVhdmVkID0gKDEgPDwgNSksCiAgICBrQXVkaW9Gb3JtYXRGbGFnSXNOb25NaXhhYmxlID0gKDEg
PDwgNiksCiAgICBrQXVkaW9Gb3JtYXRGbGFnc0FyZUFsbENsZWFyID0gKDEgPDwgMzEpLAoKICAg
IGtMaW5lYXJQQ01Gb3JtYXRGbGFnSXNGbG9hdCA9IGtBdWRpb0Zvcm1hdEZsYWdJc0Zsb2F0LAog
ICAga0xpbmVhclBDTUZvcm1hdEZsYWdJc0JpZ0VuZGlhbiA9IGtBdWRpb0Zvcm1hdEZsYWdJc0Jp
Z0VuZGlhbiwKICAgIGtMaW5lYXJQQ01Gb3JtYXRGbGFnSXNTaWduZWRJbnRlZ2VyID0ga0F1ZGlv
Rm9ybWF0RmxhZ0lzU2lnbmVkSW50ZWdlciwKICAgIGtMaW5lYXJQQ01Gb3JtYXRGbGFnSXNQYWNr
ZWQgPSBrQXVkaW9Gb3JtYXRGbGFnSXNQYWNrZWQsCiAgICBrTGluZWFyUENNRm9ybWF0RmxhZ0lz
QWxpZ25lZEhpZ2ggPSBrQXVkaW9Gb3JtYXRGbGFnSXNBbGlnbmVkSGlnaCwKICAgIGtMaW5lYXJQ
Q01Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZCA9IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVy
bGVhdmVkLAogICAga0xpbmVhclBDTUZvcm1hdEZsYWdJc05vbk1peGFibGUgPSBrQXVkaW9Gb3Jt
YXRGbGFnSXNOb25NaXhhYmxlLAogICAga0xpbmVhclBDTUZvcm1hdEZsYWdzU2FtcGxlRnJhY3Rp
b25TaGlmdCA9IDcsCiAgICBrTGluZWFyUENNRm9ybWF0RmxhZ3NTYW1wbGVGcmFjdGlvbk1hc2sg
PSAoMHgzRiA8PCBrTGluZWFyUENNRm9ybWF0RmxhZ3NTYW1wbGVGcmFjdGlvblNoaWZ0KSwKICAg
IGtMaW5lYXJQQ01Gb3JtYXRGbGFnc0FyZUFsbENsZWFyID0ga0F1ZGlvRm9ybWF0RmxhZ3NBcmVB
bGxDbGVhciwKCiAgICBrQXBwbGVMb3NzbGVzc0Zvcm1hdEZsYWdfMTZCaXRTb3VyY2VEYXRhID0g
MSwKICAgIGtBcHBsZUxvc3NsZXNzRm9ybWF0RmxhZ18yMEJpdFNvdXJjZURhdGEgPSAyLAogICAg
a0FwcGxlTG9zc2xlc3NGb3JtYXRGbGFnXzI0Qml0U291cmNlRGF0YSA9IDMsCiAgICBrQXBwbGVM
b3NzbGVzc0Zvcm1hdEZsYWdfMzJCaXRTb3VyY2VEYXRhID0gNAp9OwojIDQ1MSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUF1ZGlvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVBdWRpb1R5
cGVzLmgiIDMKZW51bQp7CgoKCiAgICBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUVuZGlhbiA9IDAs
CgoKICAgIGtBdWRpb0Zvcm1hdEZsYWdzQ2Fub25pY2FsID0ga0F1ZGlvRm9ybWF0RmxhZ0lzRmxv
YXQgfCBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUVuZGlhbiB8IGtBdWRpb0Zvcm1hdEZsYWdJc1Bh
Y2tlZCwKICAgIGtBdWRpb0Zvcm1hdEZsYWdzQXVkaW9Vbml0Q2Fub25pY2FsID0ga0F1ZGlvRm9y
bWF0RmxhZ0lzRmxvYXQgfCBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUVuZGlhbiB8IGtBdWRpb0Zv
cm1hdEZsYWdJc1BhY2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkLAoKCgoK
ICAgIGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgPSBrQXVkaW9Gb3JtYXRGbGFn
SXNGbG9hdCB8IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRW5kaWFuIHwga0F1ZGlvRm9ybWF0Rmxh
Z0lzUGFja2VkCn07CgoKCgoKI2RlZmluZSBUZXN0QXVkaW9Gb3JtYXROYXRpdmVFbmRpYW4oZikg
KChmLm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ00pICYmICgoZi5tRm9ybWF0Rmxh
Z3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNCaWdFbmRpYW4pID09IGtBdWRpb0Zvcm1hdEZsYWdzTmF0
aXZlRW5kaWFuKSkKIyA0ODMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVBdWRpby5m
cmFtZXdvcmsvSGVhZGVycy9Db3JlQXVkaW9UeXBlcy5oIiAzCiAgICBpbmxpbmUgYm9vbCBJc0F1
ZGlvRm9ybWF0TmF0aXZlRW5kaWFuKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYg
ZikgeyByZXR1cm4gKGYubUZvcm1hdElEID09IGtBdWRpb0Zvcm1hdExpbmVhclBDTSkgJiYgKChm
Lm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJc0JpZ0VuZGlhbikgPT0ga0F1ZGlvRm9y
bWF0RmxhZ3NOYXRpdmVFbmRpYW4pOyB9CiMgNTA0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlQXVkaW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUF1ZGlvVHlwZXMuaCIgMwppbmxpbmUg
VUludDMyIENhbGN1bGF0ZUxQQ01GbGFncyhVSW50MzIgaW5WYWxpZEJpdHNQZXJDaGFubmVsLCBV
SW50MzIgaW5Ub3RhbEJpdHNQZXJDaGFubmVsLCBib29sIGluSXNGbG9hdCwgYm9vbCBpbklzQmln
RW5kaWFuLCBib29sIGluSXNOb25JbnRlcmxlYXZlZCA9IGZhbHNlKSB7IHJldHVybiAoaW5Jc0Zs
b2F0ID8ga0F1ZGlvRm9ybWF0RmxhZ0lzRmxvYXQgOiBrQXVkaW9Gb3JtYXRGbGFnSXNTaWduZWRJ
bnRlZ2VyKSB8IChpbklzQmlnRW5kaWFuID8gKChVSW50MzIpa0F1ZGlvRm9ybWF0RmxhZ0lzQmln
RW5kaWFuKSA6IDApIHwgKCghaW5Jc0Zsb2F0ICYmIChpblZhbGlkQml0c1BlckNoYW5uZWwgPT0g
aW5Ub3RhbEJpdHNQZXJDaGFubmVsKSkgPyBrQXVkaW9Gb3JtYXRGbGFnSXNQYWNrZWQgOiBrQXVk
aW9Gb3JtYXRGbGFnSXNBbGlnbmVkSGlnaCkgfCAoaW5Jc05vbkludGVybGVhdmVkID8gKChVSW50
MzIpa0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQpIDogMCk7IH0KIyA1MjggIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVBdWRpby5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQXVk
aW9UeXBlcy5oIiAzCmlubGluZSB2b2lkIEZpbGxPdXRBU0JERm9yTFBDTShBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24mIG91dEFTQkQsIEZsb2F0NjQgaW5TYW1wbGVSYXRlLCBVSW50MzIgaW5D
aGFubmVsc1BlckZyYW1lLCBVSW50MzIgaW5WYWxpZEJpdHNQZXJDaGFubmVsLCBVSW50MzIgaW5U
b3RhbEJpdHNQZXJDaGFubmVsLCBib29sIGluSXNGbG9hdCwgYm9vbCBpbklzQmlnRW5kaWFuLCBi
b29sIGluSXNOb25JbnRlcmxlYXZlZCA9IGZhbHNlKSB7IG91dEFTQkQubVNhbXBsZVJhdGUgPSBp
blNhbXBsZVJhdGU7IG91dEFTQkQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOyBv
dXRBU0JELm1Gb3JtYXRGbGFncyA9IENhbGN1bGF0ZUxQQ01GbGFncyhpblZhbGlkQml0c1BlckNo
YW5uZWwsIGluVG90YWxCaXRzUGVyQ2hhbm5lbCwgaW5Jc0Zsb2F0LCBpbklzQmlnRW5kaWFuLCBp
bklzTm9uSW50ZXJsZWF2ZWQpOyBvdXRBU0JELm1CeXRlc1BlclBhY2tldCA9IChpbklzTm9uSW50
ZXJsZWF2ZWQgPyAxIDogaW5DaGFubmVsc1BlckZyYW1lKSAqIChpblRvdGFsQml0c1BlckNoYW5u
ZWwgLyA4KTsgb3V0QVNCRC5tRnJhbWVzUGVyUGFja2V0ID0gMTsgb3V0QVNCRC5tQnl0ZXNQZXJG
cmFtZSA9IChpbklzTm9uSW50ZXJsZWF2ZWQgPyAxIDogaW5DaGFubmVsc1BlckZyYW1lKSAqIChp
blRvdGFsQml0c1BlckNoYW5uZWwgLyA4KTsgb3V0QVNCRC5tQ2hhbm5lbHNQZXJGcmFtZSA9IGlu
Q2hhbm5lbHNQZXJGcmFtZTsgb3V0QVNCRC5tQml0c1BlckNoYW5uZWwgPSBpblZhbGlkQml0c1Bl
ckNoYW5uZWw7IH0KIyA1NDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVBdWRpby5m
cmFtZXdvcmsvSGVhZGVycy9Db3JlQXVkaW9UeXBlcy5oIiAzCnN0cnVjdCBBdWRpb1N0cmVhbVBh
Y2tldERlc2NyaXB0aW9uCnsKICAgIFNJbnQ2NCBtU3RhcnRPZmZzZXQ7CiAgICBVSW50MzIgbVZh
cmlhYmxlRnJhbWVzSW5QYWNrZXQ7CiAgICBVSW50MzIgbURhdGFCeXRlU2l6ZTsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbiBBdWRpb1N0cmVhbVBhY2tldERl
c2NyaXB0aW9uOwoKCgojZGVmaW5lIF9fU01QVEVUaW1lX18gCiMgNTgwICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUF1ZGlvVHlwZXMu
aCIgMwpzdHJ1Y3QgU01QVEVUaW1lCnsKICAgIFNJbnQxNiBtU3ViZnJhbWVzOwogICAgU0ludDE2
IG1TdWJmcmFtZURpdmlzb3I7CiAgICBVSW50MzIgbUNvdW50ZXI7CiAgICBVSW50MzIgbVR5cGU7
CiAgICBVSW50MzIgbUZsYWdzOwogICAgU0ludDE2IG1Ib3VyczsKICAgIFNJbnQxNiBtTWludXRl
czsKICAgIFNJbnQxNiBtU2Vjb25kczsKICAgIFNJbnQxNiBtRnJhbWVzOwp9Owp0eXBlZGVmIHN0
cnVjdCBTTVBURVRpbWUgU01QVEVUaW1lOwojIDYyMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZUF1ZGlvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVBdWRpb1R5cGVzLmgiIDMKZW51bQp7
CiAgICBrU01QVEVUaW1lVHlwZTI0ID0gMCwKICAgIGtTTVBURVRpbWVUeXBlMjUgPSAxLAogICAg
a1NNUFRFVGltZVR5cGUzMERyb3AgPSAyLAogICAga1NNUFRFVGltZVR5cGUzMCA9IDMsCiAgICBr
U01QVEVUaW1lVHlwZTI5OTcgPSA0LAogICAga1NNUFRFVGltZVR5cGUyOTk3RHJvcCA9IDUsCiAg
ICBrU01QVEVUaW1lVHlwZTYwID0gNiwKICAgIGtTTVBURVRpbWVUeXBlNTk5NCA9IDcsCiAgICBr
U01QVEVUaW1lVHlwZTYwRHJvcCA9IDgsCiAgICBrU01QVEVUaW1lVHlwZTU5OTREcm9wID0gOSwK
ICAgIGtTTVBURVRpbWVUeXBlNTAgPSAxMCwKICAgIGtTTVBURVRpbWVUeXBlMjM5OCA9IDExCn07
CiMgNjQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3JrL0hl
YWRlcnMvQ29yZUF1ZGlvVHlwZXMuaCIgMwplbnVtCnsKICAgIGtTTVBURVRpbWVWYWxpZCA9ICgx
IDw8IDApLAogICAga1NNUFRFVGltZVJ1bm5pbmcgPSAoMSA8PCAxKQp9OwojIDY3MyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUF1ZGlvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVBdWRp
b1R5cGVzLmgiIDMKc3RydWN0IEF1ZGlvVGltZVN0YW1wCnsKICAgIEZsb2F0NjQgbVNhbXBsZVRp
bWU7CiAgICBVSW50NjQgbUhvc3RUaW1lOwogICAgRmxvYXQ2NCBtUmF0ZVNjYWxhcjsKICAgIFVJ
bnQ2NCBtV29yZENsb2NrVGltZTsKICAgIFNNUFRFVGltZSBtU01QVEVUaW1lOwogICAgVUludDMy
IG1GbGFnczsKICAgIFVJbnQzMiBtUmVzZXJ2ZWQ7Cn07CnR5cGVkZWYgc3RydWN0IEF1ZGlvVGlt
ZVN0YW1wIEF1ZGlvVGltZVN0YW1wOwojIDY5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZUF1ZGlvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVBdWRpb1R5cGVzLmgiIDMKZW51bQp7CiAg
ICBrQXVkaW9UaW1lU3RhbXBTYW1wbGVUaW1lVmFsaWQgPSAoMSA8PCAwKSwKICAgIGtBdWRpb1Rp
bWVTdGFtcEhvc3RUaW1lVmFsaWQgPSAoMSA8PCAxKSwKICAgIGtBdWRpb1RpbWVTdGFtcFJhdGVT
Y2FsYXJWYWxpZCA9ICgxIDw8IDIpLAogICAga0F1ZGlvVGltZVN0YW1wV29yZENsb2NrVGltZVZh
bGlkID0gKDEgPDwgMyksCiAgICBrQXVkaW9UaW1lU3RhbXBTTVBURVRpbWVWYWxpZCA9ICgxIDw8
IDQpCn07CgoKCgoKCgplbnVtCnsKICAgIGtBdWRpb1RpbWVTdGFtcFNhbXBsZUhvc3RUaW1lVmFs
aWQgPSAoa0F1ZGlvVGltZVN0YW1wU2FtcGxlVGltZVZhbGlkIHwga0F1ZGlvVGltZVN0YW1wSG9z
dFRpbWVWYWxpZCkKfTsKIyA3MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVBdWRp
by5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQXVkaW9UeXBlcy5oIiAzCmlubGluZSB2b2lkIEZpbGxP
dXRBdWRpb1RpbWVTdGFtcFdpdGhTYW1wbGVUaW1lKEF1ZGlvVGltZVN0YW1wJiBvdXRBVFMsIEZs
b2F0NjQgaW5TYW1wbGVUaW1lKSB7IG91dEFUUy5tU2FtcGxlVGltZSA9IGluU2FtcGxlVGltZTsg
b3V0QVRTLm1Ib3N0VGltZSA9IDA7IG91dEFUUy5tUmF0ZVNjYWxhciA9IDA7IG91dEFUUy5tV29y
ZENsb2NrVGltZSA9IDA7IG1lbXNldCgmb3V0QVRTLm1TTVBURVRpbWUsIDAsIHNpemVvZihTTVBU
RVRpbWUpKTsgb3V0QVRTLm1GbGFncyA9IGtBdWRpb1RpbWVTdGFtcFNhbXBsZVRpbWVWYWxpZDsg
fQojIDc0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUF1ZGlvLmZyYW1ld29yay9I
ZWFkZXJzL0NvcmVBdWRpb1R5cGVzLmgiIDMKaW5saW5lIHZvaWQgRmlsbE91dEF1ZGlvVGltZVN0
YW1wV2l0aEhvc3RUaW1lKEF1ZGlvVGltZVN0YW1wJiBvdXRBVFMsIFVJbnQ2NCBpbkhvc3RUaW1l
KSB7IG91dEFUUy5tU2FtcGxlVGltZSA9IDA7IG91dEFUUy5tSG9zdFRpbWUgPSBpbkhvc3RUaW1l
OyBvdXRBVFMubVJhdGVTY2FsYXIgPSAwOyBvdXRBVFMubVdvcmRDbG9ja1RpbWUgPSAwOyBtZW1z
ZXQoJm91dEFUUy5tU01QVEVUaW1lLCAwLCBzaXplb2YoU01QVEVUaW1lKSk7IG91dEFUUy5tRmxh
Z3MgPSBrQXVkaW9UaW1lU3RhbXBIb3N0VGltZVZhbGlkOyB9CiMgNzU1ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUF1ZGlvVHlwZXMu
aCIgMwppbmxpbmUgdm9pZCBGaWxsT3V0QXVkaW9UaW1lU3RhbXBXaXRoU2FtcGxlQW5kSG9zdFRp
bWUoQXVkaW9UaW1lU3RhbXAmIG91dEFUUywgRmxvYXQ2NCBpblNhbXBsZVRpbWUsIFVJbnQ2NCBp
bkhvc3RUaW1lKSB7IG91dEFUUy5tU2FtcGxlVGltZSA9IGluU2FtcGxlVGltZTsgb3V0QVRTLm1I
b3N0VGltZSA9IGluSG9zdFRpbWU7IG91dEFUUy5tUmF0ZVNjYWxhciA9IDA7IG91dEFUUy5tV29y
ZENsb2NrVGltZSA9IDA7IG1lbXNldCgmb3V0QVRTLm1TTVBURVRpbWUsIDAsIHNpemVvZihTTVBU
RVRpbWUpKTsgb3V0QVRTLm1GbGFncyA9IGtBdWRpb1RpbWVTdGFtcFNhbXBsZVRpbWVWYWxpZCB8
IGtBdWRpb1RpbWVTdGFtcEhvc3RUaW1lVmFsaWQ7IH0KIyA3NjggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVBdWRpby5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQXVkaW9UeXBlcy5oIiAz
CnN0cnVjdCBBdWRpb0NsYXNzRGVzY3JpcHRpb24gewogICAgT1NUeXBlIG1UeXBlOwogICAgT1NU
eXBlIG1TdWJUeXBlOwogICAgT1NUeXBlIG1NYW51ZmFjdHVyZXI7Cn07CnR5cGVkZWYgc3RydWN0
IEF1ZGlvQ2xhc3NEZXNjcmlwdGlvbiBBdWRpb0NsYXNzRGVzY3JpcHRpb247CgoKCgoKCnR5cGVk
ZWYgVUludDMyIEF1ZGlvQ2hhbm5lbExhYmVsOwoKCgoKCnR5cGVkZWYgVUludDMyIEF1ZGlvQ2hh
bm5lbExheW91dFRhZzsKIyA3OTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVBdWRp
by5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQXVkaW9UeXBlcy5oIiAzCnN0cnVjdCBBdWRpb0NoYW5u
ZWxEZXNjcmlwdGlvbgp7CiAgICBBdWRpb0NoYW5uZWxMYWJlbCBtQ2hhbm5lbExhYmVsOwogICAg
VUludDMyIG1DaGFubmVsRmxhZ3M7CiAgICBGbG9hdDMyIG1Db29yZGluYXRlc1szXTsKfTsKdHlw
ZWRlZiBzdHJ1Y3QgQXVkaW9DaGFubmVsRGVzY3JpcHRpb24gQXVkaW9DaGFubmVsRGVzY3JpcHRp
b247CiMgODIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3Jr
L0hlYWRlcnMvQ29yZUF1ZGlvVHlwZXMuaCIgMwpzdHJ1Y3QgQXVkaW9DaGFubmVsTGF5b3V0CnsK
ICAgIEF1ZGlvQ2hhbm5lbExheW91dFRhZyBtQ2hhbm5lbExheW91dFRhZzsKICAgIFVJbnQzMiBt
Q2hhbm5lbEJpdG1hcDsKICAgIFVJbnQzMiBtTnVtYmVyQ2hhbm5lbERlc2NyaXB0aW9uczsKICAg
IEF1ZGlvQ2hhbm5lbERlc2NyaXB0aW9uIG1DaGFubmVsRGVzY3JpcHRpb25zWzFdOwp9Owp0eXBl
ZGVmIHN0cnVjdCBBdWRpb0NoYW5uZWxMYXlvdXQgQXVkaW9DaGFubmVsTGF5b3V0OwojIDg0NCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUF1ZGlvLmZyYW1ld29yay9IZWFkZXJzL0Nv
cmVBdWRpb1R5cGVzLmgiIDMKZW51bQp7CiAgICBrQXVkaW9DaGFubmVsTGFiZWxfVW5rbm93biA9
IDB4RkZGRkZGRkYsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfVW51c2VkID0gMCwKICAgIGtBdWRp
b0NoYW5uZWxMYWJlbF9Vc2VDb29yZGluYXRlcyA9IDEwMCwKCiAgICBrQXVkaW9DaGFubmVsTGFi
ZWxfTGVmdCA9IDEsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfUmlnaHQgPSAyLAogICAga0F1ZGlv
Q2hhbm5lbExhYmVsX0NlbnRlciA9IDMsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfTEZFU2NyZWVu
ID0gNCwKICAgIGtBdWRpb0NoYW5uZWxMYWJlbF9MZWZ0U3Vycm91bmQgPSA1LAogICAga0F1ZGlv
Q2hhbm5lbExhYmVsX1JpZ2h0U3Vycm91bmQgPSA2LAogICAga0F1ZGlvQ2hhbm5lbExhYmVsX0xl
ZnRDZW50ZXIgPSA3LAogICAga0F1ZGlvQ2hhbm5lbExhYmVsX1JpZ2h0Q2VudGVyID0gOCwKICAg
IGtBdWRpb0NoYW5uZWxMYWJlbF9DZW50ZXJTdXJyb3VuZCA9IDksCiAgICBrQXVkaW9DaGFubmVs
TGFiZWxfTGVmdFN1cnJvdW5kRGlyZWN0ID0gMTAsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfUmln
aHRTdXJyb3VuZERpcmVjdCA9IDExLAogICAga0F1ZGlvQ2hhbm5lbExhYmVsX1RvcENlbnRlclN1
cnJvdW5kID0gMTIsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfVmVydGljYWxIZWlnaHRMZWZ0ID0g
MTMsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfVmVydGljYWxIZWlnaHRDZW50ZXIgPSAxNCwKICAg
IGtBdWRpb0NoYW5uZWxMYWJlbF9WZXJ0aWNhbEhlaWdodFJpZ2h0ID0gMTUsCgogICAga0F1ZGlv
Q2hhbm5lbExhYmVsX1RvcEJhY2tMZWZ0ID0gMTYsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfVG9w
QmFja0NlbnRlciA9IDE3LAogICAga0F1ZGlvQ2hhbm5lbExhYmVsX1RvcEJhY2tSaWdodCA9IDE4
LAoKICAgIGtBdWRpb0NoYW5uZWxMYWJlbF9SZWFyU3Vycm91bmRMZWZ0ID0gMzMsCiAgICBrQXVk
aW9DaGFubmVsTGFiZWxfUmVhclN1cnJvdW5kUmlnaHQgPSAzNCwKICAgIGtBdWRpb0NoYW5uZWxM
YWJlbF9MZWZ0V2lkZSA9IDM1LAogICAga0F1ZGlvQ2hhbm5lbExhYmVsX1JpZ2h0V2lkZSA9IDM2
LAogICAga0F1ZGlvQ2hhbm5lbExhYmVsX0xGRTIgPSAzNywKICAgIGtBdWRpb0NoYW5uZWxMYWJl
bF9MZWZ0VG90YWwgPSAzOCwKICAgIGtBdWRpb0NoYW5uZWxMYWJlbF9SaWdodFRvdGFsID0gMzks
CiAgICBrQXVkaW9DaGFubmVsTGFiZWxfSGVhcmluZ0ltcGFpcmVkID0gNDAsCiAgICBrQXVkaW9D
aGFubmVsTGFiZWxfTmFycmF0aW9uID0gNDEsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfTW9ubyA9
IDQyLAogICAga0F1ZGlvQ2hhbm5lbExhYmVsX0RpYWxvZ0NlbnRyaWNNaXggPSA0MywKCiAgICBr
QXVkaW9DaGFubmVsTGFiZWxfQ2VudGVyU3Vycm91bmREaXJlY3QgPSA0NCwKCiAgICBrQXVkaW9D
aGFubmVsTGFiZWxfSGFwdGljID0gNDUsCgoKICAgIGtBdWRpb0NoYW5uZWxMYWJlbF9BbWJpc29u
aWNfVyA9IDIwMCwKICAgIGtBdWRpb0NoYW5uZWxMYWJlbF9BbWJpc29uaWNfWCA9IDIwMSwKICAg
IGtBdWRpb0NoYW5uZWxMYWJlbF9BbWJpc29uaWNfWSA9IDIwMiwKICAgIGtBdWRpb0NoYW5uZWxM
YWJlbF9BbWJpc29uaWNfWiA9IDIwMywKCgogICAga0F1ZGlvQ2hhbm5lbExhYmVsX01TX01pZCA9
IDIwNCwKICAgIGtBdWRpb0NoYW5uZWxMYWJlbF9NU19TaWRlID0gMjA1LAoKCiAgICBrQXVkaW9D
aGFubmVsTGFiZWxfWFlfWCA9IDIwNiwKICAgIGtBdWRpb0NoYW5uZWxMYWJlbF9YWV9ZID0gMjA3
LAoKCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfSGVhZHBob25lc0xlZnQgPSAzMDEsCiAgICBrQXVk
aW9DaGFubmVsTGFiZWxfSGVhZHBob25lc1JpZ2h0ID0gMzAyLAogICAga0F1ZGlvQ2hhbm5lbExh
YmVsX0NsaWNrVHJhY2sgPSAzMDQsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfRm9yZWlnbkxhbmd1
YWdlID0gMzA1LAoKCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfRGlzY3JldGUgPSA0MDAsCgoKICAg
IGtBdWRpb0NoYW5uZWxMYWJlbF9EaXNjcmV0ZV8wID0gKDE8PDE2KSB8IDAsCiAgICBrQXVkaW9D
aGFubmVsTGFiZWxfRGlzY3JldGVfMSA9ICgxPDwxNikgfCAxLAogICAga0F1ZGlvQ2hhbm5lbExh
YmVsX0Rpc2NyZXRlXzIgPSAoMTw8MTYpIHwgMiwKICAgIGtBdWRpb0NoYW5uZWxMYWJlbF9EaXNj
cmV0ZV8zID0gKDE8PDE2KSB8IDMsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfRGlzY3JldGVfNCA9
ICgxPDwxNikgfCA0LAogICAga0F1ZGlvQ2hhbm5lbExhYmVsX0Rpc2NyZXRlXzUgPSAoMTw8MTYp
IHwgNSwKICAgIGtBdWRpb0NoYW5uZWxMYWJlbF9EaXNjcmV0ZV82ID0gKDE8PDE2KSB8IDYsCiAg
ICBrQXVkaW9DaGFubmVsTGFiZWxfRGlzY3JldGVfNyA9ICgxPDwxNikgfCA3LAogICAga0F1ZGlv
Q2hhbm5lbExhYmVsX0Rpc2NyZXRlXzggPSAoMTw8MTYpIHwgOCwKICAgIGtBdWRpb0NoYW5uZWxM
YWJlbF9EaXNjcmV0ZV85ID0gKDE8PDE2KSB8IDksCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfRGlz
Y3JldGVfMTAgPSAoMTw8MTYpIHwgMTAsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfRGlzY3JldGVf
MTEgPSAoMTw8MTYpIHwgMTEsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfRGlzY3JldGVfMTIgPSAo
MTw8MTYpIHwgMTIsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfRGlzY3JldGVfMTMgPSAoMTw8MTYp
IHwgMTMsCiAgICBrQXVkaW9DaGFubmVsTGFiZWxfRGlzY3JldGVfMTQgPSAoMTw8MTYpIHwgMTQs
CiAgICBrQXVkaW9DaGFubmVsTGFiZWxfRGlzY3JldGVfMTUgPSAoMTw8MTYpIHwgMTUsCiAgICBr
QXVkaW9DaGFubmVsTGFiZWxfRGlzY3JldGVfNjU1MzUgPSAoMTw8MTYpIHwgNjU1MzUKfTsKCgoK
CgoKZW51bQp7CiAgICBrQXVkaW9DaGFubmVsQml0X0xlZnQgPSAoMTw8MCksCiAgICBrQXVkaW9D
aGFubmVsQml0X1JpZ2h0ID0gKDE8PDEpLAogICAga0F1ZGlvQ2hhbm5lbEJpdF9DZW50ZXIgPSAo
MTw8MiksCiAgICBrQXVkaW9DaGFubmVsQml0X0xGRVNjcmVlbiA9ICgxPDwzKSwKICAgIGtBdWRp
b0NoYW5uZWxCaXRfTGVmdFN1cnJvdW5kID0gKDE8PDQpLAogICAga0F1ZGlvQ2hhbm5lbEJpdF9S
aWdodFN1cnJvdW5kID0gKDE8PDUpLAogICAga0F1ZGlvQ2hhbm5lbEJpdF9MZWZ0Q2VudGVyID0g
KDE8PDYpLAogICAga0F1ZGlvQ2hhbm5lbEJpdF9SaWdodENlbnRlciA9ICgxPDw3KSwKICAgIGtB
dWRpb0NoYW5uZWxCaXRfQ2VudGVyU3Vycm91bmQgPSAoMTw8OCksCiAgICBrQXVkaW9DaGFubmVs
Qml0X0xlZnRTdXJyb3VuZERpcmVjdCA9ICgxPDw5KSwKICAgIGtBdWRpb0NoYW5uZWxCaXRfUmln
aHRTdXJyb3VuZERpcmVjdCA9ICgxPDwxMCksCiAgICBrQXVkaW9DaGFubmVsQml0X1RvcENlbnRl
clN1cnJvdW5kID0gKDE8PDExKSwKICAgIGtBdWRpb0NoYW5uZWxCaXRfVmVydGljYWxIZWlnaHRM
ZWZ0ID0gKDE8PDEyKSwKICAgIGtBdWRpb0NoYW5uZWxCaXRfVmVydGljYWxIZWlnaHRDZW50ZXIg
PSAoMTw8MTMpLAogICAga0F1ZGlvQ2hhbm5lbEJpdF9WZXJ0aWNhbEhlaWdodFJpZ2h0ID0gKDE8
PDE0KSwKICAgIGtBdWRpb0NoYW5uZWxCaXRfVG9wQmFja0xlZnQgPSAoMTw8MTUpLAogICAga0F1
ZGlvQ2hhbm5lbEJpdF9Ub3BCYWNrQ2VudGVyID0gKDE8PDE2KSwKICAgIGtBdWRpb0NoYW5uZWxC
aXRfVG9wQmFja1JpZ2h0ID0gKDE8PDE3KQp9OwojIDk3MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZUF1ZGlvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVBdWRpb1R5cGVzLmgiIDMKZW51
bQp7CiAgICBrQXVkaW9DaGFubmVsRmxhZ3NfQWxsT2ZmID0gMCwKICAgIGtBdWRpb0NoYW5uZWxG
bGFnc19SZWN0YW5ndWxhckNvb3JkaW5hdGVzID0gKDE8PDApLAogICAga0F1ZGlvQ2hhbm5lbEZs
YWdzX1NwaGVyaWNhbENvb3JkaW5hdGVzID0gKDE8PDEpLAogICAga0F1ZGlvQ2hhbm5lbEZsYWdz
X01ldGVycyA9ICgxPDwyKQp9OwojIDEwMDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVBdWRpby5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQXVkaW9UeXBlcy5oIiAzCmVudW0KewogICAg
a0F1ZGlvQ2hhbm5lbENvb3JkaW5hdGVzX0xlZnRSaWdodCA9IDAsCiAgICBrQXVkaW9DaGFubmVs
Q29vcmRpbmF0ZXNfQmFja0Zyb250ID0gMSwKICAgIGtBdWRpb0NoYW5uZWxDb29yZGluYXRlc19E
b3duVXAgPSAyLAogICAga0F1ZGlvQ2hhbm5lbENvb3JkaW5hdGVzX0F6aW11dGggPSAwLAogICAg
a0F1ZGlvQ2hhbm5lbENvb3JkaW5hdGVzX0VsZXZhdGlvbiA9IDEsCiAgICBrQXVkaW9DaGFubmVs
Q29vcmRpbmF0ZXNfRGlzdGFuY2UgPSAyCn07CiMgMTAyMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZUF1ZGlvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVBdWRpb1R5cGVzLmgiIDMKI2Rl
ZmluZSBBdWRpb0NoYW5uZWxMYXlvdXRUYWdfR2V0TnVtYmVyT2ZDaGFubmVscyhsYXlvdXRUYWcp
ICgoVUludDMyKSgobGF5b3V0VGFnKSAmIDB4MDAwMEZGRkYpKQoKCgoKCgplbnVtCnsKIyAxMDUz
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlQXVkaW8uZnJhbWV3b3JrL0hlYWRlcnMv
Q29yZUF1ZGlvVHlwZXMuaCIgMwogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19Vc2VDaGFubmVs
RGVzY3JpcHRpb25zID0gKDA8PDE2KSB8IDAsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX1Vz
ZUNoYW5uZWxCaXRtYXAgPSAoMTw8MTYpIHwgMCwKCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFn
X01vbm8gPSAoMTAwPDwxNikgfCAxLAogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19TdGVyZW8g
PSAoMTAxPDwxNikgfCAyLAogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19TdGVyZW9IZWFkcGhv
bmVzID0gKDEwMjw8MTYpIHwgMiwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTWF0cml4U3Rl
cmVvID0gKDEwMzw8MTYpIHwgMiwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTWlkU2lkZSA9
ICgxMDQ8PDE2KSB8IDIsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX1hZID0gKDEwNTw8MTYp
IHwgMiwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfQmluYXVyYWwgPSAoMTA2PDwxNikgfCAy
LAogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19BbWJpc29uaWNfQl9Gb3JtYXQgPSAoMTA3PDwx
NikgfCA0LAoKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfUXVhZHJhcGhvbmljID0gKDEwODw8
MTYpIHwgNCwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfUGVudGFnb25hbCA9ICgxMDk8PDE2
KSB8IDUsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0hleGFnb25hbCA9ICgxMTA8PDE2KSB8
IDYsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX09jdGFnb25hbCA9ICgxMTE8PDE2KSB8IDgs
CiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0N1YmUgPSAoMTEyPDwxNikgfCA4LAoKCgogICAg
a0F1ZGlvQ2hhbm5lbExheW91dFRhZ19NUEVHXzFfMCA9IGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdf
TW9ubywKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBFR18yXzAgPSBrQXVkaW9DaGFubmVs
TGF5b3V0VGFnX1N0ZXJlbywKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBFR18zXzBfQSA9
ICgxMTM8PDE2KSB8IDMsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX01QRUdfM18wX0IgPSAo
MTE0PDwxNikgfCAzLAogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19NUEVHXzRfMF9BID0gKDEx
NTw8MTYpIHwgNCwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBFR180XzBfQiA9ICgxMTY8
PDE2KSB8IDQsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX01QRUdfNV8wX0EgPSAoMTE3PDwx
NikgfCA1LAogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19NUEVHXzVfMF9CID0gKDExODw8MTYp
IHwgNSwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBFR181XzBfQyA9ICgxMTk8PDE2KSB8
IDUsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX01QRUdfNV8wX0QgPSAoMTIwPDwxNikgfCA1
LAogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19NUEVHXzVfMV9BID0gKDEyMTw8MTYpIHwgNiwK
ICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBFR181XzFfQiA9ICgxMjI8PDE2KSB8IDYsCiAg
ICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX01QRUdfNV8xX0MgPSAoMTIzPDwxNikgfCA2LAogICAg
a0F1ZGlvQ2hhbm5lbExheW91dFRhZ19NUEVHXzVfMV9EID0gKDEyNDw8MTYpIHwgNiwKICAgIGtB
dWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBFR182XzFfQSA9ICgxMjU8PDE2KSB8IDcsCiAgICBrQXVk
aW9DaGFubmVsTGF5b3V0VGFnX01QRUdfN18xX0EgPSAoMTI2PDwxNikgfCA4LAogICAga0F1ZGlv
Q2hhbm5lbExheW91dFRhZ19NUEVHXzdfMV9CID0gKDEyNzw8MTYpIHwgOCwKICAgIGtBdWRpb0No
YW5uZWxMYXlvdXRUYWdfTVBFR183XzFfQyA9ICgxMjg8PDE2KSB8IDgsCiAgICBrQXVkaW9DaGFu
bmVsTGF5b3V0VGFnX0VtYWdpY19EZWZhdWx0XzdfMSA9ICgxMjk8PDE2KSB8IDgsCiAgICBrQXVk
aW9DaGFubmVsTGF5b3V0VGFnX1NNUFRFX0RUViA9ICgxMzA8PDE2KSB8IDgsCgoKCiAgICBrQXVk
aW9DaGFubmVsTGF5b3V0VGFnX0lUVV8xXzAgPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX01vbm8s
CiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0lUVV8yXzAgPSBrQXVkaW9DaGFubmVsTGF5b3V0
VGFnX1N0ZXJlbywKCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0lUVV8yXzEgPSAoMTMxPDwx
NikgfCAzLAogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19JVFVfMl8yID0gKDEzMjw8MTYpIHwg
NCwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfSVRVXzNfMCA9IGtBdWRpb0NoYW5uZWxMYXlv
dXRUYWdfTVBFR18zXzBfQSwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfSVRVXzNfMSA9IGtB
dWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBFR180XzBfQSwKCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0
VGFnX0lUVV8zXzIgPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX01QRUdfNV8wX0EsCiAgICBrQXVk
aW9DaGFubmVsTGF5b3V0VGFnX0lUVV8zXzJfMSA9IGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBF
R181XzFfQSwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfSVRVXzNfNF8xID0ga0F1ZGlvQ2hh
bm5lbExheW91dFRhZ19NUEVHXzdfMV9DLAoKCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0RW
RF8wID0ga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19Nb25vLAogICAga0F1ZGlvQ2hhbm5lbExheW91
dFRhZ19EVkRfMSA9IGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfU3RlcmVvLAogICAga0F1ZGlvQ2hh
bm5lbExheW91dFRhZ19EVkRfMiA9IGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfSVRVXzJfMSwKICAg
IGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfRFZEXzMgPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0lU
VV8yXzIsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0RWRF80ID0gKDEzMzw8MTYpIHwgMywK
ICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfRFZEXzUgPSAoMTM0PDwxNikgfCA0LAogICAga0F1
ZGlvQ2hhbm5lbExheW91dFRhZ19EVkRfNiA9ICgxMzU8PDE2KSB8IDUsCiAgICBrQXVkaW9DaGFu
bmVsTGF5b3V0VGFnX0RWRF83ID0ga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19NUEVHXzNfMF9BLAog
ICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19EVkRfOCA9IGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdf
TVBFR180XzBfQSwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfRFZEXzkgPSBrQXVkaW9DaGFu
bmVsTGF5b3V0VGFnX01QRUdfNV8wX0EsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0RWRF8x
MCA9ICgxMzY8PDE2KSB8IDQsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0RWRF8xMSA9ICgx
Mzc8PDE2KSB8IDUsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0RWRF8xMiA9IGtBdWRpb0No
YW5uZWxMYXlvdXRUYWdfTVBFR181XzFfQSwKCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0RW
RF8xMyA9IGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfRFZEXzgsCiAgICBrQXVkaW9DaGFubmVsTGF5
b3V0VGFnX0RWRF8xNCA9IGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfRFZEXzksCiAgICBrQXVkaW9D
aGFubmVsTGF5b3V0VGFnX0RWRF8xNSA9IGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfRFZEXzEwLAog
ICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19EVkRfMTYgPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFn
X0RWRF8xMSwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfRFZEXzE3ID0ga0F1ZGlvQ2hhbm5l
bExheW91dFRhZ19EVkRfMTIsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0RWRF8xOCA9ICgx
Mzg8PDE2KSB8IDUsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0RWRF8xOSA9IGtBdWRpb0No
YW5uZWxMYXlvdXRUYWdfTVBFR181XzBfQiwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfRFZE
XzIwID0ga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19NUEVHXzVfMV9CLAoKCgogICAga0F1ZGlvQ2hh
bm5lbExheW91dFRhZ19BdWRpb1VuaXRfNCA9IGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfUXVhZHJh
cGhvbmljLAogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19BdWRpb1VuaXRfNSA9IGtBdWRpb0No
YW5uZWxMYXlvdXRUYWdfUGVudGFnb25hbCwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfQXVk
aW9Vbml0XzYgPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0hleGFnb25hbCwKICAgIGtBdWRpb0No
YW5uZWxMYXlvdXRUYWdfQXVkaW9Vbml0XzggPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX09jdGFn
b25hbCwKCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0F1ZGlvVW5pdF81XzAgPSBrQXVkaW9D
aGFubmVsTGF5b3V0VGFnX01QRUdfNV8wX0IsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0F1
ZGlvVW5pdF82XzAgPSAoMTM5PDwxNikgfCA2LAogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19B
dWRpb1VuaXRfN18wID0gKDE0MDw8MTYpIHwgNywKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdf
QXVkaW9Vbml0XzdfMF9Gcm9udCA9ICgxNDg8PDE2KSB8IDcsCiAgICBrQXVkaW9DaGFubmVsTGF5
b3V0VGFnX0F1ZGlvVW5pdF81XzEgPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX01QRUdfNV8xX0Es
CiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0F1ZGlvVW5pdF82XzEgPSBrQXVkaW9DaGFubmVs
TGF5b3V0VGFnX01QRUdfNl8xX0EsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0F1ZGlvVW5p
dF83XzEgPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX01QRUdfN18xX0MsCiAgICBrQXVkaW9DaGFu
bmVsTGF5b3V0VGFnX0F1ZGlvVW5pdF83XzFfRnJvbnQgPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFn
X01QRUdfN18xX0EsCgogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19BQUNfM18wID0ga0F1ZGlv
Q2hhbm5lbExheW91dFRhZ19NUEVHXzNfMF9CLAogICAga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19B
QUNfUXVhZHJhcGhvbmljID0ga0F1ZGlvQ2hhbm5lbExheW91dFRhZ19RdWFkcmFwaG9uaWMsCiAg
ICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0FBQ180XzAgPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFn
X01QRUdfNF8wX0IsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0FBQ181XzAgPSBrQXVkaW9D
aGFubmVsTGF5b3V0VGFnX01QRUdfNV8wX0QsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0FB
Q181XzEgPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX01QRUdfNV8xX0QsCiAgICBrQXVkaW9DaGFu
bmVsTGF5b3V0VGFnX0FBQ182XzAgPSAoMTQxPDwxNikgfCA2LAogICAga0F1ZGlvQ2hhbm5lbExh
eW91dFRhZ19BQUNfNl8xID0gKDE0Mjw8MTYpIHwgNywKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRU
YWdfQUFDXzdfMCA9ICgxNDM8PDE2KSB8IDcsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0FB
Q183XzEgPSBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX01QRUdfN18xX0IsCiAgICBrQXVkaW9DaGFu
bmVsTGF5b3V0VGFnX0FBQ19PY3RhZ29uYWwgPSAoMTQ0PDwxNikgfCA4LAoKICAgIGtBdWRpb0No
YW5uZWxMYXlvdXRUYWdfVE1IXzEwXzJfc3RkID0gKDE0NTw8MTYpIHwgMTYsCiAgICBrQXVkaW9D
aGFubmVsTGF5b3V0VGFnX1RNSF8xMF8yX2Z1bGwgPSAoMTQ2PDwxNikgfCAyMSwKCiAgICBrQXVk
aW9DaGFubmVsTGF5b3V0VGFnX0FDM18xXzBfMSA9ICgxNDk8PDE2KSB8IDIsCiAgICBrQXVkaW9D
aGFubmVsTGF5b3V0VGFnX0FDM18zXzAgPSAoMTUwPDwxNikgfCAzLAogICAga0F1ZGlvQ2hhbm5l
bExheW91dFRhZ19BQzNfM18xID0gKDE1MTw8MTYpIHwgNCwKICAgIGtBdWRpb0NoYW5uZWxMYXlv
dXRUYWdfQUMzXzNfMF8xID0gKDE1Mjw8MTYpIHwgNCwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRU
YWdfQUMzXzJfMV8xID0gKDE1Mzw8MTYpIHwgNCwKICAgIGtBdWRpb0NoYW5uZWxMYXlvdXRUYWdf
QUMzXzNfMV8xID0gKDE1NDw8MTYpIHwgNSwKCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFnX0Rp
c2NyZXRlSW5PcmRlciA9ICgxNDc8PDE2KSB8IDAsCiAgICBrQXVkaW9DaGFubmVsTGF5b3V0VGFn
X1Vua25vd24gPSAweEZGRkYwMDAwCn07CiMgMTE4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZUF1ZGlvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVBdWRpb1R5cGVzLmgiIDMKZW51bQp7
CiAgICBrTVBFRzRPYmplY3RfQUFDX01haW4gPSAxLAogICAga01QRUc0T2JqZWN0X0FBQ19MQyA9
IDIsCiAgICBrTVBFRzRPYmplY3RfQUFDX1NTUiA9IDMsCiAgICBrTVBFRzRPYmplY3RfQUFDX0xU
UCA9IDQsCiAgICBrTVBFRzRPYmplY3RfQUFDX1NCUiA9IDUsCiAgICBrTVBFRzRPYmplY3RfQUFD
X1NjYWxhYmxlID0gNiwKICAgIGtNUEVHNE9iamVjdF9Ud2luVlEgPSA3LAogICAga01QRUc0T2Jq
ZWN0X0NFTFAgPSA4LAogICAga01QRUc0T2JqZWN0X0hWWEMgPSA5Cn07CgoKCgp9CiMgMTMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUVGltZS5o
IiAyIDMKCgplbnVtIHsKICAgIGtRVFRpbWVJc0luZGVmaW5pdGUgPSAxIDw8IDAKfTsKCnR5cGVk
ZWYgc3RydWN0IHsKIGxvbmcgbG9uZyB0aW1lVmFsdWU7CiBsb25nIHRpbWVTY2FsZTsKIGxvbmcg
ZmxhZ3M7Cn0gUVRUaW1lOwoKZXh0ZXJuICJDIiBjb25zdCBRVFRpbWUgUVRaZXJvVGltZSA7CmV4
dGVybiAiQyIgY29uc3QgUVRUaW1lIFFUSW5kZWZpbml0ZVRpbWUgOwoKZXh0ZXJuICJDIiBRVFRp
bWUgUVRNYWtlVGltZVdpdGhUaW1lUmVjb3JkIChUaW1lUmVjb3JkIHRpbWVSZWNvcmQpIDsKZXh0
ZXJuICJDIiBRVFRpbWUgUVRNYWtlVGltZVdpdGhUaW1lSW50ZXJ2YWwgKE5TVGltZUludGVydmFs
IHRpbWVJbnRlcnZhbCkgOwpleHRlcm4gIkMiIFFUVGltZSBRVE1ha2VUaW1lIChsb25nIGxvbmcg
dGltZVZhbHVlLCBsb25nIHRpbWVTY2FsZSkgOwpleHRlcm4gIkMiIFFUVGltZSBRVE1ha2VUaW1l
U2NhbGVkIChRVFRpbWUgdGltZSwgbG9uZyB0aW1lU2NhbGUpIDsKCmV4dGVybiAiQyIgQk9PTCBR
VEdldFRpbWVSZWNvcmQgKFFUVGltZSB0aW1lLCBUaW1lUmVjb3JkICp0aW1lUmVjb3JkKSA7CmV4
dGVybiAiQyIgQk9PTCBRVEdldFRpbWVJbnRlcnZhbCAoUVRUaW1lIHRpbWUsIE5TVGltZUludGVy
dmFsICp0aW1lSW50ZXJ2YWwpIDsKCmV4dGVybiAiQyIgTlNDb21wYXJpc29uUmVzdWx0IFFUVGlt
ZUNvbXBhcmUgKFFUVGltZSB0aW1lLCBRVFRpbWUgb3RoZXJUaW1lKSA7CgpleHRlcm4gIkMiIFFU
VGltZSBRVFRpbWVJbmNyZW1lbnQgKFFUVGltZSB0aW1lLCBRVFRpbWUgaW5jcmVtZW50KSA7CmV4
dGVybiAiQyIgUVRUaW1lIFFUVGltZURlY3JlbWVudCAoUVRUaW1lIHRpbWUsIFFUVGltZSBkZWNy
ZW1lbnQpIDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICpRVFN0cmluZ0Zyb21UaW1lIChRVFRpbWUg
dGltZSkgOwpleHRlcm4gIkMiIFFUVGltZSBRVFRpbWVGcm9tU3RyaW5nIChOU1N0cmluZyAqc3Ry
aW5nKSA7CgpleHRlcm4gIkMiIEJPT0wgUVRUaW1lSXNJbmRlZmluaXRlIChRVFRpbWUgdGltZSkg
OwoKQGludGVyZmFjZSBOU1ZhbHVlIChOU1ZhbHVlUVRUaW1lRXh0ZW5zaW9ucykKKyAoTlNWYWx1
ZSAqKXZhbHVlV2l0aFFUVGltZTooUVRUaW1lKXRpbWU7Ci0gKFFUVGltZSlRVFRpbWVWYWx1ZTsK
QGVuZAoKQGludGVyZmFjZSBOU0NvZGVyIChOU1FUVGltZUNvZGluZykKLSAodm9pZCllbmNvZGVR
VFRpbWU6KFFUVGltZSl0aW1lIGZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0gKFFUVGltZSlkZWNv
ZGVRVFRpbWVGb3JLZXk6KE5TU3RyaW5nICopa2V5OwpAZW5kCgoKCgpleHRlcm4gIkMiIE5TU3Ry
aW5nICpRVFN0cmluZ0Zyb21TTVBURVRpbWUoU01QVEVUaW1lIHRpbWUpIDsKCgoKQGludGVyZmFj
ZSBOU1ZhbHVlIChOU1ZhbHVlUVRTTVBURVRpbWVFeHRlbnNpb25zKQorIChOU1ZhbHVlICopdmFs
dWVXaXRoU01QVEVUaW1lOihTTVBURVRpbWUpdGltZTsKLSAoU01QVEVUaW1lKVNNUFRFVGltZVZh
bHVlOwpAZW5kCgpAaW50ZXJmYWNlIE5TQ29kZXIgKE5TQ29kZXJRVFNNUFRFVGltZUNvZGluZykK
LSAodm9pZCllbmNvZGVTTVBURVRpbWU6KFNNUFRFVGltZSl0aW1lIGZvcktleTooTlNTdHJpbmcg
KilrZXk7Ci0gKFNNUFRFVGltZSlkZWNvZGVTTVBURVRpbWVGb3JLZXk6KE5TU3RyaW5nICopa2V5
OwpAZW5kCiMgMzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9I
ZWFkZXJzL1FUTW92aWUuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRUaW1lUmFuZ2UuaCIgMSAzCiMgMTUgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUVGltZVJhbmdlLmgiIDMK
dHlwZWRlZiBzdHJ1Y3QgewogUVRUaW1lIHRpbWU7CiBRVFRpbWUgZHVyYXRpb247Cn0gUVRUaW1l
UmFuZ2U7CgpleHRlcm4gIkMiIFFUVGltZVJhbmdlIFFUTWFrZVRpbWVSYW5nZSAoUVRUaW1lIHRp
bWUsIFFUVGltZSBkdXJhdGlvbikgOwoKZXh0ZXJuICJDIiBCT09MIFFUVGltZUluVGltZVJhbmdl
IChRVFRpbWUgdGltZSwgUVRUaW1lUmFuZ2UgcmFuZ2UpIDsKZXh0ZXJuICJDIiBCT09MIFFURXF1
YWxUaW1lUmFuZ2VzIChRVFRpbWVSYW5nZSByYW5nZSwgUVRUaW1lUmFuZ2UgcmFuZ2UyKSA7Cgpl
eHRlcm4gIkMiIFFUVGltZSBRVFRpbWVSYW5nZUVuZCAoUVRUaW1lUmFuZ2UgcmFuZ2UpIDsKCmV4
dGVybiAiQyIgUVRUaW1lUmFuZ2UgUVRVbmlvblRpbWVSYW5nZSAoUVRUaW1lUmFuZ2UgcmFuZ2Ux
LCBRVFRpbWVSYW5nZSByYW5nZTIpIDsKZXh0ZXJuICJDIiBRVFRpbWVSYW5nZSBRVEludGVyc2Vj
dGlvblRpbWVSYW5nZSAoUVRUaW1lUmFuZ2UgcmFuZ2UxLCBRVFRpbWVSYW5nZSByYW5nZTIpIDsK
CgpleHRlcm4gIkMiIE5TU3RyaW5nICpRVFN0cmluZ0Zyb21UaW1lUmFuZ2UgKFFUVGltZVJhbmdl
IHJhbmdlKSA7CmV4dGVybiAiQyIgUVRUaW1lUmFuZ2UgUVRUaW1lUmFuZ2VGcm9tU3RyaW5nIChO
U1N0cmluZyogc3RyaW5nKSA7CgpAaW50ZXJmYWNlIE5TVmFsdWUgKE5TVmFsdWVRVFRpbWVSYW5n
ZUV4dGVuc2lvbnMpCisgKE5TVmFsdWUgKil2YWx1ZVdpdGhRVFRpbWVSYW5nZTooUVRUaW1lUmFu
Z2UpcmFuZ2U7Ci0gKFFUVGltZVJhbmdlKVFUVGltZVJhbmdlVmFsdWU7CkBlbmQKCkBpbnRlcmZh
Y2UgTlNDb2RlciAoTlNRVFRpbWVSYW5nZUNvZGluZykKLSAodm9pZCllbmNvZGVRVFRpbWVSYW5n
ZTooUVRUaW1lUmFuZ2UpcmFuZ2UgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLSAoUVRUaW1lUmFu
Z2UpZGVjb2RlUVRUaW1lUmFuZ2VGb3JLZXk6KE5TU3RyaW5nICopa2V5OwpAZW5kCiMgMzkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUu
aCIgMiAzCgoKCgoKCgpAY2xhc3MgUVRNb3ZpZTsKQGNsYXNzIFFUVHJhY2s7CkBjbGFzcyBRVERh
dGFSZWZlcmVuY2U7CkBjbGFzcyBRVE1vdmllTWVkaWFIZWxwZXI7CkBjbGFzcyBRVEludmFsaWRh
dGlvblNldDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZVBhc3RlYm9hcmRU
eXBlIDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUVkaXRhYmlsaXR5RGlk
Q2hhbmdlTm90aWZpY2F0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVF
ZGl0ZWROb3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUxv
YWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25z
dCBRVE1vdmllTG9vcE1vZGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5TU3Ry
aW5nICogY29uc3QgUVRNb3ZpZU1lc3NhZ2VTdHJpbmdQb3N0ZWROb3RpZmljYXRpb24gOwpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZVJhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24g
OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZVNlbGVjdGlvbkRpZENoYW5nZU5v
dGlmaWNhdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllTmF0dXJhbFNp
emVEaWRDaGFuZ2VOb3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRN
b3ZpZVNpemVEaWRDaGFuZ2VOb3RpZmljYXRpb24gX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZCkp
OwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZVN0YXR1c1N0cmluZ1Bvc3RlZE5v
dGlmaWNhdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllVGltZURpZENo
YW5nZU5vdGlmaWNhdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllVm9s
dW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFU
TW92aWVEaWRFbmROb3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRN
b3ZpZUNoYXB0ZXJEaWRDaGFuZ2VOb3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICog
Y29uc3QgUVRNb3ZpZUNoYXB0ZXJMaXN0RGlkQ2hhbmdlTm90aWZpY2F0aW9uIDsKZXh0ZXJuICJD
IiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVFbnRlckZ1bGxTY3JlZW5SZXF1ZXN0Tm90aWZpY2F0
aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVFeGl0RnVsbFNjcmVlblJl
cXVlc3ROb3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUNs
b3NlV2luZG93UmVxdWVzdE5vdGlmaWNhdGlvbiA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25z
dCBRVE1vdmllQXBlcnR1cmVNb2RlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIDsKCgpleHRlcm4gIkMi
IE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZU1lc3NhZ2VOb3RpZmljYXRpb25QYXJhbWV0ZXIgOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZVJhdGVEaWRDaGFuZ2VOb3RpZmljYXRp
b25QYXJhbWV0ZXIgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZVN0YXR1c0Zs
YWdzTm90aWZpY2F0aW9uUGFyYW1ldGVyIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFU
TW92aWVTdGF0dXNDb2RlTm90aWZpY2F0aW9uUGFyYW1ldGVyIDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IFFUTW92aWVTdGF0dXNTdHJpbmdOb3RpZmljYXRpb25QYXJhbWV0ZXIgOwoKZXh0
ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVUYXJnZXRJRE5vdGlmaWNhdGlvblBhcmFt
ZXRlciA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllVGFyZ2V0TmFtZU5vdGlm
aWNhdGlvblBhcmFtZXRlciA7CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVF
eHBvcnQgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUV4cG9ydFR5cGUgOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUZsYXR0ZW4gOwpleHRlcm4gIkMiIE5T
U3RyaW5nICogY29uc3QgUVRNb3ZpZUV4cG9ydFNldHRpbmdzIDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IFFUTW92aWVFeHBvcnRNYW51ZmFjdHVyZXIgOwoKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKiBjb25zdCBRVEFkZEltYWdlQ29kZWNUeXBlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNv
bnN0IFFUQWRkSW1hZ2VDb2RlY1F1YWxpdHkgOwojIDEwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBRVE1vdmllRGF0YVJlZmVyZW5jZUF0dHJpYnV0ZSA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBRVE1vdmllUGFzdGVib2FyZEF0dHJpYnV0ZSA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBRVE1vdmllRGF0YUF0dHJpYnV0ZSA7CgoKZXh0ZXJuICJDIiBOU1N0
cmluZyAqIGNvbnN0IFFUTW92aWVGaWxlT2Zmc2V0QXR0cmlidXRlIDsKZXh0ZXJuICJDIiBOU1N0
cmluZyAqIGNvbnN0IFFUTW92aWVEb250SW50ZXJhY3RXaXRoVXNlckF0dHJpYnV0ZSA7CiMgMTE5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1v
dmllLmgiIDMKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVSZXNvbHZlRGF0YVJl
ZnNBdHRyaWJ1dGUgOwojIDEzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBR
VE1vdmllQXNrVW5yZXNvbHZlZERhdGFSZWZzQXR0cmlidXRlIDsKIyAxNDIgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZU9wZW5Bc3luY09LQXR0cmlidXRlIDsKIyAx
NTIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FU
TW92aWUuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZU9wZW5Bc3luY1Jl
cXVpcmVkQXR0cmlidXRlIDsKIyAxNjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0
LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29u
c3QgUVRNb3ZpZU9wZW5Gb3JQbGF5YmFja0F0dHJpYnV0ZSA7CiMgMTc3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVBcGVydHVyZU1vZGVBdHRyaWJ1dGUgOwojIDE4
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRN
b3ZpZS5oIiAzCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllQWN0aXZlU2VnbWVu
dEF0dHJpYnV0ZSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgoKCgoKCgpleHRlcm4gIkMi
IE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUF1dG9BbHRlcm5hdGVzQXR0cmlidXRlIDsKCgoKCgoK
CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllQ29weXJpZ2h0QXR0cmlidXRlIDsK
CgoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllQ3JlYXRpb25UaW1lQXR0
cmlidXRlIDsKIyAyMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29y
ay9IZWFkZXJzL1FUTW92aWUuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3Zp
ZUN1cnJlbnRTaXplQXR0cmlidXRlIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKCgoK
CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllQ3VycmVudFRpbWVBdHRyaWJ1dGUg
OwoKCgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVEYXRhU2l6ZUF0dHJp
YnV0ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZURlbGVnYXRl
QXR0cmlidXRlIDsKIyAyNTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1l
d29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRN
b3ZpZURpc3BsYXlOYW1lQXR0cmlidXRlIDsKCgoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBj
b25zdCBRVE1vdmllRHVyYXRpb25BdHRyaWJ1dGUgOwojIDI3MCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBRVE1vdmllRWRpdGFibGVBdHRyaWJ1dGUgOwoKCgoKCgoKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVGaWxlTmFtZUF0dHJpYnV0ZSA7CiMgMjg4ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmll
LmgiIDMKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVIYXNBcGVydHVyZU1vZGVE
aW1lbnNpb25zQXR0cmlidXRlIDsKIyAyOTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FU
S2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICog
Y29uc3QgUVRNb3ZpZUhhc0F1ZGlvQXR0cmlidXRlIDsKIyAzMDcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwpleHRlcm4gIkMi
IE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUhhc0R1cmF0aW9uQXR0cmlidXRlIDsKIyAzMTYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUu
aCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUhhc1ZpZGVvQXR0cmlidXRl
IDsKCgoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllSXNBY3RpdmVBdHRy
aWJ1dGUgOwojIDMzMyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvUVRNb3ZpZS5oIiAzCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmll
SXNJbnRlcmFjdGl2ZUF0dHJpYnV0ZSA7CiMgMzQyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IFFUTW92aWVJc0xpbmVhckF0dHJpYnV0ZSA7CiMgMzUxICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVJc1N0ZXBwYWJsZUF0dHJpYnV0ZSA7CgoKCgoK
CgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUxvYWRTdGF0ZUF0dHJpYnV0ZSA7
CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUxvYWRTdGF0ZUVycm9y
QXR0cmlidXRlIDsKIyAzNzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1l
d29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRN
b3ZpZUxvb3BzQXR0cmlidXRlIDsKIyAzODggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FU
S2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICog
Y29uc3QgUVRNb3ZpZUxvb3BzQmFja0FuZEZvcnRoQXR0cmlidXRlIDsKCgoKCgoKCmV4dGVybiAi
QyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllTW9kaWZpY2F0aW9uVGltZUF0dHJpYnV0ZSA7CiMg
NDA1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9R
VE1vdmllLmgiIDMKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVNdXRlZEF0dHJp
YnV0ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZU5hdHVyYWxT
aXplQXR0cmlidXRlIDsKIyA0MjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZy
YW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
UVRNb3ZpZVBsYXlzQWxsRnJhbWVzQXR0cmlidXRlIDsKIyA0MzEgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwpleHRlcm4gIkMi
IE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZVBsYXlzU2VsZWN0aW9uT25seUF0dHJpYnV0ZSA7CgoK
CgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZVBvc3RlclRpbWVBdHRyaWJ1
dGUgOwojIDQ0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvUVRNb3ZpZS5oIiAzCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllUHJl
ZmVycmVkTXV0ZWRBdHRyaWJ1dGUgOwoKCgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0
IFFUTW92aWVQcmVmZXJyZWRSYXRlQXR0cmlidXRlIDsKCgoKCgoKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKiBjb25zdCBRVE1vdmllUHJlZmVycmVkVm9sdW1lQXR0cmlidXRlIDsKIyA0NzMgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIg
MwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZVByZXZpZXdNb2RlQXR0cmlidXRl
IDsKCgoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllUHJldmlld1Jhbmdl
QXR0cmlidXRlIDsKCgoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllUmF0
ZUF0dHJpYnV0ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZVNl
bGVjdGlvbkF0dHJpYnV0ZSA7CiMgNTA3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNv
bnN0IFFUTW92aWVUaW1lU2NhbGVBdHRyaWJ1dGUgOwoKCgoKCgoKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IFFUTW92aWVVUkxBdHRyaWJ1dGUgOwoKCgoKCgoKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IFFUTW92aWVWb2x1bWVBdHRyaWJ1dGUgOwojIDUzNiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCmV4dGVybiAi
QyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllUmF0ZUNoYW5nZXNQcmVzZXJ2ZVBpdGNoQXR0cmli
dXRlIDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUFwZXJ0dXJlTW9kZUNs
YXNzaWMgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUFwZXJ0dXJlTW9kZUNs
ZWFuIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVBcGVydHVyZU1vZGVQcm9k
dWN0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVBcGVydHVyZU1vZGVF
bmNvZGVkUGl4ZWxzIDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUZyYW1l
SW1hZ2VTaXplIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVGcmFtZUltYWdl
VHlwZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllRnJhbWVJbWFnZVR5cGVO
U0ltYWdlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVGcmFtZUltYWdlVHlw
ZUNHSW1hZ2VSZWYgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUZyYW1lSW1h
Z2VUeXBlQ0lJbWFnZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllRnJhbWVJ
bWFnZVR5cGVDVlBpeGVsQnVmZmVyUmVmIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFU
TW92aWVGcmFtZUltYWdlVHlwZUNWT3BlbkdMVGV4dHVyZVJlZiA7CmV4dGVybiAiQyIgTlNTdHJp
bmcgKiBjb25zdCBRVE1vdmllRnJhbWVJbWFnZU9wZW5HTENvbnRleHQgOwpleHRlcm4gIkMiIE5T
U3RyaW5nICogY29uc3QgUVRNb3ZpZUZyYW1lSW1hZ2VQaXhlbEZvcm1hdCA7CmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBRVE1vdmllRnJhbWVJbWFnZVJlcHJlc2VudGF0aW9uc1R5cGUgOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZUZyYW1lSW1hZ2VEZWludGVybGFjZUZp
ZWxkcyA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllRnJhbWVJbWFnZUhpZ2hR
dWFsaXR5IDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVGcmFtZUltYWdlU2lu
Z2xlRmllbGQgOwojIDU2OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1v
dmllRnJhbWVJbWFnZVNlc3Npb25Nb2RlIDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
UVRNb3ZpZVVuZWRpdGFibGVFeGNlcHRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
UVREaXNhbGxvd2VkRm9ySW5pdGlhbGl6YXRpb25QdXJwb3NlRXhjZXB0aW9uCiAgICAgICAgICAg
ICAgICAgICA7CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVDaGFwdGVyTmFt
ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1vdmllQ2hhcHRlclN0YXJ0VGltZSA7
CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTW92aWVDaGFwdGVyVGFyZ2V0VHJhY2tB
dHRyaWJ1dGUgOwoKCnR5cGVkZWYgZW51bSB7CiBRVEluY2x1ZGVTdGlsbEltYWdlVHlwZXMgPSAx
IDw8IDAsCiBRVEluY2x1ZGVUcmFuc2xhdGFibGVUeXBlcyA9IDEgPDwgMSwKIFFUSW5jbHVkZUFn
Z3Jlc3NpdmVUeXBlcyA9IDEgPDwgMiwKCiBRVEluY2x1ZGVEeW5hbWljVHlwZXMgPSAxIDw8IDMs
CgogUVRJbmNsdWRlQ29tbW9uVHlwZXMgPSAwLAogUVRJbmNsdWRlQWxsVHlwZXMgPSAweGZmZmYK
fSBRVE1vdmllRmlsZVR5cGVPcHRpb25zOwoKCnR5cGVkZWYgZW51bSB7CgogUVRNb3ZpZU9wZXJh
dGlvbkJlZ2luUGhhc2UgPSAwLAogUVRNb3ZpZU9wZXJhdGlvblVwZGF0ZVBlcmNlbnRQaGFzZSA9
IDEsCiBRVE1vdmllT3BlcmF0aW9uRW5kUGhhc2UgPSAyCgoKCgoKfSBRVE1vdmllT3BlcmF0aW9u
UGhhc2U7CgoKCmVudW0gewogUVRNb3ZpZUxvYWRTdGF0ZUVycm9yID0gLTFMLAogUVRNb3ZpZUxv
YWRTdGF0ZUxvYWRpbmcgPSAxMDAwLAogUVRNb3ZpZUxvYWRTdGF0ZUxvYWRlZCA9IDIwMDAsCiBR
VE1vdmllTG9hZFN0YXRlUGxheWFibGUgPSAxMDAwMCwKIFFUTW92aWVMb2FkU3RhdGVQbGF5dGhy
b3VnaE9LID0gMjAwMDAsCiBRVE1vdmllTG9hZFN0YXRlQ29tcGxldGUgPSAxMDAwMDBMCn07CnR5
cGVkZWYgTlNJbnRlZ2VyIFFUTW92aWVMb2FkU3RhdGU7CgoKQGludGVyZmFjZSBOU09iamVjdCAo
UVRNb3ZpZV9EZWxlZ2F0ZSkKIyA2MzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0
LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwogLSAoQk9PTCltb3ZpZTooUVRNb3ZpZSAq
KW1vdmllIGxpbmtUb1VSTDooTlNVUkwgKil1cmw7CiMgNjQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKIC0gKEJPT0wpbW92
aWVTaG91bGRMb2FkRGF0YTooaWQpc2VuZGVyOwojIDY1NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCiAtIChCT09MKW1vdmll
U2hvdWxkVGFzazooaWQpbW92aWU7CiMgNjcxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9R
VEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKIC0gKFFUTW92aWUgKilleHRlcm5h
bE1vdmllOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5OwojIDY4OSAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCiAtIChCT09M
KW1vdmllOihRVE1vdmllICopbW92aWUgc2hvdWxkQ29udGludWVPcGVyYXRpb246KE5TU3RyaW5n
ICopb3Agd2l0aFBoYXNlOihRVE1vdmllT3BlcmF0aW9uUGhhc2UpcGhhc2UgYXRQZXJjZW50OihO
U051bWJlciAqKXBlcmNlbnQgd2l0aEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0
ZXM7CkBlbmQKCkBpbnRlcmZhY2UgUVRNb3ZpZSA6IE5TT2JqZWN0IDxOU0NvZGluZywgTlNDb3B5
aW5nPgp7CkBwcml2YXRlCgoKCiBsb25nIF9zdGF0ZTsKIFFUTW92aWVNZWRpYUhlbHBlciAqX21l
ZGlhSGVscGVyOwogQ0ZCb29sZWFuUmVmIF9pbml0ZWRWaWFJbml0V2l0aEF0dHJpYnV0ZXM7CiBR
VEludmFsaWRhdGlvblNldCAqX2NoaWxkcmVuOwogbG9uZyBfcmVzZXJ2ZWQxOwogbG9uZyBfcmVz
ZXJ2ZWQyOwogbG9uZyBfcmVzZXJ2ZWQzOwogbG9uZyBfcmVzZXJ2ZWQ0OwogbG9uZyBfcmVzZXJ2
ZWQ1OwogbG9uZyBfcmVzZXJ2ZWQ2OwogbG9uZyBfcmVzZXJ2ZWQ3OwogbG9uZyBfcmVzZXJ2ZWQ4
OwogbG9uZyBfcmVzZXJ2ZWQ5OwogbG9uZyBfcmVzZXJ2ZWQxMDsKIGxvbmcgX3Jlc2VydmVkMTE7
CiBsb25nIF9yZXNlcnZlZDEyOwogbG9uZyBfcmVzZXJ2ZWQxMzsKIGxvbmcgX3Jlc2VydmVkMTQ7
CiBsb25nIF9yZXNlcnZlZDE1Owp9CgoKCgoKCgotIChRVFRpbWUpZHVyYXRpb247CgpAZW5kCgpA
aW50ZXJmYWNlIFFUTW92aWUgKFFUTW92aWVfSW5pdGlhbGl6YXRpb24pCiMgNzM4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMK
KyAoQk9PTCljYW5Jbml0V2l0aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQ7
CiMgNzQ3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9RVE1vdmllLmgiIDMKKyAoQk9PTCljYW5Jbml0V2l0aEZpbGU6KE5TU3RyaW5nICopZmlsZU5h
bWU7CiMgNzU2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9RVE1vdmllLmgiIDMKKyAoQk9PTCljYW5Jbml0V2l0aFVSTDooTlNVUkwgKil1cmw7CiMg
NzY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9R
VE1vdmllLmgiIDMKKyAoQk9PTCljYW5Jbml0V2l0aERhdGFSZWZlcmVuY2U6KFFURGF0YVJlZmVy
ZW5jZSAqKWRhdGFSZWZlcmVuY2U7CiMgNzc5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9R
VEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKKyAoTlNBcnJheSAqKW1vdmllRmls
ZVR5cGVzOihRVE1vdmllRmlsZVR5cGVPcHRpb25zKXR5cGVzOwoKCgoKCgorIChOU0FycmF5ICop
bW92aWVVbmZpbHRlcmVkRmlsZVR5cGVzOwoKCgoKCgorIChOU0FycmF5ICopbW92aWVVbmZpbHRl
cmVkUGFzdGVib2FyZFR5cGVzOwojIDgwNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCisgKE5TQXJyYXkgKiltb3ZpZVR5cGVz
V2l0aE9wdGlvbnM6KFFUTW92aWVGaWxlVHlwZU9wdGlvbnMpdHlwZXM7CgoKCgoKCgorIChpZClt
b3ZpZTsKIyA4MjMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9I
ZWFkZXJzL1FUTW92aWUuaCIgMworIChpZCltb3ZpZVdpdGhGaWxlOihOU1N0cmluZyAqKWZpbGVO
YW1lIGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwojIDgzNCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCisgKGlkKW1vdmll
V2l0aFVSTDooTlNVUkwgKil1cmwgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7CiMgODQ1ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmll
LmgiIDMKKyAoaWQpbW92aWVXaXRoRGF0YVJlZmVyZW5jZTooUVREYXRhUmVmZXJlbmNlICopZGF0
YVJlZmVyZW5jZSBlcnJvcjooTlNFcnJvciAqKillcnJvclB0cjsKIyA4NTcgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMworIChp
ZCltb3ZpZVdpdGhQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIGVycm9yOihO
U0Vycm9yICoqKWVycm9yUHRyOwojIDg2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCisgKGlkKW1vdmllV2l0aERhdGE6KE5T
RGF0YSAqKWRhdGEgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7CiMgOTA0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKKyAo
aWQpbW92aWVXaXRoQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlcyBlcnJvcjoo
TlNFcnJvciAqKillcnJvclB0cjsKIyA5MTMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FU
S2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMworIChpZCltb3ZpZU5hbWVkOihOU1N0
cmluZyAqKW5hbWUgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7CiMgOTI0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKLSAo
aWQpaW5pdFdpdGhGaWxlOihOU1N0cmluZyAqKWZpbGVOYW1lIGVycm9yOihOU0Vycm9yICoqKWVy
cm9yUHRyOwojIDkzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvUVRNb3ZpZS5oIiAzCi0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybCBlcnJv
cjooTlNFcnJvciAqKillcnJvclB0cjsKIyA5NDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwotIChpZClpbml0V2l0aERhdGFS
ZWZlcmVuY2U6KFFURGF0YVJlZmVyZW5jZSAqKWRhdGFSZWZlcmVuY2UgZXJyb3I6KE5TRXJyb3Ig
KiopZXJyb3JQdHI7CiMgOTU4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKLSAoaWQpaW5pdFdpdGhQYXN0ZWJvYXJkOihOU1Bh
c3RlYm9hcmQgKilwYXN0ZWJvYXJkIGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwojIDk2OSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3Zp
ZS5oIiAzCi0gKGlkKWluaXRXaXRoRGF0YTooTlNEYXRhICopZGF0YSBlcnJvcjooTlNFcnJvciAq
KillcnJvclB0cjsKIyA5ODIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1l
d29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwotIChpZClpbml0V2l0aE1vdmllOihRVE1vdmllICop
bW92aWUgdGltZVJhbmdlOihRVFRpbWVSYW5nZSlyYW5nZSBlcnJvcjooTlNFcnJvciAqKillcnJv
clB0cjsKIyAxMDE4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9RVE1vdmllLmgiIDMKLSAoaWQpaW5pdFdpdGhBdHRyaWJ1dGVzOihOU0RpY3Rpb25h
cnkgKilhdHRyaWJ1dGVzIGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwojIDEwMzAgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIg
MwotIChpZCltb3ZpZVdpdGhUaW1lUmFuZ2U6KFFUVGltZVJhbmdlKXJhbmdlIGVycm9yOihOU0Vy
cm9yICoqKWVycm9yUHRyOwojIDEwNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0
LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwotIChpZClpbml0VG9Xcml0YWJsZUZpbGU6
KE5TU3RyaW5nICopZmlsZW5hbWUgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7CiMgMTA1NyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3Zp
ZS5oIiAzCi0gKGlkKWluaXRUb1dyaXRhYmxlRGF0YTooTlNNdXRhYmxlRGF0YSAqKWRhdGEgZXJy
b3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7CiMgMTA3MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCi0gKGlkKWluaXRUb1dyaXRh
YmxlRGF0YVJlZmVyZW5jZTooUVREYXRhUmVmZXJlbmNlICopZGF0YVJlZmVyZW5jZSBlcnJvcjoo
TlNFcnJvciAqKillcnJvclB0cjsKIyAxMDg0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9R
VEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKLSAodm9pZClpbnZhbGlkYXRlOwoK
CkBlbmQKCkBpbnRlcmZhY2UgUVRNb3ZpZSAoUVRNb3ZpZV9JbnNwZWN0aW9uKQoKCgoKCgoKLSAo
TlNEaWN0aW9uYXJ5ICopbW92aWVBdHRyaWJ1dGVzOwojIDExMDcgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwotICh2b2lkKXNl
dE1vdmllQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlczsKIyAxMTE3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgi
IDMKLSAoaWQpYXR0cmlidXRlRm9yS2V5OihOU1N0cmluZyAqKWF0dHJpYnV0ZUtleTsKIyAxMTI5
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1v
dmllLmgiIDMKLSAodm9pZClzZXRBdHRyaWJ1dGU6KGlkKXZhbHVlIGZvcktleTooTlNTdHJpbmcg
KilhdHRyaWJ1dGVLZXk7CgoKCgoKCi0gKE5TQXJyYXkgKil0cmFja3M7CiMgMTE0NSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAz
Ci0gKE5TQXJyYXkgKil0cmFja3NPZk1lZGlhVHlwZTooTlNTdHJpbmcgKil0eXBlOwoKQGVuZAoK
QGludGVyZmFjZSBRVE1vdmllIChRVE1vdmllX0ltYWdlKQojIDExNTggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwotIChOU0lt
YWdlICopcG9zdGVySW1hZ2U7CiMgMTE2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCi0gKE5TSW1hZ2UgKiljdXJyZW50RnJh
bWVJbWFnZTsKIyAxMTc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9RVE1vdmllLmgiIDMKLSAoTlNJbWFnZSAqKWZyYW1lSW1hZ2VBdFRpbWU6KFFU
VGltZSl0aW1lOwojIDExOTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1l
d29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwotICh2b2lkICopZnJhbWVJbWFnZUF0VGltZTooUVRU
aW1lKXRpbWUgd2l0aEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXMgZXJyb3I6
KE5TRXJyb3IgKiopZXJyb3JQdHI7CgoKQGVuZAoKQGludGVyZmFjZSBRVE1vdmllIChRVE1vdmll
X0Zvcm1hdCkKCgoKCgoKCi0gKE5TRGF0YSAqKW1vdmllRm9ybWF0UmVwcmVzZW50YXRpb247CiMg
MTIyNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
UVRNb3ZpZS5oIiAzCi0gKEJPT0wpd3JpdGVUb0ZpbGU6KE5TU3RyaW5nICopZmlsZU5hbWUgd2l0
aEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXM7CiMgMTI0NiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCi0g
KEJPT0wpd3JpdGVUb0ZpbGU6KE5TU3RyaW5nICopZmlsZU5hbWUgd2l0aEF0dHJpYnV0ZXM6KE5T
RGljdGlvbmFyeSAqKWF0dHJpYnV0ZXMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7CiMgMTI1
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRN
b3ZpZS5oIiAzCi0gKEJPT0wpY2FuVXBkYXRlTW92aWVGaWxlOwoKCgoKCgoKLSAoQk9PTCl1cGRh
dGVNb3ZpZUZpbGU7CgpAZW5kCgpAaW50ZXJmYWNlIFFUTW92aWUgKFFUTW92aWVfVGltZSkKIyAx
Mjc4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9R
VE1vdmllLmgiIDMKLSAodm9pZClhdXRvcGxheTsKCgoKCgoKCi0gKHZvaWQpcGxheTsKCgoKCgoK
LSAodm9pZClzdG9wOwoKCgoKCgotIChRVFRpbWUpY3VycmVudFRpbWU7CiMgMTMwOSAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAz
Ci0gKHZvaWQpc2V0Q3VycmVudFRpbWU6KFFUVGltZSl0aW1lOwoKCgoKCgoKLSAodm9pZClnb3Rv
QmVnaW5uaW5nOwoKCgoKCgoKLSAodm9pZClnb3RvRW5kOwoKCgoKCgotICh2b2lkKWdvdG9OZXh0
U2VsZWN0aW9uUG9pbnQ7CgoKCgoKCi0gKHZvaWQpZ290b1ByZXZpb3VzU2VsZWN0aW9uUG9pbnQ7
CiMgMTM0OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRl
cnMvUVRNb3ZpZS5oIiAzCi0gKHZvaWQpZ290b1Bvc3RlclRpbWU7CgoKCgoKCi0gKHZvaWQpc3Rl
cEZvcndhcmQ7CgoKCgoKCi0gKHZvaWQpc3RlcEJhY2t3YXJkOwoKQGVuZAoKQGludGVyZmFjZSBR
VE1vdmllIChRVE1vdmllX1BsYXliYWNrQ29udHJvbCkKCgoKCgoKCi0gKGZsb2F0KXJhdGU7CiMg
MTM4MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
UVRNb3ZpZS5oIiAzCi0gKHZvaWQpc2V0UmF0ZTooZmxvYXQpcmF0ZTsKCgoKCgoKLSAoZmxvYXQp
dm9sdW1lOwojIDEzOTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29y
ay9IZWFkZXJzL1FUTW92aWUuaCIgMwotICh2b2lkKXNldFZvbHVtZTooZmxvYXQpdm9sdW1lOwoK
CgoKCgoKLSAoQk9PTCltdXRlZDsKIyAxNDE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9R
VEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKLSAodm9pZClzZXRNdXRlZDooQk9P
TCltdXRlOwoKQGVuZAoKQGludGVyZmFjZSBRVE1vdmllIChRVE1vdmllX1NlbGVjdGlvbikKIyAx
NDI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9R
VE1vdmllLmgiIDMKLSAodm9pZClzZXRTZWxlY3Rpb246KFFUVGltZVJhbmdlKXNlbGVjdGlvbjsK
CgoKCgoKCi0gKFFUVGltZSlzZWxlY3Rpb25TdGFydDsKCgoKCgoKCi0gKFFUVGltZSlzZWxlY3Rp
b25FbmQ7CgoKCgoKCgotIChRVFRpbWUpc2VsZWN0aW9uRHVyYXRpb247CgpAZW5kCgpAaW50ZXJm
YWNlIFFUTW92aWUgKFFUTW92aWVfRWRpdGluZykKIyAxNDY3ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKLSAodm9pZClyZXBs
YWNlU2VsZWN0aW9uV2l0aFNlbGVjdGlvbkZyb21Nb3ZpZTooaWQpbW92aWU7CiMgMTQ3NyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5o
IiAzCi0gKHZvaWQpYXBwZW5kU2VsZWN0aW9uRnJvbU1vdmllOihpZCltb3ZpZTsKIyAxNDkxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmll
LmgiIDMKLSAodm9pZClpbnNlcnRTZWdtZW50T2ZNb3ZpZTooUVRNb3ZpZSAqKW1vdmllIHRpbWVS
YW5nZTooUVRUaW1lUmFuZ2UpcmFuZ2UgYXRUaW1lOihRVFRpbWUpdGltZTsKIyAxNTA1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgi
IDMKLSAodm9pZClpbnNlcnRTZWdtZW50T2ZNb3ZpZTooUVRNb3ZpZSAqKW1vdmllIGZyb21SYW5n
ZTooUVRUaW1lUmFuZ2Upc3JjUmFuZ2Ugc2NhbGVkVG9SYW5nZTooUVRUaW1lUmFuZ2UpZHN0UmFu
Z2U7CiMgMTUxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvUVRNb3ZpZS5oIiAzCi0gKHZvaWQpaW5zZXJ0RW1wdHlTZWdtZW50QXQ6KFFUVGltZVJh
bmdlKXJhbmdlOwojIDE1MjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1l
d29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwotICh2b2lkKWRlbGV0ZVNlZ21lbnQ6KFFUVGltZVJh
bmdlKXNlZ21lbnQ7CiMgMTUzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCi0gKHZvaWQpc2NhbGVTZWdtZW50OihRVFRpbWVS
YW5nZSlzZWdtZW50IG5ld0R1cmF0aW9uOihRVFRpbWUpbmV3RHVyYXRpb247CiMgMTU1NiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5o
IiAzCi0gKHZvaWQpYWRkSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBmb3JEdXJhdGlvbjooUVRUaW1l
KWR1cmF0aW9uIHdpdGhBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilhdHRyaWJ1dGVzOwojIDE1
NzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FU
TW92aWUuaCIgMwotIChRVFRyYWNrICopaW5zZXJ0U2VnbWVudE9mVHJhY2s6KFFUVHJhY2sgKil0
cmFjayB0aW1lUmFuZ2U6KFFUVGltZVJhbmdlKXJhbmdlIGF0VGltZTooUVRUaW1lKXRpbWU7CiMg
MTU4NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
UVRNb3ZpZS5oIiAzCi0gKFFUVHJhY2sgKilpbnNlcnRTZWdtZW50T2ZUcmFjazooUVRUcmFjayAq
KXRyYWNrIGZyb21SYW5nZTooUVRUaW1lUmFuZ2Upc3JjUmFuZ2Ugc2NhbGVkVG9SYW5nZTooUVRU
aW1lUmFuZ2UpZHN0UmFuZ2U7CiMgMTU5NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCi0gKHZvaWQpcmVtb3ZlVHJhY2s6KFFU
VHJhY2sgKil0cmFjazsKCgpAZW5kCgpAaW50ZXJmYWNlIFFUTW92aWUgKFFUTW92aWVfRGVsZWdh
dGUpCgoKCgoKCi0gKGlkKWRlbGVnYXRlOwojIDE2MTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwotICh2b2lkKXNldERlbGVn
YXRlOihpZClkZWxlZ2F0ZTsKCkBlbmQKIyAxNjQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKQGludGVyZmFjZSBRVE1vdmll
IChRVE1vdmllX1Zpc3VhbFN1cHBvcnQpCiMgMTY2MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCi0gKHZvaWQpZ2VuZXJhdGVB
cGVydHVyZU1vZGVEaW1lbnNpb25zOwojIDE2NzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwotICh2b2lkKXJlbW92ZUFwZXJ0
dXJlTW9kZURpbWVuc2lvbnM7CgoKQGVuZAoKQGludGVyZmFjZSBRVE1vdmllIChRVE1vdmllX1Zp
c3VhbENvbnRleHQpCiMgMTY5OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCkBlbmQKCkBpbnRlcmZhY2UgUVRNb3ZpZSAoUVRN
b3ZpZV9UaHJlYWRpbmcpCgoKCgoKCgorICh2b2lkKWVudGVyUVRLaXRPblRocmVhZDsKCgoKCgoK
KyAodm9pZCllbnRlclFUS2l0T25UaHJlYWREaXNhYmxpbmdUaHJlYWRTYWZldHlQcm90ZWN0aW9u
OwoKCgoKCgorICh2b2lkKWV4aXRRVEtpdE9uVGhyZWFkOwoKCgoKCgoKLSAoQk9PTClhdHRhY2hU
b0N1cnJlbnRUaHJlYWQ7CgoKCgoKCgotIChCT09MKWRldGFjaEZyb21DdXJyZW50VGhyZWFkOwoj
IDE3NDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJz
L1FUTW92aWUuaCIgMwotICh2b2lkKXNldElkbGluZzooQk9PTClzdGF0ZTsKIyAxNzU5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgi
IDMKLSAoQk9PTClpc0lkbGluZzsKCgpAZW5kCgpAaW50ZXJmYWNlIFFUTW92aWUgKFFUTW92aWVf
Q2hhcHRlcnMpCiMgMTc3MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvUVRNb3ZpZS5oIiAzCi0gKEJPT0wpaGFzQ2hhcHRlcnM7CgoKCgoKCgotIChO
U0ludGVnZXIpY2hhcHRlckNvdW50OwojIDE3OTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWUuaCIgMwotIChOU0FycmF5ICopY2hhcHRl
cnM7CiMgMTgxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvUVRNb3ZpZS5oIiAzCi0gKHZvaWQpYWRkQ2hhcHRlcnM6KE5TQXJyYXkgKiljaGFwdGVy
cyB3aXRoQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlcyBlcnJvcjooTlNFcnJv
ciAqKillcnJvclB0cjsKIyAxODE5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5m
cmFtZXdvcmsvSGVhZGVycy9RVE1vdmllLmgiIDMKLSAoQk9PTClyZW1vdmVDaGFwdGVyczsKIyAx
ODI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9R
VE1vdmllLmgiIDMKLSAoUVRUaW1lKXN0YXJ0VGltZU9mQ2hhcHRlcjooTlNJbnRlZ2VyKWNoYXB0
ZXJJbmRleDsKIyAxODM4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9RVE1vdmllLmgiIDMKLSAoTlNJbnRlZ2VyKWNoYXB0ZXJJbmRleEZvclRpbWU6
KFFUVGltZSl0aW1lOwoKCkBlbmQKIyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRUcmFjay5oIiAxIDMKIyAyOSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRUcmFjay5o
IiAzCkBjbGFzcyBRVE1vdmllOwpAY2xhc3MgUVRNZWRpYTsKQGNsYXNzIE5TSW1hZ2U7CkBjbGFz
cyBRVFRyYWNrSGVscGVyOwpAY2xhc3MgUVRJbnZhbGlkYXRpb25TZXQ7CiMgNDIgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUVHJhY2suaCIgMwpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRUcmFja0JvdW5kc0F0dHJpYnV0ZSA7CgoKCgoK
CgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRUcmFja0NyZWF0aW9uVGltZUF0dHJpYnV0
ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRUcmFja0RpbWVuc2lvbnNB
dHRyaWJ1dGUgOwoKCgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUVHJhY2tEaXNw
bGF5TmFtZUF0dHJpYnV0ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRU
cmFja0VuYWJsZWRBdHRyaWJ1dGUgOwoKCgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0
IFFUVHJhY2tGb3JtYXRTdW1tYXJ5QXR0cmlidXRlIDsKCgoKCgoKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKiBjb25zdCBRVFRyYWNrSXNDaGFwdGVyVHJhY2tBdHRyaWJ1dGUgOwoKCgoKCgoKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUVHJhY2tIYXNBcGVydHVyZU1vZGVEaW1lbnNpb25zQXR0
cmlidXRlIDsKCgoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVFRyYWNrSURBdHRy
aWJ1dGUgOwoKCgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUVHJhY2tMYXllckF0
dHJpYnV0ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRUcmFja01lZGlh
VHlwZUF0dHJpYnV0ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRUcmFj
a01vZGlmaWNhdGlvblRpbWVBdHRyaWJ1dGUgOwoKCgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAq
IGNvbnN0IFFUVHJhY2tSYW5nZUF0dHJpYnV0ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5n
ICogY29uc3QgUVRUcmFja1RpbWVTY2FsZUF0dHJpYnV0ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5T
U3RyaW5nICogY29uc3QgUVRUcmFja1VzYWdlSW5Nb3ZpZUF0dHJpYnV0ZSA7CgoKCgoKCgpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRUcmFja1VzYWdlSW5Qb3N0ZXJBdHRyaWJ1dGUgOwoK
CgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUVHJhY2tVc2FnZUluUHJldmlld0F0
dHJpYnV0ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRUcmFja1ZvbHVt
ZUF0dHJpYnV0ZSA7CgpAaW50ZXJmYWNlIFFUVHJhY2sgOiBOU09iamVjdAp7CkBwcml2YXRlCiBs
b25nIF9mbGFnczsKIFFUVHJhY2tIZWxwZXIgKl90cmFja0hlbHBlcjsKIFFUTW92aWUgKl9tb3Zp
ZTsKIFFUSW52YWxpZGF0aW9uU2V0ICpfY2hpbGRyZW47CiBpbnQzMl90IF9jYWNoZWRUcmFja0lE
OwogbG9uZyBfcmVzZXJ2ZWQxOwogbG9uZyBfcmVzZXJ2ZWQyOwogbG9uZyBfcmVzZXJ2ZWQzOwog
bG9uZyBfcmVzZXJ2ZWQ0Owp9CiMgMjI3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9RVFRyYWNrLmgiIDMKLSAoUVRNb3ZpZSAqKW1vdmllOwoKCgoK
CgotIChRVE1lZGlhICopbWVkaWE7CgoKCgoKCgotIChCT09MKWlzRW5hYmxlZDsKIyAyNTEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUVHJhY2su
aCIgMwotICh2b2lkKXNldEVuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKCgoKCgoKLSAoZmxvYXQpdm9s
dW1lOwojIDI2NyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvUVRUcmFjay5oIiAzCi0gKHZvaWQpc2V0Vm9sdW1lOihmbG9hdCl2b2x1bWU7CgoKCgoK
Ci0gKE5TRGljdGlvbmFyeSAqKXRyYWNrQXR0cmlidXRlczsKIyAyODQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUVHJhY2suaCIgMwotICh2b2lk
KXNldFRyYWNrQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlczsKIyAyOTQgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUVHJhY2su
aCIgMwotIChpZClhdHRyaWJ1dGVGb3JLZXk6KE5TU3RyaW5nICopYXR0cmlidXRlS2V5OwojIDMw
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRU
cmFjay5oIiAzCi0gKHZvaWQpc2V0QXR0cmlidXRlOihpZCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5n
ICopYXR0cmlidXRlS2V5OwojIDMzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvUVRUcmFjay5oIiAzCi0gKHZvaWQpaW5zZXJ0U2VnbWVudE9mVHJh
Y2s6KFFUVHJhY2sgKil0cmFjayB0aW1lUmFuZ2U6KFFUVGltZVJhbmdlKXJhbmdlIGF0VGltZToo
UVRUaW1lKXRpbWU7CiMgMzQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFt
ZXdvcmsvSGVhZGVycy9RVFRyYWNrLmgiIDMKLSAodm9pZClpbnNlcnRTZWdtZW50T2ZUcmFjazoo
UVRUcmFjayAqKXRyYWNrIGZyb21SYW5nZTooUVRUaW1lUmFuZ2Upc3JjUmFuZ2Ugc2NhbGVkVG9S
YW5nZTooUVRUaW1lUmFuZ2UpZHN0UmFuZ2U7CiMgMzU2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVFRyYWNrLmgiIDMKLSAodm9pZClpbnNlcnRF
bXB0eVNlZ21lbnRBdDooUVRUaW1lUmFuZ2UpcmFuZ2U7CiMgMzY2ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVFRyYWNrLmgiIDMKLSAodm9pZClk
ZWxldGVTZWdtZW50OihRVFRpbWVSYW5nZSlzZWdtZW50OwojIDM3OCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRUcmFjay5oIiAzCi0gKHZvaWQp
c2NhbGVTZWdtZW50OihRVFRpbWVSYW5nZSlzZWdtZW50IG5ld0R1cmF0aW9uOihRVFRpbWUpbmV3
RHVyYXRpb247CiMgMzk0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdv
cmsvSGVhZGVycy9RVFRyYWNrLmgiIDMKLSAodm9pZClhZGRJbWFnZTooTlNJbWFnZSAqKWltYWdl
IGZvckR1cmF0aW9uOihRVFRpbWUpZHVyYXRpb24gd2l0aEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFy
eSAqKWF0dHJpYnV0ZXM7CgpAZW5kCgpAaW50ZXJmYWNlIFFUVHJhY2sgKFFUVHJhY2tfVmlzdWFs
U3VwcG9ydCkKIyA0MDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29y
ay9IZWFkZXJzL1FUVHJhY2suaCIgMwotIChOU1NpemUpYXBlcnR1cmVNb2RlRGltZW5zaW9uc0Zv
ck1vZGU6KE5TU3RyaW5nICopbW9kZTsKIyA0MTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUVHJhY2suaCIgMwotICh2b2lkKXNldEFwZXJ0dXJl
TW9kZURpbWVuc2lvbnM6KE5TU2l6ZSlkaW1lbnNpb25zIGZvck1vZGU6KE5TU3RyaW5nICopbW9k
ZTsKIyA0MjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFk
ZXJzL1FUVHJhY2suaCIgMwotICh2b2lkKWdlbmVyYXRlQXBlcnR1cmVNb2RlRGltZW5zaW9uczsK
CgoKCgoKLSAodm9pZClyZW1vdmVBcGVydHVyZU1vZGVEaW1lbnNpb25zOwoKCkBlbmQKIyAxNiAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRLaXQu
aCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hl
YWRlcnMvUVRNZWRpYS5oIiAxIDMKIyAzMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNZWRpYS5oIiAzCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBj
b25zdCBRVE1lZGlhVHlwZVZpZGVvIDsKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
UVRNZWRpYVR5cGVTb3VuZCA7CgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTWVk
aWFUeXBlVGV4dCA7CgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTWVkaWFUeXBl
QmFzZSA7CgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTWVkaWFUeXBlTVBFRyA7
CgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTWVkaWFUeXBlTXVzaWMgOwoKCgoK
CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1lZGlhVHlwZVRpbWVDb2RlIDsKCgoKCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRpYVR5cGVTcHJpdGUgOwoKCgoKCmV4dGVy
biAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1lZGlhVHlwZUZsYXNoIDsKCgoKCgpleHRlcm4gIkMi
IE5TU3RyaW5nICogY29uc3QgUVRNZWRpYVR5cGVNb3ZpZSA7CgoKCgoKZXh0ZXJuICJDIiBOU1N0
cmluZyAqIGNvbnN0IFFUTWVkaWFUeXBlVHdlZW4gOwoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcg
KiBjb25zdCBRVE1lZGlhVHlwZTNEIDsKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
UVRNZWRpYVR5cGVTa2luIDsKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRp
YVR5cGVRVFZSIDsKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRpYVR5cGVI
aW50IDsKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRpYVR5cGVTdHJlYW0g
OwoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1lZGlhVHlwZU11eGVkIDsKCgoK
CgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRpYVR5cGVRdWFydHpDb21wb3NlciA7
CgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTWVkaWFUeXBlU3VidGl0bGUgOwoK
CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1lZGlhVHlwZUNsb3NlZENhcHRpb24g
OwoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRpYUNoYXJhY3RlcmlzdGlj
VmlzdWFsIDsKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRpYUNoYXJhY3Rl
cmlzdGljQXVkaW8gOwoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1lZGlhQ2hh
cmFjdGVyaXN0aWNDYW5TZW5kVmlkZW8gOwoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25z
dCBRVE1lZGlhQ2hhcmFjdGVyaXN0aWNQcm92aWRlc0FjdGlvbnMgOwoKCgoKCmV4dGVybiAiQyIg
TlNTdHJpbmcgKiBjb25zdCBRVE1lZGlhQ2hhcmFjdGVyaXN0aWNOb25MaW5lYXIgOwoKCgoKCmV4
dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVE1lZGlhQ2hhcmFjdGVyaXN0aWNDYW5TdGVwIDsK
CgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRpYUNoYXJhY3RlcmlzdGljSGFz
Tm9EdXJhdGlvbiA7CgoKCgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUTWVkaWFDaGFy
YWN0ZXJpc3RpY0hhc1NraW5EYXRhIDsKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
UVRNZWRpYUNoYXJhY3RlcmlzdGljUHJvdmlkZXNLZXlGb2N1cyA7CgoKCgoKZXh0ZXJuICJDIiBO
U1N0cmluZyAqIGNvbnN0IFFUTWVkaWFDaGFyYWN0ZXJpc3RpY0hhc1ZpZGVvRnJhbWVSYXRlIDsK
IyAyMTUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJz
L1FUTWVkaWEuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRpYUNyZWF0aW9u
VGltZUF0dHJpYnV0ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRp
YUR1cmF0aW9uQXR0cmlidXRlIDsKCgoKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBR
VE1lZGlhTW9kaWZpY2F0aW9uVGltZUF0dHJpYnV0ZSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3Ry
aW5nICogY29uc3QgUVRNZWRpYVNhbXBsZUNvdW50QXR0cmlidXRlIDsKCgoKCgoKCmV4dGVybiAi
QyIgTlNTdHJpbmcgKiBjb25zdCBRVE1lZGlhUXVhbGl0eUF0dHJpYnV0ZSA7CgoKCgoKCgpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRpYVRpbWVTY2FsZUF0dHJpYnV0ZSA7CgoKCgoK
CgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRNZWRpYVR5cGVBdHRyaWJ1dGUgOwoKQGNs
YXNzIFFUTW92aWU7CkBjbGFzcyBRVFRyYWNrOwpAY2xhc3MgUVRRdWlja1RpbWVNb3ZpZVdyYXBw
ZXI7CgpAaW50ZXJmYWNlIFFUTWVkaWEgOiBOU09iamVjdAp7CkBwcml2YXRlCgogaW50MzJfdCBf
cHJveHk7CgoKCgoKCiBsb25nIF9mbGFnczsKIFFUVHJhY2sgKl90cmFjazsKfQojIDMxNyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNZWRpYS5o
IiAzCi0gKFFUVHJhY2sgKil0cmFjazsKCgoKCgoKCi0gKE5TRGljdGlvbmFyeSAqKW1lZGlhQXR0
cmlidXRlczsKIyAzMzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29y
ay9IZWFkZXJzL1FUTWVkaWEuaCIgMwotICh2b2lkKXNldE1lZGlhQXR0cmlidXRlczooTlNEaWN0
aW9uYXJ5ICopYXR0cmlidXRlczsKIyAzNDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FU
S2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTWVkaWEuaCIgMwotIChpZClhdHRyaWJ1dGVGb3JLZXk6
KE5TU3RyaW5nICopYXR0cmlidXRlS2V5OwojIDM1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNZWRpYS5oIiAzCi0gKHZvaWQpc2V0QXR0cmli
dXRlOihpZCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopYXR0cmlidXRlS2V5OwojIDM2NyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNZWRpYS5o
IiAzCi0gKEJPT0wpaGFzQ2hhcmFjdGVyaXN0aWM6KE5TU3RyaW5nICopY2hhcmFjdGVyaXN0aWM7
CiMgMzgwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVy
cy9RVE1lZGlhLmgiIDMKQGVuZAojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtp
dC5mcmFtZXdvcmsvSGVhZGVycy9RVEtpdC5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllVmlldy5oIiAxIDMKIyAxMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3Zp
ZVZpZXcuaCIgMwpAY2xhc3MgUVRNb3ZpZTsKQGNsYXNzIFFUTW92aWVDb250cm9sbGVyVmlldzsK
QGNsYXNzIFFUTW92aWVWaWV3SW50ZXJuYWw7CgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
UVRNb3ZpZVZpZXdNb3ZpZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRN
b3ZpZVZpZXdDb250cm9sbGVyVmlzaWJsZUJpbmRpbmcgOwpleHRlcm4gIkMiIE5TU3RyaW5nICog
Y29uc3QgUVRNb3ZpZVZpZXdQcmVzZXJ2ZXNBc3BlY3RSYXRpb0JpbmRpbmcgOwpleHRlcm4gIkMi
IE5TU3RyaW5nICogY29uc3QgUVRNb3ZpZVZpZXdGaWxsQ29sb3JCaW5kaW5nIDsKCgpAaW50ZXJm
YWNlIFFUTW92aWVWaWV3IDogTlNWaWV3IDxOU0NvZGluZywgTlNVc2VySW50ZXJmYWNlVmFsaWRh
dGlvbnM+CgoKCnsKQHByaXZhdGUKICAgIFFUTW92aWUgKl9tb3ZpZTsKCiAgICBOU0NvbG9yICpf
ZmlsbENvbG9yOwogICAgQk9PTCBfY29udHJvbGxlclZpc2libGU7CiBCT09MIF9wcmVzZXJ2ZXNB
c3BlY3RSYXRpbzsKCgoKCgogICAgTlNVSW50ZWdlciBfdmlld0ZsYWdzOwogICAgUVRNb3ZpZVZp
ZXdJbnRlcm5hbCAqX2ludGVybmFsOwogbG9uZyBfcmVzZXJ2ZWQzOwogaWQgX2RlbGVnYXRlOwoK
IGludDMyX3QgX3Byb3h5OwogaW50MzJfdCBfZGVsZWdhdGVQcm94eTsKICAgIEJPT0wgX3VzZVZp
c3VhbENvbnRleHQ7CiAgICBOU1ZpZXcgKl9yZW5kZXJlclZpZXc7CiBRVE1vdmllQ29udHJvbGxl
clZpZXcgKl9tb3ZpZUNvbnRyb2xsZXJWaWV3OwoKfQoKLSAoUVRNb3ZpZSAqKW1vdmllOwotICh2
b2lkKXNldE1vdmllOihRVE1vdmllICopbW92aWU7CgotIChCT09MKXByZXNlcnZlc0FzcGVjdFJh
dGlvOwotICh2b2lkKXNldFByZXNlcnZlc0FzcGVjdFJhdGlvOihCT09MKXByZXNlcnZlc0FzcGVj
dFJhdGlvOwotIChOU0NvbG9yICopZmlsbENvbG9yOwotICh2b2lkKXNldEZpbGxDb2xvcjooTlND
b2xvciAqKWZpbGxDb2xvcjsKIyA2OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZVZpZXcuaCIgMwotIChCT09MKWlzQ29udHJvbGxlclZp
c2libGU7Ci0gKHZvaWQpc2V0Q29udHJvbGxlclZpc2libGU6KEJPT0wpY29udHJvbGxlclZpc2li
bGU7Ci0gKHZvaWQpc2V0U2hvd3NSZXNpemVJbmRpY2F0b3I6KEJPT0wpc2hvdzsKCi0gKEJPT0wp
aXNCYWNrQnV0dG9uVmlzaWJsZTsKLSAodm9pZClzZXRCYWNrQnV0dG9uVmlzaWJsZTooQk9PTClz
dGF0ZTsKLSAoQk9PTClpc0N1c3RvbUJ1dHRvblZpc2libGU7Ci0gKHZvaWQpc2V0Q3VzdG9tQnV0
dG9uVmlzaWJsZTooQk9PTClzdGF0ZTsKLSAoQk9PTClpc0hvdFNwb3RCdXR0b25WaXNpYmxlOwot
ICh2b2lkKXNldEhvdFNwb3RCdXR0b25WaXNpYmxlOihCT09MKXN0YXRlOwotIChCT09MKWFyZVN0
ZXBCdXR0b25zVmlzaWJsZTsKLSAodm9pZClzZXRTdGVwQnV0dG9uc1Zpc2libGU6KEJPT0wpc3Rh
dGU7Ci0gKEJPT0wpaXNUcmFuc2xhdGVCdXR0b25WaXNpYmxlOwotICh2b2lkKXNldFRyYW5zbGF0
ZUJ1dHRvblZpc2libGU6KEJPT0wpc3RhdGU7Ci0gKEJPT0wpaXNWb2x1bWVCdXR0b25WaXNpYmxl
OwotICh2b2lkKXNldFZvbHVtZUJ1dHRvblZpc2libGU6KEJPT0wpc3RhdGU7Ci0gKEJPT0wpYXJl
Wm9vbUJ1dHRvbnNWaXNpYmxlOwotICh2b2lkKXNldFpvb21CdXR0b25zVmlzaWJsZTooQk9PTClz
dGF0ZTsKCgotIChOU1JlY3QpbW92aWVCb3VuZHM7Ci0gKE5TUmVjdCltb3ZpZUNvbnRyb2xsZXJC
b3VuZHM7Ci0gKGZsb2F0KWNvbnRyb2xsZXJCYXJIZWlnaHQ7CgotICh2b2lkKXBsYXk6KGlkKXNl
bmRlcjsKLSAodm9pZClwYXVzZTooaWQpc2VuZGVyOwotICh2b2lkKWdvdG9CZWdpbm5pbmc6KGlk
KXNlbmRlcjsKLSAodm9pZClnb3RvRW5kOihpZClzZW5kZXI7Ci0gKHZvaWQpZ290b05leHRTZWxl
Y3Rpb25Qb2ludDooaWQpc2VuZGVyOwotICh2b2lkKWdvdG9QcmV2aW91c1NlbGVjdGlvblBvaW50
OihpZClzZW5kZXI7Ci0gKHZvaWQpZ290b1Bvc3RlckZyYW1lOihpZClzZW5kZXI7Ci0gKHZvaWQp
c3RlcEZvcndhcmQ6KGlkKXNlbmRlcjsKLSAodm9pZClzdGVwQmFja3dhcmQ6KGlkKXNlbmRlcjsK
Ci0gKEJPT0wpaXNFZGl0YWJsZTsKLSAodm9pZClzZXRFZGl0YWJsZTooQk9PTCllZGl0YWJsZTsK
Ci0gKHZvaWQpY3V0OihpZClzZW5kZXI7Ci0gKHZvaWQpY29weTooaWQpc2VuZGVyOwotICh2b2lk
KXBhc3RlOihpZClzZW5kZXI7Ci0gKHZvaWQpc2VsZWN0QWxsOihpZClzZW5kZXI7Ci0gKHZvaWQp
c2VsZWN0Tm9uZTooaWQpc2VuZGVyOwotICh2b2lkKWRlbGV0ZTooaWQpc2VuZGVyOwotICh2b2lk
KWFkZDooaWQpc2VuZGVyOwotICh2b2lkKWFkZFNjYWxlZDooaWQpc2VuZGVyOwotICh2b2lkKXJl
cGxhY2U6KGlkKXNlbmRlcjsKLSAodm9pZCl0cmltOihpZClzZW5kZXI7CgoKLSAoaWQpZGVsZWdh
dGU7Ci0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkKWRlbGVnYXRlOwoKCkBlbmQKCkBpbnRlcmZhY2Ug
TlNPYmplY3QgKFFUTW92aWVWaWV3X0RlbGVnYXRlKQoKCi0gKENJSW1hZ2UgKil2aWV3OihRVE1v
dmllVmlldyAqKXZpZXcgd2lsbERpc3BsYXlJbWFnZTooQ0lJbWFnZSAqKWltYWdlOwojIDEzOCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3Zp
ZVZpZXcuaCIgMwotIChOU01lbnUgKiltZW51Rm9yRXZlbnREZWxlZ2F0ZTooTlNFdmVudCAqKWV2
ZW50OwoKCkBlbmQKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvUVRLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRNb3ZpZUxheWVyLmgiIDEgMwojIDE4ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVE1vdmllTGF5ZXIu
aCIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvUXVhcnR6Q29yZS5oIiAxIDMKCgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUltYWdlLmgiIDEgMwojIDEy
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJz
L0NvcmVJbWFnZS5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29y
ZS5mcmFtZXdvcmsvSGVhZGVycy9DSUNvbnRleHQuaCIgMSAzCiMgMTQgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lDb250ZXh0LmgiIDMK
QGNsYXNzIENJRmlsdGVyOwoKQGludGVyZmFjZSBDSUNvbnRleHQ6IE5TT2JqZWN0CnsKICAgIGlk
IF9wcml2Owp9CgoKCgoKCmV4dGVybiBOU1N0cmluZyAqa0NJQ29udGV4dE91dHB1dENvbG9yU3Bh
Y2UgOwoKCgoKZXh0ZXJuIE5TU3RyaW5nICprQ0lDb250ZXh0V29ya2luZ0NvbG9yU3BhY2UgOwoK
CgoKZXh0ZXJuIE5TU3RyaW5nICprQ0lDb250ZXh0VXNlU29mdHdhcmVSZW5kZXJlciA7CiMgNDUg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
Q0lDb250ZXh0LmgiIDMKKyAoQ0lDb250ZXh0ICopY29udGV4dFdpdGhDR0xDb250ZXh0OihDR0xD
b250ZXh0T2JqKWN0eAogICBwaXhlbEZvcm1hdDooQ0dMUGl4ZWxGb3JtYXRPYmopcGYgY29sb3JT
cGFjZTooQ0dDb2xvclNwYWNlUmVmKWNzIG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKWRpY3QgOwoK
CgoKCgorIChDSUNvbnRleHQgKiljb250ZXh0V2l0aENHTENvbnRleHQ6KENHTENvbnRleHRPYmop
Y3R4CiAgIHBpeGVsRm9ybWF0OihDR0xQaXhlbEZvcm1hdE9iailwZiBvcHRpb25zOihOU0RpY3Rp
b25hcnkgKilkaWN0IF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKTsKCgoKCisgKENJQ29udGV4
dCAqKWNvbnRleHRXaXRoQ0dDb250ZXh0OihDR0NvbnRleHRSZWYpY3R4IG9wdGlvbnM6CiAgICAo
TlNEaWN0aW9uYXJ5ICopZGljdDsKCgoKCi0gKHZvaWQpZHJhd0ltYWdlOihDSUltYWdlICopaW0g
YXRQb2ludDooQ0dQb2ludClwIGZyb21SZWN0OihDR1JlY3Qpc3JjOwoKCgoKLSAodm9pZClkcmF3
SW1hZ2U6KENJSW1hZ2UgKilpbSBpblJlY3Q6KENHUmVjdClkZXN0IGZyb21SZWN0OihDR1JlY3Qp
c3JjOwoKCgoKCgotIChDR0ltYWdlUmVmKWNyZWF0ZUNHSW1hZ2U6KENJSW1hZ2UgKilpbSBmcm9t
UmVjdDooQ0dSZWN0KXI7CgoKCgoKLSAoQ0dJbWFnZVJlZiljcmVhdGVDR0ltYWdlOihDSUltYWdl
ICopaW0gZnJvbVJlY3Q6KENHUmVjdClyCiAgICBmb3JtYXQ6KENJRm9ybWF0KWYgY29sb3JTcGFj
ZTooQ0dDb2xvclNwYWNlUmVmKWNzOwoKCgoKCi0gKENHTGF5ZXJSZWYpY3JlYXRlQ0dMYXllcldp
dGhTaXplOihDR1NpemUpc2l6ZSBpbmZvOihDRkRpY3Rpb25hcnlSZWYpZDsKCgoKCi0gKHZvaWQp
cmVuZGVyOihDSUltYWdlICopaW0gdG9CaXRtYXA6KHZvaWQgKilkYXRhIHJvd0J5dGVzOihwdHJk
aWZmX3QpcmIKICAgIGJvdW5kczooQ0dSZWN0KXIgZm9ybWF0OihDSUZvcm1hdClmIGNvbG9yU3Bh
Y2U6KENHQ29sb3JTcGFjZVJlZiljczsKCgoKCi0gKHZvaWQpcmVuZGVyOihDSUltYWdlICopaW0g
dG9JT1N1cmZhY2U6KElPU3VyZmFjZVJlZilzdXJmYWNlCiAgICBib3VuZHM6KENHUmVjdClyIGNv
bG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljcyA7CgoKCgoKCgotICh2b2lkKXJlY2xhaW1SZXNv
dXJjZXM7CgoKCgotICh2b2lkKWNsZWFyQ2FjaGVzOwoKQGVuZAojIDEzICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NvcmVJbWFnZS5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9I
ZWFkZXJzL0NJRmlsdGVyLmgiIDEgMwojIDIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9R
dWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NJRmlsdGVyLmgiIDMKQGNsYXNzIE5TVVJMOwoj
IDMzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL0NJRmlsdGVyLmgiIDMKZXh0ZXJuIE5TU3RyaW5nICprQ0lBdHRyaWJ1dGVGaWx0ZXJOYW1l
IDsKCgoKCgpleHRlcm4gTlNTdHJpbmcgKmtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lIDsK
CgoKCgpleHRlcm4gTlNTdHJpbmcgKmtDSUF0dHJpYnV0ZURlc2NyaXB0aW9uIDsKCgoKCgpleHRl
cm4gTlNTdHJpbmcgKmtDSUF0dHJpYnV0ZVJlZmVyZW5jZURvY3VtZW50YXRpb24gOwoKCgoKCmV4
dGVybiBOU1N0cmluZyAqa0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdvcmllcyA7CgoKCgoKZXh0ZXJu
IE5TU3RyaW5nICprQ0lBdHRyaWJ1dGVDbGFzcyA7CgoKCgoKZXh0ZXJuIE5TU3RyaW5nICprQ0lB
dHRyaWJ1dGVUeXBlIDsKCgoKCgpleHRlcm4gTlNTdHJpbmcgKmtDSUF0dHJpYnV0ZU1pbiA7CgoK
CgoKZXh0ZXJuIE5TU3RyaW5nICprQ0lBdHRyaWJ1dGVNYXggOwoKCgoKCmV4dGVybiBOU1N0cmlu
ZyAqa0NJQXR0cmlidXRlU2xpZGVyTWluIDsKCgoKCgpleHRlcm4gTlNTdHJpbmcgKmtDSUF0dHJp
YnV0ZVNsaWRlck1heCA7CgoKCgoKZXh0ZXJuIE5TU3RyaW5nICprQ0lBdHRyaWJ1dGVEZWZhdWx0
IDsKCgoKCgpleHRlcm4gTlNTdHJpbmcgKmtDSUF0dHJpYnV0ZUlkZW50aXR5IDsKCgoKCgoKZXh0
ZXJuIE5TU3RyaW5nICprQ0lBdHRyaWJ1dGVOYW1lIDsKCgoKCgpleHRlcm4gTlNTdHJpbmcgKmtD
SUF0dHJpYnV0ZURpc3BsYXlOYW1lIDsKCgoKCgoKZXh0ZXJuIE5TU3RyaW5nICprQ0lVSVBhcmFt
ZXRlclNldCA7CgoKCgoKCmV4dGVybiBOU1N0cmluZyAqa0NJVUlTZXRCYXNpYyA7CgoKCgoKCmV4
dGVybiBOU1N0cmluZyAqa0NJVUlTZXRJbnRlcm1lZGlhdGUgOwoKCgoKCgpleHRlcm4gTlNTdHJp
bmcgKmtDSVVJU2V0QWR2YW5jZWQgOwoKCgoKCgpleHRlcm4gTlNTdHJpbmcgKmtDSVVJU2V0RGV2
ZWxvcG1lbnQgOwoKCgpleHRlcm4gTlNTdHJpbmcgKmtDSUF0dHJpYnV0ZVR5cGVUaW1lIDsKZXh0
ZXJuIE5TU3RyaW5nICprQ0lBdHRyaWJ1dGVUeXBlU2NhbGFyIDsKZXh0ZXJuIE5TU3RyaW5nICpr
Q0lBdHRyaWJ1dGVUeXBlRGlzdGFuY2UgOwpleHRlcm4gTlNTdHJpbmcgKmtDSUF0dHJpYnV0ZVR5
cGVBbmdsZSA7CmV4dGVybiBOU1N0cmluZyAqa0NJQXR0cmlidXRlVHlwZUJvb2xlYW4gOwoKCgoK
CmV4dGVybiBOU1N0cmluZyAqa0NJQXR0cmlidXRlVHlwZUludGVnZXIgOwoKCgoKCgpleHRlcm4g
TlNTdHJpbmcgKmtDSUF0dHJpYnV0ZVR5cGVDb3VudCA7CgoKZXh0ZXJuIE5TU3RyaW5nICprQ0lB
dHRyaWJ1dGVUeXBlUG9zaXRpb24gOwpleHRlcm4gTlNTdHJpbmcgKmtDSUF0dHJpYnV0ZVR5cGVP
ZmZzZXQgOwoKCmV4dGVybiBOU1N0cmluZyAqa0NJQXR0cmlidXRlVHlwZVBvc2l0aW9uMyA7CgoK
ZXh0ZXJuIE5TU3RyaW5nICprQ0lBdHRyaWJ1dGVUeXBlUmVjdGFuZ2xlIDsKCgpleHRlcm4gTlNT
dHJpbmcgKmtDSUF0dHJpYnV0ZVR5cGVPcGFxdWVDb2xvciA7CgoKZXh0ZXJuIE5TU3RyaW5nICpr
Q0lBdHRyaWJ1dGVUeXBlR3JhZGllbnQgOwoKCmV4dGVybiBOU1N0cmluZyAqa0NJQ2F0ZWdvcnlE
aXN0b3J0aW9uRWZmZWN0IDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lDYXRlZ29yeUdlb21ldHJ5QWRq
dXN0bWVudCA7CmV4dGVybiBOU1N0cmluZyAqa0NJQ2F0ZWdvcnlDb21wb3NpdGVPcGVyYXRpb24g
OwpleHRlcm4gTlNTdHJpbmcgKmtDSUNhdGVnb3J5SGFsZnRvbmVFZmZlY3QgOwpleHRlcm4gTlNT
dHJpbmcgKmtDSUNhdGVnb3J5Q29sb3JBZGp1c3RtZW50IDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lD
YXRlZ29yeUNvbG9yRWZmZWN0IDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lDYXRlZ29yeVRyYW5zaXRp
b24gOwpleHRlcm4gTlNTdHJpbmcgKmtDSUNhdGVnb3J5VGlsZUVmZmVjdCA7CmV4dGVybiBOU1N0
cmluZyAqa0NJQ2F0ZWdvcnlHZW5lcmF0b3IgOwpleHRlcm4gTlNTdHJpbmcgKmtDSUNhdGVnb3J5
UmVkdWN0aW9uIDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lDYXRlZ29yeUdyYWRpZW50IDsKZXh0ZXJu
IE5TU3RyaW5nICprQ0lDYXRlZ29yeVN0eWxpemUgOwpleHRlcm4gTlNTdHJpbmcgKmtDSUNhdGVn
b3J5U2hhcnBlbiA7CmV4dGVybiBOU1N0cmluZyAqa0NJQ2F0ZWdvcnlCbHVyIDsKCmV4dGVybiBO
U1N0cmluZyAqa0NJQ2F0ZWdvcnlWaWRlbyA7CmV4dGVybiBOU1N0cmluZyAqa0NJQ2F0ZWdvcnlT
dGlsbEltYWdlIDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lDYXRlZ29yeUludGVybGFjZWQgOwpleHRl
cm4gTlNTdHJpbmcgKmtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzIDsKZXh0ZXJuIE5TU3RyaW5n
ICprQ0lDYXRlZ29yeUhpZ2hEeW5hbWljUmFuZ2UgOwoKZXh0ZXJuIE5TU3RyaW5nICprQ0lDYXRl
Z29yeUJ1aWx0SW4gOwpleHRlcm4gTlNTdHJpbmcgKmtDSUNhdGVnb3J5RmlsdGVyR2VuZXJhdG9y
IDsKCgoKZXh0ZXJuIE5TU3RyaW5nICprQ0lBcHBseU9wdGlvbkV4dGVudCA7CmV4dGVybiBOU1N0
cmluZyAqa0NJQXBwbHlPcHRpb25EZWZpbml0aW9uIDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lBcHBs
eU9wdGlvblVzZXJJbmZvIDsKCgoKZXh0ZXJuIE5TU3RyaW5nICprQ0lPdXRwdXRJbWFnZUtleSA7
CmV4dGVybiBOU1N0cmluZyAqa0NJSW5wdXRCYWNrZ3JvdW5kSW1hZ2VLZXkgOwpleHRlcm4gTlNT
dHJpbmcgKmtDSUlucHV0SW1hZ2VLZXkgOwpleHRlcm4gTlNTdHJpbmcgKmtDSUlucHV0VGltZUtl
eSA7CmV4dGVybiBOU1N0cmluZyAqa0NJSW5wdXRUcmFuc2Zvcm1LZXkgOwpleHRlcm4gTlNTdHJp
bmcgKmtDSUlucHV0U2NhbGVLZXkgOwpleHRlcm4gTlNTdHJpbmcgKmtDSUlucHV0QXNwZWN0UmF0
aW9LZXkgOwpleHRlcm4gTlNTdHJpbmcgKmtDSUlucHV0Q2VudGVyS2V5IDsKZXh0ZXJuIE5TU3Ry
aW5nICprQ0lJbnB1dFJhZGl1c0tleSA7CmV4dGVybiBOU1N0cmluZyAqa0NJSW5wdXRBbmdsZUtl
eSA7CmV4dGVybiBOU1N0cmluZyAqa0NJSW5wdXRSZWZyYWN0aW9uS2V5IDsKZXh0ZXJuIE5TU3Ry
aW5nICprQ0lJbnB1dFdpZHRoS2V5IDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lJbnB1dFNoYXJwbmVz
c0tleSA7CmV4dGVybiBOU1N0cmluZyAqa0NJSW5wdXRJbnRlbnNpdHlLZXkgOwpleHRlcm4gTlNT
dHJpbmcgKmtDSUlucHV0RVZLZXkgOwpleHRlcm4gTlNTdHJpbmcgKmtDSUlucHV0U2F0dXJhdGlv
bktleSA7CmV4dGVybiBOU1N0cmluZyAqa0NJSW5wdXRDb2xvcktleSA7CmV4dGVybiBOU1N0cmlu
ZyAqa0NJSW5wdXRCcmlnaHRuZXNzS2V5IDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lJbnB1dENvbnRy
YXN0S2V5IDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lJbnB1dEdyYWRpZW50SW1hZ2VLZXkgOwpleHRl
cm4gTlNTdHJpbmcgKmtDSUlucHV0TWFza0ltYWdlS2V5IDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lJ
bnB1dFNoYWRpbmdJbWFnZUtleSA7CmV4dGVybiBOU1N0cmluZyAqa0NJSW5wdXRUYXJnZXRJbWFn
ZUtleSA7CmV4dGVybiBOU1N0cmluZyAqa0NJSW5wdXRFeHRlbnRLZXkgOwoKCkBjbGFzcyBOU0Fy
cmF5LCBOU0RpY3Rpb25hcnk7CkBjbGFzcyBDSUtlcm5lbCwgQ0lJbWFnZTsKCgoKCgoKQGludGVy
ZmFjZSBDSUZpbHRlciA6IE5TT2JqZWN0IDxOU0NvZGluZywgTlNDb3B5aW5nPgp7CiAgICB2b2lk
ICpfcHJpdls4XTsKfQoKCgoKCgotIChOU0FycmF5ICopaW5wdXRLZXlzOwoKCgoKCi0gKE5TQXJy
YXkgKilvdXRwdXRLZXlzOwoKCgoKCgotICh2b2lkKXNldERlZmF1bHRzOwojIDI5MiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DSUZpbHRl
ci5oIiAzCi0gKE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXM7CiMgMzA2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NJRmlsdGVyLmgiIDMK
LSAoQ0lJbWFnZSAqKWFwcGx5OihDSUtlcm5lbCAqKWsgYXJndW1lbnRzOihOU0FycmF5ICopYXJn
cwogICAgIG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKWRpY3Q7CiMgMzE4ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NJRmlsdGVyLmgiIDMK
LSAoQ0lJbWFnZSAqKWFwcGx5OihDSUtlcm5lbCAqKWssIC4uLjsKCkBlbmQKCgoKCgoKCkBpbnRl
cmZhY2UgQ0lGaWx0ZXIgKENJRmlsdGVyUmVnaXN0cnkpCgoKCgoKCgorIChDSUZpbHRlciAqKWZp
bHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWU7CiMgMzQ2ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NJRmlsdGVyLmgiIDMKKyAoQ0lG
aWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lIGtleXNBbmRWYWx1ZXM6a2V5
MCwgLi4uOwoKCgoKCgoKKyAoTlNBcnJheSAqKWZpbHRlck5hbWVzSW5DYXRlZ29yeTooTlNTdHJp
bmcgKiljYXRlZ29yeTsKCgoKCgoKCisgKE5TQXJyYXkgKilmaWx0ZXJOYW1lc0luQ2F0ZWdvcmll
czooTlNBcnJheSAqKWNhdGVnb3JpZXM7CiMgMzczICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NJRmlsdGVyLmgiIDMKKyAodm9pZClyZWdp
c3RlckZpbHRlck5hbWU6KE5TU3RyaW5nICopbmFtZSBjb25zdHJ1Y3RvcjooaWQpYW5PYmplY3QK
ICAgIGNsYXNzQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlczsKIyAzODMgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lG
aWx0ZXIuaCIgMworIChOU1N0cmluZyAqKWxvY2FsaXplZE5hbWVGb3JGaWx0ZXJOYW1lOiAoTlNT
dHJpbmcgKilmaWx0ZXJOYW1lOwoKCgoKCgoKKyAoTlNTdHJpbmcgKilsb2NhbGl6ZWROYW1lRm9y
Q2F0ZWdvcnk6IChOU1N0cmluZyAqKWNhdGVnb3J5OwoKCgoKCgoKKyAoTlNTdHJpbmcgKilsb2Nh
bGl6ZWREZXNjcmlwdGlvbkZvckZpbHRlck5hbWU6KE5TU3RyaW5nICopZmlsdGVyTmFtZTsKIyA0
MDggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQ0lGaWx0ZXIuaCIgMworIChOU1VSTCAqKWxvY2FsaXplZFJlZmVyZW5jZURvY3VtZW50YXRp
b25Gb3JGaWx0ZXJOYW1lOihOU1N0cmluZyAqKWZpbHRlck5hbWU7CgpAZW5kCiMgMTQgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUlt
YWdlLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvQ0lGaWx0ZXJHZW5lcmF0b3IuaCIgMSAzCgoKCgoKCgpAY2xhc3MgTlNV
UkwsIE5TRGljdGlvbmFyeSwgQ0lGaWx0ZXI7CiMgMjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lGaWx0ZXJHZW5lcmF0b3IuaCIgMwpl
eHRlcm4gTlNTdHJpbmcgKmNvbnN0IGtDSUZpbHRlckdlbmVyYXRvckV4cG9ydGVkS2V5OwoKCgoK
CgpleHRlcm4gTlNTdHJpbmcgKmNvbnN0IGtDSUZpbHRlckdlbmVyYXRvckV4cG9ydGVkS2V5VGFy
Z2V0T2JqZWN0OwoKCgoKCgpleHRlcm4gTlNTdHJpbmcgKmNvbnN0IGtDSUZpbHRlckdlbmVyYXRv
ckV4cG9ydGVkS2V5TmFtZTsKCgoKCgoKQGludGVyZmFjZSBDSUZpbHRlckdlbmVyYXRvciA6IE5T
T2JqZWN0IDxOU0NvZGluZywgTlNDb3B5aW5nPgp7CgpAcHJpdmF0ZQogc3RydWN0IENJRmlsdGVy
R2VuZXJhdG9yU3RydWN0ICogX2ZpbHRlckdlbmVyYXRvclN0cnVjdDsKfQoKCgoKCgoKKyAoQ0lG
aWx0ZXJHZW5lcmF0b3IqKWZpbHRlckdlbmVyYXRvcjsKCgoKCgoKCisgKENJRmlsdGVyR2VuZXJh
dG9yKilmaWx0ZXJHZW5lcmF0b3JXaXRoQ29udGVudHNPZlVSTDooTlNVUkwqKWFVUkw7CiMgNzIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
Q0lGaWx0ZXJHZW5lcmF0b3IuaCIgMwotIChpZClpbml0V2l0aENvbnRlbnRzT2ZVUkw6KE5TVVJM
KilhVVJMOwojIDgzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1l
d29yay9IZWFkZXJzL0NJRmlsdGVyR2VuZXJhdG9yLmgiIDMKLSAodm9pZCljb25uZWN0T2JqZWN0
OihpZClzb3VyY2VPYmplY3Qgd2l0aEtleTooTlNTdHJpbmcqKXNvdXJjZUtleSB0b09iamVjdDoo
aWQpdGFyZ2V0T2JqZWN0IHdpdGhLZXk6KE5TU3RyaW5nKil0YXJnZXRLZXk7CiMgOTQgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lGaWx0
ZXJHZW5lcmF0b3IuaCIgMwotICh2b2lkKWRpc2Nvbm5lY3RPYmplY3Q6KGlkKXNvdXJjZU9iamVj
dCB3aXRoS2V5OihOU1N0cmluZyopa2V5IHRvT2JqZWN0OihpZCl0YXJnZXRPYmplY3Qgd2l0aEtl
eTooTlNTdHJpbmcqKXRhcmdldEtleTsKIyAxMDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lGaWx0ZXJHZW5lcmF0b3IuaCIgMwotICh2
b2lkKWV4cG9ydEtleTooTlNTdHJpbmcqKWtleSBmcm9tT2JqZWN0OihpZCl0YXJnZXRPYmplY3Qg
d2l0aE5hbWU6KE5TU3RyaW5nKilleHBvcnRlZEtleU5hbWU7CgoKCgoKCgotICh2b2lkKXJlbW92
ZUV4cG9ydGVkS2V5OihOU1N0cmluZyopZXhwb3J0ZWRLZXlOYW1lOwoKCgoKCgotIChOU0RpY3Rp
b25hcnkqKWV4cG9ydGVkS2V5czsKIyAxMjggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1
YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lGaWx0ZXJHZW5lcmF0b3IuaCIgMwotICh2b2lk
KXNldEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSopYXR0cmlidXRlcyBmb3JFeHBvcnRlZEtleToo
TlNTdHJpbmcqKWtleTsKCgoKCgoKCi0gKE5TRGljdGlvbmFyeSopY2xhc3NBdHRyaWJ1dGVzOwoK
CgoKCgoKLSAodm9pZClzZXRDbGFzc0F0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSopYXR0cmlidXRl
czsKCgoKCgoKCi0gKENJRmlsdGVyKilmaWx0ZXI7CgoKCgoKCgotICh2b2lkKXJlZ2lzdGVyRmls
dGVyTmFtZTooTlNTdHJpbmcgKiluYW1lOwojIDE3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DSUZpbHRlckdlbmVyYXRvci5oIiAzCi0g
KEJPT0wpd3JpdGVUb1VSTDooTlNVUkwgKilhVVJMIGF0b21pY2FsbHk6KEJPT0wpZmxhZzsKCkBl
bmQKIyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsv
SGVhZGVycy9Db3JlSW1hZ2UuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DSUZpbHRlclNoYXBlLmgiIDEgMwojIDkgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lG
aWx0ZXJTaGFwZS5oIiAzCkBpbnRlcmZhY2UgQ0lGaWx0ZXJTaGFwZSA6IE5TT2JqZWN0IDxOU0Nv
cHlpbmc+CnsKQHB1YmxpYwogICAgdWludDMyX3QgX3BhZDsKICAgIHZvaWQgKl9wcml2Owp9CgoK
CisgKGlkKXNoYXBlV2l0aFJlY3Q6KENHUmVjdClyOwoKCgotIChpZClpbml0V2l0aFJlY3Q6KENH
UmVjdClyOwojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1l
d29yay9IZWFkZXJzL0NJRmlsdGVyU2hhcGUuaCIgMwotIChDSUZpbHRlclNoYXBlICopdHJhbnNm
b3JtQnk6KENHQWZmaW5lVHJhbnNmb3JtKW0gaW50ZXJpb3I6KEJPT0wpZmxhZzsKCgoKLSAoQ0lG
aWx0ZXJTaGFwZSAqKWluc2V0QnlYOihpbnQpZHggWTooaW50KWR5OwoKCgotIChDSUZpbHRlclNo
YXBlICopdW5pb25XaXRoOihDSUZpbHRlclNoYXBlICopczI7CgoKCgotIChDSUZpbHRlclNoYXBl
ICopdW5pb25XaXRoUmVjdDooQ0dSZWN0KXI7CgoKCi0gKENJRmlsdGVyU2hhcGUgKilpbnRlcnNl
Y3RXaXRoOihDSUZpbHRlclNoYXBlICopczI7CgoKCgotIChDSUZpbHRlclNoYXBlICopaW50ZXJz
ZWN0V2l0aFJlY3Q6KENHUmVjdClyOwoKQGVuZAojIDE2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NvcmVJbWFnZS5oIiAyIDMKCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9D
SUltYWdlQWNjdW11bGF0b3IuaCIgMSAzCgoKCgoKCgpAaW50ZXJmYWNlIENJSW1hZ2VBY2N1bXVs
YXRvciA6IE5TT2JqZWN0CnsKICAgIHZvaWQgKl9zdGF0ZTsKfQoKCgoKKyAoQ0lJbWFnZUFjY3Vt
dWxhdG9yICopaW1hZ2VBY2N1bXVsYXRvcldpdGhFeHRlbnQ6KENHUmVjdClyIGZvcm1hdDooQ0lG
b3JtYXQpZjsKCi0gKGlkKWluaXRXaXRoRXh0ZW50OihDR1JlY3QpciBmb3JtYXQ6KENJRm9ybWF0
KWY7CgoKCi0gKENHUmVjdClleHRlbnQ7CgoKCi0gKENJRm9ybWF0KWZvcm1hdDsKCgoKCgotIChD
SUltYWdlICopaW1hZ2U7CgoKCi0gKHZvaWQpc2V0SW1hZ2U6KENJSW1hZ2UgKilpbTsKCgoKCgot
ICh2b2lkKXNldEltYWdlOihDSUltYWdlICopaW0gZGlydHlSZWN0OihDR1JlY3QpcjsKCgoKLSAo
dm9pZCljbGVhcjsKCkBlbmQKIyAxOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6
Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db3JlSW1hZ2UuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DSUltYWdlUHJvdmlk
ZXIuaCIgMSAzCgoKCgoKCgpAY2xhc3MgTlNEaWN0aW9uYXJ5OwoKQGludGVyZmFjZSBDSUltYWdl
IChDSUltYWdlUHJvdmlkZXIpCgoKCgorIChDSUltYWdlICopaW1hZ2VXaXRoSW1hZ2VQcm92aWRl
cjooaWQpcCBzaXplOihzaXplX3Qpd2lkdGg6KHNpemVfdCloZWlnaHQKICAgIGZvcm1hdDooQ0lG
b3JtYXQpZiBjb2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY3MKICAgIG9wdGlvbnM6KE5TRGlj
dGlvbmFyeSAqKWRpY3Q7CgotIChpZClpbml0V2l0aEltYWdlUHJvdmlkZXI6KGlkKXAgc2l6ZToo
c2l6ZV90KXdpZHRoOihzaXplX3QpaGVpZ2h0CiAgICBmb3JtYXQ6KENJRm9ybWF0KWYgY29sb3JT
cGFjZTooQ0dDb2xvclNwYWNlUmVmKWNzCiAgICBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilkaWN0
OwoKQGVuZAoKCgpAaW50ZXJmYWNlIE5TT2JqZWN0IChDSUltYWdlUHJvdmlkZXIpCiMgMzcgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lJ
bWFnZVByb3ZpZGVyLmgiIDMKLSAodm9pZClwcm92aWRlSW1hZ2VEYXRhOih2b2lkICopZGF0YSBi
eXRlc1BlclJvdzooc2l6ZV90KXJvd2J5dGVzCiAgICBvcmlnaW46KHNpemVfdCl4OihzaXplX3Qp
eSBzaXplOihzaXplX3Qpd2lkdGg6KHNpemVfdCloZWlnaHQKICAgIHVzZXJJbmZvOihpZClpbmZv
OwoKQGVuZAojIDUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1l
d29yay9IZWFkZXJzL0NJSW1hZ2VQcm92aWRlci5oIiAzCmV4dGVybiBOU1N0cmluZyAqa0NJSW1h
Z2VQcm92aWRlclRpbGVTaXplIDsKCgoKCmV4dGVybiBOU1N0cmluZyAqa0NJSW1hZ2VQcm92aWRl
clVzZXJJbmZvIDsKIyAxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5m
cmFtZXdvcmsvSGVhZGVycy9Db3JlSW1hZ2UuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DSUtlcm5lbC5oIiAxIDMKCgoK
CgoKCkBjbGFzcyBDSUltYWdlOwpAY2xhc3MgTlNBcnJheTsKCkBpbnRlcmZhY2UgQ0lLZXJuZWwg
OiBOU09iamVjdAp7CiAgICB2b2lkICpfcHJpdjsKfQoKCgoKCgorIChOU0FycmF5ICopa2VybmVs
c1dpdGhTdHJpbmc6KE5TU3RyaW5nICopczsKCgoKLSAoTlNTdHJpbmcgKiluYW1lOwojIDM3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NJ
S2VybmVsLmgiIDMKLSAodm9pZClzZXRST0lTZWxlY3RvcjooU0VMKWFNZXRob2Q7CgpAZW5kCiMg
MjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQ29yZUltYWdlLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0
ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lQbHVnSW4uaCIgMSAzCiMgMTkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lQbHVnSW4uaCIg
MwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvQ0lQbHVnSW5JbnRlcmZhY2UuaCIgMSAzCiMgMjAgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lQbHVnSW5JbnRlcmZhY2UuaCIg
MwpAcHJvdG9jb2wgQ0lQbHVnSW5SZWdpc3RyYXRpb24KCgoKCgoKCi0oQk9PTClsb2FkOih2b2lk
Kilob3N0OwoKQGVuZAojIDIwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3Jl
LmZyYW1ld29yay9IZWFkZXJzL0NJUGx1Z0luLmgiIDIgMwoKCgoKCgoKQGludGVyZmFjZSBDSVBs
dWdJbiA6IE5TT2JqZWN0IHsKICAgIHZvaWQgKl9wcml2WzhdOwp9CiMgMzkgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0lQbHVnSW4uaCIg
MworKHZvaWQpbG9hZEFsbFBsdWdJbnM7CgoKCgoKCisodm9pZClsb2FkTm9uRXhlY3V0YWJsZVBs
dWdJbnM7CiMgNTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvQ0lQbHVnSW4uaCIgMworKHZvaWQpbG9hZFBsdWdJbjooTlNVUkwqKXVybCBh
bGxvd05vbkV4ZWN1dGFibGU6KEJPT0wpYWxsb3dOb25FeGVjdXRhYmxlOwoKQGVuZAojIDIxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0Nv
cmVJbWFnZS5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3Jl
LmZyYW1ld29yay9IZWFkZXJzL0NJUkFXRmlsdGVyLmgiIDEgMwoKCgpAY2xhc3MgTlNVUkw7CkBj
bGFzcyBOU0RpY3Rpb25hcnk7CkBjbGFzcyBOU1N0cmluZzsKQGNsYXNzIE5TRGF0YTsKIyAxNyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9D
SVJBV0ZpbHRlci5oIiAzCkBpbnRlcmZhY2UgQ0lGaWx0ZXIgKENJUkFXRmlsdGVyKQoKCgoKCgoK
KyAoQ0lGaWx0ZXIgKilmaWx0ZXJXaXRoSW1hZ2VVUkw6KE5TVVJMICopdXJsIG9wdGlvbnM6KE5T
RGljdGlvbmFyeSAqKW9wdGlvbnM7CgoKCgoKCgorIChDSUZpbHRlciAqKWZpbHRlcldpdGhJbWFn
ZURhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9uczsKCgoK
CgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NJSW5wdXREZWNvZGVyVmVyc2lvbktleSA7CgoK
CgoKCgpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0lTdXBwb3J0ZWREZWNvZGVyVmVyc2lvbnNL
ZXkgOwojIDYzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29y
ay9IZWFkZXJzL0NJUkFXRmlsdGVyLmgiIDMKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NJSW5w
dXRCb29zdEtleSA7CgoKCgoKCmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDSUlucHV0TmV1dHJh
bENocm9tYXRpY2l0eVhLZXkgOwoKCgoKCgpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0lJbnB1
dE5ldXRyYWxDaHJvbWF0aWNpdHlZS2V5IDsKCgoKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qg
a0NJSW5wdXROZXV0cmFsVGVtcGVyYXR1cmVLZXkgOwoKCgoKCgpleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBrQ0lJbnB1dE5ldXRyYWxUaW50S2V5IDsKCgoKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29u
c3Qga0NJSW5wdXROZXV0cmFsTG9jYXRpb25LZXkgOwoKCgoKCgpleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBrQ0lJbnB1dFNjYWxlRmFjdG9yS2V5IDsKCgoKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29u
c3Qga0NJSW5wdXRBbGxvd0RyYWZ0TW9kZUtleSA7CgoKCgoKCgpleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBrQ0lJbnB1dElnbm9yZUltYWdlT3JpZW50YXRpb25LZXkgOwoKCgoKCgoKZXh0ZXJuIE5T
U3RyaW5nICogY29uc3Qga0NJSW5wdXRJbWFnZU9yaWVudGF0aW9uS2V5IDsKCgoKCgoKZXh0ZXJu
IE5TU3RyaW5nICogY29uc3Qga0NJSW5wdXRFbmFibGVTaGFycGVuaW5nS2V5IDsKCgoKCgoKZXh0
ZXJuIE5TU3RyaW5nICogY29uc3Qga0NJSW5wdXRFbmFibGVDaHJvbWF0aWNOb2lzZVRyYWNraW5n
S2V5IDsKCgoKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NJSW5wdXRCb29zdFNoYWRvd0Ft
b3VudEtleSA7CgoKCgoKCmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDSUlucHV0Qmlhc0tleSA7
CgoKCgoKCmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDSU91dHB1dE5hdGl2ZVNpemVLZXkgOwoK
QGVuZAojIDIyICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29y
ay9IZWFkZXJzL0NvcmVJbWFnZS5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NJU2FtcGxlci5oIiAxIDMKIyA5ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NJU2Ft
cGxlci5oIiAzCkBjbGFzcyBOU0RpY3Rpb25hcnk7CkBjbGFzcyBDSUZpbHRlclNoYXBlLCBDSUlt
YWdlOwoKQGludGVyZmFjZSBDSVNhbXBsZXIgOiBOU09iamVjdCA8TlNDb3B5aW5nPgp7CiAgICB2
b2lkICpfcHJpdjsKfQoKCgorIChDSVNhbXBsZXIgKilzYW1wbGVyV2l0aEltYWdlOihDSUltYWdl
ICopaW07CiMgMzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvQ0lTYW1wbGVyLmgiIDMKKyAoQ0lTYW1wbGVyICopc2FtcGxlcldpdGhJbWFn
ZTooQ0lJbWFnZSAqKWltIGtleXNBbmRWYWx1ZXM6a2V5MCwgLi4uOworIChDSVNhbXBsZXIgKilz
YW1wbGVyV2l0aEltYWdlOihDSUltYWdlICopaW0gb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopZGlj
dDsKCgoKLSAoaWQpaW5pdFdpdGhJbWFnZTooQ0lJbWFnZSAqKWltOwotIChpZClpbml0V2l0aElt
YWdlOihDSUltYWdlICopaW0ga2V5c0FuZFZhbHVlczprZXkwLCAuLi47Ci0gKGlkKWluaXRXaXRo
SW1hZ2U6KENJSW1hZ2UgKilpbSBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilkaWN0OwoKCgoKCi0g
KENJRmlsdGVyU2hhcGUgKilkZWZpbml0aW9uOwoKCgoKLSAoQ0dSZWN0KWV4dGVudDsKCkBlbmQK
CgoKCmV4dGVybiBOU1N0cmluZyAqa0NJU2FtcGxlckFmZmluZU1hdHJpeCA7CmV4dGVybiBOU1N0
cmluZyAqa0NJU2FtcGxlcldyYXBNb2RlIDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lTYW1wbGVyRmls
dGVyTW9kZSA7CgpleHRlcm4gTlNTdHJpbmcgKmtDSVNhbXBsZXJXcmFwQmxhY2ssICprQ0lTYW1w
bGVyV3JhcENsYW1wIDsKZXh0ZXJuIE5TU3RyaW5nICprQ0lTYW1wbGVyRmlsdGVyTmVhcmVzdCwg
KmtDSVNhbXBsZXJGaWx0ZXJMaW5lYXIgOwojIDIzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NvcmVJbWFnZS5oIiAyIDMKIyA3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL1F1YXJ0
ekNvcmUuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5m
cmFtZXdvcmsvSGVhZGVycy9Db3JlVmlkZW8uaCIgMSAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVWaWRlby5oIiAxIDMKIyAy
MyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJz
L0NvcmVWaWRlby5oIiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVv
LmZyYW1ld29yay9IZWFkZXJzL0NWSG9zdFRpbWUuaCIgMSAzCiMgMTYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVkhvc3RUaW1lLmgiIDMK
I2RlZmluZSBfX0NPUkVWSURFT19DVkhPU1RUSU1FX0hfXyAxCgoKCgoKCmV4dGVybiAiQyIgewoj
IDMzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRl
cnMvQ1ZIb3N0VGltZS5oIiAzCmV4dGVybiB1aW50NjRfdCBDVkdldEN1cnJlbnRIb3N0VGltZSgp
IDsKIyA0MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9I
ZWFkZXJzL0NWSG9zdFRpbWUuaCIgMwpleHRlcm4gZG91YmxlIENWR2V0SG9zdENsb2NrRnJlcXVl
bmN5KCkgOwoKCgoKCgpleHRlcm4gdWludDMyX3QgQ1ZHZXRIb3N0Q2xvY2tNaW5pbXVtVGltZURl
bHRhKCkgOwoKCn0KIyAyNCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZy
YW1ld29yay9IZWFkZXJzL0NvcmVWaWRlby5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZEaXNwbGF5TGluay5oIiAxIDMK
IyAxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFk
ZXJzL0NWRGlzcGxheUxpbmsuaCIgMwojZGVmaW5lIF9fQ09SRVZJREVPX0NWRElTUExBWUxJTktf
SF9fIDEKCgp0eXBlZGVmIHN0cnVjdCBfX0NWRGlzcGxheUxpbmsgKkNWRGlzcGxheUxpbmtSZWY7
CgoKCgoKCgpleHRlcm4gIkMiIHsKCgp0eXBlZGVmIENWUmV0dXJuICgqQ1ZEaXNwbGF5TGlua091
dHB1dENhbGxiYWNrKShDVkRpc3BsYXlMaW5rUmVmIGRpc3BsYXlMaW5rLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDVlRpbWVTdGFtcCAqaW5O
b3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENWVGltZVN0YW1wICppbk91dHB1dFRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENWT3B0aW9uRmxhZ3MgZmxhZ3NJbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1ZPcHRpb25GbGFncyAqZmxhZ3NPdXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRp
c3BsYXlMaW5rQ29udGV4dCk7CgpleHRlcm4gQ0ZUeXBlSUQgQ1ZEaXNwbGF5TGlua0dldFR5cGVJ
RCh2b2lkKSA7CiMgNTEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFt
ZXdvcmsvSGVhZGVycy9DVkRpc3BsYXlMaW5rLmgiIDMKZXh0ZXJuIENWUmV0dXJuIENWRGlzcGxh
eUxpbmtDcmVhdGVXaXRoQ0dEaXNwbGF5cyhDR0RpcmVjdERpc3BsYXlJRCAqZGlzcGxheUFycmF5
LCBDRkluZGV4IGNvdW50LCBDVkRpc3BsYXlMaW5rUmVmICpkaXNwbGF5TGlua091dCkgOwojIDYx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMv
Q1ZEaXNwbGF5TGluay5oIiAzCmV4dGVybiBDVlJldHVybiBDVkRpc3BsYXlMaW5rQ3JlYXRlV2l0
aE9wZW5HTERpc3BsYXlNYXNrKENHT3BlbkdMRGlzcGxheU1hc2sgbWFzaywgQ1ZEaXNwbGF5TGlu
a1JlZiAqZGlzcGxheUxpbmtPdXQpIDsKIyA3MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWRGlzcGxheUxpbmsuaCIgMwpleHRlcm4gQ1ZS
ZXR1cm4gQ1ZEaXNwbGF5TGlua0NyZWF0ZVdpdGhDR0Rpc3BsYXkoQ0dEaXJlY3REaXNwbGF5SUQg
ZGlzcGxheUlELCBDVkRpc3BsYXlMaW5rUmVmICpkaXNwbGF5TGlua091dCkgOwoKCgoKCgoKZXh0
ZXJuIENWUmV0dXJuIENWRGlzcGxheUxpbmtDcmVhdGVXaXRoQWN0aXZlQ0dEaXNwbGF5cyhDVkRp
c3BsYXlMaW5rUmVmICpkaXNwbGF5TGlua091dCkgOwojIDkwICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZEaXNwbGF5TGluay5oIiAzCmV4
dGVybiBDVlJldHVybiBDVkRpc3BsYXlMaW5rU2V0Q3VycmVudENHRGlzcGxheShDVkRpc3BsYXlM
aW5rUmVmIGRpc3BsYXlMaW5rLCBDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5SUQpIDsKIyAxMDAg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9D
VkRpc3BsYXlMaW5rLmgiIDMKZXh0ZXJuIENWUmV0dXJuIENWRGlzcGxheUxpbmtTZXRDdXJyZW50
Q0dEaXNwbGF5RnJvbU9wZW5HTENvbnRleHQoQ1ZEaXNwbGF5TGlua1JlZiBkaXNwbGF5TGluaywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0dMQ29udGV4dE9iaiBjZ2xDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR0xQaXhlbEZvcm1h
dE9iaiBjZ2xQaXhlbEZvcm1hdCkgOwoKCgoKCgoKZXh0ZXJuIENHRGlyZWN0RGlzcGxheUlEIENW
RGlzcGxheUxpbmtHZXRDdXJyZW50Q0dEaXNwbGF5KENWRGlzcGxheUxpbmtSZWYgZGlzcGxheUxp
bmspIDsKIyAxMjEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdv
cmsvSGVhZGVycy9DVkRpc3BsYXlMaW5rLmgiIDMKZXh0ZXJuIENWUmV0dXJuIENWRGlzcGxheUxp
bmtTZXRPdXRwdXRDYWxsYmFjayhDVkRpc3BsYXlMaW5rUmVmIGRpc3BsYXlMaW5rLCBDVkRpc3Bs
YXlMaW5rT3V0cHV0Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKnVzZXJJbmZvKSA7CiMgMTMxICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZE
aXNwbGF5TGluay5oIiAzCmV4dGVybiBDVlJldHVybiBDVkRpc3BsYXlMaW5rU3RhcnQoQ1ZEaXNw
bGF5TGlua1JlZiBkaXNwbGF5TGluaykgOwojIDE0MCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWRGlzcGxheUxpbmsuaCIgMwpleHRlcm4g
Q1ZSZXR1cm4gQ1ZEaXNwbGF5TGlua1N0b3AoQ1ZEaXNwbGF5TGlua1JlZiBkaXNwbGF5TGluaykg
OwojIDE0OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9I
ZWFkZXJzL0NWRGlzcGxheUxpbmsuaCIgMwpleHRlcm4gQ1ZUaW1lIENWRGlzcGxheUxpbmtHZXRO
b21pbmFsT3V0cHV0VmlkZW9SZWZyZXNoUGVyaW9kKENWRGlzcGxheUxpbmtSZWYgZGlzcGxheUxp
bmspIDsKIyAxNTggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdv
cmsvSGVhZGVycy9DVkRpc3BsYXlMaW5rLmgiIDMKZXh0ZXJuIENWVGltZSBDVkRpc3BsYXlMaW5r
R2V0T3V0cHV0VmlkZW9MYXRlbmN5KENWRGlzcGxheUxpbmtSZWYgZGlzcGxheUxpbmspIDsKIyAx
NjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVy
cy9DVkRpc3BsYXlMaW5rLmgiIDMKZXh0ZXJuIGRvdWJsZSBDVkRpc3BsYXlMaW5rR2V0QWN0dWFs
T3V0cHV0VmlkZW9SZWZyZXNoUGVyaW9kKENWRGlzcGxheUxpbmtSZWYgZGlzcGxheUxpbmspIDsK
IyAxNzYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVh
ZGVycy9DVkRpc3BsYXlMaW5rLmgiIDMKZXh0ZXJuIEJvb2xlYW4gQ1ZEaXNwbGF5TGlua0lzUnVu
bmluZyhDVkRpc3BsYXlMaW5rUmVmIGRpc3BsYXlMaW5rKSA7CiMgMTg2ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZEaXNwbGF5TGluay5o
IiAzCmV4dGVybiBDVlJldHVybiBDVkRpc3BsYXlMaW5rR2V0Q3VycmVudFRpbWUoQ1ZEaXNwbGF5
TGlua1JlZiBkaXNwbGF5TGluaywgQ1ZUaW1lU3RhbXAgKm91dFRpbWUpIDsKIyAxOTkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVkRpc3Bs
YXlMaW5rLmgiIDMKZXh0ZXJuIENWUmV0dXJuIENWRGlzcGxheUxpbmtUcmFuc2xhdGVUaW1lKENW
RGlzcGxheUxpbmtSZWYgZGlzcGxheUxpbmssIGNvbnN0IENWVGltZVN0YW1wICppblRpbWUsIENW
VGltZVN0YW1wICpvdXRUaW1lKSA7CiMgMjA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZEaXNwbGF5TGluay5oIiAzCmV4dGVybiBDVkRp
c3BsYXlMaW5rUmVmIENWRGlzcGxheUxpbmtSZXRhaW4oQ1ZEaXNwbGF5TGlua1JlZiBkaXNwbGF5
TGluaykgOwoKCgoKCgoKZXh0ZXJuIHZvaWQgQ1ZEaXNwbGF5TGlua1JlbGVhc2UoQ1ZEaXNwbGF5
TGlua1JlZiBkaXNwbGF5TGluaykgOwoKCn0KIyAyNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVWaWRlby5oIiAyIDMKCgojIDEgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBp
eGVsQnVmZmVyLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlk
ZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhlbEJ1ZmZlci5oIiAzCiNkZWZpbmUgX19DT1JFVklE
RU9fQ1ZQSVhFTEJVRkZFUl9IX18gMQojIDI5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhlbEJ1ZmZlci5oIiAzCmV4dGVybiAiQyIg
ewoKCgoKCgplbnVtIHsKICBrQ1ZQaXhlbEZvcm1hdFR5cGVfMU1vbm9jaHJvbWUgPSAweDAwMDAw
MDAxLAogIGtDVlBpeGVsRm9ybWF0VHlwZV8ySW5kZXhlZCA9IDB4MDAwMDAwMDIsCiAga0NWUGl4
ZWxGb3JtYXRUeXBlXzRJbmRleGVkID0gMHgwMDAwMDAwNCwKICBrQ1ZQaXhlbEZvcm1hdFR5cGVf
OEluZGV4ZWQgPSAweDAwMDAwMDA4LAogIGtDVlBpeGVsRm9ybWF0VHlwZV8xSW5kZXhlZEdyYXlf
V2hpdGVJc1plcm8gPSAweDAwMDAwMDIxLAogIGtDVlBpeGVsRm9ybWF0VHlwZV8ySW5kZXhlZEdy
YXlfV2hpdGVJc1plcm8gPSAweDAwMDAwMDIyLAogIGtDVlBpeGVsRm9ybWF0VHlwZV80SW5kZXhl
ZEdyYXlfV2hpdGVJc1plcm8gPSAweDAwMDAwMDI0LAogIGtDVlBpeGVsRm9ybWF0VHlwZV84SW5k
ZXhlZEdyYXlfV2hpdGVJc1plcm8gPSAweDAwMDAwMDI4LAogIGtDVlBpeGVsRm9ybWF0VHlwZV8x
NkJFNTU1ID0gMHgwMDAwMDAxMCwKICBrQ1ZQaXhlbEZvcm1hdFR5cGVfMTZMRTU1NSA9ICdMNTU1
JywKICBrQ1ZQaXhlbEZvcm1hdFR5cGVfMTZMRTU1NTEgPSAnNTU1MScsCiAga0NWUGl4ZWxGb3Jt
YXRUeXBlXzE2QkU1NjUgPSAnQjU2NScsCiAga0NWUGl4ZWxGb3JtYXRUeXBlXzE2TEU1NjUgPSAn
TDU2NScsCiAga0NWUGl4ZWxGb3JtYXRUeXBlXzI0UkdCID0gMHgwMDAwMDAxOCwKICBrQ1ZQaXhl
bEZvcm1hdFR5cGVfMjRCR1IgPSAnMjRCRycsCiAga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQVJHQiA9
IDB4MDAwMDAwMjAsCiAga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSA9ICdCR1JBJywKICBrQ1ZQ
aXhlbEZvcm1hdFR5cGVfMzJBQkdSID0gJ0FCR1InLAogIGtDVlBpeGVsRm9ybWF0VHlwZV8zMlJH
QkEgPSAnUkdCQScsCiAga0NWUGl4ZWxGb3JtYXRUeXBlXzY0QVJHQiA9ICdiNjRhJywKICBrQ1ZQ
aXhlbEZvcm1hdFR5cGVfNDhSR0IgPSAnYjQ4cicsCiAga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQWxw
aGFHcmF5ID0gJ2IzMmEnLAogIGtDVlBpeGVsRm9ybWF0VHlwZV8xNkdyYXkgPSAnYjE2ZycsCiAg
a0NWUGl4ZWxGb3JtYXRUeXBlXzQyMllwQ2JDcjggPSAnMnZ1eScsCiAga0NWUGl4ZWxGb3JtYXRU
eXBlXzQ0NDRZcENiQ3JBOCA9ICd2NDA4JywKICBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDQ0NFlwQ2JD
ckE4UiA9ICdyNDA4JywKICBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDQ0WXBDYkNyOCA9ICd2MzA4JywK
ICBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIyWXBDYkNyMTYgPSAndjIxNicsCiAga0NWUGl4ZWxGb3Jt
YXRUeXBlXzQyMllwQ2JDcjEwID0gJ3YyMTAnLAogIGtDVlBpeGVsRm9ybWF0VHlwZV80NDRZcENi
Q3IxMCA9ICd2NDEwJywKICBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOFBsYW5hciA9ICd5
NDIwJywKICBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIyWXBDYkNyXzRBXzhCaVBsYW5hciA9ICdhMnZ5
JywKfTsKIyA4MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29y
ay9IZWFkZXJzL0NWUGl4ZWxCdWZmZXIuaCIgMwplbnVtIENWUGl4ZWxCdWZmZXJMb2NrRmxhZ3Mg
ewoga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5ID0gMHgwMDAwMDAwMSwKfTsKCgoKCgoKc3Ry
dWN0IENWUGxhbmFyQ29tcG9uZW50SW5mbyB7CiAgaW50MzJfdCBvZmZzZXQ7CiAgdWludDMyX3Qg
cm93Qnl0ZXM7Cn07CnR5cGVkZWYgc3RydWN0IENWUGxhbmFyQ29tcG9uZW50SW5mbyBDVlBsYW5h
ckNvbXBvbmVudEluZm87CnN0cnVjdCBDVlBsYW5hclBpeGVsQnVmZmVySW5mbyB7CiAgQ1ZQbGFu
YXJDb21wb25lbnRJbmZvIGNvbXBvbmVudEluZm9bMV07Cn07CnR5cGVkZWYgc3RydWN0IENWUGxh
bmFyUGl4ZWxCdWZmZXJJbmZvIENWUGxhbmFyUGl4ZWxCdWZmZXJJbmZvOwpzdHJ1Y3QgQ1ZQbGFu
YXJQaXhlbEJ1ZmZlckluZm9fWUNiQ3JQbGFuYXIgewogIENWUGxhbmFyQ29tcG9uZW50SW5mbyBj
b21wb25lbnRJbmZvWTsKICBDVlBsYW5hckNvbXBvbmVudEluZm8gY29tcG9uZW50SW5mb0NiOwog
IENWUGxhbmFyQ29tcG9uZW50SW5mbyBjb21wb25lbnRJbmZvQ3I7Cn07CnR5cGVkZWYgc3RydWN0
IENWUGxhbmFyUGl4ZWxCdWZmZXJJbmZvX1lDYkNyUGxhbmFyIENWUGxhbmFyUGl4ZWxCdWZmZXJJ
bmZvX1lDYkNyUGxhbmFyOwoKICAgICAgIApleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWUGl4
ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NW
UGl4ZWxCdWZmZXJNZW1vcnlBbGxvY2F0b3JLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0NWUGl4ZWxCdWZmZXJXaWR0aEtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZQaXhl
bEJ1ZmZlckhlaWdodEtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZQaXhlbEJ1ZmZl
ckV4dGVuZGVkUGl4ZWxzTGVmdEtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZQaXhl
bEJ1ZmZlckV4dGVuZGVkUGl4ZWxzVG9wS2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtD
VlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNSaWdodEtleSA7CmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzQm90dG9tS2V5IDsKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDVlBpeGVsQnVmZmVyQnl0ZXNQZXJSb3dBbGlnbm1lbnRLZXkgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWUGl4ZWxCdWZmZXJDR0JpdG1hcENvbnRleHRDb21wYXRp
YmlsaXR5S2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVlBpeGVsQnVmZmVyQ0dJbWFn
ZUNvbXBhdGliaWxpdHlLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWUGl4ZWxCdWZm
ZXJPcGVuR0xDb21wYXRpYmlsaXR5S2V5IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVlBp
eGVsQnVmZmVyUGxhbmVBbGlnbm1lbnRLZXkgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NW
UGl4ZWxCdWZmZXJJT1N1cmZhY2VQcm9wZXJ0aWVzS2V5IDsKCmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZU9wZW5HTFRleHR1cmVDb21wYXRpYmlsaXR5S2V5
IDsKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZU9wZW5H
TEZCT0NvbXBhdGliaWxpdHlLZXkgOwoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVlBpeGVs
QnVmZmVySU9TdXJmYWNlQ29yZUFuaW1hdGlvbkNvbXBhdGliaWxpdHlLZXkgOwoKCgoKCgoKdHlw
ZWRlZiBDVkltYWdlQnVmZmVyUmVmIENWUGl4ZWxCdWZmZXJSZWY7CgpleHRlcm4gQ0ZUeXBlSUQg
Q1ZQaXhlbEJ1ZmZlckdldFR5cGVJRCh2b2lkKSA7CiMgMTQ1ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhlbEJ1ZmZlci5oIiAzCmV4
dGVybiBDVlBpeGVsQnVmZmVyUmVmIENWUGl4ZWxCdWZmZXJSZXRhaW4oIENWUGl4ZWxCdWZmZXJS
ZWYgdGV4dHVyZSApIDsKCgoKCgoKCmV4dGVybiB2b2lkIENWUGl4ZWxCdWZmZXJSZWxlYXNlKCBD
VlBpeGVsQnVmZmVyUmVmIHRleHR1cmUgKSA7CiMgMTY0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhlbEJ1ZmZlci5oIiAzCmV4dGVy
biBDVlJldHVybiBDVlBpeGVsQnVmZmVyQ3JlYXRlUmVzb2x2ZWRBdHRyaWJ1dGVzRGljdGlvbmFy
eShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGQXJyYXlSZWYgYXR0cmlidXRlcywgQ0ZEaWN0
aW9uYXJ5UmVmICpyZXNvbHZlZERpY3Rpb25hcnlPdXQpIDsKIyAxNzggIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBpeGVsQnVmZmVyLmgi
IDMKZXh0ZXJuIENWUmV0dXJuIENWUGl4ZWxCdWZmZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3aWR0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9TVHlwZSBwaXhlbEZvcm1hdFR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVm
IHBpeGVsQnVmZmVyQXR0cmlidXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDVlBpeGVsQnVmZmVyUmVmICpwaXhlbEJ1ZmZlck91dCkgOwoKdHlwZWRlZiB2b2lkICgq
Q1ZQaXhlbEJ1ZmZlclJlbGVhc2VCeXRlc0NhbGxiYWNrKSggdm9pZCAqcmVsZWFzZVJlZkNvbiwg
Y29uc3Qgdm9pZCAqYmFzZUFkZHJlc3MgKTsKIyAyMDIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBpeGVsQnVmZmVyLmgiIDMKZXh0ZXJu
IENWUmV0dXJuIENWUGl4ZWxCdWZmZXJDcmVhdGVXaXRoQnl0ZXMoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yLAogICAgICAgICAgICBzaXplX3Qgd2lkdGgsCiAgICAgICAgICAgIHNpemVfdCBoZWln
aHQsCiAgICAgICAgICAgIE9TVHlwZSBwaXhlbEZvcm1hdFR5cGUsCiAgICAgICAgICAgIHZvaWQg
KmJhc2VBZGRyZXNzLAogICAgICAgICAgICBzaXplX3QgYnl0ZXNQZXJSb3csCiAgICAgICAgICAg
IENWUGl4ZWxCdWZmZXJSZWxlYXNlQnl0ZXNDYWxsYmFjayByZWxlYXNlQ2FsbGJhY2ssCiAgICAg
ICAgICAgIHZvaWQgKnJlbGVhc2VSZWZDb24sCiAgICAgICAgICAgIENGRGljdGlvbmFyeVJlZiBw
aXhlbEJ1ZmZlckF0dHJpYnV0ZXMsCiAgICAgICAgICAgICAgICAgICBDVlBpeGVsQnVmZmVyUmVm
ICpwaXhlbEJ1ZmZlck91dCkgOwoKdHlwZWRlZiB2b2lkICgqQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VQ
bGFuYXJCeXRlc0NhbGxiYWNrKSggdm9pZCAqcmVsZWFzZVJlZkNvbiwgY29uc3Qgdm9pZCAqZGF0
YVB0ciwgc2l6ZV90IGRhdGFTaXplLCBzaXplX3QgbnVtYmVyT2ZQbGFuZXMsIGNvbnN0IHZvaWQg
KnBsYW5lQWRkcmVzc2VzW10gKTsKIyAyMzUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBpeGVsQnVmZmVyLmgiIDMKZXh0ZXJuIENWUmV0
dXJuIENWUGl4ZWxCdWZmZXJDcmVhdGVXaXRoUGxhbmFyQnl0ZXMoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yLAogICAgICAgIHNpemVfdCB3aWR0aCwKICAgICAgICBzaXplX3QgaGVpZ2h0LAogICAg
ICAgIE9TVHlwZSBwaXhlbEZvcm1hdFR5cGUsCiAgICAgICAgdm9pZCAqZGF0YVB0ciwKICAgICAg
ICBzaXplX3QgZGF0YVNpemUsCiAgICAgICAgc2l6ZV90IG51bWJlck9mUGxhbmVzLAogICAgICAg
IHZvaWQgKnBsYW5lQmFzZUFkZHJlc3NbXSwKICAgICAgICBzaXplX3QgcGxhbmVXaWR0aFtdLAog
ICAgICAgIHNpemVfdCBwbGFuZUhlaWdodFtdLAogICAgICAgIHNpemVfdCBwbGFuZUJ5dGVzUGVy
Um93W10sCiAgICAgICAgQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VQbGFuYXJCeXRlc0NhbGxiYWNrIHJl
bGVhc2VDYWxsYmFjaywKICAgICAgICB2b2lkICpyZWxlYXNlUmVmQ29uLAogICAgICAgIENGRGlj
dGlvbmFyeVJlZiBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMsCiAgICAgICAgQ1ZQaXhlbEJ1ZmZlclJl
ZiAqcGl4ZWxCdWZmZXJPdXQpIDsKIyAyNTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBpeGVsQnVmZmVyLmgiIDMKZXh0ZXJuIENWUmV0
dXJuIENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlciwgQ1ZPcHRpb25GbGFncyBsb2NrRmxhZ3MpIDsKIyAyNjggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBpeGVsQnVmZmVyLmgiIDMK
ZXh0ZXJuIENWUmV0dXJuIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhDVlBpeGVsQnVm
ZmVyUmVmIHBpeGVsQnVmZmVyLCBDVk9wdGlvbkZsYWdzIHVubG9ja0ZsYWdzKSA7CgoKCgoKCgpl
eHRlcm4gc2l6ZV90IENWUGl4ZWxCdWZmZXJHZXRXaWR0aChDVlBpeGVsQnVmZmVyUmVmIHBpeGVs
QnVmZmVyKSA7CgoKCgoKCgpleHRlcm4gc2l6ZV90IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQoQ1ZQ
aXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikgOwoKCgoKCgoKZXh0ZXJuIE9TVHlwZSBDVlBpeGVs
QnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpIDsK
IyAzMDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVh
ZGVycy9DVlBpeGVsQnVmZmVyLmgiIDMKZXh0ZXJuIHZvaWQgKkNWUGl4ZWxCdWZmZXJHZXRCYXNl
QWRkcmVzcyhDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKSA7CiMgMzEzICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhlbEJ1ZmZl
ci5oIiAzCmV4dGVybiBzaXplX3QgQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KENWUGl4ZWxC
dWZmZXJSZWYgcGl4ZWxCdWZmZXIpIDsKCgoKCgoKCmV4dGVybiBzaXplX3QgQ1ZQaXhlbEJ1ZmZl
ckdldERhdGFTaXplKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpIDsKCgoKCgoKCmV4dGVy
biBCb29sZWFuIENWUGl4ZWxCdWZmZXJJc1BsYW5hcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyKSA7CgoKCgoKCgpleHRlcm4gc2l6ZV90IENWUGl4ZWxCdWZmZXJHZXRQbGFuZUNvdW50KENW
UGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpIDsKIyAzNDYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBpeGVsQnVmZmVyLmgiIDMKZXh0
ZXJuIHNpemVfdCBDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lKENWUGl4ZWxCdWZmZXJSZWYg
cGl4ZWxCdWZmZXIsIHNpemVfdCBwbGFuZUluZGV4KSA7CiMgMzU1ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhlbEJ1ZmZlci5oIiAz
CmV4dGVybiBzaXplX3QgQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUoQ1ZQaXhlbEJ1ZmZl
clJlZiBwaXhlbEJ1ZmZlciwgc2l6ZV90IHBsYW5lSW5kZXgpIDsKIyAzNjYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBpeGVsQnVmZmVy
LmgiIDMKZXh0ZXJuIHZvaWQgKkNWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUoQ1ZQ
aXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgc2l6ZV90IHBsYW5lSW5kZXgpIDsKIyAzNzUgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBp
eGVsQnVmZmVyLmgiIDMKZXh0ZXJuIHNpemVfdCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3dP
ZlBsYW5lKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHNpemVfdCBwbGFuZUluZGV4KSA7
CiMgMzg2ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hl
YWRlcnMvQ1ZQaXhlbEJ1ZmZlci5oIiAzCmV4dGVybiB2b2lkIENWUGl4ZWxCdWZmZXJHZXRFeHRl
bmRlZFBpeGVscyhDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLAogICAgICAgICAgIHNpemVf
dCAqZXh0cmFDb2x1bW5zT25MZWZ0LAogICAgICAgICAgIHNpemVfdCAqZXh0cmFDb2x1bW5zT25S
aWdodCwKICAgICAgICAgICBzaXplX3QgKmV4dHJhUm93c09uVG9wLAogICAgICAgICAgIHNpemVf
dCAqZXh0cmFSb3dzT25Cb3R0b20pIDsKCgoKCgoKZXh0ZXJuIENWUmV0dXJuIENWUGl4ZWxCdWZm
ZXJGaWxsRXh0ZW5kZWRQaXhlbHMoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikgOwojIDQw
NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJz
L0NWUGl4ZWxCdWZmZXIuaCIgMwpleHRlcm4gSU9TdXJmYWNlUmVmIENWUGl4ZWxCdWZmZXJHZXRJ
T1N1cmZhY2UoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikgOwojIDQyMyAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWUGl4ZWxCdWZm
ZXIuaCIgMwpleHRlcm4gQ1ZSZXR1cm4gQ1ZQaXhlbEJ1ZmZlckNyZWF0ZVdpdGhJT1N1cmZhY2Uo
CiAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLAogIElPU3VyZmFjZVJlZiBzdXJmYWNlLAogIENG
RGljdGlvbmFyeVJlZiBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMsCiAgQ1ZQaXhlbEJ1ZmZlclJlZiAq
cGl4ZWxCdWZmZXJPdXQpIDsKCgoKCn0KIyAyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVWaWRlby5oIiAyIDMKIyAxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhlbEJ1
ZmZlclBvb2wuaCIgMSAzCiMgMTcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRl
by5mcmFtZXdvcmsvSGVhZGVycy9DVlBpeGVsQnVmZmVyUG9vbC5oIiAzCiNkZWZpbmUgX19DT1JF
VklERU9fX0NWUElYRUxCVUZGRVJQT09MX0hfXyAxCiMgMjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBpeGVsQnVmZmVyUG9vbC5oIiAz
CmV4dGVybiAiQyIgewoKCnR5cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wgKkNWUGl4
ZWxCdWZmZXJQb29sUmVmOwoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVlBpeGVsQnVm
ZmVyUG9vbE1pbmltdW1CdWZmZXJDb3VudEtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q1ZQaXhlbEJ1ZmZlclBvb2xNYXhpbXVtQnVmZmVyQWdlS2V5IDsKCgpleHRlcm4gQ0ZUeXBlSUQg
Q1ZQaXhlbEJ1ZmZlclBvb2xHZXRUeXBlSUQodm9pZCkgOwojIDQ3ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhlbEJ1ZmZlclBvb2wu
aCIgMwpleHRlcm4gQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgQ1ZQaXhlbEJ1ZmZlclBvb2xSZXRhaW4o
IENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbCApIDsKCgoKCgoKCmV4dGVybiB2
b2lkIENWUGl4ZWxCdWZmZXJQb29sUmVsZWFzZSggQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxC
dWZmZXJQb29sICkgOwojIDY1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8u
ZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhlbEJ1ZmZlclBvb2wuaCIgMwpleHRlcm4gQ1ZSZXR1cm4g
Q1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLAogICAgICAg
IENGRGljdGlvbmFyeVJlZiBwb29sQXR0cmlidXRlcywKICAgICAgICBDRkRpY3Rpb25hcnlSZWYg
cGl4ZWxCdWZmZXJBdHRyaWJ1dGVzLAogICAgICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmICpwb29s
T3V0KSA7CgoKCgoKCgpleHRlcm4gQ0ZEaWN0aW9uYXJ5UmVmIENWUGl4ZWxCdWZmZXJQb29sR2V0
QXR0cmlidXRlcyhDVlBpeGVsQnVmZmVyUG9vbFJlZiBwb29sKSA7CiMgODYgIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBpeGVsQnVmZmVy
UG9vbC5oIiAzCmV4dGVybiBDRkRpY3Rpb25hcnlSZWYgQ1ZQaXhlbEJ1ZmZlclBvb2xHZXRQaXhl
bEJ1ZmZlckF0dHJpYnV0ZXMoQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcG9vbCkgOwojIDk3ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhl
bEJ1ZmZlclBvb2wuaCIgMwpleHRlcm4gQ1ZSZXR1cm4gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQ
aXhlbEJ1ZmZlcihDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsCiAgICAgICAgICAgICAgIENWUGl4
ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbCwKICAgICAgICBDVlBpeGVsQnVmZmVyUmVm
ICpwaXhlbEJ1ZmZlck91dCkgOwoKCn0KIyAyOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVWaWRlby5oIiAyIDMKCgojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVk9wZW5H
TEJ1ZmZlci5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVv
LmZyYW1ld29yay9IZWFkZXJzL0NWT3BlbkdMQnVmZmVyLmgiIDMKI2RlZmluZSBfX0NPUkVWSURF
T19DVk9QRU5HTEJVRkZFUl9IX18gMQoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDVk9wZW5HTEJ1ZmZlcldpZHRoIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtDVk9wZW5HTEJ1ZmZlckhlaWdodCA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZP
cGVuR0xCdWZmZXJUYXJnZXQgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWT3BlbkdMQnVm
ZmVySW50ZXJuYWxGb3JtYXQgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWT3BlbkdMQnVm
ZmVyTWF4aW11bU1pcG1hcExldmVsIDsKCnR5cGVkZWYgQ1ZJbWFnZUJ1ZmZlclJlZiBDVk9wZW5H
TEJ1ZmZlclJlZjsKCmV4dGVybiBDRlR5cGVJRCBDVk9wZW5HTEJ1ZmZlckdldFR5cGVJRCh2b2lk
KSA7CiMgNDUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsv
SGVhZGVycy9DVk9wZW5HTEJ1ZmZlci5oIiAzCmV4dGVybiBDVk9wZW5HTEJ1ZmZlclJlZiBDVk9w
ZW5HTEJ1ZmZlclJldGFpbiggQ1ZPcGVuR0xCdWZmZXJSZWYgYnVmZmVyICkgOwoKCgoKCgoKZXh0
ZXJuIHZvaWQgQ1ZPcGVuR0xCdWZmZXJSZWxlYXNlKCBDVk9wZW5HTEJ1ZmZlclJlZiBidWZmZXIg
KSA7CiMgNjYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsv
SGVhZGVycy9DVk9wZW5HTEJ1ZmZlci5oIiAzCmV4dGVybiBDVlJldHVybiBDVk9wZW5HTEJ1ZmZl
ckNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhl
aWdodCwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMsIENWT3BlbkdMQnVmZmVyUmVmICpidWZm
ZXJPdXQpIDsKCgoKCgoKZXh0ZXJuIENGRGljdGlvbmFyeVJlZiBDVk9wZW5HTEJ1ZmZlckdldEF0
dHJpYnV0ZXMoQ1ZPcGVuR0xCdWZmZXJSZWYgb3BlbkdMQnVmZmVyKSA7CiMgODQgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVk9wZW5HTEJ1
ZmZlci5oIiAzCmV4dGVybiBDVlJldHVybiBDVk9wZW5HTEJ1ZmZlckF0dGFjaChDVk9wZW5HTEJ1
ZmZlclJlZiBvcGVuR0xCdWZmZXIsIENHTENvbnRleHRPYmogY2dsQ29udGV4dCwgR0xlbnVtIGZh
Y2UsIEdMaW50IGxldmVsLCBHTGludCBzY3JlZW4pIDsKCgp9CiMgMzIgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9Db3JlVmlkZW8uaCIgMiAz
CiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFk
ZXJzL0NWT3BlbkdMQnVmZmVyUG9vbC5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWT3BlbkdMQnVmZmVyUG9vbC5oIiAz
CiNkZWZpbmUgX19DT1JFVklERU9fX0NWT1BFTkdMQlVGRkVSUE9PTF9IX18gMQoKCgoKCgpleHRl
cm4gIkMiIHsKCgp0eXBlZGVmIHN0cnVjdCBfX0NWT3BlbkdMQnVmZmVyUG9vbCAqQ1ZPcGVuR0xC
dWZmZXJQb29sUmVmOwoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVk9wZW5HTEJ1ZmZlclBv
b2xNaW5pbXVtQnVmZmVyQ291bnRLZXkgOwoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NW
T3BlbkdMQnVmZmVyUG9vbE1heGltdW1CdWZmZXJBZ2VLZXkgOwoKZXh0ZXJuIENGVHlwZUlEIENW
T3BlbkdMQnVmZmVyUG9vbEdldFR5cGVJRCh2b2lkKSA7CiMgNDQgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVk9wZW5HTEJ1ZmZlclBvb2wu
aCIgMwpleHRlcm4gQ1ZPcGVuR0xCdWZmZXJQb29sUmVmIENWT3BlbkdMQnVmZmVyUG9vbFJldGFp
biggQ1ZPcGVuR0xCdWZmZXJQb29sUmVmIG9wZW5HTEJ1ZmZlclBvb2wgKSA7CgoKCgoKCgpleHRl
cm4gdm9pZCBDVk9wZW5HTEJ1ZmZlclBvb2xSZWxlYXNlKCBDVk9wZW5HTEJ1ZmZlclBvb2xSZWYg
b3BlbkdMQnVmZmVyUG9vbCApIDsKIyA2NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29y
ZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWT3BlbkdMQnVmZmVyUG9vbC5oIiAzCmV4dGVybiBD
VlJldHVybiBDVk9wZW5HTEJ1ZmZlclBvb2xDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9y
LAogICAgICAgIENGRGljdGlvbmFyeVJlZiBwb29sQXR0cmlidXRlcywKICAgICAgICBDRkRpY3Rp
b25hcnlSZWYgb3BlbkdMQnVmZmVyQXR0cmlidXRlcywKICAgICAgICBDVk9wZW5HTEJ1ZmZlclBv
b2xSZWYgKnBvb2xPdXQpIDsKCgoKCgoKCmV4dGVybiBDRkRpY3Rpb25hcnlSZWYgQ1ZPcGVuR0xC
dWZmZXJQb29sR2V0QXR0cmlidXRlcyhDVk9wZW5HTEJ1ZmZlclBvb2xSZWYgcG9vbCkgOwojIDg1
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMv
Q1ZPcGVuR0xCdWZmZXJQb29sLmgiIDMKZXh0ZXJuIENGRGljdGlvbmFyeVJlZiBDVk9wZW5HTEJ1
ZmZlclBvb2xHZXRPcGVuR0xCdWZmZXJBdHRyaWJ1dGVzKENWT3BlbkdMQnVmZmVyUG9vbFJlZiBw
b29sKSA7CiMgOTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdv
cmsvSGVhZGVycy9DVk9wZW5HTEJ1ZmZlclBvb2wuaCIgMwpleHRlcm4gQ1ZSZXR1cm4gQ1ZPcGVu
R0xCdWZmZXJQb29sQ3JlYXRlT3BlbkdMQnVmZmVyKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwK
ICAgICAgICAgICAgICAgQ1ZPcGVuR0xCdWZmZXJQb29sUmVmIG9wZW5HTEJ1ZmZlclBvb2wsCiAg
ICAgICAgQ1ZPcGVuR0xCdWZmZXJSZWYgKm9wZW5HTEJ1ZmZlck91dCkgOwoKCn0KIyAzMyAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NvcmVW
aWRlby5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJh
bWV3b3JrL0hlYWRlcnMvQ1ZPcGVuR0xUZXh0dXJlLmgiIDEgMwojIDE3ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZPcGVuR0xUZXh0dXJl
LmgiIDMKI2RlZmluZSBfX0NPUkVWSURFT19DVk9QRU5HTFRFWFRVUkVfSF9fIDEKIyAyOSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWT3Bl
bkdMVGV4dHVyZS5oIiAzCmV4dGVybiAiQyIgewoKCiAgICAgICAKCgoKCgoKdHlwZWRlZiBDVklt
YWdlQnVmZmVyUmVmIENWT3BlbkdMVGV4dHVyZVJlZjsKCmV4dGVybiBDRlR5cGVJRCBDVk9wZW5H
TFRleHR1cmVHZXRUeXBlSUQodm9pZCkgOwojIDUwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZPcGVuR0xUZXh0dXJlLmgiIDMKZXh0ZXJu
IENWT3BlbkdMVGV4dHVyZVJlZiBDVk9wZW5HTFRleHR1cmVSZXRhaW4oIENWT3BlbkdMVGV4dHVy
ZVJlZiB0ZXh0dXJlICkgOwoKCgoKCgoKZXh0ZXJuIHZvaWQgQ1ZPcGVuR0xUZXh0dXJlUmVsZWFz
ZSggQ1ZPcGVuR0xUZXh0dXJlUmVmIHRleHR1cmUgKSA7CgoKCgoKCgpleHRlcm4gR0xlbnVtIENW
T3BlbkdMVGV4dHVyZUdldFRhcmdldCggQ1ZPcGVuR0xUZXh0dXJlUmVmIGltYWdlKSA7CgoKCgoK
CgpleHRlcm4gR0x1aW50IENWT3BlbkdMVGV4dHVyZUdldE5hbWUoIENWT3BlbkdMVGV4dHVyZVJl
ZiBpbWFnZSkgOwoKCgoKCgoKZXh0ZXJuIEJvb2xlYW4gQ1ZPcGVuR0xUZXh0dXJlSXNGbGlwcGVk
KCBDVk9wZW5HTFRleHR1cmVSZWYgaW1hZ2UpIDsKIyA5NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWT3BlbkdMVGV4dHVyZS5oIiAzCmV4
dGVybiB2b2lkIENWT3BlbkdMVGV4dHVyZUdldENsZWFuVGV4Q29vcmRzKCBDVk9wZW5HTFRleHR1
cmVSZWYgaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IGxvd2VyTGVmdFsyXSwKICAgICAgIEdMZmxvYXQgbG93ZXJSaWdodFsyXSwK
ICAgICAgIEdMZmxvYXQgdXBwZXJSaWdodFsyXSwKICAgICAgIEdMZmxvYXQgdXBwZXJMZWZ0WzJd
KSA7CgoKfQojIDM0ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3
b3JrL0hlYWRlcnMvQ29yZVZpZGVvLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVk9wZW5HTFRleHR1cmVDYWNoZS5oIiAx
IDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29yay9I
ZWFkZXJzL0NWT3BlbkdMVGV4dHVyZUNhY2hlLmgiIDMKI2RlZmluZSBfX0NPUkVWSURFT19fQ1ZP
UEVOR0xURVhUVVJFQ0FDSEVfSF9fIDEKIyAxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWT3BlbkdMVGV4dHVyZUNhY2hlLmgiIDMKZXh0
ZXJuICJDIiB7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX0NWT3BlbkdMVGV4dHVyZUNhY2hlICpD
Vk9wZW5HTFRleHR1cmVDYWNoZVJlZjsKIyAzNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWT3BlbkdMVGV4dHVyZUNhY2hlLmgiIDMKZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVk9wZW5HTFRleHR1cmVDYWNoZUNocm9tYVNhbXBsaW5n
TW9kZUtleSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZPcGVuR0xUZXh0dXJlQ2FjaGVD
aHJvbWFTYW1wbGluZ01vZGVBdXRvbWF0aWMgOwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NW
T3BlbkdMVGV4dHVyZUNhY2hlQ2hyb21hU2FtcGxpbmdNb2RlSGlnaGVzdFF1YWxpdHkgOwpleHRl
cm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWT3BlbkdMVGV4dHVyZUNhY2hlQ2hyb21hU2FtcGxpbmdN
b2RlQmVzdFBlcmZvcm1hbmNlIDsKCmV4dGVybiBDRlR5cGVJRCBDVk9wZW5HTFRleHR1cmVDYWNo
ZUdldFR5cGVJRCh2b2lkKSA7CiMgNTAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVW
aWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVk9wZW5HTFRleHR1cmVDYWNoZS5oIiAzCmV4dGVybiBD
Vk9wZW5HTFRleHR1cmVDYWNoZVJlZiBDVk9wZW5HTFRleHR1cmVDYWNoZVJldGFpbiggQ1ZPcGVu
R0xUZXh0dXJlQ2FjaGVSZWYgdGV4dHVyZUNhY2hlICkgOwoKCgoKCgoKZXh0ZXJuIHZvaWQgQ1ZP
cGVuR0xUZXh0dXJlQ2FjaGVSZWxlYXNlKCBDVk9wZW5HTFRleHR1cmVDYWNoZVJlZiB0ZXh0dXJl
Q2FjaGUgKSA7CiMgNzEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFt
ZXdvcmsvSGVhZGVycy9DVk9wZW5HTFRleHR1cmVDYWNoZS5oIiAzCmV4dGVybiBDVlJldHVybiBD
Vk9wZW5HTFRleHR1cmVDYWNoZUNyZWF0ZSgKICAgICBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
CiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGNhY2hlQXR0cmlidXRlcywKICAgICBDR0xDb250ZXh0T2Jq
IGNnbENvbnRleHQsCiAgICAgQ0dMUGl4ZWxGb3JtYXRPYmogY2dsUGl4ZWxGb3JtYXQsCiAgICAg
Q0ZEaWN0aW9uYXJ5UmVmIHRleHR1cmVBdHRyaWJ1dGVzLAogICAgIENWT3BlbkdMVGV4dHVyZUNh
Y2hlUmVmICpjYWNoZU91dCkgOwojIDg5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
VmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZPcGVuR0xUZXh0dXJlQ2FjaGUuaCIgMwpleHRlcm4g
Q1ZSZXR1cm4gQ1ZPcGVuR0xUZXh0dXJlQ2FjaGVDcmVhdGVUZXh0dXJlRnJvbUltYWdlKENGQWxs
b2NhdG9yUmVmIGFsbG9jYXRvciwKICAgICAgICAgICAgICAgQ1ZPcGVuR0xUZXh0dXJlQ2FjaGVS
ZWYgdGV4dHVyZUNhY2hlLAogICAgICAgICAgICAgICBDVkltYWdlQnVmZmVyUmVmIHNvdXJjZUlt
YWdlLAogICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcywKICAgICAgICAg
ICAgICAgQ1ZPcGVuR0xUZXh0dXJlUmVmICp0ZXh0dXJlT3V0KSA7CiMgMTA0ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZPcGVuR0xUZXh0
dXJlQ2FjaGUuaCIgMwpleHRlcm4gdm9pZCBDVk9wZW5HTFRleHR1cmVDYWNoZUZsdXNoKENWT3Bl
bkdMVGV4dHVyZUNhY2hlUmVmIHRleHR1cmVDYWNoZSwgQ1ZPcHRpb25GbGFncyBvcHRpb25zKSA7
CgoKfQojIDM1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3Jr
L0hlYWRlcnMvQ29yZVZpZGVvLmgiIDIgMwoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZVZpZGVvLmZyYW1ld29yay9IZWFkZXJzL0NWUGl4ZWxGb3JtYXREZXNjcmlwdGlvbi5o
IiAxIDMKIyAxMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVvLmZyYW1ld29y
ay9IZWFkZXJzL0NWUGl4ZWxGb3JtYXREZXNjcmlwdGlvbi5oIiAzCiNkZWZpbmUgX19DT1JFVklE
RU9fQ1ZQSVhFTEZPUk1BVERFU0NSSVBUSU9OX0hfXyAKCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29yZVZpZGVvLmgiIDEgMwoj
IDM3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRl
cnMvQ29yZVZpZGVvLmgiIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlk
ZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhlbEZvcm1hdERlc2NyaXB0aW9uLmgiIDEgMwojIDM3
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMv
Q29yZVZpZGVvLmgiIDIgMwojIDE1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlk
ZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ1ZQaXhlbEZvcm1hdERlc2NyaXB0aW9uLmgiIDIgMwoKCgoK
ZXh0ZXJuICJDIiB7CgoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVlBpeGVsRm9ybWF0
TmFtZSA7CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVlBpeGVsRm9ybWF0Q29uc3RhbnQg
OwoKCmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZQaXhlbEZvcm1hdENvZGVjVHlwZSA7CgoK
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVlBpeGVsRm9ybWF0Rm91ckNDIDsKCgoKCmV4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZQaXhlbEZvcm1hdFBsYW5lcyA7CiMgNTUgIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvSGVhZGVycy9DVlBpeGVsRm9y
bWF0RGVzY3JpcHRpb24uaCIgMwpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWUGl4ZWxGb3Jt
YXRCbG9ja1dpZHRoIDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVlBpeGVsRm9ybWF0Qmxv
Y2tIZWlnaHQgOwoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWUGl4ZWxGb3JtYXRCaXRz
UGVyQmxvY2sgOwoKCgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVlBpeGVsRm9ybWF0Qmxv
Y2tIb3Jpem9udGFsQWxpZ25tZW50IDsKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVlBpeGVs
Rm9ybWF0QmxvY2tWZXJ0aWNhbEFsaWdubWVudCA7CgoKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYga0NWUGl4ZWxGb3JtYXRCbGFja0Jsb2NrIDsKCgpleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0NWUGl4ZWxGb3JtYXRIb3Jpem9udGFsU3Vic2FtcGxpbmcgOwpleHRlcm4gY29uc3QgQ0ZTdHJp
bmdSZWYga0NWUGl4ZWxGb3JtYXRWZXJ0aWNhbFN1YnNhbXBsaW5nIDsKCgoKZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDVlBpeGVsRm9ybWF0T3BlbkdMRm9ybWF0IDsKZXh0ZXJuIGNvbnN0IENG
U3RyaW5nUmVmIGtDVlBpeGVsRm9ybWF0T3BlbkdMVHlwZSA7CmV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBrQ1ZQaXhlbEZvcm1hdE9wZW5HTEludGVybmFsRm9ybWF0IDsKCgpleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NWUGl4ZWxGb3JtYXRDR0JpdG1hcEluZm8gOwoKCmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ1ZQaXhlbEZvcm1hdFFEQ29tcGF0aWJpbGl0eSA7CmV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ1ZQaXhlbEZvcm1hdENHQml0bWFwQ29udGV4dENvbXBhdGliaWxpdHkgOwpl
eHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NWUGl4ZWxGb3JtYXRDR0ltYWdlQ29tcGF0aWJpbGl0
eSA7CmV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1ZQaXhlbEZvcm1hdE9wZW5HTENvbXBhdGli
aWxpdHkgOwoKCgp0eXBlZGVmIEJvb2xlYW4gKCpDVkZpbGxFeHRlbmRlZFBpeGVsc0NhbGxCYWNr
KSggQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdm9pZCAqcmVmQ29uKTsKdHlwZWRlZiBz
dHJ1Y3QgewogICAgQ0ZJbmRleCB2ZXJzaW9uOwogICAgQ1ZGaWxsRXh0ZW5kZWRQaXhlbHNDYWxs
QmFjayBmaWxsQ2FsbEJhY2s7CiAgICB2b2lkICpyZWZDb247Cn0gQ1ZGaWxsRXh0ZW5kZWRQaXhl
bHNDYWxsQmFja0RhdGE7CgoKZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVlBpeGVsRm9ybWF0
RmlsbEV4dGVuZGVkUGl4ZWxzQ2FsbGJhY2sgOwoKCmV4dGVybiBDRkRpY3Rpb25hcnlSZWYgQ1ZQ
aXhlbEZvcm1hdERlc2NyaXB0aW9uQ3JlYXRlV2l0aFBpeGVsRm9ybWF0VHlwZShDRkFsbG9jYXRv
clJlZiBhbGxvY2F0b3IsIE9TVHlwZSBwaXhlbEZvcm1hdCkgOwoKCmV4dGVybiBDRkFycmF5UmVm
IENWUGl4ZWxGb3JtYXREZXNjcmlwdGlvbkFycmF5Q3JlYXRlV2l0aEFsbFBpeGVsRm9ybWF0VHlw
ZXMoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yKSA7CgoKZXh0ZXJuIHZvaWQgQ1ZQaXhlbEZvcm1h
dERlc2NyaXB0aW9uUmVnaXN0ZXJEZXNjcmlwdGlvbldpdGhQaXhlbEZvcm1hdFR5cGUoQ0ZEaWN0
aW9uYXJ5UmVmIGRlc2NyaXB0aW9uLCBPU1R5cGUgcGl4ZWxGb3JtYXQpIDsKCgoKfQojIDM3ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL0hlYWRlcnMvQ29y
ZVZpZGVvLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvQ29yZVZpZGVvLmgiIDIgMwojIDggIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvUXVhcnR6Q29yZS5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL0NvcmVBbmltYXRpb24uaCIgMSAzCgoKCgoKCiNkZWZpbmUgQ09SRUFOSU1BVElPTl9IIAoK
CgoKCgojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0FBbmltYXRpb24uaCIgMSAzCiMgOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUFuaW1hdGlvbi5oIiAzCkBjbGFzcyBO
U0FycmF5LCBOU1N0cmluZywgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uLCBDQVZhbHVlRnVuY3Rpb247
CgoKCkBpbnRlcmZhY2UgQ0FBbmltYXRpb24gOiBOU09iamVjdCA8TlNDb2RpbmcsIE5TQ29weWlu
ZywgQ0FNZWRpYVRpbWluZywgQ0FBY3Rpb24+CnsKQHByaXZhdGUKICBzdHJ1Y3QgX0NBQXR0ckxp
c3QgKl9hdHRyOwogIHVpbnQzMl90IF9mbGFnczsKfQoKCgorIChpZClhbmltYXRpb247CgoKCgor
IChpZClkZWZhdWx0VmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5OwotIChCT09MKXNob3VsZEFy
Y2hpdmVWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7CgoKCgpAcHJvcGVydHkocmV0YWluKSBD
QU1lZGlhVGltaW5nRnVuY3Rpb24gKnRpbWluZ0Z1bmN0aW9uOwoKCgoKCkBwcm9wZXJ0eShyZXRh
aW4pIGlkIGRlbGVnYXRlOwoKCgoKQHByb3BlcnR5KGdldHRlcj1pc1JlbW92ZWRPbkNvbXBsZXRp
b24pIEJPT0wgcmVtb3ZlZE9uQ29tcGxldGlvbjsKCkBlbmQKCgoKQGludGVyZmFjZSBOU09iamVj
dCAoQ0FBbmltYXRpb25EZWxlZ2F0ZSkKCgoKLSAodm9pZClhbmltYXRpb25EaWRTdGFydDooQ0FB
bmltYXRpb24gKilhbmltOwoKCgoKCgotICh2b2lkKWFuaW1hdGlvbkRpZFN0b3A6KENBQW5pbWF0
aW9uICopYW5pbSBmaW5pc2hlZDooQk9PTClmbGFnOwoKQGVuZAoKCgoKQGludGVyZmFjZSBDQVBy
b3BlcnR5QW5pbWF0aW9uIDogQ0FBbmltYXRpb24KCgoKCisgKGlkKWFuaW1hdGlvbldpdGhLZXlQ
YXRoOihOU1N0cmluZyAqKXBhdGg7CgoKCkBwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqa2V5UGF0
aDsKCgoKCgoKCkBwcm9wZXJ0eShnZXR0ZXI9aXNBZGRpdGl2ZSkgQk9PTCBhZGRpdGl2ZTsKCgoK
CgoKCkBwcm9wZXJ0eShnZXR0ZXI9aXNDdW11bGF0aXZlKSBCT09MIGN1bXVsYXRpdmU7CgoKCgoK
QHByb3BlcnR5KHJldGFpbikgQ0FWYWx1ZUZ1bmN0aW9uICp2YWx1ZUZ1bmN0aW9uOwoKQGVuZAoK
CgoKQGludGVyZmFjZSBDQUJhc2ljQW5pbWF0aW9uIDogQ0FQcm9wZXJ0eUFuaW1hdGlvbgojIDEz
MiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9DQUFuaW1hdGlvbi5oIiAzCkBwcm9wZXJ0eShyZXRhaW4pIGlkIGZyb21WYWx1ZSwgdG9WYWx1
ZSwgYnlWYWx1ZTsKCkBlbmQKCgoKCkBpbnRlcmZhY2UgQ0FLZXlmcmFtZUFuaW1hdGlvbiA6IENB
UHJvcGVydHlBbmltYXRpb24KCgoKCkBwcm9wZXJ0eShjb3B5KSBOU0FycmF5ICp2YWx1ZXM7CiMg
MTUzICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL0NBQW5pbWF0aW9uLmgiIDMKQHByb3BlcnR5IENHUGF0aFJlZiBwYXRoOwoKCgoKCgoKQHBy
b3BlcnR5KGNvcHkpIE5TQXJyYXkgKmtleVRpbWVzOwoKCgoKCgpAcHJvcGVydHkoY29weSkgTlNB
cnJheSAqdGltaW5nRnVuY3Rpb25zOwoKCgoKCkBwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqY2Fs
Y3VsYXRpb25Nb2RlOwoKCgoKCgoKQHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICpyb3RhdGlvbk1v
ZGU7CgpAZW5kCgoKCmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUFuaW1hdGlvbkxpbmVhcgog
ICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmlu
ZyAqIGNvbnN0IGtDQUFuaW1hdGlvbkRpc2NyZXRlCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBQW5pbWF0aW9uUGFj
ZWQKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgpleHRlcm4g
TlNTdHJpbmcgKiBjb25zdCBrQ0FBbmltYXRpb25Sb3RhdGVBdXRvCiAgICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBQW5p
bWF0aW9uUm90YXRlQXV0b1JldmVyc2UKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpOwoKCgpAaW50ZXJmYWNlIENBVHJhbnNpdGlvbiA6IENBQW5pbWF0aW9uCgoKCgpA
cHJvcGVydHkoY29weSkgTlNTdHJpbmcgKnR5cGU7CgoKCgoKCkBwcm9wZXJ0eShjb3B5KSBOU1N0
cmluZyAqc3VidHlwZTsKCgoKCgoKQHByb3BlcnR5IGZsb2F0IHN0YXJ0UHJvZ3Jlc3MsIGVuZFBy
b2dyZXNzOwojIDIzMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFt
ZXdvcmsvSGVhZGVycy9DQUFuaW1hdGlvbi5oIiAzCkBwcm9wZXJ0eShyZXRhaW4pIGlkIGZpbHRl
cjsKCkBlbmQKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBVHJhbnNpdGlvbkZhZGUKICAg
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gTlNTdHJpbmcg
KiBjb25zdCBrQ0FUcmFuc2l0aW9uTW92ZUluCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBVHJhbnNpdGlvblB1c2gK
ICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gTlNTdHJp
bmcgKiBjb25zdCBrQ0FUcmFuc2l0aW9uUmV2ZWFsCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBVHJhbnNpdGlv
bkZyb21SaWdodAogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4
dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQVRyYW5zaXRpb25Gcm9tTGVmdAogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtD
QVRyYW5zaXRpb25Gcm9tVG9wCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBVHJhbnNpdGlvbkZyb21Cb3R0b20KICAg
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKQGludGVyZmFjZSBD
QUFuaW1hdGlvbkdyb3VwIDogQ0FBbmltYXRpb24KCgoKCgpAcHJvcGVydHkoY29weSkgTlNBcnJh
eSAqYW5pbWF0aW9uczsKCkBlbmQKIyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVh
cnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQW5pbWF0aW9uLmgiIDIgMwojIDEgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FDSUZp
bHRlckFkZGl0aW9ucy5oIiAxIDMKIyA5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFy
dHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBQ0lGaWx0ZXJBZGRpdGlvbnMuaCIgMwpAY2xhc3Mg
TlNTdHJpbmc7CgoKCgoKQGludGVyZmFjZSBDSUZpbHRlciAoQ0FDSUZpbHRlckFkZGl0aW9ucykK
CgoKCgoKQHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICpuYW1lOwoKCgoKQHByb3BlcnR5KGdldHRl
cj1pc0VuYWJsZWQpIEJPT0wgZW5hYmxlZDsKCkBlbmQKIyAxNiAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQW5pbWF0aW9uLmgiIDIg
MwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvQ0FDb25zdHJhaW50TGF5b3V0TWFuYWdlci5oIiAxIDMKIyAyNyAiL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUNvbnN0cmFpbnRM
YXlvdXRNYW5hZ2VyLmgiIDMKZW51bSBfQ0FDb25zdHJhaW50QXR0cmlidXRlCnsKICBrQ0FDb25z
dHJhaW50TWluWCwKICBrQ0FDb25zdHJhaW50TWlkWCwKICBrQ0FDb25zdHJhaW50TWF4WCwKICBr
Q0FDb25zdHJhaW50V2lkdGgsCiAga0NBQ29uc3RyYWludE1pblksCiAga0NBQ29uc3RyYWludE1p
ZFksCiAga0NBQ29uc3RyYWludE1heFksCiAga0NBQ29uc3RyYWludEhlaWdodCwKfTsKCnR5cGVk
ZWYgaW50IENBQ29uc3RyYWludEF0dHJpYnV0ZTsKCkBjbGFzcyBDQUNvbnN0cmFpbnQ7CgoKCkBp
bnRlcmZhY2UgQ0FMYXllciAoQ0FDb25zdHJhaW50TGF5b3V0TWFuYWdlcikKCgoKQHByb3BlcnR5
KGNvcHkpIE5TQXJyYXkgKmNvbnN0cmFpbnRzOwoKCgotICh2b2lkKWFkZENvbnN0cmFpbnQ6KENB
Q29uc3RyYWludCAqKWM7CgpAZW5kCgoKCkBpbnRlcmZhY2UgQ0FDb25zdHJhaW50TGF5b3V0TWFu
YWdlciA6IE5TT2JqZWN0CgoKCisgKGlkKWxheW91dE1hbmFnZXI7CgpAZW5kCgoKCkBpbnRlcmZh
Y2UgQ0FDb25zdHJhaW50IDogTlNPYmplY3QgPE5TQ29kaW5nPgp7CkBwcml2YXRlCiAgTlNTdHJp
bmcgKl9zcmNJZDsKICBDQUNvbnN0cmFpbnRBdHRyaWJ1dGUgX3NyY0F0dHIgOjE2OwogIENBQ29u
c3RyYWludEF0dHJpYnV0ZSBfYXR0ciA6MTY7CiAgQ0dGbG9hdCBfc2NhbGUsIF9vZmZzZXQ7Cn07
CiMgODUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hl
YWRlcnMvQ0FDb25zdHJhaW50TGF5b3V0TWFuYWdlci5oIiAzCisgKGlkKWNvbnN0cmFpbnRXaXRo
QXR0cmlidXRlOihDQUNvbnN0cmFpbnRBdHRyaWJ1dGUpYXR0cgogICAgcmVsYXRpdmVUbzooTlNT
dHJpbmcgKilzcmNJZCBhdHRyaWJ1dGU6KENBQ29uc3RyYWludEF0dHJpYnV0ZSlzcmNBdHRyCiAg
ICBzY2FsZTooQ0dGbG9hdCltIG9mZnNldDooQ0dGbG9hdCljOworIChpZCljb25zdHJhaW50V2l0
aEF0dHJpYnV0ZTooQ0FDb25zdHJhaW50QXR0cmlidXRlKWF0dHIKICAgIHJlbGF0aXZlVG86KE5T
U3RyaW5nICopc3JjSWQgYXR0cmlidXRlOihDQUNvbnN0cmFpbnRBdHRyaWJ1dGUpc3JjQXR0cgog
ICAgb2Zmc2V0OihDR0Zsb2F0KWM7CisgKGlkKWNvbnN0cmFpbnRXaXRoQXR0cmlidXRlOihDQUNv
bnN0cmFpbnRBdHRyaWJ1dGUpYXR0cgogICAgcmVsYXRpdmVUbzooTlNTdHJpbmcgKilzcmNJZCBh
dHRyaWJ1dGU6KENBQ29uc3RyYWludEF0dHJpYnV0ZSlzcmNBdHRyOwoKCgotIChpZClpbml0V2l0
aEF0dHJpYnV0ZTooQ0FDb25zdHJhaW50QXR0cmlidXRlKWF0dHIKICAgIHJlbGF0aXZlVG86KE5T
U3RyaW5nICopc3JjSWQgYXR0cmlidXRlOihDQUNvbnN0cmFpbnRBdHRyaWJ1dGUpc3JjQXR0cgog
ICAgc2NhbGU6KENHRmxvYXQpbSBvZmZzZXQ6KENHRmxvYXQpYzsKCgoKQHByb3BlcnR5KHJlYWRv
bmx5KSBDQUNvbnN0cmFpbnRBdHRyaWJ1dGUgYXR0cmlidXRlOwpAcHJvcGVydHkocmVhZG9ubHkp
IE5TU3RyaW5nICpzb3VyY2VOYW1lOwpAcHJvcGVydHkocmVhZG9ubHkpIENBQ29uc3RyYWludEF0
dHJpYnV0ZSBzb3VyY2VBdHRyaWJ1dGU7CkBwcm9wZXJ0eShyZWFkb25seSkgQ0dGbG9hdCBzY2Fs
ZSwgb2Zmc2V0OwoKQGVuZAojIDE3ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpD
b3JlLmZyYW1ld29yay9IZWFkZXJzL0NvcmVBbmltYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUVtaXR0ZXJD
ZWxsLmgiIDEgMwoKCgoKCgoKQGludGVyZmFjZSBDQUVtaXR0ZXJDZWxsIDogTlNPYmplY3QgPE5T
Q29kaW5nLCBDQU1lZGlhVGltaW5nPgp7CkBwcml2YXRlCiAgc3RydWN0IF9DQUF0dHJMaXN0ICpf
YXR0clsyXTsKICB2b2lkICpfc3RhdGU7CiAgdWludDMyX3QgX2ZsYWdzOwp9CgorIChpZCllbWl0
dGVyQ2VsbDsKCgoKCisgKGlkKWRlZmF1bHRWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0g
KEJPT0wpc2hvdWxkQXJjaGl2ZVZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleTsKCgoKQHByb3Bl
cnR5KGNvcHkpIE5TU3RyaW5nICpuYW1lOwoKCgpAcHJvcGVydHkoZ2V0dGVyPWlzRW5hYmxlZCkg
Qk9PTCBlbmFibGVkOwoKCgoKQHByb3BlcnR5IGZsb2F0IGJpcnRoUmF0ZTsKCgoKCgpAcHJvcGVy
dHkgZmxvYXQgbGlmZXRpbWUsIGxpZmV0aW1lUmFuZ2U7CiMgNTIgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FFbWl0dGVyQ2VsbC5oIiAz
CkBwcm9wZXJ0eSBDR0Zsb2F0IGVtaXNzaW9uTGF0aXR1ZGUsIGVtaXNzaW9uTG9uZ2l0dWRlOwoK
CgoKCkBwcm9wZXJ0eSBDR0Zsb2F0IGVtaXNzaW9uUmFuZ2U7CgoKCgpAcHJvcGVydHkgQ0dGbG9h
dCB2ZWxvY2l0eSwgdmVsb2NpdHlSYW5nZTsKCgoKCkBwcm9wZXJ0eSBDR0Zsb2F0IHhBY2NlbGVy
YXRpb24sIHlBY2NlbGVyYXRpb24sIHpBY2NlbGVyYXRpb247CgoKCgoKQHByb3BlcnR5IENHRmxv
YXQgc2NhbGUsIHNjYWxlUmFuZ2UsIHNjYWxlU3BlZWQ7CgoKCgpAcHJvcGVydHkgQ0dGbG9hdCBz
cGluLCBzcGluUmFuZ2U7CgoKCgoKQHByb3BlcnR5IENHQ29sb3JSZWYgY29sb3I7CgpAcHJvcGVy
dHkgZmxvYXQgcmVkUmFuZ2UsIGdyZWVuUmFuZ2UsIGJsdWVSYW5nZSwgYWxwaGFSYW5nZTsKCgoK
CgpAcHJvcGVydHkgZmxvYXQgcmVkU3BlZWQsIGdyZWVuU3BlZWQsIGJsdWVTcGVlZCwgYWxwaGFT
cGVlZDsKCgoKCkBwcm9wZXJ0eShyZXRhaW4pIGlkIGNvbnRlbnRzOwoKCgoKCkBwcm9wZXJ0eSBD
R1JlY3QgY29udGVudHNSZWN0OwoKCgoKQHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICptaW5pZmlj
YXRpb25GaWx0ZXIsICptYWduaWZpY2F0aW9uRmlsdGVyOwpAcHJvcGVydHkgZmxvYXQgbWluaWZp
Y2F0aW9uRmlsdGVyQmlhczsKCgoKCgoKCkBwcm9wZXJ0eShjb3B5KSBOU0FycmF5ICplbWl0dGVy
Q2VsbHM7CgoKCkBwcm9wZXJ0eShjb3B5KSBOU0RpY3Rpb25hcnkgKnN0eWxlOwoKQGVuZAojIDE4
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJz
L0NvcmVBbmltYXRpb24uaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVh
cnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUVtaXR0ZXJMYXllci5oIiAxIDMKIyAxNiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUVt
aXR0ZXJMYXllci5oIiAzCkBpbnRlcmZhY2UgQ0FFbWl0dGVyTGF5ZXIgOiBDQUxheWVyCgoKCgpA
cHJvcGVydHkoY29weSkgTlNBcnJheSAqZW1pdHRlckNlbGxzOwoKCgoKCkBwcm9wZXJ0eSBmbG9h
dCBiaXJ0aFJhdGU7CgoKCgpAcHJvcGVydHkgZmxvYXQgbGlmZXRpbWU7CgoKCkBwcm9wZXJ0eSBD
R1BvaW50IGVtaXR0ZXJQb3NpdGlvbjsKQHByb3BlcnR5IENHRmxvYXQgZW1pdHRlclpQb3NpdGlv
bjsKCgoKCgpAcHJvcGVydHkgQ0dTaXplIGVtaXR0ZXJTaXplOwpAcHJvcGVydHkgQ0dGbG9hdCBl
bWl0dGVyRGVwdGg7CgoKCgoKQHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICplbWl0dGVyU2hhcGU7
CgoKCgoKQHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICplbWl0dGVyTW9kZTsKCgoKCgoKCkBwcm9w
ZXJ0eShjb3B5KSBOU1N0cmluZyAqcmVuZGVyTW9kZTsKCgoKCgoKCkBwcm9wZXJ0eSBCT09MIHBy
ZXNlcnZlc0RlcHRoOwoKCgoKQHByb3BlcnR5IGZsb2F0IHZlbG9jaXR5OwoKCgpAcHJvcGVydHkg
ZmxvYXQgc2NhbGU7CgoKCkBwcm9wZXJ0eSBmbG9hdCBzcGluOwoKCgoKCgpAcHJvcGVydHkgdW5z
aWduZWQgaW50IHNlZWQ7CgpAZW5kCgoKCmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUVtaXR0
ZXJMYXllclBvaW50CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRW1pdHRlckxheWVyTGluZQogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtD
QUVtaXR0ZXJMYXllclJlY3RhbmdsZQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUVtaXR0ZXJMYXllckN1Ym9pZAog
ICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmlu
ZyAqIGNvbnN0IGtDQUVtaXR0ZXJMYXllckNpcmNsZQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUVtaXR0ZXJMYXll
clNwaGVyZQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCmV4
dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUVtaXR0ZXJMYXllclBvaW50cwogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtD
QUVtaXR0ZXJMYXllck91dGxpbmUKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FFbWl0dGVyTGF5ZXJTdXJmYWNlCiAg
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5n
ICogY29uc3Qga0NBRW1pdHRlckxheWVyVm9sdW1lCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRW1pdHRlckxh
eWVyVW5vcmRlcmVkCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsK
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRW1pdHRlckxheWVyT2xkZXN0Rmlyc3QKICAgIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBrQ0FFbWl0dGVyTGF5ZXJPbGRlc3RMYXN0CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRW1pdHRlckxheWVy
QmFja1RvRnJvbnQKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpl
eHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FFbWl0dGVyTGF5ZXJBZGRpdGl2ZQogICAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMTkgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUFuaW1hdGlvbi5oIiAy
IDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9I
ZWFkZXJzL0NBR3JhZGllbnRMYXllci5oIiAxIDMKIyAxMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUdyYWRpZW50TGF5ZXIuaCIgMwpA
aW50ZXJmYWNlIENBR3JhZGllbnRMYXllciA6IENBTGF5ZXIKCgoKCkBwcm9wZXJ0eShjb3B5KSBO
U0FycmF5ICpjb2xvcnM7CiMgMjUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FHcmFkaWVudExheWVyLmgiIDMKQHByb3BlcnR5KGNvcHkp
IE5TQXJyYXkgKmxvY2F0aW9uczsKIyAzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVh
cnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQUdyYWRpZW50TGF5ZXIuaCIgMwpAcHJvcGVydHkg
Q0dQb2ludCBzdGFydFBvaW50LCBlbmRQb2ludDsKCgoKCkBwcm9wZXJ0eShjb3B5KSBOU1N0cmlu
ZyAqdHlwZTsKCkBlbmQKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBR3JhZGllbnRMYXll
ckF4aWFsCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyMCAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9D
b3JlQW5pbWF0aW9uLmgiIDIgMwoKCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVh
cnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQU1lZGlhVGltaW5nRnVuY3Rpb24uaCIgMSAzCiMg
OSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVy
cy9DQU1lZGlhVGltaW5nRnVuY3Rpb24uaCIgMwpAY2xhc3MgTlNBcnJheSwgTlNTdHJpbmc7CgoK
CgoKCgpAaW50ZXJmYWNlIENBTWVkaWFUaW1pbmdGdW5jdGlvbiA6IE5TT2JqZWN0IDxOU0NvZGlu
Zz4KewpAcHJpdmF0ZQogIHN0cnVjdCBDQU1lZGlhVGltaW5nRnVuY3Rpb25Qcml2YXRlICpfcHJp
djsKfQoKCgoKCgorIChpZClmdW5jdGlvbldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWU7CgoKCgoK
CisgKGlkKWZ1bmN0aW9uV2l0aENvbnRyb2xQb2ludHM6KGZsb2F0KWMxeCA6KGZsb2F0KWMxeSA6
KGZsb2F0KWMyeCA6KGZsb2F0KWMyeTsKCi0gKGlkKWluaXRXaXRoQ29udHJvbFBvaW50czooZmxv
YXQpYzF4IDooZmxvYXQpYzF5IDooZmxvYXQpYzJ4IDooZmxvYXQpYzJ5OwoKCgotICh2b2lkKWdl
dENvbnRyb2xQb2ludEF0SW5kZXg6KHNpemVfdClpZHggdmFsdWVzOihmbG9hdFsyXSlwdHI7CgpA
ZW5kCgoKCmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQU1lZGlhVGltaW5nRnVuY3Rpb25MaW5l
YXIKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gTlNT
dHJpbmcgKiBjb25zdCBrQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uRWFzZUluCiAgICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NB
TWVkaWFUaW1pbmdGdW5jdGlvbkVhc2VPdXQKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpOwpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FNZWRpYVRpbWluZ0Z1bmN0
aW9uRWFzZUluRWFzZU91dAogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQU1lZGlhVGltaW5nRnVuY3Rpb25EZWZhdWx0
CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyMyAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQW5p
bWF0aW9uLmgiIDIgMwoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3Jl
LmZyYW1ld29yay9IZWFkZXJzL0NBUmVuZGVyZXIuaCIgMSAzCiMgMzYgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FSZW5kZXJlci5oIiAz
CkBjbGFzcyBOU0RpY3Rpb25hcnksIENBTGF5ZXIsIENJQ29udGV4dDsKCkBpbnRlcmZhY2UgQ0FS
ZW5kZXJlciA6IE5TT2JqZWN0CnsKQHByaXZhdGUKICBzdHJ1Y3QgQ0FSZW5kZXJlclByaXYgKl9w
cml2Owp9CgoKCgorIChDQVJlbmRlcmVyICopcmVuZGVyZXJXaXRoQ0dMQ29udGV4dDoodm9pZCAq
KWN0eAogICAgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopZGljdDsKCgoKQHByb3BlcnR5KHJldGFp
bikgQ0FMYXllciAqbGF5ZXI7CgoKCkBwcm9wZXJ0eSBDR1JlY3QgYm91bmRzOwoKCgoKLSAodm9p
ZCliZWdpbkZyYW1lQXRUaW1lOihDRlRpbWVJbnRlcnZhbCl0IHRpbWVTdGFtcDooQ1ZUaW1lU3Rh
bXAgKil0czsKCgoKCgoKLSAoQ0dSZWN0KXVwZGF0ZUJvdW5kczsKCgoKLSAodm9pZClhZGRVcGRh
dGVSZWN0OihDR1JlY3QpcjsKCgoKLSAodm9pZClyZW5kZXI7CgoKCgoKCi0gKENGVGltZUludGVy
dmFsKW5leHRGcmFtZVRpbWU7CgoKCi0gKHZvaWQpZW5kRnJhbWU7CgpAZW5kCiMgMjUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUFu
aW1hdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3Jl
LmZyYW1ld29yay9IZWFkZXJzL0NBUmVwbGljYXRvckxheWVyLmgiIDEgMwojIDE2ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBUmVwbGlj
YXRvckxheWVyLmgiIDMKQGludGVyZmFjZSBDQVJlcGxpY2F0b3JMYXllciA6IENBTGF5ZXIKCgoK
CkBwcm9wZXJ0eSBOU0ludGVnZXIgaW5zdGFuY2VDb3VudDsKCgoKCgoKQHByb3BlcnR5IEJPT0wg
cHJlc2VydmVzRGVwdGg7CgoKCgpAcHJvcGVydHkgQ0ZUaW1lSW50ZXJ2YWwgaW5zdGFuY2VEZWxh
eTsKCgoKCgoKQHByb3BlcnR5IENBVHJhbnNmb3JtM0QgaW5zdGFuY2VUcmFuc2Zvcm07CgoKCgpA
cHJvcGVydHkgQ0dDb2xvclJlZiBpbnN0YW5jZUNvbG9yOwoKCgoKCkBwcm9wZXJ0eSBmbG9hdCBp
bnN0YW5jZVJlZE9mZnNldCwgaW5zdGFuY2VHcmVlbk9mZnNldDsKQHByb3BlcnR5IGZsb2F0IGlu
c3RhbmNlQmx1ZU9mZnNldCwgaW5zdGFuY2VBbHBoYU9mZnNldDsKCkBlbmQKIyAyNiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQW5p
bWF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUu
ZnJhbWV3b3JrL0hlYWRlcnMvQ0FTY3JvbGxMYXllci5oIiAxIDMKCgoKCgoKCkBpbnRlcmZhY2Ug
Q0FTY3JvbGxMYXllciA6IENBTGF5ZXIKCgoKLSAodm9pZClzY3JvbGxUb1BvaW50OihDR1BvaW50
KXA7CgoKCi0gKHZvaWQpc2Nyb2xsVG9SZWN0OihDR1JlY3QpcjsKCgoKCkBwcm9wZXJ0eShjb3B5
KSBOU1N0cmluZyAqc2Nyb2xsTW9kZTsKCkBlbmQKCkBpbnRlcmZhY2UgQ0FMYXllciAoQ0FMYXll
clNjcm9sbGluZykKCgoKCgoKLSAodm9pZClzY3JvbGxQb2ludDooQ0dQb2ludClwOwoKLSAodm9p
ZClzY3JvbGxSZWN0VG9WaXNpYmxlOihDR1JlY3QpcjsKCgoKCgpAcHJvcGVydHkocmVhZG9ubHkp
IENHUmVjdCB2aXNpYmxlUmVjdDsKCkBlbmQKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NB
U2Nyb2xsTm9uZQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4
dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQVNjcm9sbFZlcnRpY2FsbHkKICAgIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FT
Y3JvbGxIb3Jpem9udGFsbHkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpOwpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FTY3JvbGxCb3RoCiAgICBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQW5pbWF0aW9uLmgiIDIgMwoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQ0FTaGFwZUxheWVyLmgiIDEgMwojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9R
dWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBU2hhcGVMYXllci5oIiAzCkBpbnRlcmZhY2Ug
Q0FTaGFwZUxheWVyIDogQ0FMYXllcgoKCgoKCgpAcHJvcGVydHkgQ0dQYXRoUmVmIHBhdGg7CgoK
CgpAcHJvcGVydHkgQ0dDb2xvclJlZiBmaWxsQ29sb3I7CgoKCgpAcHJvcGVydHkoY29weSkgTlNT
dHJpbmcgKmZpbGxSdWxlOwoKCgoKQHByb3BlcnR5IENHQ29sb3JSZWYgc3Ryb2tlQ29sb3I7CgoK
CgpAcHJvcGVydHkgQ0dGbG9hdCBsaW5lV2lkdGg7CgoKCgpAcHJvcGVydHkgQ0dGbG9hdCBtaXRl
ckxpbWl0OwoKCgoKQHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICpsaW5lQ2FwOwoKCgoKQHByb3Bl
cnR5KGNvcHkpIE5TU3RyaW5nICpsaW5lSm9pbjsKCgoKCkBwcm9wZXJ0eSBDR0Zsb2F0IGxpbmVE
YXNoUGhhc2U7CgoKCgpAcHJvcGVydHkoY29weSkgTlNBcnJheSAqbGluZURhc2hQYXR0ZXJuOwoK
QGVuZAoKCgpleHRlcm4gTlNTdHJpbmcgKmNvbnN0IGtDQUZpbGxSdWxlTm9uWmVybwogICAgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqY29u
c3Qga0NBRmlsbFJ1bGVFdmVuT2RkCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKCgoKZXh0ZXJuIE5TU3RyaW5nICpjb25zdCBrQ0FMaW5lSm9pbk1pdGVyCiAgICBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICpj
b25zdCBrQ0FMaW5lSm9pblJvdW5kCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICpjb25zdCBrQ0FMaW5lSm9pbkJldmVsCiAgICBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJuIE5TU3RyaW5nICpj
b25zdCBrQ0FMaW5lQ2FwQnV0dAogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSk7CmV4dGVybiBOU1N0cmluZyAqY29uc3Qga0NBTGluZUNhcFJvdW5kCiAgICBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICpjb25zdCBr
Q0FMaW5lQ2FwU3F1YXJlCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KTsKIyAyOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsv
SGVhZGVycy9Db3JlQW5pbWF0aW9uLmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FUZXh0TGF5ZXIuaCIgMSAzCiMgMTIg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMv
Q0FUZXh0TGF5ZXIuaCIgMwpAaW50ZXJmYWNlIENBVGV4dExheWVyIDogQ0FMYXllcgp7CkBwcml2
YXRlCiAgc3RydWN0IENBVGV4dExheWVyUHJpdmF0ZSAqX3N0YXRlOwp9CgoKCgpAcHJvcGVydHko
Y29weSkgaWQgc3RyaW5nOwoKCgoKCgpAcHJvcGVydHkgQ0ZUeXBlUmVmIGZvbnQ7CgoKCgpAcHJv
cGVydHkgQ0dGbG9hdCBmb250U2l6ZTsKCgoKCgpAcHJvcGVydHkgQ0dDb2xvclJlZiBmb3JlZ3Jv
dW5kQ29sb3I7CgoKCgpAcHJvcGVydHkoZ2V0dGVyPWlzV3JhcHBlZCkgQk9PTCB3cmFwcGVkOwoK
CgoKCkBwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqdHJ1bmNhdGlvbk1vZGU7CgoKCgoKQHByb3Bl
cnR5KGNvcHkpIE5TU3RyaW5nICphbGlnbm1lbnRNb2RlOwoKQGVuZAoKCgpleHRlcm4gTlNTdHJp
bmcgKiBjb25zdCBrQ0FUcnVuY2F0aW9uTm9uZQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQVRydW5jYXRpb25TdGFy
dAogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0
cmluZyAqIGNvbnN0IGtDQVRydW5jYXRpb25FbmQKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpOwpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FUcnVuY2F0aW9uTWlk
ZGxlCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKZXh0ZXJu
IE5TU3RyaW5nICogY29uc3Qga0NBQWxpZ25tZW50TmF0dXJhbAogICAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUFsaWdu
bWVudExlZnQKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRl
cm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FBbGlnbm1lbnRSaWdodAogICAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUFsaWdu
bWVudENlbnRlcgogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4
dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUFsaWdubWVudEp1c3RpZmllZAogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUFuaW1hdGlvbi5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL0NBVGlsZWRMYXllci5oIiAxIDMKIyAyNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9DQVRpbGVkTGF5ZXIuaCIgMwpAaW50ZXJmYWNl
IENBVGlsZWRMYXllciA6IENBTGF5ZXIKCgoKCgorIChDRlRpbWVJbnRlcnZhbClmYWRlRHVyYXRp
b247CgoKCgoKCgpAcHJvcGVydHkgc2l6ZV90IGxldmVsc09mRGV0YWlsOwoKCgoKCgpAcHJvcGVy
dHkgc2l6ZV90IGxldmVsc09mRGV0YWlsQmlhczsKCgoKCkBwcm9wZXJ0eSBDR1NpemUgdGlsZVNp
emU7CgpAZW5kCiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJh
bWV3b3JrL0hlYWRlcnMvQ29yZUFuaW1hdGlvbi5oIiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBVHJhbnNhY3Rpb24uaCIg
MSAzCiMgMjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0FUcmFuc2FjdGlvbi5oIiAzCkBjbGFzcyBDQU1lZGlhVGltaW5nRnVuY3Rpb247
CgpAaW50ZXJmYWNlIENBVHJhbnNhY3Rpb24gOiBOU09iamVjdAoKCgorICh2b2lkKWJlZ2luOwoK
CgoKKyAodm9pZCljb21taXQ7CgoKCgorICh2b2lkKWZsdXNoOwoKCgoKCgorICh2b2lkKWxvY2s7
CisgKHZvaWQpdW5sb2NrOwoKCgoKCisgKENGVGltZUludGVydmFsKWFuaW1hdGlvbkR1cmF0aW9u
OworICh2b2lkKXNldEFuaW1hdGlvbkR1cmF0aW9uOihDRlRpbWVJbnRlcnZhbClkdXI7CgoKCgoK
CisgKENBTWVkaWFUaW1pbmdGdW5jdGlvbiAqKWFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOworICh2
b2lkKXNldEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOihDQU1lZGlhVGltaW5nRnVuY3Rpb24gKilm
dW5jdGlvbjsKCgoKCgoKKyAoQk9PTClkaXNhYmxlQWN0aW9uczsKKyAodm9pZClzZXREaXNhYmxl
QWN0aW9uczooQk9PTClmbGFnOwojIDg1ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFy
dHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBVHJhbnNhY3Rpb24uaCIgMworICh2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uQmxvY2s7CisgKHZvaWQpc2V0Q29tcGxldGlvbkJsb2NrOih2b2lkIChe
KSh2b2lkKSlibG9jazsKIyAxMDQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNv
cmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FUcmFuc2FjdGlvbi5oIiAzCisgKGlkKXZhbHVlRm9yS2V5
OihOU1N0cmluZyAqKWtleTsKKyAodm9pZClzZXRWYWx1ZTooaWQpYW5PYmplY3QgZm9yS2V5OihO
U1N0cmluZyAqKWtleTsKCkBlbmQKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBVHJhbnNh
Y3Rpb25BbmltYXRpb25EdXJhdGlvbgogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQVRyYW5zYWN0aW9uRGlzYWJsZUFj
dGlvbnMKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4g
TlNTdHJpbmcgKiBjb25zdCBrQ0FUcmFuc2FjdGlvbkFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uCiAg
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5n
ICogY29uc3Qga0NBVHJhbnNhY3Rpb25Db21wbGV0aW9uQmxvY2sKICAgIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwojIDMxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NvcmVBbmltYXRpb24uaCIgMiAzCiMgMSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9D
QVRyYW5zZm9ybUxheWVyLmgiIDEgMwojIDMwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9R
dWFydHpDb3JlLmZyYW1ld29yay9IZWFkZXJzL0NBVHJhbnNmb3JtTGF5ZXIuaCIgMwpAaW50ZXJm
YWNlIENBVHJhbnNmb3JtTGF5ZXIgOiBDQUxheWVyCkBlbmQKIyAzMiAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvSGVhZGVycy9Db3JlQW5pbWF0aW9uLmgi
IDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3Jr
L0hlYWRlcnMvQ0FWYWx1ZUZ1bmN0aW9uLmgiIDEgMwojIDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ0FWYWx1ZUZ1bmN0aW9uLmgiIDMK
QGludGVyZmFjZSBDQVZhbHVlRnVuY3Rpb24gOiBOU09iamVjdCA8TlNDb2Rpbmc+CnsKQHByb3Rl
Y3RlZAogIE5TU3RyaW5nICpfc3RyaW5nOwogIHZvaWQgKl9pbXBsOwp9CgorIChpZClmdW5jdGlv
bldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWU7CgpAcHJvcGVydHkocmVhZG9ubHkpIE5TU3RyaW5n
ICpuYW1lOwoKQGVuZAoKCgoKCgoKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBVmFsdWVGdW5j
dGlvblJvdGF0ZVgKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpl
eHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWQogICAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0
IGtDQVZhbHVlRnVuY3Rpb25Sb3RhdGVaCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKCgoKCmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQVZhbHVlRnVuY3Rpb25T
Y2FsZQogICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CgoKCgoKZXh0
ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBVmFsdWVGdW5jdGlvblNjYWxlWAogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtD
QVZhbHVlRnVuY3Rpb25TY2FsZVkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpOwpleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVaCiAg
ICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKCgoKCmV4dGVybiBOU1N0
cmluZyAqIGNvbnN0IGtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGUKICAgIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwoKCgoKCmV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtD
QVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVYCiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKTsKZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBVmFsdWVGdW5jdGlvblRyYW5z
bGF0ZVkKICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwpleHRlcm4g
TlNTdHJpbmcgKiBjb25zdCBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWgogICAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiMgMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRlcnMvQ29yZUFuaW1hdGlvbi5oIiAyIDMK
IyA4ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9IZWFk
ZXJzL1F1YXJ0ekNvcmUuaCIgMiAzCiMgMTkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FU
S2l0LmZyYW1ld29yay9IZWFkZXJzL1FUTW92aWVMYXllci5oIiAyIDMKCkBjbGFzcyBRVE1vdmll
OwpAY2xhc3MgUVRNb3ZpZUxheWVyUHJpdmF0ZTsKQGNsYXNzIFFUSW5mb0xheWVyOwoKQGludGVy
ZmFjZSBRVE1vdmllTGF5ZXIgOiBDQUxheWVyCnsKIEBwcml2YXRlCiBRVE1vdmllTGF5ZXJQcml2
YXRlICogX21vdmllTGF5ZXJQcml2Owp9CgorIChpZClsYXllcldpdGhNb3ZpZTooUVRNb3ZpZSAq
KW1vdmllOwotIChpZClpbml0V2l0aE1vdmllOihRVE1vdmllICopbW92aWU7CgotICh2b2lkKXNl
dE1vdmllOihRVE1vdmllICopbW92aWU7Ci0gKFFUTW92aWUgKiltb3ZpZTsKCkBlbmQKIyAxOSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRLaXQu
aCIgMiAzCgoKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsv
SGVhZGVycy9RVFV0aWxpdGllcy5oIiAxIDMKIyAxMiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRVdGlsaXRpZXMuaCIgMwpleHRlcm4gIkMiIE5T
U3RyaW5nICpRVFN0cmluZ0Zvck9TVHlwZSAoT1NUeXBlIHR5cGUpIDsKZXh0ZXJuICJDIiBPU1R5
cGUgUVRPU1R5cGVGb3JTdHJpbmcgKE5TU3RyaW5nICpzdHJpbmcpIDsKIyAyMiAiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRLaXQuaCIgMiAzCgoj
IDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FU
Q2FwdHVyZVNlc3Npb24uaCIgMSAzCiMgMTQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FU
S2l0LmZyYW1ld29yay9IZWFkZXJzL1FUQ2FwdHVyZVNlc3Npb24uaCIgMwpleHRlcm4gIkMiIE5T
U3RyaW5nICogY29uc3QgUVRDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbiA7
CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVENhcHR1cmVTZXNzaW9uRXJyb3JLZXkgOwoK
QGNsYXNzIFFUQ2FwdHVyZUNvbm5lY3Rpb247CkBjbGFzcyBRVENhcHR1cmVJbnB1dDsKQGNsYXNz
IFFUQ2FwdHVyZU91dHB1dDsKCkBjbGFzcyBRVENhcHR1cmVTZXNzaW9uSW50ZXJuYWw7CkBjbGFz
cyBRVENhcHR1cmVTZXNzaW9uSW50ZXJuYWxTdGF0ZTsKCkBpbnRlcmZhY2UgUVRDYXB0dXJlU2Vz
c2lvbiA6IE5TT2JqZWN0IHsKQHByaXZhdGUKIFFUQ2FwdHVyZVNlc3Npb25JbnRlcm5hbCAqX2lu
dGVybmFsOwogUVRDYXB0dXJlU2Vzc2lvbkludGVybmFsU3RhdGUgKl9pbnRlcm5hbFN0YXRlOwog
bG9uZyBfcmVzZXJ2ZWQxOwogbG9uZyBfcmVzZXJ2ZWQyOwogbG9uZyBfcmVzZXJ2ZWQzOwp9Cgot
IChOU0FycmF5ICopaW5wdXRzOwotIChCT09MKWFkZElucHV0OihRVENhcHR1cmVJbnB1dCAqKWlu
cHV0IGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwotICh2b2lkKXJlbW92ZUlucHV0OihRVENh
cHR1cmVJbnB1dCAqKWlucHV0OwoKLSAoTlNBcnJheSAqKW91dHB1dHM7Ci0gKEJPT0wpYWRkT3V0
cHV0OihRVENhcHR1cmVPdXRwdXQgKilvdXRwdXQgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7
Ci0gKHZvaWQpcmVtb3ZlT3V0cHV0OihRVENhcHR1cmVPdXRwdXQgKilvdXRwdXQ7CgotIChCT09M
KWlzUnVubmluZzsKLSAodm9pZClzdGFydFJ1bm5pbmc7Ci0gKHZvaWQpc3RvcFJ1bm5pbmc7CgpA
ZW5kCiMgMjQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFk
ZXJzL1FUS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZy
YW1ld29yay9IZWFkZXJzL1FUQ2FwdHVyZUlucHV0LmgiIDEgMwojIDEzICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVENhcHR1cmVJbnB1dC5oIiAz
CkBjbGFzcyBRVENhcHR1cmVTZXNzaW9uOwoKQGludGVyZmFjZSBRVENhcHR1cmVJbnB1dCA6IE5T
T2JqZWN0IHsKQHByaXZhdGUKIFFUQ2FwdHVyZVNlc3Npb24gKiBfX2F0dHJpYnV0ZV9fKChvYmpj
X2djKHdlYWspKSkgX3Nlc3Npb247CiBsb25nIF9yZXNlcnZlZDE7CiBsb25nIF9yZXNlcnZlZDI7
CiBsb25nIF9yZXNlcnZlZDM7Cn0KCi0gKE5TQXJyYXkgKiljb25uZWN0aW9uczsKCkBlbmQKIyAy
NSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRL
aXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvUVRDYXB0dXJlT3V0cHV0LmgiIDEgMwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVENhcHR1cmVPdXRwdXQuaCIgMwpAY2xh
c3MgUVRDYXB0dXJlU2Vzc2lvbjsKCkBpbnRlcmZhY2UgUVRDYXB0dXJlT3V0cHV0IDogTlNPYmpl
Y3QgewpAcHJpdmF0ZQogUVRDYXB0dXJlU2Vzc2lvbiAqIF9fYXR0cmlidXRlX18oKG9iamNfZ2Mo
d2VhaykpKSBfc2Vzc2lvbjsKIGxvbmcgX3Jlc2VydmVkMTsKIGxvbmcgX3Jlc2VydmVkMjsKIGxv
bmcgX3Jlc2VydmVkMzsKfQoKLSAoTlNBcnJheSAqKWNvbm5lY3Rpb25zOwoKQGVuZAojIDI2ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVEtpdC5o
IiAyIDMKIyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9RVENhcHR1cmVDb25uZWN0aW9uLmgiIDEgMwojIDEzICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVENhcHR1cmVDb25uZWN0aW9uLmgiIDMK
QGNsYXNzIFFURm9ybWF0RGVzY3JpcHRpb247CgoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0
IFFUQ2FwdHVyZUNvbm5lY3Rpb25Gb3JtYXREZXNjcmlwdGlvbldpbGxDaGFuZ2VOb3RpZmljYXRp
b24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRDYXB0dXJlQ29ubmVjdGlvbkZvcm1h
dERlc2NyaXB0aW9uRGlkQ2hhbmdlTm90aWZpY2F0aW9uIDsKCmV4dGVybiAiQyIgTlNTdHJpbmcg
KiBjb25zdCBRVENhcHR1cmVDb25uZWN0aW9uQXR0cmlidXRlV2lsbENoYW5nZU5vdGlmaWNhdGlv
biA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVENhcHR1cmVDb25uZWN0aW9uQXR0cmli
dXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3Qg
UVRDYXB0dXJlQ29ubmVjdGlvbkNoYW5nZWRBdHRyaWJ1dGVLZXkgOwoKCmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBRVENhcHR1cmVDb25uZWN0aW9uQXVkaW9BdmVyYWdlUG93ZXJMZXZlbHNB
dHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRDYXB0dXJlQ29ubmVjdGlv
bkF1ZGlvUGVha0hvbGRMZXZlbHNBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29u
c3QgUVRDYXB0dXJlQ29ubmVjdGlvbkF1ZGlvTWFzdGVyVm9sdW1lQXR0cmlidXRlIDsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUQ2FwdHVyZUNvbm5lY3Rpb25BdWRpb1ZvbHVtZXNBdHRy
aWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRDYXB0dXJlQ29ubmVjdGlvbkVu
YWJsZWRBdWRpb0NoYW5uZWxzQXR0cmlidXRlIDsKCkBjbGFzcyBRVENhcHR1cmVDb25uZWN0aW9u
SW50ZXJuYWw7CgpAaW50ZXJmYWNlIFFUQ2FwdHVyZUNvbm5lY3Rpb24gOiBOU09iamVjdCB7CkBw
cml2YXRlCiBRVENhcHR1cmVDb25uZWN0aW9uSW50ZXJuYWwgKl9pbnRlcm5hbDsKIGxvbmcgX3Jl
c2VydmVkMTsKIGxvbmcgX3Jlc2VydmVkMjsKIGxvbmcgX3Jlc2VydmVkMzsKfQoKLSAoaWQpb3du
ZXI7CgotIChOU1N0cmluZyAqKW1lZGlhVHlwZTsKLSAoUVRGb3JtYXREZXNjcmlwdGlvbiAqKWZv
cm1hdERlc2NyaXB0aW9uOwoKLSAoQk9PTClpc0VuYWJsZWQ7Ci0gKHZvaWQpc2V0RW5hYmxlZDoo
Qk9PTCllbmFibGVkOwoKLSAoTlNEaWN0aW9uYXJ5ICopY29ubmVjdGlvbkF0dHJpYnV0ZXM7Ci0g
KHZvaWQpc2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWNvbm5lY3Rpb25B
dHRyaWJ1dGVzOwotIChCT09MKWF0dHJpYnV0ZUlzUmVhZE9ubHk6KE5TU3RyaW5nICopYXR0cmli
dXRlS2V5OwotIChpZClhdHRyaWJ1dGVGb3JLZXk6KE5TU3RyaW5nICopYXR0cmlidXRlS2V5Owot
ICh2b2lkKXNldEF0dHJpYnV0ZTooaWQpYXR0cmlidXRlIGZvcktleTooTlNTdHJpbmcgKilrZXk7
CgpAZW5kCiMgMjcgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9I
ZWFkZXJzL1FUS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0
LmZyYW1ld29yay9IZWFkZXJzL1FUQ2FwdHVyZURldmljZUlucHV0LmgiIDEgMwojIDE1ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVENhcHR1cmVE
ZXZpY2VJbnB1dC5oIiAzCkBjbGFzcyBRVENhcHR1cmVEZXZpY2U7CgpAY2xhc3MgUVRDYXB0dXJl
RGV2aWNlSW5wdXRJbnRlcm5hbDsKCkBpbnRlcmZhY2UgUVRDYXB0dXJlRGV2aWNlSW5wdXQgOiBR
VENhcHR1cmVJbnB1dCB7CkBwcml2YXRlOwogUVRDYXB0dXJlRGV2aWNlSW5wdXRJbnRlcm5hbCAq
X2ludGVybmFsOwogbG9uZyBfcmVzZXJ2ZWQ0OwogbG9uZyBfcmVzZXJ2ZWQ1OwogbG9uZyBfcmVz
ZXJ2ZWQ2Owp9CgorIChpZClkZXZpY2VJbnB1dFdpdGhEZXZpY2U6KFFUQ2FwdHVyZURldmljZSAq
KWRldmljZTsKLSAoaWQpaW5pdFdpdGhEZXZpY2U6KFFUQ2FwdHVyZURldmljZSAqKWRldmljZTsK
Ci0gKFFUQ2FwdHVyZURldmljZSAqKWRldmljZTsKCkBlbmQKIyAyOCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRLaXQuaCIgMiAzCiMgMSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJl
RmlsZU91dHB1dC5oIiAxIDMKIyAxNiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJlRmlsZU91dHB1dC5oIiAzCmVudW0gewogICAgUVRD
YXB0dXJlRmlsZU91dHB1dEJ1ZmZlckRlc3RpbmF0aW9uTmV3RmlsZSA9IDEsCiAgICBRVENhcHR1
cmVGaWxlT3V0cHV0QnVmZmVyRGVzdGluYXRpb25PbGRGaWxlID0gMgp9Owp0eXBlZGVmIE5TVUlu
dGVnZXIgUVRDYXB0dXJlRmlsZU91dHB1dEJ1ZmZlckRlc3RpbmF0aW9uOwoKQGNsYXNzIFFUQ2Fw
dHVyZUNvbm5lY3Rpb247CkBjbGFzcyBRVENvbXByZXNzaW9uT3B0aW9uczsKQGNsYXNzIFFUU2Ft
cGxlQnVmZmVyOwoKQGNsYXNzIFFUQ2FwdHVyZUZpbGVPdXRwdXRJbnRlcm5hbDsKCkBpbnRlcmZh
Y2UgUVRDYXB0dXJlRmlsZU91dHB1dCA6IFFUQ2FwdHVyZU91dHB1dCB7CkBwcml2YXRlCiBRVENh
cHR1cmVGaWxlT3V0cHV0SW50ZXJuYWwgKl9maWxlT3V0cHV0SW50ZXJuYWw7CgogaWQgX19hdHRy
aWJ1dGVfXygob2JqY19nYyh3ZWFrKSkpIF9kZWxlZ2F0ZTsKCiBsb25nIF9yZXNlcnZlZDQ7CiBs
b25nIF9yZXNlcnZlZDU7CiBsb25nIF9yZXNlcnZlZDY7Cn0KCgotIChOU1VSTCAqKW91dHB1dEZp
bGVVUkw7CgoKLSAodm9pZClyZWNvcmRUb091dHB1dEZpbGVVUkw6KE5TVVJMICopdXJsOwotICh2
b2lkKXJlY29yZFRvT3V0cHV0RmlsZVVSTDooTlNVUkwgKil1cmwgYnVmZmVyRGVzdGluYXRpb246
KFFUQ2FwdHVyZUZpbGVPdXRwdXRCdWZmZXJEZXN0aW5hdGlvbilidWZmZXJEZXN0aW5hdGlvbjsK
IyA1NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
UVRDYXB0dXJlRmlsZU91dHB1dC5oIiAzCi0gKEJPT0wpaXNSZWNvcmRpbmdQYXVzZWQ7CiMgNjkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUQ2Fw
dHVyZUZpbGVPdXRwdXQuaCIgMwotICh2b2lkKXBhdXNlUmVjb3JkaW5nOwojIDc5ICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVENhcHR1cmVGaWxl
T3V0cHV0LmgiIDMKLSAodm9pZClyZXN1bWVSZWNvcmRpbmc7CgoKCi0gKFFUQ29tcHJlc3Npb25P
cHRpb25zICopY29tcHJlc3Npb25PcHRpb25zRm9yQ29ubmVjdGlvbjooUVRDYXB0dXJlQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb247Ci0gKHZvaWQpc2V0Q29tcHJlc3Npb25PcHRpb25zOihRVENvbXBy
ZXNzaW9uT3B0aW9ucyAqKWNvbXByZXNzaW9uT3B0aW9ucyBmb3JDb25uZWN0aW9uOihRVENhcHR1
cmVDb25uZWN0aW9uICopY29ubmVjdGlvbjsKIyA5NiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJlRmlsZU91dHB1dC5oIiAzCi0gKE5T
U2l6ZSltYXhpbXVtVmlkZW9TaXplOwojIDEwOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJlRmlsZU91dHB1dC5oIiAzCi0gKHZvaWQp
c2V0TWF4aW11bVZpZGVvU2l6ZTooTlNTaXplKW1heGltdW1WaWRlb1NpemU7CiMgMTE4ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVENhcHR1cmVG
aWxlT3V0cHV0LmgiIDMKLSAoTlNUaW1lSW50ZXJ2YWwpbWluaW11bVZpZGVvRnJhbWVJbnRlcnZh
bDsKIyAxMjkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFk
ZXJzL1FUQ2FwdHVyZUZpbGVPdXRwdXQuaCIgMwotICh2b2lkKXNldE1pbmltdW1WaWRlb0ZyYW1l
SW50ZXJ2YWw6KE5TVGltZUludGVydmFsKW1pbmltdW1WaWRlb0ZyYW1lSW50ZXJ2YWw7CgoKLSAo
UVRUaW1lKXJlY29yZGVkRHVyYXRpb247Ci0gKFVJbnQ2NClyZWNvcmRlZEZpbGVTaXplOwoKCi0g
KFFUVGltZSltYXhpbXVtUmVjb3JkZWREdXJhdGlvbjsKLSAodm9pZClzZXRNYXhpbXVtUmVjb3Jk
ZWREdXJhdGlvbjooUVRUaW1lKW1heGltdW1SZWNvcmRlZER1cmF0aW9uOwotIChVSW50NjQpbWF4
aW11bVJlY29yZGVkRmlsZVNpemU7Ci0gKHZvaWQpc2V0TWF4aW11bVJlY29yZGVkRmlsZVNpemU6
KFVJbnQ2NCltYXhpbXVtUmVjb3JkZWRGaWxlU2l6ZTsKCi0gKGlkKWRlbGVnYXRlOwotICh2b2lk
KXNldERlbGVnYXRlOihpZClkZWxlZ2F0ZTsKCkBlbmQKCkBpbnRlcmZhY2UgTlNPYmplY3QgKFFU
Q2FwdHVyZUZpbGVPdXRwdXRfRGVsZWdhdGUpCgoKLSAodm9pZCljYXB0dXJlT3V0cHV0OihRVENh
cHR1cmVGaWxlT3V0cHV0ICopY2FwdHVyZU91dHB1dCBkaWRPdXRwdXRTYW1wbGVCdWZmZXI6KFFU
U2FtcGxlQnVmZmVyICopc2FtcGxlQnVmZmVyIGZyb21Db25uZWN0aW9uOihRVENhcHR1cmVDb25u
ZWN0aW9uICopY29ubmVjdGlvbjsKCgotICh2b2lkKWNhcHR1cmVPdXRwdXQ6KFFUQ2FwdHVyZUZp
bGVPdXRwdXQgKiljYXB0dXJlT3V0cHV0IHdpbGxTdGFydFJlY29yZGluZ1RvT3V0cHV0RmlsZUF0
VVJMOihOU1VSTCAqKWZpbGVVUkwgZm9yQ29ubmVjdGlvbnM6KE5TQXJyYXkgKiljb25uZWN0aW9u
czsKLSAodm9pZCljYXB0dXJlT3V0cHV0OihRVENhcHR1cmVGaWxlT3V0cHV0ICopY2FwdHVyZU91
dHB1dCBkaWRTdGFydFJlY29yZGluZ1RvT3V0cHV0RmlsZUF0VVJMOihOU1VSTCAqKWZpbGVVUkwg
Zm9yQ29ubmVjdGlvbnM6KE5TQXJyYXkgKiljb25uZWN0aW9uczsKCgotIChCT09MKWNhcHR1cmVP
dXRwdXQ6KFFUQ2FwdHVyZUZpbGVPdXRwdXQgKiljYXB0dXJlT3V0cHV0IHNob3VsZENoYW5nZU91
dHB1dEZpbGVBdFVSTDooTlNVUkwgKilvdXRwdXRGaWxlVVJMIGZvckNvbm5lY3Rpb25zOihOU0Fy
cmF5ICopY29ubmVjdGlvbnMgZHVlVG9FcnJvcjooTlNFcnJvciAqKWVycm9yOwoKCi0gKHZvaWQp
Y2FwdHVyZU91dHB1dDooUVRDYXB0dXJlRmlsZU91dHB1dCAqKWNhcHR1cmVPdXRwdXQgbXVzdENo
YW5nZU91dHB1dEZpbGVBdFVSTDooTlNVUkwgKilvdXRwdXRGaWxlVVJMIGZvckNvbm5lY3Rpb25z
OihOU0FycmF5ICopY29ubmVjdGlvbnMgZHVlVG9FcnJvcjooTlNFcnJvciAqKWVycm9yOwoKCi0g
KHZvaWQpY2FwdHVyZU91dHB1dDooUVRDYXB0dXJlRmlsZU91dHB1dCAqKWNhcHR1cmVPdXRwdXQg
d2lsbEZpbmlzaFJlY29yZGluZ1RvT3V0cHV0RmlsZUF0VVJMOihOU1VSTCAqKW91dHB1dEZpbGVV
UkwgZm9yQ29ubmVjdGlvbnM6KE5TQXJyYXkgKiljb25uZWN0aW9ucyBkdWVUb0Vycm9yOihOU0Vy
cm9yICopZXJyb3I7CgoKLSAodm9pZCljYXB0dXJlT3V0cHV0OihRVENhcHR1cmVGaWxlT3V0cHV0
ICopY2FwdHVyZU91dHB1dCBkaWRGaW5pc2hSZWNvcmRpbmdUb091dHB1dEZpbGVBdFVSTDooTlNV
UkwgKilvdXRwdXRGaWxlVVJMIGZvckNvbm5lY3Rpb25zOihOU0FycmF5ICopY29ubmVjdGlvbnMg
ZHVlVG9FcnJvcjooTlNFcnJvciAqKWVycm9yOwojIDE3OCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJlRmlsZU91dHB1dC5oIiAzCi0g
KHZvaWQpY2FwdHVyZU91dHB1dDooUVRDYXB0dXJlRmlsZU91dHB1dCAqKWNhcHR1cmVPdXRwdXQg
ZGlkUGF1c2VSZWNvcmRpbmdUb091dHB1dEZpbGVBdFVSTDooTlNVUkwgKilmaWxlVVJMIGZvckNv
bm5lY3Rpb25zOihOU0FycmF5ICopY29ubmVjdGlvbnM7CiMgMTkxICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVENhcHR1cmVGaWxlT3V0cHV0Lmgi
IDMKLSAodm9pZCljYXB0dXJlT3V0cHV0OihRVENhcHR1cmVGaWxlT3V0cHV0ICopY2FwdHVyZU91
dHB1dCBkaWRSZXN1bWVSZWNvcmRpbmdUb091dHB1dEZpbGVBdFVSTDooTlNVUkwgKilmaWxlVVJM
IGZvckNvbm5lY3Rpb25zOihOU0FycmF5ICopY29ubmVjdGlvbnM7CgpAZW5kCiMgMjkgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUS2l0LmgiIDIg
MwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJz
L1FUQ2FwdHVyZU1vdmllRmlsZU91dHB1dC5oIiAxIDMKIyAxNyAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJlTW92aWVGaWxlT3V0cHV0
LmgiIDMKQGNsYXNzIFFUQ2FwdHVyZU1vdmllRmlsZU91dHB1dEludGVybmFsOwoKQGludGVyZmFj
ZSBRVENhcHR1cmVNb3ZpZUZpbGVPdXRwdXQgOiBRVENhcHR1cmVGaWxlT3V0cHV0IHsKQHByaXZh
dGUKIFFUQ2FwdHVyZU1vdmllRmlsZU91dHB1dEludGVybmFsICpfaW50ZXJuYWw7CiBsb25nIF9y
ZXNlcnZlZDg7Cn0KCkBlbmQKIyAzMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvUVRLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJlVmlldy5oIiAxIDMKIyAxMyAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0
dXJlVmlldy5oIiAzCkBjbGFzcyBRVENhcHR1cmVTZXNzaW9uOwpAY2xhc3MgUVRDYXB0dXJlQ29u
bmVjdGlvbjsKCkBjbGFzcyBRVENhcHR1cmVWaWV3SW50ZXJuYWw7CgpAY2xhc3MgQ0lJbWFnZTsK
CkBpbnRlcmZhY2UgUVRDYXB0dXJlVmlldyA6IE5TVmlldyB7CkBwcml2YXRlCiBRVENhcHR1cmVW
aWV3SW50ZXJuYWwgKl9pbnRlcm5hbDsKCiBsb25nIF9yZXNlcnZlZDE7CiBsb25nIF9yZXNlcnZl
ZDI7CiBsb25nIF9yZXNlcnZlZDM7Cn0KCi0gKFFUQ2FwdHVyZVNlc3Npb24gKiljYXB0dXJlU2Vz
c2lvbjsKLSAodm9pZClzZXRDYXB0dXJlU2Vzc2lvbjooUVRDYXB0dXJlU2Vzc2lvbiAqKWNhcHR1
cmVTZXNzaW9uOwoKCi0gKE5TQXJyYXkgKilhdmFpbGFibGVWaWRlb1ByZXZpZXdDb25uZWN0aW9u
czsKLSAoUVRDYXB0dXJlQ29ubmVjdGlvbiAqKXZpZGVvUHJldmlld0Nvbm5lY3Rpb247Ci0gKHZv
aWQpc2V0VmlkZW9QcmV2aWV3Q29ubmVjdGlvbjooUVRDYXB0dXJlQ29ubmVjdGlvbiAqKXZpZGVv
UHJldmlld0Nvbm5lY3Rpb247CgotIChOU0NvbG9yICopZmlsbENvbG9yOwotICh2b2lkKXNldEZp
bGxDb2xvcjooTlNDb2xvciAqKWZpbGxDb2xvcjsKLSAoQk9PTClwcmVzZXJ2ZXNBc3BlY3RSYXRp
bzsKLSAodm9pZClzZXRQcmVzZXJ2ZXNBc3BlY3RSYXRpbzooQk9PTClwcmVzZXJ2ZXNBc3BlY3RS
YXRpbzsKCi0gKE5TUmVjdClwcmV2aWV3Qm91bmRzOwoKLSAoaWQpZGVsZWdhdGU7Ci0gKHZvaWQp
c2V0RGVsZWdhdGU6KGlkKWRlbGVnYXRlOwoKQGVuZAoKQGludGVyZmFjZSBOU09iamVjdCAoUVRD
YXB0dXJlVmlld19EZWxlZ2F0ZSkKLSAoQ0lJbWFnZSAqKXZpZXc6KFFUQ2FwdHVyZVZpZXcgKil2
aWV3IHdpbGxEaXNwbGF5SW1hZ2U6KENJSW1hZ2UgKilpbWFnZTsKQGVuZAojIDMxICIvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVEtpdC5oIiAyIDMK
IyAxICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9R
VENhcHR1cmVEZXZpY2UuaCIgMSAzCiMgMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FU
S2l0LmZyYW1ld29yay9IZWFkZXJzL1FUQ2FwdHVyZURldmljZS5oIiAzCmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBRVENhcHR1cmVEZXZpY2VXYXNDb25uZWN0ZWROb3RpZmljYXRpb24gOwpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRDYXB0dXJlRGV2aWNlV2FzRGlzY29ubmVjdGVk
Tm90aWZpY2F0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUQ2FwdHVyZURldmlj
ZUZvcm1hdERlc2NyaXB0aW9uc1dpbGxDaGFuZ2VOb3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5T
U3RyaW5nICogY29uc3QgUVRDYXB0dXJlRGV2aWNlRm9ybWF0RGVzY3JpcHRpb25zRGlkQ2hhbmdl
Tm90aWZpY2F0aW9uIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUQ2FwdHVyZURldmlj
ZUF0dHJpYnV0ZVdpbGxDaGFuZ2VOb3RpZmljYXRpb24gOwpleHRlcm4gIkMiIE5TU3RyaW5nICog
Y29uc3QgUVRDYXB0dXJlRGV2aWNlQXR0cmlidXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIDsKCgpl
eHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRDYXB0dXJlRGV2aWNlQ2hhbmdlZEF0dHJpYnV0
ZUtleSA7CgoKCgoKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRDYXB0dXJlRGV2aWNl
U3VzcGVuZGVkQXR0cmlidXRlIDsKCgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVENh
cHR1cmVEZXZpY2VMaW5rZWREZXZpY2VzQXR0cmlidXRlIDsKCgoKCmV4dGVybiAiQyIgTlNTdHJp
bmcgKiBjb25zdCBRVENhcHR1cmVEZXZpY2VBdmFpbGFibGVJbnB1dFNvdXJjZXNBdHRyaWJ1dGUg
OwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUQ2FwdHVyZURldmljZUlucHV0U291cmNl
SWRlbnRpZmllckF0dHJpYnV0ZSA7CgoKCmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVENh
cHR1cmVEZXZpY2VJbnB1dFNvdXJjZUlkZW50aWZpZXJLZXkgOwoKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IFFUQ2FwdHVyZURldmljZUlucHV0U291cmNlTG9jYWxpemVkRGlzcGxheU5hbWVL
ZXkgOwojIDYwICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9RVENhcHR1cmVEZXZpY2UuaCIgMwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRD
YXB0dXJlRGV2aWNlQVZDVHJhbnNwb3J0Q29udHJvbHNBdHRyaWJ1dGUgOwoKCgpleHRlcm4gIkMi
IE5TU3RyaW5nICogY29uc3QgUVRDYXB0dXJlRGV2aWNlQVZDVHJhbnNwb3J0Q29udHJvbHNQbGF5
YmFja01vZGVLZXkgOwoKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUQ2FwdHVyZURldmlj
ZUFWQ1RyYW5zcG9ydENvbnRyb2xzU3BlZWRLZXkgOwoKCgplbnVtIHsKIFFUQ2FwdHVyZURldmlj
ZUFWQ1RyYW5zcG9ydENvbnRyb2xzTm90UGxheWluZ01vZGUgPSAwLAogUVRDYXB0dXJlRGV2aWNl
QVZDVHJhbnNwb3J0Q29udHJvbHNQbGF5aW5nTW9kZSA9IDEKfTsKdHlwZWRlZiBOU1VJbnRlZ2Vy
IFFUQ2FwdHVyZURldmljZUFWQ1RyYW5zcG9ydENvbnRyb2xzUGxheWJhY2tNb2RlOwoKZW51bSB7
CiBRVENhcHR1cmVEZXZpY2VBVkNUcmFuc3BvcnRDb250cm9sc0Zhc3Rlc3RSZXZlcnNlU3BlZWQg
PSAtMTkwMDAsCiBRVENhcHR1cmVEZXZpY2VBVkNUcmFuc3BvcnRDb250cm9sc1ZlcnlGYXN0UmV2
ZXJzZVNwZWVkID0gLTE2MDAwLAogUVRDYXB0dXJlRGV2aWNlQVZDVHJhbnNwb3J0Q29udHJvbHNG
YXN0UmV2ZXJzZVNwZWVkID0gLTEzMDAwLAogUVRDYXB0dXJlRGV2aWNlQVZDVHJhbnNwb3J0Q29u
dHJvbHNOb3JtYWxSZXZlcnNlU3BlZWQgPSAtMTAwMDAsCiBRVENhcHR1cmVEZXZpY2VBVkNUcmFu
c3BvcnRDb250cm9sc1Nsb3dSZXZlcnNlU3BlZWQgPSAtNzAwMCwKIFFUQ2FwdHVyZURldmljZUFW
Q1RyYW5zcG9ydENvbnRyb2xzVmVyeVNsb3dSZXZlcnNlU3BlZWQgPSAtNDAwMCwKIFFUQ2FwdHVy
ZURldmljZUFWQ1RyYW5zcG9ydENvbnRyb2xzU2xvd2VzdFJldmVyc2VTcGVlZCA9IC0xMDAwLAog
UVRDYXB0dXJlRGV2aWNlQVZDVHJhbnNwb3J0Q29udHJvbHNTdG9wcGVkU3BlZWQgPSAwLAogUVRD
YXB0dXJlRGV2aWNlQVZDVHJhbnNwb3J0Q29udHJvbHNTbG93ZXN0Rm9yd2FyZFNwZWVkID0gMTAw
MCwKIFFUQ2FwdHVyZURldmljZUFWQ1RyYW5zcG9ydENvbnRyb2xzVmVyeVNsb3dGb3J3YXJkU3Bl
ZWQgPSA0MDAwLAogUVRDYXB0dXJlRGV2aWNlQVZDVHJhbnNwb3J0Q29udHJvbHNTbG93Rm9yd2Fy
ZFNwZWVkID0gNzAwMCwKIFFUQ2FwdHVyZURldmljZUFWQ1RyYW5zcG9ydENvbnRyb2xzTm9ybWFs
Rm9yd2FyZFNwZWVkID0gMTAwMDAsCiBRVENhcHR1cmVEZXZpY2VBVkNUcmFuc3BvcnRDb250cm9s
c0Zhc3RGb3J3YXJkU3BlZWQgPSAxMzAwMCwKIFFUQ2FwdHVyZURldmljZUFWQ1RyYW5zcG9ydENv
bnRyb2xzVmVyeUZhc3RGb3J3YXJkU3BlZWQgPSAxNjAwMCwKIFFUQ2FwdHVyZURldmljZUFWQ1Ry
YW5zcG9ydENvbnRyb2xzRmFzdGVzdEZvcndhcmRTcGVlZCA9IDE5MDAwLAp9Owp0eXBlZGVmIE5T
SW50ZWdlciBRVENhcHR1cmVEZXZpY2VBVkNUcmFuc3BvcnRDb250cm9sc1NwZWVkOwoKCgoKCkBj
bGFzcyBRVENhcHR1cmVEZXZpY2VJbnRlcm5hbDsKCkBpbnRlcmZhY2UgUVRDYXB0dXJlRGV2aWNl
IDogTlNPYmplY3QgPE5TQ29kaW5nPiB7CkBwcml2YXRlCiBRVENhcHR1cmVEZXZpY2VJbnRlcm5h
bCAqX2ludGVybmFsOwogbG9uZyBfcmVzZXJ2ZWQxOwogbG9uZyBfcmVzZXJ2ZWQyOwogbG9uZyBf
cmVzZXJ2ZWQzOwp9CgorIChOU0FycmF5ICopaW5wdXREZXZpY2VzOworIChOU0FycmF5ICopaW5w
dXREZXZpY2VzV2l0aE1lZGlhVHlwZTooTlNTdHJpbmcgKiltZWRpYVR5cGU7CisgKFFUQ2FwdHVy
ZURldmljZSAqKWRlZmF1bHRJbnB1dERldmljZVdpdGhNZWRpYVR5cGU6KE5TU3RyaW5nICopbWVk
aWFUeXBlOworIChRVENhcHR1cmVEZXZpY2UgKilkZXZpY2VXaXRoVW5pcXVlSUQ6KE5TU3RyaW5n
ICopZGV2aWNlVW5pcXVlSUQ7CgotIChOU1N0cmluZyAqKXVuaXF1ZUlEOwotIChOU1N0cmluZyAq
KW1vZGVsVW5pcXVlSUQ7Ci0gKE5TU3RyaW5nICopbG9jYWxpemVkRGlzcGxheU5hbWU7CgotIChO
U0FycmF5ICopZm9ybWF0RGVzY3JpcHRpb25zOwotIChCT09MKWhhc01lZGlhVHlwZTooTlNTdHJp
bmcgKiltZWRpYVR5cGU7CgotIChOU0RpY3Rpb25hcnkgKilkZXZpY2VBdHRyaWJ1dGVzOwotICh2
b2lkKXNldERldmljZUF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRldmljZUF0dHJpYnV0ZXM7
Ci0gKEJPT0wpYXR0cmlidXRlSXNSZWFkT25seTooTlNTdHJpbmcgKilhdHRyaWJ1dGVLZXk7Ci0g
KGlkKWF0dHJpYnV0ZUZvcktleTooTlNTdHJpbmcgKilhdHRyaWJ1dGVLZXk7Ci0gKHZvaWQpc2V0
QXR0cmlidXRlOihpZClhdHRyaWJ1dGUgZm9yS2V5OihOU1N0cmluZyAqKWF0dHJpYnV0ZUtleTsK
CgotIChCT09MKWlzQ29ubmVjdGVkOwotIChCT09MKWlzSW5Vc2VCeUFub3RoZXJBcHBsaWNhdGlv
bjsKCi0gKEJPT0wpaXNPcGVuOwotIChCT09MKW9wZW46KE5TRXJyb3IgKiopZXJyb3JQdHI7Ci0g
KHZvaWQpY2xvc2U7CgpAZW5kCiMgMzIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0
LmZyYW1ld29yay9IZWFkZXJzL1FUS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUQ2FwdHVyZVZpZGVvUHJldmlld091dHB1
dC5oIiAxIDMKIyAxOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3Jr
L0hlYWRlcnMvUVRDYXB0dXJlVmlkZW9QcmV2aWV3T3V0cHV0LmgiIDMKQGNsYXNzIFFUQ2FwdHVy
ZVZpZGVvUHJldmlld091dHB1dEludGVybmFsOwoKQGNsYXNzIFFUQ2FwdHVyZUNvbm5lY3Rpb247
CkBjbGFzcyBRVFNhbXBsZUJ1ZmZlcjsKCkBpbnRlcmZhY2UgUVRDYXB0dXJlVmlkZW9QcmV2aWV3
T3V0cHV0IDogUVRDYXB0dXJlT3V0cHV0IHsKQHByaXZhdGUKIFFUQ2FwdHVyZVZpZGVvUHJldmll
d091dHB1dEludGVybmFsICpfaW50ZXJuYWw7CiBfX2F0dHJpYnV0ZV9fKChvYmpjX2djKHdlYWsp
KSkgaWQgX2RlbGVnYXRlOwoKIGxvbmcgX3Jlc2VydmVkNDsKfQoKLSAoTlNEaWN0aW9uYXJ5ICop
cGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOwotICh2b2lkKXNldFBpeGVsQnVmZmVyQXR0cmlidXRlczoo
TlNEaWN0aW9uYXJ5ICopcGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOwoKCgoKCgotIChpZClkZWxlZ2F0
ZTsKLSAodm9pZClzZXREZWxlZ2F0ZTooaWQpZGVsZWdhdGU7CgoKLSAodm9pZClvdXRwdXRWaWRl
b0ZyYW1lOihDVkltYWdlQnVmZmVyUmVmKXZpZGVvRnJhbWUgd2l0aFNhbXBsZUJ1ZmZlcjooUVRT
YW1wbGVCdWZmZXIgKilzYW1wbGVCdWZmZXIgZnJvbUNvbm5lY3Rpb246KFFUQ2FwdHVyZUNvbm5l
Y3Rpb24gKiljb25uZWN0aW9uOwoKQGVuZAoKQGludGVyZmFjZSBOU09iamVjdCAoUVRDYXB0dXJl
VmlkZW9QcmV2aWV3T3V0cHV0X0RlbGVnYXRlKQoKLSAodm9pZCljYXB0dXJlT3V0cHV0OihRVENh
cHR1cmVPdXRwdXQgKiljYXB0dXJlT3V0cHV0IGRpZE91dHB1dFZpZGVvRnJhbWU6KENWSW1hZ2VC
dWZmZXJSZWYpdmlkZW9GcmFtZSB3aXRoU2FtcGxlQnVmZmVyOihRVFNhbXBsZUJ1ZmZlciAqKXNh
bXBsZUJ1ZmZlciBmcm9tQ29ubmVjdGlvbjooUVRDYXB0dXJlQ29ubmVjdGlvbiAqKWNvbm5lY3Rp
b247CgpAZW5kCiMgMzMgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29y
ay9IZWFkZXJzL1FUS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FU
S2l0LmZyYW1ld29yay9IZWFkZXJzL1FUQ2FwdHVyZUF1ZGlvUHJldmlld091dHB1dC5oIiAxIDMK
IyAxNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMv
UVRDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0LmgiIDMKQGNsYXNzIFFUQ2FwdHVyZUF1ZGlvUHJl
dmlld091dHB1dEludGVybmFsOwoKQGludGVyZmFjZSBRVENhcHR1cmVBdWRpb1ByZXZpZXdPdXRw
dXQgOiBRVENhcHR1cmVPdXRwdXQgewpAcHJpdmF0ZQogUVRDYXB0dXJlQXVkaW9QcmV2aWV3T3V0
cHV0SW50ZXJuYWwgKl9pbnRlcm5hbDsKIGxvbmcgX3Jlc2VydmVkNDsKIGxvbmcgX3Jlc2VydmVk
NTsKIGxvbmcgX3Jlc2VydmVkNjsKfQoKCi0gKE5TU3RyaW5nICopb3V0cHV0RGV2aWNlVW5pcXVl
SUQ7Ci0gKHZvaWQpc2V0T3V0cHV0RGV2aWNlVW5pcXVlSUQ6KE5TU3RyaW5nICopdW5pcXVlSUQ7
CgotIChmbG9hdCl2b2x1bWU7Ci0gKHZvaWQpc2V0Vm9sdW1lOihmbG9hdCl2b2x1bWU7CgpAZW5k
CiMgMzQgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJz
L1FUS2l0LmgiIDIgMwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1l
d29yay9IZWFkZXJzL1FUQ2FwdHVyZURlY29tcHJlc3NlZFZpZGVvT3V0cHV0LmgiIDEgMwojIDE2
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVENh
cHR1cmVEZWNvbXByZXNzZWRWaWRlb091dHB1dC5oIiAzCkBjbGFzcyBRVENhcHR1cmVEZWNvbXBy
ZXNzZWRWaWRlb091dHB1dEludGVybmFsOwoKQGNsYXNzIFFUQ2FwdHVyZUNvbm5lY3Rpb247CkBj
bGFzcyBRVFNhbXBsZUJ1ZmZlcjsKIyAzNSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRL
aXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJlRGVjb21wcmVzc2VkVmlkZW9PdXRwdXQuaCIg
MwpAaW50ZXJmYWNlIFFUQ2FwdHVyZURlY29tcHJlc3NlZFZpZGVvT3V0cHV0IDogUVRDYXB0dXJl
T3V0cHV0IHsKQHByaXZhdGUKIFFUQ2FwdHVyZURlY29tcHJlc3NlZFZpZGVvT3V0cHV0SW50ZXJu
YWwgKl9pbnRlcm5hbDsKIGlkIF9kZWxlZ2F0ZTsKCiBsb25nIF9yZXNlcnZlZDQ7CiBsb25nIF9y
ZXNlcnZlZDU7CiBsb25nIF9yZXNlcnZlZDY7Cn0KIyA2MSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJlRGVjb21wcmVzc2VkVmlkZW9P
dXRwdXQuaCIgMwotIChOU0RpY3Rpb25hcnkgKilwaXhlbEJ1ZmZlckF0dHJpYnV0ZXM7CiMgNzkg
Ii9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUQ2Fw
dHVyZURlY29tcHJlc3NlZFZpZGVvT3V0cHV0LmgiIDMKLSAodm9pZClzZXRQaXhlbEJ1ZmZlckF0
dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKXBpeGVsQnVmZmVyQXR0cmlidXRlczsKIyA5MCAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJl
RGVjb21wcmVzc2VkVmlkZW9PdXRwdXQuaCIgMwotIChOU1RpbWVJbnRlcnZhbCltaW5pbXVtVmlk
ZW9GcmFtZUludGVydmFsOwojIDEwMCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJlRGVjb21wcmVzc2VkVmlkZW9PdXRwdXQuaCIgMwot
ICh2b2lkKXNldE1pbmltdW1WaWRlb0ZyYW1lSW50ZXJ2YWw6KE5TVGltZUludGVydmFsKW1pbmlt
dW1WaWRlb0ZyYW1lSW50ZXJ2YWw7CiMgMTExICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9R
VEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVENhcHR1cmVEZWNvbXByZXNzZWRWaWRlb091dHB1dC5o
IiAzCi0gKEJPT0wpYXV0b21hdGljYWxseURyb3BzTGF0ZVZpZGVvRnJhbWVzOwojIDEyMiAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJl
RGVjb21wcmVzc2VkVmlkZW9PdXRwdXQuaCIgMwotICh2b2lkKXNldEF1dG9tYXRpY2FsbHlEcm9w
c0xhdGVWaWRlb0ZyYW1lczooQk9PTClhdXRvbWF0aWNhbGx5RHJvcHNMYXRlVmlkZW9GcmFtZXM7
CgoKCgoKCgotIChpZClkZWxlZ2F0ZTsKCgoKCgotICh2b2lkKXNldERlbGVnYXRlOihpZClkZWxl
Z2F0ZTsKIyAxNDkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9I
ZWFkZXJzL1FUQ2FwdHVyZURlY29tcHJlc3NlZFZpZGVvT3V0cHV0LmgiIDMKLSAodm9pZClvdXRw
dXRWaWRlb0ZyYW1lOihDVkltYWdlQnVmZmVyUmVmKXZpZGVvRnJhbWUgd2l0aFNhbXBsZUJ1ZmZl
cjooUVRTYW1wbGVCdWZmZXIgKilzYW1wbGVCdWZmZXIgZnJvbUNvbm5lY3Rpb246KFFUQ2FwdHVy
ZUNvbm5lY3Rpb24gKiljb25uZWN0aW9uOwoKQGVuZAoKQGludGVyZmFjZSBOU09iamVjdCAoUVRD
YXB0dXJlRGVjb21wcmVzc2VkVmlkZW9PdXRwdXRfRGVsZWdhdGUpCiMgMTY2ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVENhcHR1cmVEZWNvbXBy
ZXNzZWRWaWRlb091dHB1dC5oIiAzCi0gKHZvaWQpY2FwdHVyZU91dHB1dDooUVRDYXB0dXJlT3V0
cHV0ICopY2FwdHVyZU91dHB1dCBkaWRPdXRwdXRWaWRlb0ZyYW1lOihDVkltYWdlQnVmZmVyUmVm
KXZpZGVvRnJhbWUgd2l0aFNhbXBsZUJ1ZmZlcjooUVRTYW1wbGVCdWZmZXIgKilzYW1wbGVCdWZm
ZXIgZnJvbUNvbm5lY3Rpb246KFFUQ2FwdHVyZUNvbm5lY3Rpb24gKiljb25uZWN0aW9uOwojIDE4
NCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRD
YXB0dXJlRGVjb21wcmVzc2VkVmlkZW9PdXRwdXQuaCIgMwotICh2b2lkKWNhcHR1cmVPdXRwdXQ6
KFFUQ2FwdHVyZU91dHB1dCAqKWNhcHR1cmVPdXRwdXQgZGlkRHJvcFZpZGVvRnJhbWVXaXRoU2Ft
cGxlQnVmZmVyOihRVFNhbXBsZUJ1ZmZlciAqKXNhbXBsZUJ1ZmZlciBmcm9tQ29ubmVjdGlvbjoo
UVRDYXB0dXJlQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb247CgoKQGVuZAojIDM1ICIvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVEtpdC5oIiAyIDMKIyAx
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVhZGVycy9RVENh
cHR1cmVEZWNvbXByZXNzZWRBdWRpb091dHB1dC5oIiAxIDMKIyAxNCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJlRGVjb21wcmVzc2Vk
QXVkaW9PdXRwdXQuaCIgMwpAY2xhc3MgUVRDYXB0dXJlRGVjb21wcmVzc2VkQXVkaW9PdXRwdXRJ
bnRlcm5hbDsKCkBjbGFzcyBRVENhcHR1cmVDb25uZWN0aW9uOwpAY2xhc3MgUVRTYW1wbGVCdWZm
ZXI7CiMgMzAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFk
ZXJzL1FUQ2FwdHVyZURlY29tcHJlc3NlZEF1ZGlvT3V0cHV0LmgiIDMKQGludGVyZmFjZSBRVENh
cHR1cmVEZWNvbXByZXNzZWRBdWRpb091dHB1dCA6IFFUQ2FwdHVyZU91dHB1dCB7CkBwcml2YXRl
CiBRVENhcHR1cmVEZWNvbXByZXNzZWRBdWRpb091dHB1dEludGVybmFsICpfaW50ZXJuYWw7CiBp
ZCBfZGVsZWdhdGU7CgogbG9uZyBfcmVzZXJ2ZWQ0OwogbG9uZyBfcmVzZXJ2ZWQ1OwogbG9uZyBf
cmVzZXJ2ZWQ2Owp9CgoKCgoKLSAoaWQpZGVsZWdhdGU7CgoKCgoKLSAodm9pZClzZXREZWxlZ2F0
ZTooaWQpZGVsZWdhdGU7CiMgNjIgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZy
YW1ld29yay9IZWFkZXJzL1FUQ2FwdHVyZURlY29tcHJlc3NlZEF1ZGlvT3V0cHV0LmgiIDMKLSAo
dm9pZClvdXRwdXRBdWRpb1NhbXBsZUJ1ZmZlcjooUVRTYW1wbGVCdWZmZXIgKilzYW1wbGVCdWZm
ZXIgZnJvbUNvbm5lY3Rpb246KFFUQ2FwdHVyZUNvbm5lY3Rpb24gKiljb25uZWN0aW9uOwoKQGVu
ZAoKQGludGVyZmFjZSBOU09iamVjdCAoUVRDYXB0dXJlRGVjb21wcmVzc2VkQXVkaW9PdXRwdXRf
RGVsZWdhdGUpCiMgNzggIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29y
ay9IZWFkZXJzL1FUQ2FwdHVyZURlY29tcHJlc3NlZEF1ZGlvT3V0cHV0LmgiIDMKLSAodm9pZClj
YXB0dXJlT3V0cHV0OihRVENhcHR1cmVPdXRwdXQgKiljYXB0dXJlT3V0cHV0IGRpZE91dHB1dEF1
ZGlvU2FtcGxlQnVmZmVyOihRVFNhbXBsZUJ1ZmZlciAqKXNhbXBsZUJ1ZmZlciBmcm9tQ29ubmVj
dGlvbjooUVRDYXB0dXJlQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb247CgpAZW5kCiMgMzYgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUS2l0LmgiIDIg
MwojIDEgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJz
L1FURm9ybWF0RGVzY3JpcHRpb24uaCIgMSAzCiMgMTYgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FURm9ybWF0RGVzY3JpcHRpb24uaCIgMwpleHRl
cm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRGb3JtYXREZXNjcmlwdGlvbkF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbkF0dHJpYnV0ZSA7CmV4dGVybiAiQyIgTlNTdHJpbmcgKiBjb25zdCBRVEZv
cm1hdERlc2NyaXB0aW9uQXVkaW9NYWdpY0Nvb2tpZUF0dHJpYnV0ZSA7CmV4dGVybiAiQyIgTlNT
dHJpbmcgKiBjb25zdCBRVEZvcm1hdERlc2NyaXB0aW9uQXVkaW9DaGFubmVsTGF5b3V0QXR0cmli
dXRlIDsKCgpleHRlcm4gIkMiIE5TU3RyaW5nICogY29uc3QgUVRGb3JtYXREZXNjcmlwdGlvblZp
ZGVvQ2xlYW5BcGVydHVyZURpc3BsYXlTaXplQXR0cmlidXRlIDsKZXh0ZXJuICJDIiBOU1N0cmlu
ZyAqIGNvbnN0IFFURm9ybWF0RGVzY3JpcHRpb25WaWRlb1Byb2R1Y3Rpb25BcGVydHVyZURpc3Bs
YXlTaXplQXR0cmlidXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFURm9ybWF0RGVz
Y3JpcHRpb25WaWRlb0VuY29kZWRQaXhlbHNTaXplQXR0cmlidXRlIDsKCkBjbGFzcyBRVEZvcm1h
dERlc2NyaXB0aW9uSW50ZXJuYWw7CgpAaW50ZXJmYWNlIFFURm9ybWF0RGVzY3JpcHRpb24gOiBO
U09iamVjdCB7CkBwcml2YXRlCiBRVEZvcm1hdERlc2NyaXB0aW9uSW50ZXJuYWwgKl9pbnRlcm5h
bDsKIGxvbmcgX3Jlc2VydmVkMTsKIGxvbmcgX3Jlc2VydmVkMjsKIGxvbmcgX3Jlc2VydmVkMzsK
fQoKLSAoTlNTdHJpbmcgKiltZWRpYVR5cGU7Ci0gKFVJbnQzMilmb3JtYXRUeXBlOwotIChOU1N0
cmluZyAqKWxvY2FsaXplZEZvcm1hdFN1bW1hcnk7CgotIChOU0RhdGEgKilxdWlja1RpbWVTYW1w
bGVEZXNjcmlwdGlvbjsKCi0gKE5TRGljdGlvbmFyeSAqKWZvcm1hdERlc2NyaXB0aW9uQXR0cmli
dXRlczsKLSAoaWQpYXR0cmlidXRlRm9yS2V5OihOU1N0cmluZyAqKWtleTsKCi0gKEJPT0wpaXNF
cXVhbFRvRm9ybWF0RGVzY3JpcHRpb246KFFURm9ybWF0RGVzY3JpcHRpb24gKilmb3JtYXREZXNj
cmlwdGlvbjsKCkBlbmQKIyAzNyAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJh
bWV3b3JrL0hlYWRlcnMvUVRLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRTYW1wbGVCdWZmZXIuaCIgMSAzCiMgMTYgIi9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUU2FtcGxl
QnVmZmVyLmgiIDMKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUU2FtcGxlQnVmZmVyU01Q
VEVUaW1lQXR0cmlidXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUU2FtcGxlQnVm
ZmVyRGF0ZVJlY29yZGVkQXR0cmlidXRlIDsKZXh0ZXJuICJDIiBOU1N0cmluZyAqIGNvbnN0IFFU
U2FtcGxlQnVmZmVySG9zdFRpbWVBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5TU3RyaW5nICogY29u
c3QgUVRTYW1wbGVCdWZmZXJTY2VuZUNoYW5nZVR5cGVBdHRyaWJ1dGUgOwpleHRlcm4gIkMiIE5T
U3RyaW5nICogY29uc3QgUVRTYW1wbGVCdWZmZXJFeHBsaWNpdFNjZW5lQ2hhbmdlIDsKZXh0ZXJu
ICJDIiBOU1N0cmluZyAqIGNvbnN0IFFUU2FtcGxlQnVmZmVyVGltZVN0YW1wRGlzY29udGludWl0
eVNjZW5lQ2hhbmdlIDsKCgplbnVtIHsKIFFUU2FtcGxlQnVmZmVyQXVkaW9CdWZmZXJMaXN0T3B0
aW9uQXNzdXJlMTZCeXRlQWxpZ25tZW50ID0gKDFMIDw8IDApCn07CnR5cGVkZWYgTlNVSW50ZWdl
ciBRVFNhbXBsZUJ1ZmZlckF1ZGlvQnVmZmVyTGlzdE9wdGlvbnM7CgpAY2xhc3MgUVRGb3JtYXRE
ZXNjcmlwdGlvbjsKQGNsYXNzIFFUU2FtcGxlQnVmZmVySW50ZXJuYWw7CgpAaW50ZXJmYWNlIFFU
U2FtcGxlQnVmZmVyIDogTlNPYmplY3QgewpAcHJpdmF0ZQogUVRTYW1wbGVCdWZmZXJJbnRlcm5h
bCAqX2ludGVybmFsOwogbG9uZyBfcmVzZXJ2ZWQxOwogbG9uZyBfcmVzZXJ2ZWQyOwogbG9uZyBf
cmVzZXJ2ZWQzOwp9CgotICh2b2lkICopYnl0ZXNGb3JBbGxTYW1wbGVzOwotIChOU1VJbnRlZ2Vy
KWxlbmd0aEZvckFsbFNhbXBsZXM7CgoKLSAoUVRGb3JtYXREZXNjcmlwdGlvbiAqKWZvcm1hdERl
c2NyaXB0aW9uOwoKCi0gKFFUVGltZSlkdXJhdGlvbjsKLSAoUVRUaW1lKWRlY29kZVRpbWU7Ci0g
KFFUVGltZSlwcmVzZW50YXRpb25UaW1lOwoKCi0gKE5TVUludGVnZXIpbnVtYmVyT2ZTYW1wbGVz
OwoKCi0gKE5TRGljdGlvbmFyeSAqKXNhbXBsZUJ1ZmZlckF0dHJpYnV0ZXM7Ci0gKGlkKWF0dHJp
YnV0ZUZvcktleTooTlNTdHJpbmcgKilrZXk7CgpAZW5kCgoKCkBpbnRlcmZhY2UgUVRTYW1wbGVC
dWZmZXIgKFFUU2FtcGxlQnVmZmVyX1VzZUNvdW50KQoKLSAoTlNVSW50ZWdlcilzYW1wbGVVc2VD
b3VudDsKLSAodm9pZClpbmNyZW1lbnRTYW1wbGVVc2VDb3VudDsKLSAodm9pZClkZWNyZW1lbnRT
YW1wbGVVc2VDb3VudDsKCkBlbmQKCgpAaW50ZXJmYWNlIFFUU2FtcGxlQnVmZmVyIChRVEF1ZGlv
U2FtcGxlQnVmZmVyKQoKCi0gKEF1ZGlvQnVmZmVyTGlzdCAqKWF1ZGlvQnVmZmVyTGlzdFdpdGhP
cHRpb25zOihRVFNhbXBsZUJ1ZmZlckF1ZGlvQnVmZmVyTGlzdE9wdGlvbnMpb3B0aW9uczsKCgot
IChCT09MKWdldEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb25zOihBdWRpb1N0cmVhbVBhY2tl
dERlc2NyaXB0aW9uICopYXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbnMgaW5SYW5nZTooTlNS
YW5nZSlyYW5nZTsKCkBlbmQKIyAzOCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQu
ZnJhbWV3b3JrL0hlYWRlcnMvUVRLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDb21wcmVzc2lvbk9wdGlvbnMuaCIgMSAz
CiMgMzkgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJz
L1FUQ29tcHJlc3Npb25PcHRpb25zLmgiIDMKQGNsYXNzIFFUQ29tcHJlc3Npb25PcHRpb25zSW50
ZXJuYWw7CgpAaW50ZXJmYWNlIFFUQ29tcHJlc3Npb25PcHRpb25zIDogTlNPYmplY3QKewpAcHJp
dmF0ZQogUVRDb21wcmVzc2lvbk9wdGlvbnNJbnRlcm5hbCAqX2ludGVybmFsOwogbG9uZyBfcmVz
ZXJ2ZWQ7Cn0KCgorIChOU0FycmF5ICopY29tcHJlc3Npb25PcHRpb25zSWRlbnRpZmllcnNGb3JN
ZWRpYVR5cGU6KE5TU3RyaW5nICopbWVkaWFUeXBlOwoKCisgKGlkKWNvbXByZXNzaW9uT3B0aW9u
c1dpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXI7CgotIChOU1N0cmluZyAqKW1l
ZGlhVHlwZTsKCi0gKE5TU3RyaW5nICopbG9jYWxpemVkRGlzcGxheU5hbWU7Ci0gKE5TU3RyaW5n
ICopbG9jYWxpemVkQ29tcHJlc3Npb25PcHRpb25zU3VtbWFyeTsKCi0gKEJPT0wpaXNFcXVhbFRv
Q29tcHJlc3Npb25PcHRpb25zOihRVENvbXByZXNzaW9uT3B0aW9ucyAqKWNvbXByZXNzaW9uT3B0
aW9uczsKCkBlbmQKIyAzOSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUVRLaXQuZnJhbWV3
b3JrL0hlYWRlcnMvUVRLaXQuaCIgMiAzCiMgMSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UVRLaXQuZnJhbWV3b3JrL0hlYWRlcnMvUVRDYXB0dXJlTGF5ZXIuaCIgMSAzCiMgMTUgIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1FUS2l0LmZyYW1ld29yay9IZWFkZXJzL1FUQ2FwdHVyZUxh
eWVyLmgiIDMKQGNsYXNzIFFUQ2FwdHVyZVNlc3Npb247CkBjbGFzcyBRVENhcHR1cmVMYXllclBy
aXZhdGU7CgpAaW50ZXJmYWNlIFFUQ2FwdHVyZUxheWVyIDogQ0FMYXllcgp7CkBwcml2YXRlCiBR
VENhcHR1cmVMYXllclByaXZhdGUgKl9jYXB0dXJlTGF5ZXJQcml2Owp9CgorIChpZClsYXllcldp
dGhTZXNzaW9uOihRVENhcHR1cmVTZXNzaW9uICopc2Vzc2lvbjsKLSAoaWQpaW5pdFdpdGhTZXNz
aW9uOihRVENhcHR1cmVTZXNzaW9uICopc2Vzc2lvbjsKCi0gKHZvaWQpc2V0U2Vzc2lvbjooUVRD
YXB0dXJlU2Vzc2lvbiAqKXNlc3Npb247Ci0gKFFUQ2FwdHVyZVNlc3Npb24gKilzZXNzaW9uOwoK
QGVuZAojIDM5ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvSGVh
ZGVycy9RVEtpdC5oIiAyIDMKIyAzNyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0iIDIKIyAxICIuLi9pbmNsdWRlL1dl
YkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oIiAxCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgiCiNkZWZpbmUgSFRNTE1lZGlhRWxlbWVudF9oIAoKCgoj
IDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCIgMQojIDI0ICIu
Li8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgiCiNkZWZpbmUgSFRNTEVs
ZW1lbnRfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
aCIgMQojIDI2ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oIgoj
ZGVmaW5lIFN0eWxlZEVsZW1lbnRfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaCIgMQojIDI2ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
IgojZGVmaW5lIEVsZW1lbnRfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgiIDEKIyAyOCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgi
CiNkZWZpbmUgRG9jdW1lbnRfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0No
ZWNrZWRSYWRpb0J1dHRvbnMuaCIgMQojIDIyICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hlY2tlZFJhZGlvQnV0dG9ucy5oIgojZGVmaW5lIENoZWNrZWRSYWRpb0J1dHRvbnNfaCAKCiMg
MSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Gb3J3YXJkLmgiIDEKIyAyMiAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Gb3J3YXJkLmgiCiNkZWZpbmUgV1RG
X0ZvcndhcmRfaCAKCgoKbmFtZXNwYWNlIFdURiB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBMaXN0UmVmUHRyOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgT3duQXJyYXlQ
dHI7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBPd25QdHI7CiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBQYXNzT3duQXJyYXlQdHI7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjbGFzcyBQYXNzT3duUHRyOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1Jl
ZlB0cjsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cjsKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgVmVjdG9yOwoKICAgIGNs
YXNzIEF0b21pY1N0cmluZzsKICAgIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7CiAgICBjbGFzcyBD
U3RyaW5nOwogICAgY2xhc3MgRGVjb2RlcjsKICAgIGNsYXNzIEVuY29kZXI7CiAgICBjbGFzcyBT
dHJpbmc7CiAgICBjbGFzcyBTdHJpbmdCdWZmZXI7CiAgICBjbGFzcyBTdHJpbmdCdWlsZGVyOwog
ICAgY2xhc3MgU3RyaW5nSW1wbDsKfQoKdXNpbmcgV1RGOjpMaXN0UmVmUHRyOwp1c2luZyBXVEY6
Ok93bkFycmF5UHRyOwp1c2luZyBXVEY6Ok93blB0cjsKdXNpbmcgV1RGOjpQYXNzT3duQXJyYXlQ
dHI7CnVzaW5nIFdURjo6UGFzc093blB0cjsKdXNpbmcgV1RGOjpQYXNzUmVmUHRyOwp1c2luZyBX
VEY6OlJlZlB0cjsKdXNpbmcgV1RGOjpWZWN0b3I7Cgp1c2luZyBXVEY6OkF0b21pY1N0cmluZzsK
dXNpbmcgV1RGOjpBdG9taWNTdHJpbmdJbXBsOwp1c2luZyBXVEY6OkNTdHJpbmc7CnVzaW5nIFdU
Rjo6RW5jb2RlcjsKdXNpbmcgV1RGOjpEZWNvZGVyOwp1c2luZyBXVEY6OlN0cmluZzsKdXNpbmcg
V1RGOjpTdHJpbmdCdWZmZXI7CnVzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsKdXNpbmcgV1RGOjpT
dHJpbmdJbXBsOwojIDI1ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlv
QnV0dG9ucy5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNo
TWFwLmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoTWFw
LmgiCiNkZWZpbmUgV1RGX0hhc2hNYXBfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9IYXNoVGFibGUuaCIgMQojIDIzICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0hhc2hUYWJsZS5oIgojZGVmaW5lIFdURl9IYXNoVGFibGVfaCAKCgojIDEgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRyYWl0cy5oIiAxCiMgMjIgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRyYWl0cy5oIgojZGVmaW5lIFdU
Rl9IYXNoVHJhaXRzX2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
SGFzaEZ1bmN0aW9ucy5oIiAxCiMgMjIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvSGFzaEZ1bmN0aW9ucy5oIgojZGVmaW5lIFdURl9IYXNoRnVuY3Rpb25zX2ggCgoKCgpuYW1l
c3BhY2UgV1RGIHsKCiAgICB0ZW1wbGF0ZTxzaXplX3Qgc2l6ZT4gc3RydWN0IEludFR5cGVzOwog
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW50VHlwZXM8MT4geyB0eXBlZGVmIGludDhfdCBTaWduZWRU
eXBlOyB0eXBlZGVmIHVpbnQ4X3QgVW5zaWduZWRUeXBlOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSW50VHlwZXM8Mj4geyB0eXBlZGVmIGludDE2X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1aW50
MTZfdCBVbnNpZ25lZFR5cGU7IH07CiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBlczw0PiB7
IHR5cGVkZWYgaW50MzJfdCBTaWduZWRUeXBlOyB0eXBlZGVmIHVpbnQzMl90IFVuc2lnbmVkVHlw
ZTsgfTsKICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDg+IHsgdHlwZWRlZiBpbnQ2NF90
IFNpZ25lZFR5cGU7IHR5cGVkZWYgdWludDY0X3QgVW5zaWduZWRUeXBlOyB9OwoKCgoKICAgIGlu
bGluZSB1bnNpZ25lZCBpbnRIYXNoKHVpbnQ4X3Qga2V5OCkKICAgIHsKICAgICAgICB1bnNpZ25l
ZCBrZXkgPSBrZXk4OwogICAgICAgIGtleSArPSB+KGtleSA8PCAxNSk7CiAgICAgICAga2V5IF49
IChrZXkgPj4gMTApOwogICAgICAgIGtleSArPSAoa2V5IDw8IDMpOwogICAgICAgIGtleSBePSAo
a2V5ID4+IDYpOwogICAgICAgIGtleSArPSB+KGtleSA8PCAxMSk7CiAgICAgICAga2V5IF49IChr
ZXkgPj4gMTYpOwogICAgICAgIHJldHVybiBrZXk7CiAgICB9CgoKICAgIGlubGluZSB1bnNpZ25l
ZCBpbnRIYXNoKHVpbnQxNl90IGtleTE2KQogICAgewogICAgICAgIHVuc2lnbmVkIGtleSA9IGtl
eTE2OwogICAgICAgIGtleSArPSB+KGtleSA8PCAxNSk7CiAgICAgICAga2V5IF49IChrZXkgPj4g
MTApOwogICAgICAgIGtleSArPSAoa2V5IDw8IDMpOwogICAgICAgIGtleSBePSAoa2V5ID4+IDYp
OwogICAgICAgIGtleSArPSB+KGtleSA8PCAxMSk7CiAgICAgICAga2V5IF49IChrZXkgPj4gMTYp
OwogICAgICAgIHJldHVybiBrZXk7CiAgICB9CgoKICAgIGlubGluZSB1bnNpZ25lZCBpbnRIYXNo
KHVpbnQzMl90IGtleSkKICAgIHsKICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTUpOwogICAgICAg
IGtleSBePSAoa2V5ID4+IDEwKTsKICAgICAgICBrZXkgKz0gKGtleSA8PCAzKTsKICAgICAgICBr
ZXkgXj0gKGtleSA+PiA2KTsKICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTEpOwogICAgICAgIGtl
eSBePSAoa2V5ID4+IDE2KTsKICAgICAgICByZXR1cm4ga2V5OwogICAgfQoKCiAgICBpbmxpbmUg
dW5zaWduZWQgaW50SGFzaCh1aW50NjRfdCBrZXkpCiAgICB7CiAgICAgICAga2V5ICs9IH4oa2V5
IDw8IDMyKTsKICAgICAgICBrZXkgXj0gKGtleSA+PiAyMik7CiAgICAgICAga2V5ICs9IH4oa2V5
IDw8IDEzKTsKICAgICAgICBrZXkgXj0gKGtleSA+PiA4KTsKICAgICAgICBrZXkgKz0gKGtleSA8
PCAzKTsKICAgICAgICBrZXkgXj0gKGtleSA+PiAxNSk7CiAgICAgICAga2V5ICs9IH4oa2V5IDw8
IDI3KTsKICAgICAgICBrZXkgXj0gKGtleSA+PiAzMSk7CiAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihrZXkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBJbnRIYXNoIHsKICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChUIGtleSkgeyByZXR1cm4g
aW50SGFzaChzdGF0aWNfY2FzdDx0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoVCk+OjpVbnNpZ25l
ZFR5cGU+KGtleSkpOyB9CiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoVCBhLCBUIGIpIHsgcmV0
dXJuIGEgPT0gYjsgfQogICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gdHJ1ZTsKICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IEZsb2F0SGFzaCB7CiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goVCBrZXkpCiAgICAg
ICAgewogICAgICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBUIGtleTsKICAgICAgICAg
ICAgICAgIHR5cGVuYW1lIEludFR5cGVzPHNpemVvZihUKT46OlVuc2lnbmVkVHlwZSBiaXRzOwog
ICAgICAgICAgICB9IHU7CiAgICAgICAgICAgIHUua2V5ID0ga2V5OwogICAgICAgICAgICByZXR1
cm4gaW50SGFzaCh1LmJpdHMpOwogICAgICAgIH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChU
IGEsIFQgYikgeyByZXR1cm4gYSA9PSBiOyB9CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwogICAgfTsKCgoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBQdHJIYXNoIHsKICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChUIGtleSkKICAgICAgICB7CgoKCgogICAgICAgICAgICByZXR1cm4gSW50SGFzaDx1aW50cHRy
X3Q+OjpoYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihrZXkpKTsKCgoKICAgICAgICB9
CiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoVCBhLCBUIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQog
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsKICAgIH07CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgUHRySGFzaDxSZWZQ
dHI8UD4gPiA6IFB0ckhhc2g8UCo+IHsKICAgICAgICB1c2luZyBQdHJIYXNoPFAqPjo6aGFzaDsK
ICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZWZQdHI8UD4mIGtleSkgeyByZXR1
cm4gaGFzaChrZXkuZ2V0KCkpOyB9CiAgICAgICAgdXNpbmcgUHRySGFzaDxQKj46OmVxdWFsOwog
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZlB0cjxQPiYgYSwgY29uc3QgUmVmUHRy
PFA+JiBiKSB7IHJldHVybiBhID09IGI7IH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChQKiBh
LCBjb25zdCBSZWZQdHI8UD4mIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQogICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFJlZlB0cjxQPiYgYSwgUCogYikgeyByZXR1cm4gYSA9PSBiOyB9CiAg
ICB9OwoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBQYWlySGFzaCB7CiAgICAg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qgc3RkOjpwYWlyPFQsIFU+JiBwKQogICAgICAg
IHsKICAgICAgICAgICAgcmV0dXJuIGludEhhc2goKHN0YXRpY19jYXN0PHVpbnQ2NF90PihEZWZh
dWx0SGFzaDxUPjo6SGFzaDo6aGFzaChwLmZpcnN0KSkgPDwgMzIgfCBEZWZhdWx0SGFzaDxVPjo6
SGFzaDo6aGFzaChwLnNlY29uZCkpKTsKICAgICAgICB9CiAgICAgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3Qgc3RkOjpwYWlyPFQsIFU+JiBhLCBjb25zdCBzdGQ6OnBhaXI8VCwgVT4mIGIpCiAg
ICAgICAgewogICAgICAgICAgICByZXR1cm4gRGVmYXVsdEhhc2g8VD46Okhhc2g6OmVxdWFsKGEu
Zmlyc3QsIGIuZmlyc3QpICYmIERlZmF1bHRIYXNoPFU+OjpIYXNoOjplcXVhbChhLnNlY29uZCwg
Yi5zZWNvbmQpOwogICAgICAgIH0KICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IERlZmF1bHRIYXNoPFQ+OjpIYXNoOjpzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiBEZWZhdWx0SGFzaDxVPjo6SGFzaDo6c2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQ7CiAgICB9OwoKCgogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8c2hvcnQ+IHsgdHlwZWRlZiBJbnRIYXNoPHVuc2lnbmVkPiBIYXNoOyB9OwogICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8dW5zaWduZWQgc2hvcnQ+IHsgdHlwZWRlZiBJbnRI
YXNoPHVuc2lnbmVkPiBIYXNoOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
aW50PiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZD4gSGFzaDsgfTsKICAgIHRlbXBsYXRlPD4g
c3RydWN0IERlZmF1bHRIYXNoPHVuc2lnbmVkPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZD4g
SGFzaDsgfTsKICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPGxvbmc+IHsgdHlwZWRl
ZiBJbnRIYXNoPHVuc2lnbmVkIGxvbmc+IEhhc2g7IH07CiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZCBsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25n
PiBIYXNoOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8bG9uZyBsb25nPiB7
IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25nIGxvbmc+IEhhc2g7IH07CiAgICB0ZW1wbGF0
ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZCBsb25nIGxvbmc+IHsgdHlwZWRlZiBJbnRI
YXNoPHVuc2lnbmVkIGxvbmcgbG9uZz4gSGFzaDsgfTsKCgogICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g8d2NoYXJfdD4geyB0eXBlZGVmIEludEhhc2g8d2NoYXJfdD4gSGFzaDsgfTsK
CgogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8ZmxvYXQ+IHsgdHlwZWRlZiBGbG9h
dEhhc2g8ZmxvYXQ+IEhhc2g7IH07CiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxk
b3VibGU+IHsgdHlwZWRlZiBGbG9hdEhhc2g8ZG91YmxlPiBIYXNoOyB9OwoKCgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgUD4gc3RydWN0IERlZmF1bHRIYXNoPFAqPiB7IHR5cGVkZWYgUHRySGFzaDxQ
Kj4gSGFzaDsgfTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBEZWZhdWx0SGFzaDxS
ZWZQdHI8UD4gPiB7IHR5cGVkZWYgUHRySGFzaDxSZWZQdHI8UD4gPiBIYXNoOyB9OwoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBh
aXI8VCwgVT4gPiB7IHR5cGVkZWYgUGFpckhhc2g8VCwgVT4gSGFzaDsgfTsKCn0KCnVzaW5nIFdU
Rjo6RGVmYXVsdEhhc2g7CnVzaW5nIFdURjo6SW50SGFzaDsKdXNpbmcgV1RGOjpQdHJIYXNoOwoj
IDI1ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUcmFpdHMuaCIgMgoK
CgoKbmFtZXNwYWNlIFdURiB7CgogICAgdXNpbmcgc3RkOjpwYWlyOwogICAgdXNpbmcgc3RkOjpt
YWtlX3BhaXI7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cgog
ICAgdGVtcGxhdGU8Ym9vbCBpc0ludGVnZXIsIHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFz
aFRyYWl0c0Jhc2U7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEdlbmVyaWNIYXNo
VHJhaXRzQmFzZTxmYWxzZSwgVD4gewogICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSBmYWxzZTsKICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uID0gdHJ1ZTsKICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1pbmltdW1UYWJsZVNpemUgPSA2
NDsKICAgIH07CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRy
YWl0c0Jhc2U8dHJ1ZSwgVD4gOiBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8ZmFsc2UsIFQ+IHsKICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiAgICAgICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFQmIHNsb3QpIHsgc2xvdCA9IHN0YXRpY19jYXN0
PFQ+KC0xKTsgfQogICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFQgdmFsdWUpIHsg
cmV0dXJuIHZhbHVlID09IHN0YXRpY19jYXN0PFQ+KC0xKTsgfQogICAgfTsKCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0
c0Jhc2U8SXNJbnRlZ2VyPFQ+Ojp2YWx1ZSwgVD4gewogICAgICAgIHR5cGVkZWYgVCBUcmFpdFR5
cGU7CiAgICAgICAgc3RhdGljIFQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFQoKTsgfQogICAgfTsK
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNo
VHJhaXRzPFQ+IHsgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRmxvYXRIYXNo
VHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8VD4gewogICAgICAgIHN0YXRpYyBjb25zdCBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKICAgICAgICBzdGF0aWMgVCBlbXB0eVZhbHVlKCkg
eyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKTsgfQogICAgICAgIHN0
YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUJiBzbG90KSB7IHNsb3QgPSAtc3RkOjpu
dW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKTsgfQogICAgICAgIHN0YXRpYyBib29sIGlzRGVs
ZXRlZFZhbHVlKFQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IC1zdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjppbmZpbml0eSgpOyB9CiAgICB9OwoKICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFp
dHM8ZmxvYXQ+IDogRmxvYXRIYXNoVHJhaXRzPGZsb2F0PiB7IH07CiAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBIYXNoVHJhaXRzPGRvdWJsZT4gOiBGbG9hdEhhc2hUcmFpdHM8ZG91YmxlPiB7IH07CgoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRzPFQ+IHsKICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBl
bXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbiA9IGZhbHNlOwogICAgICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKTsgfQogICAgICAgIHN0YXRpYyB2b2lkIGNv
bnN0cnVjdERlbGV0ZWRWYWx1ZShUJiBzbG90KSB7IHNsb3QgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjptYXgoKSAtIDE7IH0KICAgICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShUIHZh
bHVlKSB7IHJldHVybiB2YWx1ZSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSAtIDE7
IH0KICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8UCo+
IDogR2VuZXJpY0hhc2hUcmFpdHM8UCo+IHsKICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0
eVZhbHVlSXNaZXJvID0gdHJ1ZTsKICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3Ry
dWN0aW9uID0gZmFsc2U7CiAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVl
KFAqJiBzbG90KSB7IHNsb3QgPSByZWludGVycHJldF9jYXN0PFAqPigtMSk7IH0KICAgICAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gcmVp
bnRlcnByZXRfY2FzdDxQKj4oLTEpOyB9CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBTaW1wbGVDbGFzc0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7CiAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7CiAgICAgICAg
c3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFQmIHNsb3QpIHsgbmV3ICgmc2xvdCkg
VChIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CiAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoY29uc3QgVCYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCk7IH0KICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFp
dHM8UmVmUHRyPFA+ID4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8UmVmUHRyPFA+ID4geyB9OwoK
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RUcmFpdHNBcmcsIHR5cGVuYW1lIFNlY29uZFRy
YWl0c0FyZz4KICAgIHN0cnVjdCBQYWlySGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRzPHBh
aXI8dHlwZW5hbWUgRmlyc3RUcmFpdHNBcmc6OlRyYWl0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHJh
aXRzQXJnOjpUcmFpdFR5cGU+ID4gewogICAgICAgIHR5cGVkZWYgRmlyc3RUcmFpdHNBcmcgRmly
c3RUcmFpdHM7CiAgICAgICAgdHlwZWRlZiBTZWNvbmRUcmFpdHNBcmcgU2Vjb25kVHJhaXRzOwog
ICAgICAgIHR5cGVkZWYgcGFpcjx0eXBlbmFtZSBGaXJzdFRyYWl0czo6VHJhaXRUeXBlLCB0eXBl
bmFtZSBTZWNvbmRUcmFpdHM6OlRyYWl0VHlwZT4gVHJhaXRUeXBlOwoKICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gRmlyc3RUcmFpdHM6OmVtcHR5VmFsdWVJc1pl
cm8gJiYgU2Vjb25kVHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvOwogICAgICAgIHN0YXRpYyBUcmFp
dFR5cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIG1ha2VfcGFpcihGaXJzdFRyYWl0czo6ZW1wdHlW
YWx1ZSgpLCBTZWNvbmRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7IH0KCiAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IEZpcnN0VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9u
IHx8IFNlY29uZFRyYWl0czo6bmVlZHNEZXN0cnVjdGlvbjsKCiAgICAgICAgc3RhdGljIGNvbnN0
IGludCBtaW5pbXVtVGFibGVTaXplID0gRmlyc3RUcmFpdHM6Om1pbmltdW1UYWJsZVNpemU7Cgog
ICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUcmFpdFR5cGUmIHNsb3Qp
IHsgRmlyc3RUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90LmZpcnN0KTsgfQogICAg
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFRyYWl0VHlwZSYgdmFsdWUpIHsg
cmV0dXJuIEZpcnN0VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2YWx1ZS5maXJzdCk7IH0KICAgIH07
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIFNlY29uZD4KICAgIHN0cnVj
dCBIYXNoVHJhaXRzPHBhaXI8Rmlyc3QsIFNlY29uZD4gPiA6IHB1YmxpYyBQYWlySGFzaFRyYWl0
czxIYXNoVHJhaXRzPEZpcnN0PiwgSGFzaFRyYWl0czxTZWNvbmQ+ID4geyB9OwoKfQoKdXNpbmcg
V1RGOjpIYXNoVHJhaXRzOwp1c2luZyBXVEY6OlBhaXJIYXNoVHJhaXRzOwojIDI3ICIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oIiAyCiMgMSAiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9WYWx1ZUNoZWNrLmgiIDEKIyAyNyAiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9WYWx1ZUNoZWNrLmgiCiNkZWZpbmUgVmFsdWVDaGVj
a19oIAoKCgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWYWx1
ZUNoZWNrIHsKICAgIHR5cGVkZWYgVCBUcmFpdFR5cGU7CiAgICBzdGF0aWMgdm9pZCBjaGVja0Nv
bnNpc3RlbmN5KGNvbnN0IFQmKSB7IH0KfTsKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3Qg
VmFsdWVDaGVjazxQKj4gewogICAgdHlwZWRlZiBQKiBUcmFpdFR5cGU7CiAgICBzdGF0aWMgdm9p
ZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IFAqIHApCiAgICB7CiAgICAgICAgaWYgKCFwKQogICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgZG8gaWYgKCEoZmFzdE1hbGxvY1NpemUocCkpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvVmFsdWVDaGVjay5oIiwgNDUsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJmYXN0TWFsbG9jU2l6
ZShwKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhi
YmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgVmFsdWVDaGVjazxQPjo6Y2hlY2tDb25zaXN0ZW5jeSgqcCk7CiAgICB9Cn07
CgoKfQojIDI4ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5o
IiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgi
IDEKIyAyOSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCIg
MgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgiIDEK
IyA2MCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaCIKI2Rl
ZmluZSBUaHJlYWRpbmdfaCAKCgoKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQXRvbWljcy5oIiAxCiMgNjAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvQXRvbWljcy5oIgojZGVmaW5lIEF0b21pY3NfaCAKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
bGlia2Vybi9PU0F0b21pYy5oIiAxIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvbGlia2Vybi9PU0F0
b21pYy5oIiAzIDQKI2RlZmluZSBfT1NBVE9NSUNfSF8gCiMgNjMgIi91c3IvaW5jbHVkZS9saWJr
ZXJuL09TQXRvbWljLmgiIDMgNApleHRlcm4gIkMiIHsKCgoKCmludDMyX3QgT1NBdG9taWNBZGQz
MiggaW50MzJfdCBfX3RoZUFtb3VudCwgdm9sYXRpbGUgaW50MzJfdCAqX190aGVWYWx1ZSApOwpp
bnQzMl90IE9TQXRvbWljQWRkMzJCYXJyaWVyKCBpbnQzMl90IF9fdGhlQW1vdW50LCB2b2xhdGls
ZSBpbnQzMl90ICpfX3RoZVZhbHVlICk7CgppbmxpbmUgc3RhdGljCmludDMyX3QgT1NBdG9taWNJ
bmNyZW1lbnQzMiggdm9sYXRpbGUgaW50MzJfdCAqX190aGVWYWx1ZSApCiAgICAgICAgICAgIHsg
cmV0dXJuIE9TQXRvbWljQWRkMzIoIDEsIF9fdGhlVmFsdWUpOyB9CmlubGluZSBzdGF0aWMKaW50
MzJfdCBPU0F0b21pY0luY3JlbWVudDMyQmFycmllciggdm9sYXRpbGUgaW50MzJfdCAqX190aGVW
YWx1ZSApCiAgICAgICAgICAgIHsgcmV0dXJuIE9TQXRvbWljQWRkMzJCYXJyaWVyKCAxLCBfX3Ro
ZVZhbHVlKTsgfQoKaW5saW5lIHN0YXRpYwppbnQzMl90IE9TQXRvbWljRGVjcmVtZW50MzIoIHZv
bGF0aWxlIGludDMyX3QgKl9fdGhlVmFsdWUgKQogICAgICAgICAgICB7IHJldHVybiBPU0F0b21p
Y0FkZDMyKCAtMSwgX190aGVWYWx1ZSk7IH0KaW5saW5lIHN0YXRpYwppbnQzMl90IE9TQXRvbWlj
RGVjcmVtZW50MzJCYXJyaWVyKCB2b2xhdGlsZSBpbnQzMl90ICpfX3RoZVZhbHVlICkKICAgICAg
ICAgICAgeyByZXR1cm4gT1NBdG9taWNBZGQzMkJhcnJpZXIoIC0xLCBfX3RoZVZhbHVlKTsgfQoK
CgppbnQ2NF90IE9TQXRvbWljQWRkNjQoIGludDY0X3QgX190aGVBbW91bnQsIHZvbGF0aWxlIGlu
dDY0X3QgKl9fdGhlVmFsdWUgKTsKaW50NjRfdCBPU0F0b21pY0FkZDY0QmFycmllciggaW50NjRf
dCBfX3RoZUFtb3VudCwgdm9sYXRpbGUgaW50NjRfdCAqX190aGVWYWx1ZSApOwoKaW5saW5lIHN0
YXRpYwppbnQ2NF90IE9TQXRvbWljSW5jcmVtZW50NjQoIHZvbGF0aWxlIGludDY0X3QgKl9fdGhl
VmFsdWUgKQogICAgICAgICAgICB7IHJldHVybiBPU0F0b21pY0FkZDY0KCAxLCBfX3RoZVZhbHVl
KTsgfQppbmxpbmUgc3RhdGljCmludDY0X3QgT1NBdG9taWNJbmNyZW1lbnQ2NEJhcnJpZXIoIHZv
bGF0aWxlIGludDY0X3QgKl9fdGhlVmFsdWUgKQogICAgICAgICAgICB7IHJldHVybiBPU0F0b21p
Y0FkZDY0QmFycmllciggMSwgX190aGVWYWx1ZSk7IH0KCmlubGluZSBzdGF0aWMKaW50NjRfdCBP
U0F0b21pY0RlY3JlbWVudDY0KCB2b2xhdGlsZSBpbnQ2NF90ICpfX3RoZVZhbHVlICkKICAgICAg
ICAgICAgeyByZXR1cm4gT1NBdG9taWNBZGQ2NCggLTEsIF9fdGhlVmFsdWUpOyB9CmlubGluZSBz
dGF0aWMKaW50NjRfdCBPU0F0b21pY0RlY3JlbWVudDY0QmFycmllciggdm9sYXRpbGUgaW50NjRf
dCAqX190aGVWYWx1ZSApCiAgICAgICAgICAgIHsgcmV0dXJuIE9TQXRvbWljQWRkNjRCYXJyaWVy
KCAtMSwgX190aGVWYWx1ZSk7IH0KIyAxMTMgIi91c3IvaW5jbHVkZS9saWJrZXJuL09TQXRvbWlj
LmgiIDMgNAppbnQzMl90IE9TQXRvbWljT3IzMiggdWludDMyX3QgX190aGVNYXNrLCB2b2xhdGls
ZSB1aW50MzJfdCAqX190aGVWYWx1ZSApOwppbnQzMl90IE9TQXRvbWljT3IzMkJhcnJpZXIoIHVp
bnQzMl90IF9fdGhlTWFzaywgdm9sYXRpbGUgdWludDMyX3QgKl9fdGhlVmFsdWUgKTsKaW50MzJf
dCBPU0F0b21pY09yMzJPcmlnKCB1aW50MzJfdCBfX3RoZU1hc2ssIHZvbGF0aWxlIHVpbnQzMl90
ICpfX3RoZVZhbHVlICk7CmludDMyX3QgT1NBdG9taWNPcjMyT3JpZ0JhcnJpZXIoIHVpbnQzMl90
IF9fdGhlTWFzaywgdm9sYXRpbGUgdWludDMyX3QgKl9fdGhlVmFsdWUgKTsKCmludDMyX3QgT1NB
dG9taWNBbmQzMiggdWludDMyX3QgX190aGVNYXNrLCB2b2xhdGlsZSB1aW50MzJfdCAqX190aGVW
YWx1ZSApOwppbnQzMl90IE9TQXRvbWljQW5kMzJCYXJyaWVyKCB1aW50MzJfdCBfX3RoZU1hc2ss
IHZvbGF0aWxlIHVpbnQzMl90ICpfX3RoZVZhbHVlICk7CmludDMyX3QgT1NBdG9taWNBbmQzMk9y
aWcoIHVpbnQzMl90IF9fdGhlTWFzaywgdm9sYXRpbGUgdWludDMyX3QgKl9fdGhlVmFsdWUgKTsK
aW50MzJfdCBPU0F0b21pY0FuZDMyT3JpZ0JhcnJpZXIoIHVpbnQzMl90IF9fdGhlTWFzaywgdm9s
YXRpbGUgdWludDMyX3QgKl9fdGhlVmFsdWUgKTsKCmludDMyX3QgT1NBdG9taWNYb3IzMiggdWlu
dDMyX3QgX190aGVNYXNrLCB2b2xhdGlsZSB1aW50MzJfdCAqX190aGVWYWx1ZSApOwppbnQzMl90
IE9TQXRvbWljWG9yMzJCYXJyaWVyKCB1aW50MzJfdCBfX3RoZU1hc2ssIHZvbGF0aWxlIHVpbnQz
Ml90ICpfX3RoZVZhbHVlICk7CmludDMyX3QgT1NBdG9taWNYb3IzMk9yaWcoIHVpbnQzMl90IF9f
dGhlTWFzaywgdm9sYXRpbGUgdWludDMyX3QgKl9fdGhlVmFsdWUgKTsKaW50MzJfdCBPU0F0b21p
Y1hvcjMyT3JpZ0JhcnJpZXIoIHVpbnQzMl90IF9fdGhlTWFzaywgdm9sYXRpbGUgdWludDMyX3Qg
Kl9fdGhlVmFsdWUgKTsKCgoKCgpib29sIE9TQXRvbWljQ29tcGFyZUFuZFN3YXAzMiggaW50MzJf
dCBfX29sZFZhbHVlLCBpbnQzMl90IF9fbmV3VmFsdWUsIHZvbGF0aWxlIGludDMyX3QgKl9fdGhl
VmFsdWUgKTsKYm9vbCBPU0F0b21pY0NvbXBhcmVBbmRTd2FwMzJCYXJyaWVyKCBpbnQzMl90IF9f
b2xkVmFsdWUsIGludDMyX3QgX19uZXdWYWx1ZSwgdm9sYXRpbGUgaW50MzJfdCAqX190aGVWYWx1
ZSApOwpib29sIE9TQXRvbWljQ29tcGFyZUFuZFN3YXBQdHIoIHZvaWQgKl9fb2xkVmFsdWUsIHZv
aWQgKl9fbmV3VmFsdWUsIHZvaWQgKiB2b2xhdGlsZSAqX190aGVWYWx1ZSApOwpib29sIE9TQXRv
bWljQ29tcGFyZUFuZFN3YXBQdHJCYXJyaWVyKCB2b2lkICpfX29sZFZhbHVlLCB2b2lkICpfX25l
d1ZhbHVlLCB2b2lkICogdm9sYXRpbGUgKl9fdGhlVmFsdWUgKTsKYm9vbCBPU0F0b21pY0NvbXBh
cmVBbmRTd2FwSW50KCBpbnQgX19vbGRWYWx1ZSwgaW50IF9fbmV3VmFsdWUsIHZvbGF0aWxlIGlu
dCAqX190aGVWYWx1ZSApOwpib29sIE9TQXRvbWljQ29tcGFyZUFuZFN3YXBJbnRCYXJyaWVyKCBp
bnQgX19vbGRWYWx1ZSwgaW50IF9fbmV3VmFsdWUsIHZvbGF0aWxlIGludCAqX190aGVWYWx1ZSAp
Owpib29sIE9TQXRvbWljQ29tcGFyZUFuZFN3YXBMb25nKCBsb25nIF9fb2xkVmFsdWUsIGxvbmcg
X19uZXdWYWx1ZSwgdm9sYXRpbGUgbG9uZyAqX190aGVWYWx1ZSApOwpib29sIE9TQXRvbWljQ29t
cGFyZUFuZFN3YXBMb25nQmFycmllciggbG9uZyBfX29sZFZhbHVlLCBsb25nIF9fbmV3VmFsdWUs
IHZvbGF0aWxlIGxvbmcgKl9fdGhlVmFsdWUgKTsKCgoKYm9vbCBPU0F0b21pY0NvbXBhcmVBbmRT
d2FwNjQoIGludDY0X3QgX19vbGRWYWx1ZSwgaW50NjRfdCBfX25ld1ZhbHVlLCB2b2xhdGlsZSBp
bnQ2NF90ICpfX3RoZVZhbHVlICk7CmJvb2wgT1NBdG9taWNDb21wYXJlQW5kU3dhcDY0QmFycmll
ciggaW50NjRfdCBfX29sZFZhbHVlLCBpbnQ2NF90IF9fbmV3VmFsdWUsIHZvbGF0aWxlIGludDY0
X3QgKl9fdGhlVmFsdWUgKTsKCgoKCgoKCmJvb2wgT1NBdG9taWNUZXN0QW5kU2V0KCB1aW50MzJf
dCBfX24sIHZvbGF0aWxlIHZvaWQgKl9fdGhlQWRkcmVzcyApOwpib29sIE9TQXRvbWljVGVzdEFu
ZFNldEJhcnJpZXIoIHVpbnQzMl90IF9fbiwgdm9sYXRpbGUgdm9pZCAqX190aGVBZGRyZXNzICk7
CmJvb2wgT1NBdG9taWNUZXN0QW5kQ2xlYXIoIHVpbnQzMl90IF9fbiwgdm9sYXRpbGUgdm9pZCAq
X190aGVBZGRyZXNzICk7CmJvb2wgT1NBdG9taWNUZXN0QW5kQ2xlYXJCYXJyaWVyKCB1aW50MzJf
dCBfX24sIHZvbGF0aWxlIHZvaWQgKl9fdGhlQWRkcmVzcyApOwojIDE2NCAiL3Vzci9pbmNsdWRl
L2xpYmtlcm4vT1NBdG9taWMuaCIgMyA0CiNkZWZpbmUgT1NfU1BJTkxPQ0tfSU5JVCAwCgp0eXBl
ZGVmIGludDMyX3QgT1NTcGluTG9jazsKCmJvb2wgT1NTcGluTG9ja1RyeSggdm9sYXRpbGUgT1NT
cGluTG9jayAqX19sb2NrICk7CnZvaWQgT1NTcGluTG9ja0xvY2soIHZvbGF0aWxlIE9TU3Bpbkxv
Y2sgKl9fbG9jayApOwp2b2lkIE9TU3BpbkxvY2tVbmxvY2soIHZvbGF0aWxlIE9TU3BpbkxvY2sg
Kl9fbG9jayApOwojIDE4MiAiL3Vzci9pbmNsdWRlL2xpYmtlcm4vT1NBdG9taWMuaCIgMyA0CnR5
cGVkZWYgdm9sYXRpbGUgc3RydWN0IHsKIHZvaWQgKm9wYXF1ZTE7CiBsb25nIG9wYXF1ZTI7Cn0g
T1NRdWV1ZUhlYWQgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDE2KSkpOwojIDE5NiAiL3Vzci9p
bmNsdWRlL2xpYmtlcm4vT1NBdG9taWMuaCIgMyA0CiNkZWZpbmUgT1NfQVRPTUlDX1FVRVVFX0lO
SVQgeyBOVUxMLCAwIH0KCnZvaWQgT1NBdG9taWNFbnF1ZXVlKCBPU1F1ZXVlSGVhZCAqX19saXN0
LCB2b2lkICpfX25ldywgc2l6ZV90IF9fb2Zmc2V0KTsKdm9pZCogT1NBdG9taWNEZXF1ZXVlKCBP
U1F1ZXVlSGVhZCAqX19saXN0LCBzaXplX3QgX19vZmZzZXQpOwoKCgoKdm9pZCBPU01lbW9yeUJh
cnJpZXIoIHZvaWQgKTsKCgp9CiMgNjggIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvQXRvbWljcy5oIiAyCiMgODAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
QXRvbWljcy5oIgpuYW1lc3BhY2UgV1RGIHsKIyA5NCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9BdG9taWNzLmgiCiNkZWZpbmUgV1RGX1VTRV9MT0NLRlJFRV9USFJFQURTQUZF
UkVGQ09VTlRFRCAxCgppbmxpbmUgaW50IGF0b21pY0luY3JlbWVudChpbnQgdm9sYXRpbGUqIGFk
ZGVuZCkgeyByZXR1cm4gT1NBdG9taWNJbmNyZW1lbnQzMkJhcnJpZXIoY29uc3RfY2FzdDxpbnQq
PihhZGRlbmQpKTsgfQppbmxpbmUgaW50IGF0b21pY0RlY3JlbWVudChpbnQgdm9sYXRpbGUqIGFk
ZGVuZCkgeyByZXR1cm4gT1NBdG9taWNEZWNyZW1lbnQzMkJhcnJpZXIoY29uc3RfY2FzdDxpbnQq
PihhZGRlbmQpKTsgfQojIDExOSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9B
dG9taWNzLmgiCn0KCgp1c2luZyBXVEY6OmF0b21pY0RlY3JlbWVudDsKdXNpbmcgV1RGOjphdG9t
aWNJbmNyZW1lbnQ7CiMgNjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0xvY2tl
ci5oIiAxCiMgMjkgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTG9ja2VyLmgi
CiNkZWZpbmUgTG9ja2VyX2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvTm9uY29weWFibGUuaCIgMQojIDIyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL05vbmNvcHlhYmxlLmgiCiNkZWZpbmUgV1RGX05vbmNvcHlhYmxlX2ggCiMgMzggIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTm9uY29weWFibGUuaCIKI2RlZmluZSBXVEZf
TUFLRV9OT05DT1BZQUJMRShDbGFzc05hbWUpIHByaXZhdGU6IENsYXNzTmFtZShjb25zdCBDbGFz
c05hbWUmKTsgQ2xhc3NOYW1lJiBvcGVyYXRvcj0oY29uc3QgQ2xhc3NOYW1lJikKIyAzMiAiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Mb2NrZXIuaCIgMgoKbmFtZXNwYWNlIFdU
RiB7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgTG9ja2VyIHsKICAgIHByaXZhdGU6IExv
Y2tlcihjb25zdCBMb2NrZXImKTsgTG9ja2VyJiBvcGVyYXRvcj0oY29uc3QgTG9ja2VyJik7CnB1
YmxpYzoKICAgIExvY2tlcihUJiBsb2NrYWJsZSkgOiBtX2xvY2thYmxlKGxvY2thYmxlKSB7IG1f
bG9ja2FibGUubG9jaygpOyB9CiAgICB+TG9ja2VyKCkgeyBtX2xvY2thYmxlLnVubG9jaygpOyB9
CnByaXZhdGU6CiAgICBUJiBtX2xvY2thYmxlOwp9OwoKfQoKdXNpbmcgV1RGOjpMb2NrZXI7CiMg
NjggIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgiIDIKCiMg
MSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oIiAxCiMgNjAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaCIKI2RlZmluZSBUaHJlYWRTYWZlUmVmQ291bnRlZF9oIAoKCgoKIyAxICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0R5bmFtaWNBbm5vdGF0aW9ucy5oIiAx
CiMgMjggIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRHluYW1pY0Fubm90YXRp
b25zLmgiCiNkZWZpbmUgV1RGX0R5bmFtaWNBbm5vdGF0aW9uc19oIAojIDkwICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0R5bmFtaWNBbm5vdGF0aW9ucy5oIgojZGVmaW5lIFdU
Rl9BTk5PVEFURV9CRU5JR05fUkFDRV9TSVpFRChhZGRyZXNzLHNpemUsZGVzY3JpcHRpb24pIAoj
ZGVmaW5lIFdURl9BTk5PVEFURV9CRU5JR05fUkFDRShwb2ludGVyLGRlc2NyaXB0aW9uKSAKI2Rl
ZmluZSBXVEZfQU5OT1RBVEVfSEFQUEVOU19CRUZPUkUoYWRkcmVzcykgCiNkZWZpbmUgV1RGX0FO
Tk9UQVRFX0hBUFBFTlNfQUZURVIoYWRkcmVzcykgCiMgNjYgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCIgMgojIDEgIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIiAxCiMgMzIgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIgoj
ZGVmaW5lIFRocmVhZGluZ1ByaW1pdGl2ZXNfaCAKCgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9GYXN0QWxsb2NCYXNlLmgiIDEKIyAzOCAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgiIDIKIyA1MiAiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgiCiMgMSAi
L29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiIDEKIyA0MyAiL29wdC9sb2NhbC9p
bmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiCiNkZWZpbmUgUUdMT0JBTF9IIAoKCgojZGVmaW5lIFFU
X1ZFUlNJT05fU1RSICI0LjcuNCIKCgoKI2RlZmluZSBRVF9WRVJTSU9OIDB4MDQwNzA0CgoKCiNk
ZWZpbmUgUVRfVkVSU0lPTl9DSEVDSyhtYWpvcixtaW5vcixwYXRjaCkgKChtYWpvcjw8MTYpfCht
aW5vcjw8OCl8KHBhdGNoKSkKCiNkZWZpbmUgUVRfUEFDS0FHRURBVEVfU1RSICIyMDExLTA4LTIz
IgoKI2RlZmluZSBRVF9QQUNLQUdFX1RBRyAiMDkyY2Q3NjBkNWZkZGY5NjQwYTMxMDIxNGZlMDE5
MjlmMGZmZjNhOCIKCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWNvbmZpZy5oIiAx
CgoKCgojZGVmaW5lIFFUX0VESVRJT04gUVRfRURJVElPTl9PUEVOU09VUkNFCgoKCiNkZWZpbmUg
UV9CSUdfRU5ESUFOIDQzMjEKI2RlZmluZSBRX0xJVFRMRV9FTkRJQU4gMTIzNAojZGVmaW5lIFFU
X0JVSUxEX0tFWSAibWFjb3N4IG1hY3gtY29jb2EgZysrLTQgZnVsbC1jb25maWciCiNkZWZpbmUg
UVRfQlVJTERfS0VZX0NPTVBBVCAieDg2XzY0IERhcndpbiBnKystNCBmdWxsLWNvbmZpZyIKIyAy
NiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xY29uZmlnLmgiCiNkZWZpbmUgUV9CWVRFX09S
REVSIFFfTElUVExFX0VORElBTgoKCgoKCgojZGVmaW5lIFFUX0FSQ0hfTUFDT1NYIAoKCgoKI2Rl
ZmluZSBRVF9MQVJHRUZJTEVfU1VQUE9SVCA2NAojZGVmaW5lIFFUX01BQ19VU0VfQ09DT0EgMQoK
I2RlZmluZSBRVF9QT0lOVEVSX1NJWkUgOAojIDUxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3Jl
L3Fjb25maWcuaCIKI2RlZmluZSBRVF9MSU5LRURfT1BFTlNTTCAKCgoKCgojZGVmaW5lIFFUX05P
X0FMU0EgCgoKCgoKI2RlZmluZSBRVF9OT19DTE9DS19NT05PVE9OSUMgCgoKCgoKI2RlZmluZSBR
VF9OT19FR0wgCgoKCgoKI2RlZmluZSBRVF9OT19GUkVFVFlQRSAKCgoKCgojZGVmaW5lIFFUX05P
X0dMSUIgCgoKCgoKI2RlZmluZSBRVF9OT19HU1RSRUFNRVIgCgoKCgoKI2RlZmluZSBRVF9OT19H
VUkgCgoKCgoKI2RlZmluZSBRVF9OT19JQ0QgCgoKCgoKI2RlZmluZSBRVF9OT19JTUFHRUZPUk1B
VF9KUEVHIAoKCgoKCiNkZWZpbmUgUVRfTk9fSU1BR0VGT1JNQVRfTU5HIAoKCgoKCiNkZWZpbmUg
UVRfTk9fSU1BR0VGT1JNQVRfVElGRiAKCgoKCgojZGVmaW5lIFFUX05PX0lOT1RJRlkgCgoKCgoK
I2RlZmluZSBRVF9OT19NUkVNQVAgCgoKCgoKI2RlZmluZSBRVF9OT19OQVMgCgoKCgoKI2RlZmlu
ZSBRVF9OT19PUEVOVkcgCgoKCgoKI2RlZmluZSBRVF9OT19QSE9OT04gCgoKCgoKI2RlZmluZSBR
VF9OT19TNjAgCgoKCgoKI2RlZmluZSBRVF9OT19TVFlMRV9HVEsgCgoKCgoKI2RlZmluZSBRVF9O
T19TVFlMRV9TNjAgCgoKCgoKI2RlZmluZSBRVF9OT19TWEUgCgoKCgoKI2RlZmluZSBRVF9OT19a
TElCIAoKCgoKCiNkZWZpbmUgUVRfUlVOVElNRV9YQ1VSU09SIAoKCgoKCiNkZWZpbmUgUVRfUlVO
VElNRV9YRklYRVMgCgoKCgoKI2RlZmluZSBRVF9SVU5USU1FX1hJTkVSQU1BIAoKCgoKCiNkZWZp
bmUgUVRfUlVOVElNRV9YSU5QVVQgCgoKCgoKI2RlZmluZSBRVF9SVU5USU1FX1hSQU5EUiAKCgoK
CgojZGVmaW5lIFFUX1VTRV9NQVRIX0hfRkxPQVRTIAoKCgoKI2RlZmluZSBRVF9WSVNJQklMSVRZ
X0FWQUlMQUJMRSAKIyA2MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiIDIK
CgoKCgoKI2RlZmluZSBRVF9QUkVQRU5EX05BTUVTUEFDRShuYW1lKSA6Om5hbWUKI2RlZmluZSBR
VF9VU0VfTkFNRVNQQUNFIAojZGVmaW5lIFFUX0JFR0lOX05BTUVTUEFDRSAKI2RlZmluZSBRVF9F
TkRfTkFNRVNQQUNFIAojZGVmaW5lIFFUX0JFR0lOX0lOQ0xVREVfTkFNRVNQQUNFIAojZGVmaW5l
IFFUX0VORF9JTkNMVURFX05BTUVTUEFDRSAKI2RlZmluZSBRVF9CRUdJTl9NT0NfTkFNRVNQQUNF
IAojZGVmaW5lIFFUX0VORF9NT0NfTkFNRVNQQUNFIAojZGVmaW5lIFFUX0ZPUldBUkRfREVDTEFS
RV9DTEFTUyhuYW1lKSBjbGFzcyBuYW1lOwojZGVmaW5lIFFUX0ZPUldBUkRfREVDTEFSRV9TVFJV
Q1QobmFtZSkgc3RydWN0IG5hbWU7CiNkZWZpbmUgUVRfTUFOR0xFX05BTUVTUEFDRShuYW1lKSBu
YW1lCiMgMTM3ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI2RlZmluZSBR
VF9CRUdJTl9IRUFERVIgCiNkZWZpbmUgUVRfRU5EX0hFQURFUiAKI2RlZmluZSBRVF9CRUdJTl9J
TkNMVURFX0hFQURFUiAKI2RlZmluZSBRVF9FTkRfSU5DTFVERV9IRUFERVIgZXh0ZXJuICJDKysi
CiMgMTc5ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI2RlZmluZSBRX09T
X0RBUldJTiAKI2RlZmluZSBRX09TX0JTRDQgCgojZGVmaW5lIFFfT1NfREFSV0lONjQgCiMgMjY5
ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI2RlZmluZSBRX09TX01BQyAK
I2RlZmluZSBRX09TX01BQ1ggCgojZGVmaW5lIFFfT1NfTUFDNjQgCiMgMjk0ICIvb3B0L2xvY2Fs
L2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI2RlZmluZSBRX09TX1VOSVggCiMgMzAzICIvb3B0
L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI3VuZGVmIE1BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVECgojZGVmaW5lIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIE1BQ19P
U19YX1ZFUlNJT05fMTBfNAojIDMyMCAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFs
LmgiCiNkZWZpbmUgTUFDX09TX1hfVkVSU0lPTl8xMF83IE1BQ19PU19YX1ZFUlNJT05fMTBfNiAr
IDEKIyA0NTQgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgojZGVmaW5lIFFf
Q0NfR05VIAojZGVmaW5lIFFfQ19DQUxMQkFDS1MgCiMgNDY1ICIvb3B0L2xvY2FsL2luY2x1ZGUv
UXRDb3JlL3FnbG9iYWwuaCIKI2RlZmluZSBRX05PX0RFUFJFQ0FURURfQ09OU1RSVUNUT1JTIAoj
IDQ3NiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiCiNkZWZpbmUgUV9BTElH
Tk9GKHR5cGUpIF9fYWxpZ25vZl9fKHR5cGUpCiNkZWZpbmUgUV9UWVBFT0YoZXhwcikgX190eXBl
b2ZfXyhleHByKQojZGVmaW5lIFFfREVDTF9BTElHTihuKSBfX2F0dHJpYnV0ZV9fKChfX2FsaWdu
ZWRfXyhuKSkpCiMgNDkzICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI2Rl
ZmluZSBRX1BBQ0tFRCBfX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpCiNkZWZpbmUgUV9OT19Q
QUNLRURfUkVGRVJFTkNFIAoKI2RlZmluZSBRVF9OT19BUk1fRUFCSSAKIyA3NDcgIi9vcHQvbG9j
YWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgojZGVmaW5lIFFfQ09OU1RSVUNUT1JfRlVOQ1RJ
T04wKEFGVU5DKSBzdGF0aWMgY29uc3QgaW50IEFGVU5DICMjIF9faW5pdF92YXJpYWJsZV9fID0g
QUZVTkMoKTsKCiNkZWZpbmUgUV9DT05TVFJVQ1RPUl9GVU5DVElPTihBRlVOQykgUV9DT05TVFJV
Q1RPUl9GVU5DVElPTjAoQUZVTkMpCgoKCiNkZWZpbmUgUV9ERVNUUlVDVE9SX0ZVTkNUSU9OMChB
RlVOQykgY2xhc3MgQUZVTkMgIyMgX19kZXN0X2NsYXNzX18geyBwdWJsaWM6IGlubGluZSBBRlVO
QyAjIyBfX2Rlc3RfY2xhc3NfXygpIHsgfSBpbmxpbmUgfiBBRlVOQyAjIyBfX2Rlc3RfY2xhc3Nf
XygpIHsgQUZVTkMoKTsgfSB9IEFGVU5DICMjIF9fZGVzdF9pbnN0YW5jZV9fOwoKCgoKCiNkZWZp
bmUgUV9ERVNUUlVDVE9SX0ZVTkNUSU9OKEFGVU5DKSBRX0RFU1RSVUNUT1JfRlVOQ1RJT04wKEFG
VU5DKQoKCgoKI2RlZmluZSBRX1JFUVVJUkVEX1JFU1VMVCBfX2F0dHJpYnV0ZV9fICgod2Fybl91
bnVzZWRfcmVzdWx0KSkKIyA4MTAgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5o
IgojZGVmaW5lIFFfV1NfTUFDIAojZGVmaW5lIFFfV1NfTUFDWCAKCiNkZWZpbmUgUV9XU19NQUM2
NCAKIyA4MzAgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgoKCgoKCgoKCgp0
eXBlZGVmIHNpZ25lZCBjaGFyIHFpbnQ4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgcXVpbnQ4Owp0
eXBlZGVmIHNob3J0IHFpbnQxNjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBxdWludDE2Owp0eXBl
ZGVmIGludCBxaW50MzI7CnR5cGVkZWYgdW5zaWduZWQgaW50IHF1aW50MzI7CgoKCgoKCiNkZWZp
bmUgUV9JTlQ2NF9DKGMpIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYyAjIyBMTCkKI2RlZmluZSBR
X1VJTlQ2NF9DKGMpIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oYyAjIyBVTEwpCnR5
cGVkZWYgbG9uZyBsb25nIHFpbnQ2NDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgcXVpbnQ2
NDsKCgp0eXBlZGVmIHFpbnQ2NCBxbG9uZ2xvbmc7CnR5cGVkZWYgcXVpbnQ2NCBxdWxvbmdsb25n
OwojIDg2OCAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiCiNkZWZpbmUgUV9J
TklUX1JFU09VUkNFX0VYVEVSTihuYW1lKSBleHRlcm4gaW50IFFUX01BTkdMRV9OQU1FU1BBQ0Uo
cUluaXRSZXNvdXJjZXNfICMjIG5hbWUpICgpOwoKCiNkZWZpbmUgUV9JTklUX1JFU09VUkNFKG5h
bWUpIGRvIHsgZXh0ZXJuIGludCBRVF9NQU5HTEVfTkFNRVNQQUNFKHFJbml0UmVzb3VyY2VzXyAj
IyBuYW1lKSAoKTsgUVRfTUFOR0xFX05BTUVTUEFDRShxSW5pdFJlc291cmNlc18gIyMgbmFtZSkg
KCk7IH0gd2hpbGUgKDApCgoKI2RlZmluZSBRX0NMRUFOVVBfUkVTT1VSQ0UobmFtZSkgZG8geyBl
eHRlcm4gaW50IFFUX01BTkdMRV9OQU1FU1BBQ0UocUNsZWFudXBSZXNvdXJjZXNfICMjIG5hbWUp
ICgpOyBRVF9NQU5HTEVfTkFNRVNQQUNFKHFDbGVhbnVwUmVzb3VyY2VzXyAjIyBuYW1lKSAoKTsg
fSB3aGlsZSAoMCkKIyA4ODYgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgp0
ZW1wbGF0ZSA8aW50PiBzdHJ1Y3QgUUludGVnZXJGb3JTaXplOwp0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
UUludGVnZXJGb3JTaXplPDE+IHsgdHlwZWRlZiBxdWludDggVW5zaWduZWQ7IHR5cGVkZWYgcWlu
dDggU2lnbmVkOyB9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgUUludGVnZXJGb3JTaXplPDI+IHsgdHlw
ZWRlZiBxdWludDE2IFVuc2lnbmVkOyB0eXBlZGVmIHFpbnQxNiBTaWduZWQ7IH07CnRlbXBsYXRl
IDw+IHN0cnVjdCBRSW50ZWdlckZvclNpemU8ND4geyB0eXBlZGVmIHF1aW50MzIgVW5zaWduZWQ7
IHR5cGVkZWYgcWludDMyIFNpZ25lZDsgfTsKdGVtcGxhdGUgPD4gc3RydWN0IFFJbnRlZ2VyRm9y
U2l6ZTw4PiB7IHR5cGVkZWYgcXVpbnQ2NCBVbnNpZ25lZDsgdHlwZWRlZiBxaW50NjQgU2lnbmVk
OyB9Owp0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IFFJbnRlZ2VyRm9yU2l6ZW9mOiBRSW50ZWdl
ckZvclNpemU8c2l6ZW9mKFQpPiB7IH07CnR5cGVkZWYgUUludGVnZXJGb3JTaXplb2Y8dm9pZCo+
OjpVbnNpZ25lZCBxdWludHB0cjsKdHlwZWRlZiBRSW50ZWdlckZvclNpemVvZjx2b2lkKj46OlNp
Z25lZCBxcHRyZGlmZjsKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVjaGFyOwp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIHVsb25nOwoKIyA5NDYgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUv
cWdsb2JhbC5oIgojZGVmaW5lIFFUX1NUQVRJQ19DT05TVCBzdGF0aWMgY29uc3QKI2RlZmluZSBR
VF9TVEFUSUNfQ09OU1RfSU1QTCBjb25zdAojIDk1NiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29y
ZS9xZ2xvYmFsLmgiCiNkZWZpbmUgUV9ERUNMX0RFUFJFQ0FURUQgX19hdHRyaWJ1dGVfXyAoKF9f
ZGVwcmVjYXRlZF9fKSkKIyA5NjcgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5o
IgojZGVmaW5lIFFfREVDTF9WQVJJQUJMRV9ERVBSRUNBVEVEIFFfREVDTF9ERVBSRUNBVEVECgoK
CgoKI2RlZmluZSBRX0RFQ0xfQ09OU1RSVUNUT1JfREVQUkVDQVRFRCAKIyA5OTkgIi9vcHQvbG9j
YWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgojdW5kZWYgUVRfREVQUkVDQVRFRAojZGVmaW5l
IFFUX0RFUFJFQ0FURUQgCiN1bmRlZiBRVF9ERVBSRUNBVEVEX1ZBUklBQkxFCiNkZWZpbmUgUVRf
REVQUkVDQVRFRF9WQVJJQUJMRSAKI3VuZGVmIFFUX0RFUFJFQ0FURURfQ09OU1RSVUNUT1IKI2Rl
ZmluZSBRVF9ERVBSRUNBVEVEX0NPTlNUUlVDVE9SIAojIDEwMzQgIi9vcHQvbG9jYWwvaW5jbHVk
ZS9RdENvcmUvcWdsb2JhbC5oIgojZGVmaW5lIFFUX01PQ19DT01QQVQgCgoKCgoKCgojZGVmaW5l
IFFUX0FTQ0lJX0NBU1RfV0FSTiBRX0RFQ0xfREVQUkVDQVRFRAoKCgoKI2RlZmluZSBRVF9BU0NJ
SV9DQVNUX1dBUk5fQ09OU1RSVUNUT1IgUV9ERUNMX0NPTlNUUlVDVE9SX0RFUFJFQ0FURUQKIyAx
MDY3ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI2RlZmluZSBRVF9GQVNU
Q0FMTCAKIyAxMDgxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKdHlwZWRl
ZiBpbnQgUU5vSW1wbGljaXRCb29sQ2FzdDsKIyAxMDkzICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRD
b3JlL3FnbG9iYWwuaCIKdHlwZWRlZiBkb3VibGUgcXJlYWw7CgoKCgoKCnRlbXBsYXRlIDx0eXBl
bmFtZSBUPgppbmxpbmUgVCBxQWJzKGNvbnN0IFQgJnQpIHsgcmV0dXJuIHQgPj0gMCA/IHQgOiAt
dDsgfQoKaW5saW5lIGludCBxUm91bmQocXJlYWwgZCkKeyByZXR1cm4gZCA+PSAwLjAgPyBpbnQo
ZCArIDAuNSkgOiBpbnQoZCAtIGludChkLTEpICsgMC41KSArIGludChkLTEpOyB9CgoKCgoKaW5s
aW5lIHFpbnQ2NCBxUm91bmQ2NChxcmVhbCBkKQp7IHJldHVybiBkID49IDAuMCA/IHFpbnQ2NChk
ICsgMC41KSA6IHFpbnQ2NChkIC0gcXJlYWwocWludDY0KGQtMSkpICsgMC41KSArIHFpbnQ2NChk
LTEpOyB9CgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSBjb25zdCBUICZxTWluKGNvbnN0
IFQgJmEsIGNvbnN0IFQgJmIpIHsgaWYgKGEgPCBiKSByZXR1cm4gYTsgcmV0dXJuIGI7IH0KdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSBjb25zdCBUICZxTWF4KGNvbnN0IFQgJmEsIGNvbnN0
IFQgJmIpIHsgaWYgKGEgPCBiKSByZXR1cm4gYjsgcmV0dXJuIGE7IH0KdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CmlubGluZSBjb25zdCBUICZxQm91bmQoY29uc3QgVCAmbWluLCBjb25zdCBUICZ2YWws
IGNvbnN0IFQgJm1heCkKeyByZXR1cm4gcU1heChtaW4sIHFNaW4obWF4LCB2YWwpKTsgfQojIDEx
NTEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgpjbGFzcyBRRGF0YVN0cmVh
bTsKCgoKCgoKCiNkZWZpbmUgUU1BQ19RTUVOVUJBUl9OT19FVkVOVCAKCgoKCiNkZWZpbmUgUVRf
Tk9fQ09QIAojIDExNzYgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgojIDEg
Ii9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWZlYXR1cmVzLmgiIDEKIyAxMTc3ICIvb3B0L2xv
Y2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIgMgoKI2RlZmluZSBRVF9TVVBQT1JUUyhGRUFU
VVJFKSAoIWRlZmluZWQoUVRfTk9fICMjRkVBVFVSRSkpCgoKCgoKI2RlZmluZSBRX0RFQ0xfRVhQ
T1JUIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCiMgMTE5NCAiL29wdC9s
b2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiCiNkZWZpbmUgUV9ERUNMX0lNUE9SVCAKIyAx
MzE2ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI3VuZGVmIFFUX01BS0VE
TEwKI3VuZGVmIFFUX0RMTAoKCgoKI2RlZmluZSBRX0NPUkVfRVhQT1JUIFFfREVDTF9FWFBPUlQK
I2RlZmluZSBRX0dVSV9FWFBPUlQgUV9ERUNMX0VYUE9SVAojZGVmaW5lIFFfU1FMX0VYUE9SVCBR
X0RFQ0xfRVhQT1JUCiNkZWZpbmUgUV9ORVRXT1JLX0VYUE9SVCBRX0RFQ0xfRVhQT1JUCiNkZWZp
bmUgUV9TVkdfRVhQT1JUIFFfREVDTF9FWFBPUlQKI2RlZmluZSBRX0RFQ0xBUkFUSVZFX0VYUE9S
VCBRX0RFQ0xfRVhQT1JUCiNkZWZpbmUgUV9PUEVOR0xfRVhQT1JUIFFfREVDTF9FWFBPUlQKI2Rl
ZmluZSBRX01VTFRJTUVESUFfRVhQT1JUIFFfREVDTF9FWFBPUlQKI2RlZmluZSBRX09QRU5WR19F
WFBPUlQgUV9ERUNMX0VYUE9SVAojZGVmaW5lIFFfWE1MX0VYUE9SVCBRX0RFQ0xfRVhQT1JUCiNk
ZWZpbmUgUV9YTUxQQVRURVJOU19FWFBPUlQgUV9ERUNMX0VYUE9SVAojZGVmaW5lIFFfU0NSSVBU
X0VYUE9SVCBRX0RFQ0xfRVhQT1JUCiNkZWZpbmUgUV9TQ1JJUFRUT09MU19FWFBPUlQgUV9ERUNM
X0VYUE9SVAojZGVmaW5lIFFfQ09NUEFUX0VYUE9SVCBRX0RFQ0xfRVhQT1JUCiNkZWZpbmUgUV9E
QlVTX0VYUE9SVCBRX0RFQ0xfRVhQT1JUCiMgMTM3NSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29y
ZS9xZ2xvYmFsLmgiCiNkZWZpbmUgUV9DT1JFX0VYUE9SVF9JTkxJTkUgUV9DT1JFX0VYUE9SVCBp
bmxpbmUKI2RlZmluZSBRX0dVSV9FWFBPUlRfSU5MSU5FIFFfR1VJX0VYUE9SVCBpbmxpbmUKIyAx
MzkxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI2RlZmluZSBRX0FVVE9U
RVNUX0VYUE9SVCAKCgppbmxpbmUgdm9pZCBxdF9ub29wKCkge30KIyAxNDE3ICIvb3B0L2xvY2Fs
L2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI2RlZmluZSBRVF9UUlkgdHJ5CiNkZWZpbmUgUVRf
Q0FUQ0goQSkgY2F0Y2ggKEEpCiNkZWZpbmUgUVRfVEhST1coQSkgdGhyb3cgQQojZGVmaW5lIFFU
X1JFVEhST1cgdGhyb3cKCgoKCgoKY2xhc3MgUVN0cmluZzsKY2xhc3MgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUVN5c0luZm8gewpwdWJsaWM6CiAgICBlbnVtIFNpemVz
IHsKICAgICAgICBXb3JkU2l6ZSA9IChzaXplb2Yodm9pZCAqKTw8MykKICAgIH07CiMgMTQ0MiAi
L29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiCiAgICBlbnVtIEVuZGlhbiB7CiAg
ICAgICAgQmlnRW5kaWFuLAogICAgICAgIExpdHRsZUVuZGlhbgoKCgoKCgogICAgICAgICwgQnl0
ZU9yZGVyID0gTGl0dGxlRW5kaWFuCgoKCiAgICB9OwojIDE0OTUgIi9vcHQvbG9jYWwvaW5jbHVk
ZS9RdENvcmUvcWdsb2JhbC5oIgogICAgZW51bSBNYWNWZXJzaW9uIHsKICAgICAgICBNVl9Vbmtu
b3duID0gMHgwMDAwLAoKCiAgICAgICAgTVZfOSA9IDB4MDAwMSwKICAgICAgICBNVl8xMF8wID0g
MHgwMDAyLAogICAgICAgIE1WXzEwXzEgPSAweDAwMDMsCiAgICAgICAgTVZfMTBfMiA9IDB4MDAw
NCwKICAgICAgICBNVl8xMF8zID0gMHgwMDA1LAogICAgICAgIE1WXzEwXzQgPSAweDAwMDYsCiAg
ICAgICAgTVZfMTBfNSA9IDB4MDAwNywKICAgICAgICBNVl8xMF82ID0gMHgwMDA4LAoKCiAgICAg
ICAgTVZfQ0hFRVRBSCA9IE1WXzEwXzAsCiAgICAgICAgTVZfUFVNQSA9IE1WXzEwXzEsCiAgICAg
ICAgTVZfSkFHVUFSID0gTVZfMTBfMiwKICAgICAgICBNVl9QQU5USEVSID0gTVZfMTBfMywKICAg
ICAgICBNVl9USUdFUiA9IE1WXzEwXzQsCiAgICAgICAgTVZfTEVPUEFSRCA9IE1WXzEwXzUsCiAg
ICAgICAgTVZfU05PV0xFT1BBUkQgPSBNVl8xMF82CiAgICB9OwogICAgc3RhdGljIGNvbnN0IE1h
Y1ZlcnNpb24gTWFjaW50b3NoVmVyc2lvbjsKIyAxNTQ4ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRD
b3JlL3FnbG9iYWwuaCIKfTsKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
IGNvbnN0IGNoYXIgKnFWZXJzaW9uKCk7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIGJvb2wgcVNoYXJlZEJ1aWxkKCk7CgoKaW5saW5lIGludCBxTWFjVmVyc2lvbigpIHsg
cmV0dXJuIFFTeXNJbmZvOjpNYWNpbnRvc2hWZXJzaW9uOyB9CiMgMTU3OSAiL29wdC9sb2NhbC9p
bmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiCiNkZWZpbmUgUV9PVVRPRkxJTkVfVEVNUExBVEUgCgoK
I2RlZmluZSBRX0lOTElORV9URU1QTEFURSBpbmxpbmUKCgoKI2RlZmluZSBRX1RZUEVOQU1FIHR5
cGVuYW1lCiMgMTU5OCAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiCiNkZWZp
bmUgUV9VTlVTRUQoeCkgKHZvaWQpeDsKIyAxNjE1ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3Jl
L3FnbG9iYWwuaCIKI2RlZmluZSBRVF9ERUJVRyAKCgoKI2RlZmluZSBxUHJpbnRhYmxlKHN0cmlu
ZykgKHN0cmluZykudG9Mb2NhbDhCaXQoKS5jb25zdERhdGEoKQoKCl9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQgcURlYnVnKGNvbnN0IGNoYXIgKiwgLi4uKQoKICAg
IF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKQoKOwoKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgdm9pZCBxV2FybmluZyhjb25zdCBjaGFyICosIC4u
LikKCiAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDEsIDIpKSkKCjsKCmNsYXNz
IFFTdHJpbmc7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFTdHJpbmcg
cXRfZXJyb3Jfc3RyaW5nKGludCBlcnJvckNvZGUgPSAtMSk7Cl9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpIHZvaWQgcUNyaXRpY2FsKGNvbnN0IGNoYXIgKiwgLi4uKQoKICAg
IF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKQoKOwpfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkIHFGYXRhbChjb25zdCBjaGFyICosIC4uLikK
CiAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDEsIDIpKSkKCjsKCgoKCl9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQgcUVycm5vV2FybmluZyhpbnQg
Y29kZSwgY29uc3QgY2hhciAqbXNnLCAuLi4pOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKSB2b2lkIHFFcnJub1dhcm5pbmcoY29uc3QgY2hhciAqbXNnLCAuLi4pOwojIDE2
NjIgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgpjbGFzcyBRRGVidWc7CmNs
YXNzIFFOb0RlYnVnOwoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW5s
aW5lIFFEZWJ1ZyBxRGVidWcoKTsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgaW5saW5lIFFEZWJ1ZyBxV2FybmluZygpOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKSBpbmxpbmUgUURlYnVnIHFDcml0aWNhbCgpOwoKCgoKI2RlZmluZSBRVF9OT19R
REVCVUdfTUFDUk8gd2hpbGUgKGZhbHNlKSBxRGVidWcKCgoKI2RlZmluZSBRVF9OT19RV0FSTklO
R19NQUNSTyB3aGlsZSAoZmFsc2UpIHFXYXJuaW5nCgoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkgdm9pZCBxdF9hc3NlcnQoY29uc3QgY2hhciAqYXNzZXJ0aW9uLCBj
b25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSk7CgoKCiNkZWZpbmUgUV9BU1NFUlQoY29uZCkgKCgh
KGNvbmQpKSA/IHF0X2Fzc2VydCgjY29uZCxfX0ZJTEVfXyxfX0xJTkVfXykgOiBxdF9ub29wKCkp
CiMgMTY5NiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiCl9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQgcXRfYXNzZXJ0X3goY29uc3QgY2hhciAq
d2hlcmUsIGNvbnN0IGNoYXIgKndoYXQsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKTsKCgoK
I2RlZmluZSBRX0FTU0VSVF9YKGNvbmQsd2hlcmUsd2hhdCkgKCghKGNvbmQpKSA/IHF0X2Fzc2Vy
dF94KHdoZXJlLCB3aGF0LF9fRklMRV9fLF9fTElORV9fKSA6IHF0X25vb3AoKSkKCgoKCgpfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkIHF0X2NoZWNrX3BvaW50ZXIo
Y29uc3QgY2hhciAqLCBpbnQpOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KSB2b2lkIHFCYWRBbGxvYygpOwojIDE3MTYgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWds
b2JhbC5oIgojZGVmaW5lIFFfQ0hFQ0tfUFRSKHApIGRvIHsgaWYgKCEocCkpIHFCYWRBbGxvYygp
OyB9IHdoaWxlICgwKQoKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgVCAqcV9jaGVja19w
dHIoVCAqcCkgeyBkbyB7IGlmICghKHApKSBxQmFkQWxsb2MoKTsgfSB3aGlsZSAoMCk7IHJldHVy
biBwOyB9CgoKI2RlZmluZSBRX0ZVTkNfSU5GTyBfX1BSRVRUWV9GVU5DVElPTl9fCiMgMTc0OSAi
L29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiCmVudW0gUXRNc2dUeXBlIHsgUXRE
ZWJ1Z01zZywgUXRXYXJuaW5nTXNnLCBRdENyaXRpY2FsTXNnLCBRdEZhdGFsTXNnLCBRdFN5c3Rl
bU1zZyA9IFF0Q3JpdGljYWxNc2cgfTsKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIHZvaWQgcXRfbWVzc2FnZV9vdXRwdXQoUXRNc2dUeXBlLCBjb25zdCBjaGFyICpidWYp
OwoKdHlwZWRlZiB2b2lkICgqUXRNc2dIYW5kbGVyKShRdE1zZ1R5cGUsIGNvbnN0IGNoYXIgKik7
Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFF0TXNnSGFuZGxlciBxSW5z
dGFsbE1zZ0hhbmRsZXIoUXRNc2dIYW5kbGVyKTsKIyAxODAzICIvb3B0L2xvY2FsL2luY2x1ZGUv
UXRDb3JlL3FnbG9iYWwuaCIKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFFCYXNpY0F0b21p
Y1BvaW50ZXI7CgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIFFHbG9iYWxTdGF0aWMKewpw
dWJsaWM6CiAgICBRQmFzaWNBdG9taWNQb2ludGVyPFQ+IHBvaW50ZXI7CiAgICBib29sIGRlc3Ry
b3llZDsKfTsKCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KY2xhc3MgUUdsb2JhbFN0YXRpY0RlbGV0
ZXIKewpwdWJsaWM6CiAgICBRR2xvYmFsU3RhdGljPFQ+ICZnbG9iYWxTdGF0aWM7CiAgICBRR2xv
YmFsU3RhdGljRGVsZXRlcihRR2xvYmFsU3RhdGljPFQ+ICZfZ2xvYmFsU3RhdGljKQogICAgICAg
IDogZ2xvYmFsU3RhdGljKF9nbG9iYWxTdGF0aWMpCiAgICB7IH0KCiAgICBpbmxpbmUgflFHbG9i
YWxTdGF0aWNEZWxldGVyKCkKICAgIHsKICAgICAgICBkZWxldGUgZ2xvYmFsU3RhdGljLnBvaW50
ZXI7CiAgICAgICAgZ2xvYmFsU3RhdGljLnBvaW50ZXIgPSAwOwogICAgICAgIGdsb2JhbFN0YXRp
Yy5kZXN0cm95ZWQgPSB0cnVlOwogICAgfQp9OwoKI2RlZmluZSBRX0dMT0JBTF9TVEFUSUNfSU5J
VChUWVBFLE5BTUUpIHN0YXRpYyBRR2xvYmFsU3RhdGljPFRZUEUgPiB0aGlzXyAjI05BTUUgPSB7
IFFfQkFTSUNfQVRPTUlDX0lOSVRJQUxJWkVSKDApLCBmYWxzZSB9CgoKI2RlZmluZSBRX0dMT0JB
TF9TVEFUSUMoVFlQRSxOQU1FKSBRX0dMT0JBTF9TVEFUSUNfSU5JVChUWVBFLCBOQU1FKTsgc3Rh
dGljIFRZUEUgKk5BTUUoKSB7IGlmICghdGhpc18gIyNOQU1FLnBvaW50ZXIgJiYgIXRoaXNfICMj
TkFNRS5kZXN0cm95ZWQpIHsgVFlQRSAqeCA9IG5ldyBUWVBFOyBpZiAoIXRoaXNfICMjTkFNRS5w
b2ludGVyLnRlc3RBbmRTZXRPcmRlcmVkKDAsIHgpKSBkZWxldGUgeDsgZWxzZSBzdGF0aWMgUUds
b2JhbFN0YXRpY0RlbGV0ZXI8VFlQRSA+IGNsZWFudXAodGhpc18gIyNOQU1FKTsgfSByZXR1cm4g
dGhpc18gIyNOQU1FLnBvaW50ZXI7IH0KIyAxODQ5ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3Jl
L3FnbG9iYWwuaCIKI2RlZmluZSBRX0dMT0JBTF9TVEFUSUNfV0lUSF9BUkdTKFRZUEUsTkFNRSxB
UkdTKSBRX0dMT0JBTF9TVEFUSUNfSU5JVChUWVBFLCBOQU1FKTsgc3RhdGljIFRZUEUgKk5BTUUo
KSB7IGlmICghdGhpc18gIyNOQU1FLnBvaW50ZXIgJiYgIXRoaXNfICMjTkFNRS5kZXN0cm95ZWQp
IHsgVFlQRSAqeCA9IG5ldyBUWVBFIEFSR1M7IGlmICghdGhpc18gIyNOQU1FLnBvaW50ZXIudGVz
dEFuZFNldE9yZGVyZWQoMCwgeCkpIGRlbGV0ZSB4OyBlbHNlIHN0YXRpYyBRR2xvYmFsU3RhdGlj
RGVsZXRlcjxUWVBFID4gY2xlYW51cCh0aGlzXyAjI05BTUUpOyB9IHJldHVybiB0aGlzXyAjI05B
TUUucG9pbnRlcjsgfQojIDE4NjMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5o
IgojZGVmaW5lIFFfR0xPQkFMX1NUQVRJQ19XSVRIX0lOSVRJQUxJWkVSKFRZUEUsTkFNRSxJTklU
SUFMSVpFUikgUV9HTE9CQUxfU1RBVElDX0lOSVQoVFlQRSwgTkFNRSk7IHN0YXRpYyBUWVBFICpO
QU1FKCkgeyBpZiAoIXRoaXNfICMjTkFNRS5wb2ludGVyICYmICF0aGlzXyAjI05BTUUuZGVzdHJv
eWVkKSB7IFFTY29wZWRQb2ludGVyPFRZUEUgPiB4KG5ldyBUWVBFKTsgSU5JVElBTElaRVI7IGlm
ICh0aGlzXyAjI05BTUUucG9pbnRlci50ZXN0QW5kU2V0T3JkZXJlZCgwLCB4LmRhdGEoKSkpIHsg
c3RhdGljIFFHbG9iYWxTdGF0aWNEZWxldGVyPFRZUEUgPiBjbGVhbnVwKHRoaXNfICMjTkFNRSk7
IHgudGFrZSgpOyB9IH0gcmV0dXJuIHRoaXNfICMjTkFNRS5wb2ludGVyOyB9CiMgMTg4MCAiL29w
dC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiCmNsYXNzIFFCb29sCnsKICAgIGJvb2wg
YjsKCnB1YmxpYzoKICAgIGlubGluZSBleHBsaWNpdCBRQm9vbChib29sIEIpIDogYihCKSB7fQog
ICAgaW5saW5lIG9wZXJhdG9yIGNvbnN0IHZvaWQgKigpIGNvbnN0CiAgICB7IHJldHVybiBiID8g
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCAqPih0aGlzKSA6IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQg
Kj4oMCk7IH0KfTsKCmlubGluZSBib29sIG9wZXJhdG9yPT0oUUJvb2wgYjEsIGJvb2wgYjIpIHsg
cmV0dXJuICFiMSA9PSAhYjI7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShib29sIGIxLCBRQm9v
bCBiMikgeyByZXR1cm4gIWIxID09ICFiMjsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KFFCb29s
IGIxLCBRQm9vbCBiMikgeyByZXR1cm4gIWIxID09ICFiMjsgfQppbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KFFCb29sIGIxLCBib29sIGIyKSB7IHJldHVybiAhYjEgIT0gIWIyOyB9CmlubGluZSBib29s
IG9wZXJhdG9yIT0oYm9vbCBiMSwgUUJvb2wgYjIpIHsgcmV0dXJuICFiMSAhPSAhYjI7IH0KaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShRQm9vbCBiMSwgUUJvb2wgYjIpIHsgcmV0dXJuICFiMSAhPSAh
YjI7IH0KCnN0YXRpYyBpbmxpbmUgYm9vbCBxRnV6enlDb21wYXJlKGRvdWJsZSBwMSwgZG91Ymxl
IHAyKQp7CiAgICByZXR1cm4gKHFBYnMocDEgLSBwMikgPD0gMC4wMDAwMDAwMDAwMDEgKiBxTWlu
KHFBYnMocDEpLCBxQWJzKHAyKSkpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgcUZ1enp5Q29tcGFy
ZShmbG9hdCBwMSwgZmxvYXQgcDIpCnsKICAgIHJldHVybiAocUFicyhwMSAtIHAyKSA8PSAwLjAw
MDAxZiAqIHFNaW4ocUFicyhwMSksIHFBYnMocDIpKSk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgYm9v
bCBxRnV6enlJc051bGwoZG91YmxlIGQpCnsKICAgIHJldHVybiBxQWJzKGQpIDw9IDAuMDAwMDAw
MDAwMDAxOwp9CgoKCgpzdGF0aWMgaW5saW5lIGJvb2wgcUZ1enp5SXNOdWxsKGZsb2F0IGYpCnsK
ICAgIHJldHVybiBxQWJzKGYpIDw9IDAuMDAwMDFmOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgYm9v
bCBxSXNOdWxsKGRvdWJsZSBkKQp7CiAgICB1bmlvbiBVIHsKICAgICAgICBkb3VibGUgZDsKICAg
ICAgICBxdWludDY0IHU7CiAgICB9OwogICAgVSB2YWw7CiAgICB2YWwuZCA9IGQ7CiAgICByZXR1
cm4gdmFsLnUgPT0gcXVpbnQ2NCgwKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIGJvb2wgcUlzTnVs
bChmbG9hdCBmKQp7CiAgICB1bmlvbiBVIHsKICAgICAgICBmbG9hdCBmOwogICAgICAgIHF1aW50
MzIgdTsKICAgIH07CiAgICBVIHZhbDsKICAgIHZhbC5mID0gZjsKICAgIHJldHVybiB2YWwudSA9
PSAwdTsKfQojIDE5NzEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgojZGVm
aW5lIFFfRFVNTVlfQ09NUEFSSVNPTl9PUEVSQVRPUihDKSAKIyAxOTg2ICIvb3B0L2xvY2FsL2lu
Y2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBib29s
IHFJc0RldGFjaGVkKFQgJikgeyByZXR1cm4gdHJ1ZTsgfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CmNsYXNzIFFUeXBlSW5mbwp7CnB1YmxpYzoKICAgIGVudW0gewogICAgICAgIGlzUG9pbnRlciA9
IGZhbHNlLAogICAgICAgIGlzQ29tcGxleCA9IHRydWUsCiAgICAgICAgaXNTdGF0aWMgPSB0cnVl
LAogICAgICAgIGlzTGFyZ2UgPSAoc2l6ZW9mKFQpPnNpemVvZih2b2lkKikpLAogICAgICAgIGlz
RHVtbXkgPSBmYWxzZQogICAgfTsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBRVHlw
ZUluZm88VCo+CnsKcHVibGljOgogICAgZW51bSB7CiAgICAgICAgaXNQb2ludGVyID0gdHJ1ZSwK
ICAgICAgICBpc0NvbXBsZXggPSBmYWxzZSwKICAgICAgICBpc1N0YXRpYyA9IGZhbHNlLAogICAg
ICAgIGlzTGFyZ2UgPSBmYWxzZSwKICAgICAgICBpc0R1bW15ID0gZmFsc2UKICAgIH07Cn07CiMg
MjA0NCAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xvYmFsLmgiCmVudW0gewogICAgUV9D
T01QTEVYX1RZUEUgPSAwLAogICAgUV9QUklNSVRJVkVfVFlQRSA9IDB4MSwKICAgIFFfU1RBVElD
X1RZUEUgPSAwLAogICAgUV9NT1ZBQkxFX1RZUEUgPSAweDIsCiAgICBRX0RVTU1ZX1RZUEUgPSAw
eDQKfTsKCiNkZWZpbmUgUV9ERUNMQVJFX1RZUEVJTkZPKFRZUEUsRkxBR1MpIHRlbXBsYXRlIDw+
IGNsYXNzIFFUeXBlSW5mbzxUWVBFID4geyBwdWJsaWM6IGVudW0geyBpc0NvbXBsZXggPSAoKChG
TEFHUykgJiBRX1BSSU1JVElWRV9UWVBFKSA9PSAwKSwgaXNTdGF0aWMgPSAoKChGTEFHUykgJiAo
UV9NT1ZBQkxFX1RZUEUgfCBRX1BSSU1JVElWRV9UWVBFKSkgPT0gMCksIGlzTGFyZ2UgPSAoc2l6
ZW9mKFRZUEUpPnNpemVvZih2b2lkKikpLCBpc1BvaW50ZXIgPSBmYWxzZSwgaXNEdW1teSA9ICgo
KEZMQUdTKSAmIFFfRFVNTVlfVFlQRSkgIT0gMCkgfTsgc3RhdGljIGlubGluZSBjb25zdCBjaGFy
ICpuYW1lKCkgeyByZXR1cm4gI1RZUEU7IH0gfQojIDIwNjcgIi9vcHQvbG9jYWwvaW5jbHVkZS9R
dENvcmUvcWdsb2JhbC5oIgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIHZvaWQgcVN3YXAo
VCAmdmFsdWUxLCBUICZ2YWx1ZTIpCnsKICAgIGNvbnN0IFQgdCA9IHZhbHVlMTsKICAgIHZhbHVl
MSA9IHZhbHVlMjsKICAgIHZhbHVlMiA9IHQ7Cn0KIyAyMDg0ICIvb3B0L2xvY2FsL2luY2x1ZGUv
UXRDb3JlL3FnbG9iYWwuaCIKI2RlZmluZSBRX0RFQ0xBUkVfU0hBUkVEKFRZUEUpIHRlbXBsYXRl
IDw+IGlubGluZSBib29sIHFJc0RldGFjaGVkPFRZUEU+KFRZUEUgJnQpIHsgcmV0dXJuIHQuaXNE
ZXRhY2hlZCgpOyB9IHRlbXBsYXRlIDw+IGlubGluZSB2b2lkIHFTd2FwPFRZUEU+KFRZUEUgJnZh
bHVlMSwgVFlQRSAmdmFsdWUyKSB7IHFTd2FwKHZhbHVlMS5kYXRhX3B0cigpLCB2YWx1ZTIuZGF0
YV9wdHIoKSk7IH0KIyAyMDk0ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIK
dGVtcGxhdGUgPD4gY2xhc3MgUVR5cGVJbmZvPGJvb2wgPiB7IHB1YmxpYzogZW51bSB7IGlzQ29t
cGxleCA9ICgoKFFfUFJJTUlUSVZFX1RZUEUpICYgUV9QUklNSVRJVkVfVFlQRSkgPT0gMCksIGlz
U3RhdGljID0gKCgoUV9QUklNSVRJVkVfVFlQRSkgJiAoUV9NT1ZBQkxFX1RZUEUgfCBRX1BSSU1J
VElWRV9UWVBFKSkgPT0gMCksIGlzTGFyZ2UgPSAoc2l6ZW9mKGJvb2wpPnNpemVvZih2b2lkKikp
LCBpc1BvaW50ZXIgPSBmYWxzZSwgaXNEdW1teSA9ICgoKFFfUFJJTUlUSVZFX1RZUEUpICYgUV9E
VU1NWV9UWVBFKSAhPSAwKSB9OyBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKm5hbWUoKSB7IHJl
dHVybiAiYm9vbCI7IH0gfTsKdGVtcGxhdGUgPD4gY2xhc3MgUVR5cGVJbmZvPGNoYXIgPiB7IHB1
YmxpYzogZW51bSB7IGlzQ29tcGxleCA9ICgoKFFfUFJJTUlUSVZFX1RZUEUpICYgUV9QUklNSVRJ
VkVfVFlQRSkgPT0gMCksIGlzU3RhdGljID0gKCgoUV9QUklNSVRJVkVfVFlQRSkgJiAoUV9NT1ZB
QkxFX1RZUEUgfCBRX1BSSU1JVElWRV9UWVBFKSkgPT0gMCksIGlzTGFyZ2UgPSAoc2l6ZW9mKGNo
YXIpPnNpemVvZih2b2lkKikpLCBpc1BvaW50ZXIgPSBmYWxzZSwgaXNEdW1teSA9ICgoKFFfUFJJ
TUlUSVZFX1RZUEUpICYgUV9EVU1NWV9UWVBFKSAhPSAwKSB9OyBzdGF0aWMgaW5saW5lIGNvbnN0
IGNoYXIgKm5hbWUoKSB7IHJldHVybiAiY2hhciI7IH0gfTsKdGVtcGxhdGUgPD4gY2xhc3MgUVR5
cGVJbmZvPHNpZ25lZCBjaGFyID4geyBwdWJsaWM6IGVudW0geyBpc0NvbXBsZXggPSAoKChRX1BS
SU1JVElWRV9UWVBFKSAmIFFfUFJJTUlUSVZFX1RZUEUpID09IDApLCBpc1N0YXRpYyA9ICgoKFFf
UFJJTUlUSVZFX1RZUEUpICYgKFFfTU9WQUJMRV9UWVBFIHwgUV9QUklNSVRJVkVfVFlQRSkpID09
IDApLCBpc0xhcmdlID0gKHNpemVvZihzaWduZWQgY2hhcik+c2l6ZW9mKHZvaWQqKSksIGlzUG9p
bnRlciA9IGZhbHNlLCBpc0R1bW15ID0gKCgoUV9QUklNSVRJVkVfVFlQRSkgJiBRX0RVTU1ZX1RZ
UEUpICE9IDApIH07IHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqbmFtZSgpIHsgcmV0dXJuICJz
aWduZWQgY2hhciI7IH0gfTsKdGVtcGxhdGUgPD4gY2xhc3MgUVR5cGVJbmZvPHVjaGFyID4geyBw
dWJsaWM6IGVudW0geyBpc0NvbXBsZXggPSAoKChRX1BSSU1JVElWRV9UWVBFKSAmIFFfUFJJTUlU
SVZFX1RZUEUpID09IDApLCBpc1N0YXRpYyA9ICgoKFFfUFJJTUlUSVZFX1RZUEUpICYgKFFfTU9W
QUJMRV9UWVBFIHwgUV9QUklNSVRJVkVfVFlQRSkpID09IDApLCBpc0xhcmdlID0gKHNpemVvZih1
Y2hhcik+c2l6ZW9mKHZvaWQqKSksIGlzUG9pbnRlciA9IGZhbHNlLCBpc0R1bW15ID0gKCgoUV9Q
UklNSVRJVkVfVFlQRSkgJiBRX0RVTU1ZX1RZUEUpICE9IDApIH07IHN0YXRpYyBpbmxpbmUgY29u
c3QgY2hhciAqbmFtZSgpIHsgcmV0dXJuICJ1Y2hhciI7IH0gfTsKdGVtcGxhdGUgPD4gY2xhc3Mg
UVR5cGVJbmZvPHNob3J0ID4geyBwdWJsaWM6IGVudW0geyBpc0NvbXBsZXggPSAoKChRX1BSSU1J
VElWRV9UWVBFKSAmIFFfUFJJTUlUSVZFX1RZUEUpID09IDApLCBpc1N0YXRpYyA9ICgoKFFfUFJJ
TUlUSVZFX1RZUEUpICYgKFFfTU9WQUJMRV9UWVBFIHwgUV9QUklNSVRJVkVfVFlQRSkpID09IDAp
LCBpc0xhcmdlID0gKHNpemVvZihzaG9ydCk+c2l6ZW9mKHZvaWQqKSksIGlzUG9pbnRlciA9IGZh
bHNlLCBpc0R1bW15ID0gKCgoUV9QUklNSVRJVkVfVFlQRSkgJiBRX0RVTU1ZX1RZUEUpICE9IDAp
IH07IHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqbmFtZSgpIHsgcmV0dXJuICJzaG9ydCI7IH0g
fTsKdGVtcGxhdGUgPD4gY2xhc3MgUVR5cGVJbmZvPHVzaG9ydCA+IHsgcHVibGljOiBlbnVtIHsg
aXNDb21wbGV4ID0gKCgoUV9QUklNSVRJVkVfVFlQRSkgJiBRX1BSSU1JVElWRV9UWVBFKSA9PSAw
KSwgaXNTdGF0aWMgPSAoKChRX1BSSU1JVElWRV9UWVBFKSAmIChRX01PVkFCTEVfVFlQRSB8IFFf
UFJJTUlUSVZFX1RZUEUpKSA9PSAwKSwgaXNMYXJnZSA9IChzaXplb2YodXNob3J0KT5zaXplb2Yo
dm9pZCopKSwgaXNQb2ludGVyID0gZmFsc2UsIGlzRHVtbXkgPSAoKChRX1BSSU1JVElWRV9UWVBF
KSAmIFFfRFVNTVlfVFlQRSkgIT0gMCkgfTsgc3RhdGljIGlubGluZSBjb25zdCBjaGFyICpuYW1l
KCkgeyByZXR1cm4gInVzaG9ydCI7IH0gfTsKdGVtcGxhdGUgPD4gY2xhc3MgUVR5cGVJbmZvPGlu
dCA+IHsgcHVibGljOiBlbnVtIHsgaXNDb21wbGV4ID0gKCgoUV9QUklNSVRJVkVfVFlQRSkgJiBR
X1BSSU1JVElWRV9UWVBFKSA9PSAwKSwgaXNTdGF0aWMgPSAoKChRX1BSSU1JVElWRV9UWVBFKSAm
IChRX01PVkFCTEVfVFlQRSB8IFFfUFJJTUlUSVZFX1RZUEUpKSA9PSAwKSwgaXNMYXJnZSA9IChz
aXplb2YoaW50KT5zaXplb2Yodm9pZCopKSwgaXNQb2ludGVyID0gZmFsc2UsIGlzRHVtbXkgPSAo
KChRX1BSSU1JVElWRV9UWVBFKSAmIFFfRFVNTVlfVFlQRSkgIT0gMCkgfTsgc3RhdGljIGlubGlu
ZSBjb25zdCBjaGFyICpuYW1lKCkgeyByZXR1cm4gImludCI7IH0gfTsKdGVtcGxhdGUgPD4gY2xh
c3MgUVR5cGVJbmZvPHVpbnQgPiB7IHB1YmxpYzogZW51bSB7IGlzQ29tcGxleCA9ICgoKFFfUFJJ
TUlUSVZFX1RZUEUpICYgUV9QUklNSVRJVkVfVFlQRSkgPT0gMCksIGlzU3RhdGljID0gKCgoUV9Q
UklNSVRJVkVfVFlQRSkgJiAoUV9NT1ZBQkxFX1RZUEUgfCBRX1BSSU1JVElWRV9UWVBFKSkgPT0g
MCksIGlzTGFyZ2UgPSAoc2l6ZW9mKHVpbnQpPnNpemVvZih2b2lkKikpLCBpc1BvaW50ZXIgPSBm
YWxzZSwgaXNEdW1teSA9ICgoKFFfUFJJTUlUSVZFX1RZUEUpICYgUV9EVU1NWV9UWVBFKSAhPSAw
KSB9OyBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKm5hbWUoKSB7IHJldHVybiAidWludCI7IH0g
fTsKdGVtcGxhdGUgPD4gY2xhc3MgUVR5cGVJbmZvPGxvbmcgPiB7IHB1YmxpYzogZW51bSB7IGlz
Q29tcGxleCA9ICgoKFFfUFJJTUlUSVZFX1RZUEUpICYgUV9QUklNSVRJVkVfVFlQRSkgPT0gMCks
IGlzU3RhdGljID0gKCgoUV9QUklNSVRJVkVfVFlQRSkgJiAoUV9NT1ZBQkxFX1RZUEUgfCBRX1BS
SU1JVElWRV9UWVBFKSkgPT0gMCksIGlzTGFyZ2UgPSAoc2l6ZW9mKGxvbmcpPnNpemVvZih2b2lk
KikpLCBpc1BvaW50ZXIgPSBmYWxzZSwgaXNEdW1teSA9ICgoKFFfUFJJTUlUSVZFX1RZUEUpICYg
UV9EVU1NWV9UWVBFKSAhPSAwKSB9OyBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKm5hbWUoKSB7
IHJldHVybiAibG9uZyI7IH0gfTsKdGVtcGxhdGUgPD4gY2xhc3MgUVR5cGVJbmZvPHVsb25nID4g
eyBwdWJsaWM6IGVudW0geyBpc0NvbXBsZXggPSAoKChRX1BSSU1JVElWRV9UWVBFKSAmIFFfUFJJ
TUlUSVZFX1RZUEUpID09IDApLCBpc1N0YXRpYyA9ICgoKFFfUFJJTUlUSVZFX1RZUEUpICYgKFFf
TU9WQUJMRV9UWVBFIHwgUV9QUklNSVRJVkVfVFlQRSkpID09IDApLCBpc0xhcmdlID0gKHNpemVv
Zih1bG9uZyk+c2l6ZW9mKHZvaWQqKSksIGlzUG9pbnRlciA9IGZhbHNlLCBpc0R1bW15ID0gKCgo
UV9QUklNSVRJVkVfVFlQRSkgJiBRX0RVTU1ZX1RZUEUpICE9IDApIH07IHN0YXRpYyBpbmxpbmUg
Y29uc3QgY2hhciAqbmFtZSgpIHsgcmV0dXJuICJ1bG9uZyI7IH0gfTsKdGVtcGxhdGUgPD4gY2xh
c3MgUVR5cGVJbmZvPHFpbnQ2NCA+IHsgcHVibGljOiBlbnVtIHsgaXNDb21wbGV4ID0gKCgoUV9Q
UklNSVRJVkVfVFlQRSkgJiBRX1BSSU1JVElWRV9UWVBFKSA9PSAwKSwgaXNTdGF0aWMgPSAoKChR
X1BSSU1JVElWRV9UWVBFKSAmIChRX01PVkFCTEVfVFlQRSB8IFFfUFJJTUlUSVZFX1RZUEUpKSA9
PSAwKSwgaXNMYXJnZSA9IChzaXplb2YocWludDY0KT5zaXplb2Yodm9pZCopKSwgaXNQb2ludGVy
ID0gZmFsc2UsIGlzRHVtbXkgPSAoKChRX1BSSU1JVElWRV9UWVBFKSAmIFFfRFVNTVlfVFlQRSkg
IT0gMCkgfTsgc3RhdGljIGlubGluZSBjb25zdCBjaGFyICpuYW1lKCkgeyByZXR1cm4gInFpbnQ2
NCI7IH0gfTsKdGVtcGxhdGUgPD4gY2xhc3MgUVR5cGVJbmZvPHF1aW50NjQgPiB7IHB1YmxpYzog
ZW51bSB7IGlzQ29tcGxleCA9ICgoKFFfUFJJTUlUSVZFX1RZUEUpICYgUV9QUklNSVRJVkVfVFlQ
RSkgPT0gMCksIGlzU3RhdGljID0gKCgoUV9QUklNSVRJVkVfVFlQRSkgJiAoUV9NT1ZBQkxFX1RZ
UEUgfCBRX1BSSU1JVElWRV9UWVBFKSkgPT0gMCksIGlzTGFyZ2UgPSAoc2l6ZW9mKHF1aW50NjQp
PnNpemVvZih2b2lkKikpLCBpc1BvaW50ZXIgPSBmYWxzZSwgaXNEdW1teSA9ICgoKFFfUFJJTUlU
SVZFX1RZUEUpICYgUV9EVU1NWV9UWVBFKSAhPSAwKSB9OyBzdGF0aWMgaW5saW5lIGNvbnN0IGNo
YXIgKm5hbWUoKSB7IHJldHVybiAicXVpbnQ2NCI7IH0gfTsKdGVtcGxhdGUgPD4gY2xhc3MgUVR5
cGVJbmZvPGZsb2F0ID4geyBwdWJsaWM6IGVudW0geyBpc0NvbXBsZXggPSAoKChRX1BSSU1JVElW
RV9UWVBFKSAmIFFfUFJJTUlUSVZFX1RZUEUpID09IDApLCBpc1N0YXRpYyA9ICgoKFFfUFJJTUlU
SVZFX1RZUEUpICYgKFFfTU9WQUJMRV9UWVBFIHwgUV9QUklNSVRJVkVfVFlQRSkpID09IDApLCBp
c0xhcmdlID0gKHNpemVvZihmbG9hdCk+c2l6ZW9mKHZvaWQqKSksIGlzUG9pbnRlciA9IGZhbHNl
LCBpc0R1bW15ID0gKCgoUV9QUklNSVRJVkVfVFlQRSkgJiBRX0RVTU1ZX1RZUEUpICE9IDApIH07
IHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqbmFtZSgpIHsgcmV0dXJuICJmbG9hdCI7IH0gfTsK
dGVtcGxhdGUgPD4gY2xhc3MgUVR5cGVJbmZvPGRvdWJsZSA+IHsgcHVibGljOiBlbnVtIHsgaXND
b21wbGV4ID0gKCgoUV9QUklNSVRJVkVfVFlQRSkgJiBRX1BSSU1JVElWRV9UWVBFKSA9PSAwKSwg
aXNTdGF0aWMgPSAoKChRX1BSSU1JVElWRV9UWVBFKSAmIChRX01PVkFCTEVfVFlQRSB8IFFfUFJJ
TUlUSVZFX1RZUEUpKSA9PSAwKSwgaXNMYXJnZSA9IChzaXplb2YoZG91YmxlKT5zaXplb2Yodm9p
ZCopKSwgaXNQb2ludGVyID0gZmFsc2UsIGlzRHVtbXkgPSAoKChRX1BSSU1JVElWRV9UWVBFKSAm
IFFfRFVNTVlfVFlQRSkgIT0gMCkgfTsgc3RhdGljIGlubGluZSBjb25zdCBjaGFyICpuYW1lKCkg
eyByZXR1cm4gImRvdWJsZSI7IH0gfTsKIyAyMTE2ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3Jl
L3FnbG9iYWwuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgdm9pZCAq
cU1hbGxvYyhzaXplX3Qgc2l6ZSk7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpIHZvaWQgcUZyZWUodm9pZCAqcHRyKTsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkgdm9pZCAqcVJlYWxsb2Modm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7Cl9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQgKnFNYWxsb2NBbGlnbmVkKHNpemVf
dCBzaXplLCBzaXplX3QgYWxpZ25tZW50KTsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkgdm9pZCAqcVJlYWxsb2NBbGlnbmVkKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNp
emVfdCBvbGRzaXplLCBzaXplX3QgYWxpZ25tZW50KTsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgdm9pZCBxRnJlZUFsaWduZWQodm9pZCAqcHRyKTsKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgdm9pZCAqcU1lbUNvcHkodm9pZCAqZGVzdCwgY29u
c3Qgdm9pZCAqc3JjLCBzaXplX3Qgbik7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIHZvaWQgKnFNZW1TZXQodm9pZCAqZGVzdCwgaW50IGMsIHNpemVfdCBuKTsKIyAyMTMy
ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI2RlZmluZSBRVF9OT19XQVJO
SU5HUyAKIyAyMTY0ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKY2xhc3Mg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUUZsYWcKewogICAgaW50IGk7
CnB1YmxpYzoKICAgIGlubGluZSBRRmxhZyhpbnQgaSk7CiAgICBpbmxpbmUgb3BlcmF0b3IgaW50
KCkgY29uc3QgeyByZXR1cm4gaTsgfQp9OwoKaW5saW5lIFFGbGFnOjpRRmxhZyhpbnQgYWkpIDog
aShhaSkge30KCmNsYXNzIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFJ
bmNvbXBhdGlibGVGbGFnCnsKICAgIGludCBpOwpwdWJsaWM6CiAgICBpbmxpbmUgZXhwbGljaXQg
UUluY29tcGF0aWJsZUZsYWcoaW50IGkpOwogICAgaW5saW5lIG9wZXJhdG9yIGludCgpIGNvbnN0
IHsgcmV0dXJuIGk7IH0KfTsKCmlubGluZSBRSW5jb21wYXRpYmxlRmxhZzo6UUluY29tcGF0aWJs
ZUZsYWcoaW50IGFpKSA6IGkoYWkpIHt9CgoKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBFbnVtPgpjbGFz
cyBRRmxhZ3MKewogICAgdHlwZWRlZiB2b2lkICoqWmVybzsKICAgIGludCBpOwpwdWJsaWM6CiAg
ICB0eXBlZGVmIEVudW0gZW51bV90eXBlOwogICAgaW5saW5lIFFGbGFncyhjb25zdCBRRmxhZ3Mg
JmYpIDogaShmLmkpIHt9CiAgICBpbmxpbmUgUUZsYWdzKEVudW0gZikgOiBpKGYpIHt9CiAgICBp
bmxpbmUgUUZsYWdzKFplcm8gPSAwKSA6IGkoMCkge30KICAgIGlubGluZSBRRmxhZ3MoUUZsYWcg
ZikgOiBpKGYpIHt9CgogICAgaW5saW5lIFFGbGFncyAmb3BlcmF0b3I9KGNvbnN0IFFGbGFncyAm
ZikgeyBpID0gZi5pOyByZXR1cm4gKnRoaXM7IH0KICAgIGlubGluZSBRRmxhZ3MgJm9wZXJhdG9y
Jj0oaW50IG1hc2spIHsgaSAmPSBtYXNrOyByZXR1cm4gKnRoaXM7IH0KICAgIGlubGluZSBRRmxh
Z3MgJm9wZXJhdG9yJj0odWludCBtYXNrKSB7IGkgJj0gbWFzazsgcmV0dXJuICp0aGlzOyB9CiAg
ICBpbmxpbmUgUUZsYWdzICZvcGVyYXRvcnw9KFFGbGFncyBmKSB7IGkgfD0gZi5pOyByZXR1cm4g
KnRoaXM7IH0KICAgIGlubGluZSBRRmxhZ3MgJm9wZXJhdG9yfD0oRW51bSBmKSB7IGkgfD0gZjsg
cmV0dXJuICp0aGlzOyB9CiAgICBpbmxpbmUgUUZsYWdzICZvcGVyYXRvcl49KFFGbGFncyBmKSB7
IGkgXj0gZi5pOyByZXR1cm4gKnRoaXM7IH0KICAgIGlubGluZSBRRmxhZ3MgJm9wZXJhdG9yXj0o
RW51bSBmKSB7IGkgXj0gZjsgcmV0dXJuICp0aGlzOyB9CgogICAgaW5saW5lIG9wZXJhdG9yIGlu
dCgpIGNvbnN0IHsgcmV0dXJuIGk7IH0KCiAgICBpbmxpbmUgUUZsYWdzIG9wZXJhdG9yfChRRmxh
Z3MgZikgY29uc3QgeyBRRmxhZ3MgZzsgZy5pID0gaSB8IGYuaTsgcmV0dXJuIGc7IH0KICAgIGlu
bGluZSBRRmxhZ3Mgb3BlcmF0b3J8KEVudW0gZikgY29uc3QgeyBRRmxhZ3MgZzsgZy5pID0gaSB8
IGY7IHJldHVybiBnOyB9CiAgICBpbmxpbmUgUUZsYWdzIG9wZXJhdG9yXihRRmxhZ3MgZikgY29u
c3QgeyBRRmxhZ3MgZzsgZy5pID0gaSBeIGYuaTsgcmV0dXJuIGc7IH0KICAgIGlubGluZSBRRmxh
Z3Mgb3BlcmF0b3JeKEVudW0gZikgY29uc3QgeyBRRmxhZ3MgZzsgZy5pID0gaSBeIGY7IHJldHVy
biBnOyB9CiAgICBpbmxpbmUgUUZsYWdzIG9wZXJhdG9yJihpbnQgbWFzaykgY29uc3QgeyBRRmxh
Z3MgZzsgZy5pID0gaSAmIG1hc2s7IHJldHVybiBnOyB9CiAgICBpbmxpbmUgUUZsYWdzIG9wZXJh
dG9yJih1aW50IG1hc2spIGNvbnN0IHsgUUZsYWdzIGc7IGcuaSA9IGkgJiBtYXNrOyByZXR1cm4g
ZzsgfQogICAgaW5saW5lIFFGbGFncyBvcGVyYXRvciYoRW51bSBmKSBjb25zdCB7IFFGbGFncyBn
OyBnLmkgPSBpICYgZjsgcmV0dXJuIGc7IH0KICAgIGlubGluZSBRRmxhZ3Mgb3BlcmF0b3J+KCkg
Y29uc3QgeyBRRmxhZ3MgZzsgZy5pID0gfmk7IHJldHVybiBnOyB9CgogICAgaW5saW5lIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWk7IH0KCiAgICBpbmxpbmUgYm9vbCB0ZXN0Rmxh
ZyhFbnVtIGYpIGNvbnN0IHsgcmV0dXJuIChpICYgZikgPT0gZiAmJiAoZiAhPSAwIHx8IGkgPT0g
aW50KGYpICk7IH0KfTsKCiNkZWZpbmUgUV9ERUNMQVJFX0ZMQUdTKEZsYWdzLEVudW0pIHR5cGVk
ZWYgUUZsYWdzPEVudW0+IEZsYWdzOwoKCgoKCiNkZWZpbmUgUV9ERUNMQVJFX0lOQ09NUEFUSUJM
RV9GTEFHUyhGbGFncykgaW5saW5lIFFJbmNvbXBhdGlibGVGbGFnIG9wZXJhdG9yfChGbGFnczo6
ZW51bV90eXBlIGYxLCBpbnQgZjIpIHsgcmV0dXJuIFFJbmNvbXBhdGlibGVGbGFnKGludChmMSkg
fCBmMik7IH0KCgoKCiNkZWZpbmUgUV9ERUNMQVJFX09QRVJBVE9SU19GT1JfRkxBR1MoRmxhZ3Mp
IGlubGluZSBRRmxhZ3M8RmxhZ3M6OmVudW1fdHlwZT4gb3BlcmF0b3J8KEZsYWdzOjplbnVtX3R5
cGUgZjEsIEZsYWdzOjplbnVtX3R5cGUgZjIpIHsgcmV0dXJuIFFGbGFnczxGbGFnczo6ZW51bV90
eXBlPihmMSkgfCBmMjsgfSBpbmxpbmUgUUZsYWdzPEZsYWdzOjplbnVtX3R5cGU+IG9wZXJhdG9y
fChGbGFnczo6ZW51bV90eXBlIGYxLCBRRmxhZ3M8RmxhZ3M6OmVudW1fdHlwZT4gZjIpIHsgcmV0
dXJuIGYyIHwgZjE7IH0gUV9ERUNMQVJFX0lOQ09NUEFUSUJMRV9GTEFHUyhGbGFncykKIyAyMjUx
ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CmNsYXNzIFFGb3JlYWNoQ29udGFpbmVyIHsKcHVibGljOgogICAgaW5saW5lIFFGb3JlYWNo
Q29udGFpbmVyKGNvbnN0IFQmIHQpIDogYyh0KSwgYnJrKDApLCBpKGMuYmVnaW4oKSksIGUoYy5l
bmQoKSkgeyB9CiAgICBjb25zdCBUIGM7CiAgICBpbnQgYnJrOwogICAgdHlwZW5hbWUgVDo6Y29u
c3RfaXRlcmF0b3IgaSwgZTsKfTsKCiNkZWZpbmUgUV9GT1JFQUNIKHZhcmlhYmxlLGNvbnRhaW5l
cikgZm9yIChRRm9yZWFjaENvbnRhaW5lcjxfX3R5cGVvZl9fKGNvbnRhaW5lcik+IF9jb250YWlu
ZXJfKGNvbnRhaW5lcik7ICFfY29udGFpbmVyXy5icmsgJiYgX2NvbnRhaW5lcl8uaSAhPSBfY29u
dGFpbmVyXy5lOyBfX2V4dGVuc2lvbl9fICh7ICsrX2NvbnRhaW5lcl8uYnJrOyArK19jb250YWlu
ZXJfLmk7IH0pKSBmb3IgKHZhcmlhYmxlID0gKl9jb250YWluZXJfLmk7OyBfX2V4dGVuc2lvbl9f
ICh7LS1fY29udGFpbmVyXy5icms7IGJyZWFrO30pKQojIDIzMjUgIi9vcHQvbG9jYWwvaW5jbHVk
ZS9RdENvcmUvcWdsb2JhbC5oIgojZGVmaW5lIFFfRk9SRVZFUiBmb3IoOzspCgoKI2RlZmluZSBm
b3JlYWNoIFFfRk9SRUFDSAoKCiNkZWZpbmUgZm9yZXZlciBRX0ZPUkVWRVIKIyAyMzQzICIvb3B0
L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
YXRpYyBpbmxpbmUgVCAqcUdldFB0ckhlbHBlcihUICpwdHIpIHsgcmV0dXJuIHB0cjsgfQp0ZW1w
bGF0ZSA8dHlwZW5hbWUgV3JhcHBlcj4gc3RhdGljIGlubGluZSB0eXBlbmFtZSBXcmFwcGVyOjpw
b2ludGVyIHFHZXRQdHJIZWxwZXIoY29uc3QgV3JhcHBlciAmcCkgeyByZXR1cm4gcC5kYXRhKCk7
IH0KCiNkZWZpbmUgUV9ERUNMQVJFX1BSSVZBVEUoQ2xhc3MpIGlubGluZSBDbGFzcyAjI1ByaXZh
dGUqIGRfZnVuYygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q2xhc3MgIyNQcml2YXRlICo+
KHFHZXRQdHJIZWxwZXIoZF9wdHIpKTsgfSBpbmxpbmUgY29uc3QgQ2xhc3MgIyNQcml2YXRlKiBk
X2Z1bmMoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IENsYXNzICMjUHJp
dmF0ZSAqPihxR2V0UHRySGVscGVyKGRfcHRyKSk7IH0gZnJpZW5kIGNsYXNzIENsYXNzICMjUHJp
dmF0ZTsKCgoKCiNkZWZpbmUgUV9ERUNMQVJFX1BSSVZBVEVfRChEcHRyLENsYXNzKSBpbmxpbmUg
Q2xhc3MgIyNQcml2YXRlKiBkX2Z1bmMoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PENsYXNz
ICMjUHJpdmF0ZSAqPihEcHRyKTsgfSBpbmxpbmUgY29uc3QgQ2xhc3MgIyNQcml2YXRlKiBkX2Z1
bmMoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IENsYXNzICMjUHJpdmF0
ZSAqPihEcHRyKTsgfSBmcmllbmQgY2xhc3MgQ2xhc3MgIyNQcml2YXRlOwoKCgoKI2RlZmluZSBR
X0RFQ0xBUkVfUFVCTElDKENsYXNzKSBpbmxpbmUgQ2xhc3MqIHFfZnVuYygpIHsgcmV0dXJuIHN0
YXRpY19jYXN0PENsYXNzICo+KHFfcHRyKTsgfSBpbmxpbmUgY29uc3QgQ2xhc3MqIHFfZnVuYygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENsYXNzICo+KHFfcHRyKTsgfSBmcmll
bmQgY2xhc3MgQ2xhc3M7CgoKCgojZGVmaW5lIFFfRChDbGFzcykgQ2xhc3MgIyNQcml2YXRlICog
Y29uc3QgZCA9IGRfZnVuYygpCiNkZWZpbmUgUV9RKENsYXNzKSBDbGFzcyAqIGNvbnN0IHEgPSBx
X2Z1bmMoKQoKI2RlZmluZSBRVF9UUl9OT09QKHgpICh4KQojZGVmaW5lIFFUX1RSX05PT1BfVVRG
OCh4KSAoeCkKI2RlZmluZSBRVF9UUkFOU0xBVEVfTk9PUChzY29wZSx4KSAoeCkKI2RlZmluZSBR
VF9UUkFOU0xBVEVfTk9PUF9VVEY4KHNjb3BlLHgpICh4KQojZGVmaW5lIFFUX1RSQU5TTEFURV9O
T09QMyhzY29wZSx4LGNvbW1lbnQpIHt4LCBjb21tZW50fQojZGVmaW5lIFFUX1RSQU5TTEFURV9O
T09QM19VVEY4KHNjb3BlLHgsY29tbWVudCkge3gsIGNvbW1lbnR9CgoKCgoKCl9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFTdHJpbmcgcXRUcklkKGNvbnN0IGNoYXIgKmlk
LCBpbnQgbiA9IC0xKTsKCiNkZWZpbmUgUVRfVFJJRF9OT09QKGlkKSBpZAoKCgojZGVmaW5lIFFE
T0NfUFJPUEVSVFkodGV4dCkgCiMgMjQwMiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZ2xv
YmFsLmgiCiNkZWZpbmUgUV9ESVNBQkxFX0NPUFkoQ2xhc3MpIENsYXNzKGNvbnN0IENsYXNzICYp
OyBDbGFzcyAmb3BlcmF0b3I9KGNvbnN0IENsYXNzICYpOwoKCgpjbGFzcyBRQnl0ZUFycmF5Owpf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRQnl0ZUFycmF5IHFnZXRlbnYo
Y29uc3QgY2hhciAqdmFyTmFtZSk7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpIGJvb2wgcXB1dGVudihjb25zdCBjaGFyICp2YXJOYW1lLCBjb25zdCBRQnl0ZUFycmF5JiB2
YWx1ZSk7CgppbmxpbmUgaW50IHFJbnRDYXN0KGRvdWJsZSBmKSB7IHJldHVybiBpbnQoZik7IH0K
aW5saW5lIGludCBxSW50Q2FzdChmbG9hdCBmKSB7IHJldHVybiBpbnQoZik7IH0KCgoKCl9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQgcXNyYW5kKHVpbnQgc2VlZCk7
Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGludCBxcmFuZCgpOwojIDI1
MTcgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgojZGVmaW5lIFFUX01PRFVM
RV9DT1JFIDB4MDAwMDEKI2RlZmluZSBRVF9NT0RVTEVfR1VJIDB4MDAwMDIKI2RlZmluZSBRVF9N
T0RVTEVfTkVUV09SSyAweDAwMDA0CiNkZWZpbmUgUVRfTU9EVUxFX09QRU5HTCAweDAwMDA4CiNk
ZWZpbmUgUVRfTU9EVUxFX1NRTCAweDAwMDEwCiNkZWZpbmUgUVRfTU9EVUxFX1hNTCAweDAwMDIw
CiNkZWZpbmUgUVRfTU9EVUxFX1FUM1NVUFBPUlRMSUdIVCAweDAwMDQwCiNkZWZpbmUgUVRfTU9E
VUxFX1FUM1NVUFBPUlQgMHgwMDA4MAojZGVmaW5lIFFUX01PRFVMRV9TVkcgMHgwMDEwMAojZGVm
aW5lIFFUX01PRFVMRV9BQ1RJVkVRVCAweDAwMjAwCiNkZWZpbmUgUVRfTU9EVUxFX0dSQVBISUNT
VklFVyAweDAwNDAwCiNkZWZpbmUgUVRfTU9EVUxFX1NDUklQVCAweDAwODAwCiNkZWZpbmUgUVRf
TU9EVUxFX1hNTFBBVFRFUk5TIDB4MDEwMDAKI2RlZmluZSBRVF9NT0RVTEVfSEVMUCAweDAyMDAw
CiNkZWZpbmUgUVRfTU9EVUxFX1RFU1QgMHgwNDAwMAojZGVmaW5lIFFUX01PRFVMRV9EQlVTIDB4
MDgwMDAKI2RlZmluZSBRVF9NT0RVTEVfU0NSSVBUVE9PTFMgMHgxMDAwMAojZGVmaW5lIFFUX01P
RFVMRV9PUEVOVkcgMHgyMDAwMAojZGVmaW5lIFFUX01PRFVMRV9NVUxUSU1FRElBIDB4NDAwMDAK
I2RlZmluZSBRVF9NT0RVTEVfREVDTEFSQVRJVkUgMHg4MDAwMAoKCiNkZWZpbmUgUVRfRURJVElP
Tl9DT05TT0xFIChRVF9NT0RVTEVfQ09SRSB8IFFUX01PRFVMRV9ORVRXT1JLIHwgUVRfTU9EVUxF
X1NRTCB8IFFUX01PRFVMRV9TQ1JJUFQgfCBRVF9NT0RVTEVfTVVMVElNRURJQSB8IFFUX01PRFVM
RV9YTUwgfCBRVF9NT0RVTEVfWE1MUEFUVEVSTlMgfCBRVF9NT0RVTEVfVEVTVCB8IFFUX01PRFVM
RV9EQlVTKQojIDI1NDggIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgojZGVm
aW5lIFFUX0VESVRJT05fREVTS1RPUExJR0hUIChRVF9NT0RVTEVfQ09SRSB8IFFUX01PRFVMRV9H
VUkgfCBRVF9NT0RVTEVfUVQzU1VQUE9SVExJR0hUIHwgUVRfTU9EVUxFX1RFU1QgfCBRVF9NT0RV
TEVfREJVUykKCgoKCiNkZWZpbmUgUVRfRURJVElPTl9PUEVOU09VUkNFIChRVF9NT0RVTEVfQ09S
RSB8IFFUX01PRFVMRV9HVUkgfCBRVF9NT0RVTEVfTkVUV09SSyB8IFFUX01PRFVMRV9PUEVOR0wg
fCBRVF9NT0RVTEVfT1BFTlZHIHwgUVRfTU9EVUxFX1NRTCB8IFFUX01PRFVMRV9NVUxUSU1FRElB
IHwgUVRfTU9EVUxFX1hNTCB8IFFUX01PRFVMRV9YTUxQQVRURVJOUyB8IFFUX01PRFVMRV9TQ1JJ
UFQgfCBRVF9NT0RVTEVfU0NSSVBUVE9PTFMgfCBRVF9NT0RVTEVfUVQzU1VQUE9SVExJR0hUIHwg
UVRfTU9EVUxFX1FUM1NVUFBPUlQgfCBRVF9NT0RVTEVfU1ZHIHwgUVRfTU9EVUxFX0RFQ0xBUkFU
SVZFIHwgUVRfTU9EVUxFX0dSQVBISUNTVklFVyB8IFFUX01PRFVMRV9IRUxQIHwgUVRfTU9EVUxF
X1RFU1QgfCBRVF9NT0RVTEVfREJVUyB8IFFUX01PRFVMRV9BQ1RJVkVRVCkKIyAyNTczICIvb3B0
L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FnbG9iYWwuaCIKI2RlZmluZSBRVF9FRElUSU9OX0RFU0tU
T1AgKFFUX0VESVRJT05fT1BFTlNPVVJDRSkKI2RlZmluZSBRVF9FRElUSU9OX1VOSVZFUlNBTCBR
VF9FRElUSU9OX0RFU0tUT1AKI2RlZmluZSBRVF9FRElUSU9OX0FDQURFTUlDIFFUX0VESVRJT05f
REVTS1RPUAojZGVmaW5lIFFUX0VESVRJT05fRURVQ0FUSU9OQUwgUVRfRURJVElPTl9ERVNLVE9Q
CiNkZWZpbmUgUVRfRURJVElPTl9FVkFMVUFUSU9OIFFUX0VESVRJT05fREVTS1RPUAojIDI1ODgg
Ii9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWdsb2JhbC5oIgojZGVmaW5lIFFUX0xJQ0VOU0VE
X01PRFVMRSh4KSBlbnVtIFF0VmFsaWRMaWNlbnNlRm9yICMjeCAjI01vZHVsZSB7IExpY2Vuc2Vk
ICMjeCA9IHRydWUgfTsKCgoKCgoKZW51bSBRdFZhbGlkTGljZW5zZUZvckNvcmVNb2R1bGUgeyBM
aWNlbnNlZENvcmUgPSB0cnVlIH07CgoKZW51bSBRdFZhbGlkTGljZW5zZUZvckd1aU1vZHVsZSB7
IExpY2Vuc2VkR3VpID0gdHJ1ZSB9OwoKCmVudW0gUXRWYWxpZExpY2Vuc2VGb3JOZXR3b3JrTW9k
dWxlIHsgTGljZW5zZWROZXR3b3JrID0gdHJ1ZSB9OwoKCmVudW0gUXRWYWxpZExpY2Vuc2VGb3JP
cGVuR0xNb2R1bGUgeyBMaWNlbnNlZE9wZW5HTCA9IHRydWUgfTsKCgplbnVtIFF0VmFsaWRMaWNl
bnNlRm9yT3BlblZHTW9kdWxlIHsgTGljZW5zZWRPcGVuVkcgPSB0cnVlIH07CgoKZW51bSBRdFZh
bGlkTGljZW5zZUZvclNxbE1vZHVsZSB7IExpY2Vuc2VkU3FsID0gdHJ1ZSB9OwoKCmVudW0gUXRW
YWxpZExpY2Vuc2VGb3JNdWx0aW1lZGlhTW9kdWxlIHsgTGljZW5zZWRNdWx0aW1lZGlhID0gdHJ1
ZSB9OwoKCmVudW0gUXRWYWxpZExpY2Vuc2VGb3JYbWxNb2R1bGUgeyBMaWNlbnNlZFhtbCA9IHRy
dWUgfTsKCgplbnVtIFF0VmFsaWRMaWNlbnNlRm9yWG1sUGF0dGVybnNNb2R1bGUgeyBMaWNlbnNl
ZFhtbFBhdHRlcm5zID0gdHJ1ZSB9OwoKCmVudW0gUXRWYWxpZExpY2Vuc2VGb3JIZWxwTW9kdWxl
IHsgTGljZW5zZWRIZWxwID0gdHJ1ZSB9OwoKCmVudW0gUXRWYWxpZExpY2Vuc2VGb3JTY3JpcHRN
b2R1bGUgeyBMaWNlbnNlZFNjcmlwdCA9IHRydWUgfTsKCgplbnVtIFF0VmFsaWRMaWNlbnNlRm9y
U2NyaXB0VG9vbHNNb2R1bGUgeyBMaWNlbnNlZFNjcmlwdFRvb2xzID0gdHJ1ZSB9OwoKCmVudW0g
UXRWYWxpZExpY2Vuc2VGb3JRdDNTdXBwb3J0TGlnaHRNb2R1bGUgeyBMaWNlbnNlZFF0M1N1cHBv
cnRMaWdodCA9IHRydWUgfTsKCgplbnVtIFF0VmFsaWRMaWNlbnNlRm9yUXQzU3VwcG9ydE1vZHVs
ZSB7IExpY2Vuc2VkUXQzU3VwcG9ydCA9IHRydWUgfTsKCgplbnVtIFF0VmFsaWRMaWNlbnNlRm9y
U3ZnTW9kdWxlIHsgTGljZW5zZWRTdmcgPSB0cnVlIH07CgoKZW51bSBRdFZhbGlkTGljZW5zZUZv
ckRlY2xhcmF0aXZlTW9kdWxlIHsgTGljZW5zZWREZWNsYXJhdGl2ZSA9IHRydWUgfTsKCgplbnVt
IFF0VmFsaWRMaWNlbnNlRm9yQWN0aXZlUXRNb2R1bGUgeyBMaWNlbnNlZEFjdGl2ZVF0ID0gdHJ1
ZSB9OwoKCmVudW0gUXRWYWxpZExpY2Vuc2VGb3JUZXN0TW9kdWxlIHsgTGljZW5zZWRUZXN0ID0g
dHJ1ZSB9OwoKCmVudW0gUXRWYWxpZExpY2Vuc2VGb3JEQnVzTW9kdWxlIHsgTGljZW5zZWREQnVz
ID0gdHJ1ZSB9OwoKCiNkZWZpbmUgUVRfTU9EVUxFKHgpIHR5cGVkZWYgUXRWYWxpZExpY2Vuc2VG
b3IgIyN4ICMjTW9kdWxlIFF0ICMjeCAjI01vZHVsZTsKIyAyNjgzICIvb3B0L2xvY2FsL2luY2x1
ZGUvUXRDb3JlL3FnbG9iYWwuaCIKCgojIDUzICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCIgMgoKY2xhc3MgUU11dGV4OwpjbGFzcyBRV2Fp
dENvbmRpdGlvbjsKCgoKbmFtZXNwYWNlIFdURiB7CiMgNzQgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIgp0eXBlZGVmIDo6UU11dGV4KiBQ
bGF0Zm9ybU11dGV4Owp0eXBlZGVmIHZvaWQqIFBsYXRmb3JtUmVhZFdyaXRlTG9jazsKdHlwZWRl
ZiA6OlFXYWl0Q29uZGl0aW9uKiBQbGF0Zm9ybUNvbmRpdGlvbjsKIyAxMDAgIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIgpjbGFzcyBNdXRl
eCB7CiAgICBwcml2YXRlOiBNdXRleChjb25zdCBNdXRleCYpOyBNdXRleCYgb3BlcmF0b3I9KGNv
bnN0IE11dGV4Jik7IHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkg
eyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0
dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHZvaWQqIHAgPSA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9j
KHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyByZXR1cm4gcDsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0
ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IDo6V1RGOjpmYXN0
RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1h
bGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyByZXR1cm4g
cDsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxsb2NN
YXRjaFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJy
YXkpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgVGhpc0lzSGVy
ZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CnB1YmxpYzoKICAgIE11dGV4KCk7CiAg
ICB+TXV0ZXgoKTsKCiAgICB2b2lkIGxvY2soKTsKICAgIGJvb2wgdHJ5TG9jaygpOwogICAgdm9p
ZCB1bmxvY2soKTsKCnB1YmxpYzoKICAgIFBsYXRmb3JtTXV0ZXgmIGltcGwoKSB7IHJldHVybiBt
X211dGV4OyB9CnByaXZhdGU6CiAgICBQbGF0Zm9ybU11dGV4IG1fbXV0ZXg7Cn07Cgp0eXBlZGVm
IExvY2tlcjxNdXRleD4gTXV0ZXhMb2NrZXI7CgpjbGFzcyBSZWFkV3JpdGVMb2NrIHsKICAgIHBy
aXZhdGU6IFJlYWRXcml0ZUxvY2soY29uc3QgUmVhZFdyaXRlTG9jayYpOyBSZWFkV3JpdGVMb2Nr
JiBvcGVyYXRvcj0oY29uc3QgUmVhZFdyaXRlTG9jayYpOwpwdWJsaWM6CiAgICBSZWFkV3JpdGVM
b2NrKCk7CiAgICB+UmVhZFdyaXRlTG9jaygpOwoKICAgIHZvaWQgcmVhZExvY2soKTsKICAgIGJv
b2wgdHJ5UmVhZExvY2soKTsKCiAgICB2b2lkIHdyaXRlTG9jaygpOwogICAgYm9vbCB0cnlXcml0
ZUxvY2soKTsKCiAgICB2b2lkIHVubG9jaygpOwoKcHJpdmF0ZToKICAgIFBsYXRmb3JtUmVhZFdy
aXRlTG9jayBtX3JlYWRXcml0ZUxvY2s7Cn07CgpjbGFzcyBUaHJlYWRDb25kaXRpb24gewogICAg
cHJpdmF0ZTogVGhyZWFkQ29uZGl0aW9uKGNvbnN0IFRocmVhZENvbmRpdGlvbiYpOyBUaHJlYWRD
b25kaXRpb24mIG9wZXJhdG9yPShjb25zdCBUaHJlYWRDb25kaXRpb24mKTsKcHVibGljOgogICAg
VGhyZWFkQ29uZGl0aW9uKCk7CiAgICB+VGhyZWFkQ29uZGl0aW9uKCk7CgogICAgdm9pZCB3YWl0
KE11dGV4JiBtdXRleCk7CgoKICAgIGJvb2wgdGltZWRXYWl0KE11dGV4JiwgZG91YmxlIGFic29s
dXRlVGltZSk7CiAgICB2b2lkIHNpZ25hbCgpOwogICAgdm9pZCBicm9hZGNhc3QoKTsKCnByaXZh
dGU6CiAgICBQbGF0Zm9ybUNvbmRpdGlvbiBtX2NvbmRpdGlvbjsKfTsKCgoKCgoKCn0KCnVzaW5n
IFdURjo6TXV0ZXg7CnVzaW5nIFdURjo6TXV0ZXhMb2NrZXI7CnVzaW5nIFdURjo6VGhyZWFkQ29u
ZGl0aW9uOwojIDY3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmgiIDIKCm5hbWVzcGFjZSBXVEYgewoKY2xhc3MgVGhyZWFkU2FmZVJlZkNv
dW50ZWRCYXNlIHsKICAgIHByaXZhdGU6IFRocmVhZFNhZmVSZWZDb3VudGVkQmFzZShjb25zdCBU
aHJlYWRTYWZlUmVmQ291bnRlZEJhc2UmKTsgVGhyZWFkU2FmZVJlZkNvdW50ZWRCYXNlJiBvcGVy
YXRvcj0oY29uc3QgVGhyZWFkU2FmZVJlZkNvdW50ZWRCYXNlJik7CiAgICBwdWJsaWM6IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RG
OjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9j
VHlwZUNsYXNzTmV3KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkg
eyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6
QWxsb2NUeXBlQ2xhc3NOZXcpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6
OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpB
bGxvY1R5cGVDbGFzc05ld0FycmF5KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVb
XSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6
OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9
IHByaXZhdGU6IHR5cGVkZWYgaW50IFRoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhp
c01hY3JvOwpwdWJsaWM6CiAgICBUaHJlYWRTYWZlUmVmQ291bnRlZEJhc2UoaW50IGluaXRpYWxS
ZWZDb3VudCA9IDEpCiAgICAgICAgOiBtX3JlZkNvdW50KGluaXRpYWxSZWZDb3VudCkKICAgIHsK
ICAgIH0KCiAgICB2b2lkIHJlZigpCiAgICB7CgogICAgICAgIGF0b21pY0luY3JlbWVudCgmbV9y
ZWZDb3VudCk7CgoKCgogICAgfQoKICAgIGJvb2wgaGFzT25lUmVmKCkKICAgIHsKICAgICAgICBy
ZXR1cm4gcmVmQ291bnQoKSA9PSAxOwogICAgfQoKICAgIGludCByZWZDb3VudCgpIGNvbnN0CiAg
ICB7CgoKCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludCBjb25zdCB2b2xhdGlsZSAmPiht
X3JlZkNvdW50KTsKICAgIH0KCnByb3RlY3RlZDoKCiAgICBib29sIGRlcmVmQmFzZSgpCiAgICB7
CgogICAgICAgIDsKICAgICAgICBpZiAoYXRvbWljRGVjcmVtZW50KCZtX3JlZkNvdW50KSA8PSAw
KSB7CiAgICAgICAgICAgIDsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQojIDEy
MiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oIgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCnByaXZhdGU6CiAgICB0ZW1wbGF0ZTxj
bGFzcyBUPgogICAgZnJpZW5kIGNsYXNzIENyb3NzVGhyZWFkUmVmQ291bnRlZDsKCiAgICBpbnQg
bV9yZWZDb3VudDsKCgoKfTsKCnRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIFRocmVhZFNhZmVSZWZD
b3VudGVkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkQmFzZSB7CnB1YmxpYzoKICAgIHZv
aWQgZGVyZWYoKQogICAgewogICAgICAgIGlmIChkZXJlZkJhc2UoKSkKICAgICAgICAgICAgZGVs
ZXRlIHN0YXRpY19jYXN0PFQqPih0aGlzKTsKICAgIH0KCnByb3RlY3RlZDoKICAgIFRocmVhZFNh
ZmVSZWZDb3VudGVkKCkKICAgIHsKICAgIH0KfTsKCn0KCnVzaW5nIFdURjo6VGhyZWFkU2FmZVJl
ZkNvdW50ZWQ7CiMgNzAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
aW5nLmgiIDIKCgoKI2RlZmluZSBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoVCxuYW1lKSBX
VEY6OmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOyBzdGF0aWMgVCBuYW1l
OyBXVEY6OnVubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CgoKCgpuYW1l
c3BhY2UgV1RGIHsKCnR5cGVkZWYgdWludDMyX3QgVGhyZWFkSWRlbnRpZmllcjsKdHlwZWRlZiB2
b2lkKiAoKlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCk7CgoKCgp2b2lkIGluaXRpYWxp
emVUaHJlYWRpbmcoKTsKCgoKVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVu
Y3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKCgpUaHJlYWRJZGVudGlmaWVy
IGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciog
dGhyZWFkTmFtZSk7CgoKCnZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25z
dCBjaGFyKiB0aHJlYWROYW1lKTsKClRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOwpp
bnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKTsKdm9p
ZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7Cgp2b2lkIHlpZWxkKCk7Cgp2b2lkIGxv
Y2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwp2b2lkIHVubG9ja0F0b21pY2Fs
bHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7Cgp9Cgp1c2luZyBXVEY6OlRocmVhZElkZW50aWZp
ZXI7CnVzaW5nIFdURjo6Y3JlYXRlVGhyZWFkOwp1c2luZyBXVEY6OmN1cnJlbnRUaHJlYWQ7CnVz
aW5nIFdURjo6ZGV0YWNoVGhyZWFkOwp1c2luZyBXVEY6OndhaXRGb3JUaHJlYWRDb21wbGV0aW9u
Owp1c2luZyBXVEY6OnlpZWxkOwojIDMwICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0hhc2hUYWJsZS5oIiAyCgpuYW1lc3BhY2UgV1RGIHsKCiNkZWZpbmUgRFVNUF9IQVNIVEFC
TEVfU1RBVFMgMAoKI2RlZmluZSBDSEVDS19IQVNIVEFCTEVfQ09OU0lTVEVOQ1kgMAoKCgoKCiNk
ZWZpbmUgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUyAxCiNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxF
X1VTRV9BRlRFUl9ERVNUUlVDVElPTiAxCiMgNjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvSGFzaFRhYmxlLmgiCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgY2xhc3MgSGFzaFRhYmxlOwogICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KICAgIGNsYXNzIEhhc2hUYWJsZUl0ZXJhdG9yOwogICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIGNsYXNzIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHZvaWQgYWRkSXRlcmF0b3IoY29u
c3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+KiwKICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Kik7CgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4KICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiopOwojIDky
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oIgogICAgdHlw
ZWRlZiBlbnVtIHsgSGFzaEl0ZW1Lbm93bkdvb2QgfSBIYXNoSXRlbUtub3duR29vZFRhZzsKCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPgogICAgY2xhc3MgSGFzaFRhYmxlQ29uc3RJdGVyYXRvciB7CiAgICBwcml2YXRlOgog
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CiAgICAgICAgdHlwZWRlZiBI
YXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7CiAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7
CiAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7CiAgICAgICAg
dHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUqIFBvaW50ZXJUeXBlOwoKICAgICAgICBmcmllbmQgY2xh
c3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OwogICAgICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjsKCiAg
ICAgICAgdm9pZCBza2lwRW1wdHlCdWNrZXRzKCkKICAgICAgICB7CiAgICAgICAgICAgIHdoaWxl
IChtX3Bvc2l0aW9uICE9IG1fZW5kUG9zaXRpb24gJiYgSGFzaFRhYmxlVHlwZTo6aXNFbXB0eU9y
RGVsZXRlZEJ1Y2tldCgqbV9wb3NpdGlvbikpCiAgICAgICAgICAgICAgICArK21fcG9zaXRpb247
CiAgICAgICAgfQoKICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJs
ZVR5cGUqIHRhYmxlLCBQb2ludGVyVHlwZSBwb3NpdGlvbiwgUG9pbnRlclR5cGUgZW5kUG9zaXRp
b24pCiAgICAgICAgICAgIDogbV9wb3NpdGlvbihwb3NpdGlvbiksIG1fZW5kUG9zaXRpb24oZW5k
UG9zaXRpb24pCiAgICAgICAgewogICAgICAgICAgICBhZGRJdGVyYXRvcih0YWJsZSwgdGhpcyk7
CiAgICAgICAgICAgIHNraXBFbXB0eUJ1Y2tldHMoKTsKICAgICAgICB9CgogICAgICAgIEhhc2hU
YWJsZUNvbnN0SXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlVHlwZSogdGFibGUsIFBvaW50ZXJUeXBl
IHBvc2l0aW9uLCBQb2ludGVyVHlwZSBlbmRQb3NpdGlvbiwgSGFzaEl0ZW1Lbm93bkdvb2RUYWcp
CiAgICAgICAgICAgIDogbV9wb3NpdGlvbihwb3NpdGlvbiksIG1fZW5kUG9zaXRpb24oZW5kUG9z
aXRpb24pCiAgICAgICAgewogICAgICAgICAgICBhZGRJdGVyYXRvcih0YWJsZSwgdGhpcyk7CiAg
ICAgICAgfQoKICAgIHB1YmxpYzoKICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yKCkKICAg
ICAgICB7CiAgICAgICAgICAgIGFkZEl0ZXJhdG9yKHN0YXRpY19jYXN0PGNvbnN0IEhhc2hUYWJs
ZVR5cGUqPigwKSwgdGhpcyk7CiAgICAgICAgfQoKCgoKICAgICAgICB+SGFzaFRhYmxlQ29uc3RJ
dGVyYXRvcigpCiAgICAgICAgewogICAgICAgICAgICByZW1vdmVJdGVyYXRvcih0aGlzKTsKICAg
ICAgICB9CgogICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3IoY29uc3QgY29uc3RfaXRlcmF0
b3ImIG90aGVyKQogICAgICAgICAgICA6IG1fcG9zaXRpb24ob3RoZXIubV9wb3NpdGlvbiksIG1f
ZW5kUG9zaXRpb24ob3RoZXIubV9lbmRQb3NpdGlvbikKICAgICAgICB7CiAgICAgICAgICAgIGFk
ZEl0ZXJhdG9yKG90aGVyLm1fdGFibGUsIHRoaXMpOwogICAgICAgIH0KCiAgICAgICAgY29uc3Rf
aXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpCiAgICAgICAg
ewogICAgICAgICAgICBtX3Bvc2l0aW9uID0gb3RoZXIubV9wb3NpdGlvbjsKICAgICAgICAgICAg
bV9lbmRQb3NpdGlvbiA9IG90aGVyLm1fZW5kUG9zaXRpb247CgogICAgICAgICAgICByZW1vdmVJ
dGVyYXRvcih0aGlzKTsKICAgICAgICAgICAgYWRkSXRlcmF0b3Iob3RoZXIubV90YWJsZSwgdGhp
cyk7CgogICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKCiAgICAgICAgUG9pbnRl
clR5cGUgZ2V0KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIGNoZWNrVmFsaWRpdHkoKTsK
ICAgICAgICAgICAgcmV0dXJuIG1fcG9zaXRpb247CiAgICAgICAgfQogICAgICAgIFJlZmVyZW5j
ZVR5cGUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAgICAgUG9pbnRl
clR5cGUgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CgogICAgICAgIGNvbnN0
X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAgICB7CiAgICAgICAgICAgIGNoZWNrVmFsaWRp
dHkoKTsKICAgICAgICAgICAgZG8gaWYgKCEobV9wb3NpdGlvbiAhPSBtX2VuZFBvc2l0aW9uKSkg
eyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0hhc2hUYWJsZS5oIiwgMTY5LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9wb3NpdGlv
biAhPSBtX2VuZFBvc2l0aW9uIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICop
KHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwogICAgICAgICAgICBz
a2lwRW1wdHlCdWNrZXRzKCk7CiAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICB9CgoK
CgogICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNv
bnN0CiAgICAgICAgewogICAgICAgICAgICBjaGVja1ZhbGlkaXR5KG90aGVyKTsKICAgICAgICAg
ICAgcmV0dXJuIG1fcG9zaXRpb24gPT0gb3RoZXIubV9wb3NpdGlvbjsKICAgICAgICB9CiAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAg
ICAgICB7CiAgICAgICAgICAgIGNoZWNrVmFsaWRpdHkob3RoZXIpOwogICAgICAgICAgICByZXR1
cm4gbV9wb3NpdGlvbiAhPSBvdGhlci5tX3Bvc2l0aW9uOwogICAgICAgIH0KCiAgICBwcml2YXRl
OgogICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eSgpIGNvbnN0CiAgICAgICAgewoKICAgICAgICAg
ICAgZG8gaWYgKCEobV90YWJsZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCIsIDE5MywgX19QUkVUVFlf
RlVOQ1RJT05fXywgIm1fdGFibGUiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOwoKICAgICAgICB9CgoKCiAgICAgICAgdm9pZCBjaGVja1ZhbGlk
aXR5KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICB7CiAgICAgICAg
ICAgIGRvIGlmICghKG1fdGFibGUpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgiLCAyMDEsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sICJtX3RhYmxlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50
ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgZG8gaWYgKCEob3RoZXIubV90YWJsZSkp
IHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9IYXNoVGFibGUuaCIsIDIwMiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm90aGVyLm1f
dGFibGUiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOwogICAgICAgICAgICBkbyBpZiAoIShtX3RhYmxlID09IG90aGVyLm1fdGFibGUpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvSGFzaFRhYmxlLmgiLCAyMDMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX3RhYmxlID09IG90
aGVyLm1fdGFibGUiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIH0KCgoKCiAgICAgICAgUG9pbnRlclR5cGUgbV9wb3NpdGlvbjsK
ICAgICAgICBQb2ludGVyVHlwZSBtX2VuZFBvc2l0aW9uOwoKCiAgICBwdWJsaWM6CgoKICAgICAg
ICBtdXRhYmxlIGNvbnN0IEhhc2hUYWJsZVR5cGUqIG1fdGFibGU7CiAgICAgICAgbXV0YWJsZSBj
b25zdF9pdGVyYXRvciogbV9uZXh0OwogICAgICAgIG11dGFibGUgY29uc3RfaXRlcmF0b3IqIG1f
cHJldmlvdXM7CgogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgY2xhc3MgSGFzaFRhYmxlSXRlcmF0b3Ig
ewogICAgcHJpdmF0ZToKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBIYXNoVGFibGVUeXBlOwog
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gaXRlcmF0b3I7CiAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgIHR5cGVkZWYg
VmFsdWUgVmFsdWVUeXBlOwogICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlJiBSZWZlcmVuY2VUeXBl
OwogICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsKCiAgICAgICAgZnJpZW5k
IGNsYXNzIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjsKCiAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3IoSGFzaFRhYmxlVHlw
ZSogdGFibGUsIFBvaW50ZXJUeXBlIHBvcywgUG9pbnRlclR5cGUgZW5kKSA6IG1faXRlcmF0b3Io
dGFibGUsIHBvcywgZW5kKSB7IH0KICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihIYXNoVGFibGVU
eXBlKiB0YWJsZSwgUG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQsIEhhc2hJdGVtS25v
d25Hb29kVGFnIHRhZykgOiBtX2l0ZXJhdG9yKHRhYmxlLCBwb3MsIGVuZCwgdGFnKSB7IH0KCiAg
ICBwdWJsaWM6CiAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3IoKSB7IH0KCgoKICAgICAgICBQb2lu
dGVyVHlwZSBnZXQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFBvaW50ZXJUeXBlPihtX2l0
ZXJhdG9yLmdldCgpKTsgfQogICAgICAgIFJlZmVyZW5jZVR5cGUgb3BlcmF0b3IqKCkgY29uc3Qg
eyByZXR1cm4gKmdldCgpOyB9CiAgICAgICAgUG9pbnRlclR5cGUgb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuIGdldCgpOyB9CgogICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyArK21f
aXRlcmF0b3I7IHJldHVybiAqdGhpczsgfQoKCgoKICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yID09IG90aGVyLm1f
aXRlcmF0b3I7IH0KICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVyLm1faXRlcmF0b3I7IH0KCiAgICAg
ICAgb3BlcmF0b3IgY29uc3RfaXRlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yOyB9
CgogICAgcHJpdmF0ZToKICAgICAgICBjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yOwogICAgfTsK
CiAgICB1c2luZyBzdGQ6OnN3YXA7CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2
b2lkIGhhc2hUYWJsZVN3YXAoVCYgYSwgVCYgYikKICAgIHsKICAgICAgICBzd2FwKGEsIGIpOwog
ICAgfQoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBo
YXNoVGFibGVTd2FwKHBhaXI8VCwgVT4mIGEsIHBhaXI8VCwgVT4mIGIpCiAgICB7CiAgICAgICAg
c3dhcChhLmZpcnN0LCBiLmZpcnN0KTsKICAgICAgICBzd2FwKGEuc2Vjb25kLCBiLnNlY29uZCk7
CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgYm9vbCB1c2VTd2FwPiBzdHJ1Y3QgTW92
ZXI7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTW92ZXI8VCwgdHJ1ZT4geyBzdGF0
aWMgdm9pZCBtb3ZlKFQmIGZyb20sIFQmIHRvKSB7IGhhc2hUYWJsZVN3YXAoZnJvbSwgdG8pOyB9
IH07CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTW92ZXI8VCwgZmFsc2U+IHsgc3Rh
dGljIHZvaWQgbW92ZShUJiBmcm9tLCBUJiB0bykgeyB0byA9IGZyb207IH0gfTsKCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
PiBjbGFzcyBJZGVudGl0eUhhc2hUcmFuc2xhdG9yIHsKICAgIHB1YmxpYzoKICAgICAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBLZXkmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6
aGFzaChrZXkpOyB9CiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5JiBhLCBjb25z
dCBLZXkmIGIpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6OmVxdWFsKGEsIGIpOyB9CiAgICAgICAg
c3RhdGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlJiBsb2NhdGlvbiwgY29uc3QgS2V5JiwgY29uc3Qg
VmFsdWUmIHZhbHVlKSB7IGxvY2F0aW9uID0gdmFsdWU7IH0KICAgIH07CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAg
IGNsYXNzIEhhc2hUYWJsZSB7CiAgICBwdWJsaWM6CiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJ
dGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPiBpdGVyYXRvcjsKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4g
Y29uc3RfaXRlcmF0b3I7CiAgICAgICAgdHlwZWRlZiBUcmFpdHMgVmFsdWVUcmFpdHM7CiAgICAg
ICAgdHlwZWRlZiBLZXkgS2V5VHlwZTsKICAgICAgICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsK
ICAgICAgICB0eXBlZGVmIElkZW50aXR5SGFzaFRyYW5zbGF0b3I8S2V5LCBWYWx1ZSwgSGFzaEZ1
bmN0aW9ucz4gSWRlbnRpdHlUcmFuc2xhdG9yVHlwZTsKCiAgICAgICAgSGFzaFRhYmxlKCk7CiAg
ICAgICAgfkhhc2hUYWJsZSgpCiAgICAgICAgewogICAgICAgICAgICBpbnZhbGlkYXRlSXRlcmF0
b3JzKCk7CiAgICAgICAgICAgIGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6ZSk7
CgogICAgICAgICAgICBtX3RhYmxlID0gKFZhbHVlVHlwZSopKHVpbnRwdHJfdCkweGJiYWRiZWVm
OwoKICAgICAgICB9CgogICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsKICAgICAg
ICB2b2lkIHN3YXAoSGFzaFRhYmxlJik7CiAgICAgICAgSGFzaFRhYmxlJiBvcGVyYXRvcj0oY29u
c3QgSGFzaFRhYmxlJik7CgogICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbWFrZUl0
ZXJhdG9yKG1fdGFibGUpOyB9CiAgICAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbWFrZUtu
b3duR29vZEl0ZXJhdG9yKG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0KICAgICAgICBjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1ha2VDb25zdEl0ZXJhdG9yKG1fdGFibGUp
OyB9CiAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbWFrZUtub3du
R29vZENvbnN0SXRlcmF0b3IobV90YWJsZSArIG1fdGFibGVTaXplKTsgfQoKICAgICAgICBpbnQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQ7IH0KICAgICAgICBpbnQgY2FwYWNpdHko
KSBjb25zdCB7IHJldHVybiBtX3RhYmxlU2l6ZTsgfQogICAgICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuICFtX2tleUNvdW50OyB9CgogICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+
IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8S2V5VHlwZSwgVmFsdWVU
eXBlLCBJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCB2
YWx1ZSk7IH0KCgoKCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmEs
IHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3Qg
VCYga2V5LCBjb25zdCBFeHRyYSYpOwogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEV4dHJhLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRvciwgYm9vbD4g
YWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEmKTsKCiAgICAgICAg
aXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIHsgcmV0dXJuIGZpbmQ8S2V5VHlwZSwg
SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfQogICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZp
bmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdCB7IHJldHVybiBmaW5kPEtleVR5cGUsIElkZW50
aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtl
eVR5cGUmIGtleSkgY29uc3QgeyByZXR1cm4gY29udGFpbnM8S2V5VHlwZSwgSWRlbnRpdHlUcmFu
c2xhdG9yVHlwZT4oa2V5KTsgfQoKICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3I+IGl0ZXJhdG9yIGZpbmQoY29uc3QgVCYpOwogICAgICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gY29uc3RfaXRlcmF0b3Ig
ZmluZChjb25zdCBUJikgY29uc3Q7CiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEhhc2hUcmFuc2xhdG9yPiBib29sIGNvbnRhaW5zKGNvbnN0IFQmKSBjb25zdDsKCiAgICAg
ICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOwogICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJh
dG9yKTsKICAgICAgICB2b2lkIHJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXRl
cmF0b3IpOwogICAgICAgIHZvaWQgcmVtb3ZlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhj
b25zdF9pdGVyYXRvcik7CiAgICAgICAgdm9pZCBjbGVhcigpOwoKICAgICAgICBzdGF0aWMgYm9v
bCBpc0VtcHR5QnVja2V0KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIEV4dHJhY3Rv
cjo6ZXh0cmFjdCh2YWx1ZSkgPT0gS2V5VHJhaXRzOjplbXB0eVZhbHVlKCk7IH0KICAgICAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRCdWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1
cm4gS2V5VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZShFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpKTsg
fQogICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlPckRlbGV0ZWRCdWNrZXQoY29uc3QgVmFsdWVU
eXBlJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eUJ1Y2tldCh2YWx1ZSkgfHwgaXNEZWxldGVkQnVj
a2V0KHZhbHVlKTsgfQoKICAgICAgICBWYWx1ZVR5cGUqIGxvb2t1cChjb25zdCBLZXkmIGtleSkg
eyByZXR1cm4gbG9va3VwPEtleSwgSWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfQogICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBWYWx1ZVR5
cGUqIGxvb2t1cChjb25zdCBUJik7CgoKICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5j
eSgpIGNvbnN0OwoKCgoKCgoKICAgICAgICBzdGF0aWMgdm9pZCBpbnRlcm5hbENoZWNrVGFibGVD
b25zaXN0ZW5jeUV4Y2VwdFNpemUoKSB7IH0KICAgICAgICBzdGF0aWMgdm9pZCBpbnRlcm5hbENo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpIHsgfQoKCiAgICBwcml2YXRlOgogICAgICAgIHN0YXRpYyBW
YWx1ZVR5cGUqIGFsbG9jYXRlVGFibGUoaW50IHNpemUpOwogICAgICAgIHN0YXRpYyB2b2lkIGRl
YWxsb2NhdGVUYWJsZShWYWx1ZVR5cGUqIHRhYmxlLCBpbnQgc2l6ZSk7CgogICAgICAgIHR5cGVk
ZWYgcGFpcjxWYWx1ZVR5cGUqLCBib29sPiBMb29rdXBUeXBlOwogICAgICAgIHR5cGVkZWYgcGFp
cjxMb29rdXBUeXBlLCB1bnNpZ25lZD4gRnVsbExvb2t1cFR5cGU7CgogICAgICAgIExvb2t1cFR5
cGUgbG9va3VwRm9yV3JpdGluZyhjb25zdCBLZXkmIGtleSkgeyByZXR1cm4gbG9va3VwRm9yV3Jp
dGluZzxLZXksIElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH07CiAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IEZ1bGxMb29rdXBUeXBlIGZ1
bGxMb29rdXBGb3JXcml0aW5nKGNvbnN0IFQmKTsKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gTG9va3VwVHlwZSBsb29rdXBGb3JXcml0aW5nKGNv
bnN0IFQmKTsKCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5z
bGF0b3I+IHZvaWQgY2hlY2tLZXkoY29uc3QgVCYpOwoKICAgICAgICB2b2lkIHJlbW92ZUFuZElu
dmFsaWRhdGVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNrKFZhbHVlVHlwZSopOwogICAgICAg
IHZvaWQgcmVtb3ZlQW5kSW52YWxpZGF0ZShWYWx1ZVR5cGUqKTsKICAgICAgICB2b2lkIHJlbW92
ZShWYWx1ZVR5cGUqKTsKCiAgICAgICAgYm9vbCBzaG91bGRFeHBhbmQoKSBjb25zdCB7IHJldHVy
biAobV9rZXlDb3VudCArIG1fZGVsZXRlZENvdW50KSAqIG1fbWF4TG9hZCA+PSBtX3RhYmxlU2l6
ZTsgfQogICAgICAgIGJvb2wgbXVzdFJlaGFzaEluUGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tl
eUNvdW50ICogbV9taW5Mb2FkIDwgbV90YWJsZVNpemUgKiAyOyB9CiAgICAgICAgYm9vbCBzaG91
bGRTaHJpbmsoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5Mb2FkIDwgbV90YWJs
ZVNpemUgJiYgbV90YWJsZVNpemUgPiBLZXlUcmFpdHM6Om1pbmltdW1UYWJsZVNpemU7IH0KICAg
ICAgICB2b2lkIGV4cGFuZCgpOwogICAgICAgIHZvaWQgc2hyaW5rKCkgeyByZWhhc2gobV90YWJs
ZVNpemUgLyAyKTsgfQoKICAgICAgICB2b2lkIHJlaGFzaChpbnQgbmV3VGFibGVTaXplKTsKICAg
ICAgICB2b2lkIHJlaW5zZXJ0KFZhbHVlVHlwZSYpOwoKICAgICAgICBzdGF0aWMgdm9pZCBpbml0
aWFsaXplQnVja2V0KFZhbHVlVHlwZSYgYnVja2V0KSB7IG5ldyAoJmJ1Y2tldCkgVmFsdWVUeXBl
KFRyYWl0czo6ZW1wdHlWYWx1ZSgpKTsgfQogICAgICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUJ1Y2tl
dChWYWx1ZVR5cGUmIGJ1Y2tldCkgeyBidWNrZXQuflZhbHVlVHlwZSgpOyBUcmFpdHM6OmNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShidWNrZXQpOyB9CgogICAgICAgIEZ1bGxMb29rdXBUeXBlIG1ha2VM
b29rdXBSZXN1bHQoVmFsdWVUeXBlKiBwb3NpdGlvbiwgYm9vbCBmb3VuZCwgdW5zaWduZWQgaGFz
aCkKICAgICAgICAgICAgeyByZXR1cm4gRnVsbExvb2t1cFR5cGUoTG9va3VwVHlwZShwb3NpdGlv
biwgZm91bmQpLCBoYXNoKTsgfQoKICAgICAgICBpdGVyYXRvciBtYWtlSXRlcmF0b3IoVmFsdWVU
eXBlKiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVT
aXplKTsgfQogICAgICAgIGNvbnN0X2l0ZXJhdG9yIG1ha2VDb25zdEl0ZXJhdG9yKFZhbHVlVHlw
ZSogcG9zKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUg
KyBtX3RhYmxlU2l6ZSk7IH0KICAgICAgICBpdGVyYXRvciBtYWtlS25vd25Hb29kSXRlcmF0b3Io
VmFsdWVUeXBlKiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1f
dGFibGVTaXplLCBIYXNoSXRlbUtub3duR29vZCk7IH0KICAgICAgICBjb25zdF9pdGVyYXRvciBt
YWtlS25vd25Hb29kQ29uc3RJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4g
Y29uc3RfaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUsIEhhc2hJdGVt
S25vd25Hb29kKTsgfQoKCiAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRT
aXplKCkgY29uc3Q7CgoKCgoKICAgICAgICB2b2lkIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKCgoK
CiAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heExvYWQgPSAyOwogICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgbV9taW5Mb2FkID0gNjsKCiAgICAgICAgVmFsdWVUeXBlKiBtX3RhYmxlOwogICAg
ICAgIGludCBtX3RhYmxlU2l6ZTsKICAgICAgICBpbnQgbV90YWJsZVNpemVNYXNrOwogICAgICAg
IGludCBtX2tleUNvdW50OwogICAgICAgIGludCBtX2RlbGV0ZWRDb3VudDsKCgogICAgcHVibGlj
OgoKICAgICAgICBtdXRhYmxlIGNvbnN0X2l0ZXJhdG9yKiBtX2l0ZXJhdG9yczsKICAgICAgICBt
dXRhYmxlIE11dGV4IG1fbXV0ZXg7CgogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgaW5saW5lIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPjo6SGFzaFRhYmxlKCkKICAgICAgICA6IG1fdGFibGUoMCkKICAgICAgICAsIG1fdGFibGVT
aXplKDApCiAgICAgICAgLCBtX3RhYmxlU2l6ZU1hc2soMCkKICAgICAgICAsIG1fa2V5Q291bnQo
MCkKICAgICAgICAsIG1fZGVsZXRlZENvdW50KDApCgogICAgICAgICwgbV9pdGVyYXRvcnMoMCkK
CiAgICB7CiAgICB9CgogICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBkb3VibGVIYXNoKHVuc2ln
bmVkIGtleSkKICAgIHsKICAgICAgICBrZXkgPSB+a2V5ICsgKGtleSA+PiAyMyk7CiAgICAgICAg
a2V5IF49IChrZXkgPDwgMTIpOwogICAgICAgIGtleSBePSAoa2V5ID4+IDcpOwogICAgICAgIGtl
eSBePSAoa2V5IDw8IDIpOwogICAgICAgIGtleSBePSAoa2V5ID4+IDIwKTsKICAgICAgICByZXR1
cm4ga2V5OwogICAgfQojIDQ2MCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9I
YXNoVGFibGUuaCIKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4KICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjaGVja0tleShjb25zdCBUJiBrZXkp
CiAgICB7CiAgICAgICAgaWYgKCFIYXNoRnVuY3Rpb25zOjpzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIGRvIGlmICghKCFIYXNoVHJhbnNs
YXRvcjo6ZXF1YWwoS2V5VHJhaXRzOjplbXB0eVZhbHVlKCksIGtleSkpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRh
YmxlLmgiLCA0NjYsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhSGFzaFRyYW5zbGF0b3I6OmVxdWFs
KEtleVRyYWl0czo6ZW1wdHlWYWx1ZSgpLCBrZXkpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNl
KCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBWYWx1ZVR5cGUgZGVsZXRlZFZh
bHVlID0gVHJhaXRzOjplbXB0eVZhbHVlKCk7CiAgICAgICAgZGVsZXRlZFZhbHVlLn5WYWx1ZVR5
cGUoKTsKICAgICAgICBUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShkZWxldGVkVmFsdWUp
OwogICAgICAgIGRvIGlmICghKCFIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRy
YWN0KGRlbGV0ZWRWYWx1ZSksIGtleSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgiLCA0NzAsIF9fUFJF
VFRZX0ZVTkNUSU9OX18sICIhSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFj
dChkZWxldGVkVmFsdWUpLCBrZXkpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50
ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBuZXcgKCZkZWxldGVkVmFsdWUpIFZhbHVlVHlw
ZShUcmFpdHM6OmVtcHR5VmFsdWUoKSk7CiAgICB9CgoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiAgICBpbmxpbmUgVmFsdWUqIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6bG9va3VwKGNvbnN0IFQmIGtleSkKICAgIHsKICAgICAgICBjaGVja0tleTxULCBI
YXNoVHJhbnNsYXRvcj4oa2V5KTsKCiAgICAgICAgaW50IGsgPSAwOwogICAgICAgIGludCBzaXpl
TWFzayA9IG1fdGFibGVTaXplTWFzazsKICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV90YWJs
ZTsKICAgICAgICB1bnNpZ25lZCBoID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsKICAgICAg
ICBpbnQgaSA9IGggJiBzaXplTWFzazsKCiAgICAgICAgaWYgKCF0YWJsZSkKICAgICAgICAgICAg
cmV0dXJuIDA7CgoKCgoKCiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgVmFsdWVUeXBl
KiBlbnRyeSA9IHRhYmxlICsgaTsKCgogICAgICAgICAgICBpZiAoSGFzaEZ1bmN0aW9uczo6c2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQpIHsKICAgICAgICAgICAgICAgIGlmIChIYXNoVHJh
bnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwoKICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5QnVj
a2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQogICAgICAg
ICAgICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICAgICAgICAgIGlmICghaXNEZWxldGVkQnVj
a2V0KCplbnRyeSkgJiYgSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFjdCgq
ZW50cnkpLCBrZXkpKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAg
ICAgfQoKCgoKICAgICAgICAgICAgaWYgKGsgPT0gMCkKICAgICAgICAgICAgICAgIGsgPSAxIHwg
ZG91YmxlSGFzaChoKTsKICAgICAgICAgICAgaSA9IChpICsgaykgJiBzaXplTWFzazsKICAgICAg
ICB9CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yPgogICAgaW5saW5lIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6TG9va3VwVHlwZSBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz46Omxvb2t1cEZvcldyaXRpbmcoY29uc3QgVCYga2V5KQogICAgewogICAgICAgIGRv
IGlmICghKG1fdGFibGUpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgiLCA1MjcsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sICJtX3RhYmxlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVp
bnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsKICAgICAgICBjaGVja0tleTxULCBIYXNoVHJhbnNsYXRvcj4oa2V5KTsK
CiAgICAgICAgaW50IGsgPSAwOwogICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOwog
ICAgICAgIGludCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKICAgICAgICB1bnNpZ25lZCBo
ID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsKICAgICAgICBpbnQgaSA9IGggJiBzaXplTWFz
azsKCgoKCgoKICAgICAgICBWYWx1ZVR5cGUqIGRlbGV0ZWRFbnRyeSA9IDA7CgogICAgICAgIHdo
aWxlICgxKSB7CiAgICAgICAgICAgIFZhbHVlVHlwZSogZW50cnkgPSB0YWJsZSArIGk7CgoKICAg
ICAgICAgICAgaWYgKEhhc2hGdW5jdGlvbnM6OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
KSB7CiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQogICAgICAgICAg
ICAgICAgICAgIHJldHVybiBMb29rdXBUeXBlKGRlbGV0ZWRFbnRyeSA/IGRlbGV0ZWRFbnRyeSA6
IGVudHJ5LCBmYWxzZSk7CgogICAgICAgICAgICAgICAgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVh
bChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gTG9va3VwVHlwZShlbnRyeSwgdHJ1ZSk7CgogICAgICAgICAgICAgICAgaWYgKGlzRGVs
ZXRlZEJ1Y2tldCgqZW50cnkpKQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVu
dHJ5OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNr
ZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTG9va3VwVHlwZShkZWxldGVk
RW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFsc2UpOwoKICAgICAgICAgICAgICAgIGlm
IChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAgICBkZWxldGVkRW50
cnkgPSBlbnRyeTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVh
bChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gTG9va3VwVHlwZShlbnRyeSwgdHJ1ZSk7CiAgICAgICAgICAgIH0KCgoKCiAgICAgICAg
ICAgIGlmIChrID09IDApCiAgICAgICAgICAgICAgICBrID0gMSB8IGRvdWJsZUhhc2goaCk7CiAg
ICAgICAgICAgIGkgPSAoaSArIGspICYgc2l6ZU1hc2s7CiAgICAgICAgfQogICAgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KICAg
IGlubGluZSB0eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OkZ1bGxMb29rdXBUeXBlIEhhc2hUYWJsZTxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZnVs
bExvb2t1cEZvcldyaXRpbmcoY29uc3QgVCYga2V5KQogICAgewogICAgICAgIGRvIGlmICghKG1f
dGFibGUpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgiLCA1NzksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJt
X3RhYmxlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkw
eGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxl
ICgwKTsKICAgICAgICBjaGVja0tleTxULCBIYXNoVHJhbnNsYXRvcj4oa2V5KTsKCiAgICAgICAg
aW50IGsgPSAwOwogICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOwogICAgICAgIGlu
dCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKICAgICAgICB1bnNpZ25lZCBoID0gSGFzaFRy
YW5zbGF0b3I6Omhhc2goa2V5KTsKICAgICAgICBpbnQgaSA9IGggJiBzaXplTWFzazsKCgoKCgoK
ICAgICAgICBWYWx1ZVR5cGUqIGRlbGV0ZWRFbnRyeSA9IDA7CgogICAgICAgIHdoaWxlICgxKSB7
CiAgICAgICAgICAgIFZhbHVlVHlwZSogZW50cnkgPSB0YWJsZSArIGk7CgoKICAgICAgICAgICAg
aWYgKEhhc2hGdW5jdGlvbnM6OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkKSB7CiAgICAg
ICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQogICAgICAgICAgICAgICAgICAg
IHJldHVybiBtYWtlTG9va3VwUmVzdWx0KGRlbGV0ZWRFbnRyeSA/IGRlbGV0ZWRFbnRyeSA6IGVu
dHJ5LCBmYWxzZSwgaCk7CgogICAgICAgICAgICAgICAgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVh
bChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZUxvb2t1cFJlc3VsdChlbnRyeSwgdHJ1ZSwgaCk7CgogICAgICAgICAgICAgICAg
aWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRF
bnRyeSA9IGVudHJ5OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGlz
RW1wdHlCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZUxvb2t1
cFJlc3VsdChkZWxldGVkRW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFsc2UsIGgpOwoK
ICAgICAgICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKEhh
c2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZUxvb2t1cFJlc3VsdChlbnRyeSwgdHJ1ZSwgaCk7
CiAgICAgICAgICAgIH0KCgoKCiAgICAgICAgICAgIGlmIChrID09IDApCiAgICAgICAgICAgICAg
ICBrID0gMSB8IGRvdWJsZUhhc2goaCk7CiAgICAgICAgICAgIGkgPSAoaSArIGspICYgc2l6ZU1h
c2s7CiAgICAgICAgfQogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBFeHRyYSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiAgICBpbmxpbmUgcGFpcjx0
eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz46Oml0ZXJhdG9yLCBib29sPiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZChjb25zdCBU
JiBrZXksIGNvbnN0IEV4dHJhJiBleHRyYSkKICAgIHsKICAgICAgICBjaGVja0tleTxULCBIYXNo
VHJhbnNsYXRvcj4oa2V5KTsKCiAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwoKICAgICAg
ICBpZiAoIW1fdGFibGUpCiAgICAgICAgICAgIGV4cGFuZCgpOwoKICAgICAgICBpbnRlcm5hbENo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpOwoKICAgICAgICBkbyBpZiAoIShtX3RhYmxlKSkgeyBXVEZS
ZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0hhc2hUYWJsZS5oIiwgNjQwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV90YWJsZSIpOyBkbyB7
IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7
ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CgogICAgICAg
IGludCBrID0gMDsKICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV90YWJsZTsKICAgICAgICBp
bnQgc2l6ZU1hc2sgPSBtX3RhYmxlU2l6ZU1hc2s7CiAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hU
cmFuc2xhdG9yOjpoYXNoKGtleSk7CiAgICAgICAgaW50IGkgPSBoICYgc2l6ZU1hc2s7CgoKCgoK
CiAgICAgICAgVmFsdWVUeXBlKiBkZWxldGVkRW50cnkgPSAwOwogICAgICAgIFZhbHVlVHlwZSog
ZW50cnk7CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgZW50cnkgPSB0YWJsZSArIGk7
CgoKICAgICAgICAgICAgaWYgKEhhc2hGdW5jdGlvbnM6OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JE
ZWxldGVkKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQogICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRv
cjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSks
IGZhbHNlKTsKCiAgICAgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0KCplbnRyeSkpCiAg
ICAgICAgICAgICAgICAgICAgZGVsZXRlZEVudHJ5ID0gZW50cnk7CiAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQogICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVu
dHJ5KSkKICAgICAgICAgICAgICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsKICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3Qo
KmVudHJ5KSwga2V5KSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
bWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOwogICAgICAgICAgICB9CgoKCgog
ICAgICAgICAgICBpZiAoayA9PSAwKQogICAgICAgICAgICAgICAgayA9IDEgfCBkb3VibGVIYXNo
KGgpOwogICAgICAgICAgICBpID0gKGkgKyBrKSAmIHNpemVNYXNrOwogICAgICAgIH0KCiAgICAg
ICAgaWYgKGRlbGV0ZWRFbnRyeSkgewogICAgICAgICAgICBpbml0aWFsaXplQnVja2V0KCpkZWxl
dGVkRW50cnkpOwogICAgICAgICAgICBlbnRyeSA9IGRlbGV0ZWRFbnRyeTsKICAgICAgICAgICAg
LS1tX2RlbGV0ZWRDb3VudDsKICAgICAgICB9CgogICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFu
c2xhdGUoKmVudHJ5LCBrZXksIGV4dHJhKTsKCiAgICAgICAgKyttX2tleUNvdW50OwoKICAgICAg
ICBpZiAoc2hvdWxkRXhwYW5kKCkpIHsKCgoKICAgICAgICAgICAgS2V5VHlwZSBlbnRlcmVkS2V5
ID0gRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSk7CiAgICAgICAgICAgIGV4cGFuZCgpOwogICAg
ICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBwID0gc3RkOjptYWtlX3BhaXIoZmluZChlbnRl
cmVkS2V5KSwgdHJ1ZSk7CiAgICAgICAgICAgIGRvIGlmICghKHAuZmlyc3QgIT0gZW5kKCkpKSB7
IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvSGFzaFRhYmxlLmgiLCA3MDMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJwLmZpcnN0ICE9
IGVuZCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkw
eGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxl
ICgwKTsKICAgICAgICAgICAgcmV0dXJuIHA7CiAgICAgICAgfQoKICAgICAgICBpbnRlcm5hbENo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpOwoKICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFr
ZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRv
cj4KICAgIGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+IEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6YWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEmIGV4
dHJhKQogICAgewogICAgICAgIGNoZWNrS2V5PFQsIEhhc2hUcmFuc2xhdG9yPihrZXkpOwoKICAg
ICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CgogICAgICAgIGlmICghbV90YWJsZSkKICAgICAg
ICAgICAgZXhwYW5kKCk7CgogICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7
CgogICAgICAgIEZ1bGxMb29rdXBUeXBlIGxvb2t1cFJlc3VsdCA9IGZ1bGxMb29rdXBGb3JXcml0
aW5nPFQsIEhhc2hUcmFuc2xhdG9yPihrZXkpOwoKICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0g
bG9va3VwUmVzdWx0LmZpcnN0LmZpcnN0OwogICAgICAgIGJvb2wgZm91bmQgPSBsb29rdXBSZXN1
bHQuZmlyc3Quc2Vjb25kOwogICAgICAgIHVuc2lnbmVkIGggPSBsb29rdXBSZXN1bHQuc2Vjb25k
OwoKICAgICAgICBpZiAoZm91bmQpCiAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpciht
YWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CgogICAgICAgIGlmIChpc0RlbGV0
ZWRCdWNrZXQoKmVudHJ5KSkgewogICAgICAgICAgICBpbml0aWFsaXplQnVja2V0KCplbnRyeSk7
CiAgICAgICAgICAgIC0tbV9kZWxldGVkQ291bnQ7CiAgICAgICAgfQoKICAgICAgICBIYXNoVHJh
bnNsYXRvcjo6dHJhbnNsYXRlKCplbnRyeSwga2V5LCBleHRyYSwgaCk7CiAgICAgICAgKyttX2tl
eUNvdW50OwogICAgICAgIGlmIChzaG91bGRFeHBhbmQoKSkgewoKCgogICAgICAgICAgICBLZXlU
eXBlIGVudGVyZWRLZXkgPSBFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KTsKICAgICAgICAgICAg
ZXhwYW5kKCk7CiAgICAgICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHAgPSBzdGQ6Om1ha2Vf
cGFpcihmaW5kKGVudGVyZWRLZXkpLCB0cnVlKTsKICAgICAgICAgICAgZG8gaWYgKCEocC5maXJz
dCAhPSBlbmQoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCIsIDc0OCwgX19QUkVUVFlfRlVOQ1RJT05f
XywgInAuZmlyc3QgIT0gZW5kKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICByZXR1cm4gcDsKICAgICAgICB9CgogICAg
ICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CgogICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKICAgIH0KCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPgogICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZWluc2VydChWYWx1ZVR5cGUmIGVu
dHJ5KQogICAgewogICAgICAgIGRvIGlmICghKG1fdGFibGUpKSB7IFdURlJlcG9ydEFzc2VydGlv
bkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgi
LCA3NjAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX3RhYmxlIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAoISghbG9v
a3VwRm9yV3JpdGluZyhFeHRyYWN0b3I6OmV4dHJhY3QoZW50cnkpKS5zZWNvbmQpKSB7IFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
SGFzaFRhYmxlLmgiLCA3NjEsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbG9va3VwRm9yV3JpdGlu
ZyhFeHRyYWN0b3I6OmV4dHJhY3QoZW50cnkpKS5zZWNvbmQiKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKCFpc0Rl
bGV0ZWRCdWNrZXQoKihsb29rdXBGb3JXcml0aW5nKEV4dHJhY3Rvcjo6ZXh0cmFjdChlbnRyeSkp
LmZpcnN0KSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgiLCA3NjIsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICIhaXNEZWxldGVkQnVja2V0KCoobG9va3VwRm9yV3JpdGluZyhFeHRyYWN0b3I6OmV4dHJhY3Qo
ZW50cnkpKS5maXJzdCkpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVp
bnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsKCgoKCiAgICAgICAgTW92ZXI8VmFsdWVUeXBlLCBUcmFpdHM6Om5lZWRz
RGVzdHJ1Y3Rpb24+Ojptb3ZlKGVudHJ5LCAqbG9va3VwRm9yV3JpdGluZyhFeHRyYWN0b3I6OmV4
dHJhY3QoZW50cnkpKS5maXJzdCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KICAgIHR5cGVuYW1lIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6
aXRlcmF0b3IgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IFQmIGtleSkKICAgIHsKICAgICAgICBpZiAo
IW1fdGFibGUpCiAgICAgICAgICAgIHJldHVybiBlbmQoKTsKCiAgICAgICAgVmFsdWVUeXBlKiBl
bnRyeSA9IGxvb2t1cDxULCBIYXNoVHJhbnNsYXRvcj4oa2V5KTsKICAgICAgICBpZiAoIWVudHJ5
KQogICAgICAgICAgICByZXR1cm4gZW5kKCk7CgogICAgICAgIHJldHVybiBtYWtlS25vd25Hb29k
SXRlcmF0b3IoZW50cnkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiAgICB0eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNvbnN0
X2l0ZXJhdG9yIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6ZmluZChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICB7CiAgICAg
ICAgaWYgKCFtX3RhYmxlKQogICAgICAgICAgICByZXR1cm4gZW5kKCk7CgogICAgICAgIFZhbHVl
VHlwZSogZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHRoaXMpLT5sb29rdXA8VCwgSGFz
aFRyYW5zbGF0b3I+KGtleSk7CiAgICAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgICAgcmV0dXJu
IGVuZCgpOwoKICAgICAgICByZXR1cm4gbWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IoZW50cnkp
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3I+CiAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgVCYga2V5KSBj
b25zdAogICAgewogICAgICAgIGlmICghbV90YWJsZSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwoKICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxIYXNoVGFibGUqPih0aGlzKS0+bG9va3VwPFQs
IEhhc2hUcmFuc2xhdG9yPihrZXkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6cmVtb3ZlQW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soVmFsdWVU
eXBlKiBwb3MpCiAgICB7CiAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogICAgICAgIHJl
bW92ZShwb3MpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVl
LCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlQW5k
SW52YWxpZGF0ZShWYWx1ZVR5cGUqIHBvcykKICAgIHsKICAgICAgICBpbnZhbGlkYXRlSXRlcmF0
b3JzKCk7CiAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKICAgICAgICBy
ZW1vdmUocG9zKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShW
YWx1ZVR5cGUqIHBvcykKICAgIHsKCgoKCiAgICAgICAgZGVsZXRlQnVja2V0KCpwb3MpOwogICAg
ICAgICsrbV9kZWxldGVkQ291bnQ7CiAgICAgICAgLS1tX2tleUNvdW50OwoKICAgICAgICBpZiAo
c2hvdWxkU2hyaW5rKCkpCiAgICAgICAgICAgIHNocmluaygpOwoKICAgICAgICBpbnRlcm5hbENo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICBpbmxpbmUgdm9pZCBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz46OnJlbW92ZShpdGVyYXRvciBpdCkKICAgIHsKICAgICAgICBpZiAoaXQgPT0gZW5k
KCkpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgcmVtb3ZlQW5kSW52YWxpZGF0ZShjb25z
dF9jYXN0PFZhbHVlVHlwZSo+KGl0Lm1faXRlcmF0b3IubV9wb3NpdGlvbikpOwogICAgfQoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+CiAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNp
c3RlbmN5Q2hlY2soaXRlcmF0b3IgaXQpCiAgICB7CiAgICAgICAgaWYgKGl0ID09IGVuZCgpKQog
ICAgICAgICAgICByZXR1cm47CgogICAgICAgIHJlbW92ZUFuZEludmFsaWRhdGVXaXRob3V0RW50
cnlDb25zaXN0ZW5jeUNoZWNrKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5t
X3Bvc2l0aW9uKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6
cmVtb3ZlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhjb25zdF9pdGVyYXRvciBpdCkKICAg
IHsKICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAg
cmVtb3ZlQW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29uc3RfY2Fz
dDxWYWx1ZVR5cGUqPihpdC5tX3Bvc2l0aW9uKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIGlubGlu
ZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkKICAgIHsKICAgICAg
ICByZW1vdmUoZmluZChrZXkpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgVmFsdWUqIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6YWxsb2NhdGVUYWJsZShpbnQgc2l6ZSkKICAgIHsKCgogICAgICAgIGlmIChUcmFpdHM6OmVt
cHR5VmFsdWVJc1plcm8pCiAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxWYWx1ZVR5cGUq
PihmYXN0WmVyb2VkTWFsbG9jKHNpemUgKiBzaXplb2YoVmFsdWVUeXBlKSkpOwogICAgICAgIFZh
bHVlVHlwZSogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VmFsdWVUeXBlKj4oZmFzdE1hbGxvYyhzaXpl
ICogc2l6ZW9mKFZhbHVlVHlwZSkpKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
IGkrKykKICAgICAgICAgICAgaW5pdGlhbGl6ZUJ1Y2tldChyZXN1bHRbaV0pOwogICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpkZWFsbG9j
YXRlVGFibGUoVmFsdWVUeXBlKiB0YWJsZSwgaW50IHNpemUpCiAgICB7CiAgICAgICAgaWYgKFRy
YWl0czo6bmVlZHNEZXN0cnVjdGlvbikgewogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewogICAgICAgICAgICAgICAgaWYgKCFpc0RlbGV0ZWRCdWNrZXQodGFibGVb
aV0pKQogICAgICAgICAgICAgICAgICAgIHRhYmxlW2ldLn5WYWx1ZVR5cGUoKTsKICAgICAgICAg
ICAgfQogICAgICAgIH0KICAgICAgICBmYXN0RnJlZSh0YWJsZSk7CiAgICB9CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
ICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+OjpleHBhbmQoKQogICAgewogICAgICAgIGludCBuZXdTaXplOwog
ICAgICAgIGlmIChtX3RhYmxlU2l6ZSA9PSAwKQogICAgICAgICAgICBuZXdTaXplID0gS2V5VHJh
aXRzOjptaW5pbXVtVGFibGVTaXplOwogICAgICAgIGVsc2UgaWYgKG11c3RSZWhhc2hJblBsYWNl
KCkpCiAgICAgICAgICAgIG5ld1NpemUgPSBtX3RhYmxlU2l6ZTsKICAgICAgICBlbHNlCiAgICAg
ICAgICAgIG5ld1NpemUgPSBtX3RhYmxlU2l6ZSAqIDI7CgogICAgICAgIHJlaGFzaChuZXdTaXpl
KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgogICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlaGFzaChpbnQgbmV3VGFi
bGVTaXplKQogICAgewogICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0
U2l6ZSgpOwoKICAgICAgICBpbnQgb2xkVGFibGVTaXplID0gbV90YWJsZVNpemU7CiAgICAgICAg
VmFsdWVUeXBlKiBvbGRUYWJsZSA9IG1fdGFibGU7CgoKCgoKCiAgICAgICAgbV90YWJsZVNpemUg
PSBuZXdUYWJsZVNpemU7CiAgICAgICAgbV90YWJsZVNpemVNYXNrID0gbmV3VGFibGVTaXplIC0g
MTsKICAgICAgICBtX3RhYmxlID0gYWxsb2NhdGVUYWJsZShuZXdUYWJsZVNpemUpOwoKICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSAhPSBvbGRUYWJsZVNpemU7ICsraSkKICAgICAgICAgICAgaWYg
KCFpc0VtcHR5T3JEZWxldGVkQnVja2V0KG9sZFRhYmxlW2ldKSkKICAgICAgICAgICAgICAgIHJl
aW5zZXJ0KG9sZFRhYmxlW2ldKTsKCiAgICAgICAgbV9kZWxldGVkQ291bnQgPSAwOwoKICAgICAg
ICBkZWFsbG9jYXRlVGFibGUob2xkVGFibGUsIG9sZFRhYmxlU2l6ZSk7CgogICAgICAgIGludGVy
bmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHZvaWQgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+OjpjbGVhcigpCiAgICB7CiAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogICAg
ICAgIGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6ZSk7CiAgICAgICAgbV90YWJs
ZSA9IDA7CiAgICAgICAgbV90YWJsZVNpemUgPSAwOwogICAgICAgIG1fdGFibGVTaXplTWFzayA9
IDA7CiAgICAgICAgbV9rZXlDb3VudCA9IDA7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6SGFzaFRhYmxlKGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpCiAgICAgICAgOiBtX3RhYmxlKDAp
CiAgICAgICAgLCBtX3RhYmxlU2l6ZSgwKQogICAgICAgICwgbV90YWJsZVNpemVNYXNrKDApCiAg
ICAgICAgLCBtX2tleUNvdW50KDApCiAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQoKICAgICAg
ICAsIG1faXRlcmF0b3JzKDApCgogICAgewoKCiAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kID0g
b3RoZXIuZW5kKCk7CiAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBpdCA9IG90aGVyLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgYWRkKCppdCk7CiAgICB9CgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4KICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpzd2FwKEhhc2hUYWJsZSYgb3RoZXIpCiAgICB7CiAgICAg
ICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRv
cnMoKTsKCiAgICAgICAgVmFsdWVUeXBlKiB0bXBfdGFibGUgPSBtX3RhYmxlOwogICAgICAgIG1f
dGFibGUgPSBvdGhlci5tX3RhYmxlOwogICAgICAgIG90aGVyLm1fdGFibGUgPSB0bXBfdGFibGU7
CgogICAgICAgIGludCB0bXBfdGFibGVTaXplID0gbV90YWJsZVNpemU7CiAgICAgICAgbV90YWJs
ZVNpemUgPSBvdGhlci5tX3RhYmxlU2l6ZTsKICAgICAgICBvdGhlci5tX3RhYmxlU2l6ZSA9IHRt
cF90YWJsZVNpemU7CgogICAgICAgIGludCB0bXBfdGFibGVTaXplTWFzayA9IG1fdGFibGVTaXpl
TWFzazsKICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSBvdGhlci5tX3RhYmxlU2l6ZU1hc2s7CiAg
ICAgICAgb3RoZXIubV90YWJsZVNpemVNYXNrID0gdG1wX3RhYmxlU2l6ZU1hc2s7CgogICAgICAg
IGludCB0bXBfa2V5Q291bnQgPSBtX2tleUNvdW50OwogICAgICAgIG1fa2V5Q291bnQgPSBvdGhl
ci5tX2tleUNvdW50OwogICAgICAgIG90aGVyLm1fa2V5Q291bnQgPSB0bXBfa2V5Q291bnQ7Cgog
ICAgICAgIGludCB0bXBfZGVsZXRlZENvdW50ID0gbV9kZWxldGVkQ291bnQ7CiAgICAgICAgbV9k
ZWxldGVkQ291bnQgPSBvdGhlci5tX2RlbGV0ZWRDb3VudDsKICAgICAgICBvdGhlci5tX2RlbGV0
ZWRDb3VudCA9IHRtcF9kZWxldGVkQ291bnQ7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
PiYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjpvcGVyYXRvcj0oY29uc3QgSGFzaFRhYmxlJiBvdGhlcikKICAgIHsKICAg
ICAgICBIYXNoVGFibGUgdG1wKG90aGVyKTsKICAgICAgICBzd2FwKHRtcCk7CiAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgfQoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjaGVja1Rh
YmxlQ29uc2lzdGVuY3koKSBjb25zdAogICAgewogICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5j
eUV4Y2VwdFNpemUoKTsKICAgICAgICBkbyBpZiAoISghbV90YWJsZSB8fCAhc2hvdWxkRXhwYW5k
KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvSGFzaFRhYmxlLmgiLCAxMDEwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIW1f
dGFibGUgfHwgIXNob3VsZEV4cGFuZCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAoISghc2hvdWxkU2hyaW5rKCkp
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvSGFzaFRhYmxlLmgiLCAxMDExLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIXNob3Vs
ZFNocmluaygpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJf
dCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdo
aWxlICgwKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrVGFibGVD
b25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25zdAogICAgewogICAgICAgIGlmICghbV90YWJsZSkK
ICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBpbnQgY291bnQgPSAwOwogICAgICAgIGludCBk
ZWxldGVkQ291bnQgPSAwOwogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV90YWJsZVNpemU7
ICsraikgewogICAgICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gbV90YWJsZSArIGo7CiAgICAg
ICAgICAgIGlmIChpc0VtcHR5QnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICBjb250aW51
ZTsKCiAgICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkgewogICAgICAgICAg
ICAgICAgKytkZWxldGVkQ291bnQ7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXQgPSBmaW5kKEV4dHJhY3Rvcjo6ZXh0
cmFjdCgqZW50cnkpKTsKICAgICAgICAgICAgZG8gaWYgKCEoZW50cnkgPT0gaXQubV9wb3NpdGlv
bikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9IYXNoVGFibGUuaCIsIDEwMzMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJlbnRy
eSA9PSBpdC5tX3Bvc2l0aW9uIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICop
KHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgKytjb3VudDsKCiAgICAgICAgICAgIFZhbHVl
Q2hlY2s8S2V5Pjo6Y2hlY2tDb25zaXN0ZW5jeShpdC0+Zmlyc3QpOwogICAgICAgIH0KCiAgICAg
ICAgZG8gaWYgKCEoY291bnQgPT0gbV9rZXlDb3VudCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFp
bHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCIsIDEw
MzksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJjb3VudCA9PSBtX2tleUNvdW50Iik7IGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBp
ZiAoIShkZWxldGVkQ291bnQgPT0gbV9kZWxldGVkQ291bnQpKSB7IFdURlJlcG9ydEFzc2VydGlv
bkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgi
LCAxMDQwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiZGVsZXRlZENvdW50ID09IG1fZGVsZXRlZENv
dW50Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICBkbyBpZiAoIShtX3RhYmxlU2l6ZSA+PSBLZXlUcmFpdHM6Om1pbmltdW1UYWJs
ZVNpemUpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgiLCAxMDQxLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAi
bV90YWJsZVNpemUgPj0gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXplIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAo
IShtX3RhYmxlU2l6ZU1hc2spKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgiLCAxMDQyLCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAibV90YWJsZVNpemVNYXNrIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7
ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAoIShtX3RhYmxlU2l6ZSA9
PSBtX3RhYmxlU2l6ZU1hc2sgKyAxKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oIiwgMTA0MywgX19QUkVU
VFlfRlVOQ1RJT05fXywgIm1fdGFibGVTaXplID09IG1fdGFibGVTaXplTWFzayArIDEiKTsgZG8g
eyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAw
OyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgfQoK
CgoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgogICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmludmFsaWRhdGVJdGVyYXRvcnMoKQog
ICAgewogICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgY29uc3RfaXRl
cmF0b3IqIG5leHQ7CiAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciogcCA9IG1faXRlcmF0b3Jz
OyBwOyBwID0gbmV4dCkgewogICAgICAgICAgICBuZXh0ID0gcC0+bV9uZXh0OwogICAgICAgICAg
ICBwLT5tX3RhYmxlID0gMDsKICAgICAgICAgICAgcC0+bV9uZXh0ID0gMDsKICAgICAgICAgICAg
cC0+bV9wcmV2aW91cyA9IDA7CiAgICAgICAgfQogICAgICAgIG1faXRlcmF0b3JzID0gMDsKICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgogICAgdm9pZCBhZGRJdGVyYXRvcihjb25zdCBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIHRhYmxl
LAogICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQogICAgewogICAgICAgIGl0LT5t
X3RhYmxlID0gdGFibGU7CiAgICAgICAgaXQtPm1fcHJldmlvdXMgPSAwOwoKCiAgICAgICAgaWYg
KCF0YWJsZSkgewogICAgICAgICAgICBpdC0+bV9uZXh0ID0gMDsKICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICBNdXRleExvY2tlciBsb2NrKHRhYmxlLT5tX211dGV4KTsKICAgICAgICAgICAg
ZG8gaWYgKCEodGFibGUtPm1faXRlcmF0b3JzICE9IGl0KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25G
YWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oIiwg
MTA3NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgInRhYmxlLT5tX2l0ZXJhdG9ycyAhPSBpdCIpOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgICAgIGl0LT5tX25leHQgPSB0YWJsZS0+bV9pdGVyYXRvcnM7CiAgICAgICAgICAgIHRhYmxl
LT5tX2l0ZXJhdG9ycyA9IGl0OwogICAgICAgICAgICBpZiAoaXQtPm1fbmV4dCkgewogICAgICAg
ICAgICAgICAgZG8gaWYgKCEoIWl0LT5tX25leHQtPm1fcHJldmlvdXMpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRh
YmxlLmgiLCAxMDgwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIWl0LT5tX25leHQtPm1fcHJldmlv
dXMiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgICAgICAgICAgICAgaXQtPm1fbmV4dC0+bV9wcmV2aW91cyA9IGl0OwogICAgICAgICAg
ICB9CiAgICAgICAgfQogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICB2b2lkIHJlbW92ZUl0ZXJhdG9yKEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQogICAgewogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
IEhhc2hUYWJsZVR5cGU7CiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGNv
bnN0X2l0ZXJhdG9yOwoKCiAgICAgICAgaWYgKCFpdC0+bV90YWJsZSkgewogICAgICAgICAgICBk
byBpZiAoISghaXQtPm1fbmV4dCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCIsIDEwOTQsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sICIhaXQtPm1fbmV4dCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAq
KGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hp
bGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgIGRvIGlmICghKCFpdC0+bV9wcmV2
aW91cykpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCIsIDEwOTUsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIh
aXQtPm1fcHJldmlvdXMiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWlu
dHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7
IH0gd2hpbGUgKDApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIE11dGV4TG9ja2VyIGxv
Y2soaXQtPm1fdGFibGUtPm1fbXV0ZXgpOwogICAgICAgICAgICBpZiAoaXQtPm1fbmV4dCkgewog
ICAgICAgICAgICAgICAgZG8gaWYgKCEoaXQtPm1fbmV4dC0+bV9wcmV2aW91cyA9PSBpdCkpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9IYXNoVGFibGUuaCIsIDEwOTksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpdC0+bV9uZXh0
LT5tX3ByZXZpb3VzID09IGl0Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICop
KHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIGl0LT5tX25leHQtPm1fcHJldmlvdXMg
PSBpdC0+bV9wcmV2aW91czsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXQtPm1fcHJl
dmlvdXMpIHsKICAgICAgICAgICAgICAgIGRvIGlmICghKGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9y
cyAhPSBpdCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCIsIDExMDMsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICJpdC0+bV90YWJsZS0+bV9pdGVyYXRvcnMgIT0gaXQiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJh
Y2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgp
OyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgZG8gaWYgKCEo
aXQtPm1fcHJldmlvdXMtPm1fbmV4dCA9PSBpdCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCIsIDExMDQs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpdC0+bV9wcmV2aW91cy0+bV9uZXh0ID09IGl0Iik7IGRv
IHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0g
MDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAg
ICAgICAgICAgIGl0LT5tX3ByZXZpb3VzLT5tX25leHQgPSBpdC0+bV9uZXh0OwogICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgZG8gaWYgKCEoaXQtPm1fdGFibGUtPm1faXRlcmF0
b3JzID09IGl0KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oIiwgMTEwNywgX19QUkVUVFlfRlVOQ1RJT05f
XywgIml0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9PSBpdCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0
cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTAp
KCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBpdC0+bV90
YWJsZS0+bV9pdGVyYXRvcnMgPSBpdC0+bV9uZXh0OwogICAgICAgICAgICB9CiAgICAgICAgfQoK
ICAgICAgICBpdC0+bV90YWJsZSA9IDA7CiAgICAgICAgaXQtPm1fbmV4dCA9IDA7CiAgICAgICAg
aXQtPm1fcHJldmlvdXMgPSAwOwogICAgfQoKCgoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25zdEl0ZXJh
dG9yQWRhcHRlciB7CiAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXIoKSB7fQog
ICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IHR5cGVuYW1lIEhhc2hU
YWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQoKICAgICAg
ICBjb25zdCBWYWx1ZVR5cGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIChjb25zdCBWYWx1ZVR5cGUq
KW1faW1wbC5nZXQoKTsgfQogICAgICAgIGNvbnN0IFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29u
c3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAgICAgY29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+
KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KCiAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRv
ckFkYXB0ZXImIG9wZXJhdG9yKysoKSB7ICsrbV9pbXBsOyByZXR1cm4gKnRoaXM7IH0KCgogICAg
ICAgIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9yIG1faW1wbDsKICAgIH07
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBl
PiBzdHJ1Y3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyIHsKICAgICAgICBIYXNoVGFibGVJdGVy
YXRvckFkYXB0ZXIoKSB7fQogICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcihjb25zdCB0
eXBlbmFtZSBIYXNoVGFibGVUeXBlOjppdGVyYXRvciYgaW1wbCkgOiBtX2ltcGwoaW1wbCkge30K
CiAgICAgICAgVmFsdWVUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAoVmFsdWVUeXBlKiltX2lt
cGwuZ2V0KCk7IH0KICAgICAgICBWYWx1ZVR5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJu
ICpnZXQoKTsgfQogICAgICAgIFZhbHVlVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJu
IGdldCgpOyB9CgogICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlciYgb3BlcmF0b3IrKygp
IHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQoKCiAgICAgICAgb3BlcmF0b3IgSGFzaFRhYmxl
Q29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPigpIHsKICAgICAg
ICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29uc3RfaXRlcmF0b3IgaSA9IG1faW1wbDsK
ICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgfQoKICAgICAgICB0eXBlbmFtZSBIYXNoVGFi
bGVUeXBlOjppdGVyYXRvciBtX2ltcGw7CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUNv
bnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9y
QWRhcHRlcjxULCBVPiYgYikKICAgIHsKICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2lt
cGw7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgIGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwg
VT4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBiKQogICAg
ewogICAgICAgIHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsKICAgIH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUl0ZXJh
dG9yQWRhcHRlcjxULCBVPiYgYikKICAgIHsKICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5t
X2ltcGw7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgIGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+
JiBhLCBjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCiAgICB7CiAgICAg
ICAgcmV0dXJuIGEubV9pbXBsICE9IGIubV9pbXBsOwogICAgfQoKfQoKIyAxICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hJdGVyYXRvcnMuaCIgMQojIDI3ICIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hJdGVyYXRvcnMuaCIKI2RlZmluZSBXVEZf
SGFzaEl0ZXJhdG9yc19oIAoKbmFtZXNwYWNlIFdURiB7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3Ry
dWN0IEhhc2hUYWJsZUNvbnN0S2V5c0l0ZXJhdG9yOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFz
aFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3RydWN0
IEhhc2hUYWJsZUNvbnN0VmFsdWVzSXRlcmF0b3I7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3Qg
SGFzaFRhYmxlS2V5c0l0ZXJhdG9yOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlw
ZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3RydWN0IEhhc2hUYWJs
ZVZhbHVlc0l0ZXJhdG9yOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5
cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25z
dEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBzdGQ6OnBhaXI8S2V5VHlwZSwgTWFwcGVk
VHlwZT4gPiB7CiAgICBwcml2YXRlOgogICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPEtleVR5cGUs
IE1hcHBlZFR5cGU+IFZhbHVlVHlwZTsKICAgIHB1YmxpYzoKICAgICAgICB0eXBlZGVmIEhhc2hU
YWJsZUNvbnN0S2V5c0l0ZXJhdG9yPEhhc2hUYWJsZVR5cGUsIEtleVR5cGUsIE1hcHBlZFR5cGU+
IEtleXM7CiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yPEhhc2hU
YWJsZVR5cGUsIEtleVR5cGUsIE1hcHBlZFR5cGU+IFZhbHVlczsKCiAgICAgICAgSGFzaFRhYmxl
Q29uc3RJdGVyYXRvckFkYXB0ZXIoKSB7fQogICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JB
ZGFwdGVyKGNvbnN0IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9yJiBpbXBs
KSA6IG1faW1wbChpbXBsKSB7fQoKICAgICAgICBjb25zdCBWYWx1ZVR5cGUqIGdldCgpIGNvbnN0
IHsgcmV0dXJuIChjb25zdCBWYWx1ZVR5cGUqKW1faW1wbC5nZXQoKTsgfQogICAgICAgIGNvbnN0
IFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAgICAg
Y29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KCiAg
ICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXImIG9wZXJhdG9yKysoKSB7ICsrbV9p
bXBsOyByZXR1cm4gKnRoaXM7IH0KCgogICAgICAgIEtleXMga2V5cygpIHsgcmV0dXJuIEtleXMo
KnRoaXMpOyB9CiAgICAgICAgVmFsdWVzIHZhbHVlcygpIHsgcmV0dXJuIFZhbHVlcygqdGhpcyk7
IH0KCiAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29uc3RfaXRlcmF0b3IgbV9pbXBs
OwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBL
ZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFw
dGVyPEhhc2hUYWJsZVR5cGUsIHN0ZDo6cGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPiA+IHsKICAg
IHByaXZhdGU6CiAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4g
VmFsdWVUeXBlOwogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlS2V5c0l0ZXJh
dG9yPEhhc2hUYWJsZVR5cGUsIEtleVR5cGUsIE1hcHBlZFR5cGU+IEtleXM7CiAgICAgICAgdHlw
ZWRlZiBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvcjxIYXNoVGFibGVUeXBlLCBLZXlUeXBlLCBNYXBw
ZWRUeXBlPiBWYWx1ZXM7CgogICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcigpIHt9CiAg
ICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyKGNvbnN0IHR5cGVuYW1lIEhhc2hUYWJsZVR5
cGU6Oml0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQoKICAgICAgICBWYWx1ZVR5cGUq
IGdldCgpIGNvbnN0IHsgcmV0dXJuIChWYWx1ZVR5cGUqKW1faW1wbC5nZXQoKTsgfQogICAgICAg
IFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAgICAg
VmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KCiAgICAgICAg
SGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyArK21faW1wbDsgcmV0dXJu
ICp0aGlzOyB9CgoKICAgICAgICBvcGVyYXRvciBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRl
cjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+KCkgewogICAgICAgICAgICB0eXBlbmFtZSBIYXNo
VGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOwogICAgICAgICAgICByZXR1cm4g
aTsKICAgICAgICB9CgogICAgICAgIEtleXMga2V5cygpIHsgcmV0dXJuIEtleXMoKnRoaXMpOyB9
CiAgICAgICAgVmFsdWVzIHZhbHVlcygpIHsgcmV0dXJuIFZhbHVlcygqdGhpcyk7IH0KCiAgICAg
ICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6aXRlcmF0b3IgbV9pbXBsOwogICAgfTsKCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFt
ZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3IgewogICAgcHJp
dmF0ZToKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hU
YWJsZVR5cGUsIHN0ZDo6cGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPiA+IENvbnN0SXRlcmF0b3I7
CgogICAgcHVibGljOgogICAgICAgIEhhc2hUYWJsZUNvbnN0S2V5c0l0ZXJhdG9yKGNvbnN0IENv
bnN0SXRlcmF0b3ImIGltcGwpIDogbV9pbXBsKGltcGwpIHt9CgogICAgICAgIGNvbnN0IEtleVR5
cGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuICYobV9pbXBsLmdldCgpLT5maXJzdCk7IH0KICAgICAg
ICBjb25zdCBLZXlUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KICAg
ICAgICBjb25zdCBLZXlUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0K
CiAgICAgICAgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7ICsrbV9p
bXBsOyByZXR1cm4gKnRoaXM7IH0KCgogICAgICAgIENvbnN0SXRlcmF0b3IgbV9pbXBsOwogICAg
fTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBl
LCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRv
ciB7CiAgICBwcml2YXRlOgogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFk
YXB0ZXI8SGFzaFRhYmxlVHlwZSwgc3RkOjpwYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+ID4gQ29u
c3RJdGVyYXRvcjsKCiAgICBwdWJsaWM6CiAgICAgICAgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVy
YXRvcihjb25zdCBDb25zdEl0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQoKICAgICAg
ICBjb25zdCBNYXBwZWRUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAmKG1faW1wbC5nZXQoKS0+
c2Vjb25kKTsgfQogICAgICAgIGNvbnN0IE1hcHBlZFR5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsg
cmV0dXJuICpnZXQoKTsgfQogICAgICAgIGNvbnN0IE1hcHBlZFR5cGUqIG9wZXJhdG9yLT4oKSBj
b25zdCB7IHJldHVybiBnZXQoKTsgfQoKICAgICAgICBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJh
dG9yJiBvcGVyYXRvcisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgICBD
b25zdEl0ZXJhdG9yIG1faW1wbDsKICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRh
YmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3RydWN0IEhh
c2hUYWJsZUtleXNJdGVyYXRvciB7CiAgICBwcml2YXRlOgogICAgICAgIHR5cGVkZWYgSGFzaFRh
YmxlSXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIHN0ZDo6cGFpcjxLZXlUeXBlLCBNYXBw
ZWRUeXBlPiA+IEl0ZXJhdG9yOwogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRv
ckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgc3RkOjpwYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+ID4g
Q29uc3RJdGVyYXRvcjsKCiAgICBwdWJsaWM6CiAgICAgICAgSGFzaFRhYmxlS2V5c0l0ZXJhdG9y
KGNvbnN0IEl0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQoKICAgICAgICBLZXlUeXBl
KiBnZXQoKSBjb25zdCB7IHJldHVybiAmKG1faW1wbC5nZXQoKS0+Zmlyc3QpOyB9CiAgICAgICAg
S2V5VHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAgICAgS2V5
VHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CgogICAgICAgIEhhc2hU
YWJsZUtleXNJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsg
fQoKCiAgICAgICAgb3BlcmF0b3IgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3I8SGFzaFRhYmxl
VHlwZSwgS2V5VHlwZSwgTWFwcGVkVHlwZT4oKSB7CiAgICAgICAgICAgIENvbnN0SXRlcmF0b3Ig
aSA9IG1faW1wbDsKICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgfQoKICAgICAgICBJdGVy
YXRvciBtX2ltcGw7CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUs
IHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVW
YWx1ZXNJdGVyYXRvciB7CiAgICBwcml2YXRlOgogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRl
cmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIHN0ZDo6cGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBl
PiA+IEl0ZXJhdG9yOwogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0
ZXI8SGFzaFRhYmxlVHlwZSwgc3RkOjpwYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+ID4gQ29uc3RJ
dGVyYXRvcjsKCiAgICBwdWJsaWM6CiAgICAgICAgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3IoY29u
c3QgSXRlcmF0b3ImIGltcGwpIDogbV9pbXBsKGltcGwpIHt9CgogICAgICAgIE1hcHBlZFR5cGUq
IGdldCgpIGNvbnN0IHsgcmV0dXJuICYobV9pbXBsLmdldCgpLT5zZWNvbmQpOyB9CiAgICAgICAg
TWFwcGVkVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAgICAg
TWFwcGVkVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CgogICAgICAg
IEhhc2hUYWJsZVZhbHVlc0l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyArK21faW1wbDsgcmV0dXJu
ICp0aGlzOyB9CgoKICAgICAgICBvcGVyYXRvciBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9y
PEhhc2hUYWJsZVR5cGUsIEtleVR5cGUsIE1hcHBlZFR5cGU+KCkgewogICAgICAgICAgICBDb25z
dEl0ZXJhdG9yIGkgPSBtX2ltcGw7CiAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH0KCiAg
ICAgICAgSXRlcmF0b3IgbV9pbXBsOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgogICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3I8VCwgVSwgVj4mIGEsIGNvbnN0IEhhc2hUYWJs
ZUNvbnN0S2V5c0l0ZXJhdG9yPFQsIFUsIFY+JiBiKQogICAgewogICAgICAgIHJldHVybiBhLm1f
aW1wbCA9PSBiLm1faW1wbDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWPgogICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFz
aFRhYmxlQ29uc3RLZXlzSXRlcmF0b3I8VCwgVSwgVj4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0
S2V5c0l0ZXJhdG9yPFQsIFUsIFY+JiBiKQogICAgewogICAgICAgIHJldHVybiBhLm1faW1wbCAh
PSBiLm1faW1wbDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgogICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSGFzaFRhYmxl
Q29uc3RWYWx1ZXNJdGVyYXRvcjxULCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RWYWx1
ZXNJdGVyYXRvcjxULCBVLCBWPiYgYikKICAgIHsKICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0g
Yi5tX2ltcGw7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUNv
bnN0VmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0VmFsdWVz
SXRlcmF0b3I8VCwgVSwgVj4mIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEubV9pbXBsICE9IGIu
bV9pbXBsOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFY+CiAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVLZXlz
SXRlcmF0b3I8VCwgVSwgVj4mIGEsIGNvbnN0IEhhc2hUYWJsZUtleXNJdGVyYXRvcjxULCBVLCBW
PiYgYikKICAgIHsKICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7CiAgICB9Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgICAgICBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUtleXNJdGVyYXRvcjxULCBVLCBW
PiYgYSwgY29uc3QgSGFzaFRhYmxlS2V5c0l0ZXJhdG9yPFQsIFUsIFY+JiBiKQogICAgewogICAg
ICAgIHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgogICAgICAgIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGEsIGNvbnN0IEhh
c2hUYWJsZVZhbHVlc0l0ZXJhdG9yPFQsIFUsIFY+JiBiKQogICAgewogICAgICAgIHJldHVybiBh
Lm1faW1wbCA9PSBiLm1faW1wbDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgogICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SGFzaFRhYmxlVmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGEsIGNvbnN0IEhhc2hUYWJsZVZhbHVl
c0l0ZXJhdG9yPFQsIFUsIFY+JiBiKQogICAgewogICAgICAgIHJldHVybiBhLm1faW1wbCAhPSBi
Lm1faW1wbDsKICAgIH0KCgp9CiMgMTE4MSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9IYXNoVGFibGUuaCIgMgojIDI1ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0hhc2hNYXAuaCIgMgoKbmFtZXNwYWNlIFdURiB7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
UGFpclR5cGU+IHN0cnVjdCBQYWlyRmlyc3RFeHRyYWN0b3I7CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFt
ZSBEZWZhdWx0SGFzaDxLZXlBcmc+OjpIYXNoLAogICAgICAgIHR5cGVuYW1lIEtleVRyYWl0c0Fy
ZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnID0gSGFzaFRy
YWl0czxNYXBwZWRBcmc+ID4KICAgIGNsYXNzIEhhc2hNYXAgewogICAgICAgIHB1YmxpYzogdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplKSB7IHZvaWQqIHAgPSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpX
VEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxs
b2NUeXBlQ2xhc3NOZXcpOyByZXR1cm4gcDsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFs
OjpBbGxvY1R5cGVDbGFzc05ldyk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6
OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyByZXR1cm4gcDsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCA6OldU
Rjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyA6OldURjo6ZmFzdEZyZWUocCk7
IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgVGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJU
aGlzTWFjcm87CiAgICBwcml2YXRlOgogICAgICAgIHR5cGVkZWYgS2V5VHJhaXRzQXJnIEtleVRy
YWl0czsKICAgICAgICB0eXBlZGVmIE1hcHBlZFRyYWl0c0FyZyBNYXBwZWRUcmFpdHM7CiAgICAg
ICAgdHlwZWRlZiBQYWlySGFzaFRyYWl0czxLZXlUcmFpdHMsIE1hcHBlZFRyYWl0cz4gVmFsdWVU
cmFpdHM7CgogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgS2V5VHJhaXRzOjpU
cmFpdFR5cGUgS2V5VHlwZTsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFRyYWl0czo6
VHJhaXRUeXBlIE1hcHBlZFR5cGU7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVRyYWl0
czo6VHJhaXRUeXBlIFZhbHVlVHlwZTsKCiAgICBwcml2YXRlOgogICAgICAgIHR5cGVkZWYgSGFz
aEFyZyBIYXNoRnVuY3Rpb25zOwoKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxLZXlUeXBlLCBW
YWx1ZVR5cGUsIFBhaXJGaXJzdEV4dHJhY3RvcjxWYWx1ZVR5cGU+LAogICAgICAgICAgICBIYXNo
RnVuY3Rpb25zLCBWYWx1ZVRyYWl0cywgS2V5VHJhaXRzPiBIYXNoVGFibGVUeXBlOwoKICAgIHB1
YmxpYzoKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVU
eXBlLCBWYWx1ZVR5cGU+IGl0ZXJhdG9yOwogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJ
dGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsK
CiAgICAgICAgdm9pZCBzd2FwKEhhc2hNYXAmKTsKCiAgICAgICAgaW50IHNpemUoKSBjb25zdDsK
ICAgICAgICBpbnQgY2FwYWNpdHkoKSBjb25zdDsKICAgICAgICBib29sIGlzRW1wdHkoKSBjb25z
dDsKCgogICAgICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgICAgaXRlcmF0b3IgZW5kKCk7CiAg
ICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKICAgICAgICBjb25zdF9pdGVyYXRv
ciBlbmQoKSBjb25zdDsKCiAgICAgICAgaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJik7CiAg
ICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJikgY29uc3Q7CiAgICAgICAg
Ym9vbCBjb250YWlucyhjb25zdCBLZXlUeXBlJikgY29uc3Q7CiAgICAgICAgTWFwcGVkVHlwZSBn
ZXQoY29uc3QgS2V5VHlwZSYpIGNvbnN0OwoKCgoKICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29s
PiBzZXQoY29uc3QgS2V5VHlwZSYsIGNvbnN0IE1hcHBlZFR5cGUmKTsKCgoKCiAgICAgICAgcGFp
cjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRUeXBlJik7
CgogICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsKICAgICAgICB2b2lkIHJlbW92
ZShpdGVyYXRvcik7CiAgICAgICAgdm9pZCBjbGVhcigpOwoKICAgICAgICBNYXBwZWRUeXBlIHRh
a2UoY29uc3QgS2V5VHlwZSYpOwoKCgoKCgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBpdGVyYXRvciBmaW5kKGNvbnN0IFQmKTsKICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gY29uc3RfaXRlcmF0
b3IgZmluZChjb25zdCBUJikgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3I+IGJvb2wgY29udGFpbnMoY29uc3QgVCYpIGNvbnN0OwoKCgoK
CgoKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4g
cGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmLCBjb25zdCBNYXBwZWRUeXBlJik7Cgog
ICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OwoKICAgIHByaXZhdGU6CiAgICAg
ICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNvbnN0IEtleVR5cGUmLCBjb25zdCBN
YXBwZWRUeXBlJik7CgogICAgICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOwogICAgfTsKCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBQYWlyVHlwZT4gc3RydWN0IFBhaXJGaXJzdEV4dHJhY3RvciB7CiAg
ICAgICAgc3RhdGljIGNvbnN0IHR5cGVuYW1lIFBhaXJUeXBlOjpmaXJzdF90eXBlJiBleHRyYWN0
KGNvbnN0IFBhaXJUeXBlJiBwKSB7IHJldHVybiBwLmZpcnN0OyB9CiAgICB9OwoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHMsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnM+CiAgICBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0b3IgewogICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgVmFsdWVUeXBlOjpmaXJzdF90eXBlIEtleVR5cGU7CiAgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBWYWx1ZVR5cGU6OnNlY29uZF90eXBlIE1hcHBlZFR5cGU7CgogICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtleVR5cGUmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0
aW9uczo6aGFzaChrZXkpOyB9CiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5VHlw
ZSYgYSwgY29uc3QgS2V5VHlwZSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoYSwg
Yik7IH0KICAgICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVmFsdWVUeXBlJiBsb2NhdGlvbiwg
Y29uc3QgS2V5VHlwZSYga2V5LCBjb25zdCBNYXBwZWRUeXBlJiBtYXBwZWQpCiAgICAgICAgewog
ICAgICAgICAgICBsb2NhdGlvbi5maXJzdCA9IGtleTsKICAgICAgICAgICAgbG9jYXRpb24uc2Vj
b25kID0gbWFwcGVkOwogICAgICAgIH0KICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFs
dWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVRyYWl0cywgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhbnNs
YXRvcj4KICAgIHN0cnVjdCBIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXIgewogICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgVmFsdWVUeXBlOjpmaXJzdF90eXBlIEtleVR5cGU7CiAgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBWYWx1ZVR5cGU6OnNlY29uZF90eXBlIE1hcHBlZFR5cGU7CgogICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gVHJhbnNsYXRvcjo6aGFz
aChrZXkpOyB9CiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5VHlwZSYgYSwgY29u
c3QgVCYgYikgeyByZXR1cm4gVHJhbnNsYXRvcjo6ZXF1YWwoYSwgYik7IH0KICAgICAgICBzdGF0
aWMgdm9pZCB0cmFuc2xhdGUoVmFsdWVUeXBlJiBsb2NhdGlvbiwgY29uc3QgVCYga2V5LCBjb25z
dCBNYXBwZWRUeXBlJiBtYXBwZWQsIHVuc2lnbmVkIGhhc2hDb2RlKQogICAgICAgIHsKICAgICAg
ICAgICAgVHJhbnNsYXRvcjo6dHJhbnNsYXRlKGxvY2F0aW9uLmZpcnN0LCBrZXksIGhhc2hDb2Rl
KTsKICAgICAgICAgICAgbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOwogICAgICAgIH0KICAgIH07
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4KICAgIGlubGluZSB2b2lkIEhhc2hNYXA8VCwgVSwgViwgVywgWD46
OnN3YXAoSGFzaE1hcCYgb3RoZXIpCiAgICB7CiAgICAgICAgbV9pbXBsLnN3YXAob3RoZXIubV9p
bXBsKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgaW5saW5lIGludCBIYXNoTWFwPFQsIFUs
IFYsIFcsIFg+OjpzaXplKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLnNpemUo
KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgaW5saW5lIGludCBIYXNoTWFwPFQsIFUsIFYs
IFcsIFg+OjpjYXBhY2l0eSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1faW1wbC5jYXBh
Y2l0eSgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiAgICBpbmxpbmUgYm9vbCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBs
LmlzRW1wdHkoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgaW5saW5lIHR5cGVuYW1lIEhh
c2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmJl
Z2luKCkKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7CiAgICB9CgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWD4KICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVy
YXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjplbmQoKQogICAgewogICAgICAgIHJldHVybiBt
X2ltcGwuZW5kKCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgIGlubGluZSB0eXBlbmFtZSBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpjb25zdF9pdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcs
IFg+OjpiZWdpbigpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1faW1wbC5iZWdpbigpOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZW5kKCkgY29u
c3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmVuZCgpOwogICAgfQoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+CiAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3Ig
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpCiAgICB7CiAg
ICAgICAgcmV0dXJuIG1faW1wbC5maW5kKGtleSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAg
IGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpjb25zdF9pdGVyYXRvciBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKICAg
IHsKICAgICAgICByZXR1cm4gbV9pbXBsLmZpbmQoa2V5KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBY
PgogICAgaW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29udGFpbnMoY29uc3Qg
S2V5VHlwZSYga2V5KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuY29udGFpbnMo
a2V5KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVFlQRSwg
dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPjo6aXRlcmF0b3IKICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmZpbmQoY29u
c3QgVFlQRSYgdmFsdWUpCiAgICB7CiAgICAgICAgdHlwZWRlZiBIYXNoTWFwVHJhbnNsYXRvckFk
YXB0ZXI8VmFsdWVUeXBlLCBWYWx1ZVRyYWl0cywgVFlQRSwgSGFzaFRyYW5zbGF0b3I+IEFkYXB0
ZXI7CiAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBmaW5kPFRZUEUsIEFkYXB0ZXI+KHZh
bHVlKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVFlQRSwg
dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IKICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmZp
bmQoY29uc3QgVFlQRSYgdmFsdWUpIGNvbnN0CiAgICB7CiAgICAgICAgdHlwZWRlZiBIYXNoTWFw
VHJhbnNsYXRvckFkYXB0ZXI8VmFsdWVUeXBlLCBWYWx1ZVRyYWl0cywgVFlQRSwgSGFzaFRyYW5z
bGF0b3I+IEFkYXB0ZXI7CiAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBmaW5kPFRZUEUs
IEFkYXB0ZXI+KHZhbHVlKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVFlQRSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29udGFpbnMoY29uc3QgVFlQRSYgdmFsdWUpIGNvbnN0
CiAgICB7CiAgICAgICAgdHlwZWRlZiBIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8VmFsdWVUeXBl
LCBWYWx1ZVRyYWl0cywgVFlQRSwgSGFzaFRyYW5zbGF0b3I+IEFkYXB0ZXI7CiAgICAgICAgcmV0
dXJuIG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxUWVBFLCBBZGFwdGVyPih2YWx1ZSk7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4KICAgIGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwg
ViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgogICAgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aW5s
aW5lQWRkKGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkKQogICAg
ewogICAgICAgIHR5cGVkZWYgSGFzaE1hcFRyYW5zbGF0b3I8VmFsdWVUeXBlLCBWYWx1ZVRyYWl0
cywgSGFzaEZ1bmN0aW9ucz4gVHJhbnNsYXRvclR5cGU7CiAgICAgICAgcmV0dXJuIG1faW1wbC50
ZW1wbGF0ZSBhZGQ8S2V5VHlwZSwgTWFwcGVkVHlwZSwgVHJhbnNsYXRvclR5cGU+KGtleSwgbWFw
cGVkKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46
OnNldChjb25zdCBLZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5cGUmIG1hcHBlZCkKICAgIHsK
ICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBw
ZWQpOwogICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkgewoKICAgICAgICAgICAgcmVzdWx0LmZp
cnN0LT5zZWNvbmQgPSBtYXBwZWQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlw
ZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRZUEUsIHR5cGVuYW1l
IEhhc2hUcmFuc2xhdG9yPgogICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjppdGVyYXRvciwgYm9vbD4KICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmFkZChjb25zdCBU
WVBFJiBrZXksIGNvbnN0IE1hcHBlZFR5cGUmIHZhbHVlKQogICAgewogICAgICAgIHR5cGVkZWYg
SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPFZhbHVlVHlwZSwgVmFsdWVUcmFpdHMsIFRZUEUsIEhh
c2hUcmFuc2xhdG9yPiBBZGFwdGVyOwogICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRk
UGFzc2luZ0hhc2hDb2RlPFRZUEUsIE1hcHBlZFR5cGUsIEFkYXB0ZXI+KGtleSwgdmFsdWUpOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46Oml0ZXJhdG9yLCBib29sPgogICAgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6YWRkKGNv
bnN0IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkKQogICAgewogICAgICAg
IHJldHVybiBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBl
ZFRyYWl0cz4KICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6
TWFwcGVkVHlwZQogICAgSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpnZXQoY29u
c3QgS2V5VHlwZSYga2V5KSBjb25zdAogICAgewogICAgICAgIFZhbHVlVHlwZSogZW50cnkgPSBj
b25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLmxvb2t1cChrZXkpOwogICAgICAgIGlm
ICghZW50cnkpCiAgICAgICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKTsK
ICAgICAgICByZXR1cm4gZW50cnktPnNlY29uZDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAg
aW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQog
ICAgewogICAgICAgIGlmIChpdC5tX2ltcGwgPT0gbV9pbXBsLmVuZCgpKQogICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgbV9pbXBsLmludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAg
ICAgICAgbV9pbXBsLnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXQubV9pbXBs
KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkKICAgIHsKICAgICAgICByZW1vdmUo
ZmluZChrZXkpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgaW5saW5lIHZvaWQgSGFzaE1h
cDxULCBVLCBWLCBXLCBYPjo6Y2xlYXIoKQogICAgewogICAgICAgIG1faW1wbC5jbGVhcigpOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0cz4KICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwg
VSwgViwgVywgTWFwcGVkVHJhaXRzPjo6TWFwcGVkVHlwZQogICAgSGFzaE1hcDxULCBVLCBWLCBX
LCBNYXBwZWRUcmFpdHM+Ojp0YWtlKGNvbnN0IEtleVR5cGUmIGtleSkKICAgIHsKCiAgICAgICAg
aXRlcmF0b3IgaXQgPSBmaW5kKGtleSk7CiAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAg
ICAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjplbXB0eVZhbHVlKCk7CiAgICAgICAgdHlwZW5hbWUg
SGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpNYXBwZWRUeXBlIHJlc3VsdCA9IGl0
LT5zZWNvbmQ7CiAgICAgICAgcmVtb3ZlKGl0KTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFg+CiAgICBpbmxpbmUgdm9pZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKICAgIHsKICAgICAgICBtX2ltcGwuY2hlY2tUYWJs
ZUNvbnNpc3RlbmN5KCk7CiAgICB9CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3QgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPiYgYikKICAgIHsKICAgICAgICBpZiAoYS5zaXplKCkgIT0gYi5zaXplKCkpCiAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKCiAgICAgICAgY29u
c3RfaXRlcmF0b3IgZW5kID0gYS5lbmQoKTsKICAgICAgICBjb25zdF9pdGVyYXRvciBub3RGb3Vu
ZCA9IGIuZW5kKCk7CiAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBpdCA9IGEuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJQb3MgPSBiLmZp
bmQoaXQtPmZpcnN0KTsKICAgICAgICAgICAgaWYgKGJQb3MgPT0gbm90Rm91bmQgfHwgaXQtPnNl
Y29uZCAhPSBiUG9zLT5zZWNvbmQpCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+JiBhLCBjb25z
dCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+JiBiKQogICAgewogICAgICAgIHJldHVybiAhKGEgPT0g
Yik7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFwcGVkVHlwZSwgdHlwZW5hbWUgSGFz
aFRhYmxlVHlwZT4KICAgIHZvaWQgZGVsZXRlQWxsUGFpclNlY29uZHMoSGFzaFRhYmxlVHlwZSYg
Y29sbGVjdGlvbikKICAgIHsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6
OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOwogICAgICAgIGl0ZXJhdG9yIGVuZCA9IGNvbGxlY3Rp
b24uZW5kKCk7CiAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQogICAgICAgICAgICBkZWxldGUgaXQtPnNlY29uZDsKICAgIH0KCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPgogICAgaW5saW5lIHZvaWQgZGVsZXRlQWxsVmFsdWVzKGNvbnN0IEhhc2hN
YXA8VCwgVSwgViwgVywgWD4mIGNvbGxlY3Rpb24pCiAgICB7CiAgICAgICAgZGVsZXRlQWxsUGFp
clNlY29uZHM8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6TWFwcGVkVHlwZT4oY29s
bGVjdGlvbik7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUg
SGFzaFRhYmxlVHlwZT4KICAgIHZvaWQgZGVsZXRlQWxsUGFpckZpcnN0cyhIYXNoVGFibGVUeXBl
JiBjb2xsZWN0aW9uKQogICAgewogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaFRhYmxlVHlw
ZTo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVj
dGlvbi5lbmQoKTsKICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gY29sbGVjdGlvbi5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgIGRlbGV0ZSBpdC0+Zmlyc3Q7CiAgICB9Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWD4KICAgIGlubGluZSB2b2lkIGRlbGV0ZUFsbEtleXMoY29uc3QgSGFzaE1h
cDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbikKICAgIHsKICAgICAgICBkZWxldGVBbGxQYWly
Rmlyc3RzPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OktleVR5cGU+KGNvbGxlY3Rp
b24pOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+CiAgICBpbmxpbmUgdm9pZCBj
b3B5S2V5c1RvVmVjdG9yKGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIGNvbGxlY3Rpb24s
IFkmIHZlY3RvcikKICAgIHsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwg
ViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yOjpLZXlzIGl0ZXJhdG9yOwoKICAgICAgICB2ZWN0b3Iu
cmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgpKTsKCiAgICAgICAgaXRlcmF0b3IgaXQgPSBjb2xsZWN0
aW9uLmJlZ2luKCkua2V5cygpOwogICAgICAgIGl0ZXJhdG9yIGVuZCA9IGNvbGxlY3Rpb24uZW5k
KCkua2V5cygpOwogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGl0ICE9IGVuZDsgKytpdCwg
KytpKQogICAgICAgICAgICB2ZWN0b3JbaV0gPSAqaXQ7CiAgICB9CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwg
dHlwZW5hbWUgWT4KICAgIGlubGluZSB2b2lkIGNvcHlWYWx1ZXNUb1ZlY3Rvcihjb25zdCBIYXNo
TWFwPFQsIFUsIFYsIFcsIFg+JiBjb2xsZWN0aW9uLCBZJiB2ZWN0b3IpCiAgICB7CiAgICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpjb25zdF9pdGVyYXRvcjo6
VmFsdWVzIGl0ZXJhdG9yOwoKICAgICAgICB2ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgp
KTsKCiAgICAgICAgaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCkudmFsdWVzKCk7CiAg
ICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKS52YWx1ZXMoKTsKICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpdCAhPSBlbmQ7ICsraXQsICsraSkKICAgICAgICAgICAgdmVj
dG9yW2ldID0gKml0OwogICAgfQoKfQoKdXNpbmcgV1RGOjpIYXNoTWFwOwoKIyAxICIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZlB0ckhhc2hNYXAuaCIgMQojIDIyICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZlB0ckhhc2hNYXAuaCIKI2RlZmluZSBS
ZWZQdHJIYXNoTWFwX2ggCgpuYW1lc3BhY2UgV1RGIHsKCgoKCgoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFJhd0tleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHMs
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnM+CiAgICBzdHJ1Y3QgUmVmUHRySGFzaE1hcFJhd0tleVRy
YW5zbGF0b3IgewogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUeXBlOjpmaXJzdF90eXBl
IEtleVR5cGU7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6OnNlY29uZF90eXBl
IE1hcHBlZFR5cGU7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVRyYWl0czo6Rmlyc3RU
cmFpdHMgS2V5VHJhaXRzOwogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlNl
Y29uZFRyYWl0cyBNYXBwZWRUcmFpdHM7CgogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFJh
d0tleVR5cGUga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0KICAgICAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLZXlUeXBlJiBhLCBSYXdLZXlUeXBlIGIpIHsgcmV0
dXJuIEhhc2hGdW5jdGlvbnM6OmVxdWFsKGEsIGIpOyB9CiAgICAgICAgc3RhdGljIHZvaWQgdHJh
bnNsYXRlKFZhbHVlVHlwZSYgbG9jYXRpb24sIFJhd0tleVR5cGUga2V5LCBjb25zdCBNYXBwZWRU
eXBlJiBtYXBwZWQpCiAgICAgICAgewogICAgICAgICAgICBsb2NhdGlvbi5maXJzdCA9IGtleTsK
ICAgICAgICAgICAgbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOwogICAgICAgIH0KICAgIH07Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNo
QXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KICAg
IGNsYXNzIEhhc2hNYXA8UmVmUHRyPFQ+LCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0Fy
ZywgTWFwcGVkVHJhaXRzQXJnPiB7CiAgICAgICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVf
dCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUp
IHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01h
dGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7
IHJldHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNz
TmV3KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBz
aXplKSB7IHZvaWQqIHAgPSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxs
b2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NO
ZXdBcnJheSk7IHJldHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6
OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxs
b2NUeXBlQ2xhc3NOZXdBcnJheSk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSBwcml2YXRlOiB0eXBl
ZGVmIGludCBUaGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKICAgIHBy
aXZhdGU6CiAgICAgICAgdHlwZWRlZiBLZXlUcmFpdHNBcmcgS2V5VHJhaXRzOwogICAgICAgIHR5
cGVkZWYgTWFwcGVkVHJhaXRzQXJnIE1hcHBlZFRyYWl0czsKICAgICAgICB0eXBlZGVmIFBhaXJI
YXNoVHJhaXRzPEtleVRyYWl0cywgTWFwcGVkVHJhaXRzPiBWYWx1ZVRyYWl0czsKCiAgICBwdWJs
aWM6CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBLZXlUcmFpdHM6OlRyYWl0VHlwZSBLZXlUeXBl
OwogICAgICAgIHR5cGVkZWYgVCogUmF3S2V5VHlwZTsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1l
IE1hcHBlZFRyYWl0czo6VHJhaXRUeXBlIE1hcHBlZFR5cGU7CiAgICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBWYWx1ZVRyYWl0czo6VHJhaXRUeXBlIFZhbHVlVHlwZTsKCiAgICBwcml2YXRlOgogICAg
ICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNoRnVuY3Rpb25zOwoKICAgICAgICB0eXBlZGVmIEhhc2hU
YWJsZTxLZXlUeXBlLCBWYWx1ZVR5cGUsIFBhaXJGaXJzdEV4dHJhY3RvcjxWYWx1ZVR5cGU+LAog
ICAgICAgICAgICBIYXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0cywgS2V5VHJhaXRzPiBIYXNoVGFi
bGVUeXBlOwoKICAgICAgICB0eXBlZGVmIFJlZlB0ckhhc2hNYXBSYXdLZXlUcmFuc2xhdG9yPFJh
d0tleVR5cGUsIFZhbHVlVHlwZSwgVmFsdWVUcmFpdHMsIEhhc2hGdW5jdGlvbnM+CiAgICAgICAg
ICAgIFJhd0tleVRyYW5zbGF0b3I7CgogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgSGFzaFRh
YmxlSXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CiAg
ICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBl
LCBWYWx1ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOwoKICAgICAgICB2b2lkIHN3YXAoSGFzaE1hcCYp
OwoKICAgICAgICBpbnQgc2l6ZSgpIGNvbnN0OwogICAgICAgIGludCBjYXBhY2l0eSgpIGNvbnN0
OwogICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwoKCiAgICAgICAgaXRlcmF0b3IgYmVnaW4o
KTsKICAgICAgICBpdGVyYXRvciBlbmQoKTsKICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigp
IGNvbnN0OwogICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OwoKICAgICAgICBpdGVy
YXRvciBmaW5kKGNvbnN0IEtleVR5cGUmKTsKICAgICAgICBpdGVyYXRvciBmaW5kKFJhd0tleVR5
cGUpOwogICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpIGNvbnN0Owog
ICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoUmF3S2V5VHlwZSkgY29uc3Q7CiAgICAgICAgYm9v
bCBjb250YWlucyhjb25zdCBLZXlUeXBlJikgY29uc3Q7CiAgICAgICAgYm9vbCBjb250YWlucyhS
YXdLZXlUeXBlKSBjb25zdDsKICAgICAgICBNYXBwZWRUeXBlIGdldChjb25zdCBLZXlUeXBlJikg
Y29uc3Q7CiAgICAgICAgTWFwcGVkVHlwZSBnZXQoUmF3S2V5VHlwZSkgY29uc3Q7CiAgICAgICAg
TWFwcGVkVHlwZSBpbmxpbmVHZXQoUmF3S2V5VHlwZSkgY29uc3Q7CgoKCgogICAgICAgIHBhaXI8
aXRlcmF0b3IsIGJvb2w+IHNldChjb25zdCBLZXlUeXBlJiwgY29uc3QgTWFwcGVkVHlwZSYpOwog
ICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHNldChSYXdLZXlUeXBlLCBjb25zdCBNYXBwZWRU
eXBlJik7CgoKCgogICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBLZXlUeXBl
JiwgY29uc3QgTWFwcGVkVHlwZSYpOwogICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChS
YXdLZXlUeXBlLCBjb25zdCBNYXBwZWRUeXBlJik7CgogICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0
IEtleVR5cGUmKTsKICAgICAgICB2b2lkIHJlbW92ZShSYXdLZXlUeXBlKTsKICAgICAgICB2b2lk
IHJlbW92ZShpdGVyYXRvcik7CiAgICAgICAgdm9pZCBjbGVhcigpOwoKICAgICAgICBNYXBwZWRU
eXBlIHRha2UoY29uc3QgS2V5VHlwZSYpOwogICAgICAgIE1hcHBlZFR5cGUgdGFrZShSYXdLZXlU
eXBlKTsKCiAgICBwcml2YXRlOgogICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGlubGluZUFk
ZChjb25zdCBLZXlUeXBlJiwgY29uc3QgTWFwcGVkVHlwZSYpOwogICAgICAgIHBhaXI8aXRlcmF0
b3IsIGJvb2w+IGlubGluZUFkZChSYXdLZXlUeXBlLCBjb25zdCBNYXBwZWRUeXBlJik7CgogICAg
ICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgaW5s
aW5lIHZvaWQgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpzd2FwKEhhc2hNYXAmIG90
aGVyKQogICAgewogICAgICAgIG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7CiAgICB9CgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywg
dHlwZW5hbWUgWD4KICAgIGlubGluZSBpbnQgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+
OjpzaXplKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLnNpemUoKTsKICAgIH0K
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBXLCB0eXBlbmFtZSBYPgogICAgaW5saW5lIGludCBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwg
VywgWD46OmNhcGFjaXR5KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmNhcGFj
aXR5KCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgIGlubGluZSBib29sIEhhc2hNYXA8UmVm
UHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXNFbXB0eSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IG1faW1wbC5pc0VtcHR5KCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgIGlubGluZSB0eXBl
bmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yIEhhc2hNYXA8UmVm
UHRyPFQ+LCBVLCBWLCBXLCBYPjo6YmVnaW4oKQogICAgewogICAgICAgIHJldHVybiBtX2ltcGwu
YmVnaW4oKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgaW5saW5lIHR5cGVuYW1lIEhhc2hN
YXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IgSGFzaE1hcDxSZWZQdHI8VD4sIFUs
IFYsIFcsIFg+OjplbmQoKQogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4KICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwg
VSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBY
Pjo6YmVnaW4oKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsKICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBXLCB0eXBlbmFtZSBYPgogICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+
LCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcs
IFg+OjplbmQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4KICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwg
VSwgViwgVywgWD46Oml0ZXJhdG9yIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6Zmlu
ZChjb25zdCBLZXlUeXBlJiBrZXkpCiAgICB7CiAgICAgICAgcmV0dXJuIG1faW1wbC5maW5kKGtl
eSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFJl
ZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBX
LCBYPjo6ZmluZChSYXdLZXlUeXBlIGtleSkKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLnRl
bXBsYXRlIGZpbmQ8UmF3S2V5VHlwZSwgUmF3S2V5VHJhbnNsYXRvcj4oa2V5KTsKICAgIH0KCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPgogICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBW
LCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpm
aW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBs
LmZpbmQoa2V5KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgaW5saW5lIHR5cGVuYW1lIEhh
c2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxSZWZQ
dHI8VD4sIFUsIFYsIFcsIFg+OjpmaW5kKFJhd0tleVR5cGUga2V5KSBjb25zdAogICAgewogICAg
ICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxSYXdLZXlUeXBlLCBSYXdLZXlUcmFuc2xh
dG9yPihrZXkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiAgICBpbmxpbmUgYm9vbCBIYXNoTWFw
PFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29u
c3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmNvbnRhaW5zKGtleSk7CiAgICB9CgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywg
dHlwZW5hbWUgWD4KICAgIGlubGluZSBib29sIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBY
Pjo6Y29udGFpbnMoUmF3S2V5VHlwZSBrZXkpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1f
aW1wbC50ZW1wbGF0ZSBjb250YWluczxSYXdLZXlUeXBlLCBSYXdLZXlUcmFuc2xhdG9yPihrZXkp
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoTWFw
PFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgogICAgSGFzaE1hcDxSZWZQ
dHI8VD4sIFUsIFYsIFcsIFg+OjppbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYga2V5LCBjb25zdCBN
YXBwZWRUeXBlJiBtYXBwZWQpCiAgICB7CiAgICAgICAgdHlwZWRlZiBIYXNoTWFwVHJhbnNsYXRv
cjxWYWx1ZVR5cGUsIFZhbHVlVHJhaXRzLCBIYXNoRnVuY3Rpb25zPiBUcmFuc2xhdG9yVHlwZTsK
ICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxLZXlUeXBlLCBNYXBwZWRUeXBlLCBU
cmFuc2xhdG9yVHlwZT4oa2V5LCBtYXBwZWQpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiAgICBp
bmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJh
dG9yLCBib29sPgogICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppbmxpbmVBZGQo
UmF3S2V5VHlwZSBrZXksIGNvbnN0IE1hcHBlZFR5cGUmIG1hcHBlZCkKICAgIHsKICAgICAgICBy
ZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxSYXdLZXlUeXBlLCBNYXBwZWRUeXBlLCBSYXdLZXlU
cmFuc2xhdG9yPihrZXksIG1hcHBlZCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgIHBhaXI8
dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4K
ICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtl
eSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkKQogICAgewogICAgICAgIHBhaXI8aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7CiAgICAgICAgaWYgKCFyZXN1
bHQuc2Vjb25kKSB7CgogICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG1hcHBlZDsK
ICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgog
ICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9y
LCBib29sPgogICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpzZXQoUmF3S2V5VHlw
ZSBrZXksIGNvbnN0IE1hcHBlZFR5cGUmIG1hcHBlZCkKICAgIHsKICAgICAgICBwYWlyPGl0ZXJh
dG9yLCBib29sPiByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwogICAgICAgIGlmICgh
cmVzdWx0LnNlY29uZCkgewoKICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBtYXBw
ZWQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4KICAgIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppdGVy
YXRvciwgYm9vbD4KICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6YWRkKGNvbnN0
IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkKQogICAgewogICAgICAgIHJl
dHVybiBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiAgICBw
YWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJv
b2w+CiAgICBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmFkZChSYXdLZXlUeXBlIGtl
eSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkKQogICAgewogICAgICAgIHJldHVybiBpbmxpbmVB
ZGQoa2V5LCBtYXBwZWQpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0cz4KICAgIHR5
cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpNYXBwZWRU
eXBlCiAgICBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6Z2V0KGNv
bnN0IEtleVR5cGUmIGtleSkgY29uc3QKICAgIHsKICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0g
Y29uc3RfY2FzdDxIYXNoVGFibGVUeXBlJj4obV9pbXBsKS5sb29rdXAoa2V5KTsKICAgICAgICBp
ZiAoIWVudHJ5KQogICAgICAgICAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjplbXB0eVZhbHVlKCk7
CiAgICAgICAgcmV0dXJuIGVudHJ5LT5zZWNvbmQ7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzPgogICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIE1hcHBlZFRy
YWl0cz46Ok1hcHBlZFR5cGUKICAgIGlubGluZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywg
TWFwcGVkVHJhaXRzPjo6aW5saW5lR2V0KFJhd0tleVR5cGUga2V5KSBjb25zdAogICAgewogICAg
ICAgIFZhbHVlVHlwZSogZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwp
LnRlbXBsYXRlIGxvb2t1cDxSYXdLZXlUeXBlLCBSYXdLZXlUcmFuc2xhdG9yPihrZXkpOwogICAg
ICAgIGlmICghZW50cnkpCiAgICAgICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OmVtcHR5VmFs
dWUoKTsKICAgICAgICByZXR1cm4gZW50cnktPnNlY29uZDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBN
YXBwZWRUcmFpdHM+CiAgICB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgTWFw
cGVkVHJhaXRzPjo6TWFwcGVkVHlwZQogICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIE1h
cHBlZFRyYWl0cz46OmdldChSYXdLZXlUeXBlIGtleSkgY29uc3QKICAgIHsKICAgICAgICByZXR1
cm4gaW5saW5lR2V0KGtleSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgIGlubGluZSB2b2lk
IEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQogICAg
ewogICAgICAgIGlmIChpdC5tX2ltcGwgPT0gbV9pbXBsLmVuZCgpKQogICAgICAgICAgICByZXR1
cm47CiAgICAgICAgbV9pbXBsLmludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAg
ICAgbV9pbXBsLnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXQubV9pbXBsKTsK
ICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgaW5saW5lIHZvaWQgSGFzaE1hcDxSZWZQdHI8VD4s
IFUsIFYsIFcsIFg+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQogICAgewogICAgICAgIHJl
bW92ZShmaW5kKGtleSkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiAgICBpbmxpbmUgdm9pZCBI
YXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OnJlbW92ZShSYXdLZXlUeXBlIGtleSkKICAg
IHsKICAgICAgICByZW1vdmUoZmluZChrZXkpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAg
aW5saW5lIHZvaWQgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpjbGVhcigpCiAgICB7
CiAgICAgICAgbV9pbXBsLmNsZWFyKCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRz
PgogICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46
Ok1hcHBlZFR5cGUKICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+
Ojp0YWtlKGNvbnN0IEtleVR5cGUmIGtleSkKICAgIHsKCiAgICAgICAgaXRlcmF0b3IgaXQgPSBm
aW5kKGtleSk7CiAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAgICByZXR1cm4gTWFw
cGVkVHJhaXRzOjplbXB0eVZhbHVlKCk7CiAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8
VD4sIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46Ok1hcHBlZFR5cGUgcmVzdWx0ID0gaXQtPnNlY29u
ZDsKICAgICAgICByZW1vdmUoaXQpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywg
dHlwZW5hbWUgTWFwcGVkVHJhaXRzPgogICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUs
IFYsIFcsIE1hcHBlZFRyYWl0cz46Ok1hcHBlZFR5cGUKICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBV
LCBWLCBXLCBNYXBwZWRUcmFpdHM+Ojp0YWtlKFJhd0tleVR5cGUga2V5KQogICAgewoKICAgICAg
ICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5KTsKICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCiAgICAg
ICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKTsKICAgICAgICB0eXBlbmFt
ZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6TWFwcGVkVHlwZSBy
ZXN1bHQgPSBpdC0+c2Vjb25kOwogICAgICAgIHJlbW92ZShpdCk7CiAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgIH0KCn0KIyA0MTAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
SGFzaE1hcC5oIiAyCiMgMjYgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFk
aW9CdXR0b25zLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL093
blB0ci5oIiAxCiMgMjIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT3duUHRy
LmgiCiNkZWZpbmUgV1RGX093blB0cl9oIAoKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvT3duUHRyQ29tbW9uLmgiIDEKIyAyOSAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9Pd25QdHJDb21tb24uaCIKI2RlZmluZSBXVEZfT3duUHRyQ29tbW9uX2gg
CiMgNTkgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT3duUHRyQ29tbW9uLmgi
Cm5hbWVzcGFjZSBXVEYgewoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBk
ZWxldGVPd25lZFB0cihUKiBwdHIpCiAgICB7CiAgICAgICAgdHlwZWRlZiBjaGFyIGtub3duW3Np
emVvZihUKSA/IDEgOiAtMV07CiAgICAgICAgaWYgKHNpemVvZihrbm93bikpCiAgICAgICAgICAg
IGRlbGV0ZSBwdHI7CiAgICB9CiMgOTQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvT3duUHRyQ29tbW9uLmgiCn0KIyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9Pd25QdHIuaCIgMgoKCgoKbmFtZXNwYWNlIFdURiB7CgoKCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjbGFzcyBQYXNzT3duUHRyOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUGFzc093
blB0cjxUPiBhZG9wdFB0cihUKik7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgT3du
UHRyIHsKICAgIHB1YmxpYzoKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFJlbW92ZVBvaW50ZXI8
VD46OlR5cGUgVmFsdWVUeXBlOwogICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQdHJUeXBlOwoK
ICAgICAgICBPd25QdHIoKSA6IG1fcHRyKDApIHsgfQoKCiAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gT3duUHRyKGNvbnN0IFBhc3NPd25QdHI8VT4mIG8pOwoKCgoKCiAgICAgICAgT3duUHRy
KGNvbnN0IE93blB0cjxWYWx1ZVR5cGU+Jik7CgogICAgICAgIH5Pd25QdHIoKSB7IGRlbGV0ZU93
bmVkUHRyKG1fcHRyKTsgfQoKICAgICAgICBQdHJUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHRyOyB9CgogICAgICAgIHZvaWQgY2xlYXIoKTsKICAgICAgICBQYXNzT3duUHRyPFQ+IHJlbGVh
c2UoKTsKICAgICAgICBQdHJUeXBlIGxlYWtQdHIoKSBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVz
ZWRfcmVzdWx0KSk7CgogICAgICAgIFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyBkbyBp
ZiAoIShtX3B0cikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHIuaCIsIDYyLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAi
bV9wdHIiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOyByZXR1cm4gKm1fcHRyOyB9CiAgICAgICAgUHRyVHlwZSBvcGVyYXRvci0+KCkgY29uc3Qg
eyBkbyBpZiAoIShtX3B0cikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHIuaCIsIDYzLCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAibV9wdHIiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOyByZXR1cm4gbV9wdHI7IH0KCiAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiAhbV9wdHI7IH0KCgogICAgICAgIHR5cGVkZWYgUHRyVHlwZSBPd25QdHI6OipV
bnNwZWNpZmllZEJvb2xUeXBlOwogICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZPd25QdHI6Om1fcHRyIDogMDsgfQoKICAgICAgICBP
d25QdHImIG9wZXJhdG9yPShjb25zdCBQYXNzT3duUHRyPFQ+Jik7CiAgICAgICAgT3duUHRyJiBv
cGVyYXRvcj0oc3RkOjpudWxscHRyX3QpIHsgY2xlYXIoKTsgcmV0dXJuICp0aGlzOyB9CiAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gT3duUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc093blB0
cjxVPiYpOwoKICAgICAgICB2b2lkIHN3YXAoT3duUHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwg
by5tX3B0cik7IH0KCiAgICBwcml2YXRlOgogICAgICAgIE93blB0ciYgb3BlcmF0b3I9KGNvbnN0
IE93blB0cjxUPiYpOwoKCgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0
b3I9PShjb25zdCBPd25QdHI8VT4mKSB7IHR5cGVkZWYgaW50IGR1bW15T3duUHRyc19zaG91bGRf
bmV2ZXJfYmVfZXF1YWwgWyghc2l6ZW9mKFUqKSkgPyAxIDogLTFdOyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yIT0oY29uc3QgT3duUHRy
PFU+JikgeyB0eXBlZGVmIGludCBkdW1teU93blB0cnNfc2hvdWxkX25ldmVyX2JlX2VxdWFsIFso
IXNpemVvZihVKikpID8gMSA6IC0xXTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NPd25QdHI8VT4mKSB7IHR5cGVk
ZWYgaW50IGR1bW15T3duUHRyc19zaG91bGRfbmV2ZXJfYmVfZXF1YWwgWyghc2l6ZW9mKFUqKSkg
PyAxIDogLTFdOyByZXR1cm4gZmFsc2U7IH0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBi
b29sIG9wZXJhdG9yIT0oY29uc3QgUGFzc093blB0cjxVPiYpIHsgdHlwZWRlZiBpbnQgZHVtbXlP
d25QdHJzX3Nob3VsZF9uZXZlcl9iZV9lcXVhbCBbKCFzaXplb2YoVSopKSA/IDEgOiAtMV07IHJl
dHVybiBmYWxzZTsgfQoKICAgICAgICBQdHJUeXBlIG1fcHRyOwogICAgfTsKCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgT3duUHRyPFQ+OjpPd25Q
dHIoY29uc3QgUGFzc093blB0cjxVPiYgbykKICAgICAgICA6IG1fcHRyKG8ubGVha1B0cigpKQog
ICAgewogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIE93blB0cjxU
Pjo6Y2xlYXIoKQogICAgewogICAgICAgIFB0clR5cGUgcHRyID0gbV9wdHI7CiAgICAgICAgbV9w
dHIgPSAwOwogICAgICAgIGRlbGV0ZU93bmVkUHRyKHB0cik7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NPd25QdHI8VD4gT3duUHRyPFQ+OjpyZWxlYXNlKCkKICAg
IHsKICAgICAgICBQdHJUeXBlIHB0ciA9IG1fcHRyOwogICAgICAgIG1fcHRyID0gMDsKICAgICAg
ICByZXR1cm4gYWRvcHRQdHIocHRyKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgdHlwZW5hbWUgT3duUHRyPFQ+OjpQdHJUeXBlIE93blB0cjxUPjo6bGVha1B0cigpCiAg
ICB7CiAgICAgICAgUHRyVHlwZSBwdHIgPSBtX3B0cjsKICAgICAgICBtX3B0ciA9IDA7CiAgICAg
ICAgcmV0dXJuIHB0cjsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgT3du
UHRyPFQ+JiBPd25QdHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzT3duUHRyPFQ+JiBvKQogICAg
ewogICAgICAgIFB0clR5cGUgcHRyID0gbV9wdHI7CiAgICAgICAgbV9wdHIgPSBvLmxlYWtQdHIo
KTsKICAgICAgICBkbyBpZiAoISghcHRyIHx8IG1fcHRyICE9IHB0cikpIHsgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHIu
aCIsIDEyMCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFwdHIgfHwgbV9wdHIgIT0gcHRyIik7IGRv
IHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0g
MDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAg
ICBkZWxldGVPd25lZFB0cihwdHIpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgT3duUHRyPFQ+
JiBPd25QdHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzT3duUHRyPFU+JiBvKQogICAgewogICAg
ICAgIFB0clR5cGUgcHRyID0gbV9wdHI7CiAgICAgICAgbV9wdHIgPSBvLmxlYWtQdHIoKTsKICAg
ICAgICBkbyBpZiAoISghcHRyIHx8IG1fcHRyICE9IHB0cikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHIuaCIsIDEy
OSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFwdHIgfHwgbV9wdHIgIT0gcHRyIik7IGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkZWxl
dGVPd25lZFB0cihwdHIpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBzd2FwKE93blB0cjxUPiYgYSwgT3duUHRyPFQ+JiBi
KQogICAgewogICAgICAgIGEuc3dhcChiKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE93blB0cjxUPiYgYSwg
VSogYikKICAgIHsKICAgICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOwogICAgfQoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwg
Y29uc3QgT3duUHRyPFU+JiBiKQogICAgewogICAgICAgIHJldHVybiBhID09IGIuZ2V0KCk7CiAg
ICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBPd25QdHI8VD4mIGEsIFUqIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEu
Z2V0KCkgIT0gYjsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IE93blB0cjxVPiYgYikKICAgIHsKICAg
ICAgICByZXR1cm4gYSAhPSBiLmdldCgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSB0eXBlbmFtZSBPd25QdHI8VD46OlB0clR5cGUgZ2V0UHRyKGNvbnN0IE93blB0cjxU
PiYgcCkKICAgIHsKICAgICAgICByZXR1cm4gcC5nZXQoKTsKICAgIH0KCn0KCnVzaW5nIFdURjo6
T3duUHRyOwojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0
dG9ucy5oIiAyCgpuYW1lc3BhY2UgV2ViQ29yZSB7CgpjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OwpjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwoKY2xhc3MgQ2hlY2tlZFJhZGlvQnV0dG9ucyB7
CnB1YmxpYzoKICAgIHZvaWQgYWRkQnV0dG9uKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqKTsKICAg
IHZvaWQgcmVtb3ZlQnV0dG9uKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqKTsKICAgIEhUTUxJbnB1
dEVsZW1lbnQqIGNoZWNrZWRCdXR0b25Gb3JHcm91cChjb25zdCBBdG9taWNTdHJpbmcmIGdyb3Vw
TmFtZSkgY29uc3Q7Cgpwcml2YXRlOgogICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0lt
cGwqLCBIVE1MSW5wdXRFbGVtZW50Kj4gTmFtZVRvSW5wdXRNYXA7CiAgICBPd25QdHI8TmFtZVRv
SW5wdXRNYXA+IG1fbmFtZVRvQ2hlY2tlZFJhZGlvQnV0dG9uTWFwOwp9OwoKfQojIDMxICIuLi8u
Li8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvbkNhY2hlLmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNl
L1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uQ2FjaGUuaCIKI2RlZmluZSBDb2xsZWN0aW9uQ2FjaGVf
aCAKCgoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1ZlY3Rvci5oIiAx
CiMgMjIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9yLmgiCiNkZWZp
bmUgV1RGX1ZlY3Rvcl9oIAoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9Ob25jb3B5YWJsZS5oIiAxCiMgMjYgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvVmVjdG9yLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL05v
dEZvdW5kLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob3RG
b3VuZC5oIgojZGVmaW5lIE5vdEZvdW5kX2ggCgpuYW1lc3BhY2UgV1RGIHsKCiAgICBjb25zdCBz
aXplX3Qgbm90Rm91bmQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKTsKCn0KCnVzaW5nIFdURjo6
bm90Rm91bmQ7CiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9y
LmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJh
cy5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0
cmFzLmgiCiNkZWZpbmUgV1RGX1N0ZExpYkV4dHJhc19oIAojIDQwICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oIgojZGVmaW5lIERFRklORV9TVEFUSUNf
TE9DQUwodHlwZSxuYW1lLGFyZ3VtZW50cykgc3RhdGljIHR5cGUmIG5hbWUgPSAqbmV3IHR5cGUg
YXJndW1lbnRzCgoKCgoKCgojZGVmaW5lIE9CSkVDVF9PRkZTRVRPRihjbGFzcyxmaWVsZCkgKHJl
aW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8Y2xhc3MqPigweDQw
MDApLT5maWVsZCkpIC0gMHg0MDAwKQoKCiNkZWZpbmUgU1RSSU5HSVpFKGV4cCkgI2V4cAojZGVm
aW5lIFNUUklOR0laRV9WQUxVRV9PRihleHApIFNUUklOR0laRShleHApCiMgODUgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgiCiNkZWZpbmUgcmVpbnRl
cnByZXRfY2FzdF9wdHIgcmVpbnRlcnByZXRfY2FzdAoKCm5hbWVzcGFjZSBXVEYgewoKCgoKdGVt
cGxhdGU8dHlwZW5hbWUgVE8sIHR5cGVuYW1lIEZST00+CmlubGluZSBUTyBiaXR3aXNlX2Nhc3Qo
RlJPTSBmcm9tKQp7CiAgICB0eXBlZGVmIGludCBkdW1teVdURl9iaXR3aXNlX2Nhc3Rfc2l6ZW9m
X2Nhc3RlZF90eXBlc19pc19lcXVhbCBbKHNpemVvZihUTykgPT0gc2l6ZW9mKEZST00pKSA/IDEg
OiAtMV07CiAgICB1bmlvbiB7CiAgICAgICAgRlJPTSBmcm9tOwogICAgICAgIFRPIHRvOwogICAg
fSB1OwogICAgdS5mcm9tID0gZnJvbTsKICAgIHJldHVybiB1LnRvOwp9CgoKaW5saW5lIHNpemVf
dCBiaXRDb3VudCh1bnNpZ25lZCBiaXRzKQp7CiAgICBiaXRzID0gYml0cyAtICgoYml0cyA+PiAx
KSAmIDB4NTU1NTU1NTUpOwogICAgYml0cyA9IChiaXRzICYgMHgzMzMzMzMzMykgKyAoKGJpdHMg
Pj4gMikgJiAweDMzMzMzMzMzKTsKICAgIHJldHVybiAoKChiaXRzICsgKGJpdHMgPj4gNCkpICYg
MHhGMEYwRjBGKSAqIDB4MTAxMDEwMSkgPj4gMjQ7Cn0KCgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgU2l6ZT4gY2hhciAoJkFycmF5TGVuZ3RoSGVscGVyRnVuY3Rpb24oVCAoJilbU2l6ZV0p
KVtTaXplXTsKI2RlZmluZSBXVEZfQVJSQVlfTEVOR1RIKGFycmF5KSBzaXplb2YoOjpXVEY6OkFy
cmF5TGVuZ3RoSGVscGVyRnVuY3Rpb24oYXJyYXkpKQoKCnRlbXBsYXRlPHNpemVfdCBkaXZpc29y
PiBpbmxpbmUgc2l6ZV90IHJvdW5kVXBUb011bHRpcGxlT2Yoc2l6ZV90IHgpCnsKICAgIHR5cGVk
ZWYgaW50IGR1bW15ZGl2aXNvcl9pc19hX3Bvd2VyX29mX3R3byBbKGRpdmlzb3IgJiYgIShkaXZp
c29yICYgKGRpdmlzb3IgLSAxKSkpID8gMSA6IC0xXTsKCiAgICBzaXplX3QgcmVtYWluZGVyTWFz
ayA9IGRpdmlzb3IgLSAxOwogICAgcmV0dXJuICh4ICsgcmVtYWluZGVyTWFzaykgJiB+cmVtYWlu
ZGVyTWFzazsKfQoKZW51bSBCaW5hcnlTZWFyY2hNb2RlIHsKICAgIEtleU11c3RCZVByZXNlbnRJ
bkFycmF5LAogICAgS2V5TXVzdE5vdEJlUHJlc2VudEluQXJyYXkKfTsKCgoKdGVtcGxhdGU8dHlw
ZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgS2V5VHlwZSgqZXh0cmFj
dEtleSkoQXJyYXlFbGVtZW50VHlwZSopPgppbmxpbmUgQXJyYXlFbGVtZW50VHlwZSogYmluYXJ5
U2VhcmNoKEFycmF5RWxlbWVudFR5cGUqIGFycmF5LCBzaXplX3Qgc2l6ZSwgS2V5VHlwZSBrZXks
IEJpbmFyeVNlYXJjaE1vZGUgbW9kZSA9IEtleU11c3RCZVByZXNlbnRJbkFycmF5KQp7CgoKICAg
IHdoaWxlIChzaXplID4gMSkgewoKICAgICAgICBpbnQgcG9zID0gKHNpemUgLSAxKSA+PiAxOwog
ICAgICAgIEtleVR5cGUgdmFsID0gZXh0cmFjdEtleSgmYXJyYXlbcG9zXSk7CgoKICAgICAgICBp
ZiAodmFsID09IGtleSkKICAgICAgICAgICAgcmV0dXJuICZhcnJheVtwb3NdOwoKCiAgICAgICAg
ZWxzZSBpZiAoa2V5IDwgdmFsKQogICAgICAgICAgICBzaXplID0gcG9zOwoKICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgc2l6ZSAtPSAocG9zICsgMSk7CiAgICAgICAgICAgIGFycmF5ICs9IChw
b3MgKyAxKTsKICAgICAgICB9CgoKICAgICAgICBpZiAobW9kZSA9PSBLZXlNdXN0QmVQcmVzZW50
SW5BcnJheSkKICAgICAgICAgICAgZG8gaWYgKCEoc2l6ZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMu
aCIsIDE1OCwgX19QUkVUVFlfRlVOQ1RJT05fXywgInNpemUiKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgfQoKCgogICAgaWYgKG1vZGUg
PT0gS2V5TXVzdEJlUHJlc2VudEluQXJyYXkpIHsKICAgICAgICBkbyBpZiAoIShzaXplID09IDEp
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvU3RkTGliRXh0cmFzLmgiLCAxNjQsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzaXpl
ID09IDEiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOwogICAgICAgIGRvIGlmICghKGtleSA9PSBleHRyYWN0S2V5KCZhcnJheVswXSkpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvU3RkTGliRXh0cmFzLmgiLCAxNjUsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJrZXkgPT0gZXh0
cmFjdEtleSgmYXJyYXlbMF0pIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICop
KHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsKICAgIH0KCiAgICByZXR1cm4gJmFycmF5WzBdOwp9CgoKCgp0ZW1w
bGF0ZTx0eXBlbmFtZSBBcnJheUVsZW1lbnRUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBl
KCpleHRyYWN0S2V5KShBcnJheUVsZW1lbnRUeXBlKiksIHR5cGVuYW1lIEFycmF5VHlwZT4KaW5s
aW5lIEFycmF5RWxlbWVudFR5cGUqIGdlbmVyaWNCaW5hcnlTZWFyY2goQXJyYXlUeXBlJiBhcnJh
eSwgc2l6ZV90IHNpemUsIEtleVR5cGUga2V5KQp7CgoKICAgIHNpemVfdCBvZmZzZXQgPSAwOwog
ICAgd2hpbGUgKHNpemUgPiAxKSB7CgogICAgICAgIGludCBwb3MgPSAoc2l6ZSAtIDEpID4+IDE7
CiAgICAgICAgS2V5VHlwZSB2YWwgPSBleHRyYWN0S2V5KCZhcnJheVtvZmZzZXQgKyBwb3NdKTsK
CgogICAgICAgIGlmICh2YWwgPT0ga2V5KQogICAgICAgICAgICByZXR1cm4gJmFycmF5W29mZnNl
dCArIHBvc107CgoKICAgICAgICBpZiAoa2V5IDwgdmFsKQogICAgICAgICAgICBzaXplID0gcG9z
OwoKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgc2l6ZSAtPSAocG9zICsgMSk7CiAgICAgICAg
ICAgIG9mZnNldCArPSAocG9zICsgMSk7CiAgICAgICAgfQoKCiAgICAgICAgZG8gaWYgKCEoc2l6
ZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaCIsIDE5OSwgX19QUkVUVFlfRlVOQ1RJT05fXywgInNp
emUiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgfQoKCiAgICBkbyBpZiAoIShzaXplID09IDEpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZh
aWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgi
LCAyMDMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzaXplID09IDEiKTsgZG8geyBXVEZSZXBvcnRC
YWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKiko
KSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgZG8gaWYgKCEoa2V5ID09
IGV4dHJhY3RLZXkoJmFycmF5W29mZnNldF0pKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJl
KCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oIiwgMjA0
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAia2V5ID09IGV4dHJhY3RLZXkoJmFycmF5W29mZnNldF0p
Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRi
ZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsK
ICAgIHJldHVybiAmYXJyYXlbb2Zmc2V0XTsKfQoKfQoKdXNpbmcgV1RGOjpiaW5hcnlTZWFyY2g7
CnVzaW5nIFdURjo6Yml0d2lzZV9jYXN0OwojIDI4ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1ZlY3Rvci5oIiAyCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVmVjdG9yVHJhaXRzLmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9WZWN0b3JUcmFpdHMuaCIKI2RlZmluZSBXVEZfVmVjdG9yVHJhaXRzX2ggCgojIDEg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT3duUHRyLmgiIDEKIyAyNSAiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3JUcmFpdHMuaCIgMgoKCgoKCnVz
aW5nIHN0ZDo6cGFpcjsKCm5hbWVzcGFjZSBXVEYgewoKICAgIHRlbXBsYXRlPGJvb2wgaXNQb2Qs
IHR5cGVuYW1lIFQ+CiAgICBzdHJ1Y3QgVmVjdG9yVHJhaXRzQmFzZTsKCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3RvclRyYWl0c0Jhc2U8ZmFsc2UsIFQ+CiAgICB7CiAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgbmVlZHNJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSBmYWxzZTsKICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBjYW5Nb3ZlV2l0aE1lbWNweSA9IGZhbHNlOwogICAgICAgIHN0YXRp
YyBjb25zdCBib29sIGNhbkNvcHlXaXRoTWVtY3B5ID0gZmFsc2U7CiAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgY2FuRmlsbFdpdGhNZW1zZXQgPSBmYWxzZTsKICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3RvclRyYWl0c0Jhc2U8dHJ1ZSwgVD4KICAgIHsKICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgbmVlZHNJbml0aWFsaXphdGlvbiA9IGZhbHNlOwogICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0ID0gZmFsc2U7CiAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgY2FuTW92ZVdpdGhNZW1jcHkgPSB0cnVlOwogICAgICAgIHN0YXRp
YyBjb25zdCBib29sIGNhbkNvcHlXaXRoTWVtY3B5ID0gdHJ1ZTsKICAgICAgICBzdGF0aWMgY29u
c3QgYm9vbCBjYW5GaWxsV2l0aE1lbXNldCA9IHNpemVvZihUKSA9PSBzaXplb2YoY2hhcik7CiAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSB0cnVlOwogICAg
fTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3RvclRyYWl0cyA6IFZl
Y3RvclRyYWl0c0Jhc2U8SXNQb2Q8VD46OnZhbHVlLCBUPiB7IH07CgogICAgc3RydWN0IFNpbXBs
ZUNsYXNzVmVjdG9yVHJhaXRzIDogVmVjdG9yVHJhaXRzQmFzZTxmYWxzZSwgdm9pZD4KICAgIHsK
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IHRydWU7
CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuTW92ZVdpdGhNZW1jcHkgPSB0cnVlOwogICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0gdHJ1ZTsKICAgIH07
CgoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPgogICAgc3RydWN0IFZlY3RvclRyYWl0czxSZWZQ
dHI8UD4gPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBQPgogICAgc3RydWN0IFZlY3RvclRyYWl0czxPd25QdHI8UD4gPiA6IFNpbXBsZUNsYXNz
VmVjdG9yVHJhaXRzIHsgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUg
U2Vjb25kPgogICAgc3RydWN0IFZlY3RvclRyYWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID4KICAg
IHsKICAgICAgICB0eXBlZGVmIFZlY3RvclRyYWl0czxGaXJzdD4gRmlyc3RUcmFpdHM7CiAgICAg
ICAgdHlwZWRlZiBWZWN0b3JUcmFpdHM8U2Vjb25kPiBTZWNvbmRUcmFpdHM7CgogICAgICAgIHN0
YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBGaXJzdFRyYWl0czo6bmVlZHNEZXN0
cnVjdGlvbiB8fCBTZWNvbmRUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb247CiAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgbmVlZHNJbml0aWFsaXphdGlvbiA9IEZpcnN0VHJhaXRzOjpuZWVkc0luaXRp
YWxpemF0aW9uIHx8IFNlY29uZFRyYWl0czo6bmVlZHNJbml0aWFsaXphdGlvbjsKICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IEZpcnN0VHJhaXRzOjpj
YW5Jbml0aWFsaXplV2l0aE1lbXNldCAmJiBTZWNvbmRUcmFpdHM6OmNhbkluaXRpYWxpemVXaXRo
TWVtc2V0OwogICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbk1vdmVXaXRoTWVtY3B5ID0gRmly
c3RUcmFpdHM6OmNhbk1vdmVXaXRoTWVtY3B5ICYmIFNlY29uZFRyYWl0czo6Y2FuTW92ZVdpdGhN
ZW1jcHk7CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuQ29weVdpdGhNZW1jcHkgPSBGaXJz
dFRyYWl0czo6Y2FuQ29weVdpdGhNZW1jcHkgJiYgU2Vjb25kVHJhaXRzOjpjYW5Db3B5V2l0aE1l
bWNweTsKICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5GaWxsV2l0aE1lbXNldCA9IGZhbHNl
OwogICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0gRmlyc3RU
cmFpdHM6OmNhbkNvbXBhcmVXaXRoTWVtY21wICYmIFNlY29uZFRyYWl0czo6Y2FuQ29tcGFyZVdp
dGhNZW1jbXA7CiAgICB9OwoKfQoKdXNpbmcgV1RGOjpWZWN0b3JUcmFpdHM7CnVzaW5nIFdURjo6
U2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHM7CiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVmVjdG9yLmgiIDIKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQWxpZ25tZW50LmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9BbGlnbm1lbnQuaCIKI2RlZmluZSBXVEZfQWxpZ25tZW50X2ggCgoKCgojZGVmaW5lIFdU
Rl9BTElHTl9PRih0eXBlKSBfX2FsaWdub2ZfXyh0eXBlKQojZGVmaW5lIFdURl9BTElHTkVEKHZh
cmlhYmxlX3R5cGUsdmFyaWFibGUsbikgdmFyaWFibGVfdHlwZSB2YXJpYWJsZSBfX2F0dHJpYnV0
ZV9fKChfX2FsaWduZWRfXyhuKSkpCiMgMzMgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVmVjdG9yLmgiIDIKCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvUURhdGFT
dHJlYW0iIDEKIyAxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FkYXRhc3RyZWFtLmgiIDEK
IyA0MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xZGF0YXN0cmVhbS5oIgojZGVmaW5lIFFE
QVRBU1RSRUFNX0ggCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXNjb3BlZHBvaW50
ZXIuaCIgMQojIDQzICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FzY29wZWRwb2ludGVyLmgi
CiNkZWZpbmUgUVNDT1BFRFBPSU5URVJfSCAKCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29y
ZS9xZ2xvYmFsLmgiIDEKIyA0NiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xc2NvcGVkcG9p
bnRlci5oIiAyCgoKCnR5cGVkZWYgUXRWYWxpZExpY2Vuc2VGb3JDb3JlTW9kdWxlIFF0Q29yZU1v
ZHVsZTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpzdHJ1Y3QgUVNjb3BlZFBvaW50ZXJEZWxldGVy
CnsKICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhbnVwKFQgKnBvaW50ZXIpCiAgICB7CgoKCiAg
ICAgICAgdHlwZWRlZiBjaGFyIElzSW5jb21wbGV0ZVR5cGVbIHNpemVvZihUKSA/IDEgOiAtMSBd
OwogICAgICAgICh2b2lkKSBzaXplb2YoSXNJbmNvbXBsZXRlVHlwZSk7CgogICAgICAgIGRlbGV0
ZSBwb2ludGVyOwogICAgfQp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBRU2NvcGVk
UG9pbnRlckFycmF5RGVsZXRlcgp7CiAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYW51cChUICpw
b2ludGVyKQogICAgewoKCgogICAgICAgIHR5cGVkZWYgY2hhciBJc0luY29tcGxldGVUeXBlWyBz
aXplb2YoVCkgPyAxIDogLTEgXTsKICAgICAgICAodm9pZCkgc2l6ZW9mKElzSW5jb21wbGV0ZVR5
cGUpOwoKICAgICAgICBkZWxldGUgW10gcG9pbnRlcjsKICAgIH0KfTsKCnN0cnVjdCBRU2NvcGVk
UG9pbnRlclBvZERlbGV0ZXIKewogICAgc3RhdGljIGlubGluZSB2b2lkIGNsZWFudXAodm9pZCAq
cG9pbnRlcikgeyBpZiAocG9pbnRlcikgcUZyZWUocG9pbnRlcik7IH0KfTsKCnRlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBDbGVhbnVwID0gUVNjb3BlZFBvaW50ZXJEZWxldGVyPFQ+ID4K
Y2xhc3MgUVNjb3BlZFBvaW50ZXIKewoKICAgIHR5cGVkZWYgVCAqUVNjb3BlZFBvaW50ZXI6OiAq
UmVzdHJpY3RlZEJvb2w7CgpwdWJsaWM6CiAgICBleHBsaWNpdCBpbmxpbmUgUVNjb3BlZFBvaW50
ZXIoVCAqcCA9IDApIDogZChwKQogICAgewogICAgfQoKICAgIGlubGluZSB+UVNjb3BlZFBvaW50
ZXIoKQogICAgewogICAgICAgIFQgKm9sZEQgPSB0aGlzLT5kOwogICAgICAgIENsZWFudXA6OmNs
ZWFudXAob2xkRCk7CiAgICAgICAgdGhpcy0+ZCA9IDA7CiAgICB9CgogICAgaW5saW5lIFQgJm9w
ZXJhdG9yKigpIGNvbnN0CiAgICB7CiAgICAgICAgKCghKGQpKSA/IHF0X2Fzc2VydCgiZCIsIi9v
cHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXNjb3BlZHBvaW50ZXIuaCIsMTA2KSA6IHF0X25vb3Ao
KSk7CiAgICAgICAgcmV0dXJuICpkOwogICAgfQoKICAgIGlubGluZSBUICpvcGVyYXRvci0+KCkg
Y29uc3QKICAgIHsKICAgICAgICAoKCEoZCkpID8gcXRfYXNzZXJ0KCJkIiwiL29wdC9sb2NhbC9p
bmNsdWRlL1F0Q29yZS9xc2NvcGVkcG9pbnRlci5oIiwxMTIpIDogcXRfbm9vcCgpKTsKICAgICAg
ICByZXR1cm4gZDsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciEoKSBjb25zdAogICAg
ewogICAgICAgIHJldHVybiAhZDsKICAgIH0KCgoKCgoKCiAgICBpbmxpbmUgb3BlcmF0b3IgUmVz
dHJpY3RlZEJvb2woKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBpc051bGwoKSA/IDAgOiAm
UVNjb3BlZFBvaW50ZXI6OmQ7CiAgICB9CgoKICAgIGlubGluZSBUICpkYXRhKCkgY29uc3QKICAg
IHsKICAgICAgICByZXR1cm4gZDsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBpc051bGwoKSBjb25z
dAogICAgewogICAgICAgIHJldHVybiAhZDsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCByZXNldChU
ICpvdGhlciA9IDApCiAgICB7CiAgICAgICAgaWYgKGQgPT0gb3RoZXIpCiAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICBUICpvbGREID0gZDsKICAgICAgICBkID0gb3RoZXI7CiAgICAgICAgQ2xl
YW51cDo6Y2xlYW51cChvbGREKTsKICAgIH0KCiAgICBpbmxpbmUgVCAqdGFrZSgpCiAgICB7CiAg
ICAgICAgVCAqb2xkRCA9IGQ7CiAgICAgICAgZCA9IDA7CiAgICAgICAgcmV0dXJuIG9sZEQ7CiAg
ICB9CgogICAgaW5saW5lIHZvaWQgc3dhcChRU2NvcGVkUG9pbnRlcjxULCBDbGVhbnVwPiAmb3Ro
ZXIpCiAgICB7CiAgICAgICAgcVN3YXAoZCwgb3RoZXIuZCk7CiAgICB9CgogICAgdHlwZWRlZiBU
ICpwb2ludGVyOwoKcHJvdGVjdGVkOgogICAgVCAqZDsKCnByaXZhdGU6CiAgICBRU2NvcGVkUG9p
bnRlcihjb25zdCBRU2NvcGVkUG9pbnRlciAmKTsgUVNjb3BlZFBvaW50ZXIgJm9wZXJhdG9yPShj
b25zdCBRU2NvcGVkUG9pbnRlciAmKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBDbGVh
bnVwPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFTY29wZWRQb2ludGVyPFQsIENsZWFu
dXA+ICZsaHMsIGNvbnN0IFFTY29wZWRQb2ludGVyPFQsIENsZWFudXA+ICZyaHMpCnsKICAgIHJl
dHVybiBsaHMuZGF0YSgpID09IHJocy5kYXRhKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFz
cyBDbGVhbnVwPgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFTY29wZWRQb2ludGVyPFQs
IENsZWFudXA+ICZsaHMsIGNvbnN0IFFTY29wZWRQb2ludGVyPFQsIENsZWFudXA+ICZyaHMpCnsK
ICAgIHJldHVybiBsaHMuZGF0YSgpICE9IHJocy5kYXRhKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBU
LCBjbGFzcyBDbGVhbnVwPgppbmxpbmUgdm9pZCBxU3dhcChRU2NvcGVkUG9pbnRlcjxULCBDbGVh
bnVwPiAmcDEsIFFTY29wZWRQb2ludGVyPFQsIENsZWFudXA+ICZwMikKeyBwMS5zd2FwKHAyKTsg
fQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENsZWFudXAgPSBRU2NvcGVkUG9pbnRl
ckFycmF5RGVsZXRlcjxUPiA+CmNsYXNzIFFTY29wZWRBcnJheVBvaW50ZXIgOiBwdWJsaWMgUVNj
b3BlZFBvaW50ZXI8VCwgQ2xlYW51cD4KewpwdWJsaWM6CiAgICBleHBsaWNpdCBpbmxpbmUgUVNj
b3BlZEFycmF5UG9pbnRlcihUICpwID0gMCkKICAgICAgICA6IFFTY29wZWRQb2ludGVyPFQsIENs
ZWFudXA+KHApCiAgICB7CiAgICB9CgogICAgaW5saW5lIFQgJm9wZXJhdG9yW10oaW50IGkpCiAg
ICB7CiAgICAgICAgcmV0dXJuIHRoaXMtPmRbaV07CiAgICB9CgogICAgaW5saW5lIGNvbnN0IFQg
Jm9wZXJhdG9yW10oaW50IGkpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMtPmRbaV07
CiAgICB9Cgpwcml2YXRlOgogICAgUVNjb3BlZEFycmF5UG9pbnRlcihjb25zdCBRU2NvcGVkQXJy
YXlQb2ludGVyICYpOyBRU2NvcGVkQXJyYXlQb2ludGVyICZvcGVyYXRvcj0oY29uc3QgUVNjb3Bl
ZEFycmF5UG9pbnRlciAmKTsKfTsKCgoKIyA0NiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9x
ZGF0YXN0cmVhbS5oIiAyCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xaW9kZXZpY2Uu
aCIgMQojIDQzICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3Fpb2RldmljZS5oIgojZGVmaW5l
IFFJT0RFVklDRV9IIAoKCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xb2JqZWN0Lmgi
IDEKIyA0MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xb2JqZWN0LmgiCiNkZWZpbmUgUU9C
SkVDVF9IIAoKCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcW9iamVjdGRlZnMuaCIg
MQojIDQzICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FvYmplY3RkZWZzLmgiCiNkZWZpbmUg
UU9CSkVDVERFRlNfSCAKCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xbmFtZXNwYWNl
LmgiIDEKIyA0MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xbmFtZXNwYWNlLmgiCiNkZWZp
bmUgUU5BTUVTUEFDRV9IIAoKCgoKCgoKdHlwZWRlZiBRdFZhbGlkTGljZW5zZUZvckNvcmVNb2R1
bGUgUXRDb3JlTW9kdWxlOwoKCm5hbWVzcGFjZQoKCgpRdCB7CiMgMTAzICIvb3B0L2xvY2FsL2lu
Y2x1ZGUvUXRDb3JlL3FuYW1lc3BhY2UuaCIKICAgIGVudW0gR2xvYmFsQ29sb3IgewogICAgICAg
IGNvbG9yMCwKICAgICAgICBjb2xvcjEsCiAgICAgICAgYmxhY2ssCiAgICAgICAgd2hpdGUsCiAg
ICAgICAgZGFya0dyYXksCiAgICAgICAgZ3JheSwKICAgICAgICBsaWdodEdyYXksCiAgICAgICAg
cmVkLAogICAgICAgIGdyZWVuLAogICAgICAgIGJsdWUsCiAgICAgICAgY3lhbiwKICAgICAgICBt
YWdlbnRhLAogICAgICAgIHllbGxvdywKICAgICAgICBkYXJrUmVkLAogICAgICAgIGRhcmtHcmVl
biwKICAgICAgICBkYXJrQmx1ZSwKICAgICAgICBkYXJrQ3lhbiwKICAgICAgICBkYXJrTWFnZW50
YSwKICAgICAgICBkYXJrWWVsbG93LAogICAgICAgIHRyYW5zcGFyZW50CiAgICB9OwoKICAgIGVu
dW0gS2V5Ym9hcmRNb2RpZmllciB7CiAgICAgICAgTm9Nb2RpZmllciA9IDB4MDAwMDAwMDAsCiAg
ICAgICAgU2hpZnRNb2RpZmllciA9IDB4MDIwMDAwMDAsCiAgICAgICAgQ29udHJvbE1vZGlmaWVy
ID0gMHgwNDAwMDAwMCwKICAgICAgICBBbHRNb2RpZmllciA9IDB4MDgwMDAwMDAsCiAgICAgICAg
TWV0YU1vZGlmaWVyID0gMHgxMDAwMDAwMCwKICAgICAgICBLZXlwYWRNb2RpZmllciA9IDB4MjAw
MDAwMDAsCiAgICAgICAgR3JvdXBTd2l0Y2hNb2RpZmllciA9IDB4NDAwMDAwMDAsCgogICAgICAg
IEtleWJvYXJkTW9kaWZpZXJNYXNrID0gMHhmZTAwMDAwMAogICAgfTsKICAgIHR5cGVkZWYgUUZs
YWdzPEtleWJvYXJkTW9kaWZpZXI+IEtleWJvYXJkTW9kaWZpZXJzOwoKCiAgICBlbnVtIE1vZGlm
aWVyIHsKICAgICAgICBNRVRBID0gUXQ6Ok1ldGFNb2RpZmllciwKICAgICAgICBTSElGVCA9IFF0
OjpTaGlmdE1vZGlmaWVyLAogICAgICAgIENUUkwgPSBRdDo6Q29udHJvbE1vZGlmaWVyLAogICAg
ICAgIEFMVCA9IFF0OjpBbHRNb2RpZmllciwKICAgICAgICBNT0RJRklFUl9NQVNLID0gS2V5Ym9h
cmRNb2RpZmllck1hc2ssCiAgICAgICAgVU5JQ09ERV9BQ0NFTCA9IDB4MDAwMDAwMDAKICAgIH07
CgogICAgZW51bSBNb3VzZUJ1dHRvbiB7CiAgICAgICAgTm9CdXR0b24gPSAweDAwMDAwMDAwLAog
ICAgICAgIExlZnRCdXR0b24gPSAweDAwMDAwMDAxLAogICAgICAgIFJpZ2h0QnV0dG9uID0gMHgw
MDAwMDAwMiwKICAgICAgICBNaWRCdXR0b24gPSAweDAwMDAwMDA0LAogICAgICAgIE1pZGRsZUJ1
dHRvbiA9IE1pZEJ1dHRvbiwKICAgICAgICBYQnV0dG9uMSA9IDB4MDAwMDAwMDgsCiAgICAgICAg
WEJ1dHRvbjIgPSAweDAwMDAwMDEwLAogICAgICAgIE1vdXNlQnV0dG9uTWFzayA9IDB4MDAwMDAw
ZmYKICAgIH07CiAgICB0eXBlZGVmIFFGbGFnczxNb3VzZUJ1dHRvbj4gTW91c2VCdXR0b25zOwoj
IDE3MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xbmFtZXNwYWNlLmgiCiAgICBlbnVtIE9y
aWVudGF0aW9uIHsKICAgICAgICBIb3Jpem9udGFsID0gMHgxLAogICAgICAgIFZlcnRpY2FsID0g
MHgyCiAgICB9OwoKICAgIHR5cGVkZWYgUUZsYWdzPE9yaWVudGF0aW9uPiBPcmllbnRhdGlvbnM7
CgogICAgZW51bSBGb2N1c1BvbGljeSB7CiAgICAgICAgTm9Gb2N1cyA9IDAsCiAgICAgICAgVGFi
Rm9jdXMgPSAweDEsCiAgICAgICAgQ2xpY2tGb2N1cyA9IDB4MiwKICAgICAgICBTdHJvbmdGb2N1
cyA9IFRhYkZvY3VzIHwgQ2xpY2tGb2N1cyB8IDB4OCwKICAgICAgICBXaGVlbEZvY3VzID0gU3Ry
b25nRm9jdXMgfCAweDQKICAgIH07CgogICAgZW51bSBTb3J0T3JkZXIgewogICAgICAgIEFzY2Vu
ZGluZ09yZGVyLAogICAgICAgIERlc2NlbmRpbmdPcmRlcgoKCgoKICAgIH07CgogICAgZW51bSBU
aWxlUnVsZSB7CiAgICAgICAgU3RyZXRjaFRpbGUsCiAgICAgICAgUmVwZWF0VGlsZSwKICAgICAg
ICBSb3VuZFRpbGUKICAgIH07CgoKCgoKICAgIGVudW0gQWxpZ25tZW50RmxhZyB7CiAgICAgICAg
QWxpZ25MZWZ0ID0gMHgwMDAxLAogICAgICAgIEFsaWduTGVhZGluZyA9IEFsaWduTGVmdCwKICAg
ICAgICBBbGlnblJpZ2h0ID0gMHgwMDAyLAogICAgICAgIEFsaWduVHJhaWxpbmcgPSBBbGlnblJp
Z2h0LAogICAgICAgIEFsaWduSENlbnRlciA9IDB4MDAwNCwKICAgICAgICBBbGlnbkp1c3RpZnkg
PSAweDAwMDgsCiAgICAgICAgQWxpZ25BYnNvbHV0ZSA9IDB4MDAxMCwKICAgICAgICBBbGlnbkhv
cml6b250YWxfTWFzayA9IEFsaWduTGVmdCB8IEFsaWduUmlnaHQgfCBBbGlnbkhDZW50ZXIgfCBB
bGlnbkp1c3RpZnkgfCBBbGlnbkFic29sdXRlLAoKICAgICAgICBBbGlnblRvcCA9IDB4MDAyMCwK
ICAgICAgICBBbGlnbkJvdHRvbSA9IDB4MDA0MCwKICAgICAgICBBbGlnblZDZW50ZXIgPSAweDAw
ODAsCiAgICAgICAgQWxpZ25WZXJ0aWNhbF9NYXNrID0gQWxpZ25Ub3AgfCBBbGlnbkJvdHRvbSB8
IEFsaWduVkNlbnRlciwKCiAgICAgICAgQWxpZ25DZW50ZXIgPSBBbGlnblZDZW50ZXIgfCBBbGln
bkhDZW50ZXIKCgoKICAgIH07CgogICAgdHlwZWRlZiBRRmxhZ3M8QWxpZ25tZW50RmxhZz4gQWxp
Z25tZW50OwoKICAgIGVudW0gVGV4dEZsYWcgewogICAgICAgIFRleHRTaW5nbGVMaW5lID0gMHgw
MTAwLAogICAgICAgIFRleHREb250Q2xpcCA9IDB4MDIwMCwKICAgICAgICBUZXh0RXhwYW5kVGFi
cyA9IDB4MDQwMCwKICAgICAgICBUZXh0U2hvd01uZW1vbmljID0gMHgwODAwLAogICAgICAgIFRl
eHRXb3JkV3JhcCA9IDB4MTAwMCwKICAgICAgICBUZXh0V3JhcEFueXdoZXJlID0gMHgyMDAwLAog
ICAgICAgIFRleHREb250UHJpbnQgPSAweDQwMDAsCiAgICAgICAgVGV4dEluY2x1ZGVUcmFpbGlu
Z1NwYWNlcyA9IDB4MDgwMDAwMDAsCiAgICAgICAgVGV4dEhpZGVNbmVtb25pYyA9IDB4ODAwMCwK
ICAgICAgICBUZXh0SnVzdGlmaWNhdGlvbkZvcmNlZCA9IDB4MTAwMDAsCiAgICAgICAgVGV4dEZv
cmNlTGVmdFRvUmlnaHQgPSAweDIwMDAwLAogICAgICAgIFRleHRGb3JjZVJpZ2h0VG9MZWZ0ID0g
MHg0MDAwMCwKICAgICAgICBUZXh0TG9uZ2VzdFZhcmlhbnQgPSAweDgwMDAwLAogICAgICAgIFRl
eHRCeXBhc3NTaGFwaW5nID0gMHgxMDAwMDAKIyAyNTcgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENv
cmUvcW5hbWVzcGFjZS5oIgogICAgfTsKCgoKCiAgICBlbnVtIFRleHRFbGlkZU1vZGUgewogICAg
ICAgIEVsaWRlTGVmdCwKICAgICAgICBFbGlkZVJpZ2h0LAogICAgICAgIEVsaWRlTWlkZGxlLAog
ICAgICAgIEVsaWRlTm9uZQogICAgfTsKCiAgICBlbnVtIFdpbmRvd1R5cGUgewogICAgICAgIFdp
ZGdldCA9IDB4MDAwMDAwMDAsCiAgICAgICAgV2luZG93ID0gMHgwMDAwMDAwMSwKICAgICAgICBE
aWFsb2cgPSAweDAwMDAwMDAyIHwgV2luZG93LAogICAgICAgIFNoZWV0ID0gMHgwMDAwMDAwNCB8
IFdpbmRvdywKICAgICAgICBEcmF3ZXIgPSAweDAwMDAwMDA2IHwgV2luZG93LAogICAgICAgIFBv
cHVwID0gMHgwMDAwMDAwOCB8IFdpbmRvdywKICAgICAgICBUb29sID0gMHgwMDAwMDAwYSB8IFdp
bmRvdywKICAgICAgICBUb29sVGlwID0gMHgwMDAwMDAwYyB8IFdpbmRvdywKICAgICAgICBTcGxh
c2hTY3JlZW4gPSAweDAwMDAwMDBlIHwgV2luZG93LAogICAgICAgIERlc2t0b3AgPSAweDAwMDAw
MDEwIHwgV2luZG93LAogICAgICAgIFN1YldpbmRvdyA9IDB4MDAwMDAwMTIsCgogICAgICAgIFdp
bmRvd1R5cGVfTWFzayA9IDB4MDAwMDAwZmYsCiAgICAgICAgTVNXaW5kb3dzRml4ZWRTaXplRGlh
bG9nSGludCA9IDB4MDAwMDAxMDAsCiAgICAgICAgTVNXaW5kb3dzT3duREMgPSAweDAwMDAwMjAw
LAogICAgICAgIFgxMUJ5cGFzc1dpbmRvd01hbmFnZXJIaW50ID0gMHgwMDAwMDQwMCwKICAgICAg
ICBGcmFtZWxlc3NXaW5kb3dIaW50ID0gMHgwMDAwMDgwMCwKICAgICAgICBXaW5kb3dUaXRsZUhp
bnQgPSAweDAwMDAxMDAwLAogICAgICAgIFdpbmRvd1N5c3RlbU1lbnVIaW50ID0gMHgwMDAwMjAw
MCwKICAgICAgICBXaW5kb3dNaW5pbWl6ZUJ1dHRvbkhpbnQgPSAweDAwMDA0MDAwLAogICAgICAg
IFdpbmRvd01heGltaXplQnV0dG9uSGludCA9IDB4MDAwMDgwMDAsCiAgICAgICAgV2luZG93TWlu
TWF4QnV0dG9uc0hpbnQgPSBXaW5kb3dNaW5pbWl6ZUJ1dHRvbkhpbnQgfCBXaW5kb3dNYXhpbWl6
ZUJ1dHRvbkhpbnQsCiAgICAgICAgV2luZG93Q29udGV4dEhlbHBCdXR0b25IaW50ID0gMHgwMDAx
MDAwMCwKICAgICAgICBXaW5kb3dTaGFkZUJ1dHRvbkhpbnQgPSAweDAwMDIwMDAwLAogICAgICAg
IFdpbmRvd1N0YXlzT25Ub3BIaW50ID0gMHgwMDA0MDAwMCwKCgoKCgoKCiAgICAgICAgQ3VzdG9t
aXplV2luZG93SGludCA9IDB4MDIwMDAwMDAsCiAgICAgICAgV2luZG93U3RheXNPbkJvdHRvbUhp
bnQgPSAweDA0MDAwMDAwLAogICAgICAgIFdpbmRvd0Nsb3NlQnV0dG9uSGludCA9IDB4MDgwMDAw
MDAsCiAgICAgICAgTWFjV2luZG93VG9vbEJhckJ1dHRvbkhpbnQgPSAweDEwMDAwMDAwLAogICAg
ICAgIEJ5cGFzc0dyYXBoaWNzUHJveHlXaWRnZXQgPSAweDIwMDAwMDAwLAogICAgICAgIFdpbmRv
d09rQnV0dG9uSGludCA9IDB4MDAwODAwMDAsCiAgICAgICAgV2luZG93Q2FuY2VsQnV0dG9uSGlu
dCA9IDB4MDAxMDAwMDAsCiAgICAgICAgV2luZG93U29mdGtleXNWaXNpYmxlSGludCA9IDB4NDAw
MDAwMDAsCiAgICAgICAgV2luZG93U29mdGtleXNSZXNwb25kSGludCA9IDB4ODAwMDAwMDAKIyAz
NjEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcW5hbWVzcGFjZS5oIgogICAgfTsKCiAgICB0
eXBlZGVmIFFGbGFnczxXaW5kb3dUeXBlPiBXaW5kb3dGbGFnczsKCiAgICBlbnVtIFdpbmRvd1N0
YXRlIHsKICAgICAgICBXaW5kb3dOb1N0YXRlID0gMHgwMDAwMDAwMCwKICAgICAgICBXaW5kb3dN
aW5pbWl6ZWQgPSAweDAwMDAwMDAxLAogICAgICAgIFdpbmRvd01heGltaXplZCA9IDB4MDAwMDAw
MDIsCiAgICAgICAgV2luZG93RnVsbFNjcmVlbiA9IDB4MDAwMDAwMDQsCiAgICAgICAgV2luZG93
QWN0aXZlID0gMHgwMDAwMDAwOAogICAgfTsKCiAgICB0eXBlZGVmIFFGbGFnczxXaW5kb3dTdGF0
ZT4gV2luZG93U3RhdGVzOwoKICAgIGVudW0gV2lkZ2V0QXR0cmlidXRlIHsKICAgICAgICBXQV9E
aXNhYmxlZCA9IDAsCiAgICAgICAgV0FfVW5kZXJNb3VzZSA9IDEsCiAgICAgICAgV0FfTW91c2VU
cmFja2luZyA9IDIsCiAgICAgICAgV0FfQ29udGVudHNQcm9wYWdhdGVkID0gMywKICAgICAgICBX
QV9PcGFxdWVQYWludEV2ZW50ID0gNCwKICAgICAgICBXQV9Ob0JhY2tncm91bmQgPSBXQV9PcGFx
dWVQYWludEV2ZW50LAogICAgICAgIFdBX1N0YXRpY0NvbnRlbnRzID0gNSwKICAgICAgICBXQV9M
YWlkT3V0ID0gNywKICAgICAgICBXQV9QYWludE9uU2NyZWVuID0gOCwKICAgICAgICBXQV9Ob1N5
c3RlbUJhY2tncm91bmQgPSA5LAogICAgICAgIFdBX1VwZGF0ZXNEaXNhYmxlZCA9IDEwLAogICAg
ICAgIFdBX01hcHBlZCA9IDExLAogICAgICAgIFdBX01hY05vQ2xpY2tUaHJvdWdoID0gMTIsCiAg
ICAgICAgV0FfUGFpbnRPdXRzaWRlUGFpbnRFdmVudCA9IDEzLAogICAgICAgIFdBX0lucHV0TWV0
aG9kRW5hYmxlZCA9IDE0LAogICAgICAgIFdBX1dTdGF0ZV9WaXNpYmxlID0gMTUsCiAgICAgICAg
V0FfV1N0YXRlX0hpZGRlbiA9IDE2LAoKICAgICAgICBXQV9Gb3JjZURpc2FibGVkID0gMzIsCiAg
ICAgICAgV0FfS2V5Q29tcHJlc3Npb24gPSAzMywKICAgICAgICBXQV9QZW5kaW5nTW92ZUV2ZW50
ID0gMzQsCiAgICAgICAgV0FfUGVuZGluZ1Jlc2l6ZUV2ZW50ID0gMzUsCiAgICAgICAgV0FfU2V0
UGFsZXR0ZSA9IDM2LAogICAgICAgIFdBX1NldEZvbnQgPSAzNywKICAgICAgICBXQV9TZXRDdXJz
b3IgPSAzOCwKICAgICAgICBXQV9Ob0NoaWxkRXZlbnRzRnJvbUNoaWxkcmVuID0gMzksCiAgICAg
ICAgV0FfV2luZG93TW9kaWZpZWQgPSA0MSwKICAgICAgICBXQV9SZXNpemVkID0gNDIsCiAgICAg
ICAgV0FfTW92ZWQgPSA0MywKICAgICAgICBXQV9QZW5kaW5nVXBkYXRlID0gNDQsCiAgICAgICAg
V0FfSW52YWxpZFNpemUgPSA0NSwKICAgICAgICBXQV9NYWNCcnVzaGVkTWV0YWwgPSA0NiwKICAg
ICAgICBXQV9NYWNNZXRhbFN0eWxlID0gV0FfTWFjQnJ1c2hlZE1ldGFsLAogICAgICAgIFdBX0N1
c3RvbVdoYXRzVGhpcyA9IDQ3LAogICAgICAgIFdBX0xheW91dE9uRW50aXJlUmVjdCA9IDQ4LAog
ICAgICAgIFdBX091dHNpZGVXU1JhbmdlID0gNDksCiAgICAgICAgV0FfR3JhYmJlZFNob3J0Y3V0
ID0gNTAsCiAgICAgICAgV0FfVHJhbnNwYXJlbnRGb3JNb3VzZUV2ZW50cyA9IDUxLAogICAgICAg
IFdBX1BhaW50VW5jbGlwcGVkID0gNTIsCiAgICAgICAgV0FfU2V0V2luZG93SWNvbiA9IDUzLAog
ICAgICAgIFdBX05vTW91c2VSZXBsYXkgPSA1NCwKICAgICAgICBXQV9EZWxldGVPbkNsb3NlID0g
NTUsCiAgICAgICAgV0FfUmlnaHRUb0xlZnQgPSA1NiwKICAgICAgICBXQV9TZXRMYXlvdXREaXJl
Y3Rpb24gPSA1NywKICAgICAgICBXQV9Ob0NoaWxkRXZlbnRzRm9yUGFyZW50ID0gNTgsCiAgICAg
ICAgV0FfRm9yY2VVcGRhdGVzRGlzYWJsZWQgPSA1OSwKCiAgICAgICAgV0FfV1N0YXRlX0NyZWF0
ZWQgPSA2MCwKICAgICAgICBXQV9XU3RhdGVfQ29tcHJlc3NLZXlzID0gNjEsCiAgICAgICAgV0Ff
V1N0YXRlX0luUGFpbnRFdmVudCA9IDYyLAogICAgICAgIFdBX1dTdGF0ZV9SZXBhcmVudGVkID0g
NjMsCiAgICAgICAgV0FfV1N0YXRlX0NvbmZpZ1BlbmRpbmcgPSA2NCwKICAgICAgICBXQV9XU3Rh
dGVfUG9saXNoZWQgPSA2NiwKICAgICAgICBXQV9XU3RhdGVfRE5EID0gNjcsCiAgICAgICAgV0Ff
V1N0YXRlX093blNpemVQb2xpY3kgPSA2OCwKICAgICAgICBXQV9XU3RhdGVfRXhwbGljaXRTaG93
SGlkZSA9IDY5LAoKICAgICAgICBXQV9TaG93TW9kYWwgPSA3MCwKICAgICAgICBXQV9Nb3VzZU5v
TWFzayA9IDcxLAogICAgICAgIFdBX0dyb3VwTGVhZGVyID0gNzIsCiAgICAgICAgV0FfTm9Nb3Vz
ZVByb3BhZ2F0aW9uID0gNzMsCiAgICAgICAgV0FfSG92ZXIgPSA3NCwKICAgICAgICBXQV9JbnB1
dE1ldGhvZFRyYW5zcGFyZW50ID0gNzUsCiAgICAgICAgV0FfUXVpdE9uQ2xvc2UgPSA3NiwKCiAg
ICAgICAgV0FfS2V5Ym9hcmRGb2N1c0NoYW5nZSA9IDc3LAoKICAgICAgICBXQV9BY2NlcHREcm9w
cyA9IDc4LAogICAgICAgIFdBX0Ryb3BTaXRlUmVnaXN0ZXJlZCA9IDc5LAogICAgICAgIFdBX0Zv
cmNlQWNjZXB0RHJvcHMgPSBXQV9Ecm9wU2l0ZVJlZ2lzdGVyZWQsCgogICAgICAgIFdBX1dpbmRv
d1Byb3BhZ2F0aW9uID0gODAsCgogICAgICAgIFdBX05vWDExRXZlbnRDb21wcmVzc2lvbiA9IDgx
LAogICAgICAgIFdBX1RpbnRlZEJhY2tncm91bmQgPSA4MiwKICAgICAgICBXQV9YMTFPcGVuR0xP
dmVybGF5ID0gODMsCiAgICAgICAgV0FfQWx3YXlzU2hvd1Rvb2xUaXBzID0gODQsCiAgICAgICAg
V0FfTWFjT3BhcXVlU2l6ZUdyaXAgPSA4NSwKICAgICAgICBXQV9TZXRTdHlsZSA9IDg2LAoKICAg
ICAgICBXQV9TZXRMb2NhbGUgPSA4NywKICAgICAgICBXQV9NYWNTaG93Rm9jdXNSZWN0ID0gODgs
CgogICAgICAgIFdBX01hY05vcm1hbFNpemUgPSA4OSwKICAgICAgICBXQV9NYWNTbWFsbFNpemUg
PSA5MCwKICAgICAgICBXQV9NYWNNaW5pU2l6ZSA9IDkxLAoKICAgICAgICBXQV9MYXlvdXRVc2Vz
V2lkZ2V0UmVjdCA9IDkyLAogICAgICAgIFdBX1N0eWxlZEJhY2tncm91bmQgPSA5MywKICAgICAg
ICBXQV9NU1dpbmRvd3NVc2VEaXJlY3QzRCA9IDk0LAogICAgICAgIFdBX0Nhbkhvc3RRTWRpU3Vi
V2luZG93VGl0bGVCYXIgPSA5NSwKCiAgICAgICAgV0FfTWFjQWx3YXlzU2hvd1Rvb2xXaW5kb3cg
PSA5NiwKCiAgICAgICAgV0FfU3R5bGVTaGVldCA9IDk3LAoKICAgICAgICBXQV9TaG93V2l0aG91
dEFjdGl2YXRpbmcgPSA5OCwKCiAgICAgICAgV0FfWDExQnlwYXNzVHJhbnNpZW50Rm9ySGludCA9
IDk5LAoKICAgICAgICBXQV9OYXRpdmVXaW5kb3cgPSAxMDAsCiAgICAgICAgV0FfRG9udENyZWF0
ZU5hdGl2ZUFuY2VzdG9ycyA9IDEwMSwKCiAgICAgICAgV0FfTWFjVmFyaWFibGVTaXplID0gMTAy
LAoKICAgICAgICBXQV9Eb250U2hvd09uU2NyZWVuID0gMTAzLAoKCiAgICAgICAgV0FfWDExTmV0
V21XaW5kb3dUeXBlRGVza3RvcCA9IDEwNCwKICAgICAgICBXQV9YMTFOZXRXbVdpbmRvd1R5cGVE
b2NrID0gMTA1LAogICAgICAgIFdBX1gxMU5ldFdtV2luZG93VHlwZVRvb2xCYXIgPSAxMDYsCiAg
ICAgICAgV0FfWDExTmV0V21XaW5kb3dUeXBlTWVudSA9IDEwNywKICAgICAgICBXQV9YMTFOZXRX
bVdpbmRvd1R5cGVVdGlsaXR5ID0gMTA4LAogICAgICAgIFdBX1gxMU5ldFdtV2luZG93VHlwZVNw
bGFzaCA9IDEwOSwKICAgICAgICBXQV9YMTFOZXRXbVdpbmRvd1R5cGVEaWFsb2cgPSAxMTAsCiAg
ICAgICAgV0FfWDExTmV0V21XaW5kb3dUeXBlRHJvcERvd25NZW51ID0gMTExLAogICAgICAgIFdB
X1gxMU5ldFdtV2luZG93VHlwZVBvcHVwTWVudSA9IDExMiwKICAgICAgICBXQV9YMTFOZXRXbVdp
bmRvd1R5cGVUb29sVGlwID0gMTEzLAogICAgICAgIFdBX1gxMU5ldFdtV2luZG93VHlwZU5vdGlm
aWNhdGlvbiA9IDExNCwKICAgICAgICBXQV9YMTFOZXRXbVdpbmRvd1R5cGVDb21ibyA9IDExNSwK
ICAgICAgICBXQV9YMTFOZXRXbVdpbmRvd1R5cGVETkQgPSAxMTYsCgogICAgICAgIFdBX01hY0Zy
YW1ld29ya1NjYWxlZCA9IDExNywKCiAgICAgICAgV0FfU2V0V2luZG93TW9kYWxpdHkgPSAxMTgs
CiAgICAgICAgV0FfV1N0YXRlX1dpbmRvd09wYWNpdHlTZXQgPSAxMTksCiAgICAgICAgV0FfVHJh
bnNsdWNlbnRCYWNrZ3JvdW5kID0gMTIwLAoKICAgICAgICBXQV9BY2NlcHRUb3VjaEV2ZW50cyA9
IDEyMSwKICAgICAgICBXQV9XU3RhdGVfQWNjZXB0ZWRUb3VjaEJlZ2luRXZlbnQgPSAxMjIsCiAg
ICAgICAgV0FfVG91Y2hQYWRBY2NlcHRTaW5nbGVUb3VjaEV2ZW50cyA9IDEyMywKCiAgICAgICAg
V0FfTWVyZ2VTb2Z0a2V5cyA9IDEyNCwKICAgICAgICBXQV9NZXJnZVNvZnRrZXlzUmVjdXJzaXZl
bHkgPSAxMjUsCgoKCgoKCiAgICAgICAgV0FfTG9ja1BvcnRyYWl0T3JpZW50YXRpb24gPSAxMjgs
CiAgICAgICAgV0FfTG9ja0xhbmRzY2FwZU9yaWVudGF0aW9uID0gMTI5LAogICAgICAgIFdBX0F1
dG9PcmllbnRhdGlvbiA9IDEzMCwKIyA1MjcgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcW5h
bWVzcGFjZS5oIgogICAgICAgIFdBX1gxMURvTm90QWNjZXB0Rm9jdXMgPSAxMzIsCgogICAgICAg
IFdBX1N5bWJpYW5Ob1N5c3RlbVJvdGF0aW9uID0gMTMzLAoKCiAgICAgICAgV0FfQXR0cmlidXRl
Q291bnQKICAgIH07CgogICAgZW51bSBBcHBsaWNhdGlvbkF0dHJpYnV0ZQogICAgewogICAgICAg
IEFBX0ltbWVkaWF0ZVdpZGdldENyZWF0aW9uID0gMCwKICAgICAgICBBQV9NU1dpbmRvd3NVc2VE
aXJlY3QzREJ5RGVmYXVsdCA9IDEsCiAgICAgICAgQUFfRG9udFNob3dJY29uc0luTWVudXMgPSAy
LAogICAgICAgIEFBX05hdGl2ZVdpbmRvd3MgPSAzLAogICAgICAgIEFBX0RvbnRDcmVhdGVOYXRp
dmVXaWRnZXRTaWJsaW5ncyA9IDQsCiAgICAgICAgQUFfTWFjUGx1Z2luQXBwbGljYXRpb24gPSA1
LAogICAgICAgIEFBX0RvbnRVc2VOYXRpdmVNZW51QmFyID0gNiwKICAgICAgICBBQV9NYWNEb250
U3dhcEN0cmxBbmRNZXRhID0gNywKICAgICAgICBBQV9TNjBEb250Q29uc3RydWN0QXBwbGljYXRp
b25QYW5lcyA9IDgsCiAgICAgICAgQUFfUzYwRGlzYWJsZVBhcnRpYWxTY3JlZW5JbnB1dE1vZGUg
PSA5LAoKCiAgICAgICAgQUFfQXR0cmlidXRlQ291bnQKICAgIH07CgoKCgoKICAgIGVudW0gSW1h
Z2VDb252ZXJzaW9uRmxhZyB7CiAgICAgICAgQ29sb3JNb2RlX01hc2sgPSAweDAwMDAwMDAzLAog
ICAgICAgIEF1dG9Db2xvciA9IDB4MDAwMDAwMDAsCiAgICAgICAgQ29sb3JPbmx5ID0gMHgwMDAw
MDAwMywKICAgICAgICBNb25vT25seSA9IDB4MDAwMDAwMDIsCgoKICAgICAgICBBbHBoYURpdGhl
cl9NYXNrID0gMHgwMDAwMDAwYywKICAgICAgICBUaHJlc2hvbGRBbHBoYURpdGhlciA9IDB4MDAw
MDAwMDAsCiAgICAgICAgT3JkZXJlZEFscGhhRGl0aGVyID0gMHgwMDAwMDAwNCwKICAgICAgICBE
aWZmdXNlQWxwaGFEaXRoZXIgPSAweDAwMDAwMDA4LAogICAgICAgIE5vQWxwaGEgPSAweDAwMDAw
MDBjLAoKICAgICAgICBEaXRoZXJfTWFzayA9IDB4MDAwMDAwMzAsCiAgICAgICAgRGlmZnVzZURp
dGhlciA9IDB4MDAwMDAwMDAsCiAgICAgICAgT3JkZXJlZERpdGhlciA9IDB4MDAwMDAwMTAsCiAg
ICAgICAgVGhyZXNob2xkRGl0aGVyID0gMHgwMDAwMDAyMCwKCgogICAgICAgIERpdGhlck1vZGVf
TWFzayA9IDB4MDAwMDAwYzAsCiAgICAgICAgQXV0b0RpdGhlciA9IDB4MDAwMDAwMDAsCiAgICAg
ICAgUHJlZmVyRGl0aGVyID0gMHgwMDAwMDA0MCwKICAgICAgICBBdm9pZERpdGhlciA9IDB4MDAw
MDAwODAsCgogICAgICAgIE5vT3BhcXVlRGV0ZWN0aW9uID0gMHgwMDAwMDEwMCwKICAgICAgICBO
b0Zvcm1hdENvbnZlcnNpb24gPSAweDAwMDAwMjAwCiAgICB9OwogICAgdHlwZWRlZiBRRmxhZ3M8
SW1hZ2VDb252ZXJzaW9uRmxhZz4gSW1hZ2VDb252ZXJzaW9uRmxhZ3M7CgogICAgZW51bSBCR01v
ZGUgewogICAgICAgIFRyYW5zcGFyZW50TW9kZSwKICAgICAgICBPcGFxdWVNb2RlCiAgICB9Owoj
IDYwOSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xbmFtZXNwYWNlLmgiCiAgICBlbnVtIEtl
eSB7CiAgICAgICAgS2V5X0VzY2FwZSA9IDB4MDEwMDAwMDAsCiAgICAgICAgS2V5X1RhYiA9IDB4
MDEwMDAwMDEsCiAgICAgICAgS2V5X0JhY2t0YWIgPSAweDAxMDAwMDAyLAoKCgogICAgICAgIEtl
eV9CYWNrc3BhY2UgPSAweDAxMDAwMDAzLAoKCgogICAgICAgIEtleV9SZXR1cm4gPSAweDAxMDAw
MDA0LAogICAgICAgIEtleV9FbnRlciA9IDB4MDEwMDAwMDUsCiAgICAgICAgS2V5X0luc2VydCA9
IDB4MDEwMDAwMDYsCiAgICAgICAgS2V5X0RlbGV0ZSA9IDB4MDEwMDAwMDcsCiAgICAgICAgS2V5
X1BhdXNlID0gMHgwMTAwMDAwOCwKICAgICAgICBLZXlfUHJpbnQgPSAweDAxMDAwMDA5LAogICAg
ICAgIEtleV9TeXNSZXEgPSAweDAxMDAwMDBhLAogICAgICAgIEtleV9DbGVhciA9IDB4MDEwMDAw
MGIsCiAgICAgICAgS2V5X0hvbWUgPSAweDAxMDAwMDEwLAogICAgICAgIEtleV9FbmQgPSAweDAx
MDAwMDExLAogICAgICAgIEtleV9MZWZ0ID0gMHgwMTAwMDAxMiwKICAgICAgICBLZXlfVXAgPSAw
eDAxMDAwMDEzLAogICAgICAgIEtleV9SaWdodCA9IDB4MDEwMDAwMTQsCiAgICAgICAgS2V5X0Rv
d24gPSAweDAxMDAwMDE1LAogICAgICAgIEtleV9QYWdlVXAgPSAweDAxMDAwMDE2LAoKCgogICAg
ICAgIEtleV9QYWdlRG93biA9IDB4MDEwMDAwMTcsCgoKCiAgICAgICAgS2V5X1NoaWZ0ID0gMHgw
MTAwMDAyMCwKICAgICAgICBLZXlfQ29udHJvbCA9IDB4MDEwMDAwMjEsCiAgICAgICAgS2V5X01l
dGEgPSAweDAxMDAwMDIyLAogICAgICAgIEtleV9BbHQgPSAweDAxMDAwMDIzLAogICAgICAgIEtl
eV9DYXBzTG9jayA9IDB4MDEwMDAwMjQsCiAgICAgICAgS2V5X051bUxvY2sgPSAweDAxMDAwMDI1
LAogICAgICAgIEtleV9TY3JvbGxMb2NrID0gMHgwMTAwMDAyNiwKICAgICAgICBLZXlfRjEgPSAw
eDAxMDAwMDMwLAogICAgICAgIEtleV9GMiA9IDB4MDEwMDAwMzEsCiAgICAgICAgS2V5X0YzID0g
MHgwMTAwMDAzMiwKICAgICAgICBLZXlfRjQgPSAweDAxMDAwMDMzLAogICAgICAgIEtleV9GNSA9
IDB4MDEwMDAwMzQsCiAgICAgICAgS2V5X0Y2ID0gMHgwMTAwMDAzNSwKICAgICAgICBLZXlfRjcg
PSAweDAxMDAwMDM2LAogICAgICAgIEtleV9GOCA9IDB4MDEwMDAwMzcsCiAgICAgICAgS2V5X0Y5
ID0gMHgwMTAwMDAzOCwKICAgICAgICBLZXlfRjEwID0gMHgwMTAwMDAzOSwKICAgICAgICBLZXlf
RjExID0gMHgwMTAwMDAzYSwKICAgICAgICBLZXlfRjEyID0gMHgwMTAwMDAzYiwKICAgICAgICBL
ZXlfRjEzID0gMHgwMTAwMDAzYywKICAgICAgICBLZXlfRjE0ID0gMHgwMTAwMDAzZCwKICAgICAg
ICBLZXlfRjE1ID0gMHgwMTAwMDAzZSwKICAgICAgICBLZXlfRjE2ID0gMHgwMTAwMDAzZiwKICAg
ICAgICBLZXlfRjE3ID0gMHgwMTAwMDA0MCwKICAgICAgICBLZXlfRjE4ID0gMHgwMTAwMDA0MSwK
ICAgICAgICBLZXlfRjE5ID0gMHgwMTAwMDA0MiwKICAgICAgICBLZXlfRjIwID0gMHgwMTAwMDA0
MywKICAgICAgICBLZXlfRjIxID0gMHgwMTAwMDA0NCwKICAgICAgICBLZXlfRjIyID0gMHgwMTAw
MDA0NSwKICAgICAgICBLZXlfRjIzID0gMHgwMTAwMDA0NiwKICAgICAgICBLZXlfRjI0ID0gMHgw
MTAwMDA0NywKICAgICAgICBLZXlfRjI1ID0gMHgwMTAwMDA0OCwKICAgICAgICBLZXlfRjI2ID0g
MHgwMTAwMDA0OSwKICAgICAgICBLZXlfRjI3ID0gMHgwMTAwMDA0YSwKICAgICAgICBLZXlfRjI4
ID0gMHgwMTAwMDA0YiwKICAgICAgICBLZXlfRjI5ID0gMHgwMTAwMDA0YywKICAgICAgICBLZXlf
RjMwID0gMHgwMTAwMDA0ZCwKICAgICAgICBLZXlfRjMxID0gMHgwMTAwMDA0ZSwKICAgICAgICBL
ZXlfRjMyID0gMHgwMTAwMDA0ZiwKICAgICAgICBLZXlfRjMzID0gMHgwMTAwMDA1MCwKICAgICAg
ICBLZXlfRjM0ID0gMHgwMTAwMDA1MSwKICAgICAgICBLZXlfRjM1ID0gMHgwMTAwMDA1MiwKICAg
ICAgICBLZXlfU3VwZXJfTCA9IDB4MDEwMDAwNTMsCiAgICAgICAgS2V5X1N1cGVyX1IgPSAweDAx
MDAwMDU0LAogICAgICAgIEtleV9NZW51ID0gMHgwMTAwMDA1NSwKICAgICAgICBLZXlfSHlwZXJf
TCA9IDB4MDEwMDAwNTYsCiAgICAgICAgS2V5X0h5cGVyX1IgPSAweDAxMDAwMDU3LAogICAgICAg
IEtleV9IZWxwID0gMHgwMTAwMDA1OCwKICAgICAgICBLZXlfRGlyZWN0aW9uX0wgPSAweDAxMDAw
MDU5LAogICAgICAgIEtleV9EaXJlY3Rpb25fUiA9IDB4MDEwMDAwNjAsCiAgICAgICAgS2V5X1Nw
YWNlID0gMHgyMCwKICAgICAgICBLZXlfQW55ID0gS2V5X1NwYWNlLAogICAgICAgIEtleV9FeGNs
YW0gPSAweDIxLAogICAgICAgIEtleV9RdW90ZURibCA9IDB4MjIsCiAgICAgICAgS2V5X051bWJl
clNpZ24gPSAweDIzLAogICAgICAgIEtleV9Eb2xsYXIgPSAweDI0LAogICAgICAgIEtleV9QZXJj
ZW50ID0gMHgyNSwKICAgICAgICBLZXlfQW1wZXJzYW5kID0gMHgyNiwKICAgICAgICBLZXlfQXBv
c3Ryb3BoZSA9IDB4MjcsCiAgICAgICAgS2V5X1BhcmVuTGVmdCA9IDB4MjgsCiAgICAgICAgS2V5
X1BhcmVuUmlnaHQgPSAweDI5LAogICAgICAgIEtleV9Bc3RlcmlzayA9IDB4MmEsCiAgICAgICAg
S2V5X1BsdXMgPSAweDJiLAogICAgICAgIEtleV9Db21tYSA9IDB4MmMsCiAgICAgICAgS2V5X01p
bnVzID0gMHgyZCwKICAgICAgICBLZXlfUGVyaW9kID0gMHgyZSwKICAgICAgICBLZXlfU2xhc2gg
PSAweDJmLAogICAgICAgIEtleV8wID0gMHgzMCwKICAgICAgICBLZXlfMSA9IDB4MzEsCiAgICAg
ICAgS2V5XzIgPSAweDMyLAogICAgICAgIEtleV8zID0gMHgzMywKICAgICAgICBLZXlfNCA9IDB4
MzQsCiAgICAgICAgS2V5XzUgPSAweDM1LAogICAgICAgIEtleV82ID0gMHgzNiwKICAgICAgICBL
ZXlfNyA9IDB4MzcsCiAgICAgICAgS2V5XzggPSAweDM4LAogICAgICAgIEtleV85ID0gMHgzOSwK
ICAgICAgICBLZXlfQ29sb24gPSAweDNhLAogICAgICAgIEtleV9TZW1pY29sb24gPSAweDNiLAog
ICAgICAgIEtleV9MZXNzID0gMHgzYywKICAgICAgICBLZXlfRXF1YWwgPSAweDNkLAogICAgICAg
IEtleV9HcmVhdGVyID0gMHgzZSwKICAgICAgICBLZXlfUXVlc3Rpb24gPSAweDNmLAogICAgICAg
IEtleV9BdCA9IDB4NDAsCiAgICAgICAgS2V5X0EgPSAweDQxLAogICAgICAgIEtleV9CID0gMHg0
MiwKICAgICAgICBLZXlfQyA9IDB4NDMsCiAgICAgICAgS2V5X0QgPSAweDQ0LAogICAgICAgIEtl
eV9FID0gMHg0NSwKICAgICAgICBLZXlfRiA9IDB4NDYsCiAgICAgICAgS2V5X0cgPSAweDQ3LAog
ICAgICAgIEtleV9IID0gMHg0OCwKICAgICAgICBLZXlfSSA9IDB4NDksCiAgICAgICAgS2V5X0og
PSAweDRhLAogICAgICAgIEtleV9LID0gMHg0YiwKICAgICAgICBLZXlfTCA9IDB4NGMsCiAgICAg
ICAgS2V5X00gPSAweDRkLAogICAgICAgIEtleV9OID0gMHg0ZSwKICAgICAgICBLZXlfTyA9IDB4
NGYsCiAgICAgICAgS2V5X1AgPSAweDUwLAogICAgICAgIEtleV9RID0gMHg1MSwKICAgICAgICBL
ZXlfUiA9IDB4NTIsCiAgICAgICAgS2V5X1MgPSAweDUzLAogICAgICAgIEtleV9UID0gMHg1NCwK
ICAgICAgICBLZXlfVSA9IDB4NTUsCiAgICAgICAgS2V5X1YgPSAweDU2LAogICAgICAgIEtleV9X
ID0gMHg1NywKICAgICAgICBLZXlfWCA9IDB4NTgsCiAgICAgICAgS2V5X1kgPSAweDU5LAogICAg
ICAgIEtleV9aID0gMHg1YSwKICAgICAgICBLZXlfQnJhY2tldExlZnQgPSAweDViLAogICAgICAg
IEtleV9CYWNrc2xhc2ggPSAweDVjLAogICAgICAgIEtleV9CcmFja2V0UmlnaHQgPSAweDVkLAog
ICAgICAgIEtleV9Bc2NpaUNpcmN1bSA9IDB4NWUsCiAgICAgICAgS2V5X1VuZGVyc2NvcmUgPSAw
eDVmLAogICAgICAgIEtleV9RdW90ZUxlZnQgPSAweDYwLAogICAgICAgIEtleV9CcmFjZUxlZnQg
PSAweDdiLAogICAgICAgIEtleV9CYXIgPSAweDdjLAogICAgICAgIEtleV9CcmFjZVJpZ2h0ID0g
MHg3ZCwKICAgICAgICBLZXlfQXNjaWlUaWxkZSA9IDB4N2UsCgogICAgICAgIEtleV9ub2JyZWFr
c3BhY2UgPSAweDBhMCwKICAgICAgICBLZXlfZXhjbGFtZG93biA9IDB4MGExLAogICAgICAgIEtl
eV9jZW50ID0gMHgwYTIsCiAgICAgICAgS2V5X3N0ZXJsaW5nID0gMHgwYTMsCiAgICAgICAgS2V5
X2N1cnJlbmN5ID0gMHgwYTQsCiAgICAgICAgS2V5X3llbiA9IDB4MGE1LAogICAgICAgIEtleV9i
cm9rZW5iYXIgPSAweDBhNiwKICAgICAgICBLZXlfc2VjdGlvbiA9IDB4MGE3LAogICAgICAgIEtl
eV9kaWFlcmVzaXMgPSAweDBhOCwKICAgICAgICBLZXlfY29weXJpZ2h0ID0gMHgwYTksCiAgICAg
ICAgS2V5X29yZGZlbWluaW5lID0gMHgwYWEsCiAgICAgICAgS2V5X2d1aWxsZW1vdGxlZnQgPSAw
eDBhYiwKICAgICAgICBLZXlfbm90c2lnbiA9IDB4MGFjLAogICAgICAgIEtleV9oeXBoZW4gPSAw
eDBhZCwKICAgICAgICBLZXlfcmVnaXN0ZXJlZCA9IDB4MGFlLAogICAgICAgIEtleV9tYWNyb24g
PSAweDBhZiwKICAgICAgICBLZXlfZGVncmVlID0gMHgwYjAsCiAgICAgICAgS2V5X3BsdXNtaW51
cyA9IDB4MGIxLAogICAgICAgIEtleV90d29zdXBlcmlvciA9IDB4MGIyLAogICAgICAgIEtleV90
aHJlZXN1cGVyaW9yID0gMHgwYjMsCiAgICAgICAgS2V5X2FjdXRlID0gMHgwYjQsCiAgICAgICAg
S2V5X211ID0gMHgwYjUsCiAgICAgICAgS2V5X3BhcmFncmFwaCA9IDB4MGI2LAogICAgICAgIEtl
eV9wZXJpb2RjZW50ZXJlZCA9IDB4MGI3LAogICAgICAgIEtleV9jZWRpbGxhID0gMHgwYjgsCiAg
ICAgICAgS2V5X29uZXN1cGVyaW9yID0gMHgwYjksCiAgICAgICAgS2V5X21hc2N1bGluZSA9IDB4
MGJhLAogICAgICAgIEtleV9ndWlsbGVtb3RyaWdodCA9IDB4MGJiLAogICAgICAgIEtleV9vbmVx
dWFydGVyID0gMHgwYmMsCiAgICAgICAgS2V5X29uZWhhbGYgPSAweDBiZCwKICAgICAgICBLZXlf
dGhyZWVxdWFydGVycyA9IDB4MGJlLAogICAgICAgIEtleV9xdWVzdGlvbmRvd24gPSAweDBiZiwK
ICAgICAgICBLZXlfQWdyYXZlID0gMHgwYzAsCiAgICAgICAgS2V5X0FhY3V0ZSA9IDB4MGMxLAog
ICAgICAgIEtleV9BY2lyY3VtZmxleCA9IDB4MGMyLAogICAgICAgIEtleV9BdGlsZGUgPSAweDBj
MywKICAgICAgICBLZXlfQWRpYWVyZXNpcyA9IDB4MGM0LAogICAgICAgIEtleV9BcmluZyA9IDB4
MGM1LAogICAgICAgIEtleV9BRSA9IDB4MGM2LAogICAgICAgIEtleV9DY2VkaWxsYSA9IDB4MGM3
LAogICAgICAgIEtleV9FZ3JhdmUgPSAweDBjOCwKICAgICAgICBLZXlfRWFjdXRlID0gMHgwYzks
CiAgICAgICAgS2V5X0VjaXJjdW1mbGV4ID0gMHgwY2EsCiAgICAgICAgS2V5X0VkaWFlcmVzaXMg
PSAweDBjYiwKICAgICAgICBLZXlfSWdyYXZlID0gMHgwY2MsCiAgICAgICAgS2V5X0lhY3V0ZSA9
IDB4MGNkLAogICAgICAgIEtleV9JY2lyY3VtZmxleCA9IDB4MGNlLAogICAgICAgIEtleV9JZGlh
ZXJlc2lzID0gMHgwY2YsCiAgICAgICAgS2V5X0VUSCA9IDB4MGQwLAogICAgICAgIEtleV9OdGls
ZGUgPSAweDBkMSwKICAgICAgICBLZXlfT2dyYXZlID0gMHgwZDIsCiAgICAgICAgS2V5X09hY3V0
ZSA9IDB4MGQzLAogICAgICAgIEtleV9PY2lyY3VtZmxleCA9IDB4MGQ0LAogICAgICAgIEtleV9P
dGlsZGUgPSAweDBkNSwKICAgICAgICBLZXlfT2RpYWVyZXNpcyA9IDB4MGQ2LAogICAgICAgIEtl
eV9tdWx0aXBseSA9IDB4MGQ3LAogICAgICAgIEtleV9Pb2JsaXF1ZSA9IDB4MGQ4LAogICAgICAg
IEtleV9VZ3JhdmUgPSAweDBkOSwKICAgICAgICBLZXlfVWFjdXRlID0gMHgwZGEsCiAgICAgICAg
S2V5X1VjaXJjdW1mbGV4ID0gMHgwZGIsCiAgICAgICAgS2V5X1VkaWFlcmVzaXMgPSAweDBkYywK
ICAgICAgICBLZXlfWWFjdXRlID0gMHgwZGQsCiAgICAgICAgS2V5X1RIT1JOID0gMHgwZGUsCiAg
ICAgICAgS2V5X3NzaGFycCA9IDB4MGRmLAojIDg1MiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29y
ZS9xbmFtZXNwYWNlLmgiCiAgICAgICAgS2V5X2RpdmlzaW9uID0gMHgwZjcsCiMgODYyICIvb3B0
L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FuYW1lc3BhY2UuaCIKICAgICAgICBLZXlfeWRpYWVyZXNp
cyA9IDB4MGZmLAoKCgoKCgogICAgICAgIEtleV9BbHRHciA9IDB4MDEwMDExMDMsCiAgICAgICAg
S2V5X011bHRpX2tleSA9IDB4MDEwMDExMjAsCiAgICAgICAgS2V5X0NvZGVpbnB1dCA9IDB4MDEw
MDExMzcsCiAgICAgICAgS2V5X1NpbmdsZUNhbmRpZGF0ZSA9IDB4MDEwMDExM2MsCiAgICAgICAg
S2V5X011bHRpcGxlQ2FuZGlkYXRlID0gMHgwMTAwMTEzZCwKICAgICAgICBLZXlfUHJldmlvdXND
YW5kaWRhdGUgPSAweDAxMDAxMTNlLAoKCiAgICAgICAgS2V5X01vZGVfc3dpdGNoID0gMHgwMTAw
MTE3ZSwKCgoKICAgICAgICBLZXlfS2FuamkgPSAweDAxMDAxMTIxLAogICAgICAgIEtleV9NdWhl
bmthbiA9IDB4MDEwMDExMjIsCgogICAgICAgIEtleV9IZW5rYW4gPSAweDAxMDAxMTIzLAogICAg
ICAgIEtleV9Sb21hamkgPSAweDAxMDAxMTI0LAogICAgICAgIEtleV9IaXJhZ2FuYSA9IDB4MDEw
MDExMjUsCiAgICAgICAgS2V5X0thdGFrYW5hID0gMHgwMTAwMTEyNiwKICAgICAgICBLZXlfSGly
YWdhbmFfS2F0YWthbmEgPSAweDAxMDAxMTI3LAogICAgICAgIEtleV9aZW5rYWt1ID0gMHgwMTAw
MTEyOCwKICAgICAgICBLZXlfSGFua2FrdSA9IDB4MDEwMDExMjksCiAgICAgICAgS2V5X1plbmth
a3VfSGFua2FrdSA9IDB4MDEwMDExMmEsCiAgICAgICAgS2V5X1RvdXJva3UgPSAweDAxMDAxMTJi
LAogICAgICAgIEtleV9NYXNzeW8gPSAweDAxMDAxMTJjLAogICAgICAgIEtleV9LYW5hX0xvY2sg
PSAweDAxMDAxMTJkLAogICAgICAgIEtleV9LYW5hX1NoaWZ0ID0gMHgwMTAwMTEyZSwKICAgICAg
ICBLZXlfRWlzdV9TaGlmdCA9IDB4MDEwMDExMmYsCiAgICAgICAgS2V5X0Vpc3VfdG9nZ2xlID0g
MHgwMTAwMTEzMCwKIyA5MDcgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcW5hbWVzcGFjZS5o
IgogICAgICAgIEtleV9IYW5ndWwgPSAweDAxMDAxMTMxLAogICAgICAgIEtleV9IYW5ndWxfU3Rh
cnQgPSAweDAxMDAxMTMyLAogICAgICAgIEtleV9IYW5ndWxfRW5kID0gMHgwMTAwMTEzMywKICAg
ICAgICBLZXlfSGFuZ3VsX0hhbmphID0gMHgwMTAwMTEzNCwKICAgICAgICBLZXlfSGFuZ3VsX0ph
bW8gPSAweDAxMDAxMTM1LAogICAgICAgIEtleV9IYW5ndWxfUm9tYWphID0gMHgwMTAwMTEzNiwK
CiAgICAgICAgS2V5X0hhbmd1bF9KZW9uamEgPSAweDAxMDAxMTM4LAogICAgICAgIEtleV9IYW5n
dWxfQmFuamEgPSAweDAxMDAxMTM5LAogICAgICAgIEtleV9IYW5ndWxfUHJlSGFuamEgPSAweDAx
MDAxMTNhLAogICAgICAgIEtleV9IYW5ndWxfUG9zdEhhbmphID0gMHgwMTAwMTEzYiwKCgoKICAg
ICAgICBLZXlfSGFuZ3VsX1NwZWNpYWwgPSAweDAxMDAxMTNmLAoKCgogICAgICAgIEtleV9EZWFk
X0dyYXZlID0gMHgwMTAwMTI1MCwKICAgICAgICBLZXlfRGVhZF9BY3V0ZSA9IDB4MDEwMDEyNTEs
CiAgICAgICAgS2V5X0RlYWRfQ2lyY3VtZmxleCA9IDB4MDEwMDEyNTIsCiAgICAgICAgS2V5X0Rl
YWRfVGlsZGUgPSAweDAxMDAxMjUzLAogICAgICAgIEtleV9EZWFkX01hY3JvbiA9IDB4MDEwMDEy
NTQsCiAgICAgICAgS2V5X0RlYWRfQnJldmUgPSAweDAxMDAxMjU1LAogICAgICAgIEtleV9EZWFk
X0Fib3ZlZG90ID0gMHgwMTAwMTI1NiwKICAgICAgICBLZXlfRGVhZF9EaWFlcmVzaXMgPSAweDAx
MDAxMjU3LAogICAgICAgIEtleV9EZWFkX0Fib3ZlcmluZyA9IDB4MDEwMDEyNTgsCiAgICAgICAg
S2V5X0RlYWRfRG91YmxlYWN1dGUgPSAweDAxMDAxMjU5LAogICAgICAgIEtleV9EZWFkX0Nhcm9u
ID0gMHgwMTAwMTI1YSwKICAgICAgICBLZXlfRGVhZF9DZWRpbGxhID0gMHgwMTAwMTI1YiwKICAg
ICAgICBLZXlfRGVhZF9PZ29uZWsgPSAweDAxMDAxMjVjLAogICAgICAgIEtleV9EZWFkX0lvdGEg
PSAweDAxMDAxMjVkLAogICAgICAgIEtleV9EZWFkX1ZvaWNlZF9Tb3VuZCA9IDB4MDEwMDEyNWUs
CiAgICAgICAgS2V5X0RlYWRfU2VtaXZvaWNlZF9Tb3VuZCA9IDB4MDEwMDEyNWYsCiAgICAgICAg
S2V5X0RlYWRfQmVsb3dkb3QgPSAweDAxMDAxMjYwLAogICAgICAgIEtleV9EZWFkX0hvb2sgPSAw
eDAxMDAxMjYxLAogICAgICAgIEtleV9EZWFkX0hvcm4gPSAweDAxMDAxMjYyLAoKCiAgICAgICAg
S2V5X0JhY2sgPSAweDAxMDAwMDYxLAogICAgICAgIEtleV9Gb3J3YXJkID0gMHgwMTAwMDA2MiwK
ICAgICAgICBLZXlfU3RvcCA9IDB4MDEwMDAwNjMsCiAgICAgICAgS2V5X1JlZnJlc2ggPSAweDAx
MDAwMDY0LAogICAgICAgIEtleV9Wb2x1bWVEb3duID0gMHgwMTAwMDA3MCwKICAgICAgICBLZXlf
Vm9sdW1lTXV0ZSA9IDB4MDEwMDAwNzEsCiAgICAgICAgS2V5X1ZvbHVtZVVwID0gMHgwMTAwMDA3
MiwKICAgICAgICBLZXlfQmFzc0Jvb3N0ID0gMHgwMTAwMDA3MywKICAgICAgICBLZXlfQmFzc1Vw
ID0gMHgwMTAwMDA3NCwKICAgICAgICBLZXlfQmFzc0Rvd24gPSAweDAxMDAwMDc1LAogICAgICAg
IEtleV9UcmVibGVVcCA9IDB4MDEwMDAwNzYsCiAgICAgICAgS2V5X1RyZWJsZURvd24gPSAweDAx
MDAwMDc3LAogICAgICAgIEtleV9NZWRpYVBsYXkgPSAweDAxMDAwMDgwLAogICAgICAgIEtleV9N
ZWRpYVN0b3AgPSAweDAxMDAwMDgxLAogICAgICAgIEtleV9NZWRpYVByZXZpb3VzID0gMHgwMTAw
MDA4MiwKCgoKICAgICAgICBLZXlfTWVkaWFOZXh0ID0gMHgwMTAwMDA4MywKICAgICAgICBLZXlf
TWVkaWFSZWNvcmQgPSAweDAxMDAwMDg0LAogICAgICAgIEtleV9NZWRpYVBhdXNlID0gMHgxMDAw
MDg1LAogICAgICAgIEtleV9NZWRpYVRvZ2dsZVBsYXlQYXVzZSA9IDB4MTAwMDA4NiwKICAgICAg
ICBLZXlfSG9tZVBhZ2UgPSAweDAxMDAwMDkwLAogICAgICAgIEtleV9GYXZvcml0ZXMgPSAweDAx
MDAwMDkxLAogICAgICAgIEtleV9TZWFyY2ggPSAweDAxMDAwMDkyLAogICAgICAgIEtleV9TdGFu
ZGJ5ID0gMHgwMTAwMDA5MywKICAgICAgICBLZXlfT3BlblVybCA9IDB4MDEwMDAwOTQsCiAgICAg
ICAgS2V5X0xhdW5jaE1haWwgPSAweDAxMDAwMGEwLAogICAgICAgIEtleV9MYXVuY2hNZWRpYSA9
IDB4MDEwMDAwYTEsCiAgICAgICAgS2V5X0xhdW5jaDAgPSAweDAxMDAwMGEyLAogICAgICAgIEtl
eV9MYXVuY2gxID0gMHgwMTAwMDBhMywKICAgICAgICBLZXlfTGF1bmNoMiA9IDB4MDEwMDAwYTQs
CiAgICAgICAgS2V5X0xhdW5jaDMgPSAweDAxMDAwMGE1LAogICAgICAgIEtleV9MYXVuY2g0ID0g
MHgwMTAwMDBhNiwKICAgICAgICBLZXlfTGF1bmNoNSA9IDB4MDEwMDAwYTcsCiAgICAgICAgS2V5
X0xhdW5jaDYgPSAweDAxMDAwMGE4LAogICAgICAgIEtleV9MYXVuY2g3ID0gMHgwMTAwMDBhOSwK
ICAgICAgICBLZXlfTGF1bmNoOCA9IDB4MDEwMDAwYWEsCiAgICAgICAgS2V5X0xhdW5jaDkgPSAw
eDAxMDAwMGFiLAogICAgICAgIEtleV9MYXVuY2hBID0gMHgwMTAwMDBhYywKICAgICAgICBLZXlf
TGF1bmNoQiA9IDB4MDEwMDAwYWQsCiAgICAgICAgS2V5X0xhdW5jaEMgPSAweDAxMDAwMGFlLAog
ICAgICAgIEtleV9MYXVuY2hEID0gMHgwMTAwMDBhZiwKICAgICAgICBLZXlfTGF1bmNoRSA9IDB4
MDEwMDAwYjAsCiAgICAgICAgS2V5X0xhdW5jaEYgPSAweDAxMDAwMGIxLAogICAgICAgIEtleV9N
b25CcmlnaHRuZXNzVXAgPSAweDAxMDAwMGIyLAogICAgICAgIEtleV9Nb25CcmlnaHRuZXNzRG93
biA9IDB4MDEwMDAwYjMsCiAgICAgICAgS2V5X0tleWJvYXJkTGlnaHRPbk9mZiA9IDB4MDEwMDAw
YjQsCiAgICAgICAgS2V5X0tleWJvYXJkQnJpZ2h0bmVzc1VwID0gMHgwMTAwMDBiNSwKICAgICAg
ICBLZXlfS2V5Ym9hcmRCcmlnaHRuZXNzRG93biA9IDB4MDEwMDAwYjYsCiAgICAgICAgS2V5X1Bv
d2VyT2ZmID0gMHgwMTAwMDBiNywKICAgICAgICBLZXlfV2FrZVVwID0gMHgwMTAwMDBiOCwKICAg
ICAgICBLZXlfRWplY3QgPSAweDAxMDAwMGI5LAogICAgICAgIEtleV9TY3JlZW5TYXZlciA9IDB4
MDEwMDAwYmEsCiAgICAgICAgS2V5X1dXVyA9IDB4MDEwMDAwYmIsCiAgICAgICAgS2V5X01lbW8g
PSAweDAxMDAwMGJjLAogICAgICAgIEtleV9MaWdodEJ1bGIgPSAweDAxMDAwMGJkLAogICAgICAg
IEtleV9TaG9wID0gMHgwMTAwMDBiZSwKICAgICAgICBLZXlfSGlzdG9yeSA9IDB4MDEwMDAwYmYs
CiAgICAgICAgS2V5X0FkZEZhdm9yaXRlID0gMHgwMTAwMDBjMCwKICAgICAgICBLZXlfSG90TGlu
a3MgPSAweDAxMDAwMGMxLAogICAgICAgIEtleV9CcmlnaHRuZXNzQWRqdXN0ID0gMHgwMTAwMDBj
MiwKICAgICAgICBLZXlfRmluYW5jZSA9IDB4MDEwMDAwYzMsCiAgICAgICAgS2V5X0NvbW11bml0
eSA9IDB4MDEwMDAwYzQsCiAgICAgICAgS2V5X0F1ZGlvUmV3aW5kID0gMHgwMTAwMDBjNSwKICAg
ICAgICBLZXlfQmFja0ZvcndhcmQgPSAweDAxMDAwMGM2LAogICAgICAgIEtleV9BcHBsaWNhdGlv
bkxlZnQgPSAweDAxMDAwMGM3LAogICAgICAgIEtleV9BcHBsaWNhdGlvblJpZ2h0ID0gMHgwMTAw
MDBjOCwKICAgICAgICBLZXlfQm9vayA9IDB4MDEwMDAwYzksCiAgICAgICAgS2V5X0NEID0gMHgw
MTAwMDBjYSwKICAgICAgICBLZXlfQ2FsY3VsYXRvciA9IDB4MDEwMDAwY2IsCiAgICAgICAgS2V5
X1RvRG9MaXN0ID0gMHgwMTAwMDBjYywKICAgICAgICBLZXlfQ2xlYXJHcmFiID0gMHgwMTAwMDBj
ZCwKICAgICAgICBLZXlfQ2xvc2UgPSAweDAxMDAwMGNlLAogICAgICAgIEtleV9Db3B5ID0gMHgw
MTAwMDBjZiwKICAgICAgICBLZXlfQ3V0ID0gMHgwMTAwMDBkMCwKICAgICAgICBLZXlfRGlzcGxh
eSA9IDB4MDEwMDAwZDEsCiAgICAgICAgS2V5X0RPUyA9IDB4MDEwMDAwZDIsCiAgICAgICAgS2V5
X0RvY3VtZW50cyA9IDB4MDEwMDAwZDMsCiAgICAgICAgS2V5X0V4Y2VsID0gMHgwMTAwMDBkNCwK
ICAgICAgICBLZXlfRXhwbG9yZXIgPSAweDAxMDAwMGQ1LAogICAgICAgIEtleV9HYW1lID0gMHgw
MTAwMDBkNiwKICAgICAgICBLZXlfR28gPSAweDAxMDAwMGQ3LAogICAgICAgIEtleV9pVG91Y2gg
PSAweDAxMDAwMGQ4LAogICAgICAgIEtleV9Mb2dPZmYgPSAweDAxMDAwMGQ5LAogICAgICAgIEtl
eV9NYXJrZXQgPSAweDAxMDAwMGRhLAogICAgICAgIEtleV9NZWV0aW5nID0gMHgwMTAwMDBkYiwK
ICAgICAgICBLZXlfTWVudUtCID0gMHgwMTAwMDBkYywKICAgICAgICBLZXlfTWVudVBCID0gMHgw
MTAwMDBkZCwKICAgICAgICBLZXlfTXlTaXRlcyA9IDB4MDEwMDAwZGUsCiAgICAgICAgS2V5X05l
d3MgPSAweDAxMDAwMGRmLAogICAgICAgIEtleV9PZmZpY2VIb21lID0gMHgwMTAwMDBlMCwKICAg
ICAgICBLZXlfT3B0aW9uID0gMHgwMTAwMDBlMSwKICAgICAgICBLZXlfUGFzdGUgPSAweDAxMDAw
MGUyLAogICAgICAgIEtleV9QaG9uZSA9IDB4MDEwMDAwZTMsCiAgICAgICAgS2V5X0NhbGVuZGFy
ID0gMHgwMTAwMDBlNCwKICAgICAgICBLZXlfUmVwbHkgPSAweDAxMDAwMGU1LAogICAgICAgIEtl
eV9SZWxvYWQgPSAweDAxMDAwMGU2LAogICAgICAgIEtleV9Sb3RhdGVXaW5kb3dzID0gMHgwMTAw
MDBlNywKICAgICAgICBLZXlfUm90YXRpb25QQiA9IDB4MDEwMDAwZTgsCiAgICAgICAgS2V5X1Jv
dGF0aW9uS0IgPSAweDAxMDAwMGU5LAogICAgICAgIEtleV9TYXZlID0gMHgwMTAwMDBlYSwKICAg
ICAgICBLZXlfU2VuZCA9IDB4MDEwMDAwZWIsCiAgICAgICAgS2V5X1NwZWxsID0gMHgwMTAwMDBl
YywKICAgICAgICBLZXlfU3BsaXRTY3JlZW4gPSAweDAxMDAwMGVkLAogICAgICAgIEtleV9TdXBw
b3J0ID0gMHgwMTAwMDBlZSwKICAgICAgICBLZXlfVGFza1BhbmUgPSAweDAxMDAwMGVmLAogICAg
ICAgIEtleV9UZXJtaW5hbCA9IDB4MDEwMDAwZjAsCiAgICAgICAgS2V5X1Rvb2xzID0gMHgwMTAw
MDBmMSwKICAgICAgICBLZXlfVHJhdmVsID0gMHgwMTAwMDBmMiwKICAgICAgICBLZXlfVmlkZW8g
PSAweDAxMDAwMGYzLAogICAgICAgIEtleV9Xb3JkID0gMHgwMTAwMDBmNCwKICAgICAgICBLZXlf
WGZlciA9IDB4MDEwMDAwZjUsCiAgICAgICAgS2V5X1pvb21JbiA9IDB4MDEwMDAwZjYsCiAgICAg
ICAgS2V5X1pvb21PdXQgPSAweDAxMDAwMGY3LAogICAgICAgIEtleV9Bd2F5ID0gMHgwMTAwMDBm
OCwKICAgICAgICBLZXlfTWVzc2VuZ2VyID0gMHgwMTAwMDBmOSwKICAgICAgICBLZXlfV2ViQ2Ft
ID0gMHgwMTAwMDBmYSwKICAgICAgICBLZXlfTWFpbEZvcndhcmQgPSAweDAxMDAwMGZiLAogICAg
ICAgIEtleV9QaWN0dXJlcyA9IDB4MDEwMDAwZmMsCiAgICAgICAgS2V5X011c2ljID0gMHgwMTAw
MDBmZCwKICAgICAgICBLZXlfQmF0dGVyeSA9IDB4MDEwMDAwZmUsCiAgICAgICAgS2V5X0JsdWV0
b290aCA9IDB4MDEwMDAwZmYsCiAgICAgICAgS2V5X1dMQU4gPSAweDAxMDAwMTAwLAogICAgICAg
IEtleV9VV0IgPSAweDAxMDAwMTAxLAogICAgICAgIEtleV9BdWRpb0ZvcndhcmQgPSAweDAxMDAw
MTAyLAogICAgICAgIEtleV9BdWRpb1JlcGVhdCA9IDB4MDEwMDAxMDMsCiAgICAgICAgS2V5X0F1
ZGlvUmFuZG9tUGxheSA9IDB4MDEwMDAxMDQsCiAgICAgICAgS2V5X1N1YnRpdGxlID0gMHgwMTAw
MDEwNSwKICAgICAgICBLZXlfQXVkaW9DeWNsZVRyYWNrID0gMHgwMTAwMDEwNiwKICAgICAgICBL
ZXlfVGltZSA9IDB4MDEwMDAxMDcsCiAgICAgICAgS2V5X0hpYmVybmF0ZSA9IDB4MDEwMDAxMDgs
CiAgICAgICAgS2V5X1ZpZXcgPSAweDAxMDAwMTA5LAogICAgICAgIEtleV9Ub3BNZW51ID0gMHgw
MTAwMDEwYSwKICAgICAgICBLZXlfUG93ZXJEb3duID0gMHgwMTAwMDEwYiwKICAgICAgICBLZXlf
U3VzcGVuZCA9IDB4MDEwMDAxMGMsCiAgICAgICAgS2V5X0NvbnRyYXN0QWRqdXN0ID0gMHgwMTAw
MDEwZCwKCiAgICAgICAgS2V5X0xhdW5jaEcgPSAweDAxMDAwMTBlLAogICAgICAgIEtleV9MYXVu
Y2hIID0gMHgwMTAwMDEwZiwKCiAgICAgICAgS2V5X01lZGlhTGFzdCA9IDB4MDEwMGZmZmYsCgoK
ICAgICAgICBLZXlfU2VsZWN0ID0gMHgwMTAxMDAwMCwKICAgICAgICBLZXlfWWVzID0gMHgwMTAx
MDAwMSwKICAgICAgICBLZXlfTm8gPSAweDAxMDEwMDAyLAoKCiAgICAgICAgS2V5X0NhbmNlbCA9
IDB4MDEwMjAwMDEsCiAgICAgICAgS2V5X1ByaW50ZXIgPSAweDAxMDIwMDAyLAogICAgICAgIEtl
eV9FeGVjdXRlID0gMHgwMTAyMDAwMywKICAgICAgICBLZXlfU2xlZXAgPSAweDAxMDIwMDA0LAog
ICAgICAgIEtleV9QbGF5ID0gMHgwMTAyMDAwNSwKICAgICAgICBLZXlfWm9vbSA9IDB4MDEwMjAw
MDYsCgoKCgoKICAgICAgICBLZXlfQ29udGV4dDEgPSAweDAxMTAwMDAwLAogICAgICAgIEtleV9D
b250ZXh0MiA9IDB4MDExMDAwMDEsCiAgICAgICAgS2V5X0NvbnRleHQzID0gMHgwMTEwMDAwMiwK
ICAgICAgICBLZXlfQ29udGV4dDQgPSAweDAxMTAwMDAzLAogICAgICAgIEtleV9DYWxsID0gMHgw
MTEwMDAwNCwKICAgICAgICBLZXlfSGFuZ3VwID0gMHgwMTEwMDAwNSwKICAgICAgICBLZXlfRmxp
cCA9IDB4MDExMDAwMDYsCiAgICAgICAgS2V5X1RvZ2dsZUNhbGxIYW5ndXAgPSAweDAxMTAwMDA3
LAogICAgICAgIEtleV9Wb2ljZURpYWwgPSAweDAxMTAwMDA4LAogICAgICAgIEtleV9MYXN0TnVt
YmVyUmVkaWFsID0gMHgwMTEwMDAwOSwKCiAgICAgICAgS2V5X0NhbWVyYSA9IDB4MDExMDAwMjAs
CiAgICAgICAgS2V5X0NhbWVyYUZvY3VzID0gMHgwMTEwMDAyMSwKCiAgICAgICAgS2V5X3Vua25v
d24gPSAweDAxZmZmZmZmCiAgICB9OwoKICAgIGVudW0gQXJyb3dUeXBlIHsKICAgICAgICBOb0Fy
cm93LAogICAgICAgIFVwQXJyb3csCiAgICAgICAgRG93bkFycm93LAogICAgICAgIExlZnRBcnJv
dywKICAgICAgICBSaWdodEFycm93CiAgICB9OwoKICAgIGVudW0gUGVuU3R5bGUgewogICAgICAg
IE5vUGVuLAogICAgICAgIFNvbGlkTGluZSwKICAgICAgICBEYXNoTGluZSwKICAgICAgICBEb3RM
aW5lLAogICAgICAgIERhc2hEb3RMaW5lLAogICAgICAgIERhc2hEb3REb3RMaW5lLAogICAgICAg
IEN1c3RvbURhc2hMaW5lCgogICAgICAgICwgTVBlblN0eWxlID0gMHgwZgoKICAgIH07CgogICAg
ZW51bSBQZW5DYXBTdHlsZSB7CiAgICAgICAgRmxhdENhcCA9IDB4MDAsCiAgICAgICAgU3F1YXJl
Q2FwID0gMHgxMCwKICAgICAgICBSb3VuZENhcCA9IDB4MjAsCiAgICAgICAgTVBlbkNhcFN0eWxl
ID0gMHgzMAogICAgfTsKCiAgICBlbnVtIFBlbkpvaW5TdHlsZSB7CiAgICAgICAgTWl0ZXJKb2lu
ID0gMHgwMCwKICAgICAgICBCZXZlbEpvaW4gPSAweDQwLAogICAgICAgIFJvdW5kSm9pbiA9IDB4
ODAsCiAgICAgICAgU3ZnTWl0ZXJKb2luID0gMHgxMDAsCiAgICAgICAgTVBlbkpvaW5TdHlsZSA9
IDB4MWMwCiAgICB9OwoKICAgIGVudW0gQnJ1c2hTdHlsZSB7CiAgICAgICAgTm9CcnVzaCwKICAg
ICAgICBTb2xpZFBhdHRlcm4sCiAgICAgICAgRGVuc2UxUGF0dGVybiwKICAgICAgICBEZW5zZTJQ
YXR0ZXJuLAogICAgICAgIERlbnNlM1BhdHRlcm4sCiAgICAgICAgRGVuc2U0UGF0dGVybiwKICAg
ICAgICBEZW5zZTVQYXR0ZXJuLAogICAgICAgIERlbnNlNlBhdHRlcm4sCiAgICAgICAgRGVuc2U3
UGF0dGVybiwKICAgICAgICBIb3JQYXR0ZXJuLAogICAgICAgIFZlclBhdHRlcm4sCiAgICAgICAg
Q3Jvc3NQYXR0ZXJuLAogICAgICAgIEJEaWFnUGF0dGVybiwKICAgICAgICBGRGlhZ1BhdHRlcm4s
CiAgICAgICAgRGlhZ0Nyb3NzUGF0dGVybiwKICAgICAgICBMaW5lYXJHcmFkaWVudFBhdHRlcm4s
CiAgICAgICAgUmFkaWFsR3JhZGllbnRQYXR0ZXJuLAogICAgICAgIENvbmljYWxHcmFkaWVudFBh
dHRlcm4sCiAgICAgICAgVGV4dHVyZVBhdHRlcm4gPSAyNAoKCgogICAgfTsKCiAgICBlbnVtIFNp
emVNb2RlIHsKICAgICAgICBBYnNvbHV0ZVNpemUsCiAgICAgICAgUmVsYXRpdmVTaXplCiAgICB9
OwojIDEyNDkgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcW5hbWVzcGFjZS5oIgogICAgZW51
bSBVSUVmZmVjdCB7CiAgICAgICAgVUlfR2VuZXJhbCwKICAgICAgICBVSV9BbmltYXRlTWVudSwK
ICAgICAgICBVSV9GYWRlTWVudSwKICAgICAgICBVSV9BbmltYXRlQ29tYm8sCiAgICAgICAgVUlf
QW5pbWF0ZVRvb2x0aXAsCiAgICAgICAgVUlfRmFkZVRvb2x0aXAsCiAgICAgICAgVUlfQW5pbWF0
ZVRvb2xCb3gKICAgIH07CgogICAgZW51bSBDdXJzb3JTaGFwZSB7CiAgICAgICAgQXJyb3dDdXJz
b3IsCiAgICAgICAgVXBBcnJvd0N1cnNvciwKICAgICAgICBDcm9zc0N1cnNvciwKICAgICAgICBX
YWl0Q3Vyc29yLAogICAgICAgIElCZWFtQ3Vyc29yLAogICAgICAgIFNpemVWZXJDdXJzb3IsCiAg
ICAgICAgU2l6ZUhvckN1cnNvciwKICAgICAgICBTaXplQkRpYWdDdXJzb3IsCiAgICAgICAgU2l6
ZUZEaWFnQ3Vyc29yLAogICAgICAgIFNpemVBbGxDdXJzb3IsCiAgICAgICAgQmxhbmtDdXJzb3Is
CiAgICAgICAgU3BsaXRWQ3Vyc29yLAogICAgICAgIFNwbGl0SEN1cnNvciwKICAgICAgICBQb2lu
dGluZ0hhbmRDdXJzb3IsCiAgICAgICAgRm9yYmlkZGVuQ3Vyc29yLAogICAgICAgIFdoYXRzVGhp
c0N1cnNvciwKICAgICAgICBCdXN5Q3Vyc29yLAogICAgICAgIE9wZW5IYW5kQ3Vyc29yLAogICAg
ICAgIENsb3NlZEhhbmRDdXJzb3IsCiAgICAgICAgRHJhZ0NvcHlDdXJzb3IsCiAgICAgICAgRHJh
Z01vdmVDdXJzb3IsCiAgICAgICAgRHJhZ0xpbmtDdXJzb3IsCiAgICAgICAgTGFzdEN1cnNvciA9
IERyYWdMaW5rQ3Vyc29yLAogICAgICAgIEJpdG1hcEN1cnNvciA9IDI0LAogICAgICAgIEN1c3Rv
bUN1cnNvciA9IDI1CiMgMTMwNSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xbmFtZXNwYWNl
LmgiCiAgICB9OwoKICAgIGVudW0gVGV4dEZvcm1hdCB7CiAgICAgICAgUGxhaW5UZXh0LAogICAg
ICAgIFJpY2hUZXh0LAogICAgICAgIEF1dG9UZXh0LAogICAgICAgIExvZ1RleHQKICAgIH07Cgog
ICAgZW51bSBBc3BlY3RSYXRpb01vZGUgewogICAgICAgIElnbm9yZUFzcGVjdFJhdGlvLAogICAg
ICAgIEtlZXBBc3BlY3RSYXRpbywKICAgICAgICBLZWVwQXNwZWN0UmF0aW9CeUV4cGFuZGluZwoK
CgoKCiAgICB9OwoKCgoKCiAgICBlbnVtIEFuY2hvckF0dHJpYnV0ZSB7CiAgICAgICAgQW5jaG9y
TmFtZSwKICAgICAgICBBbmNob3JIcmVmCiAgICB9OwoKICAgIGVudW0gRG9ja1dpZGdldEFyZWEg
ewogICAgICAgIExlZnREb2NrV2lkZ2V0QXJlYSA9IDB4MSwKICAgICAgICBSaWdodERvY2tXaWRn
ZXRBcmVhID0gMHgyLAogICAgICAgIFRvcERvY2tXaWRnZXRBcmVhID0gMHg0LAogICAgICAgIEJv
dHRvbURvY2tXaWRnZXRBcmVhID0gMHg4LAoKICAgICAgICBEb2NrV2lkZ2V0QXJlYV9NYXNrID0g
MHhmLAogICAgICAgIEFsbERvY2tXaWRnZXRBcmVhcyA9IERvY2tXaWRnZXRBcmVhX01hc2ssCiAg
ICAgICAgTm9Eb2NrV2lkZ2V0QXJlYSA9IDAKICAgIH07CiAgICBlbnVtIERvY2tXaWRnZXRBcmVh
U2l6ZXMgewogICAgICAgIE5Eb2NrV2lkZ2V0QXJlYXMgPSA0CiAgICB9OwoKICAgIHR5cGVkZWYg
UUZsYWdzPERvY2tXaWRnZXRBcmVhPiBEb2NrV2lkZ2V0QXJlYXM7CgogICAgZW51bSBUb29sQmFy
QXJlYSB7CiAgICAgICAgTGVmdFRvb2xCYXJBcmVhID0gMHgxLAogICAgICAgIFJpZ2h0VG9vbEJh
ckFyZWEgPSAweDIsCiAgICAgICAgVG9wVG9vbEJhckFyZWEgPSAweDQsCiAgICAgICAgQm90dG9t
VG9vbEJhckFyZWEgPSAweDgsCgogICAgICAgIFRvb2xCYXJBcmVhX01hc2sgPSAweGYsCiAgICAg
ICAgQWxsVG9vbEJhckFyZWFzID0gVG9vbEJhckFyZWFfTWFzaywKICAgICAgICBOb1Rvb2xCYXJB
cmVhID0gMAogICAgfTsKCiAgICBlbnVtIFRvb2xCYXJBcmVhU2l6ZXMgewogICAgICAgIE5Ub29s
QmFyQXJlYXMgPSA0CiAgICB9OwoKICAgIHR5cGVkZWYgUUZsYWdzPFRvb2xCYXJBcmVhPiBUb29s
QmFyQXJlYXM7CiMgMTM4OSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xbmFtZXNwYWNlLmgi
CiAgICBlbnVtIERhdGVGb3JtYXQgewogICAgICAgIFRleHREYXRlLAogICAgICAgIElTT0RhdGUs
CiAgICAgICAgU3lzdGVtTG9jYWxlRGF0ZSwKICAgICAgICBMb2NhbERhdGUgPSBTeXN0ZW1Mb2Nh
bGVEYXRlLAogICAgICAgIExvY2FsZURhdGUsCiAgICAgICAgU3lzdGVtTG9jYWxlU2hvcnREYXRl
LAogICAgICAgIFN5c3RlbUxvY2FsZUxvbmdEYXRlLAogICAgICAgIERlZmF1bHRMb2NhbGVTaG9y
dERhdGUsCiAgICAgICAgRGVmYXVsdExvY2FsZUxvbmdEYXRlCiAgICB9OwoKICAgIGVudW0gVGlt
ZVNwZWMgewogICAgICAgIExvY2FsVGltZSwKICAgICAgICBVVEMsCiAgICAgICAgT2Zmc2V0RnJv
bVVUQwogICAgfTsKCiAgICBlbnVtIERheU9mV2VlayB7CiAgICAgICAgTW9uZGF5ID0gMSwKICAg
ICAgICBUdWVzZGF5ID0gMiwKICAgICAgICBXZWRuZXNkYXkgPSAzLAogICAgICAgIFRodXJzZGF5
ID0gNCwKICAgICAgICBGcmlkYXkgPSA1LAogICAgICAgIFNhdHVyZGF5ID0gNiwKICAgICAgICBT
dW5kYXkgPSA3CiAgICB9OwoKICAgIGVudW0gU2Nyb2xsQmFyUG9saWN5IHsKICAgICAgICBTY3Jv
bGxCYXJBc05lZWRlZCwKICAgICAgICBTY3JvbGxCYXJBbHdheXNPZmYsCiAgICAgICAgU2Nyb2xs
QmFyQWx3YXlzT24KICAgIH07CiMgMTQ0OCAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xbmFt
ZXNwYWNlLmgiCiAgICBlbnVtIENhc2VTZW5zaXRpdml0eSB7CiAgICAgICAgQ2FzZUluc2Vuc2l0
aXZlLAogICAgICAgIENhc2VTZW5zaXRpdmUKICAgIH07CgogICAgZW51bSBDb3JuZXIgewogICAg
ICAgIFRvcExlZnRDb3JuZXIgPSAweDAwMDAwLAogICAgICAgIFRvcFJpZ2h0Q29ybmVyID0gMHgw
MDAwMSwKICAgICAgICBCb3R0b21MZWZ0Q29ybmVyID0gMHgwMDAwMiwKICAgICAgICBCb3R0b21S
aWdodENvcm5lciA9IDB4MDAwMDMKCgoKCgoKICAgIH07CgogICAgZW51bSBDb25uZWN0aW9uVHlw
ZSB7CiAgICAgICAgQXV0b0Nvbm5lY3Rpb24sCiAgICAgICAgRGlyZWN0Q29ubmVjdGlvbiwKICAg
ICAgICBRdWV1ZWRDb25uZWN0aW9uLAogICAgICAgIEF1dG9Db21wYXRDb25uZWN0aW9uLAogICAg
ICAgIEJsb2NraW5nUXVldWVkQ29ubmVjdGlvbiwKICAgICAgICBVbmlxdWVDb25uZWN0aW9uID0g
MHg4MAogICAgfTsKCiAgICBlbnVtIFNob3J0Y3V0Q29udGV4dCB7CiAgICAgICAgV2lkZ2V0U2hv
cnRjdXQsCiAgICAgICAgV2luZG93U2hvcnRjdXQsCiAgICAgICAgQXBwbGljYXRpb25TaG9ydGN1
dCwKICAgICAgICBXaWRnZXRXaXRoQ2hpbGRyZW5TaG9ydGN1dAogICAgfTsKCiAgICBlbnVtIEZp
bGxSdWxlIHsKICAgICAgICBPZGRFdmVuRmlsbCwKICAgICAgICBXaW5kaW5nRmlsbAogICAgfTsK
CiAgICBlbnVtIE1hc2tNb2RlIHsKICAgICAgICBNYXNrSW5Db2xvciwKICAgICAgICBNYXNrT3V0
Q29sb3IKICAgIH07CgogICAgZW51bSBDbGlwT3BlcmF0aW9uIHsKICAgICAgICBOb0NsaXAsCiAg
ICAgICAgUmVwbGFjZUNsaXAsCiAgICAgICAgSW50ZXJzZWN0Q2xpcCwKICAgICAgICBVbml0ZUNs
aXAKICAgIH07CgoKICAgIGVudW0gSXRlbVNlbGVjdGlvbk1vZGUgewogICAgICAgIENvbnRhaW5z
SXRlbVNoYXBlID0gMHgwLAogICAgICAgIEludGVyc2VjdHNJdGVtU2hhcGUgPSAweDEsCiAgICAg
ICAgQ29udGFpbnNJdGVtQm91bmRpbmdSZWN0ID0gMHgyLAogICAgICAgIEludGVyc2VjdHNJdGVt
Qm91bmRpbmdSZWN0ID0gMHgzCiAgICB9OwoKICAgIGVudW0gVHJhbnNmb3JtYXRpb25Nb2RlIHsK
ICAgICAgICBGYXN0VHJhbnNmb3JtYXRpb24sCiAgICAgICAgU21vb3RoVHJhbnNmb3JtYXRpb24K
ICAgIH07CgogICAgZW51bSBBeGlzIHsKICAgICAgICBYQXhpcywKICAgICAgICBZQXhpcywKICAg
ICAgICBaQXhpcwogICAgfTsKCiAgICBlbnVtIEZvY3VzUmVhc29uIHsKICAgICAgICBNb3VzZUZv
Y3VzUmVhc29uLAogICAgICAgIFRhYkZvY3VzUmVhc29uLAogICAgICAgIEJhY2t0YWJGb2N1c1Jl
YXNvbiwKICAgICAgICBBY3RpdmVXaW5kb3dGb2N1c1JlYXNvbiwKICAgICAgICBQb3B1cEZvY3Vz
UmVhc29uLAogICAgICAgIFNob3J0Y3V0Rm9jdXNSZWFzb24sCiAgICAgICAgTWVudUJhckZvY3Vz
UmVhc29uLAogICAgICAgIE90aGVyRm9jdXNSZWFzb24sCiAgICAgICAgTm9Gb2N1c1JlYXNvbgog
ICAgfTsKCiAgICBlbnVtIENvbnRleHRNZW51UG9saWN5IHsKICAgICAgICBOb0NvbnRleHRNZW51
LAogICAgICAgIERlZmF1bHRDb250ZXh0TWVudSwKICAgICAgICBBY3Rpb25zQ29udGV4dE1lbnUs
CiAgICAgICAgQ3VzdG9tQ29udGV4dE1lbnUsCiAgICAgICAgUHJldmVudENvbnRleHRNZW51CiAg
ICB9OwoKICAgIGVudW0gSW5wdXRNZXRob2RRdWVyeSB7CiAgICAgICAgSW1NaWNyb0ZvY3VzLAog
ICAgICAgIEltRm9udCwKICAgICAgICBJbUN1cnNvclBvc2l0aW9uLAogICAgICAgIEltU3Vycm91
bmRpbmdUZXh0LAogICAgICAgIEltQ3VycmVudFNlbGVjdGlvbiwKICAgICAgICBJbU1heGltdW1U
ZXh0TGVuZ3RoLAogICAgICAgIEltQW5jaG9yUG9zaXRpb24KICAgIH07CgogICAgZW51bSBJbnB1
dE1ldGhvZEhpbnQgewogICAgICAgIEltaE5vbmUgPSAweDAsCiAgICAgICAgSW1oSGlkZGVuVGV4
dCA9IDB4MSwKICAgICAgICBJbWhOb0F1dG9VcHBlcmNhc2UgPSAweDIsCiAgICAgICAgSW1oUHJl
ZmVyTnVtYmVycyA9IDB4NCwKICAgICAgICBJbWhQcmVmZXJVcHBlcmNhc2UgPSAweDgsCiAgICAg
ICAgSW1oUHJlZmVyTG93ZXJjYXNlID0gMHgxMCwKICAgICAgICBJbWhOb1ByZWRpY3RpdmVUZXh0
ID0gMHgyMCwKCiAgICAgICAgSW1oRGlnaXRzT25seSA9IDB4MTAwMDAsCiAgICAgICAgSW1oRm9y
bWF0dGVkTnVtYmVyc09ubHkgPSAweDIwMDAwLAogICAgICAgIEltaFVwcGVyY2FzZU9ubHkgPSAw
eDQwMDAwLAogICAgICAgIEltaExvd2VyY2FzZU9ubHkgPSAweDgwMDAwLAogICAgICAgIEltaERp
YWxhYmxlQ2hhcmFjdGVyc09ubHkgPSAweDEwMDAwMCwKICAgICAgICBJbWhFbWFpbENoYXJhY3Rl
cnNPbmx5ID0gMHgyMDAwMDAsCiAgICAgICAgSW1oVXJsQ2hhcmFjdGVyc09ubHkgPSAweDQwMDAw
MCwKCiAgICAgICAgSW1oRXhjbHVzaXZlSW5wdXRNYXNrID0gMHhmZmZmMDAwMAogICAgfTsKICAg
IHR5cGVkZWYgUUZsYWdzPElucHV0TWV0aG9kSGludD4gSW5wdXRNZXRob2RIaW50czsKCiAgICBl
bnVtIFRvb2xCdXR0b25TdHlsZSB7CiAgICAgICAgVG9vbEJ1dHRvbkljb25Pbmx5LAogICAgICAg
IFRvb2xCdXR0b25UZXh0T25seSwKICAgICAgICBUb29sQnV0dG9uVGV4dEJlc2lkZUljb24sCiAg
ICAgICAgVG9vbEJ1dHRvblRleHRVbmRlckljb24sCiAgICAgICAgVG9vbEJ1dHRvbkZvbGxvd1N0
eWxlCiAgICB9OwoKICAgIGVudW0gTGF5b3V0RGlyZWN0aW9uIHsKICAgICAgICBMZWZ0VG9SaWdo
dCwKICAgICAgICBSaWdodFRvTGVmdCwKICAgICAgICBMYXlvdXREaXJlY3Rpb25BdXRvCiAgICB9
OwoKICAgIGVudW0gQW5jaG9yUG9pbnQgewogICAgICAgIEFuY2hvckxlZnQgPSAwLAogICAgICAg
IEFuY2hvckhvcml6b250YWxDZW50ZXIsCiAgICAgICAgQW5jaG9yUmlnaHQsCiAgICAgICAgQW5j
aG9yVG9wLAogICAgICAgIEFuY2hvclZlcnRpY2FsQ2VudGVyLAogICAgICAgIEFuY2hvckJvdHRv
bQogICAgfTsKCgoKICAgIGVudW0gRHJvcEFjdGlvbiB7CiAgICAgICAgQ29weUFjdGlvbiA9IDB4
MSwKICAgICAgICBNb3ZlQWN0aW9uID0gMHgyLAogICAgICAgIExpbmtBY3Rpb24gPSAweDQsCiAg
ICAgICAgQWN0aW9uTWFzayA9IDB4ZmYsCiAgICAgICAgVGFyZ2V0TW92ZUFjdGlvbiA9IDB4ODAw
MiwKICAgICAgICBJZ25vcmVBY3Rpb24gPSAweDAKICAgIH07CiAgICB0eXBlZGVmIFFGbGFnczxE
cm9wQWN0aW9uPiBEcm9wQWN0aW9uczsKCiAgICBlbnVtIENoZWNrU3RhdGUgewogICAgICAgIFVu
Y2hlY2tlZCwKICAgICAgICBQYXJ0aWFsbHlDaGVja2VkLAogICAgICAgIENoZWNrZWQKICAgIH07
CgogICAgZW51bSBJdGVtRGF0YVJvbGUgewogICAgICAgIERpc3BsYXlSb2xlID0gMCwKICAgICAg
ICBEZWNvcmF0aW9uUm9sZSA9IDEsCiAgICAgICAgRWRpdFJvbGUgPSAyLAogICAgICAgIFRvb2xU
aXBSb2xlID0gMywKICAgICAgICBTdGF0dXNUaXBSb2xlID0gNCwKICAgICAgICBXaGF0c1RoaXNS
b2xlID0gNSwKCiAgICAgICAgRm9udFJvbGUgPSA2LAogICAgICAgIFRleHRBbGlnbm1lbnRSb2xl
ID0gNywKICAgICAgICBCYWNrZ3JvdW5kQ29sb3JSb2xlID0gOCwKICAgICAgICBCYWNrZ3JvdW5k
Um9sZSA9IDgsCiAgICAgICAgVGV4dENvbG9yUm9sZSA9IDksCiAgICAgICAgRm9yZWdyb3VuZFJv
bGUgPSA5LAogICAgICAgIENoZWNrU3RhdGVSb2xlID0gMTAsCgogICAgICAgIEFjY2Vzc2libGVU
ZXh0Um9sZSA9IDExLAogICAgICAgIEFjY2Vzc2libGVEZXNjcmlwdGlvblJvbGUgPSAxMiwKCiAg
ICAgICAgU2l6ZUhpbnRSb2xlID0gMTMsCgogICAgICAgIERpc3BsYXlQcm9wZXJ0eVJvbGUgPSAy
NywKICAgICAgICBEZWNvcmF0aW9uUHJvcGVydHlSb2xlID0gMjgsCiAgICAgICAgVG9vbFRpcFBy
b3BlcnR5Um9sZSA9IDI5LAogICAgICAgIFN0YXR1c1RpcFByb3BlcnR5Um9sZSA9IDMwLAogICAg
ICAgIFdoYXRzVGhpc1Byb3BlcnR5Um9sZSA9IDMxLAoKICAgICAgICBVc2VyUm9sZSA9IDMyCiAg
ICB9OwoKICAgIGVudW0gSXRlbUZsYWcgewogICAgICAgIE5vSXRlbUZsYWdzID0gMCwKICAgICAg
ICBJdGVtSXNTZWxlY3RhYmxlID0gMSwKICAgICAgICBJdGVtSXNFZGl0YWJsZSA9IDIsCiAgICAg
ICAgSXRlbUlzRHJhZ0VuYWJsZWQgPSA0LAogICAgICAgIEl0ZW1Jc0Ryb3BFbmFibGVkID0gOCwK
ICAgICAgICBJdGVtSXNVc2VyQ2hlY2thYmxlID0gMTYsCiAgICAgICAgSXRlbUlzRW5hYmxlZCA9
IDMyLAogICAgICAgIEl0ZW1Jc1RyaXN0YXRlID0gNjQKICAgIH07CiAgICB0eXBlZGVmIFFGbGFn
czxJdGVtRmxhZz4gSXRlbUZsYWdzOwoKICAgIGVudW0gTWF0Y2hGbGFnIHsKICAgICAgICBNYXRj
aEV4YWN0bHkgPSAwLAogICAgICAgIE1hdGNoQ29udGFpbnMgPSAxLAogICAgICAgIE1hdGNoU3Rh
cnRzV2l0aCA9IDIsCiAgICAgICAgTWF0Y2hFbmRzV2l0aCA9IDMsCiAgICAgICAgTWF0Y2hSZWdF
eHAgPSA0LAogICAgICAgIE1hdGNoV2lsZGNhcmQgPSA1LAogICAgICAgIE1hdGNoRml4ZWRTdHJp
bmcgPSA4LAogICAgICAgIE1hdGNoQ2FzZVNlbnNpdGl2ZSA9IDE2LAogICAgICAgIE1hdGNoV3Jh
cCA9IDMyLAogICAgICAgIE1hdGNoUmVjdXJzaXZlID0gNjQKICAgIH07CiAgICB0eXBlZGVmIFFG
bGFnczxNYXRjaEZsYWc+IE1hdGNoRmxhZ3M7CgoKICAgIHR5cGVkZWYgdm9pZCAqIEhBTkRMRTsK
IyAxNjc3ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FuYW1lc3BhY2UuaCIKICAgIHR5cGVk
ZWYgV2luZG93RmxhZ3MgV0ZsYWdzOwoKICAgIGVudW0gV2luZG93TW9kYWxpdHkgewogICAgICAg
IE5vbk1vZGFsLAogICAgICAgIFdpbmRvd01vZGFsLAogICAgICAgIEFwcGxpY2F0aW9uTW9kYWwK
ICAgIH07CgogICAgZW51bSBUZXh0SW50ZXJhY3Rpb25GbGFnIHsKICAgICAgICBOb1RleHRJbnRl
cmFjdGlvbiA9IDAsCiAgICAgICAgVGV4dFNlbGVjdGFibGVCeU1vdXNlID0gMSwKICAgICAgICBU
ZXh0U2VsZWN0YWJsZUJ5S2V5Ym9hcmQgPSAyLAogICAgICAgIExpbmtzQWNjZXNzaWJsZUJ5TW91
c2UgPSA0LAogICAgICAgIExpbmtzQWNjZXNzaWJsZUJ5S2V5Ym9hcmQgPSA4LAogICAgICAgIFRl
eHRFZGl0YWJsZSA9IDE2LAoKICAgICAgICBUZXh0RWRpdG9ySW50ZXJhY3Rpb24gPSBUZXh0U2Vs
ZWN0YWJsZUJ5TW91c2UgfCBUZXh0U2VsZWN0YWJsZUJ5S2V5Ym9hcmQgfCBUZXh0RWRpdGFibGUs
CiAgICAgICAgVGV4dEJyb3dzZXJJbnRlcmFjdGlvbiA9IFRleHRTZWxlY3RhYmxlQnlNb3VzZSB8
IExpbmtzQWNjZXNzaWJsZUJ5TW91c2UgfCBMaW5rc0FjY2Vzc2libGVCeUtleWJvYXJkCiAgICB9
OwogICAgdHlwZWRlZiBRRmxhZ3M8VGV4dEludGVyYWN0aW9uRmxhZz4gVGV4dEludGVyYWN0aW9u
RmxhZ3M7CgogICAgZW51bSBFdmVudFByaW9yaXR5IHsKICAgICAgICBIaWdoRXZlbnRQcmlvcml0
eSA9IDEsCiAgICAgICAgTm9ybWFsRXZlbnRQcmlvcml0eSA9IDAsCiAgICAgICAgTG93RXZlbnRQ
cmlvcml0eSA9IC0xCiAgICB9OwoKICAgIGVudW0gU2l6ZUhpbnQgewogICAgICAgIE1pbmltdW1T
aXplLAogICAgICAgIFByZWZlcnJlZFNpemUsCiAgICAgICAgTWF4aW11bVNpemUsCiAgICAgICAg
TWluaW11bURlc2NlbnQsCiAgICAgICAgTlNpemVIaW50cwogICAgfTsKCiAgICBlbnVtIFdpbmRv
d0ZyYW1lU2VjdGlvbiB7CiAgICAgICAgTm9TZWN0aW9uLAogICAgICAgIExlZnRTZWN0aW9uLAog
ICAgICAgIFRvcExlZnRTZWN0aW9uLAogICAgICAgIFRvcFNlY3Rpb24sCiAgICAgICAgVG9wUmln
aHRTZWN0aW9uLAogICAgICAgIFJpZ2h0U2VjdGlvbiwKICAgICAgICBCb3R0b21SaWdodFNlY3Rp
b24sCiAgICAgICAgQm90dG9tU2VjdGlvbiwKICAgICAgICBCb3R0b21MZWZ0U2VjdGlvbiwKICAg
ICAgICBUaXRsZUJhckFyZWEKICAgIH07CgogICAgZW51bSBJbml0aWFsaXphdGlvbiB7CiAgICAg
ICAgVW5pbml0aWFsaXplZAogICAgfTsKCiAgICBlbnVtIENvb3JkaW5hdGVTeXN0ZW0gewogICAg
ICAgIERldmljZUNvb3JkaW5hdGVzLAogICAgICAgIExvZ2ljYWxDb29yZGluYXRlcwogICAgfTsK
CiAgICBlbnVtIFRvdWNoUG9pbnRTdGF0ZSB7CiAgICAgICAgVG91Y2hQb2ludFByZXNzZWQgPSAw
eDAxLAogICAgICAgIFRvdWNoUG9pbnRNb3ZlZCA9IDB4MDIsCiAgICAgICAgVG91Y2hQb2ludFN0
YXRpb25hcnkgPSAweDA0LAogICAgICAgIFRvdWNoUG9pbnRSZWxlYXNlZCA9IDB4MDgsCiAgICAg
ICAgVG91Y2hQb2ludFN0YXRlTWFzayA9IDB4MGYsCgogICAgICAgIFRvdWNoUG9pbnRQcmltYXJ5
ID0gMHgxMAogICAgfTsKICAgIHR5cGVkZWYgUUZsYWdzPFRvdWNoUG9pbnRTdGF0ZT4gVG91Y2hQ
b2ludFN0YXRlczsKCgogICAgZW51bSBHZXN0dXJlU3RhdGUKICAgIHsKICAgICAgICBOb0dlc3R1
cmUsCiAgICAgICAgR2VzdHVyZVN0YXJ0ZWQgPSAxLAogICAgICAgIEdlc3R1cmVVcGRhdGVkID0g
MiwKICAgICAgICBHZXN0dXJlRmluaXNoZWQgPSAzLAogICAgICAgIEdlc3R1cmVDYW5jZWxlZCA9
IDQKICAgIH07CgogICAgZW51bSBHZXN0dXJlVHlwZQogICAgewogICAgICAgIFRhcEdlc3R1cmUg
PSAxLAogICAgICAgIFRhcEFuZEhvbGRHZXN0dXJlID0gMiwKICAgICAgICBQYW5HZXN0dXJlID0g
MywKICAgICAgICBQaW5jaEdlc3R1cmUgPSA0LAogICAgICAgIFN3aXBlR2VzdHVyZSA9IDUsCgog
ICAgICAgIEN1c3RvbUdlc3R1cmUgPSAweDAxMDAsCgogICAgICAgIExhc3RHZXN0dXJlVHlwZSA9
IH4wdQogICAgfTsKCiAgICBlbnVtIEdlc3R1cmVGbGFnCiAgICB7CiAgICAgICAgRG9udFN0YXJ0
R2VzdHVyZU9uQ2hpbGRyZW4gPSAweDAxLAogICAgICAgIFJlY2VpdmVQYXJ0aWFsR2VzdHVyZXMg
PSAweDAyLAogICAgICAgIElnbm9yZWRHZXN0dXJlc1Byb3BhZ2F0ZVRvUGFyZW50ID0gMHgwNAog
ICAgfTsKICAgIHR5cGVkZWYgUUZsYWdzPEdlc3R1cmVGbGFnPiBHZXN0dXJlRmxhZ3M7CgoKICAg
IGVudW0gTmF2aWdhdGlvbk1vZGUKICAgIHsKICAgICAgICBOYXZpZ2F0aW9uTW9kZU5vbmUsCiAg
ICAgICAgTmF2aWdhdGlvbk1vZGVLZXlwYWRUYWJPcmRlciwKICAgICAgICBOYXZpZ2F0aW9uTW9k
ZUtleXBhZERpcmVjdGlvbmFsLAogICAgICAgIE5hdmlnYXRpb25Nb2RlQ3Vyc29yQXV0bywKICAg
ICAgICBOYXZpZ2F0aW9uTW9kZUN1cnNvckZvcmNlVmlzaWJsZQogICAgfTsKfQoKCgoKaW5saW5l
IFFGbGFnczxRdDo6TW91c2VCdXR0b25zOjplbnVtX3R5cGU+IG9wZXJhdG9yfChRdDo6TW91c2VC
dXR0b25zOjplbnVtX3R5cGUgZjEsIFF0OjpNb3VzZUJ1dHRvbnM6OmVudW1fdHlwZSBmMikgeyBy
ZXR1cm4gUUZsYWdzPFF0OjpNb3VzZUJ1dHRvbnM6OmVudW1fdHlwZT4oZjEpIHwgZjI7IH0gaW5s
aW5lIFFGbGFnczxRdDo6TW91c2VCdXR0b25zOjplbnVtX3R5cGU+IG9wZXJhdG9yfChRdDo6TW91
c2VCdXR0b25zOjplbnVtX3R5cGUgZjEsIFFGbGFnczxRdDo6TW91c2VCdXR0b25zOjplbnVtX3R5
cGU+IGYyKSB7IHJldHVybiBmMiB8IGYxOyB9IGlubGluZSBRSW5jb21wYXRpYmxlRmxhZyBvcGVy
YXRvcnwoUXQ6Ok1vdXNlQnV0dG9uczo6ZW51bV90eXBlIGYxLCBpbnQgZjIpIHsgcmV0dXJuIFFJ
bmNvbXBhdGlibGVGbGFnKGludChmMSkgfCBmMik7IH0KaW5saW5lIFFGbGFnczxRdDo6T3JpZW50
YXRpb25zOjplbnVtX3R5cGU+IG9wZXJhdG9yfChRdDo6T3JpZW50YXRpb25zOjplbnVtX3R5cGUg
ZjEsIFF0OjpPcmllbnRhdGlvbnM6OmVudW1fdHlwZSBmMikgeyByZXR1cm4gUUZsYWdzPFF0OjpP
cmllbnRhdGlvbnM6OmVudW1fdHlwZT4oZjEpIHwgZjI7IH0gaW5saW5lIFFGbGFnczxRdDo6T3Jp
ZW50YXRpb25zOjplbnVtX3R5cGU+IG9wZXJhdG9yfChRdDo6T3JpZW50YXRpb25zOjplbnVtX3R5
cGUgZjEsIFFGbGFnczxRdDo6T3JpZW50YXRpb25zOjplbnVtX3R5cGU+IGYyKSB7IHJldHVybiBm
MiB8IGYxOyB9IGlubGluZSBRSW5jb21wYXRpYmxlRmxhZyBvcGVyYXRvcnwoUXQ6Ok9yaWVudGF0
aW9uczo6ZW51bV90eXBlIGYxLCBpbnQgZjIpIHsgcmV0dXJuIFFJbmNvbXBhdGlibGVGbGFnKGlu
dChmMSkgfCBmMik7IH0KaW5saW5lIFFGbGFnczxRdDo6S2V5Ym9hcmRNb2RpZmllcnM6OmVudW1f
dHlwZT4gb3BlcmF0b3J8KFF0OjpLZXlib2FyZE1vZGlmaWVyczo6ZW51bV90eXBlIGYxLCBRdDo6
S2V5Ym9hcmRNb2RpZmllcnM6OmVudW1fdHlwZSBmMikgeyByZXR1cm4gUUZsYWdzPFF0OjpLZXli
b2FyZE1vZGlmaWVyczo6ZW51bV90eXBlPihmMSkgfCBmMjsgfSBpbmxpbmUgUUZsYWdzPFF0OjpL
ZXlib2FyZE1vZGlmaWVyczo6ZW51bV90eXBlPiBvcGVyYXRvcnwoUXQ6OktleWJvYXJkTW9kaWZp
ZXJzOjplbnVtX3R5cGUgZjEsIFFGbGFnczxRdDo6S2V5Ym9hcmRNb2RpZmllcnM6OmVudW1fdHlw
ZT4gZjIpIHsgcmV0dXJuIGYyIHwgZjE7IH0gaW5saW5lIFFJbmNvbXBhdGlibGVGbGFnIG9wZXJh
dG9yfChRdDo6S2V5Ym9hcmRNb2RpZmllcnM6OmVudW1fdHlwZSBmMSwgaW50IGYyKSB7IHJldHVy
biBRSW5jb21wYXRpYmxlRmxhZyhpbnQoZjEpIHwgZjIpOyB9CmlubGluZSBRRmxhZ3M8UXQ6Oldp
bmRvd0ZsYWdzOjplbnVtX3R5cGU+IG9wZXJhdG9yfChRdDo6V2luZG93RmxhZ3M6OmVudW1fdHlw
ZSBmMSwgUXQ6OldpbmRvd0ZsYWdzOjplbnVtX3R5cGUgZjIpIHsgcmV0dXJuIFFGbGFnczxRdDo6
V2luZG93RmxhZ3M6OmVudW1fdHlwZT4oZjEpIHwgZjI7IH0gaW5saW5lIFFGbGFnczxRdDo6V2lu
ZG93RmxhZ3M6OmVudW1fdHlwZT4gb3BlcmF0b3J8KFF0OjpXaW5kb3dGbGFnczo6ZW51bV90eXBl
IGYxLCBRRmxhZ3M8UXQ6OldpbmRvd0ZsYWdzOjplbnVtX3R5cGU+IGYyKSB7IHJldHVybiBmMiB8
IGYxOyB9IGlubGluZSBRSW5jb21wYXRpYmxlRmxhZyBvcGVyYXRvcnwoUXQ6OldpbmRvd0ZsYWdz
OjplbnVtX3R5cGUgZjEsIGludCBmMikgeyByZXR1cm4gUUluY29tcGF0aWJsZUZsYWcoaW50KGYx
KSB8IGYyKTsgfQppbmxpbmUgUUZsYWdzPFF0OjpBbGlnbm1lbnQ6OmVudW1fdHlwZT4gb3BlcmF0
b3J8KFF0OjpBbGlnbm1lbnQ6OmVudW1fdHlwZSBmMSwgUXQ6OkFsaWdubWVudDo6ZW51bV90eXBl
IGYyKSB7IHJldHVybiBRRmxhZ3M8UXQ6OkFsaWdubWVudDo6ZW51bV90eXBlPihmMSkgfCBmMjsg
fSBpbmxpbmUgUUZsYWdzPFF0OjpBbGlnbm1lbnQ6OmVudW1fdHlwZT4gb3BlcmF0b3J8KFF0OjpB
bGlnbm1lbnQ6OmVudW1fdHlwZSBmMSwgUUZsYWdzPFF0OjpBbGlnbm1lbnQ6OmVudW1fdHlwZT4g
ZjIpIHsgcmV0dXJuIGYyIHwgZjE7IH0gaW5saW5lIFFJbmNvbXBhdGlibGVGbGFnIG9wZXJhdG9y
fChRdDo6QWxpZ25tZW50OjplbnVtX3R5cGUgZjEsIGludCBmMikgeyByZXR1cm4gUUluY29tcGF0
aWJsZUZsYWcoaW50KGYxKSB8IGYyKTsgfQppbmxpbmUgUUZsYWdzPFF0OjpJbWFnZUNvbnZlcnNp
b25GbGFnczo6ZW51bV90eXBlPiBvcGVyYXRvcnwoUXQ6OkltYWdlQ29udmVyc2lvbkZsYWdzOjpl
bnVtX3R5cGUgZjEsIFF0OjpJbWFnZUNvbnZlcnNpb25GbGFnczo6ZW51bV90eXBlIGYyKSB7IHJl
dHVybiBRRmxhZ3M8UXQ6OkltYWdlQ29udmVyc2lvbkZsYWdzOjplbnVtX3R5cGU+KGYxKSB8IGYy
OyB9IGlubGluZSBRRmxhZ3M8UXQ6OkltYWdlQ29udmVyc2lvbkZsYWdzOjplbnVtX3R5cGU+IG9w
ZXJhdG9yfChRdDo6SW1hZ2VDb252ZXJzaW9uRmxhZ3M6OmVudW1fdHlwZSBmMSwgUUZsYWdzPFF0
OjpJbWFnZUNvbnZlcnNpb25GbGFnczo6ZW51bV90eXBlPiBmMikgeyByZXR1cm4gZjIgfCBmMTsg
fSBpbmxpbmUgUUluY29tcGF0aWJsZUZsYWcgb3BlcmF0b3J8KFF0OjpJbWFnZUNvbnZlcnNpb25G
bGFnczo6ZW51bV90eXBlIGYxLCBpbnQgZjIpIHsgcmV0dXJuIFFJbmNvbXBhdGlibGVGbGFnKGlu
dChmMSkgfCBmMik7IH0KaW5saW5lIFFGbGFnczxRdDo6RG9ja1dpZGdldEFyZWFzOjplbnVtX3R5
cGU+IG9wZXJhdG9yfChRdDo6RG9ja1dpZGdldEFyZWFzOjplbnVtX3R5cGUgZjEsIFF0OjpEb2Nr
V2lkZ2V0QXJlYXM6OmVudW1fdHlwZSBmMikgeyByZXR1cm4gUUZsYWdzPFF0OjpEb2NrV2lkZ2V0
QXJlYXM6OmVudW1fdHlwZT4oZjEpIHwgZjI7IH0gaW5saW5lIFFGbGFnczxRdDo6RG9ja1dpZGdl
dEFyZWFzOjplbnVtX3R5cGU+IG9wZXJhdG9yfChRdDo6RG9ja1dpZGdldEFyZWFzOjplbnVtX3R5
cGUgZjEsIFFGbGFnczxRdDo6RG9ja1dpZGdldEFyZWFzOjplbnVtX3R5cGU+IGYyKSB7IHJldHVy
biBmMiB8IGYxOyB9IGlubGluZSBRSW5jb21wYXRpYmxlRmxhZyBvcGVyYXRvcnwoUXQ6OkRvY2tX
aWRnZXRBcmVhczo6ZW51bV90eXBlIGYxLCBpbnQgZjIpIHsgcmV0dXJuIFFJbmNvbXBhdGlibGVG
bGFnKGludChmMSkgfCBmMik7IH0KaW5saW5lIFFGbGFnczxRdDo6VG9vbEJhckFyZWFzOjplbnVt
X3R5cGU+IG9wZXJhdG9yfChRdDo6VG9vbEJhckFyZWFzOjplbnVtX3R5cGUgZjEsIFF0OjpUb29s
QmFyQXJlYXM6OmVudW1fdHlwZSBmMikgeyByZXR1cm4gUUZsYWdzPFF0OjpUb29sQmFyQXJlYXM6
OmVudW1fdHlwZT4oZjEpIHwgZjI7IH0gaW5saW5lIFFGbGFnczxRdDo6VG9vbEJhckFyZWFzOjpl
bnVtX3R5cGU+IG9wZXJhdG9yfChRdDo6VG9vbEJhckFyZWFzOjplbnVtX3R5cGUgZjEsIFFGbGFn
czxRdDo6VG9vbEJhckFyZWFzOjplbnVtX3R5cGU+IGYyKSB7IHJldHVybiBmMiB8IGYxOyB9IGlu
bGluZSBRSW5jb21wYXRpYmxlRmxhZyBvcGVyYXRvcnwoUXQ6OlRvb2xCYXJBcmVhczo6ZW51bV90
eXBlIGYxLCBpbnQgZjIpIHsgcmV0dXJuIFFJbmNvbXBhdGlibGVGbGFnKGludChmMSkgfCBmMik7
IH0KaW5saW5lIFFGbGFnczxRdDo6V2luZG93U3RhdGVzOjplbnVtX3R5cGU+IG9wZXJhdG9yfChR
dDo6V2luZG93U3RhdGVzOjplbnVtX3R5cGUgZjEsIFF0OjpXaW5kb3dTdGF0ZXM6OmVudW1fdHlw
ZSBmMikgeyByZXR1cm4gUUZsYWdzPFF0OjpXaW5kb3dTdGF0ZXM6OmVudW1fdHlwZT4oZjEpIHwg
ZjI7IH0gaW5saW5lIFFGbGFnczxRdDo6V2luZG93U3RhdGVzOjplbnVtX3R5cGU+IG9wZXJhdG9y
fChRdDo6V2luZG93U3RhdGVzOjplbnVtX3R5cGUgZjEsIFFGbGFnczxRdDo6V2luZG93U3RhdGVz
OjplbnVtX3R5cGU+IGYyKSB7IHJldHVybiBmMiB8IGYxOyB9IGlubGluZSBRSW5jb21wYXRpYmxl
RmxhZyBvcGVyYXRvcnwoUXQ6OldpbmRvd1N0YXRlczo6ZW51bV90eXBlIGYxLCBpbnQgZjIpIHsg
cmV0dXJuIFFJbmNvbXBhdGlibGVGbGFnKGludChmMSkgfCBmMik7IH0KaW5saW5lIFFGbGFnczxR
dDo6RHJvcEFjdGlvbnM6OmVudW1fdHlwZT4gb3BlcmF0b3J8KFF0OjpEcm9wQWN0aW9uczo6ZW51
bV90eXBlIGYxLCBRdDo6RHJvcEFjdGlvbnM6OmVudW1fdHlwZSBmMikgeyByZXR1cm4gUUZsYWdz
PFF0OjpEcm9wQWN0aW9uczo6ZW51bV90eXBlPihmMSkgfCBmMjsgfSBpbmxpbmUgUUZsYWdzPFF0
OjpEcm9wQWN0aW9uczo6ZW51bV90eXBlPiBvcGVyYXRvcnwoUXQ6OkRyb3BBY3Rpb25zOjplbnVt
X3R5cGUgZjEsIFFGbGFnczxRdDo6RHJvcEFjdGlvbnM6OmVudW1fdHlwZT4gZjIpIHsgcmV0dXJu
IGYyIHwgZjE7IH0gaW5saW5lIFFJbmNvbXBhdGlibGVGbGFnIG9wZXJhdG9yfChRdDo6RHJvcEFj
dGlvbnM6OmVudW1fdHlwZSBmMSwgaW50IGYyKSB7IHJldHVybiBRSW5jb21wYXRpYmxlRmxhZyhp
bnQoZjEpIHwgZjIpOyB9CmlubGluZSBRRmxhZ3M8UXQ6Okl0ZW1GbGFnczo6ZW51bV90eXBlPiBv
cGVyYXRvcnwoUXQ6Okl0ZW1GbGFnczo6ZW51bV90eXBlIGYxLCBRdDo6SXRlbUZsYWdzOjplbnVt
X3R5cGUgZjIpIHsgcmV0dXJuIFFGbGFnczxRdDo6SXRlbUZsYWdzOjplbnVtX3R5cGU+KGYxKSB8
IGYyOyB9IGlubGluZSBRRmxhZ3M8UXQ6Okl0ZW1GbGFnczo6ZW51bV90eXBlPiBvcGVyYXRvcnwo
UXQ6Okl0ZW1GbGFnczo6ZW51bV90eXBlIGYxLCBRRmxhZ3M8UXQ6Okl0ZW1GbGFnczo6ZW51bV90
eXBlPiBmMikgeyByZXR1cm4gZjIgfCBmMTsgfSBpbmxpbmUgUUluY29tcGF0aWJsZUZsYWcgb3Bl
cmF0b3J8KFF0OjpJdGVtRmxhZ3M6OmVudW1fdHlwZSBmMSwgaW50IGYyKSB7IHJldHVybiBRSW5j
b21wYXRpYmxlRmxhZyhpbnQoZjEpIHwgZjIpOyB9CmlubGluZSBRRmxhZ3M8UXQ6Ok1hdGNoRmxh
Z3M6OmVudW1fdHlwZT4gb3BlcmF0b3J8KFF0OjpNYXRjaEZsYWdzOjplbnVtX3R5cGUgZjEsIFF0
OjpNYXRjaEZsYWdzOjplbnVtX3R5cGUgZjIpIHsgcmV0dXJuIFFGbGFnczxRdDo6TWF0Y2hGbGFn
czo6ZW51bV90eXBlPihmMSkgfCBmMjsgfSBpbmxpbmUgUUZsYWdzPFF0OjpNYXRjaEZsYWdzOjpl
bnVtX3R5cGU+IG9wZXJhdG9yfChRdDo6TWF0Y2hGbGFnczo6ZW51bV90eXBlIGYxLCBRRmxhZ3M8
UXQ6Ok1hdGNoRmxhZ3M6OmVudW1fdHlwZT4gZjIpIHsgcmV0dXJuIGYyIHwgZjE7IH0gaW5saW5l
IFFJbmNvbXBhdGlibGVGbGFnIG9wZXJhdG9yfChRdDo6TWF0Y2hGbGFnczo6ZW51bV90eXBlIGYx
LCBpbnQgZjIpIHsgcmV0dXJuIFFJbmNvbXBhdGlibGVGbGFnKGludChmMSkgfCBmMik7IH0KaW5s
aW5lIFFGbGFnczxRdDo6VGV4dEludGVyYWN0aW9uRmxhZ3M6OmVudW1fdHlwZT4gb3BlcmF0b3J8
KFF0OjpUZXh0SW50ZXJhY3Rpb25GbGFnczo6ZW51bV90eXBlIGYxLCBRdDo6VGV4dEludGVyYWN0
aW9uRmxhZ3M6OmVudW1fdHlwZSBmMikgeyByZXR1cm4gUUZsYWdzPFF0OjpUZXh0SW50ZXJhY3Rp
b25GbGFnczo6ZW51bV90eXBlPihmMSkgfCBmMjsgfSBpbmxpbmUgUUZsYWdzPFF0OjpUZXh0SW50
ZXJhY3Rpb25GbGFnczo6ZW51bV90eXBlPiBvcGVyYXRvcnwoUXQ6OlRleHRJbnRlcmFjdGlvbkZs
YWdzOjplbnVtX3R5cGUgZjEsIFFGbGFnczxRdDo6VGV4dEludGVyYWN0aW9uRmxhZ3M6OmVudW1f
dHlwZT4gZjIpIHsgcmV0dXJuIGYyIHwgZjE7IH0gaW5saW5lIFFJbmNvbXBhdGlibGVGbGFnIG9w
ZXJhdG9yfChRdDo6VGV4dEludGVyYWN0aW9uRmxhZ3M6OmVudW1fdHlwZSBmMSwgaW50IGYyKSB7
IHJldHVybiBRSW5jb21wYXRpYmxlRmxhZyhpbnQoZjEpIHwgZjIpOyB9CmlubGluZSBRRmxhZ3M8
UXQ6OklucHV0TWV0aG9kSGludHM6OmVudW1fdHlwZT4gb3BlcmF0b3J8KFF0OjpJbnB1dE1ldGhv
ZEhpbnRzOjplbnVtX3R5cGUgZjEsIFF0OjpJbnB1dE1ldGhvZEhpbnRzOjplbnVtX3R5cGUgZjIp
IHsgcmV0dXJuIFFGbGFnczxRdDo6SW5wdXRNZXRob2RIaW50czo6ZW51bV90eXBlPihmMSkgfCBm
MjsgfSBpbmxpbmUgUUZsYWdzPFF0OjpJbnB1dE1ldGhvZEhpbnRzOjplbnVtX3R5cGU+IG9wZXJh
dG9yfChRdDo6SW5wdXRNZXRob2RIaW50czo6ZW51bV90eXBlIGYxLCBRRmxhZ3M8UXQ6OklucHV0
TWV0aG9kSGludHM6OmVudW1fdHlwZT4gZjIpIHsgcmV0dXJuIGYyIHwgZjE7IH0gaW5saW5lIFFJ
bmNvbXBhdGlibGVGbGFnIG9wZXJhdG9yfChRdDo6SW5wdXRNZXRob2RIaW50czo6ZW51bV90eXBl
IGYxLCBpbnQgZjIpIHsgcmV0dXJuIFFJbmNvbXBhdGlibGVGbGFnKGludChmMSkgfCBmMik7IH0K
aW5saW5lIFFGbGFnczxRdDo6VG91Y2hQb2ludFN0YXRlczo6ZW51bV90eXBlPiBvcGVyYXRvcnwo
UXQ6OlRvdWNoUG9pbnRTdGF0ZXM6OmVudW1fdHlwZSBmMSwgUXQ6OlRvdWNoUG9pbnRTdGF0ZXM6
OmVudW1fdHlwZSBmMikgeyByZXR1cm4gUUZsYWdzPFF0OjpUb3VjaFBvaW50U3RhdGVzOjplbnVt
X3R5cGU+KGYxKSB8IGYyOyB9IGlubGluZSBRRmxhZ3M8UXQ6OlRvdWNoUG9pbnRTdGF0ZXM6OmVu
dW1fdHlwZT4gb3BlcmF0b3J8KFF0OjpUb3VjaFBvaW50U3RhdGVzOjplbnVtX3R5cGUgZjEsIFFG
bGFnczxRdDo6VG91Y2hQb2ludFN0YXRlczo6ZW51bV90eXBlPiBmMikgeyByZXR1cm4gZjIgfCBm
MTsgfSBpbmxpbmUgUUluY29tcGF0aWJsZUZsYWcgb3BlcmF0b3J8KFF0OjpUb3VjaFBvaW50U3Rh
dGVzOjplbnVtX3R5cGUgZjEsIGludCBmMikgeyByZXR1cm4gUUluY29tcGF0aWJsZUZsYWcoaW50
KGYxKSB8IGYyKTsgfQoKaW5saW5lIFFGbGFnczxRdDo6R2VzdHVyZUZsYWdzOjplbnVtX3R5cGU+
IG9wZXJhdG9yfChRdDo6R2VzdHVyZUZsYWdzOjplbnVtX3R5cGUgZjEsIFF0OjpHZXN0dXJlRmxh
Z3M6OmVudW1fdHlwZSBmMikgeyByZXR1cm4gUUZsYWdzPFF0OjpHZXN0dXJlRmxhZ3M6OmVudW1f
dHlwZT4oZjEpIHwgZjI7IH0gaW5saW5lIFFGbGFnczxRdDo6R2VzdHVyZUZsYWdzOjplbnVtX3R5
cGU+IG9wZXJhdG9yfChRdDo6R2VzdHVyZUZsYWdzOjplbnVtX3R5cGUgZjEsIFFGbGFnczxRdDo6
R2VzdHVyZUZsYWdzOjplbnVtX3R5cGU+IGYyKSB7IHJldHVybiBmMiB8IGYxOyB9IGlubGluZSBR
SW5jb21wYXRpYmxlRmxhZyBvcGVyYXRvcnwoUXQ6Okdlc3R1cmVGbGFnczo6ZW51bV90eXBlIGYx
LCBpbnQgZjIpIHsgcmV0dXJuIFFJbmNvbXBhdGlibGVGbGFnKGludChmMSkgfCBmMik7IH0KCgp0
eXBlZGVmIGJvb2wgKCpxSW50ZXJuYWxDYWxsYmFjaykodm9pZCAqKik7CgpjbGFzcyBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRSW50ZXJuYWwgewpwdWJsaWM6CiAgICBl
bnVtIFBhaW50RGV2aWNlRmxhZ3MgewogICAgICAgIFVua25vd25EZXZpY2UgPSAweDAwLAogICAg
ICAgIFdpZGdldCA9IDB4MDEsCiAgICAgICAgUGl4bWFwID0gMHgwMiwKICAgICAgICBJbWFnZSA9
IDB4MDMsCiAgICAgICAgUHJpbnRlciA9IDB4MDQsCiAgICAgICAgUGljdHVyZSA9IDB4MDUsCiAg
ICAgICAgUGJ1ZmZlciA9IDB4MDYsCiAgICAgICAgRnJhbWVidWZmZXJPYmplY3QgPSAweDA3LAog
ICAgICAgIEN1c3RvbVJhc3RlciA9IDB4MDgsCiAgICAgICAgTWFjUXVhcnR6ID0gMHgwOSwKICAg
ICAgICBQYWludEJ1ZmZlciA9IDB4MGEsCiAgICAgICAgT3BlbkdMID0gMHgwYgogICAgfTsKICAg
IGVudW0gUmVsYXlvdXRUeXBlIHsKICAgICAgICBSZWxheW91dE5vcm1hbCwKICAgICAgICBSZWxh
eW91dERyYWdnaW5nLAogICAgICAgIFJlbGF5b3V0RHJvcHBlZAogICAgfTsKCgogICAgZW51bSBD
YWxsYmFjayB7CiAgICAgICAgQ29ubmVjdENhbGxiYWNrLAogICAgICAgIERpc2Nvbm5lY3RDYWxs
YmFjaywKICAgICAgICBBZG9wdEN1cnJlbnRUaHJlYWQsCiAgICAgICAgRXZlbnROb3RpZnlDYWxs
YmFjaywKICAgICAgICBMYXN0Q2FsbGJhY2sKICAgIH07CgogICAgZW51bSBJbnRlcm5hbEZ1bmN0
aW9uIHsKICAgICAgICBDcmVhdGVUaHJlYWRGb3JBZG9wdGlvbiwKICAgICAgICBSZWZBZG9wdGVk
VGhyZWFkLAogICAgICAgIERlcmVmQWRvcHRlZFRocmVhZCwKICAgICAgICBTZXRDdXJyZW50VGhy
ZWFkVG9NYWluVGhyZWFkLAogICAgICAgIFNldFFPYmplY3RTZW5kZXIsCiAgICAgICAgR2V0UU9i
amVjdFNlbmRlciwKICAgICAgICBSZXNldFFPYmplY3RTZW5kZXIsCiAgICAgICAgTGFzdEludGVy
bmFsRnVuY3Rpb24KICAgIH07CgogICAgZW51bSBEb2NrUG9zaXRpb24gewogICAgICAgIExlZnRE
b2NrLAogICAgICAgIFJpZ2h0RG9jaywKICAgICAgICBUb3BEb2NrLAogICAgICAgIEJvdHRvbURv
Y2ssCiAgICAgICAgRG9ja0NvdW50CiAgICB9OwoKICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyQ2Fs
bGJhY2soQ2FsbGJhY2ssIHFJbnRlcm5hbENhbGxiYWNrKTsKICAgIHN0YXRpYyBib29sIHVucmVn
aXN0ZXJDYWxsYmFjayhDYWxsYmFjaywgcUludGVybmFsQ2FsbGJhY2spOwoKICAgIHN0YXRpYyBi
b29sIGFjdGl2YXRlQ2FsbGJhY2tzKENhbGxiYWNrLCB2b2lkICoqKTsKICAgIHN0YXRpYyBib29s
IGNhbGxGdW5jdGlvbihJbnRlcm5hbEZ1bmN0aW9uIGZ1bmMsIHZvaWQgKiopOwp9OwojIDE4NzYg
Ii9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcW5hbWVzcGFjZS5oIgoKCgojIDQ2ICIvb3B0L2xv
Y2FsL2luY2x1ZGUvUXRDb3JlL3FvYmplY3RkZWZzLmgiIDIKCgoKCgp0eXBlZGVmIFF0VmFsaWRM
aWNlbnNlRm9yQ29yZU1vZHVsZSBRdENvcmVNb2R1bGU7CgpjbGFzcyBRQnl0ZUFycmF5OwoKY2xh
c3MgUVN0cmluZzsKCgojZGVmaW5lIFFfTU9DX09VVFBVVF9SRVZJU0lPTiA2MgojIDY4ICIvb3B0
L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FvYmplY3RkZWZzLmgiCiNkZWZpbmUgc2xvdHMgCiNkZWZp
bmUgc2lnbmFscyBwcm90ZWN0ZWQKCiNkZWZpbmUgUV9TTE9UUyAKI2RlZmluZSBRX1NJR05BTFMg
cHJvdGVjdGVkCiNkZWZpbmUgUV9QUklWQVRFX1NMT1QoZCxzaWduYXR1cmUpIAojZGVmaW5lIFFf
RU1JVCAKCiNkZWZpbmUgZW1pdCAKCiNkZWZpbmUgUV9DTEFTU0lORk8obmFtZSx2YWx1ZSkgCiNk
ZWZpbmUgUV9JTlRFUkZBQ0VTKHgpIAojZGVmaW5lIFFfUFJPUEVSVFkodGV4dCkgCiNkZWZpbmUg
UV9QUklWQVRFX1BST1BFUlRZKGQsdGV4dCkgCiNkZWZpbmUgUV9SRVZJU0lPTih2KSAKI2RlZmlu
ZSBRX09WRVJSSURFKHRleHQpIAojZGVmaW5lIFFfRU5VTVMoeCkgCiNkZWZpbmUgUV9GTEFHUyh4
KSAKCgoKI2RlZmluZSBRX1NDUklQVEFCTEUgCiNkZWZpbmUgUV9JTlZPS0FCTEUgCiNkZWZpbmUg
UV9TSUdOQUwgCiNkZWZpbmUgUV9TTE9UIAoKCgoKCiNkZWZpbmUgUVRfVFJfRlVOQ1RJT05TIHN0
YXRpYyBpbmxpbmUgUVN0cmluZyB0cihjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpjID0gMCkg
eyByZXR1cm4gc3RhdGljTWV0YU9iamVjdC50cihzLCBjKTsgfSBzdGF0aWMgaW5saW5lIFFTdHJp
bmcgdHJVdGY4KGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmMgPSAwKSB7IHJldHVybiBzdGF0
aWNNZXRhT2JqZWN0LnRyVXRmOChzLCBjKTsgfSBzdGF0aWMgaW5saW5lIFFTdHJpbmcgdHIoY29u
c3QgY2hhciAqcywgY29uc3QgY2hhciAqYywgaW50IG4pIHsgcmV0dXJuIHN0YXRpY01ldGFPYmpl
Y3QudHIocywgYywgbik7IH0gc3RhdGljIGlubGluZSBRU3RyaW5nIHRyVXRmOChjb25zdCBjaGFy
ICpzLCBjb25zdCBjaGFyICpjLCBpbnQgbikgeyByZXR1cm4gc3RhdGljTWV0YU9iamVjdC50clV0
ZjgocywgYywgbik7IH0KIyAxMzkgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcW9iamVjdGRl
ZnMuaCIKI2RlZmluZSBRX09CSkVDVF9DSEVDSyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IHZvaWQgcXRfY2hlY2tfZm9yX1FPQkpFQ1RfbWFjcm8oY29uc3QgVCAmX3FfYXJndW1lbnQpIGNv
bnN0IHsgaW50IGkgPSBxWW91Rm9yZ290VGhlUV9PQkpFQ1RfTWFjcm8odGhpcywgJl9xX2FyZ3Vt
ZW50KTsgaSA9IGk7IH0KCgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSBpbnQgcVlvdUZv
cmdvdFRoZVFfT0JKRUNUX01hY3JvKFQsIFQpIHsgcmV0dXJuIDA7IH0KCnRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDI+CmlubGluZSB2b2lkIHFZb3VGb3Jnb3RUaGVRX09CSkVDVF9N
YWNybyhUMSwgVDIpIHt9CgoKCgoKI2RlZmluZSBRX09CSkVDVF9HRVRTVEFUSUNNRVRBT0JKRUNU
IAoKCgojZGVmaW5lIFFfT0JKRUNUIHB1YmxpYzogUV9PQkpFQ1RfQ0hFQ0sgc3RhdGljIGNvbnN0
IFFNZXRhT2JqZWN0IHN0YXRpY01ldGFPYmplY3Q7IFFfT0JKRUNUX0dFVFNUQVRJQ01FVEFPQkpF
Q1QgdmlydHVhbCBjb25zdCBRTWV0YU9iamVjdCAqbWV0YU9iamVjdCgpIGNvbnN0OyB2aXJ0dWFs
IHZvaWQgKnF0X21ldGFjYXN0KGNvbnN0IGNoYXIgKik7IFFUX1RSX0ZVTkNUSU9OUyB2aXJ0dWFs
IGludCBxdF9tZXRhY2FsbChRTWV0YU9iamVjdDo6Q2FsbCwgaW50LCB2b2lkICoqKTsgcHJpdmF0
ZToKIyAxNjggIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcW9iamVjdGRlZnMuaCIKI2RlZmlu
ZSBRX09CSkVDVF9GQUtFIFFfT0JKRUNUCgojZGVmaW5lIFFfR0FER0VUIHB1YmxpYzogc3RhdGlj
IGNvbnN0IFFNZXRhT2JqZWN0IHN0YXRpY01ldGFPYmplY3Q7IFFfT0JKRUNUX0dFVFNUQVRJQ01F
VEFPQkpFQ1QgcHJpdmF0ZToKIyAyMTQgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcW9iamVj
dGRlZnMuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgY29uc3QgY2hh
ciAqcUZsYWdMb2NhdGlvbihjb25zdCBjaGFyICptZXRob2QpOwoKI2RlZmluZSBRVE9TVFJJTkdf
SEVMUEVSKHMpICNzCiNkZWZpbmUgUVRPU1RSSU5HKHMpIFFUT1NUUklOR19IRUxQRVIocykKCiNk
ZWZpbmUgUUxPQ0FUSU9OICJcMCJfX0ZJTEVfXyI6IlFUT1NUUklORyhfX0xJTkVfXykKI2RlZmlu
ZSBNRVRIT0QoYSkgcUZsYWdMb2NhdGlvbigiMCIjYSBRTE9DQVRJT04pCiNkZWZpbmUgU0xPVChh
KSBxRmxhZ0xvY2F0aW9uKCIxIiNhIFFMT0NBVElPTikKI2RlZmluZSBTSUdOQUwoYSkgcUZsYWdM
b2NhdGlvbigiMiIjYSBRTE9DQVRJT04pCiMgMjM1ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3Jl
L3FvYmplY3RkZWZzLmgiCiNkZWZpbmUgUU1FVEhPRF9DT0RFIDAKI2RlZmluZSBRU0xPVF9DT0RF
IDEKI2RlZmluZSBRU0lHTkFMX0NPREUgMgoKI2RlZmluZSBRX0FSRyh0eXBlLGRhdGEpIFFBcmd1
bWVudDx0eXBlID4oI3R5cGUsIGRhdGEpCiNkZWZpbmUgUV9SRVRVUk5fQVJHKHR5cGUsZGF0YSkg
UVJldHVybkFyZ3VtZW50PHR5cGUgPigjdHlwZSwgZGF0YSkKCmNsYXNzIFFPYmplY3Q7CmNsYXNz
IFFNZXRhTWV0aG9kOwpjbGFzcyBRTWV0YUVudW07CmNsYXNzIFFNZXRhUHJvcGVydHk7CmNsYXNz
IFFNZXRhQ2xhc3NJbmZvOwoKCmNsYXNzIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIFFHZW5lcmljQXJndW1lbnQKewpwdWJsaWM6CiAgICBpbmxpbmUgUUdlbmVyaWNBcmd1
bWVudChjb25zdCBjaGFyICphTmFtZSA9IDAsIGNvbnN0IHZvaWQgKmFEYXRhID0gMCkKICAgICAg
ICA6IF9kYXRhKGFEYXRhKSwgX25hbWUoYU5hbWUpIHt9CiAgICBpbmxpbmUgdm9pZCAqZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCAqPihfZGF0YSk7IH0KICAgIGlubGluZSBj
b25zdCBjaGFyICpuYW1lKCkgY29uc3QgeyByZXR1cm4gX25hbWU7IH0KCnByaXZhdGU6CiAgICBj
b25zdCB2b2lkICpfZGF0YTsKICAgIGNvbnN0IGNoYXIgKl9uYW1lOwp9OwoKY2xhc3MgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUUdlbmVyaWNSZXR1cm5Bcmd1bWVudDog
cHVibGljIFFHZW5lcmljQXJndW1lbnQKewpwdWJsaWM6CiAgICBpbmxpbmUgUUdlbmVyaWNSZXR1
cm5Bcmd1bWVudChjb25zdCBjaGFyICphTmFtZSA9IDAsIHZvaWQgKmFEYXRhID0gMCkKICAgICAg
ICA6IFFHZW5lcmljQXJndW1lbnQoYU5hbWUsIGFEYXRhKQogICAgICAgIHt9Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgVD4KY2xhc3MgUUFyZ3VtZW50OiBwdWJsaWMgUUdlbmVyaWNBcmd1bWVudAp7CnB1
YmxpYzoKICAgIGlubGluZSBRQXJndW1lbnQoY29uc3QgY2hhciAqYU5hbWUsIGNvbnN0IFQgJmFE
YXRhKQogICAgICAgIDogUUdlbmVyaWNBcmd1bWVudChhTmFtZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dm9pZCAqPigmYURhdGEpKQogICAgICAgIHt9Cn07CnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBR
QXJndW1lbnQ8VCAmPjogcHVibGljIFFHZW5lcmljQXJndW1lbnQKewpwdWJsaWM6CiAgICBpbmxp
bmUgUUFyZ3VtZW50KGNvbnN0IGNoYXIgKmFOYW1lLCBUICZhRGF0YSkKICAgICAgICA6IFFHZW5l
cmljQXJndW1lbnQoYU5hbWUsIHN0YXRpY19jYXN0PGNvbnN0IHZvaWQgKj4oJmFEYXRhKSkKICAg
ICAgICB7fQp9OwoKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBRUmV0dXJuQXJndW1lbnQ6
IHB1YmxpYyBRR2VuZXJpY1JldHVybkFyZ3VtZW50CnsKcHVibGljOgogICAgaW5saW5lIFFSZXR1
cm5Bcmd1bWVudChjb25zdCBjaGFyICphTmFtZSwgVCAmYURhdGEpCiAgICAgICAgOiBRR2VuZXJp
Y1JldHVybkFyZ3VtZW50KGFOYW1lLCBzdGF0aWNfY2FzdDx2b2lkICo+KCZhRGF0YSkpCiAgICAg
ICAge30KfTsKCnN0cnVjdCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBR
TWV0YU9iamVjdAp7CiAgICBjb25zdCBjaGFyICpjbGFzc05hbWUoKSBjb25zdDsKICAgIGNvbnN0
IFFNZXRhT2JqZWN0ICpzdXBlckNsYXNzKCkgY29uc3Q7CgogICAgUU9iamVjdCAqY2FzdChRT2Jq
ZWN0ICpvYmopIGNvbnN0OwoKCgogICAgUVN0cmluZyB0cihjb25zdCBjaGFyICpzLCBjb25zdCBj
aGFyICpjKSBjb25zdDsKICAgIFFTdHJpbmcgdHJVdGY4KGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNo
YXIgKmMpIGNvbnN0OwogICAgUVN0cmluZyB0cihjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpj
LCBpbnQgbikgY29uc3Q7CiAgICBRU3RyaW5nIHRyVXRmOChjb25zdCBjaGFyICpzLCBjb25zdCBj
aGFyICpjLCBpbnQgbikgY29uc3Q7CgoKICAgIGludCBtZXRob2RPZmZzZXQoKSBjb25zdDsKICAg
IGludCBlbnVtZXJhdG9yT2Zmc2V0KCkgY29uc3Q7CiAgICBpbnQgcHJvcGVydHlPZmZzZXQoKSBj
b25zdDsKICAgIGludCBjbGFzc0luZm9PZmZzZXQoKSBjb25zdDsKCiAgICBpbnQgY29uc3RydWN0
b3JDb3VudCgpIGNvbnN0OwogICAgaW50IG1ldGhvZENvdW50KCkgY29uc3Q7CiAgICBpbnQgZW51
bWVyYXRvckNvdW50KCkgY29uc3Q7CiAgICBpbnQgcHJvcGVydHlDb3VudCgpIGNvbnN0OwogICAg
aW50IGNsYXNzSW5mb0NvdW50KCkgY29uc3Q7CgogICAgaW50IGluZGV4T2ZDb25zdHJ1Y3Rvcihj
b25zdCBjaGFyICpjb25zdHJ1Y3RvcikgY29uc3Q7CiAgICBpbnQgaW5kZXhPZk1ldGhvZChjb25z
dCBjaGFyICptZXRob2QpIGNvbnN0OwogICAgaW50IGluZGV4T2ZTaWduYWwoY29uc3QgY2hhciAq
c2lnbmFsKSBjb25zdDsKICAgIGludCBpbmRleE9mU2xvdChjb25zdCBjaGFyICpzbG90KSBjb25z
dDsKICAgIGludCBpbmRleE9mRW51bWVyYXRvcihjb25zdCBjaGFyICpuYW1lKSBjb25zdDsKICAg
IGludCBpbmRleE9mUHJvcGVydHkoY29uc3QgY2hhciAqbmFtZSkgY29uc3Q7CiAgICBpbnQgaW5k
ZXhPZkNsYXNzSW5mbyhjb25zdCBjaGFyICpuYW1lKSBjb25zdDsKCiAgICBRTWV0YU1ldGhvZCBj
b25zdHJ1Y3RvcihpbnQgaW5kZXgpIGNvbnN0OwogICAgUU1ldGFNZXRob2QgbWV0aG9kKGludCBp
bmRleCkgY29uc3Q7CiAgICBRTWV0YUVudW0gZW51bWVyYXRvcihpbnQgaW5kZXgpIGNvbnN0Owog
ICAgUU1ldGFQcm9wZXJ0eSBwcm9wZXJ0eShpbnQgaW5kZXgpIGNvbnN0OwogICAgUU1ldGFDbGFz
c0luZm8gY2xhc3NJbmZvKGludCBpbmRleCkgY29uc3Q7CiAgICBRTWV0YVByb3BlcnR5IHVzZXJQ
cm9wZXJ0eSgpIGNvbnN0OwoKICAgIHN0YXRpYyBib29sIGNoZWNrQ29ubmVjdEFyZ3MoY29uc3Qg
Y2hhciAqc2lnbmFsLCBjb25zdCBjaGFyICptZXRob2QpOwogICAgc3RhdGljIFFCeXRlQXJyYXkg
bm9ybWFsaXplZFNpZ25hdHVyZShjb25zdCBjaGFyICptZXRob2QpOwogICAgc3RhdGljIFFCeXRl
QXJyYXkgbm9ybWFsaXplZFR5cGUoY29uc3QgY2hhciAqdHlwZSk7CgoKICAgIHN0YXRpYyBib29s
IGNvbm5lY3QoY29uc3QgUU9iamVjdCAqc2VuZGVyLCBpbnQgc2lnbmFsX2luZGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBRT2JqZWN0ICpyZWNlaXZlciwgaW50IG1ldGhvZF9pbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGUgPSAwLCBpbnQgKnR5cGVzID0gMCk7
CgogICAgc3RhdGljIGJvb2wgZGlzY29ubmVjdChjb25zdCBRT2JqZWN0ICpzZW5kZXIsIGludCBz
aWduYWxfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFPYmplY3QgKnJl
Y2VpdmVyLCBpbnQgbWV0aG9kX2luZGV4KTsKICAgIHN0YXRpYyBib29sIGRpc2Nvbm5lY3RPbmUo
Y29uc3QgUU9iamVjdCAqc2VuZGVyLCBpbnQgc2lnbmFsX2luZGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBRT2JqZWN0ICpyZWNlaXZlciwgaW50IG1ldGhvZF9pbmRleCk7
CgogICAgc3RhdGljIHZvaWQgY29ubmVjdFNsb3RzQnlOYW1lKFFPYmplY3QgKm8pOwoKCiAgICBz
dGF0aWMgdm9pZCBhY3RpdmF0ZShRT2JqZWN0ICpzZW5kZXIsIGludCBzaWduYWxfaW5kZXgsIHZv
aWQgKiphcmd2KTsKICAgIHN0YXRpYyB2b2lkIGFjdGl2YXRlKFFPYmplY3QgKnNlbmRlciwgaW50
IGZyb21fc2lnbmFsX2luZGV4LCBpbnQgdG9fc2lnbmFsX2luZGV4LCB2b2lkICoqYXJndik7CiAg
ICBzdGF0aWMgdm9pZCBhY3RpdmF0ZShRT2JqZWN0ICpzZW5kZXIsIGNvbnN0IFFNZXRhT2JqZWN0
ICosIGludCBsb2NhbF9zaWduYWxfaW5kZXgsIHZvaWQgKiphcmd2KTsKICAgIHN0YXRpYyB2b2lk
IGFjdGl2YXRlKFFPYmplY3QgKnNlbmRlciwgY29uc3QgUU1ldGFPYmplY3QgKiwgaW50IGZyb21f
bG9jYWxfc2lnbmFsX2luZGV4LCBpbnQgdG9fbG9jYWxfc2lnbmFsX2luZGV4LCB2b2lkICoqYXJn
dik7CgoKICAgIHN0YXRpYyB2b2lkIGFkZEd1YXJkKFFPYmplY3QgKipwdHIpOwogICAgc3RhdGlj
IHZvaWQgcmVtb3ZlR3VhcmQoUU9iamVjdCAqKnB0cik7CiAgICBzdGF0aWMgdm9pZCBjaGFuZ2VH
dWFyZChRT2JqZWN0ICoqcHRyLCBRT2JqZWN0ICpvKTsKCiAgICBzdGF0aWMgYm9vbCBpbnZva2VN
ZXRob2QoUU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICptZW1iZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUXQ6OkNvbm5lY3Rpb25UeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFFHZW5lcmljUmV0dXJuQXJndW1lbnQgcmV0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFFHZW5lcmljQXJndW1lbnQgdmFsMCA9IFFHZW5lcmljQXJndW1lbnQoMCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUUdlbmVyaWNBcmd1bWVudCB2YWwxID0gUUdlbmVyaWNBcmd1
bWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW5lcmljQXJndW1lbnQgdmFs
MiA9IFFHZW5lcmljQXJndW1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR2Vu
ZXJpY0FyZ3VtZW50IHZhbDMgPSBRR2VuZXJpY0FyZ3VtZW50KCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUUdlbmVyaWNBcmd1bWVudCB2YWw0ID0gUUdlbmVyaWNBcmd1bWVudCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW5lcmljQXJndW1lbnQgdmFsNSA9IFFHZW5l
cmljQXJndW1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR2VuZXJpY0FyZ3Vt
ZW50IHZhbDYgPSBRR2VuZXJpY0FyZ3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUUdlbmVyaWNBcmd1bWVudCB2YWw3ID0gUUdlbmVyaWNBcmd1bWVudCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFFHZW5lcmljQXJndW1lbnQgdmFsOCA9IFFHZW5lcmljQXJndW1l
bnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDkg
PSBRR2VuZXJpY0FyZ3VtZW50KCkpOwoKICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnZva2VNZXRo
b2QoUU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICptZW1iZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUUdlbmVyaWNSZXR1cm5Bcmd1bWVudCByZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUUdlbmVyaWNBcmd1bWVudCB2YWwwID0gUUdlbmVyaWNBcmd1bWVudCgwKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDEgPSBRR2VuZXJp
Y0FyZ3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUdlbmVyaWNBcmd1bWVu
dCB2YWwyID0gUUdlbmVyaWNBcmd1bWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFFHZW5lcmljQXJndW1lbnQgdmFsMyA9IFFHZW5lcmljQXJndW1lbnQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDQgPSBRR2VuZXJpY0FyZ3VtZW50
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUdlbmVyaWNBcmd1bWVudCB2YWw1ID0g
UUdlbmVyaWNBcmd1bWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW5lcmlj
QXJndW1lbnQgdmFsNiA9IFFHZW5lcmljQXJndW1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDcgPSBRR2VuZXJpY0FyZ3VtZW50KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUUdlbmVyaWNBcmd1bWVudCB2YWw4ID0gUUdlbmVyaWNB
cmd1bWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW5lcmljQXJndW1lbnQg
dmFsOSA9IFFHZW5lcmljQXJndW1lbnQoKSkKICAgIHsKICAgICAgICByZXR1cm4gaW52b2tlTWV0
aG9kKG9iaiwgbWVtYmVyLCBRdDo6QXV0b0Nvbm5lY3Rpb24sIHJldCwgdmFsMCwgdmFsMSwgdmFs
MiwgdmFsMywKICAgICAgICAgICAgICAgIHZhbDQsIHZhbDUsIHZhbDYsIHZhbDcsIHZhbDgsIHZh
bDkpOwogICAgfQoKICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnZva2VNZXRob2QoUU9iamVjdCAq
b2JqLCBjb25zdCBjaGFyICptZW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXQ6
OkNvbm5lY3Rpb25UeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUdlbmVy
aWNBcmd1bWVudCB2YWwwID0gUUdlbmVyaWNBcmd1bWVudCgwKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDEgPSBRR2VuZXJpY0FyZ3VtZW50KCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUUdlbmVyaWNBcmd1bWVudCB2YWwyID0gUUdlbmVy
aWNBcmd1bWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW5lcmljQXJndW1l
bnQgdmFsMyA9IFFHZW5lcmljQXJndW1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBRR2VuZXJpY0FyZ3VtZW50IHZhbDQgPSBRR2VuZXJpY0FyZ3VtZW50KCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUUdlbmVyaWNBcmd1bWVudCB2YWw1ID0gUUdlbmVyaWNBcmd1bWVu
dCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW5lcmljQXJndW1lbnQgdmFsNiA9
IFFHZW5lcmljQXJndW1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR2VuZXJp
Y0FyZ3VtZW50IHZhbDcgPSBRR2VuZXJpY0FyZ3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUUdlbmVyaWNBcmd1bWVudCB2YWw4ID0gUUdlbmVyaWNBcmd1bWVudCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW5lcmljQXJndW1lbnQgdmFsOSA9IFFHZW5lcmlj
QXJndW1lbnQoKSkKICAgIHsKICAgICAgICByZXR1cm4gaW52b2tlTWV0aG9kKG9iaiwgbWVtYmVy
LCB0eXBlLCBRR2VuZXJpY1JldHVybkFyZ3VtZW50KCksIHZhbDAsIHZhbDEsIHZhbDIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbDMsIHZhbDQsIHZhbDUsIHZhbDYsIHZhbDcs
IHZhbDgsIHZhbDkpOwogICAgfQoKICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnZva2VNZXRob2Qo
UU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICptZW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUUdlbmVyaWNBcmd1bWVudCB2YWwwID0gUUdlbmVyaWNBcmd1bWVudCgwKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDEgPSBRR2VuZXJpY0Fy
Z3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUdlbmVyaWNBcmd1bWVudCB2
YWwyID0gUUdlbmVyaWNBcmd1bWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFH
ZW5lcmljQXJndW1lbnQgdmFsMyA9IFFHZW5lcmljQXJndW1lbnQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDQgPSBRR2VuZXJpY0FyZ3VtZW50KCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUdlbmVyaWNBcmd1bWVudCB2YWw1ID0gUUdl
bmVyaWNBcmd1bWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW5lcmljQXJn
dW1lbnQgdmFsNiA9IFFHZW5lcmljQXJndW1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDcgPSBRR2VuZXJpY0FyZ3VtZW50KCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUUdlbmVyaWNBcmd1bWVudCB2YWw4ID0gUUdlbmVyaWNBcmd1
bWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW5lcmljQXJndW1lbnQgdmFs
OSA9IFFHZW5lcmljQXJndW1lbnQoKSkKICAgIHsKICAgICAgICByZXR1cm4gaW52b2tlTWV0aG9k
KG9iaiwgbWVtYmVyLCBRdDo6QXV0b0Nvbm5lY3Rpb24sIFFHZW5lcmljUmV0dXJuQXJndW1lbnQo
KSwgdmFsMCwKICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIsIHZhbDMsIHZhbDQsIHZhbDUsIHZh
bDYsIHZhbDcsIHZhbDgsIHZhbDkpOwogICAgfQoKICAgIFFPYmplY3QgKm5ld0luc3RhbmNlKFFH
ZW5lcmljQXJndW1lbnQgdmFsMCA9IFFHZW5lcmljQXJndW1lbnQoMCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDEgPSBRR2VuZXJpY0FyZ3VtZW50KCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDIgPSBRR2VuZXJpY0Fy
Z3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDMg
PSBRR2VuZXJpY0FyZ3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICBRR2VuZXJpY0Fy
Z3VtZW50IHZhbDQgPSBRR2VuZXJpY0FyZ3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICBRR2VuZXJpY0FyZ3VtZW50IHZhbDUgPSBRR2VuZXJpY0FyZ3VtZW50KCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDYgPSBRR2VuZXJpY0FyZ3VtZW50KCks
CiAgICAgICAgICAgICAgICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZhbDcgPSBRR2VuZXJp
Y0FyZ3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICBRR2VuZXJpY0FyZ3VtZW50IHZh
bDggPSBRR2VuZXJpY0FyZ3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICBRR2VuZXJp
Y0FyZ3VtZW50IHZhbDkgPSBRR2VuZXJpY0FyZ3VtZW50KCkpIGNvbnN0OwoKICAgIGVudW0gQ2Fs
bCB7CiAgICAgICAgSW52b2tlTWV0YU1ldGhvZCwKICAgICAgICBSZWFkUHJvcGVydHksCiAgICAg
ICAgV3JpdGVQcm9wZXJ0eSwKICAgICAgICBSZXNldFByb3BlcnR5LAogICAgICAgIFF1ZXJ5UHJv
cGVydHlEZXNpZ25hYmxlLAogICAgICAgIFF1ZXJ5UHJvcGVydHlTY3JpcHRhYmxlLAogICAgICAg
IFF1ZXJ5UHJvcGVydHlTdG9yZWQsCiAgICAgICAgUXVlcnlQcm9wZXJ0eUVkaXRhYmxlLAogICAg
ICAgIFF1ZXJ5UHJvcGVydHlVc2VyLAogICAgICAgIENyZWF0ZUluc3RhbmNlCiAgICB9OwoKICAg
IGludCBzdGF0aWNfbWV0YWNhbGwoQ2FsbCwgaW50LCB2b2lkICoqKSBjb25zdDsKICAgIHN0YXRp
YyBpbnQgbWV0YWNhbGwoUU9iamVjdCAqLCBDYWxsLCBpbnQsIHZvaWQgKiopOwoKCgoKCiAgICBz
dHJ1Y3QgewogICAgICAgIGNvbnN0IFFNZXRhT2JqZWN0ICpzdXBlcmRhdGE7CiAgICAgICAgY29u
c3QgY2hhciAqc3RyaW5nZGF0YTsKICAgICAgICBjb25zdCB1aW50ICpkYXRhOwogICAgICAgIGNv
bnN0IHZvaWQgKmV4dHJhZGF0YTsKICAgIH0gZDsKCn07Cgp0eXBlZGVmIGNvbnN0IFFNZXRhT2Jq
ZWN0JiAoKlFNZXRhT2JqZWN0QWNjZXNzb3IpKCk7CgpzdHJ1Y3QgUU1ldGFPYmplY3RFeHRyYURh
dGEKewoKCgogICAgY29uc3QgUU1ldGFPYmplY3QgKipvYmplY3RzOwoKICAgIGludCAoKnN0YXRp
Y19tZXRhY2FsbCkoUU1ldGFPYmplY3Q6OkNhbGwsIGludCwgdm9pZCAqKik7Cn07CgppbmxpbmUg
Y29uc3QgY2hhciAqUU1ldGFPYmplY3Q6OmNsYXNzTmFtZSgpIGNvbnN0CnsgcmV0dXJuIGQuc3Ry
aW5nZGF0YTsgfQoKaW5saW5lIGNvbnN0IFFNZXRhT2JqZWN0ICpRTWV0YU9iamVjdDo6c3VwZXJD
bGFzcygpIGNvbnN0CnsgcmV0dXJuIGQuc3VwZXJkYXRhOyB9CgoKCgoKCgoKCiMgNDggIi9vcHQv
bG9jYWwvaW5jbHVkZS9RdENvcmUvcW9iamVjdC5oIiAyCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRl
L1F0Q29yZS9xc3RyaW5nLmgiIDEKIyA0MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xc3Ry
aW5nLmgiCiNkZWZpbmUgUVNUUklOR19IIAoKIyAxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3Jl
L3FjaGFyLmgiIDEKIyA0MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xY2hhci5oIgojZGVm
aW5lIFFDSEFSX0ggCgoKCgoKCgp0eXBlZGVmIFF0VmFsaWRMaWNlbnNlRm9yQ29yZU1vZHVsZSBR
dENvcmVNb2R1bGU7CgpjbGFzcyBRU3RyaW5nOwoKc3RydWN0IFFMYXRpbjFDaGFyCnsKcHVibGlj
OgogICAgaW5saW5lIGV4cGxpY2l0IFFMYXRpbjFDaGFyKGNoYXIgYykgOiBjaChjKSB7fQoKCgoK
ICAgIGlubGluZSBjaGFyIHRvTGF0aW4xKCkgY29uc3QgeyByZXR1cm4gY2g7IH0KICAgIGlubGlu
ZSB1c2hvcnQgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIHVzaG9ydCh1Y2hhcihjaCkpOyB9CgoK
cHJpdmF0ZToKICAgIGNoYXIgY2g7Cn07CgoKY2xhc3MgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgUUNoYXIgewpwdWJsaWM6CiAgICBRQ2hhcigpOwoKICAgIFFDaGFyKGNo
YXIgYyk7CiAgICBRQ2hhcih1Y2hhciBjKTsKCiAgICBRQ2hhcihRTGF0aW4xQ2hhciBjaCk7CiAg
ICBRQ2hhcih1Y2hhciBjLCB1Y2hhciByKTsKICAgIGlubGluZSBRQ2hhcih1c2hvcnQgcmMpIDog
dWNzKHJjKXt9CiAgICBRQ2hhcihzaG9ydCByYyk7CiAgICBRQ2hhcih1aW50IHJjKTsKICAgIFFD
aGFyKGludCByYyk7CiAgICBlbnVtIFNwZWNpYWxDaGFyYWN0ZXIgewogICAgICAgIE51bGwgPSAw
eDAwMDAsCiAgICAgICAgTmJzcCA9IDB4MDBhMCwKICAgICAgICBSZXBsYWNlbWVudENoYXJhY3Rl
ciA9IDB4ZmZmZCwKICAgICAgICBPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlciA9IDB4ZmZmYywK
ICAgICAgICBCeXRlT3JkZXJNYXJrID0gMHhmZWZmLAogICAgICAgIEJ5dGVPcmRlclN3YXBwZWQg
PSAweGZmZmUsCgoKCgoKCgogICAgICAgIFBhcmFncmFwaFNlcGFyYXRvciA9IDB4MjAyOSwKICAg
ICAgICBMaW5lU2VwYXJhdG9yID0gMHgyMDI4CiAgICB9OwogICAgUUNoYXIoU3BlY2lhbENoYXJh
Y3RlciBzYyk7CgoKCiAgICBlbnVtIENhdGVnb3J5CiAgICB7CiAgICAgICAgTm9DYXRlZ29yeSwK
CiAgICAgICAgTWFya19Ob25TcGFjaW5nLAogICAgICAgIE1hcmtfU3BhY2luZ0NvbWJpbmluZywK
ICAgICAgICBNYXJrX0VuY2xvc2luZywKCiAgICAgICAgTnVtYmVyX0RlY2ltYWxEaWdpdCwKICAg
ICAgICBOdW1iZXJfTGV0dGVyLAogICAgICAgIE51bWJlcl9PdGhlciwKCiAgICAgICAgU2VwYXJh
dG9yX1NwYWNlLAogICAgICAgIFNlcGFyYXRvcl9MaW5lLAogICAgICAgIFNlcGFyYXRvcl9QYXJh
Z3JhcGgsCgogICAgICAgIE90aGVyX0NvbnRyb2wsCiAgICAgICAgT3RoZXJfRm9ybWF0LAogICAg
ICAgIE90aGVyX1N1cnJvZ2F0ZSwKICAgICAgICBPdGhlcl9Qcml2YXRlVXNlLAogICAgICAgIE90
aGVyX05vdEFzc2lnbmVkLAoKICAgICAgICBMZXR0ZXJfVXBwZXJjYXNlLAogICAgICAgIExldHRl
cl9Mb3dlcmNhc2UsCiAgICAgICAgTGV0dGVyX1RpdGxlY2FzZSwKICAgICAgICBMZXR0ZXJfTW9k
aWZpZXIsCiAgICAgICAgTGV0dGVyX090aGVyLAoKICAgICAgICBQdW5jdHVhdGlvbl9Db25uZWN0
b3IsCiAgICAgICAgUHVuY3R1YXRpb25fRGFzaCwKICAgICAgICBQdW5jdHVhdGlvbl9PcGVuLAog
ICAgICAgIFB1bmN0dWF0aW9uX0Nsb3NlLAogICAgICAgIFB1bmN0dWF0aW9uX0luaXRpYWxRdW90
ZSwKICAgICAgICBQdW5jdHVhdGlvbl9GaW5hbFF1b3RlLAogICAgICAgIFB1bmN0dWF0aW9uX090
aGVyLAoKICAgICAgICBTeW1ib2xfTWF0aCwKICAgICAgICBTeW1ib2xfQ3VycmVuY3ksCiAgICAg
ICAgU3ltYm9sX01vZGlmaWVyLAogICAgICAgIFN5bWJvbF9PdGhlciwKCiAgICAgICAgUHVuY3R1
YXRpb25fRGFzayA9IFB1bmN0dWF0aW9uX0Rhc2gKICAgIH07CgogICAgZW51bSBEaXJlY3Rpb24K
ICAgIHsKICAgICAgICBEaXJMLCBEaXJSLCBEaXJFTiwgRGlyRVMsIERpckVULCBEaXJBTiwgRGly
Q1MsIERpckIsIERpclMsIERpcldTLCBEaXJPTiwKICAgICAgICBEaXJMUkUsIERpckxSTywgRGly
QUwsIERpclJMRSwgRGlyUkxPLCBEaXJQREYsIERpck5TTSwgRGlyQk4KICAgIH07CgogICAgZW51
bSBEZWNvbXBvc2l0aW9uCiAgICB7CiAgICAgICAgTm9EZWNvbXBvc2l0aW9uLAogICAgICAgIENh
bm9uaWNhbCwKICAgICAgICBGb250LAogICAgICAgIE5vQnJlYWssCiAgICAgICAgSW5pdGlhbCwK
ICAgICAgICBNZWRpYWwsCiAgICAgICAgRmluYWwsCiAgICAgICAgSXNvbGF0ZWQsCiAgICAgICAg
Q2lyY2xlLAogICAgICAgIFN1cGVyLAogICAgICAgIFN1YiwKICAgICAgICBWZXJ0aWNhbCwKICAg
ICAgICBXaWRlLAogICAgICAgIE5hcnJvdywKICAgICAgICBTbWFsbCwKICAgICAgICBTcXVhcmUs
CiAgICAgICAgQ29tcGF0LAogICAgICAgIEZyYWN0aW9uCgoKCgogICAgfTsKCiAgICBlbnVtIEpv
aW5pbmcKICAgIHsKICAgICAgICBPdGhlckpvaW5pbmcsIER1YWwsIFJpZ2h0LCBDZW50ZXIKICAg
IH07CgogICAgZW51bSBDb21iaW5pbmdDbGFzcwogICAgewogICAgICAgIENvbWJpbmluZ19CZWxv
d0xlZnRBdHRhY2hlZCA9IDIwMCwKICAgICAgICBDb21iaW5pbmdfQmVsb3dBdHRhY2hlZCA9IDIw
MiwKICAgICAgICBDb21iaW5pbmdfQmVsb3dSaWdodEF0dGFjaGVkID0gMjA0LAogICAgICAgIENv
bWJpbmluZ19MZWZ0QXR0YWNoZWQgPSAyMDgsCiAgICAgICAgQ29tYmluaW5nX1JpZ2h0QXR0YWNo
ZWQgPSAyMTAsCiAgICAgICAgQ29tYmluaW5nX0Fib3ZlTGVmdEF0dGFjaGVkID0gMjEyLAogICAg
ICAgIENvbWJpbmluZ19BYm92ZUF0dGFjaGVkID0gMjE0LAogICAgICAgIENvbWJpbmluZ19BYm92
ZVJpZ2h0QXR0YWNoZWQgPSAyMTYsCgogICAgICAgIENvbWJpbmluZ19CZWxvd0xlZnQgPSAyMTgs
CiAgICAgICAgQ29tYmluaW5nX0JlbG93ID0gMjIwLAogICAgICAgIENvbWJpbmluZ19CZWxvd1Jp
Z2h0ID0gMjIyLAogICAgICAgIENvbWJpbmluZ19MZWZ0ID0gMjI0LAogICAgICAgIENvbWJpbmlu
Z19SaWdodCA9IDIyNiwKICAgICAgICBDb21iaW5pbmdfQWJvdmVMZWZ0ID0gMjI4LAogICAgICAg
IENvbWJpbmluZ19BYm92ZSA9IDIzMCwKICAgICAgICBDb21iaW5pbmdfQWJvdmVSaWdodCA9IDIz
MiwKCiAgICAgICAgQ29tYmluaW5nX0RvdWJsZUJlbG93ID0gMjMzLAogICAgICAgIENvbWJpbmlu
Z19Eb3VibGVBYm92ZSA9IDIzNCwKICAgICAgICBDb21iaW5pbmdfSW90YVN1YnNjcmlwdCA9IDI0
MAogICAgfTsKCiAgICBlbnVtIFVuaWNvZGVWZXJzaW9uIHsKICAgICAgICBVbmljb2RlX1VuYXNz
aWduZWQsCiAgICAgICAgVW5pY29kZV8xXzEsCiAgICAgICAgVW5pY29kZV8yXzAsCiAgICAgICAg
VW5pY29kZV8yXzFfMiwKICAgICAgICBVbmljb2RlXzNfMCwKICAgICAgICBVbmljb2RlXzNfMSwK
ICAgICAgICBVbmljb2RlXzNfMiwKICAgICAgICBVbmljb2RlXzRfMCwKICAgICAgICBVbmljb2Rl
XzRfMSwKICAgICAgICBVbmljb2RlXzVfMAogICAgfTsKCgogICAgQ2F0ZWdvcnkgY2F0ZWdvcnko
KSBjb25zdDsKICAgIERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdDsKICAgIEpvaW5pbmcgam9p
bmluZygpIGNvbnN0OwogICAgYm9vbCBoYXNNaXJyb3JlZCgpIGNvbnN0OwogICAgdW5zaWduZWQg
Y2hhciBjb21iaW5pbmdDbGFzcygpIGNvbnN0OwoKICAgIFFDaGFyIG1pcnJvcmVkQ2hhcigpIGNv
bnN0OwogICAgUVN0cmluZyBkZWNvbXBvc2l0aW9uKCkgY29uc3Q7CiAgICBEZWNvbXBvc2l0aW9u
IGRlY29tcG9zaXRpb25UYWcoKSBjb25zdDsKCiAgICBpbnQgZGlnaXRWYWx1ZSgpIGNvbnN0Owog
ICAgUUNoYXIgdG9Mb3dlcigpIGNvbnN0OwogICAgUUNoYXIgdG9VcHBlcigpIGNvbnN0OwogICAg
UUNoYXIgdG9UaXRsZUNhc2UoKSBjb25zdDsKICAgIFFDaGFyIHRvQ2FzZUZvbGRlZCgpIGNvbnN0
OwoKICAgIFVuaWNvZGVWZXJzaW9uIHVuaWNvZGVWZXJzaW9uKCkgY29uc3Q7CgoKCgoKCiAgICBj
aGFyIHRvQXNjaWkoKSBjb25zdDsKICAgIGlubGluZSBjaGFyIHRvTGF0aW4xKCkgY29uc3Q7CiAg
ICBpbmxpbmUgdXNob3J0IHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiB1Y3M7IH0KCgogICAgaW5s
aW5lIHVzaG9ydCAmdW5pY29kZSgpIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8dXNob3J0Jj4odWNzKTsg
fQoKCgoKICAgIHN0YXRpYyBRQ2hhciBmcm9tQXNjaWkoY2hhciBjKTsKICAgIHN0YXRpYyBRQ2hh
ciBmcm9tTGF0aW4xKGNoYXIgYyk7CgogICAgaW5saW5lIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gdWNzID09IDA7IH0KICAgIGJvb2wgaXNQcmludCgpIGNvbnN0OwogICAgYm9vbCBpc1B1
bmN0KCkgY29uc3Q7CiAgICBib29sIGlzU3BhY2UoKSBjb25zdDsKICAgIGJvb2wgaXNNYXJrKCkg
Y29uc3Q7CiAgICBib29sIGlzTGV0dGVyKCkgY29uc3Q7CiAgICBib29sIGlzTnVtYmVyKCkgY29u
c3Q7CiAgICBib29sIGlzTGV0dGVyT3JOdW1iZXIoKSBjb25zdDsKICAgIGJvb2wgaXNEaWdpdCgp
IGNvbnN0OwogICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAgaW5saW5lIGJvb2wgaXNMb3dl
cigpIGNvbnN0IHsgcmV0dXJuIGNhdGVnb3J5KCkgPT0gTGV0dGVyX0xvd2VyY2FzZTsgfQogICAg
aW5saW5lIGJvb2wgaXNVcHBlcigpIGNvbnN0IHsgcmV0dXJuIGNhdGVnb3J5KCkgPT0gTGV0dGVy
X1VwcGVyY2FzZTsgfQogICAgaW5saW5lIGJvb2wgaXNUaXRsZUNhc2UoKSBjb25zdCB7IHJldHVy
biBjYXRlZ29yeSgpID09IExldHRlcl9UaXRsZWNhc2U7IH0KCiAgICBpbmxpbmUgYm9vbCBpc0hp
Z2hTdXJyb2dhdGUoKSBjb25zdCB7CiAgICAgICAgcmV0dXJuICgodWNzICYgMHhmYzAwKSA9PSAw
eGQ4MDApOwogICAgfQogICAgaW5saW5lIGJvb2wgaXNMb3dTdXJyb2dhdGUoKSBjb25zdCB7CiAg
ICAgICAgcmV0dXJuICgodWNzICYgMHhmYzAwKSA9PSAweGRjMDApOwogICAgfQoKICAgIGlubGlu
ZSB1Y2hhciBjZWxsKCkgY29uc3QgeyByZXR1cm4gdWNoYXIodWNzICYgMHhmZik7IH0KICAgIGlu
bGluZSB1Y2hhciByb3coKSBjb25zdCB7IHJldHVybiB1Y2hhcigodWNzPj44KSYweGZmKTsgfQog
ICAgaW5saW5lIHZvaWQgc2V0Q2VsbCh1Y2hhciBjZWxsKTsKICAgIGlubGluZSB2b2lkIHNldFJv
dyh1Y2hhciByb3cpOwoKICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0hpZ2hTdXJyb2dhdGUodWlu
dCB1Y3M0KSB7CiAgICAgICAgcmV0dXJuICgodWNzNCAmIDB4ZmZmZmZjMDApID09IDB4ZDgwMCk7
CiAgICB9CiAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNMb3dTdXJyb2dhdGUodWludCB1Y3M0KSB7
CiAgICAgICAgcmV0dXJuICgodWNzNCAmIDB4ZmZmZmZjMDApID09IDB4ZGMwMCk7CiAgICB9CiAg
ICBzdGF0aWMgaW5saW5lIGJvb2wgcmVxdWlyZXNTdXJyb2dhdGVzKHVpbnQgdWNzNCkgewogICAg
ICAgIHJldHVybiAodWNzNCA+PSAweDEwMDAwKTsKICAgIH0KICAgIHN0YXRpYyBpbmxpbmUgdWlu
dCBzdXJyb2dhdGVUb1VjczQodXNob3J0IGhpZ2gsIHVzaG9ydCBsb3cpIHsKICAgICAgICByZXR1
cm4gKHVpbnQoaGlnaCk8PDEwKSArIGxvdyAtIDB4MzVmZGMwMDsKICAgIH0KICAgIHN0YXRpYyBp
bmxpbmUgdWludCBzdXJyb2dhdGVUb1VjczQoUUNoYXIgaGlnaCwgUUNoYXIgbG93KSB7CiAgICAg
ICAgcmV0dXJuICh1aW50KGhpZ2gudWNzKTw8MTApICsgbG93LnVjcyAtIDB4MzVmZGMwMDsKICAg
IH0KICAgIHN0YXRpYyBpbmxpbmUgdXNob3J0IGhpZ2hTdXJyb2dhdGUodWludCB1Y3M0KSB7CiAg
ICAgICAgcmV0dXJuIHVzaG9ydCgodWNzND4+MTApICsgMHhkN2MwKTsKICAgIH0KICAgIHN0YXRp
YyBpbmxpbmUgdXNob3J0IGxvd1N1cnJvZ2F0ZSh1aW50IHVjczQpIHsKICAgICAgICByZXR1cm4g
dXNob3J0KHVjczQlMHg0MDAgKyAweGRjMDApOwogICAgfQoKICAgIHN0YXRpYyBDYXRlZ29yeSBj
YXRlZ29yeSh1aW50IHVjczQpOwogICAgc3RhdGljIENhdGVnb3J5IGNhdGVnb3J5KHVzaG9ydCB1
Y3MyKTsKICAgIHN0YXRpYyBEaXJlY3Rpb24gZGlyZWN0aW9uKHVpbnQgdWNzNCk7CiAgICBzdGF0
aWMgRGlyZWN0aW9uIGRpcmVjdGlvbih1c2hvcnQgdWNzMik7CiAgICBzdGF0aWMgSm9pbmluZyBq
b2luaW5nKHVpbnQgdWNzNCk7CiAgICBzdGF0aWMgSm9pbmluZyBqb2luaW5nKHVzaG9ydCB1Y3My
KTsKICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKHVpbnQgdWNzNCk7CiAg
ICBzdGF0aWMgdW5zaWduZWQgY2hhciBjb21iaW5pbmdDbGFzcyh1c2hvcnQgdWNzMik7CgogICAg
c3RhdGljIHVpbnQgbWlycm9yZWRDaGFyKHVpbnQgdWNzNCk7CiAgICBzdGF0aWMgdXNob3J0IG1p
cnJvcmVkQ2hhcih1c2hvcnQgdWNzMik7CiAgICBzdGF0aWMgRGVjb21wb3NpdGlvbiBkZWNvbXBv
c2l0aW9uVGFnKHVpbnQgdWNzNCk7CgogICAgc3RhdGljIGludCBkaWdpdFZhbHVlKHVpbnQgdWNz
NCk7CiAgICBzdGF0aWMgaW50IGRpZ2l0VmFsdWUodXNob3J0IHVjczIpOwogICAgc3RhdGljIHVp
bnQgdG9Mb3dlcih1aW50IHVjczQpOwogICAgc3RhdGljIHVzaG9ydCB0b0xvd2VyKHVzaG9ydCB1
Y3MyKTsKICAgIHN0YXRpYyB1aW50IHRvVXBwZXIodWludCB1Y3M0KTsKICAgIHN0YXRpYyB1c2hv
cnQgdG9VcHBlcih1c2hvcnQgdWNzMik7CiAgICBzdGF0aWMgdWludCB0b1RpdGxlQ2FzZSh1aW50
IHVjczQpOwogICAgc3RhdGljIHVzaG9ydCB0b1RpdGxlQ2FzZSh1c2hvcnQgdWNzMik7CiAgICBz
dGF0aWMgdWludCB0b0Nhc2VGb2xkZWQodWludCB1Y3M0KTsKICAgIHN0YXRpYyB1c2hvcnQgdG9D
YXNlRm9sZGVkKHVzaG9ydCB1Y3MyKTsKCiAgICBzdGF0aWMgVW5pY29kZVZlcnNpb24gdW5pY29k
ZVZlcnNpb24odWludCB1Y3M0KTsKICAgIHN0YXRpYyBVbmljb2RlVmVyc2lvbiB1bmljb2RlVmVy
c2lvbih1c2hvcnQgdWNzMik7CgogICAgc3RhdGljIFFTdHJpbmcgZGVjb21wb3NpdGlvbih1aW50
IHVjczQpOwojIDM1NSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xY2hhci5oIgpwcml2YXRl
OgoKCgoKICAgIHVzaG9ydCB1Y3M7Cn07Cgp0ZW1wbGF0ZSA8PiBjbGFzcyBRVHlwZUluZm88UUNo
YXIgPiB7IHB1YmxpYzogZW51bSB7IGlzQ29tcGxleCA9ICgoKFFfTU9WQUJMRV9UWVBFKSAmIFFf
UFJJTUlUSVZFX1RZUEUpID09IDApLCBpc1N0YXRpYyA9ICgoKFFfTU9WQUJMRV9UWVBFKSAmIChR
X01PVkFCTEVfVFlQRSB8IFFfUFJJTUlUSVZFX1RZUEUpKSA9PSAwKSwgaXNMYXJnZSA9IChzaXpl
b2YoUUNoYXIpPnNpemVvZih2b2lkKikpLCBpc1BvaW50ZXIgPSBmYWxzZSwgaXNEdW1teSA9ICgo
KFFfTU9WQUJMRV9UWVBFKSAmIFFfRFVNTVlfVFlQRSkgIT0gMCkgfTsgc3RhdGljIGlubGluZSBj
b25zdCBjaGFyICpuYW1lKCkgeyByZXR1cm4gIlFDaGFyIjsgfSB9OwoKaW5saW5lIFFDaGFyOjpR
Q2hhcigpIDogdWNzKDApIHt9CgoKCgppbmxpbmUgY2hhciBRQ2hhcjo6dG9MYXRpbjEoKSBjb25z
dCB7IHJldHVybiB1Y3MgPiAweGZmID8gJ1wwJyA6IGNoYXIodWNzKTsgfQoKaW5saW5lIFFDaGFy
IFFDaGFyOjpmcm9tTGF0aW4xKGNoYXIgYykgeyByZXR1cm4gUUNoYXIodXNob3J0KHVjaGFyKGMp
KSk7IH0KCmlubGluZSBRQ2hhcjo6UUNoYXIodWNoYXIgYywgdWNoYXIgcikgOiB1Y3ModXNob3J0
KChyIDw8IDgpIHwgYykpe30KaW5saW5lIFFDaGFyOjpRQ2hhcihzaG9ydCByYykgOiB1Y3ModXNo
b3J0KHJjKSl7fQppbmxpbmUgUUNoYXI6OlFDaGFyKHVpbnQgcmMpIDogdWNzKHVzaG9ydChyYyAm
IDB4ZmZmZikpe30KaW5saW5lIFFDaGFyOjpRQ2hhcihpbnQgcmMpIDogdWNzKHVzaG9ydChyYyAm
IDB4ZmZmZikpe30KaW5saW5lIFFDaGFyOjpRQ2hhcihTcGVjaWFsQ2hhcmFjdGVyIHMpIDogdWNz
KHVzaG9ydChzKSkge30KaW5saW5lIFFDaGFyOjpRQ2hhcihRTGF0aW4xQ2hhciBjaCkgOiB1Y3Mo
Y2gudW5pY29kZSgpKSB7fQoKaW5saW5lIHZvaWQgUUNoYXI6OnNldENlbGwodWNoYXIgYWNlbGwp
CnsgdWNzID0gdXNob3J0KCh1Y3MgJiAweGZmMDApICsgYWNlbGwpOyB9CmlubGluZSB2b2lkIFFD
aGFyOjpzZXRSb3codWNoYXIgYXJvdykKeyB1Y3MgPSB1c2hvcnQoKHVzaG9ydChhcm93KTw8OCkg
KyAodWNzJjB4ZmYpKTsgfQoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShRQ2hhciBjMSwgUUNoYXIg
YzIpIHsgcmV0dXJuIGMxLnVuaWNvZGUoKSA9PSBjMi51bmljb2RlKCk7IH0KaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShRQ2hhciBjMSwgUUNoYXIgYzIpIHsgcmV0dXJuIGMxLnVuaWNvZGUoKSAhPSBj
Mi51bmljb2RlKCk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I8PShRQ2hhciBjMSwgUUNoYXIgYzIp
IHsgcmV0dXJuIGMxLnVuaWNvZGUoKSA8PSBjMi51bmljb2RlKCk7IH0KaW5saW5lIGJvb2wgb3Bl
cmF0b3I+PShRQ2hhciBjMSwgUUNoYXIgYzIpIHsgcmV0dXJuIGMxLnVuaWNvZGUoKSA+PSBjMi51
bmljb2RlKCk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I8KFFDaGFyIGMxLCBRQ2hhciBjMikgeyBy
ZXR1cm4gYzEudW5pY29kZSgpIDwgYzIudW5pY29kZSgpOyB9CmlubGluZSBib29sIG9wZXJhdG9y
PihRQ2hhciBjMSwgUUNoYXIgYzIpIHsgcmV0dXJuIGMxLnVuaWNvZGUoKSA+IGMyLnVuaWNvZGUo
KTsgfQoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFEYXRhU3RyZWFt
ICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFtICYsIGNvbnN0IFFDaGFyICYpOwpfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0YVN0
cmVhbSAmLCBRQ2hhciAmKTsKCgoKCgojIDQ2ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3Fz
dHJpbmcuaCIgMgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWJ5dGVhcnJheS5oIiAx
CiMgNDMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWJ5dGVhcnJheS5oIgojZGVmaW5lIFFC
WVRFQVJSQVlfSCAKCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xYXRvbWljLmgiIDEK
IyA0MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xYXRvbWljLmgiCiNkZWZpbmUgUUFUT01J
Q19IIAoKCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xYmFzaWNhdG9taWMuaCIgMQoj
IDQzICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FiYXNpY2F0b21pYy5oIgojZGVmaW5lIFFC
QVNJQ0FUT01JQ19IIAoKCgoKCgoKdHlwZWRlZiBRdFZhbGlkTGljZW5zZUZvckNvcmVNb2R1bGUg
UXRDb3JlTW9kdWxlOwoKY2xhc3MgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgUUJhc2ljQXRvbWljSW50CnsKcHVibGljOgojIDY0ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRD
b3JlL3FiYXNpY2F0b21pYy5oIgogICAgdm9sYXRpbGUgaW50IF9xX3ZhbHVlOwoKCgogICAgaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShpbnQgdmFsdWUpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IF9xX3ZhbHVlID09IHZhbHVlOwogICAgfQoKICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oaW50
IHZhbHVlKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBfcV92YWx1ZSAhPSB2YWx1ZTsKICAg
IH0KCiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciEoKSBjb25zdAogICAgewogICAgICAgIHJldHVy
biBfcV92YWx1ZSA9PSAwOwogICAgfQoKICAgIGlubGluZSBvcGVyYXRvciBpbnQoKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiBfcV92YWx1ZTsKICAgIH0KCiAgICBpbmxpbmUgUUJhc2ljQXRv
bWljSW50ICZvcGVyYXRvcj0oaW50IHZhbHVlKQogICAgewoKCgogICAgICAgIF9xX3ZhbHVlID0g
dmFsdWU7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKCgogICAgc3RhdGljIGJvb2wgaXNS
ZWZlcmVuY2VDb3VudGluZ05hdGl2ZSgpOwogICAgc3RhdGljIGJvb2wgaXNSZWZlcmVuY2VDb3Vu
dGluZ1dhaXRGcmVlKCk7CgogICAgYm9vbCByZWYoKTsKICAgIGJvb2wgZGVyZWYoKTsKCiAgICBz
dGF0aWMgYm9vbCBpc1Rlc3RBbmRTZXROYXRpdmUoKTsKICAgIHN0YXRpYyBib29sIGlzVGVzdEFu
ZFNldFdhaXRGcmVlKCk7CgogICAgYm9vbCB0ZXN0QW5kU2V0UmVsYXhlZChpbnQgZXhwZWN0ZWRW
YWx1ZSwgaW50IG5ld1ZhbHVlKTsKICAgIGJvb2wgdGVzdEFuZFNldEFjcXVpcmUoaW50IGV4cGVj
dGVkVmFsdWUsIGludCBuZXdWYWx1ZSk7CiAgICBib29sIHRlc3RBbmRTZXRSZWxlYXNlKGludCBl
eHBlY3RlZFZhbHVlLCBpbnQgbmV3VmFsdWUpOwogICAgYm9vbCB0ZXN0QW5kU2V0T3JkZXJlZChp
bnQgZXhwZWN0ZWRWYWx1ZSwgaW50IG5ld1ZhbHVlKTsKCiAgICBzdGF0aWMgYm9vbCBpc0ZldGNo
QW5kU3RvcmVOYXRpdmUoKTsKICAgIHN0YXRpYyBib29sIGlzRmV0Y2hBbmRTdG9yZVdhaXRGcmVl
KCk7CgogICAgaW50IGZldGNoQW5kU3RvcmVSZWxheGVkKGludCBuZXdWYWx1ZSk7CiAgICBpbnQg
ZmV0Y2hBbmRTdG9yZUFjcXVpcmUoaW50IG5ld1ZhbHVlKTsKICAgIGludCBmZXRjaEFuZFN0b3Jl
UmVsZWFzZShpbnQgbmV3VmFsdWUpOwogICAgaW50IGZldGNoQW5kU3RvcmVPcmRlcmVkKGludCBu
ZXdWYWx1ZSk7CgogICAgc3RhdGljIGJvb2wgaXNGZXRjaEFuZEFkZE5hdGl2ZSgpOwogICAgc3Rh
dGljIGJvb2wgaXNGZXRjaEFuZEFkZFdhaXRGcmVlKCk7CgogICAgaW50IGZldGNoQW5kQWRkUmVs
YXhlZChpbnQgdmFsdWVUb0FkZCk7CiAgICBpbnQgZmV0Y2hBbmRBZGRBY3F1aXJlKGludCB2YWx1
ZVRvQWRkKTsKICAgIGludCBmZXRjaEFuZEFkZFJlbGVhc2UoaW50IHZhbHVlVG9BZGQpOwogICAg
aW50IGZldGNoQW5kQWRkT3JkZXJlZChpbnQgdmFsdWVUb0FkZCk7Cn07Cgp0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KY2xhc3MgUUJhc2ljQXRvbWljUG9pbnRlcgp7CnB1YmxpYzoKIyAxNDggIi9vcHQv
bG9jYWwvaW5jbHVkZS9RdENvcmUvcWJhc2ljYXRvbWljLmgiCiAgICBUICogdm9sYXRpbGUgX3Ff
dmFsdWU7CgoKCiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQgKnZhbHVlKSBjb25zdAogICAg
ewogICAgICAgIHJldHVybiBfcV92YWx1ZSA9PSB2YWx1ZTsKICAgIH0KCiAgICBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KFQgKnZhbHVlKSBjb25zdAogICAgewogICAgICAgIHJldHVybiAhb3BlcmF0
b3I9PSh2YWx1ZSk7CiAgICB9CgogICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKICAg
IHsKICAgICAgICByZXR1cm4gb3BlcmF0b3I9PSgwKTsKICAgIH0KCiAgICBpbmxpbmUgb3BlcmF0
b3IgVCAqKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gX3FfdmFsdWU7CiAgICB9CgogICAg
aW5saW5lIFQgKm9wZXJhdG9yLT4oKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBfcV92YWx1
ZTsKICAgIH0KCiAgICBpbmxpbmUgUUJhc2ljQXRvbWljUG9pbnRlcjxUPiAmb3BlcmF0b3I9KFQg
KnZhbHVlKQogICAgewoKCgogICAgICAgIF9xX3ZhbHVlID0gdmFsdWU7CiAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgfQoKCgogICAgc3RhdGljIGJvb2wgaXNUZXN0QW5kU2V0TmF0aXZlKCk7CiAg
ICBzdGF0aWMgYm9vbCBpc1Rlc3RBbmRTZXRXYWl0RnJlZSgpOwoKICAgIGJvb2wgdGVzdEFuZFNl
dFJlbGF4ZWQoVCAqZXhwZWN0ZWRWYWx1ZSwgVCAqbmV3VmFsdWUpOwogICAgYm9vbCB0ZXN0QW5k
U2V0QWNxdWlyZShUICpleHBlY3RlZFZhbHVlLCBUICpuZXdWYWx1ZSk7CiAgICBib29sIHRlc3RB
bmRTZXRSZWxlYXNlKFQgKmV4cGVjdGVkVmFsdWUsIFQgKm5ld1ZhbHVlKTsKICAgIGJvb2wgdGVz
dEFuZFNldE9yZGVyZWQoVCAqZXhwZWN0ZWRWYWx1ZSwgVCAqbmV3VmFsdWUpOwoKICAgIHN0YXRp
YyBib29sIGlzRmV0Y2hBbmRTdG9yZU5hdGl2ZSgpOwogICAgc3RhdGljIGJvb2wgaXNGZXRjaEFu
ZFN0b3JlV2FpdEZyZWUoKTsKCiAgICBUICpmZXRjaEFuZFN0b3JlUmVsYXhlZChUICpuZXdWYWx1
ZSk7CiAgICBUICpmZXRjaEFuZFN0b3JlQWNxdWlyZShUICpuZXdWYWx1ZSk7CiAgICBUICpmZXRj
aEFuZFN0b3JlUmVsZWFzZShUICpuZXdWYWx1ZSk7CiAgICBUICpmZXRjaEFuZFN0b3JlT3JkZXJl
ZChUICpuZXdWYWx1ZSk7CgogICAgc3RhdGljIGJvb2wgaXNGZXRjaEFuZEFkZE5hdGl2ZSgpOwog
ICAgc3RhdGljIGJvb2wgaXNGZXRjaEFuZEFkZFdhaXRGcmVlKCk7CgogICAgVCAqZmV0Y2hBbmRB
ZGRSZWxheGVkKHFwdHJkaWZmIHZhbHVlVG9BZGQpOwogICAgVCAqZmV0Y2hBbmRBZGRBY3F1aXJl
KHFwdHJkaWZmIHZhbHVlVG9BZGQpOwogICAgVCAqZmV0Y2hBbmRBZGRSZWxlYXNlKHFwdHJkaWZm
IHZhbHVlVG9BZGQpOwogICAgVCAqZmV0Y2hBbmRBZGRPcmRlcmVkKHFwdHJkaWZmIHZhbHVlVG9B
ZGQpOwp9OwoKCgoKCgojZGVmaW5lIFFfQkFTSUNfQVRPTUlDX0lOSVRJQUxJWkVSKGEpIHsgKGEp
IH0KCgoKCgoKCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWF0b21pY19hcmNoLmgi
IDEKIyA0MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xYXRvbWljX2FyY2guaCIKI2RlZmlu
ZSBRQVRPTUlDX0FSQ0hfSCAKCgojIDY4ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FhdG9t
aWNfYXJjaC5oIgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWF0b21pY19tYWNvc3gu
aCIgMQojIDQzICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FhdG9taWNfbWFjb3N4LmgiCiNk
ZWZpbmUgUUFUT01JQ19NQUNPU1hfSCAKCgoKCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29y
ZS9xYXRvbWljX3g4Nl82NC5oIiAxCiMgNDMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWF0
b21pY194ODZfNjQuaCIKI2RlZmluZSBRQVRPTUlDX1g4Nl82NF9IIAoKCgoKCiNkZWZpbmUgUV9B
VE9NSUNfSU5UX1JFRkVSRU5DRV9DT1VOVElOR19JU19BTFdBWVNfTkFUSVZFIAojZGVmaW5lIFFf
QVRPTUlDX0lOVF9SRUZFUkVOQ0VfQ09VTlRJTkdfSVNfV0FJVF9GUkVFIAoKaW5saW5lIGJvb2wg
UUJhc2ljQXRvbWljSW50Ojppc1JlZmVyZW5jZUNvdW50aW5nTmF0aXZlKCkKeyByZXR1cm4gdHJ1
ZTsgfQppbmxpbmUgYm9vbCBRQmFzaWNBdG9taWNJbnQ6OmlzUmVmZXJlbmNlQ291bnRpbmdXYWl0
RnJlZSgpCnsgcmV0dXJuIHRydWU7IH0KCiNkZWZpbmUgUV9BVE9NSUNfSU5UX1RFU1RfQU5EX1NF
VF9JU19BTFdBWVNfTkFUSVZFIAojZGVmaW5lIFFfQVRPTUlDX0lOVF9URVNUX0FORF9TRVRfSVNf
V0FJVF9GUkVFIAoKaW5saW5lIGJvb2wgUUJhc2ljQXRvbWljSW50Ojppc1Rlc3RBbmRTZXROYXRp
dmUoKQp7IHJldHVybiB0cnVlOyB9CmlubGluZSBib29sIFFCYXNpY0F0b21pY0ludDo6aXNUZXN0
QW5kU2V0V2FpdEZyZWUoKQp7IHJldHVybiB0cnVlOyB9CgojZGVmaW5lIFFfQVRPTUlDX0lOVF9G
RVRDSF9BTkRfU1RPUkVfSVNfQUxXQVlTX05BVElWRSAKI2RlZmluZSBRX0FUT01JQ19JTlRfRkVU
Q0hfQU5EX1NUT1JFX0lTX1dBSVRfRlJFRSAKCmlubGluZSBib29sIFFCYXNpY0F0b21pY0ludDo6
aXNGZXRjaEFuZFN0b3JlTmF0aXZlKCkKeyByZXR1cm4gdHJ1ZTsgfQppbmxpbmUgYm9vbCBRQmFz
aWNBdG9taWNJbnQ6OmlzRmV0Y2hBbmRTdG9yZVdhaXRGcmVlKCkKeyByZXR1cm4gdHJ1ZTsgfQoK
I2RlZmluZSBRX0FUT01JQ19JTlRfRkVUQ0hfQU5EX0FERF9JU19BTFdBWVNfTkFUSVZFIAojZGVm
aW5lIFFfQVRPTUlDX0lOVF9GRVRDSF9BTkRfQUREX0lTX1dBSVRfRlJFRSAKCmlubGluZSBib29s
IFFCYXNpY0F0b21pY0ludDo6aXNGZXRjaEFuZEFkZE5hdGl2ZSgpCnsgcmV0dXJuIHRydWU7IH0K
aW5saW5lIGJvb2wgUUJhc2ljQXRvbWljSW50Ojppc0ZldGNoQW5kQWRkV2FpdEZyZWUoKQp7IHJl
dHVybiB0cnVlOyB9CgojZGVmaW5lIFFfQVRPTUlDX1BPSU5URVJfVEVTVF9BTkRfU0VUX0lTX0FM
V0FZU19OQVRJVkUgCiNkZWZpbmUgUV9BVE9NSUNfUE9JTlRFUl9URVNUX0FORF9TRVRfSVNfV0FJ
VF9GUkVFIAoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSBib29sIFFCYXNpY0F0b21pY1Bv
aW50ZXI8VD46OmlzVGVzdEFuZFNldE5hdGl2ZSgpCnsgcmV0dXJuIHRydWU7IH0KdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CmlubGluZSBib29sIFFCYXNpY0F0b21pY1BvaW50ZXI8VD46OmlzVGVzdEFu
ZFNldFdhaXRGcmVlKCkKeyByZXR1cm4gdHJ1ZTsgfQoKI2RlZmluZSBRX0FUT01JQ19QT0lOVEVS
X0ZFVENIX0FORF9TVE9SRV9JU19BTFdBWVNfTkFUSVZFIAojZGVmaW5lIFFfQVRPTUlDX1BPSU5U
RVJfRkVUQ0hfQU5EX1NUT1JFX0lTX1dBSVRfRlJFRSAKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpp
bmxpbmUgYm9vbCBRQmFzaWNBdG9taWNQb2ludGVyPFQ+Ojppc0ZldGNoQW5kU3RvcmVOYXRpdmUo
KQp7IHJldHVybiB0cnVlOyB9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgYm9vbCBRQmFz
aWNBdG9taWNQb2ludGVyPFQ+Ojppc0ZldGNoQW5kU3RvcmVXYWl0RnJlZSgpCnsgcmV0dXJuIHRy
dWU7IH0KCiNkZWZpbmUgUV9BVE9NSUNfUE9JTlRFUl9GRVRDSF9BTkRfQUREX0lTX0FMV0FZU19O
QVRJVkUgCiNkZWZpbmUgUV9BVE9NSUNfUE9JTlRFUl9GRVRDSF9BTkRfQUREX0lTX1dBSVRfRlJF
RSAKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgYm9vbCBRQmFzaWNBdG9taWNQb2ludGVy
PFQ+Ojppc0ZldGNoQW5kQWRkTmF0aXZlKCkKeyByZXR1cm4gdHJ1ZTsgfQp0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KaW5saW5lIGJvb2wgUUJhc2ljQXRvbWljUG9pbnRlcjxUPjo6aXNGZXRjaEFuZEFk
ZFdhaXRGcmVlKCkKeyByZXR1cm4gdHJ1ZTsgfQoKCgppbmxpbmUgYm9vbCBRQmFzaWNBdG9taWNJ
bnQ6OnJlZigpCnsKICAgIHVuc2lnbmVkIGNoYXIgcmV0OwogICAgYXNtIHZvbGF0aWxlKCJsb2Nr
XG4iCiAgICAgICAgICAgICAgICAgImluY2wgJTBcbiIKICAgICAgICAgICAgICAgICAic2V0bmUg
JTEiCiAgICAgICAgICAgICAgICAgOiAiPW0iIChfcV92YWx1ZSksICI9cW0iIChyZXQpCiAgICAg
ICAgICAgICAgICAgOiAibSIgKF9xX3ZhbHVlKQogICAgICAgICAgICAgICAgIDogIm1lbW9yeSIp
OwogICAgcmV0dXJuIHJldCAhPSAwOwp9CgppbmxpbmUgYm9vbCBRQmFzaWNBdG9taWNJbnQ6OmRl
cmVmKCkKewogICAgdW5zaWduZWQgY2hhciByZXQ7CiAgICBhc20gdm9sYXRpbGUoImxvY2tcbiIK
ICAgICAgICAgICAgICAgICAiZGVjbCAlMFxuIgogICAgICAgICAgICAgICAgICJzZXRuZSAlMSIK
ICAgICAgICAgICAgICAgICA6ICI9bSIgKF9xX3ZhbHVlKSwgIj1xbSIgKHJldCkKICAgICAgICAg
ICAgICAgICA6ICJtIiAoX3FfdmFsdWUpCiAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CiAg
ICByZXR1cm4gcmV0ICE9IDA7Cn0KCmlubGluZSBib29sIFFCYXNpY0F0b21pY0ludDo6dGVzdEFu
ZFNldE9yZGVyZWQoaW50IGV4cGVjdGVkVmFsdWUsIGludCBuZXdWYWx1ZSkKewogICAgdW5zaWdu
ZWQgY2hhciByZXQ7CiAgICBhc20gdm9sYXRpbGUoImxvY2tcbiIKICAgICAgICAgICAgICAgICAi
Y21weGNoZ2wgJTMsJTJcbiIKICAgICAgICAgICAgICAgICAic2V0ZSAlMVxuIgogICAgICAgICAg
ICAgICAgIDogIj1hIiAobmV3VmFsdWUpLCAiPXFtIiAocmV0KSwgIittIiAoX3FfdmFsdWUpCiAg
ICAgICAgICAgICAgICAgOiAiciIgKG5ld1ZhbHVlKSwgIjAiIChleHBlY3RlZFZhbHVlKQogICAg
ICAgICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgcmV0dXJuIHJldCAhPSAwOwp9CgppbmxpbmUg
aW50IFFCYXNpY0F0b21pY0ludDo6ZmV0Y2hBbmRTdG9yZU9yZGVyZWQoaW50IG5ld1ZhbHVlKQp7
CiAgICBhc20gdm9sYXRpbGUoInhjaGdsICUwLCUxIgogICAgICAgICAgICAgICAgIDogIj1yIiAo
bmV3VmFsdWUpLCAiK20iIChfcV92YWx1ZSkKICAgICAgICAgICAgICAgICA6ICIwIiAobmV3VmFs
dWUpCiAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CiAgICByZXR1cm4gbmV3VmFsdWU7Cn0K
CmlubGluZSBpbnQgUUJhc2ljQXRvbWljSW50OjpmZXRjaEFuZEFkZE9yZGVyZWQoaW50IHZhbHVl
VG9BZGQpCnsKICAgIGFzbSB2b2xhdGlsZSgibG9ja1xuIgogICAgICAgICAgICAgICAgICJ4YWRk
bCAlMCwlMSIKICAgICAgICAgICAgICAgICA6ICI9ciIgKHZhbHVlVG9BZGQpLCAiK20iIChfcV92
YWx1ZSkKICAgICAgICAgICAgICAgICA6ICIwIiAodmFsdWVUb0FkZCkKICAgICAgICAgICAgICAg
ICA6ICJtZW1vcnkiKTsKICAgIHJldHVybiB2YWx1ZVRvQWRkOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KaW5saW5lIGJvb2wgUUJhc2ljQXRvbWljUG9pbnRlcjxUPjo6dGVzdEFuZFNldE9yZGVy
ZWQoVCAqZXhwZWN0ZWRWYWx1ZSwgVCAqbmV3VmFsdWUpCnsKICAgIHVuc2lnbmVkIGNoYXIgcmV0
OwogICAgYXNtIHZvbGF0aWxlKCJsb2NrXG4iCiAgICAgICAgICAgICAgICAgImNtcHhjaGdxICUz
LCUyXG4iCiAgICAgICAgICAgICAgICAgInNldGUgJTFcbiIKICAgICAgICAgICAgICAgICA6ICI9
YSIgKG5ld1ZhbHVlKSwgIj1xbSIgKHJldCksICIrbSIgKF9xX3ZhbHVlKQogICAgICAgICAgICAg
ICAgIDogInIiIChuZXdWYWx1ZSksICIwIiAoZXhwZWN0ZWRWYWx1ZSkKICAgICAgICAgICAgICAg
ICA6ICJtZW1vcnkiKTsKICAgIHJldHVybiByZXQgIT0gMDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CmlubGluZSBUICpRQmFzaWNBdG9taWNQb2ludGVyPFQ+OjpmZXRjaEFuZFN0b3JlT3JkZXJl
ZChUICpuZXdWYWx1ZSkKewogICAgYXNtIHZvbGF0aWxlKCJ4Y2hncSAlMCwlMSIKICAgICAgICAg
ICAgICAgICA6ICI9ciIgKG5ld1ZhbHVlKSwgIittIiAoX3FfdmFsdWUpCiAgICAgICAgICAgICAg
ICAgOiAiMCIgKG5ld1ZhbHVlKQogICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgcmV0
dXJuIG5ld1ZhbHVlOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIFQgKlFCYXNpY0F0
b21pY1BvaW50ZXI8VD46OmZldGNoQW5kQWRkT3JkZXJlZChxcHRyZGlmZiB2YWx1ZVRvQWRkKQp7
CiAgICBhc20gdm9sYXRpbGUoImxvY2tcbiIKICAgICAgICAgICAgICAgICAieGFkZHEgJTAsJTEi
CiAgICAgICAgICAgICAgICAgOiAiPXIiICh2YWx1ZVRvQWRkKSwgIittIiAoX3FfdmFsdWUpCiAg
ICAgICAgICAgICAgICAgOiAiMCIgKHZhbHVlVG9BZGQgKiBzaXplb2YoVCkpCiAgICAgICAgICAg
ICAgICAgOiAibWVtb3J5Iik7CiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUICo+KHZhbHVl
VG9BZGQpOwp9CiMgMjYwICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FhdG9taWNfeDg2XzY0
LmgiCmlubGluZSBib29sIFFCYXNpY0F0b21pY0ludDo6dGVzdEFuZFNldFJlbGF4ZWQoaW50IGV4
cGVjdGVkVmFsdWUsIGludCBuZXdWYWx1ZSkKewogICAgcmV0dXJuIHRlc3RBbmRTZXRPcmRlcmVk
KGV4cGVjdGVkVmFsdWUsIG5ld1ZhbHVlKTsKfQoKaW5saW5lIGJvb2wgUUJhc2ljQXRvbWljSW50
Ojp0ZXN0QW5kU2V0QWNxdWlyZShpbnQgZXhwZWN0ZWRWYWx1ZSwgaW50IG5ld1ZhbHVlKQp7CiAg
ICByZXR1cm4gdGVzdEFuZFNldE9yZGVyZWQoZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUpOwp9Cgpp
bmxpbmUgYm9vbCBRQmFzaWNBdG9taWNJbnQ6OnRlc3RBbmRTZXRSZWxlYXNlKGludCBleHBlY3Rl
ZFZhbHVlLCBpbnQgbmV3VmFsdWUpCnsKICAgIHJldHVybiB0ZXN0QW5kU2V0T3JkZXJlZChleHBl
Y3RlZFZhbHVlLCBuZXdWYWx1ZSk7Cn0KCmlubGluZSBpbnQgUUJhc2ljQXRvbWljSW50OjpmZXRj
aEFuZFN0b3JlUmVsYXhlZChpbnQgbmV3VmFsdWUpCnsKICAgIHJldHVybiBmZXRjaEFuZFN0b3Jl
T3JkZXJlZChuZXdWYWx1ZSk7Cn0KCmlubGluZSBpbnQgUUJhc2ljQXRvbWljSW50OjpmZXRjaEFu
ZFN0b3JlQWNxdWlyZShpbnQgbmV3VmFsdWUpCnsKICAgIHJldHVybiBmZXRjaEFuZFN0b3JlT3Jk
ZXJlZChuZXdWYWx1ZSk7Cn0KCmlubGluZSBpbnQgUUJhc2ljQXRvbWljSW50OjpmZXRjaEFuZFN0
b3JlUmVsZWFzZShpbnQgbmV3VmFsdWUpCnsKICAgIHJldHVybiBmZXRjaEFuZFN0b3JlT3JkZXJl
ZChuZXdWYWx1ZSk7Cn0KCmlubGluZSBpbnQgUUJhc2ljQXRvbWljSW50OjpmZXRjaEFuZEFkZFJl
bGF4ZWQoaW50IHZhbHVlVG9BZGQpCnsKICAgIHJldHVybiBmZXRjaEFuZEFkZE9yZGVyZWQodmFs
dWVUb0FkZCk7Cn0KCmlubGluZSBpbnQgUUJhc2ljQXRvbWljSW50OjpmZXRjaEFuZEFkZEFjcXVp
cmUoaW50IHZhbHVlVG9BZGQpCnsKICAgIHJldHVybiBmZXRjaEFuZEFkZE9yZGVyZWQodmFsdWVU
b0FkZCk7Cn0KCmlubGluZSBpbnQgUUJhc2ljQXRvbWljSW50OjpmZXRjaEFuZEFkZFJlbGVhc2Uo
aW50IHZhbHVlVG9BZGQpCnsKICAgIHJldHVybiBmZXRjaEFuZEFkZE9yZGVyZWQodmFsdWVUb0Fk
ZCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgYm9vbCBRQmFzaWNBdG9taWNQb2lu
dGVyPFQ+Ojp0ZXN0QW5kU2V0UmVsYXhlZChUICpleHBlY3RlZFZhbHVlLCBUICpuZXdWYWx1ZSkK
ewogICAgcmV0dXJuIHRlc3RBbmRTZXRPcmRlcmVkKGV4cGVjdGVkVmFsdWUsIG5ld1ZhbHVlKTsK
fQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSBib29sIFFCYXNpY0F0b21pY1BvaW50ZXI8
VD46OnRlc3RBbmRTZXRBY3F1aXJlKFQgKmV4cGVjdGVkVmFsdWUsIFQgKm5ld1ZhbHVlKQp7CiAg
ICByZXR1cm4gdGVzdEFuZFNldE9yZGVyZWQoZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUpOwp9Cgp0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIGJvb2wgUUJhc2ljQXRvbWljUG9pbnRlcjxUPjo6
dGVzdEFuZFNldFJlbGVhc2UoVCAqZXhwZWN0ZWRWYWx1ZSwgVCAqbmV3VmFsdWUpCnsKICAgIHJl
dHVybiB0ZXN0QW5kU2V0T3JkZXJlZChleHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSk7Cn0KCnRlbXBs
YXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgVCAqUUJhc2ljQXRvbWljUG9pbnRlcjxUPjo6ZmV0Y2hB
bmRTdG9yZVJlbGF4ZWQoVCAqbmV3VmFsdWUpCnsKICAgIHJldHVybiBmZXRjaEFuZFN0b3JlT3Jk
ZXJlZChuZXdWYWx1ZSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgVCAqUUJhc2lj
QXRvbWljUG9pbnRlcjxUPjo6ZmV0Y2hBbmRTdG9yZUFjcXVpcmUoVCAqbmV3VmFsdWUpCnsKICAg
IHJldHVybiBmZXRjaEFuZFN0b3JlT3JkZXJlZChuZXdWYWx1ZSk7Cn0KCnRlbXBsYXRlIDx0eXBl
bmFtZSBUPgppbmxpbmUgVCAqUUJhc2ljQXRvbWljUG9pbnRlcjxUPjo6ZmV0Y2hBbmRTdG9yZVJl
bGVhc2UoVCAqbmV3VmFsdWUpCnsKICAgIHJldHVybiBmZXRjaEFuZFN0b3JlT3JkZXJlZChuZXdW
YWx1ZSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgVCAqUUJhc2ljQXRvbWljUG9p
bnRlcjxUPjo6ZmV0Y2hBbmRBZGRSZWxheGVkKHFwdHJkaWZmIHZhbHVlVG9BZGQpCnsKICAgIHJl
dHVybiBmZXRjaEFuZEFkZE9yZGVyZWQodmFsdWVUb0FkZCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgppbmxpbmUgVCAqUUJhc2ljQXRvbWljUG9pbnRlcjxUPjo6ZmV0Y2hBbmRBZGRBY3F1aXJl
KHFwdHJkaWZmIHZhbHVlVG9BZGQpCnsKICAgIHJldHVybiBmZXRjaEFuZEFkZE9yZGVyZWQodmFs
dWVUb0FkZCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgVCAqUUJhc2ljQXRvbWlj
UG9pbnRlcjxUPjo6ZmV0Y2hBbmRBZGRSZWxlYXNlKHFwdHJkaWZmIHZhbHVlVG9BZGQpCnsKICAg
IHJldHVybiBmZXRjaEFuZEFkZE9yZGVyZWQodmFsdWVUb0FkZCk7Cn0KCgoKCiMgNDkgIi9vcHQv
bG9jYWwvaW5jbHVkZS9RdENvcmUvcWF0b21pY19tYWNvc3guaCIgMgoKCgoKCgoKIyA2OSAiL29w
dC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xYXRvbWljX2FyY2guaCIgMgojIDk1ICIvb3B0L2xvY2Fs
L2luY2x1ZGUvUXRDb3JlL3FhdG9taWNfYXJjaC5oIgoKIyAyMjggIi9vcHQvbG9jYWwvaW5jbHVk
ZS9RdENvcmUvcWJhc2ljYXRvbWljLmgiIDIKIyA0NyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29y
ZS9xYXRvbWljLmgiIDIKCgoKCgp0eXBlZGVmIFF0VmFsaWRMaWNlbnNlRm9yQ29yZU1vZHVsZSBR
dENvcmVNb2R1bGU7CgoKY2xhc3MgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgUUF0b21pY0ludCA6IHB1YmxpYyBRQmFzaWNBdG9taWNJbnQKewpwdWJsaWM6CiAgICBpbmxp
bmUgUUF0b21pY0ludChpbnQgdmFsdWUgPSAwKQogICAgewoKCgogICAgICAgIF9xX3ZhbHVlID0g
dmFsdWU7CiAgICB9CiAgICBpbmxpbmUgUUF0b21pY0ludChjb25zdCBRQXRvbWljSW50ICZvdGhl
cikKICAgIHsKCgoKICAgICAgICBfcV92YWx1ZSA9IG90aGVyLl9xX3ZhbHVlOwogICAgfQoKICAg
IGlubGluZSBRQXRvbWljSW50ICZvcGVyYXRvcj0oaW50IHZhbHVlKQogICAgewogICAgICAgICh2
b2lkKSBRQmFzaWNBdG9taWNJbnQ6Om9wZXJhdG9yPSh2YWx1ZSk7CiAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgfQoKICAgIGlubGluZSBRQXRvbWljSW50ICZvcGVyYXRvcj0oY29uc3QgUUF0b21p
Y0ludCAmb3RoZXIpCiAgICB7CiAgICAgICAgKHZvaWQpIFFCYXNpY0F0b21pY0ludDo6b3BlcmF0
b3I9KG90aGVyKTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CiMgMTIxICIvb3B0L2xvY2Fs
L2luY2x1ZGUvUXRDb3JlL3FhdG9taWMuaCIKfTsKCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KY2xh
c3MgUUF0b21pY1BvaW50ZXIgOiBwdWJsaWMgUUJhc2ljQXRvbWljUG9pbnRlcjxUPgp7CnB1Ymxp
YzoKICAgIGlubGluZSBRQXRvbWljUG9pbnRlcihUICp2YWx1ZSA9IDApCiAgICB7CgoKCiAgICAg
ICAgUUJhc2ljQXRvbWljUG9pbnRlcjxUPjo6X3FfdmFsdWUgPSB2YWx1ZTsKICAgIH0KICAgIGlu
bGluZSBRQXRvbWljUG9pbnRlcihjb25zdCBRQXRvbWljUG9pbnRlcjxUPiAmb3RoZXIpCiAgICB7
CgoKCiAgICAgICAgUUJhc2ljQXRvbWljUG9pbnRlcjxUPjo6X3FfdmFsdWUgPSBvdGhlci5fcV92
YWx1ZTsKICAgIH0KCiAgICBpbmxpbmUgUUF0b21pY1BvaW50ZXI8VD4gJm9wZXJhdG9yPShUICp2
YWx1ZSkKICAgIHsKICAgICAgICAodm9pZCkgUUJhc2ljQXRvbWljUG9pbnRlcjxUPjo6b3BlcmF0
b3I9KHZhbHVlKTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgaW5saW5lIFFBdG9t
aWNQb2ludGVyPFQ+ICZvcGVyYXRvcj0oY29uc3QgUUF0b21pY1BvaW50ZXI8VD4gJm90aGVyKQog
ICAgewogICAgICAgICh2b2lkKSBRQmFzaWNBdG9taWNQb2ludGVyPFQ+OjpvcGVyYXRvcj0ob3Ro
ZXIpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KIyAxODYgIi9vcHQvbG9jYWwvaW5jbHVk
ZS9RdENvcmUvcWF0b21pYy5oIgp9OwoKCgoKCgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGlu
ZSB2b2lkIHFBdG9taWNBc3NpZ24oVCAqJmQsIFQgKngpCnsKICAgIGlmIChkID09IHgpCiAgICAg
ICAgcmV0dXJuOwogICAgeC0+cmVmLnJlZigpOwogICAgaWYgKCFkLT5yZWYuZGVyZWYoKSkKICAg
ICAgICBkZWxldGUgZDsKICAgIGQgPSB4Owp9CiMgMjEzICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRD
b3JlL3FhdG9taWMuaCIKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSB2b2lkIHFBdG9taWNE
ZXRhY2goVCAqJmQpCnsKICAgIGlmIChkLT5yZWYgPT0gMSkKICAgICAgICByZXR1cm47CiAgICBU
ICp4ID0gZDsKICAgIGQgPSBuZXcgVCgqZCk7CiAgICBpZiAoIXgtPnJlZi5kZXJlZigpKQogICAg
ICAgIGRlbGV0ZSB4Owp9CgoKCiMgNDYgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWJ5dGVh
cnJheS5oIiAyCiMgNTUgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWJ5dGVhcnJheS5oIgoK
CgoKdHlwZWRlZiBRdFZhbGlkTGljZW5zZUZvckNvcmVNb2R1bGUgUXRDb3JlTW9kdWxlOwoKCgoK
Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGNoYXIgKnFzdHJkdXAoY29u
c3QgY2hhciAqKTsKCmlubGluZSB1aW50IHFzdHJsZW4oY29uc3QgY2hhciAqc3RyKQp7IHJldHVy
biBzdHIgPyB1aW50KHN0cmxlbihzdHIpKSA6IDA7IH0KCmlubGluZSB1aW50IHFzdHJubGVuKGNv
bnN0IGNoYXIgKnN0ciwgdWludCBtYXhsZW4pCnsKICAgIHVpbnQgbGVuZ3RoID0gMDsKICAgIGlm
IChzdHIpIHsKICAgICAgICB3aGlsZSAobGVuZ3RoIDwgbWF4bGVuICYmICpzdHIrKykKICAgICAg
ICAgICAgbGVuZ3RoKys7CiAgICB9CiAgICByZXR1cm4gbGVuZ3RoOwp9CgpfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBjaGFyICpxc3RyY3B5KGNoYXIgKmRzdCwgY29uc3Qg
Y2hhciAqc3JjKTsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgY2hhciAq
cXN0cm5jcHkoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIHVpbnQgbGVuKTsKCl9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGludCBxc3RyY21wKGNvbnN0IGNoYXIgKnN0
cjEsIGNvbnN0IGNoYXIgKnN0cjIpOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKSBpbnQgcXN0cmNtcChjb25zdCBRQnl0ZUFycmF5ICZzdHIxLCBjb25zdCBRQnl0ZUFycmF5
ICZzdHIyKTsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW50IHFzdHJj
bXAoY29uc3QgUUJ5dGVBcnJheSAmc3RyMSwgY29uc3QgY2hhciAqc3RyMik7CnN0YXRpYyBpbmxp
bmUgaW50IHFzdHJjbXAoY29uc3QgY2hhciAqc3RyMSwgY29uc3QgUUJ5dGVBcnJheSAmc3RyMikK
eyByZXR1cm4gLXFzdHJjbXAoc3RyMiwgc3RyMSk7IH0KCmlubGluZSBpbnQgcXN0cm5jbXAoY29u
c3QgY2hhciAqc3RyMSwgY29uc3QgY2hhciAqc3RyMiwgdWludCBsZW4pCnsKICAgIHJldHVybiAo
c3RyMSAmJiBzdHIyKSA/IHN0cm5jbXAoc3RyMSwgc3RyMiwgbGVuKQogICAgICAgIDogKHN0cjEg
PyAxIDogKHN0cjIgPyAtMSA6IDApKTsKfQpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBpbnQgcXN0cmljbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBpbnQgcXN0cm5pY21wKGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqLCB1aW50IGxlbik7CgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSkgaW50IHF2c25wcmludGYoY2hhciAqc3RyLCBzaXplX3QgbiwgY29uc3QgY2hh
ciAqZm10LCB2YV9saXN0IGFwKTsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgaW50IHFzbnByaW50ZihjaGFyICpzdHIsIHNpemVfdCBuLCBjb25zdCBjaGFyICpmbXQsIC4u
Lik7CiMgMTE2ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FieXRlYXJyYXkuaCIKX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgcXVpbnQxNiBxQ2hlY2tzdW0oY29uc3Qg
Y2hhciAqcywgdWludCBsZW4pOwoKY2xhc3MgUUJ5dGVSZWY7CmNsYXNzIFFTdHJpbmc7CmNsYXNz
IFFEYXRhU3RyZWFtOwp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUUxpc3Q7CgpjbGFzcyBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRQnl0ZUFycmF5CnsKcHJpdmF0
ZToKICAgIHN0cnVjdCBEYXRhIHsKICAgICAgICBRQmFzaWNBdG9taWNJbnQgcmVmOwogICAgICAg
IGludCBhbGxvYywgc2l6ZTsKCgoKICAgICAgICBjaGFyICpkYXRhOwogICAgICAgIGNoYXIgYXJy
YXlbMV07CiAgICB9OwoKcHVibGljOgogICAgaW5saW5lIFFCeXRlQXJyYXkoKTsKICAgIFFCeXRl
QXJyYXkoY29uc3QgY2hhciAqKTsKICAgIFFCeXRlQXJyYXkoY29uc3QgY2hhciAqLCBpbnQgc2l6
ZSk7CiAgICBRQnl0ZUFycmF5KGludCBzaXplLCBjaGFyIGMpOwogICAgUUJ5dGVBcnJheShpbnQg
c2l6ZSwgUXQ6OkluaXRpYWxpemF0aW9uKTsKICAgIGlubGluZSBRQnl0ZUFycmF5KGNvbnN0IFFC
eXRlQXJyYXkgJik7CiAgICBpbmxpbmUgflFCeXRlQXJyYXkoKTsKCiAgICBRQnl0ZUFycmF5ICZv
cGVyYXRvcj0oY29uc3QgUUJ5dGVBcnJheSAmKTsKICAgIFFCeXRlQXJyYXkgJm9wZXJhdG9yPShj
b25zdCBjaGFyICpzdHIpOwoKICAgIGlubGluZSBpbnQgc2l6ZSgpIGNvbnN0OwogICAgYm9vbCBp
c0VtcHR5KCkgY29uc3Q7CiAgICB2b2lkIHJlc2l6ZShpbnQgc2l6ZSk7CgogICAgUUJ5dGVBcnJh
eSAmZmlsbChjaGFyIGMsIGludCBzaXplID0gLTEpOwoKICAgIGludCBjYXBhY2l0eSgpIGNvbnN0
OwogICAgdm9pZCByZXNlcnZlKGludCBzaXplKTsKICAgIHZvaWQgc3F1ZWV6ZSgpOwoKCiAgICBv
cGVyYXRvciBjb25zdCBjaGFyICooKSBjb25zdDsKICAgIG9wZXJhdG9yIGNvbnN0IHZvaWQgKigp
IGNvbnN0OwoKICAgIGNoYXIgKmRhdGEoKTsKICAgIGNvbnN0IGNoYXIgKmRhdGEoKSBjb25zdDsK
ICAgIGlubGluZSBjb25zdCBjaGFyICpjb25zdERhdGEoKSBjb25zdDsKICAgIGlubGluZSB2b2lk
IGRldGFjaCgpOwogICAgYm9vbCBpc0RldGFjaGVkKCkgY29uc3Q7CiAgICBpbmxpbmUgYm9vbCBp
c1NoYXJlZFdpdGgoY29uc3QgUUJ5dGVBcnJheSAmb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGQgPT0g
b3RoZXIuZDsgfQogICAgdm9pZCBjbGVhcigpOwoKCgoKCgogICAgY2hhciBhdChpbnQgaSkgY29u
c3Q7CiAgICBjaGFyIG9wZXJhdG9yW10oaW50IGkpIGNvbnN0OwogICAgY2hhciBvcGVyYXRvcltd
KHVpbnQgaSkgY29uc3Q7CgogICAgUUJ5dGVSZWYgb3BlcmF0b3JbXShpbnQgaSk7CiAgICBRQnl0
ZVJlZiBvcGVyYXRvcltdKHVpbnQgaSk7CgogICAgaW50IGluZGV4T2YoY2hhciBjLCBpbnQgZnJv
bSA9IDApIGNvbnN0OwogICAgaW50IGluZGV4T2YoY29uc3QgY2hhciAqYywgaW50IGZyb20gPSAw
KSBjb25zdDsKICAgIGludCBpbmRleE9mKGNvbnN0IFFCeXRlQXJyYXkgJmEsIGludCBmcm9tID0g
MCkgY29uc3Q7CiAgICBpbnQgbGFzdEluZGV4T2YoY2hhciBjLCBpbnQgZnJvbSA9IC0xKSBjb25z
dDsKICAgIGludCBsYXN0SW5kZXhPZihjb25zdCBjaGFyICpjLCBpbnQgZnJvbSA9IC0xKSBjb25z
dDsKICAgIGludCBsYXN0SW5kZXhPZihjb25zdCBRQnl0ZUFycmF5ICZhLCBpbnQgZnJvbSA9IC0x
KSBjb25zdDsKCiAgICBRQm9vbCBjb250YWlucyhjaGFyIGMpIGNvbnN0OwogICAgUUJvb2wgY29u
dGFpbnMoY29uc3QgY2hhciAqYSkgY29uc3Q7CiAgICBRQm9vbCBjb250YWlucyhjb25zdCBRQnl0
ZUFycmF5ICZhKSBjb25zdDsKICAgIGludCBjb3VudChjaGFyIGMpIGNvbnN0OwogICAgaW50IGNv
dW50KGNvbnN0IGNoYXIgKmEpIGNvbnN0OwogICAgaW50IGNvdW50KGNvbnN0IFFCeXRlQXJyYXkg
JmEpIGNvbnN0OwoKICAgIFFCeXRlQXJyYXkgbGVmdChpbnQgbGVuKSBjb25zdDsKICAgIFFCeXRl
QXJyYXkgcmlnaHQoaW50IGxlbikgY29uc3Q7CiAgICBRQnl0ZUFycmF5IG1pZChpbnQgaW5kZXgs
IGludCBsZW4gPSAtMSkgY29uc3Q7CgogICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFFCeXRlQXJy
YXkgJmEpIGNvbnN0OwogICAgYm9vbCBzdGFydHNXaXRoKGNoYXIgYykgY29uc3Q7CiAgICBib29s
IHN0YXJ0c1dpdGgoY29uc3QgY2hhciAqYykgY29uc3Q7CgogICAgYm9vbCBlbmRzV2l0aChjb25z
dCBRQnl0ZUFycmF5ICZhKSBjb25zdDsKICAgIGJvb2wgZW5kc1dpdGgoY2hhciBjKSBjb25zdDsK
ICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAqYykgY29uc3Q7CgogICAgdm9pZCB0cnVuY2F0
ZShpbnQgcG9zKTsKICAgIHZvaWQgY2hvcChpbnQgbik7CgogICAgUUJ5dGVBcnJheSB0b0xvd2Vy
KCkgY29uc3Q7CiAgICBRQnl0ZUFycmF5IHRvVXBwZXIoKSBjb25zdDsKCiAgICBRQnl0ZUFycmF5
IHRyaW1tZWQoKSBjb25zdDsKICAgIFFCeXRlQXJyYXkgc2ltcGxpZmllZCgpIGNvbnN0OwogICAg
UUJ5dGVBcnJheSBsZWZ0SnVzdGlmaWVkKGludCB3aWR0aCwgY2hhciBmaWxsID0gJyAnLCBib29s
IHRydW5jYXRlID0gZmFsc2UpIGNvbnN0OwogICAgUUJ5dGVBcnJheSByaWdodEp1c3RpZmllZChp
bnQgd2lkdGgsIGNoYXIgZmlsbCA9ICcgJywgYm9vbCB0cnVuY2F0ZSA9IGZhbHNlKSBjb25zdDsK
IyAyMjYgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWJ5dGVhcnJheS5oIgogICAgUUJ5dGVB
cnJheSAmcHJlcGVuZChjaGFyIGMpOwogICAgUUJ5dGVBcnJheSAmcHJlcGVuZChjb25zdCBjaGFy
ICpzKTsKICAgIFFCeXRlQXJyYXkgJnByZXBlbmQoY29uc3QgY2hhciAqcywgaW50IGxlbik7CiAg
ICBRQnl0ZUFycmF5ICZwcmVwZW5kKGNvbnN0IFFCeXRlQXJyYXkgJmEpOwogICAgUUJ5dGVBcnJh
eSAmYXBwZW5kKGNoYXIgYyk7CiAgICBRQnl0ZUFycmF5ICZhcHBlbmQoY29uc3QgY2hhciAqcyk7
CiAgICBRQnl0ZUFycmF5ICZhcHBlbmQoY29uc3QgY2hhciAqcywgaW50IGxlbik7CiAgICBRQnl0
ZUFycmF5ICZhcHBlbmQoY29uc3QgUUJ5dGVBcnJheSAmYSk7CiAgICBRQnl0ZUFycmF5ICZpbnNl
cnQoaW50IGksIGNoYXIgYyk7CiAgICBRQnl0ZUFycmF5ICZpbnNlcnQoaW50IGksIGNvbnN0IGNo
YXIgKnMpOwogICAgUUJ5dGVBcnJheSAmaW5zZXJ0KGludCBpLCBjb25zdCBjaGFyICpzLCBpbnQg
bGVuKTsKICAgIFFCeXRlQXJyYXkgJmluc2VydChpbnQgaSwgY29uc3QgUUJ5dGVBcnJheSAmYSk7
CiAgICBRQnl0ZUFycmF5ICZyZW1vdmUoaW50IGluZGV4LCBpbnQgbGVuKTsKICAgIFFCeXRlQXJy
YXkgJnJlcGxhY2UoaW50IGluZGV4LCBpbnQgbGVuLCBjb25zdCBjaGFyICpzKTsKICAgIFFCeXRl
QXJyYXkgJnJlcGxhY2UoaW50IGluZGV4LCBpbnQgbGVuLCBjb25zdCBjaGFyICpzLCBpbnQgYWxl
bik7CiAgICBRQnl0ZUFycmF5ICZyZXBsYWNlKGludCBpbmRleCwgaW50IGxlbiwgY29uc3QgUUJ5
dGVBcnJheSAmcyk7CiAgICBRQnl0ZUFycmF5ICZyZXBsYWNlKGNoYXIgYmVmb3JlLCBjb25zdCBj
aGFyICphZnRlcik7CiAgICBRQnl0ZUFycmF5ICZyZXBsYWNlKGNoYXIgYmVmb3JlLCBjb25zdCBR
Qnl0ZUFycmF5ICZhZnRlcik7CiAgICBRQnl0ZUFycmF5ICZyZXBsYWNlKGNvbnN0IGNoYXIgKmJl
Zm9yZSwgY29uc3QgY2hhciAqYWZ0ZXIpOwogICAgUUJ5dGVBcnJheSAmcmVwbGFjZShjb25zdCBj
aGFyICpiZWZvcmUsIGludCBic2l6ZSwgY29uc3QgY2hhciAqYWZ0ZXIsIGludCBhc2l6ZSk7CiAg
ICBRQnl0ZUFycmF5ICZyZXBsYWNlKGNvbnN0IFFCeXRlQXJyYXkgJmJlZm9yZSwgY29uc3QgUUJ5
dGVBcnJheSAmYWZ0ZXIpOwogICAgUUJ5dGVBcnJheSAmcmVwbGFjZShjb25zdCBRQnl0ZUFycmF5
ICZiZWZvcmUsIGNvbnN0IGNoYXIgKmFmdGVyKTsKICAgIFFCeXRlQXJyYXkgJnJlcGxhY2UoY29u
c3QgY2hhciAqYmVmb3JlLCBjb25zdCBRQnl0ZUFycmF5ICZhZnRlcik7CiAgICBRQnl0ZUFycmF5
ICZyZXBsYWNlKGNoYXIgYmVmb3JlLCBjaGFyIGFmdGVyKTsKICAgIFFCeXRlQXJyYXkgJm9wZXJh
dG9yKz0oY2hhciBjKTsKICAgIFFCeXRlQXJyYXkgJm9wZXJhdG9yKz0oY29uc3QgY2hhciAqcyk7
CiAgICBRQnl0ZUFycmF5ICZvcGVyYXRvcis9KGNvbnN0IFFCeXRlQXJyYXkgJmEpOwoKICAgIFFM
aXN0PFFCeXRlQXJyYXk+IHNwbGl0KGNoYXIgc2VwKSBjb25zdDsKCiAgICBRQnl0ZUFycmF5IHJl
cGVhdGVkKGludCB0aW1lcykgY29uc3Q7CgoKICAgIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0
ZWRfXykpIFFCeXRlQXJyYXkgJmFwcGVuZChjb25zdCBRU3RyaW5nICZzKTsKICAgIF9fYXR0cmli
dXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIFFCeXRlQXJyYXkgJmluc2VydChpbnQgaSwgY29uc3Qg
UVN0cmluZyAmcyk7CiAgICBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBRQnl0ZUFy
cmF5ICZyZXBsYWNlKGNvbnN0IFFTdHJpbmcgJmJlZm9yZSwgY29uc3QgY2hhciAqYWZ0ZXIpOwog
ICAgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSkgUUJ5dGVBcnJheSAmcmVwbGFjZShj
aGFyIGMsIGNvbnN0IFFTdHJpbmcgJmFmdGVyKTsKICAgIF9fYXR0cmlidXRlX18gKChfX2RlcHJl
Y2F0ZWRfXykpIFFCeXRlQXJyYXkgJnJlcGxhY2UoY29uc3QgUVN0cmluZyAmYmVmb3JlLCBjb25z
dCBRQnl0ZUFycmF5ICZhZnRlcik7CgogICAgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9f
KSkgUUJ5dGVBcnJheSAmb3BlcmF0b3IrPShjb25zdCBRU3RyaW5nICZzKTsKICAgIF9fYXR0cmli
dXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIGludCBpbmRleE9mKGNvbnN0IFFTdHJpbmcgJnMsIGlu
dCBmcm9tID0gMCkgY29uc3Q7CiAgICBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBp
bnQgbGFzdEluZGV4T2YoY29uc3QgUVN0cmluZyAmcywgaW50IGZyb20gPSAtMSkgY29uc3Q7CgoK
ICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBib29sIG9wZXJhdG9y
PT0oY29uc3QgUVN0cmluZyAmczIpIGNvbnN0OwogICAgaW5saW5lIF9fYXR0cmlidXRlX18gKChf
X2RlcHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRU3RyaW5nICZzMikgY29uc3Q7
CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSkgYm9vbCBvcGVyYXRv
cjwoY29uc3QgUVN0cmluZyAmczIpIGNvbnN0OwogICAgaW5saW5lIF9fYXR0cmlidXRlX18gKChf
X2RlcHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFFTdHJpbmcgJnMyKSBjb25zdDsK
ICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBib29sIG9wZXJhdG9y
PD0oY29uc3QgUVN0cmluZyAmczIpIGNvbnN0OwogICAgaW5saW5lIF9fYXR0cmlidXRlX18gKChf
X2RlcHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0b3I+PShjb25zdCBRU3RyaW5nICZzMikgY29uc3Q7
CgoKICAgIHNob3J0IHRvU2hvcnQoYm9vbCAqb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsK
ICAgIHVzaG9ydCB0b1VTaG9ydChib29sICpvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0Owog
ICAgaW50IHRvSW50KGJvb2wgKm9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICB1aW50
IHRvVUludChib29sICpvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwogICAgbG9uZyB0b0xv
bmcoYm9vbCAqb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgIHVsb25nIHRvVUxvbmco
Ym9vbCAqb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgIHFsb25nbG9uZyB0b0xvbmdM
b25nKGJvb2wgKm9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICBxdWxvbmdsb25nIHRv
VUxvbmdMb25nKGJvb2wgKm9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICBmbG9hdCB0
b0Zsb2F0KGJvb2wgKm9rID0gMCkgY29uc3Q7CiAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCAqb2sg
PSAwKSBjb25zdDsKICAgIFFCeXRlQXJyYXkgdG9CYXNlNjQoKSBjb25zdDsKICAgIFFCeXRlQXJy
YXkgdG9IZXgoKSBjb25zdDsKICAgIFFCeXRlQXJyYXkgdG9QZXJjZW50RW5jb2RpbmcoY29uc3Qg
UUJ5dGVBcnJheSAmZXhjbHVkZSA9IFFCeXRlQXJyYXkoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUUJ5dGVBcnJheSAmaW5jbHVkZSA9IFFCeXRlQXJyYXkoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBwZXJjZW50ID0gJyUnKSBjb25zdDsK
CiAgICBRQnl0ZUFycmF5ICZzZXROdW0oc2hvcnQsIGludCBiYXNlID0gMTApOwogICAgUUJ5dGVB
cnJheSAmc2V0TnVtKHVzaG9ydCwgaW50IGJhc2UgPSAxMCk7CiAgICBRQnl0ZUFycmF5ICZzZXRO
dW0oaW50LCBpbnQgYmFzZSA9IDEwKTsKICAgIFFCeXRlQXJyYXkgJnNldE51bSh1aW50LCBpbnQg
YmFzZSA9IDEwKTsKICAgIFFCeXRlQXJyYXkgJnNldE51bShxbG9uZ2xvbmcsIGludCBiYXNlID0g
MTApOwogICAgUUJ5dGVBcnJheSAmc2V0TnVtKHF1bG9uZ2xvbmcsIGludCBiYXNlID0gMTApOwog
ICAgUUJ5dGVBcnJheSAmc2V0TnVtKGZsb2F0LCBjaGFyIGYgPSAnZycsIGludCBwcmVjID0gNik7
CiAgICBRQnl0ZUFycmF5ICZzZXROdW0oZG91YmxlLCBjaGFyIGYgPSAnZycsIGludCBwcmVjID0g
Nik7CiAgICBRQnl0ZUFycmF5ICZzZXRSYXdEYXRhKGNvbnN0IGNoYXIgKmEsIHVpbnQgbik7Cgog
ICAgc3RhdGljIFFCeXRlQXJyYXkgbnVtYmVyKGludCwgaW50IGJhc2UgPSAxMCk7CiAgICBzdGF0
aWMgUUJ5dGVBcnJheSBudW1iZXIodWludCwgaW50IGJhc2UgPSAxMCk7CiAgICBzdGF0aWMgUUJ5
dGVBcnJheSBudW1iZXIocWxvbmdsb25nLCBpbnQgYmFzZSA9IDEwKTsKICAgIHN0YXRpYyBRQnl0
ZUFycmF5IG51bWJlcihxdWxvbmdsb25nLCBpbnQgYmFzZSA9IDEwKTsKICAgIHN0YXRpYyBRQnl0
ZUFycmF5IG51bWJlcihkb3VibGUsIGNoYXIgZiA9ICdnJywgaW50IHByZWMgPSA2KTsKICAgIHN0
YXRpYyBRQnl0ZUFycmF5IGZyb21SYXdEYXRhKGNvbnN0IGNoYXIgKiwgaW50IHNpemUpOwogICAg
c3RhdGljIFFCeXRlQXJyYXkgZnJvbUJhc2U2NChjb25zdCBRQnl0ZUFycmF5ICZiYXNlNjQpOwog
ICAgc3RhdGljIFFCeXRlQXJyYXkgZnJvbUhleChjb25zdCBRQnl0ZUFycmF5ICZoZXhFbmNvZGVk
KTsKICAgIHN0YXRpYyBRQnl0ZUFycmF5IGZyb21QZXJjZW50RW5jb2RpbmcoY29uc3QgUUJ5dGVB
cnJheSAmcGN0RW5jb2RlZCwgY2hhciBwZXJjZW50ID0gJyUnKTsKCgogICAgdHlwZWRlZiBjaGFy
ICppdGVyYXRvcjsKICAgIHR5cGVkZWYgY29uc3QgY2hhciAqY29uc3RfaXRlcmF0b3I7CiAgICB0
eXBlZGVmIGl0ZXJhdG9yIEl0ZXJhdG9yOwogICAgdHlwZWRlZiBjb25zdF9pdGVyYXRvciBDb25z
dEl0ZXJhdG9yOwogICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2lu
KCkgY29uc3Q7CiAgICBjb25zdF9pdGVyYXRvciBjb25zdEJlZ2luKCkgY29uc3Q7CiAgICBpdGVy
YXRvciBlbmQoKTsKICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OwogICAgY29uc3RfaXRl
cmF0b3IgY29uc3RFbmQoKSBjb25zdDsKCgogICAgdHlwZWRlZiBjb25zdCBjaGFyICYgY29uc3Rf
cmVmZXJlbmNlOwogICAgdHlwZWRlZiBjaGFyICYgcmVmZXJlbmNlOwogICAgdHlwZWRlZiBjaGFy
IHZhbHVlX3R5cGU7CiAgICB2b2lkIHB1c2hfYmFjayhjaGFyIGMpOwogICAgdm9pZCBwdXNoX2Jh
Y2soY29uc3QgY2hhciAqYyk7CiAgICB2b2lkIHB1c2hfYmFjayhjb25zdCBRQnl0ZUFycmF5ICZh
KTsKICAgIHZvaWQgcHVzaF9mcm9udChjaGFyIGMpOwogICAgdm9pZCBwdXNoX2Zyb250KGNvbnN0
IGNoYXIgKmMpOwogICAgdm9pZCBwdXNoX2Zyb250KGNvbnN0IFFCeXRlQXJyYXkgJmEpOwoKICAg
IGlubGluZSBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBkLT5zaXplOyB9CiAgICBpbnQgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gZC0+c2l6ZTsgfQogICAgYm9vbCBpc051bGwoKSBjb25zdDsK
IyAzNjQgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWJ5dGVhcnJheS5oIgpwcml2YXRlOgog
ICAgb3BlcmF0b3IgUU5vSW1wbGljaXRCb29sQ2FzdCgpIGNvbnN0OwogICAgc3RhdGljIERhdGEg
c2hhcmVkX251bGw7CiAgICBzdGF0aWMgRGF0YSBzaGFyZWRfZW1wdHk7CiAgICBEYXRhICpkOwog
ICAgUUJ5dGVBcnJheShEYXRhICpkZCwgaW50ICwgaW50ICkgOiBkKGRkKSB7fQogICAgdm9pZCBy
ZWFsbG9jKGludCBhbGxvYyk7CiAgICB2b2lkIGV4cGFuZChpbnQgaSk7CiAgICBRQnl0ZUFycmF5
IG51bFRlcm1pbmF0ZWQoKSBjb25zdDsKCiAgICBmcmllbmQgY2xhc3MgUUJ5dGVSZWY7CiAgICBm
cmllbmQgY2xhc3MgUVN0cmluZzsKICAgIGZyaWVuZCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBRQnl0ZUFycmF5IHFVbmNvbXByZXNzKGNvbnN0IHVjaGFyICpkYXRhLCBp
bnQgbmJ5dGVzKTsKcHVibGljOgogICAgdHlwZWRlZiBEYXRhICogRGF0YVB0cjsKICAgIGlubGlu
ZSBEYXRhUHRyICZkYXRhX3B0cigpIHsgcmV0dXJuIGQ7IH0KfTsKCmlubGluZSBRQnl0ZUFycmF5
OjpRQnl0ZUFycmF5KCk6IGQoJnNoYXJlZF9udWxsKSB7IGQtPnJlZi5yZWYoKTsgfQppbmxpbmUg
UUJ5dGVBcnJheTo6flFCeXRlQXJyYXkoKSB7IGlmICghZC0+cmVmLmRlcmVmKCkpIHFGcmVlKGQp
OyB9CmlubGluZSBpbnQgUUJ5dGVBcnJheTo6c2l6ZSgpIGNvbnN0CnsgcmV0dXJuIGQtPnNpemU7
IH0KIyAzOTUgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWJ5dGVhcnJheS5oIgppbmxpbmUg
Y2hhciBRQnl0ZUFycmF5OjphdChpbnQgaSkgY29uc3QKeyAoKCEoaSA+PSAwICYmIGkgPCBzaXpl
KCkpKSA/IHF0X2Fzc2VydCgiaSA+PSAwICYmIGkgPCBzaXplKCkiLCIvb3B0L2xvY2FsL2luY2x1
ZGUvUXRDb3JlL3FieXRlYXJyYXkuaCIsMzk2KSA6IHF0X25vb3AoKSk7IHJldHVybiBkLT5kYXRh
W2ldOyB9CmlubGluZSBjaGFyIFFCeXRlQXJyYXk6Om9wZXJhdG9yW10oaW50IGkpIGNvbnN0Cnsg
KCghKGkgPj0gMCAmJiBpIDwgc2l6ZSgpKSkgPyBxdF9hc3NlcnQoImkgPj0gMCAmJiBpIDwgc2l6
ZSgpIiwiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xYnl0ZWFycmF5LmgiLDM5OCkgOiBxdF9u
b29wKCkpOyByZXR1cm4gZC0+ZGF0YVtpXTsgfQppbmxpbmUgY2hhciBRQnl0ZUFycmF5OjpvcGVy
YXRvcltdKHVpbnQgaSkgY29uc3QKeyAoKCEoaSA8IHVpbnQoc2l6ZSgpKSkpID8gcXRfYXNzZXJ0
KCJpIDwgdWludChzaXplKCkpIiwiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xYnl0ZWFycmF5
LmgiLDQwMCkgOiBxdF9ub29wKCkpOyByZXR1cm4gZC0+ZGF0YVtpXTsgfQoKCmlubGluZSBib29s
IFFCeXRlQXJyYXk6OmlzRW1wdHkoKSBjb25zdAp7IHJldHVybiBkLT5zaXplID09IDA7IH0KCmlu
bGluZSBRQnl0ZUFycmF5OjpvcGVyYXRvciBjb25zdCBjaGFyICooKSBjb25zdAp7IHJldHVybiBk
LT5kYXRhOyB9CmlubGluZSBRQnl0ZUFycmF5OjpvcGVyYXRvciBjb25zdCB2b2lkICooKSBjb25z
dAp7IHJldHVybiBkLT5kYXRhOyB9CgppbmxpbmUgY2hhciAqUUJ5dGVBcnJheTo6ZGF0YSgpCnsg
ZGV0YWNoKCk7IHJldHVybiBkLT5kYXRhOyB9CmlubGluZSBjb25zdCBjaGFyICpRQnl0ZUFycmF5
OjpkYXRhKCkgY29uc3QKeyByZXR1cm4gZC0+ZGF0YTsgfQppbmxpbmUgY29uc3QgY2hhciAqUUJ5
dGVBcnJheTo6Y29uc3REYXRhKCkgY29uc3QKeyByZXR1cm4gZC0+ZGF0YTsgfQppbmxpbmUgdm9p
ZCBRQnl0ZUFycmF5OjpkZXRhY2goKQp7IGlmIChkLT5yZWYgIT0gMSB8fCBkLT5kYXRhICE9IGQt
PmFycmF5KSByZWFsbG9jKGQtPnNpemUpOyB9CmlubGluZSBib29sIFFCeXRlQXJyYXk6OmlzRGV0
YWNoZWQoKSBjb25zdAp7IHJldHVybiBkLT5yZWYgPT0gMTsgfQppbmxpbmUgUUJ5dGVBcnJheTo6
UUJ5dGVBcnJheShjb25zdCBRQnl0ZUFycmF5ICZhKSA6IGQoYS5kKQp7IGQtPnJlZi5yZWYoKTsg
fQoKCgoKCmlubGluZSBpbnQgUUJ5dGVBcnJheTo6Y2FwYWNpdHkoKSBjb25zdAp7IHJldHVybiBk
LT5hbGxvYzsgfQoKaW5saW5lIHZvaWQgUUJ5dGVBcnJheTo6cmVzZXJ2ZShpbnQgYXNpemUpCnsg
aWYgKGQtPnJlZiAhPSAxIHx8IGFzaXplID4gZC0+YWxsb2MpIHJlYWxsb2MoYXNpemUpOyB9Cgpp
bmxpbmUgdm9pZCBRQnl0ZUFycmF5OjpzcXVlZXplKCkKeyBpZiAoZC0+c2l6ZSA8IGQtPmFsbG9j
KSByZWFsbG9jKGQtPnNpemUpOyB9CgpjbGFzcyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKSBRQnl0ZVJlZiB7CiAgICBRQnl0ZUFycmF5ICZhOwogICAgaW50IGk7CiAgICBp
bmxpbmUgUUJ5dGVSZWYoUUJ5dGVBcnJheSAmYXJyYXksIGludCBpZHgpCiAgICAgICAgOiBhKGFy
cmF5KSxpKGlkeCkge30KICAgIGZyaWVuZCBjbGFzcyBRQnl0ZUFycmF5OwpwdWJsaWM6CgoKCgog
ICAgaW5saW5lIG9wZXJhdG9yIGNoYXIoKSBjb25zdAogICAgICAgIHsgcmV0dXJuIGkgPCBhLmQt
PnNpemUgPyBhLmQtPmRhdGFbaV0gOiBjaGFyKDApOyB9CgogICAgaW5saW5lIFFCeXRlUmVmICZv
cGVyYXRvcj0oY2hhciBjKQogICAgICAgIHsgaWYgKGkgPj0gYS5kLT5zaXplKSBhLmV4cGFuZChp
KTsgZWxzZSBhLmRldGFjaCgpOwogICAgICAgICAgYS5kLT5kYXRhW2ldID0gYzsgcmV0dXJuICp0
aGlzOyB9CiAgICBpbmxpbmUgUUJ5dGVSZWYgJm9wZXJhdG9yPShjb25zdCBRQnl0ZVJlZiAmYykK
ICAgICAgICB7IGlmIChpID49IGEuZC0+c2l6ZSkgYS5leHBhbmQoaSk7IGVsc2UgYS5kZXRhY2go
KTsKICAgICAgICAgIGEuZC0+ZGF0YVtpXSA9IGMuYS5kLT5kYXRhW2MuaV07IHJldHVybiAqdGhp
czsgfQogICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjaGFyIGMpIGNvbnN0CiAgICB7IHJldHVy
biBhLmQtPmRhdGFbaV0gPT0gYzsgfQogICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjaGFyIGMp
IGNvbnN0CiAgICB7IHJldHVybiBhLmQtPmRhdGFbaV0gIT0gYzsgfQogICAgaW5saW5lIGJvb2wg
b3BlcmF0b3I+KGNoYXIgYykgY29uc3QKICAgIHsgcmV0dXJuIGEuZC0+ZGF0YVtpXSA+IGM7IH0K
ICAgIGlubGluZSBib29sIG9wZXJhdG9yPj0oY2hhciBjKSBjb25zdAogICAgeyByZXR1cm4gYS5k
LT5kYXRhW2ldID49IGM7IH0KICAgIGlubGluZSBib29sIG9wZXJhdG9yPChjaGFyIGMpIGNvbnN0
CiAgICB7IHJldHVybiBhLmQtPmRhdGFbaV0gPCBjOyB9CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRv
cjw9KGNoYXIgYykgY29uc3QKICAgIHsgcmV0dXJuIGEuZC0+ZGF0YVtpXSA8PSBjOyB9Cn07Cgpp
bmxpbmUgUUJ5dGVSZWYgUUJ5dGVBcnJheTo6b3BlcmF0b3JbXShpbnQgaSkKeyAoKCEoaSA+PSAw
KSkgPyBxdF9hc3NlcnQoImkgPj0gMCIsIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWJ5dGVh
cnJheS5oIiw0NzIpIDogcXRfbm9vcCgpKTsgcmV0dXJuIFFCeXRlUmVmKCp0aGlzLCBpKTsgfQpp
bmxpbmUgUUJ5dGVSZWYgUUJ5dGVBcnJheTo6b3BlcmF0b3JbXSh1aW50IGkpCnsgcmV0dXJuIFFC
eXRlUmVmKCp0aGlzLCBpKTsgfQppbmxpbmUgUUJ5dGVBcnJheTo6aXRlcmF0b3IgUUJ5dGVBcnJh
eTo6YmVnaW4oKQp7IGRldGFjaCgpOyByZXR1cm4gZC0+ZGF0YTsgfQppbmxpbmUgUUJ5dGVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgUUJ5dGVBcnJheTo6YmVnaW4oKSBjb25zdAp7IHJldHVybiBkLT5k
YXRhOyB9CmlubGluZSBRQnl0ZUFycmF5Ojpjb25zdF9pdGVyYXRvciBRQnl0ZUFycmF5Ojpjb25z
dEJlZ2luKCkgY29uc3QKeyByZXR1cm4gZC0+ZGF0YTsgfQppbmxpbmUgUUJ5dGVBcnJheTo6aXRl
cmF0b3IgUUJ5dGVBcnJheTo6ZW5kKCkKeyBkZXRhY2goKTsgcmV0dXJuIGQtPmRhdGEgKyBkLT5z
aXplOyB9CmlubGluZSBRQnl0ZUFycmF5Ojpjb25zdF9pdGVyYXRvciBRQnl0ZUFycmF5OjplbmQo
KSBjb25zdAp7IHJldHVybiBkLT5kYXRhICsgZC0+c2l6ZTsgfQppbmxpbmUgUUJ5dGVBcnJheTo6
Y29uc3RfaXRlcmF0b3IgUUJ5dGVBcnJheTo6Y29uc3RFbmQoKSBjb25zdAp7IHJldHVybiBkLT5k
YXRhICsgZC0+c2l6ZTsgfQppbmxpbmUgUUJ5dGVBcnJheSAmUUJ5dGVBcnJheTo6b3BlcmF0b3Ir
PShjaGFyIGMpCnsgcmV0dXJuIGFwcGVuZChjKTsgfQppbmxpbmUgUUJ5dGVBcnJheSAmUUJ5dGVB
cnJheTo6b3BlcmF0b3IrPShjb25zdCBjaGFyICpzKQp7IHJldHVybiBhcHBlbmQocyk7IH0KaW5s
aW5lIFFCeXRlQXJyYXkgJlFCeXRlQXJyYXk6Om9wZXJhdG9yKz0oY29uc3QgUUJ5dGVBcnJheSAm
YSkKeyByZXR1cm4gYXBwZW5kKGEpOyB9CmlubGluZSB2b2lkIFFCeXRlQXJyYXk6OnB1c2hfYmFj
ayhjaGFyIGMpCnsgYXBwZW5kKGMpOyB9CmlubGluZSB2b2lkIFFCeXRlQXJyYXk6OnB1c2hfYmFj
ayhjb25zdCBjaGFyICpjKQp7IGFwcGVuZChjKTsgfQppbmxpbmUgdm9pZCBRQnl0ZUFycmF5Ojpw
dXNoX2JhY2soY29uc3QgUUJ5dGVBcnJheSAmYSkKeyBhcHBlbmQoYSk7IH0KaW5saW5lIHZvaWQg
UUJ5dGVBcnJheTo6cHVzaF9mcm9udChjaGFyIGMpCnsgcHJlcGVuZChjKTsgfQppbmxpbmUgdm9p
ZCBRQnl0ZUFycmF5OjpwdXNoX2Zyb250KGNvbnN0IGNoYXIgKmMpCnsgcHJlcGVuZChjKTsgfQpp
bmxpbmUgdm9pZCBRQnl0ZUFycmF5OjpwdXNoX2Zyb250KGNvbnN0IFFCeXRlQXJyYXkgJmEpCnsg
cHJlcGVuZChhKTsgfQppbmxpbmUgUUJvb2wgUUJ5dGVBcnJheTo6Y29udGFpbnMoY29uc3QgUUJ5
dGVBcnJheSAmYSkgY29uc3QKeyByZXR1cm4gUUJvb2woaW5kZXhPZihhKSAhPSAtMSk7IH0KaW5s
aW5lIFFCb29sIFFCeXRlQXJyYXk6OmNvbnRhaW5zKGNoYXIgYykgY29uc3QKeyByZXR1cm4gUUJv
b2woaW5kZXhPZihjKSAhPSAtMSk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRQnl0
ZUFycmF5ICZhMSwgY29uc3QgUUJ5dGVBcnJheSAmYTIpCnsgcmV0dXJuIChhMS5zaXplKCkgPT0g
YTIuc2l6ZSgpKSAmJiAobWVtY21wKGExLmNvbnN0RGF0YSgpLCBhMi5jb25zdERhdGEoKSwgYTEu
c2l6ZSgpKT09MCk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRQnl0ZUFycmF5ICZh
MSwgY29uc3QgY2hhciAqYTIpCnsgcmV0dXJuIGEyID8gcXN0cmNtcChhMSxhMikgPT0gMCA6IGEx
LmlzRW1wdHkoKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoYXIgKmExLCBjb25z
dCBRQnl0ZUFycmF5ICZhMikKeyByZXR1cm4gYTEgPyBxc3RyY21wKGExLGEyKSA9PSAwIDogYTIu
aXNFbXB0eSgpOyB9CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUUJ5dGVBcnJheSAmYTEs
IGNvbnN0IFFCeXRlQXJyYXkgJmEyKQp7IHJldHVybiAhKGExPT1hMik7IH0KaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBRQnl0ZUFycmF5ICZhMSwgY29uc3QgY2hhciAqYTIpCnsgcmV0dXJu
IGEyID8gcXN0cmNtcChhMSxhMikgIT0gMCA6ICFhMS5pc0VtcHR5KCk7IH0KaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBjaGFyICphMSwgY29uc3QgUUJ5dGVBcnJheSAmYTIpCnsgcmV0dXJu
IGExID8gcXN0cmNtcChhMSxhMikgIT0gMCA6ICFhMi5pc0VtcHR5KCk7IH0KaW5saW5lIGJvb2wg
b3BlcmF0b3I8KGNvbnN0IFFCeXRlQXJyYXkgJmExLCBjb25zdCBRQnl0ZUFycmF5ICZhMikKeyBy
ZXR1cm4gcXN0cmNtcChhMSwgYTIpIDwgMDsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0
IFFCeXRlQXJyYXkgJmExLCBjb25zdCBjaGFyICphMikKeyByZXR1cm4gcXN0cmNtcChhMSwgYTIp
IDwgMDsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgY2hhciAqYTEsIGNvbnN0IFFCeXRl
QXJyYXkgJmEyKQp7IHJldHVybiBxc3RyY21wKGExLCBhMikgPCAwOyB9CmlubGluZSBib29sIG9w
ZXJhdG9yPD0oY29uc3QgUUJ5dGVBcnJheSAmYTEsIGNvbnN0IFFCeXRlQXJyYXkgJmEyKQp7IHJl
dHVybiBxc3RyY21wKGExLCBhMikgPD0gMDsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0
IFFCeXRlQXJyYXkgJmExLCBjb25zdCBjaGFyICphMikKeyByZXR1cm4gcXN0cmNtcChhMSwgYTIp
IDw9IDA7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBjaGFyICphMSwgY29uc3QgUUJ5
dGVBcnJheSAmYTIpCnsgcmV0dXJuIHFzdHJjbXAoYTEsIGEyKSA8PSAwOyB9CmlubGluZSBib29s
IG9wZXJhdG9yPihjb25zdCBRQnl0ZUFycmF5ICZhMSwgY29uc3QgUUJ5dGVBcnJheSAmYTIpCnsg
cmV0dXJuIHFzdHJjbXAoYTEsIGEyKSA+IDA7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0
IFFCeXRlQXJyYXkgJmExLCBjb25zdCBjaGFyICphMikKeyByZXR1cm4gcXN0cmNtcChhMSwgYTIp
ID4gMDsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgY2hhciAqYTEsIGNvbnN0IFFCeXRl
QXJyYXkgJmEyKQp7IHJldHVybiBxc3RyY21wKGExLCBhMikgPiAwOyB9CmlubGluZSBib29sIG9w
ZXJhdG9yPj0oY29uc3QgUUJ5dGVBcnJheSAmYTEsIGNvbnN0IFFCeXRlQXJyYXkgJmEyKQp7IHJl
dHVybiBxc3RyY21wKGExLCBhMikgPj0gMDsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0
IFFCeXRlQXJyYXkgJmExLCBjb25zdCBjaGFyICphMikKeyByZXR1cm4gcXN0cmNtcChhMSwgYTIp
ID49IDA7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBjaGFyICphMSwgY29uc3QgUUJ5
dGVBcnJheSAmYTIpCnsgcmV0dXJuIHFzdHJjbXAoYTEsIGEyKSA+PSAwOyB9CmlubGluZSBjb25z
dCBRQnl0ZUFycmF5IG9wZXJhdG9yKyhjb25zdCBRQnl0ZUFycmF5ICZhMSwgY29uc3QgUUJ5dGVB
cnJheSAmYTIpCnsgcmV0dXJuIFFCeXRlQXJyYXkoYTEpICs9IGEyOyB9CmlubGluZSBjb25zdCBR
Qnl0ZUFycmF5IG9wZXJhdG9yKyhjb25zdCBRQnl0ZUFycmF5ICZhMSwgY29uc3QgY2hhciAqYTIp
CnsgcmV0dXJuIFFCeXRlQXJyYXkoYTEpICs9IGEyOyB9CmlubGluZSBjb25zdCBRQnl0ZUFycmF5
IG9wZXJhdG9yKyhjb25zdCBRQnl0ZUFycmF5ICZhMSwgY2hhciBhMikKeyByZXR1cm4gUUJ5dGVB
cnJheShhMSkgKz0gYTI7IH0KaW5saW5lIGNvbnN0IFFCeXRlQXJyYXkgb3BlcmF0b3IrKGNvbnN0
IGNoYXIgKmExLCBjb25zdCBRQnl0ZUFycmF5ICZhMikKeyByZXR1cm4gUUJ5dGVBcnJheShhMSkg
Kz0gYTI7IH0KaW5saW5lIGNvbnN0IFFCeXRlQXJyYXkgb3BlcmF0b3IrKGNoYXIgYTEsIGNvbnN0
IFFCeXRlQXJyYXkgJmEyKQp7IHJldHVybiBRQnl0ZUFycmF5KCZhMSwgMSkgKz0gYTI7IH0KaW5s
aW5lIFFCb29sIFFCeXRlQXJyYXk6OmNvbnRhaW5zKGNvbnN0IGNoYXIgKmMpIGNvbnN0CnsgcmV0
dXJuIFFCb29sKGluZGV4T2YoYykgIT0gLTEpOyB9CmlubGluZSBRQnl0ZUFycmF5ICZRQnl0ZUFy
cmF5OjpyZXBsYWNlKGNoYXIgYmVmb3JlLCBjb25zdCBjaGFyICpjKQp7IHJldHVybiByZXBsYWNl
KCZiZWZvcmUsIDEsIGMsIHFzdHJsZW4oYykpOyB9CmlubGluZSBRQnl0ZUFycmF5ICZRQnl0ZUFy
cmF5OjpyZXBsYWNlKGNvbnN0IFFCeXRlQXJyYXkgJmJlZm9yZSwgY29uc3QgY2hhciAqYykKeyBy
ZXR1cm4gcmVwbGFjZShiZWZvcmUuY29uc3REYXRhKCksIGJlZm9yZS5zaXplKCksIGMsIHFzdHJs
ZW4oYykpOyB9CmlubGluZSBRQnl0ZUFycmF5ICZRQnl0ZUFycmF5OjpyZXBsYWNlKGNvbnN0IGNo
YXIgKmJlZm9yZSwgY29uc3QgY2hhciAqYWZ0ZXIpCnsgcmV0dXJuIHJlcGxhY2UoYmVmb3JlLCBx
c3RybGVuKGJlZm9yZSksIGFmdGVyLCBxc3RybGVuKGFmdGVyKSk7IH0KCmlubGluZSBRQnl0ZUFy
cmF5ICZRQnl0ZUFycmF5OjpzZXROdW0oc2hvcnQgbiwgaW50IGJhc2UpCnsgcmV0dXJuIHNldE51
bShxbG9uZ2xvbmcobiksIGJhc2UpOyB9CmlubGluZSBRQnl0ZUFycmF5ICZRQnl0ZUFycmF5Ojpz
ZXROdW0odXNob3J0IG4sIGludCBiYXNlKQp7IHJldHVybiBzZXROdW0ocXVsb25nbG9uZyhuKSwg
YmFzZSk7IH0KaW5saW5lIFFCeXRlQXJyYXkgJlFCeXRlQXJyYXk6OnNldE51bShpbnQgbiwgaW50
IGJhc2UpCnsgcmV0dXJuIHNldE51bShxbG9uZ2xvbmcobiksIGJhc2UpOyB9CmlubGluZSBRQnl0
ZUFycmF5ICZRQnl0ZUFycmF5OjpzZXROdW0odWludCBuLCBpbnQgYmFzZSkKeyByZXR1cm4gc2V0
TnVtKHF1bG9uZ2xvbmcobiksIGJhc2UpOyB9CmlubGluZSBRQnl0ZUFycmF5ICZRQnl0ZUFycmF5
OjpzZXROdW0oZmxvYXQgbiwgY2hhciBmLCBpbnQgcHJlYykKeyByZXR1cm4gc2V0TnVtKGRvdWJs
ZShuKSxmLHByZWMpOyB9CgoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
IFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFtICYsIGNvbnN0IFFCeXRlQXJyYXkg
Jik7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFEYXRhU3RyZWFtICZv
cGVyYXRvcj4+KFFEYXRhU3RyZWFtICYsIFFCeXRlQXJyYXkgJik7CgoKCl9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFCeXRlQXJyYXkgcUNvbXByZXNzKGNvbnN0IHVjaGFy
KiBkYXRhLCBpbnQgbmJ5dGVzLCBpbnQgY29tcHJlc3Npb25MZXZlbCA9IC0xKTsKX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUUJ5dGVBcnJheSBxVW5jb21wcmVzcyhjb25z
dCB1Y2hhciogZGF0YSwgaW50IG5ieXRlcyk7CmlubGluZSBRQnl0ZUFycmF5IHFDb21wcmVzcyhj
b25zdCBRQnl0ZUFycmF5JiBkYXRhLCBpbnQgY29tcHJlc3Npb25MZXZlbCA9IC0xKQp7IHJldHVy
biBxQ29tcHJlc3MocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhciAqPihkYXRhLmNvbnN0RGF0
YSgpKSwgZGF0YS5zaXplKCksIGNvbXByZXNzaW9uTGV2ZWwpOyB9CmlubGluZSBRQnl0ZUFycmF5
IHFVbmNvbXByZXNzKGNvbnN0IFFCeXRlQXJyYXkmIGRhdGEpCnsgcmV0dXJuIHFVbmNvbXByZXNz
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIqPihkYXRhLmNvbnN0RGF0YSgpKSwgZGF0YS5z
aXplKCkpOyB9CgoKdGVtcGxhdGUgPD4gY2xhc3MgUVR5cGVJbmZvPFFCeXRlQXJyYXkgPiB7IHB1
YmxpYzogZW51bSB7IGlzQ29tcGxleCA9ICgoKFFfTU9WQUJMRV9UWVBFKSAmIFFfUFJJTUlUSVZF
X1RZUEUpID09IDApLCBpc1N0YXRpYyA9ICgoKFFfTU9WQUJMRV9UWVBFKSAmIChRX01PVkFCTEVf
VFlQRSB8IFFfUFJJTUlUSVZFX1RZUEUpKSA9PSAwKSwgaXNMYXJnZSA9IChzaXplb2YoUUJ5dGVB
cnJheSk+c2l6ZW9mKHZvaWQqKSksIGlzUG9pbnRlciA9IGZhbHNlLCBpc0R1bW15ID0gKCgoUV9N
T1ZBQkxFX1RZUEUpICYgUV9EVU1NWV9UWVBFKSAhPSAwKSB9OyBzdGF0aWMgaW5saW5lIGNvbnN0
IGNoYXIgKm5hbWUoKSB7IHJldHVybiAiUUJ5dGVBcnJheSI7IH0gfTsKdGVtcGxhdGUgPD4gaW5s
aW5lIGJvb2wgcUlzRGV0YWNoZWQ8UUJ5dGVBcnJheT4oUUJ5dGVBcnJheSAmdCkgeyByZXR1cm4g
dC5pc0RldGFjaGVkKCk7IH0gdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgcVN3YXA8UUJ5dGVBcnJh
eT4oUUJ5dGVBcnJheSAmdmFsdWUxLCBRQnl0ZUFycmF5ICZ2YWx1ZTIpIHsgcVN3YXAodmFsdWUx
LmRhdGFfcHRyKCksIHZhbHVlMi5kYXRhX3B0cigpKTsgfQoKCgoKIyA0NyAiL29wdC9sb2NhbC9p
bmNsdWRlL1F0Q29yZS9xc3RyaW5nLmgiIDIKIyA2MCAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29y
ZS9xc3RyaW5nLmgiCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9zdHJpbmciIDEgMwojIDQx
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL3N0cmluZyIgMwojZGVmaW5lIF9HTElCQ1hYX1NUUklO
RyAxCgogICAgICAgCiMgNDQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvc3RyaW5nIiAzCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2NoYXJfdHJhaXRzLmgiIDEgMwojIDQxICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvY2hhcl90cmFpdHMuaCIgMwojZGVmaW5lIF9DSEFS
X1RSQUlUU19IIDEKCiAgICAgICAKIyA0NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2No
YXJfdHJhaXRzLmgiIDMKCgoKCgpuYW1lc3BhY2UgX19nbnVfY3h4IHsKIyA2MSAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2NoYXJfdHJhaXRzLmgiIDMKICB0ZW1wbGF0ZSA8Y2xhc3MgX0No
YXJUPgogICAgc3RydWN0IF9DaGFyX3R5cGVzCiAgICB7CiAgICAgIHR5cGVkZWYgdW5zaWduZWQg
bG9uZyBpbnRfdHlwZTsKICAgICAgdHlwZWRlZiBzdGQ6OnN0cmVhbXBvcyBwb3NfdHlwZTsKICAg
ICAgdHlwZWRlZiBzdGQ6OnN0cmVhbW9mZiBvZmZfdHlwZTsKICAgICAgdHlwZWRlZiBzdGQ6Om1i
c3RhdGVfdCBzdGF0ZV90eXBlOwogICAgfTsKIyA4NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL2NoYXJfdHJhaXRzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBzdHJ1
Y3QgY2hhcl90cmFpdHMKICAgIHsKICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9DaGFyX3R5cGVzPF9DaGFyVD46OmludF90eXBlIGludF90eXBl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9DaGFyX3R5cGVzPF9DaGFyVD46OnBvc190eXBlIHBv
c190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9DaGFyX3R5cGVzPF9DaGFyVD46Om9mZl90
eXBlIG9mZl90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9DaGFyX3R5cGVzPF9DaGFyVD46
OnN0YXRlX3R5cGUgc3RhdGVfdHlwZTsKCiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIGFzc2lnbihj
aGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMikKICAgICAgeyBfX2MxID0gX19j
MjsgfQoKICAgICAgc3RhdGljIGJvb2wKICAgICAgZXEoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBj
b25zdCBjaGFyX3R5cGUmIF9fYzIpCiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsgfQoKICAg
ICAgc3RhdGljIGJvb2wKICAgICAgbHQoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFy
X3R5cGUmIF9fYzIpCiAgICAgIHsgcmV0dXJuIF9fYzEgPCBfX2MyOyB9CgogICAgICBzdGF0aWMg
aW50CiAgICAgIGNvbXBhcmUoY29uc3QgY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUq
IF9fczIsIHN0ZDo6c2l6ZV90IF9fbik7CgogICAgICBzdGF0aWMgc3RkOjpzaXplX3QKICAgICAg
bGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogX19zKTsKCiAgICAgIHN0YXRpYyBjb25zdCBjaGFyX3R5
cGUqCiAgICAgIGZpbmQoY29uc3QgY2hhcl90eXBlKiBfX3MsIHN0ZDo6c2l6ZV90IF9fbiwgY29u
c3QgY2hhcl90eXBlJiBfX2EpOwoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgbW92ZShj
aGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc3RkOjpzaXplX3QgX19uKTsK
CiAgICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIGNvcHkoY2hhcl90eXBlKiBfX3MxLCBjb25z
dCBjaGFyX3R5cGUqIF9fczIsIHN0ZDo6c2l6ZV90IF9fbik7CgogICAgICBzdGF0aWMgY2hhcl90
eXBlKgogICAgICBhc3NpZ24oY2hhcl90eXBlKiBfX3MsIHN0ZDo6c2l6ZV90IF9fbiwgY2hhcl90
eXBlIF9fYSk7CgogICAgICBzdGF0aWMgY2hhcl90eXBlCiAgICAgIHRvX2NoYXJfdHlwZShjb25z
dCBpbnRfdHlwZSYgX19jKQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KF9f
Yyk7IH0KCiAgICAgIHN0YXRpYyBpbnRfdHlwZQogICAgICB0b19pbnRfdHlwZShjb25zdCBjaGFy
X3R5cGUmIF9fYykKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50X3R5cGU+KF9fYyk7IH0K
CiAgICAgIHN0YXRpYyBib29sCiAgICAgIGVxX2ludF90eXBlKGNvbnN0IGludF90eXBlJiBfX2Mx
LCBjb25zdCBpbnRfdHlwZSYgX19jMikKICAgICAgeyByZXR1cm4gX19jMSA9PSBfX2MyOyB9Cgog
ICAgICBzdGF0aWMgaW50X3R5cGUKICAgICAgZW9mKCkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50X3R5cGU+KCgtMSkpOyB9CgogICAgICBzdGF0aWMgaW50X3R5cGUKICAgICAgbm90X2Vv
Zihjb25zdCBpbnRfdHlwZSYgX19jKQogICAgICB7IHJldHVybiAhZXFfaW50X3R5cGUoX19jLCBl
b2YoKSkgPyBfX2MgOiB0b19pbnRfdHlwZShjaGFyX3R5cGUoKSk7IH0KICAgIH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGludAogICAgY2hhcl90cmFpdHM8X0NoYXJUPjo6CiAg
ICBjb21wYXJlKGNvbnN0IGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBz
dGQ6OnNpemVfdCBfX24pCiAgICB7CiAgICAgIGZvciAoc3RkOjpzaXplX3QgX19pID0gMDsgX19p
IDwgX19uOyArK19faSkKIGlmIChsdChfX3MxW19faV0sIF9fczJbX19pXSkpCiAgIHJldHVybiAt
MTsKIGVsc2UgaWYgKGx0KF9fczJbX19pXSwgX19zMVtfX2ldKSkKICAgcmV0dXJuIDE7CiAgICAg
IHJldHVybiAwOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBzdGQ6OnNp
emVfdAogICAgY2hhcl90cmFpdHM8X0NoYXJUPjo6CiAgICBsZW5ndGgoY29uc3QgY2hhcl90eXBl
KiBfX3ApCiAgICB7CiAgICAgIHN0ZDo6c2l6ZV90IF9faSA9IDA7CiAgICAgIHdoaWxlICghZXEo
X19wW19faV0sIGNoYXJfdHlwZSgpKSkKICAgICAgICArK19faTsKICAgICAgcmV0dXJuIF9faTsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY29uc3QgdHlwZW5hbWUgY2hh
cl90cmFpdHM8X0NoYXJUPjo6Y2hhcl90eXBlKgogICAgY2hhcl90cmFpdHM8X0NoYXJUPjo6CiAg
ICBmaW5kKGNvbnN0IGNoYXJfdHlwZSogX19zLCBzdGQ6OnNpemVfdCBfX24sIGNvbnN0IGNoYXJf
dHlwZSYgX19hKQogICAgewogICAgICBmb3IgKHN0ZDo6c2l6ZV90IF9faSA9IDA7IF9faSA8IF9f
bjsgKytfX2kpCiAgICAgICAgaWYgKGVxKF9fc1tfX2ldLCBfX2EpKQogICAgICAgICAgcmV0dXJu
IF9fcyArIF9faTsKICAgICAgcmV0dXJuIDA7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVD4KICAgIHR5cGVuYW1lIGNoYXJfdHJhaXRzPF9DaGFyVD46OmNoYXJfdHlwZSoKICAgIGNo
YXJfdHJhaXRzPF9DaGFyVD46OgogICAgbW92ZShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJf
dHlwZSogX19zMiwgc3RkOjpzaXplX3QgX19uKQogICAgewogICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8X0NoYXJUKj4oc3RkOjptZW1tb3ZlKF9fczEsIF9fczIsCiAgICAgICAgICAgIF9fbiAqIHNp
emVvZihjaGFyX3R5cGUpKSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAg
IHR5cGVuYW1lIGNoYXJfdHJhaXRzPF9DaGFyVD46OmNoYXJfdHlwZSoKICAgIGNoYXJfdHJhaXRz
PF9DaGFyVD46OgogICAgY29weShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19z
Miwgc3RkOjpzaXplX3QgX19uKQogICAgewogICAgICBzdGQ6OmNvcHkoX19zMiwgX19zMiArIF9f
biwgX19zMSk7CiAgICAgIHJldHVybiBfX3MxOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQ+CiAgICB0eXBlbmFtZSBjaGFyX3RyYWl0czxfQ2hhclQ+OjpjaGFyX3R5cGUqCiAgICBj
aGFyX3RyYWl0czxfQ2hhclQ+OjoKICAgIGFzc2lnbihjaGFyX3R5cGUqIF9fcywgc3RkOjpzaXpl
X3QgX19uLCBjaGFyX3R5cGUgX19hKQogICAgewogICAgICBzdGQ6OmZpbGxfbihfX3MsIF9fbiwg
X19hKTsKICAgICAgcmV0dXJuIF9fczsKICAgIH0KCn0KCm5hbWVzcGFjZSBzdGQgewojIDIyNSAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2NoYXJfdHJhaXRzLmgiIDMKICB0ZW1wbGF0ZTxj
bGFzcyBfQ2hhclQ+CiAgICBzdHJ1Y3QgY2hhcl90cmFpdHMgOiBwdWJsaWMgX19nbnVfY3h4Ojpj
aGFyX3RyYWl0czxfQ2hhclQ+CiAgICB7IH07CgoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IGNo
YXJfdHJhaXRzPGNoYXI+CiAgICB7CiAgICAgIHR5cGVkZWYgY2hhciBjaGFyX3R5cGU7CiAgICAg
IHR5cGVkZWYgaW50IGludF90eXBlOwogICAgICB0eXBlZGVmIHN0cmVhbXBvcyBwb3NfdHlwZTsK
ICAgICAgdHlwZWRlZiBzdHJlYW1vZmYgb2ZmX3R5cGU7CiAgICAgIHR5cGVkZWYgbWJzdGF0ZV90
IHN0YXRlX3R5cGU7CgogICAgICBzdGF0aWMgdm9pZAogICAgICBhc3NpZ24oY2hhcl90eXBlJiBf
X2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpCiAgICAgIHsgX19jMSA9IF9fYzI7IH0KCiAgICAg
IHN0YXRpYyBib29sCiAgICAgIGVxKGNvbnN0IGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90
eXBlJiBfX2MyKQogICAgICB7IHJldHVybiBfX2MxID09IF9fYzI7IH0KCiAgICAgIHN0YXRpYyBi
b29sCiAgICAgIGx0KGNvbnN0IGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2My
KQogICAgICB7IHJldHVybiBfX2MxIDwgX19jMjsgfQoKICAgICAgc3RhdGljIGludAogICAgICBj
b21wYXJlKGNvbnN0IGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXpl
X3QgX19uKQogICAgICB7IHJldHVybiBtZW1jbXAoX19zMSwgX19zMiwgX19uKTsgfQoKICAgICAg
c3RhdGljIHNpemVfdAogICAgICBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBfX3MpCiAgICAgIHsg
cmV0dXJuIHN0cmxlbihfX3MpOyB9CgogICAgICBzdGF0aWMgY29uc3QgY2hhcl90eXBlKgogICAg
ICBmaW5kKGNvbnN0IGNoYXJfdHlwZSogX19zLCBzaXplX3QgX19uLCBjb25zdCBjaGFyX3R5cGUm
IF9fYSkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4obWVtY2hy
KF9fcywgX19hLCBfX24pKTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgbW92ZShj
aGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAgICAg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlKj4obWVtbW92ZShfX3MxLCBfX3MyLCBfX24p
KTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgY29weShjaGFyX3R5cGUqIF9fczEs
IGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAgICAgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y2hhcl90eXBlKj4obWVtY3B5KF9fczEsIF9fczIsIF9fbikpOyB9CgogICAgICBzdGF0
aWMgY2hhcl90eXBlKgogICAgICBhc3NpZ24oY2hhcl90eXBlKiBfX3MsIHNpemVfdCBfX24sIGNo
YXJfdHlwZSBfX2EpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlwZSo+KG1lbXNl
dChfX3MsIF9fYSwgX19uKSk7IH0KCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUKICAgICAgdG9fY2hh
cl90eXBlKGNvbnN0IGludF90eXBlJiBfX2MpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNo
YXJfdHlwZT4oX19jKTsgfQoKCgogICAgICBzdGF0aWMgaW50X3R5cGUKICAgICAgdG9faW50X3R5
cGUoY29uc3QgY2hhcl90eXBlJiBfX2MpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludF90
eXBlPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihfX2MpKTsgfQoKICAgICAgc3RhdGljIGJv
b2wKICAgICAgZXFfaW50X3R5cGUoY29uc3QgaW50X3R5cGUmIF9fYzEsIGNvbnN0IGludF90eXBl
JiBfX2MyKQogICAgICB7IHJldHVybiBfX2MxID09IF9fYzI7IH0KCiAgICAgIHN0YXRpYyBpbnRf
dHlwZQogICAgICBlb2YoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oKC0xKSk7IH0K
CiAgICAgIHN0YXRpYyBpbnRfdHlwZQogICAgICBub3RfZW9mKGNvbnN0IGludF90eXBlJiBfX2Mp
CiAgICAgIHsgcmV0dXJuIChfX2MgPT0gZW9mKCkpID8gMCA6IF9fYzsgfQogIH07CgoKCgogIHRl
bXBsYXRlPD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0czx3Y2hhcl90PgogICAgewogICAgICB0eXBl
ZGVmIHdjaGFyX3QgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIHdpbnRfdCBpbnRfdHlwZTsKICAg
ICAgdHlwZWRlZiBzdHJlYW1vZmYgb2ZmX3R5cGU7CiAgICAgIHR5cGVkZWYgd3N0cmVhbXBvcyBw
b3NfdHlwZTsKICAgICAgdHlwZWRlZiBtYnN0YXRlX3Qgc3RhdGVfdHlwZTsKCiAgICAgIHN0YXRp
YyB2b2lkCiAgICAgIGFzc2lnbihjaGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19j
MikKICAgICAgeyBfX2MxID0gX19jMjsgfQoKICAgICAgc3RhdGljIGJvb2wKICAgICAgZXEoY29u
c3QgY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpCiAgICAgIHsgcmV0dXJu
IF9fYzEgPT0gX19jMjsgfQoKICAgICAgc3RhdGljIGJvb2wKICAgICAgbHQoY29uc3QgY2hhcl90
eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpCiAgICAgIHsgcmV0dXJuIF9fYzEgPCBf
X2MyOyB9CgogICAgICBzdGF0aWMgaW50CiAgICAgIGNvbXBhcmUoY29uc3QgY2hhcl90eXBlKiBf
X3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsgcmV0dXJuIHdt
ZW1jbXAoX19zMSwgX19zMiwgX19uKTsgfQoKICAgICAgc3RhdGljIHNpemVfdAogICAgICBsZW5n
dGgoY29uc3QgY2hhcl90eXBlKiBfX3MpCiAgICAgIHsgcmV0dXJuIHdjc2xlbihfX3MpOyB9Cgog
ICAgICBzdGF0aWMgY29uc3QgY2hhcl90eXBlKgogICAgICBmaW5kKGNvbnN0IGNoYXJfdHlwZSog
X19zLCBzaXplX3QgX19uLCBjb25zdCBjaGFyX3R5cGUmIF9fYSkKICAgICAgeyByZXR1cm4gd21l
bWNocihfX3MsIF9fYSwgX19uKTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgbW92
ZShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAg
ICAgeyByZXR1cm4gd21lbW1vdmUoX19zMSwgX19zMiwgX19uKTsgfQoKICAgICAgc3RhdGljIGNo
YXJfdHlwZSoKICAgICAgY29weShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19z
Miwgc2l6ZV90IF9fbikKICAgICAgeyByZXR1cm4gd21lbWNweShfX3MxLCBfX3MyLCBfX24pOyB9
CgogICAgICBzdGF0aWMgY2hhcl90eXBlKgogICAgICBhc3NpZ24oY2hhcl90eXBlKiBfX3MsIHNp
emVfdCBfX24sIGNoYXJfdHlwZSBfX2EpCiAgICAgIHsgcmV0dXJuIHdtZW1zZXQoX19zLCBfX2Es
IF9fbik7IH0KCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUKICAgICAgdG9fY2hhcl90eXBlKGNvbnN0
IGludF90eXBlJiBfX2MpIHsgcmV0dXJuIGNoYXJfdHlwZShfX2MpOyB9CgogICAgICBzdGF0aWMg
aW50X3R5cGUKICAgICAgdG9faW50X3R5cGUoY29uc3QgY2hhcl90eXBlJiBfX2MpIHsgcmV0dXJu
IGludF90eXBlKF9fYyk7IH0KCiAgICAgIHN0YXRpYyBib29sCiAgICAgIGVxX2ludF90eXBlKGNv
bnN0IGludF90eXBlJiBfX2MxLCBjb25zdCBpbnRfdHlwZSYgX19jMikKICAgICAgeyByZXR1cm4g
X19jMSA9PSBfX2MyOyB9CgogICAgICBzdGF0aWMgaW50X3R5cGUKICAgICAgZW9mKCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50X3R5cGU+KCgoX19kYXJ3aW5fd2ludF90KS0xKSk7IH0KCiAgICAg
IHN0YXRpYyBpbnRfdHlwZQogICAgICBub3RfZW9mKGNvbnN0IGludF90eXBlJiBfX2MpCiAgICAg
IHsgcmV0dXJuIGVxX2ludF90eXBlKF9fYywgZW9mKCkpID8gMCA6IF9fYzsgfQogIH07CgoKfQoj
IDQ4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL3N0cmluZyIgMiAzCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL29zdHJlYW1faW5zZXJ0LmgiIDEgMwojIDM2ICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvb3N0cmVhbV9pbnNlcnQuaCIgMwojZGVmaW5lIF9PU1RSRUFNX0lO
U0VSVF9IIDEKCiAgICAgICAKIyAzOSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL29zdHJl
YW1faW5zZXJ0LmgiIDMKCgoKbmFtZXNwYWNlIHN0ZCB7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSB2b2lkCiAgICBfX29zdHJlYW1fd3Jp
dGUoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX291dCwKICAgICAgY29uc3QgX0No
YXJUKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAgewogICAgICB0eXBlZGVmIGJhc2ljX29zdHJl
YW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHN0cmVh
bXNpemUgX19wdXQgPSBfX291dC5yZGJ1ZigpLT5zcHV0bihfX3MsIF9fbik7CiAgICAgIGlmIChf
X3B1dCAhPSBfX24pCiBfX291dC5zZXRzdGF0ZShfX2lvc19iYXNlOjpiYWRiaXQpOwogICAgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUg
dm9pZAogICAgX19vc3RyZWFtX2ZpbGwoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBf
X291dCwgc3RyZWFtc2l6ZSBfX24pCiAgICB7CiAgICAgIHR5cGVkZWYgYmFzaWNfb3N0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9f
b3N0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgX0NoYXJUIF9f
YyA9IF9fb3V0LmZpbGwoKTsKICAgICAgZm9yICg7IF9fbiA+IDA7IC0tX19uKQogewogICBjb25z
dCB0eXBlbmFtZSBfVHJhaXRzOjppbnRfdHlwZSBfX3B1dCA9IF9fb3V0LnJkYnVmKCktPnNwdXRj
KF9fYyk7CiAgIGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShfX3B1dCwgX1RyYWl0czo6ZW9mKCkp
KQogICAgIHsKICAgICAgIF9fb3V0LnNldHN0YXRlKF9faW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAg
ICBicmVhazsKICAgICB9CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIF9f
b3N0cmVhbV9pbnNlcnQoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX291dCwKICAg
ICAgIGNvbnN0IF9DaGFyVCogX19zLCBzdHJlYW1zaXplIF9fbikKICAgIHsKICAgICAgdHlwZWRl
ZiBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAg
ICB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6c2VudHJ5IF9fY2VyYihfX291dCk7CiAgICAgIGlm
IChfX2NlcmIpCiB7CiAgIHRyeQogICAgIHsKICAgICAgIGNvbnN0IHN0cmVhbXNpemUgX193ID0g
X19vdXQud2lkdGgoKTsKICAgICAgIGlmIChfX3cgPiBfX24pCiAgewogICAgY29uc3QgYm9vbCBf
X2xlZnQgPSAoKF9fb3V0LmZsYWdzKCkKICAgICAmIF9faW9zX2Jhc2U6OmFkanVzdGZpZWxkKQog
ICAgICAgICAgID09IF9faW9zX2Jhc2U6OmxlZnQpOwogICAgaWYgKCFfX2xlZnQpCiAgICAgIF9f
b3N0cmVhbV9maWxsKF9fb3V0LCBfX3cgLSBfX24pOwogICAgaWYgKF9fb3V0Lmdvb2QoKSkKICAg
ICAgX19vc3RyZWFtX3dyaXRlKF9fb3V0LCBfX3MsIF9fbik7CiAgICBpZiAoX19sZWZ0ICYmIF9f
b3V0Lmdvb2QoKSkKICAgICAgX19vc3RyZWFtX2ZpbGwoX19vdXQsIF9fdyAtIF9fbik7CiAgfQog
ICAgICAgZWxzZQogIF9fb3N0cmVhbV93cml0ZShfX291dCwgX19zLCBfX24pOwogICAgICAgX19v
dXQud2lkdGgoMCk7CiAgICAgfQogICBjYXRjaCguLi4pCiAgICAgeyBfX291dC5fTV9zZXRzdGF0
ZShfX2lvc19iYXNlOjpiYWRiaXQpOyB9CiB9CiAgICAgIHJldHVybiBfX291dDsKICAgIH0KCgoK
CgogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBfX29zdHJlYW1faW5zZXJ0KG9zdHJlYW0mLCBj
b25zdCBjaGFyKiwgc3RyZWFtc2l6ZSk7CgoKICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0mIF9f
b3N0cmVhbV9pbnNlcnQod29zdHJlYW0mLCBjb25zdCB3Y2hhcl90KiwKICAgICAgICAgIHN0cmVh
bXNpemUpOwoKCgp9CiMgNTIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvc3RyaW5nIiAyIDMKCiMg
MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9mdW5jdGlvbi5oIiAxIDMKIyA2MiAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9mdW5jdGlvbi5oIiAzCiNkZWZpbmUgX0ZV
TkNUSU9OX0ggMQoKbmFtZXNwYWNlIHN0ZCB7CiMgMTAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKICB0ZW1wbGF0ZSA8Y2xhc3MgX0FyZywgY2xhc3MgX1Jl
c3VsdD4KICAgIHN0cnVjdCB1bmFyeV9mdW5jdGlvbgogICAgewogICAgICB0eXBlZGVmIF9Bcmcg
YXJndW1lbnRfdHlwZTsKCgogICAgICB0eXBlZGVmIF9SZXN1bHQgcmVzdWx0X3R5cGU7CiAgICB9
OwoKCgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0FyZzEsIGNsYXNzIF9BcmcyLCBjbGFzcyBfUmVzdWx0
PgogICAgc3RydWN0IGJpbmFyeV9mdW5jdGlvbgogICAgewogICAgICB0eXBlZGVmIF9BcmcxIGZp
cnN0X2FyZ3VtZW50X3R5cGU7CgoKICAgICAgdHlwZWRlZiBfQXJnMiBzZWNvbmRfYXJndW1lbnRf
dHlwZTsKICAgICAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBlOwogICAgfTsKIyAxMzMgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfZnVuY3Rpb24uaCIgMwogIHRlbXBsYXRlIDxj
bGFzcyBfVHA+CiAgICBzdHJ1Y3QgcGx1cyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBf
VHAsIF9UcD4KICAgIHsKICAgICAgX1RwCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gs
IGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggKyBfX3k7IH0KICAgIH07
CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgogICAgc3RydWN0IG1pbnVzIDogcHVibGljIGJpbmFy
eV9mdW5jdGlvbjxfVHAsIF9UcCwgX1RwPgogICAgewogICAgICBfVHAKICAgICAgb3BlcmF0b3Io
KShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9f
eCAtIF9feTsgfQogICAgfTsKCgogIHRlbXBsYXRlIDxjbGFzcyBfVHA+CiAgICBzdHJ1Y3QgbXVs
dGlwbGllcyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIF9UcD4KICAgIHsKICAg
ICAgX1RwCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBj
b25zdAogICAgICB7IHJldHVybiBfX3ggKiBfX3k7IH0KICAgIH07CgoKICB0ZW1wbGF0ZSA8Y2xh
c3MgX1RwPgogICAgc3RydWN0IGRpdmlkZXMgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwg
X1RwLCBfVHA+CiAgICB7CiAgICAgIF9UcAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194
LCBjb25zdCBfVHAmIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4gX194IC8gX195OyB9CiAgICB9
OwoKCiAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KICAgIHN0cnVjdCBtb2R1bHVzIDogcHVibGljIGJp
bmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgX1RwPgogICAgewogICAgICBfVHAKICAgICAgb3BlcmF0
b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAgIHsgcmV0dXJu
IF9feCAlIF9feTsgfQogICAgfTsKCgogIHRlbXBsYXRlIDxjbGFzcyBfVHA+CiAgICBzdHJ1Y3Qg
bmVnYXRlIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwPgogICAgewogICAgICBfVHAK
ICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gLV9f
eDsgfQogICAgfTsKIyAxOTUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfZnVuY3Rp
b24uaCIgMwogIHRlbXBsYXRlIDxjbGFzcyBfVHA+CiAgICBzdHJ1Y3QgZXF1YWxfdG8gOiBwdWJs
aWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBib29sPgogICAgewogICAgICBib29sCiAgICAg
IG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7
IHJldHVybiBfX3ggPT0gX195OyB9CiAgICB9OwoKCiAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KICAg
IHN0cnVjdCBub3RfZXF1YWxfdG8gOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBi
b29sPgogICAgewogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNv
bnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggIT0gX195OyB9CiAgICB9OwoK
CiAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KICAgIHN0cnVjdCBncmVhdGVyIDogcHVibGljIGJpbmFy
eV9mdW5jdGlvbjxfVHAsIF9UcCwgYm9vbD4KICAgIHsKICAgICAgYm9vbAogICAgICBvcGVyYXRv
cigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4g
X194ID4gX195OyB9CiAgICB9OwoKCiAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KICAgIHN0cnVjdCBs
ZXNzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgYm9vbD4KICAgIHsKICAgICAg
Ym9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29u
c3QKICAgICAgeyByZXR1cm4gX194IDwgX195OyB9CiAgICB9OwoKCiAgdGVtcGxhdGUgPGNsYXNz
IF9UcD4KICAgIHN0cnVjdCBncmVhdGVyX2VxdWFsIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxf
VHAsIF9UcCwgYm9vbD4KICAgIHsKICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9U
cCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4gX194ID49IF9feTsg
fQogICAgfTsKCgogIHRlbXBsYXRlIDxjbGFzcyBfVHA+CiAgICBzdHJ1Y3QgbGVzc19lcXVhbCA6
IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIGJvb2w+CiAgICB7CiAgICAgIGJvb2wK
ICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuIF9feCA8PSBfX3k7IH0KICAgIH07CiMgMjU2ICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgogICAg
c3RydWN0IGxvZ2ljYWxfYW5kIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgYm9v
bD4KICAgIHsKICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25z
dCBfVHAmIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4gX194ICYmIF9feTsgfQogICAgfTsKCgog
IHRlbXBsYXRlIDxjbGFzcyBfVHA+CiAgICBzdHJ1Y3QgbG9naWNhbF9vciA6IHB1YmxpYyBiaW5h
cnlfZnVuY3Rpb248X1RwLCBfVHAsIGJvb2w+CiAgICB7CiAgICAgIGJvb2wKICAgICAgb3BlcmF0
b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAgIHsgcmV0dXJu
IF9feCB8fCBfX3k7IH0KICAgIH07CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgogICAgc3RydWN0
IGxvZ2ljYWxfbm90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCwgYm9vbD4KICAgIHsKICAg
ICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194KSBjb25zdAogICAgICB7IHJl
dHVybiAhX194OyB9CiAgICB9OwojIDMxMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0
bF9mdW5jdGlvbi5oIiAzCiAgdGVtcGxhdGUgPGNsYXNzIF9QcmVkaWNhdGU+CiAgICBjbGFzcyB1
bmFyeV9uZWdhdGUKICAgIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9QcmVkaWNh
dGU6OmFyZ3VtZW50X3R5cGUsIGJvb2w+CiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9QcmVk
aWNhdGUgX01fcHJlZDsKICAgIHB1YmxpYzoKICAgICAgZXhwbGljaXQKICAgICAgdW5hcnlfbmVn
YXRlKGNvbnN0IF9QcmVkaWNhdGUmIF9feCkgOiBfTV9wcmVkKF9feCkge30KCiAgICAgIGJvb2wK
ICAgICAgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBfUHJlZGljYXRlOjphcmd1bWVudF90eXBl
JiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuICFfTV9wcmVkKF9feCk7IH0KICAgIH07CgoKICB0
ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4KICAgIGlubGluZSB1bmFyeV9uZWdhdGU8X1ByZWRp
Y2F0ZT4KICAgIG5vdDEoY29uc3QgX1ByZWRpY2F0ZSYgX19wcmVkKQogICAgeyByZXR1cm4gdW5h
cnlfbmVnYXRlPF9QcmVkaWNhdGU+KF9fcHJlZCk7IH0KCgogIHRlbXBsYXRlIDxjbGFzcyBfUHJl
ZGljYXRlPgogICAgY2xhc3MgYmluYXJ5X25lZ2F0ZQogICAgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0
aW9uPHR5cGVuYW1lIF9QcmVkaWNhdGU6OmZpcnN0X2FyZ3VtZW50X3R5cGUsCiAgICAgICAgdHlw
ZW5hbWUgX1ByZWRpY2F0ZTo6c2Vjb25kX2FyZ3VtZW50X3R5cGUsCiAgICAgICAgYm9vbD4KICAg
IHsKICAgIHByb3RlY3RlZDoKICAgICAgX1ByZWRpY2F0ZSBfTV9wcmVkOwogICAgcHVibGljOgog
ICAgICBleHBsaWNpdAogICAgICBiaW5hcnlfbmVnYXRlKGNvbnN0IF9QcmVkaWNhdGUmIF9feCkK
ICAgICAgOiBfTV9wcmVkKF9feCkgeyB9CgogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoY29u
c3QgdHlwZW5hbWUgX1ByZWRpY2F0ZTo6Zmlyc3RfYXJndW1lbnRfdHlwZSYgX194LAogICBjb25z
dCB0eXBlbmFtZSBfUHJlZGljYXRlOjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX195KSBjb25zdAog
ICAgICB7IHJldHVybiAhX01fcHJlZChfX3gsIF9feSk7IH0KICAgIH07CgoKICB0ZW1wbGF0ZSA8
Y2xhc3MgX1ByZWRpY2F0ZT4KICAgIGlubGluZSBiaW5hcnlfbmVnYXRlPF9QcmVkaWNhdGU+CiAg
ICBub3QyKGNvbnN0IF9QcmVkaWNhdGUmIF9fcHJlZCkKICAgIHsgcmV0dXJuIGJpbmFyeV9uZWdh
dGU8X1ByZWRpY2F0ZT4oX19wcmVkKTsgfQojIDM5MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL3N0bF9mdW5jdGlvbi5oIiAzCiAgdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRpb24+CiAgICBj
bGFzcyBiaW5kZXIxc3QKICAgIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVy
YXRpb246OnNlY29uZF9hcmd1bWVudF90eXBlLAogICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6
cmVzdWx0X3R5cGU+CiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9PcGVyYXRpb24gb3A7CiAg
ICAgIHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUgdmFsdWU7CiAgICBw
dWJsaWM6CiAgICAgIGJpbmRlcjFzdChjb25zdCBfT3BlcmF0aW9uJiBfX3gsCiAgY29uc3QgdHlw
ZW5hbWUgX09wZXJhdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSYgX195KQogICAgICA6IG9wKF9f
eCksIHZhbHVlKF9feSkge30KCiAgICAgIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBl
CiAgICAgIG9wZXJhdG9yKCkoY29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3Vt
ZW50X3R5cGUmIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gb3AodmFsdWUsIF9feCk7IH0KCgoK
ICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGUKICAgICAgb3BlcmF0b3IoKSh0
eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX194KSBjb25zdAogICAg
ICB7IHJldHVybiBvcCh2YWx1ZSwgX194KTsgfQogICAgfTsKCgogIHRlbXBsYXRlIDxjbGFzcyBf
T3BlcmF0aW9uLCBjbGFzcyBfVHA+CiAgICBpbmxpbmUgYmluZGVyMXN0PF9PcGVyYXRpb24+CiAg
ICBiaW5kMXN0KGNvbnN0IF9PcGVyYXRpb24mIF9fZm4sIGNvbnN0IF9UcCYgX194KQogICAgewog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUgX0Fy
ZzFfdHlwZTsKICAgICAgcmV0dXJuIGJpbmRlcjFzdDxfT3BlcmF0aW9uPihfX2ZuLCBfQXJnMV90
eXBlKF9feCkpOwogICAgfQoKCiAgdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRpb24+CiAgICBjbGFz
cyBiaW5kZXIybmQKICAgIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVyYXRp
b246OmZpcnN0X2FyZ3VtZW50X3R5cGUsCiAgICAgICB0eXBlbmFtZSBfT3BlcmF0aW9uOjpyZXN1
bHRfdHlwZT4KICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAgX09wZXJhdGlvbiBvcDsKICAgICAg
dHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgdmFsdWU7CiAgICBwdWJs
aWM6CiAgICAgIGJpbmRlcjJuZChjb25zdCBfT3BlcmF0aW9uJiBfX3gsCiAgY29uc3QgdHlwZW5h
bWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUmIF9feSkKICAgICAgOiBvcChfX3gp
LCB2YWx1ZShfX3kpIHt9CgogICAgICB0eXBlbmFtZSBfT3BlcmF0aW9uOjpyZXN1bHRfdHlwZQog
ICAgICBvcGVyYXRvcigpKGNvbnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50
X3R5cGUmIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gb3AoX194LCB2YWx1ZSk7IH0KCgoKICAg
ICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGUKICAgICAgb3BlcmF0b3IoKSh0eXBl
bmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0CiAgICAgIHsg
cmV0dXJuIG9wKF9feCwgdmFsdWUpOyB9CiAgICB9OwoKCiAgdGVtcGxhdGUgPGNsYXNzIF9PcGVy
YXRpb24sIGNsYXNzIF9UcD4KICAgIGlubGluZSBiaW5kZXIybmQ8X09wZXJhdGlvbj4KICAgIGJp
bmQybmQoY29uc3QgX09wZXJhdGlvbiYgX19mbiwgY29uc3QgX1RwJiBfX3gpCiAgICB7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgX0FyZzJf
dHlwZTsKICAgICAgcmV0dXJuIGJpbmRlcjJuZDxfT3BlcmF0aW9uPihfX2ZuLCBfQXJnMl90eXBl
KF9feCkpOwogICAgfQojIDQ4MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9mdW5j
dGlvbi5oIiAzCiAgdGVtcGxhdGUgPGNsYXNzIF9BcmcsIGNsYXNzIF9SZXN1bHQ+CiAgICBjbGFz
cyBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9Bcmcs
IF9SZXN1bHQ+CiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9SZXN1bHQgKCpfTV9wdHIpKF9B
cmcpOwogICAgcHVibGljOgogICAgICBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uKCkge30KCiAg
ICAgIGV4cGxpY2l0CiAgICAgIHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24oX1Jlc3VsdCAoKl9f
eCkoX0FyZykpCiAgICAgIDogX01fcHRyKF9feCkge30KCiAgICAgIF9SZXN1bHQKICAgICAgb3Bl
cmF0b3IoKShfQXJnIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcHRyKF9feCk7IH0KICAg
IH07CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0FyZywgY2xhc3MgX1Jlc3VsdD4KICAgIGlubGluZSBw
b2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uPF9BcmcsIF9SZXN1bHQ+CiAgICBwdHJfZnVuKF9SZXN1
bHQgKCpfX3gpKF9BcmcpKQogICAgeyByZXR1cm4gcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxf
QXJnLCBfUmVzdWx0PihfX3gpOyB9CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0FyZzEsIGNsYXNzIF9B
cmcyLCBjbGFzcyBfUmVzdWx0PgogICAgY2xhc3MgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24K
ICAgIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfQXJnMSwgX0FyZzIsIF9SZXN1bHQ+CiAgICB7
CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9SZXN1bHQgKCpfTV9wdHIpKF9BcmcxLCBfQXJnMik7CiAg
ICBwdWJsaWM6CiAgICAgIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uKCkge30KCiAgICAgIGV4
cGxpY2l0CiAgICAgIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uKF9SZXN1bHQgKCpfX3gpKF9B
cmcxLCBfQXJnMikpCiAgICAgIDogX01fcHRyKF9feCkge30KCiAgICAgIF9SZXN1bHQKICAgICAg
b3BlcmF0b3IoKShfQXJnMSBfX3gsIF9BcmcyIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4gX01f
cHRyKF9feCwgX195KTsgfQogICAgfTsKCgogIHRlbXBsYXRlIDxjbGFzcyBfQXJnMSwgY2xhc3Mg
X0FyZzIsIGNsYXNzIF9SZXN1bHQ+CiAgICBpbmxpbmUgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rp
b248X0FyZzEsIF9BcmcyLCBfUmVzdWx0PgogICAgcHRyX2Z1bihfUmVzdWx0ICgqX194KShfQXJn
MSwgX0FyZzIpKQogICAgeyByZXR1cm4gcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb248X0FyZzEs
IF9BcmcyLCBfUmVzdWx0PihfX3gpOyB9CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgogICAgc3Ry
dWN0IF9JZGVudGl0eSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsX1RwPgogICAgewogICAg
ICBfVHAmCiAgICAgIG9wZXJhdG9yKCkoX1RwJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9f
eDsgfQoKICAgICAgY29uc3QgX1RwJgogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194KSBj
b25zdAogICAgICB7IHJldHVybiBfX3g7IH0KICAgIH07CgogIHRlbXBsYXRlIDxjbGFzcyBfUGFp
cj4KICAgIHN0cnVjdCBfU2VsZWN0MXN0IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9QYWlyLAog
ICAgICAgICAgIHR5cGVuYW1lIF9QYWlyOjpmaXJzdF90eXBlPgogICAgewogICAgICB0eXBlbmFt
ZSBfUGFpcjo6Zmlyc3RfdHlwZSYKICAgICAgb3BlcmF0b3IoKShfUGFpciYgX194KSBjb25zdAog
ICAgICB7IHJldHVybiBfX3guZmlyc3Q7IH0KCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9QYWlyOjpm
aXJzdF90eXBlJgogICAgICBvcGVyYXRvcigpKGNvbnN0IF9QYWlyJiBfX3gpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIF9feC5maXJzdDsgfQogICAgfTsKCiAgdGVtcGxhdGUgPGNsYXNzIF9QYWlyPgog
ICAgc3RydWN0IF9TZWxlY3QybmQgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1BhaXIsCiAgICAg
ICAgICAgdHlwZW5hbWUgX1BhaXI6OnNlY29uZF90eXBlPgogICAgewogICAgICB0eXBlbmFtZSBf
UGFpcjo6c2Vjb25kX3R5cGUmCiAgICAgIG9wZXJhdG9yKCkoX1BhaXImIF9feCkgY29uc3QKICAg
ICAgeyByZXR1cm4gX194LnNlY29uZDsgfQoKICAgICAgY29uc3QgdHlwZW5hbWUgX1BhaXI6OnNl
Y29uZF90eXBlJgogICAgICBvcGVyYXRvcigpKGNvbnN0IF9QYWlyJiBfX3gpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIF9feC5zZWNvbmQ7IH0KICAgIH07CiMgNTgyICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3Mg
X1RwPgogICAgY2xhc3MgbWVtX2Z1bl90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCosIF9S
ZXQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAgIG1lbV9mdW5fdChfUmV0
IChfVHA6OipfX3BmKSgpKQogICAgICA6IF9NX2YoX19wZikge30KCiAgICAgIF9SZXQKICAgICAg
b3BlcmF0b3IoKShfVHAqIF9fcCkgY29uc3QKICAgICAgeyByZXR1cm4gKF9fcC0+Kl9NX2YpKCk7
IH0KICAgIHByaXZhdGU6CiAgICAgIF9SZXQgKF9UcDo6Kl9NX2YpKCk7CiAgICB9OwoKCiAgdGVt
cGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KICAgIGNsYXNzIGNvbnN0X21lbV9mdW5fdCA6
IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxjb25zdCBfVHAqLCBfUmV0PgogICAgewogICAgcHVibGlj
OgogICAgICBleHBsaWNpdAogICAgICBjb25zdF9tZW1fZnVuX3QoX1JldCAoX1RwOjoqX19wZiko
KSBjb25zdCkKICAgICAgOiBfTV9mKF9fcGYpIHt9CgogICAgICBfUmV0CiAgICAgIG9wZXJhdG9y
KCkoY29uc3QgX1RwKiBfX3ApIGNvbnN0CiAgICAgIHsgcmV0dXJuIChfX3AtPipfTV9mKSgpOyB9
CiAgICBwcml2YXRlOgogICAgICBfUmV0IChfVHA6OipfTV9mKSgpIGNvbnN0OwogICAgfTsKCgog
IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CiAgICBjbGFzcyBtZW1fZnVuX3JlZl90
IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCwgX1JldD4KICAgIHsKICAgIHB1YmxpYzoKICAg
ICAgZXhwbGljaXQKICAgICAgbWVtX2Z1bl9yZWZfdChfUmV0IChfVHA6OipfX3BmKSgpKQogICAg
ICA6IF9NX2YoX19wZikge30KCiAgICAgIF9SZXQKICAgICAgb3BlcmF0b3IoKShfVHAmIF9fcikg
Y29uc3QKICAgICAgeyByZXR1cm4gKF9fci4qX01fZikoKTsgfQogICAgcHJpdmF0ZToKICAgICAg
X1JldCAoX1RwOjoqX01fZikoKTsKICB9OwoKCiAgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNz
IF9UcD4KICAgIGNsYXNzIGNvbnN0X21lbV9mdW5fcmVmX3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rp
b248X1RwLCBfUmV0PgogICAgewogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBjb25z
dF9tZW1fZnVuX3JlZl90KF9SZXQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpCiAgICAgIDogX01fZihf
X3BmKSB7fQoKICAgICAgX1JldAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19yKSBjb25z
dAogICAgICB7IHJldHVybiAoX19yLipfTV9mKSgpOyB9CiAgICBwcml2YXRlOgogICAgICBfUmV0
IChfVHA6OipfTV9mKSgpIGNvbnN0OwogICAgfTsKCgogIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBj
bGFzcyBfVHAsIGNsYXNzIF9Bcmc+CiAgICBjbGFzcyBtZW1fZnVuMV90IDogcHVibGljIGJpbmFy
eV9mdW5jdGlvbjxfVHAqLCBfQXJnLCBfUmV0PgogICAgewogICAgcHVibGljOgogICAgICBleHBs
aWNpdAogICAgICBtZW1fZnVuMV90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpKQogICAgICA6IF9N
X2YoX19wZikge30KCiAgICAgIF9SZXQKICAgICAgb3BlcmF0b3IoKShfVHAqIF9fcCwgX0FyZyBf
X3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIChfX3AtPipfTV9mKShfX3gpOyB9CiAgICBwcml2YXRl
OgogICAgICBfUmV0IChfVHA6OipfTV9mKShfQXJnKTsKICAgIH07CgoKICB0ZW1wbGF0ZSA8Y2xh
c3MgX1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgogICAgY2xhc3MgY29uc3RfbWVtX2Z1bjFf
dCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248Y29uc3QgX1RwKiwgX0FyZywgX1JldD4KICAgIHsK
ICAgIHB1YmxpYzoKICAgICAgZXhwbGljaXQKICAgICAgY29uc3RfbWVtX2Z1bjFfdChfUmV0IChf
VHA6OipfX3BmKShfQXJnKSBjb25zdCkKICAgICAgOiBfTV9mKF9fcGYpIHt9CgogICAgICBfUmV0
CiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwKiBfX3AsIF9BcmcgX194KSBjb25zdAogICAgICB7
IHJldHVybiAoX19wLT4qX01fZikoX194KTsgfQogICAgcHJpdmF0ZToKICAgICAgX1JldCAoX1Rw
OjoqX01fZikoX0FyZykgY29uc3Q7CiAgICB9OwoKCiAgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNs
YXNzIF9UcCwgY2xhc3MgX0FyZz4KICAgIGNsYXNzIG1lbV9mdW4xX3JlZl90IDogcHVibGljIGJp
bmFyeV9mdW5jdGlvbjxfVHAsIF9BcmcsIF9SZXQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGV4
cGxpY2l0CiAgICAgIG1lbV9mdW4xX3JlZl90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpKQogICAg
ICA6IF9NX2YoX19wZikge30KCiAgICAgIF9SZXQKICAgICAgb3BlcmF0b3IoKShfVHAmIF9fciwg
X0FyZyBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIChfX3IuKl9NX2YpKF9feCk7IH0KICAgIHBy
aXZhdGU6CiAgICAgIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpOwogICAgfTsKCgogIHRlbXBsYXRl
IDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CiAgICBjbGFzcyBjb25zdF9tZW1f
ZnVuMV9yZWZfdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfQXJnLCBfUmV0PgogICAg
ewogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBjb25zdF9tZW1fZnVuMV9yZWZfdChf
UmV0IChfVHA6OipfX3BmKShfQXJnKSBjb25zdCkKICAgICAgOiBfTV9mKF9fcGYpIHt9CgogICAg
ICBfUmV0CiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3IsIF9BcmcgX194KSBjb25zdAog
ICAgICB7IHJldHVybiAoX19yLipfTV9mKShfX3gpOyB9CiAgICBwcml2YXRlOgogICAgICBfUmV0
IChfVHA6OipfTV9mKShfQXJnKSBjb25zdDsKICAgIH07CgoKCiAgdGVtcGxhdGUgPGNsYXNzIF9S
ZXQsIGNsYXNzIF9UcD4KICAgIGlubGluZSBtZW1fZnVuX3Q8X1JldCwgX1RwPgogICAgbWVtX2Z1
bihfUmV0IChfVHA6OipfX2YpKCkpCiAgICB7IHJldHVybiBtZW1fZnVuX3Q8X1JldCwgX1RwPihf
X2YpOyB9CgogIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CiAgICBpbmxpbmUgY29u
c3RfbWVtX2Z1bl90PF9SZXQsIF9UcD4KICAgIG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKSgpIGNv
bnN0KQogICAgeyByZXR1cm4gY29uc3RfbWVtX2Z1bl90PF9SZXQsIF9UcD4oX19mKTsgfQoKICB0
ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwPgogICAgaW5saW5lIG1lbV9mdW5fcmVmX3Q8
X1JldCwgX1RwPgogICAgbWVtX2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKSgpKQogICAgeyByZXR1
cm4gbWVtX2Z1bl9yZWZfdDxfUmV0LCBfVHA+KF9fZik7IH0KCiAgdGVtcGxhdGUgPGNsYXNzIF9S
ZXQsIGNsYXNzIF9UcD4KICAgIGlubGluZSBjb25zdF9tZW1fZnVuX3JlZl90PF9SZXQsIF9UcD4K
ICAgIG1lbV9mdW5fcmVmKF9SZXQgKF9UcDo6Kl9fZikoKSBjb25zdCkKICAgIHsgcmV0dXJuIGNv
bnN0X21lbV9mdW5fcmVmX3Q8X1JldCwgX1RwPihfX2YpOyB9CgogIHRlbXBsYXRlIDxjbGFzcyBf
UmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CiAgICBpbmxpbmUgbWVtX2Z1bjFfdDxfUmV0LCBf
VHAsIF9Bcmc+CiAgICBtZW1fZnVuKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykpCiAgICB7IHJldHVy
biBtZW1fZnVuMV90PF9SZXQsIF9UcCwgX0FyZz4oX19mKTsgfQoKICB0ZW1wbGF0ZSA8Y2xhc3Mg
X1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgogICAgaW5saW5lIGNvbnN0X21lbV9mdW4xX3Q8
X1JldCwgX1RwLCBfQXJnPgogICAgbWVtX2Z1bihfUmV0IChfVHA6OipfX2YpKF9BcmcpIGNvbnN0
KQogICAgeyByZXR1cm4gY29uc3RfbWVtX2Z1bjFfdDxfUmV0LCBfVHAsIF9Bcmc+KF9fZik7IH0K
CiAgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KICAgIGlubGlu
ZSBtZW1fZnVuMV9yZWZfdDxfUmV0LCBfVHAsIF9Bcmc+CiAgICBtZW1fZnVuX3JlZihfUmV0IChf
VHA6OipfX2YpKF9BcmcpKQogICAgeyByZXR1cm4gbWVtX2Z1bjFfcmVmX3Q8X1JldCwgX1RwLCBf
QXJnPihfX2YpOyB9CgogIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9B
cmc+CiAgICBpbmxpbmUgY29uc3RfbWVtX2Z1bjFfcmVmX3Q8X1JldCwgX1RwLCBfQXJnPgogICAg
bWVtX2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkKICAgIHsgcmV0dXJuIGNv
bnN0X21lbV9mdW4xX3JlZl90PF9SZXQsIF9UcCwgX0FyZz4oX19mKTsgfQoKCgp9CiMgNTQgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvc3RyaW5nIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDEgMwojIDQyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKI2RlZmluZSBfQkFTSUNfU1RSSU5HX0ggMQoKICAgICAg
IAojIDQ1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKCiMg
MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9leHQvYXRvbWljaXR5LmgiIDEgMwojIDM2ICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2V4dC9hdG9taWNpdHkuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0FU
T01JQ0lUWV9IIDEKCgoKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFy
d2luMTAveDg2XzY0L2JpdHMvYXRvbWljX3dvcmQuaCIgMSAzCiMgMzUgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9hdG9taWNfd29yZC5oIiAz
CiNkZWZpbmUgX0dMSUJDWFhfQVRPTUlDX1dPUkRfSCAxCgp0eXBlZGVmIGludCBfQXRvbWljX3dv
cmQ7CiMgNDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvZXh0L2F0b21pY2l0eS5oIiAyIDMKCm5h
bWVzcGFjZSBfX2dudV9jeHggewoKCgoKCgogIHN0YXRpYyBpbmxpbmUgX0F0b21pY193b3JkCiAg
X19leGNoYW5nZV9hbmRfYWRkKHZvbGF0aWxlIF9BdG9taWNfd29yZCogX19tZW0sIGludCBfX3Zh
bCkKICB7IHJldHVybiBfX3N5bmNfZmV0Y2hfYW5kX2FkZChfX21lbSwgX192YWwpOyB9CgogIHN0
YXRpYyBpbmxpbmUgdm9pZAogIF9fYXRvbWljX2FkZCh2b2xhdGlsZSBfQXRvbWljX3dvcmQqIF9f
bWVtLCBpbnQgX192YWwpCiAgeyBfX3N5bmNfZmV0Y2hfYW5kX2FkZChfX21lbSwgX192YWwpOyB9
CiMgNjYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvZXh0L2F0b21pY2l0eS5oIiAzCiAgc3RhdGlj
IGlubGluZSBfQXRvbWljX3dvcmQKICBfX2V4Y2hhbmdlX2FuZF9hZGRfc2luZ2xlKF9BdG9taWNf
d29yZCogX19tZW0sIGludCBfX3ZhbCkKICB7CiAgICBfQXRvbWljX3dvcmQgX19yZXN1bHQgPSAq
X19tZW07CiAgICAqX19tZW0gKz0gX192YWw7CiAgICByZXR1cm4gX19yZXN1bHQ7CiAgfQoKICBz
dGF0aWMgaW5saW5lIHZvaWQKICBfX2F0b21pY19hZGRfc2luZ2xlKF9BdG9taWNfd29yZCogX19t
ZW0sIGludCBfX3ZhbCkKICB7ICpfX21lbSArPSBfX3ZhbDsgfQoKICBzdGF0aWMgaW5saW5lIF9B
dG9taWNfd29yZAogIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkKICBfX2V4Y2hhbmdlX2Fu
ZF9hZGRfZGlzcGF0Y2goX0F0b21pY193b3JkKiBfX21lbSwgaW50IF9fdmFsKQogIHsKCiAgICBp
ZiAoX19ndGhyZWFkX2FjdGl2ZV9wKCkpCiAgICAgIHJldHVybiBfX2V4Y2hhbmdlX2FuZF9hZGQo
X19tZW0sIF9fdmFsKTsKICAgIGVsc2UKICAgICAgcmV0dXJuIF9fZXhjaGFuZ2VfYW5kX2FkZF9z
aW5nbGUoX19tZW0sIF9fdmFsKTsKCgoKICB9CgogIHN0YXRpYyBpbmxpbmUgdm9pZAogIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSkKICBfX2F0b21pY19hZGRfZGlzcGF0Y2goX0F0b21pY193
b3JkKiBfX21lbSwgaW50IF9fdmFsKQogIHsKCiAgICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wKCkp
CiAgICAgIF9fYXRvbWljX2FkZChfX21lbSwgX192YWwpOwogICAgZWxzZQogICAgICBfX2F0b21p
Y19hZGRfc2luZ2xlKF9fbWVtLCBfX3ZhbCk7CgoKCiAgfQoKfQoKCgoKCiNkZWZpbmUgX0dMSUJD
WFhfUkVBRF9NRU1fQkFSUklFUiBfX2FzbSBfX3ZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKQoKCiNk
ZWZpbmUgX0dMSUJDWFhfV1JJVEVfTUVNX0JBUlJJRVIgX19hc20gX192b2xhdGlsZSAoIiI6Ojoi
bWVtb3J5IikKIyA0NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5o
IiAyIDMKCgpuYW1lc3BhY2Ugc3RkIHsKIyAxMTAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0
cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgY2xhc3MgYmFzaWNfc3RyaW5nCiAgICB7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjp0ZW1wbGF0ZSByZWJpbmQ8X0NoYXJUPjo6b3Ro
ZXIgX0NoYXJUX2FsbG9jX3R5cGU7CgoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfVHJhaXRz
IHRyYWl0c190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFpdHM6OmNoYXJfdHlwZSB2
YWx1ZV90eXBlOwogICAgICB0eXBlZGVmIF9BbGxvYyBhbGxvY2F0b3JfdHlwZTsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBfQ2hhclRfYWxsb2NfdHlwZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfQ2hhclRfYWxsb2NfdHlwZTo6ZGlmZmVyZW5jZV90eXBlIGRp
ZmZlcmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQ2hhclRfYWxsb2NfdHlwZTo6
cmVmZXJlbmNlIHJlZmVyZW5jZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQ2hhclRfYWxsb2Nf
dHlwZTo6Y29uc3RfcmVmZXJlbmNlIGNvbnN0X3JlZmVyZW5jZTsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfQ2hhclRfYWxsb2NfdHlwZTo6cG9pbnRlciBwb2ludGVyOwogICAgICB0eXBlZGVmIHR5
cGVuYW1lIF9DaGFyVF9hbGxvY190eXBlOjpjb25zdF9wb2ludGVyIGNvbnN0X3BvaW50ZXI7CiAg
ICAgIHR5cGVkZWYgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxwb2ludGVyLCBiYXNpY19z
dHJpbmc+IGl0ZXJhdG9yOwogICAgICB0eXBlZGVmIF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0
b3I8Y29uc3RfcG9pbnRlciwgYmFzaWNfc3RyaW5nPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKICAgICAg
dHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVy
c2VfaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9y
PiByZXZlcnNlX2l0ZXJhdG9yOwoKICAgIHByaXZhdGU6CiMgMTQ3ICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc3RydWN0IF9SZXBfYmFzZQogICAg
ICB7CiBzaXplX3R5cGUgX01fbGVuZ3RoOwogc2l6ZV90eXBlIF9NX2NhcGFjaXR5OwogX0F0b21p
Y193b3JkIF9NX3JlZmNvdW50OwogICAgICB9OwoKICAgICAgc3RydWN0IF9SZXAgOiBfUmVwX2Jh
c2UKICAgICAgewoKIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjp0ZW1wbGF0ZSByZWJpbmQ8Y2hh
cj46Om90aGVyIF9SYXdfYnl0ZXNfYWxsb2M7CiMgMTcyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKIHN0YXRpYyBjb25zdCBzaXplX3R5cGUgX1NfbWF4X3Np
emU7CiBzdGF0aWMgY29uc3QgX0NoYXJUIF9TX3Rlcm1pbmFsOwoKCgogICAgICAgIHN0YXRpYyBz
aXplX3R5cGUgX1NfZW1wdHlfcmVwX3N0b3JhZ2VbXTsKCiAgICAgICAgc3RhdGljIF9SZXAmCiAg
ICAgICAgX1NfZW1wdHlfcmVwKCkKICAgICAgICB7CgoKCiAgIHZvaWQqIF9fcCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCZfU19lbXB0eV9yZXBfc3RvcmFnZSk7CiAgIHJldHVybiAqcmVpbnRl
cnByZXRfY2FzdDxfUmVwKj4oX19wKTsKIH0KCiAgICAgICAgYm9vbAogX01faXNfbGVha2VkKCkg
Y29uc3QKICAgICAgICB7IHJldHVybiB0aGlzLT5fTV9yZWZjb3VudCA8IDA7IH0KCiAgICAgICAg
Ym9vbAogX01faXNfc2hhcmVkKCkgY29uc3QKICAgICAgICB7IHJldHVybiB0aGlzLT5fTV9yZWZj
b3VudCA+IDA7IH0KCiAgICAgICAgdm9pZAogX01fc2V0X2xlYWtlZCgpCiAgICAgICAgeyB0aGlz
LT5fTV9yZWZjb3VudCA9IC0xOyB9CgogICAgICAgIHZvaWQKIF9NX3NldF9zaGFyYWJsZSgpCiAg
ICAgICAgeyB0aGlzLT5fTV9yZWZjb3VudCA9IDA7IH0KCiB2b2lkCiBfTV9zZXRfbGVuZ3RoX2Fu
ZF9zaGFyYWJsZShzaXplX3R5cGUgX19uKQogewogICB0aGlzLT5fTV9zZXRfc2hhcmFibGUoKTsK
ICAgdGhpcy0+X01fbGVuZ3RoID0gX19uOwogICB0cmFpdHNfdHlwZTo6YXNzaWduKHRoaXMtPl9N
X3JlZmRhdGEoKVtfX25dLCBfU190ZXJtaW5hbCk7CgoKIH0KCiBfQ2hhclQqCiBfTV9yZWZkYXRh
KCkgdGhyb3coKQogeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxfQ2hhclQqPih0aGlzICsgMSk7
IH0KCiBfQ2hhclQqCiBfTV9ncmFiKGNvbnN0IF9BbGxvYyYgX19hbGxvYzEsIGNvbnN0IF9BbGxv
YyYgX19hbGxvYzIpCiB7CiAgIHJldHVybiAoIV9NX2lzX2xlYWtlZCgpICYmIF9fYWxsb2MxID09
IF9fYWxsb2MyKQogICAgICAgICAgID8gX01fcmVmY29weSgpIDogX01fY2xvbmUoX19hbGxvYzEp
OwogfQoKCiBzdGF0aWMgX1JlcCoKIF9TX2NyZWF0ZShzaXplX3R5cGUsIHNpemVfdHlwZSwgY29u
c3QgX0FsbG9jJik7Cgogdm9pZAogX01fZGlzcG9zZShjb25zdCBfQWxsb2MmIF9fYSkKIHsKCiAg
IGlmIChfX2J1aWx0aW5fZXhwZWN0KHRoaXMgIT0gJl9TX2VtcHR5X3JlcCgpLCBmYWxzZSkpCgog
ICAgIGlmIChfX2dudV9jeHg6Ol9fZXhjaGFuZ2VfYW5kX2FkZF9kaXNwYXRjaCgmdGhpcy0+X01f
cmVmY291bnQsCiAgICAgICAgICAgICAtMSkgPD0gMCkKICAgICAgIF9NX2Rlc3Ryb3koX19hKTsK
IH0KCiB2b2lkCiBfTV9kZXN0cm95KGNvbnN0IF9BbGxvYyYpIHRocm93KCk7CgogX0NoYXJUKgog
X01fcmVmY29weSgpIHRocm93KCkKIHsKCiAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KHRoaXMgIT0g
Jl9TX2VtcHR5X3JlcCgpLCBmYWxzZSkpCgogICAgICAgICAgICBfX2dudV9jeHg6Ol9fYXRvbWlj
X2FkZF9kaXNwYXRjaCgmdGhpcy0+X01fcmVmY291bnQsIDEpOwogICByZXR1cm4gX01fcmVmZGF0
YSgpOwogfQoKIF9DaGFyVCoKIF9NX2Nsb25lKGNvbnN0IF9BbGxvYyYsIHNpemVfdHlwZSBfX3Jl
cyA9IDApOwogICAgICB9OwoKCiAgICAgIHN0cnVjdCBfQWxsb2NfaGlkZXIgOiBfQWxsb2MKICAg
ICAgewogX0FsbG9jX2hpZGVyKF9DaGFyVCogX19kYXQsIGNvbnN0IF9BbGxvYyYgX19hKQogOiBf
QWxsb2MoX19hKSwgX01fcChfX2RhdCkgeyB9CgogX0NoYXJUKiBfTV9wOwogICAgICB9OwoKICAg
IHB1YmxpYzoKCgoKCiAgICAgIHN0YXRpYyBjb25zdCBzaXplX3R5cGUgbnBvcyA9IHN0YXRpY19j
YXN0PHNpemVfdHlwZT4oLTEpOwoKICAgIHByaXZhdGU6CgogICAgICBtdXRhYmxlIF9BbGxvY19o
aWRlciBfTV9kYXRhcGx1czsKCiAgICAgIF9DaGFyVCoKICAgICAgX01fZGF0YSgpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuIF9NX2RhdGFwbHVzLl9NX3A7IH0KCiAgICAgIF9DaGFyVCoKICAgICAgX01f
ZGF0YShfQ2hhclQqIF9fcCkKICAgICAgeyByZXR1cm4gKF9NX2RhdGFwbHVzLl9NX3AgPSBfX3Ap
OyB9CgogICAgICBfUmVwKgogICAgICBfTV9yZXAoKSBjb25zdAogICAgICB7IHJldHVybiAmKChy
ZWludGVycHJldF9jYXN0PF9SZXAqPiAoX01fZGF0YSgpKSlbLTFdKTsgfQoKCgogICAgICBpdGVy
YXRvcgogICAgICBfTV9pYmVnaW4oKSBjb25zdAogICAgICB7IHJldHVybiBpdGVyYXRvcihfTV9k
YXRhKCkpOyB9CgogICAgICBpdGVyYXRvcgogICAgICBfTV9pZW5kKCkgY29uc3QKICAgICAgeyBy
ZXR1cm4gaXRlcmF0b3IoX01fZGF0YSgpICsgdGhpcy0+c2l6ZSgpKTsgfQoKICAgICAgdm9pZAog
ICAgICBfTV9sZWFrKCkKICAgICAgewogaWYgKCFfTV9yZXAoKS0+X01faXNfbGVha2VkKCkpCiAg
IF9NX2xlYWtfaGFyZCgpOwogICAgICB9CgogICAgICBzaXplX3R5cGUKICAgICAgX01fY2hlY2so
c2l6ZV90eXBlIF9fcG9zLCBjb25zdCBjaGFyKiBfX3MpIGNvbnN0CiAgICAgIHsKIGlmIChfX3Bv
cyA+IHRoaXMtPnNpemUoKSkKICAgX190aHJvd19vdXRfb2ZfcmFuZ2UoKF9fcykpOwogcmV0dXJu
IF9fcG9zOwogICAgICB9CgogICAgICB2b2lkCiAgICAgIF9NX2NoZWNrX2xlbmd0aChzaXplX3R5
cGUgX19uMSwgc2l6ZV90eXBlIF9fbjIsIGNvbnN0IGNoYXIqIF9fcykgY29uc3QKICAgICAgewog
aWYgKHRoaXMtPm1heF9zaXplKCkgLSAodGhpcy0+c2l6ZSgpIC0gX19uMSkgPCBfX24yKQogICBf
X3Rocm93X2xlbmd0aF9lcnJvcigoX19zKSk7CiAgICAgIH0KCgogICAgICBzaXplX3R5cGUKICAg
ICAgX01fbGltaXQoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19vZmYpIGNvbnN0CiAgICAg
IHsKIGNvbnN0IGJvb2wgX190ZXN0b2ZmID0gX19vZmYgPCB0aGlzLT5zaXplKCkgLSBfX3BvczsK
IHJldHVybiBfX3Rlc3RvZmYgPyBfX29mZiA6IHRoaXMtPnNpemUoKSAtIF9fcG9zOwogICAgICB9
CgoKICAgICAgYm9vbAogICAgICBfTV9kaXNqdW5jdChjb25zdCBfQ2hhclQqIF9fcykgY29uc3QK
ICAgICAgewogcmV0dXJuIChsZXNzPGNvbnN0IF9DaGFyVCo+KCkoX19zLCBfTV9kYXRhKCkpCiAg
fHwgbGVzczxjb25zdCBfQ2hhclQqPigpKF9NX2RhdGEoKSArIHRoaXMtPnNpemUoKSwgX19zKSk7
CiAgICAgIH0KCgoKICAgICAgc3RhdGljIHZvaWQKICAgICAgX01fY29weShfQ2hhclQqIF9fZCwg
Y29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24pCiAgICAgIHsKIGlmIChfX24gPT0gMSkK
ICAgdHJhaXRzX3R5cGU6OmFzc2lnbigqX19kLCAqX19zKTsKIGVsc2UKICAgdHJhaXRzX3R5cGU6
OmNvcHkoX19kLCBfX3MsIF9fbik7CiAgICAgIH0KCiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIF9N
X21vdmUoX0NoYXJUKiBfX2QsIGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19uKQogICAg
ICB7CiBpZiAoX19uID09IDEpCiAgIHRyYWl0c190eXBlOjphc3NpZ24oKl9fZCwgKl9fcyk7CiBl
bHNlCiAgIHRyYWl0c190eXBlOjptb3ZlKF9fZCwgX19zLCBfX24pOwogICAgICB9CgogICAgICBz
dGF0aWMgdm9pZAogICAgICBfTV9hc3NpZ24oX0NoYXJUKiBfX2QsIHNpemVfdHlwZSBfX24sIF9D
aGFyVCBfX2MpCiAgICAgIHsKIGlmIChfX24gPT0gMSkKICAgdHJhaXRzX3R5cGU6OmFzc2lnbigq
X19kLCBfX2MpOwogZWxzZQogICB0cmFpdHNfdHlwZTo6YXNzaWduKF9fZCwgX19uLCBfX2MpOwog
ICAgICB9CgoKCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9JdGVyYXRvcj4KICAgICAgICBzdGF0aWMg
dm9pZAogICAgICAgIF9TX2NvcHlfY2hhcnMoX0NoYXJUKiBfX3AsIF9JdGVyYXRvciBfX2sxLCBf
SXRlcmF0b3IgX19rMikKICAgICAgICB7CiAgIGZvciAoOyBfX2sxICE9IF9fazI7ICsrX19rMSwg
KytfX3ApCiAgICAgdHJhaXRzX3R5cGU6OmFzc2lnbigqX19wLCAqX19rMSk7CiB9CgogICAgICBz
dGF0aWMgdm9pZAogICAgICBfU19jb3B5X2NoYXJzKF9DaGFyVCogX19wLCBpdGVyYXRvciBfX2sx
LCBpdGVyYXRvciBfX2syKQogICAgICB7IF9TX2NvcHlfY2hhcnMoX19wLCBfX2sxLmJhc2UoKSwg
X19rMi5iYXNlKCkpOyB9CgogICAgICBzdGF0aWMgdm9pZAogICAgICBfU19jb3B5X2NoYXJzKF9D
aGFyVCogX19wLCBjb25zdF9pdGVyYXRvciBfX2sxLCBjb25zdF9pdGVyYXRvciBfX2syKQogICAg
ICB7IF9TX2NvcHlfY2hhcnMoX19wLCBfX2sxLmJhc2UoKSwgX19rMi5iYXNlKCkpOyB9CgogICAg
ICBzdGF0aWMgdm9pZAogICAgICBfU19jb3B5X2NoYXJzKF9DaGFyVCogX19wLCBfQ2hhclQqIF9f
azEsIF9DaGFyVCogX19rMikKICAgICAgeyBfTV9jb3B5KF9fcCwgX19rMSwgX19rMiAtIF9fazEp
OyB9CgogICAgICBzdGF0aWMgdm9pZAogICAgICBfU19jb3B5X2NoYXJzKF9DaGFyVCogX19wLCBj
b25zdCBfQ2hhclQqIF9fazEsIGNvbnN0IF9DaGFyVCogX19rMikKICAgICAgeyBfTV9jb3B5KF9f
cCwgX19rMSwgX19rMiAtIF9fazEpOyB9CgogICAgICBzdGF0aWMgaW50CiAgICAgIF9TX2NvbXBh
cmUoc2l6ZV90eXBlIF9feCwgc2l6ZV90eXBlIF9feSkKICAgICAgewogICAgICAgICBpZiAoX194
ID4gX195KQogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgaWYgKF9feCA8IF9feSkKICAg
ICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICByZXR1cm4gMDsKICAgICAgfQoKICAgICAgdm9p
ZAogICAgICBfTV9tdXRhdGUoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19sZW4xLCBzaXpl
X3R5cGUgX19sZW4yKTsKCiAgICAgIHZvaWQKICAgICAgX01fbGVha19oYXJkKCk7CgogICAgICBz
dGF0aWMgX1JlcCYKICAgICAgX1NfZW1wdHlfcmVwKCkKICAgICAgeyByZXR1cm4gX1JlcDo6X1Nf
ZW1wdHlfcmVwKCk7IH0KCiAgICBwdWJsaWM6CgoKCgoKCgogICAgICBpbmxpbmUKICAgICAgYmFz
aWNfc3RyaW5nKCk7CgoKCgogICAgICBleHBsaWNpdAogICAgICBiYXNpY19zdHJpbmcoY29uc3Qg
X0FsbG9jJiBfX2EpOwoKCgoKCgogICAgICBiYXNpY19zdHJpbmcoY29uc3QgYmFzaWNfc3RyaW5n
JiBfX3N0cik7CgoKCgoKCiAgICAgIGJhc2ljX3N0cmluZyhjb25zdCBiYXNpY19zdHJpbmcmIF9f
c3RyLCBzaXplX3R5cGUgX19wb3MsCiAgICAgc2l6ZV90eXBlIF9fbiA9IG5wb3MpOwoKCgoKCgoK
ICAgICAgYmFzaWNfc3RyaW5nKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsIHNpemVfdHlwZSBf
X3BvcywKICAgICBzaXplX3R5cGUgX19uLCBjb25zdCBfQWxsb2MmIF9fYSk7CiMgNDYzICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3Ry
aW5nKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19uLAogICAgIGNvbnN0IF9BbGxvYyYg
X19hID0gX0FsbG9jKCkpOwoKCgoKCiAgICAgIGJhc2ljX3N0cmluZyhjb25zdCBfQ2hhclQqIF9f
cywgY29uc3QgX0FsbG9jJiBfX2EgPSBfQWxsb2MoKSk7CgoKCgoKCiAgICAgIGJhc2ljX3N0cmlu
ZyhzaXplX3R5cGUgX19uLCBfQ2hhclQgX19jLCBjb25zdCBfQWxsb2MmIF9fYSA9IF9BbGxvYygp
KTsKCgoKCgoKCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogICAgICAgIGJh
c2ljX3N0cmluZyhfSW5wdXRJdGVyYXRvciBfX2JlZywgX0lucHV0SXRlcmF0b3IgX19lbmQsCiAg
ICAgICBjb25zdCBfQWxsb2MmIF9fYSA9IF9BbGxvYygpKTsKCgoKCiAgICAgIH5iYXNpY19zdHJp
bmcoKQogICAgICB7IF9NX3JlcCgpLT5fTV9kaXNwb3NlKHRoaXMtPmdldF9hbGxvY2F0b3IoKSk7
IH0KCgoKCgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIG9wZXJhdG9yPShjb25zdCBiYXNpY19z
dHJpbmcmIF9fc3RyKQogICAgICB7IHJldHVybiB0aGlzLT5hc3NpZ24oX19zdHIpOyB9CgoKCgoK
ICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBvcGVyYXRvcj0oY29uc3QgX0NoYXJUKiBfX3MpCiAg
ICAgIHsgcmV0dXJuIHRoaXMtPmFzc2lnbihfX3MpOyB9CiMgNTE4ICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBv
cGVyYXRvcj0oX0NoYXJUIF9fYykKICAgICAgewogdGhpcy0+YXNzaWduKDEsIF9fYyk7CiByZXR1
cm4gKnRoaXM7CiAgICAgIH0KCgoKCgoKICAgICAgaXRlcmF0b3IKICAgICAgYmVnaW4oKQogICAg
ICB7CiBfTV9sZWFrKCk7CiByZXR1cm4gaXRlcmF0b3IoX01fZGF0YSgpKTsKICAgICAgfQoKCgoK
CiAgICAgIGNvbnN0X2l0ZXJhdG9yCiAgICAgIGJlZ2luKCkgY29uc3QKICAgICAgeyByZXR1cm4g
Y29uc3RfaXRlcmF0b3IoX01fZGF0YSgpKTsgfQoKCgoKCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVu
ZCgpCiAgICAgIHsKIF9NX2xlYWsoKTsKIHJldHVybiBpdGVyYXRvcihfTV9kYXRhKCkgKyB0aGlz
LT5zaXplKCkpOwogICAgICB9CgoKCgoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgZW5kKCkg
Y29uc3QKICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoX01fZGF0YSgpICsgdGhpcy0+c2l6
ZSgpKTsgfQoKCgoKCgogICAgICByZXZlcnNlX2l0ZXJhdG9yCiAgICAgIHJiZWdpbigpCiAgICAg
IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IodGhpcy0+ZW5kKCkpOyB9CgoKCgoKCiAgICAgIGNv
bnN0X3JldmVyc2VfaXRlcmF0b3IKICAgICAgcmJlZ2luKCkgY29uc3QKICAgICAgeyByZXR1cm4g
Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcih0aGlzLT5lbmQoKSk7IH0KCgoKCgoKICAgICAgcmV2ZXJz
ZV9pdGVyYXRvcgogICAgICByZW5kKCkKICAgICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcih0
aGlzLT5iZWdpbigpKTsgfQoKCgoKCgogICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCiAgICAg
IHJlbmQoKSBjb25zdAogICAgICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKHRoaXMt
PmJlZ2luKCkpOyB9CgogICAgcHVibGljOgoKCgogICAgICBzaXplX3R5cGUKICAgICAgc2l6ZSgp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3JlcCgpLT5fTV9sZW5ndGg7IH0KCgoKICAgICAgc2l6
ZV90eXBlCiAgICAgIGxlbmd0aCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3JlcCgpLT5fTV9s
ZW5ndGg7IH0KCgogICAgICBzaXplX3R5cGUKICAgICAgbWF4X3NpemUoKSBjb25zdAogICAgICB7
IHJldHVybiBfUmVwOjpfU19tYXhfc2l6ZTsgfQojIDYyOSAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHZvaWQKICAgICAgcmVzaXplKHNpemVfdHlw
ZSBfX24sIF9DaGFyVCBfX2MpOwojIDY0MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jh
c2ljX3N0cmluZy5oIiAzCiAgICAgIHZvaWQKICAgICAgcmVzaXplKHNpemVfdHlwZSBfX24pCiAg
ICAgIHsgdGhpcy0+cmVzaXplKF9fbiwgX0NoYXJUKCkpOyB9CgoKCgoKICAgICAgc2l6ZV90eXBl
CiAgICAgIGNhcGFjaXR5KCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcmVwKCktPl9NX2NhcGFj
aXR5OyB9CiMgNjcxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgi
IDMKICAgICAgdm9pZAogICAgICByZXNlcnZlKHNpemVfdHlwZSBfX3Jlc19hcmcgPSAwKTsKCgoK
CiAgICAgIHZvaWQKICAgICAgY2xlYXIoKQogICAgICB7IF9NX211dGF0ZSgwLCB0aGlzLT5zaXpl
KCksIDApOyB9CgoKCgogICAgICBib29sCiAgICAgIGVtcHR5KCkgY29uc3QKICAgICAgeyByZXR1
cm4gdGhpcy0+c2l6ZSgpID09IDA7IH0KIyA2OTkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0
cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBjb25zdF9yZWZlcmVuY2UKICAgICAgb3BlcmF0b3Jb
XSAoc2l6ZV90eXBlIF9fcG9zKSBjb25zdAogICAgICB7CiA7CiByZXR1cm4gX01fZGF0YSgpW19f
cG9zXTsKICAgICAgfQojIDcxNiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0
cmluZy5oIiAzCiAgICAgIHJlZmVyZW5jZQogICAgICBvcGVyYXRvcltdKHNpemVfdHlwZSBfX3Bv
cykKICAgICAgewoKIDsKCiA7CiBfTV9sZWFrKCk7CiByZXR1cm4gX01fZGF0YSgpW19fcG9zXTsK
ICAgICAgfQojIDczNyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5o
IiAzCiAgICAgIGNvbnN0X3JlZmVyZW5jZQogICAgICBhdChzaXplX3R5cGUgX19uKSBjb25zdAog
ICAgICB7CiBpZiAoX19uID49IHRoaXMtPnNpemUoKSkKICAgX190aHJvd19vdXRfb2ZfcmFuZ2Uo
KCJiYXNpY19zdHJpbmc6OmF0IikpOwogcmV0dXJuIF9NX2RhdGEoKVtfX25dOwogICAgICB9CiMg
NzU2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAg
cmVmZXJlbmNlCiAgICAgIGF0KHNpemVfdHlwZSBfX24pCiAgICAgIHsKIGlmIChfX24gPj0gc2l6
ZSgpKQogICBfX3Rocm93X291dF9vZl9yYW5nZSgoImJhc2ljX3N0cmluZzo6YXQiKSk7CiBfTV9s
ZWFrKCk7CiByZXR1cm4gX01fZGF0YSgpW19fbl07CiAgICAgIH0KCgoKCgoKCiAgICAgIGJhc2lj
X3N0cmluZyYKICAgICAgb3BlcmF0b3IrPShjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKQogICAg
ICB7IHJldHVybiB0aGlzLT5hcHBlbmQoX19zdHIpOyB9CgoKCgoKCiAgICAgIGJhc2ljX3N0cmlu
ZyYKICAgICAgb3BlcmF0b3IrPShjb25zdCBfQ2hhclQqIF9fcykKICAgICAgeyByZXR1cm4gdGhp
cy0+YXBwZW5kKF9fcyk7IH0KCgoKCgoKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBvcGVyYXRv
cis9KF9DaGFyVCBfX2MpCiAgICAgIHsKIHRoaXMtPnB1c2hfYmFjayhfX2MpOwogcmV0dXJuICp0
aGlzOwogICAgICB9CgoKCgoKCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgYXBwZW5kKGNvbnN0
IGJhc2ljX3N0cmluZyYgX19zdHIpOwojIDgxNiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgYXBwZW5kKGNvbnN0
IGJhc2ljX3N0cmluZyYgX19zdHIsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbik7CgoK
CgoKCgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFwcGVuZChjb25zdCBfQ2hhclQqIF9fcywg
c2l6ZV90eXBlIF9fbik7CgoKCgoKCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgYXBwZW5kKGNv
bnN0IF9DaGFyVCogX19zKQogICAgICB7CiA7CiByZXR1cm4gdGhpcy0+YXBwZW5kKF9fcywgdHJh
aXRzX3R5cGU6Omxlbmd0aChfX3MpKTsKICAgICAgfQojIDg0OCAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgYXBw
ZW5kKHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MpOwojIDg1OSAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9JbnB1dEl0
ZXJhdG9yPgogICAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgICBhcHBlbmQoX0lucHV0SXRlcmF0
b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KQogICAgICAgIHsgcmV0dXJuIHRoaXMt
PnJlcGxhY2UoX01faWVuZCgpLCBfTV9pZW5kKCksIF9fZmlyc3QsIF9fbGFzdCk7IH0KCgoKCgog
ICAgICB2b2lkCiAgICAgIHB1c2hfYmFjayhfQ2hhclQgX19jKQogICAgICB7CiBjb25zdCBzaXpl
X3R5cGUgX19sZW4gPSAxICsgdGhpcy0+c2l6ZSgpOwogaWYgKF9fbGVuID4gdGhpcy0+Y2FwYWNp
dHkoKSB8fCBfTV9yZXAoKS0+X01faXNfc2hhcmVkKCkpCiAgIHRoaXMtPnJlc2VydmUoX19sZW4p
OwogdHJhaXRzX3R5cGU6OmFzc2lnbihfTV9kYXRhKClbdGhpcy0+c2l6ZSgpXSwgX19jKTsKIF9N
X3JlcCgpLT5fTV9zZXRfbGVuZ3RoX2FuZF9zaGFyYWJsZShfX2xlbik7CiAgICAgIH0KCgoKCgoK
ICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBhc3NpZ24oY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0
cik7CiMgODk4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMK
ICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBhc3NpZ24oY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0
ciwgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKQogICAgICB7IHJldHVybiB0aGlzLT5h
c3NpZ24oX19zdHIuX01fZGF0YSgpCiAgICAgICArIF9fc3RyLl9NX2NoZWNrKF9fcG9zLCAiYmFz
aWNfc3RyaW5nOjphc3NpZ24iKSwKICAgICAgIF9fc3RyLl9NX2xpbWl0KF9fcG9zLCBfX24pKTsg
fQojIDkxNCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAg
ICAgIGJhc2ljX3N0cmluZyYKICAgICAgYXNzaWduKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5
cGUgX19uKTsKIyA5MjYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19zdHJpbmcu
aCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFzc2lnbihjb25zdCBfQ2hhclQqIF9fcykK
ICAgICAgewogOwogcmV0dXJuIHRoaXMtPmFzc2lnbihfX3MsIHRyYWl0c190eXBlOjpsZW5ndGgo
X19zKSk7CiAgICAgIH0KIyA5NDIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19z
dHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFzc2lnbihzaXplX3R5cGUgX19u
LCBfQ2hhclQgX19jKQogICAgICB7IHJldHVybiBfTV9yZXBsYWNlX2F1eChzaXplX3R5cGUoMCks
IHRoaXMtPnNpemUoKSwgX19uLCBfX2MpOyB9CiMgOTU0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0
b3I+CiAgICAgICAgYmFzaWNfc3RyaW5nJgogICAgICAgIGFzc2lnbihfSW5wdXRJdGVyYXRvciBf
X2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpCiAgICAgICAgeyByZXR1cm4gdGhpcy0+cmVw
bGFjZShfTV9pYmVnaW4oKSwgX01faWVuZCgpLCBfX2ZpcnN0LCBfX2xhc3QpOyB9CiMgOTcxICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgdm9pZAog
ICAgICBpbnNlcnQoaXRlcmF0b3IgX19wLCBzaXplX3R5cGUgX19uLCBfQ2hhclQgX19jKQogICAg
ICB7IHRoaXMtPnJlcGxhY2UoX19wLCBfX3AsIF9fbiwgX19jKTsgfQojIDk4NiAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHRlbXBsYXRlPGNsYXNz
IF9JbnB1dEl0ZXJhdG9yPgogICAgICAgIHZvaWQKICAgICAgICBpbnNlcnQoaXRlcmF0b3IgX19w
LCBfSW5wdXRJdGVyYXRvciBfX2JlZywgX0lucHV0SXRlcmF0b3IgX19lbmQpCiAgICAgICAgeyB0
aGlzLT5yZXBsYWNlKF9fcCwgX19wLCBfX2JlZywgX19lbmQpOyB9CiMgMTAwMiAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYK
ICAgICAgaW5zZXJ0KHNpemVfdHlwZSBfX3BvczEsIGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIp
CiAgICAgIHsgcmV0dXJuIHRoaXMtPmluc2VydChfX3BvczEsIF9fc3RyLCBzaXplX3R5cGUoMCks
IF9fc3RyLnNpemUoKSk7IH0KIyAxMDI0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFz
aWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBpbnNlcnQoc2l6ZV90eXBl
IF9fcG9zMSwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwKICAgICAgc2l6ZV90eXBlIF9fcG9z
Miwgc2l6ZV90eXBlIF9fbikKICAgICAgeyByZXR1cm4gdGhpcy0+aW5zZXJ0KF9fcG9zMSwgX19z
dHIuX01fZGF0YSgpCiAgICAgICArIF9fc3RyLl9NX2NoZWNrKF9fcG9zMiwgImJhc2ljX3N0cmlu
Zzo6aW5zZXJ0IiksCiAgICAgICBfX3N0ci5fTV9saW1pdChfX3BvczIsIF9fbikpOyB9CiMgMTA0
NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJh
c2ljX3N0cmluZyYKICAgICAgaW5zZXJ0KHNpemVfdHlwZSBfX3BvcywgY29uc3QgX0NoYXJUKiBf
X3MsIHNpemVfdHlwZSBfX24pOwojIDEwNjUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9i
YXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGluc2VydChzaXplX3R5
cGUgX19wb3MsIGNvbnN0IF9DaGFyVCogX19zKQogICAgICB7CiA7CiByZXR1cm4gdGhpcy0+aW5z
ZXJ0KF9fcG9zLCBfX3MsIHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7CiAgICAgIH0KIyAxMDg4
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFz
aWNfc3RyaW5nJgogICAgICBpbnNlcnQoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uLCBf
Q2hhclQgX19jKQogICAgICB7IHJldHVybiBfTV9yZXBsYWNlX2F1eChfTV9jaGVjayhfX3Bvcywg
ImJhc2ljX3N0cmluZzo6aW5zZXJ0IiksCiAgICAgICAgIHNpemVfdHlwZSgwKSwgX19uLCBfX2Mp
OyB9CiMgMTEwNSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAz
CiAgICAgIGl0ZXJhdG9yCiAgICAgIGluc2VydChpdGVyYXRvciBfX3AsIF9DaGFyVCBfX2MpCiAg
ICAgIHsKIDsKIGNvbnN0IHNpemVfdHlwZSBfX3BvcyA9IF9fcCAtIF9NX2liZWdpbigpOwogX01f
cmVwbGFjZV9hdXgoX19wb3MsIHNpemVfdHlwZSgwKSwgc2l6ZV90eXBlKDEpLCBfX2MpOwogX01f
cmVwKCktPl9NX3NldF9sZWFrZWQoKTsKIHJldHVybiBpdGVyYXRvcihfTV9kYXRhKCkgKyBfX3Bv
cyk7CiAgICAgIH0KIyAxMTI5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3Ry
aW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBlcmFzZShzaXplX3R5cGUgX19wb3Mg
PSAwLCBzaXplX3R5cGUgX19uID0gbnBvcykKICAgICAgewogX01fbXV0YXRlKF9NX2NoZWNrKF9f
cG9zLCAiYmFzaWNfc3RyaW5nOjplcmFzZSIpLAogICAgX01fbGltaXQoX19wb3MsIF9fbiksIHNp
emVfdHlwZSgwKSk7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KIyAxMTQ1ICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgaXRlcmF0b3IKICAgICAgZXJh
c2UoaXRlcmF0b3IgX19wb3NpdGlvbikKICAgICAgewogOwoKIGNvbnN0IHNpemVfdHlwZSBfX3Bv
cyA9IF9fcG9zaXRpb24gLSBfTV9pYmVnaW4oKTsKIF9NX211dGF0ZShfX3Bvcywgc2l6ZV90eXBl
KDEpLCBzaXplX3R5cGUoMCkpOwogX01fcmVwKCktPl9NX3NldF9sZWFrZWQoKTsKIHJldHVybiBp
dGVyYXRvcihfTV9kYXRhKCkgKyBfX3Bvcyk7CiAgICAgIH0KIyAxMTY1ICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgaXRlcmF0b3IKICAgICAgZXJh
c2UoaXRlcmF0b3IgX19maXJzdCwgaXRlcmF0b3IgX19sYXN0KQogICAgICB7CiA7CgogICAgICAg
IGNvbnN0IHNpemVfdHlwZSBfX3BvcyA9IF9fZmlyc3QgLSBfTV9pYmVnaW4oKTsKIF9NX211dGF0
ZShfX3BvcywgX19sYXN0IC0gX19maXJzdCwgc2l6ZV90eXBlKDApKTsKIF9NX3JlcCgpLT5fTV9z
ZXRfbGVha2VkKCk7CiByZXR1cm4gaXRlcmF0b3IoX01fZGF0YSgpICsgX19wb3MpOwogICAgICB9
CiMgMTE5MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAg
ICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlw
ZSBfX24sIGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIpCiAgICAgIHsgcmV0dXJuIHRoaXMtPnJl
cGxhY2UoX19wb3MsIF9fbiwgX19zdHIuX01fZGF0YSgpLCBfX3N0ci5zaXplKCkpOyB9CiMgMTIx
NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJh
c2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShzaXplX3R5cGUgX19wb3MxLCBzaXplX3R5cGUgX19u
MSwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwKICAgICAgIHNpemVfdHlwZSBfX3BvczIsIHNp
emVfdHlwZSBfX24yKQogICAgICB7IHJldHVybiB0aGlzLT5yZXBsYWNlKF9fcG9zMSwgX19uMSwg
X19zdHIuX01fZGF0YSgpCiAgICAgICAgKyBfX3N0ci5fTV9jaGVjayhfX3BvczIsICJiYXNpY19z
dHJpbmc6OnJlcGxhY2UiKSwKICAgICAgICBfX3N0ci5fTV9saW1pdChfX3BvczIsIF9fbjIpKTsg
fQojIDEyMzggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwog
ICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2Uoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5
cGUgX19uMSwgY29uc3QgX0NoYXJUKiBfX3MsCiAgICAgICBzaXplX3R5cGUgX19uMik7CiMgMTI1
NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJh
c2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24x
LCBjb25zdCBfQ2hhclQqIF9fcykKICAgICAgewogOwogcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19w
b3MsIF9fbjEsIF9fcywgdHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpKTsKICAgICAgfQojIDEyODAg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNp
Y19zdHJpbmcmCiAgICAgIHJlcGxhY2Uoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uMSwg
c2l6ZV90eXBlIF9fbjIsIF9DaGFyVCBfX2MpCiAgICAgIHsgcmV0dXJuIF9NX3JlcGxhY2VfYXV4
KF9NX2NoZWNrKF9fcG9zLCAiYmFzaWNfc3RyaW5nOjpyZXBsYWNlIiksCiAgICAgICAgIF9NX2xp
bWl0KF9fcG9zLCBfX24xKSwgX19uMiwgX19jKTsgfQojIDEyOTggIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJl
cGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgY29uc3QgYmFzaWNfc3RyaW5nJiBf
X3N0cikKICAgICAgeyByZXR1cm4gdGhpcy0+cmVwbGFjZShfX2kxLCBfX2kyLCBfX3N0ci5fTV9k
YXRhKCksIF9fc3RyLnNpemUoKSk7IH0KIyAxMzE2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICByZXBsYWNlKGl0
ZXJhdG9yIF9faTEsIGl0ZXJhdG9yIF9faTIsIGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUg
X19uKQogICAgICB7CiA7CgogcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSAtIF9NX2liZWdpbigp
LCBfX2kyIC0gX19pMSwgX19zLCBfX24pOwogICAgICB9CiMgMTMzNyAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAg
cmVwbGFjZShpdGVyYXRvciBfX2kxLCBpdGVyYXRvciBfX2kyLCBjb25zdCBfQ2hhclQqIF9fcykK
ICAgICAgewogOwogcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSwgX19pMiwgX19zLCB0cmFpdHNf
dHlwZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMgMTM1OCAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFj
ZShpdGVyYXRvciBfX2kxLCBpdGVyYXRvciBfX2kyLCBzaXplX3R5cGUgX19uLCBfQ2hhclQgX19j
KQogICAgICB7CiA7CgogcmV0dXJuIF9NX3JlcGxhY2VfYXV4KF9faTEgLSBfTV9pYmVnaW4oKSwg
X19pMiAtIF9faTEsIF9fbiwgX19jKTsKICAgICAgfQojIDEzODAgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJ
dGVyYXRvcj4KICAgICAgICBiYXNpY19zdHJpbmcmCiAgICAgICAgcmVwbGFjZShpdGVyYXRvciBf
X2kxLCBpdGVyYXRvciBfX2kyLAogIF9JbnB1dEl0ZXJhdG9yIF9fazEsIF9JbnB1dEl0ZXJhdG9y
IF9fazIpCiAgICAgICAgewogICA7CgogICA7CiAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpfX2lz
X2ludGVnZXI8X0lucHV0SXRlcmF0b3I+OjpfX3R5cGUgX0ludGVncmFsOwogICByZXR1cm4gX01f
cmVwbGFjZV9kaXNwYXRjaChfX2kxLCBfX2kyLCBfX2sxLCBfX2syLCBfSW50ZWdyYWwoKSk7CiB9
CgoKCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShpdGVyYXRvciBfX2kxLCBpdGVy
YXRvciBfX2kyLCBfQ2hhclQqIF9fazEsIF9DaGFyVCogX19rMikKICAgICAgewogOwoKIDsKIHJl
dHVybiB0aGlzLT5yZXBsYWNlKF9faTEgLSBfTV9pYmVnaW4oKSwgX19pMiAtIF9faTEsCiAgICAg
ICAgX19rMSwgX19rMiAtIF9fazEpOwogICAgICB9CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAg
IHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwKICAgICAgIGNvbnN0IF9DaGFy
VCogX19rMSwgY29uc3QgX0NoYXJUKiBfX2syKQogICAgICB7CiA7CgogOwogcmV0dXJuIHRoaXMt
PnJlcGxhY2UoX19pMSAtIF9NX2liZWdpbigpLCBfX2kyIC0gX19pMSwKICAgICAgICBfX2sxLCBf
X2syIC0gX19rMSk7CiAgICAgIH0KCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShp
dGVyYXRvciBfX2kxLCBpdGVyYXRvciBfX2kyLCBpdGVyYXRvciBfX2sxLCBpdGVyYXRvciBfX2sy
KQogICAgICB7CiA7CgogOwogcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSAtIF9NX2liZWdpbigp
LCBfX2kyIC0gX19pMSwKICAgICAgICBfX2sxLmJhc2UoKSwgX19rMiAtIF9fazEpOwogICAgICB9
CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0
b3IgX19pMiwKICAgICAgIGNvbnN0X2l0ZXJhdG9yIF9fazEsIGNvbnN0X2l0ZXJhdG9yIF9fazIp
CiAgICAgIHsKIDsKCiA7CiByZXR1cm4gdGhpcy0+cmVwbGFjZShfX2kxIC0gX01faWJlZ2luKCks
IF9faTIgLSBfX2kxLAogICAgICAgIF9fazEuYmFzZSgpLCBfX2syIC0gX19rMSk7CiAgICAgIH0K
CiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTxjbGFzcyBfSW50ZWdlcj4KIGJhc2ljX3N0cmlu
ZyYKIF9NX3JlcGxhY2VfZGlzcGF0Y2goaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgX0lu
dGVnZXIgX19uLAogICAgICAgX0ludGVnZXIgX192YWwsIF9fdHJ1ZV90eXBlKQogICAgICAgIHsg
cmV0dXJuIF9NX3JlcGxhY2VfYXV4KF9faTEgLSBfTV9pYmVnaW4oKSwgX19pMiAtIF9faTEsIF9f
biwgX192YWwpOyB9CgogICAgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KIGJhc2lj
X3N0cmluZyYKIF9NX3JlcGxhY2VfZGlzcGF0Y2goaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19p
MiwgX0lucHV0SXRlcmF0b3IgX19rMSwKICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fazIsIF9fZmFs
c2VfdHlwZSk7CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIF9NX3JlcGxhY2VfYXV4KHNpemVf
dHlwZSBfX3BvczEsIHNpemVfdHlwZSBfX24xLCBzaXplX3R5cGUgX19uMiwKICAgICAgIF9DaGFy
VCBfX2MpOwoKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBfTV9yZXBsYWNlX3NhZmUoc2l6ZV90
eXBlIF9fcG9zMSwgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9DaGFyVCogX19zLAogICAgICAgIHNp
emVfdHlwZSBfX24yKTsKCgoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0luSXRlcmF0b3I+CiAgICAg
ICAgc3RhdGljIF9DaGFyVCoKICAgICAgICBfU19jb25zdHJ1Y3RfYXV4KF9Jbkl0ZXJhdG9yIF9f
YmVnLCBfSW5JdGVyYXRvciBfX2VuZCwKICAgIGNvbnN0IF9BbGxvYyYgX19hLCBfX2ZhbHNlX3R5
cGUpCiB7CiAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5JdGVy
YXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IF9UYWc7CiAgICAgICAgICByZXR1cm4gX1NfY29uc3Ry
dWN0KF9fYmVnLCBfX2VuZCwgX19hLCBfVGFnKCkpOwogfQoKICAgICAgdGVtcGxhdGU8Y2xhc3Mg
X0luSXRlcmF0b3I+CiAgICAgICAgc3RhdGljIF9DaGFyVCoKICAgICAgICBfU19jb25zdHJ1Y3Rf
YXV4KF9Jbkl0ZXJhdG9yIF9fYmVnLCBfSW5JdGVyYXRvciBfX2VuZCwKICAgIGNvbnN0IF9BbGxv
YyYgX19hLCBfX3RydWVfdHlwZSkKIHsgcmV0dXJuIF9TX2NvbnN0cnVjdChzdGF0aWNfY2FzdDxz
aXplX3R5cGU+KF9fYmVnKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oX19lbmQp
LCBfX2EpOyB9CgogICAgICB0ZW1wbGF0ZTxjbGFzcyBfSW5JdGVyYXRvcj4KICAgICAgICBzdGF0
aWMgX0NoYXJUKgogICAgICAgIF9TX2NvbnN0cnVjdChfSW5JdGVyYXRvciBfX2JlZywgX0luSXRl
cmF0b3IgX19lbmQsIGNvbnN0IF9BbGxvYyYgX19hKQogewogICB0eXBlZGVmIHR5cGVuYW1lIHN0
ZDo6X19pc19pbnRlZ2VyPF9Jbkl0ZXJhdG9yPjo6X190eXBlIF9JbnRlZ3JhbDsKICAgcmV0dXJu
IF9TX2NvbnN0cnVjdF9hdXgoX19iZWcsIF9fZW5kLCBfX2EsIF9JbnRlZ3JhbCgpKTsKICAgICAg
ICB9CgoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0luSXRlcmF0b3I+CiAgICAgICAgc3RhdGljIF9D
aGFyVCoKICAgICAgICAgX1NfY29uc3RydWN0KF9Jbkl0ZXJhdG9yIF9fYmVnLCBfSW5JdGVyYXRv
ciBfX2VuZCwgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKTsK
CgoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0Z3ZEl0ZXJhdG9yPgogICAgICAgIHN0YXRpYyBfQ2hh
clQqCiAgICAgICAgX1NfY29uc3RydWN0KF9Gd2RJdGVyYXRvciBfX2JlZywgX0Z3ZEl0ZXJhdG9y
IF9fZW5kLCBjb25zdCBfQWxsb2MmIF9fYSwKICAgICAgIGZvcndhcmRfaXRlcmF0b3JfdGFnKTsK
CiAgICAgIHN0YXRpYyBfQ2hhclQqCiAgICAgIF9TX2NvbnN0cnVjdChzaXplX3R5cGUgX19yZXEs
IF9DaGFyVCBfX2MsIGNvbnN0IF9BbGxvYyYgX19hKTsKCiAgICBwdWJsaWM6CiMgMTUxMSAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNpemVfdHlw
ZQogICAgICBjb3B5KF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19uLCBzaXplX3R5cGUgX19wb3Mg
PSAwKSBjb25zdDsKIyAxNTIxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3Ry
aW5nLmgiIDMKICAgICAgdm9pZAogICAgICBzd2FwKGJhc2ljX3N0cmluZyYgX19zKTsKIyAxNTMx
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgY29u
c3QgX0NoYXJUKgogICAgICBjX3N0cigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2RhdGEoKTsg
fQoKCgoKCgoKICAgICAgY29uc3QgX0NoYXJUKgogICAgICBkYXRhKCkgY29uc3QKICAgICAgeyBy
ZXR1cm4gX01fZGF0YSgpOyB9CgoKCgogICAgICBhbGxvY2F0b3JfdHlwZQogICAgICBnZXRfYWxs
b2NhdG9yKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fZGF0YXBsdXM7IH0KIyAxNTYzICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBl
CiAgICAgIGZpbmQoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBl
IF9fbikgY29uc3Q7CiMgMTU3NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0
cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kKGNvbnN0IGJhc2ljX3N0cmluZyYg
X19zdHIsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmZp
bmQoX19zdHIuZGF0YSgpLCBfX3BvcywgX19zdHIuc2l6ZSgpKTsgfQojIDE1OTAgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAg
ICAgZmluZChjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QKICAg
ICAgewogOwogcmV0dXJuIHRoaXMtPmZpbmQoX19zLCBfX3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0
aChfX3MpKTsKICAgICAgfQojIDE2MDcgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNp
Y19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmluZChfQ2hhclQgX19jLCBzaXpl
X3R5cGUgX19wb3MgPSAwKSBjb25zdDsKIyAxNjIwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIHJmaW5kKGNvbnN0IGJh
c2ljX3N0cmluZyYgX19zdHIsIHNpemVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0CiAgICAgIHsg
cmV0dXJuIHRoaXMtPnJmaW5kKF9fc3RyLmRhdGEoKSwgX19wb3MsIF9fc3RyLnNpemUoKSk7IH0K
IyAxNjM1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAg
ICAgc2l6ZV90eXBlCiAgICAgIHJmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19w
b3MsIHNpemVfdHlwZSBfX24pIGNvbnN0OwojIDE2NDggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgcmZpbmQoY29uc3Qg
X0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0CiAgICAgIHsKIDsKIHJl
dHVybiB0aGlzLT5yZmluZChfX3MsIF9fcG9zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOwog
ICAgICB9CiMgMTY2NSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5o
IiAzCiAgICAgIHNpemVfdHlwZQogICAgICByZmluZChfQ2hhclQgX19jLCBzaXplX3R5cGUgX19w
b3MgPSBucG9zKSBjb25zdDsKIyAxNjc4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFz
aWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfb2YoY29uc3Qg
YmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QKICAgICAgeyBy
ZXR1cm4gdGhpcy0+ZmluZF9maXJzdF9vZihfX3N0ci5kYXRhKCksIF9fcG9zLCBfX3N0ci5zaXpl
KCkpOyB9CiMgMTY5MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5o
IiAzCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2ZpcnN0X29mKGNvbnN0IF9DaGFyVCogX19z
LCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0OwojIDE3MDYgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAg
ICAgZmluZF9maXJzdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zID0gMCkg
Y29uc3QKICAgICAgewogOwogcmV0dXJuIHRoaXMtPmZpbmRfZmlyc3Rfb2YoX19zLCBfX3Bvcywg
dHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpKTsKICAgICAgfQojIDE3MjUgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmlu
ZF9maXJzdF9vZihfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdAogICAgICB7
IHJldHVybiB0aGlzLT5maW5kKF9fYywgX19wb3MpOyB9CiMgMTczOSAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5k
X2xhc3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zID0gbnBv
cykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZmluZF9sYXN0X29mKF9fc3RyLmRhdGEoKSwg
X19wb3MsIF9fc3RyLnNpemUoKSk7IH0KIyAxNzU0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfbGFzdF9vZihj
b25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKSBjb25zdDsK
IyAxNzY3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAg
ICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfbGFzdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90
eXBlIF9fcG9zID0gbnBvcykgY29uc3QKICAgICAgewogOwogcmV0dXJuIHRoaXMtPmZpbmRfbGFz
dF9vZihfX3MsIF9fcG9zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMgMTc4
NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNp
emVfdHlwZQogICAgICBmaW5kX2xhc3Rfb2YoX0NoYXJUIF9fYywgc2l6ZV90eXBlIF9fcG9zID0g
bnBvcykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+cmZpbmQoX19jLCBfX3Bvcyk7IH0KIyAx
ODAwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAg
c2l6ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfbm90X29mKGNvbnN0IGJhc2ljX3N0cmluZyYgX19z
dHIsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmZpbmRf
Zmlyc3Rfbm90X29mKF9fc3RyLmRhdGEoKSwgX19wb3MsIF9fc3RyLnNpemUoKSk7IH0KIyAxODE1
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6
ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfbm90X29mKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5
cGUgX19wb3MsCiAgIHNpemVfdHlwZSBfX24pIGNvbnN0OwojIDE4MjkgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmlu
ZF9maXJzdF9ub3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNv
bnN0CiAgICAgIHsKIDsKIHJldHVybiB0aGlzLT5maW5kX2ZpcnN0X25vdF9vZihfX3MsIF9fcG9z
LCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMgMTg0NiAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQogICAgICBm
aW5kX2ZpcnN0X25vdF9vZihfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdDsK
IyAxODU5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAg
ICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5nJiBf
X3N0ciwgc2l6ZV90eXBlIF9fcG9zID0gbnBvcykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+
ZmluZF9sYXN0X25vdF9vZihfX3N0ci5kYXRhKCksIF9fcG9zLCBfX3N0ci5zaXplKCkpOyB9CiMg
MTg3NSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAg
IHNpemVfdHlwZQogICAgICBmaW5kX2xhc3Rfbm90X29mKGNvbnN0IF9DaGFyVCogX19zLCBzaXpl
X3R5cGUgX19wb3MsCiAgICAgICAgIHNpemVfdHlwZSBfX24pIGNvbnN0OwojIDE4ODggIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUK
ICAgICAgZmluZF9sYXN0X25vdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9z
ID0gbnBvcykgY29uc3QKICAgICAgewogOwogcmV0dXJuIHRoaXMtPmZpbmRfbGFzdF9ub3Rfb2Yo
X19zLCBfX3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpKTsKICAgICAgfQojIDE5MDUgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5
cGUKICAgICAgZmluZF9sYXN0X25vdF9vZihfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MgPSBu
cG9zKSBjb25zdDsKIyAxOTIwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3Ry
aW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nCiAgICAgIHN1YnN0cihzaXplX3R5cGUgX19wb3Mg
PSAwLCBzaXplX3R5cGUgX19uID0gbnBvcykgY29uc3QKICAgICAgeyByZXR1cm4gYmFzaWNfc3Ry
aW5nKCp0aGlzLAogICAgICAgX01fY2hlY2soX19wb3MsICJiYXNpY19zdHJpbmc6OnN1YnN0ciIp
LCBfX24pOyB9CiMgMTkzOCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmlu
Zy5oIiAzCiAgICAgIGludAogICAgICBjb21wYXJlKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIp
IGNvbnN0CiAgICAgIHsKIGNvbnN0IHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7CiBj
b25zdCBzaXplX3R5cGUgX19vc2l6ZSA9IF9fc3RyLnNpemUoKTsKIGNvbnN0IHNpemVfdHlwZSBf
X2xlbiA9IHN0ZDo6bWluKF9fc2l6ZSwgX19vc2l6ZSk7CgogaW50IF9fciA9IHRyYWl0c190eXBl
Ojpjb21wYXJlKF9NX2RhdGEoKSwgX19zdHIuZGF0YSgpLCBfX2xlbik7CiBpZiAoIV9fcikKICAg
X19yID0gX1NfY29tcGFyZShfX3NpemUsIF9fb3NpemUpOwogcmV0dXJuIF9fcjsKICAgICAgfQoj
IDE5NjggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAg
ICBpbnQKICAgICAgY29tcGFyZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24sIGNvbnN0
IGJhc2ljX3N0cmluZyYgX19zdHIpIGNvbnN0OwojIDE5OTIgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBpbnQKICAgICAgY29tcGFyZShzaXplX3R5
cGUgX19wb3MxLCBzaXplX3R5cGUgX19uMSwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwKICAg
ICAgIHNpemVfdHlwZSBfX3BvczIsIHNpemVfdHlwZSBfX24yKSBjb25zdDsKIyAyMDEwICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgaW50CiAgICAg
IGNvbXBhcmUoY29uc3QgX0NoYXJUKiBfX3MpIGNvbnN0OwojIDIwMzMgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBpbnQKICAgICAgY29tcGFyZShz
aXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24xLCBjb25zdCBfQ2hhclQqIF9fcykgY29uc3Q7
CiMgMjA1OCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAg
ICAgIGludAogICAgICBjb21wYXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNv
bnN0IF9DaGFyVCogX19zLAogICAgICAgc2l6ZV90eXBlIF9fbjIpIGNvbnN0OwogIH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9j
PgogICAgaW5saW5lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAg
YmFzaWNfc3RyaW5nKCkKCiAgICA6IF9NX2RhdGFwbHVzKF9TX2VtcHR5X3JlcCgpLl9NX3JlZmRh
dGEoKSwgX0FsbG9jKCkpIHsgfQojIDIwNzkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9i
YXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPgogICAgb3BlcmF0b3IrKGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs
IF9BbGxvYz4mIF9fbGhzLAogICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPiYgX19yaHMpCiAgICB7CiAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz4gX19zdHIoX19saHMpOwogICAgICBfX3N0ci5hcHBlbmQoX19yaHMpOwogICAg
ICByZXR1cm4gX19zdHI7CiAgICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCxfVHJhaXRzLF9BbGxvYz4KICAgIG9wZXJhdG9yKyhjb25zdCBfQ2hhclQqIF9fbGhzLAogICAg
ICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCxfVHJhaXRzLF9BbGxvYz4mIF9fcmhzKTsKCgoK
CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFt
ZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULF9UcmFpdHMsX0FsbG9jPgogICAgb3Bl
cmF0b3IrKF9DaGFyVCBfX2xocywgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCxfVHJhaXRzLF9B
bGxvYz4mIF9fcmhzKTsKCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPgogICAgb3BlcmF0b3IrKGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICBjb25zdCBfQ2hhclQqIF9fcmhzKQog
ICAgewogICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+IF9fc3RyKF9f
bGhzKTsKICAgICAgX19zdHIuYXBwZW5kKF9fcmhzKTsKICAgICAgcmV0dXJuIF9fc3RyOwogICAg
fQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5
cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+CiAgICBvcGVyYXRvcisoY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPiYgX19saHMsIF9DaGFyVCBfX3JocykKICAgIHsKICAgICAgdHlwZWRlZiBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+IF9fc3RyaW5nX3R5cGU7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX19zdHJpbmdfdHlwZTo6c2l6ZV90eXBlIF9fc2l6ZV90eXBlOwogICAgICBf
X3N0cmluZ190eXBlIF9fc3RyKF9fbGhzKTsKICAgICAgX19zdHIuYXBwZW5kKF9fc2l6ZV90eXBl
KDEpLCBfX3Jocyk7CiAgICAgIHJldHVybiBfX3N0cjsKICAgIH0KIyAyMTUwICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29s
CiAgICBvcGVyYXRvcj09KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv
Yz4mIF9fbGhzLAogICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9B
bGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPT0gMDsgfQoK
CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVu
YW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IF9DaGFyVCog
X19saHMsCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
PiYgX19yaHMpCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSA9PSAwOyB9CgoKCgoK
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg
X0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICAgY29uc3QgX0NoYXJUKiBf
X3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpID09IDA7IH0KIyAyMTg3ICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlu
bGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gX19yaHMuY29tcGFyZShfX2xocykg
IT0gMDsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0
IF9DaGFyVCogX19saHMsCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSAhPSAw
OyB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg
dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgYmFz
aWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICAgY29uc3Qg
X0NoYXJUKiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpICE9IDA7IH0K
IyAyMjI0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxv
Yz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjwoY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBhcmUo
X19yaHMpIDwgMDsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjwo
Y29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAg
ICBjb25zdCBfQ2hhclQqIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShfX3Jocykg
PCAwOyB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPChjb25zdCBf
Q2hhclQqIF9fbGhzLAogICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSA+IDA7IH0K
IyAyMjYxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxv
Yz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBhcmUo
X19yaHMpID4gMDsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4o
Y29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAg
ICBjb25zdCBfQ2hhclQqIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShfX3Jocykg
PiAwOyB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBf
Q2hhclQqIF9fbGhzLAogICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSA8IDA7IH0K
IyAyMjk4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxv
Yz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29tcGFy
ZShfX3JocykgPD0gMDsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRv
cjw9KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAog
ICAgICAgIGNvbnN0IF9DaGFyVCogX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9f
cmhzKSA8PSAwOyB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0o
Y29uc3QgX0NoYXJUKiBfX2xocywKICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fcmhzLmNvbXBhcmUoX19saHMp
ID49IDA7IH0KIyAyMzM1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5n
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVu
YW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0IGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAgIGNvbnN0IGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gX19s
aHMuY29tcGFyZShfX3JocykgPj0gMDsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAg
ICBvcGVyYXRvcj49KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4m
IF9fbGhzLAogICAgICAgIGNvbnN0IF9DaGFyVCogX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5j
b21wYXJlKF9fcmhzKSA+PSAwOyB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9w
ZXJhdG9yPj0oY29uc3QgX0NoYXJUKiBfX2xocywKICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJl
KF9fbGhzKSA8PSAwOyB9CiMgMjM3MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2lj
X3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
LCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgdm9pZAogICAgc3dhcChiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywKICBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsgX19saHMuc3dhcChfX3Jocyk7IH0KIyAyMzg5
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAg
IGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs
IF9UcmFpdHMsIF9BbGxvYz4mIF9fc3RyKTsKCiAgdGVtcGxhdGU8PgogICAgYmFzaWNfaXN0cmVh
bTxjaGFyPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxjaGFyPiYgX19pcywgYmFzaWNf
c3RyaW5nPGNoYXI+JiBfX3N0cik7CiMgMjQwNyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
IF9fb3MsCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
PiYgX19zdHIpCiAgICB7CgoKICAgICAgcmV0dXJuIF9fb3N0cmVhbV9pbnNlcnQoX19vcywgX19z
dHIuZGF0YSgpLCBfX3N0ci5zaXplKCkpOwogICAgfQojIDI0MzAgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JgogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
IF9faXMsCiAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19zdHIs
IF9DaGFyVCBfX2RlbGltKTsKIyAyNDQ3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFz
aWNfc3RyaW5nLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz4mCiAgICBnZXRsaW5lKGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywK
ICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3N0cikKICAgIHsg
cmV0dXJuIGdldGxpbmUoX19pcywgX19zdHIsIF9faXMud2lkZW4oJ1xuJykpOyB9CgogIHRlbXBs
YXRlPD4KICAgIGJhc2ljX2lzdHJlYW08Y2hhcj4mCiAgICBnZXRsaW5lKGJhc2ljX2lzdHJlYW08
Y2hhcj4mIF9faW4sIGJhc2ljX3N0cmluZzxjaGFyPiYgX19zdHIsCiAgICAgY2hhciBfX2RlbGlt
KTsKCgogIHRlbXBsYXRlPD4KICAgIGJhc2ljX2lzdHJlYW08d2NoYXJfdD4mCiAgICBnZXRsaW5l
KGJhc2ljX2lzdHJlYW08d2NoYXJfdD4mIF9faW4sIGJhc2ljX3N0cmluZzx3Y2hhcl90PiYgX19z
dHIsCiAgICAgd2NoYXJfdCBfX2RlbGltKTsKCgp9CiMgNTUgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvc3RyaW5nIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNf
c3RyaW5nLnRjYyIgMSAzCiMgNDUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19z
dHJpbmcudGNjIiAzCiNkZWZpbmUgX0JBU0lDX1NUUklOR19UQ0MgMQoKICAgICAgIAojIDQ4ICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLnRjYyIgMwoKbmFtZXNwYWNl
IHN0ZCB7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlPgogICAgaW5saW5lIGJvb2wKICAgIF9f
aXNfbnVsbF9wb2ludGVyKF9UeXBlKiBfX3B0cikKICAgIHsgcmV0dXJuIF9fcHRyID09IDA7IH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1R5cGU+CiAgICBpbmxpbmUgYm9vbAogICAgX19pc19udWxs
X3BvaW50ZXIoX1R5cGUpCiAgICB7IHJldHVybiBmYWxzZTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGNvbnN0IHR5
cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQog
ICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBfUmVwOjpfU19t
YXhfc2l6ZSA9ICgoKG5wb3MgLSBzaXplb2YoX1JlcF9iYXNlKSkvc2l6ZW9mKF9DaGFyVCkpIC0g
MSkgLyA0OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5
cGVuYW1lIF9BbGxvYz4KICAgIGNvbnN0IF9DaGFyVAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPjo6CiAgICBfUmVwOjpfU190ZXJtaW5hbCA9IF9DaGFyVCgpOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxv
Yz4KICAgIGNvbnN0IHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv
Yz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6
bnBvczsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5
cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs
IF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPjo6X1JlcDo6X1NfZW1wdHlfcmVwX3N0b3JhZ2VbCiAgICAoc2l6ZW9mKF9SZXBfYmFzZSkg
KyBzaXplb2YoX0NoYXJUKSArIHNpemVvZihzaXplX3R5cGUpIC0gMSkgLwogICAgICBzaXplb2Yo
c2l6ZV90eXBlKV07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Jbkl0ZXJhdG9y
PgogICAgICBfQ2hhclQqCiAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv
Yz46OgogICAgICBfU19jb25zdHJ1Y3QoX0luSXRlcmF0b3IgX19iZWcsIF9Jbkl0ZXJhdG9yIF9f
ZW5kLCBjb25zdCBfQWxsb2MmIF9fYSwKICAgICBpbnB1dF9pdGVyYXRvcl90YWcpCiAgICAgIHsK
CiBpZiAoX19iZWcgPT0gX19lbmQgJiYgX19hID09IF9BbGxvYygpKQogICByZXR1cm4gX1NfZW1w
dHlfcmVwKCkuX01fcmVmZGF0YSgpOwoKCiBfQ2hhclQgX19idWZbMTI4XTsKIHNpemVfdHlwZSBf
X2xlbiA9IDA7CiB3aGlsZSAoX19iZWcgIT0gX19lbmQgJiYgX19sZW4gPCBzaXplb2YoX19idWYp
IC8gc2l6ZW9mKF9DaGFyVCkpCiAgIHsKICAgICBfX2J1ZltfX2xlbisrXSA9ICpfX2JlZzsKICAg
ICArK19fYmVnOwogICB9CiBfUmVwKiBfX3IgPSBfUmVwOjpfU19jcmVhdGUoX19sZW4sIHNpemVf
dHlwZSgwKSwgX19hKTsKIF9NX2NvcHkoX19yLT5fTV9yZWZkYXRhKCksIF9fYnVmLCBfX2xlbik7
CiB0cnkKICAgewogICAgIHdoaWxlIChfX2JlZyAhPSBfX2VuZCkKICAgICAgIHsKICBpZiAoX19s
ZW4gPT0gX19yLT5fTV9jYXBhY2l0eSkKICAgIHsKCiAgICAgIF9SZXAqIF9fYW5vdGhlciA9IF9S
ZXA6Ol9TX2NyZWF0ZShfX2xlbiArIDEsIF9fbGVuLCBfX2EpOwogICAgICBfTV9jb3B5KF9fYW5v
dGhlci0+X01fcmVmZGF0YSgpLCBfX3ItPl9NX3JlZmRhdGEoKSwgX19sZW4pOwogICAgICBfX3It
Pl9NX2Rlc3Ryb3koX19hKTsKICAgICAgX19yID0gX19hbm90aGVyOwogICAgfQogIF9fci0+X01f
cmVmZGF0YSgpW19fbGVuKytdID0gKl9fYmVnOwogICsrX19iZWc7CiAgICAgICB9CiAgIH0KIGNh
dGNoKC4uLikKICAgewogICAgIF9fci0+X01fZGVzdHJveShfX2EpOwogICAgIHRocm93OwogICB9
CiBfX3ItPl9NX3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlKF9fbGVuKTsKIHJldHVybiBfX3ItPl9N
X3JlZmRhdGEoKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfSW5JdGVy
YXRvcj4KICAgICAgX0NoYXJUKgogICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+OjoKICAgICAgX1NfY29uc3RydWN0KF9Jbkl0ZXJhdG9yIF9fYmVnLCBfSW5JdGVyYXRv
ciBfX2VuZCwgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgZm9yd2FyZF9pdGVyYXRvcl90YWcpCiAg
ICAgIHsKCiBpZiAoX19iZWcgPT0gX19lbmQgJiYgX19hID09IF9BbGxvYygpKQogICByZXR1cm4g
X1NfZW1wdHlfcmVwKCkuX01fcmVmZGF0YSgpOwoKCiBpZiAoX19idWlsdGluX2V4cGVjdChfX2lz
X251bGxfcG9pbnRlcihfX2JlZykgJiYgX19iZWcgIT0gX19lbmQsIDApKQogICBfX3Rocm93X2xv
Z2ljX2Vycm9yKCgiYmFzaWNfc3RyaW5nOjpfU19jb25zdHJ1Y3QgTlVMTCBub3QgdmFsaWQiKSk7
CgogY29uc3Qgc2l6ZV90eXBlIF9fZG5ldyA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oc3RkOjpk
aXN0YW5jZShfX2JlZywKICAgICAgICAgICAgICBfX2VuZCkpOwoKIF9SZXAqIF9fciA9IF9SZXA6
Ol9TX2NyZWF0ZShfX2RuZXcsIHNpemVfdHlwZSgwKSwgX19hKTsKIHRyeQogICB7IF9TX2NvcHlf
Y2hhcnMoX19yLT5fTV9yZWZkYXRhKCksIF9fYmVnLCBfX2VuZCk7IH0KIGNhdGNoKC4uLikKICAg
ewogICAgIF9fci0+X01fZGVzdHJveShfX2EpOwogICAgIHRocm93OwogICB9CiBfX3ItPl9NX3Nl
dF9sZW5ndGhfYW5kX3NoYXJhYmxlKF9fZG5ldyk7CiByZXR1cm4gX19yLT5fTV9yZWZkYXRhKCk7
CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICBfQ2hhclQqCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh
aXRzLCBfQWxsb2M+OjoKICAgIF9TX2NvbnN0cnVjdChzaXplX3R5cGUgX19uLCBfQ2hhclQgX19j
LCBjb25zdCBfQWxsb2MmIF9fYSkKICAgIHsKCiAgICAgIGlmIChfX24gPT0gMCAmJiBfX2EgPT0g
X0FsbG9jKCkpCiByZXR1cm4gX1NfZW1wdHlfcmVwKCkuX01fcmVmZGF0YSgpOwoKCiAgICAgIF9S
ZXAqIF9fciA9IF9SZXA6Ol9TX2NyZWF0ZShfX24sIHNpemVfdHlwZSgwKSwgX19hKTsKICAgICAg
aWYgKF9fbikKIF9NX2Fzc2lnbihfX3ItPl9NX3JlZmRhdGEoKSwgX19uLCBfX2MpOwoKICAgICAg
X19yLT5fTV9zZXRfbGVuZ3RoX2FuZF9zaGFyYWJsZShfX24pOwogICAgICByZXR1cm4gX19yLT5f
TV9yZWZkYXRhKCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPjo6CiAgICBiYXNpY19zdHJpbmcoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikK
ICAgIDogX01fZGF0YXBsdXMoX19zdHIuX01fcmVwKCktPl9NX2dyYWIoX0FsbG9jKF9fc3RyLmdl
dF9hbGxvY2F0b3IoKSksCiAgICAgICBfX3N0ci5nZXRfYWxsb2NhdG9yKCkpLAogICAgX19zdHIu
Z2V0X2FsbG9jYXRvcigpKQogICAgeyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPjo6CiAgICBiYXNpY19zdHJpbmcoY29uc3QgX0FsbG9jJiBfX2EpCiAg
ICA6IF9NX2RhdGFwbHVzKF9TX2NvbnN0cnVjdChzaXplX3R5cGUoKSwgX0NoYXJUKCksIF9fYSks
IF9fYSkKICAgIHsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9B
bGxvYz46OgogICAgYmFzaWNfc3RyaW5nKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsIHNpemVf
dHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikKICAgIDogX01fZGF0YXBsdXMoX1NfY29uc3RydWN0
KF9fc3RyLl9NX2RhdGEoKQogICAgICAgICAgKyBfX3N0ci5fTV9jaGVjayhfX3BvcywKICAgICAg
ImJhc2ljX3N0cmluZzo6YmFzaWNfc3RyaW5nIiksCiAgICAgICAgICBfX3N0ci5fTV9kYXRhKCkg
KyBfX3N0ci5fTV9saW1pdChfX3BvcywgX19uKQogICAgICAgICAgKyBfX3BvcywgX0FsbG9jKCkp
LCBfQWxsb2MoKSkKICAgIHsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz46OgogICAgYmFzaWNfc3RyaW5nKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIs
IHNpemVfdHlwZSBfX3BvcywKICAgc2l6ZV90eXBlIF9fbiwgY29uc3QgX0FsbG9jJiBfX2EpCiAg
ICA6IF9NX2RhdGFwbHVzKF9TX2NvbnN0cnVjdChfX3N0ci5fTV9kYXRhKCkKICAgICAgICAgICsg
X19zdHIuX01fY2hlY2soX19wb3MsCiAgICAgICJiYXNpY19zdHJpbmc6OmJhc2ljX3N0cmluZyIp
LAogICAgICAgICAgX19zdHIuX01fZGF0YSgpICsgX19zdHIuX01fbGltaXQoX19wb3MsIF9fbikK
ICAgICAgICAgICsgX19wb3MsIF9fYSksIF9fYSkKICAgIHsgfQoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGJhc2ljX3N0cmluZyhjb25zdCBf
Q2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgX0FsbG9jJiBfX2EpCiAgICA6IF9NX2Rh
dGFwbHVzKF9TX2NvbnN0cnVjdChfX3MsIF9fcyArIF9fbiwgX19hKSwgX19hKQogICAgeyB9CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9B
bGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYmFz
aWNfc3RyaW5nKGNvbnN0IF9DaGFyVCogX19zLCBjb25zdCBfQWxsb2MmIF9fYSkKICAgIDogX01f
ZGF0YXBsdXMoX1NfY29uc3RydWN0KF9fcywgX19zID8gX19zICsgdHJhaXRzX3R5cGU6Omxlbmd0
aChfX3MpIDoKICAgICAgICAgIF9fcyArIG5wb3MsIF9fYSksIF9fYSkKICAgIHsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4K
ICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYmFzaWNfc3Ry
aW5nKHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MsIGNvbnN0IF9BbGxvYyYgX19hKQogICAgOiBf
TV9kYXRhcGx1cyhfU19jb25zdHJ1Y3QoX19uLCBfX2MsIF9fYSksIF9fYSkKICAgIHsgfQoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxs
b2M+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgIGJhc2ljX3N0cmlu
ZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYmFzaWNfc3RyaW5nKF9JbnB1dEl0ZXJh
dG9yIF9fYmVnLCBfSW5wdXRJdGVyYXRvciBfX2VuZCwgY29uc3QgX0FsbG9jJiBfX2EpCiAgICA6
IF9NX2RhdGFwbHVzKF9TX2NvbnN0cnVjdChfX2JlZywgX19lbmQsIF9fYSksIF9fYSkKICAgIHsg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1l
IF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mCiAgICBi
YXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGFzc2lnbihjb25zdCBi
YXNpY19zdHJpbmcmIF9fc3RyKQogICAgewogICAgICBpZiAoX01fcmVwKCkgIT0gX19zdHIuX01f
cmVwKCkpCiB7CgogICBjb25zdCBhbGxvY2F0b3JfdHlwZSBfX2EgPSB0aGlzLT5nZXRfYWxsb2Nh
dG9yKCk7CiAgIF9DaGFyVCogX190bXAgPSBfX3N0ci5fTV9yZXAoKS0+X01fZ3JhYihfX2EsIF9f
c3RyLmdldF9hbGxvY2F0b3IoKSk7CiAgIF9NX3JlcCgpLT5fTV9kaXNwb3NlKF9fYSk7CiAgIF9N
X2RhdGEoX190bXApOwogfQogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFz
aWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYKICAgIGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYXNzaWduKGNvbnN0IF9DaGFyVCogX19zLCBzaXpl
X3R5cGUgX19uKQogICAgewogICAgICA7CiAgICAgIF9NX2NoZWNrX2xlbmd0aCh0aGlzLT5zaXpl
KCksIF9fbiwgImJhc2ljX3N0cmluZzo6YXNzaWduIik7CiAgICAgIGlmIChfTV9kaXNqdW5jdChf
X3MpIHx8IF9NX3JlcCgpLT5fTV9pc19zaGFyZWQoKSkKIHJldHVybiBfTV9yZXBsYWNlX3NhZmUo
c2l6ZV90eXBlKDApLCB0aGlzLT5zaXplKCksIF9fcywgX19uKTsKICAgICAgZWxzZQogewoKICAg
Y29uc3Qgc2l6ZV90eXBlIF9fcG9zID0gX19zIC0gX01fZGF0YSgpOwogICBpZiAoX19wb3MgPj0g
X19uKQogICAgIF9NX2NvcHkoX01fZGF0YSgpLCBfX3MsIF9fbik7CiAgIGVsc2UgaWYgKF9fcG9z
KQogICAgIF9NX21vdmUoX01fZGF0YSgpLCBfX3MsIF9fbik7CiAgIF9NX3JlcCgpLT5fTV9zZXRf
bGVuZ3RoX2FuZF9zaGFyYWJsZShfX24pOwogICByZXR1cm4gKnRoaXM7CiB9CiAgICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxv
Yz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mCiAgICBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGFwcGVuZChzaXplX3R5cGUgX19u
LCBfQ2hhclQgX19jKQogICAgewogICAgICBpZiAoX19uKQogewogICBfTV9jaGVja19sZW5ndGgo
c2l6ZV90eXBlKDApLCBfX24sICJiYXNpY19zdHJpbmc6OmFwcGVuZCIpOwogICBjb25zdCBzaXpl
X3R5cGUgX19sZW4gPSBfX24gKyB0aGlzLT5zaXplKCk7CiAgIGlmIChfX2xlbiA+IHRoaXMtPmNh
cGFjaXR5KCkgfHwgX01fcmVwKCktPl9NX2lzX3NoYXJlZCgpKQogICAgIHRoaXMtPnJlc2VydmUo
X19sZW4pOwogICBfTV9hc3NpZ24oX01fZGF0YSgpICsgdGhpcy0+c2l6ZSgpLCBfX24sIF9fYyk7
CiAgIF9NX3JlcCgpLT5fTV9zZXRfbGVuZ3RoX2FuZF9zaGFyYWJsZShfX2xlbik7CiB9CiAgICAg
IHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh
aXRzLCBfQWxsb2M+JgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6
CiAgICBhcHBlbmQoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24pCiAgICB7CiAgICAg
IDsKICAgICAgaWYgKF9fbikKIHsKICAgX01fY2hlY2tfbGVuZ3RoKHNpemVfdHlwZSgwKSwgX19u
LCAiYmFzaWNfc3RyaW5nOjphcHBlbmQiKTsKICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gX19u
ICsgdGhpcy0+c2l6ZSgpOwogICBpZiAoX19sZW4gPiB0aGlzLT5jYXBhY2l0eSgpIHx8IF9NX3Jl
cCgpLT5fTV9pc19zaGFyZWQoKSkKICAgICB7CiAgICAgICBpZiAoX01fZGlzanVuY3QoX19zKSkK
ICB0aGlzLT5yZXNlcnZlKF9fbGVuKTsKICAgICAgIGVsc2UKICB7CiAgICBjb25zdCBzaXplX3R5
cGUgX19vZmYgPSBfX3MgLSBfTV9kYXRhKCk7CiAgICB0aGlzLT5yZXNlcnZlKF9fbGVuKTsKICAg
IF9fcyA9IF9NX2RhdGEoKSArIF9fb2ZmOwogIH0KICAgICB9CiAgIF9NX2NvcHkoX01fZGF0YSgp
ICsgdGhpcy0+c2l6ZSgpLCBfX3MsIF9fbik7CiAgIF9NX3JlcCgpLT5fTV9zZXRfbGVuZ3RoX2Fu
ZF9zaGFyYWJsZShfX2xlbik7CiB9CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAg
ICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JgogICAgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBhcHBlbmQoY29uc3QgYmFzaWNfc3RyaW5n
JiBfX3N0cikKICAgIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fc2l6ZSA9IF9fc3RyLnNpemUo
KTsKICAgICAgaWYgKF9fc2l6ZSkKIHsKICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gX19zaXpl
ICsgdGhpcy0+c2l6ZSgpOwogICBpZiAoX19sZW4gPiB0aGlzLT5jYXBhY2l0eSgpIHx8IF9NX3Jl
cCgpLT5fTV9pc19zaGFyZWQoKSkKICAgICB0aGlzLT5yZXNlcnZlKF9fbGVuKTsKICAgX01fY29w
eShfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCksIF9fc3RyLl9NX2RhdGEoKSwgX19zaXplKTsKICAg
X01fcmVwKCktPl9NX3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlKF9fbGVuKTsKIH0KICAgICAgcmV0
dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs
IF9BbGxvYz4mCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAg
IGFwcGVuZChjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3MsIHNpemVf
dHlwZSBfX24pCiAgICB7CiAgICAgIF9fc3RyLl9NX2NoZWNrKF9fcG9zLCAiYmFzaWNfc3RyaW5n
OjphcHBlbmQiKTsKICAgICAgX19uID0gX19zdHIuX01fbGltaXQoX19wb3MsIF9fbik7CiAgICAg
IGlmIChfX24pCiB7CiAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IF9fbiArIHRoaXMtPnNpemUo
KTsKICAgaWYgKF9fbGVuID4gdGhpcy0+Y2FwYWNpdHkoKSB8fCBfTV9yZXAoKS0+X01faXNfc2hh
cmVkKCkpCiAgICAgdGhpcy0+cmVzZXJ2ZShfX2xlbik7CiAgIF9NX2NvcHkoX01fZGF0YSgpICsg
dGhpcy0+c2l6ZSgpLCBfX3N0ci5fTV9kYXRhKCkgKyBfX3BvcywgX19uKTsKICAgX01fcmVwKCkt
Pl9NX3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlKF9fbGVuKTsKIH0KICAgICAgcmV0dXJuICp0aGlz
OwogICAgfQoKICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
PiYKICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgICBpbnNl
cnQoc2l6ZV90eXBlIF9fcG9zLCBjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbikKICAg
ICB7CiAgICAgICA7CiAgICAgICBfTV9jaGVjayhfX3BvcywgImJhc2ljX3N0cmluZzo6aW5zZXJ0
Iik7CiAgICAgICBfTV9jaGVja19sZW5ndGgoc2l6ZV90eXBlKDApLCBfX24sICJiYXNpY19zdHJp
bmc6Omluc2VydCIpOwogICAgICAgaWYgKF9NX2Rpc2p1bmN0KF9fcykgfHwgX01fcmVwKCktPl9N
X2lzX3NoYXJlZCgpKQogICAgICAgICByZXR1cm4gX01fcmVwbGFjZV9zYWZlKF9fcG9zLCBzaXpl
X3R5cGUoMCksIF9fcywgX19uKTsKICAgICAgIGVsc2UKICAgICAgICAgewoKICAgICAgICAgICBj
b25zdCBzaXplX3R5cGUgX19vZmYgPSBfX3MgLSBfTV9kYXRhKCk7CiAgICAgICAgICAgX01fbXV0
YXRlKF9fcG9zLCAwLCBfX24pOwogICAgICAgICAgIF9fcyA9IF9NX2RhdGEoKSArIF9fb2ZmOwog
ICAgICAgICAgIF9DaGFyVCogX19wID0gX01fZGF0YSgpICsgX19wb3M7CiAgICAgICAgICAgaWYg
KF9fcyArIF9fbiA8PSBfX3ApCiAgICAgICAgICAgICBfTV9jb3B5KF9fcCwgX19zLCBfX24pOwog
ICAgICAgICAgIGVsc2UgaWYgKF9fcyA+PSBfX3ApCiAgICAgICAgICAgICBfTV9jb3B5KF9fcCwg
X19zICsgX19uLCBfX24pOwogICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKICAgICAgICBj
b25zdCBzaXplX3R5cGUgX19ubGVmdCA9IF9fcCAtIF9fczsKICAgICAgICAgICAgICAgX01fY29w
eShfX3AsIF9fcywgX19ubGVmdCk7CiAgICAgICAgICAgICAgIF9NX2NvcHkoX19wICsgX19ubGVm
dCwgX19wICsgX19uLCBfX24gLSBfX25sZWZ0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KICAgICB9CgogICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JgogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz46OgogICAgIHJlcGxhY2Uoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19u
MSwgY29uc3QgX0NoYXJUKiBfX3MsCiAgICAgIHNpemVfdHlwZSBfX24yKQogICAgIHsKICAgICAg
IDsKICAgICAgIF9NX2NoZWNrKF9fcG9zLCAiYmFzaWNfc3RyaW5nOjpyZXBsYWNlIik7CiAgICAg
ICBfX24xID0gX01fbGltaXQoX19wb3MsIF9fbjEpOwogICAgICAgX01fY2hlY2tfbGVuZ3RoKF9f
bjEsIF9fbjIsICJiYXNpY19zdHJpbmc6OnJlcGxhY2UiKTsKICAgICAgIGJvb2wgX19sZWZ0Owog
ICAgICAgaWYgKF9NX2Rpc2p1bmN0KF9fcykgfHwgX01fcmVwKCktPl9NX2lzX3NoYXJlZCgpKQog
ICAgICAgICByZXR1cm4gX01fcmVwbGFjZV9zYWZlKF9fcG9zLCBfX24xLCBfX3MsIF9fbjIpOwog
ICAgICAgZWxzZSBpZiAoKF9fbGVmdCA9IF9fcyArIF9fbjIgPD0gX01fZGF0YSgpICsgX19wb3Mp
CiAgfHwgX01fZGF0YSgpICsgX19wb3MgKyBfX24xIDw9IF9fcykKICB7CgogICAgc2l6ZV90eXBl
IF9fb2ZmID0gX19zIC0gX01fZGF0YSgpOwogICAgX19sZWZ0ID8gX19vZmYgOiAoX19vZmYgKz0g
X19uMiAtIF9fbjEpOwogICAgX01fbXV0YXRlKF9fcG9zLCBfX24xLCBfX24yKTsKICAgIF9NX2Nv
cHkoX01fZGF0YSgpICsgX19wb3MsIF9NX2RhdGEoKSArIF9fb2ZmLCBfX24yKTsKICAgIHJldHVy
biAqdGhpczsKICB9CiAgICAgICBlbHNlCiAgewoKICAgIGNvbnN0IGJhc2ljX3N0cmluZyBfX3Rt
cChfX3MsIF9fbjIpOwogICAgcmV0dXJuIF9NX3JlcGxhY2Vfc2FmZShfX3BvcywgX19uMSwgX190
bXAuX01fZGF0YSgpLCBfX24yKTsKICB9CiAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHZvaWQKICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Ol9SZXA6OgogICAgX01fZGVzdHJveShj
b25zdCBfQWxsb2MmIF9fYSkgdGhyb3cgKCkKICAgIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9f
c2l6ZSA9IHNpemVvZihfUmVwX2Jhc2UpICsKICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMt
Pl9NX2NhcGFjaXR5ICsgMSkgKiBzaXplb2YoX0NoYXJUKTsKICAgICAgX1Jhd19ieXRlc19hbGxv
YyhfX2EpLmRlYWxsb2NhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcyksIF9fc2l6ZSk7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlw
ZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPjo6CiAgICBfTV9sZWFrX2hhcmQoKQogICAgewoKICAgICAgaWYgKF9NX3JlcCgpID09
ICZfU19lbXB0eV9yZXAoKSkKIHJldHVybjsKCiAgICAgIGlmIChfTV9yZXAoKS0+X01faXNfc2hh
cmVkKCkpCiBfTV9tdXRhdGUoMCwgMCwgMCk7CiAgICAgIF9NX3JlcCgpLT5fTV9zZXRfbGVha2Vk
KCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg
dHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPjo6CiAgICBfTV9tdXRhdGUoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19s
ZW4xLCBzaXplX3R5cGUgX19sZW4yKQogICAgewogICAgICBjb25zdCBzaXplX3R5cGUgX19vbGRf
c2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbmV3X3NpemUgPSBf
X29sZF9zaXplICsgX19sZW4yIC0gX19sZW4xOwogICAgICBjb25zdCBzaXplX3R5cGUgX19ob3df
bXVjaCA9IF9fb2xkX3NpemUgLSBfX3BvcyAtIF9fbGVuMTsKCiAgICAgIGlmIChfX25ld19zaXpl
ID4gdGhpcy0+Y2FwYWNpdHkoKSB8fCBfTV9yZXAoKS0+X01faXNfc2hhcmVkKCkpCiB7CgogICBj
b25zdCBhbGxvY2F0b3JfdHlwZSBfX2EgPSBnZXRfYWxsb2NhdG9yKCk7CiAgIF9SZXAqIF9fciA9
IF9SZXA6Ol9TX2NyZWF0ZShfX25ld19zaXplLCB0aGlzLT5jYXBhY2l0eSgpLCBfX2EpOwoKICAg
aWYgKF9fcG9zKQogICAgIF9NX2NvcHkoX19yLT5fTV9yZWZkYXRhKCksIF9NX2RhdGEoKSwgX19w
b3MpOwogICBpZiAoX19ob3dfbXVjaCkKICAgICBfTV9jb3B5KF9fci0+X01fcmVmZGF0YSgpICsg
X19wb3MgKyBfX2xlbjIsCiAgICAgIF9NX2RhdGEoKSArIF9fcG9zICsgX19sZW4xLCBfX2hvd19t
dWNoKTsKCiAgIF9NX3JlcCgpLT5fTV9kaXNwb3NlKF9fYSk7CiAgIF9NX2RhdGEoX19yLT5fTV9y
ZWZkYXRhKCkpOwogfQogICAgICBlbHNlIGlmIChfX2hvd19tdWNoICYmIF9fbGVuMSAhPSBfX2xl
bjIpCiB7CgogICBfTV9tb3ZlKF9NX2RhdGEoKSArIF9fcG9zICsgX19sZW4yLAogICAgX01fZGF0
YSgpICsgX19wb3MgKyBfX2xlbjEsIF9faG93X211Y2gpOwogfQogICAgICBfTV9yZXAoKS0+X01f
c2V0X2xlbmd0aF9hbmRfc2hhcmFibGUoX19uZXdfc2l6ZSk7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9p
ZAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICByZXNlcnZl
KHNpemVfdHlwZSBfX3JlcykKICAgIHsKICAgICAgaWYgKF9fcmVzICE9IHRoaXMtPmNhcGFjaXR5
KCkgfHwgX01fcmVwKCktPl9NX2lzX3NoYXJlZCgpKQogICAgICAgIHsKCiAgIGlmIChfX3JlcyA8
IHRoaXMtPnNpemUoKSkKICAgICBfX3JlcyA9IHRoaXMtPnNpemUoKTsKICAgY29uc3QgYWxsb2Nh
dG9yX3R5cGUgX19hID0gZ2V0X2FsbG9jYXRvcigpOwogICBfQ2hhclQqIF9fdG1wID0gX01fcmVw
KCktPl9NX2Nsb25lKF9fYSwgX19yZXMgLSB0aGlzLT5zaXplKCkpOwogICBfTV9yZXAoKS0+X01f
ZGlzcG9zZShfX2EpOwogICBfTV9kYXRhKF9fdG1wKTsKICAgICAgICB9CiAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgog
ICAgdm9pZAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBz
d2FwKGJhc2ljX3N0cmluZyYgX19zKQogICAgewogICAgICBpZiAoX01fcmVwKCktPl9NX2lzX2xl
YWtlZCgpKQogX01fcmVwKCktPl9NX3NldF9zaGFyYWJsZSgpOwogICAgICBpZiAoX19zLl9NX3Jl
cCgpLT5fTV9pc19sZWFrZWQoKSkKIF9fcy5fTV9yZXAoKS0+X01fc2V0X3NoYXJhYmxlKCk7CiAg
ICAgIGlmICh0aGlzLT5nZXRfYWxsb2NhdG9yKCkgPT0gX19zLmdldF9hbGxvY2F0b3IoKSkKIHsK
ICAgX0NoYXJUKiBfX3RtcCA9IF9NX2RhdGEoKTsKICAgX01fZGF0YShfX3MuX01fZGF0YSgpKTsK
ICAgX19zLl9NX2RhdGEoX190bXApOwogfQoKICAgICAgZWxzZQogewogICBjb25zdCBiYXNpY19z
dHJpbmcgX190bXAxKF9NX2liZWdpbigpLCBfTV9pZW5kKCksCiAgICAgICAgX19zLmdldF9hbGxv
Y2F0b3IoKSk7CiAgIGNvbnN0IGJhc2ljX3N0cmluZyBfX3RtcDIoX19zLl9NX2liZWdpbigpLCBf
X3MuX01faWVuZCgpLAogICAgICAgIHRoaXMtPmdldF9hbGxvY2F0b3IoKSk7CiAgICp0aGlzID0g
X190bXAyOwogICBfX3MgPSBfX3RtcDE7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFz
aWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6X1JlcCoKICAgIGJhc2ljX3N0cmlu
ZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Ol9SZXA6OgogICAgX1NfY3JlYXRlKHNpemVfdHlw
ZSBfX2NhcGFjaXR5LCBzaXplX3R5cGUgX19vbGRfY2FwYWNpdHksCiAgICAgICBjb25zdCBfQWxs
b2MmIF9fYWxsb2MpCiAgICB7CgoKICAgICAgaWYgKF9fY2FwYWNpdHkgPiBfU19tYXhfc2l6ZSkK
IF9fdGhyb3dfbGVuZ3RoX2Vycm9yKCgiYmFzaWNfc3RyaW5nOjpfU19jcmVhdGUiKSk7CiMgNTU5
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfc3RyaW5nLnRjYyIgMwogICAgICBj
b25zdCBzaXplX3R5cGUgX19wYWdlc2l6ZSA9IDQwOTY7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBf
X21hbGxvY19oZWFkZXJfc2l6ZSA9IDQgKiBzaXplb2Yodm9pZCopOwoKCgoKCgoKICAgICAgaWYg
KF9fY2FwYWNpdHkgPiBfX29sZF9jYXBhY2l0eSAmJiBfX2NhcGFjaXR5IDwgMiAqIF9fb2xkX2Nh
cGFjaXR5KQogX19jYXBhY2l0eSA9IDIgKiBfX29sZF9jYXBhY2l0eTsKCgoKCiAgICAgIHNpemVf
dHlwZSBfX3NpemUgPSAoX19jYXBhY2l0eSArIDEpICogc2l6ZW9mKF9DaGFyVCkgKyBzaXplb2Yo
X1JlcCk7CgogICAgICBjb25zdCBzaXplX3R5cGUgX19hZGpfc2l6ZSA9IF9fc2l6ZSArIF9fbWFs
bG9jX2hlYWRlcl9zaXplOwogICAgICBpZiAoX19hZGpfc2l6ZSA+IF9fcGFnZXNpemUgJiYgX19j
YXBhY2l0eSA+IF9fb2xkX2NhcGFjaXR5KQogewogICBjb25zdCBzaXplX3R5cGUgX19leHRyYSA9
IF9fcGFnZXNpemUgLSBfX2Fkal9zaXplICUgX19wYWdlc2l6ZTsKICAgX19jYXBhY2l0eSArPSBf
X2V4dHJhIC8gc2l6ZW9mKF9DaGFyVCk7CgogICBpZiAoX19jYXBhY2l0eSA+IF9TX21heF9zaXpl
KQogICAgIF9fY2FwYWNpdHkgPSBfU19tYXhfc2l6ZTsKICAgX19zaXplID0gKF9fY2FwYWNpdHkg
KyAxKSAqIHNpemVvZihfQ2hhclQpICsgc2l6ZW9mKF9SZXApOwogfQoKCgogICAgICB2b2lkKiBf
X3BsYWNlID0gX1Jhd19ieXRlc19hbGxvYyhfX2FsbG9jKS5hbGxvY2F0ZShfX3NpemUpOwogICAg
ICBfUmVwICpfX3AgPSBuZXcgKF9fcGxhY2UpIF9SZXA7CiAgICAgIF9fcC0+X01fY2FwYWNpdHkg
PSBfX2NhcGFjaXR5OwoKCgoKCgoKICAgICAgX19wLT5fTV9zZXRfc2hhcmFibGUoKTsKICAgICAg
cmV0dXJuIF9fcDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBfQ2hhclQqCiAgICBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+OjpfUmVwOjoKICAgIF9NX2Nsb25lKGNvbnN0IF9BbGxvYyYg
X19hbGxvYywgc2l6ZV90eXBlIF9fcmVzKQogICAgewoKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9f
cmVxdWVzdGVkX2NhcCA9IHRoaXMtPl9NX2xlbmd0aCArIF9fcmVzOwogICAgICBfUmVwKiBfX3Ig
PSBfUmVwOjpfU19jcmVhdGUoX19yZXF1ZXN0ZWRfY2FwLCB0aGlzLT5fTV9jYXBhY2l0eSwKICAg
ICAgX19hbGxvYyk7CiAgICAgIGlmICh0aGlzLT5fTV9sZW5ndGgpCiBfTV9jb3B5KF9fci0+X01f
cmVmZGF0YSgpLCBfTV9yZWZkYXRhKCksIHRoaXMtPl9NX2xlbmd0aCk7CgogICAgICBfX3ItPl9N
X3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlKHRoaXMtPl9NX2xlbmd0aCk7CiAgICAgIHJldHVybiBf
X3ItPl9NX3JlZmRhdGEoKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB2b2lkCiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIHJlc2l6ZShzaXplX3R5cGUgX19uLCBfQ2hh
clQgX19jKQogICAgewogICAgICBjb25zdCBzaXplX3R5cGUgX19zaXplID0gdGhpcy0+c2l6ZSgp
OwogICAgICBfTV9jaGVja19sZW5ndGgoX19zaXplLCBfX24sICJiYXNpY19zdHJpbmc6OnJlc2l6
ZSIpOwogICAgICBpZiAoX19zaXplIDwgX19uKQogdGhpcy0+YXBwZW5kKF9fbiAtIF9fc2l6ZSwg
X19jKTsKICAgICAgZWxzZSBpZiAoX19uIDwgX19zaXplKQogdGhpcy0+ZXJhc2UoX19uKTsKCiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5h
bWUgX0FsbG9jPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICAgIGJh
c2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mCiAgICAgIGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgICBfTV9yZXBsYWNlX2Rpc3BhdGNoKGl0ZXJh
dG9yIF9faTEsIGl0ZXJhdG9yIF9faTIsIF9JbnB1dEl0ZXJhdG9yIF9fazEsCiAgICAgX0lucHV0
SXRlcmF0b3IgX19rMiwgX19mYWxzZV90eXBlKQogICAgICB7CiBjb25zdCBiYXNpY19zdHJpbmcg
X19zKF9fazEsIF9fazIpOwogY29uc3Qgc2l6ZV90eXBlIF9fbjEgPSBfX2kyIC0gX19pMTsKIF9N
X2NoZWNrX2xlbmd0aChfX24xLCBfX3Muc2l6ZSgpLCAiYmFzaWNfc3RyaW5nOjpfTV9yZXBsYWNl
X2Rpc3BhdGNoIik7CiByZXR1cm4gX01fcmVwbGFjZV9zYWZlKF9faTEgLSBfTV9pYmVnaW4oKSwg
X19uMSwgX19zLl9NX2RhdGEoKSwKICAgICAgICAgIF9fcy5zaXplKCkpOwogICAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9j
PgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYKICAgIGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgX01fcmVwbGFjZV9hdXgoc2l6ZV90
eXBlIF9fcG9zMSwgc2l6ZV90eXBlIF9fbjEsIHNpemVfdHlwZSBfX24yLAogICAgIF9DaGFyVCBf
X2MpCiAgICB7CiAgICAgIF9NX2NoZWNrX2xlbmd0aChfX24xLCBfX24yLCAiYmFzaWNfc3RyaW5n
OjpfTV9yZXBsYWNlX2F1eCIpOwogICAgICBfTV9tdXRhdGUoX19wb3MxLCBfX24xLCBfX24yKTsK
ICAgICAgaWYgKF9fbjIpCiBfTV9hc3NpZ24oX01fZGF0YSgpICsgX19wb3MxLCBfX24yLCBfX2Mp
OwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPiYKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9B
bGxvYz46OgogICAgX01fcmVwbGFjZV9zYWZlKHNpemVfdHlwZSBfX3BvczEsIHNpemVfdHlwZSBf
X24xLCBjb25zdCBfQ2hhclQqIF9fcywKICAgICAgc2l6ZV90eXBlIF9fbjIpCiAgICB7CiAgICAg
IF9NX211dGF0ZShfX3BvczEsIF9fbjEsIF9fbjIpOwogICAgICBpZiAoX19uMikKIF9NX2NvcHko
X01fZGF0YSgpICsgX19wb3MxLCBfX3MsIF9fbjIpOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg
X0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPgogICAgb3Bl
cmF0b3IrKGNvbnN0IF9DaGFyVCogX19saHMsCiAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsKICAgICAgOwogICAgICB0eXBlZGVm
IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4gX19zdHJpbmdfdHlwZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfX3N0cmluZ190eXBlOjpzaXplX3R5cGUgX19zaXplX3R5cGU7
CiAgICAgIGNvbnN0IF9fc2l6ZV90eXBlIF9fbGVuID0gX1RyYWl0czo6bGVuZ3RoKF9fbGhzKTsK
ICAgICAgX19zdHJpbmdfdHlwZSBfX3N0cjsKICAgICAgX19zdHIucmVzZXJ2ZShfX2xlbiArIF9f
cmhzLnNpemUoKSk7CiAgICAgIF9fc3RyLmFwcGVuZChfX2xocywgX19sZW4pOwogICAgICBfX3N0
ci5hcHBlbmQoX19yaHMpOwogICAgICByZXR1cm4gX19zdHI7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFz
aWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPgogICAgb3BlcmF0b3IrKF9DaGFyVCBf
X2xocywgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMp
CiAgICB7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
PiBfX3N0cmluZ190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fc3RyaW5nX3R5cGU6OnNp
emVfdHlwZSBfX3NpemVfdHlwZTsKICAgICAgX19zdHJpbmdfdHlwZSBfX3N0cjsKICAgICAgY29u
c3QgX19zaXplX3R5cGUgX19sZW4gPSBfX3Jocy5zaXplKCk7CiAgICAgIF9fc3RyLnJlc2VydmUo
X19sZW4gKyAxKTsKICAgICAgX19zdHIuYXBwZW5kKF9fc2l6ZV90eXBlKDEpLCBfX2xocyk7CiAg
ICAgIF9fc3RyLmFwcGVuZChfX3Jocyk7CiAgICAgIHJldHVybiBfX3N0cjsKICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+
CiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjpzaXpl
X3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgY29w
eShfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbiwgc2l6ZV90eXBlIF9fcG9zKSBjb25zdAogICAg
ewogICAgICBfTV9jaGVjayhfX3BvcywgImJhc2ljX3N0cmluZzo6Y29weSIpOwogICAgICBfX24g
PSBfTV9saW1pdChfX3BvcywgX19uKTsKICAgICAgOwogICAgICBpZiAoX19uKQogX01fY29weShf
X3MsIF9NX2RhdGEoKSArIF9fcG9zLCBfX24pOwoKICAgICAgcmV0dXJuIF9fbjsKICAgIH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxs
b2M+CiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+Ojpz
aXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAg
ZmluZChjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKSBj
b25zdAogICAgewogICAgICA7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5z
aXplKCk7CiAgICAgIGNvbnN0IF9DaGFyVCogX19kYXRhID0gX01fZGF0YSgpOwoKICAgICAgaWYg
KF9fbiA9PSAwKQogcmV0dXJuIF9fcG9zIDw9IF9fc2l6ZSA/IF9fcG9zIDogbnBvczsKCiAgICAg
IGlmIChfX24gPD0gX19zaXplKQogewogICBmb3IgKDsgX19wb3MgPD0gX19zaXplIC0gX19uOyAr
K19fcG9zKQogICAgIGlmICh0cmFpdHNfdHlwZTo6ZXEoX19kYXRhW19fcG9zXSwgX19zWzBdKQog
ICYmIHRyYWl0c190eXBlOjpjb21wYXJlKF9fZGF0YSArIF9fcG9zICsgMSwKICAgICBfX3MgKyAx
LCBfX24gLSAxKSA9PSAwKQogICAgICAgcmV0dXJuIF9fcG9zOwogfQogICAgICByZXR1cm4gbnBv
czsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9B
bGxvYz46OgogICAgZmluZChfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MpIGNvbnN0CiAgICB7
CiAgICAgIHNpemVfdHlwZSBfX3JldCA9IG5wb3M7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX3Np
emUgPSB0aGlzLT5zaXplKCk7CiAgICAgIGlmIChfX3BvcyA8IF9fc2l6ZSkKIHsKICAgY29uc3Qg
X0NoYXJUKiBfX2RhdGEgPSBfTV9kYXRhKCk7CiAgIGNvbnN0IHNpemVfdHlwZSBfX24gPSBfX3Np
emUgLSBfX3BvczsKICAgY29uc3QgX0NoYXJUKiBfX3AgPSB0cmFpdHNfdHlwZTo6ZmluZChfX2Rh
dGEgKyBfX3BvcywgX19uLCBfX2MpOwogICBpZiAoX19wKQogICAgIF9fcmV0ID0gX19wIC0gX19k
YXRhOwogfQogICAgICByZXR1cm4gX19yZXQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFz
aWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIHJmaW5kKGNvbnN0IF9DaGFyVCog
X19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICB7CiAgICAgIDsK
ICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgaWYgKF9f
biA8PSBfX3NpemUpCiB7CiAgIF9fcG9zID0gc3RkOjptaW4oc2l6ZV90eXBlKF9fc2l6ZSAtIF9f
biksIF9fcG9zKTsKICAgY29uc3QgX0NoYXJUKiBfX2RhdGEgPSBfTV9kYXRhKCk7CiAgIGRvCiAg
ICAgewogICAgICAgaWYgKHRyYWl0c190eXBlOjpjb21wYXJlKF9fZGF0YSArIF9fcG9zLCBfX3Ms
IF9fbikgPT0gMCkKICByZXR1cm4gX19wb3M7CiAgICAgfQogICB3aGlsZSAoX19wb3MtLSA+IDAp
OwogfQogICAgICByZXR1cm4gbnBvczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmlu
ZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgcmZpbmQoX0NoYXJUIF9fYywgc2l6ZV90
eXBlIF9fcG9zKSBjb25zdAogICAgewogICAgICBzaXplX3R5cGUgX19zaXplID0gdGhpcy0+c2l6
ZSgpOwogICAgICBpZiAoX19zaXplKQogewogICBpZiAoLS1fX3NpemUgPiBfX3BvcykKICAgICBf
X3NpemUgPSBfX3BvczsKICAgZm9yICgrK19fc2l6ZTsgX19zaXplLS0gPiAwOyApCiAgICAgaWYg
KHRyYWl0c190eXBlOjplcShfTV9kYXRhKClbX19zaXplXSwgX19jKSkKICAgICAgIHJldHVybiBf
X3NpemU7CiB9CiAgICAgIHJldHVybiBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJh
c2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNf
c3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kX2ZpcnN0X29mKGNvbnN0
IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICB7
CiAgICAgIDsKICAgICAgZm9yICg7IF9fbiAmJiBfX3BvcyA8IHRoaXMtPnNpemUoKTsgKytfX3Bv
cykKIHsKICAgY29uc3QgX0NoYXJUKiBfX3AgPSB0cmFpdHNfdHlwZTo6ZmluZChfX3MsIF9fbiwg
X01fZGF0YSgpW19fcG9zXSk7CiAgIGlmIChfX3ApCiAgICAgcmV0dXJuIF9fcG9zOwogfQogICAg
ICByZXR1cm4gbnBvczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs
IF9UcmFpdHMsIF9BbGxvYz46OgogICAgZmluZF9sYXN0X29mKGNvbnN0IF9DaGFyVCogX19zLCBz
aXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICB7CiAgICAgIDsKICAgICAg
c2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgaWYgKF9fc2l6ZSAmJiBfX24p
CiB7CiAgIGlmICgtLV9fc2l6ZSA+IF9fcG9zKQogICAgIF9fc2l6ZSA9IF9fcG9zOwogICBkbwog
ICAgIHsKICAgICAgIGlmICh0cmFpdHNfdHlwZTo6ZmluZChfX3MsIF9fbiwgX01fZGF0YSgpW19f
c2l6ZV0pKQogIHJldHVybiBfX3NpemU7CiAgICAgfQogICB3aGlsZSAoX19zaXplLS0gIT0gMCk7
CiB9CiAgICAgIHJldHVybiBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kX2ZpcnN0X25vdF9vZihjb25zdCBf
Q2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKSBjb25zdAogICAgewog
ICAgICA7CiAgICAgIGZvciAoOyBfX3BvcyA8IHRoaXMtPnNpemUoKTsgKytfX3BvcykKIGlmICgh
dHJhaXRzX3R5cGU6OmZpbmQoX19zLCBfX24sIF9NX2RhdGEoKVtfX3Bvc10pKQogICByZXR1cm4g
X19wb3M7CiAgICAgIHJldHVybiBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3Ry
aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kX2ZpcnN0X25vdF9vZihfQ2hh
clQgX19jLCBzaXplX3R5cGUgX19wb3MpIGNvbnN0CiAgICB7CiAgICAgIGZvciAoOyBfX3BvcyA8
IHRoaXMtPnNpemUoKTsgKytfX3BvcykKIGlmICghdHJhaXRzX3R5cGU6OmVxKF9NX2RhdGEoKVtf
X3Bvc10sIF9fYykpCiAgIHJldHVybiBfX3BvczsKICAgICAgcmV0dXJuIG5wb3M7CiAgICB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0Fs
bG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6
c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAg
IGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6
ZV90eXBlIF9fbikgY29uc3QKICAgIHsKICAgICAgOwogICAgICBzaXplX3R5cGUgX19zaXplID0g
dGhpcy0+c2l6ZSgpOwogICAgICBpZiAoX19zaXplKQogewogICBpZiAoLS1fX3NpemUgPiBfX3Bv
cykKICAgICBfX3NpemUgPSBfX3BvczsKICAgZG8KICAgICB7CiAgICAgICBpZiAoIXRyYWl0c190
eXBlOjpmaW5kKF9fcywgX19uLCBfTV9kYXRhKClbX19zaXplXSkpCiAgcmV0dXJuIF9fc2l6ZTsK
ICAgICB9CiAgIHdoaWxlIChfX3NpemUtLSk7CiB9CiAgICAgIHJldHVybiBucG9zOwogICAgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9B
bGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46
OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAg
ICBmaW5kX2xhc3Rfbm90X29mKF9DaGFyVCBfX2MsIHNpemVfdHlwZSBfX3BvcykgY29uc3QKICAg
IHsKICAgICAgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgaWYgKF9fc2l6
ZSkKIHsKICAgaWYgKC0tX19zaXplID4gX19wb3MpCiAgICAgX19zaXplID0gX19wb3M7CiAgIGRv
CiAgICAgewogICAgICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXEoX01fZGF0YSgpW19fc2l6ZV0sIF9f
YykpCiAgcmV0dXJuIF9fc2l6ZTsKICAgICB9CiAgIHdoaWxlIChfX3NpemUtLSk7CiB9CiAgICAg
IHJldHVybiBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGludAogICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBjb21wYXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90
eXBlIF9fbiwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikgY29uc3QKICAgIHsKICAgICAgX01f
Y2hlY2soX19wb3MsICJiYXNpY19zdHJpbmc6OmNvbXBhcmUiKTsKICAgICAgX19uID0gX01fbGlt
aXQoX19wb3MsIF9fbik7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX29zaXplID0gX19zdHIuc2l6
ZSgpOwogICAgICBjb25zdCBzaXplX3R5cGUgX19sZW4gPSBzdGQ6Om1pbihfX24sIF9fb3NpemUp
OwogICAgICBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBhcmUoX01fZGF0YSgpICsgX19wb3Ms
IF9fc3RyLmRhdGEoKSwgX19sZW4pOwogICAgICBpZiAoIV9fcikKIF9fciA9IF9TX2NvbXBhcmUo
X19uLCBfX29zaXplKTsKICAgICAgcmV0dXJuIF9fcjsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbnQKICAg
IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgY29tcGFyZShzaXpl
X3R5cGUgX19wb3MxLCBzaXplX3R5cGUgX19uMSwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwK
ICAgICBzaXplX3R5cGUgX19wb3MyLCBzaXplX3R5cGUgX19uMikgY29uc3QKICAgIHsKICAgICAg
X01fY2hlY2soX19wb3MxLCAiYmFzaWNfc3RyaW5nOjpjb21wYXJlIik7CiAgICAgIF9fc3RyLl9N
X2NoZWNrKF9fcG9zMiwgImJhc2ljX3N0cmluZzo6Y29tcGFyZSIpOwogICAgICBfX24xID0gX01f
bGltaXQoX19wb3MxLCBfX24xKTsKICAgICAgX19uMiA9IF9fc3RyLl9NX2xpbWl0KF9fcG9zMiwg
X19uMik7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWluKF9fbjEsIF9fbjIp
OwogICAgICBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBhcmUoX01fZGF0YSgpICsgX19wb3Mx
LAogICAgICAgICBfX3N0ci5kYXRhKCkgKyBfX3BvczIsIF9fbGVuKTsKICAgICAgaWYgKCFfX3Ip
CiBfX3IgPSBfU19jb21wYXJlKF9fbjEsIF9fbjIpOwogICAgICByZXR1cm4gX19yOwogICAgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9B
bGxvYz4KICAgIGludAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6
CiAgICBjb21wYXJlKGNvbnN0IF9DaGFyVCogX19zKSBjb25zdAogICAgewogICAgICA7CiAgICAg
IGNvbnN0IHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgIGNvbnN0IHNpemVf
dHlwZSBfX29zaXplID0gdHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpOwogICAgICBjb25zdCBzaXpl
X3R5cGUgX19sZW4gPSBzdGQ6Om1pbihfX3NpemUsIF9fb3NpemUpOwogICAgICBpbnQgX19yID0g
dHJhaXRzX3R5cGU6OmNvbXBhcmUoX01fZGF0YSgpLCBfX3MsIF9fbGVuKTsKICAgICAgaWYgKCFf
X3IpCiBfX3IgPSBfU19jb21wYXJlKF9fc2l6ZSwgX19vc2l6ZSk7CiAgICAgIHJldHVybiBfX3I7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlw
ZW5hbWUgX0FsbG9jPgogICAgaW50CiAgICBiYXNpY19zdHJpbmcgPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPjo6CiAgICBjb21wYXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNv
bnN0IF9DaGFyVCogX19zKSBjb25zdAogICAgewogICAgICA7CiAgICAgIF9NX2NoZWNrKF9fcG9z
LCAiYmFzaWNfc3RyaW5nOjpjb21wYXJlIik7CiAgICAgIF9fbjEgPSBfTV9saW1pdChfX3Bvcywg
X19uMSk7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX29zaXplID0gdHJhaXRzX3R5cGU6Omxlbmd0
aChfX3MpOwogICAgICBjb25zdCBzaXplX3R5cGUgX19sZW4gPSBzdGQ6Om1pbihfX24xLCBfX29z
aXplKTsKICAgICAgaW50IF9fciA9IHRyYWl0c190eXBlOjpjb21wYXJlKF9NX2RhdGEoKSArIF9f
cG9zLCBfX3MsIF9fbGVuKTsKICAgICAgaWYgKCFfX3IpCiBfX3IgPSBfU19jb21wYXJlKF9fbjEs
IF9fb3NpemUpOwogICAgICByZXR1cm4gX19yOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGludAogICAgYmFz
aWNfc3RyaW5nIDxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgY29tcGFyZShzaXplX3R5
cGUgX19wb3MsIHNpemVfdHlwZSBfX24xLCBjb25zdCBfQ2hhclQqIF9fcywKICAgICBzaXplX3R5
cGUgX19uMikgY29uc3QKICAgIHsKICAgICAgOwogICAgICBfTV9jaGVjayhfX3BvcywgImJhc2lj
X3N0cmluZzo6Y29tcGFyZSIpOwogICAgICBfX24xID0gX01fbGltaXQoX19wb3MsIF9fbjEpOwog
ICAgICBjb25zdCBzaXplX3R5cGUgX19sZW4gPSBzdGQ6Om1pbihfX24xLCBfX24yKTsKICAgICAg
aW50IF9fciA9IHRyYWl0c190eXBlOjpjb21wYXJlKF9NX2RhdGEoKSArIF9fcG9zLCBfX3MsIF9f
bGVuKTsKICAgICAgaWYgKCFfX3IpCiBfX3IgPSBfU19jb21wYXJlKF9fbjEsIF9fbjIpOwogICAg
ICByZXR1cm4gX19yOwogICAgfQoKCgoKCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX3N0
cmluZzxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUKICAgIGJhc2ljX2lzdHJlYW08Y2hhcj4mCiAg
ICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08Y2hhcj4mLCBzdHJpbmcmKTsKICBleHRlcm4gdGVt
cGxhdGUKICAgIGJhc2ljX29zdHJlYW08Y2hhcj4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJl
YW08Y2hhcj4mLCBjb25zdCBzdHJpbmcmKTsKICBleHRlcm4gdGVtcGxhdGUKICAgIGJhc2ljX2lz
dHJlYW08Y2hhcj4mCiAgICBnZXRsaW5lKGJhc2ljX2lzdHJlYW08Y2hhcj4mLCBzdHJpbmcmLCBj
aGFyKTsKICBleHRlcm4gdGVtcGxhdGUKICAgIGJhc2ljX2lzdHJlYW08Y2hhcj4mCiAgICBnZXRs
aW5lKGJhc2ljX2lzdHJlYW08Y2hhcj4mLCBzdHJpbmcmKTsKCgogIGV4dGVybiB0ZW1wbGF0ZSBj
bGFzcyBiYXNpY19zdHJpbmc8d2NoYXJfdD47CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBiYXNpY19p
c3RyZWFtPHdjaGFyX3Q+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPHdjaGFyX3Q+Jiwg
d3N0cmluZyYpOwogIGV4dGVybiB0ZW1wbGF0ZQogICAgYmFzaWNfb3N0cmVhbTx3Y2hhcl90PiYK
ICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTx3Y2hhcl90PiYsIGNvbnN0IHdzdHJpbmcmKTsK
ICBleHRlcm4gdGVtcGxhdGUKICAgIGJhc2ljX2lzdHJlYW08d2NoYXJfdD4mCiAgICBnZXRsaW5l
KGJhc2ljX2lzdHJlYW08d2NoYXJfdD4mLCB3c3RyaW5nJiwgd2NoYXJfdCk7CiAgZXh0ZXJuIHRl
bXBsYXRlCiAgICBiYXNpY19pc3RyZWFtPHdjaGFyX3Q+JgogICAgZ2V0bGluZShiYXNpY19pc3Ry
ZWFtPHdjaGFyX3Q+Jiwgd3N0cmluZyYpOwoKCgp9CiMgNTkgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvc3RyaW5nIiAyIDMKIyA2MSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xc3RyaW5nLmgi
IDIKCgoKCnR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4gUVN0ZFdTdHJpbmc7CiMg
ODYgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXN0cmluZy5oIgoKCgoKdHlwZWRlZiBRdFZh
bGlkTGljZW5zZUZvckNvcmVNb2R1bGUgUXRDb3JlTW9kdWxlOwoKY2xhc3MgUUNoYXJSZWY7CmNs
YXNzIFFSZWdFeHA7CmNsYXNzIFFTdHJpbmdMaXN0OwpjbGFzcyBRVGV4dENvZGVjOwpjbGFzcyBR
TGF0aW4xU3RyaW5nOwpjbGFzcyBRU3RyaW5nUmVmOwp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgUVZlY3RvcjsKCmNsYXNzIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
IFFTdHJpbmcKewpwdWJsaWM6CiAgICBpbmxpbmUgUVN0cmluZygpOwogICAgUVN0cmluZyhjb25z
dCBRQ2hhciAqdW5pY29kZSwgaW50IHNpemUpOwogICAgZXhwbGljaXQgUVN0cmluZyhjb25zdCBR
Q2hhciAqdW5pY29kZSk7CiAgICBRU3RyaW5nKFFDaGFyIGMpOwogICAgUVN0cmluZyhpbnQgc2l6
ZSwgUUNoYXIgYyk7CiAgICBpbmxpbmUgUVN0cmluZyhjb25zdCBRTGF0aW4xU3RyaW5nICZsYXRp
bjEpOwogICAgaW5saW5lIFFTdHJpbmcoY29uc3QgUVN0cmluZyAmKTsKICAgIGlubGluZSB+UVN0
cmluZygpOwogICAgUVN0cmluZyAmb3BlcmF0b3I9KFFDaGFyIGMpOwogICAgUVN0cmluZyAmb3Bl
cmF0b3I9KGNvbnN0IFFTdHJpbmcgJik7CiAgICBpbmxpbmUgUVN0cmluZyAmb3BlcmF0b3I9KGNv
bnN0IFFMYXRpbjFTdHJpbmcgJik7CgogICAgaW5saW5lIGludCBzaXplKCkgY29uc3QgeyByZXR1
cm4gZC0+c2l6ZTsgfQogICAgaW5saW5lIGludCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIGQtPnNp
emU7IH0KICAgIGlubGluZSBpbnQgbGVuZ3RoKCkgY29uc3Q7CiAgICBpbmxpbmUgYm9vbCBpc0Vt
cHR5KCkgY29uc3Q7CiAgICB2b2lkIHJlc2l6ZShpbnQgc2l6ZSk7CgogICAgUVN0cmluZyAmZmls
bChRQ2hhciBjLCBpbnQgc2l6ZSA9IC0xKTsKICAgIHZvaWQgdHJ1bmNhdGUoaW50IHBvcyk7CiAg
ICB2b2lkIGNob3AoaW50IG4pOwoKICAgIGludCBjYXBhY2l0eSgpIGNvbnN0OwogICAgaW5saW5l
IHZvaWQgcmVzZXJ2ZShpbnQgc2l6ZSk7CiAgICBpbmxpbmUgdm9pZCBzcXVlZXplKCkgeyBpZiAo
ZC0+c2l6ZSA8IGQtPmFsbG9jIHx8IGQtPnJlZiAhPSAxKSByZWFsbG9jKCk7IGQtPmNhcGFjaXR5
ID0gMDt9CgogICAgaW5saW5lIGNvbnN0IFFDaGFyICp1bmljb2RlKCkgY29uc3Q7CiAgICBpbmxp
bmUgUUNoYXIgKmRhdGEoKTsKICAgIGlubGluZSBjb25zdCBRQ2hhciAqZGF0YSgpIGNvbnN0Owog
ICAgaW5saW5lIGNvbnN0IFFDaGFyICpjb25zdERhdGEoKSBjb25zdDsKCiAgICBpbmxpbmUgdm9p
ZCBkZXRhY2goKTsKICAgIGlubGluZSBib29sIGlzRGV0YWNoZWQoKSBjb25zdDsKICAgIGlubGlu
ZSBib29sIGlzU2hhcmVkV2l0aChjb25zdCBRU3RyaW5nICZvdGhlcikgY29uc3QgeyByZXR1cm4g
ZCA9PSBvdGhlci5kOyB9CiAgICB2b2lkIGNsZWFyKCk7CgogICAgaW5saW5lIGNvbnN0IFFDaGFy
IGF0KGludCBpKSBjb25zdDsKICAgIGNvbnN0IFFDaGFyIG9wZXJhdG9yW10oaW50IGkpIGNvbnN0
OwogICAgUUNoYXJSZWYgb3BlcmF0b3JbXShpbnQgaSk7CiAgICBjb25zdCBRQ2hhciBvcGVyYXRv
cltdKHVpbnQgaSkgY29uc3Q7CiAgICBRQ2hhclJlZiBvcGVyYXRvcltdKHVpbnQgaSk7CgogICAg
UVN0cmluZyBhcmcocWxvbmdsb25nIGEsIGludCBmaWVsZHdpZHRoPTAsIGludCBiYXNlPTEwLAog
ICAgICAgICAgICAgICAgY29uc3QgUUNoYXIgJmZpbGxDaGFyID0gUUxhdGluMUNoYXIoJyAnKSkg
Y29uc3QgX19hdHRyaWJ1dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogICAgUVN0cmluZyBh
cmcocXVsb25nbG9uZyBhLCBpbnQgZmllbGR3aWR0aD0wLCBpbnQgYmFzZT0xMCwKICAgICAgICAg
ICAgICAgIGNvbnN0IFFDaGFyICZmaWxsQ2hhciA9IFFMYXRpbjFDaGFyKCcgJykpIGNvbnN0IF9f
YXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAgIFFTdHJpbmcgYXJnKGxvbmcg
YSwgaW50IGZpZWxkd2lkdGg9MCwgaW50IGJhc2U9MTAsCiAgICAgICAgICAgICAgICBjb25zdCBR
Q2hhciAmZmlsbENoYXIgPSBRTGF0aW4xQ2hhcignICcpKSBjb25zdCBfX2F0dHJpYnV0ZV9fICgo
d2Fybl91bnVzZWRfcmVzdWx0KSk7CiAgICBRU3RyaW5nIGFyZyh1bG9uZyBhLCBpbnQgZmllbGR3
aWR0aD0wLCBpbnQgYmFzZT0xMCwKICAgICAgICAgICAgICAgIGNvbnN0IFFDaGFyICZmaWxsQ2hh
ciA9IFFMYXRpbjFDaGFyKCcgJykpIGNvbnN0IF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9y
ZXN1bHQpKTsKICAgIFFTdHJpbmcgYXJnKGludCBhLCBpbnQgZmllbGRXaWR0aCA9IDAsIGludCBi
YXNlID0gMTAsCiAgICAgICAgICAgICAgICBjb25zdCBRQ2hhciAmZmlsbENoYXIgPSBRTGF0aW4x
Q2hhcignICcpKSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSk7CiAg
ICBRU3RyaW5nIGFyZyh1aW50IGEsIGludCBmaWVsZFdpZHRoID0gMCwgaW50IGJhc2UgPSAxMCwK
ICAgICAgICAgICAgICAgIGNvbnN0IFFDaGFyICZmaWxsQ2hhciA9IFFMYXRpbjFDaGFyKCcgJykp
IGNvbnN0IF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAgIFFTdHJpbmcg
YXJnKHNob3J0IGEsIGludCBmaWVsZFdpZHRoID0gMCwgaW50IGJhc2UgPSAxMCwKICAgICAgICAg
ICAgICAgIGNvbnN0IFFDaGFyICZmaWxsQ2hhciA9IFFMYXRpbjFDaGFyKCcgJykpIGNvbnN0IF9f
YXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAgIFFTdHJpbmcgYXJnKHVzaG9y
dCBhLCBpbnQgZmllbGRXaWR0aCA9IDAsIGludCBiYXNlID0gMTAsCiAgICAgICAgICAgICAgICBj
b25zdCBRQ2hhciAmZmlsbENoYXIgPSBRTGF0aW4xQ2hhcignICcpKSBjb25zdCBfX2F0dHJpYnV0
ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSk7CiAgICBRU3RyaW5nIGFyZyhkb3VibGUgYSwgaW50
IGZpZWxkV2lkdGggPSAwLCBjaGFyIGZtdCA9ICdnJywgaW50IHByZWMgPSAtMSwKICAgICAgICAg
ICAgICAgIGNvbnN0IFFDaGFyICZmaWxsQ2hhciA9IFFMYXRpbjFDaGFyKCcgJykpIGNvbnN0IF9f
YXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAgIFFTdHJpbmcgYXJnKGNoYXIg
YSwgaW50IGZpZWxkV2lkdGggPSAwLAogICAgICAgICAgICAgICAgY29uc3QgUUNoYXIgJmZpbGxD
aGFyID0gUUxhdGluMUNoYXIoJyAnKSkgY29uc3QgX19hdHRyaWJ1dGVfXyAoKHdhcm5fdW51c2Vk
X3Jlc3VsdCkpOwogICAgUVN0cmluZyBhcmcoUUNoYXIgYSwgaW50IGZpZWxkV2lkdGggPSAwLAog
ICAgICAgICAgICAgICAgY29uc3QgUUNoYXIgJmZpbGxDaGFyID0gUUxhdGluMUNoYXIoJyAnKSkg
Y29uc3QgX19hdHRyaWJ1dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogICAgUVN0cmluZyBh
cmcoY29uc3QgUVN0cmluZyAmYSwgaW50IGZpZWxkV2lkdGggPSAwLAogICAgICAgICAgICAgICAg
Y29uc3QgUUNoYXIgJmZpbGxDaGFyID0gUUxhdGluMUNoYXIoJyAnKSkgY29uc3QgX19hdHRyaWJ1
dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogICAgUVN0cmluZyBhcmcoY29uc3QgUVN0cmlu
ZyAmYTEsIGNvbnN0IFFTdHJpbmcgJmEyKSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVz
ZWRfcmVzdWx0KSk7CiAgICBRU3RyaW5nIGFyZyhjb25zdCBRU3RyaW5nICZhMSwgY29uc3QgUVN0
cmluZyAmYTIsIGNvbnN0IFFTdHJpbmcgJmEzKSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fybl91
bnVzZWRfcmVzdWx0KSk7CiAgICBRU3RyaW5nIGFyZyhjb25zdCBRU3RyaW5nICZhMSwgY29uc3Qg
UVN0cmluZyAmYTIsIGNvbnN0IFFTdHJpbmcgJmEzLAogICAgICAgICAgICAgICAgY29uc3QgUVN0
cmluZyAmYTQpIGNvbnN0IF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAg
IFFTdHJpbmcgYXJnKGNvbnN0IFFTdHJpbmcgJmExLCBjb25zdCBRU3RyaW5nICZhMiwgY29uc3Qg
UVN0cmluZyAmYTMsCiAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZhNCwgY29uc3QgUVN0
cmluZyAmYTUpIGNvbnN0IF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAg
IFFTdHJpbmcgYXJnKGNvbnN0IFFTdHJpbmcgJmExLCBjb25zdCBRU3RyaW5nICZhMiwgY29uc3Qg
UVN0cmluZyAmYTMsCiAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZhNCwgY29uc3QgUVN0
cmluZyAmYTUsIGNvbnN0IFFTdHJpbmcgJmE2KSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fybl91
bnVzZWRfcmVzdWx0KSk7CiAgICBRU3RyaW5nIGFyZyhjb25zdCBRU3RyaW5nICZhMSwgY29uc3Qg
UVN0cmluZyAmYTIsIGNvbnN0IFFTdHJpbmcgJmEzLAogICAgICAgICAgICAgICAgY29uc3QgUVN0
cmluZyAmYTQsIGNvbnN0IFFTdHJpbmcgJmE1LCBjb25zdCBRU3RyaW5nICZhNiwKICAgICAgICAg
ICAgICAgIGNvbnN0IFFTdHJpbmcgJmE3KSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVz
ZWRfcmVzdWx0KSk7CiAgICBRU3RyaW5nIGFyZyhjb25zdCBRU3RyaW5nICZhMSwgY29uc3QgUVN0
cmluZyAmYTIsIGNvbnN0IFFTdHJpbmcgJmEzLAogICAgICAgICAgICAgICAgY29uc3QgUVN0cmlu
ZyAmYTQsIGNvbnN0IFFTdHJpbmcgJmE1LCBjb25zdCBRU3RyaW5nICZhNiwKICAgICAgICAgICAg
ICAgIGNvbnN0IFFTdHJpbmcgJmE3LCBjb25zdCBRU3RyaW5nICZhOCkgY29uc3QgX19hdHRyaWJ1
dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogICAgUVN0cmluZyBhcmcoY29uc3QgUVN0cmlu
ZyAmYTEsIGNvbnN0IFFTdHJpbmcgJmEyLCBjb25zdCBRU3RyaW5nICZhMywKICAgICAgICAgICAg
ICAgIGNvbnN0IFFTdHJpbmcgJmE0LCBjb25zdCBRU3RyaW5nICZhNSwgY29uc3QgUVN0cmluZyAm
YTYsCiAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZhNywgY29uc3QgUVN0cmluZyAmYTgs
IGNvbnN0IFFTdHJpbmcgJmE5KSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVzZWRfcmVz
dWx0KSk7CgogICAgUVN0cmluZyAmdnNwcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0
IGFwKQoKICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDIsIDApKSkKCiAg
ICAgICAgOwogICAgUVN0cmluZyAmc3ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKCiAg
ICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAyLCAzKSkpCgogICAgICAgIDsK
CiAgICBpbnQgaW5kZXhPZihRQ2hhciBjLCBpbnQgZnJvbSA9IDAsIFF0OjpDYXNlU2Vuc2l0aXZp
dHkgY3MgPSBRdDo6Q2FzZVNlbnNpdGl2ZSkgY29uc3Q7CiAgICBpbnQgaW5kZXhPZihjb25zdCBR
U3RyaW5nICZzLCBpbnQgZnJvbSA9IDAsIFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MgPSBRdDo6Q2Fz
ZVNlbnNpdGl2ZSkgY29uc3Q7CiAgICBpbnQgaW5kZXhPZihjb25zdCBRTGF0aW4xU3RyaW5nICZz
LCBpbnQgZnJvbSA9IDAsIFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MgPSBRdDo6Q2FzZVNlbnNpdGl2
ZSkgY29uc3Q7CiAgICBpbnQgbGFzdEluZGV4T2YoUUNoYXIgYywgaW50IGZyb20gPSAtMSwgUXQ6
OkNhc2VTZW5zaXRpdml0eSBjcyA9IFF0OjpDYXNlU2Vuc2l0aXZlKSBjb25zdDsKICAgIGludCBs
YXN0SW5kZXhPZihjb25zdCBRU3RyaW5nICZzLCBpbnQgZnJvbSA9IC0xLCBRdDo6Q2FzZVNlbnNp
dGl2aXR5IGNzID0gUXQ6OkNhc2VTZW5zaXRpdmUpIGNvbnN0OwogICAgaW50IGxhc3RJbmRleE9m
KGNvbnN0IFFMYXRpbjFTdHJpbmcgJnMsIGludCBmcm9tID0gLTEsIFF0OjpDYXNlU2Vuc2l0aXZp
dHkgY3MgPSBRdDo6Q2FzZVNlbnNpdGl2ZSkgY29uc3Q7CgogICAgaW5saW5lIFFCb29sIGNvbnRh
aW5zKFFDaGFyIGMsIFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MgPSBRdDo6Q2FzZVNlbnNpdGl2ZSkg
Y29uc3Q7CiAgICBpbmxpbmUgUUJvb2wgY29udGFpbnMoY29uc3QgUVN0cmluZyAmcywgUXQ6OkNh
c2VTZW5zaXRpdml0eSBjcyA9IFF0OjpDYXNlU2Vuc2l0aXZlKSBjb25zdDsKICAgIGludCBjb3Vu
dChRQ2hhciBjLCBRdDo6Q2FzZVNlbnNpdGl2aXR5IGNzID0gUXQ6OkNhc2VTZW5zaXRpdmUpIGNv
bnN0OwogICAgaW50IGNvdW50KGNvbnN0IFFTdHJpbmcgJnMsIFF0OjpDYXNlU2Vuc2l0aXZpdHkg
Y3MgPSBRdDo6Q2FzZVNlbnNpdGl2ZSkgY29uc3Q7CgoKICAgIGludCBpbmRleE9mKGNvbnN0IFFS
ZWdFeHAgJiwgaW50IGZyb20gPSAwKSBjb25zdDsKICAgIGludCBsYXN0SW5kZXhPZihjb25zdCBR
UmVnRXhwICYsIGludCBmcm9tID0gLTEpIGNvbnN0OwogICAgaW5saW5lIFFCb29sIGNvbnRhaW5z
KGNvbnN0IFFSZWdFeHAgJnJ4KSBjb25zdCB7IHJldHVybiBRQm9vbChpbmRleE9mKHJ4KSAhPSAt
MSk7IH0KICAgIGludCBjb3VudChjb25zdCBRUmVnRXhwICYpIGNvbnN0OwoKICAgIGludCBpbmRl
eE9mKFFSZWdFeHAgJiwgaW50IGZyb20gPSAwKSBjb25zdDsKICAgIGludCBsYXN0SW5kZXhPZihR
UmVnRXhwICYsIGludCBmcm9tID0gLTEpIGNvbnN0OwogICAgaW5saW5lIFFCb29sIGNvbnRhaW5z
KFFSZWdFeHAgJnJ4KSBjb25zdCB7IHJldHVybiBRQm9vbChpbmRleE9mKHJ4KSAhPSAtMSk7IH0K
CgogICAgZW51bSBTZWN0aW9uRmxhZyB7CiAgICAgICAgU2VjdGlvbkRlZmF1bHQgPSAweDAwLAog
ICAgICAgIFNlY3Rpb25Ta2lwRW1wdHkgPSAweDAxLAogICAgICAgIFNlY3Rpb25JbmNsdWRlTGVh
ZGluZ1NlcCA9IDB4MDIsCiAgICAgICAgU2VjdGlvbkluY2x1ZGVUcmFpbGluZ1NlcCA9IDB4MDQs
CiAgICAgICAgU2VjdGlvbkNhc2VJbnNlbnNpdGl2ZVNlcHMgPSAweDA4CiAgICB9OwogICAgdHlw
ZWRlZiBRRmxhZ3M8U2VjdGlvbkZsYWc+IFNlY3Rpb25GbGFnczsKCiAgICBRU3RyaW5nIHNlY3Rp
b24oUUNoYXIgc2VwLCBpbnQgc3RhcnQsIGludCBlbmQgPSAtMSwgU2VjdGlvbkZsYWdzIGZsYWdz
ID0gU2VjdGlvbkRlZmF1bHQpIGNvbnN0OwogICAgUVN0cmluZyBzZWN0aW9uKGNvbnN0IFFTdHJp
bmcgJmluX3NlcCwgaW50IHN0YXJ0LCBpbnQgZW5kID0gLTEsIFNlY3Rpb25GbGFncyBmbGFncyA9
IFNlY3Rpb25EZWZhdWx0KSBjb25zdDsKCiAgICBRU3RyaW5nIHNlY3Rpb24oY29uc3QgUVJlZ0V4
cCAmcmVnLCBpbnQgc3RhcnQsIGludCBlbmQgPSAtMSwgU2VjdGlvbkZsYWdzIGZsYWdzID0gU2Vj
dGlvbkRlZmF1bHQpIGNvbnN0OwoKCiAgICBRU3RyaW5nIGxlZnQoaW50IG4pIGNvbnN0IF9fYXR0
cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAgIFFTdHJpbmcgcmlnaHQoaW50IG4p
IGNvbnN0IF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAgIFFTdHJpbmcg
bWlkKGludCBwb3NpdGlvbiwgaW50IG4gPSAtMSkgY29uc3QgX19hdHRyaWJ1dGVfXyAoKHdhcm5f
dW51c2VkX3Jlc3VsdCkpOwogICAgUVN0cmluZ1JlZiBsZWZ0UmVmKGludCBuKSBjb25zdCBfX2F0
dHJpYnV0ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSk7CiAgICBRU3RyaW5nUmVmIHJpZ2h0UmVm
KGludCBuKSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSk7CiAgICBR
U3RyaW5nUmVmIG1pZFJlZihpbnQgcG9zaXRpb24sIGludCBuID0gLTEpIGNvbnN0IF9fYXR0cmli
dXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKCiAgICBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
UVN0cmluZyAmcywgUXQ6OkNhc2VTZW5zaXRpdml0eSBjcyA9IFF0OjpDYXNlU2Vuc2l0aXZlKSBj
b25zdDsKICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBRTGF0aW4xU3RyaW5nICZzLCBRdDo6Q2Fz
ZVNlbnNpdGl2aXR5IGNzID0gUXQ6OkNhc2VTZW5zaXRpdmUpIGNvbnN0OwogICAgYm9vbCBzdGFy
dHNXaXRoKGNvbnN0IFFDaGFyICZjLCBRdDo6Q2FzZVNlbnNpdGl2aXR5IGNzID0gUXQ6OkNhc2VT
ZW5zaXRpdmUpIGNvbnN0OwogICAgYm9vbCBlbmRzV2l0aChjb25zdCBRU3RyaW5nICZzLCBRdDo6
Q2FzZVNlbnNpdGl2aXR5IGNzID0gUXQ6OkNhc2VTZW5zaXRpdmUpIGNvbnN0OwogICAgYm9vbCBl
bmRzV2l0aChjb25zdCBRTGF0aW4xU3RyaW5nICZzLCBRdDo6Q2FzZVNlbnNpdGl2aXR5IGNzID0g
UXQ6OkNhc2VTZW5zaXRpdmUpIGNvbnN0OwogICAgYm9vbCBlbmRzV2l0aChjb25zdCBRQ2hhciAm
YywgUXQ6OkNhc2VTZW5zaXRpdml0eSBjcyA9IFF0OjpDYXNlU2Vuc2l0aXZlKSBjb25zdDsKCiAg
ICBRU3RyaW5nIGxlZnRKdXN0aWZpZWQoaW50IHdpZHRoLCBRQ2hhciBmaWxsID0gUUxhdGluMUNo
YXIoJyAnKSwgYm9vbCB0cnVuYyA9IGZhbHNlKSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fybl91
bnVzZWRfcmVzdWx0KSk7CiAgICBRU3RyaW5nIHJpZ2h0SnVzdGlmaWVkKGludCB3aWR0aCwgUUNo
YXIgZmlsbCA9IFFMYXRpbjFDaGFyKCcgJyksIGJvb2wgdHJ1bmMgPSBmYWxzZSkgY29uc3QgX19h
dHRyaWJ1dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpOwoKICAgIFFTdHJpbmcgdG9Mb3dlcigp
IGNvbnN0IF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAgIFFTdHJpbmcg
dG9VcHBlcigpIGNvbnN0IF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAg
IFFTdHJpbmcgdG9DYXNlRm9sZGVkKCkgY29uc3QgX19hdHRyaWJ1dGVfXyAoKHdhcm5fdW51c2Vk
X3Jlc3VsdCkpOwoKICAgIFFTdHJpbmcgdHJpbW1lZCgpIGNvbnN0IF9fYXR0cmlidXRlX18gKCh3
YXJuX3VudXNlZF9yZXN1bHQpKTsKICAgIFFTdHJpbmcgc2ltcGxpZmllZCgpIGNvbnN0IF9fYXR0
cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKCiAgICBRU3RyaW5nICZpbnNlcnQoaW50
IGksIFFDaGFyIGMpOwogICAgUVN0cmluZyAmaW5zZXJ0KGludCBpLCBjb25zdCBRQ2hhciAqdWMs
IGludCBsZW4pOwogICAgaW5saW5lIFFTdHJpbmcgJmluc2VydChpbnQgaSwgY29uc3QgUVN0cmlu
ZyAmcykgeyByZXR1cm4gaW5zZXJ0KGksIHMuY29uc3REYXRhKCksIHMubGVuZ3RoKCkpOyB9CiAg
ICBRU3RyaW5nICZpbnNlcnQoaW50IGksIGNvbnN0IFFMYXRpbjFTdHJpbmcgJnMpOwogICAgUVN0
cmluZyAmYXBwZW5kKFFDaGFyIGMpOwogICAgUVN0cmluZyAmYXBwZW5kKGNvbnN0IFFTdHJpbmcg
JnMpOwogICAgUVN0cmluZyAmYXBwZW5kKGNvbnN0IFFTdHJpbmdSZWYgJnMpOwogICAgUVN0cmlu
ZyAmYXBwZW5kKGNvbnN0IFFMYXRpbjFTdHJpbmcgJnMpOwogICAgaW5saW5lIFFTdHJpbmcgJnBy
ZXBlbmQoUUNoYXIgYykgeyByZXR1cm4gaW5zZXJ0KDAsIGMpOyB9CiAgICBpbmxpbmUgUVN0cmlu
ZyAmcHJlcGVuZChjb25zdCBRU3RyaW5nICZzKSB7IHJldHVybiBpbnNlcnQoMCwgcyk7IH0KICAg
IGlubGluZSBRU3RyaW5nICZwcmVwZW5kKGNvbnN0IFFMYXRpbjFTdHJpbmcgJnMpIHsgcmV0dXJu
IGluc2VydCgwLCBzKTsgfQoKICAgIGlubGluZSBRU3RyaW5nICZvcGVyYXRvcis9KFFDaGFyIGMp
IHsKICAgICAgICBpZiAoZC0+cmVmICE9IDEgfHwgZC0+c2l6ZSArIDEgPiBkLT5hbGxvYykKICAg
ICAgICAgICAgcmVhbGxvYyhncm93KGQtPnNpemUgKyAxKSk7CiAgICAgICAgZC0+ZGF0YVtkLT5z
aXplKytdID0gYy51bmljb2RlKCk7CiAgICAgICAgZC0+ZGF0YVtkLT5zaXplXSA9ICdcMCc7CiAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIGlubGluZSBRU3RyaW5nICZvcGVyYXRvcis9
KFFDaGFyOjpTcGVjaWFsQ2hhcmFjdGVyIGMpIHsgcmV0dXJuIGFwcGVuZChRQ2hhcihjKSk7IH0K
ICAgIGlubGluZSBRU3RyaW5nICZvcGVyYXRvcis9KGNvbnN0IFFTdHJpbmcgJnMpIHsgcmV0dXJu
IGFwcGVuZChzKTsgfQogICAgaW5saW5lIFFTdHJpbmcgJm9wZXJhdG9yKz0oY29uc3QgUVN0cmlu
Z1JlZiAmcykgeyByZXR1cm4gYXBwZW5kKHMpOyB9CiAgICBpbmxpbmUgUVN0cmluZyAmb3BlcmF0
b3IrPShjb25zdCBRTGF0aW4xU3RyaW5nICZzKSB7IHJldHVybiBhcHBlbmQocyk7IH0KCiAgICBR
U3RyaW5nICZyZW1vdmUoaW50IGksIGludCBsZW4pOwogICAgUVN0cmluZyAmcmVtb3ZlKFFDaGFy
IGMsIFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MgPSBRdDo6Q2FzZVNlbnNpdGl2ZSk7CiAgICBRU3Ry
aW5nICZyZW1vdmUoY29uc3QgUVN0cmluZyAmcywgUXQ6OkNhc2VTZW5zaXRpdml0eSBjcyA9IFF0
OjpDYXNlU2Vuc2l0aXZlKTsKICAgIFFTdHJpbmcgJnJlcGxhY2UoaW50IGksIGludCBsZW4sIFFD
aGFyIGFmdGVyKTsKICAgIFFTdHJpbmcgJnJlcGxhY2UoaW50IGksIGludCBsZW4sIGNvbnN0IFFD
aGFyICpzLCBpbnQgc2xlbik7CiAgICBRU3RyaW5nICZyZXBsYWNlKGludCBpLCBpbnQgbGVuLCBj
b25zdCBRU3RyaW5nICZhZnRlcik7CiAgICBRU3RyaW5nICZyZXBsYWNlKFFDaGFyIGJlZm9yZSwg
UUNoYXIgYWZ0ZXIsIFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MgPSBRdDo6Q2FzZVNlbnNpdGl2ZSk7
CiAgICBRU3RyaW5nICZyZXBsYWNlKGNvbnN0IFFDaGFyICpiZWZvcmUsIGludCBibGVuLCBjb25z
dCBRQ2hhciAqYWZ0ZXIsIGludCBhbGVuLCBRdDo6Q2FzZVNlbnNpdGl2aXR5IGNzID0gUXQ6OkNh
c2VTZW5zaXRpdmUpOwogICAgUVN0cmluZyAmcmVwbGFjZShjb25zdCBRTGF0aW4xU3RyaW5nICZi
ZWZvcmUsIGNvbnN0IFFMYXRpbjFTdHJpbmcgJmFmdGVyLCBRdDo6Q2FzZVNlbnNpdGl2aXR5IGNz
ID0gUXQ6OkNhc2VTZW5zaXRpdmUpOwogICAgUVN0cmluZyAmcmVwbGFjZShjb25zdCBRTGF0aW4x
U3RyaW5nICZiZWZvcmUsIGNvbnN0IFFTdHJpbmcgJmFmdGVyLCBRdDo6Q2FzZVNlbnNpdGl2aXR5
IGNzID0gUXQ6OkNhc2VTZW5zaXRpdmUpOwogICAgUVN0cmluZyAmcmVwbGFjZShjb25zdCBRU3Ry
aW5nICZiZWZvcmUsIGNvbnN0IFFMYXRpbjFTdHJpbmcgJmFmdGVyLCBRdDo6Q2FzZVNlbnNpdGl2
aXR5IGNzID0gUXQ6OkNhc2VTZW5zaXRpdmUpOwogICAgUVN0cmluZyAmcmVwbGFjZShjb25zdCBR
U3RyaW5nICZiZWZvcmUsIGNvbnN0IFFTdHJpbmcgJmFmdGVyLAogICAgICAgICAgICAgICAgICAg
ICBRdDo6Q2FzZVNlbnNpdGl2aXR5IGNzID0gUXQ6OkNhc2VTZW5zaXRpdmUpOwogICAgUVN0cmlu
ZyAmcmVwbGFjZShRQ2hhciBjLCBjb25zdCBRU3RyaW5nICZhZnRlciwgUXQ6OkNhc2VTZW5zaXRp
dml0eSBjcyA9IFF0OjpDYXNlU2Vuc2l0aXZlKTsKICAgIFFTdHJpbmcgJnJlcGxhY2UoUUNoYXIg
YywgY29uc3QgUUxhdGluMVN0cmluZyAmYWZ0ZXIsIFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MgPSBR
dDo6Q2FzZVNlbnNpdGl2ZSk7CgogICAgUVN0cmluZyAmcmVwbGFjZShjb25zdCBRUmVnRXhwICZy
eCwgY29uc3QgUVN0cmluZyAmYWZ0ZXIpOwogICAgaW5saW5lIFFTdHJpbmcgJnJlbW92ZShjb25z
dCBRUmVnRXhwICZyeCkKICAgIHsgcmV0dXJuIHJlcGxhY2UocngsIFFTdHJpbmcoKSk7IH0KCgog
ICAgZW51bSBTcGxpdEJlaGF2aW9yIHsgS2VlcEVtcHR5UGFydHMsIFNraXBFbXB0eVBhcnRzIH07
CgogICAgUVN0cmluZ0xpc3Qgc3BsaXQoY29uc3QgUVN0cmluZyAmc2VwLCBTcGxpdEJlaGF2aW9y
IGJlaGF2aW9yID0gS2VlcEVtcHR5UGFydHMsCiAgICAgICAgICAgICAgICAgICAgICBRdDo6Q2Fz
ZVNlbnNpdGl2aXR5IGNzID0gUXQ6OkNhc2VTZW5zaXRpdmUpIGNvbnN0IF9fYXR0cmlidXRlX18g
KCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAgIFFTdHJpbmdMaXN0IHNwbGl0KGNvbnN0IFFDaGFy
ICZzZXAsIFNwbGl0QmVoYXZpb3IgYmVoYXZpb3IgPSBLZWVwRW1wdHlQYXJ0cywKICAgICAgICAg
ICAgICAgICAgICAgIFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MgPSBRdDo6Q2FzZVNlbnNpdGl2ZSkg
Y29uc3QgX19hdHRyaWJ1dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpOwoKICAgIFFTdHJpbmdM
aXN0IHNwbGl0KGNvbnN0IFFSZWdFeHAgJnNlcCwgU3BsaXRCZWhhdmlvciBiZWhhdmlvciA9IEtl
ZXBFbXB0eVBhcnRzKSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSk7
CgoKICAgIGVudW0gTm9ybWFsaXphdGlvbkZvcm0gewogICAgICAgIE5vcm1hbGl6YXRpb25Gb3Jt
X0QsCiAgICAgICAgTm9ybWFsaXphdGlvbkZvcm1fQywKICAgICAgICBOb3JtYWxpemF0aW9uRm9y
bV9LRCwKICAgICAgICBOb3JtYWxpemF0aW9uRm9ybV9LQwogICAgfTsKICAgIFFTdHJpbmcgbm9y
bWFsaXplZChOb3JtYWxpemF0aW9uRm9ybSBtb2RlKSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fy
bl91bnVzZWRfcmVzdWx0KSk7CiAgICBRU3RyaW5nIG5vcm1hbGl6ZWQoTm9ybWFsaXphdGlvbkZv
cm0gbW9kZSwgUUNoYXI6OlVuaWNvZGVWZXJzaW9uIHZlcnNpb24pIGNvbnN0IF9fYXR0cmlidXRl
X18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKCiAgICBRU3RyaW5nIHJlcGVhdGVkKGludCB0aW1l
cykgY29uc3Q7CgogICAgY29uc3QgdXNob3J0ICp1dGYxNigpIGNvbnN0OwoKICAgIFFCeXRlQXJy
YXkgdG9Bc2NpaSgpIGNvbnN0IF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsK
ICAgIFFCeXRlQXJyYXkgdG9MYXRpbjEoKSBjb25zdCBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVz
ZWRfcmVzdWx0KSk7CiAgICBRQnl0ZUFycmF5IHRvVXRmOCgpIGNvbnN0IF9fYXR0cmlidXRlX18g
KCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKICAgIFFCeXRlQXJyYXkgdG9Mb2NhbDhCaXQoKSBjb25z
dCBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSk7CiAgICBRVmVjdG9yPHVpbnQ+
IHRvVWNzNCgpIGNvbnN0IF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKCiAg
ICBzdGF0aWMgUVN0cmluZyBmcm9tQXNjaWkoY29uc3QgY2hhciAqLCBpbnQgc2l6ZSA9IC0xKTsK
ICAgIHN0YXRpYyBRU3RyaW5nIGZyb21MYXRpbjEoY29uc3QgY2hhciAqLCBpbnQgc2l6ZSA9IC0x
KTsKICAgIHN0YXRpYyBRU3RyaW5nIGZyb21VdGY4KGNvbnN0IGNoYXIgKiwgaW50IHNpemUgPSAt
MSk7CiAgICBzdGF0aWMgUVN0cmluZyBmcm9tTG9jYWw4Qml0KGNvbnN0IGNoYXIgKiwgaW50IHNp
emUgPSAtMSk7CiAgICBzdGF0aWMgUVN0cmluZyBmcm9tVXRmMTYoY29uc3QgdXNob3J0ICosIGlu
dCBzaXplID0gLTEpOwogICAgc3RhdGljIFFTdHJpbmcgZnJvbVVjczQoY29uc3QgdWludCAqLCBp
bnQgc2l6ZSA9IC0xKTsKICAgIHN0YXRpYyBRU3RyaW5nIGZyb21SYXdEYXRhKGNvbnN0IFFDaGFy
ICosIGludCBzaXplKTsKCiAgICBpbnQgdG9XQ2hhckFycmF5KHdjaGFyX3QgKmFycmF5KSBjb25z
dDsKICAgIHN0YXRpYyBRU3RyaW5nIGZyb21XQ2hhckFycmF5KGNvbnN0IHdjaGFyX3QgKiwgaW50
IHNpemUgPSAtMSk7CgogICAgUVN0cmluZyAmc2V0UmF3RGF0YShjb25zdCBRQ2hhciAqdW5pY29k
ZSwgaW50IHNpemUpOwogICAgUVN0cmluZyAmc2V0VW5pY29kZShjb25zdCBRQ2hhciAqdW5pY29k
ZSwgaW50IHNpemUpOwogICAgaW5saW5lIFFTdHJpbmcgJnNldFV0ZjE2KGNvbnN0IHVzaG9ydCAq
dXRmMTYsIGludCBzaXplKTsKCgogICAgaW50IGNvbXBhcmUoY29uc3QgUVN0cmluZyAmcykgY29u
c3Q7CiAgICBpbnQgY29tcGFyZShjb25zdCBRU3RyaW5nICZzLCBRdDo6Q2FzZVNlbnNpdGl2aXR5
IGNzKSBjb25zdDsKCiAgICBpbnQgY29tcGFyZShjb25zdCBRTGF0aW4xU3RyaW5nICZvdGhlciwg
UXQ6OkNhc2VTZW5zaXRpdml0eSBjcyA9IFF0OjpDYXNlU2Vuc2l0aXZlKSBjb25zdDsKCgogICAg
c3RhdGljIGlubGluZSBpbnQgY29tcGFyZShjb25zdCBRU3RyaW5nICZzMSwgY29uc3QgUVN0cmlu
ZyAmczIpCiAgICB7IHJldHVybiBzMS5jb21wYXJlKHMyKTsgfQogICAgc3RhdGljIGlubGluZSBp
bnQgY29tcGFyZShjb25zdCBRU3RyaW5nICZzMSwgY29uc3QgUVN0cmluZyAmczIsIFF0OjpDYXNl
U2Vuc2l0aXZpdHkgY3MpCiAgICB7IHJldHVybiBzMS5jb21wYXJlKHMyLCBjcyk7IH0KCiAgICBz
dGF0aWMgaW5saW5lIGludCBjb21wYXJlKGNvbnN0IFFTdHJpbmcmIHMxLCBjb25zdCBRTGF0aW4x
U3RyaW5nICZzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXQ6OkNhc2VTZW5zaXRp
dml0eSBjcyA9IFF0OjpDYXNlU2Vuc2l0aXZlKQogICAgeyByZXR1cm4gczEuY29tcGFyZShzMiwg
Y3MpOyB9CiAgICBzdGF0aWMgaW5saW5lIGludCBjb21wYXJlKGNvbnN0IFFMYXRpbjFTdHJpbmcm
IHMxLCBjb25zdCBRU3RyaW5nICZzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXQ6
OkNhc2VTZW5zaXRpdml0eSBjcyA9IFF0OjpDYXNlU2Vuc2l0aXZlKQogICAgeyByZXR1cm4gLXMy
LmNvbXBhcmUoczEsIGNzKTsgfQoKICAgIGludCBjb21wYXJlKGNvbnN0IFFTdHJpbmdSZWYgJnMs
IFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MgPSBRdDo6Q2FzZVNlbnNpdGl2ZSkgY29uc3Q7CiAgICBz
dGF0aWMgaW50IGNvbXBhcmUoY29uc3QgUVN0cmluZyAmczEsIGNvbnN0IFFTdHJpbmdSZWYgJnMy
LAogICAgICAgICAgICAgICAgICAgICAgIFF0OjpDYXNlU2Vuc2l0aXZpdHkgPSBRdDo6Q2FzZVNl
bnNpdGl2ZSk7CgogICAgaW50IGxvY2FsZUF3YXJlQ29tcGFyZShjb25zdCBRU3RyaW5nJiBzKSBj
b25zdDsKICAgIHN0YXRpYyBpbnQgbG9jYWxlQXdhcmVDb21wYXJlKGNvbnN0IFFTdHJpbmcmIHMx
LCBjb25zdCBRU3RyaW5nJiBzMikKICAgIHsgcmV0dXJuIHMxLmxvY2FsZUF3YXJlQ29tcGFyZShz
Mik7IH0KCiAgICBpbnQgbG9jYWxlQXdhcmVDb21wYXJlKGNvbnN0IFFTdHJpbmdSZWYgJnMpIGNv
bnN0OwogICAgc3RhdGljIGludCBsb2NhbGVBd2FyZUNvbXBhcmUoY29uc3QgUVN0cmluZyYgczEs
IGNvbnN0IFFTdHJpbmdSZWYmIHMyKTsKCiAgICBzaG9ydCB0b1Nob3J0KGJvb2wgKm9rPTAsIGlu
dCBiYXNlPTEwKSBjb25zdDsKICAgIHVzaG9ydCB0b1VTaG9ydChib29sICpvaz0wLCBpbnQgYmFz
ZT0xMCkgY29uc3Q7CiAgICBpbnQgdG9JbnQoYm9vbCAqb2s9MCwgaW50IGJhc2U9MTApIGNvbnN0
OwogICAgdWludCB0b1VJbnQoYm9vbCAqb2s9MCwgaW50IGJhc2U9MTApIGNvbnN0OwogICAgbG9u
ZyB0b0xvbmcoYm9vbCAqb2s9MCwgaW50IGJhc2U9MTApIGNvbnN0OwogICAgdWxvbmcgdG9VTG9u
Zyhib29sICpvaz0wLCBpbnQgYmFzZT0xMCkgY29uc3Q7CiAgICBxbG9uZ2xvbmcgdG9Mb25nTG9u
Zyhib29sICpvaz0wLCBpbnQgYmFzZT0xMCkgY29uc3Q7CiAgICBxdWxvbmdsb25nIHRvVUxvbmdM
b25nKGJvb2wgKm9rPTAsIGludCBiYXNlPTEwKSBjb25zdDsKICAgIGZsb2F0IHRvRmxvYXQoYm9v
bCAqb2s9MCkgY29uc3Q7CiAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCAqb2s9MCkgY29uc3Q7Cgog
ICAgUVN0cmluZyAmc2V0TnVtKHNob3J0LCBpbnQgYmFzZT0xMCk7CiAgICBRU3RyaW5nICZzZXRO
dW0odXNob3J0LCBpbnQgYmFzZT0xMCk7CiAgICBRU3RyaW5nICZzZXROdW0oaW50LCBpbnQgYmFz
ZT0xMCk7CiAgICBRU3RyaW5nICZzZXROdW0odWludCwgaW50IGJhc2U9MTApOwogICAgUVN0cmlu
ZyAmc2V0TnVtKGxvbmcsIGludCBiYXNlPTEwKTsKICAgIFFTdHJpbmcgJnNldE51bSh1bG9uZywg
aW50IGJhc2U9MTApOwogICAgUVN0cmluZyAmc2V0TnVtKHFsb25nbG9uZywgaW50IGJhc2U9MTAp
OwogICAgUVN0cmluZyAmc2V0TnVtKHF1bG9uZ2xvbmcsIGludCBiYXNlPTEwKTsKICAgIFFTdHJp
bmcgJnNldE51bShmbG9hdCwgY2hhciBmPSdnJywgaW50IHByZWM9Nik7CiAgICBRU3RyaW5nICZz
ZXROdW0oZG91YmxlLCBjaGFyIGY9J2cnLCBpbnQgcHJlYz02KTsKCiAgICBzdGF0aWMgUVN0cmlu
ZyBudW1iZXIoaW50LCBpbnQgYmFzZT0xMCk7CiAgICBzdGF0aWMgUVN0cmluZyBudW1iZXIodWlu
dCwgaW50IGJhc2U9MTApOwogICAgc3RhdGljIFFTdHJpbmcgbnVtYmVyKGxvbmcsIGludCBiYXNl
PTEwKTsKICAgIHN0YXRpYyBRU3RyaW5nIG51bWJlcih1bG9uZywgaW50IGJhc2U9MTApOwogICAg
c3RhdGljIFFTdHJpbmcgbnVtYmVyKHFsb25nbG9uZywgaW50IGJhc2U9MTApOwogICAgc3RhdGlj
IFFTdHJpbmcgbnVtYmVyKHF1bG9uZ2xvbmcsIGludCBiYXNlPTEwKTsKICAgIHN0YXRpYyBRU3Ry
aW5nIG51bWJlcihkb3VibGUsIGNoYXIgZj0nZycsIGludCBwcmVjPTYpOwoKICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBRU3RyaW5nICZzKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0
IFFTdHJpbmcgJnMpIGNvbnN0OwogICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFFTdHJp
bmcgJnMpIGNvbnN0IHsgcmV0dXJuIHMgPCAqdGhpczsgfQogICAgaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBRU3RyaW5nICZzKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShzKTsgfQog
ICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBRU3RyaW5nICZzKSBjb25zdCB7IHJldHVy
biAhb3BlcmF0b3I+KHMpOyB9CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFFTdHJp
bmcgJnMpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcjwocyk7IH0KCiAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgUUxhdGluMVN0cmluZyAmcykgY29uc3Q7CiAgICBib29sIG9wZXJhdG9yPChjb25z
dCBRTGF0aW4xU3RyaW5nICZzKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFFMYXRp
bjFTdHJpbmcgJnMpIGNvbnN0OwogICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRTGF0
aW4xU3RyaW5nICZzKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShzKTsgfQogICAgaW5saW5l
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBRTGF0aW4xU3RyaW5nICZzKSBjb25zdCB7IHJldHVybiAh
b3BlcmF0b3I+KHMpOyB9CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFFMYXRpbjFT
dHJpbmcgJnMpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcjwocyk7IH0KCgoKICAgIGlubGluZSBR
U3RyaW5nKGNvbnN0IGNoYXIgKmNoKSA6IGQoZnJvbUFzY2lpX2hlbHBlcihjaCkpCiAgICB7fQog
ICAgaW5saW5lIFFTdHJpbmcoY29uc3QgUUJ5dGVBcnJheSAmYSkKICAgICAgICA6IGQoZnJvbUFz
Y2lpX2hlbHBlcihhLmNvbnN0RGF0YSgpLCBxc3RybmxlbihhLmNvbnN0RGF0YSgpLCBhLnNpemUo
KSkpKQogICAge30KICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBR
U3RyaW5nICZvcGVyYXRvcj0oY29uc3QgY2hhciAqY2gpCiAgICB7IHJldHVybiAoKnRoaXMgPSBm
cm9tQXNjaWkoY2gpKTsgfQogICAgaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRf
XykpIFFTdHJpbmcgJm9wZXJhdG9yPShjb25zdCBRQnl0ZUFycmF5ICZhKQogICAgeyByZXR1cm4g
KCp0aGlzID0gZnJvbUFzY2lpKGEuY29uc3REYXRhKCksIHFzdHJubGVuKGEuY29uc3REYXRhKCks
IGEuc2l6ZSgpKSkpOyB9CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9f
KSkgUVN0cmluZyAmb3BlcmF0b3I9KGNoYXIgYykKICAgIHsgcmV0dXJuICgqdGhpcyA9IFFDaGFy
Ojpmcm9tQXNjaWkoYykpOyB9CgoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNh
dGVkX18pKSBRU3RyaW5nICZwcmVwZW5kKGNvbnN0IGNoYXIgKnMpCiAgICB7IHJldHVybiBwcmVw
ZW5kKFFTdHJpbmc6OmZyb21Bc2NpaShzKSk7IH0KICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgo
X19kZXByZWNhdGVkX18pKSBRU3RyaW5nICZwcmVwZW5kKGNvbnN0IFFCeXRlQXJyYXkgJnMpCiAg
ICB7IHJldHVybiBwcmVwZW5kKFFTdHJpbmc6OmZyb21Bc2NpaShzLmNvbnN0RGF0YSgpLCBxc3Ry
bmxlbihzLmNvbnN0RGF0YSgpLCBzLnNpemUoKSkpKTsgfQogICAgaW5saW5lIF9fYXR0cmlidXRl
X18gKChfX2RlcHJlY2F0ZWRfXykpIFFTdHJpbmcgJmFwcGVuZChjb25zdCBjaGFyICpzKQogICAg
eyByZXR1cm4gYXBwZW5kKFFTdHJpbmc6OmZyb21Bc2NpaShzKSk7IH0KICAgIGlubGluZSBfX2F0
dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBRU3RyaW5nICZhcHBlbmQoY29uc3QgUUJ5dGVB
cnJheSAmcykKICAgIHsgcmV0dXJuIGFwcGVuZChRU3RyaW5nOjpmcm9tQXNjaWkocy5jb25zdERh
dGEoKSwgcXN0cm5sZW4ocy5jb25zdERhdGEoKSwgcy5zaXplKCkpKSk7IH0KICAgIGlubGluZSBf
X2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBRU3RyaW5nICZvcGVyYXRvcis9KGNvbnN0
IGNoYXIgKnMpCiAgICB7IHJldHVybiBhcHBlbmQoUVN0cmluZzo6ZnJvbUFzY2lpKHMpKTsgfQog
ICAgaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIFFTdHJpbmcgJm9wZXJh
dG9yKz0oY29uc3QgUUJ5dGVBcnJheSAmcykKICAgIHsgcmV0dXJuIGFwcGVuZChRU3RyaW5nOjpm
cm9tQXNjaWkocy5jb25zdERhdGEoKSwgcXN0cm5sZW4ocy5jb25zdERhdGEoKSwgcy5zaXplKCkp
KSk7IH0KICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBRU3RyaW5n
ICZvcGVyYXRvcis9KGNoYXIgYykKICAgIHsgcmV0dXJuIGFwcGVuZChRQ2hhcjo6ZnJvbUFzY2lp
KGMpKTsgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBib29s
IG9wZXJhdG9yPT0oY29uc3QgY2hhciAqcykgY29uc3Q7CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVf
XyAoKF9fZGVwcmVjYXRlZF9fKSkgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIgKnMpIGNvbnN0
OwogICAgaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IGNoYXIgKnMpIGNvbnN0OwogICAgaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Rl
cHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0b3I8PShjb25zdCBjaGFyICpzMikgY29uc3Q7CiAgICBp
bmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSkgYm9vbCBvcGVyYXRvcj4oY29u
c3QgY2hhciAqczIpIGNvbnN0OwogICAgaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0
ZWRfXykpIGJvb2wgb3BlcmF0b3I+PShjb25zdCBjaGFyICpzMikgY29uc3Q7CgogICAgaW5saW5l
IF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0b3I9PShjb25zdCBR
Qnl0ZUFycmF5ICZzKSBjb25zdDsKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNh
dGVkX18pKSBib29sIG9wZXJhdG9yIT0oY29uc3QgUUJ5dGVBcnJheSAmcykgY29uc3Q7CiAgICBp
bmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSkgYm9vbCBvcGVyYXRvcjwoY29u
c3QgUUJ5dGVBcnJheSAmcykgY29uc3QKICAgIHsgcmV0dXJuICp0aGlzIDwgUVN0cmluZzo6ZnJv
bUFzY2lpKHMuY29uc3REYXRhKCksIHMuc2l6ZSgpKTsgfQogICAgaW5saW5lIF9fYXR0cmlidXRl
X18gKChfX2RlcHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFFCeXRlQXJyYXkgJnMp
IGNvbnN0CiAgICB7IHJldHVybiAqdGhpcyA+IFFTdHJpbmc6OmZyb21Bc2NpaShzLmNvbnN0RGF0
YSgpLCBzLnNpemUoKSk7IH0KICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVk
X18pKSBib29sIG9wZXJhdG9yPD0oY29uc3QgUUJ5dGVBcnJheSAmcykgY29uc3QKICAgIHsgcmV0
dXJuICp0aGlzIDw9IFFTdHJpbmc6OmZyb21Bc2NpaShzLmNvbnN0RGF0YSgpLCBzLnNpemUoKSk7
IH0KICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBib29sIG9wZXJh
dG9yPj0oY29uc3QgUUJ5dGVBcnJheSAmcykgY29uc3QKICAgIHsgcmV0dXJuICp0aGlzID49IFFT
dHJpbmc6OmZyb21Bc2NpaShzLmNvbnN0RGF0YSgpLCBzLnNpemUoKSk7IH0KCgogICAgdHlwZWRl
ZiBRQ2hhciAqaXRlcmF0b3I7CiAgICB0eXBlZGVmIGNvbnN0IFFDaGFyICpjb25zdF9pdGVyYXRv
cjsKICAgIHR5cGVkZWYgaXRlcmF0b3IgSXRlcmF0b3I7CiAgICB0eXBlZGVmIGNvbnN0X2l0ZXJh
dG9yIENvbnN0SXRlcmF0b3I7CiAgICBpdGVyYXRvciBiZWdpbigpOwogICAgY29uc3RfaXRlcmF0
b3IgYmVnaW4oKSBjb25zdDsKICAgIGNvbnN0X2l0ZXJhdG9yIGNvbnN0QmVnaW4oKSBjb25zdDsK
ICAgIGl0ZXJhdG9yIGVuZCgpOwogICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAgICBj
b25zdF9pdGVyYXRvciBjb25zdEVuZCgpIGNvbnN0OwoKCiAgICBpbmxpbmUgdm9pZCBwdXNoX2Jh
Y2soUUNoYXIgYykgeyBhcHBlbmQoYyk7IH0KICAgIGlubGluZSB2b2lkIHB1c2hfYmFjayhjb25z
dCBRU3RyaW5nICZzKSB7IGFwcGVuZChzKTsgfQogICAgaW5saW5lIHZvaWQgcHVzaF9mcm9udChR
Q2hhciBjKSB7IHByZXBlbmQoYyk7IH0KICAgIGlubGluZSB2b2lkIHB1c2hfZnJvbnQoY29uc3Qg
UVN0cmluZyAmcykgeyBwcmVwZW5kKHMpOyB9CgoKICAgIHN0YXRpYyBpbmxpbmUgUVN0cmluZyBm
cm9tU3RkU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZzKTsKICAgIGlubGluZSBzdGQ6OnN0cmlu
ZyB0b1N0ZFN0cmluZygpIGNvbnN0OwoKCgoKCiAgICBzdGF0aWMgaW5saW5lIFFTdHJpbmcgZnJv
bVN0ZFdTdHJpbmcoY29uc3QgUVN0ZFdTdHJpbmcgJnMpOwogICAgaW5saW5lIFFTdGRXU3RyaW5n
IHRvU3RkV1N0cmluZygpIGNvbnN0OwoKCgoKCiAgICBzdHJ1Y3QgTnVsbCB7IH07CiAgICBzdGF0
aWMgY29uc3QgTnVsbCBudWxsOwogICAgaW5saW5lIFFTdHJpbmcoY29uc3QgTnVsbCAmKTogZCgm
c2hhcmVkX251bGwpIHsgZC0+cmVmLnJlZigpOyB9CiAgICBpbmxpbmUgUVN0cmluZyAmb3BlcmF0
b3I9KGNvbnN0IE51bGwgJikgeyAqdGhpcyA9IFFTdHJpbmcoKTsgcmV0dXJuICp0aGlzOyB9CiAg
ICBpbmxpbmUgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBkID09ICZzaGFyZWRfbnVsbDsg
fQojIDU5MiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xc3RyaW5nLmgiCiAgICBib29sIGlz
U2ltcGxlVGV4dCgpIGNvbnN0IHsgaWYgKCFkLT5jbGVhbikgdXBkYXRlUHJvcGVydGllcygpOyBy
ZXR1cm4gZC0+c2ltcGxldGV4dDsgfQogICAgYm9vbCBpc1JpZ2h0VG9MZWZ0KCkgY29uc3Q7Cgog
ICAgUVN0cmluZyhpbnQgc2l6ZSwgUXQ6OkluaXRpYWxpemF0aW9uKTsKCnByaXZhdGU6CiMgNjA3
ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FzdHJpbmcuaCIKICAgIHN0cnVjdCBEYXRhIHsK
ICAgICAgICBRQmFzaWNBdG9taWNJbnQgcmVmOwogICAgICAgIGludCBhbGxvYywgc2l6ZTsKICAg
ICAgICB1c2hvcnQgKmRhdGE7CiAgICAgICAgdXNob3J0IGNsZWFuIDogMTsKICAgICAgICB1c2hv
cnQgc2ltcGxldGV4dCA6IDE7CiAgICAgICAgdXNob3J0IHJpZ2h0dG9sZWZ0IDogMTsKICAgICAg
ICB1c2hvcnQgYXNjaWlDYWNoZSA6IDE7CiAgICAgICAgdXNob3J0IGNhcGFjaXR5IDogMTsKICAg
ICAgICB1c2hvcnQgcmVzZXJ2ZWQgOiAxMTsKCiAgICAgICAgdXNob3J0IGFycmF5WzFdOwogICAg
fTsKICAgIHN0YXRpYyBEYXRhIHNoYXJlZF9udWxsOwogICAgc3RhdGljIERhdGEgc2hhcmVkX2Vt
cHR5OwogICAgRGF0YSAqZDsKICAgIFFTdHJpbmcoRGF0YSAqZGQsIGludCApIDogZChkZCkge30K
CiAgICBzdGF0aWMgUVRleHRDb2RlYyAqY29kZWNGb3JDU3RyaW5nczsKCiAgICBzdGF0aWMgaW50
IGdyb3coaW50KTsKICAgIHN0YXRpYyB2b2lkIGZyZWUoRGF0YSAqKTsKICAgIHZvaWQgcmVhbGxv
YygpOwogICAgdm9pZCByZWFsbG9jKGludCBhbGxvYyk7CiAgICB2b2lkIGV4cGFuZChpbnQgaSk7
CiAgICB2b2lkIHVwZGF0ZVByb3BlcnRpZXMoKSBjb25zdDsKICAgIFFTdHJpbmcgbXVsdGlBcmco
aW50IG51bUFyZ3MsIGNvbnN0IFFTdHJpbmcgKiphcmdzKSBjb25zdDsKICAgIHN0YXRpYyBpbnQg
Y29tcGFyZV9oZWxwZXIoY29uc3QgUUNoYXIgKmRhdGExLCBpbnQgbGVuZ3RoMSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUNoYXIgKmRhdGEyLCBpbnQgbGVuZ3RoMiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUXQ6OkNhc2VTZW5zaXRpdml0eSBjcyA9IFF0OjpD
YXNlU2Vuc2l0aXZlKTsKICAgIHN0YXRpYyBpbnQgY29tcGFyZV9oZWxwZXIoY29uc3QgUUNoYXIg
KmRhdGExLCBpbnQgbGVuZ3RoMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGlu
MVN0cmluZyBzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXQ6OkNhc2VTZW5zaXRp
dml0eSBjcyA9IFF0OjpDYXNlU2Vuc2l0aXZlKTsKICAgIHN0YXRpYyBpbnQgbG9jYWxlQXdhcmVD
b21wYXJlX2hlbHBlcihjb25zdCBRQ2hhciAqZGF0YTEsIGludCBsZW5ndGgxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDaGFyICpkYXRhMiwgaW50IGxl
bmd0aDIpOwogICAgc3RhdGljIERhdGEgKmZyb21MYXRpbjFfaGVscGVyKGNvbnN0IGNoYXIgKnN0
ciwgaW50IHNpemUgPSAtMSk7CiAgICBzdGF0aWMgRGF0YSAqZnJvbUFzY2lpX2hlbHBlcihjb25z
dCBjaGFyICpzdHIsIGludCBzaXplID0gLTEpOwogICAgdm9pZCByZXBsYWNlX2hlbHBlcih1aW50
ICppbmRpY2VzLCBpbnQgbkluZGljZXMsIGludCBibGVuLCBjb25zdCBRQ2hhciAqYWZ0ZXIsIGlu
dCBhbGVuKTsKICAgIGZyaWVuZCBjbGFzcyBRQ2hhclJlZjsKICAgIGZyaWVuZCBjbGFzcyBRVGV4
dENvZGVjOwogICAgZnJpZW5kIGNsYXNzIFFTdHJpbmdSZWY7CiAgICBmcmllbmQgc3RydWN0IFFB
YnN0cmFjdENvbmNhdGVuYWJsZTsKICAgIGZyaWVuZCBpbmxpbmUgYm9vbCBxU3RyaW5nQ29tcGFy
aXNvbkhlbHBlcihjb25zdCBRU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIpOwogICAgZnJpZW5k
IGlubGluZSBib29sIHFTdHJpbmdDb21wYXJpc29uSGVscGVyKGNvbnN0IFFTdHJpbmdSZWYgJnMx
LCBjb25zdCBjaGFyICpzMik7CnB1YmxpYzoKICAgIHR5cGVkZWYgRGF0YSAqIERhdGFQdHI7CiAg
ICBpbmxpbmUgRGF0YVB0ciAmZGF0YV9wdHIoKSB7IHJldHVybiBkOyB9Cn07CgoKY2xhc3MgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUUxhdGluMVN0cmluZwp7CnB1Ymxp
YzoKICAgIGlubGluZSBleHBsaWNpdCBRTGF0aW4xU3RyaW5nKGNvbnN0IGNoYXIgKnMpIDogY2hh
cnMocykge30KICAgIGlubGluZSBRTGF0aW4xU3RyaW5nICZvcGVyYXRvcj0oY29uc3QgUUxhdGlu
MVN0cmluZyAmb3RoZXIpCiAgICB7IGNoYXJzID0gb3RoZXIuY2hhcnM7IHJldHVybiAqdGhpczsg
fQoKICAgIGlubGluZSBjb25zdCBjaGFyICpsYXRpbjEoKSBjb25zdCB7IHJldHVybiBjaGFyczsg
fQoKICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUVN0cmluZyAmcykgY29uc3QKICAg
IHsgcmV0dXJuIHMgPT0gKnRoaXM7IH0KICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
UVN0cmluZyAmcykgY29uc3QKICAgIHsgcmV0dXJuIHMgIT0gKnRoaXM7IH0KICAgIGlubGluZSBi
b29sIG9wZXJhdG9yPihjb25zdCBRU3RyaW5nICZzKSBjb25zdAogICAgeyByZXR1cm4gcyA8ICp0
aGlzOyB9CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgUVN0cmluZyAmcykgY29uc3QK
ICAgIHsgcmV0dXJuIHMgPiAqdGhpczsgfQogICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25z
dCBRU3RyaW5nICZzKSBjb25zdAogICAgeyByZXR1cm4gcyA8PSAqdGhpczsgfQogICAgaW5saW5l
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBRU3RyaW5nICZzKSBjb25zdAogICAgeyByZXR1cm4gcyA+
PSAqdGhpczsgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciAqcykgY29uc3QKICAgICAgICB7IHJldHVybiBRU3Ry
aW5nOjpmcm9tQXNjaWkocykgPT0gKnRoaXM7IH0KICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fICgo
X19kZXByZWNhdGVkX18pKSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciAqcykgY29uc3QKICAg
ICAgICB7IHJldHVybiBRU3RyaW5nOjpmcm9tQXNjaWkocykgIT0gKnRoaXM7IH0KICAgIGlubGlu
ZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBib29sIG9wZXJhdG9yPChjb25zdCBj
aGFyICpzKSBjb25zdAogICAgICAgIHsgcmV0dXJuIFFTdHJpbmc6OmZyb21Bc2NpaShzKSA+ICp0
aGlzOyB9CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSkgYm9vbCBv
cGVyYXRvcj4oY29uc3QgY2hhciAqcykgY29uc3QKICAgICAgICB7IHJldHVybiBRU3RyaW5nOjpm
cm9tQXNjaWkocykgPCAqdGhpczsgfQogICAgaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2RlcHJl
Y2F0ZWRfXykpIGJvb2wgb3BlcmF0b3I8PShjb25zdCBjaGFyICpzKSBjb25zdAogICAgICAgIHsg
cmV0dXJuIFFTdHJpbmc6OmZyb21Bc2NpaShzKSA+PSAqdGhpczsgfQogICAgaW5saW5lIF9fYXR0
cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0b3I+PShjb25zdCBjaGFyICpz
KSBjb25zdAogICAgICAgIHsgcmV0dXJuIFFTdHJpbmc6OmZyb21Bc2NpaShzKSA8PSAqdGhpczsg
fQpwcml2YXRlOgogICAgY29uc3QgY2hhciAqY2hhcnM7Cn07CgoKCmlubGluZSBRU3RyaW5nOjpR
U3RyaW5nKGNvbnN0IFFMYXRpbjFTdHJpbmcgJmFMYXRpbjEpIDogZChmcm9tTGF0aW4xX2hlbHBl
cihhTGF0aW4xLmxhdGluMSgpKSkKeyB9CmlubGluZSBpbnQgUVN0cmluZzo6bGVuZ3RoKCkgY29u
c3QKeyByZXR1cm4gZC0+c2l6ZTsgfQppbmxpbmUgY29uc3QgUUNoYXIgUVN0cmluZzo6YXQoaW50
IGkpIGNvbnN0CnsgKCghKGkgPj0gMCAmJiBpIDwgc2l6ZSgpKSkgPyBxdF9hc3NlcnQoImkgPj0g
MCAmJiBpIDwgc2l6ZSgpIiwiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xc3RyaW5nLmgiLDcw
MikgOiBxdF9ub29wKCkpOyByZXR1cm4gZC0+ZGF0YVtpXTsgfQppbmxpbmUgY29uc3QgUUNoYXIg
UVN0cmluZzo6b3BlcmF0b3JbXShpbnQgaSkgY29uc3QKeyAoKCEoaSA+PSAwICYmIGkgPCBzaXpl
KCkpKSA/IHF0X2Fzc2VydCgiaSA+PSAwICYmIGkgPCBzaXplKCkiLCIvb3B0L2xvY2FsL2luY2x1
ZGUvUXRDb3JlL3FzdHJpbmcuaCIsNzA0KSA6IHF0X25vb3AoKSk7IHJldHVybiBkLT5kYXRhW2ld
OyB9CmlubGluZSBjb25zdCBRQ2hhciBRU3RyaW5nOjpvcGVyYXRvcltdKHVpbnQgaSkgY29uc3QK
eyAoKCEoaSA8IHVpbnQoc2l6ZSgpKSkpID8gcXRfYXNzZXJ0KCJpIDwgdWludChzaXplKCkpIiwi
L29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xc3RyaW5nLmgiLDcwNikgOiBxdF9ub29wKCkpOyBy
ZXR1cm4gZC0+ZGF0YVtpXTsgfQppbmxpbmUgYm9vbCBRU3RyaW5nOjppc0VtcHR5KCkgY29uc3QK
eyByZXR1cm4gZC0+c2l6ZSA9PSAwOyB9CmlubGluZSBjb25zdCBRQ2hhciAqUVN0cmluZzo6dW5p
Y29kZSgpIGNvbnN0CnsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIqPihkLT5k
YXRhKTsgfQppbmxpbmUgY29uc3QgUUNoYXIgKlFTdHJpbmc6OmRhdGEoKSBjb25zdAp7IHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFyKj4oZC0+ZGF0YSk7IH0KaW5saW5lIFFDaGFy
ICpRU3RyaW5nOjpkYXRhKCkKeyBkZXRhY2goKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UUNo
YXIqPihkLT5kYXRhKTsgfQppbmxpbmUgY29uc3QgUUNoYXIgKlFTdHJpbmc6OmNvbnN0RGF0YSgp
IGNvbnN0CnsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIqPihkLT5kYXRhKTsg
fQppbmxpbmUgdm9pZCBRU3RyaW5nOjpkZXRhY2goKQp7IGlmIChkLT5yZWYgIT0gMSB8fCBkLT5k
YXRhICE9IGQtPmFycmF5KSByZWFsbG9jKCk7IH0KaW5saW5lIGJvb2wgUVN0cmluZzo6aXNEZXRh
Y2hlZCgpIGNvbnN0CnsgcmV0dXJuIGQtPnJlZiA9PSAxOyB9CmlubGluZSBRU3RyaW5nICZRU3Ry
aW5nOjpvcGVyYXRvcj0oY29uc3QgUUxhdGluMVN0cmluZyAmcykKewogICAgKnRoaXMgPSBmcm9t
TGF0aW4xKHMubGF0aW4xKCkpOwogICAgcmV0dXJuICp0aGlzOwp9CmlubGluZSB2b2lkIFFTdHJp
bmc6OmNsZWFyKCkKeyBpZiAoIWlzTnVsbCgpKSAqdGhpcyA9IFFTdHJpbmcoKTsgfQppbmxpbmUg
UVN0cmluZzo6UVN0cmluZyhjb25zdCBRU3RyaW5nICZvdGhlcikgOiBkKG90aGVyLmQpCnsgKCgh
KCZvdGhlciAhPSB0aGlzKSkgPyBxdF9hc3NlcnQoIiZvdGhlciAhPSB0aGlzIiwiL29wdC9sb2Nh
bC9pbmNsdWRlL1F0Q29yZS9xc3RyaW5nLmgiLDcyOSkgOiBxdF9ub29wKCkpOyBkLT5yZWYucmVm
KCk7IH0KaW5saW5lIGludCBRU3RyaW5nOjpjYXBhY2l0eSgpIGNvbnN0CnsgcmV0dXJuIGQtPmFs
bG9jOyB9CmlubGluZSBRU3RyaW5nICZRU3RyaW5nOjpzZXROdW0oc2hvcnQgbiwgaW50IGJhc2Up
CnsgcmV0dXJuIHNldE51bShxbG9uZ2xvbmcobiksIGJhc2UpOyB9CmlubGluZSBRU3RyaW5nICZR
U3RyaW5nOjpzZXROdW0odXNob3J0IG4sIGludCBiYXNlKQp7IHJldHVybiBzZXROdW0ocXVsb25n
bG9uZyhuKSwgYmFzZSk7IH0KaW5saW5lIFFTdHJpbmcgJlFTdHJpbmc6OnNldE51bShpbnQgbiwg
aW50IGJhc2UpCnsgcmV0dXJuIHNldE51bShxbG9uZ2xvbmcobiksIGJhc2UpOyB9CmlubGluZSBR
U3RyaW5nICZRU3RyaW5nOjpzZXROdW0odWludCBuLCBpbnQgYmFzZSkKeyByZXR1cm4gc2V0TnVt
KHF1bG9uZ2xvbmcobiksIGJhc2UpOyB9CmlubGluZSBRU3RyaW5nICZRU3RyaW5nOjpzZXROdW0o
bG9uZyBuLCBpbnQgYmFzZSkKeyByZXR1cm4gc2V0TnVtKHFsb25nbG9uZyhuKSwgYmFzZSk7IH0K
aW5saW5lIFFTdHJpbmcgJlFTdHJpbmc6OnNldE51bSh1bG9uZyBuLCBpbnQgYmFzZSkKeyByZXR1
cm4gc2V0TnVtKHF1bG9uZ2xvbmcobiksIGJhc2UpOyB9CmlubGluZSBRU3RyaW5nICZRU3RyaW5n
OjpzZXROdW0oZmxvYXQgbiwgY2hhciBmLCBpbnQgcHJlYykKeyByZXR1cm4gc2V0TnVtKGRvdWJs
ZShuKSxmLHByZWMpOyB9CmlubGluZSBRU3RyaW5nIFFTdHJpbmc6OmFyZyhpbnQgYSwgaW50IGZp
ZWxkV2lkdGgsIGludCBiYXNlLCBjb25zdCBRQ2hhciAmZmlsbENoYXIpIGNvbnN0CnsgcmV0dXJu
IGFyZyhxbG9uZ2xvbmcoYSksIGZpZWxkV2lkdGgsIGJhc2UsIGZpbGxDaGFyKTsgfQppbmxpbmUg
UVN0cmluZyBRU3RyaW5nOjphcmcodWludCBhLCBpbnQgZmllbGRXaWR0aCwgaW50IGJhc2UsIGNv
bnN0IFFDaGFyICZmaWxsQ2hhcikgY29uc3QKeyByZXR1cm4gYXJnKHF1bG9uZ2xvbmcoYSksIGZp
ZWxkV2lkdGgsIGJhc2UsIGZpbGxDaGFyKTsgfQppbmxpbmUgUVN0cmluZyBRU3RyaW5nOjphcmco
bG9uZyBhLCBpbnQgZmllbGRXaWR0aCwgaW50IGJhc2UsIGNvbnN0IFFDaGFyICZmaWxsQ2hhcikg
Y29uc3QKeyByZXR1cm4gYXJnKHFsb25nbG9uZyhhKSwgZmllbGRXaWR0aCwgYmFzZSwgZmlsbENo
YXIpOyB9CmlubGluZSBRU3RyaW5nIFFTdHJpbmc6OmFyZyh1bG9uZyBhLCBpbnQgZmllbGRXaWR0
aCwgaW50IGJhc2UsIGNvbnN0IFFDaGFyICZmaWxsQ2hhcikgY29uc3QKeyByZXR1cm4gYXJnKHF1
bG9uZ2xvbmcoYSksIGZpZWxkV2lkdGgsIGJhc2UsIGZpbGxDaGFyKTsgfQppbmxpbmUgUVN0cmlu
ZyBRU3RyaW5nOjphcmcoc2hvcnQgYSwgaW50IGZpZWxkV2lkdGgsIGludCBiYXNlLCBjb25zdCBR
Q2hhciAmZmlsbENoYXIpIGNvbnN0CnsgcmV0dXJuIGFyZyhxbG9uZ2xvbmcoYSksIGZpZWxkV2lk
dGgsIGJhc2UsIGZpbGxDaGFyKTsgfQppbmxpbmUgUVN0cmluZyBRU3RyaW5nOjphcmcodXNob3J0
IGEsIGludCBmaWVsZFdpZHRoLCBpbnQgYmFzZSwgY29uc3QgUUNoYXIgJmZpbGxDaGFyKSBjb25z
dAp7IHJldHVybiBhcmcocXVsb25nbG9uZyhhKSwgZmllbGRXaWR0aCwgYmFzZSwgZmlsbENoYXIp
OyB9CmlubGluZSBRU3RyaW5nIFFTdHJpbmc6OmFyZyhjb25zdCBRU3RyaW5nICZhMSwgY29uc3Qg
UVN0cmluZyAmYTIpIGNvbnN0CnsgY29uc3QgUVN0cmluZyAqYXJnc1syXSA9IHsgJmExLCAmYTIg
fTsgcmV0dXJuIG11bHRpQXJnKDIsIGFyZ3MpOyB9CmlubGluZSBRU3RyaW5nIFFTdHJpbmc6OmFy
Zyhjb25zdCBRU3RyaW5nICZhMSwgY29uc3QgUVN0cmluZyAmYTIsIGNvbnN0IFFTdHJpbmcgJmEz
KSBjb25zdAp7IGNvbnN0IFFTdHJpbmcgKmFyZ3NbM10gPSB7ICZhMSwgJmEyLCAmYTMgfTsgcmV0
dXJuIG11bHRpQXJnKDMsIGFyZ3MpOyB9CmlubGluZSBRU3RyaW5nIFFTdHJpbmc6OmFyZyhjb25z
dCBRU3RyaW5nICZhMSwgY29uc3QgUVN0cmluZyAmYTIsIGNvbnN0IFFTdHJpbmcgJmEzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmYTQpIGNvbnN0CnsgY29uc3Qg
UVN0cmluZyAqYXJnc1s0XSA9IHsgJmExLCAmYTIsICZhMywgJmE0IH07IHJldHVybiBtdWx0aUFy
Zyg0LCBhcmdzKTsgfQppbmxpbmUgUVN0cmluZyBRU3RyaW5nOjphcmcoY29uc3QgUVN0cmluZyAm
YTEsIGNvbnN0IFFTdHJpbmcgJmEyLCBjb25zdCBRU3RyaW5nICZhMywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmE0LCBjb25zdCBRU3RyaW5nICZhNSkgY29uc3QK
eyBjb25zdCBRU3RyaW5nICphcmdzWzVdID0geyAmYTEsICZhMiwgJmEzLCAmYTQsICZhNSB9OyBy
ZXR1cm4gbXVsdGlBcmcoNSwgYXJncyk7IH0KaW5saW5lIFFTdHJpbmcgUVN0cmluZzo6YXJnKGNv
bnN0IFFTdHJpbmcgJmExLCBjb25zdCBRU3RyaW5nICZhMiwgY29uc3QgUVN0cmluZyAmYTMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZhNCwgY29uc3QgUVN0cmlu
ZyAmYTUsIGNvbnN0IFFTdHJpbmcgJmE2KSBjb25zdAp7IGNvbnN0IFFTdHJpbmcgKmFyZ3NbNl0g
PSB7ICZhMSwgJmEyLCAmYTMsICZhNCwgJmE1LCAmYTYgfTsgcmV0dXJuIG11bHRpQXJnKDYsIGFy
Z3MpOyB9CmlubGluZSBRU3RyaW5nIFFTdHJpbmc6OmFyZyhjb25zdCBRU3RyaW5nICZhMSwgY29u
c3QgUVN0cmluZyAmYTIsIGNvbnN0IFFTdHJpbmcgJmEzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUVN0cmluZyAmYTQsIGNvbnN0IFFTdHJpbmcgJmE1LCBjb25zdCBRU3RyaW5n
ICZhNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmE3KSBjb25z
dAp7IGNvbnN0IFFTdHJpbmcgKmFyZ3NbN10gPSB7ICZhMSwgJmEyLCAmYTMsICZhNCwgJmE1LCAm
YTYsICZhNyB9OyByZXR1cm4gbXVsdGlBcmcoNywgYXJncyk7IH0KaW5saW5lIFFTdHJpbmcgUVN0
cmluZzo6YXJnKGNvbnN0IFFTdHJpbmcgJmExLCBjb25zdCBRU3RyaW5nICZhMiwgY29uc3QgUVN0
cmluZyAmYTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZhNCwg
Y29uc3QgUVN0cmluZyAmYTUsIGNvbnN0IFFTdHJpbmcgJmE2LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUVN0cmluZyAmYTcsIGNvbnN0IFFTdHJpbmcgJmE4KSBjb25zdAp7IGNv
bnN0IFFTdHJpbmcgKmFyZ3NbOF0gPSB7ICZhMSwgJmEyLCAmYTMsICZhNCwgJmE1LCAmYTYsICZh
NywgJmE4IH07IHJldHVybiBtdWx0aUFyZyg4LCBhcmdzKTsgfQppbmxpbmUgUVN0cmluZyBRU3Ry
aW5nOjphcmcoY29uc3QgUVN0cmluZyAmYTEsIGNvbnN0IFFTdHJpbmcgJmEyLCBjb25zdCBRU3Ry
aW5nICZhMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmE0LCBj
b25zdCBRU3RyaW5nICZhNSwgY29uc3QgUVN0cmluZyAmYTYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBRU3RyaW5nICZhNywgY29uc3QgUVN0cmluZyAmYTgsIGNvbnN0IFFTdHJp
bmcgJmE5KSBjb25zdAp7IGNvbnN0IFFTdHJpbmcgKmFyZ3NbOV0gPSB7ICZhMSwgJmEyLCAmYTMs
ICZhNCwgJmE1LCAmYTYsICZhNywgJmE4LCAmYTkgfTsgcmV0dXJuIG11bHRpQXJnKDksIGFyZ3Mp
OyB9CgppbmxpbmUgUVN0cmluZyBRU3RyaW5nOjpzZWN0aW9uKFFDaGFyIGFzZXAsIGludCBhc3Rh
cnQsIGludCBhZW5kLCBTZWN0aW9uRmxhZ3MgYWZsYWdzKSBjb25zdAp7IHJldHVybiBzZWN0aW9u
KFFTdHJpbmcoYXNlcCksIGFzdGFydCwgYWVuZCwgYWZsYWdzKTsgfQoKCmNsYXNzIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFDaGFyUmVmIHsKICAgIFFTdHJpbmcgJnM7
CiAgICBpbnQgaTsKICAgIGlubGluZSBRQ2hhclJlZihRU3RyaW5nICZzdHIsIGludCBpZHgpCiAg
ICAgICAgOiBzKHN0ciksaShpZHgpIHt9CiAgICBmcmllbmQgY2xhc3MgUVN0cmluZzsKcHVibGlj
OgoKCgoKICAgIGlubGluZSBvcGVyYXRvciBRQ2hhcigpIGNvbnN0CiAgICAgICAgeyByZXR1cm4g
aSA8IHMuZC0+c2l6ZSA/IHMuZC0+ZGF0YVtpXSA6IDA7IH0KICAgIGlubGluZSBRQ2hhclJlZiAm
b3BlcmF0b3I9KGNvbnN0IFFDaGFyICZjKQogICAgICAgIHsgaWYgKGkgPj0gcy5kLT5zaXplKSBz
LmV4cGFuZChpKTsgZWxzZSBzLmRldGFjaCgpOwogICAgICAgICAgcy5kLT5kYXRhW2ldID0gYy51
bmljb2RlKCk7IHJldHVybiAqdGhpczsgfQoKCgogICAgaW5saW5lIF9fYXR0cmlidXRlX18gKChf
X2RlcHJlY2F0ZWRfXykpIFFDaGFyUmVmICZvcGVyYXRvcj0oY2hhciBjKQogICAgeyByZXR1cm4g
b3BlcmF0b3I9KFFDaGFyOjpmcm9tQXNjaWkoYykpOyB9CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVf
XyAoKF9fZGVwcmVjYXRlZF9fKSkgUUNoYXJSZWYgJm9wZXJhdG9yPSh1Y2hhciBjKQogICAgeyBy
ZXR1cm4gb3BlcmF0b3I9KFFDaGFyOjpmcm9tQXNjaWkoYykpOyB9CgogICAgaW5saW5lIFFDaGFy
UmVmICZvcGVyYXRvcj0oY29uc3QgUUNoYXJSZWYgJmMpIHsgcmV0dXJuIG9wZXJhdG9yPShRQ2hh
cihjKSk7IH0KICAgIGlubGluZSBRQ2hhclJlZiAmb3BlcmF0b3I9KHVzaG9ydCByYykgeyByZXR1
cm4gb3BlcmF0b3I9KFFDaGFyKHJjKSk7IH0KICAgIGlubGluZSBRQ2hhclJlZiAmb3BlcmF0b3I9
KHNob3J0IHJjKSB7IHJldHVybiBvcGVyYXRvcj0oUUNoYXIocmMpKTsgfQogICAgaW5saW5lIFFD
aGFyUmVmICZvcGVyYXRvcj0odWludCByYykgeyByZXR1cm4gb3BlcmF0b3I9KFFDaGFyKHJjKSk7
IH0KICAgIGlubGluZSBRQ2hhclJlZiAmb3BlcmF0b3I9KGludCByYykgeyByZXR1cm4gb3BlcmF0
b3I9KFFDaGFyKHJjKSk7IH0KCgogICAgaW5saW5lIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gUUNoYXIoKnRoaXMpLmlzTnVsbCgpOyB9CiAgICBpbmxpbmUgYm9vbCBpc1ByaW50KCkgY29u
c3QgeyByZXR1cm4gUUNoYXIoKnRoaXMpLmlzUHJpbnQoKTsgfQogICAgaW5saW5lIGJvb2wgaXNQ
dW5jdCgpIGNvbnN0IHsgcmV0dXJuIFFDaGFyKCp0aGlzKS5pc1B1bmN0KCk7IH0KICAgIGlubGlu
ZSBib29sIGlzU3BhY2UoKSBjb25zdCB7IHJldHVybiBRQ2hhcigqdGhpcykuaXNTcGFjZSgpOyB9
CiAgICBpbmxpbmUgYm9vbCBpc01hcmsoKSBjb25zdCB7IHJldHVybiBRQ2hhcigqdGhpcykuaXNN
YXJrKCk7IH0KICAgIGlubGluZSBib29sIGlzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gUUNoYXIo
KnRoaXMpLmlzTGV0dGVyKCk7IH0KICAgIGlubGluZSBib29sIGlzTnVtYmVyKCkgY29uc3QgeyBy
ZXR1cm4gUUNoYXIoKnRoaXMpLmlzTnVtYmVyKCk7IH0KICAgIGlubGluZSBib29sIGlzTGV0dGVy
T3JOdW1iZXIoKSB7IHJldHVybiBRQ2hhcigqdGhpcykuaXNMZXR0ZXJPck51bWJlcigpOyB9CiAg
ICBpbmxpbmUgYm9vbCBpc0RpZ2l0KCkgY29uc3QgeyByZXR1cm4gUUNoYXIoKnRoaXMpLmlzRGln
aXQoKTsgfQogICAgaW5saW5lIGJvb2wgaXNMb3dlcigpIGNvbnN0IHsgcmV0dXJuIFFDaGFyKCp0
aGlzKS5pc0xvd2VyKCk7IH0KICAgIGlubGluZSBib29sIGlzVXBwZXIoKSBjb25zdCB7IHJldHVy
biBRQ2hhcigqdGhpcykuaXNVcHBlcigpOyB9CiAgICBpbmxpbmUgYm9vbCBpc1RpdGxlQ2FzZSgp
IGNvbnN0IHsgcmV0dXJuIFFDaGFyKCp0aGlzKS5pc1RpdGxlQ2FzZSgpOyB9CgogICAgaW5saW5l
IGludCBkaWdpdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gUUNoYXIoKnRoaXMpLmRpZ2l0VmFsdWUo
KTsgfQogICAgUUNoYXIgdG9Mb3dlcigpIGNvbnN0IHsgcmV0dXJuIFFDaGFyKCp0aGlzKS50b0xv
d2VyKCk7IH0KICAgIFFDaGFyIHRvVXBwZXIoKSBjb25zdCB7IHJldHVybiBRQ2hhcigqdGhpcyku
dG9VcHBlcigpOyB9CiAgICBRQ2hhciB0b1RpdGxlQ2FzZSAoKSBjb25zdCB7IHJldHVybiBRQ2hh
cigqdGhpcykudG9UaXRsZUNhc2UoKTsgfQoKICAgIFFDaGFyOjpDYXRlZ29yeSBjYXRlZ29yeSgp
IGNvbnN0IHsgcmV0dXJuIFFDaGFyKCp0aGlzKS5jYXRlZ29yeSgpOyB9CiAgICBRQ2hhcjo6RGly
ZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIFFDaGFyKCp0aGlzKS5kaXJlY3Rpb24o
KTsgfQogICAgUUNoYXI6OkpvaW5pbmcgam9pbmluZygpIGNvbnN0IHsgcmV0dXJuIFFDaGFyKCp0
aGlzKS5qb2luaW5nKCk7IH0KICAgIGJvb2wgaGFzTWlycm9yZWQoKSBjb25zdCB7IHJldHVybiBR
Q2hhcigqdGhpcykuaGFzTWlycm9yZWQoKTsgfQogICAgUUNoYXIgbWlycm9yZWRDaGFyKCkgY29u
c3QgeyByZXR1cm4gUUNoYXIoKnRoaXMpLm1pcnJvcmVkQ2hhcigpOyB9CiAgICBRU3RyaW5nIGRl
Y29tcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBRQ2hhcigqdGhpcykuZGVjb21wb3NpdGlvbigp
OyB9CiAgICBRQ2hhcjo6RGVjb21wb3NpdGlvbiBkZWNvbXBvc2l0aW9uVGFnKCkgY29uc3QgeyBy
ZXR1cm4gUUNoYXIoKnRoaXMpLmRlY29tcG9zaXRpb25UYWcoKTsgfQogICAgdWNoYXIgY29tYmlu
aW5nQ2xhc3MoKSBjb25zdCB7IHJldHVybiBRQ2hhcigqdGhpcykuY29tYmluaW5nQ2xhc3MoKTsg
fQoKICAgIFFDaGFyOjpVbmljb2RlVmVyc2lvbiB1bmljb2RlVmVyc2lvbigpIGNvbnN0IHsgcmV0
dXJuIFFDaGFyKCp0aGlzKS51bmljb2RlVmVyc2lvbigpOyB9CgogICAgaW5saW5lIHVjaGFyIGNl
bGwoKSBjb25zdCB7IHJldHVybiBRQ2hhcigqdGhpcykuY2VsbCgpOyB9CiAgICBpbmxpbmUgdWNo
YXIgcm93KCkgY29uc3QgeyByZXR1cm4gUUNoYXIoKnRoaXMpLnJvdygpOyB9CiAgICBpbmxpbmUg
dm9pZCBzZXRDZWxsKHVjaGFyIGNlbGwpOwogICAgaW5saW5lIHZvaWQgc2V0Um93KHVjaGFyIHJv
dyk7CgoKCgoKCiAgICBjaGFyIHRvQXNjaWkoKSBjb25zdCB7IHJldHVybiBRQ2hhcigqdGhpcyku
dG9Bc2NpaSgpOyB9CiAgICBjaGFyIHRvTGF0aW4xKCkgY29uc3QgeyByZXR1cm4gUUNoYXIoKnRo
aXMpLnRvTGF0aW4xKCk7IH0KICAgIHVzaG9ydCB1bmljb2RlKCkgY29uc3QgeyByZXR1cm4gUUNo
YXIoKnRoaXMpLnVuaWNvZGUoKTsgfQoKICAgIHVzaG9ydCYgdW5pY29kZSgpIHsgcmV0dXJuIHMu
ZGF0YSgpW2ldLnVuaWNvZGUoKTsgfQojIDg3NiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9x
c3RyaW5nLmgiCn07CgppbmxpbmUgdm9pZCBRQ2hhclJlZjo6c2V0Um93KHVjaGFyIGFyb3cpIHsg
UUNoYXIoKnRoaXMpLnNldFJvdyhhcm93KTsgfQppbmxpbmUgdm9pZCBRQ2hhclJlZjo6c2V0Q2Vs
bCh1Y2hhciBhY2VsbCkgeyBRQ2hhcigqdGhpcykuc2V0Q2VsbChhY2VsbCk7IH0KCgppbmxpbmUg
UVN0cmluZzo6UVN0cmluZygpIDogZCgmc2hhcmVkX251bGwpIHsgZC0+cmVmLnJlZigpOyB9Cmlu
bGluZSBRU3RyaW5nOjp+UVN0cmluZygpIHsgaWYgKCFkLT5yZWYuZGVyZWYoKSkgZnJlZShkKTsg
fQppbmxpbmUgdm9pZCBRU3RyaW5nOjpyZXNlcnZlKGludCBhc2l6ZSkgeyBpZiAoZC0+cmVmICE9
IDEgfHwgYXNpemUgPiBkLT5hbGxvYykgcmVhbGxvYyhhc2l6ZSk7IGQtPmNhcGFjaXR5ID0gMTt9
CmlubGluZSBRU3RyaW5nICZRU3RyaW5nOjpzZXRVdGYxNihjb25zdCB1c2hvcnQgKmF1dGYxNiwg
aW50IGFzaXplKQp7IHJldHVybiBzZXRVbmljb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNo
YXIgKj4oYXV0ZjE2KSwgYXNpemUpOyB9CmlubGluZSBRQ2hhclJlZiBRU3RyaW5nOjpvcGVyYXRv
cltdKGludCBpKQp7ICgoIShpID49IDApKSA/IHF0X2Fzc2VydCgiaSA+PSAwIiwiL29wdC9sb2Nh
bC9pbmNsdWRlL1F0Q29yZS9xc3RyaW5nLmgiLDg4OCkgOiBxdF9ub29wKCkpOyByZXR1cm4gUUNo
YXJSZWYoKnRoaXMsIGkpOyB9CmlubGluZSBRQ2hhclJlZiBRU3RyaW5nOjpvcGVyYXRvcltdKHVp
bnQgaSkKeyByZXR1cm4gUUNoYXJSZWYoKnRoaXMsIGkpOyB9CmlubGluZSBRU3RyaW5nOjppdGVy
YXRvciBRU3RyaW5nOjpiZWdpbigpCnsgZGV0YWNoKCk7IHJldHVybiByZWludGVycHJldF9jYXN0
PFFDaGFyKj4oZC0+ZGF0YSk7IH0KaW5saW5lIFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIFFTdHJp
bmc6OmJlZ2luKCkgY29uc3QKeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+
KGQtPmRhdGEpOyB9CmlubGluZSBRU3RyaW5nOjpjb25zdF9pdGVyYXRvciBRU3RyaW5nOjpjb25z
dEJlZ2luKCkgY29uc3QKeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KGQt
PmRhdGEpOyB9CmlubGluZSBRU3RyaW5nOjppdGVyYXRvciBRU3RyaW5nOjplbmQoKQp7IGRldGFj
aCgpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxRQ2hhcio+KGQtPmRhdGEgKyBkLT5zaXplKTsg
fQppbmxpbmUgUVN0cmluZzo6Y29uc3RfaXRlcmF0b3IgUVN0cmluZzo6ZW5kKCkgY29uc3QKeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KGQtPmRhdGEgKyBkLT5zaXplKTsg
fQppbmxpbmUgUVN0cmluZzo6Y29uc3RfaXRlcmF0b3IgUVN0cmluZzo6Y29uc3RFbmQoKSBjb25z
dAp7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFyKj4oZC0+ZGF0YSArIGQtPnNp
emUpOyB9CmlubGluZSBRQm9vbCBRU3RyaW5nOjpjb250YWlucyhjb25zdCBRU3RyaW5nICZzLCBR
dDo6Q2FzZVNlbnNpdGl2aXR5IGNzKSBjb25zdAp7IHJldHVybiBRQm9vbChpbmRleE9mKHMsIDAs
IGNzKSAhPSAtMSk7IH0KaW5saW5lIFFCb29sIFFTdHJpbmc6OmNvbnRhaW5zKFFDaGFyIGMsIFF0
OjpDYXNlU2Vuc2l0aXZpdHkgY3MpIGNvbnN0CnsgcmV0dXJuIFFCb29sKGluZGV4T2YoYywgMCwg
Y3MpICE9IC0xKTsgfQoKCmlubGluZSBib29sIG9wZXJhdG9yPT0oUVN0cmluZzo6TnVsbCwgUVN0
cmluZzo6TnVsbCkgeyByZXR1cm4gdHJ1ZTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KFFTdHJp
bmc6Ok51bGwsIGNvbnN0IFFTdHJpbmcgJnMpIHsgcmV0dXJuIHMuaXNOdWxsKCk7IH0KaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBRU3RyaW5nICZzLCBRU3RyaW5nOjpOdWxsKSB7IHJldHVy
biBzLmlzTnVsbCgpOyB9CmlubGluZSBib29sIG9wZXJhdG9yIT0oUVN0cmluZzo6TnVsbCwgUVN0
cmluZzo6TnVsbCkgeyByZXR1cm4gZmFsc2U7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShRU3Ry
aW5nOjpOdWxsLCBjb25zdCBRU3RyaW5nICZzKSB7IHJldHVybiAhcy5pc051bGwoKTsgfQppbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFTdHJpbmcgJnMsIFFTdHJpbmc6Ok51bGwpIHsgcmV0
dXJuICFzLmlzTnVsbCgpOyB9CgoKaW5saW5lIGJvb2wgcVN0cmluZ0NvbXBhcmlzb25IZWxwZXIo
Y29uc3QgUVN0cmluZyAmczEsIGNvbnN0IGNoYXIgKnMyKQp7CgogICAgaWYgKFFTdHJpbmc6OmNv
ZGVjRm9yQ1N0cmluZ3MpIHJldHVybiAoczEgPT0gUVN0cmluZzo6ZnJvbUFzY2lpKHMyKSk7Cgog
ICAgcmV0dXJuIChzMSA9PSBRTGF0aW4xU3RyaW5nKHMyKSk7Cn0KaW5saW5lIGJvb2wgUVN0cmlu
Zzo6b3BlcmF0b3I9PShjb25zdCBjaGFyICpzKSBjb25zdAp7IHJldHVybiBxU3RyaW5nQ29tcGFy
aXNvbkhlbHBlcigqdGhpcywgcyk7IH0KaW5saW5lIGJvb2wgUVN0cmluZzo6b3BlcmF0b3IhPShj
b25zdCBjaGFyICpzKSBjb25zdAp7IHJldHVybiAhcVN0cmluZ0NvbXBhcmlzb25IZWxwZXIoKnRo
aXMsIHMpOyB9CmlubGluZSBib29sIFFTdHJpbmc6Om9wZXJhdG9yPChjb25zdCBjaGFyICpzKSBj
b25zdAp7IHJldHVybiAqdGhpcyA8IFFTdHJpbmc6OmZyb21Bc2NpaShzKTsgfQppbmxpbmUgYm9v
bCBRU3RyaW5nOjpvcGVyYXRvcj4oY29uc3QgY2hhciAqcykgY29uc3QKeyByZXR1cm4gKnRoaXMg
PiBRU3RyaW5nOjpmcm9tQXNjaWkocyk7IH0KaW5saW5lIGJvb2wgUVN0cmluZzo6b3BlcmF0b3I8
PShjb25zdCBjaGFyICpzKSBjb25zdAp7IHJldHVybiAqdGhpcyA8PSBRU3RyaW5nOjpmcm9tQXNj
aWkocyk7IH0KaW5saW5lIGJvb2wgUVN0cmluZzo6b3BlcmF0b3I+PShjb25zdCBjaGFyICpzKSBj
b25zdAp7IHJldHVybiAqdGhpcyA+PSBRU3RyaW5nOjpmcm9tQXNjaWkocyk7IH0KCmlubGluZSBf
X2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hh
ciAqczEsIGNvbnN0IFFTdHJpbmcgJnMyKQp7IHJldHVybiBxU3RyaW5nQ29tcGFyaXNvbkhlbHBl
cihzMiwgczEpOyB9CmlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBib29s
IG9wZXJhdG9yIT0oY29uc3QgY2hhciAqczEsIGNvbnN0IFFTdHJpbmcgJnMyKQp7IHJldHVybiAh
cVN0cmluZ0NvbXBhcmlzb25IZWxwZXIoczIsIHMxKTsgfQppbmxpbmUgX19hdHRyaWJ1dGVfXyAo
KF9fZGVwcmVjYXRlZF9fKSkgYm9vbCBvcGVyYXRvcjwoY29uc3QgY2hhciAqczEsIGNvbnN0IFFT
dHJpbmcgJnMyKQp7IHJldHVybiAoUVN0cmluZzo6ZnJvbUFzY2lpKHMxKSA8IHMyKTsgfQppbmxp
bmUgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSkgYm9vbCBvcGVyYXRvcj4oY29uc3Qg
Y2hhciAqczEsIGNvbnN0IFFTdHJpbmcgJnMyKQp7IHJldHVybiAoUVN0cmluZzo6ZnJvbUFzY2lp
KHMxKSA+IHMyKTsgfQppbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSkgYm9v
bCBvcGVyYXRvcjw9KGNvbnN0IGNoYXIgKnMxLCBjb25zdCBRU3RyaW5nICZzMikKeyByZXR1cm4g
KFFTdHJpbmc6OmZyb21Bc2NpaShzMSkgPD0gczIpOyB9CmlubGluZSBfX2F0dHJpYnV0ZV9fICgo
X19kZXByZWNhdGVkX18pKSBib29sIG9wZXJhdG9yPj0oY29uc3QgY2hhciAqczEsIGNvbnN0IFFT
dHJpbmcgJnMyKQp7IHJldHVybiAoUVN0cmluZzo6ZnJvbUFzY2lpKHMxKSA+PSBzMik7IH0KCmlu
bGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBib29sIG9wZXJhdG9yPT0oY29u
c3QgY2hhciAqczEsIGNvbnN0IFFMYXRpbjFTdHJpbmcgJnMyKQp7IHJldHVybiBRU3RyaW5nOjpm
cm9tQXNjaWkoczEpID09IHMyOyB9CmlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVk
X18pKSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciAqczEsIGNvbnN0IFFMYXRpbjFTdHJpbmcg
JnMyKQp7IHJldHVybiBRU3RyaW5nOjpmcm9tQXNjaWkoczEpICE9IHMyOyB9CmlubGluZSBfX2F0
dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBib29sIG9wZXJhdG9yPChjb25zdCBjaGFyICpz
MSwgY29uc3QgUUxhdGluMVN0cmluZyAmczIpCnsgcmV0dXJuIChRU3RyaW5nOjpmcm9tQXNjaWko
czEpIDwgczIpOyB9CmlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBib29s
IG9wZXJhdG9yPihjb25zdCBjaGFyICpzMSwgY29uc3QgUUxhdGluMVN0cmluZyAmczIpCnsgcmV0
dXJuIChRU3RyaW5nOjpmcm9tQXNjaWkoczEpID4gczIpOyB9CmlubGluZSBfX2F0dHJpYnV0ZV9f
ICgoX19kZXByZWNhdGVkX18pKSBib29sIG9wZXJhdG9yPD0oY29uc3QgY2hhciAqczEsIGNvbnN0
IFFMYXRpbjFTdHJpbmcgJnMyKQp7IHJldHVybiAoUVN0cmluZzo6ZnJvbUFzY2lpKHMxKSA8PSBz
Mik7IH0KaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0
b3I+PShjb25zdCBjaGFyICpzMSwgY29uc3QgUUxhdGluMVN0cmluZyAmczIpCnsgcmV0dXJuIChR
U3RyaW5nOjpmcm9tQXNjaWkoczEpID49IHMyKTsgfQoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBRTGF0aW4xU3RyaW5nICZzMSwgY29uc3QgUUxhdGluMVN0cmluZyAmczIpCnsgcmV0dXJu
IChxc3RyY21wKHMxLmxhdGluMSgpLCBzMi5sYXRpbjEoKSkgPT0gMCk7IH0KaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBRTGF0aW4xU3RyaW5nICZzMSwgY29uc3QgUUxhdGluMVN0cmluZyAm
czIpCnsgcmV0dXJuIChxc3RyY21wKHMxLmxhdGluMSgpLCBzMi5sYXRpbjEoKSkgIT0gMCk7IH0K
aW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFFMYXRpbjFTdHJpbmcgJnMxLCBjb25zdCBRTGF0
aW4xU3RyaW5nICZzMikKeyByZXR1cm4gKHFzdHJjbXAoczEubGF0aW4xKCksIHMyLmxhdGluMSgp
KSA8IDApOyB9CmlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgUUxhdGluMVN0cmluZyAmczEs
IGNvbnN0IFFMYXRpbjFTdHJpbmcgJnMyKQp7IHJldHVybiAocXN0cmNtcChzMS5sYXRpbjEoKSwg
czIubGF0aW4xKCkpIDw9IDApOyB9CmlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBRTGF0aW4x
U3RyaW5nICZzMSwgY29uc3QgUUxhdGluMVN0cmluZyAmczIpCnsgcmV0dXJuIChxc3RyY21wKHMx
LmxhdGluMSgpLCBzMi5sYXRpbjEoKSkgPiAwKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNv
bnN0IFFMYXRpbjFTdHJpbmcgJnMxLCBjb25zdCBRTGF0aW4xU3RyaW5nICZzMikKeyByZXR1cm4g
KHFzdHJjbXAoczEubGF0aW4xKCksIHMyLmxhdGluMSgpKSA+PSAwKTsgfQoKCmlubGluZSBib29s
IFFTdHJpbmc6Om9wZXJhdG9yPT0oY29uc3QgUUJ5dGVBcnJheSAmcykgY29uc3QKeyByZXR1cm4g
cVN0cmluZ0NvbXBhcmlzb25IZWxwZXIoKnRoaXMsIHMuY29uc3REYXRhKCkpOyB9CmlubGluZSBi
b29sIFFTdHJpbmc6Om9wZXJhdG9yIT0oY29uc3QgUUJ5dGVBcnJheSAmcykgY29uc3QKeyByZXR1
cm4gIXFTdHJpbmdDb21wYXJpc29uSGVscGVyKCp0aGlzLCBzLmNvbnN0RGF0YSgpKTsgfQoKaW5s
aW5lIGJvb2wgUUJ5dGVBcnJheTo6b3BlcmF0b3I9PShjb25zdCBRU3RyaW5nICZzKSBjb25zdAp7
IHJldHVybiBxU3RyaW5nQ29tcGFyaXNvbkhlbHBlcihzLCBjb25zdERhdGEoKSk7IH0KaW5saW5l
IGJvb2wgUUJ5dGVBcnJheTo6b3BlcmF0b3IhPShjb25zdCBRU3RyaW5nICZzKSBjb25zdAp7IHJl
dHVybiAhcVN0cmluZ0NvbXBhcmlzb25IZWxwZXIocywgY29uc3REYXRhKCkpOyB9CmlubGluZSBi
b29sIFFCeXRlQXJyYXk6Om9wZXJhdG9yPChjb25zdCBRU3RyaW5nICZzKSBjb25zdAp7IHJldHVy
biBRU3RyaW5nOjpmcm9tQXNjaWkoY29uc3REYXRhKCksIHNpemUoKSkgPCBzOyB9CmlubGluZSBi
b29sIFFCeXRlQXJyYXk6Om9wZXJhdG9yPihjb25zdCBRU3RyaW5nICZzKSBjb25zdAp7IHJldHVy
biBRU3RyaW5nOjpmcm9tQXNjaWkoY29uc3REYXRhKCksIHNpemUoKSkgPiBzOyB9CmlubGluZSBi
b29sIFFCeXRlQXJyYXk6Om9wZXJhdG9yPD0oY29uc3QgUVN0cmluZyAmcykgY29uc3QKeyByZXR1
cm4gUVN0cmluZzo6ZnJvbUFzY2lpKGNvbnN0RGF0YSgpLCBzaXplKCkpIDw9IHM7IH0KaW5saW5l
IGJvb2wgUUJ5dGVBcnJheTo6b3BlcmF0b3I+PShjb25zdCBRU3RyaW5nICZzKSBjb25zdAp7IHJl
dHVybiBRU3RyaW5nOjpmcm9tQXNjaWkoY29uc3REYXRhKCksIHNpemUoKSkgPj0gczsgfQoKCgpp
bmxpbmUgUUJ5dGVBcnJheSAmUUJ5dGVBcnJheTo6YXBwZW5kKGNvbnN0IFFTdHJpbmcgJnMpCnsg
cmV0dXJuIGFwcGVuZChzLnRvQXNjaWkoKSk7IH0KaW5saW5lIFFCeXRlQXJyYXkgJlFCeXRlQXJy
YXk6Omluc2VydChpbnQgaSwgY29uc3QgUVN0cmluZyAmcykKeyByZXR1cm4gaW5zZXJ0KGksIHMu
dG9Bc2NpaSgpKTsgfQppbmxpbmUgUUJ5dGVBcnJheSAmUUJ5dGVBcnJheTo6cmVwbGFjZShjaGFy
IGMsIGNvbnN0IFFTdHJpbmcgJmFmdGVyKQp7IHJldHVybiByZXBsYWNlKGMsIGFmdGVyLnRvQXNj
aWkoKSk7IH0KaW5saW5lIFFCeXRlQXJyYXkgJlFCeXRlQXJyYXk6OnJlcGxhY2UoY29uc3QgUVN0
cmluZyAmYmVmb3JlLCBjb25zdCBjaGFyICphZnRlcikKeyByZXR1cm4gcmVwbGFjZShiZWZvcmUu
dG9Bc2NpaSgpLCBhZnRlcik7IH0KaW5saW5lIFFCeXRlQXJyYXkgJlFCeXRlQXJyYXk6OnJlcGxh
Y2UoY29uc3QgUVN0cmluZyAmYmVmb3JlLCBjb25zdCBRQnl0ZUFycmF5ICZhZnRlcikKeyByZXR1
cm4gcmVwbGFjZShiZWZvcmUudG9Bc2NpaSgpLCBhZnRlcik7IH0KaW5saW5lIFFCeXRlQXJyYXkg
JlFCeXRlQXJyYXk6Om9wZXJhdG9yKz0oY29uc3QgUVN0cmluZyAmcykKeyByZXR1cm4gb3BlcmF0
b3IrPShzLnRvQXNjaWkoKSk7IH0KaW5saW5lIGludCBRQnl0ZUFycmF5OjppbmRleE9mKGNvbnN0
IFFTdHJpbmcgJnMsIGludCBmcm9tKSBjb25zdAp7IHJldHVybiBpbmRleE9mKHMudG9Bc2NpaSgp
LCBmcm9tKTsgfQppbmxpbmUgaW50IFFCeXRlQXJyYXk6Omxhc3RJbmRleE9mKGNvbnN0IFFTdHJp
bmcgJnMsIGludCBmcm9tKSBjb25zdAp7IHJldHVybiBsYXN0SW5kZXhPZihzLnRvQXNjaWkoKSwg
ZnJvbSk7IH0KIyAxMDIzICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FzdHJpbmcuaCIKaW5s
aW5lIGNvbnN0IFFTdHJpbmcgb3BlcmF0b3IrKGNvbnN0IFFTdHJpbmcgJnMxLCBjb25zdCBRU3Ry
aW5nICZzMikKeyBRU3RyaW5nIHQoczEpOyB0ICs9IHMyOyByZXR1cm4gdDsgfQppbmxpbmUgY29u
c3QgUVN0cmluZyBvcGVyYXRvcisoY29uc3QgUVN0cmluZyAmczEsIFFDaGFyIHMyKQp7IFFTdHJp
bmcgdChzMSk7IHQgKz0gczI7IHJldHVybiB0OyB9CmlubGluZSBjb25zdCBRU3RyaW5nIG9wZXJh
dG9yKyhRQ2hhciBzMSwgY29uc3QgUVN0cmluZyAmczIpCnsgUVN0cmluZyB0KHMxKTsgdCArPSBz
MjsgcmV0dXJuIHQ7IH0KCmlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBj
b25zdCBRU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBRU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIp
CnsgUVN0cmluZyB0KHMxKTsgdCArPSBRU3RyaW5nOjpmcm9tQXNjaWkoczIpOyByZXR1cm4gdDsg
fQppbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSkgY29uc3QgUVN0cmluZyBv
cGVyYXRvcisoY29uc3QgY2hhciAqczEsIGNvbnN0IFFTdHJpbmcgJnMyKQp7IFFTdHJpbmcgdCA9
IFFTdHJpbmc6OmZyb21Bc2NpaShzMSk7IHQgKz0gczI7IHJldHVybiB0OyB9CmlubGluZSBfX2F0
dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSBjb25zdCBRU3RyaW5nIG9wZXJhdG9yKyhjaGFy
IGMsIGNvbnN0IFFTdHJpbmcgJnMpCnsgUVN0cmluZyB0ID0gczsgdC5wcmVwZW5kKFFDaGFyOjpm
cm9tQXNjaWkoYykpOyByZXR1cm4gdDsgfQppbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVj
YXRlZF9fKSkgY29uc3QgUVN0cmluZyBvcGVyYXRvcisoY29uc3QgUVN0cmluZyAmcywgY2hhciBj
KQp7IFFTdHJpbmcgdCA9IHM7IHQgKz0gUUNoYXI6OmZyb21Bc2NpaShjKTsgcmV0dXJuIHQ7IH0K
aW5saW5lIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIGNvbnN0IFFTdHJpbmcgb3Bl
cmF0b3IrKGNvbnN0IFFCeXRlQXJyYXkgJmJhLCBjb25zdCBRU3RyaW5nICZzKQp7IFFTdHJpbmcg
dCA9IFFTdHJpbmc6OmZyb21Bc2NpaShiYS5jb25zdERhdGEoKSwgcXN0cm5sZW4oYmEuY29uc3RE
YXRhKCksIGJhLnNpemUoKSkpOyB0ICs9IHM7IHJldHVybiB0OyB9CmlubGluZSBfX2F0dHJpYnV0
ZV9fICgoX19kZXByZWNhdGVkX18pKSBjb25zdCBRU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBRU3Ry
aW5nICZzLCBjb25zdCBRQnl0ZUFycmF5ICZiYSkKeyBRU3RyaW5nIHQocyk7IHQgKz0gUVN0cmlu
Zzo6ZnJvbUFzY2lpKGJhLmNvbnN0RGF0YSgpLCBxc3RybmxlbihiYS5jb25zdERhdGEoKSwgYmEu
c2l6ZSgpKSk7IHJldHVybiB0OyB9CgoKCgoKaW5saW5lIHN0ZDo6c3RyaW5nIFFTdHJpbmc6OnRv
U3RkU3RyaW5nKCkgY29uc3QKeyBjb25zdCBRQnl0ZUFycmF5IGFzYyA9IHRvQXNjaWkoKTsgcmV0
dXJuIHN0ZDo6c3RyaW5nKGFzYy5jb25zdERhdGEoKSwgYXNjLmxlbmd0aCgpKTsgfQoKaW5saW5l
IFFTdHJpbmcgUVN0cmluZzo6ZnJvbVN0ZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyAmcykKeyBy
ZXR1cm4gZnJvbUFzY2lpKHMuZGF0YSgpLCBpbnQocy5zaXplKCkpKTsgfQoKCmlubGluZSBRU3Rk
V1N0cmluZyBRU3RyaW5nOjp0b1N0ZFdTdHJpbmcoKSBjb25zdAp7CiAgICBRU3RkV1N0cmluZyBz
dHI7CiAgICBzdHIucmVzaXplKGxlbmd0aCgpKTsKCgoKCgoKCiAgICBzdHIucmVzaXplKHRvV0No
YXJBcnJheSgmKCpzdHIuYmVnaW4oKSkpKTsKICAgIHJldHVybiBzdHI7Cn0KaW5saW5lIFFTdHJp
bmcgUVN0cmluZzo6ZnJvbVN0ZFdTdHJpbmcoY29uc3QgUVN0ZFdTdHJpbmcgJnMpCnsgcmV0dXJu
IGZyb21XQ2hhckFycmF5KHMuZGF0YSgpLCBpbnQocy5zaXplKCkpKTsgfQojIDEwODMgIi9vcHQv
bG9jYWwvaW5jbHVkZS9RdENvcmUvcXN0cmluZy5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmLCBjb25z
dCBRU3RyaW5nICYpOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGF0
YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0YVN0cmVhbSAmLCBRU3RyaW5nICYpOwojIDEwOTcgIi9v
cHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXN0cmluZy5oIgp0ZW1wbGF0ZSA8PiBjbGFzcyBRVHlw
ZUluZm88UVN0cmluZyA+IHsgcHVibGljOiBlbnVtIHsgaXNDb21wbGV4ID0gKCgoUV9NT1ZBQkxF
X1RZUEUpICYgUV9QUklNSVRJVkVfVFlQRSkgPT0gMCksIGlzU3RhdGljID0gKCgoUV9NT1ZBQkxF
X1RZUEUpICYgKFFfTU9WQUJMRV9UWVBFIHwgUV9QUklNSVRJVkVfVFlQRSkpID09IDApLCBpc0xh
cmdlID0gKHNpemVvZihRU3RyaW5nKT5zaXplb2Yodm9pZCopKSwgaXNQb2ludGVyID0gZmFsc2Us
IGlzRHVtbXkgPSAoKChRX01PVkFCTEVfVFlQRSkgJiBRX0RVTU1ZX1RZUEUpICE9IDApIH07IHN0
YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqbmFtZSgpIHsgcmV0dXJuICJRU3RyaW5nIjsgfSB9Owp0
ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBxSXNEZXRhY2hlZDxRU3RyaW5nPihRU3RyaW5nICZ0KSB7
IHJldHVybiB0LmlzRGV0YWNoZWQoKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCBxU3dhcDxR
U3RyaW5nPihRU3RyaW5nICZ2YWx1ZTEsIFFTdHJpbmcgJnZhbHVlMikgeyBxU3dhcCh2YWx1ZTEu
ZGF0YV9wdHIoKSwgdmFsdWUyLmRhdGFfcHRyKCkpOyB9CmlubGluZSBRRmxhZ3M8UVN0cmluZzo6
U2VjdGlvbkZsYWdzOjplbnVtX3R5cGU+IG9wZXJhdG9yfChRU3RyaW5nOjpTZWN0aW9uRmxhZ3M6
OmVudW1fdHlwZSBmMSwgUVN0cmluZzo6U2VjdGlvbkZsYWdzOjplbnVtX3R5cGUgZjIpIHsgcmV0
dXJuIFFGbGFnczxRU3RyaW5nOjpTZWN0aW9uRmxhZ3M6OmVudW1fdHlwZT4oZjEpIHwgZjI7IH0g
aW5saW5lIFFGbGFnczxRU3RyaW5nOjpTZWN0aW9uRmxhZ3M6OmVudW1fdHlwZT4gb3BlcmF0b3J8
KFFTdHJpbmc6OlNlY3Rpb25GbGFnczo6ZW51bV90eXBlIGYxLCBRRmxhZ3M8UVN0cmluZzo6U2Vj
dGlvbkZsYWdzOjplbnVtX3R5cGU+IGYyKSB7IHJldHVybiBmMiB8IGYxOyB9IGlubGluZSBRSW5j
b21wYXRpYmxlRmxhZyBvcGVyYXRvcnwoUVN0cmluZzo6U2VjdGlvbkZsYWdzOjplbnVtX3R5cGUg
ZjEsIGludCBmMikgeyByZXR1cm4gUUluY29tcGF0aWJsZUZsYWcoaW50KGYxKSB8IGYyKTsgfQoK
CmNsYXNzIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFTdHJpbmdSZWYg
ewogICAgY29uc3QgUVN0cmluZyAqbV9zdHJpbmc7CiAgICBpbnQgbV9wb3NpdGlvbjsKICAgIGlu
dCBtX3NpemU7CnB1YmxpYzoKICAgIGlubGluZSBRU3RyaW5nUmVmKCk6bV9zdHJpbmcoMCksIG1f
cG9zaXRpb24oMCksIG1fc2l6ZSgwKXt9CiAgICBpbmxpbmUgUVN0cmluZ1JlZihjb25zdCBRU3Ry
aW5nICpzdHJpbmcsIGludCBwb3NpdGlvbiwgaW50IHNpemUpOwogICAgaW5saW5lIFFTdHJpbmdS
ZWYoY29uc3QgUVN0cmluZyAqc3RyaW5nKTsKICAgIGlubGluZSBRU3RyaW5nUmVmKGNvbnN0IFFT
dHJpbmdSZWYgJm90aGVyKQogICAgICAgIDptX3N0cmluZyhvdGhlci5tX3N0cmluZyksIG1fcG9z
aXRpb24ob3RoZXIubV9wb3NpdGlvbiksIG1fc2l6ZShvdGhlci5tX3NpemUpCiAgICAgICAge30K
CiAgICBpbmxpbmUgflFTdHJpbmdSZWYoKXt9CiAgICBpbmxpbmUgY29uc3QgUVN0cmluZyAqc3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICAgIGlubGluZSBpbnQgcG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAgICBpbmxpbmUgaW50IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KICAgIGlubGluZSBpbnQgY291bnQoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KICAgIGlubGluZSBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CgogICAgaW5saW5lIFFTdHJpbmdSZWYgJm9wZXJhdG9yPShjb25zdCBRU3RyaW5nUmVmICZv
dGhlcikgewogICAgICAgIG1fc3RyaW5nID0gb3RoZXIubV9zdHJpbmc7IG1fcG9zaXRpb24gPSBv
dGhlci5tX3Bvc2l0aW9uOwogICAgICAgIG1fc2l6ZSA9IG90aGVyLm1fc2l6ZTsgcmV0dXJuICp0
aGlzOwogICAgfQoKICAgIGlubGluZSBRU3RyaW5nUmVmICZvcGVyYXRvcj0oY29uc3QgUVN0cmlu
ZyAqc3RyaW5nKTsKCiAgICBpbmxpbmUgY29uc3QgUUNoYXIgKnVuaWNvZGUoKSBjb25zdCB7CiAg
ICAgICAgaWYgKCFtX3N0cmluZykKICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgUUNoYXIgKj4oUVN0cmluZzo6c2hhcmVkX251bGwuZGF0YSk7CiAgICAgICAgcmV0dXJu
IG1fc3RyaW5nLT51bmljb2RlKCkgKyBtX3Bvc2l0aW9uOwogICAgfQogICAgaW5saW5lIGNvbnN0
IFFDaGFyICpkYXRhKCkgY29uc3QgeyByZXR1cm4gdW5pY29kZSgpOyB9CiAgICBpbmxpbmUgY29u
c3QgUUNoYXIgKmNvbnN0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIHVuaWNvZGUoKTsgfQoKICAgIGlu
bGluZSB2b2lkIGNsZWFyKCkgeyBtX3N0cmluZyA9IDA7IG1fcG9zaXRpb24gPSBtX3NpemUgPSAw
OyB9CiAgICBRU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICBpbmxpbmUgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplID09IDA7IH0KICAgIGlubGluZSBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nID09IDAgfHwgbV9zdHJpbmctPmlzTnVsbCgpOyB9Cgog
ICAgUVN0cmluZ1JlZiBhcHBlbmRUbyhRU3RyaW5nICpzdHJpbmcpIGNvbnN0OwoKICAgIGlubGlu
ZSBjb25zdCBRQ2hhciBhdChpbnQgaSkgY29uc3QKICAgICAgICB7ICgoIShpID49IDAgJiYgaSA8
IHNpemUoKSkpID8gcXRfYXNzZXJ0KCJpID49IDAgJiYgaSA8IHNpemUoKSIsIi9vcHQvbG9jYWwv
aW5jbHVkZS9RdENvcmUvcXN0cmluZy5oIiwxMTQ0KSA6IHF0X25vb3AoKSk7IHJldHVybiBtX3N0
cmluZy0+YXQoaSArIG1fcG9zaXRpb24pOyB9CgogICAgaW50IGNvbXBhcmUoY29uc3QgUVN0cmlu
ZyAmcywgUXQ6OkNhc2VTZW5zaXRpdml0eSBjcyA9IFF0OjpDYXNlU2Vuc2l0aXZlKSBjb25zdDsK
ICAgIGludCBjb21wYXJlKGNvbnN0IFFTdHJpbmdSZWYgJnMsIFF0OjpDYXNlU2Vuc2l0aXZpdHkg
Y3MgPSBRdDo6Q2FzZVNlbnNpdGl2ZSkgY29uc3Q7CiAgICBpbnQgY29tcGFyZShRTGF0aW4xU3Ry
aW5nIHMsIFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MgPSBRdDo6Q2FzZVNlbnNpdGl2ZSkgY29uc3Q7
CiAgICBzdGF0aWMgaW50IGNvbXBhcmUoY29uc3QgUVN0cmluZ1JlZiAmczEsIGNvbnN0IFFTdHJp
bmcgJnMyLAogICAgICAgICAgICAgICAgICAgICAgIFF0OjpDYXNlU2Vuc2l0aXZpdHkgPSBRdDo6
Q2FzZVNlbnNpdGl2ZSk7CiAgICBzdGF0aWMgaW50IGNvbXBhcmUoY29uc3QgUVN0cmluZ1JlZiAm
czEsIGNvbnN0IFFTdHJpbmdSZWYgJnMyLAogICAgICAgICAgICAgICAgICAgICAgIFF0OjpDYXNl
U2Vuc2l0aXZpdHkgPSBRdDo6Q2FzZVNlbnNpdGl2ZSk7CiAgICBzdGF0aWMgaW50IGNvbXBhcmUo
Y29uc3QgUVN0cmluZ1JlZiAmczEsIFFMYXRpbjFTdHJpbmcgczIsCiAgICAgICAgICAgICAgICAg
ICAgICAgUXQ6OkNhc2VTZW5zaXRpdml0eSBjcyA9IFF0OjpDYXNlU2Vuc2l0aXZlKTsKCiAgICBp
bnQgbG9jYWxlQXdhcmVDb21wYXJlKGNvbnN0IFFTdHJpbmcgJnMpIGNvbnN0OwogICAgaW50IGxv
Y2FsZUF3YXJlQ29tcGFyZShjb25zdCBRU3RyaW5nUmVmICZzKSBjb25zdDsKICAgIHN0YXRpYyBp
bnQgbG9jYWxlQXdhcmVDb21wYXJlKGNvbnN0IFFTdHJpbmdSZWYgJnMxLCBjb25zdCBRU3RyaW5n
ICZzMik7CiAgICBzdGF0aWMgaW50IGxvY2FsZUF3YXJlQ29tcGFyZShjb25zdCBRU3RyaW5nUmVm
ICZzMSwgY29uc3QgUVN0cmluZ1JlZiAmczIpOwp9OwoKaW5saW5lIFFTdHJpbmdSZWYgJlFTdHJp
bmdSZWY6Om9wZXJhdG9yPShjb25zdCBRU3RyaW5nICphU3RyaW5nKQp7IG1fc3RyaW5nID0gYVN0
cmluZzsgbV9wb3NpdGlvbiA9IDA7IG1fc2l6ZSA9IGFTdHJpbmc/YVN0cmluZy0+c2l6ZSgpOjA7
IHJldHVybiAqdGhpczsgfQoKaW5saW5lIFFTdHJpbmdSZWY6OlFTdHJpbmdSZWYoY29uc3QgUVN0
cmluZyAqYVN0cmluZywgaW50IGFQb3NpdGlvbiwgaW50IGFTaXplKQogICAgICAgIDptX3N0cmlu
ZyhhU3RyaW5nKSwgbV9wb3NpdGlvbihhUG9zaXRpb24pLCBtX3NpemUoYVNpemUpe30KCmlubGlu
ZSBRU3RyaW5nUmVmOjpRU3RyaW5nUmVmKGNvbnN0IFFTdHJpbmcgKmFTdHJpbmcpCiAgICA6bV9z
dHJpbmcoYVN0cmluZyksIG1fcG9zaXRpb24oMCksIG1fc2l6ZShhU3RyaW5nP2FTdHJpbmctPnNp
emUoKSA6IDApe30KCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBRU3RyaW5nUmVmICZzMSxjb25zdCBRU3RyaW5nUmVmICZzMik7Cmlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUVN0cmluZ1JlZiAmczEsY29uc3QgUVN0cmluZ1Jl
ZiAmczIpCnsgcmV0dXJuICEoczEgPT0gczIpOyB9Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRU3RyaW5nICZzMSxjb25zdCBRU3Ry
aW5nUmVmICZzMik7CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUVN0cmluZyAmczEsY29u
c3QgUVN0cmluZ1JlZiAmczIpCnsgcmV0dXJuICEoczEgPT0gczIpOyB9CmlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUVN0cmluZ1JlZiAmczEsY29uc3QgUVN0cmluZyAmczIpCnsgcmV0dXJu
IHMyID09IHMxOyB9CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUVN0cmluZ1JlZiAmczEs
Y29uc3QgUVN0cmluZyAmczIpCnsgcmV0dXJuIHMyICE9IHMxOyB9Cl9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRTGF0aW4xU3RyaW5n
ICZzMSwgY29uc3QgUVN0cmluZ1JlZiAmczIpOwppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFFMYXRpbjFTdHJpbmcgJnMxLGNvbnN0IFFTdHJpbmdSZWYgJnMyKQp7IHJldHVybiAhKHMxID09
IHMyKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFTdHJpbmdSZWYgJnMxLGNvbnN0
IFFMYXRpbjFTdHJpbmcgJnMyKQp7IHJldHVybiBzMiA9PSBzMTsgfQppbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFFTdHJpbmdSZWYgJnMxLGNvbnN0IFFMYXRpbjFTdHJpbmcgJnMyKQp7IHJl
dHVybiBzMiAhPSBzMTsgfQoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkg
Ym9vbCBvcGVyYXRvcjwoY29uc3QgUVN0cmluZ1JlZiAmczEsY29uc3QgUVN0cmluZ1JlZiAmczIp
OwppbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgUVN0cmluZ1JlZiAmczEsIGNvbnN0IFFTdHJp
bmdSZWYgJnMyKQp7IHJldHVybiBzMiA8IHMxOyB9CmlubGluZSBib29sIG9wZXJhdG9yPD0oY29u
c3QgUVN0cmluZ1JlZiAmczEsIGNvbnN0IFFTdHJpbmdSZWYgJnMyKQp7IHJldHVybiAhKHMxID4g
czIpOyB9CmlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgUVN0cmluZ1JlZiAmczEsIGNvbnN0
IFFTdHJpbmdSZWYgJnMyKQp7IHJldHVybiAhKHMxIDwgczIpOyB9CgppbmxpbmUgYm9vbCBxU3Ry
aW5nQ29tcGFyaXNvbkhlbHBlcihjb25zdCBRU3RyaW5nUmVmICZzMSwgY29uc3QgY2hhciAqczIp
CnsKCiAgICBpZiAoUVN0cmluZzo6Y29kZWNGb3JDU3RyaW5ncykgcmV0dXJuIChzMSA9PSBRU3Ry
aW5nOjpmcm9tQXNjaWkoczIpKTsKCiAgICByZXR1cm4gKHMxID09IFFMYXRpbjFTdHJpbmcoczIp
KTsKfQoKaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBjaGFyICpzMSwgY29uc3QgUVN0cmluZ1JlZiAmczIpCnsgcmV0dXJuIHFTdHJp
bmdDb21wYXJpc29uSGVscGVyKHMyLCBzMSk7IH0KaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Rl
cHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRU3RyaW5nUmVmICZzMSwgY29uc3Qg
Y2hhciAqczIpCnsgcmV0dXJuIHFTdHJpbmdDb21wYXJpc29uSGVscGVyKHMxLCBzMik7IH0KaW5s
aW5lIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBjaGFyICpzMSwgY29uc3QgUVN0cmluZ1JlZiAmczIpCnsgcmV0dXJuICFxU3RyaW5nQ29tcGFy
aXNvbkhlbHBlcihzMiwgczEpOyB9CmlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVk
X18pKSBib29sIG9wZXJhdG9yIT0oY29uc3QgUVN0cmluZ1JlZiAmczEsIGNvbnN0IGNoYXIgKnMy
KQp7IHJldHVybiAhcVN0cmluZ0NvbXBhcmlzb25IZWxwZXIoczEsIHMyKTsgfQoKaW5saW5lIGlu
dCBRU3RyaW5nOjpjb21wYXJlKGNvbnN0IFFTdHJpbmdSZWYgJnMsIFF0OjpDYXNlU2Vuc2l0aXZp
dHkgY3MpIGNvbnN0CnsgcmV0dXJuIFFTdHJpbmc6OmNvbXBhcmVfaGVscGVyKGNvbnN0RGF0YSgp
LCBsZW5ndGgoKSwgcy5jb25zdERhdGEoKSwgcy5sZW5ndGgoKSwgY3MpOyB9CmlubGluZSBpbnQg
UVN0cmluZzo6Y29tcGFyZShjb25zdCBRU3RyaW5nICZzMSwgY29uc3QgUVN0cmluZ1JlZiAmczIs
IFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MpCnsgcmV0dXJuIFFTdHJpbmc6OmNvbXBhcmVfaGVscGVy
KHMxLmNvbnN0RGF0YSgpLCBzMS5sZW5ndGgoKSwgczIuY29uc3REYXRhKCksIHMyLmxlbmd0aCgp
LCBjcyk7IH0KaW5saW5lIGludCBRU3RyaW5nUmVmOjpjb21wYXJlKGNvbnN0IFFTdHJpbmcgJnMs
IFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MpIGNvbnN0CnsgcmV0dXJuIFFTdHJpbmc6OmNvbXBhcmVf
aGVscGVyKGNvbnN0RGF0YSgpLCBsZW5ndGgoKSwgcy5jb25zdERhdGEoKSwgcy5sZW5ndGgoKSwg
Y3MpOyB9CmlubGluZSBpbnQgUVN0cmluZ1JlZjo6Y29tcGFyZShjb25zdCBRU3RyaW5nUmVmICZz
LCBRdDo6Q2FzZVNlbnNpdGl2aXR5IGNzKSBjb25zdAp7IHJldHVybiBRU3RyaW5nOjpjb21wYXJl
X2hlbHBlcihjb25zdERhdGEoKSwgbGVuZ3RoKCksIHMuY29uc3REYXRhKCksIHMubGVuZ3RoKCks
IGNzKTsgfQppbmxpbmUgaW50IFFTdHJpbmdSZWY6OmNvbXBhcmUoUUxhdGluMVN0cmluZyBzLCBR
dDo6Q2FzZVNlbnNpdGl2aXR5IGNzKSBjb25zdAp7IHJldHVybiBRU3RyaW5nOjpjb21wYXJlX2hl
bHBlcihjb25zdERhdGEoKSwgbGVuZ3RoKCksIHMsIGNzKTsgfQppbmxpbmUgaW50IFFTdHJpbmdS
ZWY6OmNvbXBhcmUoY29uc3QgUVN0cmluZ1JlZiAmczEsIGNvbnN0IFFTdHJpbmcgJnMyLCBRdDo6
Q2FzZVNlbnNpdGl2aXR5IGNzKQp7IHJldHVybiBRU3RyaW5nOjpjb21wYXJlX2hlbHBlcihzMS5j
b25zdERhdGEoKSwgczEubGVuZ3RoKCksIHMyLmNvbnN0RGF0YSgpLCBzMi5sZW5ndGgoKSwgY3Mp
OyB9CmlubGluZSBpbnQgUVN0cmluZ1JlZjo6Y29tcGFyZShjb25zdCBRU3RyaW5nUmVmICZzMSwg
Y29uc3QgUVN0cmluZ1JlZiAmczIsIFF0OjpDYXNlU2Vuc2l0aXZpdHkgY3MpCnsgcmV0dXJuIFFT
dHJpbmc6OmNvbXBhcmVfaGVscGVyKHMxLmNvbnN0RGF0YSgpLCBzMS5sZW5ndGgoKSwgczIuY29u
c3REYXRhKCksIHMyLmxlbmd0aCgpLCBjcyk7IH0KaW5saW5lIGludCBRU3RyaW5nUmVmOjpjb21w
YXJlKGNvbnN0IFFTdHJpbmdSZWYgJnMxLCBRTGF0aW4xU3RyaW5nIHMyLCBRdDo6Q2FzZVNlbnNp
dGl2aXR5IGNzKQp7IHJldHVybiBRU3RyaW5nOjpjb21wYXJlX2hlbHBlcihzMS5jb25zdERhdGEo
KSwgczEubGVuZ3RoKCksIHMyLCBjcyk7IH0KCmlubGluZSBpbnQgUVN0cmluZzo6bG9jYWxlQXdh
cmVDb21wYXJlKGNvbnN0IFFTdHJpbmdSZWYgJnMpIGNvbnN0CnsgcmV0dXJuIGxvY2FsZUF3YXJl
Q29tcGFyZV9oZWxwZXIoY29uc3REYXRhKCksIGxlbmd0aCgpLCBzLmNvbnN0RGF0YSgpLCBzLmxl
bmd0aCgpKTsgfQppbmxpbmUgaW50IFFTdHJpbmc6OmxvY2FsZUF3YXJlQ29tcGFyZShjb25zdCBR
U3RyaW5nJiBzMSwgY29uc3QgUVN0cmluZ1JlZiYgczIpCnsgcmV0dXJuIGxvY2FsZUF3YXJlQ29t
cGFyZV9oZWxwZXIoczEuY29uc3REYXRhKCksIHMxLmxlbmd0aCgpLCBzMi5jb25zdERhdGEoKSwg
czIubGVuZ3RoKCkpOyB9CmlubGluZSBpbnQgUVN0cmluZ1JlZjo6bG9jYWxlQXdhcmVDb21wYXJl
KGNvbnN0IFFTdHJpbmcgJnMpIGNvbnN0CnsgcmV0dXJuIFFTdHJpbmc6OmxvY2FsZUF3YXJlQ29t
cGFyZV9oZWxwZXIoY29uc3REYXRhKCksIGxlbmd0aCgpLCBzLmNvbnN0RGF0YSgpLCBzLmxlbmd0
aCgpKTsgfQppbmxpbmUgaW50IFFTdHJpbmdSZWY6OmxvY2FsZUF3YXJlQ29tcGFyZShjb25zdCBR
U3RyaW5nUmVmICZzKSBjb25zdAp7IHJldHVybiBRU3RyaW5nOjpsb2NhbGVBd2FyZUNvbXBhcmVf
aGVscGVyKGNvbnN0RGF0YSgpLCBsZW5ndGgoKSwgcy5jb25zdERhdGEoKSwgcy5sZW5ndGgoKSk7
IH0KaW5saW5lIGludCBRU3RyaW5nUmVmOjpsb2NhbGVBd2FyZUNvbXBhcmUoY29uc3QgUVN0cmlu
Z1JlZiAmczEsIGNvbnN0IFFTdHJpbmcgJnMyKQp7IHJldHVybiBRU3RyaW5nOjpsb2NhbGVBd2Fy
ZUNvbXBhcmVfaGVscGVyKHMxLmNvbnN0RGF0YSgpLCBzMS5sZW5ndGgoKSwgczIuY29uc3REYXRh
KCksIHMyLmxlbmd0aCgpKTsgfQppbmxpbmUgaW50IFFTdHJpbmdSZWY6OmxvY2FsZUF3YXJlQ29t
cGFyZShjb25zdCBRU3RyaW5nUmVmICZzMSwgY29uc3QgUVN0cmluZ1JlZiAmczIpCnsgcmV0dXJu
IFFTdHJpbmc6OmxvY2FsZUF3YXJlQ29tcGFyZV9oZWxwZXIoczEuY29uc3REYXRhKCksIHMxLmxl
bmd0aCgpLCBzMi5jb25zdERhdGEoKSwgczIubGVuZ3RoKCkpOyB9CgoKCgoKIyA0OSAiL29wdC9s
b2NhbC9pbmNsdWRlL1F0Q29yZS9xb2JqZWN0LmgiIDIKCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRl
L1F0Q29yZS9xbGlzdC5oIiAxCiMgNDMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWxpc3Qu
aCIKI2RlZmluZSBRTElTVF9IIAoKIyAxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FpdGVy
YXRvci5oIiAxCiMgNDMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWl0ZXJhdG9yLmgiCiNk
ZWZpbmUgUUlURVJBVE9SX0ggCgoKCgoKbmFtZXNwYWNlIHN0ZCB7CiAgICBzdHJ1Y3QgYmlkaXJl
Y3Rpb25hbF9pdGVyYXRvcl90YWc7CiAgICBzdHJ1Y3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90
YWc7Cn0KCgoKdHlwZWRlZiBRdFZhbGlkTGljZW5zZUZvckNvcmVNb2R1bGUgUXRDb3JlTW9kdWxl
OwoKI2RlZmluZSBRX0RFQ0xBUkVfU0VRVUVOVElBTF9JVEVSQVRPUihDKSB0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY2xhc3MgUSAjI0MgIyNJdGVyYXRvciB7IHR5cGVkZWYgdHlwZW5hbWUgUSAjI0M8VD46
OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOyBRICMjQzxUPiBjOyBjb25zdF9pdGVyYXRv
ciBpOyBwdWJsaWM6IGlubGluZSBRICMjQyAjI0l0ZXJhdG9yKGNvbnN0IFEgIyNDPFQ+ICZjb250
YWluZXIpIDogYyhjb250YWluZXIpLCBpKGMuY29uc3RCZWdpbigpKSB7fSBpbmxpbmUgUSAjI0Mg
IyNJdGVyYXRvciAmb3BlcmF0b3I9KGNvbnN0IFEgIyNDPFQ+ICZjb250YWluZXIpIHsgYyA9IGNv
bnRhaW5lcjsgaSA9IGMuY29uc3RCZWdpbigpOyByZXR1cm4gKnRoaXM7IH0gaW5saW5lIHZvaWQg
dG9Gcm9udCgpIHsgaSA9IGMuY29uc3RCZWdpbigpOyB9IGlubGluZSB2b2lkIHRvQmFjaygpIHsg
aSA9IGMuY29uc3RFbmQoKTsgfSBpbmxpbmUgYm9vbCBoYXNOZXh0KCkgY29uc3QgeyByZXR1cm4g
aSAhPSBjLmNvbnN0RW5kKCk7IH0gaW5saW5lIGNvbnN0IFQgJm5leHQoKSB7IHJldHVybiAqaSsr
OyB9IGlubGluZSBjb25zdCBUICZwZWVrTmV4dCgpIGNvbnN0IHsgcmV0dXJuICppOyB9IGlubGlu
ZSBib29sIGhhc1ByZXZpb3VzKCkgY29uc3QgeyByZXR1cm4gaSAhPSBjLmNvbnN0QmVnaW4oKTsg
fSBpbmxpbmUgY29uc3QgVCAmcHJldmlvdXMoKSB7IHJldHVybiAqLS1pOyB9IGlubGluZSBjb25z
dCBUICZwZWVrUHJldmlvdXMoKSBjb25zdCB7IGNvbnN0X2l0ZXJhdG9yIHAgPSBpOyByZXR1cm4g
Ki0tcDsgfSBpbmxpbmUgYm9vbCBmaW5kTmV4dChjb25zdCBUICZ0KSB7IHdoaWxlIChpICE9IGMu
Y29uc3RFbmQoKSkgaWYgKCppKysgPT0gdCkgcmV0dXJuIHRydWU7IHJldHVybiBmYWxzZTsgfSBp
bmxpbmUgYm9vbCBmaW5kUHJldmlvdXMoY29uc3QgVCAmdCkgeyB3aGlsZSAoaSAhPSBjLmNvbnN0
QmVnaW4oKSkgaWYgKCooLS1pKSA9PSB0KSByZXR1cm4gdHJ1ZTsgcmV0dXJuIGZhbHNlOyB9IH07
CiMgODYgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWl0ZXJhdG9yLmgiCiNkZWZpbmUgUV9E
RUNMQVJFX01VVEFCTEVfU0VRVUVOVElBTF9JVEVSQVRPUihDKSB0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y2xhc3MgUU11dGFibGUgIyNDICMjSXRlcmF0b3IgeyB0eXBlZGVmIHR5cGVuYW1lIFEgIyNDPFQ+
OjppdGVyYXRvciBpdGVyYXRvcjsgdHlwZWRlZiB0eXBlbmFtZSBRICMjQzxUPjo6Y29uc3RfaXRl
cmF0b3IgY29uc3RfaXRlcmF0b3I7IFEgIyNDPFQ+ICpjOyBpdGVyYXRvciBpLCBuOyBpbmxpbmUg
Ym9vbCBpdGVtX2V4aXN0cygpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKG4pICE9IGMt
PmNvbnN0RW5kKCk7IH0gcHVibGljOiBpbmxpbmUgUU11dGFibGUgIyNDICMjSXRlcmF0b3IoUSAj
I0M8VD4gJmNvbnRhaW5lcikgOiBjKCZjb250YWluZXIpIHsgYy0+c2V0U2hhcmFibGUoZmFsc2Up
OyBpID0gYy0+YmVnaW4oKTsgbiA9IGMtPmVuZCgpOyB9IGlubGluZSB+UU11dGFibGUgIyNDICMj
SXRlcmF0b3IoKSB7IGMtPnNldFNoYXJhYmxlKHRydWUpOyB9IGlubGluZSBRTXV0YWJsZSAjI0Mg
IyNJdGVyYXRvciAmb3BlcmF0b3I9KFEgIyNDPFQ+ICZjb250YWluZXIpIHsgYy0+c2V0U2hhcmFi
bGUodHJ1ZSk7IGMgPSAmY29udGFpbmVyOyBjLT5zZXRTaGFyYWJsZShmYWxzZSk7IGkgPSBjLT5i
ZWdpbigpOyBuID0gYy0+ZW5kKCk7IHJldHVybiAqdGhpczsgfSBpbmxpbmUgdm9pZCB0b0Zyb250
KCkgeyBpID0gYy0+YmVnaW4oKTsgbiA9IGMtPmVuZCgpOyB9IGlubGluZSB2b2lkIHRvQmFjaygp
IHsgaSA9IGMtPmVuZCgpOyBuID0gaTsgfSBpbmxpbmUgYm9vbCBoYXNOZXh0KCkgY29uc3QgeyBy
ZXR1cm4gYy0+Y29uc3RFbmQoKSAhPSBjb25zdF9pdGVyYXRvcihpKTsgfSBpbmxpbmUgVCAmbmV4
dCgpIHsgbiA9IGkrKzsgcmV0dXJuICpuOyB9IGlubGluZSBUICZwZWVrTmV4dCgpIGNvbnN0IHsg
cmV0dXJuICppOyB9IGlubGluZSBib29sIGhhc1ByZXZpb3VzKCkgY29uc3QgeyByZXR1cm4gYy0+
Y29uc3RCZWdpbigpICE9IGNvbnN0X2l0ZXJhdG9yKGkpOyB9IGlubGluZSBUICZwcmV2aW91cygp
IHsgbiA9IC0taTsgcmV0dXJuICpuOyB9IGlubGluZSBUICZwZWVrUHJldmlvdXMoKSBjb25zdCB7
IGl0ZXJhdG9yIHAgPSBpOyByZXR1cm4gKi0tcDsgfSBpbmxpbmUgdm9pZCByZW1vdmUoKSB7IGlm
IChjLT5jb25zdEVuZCgpICE9IGNvbnN0X2l0ZXJhdG9yKG4pKSB7IGkgPSBjLT5lcmFzZShuKTsg
biA9IGMtPmVuZCgpOyB9IH0gaW5saW5lIHZvaWQgc2V0VmFsdWUoY29uc3QgVCAmdCkgY29uc3Qg
eyBpZiAoYy0+Y29uc3RFbmQoKSAhPSBjb25zdF9pdGVyYXRvcihuKSkgKm4gPSB0OyB9IGlubGlu
ZSBUICZ2YWx1ZSgpIHsgUV9BU1NFUlQoaXRlbV9leGlzdHMoKSk7IHJldHVybiAqbjsgfSBpbmxp
bmUgY29uc3QgVCAmdmFsdWUoKSBjb25zdCB7IFFfQVNTRVJUKGl0ZW1fZXhpc3RzKCkpOyByZXR1
cm4gKm47IH0gaW5saW5lIHZvaWQgaW5zZXJ0KGNvbnN0IFQgJnQpIHsgbiA9IGkgPSBjLT5pbnNl
cnQoaSwgdCk7ICsraTsgfSBpbmxpbmUgYm9vbCBmaW5kTmV4dChjb25zdCBUICZ0KSB7IHdoaWxl
IChjLT5jb25zdEVuZCgpICE9IGNvbnN0X2l0ZXJhdG9yKG4gPSBpKSkgaWYgKCppKysgPT0gdCkg
cmV0dXJuIHRydWU7IHJldHVybiBmYWxzZTsgfSBpbmxpbmUgYm9vbCBmaW5kUHJldmlvdXMoY29u
c3QgVCAmdCkgeyB3aGlsZSAoYy0+Y29uc3RCZWdpbigpICE9IGNvbnN0X2l0ZXJhdG9yKGkpKSBp
ZiAoKihuID0gLS1pKSA9PSB0KSByZXR1cm4gdHJ1ZTsgbiA9IGMtPmVuZCgpOyByZXR1cm4gZmFs
c2U7IH0gfTsKIyAxMjYgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWl0ZXJhdG9yLmgiCiNk
ZWZpbmUgUV9ERUNMQVJFX0FTU09DSUFUSVZFX0lURVJBVE9SKEMpIHRlbXBsYXRlIDxjbGFzcyBL
ZXksIGNsYXNzIFQ+IGNsYXNzIFEgIyNDICMjSXRlcmF0b3IgeyB0eXBlZGVmIHR5cGVuYW1lIFEg
IyNDPEtleSxUPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7IHR5cGVkZWYgY29uc3Rf
aXRlcmF0b3IgSXRlbTsgUSAjI0M8S2V5LFQ+IGM7IGNvbnN0X2l0ZXJhdG9yIGksIG47IGlubGlu
ZSBib29sIGl0ZW1fZXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbiAhPSBjLmNvbnN0RW5kKCk7IH0g
cHVibGljOiBpbmxpbmUgUSAjI0MgIyNJdGVyYXRvcihjb25zdCBRICMjQzxLZXksVD4gJmNvbnRh
aW5lcikgOiBjKGNvbnRhaW5lciksIGkoYy5jb25zdEJlZ2luKCkpLCBuKGMuY29uc3RFbmQoKSkg
e30gaW5saW5lIFEgIyNDICMjSXRlcmF0b3IgJm9wZXJhdG9yPShjb25zdCBRICMjQzxLZXksVD4g
JmNvbnRhaW5lcikgeyBjID0gY29udGFpbmVyOyBpID0gYy5jb25zdEJlZ2luKCk7IG4gPSBjLmNv
bnN0RW5kKCk7IHJldHVybiAqdGhpczsgfSBpbmxpbmUgdm9pZCB0b0Zyb250KCkgeyBpID0gYy5j
b25zdEJlZ2luKCk7IG4gPSBjLmNvbnN0RW5kKCk7IH0gaW5saW5lIHZvaWQgdG9CYWNrKCkgeyBp
ID0gYy5jb25zdEVuZCgpOyBuID0gYy5jb25zdEVuZCgpOyB9IGlubGluZSBib29sIGhhc05leHQo
KSBjb25zdCB7IHJldHVybiBpICE9IGMuY29uc3RFbmQoKTsgfSBpbmxpbmUgSXRlbSBuZXh0KCkg
eyBuID0gaSsrOyByZXR1cm4gbjsgfSBpbmxpbmUgSXRlbSBwZWVrTmV4dCgpIGNvbnN0IHsgcmV0
dXJuIGk7IH0gaW5saW5lIGJvb2wgaGFzUHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBpICE9IGMu
Y29uc3RCZWdpbigpOyB9IGlubGluZSBJdGVtIHByZXZpb3VzKCkgeyBuID0gLS1pOyByZXR1cm4g
bjsgfSBpbmxpbmUgSXRlbSBwZWVrUHJldmlvdXMoKSBjb25zdCB7IGNvbnN0X2l0ZXJhdG9yIHAg
PSBpOyByZXR1cm4gLS1wOyB9IGlubGluZSBjb25zdCBUICZ2YWx1ZSgpIGNvbnN0IHsgUV9BU1NF
UlQoaXRlbV9leGlzdHMoKSk7IHJldHVybiAqbjsgfSBpbmxpbmUgY29uc3QgS2V5ICZrZXkoKSBj
b25zdCB7IFFfQVNTRVJUKGl0ZW1fZXhpc3RzKCkpOyByZXR1cm4gbi5rZXkoKTsgfSBpbmxpbmUg
Ym9vbCBmaW5kTmV4dChjb25zdCBUICZ0KSB7IHdoaWxlICgobiA9IGkpICE9IGMuY29uc3RFbmQo
KSkgaWYgKCppKysgPT0gdCkgcmV0dXJuIHRydWU7IHJldHVybiBmYWxzZTsgfSBpbmxpbmUgYm9v
bCBmaW5kUHJldmlvdXMoY29uc3QgVCAmdCkgeyB3aGlsZSAoaSAhPSBjLmNvbnN0QmVnaW4oKSkg
aWYgKCoobiA9IC0taSkgPT0gdCkgcmV0dXJuIHRydWU7IG4gPSBjLmNvbnN0RW5kKCk7IHJldHVy
biBmYWxzZTsgfSB9OwojIDE1OCAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xaXRlcmF0b3Iu
aCIKI2RlZmluZSBRX0RFQ0xBUkVfTVVUQUJMRV9BU1NPQ0lBVElWRV9JVEVSQVRPUihDKSB0ZW1w
bGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBUPiBjbGFzcyBRTXV0YWJsZSAjI0MgIyNJdGVyYXRvciB7
IHR5cGVkZWYgdHlwZW5hbWUgUSAjI0M8S2V5LFQ+OjppdGVyYXRvciBpdGVyYXRvcjsgdHlwZWRl
ZiB0eXBlbmFtZSBRICMjQzxLZXksVD46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOyB0
eXBlZGVmIGl0ZXJhdG9yIEl0ZW07IFEgIyNDPEtleSxUPiAqYzsgaXRlcmF0b3IgaSwgbjsgaW5s
aW5lIGJvb2wgaXRlbV9leGlzdHMoKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvcihuKSAh
PSBjLT5jb25zdEVuZCgpOyB9IHB1YmxpYzogaW5saW5lIFFNdXRhYmxlICMjQyAjI0l0ZXJhdG9y
KFEgIyNDPEtleSxUPiAmY29udGFpbmVyKSA6IGMoJmNvbnRhaW5lcikgeyBjLT5zZXRTaGFyYWJs
ZShmYWxzZSk7IGkgPSBjLT5iZWdpbigpOyBuID0gYy0+ZW5kKCk7IH0gaW5saW5lIH5RTXV0YWJs
ZSAjI0MgIyNJdGVyYXRvcigpIHsgYy0+c2V0U2hhcmFibGUodHJ1ZSk7IH0gaW5saW5lIFFNdXRh
YmxlICMjQyAjI0l0ZXJhdG9yICZvcGVyYXRvcj0oUSAjI0M8S2V5LFQ+ICZjb250YWluZXIpIHsg
Yy0+c2V0U2hhcmFibGUodHJ1ZSk7IGMgPSAmY29udGFpbmVyOyBjLT5zZXRTaGFyYWJsZShmYWxz
ZSk7IGkgPSBjLT5iZWdpbigpOyBuID0gYy0+ZW5kKCk7IHJldHVybiAqdGhpczsgfSBpbmxpbmUg
dm9pZCB0b0Zyb250KCkgeyBpID0gYy0+YmVnaW4oKTsgbiA9IGMtPmVuZCgpOyB9IGlubGluZSB2
b2lkIHRvQmFjaygpIHsgaSA9IGMtPmVuZCgpOyBuID0gYy0+ZW5kKCk7IH0gaW5saW5lIGJvb2wg
aGFzTmV4dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKGkpICE9IGMtPmNvbnN0RW5k
KCk7IH0gaW5saW5lIEl0ZW0gbmV4dCgpIHsgbiA9IGkrKzsgcmV0dXJuIG47IH0gaW5saW5lIEl0
ZW0gcGVla05leHQoKSBjb25zdCB7IHJldHVybiBpOyB9IGlubGluZSBib29sIGhhc1ByZXZpb3Vz
KCkgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoaSkgIT0gYy0+Y29uc3RCZWdpbigpOyB9
IGlubGluZSBJdGVtIHByZXZpb3VzKCkgeyBuID0gLS1pOyByZXR1cm4gbjsgfSBpbmxpbmUgSXRl
bSBwZWVrUHJldmlvdXMoKSBjb25zdCB7IGl0ZXJhdG9yIHAgPSBpOyByZXR1cm4gLS1wOyB9IGlu
bGluZSB2b2lkIHJlbW92ZSgpIHsgaWYgKGNvbnN0X2l0ZXJhdG9yKG4pICE9IGMtPmNvbnN0RW5k
KCkpIHsgaSA9IGMtPmVyYXNlKG4pOyBuID0gYy0+ZW5kKCk7IH0gfSBpbmxpbmUgdm9pZCBzZXRW
YWx1ZShjb25zdCBUICZ0KSB7IGlmIChjb25zdF9pdGVyYXRvcihuKSAhPSBjLT5jb25zdEVuZCgp
KSAqbiA9IHQ7IH0gaW5saW5lIFQgJnZhbHVlKCkgeyBRX0FTU0VSVChpdGVtX2V4aXN0cygpKTsg
cmV0dXJuICpuOyB9IGlubGluZSBjb25zdCBUICZ2YWx1ZSgpIGNvbnN0IHsgUV9BU1NFUlQoaXRl
bV9leGlzdHMoKSk7IHJldHVybiAqbjsgfSBpbmxpbmUgY29uc3QgS2V5ICZrZXkoKSBjb25zdCB7
IFFfQVNTRVJUKGl0ZW1fZXhpc3RzKCkpOyByZXR1cm4gbi5rZXkoKTsgfSBpbmxpbmUgYm9vbCBm
aW5kTmV4dChjb25zdCBUICZ0KSB7IHdoaWxlIChjb25zdF9pdGVyYXRvcihuID0gaSkgIT0gYy0+
Y29uc3RFbmQoKSkgaWYgKCppKysgPT0gdCkgcmV0dXJuIHRydWU7IHJldHVybiBmYWxzZTsgfSBp
bmxpbmUgYm9vbCBmaW5kUHJldmlvdXMoY29uc3QgVCAmdCkgeyB3aGlsZSAoY29uc3RfaXRlcmF0
b3IoaSkgIT0gYy0+Y29uc3RCZWdpbigpKSBpZiAoKihuID0gLS1pKSA9PSB0KSByZXR1cm4gdHJ1
ZTsgbiA9IGMtPmVuZCgpOyByZXR1cm4gZmFsc2U7IH0gfTsKIyAxOTggIi9vcHQvbG9jYWwvaW5j
bHVkZS9RdENvcmUvcWl0ZXJhdG9yLmgiCgoKCiMgNDYgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENv
cmUvcWxpc3QuaCIgMgoKIyAxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FhbGdvcml0aG1z
LmgiIDEKIyA0MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xYWxnb3JpdGhtcy5oIgojZGVm
aW5lIFFBTEdPUklUSE1TX0ggCgoKCgoKCgp0eXBlZGVmIFF0VmFsaWRMaWNlbnNlRm9yQ29yZU1v
ZHVsZSBRdENvcmVNb2R1bGU7CgoKCgoKbmFtZXNwYWNlIFFBbGdvcml0aG1zUHJpdmF0ZSB7Cgp0
ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIFQsIHR5cGVu
YW1lIExlc3NUaGFuPgogdm9pZCBxU29ydEhlbHBlcihSYW5kb21BY2Nlc3NJdGVyYXRvciBzdGFy
dCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgZW5kLCBjb25zdCBUICZ0LCBMZXNzVGhhbiBsZXNzVGhh
bik7CnRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgVD4K
aW5saW5lIHZvaWQgcVNvcnRIZWxwZXIoUmFuZG9tQWNjZXNzSXRlcmF0b3IgYmVnaW4sIFJhbmRv
bUFjY2Vzc0l0ZXJhdG9yIGVuZCwgY29uc3QgVCAmZHVtbXkpOwoKdGVtcGxhdGUgPHR5cGVuYW1l
IFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBMZXNzVGhhbj4KIHZv
aWQgcVN0YWJsZVNvcnRIZWxwZXIoUmFuZG9tQWNjZXNzSXRlcmF0b3Igc3RhcnQsIFJhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIGVuZCwgY29uc3QgVCAmdCwgTGVzc1RoYW4gbGVzc1RoYW4pOwp0ZW1wbGF0
ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIFQ+CmlubGluZSB2b2lk
IHFTdGFibGVTb3J0SGVscGVyKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBSYW5kb21BY2Nlc3NJdGVy
YXRvciwgY29uc3QgVCAmKTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRv
ciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgTGVzc1RoYW4+CiBSYW5kb21BY2Nlc3NJdGVyYXRvciBx
TG93ZXJCb3VuZEhlbHBlcihSYW5kb21BY2Nlc3NJdGVyYXRvciBiZWdpbiwgUmFuZG9tQWNjZXNz
SXRlcmF0b3IgZW5kLCBjb25zdCBUICZ2YWx1ZSwgTGVzc1RoYW4gbGVzc1RoYW4pOwp0ZW1wbGF0
ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIExl
c3NUaGFuPgogUmFuZG9tQWNjZXNzSXRlcmF0b3IgcVVwcGVyQm91bmRIZWxwZXIoUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgYmVnaW4sIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGVuZCwgY29uc3QgVCAmdmFs
dWUsIExlc3NUaGFuIGxlc3NUaGFuKTsKdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0
ZXJhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBMZXNzVGhhbj4KIFJhbmRvbUFjY2Vzc0l0ZXJh
dG9yIHFCaW5hcnlGaW5kSGVscGVyKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGJlZ2luLCBSYW5kb21B
Y2Nlc3NJdGVyYXRvciBlbmQsIGNvbnN0IFQgJnZhbHVlLCBMZXNzVGhhbiBsZXNzVGhhbik7Cgp9
Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0
b3I+CmlubGluZSBPdXRwdXRJdGVyYXRvciBxQ29weShJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1
dEl0ZXJhdG9yIGVuZCwgT3V0cHV0SXRlcmF0b3IgZGVzdCkKewogICAgd2hpbGUgKGJlZ2luICE9
IGVuZCkKICAgICAgICAqZGVzdCsrID0gKmJlZ2luKys7CiAgICByZXR1cm4gZGVzdDsKfQoKdGVt
cGxhdGUgPHR5cGVuYW1lIEJpSXRlcmF0b3IxLCB0eXBlbmFtZSBCaUl0ZXJhdG9yMj4KaW5saW5l
IEJpSXRlcmF0b3IyIHFDb3B5QmFja3dhcmQoQmlJdGVyYXRvcjEgYmVnaW4sIEJpSXRlcmF0b3Ix
IGVuZCwgQmlJdGVyYXRvcjIgZGVzdCkKewogICAgd2hpbGUgKGJlZ2luICE9IGVuZCkKICAgICAg
ICAqLS1kZXN0ID0gKi0tZW5kOwogICAgcmV0dXJuIGRlc3Q7Cn0KCnRlbXBsYXRlIDx0eXBlbmFt
ZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjI+CmlubGluZSBib29sIHFF
cXVhbChJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0
ZXJhdG9yMiBmaXJzdDIpCnsKICAgIGZvciAoOyBmaXJzdDEgIT0gbGFzdDE7ICsrZmlyc3QxLCAr
K2ZpcnN0MikKICAgICAgICBpZiAoISgqZmlyc3QxID09ICpmaXJzdDIpKQogICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICByZXR1cm4gdHJ1ZTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndh
cmRJdGVyYXRvciwgdHlwZW5hbWUgVD4KaW5saW5lIHZvaWQgcUZpbGwoRm9yd2FyZEl0ZXJhdG9y
IGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgVCAmdmFsKQp7CiAgICBmb3IgKDsg
Zmlyc3QgIT0gbGFzdDsgKytmaXJzdCkKICAgICAgICAqZmlyc3QgPSB2YWw7Cn0KCnRlbXBsYXRl
IDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFQ+CmlubGluZSB2b2lkIHFGaWxsKENvbnRh
aW5lciAmY29udGFpbmVyLCBjb25zdCBUICZ2YWwpCnsKICAgIHFGaWxsKGNvbnRhaW5lci5iZWdp
bigpLCBjb250YWluZXIuZW5kKCksIHZhbCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0
ZXJhdG9yLCB0eXBlbmFtZSBUPgppbmxpbmUgSW5wdXRJdGVyYXRvciBxRmluZChJbnB1dEl0ZXJh
dG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIGNvbnN0IFQgJnZhbCkKewogICAgd2hpbGUg
KGZpcnN0ICE9IGxhc3QgJiYgISgqZmlyc3QgPT0gdmFsKSkKICAgICAgICArK2ZpcnN0OwogICAg
cmV0dXJuIGZpcnN0Owp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBU
PgppbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBxRmluZChjb25zdCBD
b250YWluZXIgJmNvbnRhaW5lciwgY29uc3QgVCAmdmFsKQp7CiAgICByZXR1cm4gcUZpbmQoY29u
dGFpbmVyLmNvbnN0QmVnaW4oKSwgY29udGFpbmVyLmNvbnN0RW5kKCksIHZhbCk7Cn0KCnRlbXBs
YXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTaXplPgpp
bmxpbmUgdm9pZCBxQ291bnQoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0
LCBjb25zdCBUICZ2YWx1ZSwgU2l6ZSAmbikKewogICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsr
Zmlyc3QpCiAgICAgICAgaWYgKCpmaXJzdCA9PSB2YWx1ZSkKICAgICAgICAgICAgKytuOwp9Cgp0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTaXplPgpp
bmxpbmUgdm9pZCBxQ291bnQoY29uc3QgQ29udGFpbmVyICZjb250YWluZXIsIGNvbnN0IFQgJnZh
bHVlLCBTaXplICZuKQp7CiAgICBxQ291bnQoY29udGFpbmVyLmNvbnN0QmVnaW4oKSwgY29udGFp
bmVyLmNvbnN0RW5kKCksIHZhbHVlLCBuKTsKfQojIDE1NSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0
Q29yZS9xYWxnb3JpdGhtcy5oIgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KY2xhc3MgcUxlc3MKewpw
dWJsaWM6CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFQgJnQxLCBjb25zdCBUICZ0
MikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gKHQxIDwgdDIpOwogICAgfQp9OwoKdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CmNsYXNzIHFHcmVhdGVyCnsKcHVibGljOgogICAgaW5saW5lIGJvb2wg
b3BlcmF0b3IoKShjb25zdCBUICZ0MSwgY29uc3QgVCAmdDIpIGNvbnN0CiAgICB7CiAgICAgICAg
cmV0dXJuICh0MiA8IHQxKTsKICAgIH0KfTsKCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNj
ZXNzSXRlcmF0b3I+CmlubGluZSB2b2lkIHFTb3J0KFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIHN0YXJ0
LCBSYW5kb21BY2Nlc3NJdGVyYXRvciBlbmQpCnsKICAgIGlmIChzdGFydCAhPSBlbmQpCiAgICAg
ICAgUUFsZ29yaXRobXNQcml2YXRlOjpxU29ydEhlbHBlcihzdGFydCwgZW5kLCAqc3RhcnQpOwp9
Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIExlc3NU
aGFuPgppbmxpbmUgdm9pZCBxU29ydChSYW5kb21BY2Nlc3NJdGVyYXRvciBzdGFydCwgUmFuZG9t
QWNjZXNzSXRlcmF0b3IgZW5kLCBMZXNzVGhhbiBsZXNzVGhhbikKewogICAgaWYgKHN0YXJ0ICE9
IGVuZCkKICAgICAgICBRQWxnb3JpdGhtc1ByaXZhdGU6OnFTb3J0SGVscGVyKHN0YXJ0LCBlbmQs
ICpzdGFydCwgbGVzc1RoYW4pOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXI+CmlubGlu
ZSB2b2lkIHFTb3J0KENvbnRhaW5lciAmYykKewoKCgoKICAgIGlmICghYy5lbXB0eSgpKQogICAg
ICAgIFFBbGdvcml0aG1zUHJpdmF0ZTo6cVNvcnRIZWxwZXIoYy5iZWdpbigpLCBjLmVuZCgpLCAq
Yy5iZWdpbigpKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgpp
bmxpbmUgdm9pZCBxU3RhYmxlU29ydChSYW5kb21BY2Nlc3NJdGVyYXRvciBzdGFydCwgUmFuZG9t
QWNjZXNzSXRlcmF0b3IgZW5kKQp7CiAgICBpZiAoc3RhcnQgIT0gZW5kKQogICAgICAgIFFBbGdv
cml0aG1zUHJpdmF0ZTo6cVN0YWJsZVNvcnRIZWxwZXIoc3RhcnQsIGVuZCwgKnN0YXJ0KTsKfQoK
dGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBMZXNzVGhh
bj4KaW5saW5lIHZvaWQgcVN0YWJsZVNvcnQoUmFuZG9tQWNjZXNzSXRlcmF0b3Igc3RhcnQsIFJh
bmRvbUFjY2Vzc0l0ZXJhdG9yIGVuZCwgTGVzc1RoYW4gbGVzc1RoYW4pCnsKICAgIGlmIChzdGFy
dCAhPSBlbmQpCiAgICAgICAgUUFsZ29yaXRobXNQcml2YXRlOjpxU3RhYmxlU29ydEhlbHBlcihz
dGFydCwgZW5kLCAqc3RhcnQsIGxlc3NUaGFuKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgQ29udGFp
bmVyPgppbmxpbmUgdm9pZCBxU3RhYmxlU29ydChDb250YWluZXIgJmMpCnsKCgoKCiAgICBpZiAo
IWMuZW1wdHkoKSkKICAgICAgICBRQWxnb3JpdGhtc1ByaXZhdGU6OnFTdGFibGVTb3J0SGVscGVy
KGMuYmVnaW4oKSwgYy5lbmQoKSwgKmMuYmVnaW4oKSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBS
YW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgVD4KIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIHFM
b3dlckJvdW5kKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGJlZ2luLCBSYW5kb21BY2Nlc3NJdGVyYXRv
ciBlbmQsIGNvbnN0IFQgJnZhbHVlKQp7CgoKCiAgICBSYW5kb21BY2Nlc3NJdGVyYXRvciBtaWRk
bGU7CiAgICBpbnQgbiA9IGVuZCAtIGJlZ2luOwogICAgaW50IGhhbGY7CgogICAgd2hpbGUgKG4g
PiAwKSB7CiAgICAgICAgaGFsZiA9IG4gPj4gMTsKICAgICAgICBtaWRkbGUgPSBiZWdpbiArIGhh
bGY7CiAgICAgICAgaWYgKCptaWRkbGUgPCB2YWx1ZSkgewogICAgICAgICAgICBiZWdpbiA9IG1p
ZGRsZSArIDE7CiAgICAgICAgICAgIG4gLT0gaGFsZiArIDE7CiAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgbiA9IGhhbGY7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGJlZ2luOwp9Cgp0
ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIFQsIHR5cGVu
YW1lIExlc3NUaGFuPgogUmFuZG9tQWNjZXNzSXRlcmF0b3IgcUxvd2VyQm91bmQoUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgYmVnaW4sIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGVuZCwgY29uc3QgVCAmdmFs
dWUsIExlc3NUaGFuIGxlc3NUaGFuKQp7CiAgICByZXR1cm4gUUFsZ29yaXRobXNQcml2YXRlOjpx
TG93ZXJCb3VuZEhlbHBlcihiZWdpbiwgZW5kLCB2YWx1ZSwgbGVzc1RoYW4pOwp9Cgp0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBUPgogdHlwZW5hbWUgQ29udGFpbmVyOjpj
b25zdF9pdGVyYXRvciBxTG93ZXJCb3VuZChjb25zdCBDb250YWluZXIgJmNvbnRhaW5lciwgY29u
c3QgVCAmdmFsdWUpCnsKICAgIHJldHVybiBRQWxnb3JpdGhtc1ByaXZhdGU6OnFMb3dlckJvdW5k
SGVscGVyKGNvbnRhaW5lci5jb25zdEJlZ2luKCksIGNvbnRhaW5lci5jb25zdEVuZCgpLCB2YWx1
ZSwgcUxlc3M8VD4oKSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRv
ciwgdHlwZW5hbWUgVD4KIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIHFVcHBlckJvdW5kKFJhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIGJlZ2luLCBSYW5kb21BY2Nlc3NJdGVyYXRvciBlbmQsIGNvbnN0IFQgJnZh
bHVlKQp7CgogICAgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbWlkZGxlOwogICAgaW50IG4gPSBlbmQg
LSBiZWdpbjsKICAgIGludCBoYWxmOwoKICAgIHdoaWxlIChuID4gMCkgewogICAgICAgIGhhbGYg
PSBuID4+IDE7CiAgICAgICAgbWlkZGxlID0gYmVnaW4gKyBoYWxmOwogICAgICAgIGlmICh2YWx1
ZSA8ICptaWRkbGUpIHsKICAgICAgICAgICAgbiA9IGhhbGY7CiAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgYmVnaW4gPSBtaWRkbGUgKyAxOwogICAgICAgICAgICBuIC09IGhhbGYgKyAxOwog
ICAgICAgIH0KICAgIH0KICAgIHJldHVybiBiZWdpbjsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFJh
bmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBMZXNzVGhhbj4KIFJhbmRv
bUFjY2Vzc0l0ZXJhdG9yIHFVcHBlckJvdW5kKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGJlZ2luLCBS
YW5kb21BY2Nlc3NJdGVyYXRvciBlbmQsIGNvbnN0IFQgJnZhbHVlLCBMZXNzVGhhbiBsZXNzVGhh
bikKewogICAgcmV0dXJuIFFBbGdvcml0aG1zUHJpdmF0ZTo6cVVwcGVyQm91bmRIZWxwZXIoYmVn
aW4sIGVuZCwgdmFsdWUsIGxlc3NUaGFuKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5l
ciwgdHlwZW5hbWUgVD4KIHR5cGVuYW1lIENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgcVVwcGVy
Qm91bmQoY29uc3QgQ29udGFpbmVyICZjb250YWluZXIsIGNvbnN0IFQgJnZhbHVlKQp7CiAgICBy
ZXR1cm4gUUFsZ29yaXRobXNQcml2YXRlOjpxVXBwZXJCb3VuZEhlbHBlcihjb250YWluZXIuY29u
c3RCZWdpbigpLCBjb250YWluZXIuY29uc3RFbmQoKSwgdmFsdWUsIHFMZXNzPFQ+KCkpOwp9Cgp0
ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIFQ+CiBSYW5k
b21BY2Nlc3NJdGVyYXRvciBxQmluYXJ5RmluZChSYW5kb21BY2Nlc3NJdGVyYXRvciBiZWdpbiwg
UmFuZG9tQWNjZXNzSXRlcmF0b3IgZW5kLCBjb25zdCBUICZ2YWx1ZSkKewoKICAgIFJhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIGl0ID0gcUxvd2VyQm91bmQoYmVnaW4sIGVuZCwgdmFsdWUpOwoKICAgIGlm
IChpdCA9PSBlbmQgfHwgdmFsdWUgPCAqaXQpCiAgICAgICAgcmV0dXJuIGVuZDsKCiAgICByZXR1
cm4gaXQ7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5h
bWUgVCwgdHlwZW5hbWUgTGVzc1RoYW4+CiBSYW5kb21BY2Nlc3NJdGVyYXRvciBxQmluYXJ5Rmlu
ZChSYW5kb21BY2Nlc3NJdGVyYXRvciBiZWdpbiwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgZW5kLCBj
b25zdCBUICZ2YWx1ZSwgTGVzc1RoYW4gbGVzc1RoYW4pCnsKICAgIHJldHVybiBRQWxnb3JpdGht
c1ByaXZhdGU6OnFCaW5hcnlGaW5kSGVscGVyKGJlZ2luLCBlbmQsIHZhbHVlLCBsZXNzVGhhbik7
Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFQ+CiB0eXBlbmFtZSBD
b250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIHFCaW5hcnlGaW5kKGNvbnN0IENvbnRhaW5lciAmY29u
dGFpbmVyLCBjb25zdCBUICZ2YWx1ZSkKewogICAgcmV0dXJuIFFBbGdvcml0aG1zUHJpdmF0ZTo6
cUJpbmFyeUZpbmRIZWxwZXIoY29udGFpbmVyLmNvbnN0QmVnaW4oKSwgY29udGFpbmVyLmNvbnN0
RW5kKCksIHZhbHVlLCBxTGVzczxUPigpKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJ
dGVyYXRvcj4KIHZvaWQgcURlbGV0ZUFsbChGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJ
dGVyYXRvciBlbmQpCnsKICAgIHdoaWxlIChiZWdpbiAhPSBlbmQpIHsKICAgICAgICBkZWxldGUg
KmJlZ2luOwogICAgICAgICsrYmVnaW47CiAgICB9Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBDb250
YWluZXI+CmlubGluZSB2b2lkIHFEZWxldGVBbGwoY29uc3QgQ29udGFpbmVyICZjKQp7CiAgICBx
RGVsZXRlQWxsKGMuYmVnaW4oKSwgYy5lbmQoKSk7Cn0KCgoKCgpuYW1lc3BhY2UgUUFsZ29yaXRo
bXNQcml2YXRlIHsKCnRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlw
ZW5hbWUgVCwgdHlwZW5hbWUgTGVzc1RoYW4+CiB2b2lkIHFTb3J0SGVscGVyKFJhbmRvbUFjY2Vz
c0l0ZXJhdG9yIHN0YXJ0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciBlbmQsIGNvbnN0IFQgJnQsIExl
c3NUaGFuIGxlc3NUaGFuKQp7CnRvcDoKICAgIGludCBzcGFuID0gaW50KGVuZCAtIHN0YXJ0KTsK
ICAgIGlmIChzcGFuIDwgMikKICAgICAgICByZXR1cm47CgogICAgLS1lbmQ7CiAgICBSYW5kb21B
Y2Nlc3NJdGVyYXRvciBsb3cgPSBzdGFydCwgaGlnaCA9IGVuZCAtIDE7CiAgICBSYW5kb21BY2Nl
c3NJdGVyYXRvciBwaXZvdCA9IHN0YXJ0ICsgc3BhbiAvIDI7CgogICAgaWYgKGxlc3NUaGFuKCpl
bmQsICpzdGFydCkpCiAgICAgICAgcVN3YXAoKmVuZCwgKnN0YXJ0KTsKICAgIGlmIChzcGFuID09
IDIpCiAgICAgICAgcmV0dXJuOwoKICAgIGlmIChsZXNzVGhhbigqcGl2b3QsICpzdGFydCkpCiAg
ICAgICAgcVN3YXAoKnBpdm90LCAqc3RhcnQpOwogICAgaWYgKGxlc3NUaGFuKCplbmQsICpwaXZv
dCkpCiAgICAgICAgcVN3YXAoKmVuZCwgKnBpdm90KTsKICAgIGlmIChzcGFuID09IDMpCiAgICAg
ICAgcmV0dXJuOwoKICAgIHFTd2FwKCpwaXZvdCwgKmVuZCk7CgogICAgd2hpbGUgKGxvdyA8IGhp
Z2gpIHsKICAgICAgICB3aGlsZSAobG93IDwgaGlnaCAmJiBsZXNzVGhhbigqbG93LCAqZW5kKSkK
ICAgICAgICAgICAgKytsb3c7CgogICAgICAgIHdoaWxlIChoaWdoID4gbG93ICYmIGxlc3NUaGFu
KCplbmQsICpoaWdoKSkKICAgICAgICAgICAgLS1oaWdoOwoKICAgICAgICBpZiAobG93IDwgaGln
aCkgewogICAgICAgICAgICBxU3dhcCgqbG93LCAqaGlnaCk7CiAgICAgICAgICAgICsrbG93Owog
ICAgICAgICAgICAtLWhpZ2g7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgfQogICAgfQoKICAgIGlmIChsZXNzVGhhbigqbG93LCAqZW5kKSkKICAgICAgICArK2xv
dzsKCiAgICBxU3dhcCgqZW5kLCAqbG93KTsKICAgIHFTb3J0SGVscGVyKHN0YXJ0LCBsb3csIHQs
IGxlc3NUaGFuKTsKCiAgICBzdGFydCA9IGxvdyArIDE7CiAgICArK2VuZDsKICAgIGdvdG8gdG9w
Owp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIFQ+
CmlubGluZSB2b2lkIHFTb3J0SGVscGVyKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGJlZ2luLCBSYW5k
b21BY2Nlc3NJdGVyYXRvciBlbmQsIGNvbnN0IFQgJmR1bW15KQp7CiAgICBxU29ydEhlbHBlcihi
ZWdpbiwgZW5kLCBkdW1teSwgcUxlc3M8VD4oKSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBSYW5k
b21BY2Nlc3NJdGVyYXRvcj4KIHZvaWQgcVJldmVyc2UoUmFuZG9tQWNjZXNzSXRlcmF0b3IgYmVn
aW4sIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGVuZCkKewogICAgLS1lbmQ7CiAgICB3aGlsZSAoYmVn
aW4gPCBlbmQpCiAgICAgICAgcVN3YXAoKmJlZ2luKyssICplbmQtLSk7Cn0KCnRlbXBsYXRlIDx0
eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KIHZvaWQgcVJvdGF0ZShSYW5kb21BY2Nlc3NJ
dGVyYXRvciBiZWdpbiwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbWlkZGxlLCBSYW5kb21BY2Nlc3NJ
dGVyYXRvciBlbmQpCnsKICAgIHFSZXZlcnNlKGJlZ2luLCBtaWRkbGUpOwogICAgcVJldmVyc2Uo
bWlkZGxlLCBlbmQpOwogICAgcVJldmVyc2UoYmVnaW4sIGVuZCk7Cn0KCnRlbXBsYXRlIDx0eXBl
bmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgTGVzc1RoYW4+
CiB2b2lkIHFNZXJnZShSYW5kb21BY2Nlc3NJdGVyYXRvciBiZWdpbiwgUmFuZG9tQWNjZXNzSXRl
cmF0b3IgcGl2b3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGVuZCwgVCAmdCwgTGVzc1RoYW4gbGVz
c1RoYW4pCnsKICAgIGNvbnN0IGludCBsZW4xID0gcGl2b3QgLSBiZWdpbjsKICAgIGNvbnN0IGlu
dCBsZW4yID0gZW5kIC0gcGl2b3Q7CgogICAgaWYgKGxlbjEgPT0gMCB8fCBsZW4yID09IDApCiAg
ICAgICAgcmV0dXJuOwoKICAgIGlmIChsZW4xICsgbGVuMiA9PSAyKSB7CiAgICAgICAgaWYgKGxl
c3NUaGFuKCooYmVnaW4gKyAxKSwgKihiZWdpbikpKQogICAgICAgICAgICBxU3dhcCgqYmVnaW4s
ICooYmVnaW4gKyAxKSk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIFJhbmRvbUFjY2Vzc0l0
ZXJhdG9yIGZpcnN0Q3V0OwogICAgUmFuZG9tQWNjZXNzSXRlcmF0b3Igc2Vjb25kQ3V0OwogICAg
aW50IGxlbjJIYWxmOwogICAgaWYgKGxlbjEgPiBsZW4yKSB7CiAgICAgICAgY29uc3QgaW50IGxl
bjFIYWxmID0gbGVuMSAvIDI7CiAgICAgICAgZmlyc3RDdXQgPSBiZWdpbiArIGxlbjFIYWxmOwog
ICAgICAgIHNlY29uZEN1dCA9IHFMb3dlckJvdW5kKHBpdm90LCBlbmQsICpmaXJzdEN1dCwgbGVz
c1RoYW4pOwogICAgICAgIGxlbjJIYWxmID0gc2Vjb25kQ3V0IC0gcGl2b3Q7CiAgICB9IGVsc2Ug
ewogICAgICAgIGxlbjJIYWxmID0gbGVuMiAvIDI7CiAgICAgICAgc2Vjb25kQ3V0ID0gcGl2b3Qg
KyBsZW4ySGFsZjsKICAgICAgICBmaXJzdEN1dCA9IHFVcHBlckJvdW5kKGJlZ2luLCBwaXZvdCwg
KnNlY29uZEN1dCwgbGVzc1RoYW4pOwogICAgfQoKICAgIHFSb3RhdGUoZmlyc3RDdXQsIHBpdm90
LCBzZWNvbmRDdXQpOwogICAgY29uc3QgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbmV3UGl2b3QgPSBm
aXJzdEN1dCArIGxlbjJIYWxmOwogICAgcU1lcmdlKGJlZ2luLCBmaXJzdEN1dCwgbmV3UGl2b3Qs
IHQsIGxlc3NUaGFuKTsKICAgIHFNZXJnZShuZXdQaXZvdCwgc2Vjb25kQ3V0LCBlbmQsIHQsIGxl
c3NUaGFuKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBl
bmFtZSBULCB0eXBlbmFtZSBMZXNzVGhhbj4KIHZvaWQgcVN0YWJsZVNvcnRIZWxwZXIoUmFuZG9t
QWNjZXNzSXRlcmF0b3IgYmVnaW4sIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGVuZCwgY29uc3QgVCAm
dCwgTGVzc1RoYW4gbGVzc1RoYW4pCnsKICAgIGNvbnN0IGludCBzcGFuID0gZW5kIC0gYmVnaW47
CiAgICBpZiAoc3BhbiA8IDIpCiAgICAgICByZXR1cm47CgogICAgY29uc3QgUmFuZG9tQWNjZXNz
SXRlcmF0b3IgbWlkZGxlID0gYmVnaW4gKyBzcGFuIC8gMjsKICAgIHFTdGFibGVTb3J0SGVscGVy
KGJlZ2luLCBtaWRkbGUsIHQsIGxlc3NUaGFuKTsKICAgIHFTdGFibGVTb3J0SGVscGVyKG1pZGRs
ZSwgZW5kLCB0LCBsZXNzVGhhbik7CiAgICBxTWVyZ2UoYmVnaW4sIG1pZGRsZSwgZW5kLCB0LCBs
ZXNzVGhhbik7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlw
ZW5hbWUgVD4KaW5saW5lIHZvaWQgcVN0YWJsZVNvcnRIZWxwZXIoUmFuZG9tQWNjZXNzSXRlcmF0
b3IgYmVnaW4sIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGVuZCwgY29uc3QgVCAmZHVtbXkpCnsKICAg
IHFTdGFibGVTb3J0SGVscGVyKGJlZ2luLCBlbmQsIGR1bW15LCBxTGVzczxUPigpKTsKfQoKdGVt
cGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFt
ZSBMZXNzVGhhbj4KIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIHFMb3dlckJvdW5kSGVscGVyKFJhbmRv
bUFjY2Vzc0l0ZXJhdG9yIGJlZ2luLCBSYW5kb21BY2Nlc3NJdGVyYXRvciBlbmQsIGNvbnN0IFQg
JnZhbHVlLCBMZXNzVGhhbiBsZXNzVGhhbikKewogICAgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbWlk
ZGxlOwogICAgaW50IG4gPSBpbnQoZW5kIC0gYmVnaW4pOwogICAgaW50IGhhbGY7CgogICAgd2hp
bGUgKG4gPiAwKSB7CiAgICAgICAgaGFsZiA9IG4gPj4gMTsKICAgICAgICBtaWRkbGUgPSBiZWdp
biArIGhhbGY7CiAgICAgICAgaWYgKGxlc3NUaGFuKCptaWRkbGUsIHZhbHVlKSkgewogICAgICAg
ICAgICBiZWdpbiA9IG1pZGRsZSArIDE7CiAgICAgICAgICAgIG4gLT0gaGFsZiArIDE7CiAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgbiA9IGhhbGY7CiAgICAgICAgfQogICAgfQogICAgcmV0
dXJuIGJlZ2luOwp9CgoKdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0
eXBlbmFtZSBULCB0eXBlbmFtZSBMZXNzVGhhbj4KIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIHFVcHBl
ckJvdW5kSGVscGVyKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGJlZ2luLCBSYW5kb21BY2Nlc3NJdGVy
YXRvciBlbmQsIGNvbnN0IFQgJnZhbHVlLCBMZXNzVGhhbiBsZXNzVGhhbikKewogICAgUmFuZG9t
QWNjZXNzSXRlcmF0b3IgbWlkZGxlOwogICAgaW50IG4gPSBlbmQgLSBiZWdpbjsKICAgIGludCBo
YWxmOwoKICAgIHdoaWxlIChuID4gMCkgewogICAgICAgIGhhbGYgPSBuID4+IDE7CiAgICAgICAg
bWlkZGxlID0gYmVnaW4gKyBoYWxmOwogICAgICAgIGlmIChsZXNzVGhhbih2YWx1ZSwgKm1pZGRs
ZSkpIHsKICAgICAgICAgICAgbiA9IGhhbGY7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
YmVnaW4gPSBtaWRkbGUgKyAxOwogICAgICAgICAgICBuIC09IGhhbGYgKyAxOwogICAgICAgIH0K
ICAgIH0KICAgIHJldHVybiBiZWdpbjsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vz
c0l0ZXJhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBMZXNzVGhhbj4KIFJhbmRvbUFjY2Vzc0l0
ZXJhdG9yIHFCaW5hcnlGaW5kSGVscGVyKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGJlZ2luLCBSYW5k
b21BY2Nlc3NJdGVyYXRvciBlbmQsIGNvbnN0IFQgJnZhbHVlLCBMZXNzVGhhbiBsZXNzVGhhbikK
ewogICAgUmFuZG9tQWNjZXNzSXRlcmF0b3IgaXQgPSBxTG93ZXJCb3VuZEhlbHBlcihiZWdpbiwg
ZW5kLCB2YWx1ZSwgbGVzc1RoYW4pOwoKICAgIGlmIChpdCA9PSBlbmQgfHwgbGVzc1RoYW4odmFs
dWUsICppdCkpCiAgICAgICAgcmV0dXJuIGVuZDsKCiAgICByZXR1cm4gaXQ7Cn0KCn0KCgoKCiMg
NDggIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWxpc3QuaCIgMgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9pdGVyYXRvciIgMSAzCiMgNjEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
aXRlcmF0b3IiIDMKI2RlZmluZSBfR0xJQkNYWF9JVEVSQVRPUiAxCgogICAgICAgCiMgNjQgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvaXRlcmF0b3IiIDMKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL29zdHJlYW0iIDEgMwojIDQxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL29zdHJl
YW0iIDMKI2RlZmluZSBfR0xJQkNYWF9PU1RSRUFNIDEKCiAgICAgICAKIyA0NCAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9vc3RyZWFtIiAzCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaW9z
IiAxIDMKIyAzOSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pb3MiIDMKI2RlZmluZSBfR0xJQkNY
WF9JT1MgMQoKICAgICAgIAojIDQyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2lvcyIgMwoKCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZWZ3ZC5oIiAxIDMKIyA0MSAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZWZ3ZC5oIiAzCiNkZWZpbmUgX0xPQ0FM
RV9GV0RfSCAxCgogICAgICAgCiMgNDQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2Nh
bGVmd2QuaCIgMwoKCgoKCgpuYW1lc3BhY2Ugc3RkIHsKCgogIGNsYXNzIGxvY2FsZTsKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc3NwYWNlKF9DaGFy
VCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGlu
ZSBib29sCiAgICBpc3ByaW50KF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc2NudHJsKF9DaGFyVCwgY29uc3Qg
bG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAg
ICBpc3VwcGVyKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc2xvd2VyKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc2FscGhh
KF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAg
IGlubGluZSBib29sCiAgICBpc2RpZ2l0KF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc3B1bmN0KF9DaGFyVCwg
Y29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBi
b29sCiAgICBpc3hkaWdpdChfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgYm9vbAogICAgaXNhbG51bShfQ2hhclQsIGNvbnN0IGxv
Y2FsZSYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgYm9vbAogICAg
aXNncmFwaChfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQ+CiAgICBpbmxpbmUgX0NoYXJUCiAgICB0b3VwcGVyKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBfQ2hhclQKICAgIHRvbG93
ZXIoX0NoYXJULCBjb25zdCBsb2NhbGUmKTsKCgogIGNsYXNzIGN0eXBlX2Jhc2U7CiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY2xhc3MgY3R5cGU7CiAgdGVtcGxhdGU8PiBjbGFzcyBj
dHlwZTxjaGFyPjsKCiAgdGVtcGxhdGU8PiBjbGFzcyBjdHlwZTx3Y2hhcl90PjsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY2xhc3MgY3R5cGVfYnluYW1lOwoKCiAgY2xhc3MgY29k
ZWN2dF9iYXNlOwogIGNsYXNzIF9fZW5jX3RyYWl0czsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50
ZXJuVCwgdHlwZW5hbWUgX0V4dGVyblQsIHR5cGVuYW1lIF9TdGF0ZVQ+CiAgICBjbGFzcyBjb2Rl
Y3Z0OwogIHRlbXBsYXRlPD4gY2xhc3MgY29kZWN2dDxjaGFyLCBjaGFyLCBtYnN0YXRlX3Q+OwoK
ICB0ZW1wbGF0ZTw+IGNsYXNzIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90PjsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ludGVyblQsIHR5cGVuYW1lIF9FeHRlcm5ULCB0eXBlbmFtZSBf
U3RhdGVUPgogICAgY2xhc3MgY29kZWN2dF9ieW5hbWU7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyID0gaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4K
ICAgIGNsYXNzIG51bV9nZXQ7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
T3V0SXRlciA9IG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBudW1fcHV0
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+IGNsYXNzIG51bXB1bmN0OwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVD4gY2xhc3MgbnVtcHVuY3RfYnluYW1lOwoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJUPgogICAgY2xhc3MgY29sbGF0ZTsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQ+IGNsYXNzCiAgICBjb2xsYXRlX2J5bmFtZTsKCgogIGNsYXNzIHRpbWVfYmFzZTsKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXIgPSBpc3RyZWFtYnVmX2l0ZXJh
dG9yPF9DaGFyVD4gPgogICAgY2xhc3MgdGltZV9nZXQ7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfSW5JdGVyID0gaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAg
IGNsYXNzIHRpbWVfZ2V0X2J5bmFtZTsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9PdXRJdGVyID0gb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIHRp
bWVfcHV0OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXIgPSBv
c3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgdGltZV9wdXRfYnluYW1lOwoK
CiAgY2xhc3MgbW9uZXlfYmFzZTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfSW5JdGVyID0gaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG1vbmV5
X2dldDsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyID0gb3N0
cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG1vbmV5X3B1dDsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCBib29sIF9JbnRsID0gZmFsc2U+CiAgICBjbGFzcyBtb25leXB1
bmN0OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgYm9vbCBfSW50bCA9IGZhbHNlPgogICAg
Y2xhc3MgbW9uZXlwdW5jdF9ieW5hbWU7CgoKICBjbGFzcyBtZXNzYWdlc19iYXNlOwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIG1lc3NhZ2VzOwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVD4KICAgIGNsYXNzIG1lc3NhZ2VzX2J5bmFtZTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZhY2V0PgogICAgYm9vbAogICAgaGFzX2ZhY2V0KGNvbnN0IGxvY2FsZSYgX19sb2MpIHRo
cm93KCk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgIGNvbnN0IF9GYWNldCYKICAg
IHVzZV9mYWNldChjb25zdCBsb2NhbGUmIF9fbG9jKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zh
Y2V0PgogICAgaW5saW5lIGNvbnN0IF9GYWNldCYKICAgIF9fY2hlY2tfZmFjZXQoY29uc3QgX0Zh
Y2V0KiBfX2YpCiAgICB7CiAgICAgIGlmICghX19mKQogX190aHJvd19iYWRfY2FzdCgpOwogICAg
ICByZXR1cm4gKl9fZjsKICAgIH0KCn0KIyA0OCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pb3Mi
IDIgMwojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9pb3NfYmFzZS5oIiAxIDMKIyA0
MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2lvc19iYXNlLmgiIDMKI2RlZmluZSBfSU9T
X0JBU0VfSCAxCgogICAgICAgCiMgNDQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9pb3Nf
YmFzZS5oIiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9jbGFz
c2VzLmgiIDEgMwojIDQxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2NsYXNz
ZXMuaCIgMwojZGVmaW5lIF9MT0NBTEVfQ0xBU1NFU19IIDEKCiAgICAgICAKIyA0NCAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKCgoKCgoKbmFtZXNwYWNl
IHN0ZCB7CiMgNjYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfY2xhc3Nlcy5o
IiAzCiAgY2xhc3MgbG9jYWxlCiAgewogIHB1YmxpYzoKCgogICAgdHlwZWRlZiBpbnQgY2F0ZWdv
cnk7CgoKICAgIGNsYXNzIGZhY2V0OwogICAgY2xhc3MgaWQ7CiAgICBjbGFzcyBfSW1wbDsKCiAg
ICBmcmllbmQgY2xhc3MgZmFjZXQ7CiAgICBmcmllbmQgY2xhc3MgX0ltcGw7CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZhY2V0PgogICAgICBmcmllbmQgYm9vbAogICAgICBoYXNfZmFjZXQoY29u
c3QgbG9jYWxlJikgdGhyb3coKTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+CiAgICAg
IGZyaWVuZCBjb25zdCBfRmFjZXQmCiAgICAgIHVzZV9mYWNldChjb25zdCBsb2NhbGUmKTsKCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2FjaGU+CiAgICAgIGZyaWVuZCBzdHJ1Y3QgX191c2VfY2Fj
aGU7CiMgMTA0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIg
MwogICAgc3RhdGljIGNvbnN0IGNhdGVnb3J5IG5vbmUgPSAwOwogICAgc3RhdGljIGNvbnN0IGNh
dGVnb3J5IGN0eXBlID0gMUwgPDwgMDsKICAgIHN0YXRpYyBjb25zdCBjYXRlZ29yeSBudW1lcmlj
ID0gMUwgPDwgMTsKICAgIHN0YXRpYyBjb25zdCBjYXRlZ29yeSBjb2xsYXRlID0gMUwgPDwgMjsK
ICAgIHN0YXRpYyBjb25zdCBjYXRlZ29yeSB0aW1lID0gMUwgPDwgMzsKICAgIHN0YXRpYyBjb25z
dCBjYXRlZ29yeSBtb25ldGFyeSA9IDFMIDw8IDQ7CiAgICBzdGF0aWMgY29uc3QgY2F0ZWdvcnkg
bWVzc2FnZXMgPSAxTCA8PCA1OwogICAgc3RhdGljIGNvbnN0IGNhdGVnb3J5IGFsbCA9IChjdHlw
ZSB8IG51bWVyaWMgfCBjb2xsYXRlIHwKICAgICAgICB0aW1lIHwgbW9uZXRhcnkgfCBtZXNzYWdl
cyk7CiMgMTIzICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIg
MwogICAgbG9jYWxlKCkgdGhyb3coKTsKIyAxMzIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0
cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAgICBsb2NhbGUoY29uc3QgbG9jYWxlJiBfX290aGVyKSB0
aHJvdygpOwojIDE0MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9jbGFzc2Vz
LmgiIDMKICAgIGV4cGxpY2l0CiAgICBsb2NhbGUoY29uc3QgY2hhciogX19zKTsKIyAxNTcgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAgICBsb2NhbGUo
Y29uc3QgbG9jYWxlJiBfX2Jhc2UsIGNvbnN0IGNoYXIqIF9fcywgY2F0ZWdvcnkgX19jYXQpOwoj
IDE3MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAg
IGxvY2FsZShjb25zdCBsb2NhbGUmIF9fYmFzZSwgY29uc3QgbG9jYWxlJiBfX2FkZCwgY2F0ZWdv
cnkgX19jYXQpOwojIDE4MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9jbGFz
c2VzLmgiIDMKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgICAgbG9jYWxlKGNvbnN0
IGxvY2FsZSYgX19vdGhlciwgX0ZhY2V0KiBfX2YpOwoKCiAgICB+bG9jYWxlKCkgdGhyb3coKTsK
IyAxOTYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAg
ICBjb25zdCBsb2NhbGUmCiAgICBvcGVyYXRvcj0oY29uc3QgbG9jYWxlJiBfX290aGVyKSB0aHJv
dygpOwojIDIxMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9jbGFzc2VzLmgi
IDMKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgICAgbG9jYWxlCiAgICAgIGNvbWJp
bmUoY29uc3QgbG9jYWxlJiBfX290aGVyKSBjb25zdDsKCgoKCgoKICAgIHN0cmluZwogICAgbmFt
ZSgpIGNvbnN0OwojIDIzMCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9jbGFz
c2VzLmgiIDMKICAgIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgbG9jYWxlJiBfX290aGVyKSBj
b25zdCB0aHJvdyAoKTsKCgoKCgoKCiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25z
dCBsb2NhbGUmIF9fb3RoZXIpIGNvbnN0IHRocm93ICgpCiAgICB7IHJldHVybiAhKHRoaXMtPm9w
ZXJhdG9yPT0oX19vdGhlcikpOyB9CiMgMjU4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMv
bG9jYWxlX2NsYXNzZXMuaCIgMwogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXIsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNv
bnN0IGJhc2ljX3N0cmluZzxfQ2hhciwgX1RyYWl0cywgX0FsbG9jPiYgX19zMSwKICAgY29uc3Qg
YmFzaWNfc3RyaW5nPF9DaGFyLCBfVHJhaXRzLCBfQWxsb2M+JiBfX3MyKSBjb25zdDsKIyAyNzQg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAgICBzdGF0
aWMgbG9jYWxlCiAgICBnbG9iYWwoY29uc3QgbG9jYWxlJik7CgoKCgogICAgc3RhdGljIGNvbnN0
IGxvY2FsZSYKICAgIGNsYXNzaWMoKTsKCiAgcHJpdmF0ZToKCiAgICBfSW1wbCogX01faW1wbDsK
CgogICAgc3RhdGljIF9JbXBsKiBfU19jbGFzc2ljOwoKCiAgICBzdGF0aWMgX0ltcGwqIF9TX2ds
b2JhbDsKCgoKCgogICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0KiBjb25zdCBfU19jYXRlZ29y
aWVzOwojIDMwOSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9jbGFzc2VzLmgi
IDMKICAgIGVudW0geyBfU19jYXRlZ29yaWVzX3NpemUgPSA2ICsgMCB9OwoKCiAgICBzdGF0aWMg
X19ndGhyZWFkX29uY2VfdCBfU19vbmNlOwoKCiAgICBleHBsaWNpdAogICAgbG9jYWxlKF9JbXBs
KikgdGhyb3coKTsKCiAgICBzdGF0aWMgdm9pZAogICAgX1NfaW5pdGlhbGl6ZSgpOwoKICAgIHN0
YXRpYyB2b2lkCiAgICBfU19pbml0aWFsaXplX29uY2UoKTsKCiAgICBzdGF0aWMgY2F0ZWdvcnkK
ICAgIF9TX25vcm1hbGl6ZV9jYXRlZ29yeShjYXRlZ29yeSk7CgogICAgdm9pZAogICAgX01fY29h
bGVzY2UoY29uc3QgbG9jYWxlJiBfX2Jhc2UsIGNvbnN0IGxvY2FsZSYgX19hZGQsIGNhdGVnb3J5
IF9fY2F0KTsKICB9OwojIDM0MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9j
bGFzc2VzLmgiIDMKICBjbGFzcyBsb2NhbGU6OmZhY2V0CiAgewogIHByaXZhdGU6CiAgICBmcmll
bmQgY2xhc3MgbG9jYWxlOwogICAgZnJpZW5kIGNsYXNzIGxvY2FsZTo6X0ltcGw7CgogICAgbXV0
YWJsZSBfQXRvbWljX3dvcmQgX01fcmVmY291bnQ7CgoKICAgIHN0YXRpYyBfX2NfbG9jYWxlIF9T
X2NfbG9jYWxlOwoKCiAgICBzdGF0aWMgY29uc3QgY2hhciBfU19jX25hbWVbMl07CgoKICAgIHN0
YXRpYyBfX2d0aHJlYWRfb25jZV90IF9TX29uY2U7CgoKICAgIHN0YXRpYyB2b2lkCiAgICBfU19p
bml0aWFsaXplX29uY2UoKTsKCiAgcHJvdGVjdGVkOgojIDM3MyAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgIGV4cGxpY2l0CiAgICBmYWNldChzaXpl
X3QgX19yZWZzID0gMCkgdGhyb3coKSA6IF9NX3JlZmNvdW50KF9fcmVmcyA/IDEgOiAwKQogICAg
eyB9CgoKICAgIHZpcnR1YWwKICAgIH5mYWNldCgpOwoKICAgIHN0YXRpYyB2b2lkCiAgICBfU19j
cmVhdGVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCiAgICAg
ICAgIF9fY19sb2NhbGUgX19vbGQgPSAwKTsKCiAgICBzdGF0aWMgX19jX2xvY2FsZQogICAgX1Nf
Y2xvbmVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKTsKCiAgICBzdGF0aWMgdm9pZAogICAg
X1NfZGVzdHJveV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MpOwoKCgogICAgc3RhdGljIF9f
Y19sb2NhbGUKICAgIF9TX2dldF9jX2xvY2FsZSgpOwoKICAgIHN0YXRpYyBjb25zdCBjaGFyKgog
ICAgX1NfZ2V0X2NfbmFtZSgpOwoKICBwcml2YXRlOgogICAgaW5saW5lIHZvaWQKICAgIF9NX2Fk
ZF9yZWZlcmVuY2UoKSBjb25zdCB0aHJvdygpCiAgICB7IF9fZ251X2N4eDo6X19hdG9taWNfYWRk
X2Rpc3BhdGNoKCZfTV9yZWZjb3VudCwgMSk7IH0KCiAgICBpbmxpbmUgdm9pZAogICAgX01fcmVt
b3ZlX3JlZmVyZW5jZSgpIGNvbnN0IHRocm93KCkKICAgIHsKICAgICAgaWYgKF9fZ251X2N4eDo6
X19leGNoYW5nZV9hbmRfYWRkX2Rpc3BhdGNoKCZfTV9yZWZjb3VudCwgLTEpID09IDEpCiB7CiAg
IHRyeQogICAgIHsgZGVsZXRlIHRoaXM7IH0KICAgY2F0Y2ggKC4uLikKICAgICB7IH0KIH0KICAg
IH0KCiAgICBmYWNldChjb25zdCBmYWNldCYpOwoKICAgIGZhY2V0JgogICAgb3BlcmF0b3I9KGNv
bnN0IGZhY2V0Jik7CiAgfTsKIyA0MzMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2Nh
bGVfY2xhc3Nlcy5oIiAzCiAgY2xhc3MgbG9jYWxlOjppZAogIHsKICBwcml2YXRlOgogICAgZnJp
ZW5kIGNsYXNzIGxvY2FsZTsKICAgIGZyaWVuZCBjbGFzcyBsb2NhbGU6Ol9JbXBsOwoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgICAgZnJpZW5kIGNvbnN0IF9GYWNldCYKICAgICAg
dXNlX2ZhY2V0KGNvbnN0IGxvY2FsZSYpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4K
ICAgICAgZnJpZW5kIGJvb2wKICAgICAgaGFzX2ZhY2V0KGNvbnN0IGxvY2FsZSYpIHRocm93ICgp
OwoKCgoKICAgIG11dGFibGUgc2l6ZV90IF9NX2luZGV4OwoKCiAgICBzdGF0aWMgX0F0b21pY193
b3JkIF9TX3JlZmNvdW50OwoKICAgIHZvaWQKICAgIG9wZXJhdG9yPShjb25zdCBpZCYpOwoKICAg
IGlkKGNvbnN0IGlkJik7CgogIHB1YmxpYzoKCgoKICAgIGlkKCkgeyB9CgogICAgc2l6ZV90CiAg
ICBfTV9pZCgpIGNvbnN0OwogIH07CgoKCiAgY2xhc3MgbG9jYWxlOjpfSW1wbAogIHsKICBwdWJs
aWM6CgogICAgZnJpZW5kIGNsYXNzIGxvY2FsZTsKICAgIGZyaWVuZCBjbGFzcyBsb2NhbGU6OmZh
Y2V0OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgICAgZnJpZW5kIGJvb2wKICAg
ICAgaGFzX2ZhY2V0KGNvbnN0IGxvY2FsZSYpIHRocm93KCk7CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZhY2V0PgogICAgICBmcmllbmQgY29uc3QgX0ZhY2V0JgogICAgICB1c2VfZmFjZXQoY29u
c3QgbG9jYWxlJik7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NhY2hlPgogICAgICBmcmllbmQg
c3RydWN0IF9fdXNlX2NhY2hlOwoKICBwcml2YXRlOgoKICAgIF9BdG9taWNfd29yZCBfTV9yZWZj
b3VudDsKICAgIGNvbnN0IGZhY2V0KiogX01fZmFjZXRzOwogICAgc2l6ZV90IF9NX2ZhY2V0c19z
aXplOwogICAgY29uc3QgZmFjZXQqKiBfTV9jYWNoZXM7CiAgICBjaGFyKiogX01fbmFtZXM7CiAg
ICBzdGF0aWMgY29uc3QgbG9jYWxlOjppZCogY29uc3QgX1NfaWRfY3R5cGVbXTsKICAgIHN0YXRp
YyBjb25zdCBsb2NhbGU6OmlkKiBjb25zdCBfU19pZF9udW1lcmljW107CiAgICBzdGF0aWMgY29u
c3QgbG9jYWxlOjppZCogY29uc3QgX1NfaWRfY29sbGF0ZVtdOwogICAgc3RhdGljIGNvbnN0IGxv
Y2FsZTo6aWQqIGNvbnN0IF9TX2lkX3RpbWVbXTsKICAgIHN0YXRpYyBjb25zdCBsb2NhbGU6Omlk
KiBjb25zdCBfU19pZF9tb25ldGFyeVtdOwogICAgc3RhdGljIGNvbnN0IGxvY2FsZTo6aWQqIGNv
bnN0IF9TX2lkX21lc3NhZ2VzW107CiAgICBzdGF0aWMgY29uc3QgbG9jYWxlOjppZCogY29uc3Qq
IGNvbnN0IF9TX2ZhY2V0X2NhdGVnb3JpZXNbXTsKCiAgICBpbmxpbmUgdm9pZAogICAgX01fYWRk
X3JlZmVyZW5jZSgpIHRocm93KCkKICAgIHsgX19nbnVfY3h4OjpfX2F0b21pY19hZGRfZGlzcGF0
Y2goJl9NX3JlZmNvdW50LCAxKTsgfQoKICAgIGlubGluZSB2b2lkCiAgICBfTV9yZW1vdmVfcmVm
ZXJlbmNlKCkgdGhyb3coKQogICAgewogICAgICBpZiAoX19nbnVfY3h4OjpfX2V4Y2hhbmdlX2Fu
ZF9hZGRfZGlzcGF0Y2goJl9NX3JlZmNvdW50LCAtMSkgPT0gMSkKIHsKICAgdHJ5CiAgICAgeyBk
ZWxldGUgdGhpczsgfQogICBjYXRjaCguLi4pCiAgICAgeyB9CiB9CiAgICB9CgogICAgX0ltcGwo
Y29uc3QgX0ltcGwmLCBzaXplX3QpOwogICAgX0ltcGwoY29uc3QgY2hhciosIHNpemVfdCk7CiAg
ICBfSW1wbChzaXplX3QpIHRocm93KCk7CgogICB+X0ltcGwoKSB0aHJvdygpOwoKICAgIF9JbXBs
KGNvbnN0IF9JbXBsJik7CgogICAgdm9pZAogICAgb3BlcmF0b3I9KGNvbnN0IF9JbXBsJik7Cgog
ICAgaW5saW5lIGJvb2wKICAgIF9NX2NoZWNrX3NhbWVfbmFtZSgpCiAgICB7CiAgICAgIGJvb2wg
X19yZXQgPSB0cnVlOwogICAgICBpZiAoX01fbmFtZXNbMV0pCgogZm9yIChzaXplX3QgX19pID0g
MDsgX19yZXQgJiYgX19pIDwgX1NfY2F0ZWdvcmllc19zaXplIC0gMTsgKytfX2kpCiAgIF9fcmV0
ID0gc3RkOjpzdHJjbXAoX01fbmFtZXNbX19pXSwgX01fbmFtZXNbX19pICsgMV0pID09IDA7CiAg
ICAgIHJldHVybiBfX3JldDsKICAgIH0KCiAgICB2b2lkCiAgICBfTV9yZXBsYWNlX2NhdGVnb3Jp
ZXMoY29uc3QgX0ltcGwqLCBjYXRlZ29yeSk7CgogICAgdm9pZAogICAgX01fcmVwbGFjZV9jYXRl
Z29yeShjb25zdCBfSW1wbCosIGNvbnN0IGxvY2FsZTo6aWQqIGNvbnN0Kik7CgogICAgdm9pZAog
ICAgX01fcmVwbGFjZV9mYWNldChjb25zdCBfSW1wbCosIGNvbnN0IGxvY2FsZTo6aWQqKTsKCiAg
ICB2b2lkCiAgICBfTV9pbnN0YWxsX2ZhY2V0KGNvbnN0IGxvY2FsZTo6aWQqLCBjb25zdCBmYWNl
dCopOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgICAgaW5saW5lIHZvaWQKICAg
ICAgX01faW5pdF9mYWNldChfRmFjZXQqIF9fZmFjZXQpCiAgICAgIHsgX01faW5zdGFsbF9mYWNl
dCgmX0ZhY2V0OjppZCwgX19mYWNldCk7IH0KCiAgICB2b2lkCiAgICBfTV9pbnN0YWxsX2NhY2hl
KGNvbnN0IGZhY2V0Kiwgc2l6ZV90KTsKICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+
CiAgICBsb2NhbGU6OmxvY2FsZShjb25zdCBsb2NhbGUmIF9fb3RoZXIsIF9GYWNldCogX19mKQog
ICAgewogICAgICBfTV9pbXBsID0gbmV3IF9JbXBsKCpfX290aGVyLl9NX2ltcGwsIDEpOwoKICAg
ICAgdHJ5CiB7IF9NX2ltcGwtPl9NX2luc3RhbGxfZmFjZXQoJl9GYWNldDo6aWQsIF9fZik7IH0K
ICAgICAgY2F0Y2goLi4uKQogewogICBfTV9pbXBsLT5fTV9yZW1vdmVfcmVmZXJlbmNlKCk7CiAg
IHRocm93OwogfQogICAgICBkZWxldGUgW10gX01faW1wbC0+X01fbmFtZXNbMF07CiAgICAgIF9N
X2ltcGwtPl9NX25hbWVzWzBdID0gMDsKICAgIH0KCn0KIyA0OCAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL2lvc19iYXNlLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCB7CgoKCgoKICBlbnVtIF9J
b3NfRm10ZmxhZ3MKICAgIHsKICAgICAgX1NfYm9vbGFscGhhID0gMUwgPDwgMCwKICAgICAgX1Nf
ZGVjID0gMUwgPDwgMSwKICAgICAgX1NfZml4ZWQgPSAxTCA8PCAyLAogICAgICBfU19oZXggPSAx
TCA8PCAzLAogICAgICBfU19pbnRlcm5hbCA9IDFMIDw8IDQsCiAgICAgIF9TX2xlZnQgPSAxTCA8
PCA1LAogICAgICBfU19vY3QgPSAxTCA8PCA2LAogICAgICBfU19yaWdodCA9IDFMIDw8IDcsCiAg
ICAgIF9TX3NjaWVudGlmaWMgPSAxTCA8PCA4LAogICAgICBfU19zaG93YmFzZSA9IDFMIDw8IDks
CiAgICAgIF9TX3Nob3dwb2ludCA9IDFMIDw8IDEwLAogICAgICBfU19zaG93cG9zID0gMUwgPDwg
MTEsCiAgICAgIF9TX3NraXB3cyA9IDFMIDw8IDEyLAogICAgICBfU191bml0YnVmID0gMUwgPDwg
MTMsCiAgICAgIF9TX3VwcGVyY2FzZSA9IDFMIDw8IDE0LAogICAgICBfU19hZGp1c3RmaWVsZCA9
IF9TX2xlZnQgfCBfU19yaWdodCB8IF9TX2ludGVybmFsLAogICAgICBfU19iYXNlZmllbGQgPSBf
U19kZWMgfCBfU19vY3QgfCBfU19oZXgsCiAgICAgIF9TX2Zsb2F0ZmllbGQgPSBfU19zY2llbnRp
ZmljIHwgX1NfZml4ZWQsCiAgICAgIF9TX2lvc19mbXRmbGFnc19lbmQgPSAxTCA8PCAxNgogICAg
fTsKCiAgaW5saW5lIF9Jb3NfRm10ZmxhZ3MKICBvcGVyYXRvciYoX0lvc19GbXRmbGFncyBfX2Es
IF9Jb3NfRm10ZmxhZ3MgX19iKQogIHsgcmV0dXJuIF9Jb3NfRm10ZmxhZ3Moc3RhdGljX2Nhc3Q8
aW50PihfX2EpICYgc3RhdGljX2Nhc3Q8aW50PihfX2IpKTsgfQoKICBpbmxpbmUgX0lvc19GbXRm
bGFncwogIG9wZXJhdG9yfChfSW9zX0ZtdGZsYWdzIF9fYSwgX0lvc19GbXRmbGFncyBfX2IpCiAg
eyByZXR1cm4gX0lvc19GbXRmbGFncyhzdGF0aWNfY2FzdDxpbnQ+KF9fYSkgfCBzdGF0aWNfY2Fz
dDxpbnQ+KF9fYikpOyB9CgogIGlubGluZSBfSW9zX0ZtdGZsYWdzCiAgb3BlcmF0b3JeKF9Jb3Nf
Rm10ZmxhZ3MgX19hLCBfSW9zX0ZtdGZsYWdzIF9fYikKICB7IHJldHVybiBfSW9zX0ZtdGZsYWdz
KHN0YXRpY19jYXN0PGludD4oX19hKSBeIHN0YXRpY19jYXN0PGludD4oX19iKSk7IH0KCiAgaW5s
aW5lIF9Jb3NfRm10ZmxhZ3MmCiAgb3BlcmF0b3J8PShfSW9zX0ZtdGZsYWdzJiBfX2EsIF9Jb3Nf
Rm10ZmxhZ3MgX19iKQogIHsgcmV0dXJuIF9fYSA9IF9fYSB8IF9fYjsgfQoKICBpbmxpbmUgX0lv
c19GbXRmbGFncyYKICBvcGVyYXRvciY9KF9Jb3NfRm10ZmxhZ3MmIF9fYSwgX0lvc19GbXRmbGFn
cyBfX2IpCiAgeyByZXR1cm4gX19hID0gX19hICYgX19iOyB9CgogIGlubGluZSBfSW9zX0ZtdGZs
YWdzJgogIG9wZXJhdG9yXj0oX0lvc19GbXRmbGFncyYgX19hLCBfSW9zX0ZtdGZsYWdzIF9fYikK
ICB7IHJldHVybiBfX2EgPSBfX2EgXiBfX2I7IH0KCiAgaW5saW5lIF9Jb3NfRm10ZmxhZ3MKICBv
cGVyYXRvcn4oX0lvc19GbXRmbGFncyBfX2EpCiAgeyByZXR1cm4gX0lvc19GbXRmbGFncyh+c3Rh
dGljX2Nhc3Q8aW50PihfX2EpKTsgfQoKCiAgZW51bSBfSW9zX09wZW5tb2RlCiAgICB7CiAgICAg
IF9TX2FwcCA9IDFMIDw8IDAsCiAgICAgIF9TX2F0ZSA9IDFMIDw8IDEsCiAgICAgIF9TX2JpbiA9
IDFMIDw8IDIsCiAgICAgIF9TX2luID0gMUwgPDwgMywKICAgICAgX1Nfb3V0ID0gMUwgPDwgNCwK
ICAgICAgX1NfdHJ1bmMgPSAxTCA8PCA1LAogICAgICBfU19pb3Nfb3Blbm1vZGVfZW5kID0gMUwg
PDwgMTYKICAgIH07CgogIGlubGluZSBfSW9zX09wZW5tb2RlCiAgb3BlcmF0b3ImKF9Jb3NfT3Bl
bm1vZGUgX19hLCBfSW9zX09wZW5tb2RlIF9fYikKICB7IHJldHVybiBfSW9zX09wZW5tb2RlKHN0
YXRpY19jYXN0PGludD4oX19hKSAmIHN0YXRpY19jYXN0PGludD4oX19iKSk7IH0KCiAgaW5saW5l
IF9Jb3NfT3Blbm1vZGUKICBvcGVyYXRvcnwoX0lvc19PcGVubW9kZSBfX2EsIF9Jb3NfT3Blbm1v
ZGUgX19iKQogIHsgcmV0dXJuIF9Jb3NfT3Blbm1vZGUoc3RhdGljX2Nhc3Q8aW50PihfX2EpIHwg
c3RhdGljX2Nhc3Q8aW50PihfX2IpKTsgfQoKICBpbmxpbmUgX0lvc19PcGVubW9kZQogIG9wZXJh
dG9yXihfSW9zX09wZW5tb2RlIF9fYSwgX0lvc19PcGVubW9kZSBfX2IpCiAgeyByZXR1cm4gX0lv
c19PcGVubW9kZShzdGF0aWNfY2FzdDxpbnQ+KF9fYSkgXiBzdGF0aWNfY2FzdDxpbnQ+KF9fYikp
OyB9CgogIGlubGluZSBfSW9zX09wZW5tb2RlJgogIG9wZXJhdG9yfD0oX0lvc19PcGVubW9kZSYg
X19hLCBfSW9zX09wZW5tb2RlIF9fYikKICB7IHJldHVybiBfX2EgPSBfX2EgfCBfX2I7IH0KCiAg
aW5saW5lIF9Jb3NfT3Blbm1vZGUmCiAgb3BlcmF0b3ImPShfSW9zX09wZW5tb2RlJiBfX2EsIF9J
b3NfT3Blbm1vZGUgX19iKQogIHsgcmV0dXJuIF9fYSA9IF9fYSAmIF9fYjsgfQoKICBpbmxpbmUg
X0lvc19PcGVubW9kZSYKICBvcGVyYXRvcl49KF9Jb3NfT3Blbm1vZGUmIF9fYSwgX0lvc19PcGVu
bW9kZSBfX2IpCiAgeyByZXR1cm4gX19hID0gX19hIF4gX19iOyB9CgogIGlubGluZSBfSW9zX09w
ZW5tb2RlCiAgb3BlcmF0b3J+KF9Jb3NfT3Blbm1vZGUgX19hKQogIHsgcmV0dXJuIF9Jb3NfT3Bl
bm1vZGUofnN0YXRpY19jYXN0PGludD4oX19hKSk7IH0KCgogIGVudW0gX0lvc19Jb3N0YXRlCiAg
ICB7CiAgICAgIF9TX2dvb2RiaXQgPSAwLAogICAgICBfU19iYWRiaXQgPSAxTCA8PCAwLAogICAg
ICBfU19lb2ZiaXQgPSAxTCA8PCAxLAogICAgICBfU19mYWlsYml0ID0gMUwgPDwgMiwKICAgICAg
X1NfaW9zX2lvc3RhdGVfZW5kID0gMUwgPDwgMTYKICAgIH07CgogIGlubGluZSBfSW9zX0lvc3Rh
dGUKICBvcGVyYXRvciYoX0lvc19Jb3N0YXRlIF9fYSwgX0lvc19Jb3N0YXRlIF9fYikKICB7IHJl
dHVybiBfSW9zX0lvc3RhdGUoc3RhdGljX2Nhc3Q8aW50PihfX2EpICYgc3RhdGljX2Nhc3Q8aW50
PihfX2IpKTsgfQoKICBpbmxpbmUgX0lvc19Jb3N0YXRlCiAgb3BlcmF0b3J8KF9Jb3NfSW9zdGF0
ZSBfX2EsIF9Jb3NfSW9zdGF0ZSBfX2IpCiAgeyByZXR1cm4gX0lvc19Jb3N0YXRlKHN0YXRpY19j
YXN0PGludD4oX19hKSB8IHN0YXRpY19jYXN0PGludD4oX19iKSk7IH0KCiAgaW5saW5lIF9Jb3Nf
SW9zdGF0ZQogIG9wZXJhdG9yXihfSW9zX0lvc3RhdGUgX19hLCBfSW9zX0lvc3RhdGUgX19iKQog
IHsgcmV0dXJuIF9Jb3NfSW9zdGF0ZShzdGF0aWNfY2FzdDxpbnQ+KF9fYSkgXiBzdGF0aWNfY2Fz
dDxpbnQ+KF9fYikpOyB9CgogIGlubGluZSBfSW9zX0lvc3RhdGUmCiAgb3BlcmF0b3J8PShfSW9z
X0lvc3RhdGUmIF9fYSwgX0lvc19Jb3N0YXRlIF9fYikKICB7IHJldHVybiBfX2EgPSBfX2EgfCBf
X2I7IH0KCiAgaW5saW5lIF9Jb3NfSW9zdGF0ZSYKICBvcGVyYXRvciY9KF9Jb3NfSW9zdGF0ZSYg
X19hLCBfSW9zX0lvc3RhdGUgX19iKQogIHsgcmV0dXJuIF9fYSA9IF9fYSAmIF9fYjsgfQoKICBp
bmxpbmUgX0lvc19Jb3N0YXRlJgogIG9wZXJhdG9yXj0oX0lvc19Jb3N0YXRlJiBfX2EsIF9Jb3Nf
SW9zdGF0ZSBfX2IpCiAgeyByZXR1cm4gX19hID0gX19hIF4gX19iOyB9CgogIGlubGluZSBfSW9z
X0lvc3RhdGUKICBvcGVyYXRvcn4oX0lvc19Jb3N0YXRlIF9fYSkKICB7IHJldHVybiBfSW9zX0lv
c3RhdGUofnN0YXRpY19jYXN0PGludD4oX19hKSk7IH0KCiAgZW51bSBfSW9zX1NlZWtkaXIKICAg
IHsKICAgICAgX1NfYmVnID0gMCwKICAgICAgX1NfY3VyID0gMSwKICAgICAgX1NfZW5kID0gMiwK
ICAgICAgX1NfaW9zX3NlZWtkaXJfZW5kID0gMUwgPDwgMTYKICAgIH07CiMgMjAxICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvaW9zX2Jhc2UuaCIgMwogIGNsYXNzIGlvc19iYXNlCiAgewog
IHB1YmxpYzoKCgoKICAgIGNsYXNzIGZhaWx1cmUgOiBwdWJsaWMgZXhjZXB0aW9uCiAgICB7CiAg
ICBwdWJsaWM6CgoKICAgICAgZXhwbGljaXQKICAgICAgZmFpbHVyZShjb25zdCBzdHJpbmcmIF9f
c3RyKSB0aHJvdygpOwoKCgogICAgICB2aXJ0dWFsCiAgICAgIH5mYWlsdXJlKCkgdGhyb3coKTsK
CiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcioKICAgICAgd2hhdCgpIGNvbnN0IHRocm93KCk7Cgog
ICAgcHJpdmF0ZToKICAgICAgc3RyaW5nIF9NX21zZzsKICAgIH07CiMgMjUzICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAgdHlwZWRlZiBfSW9zX0ZtdGZsYWdz
IGZtdGZsYWdzOwoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3MgYm9vbGFscGhhID0gX1NfYm9v
bGFscGhhOwoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3MgZGVjID0gX1NfZGVjOwoKCiAgICBz
dGF0aWMgY29uc3QgZm10ZmxhZ3MgZml4ZWQgPSBfU19maXhlZDsKCgogICAgc3RhdGljIGNvbnN0
IGZtdGZsYWdzIGhleCA9IF9TX2hleDsKCgoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3MgaW50
ZXJuYWwgPSBfU19pbnRlcm5hbDsKCgoKICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyBsZWZ0ID0g
X1NfbGVmdDsKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIG9jdCA9IF9TX29jdDsKCgoKICAg
IHN0YXRpYyBjb25zdCBmbXRmbGFncyByaWdodCA9IF9TX3JpZ2h0OwoKCiAgICBzdGF0aWMgY29u
c3QgZm10ZmxhZ3Mgc2NpZW50aWZpYyA9IF9TX3NjaWVudGlmaWM7CgoKCiAgICBzdGF0aWMgY29u
c3QgZm10ZmxhZ3Mgc2hvd2Jhc2UgPSBfU19zaG93YmFzZTsKCgoKICAgIHN0YXRpYyBjb25zdCBm
bXRmbGFncyBzaG93cG9pbnQgPSBfU19zaG93cG9pbnQ7CgoKICAgIHN0YXRpYyBjb25zdCBmbXRm
bGFncyBzaG93cG9zID0gX1Nfc2hvd3BvczsKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIHNr
aXB3cyA9IF9TX3NraXB3czsKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIHVuaXRidWYgPSBf
U191bml0YnVmOwoKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIHVwcGVyY2FzZSA9IF9TX3Vw
cGVyY2FzZTsKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIGFkanVzdGZpZWxkID0gX1NfYWRq
dXN0ZmllbGQ7CgoKICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyBiYXNlZmllbGQgPSBfU19iYXNl
ZmllbGQ7CgoKICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyBmbG9hdGZpZWxkID0gX1NfZmxvYXRm
aWVsZDsKIyAzMjggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9pb3NfYmFzZS5oIiAzCiAg
ICB0eXBlZGVmIF9Jb3NfSW9zdGF0ZSBpb3N0YXRlOwoKCgogICAgc3RhdGljIGNvbnN0IGlvc3Rh
dGUgYmFkYml0ID0gX1NfYmFkYml0OwoKCiAgICBzdGF0aWMgY29uc3QgaW9zdGF0ZSBlb2ZiaXQg
PSBfU19lb2ZiaXQ7CgoKCgogICAgc3RhdGljIGNvbnN0IGlvc3RhdGUgZmFpbGJpdCA9IF9TX2Zh
aWxiaXQ7CgoKICAgIHN0YXRpYyBjb25zdCBpb3N0YXRlIGdvb2RiaXQgPSBfU19nb29kYml0Owoj
IDM1OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2lvc19iYXNlLmgiIDMKICAgIHR5cGVk
ZWYgX0lvc19PcGVubW9kZSBvcGVubW9kZTsKCgogICAgc3RhdGljIGNvbnN0IG9wZW5tb2RlIGFw
cCA9IF9TX2FwcDsKCgogICAgc3RhdGljIGNvbnN0IG9wZW5tb2RlIGF0ZSA9IF9TX2F0ZTsKCgoK
CgogICAgc3RhdGljIGNvbnN0IG9wZW5tb2RlIGJpbmFyeSA9IF9TX2JpbjsKCgogICAgc3RhdGlj
IGNvbnN0IG9wZW5tb2RlIGluID0gX1NfaW47CgoKICAgIHN0YXRpYyBjb25zdCBvcGVubW9kZSBv
dXQgPSBfU19vdXQ7CgoKICAgIHN0YXRpYyBjb25zdCBvcGVubW9kZSB0cnVuYyA9IF9TX3RydW5j
OwojIDM5MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2lvc19iYXNlLmgiIDMKICAgIHR5
cGVkZWYgX0lvc19TZWVrZGlyIHNlZWtkaXI7CgoKICAgIHN0YXRpYyBjb25zdCBzZWVrZGlyIGJl
ZyA9IF9TX2JlZzsKCgogICAgc3RhdGljIGNvbnN0IHNlZWtkaXIgY3VyID0gX1NfY3VyOwoKCiAg
ICBzdGF0aWMgY29uc3Qgc2Vla2RpciBlbmQgPSBfU19lbmQ7CgoKICAgIHR5cGVkZWYgaW50IGlv
X3N0YXRlOwogICAgdHlwZWRlZiBpbnQgb3Blbl9tb2RlOwogICAgdHlwZWRlZiBpbnQgc2Vla19k
aXI7CgogICAgdHlwZWRlZiBzdGQ6OnN0cmVhbXBvcyBzdHJlYW1wb3M7CiAgICB0eXBlZGVmIHN0
ZDo6c3RyZWFtb2ZmIHN0cmVhbW9mZjsKIyA0MTggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0
cy9pb3NfYmFzZS5oIiAzCiAgICBlbnVtIGV2ZW50CiAgICB7CiAgICAgIGVyYXNlX2V2ZW50LAog
ICAgICBpbWJ1ZV9ldmVudCwKICAgICAgY29weWZtdF9ldmVudAogICAgfTsKIyA0MzUgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvYml0cy9pb3NfYmFzZS5oIiAzCiAgICB0eXBlZGVmIHZvaWQgKCpl
dmVudF9jYWxsYmFjaykgKGV2ZW50LCBpb3NfYmFzZSYsIGludCk7CiMgNDQ3ICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAgdm9pZAogICAgcmVnaXN0ZXJfY2Fs
bGJhY2soZXZlbnRfY2FsbGJhY2sgX19mbiwgaW50IF9faW5kZXgpOwoKICBwcm90ZWN0ZWQ6CgoK
CgoKCiAgICBzdHJlYW1zaXplIF9NX3ByZWNpc2lvbjsKICAgIHN0cmVhbXNpemUgX01fd2lkdGg7
CiAgICBmbXRmbGFncyBfTV9mbGFnczsKICAgIGlvc3RhdGUgX01fZXhjZXB0aW9uOwogICAgaW9z
dGF0ZSBfTV9zdHJlYW1idWZfc3RhdGU7CgoKCgogICAgc3RydWN0IF9DYWxsYmFja19saXN0CiAg
ICB7CgogICAgICBfQ2FsbGJhY2tfbGlzdCogX01fbmV4dDsKICAgICAgaW9zX2Jhc2U6OmV2ZW50
X2NhbGxiYWNrIF9NX2ZuOwogICAgICBpbnQgX01faW5kZXg7CiAgICAgIF9BdG9taWNfd29yZCBf
TV9yZWZjb3VudDsKCiAgICAgIF9DYWxsYmFja19saXN0KGlvc19iYXNlOjpldmVudF9jYWxsYmFj
ayBfX2ZuLCBpbnQgX19pbmRleCwKICAgICAgIF9DYWxsYmFja19saXN0KiBfX2NiKQogICAgICA6
IF9NX25leHQoX19jYiksIF9NX2ZuKF9fZm4pLCBfTV9pbmRleChfX2luZGV4KSwgX01fcmVmY291
bnQoMCkgeyB9CgogICAgICB2b2lkCiAgICAgIF9NX2FkZF9yZWZlcmVuY2UoKSB7IF9fZ251X2N4
eDo6X19hdG9taWNfYWRkX2Rpc3BhdGNoKCZfTV9yZWZjb3VudCwgMSk7IH0KCgogICAgICBpbnQK
ICAgICAgX01fcmVtb3ZlX3JlZmVyZW5jZSgpCiAgICAgIHsgcmV0dXJuIF9fZ251X2N4eDo6X19l
eGNoYW5nZV9hbmRfYWRkX2Rpc3BhdGNoKCZfTV9yZWZjb3VudCwgLTEpOyB9CiAgICB9OwoKICAg
ICBfQ2FsbGJhY2tfbGlzdCogX01fY2FsbGJhY2tzOwoKICAgIHZvaWQKICAgIF9NX2NhbGxfY2Fs
bGJhY2tzKGV2ZW50IF9fZXYpIHRocm93KCk7CgogICAgdm9pZAogICAgX01fZGlzcG9zZV9jYWxs
YmFja3Modm9pZCk7CgoKICAgIHN0cnVjdCBfV29yZHMKICAgIHsKICAgICAgdm9pZCogX01fcHdv
cmQ7CiAgICAgIGxvbmcgX01faXdvcmQ7CiAgICAgIF9Xb3JkcygpIDogX01fcHdvcmQoMCksIF9N
X2l3b3JkKDApIHsgfQogICAgfTsKCgogICAgX1dvcmRzIF9NX3dvcmRfemVybzsKCgoKICAgIGVu
dW0geyBfU19sb2NhbF93b3JkX3NpemUgPSA4IH07CiAgICBfV29yZHMgX01fbG9jYWxfd29yZFtf
U19sb2NhbF93b3JkX3NpemVdOwoKCiAgICBpbnQgX01fd29yZF9zaXplOwogICAgX1dvcmRzKiBf
TV93b3JkOwoKICAgIF9Xb3JkcyYKICAgIF9NX2dyb3dfd29yZHMoaW50IF9faW5kZXgsIGJvb2wg
X19pd29yZCk7CgoKICAgIGxvY2FsZSBfTV9pb3NfbG9jYWxlOwoKICAgIHZvaWQKICAgIF9NX2lu
aXQoKTsKCiAgcHVibGljOgoKCgoKCiAgICBjbGFzcyBJbml0CiAgICB7CiAgICAgIGZyaWVuZCBj
bGFzcyBpb3NfYmFzZTsKICAgIHB1YmxpYzoKICAgICAgSW5pdCgpOwogICAgICB+SW5pdCgpOwoK
ICAgIHByaXZhdGU6CiAgICAgIHN0YXRpYyBfQXRvbWljX3dvcmQgX1NfcmVmY291bnQ7CiAgICAg
IHN0YXRpYyBib29sIF9TX3N5bmNlZF93aXRoX3N0ZGlvOwogICAgfTsKCgoKCgoKICAgIGlubGlu
ZSBmbXRmbGFncwogICAgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBfTV9mbGFnczsgfQojIDU1NyAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2lvc19iYXNlLmgiIDMKICAgIGlubGluZSBmbXRm
bGFncwogICAgZmxhZ3MoZm10ZmxhZ3MgX19mbXRmbCkKICAgIHsKICAgICAgZm10ZmxhZ3MgX19v
bGQgPSBfTV9mbGFnczsKICAgICAgX01fZmxhZ3MgPSBfX2ZtdGZsOwogICAgICByZXR1cm4gX19v
bGQ7CiAgICB9CiMgNTczICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvaW9zX2Jhc2UuaCIg
MwogICAgaW5saW5lIGZtdGZsYWdzCiAgICBzZXRmKGZtdGZsYWdzIF9fZm10ZmwpCiAgICB7CiAg
ICAgIGZtdGZsYWdzIF9fb2xkID0gX01fZmxhZ3M7CiAgICAgIF9NX2ZsYWdzIHw9IF9fZm10Zmw7
CiAgICAgIHJldHVybiBfX29sZDsKICAgIH0KIyA1OTAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9pb3NfYmFzZS5oIiAzCiAgICBpbmxpbmUgZm10ZmxhZ3MKICAgIHNldGYoZm10ZmxhZ3Mg
X19mbXRmbCwgZm10ZmxhZ3MgX19tYXNrKQogICAgewogICAgICBmbXRmbGFncyBfX29sZCA9IF9N
X2ZsYWdzOwogICAgICBfTV9mbGFncyAmPSB+X19tYXNrOwogICAgICBfTV9mbGFncyB8PSAoX19m
bXRmbCAmIF9fbWFzayk7CiAgICAgIHJldHVybiBfX29sZDsKICAgIH0KCgoKCgoKCiAgICBpbmxp
bmUgdm9pZAogICAgdW5zZXRmKGZtdGZsYWdzIF9fbWFzaykgeyBfTV9mbGFncyAmPSB+X19tYXNr
OyB9CiMgNjE3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAg
aW5saW5lIHN0cmVhbXNpemUKICAgIHByZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIF9NX3ByZWNp
c2lvbjsgfQoKCgoKCgogICAgaW5saW5lIHN0cmVhbXNpemUKICAgIHByZWNpc2lvbihzdHJlYW1z
aXplIF9fcHJlYykKICAgIHsKICAgICAgc3RyZWFtc2l6ZSBfX29sZCA9IF9NX3ByZWNpc2lvbjsK
ICAgICAgX01fcHJlY2lzaW9uID0gX19wcmVjOwogICAgICByZXR1cm4gX19vbGQ7CiAgICB9CgoK
CgoKCgogICAgaW5saW5lIHN0cmVhbXNpemUKICAgIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gX01f
d2lkdGg7IH0KCgoKCgoKICAgIGlubGluZSBzdHJlYW1zaXplCiAgICB3aWR0aChzdHJlYW1zaXpl
IF9fd2lkZSkKICAgIHsKICAgICAgc3RyZWFtc2l6ZSBfX29sZCA9IF9NX3dpZHRoOwogICAgICBf
TV93aWR0aCA9IF9fd2lkZTsKICAgICAgcmV0dXJuIF9fb2xkOwogICAgfQojIDY2NiAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL2lvc19iYXNlLmgiIDMKICAgIHN0YXRpYyBib29sCiAgICBz
eW5jX3dpdGhfc3RkaW8oYm9vbCBfX3N5bmMgPSB0cnVlKTsKIyA2NzggIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvYml0cy9pb3NfYmFzZS5oIiAzCiAgICBsb2NhbGUKICAgIGltYnVlKGNvbnN0IGxv
Y2FsZSYgX19sb2MpOwojIDY4OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2lvc19iYXNl
LmgiIDMKICAgIGlubGluZSBsb2NhbGUKICAgIGdldGxvYygpIGNvbnN0IHsgcmV0dXJuIF9NX2lv
c19sb2NhbGU7IH0KIyA2OTkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9pb3NfYmFzZS5o
IiAzCiAgICBpbmxpbmUgY29uc3QgbG9jYWxlJgogICAgX01fZ2V0bG9jKCkgY29uc3QgeyByZXR1
cm4gX01faW9zX2xvY2FsZTsgfQojIDcxNyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2lv
c19iYXNlLmgiIDMKICAgIHN0YXRpYyBpbnQKICAgIHhhbGxvYygpIHRocm93KCk7CiMgNzMzICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAgaW5saW5lIGxvbmcm
CiAgICBpd29yZChpbnQgX19peCkKICAgIHsKICAgICAgX1dvcmRzJiBfX3dvcmQgPSAoX19peCA8
IF9NX3dvcmRfc2l6ZSkKICAgPyBfTV93b3JkW19faXhdIDogX01fZ3Jvd193b3JkcyhfX2l4LCB0
cnVlKTsKICAgICAgcmV0dXJuIF9fd29yZC5fTV9pd29yZDsKICAgIH0KIyA3NTQgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9pb3NfYmFzZS5oIiAzCiAgICBpbmxpbmUgdm9pZComCiAgICBw
d29yZChpbnQgX19peCkKICAgIHsKICAgICAgX1dvcmRzJiBfX3dvcmQgPSAoX19peCA8IF9NX3dv
cmRfc2l6ZSkKICAgPyBfTV93b3JkW19faXhdIDogX01fZ3Jvd193b3JkcyhfX2l4LCBmYWxzZSk7
CiAgICAgIHJldHVybiBfX3dvcmQuX01fcHdvcmQ7CiAgICB9CiMgNzcxICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAgdmlydHVhbCB+aW9zX2Jhc2UoKTsKCiAg
cHJvdGVjdGVkOgogICAgaW9zX2Jhc2UoKTsKCgoKICBwcml2YXRlOgogICAgaW9zX2Jhc2UoY29u
c3QgaW9zX2Jhc2UmKTsKCiAgICBpb3NfYmFzZSYKICAgIG9wZXJhdG9yPShjb25zdCBpb3NfYmFz
ZSYpOwogIH07CgoKCiAgaW5saW5lIGlvc19iYXNlJgogIGJvb2xhbHBoYShpb3NfYmFzZSYgX19i
YXNlKQogIHsKICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpib29sYWxwaGEpOwogICAgcmV0dXJu
IF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgbm9ib29sYWxwaGEoaW9zX2Jhc2Um
IF9fYmFzZSkKICB7CiAgICBfX2Jhc2UudW5zZXRmKGlvc19iYXNlOjpib29sYWxwaGEpOwogICAg
cmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgc2hvd2Jhc2UoaW9zX2Jh
c2UmIF9fYmFzZSkKICB7CiAgICBfX2Jhc2Uuc2V0Zihpb3NfYmFzZTo6c2hvd2Jhc2UpOwogICAg
cmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgbm9zaG93YmFzZShpb3Nf
YmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS51bnNldGYoaW9zX2Jhc2U6OnNob3diYXNlKTsK
ICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgogIHNob3dwb2ludChp
b3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpzaG93cG9pbnQp
OwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgbm9zaG93cG9p
bnQoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICBfX2Jhc2UudW5zZXRmKGlvc19iYXNlOjpzaG93
cG9pbnQpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgc2hv
d3Bvcyhpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpzaG93
cG9zKTsKICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgogIG5vc2hv
d3Bvcyhpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS51bnNldGYoaW9zX2Jhc2U6OnNo
b3dwb3MpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgc2tp
cHdzKGlvc19iYXNlJiBfX2Jhc2UpCiAgewogICAgX19iYXNlLnNldGYoaW9zX2Jhc2U6OnNraXB3
cyk7CiAgICByZXR1cm4gX19iYXNlOwogIH0KCgogIGlubGluZSBpb3NfYmFzZSYKICBub3NraXB3
cyhpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS51bnNldGYoaW9zX2Jhc2U6OnNraXB3
cyk7CiAgICByZXR1cm4gX19iYXNlOwogIH0KCgogIGlubGluZSBpb3NfYmFzZSYKICB1cHBlcmNh
c2UoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICBfX2Jhc2Uuc2V0Zihpb3NfYmFzZTo6dXBwZXJj
YXNlKTsKICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgogIG5vdXBw
ZXJjYXNlKGlvc19iYXNlJiBfX2Jhc2UpCiAgewogICAgX19iYXNlLnVuc2V0Zihpb3NfYmFzZTo6
dXBwZXJjYXNlKTsKICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgog
IHVuaXRidWYoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICAgX19iYXNlLnNldGYoaW9zX2Jhc2U6
OnVuaXRidWYpOwogICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgog
IG5vdW5pdGJ1Zihpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgICBfX2Jhc2UudW5zZXRmKGlvc19i
YXNlOjp1bml0YnVmKTsKICAgICByZXR1cm4gX19iYXNlOwogIH0KCgoKICBpbmxpbmUgaW9zX2Jh
c2UmCiAgaW50ZXJuYWwoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICAgX19iYXNlLnNldGYoaW9z
X2Jhc2U6OmludGVybmFsLCBpb3NfYmFzZTo6YWRqdXN0ZmllbGQpOwogICAgIHJldHVybiBfX2Jh
c2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgogIGxlZnQoaW9zX2Jhc2UmIF9fYmFzZSkKICB7
CiAgICBfX2Jhc2Uuc2V0Zihpb3NfYmFzZTo6bGVmdCwgaW9zX2Jhc2U6OmFkanVzdGZpZWxkKTsK
ICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgogIHJpZ2h0KGlvc19i
YXNlJiBfX2Jhc2UpCiAgewogICAgX19iYXNlLnNldGYoaW9zX2Jhc2U6OnJpZ2h0LCBpb3NfYmFz
ZTo6YWRqdXN0ZmllbGQpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKCiAgaW5saW5lIGlvc19i
YXNlJgogIGRlYyhpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS5zZXRmKGlvc19iYXNl
OjpkZWMsIGlvc19iYXNlOjpiYXNlZmllbGQpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBp
bmxpbmUgaW9zX2Jhc2UmCiAgaGV4KGlvc19iYXNlJiBfX2Jhc2UpCiAgewogICAgX19iYXNlLnNl
dGYoaW9zX2Jhc2U6OmhleCwgaW9zX2Jhc2U6OmJhc2VmaWVsZCk7CiAgICByZXR1cm4gX19iYXNl
OwogIH0KCgogIGlubGluZSBpb3NfYmFzZSYKICBvY3QoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAg
ICBfX2Jhc2Uuc2V0Zihpb3NfYmFzZTo6b2N0LCBpb3NfYmFzZTo6YmFzZWZpZWxkKTsKICAgIHJl
dHVybiBfX2Jhc2U7CiAgfQoKCgogIGlubGluZSBpb3NfYmFzZSYKICBmaXhlZChpb3NfYmFzZSYg
X19iYXNlKQogIHsKICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpmaXhlZCwgaW9zX2Jhc2U6OmZs
b2F0ZmllbGQpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAg
c2NpZW50aWZpYyhpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS5zZXRmKGlvc19iYXNl
OjpzY2llbnRpZmljLCBpb3NfYmFzZTo6ZmxvYXRmaWVsZCk7CiAgICByZXR1cm4gX19iYXNlOwog
IH0KCn0KIyA0OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pb3MiIDIgMwojIDEgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvc3RyZWFtYnVmIiAxIDMKIyA0MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9zdHJlYW1idWYiIDMKI2RlZmluZSBfR0xJQlhYX1NUUkVBTUJVRiAxCgogICAgICAgCiMgNDMg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvc3RyZWFtYnVmIiAzCiMgNTEgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvc3RyZWFtYnVmIiAzCm5hbWVzcGFjZSBzdGQgewoKCgoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0cmVhbXNpemUKICAgIF9fY29w
eV9zdHJlYW1idWZzX2VvZihiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiosCiAgICAg
YmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qLCBib29sJik7CiMgMTIzICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL3N0cmVhbWJ1ZiIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cz4KICAgIGNsYXNzIGJhc2ljX3N0cmVhbWJ1ZgogICAgewogICAgcHVi
bGljOgoKCgoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYg
X1RyYWl0cyB0cmFpdHNfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6
aW50X3R5cGUgaW50X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OnBv
c190eXBlIHBvc190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpvZmZf
dHlwZSBvZmZfdHlwZTsKIyAxNDYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvc3RyZWFtYnVmIiAz
CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyZWFtYnVmPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+IF9f
c3RyZWFtYnVmX3R5cGU7CgoKICAgICAgZnJpZW5kIGNsYXNzIGJhc2ljX2lvczxjaGFyX3R5cGUs
IHRyYWl0c190eXBlPjsKICAgICAgZnJpZW5kIGNsYXNzIGJhc2ljX2lzdHJlYW08Y2hhcl90eXBl
LCB0cmFpdHNfdHlwZT47CiAgICAgIGZyaWVuZCBjbGFzcyBiYXNpY19vc3RyZWFtPGNoYXJfdHlw
ZSwgdHJhaXRzX3R5cGU+OwogICAgICBmcmllbmQgY2xhc3MgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxj
aGFyX3R5cGUsIHRyYWl0c190eXBlPjsKICAgICAgZnJpZW5kIGNsYXNzIG9zdHJlYW1idWZfaXRl
cmF0b3I8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT47CgogICAgICBmcmllbmQgc3RyZWFtc2l6ZQog
ICAgICBfX2NvcHlfc3RyZWFtYnVmc19lb2Y8PihfX3N0cmVhbWJ1Zl90eXBlKiwgX19zdHJlYW1i
dWZfdHlwZSosIGJvb2wmKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVDI+CiAgICAg
ICAgZnJpZW5kIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19jaGFyPF9DaGFy
VDI+OjpfX3ZhbHVlLAogICAgICAgICAgICBfQ2hhclQyKj46Ol9fdHlwZQogICAgICAgIF9fY29w
eV9hdXgoaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiwKICAgICBpc3RyZWFtYnVmX2l0ZXJh
dG9yPF9DaGFyVDI+LCBfQ2hhclQyKik7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQy
PgogICAgICAgIGZyaWVuZCB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hh
cjxfQ2hhclQyPjo6X192YWx1ZSwKICAgICAgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiA+
OjpfX3R5cGUKICAgICAgICBmaW5kKGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUMj4sIGlzdHJl
YW1idWZfaXRlcmF0b3I8X0NoYXJUMj4sCiAgICAgIGNvbnN0IF9DaGFyVDImKTsKCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVDIsIHR5cGVuYW1lIF9UcmFpdHMyPgogICAgICAgIGZyaWVu
ZCBiYXNpY19pc3RyZWFtPF9DaGFyVDIsIF9UcmFpdHMyPiYKICAgICAgICBvcGVyYXRvcj4+KGJh
c2ljX2lzdHJlYW08X0NoYXJUMiwgX1RyYWl0czI+JiwgX0NoYXJUMiopOwoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJUMiwgdHlwZW5hbWUgX1RyYWl0czIsIHR5cGVuYW1lIF9BbGxvYz4K
ICAgICAgICBmcmllbmQgYmFzaWNfaXN0cmVhbTxfQ2hhclQyLCBfVHJhaXRzMj4mCiAgICAgICAg
b3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPF9DaGFyVDIsIF9UcmFpdHMyPiYsCiAgICAgYmFzaWNf
c3RyaW5nPF9DaGFyVDIsIF9UcmFpdHMyLCBfQWxsb2M+Jik7CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQyLCB0eXBlbmFtZSBfVHJhaXRzMiwgdHlwZW5hbWUgX0FsbG9jPgogICAgICAg
IGZyaWVuZCBiYXNpY19pc3RyZWFtPF9DaGFyVDIsIF9UcmFpdHMyPiYKICAgICAgICBnZXRsaW5l
KGJhc2ljX2lzdHJlYW08X0NoYXJUMiwgX1RyYWl0czI+JiwKICBiYXNpY19zdHJpbmc8X0NoYXJU
MiwgX1RyYWl0czIsIF9BbGxvYz4mLCBfQ2hhclQyKTsKCiAgICBwcm90ZWN0ZWQ6CiMgMTk1ICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL3N0cmVhbWJ1ZiIgMwogICAgICBjaGFyX3R5cGUqIF9NX2lu
X2JlZzsKICAgICAgY2hhcl90eXBlKiBfTV9pbl9jdXI7CiAgICAgIGNoYXJfdHlwZSogX01faW5f
ZW5kOwogICAgICBjaGFyX3R5cGUqIF9NX291dF9iZWc7CiAgICAgIGNoYXJfdHlwZSogX01fb3V0
X2N1cjsKICAgICAgY2hhcl90eXBlKiBfTV9vdXRfZW5kOwoKCgoKCgogICAgICBsb2NhbGUgX01f
YnVmX2xvY2FsZTsKCiAgcHVibGljOgoKICAgICAgdmlydHVhbAogICAgICB+YmFzaWNfc3RyZWFt
YnVmKCkKICAgICAgeyB9CiMgMjIzICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL3N0cmVhbWJ1ZiIg
MwogICAgICBsb2NhbGUKICAgICAgcHViaW1idWUoY29uc3QgbG9jYWxlICZfX2xvYykKICAgICAg
ewogbG9jYWxlIF9fdG1wKHRoaXMtPmdldGxvYygpKTsKIHRoaXMtPmltYnVlKF9fbG9jKTsKIF9N
X2J1Zl9sb2NhbGUgPSBfX2xvYzsKIHJldHVybiBfX3RtcDsKICAgICAgfQojIDI0MCAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9zdHJlYW1idWYiIDMKICAgICAgbG9jYWxlCiAgICAgIGdldGxvYygp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2J1Zl9sb2NhbGU7IH0KIyAyNTMgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvc3RyZWFtYnVmIiAzCiAgICAgIF9fc3RyZWFtYnVmX3R5cGUqCiAgICAgIHB1
YnNldGJ1ZihjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pCiAgICAgIHsgcmV0dXJuIHRo
aXMtPnNldGJ1ZihfX3MsIF9fbik7IH0KCiAgICAgIHBvc190eXBlCiAgICAgIHB1YnNlZWtvZmYo
b2ZmX3R5cGUgX19vZmYsIGlvc19iYXNlOjpzZWVrZGlyIF9fd2F5LAogICBpb3NfYmFzZTo6b3Bl
bm1vZGUgX19tb2RlID0gaW9zX2Jhc2U6OmluIHwgaW9zX2Jhc2U6Om91dCkKICAgICAgeyByZXR1
cm4gdGhpcy0+c2Vla29mZihfX29mZiwgX193YXksIF9fbW9kZSk7IH0KCiAgICAgIHBvc190eXBl
CiAgICAgIHB1YnNlZWtwb3MocG9zX3R5cGUgX19zcCwKICAgaW9zX2Jhc2U6Om9wZW5tb2RlIF9f
bW9kZSA9IGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpvdXQpCiAgICAgIHsgcmV0dXJuIHRoaXMt
PnNlZWtwb3MoX19zcCwgX19tb2RlKTsgfQoKICAgICAgaW50CiAgICAgIHB1YnN5bmMoKSB7IHJl
dHVybiB0aGlzLT5zeW5jKCk7IH0KIyAyODAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvc3RyZWFt
YnVmIiAzCiAgICAgIHN0cmVhbXNpemUKICAgICAgaW5fYXZhaWwoKQogICAgICB7CiBjb25zdCBz
dHJlYW1zaXplIF9fcmV0ID0gdGhpcy0+ZWdwdHIoKSAtIHRoaXMtPmdwdHIoKTsKIHJldHVybiBf
X3JldCA/IF9fcmV0IDogdGhpcy0+c2hvd21hbnljKCk7CiAgICAgIH0KIyAyOTQgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvc3RyZWFtYnVmIiAzCiAgICAgIGludF90eXBlCiAgICAgIHNuZXh0Yygp
CiAgICAgIHsKIGludF90eXBlIF9fcmV0ID0gdHJhaXRzX3R5cGU6OmVvZigpOwogaWYgKF9fYnVp
bHRpbl9leHBlY3QoIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZSh0aGlzLT5zYnVtcGMoKSwKICAg
ICAgICAgICAgIF9fcmV0KSwgdHJ1ZSkpCiAgIF9fcmV0ID0gdGhpcy0+c2dldGMoKTsKIHJldHVy
biBfX3JldDsKICAgICAgfQojIDMxMiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9zdHJlYW1idWYi
IDMKICAgICAgaW50X3R5cGUKICAgICAgc2J1bXBjKCkKICAgICAgewogaW50X3R5cGUgX19yZXQ7
CiBpZiAoX19idWlsdGluX2V4cGVjdCh0aGlzLT5ncHRyKCkgPCB0aGlzLT5lZ3B0cigpLCB0cnVl
KSkKICAgewogICAgIF9fcmV0ID0gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCp0aGlzLT5ncHRy
KCkpOwogICAgIHRoaXMtPmdidW1wKDEpOwogICB9CiBlbHNlCiAgIF9fcmV0ID0gdGhpcy0+dWZs
b3coKTsKIHJldHVybiBfX3JldDsKICAgICAgfQojIDMzNCAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9zdHJlYW1idWYiIDMKICAgICAgaW50X3R5cGUKICAgICAgc2dldGMoKQogICAgICB7CiBpbnRf
dHlwZSBfX3JldDsKIGlmIChfX2J1aWx0aW5fZXhwZWN0KHRoaXMtPmdwdHIoKSA8IHRoaXMtPmVn
cHRyKCksIHRydWUpKQogICBfX3JldCA9IHRyYWl0c190eXBlOjp0b19pbnRfdHlwZSgqdGhpcy0+
Z3B0cigpKTsKIGVsc2UKICAgX19yZXQgPSB0aGlzLT51bmRlcmZsb3coKTsKIHJldHVybiBfX3Jl
dDsKICAgICAgfQojIDM1MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9zdHJlYW1idWYiIDMKICAg
ICAgc3RyZWFtc2l6ZQogICAgICBzZ2V0bihjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24p
CiAgICAgIHsgcmV0dXJuIHRoaXMtPnhzZ2V0bihfX3MsIF9fbik7IH0KIyAzNjcgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvc3RyZWFtYnVmIiAzCiAgICAgIGludF90eXBlCiAgICAgIHNwdXRiYWNr
YyhjaGFyX3R5cGUgX19jKQogICAgICB7CiBpbnRfdHlwZSBfX3JldDsKIGNvbnN0IGJvb2wgX190
ZXN0cG9zID0gdGhpcy0+ZWJhY2soKSA8IHRoaXMtPmdwdHIoKTsKIGlmIChfX2J1aWx0aW5fZXhw
ZWN0KCFfX3Rlc3Rwb3MgfHwKICAgICAgICAhdHJhaXRzX3R5cGU6OmVxKF9fYywgdGhpcy0+Z3B0
cigpWy0xXSksIGZhbHNlKSkKICAgX19yZXQgPSB0aGlzLT5wYmFja2ZhaWwodHJhaXRzX3R5cGU6
OnRvX2ludF90eXBlKF9fYykpOwogZWxzZQogICB7CiAgICAgdGhpcy0+Z2J1bXAoLTEpOwogICAg
IF9fcmV0ID0gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCp0aGlzLT5ncHRyKCkpOwogICB9CiBy
ZXR1cm4gX19yZXQ7CiAgICAgIH0KIyAzOTIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvc3RyZWFt
YnVmIiAzCiAgICAgIGludF90eXBlCiAgICAgIHN1bmdldGMoKQogICAgICB7CiBpbnRfdHlwZSBf
X3JldDsKIGlmIChfX2J1aWx0aW5fZXhwZWN0KHRoaXMtPmViYWNrKCkgPCB0aGlzLT5ncHRyKCks
IHRydWUpKQogICB7CiAgICAgdGhpcy0+Z2J1bXAoLTEpOwogICAgIF9fcmV0ID0gdHJhaXRzX3R5
cGU6OnRvX2ludF90eXBlKCp0aGlzLT5ncHRyKCkpOwogICB9CiBlbHNlCiAgIF9fcmV0ID0gdGhp
cy0+cGJhY2tmYWlsKCk7CiByZXR1cm4gX19yZXQ7CiAgICAgIH0KIyA0MTkgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvc3RyZWFtYnVmIiAzCiAgICAgIGludF90eXBlCiAgICAgIHNwdXRjKGNoYXJf
dHlwZSBfX2MpCiAgICAgIHsKIGludF90eXBlIF9fcmV0OwogaWYgKF9fYnVpbHRpbl9leHBlY3Qo
dGhpcy0+cHB0cigpIDwgdGhpcy0+ZXBwdHIoKSwgdHJ1ZSkpCiAgIHsKICAgICAqdGhpcy0+cHB0
cigpID0gX19jOwogICAgIHRoaXMtPnBidW1wKDEpOwogICAgIF9fcmV0ID0gdHJhaXRzX3R5cGU6
OnRvX2ludF90eXBlKF9fYyk7CiAgIH0KIGVsc2UKICAgX19yZXQgPSB0aGlzLT5vdmVyZmxvdyh0
cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoX19jKSk7CiByZXR1cm4gX19yZXQ7CiAgICAgIH0KIyA0
NDUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvc3RyZWFtYnVmIiAzCiAgICAgIHN0cmVhbXNpemUK
ICAgICAgc3B1dG4oY29uc3QgY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAgICB7
IHJldHVybiB0aGlzLT54c3B1dG4oX19zLCBfX24pOyB9CgogICAgcHJvdGVjdGVkOgojIDQ1OSAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9zdHJlYW1idWYiIDMKICAgICAgYmFzaWNfc3RyZWFtYnVm
KCkKICAgICAgOiBfTV9pbl9iZWcoMCksIF9NX2luX2N1cigwKSwgX01faW5fZW5kKDApLAogICAg
ICBfTV9vdXRfYmVnKDApLCBfTV9vdXRfY3VyKDApLCBfTV9vdXRfZW5kKDApLAogICAgICBfTV9i
dWZfbG9jYWxlKGxvY2FsZSgpKQogICAgICB7IH0KIyA0NzcgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvc3RyZWFtYnVmIiAzCiAgICAgIGNoYXJfdHlwZSoKICAgICAgZWJhY2soKSBjb25zdCB7IHJl
dHVybiBfTV9pbl9iZWc7IH0KCiAgICAgIGNoYXJfdHlwZSoKICAgICAgZ3B0cigpIGNvbnN0IHsg
cmV0dXJuIF9NX2luX2N1cjsgfQoKICAgICAgY2hhcl90eXBlKgogICAgICBlZ3B0cigpIGNvbnN0
IHsgcmV0dXJuIF9NX2luX2VuZDsgfQojIDQ5MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9zdHJl
YW1idWYiIDMKICAgICAgdm9pZAogICAgICBnYnVtcChpbnQgX19uKSB7IF9NX2luX2N1ciArPSBf
X247IH0KIyA1MDQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvc3RyZWFtYnVmIiAzCiAgICAgIHZv
aWQKICAgICAgc2V0ZyhjaGFyX3R5cGUqIF9fZ2JlZywgY2hhcl90eXBlKiBfX2duZXh0LCBjaGFy
X3R5cGUqIF9fZ2VuZCkKICAgICAgewogX01faW5fYmVnID0gX19nYmVnOwogX01faW5fY3VyID0g
X19nbmV4dDsKIF9NX2luX2VuZCA9IF9fZ2VuZDsKICAgICAgfQojIDUyNCAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9zdHJlYW1idWYiIDMKICAgICAgY2hhcl90eXBlKgogICAgICBwYmFzZSgpIGNv
bnN0IHsgcmV0dXJuIF9NX291dF9iZWc7IH0KCiAgICAgIGNoYXJfdHlwZSoKICAgICAgcHB0cigp
IGNvbnN0IHsgcmV0dXJuIF9NX291dF9jdXI7IH0KCiAgICAgIGNoYXJfdHlwZSoKICAgICAgZXBw
dHIoKSBjb25zdCB7IHJldHVybiBfTV9vdXRfZW5kOyB9CiMgNTQwICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL3N0cmVhbWJ1ZiIgMwogICAgICB2b2lkCiAgICAgIHBidW1wKGludCBfX24pIHsgX01f
b3V0X2N1ciArPSBfX247IH0KIyA1NTAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvc3RyZWFtYnVm
IiAzCiAgICAgIHZvaWQKICAgICAgc2V0cChjaGFyX3R5cGUqIF9fcGJlZywgY2hhcl90eXBlKiBf
X3BlbmQpCiAgICAgIHsKIF9NX291dF9iZWcgPSBfTV9vdXRfY3VyID0gX19wYmVnOwogX01fb3V0
X2VuZCA9IF9fcGVuZDsKICAgICAgfQojIDU3MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9zdHJl
YW1idWYiIDMKICAgICAgdmlydHVhbCB2b2lkCiAgICAgIGltYnVlKGNvbnN0IGxvY2FsZSYpCiAg
ICAgIHsgfQojIDU4NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9zdHJlYW1idWYiIDMKICAgICAg
dmlydHVhbCBiYXNpY19zdHJlYW1idWY8Y2hhcl90eXBlLF9UcmFpdHM+KgogICAgICBzZXRidWYo
Y2hhcl90eXBlKiwgc3RyZWFtc2l6ZSkKICAgICAgeyByZXR1cm4gdGhpczsgfQojIDU5NyAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9zdHJlYW1idWYiIDMKICAgICAgdmlydHVhbCBwb3NfdHlwZQog
ICAgICBzZWVrb2ZmKG9mZl90eXBlLCBpb3NfYmFzZTo6c2Vla2RpciwKICAgICAgIGlvc19iYXNl
OjpvcGVubW9kZSA9IGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpvdXQpCiAgICAgIHsgcmV0dXJu
IHBvc190eXBlKG9mZl90eXBlKC0xKSk7IH0KIyA2MDkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
c3RyZWFtYnVmIiAzCiAgICAgIHZpcnR1YWwgcG9zX3R5cGUKICAgICAgc2Vla3Bvcyhwb3NfdHlw
ZSwKICAgICAgIGlvc19iYXNlOjpvcGVubW9kZSA9IGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpv
dXQpCiAgICAgIHsgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7IH0KIyA2MjIgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvc3RyZWFtYnVmIiAzCiAgICAgIHZpcnR1YWwgaW50CiAgICAgIHN5
bmMoKSB7IHJldHVybiAwOyB9CiMgNjQ0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL3N0cmVhbWJ1
ZiIgMwogICAgICB2aXJ0dWFsIHN0cmVhbXNpemUKICAgICAgc2hvd21hbnljKCkgeyByZXR1cm4g
MDsgfQojIDY2MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9zdHJlYW1idWYiIDMKICAgICAgdmly
dHVhbCBzdHJlYW1zaXplCiAgICAgIHhzZ2V0bihjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBf
X24pOwojIDY4MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9zdHJlYW1idWYiIDMKICAgICAgdmly
dHVhbCBpbnRfdHlwZQogICAgICB1bmRlcmZsb3coKQogICAgICB7IHJldHVybiB0cmFpdHNfdHlw
ZTo6ZW9mKCk7IH0KIyA2OTUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvc3RyZWFtYnVmIiAzCiAg
ICAgIHZpcnR1YWwgaW50X3R5cGUKICAgICAgdWZsb3coKQogICAgICB7CiBpbnRfdHlwZSBfX3Jl
dCA9IHRyYWl0c190eXBlOjplb2YoKTsKIGNvbnN0IGJvb2wgX190ZXN0ZW9mID0gdHJhaXRzX3R5
cGU6OmVxX2ludF90eXBlKHRoaXMtPnVuZGVyZmxvdygpLAogICAgICAgX19yZXQpOwogaWYgKCFf
X3Rlc3Rlb2YpCiAgIHsKICAgICBfX3JldCA9IHRyYWl0c190eXBlOjp0b19pbnRfdHlwZSgqdGhp
cy0+Z3B0cigpKTsKICAgICB0aGlzLT5nYnVtcCgxKTsKICAgfQogcmV0dXJuIF9fcmV0OwogICAg
ICB9CiMgNzE5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL3N0cmVhbWJ1ZiIgMwogICAgICB2aXJ0
dWFsIGludF90eXBlCiAgICAgIHBiYWNrZmFpbChpbnRfdHlwZSA9IHRyYWl0c190eXBlOjplb2Yo
KSkKICAgICAgeyByZXR1cm4gdHJhaXRzX3R5cGU6OmVvZigpOyB9CiMgNzM3ICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL3N0cmVhbWJ1ZiIgMwogICAgICB2aXJ0dWFsIHN0cmVhbXNpemUKICAgICAg
eHNwdXRuKGNvbnN0IGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9fbik7CiMgNzYyICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL3N0cmVhbWJ1ZiIgMwogICAgICB2aXJ0dWFsIGludF90eXBlCiAg
ICAgIG92ZXJmbG93KGludF90eXBlID0gdHJhaXRzX3R5cGU6OmVvZigpKQogICAgICB7IHJldHVy
biB0cmFpdHNfdHlwZTo6ZW9mKCk7IH0KIyA3OTEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvc3Ry
ZWFtYnVmIiAzCiAgICBwcml2YXRlOgoKCiAgICAgIGJhc2ljX3N0cmVhbWJ1Zihjb25zdCBfX3N0
cmVhbWJ1Zl90eXBlJiBfX3NiKQogICAgICA6IF9NX2luX2JlZyhfX3NiLl9NX2luX2JlZyksIF9N
X2luX2N1cihfX3NiLl9NX2luX2N1ciksCiAgICAgIF9NX2luX2VuZChfX3NiLl9NX2luX2VuZCks
IF9NX291dF9iZWcoX19zYi5fTV9vdXRfYmVnKSwKICAgICAgX01fb3V0X2N1cihfX3NiLl9NX291
dF9jdXIpLCBfTV9vdXRfZW5kKF9fc2IuX01fb3V0X2N1ciksCiAgICAgIF9NX2J1Zl9sb2NhbGUo
X19zYi5fTV9idWZfbG9jYWxlKQogICAgICB7IH0KCiAgICAgIF9fc3RyZWFtYnVmX3R5cGUmCiAg
ICAgIG9wZXJhdG9yPShjb25zdCBfX3N0cmVhbWJ1Zl90eXBlJikgeyByZXR1cm4gKnRoaXM7IH07
CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RyZWFtc2l6ZQogICAgX19jb3B5X3N0cmVhbWJ1
ZnNfZW9mKGJhc2ljX3N0cmVhbWJ1ZjxjaGFyPiogX19zYmluLAogICAgIGJhc2ljX3N0cmVhbWJ1
ZjxjaGFyPiogX19zYm91dCwgYm9vbCYgX19pbmVvZik7CgogIHRlbXBsYXRlPD4KICAgIHN0cmVh
bXNpemUKICAgIF9fY29weV9zdHJlYW1idWZzX2VvZihiYXNpY19zdHJlYW1idWY8d2NoYXJfdD4q
IF9fc2JpbiwKICAgICBiYXNpY19zdHJlYW1idWY8d2NoYXJfdD4qIF9fc2JvdXQsIGJvb2wmIF9f
aW5lb2YpOwoKCn0KCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdHJlYW1idWYu
dGNjIiAxIDMKIyA0MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0cmVhbWJ1Zi50Y2Mi
IDMKI2RlZmluZSBfU1RSRUFNQlVGX1RDQyAxCgogICAgICAgCiMgNDQgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvYml0cy9zdHJlYW1idWYudGNjIiAzCgpuYW1lc3BhY2Ugc3RkIHsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RyZWFtc2l6ZQogICAg
YmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz46OgogICAgeHNnZXRuKGNoYXJfdHlwZSog
X19zLCBzdHJlYW1zaXplIF9fbikKICAgIHsKICAgICAgc3RyZWFtc2l6ZSBfX3JldCA9IDA7CiAg
ICAgIHdoaWxlIChfX3JldCA8IF9fbikKIHsKICAgY29uc3Qgc3RyZWFtc2l6ZSBfX2J1Zl9sZW4g
PSB0aGlzLT5lZ3B0cigpIC0gdGhpcy0+Z3B0cigpOwogICBpZiAoX19idWZfbGVuKQogICAgIHsK
ICAgICAgIGNvbnN0IHN0cmVhbXNpemUgX19yZW1haW5pbmcgPSBfX24gLSBfX3JldDsKICAgICAg
IGNvbnN0IHN0cmVhbXNpemUgX19sZW4gPSBzdGQ6Om1pbihfX2J1Zl9sZW4sIF9fcmVtYWluaW5n
KTsKICAgICAgIHRyYWl0c190eXBlOjpjb3B5KF9fcywgdGhpcy0+Z3B0cigpLCBfX2xlbik7CiAg
ICAgICBfX3JldCArPSBfX2xlbjsKICAgICAgIF9fcyArPSBfX2xlbjsKICAgICAgIHRoaXMtPmdi
dW1wKF9fbGVuKTsKICAgICB9CgogICBpZiAoX19yZXQgPCBfX24pCiAgICAgewogICAgICAgY29u
c3QgaW50X3R5cGUgX19jID0gdGhpcy0+dWZsb3coKTsKICAgICAgIGlmICghdHJhaXRzX3R5cGU6
OmVxX2ludF90eXBlKF9fYywgdHJhaXRzX3R5cGU6OmVvZigpKSkKICB7CiAgICB0cmFpdHNfdHlw
ZTo6YXNzaWduKCpfX3MrKywgdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShfX2MpKTsKICAgICsr
X19yZXQ7CiAgfQogICAgICAgZWxzZQogIGJyZWFrOwogICAgIH0KIH0KICAgICAgcmV0dXJuIF9f
cmV0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+
CiAgICBzdHJlYW1zaXplCiAgICBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPjo6CiAg
ICB4c3B1dG4oY29uc3QgY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAgewogICAg
ICBzdHJlYW1zaXplIF9fcmV0ID0gMDsKICAgICAgd2hpbGUgKF9fcmV0IDwgX19uKQogewogICBj
b25zdCBzdHJlYW1zaXplIF9fYnVmX2xlbiA9IHRoaXMtPmVwcHRyKCkgLSB0aGlzLT5wcHRyKCk7
CiAgIGlmIChfX2J1Zl9sZW4pCiAgICAgewogICAgICAgY29uc3Qgc3RyZWFtc2l6ZSBfX3JlbWFp
bmluZyA9IF9fbiAtIF9fcmV0OwogICAgICAgY29uc3Qgc3RyZWFtc2l6ZSBfX2xlbiA9IHN0ZDo6
bWluKF9fYnVmX2xlbiwgX19yZW1haW5pbmcpOwogICAgICAgdHJhaXRzX3R5cGU6OmNvcHkodGhp
cy0+cHB0cigpLCBfX3MsIF9fbGVuKTsKICAgICAgIF9fcmV0ICs9IF9fbGVuOwogICAgICAgX19z
ICs9IF9fbGVuOwogICAgICAgdGhpcy0+cGJ1bXAoX19sZW4pOwogICAgIH0KCiAgIGlmIChfX3Jl
dCA8IF9fbikKICAgICB7CiAgICAgICBpbnRfdHlwZSBfX2MgPSB0aGlzLT5vdmVyZmxvdyh0cmFp
dHNfdHlwZTo6dG9faW50X3R5cGUoKl9fcykpOwogICAgICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFf
aW50X3R5cGUoX19jLCB0cmFpdHNfdHlwZTo6ZW9mKCkpKQogIHsKICAgICsrX19yZXQ7CiAgICAr
K19fczsKICB9CiAgICAgICBlbHNlCiAgYnJlYWs7CiAgICAgfQogfQogICAgICByZXR1cm4gX19y
ZXQ7CiAgICB9CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KICAgIHN0cmVhbXNpemUKICAgIF9fY29weV9zdHJlYW1idWZzX2VvZihiYXNpY19zdHJlYW1i
dWY8X0NoYXJULCBfVHJhaXRzPiogX19zYmluLAogICAgIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQs
IF9UcmFpdHM+KiBfX3Nib3V0LAogICAgIGJvb2wmIF9faW5lb2YpCiAgICB7CiAgICAgIHN0cmVh
bXNpemUgX19yZXQgPSAwOwogICAgICBfX2luZW9mID0gdHJ1ZTsKICAgICAgdHlwZW5hbWUgX1Ry
YWl0czo6aW50X3R5cGUgX19jID0gX19zYmluLT5zZ2V0YygpOwogICAgICB3aGlsZSAoIV9UcmFp
dHM6OmVxX2ludF90eXBlKF9fYywgX1RyYWl0czo6ZW9mKCkpKQogewogICBfX2MgPSBfX3Nib3V0
LT5zcHV0YyhfVHJhaXRzOjp0b19jaGFyX3R5cGUoX19jKSk7CiAgIGlmIChfVHJhaXRzOjplcV9p
bnRfdHlwZShfX2MsIF9UcmFpdHM6OmVvZigpKSkKICAgICB7CiAgICAgICBfX2luZW9mID0gZmFs
c2U7CiAgICAgICBicmVhazsKICAgICB9CiAgICsrX19yZXQ7CiAgIF9fYyA9IF9fc2Jpbi0+c25l
eHRjKCk7CiB9CiAgICAgIHJldHVybiBfX3JldDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgaW5saW5lIHN0cmVhbXNpemUKICAgIF9fY29w
eV9zdHJlYW1idWZzKGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KiBfX3NiaW4sCiAg
ICAgICAgYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9fc2JvdXQpCiAgICB7CiAg
ICAgIGJvb2wgX19pbmVvZjsKICAgICAgcmV0dXJuIF9fY29weV9zdHJlYW1idWZzX2VvZihfX3Ni
aW4sIF9fc2JvdXQsIF9faW5lb2YpOwogICAgfQoKCgoKCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNz
IGJhc2ljX3N0cmVhbWJ1ZjxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUKICAgIHN0cmVhbXNpemUK
ICAgIF9fY29weV9zdHJlYW1idWZzKGJhc2ljX3N0cmVhbWJ1ZjxjaGFyPiosCiAgICAgICAgYmFz
aWNfc3RyZWFtYnVmPGNoYXI+Kik7CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBzdHJlYW1zaXplCiAg
ICBfX2NvcHlfc3RyZWFtYnVmc19lb2YoYmFzaWNfc3RyZWFtYnVmPGNoYXI+KiwKICAgICBiYXNp
Y19zdHJlYW1idWY8Y2hhcj4qLCBib29sJik7CgoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYmFz
aWNfc3RyZWFtYnVmPHdjaGFyX3Q+OwogIGV4dGVybiB0ZW1wbGF0ZQogICAgc3RyZWFtc2l6ZQog
ICAgX19jb3B5X3N0cmVhbWJ1ZnMoYmFzaWNfc3RyZWFtYnVmPHdjaGFyX3Q+KiwKICAgICAgICBi
YXNpY19zdHJlYW1idWY8d2NoYXJfdD4qKTsKICBleHRlcm4gdGVtcGxhdGUKICAgIHN0cmVhbXNp
emUKICAgIF9fY29weV9zdHJlYW1idWZzX2VvZihiYXNpY19zdHJlYW1idWY8d2NoYXJfdD4qLAog
ICAgIGJhc2ljX3N0cmVhbWJ1Zjx3Y2hhcl90PiosIGJvb2wmKTsKCgoKfQojIDgyMSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9zdHJlYW1idWYiIDIgMwojIDUwICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2lvcyIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX2lvcy5o
IiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX2lvcy5oIiAzCiNk
ZWZpbmUgX0JBU0lDX0lPU19IIDEKCiAgICAgICAKIyA0MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9iaXRzL2Jhc2ljX2lvcy5oIiAzCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9z
dHJlYW1idWZfaXRlcmF0b3IuaCIgMSAzCiMgMzcgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0
cy9zdHJlYW1idWZfaXRlcmF0b3IuaCIgMwojZGVmaW5lIF9TVFJFQU1CVUZfSVRFUkFUT1JfSCAx
CgogICAgICAgCiMgNDAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdHJlYW1idWZfaXRl
cmF0b3IuaCIgMwoKCgoKbmFtZXNwYWNlIHN0ZCB7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgY2xhc3MgaXN0cmVhbWJ1Zl9pdGVyYXRvcgogICAg
OiBwdWJsaWMgaXRlcmF0b3I8aW5wdXRfaXRlcmF0b3JfdGFnLCBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHM6Om9mZl90eXBlLAogICAgICAgIF9DaGFyVCosIF9DaGFyVCY+CiAgICB7CiAgICBwdWJs
aWM6CgoKCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBfVHJh
aXRzIHRyYWl0c190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFpdHM6OmludF90eXBl
IGludF90eXBlOwogICAgICB0eXBlZGVmIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+
IHN0cmVhbWJ1Zl90eXBlOwogICAgICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPiBpc3RyZWFtX3R5cGU7CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUMj4KIGZy
aWVuZCB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQyPjo6
X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJU
Mj4gPjo6X190eXBlCiBjb3B5KGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUMj4sIGlzdHJlYW1i
dWZfaXRlcmF0b3I8X0NoYXJUMj4sCiAgICAgIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUMj4p
OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUMj4KIGZyaWVuZCB0eXBlbmFtZSBfX2du
dV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQyPjo6X192YWx1ZSwKICAgICAgICAg
ICAgX0NoYXJUMio+OjpfX3R5cGUKIF9fY29weV9hdXgoaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hh
clQyPiwgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiwKICAgICBfQ2hhclQyKik7CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQyPgogZnJpZW5kIHR5cGVuYW1lIF9fZ251X2N4eDo6
X19lbmFibGVfaWY8X19pc19jaGFyPF9DaGFyVDI+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICBp
c3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVDI+ID46Ol9fdHlwZQogZmluZChpc3RyZWFtYnVmX2l0
ZXJhdG9yPF9DaGFyVDI+LCBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVDI+LAogICAgICBjb25z
dCBfQ2hhclQyJik7CgogICAgcHJpdmF0ZToKCgoKCgoKCiAgICAgIG11dGFibGUgc3RyZWFtYnVm
X3R5cGUqIF9NX3NidWY7CiAgICAgIG11dGFibGUgaW50X3R5cGUgX01fYzsKCiAgICBwdWJsaWM6
CgogICAgICBpc3RyZWFtYnVmX2l0ZXJhdG9yKCkgdGhyb3coKQogICAgICA6IF9NX3NidWYoMCks
IF9NX2ModHJhaXRzX3R5cGU6OmVvZigpKSB7IH0KCgogICAgICBpc3RyZWFtYnVmX2l0ZXJhdG9y
KGlzdHJlYW1fdHlwZSYgX19zKSB0aHJvdygpCiAgICAgIDogX01fc2J1ZihfX3MucmRidWYoKSks
IF9NX2ModHJhaXRzX3R5cGU6OmVvZigpKSB7IH0KCgogICAgICBpc3RyZWFtYnVmX2l0ZXJhdG9y
KHN0cmVhbWJ1Zl90eXBlKiBfX3MpIHRocm93KCkKICAgICAgOiBfTV9zYnVmKF9fcyksIF9NX2Mo
dHJhaXRzX3R5cGU6OmVvZigpKSB7IH0KCgoKCiAgICAgIGNoYXJfdHlwZQogICAgICBvcGVyYXRv
ciooKSBjb25zdAogICAgICB7CgoKCgoKCgogcmV0dXJuIHRyYWl0c190eXBlOjp0b19jaGFyX3R5
cGUoX01fZ2V0KCkpOwogICAgICB9CgoKICAgICAgaXN0cmVhbWJ1Zl9pdGVyYXRvciYKICAgICAg
b3BlcmF0b3IrKygpCiAgICAgIHsKIDsKCgogaWYgKF9NX3NidWYpCiAgIHsKICAgICBfTV9zYnVm
LT5zYnVtcGMoKTsKICAgICBfTV9jID0gdHJhaXRzX3R5cGU6OmVvZigpOwogICB9CiByZXR1cm4g
KnRoaXM7CiAgICAgIH0KCgogICAgICBpc3RyZWFtYnVmX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9y
KysoaW50KQogICAgICB7CiA7CgoKCiBpc3RyZWFtYnVmX2l0ZXJhdG9yIF9fb2xkID0gKnRoaXM7
CiBpZiAoX01fc2J1ZikKICAgewogICAgIF9fb2xkLl9NX2MgPSBfTV9zYnVmLT5zYnVtcGMoKTsK
ICAgICBfTV9jID0gdHJhaXRzX3R5cGU6OmVvZigpOwogICB9CiByZXR1cm4gX19vbGQ7CiAgICAg
IH0KCgoKCgogICAgICBib29sCiAgICAgIGVxdWFsKGNvbnN0IGlzdHJlYW1idWZfaXRlcmF0b3Im
IF9fYikgY29uc3QKICAgICAgewogY29uc3QgYm9vbCBfX3RoaXNlb2YgPSBfTV9hdF9lb2YoKTsK
IGNvbnN0IGJvb2wgX19iZW9mID0gX19iLl9NX2F0X2VvZigpOwogcmV0dXJuIChfX3RoaXNlb2Yg
JiYgX19iZW9mIHx8ICghX190aGlzZW9mICYmICFfX2Jlb2YpKTsKICAgICAgfQoKICAgIHByaXZh
dGU6CiAgICAgIGludF90eXBlCiAgICAgIF9NX2dldCgpIGNvbnN0CiAgICAgIHsKIGNvbnN0IGlu
dF90eXBlIF9fZW9mID0gdHJhaXRzX3R5cGU6OmVvZigpOwogaW50X3R5cGUgX19yZXQgPSBfX2Vv
ZjsKIGlmIChfTV9zYnVmKQogICB7CiAgICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUo
X01fYywgX19lb2YpKQogICAgICAgX19yZXQgPSBfTV9jOwogICAgIGVsc2UgaWYgKCF0cmFpdHNf
dHlwZTo6ZXFfaW50X3R5cGUoKF9fcmV0ID0gX01fc2J1Zi0+c2dldGMoKSksCiAgICAgICAgICAg
IF9fZW9mKSkKICAgICAgIF9NX2MgPSBfX3JldDsKICAgICBlbHNlCiAgICAgICBfTV9zYnVmID0g
MDsKICAgfQogcmV0dXJuIF9fcmV0OwogICAgICB9CgogICAgICBib29sCiAgICAgIF9NX2F0X2Vv
ZigpIGNvbnN0CiAgICAgIHsKIGNvbnN0IGludF90eXBlIF9fZW9mID0gdHJhaXRzX3R5cGU6OmVv
ZigpOwogcmV0dXJuIHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfTV9nZXQoKSwgX19lb2YpOwog
ICAgICB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHM+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShjb25zdCBpc3RyZWFtYnVmX2l0ZXJh
dG9yPF9DaGFyVCwgX1RyYWl0cz4mIF9fYSwKICAgICAgICBjb25zdCBpc3RyZWFtYnVmX2l0ZXJh
dG9yPF9DaGFyVCwgX1RyYWl0cz4mIF9fYikKICAgIHsgcmV0dXJuIF9fYS5lcXVhbChfX2IpOyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlubGlu
ZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJULCBf
VHJhaXRzPiYgX19hLAogICAgICAgIGNvbnN0IGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJULCBf
VHJhaXRzPiYgX19iKQogICAgeyByZXR1cm4gIV9fYS5lcXVhbChfX2IpOyB9CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBjbGFzcyBvc3RyZWFtYnVm
X2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBpdGVyYXRvcjxvdXRwdXRfaXRlcmF0b3JfdGFnLCB2b2lk
LCB2b2lkLCB2b2lkLCB2b2lkPgogICAgewogICAgcHVibGljOgoKCgogICAgICB0eXBlZGVmIF9D
aGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgX1RyYWl0cyB0cmFpdHNfdHlwZTsKICAgICAg
dHlwZWRlZiBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiBzdHJlYW1idWZfdHlwZTsK
ICAgICAgdHlwZWRlZiBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gb3N0cmVhbV90eXBl
OwoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVDI+CiBmcmllbmQgdHlwZW5hbWUgX19n
bnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJUMj46Ol9fdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVDI+ID46Ol9fdHlwZQogY29w
eShpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVDI+LCBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFy
VDI+LAogICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVDI+KTsKCiAgICBwcml2YXRlOgog
ICAgICBzdHJlYW1idWZfdHlwZSogX01fc2J1ZjsKICAgICAgYm9vbCBfTV9mYWlsZWQ7CgogICAg
cHVibGljOgoKICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcihvc3RyZWFtX3R5cGUmIF9fcykgdGhy
b3cgKCkKICAgICAgOiBfTV9zYnVmKF9fcy5yZGJ1ZigpKSwgX01fZmFpbGVkKCFfTV9zYnVmKSB7
IH0KCgogICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yKHN0cmVhbWJ1Zl90eXBlKiBfX3MpIHRocm93
ICgpCiAgICAgIDogX01fc2J1ZihfX3MpLCBfTV9mYWlsZWQoIV9NX3NidWYpIHsgfQoKCiAgICAg
IG9zdHJlYW1idWZfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yPShfQ2hhclQgX19jKQogICAgICB7
CiBpZiAoIV9NX2ZhaWxlZCAmJgogICAgIF9UcmFpdHM6OmVxX2ludF90eXBlKF9NX3NidWYtPnNw
dXRjKF9fYyksIF9UcmFpdHM6OmVvZigpKSkKICAgX01fZmFpbGVkID0gdHJ1ZTsKIHJldHVybiAq
dGhpczsKICAgICAgfQoKCiAgICAgIG9zdHJlYW1idWZfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9y
KigpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvciYK
ICAgICAgb3BlcmF0b3IrKyhpbnQpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgb3N0
cmVhbWJ1Zl9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IrKygpCiAgICAgIHsgcmV0dXJuICp0aGlz
OyB9CgoKICAgICAgYm9vbAogICAgICBmYWlsZWQoKSBjb25zdCB0aHJvdygpCiAgICAgIHsgcmV0
dXJuIF9NX2ZhaWxlZDsgfQoKICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvciYKICAgICAgX01fcHV0
KGNvbnN0IF9DaGFyVCogX193cywgc3RyZWFtc2l6ZSBfX2xlbikKICAgICAgewogaWYgKF9fYnVp
bHRpbl9leHBlY3QoIV9NX2ZhaWxlZCwgdHJ1ZSkKICAgICAmJiBfX2J1aWx0aW5fZXhwZWN0KHRo
aXMtPl9NX3NidWYtPnNwdXRuKF9fd3MsIF9fbGVuKSAhPSBfX2xlbiwKICAgIGZhbHNlKSkKICAg
X01fZmFpbGVkID0gdHJ1ZTsKIHJldHVybiAqdGhpczsKICAgICAgfQogICAgfTsKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8
X19pc19jaGFyPF9DaGFyVD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9z
dHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+OjpfX3R5cGUKICAgIGNvcHkoaXN0cmVhbWJ1Zl9p
dGVyYXRvcjxfQ2hhclQ+IF9fZmlyc3QsCiAgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+IF9f
bGFzdCwKICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gX19yZXN1bHQpCiAgICB7CiAgICAg
IGlmIChfX2ZpcnN0Ll9NX3NidWYgJiYgIV9fbGFzdC5fTV9zYnVmICYmICFfX3Jlc3VsdC5fTV9m
YWlsZWQpCiB7CiAgIGJvb2wgX19pbmVvZjsKICAgX19jb3B5X3N0cmVhbWJ1ZnNfZW9mKF9fZmly
c3QuX01fc2J1ZiwgX19yZXN1bHQuX01fc2J1ZiwgX19pbmVvZik7CiAgIGlmICghX19pbmVvZikK
ICAgICBfX3Jlc3VsdC5fTV9mYWlsZWQgPSB0cnVlOwogfQogICAgICByZXR1cm4gX19yZXN1bHQ7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1lIF9fZ251X2N4
eDo6X19lbmFibGVfaWY8X19pc19jaGFyPF9DaGFyVD46Ol9fdmFsdWUsCiAgICAgICAgICAgIG9z
dHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+OjpfX3R5cGUKICAgIF9fY29weV9hdXgoX0NoYXJU
KiBfX2ZpcnN0LCBfQ2hhclQqIF9fbGFzdCwKICAgICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9D
aGFyVD4gX19yZXN1bHQpCiAgICB7CiAgICAgIGNvbnN0IHN0cmVhbXNpemUgX19udW0gPSBfX2xh
c3QgLSBfX2ZpcnN0OwogICAgICBpZiAoX19udW0gPiAwKQogX19yZXN1bHQuX01fcHV0KF9fZmly
c3QsIF9fbnVtKTsKICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQ+CiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hh
cjxfQ2hhclQ+OjpfX3ZhbHVlLAogICAgICAgIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+
OjpfX3R5cGUKICAgIF9fY29weV9hdXgoY29uc3QgX0NoYXJUKiBfX2ZpcnN0LCBjb25zdCBfQ2hh
clQqIF9fbGFzdCwKICAgICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gX19yZXN1bHQp
CiAgICB7CiAgICAgIGNvbnN0IHN0cmVhbXNpemUgX19udW0gPSBfX2xhc3QgLSBfX2ZpcnN0Owog
ICAgICBpZiAoX19udW0gPiAwKQogX19yZXN1bHQuX01fcHV0KF9fZmlyc3QsIF9fbnVtKTsKICAg
ICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAg
ICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQ+OjpfX3Zh
bHVlLAogICAgICAgICAgICBfQ2hhclQqPjo6X190eXBlCiAgICBfX2NvcHlfYXV4KGlzdHJlYW1i
dWZfaXRlcmF0b3I8X0NoYXJUPiBfX2ZpcnN0LAogICAgICAgIGlzdHJlYW1idWZfaXRlcmF0b3I8
X0NoYXJUPiBfX2xhc3QsIF9DaGFyVCogX19yZXN1bHQpCiAgICB7CiAgICAgIHR5cGVkZWYgaXN0
cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+IF9faXNfaXRlcmF0b3JfdHlwZTsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBfX2lzX2l0ZXJhdG9yX3R5cGU6OnRyYWl0c190eXBlIHRyYWl0c190eXBlOwog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXNfaXRlcmF0b3JfdHlwZTo6c3RyZWFtYnVmX3R5cGUg
c3RyZWFtYnVmX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90
eXBlIGludF90eXBlOwoKICAgICAgaWYgKF9fZmlyc3QuX01fc2J1ZiAmJiAhX19sYXN0Ll9NX3Ni
dWYpCiB7CiAgIHN0cmVhbWJ1Zl90eXBlKiBfX3NiID0gX19maXJzdC5fTV9zYnVmOwogICBpbnRf
dHlwZSBfX2MgPSBfX3NiLT5zZ2V0YygpOwogICB3aGlsZSAoIXRyYWl0c190eXBlOjplcV9pbnRf
dHlwZShfX2MsIHRyYWl0c190eXBlOjplb2YoKSkpCiAgICAgewogICAgICAgY29uc3Qgc3RyZWFt
c2l6ZSBfX24gPSBfX3NiLT5lZ3B0cigpIC0gX19zYi0+Z3B0cigpOwogICAgICAgaWYgKF9fbiA+
IDEpCiAgewogICAgdHJhaXRzX3R5cGU6OmNvcHkoX19yZXN1bHQsIF9fc2ItPmdwdHIoKSwgX19u
KTsKICAgIF9fc2ItPmdidW1wKF9fbik7CiAgICBfX3Jlc3VsdCArPSBfX247CiAgICBfX2MgPSBf
X3NiLT51bmRlcmZsb3coKTsKICB9CiAgICAgICBlbHNlCiAgewogICAgKl9fcmVzdWx0KysgPSB0
cmFpdHNfdHlwZTo6dG9fY2hhcl90eXBlKF9fYyk7CiAgICBfX2MgPSBfX3NiLT5zbmV4dGMoKTsK
ICB9CiAgICAgfQogfQogICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19j
aGFyPF9DaGFyVD46Ol9fdmFsdWUsCiAgICAgICAgICBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFy
VD4gPjo6X190eXBlCiAgICBmaW5kKGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiBfX2ZpcnN0
LAogIGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiBfX2xhc3QsIGNvbnN0IF9DaGFyVCYgX192
YWwpCiAgICB7CiAgICAgIHR5cGVkZWYgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+IF9faXNf
aXRlcmF0b3JfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzX2l0ZXJhdG9yX3R5cGU6
OnRyYWl0c190eXBlIHRyYWl0c190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXNfaXRl
cmF0b3JfdHlwZTo6c3RyZWFtYnVmX3R5cGUgc3RyZWFtYnVmX3R5cGU7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBlIGludF90eXBlOwoKICAgICAgaWYgKF9fZmly
c3QuX01fc2J1ZiAmJiAhX19sYXN0Ll9NX3NidWYpCiB7CiAgIGNvbnN0IGludF90eXBlIF9faXZh
bCA9IHRyYWl0c190eXBlOjp0b19pbnRfdHlwZShfX3ZhbCk7CiAgIHN0cmVhbWJ1Zl90eXBlKiBf
X3NiID0gX19maXJzdC5fTV9zYnVmOwogICBpbnRfdHlwZSBfX2MgPSBfX3NiLT5zZ2V0YygpOwog
ICB3aGlsZSAoIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIHRyYWl0c190eXBlOjplb2Yo
KSkKICAgJiYgIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9faXZhbCkpCiAgICAgewog
ICAgICAgc3RyZWFtc2l6ZSBfX24gPSBfX3NiLT5lZ3B0cigpIC0gX19zYi0+Z3B0cigpOwogICAg
ICAgaWYgKF9fbiA+IDEpCiAgewogICAgY29uc3QgX0NoYXJUKiBfX3AgPSB0cmFpdHNfdHlwZTo6
ZmluZChfX3NiLT5ncHRyKCksCiAgICAgICBfX24sIF9fdmFsKTsKICAgIGlmIChfX3ApCiAgICAg
IF9fbiA9IF9fcCAtIF9fc2ItPmdwdHIoKTsKICAgIF9fc2ItPmdidW1wKF9fbik7CiAgICBfX2Mg
PSBfX3NiLT5zZ2V0YygpOwogIH0KICAgICAgIGVsc2UKICBfX2MgPSBfX3NiLT5zbmV4dGMoKTsK
ICAgICB9CgogICBpZiAoIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIHRyYWl0c190eXBl
Ojplb2YoKSkpCiAgICAgX19maXJzdC5fTV9jID0gX19jOwogICBlbHNlCiAgICAgX19maXJzdC5f
TV9zYnVmID0gMDsKIH0KICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICB9Cgp9CiMgNDIgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19pb3MuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAxIDMKIyA0MSAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwojZGVmaW5lIF9MT0NBTEVfRkFDRVRT
X0ggMQoKICAgICAgIAojIDQ0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2Zh
Y2V0cy5oIiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2N3Y3R5cGUiIDEgMwojIDQ2
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2N3Y3R5cGUiIDMKI2RlZmluZSBfR0xJQkNYWF9DV0NU
WVBFIDEKCiAgICAgICAKIyA0OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jd2N0eXBlIiAzCgoK
CgojIDEgIi91c3IvaW5jbHVkZS93Y3R5cGUuaCIgMSAzIDQKIyAzMiAiL3Vzci9pbmNsdWRlL3dj
dHlwZS5oIiAzIDQKI2RlZmluZSBfV0NUWVBFX0hfIAoKCgoKCiNkZWZpbmUgX1dDVFJBTlNfVCAK
dHlwZWRlZiBfX2Rhcndpbl93Y3RyYW5zX3Qgd2N0cmFuc190OwojIDUwICIvdXNyL2luY2x1ZGUv
d2N0eXBlLmgiIDMgNAojZGVmaW5lIF9fREFSV0lOX1dDVFlQRV9UT1Bfc3RhdGljX2lubGluZSBz
dGF0aWMgX19pbmxpbmUKIyA2MiAiL3Vzci9pbmNsdWRlL3djdHlwZS5oIiAzIDQKc3RhdGljIGlu
bGluZSBpbnQKaXN3Ymxhbmsod2ludF90IF93YykKewogcmV0dXJuIChfX2lzdHlwZShfd2MsIDB4
MDAwMjAwMDBMKSk7Cn0KCgpzdGF0aWMgaW5saW5lIGludAppc3dhc2NpaSh3aW50X3QgX3djKQp7
CiByZXR1cm4gKChfd2MgJiB+MHg3RikgPT0gMCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cmlzd2hl
eG51bWJlcih3aW50X3QgX3djKQp7CiByZXR1cm4gKF9faXN0eXBlKF93YywgMHgwMDAxMDAwMEwp
KTsKfQoKc3RhdGljIGlubGluZSBpbnQKaXN3aWRlb2dyYW0od2ludF90IF93YykKewogcmV0dXJu
IChfX2lzdHlwZShfd2MsIDB4MDAwODAwMDBMKSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cmlzd251
bWJlcih3aW50X3QgX3djKQp7CiByZXR1cm4gKF9faXN0eXBlKF93YywgMHgwMDAwMDQwMEwpKTsK
fQoKc3RhdGljIGlubGluZSBpbnQKaXN3cGhvbm9ncmFtKHdpbnRfdCBfd2MpCnsKIHJldHVybiAo
X19pc3R5cGUoX3djLCAweDAwMjAwMDAwTCkpOwp9CgpzdGF0aWMgaW5saW5lIGludAppc3dydW5l
KHdpbnRfdCBfd2MpCnsKIHJldHVybiAoX19pc3R5cGUoX3djLCAweEZGRkZGRkYwTCkpOwp9Cgpz
dGF0aWMgaW5saW5lIGludAppc3dzcGVjaWFsKHdpbnRfdCBfd2MpCnsKIHJldHVybiAoX19pc3R5
cGUoX3djLCAweDAwMTAwMDAwTCkpOwp9CiMgMTMwICIvdXNyL2luY2x1ZGUvd2N0eXBlLmgiIDMg
NApleHRlcm4gIkMiIHsKCndpbnRfdCBuZXh0d2N0eXBlKHdpbnRfdCwgd2N0eXBlX3QpOwoKd2lu
dF90IHRvd2N0cmFucyh3aW50X3QsIHdjdHJhbnNfdCk7CndjdHJhbnNfdAogd2N0cmFucyhjb25z
dCBjaGFyICopOwp9CiMgNTQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvY3djdHlwZSIgMiAzCgoK
CiN1bmRlZiBpc3dhbG51bQojdW5kZWYgaXN3YWxwaGEKCiN1bmRlZiBpc3dibGFuawoKI3VuZGVm
IGlzd2NudHJsCiN1bmRlZiBpc3djdHlwZQojdW5kZWYgaXN3ZGlnaXQKI3VuZGVmIGlzd2dyYXBo
CiN1bmRlZiBpc3dsb3dlcgojdW5kZWYgaXN3cHJpbnQKI3VuZGVmIGlzd3B1bmN0CiN1bmRlZiBp
c3dzcGFjZQojdW5kZWYgaXN3dXBwZXIKI3VuZGVmIGlzd3hkaWdpdAojdW5kZWYgdG93Y3RyYW5z
CiN1bmRlZiB0b3dsb3dlcgojdW5kZWYgdG93dXBwZXIKI3VuZGVmIHdjdHJhbnMKI3VuZGVmIHdj
dHlwZQoKCgpuYW1lc3BhY2Ugc3RkIHsKCiAgdXNpbmcgOjp3aW50X3Q7CgogIHVzaW5nIDo6d2N0
eXBlX3Q7CiAgdXNpbmcgOjp3Y3RyYW5zX3Q7CgogIHVzaW5nIDo6aXN3YWxudW07CiAgdXNpbmcg
Ojppc3dhbHBoYTsKCiAgdXNpbmcgOjppc3dibGFuazsKCiAgdXNpbmcgOjppc3djbnRybDsKICB1
c2luZyA6Omlzd2N0eXBlOwogIHVzaW5nIDo6aXN3ZGlnaXQ7CiAgdXNpbmcgOjppc3dncmFwaDsK
ICB1c2luZyA6Omlzd2xvd2VyOwogIHVzaW5nIDo6aXN3cHJpbnQ7CiAgdXNpbmcgOjppc3dwdW5j
dDsKICB1c2luZyA6Omlzd3NwYWNlOwogIHVzaW5nIDo6aXN3dXBwZXI7CiAgdXNpbmcgOjppc3d4
ZGlnaXQ7CiAgdXNpbmcgOjp0b3djdHJhbnM7CiAgdXNpbmcgOjp0b3dsb3dlcjsKICB1c2luZyA6
OnRvd3VwcGVyOwogIHVzaW5nIDo6d2N0cmFuczsKICB1c2luZyA6OndjdHlwZTsKCn0KIyA0NyAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9iaXRzL2N0eXBl
X2Jhc2UuaCIgMSAzCiMgMzggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3
aW4xMC94ODZfNjQvYml0cy9jdHlwZV9iYXNlLmgiIDMKbmFtZXNwYWNlIHN0ZCB7CgoKICBzdHJ1
Y3QgY3R5cGVfYmFzZQogIHsKCiAgICB0eXBlZGVmIGNvbnN0IGludCogX190b190eXBlOwoKICAg
IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBtYXNrOwoKCiAgICBzdGF0aWMgY29uc3QgbWFzayB1cHBl
ciA9IDB4MDAwMDgwMDBMOwogICAgc3RhdGljIGNvbnN0IG1hc2sgbG93ZXIgPSAweDAwMDAxMDAw
TDsKICAgIHN0YXRpYyBjb25zdCBtYXNrIGFscGhhID0gMHgwMDAwMDEwMEw7CiAgICBzdGF0aWMg
Y29uc3QgbWFzayBkaWdpdCA9IDB4MDAwMDA0MDBMOwogICAgc3RhdGljIGNvbnN0IG1hc2sgeGRp
Z2l0ID0gMHgwMDAxMDAwMEw7CiAgICBzdGF0aWMgY29uc3QgbWFzayBzcGFjZSA9IDB4MDAwMDQw
MDBMOwogICAgc3RhdGljIGNvbnN0IG1hc2sgcHJpbnQgPSAweDAwMDQwMDAwTDsKICAgIHN0YXRp
YyBjb25zdCBtYXNrIGdyYXBoID0gMHgwMDAwMDEwMEwgfCAweDAwMDAwNDAwTCB8IDB4MDAwMDIw
MDBMOwogICAgc3RhdGljIGNvbnN0IG1hc2sgY250cmwgPSAweDAwMDAwMjAwTDsKICAgIHN0YXRp
YyBjb25zdCBtYXNrIHB1bmN0ID0gMHgwMDAwMjAwMEw7CiAgICBzdGF0aWMgY29uc3QgbWFzayBh
bG51bSA9IDB4MDAwMDAxMDBMIHwgMHgwMDAwMDQwMEw7CiMgNzQgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9jdHlwZV9iYXNlLmgiIDMKICB9
OwoKfQojIDQ4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAy
IDMKCgoKCgpuYW1lc3BhY2Ugc3RkIHsKCgoKI2RlZmluZSBfR0xJQkNYWF9OVU1fRkFDRVRTIDI4
CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Udj4KICAgIHZvaWQKICAgIF9fY29udmVydF90
b192KGNvbnN0IGNoYXIqIF9faW4sIF9UdiYgX19vdXQsIGlvc19iYXNlOjppb3N0YXRlJiBfX2Vy
ciwKICAgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpOwoKCiAgdGVtcGxhdGU8PgogICAgdm9p
ZAogICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciosIGZsb2F0JiwgaW9zX2Jhc2U6Omlvc3Rh
dGUmLAogICAgIGNvbnN0IF9fY19sb2NhbGUmKTsKCiAgdGVtcGxhdGU8PgogICAgdm9pZAogICAg
X19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciosIGRvdWJsZSYsIGlvc19iYXNlOjppb3N0YXRlJiwK
ICAgICBjb25zdCBfX2NfbG9jYWxlJik7CgogIHRlbXBsYXRlPD4KICAgIHZvaWQKICAgIF9fY29u
dmVydF90b192KGNvbnN0IGNoYXIqLCBsb25nIGRvdWJsZSYsIGlvc19iYXNlOjppb3N0YXRlJiwK
ICAgICBjb25zdCBfX2NfbG9jYWxlJik7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzPgogICAgc3RydWN0IF9fcGFkCiAgICB7CiAgICAgIHN0YXRpYyB2b2lk
CiAgICAgIF9TX3BhZChpb3NfYmFzZSYgX19pbywgX0NoYXJUIF9fZmlsbCwgX0NoYXJUKiBfX25l
d3MsCiAgICAgIGNvbnN0IF9DaGFyVCogX19vbGRzLCBjb25zdCBzdHJlYW1zaXplIF9fbmV3bGVu
LAogICAgICBjb25zdCBzdHJlYW1zaXplIF9fb2xkbGVuLCBjb25zdCBib29sIF9fbnVtKTsKICAg
IH07CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgX0NoYXJUKgogICAgX19h
ZGRfZ3JvdXBpbmcoX0NoYXJUKiBfX3MsIF9DaGFyVCBfX3NlcCwKICAgICBjb25zdCBjaGFyKiBf
X2diZWcsIHNpemVfdCBfX2dzaXplLAogICAgIGNvbnN0IF9DaGFyVCogX19maXJzdCwgY29uc3Qg
X0NoYXJUKiBfX2xhc3QpOwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxp
bmUKICAgIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPgogICAgX193cml0ZShvc3RyZWFtYnVm
X2l0ZXJhdG9yPF9DaGFyVD4gX19zLCBjb25zdCBfQ2hhclQqIF9fd3MsIGludCBfX2xlbikKICAg
IHsKICAgICAgX19zLl9NX3B1dChfX3dzLCBfX2xlbik7CiAgICAgIHJldHVybiBfX3M7CiAgICB9
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgaW5s
aW5lCiAgICBfT3V0SXRlcgogICAgX193cml0ZShfT3V0SXRlciBfX3MsIGNvbnN0IF9DaGFyVCog
X193cywgaW50IF9fbGVuKQogICAgewogICAgICBmb3IgKGludCBfX2ogPSAwOyBfX2ogPCBfX2xl
bjsgX19qKyssICsrX19zKQogKl9fcyA9IF9fd3NbX19qXTsKICAgICAgcmV0dXJuIF9fczsKICAg
IH0KIyAxNDUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBfX2N0eXBlX2Fic3RyYWN0X2Jh
c2UgOiBwdWJsaWMgbG9jYWxlOjpmYWNldCwgcHVibGljIGN0eXBlX2Jhc2UKICAgIHsKICAgIHB1
YmxpYzoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiMgMTYzICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGJvb2wKICAgICAgaXMo
bWFzayBfX20sIGNoYXJfdHlwZSBfX2MpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2lz
KF9fbSwgX19jKTsgfQojIDE4MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9m
YWNldHMuaCIgMwogICAgICBjb25zdCBjaGFyX3R5cGUqCiAgICAgIGlzKGNvbnN0IGNoYXJfdHlw
ZSAqX19sbywgY29uc3QgY2hhcl90eXBlICpfX2hpLCBtYXNrICpfX3ZlYykgY29uc3QKICAgICAg
eyByZXR1cm4gdGhpcy0+ZG9faXMoX19sbywgX19oaSwgX192ZWMpOyB9CiMgMTk2ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNvbnN0IGNoYXJf
dHlwZSoKICAgICAgc2Nhbl9pcyhtYXNrIF9fbSwgY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25z
dCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX3NjYW5faXMo
X19tLCBfX2xvLCBfX2hpKTsgfQojIDIxMiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xv
Y2FsZV9mYWNldHMuaCIgMwogICAgICBjb25zdCBjaGFyX3R5cGUqCiAgICAgIHNjYW5fbm90KG1h
c2sgX19tLCBjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29u
c3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fc2Nhbl9ub3QoX19tLCBfX2xvLCBfX2hpKTsgfQoj
IDIyNiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAg
ICBjaGFyX3R5cGUKICAgICAgdG91cHBlcihjaGFyX3R5cGUgX19jKSBjb25zdAogICAgICB7IHJl
dHVybiB0aGlzLT5kb190b3VwcGVyKF9fYyk7IH0KIyAyNDEgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY29uc3QgY2hhcl90eXBlKgogICAgICB0
b3VwcGVyKGNoYXJfdHlwZSAqX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdAogICAg
ICB7IHJldHVybiB0aGlzLT5kb190b3VwcGVyKF9fbG8sIF9faGkpOyB9CiMgMjU1ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNoYXJfdHlwZQog
ICAgICB0b2xvd2VyKGNoYXJfdHlwZSBfX2MpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRv
X3RvbG93ZXIoX19jKTsgfQojIDI3MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2Fs
ZV9mYWNldHMuaCIgMwogICAgICBjb25zdCBjaGFyX3R5cGUqCiAgICAgIHRvbG93ZXIoY2hhcl90
eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRo
aXMtPmRvX3RvbG93ZXIoX19sbywgX19oaSk7IH0KIyAyODcgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY2hhcl90eXBlCiAgICAgIHdpZGVuKGNo
YXIgX19jKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb193aWRlbihfX2MpOyB9CiMgMzA2
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNv
bnN0IGNoYXIqCiAgICAgIHdpZGVuKGNvbnN0IGNoYXIqIF9fbG8sIGNvbnN0IGNoYXIqIF9faGks
IGNoYXJfdHlwZSogX190bykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fd2lkZW4oX19s
bywgX19oaSwgX190byk7IH0KIyAzMjUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2Nh
bGVfZmFjZXRzLmgiIDMKICAgICAgY2hhcgogICAgICBuYXJyb3coY2hhcl90eXBlIF9fYywgY2hh
ciBfX2RmYXVsdCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fbmFycm93KF9fYywgX19k
ZmF1bHQpOyB9CiMgMzQ3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0
cy5oIiAzCiAgICAgIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgbmFycm93KGNvbnN0IGNoYXJfdHlw
ZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpLAogICAgICAgY2hhciBfX2RmYXVsdCwgY2hh
ciAqX190bykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fbmFycm93KF9fbG8sIF9faGks
IF9fZGZhdWx0LCBfX3RvKTsgfQoKICAgIHByb3RlY3RlZDoKICAgICAgZXhwbGljaXQKICAgICAg
X19jdHlwZV9hYnN0cmFjdF9iYXNlKHNpemVfdCBfX3JlZnMgPSAwKTogZmFjZXQoX19yZWZzKSB7
IH0KCiAgICAgIHZpcnR1YWwKICAgICAgfl9fY3R5cGVfYWJzdHJhY3RfYmFzZSgpIHsgfQojIDM3
MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2
aXJ0dWFsIGJvb2wKICAgICAgZG9faXMobWFzayBfX20sIGNoYXJfdHlwZSBfX2MpIGNvbnN0ID0g
MDsKIyAzOTEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMK
ICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqCiAgICAgIGRvX2lzKGNvbnN0IGNoYXJfdHlw
ZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpLAogICAgIG1hc2sqIF9fdmVjKSBjb25zdCA9
IDA7CiMgNDEwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAz
CiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKgogICAgICBkb19zY2FuX2lzKG1hc2sgX19t
LCBjb25zdCBjaGFyX3R5cGUqIF9fbG8sCiAgIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Qg
PSAwOwojIDQyOSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIg
MwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fc2Nhbl9ub3QobWFzayBf
X20sIGNvbnN0IGNoYXJfdHlwZSogX19sbywKICAgIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29u
c3QgPSAwOwojIDQ0NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMu
aCIgMwogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQogICAgICBkb190b3VwcGVyKGNoYXJfdHlwZSkg
Y29uc3QgPSAwOwojIDQ2NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNl
dHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fdG91cHBlcihj
aGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3QgPSAwOwojIDQ4MCAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0
dWFsIGNoYXJfdHlwZQogICAgICBkb190b2xvd2VyKGNoYXJfdHlwZSkgY29uc3QgPSAwOwojIDQ5
NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2
aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fdG9sb3dlcihjaGFyX3R5cGUqIF9fbG8s
IGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3QgPSAwOwojIDUxNiAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQog
ICAgICBkb193aWRlbihjaGFyKSBjb25zdCA9IDA7CiMgNTM3ICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcioKICAg
ICAgZG9fd2lkZW4oY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19oaSwKICAgICAgICBj
aGFyX3R5cGUqIF9fZGVzdCkgY29uc3QgPSAwOwojIDU1OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNoYXIKICAgICAgZG9fbmFy
cm93KGNoYXJfdHlwZSwgY2hhciBfX2RmYXVsdCkgY29uc3QgPSAwOwojIDU4MyAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXJfdHlwZSoKICAgICAgZG9fbmFycm93KGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3Qg
Y2hhcl90eXBlKiBfX2hpLAogIGNoYXIgX19kZmF1bHQsIGNoYXIqIF9fZGVzdCkgY29uc3QgPSAw
OwogICAgfTsKIyA2MDYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRz
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBjdHlwZSA6IHB1Ymxp
YyBfX2N0eXBlX2Fic3RyYWN0X2Jhc2U8X0NoYXJUPgogICAgewogICAgcHVibGljOgoKICAgICAg
dHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fY3R5cGVf
YWJzdHJhY3RfYmFzZTxfQ2hhclQ+OjptYXNrIG1hc2s7CgoKICAgICAgc3RhdGljIGxvY2FsZTo6
aWQgaWQ7CgogICAgICBleHBsaWNpdAogICAgICBjdHlwZShzaXplX3QgX19yZWZzID0gMCkgOiBf
X2N0eXBlX2Fic3RyYWN0X2Jhc2U8X0NoYXJUPihfX3JlZnMpIHsgfQoKICAgcHJvdGVjdGVkOgog
ICAgICB2aXJ0dWFsCiAgICAgIH5jdHlwZSgpOwoKICAgICAgdmlydHVhbCBib29sCiAgICAgIGRv
X2lzKG1hc2sgX19tLCBjaGFyX3R5cGUgX19jKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgY29uc3Qg
Y2hhcl90eXBlKgogICAgICBkb19pcyhjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJf
dHlwZSogX19oaSwgbWFzayogX192ZWMpIGNvbnN0OwoKICAgICAgdmlydHVhbCBjb25zdCBjaGFy
X3R5cGUqCiAgICAgIGRvX3NjYW5faXMobWFzayBfX20sIGNvbnN0IGNoYXJfdHlwZSogX19sbywg
Y29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90
eXBlKgogICAgICBkb19zY2FuX25vdChtYXNrIF9fbSwgY29uc3QgY2hhcl90eXBlKiBfX2xvLAog
ICAgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgY2hhcl90eXBl
CiAgICAgIGRvX3RvdXBwZXIoY2hhcl90eXBlIF9fYykgY29uc3Q7CgogICAgICB2aXJ0dWFsIGNv
bnN0IGNoYXJfdHlwZSoKICAgICAgZG9fdG91cHBlcihjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNo
YXJfdHlwZSogX19oaSkgY29uc3Q7CgogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQogICAgICBkb190
b2xvd2VyKGNoYXJfdHlwZSBfX2MpIGNvbnN0OwoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5
cGUqCiAgICAgIGRvX3RvbG93ZXIoY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9f
aGkpIGNvbnN0OwoKICAgICAgdmlydHVhbCBjaGFyX3R5cGUKICAgICAgZG9fd2lkZW4oY2hhciBf
X2MpIGNvbnN0OwoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyKgogICAgICBkb193aWRlbihjb25z
dCBjaGFyKiBfX2xvLCBjb25zdCBjaGFyKiBfX2hpLCBjaGFyX3R5cGUqIF9fZGVzdCkgY29uc3Q7
CgogICAgICB2aXJ0dWFsIGNoYXIKICAgICAgZG9fbmFycm93KGNoYXJfdHlwZSwgY2hhciBfX2Rm
YXVsdCkgY29uc3Q7CgogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fbmFy
cm93KGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpLAogIGNoYXIg
X19kZmF1bHQsIGNoYXIqIF9fZGVzdCkgY29uc3Q7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQ+CiAgICBsb2NhbGU6OmlkIGN0eXBlPF9DaGFyVD46OmlkOwojIDY3NSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogIHRlbXBsYXRlPD4KICAg
IGNsYXNzIGN0eXBlPGNoYXI+IDogcHVibGljIGxvY2FsZTo6ZmFjZXQsIHB1YmxpYyBjdHlwZV9i
YXNlCiAgICB7CiAgICBwdWJsaWM6CgoKICAgICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKCiAg
ICBwcm90ZWN0ZWQ6CgogICAgICBfX2NfbG9jYWxlIF9NX2NfbG9jYWxlX2N0eXBlOwogICAgICBi
b29sIF9NX2RlbDsKICAgICAgX190b190eXBlIF9NX3RvdXBwZXI7CiAgICAgIF9fdG9fdHlwZSBf
TV90b2xvd2VyOwogICAgICBjb25zdCBtYXNrKiBfTV90YWJsZTsKICAgICAgbXV0YWJsZSBjaGFy
IF9NX3dpZGVuX29rOwogICAgICBtdXRhYmxlIGNoYXIgX01fd2lkZW5bMSArIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KC0xKV07CiAgICAgIG11dGFibGUgY2hhciBfTV9uYXJyb3dbMSArIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KC0xKV07CiAgICAgIG11dGFibGUgY2hhciBfTV9uYXJy
b3dfb2s7CgoKICAgIHB1YmxpYzoKCiAgICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlkOwoKICAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCB0YWJsZV9zaXplID0gMSArIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KC0xKTsKIyA3MTIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFj
ZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgY3R5cGUoY29uc3QgbWFzayogX190YWJsZSA9
IDAsIGJvb2wgX19kZWwgPSBmYWxzZSwgc2l6ZV90IF9fcmVmcyA9IDApOwojIDcyNSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBleHBsaWNpdAog
ICAgICBjdHlwZShfX2NfbG9jYWxlIF9fY2xvYywgY29uc3QgbWFzayogX190YWJsZSA9IDAsIGJv
b2wgX19kZWwgPSBmYWxzZSwKICAgICBzaXplX3QgX19yZWZzID0gMCk7CiMgNzM4ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGlubGluZSBib29s
CiAgICAgIGlzKG1hc2sgX19tLCBjaGFyIF9fYykgY29uc3Q7CiMgNzUzICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGlubGluZSBjb25zdCBjaGFy
KgogICAgICBpcyhjb25zdCBjaGFyKiBfX2xvLCBjb25zdCBjaGFyKiBfX2hpLCBtYXNrKiBfX3Zl
YykgY29uc3Q7CiMgNzY3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0
cy5oIiAzCiAgICAgIGlubGluZSBjb25zdCBjaGFyKgogICAgICBzY2FuX2lzKG1hc2sgX19tLCBj
b25zdCBjaGFyKiBfX2xvLCBjb25zdCBjaGFyKiBfX2hpKSBjb25zdDsKIyA3ODEgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgaW5saW5lIGNvbnN0
IGNoYXIqCiAgICAgIHNjYW5fbm90KG1hc2sgX19tLCBjb25zdCBjaGFyKiBfX2xvLCBjb25zdCBj
aGFyKiBfX2hpKSBjb25zdDsKIyA3OTYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2Nh
bGVfZmFjZXRzLmgiIDMKICAgICAgY2hhcl90eXBlCiAgICAgIHRvdXBwZXIoY2hhcl90eXBlIF9f
YykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fdG91cHBlcihfX2MpOyB9CiMgODEzICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNvbnN0
IGNoYXJfdHlwZSoKICAgICAgdG91cHBlcihjaGFyX3R5cGUgKl9fbG8sIGNvbnN0IGNoYXJfdHlw
ZSogX19oaSkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fdG91cHBlcihfX2xvLCBfX2hp
KTsgfQojIDgyOSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIg
MwogICAgICBjaGFyX3R5cGUKICAgICAgdG9sb3dlcihjaGFyX3R5cGUgX19jKSBjb25zdAogICAg
ICB7IHJldHVybiB0aGlzLT5kb190b2xvd2VyKF9fYyk7IH0KIyA4NDYgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY29uc3QgY2hhcl90eXBlKgog
ICAgICB0b2xvd2VyKGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25z
dAogICAgICB7IHJldHVybiB0aGlzLT5kb190b2xvd2VyKF9fbG8sIF9faGkpOyB9CiMgODY2ICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNoYXJf
dHlwZQogICAgICB3aWRlbihjaGFyIF9fYykgY29uc3QKICAgICAgewogaWYgKF9NX3dpZGVuX29r
KQogICByZXR1cm4gX01fd2lkZW5bc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX19jKV07CiB0
aGlzLT5fTV93aWRlbl9pbml0KCk7CiByZXR1cm4gdGhpcy0+ZG9fd2lkZW4oX19jKTsKICAgICAg
fQojIDg5MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwog
ICAgICBjb25zdCBjaGFyKgogICAgICB3aWRlbihjb25zdCBjaGFyKiBfX2xvLCBjb25zdCBjaGFy
KiBfX2hpLCBjaGFyX3R5cGUqIF9fdG8pIGNvbnN0CiAgICAgIHsKIGlmIChfTV93aWRlbl9vayA9
PSAxKQogICB7CiAgICAgbWVtY3B5KF9fdG8sIF9fbG8sIF9faGkgLSBfX2xvKTsKICAgICByZXR1
cm4gX19oaTsKICAgfQogaWYgKCFfTV93aWRlbl9vaykKICAgX01fd2lkZW5faW5pdCgpOwogcmV0
dXJuIHRoaXMtPmRvX3dpZGVuKF9fbG8sIF9faGksIF9fdG8pOwogICAgICB9CiMgOTI0ICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNoYXIKICAg
ICAgbmFycm93KGNoYXJfdHlwZSBfX2MsIGNoYXIgX19kZmF1bHQpIGNvbnN0CiAgICAgIHsKIGlm
IChfTV9uYXJyb3dbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX19jKV0pCiAgIHJldHVybiBf
TV9uYXJyb3dbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX19jKV07CiBjb25zdCBjaGFyIF9f
dCA9IGRvX25hcnJvdyhfX2MsIF9fZGZhdWx0KTsKIGlmIChfX3QgIT0gX19kZmF1bHQpCiAgIF9N
X25hcnJvd1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihfX2MpXSA9IF9fdDsKIHJldHVybiBf
X3Q7CiAgICAgIH0KIyA5NTcgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFj
ZXRzLmgiIDMKICAgICAgY29uc3QgY2hhcl90eXBlKgogICAgICBuYXJyb3coY29uc3QgY2hhcl90
eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGksCiAgICAgIGNoYXIgX19kZmF1bHQsIGNo
YXIgKl9fdG8pIGNvbnN0CiAgICAgIHsKIGlmIChfX2J1aWx0aW5fZXhwZWN0KF9NX25hcnJvd19v
ayA9PSAxLCB0cnVlKSkKICAgewogICAgIG1lbWNweShfX3RvLCBfX2xvLCBfX2hpIC0gX19sbyk7
CiAgICAgcmV0dXJuIF9faGk7CiAgIH0KIGlmICghX01fbmFycm93X29rKQogICBfTV9uYXJyb3df
aW5pdCgpOwogcmV0dXJuIHRoaXMtPmRvX25hcnJvdyhfX2xvLCBfX2hpLCBfX2RmYXVsdCwgX190
byk7CiAgICAgIH0KCiAgICBwcm90ZWN0ZWQ6CgoKICAgICAgY29uc3QgbWFzayoKICAgICAgdGFi
bGUoKSBjb25zdCB0aHJvdygpCiAgICAgIHsgcmV0dXJuIF9NX3RhYmxlOyB9CgoKICAgICAgc3Rh
dGljIGNvbnN0IG1hc2sqCiAgICAgIGNsYXNzaWNfdGFibGUoKSB0aHJvdygpOwoKCgoKCgoKICAg
ICAgdmlydHVhbAogICAgICB+Y3R5cGUoKTsKIyAxMDA0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlCiAgICAgIGRv
X3RvdXBwZXIoY2hhcl90eXBlKSBjb25zdDsKIyAxMDIxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKgog
ICAgICBkb190b3VwcGVyKGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBj
b25zdDsKIyAxMDM3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5o
IiAzCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlCiAgICAgIGRvX3RvbG93ZXIoY2hhcl90eXBlKSBj
b25zdDsKIyAxMDU0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5o
IiAzCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKgogICAgICBkb190b2xvd2VyKGNoYXJf
dHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdDsKIyAxMDc0ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY2hh
cl90eXBlCiAgICAgIGRvX3dpZGVuKGNoYXIgX19jKSBjb25zdAogICAgICB7IHJldHVybiBfX2M7
IH0KIyAxMDk3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAz
CiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcioKICAgICAgZG9fd2lkZW4oY29uc3QgY2hhciogX19s
bywgY29uc3QgY2hhciogX19oaSwgY2hhcl90eXBlKiBfX2Rlc3QpIGNvbnN0CiAgICAgIHsKIG1l
bWNweShfX2Rlc3QsIF9fbG8sIF9faGkgLSBfX2xvKTsKIHJldHVybiBfX2hpOwogICAgICB9CiMg
MTEyMyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAg
ICB2aXJ0dWFsIGNoYXIKICAgICAgZG9fbmFycm93KGNoYXJfdHlwZSBfX2MsIGNoYXIpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIF9fYzsgfQojIDExNDkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0
cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqCiAgICAg
IGRvX25hcnJvdyhjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSwK
ICBjaGFyLCBjaGFyKiBfX2Rlc3QpIGNvbnN0CiAgICAgIHsKIG1lbWNweShfX2Rlc3QsIF9fbG8s
IF9faGkgLSBfX2xvKTsKIHJldHVybiBfX2hpOwogICAgICB9CgogICAgcHJpdmF0ZToKCiAgICAg
IHZvaWQgX01fd2lkZW5faW5pdCgpIGNvbnN0CiAgICAgIHsKIGNoYXIgX190bXBbc2l6ZW9mKF9N
X3dpZGVuKV07CiBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBzaXplb2YoX01fd2lkZW4pOyAr
K19faSkKICAgX190bXBbX19pXSA9IF9faTsKIGRvX3dpZGVuKF9fdG1wLCBfX3RtcCArIHNpemVv
ZihfX3RtcCksIF9NX3dpZGVuKTsKCiBfTV93aWRlbl9vayA9IDE7CgogaWYgKG1lbWNtcChfX3Rt
cCwgX01fd2lkZW4sIHNpemVvZihfTV93aWRlbikpKQogICBfTV93aWRlbl9vayA9IDI7CiAgICAg
IH0KCgoKCiAgICAgIHZvaWQgX01fbmFycm93X2luaXQoKSBjb25zdAogICAgICB7CiBjaGFyIF9f
dG1wW3NpemVvZihfTV9uYXJyb3cpXTsKIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IHNpemVv
ZihfTV9uYXJyb3cpOyArK19faSkKICAgX190bXBbX19pXSA9IF9faTsKIGRvX25hcnJvdyhfX3Rt
cCwgX190bXAgKyBzaXplb2YoX190bXApLCAwLCBfTV9uYXJyb3cpOwoKIF9NX25hcnJvd19vayA9
IDE7CiBpZiAobWVtY21wKF9fdG1wLCBfTV9uYXJyb3csIHNpemVvZihfTV9uYXJyb3cpKSkKICAg
X01fbmFycm93X29rID0gMjsKIGVsc2UKICAgewoKCiAgICAgY2hhciBfX2M7CiAgICAgZG9fbmFy
cm93KF9fdG1wLCBfX3RtcCArIDEsIDEsICZfX2MpOwogICAgIGlmIChfX2MgPT0gMSkKICAgICAg
IF9NX25hcnJvd19vayA9IDI7CiAgIH0KICAgICAgfQogICAgfTsKCiAgdGVtcGxhdGU8PgogICAg
Y29uc3QgY3R5cGU8Y2hhcj4mCiAgICB1c2VfZmFjZXQ8Y3R5cGU8Y2hhcj4gPihjb25zdCBsb2Nh
bGUmIF9fbG9jKTsKIyAxMjEzICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2Zh
Y2V0cy5oIiAzCiAgdGVtcGxhdGU8PgogICAgY2xhc3MgY3R5cGU8d2NoYXJfdD4gOiBwdWJsaWMg
X19jdHlwZV9hYnN0cmFjdF9iYXNlPHdjaGFyX3Q+CiAgICB7CiAgICBwdWJsaWM6CgoKICAgICAg
dHlwZWRlZiB3Y2hhcl90IGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiB3Y3R5cGVfdCBfX3dtYXNr
X3R5cGU7CgogICAgcHJvdGVjdGVkOgogICAgICBfX2NfbG9jYWxlIF9NX2NfbG9jYWxlX2N0eXBl
OwoKCiAgICAgIGJvb2wgX01fbmFycm93X29rOwogICAgICBjaGFyIF9NX25hcnJvd1sxMjhdOwog
ICAgICB3aW50X3QgX01fd2lkZW5bMSArIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KC0xKV07
CgoKICAgICAgbWFzayBfTV9iaXRbMTZdOwogICAgICBfX3dtYXNrX3R5cGUgX01fd21hc2tbMTZd
OwoKICAgIHB1YmxpYzoKCgogICAgICBzdGF0aWMgbG9jYWxlOjppZCBpZDsKIyAxMjQ2ICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGV4cGxpY2l0
CiAgICAgIGN0eXBlKHNpemVfdCBfX3JlZnMgPSAwKTsKIyAxMjU3ICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGV4cGxpY2l0CiAgICAgIGN0eXBl
KF9fY19sb2NhbGUgX19jbG9jLCBzaXplX3QgX19yZWZzID0gMCk7CgogICAgcHJvdGVjdGVkOgog
ICAgICBfX3dtYXNrX3R5cGUKICAgICAgX01fY29udmVydF90b193bWFzayhjb25zdCBtYXNrIF9f
bSkgY29uc3Q7CgoKICAgICAgdmlydHVhbAogICAgICB+Y3R5cGUoKTsKIyAxMjgxICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgYm9v
bAogICAgICBkb19pcyhtYXNrIF9fbSwgY2hhcl90eXBlIF9fYykgY29uc3Q7CiMgMTMwMCAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9faXMoY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25z
dCBjaGFyX3R5cGUqIF9faGksIG1hc2sqIF9fdmVjKSBjb25zdDsKIyAxMzE4ICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY29uc3Qg
Y2hhcl90eXBlKgogICAgICBkb19zY2FuX2lzKG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUqIF9f
bG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7CiMgMTMzNiAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJf
dHlwZSoKICAgICAgZG9fc2Nhbl9ub3QobWFzayBfX20sIGNvbnN0IGNoYXJfdHlwZSogX19sbywK
ICAgIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7CiMgMTM1MyAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQog
ICAgICBkb190b3VwcGVyKGNoYXJfdHlwZSkgY29uc3Q7CiMgMTM3MCAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJf
dHlwZSoKICAgICAgZG9fdG91cHBlcihjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSog
X19oaSkgY29uc3Q7CiMgMTM4NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9m
YWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQogICAgICBkb190b2xvd2VyKGNoYXJf
dHlwZSkgY29uc3Q7CiMgMTQwMyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9m
YWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fdG9sb3dl
cihjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7CiMgMTQyMyAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0
dWFsIGNoYXJfdHlwZQogICAgICBkb193aWRlbihjaGFyKSBjb25zdDsKIyAxNDQ1ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY29u
c3QgY2hhcioKICAgICAgZG9fd2lkZW4oY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19o
aSwgY2hhcl90eXBlKiBfX2Rlc3QpIGNvbnN0OwojIDE0NjggIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjaGFyCiAgICAgIGRvX25h
cnJvdyhjaGFyX3R5cGUsIGNoYXIgX19kZmF1bHQpIGNvbnN0OwojIDE0OTQgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjb25zdCBj
aGFyX3R5cGUqCiAgICAgIGRvX25hcnJvdyhjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNo
YXJfdHlwZSogX19oaSwKICBjaGFyIF9fZGZhdWx0LCBjaGFyKiBfX2Rlc3QpIGNvbnN0OwoKCiAg
ICAgIHZvaWQKICAgICAgX01faW5pdGlhbGl6ZV9jdHlwZSgpOwogICAgfTsKCiAgdGVtcGxhdGU8
PgogICAgY29uc3QgY3R5cGU8d2NoYXJfdD4mCiAgICB1c2VfZmFjZXQ8Y3R5cGU8d2NoYXJfdD4g
Pihjb25zdCBsb2NhbGUmIF9fbG9jKTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAg
ICBjbGFzcyBjdHlwZV9ieW5hbWUgOiBwdWJsaWMgY3R5cGU8X0NoYXJUPgogICAgewogICAgcHVi
bGljOgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CgogICAgICBleHBsaWNpdAogICAg
ICBjdHlwZV9ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzID0gMCk7CgogICAg
cHJvdGVjdGVkOgogICAgICB2aXJ0dWFsCiAgICAgIH5jdHlwZV9ieW5hbWUoKSB7IH07CiAgICB9
OwoKCiAgdGVtcGxhdGU8PgogICAgY3R5cGVfYnluYW1lPGNoYXI+OjpjdHlwZV9ieW5hbWUoY29u
c3QgY2hhciosIHNpemVfdCByZWZzKTsKCiAgdGVtcGxhdGU8PgogICAgY3R5cGVfYnluYW1lPHdj
aGFyX3Q+OjpjdHlwZV9ieW5hbWUoY29uc3QgY2hhciosIHNpemVfdCByZWZzKTsKCn0KCgojIDEg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9j
dHlwZV9pbmxpbmUuaCIgMSAzCiMgNDIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBs
ZS1kYXJ3aW4xMC94ODZfNjQvYml0cy9jdHlwZV9pbmxpbmUuaCIgMwpuYW1lc3BhY2Ugc3RkIHsK
CiAgYm9vbAogIGN0eXBlPGNoYXI+OjoKICBpcyhtYXNrIF9fbSwgY2hhciBfX2MpIGNvbnN0CiAg
ewogICAgaWYgKF9NX3RhYmxlKQogICAgICByZXR1cm4gX01fdGFibGVbc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oX19jKV0gJiBfX207CiAgICBlbHNlCiAgICAgIHJldHVybiBfX2lzdHlwZShf
X2MsIF9fbSk7CiAgfQoKICBjb25zdCBjaGFyKgogIGN0eXBlPGNoYXI+OjoKICBpcyhjb25zdCBj
aGFyKiBfX2xvdywgY29uc3QgY2hhciogX19oaWdoLCBtYXNrKiBfX3ZlYykgY29uc3QKICB7CiAg
ICBpZiAoX01fdGFibGUpCiAgICAgIHdoaWxlIChfX2xvdyA8IF9faGlnaCkKICpfX3ZlYysrID0g
X01fdGFibGVbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKl9fbG93KyspXTsKICAgIGVsc2UK
ICAgICAgZm9yICg7X19sb3cgPCBfX2hpZ2g7ICsrX192ZWMsICsrX19sb3cpCiB7CgogICAqX192
ZWMgPSBfX21hc2tydW5lICgqX19sb3csIHVwcGVyIHwgbG93ZXIgfCBhbHBoYSB8IGRpZ2l0IHwg
eGRpZ2l0CiAgICAgICAgICB8IHNwYWNlIHwgcHJpbnQgfCBncmFwaCB8IGNudHJsIHwgcHVuY3Qg
fCBhbG51bSk7CiMgODMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4x
MC94ODZfNjQvYml0cy9jdHlwZV9pbmxpbmUuaCIgMwogfQogICAgcmV0dXJuIF9faGlnaDsKICB9
CgogIGNvbnN0IGNoYXIqCiAgY3R5cGU8Y2hhcj46OgogIHNjYW5faXMobWFzayBfX20sIGNvbnN0
IGNoYXIqIF9fbG93LCBjb25zdCBjaGFyKiBfX2hpZ2gpIGNvbnN0CiAgewogICAgaWYgKF9NX3Rh
YmxlKQogICAgICB3aGlsZSAoX19sb3cgPCBfX2hpZ2gKICAgICAgJiYgIShfTV90YWJsZVtzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqX19sb3cpXSAmIF9fbSkpCiArK19fbG93OwogICAgZWxz
ZQogICAgICB3aGlsZSAoX19sb3cgPCBfX2hpZ2ggJiYgIXRoaXMtPmlzKF9fbSwgKl9fbG93KSkK
ICsrX19sb3c7CiAgICByZXR1cm4gX19sb3c7CiAgfQoKICBjb25zdCBjaGFyKgogIGN0eXBlPGNo
YXI+OjoKICBzY2FuX25vdChtYXNrIF9fbSwgY29uc3QgY2hhciogX19sb3csIGNvbnN0IGNoYXIq
IF9faGlnaCkgY29uc3QKICB7CiAgICBpZiAoX01fdGFibGUpCiAgICAgIHdoaWxlIChfX2xvdyA8
IF9faGlnaAogICAgICAmJiAoX01fdGFibGVbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKl9f
bG93KV0gJiBfX20pICE9IDApCiArK19fbG93OwogICAgZWxzZQogICAgICB3aGlsZSAoX19sb3cg
PCBfX2hpZ2ggJiYgdGhpcy0+aXMoX19tLCAqX19sb3cpICE9IDApCiArK19fbG93OwogICAgcmV0
dXJuIF9fbG93OwogIH0KCgogIGlubGluZSBib29sCiAgY3R5cGU8d2NoYXJfdD46OgogIGRvX2lz
KG1hc2sgX19tLCB3Y2hhcl90IF9fYykgY29uc3QKICB7CiAgICByZXR1cm4gX19pc3R5cGUgKF9f
YywgX19tKTsKICB9CgogIGlubGluZSBjb25zdCB3Y2hhcl90KgogIGN0eXBlPHdjaGFyX3Q+OjoK
ICBkb19pcyhjb25zdCB3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpLCBtYXNrKiBf
X3ZlYykgY29uc3QKICB7CiAgICBmb3IgKDsgX19sbyA8IF9faGk7ICsrX192ZWMsICsrX19sbykK
ICAgICAgKl9fdmVjID0gX19tYXNrcnVuZSAoKl9fbG8sIHVwcGVyIHwgbG93ZXIgfCBhbHBoYSB8
IGRpZ2l0IHwgeGRpZ2l0CiAgICAgIHwgc3BhY2UgfCBwcmludCB8IGdyYXBoIHwgY250cmwgfCBw
dW5jdCB8IGFsbnVtKTsKICAgIHJldHVybiBfX2hpOwogIH0KCiAgaW5saW5lIGNvbnN0IHdjaGFy
X3QqCiAgY3R5cGU8d2NoYXJfdD46OgogIGRvX3NjYW5faXMobWFzayBfX20sIGNvbnN0IHdjaGFy
X3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0CiAgewogICAgd2hpbGUgKF9fbG8g
PCBfX2hpICYmICEgX19pc3R5cGUgKCpfX2xvLCBfX20pKQogICAgICArK19fbG87CiAgICByZXR1
cm4gX19sbzsKICB9CgogIGlubGluZSBjb25zdCB3Y2hhcl90KgogIGN0eXBlPHdjaGFyX3Q+OjoK
ICBkb19zY2FuX25vdChtYXNrIF9fbSwgY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFy
X3R5cGUqIF9faGkpIGNvbnN0CiAgewogICAgd2hpbGUgKF9fbG8gPCBfX2hpICYmIF9faXN0eXBl
ICgqX19sbywgX19tKSkKICAgICAgKytfX2xvOwogICAgcmV0dXJuIF9fbG87CiAgfQoKCn0KIyAx
NTM0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAyIDMKCgoj
IDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9jb2RlY3Z0LmgiIDEgMwojIDQzICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvY29kZWN2dC5oIiAzCiNkZWZpbmUgX0NPREVDVlRfSCAx
CgogICAgICAgCiMgNDYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9jb2RlY3Z0LmgiIDMK
Cm5hbWVzcGFjZSBzdGQgewoKCiAgY2xhc3MgY29kZWN2dF9iYXNlCiAgewogIHB1YmxpYzoKICAg
IGVudW0gcmVzdWx0CiAgICB7CiAgICAgIG9rLAogICAgICBwYXJ0aWFsLAogICAgICBlcnJvciwK
ICAgICAgbm9jb252CiAgICB9OwogIH07CiMgNzEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0
cy9jb2RlY3Z0LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50ZXJuVCwgdHlwZW5hbWUgX0V4
dGVyblQsIHR5cGVuYW1lIF9TdGF0ZVQ+CiAgICBjbGFzcyBfX2NvZGVjdnRfYWJzdHJhY3RfYmFz
ZQogICAgOiBwdWJsaWMgbG9jYWxlOjpmYWNldCwgcHVibGljIGNvZGVjdnRfYmFzZQogICAgewog
ICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBjb2RlY3Z0X2Jhc2U6OnJlc3VsdCByZXN1bHQ7CiAg
ICAgIHR5cGVkZWYgX0ludGVyblQgaW50ZXJuX3R5cGU7CiAgICAgIHR5cGVkZWYgX0V4dGVyblQg
ZXh0ZXJuX3R5cGU7CiAgICAgIHR5cGVkZWYgX1N0YXRlVCBzdGF0ZV90eXBlOwojIDExOSAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2NvZGVjdnQuaCIgMwogICAgICByZXN1bHQKICAgICAg
b3V0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGludGVybl90eXBlKiBfX2Zyb20sCiAgIGNv
bnN0IGludGVybl90eXBlKiBfX2Zyb21fZW5kLCBjb25zdCBpbnRlcm5fdHlwZSomIF9fZnJvbV9u
ZXh0LAogICBleHRlcm5fdHlwZSogX190bywgZXh0ZXJuX3R5cGUqIF9fdG9fZW5kLAogICBleHRl
cm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3QKICAgICAgewogcmV0dXJuIHRoaXMtPmRvX291dChf
X3N0YXRlLCBfX2Zyb20sIF9fZnJvbV9lbmQsIF9fZnJvbV9uZXh0LAogICAgICAgX190bywgX190
b19lbmQsIF9fdG9fbmV4dCk7CiAgICAgIH0KIyAxNTggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9jb2RlY3Z0LmgiIDMKICAgICAgcmVzdWx0CiAgICAgIHVuc2hpZnQoc3RhdGVfdHlwZSYg
X19zdGF0ZSwgZXh0ZXJuX3R5cGUqIF9fdG8sIGV4dGVybl90eXBlKiBfX3RvX2VuZCwKICAgICAg
IGV4dGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb191
bnNoaWZ0KF9fc3RhdGUsIF9fdG8sX190b19lbmQsX190b19uZXh0KTsgfQojIDE5OSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL2NvZGVjdnQuaCIgMwogICAgICByZXN1bHQKICAgICAgaW4o
c3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbSwKICBjb25zdCBl
eHRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgZXh0ZXJuX3R5cGUqJiBfX2Zyb21fbmV4dCwK
ICBpbnRlcm5fdHlwZSogX190bywgaW50ZXJuX3R5cGUqIF9fdG9fZW5kLAogIGludGVybl90eXBl
KiYgX190b19uZXh0KSBjb25zdAogICAgICB7CiByZXR1cm4gdGhpcy0+ZG9faW4oX19zdGF0ZSwg
X19mcm9tLCBfX2Zyb21fZW5kLCBfX2Zyb21fbmV4dCwKICAgICAgX190bywgX190b19lbmQsIF9f
dG9fbmV4dCk7CiAgICAgIH0KCiAgICAgIGludAogICAgICBlbmNvZGluZygpIGNvbnN0IHRocm93
KCkKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fZW5jb2RpbmcoKTsgfQoKICAgICAgYm9vbAogICAg
ICBhbHdheXNfbm9jb252KCkgY29uc3QgdGhyb3coKQogICAgICB7IHJldHVybiB0aGlzLT5kb19h
bHdheXNfbm9jb252KCk7IH0KCiAgICAgIGludAogICAgICBsZW5ndGgoc3RhdGVfdHlwZSYgX19z
dGF0ZSwgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbSwKICAgICAgY29uc3QgZXh0ZXJuX3R5cGUq
IF9fZW5kLCBzaXplX3QgX19tYXgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2xlbmd0
aChfX3N0YXRlLCBfX2Zyb20sIF9fZW5kLCBfX21heCk7IH0KCiAgICAgIGludAogICAgICBtYXhf
bGVuZ3RoKCkgY29uc3QgdGhyb3coKQogICAgICB7IHJldHVybiB0aGlzLT5kb19tYXhfbGVuZ3Ro
KCk7IH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgIGV4cGxpY2l0CiAgICAgIF9fY29kZWN2dF9hYnN0
cmFjdF9iYXNlKHNpemVfdCBfX3JlZnMgPSAwKSA6IGxvY2FsZTo6ZmFjZXQoX19yZWZzKSB7IH0K
CiAgICAgIHZpcnR1YWwKICAgICAgfl9fY29kZWN2dF9hYnN0cmFjdF9iYXNlKCkgeyB9CiMgMjQw
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvY29kZWN2dC5oIiAzCiAgICAgIHZpcnR1YWwg
cmVzdWx0CiAgICAgIGRvX291dChzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBpbnRlcm5fdHlw
ZSogX19mcm9tLAogICAgICBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgaW50
ZXJuX3R5cGUqJiBfX2Zyb21fbmV4dCwKICAgICAgZXh0ZXJuX3R5cGUqIF9fdG8sIGV4dGVybl90
eXBlKiBfX3RvX2VuZCwKICAgICAgZXh0ZXJuX3R5cGUqJiBfX3RvX25leHQpIGNvbnN0ID0gMDsK
CiAgICAgIHZpcnR1YWwgcmVzdWx0CiAgICAgIGRvX3Vuc2hpZnQoc3RhdGVfdHlwZSYgX19zdGF0
ZSwgZXh0ZXJuX3R5cGUqIF9fdG8sCiAgIGV4dGVybl90eXBlKiBfX3RvX2VuZCwgZXh0ZXJuX3R5
cGUqJiBfX3RvX25leHQpIGNvbnN0ID0gMDsKCiAgICAgIHZpcnR1YWwgcmVzdWx0CiAgICAgIGRv
X2luKHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCiAgICAg
Y29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGV4dGVybl90eXBlKiYgX19mcm9t
X25leHQsCiAgICAgaW50ZXJuX3R5cGUqIF9fdG8sIGludGVybl90eXBlKiBfX3RvX2VuZCwKICAg
ICBpbnRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3QgPSAwOwoKICAgICAgdmlydHVhbCBpbnQK
ICAgICAgZG9fZW5jb2RpbmcoKSBjb25zdCB0aHJvdygpID0gMDsKCiAgICAgIHZpcnR1YWwgYm9v
bAogICAgICBkb19hbHdheXNfbm9jb252KCkgY29uc3QgdGhyb3coKSA9IDA7CgogICAgICB2aXJ0
dWFsIGludAogICAgICBkb19sZW5ndGgoc3RhdGVfdHlwZSYsIGNvbnN0IGV4dGVybl90eXBlKiBf
X2Zyb20sCiAgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZW5kLCBzaXplX3QgX19tYXgpIGNvbnN0ID0g
MDsKCiAgICAgIHZpcnR1YWwgaW50CiAgICAgIGRvX21heF9sZW5ndGgoKSBjb25zdCB0aHJvdygp
ID0gMDsKICAgIH07CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVyblQsIHR5cGVuYW1lIF9F
eHRlcm5ULCB0eXBlbmFtZSBfU3RhdGVUPgogICAgY2xhc3MgY29kZWN2dAogICAgOiBwdWJsaWMg
X19jb2RlY3Z0X2Fic3RyYWN0X2Jhc2U8X0ludGVyblQsIF9FeHRlcm5ULCBfU3RhdGVUPgogICAg
ewogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBjb2RlY3Z0X2Jhc2U6OnJlc3VsdCByZXN1bHQ7
CiAgICAgIHR5cGVkZWYgX0ludGVyblQgaW50ZXJuX3R5cGU7CiAgICAgIHR5cGVkZWYgX0V4dGVy
blQgZXh0ZXJuX3R5cGU7CiAgICAgIHR5cGVkZWYgX1N0YXRlVCBzdGF0ZV90eXBlOwoKICAgIHBy
b3RlY3RlZDoKICAgICAgX19jX2xvY2FsZSBfTV9jX2xvY2FsZV9jb2RlY3Z0OwoKICAgIHB1Ymxp
YzoKICAgICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7CgogICAgICBleHBsaWNpdAogICAgICBjb2Rl
Y3Z0KHNpemVfdCBfX3JlZnMgPSAwKQogICAgICA6IF9fY29kZWN2dF9hYnN0cmFjdF9iYXNlPF9J
bnRlcm5ULCBfRXh0ZXJuVCwgX1N0YXRlVD4gKF9fcmVmcykgeyB9CgogICAgICBleHBsaWNpdAog
ICAgICBjb2RlY3Z0KF9fY19sb2NhbGUgX19jbG9jLCBzaXplX3QgX19yZWZzID0gMCk7CgogICAg
cHJvdGVjdGVkOgogICAgICB2aXJ0dWFsCiAgICAgIH5jb2RlY3Z0KCkgeyB9CgogICAgICB2aXJ0
dWFsIHJlc3VsdAogICAgICBkb19vdXQoc3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgaW50ZXJu
X3R5cGUqIF9fZnJvbSwKICAgICAgY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0
IGludGVybl90eXBlKiYgX19mcm9tX25leHQsCiAgICAgIGV4dGVybl90eXBlKiBfX3RvLCBleHRl
cm5fdHlwZSogX190b19lbmQsCiAgICAgIGV4dGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdDsK
CiAgICAgIHZpcnR1YWwgcmVzdWx0CiAgICAgIGRvX3Vuc2hpZnQoc3RhdGVfdHlwZSYgX19zdGF0
ZSwgZXh0ZXJuX3R5cGUqIF9fdG8sCiAgIGV4dGVybl90eXBlKiBfX3RvX2VuZCwgZXh0ZXJuX3R5
cGUqJiBfX3RvX25leHQpIGNvbnN0OwoKICAgICAgdmlydHVhbCByZXN1bHQKICAgICAgZG9faW4o
c3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbSwKICAgICBjb25z
dCBleHRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgZXh0ZXJuX3R5cGUqJiBfX2Zyb21fbmV4
dCwKICAgICBpbnRlcm5fdHlwZSogX190bywgaW50ZXJuX3R5cGUqIF9fdG9fZW5kLAogICAgIGlu
dGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdDsKCiAgICAgIHZpcnR1YWwgaW50CiAgICAgIGRv
X2VuY29kaW5nKCkgY29uc3QgdGhyb3coKTsKCiAgICAgIHZpcnR1YWwgYm9vbAogICAgICBkb19h
bHdheXNfbm9jb252KCkgY29uc3QgdGhyb3coKTsKCiAgICAgIHZpcnR1YWwgaW50CiAgICAgIGRv
X2xlbmd0aChzdGF0ZV90eXBlJiwgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbSwKICBjb25zdCBl
eHRlcm5fdHlwZSogX19lbmQsIHNpemVfdCBfX21heCkgY29uc3Q7CgogICAgICB2aXJ0dWFsIGlu
dAogICAgICBkb19tYXhfbGVuZ3RoKCkgY29uc3QgdGhyb3coKTsKICAgIH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnRlcm5ULCB0eXBlbmFtZSBfRXh0ZXJuVCwgdHlwZW5hbWUgX1N0YXRlVD4K
ICAgIGxvY2FsZTo6aWQgY29kZWN2dDxfSW50ZXJuVCwgX0V4dGVyblQsIF9TdGF0ZVQ+OjppZDsK
CgogIHRlbXBsYXRlPD4KICAgIGNsYXNzIGNvZGVjdnQ8Y2hhciwgY2hhciwgbWJzdGF0ZV90Pgog
ICAgOiBwdWJsaWMgX19jb2RlY3Z0X2Fic3RyYWN0X2Jhc2U8Y2hhciwgY2hhciwgbWJzdGF0ZV90
PgogICAgewogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBjaGFyIGludGVybl90eXBlOwogICAg
ICB0eXBlZGVmIGNoYXIgZXh0ZXJuX3R5cGU7CiAgICAgIHR5cGVkZWYgbWJzdGF0ZV90IHN0YXRl
X3R5cGU7CgogICAgcHJvdGVjdGVkOgogICAgICBfX2NfbG9jYWxlIF9NX2NfbG9jYWxlX2NvZGVj
dnQ7CgogICAgcHVibGljOgogICAgICBzdGF0aWMgbG9jYWxlOjppZCBpZDsKCiAgICAgIGV4cGxp
Y2l0CiAgICAgIGNvZGVjdnQoc2l6ZV90IF9fcmVmcyA9IDApOwoKICAgICAgZXhwbGljaXQKICAg
ICAgY29kZWN2dChfX2NfbG9jYWxlIF9fY2xvYywgc2l6ZV90IF9fcmVmcyA9IDApOwoKICAgIHBy
b3RlY3RlZDoKICAgICAgdmlydHVhbAogICAgICB+Y29kZWN2dCgpOwoKICAgICAgdmlydHVhbCBy
ZXN1bHQKICAgICAgZG9fb3V0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGludGVybl90eXBl
KiBfX2Zyb20sCiAgICAgIGNvbnN0IGludGVybl90eXBlKiBfX2Zyb21fZW5kLCBjb25zdCBpbnRl
cm5fdHlwZSomIF9fZnJvbV9uZXh0LAogICAgICBleHRlcm5fdHlwZSogX190bywgZXh0ZXJuX3R5
cGUqIF9fdG9fZW5kLAogICAgICBleHRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3Q7CgogICAg
ICB2aXJ0dWFsIHJlc3VsdAogICAgICBkb191bnNoaWZ0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGV4
dGVybl90eXBlKiBfX3RvLAogICBleHRlcm5fdHlwZSogX190b19lbmQsIGV4dGVybl90eXBlKiYg
X190b19uZXh0KSBjb25zdDsKCiAgICAgIHZpcnR1YWwgcmVzdWx0CiAgICAgIGRvX2luKHN0YXRl
X3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCiAgICAgY29uc3QgZXh0
ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGV4dGVybl90eXBlKiYgX19mcm9tX25leHQsCiAg
ICAgaW50ZXJuX3R5cGUqIF9fdG8sIGludGVybl90eXBlKiBfX3RvX2VuZCwKICAgICBpbnRlcm5f
dHlwZSomIF9fdG9fbmV4dCkgY29uc3Q7CgogICAgICB2aXJ0dWFsIGludAogICAgICBkb19lbmNv
ZGluZygpIGNvbnN0IHRocm93KCk7CgogICAgICB2aXJ0dWFsIGJvb2wKICAgICAgZG9fYWx3YXlz
X25vY29udigpIGNvbnN0IHRocm93KCk7CgogICAgICB2aXJ0dWFsIGludAogICAgICBkb19sZW5n
dGgoc3RhdGVfdHlwZSYsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCiAgY29uc3QgZXh0ZXJu
X3R5cGUqIF9fZW5kLCBzaXplX3QgX19tYXgpIGNvbnN0OwoKICAgICAgdmlydHVhbCBpbnQKICAg
ICAgZG9fbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCk7CiAgfTsKCgoKICB0ZW1wbGF0ZTw+CiAg
ICBjbGFzcyBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD4KICAgIDogcHVibGljIF9f
Y29kZWN2dF9hYnN0cmFjdF9iYXNlPHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD4KICAgIHsKICAg
IHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgd2NoYXJfdCBpbnRlcm5fdHlwZTsKICAgICAgdHlwZWRl
ZiBjaGFyIGV4dGVybl90eXBlOwogICAgICB0eXBlZGVmIG1ic3RhdGVfdCBzdGF0ZV90eXBlOwoK
ICAgIHByb3RlY3RlZDoKICAgICAgX19jX2xvY2FsZSBfTV9jX2xvY2FsZV9jb2RlY3Z0OwoKICAg
IHB1YmxpYzoKICAgICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7CgogICAgICBleHBsaWNpdAogICAg
ICBjb2RlY3Z0KHNpemVfdCBfX3JlZnMgPSAwKTsKCiAgICAgIGV4cGxpY2l0CiAgICAgIGNvZGVj
dnQoX19jX2xvY2FsZSBfX2Nsb2MsIHNpemVfdCBfX3JlZnMgPSAwKTsKCiAgICBwcm90ZWN0ZWQ6
CiAgICAgIHZpcnR1YWwKICAgICAgfmNvZGVjdnQoKTsKCiAgICAgIHZpcnR1YWwgcmVzdWx0CiAg
ICAgIGRvX291dChzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9t
LAogICAgICBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgaW50ZXJuX3R5cGUq
JiBfX2Zyb21fbmV4dCwKICAgICAgZXh0ZXJuX3R5cGUqIF9fdG8sIGV4dGVybl90eXBlKiBfX3Rv
X2VuZCwKICAgICAgZXh0ZXJuX3R5cGUqJiBfX3RvX25leHQpIGNvbnN0OwoKICAgICAgdmlydHVh
bCByZXN1bHQKICAgICAgZG9fdW5zaGlmdChzdGF0ZV90eXBlJiBfX3N0YXRlLAogICBleHRlcm5f
dHlwZSogX190bywgZXh0ZXJuX3R5cGUqIF9fdG9fZW5kLAogICBleHRlcm5fdHlwZSomIF9fdG9f
bmV4dCkgY29uc3Q7CgogICAgICB2aXJ0dWFsIHJlc3VsdAogICAgICBkb19pbihzdGF0ZV90eXBl
JiBfX3N0YXRlLAogICAgICBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tLCBjb25zdCBleHRlcm5f
dHlwZSogX19mcm9tX2VuZCwKICAgICAgY29uc3QgZXh0ZXJuX3R5cGUqJiBfX2Zyb21fbmV4dCwK
ICAgICAgaW50ZXJuX3R5cGUqIF9fdG8sIGludGVybl90eXBlKiBfX3RvX2VuZCwKICAgICAgaW50
ZXJuX3R5cGUqJiBfX3RvX25leHQpIGNvbnN0OwoKICAgICAgdmlydHVhbAogICAgICBpbnQgZG9f
ZW5jb2RpbmcoKSBjb25zdCB0aHJvdygpOwoKICAgICAgdmlydHVhbAogICAgICBib29sIGRvX2Fs
d2F5c19ub2NvbnYoKSBjb25zdCB0aHJvdygpOwoKICAgICAgdmlydHVhbAogICAgICBpbnQgZG9f
bGVuZ3RoKHN0YXRlX3R5cGUmLCBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tLAogICAgICBjb25z
dCBleHRlcm5fdHlwZSogX19lbmQsIHNpemVfdCBfX21heCkgY29uc3Q7CgogICAgICB2aXJ0dWFs
IGludAogICAgICBkb19tYXhfbGVuZ3RoKCkgY29uc3QgdGhyb3coKTsKICAgIH07CgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ludGVyblQsIHR5cGVuYW1lIF9FeHRlcm5ULCB0eXBlbmFtZSBfU3Rh
dGVUPgogICAgY2xhc3MgY29kZWN2dF9ieW5hbWUgOiBwdWJsaWMgY29kZWN2dDxfSW50ZXJuVCwg
X0V4dGVyblQsIF9TdGF0ZVQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAg
IGNvZGVjdnRfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDApCiAgICAg
IDogY29kZWN2dDxfSW50ZXJuVCwgX0V4dGVyblQsIF9TdGF0ZVQ+KF9fcmVmcykKICAgICAgewog
aWYgKHN0ZDo6c3RyY21wKF9fcywgIkMiKSAhPSAwICYmIHN0ZDo6c3RyY21wKF9fcywgIlBPU0lY
IikgIT0gMCkKICAgewogICAgIHRoaXMtPl9TX2Rlc3Ryb3lfY19sb2NhbGUodGhpcy0+X01fY19s
b2NhbGVfY29kZWN2dCk7CiAgICAgdGhpcy0+X1NfY3JlYXRlX2NfbG9jYWxlKHRoaXMtPl9NX2Nf
bG9jYWxlX2NvZGVjdnQsIF9fcyk7CiAgIH0KICAgICAgfQoKICAgIHByb3RlY3RlZDoKICAgICAg
dmlydHVhbAogICAgICB+Y29kZWN2dF9ieW5hbWUoKSB7IH0KICAgIH07Cgp9CiMgMTUzNyAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMiAzCgpuYW1lc3BhY2Ug
c3RkIHsKCgogIGNsYXNzIF9fbnVtX2Jhc2UKICB7CiAgcHVibGljOgoKCiAgICBlbnVtCiAgICAg
IHsKICAgICAgICBfU19vbWludXMsCiAgICAgICAgX1Nfb3BsdXMsCiAgICAgICAgX1Nfb3gsCiAg
ICAgICAgX1Nfb1gsCiAgICAgICAgX1Nfb2RpZ2l0cywKICAgICAgICBfU19vZGlnaXRzX2VuZCA9
IF9TX29kaWdpdHMgKyAxNiwKICAgICAgICBfU19vdWRpZ2l0cyA9IF9TX29kaWdpdHNfZW5kLAog
ICAgICAgIF9TX291ZGlnaXRzX2VuZCA9IF9TX291ZGlnaXRzICsgMTYsCiAgICAgICAgX1Nfb2Ug
PSBfU19vZGlnaXRzICsgMTQsCiAgICAgICAgX1Nfb0UgPSBfU19vdWRpZ2l0cyArIDE0LAogX1Nf
b2VuZCA9IF9TX291ZGlnaXRzX2VuZAogICAgICB9OwoKCgoKCgogICAgc3RhdGljIGNvbnN0IGNo
YXIqIF9TX2F0b21zX291dDsKCgoKICAgIHN0YXRpYyBjb25zdCBjaGFyKiBfU19hdG9tc19pbjsK
CiAgICBlbnVtCiAgICB7CiAgICAgIF9TX2ltaW51cywKICAgICAgX1NfaXBsdXMsCiAgICAgIF9T
X2l4LAogICAgICBfU19pWCwKICAgICAgX1NfaXplcm8sCiAgICAgIF9TX2llID0gX1NfaXplcm8g
KyAxNCwKICAgICAgX1NfaUUgPSBfU19pemVybyArIDIwLAogICAgICBfU19pZW5kID0gMjYKICAg
IH07CgoKCiAgICBzdGF0aWMgdm9pZAogICAgX1NfZm9ybWF0X2Zsb2F0KGNvbnN0IGlvc19iYXNl
JiBfX2lvLCBjaGFyKiBfX2ZwdHIsIGNoYXIgX19tb2QpOwogIH07CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVD4KICAgIHN0cnVjdCBfX251bXB1bmN0X2NhY2hlIDogcHVibGljIGxvY2FsZTo6
ZmFjZXQKICAgIHsKICAgICAgY29uc3QgY2hhciogX01fZ3JvdXBpbmc7CiAgICAgIHNpemVfdCBf
TV9ncm91cGluZ19zaXplOwogICAgICBib29sIF9NX3VzZV9ncm91cGluZzsKICAgICAgY29uc3Qg
X0NoYXJUKiBfTV90cnVlbmFtZTsKICAgICAgc2l6ZV90IF9NX3RydWVuYW1lX3NpemU7CiAgICAg
IGNvbnN0IF9DaGFyVCogX01fZmFsc2VuYW1lOwogICAgICBzaXplX3QgX01fZmFsc2VuYW1lX3Np
emU7CiAgICAgIF9DaGFyVCBfTV9kZWNpbWFsX3BvaW50OwogICAgICBfQ2hhclQgX01fdGhvdXNh
bmRzX3NlcDsKCgoKCgogICAgICBfQ2hhclQgX01fYXRvbXNfb3V0W19fbnVtX2Jhc2U6Ol9TX29l
bmRdOwoKCgoKCiAgICAgIF9DaGFyVCBfTV9hdG9tc19pbltfX251bV9iYXNlOjpfU19pZW5kXTsK
CiAgICAgIGJvb2wgX01fYWxsb2NhdGVkOwoKICAgICAgX19udW1wdW5jdF9jYWNoZShzaXplX3Qg
X19yZWZzID0gMCkgOiBmYWNldChfX3JlZnMpLAogICAgICBfTV9ncm91cGluZyhfX251bGwpLCBf
TV9ncm91cGluZ19zaXplKDApLCBfTV91c2VfZ3JvdXBpbmcoZmFsc2UpLAogICAgICBfTV90cnVl
bmFtZShfX251bGwpLCBfTV90cnVlbmFtZV9zaXplKDApLCBfTV9mYWxzZW5hbWUoX19udWxsKSwK
ICAgICAgX01fZmFsc2VuYW1lX3NpemUoMCksIF9NX2RlY2ltYWxfcG9pbnQoX0NoYXJUKCkpLAog
ICAgICBfTV90aG91c2FuZHNfc2VwKF9DaGFyVCgpKSwgX01fYWxsb2NhdGVkKGZhbHNlKQogICAg
ICB7IH0KCiAgICAgIH5fX251bXB1bmN0X2NhY2hlKCk7CgogICAgICB2b2lkCiAgICAgIF9NX2Nh
Y2hlKGNvbnN0IGxvY2FsZSYgX19sb2MpOwoKICAgIHByaXZhdGU6CiAgICAgIF9fbnVtcHVuY3Rf
Y2FjaGUmCiAgICAgIG9wZXJhdG9yPShjb25zdCBfX251bXB1bmN0X2NhY2hlJik7CgogICAgICBl
eHBsaWNpdAogICAgICBfX251bXB1bmN0X2NhY2hlKGNvbnN0IF9fbnVtcHVuY3RfY2FjaGUmKTsK
ICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIF9fbnVtcHVuY3RfY2FjaGU8
X0NoYXJUPjo6fl9fbnVtcHVuY3RfY2FjaGUoKQogICAgewogICAgICBpZiAoX01fYWxsb2NhdGVk
KQogewogICBkZWxldGUgW10gX01fZ3JvdXBpbmc7CiAgIGRlbGV0ZSBbXSBfTV90cnVlbmFtZTsK
ICAgZGVsZXRlIFtdIF9NX2ZhbHNlbmFtZTsKIH0KICAgIH0KIyAxNjYxICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJUPgogICAgY2xhc3MgbnVtcHVuY3QgOiBwdWJsaWMgbG9jYWxlOjpmYWNldAogICAgewogICAg
cHVibGljOgoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYg
YmFzaWNfc3RyaW5nPF9DaGFyVD4gc3RyaW5nX3R5cGU7CgogICAgICB0eXBlZGVmIF9fbnVtcHVu
Y3RfY2FjaGU8X0NoYXJUPiBfX2NhY2hlX3R5cGU7CgogICAgcHJvdGVjdGVkOgogICAgICBfX2Nh
Y2hlX3R5cGUqIF9NX2RhdGE7CgogICAgcHVibGljOgoKICAgICAgc3RhdGljIGxvY2FsZTo6aWQg
aWQ7CgoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIG51bXB1bmN0KHNpemVfdCBfX3JlZnMgPSAw
KSA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoX19udWxsKQogICAgICB7IF9NX2luaXRpYWxpemVf
bnVtcHVuY3QoKTsgfQojIDE2OTggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVf
ZmFjZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgbnVtcHVuY3QoX19jYWNoZV90eXBlKiBf
X2NhY2hlLCBzaXplX3QgX19yZWZzID0gMCkKICAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRh
KF9fY2FjaGUpCiAgICAgIHsgX01faW5pdGlhbGl6ZV9udW1wdW5jdCgpOyB9CiMgMTcxMiAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBleHBsaWNp
dAogICAgICBudW1wdW5jdChfX2NfbG9jYWxlIF9fY2xvYywgc2l6ZV90IF9fcmVmcyA9IDApCiAg
ICAgIDogZmFjZXQoX19yZWZzKSwgX01fZGF0YShfX251bGwpCiAgICAgIHsgX01faW5pdGlhbGl6
ZV9udW1wdW5jdChfX2Nsb2MpOyB9CiMgMTcyNiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBjaGFyX3R5cGUKICAgICAgZGVjaW1hbF9wb2ludCgp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2RlY2ltYWxfcG9pbnQoKTsgfQojIDE3Mzkg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY2hh
cl90eXBlCiAgICAgIHRob3VzYW5kc19zZXAoKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5k
b190aG91c2FuZHNfc2VwKCk7IH0KIyAxNzcwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMv
bG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHN0cmluZwogICAgICBncm91cGluZygpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dyb3VwaW5nKCk7IH0KIyAxNzgzICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHN0cmluZ190eXBlCiAgICAg
IHRydWVuYW1lKCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fdHJ1ZW5hbWUoKTsgfQoj
IDE3OTYgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAg
ICAgc3RyaW5nX3R5cGUKICAgICAgZmFsc2VuYW1lKCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhp
cy0+ZG9fZmFsc2VuYW1lKCk7IH0KCiAgICBwcm90ZWN0ZWQ6CgogICAgICB2aXJ0dWFsCiAgICAg
IH5udW1wdW5jdCgpOwojIDE4MTMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVf
ZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjaGFyX3R5cGUKICAgICAgZG9fZGVjaW1hbF9wb2lu
dCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQ7IH0KIyAx
ODI1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAg
IHZpcnR1YWwgY2hhcl90eXBlCiAgICAgIGRvX3Rob3VzYW5kc19zZXAoKSBjb25zdAogICAgICB7
IHJldHVybiBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwOyB9CiMgMTgzOCAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIHN0cmluZwog
ICAgICBkb19ncm91cGluZygpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2RhdGEtPl9NX2dyb3Vw
aW5nOyB9CiMgMTg1MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMu
aCIgMwogICAgICB2aXJ0dWFsIHN0cmluZ190eXBlCiAgICAgIGRvX3RydWVuYW1lKCkgY29uc3QK
ICAgICAgeyByZXR1cm4gX01fZGF0YS0+X01fdHJ1ZW5hbWU7IH0KIyAxODY0ICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgc3RyaW5n
X3R5cGUKICAgICAgZG9fZmFsc2VuYW1lKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fZGF0YS0+
X01fZmFsc2VuYW1lOyB9CgoKICAgICAgdm9pZAogICAgICBfTV9pbml0aWFsaXplX251bXB1bmN0
KF9fY19sb2NhbGUgX19jbG9jID0gX19udWxsKTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVD4KICAgIGxvY2FsZTo6aWQgbnVtcHVuY3Q8X0NoYXJUPjo6aWQ7CgogIHRlbXBsYXRl
PD4KICAgIG51bXB1bmN0PGNoYXI+Ojp+bnVtcHVuY3QoKTsKCiAgdGVtcGxhdGU8PgogICAgdm9p
ZAogICAgbnVtcHVuY3Q8Y2hhcj46Ol9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jX2xvY2FsZSBf
X2Nsb2MpOwoKCiAgdGVtcGxhdGU8PgogICAgbnVtcHVuY3Q8d2NoYXJfdD46On5udW1wdW5jdCgp
OwoKICB0ZW1wbGF0ZTw+CiAgICB2b2lkCiAgICBudW1wdW5jdDx3Y2hhcl90Pjo6X01faW5pdGlh
bGl6ZV9udW1wdW5jdChfX2NfbG9jYWxlIF9fY2xvYyk7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJUPgogICAgY2xhc3MgbnVtcHVuY3RfYnluYW1lIDogcHVibGljIG51bXB1bmN0PF9DaGFy
VD4KICAgIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAg
ICB0eXBlZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQ+IHN0cmluZ190eXBlOwoKICAgICAgZXhwbGlj
aXQKICAgICAgbnVtcHVuY3RfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9
IDApCiAgICAgIDogbnVtcHVuY3Q8X0NoYXJUPihfX3JlZnMpCiAgICAgIHsKIGlmIChzdGQ6OnN0
cmNtcChfX3MsICJDIikgIT0gMCAmJiBzdGQ6OnN0cmNtcChfX3MsICJQT1NJWCIpICE9IDApCiAg
IHsKICAgICBfX2NfbG9jYWxlIF9fdG1wOwogICAgIHRoaXMtPl9TX2NyZWF0ZV9jX2xvY2FsZShf
X3RtcCwgX19zKTsKICAgICB0aGlzLT5fTV9pbml0aWFsaXplX251bXB1bmN0KF9fdG1wKTsKICAg
ICB0aGlzLT5fU19kZXN0cm95X2NfbG9jYWxlKF9fdG1wKTsKICAgfQogICAgICB9CgogICAgcHJv
dGVjdGVkOgogICAgICB2aXJ0dWFsCiAgICAgIH5udW1wdW5jdF9ieW5hbWUoKSB7IH0KICAgIH07
CgoKIyAxOTMxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgY2xhc3Mg
bnVtX2dldCA6IHB1YmxpYyBsb2NhbGU6OmZhY2V0CiAgICB7CiAgICBwdWJsaWM6CgoKCiAgICAg
IHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBfSW5JdGVyIGl0ZXJfdHlw
ZTsKCgoKICAgICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7CiMgMTk1MiAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBleHBsaWNpdAogICAgICBudW1f
Z2V0KHNpemVfdCBfX3JlZnMgPSAwKSA6IGZhY2V0KF9fcmVmcykgeyB9CiMgMTk3OCAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBpdGVyX3R5cGUK
ICAgICAgZ2V0KGl0ZXJfdHlwZSBfX2luLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lv
LAogICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGJvb2wmIF9fdikgY29uc3QKICAgICAgeyBy
ZXR1cm4gdGhpcy0+ZG9fZ2V0KF9faW4sIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQojIDIw
MTQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAg
aXRlcl90eXBlCiAgICAgIGdldChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3Nf
YmFzZSYgX19pbywKICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBsb25nJiBfX3YpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19pbywgX19lcnIsIF9f
dik7IH0KCiAgICAgIGl0ZXJfdHlwZQogICAgICBnZXQoaXRlcl90eXBlIF9faW4sIGl0ZXJfdHlw
ZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdW5z
aWduZWQgc2hvcnQmIF9fdikgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fZ2V0KF9faW4s
IF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQoKICAgICAgaXRlcl90eXBlCiAgICAgIGdldChp
dGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgaW9zX2Jh
c2U6Omlvc3RhdGUmIF9fZXJyLCB1bnNpZ25lZCBpbnQmIF9fdikgY29uc3QKICAgICAgeyByZXR1
cm4gdGhpcy0+ZG9fZ2V0KF9faW4sIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQoKICAgICAg
aXRlcl90eXBlCiAgICAgIGdldChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3Nf
YmFzZSYgX19pbywKICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB1bnNpZ25lZCBsb25nJiBf
X3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19pbywg
X19lcnIsIF9fdik7IH0KCgogICAgICBpdGVyX3R5cGUKICAgICAgZ2V0KGl0ZXJfdHlwZSBfX2lu
LCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICBpb3NfYmFzZTo6aW9zdGF0ZSYg
X19lcnIsIGxvbmcgbG9uZyYgX192KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQo
X19pbiwgX19lbmQsIF9faW8sIF9fZXJyLCBfX3YpOyB9CgogICAgICBpdGVyX3R5cGUKICAgICAg
Z2V0KGl0ZXJfdHlwZSBfX2luLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICBp
b3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHVuc2lnbmVkIGxvbmcgbG9uZyYgX192KSBjb25zdAog
ICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQoX19pbiwgX19lbmQsIF9faW8sIF9fZXJyLCBfX3Yp
OyB9CiMgMjA3MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIg
MwogICAgICBpdGVyX3R5cGUKICAgICAgZ2V0KGl0ZXJfdHlwZSBfX2luLCBpdGVyX3R5cGUgX19l
bmQsIGlvc19iYXNlJiBfX2lvLAogICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGZsb2F0JiBf
X3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19pbywg
X19lcnIsIF9fdik7IH0KCiAgICAgIGl0ZXJfdHlwZQogICAgICBnZXQoaXRlcl90eXBlIF9faW4s
IGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgIGlvc19iYXNlOjppb3N0YXRlJiBf
X2VyciwgZG91YmxlJiBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldChfX2lu
LCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7IH0KCiAgICAgIGl0ZXJfdHlwZQogICAgICBnZXQo
aXRlcl90eXBlIF9faW4sIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgIGlvc19i
YXNlOjppb3N0YXRlJiBfX2VyciwgbG9uZyBkb3VibGUmIF9fdikgY29uc3QKICAgICAgeyByZXR1
cm4gdGhpcy0+ZG9fZ2V0KF9faW4sIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQojIDIxMTUg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgaXRl
cl90eXBlCiAgICAgIGdldChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFz
ZSYgX19pbywKICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB2b2lkKiYgX192KSBjb25zdAog
ICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQoX19pbiwgX19lbmQsIF9faW8sIF9fZXJyLCBfX3Yp
OyB9CgogICAgcHJvdGVjdGVkOgoKICAgICAgdmlydHVhbCB+bnVtX2dldCgpIHsgfQoKICAgICAg
aXRlcl90eXBlCiAgICAgIF9NX2V4dHJhY3RfZmxvYXQoaXRlcl90eXBlLCBpdGVyX3R5cGUsIGlv
c19iYXNlJiwgaW9zX2Jhc2U6Omlvc3RhdGUmLAogICAgICAgICBzdHJpbmcmIF9feHRyYykgY29u
c3Q7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWVUPgogICAgICAgIGl0ZXJfdHlwZQog
ICAgICAgIF9NX2V4dHJhY3RfaW50KGl0ZXJfdHlwZSwgaXRlcl90eXBlLCBpb3NfYmFzZSYsIGlv
c19iYXNlOjppb3N0YXRlJiwKICAgICAgICAgX1ZhbHVlVCYgX192KSBjb25zdDsKCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVDI+CiAgICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFi
bGVfaWY8X19pc19jaGFyPF9DaGFyVDI+OjpfX3ZhbHVlLCBpbnQ+OjpfX3R5cGUKICAgICAgICBf
TV9maW5kKGNvbnN0IF9DaGFyVDIqLCBzaXplX3QgX19sZW4sIF9DaGFyVDIgX19jKSBjb25zdAog
ICAgICAgIHsKICAgaW50IF9fcmV0ID0gLTE7CiAgIGlmIChfX2xlbiA8PSAxMCkKICAgICB7CiAg
ICAgICBpZiAoX19jID49IF9DaGFyVDIoJzAnKSAmJiBfX2MgPCBfQ2hhclQyKF9DaGFyVDIoJzAn
KSArIF9fbGVuKSkKICBfX3JldCA9IF9fYyAtIF9DaGFyVDIoJzAnKTsKICAgICB9CiAgIGVsc2UK
ICAgICB7CiAgICAgICBpZiAoX19jID49IF9DaGFyVDIoJzAnKSAmJiBfX2MgPD0gX0NoYXJUMign
OScpKQogIF9fcmV0ID0gX19jIC0gX0NoYXJUMignMCcpOwogICAgICAgZWxzZSBpZiAoX19jID49
IF9DaGFyVDIoJ2EnKSAmJiBfX2MgPD0gX0NoYXJUMignZicpKQogIF9fcmV0ID0gMTAgKyAoX19j
IC0gX0NoYXJUMignYScpKTsKICAgICAgIGVsc2UgaWYgKF9fYyA+PSBfQ2hhclQyKCdBJykgJiYg
X19jIDw9IF9DaGFyVDIoJ0YnKSkKICBfX3JldCA9IDEwICsgKF9fYyAtIF9DaGFyVDIoJ0EnKSk7
CiAgICAgfQogICByZXR1cm4gX19yZXQ7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQyPgogICAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPCFfX2lzX2NoYXI8X0No
YXJUMj46Ol9fdmFsdWUsCiAgICAgICAgICBpbnQ+OjpfX3R5cGUKICAgICAgICBfTV9maW5kKGNv
bnN0IF9DaGFyVDIqIF9femVybywgc2l6ZV90IF9fbGVuLCBfQ2hhclQyIF9fYykgY29uc3QKICAg
ICAgICB7CiAgIGludCBfX3JldCA9IC0xOwogICBjb25zdCBjaGFyX3R5cGUqIF9fcSA9IGNoYXJf
dHJhaXRzPF9DaGFyVDI+OjpmaW5kKF9femVybywgX19sZW4sIF9fYyk7CiAgIGlmIChfX3EpCiAg
ICAgewogICAgICAgX19yZXQgPSBfX3EgLSBfX3plcm87CiAgICAgICBpZiAoX19yZXQgPiAxNSkK
ICBfX3JldCAtPSA2OwogICAgIH0KICAgcmV0dXJuIF9fcmV0OwogfQojIDIxODYgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBpdGVy
X3R5cGUKICAgICAgZG9fZ2V0KGl0ZXJfdHlwZSwgaXRlcl90eXBlLCBpb3NfYmFzZSYsIGlvc19i
YXNlOjppb3N0YXRlJiwgYm9vbCYpIGNvbnN0OwoKCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlCiAg
ICAgIGRvX2dldChpdGVyX3R5cGUsIGl0ZXJfdHlwZSwgaW9zX2Jhc2UmLCBpb3NfYmFzZTo6aW9z
dGF0ZSYsIGxvbmcmKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX2dl
dChpdGVyX3R5cGUsIGl0ZXJfdHlwZSwgaW9zX2Jhc2UmLCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19l
cnIsCiAgICAgICB1bnNpZ25lZCBzaG9ydCYpIGNvbnN0OwoKICAgICAgdmlydHVhbCBpdGVyX3R5
cGUKICAgICAgZG9fZ2V0KGl0ZXJfdHlwZSwgaXRlcl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNl
Ojppb3N0YXRlJiBfX2VyciwKICAgICAgdW5zaWduZWQgaW50JikgY29uc3Q7CgogICAgICB2aXJ0
dWFsIGl0ZXJfdHlwZQogICAgICBkb19nZXQoaXRlcl90eXBlLCBpdGVyX3R5cGUsIGlvc19iYXNl
JiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAogICAgICB1bnNpZ25lZCBsb25nJikgY29uc3Q7
CgoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fZ2V0KGl0ZXJfdHlwZSwgaXRlcl90
eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKICAgICAgbG9uZyBsb25n
JikgY29uc3Q7CgogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19nZXQoaXRlcl90eXBl
LCBpdGVyX3R5cGUsIGlvc19iYXNlJiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAogICAgICB1
bnNpZ25lZCBsb25nIGxvbmcmKSBjb25zdDsKCgogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAg
ICBkb19nZXQoaXRlcl90eXBlLCBpdGVyX3R5cGUsIGlvc19iYXNlJiwgaW9zX2Jhc2U6Omlvc3Rh
dGUmIF9fZXJyLAogICAgICBmbG9hdCYpIGNvbnN0OwoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUK
ICAgICAgZG9fZ2V0KGl0ZXJfdHlwZSwgaXRlcl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNlOjpp
b3N0YXRlJiBfX2VyciwKICAgICAgZG91YmxlJikgY29uc3Q7CgoKCgoKCgogICAgICB2aXJ0dWFs
IGl0ZXJfdHlwZQogICAgICBkb19nZXQoaXRlcl90eXBlLCBpdGVyX3R5cGUsIGlvc19iYXNlJiwg
aW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAogICAgICBsb25nIGRvdWJsZSYpIGNvbnN0OwoKCiAg
ICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX2dldChpdGVyX3R5cGUsIGl0ZXJfdHlwZSwg
aW9zX2Jhc2UmLCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCiAgICAgIHZvaWQqJikgY29uc3Q7
CiMgMjI0NSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwog
ICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAg
bG9jYWxlOjppZCBudW1fZ2V0PF9DaGFyVCwgX0luSXRlcj46OmlkOwojIDIyNjIgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgY2xhc3MgbnVtX3B1dCA6IHB1YmxpYyBs
b2NhbGU6OmZhY2V0CiAgICB7CiAgICBwdWJsaWM6CgoKCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNo
YXJfdHlwZTsKICAgICAgdHlwZWRlZiBfT3V0SXRlciBpdGVyX3R5cGU7CgoKCiAgICAgIHN0YXRp
YyBsb2NhbGU6OmlkIGlkOwojIDIyODMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2Nh
bGVfZmFjZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgbnVtX3B1dChzaXplX3QgX19yZWZz
ID0gMCkgOiBmYWNldChfX3JlZnMpIHsgfQojIDIzMDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgaXRlcl90eXBlCiAgICAgIHB1dChpdGVyX3R5
cGUgX19zLCBpb3NfYmFzZSYgX19mLCBjaGFyX3R5cGUgX19maWxsLCBib29sIF9fdikgY29uc3QK
ICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fcHV0KF9fcywgX19mLCBfX2ZpbGwsIF9fdik7IH0KIyAy
MzQzICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAg
IGl0ZXJfdHlwZQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9fZiwgY2hhcl90
eXBlIF9fZmlsbCwgbG9uZyBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX3B1dChf
X3MsIF9fZiwgX19maWxsLCBfX3YpOyB9CgogICAgICBpdGVyX3R5cGUKICAgICAgcHV0KGl0ZXJf
dHlwZSBfX3MsIGlvc19iYXNlJiBfX2YsIGNoYXJfdHlwZSBfX2ZpbGwsCiAgIHVuc2lnbmVkIGxv
bmcgX192KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19wdXQoX19zLCBfX2YsIF9fZmls
bCwgX192KTsgfQoKCiAgICAgIGl0ZXJfdHlwZQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9z
X2Jhc2UmIF9fZiwgY2hhcl90eXBlIF9fZmlsbCwgbG9uZyBsb25nIF9fdikgY29uc3QKICAgICAg
eyByZXR1cm4gdGhpcy0+ZG9fcHV0KF9fcywgX19mLCBfX2ZpbGwsIF9fdik7IH0KCiAgICAgIGl0
ZXJfdHlwZQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9fZiwgY2hhcl90eXBl
IF9fZmlsbCwKICAgdW5zaWduZWQgbG9uZyBsb25nIF9fdikgY29uc3QKICAgICAgeyByZXR1cm4g
dGhpcy0+ZG9fcHV0KF9fcywgX19mLCBfX2ZpbGwsIF9fdik7IH0KIyAyNDA2ICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGl0ZXJfdHlwZQogICAg
ICBwdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9fZiwgY2hhcl90eXBlIF9fZmlsbCwgZG91
YmxlIF9fdikgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fcHV0KF9fcywgX19mLCBfX2Zp
bGwsIF9fdik7IH0KCiAgICAgIGl0ZXJfdHlwZQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9z
X2Jhc2UmIF9fZiwgY2hhcl90eXBlIF9fZmlsbCwKICAgbG9uZyBkb3VibGUgX192KSBjb25zdAog
ICAgICB7IHJldHVybiB0aGlzLT5kb19wdXQoX19zLCBfX2YsIF9fZmlsbCwgX192KTsgfQojIDI0
MzEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAg
aXRlcl90eXBlCiAgICAgIHB1dChpdGVyX3R5cGUgX19zLCBpb3NfYmFzZSYgX19mLCBjaGFyX3R5
cGUgX19maWxsLAogICBjb25zdCB2b2lkKiBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMt
PmRvX3B1dChfX3MsIF9fZiwgX19maWxsLCBfX3YpOyB9CgogICAgcHJvdGVjdGVkOgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWVUPgogICAgICAgIGl0ZXJfdHlwZQogICAgICAgIF9NX2lu
c2VydF9mbG9hdChpdGVyX3R5cGUsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLAog
ICBjaGFyIF9fbW9kLCBfVmFsdWVUIF9fdikgY29uc3Q7CgogICAgICB2b2lkCiAgICAgIF9NX2dy
b3VwX2Zsb2F0KGNvbnN0IGNoYXIqIF9fZ3JvdXBpbmcsIHNpemVfdCBfX2dyb3VwaW5nX3NpemUs
CiAgICAgICBjaGFyX3R5cGUgX19zZXAsIGNvbnN0IGNoYXJfdHlwZSogX19wLCBjaGFyX3R5cGUq
IF9fbmV3LAogICAgICAgY2hhcl90eXBlKiBfX2NzLCBpbnQmIF9fbGVuKSBjb25zdDsKCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+CiAgICAgICAgaXRlcl90eXBlCiAgICAgICAgX01f
aW5zZXJ0X2ludChpdGVyX3R5cGUsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLAog
ICAgICAgIF9WYWx1ZVQgX192KSBjb25zdDsKCiAgICAgIHZvaWQKICAgICAgX01fZ3JvdXBfaW50
KGNvbnN0IGNoYXIqIF9fZ3JvdXBpbmcsIHNpemVfdCBfX2dyb3VwaW5nX3NpemUsCiAgICAgY2hh
cl90eXBlIF9fc2VwLCBpb3NfYmFzZSYgX19pbywgY2hhcl90eXBlKiBfX25ldywKICAgICBjaGFy
X3R5cGUqIF9fY3MsIGludCYgX19sZW4pIGNvbnN0OwoKICAgICAgdm9pZAogICAgICBfTV9wYWQo
Y2hhcl90eXBlIF9fZmlsbCwgc3RyZWFtc2l6ZSBfX3csIGlvc19iYXNlJiBfX2lvLAogICAgICBj
aGFyX3R5cGUqIF9fbmV3LCBjb25zdCBjaGFyX3R5cGUqIF9fY3MsIGludCYgX19sZW4pIGNvbnN0
OwoKCiAgICAgIHZpcnR1YWwKICAgICAgfm51bV9wdXQoKSB7IH07CiMgMjQ3OSAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGl0ZXJf
dHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlLCBpb3NfYmFzZSYsIGNoYXJfdHlwZSBfX2ZpbGws
IGJvb2wgX192KSBjb25zdDsKCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX3B1dChp
dGVyX3R5cGUsIGlvc19iYXNlJiwgY2hhcl90eXBlIF9fZmlsbCwgbG9uZyBfX3YpIGNvbnN0OwoK
ICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fcHV0KGl0ZXJfdHlwZSwgaW9zX2Jhc2Um
LCBjaGFyX3R5cGUgX19maWxsLCB1bnNpZ25lZCBsb25nKSBjb25zdDsKCgogICAgICB2aXJ0dWFs
IGl0ZXJfdHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlLCBpb3NfYmFzZSYsIGNoYXJfdHlwZSBf
X2ZpbGwsIGxvbmcgbG9uZyBfX3YpIGNvbnN0OwoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAg
ICAgZG9fcHV0KGl0ZXJfdHlwZSwgaW9zX2Jhc2UmLCBjaGFyX3R5cGUgX19maWxsLCB1bnNpZ25l
ZCBsb25nIGxvbmcpIGNvbnN0OwoKCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX3B1
dChpdGVyX3R5cGUsIGlvc19iYXNlJiwgY2hhcl90eXBlIF9fZmlsbCwgZG91YmxlIF9fdikgY29u
c3Q7CgoKCgoKCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX3B1dChpdGVyX3R5cGUs
IGlvc19iYXNlJiwgY2hhcl90eXBlIF9fZmlsbCwgbG9uZyBkb3VibGUgX192KSBjb25zdDsKCgog
ICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlLCBpb3NfYmFzZSYs
IGNoYXJfdHlwZSBfX2ZpbGwsIGNvbnN0IHZvaWQqIF9fdikgY29uc3Q7CgoKCgoKCgogICAgfTsK
CiAgdGVtcGxhdGUgPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+CiAgICBsb2Nh
bGU6OmlkIG51bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46OmlkOwoKCiMgMjUzNiAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVD4KICAgIGNsYXNzIGNvbGxhdGUgOiBwdWJsaWMgbG9jYWxlOjpmYWNldAogICAgewog
ICAgcHVibGljOgoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVk
ZWYgYmFzaWNfc3RyaW5nPF9DaGFyVD4gc3RyaW5nX3R5cGU7CgoKICAgIHByb3RlY3RlZDoKCgog
ICAgICBfX2NfbG9jYWxlIF9NX2NfbG9jYWxlX2NvbGxhdGU7CgogICAgcHVibGljOgoKICAgICAg
c3RhdGljIGxvY2FsZTo6aWQgaWQ7CiMgMjU2MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBleHBsaWNpdAogICAgICBjb2xsYXRlKHNpemVfdCBf
X3JlZnMgPSAwKQogICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2NfbG9jYWxlX2NvbGxhdGUoX1Nf
Z2V0X2NfbG9jYWxlKCkpCiAgICAgIHsgfQojIDI1NzcgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgY29sbGF0ZShfX2Nf
bG9jYWxlIF9fY2xvYywgc2l6ZV90IF9fcmVmcyA9IDApCiAgICAgIDogZmFjZXQoX19yZWZzKSwg
X01fY19sb2NhbGVfY29sbGF0ZShfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpKQogICAgICB7IH0K
IyAyNTk0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAg
ICAgIGludAogICAgICBjb21wYXJlKGNvbnN0IF9DaGFyVCogX19sbzEsIGNvbnN0IF9DaGFyVCog
X19oaTEsCiAgICAgICBjb25zdCBfQ2hhclQqIF9fbG8yLCBjb25zdCBfQ2hhclQqIF9faGkyKSBj
b25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19jb21wYXJlKF9fbG8xLCBfX2hpMSwgX19sbzIs
IF9faGkyKTsgfQojIDI2MTMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFj
ZXRzLmgiIDMKICAgICAgc3RyaW5nX3R5cGUKICAgICAgdHJhbnNmb3JtKGNvbnN0IF9DaGFyVCog
X19sbywgY29uc3QgX0NoYXJUKiBfX2hpKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb190
cmFuc2Zvcm0oX19sbywgX19oaSk7IH0KIyAyNjI3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGxvbmcKICAgICAgaGFzaChjb25zdCBfQ2hhclQq
IF9fbG8sIGNvbnN0IF9DaGFyVCogX19oaSkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9f
aGFzaChfX2xvLCBfX2hpKTsgfQoKCiAgICAgIGludAogICAgICBfTV9jb21wYXJlKGNvbnN0IF9D
aGFyVCosIGNvbnN0IF9DaGFyVCopIGNvbnN0OwoKICAgICAgc2l6ZV90CiAgICAgIF9NX3RyYW5z
Zm9ybShfQ2hhclQqLCBjb25zdCBfQ2hhclQqLCBzaXplX3QpIGNvbnN0OwoKICBwcm90ZWN0ZWQ6
CgogICAgICB2aXJ0dWFsCiAgICAgIH5jb2xsYXRlKCkKICAgICAgeyBfU19kZXN0cm95X2NfbG9j
YWxlKF9NX2NfbG9jYWxlX2NvbGxhdGUpOyB9CiMgMjY1NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGludAogICAgICBkb19jb21w
YXJlKGNvbnN0IF9DaGFyVCogX19sbzEsIGNvbnN0IF9DaGFyVCogX19oaTEsCiAgIGNvbnN0IF9D
aGFyVCogX19sbzIsIGNvbnN0IF9DaGFyVCogX19oaTIpIGNvbnN0OwojIDI2NzIgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBzdHJp
bmdfdHlwZQogICAgICBkb190cmFuc2Zvcm0oY29uc3QgX0NoYXJUKiBfX2xvLCBjb25zdCBfQ2hh
clQqIF9faGkpIGNvbnN0OwojIDI2ODUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2Nh
bGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBsb25nCiAgICAgIGRvX2hhc2goY29uc3QgX0No
YXJUKiBfX2xvLCBjb25zdCBfQ2hhclQqIF9faGkpIGNvbnN0OwogICAgfTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJUPgogICAgbG9jYWxlOjppZCBjb2xsYXRlPF9DaGFyVD46OmlkOwoKCiAg
dGVtcGxhdGU8PgogICAgaW50CiAgICBjb2xsYXRlPGNoYXI+OjpfTV9jb21wYXJlKGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKikgY29uc3Q7CgogIHRlbXBsYXRlPD4KICAgIHNpemVfdAogICAgY29s
bGF0ZTxjaGFyPjo6X01fdHJhbnNmb3JtKGNoYXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KSBjb25z
dDsKCgogIHRlbXBsYXRlPD4KICAgIGludAogICAgY29sbGF0ZTx3Y2hhcl90Pjo6X01fY29tcGFy
ZShjb25zdCB3Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCopIGNvbnN0OwoKICB0ZW1wbGF0ZTw+CiAg
ICBzaXplX3QKICAgIGNvbGxhdGU8d2NoYXJfdD46Ol9NX3RyYW5zZm9ybSh3Y2hhcl90KiwgY29u
c3Qgd2NoYXJfdCosIHNpemVfdCkgY29uc3Q7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
PgogICAgY2xhc3MgY29sbGF0ZV9ieW5hbWUgOiBwdWJsaWMgY29sbGF0ZTxfQ2hhclQ+CiAgICB7
CiAgICBwdWJsaWM6CgoKICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAgICB0eXBl
ZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQ+IHN0cmluZ190eXBlOwoKCiAgICAgIGV4cGxpY2l0CiAg
ICAgIGNvbGxhdGVfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDApCiAg
ICAgIDogY29sbGF0ZTxfQ2hhclQ+KF9fcmVmcykKICAgICAgewogaWYgKHN0ZDo6c3RyY21wKF9f
cywgIkMiKSAhPSAwICYmIHN0ZDo6c3RyY21wKF9fcywgIlBPU0lYIikgIT0gMCkKICAgewogICAg
IHRoaXMtPl9TX2Rlc3Ryb3lfY19sb2NhbGUodGhpcy0+X01fY19sb2NhbGVfY29sbGF0ZSk7CiAg
ICAgdGhpcy0+X1NfY3JlYXRlX2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX2NvbGxhdGUsIF9f
cyk7CiAgIH0KICAgICAgfQoKICAgIHByb3RlY3RlZDoKICAgICAgdmlydHVhbAogICAgICB+Y29s
bGF0ZV9ieW5hbWUoKSB7IH0KICAgIH07CiMgMjc0NSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL2xvY2FsZV9mYWNldHMuaCIgMwogIGNsYXNzIHRpbWVfYmFzZQogIHsKICBwdWJsaWM6CiAg
ICBlbnVtIGRhdGVvcmRlciB7IG5vX29yZGVyLCBkbXksIG1keSwgeW1kLCB5ZG0gfTsKICB9OwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBzdHJ1Y3QgX190aW1lcHVuY3RfY2FjaGUg
OiBwdWJsaWMgbG9jYWxlOjpmYWNldAogICAgewoKICAgICAgc3RhdGljIGNvbnN0IF9DaGFyVCog
X1NfdGltZXpvbmVzWzE0XTsKCiAgICAgIGNvbnN0IF9DaGFyVCogX01fZGF0ZV9mb3JtYXQ7CiAg
ICAgIGNvbnN0IF9DaGFyVCogX01fZGF0ZV9lcmFfZm9ybWF0OwogICAgICBjb25zdCBfQ2hhclQq
IF9NX3RpbWVfZm9ybWF0OwogICAgICBjb25zdCBfQ2hhclQqIF9NX3RpbWVfZXJhX2Zvcm1hdDsK
ICAgICAgY29uc3QgX0NoYXJUKiBfTV9kYXRlX3RpbWVfZm9ybWF0OwogICAgICBjb25zdCBfQ2hh
clQqIF9NX2RhdGVfdGltZV9lcmFfZm9ybWF0OwogICAgICBjb25zdCBfQ2hhclQqIF9NX2FtOwog
ICAgICBjb25zdCBfQ2hhclQqIF9NX3BtOwogICAgICBjb25zdCBfQ2hhclQqIF9NX2FtX3BtX2Zv
cm1hdDsKCgogICAgICBjb25zdCBfQ2hhclQqIF9NX2RheTE7CiAgICAgIGNvbnN0IF9DaGFyVCog
X01fZGF5MjsKICAgICAgY29uc3QgX0NoYXJUKiBfTV9kYXkzOwogICAgICBjb25zdCBfQ2hhclQq
IF9NX2RheTQ7CiAgICAgIGNvbnN0IF9DaGFyVCogX01fZGF5NTsKICAgICAgY29uc3QgX0NoYXJU
KiBfTV9kYXk2OwogICAgICBjb25zdCBfQ2hhclQqIF9NX2RheTc7CgoKICAgICAgY29uc3QgX0No
YXJUKiBfTV9hZGF5MTsKICAgICAgY29uc3QgX0NoYXJUKiBfTV9hZGF5MjsKICAgICAgY29uc3Qg
X0NoYXJUKiBfTV9hZGF5MzsKICAgICAgY29uc3QgX0NoYXJUKiBfTV9hZGF5NDsKICAgICAgY29u
c3QgX0NoYXJUKiBfTV9hZGF5NTsKICAgICAgY29uc3QgX0NoYXJUKiBfTV9hZGF5NjsKICAgICAg
Y29uc3QgX0NoYXJUKiBfTV9hZGF5NzsKCgogICAgICBjb25zdCBfQ2hhclQqIF9NX21vbnRoMDE7
CiAgICAgIGNvbnN0IF9DaGFyVCogX01fbW9udGgwMjsKICAgICAgY29uc3QgX0NoYXJUKiBfTV9t
b250aDAzOwogICAgICBjb25zdCBfQ2hhclQqIF9NX21vbnRoMDQ7CiAgICAgIGNvbnN0IF9DaGFy
VCogX01fbW9udGgwNTsKICAgICAgY29uc3QgX0NoYXJUKiBfTV9tb250aDA2OwogICAgICBjb25z
dCBfQ2hhclQqIF9NX21vbnRoMDc7CiAgICAgIGNvbnN0IF9DaGFyVCogX01fbW9udGgwODsKICAg
ICAgY29uc3QgX0NoYXJUKiBfTV9tb250aDA5OwogICAgICBjb25zdCBfQ2hhclQqIF9NX21vbnRo
MTA7CiAgICAgIGNvbnN0IF9DaGFyVCogX01fbW9udGgxMTsKICAgICAgY29uc3QgX0NoYXJUKiBf
TV9tb250aDEyOwoKCiAgICAgIGNvbnN0IF9DaGFyVCogX01fYW1vbnRoMDE7CiAgICAgIGNvbnN0
IF9DaGFyVCogX01fYW1vbnRoMDI7CiAgICAgIGNvbnN0IF9DaGFyVCogX01fYW1vbnRoMDM7CiAg
ICAgIGNvbnN0IF9DaGFyVCogX01fYW1vbnRoMDQ7CiAgICAgIGNvbnN0IF9DaGFyVCogX01fYW1v
bnRoMDU7CiAgICAgIGNvbnN0IF9DaGFyVCogX01fYW1vbnRoMDY7CiAgICAgIGNvbnN0IF9DaGFy
VCogX01fYW1vbnRoMDc7CiAgICAgIGNvbnN0IF9DaGFyVCogX01fYW1vbnRoMDg7CiAgICAgIGNv
bnN0IF9DaGFyVCogX01fYW1vbnRoMDk7CiAgICAgIGNvbnN0IF9DaGFyVCogX01fYW1vbnRoMTA7
CiAgICAgIGNvbnN0IF9DaGFyVCogX01fYW1vbnRoMTE7CiAgICAgIGNvbnN0IF9DaGFyVCogX01f
YW1vbnRoMTI7CgogICAgICBib29sIF9NX2FsbG9jYXRlZDsKCiAgICAgIF9fdGltZXB1bmN0X2Nh
Y2hlKHNpemVfdCBfX3JlZnMgPSAwKSA6IGZhY2V0KF9fcmVmcyksCiAgICAgIF9NX2RhdGVfZm9y
bWF0KF9fbnVsbCksIF9NX2RhdGVfZXJhX2Zvcm1hdChfX251bGwpLCBfTV90aW1lX2Zvcm1hdChf
X251bGwpLAogICAgICBfTV90aW1lX2VyYV9mb3JtYXQoX19udWxsKSwgX01fZGF0ZV90aW1lX2Zv
cm1hdChfX251bGwpLAogICAgICBfTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdChfX251bGwpLCBfTV9h
bShfX251bGwpLCBfTV9wbShfX251bGwpLAogICAgICBfTV9hbV9wbV9mb3JtYXQoX19udWxsKSwg
X01fZGF5MShfX251bGwpLCBfTV9kYXkyKF9fbnVsbCksIF9NX2RheTMoX19udWxsKSwKICAgICAg
X01fZGF5NChfX251bGwpLCBfTV9kYXk1KF9fbnVsbCksIF9NX2RheTYoX19udWxsKSwgX01fZGF5
NyhfX251bGwpLAogICAgICBfTV9hZGF5MShfX251bGwpLCBfTV9hZGF5MihfX251bGwpLCBfTV9h
ZGF5MyhfX251bGwpLCBfTV9hZGF5NChfX251bGwpLAogICAgICBfTV9hZGF5NShfX251bGwpLCBf
TV9hZGF5NihfX251bGwpLCBfTV9hZGF5NyhfX251bGwpLCBfTV9tb250aDAxKF9fbnVsbCksCiAg
ICAgIF9NX21vbnRoMDIoX19udWxsKSwgX01fbW9udGgwMyhfX251bGwpLCBfTV9tb250aDA0KF9f
bnVsbCksIF9NX21vbnRoMDUoX19udWxsKSwKICAgICAgX01fbW9udGgwNihfX251bGwpLCBfTV9t
b250aDA3KF9fbnVsbCksIF9NX21vbnRoMDgoX19udWxsKSwgX01fbW9udGgwOShfX251bGwpLAog
ICAgICBfTV9tb250aDEwKF9fbnVsbCksIF9NX21vbnRoMTEoX19udWxsKSwgX01fbW9udGgxMihf
X251bGwpLCBfTV9hbW9udGgwMShfX251bGwpLAogICAgICBfTV9hbW9udGgwMihfX251bGwpLCBf
TV9hbW9udGgwMyhfX251bGwpLCBfTV9hbW9udGgwNChfX251bGwpLAogICAgICBfTV9hbW9udGgw
NShfX251bGwpLCBfTV9hbW9udGgwNihfX251bGwpLCBfTV9hbW9udGgwNyhfX251bGwpLAogICAg
ICBfTV9hbW9udGgwOChfX251bGwpLCBfTV9hbW9udGgwOShfX251bGwpLCBfTV9hbW9udGgxMChf
X251bGwpLAogICAgICBfTV9hbW9udGgxMShfX251bGwpLCBfTV9hbW9udGgxMihfX251bGwpLCBf
TV9hbGxvY2F0ZWQoZmFsc2UpCiAgICAgIHsgfQoKICAgICAgfl9fdGltZXB1bmN0X2NhY2hlKCk7
CgogICAgICB2b2lkCiAgICAgIF9NX2NhY2hlKGNvbnN0IGxvY2FsZSYgX19sb2MpOwoKICAgIHBy
aXZhdGU6CiAgICAgIF9fdGltZXB1bmN0X2NhY2hlJgogICAgICBvcGVyYXRvcj0oY29uc3QgX190
aW1lcHVuY3RfY2FjaGUmKTsKCiAgICAgIGV4cGxpY2l0CiAgICAgIF9fdGltZXB1bmN0X2NhY2hl
KGNvbnN0IF9fdGltZXB1bmN0X2NhY2hlJik7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQ+CiAgICBfX3RpbWVwdW5jdF9jYWNoZTxfQ2hhclQ+Ojp+X190aW1lcHVuY3RfY2FjaGUo
KQogICAgewogICAgICBpZiAoX01fYWxsb2NhdGVkKQogewoKIH0KICAgIH0KCgogIHRlbXBsYXRl
PD4KICAgIGNvbnN0IGNoYXIqCiAgICBfX3RpbWVwdW5jdF9jYWNoZTxjaGFyPjo6X1NfdGltZXpv
bmVzWzE0XTsKCgogIHRlbXBsYXRlPD4KICAgIGNvbnN0IHdjaGFyX3QqCiAgICBfX3RpbWVwdW5j
dF9jYWNoZTx3Y2hhcl90Pjo6X1NfdGltZXpvbmVzWzE0XTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQ+CiAgICBjb25zdCBfQ2hhclQqIF9fdGltZXB1bmN0X2NhY2hlPF9DaGFyVD46Ol9T
X3RpbWV6b25lc1sxNF07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIF9f
dGltZXB1bmN0IDogcHVibGljIGxvY2FsZTo6ZmFjZXQKICAgIHsKICAgIHB1YmxpYzoKCiAgICAg
IHR5cGVkZWYgX0NoYXJUIF9fY2hhcl90eXBlOwogICAgICB0eXBlZGVmIGJhc2ljX3N0cmluZzxf
Q2hhclQ+IF9fc3RyaW5nX3R5cGU7CiAgICAgIHR5cGVkZWYgX190aW1lcHVuY3RfY2FjaGU8X0No
YXJUPiBfX2NhY2hlX3R5cGU7CgogICAgcHJvdGVjdGVkOgogICAgICBfX2NhY2hlX3R5cGUqIF9N
X2RhdGE7CiAgICAgIF9fY19sb2NhbGUgX01fY19sb2NhbGVfdGltZXB1bmN0OwogICAgICBjb25z
dCBjaGFyKiBfTV9uYW1lX3RpbWVwdW5jdDsKCiAgICBwdWJsaWM6CgogICAgICBzdGF0aWMgbG9j
YWxlOjppZCBpZDsKCiAgICAgIGV4cGxpY2l0CiAgICAgIF9fdGltZXB1bmN0KHNpemVfdCBfX3Jl
ZnMgPSAwKTsKCiAgICAgIGV4cGxpY2l0CiAgICAgIF9fdGltZXB1bmN0KF9fY2FjaGVfdHlwZSog
X19jYWNoZSwgc2l6ZV90IF9fcmVmcyA9IDApOwojIDI5MDMgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgX190aW1lcHVu
Y3QoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDAp
OwoKCgogICAgICB2b2lkCiAgICAgIF9NX3B1dChfQ2hhclQqIF9fcywgc2l6ZV90IF9fbWF4bGVu
LCBjb25zdCBfQ2hhclQqIF9fZm9ybWF0LAogICAgICBjb25zdCB0bSogX190bSkgY29uc3Q7Cgog
ICAgICB2b2lkCiAgICAgIF9NX2RhdGVfZm9ybWF0cyhjb25zdCBfQ2hhclQqKiBfX2RhdGUpIGNv
bnN0CiAgICAgIHsKCiBfX2RhdGVbMF0gPSBfTV9kYXRhLT5fTV9kYXRlX2Zvcm1hdDsKIF9fZGF0
ZVsxXSA9IF9NX2RhdGEtPl9NX2RhdGVfZXJhX2Zvcm1hdDsKICAgICAgfQoKICAgICAgdm9pZAog
ICAgICBfTV90aW1lX2Zvcm1hdHMoY29uc3QgX0NoYXJUKiogX190aW1lKSBjb25zdAogICAgICB7
CgogX190aW1lWzBdID0gX01fZGF0YS0+X01fdGltZV9mb3JtYXQ7CiBfX3RpbWVbMV0gPSBfTV9k
YXRhLT5fTV90aW1lX2VyYV9mb3JtYXQ7CiAgICAgIH0KCiAgICAgIHZvaWQKICAgICAgX01fZGF0
ZV90aW1lX2Zvcm1hdHMoY29uc3QgX0NoYXJUKiogX19kdCkgY29uc3QKICAgICAgewoKIF9fZHRb
MF0gPSBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZm9ybWF0OwogX19kdFsxXSA9IF9NX2RhdGEtPl9N
X2RhdGVfdGltZV9lcmFfZm9ybWF0OwogICAgICB9CgogICAgICB2b2lkCiAgICAgIF9NX2FtX3Bt
X2Zvcm1hdChjb25zdCBfQ2hhclQqIF9fYW1wbSkgY29uc3QKICAgICAgeyBfX2FtcG0gPSBfTV9k
YXRhLT5fTV9hbV9wbV9mb3JtYXQ7IH0KCiAgICAgIHZvaWQKICAgICAgX01fYW1fcG0oY29uc3Qg
X0NoYXJUKiogX19hbXBtKSBjb25zdAogICAgICB7CiBfX2FtcG1bMF0gPSBfTV9kYXRhLT5fTV9h
bTsKIF9fYW1wbVsxXSA9IF9NX2RhdGEtPl9NX3BtOwogICAgICB9CgogICAgICB2b2lkCiAgICAg
IF9NX2RheXMoY29uc3QgX0NoYXJUKiogX19kYXlzKSBjb25zdAogICAgICB7CiBfX2RheXNbMF0g
PSBfTV9kYXRhLT5fTV9kYXkxOwogX19kYXlzWzFdID0gX01fZGF0YS0+X01fZGF5MjsKIF9fZGF5
c1syXSA9IF9NX2RhdGEtPl9NX2RheTM7CiBfX2RheXNbM10gPSBfTV9kYXRhLT5fTV9kYXk0Owog
X19kYXlzWzRdID0gX01fZGF0YS0+X01fZGF5NTsKIF9fZGF5c1s1XSA9IF9NX2RhdGEtPl9NX2Rh
eTY7CiBfX2RheXNbNl0gPSBfTV9kYXRhLT5fTV9kYXk3OwogICAgICB9CgogICAgICB2b2lkCiAg
ICAgIF9NX2RheXNfYWJicmV2aWF0ZWQoY29uc3QgX0NoYXJUKiogX19kYXlzKSBjb25zdAogICAg
ICB7CiBfX2RheXNbMF0gPSBfTV9kYXRhLT5fTV9hZGF5MTsKIF9fZGF5c1sxXSA9IF9NX2RhdGEt
Pl9NX2FkYXkyOwogX19kYXlzWzJdID0gX01fZGF0YS0+X01fYWRheTM7CiBfX2RheXNbM10gPSBf
TV9kYXRhLT5fTV9hZGF5NDsKIF9fZGF5c1s0XSA9IF9NX2RhdGEtPl9NX2FkYXk1OwogX19kYXlz
WzVdID0gX01fZGF0YS0+X01fYWRheTY7CiBfX2RheXNbNl0gPSBfTV9kYXRhLT5fTV9hZGF5NzsK
ICAgICAgfQoKICAgICAgdm9pZAogICAgICBfTV9tb250aHMoY29uc3QgX0NoYXJUKiogX19tb250
aHMpIGNvbnN0CiAgICAgIHsKIF9fbW9udGhzWzBdID0gX01fZGF0YS0+X01fbW9udGgwMTsKIF9f
bW9udGhzWzFdID0gX01fZGF0YS0+X01fbW9udGgwMjsKIF9fbW9udGhzWzJdID0gX01fZGF0YS0+
X01fbW9udGgwMzsKIF9fbW9udGhzWzNdID0gX01fZGF0YS0+X01fbW9udGgwNDsKIF9fbW9udGhz
WzRdID0gX01fZGF0YS0+X01fbW9udGgwNTsKIF9fbW9udGhzWzVdID0gX01fZGF0YS0+X01fbW9u
dGgwNjsKIF9fbW9udGhzWzZdID0gX01fZGF0YS0+X01fbW9udGgwNzsKIF9fbW9udGhzWzddID0g
X01fZGF0YS0+X01fbW9udGgwODsKIF9fbW9udGhzWzhdID0gX01fZGF0YS0+X01fbW9udGgwOTsK
IF9fbW9udGhzWzldID0gX01fZGF0YS0+X01fbW9udGgxMDsKIF9fbW9udGhzWzEwXSA9IF9NX2Rh
dGEtPl9NX21vbnRoMTE7CiBfX21vbnRoc1sxMV0gPSBfTV9kYXRhLT5fTV9tb250aDEyOwogICAg
ICB9CgogICAgICB2b2lkCiAgICAgIF9NX21vbnRoc19hYmJyZXZpYXRlZChjb25zdCBfQ2hhclQq
KiBfX21vbnRocykgY29uc3QKICAgICAgewogX19tb250aHNbMF0gPSBfTV9kYXRhLT5fTV9hbW9u
dGgwMTsKIF9fbW9udGhzWzFdID0gX01fZGF0YS0+X01fYW1vbnRoMDI7CiBfX21vbnRoc1syXSA9
IF9NX2RhdGEtPl9NX2Ftb250aDAzOwogX19tb250aHNbM10gPSBfTV9kYXRhLT5fTV9hbW9udGgw
NDsKIF9fbW9udGhzWzRdID0gX01fZGF0YS0+X01fYW1vbnRoMDU7CiBfX21vbnRoc1s1XSA9IF9N
X2RhdGEtPl9NX2Ftb250aDA2OwogX19tb250aHNbNl0gPSBfTV9kYXRhLT5fTV9hbW9udGgwNzsK
IF9fbW9udGhzWzddID0gX01fZGF0YS0+X01fYW1vbnRoMDg7CiBfX21vbnRoc1s4XSA9IF9NX2Rh
dGEtPl9NX2Ftb250aDA5OwogX19tb250aHNbOV0gPSBfTV9kYXRhLT5fTV9hbW9udGgxMDsKIF9f
bW9udGhzWzEwXSA9IF9NX2RhdGEtPl9NX2Ftb250aDExOwogX19tb250aHNbMTFdID0gX01fZGF0
YS0+X01fYW1vbnRoMTI7CiAgICAgIH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgIHZpcnR1YWwKICAg
ICAgfl9fdGltZXB1bmN0KCk7CgoKICAgICAgdm9pZAogICAgICBfTV9pbml0aWFsaXplX3RpbWVw
dW5jdChfX2NfbG9jYWxlIF9fY2xvYyA9IF9fbnVsbCk7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQ+CiAgICBsb2NhbGU6OmlkIF9fdGltZXB1bmN0PF9DaGFyVD46OmlkOwoKCiAg
dGVtcGxhdGU8PgogICAgdm9pZAogICAgX190aW1lcHVuY3Q8Y2hhcj46Ol9NX2luaXRpYWxpemVf
dGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKTsKCiAgdGVtcGxhdGU8PgogICAgdm9pZAogICAg
X190aW1lcHVuY3Q8Y2hhcj46Ol9NX3B1dChjaGFyKiwgc2l6ZV90LCBjb25zdCBjaGFyKiwgY29u
c3QgdG0qKSBjb25zdDsKCgogIHRlbXBsYXRlPD4KICAgIHZvaWQKICAgIF9fdGltZXB1bmN0PHdj
aGFyX3Q+OjpfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2NfbG9jYWxlIF9fY2xvYyk7CgogIHRl
bXBsYXRlPD4KICAgIHZvaWQKICAgIF9fdGltZXB1bmN0PHdjaGFyX3Q+OjpfTV9wdXQod2NoYXJf
dCosIHNpemVfdCwgY29uc3Qgd2NoYXJfdCosCiAgICAgY29uc3QgdG0qKSBjb25zdDsKCgp9CgoK
IyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYtYXBwbGUtZGFyd2luMTAveDg2XzY0L2Jp
dHMvdGltZV9tZW1iZXJzLmgiIDEgMwojIDQyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2k2ODYt
YXBwbGUtZGFyd2luMTAveDg2XzY0L2JpdHMvdGltZV9tZW1iZXJzLmgiIDMKbmFtZXNwYWNlIHN0
ZCB7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIF9fdGltZXB1bmN0PF9DaGFyVD46
Ol9fdGltZXB1bmN0KHNpemVfdCBfX3JlZnMpCiAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEo
X19udWxsKQogICAgewogICAgICBfTV9uYW1lX3RpbWVwdW5jdCA9IF9TX2dldF9jX25hbWUoKTsK
ICAgICAgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJUPgogICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jYWNoZV90
eXBlKiBfX2NhY2hlLCBzaXplX3QgX19yZWZzKQogICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRh
KF9fY2FjaGUpCiAgICB7CiAgICAgIF9NX25hbWVfdGltZXB1bmN0ID0gX1NfZ2V0X2NfbmFtZSgp
OwogICAgICBfTV9pbml0aWFsaXplX3RpbWVwdW5jdCgpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQ+CiAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+OjpfX3RpbWVwdW5jdChfX2NfbG9j
YWxlIF9fY2xvYywgY29uc3QgY2hhciogX19zLAogICAgICAgICBzaXplX3QgX19yZWZzKQogICAg
OiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKF9fbnVsbCkKICAgIHsKICAgICAgY29uc3Qgc2l6ZV90
IF9fbGVuID0gc3RkOjpzdHJsZW4oX19zKSArIDE7CiAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNo
YXJbX19sZW5dOwogICAgICBzdGQ6Om1lbWNweShfX3RtcCwgX19zLCBfX2xlbik7CiAgICAgIF9N
X25hbWVfdGltZXB1bmN0ID0gX190bXA7CgogICAgICB0cnkKIHsgX01faW5pdGlhbGl6ZV90aW1l
cHVuY3QoX19jbG9jKTsgfQogICAgICBjYXRjaCguLi4pCiB7CiAgIGRlbGV0ZSBbXSBfTV9uYW1l
X3RpbWVwdW5jdDsKICAgdGhyb3c7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VD4KICAgIF9fdGltZXB1bmN0PF9DaGFyVD46On5fX3RpbWVwdW5jdCgpCiAgICB7CiAgICAgIGlm
IChfTV9uYW1lX3RpbWVwdW5jdCAhPSBfU19nZXRfY19uYW1lKCkpCiBkZWxldGUgW10gX01fbmFt
ZV90aW1lcHVuY3Q7CiAgICAgIGRlbGV0ZSBfTV9kYXRhOwogICAgICBfU19kZXN0cm95X2NfbG9j
YWxlKF9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7CiAgICB9Cgp9CiMgMzA0MSAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIHsKIyAz
MDU2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgY2xhc3MgdGltZV9n
ZXQgOiBwdWJsaWMgbG9jYWxlOjpmYWNldCwgcHVibGljIHRpbWVfYmFzZQogICAgewogICAgcHVi
bGljOgoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgX0lu
SXRlciBpdGVyX3R5cGU7CgogICAgICB0eXBlZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQ+IF9fc3Ry
aW5nX3R5cGU7CgoKICAgICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7CiMgMzA3OCAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBleHBsaWNpdAogICAg
ICB0aW1lX2dldChzaXplX3QgX19yZWZzID0gMCkKICAgICAgOiBmYWNldCAoX19yZWZzKSB7IH0K
IyAzMDk1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAg
ICAgIGRhdGVvcmRlcgogICAgICBkYXRlX29yZGVyKCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhp
cy0+ZG9fZGF0ZV9vcmRlcigpOyB9CiMgMzExOSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBpdGVyX3R5cGUKICAgICAgZ2V0X3RpbWUoaXRlcl90
eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICAgICAgIGlvc19i
YXNlOjppb3N0YXRlJiBfX2VyciwgdG0qIF9fdG0pIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMt
PmRvX2dldF90aW1lKF9fYmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdG0pOyB9CiMgMzE0NCAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBpdGVy
X3R5cGUKICAgICAgZ2V0X2RhdGUoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlv
c19iYXNlJiBfX2lvLAogICAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdG0qIF9fdG0p
IGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldF9kYXRlKF9fYmVnLCBfX2VuZCwgX19p
bywgX19lcnIsIF9fdG0pOyB9CiMgMzE3MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xv
Y2FsZV9mYWNldHMuaCIgMwogICAgICBpdGVyX3R5cGUKICAgICAgZ2V0X3dlZWtkYXkoaXRlcl90
eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICAgaW9zX2Jhc2U6
Omlvc3RhdGUmIF9fZXJyLCB0bSogX190bSkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9f
Z2V0X3dlZWtkYXkoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX190bSk7IH0KIyAzMjAxICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGl0ZXJf
dHlwZQogICAgICBnZXRfbW9udGhuYW1lKGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5k
LCBpb3NfYmFzZSYgX19pbywKICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB0bSogX190
bSkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fZ2V0X21vbnRobmFtZShfX2JlZywgX19l
bmQsIF9faW8sIF9fZXJyLCBfX3RtKTsgfQojIDMyMjcgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgaXRlcl90eXBlCiAgICAgIGdldF95ZWFyKGl0
ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgICAgICBp
b3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHRtKiBfX3RtKSBjb25zdAogICAgICB7IHJldHVybiB0
aGlzLT5kb19nZXRfeWVhcihfX2JlZywgX19lbmQsIF9faW8sIF9fZXJyLCBfX3RtKTsgfQoKICAg
IHByb3RlY3RlZDoKCiAgICAgIHZpcnR1YWwKICAgICAgfnRpbWVfZ2V0KCkgeyB9CiMgMzI0NyAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0
dWFsIGRhdGVvcmRlcgogICAgICBkb19kYXRlX29yZGVyKCkgY29uc3Q7CiMgMzI2NSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGl0
ZXJfdHlwZQogICAgICBkb19nZXRfdGltZShpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2Vu
ZCwgaW9zX2Jhc2UmIF9faW8sCiAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHRtKiBfX3Rt
KSBjb25zdDsKIyAzMjg0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0
cy5oIiAzCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX2dldF9kYXRlKGl0ZXJfdHlw
ZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgIGlvc19iYXNlOjpp
b3N0YXRlJiBfX2VyciwgdG0qIF9fdG0pIGNvbnN0OwojIDMzMDMgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAg
ICAgZG9fZ2V0X3dlZWtkYXkoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlvc19i
YXNlJiwKICAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdG0qIF9fdG0pIGNvbnN0Owoj
IDMzMjIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAg
ICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fZ2V0X21vbnRobmFtZShpdGVyX3R5cGUgX19i
ZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmLAogICAgICAgICBpb3NfYmFzZTo6aW9zdGF0
ZSYgX19lcnIsIHRtKiBfX3RtKSBjb25zdDsKIyAzMzQxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRv
X2dldF95ZWFyKGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19p
bywKICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdG0qIF9fdG0pIGNvbnN0OwoKCiAgICAg
IGl0ZXJfdHlwZQogICAgICBfTV9leHRyYWN0X251bShpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlw
ZSBfX2VuZCwgaW50JiBfX21lbWJlciwKICAgICAgIGludCBfX21pbiwgaW50IF9fbWF4LCBzaXpl
X3QgX19sZW4sCiAgICAgICBpb3NfYmFzZSYgX19pbywgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJy
KSBjb25zdDsKCgoKICAgICAgaXRlcl90eXBlCiAgICAgIF9NX2V4dHJhY3RfbmFtZShpdGVyX3R5
cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW50JiBfX21lbWJlciwKICAgICAgICBjb25zdCBf
Q2hhclQqKiBfX25hbWVzLCBzaXplX3QgX19pbmRleGxlbiwKICAgICAgICBpb3NfYmFzZSYgX19p
bywgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyKSBjb25zdDsKCgogICAgICBpdGVyX3R5cGUKICAg
ICAgX01fZXh0cmFjdF92aWFfZm9ybWF0KGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5k
LCBpb3NfYmFzZSYgX19pbywKICAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdG0qIF9f
dG0sCiAgICAgICBjb25zdCBfQ2hhclQqIF9fZm9ybWF0KSBjb25zdDsKICAgIH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIGxvY2FsZTo6aWQgdGlt
ZV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6aWQ7CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9Jbkl0ZXI+CiAgICBjbGFzcyB0aW1lX2dldF9ieW5hbWUgOiBwdWJsaWMgdGlt
ZV9nZXQ8X0NoYXJULCBfSW5JdGVyPgogICAgewogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBf
Q2hhclQgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIF9Jbkl0ZXIgaXRlcl90eXBlOwoKICAgICAg
ZXhwbGljaXQKICAgICAgdGltZV9nZXRfYnluYW1lKGNvbnN0IGNoYXIqLCBzaXplX3QgX19yZWZz
ID0gMCkKICAgICAgOiB0aW1lX2dldDxfQ2hhclQsIF9Jbkl0ZXI+KF9fcmVmcykgeyB9CgogICAg
cHJvdGVjdGVkOgogICAgICB2aXJ0dWFsCiAgICAgIH50aW1lX2dldF9ieW5hbWUoKSB7IH0KICAg
IH07CiMgMzM5NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+CiAgICBjbGFz
cyB0aW1lX3B1dCA6IHB1YmxpYyBsb2NhbGU6OmZhY2V0CiAgICB7CiAgICBwdWJsaWM6CgoKCiAg
ICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBfT3V0SXRlciBpdGVy
X3R5cGU7CgoKCiAgICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlkOwojIDM0MTggIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAg
dGltZV9wdXQoc2l6ZV90IF9fcmVmcyA9IDApCiAgICAgIDogZmFjZXQoX19yZWZzKSB7IH0KIyAz
NDM3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAg
IGl0ZXJfdHlwZQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJf
dHlwZSBfX2ZpbGwsIGNvbnN0IHRtKiBfX3RtLAogICBjb25zdCBfQ2hhclQqIF9fYmVnLCBjb25z
dCBfQ2hhclQqIF9fZW5kKSBjb25zdDsKIyAzNDU3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGl0ZXJfdHlwZQogICAgICBwdXQoaXRlcl90eXBl
IF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsCiAgIGNvbnN0IHRtKiBfX3Rt
LCBjaGFyIF9fZm9ybWF0LCBjaGFyIF9fbW9kID0gMCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhp
cy0+ZG9fcHV0KF9fcywgX19pbywgX19maWxsLCBfX3RtLCBfX2Zvcm1hdCwgX19tb2QpOyB9Cgog
ICAgcHJvdGVjdGVkOgoKICAgICAgdmlydHVhbAogICAgICB+dGltZV9wdXQoKQogICAgICB7IH0K
IyAzNDg0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAg
ICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX3B1dChpdGVyX3R5cGUgX19zLCBpb3NfYmFz
ZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwgY29uc3QgdG0qIF9fdG0sCiAgICAgIGNoYXIgX19m
b3JtYXQsIGNoYXIgX19tb2QpIGNvbnN0OwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfT3V0SXRlcj4KICAgIGxvY2FsZTo6aWQgdGltZV9wdXQ8X0NoYXJULCBf
T3V0SXRlcj46OmlkOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0
SXRlcj4KICAgIGNsYXNzIHRpbWVfcHV0X2J5bmFtZSA6IHB1YmxpYyB0aW1lX3B1dDxfQ2hhclQs
IF9PdXRJdGVyPgogICAgewogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90
eXBlOwogICAgICB0eXBlZGVmIF9PdXRJdGVyIGl0ZXJfdHlwZTsKCiAgICAgIGV4cGxpY2l0CiAg
ICAgIHRpbWVfcHV0X2J5bmFtZShjb25zdCBjaGFyKiwgc2l6ZV90IF9fcmVmcyA9IDApCiAgICAg
IDogdGltZV9wdXQ8X0NoYXJULCBfT3V0SXRlcj4oX19yZWZzKQogICAgICB7IH07CgogICAgcHJv
dGVjdGVkOgogICAgICB2aXJ0dWFsCiAgICAgIH50aW1lX3B1dF9ieW5hbWUoKSB7IH0KICAgIH07
CiMgMzUyMiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwog
IGNsYXNzIG1vbmV5X2Jhc2UKICB7CiAgcHVibGljOgogICAgZW51bSBwYXJ0IHsgbm9uZSwgc3Bh
Y2UsIHN5bWJvbCwgc2lnbiwgdmFsdWUgfTsKICAgIHN0cnVjdCBwYXR0ZXJuIHsgY2hhciBmaWVs
ZFs0XTsgfTsKCiAgICBzdGF0aWMgY29uc3QgcGF0dGVybiBfU19kZWZhdWx0X3BhdHRlcm47Cgog
ICAgZW51bQogICAgewogICAgICBfU19taW51cywKICAgICAgX1NfemVybywKICAgICAgX1NfZW5k
ID0gMTEKICAgIH07CgoKCiAgICBzdGF0aWMgY29uc3QgY2hhciogX1NfYXRvbXM7CgoKCiAgICBz
dGF0aWMgcGF0dGVybgogICAgX1NfY29uc3RydWN0X3BhdHRlcm4oY2hhciBfX3ByZWNlZGVzLCBj
aGFyIF9fc3BhY2UsIGNoYXIgX19wb3NuKTsKICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIGJvb2wgX0ludGw+CiAgICBzdHJ1Y3QgX19tb25leXB1bmN0X2NhY2hlIDogcHVibGljIGxv
Y2FsZTo6ZmFjZXQKICAgIHsKICAgICAgY29uc3QgY2hhciogX01fZ3JvdXBpbmc7CiAgICAgIHNp
emVfdCBfTV9ncm91cGluZ19zaXplOwogICAgICBib29sIF9NX3VzZV9ncm91cGluZzsKICAgICAg
X0NoYXJUIF9NX2RlY2ltYWxfcG9pbnQ7CiAgICAgIF9DaGFyVCBfTV90aG91c2FuZHNfc2VwOwog
ICAgICBjb25zdCBfQ2hhclQqIF9NX2N1cnJfc3ltYm9sOwogICAgICBzaXplX3QgX01fY3Vycl9z
eW1ib2xfc2l6ZTsKICAgICAgY29uc3QgX0NoYXJUKiBfTV9wb3NpdGl2ZV9zaWduOwogICAgICBz
aXplX3QgX01fcG9zaXRpdmVfc2lnbl9zaXplOwogICAgICBjb25zdCBfQ2hhclQqIF9NX25lZ2F0
aXZlX3NpZ247CiAgICAgIHNpemVfdCBfTV9uZWdhdGl2ZV9zaWduX3NpemU7CiAgICAgIGludCBf
TV9mcmFjX2RpZ2l0czsKICAgICAgbW9uZXlfYmFzZTo6cGF0dGVybiBfTV9wb3NfZm9ybWF0Owog
ICAgICBtb25leV9iYXNlOjpwYXR0ZXJuIF9NX25lZ19mb3JtYXQ7CgoKCgogICAgICBfQ2hhclQg
X01fYXRvbXNbbW9uZXlfYmFzZTo6X1NfZW5kXTsKCiAgICAgIGJvb2wgX01fYWxsb2NhdGVkOwoK
ICAgICAgX19tb25leXB1bmN0X2NhY2hlKHNpemVfdCBfX3JlZnMgPSAwKSA6IGZhY2V0KF9fcmVm
cyksCiAgICAgIF9NX2dyb3VwaW5nKF9fbnVsbCksIF9NX2dyb3VwaW5nX3NpemUoMCksIF9NX3Vz
ZV9ncm91cGluZyhmYWxzZSksCiAgICAgIF9NX2RlY2ltYWxfcG9pbnQoX0NoYXJUKCkpLCBfTV90
aG91c2FuZHNfc2VwKF9DaGFyVCgpKSwKICAgICAgX01fY3Vycl9zeW1ib2woX19udWxsKSwgX01f
Y3Vycl9zeW1ib2xfc2l6ZSgwKSwKICAgICAgX01fcG9zaXRpdmVfc2lnbihfX251bGwpLCBfTV9w
b3NpdGl2ZV9zaWduX3NpemUoMCksCiAgICAgIF9NX25lZ2F0aXZlX3NpZ24oX19udWxsKSwgX01f
bmVnYXRpdmVfc2lnbl9zaXplKDApLAogICAgICBfTV9mcmFjX2RpZ2l0cygwKSwKICAgICAgX01f
cG9zX2Zvcm1hdChtb25leV9iYXNlOjpwYXR0ZXJuKCkpLAogICAgICBfTV9uZWdfZm9ybWF0KG1v
bmV5X2Jhc2U6OnBhdHRlcm4oKSksIF9NX2FsbG9jYXRlZChmYWxzZSkKICAgICAgeyB9CgogICAg
ICB+X19tb25leXB1bmN0X2NhY2hlKCk7CgogICAgICB2b2lkCiAgICAgIF9NX2NhY2hlKGNvbnN0
IGxvY2FsZSYgX19sb2MpOwoKICAgIHByaXZhdGU6CiAgICAgIF9fbW9uZXlwdW5jdF9jYWNoZSYK
ICAgICAgb3BlcmF0b3I9KGNvbnN0IF9fbW9uZXlwdW5jdF9jYWNoZSYpOwoKICAgICAgZXhwbGlj
aXQKICAgICAgX19tb25leXB1bmN0X2NhY2hlKGNvbnN0IF9fbW9uZXlwdW5jdF9jYWNoZSYpOwog
ICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCBib29sIF9JbnRsPgogICAgX19tb25l
eXB1bmN0X2NhY2hlPF9DaGFyVCwgX0ludGw+Ojp+X19tb25leXB1bmN0X2NhY2hlKCkKICAgIHsK
ICAgICAgaWYgKF9NX2FsbG9jYXRlZCkKIHsKICAgZGVsZXRlIFtdIF9NX2dyb3VwaW5nOwogICBk
ZWxldGUgW10gX01fY3Vycl9zeW1ib2w7CiAgIGRlbGV0ZSBbXSBfTV9wb3NpdGl2ZV9zaWduOwog
ICBkZWxldGUgW10gX01fbmVnYXRpdmVfc2lnbjsKIH0KICAgIH0KCgoKCgoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCBib29sIF9JbnRsPgogICAgY2xhc3MgbW9uZXlwdW5jdCA6IHB1Ymxp
YyBsb2NhbGU6OmZhY2V0LCBwdWJsaWMgbW9uZXlfYmFzZQogICAgewogICAgcHVibGljOgoKCgog
ICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5n
PF9DaGFyVD4gc3RyaW5nX3R5cGU7CgogICAgICB0eXBlZGVmIF9fbW9uZXlwdW5jdF9jYWNoZTxf
Q2hhclQsIF9JbnRsPiBfX2NhY2hlX3R5cGU7CgogICAgcHJpdmF0ZToKICAgICAgX19jYWNoZV90
eXBlKiBfTV9kYXRhOwoKICAgIHB1YmxpYzoKCgogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpbnRs
ID0gX0ludGw7CgogICAgICBzdGF0aWMgbG9jYWxlOjppZCBpZDsKIyAzNjQzICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGV4cGxpY2l0CiAgICAg
IG1vbmV5cHVuY3Qoc2l6ZV90IF9fcmVmcyA9IDApIDogZmFjZXQoX19yZWZzKSwgX01fZGF0YShf
X251bGwpCiAgICAgIHsgX01faW5pdGlhbGl6ZV9tb25leXB1bmN0KCk7IH0KIyAzNjU1ICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGV4cGxpY2l0
CiAgICAgIG1vbmV5cHVuY3QoX19jYWNoZV90eXBlKiBfX2NhY2hlLCBzaXplX3QgX19yZWZzID0g
MCkKICAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKF9fY2FjaGUpCiAgICAgIHsgX01faW5p
dGlhbGl6ZV9tb25leXB1bmN0KCk7IH0KIyAzNjcwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGV4cGxpY2l0CiAgICAgIG1vbmV5cHVuY3QoX19j
X2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDApCiAgICAg
IDogZmFjZXQoX19yZWZzKSwgX01fZGF0YShfX251bGwpCiAgICAgIHsgX01faW5pdGlhbGl6ZV9t
b25leXB1bmN0KF9fY2xvYywgX19zKTsgfQojIDM2ODQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY2hhcl90eXBlCiAgICAgIGRlY2ltYWxfcG9p
bnQoKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19kZWNpbWFsX3BvaW50KCk7IH0KIyAz
Njk3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAg
IGNoYXJfdHlwZQogICAgICB0aG91c2FuZHNfc2VwKCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhp
cy0+ZG9fdGhvdXNhbmRzX3NlcCgpOyB9CiMgMzcyNiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBzdHJpbmcKICAgICAgZ3JvdXBpbmcoKSBjb25z
dAogICAgICB7IHJldHVybiB0aGlzLT5kb19ncm91cGluZygpOyB9CiMgMzczOSAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBzdHJpbmdfdHlwZQog
ICAgICBjdXJyX3N5bWJvbCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2N1cnJfc3lt
Ym9sKCk7IH0KIyAzNzU2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0
cy5oIiAzCiAgICAgIHN0cmluZ190eXBlCiAgICAgIHBvc2l0aXZlX3NpZ24oKSBjb25zdAogICAg
ICB7IHJldHVybiB0aGlzLT5kb19wb3NpdGl2ZV9zaWduKCk7IH0KIyAzNzczICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHN0cmluZ190eXBlCiAg
ICAgIG5lZ2F0aXZlX3NpZ24oKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19uZWdhdGl2
ZV9zaWduKCk7IH0KIyAzNzg5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2Zh
Y2V0cy5oIiAzCiAgICAgIGludAogICAgICBmcmFjX2RpZ2l0cygpIGNvbnN0CiAgICAgIHsgcmV0
dXJuIHRoaXMtPmRvX2ZyYWNfZGlnaXRzKCk7IH0KIyAzODI0ICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHBhdHRlcm4KICAgICAgcG9zX2Zvcm1h
dCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX3Bvc19mb3JtYXQoKTsgfQoKICAgICAg
cGF0dGVybgogICAgICBuZWdfZm9ybWF0KCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9f
bmVnX2Zvcm1hdCgpOyB9CgoKICAgIHByb3RlY3RlZDoKCiAgICAgIHZpcnR1YWwKICAgICAgfm1v
bmV5cHVuY3QoKTsKIyAzODQ2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2Zh
Y2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlCiAgICAgIGRvX2RlY2ltYWxfcG9pbnQo
KSBjb25zdAogICAgICB7IHJldHVybiBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50OyB9CiMgMzg1
OCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2
aXJ0dWFsIGNoYXJfdHlwZQogICAgICBkb190aG91c2FuZHNfc2VwKCkgY29uc3QKICAgICAgeyBy
ZXR1cm4gX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcDsgfQojIDM4NzEgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBzdHJpbmcKICAg
ICAgZG9fZ3JvdXBpbmcoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9kYXRhLT5fTV9ncm91cGlu
ZzsgfQojIDM4ODQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgi
IDMKICAgICAgdmlydHVhbCBzdHJpbmdfdHlwZQogICAgICBkb19jdXJyX3N5bWJvbCgpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sOyB9CiMgMzg5NyAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIHN0
cmluZ190eXBlCiAgICAgIGRvX3Bvc2l0aXZlX3NpZ24oKSBjb25zdAogICAgICB7IHJldHVybiBf
TV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduOyB9CiMgMzkxMCAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIHN0cmluZ190eXBlCiAgICAg
IGRvX25lZ2F0aXZlX3NpZ24oKSBjb25zdAogICAgICB7IHJldHVybiBfTV9kYXRhLT5fTV9uZWdh
dGl2ZV9zaWduOyB9CiMgMzkyNCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9m
YWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGludAogICAgICBkb19mcmFjX2RpZ2l0cygpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzOyB9CiMgMzkzOCAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIHBh
dHRlcm4KICAgICAgZG9fcG9zX2Zvcm1hdCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2RhdGEt
Pl9NX3Bvc19mb3JtYXQ7IH0KIyAzOTUyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9j
YWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgcGF0dGVybgogICAgICBkb19uZWdfZm9ybWF0
KCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fZGF0YS0+X01fbmVnX2Zvcm1hdDsgfQoKCiAgICAg
ICB2b2lkCiAgICAgICBfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2Mg
PSBfX251bGwsCiAgICBjb25zdCBjaGFyKiBfX25hbWUgPSBfX251bGwpOwogICAgfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCBib29sIF9JbnRsPgogICAgbG9jYWxlOjppZCBtb25leXB1
bmN0PF9DaGFyVCwgX0ludGw+OjppZDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCBib29s
IF9JbnRsPgogICAgY29uc3QgYm9vbCBtb25leXB1bmN0PF9DaGFyVCwgX0ludGw+OjppbnRsOwoK
ICB0ZW1wbGF0ZTw+CiAgICBtb25leXB1bmN0PGNoYXIsIHRydWU+Ojp+bW9uZXlwdW5jdCgpOwoK
ICB0ZW1wbGF0ZTw+CiAgICBtb25leXB1bmN0PGNoYXIsIGZhbHNlPjo6fm1vbmV5cHVuY3QoKTsK
CiAgdGVtcGxhdGU8PgogICAgdm9pZAogICAgbW9uZXlwdW5jdDxjaGFyLCB0cnVlPjo6X01faW5p
dGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUsIGNvbnN0IGNoYXIqKTsKCiAgdGVtcGxhdGU8
PgogICAgdm9pZAogICAgbW9uZXlwdW5jdDxjaGFyLCBmYWxzZT46Ol9NX2luaXRpYWxpemVfbW9u
ZXlwdW5jdChfX2NfbG9jYWxlLCBjb25zdCBjaGFyKik7CgoKICB0ZW1wbGF0ZTw+CiAgICBtb25l
eXB1bmN0PHdjaGFyX3QsIHRydWU+Ojp+bW9uZXlwdW5jdCgpOwoKICB0ZW1wbGF0ZTw+CiAgICBt
b25leXB1bmN0PHdjaGFyX3QsIGZhbHNlPjo6fm1vbmV5cHVuY3QoKTsKCiAgdGVtcGxhdGU8Pgog
ICAgdm9pZAogICAgbW9uZXlwdW5jdDx3Y2hhcl90LCB0cnVlPjo6X01faW5pdGlhbGl6ZV9tb25l
eXB1bmN0KF9fY19sb2NhbGUsCiAgICAgICBjb25zdCBjaGFyKik7CgogIHRlbXBsYXRlPD4KICAg
IHZvaWQKICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgZmFsc2U+OjpfTV9pbml0aWFsaXplX21vbmV5
cHVuY3QoX19jX2xvY2FsZSwKICAgICAgICBjb25zdCBjaGFyKik7CgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCBib29sIF9JbnRsPgogICAgY2xhc3MgbW9uZXlwdW5jdF9ieW5hbWUgOiBw
dWJsaWMgbW9uZXlwdW5jdDxfQ2hhclQsIF9JbnRsPgogICAgewogICAgcHVibGljOgogICAgICB0
eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFy
VD4gc3RyaW5nX3R5cGU7CgogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpbnRsID0gX0ludGw7Cgog
ICAgICBleHBsaWNpdAogICAgICBtb25leXB1bmN0X2J5bmFtZShjb25zdCBjaGFyKiBfX3MsIHNp
emVfdCBfX3JlZnMgPSAwKQogICAgICA6IG1vbmV5cHVuY3Q8X0NoYXJULCBfSW50bD4oX19yZWZz
KQogICAgICB7CiBpZiAoc3RkOjpzdHJjbXAoX19zLCAiQyIpICE9IDAgJiYgc3RkOjpzdHJjbXAo
X19zLCAiUE9TSVgiKSAhPSAwKQogICB7CiAgICAgX19jX2xvY2FsZSBfX3RtcDsKICAgICB0aGlz
LT5fU19jcmVhdGVfY19sb2NhbGUoX190bXAsIF9fcyk7CiAgICAgdGhpcy0+X01faW5pdGlhbGl6
ZV9tb25leXB1bmN0KF9fdG1wKTsKICAgICB0aGlzLT5fU19kZXN0cm95X2NfbG9jYWxlKF9fdG1w
KTsKICAgfQogICAgICB9CgogICAgcHJvdGVjdGVkOgogICAgICB2aXJ0dWFsCiAgICAgIH5tb25l
eXB1bmN0X2J5bmFtZSgpIHsgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCBi
b29sIF9JbnRsPgogICAgY29uc3QgYm9vbCBtb25leXB1bmN0X2J5bmFtZTxfQ2hhclQsIF9JbnRs
Pjo6aW50bDsKCgojIDQwNDQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFj
ZXRzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAg
ICBjbGFzcyBtb25leV9nZXQgOiBwdWJsaWMgbG9jYWxlOjpmYWNldAogICAgewogICAgcHVibGlj
OgoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgX0luSXRl
ciBpdGVyX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVD4gc3RyaW5nX3R5
cGU7CgoKCiAgICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlkOwojIDQwNjYgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgbW9u
ZXlfZ2V0KHNpemVfdCBfX3JlZnMgPSAwKSA6IGZhY2V0KF9fcmVmcykgeyB9CiMgNDA5NiAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBpdGVyX3R5
cGUKICAgICAgZ2V0KGl0ZXJfdHlwZSBfX3MsIGl0ZXJfdHlwZSBfX2VuZCwgYm9vbCBfX2ludGws
IGlvc19iYXNlJiBfX2lvLAogICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGxvbmcgZG91Ymxl
JiBfX3VuaXRzKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQoX19zLCBfX2VuZCwg
X19pbnRsLCBfX2lvLCBfX2VyciwgX191bml0cyk7IH0KIyA0MTI2ICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGl0ZXJfdHlwZQogICAgICBnZXQo
aXRlcl90eXBlIF9fcywgaXRlcl90eXBlIF9fZW5kLCBib29sIF9faW50bCwgaW9zX2Jhc2UmIF9f
aW8sCiAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2Vyciwgc3RyaW5nX3R5cGUmIF9fZGlnaXRzKSBj
b25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQoX19zLCBfX2VuZCwgX19pbnRsLCBfX2lv
LCBfX2VyciwgX19kaWdpdHMpOyB9CgogICAgcHJvdGVjdGVkOgoKICAgICAgdmlydHVhbAogICAg
ICB+bW9uZXlfZ2V0KCkgeyB9CiMgNDE0OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xv
Y2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19nZXQoaXRl
cl90eXBlIF9fcywgaXRlcl90eXBlIF9fZW5kLCBib29sIF9faW50bCwgaW9zX2Jhc2UmIF9faW8s
CiAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgbG9uZyBkb3VibGUmIF9fdW5pdHMpIGNv
bnN0OwojIDQxNjEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgi
IDMKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fZ2V0KGl0ZXJfdHlwZSBfX3MsIGl0
ZXJfdHlwZSBfX2VuZCwgYm9vbCBfX2ludGwsIGlvc19iYXNlJiBfX2lvLAogICAgICBpb3NfYmFz
ZTo6aW9zdGF0ZSYgX19lcnIsIHN0cmluZ190eXBlJiBfX2RpZ2l0cykgY29uc3Q7CiMgNDE3MiAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB0ZW1w
bGF0ZTxib29sIF9JbnRsPgogICAgICAgIGl0ZXJfdHlwZQogICAgICAgIF9NX2V4dHJhY3QoaXRl
cl90eXBlIF9fcywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgICBpb3NfYmFz
ZTo6aW9zdGF0ZSYgX19lcnIsIHN0cmluZyYgX19kaWdpdHMpIGNvbnN0OwogICAgfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgbG9jYWxlOjppZCBt
b25leV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6aWQ7CiMgNDE5MyAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX091dEl0ZXI+CiAgICBjbGFzcyBtb25leV9wdXQgOiBwdWJsaWMgbG9jYWxlOjpm
YWNldAogICAgewogICAgcHVibGljOgoKCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsK
ICAgICAgdHlwZWRlZiBfT3V0SXRlciBpdGVyX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3Ry
aW5nPF9DaGFyVD4gc3RyaW5nX3R5cGU7CgoKCiAgICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlkOwoj
IDQyMTQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAg
ICAgZXhwbGljaXQKICAgICAgbW9uZXlfcHV0KHNpemVfdCBfX3JlZnMgPSAwKSA6IGZhY2V0KF9f
cmVmcykgeyB9CiMgNDIzNCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNl
dHMuaCIgMwogICAgICBpdGVyX3R5cGUKICAgICAgcHV0KGl0ZXJfdHlwZSBfX3MsIGJvb2wgX19p
bnRsLCBpb3NfYmFzZSYgX19pbywKICAgY2hhcl90eXBlIF9fZmlsbCwgbG9uZyBkb3VibGUgX191
bml0cykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fcHV0KF9fcywgX19pbnRsLCBfX2lv
LCBfX2ZpbGwsIF9fdW5pdHMpOyB9CiMgNDI1NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBpdGVyX3R5cGUKICAgICAgcHV0KGl0ZXJfdHlwZSBf
X3MsIGJvb2wgX19pbnRsLCBpb3NfYmFzZSYgX19pbywKICAgY2hhcl90eXBlIF9fZmlsbCwgY29u
c3Qgc3RyaW5nX3R5cGUmIF9fZGlnaXRzKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19w
dXQoX19zLCBfX2ludGwsIF9faW8sIF9fZmlsbCwgX19kaWdpdHMpOyB9CgogICAgcHJvdGVjdGVk
OgoKICAgICAgdmlydHVhbAogICAgICB+bW9uZXlfcHV0KCkgeyB9CiMgNDI5MCAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGl0ZXJf
dHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlIF9fcywgYm9vbCBfX2ludGwsIGlvc19iYXNlJiBf
X2lvLCBjaGFyX3R5cGUgX19maWxsLAogICAgICBsb25nIGRvdWJsZSBfX3VuaXRzKSBjb25zdDsK
IyA0MzEzICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAg
ICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX3B1dChpdGVyX3R5cGUgX19zLCBib29sIF9f
aW50bCwgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsCiAgICAgIGNvbnN0IHN0cmlu
Z190eXBlJiBfX2RpZ2l0cykgY29uc3Q7CiMgNDMyNCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9i
aXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB0ZW1wbGF0ZTxib29sIF9JbnRsPgogICAgICAg
IGl0ZXJfdHlwZQogICAgICAgIF9NX2luc2VydChpdGVyX3R5cGUgX19zLCBpb3NfYmFzZSYgX19p
bywgY2hhcl90eXBlIF9fZmlsbCwKICAgIGNvbnN0IHN0cmluZ190eXBlJiBfX2RpZ2l0cykgY29u
c3Q7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVy
PgogICAgbG9jYWxlOjppZCBtb25leV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46OmlkOwoKCgoKCgog
IHN0cnVjdCBtZXNzYWdlc19iYXNlCiAgewogICAgdHlwZWRlZiBpbnQgY2F0YWxvZzsKICB9Owoj
IDQzNjMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBtZXNzYWdlcyA6IHB1YmxpYyBsb2Nh
bGU6OmZhY2V0LCBwdWJsaWMgbWVzc2FnZXNfYmFzZQogICAgewogICAgcHVibGljOgoKCgogICAg
ICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9D
aGFyVD4gc3RyaW5nX3R5cGU7CgoKICAgIHByb3RlY3RlZDoKCgogICAgICBfX2NfbG9jYWxlIF9N
X2NfbG9jYWxlX21lc3NhZ2VzOwogICAgICBjb25zdCBjaGFyKiBfTV9uYW1lX21lc3NhZ2VzOwoK
ICAgIHB1YmxpYzoKCiAgICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlkOwojIDQzOTEgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAg
ICAgbWVzc2FnZXMoc2l6ZV90IF9fcmVmcyA9IDApOwojIDQ0MDUgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgbWVzc2Fn
ZXMoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDAp
OwojIDQ0MTggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMK
ICAgICAgY2F0YWxvZwogICAgICBvcGVuKGNvbnN0IGJhc2ljX3N0cmluZzxjaGFyPiYgX19zLCBj
b25zdCBsb2NhbGUmIF9fbG9jKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19vcGVuKF9f
cywgX19sb2MpOyB9CiMgNDQzNiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9m
YWNldHMuaCIgMwogICAgICBjYXRhbG9nCiAgICAgIG9wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNo
YXI+JiwgY29uc3QgbG9jYWxlJiwgY29uc3QgY2hhciopIGNvbnN0OwojIDQ0NTQgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgc3RyaW5nX3R5cGUK
ICAgICAgZ2V0KGNhdGFsb2cgX19jLCBpbnQgX19zZXQsIGludCBfX21zZ2lkLCBjb25zdCBzdHJp
bmdfdHlwZSYgX19zKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQoX19jLCBfX3Nl
dCwgX19tc2dpZCwgX19zKTsgfQojIDQ0NjUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9s
b2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdm9pZAogICAgICBjbG9zZShjYXRhbG9nIF9fYykgY29u
c3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fY2xvc2UoX19jKTsgfQoKICAgIHByb3RlY3RlZDoK
CiAgICAgIHZpcnR1YWwKICAgICAgfm1lc3NhZ2VzKCk7CiMgNDQ4NSAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNhdGFsb2cKICAg
ICAgZG9fb3Blbihjb25zdCBiYXNpY19zdHJpbmc8Y2hhcj4mLCBjb25zdCBsb2NhbGUmKSBjb25z
dDsKIyA0NTA0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAz
CiAgICAgIHZpcnR1YWwgc3RyaW5nX3R5cGUKICAgICAgZG9fZ2V0KGNhdGFsb2csIGludCwgaW50
LCBjb25zdCBzdHJpbmdfdHlwZSYgX19kZmF1bHQpIGNvbnN0OwoKCgoKCgogICAgICB2aXJ0dWFs
IHZvaWQKICAgICAgZG9fY2xvc2UoY2F0YWxvZykgY29uc3Q7CgoKICAgICAgY2hhcioKICAgICAg
X01fY29udmVydF90b19jaGFyKGNvbnN0IHN0cmluZ190eXBlJiBfX21zZykgY29uc3QKICAgICAg
ewoKIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdF9jYXN0PF9DaGFyVCo+KF9f
bXNnLmNfc3RyKCkpKTsKICAgICAgfQoKCiAgICAgIHN0cmluZ190eXBlCiAgICAgIF9NX2NvbnZl
cnRfZnJvbV9jaGFyKGNoYXIqKSBjb25zdAogICAgICB7CiMgNDU2MSAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogcmV0dXJuIHN0cmluZ190eXBlKCk7CiAg
ICAgIH0KICAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBsb2NhbGU6Omlk
IG1lc3NhZ2VzPF9DaGFyVD46OmlkOwoKCiAgdGVtcGxhdGU8PgogICAgc3RyaW5nCiAgICBtZXNz
YWdlczxjaGFyPjo6ZG9fZ2V0KGNhdGFsb2csIGludCwgaW50LCBjb25zdCBzdHJpbmcmKSBjb25z
dDsKCgogIHRlbXBsYXRlPD4KICAgIHdzdHJpbmcKICAgIG1lc3NhZ2VzPHdjaGFyX3Q+Ojpkb19n
ZXQoY2F0YWxvZywgaW50LCBpbnQsIGNvbnN0IHdzdHJpbmcmKSBjb25zdDsKCgoKICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY2xhc3MgbWVzc2FnZXNfYnluYW1lIDogcHVibGljIG1l
c3NhZ2VzPF9DaGFyVD4KICAgIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfQ2hhclQgY2hh
cl90eXBlOwogICAgICB0eXBlZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQ+IHN0cmluZ190eXBlOwoK
ICAgICAgZXhwbGljaXQKICAgICAgbWVzc2FnZXNfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6
ZV90IF9fcmVmcyA9IDApOwoKICAgIHByb3RlY3RlZDoKICAgICAgdmlydHVhbAogICAgICB+bWVz
c2FnZXNfYnluYW1lKCkKICAgICAgeyB9CiAgICB9OwoKfQoKCiMgMSAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9pNjg2LWFwcGxlLWRhcndpbjEwL3g4Nl82NC9iaXRzL21lc3NhZ2VzX21lbWJlcnMu
aCIgMSAzCiMgNDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaTY4Ni1hcHBsZS1kYXJ3aW4xMC94
ODZfNjQvYml0cy9tZXNzYWdlc19tZW1iZXJzLmgiIDMKbmFtZXNwYWNlIHN0ZCB7CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICAgbWVzc2FnZXM8X0NoYXJUPjo6bWVzc2FnZXMoc2l6
ZV90IF9fcmVmcykKICAgICA6IGZhY2V0KF9fcmVmcykKICAgICB7IF9NX2NfbG9jYWxlX21lc3Nh
Z2VzID0gX1NfZ2V0X2NfbG9jYWxlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgog
ICAgIG1lc3NhZ2VzPF9DaGFyVD46Om1lc3NhZ2VzKF9fY19sb2NhbGUsIGNvbnN0IGNoYXIqLCBz
aXplX3QgX19yZWZzKQogICAgIDogZmFjZXQoX19yZWZzKQogICAgIHsgX01fY19sb2NhbGVfbWVz
c2FnZXMgPSBfU19nZXRfY19sb2NhbGUoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+
CiAgICB0eXBlbmFtZSBtZXNzYWdlczxfQ2hhclQ+OjpjYXRhbG9nCiAgICBtZXNzYWdlczxfQ2hh
clQ+OjpvcGVuKGNvbnN0IGJhc2ljX3N0cmluZzxjaGFyPiYgX19zLCBjb25zdCBsb2NhbGUmIF9f
bG9jLAogICAgICBjb25zdCBjaGFyKikgY29uc3QKICAgIHsgcmV0dXJuIHRoaXMtPmRvX29wZW4o
X19zLCBfX2xvYyk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIG1lc3NhZ2Vz
PF9DaGFyVD46On5tZXNzYWdlcygpCiAgICB7IF9TX2Rlc3Ryb3lfY19sb2NhbGUoX01fY19sb2Nh
bGVfbWVzc2FnZXMpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1l
IG1lc3NhZ2VzPF9DaGFyVD46OmNhdGFsb2cKICAgIG1lc3NhZ2VzPF9DaGFyVD46OmRvX29wZW4o
Y29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiwgY29uc3QgbG9jYWxlJikgY29uc3QKICAgIHsgcmV0
dXJuIDA7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgdHlwZW5hbWUgbWVzc2Fn
ZXM8X0NoYXJUPjo6c3RyaW5nX3R5cGUKICAgIG1lc3NhZ2VzPF9DaGFyVD46OmRvX2dldChjYXRh
bG9nLCBpbnQsIGludCwKICAgICAgICBjb25zdCBzdHJpbmdfdHlwZSYgX19kZmF1bHQpIGNvbnN0
CiAgICB7IHJldHVybiBfX2RmYXVsdDsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAg
ICB2b2lkCiAgICBtZXNzYWdlczxfQ2hhclQ+Ojpkb19jbG9zZShjYXRhbG9nKSBjb25zdAogICAg
eyB9CgoKICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgIG1lc3NhZ2VzX2J5bmFtZTxf
Q2hhclQ+OjptZXNzYWdlc19ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzKQog
ICAgIDogbWVzc2FnZXM8X0NoYXJUPihfX3JlZnMpCiAgICAgewogaWYgKHN0ZDo6c3RyY21wKF9f
cywgIkMiKSAhPSAwICYmIHN0ZDo6c3RyY21wKF9fcywgIlBPU0lYIikgIT0gMCkKICAgewogICAg
IHRoaXMtPl9TX2Rlc3Ryb3lfY19sb2NhbGUodGhpcy0+X01fY19sb2NhbGVfbWVzc2FnZXMpOwog
ICAgIHRoaXMtPl9TX2NyZWF0ZV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9tZXNzYWdlcywg
X19zKTsKICAgfQogICAgIH0KCn0KIyA0NjAwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMv
bG9jYWxlX2ZhY2V0cy5oIiAyIDMKCm5hbWVzcGFjZSBzdGQgewoKCgoKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgYm9vbAogICAgaXNzcGFjZShfQ2hhclQgX19jLCBj
b25zdCBsb2NhbGUmIF9fbG9jKQogICAgeyByZXR1cm4gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4g
PihfX2xvYykuaXMoY3R5cGVfYmFzZTo6c3BhY2UsIF9fYyk7IH0KCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc3ByaW50KF9DaGFyVCBfX2MsIGNvbnN0
IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9f
bG9jKS5pcyhjdHlwZV9iYXNlOjpwcmludCwgX19jKTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJUPgogICAgaW5saW5lIGJvb2wKICAgIGlzY250cmwoX0NoYXJUIF9fYywgY29uc3QgbG9j
YWxlJiBfX2xvYykKICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2Mp
LmlzKGN0eXBlX2Jhc2U6OmNudHJsLCBfX2MpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQ+CiAgICBpbmxpbmUgYm9vbAogICAgaXN1cHBlcihfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUm
IF9fbG9jKQogICAgeyByZXR1cm4gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYykuaXMo
Y3R5cGVfYmFzZTo6dXBwZXIsIF9fYyk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4K
ICAgIGlubGluZSBib29sCiAgICBpc2xvd2VyKF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19s
b2MpCiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlw
ZV9iYXNlOjpsb3dlciwgX19jKTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAg
aW5saW5lIGJvb2wKICAgIGlzYWxwaGEoX0NoYXJUIF9fYywgY29uc3QgbG9jYWxlJiBfX2xvYykK
ICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0eXBlX2Jh
c2U6OmFscGhhLCBfX2MpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxp
bmUgYm9vbAogICAgaXNkaWdpdChfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9fbG9jKQogICAg
eyByZXR1cm4gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYykuaXMoY3R5cGVfYmFzZTo6
ZGlnaXQsIF9fYyk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBi
b29sCiAgICBpc3B1bmN0KF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJl
dHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9iYXNlOjpwdW5j
dCwgX19jKTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgaW5saW5lIGJvb2wK
ICAgIGlzeGRpZ2l0KF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVy
biB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9iYXNlOjp4ZGlnaXQs
IF9fYyk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAg
ICBpc2FsbnVtKF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVybiB1
c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9iYXNlOjphbG51bSwgX19j
KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgaW5saW5lIGJvb2wKICAgIGlz
Z3JhcGgoX0NoYXJUIF9fYywgY29uc3QgbG9jYWxlJiBfX2xvYykKICAgIHsgcmV0dXJuIHVzZV9m
YWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0eXBlX2Jhc2U6OmdyYXBoLCBfX2MpOyB9
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgX0NoYXJUCiAgICB0b3Vw
cGVyKF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVybiB1c2VfZmFj
ZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS50b3VwcGVyKF9fYyk7IH0KCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBfQ2hhclQKICAgIHRvbG93ZXIoX0NoYXJUIF9fYywg
Y29uc3QgbG9jYWxlJiBfX2xvYykKICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+
ID4oX19sb2MpLnRvbG93ZXIoX19jKTsgfQoKfQojIDQ1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2JpdHMvYmFzaWNfaW9zLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCB7CiMgNTUgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9iYXNpY19pb3MuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGNsYXNzIGJhc2ljX2lvcyA6IHB1YmxpYyBpb3NfYmFz
ZQogICAgewogICAgcHVibGljOgoKCgoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RyYWl0czo6aW50X3R5cGUgaW50X3R5cGU7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgX1RyYWl0czo6cG9zX3R5cGUgcG9zX3R5cGU7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX1RyYWl0czo6b2ZmX3R5cGUgb2ZmX3R5cGU7CiAgICAgIHR5cGVkZWYgX1Ry
YWl0cyB0cmFpdHNfdHlwZTsKIyA3OCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2lj
X2lvcy5oIiAzCiAgICAgIHR5cGVkZWYgY3R5cGU8X0NoYXJUPiBfX2N0eXBlX3R5cGU7CiAgICAg
IHR5cGVkZWYgbnVtX3B1dDxfQ2hhclQsIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJULCBfVHJh
aXRzPiA+CiAgICAgICAgICAgX19udW1fcHV0X3R5cGU7CiAgICAgIHR5cGVkZWYgbnVtX2dldDxf
Q2hhclQsIGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJULCBfVHJhaXRzPiA+CiAgICAgICAgICAg
X19udW1fZ2V0X3R5cGU7CgoKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIGJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiogX01fdGllOwogICAgICBtdXRhYmxlIGNoYXJfdHlwZSBfTV9maWxsOwog
ICAgICBtdXRhYmxlIGJvb2wgX01fZmlsbF9pbml0OwogICAgICBiYXNpY19zdHJlYW1idWY8X0No
YXJULCBfVHJhaXRzPiogX01fc3RyZWFtYnVmOwoKCiAgICAgIGNvbnN0IF9fY3R5cGVfdHlwZSog
X01fY3R5cGU7CgogICAgICBjb25zdCBfX251bV9wdXRfdHlwZSogX01fbnVtX3B1dDsKCiAgICAg
IGNvbnN0IF9fbnVtX2dldF90eXBlKiBfTV9udW1fZ2V0OwoKICAgIHB1YmxpYzoKCgoKCgoKCiAg
ICAgIG9wZXJhdG9yIHZvaWQqKCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZmFpbCgpID8g
MCA6IGNvbnN0X2Nhc3Q8YmFzaWNfaW9zKj4odGhpcyk7IH0KCiAgICAgIGJvb2wKICAgICAgb3Bl
cmF0b3IhKCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZmFpbCgpOyB9CiMgMTIyICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfaW9zLmgiIDMKICAgICAgaW9zdGF0ZQogICAg
ICByZHN0YXRlKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fc3RyZWFtYnVmX3N0YXRlOyB9CiMg
MTMzICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfaW9zLmgiIDMKICAgICAgdm9p
ZAogICAgICBjbGVhcihpb3N0YXRlIF9fc3RhdGUgPSBnb29kYml0KTsKCgoKCgoKCiAgICAgIHZv
aWQKICAgICAgc2V0c3RhdGUoaW9zdGF0ZSBfX3N0YXRlKQogICAgICB7IHRoaXMtPmNsZWFyKHRo
aXMtPnJkc3RhdGUoKSB8IF9fc3RhdGUpOyB9CgoKCgogICAgICB2b2lkCiAgICAgIF9NX3NldHN0
YXRlKGlvc3RhdGUgX19zdGF0ZSkKICAgICAgewoKCiBfTV9zdHJlYW1idWZfc3RhdGUgfD0gX19z
dGF0ZTsKIGlmICh0aGlzLT5leGNlcHRpb25zKCkgJiBfX3N0YXRlKQogICB0aHJvdzsKICAgICAg
fQoKCgoKCgoKICAgICAgYm9vbAogICAgICBnb29kKCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhp
cy0+cmRzdGF0ZSgpID09IDA7IH0KCgoKCgoKCiAgICAgIGJvb2wKICAgICAgZW9mKCkgY29uc3QK
ICAgICAgeyByZXR1cm4gKHRoaXMtPnJkc3RhdGUoKSAmIGVvZmJpdCkgIT0gMDsgfQojIDE4NiAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAgIGJvb2wKICAg
ICAgZmFpbCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuICh0aGlzLT5yZHN0YXRlKCkgJiAoYmFkYml0
IHwgZmFpbGJpdCkpICE9IDA7IH0KCgoKCgoKCiAgICAgIGJvb2wKICAgICAgYmFkKCkgY29uc3QK
ICAgICAgeyByZXR1cm4gKHRoaXMtPnJkc3RhdGUoKSAmIGJhZGJpdCkgIT0gMDsgfQojIDIwNyAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAgIGlvc3RhdGUK
ICAgICAgZXhjZXB0aW9ucygpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2V4Y2VwdGlvbjsgfQoj
IDI0MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAgIHZv
aWQKICAgICAgZXhjZXB0aW9ucyhpb3N0YXRlIF9fZXhjZXB0KQogICAgICB7CiAgICAgICAgX01f
ZXhjZXB0aW9uID0gX19leGNlcHQ7CiAgICAgICAgdGhpcy0+Y2xlYXIoX01fc3RyZWFtYnVmX3N0
YXRlKTsKICAgICAgfQoKCgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgYmFzaWNfaW9zKGJhc2lj
X3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KiBfX3NiKQogICAgICA6IGlvc19iYXNlKCksIF9N
X3RpZSgwKSwgX01fZmlsbCgpLCBfTV9maWxsX2luaXQoZmFsc2UpLCBfTV9zdHJlYW1idWYoMCks
CiAgICAgIF9NX2N0eXBlKDApLCBfTV9udW1fcHV0KDApLCBfTV9udW1fZ2V0KDApCiAgICAgIHsg
dGhpcy0+aW5pdChfX3NiKTsgfQoKCgoKCgoKICAgICAgdmlydHVhbAogICAgICB+YmFzaWNfaW9z
KCkgeyB9CiMgMjgwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfaW9zLmgiIDMK
ICAgICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+KgogICAgICB0aWUoKSBjb25zdAog
ICAgICB7IHJldHVybiBfTV90aWU7IH0KIyAyOTIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0
cy9iYXNpY19pb3MuaCIgMwogICAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4qCiAg
ICAgIHRpZShiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4qIF9fdGllc3RyKQogICAgICB7
CiAgICAgICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+KiBfX29sZCA9IF9NX3RpZTsK
ICAgICAgICBfTV90aWUgPSBfX3RpZXN0cjsKICAgICAgICByZXR1cm4gX19vbGQ7CiAgICAgIH0K
CgoKCgoKCiAgICAgIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KgogICAgICByZGJ1
ZigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3N0cmVhbWJ1ZjsgfQojIDMzMiAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAgIGJhc2ljX3N0cmVhbWJ1Zjxf
Q2hhclQsIF9UcmFpdHM+KgogICAgICByZGJ1ZihiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJh
aXRzPiogX19zYik7CiMgMzQ2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfaW9z
LmgiIDMKICAgICAgYmFzaWNfaW9zJgogICAgICBjb3B5Zm10KGNvbnN0IGJhc2ljX2lvcyYgX19y
aHMpOwoKCgoKCgoKICAgICAgY2hhcl90eXBlCiAgICAgIGZpbGwoKSBjb25zdAogICAgICB7CiBp
ZiAoIV9NX2ZpbGxfaW5pdCkKICAgewogICAgIF9NX2ZpbGwgPSB0aGlzLT53aWRlbignICcpOwog
ICAgIF9NX2ZpbGxfaW5pdCA9IHRydWU7CiAgIH0KIHJldHVybiBfTV9maWxsOwogICAgICB9CiMg
Mzc1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfaW9zLmgiIDMKICAgICAgY2hh
cl90eXBlCiAgICAgIGZpbGwoY2hhcl90eXBlIF9fY2gpCiAgICAgIHsKIGNoYXJfdHlwZSBfX29s
ZCA9IHRoaXMtPmZpbGwoKTsKIF9NX2ZpbGwgPSBfX2NoOwogcmV0dXJuIF9fb2xkOwogICAgICB9
CiMgMzk1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvYmFzaWNfaW9zLmgiIDMKICAgICAg
bG9jYWxlCiAgICAgIGltYnVlKGNvbnN0IGxvY2FsZSYgX19sb2MpOwojIDQxNSAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAgIGNoYXIKICAgICAgbmFycm93
KGNoYXJfdHlwZSBfX2MsIGNoYXIgX19kZmF1bHQpIGNvbnN0OwojIDQzMyAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAgIGNoYXJfdHlwZQogICAgICB3aWRl
bihjaGFyIF9fYykgY29uc3Q7CgogICAgcHJvdGVjdGVkOgoKCgoKCgoKICAgICAgYmFzaWNfaW9z
KCkKICAgICAgOiBpb3NfYmFzZSgpLCBfTV90aWUoMCksIF9NX2ZpbGwoY2hhcl90eXBlKCkpLCBf
TV9maWxsX2luaXQoZmFsc2UpLAogICAgICBfTV9zdHJlYW1idWYoMCksIF9NX2N0eXBlKDApLCBf
TV9udW1fcHV0KDApLCBfTV9udW1fZ2V0KDApCiAgICAgIHsgfQoKCgoKCgoKICAgICAgdm9pZAog
ICAgICBpbml0KGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KiBfX3NiKTsKCiAgICAg
IHZvaWQKICAgICAgX01fY2FjaGVfbG9jYWxlKGNvbnN0IGxvY2FsZSYgX19sb2MpOwogICAgfTsK
Cn0KCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19pb3MudGNjIiAxIDMK
IyAzNyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2Jhc2ljX2lvcy50Y2MiIDMKI2RlZmlu
ZSBfQkFTSUNfSU9TX1RDQyAxCgogICAgICAgCiMgNDAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9iYXNpY19pb3MudGNjIiAzCgpuYW1lc3BhY2Ugc3RkIHsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgdm9pZAogICAgYmFzaWNfaW9zPF9DaGFy
VCwgX1RyYWl0cz46OmNsZWFyKGlvc3RhdGUgX19zdGF0ZSkKICAgIHsKICAgICAgaWYgKHRoaXMt
PnJkYnVmKCkpCiBfTV9zdHJlYW1idWZfc3RhdGUgPSBfX3N0YXRlOwogICAgICBlbHNlCiAgIF9N
X3N0cmVhbWJ1Zl9zdGF0ZSA9IF9fc3RhdGUgfCBiYWRiaXQ7CiAgICAgIGlmICh0aGlzLT5leGNl
cHRpb25zKCkgJiB0aGlzLT5yZHN0YXRlKCkpCiBfX3Rocm93X2lvc19mYWlsdXJlKCgiYmFzaWNf
aW9zOjpjbGVhciIpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzPgogICAgYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qCiAgICBiYXNp
Y19pb3M8X0NoYXJULCBfVHJhaXRzPjo6cmRidWYoYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1Ry
YWl0cz4qIF9fc2IpCiAgICB7CiAgICAgIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+
KiBfX29sZCA9IF9NX3N0cmVhbWJ1ZjsKICAgICAgX01fc3RyZWFtYnVmID0gX19zYjsKICAgICAg
dGhpcy0+Y2xlYXIoKTsKICAgICAgcmV0dXJuIF9fb2xkOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pb3M8X0NoYXJULCBfVHJh
aXRzPiYKICAgIGJhc2ljX2lvczxfQ2hhclQsIF9UcmFpdHM+Ojpjb3B5Zm10KGNvbnN0IGJhc2lj
X2lvcyYgX19yaHMpCiAgICB7CgoKICAgICAgaWYgKHRoaXMgIT0gJl9fcmhzKQogewoKCgoKICAg
X1dvcmRzKiBfX3dvcmRzID0gKF9fcmhzLl9NX3dvcmRfc2l6ZSA8PSBfU19sb2NhbF93b3JkX3Np
emUpID8KICAgICAgICAgICAgICAgICAgICAgIF9NX2xvY2FsX3dvcmQgOiBuZXcgX1dvcmRzW19f
cmhzLl9NX3dvcmRfc2l6ZV07CgoKICAgX0NhbGxiYWNrX2xpc3QqIF9fY2IgPSBfX3Jocy5fTV9j
YWxsYmFja3M7CiAgIGlmIChfX2NiKQogICAgIF9fY2ItPl9NX2FkZF9yZWZlcmVuY2UoKTsKICAg
X01fY2FsbF9jYWxsYmFja3MoZXJhc2VfZXZlbnQpOwogICBpZiAoX01fd29yZCAhPSBfTV9sb2Nh
bF93b3JkKQogICAgIHsKICAgICAgIGRlbGV0ZSBbXSBfTV93b3JkOwogICAgICAgX01fd29yZCA9
IDA7CiAgICAgfQogICBfTV9kaXNwb3NlX2NhbGxiYWNrcygpOwoKCiAgIF9NX2NhbGxiYWNrcyA9
IF9fY2I7CiAgIGZvciAoaW50IF9faSA9IDA7IF9faSA8IF9fcmhzLl9NX3dvcmRfc2l6ZTsgKytf
X2kpCiAgICAgX193b3Jkc1tfX2ldID0gX19yaHMuX01fd29yZFtfX2ldOwogICBfTV93b3JkID0g
X193b3JkczsKICAgX01fd29yZF9zaXplID0gX19yaHMuX01fd29yZF9zaXplOwoKICAgdGhpcy0+
ZmxhZ3MoX19yaHMuZmxhZ3MoKSk7CiAgIHRoaXMtPndpZHRoKF9fcmhzLndpZHRoKCkpOwogICB0
aGlzLT5wcmVjaXNpb24oX19yaHMucHJlY2lzaW9uKCkpOwogICB0aGlzLT50aWUoX19yaHMudGll
KCkpOwogICB0aGlzLT5maWxsKF9fcmhzLmZpbGwoKSk7CiAgIF9NX2lvc19sb2NhbGUgPSBfX3Jo
cy5nZXRsb2MoKTsKICAgX01fY2FjaGVfbG9jYWxlKF9NX2lvc19sb2NhbGUpOwoKICAgX01fY2Fs
bF9jYWxsYmFja3MoY29weWZtdF9ldmVudCk7CgoKICAgdGhpcy0+ZXhjZXB0aW9ucyhfX3Jocy5l
eGNlcHRpb25zKCkpOwogfQogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGNoYXIKICAgIGJhc2ljX2lvczxf
Q2hhclQsIF9UcmFpdHM+OjpuYXJyb3coY2hhcl90eXBlIF9fYywgY2hhciBfX2RmYXVsdCkgY29u
c3QKICAgIHsgcmV0dXJuIF9fY2hlY2tfZmFjZXQoX01fY3R5cGUpLm5hcnJvdyhfX2MsIF9fZGZh
dWx0KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAg
ICBfQ2hhclQKICAgIGJhc2ljX2lvczxfQ2hhclQsIF9UcmFpdHM+Ojp3aWRlbihjaGFyIF9fYykg
Y29uc3QKICAgIHsgcmV0dXJuIF9fY2hlY2tfZmFjZXQoX01fY3R5cGUpLndpZGVuKF9fYyk7IH0K
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGxvY2Fs
ZQogICAgYmFzaWNfaW9zPF9DaGFyVCwgX1RyYWl0cz46OmltYnVlKGNvbnN0IGxvY2FsZSYgX19s
b2MpCiAgICB7CiAgICAgIGxvY2FsZSBfX29sZCh0aGlzLT5nZXRsb2MoKSk7CiAgICAgIGlvc19i
YXNlOjppbWJ1ZShfX2xvYyk7CiAgICAgIF9NX2NhY2hlX2xvY2FsZShfX2xvYyk7CiAgICAgIGlm
ICh0aGlzLT5yZGJ1ZigpICE9IDApCiB0aGlzLT5yZGJ1ZigpLT5wdWJpbWJ1ZShfX2xvYyk7CiAg
ICAgIHJldHVybiBfX29sZDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPgogICAgdm9pZAogICAgYmFzaWNfaW9zPF9DaGFyVCwgX1RyYWl0cz46Omlu
aXQoYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9fc2IpCiAgICB7CgogICAgICBp
b3NfYmFzZTo6X01faW5pdCgpOwoKCiAgICAgIF9NX2NhY2hlX2xvY2FsZShfTV9pb3NfbG9jYWxl
KTsKIyAxNjAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19pb3MudGNjIiAzCiAg
ICAgIF9NX2ZpbGwgPSBfQ2hhclQoKTsKICAgICAgX01fZmlsbF9pbml0ID0gZmFsc2U7CgogICAg
ICBfTV90aWUgPSAwOwogICAgICBfTV9leGNlcHRpb24gPSBnb29kYml0OwogICAgICBfTV9zdHJl
YW1idWYgPSBfX3NiOwogICAgICBfTV9zdHJlYW1idWZfc3RhdGUgPSBfX3NiID8gZ29vZGJpdCA6
IGJhZGJpdDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzPgogICAgdm9pZAogICAgYmFzaWNfaW9zPF9DaGFyVCwgX1RyYWl0cz46Ol9NX2NhY2hlX2xv
Y2FsZShjb25zdCBsb2NhbGUmIF9fbG9jKQogICAgewogICAgICBpZiAoX19idWlsdGluX2V4cGVj
dChoYXNfZmFjZXQ8X19jdHlwZV90eXBlPihfX2xvYyksIHRydWUpKQogX01fY3R5cGUgPSAmdXNl
X2ZhY2V0PF9fY3R5cGVfdHlwZT4oX19sb2MpOwogICAgICBlbHNlCiBfTV9jdHlwZSA9IDA7Cgog
ICAgICBpZiAoX19idWlsdGluX2V4cGVjdChoYXNfZmFjZXQ8X19udW1fcHV0X3R5cGU+KF9fbG9j
KSwgdHJ1ZSkpCiBfTV9udW1fcHV0ID0gJnVzZV9mYWNldDxfX251bV9wdXRfdHlwZT4oX19sb2Mp
OwogICAgICBlbHNlCiBfTV9udW1fcHV0ID0gMDsKCiAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0
KGhhc19mYWNldDxfX251bV9nZXRfdHlwZT4oX19sb2MpLCB0cnVlKSkKIF9NX251bV9nZXQgPSAm
dXNlX2ZhY2V0PF9fbnVtX2dldF90eXBlPihfX2xvYyk7CiAgICAgIGVsc2UKIF9NX251bV9nZXQg
PSAwOwogICAgfQoKCgoKCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX2lvczxjaGFyPjsK
CgogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19pb3M8d2NoYXJfdD47CgoKCn0KIyA0NjYg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9iYXNpY19pb3MuaCIgMiAzCiMgNTEgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvaW9zIiAyIDMKIyA0NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9v
c3RyZWFtIiAyIDMKCgpuYW1lc3BhY2Ugc3RkIHsKIyA1OCAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9vc3RyZWFtIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
PgogICAgY2xhc3MgYmFzaWNfb3N0cmVhbSA6IHZpcnR1YWwgcHVibGljIGJhc2ljX2lvczxfQ2hh
clQsIF9UcmFpdHM+CiAgICB7CiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFy
X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RyYWl0czo6aW50X3R5cGUgaW50X3R5cGU7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RyYWl0czo6cG9zX3R5cGUgcG9zX3R5cGU7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgX1RyYWl0czo6b2ZmX3R5cGUgb2ZmX3R5cGU7CiAgICAgIHR5cGVk
ZWYgX1RyYWl0cyB0cmFpdHNfdHlwZTsKCgogICAgICB0eXBlZGVmIGJhc2ljX3N0cmVhbWJ1Zjxf
Q2hhclQsIF9UcmFpdHM+IF9fc3RyZWFtYnVmX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfaW9z
PF9DaGFyVCwgX1RyYWl0cz4gX19pb3NfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19vc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgbnVtX3B1dDxf
Q2hhclQsIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJULCBfVHJhaXRzPiA+CiAgICAgICAgICAg
ICBfX251bV9wdXRfdHlwZTsKICAgICAgdHlwZWRlZiBjdHlwZTxfQ2hhclQ+IF9fY3R5cGVfdHlw
ZTsKIyA4NSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9vc3RyZWFtIiAzCiAgICAgIGV4cGxpY2l0
CiAgICAgIGJhc2ljX29zdHJlYW0oX19zdHJlYW1idWZfdHlwZSogX19zYikKICAgICAgeyB0aGlz
LT5pbml0KF9fc2IpOyB9CgoKCgoKCiAgICAgIHZpcnR1YWwKICAgICAgfmJhc2ljX29zdHJlYW0o
KSB7IH0KCgogICAgICBjbGFzcyBzZW50cnk7CiAgICAgIGZyaWVuZCBjbGFzcyBzZW50cnk7CiMg
MTExICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL29zdHJlYW0iIDMKICAgICAgX19vc3RyZWFtX3R5
cGUmCiAgICAgIG9wZXJhdG9yPDwoX19vc3RyZWFtX3R5cGUmICgqX19wZikoX19vc3RyZWFtX3R5
cGUmKSkKICAgICAgewoKCgogcmV0dXJuIF9fcGYoKnRoaXMpOwogICAgICB9CgogICAgICBfX29z
dHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PChfX2lvc190eXBlJiAoKl9fcGYpKF9faW9zX3R5
cGUmKSkKICAgICAgewoKCgogX19wZigqdGhpcyk7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAg
ICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KGlvc19iYXNlJiAoKl9fcGYpIChp
b3NfYmFzZSYpKQogICAgICB7CgoKCiBfX3BmKCp0aGlzKTsKIHJldHVybiAqdGhpczsKICAgICAg
fQojIDE2OCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9vc3RyZWFtIiAzCiAgICAgIF9fb3N0cmVh
bV90eXBlJgogICAgICBvcGVyYXRvcjw8KGxvbmcgX19uKQogICAgICB7IHJldHVybiBfTV9pbnNl
cnQoX19uKTsgfQoKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPDwodW5zaWdu
ZWQgbG9uZyBfX24pCiAgICAgIHsgcmV0dXJuIF9NX2luc2VydChfX24pOyB9CgogICAgICBfX29z
dHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PChib29sIF9fbikKICAgICAgeyByZXR1cm4gX01f
aW5zZXJ0KF9fbik7IH0KCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KHNo
b3J0IF9fbik7CgogICAgICBfX29zdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PCh1bnNpZ25l
ZCBzaG9ydCBfX24pCiAgICAgIHsKCgogcmV0dXJuIF9NX2luc2VydChzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPihfX24pKTsKICAgICAgfQoKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9w
ZXJhdG9yPDwoaW50IF9fbik7CgogICAgICBfX29zdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8
PCh1bnNpZ25lZCBpbnQgX19uKQogICAgICB7CgoKIHJldHVybiBfTV9pbnNlcnQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZz4oX19uKSk7CiAgICAgIH0KCgogICAgICBfX29zdHJlYW1fdHlwZSYK
ICAgICAgb3BlcmF0b3I8PChsb25nIGxvbmcgX19uKQogICAgICB7IHJldHVybiBfTV9pbnNlcnQo
X19uKTsgfQoKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPDwodW5zaWduZWQg
bG9uZyBsb25nIF9fbikKICAgICAgeyByZXR1cm4gX01faW5zZXJ0KF9fbik7IH0KCgogICAgICBf
X29zdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PChkb3VibGUgX19mKQogICAgICB7IHJldHVy
biBfTV9pbnNlcnQoX19mKTsgfQoKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9y
PDwoZmxvYXQgX19mKQogICAgICB7CgoKIHJldHVybiBfTV9pbnNlcnQoc3RhdGljX2Nhc3Q8ZG91
YmxlPihfX2YpKTsKICAgICAgfQoKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9y
PDwobG9uZyBkb3VibGUgX19mKQogICAgICB7IHJldHVybiBfTV9pbnNlcnQoX19mKTsgfQoKICAg
ICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPDwoY29uc3Qgdm9pZCogX19wKQogICAg
ICB7IHJldHVybiBfTV9pbnNlcnQoX19wKTsgfQojIDI1MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9vc3RyZWFtIiAzCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KF9fc3Ry
ZWFtYnVmX3R5cGUqIF9fc2IpOwojIDI4NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9vc3RyZWFt
IiAzCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBwdXQoY2hhcl90eXBlIF9fYyk7CgoKICAg
ICAgdm9pZAogICAgICBfTV93cml0ZShjb25zdCBjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBf
X24pCiAgICAgIHsKIGNvbnN0IHN0cmVhbXNpemUgX19wdXQgPSB0aGlzLT5yZGJ1ZigpLT5zcHV0
bihfX3MsIF9fbik7CiBpZiAoX19wdXQgIT0gX19uKQogICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFz
ZTo6YmFkYml0KTsKICAgICAgfQojIDMxNCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9vc3RyZWFt
IiAzCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICB3cml0ZShjb25zdCBjaGFyX3R5cGUqIF9f
cywgc3RyZWFtc2l6ZSBfX24pOwojIDMyNyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9vc3RyZWFt
IiAzCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBmbHVzaCgpOwojIDMzOCAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9vc3RyZWFtIiAzCiAgICAgIHBvc190eXBlCiAgICAgIHRlbGxwKCk7CiMg
MzQ5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL29zdHJlYW0iIDMKICAgICAgX19vc3RyZWFtX3R5
cGUmCiAgICAgIHNlZWtwKHBvc190eXBlKTsKIyAzNjEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
b3N0cmVhbSIgMwogICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIHNlZWtwKG9mZl90eXBlLCBp
b3NfYmFzZTo6c2Vla2Rpcik7CgogICAgcHJvdGVjdGVkOgogICAgICBleHBsaWNpdAogICAgICBi
YXNpY19vc3RyZWFtKCkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWVUPgogICAg
ICAgIF9fb3N0cmVhbV90eXBlJgogICAgICAgIF9NX2luc2VydChfVmFsdWVUIF9fdik7CiAgICB9
OwojIDM4MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9vc3RyZWFtIiAzCiAgdGVtcGxhdGUgPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGNsYXNzIGJhc2ljX29zdHJlYW08
X0NoYXJULCBfVHJhaXRzPjo6c2VudHJ5CiAgICB7CgogICAgICBib29sIF9NX29rOwogICAgICBi
YXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9NX29zOwoKICAgIHB1YmxpYzoKIyA0MDIg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvb3N0cmVhbSIgMwogICAgICBleHBsaWNpdAogICAgICBz
ZW50cnkoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zKTsKIyA0MTIgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvb3N0cmVhbSIgMwogICAgICB+c2VudHJ5KCkKICAgICAgewoKIGlm
IChfTV9vcy5mbGFncygpICYgaW9zX2Jhc2U6OnVuaXRidWYgJiYgIXVuY2F1Z2h0X2V4Y2VwdGlv
bigpKQogICB7CgogICAgIGlmIChfTV9vcy5yZGJ1ZigpICYmIF9NX29zLnJkYnVmKCktPnB1YnN5
bmMoKSA9PSAtMSkKICAgICAgIF9NX29zLnNldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwogICB9
CiAgICAgIH0KIyA0MzAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvb3N0cmVhbSIgMwogICAgICBv
cGVyYXRvciBib29sKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fb2s7IH0KICAgIH07CiMgNDUx
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL29zdHJlYW0iIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
IF9fb3V0LCBfQ2hhclQgX19jKQogICAgeyByZXR1cm4gX19vc3RyZWFtX2luc2VydChfX291dCwg
Jl9fYywgMSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
PgogICAgaW5saW5lIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9y
PDwoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX291dCwgY2hhciBfX2MpCiAgICB7
IHJldHVybiAoX19vdXQgPDwgX19vdXQud2lkZW4oX19jKSk7IH0KCgogIHRlbXBsYXRlIDxjbGFz
cyBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0cz4mCiAgICBv
cGVyYXRvcjw8KGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0cz4mIF9fb3V0LCBjaGFyIF9fYykK
ICAgIHsgcmV0dXJuIF9fb3N0cmVhbV9pbnNlcnQoX19vdXQsICZfX2MsIDEpOyB9CgoKICB0ZW1w
bGF0ZTxjbGFzcyBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0
cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0cz4mIF9fb3V0LCBz
aWduZWQgY2hhciBfX2MpCiAgICB7IHJldHVybiAoX19vdXQgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4o
X19jKSk7IH0KCiAgdGVtcGxhdGU8Y2xhc3MgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19vc3Ry
ZWFtPGNoYXIsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPGNoYXIsIF9U
cmFpdHM+JiBfX291dCwgdW5zaWduZWQgY2hhciBfX2MpCiAgICB7IHJldHVybiAoX19vdXQgPDwg
c3RhdGljX2Nhc3Q8Y2hhcj4oX19jKSk7IH0KIyA0OTMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
b3N0cmVhbSIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4K
ICAgIGlubGluZSBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8
KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIGNvbnN0IF9DaGFyVCogX19z
KQogICAgewogICAgICBpZiAoIV9fcykKIF9fb3V0LnNldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQp
OwogICAgICBlbHNlCiBfX29zdHJlYW1faW5zZXJ0KF9fb3V0LCBfX3MsCiAgICBzdGF0aWNfY2Fz
dDxzdHJlYW1zaXplPihfVHJhaXRzOjpsZW5ndGgoX19zKSkpOwogICAgICByZXR1cm4gX19vdXQ7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAg
IGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiAmCiAgICBvcGVyYXRvcjw8KGJhc2ljX29z
dHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIGNvbnN0IGNoYXIqIF9fcyk7CgoKICB0ZW1w
bGF0ZTxjbGFzcyBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0
cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0cz4mIF9fb3V0LCBj
b25zdCBjaGFyKiBfX3MpCiAgICB7CiAgICAgIGlmICghX19zKQogX19vdXQuc2V0c3RhdGUoaW9z
X2Jhc2U6OmJhZGJpdCk7CiAgICAgIGVsc2UKIF9fb3N0cmVhbV9pbnNlcnQoX19vdXQsIF9fcywK
ICAgIHN0YXRpY19jYXN0PHN0cmVhbXNpemU+KF9UcmFpdHM6Omxlbmd0aChfX3MpKSk7CiAgICAg
IHJldHVybiBfX291dDsKICAgIH0KCgogIHRlbXBsYXRlPGNsYXNzIF9UcmFpdHM+CiAgICBpbmxp
bmUgYmFzaWNfb3N0cmVhbTxjaGFyLCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0
cmVhbTxjaGFyLCBfVHJhaXRzPiYgX19vdXQsIGNvbnN0IHNpZ25lZCBjaGFyKiBfX3MpCiAgICB7
IHJldHVybiAoX19vdXQgPDwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oX19zKSk7IH0K
CiAgdGVtcGxhdGU8Y2xhc3MgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19vc3RyZWFtPGNoYXIs
IF9UcmFpdHM+ICYKICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxjaGFyLCBfVHJhaXRzPiYg
X19vdXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fcykKICAgIHsgcmV0dXJuIChfX291dCA8PCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihfX3MpKTsgfQojIDU0MyAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9vc3RyZWFtIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAg
IGVuZGwoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zKQogICAgeyByZXR1cm4g
Zmx1c2goX19vcy5wdXQoX19vcy53aWRlbignXG4nKSkpOyB9CgoKCgoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19vc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4mCiAgICBlbmRzKGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRz
PiYgX19vcykKICAgIHsgcmV0dXJuIF9fb3MucHV0KF9DaGFyVCgpKTsgfQoKCgoKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19v
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBmbHVzaChiYXNpY19vc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mIF9fb3MpCiAgICB7IHJldHVybiBfX29zLmZsdXNoKCk7IH0KCn0KCgojIDEgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9vc3RyZWFtLnRjYyIgMSAzCiMgNDIgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvYml0cy9vc3RyZWFtLnRjYyIgMwojZGVmaW5lIF9PU1RSRUFNX1RDQyAx
CgogICAgICAgCiMgNDUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9vc3RyZWFtLnRjYyIg
MwoKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2xvY2FsZSIgMSAzCiMgMzkgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvbG9jYWxlIiAzCiNkZWZpbmUgX0dMSUJDWFhfTE9DQUxFIDEKCiAgICAg
ICAKIyA0MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9sb2NhbGUiIDMKCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMudGNjIiAxIDMKIyAzNyAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9mYWNldHMudGNjIiAzCiNkZWZpbmUgX0xPQ0FM
RV9GQUNFVFNfVENDIDEKCiAgICAgICAKIyA0MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L2xvY2FsZV9mYWNldHMudGNjIiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL3R5cGVp
bmZvIiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS90eXBlaW5mbyIgMwojZGVmaW5l
IF9UWVBFSU5GTyAKCgoKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGRlZmF1bHQpCgpleHRl
cm4gIkMrKyIgewoKbmFtZXNwYWNlIF9fY3h4YWJpdjEKewogIGNsYXNzIF9fY2xhc3NfdHlwZV9p
bmZvOwp9CgoKCgoKCgojZGVmaW5lIF9fR1hYX01FUkdFRF9UWVBFSU5GT19OQU1FUyAxCgoKCm5h
bWVzcGFjZSBzdGQKewoKCgoKCgogIGNsYXNzIHR5cGVfaW5mbwogIHsKICBwdWJsaWM6CgoKCgog
ICAgdmlydHVhbCB+dHlwZV9pbmZvKCk7CgoKCiAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QK
ICAgIHsgcmV0dXJuIF9fbmFtZTsgfQojIDk0ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL3R5cGVp
bmZvIiAzCiAgICBib29sIGJlZm9yZShjb25zdCB0eXBlX2luZm8mIF9fYXJnKSBjb25zdAogICAg
eyByZXR1cm4gX19uYW1lIDwgX19hcmcuX19uYW1lOyB9CgogICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IHR5cGVfaW5mbyYgX19hcmcpIGNvbnN0CiAgICB7IHJldHVybiBfX25hbWUgPT0gX19hcmcu
X19uYW1lOyB9CgogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHR5cGVfaW5mbyYgX19hcmcpIGNv
bnN0CiAgICB7IHJldHVybiAhb3BlcmF0b3I9PShfX2FyZyk7IH0KCgoKCgogICAgdmlydHVhbCBi
b29sIF9faXNfcG9pbnRlcl9wKCkgY29uc3Q7CgoKICAgIHZpcnR1YWwgYm9vbCBfX2lzX2Z1bmN0
aW9uX3AoKSBjb25zdDsKCgoKCgoKCiAgICB2aXJ0dWFsIGJvb2wgX19kb19jYXRjaChjb25zdCB0
eXBlX2luZm8gKl9fdGhyX3R5cGUsIHZvaWQgKipfX3Rocl9vYmosCiAgICAgICB1bnNpZ25lZCBf
X291dGVyKSBjb25zdDsKCgogICAgdmlydHVhbCBib29sIF9fZG9fdXBjYXN0KGNvbnN0IF9fY3h4
YWJpdjE6Ol9fY2xhc3NfdHlwZV9pbmZvICpfX3RhcmdldCwKICAgICAgICB2b2lkICoqX19vYmpf
cHRyKSBjb25zdDsKCgoKICBwcm90ZWN0ZWQ6CiAgICBjb25zdCBjaGFyICpfX25hbWU7CgogICAg
ZXhwbGljaXQgdHlwZV9pbmZvKGNvbnN0IGNoYXIgKl9fbik6IF9fbmFtZShfX24pIHsgfQoKICBw
cml2YXRlOgoKICAgIHR5cGVfaW5mbyYgb3BlcmF0b3I9KGNvbnN0IHR5cGVfaW5mbyYpOwogICAg
dHlwZV9pbmZvKGNvbnN0IHR5cGVfaW5mbyYpOwogIH07CgoKCgoKCiAgY2xhc3MgYmFkX2Nhc3Qg
OiBwdWJsaWMgZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIGJhZF9jYXN0KCkgdGhyb3coKSB7
IH0KCgoKICAgIHZpcnR1YWwgfmJhZF9jYXN0KCkgdGhyb3coKTsKCgogICAgdmlydHVhbCBjb25z
dCBjaGFyKiB3aGF0KCkgY29uc3QgdGhyb3coKTsKICB9OwoKCiAgY2xhc3MgYmFkX3R5cGVpZCA6
IHB1YmxpYyBleGNlcHRpb24KICB7CiAgcHVibGljOgogICAgYmFkX3R5cGVpZCAoKSB0aHJvdygp
IHsgfQoKCgogICAgdmlydHVhbCB+YmFkX3R5cGVpZCgpIHRocm93KCk7CgoKICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCk7CiAgfTsKfQoKI3ByYWdtYSBHQ0Mgdmlz
aWJpbGl0eSBwb3AKCn0KIyA0MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL2xvY2FsZV9m
YWNldHMudGNjIiAyIDMKCgoKbmFtZXNwYWNlIHN0ZCB7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9G
YWNldD4KICAgIGxvY2FsZQogICAgbG9jYWxlOjpjb21iaW5lKGNvbnN0IGxvY2FsZSYgX19vdGhl
cikgY29uc3QKICAgIHsKICAgICAgX0ltcGwqIF9fdG1wID0gbmV3IF9JbXBsKCpfTV9pbXBsLCAx
KTsKICAgICAgdHJ5CiB7CiAgIF9fdG1wLT5fTV9yZXBsYWNlX2ZhY2V0KF9fb3RoZXIuX01faW1w
bCwgJl9GYWNldDo6aWQpOwogfQogICAgICBjYXRjaCguLi4pCiB7CiAgIF9fdG1wLT5fTV9yZW1v
dmVfcmVmZXJlbmNlKCk7CiAgIHRocm93OwogfQogICAgICByZXR1cm4gbG9jYWxlKF9fdG1wKTsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBl
bmFtZSBfQWxsb2M+CiAgICBib29sCiAgICBsb2NhbGU6Om9wZXJhdG9yKCkoY29uc3QgYmFzaWNf
c3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19zMSwKICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3MyKSBj
b25zdAogICAgewogICAgICB0eXBlZGVmIHN0ZDo6Y29sbGF0ZTxfQ2hhclQ+IF9fY29sbGF0ZV90
eXBlOwogICAgICBjb25zdCBfX2NvbGxhdGVfdHlwZSYgX19jb2xsYXRlID0gdXNlX2ZhY2V0PF9f
Y29sbGF0ZV90eXBlPigqdGhpcyk7CiAgICAgIHJldHVybiAoX19jb2xsYXRlLmNvbXBhcmUoX19z
MS5kYXRhKCksIF9fczEuZGF0YSgpICsgX19zMS5sZW5ndGgoKSwKICAgIF9fczIuZGF0YSgpLCBf
X3MyLmRhdGEoKSArIF9fczIubGVuZ3RoKCkpIDwgMCk7CiAgICB9CiMgODcgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLnRjYyIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9GYWNldD4KICAgIGlubGluZSBib29sCiAgICBoYXNfZmFjZXQoY29uc3QgbG9jYWxlJiBfX2xv
YykgdGhyb3coKQogICAgewogICAgICBjb25zdCBzaXplX3QgX19pID0gX0ZhY2V0OjppZC5fTV9p
ZCgpOwogICAgICBjb25zdCBsb2NhbGU6OmZhY2V0KiogX19mYWNldHMgPSBfX2xvYy5fTV9pbXBs
LT5fTV9mYWNldHM7CiAgICAgIHJldHVybiAoX19pIDwgX19sb2MuX01faW1wbC0+X01fZmFjZXRz
X3NpemUgJiYgX19mYWNldHNbX19pXSk7CiAgICB9CiMgMTA5ICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2MiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+
CiAgICBpbmxpbmUgY29uc3QgX0ZhY2V0JgogICAgdXNlX2ZhY2V0KGNvbnN0IGxvY2FsZSYgX19s
b2MpCiAgICB7CiAgICAgIGNvbnN0IHNpemVfdCBfX2kgPSBfRmFjZXQ6OmlkLl9NX2lkKCk7CiAg
ICAgIGNvbnN0IGxvY2FsZTo6ZmFjZXQqKiBfX2ZhY2V0cyA9IF9fbG9jLl9NX2ltcGwtPl9NX2Zh
Y2V0czsKICAgICAgaWYgKCEoX19pIDwgX19sb2MuX01faW1wbC0+X01fZmFjZXRzX3NpemUgJiYg
X19mYWNldHNbX19pXSkpCiAgICAgICAgX190aHJvd19iYWRfY2FzdCgpOwogICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgX0ZhY2V0Jj4oKl9fZmFjZXRzW19faV0pOwogICAgfQoKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgIHN0cnVjdCBfX3VzZV9jYWNoZQogICAgewogICAg
ICBjb25zdCBfRmFjZXQqCiAgICAgIG9wZXJhdG9yKCkgKGNvbnN0IGxvY2FsZSYgX19sb2MpIGNv
bnN0OwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHN0cnVjdCBfX3Vz
ZV9jYWNoZTxfX251bXB1bmN0X2NhY2hlPF9DaGFyVD4gPgogICAgewogICAgICBjb25zdCBfX251
bXB1bmN0X2NhY2hlPF9DaGFyVD4qCiAgICAgIG9wZXJhdG9yKCkgKGNvbnN0IGxvY2FsZSYgX19s
b2MpIGNvbnN0CiAgICAgIHsKIGNvbnN0IHNpemVfdCBfX2kgPSBudW1wdW5jdDxfQ2hhclQ+Ojpp
ZC5fTV9pZCgpOwogY29uc3QgbG9jYWxlOjpmYWNldCoqIF9fY2FjaGVzID0gX19sb2MuX01faW1w
bC0+X01fY2FjaGVzOwogaWYgKCFfX2NhY2hlc1tfX2ldKQogICB7CiAgICAgX19udW1wdW5jdF9j
YWNoZTxfQ2hhclQ+KiBfX3RtcCA9IF9fbnVsbDsKICAgICB0cnkKICAgICAgIHsKICBfX3RtcCA9
IG5ldyBfX251bXB1bmN0X2NhY2hlPF9DaGFyVD47CiAgX190bXAtPl9NX2NhY2hlKF9fbG9jKTsK
ICAgICAgIH0KICAgICBjYXRjaCguLi4pCiAgICAgICB7CiAgZGVsZXRlIF9fdG1wOwogIHRocm93
OwogICAgICAgfQogICAgIF9fbG9jLl9NX2ltcGwtPl9NX2luc3RhbGxfY2FjaGUoX190bXAsIF9f
aSk7CiAgIH0KIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBfX251bXB1bmN0X2NhY2hlPF9DaGFy
VD4qPihfX2NhY2hlc1tfX2ldKTsKICAgICAgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCBib29sIF9JbnRsPgogICAgc3RydWN0IF9fdXNlX2NhY2hlPF9fbW9uZXlwdW5jdF9j
YWNoZTxfQ2hhclQsIF9JbnRsPiA+CiAgICB7CiAgICAgIGNvbnN0IF9fbW9uZXlwdW5jdF9jYWNo
ZTxfQ2hhclQsIF9JbnRsPioKICAgICAgb3BlcmF0b3IoKSAoY29uc3QgbG9jYWxlJiBfX2xvYykg
Y29uc3QKICAgICAgewogY29uc3Qgc2l6ZV90IF9faSA9IG1vbmV5cHVuY3Q8X0NoYXJULCBfSW50
bD46OmlkLl9NX2lkKCk7CiBjb25zdCBsb2NhbGU6OmZhY2V0KiogX19jYWNoZXMgPSBfX2xvYy5f
TV9pbXBsLT5fTV9jYWNoZXM7CiBpZiAoIV9fY2FjaGVzW19faV0pCiAgIHsKICAgICBfX21vbmV5
cHVuY3RfY2FjaGU8X0NoYXJULCBfSW50bD4qIF9fdG1wID0gX19udWxsOwogICAgIHRyeQogICAg
ICAgewogIF9fdG1wID0gbmV3IF9fbW9uZXlwdW5jdF9jYWNoZTxfQ2hhclQsIF9JbnRsPjsKICBf
X3RtcC0+X01fY2FjaGUoX19sb2MpOwogICAgICAgfQogICAgIGNhdGNoKC4uLikKICAgICAgIHsK
ICBkZWxldGUgX190bXA7CiAgdGhyb3c7CiAgICAgICB9CiAgICAgX19sb2MuX01faW1wbC0+X01f
aW5zdGFsbF9jYWNoZShfX3RtcCwgX19pKTsKICAgfQogcmV0dXJuIHN0YXRpY19jYXN0PAogICBj
b25zdCBfX21vbmV5cHVuY3RfY2FjaGU8X0NoYXJULCBfSW50bD4qPihfX2NhY2hlc1tfX2ldKTsK
ICAgICAgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgdm9pZAogICAg
X19udW1wdW5jdF9jYWNoZTxfQ2hhclQ+OjpfTV9jYWNoZShjb25zdCBsb2NhbGUmIF9fbG9jKQog
ICAgewogICAgICBfTV9hbGxvY2F0ZWQgPSB0cnVlOwoKICAgICAgY29uc3QgbnVtcHVuY3Q8X0No
YXJUPiYgX19ucCA9IHVzZV9mYWNldDxudW1wdW5jdDxfQ2hhclQ+ID4oX19sb2MpOwoKICAgICAg
X01fZ3JvdXBpbmdfc2l6ZSA9IF9fbnAuZ3JvdXBpbmcoKS5zaXplKCk7CiAgICAgIGNoYXIqIF9f
Z3JvdXBpbmcgPSBuZXcgY2hhcltfTV9ncm91cGluZ19zaXplXTsKICAgICAgX19ucC5ncm91cGlu
ZygpLmNvcHkoX19ncm91cGluZywgX01fZ3JvdXBpbmdfc2l6ZSk7CiAgICAgIF9NX2dyb3VwaW5n
ID0gX19ncm91cGluZzsKICAgICAgX01fdXNlX2dyb3VwaW5nID0gKF9NX2dyb3VwaW5nX3NpemUK
ICAgICYmIHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPihfX25wLmdyb3VwaW5nKClbMF0pID4gMCk7
CgogICAgICBfTV90cnVlbmFtZV9zaXplID0gX19ucC50cnVlbmFtZSgpLnNpemUoKTsKICAgICAg
X0NoYXJUKiBfX3RydWVuYW1lID0gbmV3IF9DaGFyVFtfTV90cnVlbmFtZV9zaXplXTsKICAgICAg
X19ucC50cnVlbmFtZSgpLmNvcHkoX190cnVlbmFtZSwgX01fdHJ1ZW5hbWVfc2l6ZSk7CiAgICAg
IF9NX3RydWVuYW1lID0gX190cnVlbmFtZTsKCiAgICAgIF9NX2ZhbHNlbmFtZV9zaXplID0gX19u
cC5mYWxzZW5hbWUoKS5zaXplKCk7CiAgICAgIF9DaGFyVCogX19mYWxzZW5hbWUgPSBuZXcgX0No
YXJUW19NX2ZhbHNlbmFtZV9zaXplXTsKICAgICAgX19ucC5mYWxzZW5hbWUoKS5jb3B5KF9fZmFs
c2VuYW1lLCBfTV9mYWxzZW5hbWVfc2l6ZSk7CiAgICAgIF9NX2ZhbHNlbmFtZSA9IF9fZmFsc2Vu
YW1lOwoKICAgICAgX01fZGVjaW1hbF9wb2ludCA9IF9fbnAuZGVjaW1hbF9wb2ludCgpOwogICAg
ICBfTV90aG91c2FuZHNfc2VwID0gX19ucC50aG91c2FuZHNfc2VwKCk7CgogICAgICBjb25zdCBj
dHlwZTxfQ2hhclQ+JiBfX2N0ID0gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYyk7CiAg
ICAgIF9fY3Qud2lkZW4oX19udW1fYmFzZTo6X1NfYXRvbXNfb3V0LAogICBfX251bV9iYXNlOjpf
U19hdG9tc19vdXQgKyBfX251bV9iYXNlOjpfU19vZW5kLCBfTV9hdG9tc19vdXQpOwogICAgICBf
X2N0LndpZGVuKF9fbnVtX2Jhc2U6Ol9TX2F0b21zX2luLAogICBfX251bV9iYXNlOjpfU19hdG9t
c19pbiArIF9fbnVtX2Jhc2U6Ol9TX2llbmQsIF9NX2F0b21zX2luKTsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCBib29sIF9JbnRsPgogICAgdm9pZAogICAgX19tb25leXB1bmN0
X2NhY2hlPF9DaGFyVCwgX0ludGw+OjpfTV9jYWNoZShjb25zdCBsb2NhbGUmIF9fbG9jKQogICAg
ewogICAgICBfTV9hbGxvY2F0ZWQgPSB0cnVlOwoKICAgICAgY29uc3QgbW9uZXlwdW5jdDxfQ2hh
clQsIF9JbnRsPiYgX19tcCA9CiB1c2VfZmFjZXQ8bW9uZXlwdW5jdDxfQ2hhclQsIF9JbnRsPiA+
KF9fbG9jKTsKCiAgICAgIF9NX2dyb3VwaW5nX3NpemUgPSBfX21wLmdyb3VwaW5nKCkuc2l6ZSgp
OwogICAgICBjaGFyKiBfX2dyb3VwaW5nID0gbmV3IGNoYXJbX01fZ3JvdXBpbmdfc2l6ZV07CiAg
ICAgIF9fbXAuZ3JvdXBpbmcoKS5jb3B5KF9fZ3JvdXBpbmcsIF9NX2dyb3VwaW5nX3NpemUpOwog
ICAgICBfTV9ncm91cGluZyA9IF9fZ3JvdXBpbmc7CiAgICAgIF9NX3VzZV9ncm91cGluZyA9IChf
TV9ncm91cGluZ19zaXplCiAgICAmJiBzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oX19tcC5ncm91
cGluZygpWzBdKSA+IDApOwoKICAgICAgX01fZGVjaW1hbF9wb2ludCA9IF9fbXAuZGVjaW1hbF9w
b2ludCgpOwogICAgICBfTV90aG91c2FuZHNfc2VwID0gX19tcC50aG91c2FuZHNfc2VwKCk7CiAg
ICAgIF9NX2ZyYWNfZGlnaXRzID0gX19tcC5mcmFjX2RpZ2l0cygpOwoKICAgICAgX01fY3Vycl9z
eW1ib2xfc2l6ZSA9IF9fbXAuY3Vycl9zeW1ib2woKS5zaXplKCk7CiAgICAgIF9DaGFyVCogX19j
dXJyX3N5bWJvbCA9IG5ldyBfQ2hhclRbX01fY3Vycl9zeW1ib2xfc2l6ZV07CiAgICAgIF9fbXAu
Y3Vycl9zeW1ib2woKS5jb3B5KF9fY3Vycl9zeW1ib2wsIF9NX2N1cnJfc3ltYm9sX3NpemUpOwog
ICAgICBfTV9jdXJyX3N5bWJvbCA9IF9fY3Vycl9zeW1ib2w7CgogICAgICBfTV9wb3NpdGl2ZV9z
aWduX3NpemUgPSBfX21wLnBvc2l0aXZlX3NpZ24oKS5zaXplKCk7CiAgICAgIF9DaGFyVCogX19w
b3NpdGl2ZV9zaWduID0gbmV3IF9DaGFyVFtfTV9wb3NpdGl2ZV9zaWduX3NpemVdOwogICAgICBf
X21wLnBvc2l0aXZlX3NpZ24oKS5jb3B5KF9fcG9zaXRpdmVfc2lnbiwgX01fcG9zaXRpdmVfc2ln
bl9zaXplKTsKICAgICAgX01fcG9zaXRpdmVfc2lnbiA9IF9fcG9zaXRpdmVfc2lnbjsKCiAgICAg
IF9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IF9fbXAubmVnYXRpdmVfc2lnbigpLnNpemUoKTsKICAg
ICAgX0NoYXJUKiBfX25lZ2F0aXZlX3NpZ24gPSBuZXcgX0NoYXJUW19NX25lZ2F0aXZlX3NpZ25f
c2l6ZV07CiAgICAgIF9fbXAubmVnYXRpdmVfc2lnbigpLmNvcHkoX19uZWdhdGl2ZV9zaWduLCBf
TV9uZWdhdGl2ZV9zaWduX3NpemUpOwogICAgICBfTV9uZWdhdGl2ZV9zaWduID0gX19uZWdhdGl2
ZV9zaWduOwoKICAgICAgX01fcG9zX2Zvcm1hdCA9IF9fbXAucG9zX2Zvcm1hdCgpOwogICAgICBf
TV9uZWdfZm9ybWF0ID0gX19tcC5uZWdfZm9ybWF0KCk7CgogICAgICBjb25zdCBjdHlwZTxfQ2hh
clQ+JiBfX2N0ID0gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYyk7CiAgICAgIF9fY3Qu
d2lkZW4obW9uZXlfYmFzZTo6X1NfYXRvbXMsCiAgIG1vbmV5X2Jhc2U6Ol9TX2F0b21zICsgbW9u
ZXlfYmFzZTo6X1NfZW5kLCBfTV9hdG9tcyk7CiAgICB9CiMgMjcyICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2MiIDMKICBzdGF0aWMgYm9vbAogIF9fdmVyaWZ5
X2dyb3VwaW5nKGNvbnN0IGNoYXIqIF9fZ3JvdXBpbmcsIHNpemVfdCBfX2dyb3VwaW5nX3NpemUs
CiAgICAgIGNvbnN0IHN0cmluZyYgX19ncm91cGluZ190bXApOwoKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0ZXIKICAgIG51bV9nZXQ8X0No
YXJULCBfSW5JdGVyPjo6CiAgICBfTV9leHRyYWN0X2Zsb2F0KF9Jbkl0ZXIgX19iZWcsIF9Jbkl0
ZXIgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJy
LCBzdHJpbmcmIF9feHRyYykgY29uc3QKICAgIHsKICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0czxf
Q2hhclQ+IF9fdHJhaXRzX3R5cGU7CiAgICAgIHR5cGVkZWYgX19udW1wdW5jdF9jYWNoZTxfQ2hh
clQ+IF9fY2FjaGVfdHlwZTsKICAgICAgX191c2VfY2FjaGU8X19jYWNoZV90eXBlPiBfX3VjOwog
ICAgICBjb25zdCBsb2NhbGUmIF9fbG9jID0gX19pby5fTV9nZXRsb2MoKTsKICAgICAgY29uc3Qg
X19jYWNoZV90eXBlKiBfX2xjID0gX191YyhfX2xvYyk7CiAgICAgIGNvbnN0IF9DaGFyVCogX19s
aXQgPSBfX2xjLT5fTV9hdG9tc19pbjsKICAgICAgY2hhcl90eXBlIF9fYyA9IGNoYXJfdHlwZSgp
OwoKCiAgICAgIGJvb2wgX190ZXN0ZW9mID0gX19iZWcgPT0gX19lbmQ7CgoKICAgICAgaWYgKCFf
X3Rlc3Rlb2YpCiB7CiAgIF9fYyA9ICpfX2JlZzsKICAgY29uc3QgYm9vbCBfX3BsdXMgPSBfX2Mg
PT0gX19saXRbX19udW1fYmFzZTo6X1NfaXBsdXNdOwogICBpZiAoKF9fcGx1cyB8fCBfX2MgPT0g
X19saXRbX19udW1fYmFzZTo6X1NfaW1pbnVzXSkKICAgICAgICYmICEoX19sYy0+X01fdXNlX2dy
b3VwaW5nICYmIF9fYyA9PSBfX2xjLT5fTV90aG91c2FuZHNfc2VwKQogICAgICAgJiYgIShfX2Mg
PT0gX19sYy0+X01fZGVjaW1hbF9wb2ludCkpCiAgICAgewogICAgICAgX194dHJjICs9IF9fcGx1
cyA/ICcrJyA6ICctJzsKICAgICAgIGlmICgrK19fYmVnICE9IF9fZW5kKQogIF9fYyA9ICpfX2Jl
ZzsKICAgICAgIGVsc2UKICBfX3Rlc3Rlb2YgPSB0cnVlOwogICAgIH0KIH0KCgogICAgICBib29s
IF9fZm91bmRfbWFudGlzc2EgPSBmYWxzZTsKICAgICAgaW50IF9fc2VwX3BvcyA9IDA7CiAgICAg
IHdoaWxlICghX190ZXN0ZW9mKQogewogICBpZiAoX19sYy0+X01fdXNlX2dyb3VwaW5nICYmIF9f
YyA9PSBfX2xjLT5fTV90aG91c2FuZHNfc2VwCiAgICAgICB8fCBfX2MgPT0gX19sYy0+X01fZGVj
aW1hbF9wb2ludCkKICAgICBicmVhazsKICAgZWxzZSBpZiAoX19jID09IF9fbGl0W19fbnVtX2Jh
c2U6Ol9TX2l6ZXJvXSkKICAgICB7CiAgICAgICBpZiAoIV9fZm91bmRfbWFudGlzc2EpCiAgewog
ICAgX194dHJjICs9ICcwJzsKICAgIF9fZm91bmRfbWFudGlzc2EgPSB0cnVlOwogIH0KICAgICAg
ICsrX19zZXBfcG9zOwoKICAgICAgIGlmICgrK19fYmVnICE9IF9fZW5kKQogIF9fYyA9ICpfX2Jl
ZzsKICAgICAgIGVsc2UKICBfX3Rlc3Rlb2YgPSB0cnVlOwogICAgIH0KICAgZWxzZQogICAgIGJy
ZWFrOwogfQoKCiAgICAgIGJvb2wgX19mb3VuZF9kZWMgPSBmYWxzZTsKICAgICAgYm9vbCBfX2Zv
dW5kX3NjaSA9IGZhbHNlOwogICAgICBzdHJpbmcgX19mb3VuZF9ncm91cGluZzsKICAgICAgaWYg
KF9fbGMtPl9NX3VzZV9ncm91cGluZykKIF9fZm91bmRfZ3JvdXBpbmcucmVzZXJ2ZSgzMik7CiAg
ICAgIGNvbnN0IGNoYXJfdHlwZSogX19saXRfemVybyA9IF9fbGl0ICsgX19udW1fYmFzZTo6X1Nf
aXplcm87CgogICAgICBpZiAoIV9fbGMtPl9NX2FsbG9jYXRlZCkKCiB3aGlsZSAoIV9fdGVzdGVv
ZikKICAgewogICAgIGNvbnN0IGludCBfX2RpZ2l0ID0gX01fZmluZChfX2xpdF96ZXJvLCAxMCwg
X19jKTsKICAgICBpZiAoX19kaWdpdCAhPSAtMSkKICAgICAgIHsKICBfX3h0cmMgKz0gJzAnICsg
X19kaWdpdDsKICBfX2ZvdW5kX21hbnRpc3NhID0gdHJ1ZTsKICAgICAgIH0KICAgICBlbHNlIGlm
IChfX2MgPT0gX19sYy0+X01fZGVjaW1hbF9wb2ludAogICAgICAgJiYgIV9fZm91bmRfZGVjICYm
ICFfX2ZvdW5kX3NjaSkKICAgICAgIHsKICBfX3h0cmMgKz0gJy4nOwogIF9fZm91bmRfZGVjID0g
dHJ1ZTsKICAgICAgIH0KICAgICBlbHNlIGlmICgoX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9T
X2llXQogICAgICAgIHx8IF9fYyA9PSBfX2xpdFtfX251bV9iYXNlOjpfU19pRV0pCiAgICAgICAm
JiAhX19mb3VuZF9zY2kgJiYgX19mb3VuZF9tYW50aXNzYSkKICAgICAgIHsKCiAgX194dHJjICs9
ICdlJzsKICBfX2ZvdW5kX3NjaSA9IHRydWU7CgoKICBpZiAoKytfX2JlZyAhPSBfX2VuZCkKICAg
IHsKICAgICAgX19jID0gKl9fYmVnOwogICAgICBjb25zdCBib29sIF9fcGx1cyA9IF9fYyA9PSBf
X2xpdFtfX251bV9iYXNlOjpfU19pcGx1c107CiAgICAgIGlmIChfX3BsdXMgfHwgX19jID09IF9f
bGl0W19fbnVtX2Jhc2U6Ol9TX2ltaW51c10pCiAgICAgICAgX194dHJjICs9IF9fcGx1cyA/ICcr
JyA6ICctJzsKICAgICAgZWxzZQogICAgICAgIGNvbnRpbnVlOwogICAgfQogIGVsc2UKICAgIHsK
ICAgICAgX190ZXN0ZW9mID0gdHJ1ZTsKICAgICAgYnJlYWs7CiAgICB9CiAgICAgICB9CiAgICAg
ZWxzZQogICAgICAgYnJlYWs7CgogICAgIGlmICgrK19fYmVnICE9IF9fZW5kKQogICAgICAgX19j
ID0gKl9fYmVnOwogICAgIGVsc2UKICAgICAgIF9fdGVzdGVvZiA9IHRydWU7CiAgIH0KICAgICAg
ZWxzZQogd2hpbGUgKCFfX3Rlc3Rlb2YpCiAgIHsKCgogICAgIGlmIChfX2xjLT5fTV91c2VfZ3Jv
dXBpbmcgJiYgX19jID09IF9fbGMtPl9NX3Rob3VzYW5kc19zZXApCiAgICAgICB7CiAgaWYgKCFf
X2ZvdW5kX2RlYyAmJiAhX19mb3VuZF9zY2kpCiAgICB7CgoKICAgICAgaWYgKF9fc2VwX3BvcykK
ICAgICAgICB7CiAgIF9fZm91bmRfZ3JvdXBpbmcgKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oX19zZXBf
cG9zKTsKICAgX19zZXBfcG9zID0gMDsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CgoK
ICAgX194dHJjLmNsZWFyKCk7CiAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICBlbHNlCiAgICBi
cmVhazsKICAgICAgIH0KICAgICBlbHNlIGlmIChfX2MgPT0gX19sYy0+X01fZGVjaW1hbF9wb2lu
dCkKICAgICAgIHsKICBpZiAoIV9fZm91bmRfZGVjICYmICFfX2ZvdW5kX3NjaSkKICAgIHsKCgoK
ICAgICAgaWYgKF9fZm91bmRfZ3JvdXBpbmcuc2l6ZSgpKQogICAgICAgIF9fZm91bmRfZ3JvdXBp
bmcgKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oX19zZXBfcG9zKTsKICAgICAgX194dHJjICs9ICcuJzsK
ICAgICAgX19mb3VuZF9kZWMgPSB0cnVlOwogICAgfQogIGVsc2UKICAgIGJyZWFrOwogICAgICAg
fQogICAgIGVsc2UKICAgICAgIHsKICBjb25zdCBjaGFyX3R5cGUqIF9fcSA9CiAgICBfX3RyYWl0
c190eXBlOjpmaW5kKF9fbGl0X3plcm8sIDEwLCBfX2MpOwogIGlmIChfX3EpCiAgICB7CiAgICAg
IF9feHRyYyArPSAnMCcgKyAoX19xIC0gX19saXRfemVybyk7CiAgICAgIF9fZm91bmRfbWFudGlz
c2EgPSB0cnVlOwogICAgICArK19fc2VwX3BvczsKICAgIH0KICBlbHNlIGlmICgoX19jID09IF9f
bGl0W19fbnVtX2Jhc2U6Ol9TX2llXQogICAgIHx8IF9fYyA9PSBfX2xpdFtfX251bV9iYXNlOjpf
U19pRV0pCiAgICAmJiAhX19mb3VuZF9zY2kgJiYgX19mb3VuZF9tYW50aXNzYSkKICAgIHsKCiAg
ICAgIGlmIChfX2ZvdW5kX2dyb3VwaW5nLnNpemUoKSAmJiAhX19mb3VuZF9kZWMpCiAgICAgICAg
X19mb3VuZF9ncm91cGluZyArPSBzdGF0aWNfY2FzdDxjaGFyPihfX3NlcF9wb3MpOwogICAgICBf
X3h0cmMgKz0gJ2UnOwogICAgICBfX2ZvdW5kX3NjaSA9IHRydWU7CgoKICAgICAgaWYgKCsrX19i
ZWcgIT0gX19lbmQpCiAgICAgICAgewogICBfX2MgPSAqX19iZWc7CiAgIGNvbnN0IGJvb2wgX19w
bHVzID0gX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2lwbHVzXTsKICAgaWYgKChfX3BsdXMg
fHwgX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2ltaW51c10pCiAgICAgICAmJiAhKF9fbGMt
Pl9NX3VzZV9ncm91cGluZwogICAgICYmIF9fYyA9PSBfX2xjLT5fTV90aG91c2FuZHNfc2VwKQog
ICAgICAgJiYgIShfX2MgPT0gX19sYy0+X01fZGVjaW1hbF9wb2ludCkpCiAgICAgICAgX194dHJj
ICs9IF9fcGx1cyA/ICcrJyA6ICctJzsKICAgZWxzZQogICAgIGNvbnRpbnVlOwogICAgICAgIH0K
ICAgICAgZWxzZQogICAgICAgIHsKICAgX190ZXN0ZW9mID0gdHJ1ZTsKICAgYnJlYWs7CiAgICAg
ICAgfQogICAgfQogIGVsc2UKICAgIGJyZWFrOwogICAgICAgfQoKICAgICBpZiAoKytfX2JlZyAh
PSBfX2VuZCkKICAgICAgIF9fYyA9ICpfX2JlZzsKICAgICBlbHNlCiAgICAgICBfX3Rlc3Rlb2Yg
PSB0cnVlOwogICB9CgoKCiAgICAgIGlmIChfX2ZvdW5kX2dyb3VwaW5nLnNpemUoKSkKICAgICAg
ICB7CgogICBpZiAoIV9fZm91bmRfZGVjICYmICFfX2ZvdW5kX3NjaSkKICAgICBfX2ZvdW5kX2dy
b3VwaW5nICs9IHN0YXRpY19jYXN0PGNoYXI+KF9fc2VwX3Bvcyk7CgogICAgICAgICAgaWYgKCFz
dGQ6Ol9fdmVyaWZ5X2dyb3VwaW5nKF9fbGMtPl9NX2dyb3VwaW5nLAogICAgICAgICAgX19sYy0+
X01fZ3JvdXBpbmdfc2l6ZSwKICAgICAgICAgIF9fZm91bmRfZ3JvdXBpbmcpKQogICAgIF9fZXJy
IHw9IGlvc19iYXNlOjpmYWlsYml0OwogICAgICAgIH0KCgogICAgICBpZiAoX190ZXN0ZW9mKQog
ICAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgIHJldHVybiBfX2JlZzsKICAg
IH0KCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+CiAgICAgIF9Jbkl0ZXIKICAgICAgbnVtX2dldDxf
Q2hhclQsIF9Jbkl0ZXI+OjoKICAgICAgX01fZXh0cmFjdF9pbnQoX0luSXRlciBfX2JlZywgX0lu
SXRlciBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19l
cnIsIF9WYWx1ZVQmIF9fdikgY29uc3QKICAgICAgewogICAgICAgIHR5cGVkZWYgY2hhcl90cmFp
dHM8X0NoYXJUPiBfX3RyYWl0c190eXBlOwogdXNpbmcgX19nbnVfY3h4OjpfX2FkZF91bnNpZ25l
ZDsKIHR5cGVkZWYgdHlwZW5hbWUgX19hZGRfdW5zaWduZWQ8X1ZhbHVlVD46Ol9fdHlwZSBfX3Vu
c2lnbmVkX3R5cGU7CiB0eXBlZGVmIF9fbnVtcHVuY3RfY2FjaGU8X0NoYXJUPiBfX2NhY2hlX3R5
cGU7CiBfX3VzZV9jYWNoZTxfX2NhY2hlX3R5cGU+IF9fdWM7CiBjb25zdCBsb2NhbGUmIF9fbG9j
ID0gX19pby5fTV9nZXRsb2MoKTsKIGNvbnN0IF9fY2FjaGVfdHlwZSogX19sYyA9IF9fdWMoX19s
b2MpOwogY29uc3QgX0NoYXJUKiBfX2xpdCA9IF9fbGMtPl9NX2F0b21zX2luOwogY2hhcl90eXBl
IF9fYyA9IGNoYXJfdHlwZSgpOwoKCiBjb25zdCBpb3NfYmFzZTo6Zm10ZmxhZ3MgX19iYXNlZmll
bGQgPSBfX2lvLmZsYWdzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYgaW9zX2Jhc2U6OmJhc2VmaWVsZDsKIGNvbnN0IGJvb2wgX19vY3QgPSBfX2Jhc2VmaWVsZCA9
PSBpb3NfYmFzZTo6b2N0OwogaW50IF9fYmFzZSA9IF9fb2N0ID8gOCA6IChfX2Jhc2VmaWVsZCA9
PSBpb3NfYmFzZTo6aGV4ID8gMTYgOiAxMCk7CgoKIGJvb2wgX190ZXN0ZW9mID0gX19iZWcgPT0g
X19lbmQ7CgoKIGJvb2wgX19uZWdhdGl2ZSA9IGZhbHNlOwogaWYgKCFfX3Rlc3Rlb2YpCiAgIHsK
ICAgICBfX2MgPSAqX19iZWc7CiAgICAgaWYgKG51bWVyaWNfbGltaXRzPF9WYWx1ZVQ+Ojppc19z
aWduZWQpCiAgICAgICBfX25lZ2F0aXZlID0gX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2lt
aW51c107CiAgICAgaWYgKChfX25lZ2F0aXZlIHx8IF9fYyA9PSBfX2xpdFtfX251bV9iYXNlOjpf
U19pcGx1c10pCiAgJiYgIShfX2xjLT5fTV91c2VfZ3JvdXBpbmcgJiYgX19jID09IF9fbGMtPl9N
X3Rob3VzYW5kc19zZXApCiAgJiYgIShfX2MgPT0gX19sYy0+X01fZGVjaW1hbF9wb2ludCkpCiAg
ICAgICB7CiAgaWYgKCsrX19iZWcgIT0gX19lbmQpCiAgICBfX2MgPSAqX19iZWc7CiAgZWxzZQog
ICAgX190ZXN0ZW9mID0gdHJ1ZTsKICAgICAgIH0KICAgfQoKCgogYm9vbCBfX2ZvdW5kX3plcm8g
PSBmYWxzZTsKIGludCBfX3NlcF9wb3MgPSAwOwogd2hpbGUgKCFfX3Rlc3Rlb2YpCiAgIHsKICAg
ICBpZiAoX19sYy0+X01fdXNlX2dyb3VwaW5nICYmIF9fYyA9PSBfX2xjLT5fTV90aG91c2FuZHNf
c2VwCiAgfHwgX19jID09IF9fbGMtPl9NX2RlY2ltYWxfcG9pbnQpCiAgICAgICBicmVhazsKICAg
ICBlbHNlIGlmIChfX2MgPT0gX19saXRbX19udW1fYmFzZTo6X1NfaXplcm9dCiAgICAgICAmJiAo
IV9fZm91bmRfemVybyB8fCBfX2Jhc2UgPT0gMTApKQogICAgICAgewogIF9fZm91bmRfemVybyA9
IHRydWU7CiAgKytfX3NlcF9wb3M7CiAgaWYgKF9fYmFzZWZpZWxkID09IDApCiAgICBfX2Jhc2Ug
PSA4OwogIGlmIChfX2Jhc2UgPT0gOCkKICAgIF9fc2VwX3BvcyA9IDA7CiAgICAgICB9CiAgICAg
ZWxzZSBpZiAoX19mb3VuZF96ZXJvCiAgICAgICAmJiAoX19jID09IF9fbGl0W19fbnVtX2Jhc2U6
Ol9TX2l4XQogICAgfHwgX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2lYXSkpCiAgICAgICB7
CiAgaWYgKF9fYmFzZWZpZWxkID09IDApCiAgICBfX2Jhc2UgPSAxNjsKICBpZiAoX19iYXNlID09
IDE2KQogICAgewogICAgICBfX2ZvdW5kX3plcm8gPSBmYWxzZTsKICAgICAgX19zZXBfcG9zID0g
MDsKICAgIH0KICBlbHNlCiAgICBicmVhazsKICAgICAgIH0KICAgICBlbHNlCiAgICAgICBicmVh
azsKCiAgICAgaWYgKCsrX19iZWcgIT0gX19lbmQpCiAgICAgICB7CiAgX19jID0gKl9fYmVnOwog
IGlmICghX19mb3VuZF96ZXJvKQogICAgYnJlYWs7CiAgICAgICB9CiAgICAgZWxzZQogICAgICAg
X190ZXN0ZW9mID0gdHJ1ZTsKICAgfQoKCgogY29uc3Qgc2l6ZV90IF9fbGVuID0gKF9fYmFzZSA9
PSAxNiA/IF9fbnVtX2Jhc2U6Ol9TX2llbmQKICAgICAgICAgLSBfX251bV9iYXNlOjpfU19pemVy
byA6IF9fYmFzZSk7CgoKIHN0cmluZyBfX2ZvdW5kX2dyb3VwaW5nOwogaWYgKF9fbGMtPl9NX3Vz
ZV9ncm91cGluZykKICAgX19mb3VuZF9ncm91cGluZy5yZXNlcnZlKDMyKTsKIGJvb2wgX190ZXN0
ZmFpbCA9IGZhbHNlOwogY29uc3QgX191bnNpZ25lZF90eXBlIF9fbWF4ID0gX19uZWdhdGl2ZSA/
CiAgIC1udW1lcmljX2xpbWl0czxfVmFsdWVUPjo6bWluKCkgOiBudW1lcmljX2xpbWl0czxfVmFs
dWVUPjo6bWF4KCk7CiBjb25zdCBfX3Vuc2lnbmVkX3R5cGUgX19zbWF4ID0gX19tYXggLyBfX2Jh
c2U7CiBfX3Vuc2lnbmVkX3R5cGUgX19yZXN1bHQgPSAwOwogaW50IF9fZGlnaXQgPSAwOwogY29u
c3QgY2hhcl90eXBlKiBfX2xpdF96ZXJvID0gX19saXQgKyBfX251bV9iYXNlOjpfU19pemVybzsK
CiBpZiAoIV9fbGMtPl9NX2FsbG9jYXRlZCkKCiAgIHdoaWxlICghX190ZXN0ZW9mKQogICAgIHsK
ICAgICAgIF9fZGlnaXQgPSBfTV9maW5kKF9fbGl0X3plcm8sIF9fbGVuLCBfX2MpOwogICAgICAg
aWYgKF9fZGlnaXQgPT0gLTEpCiAgYnJlYWs7CgogICAgICAgaWYgKF9fcmVzdWx0ID4gX19zbWF4
KQogIF9fdGVzdGZhaWwgPSB0cnVlOwogICAgICAgZWxzZQogIHsKICAgIF9fcmVzdWx0ICo9IF9f
YmFzZTsKICAgIF9fdGVzdGZhaWwgfD0gX19yZXN1bHQgPiBfX21heCAtIF9fZGlnaXQ7CiAgICBf
X3Jlc3VsdCArPSBfX2RpZ2l0OwogICAgKytfX3NlcF9wb3M7CiAgfQoKICAgICAgIGlmICgrK19f
YmVnICE9IF9fZW5kKQogIF9fYyA9ICpfX2JlZzsKICAgICAgIGVsc2UKICBfX3Rlc3Rlb2YgPSB0
cnVlOwogICAgIH0KIGVsc2UKICAgd2hpbGUgKCFfX3Rlc3Rlb2YpCiAgICAgewoKCiAgICAgICBp
ZiAoX19sYy0+X01fdXNlX2dyb3VwaW5nICYmIF9fYyA9PSBfX2xjLT5fTV90aG91c2FuZHNfc2Vw
KQogIHsKCgogICAgaWYgKF9fc2VwX3BvcykKICAgICAgewogICAgICAgIF9fZm91bmRfZ3JvdXBp
bmcgKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oX19zZXBfcG9zKTsKICAgICAgICBfX3NlcF9wb3MgPSAw
OwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKICAgICAgICBfX3Rlc3RmYWlsID0gdHJ1ZTsKICAg
ICAgICBicmVhazsKICAgICAgfQogIH0KICAgICAgIGVsc2UgaWYgKF9fYyA9PSBfX2xjLT5fTV9k
ZWNpbWFsX3BvaW50KQogIGJyZWFrOwogICAgICAgZWxzZQogIHsKICAgIGNvbnN0IGNoYXJfdHlw
ZSogX19xID0KICAgICAgX190cmFpdHNfdHlwZTo6ZmluZChfX2xpdF96ZXJvLCBfX2xlbiwgX19j
KTsKICAgIGlmICghX19xKQogICAgICBicmVhazsKCiAgICBfX2RpZ2l0ID0gX19xIC0gX19saXRf
emVybzsKICAgIGlmIChfX2RpZ2l0ID4gMTUpCiAgICAgIF9fZGlnaXQgLT0gNjsKICAgIGlmIChf
X3Jlc3VsdCA+IF9fc21heCkKICAgICAgX190ZXN0ZmFpbCA9IHRydWU7CiAgICBlbHNlCiAgICAg
IHsKICAgICAgICBfX3Jlc3VsdCAqPSBfX2Jhc2U7CiAgICAgICAgX190ZXN0ZmFpbCB8PSBfX3Jl
c3VsdCA+IF9fbWF4IC0gX19kaWdpdDsKICAgICAgICBfX3Jlc3VsdCArPSBfX2RpZ2l0OwogICAg
ICAgICsrX19zZXBfcG9zOwogICAgICB9CiAgfQoKICAgICAgIGlmICgrK19fYmVnICE9IF9fZW5k
KQogIF9fYyA9ICpfX2JlZzsKICAgICAgIGVsc2UKICBfX3Rlc3Rlb2YgPSB0cnVlOwogICAgIH0K
CgoKIGlmIChfX2ZvdW5kX2dyb3VwaW5nLnNpemUoKSkKICAgewoKICAgICBfX2ZvdW5kX2dyb3Vw
aW5nICs9IHN0YXRpY19jYXN0PGNoYXI+KF9fc2VwX3Bvcyk7CgogICAgIGlmICghc3RkOjpfX3Zl
cmlmeV9ncm91cGluZyhfX2xjLT5fTV9ncm91cGluZywKICAgICBfX2xjLT5fTV9ncm91cGluZ19z
aXplLAogICAgIF9fZm91bmRfZ3JvdXBpbmcpKQogICAgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZh
aWxiaXQ7CiAgIH0KCiBpZiAoIV9fdGVzdGZhaWwgJiYgKF9fc2VwX3BvcyB8fCBfX2ZvdW5kX3pl
cm8KICAgICAgIHx8IF9fZm91bmRfZ3JvdXBpbmcuc2l6ZSgpKSkKICAgX192ID0gX19uZWdhdGl2
ZSA/IC1fX3Jlc3VsdCA6IF9fcmVzdWx0OwogZWxzZQogICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFp
bGJpdDsKCiBpZiAoX190ZXN0ZW9mKQogICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0OwogcmV0
dXJuIF9fYmVnOwogICAgICB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfSW5JdGVyPgogICAgX0luSXRlcgogICAgbnVtX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoKICAg
IGRvX2dldChpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8s
CiAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBib29sJiBfX3YpIGNvbnN0CiAg
ICB7CiAgICAgIGlmICghKF9faW8uZmxhZ3MoKSAmIGlvc19iYXNlOjpib29sYWxwaGEpKQogICAg
ICAgIHsKCgoKICAgbG9uZyBfX2wgPSAtMTsKICAgICAgICAgIF9fYmVnID0gX01fZXh0cmFjdF9p
bnQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX19sKTsKICAgaWYgKF9fbCA9PSAwIHx8IF9f
bCA9PSAxKQogICAgIF9fdiA9IF9fbDsKICAgZWxzZQogICAgICAgICAgICBfX2VyciB8PSBpb3Nf
YmFzZTo6ZmFpbGJpdDsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CgogICB0eXBlZGVm
IF9fbnVtcHVuY3RfY2FjaGU8X0NoYXJUPiBfX2NhY2hlX3R5cGU7CiAgIF9fdXNlX2NhY2hlPF9f
Y2FjaGVfdHlwZT4gX191YzsKICAgY29uc3QgbG9jYWxlJiBfX2xvYyA9IF9faW8uX01fZ2V0bG9j
KCk7CiAgIGNvbnN0IF9fY2FjaGVfdHlwZSogX19sYyA9IF9fdWMoX19sb2MpOwoKICAgYm9vbCBf
X3Rlc3RmID0gdHJ1ZTsKICAgYm9vbCBfX3Rlc3R0ID0gdHJ1ZTsKICAgc2l6ZV90IF9fbjsKICAg
Ym9vbCBfX3Rlc3Rlb2YgPSBfX2JlZyA9PSBfX2VuZDsKICAgICAgICAgIGZvciAoX19uID0gMDsg
IV9fdGVzdGVvZjsgKytfX24pCiAgICAgICAgICAgIHsKICAgICAgIGNvbnN0IGNoYXJfdHlwZSBf
X2MgPSAqX19iZWc7CgogICAgICAgaWYgKF9fdGVzdGYpCiAgaWYgKF9fbiA8IF9fbGMtPl9NX2Zh
bHNlbmFtZV9zaXplKQogICAgX190ZXN0ZiA9IF9fYyA9PSBfX2xjLT5fTV9mYWxzZW5hbWVbX19u
XTsKICBlbHNlCiAgICBicmVhazsKCiAgICAgICBpZiAoX190ZXN0dCkKICBpZiAoX19uIDwgX19s
Yy0+X01fdHJ1ZW5hbWVfc2l6ZSkKICAgIF9fdGVzdHQgPSBfX2MgPT0gX19sYy0+X01fdHJ1ZW5h
bWVbX19uXTsKICBlbHNlCiAgICBicmVhazsKCiAgICAgICBpZiAoIV9fdGVzdGYgJiYgIV9fdGVz
dHQpCiAgYnJlYWs7CgogICAgICAgaWYgKCsrX19iZWcgPT0gX19lbmQpCiAgX190ZXN0ZW9mID0g
dHJ1ZTsKICAgICAgICAgICAgfQogICBpZiAoX190ZXN0ZiAmJiBfX24gPT0gX19sYy0+X01fZmFs
c2VuYW1lX3NpemUpCiAgICAgX192ID0gMDsKICAgZWxzZSBpZiAoX190ZXN0dCAmJiBfX24gPT0g
X19sYy0+X01fdHJ1ZW5hbWVfc2l6ZSkKICAgICBfX3YgPSAxOwogICBlbHNlCiAgICAgX19lcnIg
fD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CgogICAgICAgICAgaWYgKF9fdGVzdGVvZikKICAgICAgICAg
ICAgX19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsKICAgICAgICB9CiAgICAgIHJldHVybiBfX2Jl
ZzsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgog
ICAgX0luSXRlcgogICAgbnVtX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoKICAgIGRvX2dldChpdGVy
X3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgICAgICAgICAg
aW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBsb25nJiBfX3YpIGNvbnN0CiAgICB7IHJldHVybiBf
TV9leHRyYWN0X2ludChfX2JlZywgX19lbmQsIF9faW8sIF9fZXJyLCBfX3YpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0ZXIKICAgIG51
bV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6CiAgICBkb19nZXQoaXRlcl90eXBlIF9fYmVnLCBpdGVy
X3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICAgICAgICAgIGlvc19iYXNlOjppb3N0YXRl
JiBfX2VyciwgdW5zaWduZWQgc2hvcnQmIF9fdikgY29uc3QKICAgIHsgcmV0dXJuIF9NX2V4dHJh
Y3RfaW50KF9fYmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgX0luSXRlcgogICAgbnVtX2dldDxf
Q2hhclQsIF9Jbkl0ZXI+OjoKICAgIGRvX2dldChpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBf
X2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJy
LCB1bnNpZ25lZCBpbnQmIF9fdikgY29uc3QKICAgIHsgcmV0dXJuIF9NX2V4dHJhY3RfaW50KF9f
YmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgX0luSXRlcgogICAgbnVtX2dldDxfQ2hhclQsIF9J
bkl0ZXI+OjoKICAgIGRvX2dldChpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9z
X2Jhc2UmIF9faW8sCiAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB1bnNpZ25l
ZCBsb25nJiBfX3YpIGNvbnN0CiAgICB7IHJldHVybiBfTV9leHRyYWN0X2ludChfX2JlZywgX19l
bmQsIF9faW8sIF9fZXJyLCBfX3YpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9Jbkl0ZXI+CiAgICBfSW5JdGVyCiAgICBudW1fZ2V0PF9DaGFyVCwgX0luSXRlcj46
OgogICAgZG9fZ2V0KGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYg
X19pbywKICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGxvbmcgbG9uZyYgX192
KSBjb25zdAogICAgeyByZXR1cm4gX01fZXh0cmFjdF9pbnQoX19iZWcsIF9fZW5kLCBfX2lvLCBf
X2VyciwgX192KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0
ZXI+CiAgICBfSW5JdGVyCiAgICBudW1fZ2V0PF9DaGFyVCwgX0luSXRlcj46OgogICAgZG9fZ2V0
KGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgICAg
ICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHVuc2lnbmVkIGxvbmcgbG9uZyYgX192KSBj
b25zdAogICAgeyByZXR1cm4gX01fZXh0cmFjdF9pbnQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2Vy
ciwgX192KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVy
PgogICAgX0luSXRlcgogICAgbnVtX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoKICAgIGRvX2dldChp
dGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgICBpb3Nf
YmFzZTo6aW9zdGF0ZSYgX19lcnIsIGZsb2F0JiBfX3YpIGNvbnN0CiAgICB7CiAgICAgIHN0cmlu
ZyBfX3h0cmM7CiAgICAgIF9feHRyYy5yZXNlcnZlKDMyKTsKICAgICAgX19iZWcgPSBfTV9leHRy
YWN0X2Zsb2F0KF9fYmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9feHRyYyk7CiAgICAgIHN0ZDo6
X19jb252ZXJ0X3RvX3YoX194dHJjLmNfc3RyKCksIF9fdiwgX19lcnIsIF9TX2dldF9jX2xvY2Fs
ZSgpKTsKICAgICAgcmV0dXJuIF9fYmVnOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAgICBfSW5JdGVyCiAgICBudW1fZ2V0PF9DaGFyVCwgX0lu
SXRlcj46OgogICAgZG9fZ2V0KGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3Nf
YmFzZSYgX19pbywKICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGRvdWJsZSYg
X192KSBjb25zdAogICAgewogICAgICBzdHJpbmcgX194dHJjOwogICAgICBfX3h0cmMucmVzZXJ2
ZSgzMik7CiAgICAgIF9fYmVnID0gX01fZXh0cmFjdF9mbG9hdChfX2JlZywgX19lbmQsIF9faW8s
IF9fZXJyLCBfX3h0cmMpOwogICAgICBzdGQ6Ol9fY29udmVydF90b192KF9feHRyYy5jX3N0cigp
LCBfX3YsIF9fZXJyLCBfU19nZXRfY19sb2NhbGUoKSk7CiAgICAgIHJldHVybiBfX2JlZzsKICAg
IH0KIyA4NjQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLnRjYyIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0
ZXIKICAgIG51bV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6CiAgICBkb19nZXQoaXRlcl90eXBlIF9f
YmVnLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICAgICAgICAgIGlvc19iYXNl
Ojppb3N0YXRlJiBfX2VyciwgbG9uZyBkb3VibGUmIF9fdikgY29uc3QKICAgIHsKICAgICAgc3Ry
aW5nIF9feHRyYzsKICAgICAgX194dHJjLnJlc2VydmUoMzIpOwogICAgICBfX2JlZyA9IF9NX2V4
dHJhY3RfZmxvYXQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX194dHJjKTsKICAgICAgc3Rk
OjpfX2NvbnZlcnRfdG9fdihfX3h0cmMuY19zdHIoKSwgX192LCBfX2VyciwgX1NfZ2V0X2NfbG9j
YWxlKCkpOwogICAgICByZXR1cm4gX19iZWc7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0ZXIKICAgIG51bV9nZXQ8X0NoYXJULCBf
SW5JdGVyPjo6CiAgICBkb19nZXQoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlv
c19iYXNlJiBfX2lvLAogICAgICAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2Vyciwgdm9pZCom
IF9fdikgY29uc3QKICAgIHsKCiAgICAgIHR5cGVkZWYgaW9zX2Jhc2U6OmZtdGZsYWdzIGZtdGZs
YWdzOwogICAgICBjb25zdCBmbXRmbGFncyBfX2ZtdCA9IF9faW8uZmxhZ3MoKTsKICAgICAgX19p
by5mbGFncyhfX2ZtdCAmIH5pb3NfYmFzZTo6YmFzZWZpZWxkIHwgaW9zX2Jhc2U6OmhleCk7Cgog
ICAgICB1bnNpZ25lZCBsb25nIF9fdWw7CiAgICAgIF9fYmVnID0gX01fZXh0cmFjdF9pbnQoX19i
ZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX191bCk7CgoKICAgICAgX19pby5mbGFncyhfX2ZtdCk7
CgogICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKIF9fdiA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KF9fdWwpOwogICAgICByZXR1cm4gX19iZWc7CiAgICB9CgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlcj4KICAgIHZvaWQKICAgIG51
bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46OgogICAgX01fcGFkKF9DaGFyVCBfX2ZpbGwsIHN0cmVh
bXNpemUgX193LCBpb3NfYmFzZSYgX19pbywKICAgIF9DaGFyVCogX19uZXcsIGNvbnN0IF9DaGFy
VCogX19jcywgaW50JiBfX2xlbikgY29uc3QKICAgIHsKCgogICAgICBfX3BhZDxfQ2hhclQsIGNo
YXJfdHJhaXRzPF9DaGFyVD4gPjo6X1NfcGFkKF9faW8sIF9fZmlsbCwgX19uZXcsIF9fY3MsCiAg
ICAgICAgX193LCBfX2xlbiwgdHJ1ZSk7CiAgICAgIF9fbGVuID0gc3RhdGljX2Nhc3Q8aW50Pihf
X3cpOwogICAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1ZhbHVl
VD4KICAgIGludAogICAgX19pbnRfdG9fY2hhcihfQ2hhclQqIF9fYnVmZW5kLCBfVmFsdWVUIF9f
diwgY29uc3QgX0NoYXJUKiBfX2xpdCwKICAgIGlvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzLCBi
b29sIF9fZGVjKQogICAgewogICAgICBfQ2hhclQqIF9fYnVmID0gX19idWZlbmQ7CiAgICAgIGlm
IChfX2J1aWx0aW5fZXhwZWN0KF9fZGVjLCB0cnVlKSkKIHsKCiAgIGRvCiAgICAgewogICAgICAg
Ki0tX19idWYgPSBfX2xpdFsoX192ICUgMTApICsgX19udW1fYmFzZTo6X1Nfb2RpZ2l0c107CiAg
ICAgICBfX3YgLz0gMTA7CiAgICAgfQogICB3aGlsZSAoX192ICE9IDApOwogfQogICAgICBlbHNl
IGlmICgoX19mbGFncyAmIGlvc19iYXNlOjpiYXNlZmllbGQpID09IGlvc19iYXNlOjpvY3QpCiB7
CgogICBkbwogICAgIHsKICAgICAgICotLV9fYnVmID0gX19saXRbKF9fdiAmIDB4NykgKyBfX251
bV9iYXNlOjpfU19vZGlnaXRzXTsKICAgICAgIF9fdiA+Pj0gMzsKICAgICB9CiAgIHdoaWxlIChf
X3YgIT0gMCk7CiB9CiAgICAgIGVsc2UKIHsKCiAgIGNvbnN0IGJvb2wgX191cHBlcmNhc2UgPSBf
X2ZsYWdzICYgaW9zX2Jhc2U6OnVwcGVyY2FzZTsKICAgY29uc3QgaW50IF9fY2FzZV9vZmZzZXQg
PSBfX3VwcGVyY2FzZSA/IF9fbnVtX2Jhc2U6Ol9TX291ZGlnaXRzCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBfX251bV9iYXNlOjpfU19vZGlnaXRzOwogICBkbwog
ICAgIHsKICAgICAgICotLV9fYnVmID0gX19saXRbKF9fdiAmIDB4ZikgKyBfX2Nhc2Vfb2Zmc2V0
XTsKICAgICAgIF9fdiA+Pj0gNDsKICAgICB9CiAgIHdoaWxlIChfX3YgIT0gMCk7CiB9CiAgICAg
IHJldHVybiBfX2J1ZmVuZCAtIF9fYnVmOwogICAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+CiAgICB2b2lkCiAgICBudW1fcHV0PF9DaGFyVCwgX091
dEl0ZXI+OjoKICAgIF9NX2dyb3VwX2ludChjb25zdCBjaGFyKiBfX2dyb3VwaW5nLCBzaXplX3Qg
X19ncm91cGluZ19zaXplLCBfQ2hhclQgX19zZXAsCiAgIGlvc19iYXNlJiwgX0NoYXJUKiBfX25l
dywgX0NoYXJUKiBfX2NzLCBpbnQmIF9fbGVuKSBjb25zdAogICAgewogICAgICBfQ2hhclQqIF9f
cCA9IHN0ZDo6X19hZGRfZ3JvdXBpbmcoX19uZXcsIF9fc2VwLCBfX2dyb3VwaW5nLAogICAgIF9f
Z3JvdXBpbmdfc2l6ZSwgX19jcywgX19jcyArIF9fbGVuKTsKICAgICAgX19sZW4gPSBfX3AgLSBf
X25ldzsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRl
cj4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+CiAgICAgIF9PdXRJdGVyCiAgICAgIG51
bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46OgogICAgICBfTV9pbnNlcnRfaW50KF9PdXRJdGVyIF9f
cywgaW9zX2Jhc2UmIF9faW8sIF9DaGFyVCBfX2ZpbGwsCiAgICAgIF9WYWx1ZVQgX192KSBjb25z
dAogICAgICB7CiB1c2luZyBfX2dudV9jeHg6Ol9fYWRkX3Vuc2lnbmVkOwogdHlwZWRlZiB0eXBl
bmFtZSBfX2FkZF91bnNpZ25lZDxfVmFsdWVUPjo6X190eXBlIF9fdW5zaWduZWRfdHlwZTsKIHR5
cGVkZWYgX19udW1wdW5jdF9jYWNoZTxfQ2hhclQ+IF9fY2FjaGVfdHlwZTsKIF9fdXNlX2NhY2hl
PF9fY2FjaGVfdHlwZT4gX191YzsKIGNvbnN0IGxvY2FsZSYgX19sb2MgPSBfX2lvLl9NX2dldGxv
YygpOwogY29uc3QgX19jYWNoZV90eXBlKiBfX2xjID0gX191YyhfX2xvYyk7CiBjb25zdCBfQ2hh
clQqIF9fbGl0ID0gX19sYy0+X01fYXRvbXNfb3V0OwogY29uc3QgaW9zX2Jhc2U6OmZtdGZsYWdz
IF9fZmxhZ3MgPSBfX2lvLmZsYWdzKCk7CgoKIGNvbnN0IGludCBfX2lsZW4gPSA1ICogc2l6ZW9m
KF9WYWx1ZVQpOwogX0NoYXJUKiBfX2NzID0gc3RhdGljX2Nhc3Q8X0NoYXJUKj4oX19idWlsdGlu
X2FsbG9jYShzaXplb2YoX0NoYXJUKQogICAgICAgICAgICAqIF9faWxlbikpOwoKCgogY29uc3Qg
aW9zX2Jhc2U6OmZtdGZsYWdzIF9fYmFzZWZpZWxkID0gX19mbGFncyAmIGlvc19iYXNlOjpiYXNl
ZmllbGQ7CiBjb25zdCBib29sIF9fZGVjID0gKF9fYmFzZWZpZWxkICE9IGlvc19iYXNlOjpvY3QK
ICAgICAgICYmIF9fYmFzZWZpZWxkICE9IGlvc19iYXNlOjpoZXgpOwogY29uc3QgX191bnNpZ25l
ZF90eXBlIF9fdSA9IChfX3YgPiAwIHx8ICFfX2RlYykgPyBfX3YgOiAtX192OwogIGludCBfX2xl
biA9IF9faW50X3RvX2NoYXIoX19jcyArIF9faWxlbiwgX191LCBfX2xpdCwgX19mbGFncywgX19k
ZWMpOwogX19jcyArPSBfX2lsZW4gLSBfX2xlbjsKCgogaWYgKF9fbGMtPl9NX3VzZV9ncm91cGlu
ZykKICAgewoKCiAgICAgX0NoYXJUKiBfX2NzMiA9IHN0YXRpY19jYXN0PF9DaGFyVCo+KF9fYnVp
bHRpbl9hbGxvY2Eoc2l6ZW9mKF9DaGFyVCkKICAgICAgICAgICogKF9fbGVuICsgMSkKICAgICAg
ICAgICogMikpOwogICAgIF9NX2dyb3VwX2ludChfX2xjLT5fTV9ncm91cGluZywgX19sYy0+X01f
Z3JvdXBpbmdfc2l6ZSwKICAgIF9fbGMtPl9NX3Rob3VzYW5kc19zZXAsIF9faW8sIF9fY3MyICsg
MiwgX19jcywgX19sZW4pOwogICAgIF9fY3MgPSBfX2NzMiArIDI7CiAgIH0KCgogaWYgKF9fYnVp
bHRpbl9leHBlY3QoX19kZWMsIHRydWUpKQogICB7CgogICAgIGlmIChfX3YgPiAwKQogICAgICAg
ewogIGlmIChfX2ZsYWdzICYgaW9zX2Jhc2U6OnNob3dwb3MKICAgICAgJiYgbnVtZXJpY19saW1p
dHM8X1ZhbHVlVD46OmlzX3NpZ25lZCkKICAgICotLV9fY3MgPSBfX2xpdFtfX251bV9iYXNlOjpf
U19vcGx1c10sICsrX19sZW47CiAgICAgICB9CiAgICAgZWxzZSBpZiAoX192KQogICAgICAgKi0t
X19jcyA9IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX29taW51c10sICsrX19sZW47CiAgIH0KIGVsc2Ug
aWYgKF9fZmxhZ3MgJiBpb3NfYmFzZTo6c2hvd2Jhc2UgJiYgX192KQogICB7CiAgICAgaWYgKF9f
YmFzZWZpZWxkID09IGlvc19iYXNlOjpvY3QpCiAgICAgICAqLS1fX2NzID0gX19saXRbX19udW1f
YmFzZTo6X1Nfb2RpZ2l0c10sICsrX19sZW47CiAgICAgZWxzZQogICAgICAgewoKICBjb25zdCBi
b29sIF9fdXBwZXJjYXNlID0gX19mbGFncyAmIGlvc19iYXNlOjp1cHBlcmNhc2U7CiAgKi0tX19j
cyA9IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX294ICsgX191cHBlcmNhc2VdOwoKICAqLS1fX2NzID0g
X19saXRbX19udW1fYmFzZTo6X1Nfb2RpZ2l0c107CiAgX19sZW4gKz0gMjsKICAgICAgIH0KICAg
fQoKCiBjb25zdCBzdHJlYW1zaXplIF9fdyA9IF9faW8ud2lkdGgoKTsKIGlmIChfX3cgPiBzdGF0
aWNfY2FzdDxzdHJlYW1zaXplPihfX2xlbikpCiAgIHsKICAgICBfQ2hhclQqIF9fY3MzID0gc3Rh
dGljX2Nhc3Q8X0NoYXJUKj4oX19idWlsdGluX2FsbG9jYShzaXplb2YoX0NoYXJUKQogICAgICAg
ICAgKiBfX3cpKTsKICAgICBfTV9wYWQoX19maWxsLCBfX3csIF9faW8sIF9fY3MzLCBfX2NzLCBf
X2xlbik7CiAgICAgX19jcyA9IF9fY3MzOwogICB9CiBfX2lvLndpZHRoKDApOwoKCgogcmV0dXJu
IHN0ZDo6X193cml0ZShfX3MsIF9fY3MsIF9fbGVuKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgdm9pZAogICAgbnVtX3B1dDxfQ2hh
clQsIF9PdXRJdGVyPjo6CiAgICBfTV9ncm91cF9mbG9hdChjb25zdCBjaGFyKiBfX2dyb3VwaW5n
LCBzaXplX3QgX19ncm91cGluZ19zaXplLAogICAgIF9DaGFyVCBfX3NlcCwgY29uc3QgX0NoYXJU
KiBfX3AsIF9DaGFyVCogX19uZXcsCiAgICAgX0NoYXJUKiBfX2NzLCBpbnQmIF9fbGVuKSBjb25z
dAogICAgewoKCgogICAgICBjb25zdCBpbnQgX19kZWNsZW4gPSBfX3AgPyBfX3AgLSBfX2NzIDog
X19sZW47CiAgICAgIF9DaGFyVCogX19wMiA9IHN0ZDo6X19hZGRfZ3JvdXBpbmcoX19uZXcsIF9f
c2VwLCBfX2dyb3VwaW5nLAogICAgICBfX2dyb3VwaW5nX3NpemUsCiAgICAgIF9fY3MsIF9fY3Mg
KyBfX2RlY2xlbik7CgoKICAgICAgaW50IF9fbmV3bGVuID0gX19wMiAtIF9fbmV3OwogICAgICBp
ZiAoX19wKQogewogICBjaGFyX3RyYWl0czxfQ2hhclQ+Ojpjb3B5KF9fcDIsIF9fcCwgX19sZW4g
LSBfX2RlY2xlbik7CiAgIF9fbmV3bGVuICs9IF9fbGVuIC0gX19kZWNsZW47CiB9CiAgICAgIF9f
bGVuID0gX19uZXdsZW47CiAgICB9CiMgMTA5MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L2xvY2FsZV9mYWNldHMudGNjIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfT3V0SXRlcj4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+CiAgICAgIF9PdXRJdGVy
CiAgICAgIG51bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46OgogICAgICBfTV9pbnNlcnRfZmxvYXQo
X091dEl0ZXIgX19zLCBpb3NfYmFzZSYgX19pbywgX0NoYXJUIF9fZmlsbCwgY2hhciBfX21vZCwK
ICAgICAgICAgX1ZhbHVlVCBfX3YpIGNvbnN0CiAgICAgIHsKIHR5cGVkZWYgX19udW1wdW5jdF9j
YWNoZTxfQ2hhclQ+IF9fY2FjaGVfdHlwZTsKIF9fdXNlX2NhY2hlPF9fY2FjaGVfdHlwZT4gX191
YzsKIGNvbnN0IGxvY2FsZSYgX19sb2MgPSBfX2lvLl9NX2dldGxvYygpOwogY29uc3QgX19jYWNo
ZV90eXBlKiBfX2xjID0gX191YyhfX2xvYyk7CgoKIGNvbnN0IHN0cmVhbXNpemUgX19wcmVjID0g
X19pby5wcmVjaXNpb24oKSA8IDAgPyA2IDogX19pby5wcmVjaXNpb24oKTsKCiBjb25zdCBpbnQg
X19tYXhfZGlnaXRzID0gbnVtZXJpY19saW1pdHM8X1ZhbHVlVD46OmRpZ2l0czEwOwoKCiBpbnQg
X19sZW47CgogY2hhciBfX2ZidWZbMTZdOwogX19udW1fYmFzZTo6X1NfZm9ybWF0X2Zsb2F0KF9f
aW8sIF9fZmJ1ZiwgX19tb2QpOwoKCgoKIGludCBfX2NzX3NpemUgPSBfX21heF9kaWdpdHMgKiAz
OwogY2hhciogX19jcyA9IHN0YXRpY19jYXN0PGNoYXIqPihfX2J1aWx0aW5fYWxsb2NhKF9fY3Nf
c2l6ZSkpOwogX19sZW4gPSBzdGQ6Ol9fY29udmVydF9mcm9tX3YoX1NfZ2V0X2NfbG9jYWxlKCks
IF9fY3MsIF9fY3Nfc2l6ZSwKICAgICAgICAgIF9fZmJ1ZiwgX19wcmVjLCBfX3YpOwoKCiBpZiAo
X19sZW4gPj0gX19jc19zaXplKQogICB7CiAgICAgX19jc19zaXplID0gX19sZW4gKyAxOwogICAg
IF9fY3MgPSBzdGF0aWNfY2FzdDxjaGFyKj4oX19idWlsdGluX2FsbG9jYShfX2NzX3NpemUpKTsK
ICAgICBfX2xlbiA9IHN0ZDo6X19jb252ZXJ0X2Zyb21fdihfU19nZXRfY19sb2NhbGUoKSwgX19j
cywgX19jc19zaXplLAogICAgICAgX19mYnVmLCBfX3ByZWMsIF9fdik7CiAgIH0KIyAxMTUyICIv
dXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2MiIDMKIGNvbnN0IGN0
eXBlPF9DaGFyVD4mIF9fY3R5cGUgPSB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKTsK
CiBfQ2hhclQqIF9fd3MgPSBzdGF0aWNfY2FzdDxfQ2hhclQqPihfX2J1aWx0aW5fYWxsb2NhKHNp
emVvZihfQ2hhclQpCiAgICAgICAgICAgICogX19sZW4pKTsKIF9fY3R5cGUud2lkZW4oX19jcywg
X19jcyArIF9fbGVuLCBfX3dzKTsKCgogX0NoYXJUKiBfX3dwID0gMDsKIGNvbnN0IGNoYXIqIF9f
cCA9IGNoYXJfdHJhaXRzPGNoYXI+OjpmaW5kKF9fY3MsIF9fbGVuLCAnLicpOwogaWYgKF9fcCkK
ICAgewogICAgIF9fd3AgPSBfX3dzICsgKF9fcCAtIF9fY3MpOwogICAgICpfX3dwID0gX19sYy0+
X01fZGVjaW1hbF9wb2ludDsKICAgfQoKCgoKIGlmIChfX2xjLT5fTV91c2VfZ3JvdXBpbmcKICAg
ICAmJiAoX193cCB8fCBfX2xlbiA8IDMgfHwgKF9fY3NbMV0gPD0gJzknICYmIF9fY3NbMl0gPD0g
JzknCiAgICAgICAgICAmJiBfX2NzWzFdID49ICcwJyAmJiBfX2NzWzJdID49ICcwJykpKQogICB7
CgoKICAgICBfQ2hhclQqIF9fd3MyID0gc3RhdGljX2Nhc3Q8X0NoYXJUKj4oX19idWlsdGluX2Fs
bG9jYShzaXplb2YoX0NoYXJUKQogICAgICAgICAgKiBfX2xlbiAqIDIpKTsKCiAgICAgc3RyZWFt
c2l6ZSBfX29mZiA9IDA7CiAgICAgaWYgKF9fY3NbMF0gPT0gJy0nIHx8IF9fY3NbMF0gPT0gJysn
KQogICAgICAgewogIF9fb2ZmID0gMTsKICBfX3dzMlswXSA9IF9fd3NbMF07CiAgX19sZW4gLT0g
MTsKICAgICAgIH0KCiAgICAgX01fZ3JvdXBfZmxvYXQoX19sYy0+X01fZ3JvdXBpbmcsIF9fbGMt
Pl9NX2dyb3VwaW5nX3NpemUsCiAgICAgIF9fbGMtPl9NX3Rob3VzYW5kc19zZXAsIF9fd3AsIF9f
d3MyICsgX19vZmYsCiAgICAgIF9fd3MgKyBfX29mZiwgX19sZW4pOwogICAgIF9fbGVuICs9IF9f
b2ZmOwoKICAgICBfX3dzID0gX193czI7CiAgIH0KCgogY29uc3Qgc3RyZWFtc2l6ZSBfX3cgPSBf
X2lvLndpZHRoKCk7CiBpZiAoX193ID4gc3RhdGljX2Nhc3Q8c3RyZWFtc2l6ZT4oX19sZW4pKQog
ICB7CiAgICAgX0NoYXJUKiBfX3dzMyA9IHN0YXRpY19jYXN0PF9DaGFyVCo+KF9fYnVpbHRpbl9h
bGxvY2Eoc2l6ZW9mKF9DaGFyVCkKICAgICAgICAgICogX193KSk7CiAgICAgX01fcGFkKF9fZmls
bCwgX193LCBfX2lvLCBfX3dzMywgX193cywgX19sZW4pOwogICAgIF9fd3MgPSBfX3dzMzsKICAg
fQogX19pby53aWR0aCgwKTsKCgoKIHJldHVybiBzdGQ6Ol9fd3JpdGUoX19zLCBfX3dzLCBfX2xl
bik7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRl
cj4KICAgIF9PdXRJdGVyCiAgICBudW1fcHV0PF9DaGFyVCwgX091dEl0ZXI+OjoKICAgIGRvX3B1
dChpdGVyX3R5cGUgX19zLCBpb3NfYmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwgYm9vbCBf
X3YpIGNvbnN0CiAgICB7CiAgICAgIGNvbnN0IGlvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0g
X19pby5mbGFncygpOwogICAgICBpZiAoKF9fZmxhZ3MgJiBpb3NfYmFzZTo6Ym9vbGFscGhhKSA9
PSAwKQogICAgICAgIHsKICAgICAgICAgIGNvbnN0IGxvbmcgX19sID0gX192OwogICAgICAgICAg
X19zID0gX01faW5zZXJ0X2ludChfX3MsIF9faW8sIF9fZmlsbCwgX19sKTsKICAgICAgICB9CiAg
ICAgIGVsc2UKICAgICAgICB7CiAgIHR5cGVkZWYgX19udW1wdW5jdF9jYWNoZTxfQ2hhclQ+IF9f
Y2FjaGVfdHlwZTsKICAgX191c2VfY2FjaGU8X19jYWNoZV90eXBlPiBfX3VjOwogICBjb25zdCBs
b2NhbGUmIF9fbG9jID0gX19pby5fTV9nZXRsb2MoKTsKICAgY29uc3QgX19jYWNoZV90eXBlKiBf
X2xjID0gX191YyhfX2xvYyk7CgogICBjb25zdCBfQ2hhclQqIF9fbmFtZSA9IF9fdiA/IF9fbGMt
Pl9NX3RydWVuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX19sYy0+X01fZmFs
c2VuYW1lOwogICBpbnQgX19sZW4gPSBfX3YgPyBfX2xjLT5fTV90cnVlbmFtZV9zaXplCiAgICAg
ICAgICAgICAgICAgICA6IF9fbGMtPl9NX2ZhbHNlbmFtZV9zaXplOwoKICAgY29uc3Qgc3RyZWFt
c2l6ZSBfX3cgPSBfX2lvLndpZHRoKCk7CiAgIGlmIChfX3cgPiBzdGF0aWNfY2FzdDxzdHJlYW1z
aXplPihfX2xlbikpCiAgICAgewogICAgICAgX0NoYXJUKiBfX2NzCiAgPSBzdGF0aWNfY2FzdDxf
Q2hhclQqPihfX2J1aWx0aW5fYWxsb2NhKHNpemVvZihfQ2hhclQpCiAgICAgICAqIF9fdykpOwog
ICAgICAgX01fcGFkKF9fZmlsbCwgX193LCBfX2lvLCBfX2NzLCBfX25hbWUsIF9fbGVuKTsKICAg
ICAgIF9fbmFtZSA9IF9fY3M7CiAgICAgfQogICBfX2lvLndpZHRoKDApOwogICBfX3MgPSBzdGQ6
Ol9fd3JpdGUoX19zLCBfX25hbWUsIF9fbGVuKTsKIH0KICAgICAgcmV0dXJuIF9fczsKICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlcj4KICAgIF9PdXRJ
dGVyCiAgICBudW1fcHV0PF9DaGFyVCwgX091dEl0ZXI+OjoKICAgIGRvX3B1dChpdGVyX3R5cGUg
X19zLCBpb3NfYmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwgbG9uZyBfX3YpIGNvbnN0CiAg
ICB7IHJldHVybiBfTV9pbnNlcnRfaW50KF9fcywgX19pbywgX19maWxsLCBfX3YpOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+CiAgICBfT3V0SXRlcgog
ICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICBkb19wdXQoaXRlcl90eXBlIF9fcywg
aW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsCiAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBfX3YpIGNvbnN0CiAgICB7IHJldHVybiBfTV9pbnNlcnRfaW50KF9fcywgX19pbywgX19maWxs
LCBfX3YpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVy
PgogICAgX091dEl0ZXIKICAgIG51bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46OgogICAgZG9fcHV0
KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLCBsb25nIGxv
bmcgX192KSBjb25zdAogICAgeyByZXR1cm4gX01faW5zZXJ0X2ludChfX3MsIF9faW8sIF9fZmls
bCwgX192KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVy
PgogICAgX091dEl0ZXIKICAgIG51bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46OgogICAgZG9fcHV0
KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLAogICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIGNvbnN0CiAgICB7IHJldHVybiBfTV9pbnNlcnRf
aW50KF9fcywgX19pbywgX19maWxsLCBfX3YpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgX091dEl0ZXIKICAgIG51bV9wdXQ8X0NoYXJULCBf
T3V0SXRlcj46OgogICAgZG9fcHV0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFy
X3R5cGUgX19maWxsLCBkb3VibGUgX192KSBjb25zdAogICAgeyByZXR1cm4gX01faW5zZXJ0X2Zs
b2F0KF9fcywgX19pbywgX19maWxsLCBjaGFyKCksIF9fdik7IH0KIyAxMjkxICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2MiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgX091dEl0ZXIKICAgIG51bV9wdXQ8X0No
YXJULCBfT3V0SXRlcj46OgogICAgZG9fcHV0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lv
LCBjaGFyX3R5cGUgX19maWxsLAogICAgbG9uZyBkb3VibGUgX192KSBjb25zdAogICAgeyByZXR1
cm4gX01faW5zZXJ0X2Zsb2F0KF9fcywgX19pbywgX19maWxsLCAnTCcsIF9fdik7IH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlcj4KICAgIF9PdXRJdGVyCiAg
ICBudW1fcHV0PF9DaGFyVCwgX091dEl0ZXI+OjoKICAgIGRvX3B1dChpdGVyX3R5cGUgX19zLCBp
b3NfYmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwKICAgICAgICAgICBjb25zdCB2b2lkKiBf
X3YpIGNvbnN0CiAgICB7CiAgICAgIGNvbnN0IGlvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0g
X19pby5mbGFncygpOwogICAgICBjb25zdCBpb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbXQgPSB+KGlv
c19iYXNlOjpiYXNlZmllbGQKICAgICAgfCBpb3NfYmFzZTo6dXBwZXJjYXNlCiAgICAgIHwgaW9z
X2Jhc2U6OmludGVybmFsKTsKICAgICAgX19pby5mbGFncyhfX2ZsYWdzICYgX19mbXQgfCAoaW9z
X2Jhc2U6OmhleCB8IGlvc19iYXNlOjpzaG93YmFzZSkpOwoKICAgICAgX19zID0gX01faW5zZXJ0
X2ludChfX3MsIF9faW8sIF9fZmlsbCwKICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGxv
bmc+KF9fdikpOwogICAgICBfX2lvLmZsYWdzKF9fZmxhZ3MpOwogICAgICByZXR1cm4gX19zOwog
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAgICB0
ZW1wbGF0ZTxib29sIF9JbnRsPgogICAgICBfSW5JdGVyCiAgICAgIG1vbmV5X2dldDxfQ2hhclQs
IF9Jbkl0ZXI+OjoKICAgICAgX01fZXh0cmFjdChpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBf
X2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2Vyciwgc3RyaW5n
JiBfX3VuaXRzKSBjb25zdAogICAgICB7CiB0eXBlZGVmIGNoYXJfdHJhaXRzPF9DaGFyVD4gX190
cmFpdHNfdHlwZTsKIHR5cGVkZWYgdHlwZW5hbWUgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBzaXpl
X3R5cGU7CiB0eXBlZGVmIG1vbmV5X2Jhc2U6OnBhcnQgcGFydDsKIHR5cGVkZWYgX19tb25leXB1
bmN0X2NhY2hlPF9DaGFyVCwgX0ludGw+IF9fY2FjaGVfdHlwZTsKCiBjb25zdCBsb2NhbGUmIF9f
bG9jID0gX19pby5fTV9nZXRsb2MoKTsKIGNvbnN0IGN0eXBlPF9DaGFyVD4mIF9fY3R5cGUgPSB1
c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKTsKCiBfX3VzZV9jYWNoZTxfX2NhY2hlX3R5
cGU+IF9fdWM7CiBjb25zdCBfX2NhY2hlX3R5cGUqIF9fbGMgPSBfX3VjKF9fbG9jKTsKIGNvbnN0
IGNoYXJfdHlwZSogX19saXQgPSBfX2xjLT5fTV9hdG9tczsKCgogYm9vbCBfX25lZ2F0aXZlID0g
ZmFsc2U7Cgogc2l6ZV90eXBlIF9fc2lnbl9zaXplID0gMDsKCiBjb25zdCBib29sIF9fbWFuZGF0
b3J5X3NpZ24gPSAoX19sYy0+X01fcG9zaXRpdmVfc2lnbl9zaXplCiAgICAgICAgICAgJiYgX19s
Yy0+X01fbmVnYXRpdmVfc2lnbl9zaXplKTsKCiBzdHJpbmcgX19ncm91cGluZ190bXA7CiBpZiAo
X19sYy0+X01fdXNlX2dyb3VwaW5nKQogICBfX2dyb3VwaW5nX3RtcC5yZXNlcnZlKDMyKTsKCiBp
bnQgX19sYXN0X3BvcyA9IDA7CgogaW50IF9fbiA9IDA7CgogYm9vbCBfX3Rlc3R2YWxpZCA9IHRy
dWU7CgogYm9vbCBfX3Rlc3RkZWNmb3VuZCA9IGZhbHNlOwoKCiBzdHJpbmcgX19yZXM7CiBfX3Jl
cy5yZXNlcnZlKDMyKTsKCiBjb25zdCBjaGFyX3R5cGUqIF9fbGl0X3plcm8gPSBfX2xpdCArIG1v
bmV5X2Jhc2U6Ol9TX3plcm87CiBjb25zdCBtb25leV9iYXNlOjpwYXR0ZXJuIF9fcCA9IF9fbGMt
Pl9NX25lZ19mb3JtYXQ7CiBmb3IgKGludCBfX2kgPSAwOyBfX2kgPCA0ICYmIF9fdGVzdHZhbGlk
OyArK19faSkKICAgewogICAgIGNvbnN0IHBhcnQgX193aGljaCA9IHN0YXRpY19jYXN0PHBhcnQ+
KF9fcC5maWVsZFtfX2ldKTsKICAgICBzd2l0Y2ggKF9fd2hpY2gpCiAgICAgICB7CiAgICAgICBj
YXNlIG1vbmV5X2Jhc2U6OnN5bWJvbDoKCgoKCiAgaWYgKF9faW8uZmxhZ3MoKSAmIGlvc19iYXNl
OjpzaG93YmFzZSB8fCBfX3NpZ25fc2l6ZSA+IDEKICAgICAgfHwgX19pID09IDAKICAgICAgfHwg
KF9faSA9PSAxICYmIChfX21hbmRhdG9yeV9zaWduCiAgICAgICAgIHx8IChzdGF0aWNfY2FzdDxw
YXJ0PihfX3AuZmllbGRbMF0pCiAgICAgID09IG1vbmV5X2Jhc2U6OnNpZ24pCiAgICAgICAgIHx8
IChzdGF0aWNfY2FzdDxwYXJ0PihfX3AuZmllbGRbMl0pCiAgICAgID09IG1vbmV5X2Jhc2U6OnNw
YWNlKSkpCiAgICAgIHx8IChfX2kgPT0gMiAmJiAoKHN0YXRpY19jYXN0PHBhcnQ+KF9fcC5maWVs
ZFszXSkKICAgICAgICAgID09IG1vbmV5X2Jhc2U6OnZhbHVlKQogICAgICAgICB8fCBfX21hbmRh
dG9yeV9zaWduCiAgICAgICAgICYmIChzdGF0aWNfY2FzdDxwYXJ0PihfX3AuZmllbGRbM10pCiAg
ICAgID09IG1vbmV5X2Jhc2U6OnNpZ24pKSkpCiAgICB7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBf
X2xlbiA9IF9fbGMtPl9NX2N1cnJfc3ltYm9sX3NpemU7CiAgICAgIHNpemVfdHlwZSBfX2ogPSAw
OwogICAgICBmb3IgKDsgX19iZWcgIT0gX19lbmQgJiYgX19qIDwgX19sZW4KICAgICAgJiYgKl9f
YmVnID09IF9fbGMtPl9NX2N1cnJfc3ltYm9sW19fal07CiAgICArK19fYmVnLCArK19faik7CiAg
ICAgIGlmIChfX2ogIT0gX19sZW4KICAgJiYgKF9faiB8fCBfX2lvLmZsYWdzKCkgJiBpb3NfYmFz
ZTo6c2hvd2Jhc2UpKQogICAgICAgIF9fdGVzdHZhbGlkID0gZmFsc2U7CiAgICB9CiAgYnJlYWs7
CiAgICAgICBjYXNlIG1vbmV5X2Jhc2U6OnNpZ246CgogIGlmIChfX2xjLT5fTV9wb3NpdGl2ZV9z
aWduX3NpemUgJiYgX19iZWcgIT0gX19lbmQKICAgICAgJiYgKl9fYmVnID09IF9fbGMtPl9NX3Bv
c2l0aXZlX3NpZ25bMF0pCiAgICB7CiAgICAgIF9fc2lnbl9zaXplID0gX19sYy0+X01fcG9zaXRp
dmVfc2lnbl9zaXplOwogICAgICArK19fYmVnOwogICAgfQogIGVsc2UgaWYgKF9fbGMtPl9NX25l
Z2F0aXZlX3NpZ25fc2l6ZSAmJiBfX2JlZyAhPSBfX2VuZAogICAgJiYgKl9fYmVnID09IF9fbGMt
Pl9NX25lZ2F0aXZlX3NpZ25bMF0pCiAgICB7CiAgICAgIF9fbmVnYXRpdmUgPSB0cnVlOwogICAg
ICBfX3NpZ25fc2l6ZSA9IF9fbGMtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZTsKICAgICAgKytfX2Jl
ZzsKICAgIH0KICBlbHNlIGlmIChfX2xjLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUKICAgICYmICFf
X2xjLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUpCgoKICAgIF9fbmVnYXRpdmUgPSB0cnVlOwogIGVs
c2UgaWYgKF9fbWFuZGF0b3J5X3NpZ24pCiAgICBfX3Rlc3R2YWxpZCA9IGZhbHNlOwogIGJyZWFr
OwogICAgICAgY2FzZSBtb25leV9iYXNlOjp2YWx1ZToKCgogIGZvciAoOyBfX2JlZyAhPSBfX2Vu
ZDsgKytfX2JlZykKICAgIHsKICAgICAgY29uc3QgY2hhcl90eXBlIF9fYyA9ICpfX2JlZzsKICAg
ICAgY29uc3QgY2hhcl90eXBlKiBfX3EgPSBfX3RyYWl0c190eXBlOjpmaW5kKF9fbGl0X3plcm8s
CiAgICAgICAgICAgICAgMTAsIF9fYyk7CiAgICAgIGlmIChfX3EgIT0gMCkKICAgICAgICB7CiAg
IF9fcmVzICs9IG1vbmV5X2Jhc2U6Ol9TX2F0b21zW19fcSAtIF9fbGl0XTsKICAgKytfX247CiAg
ICAgICAgfQogICAgICBlbHNlIGlmIChfX2MgPT0gX19sYy0+X01fZGVjaW1hbF9wb2ludAogICAg
ICAgICYmICFfX3Rlc3RkZWNmb3VuZCkKICAgICAgICB7CiAgIF9fbGFzdF9wb3MgPSBfX247CiAg
IF9fbiA9IDA7CiAgIF9fdGVzdGRlY2ZvdW5kID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIGVsc2Ug
aWYgKF9fbGMtPl9NX3VzZV9ncm91cGluZwogICAgICAgICYmIF9fYyA9PSBfX2xjLT5fTV90aG91
c2FuZHNfc2VwCiAgICAgICAgJiYgIV9fdGVzdGRlY2ZvdW5kKQogICAgICAgIHsKICAgaWYgKF9f
bikKICAgICB7CgogICAgICAgX19ncm91cGluZ190bXAgKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oX19u
KTsKICAgICAgIF9fbiA9IDA7CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgX190ZXN0dmFs
aWQgPSBmYWxzZTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICB9CiAgICAgIGVsc2UKICAg
ICAgICBicmVhazsKICAgIH0KICBpZiAoX19yZXMuZW1wdHkoKSkKICAgIF9fdGVzdHZhbGlkID0g
ZmFsc2U7CiAgYnJlYWs7CiAgICAgICBjYXNlIG1vbmV5X2Jhc2U6OnNwYWNlOgoKICBpZiAoX19i
ZWcgIT0gX19lbmQgJiYgX19jdHlwZS5pcyhjdHlwZV9iYXNlOjpzcGFjZSwgKl9fYmVnKSkKICAg
ICsrX19iZWc7CiAgZWxzZQogICAgX190ZXN0dmFsaWQgPSBmYWxzZTsKICAgICAgIGNhc2UgbW9u
ZXlfYmFzZTo6bm9uZToKCiAgaWYgKF9faSAhPSAzKQogICAgZm9yICg7IF9fYmVnICE9IF9fZW5k
CiAgICAmJiBfX2N0eXBlLmlzKGN0eXBlX2Jhc2U6OnNwYWNlLCAqX19iZWcpOyArK19fYmVnKTsK
ICBicmVhazsKICAgICAgIH0KICAgfQoKCiBpZiAoX19zaWduX3NpemUgPiAxICYmIF9fdGVzdHZh
bGlkKQogICB7CiAgICAgY29uc3QgY2hhcl90eXBlKiBfX3NpZ24gPSBfX25lZ2F0aXZlID8gX19s
Yy0+X01fbmVnYXRpdmVfc2lnbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IF9fbGMtPl9NX3Bvc2l0aXZlX3NpZ247CiAgICAgc2l6ZV90eXBlIF9faSA9IDE7CiAg
ICAgZm9yICg7IF9fYmVnICE9IF9fZW5kICYmIF9faSA8IF9fc2lnbl9zaXplCiAgICAgJiYgKl9f
YmVnID09IF9fc2lnbltfX2ldOyArK19fYmVnLCArK19faSk7CgogICAgIGlmIChfX2kgIT0gX19z
aWduX3NpemUpCiAgICAgICBfX3Rlc3R2YWxpZCA9IGZhbHNlOwogICB9CgogaWYgKF9fdGVzdHZh
bGlkKQogICB7CgogICAgIGlmIChfX3Jlcy5zaXplKCkgPiAxKQogICAgICAgewogIGNvbnN0IHNp
emVfdHlwZSBfX2ZpcnN0ID0gX19yZXMuZmluZF9maXJzdF9ub3Rfb2YoJzAnKTsKICBjb25zdCBi
b29sIF9fb25seV96ZXJvcyA9IF9fZmlyc3QgPT0gc3RyaW5nOjpucG9zOwogIGlmIChfX2ZpcnN0
KQogICAgX19yZXMuZXJhc2UoMCwgX19vbmx5X3plcm9zID8gX19yZXMuc2l6ZSgpIC0gMSA6IF9f
Zmlyc3QpOwogICAgICAgfQoKCiAgICAgaWYgKF9fbmVnYXRpdmUgJiYgX19yZXNbMF0gIT0gJzAn
KQogICAgICAgX19yZXMuaW5zZXJ0KF9fcmVzLmJlZ2luKCksICctJyk7CgoKICAgICBpZiAoX19n
cm91cGluZ190bXAuc2l6ZSgpKQogICAgICAgewoKICBfX2dyb3VwaW5nX3RtcCArPSBzdGF0aWNf
Y2FzdDxjaGFyPihfX3Rlc3RkZWNmb3VuZCA/IF9fbGFzdF9wb3MKICAgICAgICAgICAgICAgICAg
ICAgICAgIDogX19uKTsKICBpZiAoIXN0ZDo6X192ZXJpZnlfZ3JvdXBpbmcoX19sYy0+X01fZ3Jv
dXBpbmcsCiAgICAgICAgIF9fbGMtPl9NX2dyb3VwaW5nX3NpemUsCiAgICAgICAgIF9fZ3JvdXBp
bmdfdG1wKSkKICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwogICAgICAgfQoKCiAgICAg
aWYgKF9fdGVzdGRlY2ZvdW5kICYmIF9fbGMtPl9NX2ZyYWNfZGlnaXRzID4gMAogICYmIF9fbiAh
PSBfX2xjLT5fTV9mcmFjX2RpZ2l0cykKICAgICAgIF9fdGVzdHZhbGlkID0gZmFsc2U7CiAgIH0K
CgogaWYgKCFfX3Rlc3R2YWxpZCkKICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiBlbHNl
CiAgIF9fdW5pdHMuc3dhcChfX3Jlcyk7CgoKIGlmIChfX2JlZyA9PSBfX2VuZCkKICAgX19lcnIg
fD0gaW9zX2Jhc2U6OmVvZmJpdDsKIHJldHVybiBfX2JlZzsKICAgICAgfQojIDE1NDcgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLnRjYyIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0ZXIKICAgIG1vbmV5X2dl
dDxfQ2hhclQsIF9Jbkl0ZXI+OjoKICAgIGRvX2dldChpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlw
ZSBfX2VuZCwgYm9vbCBfX2ludGwsIGlvc19iYXNlJiBfX2lvLAogICAgaW9zX2Jhc2U6Omlvc3Rh
dGUmIF9fZXJyLCBsb25nIGRvdWJsZSYgX191bml0cykgY29uc3QKICAgIHsKICAgICAgc3RyaW5n
IF9fc3RyOwogICAgICBfX2JlZyA9IF9faW50bCA/IF9NX2V4dHJhY3Q8dHJ1ZT4oX19iZWcsIF9f
ZW5kLCBfX2lvLCBfX2VyciwgX19zdHIpCiAgICAgICAgICAgICAgOiBfTV9leHRyYWN0PGZhbHNl
PihfX2JlZywgX19lbmQsIF9faW8sIF9fZXJyLCBfX3N0cik7CiAgICAgIHN0ZDo6X19jb252ZXJ0
X3RvX3YoX19zdHIuY19zdHIoKSwgX191bml0cywgX19lcnIsIF9TX2dldF9jX2xvY2FsZSgpKTsK
ICAgICAgcmV0dXJuIF9fYmVnOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9Jbkl0ZXI+CiAgICBfSW5JdGVyCiAgICBtb25leV9nZXQ8X0NoYXJULCBfSW5JdGVy
Pjo6CiAgICBkb19nZXQoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGJvb2wgX19p
bnRsLCBpb3NfYmFzZSYgX19pbywKICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2Vyciwgc3RyaW5n
X3R5cGUmIF9fZGlnaXRzKSBjb25zdAogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0cmlu
Zzo6c2l6ZV90eXBlIHNpemVfdHlwZTsKCiAgICAgIGNvbnN0IGxvY2FsZSYgX19sb2MgPSBfX2lv
Ll9NX2dldGxvYygpOwogICAgICBjb25zdCBjdHlwZTxfQ2hhclQ+JiBfX2N0eXBlID0gdXNlX2Zh
Y2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYyk7CgogICAgICBzdHJpbmcgX19zdHI7CiAgICAgIF9f
YmVnID0gX19pbnRsID8gX01fZXh0cmFjdDx0cnVlPihfX2JlZywgX19lbmQsIF9faW8sIF9fZXJy
LCBfX3N0cikKICAgICAgICAgICAgICA6IF9NX2V4dHJhY3Q8ZmFsc2U+KF9fYmVnLCBfX2VuZCwg
X19pbywgX19lcnIsIF9fc3RyKTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gX19zdHIu
c2l6ZSgpOwogICAgICBpZiAoX19sZW4pCiB7CiAgIF9fZGlnaXRzLnJlc2l6ZShfX2xlbik7CiAg
IF9fY3R5cGUud2lkZW4oX19zdHIuZGF0YSgpLCBfX3N0ci5kYXRhKCkgKyBfX2xlbiwgJl9fZGln
aXRzWzBdKTsKIH0KICAgICAgcmV0dXJuIF9fYmVnOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgdGVtcGxhdGU8Ym9vbCBfSW50bD4KICAg
ICAgX091dEl0ZXIKICAgICAgbW9uZXlfcHV0PF9DaGFyVCwgX091dEl0ZXI+OjoKICAgICAgX01f
aW5zZXJ0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLAog
IGNvbnN0IHN0cmluZ190eXBlJiBfX2RpZ2l0cykgY29uc3QKICAgICAgewogdHlwZWRlZiB0eXBl
bmFtZSBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKIHR5cGVkZWYgbW9uZXlfYmFz
ZTo6cGFydCBwYXJ0OwogdHlwZWRlZiBfX21vbmV5cHVuY3RfY2FjaGU8X0NoYXJULCBfSW50bD4g
X19jYWNoZV90eXBlOwoKIGNvbnN0IGxvY2FsZSYgX19sb2MgPSBfX2lvLl9NX2dldGxvYygpOwog
Y29uc3QgY3R5cGU8X0NoYXJUPiYgX19jdHlwZSA9IHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4o
X19sb2MpOwoKIF9fdXNlX2NhY2hlPF9fY2FjaGVfdHlwZT4gX191YzsKIGNvbnN0IF9fY2FjaGVf
dHlwZSogX19sYyA9IF9fdWMoX19sb2MpOwogY29uc3QgY2hhcl90eXBlKiBfX2xpdCA9IF9fbGMt
Pl9NX2F0b21zOwoKCgogY29uc3QgY2hhcl90eXBlKiBfX2JlZyA9IF9fZGlnaXRzLmRhdGEoKTsK
CiBtb25leV9iYXNlOjpwYXR0ZXJuIF9fcDsKIGNvbnN0IGNoYXJfdHlwZSogX19zaWduOwogc2l6
ZV90eXBlIF9fc2lnbl9zaXplOwogaWYgKCEoKl9fYmVnID09IF9fbGl0W21vbmV5X2Jhc2U6Ol9T
X21pbnVzXSkpCiAgIHsKICAgICBfX3AgPSBfX2xjLT5fTV9wb3NfZm9ybWF0OwogICAgIF9fc2ln
biA9IF9fbGMtPl9NX3Bvc2l0aXZlX3NpZ247CiAgICAgX19zaWduX3NpemUgPSBfX2xjLT5fTV9w
b3NpdGl2ZV9zaWduX3NpemU7CiAgIH0KIGVsc2UKICAgewogICAgIF9fcCA9IF9fbGMtPl9NX25l
Z19mb3JtYXQ7CiAgICAgX19zaWduID0gX19sYy0+X01fbmVnYXRpdmVfc2lnbjsKICAgICBfX3Np
Z25fc2l6ZSA9IF9fbGMtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZTsKICAgICBpZiAoX19kaWdpdHMu
c2l6ZSgpKQogICAgICAgKytfX2JlZzsKICAgfQoKCiBzaXplX3R5cGUgX19sZW4gPSBfX2N0eXBl
LnNjYW5fbm90KGN0eXBlX2Jhc2U6OmRpZ2l0LCBfX2JlZywKICAgICAgICBfX2JlZyArIF9fZGln
aXRzLnNpemUoKSkgLSBfX2JlZzsKIGlmIChfX2xlbikKICAgewoKCgogICAgIHN0cmluZ190eXBl
IF9fdmFsdWU7CiAgICAgX192YWx1ZS5yZXNlcnZlKDIgKiBfX2xlbik7CgoKCiAgICAgbG9uZyBf
X3BhZGRlYyA9IF9fbGVuIC0gX19sYy0+X01fZnJhY19kaWdpdHM7CiAgICAgaWYgKF9fcGFkZGVj
ID4gMCkKICAgICAgICAgewogIGlmIChfX2xjLT5fTV9mcmFjX2RpZ2l0cyA8IDApCiAgICBfX3Bh
ZGRlYyA9IF9fbGVuOwogICAgaWYgKF9fbGMtPl9NX2dyb3VwaW5nX3NpemUpCiAgICAgIHsKICAg
ICAgX192YWx1ZS5hc3NpZ24oMiAqIF9fcGFkZGVjLCBjaGFyX3R5cGUoKSk7CiAgICAgICBfQ2hh
clQqIF9fdmVuZCA9CiAgICAgICAgc3RkOjpfX2FkZF9ncm91cGluZygmX192YWx1ZVswXSwgX19s
Yy0+X01fdGhvdXNhbmRzX3NlcCwKICAgICAgIF9fbGMtPl9NX2dyb3VwaW5nLAogICAgICAgX19s
Yy0+X01fZ3JvdXBpbmdfc2l6ZSwKICAgICAgIF9fYmVnLCBfX2JlZyArIF9fcGFkZGVjKTsKICAg
ICAgX192YWx1ZS5lcmFzZShfX3ZlbmQgLSAmX192YWx1ZVswXSk7CiAgICAgIH0KICAgIGVsc2UK
ICAgIF9fdmFsdWUuYXNzaWduKF9fYmVnLCBfX3BhZGRlYyk7CiAgICAgICB9CgoKICAgICBpZiAo
X19sYy0+X01fZnJhY19kaWdpdHMgPiAwKQogICAgICAgewogIF9fdmFsdWUgKz0gX19sYy0+X01f
ZGVjaW1hbF9wb2ludDsKICBpZiAoX19wYWRkZWMgPj0gMCkKICAgIF9fdmFsdWUuYXBwZW5kKF9f
YmVnICsgX19wYWRkZWMsIF9fbGMtPl9NX2ZyYWNfZGlnaXRzKTsKICBlbHNlCiAgICB7CgogICAg
ICBfX3ZhbHVlLmFwcGVuZCgtX19wYWRkZWMsIF9fbGl0W21vbmV5X2Jhc2U6Ol9TX3plcm9dKTsK
ICAgICAgX192YWx1ZS5hcHBlbmQoX19iZWcsIF9fbGVuKTsKICAgIH0KICAgICAgICAgfQoKCiAg
ICAgY29uc3QgaW9zX2Jhc2U6OmZtdGZsYWdzIF9fZiA9IF9faW8uZmxhZ3MoKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmIGlvc19iYXNlOjphZGp1c3RmaWVsZDsKICAgICBf
X2xlbiA9IF9fdmFsdWUuc2l6ZSgpICsgX19zaWduX3NpemU7CiAgICAgX19sZW4gKz0gKChfX2lv
LmZsYWdzKCkgJiBpb3NfYmFzZTo6c2hvd2Jhc2UpCiAgICAgICAgPyBfX2xjLT5fTV9jdXJyX3N5
bWJvbF9zaXplIDogMCk7CgogICAgIHN0cmluZ190eXBlIF9fcmVzOwogICAgIF9fcmVzLnJlc2Vy
dmUoMiAqIF9fbGVuKTsKCiAgICAgY29uc3Qgc2l6ZV90eXBlIF9fd2lkdGggPSBzdGF0aWNfY2Fz
dDxzaXplX3R5cGU+KF9faW8ud2lkdGgoKSk7CiAgICAgY29uc3QgYm9vbCBfX3Rlc3RpcGFkID0g
KF9fZiA9PSBpb3NfYmFzZTo6aW50ZXJuYWwKICAgICAgICAgJiYgX19sZW4gPCBfX3dpZHRoKTsK
CiAgICAgZm9yIChpbnQgX19pID0gMDsgX19pIDwgNDsgKytfX2kpCiAgICAgICB7CiAgY29uc3Qg
cGFydCBfX3doaWNoID0gc3RhdGljX2Nhc3Q8cGFydD4oX19wLmZpZWxkW19faV0pOwogIHN3aXRj
aCAoX193aGljaCkKICAgIHsKICAgIGNhc2UgbW9uZXlfYmFzZTo6c3ltYm9sOgogICAgICBpZiAo
X19pby5mbGFncygpICYgaW9zX2Jhc2U6OnNob3diYXNlKQogICAgICAgIF9fcmVzLmFwcGVuZChf
X2xjLT5fTV9jdXJyX3N5bWJvbCwKICAgICAgIF9fbGMtPl9NX2N1cnJfc3ltYm9sX3NpemUpOwog
ICAgICBicmVhazsKICAgIGNhc2UgbW9uZXlfYmFzZTo6c2lnbjoKCgoKICAgICAgaWYgKF9fc2ln
bl9zaXplKQogICAgICAgIF9fcmVzICs9IF9fc2lnblswXTsKICAgICAgYnJlYWs7CiAgICBjYXNl
IG1vbmV5X2Jhc2U6OnZhbHVlOgogICAgICBfX3JlcyArPSBfX3ZhbHVlOwogICAgICBicmVhazsK
ICAgIGNhc2UgbW9uZXlfYmFzZTo6c3BhY2U6CgoKCiAgICAgIGlmIChfX3Rlc3RpcGFkKQogICAg
ICAgIF9fcmVzLmFwcGVuZChfX3dpZHRoIC0gX19sZW4sIF9fZmlsbCk7CiAgICAgIGVsc2UKICAg
ICAgICBfX3JlcyArPSBfX2ZpbGw7CiAgICAgIGJyZWFrOwogICAgY2FzZSBtb25leV9iYXNlOjpu
b25lOgogICAgICBpZiAoX190ZXN0aXBhZCkKICAgICAgICBfX3Jlcy5hcHBlbmQoX193aWR0aCAt
IF9fbGVuLCBfX2ZpbGwpOwogICAgICBicmVhazsKICAgIH0KICAgICAgIH0KCgogICAgIGlmIChf
X3NpZ25fc2l6ZSA+IDEpCiAgICAgICBfX3Jlcy5hcHBlbmQoX19zaWduICsgMSwgX19zaWduX3Np
emUgLSAxKTsKCgogICAgIF9fbGVuID0gX19yZXMuc2l6ZSgpOwogICAgIGlmIChfX3dpZHRoID4g
X19sZW4pCiAgICAgICB7CiAgaWYgKF9fZiA9PSBpb3NfYmFzZTo6bGVmdCkKCiAgICBfX3Jlcy5h
cHBlbmQoX193aWR0aCAtIF9fbGVuLCBfX2ZpbGwpOwogIGVsc2UKCiAgICBfX3Jlcy5pbnNlcnQo
MCwgX193aWR0aCAtIF9fbGVuLCBfX2ZpbGwpOwogIF9fbGVuID0gX193aWR0aDsKICAgICAgIH0K
CgogICAgIF9fcyA9IHN0ZDo6X193cml0ZShfX3MsIF9fcmVzLmRhdGEoKSwgX19sZW4pOwogICB9
CiBfX2lvLndpZHRoKDApOwogcmV0dXJuIF9fczsKICAgICAgfQojIDE3NTIgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9sb2NhbGVfZmFjZXRzLnRjYyIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+CiAgICBfT3V0SXRlcgogICAgbW9uZXlfcHV0PF9D
aGFyVCwgX091dEl0ZXI+OjoKICAgIGRvX3B1dChpdGVyX3R5cGUgX19zLCBib29sIF9faW50bCwg
aW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsCiAgICBsb25nIGRvdWJsZSBfX3VuaXRz
KSBjb25zdAogICAgewogICAgICBjb25zdCBsb2NhbGUgX19sb2MgPSBfX2lvLmdldGxvYygpOwog
ICAgICBjb25zdCBjdHlwZTxfQ2hhclQ+JiBfX2N0eXBlID0gdXNlX2ZhY2V0PGN0eXBlPF9DaGFy
VD4gPihfX2xvYyk7CgoKICAgICAgaW50IF9fY3Nfc2l6ZSA9IDY0OwogICAgICBjaGFyKiBfX2Nz
ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KF9fYnVpbHRpbl9hbGxvY2EoX19jc19zaXplKSk7CgoKICAg
ICAgaW50IF9fbGVuID0gc3RkOjpfX2NvbnZlcnRfZnJvbV92KF9TX2dldF9jX2xvY2FsZSgpLCBf
X2NzLCBfX2NzX3NpemUsCiAgICAgIiUuKkxmIiwgMCwgX191bml0cyk7CgogICAgICBpZiAoX19s
ZW4gPj0gX19jc19zaXplKQogewogICBfX2NzX3NpemUgPSBfX2xlbiArIDE7CiAgIF9fY3MgPSBz
dGF0aWNfY2FzdDxjaGFyKj4oX19idWlsdGluX2FsbG9jYShfX2NzX3NpemUpKTsKICAgX19sZW4g
PSBzdGQ6Ol9fY29udmVydF9mcm9tX3YoX1NfZ2V0X2NfbG9jYWxlKCksIF9fY3MsIF9fY3Nfc2l6
ZSwKICAgICAiJS4qTGYiLCAwLCBfX3VuaXRzKTsKIH0KCgoKCgoKCiAgICAgIHN0cmluZ190eXBl
IF9fZGlnaXRzKF9fbGVuLCBjaGFyX3R5cGUoKSk7CiAgICAgIF9fY3R5cGUud2lkZW4oX19jcywg
X19jcyArIF9fbGVuLCAmX19kaWdpdHNbMF0pOwogICAgICByZXR1cm4gX19pbnRsID8gX01faW5z
ZXJ0PHRydWU+KF9fcywgX19pbywgX19maWxsLCBfX2RpZ2l0cykKICAgICAgICAgICAgIDogX01f
aW5zZXJ0PGZhbHNlPihfX3MsIF9faW8sIF9fZmlsbCwgX19kaWdpdHMpOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgX091dEl0ZXIKICAg
IG1vbmV5X3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICBkb19wdXQoaXRlcl90eXBlIF9fcywg
Ym9vbCBfX2ludGwsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLAogICAgY29uc3Qg
c3RyaW5nX3R5cGUmIF9fZGlnaXRzKSBjb25zdAogICAgeyByZXR1cm4gX19pbnRsID8gX01faW5z
ZXJ0PHRydWU+KF9fcywgX19pbywgX19maWxsLCBfX2RpZ2l0cykKICAgICAgICAgICAgIDogX01f
aW5zZXJ0PGZhbHNlPihfX3MsIF9faW8sIF9fZmlsbCwgX19kaWdpdHMpOyB9CgoKCgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgdGltZV9iYXNlOjpk
YXRlb3JkZXIKICAgIHRpbWVfZ2V0PF9DaGFyVCwgX0luSXRlcj46OmRvX2RhdGVfb3JkZXIoKSBj
b25zdAogICAgeyByZXR1cm4gdGltZV9iYXNlOjpub19vcmRlcjsgfQoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0ZXIKICAgIHRpbWVfZ2V0
PF9DaGFyVCwgX0luSXRlcj46OgogICAgX01fZXh0cmFjdF92aWFfZm9ybWF0KGl0ZXJfdHlwZSBf
X2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgICBpb3NfYmFzZTo6aW9z
dGF0ZSYgX19lcnIsIHRtKiBfX3RtLAogICAgIGNvbnN0IF9DaGFyVCogX19mb3JtYXQpIGNvbnN0
CiAgICB7CiAgICAgIGNvbnN0IGxvY2FsZSYgX19sb2MgPSBfX2lvLl9NX2dldGxvYygpOwogICAg
ICBjb25zdCBfX3RpbWVwdW5jdDxfQ2hhclQ+JiBfX3RwID0gdXNlX2ZhY2V0PF9fdGltZXB1bmN0
PF9DaGFyVD4gPihfX2xvYyk7CiAgICAgIGNvbnN0IGN0eXBlPF9DaGFyVD4mIF9fY3R5cGUgPSB1
c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKTsKICAgICAgY29uc3Qgc2l6ZV90IF9fbGVu
ID0gY2hhcl90cmFpdHM8X0NoYXJUPjo6bGVuZ3RoKF9fZm9ybWF0KTsKCiAgICAgIGlvc19iYXNl
Ojppb3N0YXRlIF9fdG1wZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7CiAgICAgIGZvciAoc2l6ZV90
IF9faSA9IDA7IF9fYmVnICE9IF9fZW5kICYmIF9faSA8IF9fbGVuICYmICFfX3RtcGVycjsgKytf
X2kpCiB7CiAgIGlmIChfX2N0eXBlLm5hcnJvdyhfX2Zvcm1hdFtfX2ldLCAwKSA9PSAnJScpCiAg
ICAgewoKICAgICAgIGNoYXIgX19jID0gX19jdHlwZS5uYXJyb3coX19mb3JtYXRbKytfX2ldLCAw
KTsKICAgICAgIGludCBfX21lbSA9IDA7CiAgICAgICBpZiAoX19jID09ICdFJyB8fCBfX2MgPT0g
J08nKQogIF9fYyA9IF9fY3R5cGUubmFycm93KF9fZm9ybWF0WysrX19pXSwgMCk7CiAgICAgICBz
d2l0Y2ggKF9fYykKICB7CiAgICBjb25zdCBjaGFyKiBfX2NzOwogICAgX0NoYXJUIF9fd2NzWzEw
XTsKICBjYXNlICdhJzoKCiAgICBjb25zdCBjaGFyX3R5cGUqIF9fZGF5czFbN107CiAgICBfX3Rw
Ll9NX2RheXNfYWJicmV2aWF0ZWQoX19kYXlzMSk7CiAgICBfX2JlZyA9IF9NX2V4dHJhY3RfbmFt
ZShfX2JlZywgX19lbmQsIF9fdG0tPnRtX3dkYXksIF9fZGF5czEsCiAgICAgICA3LCBfX2lvLCBf
X3RtcGVycik7CiAgICBicmVhazsKICBjYXNlICdBJzoKCiAgICBjb25zdCBjaGFyX3R5cGUqIF9f
ZGF5czJbN107CiAgICBfX3RwLl9NX2RheXMoX19kYXlzMik7CiAgICBfX2JlZyA9IF9NX2V4dHJh
Y3RfbmFtZShfX2JlZywgX19lbmQsIF9fdG0tPnRtX3dkYXksIF9fZGF5czIsCiAgICAgICA3LCBf
X2lvLCBfX3RtcGVycik7CiAgICBicmVhazsKICBjYXNlICdoJzoKICBjYXNlICdiJzoKCiAgICBj
b25zdCBjaGFyX3R5cGUqIF9fbW9udGhzMVsxMl07CiAgICBfX3RwLl9NX21vbnRoc19hYmJyZXZp
YXRlZChfX21vbnRoczEpOwogICAgX19iZWcgPSBfTV9leHRyYWN0X25hbWUoX19iZWcsIF9fZW5k
LCBfX3RtLT50bV9tb24sCiAgICAgICBfX21vbnRoczEsIDEyLCBfX2lvLCBfX3RtcGVycik7CiAg
ICBicmVhazsKICBjYXNlICdCJzoKCiAgICBjb25zdCBjaGFyX3R5cGUqIF9fbW9udGhzMlsxMl07
CiAgICBfX3RwLl9NX21vbnRocyhfX21vbnRoczIpOwogICAgX19iZWcgPSBfTV9leHRyYWN0X25h
bWUoX19iZWcsIF9fZW5kLCBfX3RtLT50bV9tb24sCiAgICAgICBfX21vbnRoczIsIDEyLCBfX2lv
LCBfX3RtcGVycik7CiAgICBicmVhazsKICBjYXNlICdjJzoKCiAgICBjb25zdCBjaGFyX3R5cGUq
IF9fZHRbMl07CiAgICBfX3RwLl9NX2RhdGVfdGltZV9mb3JtYXRzKF9fZHQpOwogICAgX19iZWcg
PSBfTV9leHRyYWN0X3ZpYV9mb3JtYXQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX3RtcGVyciwKICAg
ICAgX190bSwgX19kdFswXSk7CiAgICBicmVhazsKICBjYXNlICdkJzoKCiAgICBfX2JlZyA9IF9N
X2V4dHJhY3RfbnVtKF9fYmVnLCBfX2VuZCwgX190bS0+dG1fbWRheSwgMSwgMzEsIDIsCiAgICAg
IF9faW8sIF9fdG1wZXJyKTsKICAgIGJyZWFrOwogIGNhc2UgJ2UnOgoKCiAgICBpZiAoX19jdHlw
ZS5pcyhjdHlwZV9iYXNlOjpzcGFjZSwgKl9fYmVnKSkKICAgICAgX19iZWcgPSBfTV9leHRyYWN0
X251bSgrK19fYmVnLCBfX2VuZCwgX190bS0+dG1fbWRheSwgMSwgOSwKICAgICAgICAxLCBfX2lv
LCBfX3RtcGVycik7CiAgICBlbHNlCiAgICAgIF9fYmVnID0gX01fZXh0cmFjdF9udW0oX19iZWcs
IF9fZW5kLCBfX3RtLT50bV9tZGF5LCAxMCwgMzEsCiAgICAgICAgMiwgX19pbywgX190bXBlcnIp
OwogICAgYnJlYWs7CiAgY2FzZSAnRCc6CgogICAgX19jcyA9ICIlbS8lZC8leSI7CiAgICBfX2N0
eXBlLndpZGVuKF9fY3MsIF9fY3MgKyA5LCBfX3djcyk7CiAgICBfX2JlZyA9IF9NX2V4dHJhY3Rf
dmlhX2Zvcm1hdChfX2JlZywgX19lbmQsIF9faW8sIF9fdG1wZXJyLAogICAgICBfX3RtLCBfX3dj
cyk7CiAgICBicmVhazsKICBjYXNlICdIJzoKCiAgICBfX2JlZyA9IF9NX2V4dHJhY3RfbnVtKF9f
YmVnLCBfX2VuZCwgX190bS0+dG1faG91ciwgMCwgMjMsIDIsCiAgICAgIF9faW8sIF9fdG1wZXJy
KTsKICAgIGJyZWFrOwogIGNhc2UgJ0knOgoKICAgIF9fYmVnID0gX01fZXh0cmFjdF9udW0oX19i
ZWcsIF9fZW5kLCBfX3RtLT50bV9ob3VyLCAxLCAxMiwgMiwKICAgICAgX19pbywgX190bXBlcnIp
OwogICAgYnJlYWs7CiAgY2FzZSAnbSc6CgogICAgX19iZWcgPSBfTV9leHRyYWN0X251bShfX2Jl
ZywgX19lbmQsIF9fbWVtLCAxLCAxMiwgMiwKICAgICAgX19pbywgX190bXBlcnIpOwogICAgaWYg
KCFfX3RtcGVycikKICAgICAgX190bS0+dG1fbW9uID0gX19tZW0gLSAxOwogICAgYnJlYWs7CiAg
Y2FzZSAnTSc6CgogICAgX19iZWcgPSBfTV9leHRyYWN0X251bShfX2JlZywgX19lbmQsIF9fdG0t
PnRtX21pbiwgMCwgNTksIDIsCiAgICAgIF9faW8sIF9fdG1wZXJyKTsKICAgIGJyZWFrOwogIGNh
c2UgJ24nOgogICAgaWYgKF9fY3R5cGUubmFycm93KCpfX2JlZywgMCkgPT0gJ1xuJykKICAgICAg
KytfX2JlZzsKICAgIGVsc2UKICAgICAgX190bXBlcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAg
ICBicmVhazsKICBjYXNlICdSJzoKCiAgICBfX2NzID0gIiVIOiVNIjsKICAgIF9fY3R5cGUud2lk
ZW4oX19jcywgX19jcyArIDYsIF9fd2NzKTsKICAgIF9fYmVnID0gX01fZXh0cmFjdF92aWFfZm9y
bWF0KF9fYmVnLCBfX2VuZCwgX19pbywgX190bXBlcnIsCiAgICAgIF9fdG0sIF9fd2NzKTsKICAg
IGJyZWFrOwogIGNhc2UgJ1MnOgoKCgogICAgX19iZWcgPSBfTV9leHRyYWN0X251bShfX2JlZywg
X19lbmQsIF9fdG0tPnRtX3NlYywgMCwgNjAsIDIsCgoKCiAgICAgIF9faW8sIF9fdG1wZXJyKTsK
ICAgIGJyZWFrOwogIGNhc2UgJ3QnOgogICAgaWYgKF9fY3R5cGUubmFycm93KCpfX2JlZywgMCkg
PT0gJ1x0JykKICAgICAgKytfX2JlZzsKICAgIGVsc2UKICAgICAgX190bXBlcnIgfD0gaW9zX2Jh
c2U6OmZhaWxiaXQ7CiAgICBicmVhazsKICBjYXNlICdUJzoKCiAgICBfX2NzID0gIiVIOiVNOiVT
IjsKICAgIF9fY3R5cGUud2lkZW4oX19jcywgX19jcyArIDksIF9fd2NzKTsKICAgIF9fYmVnID0g
X01fZXh0cmFjdF92aWFfZm9ybWF0KF9fYmVnLCBfX2VuZCwgX19pbywgX190bXBlcnIsCiAgICAg
IF9fdG0sIF9fd2NzKTsKICAgIGJyZWFrOwogIGNhc2UgJ3gnOgoKICAgIGNvbnN0IGNoYXJfdHlw
ZSogX19kYXRlc1syXTsKICAgIF9fdHAuX01fZGF0ZV9mb3JtYXRzKF9fZGF0ZXMpOwogICAgX19i
ZWcgPSBfTV9leHRyYWN0X3ZpYV9mb3JtYXQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX3RtcGVyciwK
ICAgICAgX190bSwgX19kYXRlc1swXSk7CiAgICBicmVhazsKICBjYXNlICdYJzoKCiAgICBjb25z
dCBjaGFyX3R5cGUqIF9fdGltZXNbMl07CiAgICBfX3RwLl9NX3RpbWVfZm9ybWF0cyhfX3RpbWVz
KTsKICAgIF9fYmVnID0gX01fZXh0cmFjdF92aWFfZm9ybWF0KF9fYmVnLCBfX2VuZCwgX19pbywg
X190bXBlcnIsCiAgICAgIF9fdG0sIF9fdGltZXNbMF0pOwogICAgYnJlYWs7CiAgY2FzZSAneSc6
CiAgY2FzZSAnQyc6CgogICAgX19iZWcgPSBfTV9leHRyYWN0X251bShfX2JlZywgX19lbmQsIF9f
dG0tPnRtX3llYXIsIDAsIDk5LCAyLAogICAgICBfX2lvLCBfX3RtcGVycik7CiAgICBicmVhazsK
ICBjYXNlICdZJzoKCiAgICBfX2JlZyA9IF9NX2V4dHJhY3RfbnVtKF9fYmVnLCBfX2VuZCwgX19t
ZW0sIDAsIDk5OTksIDQsCiAgICAgIF9faW8sIF9fdG1wZXJyKTsKICAgIGlmICghX190bXBlcnIp
CiAgICAgIF9fdG0tPnRtX3llYXIgPSBfX21lbSAtIDE5MDA7CiAgICBicmVhazsKICBjYXNlICda
JzoKCiAgICBpZiAoX19jdHlwZS5pcyhjdHlwZV9iYXNlOjp1cHBlciwgKl9fYmVnKSkKICAgICAg
ewogICAgICAgIGludCBfX3RtcDsKICAgICAgICBfX2JlZyA9IF9NX2V4dHJhY3RfbmFtZShfX2Jl
ZywgX19lbmQsIF9fdG1wLAogICAgICAgICAgIF9fdGltZXB1bmN0X2NhY2hlPF9DaGFyVD46Ol9T
X3RpbWV6b25lcywKICAgICAgICAgICAxNCwgX19pbywgX190bXBlcnIpOwoKCiAgICAgICAgaWYg
KF9fYmVnICE9IF9fZW5kICYmICFfX3RtcGVyciAmJiBfX3RtcCA9PSAwCiAgICAgJiYgKCpfX2Jl
ZyA9PSBfX2N0eXBlLndpZGVuKCctJykKICAgICAgICAgfHwgKl9fYmVnID09IF9fY3R5cGUud2lk
ZW4oJysnKSkpCiAgIHsKICAgICBfX2JlZyA9IF9NX2V4dHJhY3RfbnVtKF9fYmVnLCBfX2VuZCwg
X190bXAsIDAsIDIzLCAyLAogICAgICAgX19pbywgX190bXBlcnIpOwogICAgIF9fYmVnID0gX01f
ZXh0cmFjdF9udW0oX19iZWcsIF9fZW5kLCBfX3RtcCwgMCwgNTksIDIsCiAgICAgICBfX2lvLCBf
X3RtcGVycik7CiAgIH0KICAgICAgfQogICAgZWxzZQogICAgICBfX3RtcGVyciB8PSBpb3NfYmFz
ZTo6ZmFpbGJpdDsKICAgIGJyZWFrOwogIGRlZmF1bHQ6CgogICAgX190bXBlcnIgfD0gaW9zX2Jh
c2U6OmZhaWxiaXQ7CiAgfQogICAgIH0KICAgZWxzZQogICAgIHsKCiAgICAgICBpZiAoX19mb3Jt
YXRbX19pXSA9PSAqX19iZWcpCiAgKytfX2JlZzsKICAgICAgIGVsc2UKICBfX3RtcGVyciB8PSBp
b3NfYmFzZTo6ZmFpbGJpdDsKICAgICB9CiB9CgogICAgICBpZiAoX190bXBlcnIpCiBfX2VyciB8
PSBpb3NfYmFzZTo6ZmFpbGJpdDsKCiAgICAgIHJldHVybiBfX2JlZzsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgX0luSXRlcgogICAgdGlt
ZV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6CiAgICBfTV9leHRyYWN0X251bShpdGVyX3R5cGUgX19i
ZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW50JiBfX21lbWJlciwKICAgICBpbnQgX19taW4sIGludCBf
X21heCwgc2l6ZV90IF9fbGVuLAogICAgIGlvc19iYXNlJiBfX2lvLCBpb3NfYmFzZTo6aW9zdGF0
ZSYgX19lcnIpIGNvbnN0CiAgICB7CiAgICAgIGNvbnN0IGxvY2FsZSYgX19sb2MgPSBfX2lvLl9N
X2dldGxvYygpOwogICAgICBjb25zdCBjdHlwZTxfQ2hhclQ+JiBfX2N0eXBlID0gdXNlX2ZhY2V0
PGN0eXBlPF9DaGFyVD4gPihfX2xvYyk7CgoKICAgICAgaW50IF9fbXVsdCA9IF9fbGVuID09IDIg
PyAxMCA6IChfX2xlbiA9PSA0ID8gMTAwMCA6IDEpOwoKICAgICAgKytfX21pbjsKICAgICAgc2l6
ZV90IF9faSA9IDA7CiAgICAgIGludCBfX3ZhbHVlID0gMDsKICAgICAgZm9yICg7IF9fYmVnICE9
IF9fZW5kICYmIF9faSA8IF9fbGVuOyArK19fYmVnLCArK19faSkKIHsKICAgY29uc3QgY2hhciBf
X2MgPSBfX2N0eXBlLm5hcnJvdygqX19iZWcsICcqJyk7CiAgIGlmIChfX2MgPj0gJzAnICYmIF9f
YyA8PSAnOScpCiAgICAgewogICAgICAgX192YWx1ZSA9IF9fdmFsdWUgKiAxMCArIChfX2MgLSAn
MCcpOwogICAgICAgY29uc3QgaW50IF9fdmFsdWVjID0gX192YWx1ZSAqIF9fbXVsdDsKICAgICAg
IGlmIChfX3ZhbHVlYyA+IF9fbWF4IHx8IF9fdmFsdWVjICsgX19tdWx0IDwgX19taW4pCiAgYnJl
YWs7CiAgICAgICBfX211bHQgLz0gMTA7CiAgICAgfQogICBlbHNlCiAgICAgYnJlYWs7CiB9CiAg
ICAgIGlmIChfX2kgPT0gX19sZW4pCiBfX21lbWJlciA9IF9fdmFsdWU7CiAgICAgIGVsc2UKIF9f
ZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwoKICAgICAgcmV0dXJuIF9fYmVnOwogICAgfQoKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0ZXIK
ICAgIHRpbWVfZ2V0PF9DaGFyVCwgX0luSXRlcj46OgogICAgX01fZXh0cmFjdF9uYW1lKGl0ZXJf
dHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpbnQmIF9fbWVtYmVyLAogICAgICBjb25zdCBf
Q2hhclQqKiBfX25hbWVzLCBzaXplX3QgX19pbmRleGxlbiwKICAgICAgaW9zX2Jhc2UmIF9faW8s
IGlvc19iYXNlOjppb3N0YXRlJiBfX2VycikgY29uc3QKICAgIHsKICAgICAgdHlwZWRlZiBjaGFy
X3RyYWl0czxfQ2hhclQ+IF9fdHJhaXRzX3R5cGU7CiAgICAgIGNvbnN0IGxvY2FsZSYgX19sb2Mg
PSBfX2lvLl9NX2dldGxvYygpOwogICAgICBjb25zdCBjdHlwZTxfQ2hhclQ+JiBfX2N0eXBlID0g
dXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYyk7CgogICAgICBpbnQqIF9fbWF0Y2hlcyA9
IHN0YXRpY19jYXN0PGludCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKGludCkKICAgICAgICAg
KiBfX2luZGV4bGVuKSk7CiAgICAgIHNpemVfdCBfX25tYXRjaGVzID0gMDsKICAgICAgc2l6ZV90
IF9fcG9zID0gMDsKICAgICAgYm9vbCBfX3Rlc3R2YWxpZCA9IHRydWU7CiAgICAgIGNvbnN0IGNo
YXJfdHlwZSogX19uYW1lOwoKCgoKCiAgICAgIGlmIChfX2JlZyAhPSBfX2VuZCkKIHsKICAgY29u
c3QgY2hhcl90eXBlIF9fYyA9ICpfX2JlZzsKICAgZm9yIChzaXplX3QgX19pMSA9IDA7IF9faTEg
PCBfX2luZGV4bGVuOyArK19faTEpCiAgICAgaWYgKF9fYyA9PSBfX25hbWVzW19faTFdWzBdCiAg
fHwgX19jID09IF9fY3R5cGUudG91cHBlcihfX25hbWVzW19faTFdWzBdKSkKICAgICAgIF9fbWF0
Y2hlc1tfX25tYXRjaGVzKytdID0gX19pMTsKIH0KCiAgICAgIHdoaWxlIChfX25tYXRjaGVzID4g
MSkKIHsKCiAgIHNpemVfdCBfX21pbmxlbiA9IF9fdHJhaXRzX3R5cGU6Omxlbmd0aChfX25hbWVz
W19fbWF0Y2hlc1swXV0pOwogICBmb3IgKHNpemVfdCBfX2kyID0gMTsgX19pMiA8IF9fbm1hdGNo
ZXM7ICsrX19pMikKICAgICBfX21pbmxlbiA9IHN0ZDo6bWluKF9fbWlubGVuLAogICAgICAgICBf
X3RyYWl0c190eXBlOjpsZW5ndGgoX19uYW1lc1tfX21hdGNoZXNbX19pMl1dKSk7CiAgICsrX19i
ZWcsICsrX19wb3M7CiAgIGlmIChfX3BvcyA8IF9fbWlubGVuICYmIF9fYmVnICE9IF9fZW5kKQog
ICAgIGZvciAoc2l6ZV90IF9faTMgPSAwOyBfX2kzIDwgX19ubWF0Y2hlczspCiAgICAgICB7CiAg
X19uYW1lID0gX19uYW1lc1tfX21hdGNoZXNbX19pM11dOwogIGlmICghKF9fbmFtZVtfX3Bvc10g
PT0gKl9fYmVnKSkKICAgIF9fbWF0Y2hlc1tfX2kzXSA9IF9fbWF0Y2hlc1stLV9fbm1hdGNoZXNd
OwogIGVsc2UKICAgICsrX19pMzsKICAgICAgIH0KICAgZWxzZQogICAgIGJyZWFrOwogfQoKICAg
ICAgaWYgKF9fbm1hdGNoZXMgPT0gMSkKIHsKCiAgICsrX19iZWcsICsrX19wb3M7CiAgIF9fbmFt
ZSA9IF9fbmFtZXNbX19tYXRjaGVzWzBdXTsKICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX190cmFp
dHNfdHlwZTo6bGVuZ3RoKF9fbmFtZSk7CiAgIHdoaWxlIChfX3BvcyA8IF9fbGVuICYmIF9fYmVn
ICE9IF9fZW5kICYmIF9fbmFtZVtfX3Bvc10gPT0gKl9fYmVnKQogICAgICsrX19iZWcsICsrX19w
b3M7CgogICBpZiAoX19sZW4gPT0gX19wb3MpCiAgICAgX19tZW1iZXIgPSBfX21hdGNoZXNbMF07
CiAgIGVsc2UKICAgICBfX3Rlc3R2YWxpZCA9IGZhbHNlOwogfQogICAgICBlbHNlCiBfX3Rlc3R2
YWxpZCA9IGZhbHNlOwogICAgICBpZiAoIV9fdGVzdHZhbGlkKQogX19lcnIgfD0gaW9zX2Jhc2U6
OmZhaWxiaXQ7CgogICAgICByZXR1cm4gX19iZWc7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0ZXIKICAgIHRpbWVfZ2V0PF9DaGFy
VCwgX0luSXRlcj46OgogICAgZG9fZ2V0X3RpbWUoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUg
X19lbmQsIGlvc19iYXNlJiBfX2lvLAogIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdG0qIF9f
dG0pIGNvbnN0CiAgICB7CiAgICAgIGNvbnN0IGxvY2FsZSYgX19sb2MgPSBfX2lvLl9NX2dldGxv
YygpOwogICAgICBjb25zdCBfX3RpbWVwdW5jdDxfQ2hhclQ+JiBfX3RwID0gdXNlX2ZhY2V0PF9f
dGltZXB1bmN0PF9DaGFyVD4gPihfX2xvYyk7CiAgICAgIGNvbnN0IGNoYXJfdHlwZSogX190aW1l
c1syXTsKICAgICAgX190cC5fTV90aW1lX2Zvcm1hdHMoX190aW1lcyk7CiAgICAgIF9fYmVnID0g
X01fZXh0cmFjdF92aWFfZm9ybWF0KF9fYmVnLCBfX2VuZCwgX19pbywgX19lcnIsCiAgICAgICAg
X190bSwgX190aW1lc1swXSk7CiAgICAgIGlmIChfX2JlZyA9PSBfX2VuZCkKIF9fZXJyIHw9IGlv
c19iYXNlOjplb2ZiaXQ7CiAgICAgIHJldHVybiBfX2JlZzsKICAgIH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgX0luSXRlcgogICAgdGltZV9nZXQ8
X0NoYXJULCBfSW5JdGVyPjo6CiAgICBkb19nZXRfZGF0ZShpdGVyX3R5cGUgX19iZWcsIGl0ZXJf
dHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB0
bSogX190bSkgY29uc3QKICAgIHsKICAgICAgY29uc3QgbG9jYWxlJiBfX2xvYyA9IF9faW8uX01f
Z2V0bG9jKCk7CiAgICAgIGNvbnN0IF9fdGltZXB1bmN0PF9DaGFyVD4mIF9fdHAgPSB1c2VfZmFj
ZXQ8X190aW1lcHVuY3Q8X0NoYXJUPiA+KF9fbG9jKTsKICAgICAgY29uc3QgY2hhcl90eXBlKiBf
X2RhdGVzWzJdOwogICAgICBfX3RwLl9NX2RhdGVfZm9ybWF0cyhfX2RhdGVzKTsKICAgICAgX19i
ZWcgPSBfTV9leHRyYWN0X3ZpYV9mb3JtYXQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwKICAg
ICAgICBfX3RtLCBfX2RhdGVzWzBdKTsKICAgICAgaWYgKF9fYmVnID09IF9fZW5kKQogX19lcnIg
fD0gaW9zX2Jhc2U6OmVvZmJpdDsKICAgICAgcmV0dXJuIF9fYmVnOwogICAgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAgICBfSW5JdGVyCiAgICB0aW1l
X2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoKICAgIGRvX2dldF93ZWVrZGF5KGl0ZXJfdHlwZSBfX2Jl
ZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgICBpb3NfYmFzZTo6aW9zdGF0
ZSYgX19lcnIsIHRtKiBfX3RtKSBjb25zdAogICAgewogICAgICB0eXBlZGVmIGNoYXJfdHJhaXRz
PF9DaGFyVD4gX190cmFpdHNfdHlwZTsKICAgICAgY29uc3QgbG9jYWxlJiBfX2xvYyA9IF9faW8u
X01fZ2V0bG9jKCk7CiAgICAgIGNvbnN0IF9fdGltZXB1bmN0PF9DaGFyVD4mIF9fdHAgPSB1c2Vf
ZmFjZXQ8X190aW1lcHVuY3Q8X0NoYXJUPiA+KF9fbG9jKTsKICAgICAgY29uc3QgY3R5cGU8X0No
YXJUPiYgX19jdHlwZSA9IHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpOwogICAgICBj
b25zdCBjaGFyX3R5cGUqIF9fZGF5c1s3XTsKICAgICAgX190cC5fTV9kYXlzX2FiYnJldmlhdGVk
KF9fZGF5cyk7CiAgICAgIGludCBfX3RtcHdkYXk7CiAgICAgIGlvc19iYXNlOjppb3N0YXRlIF9f
dG1wZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7CiAgICAgIF9fYmVnID0gX01fZXh0cmFjdF9uYW1l
KF9fYmVnLCBfX2VuZCwgX190bXB3ZGF5LCBfX2RheXMsIDcsCiAgICAgICAgIF9faW8sIF9fdG1w
ZXJyKTsKCgoKCgoKCiAgICAgIGlmICghX190bXBlcnIgJiYgX19iZWcgIT0gX19lbmQpCiB7CiAg
IHNpemVfdCBfX3BvcyA9IF9fdHJhaXRzX3R5cGU6Omxlbmd0aChfX2RheXNbX190bXB3ZGF5XSk7
CiAgIF9fdHAuX01fZGF5cyhfX2RheXMpOwogICBjb25zdCBjaGFyX3R5cGUqIF9fbmFtZSA9IF9f
ZGF5c1tfX3RtcHdkYXldOwogICBpZiAoX19uYW1lW19fcG9zXSA9PSAqX19iZWcpCiAgICAgewoK
ICAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fdHJhaXRzX3R5cGU6Omxlbmd0aChfX25hbWUp
OwogICAgICAgd2hpbGUgKF9fcG9zIDwgX19sZW4gJiYgX19iZWcgIT0gX19lbmQKICAgICAgICYm
IF9fbmFtZVtfX3Bvc10gPT0gKl9fYmVnKQogICsrX19iZWcsICsrX19wb3M7CiAgICAgICBpZiAo
X19sZW4gIT0gX19wb3MpCiAgX190bXBlcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgfQog
fQogICAgICBpZiAoIV9fdG1wZXJyKQogX190bS0+dG1fd2RheSA9IF9fdG1wd2RheTsKICAgICAg
ZWxzZQogX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CgogICAgICBpZiAoX19iZWcgPT0gX19l
bmQpCiBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0OwogICAgICByZXR1cm4gX19iZWc7CiAgICAg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAgICBfSW5J
dGVyCiAgICB0aW1lX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoKICAgIGRvX2dldF9tb250aG5hbWUo
aXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsCiAgICAgICAgICAgICAgICAgICAgIGlv
c19iYXNlJiBfX2lvLCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHRtKiBfX3RtKSBjb25zdAog
ICAgewogICAgICB0eXBlZGVmIGNoYXJfdHJhaXRzPF9DaGFyVD4gX190cmFpdHNfdHlwZTsKICAg
ICAgY29uc3QgbG9jYWxlJiBfX2xvYyA9IF9faW8uX01fZ2V0bG9jKCk7CiAgICAgIGNvbnN0IF9f
dGltZXB1bmN0PF9DaGFyVD4mIF9fdHAgPSB1c2VfZmFjZXQ8X190aW1lcHVuY3Q8X0NoYXJUPiA+
KF9fbG9jKTsKICAgICAgY29uc3QgY3R5cGU8X0NoYXJUPiYgX19jdHlwZSA9IHVzZV9mYWNldDxj
dHlwZTxfQ2hhclQ+ID4oX19sb2MpOwogICAgICBjb25zdCBjaGFyX3R5cGUqIF9fbW9udGhzWzEy
XTsKICAgICAgX190cC5fTV9tb250aHNfYWJicmV2aWF0ZWQoX19tb250aHMpOwogICAgICBpbnQg
X190bXBtb247CiAgICAgIGlvc19iYXNlOjppb3N0YXRlIF9fdG1wZXJyID0gaW9zX2Jhc2U6Omdv
b2RiaXQ7CiAgICAgIF9fYmVnID0gX01fZXh0cmFjdF9uYW1lKF9fYmVnLCBfX2VuZCwgX190bXBt
b24sIF9fbW9udGhzLCAxMiwKICAgICAgICAgX19pbywgX190bXBlcnIpOwoKCgoKCgoKICAgICAg
aWYgKCFfX3RtcGVyciAmJiBfX2JlZyAhPSBfX2VuZCkKIHsKICAgc2l6ZV90IF9fcG9zID0gX190
cmFpdHNfdHlwZTo6bGVuZ3RoKF9fbW9udGhzW19fdG1wbW9uXSk7CiAgIF9fdHAuX01fbW9udGhz
KF9fbW9udGhzKTsKICAgY29uc3QgY2hhcl90eXBlKiBfX25hbWUgPSBfX21vbnRoc1tfX3RtcG1v
bl07CiAgIGlmIChfX25hbWVbX19wb3NdID09ICpfX2JlZykKICAgICB7CgogICAgICAgY29uc3Qg
c2l6ZV90IF9fbGVuID0gX190cmFpdHNfdHlwZTo6bGVuZ3RoKF9fbmFtZSk7CiAgICAgICB3aGls
ZSAoX19wb3MgPCBfX2xlbiAmJiBfX2JlZyAhPSBfX2VuZAogICAgICAgJiYgX19uYW1lW19fcG9z
XSA9PSAqX19iZWcpCiAgKytfX2JlZywgKytfX3BvczsKICAgICAgIGlmIChfX2xlbiAhPSBfX3Bv
cykKICBfX3RtcGVyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICB9CiB9CiAgICAgIGlmICgh
X190bXBlcnIpCiBfX3RtLT50bV9tb24gPSBfX3RtcG1vbjsKICAgICAgZWxzZQogX19lcnIgfD0g
aW9zX2Jhc2U6OmZhaWxiaXQ7CgogICAgICBpZiAoX19iZWcgPT0gX19lbmQpCiBfX2VyciB8PSBp
b3NfYmFzZTo6ZW9mYml0OwogICAgICByZXR1cm4gX19iZWc7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0ZXIKICAgIHRpbWVfZ2V0
PF9DaGFyVCwgX0luSXRlcj46OgogICAgZG9fZ2V0X3llYXIoaXRlcl90eXBlIF9fYmVnLCBpdGVy
X3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogIGlvc19iYXNlOjppb3N0YXRlJiBfX2Vyciwg
dG0qIF9fdG0pIGNvbnN0CiAgICB7CiAgICAgIGNvbnN0IGxvY2FsZSYgX19sb2MgPSBfX2lvLl9N
X2dldGxvYygpOwogICAgICBjb25zdCBjdHlwZTxfQ2hhclQ+JiBfX2N0eXBlID0gdXNlX2ZhY2V0
PGN0eXBlPF9DaGFyVD4gPihfX2xvYyk7CgogICAgICBzaXplX3QgX19pID0gMDsKICAgICAgaW50
IF9fdmFsdWUgPSAwOwogICAgICBmb3IgKDsgX19iZWcgIT0gX19lbmQgJiYgX19pIDwgNDsgKytf
X2JlZywgKytfX2kpCiB7CiAgIGNvbnN0IGNoYXIgX19jID0gX19jdHlwZS5uYXJyb3coKl9fYmVn
LCAnKicpOwogICBpZiAoX19jID49ICcwJyAmJiBfX2MgPD0gJzknKQogICAgIF9fdmFsdWUgPSBf
X3ZhbHVlICogMTAgKyAoX19jIC0gJzAnKTsKICAgZWxzZQogICAgIGJyZWFrOwogfQogICAgICBp
ZiAoX19pID09IDIgfHwgX19pID09IDQpCiBfX3RtLT50bV95ZWFyID0gX19pID09IDIgPyBfX3Zh
bHVlIDogX192YWx1ZSAtIDE5MDA7CiAgICAgIGVsc2UKIF9fZXJyIHw9IGlvc19iYXNlOjpmYWls
Yml0OwoKICAgICAgaWYgKF9fYmVnID09IF9fZW5kKQogX19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJp
dDsKICAgICAgcmV0dXJuIF9fYmVnOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9PdXRJdGVyPgogICAgX091dEl0ZXIKICAgIHRpbWVfcHV0PF9DaGFyVCwgX091
dEl0ZXI+OjoKICAgIHB1dChpdGVyX3R5cGUgX19zLCBpb3NfYmFzZSYgX19pbywgY2hhcl90eXBl
IF9fZmlsbCwgY29uc3QgdG0qIF9fdG0sCiBjb25zdCBfQ2hhclQqIF9fYmVnLCBjb25zdCBfQ2hh
clQqIF9fZW5kKSBjb25zdAogICAgewogICAgICBjb25zdCBsb2NhbGUmIF9fbG9jID0gX19pby5f
TV9nZXRsb2MoKTsKICAgICAgY3R5cGU8X0NoYXJUPiBjb25zdCYgX19jdHlwZSA9IHVzZV9mYWNl
dDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpOwogICAgICBmb3IgKDsgX19iZWcgIT0gX19lbmQ7ICsr
X19iZWcpCiBpZiAoX19jdHlwZS5uYXJyb3coKl9fYmVnLCAwKSAhPSAnJScpCiAgIHsKICAgICAq
X19zID0gKl9fYmVnOwogICAgICsrX19zOwogICB9CiBlbHNlIGlmICgrK19fYmVnICE9IF9fZW5k
KQogICB7CiAgICAgY2hhciBfX2Zvcm1hdDsKICAgICBjaGFyIF9fbW9kID0gMDsKICAgICBjb25z
dCBjaGFyIF9fYyA9IF9fY3R5cGUubmFycm93KCpfX2JlZywgMCk7CiAgICAgaWYgKF9fYyAhPSAn
RScgJiYgX19jICE9ICdPJykKICAgICAgIF9fZm9ybWF0ID0gX19jOwogICAgIGVsc2UgaWYgKCsr
X19iZWcgIT0gX19lbmQpCiAgICAgICB7CiAgX19tb2QgPSBfX2M7CiAgX19mb3JtYXQgPSBfX2N0
eXBlLm5hcnJvdygqX19iZWcsIDApOwogICAgICAgfQogICAgIGVsc2UKICAgICAgIGJyZWFrOwog
ICAgIF9fcyA9IHRoaXMtPmRvX3B1dChfX3MsIF9faW8sIF9fZmlsbCwgX190bSwgX19mb3JtYXQs
IF9fbW9kKTsKICAgfQogZWxzZQogICBicmVhazsKICAgICAgcmV0dXJuIF9fczsKICAgIH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlcj4KICAgIF9PdXRJdGVy
CiAgICB0aW1lX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICBkb19wdXQoaXRlcl90eXBlIF9f
cywgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSwgY29uc3QgdG0qIF9fdG0sCiAgICBjaGFyIF9f
Zm9ybWF0LCBjaGFyIF9fbW9kKSBjb25zdAogICAgewogICAgICBjb25zdCBsb2NhbGUmIF9fbG9j
ID0gX19pby5fTV9nZXRsb2MoKTsKICAgICAgY3R5cGU8X0NoYXJUPiBjb25zdCYgX19jdHlwZSA9
IHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpOwogICAgICBfX3RpbWVwdW5jdDxfQ2hh
clQ+IGNvbnN0JiBfX3RwID0gdXNlX2ZhY2V0PF9fdGltZXB1bmN0PF9DaGFyVD4gPihfX2xvYyk7
CgoKCiAgICAgIGNvbnN0IHNpemVfdCBfX21heGxlbiA9IDEyODsKICAgICAgY2hhcl90eXBlKiBf
X3JlcyA9CiAgICAgICBzdGF0aWNfY2FzdDxjaGFyX3R5cGUqPihfX2J1aWx0aW5fYWxsb2NhKHNp
emVvZihjaGFyX3R5cGUpICogX19tYXhsZW4pKTsKCgoKCgoKICAgICAgY2hhcl90eXBlIF9fZm10
WzRdOwogICAgICBfX2ZtdFswXSA9IF9fY3R5cGUud2lkZW4oJyUnKTsKICAgICAgaWYgKCFfX21v
ZCkKIHsKICAgX19mbXRbMV0gPSBfX2Zvcm1hdDsKICAgX19mbXRbMl0gPSBjaGFyX3R5cGUoKTsK
IH0KICAgICAgZWxzZQogewogICBfX2ZtdFsxXSA9IF9fbW9kOwogICBfX2ZtdFsyXSA9IF9fZm9y
bWF0OwogICBfX2ZtdFszXSA9IGNoYXJfdHlwZSgpOwogfQoKICAgICAgX190cC5fTV9wdXQoX19y
ZXMsIF9fbWF4bGVuLCBfX2ZtdCwgX190bSk7CgoKICAgICAgcmV0dXJuIHN0ZDo6X193cml0ZShf
X3MsIF9fcmVzLCBjaGFyX3RyYWl0czxjaGFyX3R5cGU+OjpsZW5ndGgoX19yZXMpKTsKICAgIH0K
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGludAogICAgY29sbGF0ZTxfQ2hhclQ+
OjpfTV9jb21wYXJlKGNvbnN0IF9DaGFyVCosIGNvbnN0IF9DaGFyVCopIGNvbnN0CiAgICB7IHJl
dHVybiAwOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBzaXplX3QKICAgIGNv
bGxhdGU8X0NoYXJUPjo6X01fdHJhbnNmb3JtKF9DaGFyVCosIGNvbnN0IF9DaGFyVCosIHNpemVf
dCkgY29uc3QKICAgIHsgcmV0dXJuIDA7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgog
ICAgaW50CiAgICBjb2xsYXRlPF9DaGFyVD46OgogICAgZG9fY29tcGFyZShjb25zdCBfQ2hhclQq
IF9fbG8xLCBjb25zdCBfQ2hhclQqIF9faGkxLAogICAgICAgIGNvbnN0IF9DaGFyVCogX19sbzIs
IGNvbnN0IF9DaGFyVCogX19oaTIpIGNvbnN0CiAgICB7CgoKICAgICAgY29uc3Qgc3RyaW5nX3R5
cGUgX19vbmUoX19sbzEsIF9faGkxKTsKICAgICAgY29uc3Qgc3RyaW5nX3R5cGUgX190d28oX19s
bzIsIF9faGkyKTsKCiAgICAgIGNvbnN0IF9DaGFyVCogX19wID0gX19vbmUuY19zdHIoKTsKICAg
ICAgY29uc3QgX0NoYXJUKiBfX3BlbmQgPSBfX29uZS5kYXRhKCkgKyBfX29uZS5sZW5ndGgoKTsK
ICAgICAgY29uc3QgX0NoYXJUKiBfX3EgPSBfX3R3by5jX3N0cigpOwogICAgICBjb25zdCBfQ2hh
clQqIF9fcWVuZCA9IF9fdHdvLmRhdGEoKSArIF9fdHdvLmxlbmd0aCgpOwoKCgoKICAgICAgZm9y
ICg7OykKIHsKICAgY29uc3QgaW50IF9fcmVzID0gX01fY29tcGFyZShfX3AsIF9fcSk7CiAgIGlm
IChfX3JlcykKICAgICByZXR1cm4gX19yZXM7CgogICBfX3AgKz0gY2hhcl90cmFpdHM8X0NoYXJU
Pjo6bGVuZ3RoKF9fcCk7CiAgIF9fcSArPSBjaGFyX3RyYWl0czxfQ2hhclQ+OjpsZW5ndGgoX19x
KTsKICAgaWYgKF9fcCA9PSBfX3BlbmQgJiYgX19xID09IF9fcWVuZCkKICAgICByZXR1cm4gMDsK
ICAgZWxzZSBpZiAoX19wID09IF9fcGVuZCkKICAgICByZXR1cm4gLTE7CiAgIGVsc2UgaWYgKF9f
cSA9PSBfX3FlbmQpCiAgICAgcmV0dXJuIDE7CgogICBfX3ArKzsKICAgX19xKys7CiB9CiAgICB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1lIGNvbGxhdGU8X0NoYXJU
Pjo6c3RyaW5nX3R5cGUKICAgIGNvbGxhdGU8X0NoYXJUPjo6CiAgICBkb190cmFuc2Zvcm0oY29u
c3QgX0NoYXJUKiBfX2xvLCBjb25zdCBfQ2hhclQqIF9faGkpIGNvbnN0CiAgICB7CiAgICAgIHN0
cmluZ190eXBlIF9fcmV0OwoKCiAgICAgIGNvbnN0IHN0cmluZ190eXBlIF9fc3RyKF9fbG8sIF9f
aGkpOwoKICAgICAgY29uc3QgX0NoYXJUKiBfX3AgPSBfX3N0ci5jX3N0cigpOwogICAgICBjb25z
dCBfQ2hhclQqIF9fcGVuZCA9IF9fc3RyLmRhdGEoKSArIF9fc3RyLmxlbmd0aCgpOwoKICAgICAg
c2l6ZV90IF9fbGVuID0gKF9faGkgLSBfX2xvKSAqIDI7CgogICAgICBfQ2hhclQqIF9fYyA9IG5l
dyBfQ2hhclRbX19sZW5dOwoKICAgICAgdHJ5CiB7CgoKCiAgIGZvciAoOzspCiAgICAgewoKICAg
ICAgIHNpemVfdCBfX3JlcyA9IF9NX3RyYW5zZm9ybShfX2MsIF9fcCwgX19sZW4pOwoKCiAgICAg
ICBpZiAoX19yZXMgPj0gX19sZW4pCiAgewogICAgX19sZW4gPSBfX3JlcyArIDE7CiAgICBkZWxl
dGUgW10gX19jLCBfX2MgPSAwOwogICAgX19jID0gbmV3IF9DaGFyVFtfX2xlbl07CiAgICBfX3Jl
cyA9IF9NX3RyYW5zZm9ybShfX2MsIF9fcCwgX19sZW4pOwogIH0KCiAgICAgICBfX3JldC5hcHBl
bmQoX19jLCBfX3Jlcyk7CiAgICAgICBfX3AgKz0gY2hhcl90cmFpdHM8X0NoYXJUPjo6bGVuZ3Ro
KF9fcCk7CiAgICAgICBpZiAoX19wID09IF9fcGVuZCkKICBicmVhazsKCiAgICAgICBfX3ArKzsK
ICAgICAgIF9fcmV0LnB1c2hfYmFjayhfQ2hhclQoKSk7CiAgICAgfQogfQogICAgICBjYXRjaCgu
Li4pCiB7CiAgIGRlbGV0ZSBbXSBfX2M7CiAgIHRocm93OwogfQoKICAgICAgZGVsZXRlIFtdIF9f
YzsKCiAgICAgIHJldHVybiBfX3JldDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
PgogICAgbG9uZwogICAgY29sbGF0ZTxfQ2hhclQ+OjoKICAgIGRvX2hhc2goY29uc3QgX0NoYXJU
KiBfX2xvLCBjb25zdCBfQ2hhclQqIF9faGkpIGNvbnN0CiAgICB7CiAgICAgIHVuc2lnbmVkIGxv
bmcgX192YWwgPSAwOwogICAgICBmb3IgKDsgX19sbyA8IF9faGk7ICsrX19sbykKIF9fdmFsID0g
Kl9fbG8gKyAoKF9fdmFsIDw8IDcpIHwKICAgICAgICAgKF9fdmFsID4+IChudW1lcmljX2xpbWl0
czx1bnNpZ25lZCBsb25nPjo6ZGlnaXRzIC0gNykpKTsKICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGxvbmc+KF9fdmFsKTsKICAgIH0KIyAyNTAzICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMv
bG9jYWxlX2ZhY2V0cy50Y2MiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICB2b2lkCiAgICBfX3BhZDxfQ2hhclQsIF9UcmFpdHM+OjpfU19wYWQoaW9z
X2Jhc2UmIF9faW8sIF9DaGFyVCBfX2ZpbGwsCiAgICAgICBfQ2hhclQqIF9fbmV3cywgY29uc3Qg
X0NoYXJUKiBfX29sZHMsCiAgICAgICBjb25zdCBzdHJlYW1zaXplIF9fbmV3bGVuLAogICAgICAg
Y29uc3Qgc3RyZWFtc2l6ZSBfX29sZGxlbiwgY29uc3QgYm9vbCBfX251bSkKICAgIHsKICAgICAg
Y29uc3Qgc2l6ZV90IF9fcGxlbiA9IHN0YXRpY19jYXN0PHNpemVfdD4oX19uZXdsZW4gLSBfX29s
ZGxlbik7CiAgICAgIGNvbnN0IGlvc19iYXNlOjpmbXRmbGFncyBfX2FkanVzdCA9IF9faW8uZmxh
Z3MoKSAmIGlvc19iYXNlOjphZGp1c3RmaWVsZDsKCgogICAgICBpZiAoX19hZGp1c3QgPT0gaW9z
X2Jhc2U6OmxlZnQpCiB7CiAgIF9UcmFpdHM6OmNvcHkoX19uZXdzLCBjb25zdF9jYXN0PF9DaGFy
VCo+KF9fb2xkcyksIF9fb2xkbGVuKTsKICAgX1RyYWl0czo6YXNzaWduKF9fbmV3cyArIF9fb2xk
bGVuLCBfX3BsZW4sIF9fZmlsbCk7CiAgIHJldHVybjsKIH0KCiAgICAgIHNpemVfdCBfX21vZCA9
IDA7CiAgICAgIGlmIChfX2FkanVzdCA9PSBpb3NfYmFzZTo6aW50ZXJuYWwgJiYgX19udW0pCiB7
CgoKCiAgICAgICAgICBjb25zdCBsb2NhbGUmIF9fbG9jID0gX19pby5fTV9nZXRsb2MoKTsKICAg
Y29uc3QgY3R5cGU8X0NoYXJUPiYgX19jdHlwZSA9IHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4o
X19sb2MpOwoKICAgY29uc3QgYm9vbCBfX3Rlc3RzaWduID0gKF9fY3R5cGUud2lkZW4oJy0nKSA9
PSBfX29sZHNbMF0KICAgICAgIHx8IF9fY3R5cGUud2lkZW4oJysnKSA9PSBfX29sZHNbMF0pOwog
ICBjb25zdCBib29sIF9fdGVzdGhleCA9IChfX2N0eXBlLndpZGVuKCcwJykgPT0gX19vbGRzWzBd
CiAgICAgICYmIF9fb2xkbGVuID4gMQogICAgICAmJiAoX19jdHlwZS53aWRlbigneCcpID09IF9f
b2xkc1sxXQogICAgICAgICAgfHwgX19jdHlwZS53aWRlbignWCcpID09IF9fb2xkc1sxXSkpOwog
ICBpZiAoX190ZXN0aGV4KQogICAgIHsKICAgICAgIF9fbmV3c1swXSA9IF9fb2xkc1swXTsKICAg
ICAgIF9fbmV3c1sxXSA9IF9fb2xkc1sxXTsKICAgICAgIF9fbW9kID0gMjsKICAgICAgIF9fbmV3
cyArPSAyOwogICAgIH0KICAgZWxzZSBpZiAoX190ZXN0c2lnbikKICAgICB7CiAgICAgICBfX25l
d3NbMF0gPSBfX29sZHNbMF07CiAgICAgICBfX21vZCA9IDE7CiAgICAgICArK19fbmV3czsKICAg
ICB9CgogfQogICAgICBfVHJhaXRzOjphc3NpZ24oX19uZXdzLCBfX3BsZW4sIF9fZmlsbCk7CiAg
ICAgIF9UcmFpdHM6OmNvcHkoX19uZXdzICsgX19wbGVuLCBjb25zdF9jYXN0PF9DaGFyVCo+KF9f
b2xkcyArIF9fbW9kKSwKICAgICAgX19vbGRsZW4gLSBfX21vZCk7CiAgICB9CgogIGJvb2wKICBf
X3ZlcmlmeV9ncm91cGluZyhjb25zdCBjaGFyKiBfX2dyb3VwaW5nLCBzaXplX3QgX19ncm91cGlu
Z19zaXplLAogICAgICBjb25zdCBzdHJpbmcmIF9fZ3JvdXBpbmdfdG1wKQogIHsKICAgIGNvbnN0
IHNpemVfdCBfX24gPSBfX2dyb3VwaW5nX3RtcC5zaXplKCkgLSAxOwogICAgY29uc3Qgc2l6ZV90
IF9fbWluID0gc3RkOjptaW4oX19uLCBzaXplX3QoX19ncm91cGluZ19zaXplIC0gMSkpOwogICAg
c2l6ZV90IF9faSA9IF9fbjsKICAgIGJvb2wgX190ZXN0ID0gdHJ1ZTsKCgoKCiAgICBmb3IgKHNp
emVfdCBfX2ogPSAwOyBfX2ogPCBfX21pbiAmJiBfX3Rlc3Q7IC0tX19pLCArK19faikKICAgICAg
X190ZXN0ID0gX19ncm91cGluZ190bXBbX19pXSA9PSBfX2dyb3VwaW5nW19fal07CiAgICBmb3Ig
KDsgX19pICYmIF9fdGVzdDsgLS1fX2kpCiAgICAgIF9fdGVzdCA9IF9fZ3JvdXBpbmdfdG1wW19f
aV0gPT0gX19ncm91cGluZ1tfX21pbl07CgoKCiAgICBpZiAoc3RhdGljX2Nhc3Q8c2lnbmVkIGNo
YXI+KF9fZ3JvdXBpbmdbX19taW5dKSA+IDApCiAgICAgIF9fdGVzdCAmPSBfX2dyb3VwaW5nX3Rt
cFswXSA8PSBfX2dyb3VwaW5nW19fbWluXTsKICAgIHJldHVybiBfX3Rlc3Q7CiAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBfQ2hhclQqCiAgICBfX2FkZF9ncm91cGluZyhfQ2hh
clQqIF9fcywgX0NoYXJUIF9fc2VwLAogICAgIGNvbnN0IGNoYXIqIF9fZ2JlZywgc2l6ZV90IF9f
Z3NpemUsCiAgICAgY29uc3QgX0NoYXJUKiBfX2ZpcnN0LCBjb25zdCBfQ2hhclQqIF9fbGFzdCkK
ICAgIHsKICAgICAgc2l6ZV90IF9faWR4ID0gMDsKICAgICAgc2l6ZV90IF9fY3RyID0gMDsKCiAg
ICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gX19nYmVnW19faWR4XQogICAgICAmJiBzdGF0
aWNfY2FzdDxzaWduZWQgY2hhcj4oX19nYmVnW19faWR4XSkgPiAwKQogewogICBfX2xhc3QgLT0g
X19nYmVnW19faWR4XTsKICAgX19pZHggPCBfX2dzaXplIC0gMSA/ICsrX19pZHggOiArK19fY3Ry
OwogfQoKICAgICAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KQogKl9fcysrID0gKl9fZmlyc3Qr
KzsKCiAgICAgIHdoaWxlIChfX2N0ci0tKQogewogICAqX19zKysgPSBfX3NlcDsKICAgZm9yIChj
aGFyIF9faSA9IF9fZ2JlZ1tfX2lkeF07IF9faSA+IDA7IC0tX19pKQogICAgICpfX3MrKyA9ICpf
X2ZpcnN0Kys7CiB9CgogICAgICB3aGlsZSAoX19pZHgtLSkKIHsKICAgKl9fcysrID0gX19zZXA7
CiAgIGZvciAoY2hhciBfX2kgPSBfX2diZWdbX19pZHhdOyBfX2kgPiAwOyAtLV9faSkKICAgICAq
X19zKysgPSAqX19maXJzdCsrOwogfQoKICAgICAgcmV0dXJuIF9fczsKICAgIH0KCgoKCgogIGV4
dGVybiB0ZW1wbGF0ZSBjbGFzcyBtb25leXB1bmN0PGNoYXIsIGZhbHNlPjsKICBleHRlcm4gdGVt
cGxhdGUgY2xhc3MgbW9uZXlwdW5jdDxjaGFyLCB0cnVlPjsKICBleHRlcm4gdGVtcGxhdGUgY2xh
c3MgbW9uZXlwdW5jdF9ieW5hbWU8Y2hhciwgZmFsc2U+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFz
cyBtb25leXB1bmN0X2J5bmFtZTxjaGFyLCB0cnVlPjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3Mg
bW9uZXlfZ2V0PGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBtb25leV9wdXQ8Y2hhcj47
CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG51bXB1bmN0PGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0
ZSBjbGFzcyBudW1wdW5jdF9ieW5hbWU8Y2hhcj47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG51
bV9nZXQ8Y2hhcj47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG51bV9wdXQ8Y2hhcj47CiAgZXh0
ZXJuIHRlbXBsYXRlIGNsYXNzIF9fdGltZXB1bmN0PGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0ZSBj
bGFzcyB0aW1lX3B1dDxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgdGltZV9wdXRfYnlu
YW1lPGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyB0aW1lX2dldDxjaGFyPjsKICBleHRl
cm4gdGVtcGxhdGUgY2xhc3MgdGltZV9nZXRfYnluYW1lPGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0
ZSBjbGFzcyBtZXNzYWdlczxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbWVzc2FnZXNf
YnluYW1lPGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBjdHlwZV9ieW5hbWU8Y2hhcj47
CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGNvZGVjdnRfYnluYW1lPGNoYXIsIGNoYXIsIG1ic3Rh
dGVfdD47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGNvbGxhdGU8Y2hhcj47CiAgZXh0ZXJuIHRl
bXBsYXRlIGNsYXNzIGNvbGxhdGVfYnluYW1lPGNoYXI+OwoKICBleHRlcm4gdGVtcGxhdGUKICAg
IGNvbnN0IGNvZGVjdnQ8Y2hhciwgY2hhciwgbWJzdGF0ZV90PiYKICAgIHVzZV9mYWNldDxjb2Rl
Y3Z0PGNoYXIsIGNoYXIsIG1ic3RhdGVfdD4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRl
bXBsYXRlCiAgICBjb25zdCBjb2xsYXRlPGNoYXI+JgogICAgdXNlX2ZhY2V0PGNvbGxhdGU8Y2hh
cj4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBudW1wdW5j
dDxjaGFyPiYKICAgIHVzZV9mYWNldDxudW1wdW5jdDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoK
ICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IG51bV9wdXQ8Y2hhcj4mCiAgICB1c2VfZmFjZXQ8
bnVtX3B1dDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNv
bnN0IG51bV9nZXQ8Y2hhcj4mCiAgICB1c2VfZmFjZXQ8bnVtX2dldDxjaGFyPiA+KGNvbnN0IGxv
Y2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IG1vbmV5cHVuY3Q8Y2hhciwgdHJ1
ZT4mCiAgICB1c2VfZmFjZXQ8bW9uZXlwdW5jdDxjaGFyLCB0cnVlPiA+KGNvbnN0IGxvY2FsZSYp
OwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IG1vbmV5cHVuY3Q8Y2hhciwgZmFsc2U+Jgog
ICAgdXNlX2ZhY2V0PG1vbmV5cHVuY3Q8Y2hhciwgZmFsc2U+ID4oY29uc3QgbG9jYWxlJik7Cgog
IGV4dGVybiB0ZW1wbGF0ZQogICAgY29uc3QgbW9uZXlfcHV0PGNoYXI+JgogICAgdXNlX2ZhY2V0
PG1vbmV5X3B1dDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAg
IGNvbnN0IG1vbmV5X2dldDxjaGFyPiYKICAgIHVzZV9mYWNldDxtb25leV9nZXQ8Y2hhcj4gPihj
b25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBfX3RpbWVwdW5jdDxj
aGFyPiYKICAgIHVzZV9mYWNldDxfX3RpbWVwdW5jdDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoK
ICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IHRpbWVfcHV0PGNoYXI+JgogICAgdXNlX2ZhY2V0
PHRpbWVfcHV0PGNoYXI+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAg
Y29uc3QgdGltZV9nZXQ8Y2hhcj4mCiAgICB1c2VfZmFjZXQ8dGltZV9nZXQ8Y2hhcj4gPihjb25z
dCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBtZXNzYWdlczxjaGFyPiYK
ICAgIHVzZV9mYWNldDxtZXNzYWdlczxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4g
dGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNldDxjdHlwZTxjaGFyPiA+KGNvbnN0IGxvY2Fs
ZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNldDxjb2RlY3Z0PGNo
YXIsIGNoYXIsIG1ic3RhdGVfdD4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRl
CiAgICBib29sCiAgICBoYXNfZmFjZXQ8Y29sbGF0ZTxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoK
ICBleHRlcm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNldDxudW1wdW5jdDxjaGFyPiA+
KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNl
dDxudW1fcHV0PGNoYXI+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAg
Ym9vbAogICAgaGFzX2ZhY2V0PG51bV9nZXQ8Y2hhcj4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0
ZXJuIHRlbXBsYXRlCiAgICBib29sCiAgICBoYXNfZmFjZXQ8bW9uZXlwdW5jdDxjaGFyPiA+KGNv
bnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNldDxt
b25leV9wdXQ8Y2hhcj4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBi
b29sCiAgICBoYXNfZmFjZXQ8bW9uZXlfZ2V0PGNoYXI+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4
dGVybiB0ZW1wbGF0ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0PF9fdGltZXB1bmN0PGNoYXI+ID4o
Y29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0
PHRpbWVfcHV0PGNoYXI+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAg
Ym9vbAogICAgaGFzX2ZhY2V0PHRpbWVfZ2V0PGNoYXI+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4
dGVybiB0ZW1wbGF0ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0PG1lc3NhZ2VzPGNoYXI+ID4oY29u
c3QgbG9jYWxlJik7CgoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbW9uZXlwdW5jdDx3Y2hhcl90
LCBmYWxzZT47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG1vbmV5cHVuY3Q8d2NoYXJfdCwgdHJ1
ZT47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG1vbmV5cHVuY3RfYnluYW1lPHdjaGFyX3QsIGZh
bHNlPjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbW9uZXlwdW5jdF9ieW5hbWU8d2NoYXJfdCwg
dHJ1ZT47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG1vbmV5X2dldDx3Y2hhcl90PjsKICBleHRl
cm4gdGVtcGxhdGUgY2xhc3MgbW9uZXlfcHV0PHdjaGFyX3Q+OwogIGV4dGVybiB0ZW1wbGF0ZSBj
bGFzcyBudW1wdW5jdDx3Y2hhcl90PjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbnVtcHVuY3Rf
YnluYW1lPHdjaGFyX3Q+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBudW1fZ2V0PHdjaGFyX3Q+
OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBudW1fcHV0PHdjaGFyX3Q+OwogIGV4dGVybiB0ZW1w
bGF0ZSBjbGFzcyBfX3RpbWVwdW5jdDx3Y2hhcl90PjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3Mg
dGltZV9wdXQ8d2NoYXJfdD47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIHRpbWVfcHV0X2J5bmFt
ZTx3Y2hhcl90PjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgdGltZV9nZXQ8d2NoYXJfdD47CiAg
ZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIHRpbWVfZ2V0X2J5bmFtZTx3Y2hhcl90PjsKICBleHRlcm4g
dGVtcGxhdGUgY2xhc3MgbWVzc2FnZXM8d2NoYXJfdD47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNz
IG1lc3NhZ2VzX2J5bmFtZTx3Y2hhcl90PjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgY3R5cGVf
YnluYW1lPHdjaGFyX3Q+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBjb2RlY3Z0X2J5bmFtZTx3
Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBjb2xsYXRl
PHdjaGFyX3Q+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBjb2xsYXRlX2J5bmFtZTx3Y2hhcl90
PjsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1i
c3RhdGVfdD4mCiAgICB1c2VfZmFjZXQ8Y29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+
ID4obG9jYWxlIGNvbnN0Jik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgY29uc3QgY29sbGF0ZTx3
Y2hhcl90PiYKICAgIHVzZV9mYWNldDxjb2xsYXRlPHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7
CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgY29uc3QgbnVtcHVuY3Q8d2NoYXJfdD4mCiAgICB1c2Vf
ZmFjZXQ8bnVtcHVuY3Q8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBs
YXRlCiAgICBjb25zdCBudW1fcHV0PHdjaGFyX3Q+JgogICAgdXNlX2ZhY2V0PG51bV9wdXQ8d2No
YXJfdD4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBudW1f
Z2V0PHdjaGFyX3Q+JgogICAgdXNlX2ZhY2V0PG51bV9nZXQ8d2NoYXJfdD4gPihjb25zdCBsb2Nh
bGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBtb25leXB1bmN0PHdjaGFyX3QsIHRy
dWU+JgogICAgdXNlX2ZhY2V0PG1vbmV5cHVuY3Q8d2NoYXJfdCwgdHJ1ZT4gPihjb25zdCBsb2Nh
bGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBtb25leXB1bmN0PHdjaGFyX3QsIGZh
bHNlPiYKICAgIHVzZV9mYWNldDxtb25leXB1bmN0PHdjaGFyX3QsIGZhbHNlPiA+KGNvbnN0IGxv
Y2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IG1vbmV5X3B1dDx3Y2hhcl90PiYK
ICAgIHVzZV9mYWNldDxtb25leV9wdXQ8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0
ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBtb25leV9nZXQ8d2NoYXJfdD4mCiAgICB1c2VfZmFjZXQ8
bW9uZXlfZ2V0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQog
ICAgY29uc3QgX190aW1lcHVuY3Q8d2NoYXJfdD4mCiAgICB1c2VfZmFjZXQ8X190aW1lcHVuY3Q8
d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCB0
aW1lX3B1dDx3Y2hhcl90PiYKICAgIHVzZV9mYWNldDx0aW1lX3B1dDx3Y2hhcl90PiA+KGNvbnN0
IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IHRpbWVfZ2V0PHdjaGFyX3Q+
JgogICAgdXNlX2ZhY2V0PHRpbWVfZ2V0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4
dGVybiB0ZW1wbGF0ZQogICAgY29uc3QgbWVzc2FnZXM8d2NoYXJfdD4mCiAgICB1c2VfZmFjZXQ8
bWVzc2FnZXM8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsKCiBleHRlcm4gdGVtcGxhdGUKICAg
IGJvb2wKICAgIGhhc19mYWNldDxjdHlwZTx3Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpOwoKICBl
eHRlcm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNldDxjb2RlY3Z0PHdjaGFyX3QsIGNo
YXIsIG1ic3RhdGVfdD4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBi
b29sCiAgICBoYXNfZmFjZXQ8Y29sbGF0ZTx3Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpOwoKICBl
eHRlcm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNldDxudW1wdW5jdDx3Y2hhcl90PiA+
KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNl
dDxudW1fcHV0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQog
ICAgYm9vbAogICAgaGFzX2ZhY2V0PG51bV9nZXQ8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsK
CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBib29sCiAgICBoYXNfZmFjZXQ8bW9uZXlwdW5jdDx3Y2hh
cl90PiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhh
c19mYWNldDxtb25leV9wdXQ8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRl
bXBsYXRlCiAgICBib29sCiAgICBoYXNfZmFjZXQ8bW9uZXlfZ2V0PHdjaGFyX3Q+ID4oY29uc3Qg
bG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0PF9fdGlt
ZXB1bmN0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAg
Ym9vbAogICAgaGFzX2ZhY2V0PHRpbWVfcHV0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7Cgog
IGV4dGVybiB0ZW1wbGF0ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0PHRpbWVfZ2V0PHdjaGFyX3Q+
ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgYm9vbAogICAgaGFzX2Zh
Y2V0PG1lc3NhZ2VzPHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7CgoKCn0KIyA0NyAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9sb2NhbGUiIDIgMwojIDQ3ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2JpdHMvb3N0cmVhbS50Y2MiIDIgMwoKbmFtZXNwYWNlIHN0ZCB7CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBf
VHJhaXRzPjo6c2VudHJ5OjoKICAgIHNlbnRyeShiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4mIF9fb3MpCiAgICA6IF9NX29rKGZhbHNlKSwgX01fb3MoX19vcykKICAgIHsKCiAgICAgIGlm
IChfX29zLnRpZSgpICYmIF9fb3MuZ29vZCgpKQogX19vcy50aWUoKS0+Zmx1c2goKTsKCiAgICAg
IGlmIChfX29zLmdvb2QoKSkKIF9NX29rID0gdHJ1ZTsKICAgICAgZWxzZQogX19vcy5zZXRzdGF0
ZShpb3NfYmFzZTo6ZmFpbGJpdCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+CiAgICAgIGJh
c2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+OjoKICAgICAgX01faW5zZXJ0KF9WYWx1ZVQgX192KQogICAgICB7CiBzZW50cnkg
X19jZXJiKCp0aGlzKTsKIGlmIChfX2NlcmIpCiAgIHsKICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBf
X2VyciA9IGlvc19iYXNlOjppb3N0YXRlKGlvc19iYXNlOjpnb29kYml0KTsKICAgICB0cnkKICAg
ICAgIHsKICBjb25zdCBfX251bV9wdXRfdHlwZSYgX19ucCA9IF9fY2hlY2tfZmFjZXQodGhpcy0+
X01fbnVtX3B1dCk7CiAgaWYgKF9fbnAucHV0KCp0aGlzLCAqdGhpcywgdGhpcy0+ZmlsbCgpLCBf
X3YpLmZhaWxlZCgpKQogICAgX19lcnIgfD0gaW9zX2Jhc2U6OmJhZGJpdDsKICAgICAgIH0KICAg
ICBjYXRjaCguLi4pCiAgICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQp
OyB9CiAgICAgaWYgKF9fZXJyKQogICAgICAgdGhpcy0+c2V0c3RhdGUoX19lcnIpOwogICB9CiBy
ZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzPgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNf
b3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIG9wZXJhdG9yPDwoc2hvcnQgX19uKQogICAg
ewoKCiAgICAgIGNvbnN0IGlvc19iYXNlOjpmbXRmbGFncyBfX2ZtdCA9IHRoaXMtPmZsYWdzKCkg
JiBpb3NfYmFzZTo6YmFzZWZpZWxkOwogICAgICBpZiAoX19mbXQgPT0gaW9zX2Jhc2U6Om9jdCB8
fCBfX2ZtdCA9PSBpb3NfYmFzZTo6aGV4KQogcmV0dXJuIF9NX2luc2VydChzdGF0aWNfY2FzdDxs
b25nPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oX19uKSkpOwogICAgICBlbHNlCiByZXR1
cm4gX01faW5zZXJ0KHN0YXRpY19jYXN0PGxvbmc+KF9fbikpOwogICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19vc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mCiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgb3Bl
cmF0b3I8PChpbnQgX19uKQogICAgewoKCiAgICAgIGNvbnN0IGlvc19iYXNlOjpmbXRmbGFncyBf
X2ZtdCA9IHRoaXMtPmZsYWdzKCkgJiBpb3NfYmFzZTo6YmFzZWZpZWxkOwogICAgICBpZiAoX19m
bXQgPT0gaW9zX2Jhc2U6Om9jdCB8fCBfX2ZtdCA9PSBpb3NfYmFzZTo6aGV4KQogcmV0dXJuIF9N
X2luc2VydChzdGF0aWNfY2FzdDxsb25nPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KF9fbikp
KTsKICAgICAgZWxzZQogcmV0dXJuIF9NX2luc2VydChzdGF0aWNfY2FzdDxsb25nPihfX24pKTsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAg
YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+OjoKICAgIG9wZXJhdG9yPDwoX19zdHJlYW1idWZfdHlwZSogX19zYmluKQogICAg
ewogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjppb3N0YXRlKGlvc19i
YXNlOjpnb29kYml0KTsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcyk7CiAgICAgIGlmIChfX2Nl
cmIgJiYgX19zYmluKQogewogICB0cnkKICAgICB7CiAgICAgICBpZiAoIV9fY29weV9zdHJlYW1i
dWZzKF9fc2JpbiwgdGhpcy0+cmRidWYoKSkpCiAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7
CiAgICAgfQogICBjYXRjaCguLi4pCiAgICAgeyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6
ZmFpbGJpdCk7IH0KIH0KICAgICAgZWxzZSBpZiAoIV9fc2JpbikKIF9fZXJyIHw9IGlvc19iYXNl
OjpiYWRiaXQ7CiAgICAgIGlmIChfX2VycikKIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKICAgICAg
cmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBiYXNpY19v
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgcHV0KGNoYXJfdHlwZSBfX2MpCiAgICB7CgoK
CgoKCiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMpOwogICAgICBpZiAoX19jZXJiKQogewogICBp
b3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjppb3N0YXRlKGlvc19iYXNlOjpnb29k
Yml0KTsKICAgdHJ5CiAgICAgewogICAgICAgY29uc3QgaW50X3R5cGUgX19wdXQgPSB0aGlzLT5y
ZGJ1ZigpLT5zcHV0YyhfX2MpOwogICAgICAgaWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShf
X3B1dCwgdHJhaXRzX3R5cGU6OmVvZigpKSkKICBfX2VyciB8PSBpb3NfYmFzZTo6YmFkYml0Owog
ICAgIH0KICAgY2F0Y2ggKC4uLikKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpi
YWRiaXQpOyB9CiAgIGlmIChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiB9CiAg
ICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFz
aWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIHdyaXRlKGNvbnN0IF9DaGFyVCogX19z
LCBzdHJlYW1zaXplIF9fbikKICAgIHsKCgoKCgoKCiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMp
OwogICAgICBpZiAoX19jZXJiKQogewogICB0cnkKICAgICB7IF9NX3dyaXRlKF9fcywgX19uKTsg
fQogICBjYXRjaCAoLi4uKQogICAgIHsgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJp
dCk7IH0KIH0KICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4mCiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgZmx1c2goKQogICAg
ewoKCgogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjppb3N0YXRlKGlv
c19iYXNlOjpnb29kYml0KTsKICAgICAgdHJ5CiB7CiAgIGlmICh0aGlzLT5yZGJ1ZigpICYmIHRo
aXMtPnJkYnVmKCktPnB1YnN5bmMoKSA9PSAtMSkKICAgICBfX2VyciB8PSBpb3NfYmFzZTo6YmFk
Yml0OwogfQogICAgICBjYXRjaCguLi4pCiB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpi
YWRiaXQpOyB9CiAgICAgIGlmIChfX2VycikKIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKICAgICAg
cmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICB0eXBlbmFtZSBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OnBv
c190eXBlCiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgdGVsbHAoKQog
ICAgewogICAgICBwb3NfdHlwZSBfX3JldCA9IHBvc190eXBlKC0xKTsKICAgICAgdHJ5CiB7CiAg
IGlmICghdGhpcy0+ZmFpbCgpKQogICAgIF9fcmV0ID0gdGhpcy0+cmRidWYoKS0+cHVic2Vla29m
ZigwLCBpb3NfYmFzZTo6Y3VyLCBpb3NfYmFzZTo6b3V0KTsKIH0KICAgICAgY2F0Y2goLi4uKQog
eyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogICAgICByZXR1cm4gX19y
ZXQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4K
ICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPjo6CiAgICBzZWVrcChwb3NfdHlwZSBfX3BvcykKICAgIHsKICAgICAgaW9z
X2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6aW9zdGF0ZShpb3NfYmFzZTo6Z29vZGJp
dCk7CiAgICAgIHRyeQogewogICBpZiAoIXRoaXMtPmZhaWwoKSkKICAgICB7CgoKICAgICAgIGNv
bnN0IHBvc190eXBlIF9fcCA9IHRoaXMtPnJkYnVmKCktPnB1YnNlZWtwb3MoX19wb3MsCiAgICAg
ICAgICAgIGlvc19iYXNlOjpvdXQpOwoKCiAgICAgICBpZiAoX19wID09IHBvc190eXBlKG9mZl90
eXBlKC0xKSkpCiAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgfQogfQogICAgICBj
YXRjaCguLi4pCiB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgICAg
IGlmIChfX2VycikKIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKICAgICAgcmV0dXJuICp0aGlzOwog
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBi
YXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz46OgogICAgc2Vla3Aob2ZmX3R5cGUgX19vZmYsIGlvc19iYXNlOjpzZWVrZGlyIF9f
ZGlyKQogICAgewogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjppb3N0
YXRlKGlvc19iYXNlOjpnb29kYml0KTsKICAgICAgdHJ5CiB7CiAgIGlmICghdGhpcy0+ZmFpbCgp
KQogICAgIHsKCgogICAgICAgY29uc3QgcG9zX3R5cGUgX19wID0gdGhpcy0+cmRidWYoKS0+cHVi
c2Vla29mZihfX29mZiwgX19kaXIsCiAgICAgICAgICAgIGlvc19iYXNlOjpvdXQpOwoKCiAgICAg
ICBpZiAoX19wID09IHBvc190eXBlKG9mZl90eXBlKC0xKSkpCiAgX19lcnIgfD0gaW9zX2Jhc2U6
OmZhaWxiaXQ7CiAgICAgfQogfQogICAgICBjYXRjaCguLi4pCiB7IHRoaXMtPl9NX3NldHN0YXRl
KGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgICAgIGlmIChfX2VycikKIHRoaXMtPnNldHN0YXRlKF9f
ZXJyKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
CiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIGNv
bnN0IGNoYXIqIF9fcykKICAgIHsKICAgICAgaWYgKCFfX3MpCiBfX291dC5zZXRzdGF0ZShpb3Nf
YmFzZTo6YmFkYml0KTsKICAgICAgZWxzZQogewoKCiAgIGNvbnN0IHNpemVfdCBfX2NsZW4gPSBj
aGFyX3RyYWl0czxjaGFyPjo6bGVuZ3RoKF9fcyk7CiAgIF9DaGFyVCogX193cyA9IDA7CiAgIHRy
eQogICAgIHsKICAgICAgIF9fd3MgPSBuZXcgX0NoYXJUW19fY2xlbl07CiAgICAgICBmb3IgKHNp
emVfdCBfX2kgPSAwOyBfX2kgPCBfX2NsZW47ICsrX19pKQogIF9fd3NbX19pXSA9IF9fb3V0Lndp
ZGVuKF9fc1tfX2ldKTsKICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7CiAgICAgICBkZWxldGUg
W10gX193czsKICAgICAgIF9fb3V0Ll9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwogICAg
ICAgcmV0dXJuIF9fb3V0OwogICAgIH0KCiAgIHRyeQogICAgIHsKICAgICAgIF9fb3N0cmVhbV9p
bnNlcnQoX19vdXQsIF9fd3MsIF9fY2xlbik7CiAgICAgICBkZWxldGUgW10gX193czsKICAgICB9
CiAgIGNhdGNoKC4uLikKICAgICB7CiAgICAgICBkZWxldGUgW10gX193czsKICAgICAgIHRocm93
OwogICAgIH0KIH0KICAgICAgcmV0dXJuIF9fb3V0OwogICAgfQoKCgoKCiAgZXh0ZXJuIHRlbXBs
YXRlIGNsYXNzIGJhc2ljX29zdHJlYW08Y2hhcj47CiAgZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0m
IGVuZGwob3N0cmVhbSYpOwogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBlbmRzKG9zdHJlYW0m
KTsKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgZmx1c2gob3N0cmVhbSYpOwogIGV4dGVybiB0
ZW1wbGF0ZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mLCBjaGFyKTsKICBleHRlcm4gdGVt
cGxhdGUgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiwgdW5zaWduZWQgY2hhcik7CiAgZXh0
ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYsIHNpZ25lZCBjaGFyKTsK
ICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiwgY29uc3QgY2hh
ciopOwogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mLCBjb25z
dCB1bnNpZ25lZCBjaGFyKik7CiAgZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIG9wZXJhdG9yPDwo
b3N0cmVhbSYsIGNvbnN0IHNpZ25lZCBjaGFyKik7CgogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFt
JiBvc3RyZWFtOjpfTV9pbnNlcnQobG9uZyk7CiAgZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIG9z
dHJlYW06Ol9NX2luc2VydCh1bnNpZ25lZCBsb25nKTsKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVh
bSYgb3N0cmVhbTo6X01faW5zZXJ0KGJvb2wpOwoKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYg
b3N0cmVhbTo6X01faW5zZXJ0KGxvbmcgbG9uZyk7CiAgZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0m
IG9zdHJlYW06Ol9NX2luc2VydCh1bnNpZ25lZCBsb25nIGxvbmcpOwoKICBleHRlcm4gdGVtcGxh
dGUgb3N0cmVhbSYgb3N0cmVhbTo6X01faW5zZXJ0KGRvdWJsZSk7CiAgZXh0ZXJuIHRlbXBsYXRl
IG9zdHJlYW0mIG9zdHJlYW06Ol9NX2luc2VydChsb25nIGRvdWJsZSk7CiAgZXh0ZXJuIHRlbXBs
YXRlIG9zdHJlYW0mIG9zdHJlYW06Ol9NX2luc2VydChjb25zdCB2b2lkKik7CgoKICBleHRlcm4g
dGVtcGxhdGUgY2xhc3MgYmFzaWNfb3N0cmVhbTx3Y2hhcl90PjsKICBleHRlcm4gdGVtcGxhdGUg
d29zdHJlYW0mIGVuZGwod29zdHJlYW0mKTsKICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0mIGVu
ZHMod29zdHJlYW0mKTsKICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0mIGZsdXNoKHdvc3RyZWFt
Jik7CiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiBvcGVyYXRvcjw8KHdvc3RyZWFtJiwgd2No
YXJfdCk7CiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiBvcGVyYXRvcjw8KHdvc3RyZWFtJiwg
Y2hhcik7CiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiBvcGVyYXRvcjw8KHdvc3RyZWFtJiwg
Y29uc3Qgd2NoYXJfdCopOwogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYgb3BlcmF0b3I8PCh3
b3N0cmVhbSYsIGNvbnN0IGNoYXIqKTsKCiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiB3b3N0
cmVhbTo6X01faW5zZXJ0KGxvbmcpOwogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYgd29zdHJl
YW06Ol9NX2luc2VydCh1bnNpZ25lZCBsb25nKTsKICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0m
IHdvc3RyZWFtOjpfTV9pbnNlcnQoYm9vbCk7CgogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYg
d29zdHJlYW06Ol9NX2luc2VydChsb25nIGxvbmcpOwogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVh
bSYgd29zdHJlYW06Ol9NX2luc2VydCh1bnNpZ25lZCBsb25nIGxvbmcpOwoKICBleHRlcm4gdGVt
cGxhdGUgd29zdHJlYW0mIHdvc3RyZWFtOjpfTV9pbnNlcnQoZG91YmxlKTsKICBleHRlcm4gdGVt
cGxhdGUgd29zdHJlYW0mIHdvc3RyZWFtOjpfTV9pbnNlcnQobG9uZyBkb3VibGUpOwogIGV4dGVy
biB0ZW1wbGF0ZSB3b3N0cmVhbSYgd29zdHJlYW06Ol9NX2luc2VydChjb25zdCB2b2lkKik7CgoK
Cn0KIyA1NzMgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvb3N0cmVhbSIgMiAzCiMgNzEgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvaXRlcmF0b3IiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvaXN0cmVhbSIgMSAzCiMgNDAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaXN0cmVhbSIgMwoj
ZGVmaW5lIF9HTElCQ1hYX0lTVFJFQU0gMQoKICAgICAgIAojIDQzICIvdXNyL2luY2x1ZGUvYysr
LzQuMi4xL2lzdHJlYW0iIDMKCgoKCm5hbWVzcGFjZSBzdGQgewojIDU3ICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2lzdHJlYW0iIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICBjbGFzcyBiYXNpY19pc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgYmFzaWNf
aW9zPF9DaGFyVCwgX1RyYWl0cz4KICAgIHsKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX0No
YXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjppbnRfdHlwZSBp
bnRfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpwb3NfdHlwZSBwb3NfdHlw
ZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpvZmZfdHlwZSBvZmZfdHlwZTsKICAg
ICAgdHlwZWRlZiBfVHJhaXRzIHRyYWl0c190eXBlOwoKCiAgICAgIHR5cGVkZWYgYmFzaWNfc3Ry
ZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4gX19zdHJlYW1idWZfdHlwZTsKICAgICAgdHlwZWRlZiBi
YXNpY19pb3M8X0NoYXJULCBfVHJhaXRzPiBfX2lvc190eXBlOwogICAgICB0eXBlZGVmIGJhc2lj
X2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiBu
dW1fZ2V0PF9DaGFyVCwgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQsIF9UcmFpdHM+ID4KICAg
ICAgICBfX251bV9nZXRfdHlwZTsKICAgICAgdHlwZWRlZiBjdHlwZTxfQ2hhclQ+IF9fY3R5cGVf
dHlwZTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVDIsIHR5cGVuYW1lIF9UcmFpdHMy
PgogICAgICAgIGZyaWVuZCBiYXNpY19pc3RyZWFtPF9DaGFyVDIsIF9UcmFpdHMyPiYKICAgICAg
ICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08X0NoYXJUMiwgX1RyYWl0czI+JiwgX0NoYXJUMiYp
OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUMiwgdHlwZW5hbWUgX1RyYWl0czI+CiAg
ICAgICAgZnJpZW5kIGJhc2ljX2lzdHJlYW08X0NoYXJUMiwgX1RyYWl0czI+JgogICAgICAgIG9w
ZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hhclQyLCBfVHJhaXRzMj4mLCBfQ2hhclQyKik7Cgog
ICAgcHJvdGVjdGVkOgoKCgoKCgoKICAgICAgc3RyZWFtc2l6ZSBfTV9nY291bnQ7CgogICAgcHVi
bGljOgojIDEwMyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pc3RyZWFtIiAzCiAgICAgIGV4cGxp
Y2l0CiAgICAgIGJhc2ljX2lzdHJlYW0oX19zdHJlYW1idWZfdHlwZSogX19zYik6IF9NX2djb3Vu
dChzdHJlYW1zaXplKDApKQogICAgICB7IHRoaXMtPmluaXQoX19zYik7IH0KCgoKCgoKICAgICAg
dmlydHVhbAogICAgICB+YmFzaWNfaXN0cmVhbSgpCiAgICAgIHsgX01fZ2NvdW50ID0gc3RyZWFt
c2l6ZSgwKTsgfQoKCiAgICAgIGNsYXNzIHNlbnRyeTsKICAgICAgZnJpZW5kIGNsYXNzIHNlbnRy
eTsKIyAxMzAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaXN0cmVhbSIgMwogICAgICBfX2lzdHJl
YW1fdHlwZSYKICAgICAgb3BlcmF0b3I+PihfX2lzdHJlYW1fdHlwZSYgKCpfX3BmKShfX2lzdHJl
YW1fdHlwZSYpKQogICAgICB7IHJldHVybiBfX3BmKCp0aGlzKTsgfQoKICAgICAgX19pc3RyZWFt
X3R5cGUmCiAgICAgIG9wZXJhdG9yPj4oX19pb3NfdHlwZSYgKCpfX3BmKShfX2lvc190eXBlJikp
CiAgICAgIHsKIF9fcGYoKnRoaXMpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBfX2lz
dHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I+Pihpb3NfYmFzZSYgKCpfX3BmKShpb3NfYmFzZSYp
KQogICAgICB7CiBfX3BmKCp0aGlzKTsKIHJldHVybiAqdGhpczsKICAgICAgfQojIDE3NyAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9pc3RyZWFtIiAzCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAg
ICBvcGVyYXRvcj4+KGJvb2wmIF9fbikKICAgICAgeyByZXR1cm4gX01fZXh0cmFjdChfX24pOyB9
CgogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I+PihzaG9ydCYgX19uKTsKCiAg
ICAgIF9faXN0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcj4+KHVuc2lnbmVkIHNob3J0JiBfX24p
CiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3QoX19uKTsgfQoKICAgICAgX19pc3RyZWFtX3R5cGUm
CiAgICAgIG9wZXJhdG9yPj4oaW50JiBfX24pOwoKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAg
IG9wZXJhdG9yPj4odW5zaWduZWQgaW50JiBfX24pCiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3Qo
X19uKTsgfQoKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPj4obG9uZyYgX19u
KQogICAgICB7IHJldHVybiBfTV9leHRyYWN0KF9fbik7IH0KCiAgICAgIF9faXN0cmVhbV90eXBl
JgogICAgICBvcGVyYXRvcj4+KHVuc2lnbmVkIGxvbmcmIF9fbikKICAgICAgeyByZXR1cm4gX01f
ZXh0cmFjdChfX24pOyB9CgoKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPj4o
bG9uZyBsb25nJiBfX24pCiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3QoX19uKTsgfQoKICAgICAg
X19pc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPj4odW5zaWduZWQgbG9uZyBsb25nJiBfX24p
CiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3QoX19uKTsgfQoKCiAgICAgIF9faXN0cmVhbV90eXBl
JgogICAgICBvcGVyYXRvcj4+KGZsb2F0JiBfX2YpCiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3Qo
X19mKTsgfQoKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPj4oZG91YmxlJiBf
X2YpCiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3QoX19mKTsgfQoKICAgICAgX19pc3RyZWFtX3R5
cGUmCiAgICAgIG9wZXJhdG9yPj4obG9uZyBkb3VibGUmIF9fZikKICAgICAgeyByZXR1cm4gX01f
ZXh0cmFjdChfX2YpOyB9CgogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I+Pih2
b2lkKiYgX19wKQogICAgICB7IHJldHVybiBfTV9leHRyYWN0KF9fcCk7IH0KIyAyNDkgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvaXN0cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAg
b3BlcmF0b3I+PihfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiKTsKIyAyNTkgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvaXN0cmVhbSIgMwogICAgICBzdHJlYW1zaXplCiAgICAgIGdjb3VudCgpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIF9NX2djb3VudDsgfQojIDI5MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9pc3RyZWFtIiAzCiAgICAgIGludF90eXBlCiAgICAgIGdldCgpOwojIDMwNSAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9pc3RyZWFtIiAzCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICBnZXQo
Y2hhcl90eXBlJiBfX2MpOwojIDMzMiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pc3RyZWFtIiAz
CiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICBnZXQoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNp
emUgX19uLCBjaGFyX3R5cGUgX19kZWxpbSk7CiMgMzQzICIvdXNyL2luY2x1ZGUvYysrLzQuMi4x
L2lzdHJlYW0iIDMKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIGdldChjaGFyX3R5cGUqIF9f
cywgc3RyZWFtc2l6ZSBfX24pCiAgICAgIHsgcmV0dXJuIHRoaXMtPmdldChfX3MsIF9fbiwgdGhp
cy0+d2lkZW4oJ1xuJykpOyB9CiMgMzY2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2lzdHJlYW0i
IDMKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIGdldChfX3N0cmVhbWJ1Zl90eXBlJiBfX3Ni
LCBjaGFyX3R5cGUgX19kZWxpbSk7CiMgMzc2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2lzdHJl
YW0iIDMKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIGdldChfX3N0cmVhbWJ1Zl90eXBlJiBf
X3NiKQogICAgICB7IHJldHVybiB0aGlzLT5nZXQoX19zYiwgdGhpcy0+d2lkZW4oJ1xuJykpOyB9
CiMgNDA1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2lzdHJlYW0iIDMKICAgICAgX19pc3RyZWFt
X3R5cGUmCiAgICAgIGdldGxpbmUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uLCBjaGFy
X3R5cGUgX19kZWxpbSk7CiMgNDE2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2lzdHJlYW0iIDMK
ICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIGdldGxpbmUoY2hhcl90eXBlKiBfX3MsIHN0cmVh
bXNpemUgX19uKQogICAgICB7IHJldHVybiB0aGlzLT5nZXRsaW5lKF9fcywgX19uLCB0aGlzLT53
aWRlbignXG4nKSk7IH0KIyA0NDAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaXN0cmVhbSIgMwog
ICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgaWdub3JlKCk7CgogICAgICBfX2lzdHJlYW1fdHlw
ZSYKICAgICAgaWdub3JlKHN0cmVhbXNpemUgX19uKTsKCiAgICAgIF9faXN0cmVhbV90eXBlJgog
ICAgICBpZ25vcmUoc3RyZWFtc2l6ZSBfX24sIGludF90eXBlIF9fZGVsaW0pOwojIDQ1NyAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9pc3RyZWFtIiAzCiAgICAgIGludF90eXBlCiAgICAgIHBlZWso
KTsKIyA0NzUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaXN0cmVhbSIgMwogICAgICBfX2lzdHJl
YW1fdHlwZSYKICAgICAgcmVhZChjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pOwojIDQ5
NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pc3RyZWFtIiAzCiAgICAgIHN0cmVhbXNpemUKICAg
ICAgcmVhZHNvbWUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKTsKIyA1MTAgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvaXN0cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAg
cHV0YmFjayhjaGFyX3R5cGUgX19jKTsKIyA1MjUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaXN0
cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgdW5nZXQoKTsKIyA1NDMgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvaXN0cmVhbSIgMwogICAgICBpbnQKICAgICAgc3luYygpOwojIDU1
NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pc3RyZWFtIiAzCiAgICAgIHBvc190eXBlCiAgICAg
IHRlbGxnKCk7CiMgNTcyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2lzdHJlYW0iIDMKICAgICAg
X19pc3RyZWFtX3R5cGUmCiAgICAgIHNlZWtnKHBvc190eXBlKTsKIyA1ODggIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvaXN0cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgc2Vla2co
b2ZmX3R5cGUsIGlvc19iYXNlOjpzZWVrZGlyKTsKCgogICAgcHJvdGVjdGVkOgogICAgICBleHBs
aWNpdAogICAgICBiYXNpY19pc3RyZWFtKCk6IF9NX2djb3VudChzdHJlYW1zaXplKDApKSB7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+CiAgICAgICAgX19pc3RyZWFtX3R5cGUm
CiAgICAgICAgX01fZXh0cmFjdChfVmFsdWVUJiBfX3YpOwogICAgfTsKCgogIHRlbXBsYXRlPD4K
ICAgIGJhc2ljX2lzdHJlYW08Y2hhcj4mCiAgICBiYXNpY19pc3RyZWFtPGNoYXI+OjoKICAgIGdl
dGxpbmUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uLCBjaGFyX3R5cGUgX19kZWxpbSk7
CgogIHRlbXBsYXRlPD4KICAgIGJhc2ljX2lzdHJlYW08Y2hhcj4mCiAgICBiYXNpY19pc3RyZWFt
PGNoYXI+OjoKICAgIGlnbm9yZShzdHJlYW1zaXplIF9fbik7CgogIHRlbXBsYXRlPD4KICAgIGJh
c2ljX2lzdHJlYW08Y2hhcj4mCiAgICBiYXNpY19pc3RyZWFtPGNoYXI+OjoKICAgIGlnbm9yZShz
dHJlYW1zaXplIF9fbiwgaW50X3R5cGUgX19kZWxpbSk7CgoKICB0ZW1wbGF0ZTw+CiAgICBiYXNp
Y19pc3RyZWFtPHdjaGFyX3Q+JgogICAgYmFzaWNfaXN0cmVhbTx3Y2hhcl90Pjo6CiAgICBnZXRs
aW5lKGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9fbiwgY2hhcl90eXBlIF9fZGVsaW0pOwoK
ICB0ZW1wbGF0ZTw+CiAgICBiYXNpY19pc3RyZWFtPHdjaGFyX3Q+JgogICAgYmFzaWNfaXN0cmVh
bTx3Y2hhcl90Pjo6CiAgICBpZ25vcmUoc3RyZWFtc2l6ZSBfX24pOwoKICB0ZW1wbGF0ZTw+CiAg
ICBiYXNpY19pc3RyZWFtPHdjaGFyX3Q+JgogICAgYmFzaWNfaXN0cmVhbTx3Y2hhcl90Pjo6CiAg
ICBpZ25vcmUoc3RyZWFtc2l6ZSBfX24sIGludF90eXBlIF9fZGVsaW0pOwojIDY0NSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9pc3RyZWFtIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzPgogICAgY2xhc3MgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
OjpzZW50cnkKICAgIHsKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX1RyYWl0cyB0cmFpdHNf
dHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiBfX3N0
cmVhbWJ1Zl90eXBlOwogICAgICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRz
PiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6
X19jdHlwZV90eXBlIF9fY3R5cGVfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRz
OjppbnRfdHlwZSBfX2ludF90eXBlOwojIDY3NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pc3Ry
ZWFtIiAzCiAgICAgIGV4cGxpY2l0CiAgICAgIHNlbnRyeShiYXNpY19pc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mIF9faXMsIGJvb2wgX19ub3NraXB3cyA9IGZhbHNlKTsKIyA2ODcgIi91c3IvaW5j
bHVkZS9jKysvNC4yLjEvaXN0cmVhbSIgMwogICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAg
ICAgeyByZXR1cm4gX01fb2s7IH0KCiAgICBwcml2YXRlOgogICAgICBib29sIF9NX29rOwogICAg
fTsKIyA3MDcgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaXN0cmVhbSIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
JiBfX2luLCBfQ2hhclQmIF9fYyk7CgogIHRlbXBsYXRlPGNsYXNzIF9UcmFpdHM+CiAgICBpbmxp
bmUgYmFzaWNfaXN0cmVhbTxjaGFyLCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0
cmVhbTxjaGFyLCBfVHJhaXRzPiYgX19pbiwgdW5zaWduZWQgY2hhciYgX19jKQogICAgeyByZXR1
cm4gKF9faW4gPj4gcmVpbnRlcnByZXRfY2FzdDxjaGFyJj4oX19jKSk7IH0KCiAgdGVtcGxhdGU8
Y2xhc3MgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19pc3RyZWFtPGNoYXIsIF9UcmFpdHM+Jgog
ICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPGNoYXIsIF9UcmFpdHM+JiBfX2luLCBzaWduZWQg
Y2hhciYgX19jKQogICAgeyByZXR1cm4gKF9faW4gPj4gcmVpbnRlcnByZXRfY2FzdDxjaGFyJj4o
X19jKSk7IH0KIyA3NDggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvaXN0cmVhbSIgMwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+JiBfX2luLCBfQ2hhclQqIF9fcyk7CgoKICB0ZW1wbGF0ZTw+CiAgICBiYXNpY19pc3Ry
ZWFtPGNoYXI+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPGNoYXI+JiBfX2luLCBjaGFy
KiBfX3MpOwoKICB0ZW1wbGF0ZTxjbGFzcyBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX2lzdHJl
YW08Y2hhciwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08Y2hhciwgX1Ry
YWl0cz4mIF9faW4sIHVuc2lnbmVkIGNoYXIqIF9fcykKICAgIHsgcmV0dXJuIChfX2luID4+IHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KF9fcykpOyB9CgogIHRlbXBsYXRlPGNsYXNzIF9UcmFpdHM+
CiAgICBpbmxpbmUgYmFzaWNfaXN0cmVhbTxjaGFyLCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4o
YmFzaWNfaXN0cmVhbTxjaGFyLCBfVHJhaXRzPiYgX19pbiwgc2lnbmVkIGNoYXIqIF9fcykKICAg
IHsgcmV0dXJuIChfX2luID4+IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KF9fcykpOyB9CiMgNzc1
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2lzdHJlYW0iIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBjbGFzcyBiYXNpY19pb3N0cmVhbQogICAgOiBw
dWJsaWMgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+LAogICAgICBwdWJsaWMgYmFzaWNf
b3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+CiAgICB7CiAgICBwdWJsaWM6CgoKCiAgICAgIHR5cGVk
ZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjppbnRf
dHlwZSBpbnRfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpwb3NfdHlwZSBw
b3NfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpvZmZfdHlwZSBvZmZfdHlw
ZTsKICAgICAgdHlwZWRlZiBfVHJhaXRzIHRyYWl0c190eXBlOwoKCiAgICAgIHR5cGVkZWYgYmFz
aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVm
IGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKCgoKCgoKCiAg
ICAgIGV4cGxpY2l0CiAgICAgIGJhc2ljX2lvc3RyZWFtKGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQs
IF9UcmFpdHM+KiBfX3NiKQogICAgICA6IF9faXN0cmVhbV90eXBlKCksIF9fb3N0cmVhbV90eXBl
KCkKICAgICAgeyB0aGlzLT5pbml0KF9fc2IpOyB9CgoKCgogICAgICB2aXJ0dWFsCiAgICAgIH5i
YXNpY19pb3N0cmVhbSgpIHsgfQoKICAgIHByb3RlY3RlZDoKICAgICAgZXhwbGljaXQKICAgICAg
YmFzaWNfaW9zdHJlYW0oKSA6IF9faXN0cmVhbV90eXBlKCksIF9fb3N0cmVhbV90eXBlKCkKICAg
ICAgeyB9CiAgICB9OwojIDgzOCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pc3RyZWFtIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgd3MoYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JiBfX2lzKTsKCn0KCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9pc3RyZWFt
LnRjYyIgMSAzCiMgNDIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9pc3RyZWFtLnRjYyIg
MwojZGVmaW5lIF9JU1RSRUFNX1RDQyAxCgogICAgICAgCiMgNDUgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvYml0cy9pc3RyZWFtLnRjYyIgMwoKCgoKbmFtZXNwYWNlIHN0ZCB7CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPjo6c2VudHJ5OjoKICAgIHNlbnRyeShiYXNpY19pc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mIF9faW4sIGJvb2wgX19ub3NraXApIDogX01fb2soZmFsc2UpCiAgICB7CiAgICAg
IGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omlvc3RhdGUoaW9zX2Jhc2U6Omdv
b2RiaXQpOwogICAgICBpZiAoX19pbi5nb29kKCkpCiB7CiAgIGlmIChfX2luLnRpZSgpKQogICAg
IF9faW4udGllKCktPmZsdXNoKCk7CiAgIGlmICghX19ub3NraXAgJiYgKF9faW4uZmxhZ3MoKSAm
IGlvc19iYXNlOjpza2lwd3MpKQogICAgIHsKICAgICAgIGNvbnN0IF9faW50X3R5cGUgX19lb2Yg
PSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0gX19p
bi5yZGJ1ZigpOwogICAgICAgX19pbnRfdHlwZSBfX2MgPSBfX3NiLT5zZ2V0YygpOwoKICAgICAg
IGNvbnN0IF9fY3R5cGVfdHlwZSYgX19jdCA9IF9fY2hlY2tfZmFjZXQoX19pbi5fTV9jdHlwZSk7
CiAgICAgICB3aGlsZSAoIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKQogICAg
ICAgJiYgX19jdC5pcyhjdHlwZV9iYXNlOjpzcGFjZSwKICAgIHRyYWl0c190eXBlOjp0b19jaGFy
X3R5cGUoX19jKSkpCiAgX19jID0gX19zYi0+c25leHRjKCk7CgoKCgogICAgICAgaWYgKHRyYWl0
c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKSkKICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9m
Yml0OwogICAgIH0KIH0KCiAgICAgIGlmIChfX2luLmdvb2QoKSAmJiBfX2VyciA9PSBpb3NfYmFz
ZTo6Z29vZGJpdCkKIF9NX29rID0gdHJ1ZTsKICAgICAgZWxzZQogewogICBfX2VyciB8PSBpb3Nf
YmFzZTo6ZmFpbGJpdDsKICAgX19pbi5zZXRzdGF0ZShfX2Vycik7CiB9CiAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9WYWx1ZVQ+CiAgICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgICAg
YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgICAgX01fZXh0cmFjdChfVmFsdWVU
JiBfX3YpCiAgICAgIHsKIHNlbnRyeSBfX2NlcmIoKnRoaXMsIGZhbHNlKTsKIGlmIChfX2NlcmIp
CiAgIHsKICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjppb3N0YXRlKGlv
c19iYXNlOjpnb29kYml0KTsKICAgICB0cnkKICAgICAgIHsKICBjb25zdCBfX251bV9nZXRfdHlw
ZSYgX19uZyA9IF9fY2hlY2tfZmFjZXQodGhpcy0+X01fbnVtX2dldCk7CiAgX19uZy5nZXQoKnRo
aXMsIDAsICp0aGlzLCBfX2VyciwgX192KTsKICAgICAgIH0KICAgICBjYXRjaCguLi4pCiAgICAg
ICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgICAgaWYgKF9fZXJy
KQogICAgICAgdGhpcy0+c2V0c3RhdGUoX19lcnIpOwogICB9CiByZXR1cm4gKnRoaXM7CiAgICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFz
aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+OjoKICAgIG9wZXJhdG9yPj4oc2hvcnQmIF9fbikKICAgIHsKCgogICAgICBsb25nIF9f
bDsKICAgICAgX01fZXh0cmFjdChfX2wpOwogICAgICBpZiAoIXRoaXMtPmZhaWwoKSkKIHsKICAg
aWYgKG51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWluKCkgPD0gX19sCiAgICAgICAmJiBfX2wgPD0g
bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptYXgoKSkKICAgICBfX24gPSBfX2w7CiAgIGVsc2UKICAg
ICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7CiB9CiAgICAgIHJldHVybiAqdGhp
czsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgog
ICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+OjoKICAgIG9wZXJhdG9yPj4oaW50JiBfX24pCiAgICB7CgoKICAgICAgbG9u
ZyBfX2w7CiAgICAgIF9NX2V4dHJhY3QoX19sKTsKICAgICAgaWYgKCF0aGlzLT5mYWlsKCkpCiB7
CiAgIGlmIChudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSA8PSBfX2wKICAgICAgICYmIF9fbCA8
PSBudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkKICAgICBfX24gPSBfX2w7CiAgIGVsc2UKICAg
ICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7CiB9CiAgICAgIHJldHVybiAqdGhp
czsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgog
ICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+OjoKICAgIG9wZXJhdG9yPj4oX19zdHJlYW1idWZfdHlwZSogX19zYm91dCkK
ICAgIHsKICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6aW9zdGF0ZShp
b3NfYmFzZTo6Z29vZGJpdCk7CiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIGZhbHNlKTsKICAg
ICAgaWYgKF9fY2VyYiAmJiBfX3Nib3V0KQogewogICB0cnkKICAgICB7CiAgICAgICBib29sIF9f
aW5lb2Y7CiAgICAgICBpZiAoIV9fY29weV9zdHJlYW1idWZzX2VvZih0aGlzLT5yZGJ1ZigpLCBf
X3Nib3V0LCBfX2luZW9mKSkKICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICAgIGlm
IChfX2luZW9mKQogIF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgfQogICBjYXRjaCgu
Li4pCiAgICAgeyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7IH0KIH0KICAg
ICAgZWxzZSBpZiAoIV9fc2JvdXQpCiBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICAg
aWYgKF9fZXJyKQogdGhpcy0+c2V0c3RhdGUoX19lcnIpOwogICAgICByZXR1cm4gKnRoaXM7CiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHR5
cGVuYW1lIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6aW50X3R5cGUKICAgIGJhc2lj
X2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6CiAgICBnZXQodm9pZCkKICAgIHsKICAgICAgY29u
c3QgaW50X3R5cGUgX19lb2YgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiAgICAgIGludF90eXBlIF9f
YyA9IF9fZW9mOwogICAgICBfTV9nY291bnQgPSAwOwogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBf
X2VyciA9IGlvc19iYXNlOjppb3N0YXRlKGlvc19iYXNlOjpnb29kYml0KTsKICAgICAgc2VudHJ5
IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIHRyeQogICAgIHsK
ICAgICAgIF9fYyA9IHRoaXMtPnJkYnVmKCktPnNidW1wYygpOwoKICAgICAgIGlmICghdHJhaXRz
X3R5cGU6OmVxX2ludF90eXBlKF9fYywgX19lb2YpKQogIF9NX2djb3VudCA9IDE7CiAgICAgICBl
bHNlCiAgX19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsKICAgICB9CiAgIGNhdGNoKC4uLikKICAg
ICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiB9CiAgICAgIGlmICgh
X01fZ2NvdW50KQogX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgIGlmIChfX2VycikK
IHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKICAgICAgcmV0dXJuIF9fYzsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAg
IGdldChjaGFyX3R5cGUmIF9fYykKICAgIHsKICAgICAgX01fZ2NvdW50ID0gMDsKICAgICAgaW9z
X2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6aW9zdGF0ZShpb3NfYmFzZTo6Z29vZGJp
dCk7CiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRydWUpOwogICAgICBpZiAoX19jZXJiKQog
ewogICB0cnkKICAgICB7CiAgICAgICBjb25zdCBpbnRfdHlwZSBfX2NiID0gdGhpcy0+cmRidWYo
KS0+c2J1bXBjKCk7CgogICAgICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jYiwg
dHJhaXRzX3R5cGU6OmVvZigpKSkKICB7CiAgICBfTV9nY291bnQgPSAxOwogICAgX19jID0gdHJh
aXRzX3R5cGU6OnRvX2NoYXJfdHlwZShfX2NiKTsKICB9CiAgICAgICBlbHNlCiAgX19lcnIgfD0g
aW9zX2Jhc2U6OmVvZmJpdDsKICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7IHRoaXMtPl9NX3Nl
dHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiB9CiAgICAgIGlmICghX01fZ2NvdW50KQogX19l
cnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgIGlmIChfX2VycikKIHRoaXMtPnNldHN0YXRl
KF9fZXJyKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4mCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgZ2V0KGNoYXJfdHlw
ZSogX19zLCBzdHJlYW1zaXplIF9fbiwgY2hhcl90eXBlIF9fZGVsaW0pCiAgICB7CiAgICAgIF9N
X2djb3VudCA9IDA7CiAgICAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omlv
c3RhdGUoaW9zX2Jhc2U6Omdvb2RiaXQpOwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVl
KTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAgdHJ5CiAgICAgewogICAgICAgY29uc3QgaW50X3R5
cGUgX19pZGVsaW0gPSB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoX19kZWxpbSk7CiAgICAgICBj
b25zdCBpbnRfdHlwZSBfX2VvZiA9IHRyYWl0c190eXBlOjplb2YoKTsKICAgICAgIF9fc3RyZWFt
YnVmX3R5cGUqIF9fc2IgPSB0aGlzLT5yZGJ1ZigpOwogICAgICAgaW50X3R5cGUgX19jID0gX19z
Yi0+c2dldGMoKTsKCiAgICAgICB3aGlsZSAoX01fZ2NvdW50ICsgMSA8IF9fbgogICAgICAgJiYg
IXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKQogICAgICAgJiYgIXRyYWl0c190
eXBlOjplcV9pbnRfdHlwZShfX2MsIF9faWRlbGltKSkKICB7CiAgICAqX19zKysgPSB0cmFpdHNf
dHlwZTo6dG9fY2hhcl90eXBlKF9fYyk7CiAgICArK19NX2djb3VudDsKICAgIF9fYyA9IF9fc2It
PnNuZXh0YygpOwogIH0KICAgICAgIGlmICh0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCBf
X2VvZikpCiAgX19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsKICAgICB9CiAgIGNhdGNoKC4uLikK
ICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiB9CgoKICAgICAg
aWYgKF9fbiA+IDApCiAqX19zID0gY2hhcl90eXBlKCk7CiAgICAgIGlmICghX01fZ2NvdW50KQog
X19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgIGlmIChfX2VycikKIHRoaXMtPnNldHN0
YXRlKF9fZXJyKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz4mCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgZ2V0KF9fc3Ry
ZWFtYnVmX3R5cGUmIF9fc2IsIGNoYXJfdHlwZSBfX2RlbGltKQogICAgewogICAgICBfTV9nY291
bnQgPSAwOwogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjppb3N0YXRl
KGlvc19iYXNlOjpnb29kYml0KTsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAg
ICAgIGlmIChfX2NlcmIpCiB7CiAgIHRyeQogICAgIHsKICAgICAgIGNvbnN0IGludF90eXBlIF9f
aWRlbGltID0gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKF9fZGVsaW0pOwogICAgICAgY29uc3Qg
aW50X3R5cGUgX19lb2YgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiAgICAgICBfX3N0cmVhbWJ1Zl90
eXBlKiBfX3RoaXNfc2IgPSB0aGlzLT5yZGJ1ZigpOwogICAgICAgaW50X3R5cGUgX19jID0gX190
aGlzX3NiLT5zZ2V0YygpOwogICAgICAgY2hhcl90eXBlIF9fYzIgPSB0cmFpdHNfdHlwZTo6dG9f
Y2hhcl90eXBlKF9fYyk7CgogICAgICAgd2hpbGUgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUo
X19jLCBfX2VvZikKICAgICAgICYmICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCBfX2lk
ZWxpbSkKICAgICAgICYmICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19zYi5zcHV0YyhfX2My
KSwgX19lb2YpKQogIHsKICAgICsrX01fZ2NvdW50OwogICAgX19jID0gX190aGlzX3NiLT5zbmV4
dGMoKTsKICAgIF9fYzIgPSB0cmFpdHNfdHlwZTo6dG9fY2hhcl90eXBlKF9fYyk7CiAgfQogICAg
ICAgaWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKSkKICBfX2VyciB8PSBp
b3NfYmFzZTo6ZW9mYml0OwogICAgIH0KICAgY2F0Y2goLi4uKQogICAgIHsgdGhpcy0+X01fc2V0
c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KIH0KICAgICAgaWYgKCFfTV9nY291bnQpCiBfX2Vy
ciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICAgaWYgKF9fZXJyKQogdGhpcy0+c2V0c3RhdGUo
X19lcnIpOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRz
PiYKICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6CiAgICBnZXRsaW5lKGNoYXJf
dHlwZSogX19zLCBzdHJlYW1zaXplIF9fbiwgY2hhcl90eXBlIF9fZGVsaW0pCiAgICB7CiAgICAg
IF9NX2djb3VudCA9IDA7CiAgICAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6
Omlvc3RhdGUoaW9zX2Jhc2U6Omdvb2RiaXQpOwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0
cnVlKTsKICAgICAgaWYgKF9fY2VyYikKICAgICAgICB7CiAgICAgICAgICB0cnkKICAgICAgICAg
ICAgewogICAgICAgICAgICAgIGNvbnN0IGludF90eXBlIF9faWRlbGltID0gdHJhaXRzX3R5cGU6
OnRvX2ludF90eXBlKF9fZGVsaW0pOwogICAgICAgICAgICAgIGNvbnN0IGludF90eXBlIF9fZW9m
ID0gdHJhaXRzX3R5cGU6OmVvZigpOwogICAgICAgICAgICAgIF9fc3RyZWFtYnVmX3R5cGUqIF9f
c2IgPSB0aGlzLT5yZGJ1ZigpOwogICAgICAgICAgICAgIGludF90eXBlIF9fYyA9IF9fc2ItPnNn
ZXRjKCk7CgogICAgICAgICAgICAgIHdoaWxlIChfTV9nY291bnQgKyAxIDwgX19uCiAgICAgICAg
ICAgICAgICAgICAgICYmICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikKICAg
ICAgICAgICAgICAgICAgICAgJiYgIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9faWRl
bGltKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgKl9fcysrID0gdHJhaXRz
X3R5cGU6OnRvX2NoYXJfdHlwZShfX2MpOwogICAgICAgICAgICAgICAgICBfX2MgPSBfX3NiLT5z
bmV4dGMoKTsKICAgICAgICAgICAgICAgICAgKytfTV9nY291bnQ7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgaWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKSkK
ICAgICAgICAgICAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6
OmVxX2ludF90eXBlKF9fYywgX19pZGVsaW0pKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgIF9fc2ItPnNidW1wYygpOwogICAgICAgICAgICAgICAgICAgICAgKytf
TV9nY291bnQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIGNhdGNoKC4uLikKICAgICAgICAgICAgeyB0
aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogICAgICAgIH0KCgogICAgICBp
ZiAoX19uID4gMCkKICpfX3MgPSBjaGFyX3R5cGUoKTsKICAgICAgaWYgKCFfTV9nY291bnQpCiAg
ICAgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgIGlmIChfX2VycikKICAgICAg
ICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCgoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
OjoKICAgIGlnbm9yZSh2b2lkKQogICAgewogICAgICBfTV9nY291bnQgPSAwOwogICAgICBzZW50
cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAgaW9zX2Jhc2U6
Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6aW9zdGF0ZShpb3NfYmFzZTo6Z29vZGJpdCk7CiAg
IHRyeQogICAgIHsKICAgICAgIGNvbnN0IGludF90eXBlIF9fZW9mID0gdHJhaXRzX3R5cGU6OmVv
ZigpOwogICAgICAgX19zdHJlYW1idWZfdHlwZSogX19zYiA9IHRoaXMtPnJkYnVmKCk7CgogICAg
ICAgaWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX3NiLT5zYnVtcGMoKSwgX19lb2YpKQog
IF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgICBlbHNlCiAgX01fZ2NvdW50ID0gMTsK
ICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpi
YWRiaXQpOyB9CiAgIGlmIChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiB9CiAg
ICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFz
aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIGlnbm9yZShzdHJlYW1zaXplIF9fbikK
ICAgIHsKICAgICAgX01fZ2NvdW50ID0gMDsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1
ZSk7CiAgICAgIGlmIChfX2NlcmIgJiYgX19uID4gMCkKICAgICAgICB7CiAgICAgICAgICBpb3Nf
YmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjppb3N0YXRlKGlvc19iYXNlOjpnb29kYml0
KTsKICAgICAgICAgIHRyeQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgY29uc3QgaW50X3R5
cGUgX19lb2YgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiAgICAgICAgICAgICAgX19zdHJlYW1idWZf
dHlwZSogX19zYiA9IHRoaXMtPnJkYnVmKCk7CiAgICAgICAgICAgICAgaW50X3R5cGUgX19jID0g
X19zYi0+c2dldGMoKTsKIyA0MjkgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9pc3RyZWFt
LnRjYyIgMwogICAgICAgYm9vbCBfX2xhcmdlX2lnbm9yZSA9IGZhbHNlOwogICAgICAgd2hpbGUg
KHRydWUpCiAgewogICAgd2hpbGUgKF9NX2djb3VudCA8IF9fbgogICAgJiYgIXRyYWl0c190eXBl
OjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKSkKICAgICAgewogICAgICAgICsrX01fZ2NvdW50Owog
ICAgICAgIF9fYyA9IF9fc2ItPnNuZXh0YygpOwogICAgICB9CiAgICBpZiAoX19uID09IG51bWVy
aWNfbGltaXRzPHN0cmVhbXNpemU+OjptYXgoKQogICAgICAgICYmICF0cmFpdHNfdHlwZTo6ZXFf
aW50X3R5cGUoX19jLCBfX2VvZikpCiAgICAgIHsKICAgICAgICBfTV9nY291bnQgPSBudW1lcmlj
X2xpbWl0czxzdHJlYW1zaXplPjo6bWluKCk7CiAgICAgICAgX19sYXJnZV9pZ25vcmUgPSB0cnVl
OwogICAgICB9CiAgICBlbHNlCiAgICAgIGJyZWFrOwogIH0KCiAgICAgICBpZiAoX19sYXJnZV9p
Z25vcmUpCiAgX01fZ2NvdW50ID0gbnVtZXJpY19saW1pdHM8c3RyZWFtc2l6ZT46Om1heCgpOwoK
ICAgICAgIGlmICh0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAgICAgICAg
ICAgICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0OwogICAgICAgICAgICB9CiAgICAgICAg
ICBjYXRjaCguLi4pCiAgICAgICAgICAgIHsgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJh
ZGJpdCk7IH0KICAgICAgICAgIGlmIChfX2VycikKICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUo
X19lcnIpOwogICAgICAgIH0KICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgaWdu
b3JlKHN0cmVhbXNpemUgX19uLCBpbnRfdHlwZSBfX2RlbGltKQogICAgewogICAgICBfTV9nY291
bnQgPSAwOwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2Vy
YiAmJiBfX24gPiAwKQogICAgICAgIHsKICAgICAgICAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJy
ID0gaW9zX2Jhc2U6Omlvc3RhdGUoaW9zX2Jhc2U6Omdvb2RiaXQpOwogICAgICAgICAgdHJ5CiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICBjb25zdCBpbnRfdHlwZSBfX2VvZiA9IHRyYWl0c190
eXBlOjplb2YoKTsKICAgICAgICAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0gdGhpcy0+
cmRidWYoKTsKICAgICAgICAgICAgICBpbnRfdHlwZSBfX2MgPSBfX3NiLT5zZ2V0YygpOwoKCiAg
ICAgICBib29sIF9fbGFyZ2VfaWdub3JlID0gZmFsc2U7CiAgICAgICB3aGlsZSAodHJ1ZSkKICB7
CiAgICB3aGlsZSAoX01fZ2NvdW50IDwgX19uCiAgICAmJiAhdHJhaXRzX3R5cGU6OmVxX2ludF90
eXBlKF9fYywgX19lb2YpCiAgICAmJiAhdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywgX19k
ZWxpbSkpCiAgICAgIHsKICAgICAgICArK19NX2djb3VudDsKICAgICAgICBfX2MgPSBfX3NiLT5z
bmV4dGMoKTsKICAgICAgfQogICAgaWYgKF9fbiA9PSBudW1lcmljX2xpbWl0czxzdHJlYW1zaXpl
Pjo6bWF4KCkKICAgICAgICAmJiAhdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywgX19lb2Yp
CiAgICAgICAgJiYgIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9fZGVsaW0pKQogICAg
ICB7CiAgICAgICAgX01fZ2NvdW50ID0gbnVtZXJpY19saW1pdHM8c3RyZWFtc2l6ZT46Om1pbigp
OwogICAgICAgIF9fbGFyZ2VfaWdub3JlID0gdHJ1ZTsKICAgICAgfQogICAgZWxzZQogICAgICBi
cmVhazsKICB9CgogICAgICAgaWYgKF9fbGFyZ2VfaWdub3JlKQogIF9NX2djb3VudCA9IG51bWVy
aWNfbGltaXRzPHN0cmVhbXNpemU+OjptYXgoKTsKCiAgICAgICAgICAgICAgaWYgKHRyYWl0c190
eXBlOjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKSkKICAgICAgICAgICAgICAgIF9fZXJyIHw9IGlv
c19iYXNlOjplb2ZiaXQ7CiAgICAgICBlbHNlIGlmICh0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUo
X19jLCBfX2RlbGltKSkKICB7CiAgICBpZiAoX01fZ2NvdW50IDwgbnVtZXJpY19saW1pdHM8c3Ry
ZWFtc2l6ZT46Om1heCgpKQogICAgICArK19NX2djb3VudDsKICAgIF9fc2ItPnNidW1wYygpOwog
IH0KICAgICAgICAgICAgfQogICAgICAgICAgY2F0Y2goLi4uKQogICAgICAgICAgICB7IHRoaXMt
Pl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgICAgICAgICBpZiAoX19lcnIpCiAg
ICAgICAgICAgIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKICAgICAgICB9CiAgICAgIHJldHVybiAq
dGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
PgogICAgdHlwZW5hbWUgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjppbnRfdHlwZQog
ICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIHBlZWsodm9pZCkKICAgIHsK
ICAgICAgaW50X3R5cGUgX19jID0gdHJhaXRzX3R5cGU6OmVvZigpOwogICAgICBfTV9nY291bnQg
PSAwOwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2VyYikK
IHsKICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6aW9zdGF0ZShpb3NfYmFz
ZTo6Z29vZGJpdCk7CiAgIHRyeQogICAgIHsKICAgICAgIF9fYyA9IHRoaXMtPnJkYnVmKCktPnNn
ZXRjKCk7CiAgICAgICBpZiAodHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywgdHJhaXRzX3R5
cGU6OmVvZigpKSkKICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0OwogICAgIH0KICAgY2F0Y2go
Li4uKQogICAgIHsgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KICAgaWYg
KF9fZXJyKQogICAgIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKIH0KICAgICAgcmV0dXJuIF9fYzsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAg
YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+OjoKICAgIHJlYWQoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAg
ewogICAgICBfTV9nY291bnQgPSAwOwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsK
ICAgICAgaWYgKF9fY2VyYikKIHsKICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFz
ZTo6aW9zdGF0ZShpb3NfYmFzZTo6Z29vZGJpdCk7CiAgIHRyeQogICAgIHsKICAgICAgIF9NX2dj
b3VudCA9IHRoaXMtPnJkYnVmKCktPnNnZXRuKF9fcywgX19uKTsKICAgICAgIGlmIChfTV9nY291
bnQgIT0gX19uKQogIF9fZXJyIHw9IChpb3NfYmFzZTo6ZW9mYml0IHwgaW9zX2Jhc2U6OmZhaWxi
aXQpOwogICAgIH0KICAgY2F0Y2goLi4uKQogICAgIHsgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jh
c2U6OmJhZGJpdCk7IH0KICAgaWYgKF9fZXJyKQogICAgIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsK
IH0KICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdHJlYW1zaXplCiAgICBiYXNpY19pc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz46OgogICAgcmVhZHNvbWUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19u
KQogICAgewogICAgICBfTV9nY291bnQgPSAwOwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0
cnVlKTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBp
b3NfYmFzZTo6aW9zdGF0ZShpb3NfYmFzZTo6Z29vZGJpdCk7CiAgIHRyeQogICAgIHsKCiAgICAg
ICBjb25zdCBzdHJlYW1zaXplIF9fbnVtID0gdGhpcy0+cmRidWYoKS0+aW5fYXZhaWwoKTsKICAg
ICAgIGlmIChfX251bSA+IDApCiAgX01fZ2NvdW50ID0gdGhpcy0+cmRidWYoKS0+c2dldG4oX19z
LCBzdGQ6Om1pbihfX251bSwgX19uKSk7CiAgICAgICBlbHNlIGlmIChfX251bSA9PSAtMSkKICBf
X2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0OwogICAgIH0KICAgY2F0Y2goLi4uKQogICAgIHsgdGhp
cy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KICAgaWYgKF9fZXJyKQogICAgIHRo
aXMtPnNldHN0YXRlKF9fZXJyKTsKIH0KICAgICAgcmV0dXJuIF9NX2djb3VudDsKICAgIH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
OjoKICAgIHB1dGJhY2soY2hhcl90eXBlIF9fYykKICAgIHsKCgogICAgICBfTV9nY291bnQgPSAw
OwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2VyYikKIHsK
ICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6aW9zdGF0ZShpb3NfYmFzZTo6
Z29vZGJpdCk7CiAgIHRyeQogICAgIHsKICAgICAgIGNvbnN0IGludF90eXBlIF9fZW9mID0gdHJh
aXRzX3R5cGU6OmVvZigpOwogICAgICAgX19zdHJlYW1idWZfdHlwZSogX19zYiA9IHRoaXMtPnJk
YnVmKCk7CiAgICAgICBpZiAoIV9fc2IKICAgIHx8IHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShf
X3NiLT5zcHV0YmFja2MoX19jKSwgX19lb2YpKQogIF9fZXJyIHw9IGlvc19iYXNlOjpiYWRiaXQ7
CiAgICAgfQogICBjYXRjaCguLi4pCiAgICAgeyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6
YmFkYml0KTsgfQogICBpZiAoX19lcnIpCiAgICAgdGhpcy0+c2V0c3RhdGUoX19lcnIpOwogfQog
ICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGJh
c2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6CiAgICB1bmdldCh2b2lkKQogICAgewoKCiAg
ICAgIF9NX2djb3VudCA9IDA7CiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRydWUpOwogICAg
ICBpZiAoX19jZXJiKQogewogICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpp
b3N0YXRlKGlvc19iYXNlOjpnb29kYml0KTsKICAgdHJ5CiAgICAgewogICAgICAgY29uc3QgaW50
X3R5cGUgX19lb2YgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiAgICAgICBfX3N0cmVhbWJ1Zl90eXBl
KiBfX3NiID0gdGhpcy0+cmRidWYoKTsKICAgICAgIGlmICghX19zYgogICAgfHwgdHJhaXRzX3R5
cGU6OmVxX2ludF90eXBlKF9fc2ItPnN1bmdldGMoKSwgX19lb2YpKQogIF9fZXJyIHw9IGlvc19i
YXNlOjpiYWRiaXQ7CiAgICAgfQogICBjYXRjaCguLi4pCiAgICAgeyB0aGlzLT5fTV9zZXRzdGF0
ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogICBpZiAoX19lcnIpCiAgICAgdGhpcy0+c2V0c3RhdGUo
X19lcnIpOwogfQogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGludAogICAgYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+OjoKICAgIHN5bmModm9pZCkKICAgIHsKCgogICAgICBpbnQgX19yZXQgPSAt
MTsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7
CiAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omlvc3RhdGUoaW9zX2Jhc2U6
Omdvb2RiaXQpOwogICB0cnkKICAgICB7CiAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0g
dGhpcy0+cmRidWYoKTsKICAgICAgIGlmIChfX3NiKQogIHsKICAgIGlmIChfX3NiLT5wdWJzeW5j
KCkgPT0gLTEpCiAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjpiYWRiaXQ7CiAgICBlbHNlCiAgICAg
IF9fcmV0ID0gMDsKICB9CiAgICAgfQogICBjYXRjaCguLi4pCiAgICAgeyB0aGlzLT5fTV9zZXRz
dGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogICBpZiAoX19lcnIpCiAgICAgdGhpcy0+c2V0c3Rh
dGUoX19lcnIpOwogfQogICAgICByZXR1cm4gX19yZXQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHR5cGVuYW1lIGJhc2ljX2lzdHJlYW08
X0NoYXJULCBfVHJhaXRzPjo6cG9zX3R5cGUKICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPjo6CiAgICB0ZWxsZyh2b2lkKQogICAgewoKCiAgICAgIHBvc190eXBlIF9fcmV0ID0gcG9z
X3R5cGUoLTEpOwogICAgICB0cnkKIHsKICAgaWYgKCF0aGlzLT5mYWlsKCkpCiAgICAgX19yZXQg
PSB0aGlzLT5yZGJ1ZigpLT5wdWJzZWVrb2ZmKDAsIGlvc19iYXNlOjpjdXIsCiAgICAgICAgICAg
aW9zX2Jhc2U6OmluKTsKIH0KICAgICAgY2F0Y2goLi4uKQogeyB0aGlzLT5fTV9zZXRzdGF0ZShp
b3NfYmFzZTo6YmFkYml0KTsgfQogICAgICByZXR1cm4gX19yZXQ7CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPiYKICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6CiAgICBz
ZWVrZyhwb3NfdHlwZSBfX3BvcykKICAgIHsKCgogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2Vy
ciA9IGlvc19iYXNlOjppb3N0YXRlKGlvc19iYXNlOjpnb29kYml0KTsKICAgICAgdHJ5CiB7CiAg
IGlmICghdGhpcy0+ZmFpbCgpKQogICAgIHsKCiAgICAgICBjb25zdCBwb3NfdHlwZSBfX3AgPSB0
aGlzLT5yZGJ1ZigpLT5wdWJzZWVrcG9zKF9fcG9zLAogICAgICAgICAgICBpb3NfYmFzZTo6aW4p
OwoKCiAgICAgICBpZiAoX19wID09IHBvc190eXBlKG9mZl90eXBlKC0xKSkpCiAgX19lcnIgfD0g
aW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgfQogfQogICAgICBjYXRjaCguLi4pCiB7IHRoaXMtPl9N
X3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgICAgIGlmIChfX2VycikKIHRoaXMtPnNl
dHN0YXRlKF9fZXJyKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgc2Vla2co
b2ZmX3R5cGUgX19vZmYsIGlvc19iYXNlOjpzZWVrZGlyIF9fZGlyKQogICAgewoKCiAgICAgIGlv
c19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omlvc3RhdGUoaW9zX2Jhc2U6Omdvb2Ri
aXQpOwogICAgICB0cnkKIHsKICAgaWYgKCF0aGlzLT5mYWlsKCkpCiAgICAgewoKICAgICAgIGNv
bnN0IHBvc190eXBlIF9fcCA9IHRoaXMtPnJkYnVmKCktPnB1YnNlZWtvZmYoX19vZmYsIF9fZGly
LAogICAgICAgICAgICBpb3NfYmFzZTo6aW4pOwoKCiAgICAgICBpZiAoX19wID09IHBvc190eXBl
KG9mZl90eXBlKC0xKSkpCiAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgfQogfQog
ICAgICBjYXRjaCguLi4pCiB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9
CiAgICAgIGlmIChfX2VycikKIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKICAgICAgcmV0dXJuICp0
aGlzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
PgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNp
Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faW4sIF9DaGFyVCYgX19jKQogICAgewogICAg
ICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW50X3R5cGUgX19pbnRfdHlw
ZTsKCiAgICAgIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjpzZW50cnkgX19jZXJiKF9faW4sIGZh
bHNlKTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBp
b3NfYmFzZTo6aW9zdGF0ZShpb3NfYmFzZTo6Z29vZGJpdCk7CiAgIHRyeQogICAgIHsKICAgICAg
IGNvbnN0IF9faW50X3R5cGUgX19jYiA9IF9faW4ucmRidWYoKS0+c2J1bXBjKCk7CiAgICAgICBp
ZiAoIV9UcmFpdHM6OmVxX2ludF90eXBlKF9fY2IsIF9UcmFpdHM6OmVvZigpKSkKICBfX2MgPSBf
VHJhaXRzOjp0b19jaGFyX3R5cGUoX19jYik7CiAgICAgICBlbHNlCiAgX19lcnIgfD0gKGlvc19i
YXNlOjplb2ZiaXQgfCBpb3NfYmFzZTo6ZmFpbGJpdCk7CiAgICAgfQogICBjYXRjaCguLi4pCiAg
ICAgeyBfX2luLl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgIGlmIChfX2VycikK
ICAgICBfX2luLnNldHN0YXRlKF9fZXJyKTsKIH0KICAgICAgcmV0dXJuIF9faW47CiAgICB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lz
dHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JiBfX2luLCBfQ2hhclQqIF9fcykKICAgIHsKICAgICAgdHlwZWRlZiBiYXNp
Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Ol9fc3RyZWFtYnVmX3R5cGUgX19zdHJlYW1idWZfdHlw
ZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjppbnRfdHlwZSBpbnRfdHlwZTsKICAg
ICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIGN0eXBlPF9DaGFyVD4g
X19jdHlwZV90eXBlOwoKICAgICAgc3RyZWFtc2l6ZSBfX2V4dHJhY3RlZCA9IDA7CiAgICAgIGlv
c19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omlvc3RhdGUoaW9zX2Jhc2U6Omdvb2Ri
aXQpOwogICAgICB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6c2VudHJ5IF9fY2VyYihfX2luLCBm
YWxzZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIHRyeQogICAgIHsKCiAgICAgICBzdHJlYW1z
aXplIF9fbnVtID0gX19pbi53aWR0aCgpOwogICAgICAgaWYgKF9fbnVtIDw9IDApCiAgX19udW0g
PSBudW1lcmljX2xpbWl0czxzdHJlYW1zaXplPjo6bWF4KCk7CgogICAgICAgY29uc3QgX19jdHlw
ZV90eXBlJiBfX2N0ID0gdXNlX2ZhY2V0PF9fY3R5cGVfdHlwZT4oX19pbi5nZXRsb2MoKSk7Cgog
ICAgICAgY29uc3QgaW50X3R5cGUgX19lb2YgPSBfVHJhaXRzOjplb2YoKTsKICAgICAgIF9fc3Ry
ZWFtYnVmX3R5cGUqIF9fc2IgPSBfX2luLnJkYnVmKCk7CiAgICAgICBpbnRfdHlwZSBfX2MgPSBf
X3NiLT5zZ2V0YygpOwoKICAgICAgIHdoaWxlIChfX2V4dHJhY3RlZCA8IF9fbnVtIC0gMQogICAg
ICAgJiYgIV9UcmFpdHM6OmVxX2ludF90eXBlKF9fYywgX19lb2YpCiAgICAgICAmJiAhX19jdC5p
cyhjdHlwZV9iYXNlOjpzcGFjZSwKICAgICBfVHJhaXRzOjp0b19jaGFyX3R5cGUoX19jKSkpCiAg
ewogICAgKl9fcysrID0gX1RyYWl0czo6dG9fY2hhcl90eXBlKF9fYyk7CiAgICArK19fZXh0cmFj
dGVkOwogICAgX19jID0gX19zYi0+c25leHRjKCk7CiAgfQogICAgICAgaWYgKF9UcmFpdHM6OmVx
X2ludF90eXBlKF9fYywgX19lb2YpKQogIF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CgoKCiAg
ICAgICAqX19zID0gY2hhcl90eXBlKCk7CiAgICAgICBfX2luLndpZHRoKDApOwogICAgIH0KICAg
Y2F0Y2goLi4uKQogICAgIHsgX19pbi5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQog
fQogICAgICBpZiAoIV9fZXh0cmFjdGVkKQogX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAg
ICAgIGlmIChfX2VycikKIF9faW4uc2V0c3RhdGUoX19lcnIpOwogICAgICByZXR1cm4gX19pbjsK
ICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAg
IGJhc2ljX2lzdHJlYW08X0NoYXJULF9UcmFpdHM+JgogICAgd3MoYmFzaWNfaXN0cmVhbTxfQ2hh
clQsX1RyYWl0cz4mIF9faW4pCiAgICB7CiAgICAgIHR5cGVkZWYgYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0
cmVhbV90eXBlOjpfX3N0cmVhbWJ1Zl90eXBlIF9fc3RyZWFtYnVmX3R5cGU7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Ol9fY3R5cGVfdHlwZSBfX2N0eXBlX3R5cGU7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6OmludF90eXBlIF9faW50X3R5cGU7
CgogICAgICBjb25zdCBfX2N0eXBlX3R5cGUmIF9fY3QgPSB1c2VfZmFjZXQ8X19jdHlwZV90eXBl
PihfX2luLmdldGxvYygpKTsKICAgICAgY29uc3QgX19pbnRfdHlwZSBfX2VvZiA9IF9UcmFpdHM6
OmVvZigpOwogICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0gX19pbi5yZGJ1ZigpOwogICAg
ICBfX2ludF90eXBlIF9fYyA9IF9fc2ItPnNnZXRjKCk7CgogICAgICB3aGlsZSAoIV9UcmFpdHM6
OmVxX2ludF90eXBlKF9fYywgX19lb2YpCiAgICAgICYmIF9fY3QuaXMoY3R5cGVfYmFzZTo6c3Bh
Y2UsIF9UcmFpdHM6OnRvX2NoYXJfdHlwZShfX2MpKSkKIF9fYyA9IF9fc2ItPnNuZXh0YygpOwoK
ICAgICAgIGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKSkKICBfX2luLnNldHN0
YXRlKGlvc19iYXNlOjplb2ZiaXQpOwogICAgICByZXR1cm4gX19pbjsKICAgIH0KCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgog
ICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNpY19p
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faW4sCiAgICAgICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPiYgX19zdHIpCiAgICB7CiAgICAgIHR5cGVkZWYgYmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9faXN0cmVhbV90eXBlOjppbnRfdHlwZSBfX2ludF90eXBlOwogICAgICB0eXBlZGVmIHR5
cGVuYW1lIF9faXN0cmVhbV90eXBlOjpfX3N0cmVhbWJ1Zl90eXBlIF9fc3RyZWFtYnVmX3R5cGU7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Ol9fY3R5cGVfdHlwZSBfX2N0
eXBlX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPiBfX3N0cmluZ190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fc3RyaW5nX3R5cGU6
OnNpemVfdHlwZSBfX3NpemVfdHlwZTsKCiAgICAgIF9fc2l6ZV90eXBlIF9fZXh0cmFjdGVkID0g
MDsKICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6aW9zdGF0ZShpb3Nf
YmFzZTo6Z29vZGJpdCk7CiAgICAgIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjpzZW50cnkgX19j
ZXJiKF9faW4sIGZhbHNlKTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAgdHJ5CiAgICAgewoKICAg
ICAgIF9fc3RyLmVyYXNlKCk7CiAgICAgICBfQ2hhclQgX19idWZbMTI4XTsKICAgICAgIF9fc2l6
ZV90eXBlIF9fbGVuID0gMDsKICAgICAgIGNvbnN0IHN0cmVhbXNpemUgX193ID0gX19pbi53aWR0
aCgpOwogICAgICAgY29uc3QgX19zaXplX3R5cGUgX19uID0gX193ID4gMCA/IHN0YXRpY19jYXN0
PF9fc2l6ZV90eXBlPihfX3cpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfX3N0
ci5tYXhfc2l6ZSgpOwogICAgICAgY29uc3QgX19jdHlwZV90eXBlJiBfX2N0ID0gdXNlX2ZhY2V0
PF9fY3R5cGVfdHlwZT4oX19pbi5nZXRsb2MoKSk7CiAgICAgICBjb25zdCBfX2ludF90eXBlIF9f
ZW9mID0gX1RyYWl0czo6ZW9mKCk7CiAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0gX19p
bi5yZGJ1ZigpOwogICAgICAgX19pbnRfdHlwZSBfX2MgPSBfX3NiLT5zZ2V0YygpOwoKICAgICAg
IHdoaWxlIChfX2V4dHJhY3RlZCA8IF9fbgogICAgICAgJiYgIV9UcmFpdHM6OmVxX2ludF90eXBl
KF9fYywgX19lb2YpCiAgICAgICAmJiAhX19jdC5pcyhjdHlwZV9iYXNlOjpzcGFjZSwgX1RyYWl0
czo6dG9fY2hhcl90eXBlKF9fYykpKQogIHsKICAgIGlmIChfX2xlbiA9PSBzaXplb2YoX19idWYp
IC8gc2l6ZW9mKF9DaGFyVCkpCiAgICAgIHsKICAgICAgICBfX3N0ci5hcHBlbmQoX19idWYsIHNp
emVvZihfX2J1ZikgLyBzaXplb2YoX0NoYXJUKSk7CiAgICAgICAgX19sZW4gPSAwOwogICAgICB9
CiAgICBfX2J1ZltfX2xlbisrXSA9IF9UcmFpdHM6OnRvX2NoYXJfdHlwZShfX2MpOwogICAgKytf
X2V4dHJhY3RlZDsKICAgIF9fYyA9IF9fc2ItPnNuZXh0YygpOwogIH0KICAgICAgIF9fc3RyLmFw
cGVuZChfX2J1ZiwgX19sZW4pOwoKICAgICAgIGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShfX2Ms
IF9fZW9mKSkKICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0OwogICAgICAgX19pbi53aWR0aCgw
KTsKICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7CgoKCiAgICAgICBfX2luLl9NX3NldHN0YXRl
KGlvc19iYXNlOjpiYWRiaXQpOwogICAgIH0KIH0KCiAgICAgIGlmICghX19leHRyYWN0ZWQpCiBf
X2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICAgaWYgKF9fZXJyKQogX19pbi5zZXRzdGF0
ZShfX2Vycik7CiAgICAgIHJldHVybiBfX2luOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX2lzdHJl
YW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+JiBfX2luLAogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4m
IF9fc3RyLCBfQ2hhclQgX19kZWxpbSkKICAgIHsKICAgICAgdHlwZWRlZiBiYXNpY19pc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X19pc3RyZWFtX3R5cGU6OmludF90eXBlIF9faW50X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgX19pc3RyZWFtX3R5cGU6Ol9fc3RyZWFtYnVmX3R5cGUgX19zdHJlYW1idWZfdHlwZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6X19jdHlwZV90eXBlIF9fY3R5cGVf
dHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
IF9fc3RyaW5nX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19zdHJpbmdfdHlwZTo6c2l6
ZV90eXBlIF9fc2l6ZV90eXBlOwoKICAgICAgX19zaXplX3R5cGUgX19leHRyYWN0ZWQgPSAwOwog
ICAgICBjb25zdCBfX3NpemVfdHlwZSBfX24gPSBfX3N0ci5tYXhfc2l6ZSgpOwogICAgICBpb3Nf
YmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjppb3N0YXRlKGlvc19iYXNlOjpnb29kYml0
KTsKICAgICAgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6OnNlbnRyeSBfX2NlcmIoX19pbiwgdHJ1
ZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIHRyeQogICAgIHsKICAgICAgIF9fc3RyLmVyYXNl
KCk7CiAgICAgICBjb25zdCBfX2ludF90eXBlIF9faWRlbGltID0gX1RyYWl0czo6dG9faW50X3R5
cGUoX19kZWxpbSk7CiAgICAgICBjb25zdCBfX2ludF90eXBlIF9fZW9mID0gX1RyYWl0czo6ZW9m
KCk7CiAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0gX19pbi5yZGJ1ZigpOwogICAgICAg
X19pbnRfdHlwZSBfX2MgPSBfX3NiLT5zZ2V0YygpOwoKICAgICAgIHdoaWxlIChfX2V4dHJhY3Rl
ZCA8IF9fbgogICAgICAgJiYgIV9UcmFpdHM6OmVxX2ludF90eXBlKF9fYywgX19lb2YpCiAgICAg
ICAmJiAhX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBfX2lkZWxpbSkpCiAgewogICAgX19zdHIg
Kz0gX1RyYWl0czo6dG9fY2hhcl90eXBlKF9fYyk7CiAgICArK19fZXh0cmFjdGVkOwogICAgX19j
ID0gX19zYi0+c25leHRjKCk7CiAgfQoKICAgICAgIGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShf
X2MsIF9fZW9mKSkKICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0OwogICAgICAgZWxzZSBpZiAo
X1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBfX2lkZWxpbSkpCiAgewogICAgKytfX2V4dHJhY3Rl
ZDsKICAgIF9fc2ItPnNidW1wYygpOwogIH0KICAgICAgIGVsc2UKICBfX2VyciB8PSBpb3NfYmFz
ZTo6ZmFpbGJpdDsKICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7CgoKCiAgICAgICBfX2luLl9N
X3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwogICAgIH0KIH0KICAgICAgaWYgKCFfX2V4dHJh
Y3RlZCkKIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwogICAgICBpZiAoX19lcnIpCiBfX2lu
LnNldHN0YXRlKF9fZXJyKTsKICAgICAgcmV0dXJuIF9faW47CiAgICB9CgoKCgoKICBleHRlcm4g
dGVtcGxhdGUgY2xhc3MgYmFzaWNfaXN0cmVhbTxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUgaXN0
cmVhbSYgd3MoaXN0cmVhbSYpOwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBvcGVyYXRvcj4+
KGlzdHJlYW0mLCBjaGFyJik7CiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIG9wZXJhdG9yPj4o
aXN0cmVhbSYsIGNoYXIqKTsKICBleHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgb3BlcmF0b3I+Pihp
c3RyZWFtJiwgdW5zaWduZWQgY2hhciYpOwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBvcGVy
YXRvcj4+KGlzdHJlYW0mLCBzaWduZWQgY2hhciYpOwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFt
JiBvcGVyYXRvcj4+KGlzdHJlYW0mLCB1bnNpZ25lZCBjaGFyKik7CiAgZXh0ZXJuIHRlbXBsYXRl
IGlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYsIHNpZ25lZCBjaGFyKik7CgogIGV4dGVybiB0
ZW1wbGF0ZSBpc3RyZWFtJiBpc3RyZWFtOjpfTV9leHRyYWN0KHVuc2lnbmVkIHNob3J0Jik7CiAg
ZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIGlzdHJlYW06Ol9NX2V4dHJhY3QodW5zaWduZWQgaW50
Jik7CiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIGlzdHJlYW06Ol9NX2V4dHJhY3QobG9uZyYp
OwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBpc3RyZWFtOjpfTV9leHRyYWN0KHVuc2lnbmVk
IGxvbmcmKTsKICBleHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgaXN0cmVhbTo6X01fZXh0cmFjdChi
b29sJik7CgogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBpc3RyZWFtOjpfTV9leHRyYWN0KGxv
bmcgbG9uZyYpOwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBpc3RyZWFtOjpfTV9leHRyYWN0
KHVuc2lnbmVkIGxvbmcgbG9uZyYpOwoKICBleHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgaXN0cmVh
bTo6X01fZXh0cmFjdChmbG9hdCYpOwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBpc3RyZWFt
OjpfTV9leHRyYWN0KGRvdWJsZSYpOwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBpc3RyZWFt
OjpfTV9leHRyYWN0KGxvbmcgZG91YmxlJik7CiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIGlz
dHJlYW06Ol9NX2V4dHJhY3Qodm9pZComKTsKCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2lj
X2lvc3RyZWFtPGNoYXI+OwoKCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX2lzdHJlYW08
d2NoYXJfdD47CiAgZXh0ZXJuIHRlbXBsYXRlIHdpc3RyZWFtJiB3cyh3aXN0cmVhbSYpOwogIGV4
dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgb3BlcmF0b3I+Pih3aXN0cmVhbSYsIHdjaGFyX3QmKTsK
ICBleHRlcm4gdGVtcGxhdGUgd2lzdHJlYW0mIG9wZXJhdG9yPj4od2lzdHJlYW0mLCB3Y2hhcl90
Kik7CgogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgd2lzdHJlYW06Ol9NX2V4dHJhY3QodW5z
aWduZWQgc2hvcnQmKTsKICBleHRlcm4gdGVtcGxhdGUgd2lzdHJlYW0mIHdpc3RyZWFtOjpfTV9l
eHRyYWN0KHVuc2lnbmVkIGludCYpOwogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgd2lzdHJl
YW06Ol9NX2V4dHJhY3QobG9uZyYpOwogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgd2lzdHJl
YW06Ol9NX2V4dHJhY3QodW5zaWduZWQgbG9uZyYpOwogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVh
bSYgd2lzdHJlYW06Ol9NX2V4dHJhY3QoYm9vbCYpOwoKICBleHRlcm4gdGVtcGxhdGUgd2lzdHJl
YW0mIHdpc3RyZWFtOjpfTV9leHRyYWN0KGxvbmcgbG9uZyYpOwogIGV4dGVybiB0ZW1wbGF0ZSB3
aXN0cmVhbSYgd2lzdHJlYW06Ol9NX2V4dHJhY3QodW5zaWduZWQgbG9uZyBsb25nJik7CgogIGV4
dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgd2lzdHJlYW06Ol9NX2V4dHJhY3QoZmxvYXQmKTsKICBl
eHRlcm4gdGVtcGxhdGUgd2lzdHJlYW0mIHdpc3RyZWFtOjpfTV9leHRyYWN0KGRvdWJsZSYpOwog
IGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgd2lzdHJlYW06Ol9NX2V4dHJhY3QobG9uZyBkb3Vi
bGUmKTsKICBleHRlcm4gdGVtcGxhdGUgd2lzdHJlYW0mIHdpc3RyZWFtOjpfTV9leHRyYWN0KHZv
aWQqJik7CgogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19pb3N0cmVhbTx3Y2hhcl90PjsK
CgoKfQojIDg0NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9pc3RyZWFtIiAyIDMKIyA3MiAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9pdGVyYXRvciIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL3N0cmVhbV9pdGVyYXRvci5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL3N0cmVhbV9pdGVyYXRvci5oIiAzCiNkZWZpbmUgX1NUUkVBTV9JVEVSQVRPUl9I
IDEKCiAgICAgICAKIyAzOSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0cmVhbV9pdGVy
YXRvci5oIiAzCgoKCm5hbWVzcGFjZSBzdGQgewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfQ2hhclQgPSBjaGFyLAogICAgICAgICAgIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFy
X3RyYWl0czxfQ2hhclQ+LCB0eXBlbmFtZSBfRGlzdCA9IHB0cmRpZmZfdD4KICAgIGNsYXNzIGlz
dHJlYW1faXRlcmF0b3IKICAgIDogcHVibGljIGl0ZXJhdG9yPGlucHV0X2l0ZXJhdG9yX3RhZywg
X1RwLCBfRGlzdCwgY29uc3QgX1RwKiwgY29uc3QgX1RwJj4KICAgIHsKICAgIHB1YmxpYzoKICAg
ICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIF9UcmFpdHMgdHJhaXRz
X3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IGlzdHJl
YW1fdHlwZTsKCiAgICBwcml2YXRlOgogICAgICBpc3RyZWFtX3R5cGUqIF9NX3N0cmVhbTsKICAg
ICAgX1RwIF9NX3ZhbHVlOwogICAgICBib29sIF9NX29rOwoKICAgIHB1YmxpYzoKCiAgICAgIGlz
dHJlYW1faXRlcmF0b3IoKQogICAgICA6IF9NX3N0cmVhbSgwKSwgX01fdmFsdWUoKSwgX01fb2so
ZmFsc2UpIHt9CgoKICAgICAgaXN0cmVhbV9pdGVyYXRvcihpc3RyZWFtX3R5cGUmIF9fcykKICAg
ICAgOiBfTV9zdHJlYW0oJl9fcykKICAgICAgeyBfTV9yZWFkKCk7IH0KCiAgICAgIGlzdHJlYW1f
aXRlcmF0b3IoY29uc3QgaXN0cmVhbV9pdGVyYXRvciYgX19vYmopCiAgICAgIDogX01fc3RyZWFt
KF9fb2JqLl9NX3N0cmVhbSksIF9NX3ZhbHVlKF9fb2JqLl9NX3ZhbHVlKSwKICAgICAgICBfTV9v
ayhfX29iai5fTV9vaykKICAgICAgeyB9CgogICAgICBjb25zdCBfVHAmCiAgICAgIG9wZXJhdG9y
KigpIGNvbnN0CiAgICAgIHsKIDsKCgogcmV0dXJuIF9NX3ZhbHVlOwogICAgICB9CgogICAgICBj
b25zdCBfVHAqCiAgICAgIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigp
KTsgfQoKICAgICAgaXN0cmVhbV9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IrKygpCiAgICAgIHsK
IDsKCgogX01fcmVhZCgpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBpc3RyZWFtX2l0
ZXJhdG9yCiAgICAgIG9wZXJhdG9yKysoaW50KQogICAgICB7CiA7CgoKIGlzdHJlYW1faXRlcmF0
b3IgX190bXAgPSAqdGhpczsKIF9NX3JlYWQoKTsKIHJldHVybiBfX3RtcDsKICAgICAgfQoKICAg
ICAgYm9vbAogICAgICBfTV9lcXVhbChjb25zdCBpc3RyZWFtX2l0ZXJhdG9yJiBfX3gpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIChfTV9vayA9PSBfX3guX01fb2spICYmICghX01fb2sgfHwgX01fc3Ry
ZWFtID09IF9feC5fTV9zdHJlYW0pOyB9CgogICAgcHJpdmF0ZToKICAgICAgdm9pZAogICAgICBf
TV9yZWFkKCkKICAgICAgewogX01fb2sgPSAoX01fc3RyZWFtICYmICpfTV9zdHJlYW0pID8gdHJ1
ZSA6IGZhbHNlOwogaWYgKF9NX29rKQogICB7CiAgICAgKl9NX3N0cmVhbSA+PiBfTV92YWx1ZTsK
ICAgICBfTV9vayA9ICpfTV9zdHJlYW0gPyB0cnVlIDogZmFsc2U7CiAgIH0KICAgICAgfQogICAg
fTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfRGlzdD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNv
bnN0IGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfQ2hhclQsIF9UcmFpdHMsIF9EaXN0PiYgX194LAog
ICAgICAgIGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfQ2hhclQsIF9UcmFpdHMsIF9EaXN0
PiYgX195KQogICAgeyByZXR1cm4gX194Ll9NX2VxdWFsKF9feSk7IH0KCgogIHRlbXBsYXRlIDxj
bGFzcyBfVHAsIGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0Rpc3Q+CiAgICBp
bmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBpc3RyZWFtX2l0ZXJhdG9yPF9UcCwgX0No
YXJULCBfVHJhaXRzLCBfRGlzdD4mIF9feCwKICAgICAgICBjb25zdCBpc3RyZWFtX2l0ZXJhdG9y
PF9UcCwgX0NoYXJULCBfVHJhaXRzLCBfRGlzdD4mIF9feSkKICAgIHsgcmV0dXJuICFfX3guX01f
ZXF1YWwoX195KTsgfQojIDE1MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0cmVhbV9p
dGVyYXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ2hhclQgPSBj
aGFyLAogICAgICAgICAgIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4K
ICAgIGNsYXNzIG9zdHJlYW1faXRlcmF0b3IKICAgIDogcHVibGljIGl0ZXJhdG9yPG91dHB1dF9p
dGVyYXRvcl90YWcsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQ+CiAgICB7CiAgICBwdWJsaWM6CgoK
ICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIF9UcmFpdHMgdHJh
aXRzX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IG9z
dHJlYW1fdHlwZTsKCgogICAgcHJpdmF0ZToKICAgICAgb3N0cmVhbV90eXBlKiBfTV9zdHJlYW07
CiAgICAgIGNvbnN0IF9DaGFyVCogX01fc3RyaW5nOwoKICAgIHB1YmxpYzoKCiAgICAgIG9zdHJl
YW1faXRlcmF0b3Iob3N0cmVhbV90eXBlJiBfX3MpIDogX01fc3RyZWFtKCZfX3MpLCBfTV9zdHJp
bmcoMCkge30KIyAxODEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdHJlYW1faXRlcmF0
b3IuaCIgMwogICAgICBvc3RyZWFtX2l0ZXJhdG9yKG9zdHJlYW1fdHlwZSYgX19zLCBjb25zdCBf
Q2hhclQqIF9fYykKICAgICAgOiBfTV9zdHJlYW0oJl9fcyksIF9NX3N0cmluZyhfX2MpIHsgfQoK
CiAgICAgIG9zdHJlYW1faXRlcmF0b3IoY29uc3Qgb3N0cmVhbV9pdGVyYXRvciYgX19vYmopCiAg
ICAgIDogX01fc3RyZWFtKF9fb2JqLl9NX3N0cmVhbSksIF9NX3N0cmluZyhfX29iai5fTV9zdHJp
bmcpIHsgfQoKCgogICAgICBvc3RyZWFtX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcj0oY29uc3Qg
X1RwJiBfX3ZhbHVlKQogICAgICB7CiA7CgoKICpfTV9zdHJlYW0gPDwgX192YWx1ZTsKIGlmIChf
TV9zdHJpbmcpICpfTV9zdHJlYW0gPDwgX01fc3RyaW5nOwogcmV0dXJuICp0aGlzOwogICAgICB9
CgogICAgICBvc3RyZWFtX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvciooKQogICAgICB7IHJldHVy
biAqdGhpczsgfQoKICAgICAgb3N0cmVhbV9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IrKygpCiAg
ICAgIHsgcmV0dXJuICp0aGlzOyB9CgogICAgICBvc3RyZWFtX2l0ZXJhdG9yJgogICAgICBvcGVy
YXRvcisrKGludCkKICAgICAgeyByZXR1cm4gKnRoaXM7IH0KICAgIH07Cgp9CiMgNzMgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvaXRlcmF0b3IiIDIgMwojIDUxICIvb3B0L2xvY2FsL2luY2x1ZGUv
UXRDb3JlL3FsaXN0LmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2xpc3QiIDEgMwoj
IDYxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2xpc3QiIDMKI2RlZmluZSBfR0xJQkNYWF9MSVNU
IDEKCiAgICAgICAKIyA2NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9saXN0IiAzCgoKCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDEgMwojIDYzICIvdXNy
L2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2xpc3QuaCIgMwojZGVmaW5lIF9MSVNUX0ggMQoK
CgpuYW1lc3BhY2Ugc3RkIHsKCgoKCgoKCiAgc3RydWN0IF9MaXN0X25vZGVfYmFzZQogIHsKICAg
IF9MaXN0X25vZGVfYmFzZSogX01fbmV4dDsKICAgIF9MaXN0X25vZGVfYmFzZSogX01fcHJldjsK
CiAgICBzdGF0aWMgdm9pZAogICAgc3dhcChfTGlzdF9ub2RlX2Jhc2UmIF9feCwgX0xpc3Rfbm9k
ZV9iYXNlJiBfX3kpOwoKICAgIHZvaWQKICAgIHRyYW5zZmVyKF9MaXN0X25vZGVfYmFzZSAqIGNv
bnN0IF9fZmlyc3QsCiAgICAgIF9MaXN0X25vZGVfYmFzZSAqIGNvbnN0IF9fbGFzdCk7CgogICAg
dm9pZAogICAgcmV2ZXJzZSgpOwoKICAgIHZvaWQKICAgIGhvb2soX0xpc3Rfbm9kZV9iYXNlICog
Y29uc3QgX19wb3NpdGlvbik7CgogICAgdm9pZAogICAgdW5ob29rKCk7CiAgfTsKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfTGlzdF9ub2RlIDogcHVibGljIF9MaXN0X25v
ZGVfYmFzZQogICAgewogICAgICBfVHAgX01fZGF0YTsKICAgIH07CiMgMTExICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2xpc3QuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIHN0cnVjdCBfTGlzdF9pdGVyYXRvcgogICAgewogICAgICB0eXBlZGVmIF9MaXN0X2l0ZXJh
dG9yPF9UcD4gX1NlbGY7CiAgICAgIHR5cGVkZWYgX0xpc3Rfbm9kZTxfVHA+IF9Ob2RlOwoKICAg
ICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIHN0ZDo6
YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgICAgIHR5cGVk
ZWYgX1RwIHZhbHVlX3R5cGU7CiAgICAgIHR5cGVkZWYgX1RwKiBwb2ludGVyOwogICAgICB0eXBl
ZGVmIF9UcCYgcmVmZXJlbmNlOwoKICAgICAgX0xpc3RfaXRlcmF0b3IoKQogICAgICA6IF9NX25v
ZGUoKSB7IH0KCiAgICAgIGV4cGxpY2l0CiAgICAgIF9MaXN0X2l0ZXJhdG9yKF9MaXN0X25vZGVf
YmFzZSogX194KQogICAgICA6IF9NX25vZGUoX194KSB7IH0KCgogICAgICByZWZlcmVuY2UKICAg
ICAgb3BlcmF0b3IqKCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8X05vZGUqPihf
TV9ub2RlKS0+X01fZGF0YTsgfQoKICAgICAgcG9pbnRlcgogICAgICBvcGVyYXRvci0+KCkgY29u
c3QKICAgICAgeyByZXR1cm4gJnN0YXRpY19jYXN0PF9Ob2RlKj4oX01fbm9kZSktPl9NX2RhdGE7
IH0KCiAgICAgIF9TZWxmJgogICAgICBvcGVyYXRvcisrKCkKICAgICAgewogX01fbm9kZSA9IF9N
X25vZGUtPl9NX25leHQ7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIF9TZWxmCiAgICAg
IG9wZXJhdG9yKysoaW50KQogICAgICB7CiBfU2VsZiBfX3RtcCA9ICp0aGlzOwogX01fbm9kZSA9
IF9NX25vZGUtPl9NX25leHQ7CiByZXR1cm4gX190bXA7CiAgICAgIH0KCiAgICAgIF9TZWxmJgog
ICAgICBvcGVyYXRvci0tKCkKICAgICAgewogX01fbm9kZSA9IF9NX25vZGUtPl9NX3ByZXY7CiBy
ZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIF9TZWxmCiAgICAgIG9wZXJhdG9yLS0oaW50KQog
ICAgICB7CiBfU2VsZiBfX3RtcCA9ICp0aGlzOwogX01fbm9kZSA9IF9NX25vZGUtPl9NX3ByZXY7
CiByZXR1cm4gX190bXA7CiAgICAgIH0KCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25z
dCBfU2VsZiYgX194KSBjb25zdAogICAgICB7IHJldHVybiBfTV9ub2RlID09IF9feC5fTV9ub2Rl
OyB9CgogICAgICBib29sCiAgICAgIG9wZXJhdG9yIT0oY29uc3QgX1NlbGYmIF9feCkgY29uc3QK
ICAgICAgeyByZXR1cm4gX01fbm9kZSAhPSBfX3guX01fbm9kZTsgfQoKCiAgICAgIF9MaXN0X25v
ZGVfYmFzZSogX01fbm9kZTsKICAgIH07CiMgMTg4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvc3RsX2xpc3QuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfTGlz
dF9jb25zdF9pdGVyYXRvcgogICAgewogICAgICB0eXBlZGVmIF9MaXN0X2NvbnN0X2l0ZXJhdG9y
PF9UcD4gX1NlbGY7CiAgICAgIHR5cGVkZWYgY29uc3QgX0xpc3Rfbm9kZTxfVHA+IF9Ob2RlOwog
ICAgICB0eXBlZGVmIF9MaXN0X2l0ZXJhdG9yPF9UcD4gaXRlcmF0b3I7CgogICAgICB0eXBlZGVm
IHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgc3RkOjpiaWRpcmVjdGlv
bmFsX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICAgICAgdHlwZWRlZiBfVHAgdmFs
dWVfdHlwZTsKICAgICAgdHlwZWRlZiBjb25zdCBfVHAqIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYg
Y29uc3QgX1RwJiByZWZlcmVuY2U7CgogICAgICBfTGlzdF9jb25zdF9pdGVyYXRvcigpCiAgICAg
IDogX01fbm9kZSgpIHsgfQoKICAgICAgZXhwbGljaXQKICAgICAgX0xpc3RfY29uc3RfaXRlcmF0
b3IoY29uc3QgX0xpc3Rfbm9kZV9iYXNlKiBfX3gpCiAgICAgIDogX01fbm9kZShfX3gpIHsgfQoK
ICAgICAgX0xpc3RfY29uc3RfaXRlcmF0b3IoY29uc3QgaXRlcmF0b3ImIF9feCkKICAgICAgOiBf
TV9ub2RlKF9feC5fTV9ub2RlKSB7IH0KCgoKICAgICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9y
KigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PF9Ob2RlKj4oX01fbm9kZSktPl9N
X2RhdGE7IH0KCiAgICAgIHBvaW50ZXIKICAgICAgb3BlcmF0b3ItPigpIGNvbnN0CiAgICAgIHsg
cmV0dXJuICZzdGF0aWNfY2FzdDxfTm9kZSo+KF9NX25vZGUpLT5fTV9kYXRhOyB9CgogICAgICBf
U2VsZiYKICAgICAgb3BlcmF0b3IrKygpCiAgICAgIHsKIF9NX25vZGUgPSBfTV9ub2RlLT5fTV9u
ZXh0OwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBfU2VsZgogICAgICBvcGVyYXRvcisr
KGludCkKICAgICAgewogX1NlbGYgX190bXAgPSAqdGhpczsKIF9NX25vZGUgPSBfTV9ub2RlLT5f
TV9uZXh0OwogcmV0dXJuIF9fdG1wOwogICAgICB9CgogICAgICBfU2VsZiYKICAgICAgb3BlcmF0
b3ItLSgpCiAgICAgIHsKIF9NX25vZGUgPSBfTV9ub2RlLT5fTV9wcmV2OwogcmV0dXJuICp0aGlz
OwogICAgICB9CgogICAgICBfU2VsZgogICAgICBvcGVyYXRvci0tKGludCkKICAgICAgewogX1Nl
bGYgX190bXAgPSAqdGhpczsKIF9NX25vZGUgPSBfTV9ub2RlLT5fTV9wcmV2OwogcmV0dXJuIF9f
dG1wOwogICAgICB9CgogICAgICBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3QgX1NlbGYmIF9f
eCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fbm9kZSA9PSBfX3guX01fbm9kZTsgfQoKICAgICAg
Ym9vbAogICAgICBvcGVyYXRvciE9KGNvbnN0IF9TZWxmJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0
dXJuIF9NX25vZGUgIT0gX194Ll9NX25vZGU7IH0KCgogICAgICBjb25zdCBfTGlzdF9ub2RlX2Jh
c2UqIF9NX25vZGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgX0xpc3RfaXRlcmF0b3I8X1ZhbD4mIF9feCwKICAg
ICAgICBjb25zdCBfTGlzdF9jb25zdF9pdGVyYXRvcjxfVmFsPiYgX195KQogICAgeyByZXR1cm4g
X194Ll9NX25vZGUgPT0gX195Ll9NX25vZGU7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbD4K
ICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IF9MaXN0X2l0ZXJhdG9yPF9WYWw+
JiBfX3gsCiAgICAgICAgICAgICAgIGNvbnN0IF9MaXN0X2NvbnN0X2l0ZXJhdG9yPF9WYWw+JiBf
X3kpCiAgICB7IHJldHVybiBfX3guX01fbm9kZSAhPSBfX3kuX01fbm9kZTsgfQoKCgoKCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGNsYXNzIF9MaXN0X2Jh
c2UKICAgIHsKICAgIHByb3RlY3RlZDoKIyAyOTggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0
cy9zdGxfbGlzdC5oIiAzCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjp0ZW1wbGF0ZSBy
ZWJpbmQ8X0xpc3Rfbm9kZTxfVHA+ID46Om90aGVyCiAgICAgICAgX05vZGVfYWxsb2NfdHlwZTsK
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjp0ZW1wbGF0ZSByZWJpbmQ8X1RwPjo6b3Ro
ZXIgX1RwX2FsbG9jX3R5cGU7CgogICAgICBzdHJ1Y3QgX0xpc3RfaW1wbAogICAgICA6IHB1Ymxp
YyBfTm9kZV9hbGxvY190eXBlCiAgICAgIHsKIF9MaXN0X25vZGVfYmFzZSBfTV9ub2RlOwoKIF9M
aXN0X2ltcGwoY29uc3QgX05vZGVfYWxsb2NfdHlwZSYgX19hKQogOiBfTm9kZV9hbGxvY190eXBl
KF9fYSksIF9NX25vZGUoKQogeyB9CiAgICAgIH07CgogICAgICBfTGlzdF9pbXBsIF9NX2ltcGw7
CgogICAgICBfTGlzdF9ub2RlPF9UcD4qCiAgICAgIF9NX2dldF9ub2RlKCkKICAgICAgeyByZXR1
cm4gX01faW1wbC5fTm9kZV9hbGxvY190eXBlOjphbGxvY2F0ZSgxKTsgfQoKICAgICAgdm9pZAog
ICAgICBfTV9wdXRfbm9kZShfTGlzdF9ub2RlPF9UcD4qIF9fcCkKICAgICAgeyBfTV9pbXBsLl9O
b2RlX2FsbG9jX3R5cGU6OmRlYWxsb2NhdGUoX19wLCAxKTsgfQoKICBwdWJsaWM6CiAgICAgIHR5
cGVkZWYgX0FsbG9jIGFsbG9jYXRvcl90eXBlOwoKICAgICAgX05vZGVfYWxsb2NfdHlwZSYKICAg
ICAgX01fZ2V0X05vZGVfYWxsb2NhdG9yKCkKICAgICAgeyByZXR1cm4gKnN0YXRpY19jYXN0PF9O
b2RlX2FsbG9jX3R5cGUqPigmdGhpcy0+X01faW1wbCk7IH0KCiAgICAgIGNvbnN0IF9Ob2RlX2Fs
bG9jX3R5cGUmCiAgICAgIF9NX2dldF9Ob2RlX2FsbG9jYXRvcigpIGNvbnN0CiAgICAgIHsgcmV0
dXJuICpzdGF0aWNfY2FzdDxjb25zdCBfTm9kZV9hbGxvY190eXBlKj4oJnRoaXMtPl9NX2ltcGwp
OyB9CgogICAgICBfVHBfYWxsb2NfdHlwZQogICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkgY29u
c3QKICAgICAgeyByZXR1cm4gX1RwX2FsbG9jX3R5cGUoX01fZ2V0X05vZGVfYWxsb2NhdG9yKCkp
OyB9CgogICAgICBhbGxvY2F0b3JfdHlwZQogICAgICBnZXRfYWxsb2NhdG9yKCkgY29uc3QKICAg
ICAgeyByZXR1cm4gYWxsb2NhdG9yX3R5cGUoX01fZ2V0X05vZGVfYWxsb2NhdG9yKCkpOyB9Cgog
ICAgICBfTGlzdF9iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiAgICAgIDogX01faW1w
bChfX2EpCiAgICAgIHsgX01faW5pdCgpOyB9CgoKICAgICAgfl9MaXN0X2Jhc2UoKQogICAgICB7
IF9NX2NsZWFyKCk7IH0KCiAgICAgIHZvaWQKICAgICAgX01fY2xlYXIoKTsKCiAgICAgIHZvaWQK
ICAgICAgX01faW5pdCgpCiAgICAgIHsKICAgICAgICB0aGlzLT5fTV9pbXBsLl9NX25vZGUuX01f
bmV4dCA9ICZ0aGlzLT5fTV9pbXBsLl9NX25vZGU7CiAgICAgICAgdGhpcy0+X01faW1wbC5fTV9u
b2RlLl9NX3ByZXYgPSAmdGhpcy0+X01faW1wbC5fTV9ub2RlOwogICAgICB9CiAgICB9OwojIDQw
NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPF9UcD4gPgogICAg
Y2xhc3MgbGlzdCA6IHByb3RlY3RlZCBfTGlzdF9iYXNlPF9UcCwgX0FsbG9jPgogICAgewoKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2M6OnZhbHVlX3R5cGUgX0FsbG9jX3ZhbHVlX3R5cGU7
CiAgICAgCiAgICAgCgogICAgICB0eXBlZGVmIF9MaXN0X2Jhc2U8X1RwLCBfQWxsb2M+IF9CYXNl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9CYXNlOjpfVHBfYWxsb2NfdHlwZSBfVHBfYWxsb2Nf
dHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX1RwX2FsbG9jX3R5cGU6OnBvaW50ZXIgcG9pbnRlcjsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBfVHBfYWxsb2NfdHlwZTo6Y29uc3RfcG9pbnRlciBjb25zdF9wb2ludGVy
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcF9hbGxvY190eXBlOjpyZWZlcmVuY2UgcmVmZXJl
bmNlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcF9hbGxvY190eXBlOjpjb25zdF9yZWZlcmVu
Y2UgY29uc3RfcmVmZXJlbmNlOwogICAgICB0eXBlZGVmIF9MaXN0X2l0ZXJhdG9yPF9UcD4gaXRl
cmF0b3I7CiAgICAgIHR5cGVkZWYgX0xpc3RfY29uc3RfaXRlcmF0b3I8X1RwPiBjb25zdF9pdGVy
YXRvcjsKICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJh
dG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwogICAgICB0eXBlZGVmIHNpemVfdCBzaXpl
X3R5cGU7CiAgICAgIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKICAgICAgdHlw
ZWRlZiBfQWxsb2MgYWxsb2NhdG9yX3R5cGU7CgogICAgcHJvdGVjdGVkOgoKCiAgICAgIHR5cGVk
ZWYgX0xpc3Rfbm9kZTxfVHA+IF9Ob2RlOwoKICAgICAgdXNpbmcgX0Jhc2U6Ol9NX2ltcGw7CiAg
ICAgIHVzaW5nIF9CYXNlOjpfTV9wdXRfbm9kZTsKICAgICAgdXNpbmcgX0Jhc2U6Ol9NX2dldF9u
b2RlOwogICAgICB1c2luZyBfQmFzZTo6X01fZ2V0X1RwX2FsbG9jYXRvcjsKICAgICAgdXNpbmcg
X0Jhc2U6Ol9NX2dldF9Ob2RlX2FsbG9jYXRvcjsKIyA0NDkgIi91c3IvaW5jbHVkZS9jKysvNC4y
LjEvYml0cy9zdGxfbGlzdC5oIiAzCiAgICAgIF9Ob2RlKgogICAgICBfTV9jcmVhdGVfbm9kZShj
b25zdCB2YWx1ZV90eXBlJiBfX3gpCiAgICAgIHsKIF9Ob2RlKiBfX3AgPSB0aGlzLT5fTV9nZXRf
bm9kZSgpOwogdHJ5CiAgIHsKICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkuY29uc3RydWN0KCZf
X3AtPl9NX2RhdGEsIF9feCk7CiAgIH0KIGNhdGNoKC4uLikKICAgewogICAgIF9NX3B1dF9ub2Rl
KF9fcCk7CiAgICAgdGhyb3c7CiAgIH0KIHJldHVybiBfX3A7CiAgICAgIH0KCiAgICBwdWJsaWM6
CgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgbGlzdChjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19h
ID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgICAgOiBfQmFzZShfX2EpIHsgfQojIDQ4MiAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICAgICAgZXhwbGljaXQKICAgICAg
bGlzdChzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3ZhbHVlID0gdmFsdWVfdHlw
ZSgpLAogICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAg
ICAgIDogX0Jhc2UoX19hKQogICAgICB7IF9NX2ZpbGxfaW5pdGlhbGl6ZShfX24sIF9fdmFsdWUp
OyB9CiMgNDk1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2xpc3QuaCIgMwogICAg
ICBsaXN0KGNvbnN0IGxpc3QmIF9feCkKICAgICAgOiBfQmFzZShfX3guX01fZ2V0X05vZGVfYWxs
b2NhdG9yKCkpCiAgICAgIHsgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfX3guYmVnaW4oKSwgX194
LmVuZCgpLCBfX2ZhbHNlX3R5cGUoKSk7IH0KIyA1MDggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEv
Yml0cy9zdGxfbGlzdC5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
PgogICAgICAgIGxpc3QoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19s
YXN0LAogICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkK
ICAgICAgICA6IF9CYXNlKF9fYSkKICAgICAgICB7CgogICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6
X19pc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X190eXBlIF9JbnRlZ3JhbDsKICAgX01faW5p
dGlhbGl6ZV9kaXNwYXRjaChfX2ZpcnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKIH0KIyA1MzMg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfbGlzdC5oIiAzCiAgICAgIGxpc3QmCiAg
ICAgIG9wZXJhdG9yPShjb25zdCBsaXN0JiBfX3gpOwojIDU0NiAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICAgICAgdm9pZAogICAgICBhc3NpZ24oc2l6ZV90eXBl
IF9fbiwgY29uc3QgdmFsdWVfdHlwZSYgX192YWwpCiAgICAgIHsgX01fZmlsbF9hc3NpZ24oX19u
LCBfX3ZhbCk7IH0KIyA1NjIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfbGlzdC5o
IiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogICAgICAgIHZvaWQK
ICAgICAgICBhc3NpZ24oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19s
YXN0KQogICAgICAgIHsKCiAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpfX2lzX2ludGVnZXI8X0lu
cHV0SXRlcmF0b3I+OjpfX3R5cGUgX0ludGVncmFsOwogICBfTV9hc3NpZ25fZGlzcGF0Y2goX19m
aXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7CiB9CgoKICAgICAgYWxsb2NhdG9yX3R5cGUKICAg
ICAgZ2V0X2FsbG9jYXRvcigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9CYXNlOjpnZXRfYWxsb2Nh
dG9yKCk7IH0KCgoKCgoKICAgICAgaXRlcmF0b3IKICAgICAgYmVnaW4oKQogICAgICB7IHJldHVy
biBpdGVyYXRvcih0aGlzLT5fTV9pbXBsLl9NX25vZGUuX01fbmV4dCk7IH0KCgoKCgoKICAgICAg
Y29uc3RfaXRlcmF0b3IKICAgICAgYmVnaW4oKSBjb25zdAogICAgICB7IHJldHVybiBjb25zdF9p
dGVyYXRvcih0aGlzLT5fTV9pbXBsLl9NX25vZGUuX01fbmV4dCk7IH0KCgoKCgoKICAgICAgaXRl
cmF0b3IKICAgICAgZW5kKCkKICAgICAgeyByZXR1cm4gaXRlcmF0b3IoJnRoaXMtPl9NX2ltcGwu
X01fbm9kZSk7IH0KCgoKCgoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgZW5kKCkgY29uc3QK
ICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoJnRoaXMtPl9NX2ltcGwuX01fbm9kZSk7IH0K
CgoKCgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvcgogICAgICByYmVnaW4oKQogICAgICB7IHJldHVy
biByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQoKCgoKCgogICAgICBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yCiAgICAgIHJiZWdpbigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IoZW5kKCkpOyB9CgoKCgoKCiAgICAgIHJldmVyc2VfaXRlcmF0b3IKICAgICAgcmVu
ZCgpCiAgICAgIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KCgoKCgoKICAg
ICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcgogICAgICByZW5kKCkgY29uc3QKICAgICAgeyByZXR1
cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQoKCgoKCgogICAgICBib29sCiAg
ICAgIGVtcHR5KCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+X01faW1wbC5fTV9ub2RlLl9N
X25leHQgPT0gJnRoaXMtPl9NX2ltcGwuX01fbm9kZTsgfQoKCiAgICAgIHNpemVfdHlwZQogICAg
ICBzaXplKCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpkaXN0YW5jZShiZWdpbigpLCBlbmQo
KSk7IH0KCgogICAgICBzaXplX3R5cGUKICAgICAgbWF4X3NpemUoKSBjb25zdAogICAgICB7IHJl
dHVybiBfTV9nZXRfVHBfYWxsb2NhdG9yKCkubWF4X3NpemUoKTsgfQojIDY3NyAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICAgICAgdm9pZAogICAgICByZXNpemUo
c2l6ZV90eXBlIF9fbmV3X3NpemUsIHZhbHVlX3R5cGUgX194ID0gdmFsdWVfdHlwZSgpKTsKCgoK
CgoKICAgICAgcmVmZXJlbmNlCiAgICAgIGZyb250KCkKICAgICAgeyByZXR1cm4gKmJlZ2luKCk7
IH0KCgoKCgogICAgICBjb25zdF9yZWZlcmVuY2UKICAgICAgZnJvbnQoKSBjb25zdAogICAgICB7
IHJldHVybiAqYmVnaW4oKTsgfQoKCgoKCiAgICAgIHJlZmVyZW5jZQogICAgICBiYWNrKCkKICAg
ICAgewogaXRlcmF0b3IgX190bXAgPSBlbmQoKTsKIC0tX190bXA7CiByZXR1cm4gKl9fdG1wOwog
ICAgICB9CgoKCgoKICAgICAgY29uc3RfcmVmZXJlbmNlCiAgICAgIGJhY2soKSBjb25zdAogICAg
ICB7CiBjb25zdF9pdGVyYXRvciBfX3RtcCA9IGVuZCgpOwogLS1fX3RtcDsKIHJldHVybiAqX190
bXA7CiAgICAgIH0KIyA3MzIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfbGlzdC5o
IiAzCiAgICAgIHZvaWQKICAgICAgcHVzaF9mcm9udChjb25zdCB2YWx1ZV90eXBlJiBfX3gpCiAg
ICAgIHsgdGhpcy0+X01faW5zZXJ0KGJlZ2luKCksIF9feCk7IH0KIyA3NDggIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9zdGxfbGlzdC5oIiAzCiAgICAgIHZvaWQKICAgICAgcG9wX2Zyb250
KCkKICAgICAgeyB0aGlzLT5fTV9lcmFzZShiZWdpbigpKTsgfQojIDc2MiAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICAgICAgdm9pZAogICAgICBwdXNoX2JhY2so
Y29uc3QgdmFsdWVfdHlwZSYgX194KQogICAgICB7IHRoaXMtPl9NX2luc2VydChlbmQoKSwgX194
KTsgfQojIDc3NyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICAg
ICAgdm9pZAogICAgICBwb3BfYmFjaygpCiAgICAgIHsgdGhpcy0+X01fZXJhc2UoaXRlcmF0b3Io
dGhpcy0+X01faW1wbC5fTV9ub2RlLl9NX3ByZXYpKTsgfQojIDc5MiAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICAgICAgaXRlcmF0b3IKICAgICAgaW5zZXJ0KGl0
ZXJhdG9yIF9fcG9zaXRpb24sIGNvbnN0IHZhbHVlX3R5cGUmIF9feCk7CiMgODA3ICIvdXNyL2lu
Y2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2xpc3QuaCIgMwogICAgICB2b2lkCiAgICAgIGluc2Vy
dChpdGVyYXRvciBfX3Bvc2l0aW9uLCBzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1ZV90eXBlJiBf
X3gpCiAgICAgIHsKIGxpc3QgX190bXAoX19uLCBfX3gsIF9NX2dldF9Ob2RlX2FsbG9jYXRvcigp
KTsKIHNwbGljZShfX3Bvc2l0aW9uLCBfX3RtcCk7CiAgICAgIH0KIyA4MjcgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9zdGxfbGlzdC5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yPgogICAgICAgIHZvaWQKICAgICAgICBpbnNlcnQoaXRlcmF0b3IgX19wb3Np
dGlvbiwgX0lucHV0SXRlcmF0b3IgX19maXJzdCwKICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2xh
c3QpCiAgICAgICAgewogICBsaXN0IF9fdG1wKF9fZmlyc3QsIF9fbGFzdCwgX01fZ2V0X05vZGVf
YWxsb2NhdG9yKCkpOwogICBzcGxpY2UoX19wb3NpdGlvbiwgX190bXApOwogfQojIDg1MSAiL3Vz
ci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICAgICAgaXRlcmF0b3IKICAg
ICAgZXJhc2UoaXRlcmF0b3IgX19wb3NpdGlvbik7CiMgODcyICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvc3RsX2xpc3QuaCIgMwogICAgICBpdGVyYXRvcgogICAgICBlcmFzZShpdGVyYXRv
ciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xhc3QpCiAgICAgIHsKIHdoaWxlIChfX2ZpcnN0ICE9IF9f
bGFzdCkKICAgX19maXJzdCA9IGVyYXNlKF9fZmlyc3QpOwogcmV0dXJuIF9fbGFzdDsKICAgICAg
fQojIDg4OSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICAgICAg
dm9pZAogICAgICBzd2FwKGxpc3QmIF9feCkKICAgICAgewogX0xpc3Rfbm9kZV9iYXNlOjpzd2Fw
KHRoaXMtPl9NX2ltcGwuX01fbm9kZSwgX194Ll9NX2ltcGwuX01fbm9kZSk7CgoKCiBzdGQ6Ol9f
YWxsb2Nfc3dhcDx0eXBlbmFtZSBfQmFzZTo6X05vZGVfYWxsb2NfdHlwZT46OgogICBfU19kb19p
dChfTV9nZXRfTm9kZV9hbGxvY2F0b3IoKSwgX194Ll9NX2dldF9Ob2RlX2FsbG9jYXRvcigpKTsK
ICAgICAgfQoKCgoKCgoKICAgICAgdm9pZAogICAgICBjbGVhcigpCiAgICAgIHsKICAgICAgICBf
QmFzZTo6X01fY2xlYXIoKTsKICAgICAgICBfQmFzZTo6X01faW5pdCgpOwogICAgICB9CiMgOTI1
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2xpc3QuaCIgMwogICAgICB2b2lkCiAg
ICAgIHNwbGljZShpdGVyYXRvciBfX3Bvc2l0aW9uLCBsaXN0JiBfX3gpCiAgICAgIHsKIGlmICgh
X194LmVtcHR5KCkpCiAgIHsKICAgICBfTV9jaGVja19lcXVhbF9hbGxvY2F0b3JzKF9feCk7Cgog
ICAgIHRoaXMtPl9NX3RyYW5zZmVyKF9fcG9zaXRpb24sIF9feC5iZWdpbigpLCBfX3guZW5kKCkp
OwogICB9CiAgICAgIH0KIyA5NDUgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfbGlz
dC5oIiAzCiAgICAgIHZvaWQKICAgICAgc3BsaWNlKGl0ZXJhdG9yIF9fcG9zaXRpb24sIGxpc3Qm
IF9feCwgaXRlcmF0b3IgX19pKQogICAgICB7CiBpdGVyYXRvciBfX2ogPSBfX2k7CiArK19fajsK
IGlmIChfX3Bvc2l0aW9uID09IF9faSB8fCBfX3Bvc2l0aW9uID09IF9faikKICAgcmV0dXJuOwoK
IGlmICh0aGlzICE9ICZfX3gpCiAgIF9NX2NoZWNrX2VxdWFsX2FsbG9jYXRvcnMoX194KTsKCiB0
aGlzLT5fTV90cmFuc2ZlcihfX3Bvc2l0aW9uLCBfX2ksIF9faik7CiAgICAgIH0KIyA5NzEgIi91
c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfbGlzdC5oIiAzCiAgICAgIHZvaWQKICAgICAg
c3BsaWNlKGl0ZXJhdG9yIF9fcG9zaXRpb24sIGxpc3QmIF9feCwgaXRlcmF0b3IgX19maXJzdCwg
aXRlcmF0b3IgX19sYXN0KQogICAgICB7CiBpZiAoX19maXJzdCAhPSBfX2xhc3QpCiAgIHsKICAg
ICBpZiAodGhpcyAhPSAmX194KQogICAgICAgX01fY2hlY2tfZXF1YWxfYWxsb2NhdG9ycyhfX3gp
OwoKICAgICB0aGlzLT5fTV90cmFuc2ZlcihfX3Bvc2l0aW9uLCBfX2ZpcnN0LCBfX2xhc3QpOwog
ICB9CiAgICAgIH0KIyA5OTQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfbGlzdC5o
IiAzCiAgICAgIHZvaWQKICAgICAgcmVtb3ZlKGNvbnN0IF9UcCYgX192YWx1ZSk7CiMgMTAwOCAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgICAgICB2b2lkCiAgICAgICAgcmVtb3ZlX2lmKF9QcmVk
aWNhdGUpOwojIDEwMjIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfbGlzdC5oIiAz
CiAgICAgIHZvaWQKICAgICAgdW5pcXVlKCk7CiMgMTAzNyAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9iaXRzL3N0bF9saXN0LmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpbmFyeVByZWRp
Y2F0ZT4KICAgICAgICB2b2lkCiAgICAgICAgdW5pcXVlKF9CaW5hcnlQcmVkaWNhdGUpOwojIDEw
NTAgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfbGlzdC5oIiAzCiAgICAgIHZvaWQK
ICAgICAgbWVyZ2UobGlzdCYgX194KTsKIyAxMDY1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2Jp
dHMvc3RsX2xpc3QuaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3RyaWN0V2Vha09yZGVy
aW5nPgogICAgICAgIHZvaWQKICAgICAgICBtZXJnZShsaXN0JiwgX1N0cmljdFdlYWtPcmRlcmlu
Zyk7CgoKCgoKCiAgICAgIHZvaWQKICAgICAgcmV2ZXJzZSgpCiAgICAgIHsgdGhpcy0+X01faW1w
bC5fTV9ub2RlLnJldmVyc2UoKTsgfQoKCgoKCgoKICAgICAgdm9pZAogICAgICBzb3J0KCk7CgoK
CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3RyaWN0V2Vha09yZGVyaW5nPgogICAgICAg
IHZvaWQKICAgICAgICBzb3J0KF9TdHJpY3RXZWFrT3JkZXJpbmcpOwoKICAgIHByb3RlY3RlZDoK
CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVnZXI+CiAgICAgICAgdm9pZAogICAgICAg
IF9NX2luaXRpYWxpemVfZGlzcGF0Y2goX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3gsIF9fdHJ1
ZV90eXBlKQogICAgICAgIHsKICAgX01fZmlsbF9pbml0aWFsaXplKHN0YXRpY19jYXN0PHNpemVf
dHlwZT4oX19uKSwKICAgICAgICBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPihfX3gpKTsKIH0KCgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgICAgICB2b2lkCiAgICAg
ICAgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyYXRvciBfX2xhc3QsCiAgICAgICAgICBfX2ZhbHNlX3R5cGUpCiAgICAgICAgewogICBmb3Ig
KDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgICBwdXNoX2JhY2soKl9fZmlyc3Qp
OwogfQoKCgogICAgICB2b2lkCiAgICAgIF9NX2ZpbGxfaW5pdGlhbGl6ZShzaXplX3R5cGUgX19u
LCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpCiAgICAgIHsKIGZvciAoOyBfX24gPiAwOyAtLV9fbikK
ICAgcHVzaF9iYWNrKF9feCk7CiAgICAgIH0KCgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SW50ZWdlcj4KICAgICAgICB2b2lkCiAgICAgICAgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnRlZ2Vy
IF9fbiwgX0ludGVnZXIgX192YWwsIF9fdHJ1ZV90eXBlKQogICAgICAgIHsKICAgX01fZmlsbF9h
c3NpZ24oc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfX24pLAogICAgc3RhdGljX2Nhc3Q8dmFsdWVf
dHlwZT4oX192YWwpKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRv
cj4KICAgICAgICB2b2lkCiAgICAgICAgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnB1dEl0ZXJhdG9y
IF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgX19mYWxzZV90eXBlKTsKCgoK
ICAgICAgdm9pZAogICAgICBfTV9maWxsX2Fzc2lnbihzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1
ZV90eXBlJiBfX3ZhbCk7CgoKCiAgICAgIHZvaWQKICAgICAgX01fdHJhbnNmZXIoaXRlcmF0b3Ig
X19wb3NpdGlvbiwgaXRlcmF0b3IgX19maXJzdCwgaXRlcmF0b3IgX19sYXN0KQogICAgICB7IF9f
cG9zaXRpb24uX01fbm9kZS0+dHJhbnNmZXIoX19maXJzdC5fTV9ub2RlLCBfX2xhc3QuX01fbm9k
ZSk7IH0KCgogICAgICB2b2lkCiAgICAgIF9NX2luc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBj
b25zdCB2YWx1ZV90eXBlJiBfX3gpCiAgICAgIHsKICAgICAgICBfTm9kZSogX190bXAgPSBfTV9j
cmVhdGVfbm9kZShfX3gpOwogICAgICAgIF9fdG1wLT5ob29rKF9fcG9zaXRpb24uX01fbm9kZSk7
CiAgICAgIH0KCgogICAgICB2b2lkCiAgICAgIF9NX2VyYXNlKGl0ZXJhdG9yIF9fcG9zaXRpb24p
CiAgICAgIHsKICAgICAgICBfX3Bvc2l0aW9uLl9NX25vZGUtPnVuaG9vaygpOwogICAgICAgIF9O
b2RlKiBfX24gPSBzdGF0aWNfY2FzdDxfTm9kZSo+KF9fcG9zaXRpb24uX01fbm9kZSk7CiAgICAg
ICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpLmRlc3Ryb3koJl9fbi0+X01fZGF0YSk7CiAgICAgICAg
X01fcHV0X25vZGUoX19uKTsKICAgICAgfQoKCiAgICAgIHZvaWQKICAgICAgX01fY2hlY2tfZXF1
YWxfYWxsb2NhdG9ycyhsaXN0JiBfX3gpCiAgICAgIHsKIGlmIChfTV9nZXRfTm9kZV9hbGxvY2F0
b3IoKSAhPSBfX3guX01fZ2V0X05vZGVfYWxsb2NhdG9yKCkpCiAgIF9fdGhyb3dfcnVudGltZV9l
cnJvcigoImxpc3Q6Ol9NX2NoZWNrX2VxdWFsX2FsbG9jYXRvcnMiKSk7CiAgICAgIH0KICAgIH07
CiMgMTE5NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvcj09KGNvbnN0IGxpc3Q8X1RwLCBfQWxsb2M+JiBfX3gsIGNvbnN0IGxpc3Q8X1RwLCBf
QWxsb2M+JiBfX3kpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDxfVHAsIF9BbGxv
Yz46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgICBjb25zdF9pdGVyYXRvciBf
X2VuZDEgPSBfX3guZW5kKCk7CiAgICAgIGNvbnN0X2l0ZXJhdG9yIF9fZW5kMiA9IF9feS5lbmQo
KTsKCiAgICAgIGNvbnN0X2l0ZXJhdG9yIF9faTEgPSBfX3guYmVnaW4oKTsKICAgICAgY29uc3Rf
aXRlcmF0b3IgX19pMiA9IF9feS5iZWdpbigpOwogICAgICB3aGlsZSAoX19pMSAhPSBfX2VuZDEg
JiYgX19pMiAhPSBfX2VuZDIgJiYgKl9faTEgPT0gKl9faTIpCiB7CiAgICsrX19pMTsKICAgKytf
X2kyOwogfQogICAgICByZXR1cm4gX19pMSA9PSBfX2VuZDEgJiYgX19pMiA9PSBfX2VuZDI7CiAg
ICB9CiMgMTIyMyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF9saXN0LmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAg
ICBvcGVyYXRvcjwoY29uc3QgbGlzdDxfVHAsIF9BbGxvYz4mIF9feCwgY29uc3QgbGlzdDxfVHAs
IF9BbGxvYz4mIF9feSkKICAgIHsgcmV0dXJuIHN0ZDo6bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUo
X194LmJlZ2luKCksIF9feC5lbmQoKSwKICAgICAgIF9feS5iZWdpbigpLCBfX3kuZW5kKCkpOyB9
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBi
b29sCiAgICBvcGVyYXRvciE9KGNvbnN0IGxpc3Q8X1RwLCBfQWxsb2M+JiBfX3gsIGNvbnN0IGxp
c3Q8X1RwLCBfQWxsb2M+JiBfX3kpCiAgICB7IHJldHVybiAhKF9feCA9PSBfX3kpOyB9CgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAg
ICBvcGVyYXRvcj4oY29uc3QgbGlzdDxfVHAsIF9BbGxvYz4mIF9feCwgY29uc3QgbGlzdDxfVHAs
IF9BbGxvYz4mIF9feSkKICAgIHsgcmV0dXJuIF9feSA8IF9feDsgfQoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8
PShjb25zdCBsaXN0PF9UcCwgX0FsbG9jPiYgX194LCBjb25zdCBsaXN0PF9UcCwgX0FsbG9jPiYg
X195KQogICAgeyByZXR1cm4gIShfX3kgPCBfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0
IGxpc3Q8X1RwLCBfQWxsb2M+JiBfX3gsIGNvbnN0IGxpc3Q8X1RwLCBfQWxsb2M+JiBfX3kpCiAg
ICB7IHJldHVybiAhKF9feCA8IF9feSk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw
ZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAobGlzdDxfVHAsIF9BbGxvYz4m
IF9feCwgbGlzdDxfVHAsIF9BbGxvYz4mIF9feSkKICAgIHsgX194LnN3YXAoX195KTsgfQoKfQoj
IDcxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2xpc3QiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRl
L2MrKy80LjIuMS9iaXRzL2xpc3QudGNjIiAxIDMKIyA2MyAiL3Vzci9pbmNsdWRlL2MrKy80LjIu
MS9iaXRzL2xpc3QudGNjIiAzCiNkZWZpbmUgX0xJU1RfVENDIDEKCm5hbWVzcGFjZSBzdGQgewoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHZvaWQKICAgIF9M
aXN0X2Jhc2U8X1RwLCBfQWxsb2M+OjoKICAgIF9NX2NsZWFyKCkKICAgIHsKICAgICAgdHlwZWRl
ZiBfTGlzdF9ub2RlPF9UcD4gX05vZGU7CiAgICAgIF9Ob2RlKiBfX2N1ciA9IHN0YXRpY19jYXN0
PF9Ob2RlKj4odGhpcy0+X01faW1wbC5fTV9ub2RlLl9NX25leHQpOwogICAgICB3aGlsZSAoX19j
dXIgIT0gJnRoaXMtPl9NX2ltcGwuX01fbm9kZSkKIHsKICAgX05vZGUqIF9fdG1wID0gX19jdXI7
CiAgIF9fY3VyID0gc3RhdGljX2Nhc3Q8X05vZGUqPihfX2N1ci0+X01fbmV4dCk7CiAgIF9NX2dl
dF9UcF9hbGxvY2F0b3IoKS5kZXN0cm95KCZfX3RtcC0+X01fZGF0YSk7CiAgIF9NX3B1dF9ub2Rl
KF9fdG1wKTsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxs
b2M+CiAgICB0eXBlbmFtZSBsaXN0PF9UcCwgX0FsbG9jPjo6aXRlcmF0b3IKICAgIGxpc3Q8X1Rw
LCBfQWxsb2M+OjoKICAgIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCB2YWx1ZV90
eXBlJiBfX3gpCiAgICB7CiAgICAgIF9Ob2RlKiBfX3RtcCA9IF9NX2NyZWF0ZV9ub2RlKF9feCk7
CiAgICAgIF9fdG1wLT5ob29rKF9fcG9zaXRpb24uX01fbm9kZSk7CiAgICAgIHJldHVybiBpdGVy
YXRvcihfX3RtcCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0Fs
bG9jPgogICAgdHlwZW5hbWUgbGlzdDxfVHAsIF9BbGxvYz46Oml0ZXJhdG9yCiAgICBsaXN0PF9U
cCwgX0FsbG9jPjo6CiAgICBlcmFzZShpdGVyYXRvciBfX3Bvc2l0aW9uKQogICAgewogICAgICBp
dGVyYXRvciBfX3JldCA9IGl0ZXJhdG9yKF9fcG9zaXRpb24uX01fbm9kZS0+X01fbmV4dCk7CiAg
ICAgIF9NX2VyYXNlKF9fcG9zaXRpb24pOwogICAgICByZXR1cm4gX19yZXQ7CiAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgbGlzdDxf
VHAsIF9BbGxvYz46OgogICAgcmVzaXplKHNpemVfdHlwZSBfX25ld19zaXplLCB2YWx1ZV90eXBl
IF9feCkKICAgIHsKICAgICAgaXRlcmF0b3IgX19pID0gYmVnaW4oKTsKICAgICAgc2l6ZV90eXBl
IF9fbGVuID0gMDsKICAgICAgZm9yICg7IF9faSAhPSBlbmQoKSAmJiBfX2xlbiA8IF9fbmV3X3Np
emU7ICsrX19pLCArK19fbGVuKQogICAgICAgIDsKICAgICAgaWYgKF9fbGVuID09IF9fbmV3X3Np
emUpCiAgICAgICAgZXJhc2UoX19pLCBlbmQoKSk7CiAgICAgIGVsc2UKICAgICAgICBpbnNlcnQo
ZW5kKCksIF9fbmV3X3NpemUgLSBfX2xlbiwgX194KTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBsaXN0PF9UcCwgX0FsbG9jPiYKICAgIGxpc3Q8
X1RwLCBfQWxsb2M+OjoKICAgIG9wZXJhdG9yPShjb25zdCBsaXN0JiBfX3gpCiAgICB7CiAgICAg
IGlmICh0aGlzICE9ICZfX3gpCiB7CiAgIGl0ZXJhdG9yIF9fZmlyc3QxID0gYmVnaW4oKTsKICAg
aXRlcmF0b3IgX19sYXN0MSA9IGVuZCgpOwogICBjb25zdF9pdGVyYXRvciBfX2ZpcnN0MiA9IF9f
eC5iZWdpbigpOwogICBjb25zdF9pdGVyYXRvciBfX2xhc3QyID0gX194LmVuZCgpOwogICBmb3Ig
KDsgX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyOwogICAgICAgICsr
X19maXJzdDEsICsrX19maXJzdDIpCiAgICAgKl9fZmlyc3QxID0gKl9fZmlyc3QyOwogICBpZiAo
X19maXJzdDIgPT0gX19sYXN0MikKICAgICBlcmFzZShfX2ZpcnN0MSwgX19sYXN0MSk7CiAgIGVs
c2UKICAgICBpbnNlcnQoX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIpOwogfQogICAgICByZXR1
cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9j
PgogICAgdm9pZAogICAgbGlzdDxfVHAsIF9BbGxvYz46OgogICAgX01fZmlsbF9hc3NpZ24oc2l6
ZV90eXBlIF9fbiwgY29uc3QgdmFsdWVfdHlwZSYgX192YWwpCiAgICB7CiAgICAgIGl0ZXJhdG9y
IF9faSA9IGJlZ2luKCk7CiAgICAgIGZvciAoOyBfX2kgIT0gZW5kKCkgJiYgX19uID4gMDsgKytf
X2ksIC0tX19uKQogICAgICAgICpfX2kgPSBfX3ZhbDsKICAgICAgaWYgKF9fbiA+IDApCiAgICAg
ICAgaW5zZXJ0KGVuZCgpLCBfX24sIF9fdmFsKTsKICAgICAgZWxzZQogICAgICAgIGVyYXNlKF9f
aSwgZW5kKCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxv
Yz4KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgICAgdm9pZAogICAg
ICBsaXN0PF9UcCwgX0FsbG9jPjo6CiAgICAgIF9NX2Fzc2lnbl9kaXNwYXRjaChfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0MiwgX0lucHV0SXRlcmF0b3IgX19sYXN0MiwKICAgIF9fZmFsc2VfdHlwZSkK
ICAgICAgewogICAgICAgIGl0ZXJhdG9yIF9fZmlyc3QxID0gYmVnaW4oKTsKICAgICAgICBpdGVy
YXRvciBfX2xhc3QxID0gZW5kKCk7CiAgICAgICAgZm9yICg7IF9fZmlyc3QxICE9IF9fbGFzdDEg
JiYgX19maXJzdDIgIT0gX19sYXN0MjsKICAgICAgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikKICAg
ICAgICAgICpfX2ZpcnN0MSA9ICpfX2ZpcnN0MjsKICAgICAgICBpZiAoX19maXJzdDIgPT0gX19s
YXN0MikKICAgICAgICAgIGVyYXNlKF9fZmlyc3QxLCBfX2xhc3QxKTsKICAgICAgICBlbHNlCiAg
ICAgICAgICBpbnNlcnQoX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIpOwogICAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgbGlzdDxf
VHAsIF9BbGxvYz46OgogICAgcmVtb3ZlKGNvbnN0IHZhbHVlX3R5cGUmIF9fdmFsdWUpCiAgICB7
CiAgICAgIGl0ZXJhdG9yIF9fZmlyc3QgPSBiZWdpbigpOwogICAgICBpdGVyYXRvciBfX2xhc3Qg
PSBlbmQoKTsKICAgICAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KQogewogICBpdGVyYXRvciBf
X25leHQgPSBfX2ZpcnN0OwogICArK19fbmV4dDsKICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsdWUp
CiAgICAgX01fZXJhc2UoX19maXJzdCk7CiAgIF9fZmlyc3QgPSBfX25leHQ7CiB9CiAgICB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgbGlz
dDxfVHAsIF9BbGxvYz46OgogICAgdW5pcXVlKCkKICAgIHsKICAgICAgaXRlcmF0b3IgX19maXJz
dCA9IGJlZ2luKCk7CiAgICAgIGl0ZXJhdG9yIF9fbGFzdCA9IGVuZCgpOwogICAgICBpZiAoX19m
aXJzdCA9PSBfX2xhc3QpCiByZXR1cm47CiAgICAgIGl0ZXJhdG9yIF9fbmV4dCA9IF9fZmlyc3Q7
CiAgICAgIHdoaWxlICgrK19fbmV4dCAhPSBfX2xhc3QpCiB7CiAgIGlmICgqX19maXJzdCA9PSAq
X19uZXh0KQogICAgIF9NX2VyYXNlKF9fbmV4dCk7CiAgIGVsc2UKICAgICBfX2ZpcnN0ID0gX19u
ZXh0OwogICBfX25leHQgPSBfX2ZpcnN0OwogfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHZvaWQKICAgIGxpc3Q8X1RwLCBfQWxsb2M+OjoKICAg
IG1lcmdlKGxpc3QmIF9feCkKICAgIHsKCgogICAgICBpZiAodGhpcyAhPSAmX194KQogewogICBf
TV9jaGVja19lcXVhbF9hbGxvY2F0b3JzKF9feCk7CgogICBpdGVyYXRvciBfX2ZpcnN0MSA9IGJl
Z2luKCk7CiAgIGl0ZXJhdG9yIF9fbGFzdDEgPSBlbmQoKTsKICAgaXRlcmF0b3IgX19maXJzdDIg
PSBfX3guYmVnaW4oKTsKICAgaXRlcmF0b3IgX19sYXN0MiA9IF9feC5lbmQoKTsKICAgd2hpbGUg
KF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikKICAgICBpZiAoKl9f
Zmlyc3QyIDwgKl9fZmlyc3QxKQogICAgICAgewogIGl0ZXJhdG9yIF9fbmV4dCA9IF9fZmlyc3Qy
OwogIF9NX3RyYW5zZmVyKF9fZmlyc3QxLCBfX2ZpcnN0MiwgKytfX25leHQpOwogIF9fZmlyc3Qy
ID0gX19uZXh0OwogICAgICAgfQogICAgIGVsc2UKICAgICAgICsrX19maXJzdDE7CiAgIGlmIChf
X2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgIF9NX3RyYW5zZmVyKF9fbGFzdDEsIF9fZmlyc3QyLCBf
X2xhc3QyKTsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxs
b2M+CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1N0cmljdFdlYWtPcmRlcmluZz4KICAgICAgdm9p
ZAogICAgICBsaXN0PF9UcCwgX0FsbG9jPjo6CiAgICAgIG1lcmdlKGxpc3QmIF9feCwgX1N0cmlj
dFdlYWtPcmRlcmluZyBfX2NvbXApCiAgICAgIHsKCgogaWYgKHRoaXMgIT0gJl9feCkKICAgewog
ICAgIF9NX2NoZWNrX2VxdWFsX2FsbG9jYXRvcnMoX194KTsKCiAgICAgaXRlcmF0b3IgX19maXJz
dDEgPSBiZWdpbigpOwogICAgIGl0ZXJhdG9yIF9fbGFzdDEgPSBlbmQoKTsKICAgICBpdGVyYXRv
ciBfX2ZpcnN0MiA9IF9feC5iZWdpbigpOwogICAgIGl0ZXJhdG9yIF9fbGFzdDIgPSBfX3guZW5k
KCk7CiAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0
MikKICAgICAgIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKQogIHsKICAgIGl0ZXJh
dG9yIF9fbmV4dCA9IF9fZmlyc3QyOwogICAgX01fdHJhbnNmZXIoX19maXJzdDEsIF9fZmlyc3Qy
LCArK19fbmV4dCk7CiAgICBfX2ZpcnN0MiA9IF9fbmV4dDsKICB9CiAgICAgICBlbHNlCiAgKytf
X2ZpcnN0MTsKICAgICBpZiAoX19maXJzdDIgIT0gX19sYXN0MikKICAgICAgIF9NX3RyYW5zZmVy
KF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyKTsKICAgfQogICAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgbGlzdDxfVHAsIF9BbGxv
Yz46OgogICAgc29ydCgpCiAgICB7CgogICAgICBpZiAodGhpcy0+X01faW1wbC5fTV9ub2RlLl9N
X25leHQgIT0gJnRoaXMtPl9NX2ltcGwuX01fbm9kZQogICAmJiB0aGlzLT5fTV9pbXBsLl9NX25v
ZGUuX01fbmV4dC0+X01fbmV4dCAhPSAmdGhpcy0+X01faW1wbC5fTV9ub2RlKQogICAgICB7CiAg
ICAgICAgbGlzdCBfX2NhcnJ5OwogICAgICAgIGxpc3QgX190bXBbNjRdOwogICAgICAgIGxpc3Qg
KiBfX2ZpbGwgPSAmX190bXBbMF07CiAgICAgICAgbGlzdCAqIF9fY291bnRlcjsKCiAgICAgICAg
ZG8KICAgewogICAgIF9fY2Fycnkuc3BsaWNlKF9fY2FycnkuYmVnaW4oKSwgKnRoaXMsIGJlZ2lu
KCkpOwoKICAgICBmb3IoX19jb3VudGVyID0gJl9fdG1wWzBdOwogIF9fY291bnRlciAhPSBfX2Zp
bGwgJiYgIV9fY291bnRlci0+ZW1wdHkoKTsKICArK19fY291bnRlcikKICAgICAgIHsKICBfX2Nv
dW50ZXItPm1lcmdlKF9fY2FycnkpOwogIF9fY2Fycnkuc3dhcCgqX19jb3VudGVyKTsKICAgICAg
IH0KICAgICBfX2NhcnJ5LnN3YXAoKl9fY291bnRlcik7CiAgICAgaWYgKF9fY291bnRlciA9PSBf
X2ZpbGwpCiAgICAgICArK19fZmlsbDsKICAgfQogd2hpbGUgKCAhZW1wdHkoKSApOwoKICAgICAg
ICBmb3IgKF9fY291bnRlciA9ICZfX3RtcFsxXTsgX19jb3VudGVyICE9IF9fZmlsbDsgKytfX2Nv
dW50ZXIpCiAgICAgICAgICBfX2NvdW50ZXItPm1lcmdlKCooX19jb3VudGVyIC0gMSkpOwogICAg
ICAgIHN3YXAoICooX19maWxsIC0gMSkgKTsKICAgICAgfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfUHJlZGlj
YXRlPgogICAgICB2b2lkCiAgICAgIGxpc3Q8X1RwLCBfQWxsb2M+OjoKICAgICAgcmVtb3ZlX2lm
KF9QcmVkaWNhdGUgX19wcmVkKQogICAgICB7CiAgICAgICAgaXRlcmF0b3IgX19maXJzdCA9IGJl
Z2luKCk7CiAgICAgICAgaXRlcmF0b3IgX19sYXN0ID0gZW5kKCk7CiAgICAgICAgd2hpbGUgKF9f
Zmlyc3QgIT0gX19sYXN0KQogICB7CiAgICAgaXRlcmF0b3IgX19uZXh0ID0gX19maXJzdDsKICAg
ICArK19fbmV4dDsKICAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICAgIF9NX2VyYXNlKF9f
Zmlyc3QpOwogICAgIF9fZmlyc3QgPSBfX25leHQ7CiAgIH0KICAgICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfQmlu
YXJ5UHJlZGljYXRlPgogICAgICB2b2lkCiAgICAgIGxpc3Q8X1RwLCBfQWxsb2M+OjoKICAgICAg
dW5pcXVlKF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkKICAgICAgewogICAgICAgIGl0
ZXJhdG9yIF9fZmlyc3QgPSBiZWdpbigpOwogICAgICAgIGl0ZXJhdG9yIF9fbGFzdCA9IGVuZCgp
OwogICAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgcmV0dXJuOwogICAgICAgIGl0ZXJh
dG9yIF9fbmV4dCA9IF9fZmlyc3Q7CiAgICAgICAgd2hpbGUgKCsrX19uZXh0ICE9IF9fbGFzdCkK
ICAgewogICAgIGlmIChfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0LCAqX19uZXh0KSkKICAgICAgIF9N
X2VyYXNlKF9fbmV4dCk7CiAgICAgZWxzZQogICAgICAgX19maXJzdCA9IF9fbmV4dDsKICAgICBf
X25leHQgPSBfX2ZpcnN0OwogICB9CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1N0cmljdFdlYWtPcmRlcmlu
Zz4KICAgICAgdm9pZAogICAgICBsaXN0PF9UcCwgX0FsbG9jPjo6CiAgICAgIHNvcnQoX1N0cmlj
dFdlYWtPcmRlcmluZyBfX2NvbXApCiAgICAgIHsKCiBpZiAodGhpcy0+X01faW1wbC5fTV9ub2Rl
Ll9NX25leHQgIT0gJnRoaXMtPl9NX2ltcGwuX01fbm9kZQogICAgICYmIHRoaXMtPl9NX2ltcGwu
X01fbm9kZS5fTV9uZXh0LT5fTV9uZXh0ICE9ICZ0aGlzLT5fTV9pbXBsLl9NX25vZGUpCiAgIHsK
ICAgICBsaXN0IF9fY2Fycnk7CiAgICAgbGlzdCBfX3RtcFs2NF07CiAgICAgbGlzdCAqIF9fZmls
bCA9ICZfX3RtcFswXTsKICAgICBsaXN0ICogX19jb3VudGVyOwoKICAgICBkbwogICAgICAgewog
IF9fY2Fycnkuc3BsaWNlKF9fY2FycnkuYmVnaW4oKSwgKnRoaXMsIGJlZ2luKCkpOwoKICBmb3Io
X19jb3VudGVyID0gJl9fdG1wWzBdOwogICAgICBfX2NvdW50ZXIgIT0gX19maWxsICYmICFfX2Nv
dW50ZXItPmVtcHR5KCk7CiAgICAgICsrX19jb3VudGVyKQogICAgewogICAgICBfX2NvdW50ZXIt
Pm1lcmdlKF9fY2FycnksIF9fY29tcCk7CiAgICAgIF9fY2Fycnkuc3dhcCgqX19jb3VudGVyKTsK
ICAgIH0KICBfX2NhcnJ5LnN3YXAoKl9fY291bnRlcik7CiAgaWYgKF9fY291bnRlciA9PSBfX2Zp
bGwpCiAgICArK19fZmlsbDsKICAgICAgIH0KICAgICB3aGlsZSAoICFlbXB0eSgpICk7CgogICAg
IGZvciAoX19jb3VudGVyID0gJl9fdG1wWzFdOyBfX2NvdW50ZXIgIT0gX19maWxsOyArK19fY291
bnRlcikKICAgICAgIF9fY291bnRlci0+bWVyZ2UoKihfX2NvdW50ZXIgLSAxKSwgX19jb21wKTsK
ICAgICBzd2FwKCooX19maWxsIC0gMSkpOwogICB9CiAgICAgIH0KCn0KIyA3NCAiL3Vzci9pbmNs
dWRlL2MrKy80LjIuMS9saXN0IiAyIDMKIyA1MiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9x
bGlzdC5oIiAyCgoKCgoKCgoKCgp0eXBlZGVmIFF0VmFsaWRMaWNlbnNlRm9yQ29yZU1vZHVsZSBR
dENvcmVNb2R1bGU7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUVZlY3RvcjsKdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFFTZXQ7CgpzdHJ1Y3QgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkgUUxpc3REYXRhIHsKICAgIHN0cnVjdCBEYXRhIHsKICAgICAgICBR
QmFzaWNBdG9taWNJbnQgcmVmOwogICAgICAgIGludCBhbGxvYywgYmVnaW4sIGVuZDsKICAgICAg
ICB1aW50IHNoYXJhYmxlIDogMTsKICAgICAgICB2b2lkICphcnJheVsxXTsKICAgIH07CiAgICBl
bnVtIHsgRGF0YUhlYWRlclNpemUgPSBzaXplb2YoRGF0YSkgLSBzaXplb2Yodm9pZCAqKSB9OwoK
ICAgIERhdGEgKmRldGFjaChpbnQgYWxsb2MpOwogICAgRGF0YSAqZGV0YWNoX2dyb3coaW50ICpp
LCBpbnQgbik7CiAgICBEYXRhICpkZXRhY2goKTsKICAgIERhdGEgKmRldGFjaDIoKTsKICAgIERh
dGEgKmRldGFjaDMoKTsKICAgIHZvaWQgcmVhbGxvYyhpbnQgYWxsb2MpOwogICAgc3RhdGljIERh
dGEgc2hhcmVkX251bGw7CiAgICBEYXRhICpkOwogICAgdm9pZCAqKmVyYXNlKHZvaWQgKip4aSk7
CiAgICB2b2lkICoqYXBwZW5kKGludCBuKTsKICAgIHZvaWQgKiphcHBlbmQoKTsKICAgIHZvaWQg
KiphcHBlbmQoY29uc3QgUUxpc3REYXRhICZsKTsKICAgIHZvaWQgKiphcHBlbmQyKGNvbnN0IFFM
aXN0RGF0YSAmbCk7CiAgICB2b2lkICoqcHJlcGVuZCgpOwogICAgdm9pZCAqKmluc2VydChpbnQg
aSk7CiAgICB2b2lkIHJlbW92ZShpbnQgaSk7CiAgICB2b2lkIHJlbW92ZShpbnQgaSwgaW50IG4p
OwogICAgdm9pZCBtb3ZlKGludCBmcm9tLCBpbnQgdG8pOwogICAgaW5saW5lIGludCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gZC0+ZW5kIC0gZC0+YmVnaW47IH0KICAgIGlubGluZSBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBkLT5lbmQgPT0gZC0+YmVnaW47IH0KICAgIGlubGluZSB2b2lk
ICoqYXQoaW50IGkpIGNvbnN0IHsgcmV0dXJuIGQtPmFycmF5ICsgZC0+YmVnaW4gKyBpOyB9CiAg
ICBpbmxpbmUgdm9pZCAqKmJlZ2luKCkgY29uc3QgeyByZXR1cm4gZC0+YXJyYXkgKyBkLT5iZWdp
bjsgfQogICAgaW5saW5lIHZvaWQgKiplbmQoKSBjb25zdCB7IHJldHVybiBkLT5hcnJheSArIGQt
PmVuZDsgfQp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIFFMaXN0CnsKICAgIHN0cnVj
dCBOb2RlIHsgdm9pZCAqdjsKCgoKICAgICAgICBpbmxpbmUgVCAmdCgpCiAgICAgICAgeyByZXR1
cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VCo+KFFUeXBlSW5mbzxUPjo6aXNMYXJnZSB8fCBRVHlwZUlu
Zm88VD46OmlzU3RhdGljCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8g
diA6IHRoaXMpOyB9CgogICAgfTsKCiAgICB1bmlvbiB7IFFMaXN0RGF0YSBwOyBRTGlzdERhdGE6
OkRhdGEgKmQ7IH07CgpwdWJsaWM6CiAgICBpbmxpbmUgUUxpc3QoKSA6IGQoJlFMaXN0RGF0YTo6
c2hhcmVkX251bGwpIHsgZC0+cmVmLnJlZigpOyB9CiAgICBpbmxpbmUgUUxpc3QoY29uc3QgUUxp
c3Q8VD4gJmwpIDogZChsLmQpIHsgZC0+cmVmLnJlZigpOyBpZiAoIWQtPnNoYXJhYmxlKSBkZXRh
Y2hfaGVscGVyKCk7IH0KICAgIH5RTGlzdCgpOwogICAgUUxpc3Q8VD4gJm9wZXJhdG9yPShjb25z
dCBRTGlzdDxUPiAmbCk7CiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUUxpc3Q8VD4gJmwpIGNv
bnN0OwogICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRTGlzdDxUPiAmbCkgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBsKTsgfQoKICAgIGlubGluZSBpbnQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIHAuc2l6ZSgpOyB9CgogICAgaW5saW5lIHZvaWQgZGV0YWNoKCkgeyBpZiAoZC0+cmVm
ICE9IDEpIGRldGFjaF9oZWxwZXIoKTsgfQoKICAgIGlubGluZSB2b2lkIGRldGFjaFNoYXJlZCgp
CiAgICB7CgogICAgICAgIGlmIChkLT5yZWYgIT0gMSAmJiB0aGlzLT5kICE9ICZRTGlzdERhdGE6
OnNoYXJlZF9udWxsKQogICAgICAgICAgICBkZXRhY2hfaGVscGVyKCk7CiAgICB9CgogICAgaW5s
aW5lIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIGQtPnJlZiA9PSAxOyB9CiAgICBp
bmxpbmUgdm9pZCBzZXRTaGFyYWJsZShib29sIHNoYXJhYmxlKSB7IGlmICghc2hhcmFibGUpIGRl
dGFjaCgpOyBkLT5zaGFyYWJsZSA9IHNoYXJhYmxlOyB9CiAgICBpbmxpbmUgYm9vbCBpc1NoYXJl
ZFdpdGgoY29uc3QgUUxpc3Q8VD4gJm90aGVyKSBjb25zdCB7IHJldHVybiBkID09IG90aGVyLmQ7
IH0KCiAgICBpbmxpbmUgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gcC5pc0VtcHR5KCk7
IH0KCiAgICB2b2lkIGNsZWFyKCk7CgogICAgY29uc3QgVCAmYXQoaW50IGkpIGNvbnN0OwogICAg
Y29uc3QgVCAmb3BlcmF0b3JbXShpbnQgaSkgY29uc3Q7CiAgICBUICZvcGVyYXRvcltdKGludCBp
KTsKCiAgICB2b2lkIHJlc2VydmUoaW50IHNpemUpOwogICAgdm9pZCBhcHBlbmQoY29uc3QgVCAm
dCk7CiAgICB2b2lkIGFwcGVuZChjb25zdCBRTGlzdDxUPiAmdCk7CiAgICB2b2lkIHByZXBlbmQo
Y29uc3QgVCAmdCk7CiAgICB2b2lkIGluc2VydChpbnQgaSwgY29uc3QgVCAmdCk7CiAgICB2b2lk
IHJlcGxhY2UoaW50IGksIGNvbnN0IFQgJnQpOwogICAgdm9pZCByZW1vdmVBdChpbnQgaSk7CiAg
ICBpbnQgcmVtb3ZlQWxsKGNvbnN0IFQgJnQpOwogICAgYm9vbCByZW1vdmVPbmUoY29uc3QgVCAm
dCk7CiAgICBUIHRha2VBdChpbnQgaSk7CiAgICBUIHRha2VGaXJzdCgpOwogICAgVCB0YWtlTGFz
dCgpOwogICAgdm9pZCBtb3ZlKGludCBmcm9tLCBpbnQgdG8pOwogICAgdm9pZCBzd2FwKGludCBp
LCBpbnQgaik7CiAgICBpbnQgaW5kZXhPZihjb25zdCBUICZ0LCBpbnQgZnJvbSA9IDApIGNvbnN0
OwogICAgaW50IGxhc3RJbmRleE9mKGNvbnN0IFQgJnQsIGludCBmcm9tID0gLTEpIGNvbnN0Owog
ICAgUUJvb2wgY29udGFpbnMoY29uc3QgVCAmdCkgY29uc3Q7CiAgICBpbnQgY291bnQoY29uc3Qg
VCAmdCkgY29uc3Q7CgogICAgY2xhc3MgY29uc3RfaXRlcmF0b3I7CgogICAgY2xhc3MgaXRlcmF0
b3IgewogICAgcHVibGljOgogICAgICAgIE5vZGUgKmk7CiAgICAgICAgdHlwZWRlZiBzdGQ6OnJh
bmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogICAgICAgIHR5cGVk
ZWYgcXB0cmRpZmYgZGlmZmVyZW5jZV90eXBlOwogICAgICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBl
OwogICAgICAgIHR5cGVkZWYgVCAqcG9pbnRlcjsKICAgICAgICB0eXBlZGVmIFQgJnJlZmVyZW5j
ZTsKCiAgICAgICAgaW5saW5lIGl0ZXJhdG9yKCkgOiBpKDApIHt9CiAgICAgICAgaW5saW5lIGl0
ZXJhdG9yKE5vZGUgKm4pIDogaShuKSB7fQogICAgICAgIGlubGluZSBpdGVyYXRvcihjb25zdCBp
dGVyYXRvciAmbyk6IGkoby5pKXt9CiAgICAgICAgaW5saW5lIFQgJm9wZXJhdG9yKigpIGNvbnN0
IHsgcmV0dXJuIGktPnQoKTsgfQogICAgICAgIGlubGluZSBUICpvcGVyYXRvci0+KCkgY29uc3Qg
eyByZXR1cm4gJmktPnQoKTsgfQogICAgICAgIGlubGluZSBUICZvcGVyYXRvcltdKGludCBqKSBj
b25zdCB7IHJldHVybiBpW2pdLnQoKTsgfQogICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgaXRlcmF0b3IgJm8pIGNvbnN0IHsgcmV0dXJuIGkgPT0gby5pOyB9CiAgICAgICAgaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciAmbykgY29uc3QgeyByZXR1cm4gaSAh
PSBvLmk7IH0KICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgaXRlcmF0b3ImIG90
aGVyKSBjb25zdCB7IHJldHVybiBpIDwgb3RoZXIuaTsgfQogICAgICAgIGlubGluZSBib29sIG9w
ZXJhdG9yPD0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBpIDw9IG90aGVy
Lmk7IH0KICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdCB7IHJldHVybiBpID4gb3RoZXIuaTsgfQogICAgICAgIGlubGluZSBib29sIG9wZXJh
dG9yPj0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBpID49IG90aGVyLmk7
IH0KCiAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciAm
bykgY29uc3QKICAgICAgICAgICAgeyByZXR1cm4gaSA9PSBvLmk7IH0KICAgICAgICBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGNvbnN0X2l0ZXJhdG9yICZvKSBjb25zdAogICAgICAgICAg
ICB7IHJldHVybiBpICE9IG8uaTsgfQogICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPChjb25z
dCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgICAgIHsgcmV0dXJuIGkgPCBv
dGhlci5pOyB9CiAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBjb25zdF9pdGVy
YXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgICAgIHsgcmV0dXJuIGkgPD0gb3RoZXIuaTsgfQog
ICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIp
IGNvbnN0CiAgICAgICAgICAgIHsgcmV0dXJuIGkgPiBvdGhlci5pOyB9CiAgICAgICAgaW5saW5l
IGJvb2wgb3BlcmF0b3I+PShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAg
ICAgICAgIHsgcmV0dXJuIGkgPj0gb3RoZXIuaTsgfQoKICAgICAgICBpbmxpbmUgaXRlcmF0b3Ig
Jm9wZXJhdG9yKysoKSB7ICsraTsgcmV0dXJuICp0aGlzOyB9CiAgICAgICAgaW5saW5lIGl0ZXJh
dG9yIG9wZXJhdG9yKysoaW50KSB7IE5vZGUgKm4gPSBpOyArK2k7IHJldHVybiBuOyB9CiAgICAg
ICAgaW5saW5lIGl0ZXJhdG9yICZvcGVyYXRvci0tKCkgeyBpLS07IHJldHVybiAqdGhpczsgfQog
ICAgICAgIGlubGluZSBpdGVyYXRvciBvcGVyYXRvci0tKGludCkgeyBOb2RlICpuID0gaTsgaS0t
OyByZXR1cm4gbjsgfQogICAgICAgIGlubGluZSBpdGVyYXRvciAmb3BlcmF0b3IrPShpbnQgaikg
eyBpKz1qOyByZXR1cm4gKnRoaXM7IH0KICAgICAgICBpbmxpbmUgaXRlcmF0b3IgJm9wZXJhdG9y
LT0oaW50IGopIHsgaS09ajsgcmV0dXJuICp0aGlzOyB9CiAgICAgICAgaW5saW5lIGl0ZXJhdG9y
IG9wZXJhdG9yKyhpbnQgaikgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoaStqKTsgfQogICAgICAg
IGlubGluZSBpdGVyYXRvciBvcGVyYXRvci0oaW50IGopIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9y
KGktaik7IH0KICAgICAgICBpbmxpbmUgaW50IG9wZXJhdG9yLShpdGVyYXRvciBqKSBjb25zdCB7
IHJldHVybiBpbnQoaSAtIGouaSk7IH0KICAgIH07CiAgICBmcmllbmQgY2xhc3MgaXRlcmF0b3I7
CgogICAgY2xhc3MgY29uc3RfaXRlcmF0b3IgewogICAgcHVibGljOgogICAgICAgIE5vZGUgKmk7
CiAgICAgICAgdHlwZWRlZiBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9y
X2NhdGVnb3J5OwogICAgICAgIHR5cGVkZWYgcXB0cmRpZmYgZGlmZmVyZW5jZV90eXBlOwogICAg
ICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwogICAgICAgIHR5cGVkZWYgY29uc3QgVCAqcG9pbnRl
cjsKICAgICAgICB0eXBlZGVmIGNvbnN0IFQgJnJlZmVyZW5jZTsKCiAgICAgICAgaW5saW5lIGNv
bnN0X2l0ZXJhdG9yKCkgOiBpKDApIHt9CiAgICAgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yKE5v
ZGUgKm4pIDogaShuKSB7fQogICAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvcihjb25zdCBjb25z
dF9pdGVyYXRvciAmbyk6IGkoby5pKSB7fQoKCgogICAgICAgIGlubGluZSBjb25zdF9pdGVyYXRv
cihjb25zdCBpdGVyYXRvciAmbyk6IGkoby5pKSB7fQoKICAgICAgICBpbmxpbmUgY29uc3QgVCAm
b3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gaS0+dCgpOyB9CiAgICAgICAgaW5saW5lIGNvbnN0
IFQgKm9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmaS0+dCgpOyB9CiAgICAgICAgaW5saW5l
IGNvbnN0IFQgJm9wZXJhdG9yW10oaW50IGopIGNvbnN0IHsgcmV0dXJuIGlbal0udCgpOyB9CiAg
ICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciAmbykgY29u
c3QgeyByZXR1cm4gaSA9PSBvLmk7IH0KICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IGNvbnN0X2l0ZXJhdG9yICZvKSBjb25zdCB7IHJldHVybiBpICE9IG8uaTsgfQogICAgICAg
IGlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIGkgPCBvdGhlci5pOyB9CiAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGkgPD0gb3RoZXIuaTsg
fQogICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBjb25zdF9pdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIGkgPiBvdGhlci5pOyB9CiAgICAgICAgaW5saW5lIGJvb2wgb3Bl
cmF0b3I+PShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGkgPj0g
b3RoZXIuaTsgfQogICAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvciAmb3BlcmF0b3IrKygpIHsg
KytpOyByZXR1cm4gKnRoaXM7IH0KICAgICAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3Igb3BlcmF0
b3IrKyhpbnQpIHsgTm9kZSAqbiA9IGk7ICsraTsgcmV0dXJuIG47IH0KICAgICAgICBpbmxpbmUg
Y29uc3RfaXRlcmF0b3IgJm9wZXJhdG9yLS0oKSB7IGktLTsgcmV0dXJuICp0aGlzOyB9CiAgICAg
ICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSB7IE5vZGUgKm4gPSBpOyBp
LS07IHJldHVybiBuOyB9CiAgICAgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yICZvcGVyYXRvcis9
KGludCBqKSB7IGkrPWo7IHJldHVybiAqdGhpczsgfQogICAgICAgIGlubGluZSBjb25zdF9pdGVy
YXRvciAmb3BlcmF0b3ItPShpbnQgaikgeyBpLT1qOyByZXR1cm4gKnRoaXM7IH0KICAgICAgICBp
bmxpbmUgY29uc3RfaXRlcmF0b3Igb3BlcmF0b3IrKGludCBqKSBjb25zdCB7IHJldHVybiBjb25z
dF9pdGVyYXRvcihpK2opOyB9CiAgICAgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yIG9wZXJhdG9y
LShpbnQgaikgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoaS1qKTsgfQogICAgICAgIGlu
bGluZSBpbnQgb3BlcmF0b3ItKGNvbnN0X2l0ZXJhdG9yIGopIGNvbnN0IHsgcmV0dXJuIGkgLSBq
Lmk7IH0KICAgIH07CiAgICBmcmllbmQgY2xhc3MgY29uc3RfaXRlcmF0b3I7CgoKICAgIGlubGlu
ZSBpdGVyYXRvciBiZWdpbigpIHsgZGV0YWNoKCk7IHJldHVybiByZWludGVycHJldF9jYXN0PE5v
ZGUgKj4ocC5iZWdpbigpKTsgfQogICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOb2RlICo+KHAuYmVnaW4oKSk7IH0KICAgIGlu
bGluZSBjb25zdF9pdGVyYXRvciBjb25zdEJlZ2luKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxOb2RlICo+KHAuYmVnaW4oKSk7IH0KICAgIGlubGluZSBpdGVyYXRvciBlbmQoKSB7
IGRldGFjaCgpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOb2RlICo+KHAuZW5kKCkpOyB9CiAg
ICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxOb2RlICo+KHAuZW5kKCkpOyB9CiAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgY29uc3RF
bmQoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5lbmQoKSk7IH0K
ICAgIGl0ZXJhdG9yIGluc2VydChpdGVyYXRvciBiZWZvcmUsIGNvbnN0IFQgJnQpOwogICAgaXRl
cmF0b3IgZXJhc2UoaXRlcmF0b3IgcG9zKTsKICAgIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIGZp
cnN0LCBpdGVyYXRvciBsYXN0KTsKCgogICAgdHlwZWRlZiBpdGVyYXRvciBJdGVyYXRvcjsKICAg
IHR5cGVkZWYgY29uc3RfaXRlcmF0b3IgQ29uc3RJdGVyYXRvcjsKICAgIGlubGluZSBpbnQgY291
bnQoKSBjb25zdCB7IHJldHVybiBwLnNpemUoKTsgfQogICAgaW5saW5lIGludCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBwLnNpemUoKTsgfQogICAgaW5saW5lIFQmIGZpcnN0KCkgeyAoKCEoIWlz
RW1wdHkoKSkpID8gcXRfYXNzZXJ0KCIhaXNFbXB0eSgpIiwiL29wdC9sb2NhbC9pbmNsdWRlL1F0
Q29yZS9xbGlzdC5oIiwyNjkpIDogcXRfbm9vcCgpKTsgcmV0dXJuICpiZWdpbigpOyB9CiAgICBp
bmxpbmUgY29uc3QgVCYgZmlyc3QoKSBjb25zdCB7ICgoISghaXNFbXB0eSgpKSkgPyBxdF9hc3Nl
cnQoIiFpc0VtcHR5KCkiLCIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FsaXN0LmgiLDI3MCkg
OiBxdF9ub29wKCkpOyByZXR1cm4gYXQoMCk7IH0KICAgIFQmIGxhc3QoKSB7ICgoISghaXNFbXB0
eSgpKSkgPyBxdF9hc3NlcnQoIiFpc0VtcHR5KCkiLCIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3Jl
L3FsaXN0LmgiLDI3MSkgOiBxdF9ub29wKCkpOyByZXR1cm4gKigtLWVuZCgpKTsgfQogICAgY29u
c3QgVCYgbGFzdCgpIGNvbnN0IHsgKCghKCFpc0VtcHR5KCkpKSA/IHF0X2Fzc2VydCgiIWlzRW1w
dHkoKSIsIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWxpc3QuaCIsMjcyKSA6IHF0X25vb3Ao
KSk7IHJldHVybiBhdChjb3VudCgpIC0gMSk7IH0KICAgIGlubGluZSB2b2lkIHJlbW92ZUZpcnN0
KCkgeyAoKCEoIWlzRW1wdHkoKSkpID8gcXRfYXNzZXJ0KCIhaXNFbXB0eSgpIiwiL29wdC9sb2Nh
bC9pbmNsdWRlL1F0Q29yZS9xbGlzdC5oIiwyNzMpIDogcXRfbm9vcCgpKTsgZXJhc2UoYmVnaW4o
KSk7IH0KICAgIGlubGluZSB2b2lkIHJlbW92ZUxhc3QoKSB7ICgoISghaXNFbXB0eSgpKSkgPyBx
dF9hc3NlcnQoIiFpc0VtcHR5KCkiLCIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FsaXN0Lmgi
LDI3NCkgOiBxdF9ub29wKCkpOyBlcmFzZSgtLWVuZCgpKTsgfQogICAgaW5saW5lIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBUICZ0KSBjb25zdCB7IHJldHVybiAhaXNFbXB0eSgpICYmIGZpcnN0KCkg
PT0gdDsgfQogICAgaW5saW5lIGJvb2wgZW5kc1dpdGgoY29uc3QgVCAmdCkgY29uc3QgeyByZXR1
cm4gIWlzRW1wdHkoKSAmJiBsYXN0KCkgPT0gdDsgfQogICAgUUxpc3Q8VD4gbWlkKGludCBwb3Ms
IGludCBsZW5ndGggPSAtMSkgY29uc3Q7CgogICAgVCB2YWx1ZShpbnQgaSkgY29uc3Q7CiAgICBU
IHZhbHVlKGludCBpLCBjb25zdCBUICZkZWZhdWx0VmFsdWUpIGNvbnN0OwoKCiAgICBpbmxpbmUg
dm9pZCBwdXNoX2JhY2soY29uc3QgVCAmdCkgeyBhcHBlbmQodCk7IH0KICAgIGlubGluZSB2b2lk
IHB1c2hfZnJvbnQoY29uc3QgVCAmdCkgeyBwcmVwZW5kKHQpOyB9CiAgICBpbmxpbmUgVCYgZnJv
bnQoKSB7IHJldHVybiBmaXJzdCgpOyB9CiAgICBpbmxpbmUgY29uc3QgVCYgZnJvbnQoKSBjb25z
dCB7IHJldHVybiBmaXJzdCgpOyB9CiAgICBpbmxpbmUgVCYgYmFjaygpIHsgcmV0dXJuIGxhc3Qo
KTsgfQogICAgaW5saW5lIGNvbnN0IFQmIGJhY2soKSBjb25zdCB7IHJldHVybiBsYXN0KCk7IH0K
ICAgIGlubGluZSB2b2lkIHBvcF9mcm9udCgpIHsgcmVtb3ZlRmlyc3QoKTsgfQogICAgaW5saW5l
IHZvaWQgcG9wX2JhY2soKSB7IHJlbW92ZUxhc3QoKTsgfQogICAgaW5saW5lIGJvb2wgZW1wdHko
KSBjb25zdCB7IHJldHVybiBpc0VtcHR5KCk7IH0KICAgIHR5cGVkZWYgaW50IHNpemVfdHlwZTsK
ICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwogICAgdHlwZWRlZiB2YWx1ZV90eXBlICpwb2ludGVy
OwogICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlICpjb25zdF9wb2ludGVyOwogICAgdHlwZWRl
ZiB2YWx1ZV90eXBlICZyZWZlcmVuY2U7CiAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUgJmNv
bnN0X3JlZmVyZW5jZTsKICAgIHR5cGVkZWYgcXB0cmRpZmYgZGlmZmVyZW5jZV90eXBlOwojIDMx
NSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xbGlzdC5oIgogICAgUUxpc3Q8VD4gJm9wZXJh
dG9yKz0oY29uc3QgUUxpc3Q8VD4gJmwpOwogICAgaW5saW5lIFFMaXN0PFQ+IG9wZXJhdG9yKyhj
b25zdCBRTGlzdDxUPiAmbCkgY29uc3QKICAgIHsgUUxpc3QgbiA9ICp0aGlzOyBuICs9IGw7IHJl
dHVybiBuOyB9CiAgICBpbmxpbmUgUUxpc3Q8VD4gJm9wZXJhdG9yKz0oY29uc3QgVCAmdCkKICAg
IHsgYXBwZW5kKHQpOyByZXR1cm4gKnRoaXM7IH0KICAgIGlubGluZSBRTGlzdDxUPiAmb3BlcmF0
b3I8PCAoY29uc3QgVCAmdCkKICAgIHsgYXBwZW5kKHQpOyByZXR1cm4gKnRoaXM7IH0KICAgIGlu
bGluZSBRTGlzdDxUPiAmb3BlcmF0b3I8PChjb25zdCBRTGlzdDxUPiAmbCkKICAgIHsgKnRoaXMg
Kz0gbDsgcmV0dXJuICp0aGlzOyB9CgogICAgUVZlY3RvcjxUPiB0b1ZlY3RvcigpIGNvbnN0Owog
ICAgUVNldDxUPiB0b1NldCgpIGNvbnN0OwoKICAgIHN0YXRpYyBRTGlzdDxUPiBmcm9tVmVjdG9y
KGNvbnN0IFFWZWN0b3I8VD4gJnZlY3Rvcik7CiAgICBzdGF0aWMgUUxpc3Q8VD4gZnJvbVNldChj
b25zdCBRU2V0PFQ+ICZzZXQpOwoKCiAgICBzdGF0aWMgaW5saW5lIFFMaXN0PFQ+IGZyb21TdGRM
aXN0KGNvbnN0IHN0ZDo6bGlzdDxUPiAmbGlzdCkKICAgIHsgUUxpc3Q8VD4gdG1wOyBxQ29weShs
aXN0LmJlZ2luKCksIGxpc3QuZW5kKCksIHN0ZDo6YmFja19pbnNlcnRlcih0bXApKTsgcmV0dXJu
IHRtcDsgfQogICAgaW5saW5lIHN0ZDo6bGlzdDxUPiB0b1N0ZExpc3QoKSBjb25zdAogICAgeyBz
dGQ6Omxpc3Q8VD4gdG1wOyBxQ29weShjb25zdEJlZ2luKCksIGNvbnN0RW5kKCksIHN0ZDo6YmFj
a19pbnNlcnRlcih0bXApKTsgcmV0dXJuIHRtcDsgfQoKCnByaXZhdGU6CiAgICBOb2RlICpkZXRh
Y2hfaGVscGVyX2dyb3coaW50IGksIGludCBuKTsKICAgIHZvaWQgZGV0YWNoX2hlbHBlcihpbnQg
YWxsb2MpOwogICAgdm9pZCBkZXRhY2hfaGVscGVyKCk7CiAgICB2b2lkIGZyZWUoUUxpc3REYXRh
OjpEYXRhICpkKTsKCiAgICB2b2lkIG5vZGVfY29uc3RydWN0KE5vZGUgKm4sIGNvbnN0IFQgJnQp
OwogICAgdm9pZCBub2RlX2Rlc3RydWN0KE5vZGUgKm4pOwogICAgdm9pZCBub2RlX2NvcHkoTm9k
ZSAqZnJvbSwgTm9kZSAqdG8sIE5vZGUgKnNyYyk7CiAgICB2b2lkIG5vZGVfZGVzdHJ1Y3QoTm9k
ZSAqZnJvbSwgTm9kZSAqdG8pOwp9OwoKCgoKCgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGlu
ZSB2b2lkIFFMaXN0PFQ+Ojpub2RlX2NvbnN0cnVjdChOb2RlICpuLCBjb25zdCBUICZ0KQp7CiAg
ICBpZiAoUVR5cGVJbmZvPFQ+Ojppc0xhcmdlIHx8IFFUeXBlSW5mbzxUPjo6aXNTdGF0aWMpIG4t
PnYgPSBuZXcgVCh0KTsKICAgIGVsc2UgaWYgKFFUeXBlSW5mbzxUPjo6aXNDb21wbGV4KSBuZXcg
KG4pIFQodCk7CgoKCgogICAgZWxzZSAqcmVpbnRlcnByZXRfY2FzdDxUKj4obikgPSB0OwoKCgoK
fQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSB2b2lkIFFMaXN0PFQ+Ojpub2RlX2Rlc3Ry
dWN0KE5vZGUgKm4pCnsKICAgIGlmIChRVHlwZUluZm88VD46OmlzTGFyZ2UgfHwgUVR5cGVJbmZv
PFQ+Ojppc1N0YXRpYykgZGVsZXRlIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG4tPnYpOwogICAgZWxz
ZSBpZiAoUVR5cGVJbmZvPFQ+Ojppc0NvbXBsZXgpIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG4pLT5+
VCgpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIHZvaWQgUUxpc3Q8VD46Om5vZGVf
Y29weShOb2RlICpmcm9tLCBOb2RlICp0bywgTm9kZSAqc3JjKQp7CiAgICBOb2RlICpjdXJyZW50
ID0gZnJvbTsKICAgIGlmIChRVHlwZUluZm88VD46OmlzTGFyZ2UgfHwgUVR5cGVJbmZvPFQ+Ojpp
c1N0YXRpYykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHdoaWxlKGN1cnJlbnQgIT0gdG8p
IHsKICAgICAgICAgICAgICAgIGN1cnJlbnQtPnYgPSBuZXcgVCgqcmVpbnRlcnByZXRfY2FzdDxU
Kj4oc3JjLT52KSk7CiAgICAgICAgICAgICAgICArK2N1cnJlbnQ7CiAgICAgICAgICAgICAgICAr
K3NyYzsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKC4uLikgewogICAgICAgICAgICB3
aGlsZSAoY3VycmVudC0tICE9IGZyb20pCiAgICAgICAgICAgICAgICBkZWxldGUgcmVpbnRlcnBy
ZXRfY2FzdDxUKj4oY3VycmVudC0+dik7CiAgICAgICAgICAgIHRocm93OwogICAgICAgIH0KCiAg
ICB9IGVsc2UgaWYgKFFUeXBlSW5mbzxUPjo6aXNDb21wbGV4KSB7CiAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgd2hpbGUoY3VycmVudCAhPSB0bykgewogICAgICAgICAgICAgICAgbmV3IChjdXJy
ZW50KSBUKCpyZWludGVycHJldF9jYXN0PFQqPihzcmMpKTsKICAgICAgICAgICAgICAgICsrY3Vy
cmVudDsKICAgICAgICAgICAgICAgICsrc3JjOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRj
aCAoLi4uKSB7CiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50LS0gIT0gZnJvbSkKICAgICAgICAg
ICAgICAgIChyZWludGVycHJldF9jYXN0PFQqPihjdXJyZW50KSktPn5UKCk7CiAgICAgICAgICAg
IHRocm93OwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKHNyYyAhPSBmcm9tICYm
IHRvIC0gZnJvbSA+IDApCiAgICAgICAgICAgIG1lbWNweShmcm9tLCBzcmMsICh0byAtIGZyb20p
ICogc2l6ZW9mKE5vZGUgKikpOwogICAgfQp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5l
IHZvaWQgUUxpc3Q8VD46Om5vZGVfZGVzdHJ1Y3QoTm9kZSAqZnJvbSwgTm9kZSAqdG8pCnsKICAg
IGlmIChRVHlwZUluZm88VD46OmlzTGFyZ2UgfHwgUVR5cGVJbmZvPFQ+Ojppc1N0YXRpYykKICAg
ICAgICB3aGlsZShmcm9tICE9IHRvKSAtLXRvLCBkZWxldGUgcmVpbnRlcnByZXRfY2FzdDxUKj4o
dG8tPnYpOwogICAgZWxzZSBpZiAoUVR5cGVJbmZvPFQ+Ojppc0NvbXBsZXgpCiAgICAgICAgd2hp
bGUgKGZyb20gIT0gdG8pIC0tdG8sIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHRvKS0+flQoKTsKfQoK
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSBRTGlzdDxUPiAmUUxpc3Q8VD46Om9wZXJhdG9y
PShjb25zdCBRTGlzdDxUPiAmbCkKewogICAgaWYgKGQgIT0gbC5kKSB7CiAgICAgICAgUUxpc3RE
YXRhOjpEYXRhICpvID0gbC5kOwogICAgICAgIG8tPnJlZi5yZWYoKTsKICAgICAgICBpZiAoIWQt
PnJlZi5kZXJlZigpKQogICAgICAgICAgICBmcmVlKGQpOwogICAgICAgIGQgPSBvOwogICAgICAg
IGlmICghZC0+c2hhcmFibGUpCiAgICAgICAgICAgIGRldGFjaF9oZWxwZXIoKTsKICAgIH0KICAg
IHJldHVybiAqdGhpczsKfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIHR5cGVuYW1lIFFM
aXN0PFQ+OjppdGVyYXRvciBRTGlzdDxUPjo6aW5zZXJ0KGl0ZXJhdG9yIGJlZm9yZSwgY29uc3Qg
VCAmdCkKewogICAgaW50IGlCZWZvcmUgPSBpbnQoYmVmb3JlLmkgLSByZWludGVycHJldF9jYXN0
PE5vZGUgKj4ocC5iZWdpbigpKSk7CiAgICBOb2RlICpuID0gcmVpbnRlcnByZXRfY2FzdDxOb2Rl
ICo+KHAuaW5zZXJ0KGlCZWZvcmUpKTsKICAgIHRyeSB7CiAgICAgICAgbm9kZV9jb25zdHJ1Y3Qo
biwgdCk7CiAgICB9IGNhdGNoICguLi4pIHsKICAgICAgICBwLnJlbW92ZShpQmVmb3JlKTsKICAg
ICAgICB0aHJvdzsKICAgIH0KICAgIHJldHVybiBuOwp9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpp
bmxpbmUgdHlwZW5hbWUgUUxpc3Q8VD46Oml0ZXJhdG9yIFFMaXN0PFQ+OjplcmFzZShpdGVyYXRv
ciBpdCkKeyBub2RlX2Rlc3RydWN0KGl0LmkpOwogcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Tm9k
ZSAqPihwLmVyYXNlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpdC5pKSkpOyB9CnRlbXBsYXRl
IDx0eXBlbmFtZSBUPgppbmxpbmUgY29uc3QgVCAmUUxpc3Q8VD46OmF0KGludCBpKSBjb25zdAp7
ICgoIShpID49IDAgJiYgaSA8IHAuc2l6ZSgpKSkgPyBxdF9hc3NlcnRfeCgiUUxpc3Q8VD46OmF0
IiwgImluZGV4IG91dCBvZiByYW5nZSIsIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWxpc3Qu
aCIsNDU2KSA6IHF0X25vb3AoKSk7CiByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOb2RlICo+KHAu
YXQoaSkpLT50KCk7IH0KdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSBjb25zdCBUICZRTGlz
dDxUPjo6b3BlcmF0b3JbXShpbnQgaSkgY29uc3QKeyAoKCEoaSA+PSAwICYmIGkgPCBwLnNpemUo
KSkpID8gcXRfYXNzZXJ0X3goIlFMaXN0PFQ+OjpvcGVyYXRvcltdIiwgImluZGV4IG91dCBvZiBy
YW5nZSIsIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWxpc3QuaCIsNDYwKSA6IHF0X25vb3Ao
KSk7CiByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOb2RlICo+KHAuYXQoaSkpLT50KCk7IH0KdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSBUICZRTGlzdDxUPjo6b3BlcmF0b3JbXShpbnQgaSkK
eyAoKCEoaSA+PSAwICYmIGkgPCBwLnNpemUoKSkpID8gcXRfYXNzZXJ0X3goIlFMaXN0PFQ+Ojpv
cGVyYXRvcltdIiwgImluZGV4IG91dCBvZiByYW5nZSIsIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENv
cmUvcWxpc3QuaCIsNDY0KSA6IHF0X25vb3AoKSk7CiAgZGV0YWNoKCk7IHJldHVybiByZWludGVy
cHJldF9jYXN0PE5vZGUgKj4ocC5hdChpKSktPnQoKTsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
aW5saW5lIHZvaWQgUUxpc3Q8VD46OnJlbW92ZUF0KGludCBpKQp7IGlmKGkgPj0gMCAmJiBpIDwg
cC5zaXplKCkpIHsgZGV0YWNoKCk7CiBub2RlX2Rlc3RydWN0KHJlaW50ZXJwcmV0X2Nhc3Q8Tm9k
ZSAqPihwLmF0KGkpKSk7IHAucmVtb3ZlKGkpOyB9IH0KdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cmlu
bGluZSBUIFFMaXN0PFQ+Ojp0YWtlQXQoaW50IGkpCnsgKCghKGkgPj0gMCAmJiBpIDwgcC5zaXpl
KCkpKSA/IHF0X2Fzc2VydF94KCJRTGlzdDxUPjo6dGFrZSIsICJpbmRleCBvdXQgb2YgcmFuZ2Ui
LCIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FsaXN0LmgiLDQ3MikgOiBxdF9ub29wKCkpOwog
ZGV0YWNoKCk7IE5vZGUgKm4gPSByZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5hdChpKSk7IFQg
dCA9IG4tPnQoKTsgbm9kZV9kZXN0cnVjdChuKTsKIHAucmVtb3ZlKGkpOyByZXR1cm4gdDsgfQp0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIFQgUUxpc3Q8VD46OnRha2VGaXJzdCgpCnsgVCB0
ID0gZmlyc3QoKTsgcmVtb3ZlRmlyc3QoKTsgcmV0dXJuIHQ7IH0KdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CmlubGluZSBUIFFMaXN0PFQ+Ojp0YWtlTGFzdCgpCnsgVCB0ID0gbGFzdCgpOyByZW1vdmVM
YXN0KCk7IHJldHVybiB0OyB9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHZvaWQgUUxpc3Q8VD46
OnJlc2VydmUoaW50IGFsbG9jKQp7CiAgICBpZiAoZC0+YWxsb2MgPCBhbGxvYykgewogICAgICAg
IGlmIChkLT5yZWYgIT0gMSkKICAgICAgICAgICAgZGV0YWNoX2hlbHBlcihhbGxvYyk7CiAgICAg
ICAgZWxzZQogICAgICAgICAgICBwLnJlYWxsb2MoYWxsb2MpOwogICAgfQp9Cgp0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIHZvaWQgUUxpc3Q8VD46OmFwcGVuZChjb25zdCBUICZ0KQp7CiAgICBpZiAo
ZC0+cmVmICE9IDEpIHsKICAgICAgICBOb2RlICpuID0gZGV0YWNoX2hlbHBlcl9ncm93KDIxNDc0
ODM2NDcsIDEpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIG5vZGVfY29uc3RydWN0KG4sIHQp
OwogICAgICAgIH0gY2F0Y2ggKC4uLikgewogICAgICAgICAgICAtLWQtPmVuZDsKICAgICAgICAg
ICAgdGhyb3c7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiAoUVR5cGVJbmZvPFQ+
Ojppc0xhcmdlIHx8IFFUeXBlSW5mbzxUPjo6aXNTdGF0aWMpIHsKICAgICAgICAgICAgTm9kZSAq
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihwLmFwcGVuZCgpKTsKICAgICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgICAgIG5vZGVfY29uc3RydWN0KG4sIHQpOwogICAgICAgICAgICB9IGNh
dGNoICguLi4pIHsKICAgICAgICAgICAgICAgIC0tZC0+ZW5kOwogICAgICAgICAgICAgICAgdGhy
b3c7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBOb2RlICpuLCBj
b3B5OwogICAgICAgICAgICBub2RlX2NvbnN0cnVjdCgmY29weSwgdCk7CiAgICAgICAgICAgIHRy
eSB7CiAgICAgICAgICAgICAgICBuID0gcmVpbnRlcnByZXRfY2FzdDxOb2RlICo+KHAuYXBwZW5k
KCkpOzsKICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7CiAgICAgICAgICAgICAgICBub2RlX2Rl
c3RydWN0KCZjb3B5KTsKICAgICAgICAgICAgICAgIHRocm93OwogICAgICAgICAgICB9CiAgICAg
ICAgICAgICpuID0gY29weTsKICAgICAgICB9CiAgICB9Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBU
PgppbmxpbmUgdm9pZCBRTGlzdDxUPjo6cHJlcGVuZChjb25zdCBUICZ0KQp7CiAgICBpZiAoZC0+
cmVmICE9IDEpIHsKICAgICAgICBOb2RlICpuID0gZGV0YWNoX2hlbHBlcl9ncm93KDAsIDEpOwog
ICAgICAgIHRyeSB7CiAgICAgICAgICAgIG5vZGVfY29uc3RydWN0KG4sIHQpOwogICAgICAgIH0g
Y2F0Y2ggKC4uLikgewogICAgICAgICAgICArK2QtPmJlZ2luOwogICAgICAgICAgICB0aHJvdzsK
ICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGlmIChRVHlwZUluZm88VD46OmlzTGFyZ2Ug
fHwgUVR5cGVJbmZvPFQ+Ojppc1N0YXRpYykgewogICAgICAgICAgICBOb2RlICpuID0gcmVpbnRl
cnByZXRfY2FzdDxOb2RlICo+KHAucHJlcGVuZCgpKTsKICAgICAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgICAgIG5vZGVfY29uc3RydWN0KG4sIHQpOwogICAgICAgICAgICB9IGNhdGNoICguLi4p
IHsKICAgICAgICAgICAgICAgICsrZC0+YmVnaW47CiAgICAgICAgICAgICAgICB0aHJvdzsKICAg
ICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIE5vZGUgKm4sIGNvcHk7CiAg
ICAgICAgICAgIG5vZGVfY29uc3RydWN0KCZjb3B5LCB0KTsKICAgICAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgICAgIG4gPSByZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5wcmVwZW5kKCkpOzsK
ICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7CiAgICAgICAgICAgICAgICBub2RlX2Rlc3RydWN0
KCZjb3B5KTsKICAgICAgICAgICAgICAgIHRocm93OwogICAgICAgICAgICB9CiAgICAgICAgICAg
ICpuID0gY29weTsKICAgICAgICB9CiAgICB9Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxp
bmUgdm9pZCBRTGlzdDxUPjo6aW5zZXJ0KGludCBpLCBjb25zdCBUICZ0KQp7CiAgICBpZiAoZC0+
cmVmICE9IDEpIHsKICAgICAgICBOb2RlICpuID0gZGV0YWNoX2hlbHBlcl9ncm93KGksIDEpOwog
ICAgICAgIHRyeSB7CiAgICAgICAgICAgIG5vZGVfY29uc3RydWN0KG4sIHQpOwogICAgICAgIH0g
Y2F0Y2ggKC4uLikgewogICAgICAgICAgICBwLnJlbW92ZShpKTsKICAgICAgICAgICAgdGhyb3c7
CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiAoUVR5cGVJbmZvPFQ+Ojppc0xhcmdl
IHx8IFFUeXBlSW5mbzxUPjo6aXNTdGF0aWMpIHsKICAgICAgICAgICAgTm9kZSAqbiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihwLmluc2VydChpKSk7CiAgICAgICAgICAgIHRyeSB7CiAgICAg
ICAgICAgICAgICBub2RlX2NvbnN0cnVjdChuLCB0KTsKICAgICAgICAgICAgfSBjYXRjaCAoLi4u
KSB7CiAgICAgICAgICAgICAgICBwLnJlbW92ZShpKTsKICAgICAgICAgICAgICAgIHRocm93Owog
ICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgTm9kZSAqbiwgY29weTsK
ICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3QoJmNvcHksIHQpOwogICAgICAgICAgICB0cnkgewog
ICAgICAgICAgICAgICAgbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihwLmluc2VydChpKSk7
OwogICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKICAgICAgICAgICAgICAgIG5vZGVfZGVzdHJ1
Y3QoJmNvcHkpOwogICAgICAgICAgICAgICAgdGhyb3c7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgKm4gPSBjb3B5OwogICAgICAgIH0KICAgIH0KfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cmlu
bGluZSB2b2lkIFFMaXN0PFQ+OjpyZXBsYWNlKGludCBpLCBjb25zdCBUICZ0KQp7CiAgICAoKCEo
aSA+PSAwICYmIGkgPCBwLnNpemUoKSkpID8gcXRfYXNzZXJ0X3goIlFMaXN0PFQ+OjpyZXBsYWNl
IiwgImluZGV4IG91dCBvZiByYW5nZSIsIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWxpc3Qu
aCIsNTk4KSA6IHF0X25vb3AoKSk7CiAgICBkZXRhY2goKTsKICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
Tm9kZSAqPihwLmF0KGkpKS0+dCgpID0gdDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGlu
ZSB2b2lkIFFMaXN0PFQ+Ojpzd2FwKGludCBpLCBpbnQgaikKewogICAgKCghKGkgPj0gMCAmJiBp
IDwgcC5zaXplKCkgJiYgaiA+PSAwICYmIGogPCBwLnNpemUoKSkpID8gcXRfYXNzZXJ0X3goIlFM
aXN0PFQ+Ojpzd2FwIiwgImluZGV4IG91dCBvZiByYW5nZSIsIi9vcHQvbG9jYWwvaW5jbHVkZS9R
dENvcmUvcWxpc3QuaCIsNjA3KSA6IHF0X25vb3AoKSk7CgogICAgZGV0YWNoKCk7CiAgICB2b2lk
ICp0ID0gZC0+YXJyYXlbZC0+YmVnaW4gKyBpXTsKICAgIGQtPmFycmF5W2QtPmJlZ2luICsgaV0g
PSBkLT5hcnJheVtkLT5iZWdpbiArIGpdOwogICAgZC0+YXJyYXlbZC0+YmVnaW4gKyBqXSA9IHQ7
Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgdm9pZCBRTGlzdDxUPjo6bW92ZShpbnQg
ZnJvbSwgaW50IHRvKQp7CiAgICAoKCEoZnJvbSA+PSAwICYmIGZyb20gPCBwLnNpemUoKSAmJiB0
byA+PSAwICYmIHRvIDwgcC5zaXplKCkpKSA/IHF0X2Fzc2VydF94KCJRTGlzdDxUPjo6bW92ZSIs
ICJpbmRleCBvdXQgb2YgcmFuZ2UiLCIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FsaXN0Lmgi
LDYxOCkgOiBxdF9ub29wKCkpOwoKICAgIGRldGFjaCgpOwogICAgcC5tb3ZlKGZyb20sIHRvKTsK
fQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KIFFMaXN0PFQ+IFFMaXN0PFQ+OjptaWQoaW50IHBvcywg
aW50IGFsZW5ndGgpIGNvbnN0CnsKICAgIGlmIChhbGVuZ3RoIDwgMCB8fCBwb3MgKyBhbGVuZ3Ro
ID4gc2l6ZSgpKQogICAgICAgIGFsZW5ndGggPSBzaXplKCkgLSBwb3M7CiAgICBpZiAocG9zID09
IDAgJiYgYWxlbmd0aCA9PSBzaXplKCkpCiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgUUxpc3Q8
VD4gY3B5OwogICAgaWYgKGFsZW5ndGggPD0gMCkKICAgICAgICByZXR1cm4gY3B5OwogICAgY3B5
LnJlc2VydmUoYWxlbmd0aCk7CiAgICBjcHkuZC0+ZW5kID0gYWxlbmd0aDsKICAgIHRyeSB7CiAg
ICAgICAgY3B5Lm5vZGVfY29weShyZWludGVycHJldF9jYXN0PE5vZGUgKj4oY3B5LnAuYmVnaW4o
KSksCiAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PE5vZGUgKj4oY3B5LnAu
ZW5kKCkpLAogICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxOb2RlICo+KHAu
YmVnaW4oKSArIHBvcykpOwogICAgfSBjYXRjaCAoLi4uKSB7CgogICAgICAgIGNweS5kLT5lbmQg
PSAwOwogICAgICAgIHRocm93OwogICAgfQogICAgcmV0dXJuIGNweTsKfQoKdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KIFQgUUxpc3Q8VD46OnZhbHVlKGludCBpKSBjb25zdAp7CiAgICBpZiAoaSA8IDAg
fHwgaSA+PSBwLnNpemUoKSkgewogICAgICAgIHJldHVybiBUKCk7CiAgICB9CiAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxOb2RlICo+KHAuYXQoaSkpLT50KCk7Cn0KCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiBUIFFMaXN0PFQ+Ojp2YWx1ZShpbnQgaSwgY29uc3QgVCYgZGVmYXVsdFZhbHVlKSBj
b25zdAp7CiAgICByZXR1cm4gKChpIDwgMCB8fCBpID49IHAuc2l6ZSgpKSA/IGRlZmF1bHRWYWx1
ZSA6IHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihwLmF0KGkpKS0+dCgpKTsKfQoKdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiB0eXBlbmFtZSBRTGlzdDxUPjo6Tm9kZSAqUUxpc3Q8VD46OmRldGFjaF9o
ZWxwZXJfZ3JvdyhpbnQgaSwgaW50IGMpCnsKICAgIE5vZGUgKm4gPSByZWludGVycHJldF9jYXN0
PE5vZGUgKj4ocC5iZWdpbigpKTsKICAgIFFMaXN0RGF0YTo6RGF0YSAqeCA9IHAuZGV0YWNoX2dy
b3coJmksIGMpOwogICAgdHJ5IHsKICAgICAgICBub2RlX2NvcHkocmVpbnRlcnByZXRfY2FzdDxO
b2RlICo+KHAuYmVnaW4oKSksCiAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Tm9k
ZSAqPihwLmJlZ2luKCkgKyBpKSwgbik7CiAgICB9IGNhdGNoICguLi4pIHsKICAgICAgICBxRnJl
ZShkKTsKICAgICAgICBkID0geDsKICAgICAgICB0aHJvdzsKICAgIH0KICAgIHRyeSB7CiAgICAg
ICAgbm9kZV9jb3B5KHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihwLmJlZ2luKCkgKyBpICsgYyks
CiAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihwLmVuZCgpKSwgbiAr
IGkpOwogICAgfSBjYXRjaCAoLi4uKSB7CiAgICAgICAgbm9kZV9kZXN0cnVjdChyZWludGVycHJl
dF9jYXN0PE5vZGUgKj4ocC5iZWdpbigpKSwKICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8Tm9kZSAqPihwLmJlZ2luKCkgKyBpKSk7CiAgICAgICAgcUZyZWUoZCk7CiAgICAg
ICAgZCA9IHg7CiAgICAgICAgdGhyb3c7CiAgICB9CgogICAgaWYgKCF4LT5yZWYuZGVyZWYoKSkK
ICAgICAgICBmcmVlKHgpOwoKICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5i
ZWdpbigpICsgaSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdm9pZCBRTGlzdDxUPjo6ZGV0
YWNoX2hlbHBlcihpbnQgYWxsb2MpCnsKICAgIE5vZGUgKm4gPSByZWludGVycHJldF9jYXN0PE5v
ZGUgKj4ocC5iZWdpbigpKTsKICAgIFFMaXN0RGF0YTo6RGF0YSAqeCA9IHAuZGV0YWNoKGFsbG9j
KTsKICAgIHRyeSB7CiAgICAgICAgbm9kZV9jb3B5KHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihw
LmJlZ2luKCkpLCByZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5lbmQoKSksIG4pOwogICAgfSBj
YXRjaCAoLi4uKSB7CiAgICAgICAgcUZyZWUoZCk7CiAgICAgICAgZCA9IHg7CiAgICAgICAgdGhy
b3c7CiAgICB9CgogICAgaWYgKCF4LT5yZWYuZGVyZWYoKSkKICAgICAgICBmcmVlKHgpOwp9Cgp0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHZvaWQgUUxpc3Q8VD46OmRldGFjaF9oZWxwZXIoKQp7CiAg
ICBkZXRhY2hfaGVscGVyKGQtPmFsbG9jKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBRTGlz
dDxUPjo6flFMaXN0KCkKewogICAgaWYgKGQgJiYgIWQtPnJlZi5kZXJlZigpKQogICAgICAgIGZy
ZWUoZCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgogYm9vbCBRTGlzdDxUPjo6b3BlcmF0b3I9
PShjb25zdCBRTGlzdDxUPiAmbCkgY29uc3QKewogICAgaWYgKHAuc2l6ZSgpICE9IGwucC5zaXpl
KCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgaWYgKGQgPT0gbC5kKQogICAgICAgIHJldHVy
biB0cnVlOwogICAgTm9kZSAqaSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihwLmVuZCgpKTsK
ICAgIE5vZGUgKmIgPSByZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5iZWdpbigpKTsKICAgIE5v
ZGUgKmxpID0gcmVpbnRlcnByZXRfY2FzdDxOb2RlICo+KGwucC5lbmQoKSk7CiAgICB3aGlsZSAo
aSAhPSBiKSB7CiAgICAgICAgLS1pOyAtLWxpOwogICAgICAgIGlmICghKGktPnQoKSA9PSBsaS0+
dCgpKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0K
Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHZvaWQgUUxpc3Q8VD46OmZyZWUoUUxpc3REYXRhOjpE
YXRhICpkYXRhKQp7CiAgICBub2RlX2Rlc3RydWN0KHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihk
YXRhLT5hcnJheSArIGRhdGEtPmJlZ2luKSwKICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxOb2RlICo+KGRhdGEtPmFycmF5ICsgZGF0YS0+ZW5kKSk7CiAgICBpZiAoZGF0YS0+cmVm
ID09IDApCiAgICAgICAgcUZyZWUoZGF0YSk7Cn0KCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHZv
aWQgUUxpc3Q8VD46OmNsZWFyKCkKewogICAgKnRoaXMgPSBRTGlzdDxUPigpOwp9Cgp0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KIGludCBRTGlzdDxUPjo6cmVtb3ZlQWxsKGNvbnN0IFQgJl90KQp7CiAg
ICBkZXRhY2hTaGFyZWQoKTsKICAgIGNvbnN0IFQgdCA9IF90OwogICAgaW50IHJlbW92ZWRDb3Vu
dD0wLCBpPTA7CiAgICBOb2RlICpuOwogICAgd2hpbGUgKGkgPCBwLnNpemUoKSkKICAgICAgICBp
ZiAoKG4gPSByZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5hdChpKSkpLT50KCkgPT0gdCkgewog
ICAgICAgICAgICBub2RlX2Rlc3RydWN0KG4pOwogICAgICAgICAgICBwLnJlbW92ZShpKTsKICAg
ICAgICAgICAgKytyZW1vdmVkQ291bnQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgKytp
OwogICAgICAgIH0KICAgIHJldHVybiByZW1vdmVkQ291bnQ7Cn0KCnRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogYm9vbCBRTGlzdDxUPjo6cmVtb3ZlT25lKGNvbnN0IFQgJl90KQp7CiAgICBkZXRhY2hT
aGFyZWQoKTsKICAgIGludCBpbmRleCA9IGluZGV4T2YoX3QpOwogICAgaWYgKGluZGV4ICE9IC0x
KSB7CiAgICAgICAgcmVtb3ZlQXQoaW5kZXgpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQog
ICAgcmV0dXJuIGZhbHNlOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHR5cGVuYW1lIFFMaXN0
PFQ+OjppdGVyYXRvciBRTGlzdDxUPjo6ZXJhc2UodHlwZW5hbWUgUUxpc3Q8VD46Oml0ZXJhdG9y
IGFmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlbmFtZSBRTGlzdDxUPjo6aXRlcmF0b3IgYWxhc3QpCnsKICAg
IGZvciAoTm9kZSAqbiA9IGFmaXJzdC5pOyBuIDwgYWxhc3QuaTsgKytuKQogICAgICAgIG5vZGVf
ZGVzdHJ1Y3Qobik7CiAgICBpbnQgaWR4ID0gYWZpcnN0IC0gYmVnaW4oKTsKICAgIHAucmVtb3Zl
KGlkeCwgYWxhc3QgLSBhZmlyc3QpOwogICAgcmV0dXJuIGJlZ2luKCkgKyBpZHg7Cn0KCnRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogUUxpc3Q8VD4gJlFMaXN0PFQ+OjpvcGVyYXRvcis9KGNvbnN0IFFM
aXN0PFQ+ICZsKQp7CiAgICBpZiAoIWwuaXNFbXB0eSgpKSB7CiAgICAgICAgaWYgKGlzRW1wdHko
KSkgewogICAgICAgICAgICAqdGhpcyA9IGw7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
Tm9kZSAqbiA9IChkLT5yZWYgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgID8gZGV0YWNoX2hl
bHBlcl9ncm93KDIxNDc0ODM2NDcsIGwuc2l6ZSgpKQogICAgICAgICAgICAgICAgICAgICAgOiBy
ZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5hcHBlbmQyKGwucCkpOwogICAgICAgICAgICB0cnkg
ewogICAgICAgICAgICAgICAgbm9kZV9jb3B5KG4sIHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihw
LmVuZCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PE5vZGUg
Kj4obC5wLmJlZ2luKCkpKTsKICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7CgogICAgICAgICAg
ICAgICAgZC0+ZW5kIC09IGludChyZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5lbmQoKSkgLSBu
KTsKICAgICAgICAgICAgICAgIHRocm93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQog
ICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIHZvaWQgUUxp
c3Q8VD46OmFwcGVuZChjb25zdCBRTGlzdDxUPiAmdCkKewogICAgKnRoaXMgKz0gdDsKfQoKdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBpbnQgUUxpc3Q8VD46OmluZGV4T2YoY29uc3QgVCAmdCwgaW50
IGZyb20pIGNvbnN0CnsKICAgIGlmIChmcm9tIDwgMCkKICAgICAgICBmcm9tID0gcU1heChmcm9t
ICsgcC5zaXplKCksIDApOwogICAgaWYgKGZyb20gPCBwLnNpemUoKSkgewogICAgICAgIE5vZGUg
Km4gPSByZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5hdChmcm9tIC0xKSk7CiAgICAgICAgTm9k
ZSAqZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihwLmVuZCgpKTsKICAgICAgICB3aGlsZSAo
KytuICE9IGUpCiAgICAgICAgICAgIGlmIChuLT50KCkgPT0gdCkKICAgICAgICAgICAgICAgIHJl
dHVybiBpbnQobiAtIHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihwLmJlZ2luKCkpKTsKICAgIH0K
ICAgIHJldHVybiAtMTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbnQgUUxpc3Q8VD46Omxh
c3RJbmRleE9mKGNvbnN0IFQgJnQsIGludCBmcm9tKSBjb25zdAp7CiAgICBpZiAoZnJvbSA8IDAp
CiAgICAgICAgZnJvbSArPSBwLnNpemUoKTsKICAgIGVsc2UgaWYgKGZyb20gPj0gcC5zaXplKCkp
CiAgICAgICAgZnJvbSA9IHAuc2l6ZSgpLTE7CiAgICBpZiAoZnJvbSA+PSAwKSB7CiAgICAgICAg
Tm9kZSAqYiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSAqPihwLmJlZ2luKCkpOwogICAgICAgIE5v
ZGUgKm4gPSByZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5hdChmcm9tICsgMSkpOwogICAgICAg
IHdoaWxlIChuLS0gIT0gYikgewogICAgICAgICAgICBpZiAobi0+dCgpID09IHQpCiAgICAgICAg
ICAgICAgICByZXR1cm4gbiAtIGI7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIC0xOwp9Cgp0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFFCb29sIFFMaXN0PFQ+Ojpjb250YWlucyhjb25zdCBUICZ0
KSBjb25zdAp7CiAgICBOb2RlICpiID0gcmVpbnRlcnByZXRfY2FzdDxOb2RlICo+KHAuYmVnaW4o
KSk7CiAgICBOb2RlICppID0gcmVpbnRlcnByZXRfY2FzdDxOb2RlICo+KHAuZW5kKCkpOwogICAg
d2hpbGUgKGktLSAhPSBiKQogICAgICAgIGlmIChpLT50KCkgPT0gdCkKICAgICAgICAgICAgcmV0
dXJuIFFCb29sKHRydWUpOwogICAgcmV0dXJuIFFCb29sKGZhbHNlKTsKfQoKdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBpbnQgUUxpc3Q8VD46OmNvdW50KGNvbnN0IFQgJnQpIGNvbnN0CnsKICAgIGlu
dCBjID0gMDsKICAgIE5vZGUgKmIgPSByZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5iZWdpbigp
KTsKICAgIE5vZGUgKmkgPSByZWludGVycHJldF9jYXN0PE5vZGUgKj4ocC5lbmQoKSk7CiAgICB3
aGlsZSAoaS0tICE9IGIpCiAgICAgICAgaWYgKGktPnQoKSA9PSB0KQogICAgICAgICAgICArK2M7
CiAgICByZXR1cm4gYzsKfQoKdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFFMaXN0SXRlcmF0b3Ig
eyB0eXBlZGVmIHR5cGVuYW1lIFFMaXN0PFQ+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRv
cjsgUUxpc3Q8VD4gYzsgY29uc3RfaXRlcmF0b3IgaTsgcHVibGljOiBpbmxpbmUgUUxpc3RJdGVy
YXRvcihjb25zdCBRTGlzdDxUPiAmY29udGFpbmVyKSA6IGMoY29udGFpbmVyKSwgaShjLmNvbnN0
QmVnaW4oKSkge30gaW5saW5lIFFMaXN0SXRlcmF0b3IgJm9wZXJhdG9yPShjb25zdCBRTGlzdDxU
PiAmY29udGFpbmVyKSB7IGMgPSBjb250YWluZXI7IGkgPSBjLmNvbnN0QmVnaW4oKTsgcmV0dXJu
ICp0aGlzOyB9IGlubGluZSB2b2lkIHRvRnJvbnQoKSB7IGkgPSBjLmNvbnN0QmVnaW4oKTsgfSBp
bmxpbmUgdm9pZCB0b0JhY2soKSB7IGkgPSBjLmNvbnN0RW5kKCk7IH0gaW5saW5lIGJvb2wgaGFz
TmV4dCgpIGNvbnN0IHsgcmV0dXJuIGkgIT0gYy5jb25zdEVuZCgpOyB9IGlubGluZSBjb25zdCBU
ICZuZXh0KCkgeyByZXR1cm4gKmkrKzsgfSBpbmxpbmUgY29uc3QgVCAmcGVla05leHQoKSBjb25z
dCB7IHJldHVybiAqaTsgfSBpbmxpbmUgYm9vbCBoYXNQcmV2aW91cygpIGNvbnN0IHsgcmV0dXJu
IGkgIT0gYy5jb25zdEJlZ2luKCk7IH0gaW5saW5lIGNvbnN0IFQgJnByZXZpb3VzKCkgeyByZXR1
cm4gKi0taTsgfSBpbmxpbmUgY29uc3QgVCAmcGVla1ByZXZpb3VzKCkgY29uc3QgeyBjb25zdF9p
dGVyYXRvciBwID0gaTsgcmV0dXJuICotLXA7IH0gaW5saW5lIGJvb2wgZmluZE5leHQoY29uc3Qg
VCAmdCkgeyB3aGlsZSAoaSAhPSBjLmNvbnN0RW5kKCkpIGlmICgqaSsrID09IHQpIHJldHVybiB0
cnVlOyByZXR1cm4gZmFsc2U7IH0gaW5saW5lIGJvb2wgZmluZFByZXZpb3VzKGNvbnN0IFQgJnQp
IHsgd2hpbGUgKGkgIT0gYy5jb25zdEJlZ2luKCkpIGlmICgqKC0taSkgPT0gdCkgcmV0dXJuIHRy
dWU7IHJldHVybiBmYWxzZTsgfSB9Owp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUU11dGFibGVM
aXN0SXRlcmF0b3IgeyB0eXBlZGVmIHR5cGVuYW1lIFFMaXN0PFQ+OjppdGVyYXRvciBpdGVyYXRv
cjsgdHlwZWRlZiB0eXBlbmFtZSBRTGlzdDxUPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0
b3I7IFFMaXN0PFQ+ICpjOyBpdGVyYXRvciBpLCBuOyBpbmxpbmUgYm9vbCBpdGVtX2V4aXN0cygp
IGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKG4pICE9IGMtPmNvbnN0RW5kKCk7IH0gcHVi
bGljOiBpbmxpbmUgUU11dGFibGVMaXN0SXRlcmF0b3IoUUxpc3Q8VD4gJmNvbnRhaW5lcikgOiBj
KCZjb250YWluZXIpIHsgYy0+c2V0U2hhcmFibGUoZmFsc2UpOyBpID0gYy0+YmVnaW4oKTsgbiA9
IGMtPmVuZCgpOyB9IGlubGluZSB+UU11dGFibGVMaXN0SXRlcmF0b3IoKSB7IGMtPnNldFNoYXJh
YmxlKHRydWUpOyB9IGlubGluZSBRTXV0YWJsZUxpc3RJdGVyYXRvciAmb3BlcmF0b3I9KFFMaXN0
PFQ+ICZjb250YWluZXIpIHsgYy0+c2V0U2hhcmFibGUodHJ1ZSk7IGMgPSAmY29udGFpbmVyOyBj
LT5zZXRTaGFyYWJsZShmYWxzZSk7IGkgPSBjLT5iZWdpbigpOyBuID0gYy0+ZW5kKCk7IHJldHVy
biAqdGhpczsgfSBpbmxpbmUgdm9pZCB0b0Zyb250KCkgeyBpID0gYy0+YmVnaW4oKTsgbiA9IGMt
PmVuZCgpOyB9IGlubGluZSB2b2lkIHRvQmFjaygpIHsgaSA9IGMtPmVuZCgpOyBuID0gaTsgfSBp
bmxpbmUgYm9vbCBoYXNOZXh0KCkgY29uc3QgeyByZXR1cm4gYy0+Y29uc3RFbmQoKSAhPSBjb25z
dF9pdGVyYXRvcihpKTsgfSBpbmxpbmUgVCAmbmV4dCgpIHsgbiA9IGkrKzsgcmV0dXJuICpuOyB9
IGlubGluZSBUICZwZWVrTmV4dCgpIGNvbnN0IHsgcmV0dXJuICppOyB9IGlubGluZSBib29sIGhh
c1ByZXZpb3VzKCkgY29uc3QgeyByZXR1cm4gYy0+Y29uc3RCZWdpbigpICE9IGNvbnN0X2l0ZXJh
dG9yKGkpOyB9IGlubGluZSBUICZwcmV2aW91cygpIHsgbiA9IC0taTsgcmV0dXJuICpuOyB9IGlu
bGluZSBUICZwZWVrUHJldmlvdXMoKSBjb25zdCB7IGl0ZXJhdG9yIHAgPSBpOyByZXR1cm4gKi0t
cDsgfSBpbmxpbmUgdm9pZCByZW1vdmUoKSB7IGlmIChjLT5jb25zdEVuZCgpICE9IGNvbnN0X2l0
ZXJhdG9yKG4pKSB7IGkgPSBjLT5lcmFzZShuKTsgbiA9IGMtPmVuZCgpOyB9IH0gaW5saW5lIHZv
aWQgc2V0VmFsdWUoY29uc3QgVCAmdCkgY29uc3QgeyBpZiAoYy0+Y29uc3RFbmQoKSAhPSBjb25z
dF9pdGVyYXRvcihuKSkgKm4gPSB0OyB9IGlubGluZSBUICZ2YWx1ZSgpIHsgKCghKGl0ZW1fZXhp
c3RzKCkpKSA/IHF0X2Fzc2VydCgiaXRlbV9leGlzdHMoKSIsIi9vcHQvbG9jYWwvaW5jbHVkZS9R
dENvcmUvcWxpc3QuaCIsODg0KSA6IHF0X25vb3AoKSk7IHJldHVybiAqbjsgfSBpbmxpbmUgY29u
c3QgVCAmdmFsdWUoKSBjb25zdCB7ICgoIShpdGVtX2V4aXN0cygpKSkgPyBxdF9hc3NlcnQoIml0
ZW1fZXhpc3RzKCkiLCIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FsaXN0LmgiLDg4NCkgOiBx
dF9ub29wKCkpOyByZXR1cm4gKm47IH0gaW5saW5lIHZvaWQgaW5zZXJ0KGNvbnN0IFQgJnQpIHsg
biA9IGkgPSBjLT5pbnNlcnQoaSwgdCk7ICsraTsgfSBpbmxpbmUgYm9vbCBmaW5kTmV4dChjb25z
dCBUICZ0KSB7IHdoaWxlIChjLT5jb25zdEVuZCgpICE9IGNvbnN0X2l0ZXJhdG9yKG4gPSBpKSkg
aWYgKCppKysgPT0gdCkgcmV0dXJuIHRydWU7IHJldHVybiBmYWxzZTsgfSBpbmxpbmUgYm9vbCBm
aW5kUHJldmlvdXMoY29uc3QgVCAmdCkgeyB3aGlsZSAoYy0+Y29uc3RCZWdpbigpICE9IGNvbnN0
X2l0ZXJhdG9yKGkpKSBpZiAoKihuID0gLS1pKSA9PSB0KSByZXR1cm4gdHJ1ZTsgbiA9IGMtPmVu
ZCgpOyByZXR1cm4gZmFsc2U7IH0gfTsKCgoKCiMgNTEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENv
cmUvcW9iamVjdC5oIiAyCgoKCgoKCgoKCnR5cGVkZWYgUXRWYWxpZExpY2Vuc2VGb3JDb3JlTW9k
dWxlIFF0Q29yZU1vZHVsZTsKCmNsYXNzIFFFdmVudDsKY2xhc3MgUVRpbWVyRXZlbnQ7CmNsYXNz
IFFDaGlsZEV2ZW50OwpzdHJ1Y3QgUU1ldGFPYmplY3Q7CmNsYXNzIFFWYXJpYW50OwpjbGFzcyBR
T2JqZWN0UHJpdmF0ZTsKY2xhc3MgUU9iamVjdDsKY2xhc3MgUVRocmVhZDsKY2xhc3MgUVdpZGdl
dDsKCmNsYXNzIFFSZWdFeHA7CgoKY2xhc3MgUU9iamVjdFVzZXJEYXRhOwoKCnR5cGVkZWYgUUxp
c3Q8UU9iamVjdCo+IFFPYmplY3RMaXN0OwojIDg3ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3Jl
L3FvYmplY3QuaCIKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgcUZpbmRDaGlsZChjb25z
dCBRT2JqZWN0ICosIGNvbnN0IFFTdHJpbmcgJiA9IFFTdHJpbmcoKSk7CnRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBRTGlzdDxUPiBxRmluZENoaWxkcmVuKGNvbnN0IFFPYmplY3QgKiwgY29u
c3QgUVN0cmluZyAmID0gUVN0cmluZygpKTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBR
TGlzdDxUPiBxRmluZENoaWxkcmVuKGNvbnN0IFFPYmplY3QgKiwgY29uc3QgUVJlZ0V4cCAmKTsK
CgoKY2xhc3MKCgoKUU9iamVjdERhdGEgewpwdWJsaWM6CiAgICB2aXJ0dWFsIH5RT2JqZWN0RGF0
YSgpID0gMDsKICAgIFFPYmplY3QgKnFfcHRyOwogICAgUU9iamVjdCAqcGFyZW50OwogICAgUU9i
amVjdExpc3QgY2hpbGRyZW47CgogICAgdWludCBpc1dpZGdldCA6IDE7CiAgICB1aW50IHBlbmRU
aW1lciA6IDE7CiAgICB1aW50IGJsb2NrU2lnIDogMTsKICAgIHVpbnQgd2FzRGVsZXRlZCA6IDE7
CiAgICB1aW50IG93bk9iamVjdE5hbWUgOiAxOwogICAgdWludCBzZW5kQ2hpbGRFdmVudHMgOiAx
OwogICAgdWludCByZWNlaXZlQ2hpbGRFdmVudHMgOiAxOwogICAgdWludCBpbkV2ZW50SGFuZGxl
ciA6IDE7CiAgICB1aW50IGluVGhyZWFkQ2hhbmdlRXZlbnQgOiAxOwogICAgdWludCBoYXNHdWFy
ZHMgOiAxOwogICAgdWludCB1bnVzZWQgOiAyMjsKICAgIGludCBwb3N0ZWRFdmVudHM7CiAgICBR
TWV0YU9iamVjdCAqbWV0YU9iamVjdDsKfTsKCgpjbGFzcyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSBRT2JqZWN0CnsKICAgIHB1YmxpYzogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGlubGluZSB2b2lkIHF0X2NoZWNrX2Zvcl9RT0JKRUNUX21hY3JvKGNvbnN0IFQgJl9xX2Fy
Z3VtZW50KSBjb25zdCB7IGludCBpID0gcVlvdUZvcmdvdFRoZVFfT0JKRUNUX01hY3JvKHRoaXMs
ICZfcV9hcmd1bWVudCk7IGkgPSBpOyB9IHN0YXRpYyBjb25zdCBRTWV0YU9iamVjdCBzdGF0aWNN
ZXRhT2JqZWN0OyB2aXJ0dWFsIGNvbnN0IFFNZXRhT2JqZWN0ICptZXRhT2JqZWN0KCkgY29uc3Q7
IHZpcnR1YWwgdm9pZCAqcXRfbWV0YWNhc3QoY29uc3QgY2hhciAqKTsgc3RhdGljIGlubGluZSBR
U3RyaW5nIHRyKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmMgPSAwKSB7IHJldHVybiBzdGF0
aWNNZXRhT2JqZWN0LnRyKHMsIGMpOyB9IHN0YXRpYyBpbmxpbmUgUVN0cmluZyB0clV0ZjgoY29u
c3QgY2hhciAqcywgY29uc3QgY2hhciAqYyA9IDApIHsgcmV0dXJuIHN0YXRpY01ldGFPYmplY3Qu
dHJVdGY4KHMsIGMpOyB9IHN0YXRpYyBpbmxpbmUgUVN0cmluZyB0cihjb25zdCBjaGFyICpzLCBj
b25zdCBjaGFyICpjLCBpbnQgbikgeyByZXR1cm4gc3RhdGljTWV0YU9iamVjdC50cihzLCBjLCBu
KTsgfSBzdGF0aWMgaW5saW5lIFFTdHJpbmcgdHJVdGY4KGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNo
YXIgKmMsIGludCBuKSB7IHJldHVybiBzdGF0aWNNZXRhT2JqZWN0LnRyVXRmOChzLCBjLCBuKTsg
fSB2aXJ0dWFsIGludCBxdF9tZXRhY2FsbChRTWV0YU9iamVjdDo6Q2FsbCwgaW50LCB2b2lkICoq
KTsgcHJpdmF0ZToKICAgCiAgICBpbmxpbmUgUU9iamVjdFByaXZhdGUqIGRfZnVuYygpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UU9iamVjdFByaXZhdGUgKj4ocUdldFB0ckhlbHBlcihkX3B0
cikpOyB9IGlubGluZSBjb25zdCBRT2JqZWN0UHJpdmF0ZSogZF9mdW5jKCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBRT2JqZWN0UHJpdmF0ZSAqPihxR2V0UHRySGVscGVy
KGRfcHRyKSk7IH0gZnJpZW5kIGNsYXNzIFFPYmplY3RQcml2YXRlOwoKcHVibGljOgogICAgZXhw
bGljaXQgUU9iamVjdChRT2JqZWN0ICpwYXJlbnQ9MCk7CiAgICB2aXJ0dWFsIH5RT2JqZWN0KCk7
CgogICAgdmlydHVhbCBib29sIGV2ZW50KFFFdmVudCAqKTsKICAgIHZpcnR1YWwgYm9vbCBldmVu
dEZpbHRlcihRT2JqZWN0ICosIFFFdmVudCAqKTsKIyAxNTMgIi9vcHQvbG9jYWwvaW5jbHVkZS9R
dENvcmUvcW9iamVjdC5oIgogICAgUVN0cmluZyBvYmplY3ROYW1lKCkgY29uc3Q7CiAgICB2b2lk
IHNldE9iamVjdE5hbWUoY29uc3QgUVN0cmluZyAmbmFtZSk7CgogICAgaW5saW5lIGJvb2wgaXNX
aWRnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gZF9wdHItPmlzV2lkZ2V0OyB9CgogICAgaW5saW5l
IGJvb2wgc2lnbmFsc0Jsb2NrZWQoKSBjb25zdCB7IHJldHVybiBkX3B0ci0+YmxvY2tTaWc7IH0K
ICAgIGJvb2wgYmxvY2tTaWduYWxzKGJvb2wgYik7CgogICAgUVRocmVhZCAqdGhyZWFkKCkgY29u
c3Q7CiAgICB2b2lkIG1vdmVUb1RocmVhZChRVGhyZWFkICp0aHJlYWQpOwoKICAgIGludCBzdGFy
dFRpbWVyKGludCBpbnRlcnZhbCk7CiAgICB2b2lkIGtpbGxUaW1lcihpbnQgaWQpOwoKCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgaW5saW5lIFQgZmluZENoaWxkKGNvbnN0IFFTdHJpbmcg
JmFOYW1lID0gUVN0cmluZygpKSBjb25zdAogICAgeyByZXR1cm4gcUZpbmRDaGlsZDxUPih0aGlz
LCBhTmFtZSk7IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgaW5saW5lIFFMaXN0PFQ+
IGZpbmRDaGlsZHJlbihjb25zdCBRU3RyaW5nICZhTmFtZSA9IFFTdHJpbmcoKSkgY29uc3QKICAg
IHsgcmV0dXJuIHFGaW5kQ2hpbGRyZW48VD4odGhpcywgYU5hbWUpOyB9CgoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiAgICBpbmxpbmUgUUxpc3Q8VD4gZmluZENoaWxkcmVuKGNvbnN0IFFSZWdF
eHAgJnJlKSBjb25zdAogICAgeyByZXR1cm4gcUZpbmRDaGlsZHJlbjxUPih0aGlzLCByZSk7IH0K
IyAxOTEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcW9iamVjdC5oIgogICAgaW5saW5lIGNv
bnN0IFFPYmplY3RMaXN0ICZjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGRfcHRyLT5jaGlsZHJl
bjsgfQoKICAgIHZvaWQgc2V0UGFyZW50KFFPYmplY3QgKik7CiAgICB2b2lkIGluc3RhbGxFdmVu
dEZpbHRlcihRT2JqZWN0ICopOwogICAgdm9pZCByZW1vdmVFdmVudEZpbHRlcihRT2JqZWN0ICop
OwoKCiAgICBzdGF0aWMgYm9vbCBjb25uZWN0KGNvbnN0IFFPYmplY3QgKnNlbmRlciwgY29uc3Qg
Y2hhciAqc2lnbmFsLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRT2JqZWN0ICpyZWNl
aXZlciwgY29uc3QgY2hhciAqbWVtYmVyLCBRdDo6Q29ubmVjdGlvblR5cGUgPQoKCgoKCgogICAg
ICAgICAgICAgICAgICAgICAgICBRdDo6QXV0b0Nvbm5lY3Rpb24KCgogICAgICAgICk7CiAgICBp
bmxpbmUgYm9vbCBjb25uZWN0KGNvbnN0IFFPYmplY3QgKnNlbmRlciwgY29uc3QgY2hhciAqc2ln
bmFsLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZW1iZXIsIFF0OjpDb25u
ZWN0aW9uVHlwZSB0eXBlID0KCgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgUXQ6OkF1dG9D
b25uZWN0aW9uCgoKICAgICAgICApIGNvbnN0OwoKICAgIHN0YXRpYyBib29sIGRpc2Nvbm5lY3Qo
Y29uc3QgUU9iamVjdCAqc2VuZGVyLCBjb25zdCBjaGFyICpzaWduYWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFFPYmplY3QgKnJlY2VpdmVyLCBjb25zdCBjaGFyICptZW1iZXIp
OwogICAgaW5saW5lIGJvb2wgZGlzY29ubmVjdChjb25zdCBjaGFyICpzaWduYWwgPSAwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRT2JqZWN0ICpyZWNlaXZlciA9IDAsIGNvbnN0
IGNoYXIgKm1lbWJlciA9IDApCiAgICAgICAgeyByZXR1cm4gZGlzY29ubmVjdCh0aGlzLCBzaWdu
YWwsIHJlY2VpdmVyLCBtZW1iZXIpOyB9CiAgICBpbmxpbmUgYm9vbCBkaXNjb25uZWN0KGNvbnN0
IFFPYmplY3QgKnJlY2VpdmVyLCBjb25zdCBjaGFyICptZW1iZXIgPSAwKQogICAgICAgIHsgcmV0
dXJuIGRpc2Nvbm5lY3QodGhpcywgMCwgcmVjZWl2ZXIsIG1lbWJlcik7IH0KCiAgICB2b2lkIGR1
bXBPYmplY3RUcmVlKCk7CiAgICB2b2lkIGR1bXBPYmplY3RJbmZvKCk7CgoKICAgIGJvb2wgc2V0
UHJvcGVydHkoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgUVZhcmlhbnQgJnZhbHVlKTsKICAgIFFW
YXJpYW50IHByb3BlcnR5KGNvbnN0IGNoYXIgKm5hbWUpIGNvbnN0OwogICAgUUxpc3Q8UUJ5dGVB
cnJheT4gZHluYW1pY1Byb3BlcnR5TmFtZXMoKSBjb25zdDsKCgoKICAgIHN0YXRpYyB1aW50IHJl
Z2lzdGVyVXNlckRhdGEoKTsKICAgIHZvaWQgc2V0VXNlckRhdGEodWludCBpZCwgUU9iamVjdFVz
ZXJEYXRhKiBkYXRhKTsKICAgIFFPYmplY3RVc2VyRGF0YSogdXNlckRhdGEodWludCBpZCkgY29u
c3Q7CgoKcHJvdGVjdGVkOgogICAgdm9pZCBkZXN0cm95ZWQoUU9iamVjdCAqID0gMCk7CgpwdWJs
aWM6CiAgICBpbmxpbmUgUU9iamVjdCAqcGFyZW50KCkgY29uc3QgeyByZXR1cm4gZF9wdHItPnBh
cmVudDsgfQoKICAgIGlubGluZSBib29sIGluaGVyaXRzKGNvbnN0IGNoYXIgKmNsYXNzbmFtZSkg
Y29uc3QKICAgICAgICB7IHJldHVybiBjb25zdF9jYXN0PFFPYmplY3QgKj4odGhpcyktPnF0X21l
dGFjYXN0KGNsYXNzbmFtZSkgIT0gMDsgfQoKcHVibGljIDoKICAgIHZvaWQgZGVsZXRlTGF0ZXIo
KTsKCnByb3RlY3RlZDoKICAgIFFPYmplY3QgKnNlbmRlcigpIGNvbnN0OwogICAgaW50IHJlY2Vp
dmVycyhjb25zdCBjaGFyKiBzaWduYWwpIGNvbnN0OwoKICAgIHZpcnR1YWwgdm9pZCB0aW1lckV2
ZW50KFFUaW1lckV2ZW50ICopOwogICAgdmlydHVhbCB2b2lkIGNoaWxkRXZlbnQoUUNoaWxkRXZl
bnQgKik7CiAgICB2aXJ0dWFsIHZvaWQgY3VzdG9tRXZlbnQoUUV2ZW50ICopOwoKICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0Tm90aWZ5KGNvbnN0IGNoYXIgKnNpZ25hbCk7CiAgICB2aXJ0dWFsIHZv
aWQgZGlzY29ubmVjdE5vdGlmeShjb25zdCBjaGFyICpzaWduYWwpOwojIDI5MiAiL29wdC9sb2Nh
bC9pbmNsdWRlL1F0Q29yZS9xb2JqZWN0LmgiCnByb3RlY3RlZDoKICAgIFFPYmplY3QoUU9iamVj
dFByaXZhdGUgJmRkLCBRT2JqZWN0ICpwYXJlbnQgPSAwKTsKCnByb3RlY3RlZDoKICAgIFFTY29w
ZWRQb2ludGVyPFFPYmplY3REYXRhPiBkX3B0cjsKCiAgICBzdGF0aWMgY29uc3QgUU1ldGFPYmpl
Y3Qgc3RhdGljUXRNZXRhT2JqZWN0OwoKICAgIGZyaWVuZCBzdHJ1Y3QgUU1ldGFPYmplY3Q7CiAg
ICBmcmllbmQgY2xhc3MgUUFwcGxpY2F0aW9uOwogICAgZnJpZW5kIGNsYXNzIFFBcHBsaWNhdGlv
blByaXZhdGU7CiAgICBmcmllbmQgY2xhc3MgUUNvcmVBcHBsaWNhdGlvbjsKICAgIGZyaWVuZCBj
bGFzcyBRQ29yZUFwcGxpY2F0aW9uUHJpdmF0ZTsKICAgIGZyaWVuZCBjbGFzcyBRV2lkZ2V0Owog
ICAgZnJpZW5kIGNsYXNzIFFUaHJlYWREYXRhOwoKcHJpdmF0ZToKICAgIFFPYmplY3QoY29uc3Qg
UU9iamVjdCAmKTsgUU9iamVjdCAmb3BlcmF0b3I9KGNvbnN0IFFPYmplY3QgJik7CiAgIAp9OwoK
aW5saW5lIGJvb2wgUU9iamVjdDo6Y29ubmVjdChjb25zdCBRT2JqZWN0ICphc2VuZGVyLCBjb25z
dCBjaGFyICphc2lnbmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KmFtZW1iZXIsIFF0OjpDb25uZWN0aW9uVHlwZSBhdHlwZSkgY29uc3QKeyByZXR1cm4gY29ubmVj
dChhc2VuZGVyLCBhc2lnbmFsLCB0aGlzLCBhbWVtYmVyLCBhdHlwZSk7IH0KCgpjbGFzcyBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRT2JqZWN0VXNlckRhdGEgewpwdWJs
aWM6CiAgICB2aXJ0dWFsIH5RT2JqZWN0VXNlckRhdGEoKTsKfTsKCgpfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkIHF0X3FGaW5kQ2hpbGRyZW5faGVscGVyKGNvbnN0
IFFPYmplY3QgKnBhcmVudCwgY29uc3QgUVN0cmluZyAmbmFtZSwgY29uc3QgUVJlZ0V4cCAqcmUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRTWV0YU9i
amVjdCAmbW8sIFFMaXN0PHZvaWQgKj4gKmxpc3QpOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBRT2JqZWN0ICpxdF9xRmluZENoaWxkX2hlbHBlcihjb25zdCBRT2JqZWN0
ICpwYXJlbnQsIGNvbnN0IFFTdHJpbmcgJm5hbWUsIGNvbnN0IFFNZXRhT2JqZWN0ICZtbyk7Cgp0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgppbmxpbmUgVCBxRmluZENoaWxkKGNvbnN0IFFPYmplY3QgKm8s
IGNvbnN0IFFTdHJpbmcgJm5hbWUpCnsgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHF0X3FGaW5kQ2hp
bGRfaGVscGVyKG8sIG5hbWUsIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oMCktPnN0YXRpY01ldGFPYmpl
Y3QpKTsgfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KaW5saW5lIFFMaXN0PFQ+IHFGaW5kQ2hpbGRy
ZW4oY29uc3QgUU9iamVjdCAqbywgY29uc3QgUVN0cmluZyAmbmFtZSkKewogICAgUUxpc3Q8VD4g
bGlzdDsKICAgIHVuaW9uIHsKICAgICAgICBRTGlzdDxUPiAqdHlwZWRMaXN0OwogICAgICAgIFFM
aXN0PHZvaWQgKj4gKnZvaWRMaXN0OwogICAgfSB1OwogICAgdS50eXBlZExpc3QgPSAmbGlzdDsK
ICAgIHF0X3FGaW5kQ2hpbGRyZW5faGVscGVyKG8sIG5hbWUsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
VD4oMCktPnN0YXRpY01ldGFPYmplY3QsIHUudm9pZExpc3QpOwogICAgcmV0dXJuIGxpc3Q7Cn0K
Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgppbmxpbmUgUUxpc3Q8VD4gcUZpbmRDaGlsZHJlbihjb25z
dCBRT2JqZWN0ICpvLCBjb25zdCBRUmVnRXhwICZyZSkKewogICAgUUxpc3Q8VD4gbGlzdDsKICAg
IHVuaW9uIHsKICAgICAgICBRTGlzdDxUPiAqdHlwZWRMaXN0OwogICAgICAgIFFMaXN0PHZvaWQg
Kj4gKnZvaWRMaXN0OwogICAgfSB1OwogICAgdS50eXBlZExpc3QgPSAmbGlzdDsKICAgIHF0X3FG
aW5kQ2hpbGRyZW5faGVscGVyKG8sIFFTdHJpbmcoKSwgJnJlLCByZWludGVycHJldF9jYXN0PFQ+
KDApLT5zdGF0aWNNZXRhT2JqZWN0LCB1LnZvaWRMaXN0KTsKICAgIHJldHVybiBsaXN0Owp9CgoK
dGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSBUIHFvYmplY3RfY2FzdChRT2JqZWN0ICpvYmplY3Qp
CnsKCiAgICByZWludGVycHJldF9jYXN0PFQ+KDApLT5xdF9jaGVja19mb3JfUU9CSkVDVF9tYWNy
bygqcmVpbnRlcnByZXRfY2FzdDxUPihvYmplY3QpKTsKCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VD4ocmVpbnRlcnByZXRfY2FzdDxUPigwKS0+c3RhdGljTWV0YU9iamVjdC5jYXN0KG9iamVjdCkp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lIFQgcW9iamVjdF9jYXN0KGNvbnN0IFFPYmpl
Y3QgKm9iamVjdCkKewoKICAgIHJlZ2lzdGVyIFQgcHRyID0gc3RhdGljX2Nhc3Q8VD4ob2JqZWN0
KTsKICAgICh2b2lkKXB0cjs7CgoKICAgIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oMCktPnF0X2NoZWNr
X2Zvcl9RT0JKRUNUX21hY3JvKCpyZWludGVycHJldF9jYXN0PFQ+KGNvbnN0X2Nhc3Q8UU9iamVj
dCAqPihvYmplY3QpKSk7CgogICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGNvbnN0X2Nhc3Q8UU9i
amVjdCAqPihyZWludGVycHJldF9jYXN0PFQ+KDApLT5zdGF0aWNNZXRhT2JqZWN0LmNhc3QoY29u
c3RfY2FzdDxRT2JqZWN0ICo+KG9iamVjdCkpKSk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5s
aW5lIGNvbnN0IGNoYXIgKiBxb2JqZWN0X2ludGVyZmFjZV9paWQoKQp7IHJldHVybiAwOyB9CgoK
I2RlZmluZSBRX0RFQ0xBUkVfSU5URVJGQUNFKElGYWNlLElJZCkgdGVtcGxhdGUgPD4gaW5saW5l
IGNvbnN0IGNoYXIgKnFvYmplY3RfaW50ZXJmYWNlX2lpZDxJRmFjZSAqPigpIHsgcmV0dXJuIElJ
ZDsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgSUZhY2UgKnFvYmplY3RfY2FzdDxJRmFjZSAqPihRT2Jq
ZWN0ICpvYmplY3QpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SUZhY2UgKj4oKG9iamVjdCA/
IG9iamVjdC0+cXRfbWV0YWNhc3QoSUlkKSA6IDApKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgSUZh
Y2UgKnFvYmplY3RfY2FzdDxJRmFjZSAqPihjb25zdCBRT2JqZWN0ICpvYmplY3QpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8SUZhY2UgKj4oKG9iamVjdCA/IGNvbnN0X2Nhc3Q8UU9iamVjdCAq
PihvYmplY3QpLT5xdF9tZXRhY2FzdChJSWQpIDogMCkpOyB9CiMgMzk3ICIvb3B0L2xvY2FsL2lu
Y2x1ZGUvUXRDb3JlL3FvYmplY3QuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSkgUURlYnVnIG9wZXJhdG9yPDwoUURlYnVnLCBjb25zdCBRT2JqZWN0ICopOwoKCgoKCiMg
NDcgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWlvZGV2aWNlLmgiIDIKIyA1NyAiL29wdC9s
b2NhbC9pbmNsdWRlL1F0Q29yZS9xaW9kZXZpY2UuaCIKCgoKCnR5cGVkZWYgUXRWYWxpZExpY2Vu
c2VGb3JDb3JlTW9kdWxlIFF0Q29yZU1vZHVsZTsKCmNsYXNzIFFCeXRlQXJyYXk7CmNsYXNzIFFJ
T0RldmljZVByaXZhdGU7CgpjbGFzcyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKSBRSU9EZXZpY2UKCiAgICA6IHB1YmxpYyBRT2JqZWN0Cgp7CgogICAgcHVibGljOiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgcXRfY2hlY2tfZm9yX1FPQkpFQ1RfbWFjcm8o
Y29uc3QgVCAmX3FfYXJndW1lbnQpIGNvbnN0IHsgaW50IGkgPSBxWW91Rm9yZ290VGhlUV9PQkpF
Q1RfTWFjcm8odGhpcywgJl9xX2FyZ3VtZW50KTsgaSA9IGk7IH0gc3RhdGljIGNvbnN0IFFNZXRh
T2JqZWN0IHN0YXRpY01ldGFPYmplY3Q7IHZpcnR1YWwgY29uc3QgUU1ldGFPYmplY3QgKm1ldGFP
YmplY3QoKSBjb25zdDsgdmlydHVhbCB2b2lkICpxdF9tZXRhY2FzdChjb25zdCBjaGFyICopOyBz
dGF0aWMgaW5saW5lIFFTdHJpbmcgdHIoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqYyA9IDAp
IHsgcmV0dXJuIHN0YXRpY01ldGFPYmplY3QudHIocywgYyk7IH0gc3RhdGljIGlubGluZSBRU3Ry
aW5nIHRyVXRmOChjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpjID0gMCkgeyByZXR1cm4gc3Rh
dGljTWV0YU9iamVjdC50clV0ZjgocywgYyk7IH0gc3RhdGljIGlubGluZSBRU3RyaW5nIHRyKGNv
bnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmMsIGludCBuKSB7IHJldHVybiBzdGF0aWNNZXRhT2Jq
ZWN0LnRyKHMsIGMsIG4pOyB9IHN0YXRpYyBpbmxpbmUgUVN0cmluZyB0clV0ZjgoY29uc3QgY2hh
ciAqcywgY29uc3QgY2hhciAqYywgaW50IG4pIHsgcmV0dXJuIHN0YXRpY01ldGFPYmplY3QudHJV
dGY4KHMsIGMsIG4pOyB9IHZpcnR1YWwgaW50IHF0X21ldGFjYWxsKFFNZXRhT2JqZWN0OjpDYWxs
LCBpbnQsIHZvaWQgKiopOyBwcml2YXRlOgoKcHVibGljOgogICAgZW51bSBPcGVuTW9kZUZsYWcg
ewogICAgICAgIE5vdE9wZW4gPSAweDAwMDAsCiAgICAgICAgUmVhZE9ubHkgPSAweDAwMDEsCiAg
ICAgICAgV3JpdGVPbmx5ID0gMHgwMDAyLAogICAgICAgIFJlYWRXcml0ZSA9IFJlYWRPbmx5IHwg
V3JpdGVPbmx5LAogICAgICAgIEFwcGVuZCA9IDB4MDAwNCwKICAgICAgICBUcnVuY2F0ZSA9IDB4
MDAwOCwKICAgICAgICBUZXh0ID0gMHgwMDEwLAogICAgICAgIFVuYnVmZmVyZWQgPSAweDAwMjAK
ICAgIH07CiAgICB0eXBlZGVmIFFGbGFnczxPcGVuTW9kZUZsYWc+IE9wZW5Nb2RlOwoKICAgIFFJ
T0RldmljZSgpOwoKICAgIGV4cGxpY2l0IFFJT0RldmljZShRT2JqZWN0ICpwYXJlbnQpOwoKICAg
IHZpcnR1YWwgflFJT0RldmljZSgpOwoKICAgIE9wZW5Nb2RlIG9wZW5Nb2RlKCkgY29uc3Q7Cgog
ICAgdm9pZCBzZXRUZXh0TW9kZUVuYWJsZWQoYm9vbCBlbmFibGVkKTsKICAgIGJvb2wgaXNUZXh0
TW9kZUVuYWJsZWQoKSBjb25zdDsKCiAgICBib29sIGlzT3BlbigpIGNvbnN0OwogICAgYm9vbCBp
c1JlYWRhYmxlKCkgY29uc3Q7CiAgICBib29sIGlzV3JpdGFibGUoKSBjb25zdDsKICAgIHZpcnR1
YWwgYm9vbCBpc1NlcXVlbnRpYWwoKSBjb25zdDsKCiAgICB2aXJ0dWFsIGJvb2wgb3BlbihPcGVu
TW9kZSBtb2RlKTsKICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwoKCgogICAgdmlydHVhbCBxaW50
NjQgcG9zKCkgY29uc3Q7CiAgICB2aXJ0dWFsIHFpbnQ2NCBzaXplKCkgY29uc3Q7CiAgICB2aXJ0
dWFsIGJvb2wgc2VlayhxaW50NjQgcG9zKTsKICAgIHZpcnR1YWwgYm9vbCBhdEVuZCgpIGNvbnN0
OwogICAgdmlydHVhbCBib29sIHJlc2V0KCk7CgogICAgdmlydHVhbCBxaW50NjQgYnl0ZXNBdmFp
bGFibGUoKSBjb25zdDsKICAgIHZpcnR1YWwgcWludDY0IGJ5dGVzVG9Xcml0ZSgpIGNvbnN0OwoK
ICAgIHFpbnQ2NCByZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhsZW4pOwogICAgUUJ5dGVBcnJh
eSByZWFkKHFpbnQ2NCBtYXhsZW4pOwogICAgUUJ5dGVBcnJheSByZWFkQWxsKCk7CiAgICBxaW50
NjQgcmVhZExpbmUoY2hhciAqZGF0YSwgcWludDY0IG1heGxlbik7CiAgICBRQnl0ZUFycmF5IHJl
YWRMaW5lKHFpbnQ2NCBtYXhsZW4gPSAwKTsKICAgIHZpcnR1YWwgYm9vbCBjYW5SZWFkTGluZSgp
IGNvbnN0OwoKICAgIHFpbnQ2NCB3cml0ZShjb25zdCBjaGFyICpkYXRhLCBxaW50NjQgbGVuKTsK
ICAgIHFpbnQ2NCB3cml0ZShjb25zdCBjaGFyICpkYXRhKTsKICAgIGlubGluZSBxaW50NjQgd3Jp
dGUoY29uc3QgUUJ5dGVBcnJheSAmZGF0YSkKICAgIHsgcmV0dXJuIHdyaXRlKGRhdGEuY29uc3RE
YXRhKCksIGRhdGEuc2l6ZSgpKTsgfQoKICAgIHFpbnQ2NCBwZWVrKGNoYXIgKmRhdGEsIHFpbnQ2
NCBtYXhsZW4pOwogICAgUUJ5dGVBcnJheSBwZWVrKHFpbnQ2NCBtYXhsZW4pOwoKICAgIHZpcnR1
YWwgYm9vbCB3YWl0Rm9yUmVhZHlSZWFkKGludCBtc2Vjcyk7CiAgICB2aXJ0dWFsIGJvb2wgd2Fp
dEZvckJ5dGVzV3JpdHRlbihpbnQgbXNlY3MpOwoKICAgIHZvaWQgdW5nZXRDaGFyKGNoYXIgYyk7
CiAgICBib29sIHB1dENoYXIoY2hhciBjKTsKICAgIGJvb2wgZ2V0Q2hhcihjaGFyICpjKTsKCiAg
ICBRU3RyaW5nIGVycm9yU3RyaW5nKCkgY29uc3Q7CgoKcHJvdGVjdGVkOgogICAgdm9pZCByZWFk
eVJlYWQoKTsKICAgIHZvaWQgYnl0ZXNXcml0dGVuKHFpbnQ2NCBieXRlcyk7CiAgICB2b2lkIGFi
b3V0VG9DbG9zZSgpOwogICAgdm9pZCByZWFkQ2hhbm5lbEZpbmlzaGVkKCk7CgoKcHJvdGVjdGVk
OgoKCgogICAgUUlPRGV2aWNlKFFJT0RldmljZVByaXZhdGUgJmRkLCBRT2JqZWN0ICpwYXJlbnQg
PSAwKTsKCiAgICB2aXJ0dWFsIHFpbnQ2NCByZWFkRGF0YShjaGFyICpkYXRhLCBxaW50NjQgbWF4
bGVuKSA9IDA7CiAgICB2aXJ0dWFsIHFpbnQ2NCByZWFkTGluZURhdGEoY2hhciAqZGF0YSwgcWlu
dDY0IG1heGxlbik7CiAgICB2aXJ0dWFsIHFpbnQ2NCB3cml0ZURhdGEoY29uc3QgY2hhciAqZGF0
YSwgcWludDY0IGxlbikgPSAwOwoKICAgIHZvaWQgc2V0T3Blbk1vZGUoT3Blbk1vZGUgb3Blbk1v
ZGUpOwoKICAgIHZvaWQgc2V0RXJyb3JTdHJpbmcoY29uc3QgUVN0cmluZyAmZXJyb3JTdHJpbmcp
OwoKCgoKCnByaXZhdGU6CiAgICBpbmxpbmUgUUlPRGV2aWNlUHJpdmF0ZSogZF9mdW5jKCkgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxRSU9EZXZpY2VQcml2YXRlICo+KHFHZXRQdHJIZWxwZXIo
ZF9wdHIpKTsgfSBpbmxpbmUgY29uc3QgUUlPRGV2aWNlUHJpdmF0ZSogZF9mdW5jKCkgY29uc3Qg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBRSU9EZXZpY2VQcml2YXRlICo+KHFHZXRQ
dHJIZWxwZXIoZF9wdHIpKTsgfSBmcmllbmQgY2xhc3MgUUlPRGV2aWNlUHJpdmF0ZTsKICAgIFFJ
T0RldmljZShjb25zdCBRSU9EZXZpY2UgJik7IFFJT0RldmljZSAmb3BlcmF0b3I9KGNvbnN0IFFJ
T0RldmljZSAmKTsKIyAyMDQgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWlvZGV2aWNlLmgi
Cn07CgppbmxpbmUgUUZsYWdzPFFJT0RldmljZTo6T3Blbk1vZGU6OmVudW1fdHlwZT4gb3BlcmF0
b3J8KFFJT0RldmljZTo6T3Blbk1vZGU6OmVudW1fdHlwZSBmMSwgUUlPRGV2aWNlOjpPcGVuTW9k
ZTo6ZW51bV90eXBlIGYyKSB7IHJldHVybiBRRmxhZ3M8UUlPRGV2aWNlOjpPcGVuTW9kZTo6ZW51
bV90eXBlPihmMSkgfCBmMjsgfSBpbmxpbmUgUUZsYWdzPFFJT0RldmljZTo6T3Blbk1vZGU6OmVu
dW1fdHlwZT4gb3BlcmF0b3J8KFFJT0RldmljZTo6T3Blbk1vZGU6OmVudW1fdHlwZSBmMSwgUUZs
YWdzPFFJT0RldmljZTo6T3Blbk1vZGU6OmVudW1fdHlwZT4gZjIpIHsgcmV0dXJuIGYyIHwgZjE7
IH0gaW5saW5lIFFJbmNvbXBhdGlibGVGbGFnIG9wZXJhdG9yfChRSU9EZXZpY2U6Ok9wZW5Nb2Rl
OjplbnVtX3R5cGUgZjEsIGludCBmMikgeyByZXR1cm4gUUluY29tcGF0aWJsZUZsYWcoaW50KGYx
KSB8IGYyKTsgfQojIDI0NiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xaW9kZXZpY2UuaCIK
Y2xhc3MgUURlYnVnOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGVi
dWcgb3BlcmF0b3I8PChRRGVidWcgZGVidWcsIFFJT0RldmljZTo6T3Blbk1vZGUgbW9kZXMpOwoK
CgoKCiMgNDcgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWRhdGFzdHJlYW0uaCIgMgoKCgoK
CgoKCgoKdHlwZWRlZiBRdFZhbGlkTGljZW5zZUZvckNvcmVNb2R1bGUgUXRDb3JlTW9kdWxlOwoK
Y2xhc3MgUUJ5dGVBcnJheTsKY2xhc3MgUUlPRGV2aWNlOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIFFMaXN0Owp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUUxpbmtlZExpc3Q7CnRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBRVmVjdG9yOwp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgUVNldDsKdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVD4gY2xhc3MgUUhhc2g7CnRl
bXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIFQ+IGNsYXNzIFFNYXA7CgoKY2xhc3MgUURhdGFTdHJl
YW1Qcml2YXRlOwpjbGFzcyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBR
RGF0YVN0cmVhbQp7CnB1YmxpYzoKICAgIGVudW0gVmVyc2lvbiB7CiAgICAgICAgUXRfMV8wID0g
MSwKICAgICAgICBRdF8yXzAgPSAyLAogICAgICAgIFF0XzJfMSA9IDMsCiAgICAgICAgUXRfM18w
ID0gNCwKICAgICAgICBRdF8zXzEgPSA1LAogICAgICAgIFF0XzNfMyA9IDYsCiAgICAgICAgUXRf
NF8wID0gNywKICAgICAgICBRdF80XzEgPSBRdF80XzAsCiAgICAgICAgUXRfNF8yID0gOCwKICAg
ICAgICBRdF80XzMgPSA5LAogICAgICAgIFF0XzRfNCA9IDEwLAogICAgICAgIFF0XzRfNSA9IDEx
LAogICAgICAgIFF0XzRfNiA9IDEyLAogICAgICAgIFF0XzRfNyA9IFF0XzRfNgoKCgoKICAgIH07
CgogICAgZW51bSBCeXRlT3JkZXIgewogICAgICAgIEJpZ0VuZGlhbiA9IFFTeXNJbmZvOjpCaWdF
bmRpYW4sCiAgICAgICAgTGl0dGxlRW5kaWFuID0gUVN5c0luZm86OkxpdHRsZUVuZGlhbgogICAg
fTsKCiAgICBlbnVtIFN0YXR1cyB7CiAgICAgICAgT2ssCiAgICAgICAgUmVhZFBhc3RFbmQsCiBS
ZWFkQ29ycnVwdERhdGEKICAgIH07CgogICAgZW51bSBGbG9hdGluZ1BvaW50UHJlY2lzaW9uIHsK
ICAgICAgICBTaW5nbGVQcmVjaXNpb24sCiAgICAgICAgRG91YmxlUHJlY2lzaW9uCiAgICB9OwoK
ICAgIFFEYXRhU3RyZWFtKCk7CiAgICBleHBsaWNpdCBRRGF0YVN0cmVhbShRSU9EZXZpY2UgKik7
CgoKCiAgICBRRGF0YVN0cmVhbShRQnl0ZUFycmF5ICosIFFJT0RldmljZTo6T3Blbk1vZGUgZmxh
Z3MpOwogICAgUURhdGFTdHJlYW0oY29uc3QgUUJ5dGVBcnJheSAmKTsKICAgIHZpcnR1YWwgflFE
YXRhU3RyZWFtKCk7CgogICAgUUlPRGV2aWNlICpkZXZpY2UoKSBjb25zdDsKICAgIHZvaWQgc2V0
RGV2aWNlKFFJT0RldmljZSAqKTsKICAgIHZvaWQgdW5zZXREZXZpY2UoKTsKCiAgICBib29sIGF0
RW5kKCkgY29uc3Q7CgoKCgogICAgU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogICAgdm9pZCBzZXRT
dGF0dXMoU3RhdHVzIHN0YXR1cyk7CiAgICB2b2lkIHJlc2V0U3RhdHVzKCk7CgogICAgRmxvYXRp
bmdQb2ludFByZWNpc2lvbiBmbG9hdGluZ1BvaW50UHJlY2lzaW9uKCkgY29uc3Q7CiAgICB2b2lk
IHNldEZsb2F0aW5nUG9pbnRQcmVjaXNpb24oRmxvYXRpbmdQb2ludFByZWNpc2lvbiBwcmVjaXNp
b24pOwoKICAgIEJ5dGVPcmRlciBieXRlT3JkZXIoKSBjb25zdDsKICAgIHZvaWQgc2V0Qnl0ZU9y
ZGVyKEJ5dGVPcmRlcik7CgogICAgaW50IHZlcnNpb24oKSBjb25zdDsKICAgIHZvaWQgc2V0VmVy
c2lvbihpbnQpOwoKICAgIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KHFpbnQ4ICZpKTsKICAgIFFE
YXRhU3RyZWFtICZvcGVyYXRvcj4+KHF1aW50OCAmaSk7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0
b3I+PihxaW50MTYgJmkpOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4ocXVpbnQxNiAmaSk7
CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihxaW50MzIgJmkpOwogICAgUURhdGFTdHJlYW0g
Jm9wZXJhdG9yPj4ocXVpbnQzMiAmaSk7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihxaW50
NjQgJmkpOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4ocXVpbnQ2NCAmaSk7CgogICAgUURh
dGFTdHJlYW0gJm9wZXJhdG9yPj4oYm9vbCAmaSk7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+
PihmbG9hdCAmZik7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+Pihkb3VibGUgJmYpOwogICAg
UURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oY2hhciAqJnN0cik7CgogICAgUURhdGFTdHJlYW0gJm9w
ZXJhdG9yPDwocWludDggaSk7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChxdWludDggaSk7
CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChxaW50MTYgaSk7CiAgICBRRGF0YVN0cmVhbSAm
b3BlcmF0b3I8PChxdWludDE2IGkpOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwocWludDMy
IGkpOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwocXVpbnQzMiBpKTsKICAgIFFEYXRhU3Ry
ZWFtICZvcGVyYXRvcjw8KHFpbnQ2NCBpKTsKICAgIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KHF1
aW50NjQgaSk7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChib29sIGkpOwogICAgUURhdGFT
dHJlYW0gJm9wZXJhdG9yPDwoZmxvYXQgZik7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChk
b3VibGUgZik7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChjb25zdCBjaGFyICpzdHIpOwoK
ICAgIFFEYXRhU3RyZWFtICZyZWFkQnl0ZXMoY2hhciAqJiwgdWludCAmbGVuKTsKICAgIGludCBy
ZWFkUmF3RGF0YShjaGFyICosIGludCBsZW4pOwoKICAgIFFEYXRhU3RyZWFtICZ3cml0ZUJ5dGVz
KGNvbnN0IGNoYXIgKiwgdWludCBsZW4pOwogICAgaW50IHdyaXRlUmF3RGF0YShjb25zdCBjaGFy
ICosIGludCBsZW4pOwoKICAgIGludCBza2lwUmF3RGF0YShpbnQgbGVuKTsKIyAxODYgIi9vcHQv
bG9jYWwvaW5jbHVkZS9RdENvcmUvcWRhdGFzdHJlYW0uaCIKcHJpdmF0ZToKICAgIFFEYXRhU3Ry
ZWFtKGNvbnN0IFFEYXRhU3RyZWFtICYpOyBRRGF0YVN0cmVhbSAmb3BlcmF0b3I9KGNvbnN0IFFE
YXRhU3RyZWFtICYpOwoKICAgIFFTY29wZWRQb2ludGVyPFFEYXRhU3RyZWFtUHJpdmF0ZT4gZDsK
CiAgICBRSU9EZXZpY2UgKmRldjsKICAgIGJvb2wgb3duZGV2OwogICAgYm9vbCBub3N3YXA7CiAg
ICBCeXRlT3JkZXIgYnl0ZW9yZGVyOwogICAgaW50IHZlcjsKICAgIFN0YXR1cyBxX3N0YXR1czsK
fTsKCgoKCgoKaW5saW5lIFFJT0RldmljZSAqUURhdGFTdHJlYW06OmRldmljZSgpIGNvbnN0Cnsg
cmV0dXJuIGRldjsgfQoKaW5saW5lIFFEYXRhU3RyZWFtOjpCeXRlT3JkZXIgUURhdGFTdHJlYW06
OmJ5dGVPcmRlcigpIGNvbnN0CnsgcmV0dXJuIGJ5dGVvcmRlcjsgfQoKaW5saW5lIGludCBRRGF0
YVN0cmVhbTo6dmVyc2lvbigpIGNvbnN0CnsgcmV0dXJuIHZlcjsgfQoKaW5saW5lIHZvaWQgUURh
dGFTdHJlYW06OnNldFZlcnNpb24oaW50IHYpCnsgdmVyID0gdjsgfQoKaW5saW5lIFFEYXRhU3Ry
ZWFtICZRRGF0YVN0cmVhbTo6b3BlcmF0b3I+PihxdWludDggJmkpCnsgcmV0dXJuICp0aGlzID4+
IHJlaW50ZXJwcmV0X2Nhc3Q8cWludDgmPihpKTsgfQoKaW5saW5lIFFEYXRhU3RyZWFtICZRRGF0
YVN0cmVhbTo6b3BlcmF0b3I+PihxdWludDE2ICZpKQp7IHJldHVybiAqdGhpcyA+PiByZWludGVy
cHJldF9jYXN0PHFpbnQxNiY+KGkpOyB9CgppbmxpbmUgUURhdGFTdHJlYW0gJlFEYXRhU3RyZWFt
OjpvcGVyYXRvcj4+KHF1aW50MzIgJmkpCnsgcmV0dXJuICp0aGlzID4+IHJlaW50ZXJwcmV0X2Nh
c3Q8cWludDMyJj4oaSk7IH0KCmlubGluZSBRRGF0YVN0cmVhbSAmUURhdGFTdHJlYW06Om9wZXJh
dG9yPj4ocXVpbnQ2NCAmaSkKeyByZXR1cm4gKnRoaXMgPj4gcmVpbnRlcnByZXRfY2FzdDxxaW50
NjQmPihpKTsgfQoKaW5saW5lIFFEYXRhU3RyZWFtICZRRGF0YVN0cmVhbTo6b3BlcmF0b3I8PChx
dWludDggaSkKeyByZXR1cm4gKnRoaXMgPDwgcWludDgoaSk7IH0KCmlubGluZSBRRGF0YVN0cmVh
bSAmUURhdGFTdHJlYW06Om9wZXJhdG9yPDwocXVpbnQxNiBpKQp7IHJldHVybiAqdGhpcyA8PCBx
aW50MTYoaSk7IH0KCmlubGluZSBRRGF0YVN0cmVhbSAmUURhdGFTdHJlYW06Om9wZXJhdG9yPDwo
cXVpbnQzMiBpKQp7IHJldHVybiAqdGhpcyA8PCBxaW50MzIoaSk7IH0KCmlubGluZSBRRGF0YVN0
cmVhbSAmUURhdGFTdHJlYW06Om9wZXJhdG9yPDwocXVpbnQ2NCBpKQp7IHJldHVybiAqdGhpcyA8
PCBxaW50NjQoaSk7IH0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpRRGF0YVN0cmVhbSYgb3BlcmF0
b3I+PihRRGF0YVN0cmVhbSYgcywgUUxpc3Q8VD4mIGwpCnsKICAgIGwuY2xlYXIoKTsKICAgIHF1
aW50MzIgYzsKICAgIHMgPj4gYzsKICAgIGwucmVzZXJ2ZShjKTsKICAgIGZvcihxdWludDMyIGkg
PSAwOyBpIDwgYzsgKytpKQogICAgewogICAgICAgIFQgdDsKICAgICAgICBzID4+IHQ7CiAgICAg
ICAgbC5hcHBlbmQodCk7CiAgICAgICAgaWYgKHMuYXRFbmQoKSkKICAgICAgICAgICAgYnJlYWs7
CiAgICB9CiAgICByZXR1cm4gczsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ClFEYXRhU3RyZWFt
JiBvcGVyYXRvcjw8KFFEYXRhU3RyZWFtJiBzLCBjb25zdCBRTGlzdDxUPiYgbCkKewogICAgcyA8
PCBxdWludDMyKGwuc2l6ZSgpKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbC5zaXplKCk7ICsr
aSkKICAgICAgICBzIDw8IGwuYXQoaSk7CiAgICByZXR1cm4gczsKfQoKdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+ClFEYXRhU3RyZWFtJiBvcGVyYXRvcj4+KFFEYXRhU3RyZWFtJiBzLCBRTGlua2VkTGlz
dDxUPiYgbCkKewogICAgbC5jbGVhcigpOwogICAgcXVpbnQzMiBjOwogICAgcyA+PiBjOwogICAg
Zm9yKHF1aW50MzIgaSA9IDA7IGkgPCBjOyArK2kpCiAgICB7CiAgICAgICAgVCB0OwogICAgICAg
IHMgPj4gdDsKICAgICAgICBsLmFwcGVuZCh0KTsKICAgICAgICBpZiAocy5hdEVuZCgpKQogICAg
ICAgICAgICBicmVhazsKICAgIH0KICAgIHJldHVybiBzOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KUURhdGFTdHJlYW0mIG9wZXJhdG9yPDwoUURhdGFTdHJlYW0mIHMsIGNvbnN0IFFMaW5rZWRM
aXN0PFQ+JiBsKQp7CiAgICBzIDw8IHF1aW50MzIobC5zaXplKCkpOwogICAgdHlwZW5hbWUgUUxp
bmtlZExpc3Q8VD46OkNvbnN0SXRlcmF0b3IgaXQgPSBsLmNvbnN0QmVnaW4oKTsKICAgIGZvcig7
IGl0ICE9IGwuY29uc3RFbmQoKTsgKytpdCkKICAgICAgICBzIDw8ICppdDsKICAgIHJldHVybiBz
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpRRGF0YVN0cmVhbSYgb3BlcmF0b3I+PihRRGF0YVN0
cmVhbSYgcywgUVZlY3RvcjxUPiYgdikKewogICAgdi5jbGVhcigpOwogICAgcXVpbnQzMiBjOwog
ICAgcyA+PiBjOwogICAgdi5yZXNpemUoYyk7CiAgICBmb3IocXVpbnQzMiBpID0gMDsgaSA8IGM7
ICsraSkgewogICAgICAgIFQgdDsKICAgICAgICBzID4+IHQ7CiAgICAgICAgdltpXSA9IHQ7CiAg
ICB9CiAgICByZXR1cm4gczsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KUURhdGFTdHJlYW0mIG9w
ZXJhdG9yPDwoUURhdGFTdHJlYW0mIHMsIGNvbnN0IFFWZWN0b3I8VD4mIHYpCnsKICAgIHMgPDwg
cXVpbnQzMih2LnNpemUoKSk7CiAgICBmb3IgKHR5cGVuYW1lIFFWZWN0b3I8VD46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gdi5iZWdpbigpOyBpdCAhPSB2LmVuZCgpOyArK2l0KQogICAgICAgIHMgPDwg
Kml0OwogICAgcmV0dXJuIHM7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpRRGF0YVN0cmVhbSAm
b3BlcmF0b3I+PihRRGF0YVN0cmVhbSAmaW4sIFFTZXQ8VD4gJnNldCkKewogICAgc2V0LmNsZWFy
KCk7CiAgICBxdWludDMyIGM7CiAgICBpbiA+PiBjOwogICAgZm9yIChxdWludDMyIGkgPSAwOyBp
IDwgYzsgKytpKSB7CiAgICAgICAgVCB0OwogICAgICAgIGluID4+IHQ7CiAgICAgICAgc2V0IDw8
IHQ7CiAgICAgICAgaWYgKGluLmF0RW5kKCkpCiAgICAgICAgICAgIGJyZWFrOwogICAgfQogICAg
cmV0dXJuIGluOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KUURhdGFTdHJlYW0mIG9wZXJhdG9y
PDwoUURhdGFTdHJlYW0gJm91dCwgY29uc3QgUVNldDxUPiAmc2V0KQp7CiAgICBvdXQgPDwgcXVp
bnQzMihzZXQuc2l6ZSgpKTsKICAgIHR5cGVuYW1lIFFTZXQ8VD46OmNvbnN0X2l0ZXJhdG9yIGkg
PSBzZXQuY29uc3RCZWdpbigpOwogICAgd2hpbGUgKGkgIT0gc2V0LmNvbnN0RW5kKCkpIHsKICAg
ICAgICBvdXQgPDwgKmk7CiAgICAgICAgKytpOwogICAgfQogICAgcmV0dXJuIG91dDsKfQoKdGVt
cGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVD4KIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRh
U3RyZWFtICZpbiwgUUhhc2g8S2V5LCBUPiAmaGFzaCkKewogICAgUURhdGFTdHJlYW06OlN0YXR1
cyBvbGRTdGF0dXMgPSBpbi5zdGF0dXMoKTsKICAgIGluLnJlc2V0U3RhdHVzKCk7CiAgICBoYXNo
LmNsZWFyKCk7CgogICAgcXVpbnQzMiBuOwogICAgaW4gPj4gbjsKCiAgICBmb3IgKHF1aW50MzIg
aSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBpZiAoaW4uc3RhdHVzKCkgIT0gUURhdGFTdHJl
YW06Ok9rKQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgS2V5IGs7CiAgICAgICAgVCB0Owog
ICAgICAgIGluID4+IGsgPj4gdDsKICAgICAgICBoYXNoLmluc2VydE11bHRpKGssIHQpOwogICAg
fQoKICAgIGlmIChpbi5zdGF0dXMoKSAhPSBRRGF0YVN0cmVhbTo6T2spCiAgICAgICAgaGFzaC5j
bGVhcigpOwogICAgaWYgKG9sZFN0YXR1cyAhPSBRRGF0YVN0cmVhbTo6T2spCiAgICAgICAgaW4u
c2V0U3RhdHVzKG9sZFN0YXR1cyk7CiAgICByZXR1cm4gaW47Cn0KCnRlbXBsYXRlIDxjbGFzcyBL
ZXksIGNsYXNzIFQ+CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmb3V0LCBj
b25zdCBRSGFzaDxLZXksIFQ+JiBoYXNoKQp7CiAgICBvdXQgPDwgcXVpbnQzMihoYXNoLnNpemUo
KSk7CiAgICB0eXBlbmFtZSBRSGFzaDxLZXksIFQ+OjpDb25zdEl0ZXJhdG9yIGl0ID0gaGFzaC5l
bmQoKTsKICAgIHR5cGVuYW1lIFFIYXNoPEtleSwgVD46OkNvbnN0SXRlcmF0b3IgYmVnaW4gPSBo
YXNoLmJlZ2luKCk7CiAgICB3aGlsZSAoaXQgIT0gYmVnaW4pIHsKICAgICAgICAtLWl0OwogICAg
ICAgIG91dCA8PCBpdC5rZXkoKSA8PCBpdC52YWx1ZSgpOwogICAgfQogICAgcmV0dXJuIG91dDsK
fQoKCgoKdGVtcGxhdGUgPGNsYXNzIGFLZXksIGNsYXNzIGFUPgogUURhdGFTdHJlYW0gJm9wZXJh
dG9yPj4oUURhdGFTdHJlYW0gJmluLCBRTWFwPGFLZXksIGFUPiAmbWFwKQoKewogICAgUURhdGFT
dHJlYW06OlN0YXR1cyBvbGRTdGF0dXMgPSBpbi5zdGF0dXMoKTsKICAgIGluLnJlc2V0U3RhdHVz
KCk7CiAgICBtYXAuY2xlYXIoKTsKCiAgICBxdWludDMyIG47CiAgICBpbiA+PiBuOwoKICAgIG1h
cC5kZXRhY2goKTsKICAgIG1hcC5zZXRJbnNlcnRJbk9yZGVyKHRydWUpOwogICAgZm9yIChxdWlu
dDMyIGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgaWYgKGluLnN0YXR1cygpICE9IFFEYXRh
U3RyZWFtOjpPaykKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGFLZXkga2V5OwogICAgICAg
IGFUIHZhbHVlOwogICAgICAgIGluID4+IGtleSA+PiB2YWx1ZTsKICAgICAgICBtYXAuaW5zZXJ0
TXVsdGkoa2V5LCB2YWx1ZSk7CiAgICB9CiAgICBtYXAuc2V0SW5zZXJ0SW5PcmRlcihmYWxzZSk7
CiAgICBpZiAoaW4uc3RhdHVzKCkgIT0gUURhdGFTdHJlYW06Ok9rKQogICAgICAgIG1hcC5jbGVh
cigpOwogICAgaWYgKG9sZFN0YXR1cyAhPSBRRGF0YVN0cmVhbTo6T2spCiAgICAgICAgaW4uc2V0
U3RhdHVzKG9sZFN0YXR1cyk7CiAgICByZXR1cm4gaW47Cn0KCnRlbXBsYXRlIDxjbGFzcyBLZXks
IGNsYXNzIFQ+CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmb3V0LCBjb25z
dCBRTWFwPEtleSwgVD4gJm1hcCkKewogICAgb3V0IDw8IHF1aW50MzIobWFwLnNpemUoKSk7CiAg
ICB0eXBlbmFtZSBRTWFwPEtleSwgVD46OkNvbnN0SXRlcmF0b3IgaXQgPSBtYXAuZW5kKCk7CiAg
ICB0eXBlbmFtZSBRTWFwPEtleSwgVD46OkNvbnN0SXRlcmF0b3IgYmVnaW4gPSBtYXAuYmVnaW4o
KTsKICAgIHdoaWxlIChpdCAhPSBiZWdpbikgewogICAgICAgIC0taXQ7CiAgICAgICAgb3V0IDw8
IGl0LmtleSgpIDw8IGl0LnZhbHVlKCk7CiAgICB9CiAgICByZXR1cm4gb3V0Owp9CgoKCgoKCiMg
MSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9RRGF0YVN0cmVhbSIgMgojIDM2ICIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1ZlY3Rvci5oIiAyCgoKbmFtZXNwYWNlIFdURiB7
CgogICAgdXNpbmcgc3RkOjptaW47CiAgICB1c2luZyBzdGQ6Om1heDsKCgogICAgICAgIHR5cGVk
ZWYgY2hhciBfX2F0dHJpYnV0ZV9fKChfX21heV9hbGlhc19fKSkgQWxpZ25lZEJ1ZmZlckNoYXI7
CgoKCgogICAgdGVtcGxhdGUgPHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50PiBzdHJ1Y3Qg
QWxpZ25lZEJ1ZmZlcjsKICAgIHRlbXBsYXRlIDxzaXplX3Qgc2l6ZT4gc3RydWN0IEFsaWduZWRC
dWZmZXI8c2l6ZSwgMT4geyBBbGlnbmVkQnVmZmVyQ2hhciBidWZmZXJbc2l6ZV07IH07CiAgICB0
ZW1wbGF0ZSA8c2l6ZV90IHNpemU+IHN0cnVjdCBBbGlnbmVkQnVmZmVyPHNpemUsIDI+IHsgQWxp
Z25lZEJ1ZmZlckNoYXIgYnVmZmVyW3NpemVdIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDIp
KSk7IH07CiAgICB0ZW1wbGF0ZSA8c2l6ZV90IHNpemU+IHN0cnVjdCBBbGlnbmVkQnVmZmVyPHNp
emUsIDQ+IHsgQWxpZ25lZEJ1ZmZlckNoYXIgYnVmZmVyW3NpemVdIF9fYXR0cmlidXRlX18oKF9f
YWxpZ25lZF9fKDQpKSk7IH07CiAgICB0ZW1wbGF0ZSA8c2l6ZV90IHNpemU+IHN0cnVjdCBBbGln
bmVkQnVmZmVyPHNpemUsIDg+IHsgQWxpZ25lZEJ1ZmZlckNoYXIgYnVmZmVyW3NpemVdIF9fYXR0
cmlidXRlX18oKF9fYWxpZ25lZF9fKDgpKSk7IH07CiAgICB0ZW1wbGF0ZSA8c2l6ZV90IHNpemU+
IHN0cnVjdCBBbGlnbmVkQnVmZmVyPHNpemUsIDE2PiB7IEFsaWduZWRCdWZmZXJDaGFyIGJ1ZmZl
cltzaXplXSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxNikpKTsgfTsKICAgIHRlbXBsYXRl
IDxzaXplX3Qgc2l6ZT4gc3RydWN0IEFsaWduZWRCdWZmZXI8c2l6ZSwgMzI+IHsgQWxpZ25lZEJ1
ZmZlckNoYXIgYnVmZmVyW3NpemVdIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDMyKSkpOyB9
OwogICAgdGVtcGxhdGUgPHNpemVfdCBzaXplPiBzdHJ1Y3QgQWxpZ25lZEJ1ZmZlcjxzaXplLCA2
ND4geyBBbGlnbmVkQnVmZmVyQ2hhciBidWZmZXJbc2l6ZV0gX19hdHRyaWJ1dGVfXygoX19hbGln
bmVkX18oNjQpKSk7IH07CgogICAgdGVtcGxhdGUgPHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25t
ZW50PgogICAgdm9pZCBzd2FwKEFsaWduZWRCdWZmZXI8c2l6ZSwgYWxpZ25tZW50PiYgYSwgQWxp
Z25lZEJ1ZmZlcjxzaXplLCBhbGlnbm1lbnQ+JiBiKQogICAgewogICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICBzdGQ6OnN3YXAoYS5idWZmZXJbaV0s
IGIuYnVmZmVyW2ldKTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8Ym9vbCBuZWVkc0Rlc3RydWN0aW9u
LCB0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3RvckRlc3RydWN0b3I7CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgIHN0cnVjdCBWZWN0b3JEZXN0cnVjdG9yPGZhbHNlLCBUPgogICAgewog
ICAgICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KFQqLCBUKikge30KICAgIH07CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KICAgIHN0cnVjdCBWZWN0b3JEZXN0cnVjdG9yPHRydWUsIFQ+CiAgICB7
CiAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoVCogYmVnaW4sIFQqIGVuZCkKICAgICAgICB7
CiAgICAgICAgICAgIGZvciAoVCogY3VyID0gYmVnaW47IGN1ciAhPSBlbmQ7ICsrY3VyKQogICAg
ICAgICAgICAgICAgY3VyLT5+VCgpOwogICAgICAgIH0KICAgIH07CgogICAgdGVtcGxhdGUgPGJv
b2wgbmVlZHNJbml0aWFsaXphdGlvbiwgYm9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgdHlw
ZW5hbWUgVD4KICAgIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjsKCiAgICB0ZW1wbGF0ZTxib29s
IGlnbm9yZSwgdHlwZW5hbWUgVD4KICAgIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjxmYWxzZSwg
aWdub3JlLCBUPgogICAgewogICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVCosIFQqKSB7
fQogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3RvckluaXRp
YWxpemVyPHRydWUsIGZhbHNlLCBUPgogICAgewogICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emUoVCogYmVnaW4sIFQqIGVuZCkKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoVCogY3VyID0g
YmVnaW47IGN1ciAhPSBlbmQ7ICsrY3VyKQogICAgICAgICAgICAgICAgbmV3IChjdXIpIFQ7CiAg
ICAgICAgfQogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3Rv
ckluaXRpYWxpemVyPHRydWUsIHRydWUsIFQ+CiAgICB7CiAgICAgICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQogICAgICAgIHsKICAgICAgICAgICAgbWVtc2V0KGJl
Z2luLCAwLCByZWludGVycHJldF9jYXN0PGNoYXIqPihlbmQpIC0gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oYmVnaW4pKTsKICAgICAgICB9CiAgICB9OwoKICAgIHRlbXBsYXRlIDxib29sIGNhbk1v
dmVXaXRoTWVtY3B5LCB0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3Rvck1vdmVyOwoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICBzdHJ1Y3QgVmVjdG9yTW92ZXI8ZmFsc2UsIFQ+CiAgICB7
CiAgICAgICAgc3RhdGljIHZvaWQgbW92ZShjb25zdCBUKiBzcmMsIGNvbnN0IFQqIHNyY0VuZCwg
VCogZHN0KQogICAgICAgIHsKICAgICAgICAgICAgd2hpbGUgKHNyYyAhPSBzcmNFbmQpIHsKICAg
ICAgICAgICAgICAgIG5ldyAoZHN0KSBUKCpzcmMpOwoKCgogICAgICAgICAgICAgICAgc3JjLT5+
VCgpOwoKICAgICAgICAgICAgICAgICsrZHN0OwogICAgICAgICAgICAgICAgKytzcmM7CiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc3RhdGljIHZvaWQgbW92ZU92ZXJsYXBwaW5nKGNv
bnN0IFQqIHNyYywgY29uc3QgVCogc3JjRW5kLCBUKiBkc3QpCiAgICAgICAgewogICAgICAgICAg
ICBpZiAoc3JjID4gZHN0KQogICAgICAgICAgICAgICAgbW92ZShzcmMsIHNyY0VuZCwgZHN0KTsK
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBUKiBkc3RFbmQgPSBkc3QgKyAoc3Jj
RW5kIC0gc3JjKTsKICAgICAgICAgICAgICAgIHdoaWxlIChzcmMgIT0gc3JjRW5kKSB7CiAgICAg
ICAgICAgICAgICAgICAgLS1zcmNFbmQ7CiAgICAgICAgICAgICAgICAgICAgLS1kc3RFbmQ7CiAg
ICAgICAgICAgICAgICAgICAgbmV3IChkc3RFbmQpIFQoKnNyY0VuZCk7CiAgICAgICAgICAgICAg
ICAgICAgc3JjRW5kLT5+VCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3Rvck1v
dmVyPHRydWUsIFQ+CiAgICB7CiAgICAgICAgc3RhdGljIHZvaWQgbW92ZShjb25zdCBUKiBzcmMs
IGNvbnN0IFQqIHNyY0VuZCwgVCogZHN0KQogICAgICAgIHsKICAgICAgICAgICAgbWVtY3B5KGRz
dCwgc3JjLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzcmNFbmQpIC0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oc3JjKSk7CiAgICAgICAgfQogICAgICAgIHN0YXRpYyB2b2lk
IG1vdmVPdmVybGFwcGluZyhjb25zdCBUKiBzcmMsIGNvbnN0IFQqIHNyY0VuZCwgVCogZHN0KQog
ICAgICAgIHsKICAgICAgICAgICAgbWVtbW92ZShkc3QsIHNyYywgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oc3JjRW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNyYykp
OwogICAgICAgIH0KICAgIH07CgogICAgdGVtcGxhdGUgPGJvb2wgY2FuQ29weVdpdGhNZW1jcHks
IHR5cGVuYW1lIFQ+CiAgICBzdHJ1Y3QgVmVjdG9yQ29waWVyOwoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiAgICBzdHJ1Y3QgVmVjdG9yQ29waWVyPGZhbHNlLCBUPgogICAgewogICAgICAgIHN0
YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRDb3B5KGNvbnN0IFQqIHNyYywgY29uc3QgVCogc3JjRW5k
LCBUKiBkc3QpCiAgICAgICAgewogICAgICAgICAgICB3aGlsZSAoc3JjICE9IHNyY0VuZCkgewog
ICAgICAgICAgICAgICAgbmV3IChkc3QpIFQoKnNyYyk7CiAgICAgICAgICAgICAgICArK2RzdDsK
ICAgICAgICAgICAgICAgICsrc3JjOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3RvckNvcGllcjx0cnVlLCBUPgog
ICAgewogICAgICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRDb3B5KGNvbnN0IFQqIHNyYywg
Y29uc3QgVCogc3JjRW5kLCBUKiBkc3QpCiAgICAgICAgewogICAgICAgICAgICBtZW1jcHkoZHN0
LCBzcmMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNyY0VuZCkgLSByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihzcmMpKTsKICAgICAgICB9CiAgICB9OwoKICAgIHRlbXBsYXRl
IDxib29sIGNhbkZpbGxXaXRoTWVtc2V0LCB0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3RvckZp
bGxlcjsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3RvckZpbGxlcjxm
YWxzZSwgVD4KICAgIHsKICAgICAgICBzdGF0aWMgdm9pZCB1bmluaXRpYWxpemVkRmlsbChUKiBk
c3QsIFQqIGRzdEVuZCwgY29uc3QgVCYgdmFsKQogICAgICAgIHsKICAgICAgICAgICAgd2hpbGUg
KGRzdCAhPSBkc3RFbmQpIHsKICAgICAgICAgICAgICAgIG5ldyAoZHN0KSBUKHZhbCk7CiAgICAg
ICAgICAgICAgICArK2RzdDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgIHN0cnVjdCBWZWN0b3JGaWxsZXI8dHJ1ZSwgVD4KICAgIHsK
ICAgICAgICBzdGF0aWMgdm9pZCB1bmluaXRpYWxpemVkRmlsbChUKiBkc3QsIFQqIGRzdEVuZCwg
Y29uc3QgVCYgdmFsKQogICAgICAgIHsKICAgICAgICAgICAgZG8gaWYgKCEoc2l6ZW9mKFQpID09
IHNpemVvZihjaGFyKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3IuaCIsIDIwNSwgX19QUkVUVFlfRlVOQ1RJT05f
XywgInNpemVvZihUKSA9PSBzaXplb2YoY2hhcikiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2Uo
KTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9
IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBtZW1zZXQoZHN0LCB2YWws
IGRzdEVuZCAtIGRzdCk7CiAgICAgICAgfQogICAgfTsKCiAgICB0ZW1wbGF0ZTxib29sIGNhbkNv
bXBhcmVXaXRoTWVtY21wLCB0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3RvckNvbXBhcmVyOwoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICBzdHJ1Y3QgVmVjdG9yQ29tcGFyZXI8ZmFsc2Us
IFQ+CiAgICB7CiAgICAgICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBUKiBhLCBjb25zdCBU
KiBiLCBzaXplX3Qgc2l6ZSkKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICAgICAgaWYgKGFbaV0gIT0gYltpXSkKICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgIH0KICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgIHN0cnVjdCBWZWN0b3JD
b21wYXJlcjx0cnVlLCBUPgogICAgewogICAgICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3Qg
VCogYSwgY29uc3QgVCogYiwgc2l6ZV90IHNpemUpCiAgICAgICAgewogICAgICAgICAgICByZXR1
cm4gbWVtY21wKGEsIGIsIHNpemVvZihUKSAqIHNpemUpID09IDA7CiAgICAgICAgfQogICAgfTsK
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3RvclR5cGVPcGVyYXRpb25z
CiAgICB7CiAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoVCogYmVnaW4sIFQqIGVuZCkKICAg
ICAgICB7CiAgICAgICAgICAgIFZlY3RvckRlc3RydWN0b3I8VmVjdG9yVHJhaXRzPFQ+OjpuZWVk
c0Rlc3RydWN0aW9uLCBUPjo6ZGVzdHJ1Y3QoYmVnaW4sIGVuZCk7CiAgICAgICAgfQoKICAgICAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFQqIGJlZ2luLCBUKiBlbmQpCiAgICAgICAgewogICAg
ICAgICAgICBWZWN0b3JJbml0aWFsaXplcjxWZWN0b3JUcmFpdHM8VD46Om5lZWRzSW5pdGlhbGl6
YXRpb24sIFZlY3RvclRyYWl0czxUPjo6Y2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojppbml0
aWFsaXplKGJlZ2luLCBlbmQpOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIHZvaWQgbW92ZShj
b25zdCBUKiBzcmMsIGNvbnN0IFQqIHNyY0VuZCwgVCogZHN0KQogICAgICAgIHsKICAgICAgICAg
ICAgVmVjdG9yTW92ZXI8VmVjdG9yVHJhaXRzPFQ+OjpjYW5Nb3ZlV2l0aE1lbWNweSwgVD46Om1v
dmUoc3JjLCBzcmNFbmQsIGRzdCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgdm9pZCBtb3Zl
T3ZlcmxhcHBpbmcoY29uc3QgVCogc3JjLCBjb25zdCBUKiBzcmNFbmQsIFQqIGRzdCkKICAgICAg
ICB7CiAgICAgICAgICAgIFZlY3Rvck1vdmVyPFZlY3RvclRyYWl0czxUPjo6Y2FuTW92ZVdpdGhN
ZW1jcHksIFQ+Ojptb3ZlT3ZlcmxhcHBpbmcoc3JjLCBzcmNFbmQsIGRzdCk7CiAgICAgICAgfQoK
ICAgICAgICBzdGF0aWMgdm9pZCB1bmluaXRpYWxpemVkQ29weShjb25zdCBUKiBzcmMsIGNvbnN0
IFQqIHNyY0VuZCwgVCogZHN0KQogICAgICAgIHsKICAgICAgICAgICAgVmVjdG9yQ29waWVyPFZl
Y3RvclRyYWl0czxUPjo6Y2FuQ29weVdpdGhNZW1jcHksIFQ+Ojp1bmluaXRpYWxpemVkQ29weShz
cmMsIHNyY0VuZCwgZHN0KTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlh
bGl6ZWRGaWxsKFQqIGRzdCwgVCogZHN0RW5kLCBjb25zdCBUJiB2YWwpCiAgICAgICAgewogICAg
ICAgICAgICBWZWN0b3JGaWxsZXI8VmVjdG9yVHJhaXRzPFQ+OjpjYW5GaWxsV2l0aE1lbXNldCwg
VD46OnVuaW5pdGlhbGl6ZWRGaWxsKGRzdCwgZHN0RW5kLCB2YWwpOwogICAgICAgIH0KCiAgICAg
ICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBUKiBhLCBjb25zdCBUKiBiLCBzaXplX3Qgc2l6
ZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBWZWN0b3JDb21wYXJlcjxWZWN0b3JUcmFp
dHM8VD46OmNhbkNvbXBhcmVXaXRoTWVtY21wLCBUPjo6Y29tcGFyZShhLCBiLCBzaXplKTsKICAg
ICAgICB9CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICBjbGFzcyBWZWN0b3JC
dWZmZXJCYXNlIHsKICAgICAgICBwcml2YXRlOiBWZWN0b3JCdWZmZXJCYXNlKGNvbnN0IFZlY3Rv
ckJ1ZmZlckJhc2UmKTsgVmVjdG9yQnVmZmVyQmFzZSYgb3BlcmF0b3I9KGNvbnN0IFZlY3RvckJ1
ZmZlckJhc2UmKTsKICAgIHB1YmxpYzoKICAgICAgICB2b2lkIGFsbG9jYXRlQnVmZmVyKHNpemVf
dCBuZXdDYXBhY2l0eSkKICAgICAgICB7CiAgICAgICAgICAgIGRvIGlmICghKG5ld0NhcGFjaXR5
KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1ZlY3Rvci5oIiwgMjc5LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibmV3Q2FwYWNp
dHkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgICAgICAgICBtX2NhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7CiAgICAgICAgICAgIGlmIChu
ZXdDYXBhY2l0eSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLyBzaXplb2Yo
VCkpCiAgICAgICAgICAgICAgICBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsKICAgICAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxUKj4oZmFzdE1hbGxvYyhuZXdD
YXBhY2l0eSAqIHNpemVvZihUKSkpOwogICAgICAgIH0KCiAgICAgICAgYm9vbCB0cnlBbGxvY2F0
ZUJ1ZmZlcihzaXplX3QgbmV3Q2FwYWNpdHkpCiAgICAgICAgewogICAgICAgICAgICBkbyBpZiAo
IShuZXdDYXBhY2l0eSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3IuaCIsIDI4OCwgX19QUkVUVFlfRlVOQ1RJT05f
XywgIm5ld0NhcGFjaXR5Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVp
bnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgaWYgKG5ld0NhcGFjaXR5ID4gc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihUKSkKICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKCiAgICAgICAgICAgIFQqIG5ld0J1ZmZlcjsKICAgICAgICAgICAgaWYgKHRyeUZh
c3RNYWxsb2MobmV3Q2FwYWNpdHkgKiBzaXplb2YoVCkpLmdldFZhbHVlKG5ld0J1ZmZlcikpIHsK
ICAgICAgICAgICAgICAgIG1fY2FwYWNpdHkgPSBuZXdDYXBhY2l0eTsKICAgICAgICAgICAgICAg
IG1fYnVmZmVyID0gbmV3QnVmZmVyOwogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdm9p
ZCBkZWFsbG9jYXRlQnVmZmVyKFQqIGJ1ZmZlclRvRGVhbGxvY2F0ZSkKICAgICAgICB7CiAgICAg
ICAgICAgIGlmIChtX2J1ZmZlciA9PSBidWZmZXJUb0RlYWxsb2NhdGUpIHsKICAgICAgICAgICAg
ICAgIG1fYnVmZmVyID0gMDsKICAgICAgICAgICAgICAgIG1fY2FwYWNpdHkgPSAwOwogICAgICAg
ICAgICB9CiAgICAgICAgICAgIGZhc3RGcmVlKGJ1ZmZlclRvRGVhbGxvY2F0ZSk7CiAgICAgICAg
fQoKICAgICAgICBUKiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgICAgIGNvbnN0
IFQqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgICAgVCoqIGJ1ZmZl
clNsb3QoKSB7IHJldHVybiAmbV9idWZmZXI7IH0KICAgICAgICBzaXplX3QgY2FwYWNpdHkoKSBj
b25zdCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CgogICAgICAgIFQqIHJlbGVhc2VCdWZmZXIoKQog
ICAgICAgIHsKICAgICAgICAgICAgVCogYnVmZmVyID0gbV9idWZmZXI7CiAgICAgICAgICAgIG1f
YnVmZmVyID0gMDsKICAgICAgICAgICAgbV9jYXBhY2l0eSA9IDA7CiAgICAgICAgICAgIHJldHVy
biBidWZmZXI7CiAgICAgICAgfQoKICAgIHByb3RlY3RlZDoKICAgICAgICBWZWN0b3JCdWZmZXJC
YXNlKCkKICAgICAgICAgICAgOiBtX2J1ZmZlcigwKQogICAgICAgICAgICAsIG1fY2FwYWNpdHko
MCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBWZWN0b3JCdWZmZXJCYXNlKFQqIGJ1ZmZl
ciwgc2l6ZV90IGNhcGFjaXR5KQogICAgICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKICAgICAg
ICAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQogICAgICAgIHsKICAgICAgICB9CgogICAgICAg
IH5WZWN0b3JCdWZmZXJCYXNlKCkKICAgICAgICB7CgogICAgICAgIH0KCiAgICAgICAgVCogbV9i
dWZmZXI7CiAgICAgICAgc2l6ZV90IG1fY2FwYWNpdHk7CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIGNsYXNzIFZlY3RvckJ1ZmZlcjsK
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgY2xhc3MgVmVjdG9yQnVmZmVyPFQsIDA+IDog
cHJpdmF0ZSBWZWN0b3JCdWZmZXJCYXNlPFQ+IHsKICAgIHByaXZhdGU6CiAgICAgICAgdHlwZWRl
ZiBWZWN0b3JCdWZmZXJCYXNlPFQ+IEJhc2U7CiAgICBwdWJsaWM6CiAgICAgICAgVmVjdG9yQnVm
ZmVyKCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBWZWN0b3JCdWZmZXIoc2l6ZV90IGNh
cGFjaXR5KQogICAgICAgIHsKCgogICAgICAgICAgICBpZiAoY2FwYWNpdHkpCiAgICAgICAgICAg
ICAgICBhbGxvY2F0ZUJ1ZmZlcihjYXBhY2l0eSk7CiAgICAgICAgfQoKICAgICAgICB+VmVjdG9y
QnVmZmVyKCkKICAgICAgICB7CiAgICAgICAgICAgIGRlYWxsb2NhdGVCdWZmZXIoYnVmZmVyKCkp
OwogICAgICAgIH0KCiAgICAgICAgdm9pZCBzd2FwKFZlY3RvckJ1ZmZlcjxULCAwPiYgb3RoZXIp
CiAgICAgICAgewogICAgICAgICAgICBzdGQ6OnN3YXAobV9idWZmZXIsIG90aGVyLm1fYnVmZmVy
KTsKICAgICAgICAgICAgc3RkOjpzd2FwKG1fY2FwYWNpdHksIG90aGVyLm1fY2FwYWNpdHkpOwog
ICAgICAgIH0KCiAgICAgICAgdm9pZCByZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKSB7IH0K
CiAgICAgICAgdXNpbmcgQmFzZTo6YWxsb2NhdGVCdWZmZXI7CiAgICAgICAgdXNpbmcgQmFzZTo6
dHJ5QWxsb2NhdGVCdWZmZXI7CiAgICAgICAgdXNpbmcgQmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZlcjsK
CiAgICAgICAgdXNpbmcgQmFzZTo6YnVmZmVyOwogICAgICAgIHVzaW5nIEJhc2U6OmJ1ZmZlclNs
b3Q7CiAgICAgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CgogICAgICAgIHVzaW5nIEJhc2U6OnJl
bGVhc2VCdWZmZXI7CiAgICBwcml2YXRlOgogICAgICAgIHVzaW5nIEJhc2U6Om1fYnVmZmVyOwog
ICAgICAgIHVzaW5nIEJhc2U6Om1fY2FwYWNpdHk7CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIGNsYXNzIFZlY3RvckJ1ZmZlciA6IHBy
aXZhdGUgVmVjdG9yQnVmZmVyQmFzZTxUPiB7CiAgICAgICAgcHJpdmF0ZTogVmVjdG9yQnVmZmVy
KGNvbnN0IFZlY3RvckJ1ZmZlciYpOyBWZWN0b3JCdWZmZXImIG9wZXJhdG9yPShjb25zdCBWZWN0
b3JCdWZmZXImKTsKICAgIHByaXZhdGU6CiAgICAgICAgdHlwZWRlZiBWZWN0b3JCdWZmZXJCYXNl
PFQ+IEJhc2U7CiAgICBwdWJsaWM6CiAgICAgICAgVmVjdG9yQnVmZmVyKCkKICAgICAgICAgICAg
OiBCYXNlKGlubGluZUJ1ZmZlcigpLCBpbmxpbmVDYXBhY2l0eSkKICAgICAgICB7CiAgICAgICAg
fQoKICAgICAgICBWZWN0b3JCdWZmZXIoc2l6ZV90IGNhcGFjaXR5KQogICAgICAgICAgICA6IEJh
c2UoaW5saW5lQnVmZmVyKCksIGlubGluZUNhcGFjaXR5KQogICAgICAgIHsKICAgICAgICAgICAg
aWYgKGNhcGFjaXR5ID4gaW5saW5lQ2FwYWNpdHkpCiAgICAgICAgICAgICAgICBCYXNlOjphbGxv
Y2F0ZUJ1ZmZlcihjYXBhY2l0eSk7CiAgICAgICAgfQoKICAgICAgICB+VmVjdG9yQnVmZmVyKCkK
ICAgICAgICB7CiAgICAgICAgICAgIGRlYWxsb2NhdGVCdWZmZXIoYnVmZmVyKCkpOwogICAgICAg
IH0KCiAgICAgICAgdm9pZCBhbGxvY2F0ZUJ1ZmZlcihzaXplX3QgbmV3Q2FwYWNpdHkpCiAgICAg
ICAgewoKICAgICAgICAgICAgaWYgKG5ld0NhcGFjaXR5ID4gaW5saW5lQ2FwYWNpdHkpCiAgICAg
ICAgICAgICAgICBCYXNlOjphbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7CiAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgbV9idWZmZXIgPSBpbmxpbmVCdWZmZXIoKTsKICAgICAg
ICAgICAgICAgIG1fY2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eTsKICAgICAgICAgICAgfQogICAg
ICAgIH0KCiAgICAgICAgYm9vbCB0cnlBbGxvY2F0ZUJ1ZmZlcihzaXplX3QgbmV3Q2FwYWNpdHkp
CiAgICAgICAgewogICAgICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPiBpbmxpbmVDYXBhY2l0eSkK
ICAgICAgICAgICAgICAgIHJldHVybiBCYXNlOjp0cnlBbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0
eSk7CiAgICAgICAgICAgIG1fYnVmZmVyID0gaW5saW5lQnVmZmVyKCk7CiAgICAgICAgICAgIG1f
Y2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgfQoKICAgICAgICB2b2lkIGRlYWxsb2NhdGVCdWZmZXIoVCogYnVmZmVyVG9EZWFsbG9jYXRl
KQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclRvRGVhbGxvY2F0ZSA9PSBpbmxpbmVC
dWZmZXIoKSkKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgQmFzZTo6ZGVhbGxv
Y2F0ZUJ1ZmZlcihidWZmZXJUb0RlYWxsb2NhdGUpOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBz
d2FwKFZlY3RvckJ1ZmZlcjxULCBpbmxpbmVDYXBhY2l0eT4mIG90aGVyKQogICAgICAgIHsKICAg
ICAgICAgICAgaWYgKGJ1ZmZlcigpID09IGlubGluZUJ1ZmZlcigpICYmIG90aGVyLmJ1ZmZlcigp
ID09IG90aGVyLmlubGluZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICBXVEY6OnN3YXAobV9p
bmxpbmVCdWZmZXIsIG90aGVyLm1faW5saW5lQnVmZmVyKTsKICAgICAgICAgICAgICAgIHN0ZDo6
c3dhcChtX2NhcGFjaXR5LCBvdGhlci5tX2NhcGFjaXR5KTsKICAgICAgICAgICAgfSBlbHNlIGlm
IChidWZmZXIoKSA9PSBpbmxpbmVCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgbV9idWZmZXIg
PSBvdGhlci5tX2J1ZmZlcjsKICAgICAgICAgICAgICAgIG90aGVyLm1fYnVmZmVyID0gb3RoZXIu
aW5saW5lQnVmZmVyKCk7CiAgICAgICAgICAgICAgICBXVEY6OnN3YXAobV9pbmxpbmVCdWZmZXIs
IG90aGVyLm1faW5saW5lQnVmZmVyKTsKICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChtX2NhcGFj
aXR5LCBvdGhlci5tX2NhcGFjaXR5KTsKICAgICAgICAgICAgfSBlbHNlIGlmIChvdGhlci5idWZm
ZXIoKSA9PSBvdGhlci5pbmxpbmVCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgb3RoZXIubV9i
dWZmZXIgPSBtX2J1ZmZlcjsKICAgICAgICAgICAgICAgIG1fYnVmZmVyID0gaW5saW5lQnVmZmVy
KCk7CiAgICAgICAgICAgICAgICBXVEY6OnN3YXAobV9pbmxpbmVCdWZmZXIsIG90aGVyLm1faW5s
aW5lQnVmZmVyKTsKICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChtX2NhcGFjaXR5LCBvdGhlci5t
X2NhcGFjaXR5KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHN0ZDo6c3dh
cChtX2J1ZmZlciwgb3RoZXIubV9idWZmZXIpOwogICAgICAgICAgICAgICAgc3RkOjpzd2FwKG1f
Y2FwYWNpdHksIG90aGVyLm1fY2FwYWNpdHkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAg
ICAgICB2b2lkIHJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpCiAgICAgICAgewogICAgICAg
ICAgICBpZiAobV9idWZmZXIpCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIG1f
YnVmZmVyID0gaW5saW5lQnVmZmVyKCk7CiAgICAgICAgICAgIG1fY2FwYWNpdHkgPSBpbmxpbmVD
YXBhY2l0eTsKICAgICAgICB9CgogICAgICAgIHVzaW5nIEJhc2U6OmJ1ZmZlcjsKICAgICAgICB1
c2luZyBCYXNlOjpidWZmZXJTbG90OwogICAgICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5OwoKICAg
ICAgICBUKiByZWxlYXNlQnVmZmVyKCkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChidWZmZXIo
KSA9PSBpbmxpbmVCdWZmZXIoKSkKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
ICByZXR1cm4gQmFzZTo6cmVsZWFzZUJ1ZmZlcigpOwogICAgICAgIH0KCiAgICBwcml2YXRlOgog
ICAgICAgIHVzaW5nIEJhc2U6Om1fYnVmZmVyOwogICAgICAgIHVzaW5nIEJhc2U6Om1fY2FwYWNp
dHk7CgogICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbV9pbmxpbmVCdWZmZXJTaXplID0gaW5s
aW5lQ2FwYWNpdHkgKiBzaXplb2YoVCk7CiAgICAgICAgVCogaW5saW5lQnVmZmVyKCkgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4obV9pbmxpbmVCdWZmZXIuYnVmZmVyKTsgfQoKICAgICAg
ICBBbGlnbmVkQnVmZmVyPG1faW5saW5lQnVmZmVyU2l6ZSwgX19hbGlnbm9mX18oVCk+IG1faW5s
aW5lQnVmZmVyOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHkgPSAwPgogICAgY2xhc3MgVmVjdG9yIHsKICAgICAgICBwdWJsaWM6IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlw
ZUNsYXNzTmV3KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6
OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxs
b2NUeXBlQ2xhc3NOZXcpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldU
Rjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxv
Y1R5cGVDbGFzc05ld0FycmF5KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6Oklu
dGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHBy
aXZhdGU6IHR5cGVkZWYgaW50IFRoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01h
Y3JvOwogICAgcHJpdmF0ZToKICAgICAgICB0eXBlZGVmIFZlY3RvckJ1ZmZlcjxULCBpbmxpbmVD
YXBhY2l0eT4gQnVmZmVyOwogICAgICAgIHR5cGVkZWYgVmVjdG9yVHlwZU9wZXJhdGlvbnM8VD4g
VHlwZU9wZXJhdGlvbnM7CgogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgVCBWYWx1ZVR5cGU7
CgogICAgICAgIHR5cGVkZWYgVCogaXRlcmF0b3I7CiAgICAgICAgdHlwZWRlZiBjb25zdCBUKiBj
b25zdF9pdGVyYXRvcjsKCiAgICAgICAgVmVjdG9yKCkKICAgICAgICAgICAgOiBtX3NpemUoMCkK
ICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBleHBsaWNpdCBWZWN0b3Ioc2l6ZV90IHNpemUp
CiAgICAgICAgICAgIDogbV9zaXplKHNpemUpCiAgICAgICAgICAgICwgbV9idWZmZXIoc2l6ZSkK
ICAgICAgICB7CiAgICAgICAgICAgIGlmIChiZWdpbigpKQogICAgICAgICAgICAgICAgVHlwZU9w
ZXJhdGlvbnM6OmluaXRpYWxpemUoYmVnaW4oKSwgZW5kKCkpOwogICAgICAgIH0KCiAgICAgICAg
flZlY3RvcigpCiAgICAgICAgewogICAgICAgICAgICBpZiAobV9zaXplKSBzaHJpbmsoMCk7CiAg
ICAgICAgfQoKICAgICAgICBWZWN0b3IoY29uc3QgVmVjdG9yJik7CiAgICAgICAgdGVtcGxhdGU8
c2l6ZV90IG90aGVyQ2FwYWNpdHk+CiAgICAgICAgVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBvdGhl
ckNhcGFjaXR5PiYpOwoKICAgICAgICBWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3ImKTsK
ICAgICAgICB0ZW1wbGF0ZTxzaXplX3Qgb3RoZXJDYXBhY2l0eT4KICAgICAgICBWZWN0b3ImIG9w
ZXJhdG9yPShjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eT4mKTsKCiAgICAgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICAgICBzaXplX3QgY2FwYWNpdHko
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jYXBhY2l0eSgpOyB9CiAgICAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQoKICAgICAgICBUJiBhdChzaXplX3QgaSkK
ICAgICAgICB7CiAgICAgICAgICAgIGRvIGlmICghKGkgPCBzaXplKCkpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9y
LmgiLCA1MzcsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpIDwgc2l6ZSgpIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgcmV0
dXJuIG1fYnVmZmVyLmJ1ZmZlcigpW2ldOwogICAgICAgIH0KICAgICAgICBjb25zdCBUJiBhdChz
aXplX3QgaSkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIGRvIGlmICghKGkgPCBzaXplKCkp
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVmVjdG9yLmgiLCA1NDIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpIDwgc2l6ZSgp
Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRi
ZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsK
ICAgICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmJ1ZmZlcigpW2ldOwogICAgICAgIH0KCiAgICAg
ICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gYXQoaSk7IH0KICAgICAgICBjb25z
dCBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQoKICAgICAg
ICBUKiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuYnVmZmVyKCk7IH0KICAgICAgICBjb25zdCBU
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYnVmZmVyKCk7IH0KICAgICAgICBUKiog
ZGF0YVNsb3QoKSB7IHJldHVybiBtX2J1ZmZlci5idWZmZXJTbG90KCk7IH0KCiAgICAgICAgaXRl
cmF0b3IgYmVnaW4oKSB7IHJldHVybiBkYXRhKCk7IH0KICAgICAgICBpdGVyYXRvciBlbmQoKSB7
IHJldHVybiBiZWdpbigpICsgbV9zaXplOyB9CiAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBkYXRhKCk7IH0KICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBj
b25zdCB7IHJldHVybiBiZWdpbigpICsgbV9zaXplOyB9CgogICAgICAgIFQmIGZpcnN0KCkgeyBy
ZXR1cm4gYXQoMCk7IH0KICAgICAgICBjb25zdCBUJiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIGF0
KDApOyB9CiAgICAgICAgVCYgbGFzdCgpIHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9CiAgICAg
ICAgY29uc3QgVCYgbGFzdCgpIGNvbnN0IHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9CgogICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgY29udGFpbnMoY29uc3QgVSYpIGNvbnN0Owog
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHNpemVfdCBmaW5kKGNvbnN0IFUmKSBjb25zdDsK
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVSYp
IGNvbnN0OwoKICAgICAgICB2b2lkIHNocmluayhzaXplX3Qgc2l6ZSk7CiAgICAgICAgdm9pZCBn
cm93KHNpemVfdCBzaXplKTsKICAgICAgICB2b2lkIHJlc2l6ZShzaXplX3Qgc2l6ZSk7CiAgICAg
ICAgdm9pZCByZXNlcnZlQ2FwYWNpdHkoc2l6ZV90IG5ld0NhcGFjaXR5KTsKICAgICAgICBib29s
IHRyeVJlc2VydmVDYXBhY2l0eShzaXplX3QgbmV3Q2FwYWNpdHkpOwogICAgICAgIHZvaWQgcmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplX3QgaW5pdGlhbENhcGFjaXR5KTsKICAgICAgICB2b2lk
IHNocmlua0NhcGFjaXR5KHNpemVfdCBuZXdDYXBhY2l0eSk7CiAgICAgICAgdm9pZCBzaHJpbmtU
b0ZpdCgpIHsgc2hyaW5rQ2FwYWNpdHkoc2l6ZSgpKTsgfQoKICAgICAgICB2b2lkIGNsZWFyKCkg
eyBzaHJpbmtDYXBhY2l0eSgwKTsgfQoKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IGFwcGVuZChjb25zdCBVKiwgc2l6ZV90KTsKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2
b2lkIGFwcGVuZChjb25zdCBVJik7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1
bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFsKTsKICAgICAgICB0ZW1wbGF0ZTxzaXplX3Qgb3Ro
ZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmQoY29uc3QgVmVjdG9yPFQsIG90aGVyQ2FwYWNpdHk+Jik7
CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCB0cnlBcHBlbmQoY29uc3QgVSosIHNp
emVfdCk7CgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBw
b3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
dm9pZCBpbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVJik7CiAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVSwgc2l6ZV90IGM+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3Qg
VmVjdG9yPFUsIGM+Jik7CgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgcHJlcGVu
ZChjb25zdCBVKiwgc2l6ZV90KTsKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIHBy
ZXBlbmQoY29uc3QgVSYpOwogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBjPiB2
b2lkIHByZXBlbmQoY29uc3QgVmVjdG9yPFUsIGM+Jik7CgogICAgICAgIHZvaWQgcmVtb3ZlKHNp
emVfdCBwb3NpdGlvbik7CiAgICAgICAgdm9pZCByZW1vdmUoc2l6ZV90IHBvc2l0aW9uLCBzaXpl
X3QgbGVuZ3RoKTsKCiAgICAgICAgdm9pZCByZW1vdmVMYXN0KCkKICAgICAgICB7CiAgICAgICAg
ICAgIGRvIGlmICghKCFpc0VtcHR5KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9yLmgiLCA1OTcsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sICIhaXNFbXB0eSgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgc2hyaW5rKHNpemUoKSAtIDEpOwog
ICAgICAgIH0KCiAgICAgICAgVmVjdG9yKHNpemVfdCBzaXplLCBjb25zdCBUJiB2YWwpCiAgICAg
ICAgICAgIDogbV9zaXplKHNpemUpCiAgICAgICAgICAgICwgbV9idWZmZXIoc2l6ZSkKICAgICAg
ICB7CiAgICAgICAgICAgIGlmIChiZWdpbigpKQogICAgICAgICAgICAgICAgVHlwZU9wZXJhdGlv
bnM6OnVuaW5pdGlhbGl6ZWRGaWxsKGJlZ2luKCksIGVuZCgpLCB2YWwpOwogICAgICAgIH0KCiAg
ICAgICAgdm9pZCBmaWxsKGNvbnN0IFQmLCBzaXplX3QpOwogICAgICAgIHZvaWQgZmlsbChjb25z
dCBUJiB2YWwpIHsgZmlsbCh2YWwsIHNpemUoKSk7IH0KCiAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSXRlcmF0b3I+IHZvaWQgYXBwZW5kUmFuZ2UoSXRlcmF0b3Igc3RhcnQsIEl0ZXJhdG9yIGVu
ZCk7CgogICAgICAgIFQqIHJlbGVhc2VCdWZmZXIoKTsKCiAgICAgICAgdm9pZCBzd2FwKFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eT4mIG90aGVyKQogICAgICAgIHsKICAgICAgICAgICAgc3RkOjpz
d2FwKG1fc2l6ZSwgb3RoZXIubV9zaXplKTsKICAgICAgICAgICAgbV9idWZmZXIuc3dhcChvdGhl
ci5tX2J1ZmZlcik7CiAgICAgICAgfQoKICAgICAgICB2b2lkIHJldmVyc2UoKTsKCiAgICAgICAg
dm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7CgogICAgcHJpdmF0ZToKICAgICAgICB2b2lkIGV4cGFu
ZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSk7CiAgICAgICAgY29uc3QgVCogZXhwYW5k
Q2FwYWNpdHkoc2l6ZV90IG5ld01pbkNhcGFjaXR5LCBjb25zdCBUKik7CiAgICAgICAgYm9vbCB0
cnlFeHBhbmRDYXBhY2l0eShzaXplX3QgbmV3TWluQ2FwYWNpdHkpOwogICAgICAgIGNvbnN0IFQq
IHRyeUV4cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSwgY29uc3QgVCopOwogICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFUqIGV4cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5D
YXBhY2l0eSwgVSopOwoKICAgICAgICBzaXplX3QgbV9zaXplOwogICAgICAgIEJ1ZmZlciBtX2J1
ZmZlcjsKICAgIH07CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICBRRGF0YVN0cmVhbSYg
b3BlcmF0b3I8PChRRGF0YVN0cmVhbSYgc3RyZWFtLCBjb25zdCBWZWN0b3I8VD4mIGRhdGEpCiAg
ICB7CiAgICAgICAgc3RyZWFtIDw8IHFpbnQ2NChkYXRhLnNpemUoKSk7CiAgICAgICAgZm9yIChR
Rm9yZWFjaENvbnRhaW5lcjxfX3R5cGVvZl9fKGRhdGEpPiBfY29udGFpbmVyXyhkYXRhKTsgIV9j
b250YWluZXJfLmJyayAmJiBfY29udGFpbmVyXy5pICE9IF9jb250YWluZXJfLmU7IF9fZXh0ZW5z
aW9uX18gKHsgKytfY29udGFpbmVyXy5icms7ICsrX2NvbnRhaW5lcl8uaTsgfSkpIGZvciAoY29u
c3QgVCYgaSA9ICpfY29udGFpbmVyXy5pOzsgX19leHRlbnNpb25fXyAoey0tX2NvbnRhaW5lcl8u
YnJrOyBicmVhazt9KSkKICAgICAgICAgICAgc3RyZWFtIDw8IGk7CiAgICAgICAgcmV0dXJuIHN0
cmVhbTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgUURhdGFTdHJlYW0mIG9w
ZXJhdG9yPj4oUURhdGFTdHJlYW0mIHN0cmVhbSwgVmVjdG9yPFQ+JiBkYXRhKQogICAgewogICAg
ICAgIGRhdGEuY2xlYXIoKTsKICAgICAgICBxaW50NjQgY291bnQ7CiAgICAgICAgVCBpdGVtOwog
ICAgICAgIHN0cmVhbSA+PiBjb3VudDsKICAgICAgICBkYXRhLnJlc2VydmVDYXBhY2l0eShjb3Vu
dCk7CiAgICAgICAgZm9yIChxaW50NjQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAg
ICAgIHN0cmVhbSA+PiBpdGVtOwogICAgICAgICAgICBkYXRhLmFwcGVuZChpdGVtKTsKICAgICAg
ICB9CiAgICAgICAgcmV0dXJuIHN0cmVhbTsKICAgIH0KCgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pjo6
VmVjdG9yKGNvbnN0IFZlY3RvciYgb3RoZXIpCiAgICAgICAgOiBtX3NpemUob3RoZXIuc2l6ZSgp
KQogICAgICAgICwgbV9idWZmZXIob3RoZXIuY2FwYWNpdHkoKSkKICAgIHsKICAgICAgICBpZiAo
YmVnaW4oKSkKICAgICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90
aGVyLmJlZ2luKCksIG90aGVyLmVuZCgpLCBiZWdpbigpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICB0ZW1wbGF0ZTxzaXplX3Qgb3Ro
ZXJDYXBhY2l0eT4KICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OlZlY3Rvcihjb25zdCBW
ZWN0b3I8VCwgb3RoZXJDYXBhY2l0eT4mIG90aGVyKQogICAgICAgIDogbV9zaXplKG90aGVyLnNp
emUoKSkKICAgICAgICAsIG1fYnVmZmVyKG90aGVyLmNhcGFjaXR5KCkpCiAgICB7CiAgICAgICAg
aWYgKGJlZ2luKCkpCiAgICAgICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29w
eShvdGhlci5iZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4oKSk7CiAgICB9CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgVmVjdG9yPFQsIGlubGlu
ZUNhcGFjaXR5PiYgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pjo6b3BlcmF0b3I9KGNvbnN0IFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIG90aGVyKQogICAgewogICAgICAgIGlmICgmb3RoZXIg
PT0gdGhpcykKICAgICAgICAgICAgcmV0dXJuICp0aGlzOwoKICAgICAgICBpZiAoc2l6ZSgpID4g
b3RoZXIuc2l6ZSgpKQogICAgICAgICAgICBzaHJpbmsob3RoZXIuc2l6ZSgpKTsKICAgICAgICBl
bHNlIGlmIChvdGhlci5zaXplKCkgPiBjYXBhY2l0eSgpKSB7CiAgICAgICAgICAgIGNsZWFyKCk7
CiAgICAgICAgICAgIHJlc2VydmVDYXBhY2l0eShvdGhlci5zaXplKCkpOwogICAgICAgICAgICBp
ZiAoIWJlZ2luKCkpCiAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKCgoK
CgoKICAgICAgICBzdGQ6OmNvcHkob3RoZXIuYmVnaW4oKSwgb3RoZXIuYmVnaW4oKSArIHNpemUo
KSwgYmVnaW4oKSk7CiAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90
aGVyLmJlZ2luKCkgKyBzaXplKCksIG90aGVyLmVuZCgpLCBlbmQoKSk7CiAgICAgICAgbV9zaXpl
ID0gb3RoZXIuc2l6ZSgpOwoKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgaW5saW5l
IGJvb2wgdHlwZWxlc3NQb2ludGVyc0FyZUVxdWFsKGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQq
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KICAgIHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5PgogICAgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5PiYgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pjo6b3BlcmF0
b3I9KGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYgb3RoZXIpCiAgICB7CgoKCiAgICAg
ICAgZG8gaWYgKCEoIXR5cGVsZXNzUG9pbnRlcnNBcmVFcXVhbCgmb3RoZXIsIHRoaXMpKSkgeyBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1ZlY3Rvci5oIiwgNzE5LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIXR5cGVsZXNzUG9pbnRl
cnNBcmVFcXVhbCgmb3RoZXIsIHRoaXMpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgaWYgKHNpemUoKSA+IG90aGVyLnNpemUo
KSkKICAgICAgICAgICAgc2hyaW5rKG90aGVyLnNpemUoKSk7CiAgICAgICAgZWxzZSBpZiAob3Ro
ZXIuc2l6ZSgpID4gY2FwYWNpdHkoKSkgewogICAgICAgICAgICBjbGVhcigpOwogICAgICAgICAg
ICByZXNlcnZlQ2FwYWNpdHkob3RoZXIuc2l6ZSgpKTsKICAgICAgICAgICAgaWYgKCFiZWdpbigp
KQogICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgIH0KCgoKCgoKCiAgICAgICAg
c3RkOjpjb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmJlZ2luKCkgKyBzaXplKCksIGJlZ2luKCkp
OwogICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigp
ICsgc2l6ZSgpLCBvdGhlci5lbmQoKSwgZW5kKCkpOwogICAgICAgIG1fc2l6ZSA9IG90aGVyLnNp
emUoKTsKCiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICBi
b29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OmNvbnRhaW5zKGNvbnN0IFUmIHZhbHVlKSBj
b25zdAogICAgewogICAgICAgIHJldHVybiBmaW5kKHZhbHVlKSAhPSBub3RGb3VuZDsKICAgIH0K
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPgogICAgc2l6ZV90IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OmZp
bmQoY29uc3QgVSYgdmFsdWUpIGNvbnN0CiAgICB7CiAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplKCk7ICsraSkgewogICAgICAgICAgICBpZiAoYXQoaSkgPT0gdmFsdWUpCiAgICAg
ICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICBzaXplX3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
Pjo6cmV2ZXJzZUZpbmQoY29uc3QgVSYgdmFsdWUpIGNvbnN0CiAgICB7CiAgICAgICAgZm9yIChz
aXplX3QgaSA9IDE7IGkgPD0gc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgY29uc3Qgc2l6ZV90
IGluZGV4ID0gc2l6ZSgpIC0gaTsKICAgICAgICAgICAgaWYgKGF0KGluZGV4KSA9PSB2YWx1ZSkK
ICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4KICAgIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pjo6ZmlsbChjb25zdCBUJiB2
YWwsIHNpemVfdCBuZXdTaXplKQogICAgewogICAgICAgIGlmIChzaXplKCkgPiBuZXdTaXplKQog
ICAgICAgICAgICBzaHJpbmsobmV3U2l6ZSk7CiAgICAgICAgZWxzZSBpZiAobmV3U2l6ZSA+IGNh
cGFjaXR5KCkpIHsKICAgICAgICAgICAgY2xlYXIoKTsKICAgICAgICAgICAgcmVzZXJ2ZUNhcGFj
aXR5KG5ld1NpemUpOwogICAgICAgICAgICBpZiAoIWJlZ2luKCkpCiAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgfQoKICAgICAgICBzdGQ6OmZpbGwoYmVnaW4oKSwgZW5kKCksIHZhbCk7
CiAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRGaWxsKGVuZCgpLCBiZWdpbigp
ICsgbmV3U2l6ZSwgdmFsKTsKICAgICAgICBtX3NpemUgPSBuZXdTaXplOwogICAgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEl0ZXJhdG9yPgogICAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+OjphcHBl
bmRSYW5nZShJdGVyYXRvciBzdGFydCwgSXRlcmF0b3IgZW5kKQogICAgewogICAgICAgIGZvciAo
SXRlcmF0b3IgaXQgPSBzdGFydDsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAgICBhcHBlbmQo
Kml0KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+CiAgICB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OmV4cGFuZENhcGFjaXR5KHNp
emVfdCBuZXdNaW5DYXBhY2l0eSkKICAgIHsKICAgICAgICByZXNlcnZlQ2FwYWNpdHkobWF4KG5l
d01pbkNhcGFjaXR5LCBtYXgoc3RhdGljX2Nhc3Q8c2l6ZV90PigxNiksIGNhcGFjaXR5KCkgKyBj
YXBhY2l0eSgpIC8gNCArIDEpKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgogICAgY29uc3QgVCogVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
Pjo6ZXhwYW5kQ2FwYWNpdHkoc2l6ZV90IG5ld01pbkNhcGFjaXR5LCBjb25zdCBUKiBwdHIpCiAg
ICB7CiAgICAgICAgaWYgKHB0ciA8IGJlZ2luKCkgfHwgcHRyID49IGVuZCgpKSB7CiAgICAgICAg
ICAgIGV4cGFuZENhcGFjaXR5KG5ld01pbkNhcGFjaXR5KTsKICAgICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICAgICB9CiAgICAgICAgc2l6ZV90IGluZGV4ID0gcHRyIC0gYmVnaW4oKTsKICAgICAg
ICBleHBhbmRDYXBhY2l0eShuZXdNaW5DYXBhY2l0eSk7CiAgICAgICAgcmV0dXJuIGJlZ2luKCkg
KyBpbmRleDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CiAgICBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OnRyeUV4cGFuZENhcGFj
aXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSkKICAgIHsKICAgICAgICByZXR1cm4gdHJ5UmVzZXJ2
ZUNhcGFjaXR5KG1heChuZXdNaW5DYXBhY2l0eSwgbWF4KHN0YXRpY19jYXN0PHNpemVfdD4oMTYp
LCBjYXBhY2l0eSgpICsgY2FwYWNpdHkoKSAvIDQgKyAxKSkpOwogICAgfQoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIGNvbnN0IFQqIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eT46OnRyeUV4cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0
eSwgY29uc3QgVCogcHRyKQogICAgewogICAgICAgIGlmIChwdHIgPCBiZWdpbigpIHx8IHB0ciA+
PSBlbmQoKSkgewogICAgICAgICAgICBpZiAoIXRyeUV4cGFuZENhcGFjaXR5KG5ld01pbkNhcGFj
aXR5KSkKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICByZXR1cm4gcHRyOwog
ICAgICAgIH0KICAgICAgICBzaXplX3QgaW5kZXggPSBwdHIgLSBiZWdpbigpOwogICAgICAgIGlm
ICghdHJ5RXhwYW5kQ2FwYWNpdHkobmV3TWluQ2FwYWNpdHkpKQogICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICByZXR1cm4gYmVnaW4oKSArIGluZGV4OwogICAgfQoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gdGVtcGxhdGU8dHlwZW5hbWUgVT4KICAg
IGlubGluZSBVKiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+OjpleHBhbmRDYXBhY2l0eShzaXpl
X3QgbmV3TWluQ2FwYWNpdHksIFUqIHB0cikKICAgIHsKICAgICAgICBleHBhbmRDYXBhY2l0eShu
ZXdNaW5DYXBhY2l0eSk7CiAgICAgICAgcmV0dXJuIHB0cjsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICBpbmxpbmUgdm9pZCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHk+OjpyZXNpemUoc2l6ZV90IHNpemUpCiAgICB7CiAgICAgICAgaWYg
KHNpemUgPD0gbV9zaXplKQogICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6ZGVzdHJ1Y3QoYmVn
aW4oKSArIHNpemUsIGVuZCgpKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKHNpemUg
PiBjYXBhY2l0eSgpKQogICAgICAgICAgICAgICAgZXhwYW5kQ2FwYWNpdHkoc2l6ZSk7CiAgICAg
ICAgICAgIGlmIChiZWdpbigpKQogICAgICAgICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmluaXRp
YWxpemUoZW5kKCksIGJlZ2luKCkgKyBzaXplKTsKICAgICAgICB9CgogICAgICAgIG1fc2l6ZSA9
IHNpemU7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgogICAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+OjpzaHJpbmsoc2l6ZV90IHNp
emUpCiAgICB7CiAgICAgICAgZG8gaWYgKCEoc2l6ZSA8PSBtX3NpemUpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9y
LmgiLCA4NjEsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzaXplIDw9IG1fc2l6ZSIpOyBkbyB7IFdU
RlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgo
dm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgVHlw
ZU9wZXJhdGlvbnM6OmRlc3RydWN0KGJlZ2luKCkgKyBzaXplLCBlbmQoKSk7CiAgICAgICAgbV9z
aXplID0gc2l6ZTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CiAgICB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46Omdyb3coc2l6ZV90
IHNpemUpCiAgICB7CiAgICAgICAgZG8gaWYgKCEoc2l6ZSA+PSBtX3NpemUpKSB7IFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVj
dG9yLmgiLCA4NjksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzaXplID49IG1fc2l6ZSIpOyBkbyB7
IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7
ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
aWYgKHNpemUgPiBjYXBhY2l0eSgpKQogICAgICAgICAgICBleHBhbmRDYXBhY2l0eShzaXplKTsK
ICAgICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmluaXRpYWxp
emUoZW5kKCksIGJlZ2luKCkgKyBzaXplKTsKICAgICAgICBtX3NpemUgPSBzaXplOwogICAgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIHZvaWQg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pjo6cmVzZXJ2ZUNhcGFjaXR5KHNpemVfdCBuZXdDYXBh
Y2l0eSkKICAgIHsKICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPD0gY2FwYWNpdHkoKSkKICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgIFQqIG9sZEJ1ZmZlciA9IGJlZ2luKCk7CiAgICAgICAgVCog
b2xkRW5kID0gZW5kKCk7CiAgICAgICAgbV9idWZmZXIuYWxsb2NhdGVCdWZmZXIobmV3Q2FwYWNp
dHkpOwogICAgICAgIGlmIChiZWdpbigpKQogICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92
ZShvbGRCdWZmZXIsIG9sZEVuZCwgYmVnaW4oKSk7CiAgICAgICAgbV9idWZmZXIuZGVhbGxvY2F0
ZUJ1ZmZlcihvbGRCdWZmZXIpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KICAgIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pjo6dHJ5
UmVzZXJ2ZUNhcGFjaXR5KHNpemVfdCBuZXdDYXBhY2l0eSkKICAgIHsKICAgICAgICBpZiAobmV3
Q2FwYWNpdHkgPD0gY2FwYWNpdHkoKSkKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
VCogb2xkQnVmZmVyID0gYmVnaW4oKTsKICAgICAgICBUKiBvbGRFbmQgPSBlbmQoKTsKICAgICAg
ICBpZiAoIW1fYnVmZmVyLnRyeUFsbG9jYXRlQnVmZmVyKG5ld0NhcGFjaXR5KSkKICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgIGRvIGlmICghKGJlZ2luKCkpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9y
LmgiLCA4OTksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJiZWdpbigpIik7IGRvIHsgV1RGUmVwb3J0
QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCop
KCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBUeXBlT3BlcmF0
aW9uczo6bW92ZShvbGRCdWZmZXIsIG9sZEVuZCwgYmVnaW4oKSk7CiAgICAgICAgbV9idWZmZXIu
ZGVhbGxvY2F0ZUJ1ZmZlcihvbGRCdWZmZXIpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIGlubGlu
ZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
c2l6ZV90IGluaXRpYWxDYXBhY2l0eSkKICAgIHsKICAgICAgICBkbyBpZiAoISghbV9zaXplKSkg
eyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1ZlY3Rvci5oIiwgOTA4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIW1fc2l6ZSIpOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgZG8gaWYgKCEoY2FwYWNpdHkoKSA9PSBpbmxpbmVDYXBhY2l0eSkpIHsgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3Iu
aCIsIDkwOSwgX19QUkVUVFlfRlVOQ1RJT05fXywgImNhcGFjaXR5KCkgPT0gaW5saW5lQ2FwYWNp
dHkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgICAgIGlmIChpbml0aWFsQ2FwYWNpdHkgPiBpbmxpbmVDYXBhY2l0eSkKICAgICAgICAg
ICAgbV9idWZmZXIuYWxsb2NhdGVCdWZmZXIoaW5pdGlhbENhcGFjaXR5KTsKICAgIH0KCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eT46OnNocmlua0NhcGFjaXR5KHNpemVfdCBuZXdDYXBhY2l0eSkK
ICAgIHsKICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPj0gY2FwYWNpdHkoKSkKICAgICAgICAgICAg
cmV0dXJuOwoKICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPCBzaXplKCkpCiAgICAgICAgICAgIHNo
cmluayhuZXdDYXBhY2l0eSk7CgogICAgICAgIFQqIG9sZEJ1ZmZlciA9IGJlZ2luKCk7CiAgICAg
ICAgaWYgKG5ld0NhcGFjaXR5ID4gMCkgewogICAgICAgICAgICBUKiBvbGRFbmQgPSBlbmQoKTsK
ICAgICAgICAgICAgbV9idWZmZXIuYWxsb2NhdGVCdWZmZXIobmV3Q2FwYWNpdHkpOwogICAgICAg
ICAgICBpZiAoYmVnaW4oKSAhPSBvbGRCdWZmZXIpCiAgICAgICAgICAgICAgICBUeXBlT3BlcmF0
aW9uczo6bW92ZShvbGRCdWZmZXIsIG9sZEVuZCwgYmVnaW4oKSk7CiAgICAgICAgfQoKICAgICAg
ICBtX2J1ZmZlci5kZWFsbG9jYXRlQnVmZmVyKG9sZEJ1ZmZlcik7CiAgICAgICAgbV9idWZmZXIu
cmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCk7CiAgICB9CgoKCgoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gdGVtcGxhdGU8dHlwZW5hbWUgVT4KICAg
IHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pjo6YXBwZW5kKGNvbnN0IFUqIGRhdGEsIHNp
emVfdCBkYXRhU2l6ZSkKICAgIHsKICAgICAgICBzaXplX3QgbmV3U2l6ZSA9IG1fc2l6ZSArIGRh
dGFTaXplOwogICAgICAgIGlmIChuZXdTaXplID4gY2FwYWNpdHkoKSkgewogICAgICAgICAgICBk
YXRhID0gZXhwYW5kQ2FwYWNpdHkobmV3U2l6ZSwgZGF0YSk7CiAgICAgICAgICAgIGlmICghYmVn
aW4oKSkKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKG5ld1Np
emUgPCBtX3NpemUpCiAgICAgICAgICAgIGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50
ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAo
ZmFsc2UpOwogICAgICAgIFQqIGRlc3QgPSBlbmQoKTsKICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGRhdGFTaXplOyArK2kpCiAgICAgICAgICAgIG5ldyAoJmRlc3RbaV0pIFQoZGF0YVtp
XSk7CiAgICAgICAgbV9zaXplID0gbmV3U2l6ZTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICBib29s
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OnRyeUFwcGVuZChjb25zdCBVKiBkYXRhLCBzaXpl
X3QgZGF0YVNpemUpCiAgICB7CiAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBtX3NpemUgKyBkYXRh
U2l6ZTsKICAgICAgICBpZiAobmV3U2l6ZSA+IGNhcGFjaXR5KCkpIHsKICAgICAgICAgICAgZGF0
YSA9IHRyeUV4cGFuZENhcGFjaXR5KG5ld1NpemUsIGRhdGEpOwogICAgICAgICAgICBpZiAoIWRh
dGEpCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIGRvIGlmICghKGJl
Z2luKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvVmVjdG9yLmgiLCA5NjQsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJiZWdp
bigpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICB9CiAgICAgICAgaWYgKG5ld1NpemUgPCBtX3NpemUpCiAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICBUKiBkZXN0ID0gZW5kKCk7CiAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBkYXRhU2l6ZTsgKytpKQogICAgICAgICAgICBuZXcgKCZkZXN0W2ldKSBUKGRh
dGFbaV0pOwogICAgICAgIG1fc2l6ZSA9IG5ld1NpemU7CiAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPgogICAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
Pjo6YXBwZW5kKGNvbnN0IFUmIHZhbCkKICAgIHsKICAgICAgICBjb25zdCBVKiBwdHIgPSAmdmFs
OwogICAgICAgIGlmIChzaXplKCkgPT0gY2FwYWNpdHkoKSkgewogICAgICAgICAgICBwdHIgPSBl
eHBhbmRDYXBhY2l0eShzaXplKCkgKyAxLCBwdHIpOwogICAgICAgICAgICBpZiAoIWJlZ2luKCkp
CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQojIDk5NCAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3IuaCIKICAgICAgICBuZXcgKGVuZCgpKSBUKCpwdHIp
OwoKICAgICAgICArK21fc2l6ZTsKICAgIH0KCgoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICBpbmxpbmUgdm9p
ZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+Ojp1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFs
KQogICAgewogICAgICAgIGRvIGlmICghKHNpemUoKSA8IGNhcGFjaXR5KCkpKSB7IFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVj
dG9yLmgiLCAxMDA1LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAic2l6ZSgpIDwgY2FwYWNpdHkoKSIp
OyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVl
ZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgY29uc3QgVSogcHRyID0gJnZhbDsKICAgICAgICBuZXcgKGVuZCgpKSBUKCpwdHIpOwog
ICAgICAgICsrbV9zaXplOwogICAgfQoKCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4gdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+CiAgICBpbmxp
bmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+OjphcHBlbmQoY29uc3QgVmVjdG9yPFQs
IG90aGVyQ2FwYWNpdHk+JiB2YWwpCiAgICB7CiAgICAgICAgYXBwZW5kKHZhbC5iZWdpbigpLCB2
YWwuc2l6ZSgpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICB2b2lkIFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eT46Omluc2VydChzaXplX3QgcG9zaXRpb24sIGNvbnN0IFUqIGRhdGEsIHNpemVfdCBk
YXRhU2l6ZSkKICAgIHsKICAgICAgICBkbyBpZiAoIShwb3NpdGlvbiA8PSBzaXplKCkpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvVmVjdG9yLmgiLCAxMDIzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAicG9zaXRpb24gPD0gc2l6
ZSgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICBzaXplX3QgbmV3U2l6ZSA9IG1fc2l6ZSArIGRhdGFTaXplOwogICAgICAgIGlm
IChuZXdTaXplID4gY2FwYWNpdHkoKSkgewogICAgICAgICAgICBkYXRhID0gZXhwYW5kQ2FwYWNp
dHkobmV3U2l6ZSwgZGF0YSk7CiAgICAgICAgICAgIGlmICghYmVnaW4oKSkKICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKG5ld1NpemUgPCBtX3NpemUpCiAgICAg
ICAgICAgIGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOwogICAgICAgIFQq
IHNwb3QgPSBiZWdpbigpICsgcG9zaXRpb247CiAgICAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVP
dmVybGFwcGluZyhzcG90LCBlbmQoKSwgc3BvdCArIGRhdGFTaXplKTsKICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGRhdGFTaXplOyArK2kpCiAgICAgICAgICAgIG5ldyAoJnNwb3RbaV0p
IFQoZGF0YVtpXSk7CiAgICAgICAgbV9zaXplID0gbmV3U2l6ZTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1lIFU+
CiAgICBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+OjppbnNlcnQoc2l6ZV90
IHBvc2l0aW9uLCBjb25zdCBVJiB2YWwpCiAgICB7CiAgICAgICAgZG8gaWYgKCEocG9zaXRpb24g
PD0gc2l6ZSgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1ZlY3Rvci5oIiwgMTA0MiwgX19QUkVUVFlfRlVOQ1RJT05fXywg
InBvc2l0aW9uIDw9IHNpemUoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZh
bHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgY29uc3QgVSogZGF0YSA9ICZ2YWw7CiAgICAgICAg
aWYgKHNpemUoKSA9PSBjYXBhY2l0eSgpKSB7CiAgICAgICAgICAgIGRhdGEgPSBleHBhbmRDYXBh
Y2l0eShzaXplKCkgKyAxLCBkYXRhKTsKICAgICAgICAgICAgaWYgKCFiZWdpbigpKQogICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBUKiBzcG90ID0gYmVnaW4oKSArIHBv
c2l0aW9uOwogICAgICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCwgZW5k
KCksIHNwb3QgKyAxKTsKICAgICAgICBuZXcgKHNwb3QpIFQoKmRhdGEpOwogICAgICAgICsrbV9z
aXplOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4gdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGM+CiAgICBpbmxpbmUgdm9pZCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHk+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8
VSwgYz4mIHZhbCkKICAgIHsKICAgICAgICBpbnNlcnQocG9zaXRpb24sIHZhbC5iZWdpbigpLCB2
YWwuc2l6ZSgpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICB2b2lkIFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eT46OnByZXBlbmQoY29uc3QgVSogZGF0YSwgc2l6ZV90IGRhdGFTaXplKQogICAgewog
ICAgICAgIGluc2VydCgwLCBkYXRhLCBkYXRhU2l6ZSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogICAg
aW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pjo6cHJlcGVuZChjb25zdCBVJiB2
YWwpCiAgICB7CiAgICAgICAgaW5zZXJ0KDAsIHZhbCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXpl
X3QgYz4KICAgIGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OnByZXBlbmQo
Y29uc3QgVmVjdG9yPFUsIGM+JiB2YWwpCiAgICB7CiAgICAgICAgaW5zZXJ0KDAsIHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CiAgICBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+
OjpyZW1vdmUoc2l6ZV90IHBvc2l0aW9uKQogICAgewogICAgICAgIGRvIGlmICghKHBvc2l0aW9u
IDwgc2l6ZSgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1ZlY3Rvci5oIiwgMTA4MiwgX19QUkVUVFlfRlVOQ1RJT05fXywg
InBvc2l0aW9uIDwgc2l6ZSgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICop
KHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBUKiBzcG90ID0gYmVnaW4oKSArIHBvc2l0aW9uOwog
ICAgICAgIHNwb3QtPn5UKCk7CiAgICAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFwcGlu
ZyhzcG90ICsgMSwgZW5kKCksIHNwb3QpOwogICAgICAgIC0tbV9zaXplOwogICAgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIGlubGluZSB2b2lk
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OnJlbW92ZShzaXplX3QgcG9zaXRpb24sIHNpemVf
dCBsZW5ndGgpCiAgICB7CiAgICAgICAgZG8gaWYgKCEocG9zaXRpb24gPCBzaXplKCkpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvVmVjdG9yLmgiLCAxMDkyLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAicG9zaXRpb24gPCBzaXpl
KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgICAgIGRvIGlmICghKHBvc2l0aW9uICsgbGVuZ3RoIDw9IHNpemUoKSkpIHsgV1RGUmVw
b3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9W
ZWN0b3IuaCIsIDEwOTMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJwb3NpdGlvbiArIGxlbmd0aCA8
PSBzaXplKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90
KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOwogICAgICAgIFQqIGJlZ2luU3BvdCA9IGJlZ2luKCkgKyBwb3NpdGlvbjsKICAgICAg
ICBUKiBlbmRTcG90ID0gYmVnaW5TcG90ICsgbGVuZ3RoOwogICAgICAgIFR5cGVPcGVyYXRpb25z
OjpkZXN0cnVjdChiZWdpblNwb3QsIGVuZFNwb3QpOwogICAgICAgIFR5cGVPcGVyYXRpb25zOjpt
b3ZlT3ZlcmxhcHBpbmcoZW5kU3BvdCwgZW5kKCksIGJlZ2luU3BvdCk7CiAgICAgICAgbV9zaXpl
IC09IGxlbmd0aDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CiAgICBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+OjpyZXZl
cnNlKCkKICAgIHsKICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2l6ZSAvIDI7ICsr
aSkKICAgICAgICAgICAgc3RkOjpzd2FwKGF0KGkpLCBhdChtX3NpemUgLSAxIC0gaSkpOwogICAg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIGlu
bGluZSBUKiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+OjpyZWxlYXNlQnVmZmVyKCkKICAgIHsK
ICAgICAgICBUKiBidWZmZXIgPSBtX2J1ZmZlci5yZWxlYXNlQnVmZmVyKCk7CiAgICAgICAgaWYg
KGlubGluZUNhcGFjaXR5ICYmICFidWZmZXIgJiYgbV9zaXplKSB7CgoKCiAgICAgICAgICAgIHNp
emVfdCBieXRlcyA9IG1fc2l6ZSAqIHNpemVvZihUKTsKICAgICAgICAgICAgYnVmZmVyID0gc3Rh
dGljX2Nhc3Q8VCo+KGZhc3RNYWxsb2MoYnl0ZXMpKTsKICAgICAgICAgICAgbWVtY3B5KGJ1ZmZl
ciwgZGF0YSgpLCBieXRlcyk7CiAgICAgICAgfQogICAgICAgIG1fc2l6ZSA9IDA7CiAgICAgICAg
cmV0dXJuIGJ1ZmZlcjsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CiAgICBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+Ojpj
aGVja0NvbnNpc3RlbmN5KCkKICAgIHsKCiAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplKCk7ICsraSkKICAgICAgICAgICAgVmFsdWVDaGVjazxUPjo6Y2hlY2tDb25zaXN0ZW5jeShh
dChpKSk7CgogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4KICAgIHZvaWQgZGVsZXRlQWxsVmFsdWVzKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eT4mIGNvbGxlY3Rpb24pCiAgICB7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHk+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKICAgICAgICBpdGVy
YXRvciBlbmQgPSBjb2xsZWN0aW9uLmVuZCgpOwogICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBj
b2xsZWN0aW9uLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgZGVsZXRlICpp
dDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiAgICBpbmxpbmUgdm9pZCBzd2FwKFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIGEsIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eT4mIGIpCiAgICB7CiAgICAgICAgYS5zd2FwKGIpOwogICAgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiBiKQogICAgewogICAgICAgIGlmIChhLnNpemUoKSAhPSBi
LnNpemUoKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICByZXR1cm4gVmVjdG9y
VHlwZU9wZXJhdGlvbnM8VD46OmNvbXBhcmUoYS5kYXRhKCksIGIuZGF0YSgpLCBhLnNpemUoKSk7
CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pgog
ICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+
JiBhLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiBiKQogICAgewogICAgICAgIHJl
dHVybiAhKGEgPT0gYik7CiAgICB9CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBW
YWx1ZUNoZWNrPFZlY3RvcjxUPiA+IHsKICAgICAgICB0eXBlZGVmIFZlY3RvcjxUPiBUcmFpdFR5
cGU7CiAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShjb25zdCBWZWN0b3I8VD4m
IHYpCiAgICAgICAgewogICAgICAgICAgICB2LmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICB9
CiAgICB9OwoKCn0KCnVzaW5nIFdURjo6VmVjdG9yOwojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0NvbGxlY3Rpb25DYWNoZS5oIiAyCgpuYW1lc3BhY2UgV2ViQ29yZSB7CgpjbGFz
cyBFbGVtZW50OwoKc3RydWN0IENvbGxlY3Rpb25DYWNoZSB7CiAgICBwdWJsaWM6IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlw
ZUNsYXNzTmV3KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6
OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxs
b2NUeXBlQ2xhc3NOZXcpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldU
Rjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxv
Y1R5cGVDbGFzc05ld0FycmF5KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6Oklu
dGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHBy
aXZhdGU6IHR5cGVkZWYgaW50IFRoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01h
Y3JvOwpwdWJsaWM6CiAgICBDb2xsZWN0aW9uQ2FjaGUoKTsKICAgIENvbGxlY3Rpb25DYWNoZShj
b25zdCBDb2xsZWN0aW9uQ2FjaGUmKTsKICAgIENvbGxlY3Rpb25DYWNoZSYgb3BlcmF0b3I9KGNv
bnN0IENvbGxlY3Rpb25DYWNoZSYgb3RoZXIpCiAgICB7CiAgICAgICAgQ29sbGVjdGlvbkNhY2hl
IHRtcChvdGhlcik7CiAgICAgICAgc3dhcCh0bXApOwogICAgICAgIHJldHVybiAqdGhpczsKICAg
IH0KICAgIH5Db2xsZWN0aW9uQ2FjaGUoKTsKCiAgICB2b2lkIHJlc2V0KCk7CiAgICB2b2lkIHN3
YXAoQ29sbGVjdGlvbkNhY2hlJik7CgogICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7CgogICAg
dHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBWZWN0b3I8RWxlbWVudCo+Kj4gTm9k
ZUNhY2hlTWFwOwoKICAgIHVpbnQ2NF90IHZlcnNpb247CiAgICBFbGVtZW50KiBjdXJyZW50Owog
ICAgdW5zaWduZWQgcG9zaXRpb247CiAgICB1bnNpZ25lZCBsZW5ndGg7CiAgICBpbnQgZWxlbWVu
dHNBcnJheVBvc2l0aW9uOwogICAgTm9kZUNhY2hlTWFwIGlkQ2FjaGU7CiAgICBOb2RlQ2FjaGVN
YXAgbmFtZUNhY2hlOwogICAgYm9vbCBoYXNMZW5ndGg7CiAgICBib29sIGhhc05hbWVDYWNoZTsK
CnByaXZhdGU6CiAgICBzdGF0aWMgdm9pZCBjb3B5Q2FjaGVNYXAoTm9kZUNhY2hlTWFwJiwgY29u
c3QgTm9kZUNhY2hlTWFwJik7Cn07CgoKCgoKfQojIDMyICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
bGVjdGlvblR5cGUuaCIgMQojIDI0ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxl
Y3Rpb25UeXBlLmgiCiNkZWZpbmUgQ29sbGVjdGlvblR5cGVfaCAKCm5hbWVzcGFjZSBXZWJDb3Jl
IHsKCmVudW0gQ29sbGVjdGlvblR5cGUgewoKCiAgICBEb2NJbWFnZXMsCiAgICBEb2NBcHBsZXRz
LAogICAgRG9jRW1iZWRzLAogICAgRG9jT2JqZWN0cywKICAgIERvY0Zvcm1zLAogICAgRG9jTGlu
a3MsCiAgICBEb2NBbmNob3JzLAogICAgRG9jU2NyaXB0cywKCiAgICBEb2NBbGwsCiAgICBOb2Rl
Q2hpbGRyZW4sCgoKCiAgICBXaW5kb3dOYW1lZEl0ZW1zLAogICAgRG9jdW1lbnROYW1lZEl0ZW1z
LAoKCgogICAgVGFibGVUQm9kaWVzLAogICAgVFNlY3Rpb25Sb3dzLAogICAgVFJDZWxscywKICAg
IFNlbGVjdE9wdGlvbnMsCiAgICBEYXRhTGlzdE9wdGlvbnMsCiAgICBNYXBBcmVhcywKCiAgICBP
dGhlckNvbGxlY3Rpb24KfTsKCnN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHlwZSBGaXJzdFVubmFt
ZWREb2N1bWVudENhY2hlZFR5cGUgPSBEb2NJbWFnZXM7CnN0YXRpYyBjb25zdCB1bnNpZ25lZCBO
dW1Vbm5hbWVkRG9jdW1lbnRDYWNoZWRUeXBlcyA9IE5vZGVDaGlsZHJlbiAtIERvY0ltYWdlcyAr
IDE7CgpzdGF0aWMgY29uc3QgQ29sbGVjdGlvblR5cGUgRmlyc3ROYW1lZERvY3VtZW50Q2FjaGVk
VHlwZSA9IFdpbmRvd05hbWVkSXRlbXM7CnN0YXRpYyBjb25zdCB1bnNpZ25lZCBOdW1OYW1lZERv
Y3VtZW50Q2FjaGVkVHlwZXMgPSBEb2N1bWVudE5hbWVkSXRlbXMgLSBXaW5kb3dOYW1lZEl0ZW1z
ICsgMTsKCn0KIyAzMyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgiIDIK
IyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIiAx
CiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgi
CiNkZWZpbmUgQ29sb3JfaCAKCgoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3VuaWNvZGUvVW5pY29kZS5oIiAxCiMgMjQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdW5pY29kZS9Vbmljb2RlLmgiCiNkZWZpbmUgV1RGX1VOSUNPREVfSCAKCgoKCiMg
MSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL3F0NC9Vbmljb2Rl
UXQ0LmgiIDEKIyAyNCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2Rl
L3F0NC9Vbmljb2RlUXQ0LmgiCiNkZWZpbmUgV1RGX1VOSUNPREVfUVQ0X0ggCgojIDEgIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9TY3JpcHRDb2Rlc0Zyb21JQ1Uu
aCIgMQoKCgoKCgojZGVmaW5lIFdURl9TY3JpcHRDb2Rlc0Zyb21JQ1VfaCAKIyAzMCAiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1NjcmlwdENvZGVzRnJvbUlDVS5o
Igp0eXBlZGVmIGVudW0gVVNjcmlwdENvZGUgewogICAgICBVU0NSSVBUX0lOVkFMSURfQ09ERSA9
IC0xLAogICAgICBVU0NSSVBUX0NPTU1PTiA9IDAgLAogICAgICBVU0NSSVBUX0lOSEVSSVRFRCA9
IDEsCiAgICAgIFVTQ1JJUFRfQVJBQklDID0gMiwKICAgICAgVVNDUklQVF9BUk1FTklBTiA9IDMs
CiAgICAgIFVTQ1JJUFRfQkVOR0FMSSA9IDQsCiAgICAgIFVTQ1JJUFRfQk9QT01PRk8gPSA1LAog
ICAgICBVU0NSSVBUX0NIRVJPS0VFID0gNiwKICAgICAgVVNDUklQVF9DT1BUSUMgPSA3LAogICAg
ICBVU0NSSVBUX0NZUklMTElDID0gOCwKICAgICAgVVNDUklQVF9ERVNFUkVUID0gOSwKICAgICAg
VVNDUklQVF9ERVZBTkFHQVJJID0gMTAsCiAgICAgIFVTQ1JJUFRfRVRISU9QSUMgPSAxMSwKICAg
ICAgVVNDUklQVF9HRU9SR0lBTiA9IDEyLAogICAgICBVU0NSSVBUX0dPVEhJQyA9IDEzLAogICAg
ICBVU0NSSVBUX0dSRUVLID0gMTQsCiAgICAgIFVTQ1JJUFRfR1VKQVJBVEkgPSAxNSwKICAgICAg
VVNDUklQVF9HVVJNVUtISSA9IDE2LAogICAgICBVU0NSSVBUX0hBTiA9IDE3LAogICAgICBVU0NS
SVBUX0hBTkdVTCA9IDE4LAogICAgICBVU0NSSVBUX0hFQlJFVyA9IDE5LAogICAgICBVU0NSSVBU
X0hJUkFHQU5BID0gMjAsCiAgICAgIFVTQ1JJUFRfS0FOTkFEQSA9IDIxLAogICAgICBVU0NSSVBU
X0tBVEFLQU5BID0gMjIsCiAgICAgIFVTQ1JJUFRfS0hNRVIgPSAyMywKICAgICAgVVNDUklQVF9M
QU8gPSAyNCwKICAgICAgVVNDUklQVF9MQVRJTiA9IDI1LAogICAgICBVU0NSSVBUX01BTEFZQUxB
TSA9IDI2LAogICAgICBVU0NSSVBUX01PTkdPTElBTiA9IDI3LAogICAgICBVU0NSSVBUX01ZQU5N
QVIgPSAyOCwKICAgICAgVVNDUklQVF9PR0hBTSA9IDI5LAogICAgICBVU0NSSVBUX09MRF9JVEFM
SUMgPSAzMCwKICAgICAgVVNDUklQVF9PUklZQSA9IDMxLAogICAgICBVU0NSSVBUX1JVTklDID0g
MzIsCiAgICAgIFVTQ1JJUFRfU0lOSEFMQSA9IDMzLAogICAgICBVU0NSSVBUX1NZUklBQyA9IDM0
LAogICAgICBVU0NSSVBUX1RBTUlMID0gMzUsCiAgICAgIFVTQ1JJUFRfVEVMVUdVID0gMzYsCiAg
ICAgIFVTQ1JJUFRfVEhBQU5BID0gMzcsCiAgICAgIFVTQ1JJUFRfVEhBSSA9IDM4LAogICAgICBV
U0NSSVBUX1RJQkVUQU4gPSAzOSwKCiAgICAgIFVTQ1JJUFRfQ0FOQURJQU5fQUJPUklHSU5BTCA9
IDQwLAoKICAgICAgVVNDUklQVF9VQ0FTID0gVVNDUklQVF9DQU5BRElBTl9BQk9SSUdJTkFMLAog
ICAgICBVU0NSSVBUX1lJID0gNDEsCiAgICAgIFVTQ1JJUFRfVEFHQUxPRyA9IDQyLAogICAgICBV
U0NSSVBUX0hBTlVOT08gPSA0MywKICAgICAgVVNDUklQVF9CVUhJRCA9IDQ0LAogICAgICBVU0NS
SVBUX1RBR0JBTldBID0gNDUsCgoKICAgICAgVVNDUklQVF9CUkFJTExFID0gNDYsCiAgICAgIFVT
Q1JJUFRfQ1lQUklPVCA9IDQ3LAogICAgICBVU0NSSVBUX0xJTUJVID0gNDgsCiAgICAgIFVTQ1JJ
UFRfTElORUFSX0IgPSA0OSwKICAgICAgVVNDUklQVF9PU01BTllBID0gNTAsCiAgICAgIFVTQ1JJ
UFRfU0hBVklBTiA9IDUxLAogICAgICBVU0NSSVBUX1RBSV9MRSA9IDUyLAogICAgICBVU0NSSVBU
X1VHQVJJVElDID0gNTMsCgoKICAgICAgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSA9IDU0
LAoKCgogICAgICBVU0NSSVBUX0JVR0lORVNFID0gNTUsCiAgICAgIFVTQ1JJUFRfR0xBR09MSVRJ
QyA9IDU2LAogICAgICBVU0NSSVBUX0tIQVJPU0hUSEkgPSA1NywKICAgICAgVVNDUklQVF9TWUxP
VElfTkFHUkkgPSA1OCwKICAgICAgVVNDUklQVF9ORVdfVEFJX0xVRSA9IDU5LAogICAgICBVU0NS
SVBUX1RJRklOQUdIID0gNjAsCiAgICAgIFVTQ1JJUFRfT0xEX1BFUlNJQU4gPSA2MSwKCgogICAg
ICBVU0NSSVBUX0JBTElORVNFID0gNjIsCiAgICAgIFVTQ1JJUFRfQkFUQUsgPSA2MywKICAgICAg
VVNDUklQVF9CTElTU1lNQk9MUyA9IDY0LAogICAgICBVU0NSSVBUX0JSQUhNSSA9IDY1LAogICAg
ICBVU0NSSVBUX0NIQU0gPSA2NiwKICAgICAgVVNDUklQVF9DSVJUSCA9IDY3LAogICAgICBVU0NS
SVBUX09MRF9DSFVSQ0hfU0xBVk9OSUNfQ1lSSUxMSUMgPSA2OCwKICAgICAgVVNDUklQVF9ERU1P
VElDX0VHWVBUSUFOID0gNjksCiAgICAgIFVTQ1JJUFRfSElFUkFUSUNfRUdZUFRJQU4gPSA3MCwK
ICAgICAgVVNDUklQVF9FR1lQVElBTl9ISUVST0dMWVBIUyA9IDcxLAogICAgICBVU0NSSVBUX0tI
VVRTVVJJID0gNzIsCiAgICAgIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4gPSA3MywKICAgICAgVVND
UklQVF9UUkFESVRJT05BTF9IQU4gPSA3NCwKICAgICAgVVNDUklQVF9QQUhBV0hfSE1PTkcgPSA3
NSwKICAgICAgVVNDUklQVF9PTERfSFVOR0FSSUFOID0gNzYsCiAgICAgIFVTQ1JJUFRfSEFSQVBQ
QU5fSU5EVVMgPSA3NywKICAgICAgVVNDUklQVF9KQVZBTkVTRSA9IDc4LAogICAgICBVU0NSSVBU
X0tBWUFIX0xJID0gNzksCiAgICAgIFVTQ1JJUFRfTEFUSU5fRlJBS1RVUiA9IDgwLAogICAgICBV
U0NSSVBUX0xBVElOX0dBRUxJQyA9IDgxLAogICAgICBVU0NSSVBUX0xFUENIQSA9IDgyLAogICAg
ICBVU0NSSVBUX0xJTkVBUl9BID0gODMsCiAgICAgIFVTQ1JJUFRfTUFOREFFQU4gPSA4NCwKICAg
ICAgVVNDUklQVF9NQVlBTl9ISUVST0dMWVBIUyA9IDg1LAogICAgICBVU0NSSVBUX01FUk9JVElD
ID0gODYsCiAgICAgIFVTQ1JJUFRfTktPID0gODcsCiAgICAgIFVTQ1JJUFRfT1JLSE9OID0gODgs
CiAgICAgIFVTQ1JJUFRfT0xEX1BFUk1JQyA9IDg5LAogICAgICBVU0NSSVBUX1BIQUdTX1BBID0g
OTAsCiAgICAgIFVTQ1JJUFRfUEhPRU5JQ0lBTiA9IDkxLAogICAgICBVU0NSSVBUX1BIT05FVElD
X1BPTExBUkQgPSA5MiwKICAgICAgVVNDUklQVF9ST05HT1JPTkdPID0gOTMsCiAgICAgIFVTQ1JJ
UFRfU0FSQVRJID0gOTQsCiAgICAgIFVTQ1JJUFRfRVNUUkFOR0VMT19TWVJJQUMgPSA5NSwKICAg
ICAgVVNDUklQVF9XRVNURVJOX1NZUklBQyA9IDk2LAogICAgICBVU0NSSVBUX0VBU1RFUk5fU1lS
SUFDID0gOTcsCiAgICAgIFVTQ1JJUFRfVEVOR1dBUiA9IDk4LAogICAgICBVU0NSSVBUX1ZBSSA9
IDk5LAogICAgICBVU0NSSVBUX1ZJU0lCTEVfU1BFRUNIID0gMTAwLAogICAgICBVU0NSSVBUX0NV
TkVJRk9STSA9IDEwMSwKICAgICAgVVNDUklQVF9VTldSSVRURU5fTEFOR1VBR0VTID0gMTAyLAog
ICAgICBVU0NSSVBUX1VOS05PV04gPSAxMDMsCgoKICAgICAgVVNDUklQVF9DT0RFX0xJTUlUID0g
MTA0Cn0gVVNjcmlwdENvZGU7CiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvdW5pY29kZS9xdDQvVW5pY29kZVF0NC5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi91bmljb2RlL1VuaWNvZGVNYWNyb3NGcm9tSUNVLmgiIDEKCgoKCgoKI2Rl
ZmluZSBVbmljb2RlTWFjcm9zRnJvbUlDVV9oIAoKCgojZGVmaW5lIFVfSVNfQk1QKGMpICgoVUNo
YXIzMikoYyk8PTB4ZmZmZikKI2RlZmluZSBVMTZfSVNfTEVBRChjKSAoKChjKSYweGZmZmZmYzAw
KT09MHhkODAwKQojZGVmaW5lIFUxNl9JU19UUkFJTChjKSAoKChjKSYweGZmZmZmYzAwKT09MHhk
YzAwKQojZGVmaW5lIFUxNl9TVVJST0dBVEVfT0ZGU0VUICgoMHhkODAwPDwxMFVMKSsweGRjMDAt
MHgxMDAwMCkKI2RlZmluZSBVMTZfR0VUX1NVUFBMRU1FTlRBUlkobGVhZCx0cmFpbCkgKCgoVUNo
YXIzMikobGVhZCk8PDEwVUwpKyhVQ2hhcjMyKSh0cmFpbCktVTE2X1NVUlJPR0FURV9PRkZTRVQp
CgoKI2RlZmluZSBVMTZfTEVBRChzdXBwbGVtZW50YXJ5KSAoVUNoYXIpKCgoc3VwcGxlbWVudGFy
eSk+PjEwKSsweGQ3YzApCiNkZWZpbmUgVTE2X1RSQUlMKHN1cHBsZW1lbnRhcnkpIChVQ2hhciko
KChzdXBwbGVtZW50YXJ5KSYweDNmZil8MHhkYzAwKQojZGVmaW5lIFUxNl9MRU5HVEgoYykgKCh1
aW50MzJfdCkoYykgPD0gMHhmZmZmID8gMSA6IDIpCgojZGVmaW5lIFVfSVNfU1VQUExFTUVOVEFS
WShjKSAoKFVDaGFyMzIpKChjKS0weDEwMDAwKTw9MHhmZmZmZikKI2RlZmluZSBVX0lTX1NVUlJP
R0FURShjKSAoKChjKSYweGZmZmZmODAwKT09MHhkODAwKQojZGVmaW5lIFUxNl9JU19TSU5HTEUo
YykgIVVfSVNfU1VSUk9HQVRFKGMpCiNkZWZpbmUgVTE2X0lTX1NVUlJPR0FURShjKSBVX0lTX1NV
UlJPR0FURShjKQojZGVmaW5lIFUxNl9JU19TVVJST0dBVEVfTEVBRChjKSAoKChjKSYweDQwMCk9
PTApCgojZGVmaW5lIFUxNl9HRVQocyxzdGFydCxpLGxlbmd0aCxjKSB7IChjKT0ocylbaV07IGlm
KFUxNl9JU19TVVJST0dBVEUoYykpIHsgdWludDE2X3QgX19jMjsgaWYoVTE2X0lTX1NVUlJPR0FU
RV9MRUFEKGMpKSB7IGlmKChpKSsxPChsZW5ndGgpICYmIFUxNl9JU19UUkFJTChfX2MyPShzKVso
aSkrMV0pKSB7IChjKT1VMTZfR0VUX1NVUFBMRU1FTlRBUlkoKGMpLCBfX2MyKTsgfSB9IGVsc2Ug
eyBpZigoaSktMT49KHN0YXJ0KSAmJiBVMTZfSVNfTEVBRChfX2MyPShzKVsoaSktMV0pKSB7IChj
KT1VMTZfR0VUX1NVUFBMRU1FTlRBUlkoX19jMiwgKGMpKTsgfSB9IH0gfQojIDQ0ICIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVW5pY29kZU1hY3Jvc0Zyb21JQ1Uu
aCIKI2RlZmluZSBVMTZfUFJFVihzLHN0YXJ0LGksYykgeyAoYyk9KHMpWy0tKGkpXTsgaWYoVTE2
X0lTX1RSQUlMKGMpKSB7IHVpbnQxNl90IF9fYzI7IGlmKChpKT4oc3RhcnQpICYmIFUxNl9JU19M
RUFEKF9fYzI9KHMpWyhpKS0xXSkpIHsgLS0oaSk7IChjKT1VMTZfR0VUX1NVUFBMRU1FTlRBUlko
X19jMiwgKGMpKTsgfSB9IH0KIyA1NSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi91bmljb2RlL1VuaWNvZGVNYWNyb3NGcm9tSUNVLmgiCiNkZWZpbmUgVTE2X0JBQ0tfMShzLHN0
YXJ0LGkpIHsgaWYoVTE2X0lTX1RSQUlMKChzKVstLShpKV0pICYmIChpKT4oc3RhcnQpICYmIFUx
Nl9JU19MRUFEKChzKVsoaSktMV0pKSB7IC0tKGkpOyB9IH0KCgoKCgojZGVmaW5lIFUxNl9ORVhU
KHMsaSxsZW5ndGgsYykgeyAoYyk9KHMpWyhpKSsrXTsgaWYoVTE2X0lTX0xFQUQoYykpIHsgdWlu
dDE2X3QgX19jMjsgaWYoKGkpPChsZW5ndGgpICYmIFUxNl9JU19UUkFJTChfX2MyPShzKVsoaSld
KSkgeyArKyhpKTsgKGMpPVUxNl9HRVRfU1VQUExFTUVOVEFSWSgoYyksIF9fYzIpOyB9IH0gfQoj
IDcyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVW5pY29kZU1h
Y3Jvc0Zyb21JQ1UuaCIKI2RlZmluZSBVMTZfRldEXzEocyxpLGxlbmd0aCkgeyBpZihVMTZfSVNf
TEVBRCgocylbKGkpKytdKSAmJiAoaSk8KGxlbmd0aCkgJiYgVTE2X0lTX1RSQUlMKChzKVtpXSkp
IHsgKysoaSk7IH0gfQoKCgoKCiNkZWZpbmUgVV9NQVNLKHgpICgodWludDMyX3QpMTw8KHgpKQoK
I2RlZmluZSBVOF9NQVhfTEVOR1RIIDQKCiNkZWZpbmUgVThfQVBQRU5EX1VOU0FGRShzLGksYykg
eyBpZigodWludDMyX3QpKGMpPD0weDdmKSB7IChzKVsoaSkrK109KHVpbnQ4X3QpKGMpOyB9IGVs
c2UgeyBpZigodWludDMyX3QpKGMpPD0weDdmZikgeyAocylbKGkpKytdPSh1aW50OF90KSgoKGMp
Pj42KXwweGMwKTsgfSBlbHNlIHsgaWYoKHVpbnQzMl90KShjKTw9MHhmZmZmKSB7IChzKVsoaSkr
K109KHVpbnQ4X3QpKCgoYyk+PjEyKXwweGUwKTsgfSBlbHNlIHsgKHMpWyhpKSsrXT0odWludDhf
dCkoKChjKT4+MTgpfDB4ZjApOyAocylbKGkpKytdPSh1aW50OF90KSgoKChjKT4+MTIpJjB4M2Yp
fDB4ODApOyB9IChzKVsoaSkrK109KHVpbnQ4X3QpKCgoKGMpPj42KSYweDNmKXwweDgwKTsgfSAo
cylbKGkpKytdPSh1aW50OF90KSgoKGMpJjB4M2YpfDB4ODApOyB9IH0KIyAyOCAiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL3F0NC9Vbmljb2RlUXQ0LmgiIDIKCiMg
MSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9RQ2hhciIgMQojIDEgIi9vcHQvbG9jYWwvaW5j
bHVkZS9RdENvcmUvcWNoYXIuaCIgMQojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvUUNo
YXIiIDIKIyAzMCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL3F0
NC9Vbmljb2RlUXQ0LmgiIDIKIyAxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL1FTdHJpbmci
IDEKIyAxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FzdHJpbmcuaCIgMQojIDEgIi9vcHQv
bG9jYWwvaW5jbHVkZS9RdENvcmUvUVN0cmluZyIgMgojIDMxICIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvcXQ0L1VuaWNvZGVRdDQuaCIgMgojIDM5ICIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvcXQ0L1VuaWNvZGVRdDQuaCIKCm5h
bWVzcGFjZSBRVW5pY29kZVRhYmxlcyB7CiAgICBzdHJ1Y3QgUHJvcGVydGllcyB7CiAgICAgICAg
dXNob3J0IGNhdGVnb3J5IDogODsKICAgICAgICB1c2hvcnQgbGluZV9icmVha19jbGFzcyA6IDg7
CiAgICAgICAgdXNob3J0IGRpcmVjdGlvbiA6IDg7CiAgICAgICAgdXNob3J0IGNvbWJpbmluZ0Ns
YXNzIDo4OwogICAgICAgIHVzaG9ydCBqb2luaW5nIDogMjsKICAgICAgICBzaWduZWQgc2hvcnQg
ZGlnaXRWYWx1ZSA6IDY7CiAgICAgICAgdXNob3J0IHVuaWNvZGVWZXJzaW9uIDogNDsKICAgICAg
ICB1c2hvcnQgbG93ZXJDYXNlU3BlY2lhbCA6IDE7CiAgICAgICAgdXNob3J0IHVwcGVyQ2FzZVNw
ZWNpYWwgOiAxOwogICAgICAgIHVzaG9ydCB0aXRsZUNhc2VTcGVjaWFsIDogMTsKICAgICAgICB1
c2hvcnQgY2FzZUZvbGRTcGVjaWFsIDogMTsKICAgICAgICBzaWduZWQgc2hvcnQgbWlycm9yRGlm
ZiA6IDE2OwogICAgICAgIHNpZ25lZCBzaG9ydCBsb3dlckNhc2VEaWZmIDogMTY7CiAgICAgICAg
c2lnbmVkIHNob3J0IHVwcGVyQ2FzZURpZmYgOiAxNjsKICAgICAgICBzaWduZWQgc2hvcnQgdGl0
bGVDYXNlRGlmZiA6IDE2OwogICAgICAgIHNpZ25lZCBzaG9ydCBjYXNlRm9sZERpZmYgOiAxNjsK
ICAgIH07CiAgICBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBjb25zdCBQ
cm9wZXJ0aWVzICogcHJvcGVydGllcyh1aW50IHVjczQpOwogICAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSkgY29uc3QgUHJvcGVydGllcyAqIHByb3BlcnRpZXModXNob3J0
IHVjczIpOwp9CgoKCgoKCnR5cGVkZWYgdWludDE2X3QgVUNoYXI7CgoKCnR5cGVkZWYgdWludDMy
X3QgVUNoYXIzMjsKCgpuYW1lc3BhY2UgV1RGIHsKbmFtZXNwYWNlIFVuaWNvZGUgewoKZW51bSBE
aXJlY3Rpb24gewogICAgTGVmdFRvUmlnaHQgPSBRQ2hhcjo6RGlyTCwKICAgIFJpZ2h0VG9MZWZ0
ID0gUUNoYXI6OkRpclIsCiAgICBFdXJvcGVhbk51bWJlciA9IFFDaGFyOjpEaXJFTiwKICAgIEV1
cm9wZWFuTnVtYmVyU2VwYXJhdG9yID0gUUNoYXI6OkRpckVTLAogICAgRXVyb3BlYW5OdW1iZXJU
ZXJtaW5hdG9yID0gUUNoYXI6OkRpckVULAogICAgQXJhYmljTnVtYmVyID0gUUNoYXI6OkRpckFO
LAogICAgQ29tbW9uTnVtYmVyU2VwYXJhdG9yID0gUUNoYXI6OkRpckNTLAogICAgQmxvY2tTZXBh
cmF0b3IgPSBRQ2hhcjo6RGlyQiwKICAgIFNlZ21lbnRTZXBhcmF0b3IgPSBRQ2hhcjo6RGlyUywK
ICAgIFdoaXRlU3BhY2VOZXV0cmFsID0gUUNoYXI6OkRpcldTLAogICAgT3RoZXJOZXV0cmFsID0g
UUNoYXI6OkRpck9OLAogICAgTGVmdFRvUmlnaHRFbWJlZGRpbmcgPSBRQ2hhcjo6RGlyTFJFLAog
ICAgTGVmdFRvUmlnaHRPdmVycmlkZSA9IFFDaGFyOjpEaXJMUk8sCiAgICBSaWdodFRvTGVmdEFy
YWJpYyA9IFFDaGFyOjpEaXJBTCwKICAgIFJpZ2h0VG9MZWZ0RW1iZWRkaW5nID0gUUNoYXI6OkRp
clJMRSwKICAgIFJpZ2h0VG9MZWZ0T3ZlcnJpZGUgPSBRQ2hhcjo6RGlyUkxPLAogICAgUG9wRGly
ZWN0aW9uYWxGb3JtYXQgPSBRQ2hhcjo6RGlyUERGLAogICAgTm9uU3BhY2luZ01hcmsgPSBRQ2hh
cjo6RGlyTlNNLAogICAgQm91bmRhcnlOZXV0cmFsID0gUUNoYXI6OkRpckJOCn07CgplbnVtIERl
Y29tcG9zaXRpb25UeXBlIHsKICAgIERlY29tcG9zaXRpb25Ob25lID0gUUNoYXI6Ok5vRGVjb21w
b3NpdGlvbiwKICAgIERlY29tcG9zaXRpb25DYW5vbmljYWwgPSBRQ2hhcjo6Q2Fub25pY2FsLAog
ICAgRGVjb21wb3NpdGlvbkNvbXBhdCA9IFFDaGFyOjpDb21wYXQsCiAgICBEZWNvbXBvc2l0aW9u
Q2lyY2xlID0gUUNoYXI6OkNpcmNsZSwKICAgIERlY29tcG9zaXRpb25GaW5hbCA9IFFDaGFyOjpG
aW5hbCwKICAgIERlY29tcG9zaXRpb25Gb250ID0gUUNoYXI6OkZvbnQsCiAgICBEZWNvbXBvc2l0
aW9uRnJhY3Rpb24gPSBRQ2hhcjo6RnJhY3Rpb24sCiAgICBEZWNvbXBvc2l0aW9uSW5pdGlhbCA9
IFFDaGFyOjpJbml0aWFsLAogICAgRGVjb21wb3NpdGlvbklzb2xhdGVkID0gUUNoYXI6Oklzb2xh
dGVkLAogICAgRGVjb21wb3NpdGlvbk1lZGlhbCA9IFFDaGFyOjpNZWRpYWwsCiAgICBEZWNvbXBv
c2l0aW9uTmFycm93ID0gUUNoYXI6Ok5hcnJvdywKICAgIERlY29tcG9zaXRpb25Ob0JyZWFrID0g
UUNoYXI6Ok5vQnJlYWssCiAgICBEZWNvbXBvc2l0aW9uU21hbGwgPSBRQ2hhcjo6U21hbGwsCiAg
ICBEZWNvbXBvc2l0aW9uU3F1YXJlID0gUUNoYXI6OlNxdWFyZSwKICAgIERlY29tcG9zaXRpb25T
dWIgPSBRQ2hhcjo6U3ViLAogICAgRGVjb21wb3NpdGlvblN1cGVyID0gUUNoYXI6OlN1cGVyLAog
ICAgRGVjb21wb3NpdGlvblZlcnRpY2FsID0gUUNoYXI6OlZlcnRpY2FsLAogICAgRGVjb21wb3Np
dGlvbldpZGUgPSBRQ2hhcjo6V2lkZQp9OwoKZW51bSBDaGFyQ2F0ZWdvcnkgewogICAgTm9DYXRl
Z29yeSA9IDAsCiAgICBNYXJrX05vblNwYWNpbmcgPSAoKHVpbnQzMl90KTE8PChRQ2hhcjo6TWFy
a19Ob25TcGFjaW5nKSksCiAgICBNYXJrX1NwYWNpbmdDb21iaW5pbmcgPSAoKHVpbnQzMl90KTE8
PChRQ2hhcjo6TWFya19TcGFjaW5nQ29tYmluaW5nKSksCiAgICBNYXJrX0VuY2xvc2luZyA9ICgo
dWludDMyX3QpMTw8KFFDaGFyOjpNYXJrX0VuY2xvc2luZykpLAogICAgTnVtYmVyX0RlY2ltYWxE
aWdpdCA9ICgodWludDMyX3QpMTw8KFFDaGFyOjpOdW1iZXJfRGVjaW1hbERpZ2l0KSksCiAgICBO
dW1iZXJfTGV0dGVyID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6Ok51bWJlcl9MZXR0ZXIpKSwKICAg
IE51bWJlcl9PdGhlciA9ICgodWludDMyX3QpMTw8KFFDaGFyOjpOdW1iZXJfT3RoZXIpKSwKICAg
IFNlcGFyYXRvcl9TcGFjZSA9ICgodWludDMyX3QpMTw8KFFDaGFyOjpTZXBhcmF0b3JfU3BhY2Up
KSwKICAgIFNlcGFyYXRvcl9MaW5lID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6OlNlcGFyYXRvcl9M
aW5lKSksCiAgICBTZXBhcmF0b3JfUGFyYWdyYXBoID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6OlNl
cGFyYXRvcl9QYXJhZ3JhcGgpKSwKICAgIE90aGVyX0NvbnRyb2wgPSAoKHVpbnQzMl90KTE8PChR
Q2hhcjo6T3RoZXJfQ29udHJvbCkpLAogICAgT3RoZXJfRm9ybWF0ID0gKCh1aW50MzJfdCkxPDwo
UUNoYXI6Ok90aGVyX0Zvcm1hdCkpLAogICAgT3RoZXJfU3Vycm9nYXRlID0gKCh1aW50MzJfdCkx
PDwoUUNoYXI6Ok90aGVyX1N1cnJvZ2F0ZSkpLAogICAgT3RoZXJfUHJpdmF0ZVVzZSA9ICgodWlu
dDMyX3QpMTw8KFFDaGFyOjpPdGhlcl9Qcml2YXRlVXNlKSksCiAgICBPdGhlcl9Ob3RBc3NpZ25l
ZCA9ICgodWludDMyX3QpMTw8KFFDaGFyOjpPdGhlcl9Ob3RBc3NpZ25lZCkpLAogICAgTGV0dGVy
X1VwcGVyY2FzZSA9ICgodWludDMyX3QpMTw8KFFDaGFyOjpMZXR0ZXJfVXBwZXJjYXNlKSksCiAg
ICBMZXR0ZXJfTG93ZXJjYXNlID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6OkxldHRlcl9Mb3dlcmNh
c2UpKSwKICAgIExldHRlcl9UaXRsZWNhc2UgPSAoKHVpbnQzMl90KTE8PChRQ2hhcjo6TGV0dGVy
X1RpdGxlY2FzZSkpLAogICAgTGV0dGVyX01vZGlmaWVyID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6
OkxldHRlcl9Nb2RpZmllcikpLAogICAgTGV0dGVyX090aGVyID0gKCh1aW50MzJfdCkxPDwoUUNo
YXI6OkxldHRlcl9PdGhlcikpLAogICAgUHVuY3R1YXRpb25fQ29ubmVjdG9yID0gKCh1aW50MzJf
dCkxPDwoUUNoYXI6OlB1bmN0dWF0aW9uX0Nvbm5lY3RvcikpLAogICAgUHVuY3R1YXRpb25fRGFz
aCA9ICgodWludDMyX3QpMTw8KFFDaGFyOjpQdW5jdHVhdGlvbl9EYXNoKSksCiAgICBQdW5jdHVh
dGlvbl9PcGVuID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6OlB1bmN0dWF0aW9uX09wZW4pKSwKICAg
IFB1bmN0dWF0aW9uX0Nsb3NlID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6OlB1bmN0dWF0aW9uX0Ns
b3NlKSksCiAgICBQdW5jdHVhdGlvbl9Jbml0aWFsUXVvdGUgPSAoKHVpbnQzMl90KTE8PChRQ2hh
cjo6UHVuY3R1YXRpb25fSW5pdGlhbFF1b3RlKSksCiAgICBQdW5jdHVhdGlvbl9GaW5hbFF1b3Rl
ID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6OlB1bmN0dWF0aW9uX0ZpbmFsUXVvdGUpKSwKICAgIFB1
bmN0dWF0aW9uX090aGVyID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6OlB1bmN0dWF0aW9uX090aGVy
KSksCiAgICBTeW1ib2xfTWF0aCA9ICgodWludDMyX3QpMTw8KFFDaGFyOjpTeW1ib2xfTWF0aCkp
LAogICAgU3ltYm9sX0N1cnJlbmN5ID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6OlN5bWJvbF9DdXJy
ZW5jeSkpLAogICAgU3ltYm9sX01vZGlmaWVyID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6OlN5bWJv
bF9Nb2RpZmllcikpLAogICAgU3ltYm9sX090aGVyID0gKCh1aW50MzJfdCkxPDwoUUNoYXI6OlN5
bWJvbF9PdGhlcikpCn07CgoKCgppbmxpbmUgVUNoYXIzMiB0b0xvd2VyKFVDaGFyMzIgY2gpCnsK
ICAgIHJldHVybiBRQ2hhcjo6dG9Mb3dlcih1aW50MzJfdChjaCkpOwp9CgppbmxpbmUgaW50IHRv
TG93ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNyYywg
aW50IHNyY0xlbmd0aCwgYm9vbCogZXJyb3IpCnsKICAgIGNvbnN0IFVDaGFyICplID0gc3JjICsg
c3JjTGVuZ3RoOwogICAgY29uc3QgVUNoYXIgKnMgPSBzcmM7CiAgICBVQ2hhciAqciA9IHJlc3Vs
dDsKICAgIHVpbnQgcmluZGV4ID0gMDsKCgogICAgaWYgKHMgPCBlICYmIFFDaGFyKCpzKS5pc0xv
d1N1cnJvZ2F0ZSgpKSB7CiAgICAgICAgaWYgKHIpCiAgICAgICAgICAgIHJbcmluZGV4XSA9ICpz
Kys7CiAgICAgICAgKytyaW5kZXg7CiAgICB9CgogICAgaW50IG5lZWRlZCA9IDA7CiAgICB3aGls
ZSAocyA8IGUgJiYgKHJpbmRleCA8IHVpbnQocmVzdWx0TGVuZ3RoKSB8fCAhcikpIHsKICAgICAg
ICB1aW50IGMgPSAqczsKICAgICAgICBpZiAoUUNoYXIoYykuaXNMb3dTdXJyb2dhdGUoKSAmJiBR
Q2hhcigqKHMgLSAxKSkuaXNIaWdoU3Vycm9nYXRlKCkpCiAgICAgICAgICAgIGMgPSBRQ2hhcjo6
c3Vycm9nYXRlVG9VY3M0KCoocyAtIDEpLCBjKTsKICAgICAgICBjb25zdCBRVW5pY29kZVRhYmxl
czo6UHJvcGVydGllcyAqcHJvcCA9IFFVbmljb2RlVGFibGVzOjpwcm9wZXJ0aWVzKGMpOwogICAg
ICAgIGlmIChwcm9wLT5sb3dlckNhc2VTcGVjaWFsKSB7CiAgICAgICAgICAgIFFTdHJpbmcgcXN0
cmluZzsKICAgICAgICAgICAgaWYgKGMgPCAweDEwMDAwKSB7CiAgICAgICAgICAgICAgICBxc3Ry
aW5nICs9IFFDaGFyKGMpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcXN0
cmluZyArPSBRQ2hhcigqKHMtMSkpOwogICAgICAgICAgICAgICAgcXN0cmluZyArPSBRQ2hhcigq
cyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcXN0cmluZyA9IHFzdHJpbmcudG9Mb3dlcigp
OwogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHFzdHJpbmcubGVuZ3RoKCk7ICsraSkg
ewogICAgICAgICAgICAgICAgaWYgKHJpbmRleCA+PSB1aW50KHJlc3VsdExlbmd0aCkpIHsKICAg
ICAgICAgICAgICAgICAgICBuZWVkZWQgKz0gcXN0cmluZy5sZW5ndGgoKSAtIGk7CiAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAo
cikKICAgICAgICAgICAgICAgICAgICByW3JpbmRleF0gPSBxc3RyaW5nLmF0KGkpLnVuaWNvZGUo
KTsKICAgICAgICAgICAgICAgICsrcmluZGV4OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICAgICByW3JpbmRleF0gPSAqcyArIHBy
b3AtPmxvd2VyQ2FzZURpZmY7CiAgICAgICAgICAgICsrcmluZGV4OwogICAgICAgIH0KICAgICAg
ICArK3M7CiAgICB9CiAgICBpZiAocyA8IGUpCiAgICAgICAgbmVlZGVkICs9IGUgLSBzOwogICAg
KmVycm9yID0gKG5lZWRlZCAhPSAwKTsKICAgIGlmIChyaW5kZXggPCB1aW50KHJlc3VsdExlbmd0
aCkpCiAgICAgICAgcltyaW5kZXhdID0gMDsKICAgIHJldHVybiByaW5kZXggKyBuZWVkZWQ7Cn0K
CmlubGluZSBVQ2hhcjMyIHRvVXBwZXIoVUNoYXIzMiBjKQp7CiAgICByZXR1cm4gUUNoYXI6OnRv
VXBwZXIodWludDMyX3QoYykpOwp9CgppbmxpbmUgaW50IHRvVXBwZXIoVUNoYXIqIHJlc3VsdCwg
aW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNyYywgaW50IHNyY0xlbmd0aCwgYm9vbCog
ZXJyb3IpCnsKICAgIGNvbnN0IFVDaGFyICplID0gc3JjICsgc3JjTGVuZ3RoOwogICAgY29uc3Qg
VUNoYXIgKnMgPSBzcmM7CiAgICBVQ2hhciAqciA9IHJlc3VsdDsKICAgIGludCByaW5kZXggPSAw
OwoKCiAgICBpZiAocyA8IGUgJiYgUUNoYXIoKnMpLmlzTG93U3Vycm9nYXRlKCkpIHsKICAgICAg
ICBpZiAocikKICAgICAgICAgICAgcltyaW5kZXhdID0gKnMrKzsKICAgICAgICArK3JpbmRleDsK
ICAgIH0KCiAgICBpbnQgbmVlZGVkID0gMDsKICAgIHdoaWxlIChzIDwgZSAmJiAocmluZGV4IDwg
cmVzdWx0TGVuZ3RoIHx8ICFyKSkgewogICAgICAgIHVpbnQgYyA9ICpzOwogICAgICAgIGlmIChR
Q2hhcihjKS5pc0xvd1N1cnJvZ2F0ZSgpICYmIFFDaGFyKCoocyAtIDEpKS5pc0hpZ2hTdXJyb2dh
dGUoKSkKICAgICAgICAgICAgYyA9IFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoKihzIC0gMSksIGMp
OwogICAgICAgIGNvbnN0IFFVbmljb2RlVGFibGVzOjpQcm9wZXJ0aWVzICpwcm9wID0gUVVuaWNv
ZGVUYWJsZXM6OnByb3BlcnRpZXMoYyk7CiAgICAgICAgaWYgKHByb3AtPnVwcGVyQ2FzZVNwZWNp
YWwpIHsKICAgICAgICAgICAgUVN0cmluZyBxc3RyaW5nOwogICAgICAgICAgICBpZiAoYyA8IDB4
MTAwMDApIHsKICAgICAgICAgICAgICAgIHFzdHJpbmcgKz0gUUNoYXIoYyk7CiAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICBxc3RyaW5nICs9IFFDaGFyKCoocy0xKSk7CiAgICAg
ICAgICAgICAgICBxc3RyaW5nICs9IFFDaGFyKCpzKTsKICAgICAgICAgICAgfQogICAgICAgICAg
ICBxc3RyaW5nID0gcXN0cmluZy50b1VwcGVyKCk7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgcXN0cmluZy5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgICAgICAgICBpZiAocmluZGV4
ID49IHJlc3VsdExlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIG5lZWRlZCArPSBxc3RyaW5n
Lmxlbmd0aCgpIC0gaTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgICAgICAgIHJbcmluZGV4XSA9
IHFzdHJpbmcuYXQoaSkudW5pY29kZSgpOwogICAgICAgICAgICAgICAgKytyaW5kZXg7CiAgICAg
ICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAocikKICAgICAgICAgICAg
ICAgIHJbcmluZGV4XSA9ICpzICsgcHJvcC0+dXBwZXJDYXNlRGlmZjsKICAgICAgICAgICAgKyty
aW5kZXg7CiAgICAgICAgfQogICAgICAgICsrczsKICAgIH0KICAgIGlmIChzIDwgZSkKICAgICAg
ICBuZWVkZWQgKz0gZSAtIHM7CiAgICAqZXJyb3IgPSAobmVlZGVkICE9IDApOwogICAgaWYgKHJp
bmRleCA8IHJlc3VsdExlbmd0aCkKICAgICAgICByW3JpbmRleF0gPSAwOwogICAgcmV0dXJuIHJp
bmRleCArIG5lZWRlZDsKfQoKaW5saW5lIGludCB0b1RpdGxlQ2FzZShVQ2hhcjMyIGMpCnsKICAg
IHJldHVybiBRQ2hhcjo6dG9UaXRsZUNhc2UodWludDMyX3QoYykpOwp9CgppbmxpbmUgVUNoYXIz
MiBmb2xkQ2FzZShVQ2hhcjMyIGMpCnsKICAgIHJldHVybiBRQ2hhcjo6dG9DYXNlRm9sZGVkKHVp
bnQzMl90KGMpKTsKfQoKaW5saW5lIGludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVz
dWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc3JjLCBpbnQgc3JjTGVuZ3RoLCBib29sKiBlcnJvcikK
ewoKICAgICplcnJvciA9IGZhbHNlOwogICAgaWYgKHJlc3VsdExlbmd0aCA8IHNyY0xlbmd0aCkg
ewogICAgICAgICplcnJvciA9IHRydWU7CiAgICAgICAgcmV0dXJuIHNyY0xlbmd0aDsKICAgIH0K
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3JjTGVuZ3RoOyArK2kpCiAgICAgICAgcmVzdWx0W2ld
ID0gUUNoYXI6OnRvQ2FzZUZvbGRlZCh1c2hvcnQoc3JjW2ldKSk7CiAgICByZXR1cm4gc3JjTGVu
Z3RoOwp9CgppbmxpbmUgYm9vbCBpc0FyYWJpY0NoYXIoVUNoYXIzMiBjKQp7CiAgICByZXR1cm4g
YyA+PSAweDA2MDAgJiYgYyA8PSAweDA2RkY7Cn0KCmlubGluZSBib29sIGlzUHJpbnRhYmxlQ2hh
cihVQ2hhcjMyIGMpCnsKICAgIGNvbnN0IHVpbnQgdGVzdCA9ICgodWludDMyX3QpMTw8KFFDaGFy
OjpPdGhlcl9Db250cm9sKSkgfAogICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkxPDwo
UUNoYXI6Ok90aGVyX05vdEFzc2lnbmVkKSk7CiAgICByZXR1cm4gISgoKHVpbnQzMl90KTE8PChR
Q2hhcjo6Y2F0ZWdvcnkodWludDMyX3QoYykpKSkgJiB0ZXN0KTsKfQoKaW5saW5lIGJvb2wgaXNT
ZXBhcmF0b3JTcGFjZShVQ2hhcjMyIGMpCnsKICAgIHJldHVybiBRQ2hhcjo6Y2F0ZWdvcnkodWlu
dDMyX3QoYykpID09IFFDaGFyOjpTZXBhcmF0b3JfU3BhY2U7Cn0KCmlubGluZSBib29sIGlzUHVu
Y3QoVUNoYXIzMiBjKQp7CiAgICBjb25zdCB1aW50IHRlc3QgPSAoKHVpbnQzMl90KTE8PChRQ2hh
cjo6UHVuY3R1YXRpb25fQ29ubmVjdG9yKSkgfAogICAgICAgICAgICAgICAgICAgICAgKCh1aW50
MzJfdCkxPDwoUUNoYXI6OlB1bmN0dWF0aW9uX0Rhc2gpKSB8CiAgICAgICAgICAgICAgICAgICAg
ICAoKHVpbnQzMl90KTE8PChRQ2hhcjo6UHVuY3R1YXRpb25fT3BlbikpIHwKICAgICAgICAgICAg
ICAgICAgICAgICgodWludDMyX3QpMTw8KFFDaGFyOjpQdW5jdHVhdGlvbl9DbG9zZSkpIHwKICAg
ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMTw8KFFDaGFyOjpQdW5jdHVhdGlvbl9Jbml0
aWFsUXVvdGUpKSB8CiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTE8PChRQ2hhcjo6
UHVuY3R1YXRpb25fRmluYWxRdW90ZSkpIHwKICAgICAgICAgICAgICAgICAgICAgICgodWludDMy
X3QpMTw8KFFDaGFyOjpQdW5jdHVhdGlvbl9PdGhlcikpOwogICAgcmV0dXJuICgodWludDMyX3Qp
MTw8KFFDaGFyOjpjYXRlZ29yeSh1aW50MzJfdChjKSkpKSAmIHRlc3Q7Cn0KCmlubGluZSBib29s
IGlzTG93ZXIoVUNoYXIzMiBjKQp7CiAgICByZXR1cm4gUUNoYXI6OmNhdGVnb3J5KHVpbnQzMl90
KGMpKSA9PSBRQ2hhcjo6TGV0dGVyX0xvd2VyY2FzZTsKfQoKaW5saW5lIGJvb2wgaGFzTGluZUJy
ZWFraW5nUHJvcGVydHlDb21wbGV4Q29udGV4dChVQ2hhcjMyKQp7CgogICAgcmV0dXJuIGZhbHNl
Owp9CgppbmxpbmUgVUNoYXIzMiBtaXJyb3JlZENoYXIoVUNoYXIzMiBjKQp7CiAgICByZXR1cm4g
UUNoYXI6Om1pcnJvcmVkQ2hhcih1aW50MzJfdChjKSk7Cn0KCmlubGluZSB1aW50OF90IGNvbWJp
bmluZ0NsYXNzKFVDaGFyMzIgYykKewogICAgcmV0dXJuIFFDaGFyOjpjb21iaW5pbmdDbGFzcyh1
aW50MzJfdChjKSk7Cn0KCmlubGluZSBEZWNvbXBvc2l0aW9uVHlwZSBkZWNvbXBvc2l0aW9uVHlw
ZShVQ2hhcjMyIGMpCnsKICAgIHJldHVybiAoRGVjb21wb3NpdGlvblR5cGUpUUNoYXI6OmRlY29t
cG9zaXRpb25UYWcoYyk7Cn0KCmlubGluZSBpbnQgdW1lbWNhc2VjbXAoY29uc3QgVUNoYXIqIGEs
IGNvbnN0IFVDaGFyKiBiLCBpbnQgbGVuKQp7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47
ICsraSkgewogICAgICAgIHVpbnQgYzEgPSBRQ2hhcjo6dG9DYXNlRm9sZGVkKHVzaG9ydChhW2ld
KSk7CiAgICAgICAgdWludCBjMiA9IFFDaGFyOjp0b0Nhc2VGb2xkZWQodXNob3J0KGJbaV0pKTsK
ICAgICAgICBpZiAoYzEgIT0gYzIpCiAgICAgICAgICAgIHJldHVybiBjMSAtIGMyOwogICAgfQog
ICAgcmV0dXJuIDA7Cn0KCmlubGluZSBEaXJlY3Rpb24gZGlyZWN0aW9uKFVDaGFyMzIgYykKewog
ICAgcmV0dXJuIChEaXJlY3Rpb24pUUNoYXI6OmRpcmVjdGlvbih1aW50MzJfdChjKSk7Cn0KCmlu
bGluZSBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkoVUNoYXIzMiBjKQp7CiAgICByZXR1cm4gKENoYXJD
YXRlZ29yeSkgKCh1aW50MzJfdCkxPDwoUUNoYXI6OmNhdGVnb3J5KHVpbnQzMl90KGMpKSkpOwp9
Cgp9IH0KIyAzMCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1Vu
aWNvZGUuaCIgMgojIDQyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNv
ZGUvVW5pY29kZS5oIgp0eXBlZGVmIGludCBkdW1teVVDaGFySXNUd29CeXRlcyBbKHNpemVvZihV
Q2hhcikgPT0gMikgPyAxIDogLTFdOwojIDMyICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oIiAyCiMgNDAgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgiCgpjbGFzcyBRQ29sb3I7CgojIDYwICIuLi8uLi8uLi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIgpuYW1lc3BhY2UgV2ViQ29y
ZSB7CgpjbGFzcyBDb2xvcjsKCnR5cGVkZWYgdW5zaWduZWQgUkdCQTMyOwoKUkdCQTMyIG1ha2VS
R0IoaW50IHIsIGludCBnLCBpbnQgYik7ClJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGlu
dCBiLCBpbnQgYSk7CgpSR0JBMzIgY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShSR0JBMzIgY29sb3Is
IGZsb2F0IG92ZXJyaWRlQWxwaGEpOwpSR0JBMzIgbWFrZVJHQkEzMkZyb21GbG9hdHMoZmxvYXQg
ciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7ClJHQkEzMiBtYWtlUkdCQUZyb21IU0xBKGRv
dWJsZSBoLCBkb3VibGUgcywgZG91YmxlIGwsIGRvdWJsZSBhKTsKUkdCQTMyIG1ha2VSR0JBRnJv
bUNNWUtBKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpOwoKaW50
IGRpZmZlcmVuY2VTcXVhcmVkKGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKTsKCmlubGluZSBp
bnQgcmVkQ2hhbm5lbChSR0JBMzIgY29sb3IpIHsgcmV0dXJuIChjb2xvciA+PiAxNikgJiAweEZG
OyB9CmlubGluZSBpbnQgZ3JlZW5DaGFubmVsKFJHQkEzMiBjb2xvcikgeyByZXR1cm4gKGNvbG9y
ID4+IDgpICYgMHhGRjsgfQppbmxpbmUgaW50IGJsdWVDaGFubmVsKFJHQkEzMiBjb2xvcikgeyBy
ZXR1cm4gY29sb3IgJiAweEZGOyB9CmlubGluZSBpbnQgYWxwaGFDaGFubmVsKFJHQkEzMiBjb2xv
cikgeyByZXR1cm4gKGNvbG9yID4+IDI0KSAmIDB4RkY7IH0KCmNsYXNzIENvbG9yIHsKICAgIHB1
YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHZvaWQqIHAgPSA6OldURjo6ZmFzdE1hbGxvYyhz
aXplKTsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRl
cm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyByZXR1cm4gcDsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6
OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lk
KiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxs
b2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6
SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyByZXR1cm4gcDsgfSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJl
ZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyA6OldURjo6ZmFz
dEZyZWUocCk7IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgVGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNv
bG9uQWZ0ZXJUaGlzTWFjcm87CnB1YmxpYzoKICAgIENvbG9yKCkgOiBtX2NvbG9yKDApLCBtX3Zh
bGlkKGZhbHNlKSB7IH0KICAgIENvbG9yKFJHQkEzMiBjb2wpIDogbV9jb2xvcihjb2wpLCBtX3Zh
bGlkKHRydWUpIHsgfQogICAgQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYikgOiBtX2NvbG9yKG1h
a2VSR0IociwgZywgYikpLCBtX3ZhbGlkKHRydWUpIHsgfQogICAgQ29sb3IoaW50IHIsIGludCBn
LCBpbnQgYiwgaW50IGEpIDogbV9jb2xvcihtYWtlUkdCQShyLCBnLCBiLCBhKSksIG1fdmFsaWQo
dHJ1ZSkgeyB9CgogICAgQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkg
OiBtX2NvbG9yKG1ha2VSR0JBMzJGcm9tRmxvYXRzKHIsIGcsIGIsIGEpKSwgbV92YWxpZCh0cnVl
KSB7IH0KCiAgICBDb2xvcihmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9h
dCBhKSA6IG1fY29sb3IobWFrZVJHQkFGcm9tQ01ZS0EoYywgbSwgeSwgaywgYSkpLCBtX3ZhbGlk
KHRydWUpIHsgfQogICAgZXhwbGljaXQgQ29sb3IoY29uc3QgU3RyaW5nJik7CiAgICBleHBsaWNp
dCBDb2xvcihjb25zdCBjaGFyKik7CgoKCiAgICBTdHJpbmcgc2VyaWFsaXplZCgpIGNvbnN0OwoK
CgogICAgU3RyaW5nIG5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgY29uc3Q7CgogICAgdm9pZCBz
ZXROYW1lZENvbG9yKGNvbnN0IFN0cmluZyYpOwoKICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsaWQ7IH0KCiAgICBib29sIGhhc0FscGhhKCkgY29uc3QgeyByZXR1cm4gYWxw
aGEoKSA8IDI1NTsgfQoKICAgIGludCByZWQoKSBjb25zdCB7IHJldHVybiByZWRDaGFubmVsKG1f
Y29sb3IpOyB9CiAgICBpbnQgZ3JlZW4oKSBjb25zdCB7IHJldHVybiBncmVlbkNoYW5uZWwobV9j
b2xvcik7IH0KICAgIGludCBibHVlKCkgY29uc3QgeyByZXR1cm4gYmx1ZUNoYW5uZWwobV9jb2xv
cik7IH0KICAgIGludCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIGFscGhhQ2hhbm5lbChtX2NvbG9y
KTsgfQoKICAgIFJHQkEzMiByZ2IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAgICB2b2lk
IHNldFJHQihpbnQgciwgaW50IGcsIGludCBiKSB7IG1fY29sb3IgPSBtYWtlUkdCKHIsIGcsIGIp
OyBtX3ZhbGlkID0gdHJ1ZTsgfQogICAgdm9pZCBzZXRSR0IoUkdCQTMyIHJnYikgeyBtX2NvbG9y
ID0gcmdiOyBtX3ZhbGlkID0gdHJ1ZTsgfQogICAgdm9pZCBnZXRSR0JBKGZsb2F0JiByLCBmbG9h
dCYgZywgZmxvYXQmIGIsIGZsb2F0JiBhKSBjb25zdDsKICAgIHZvaWQgZ2V0UkdCQShkb3VibGUm
IHIsIGRvdWJsZSYgZywgZG91YmxlJiBiLCBkb3VibGUmIGEpIGNvbnN0OwogICAgdm9pZCBnZXRI
U0woZG91YmxlJiBoLCBkb3VibGUmIHMsIGRvdWJsZSYgbCkgY29uc3Q7CgogICAgQ29sb3IgbGln
aHQoKSBjb25zdDsKICAgIENvbG9yIGRhcmsoKSBjb25zdDsKCgogICAgQ29sb3IgYmxlbmQoY29u
c3QgQ29sb3ImKSBjb25zdDsKICAgIENvbG9yIGJsZW5kV2l0aFdoaXRlKCkgY29uc3Q7CgoKICAg
IENvbG9yKGNvbnN0IFFDb2xvciYpOwogICAgb3BlcmF0b3IgUUNvbG9yKCkgY29uc3Q7CiMgMTU2
ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIgogICAg
c3RhdGljIGJvb2wgcGFyc2VIZXhDb2xvcihjb25zdCBTdHJpbmcmIG5hbWUsIFJHQkEzMiYgcmdi
KTsKICAgIHN0YXRpYyBib29sIHBhcnNlSGV4Q29sb3IoY29uc3QgVUNoYXIqIG5hbWUsIHVuc2ln
bmVkIGxlbmd0aCwgUkdCQTMyJiByZ2IpOwoKICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgYmxhY2sg
PSAweEZGMDAwMDAwOwogICAgc3RhdGljIGNvbnN0IFJHQkEzMiB3aGl0ZSA9IDB4RkZGRkZGRkY7
CiAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGRhcmtHcmF5ID0gMHhGRjgwODA4MDsKICAgIHN0YXRp
YyBjb25zdCBSR0JBMzIgZ3JheSA9IDB4RkZBMEEwQTA7CiAgICBzdGF0aWMgY29uc3QgUkdCQTMy
IGxpZ2h0R3JheSA9IDB4RkZDMEMwQzA7CiAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHRyYW5zcGFy
ZW50ID0gMHgwMDAwMDAwMDsKCnByaXZhdGU6CiAgICBSR0JBMzIgbV9jb2xvcjsKICAgIGJvb2wg
bV92YWxpZDsKfTsKCmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0
IENvbG9yJiBiKQp7CiAgICByZXR1cm4gYS5yZ2IoKSA9PSBiLnJnYigpICYmIGEuaXNWYWxpZCgp
ID09IGIuaXNWYWxpZCgpOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbG9yJiBh
LCBjb25zdCBDb2xvciYgYikKewogICAgcmV0dXJuICEoYSA9PSBiKTsKfQoKQ29sb3IgY29sb3JG
cm9tUHJlbXVsdGlwbGllZEFSR0IodW5zaWduZWQpOwp1bnNpZ25lZCBwcmVtdWx0aXBsaWVkQVJH
QkZyb21Db2xvcihjb25zdCBDb2xvciYpOwoKCgoKCn0KIyAzNCAiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NVGltZVN0YW1wLmgiIDEKIyAzMiAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0RPTVRp
bWVTdGFtcC5oIgojZGVmaW5lIERPTVRpbWVTdGFtcF9oIAoKbmFtZXNwYWNlIFdlYkNvcmUgewoK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9NVGltZVN0YW1wOwoKaW5saW5lIERPTVRpbWVT
dGFtcCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKGRvdWJsZSBzZWNvbmRzKQp7CiAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RE9NVGltZVN0YW1wPihzZWNvbmRzICogMTAwMC4wKTsKfQoKaW5s
aW5lIGRvdWJsZSBjb252ZXJ0RE9NVGltZVN0YW1wVG9TZWNvbmRzKERPTVRpbWVTdGFtcCBtaWxs
aXNlY29uZHMpCnsKICAgIHJldHVybiBtaWxsaXNlY29uZHMgLyAxMDAwLjA7Cn0KCn0KIyAzNSAi
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgiIDIKIyAxICIuLi8uLi8uLi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUaW1pbmcuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUaW1pbmcuaCIKI2RlZmluZSBEb2N1bWVudFRpbWluZ19o
IAoKbmFtZXNwYWNlIFdlYkNvcmUgewoKc3RydWN0IERvY3VtZW50VGltaW5nIHsKICAgIERvY3Vt
ZW50VGltaW5nKCkKICAgICAgICA6IGRvbUxvYWRpbmcoMC4wKQogICAgICAgICwgZG9tSW50ZXJh
Y3RpdmUoMC4wKQogICAgICAgICwgZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQoMC4wKQogICAg
ICAgICwgZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKDAuMCkKICAgICAgICAsIGRvbUNvbXBsZXRl
KDAuMCkKICAgIHsKICAgIH0KCiAgICBkb3VibGUgZG9tTG9hZGluZzsKICAgIGRvdWJsZSBkb21J
bnRlcmFjdGl2ZTsKICAgIGRvdWJsZSBkb21Db250ZW50TG9hZGVkRXZlbnRTdGFydDsKICAgIGRv
dWJsZSBkb21Db250ZW50TG9hZGVkRXZlbnRFbmQ7CiAgICBkb3VibGUgZG9tQ29tcGxldGU7Cn07
Cgp9CiMgMzYgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIiAyCiMgMSAi
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaCIgMQojIDMyICIuLi8uLi8uLi9T
b3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oIgojZGVmaW5lIEljb25VUkxfaCAKCiMgMSAiLi4v
Li4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oIiAxCiMgMjcgIi4uLy4uLy4uL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaCIKI2RlZmluZSBLVVJMX2ggCgojIDEgIi4uLy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1TdHJpbmcuaCIgMQojIDIz
ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3RyaW5nLmgi
CiNkZWZpbmUgUGxhdGZvcm1TdHJpbmdfaCAKCgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIiAxCiMgMjMgIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaCIKI2RlZmluZSBXVEZTdHJpbmdfaCAK
CgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaCIgMQojIDI0ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oIgojZGVmaW5lIFN0cmluZ0ltcGxfaCAKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvQVNDSUlDVHlwZS5oIiAxCiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvQVNDSUlDVHlwZS5oIgojZGVmaW5lIFdURl9BU0NJSUNUeXBlX2gg
CiMgNDQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQVNDSUlDVHlwZS5oIgpu
YW1lc3BhY2UgV1RGIHsKCiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJKGNoYXIgYykgeyByZXR1cm4g
IShjICYgfjB4N0YpOyB9CiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJKHVuc2lnbmVkIHNob3J0IGMp
IHsgcmV0dXJuICEoYyAmIH4weDdGKTsgfQoKICAgIGlubGluZSBib29sIGlzQVNDSUkod2NoYXJf
dCBjKSB7IHJldHVybiAhKGMgJiB+MHg3Rik7IH0KCiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJKGlu
dCBjKSB7IHJldHVybiAhKGMgJiB+MHg3Rik7IH0KICAgIGlubGluZSBib29sIGlzQVNDSUkodW5z
aWduZWQgYykgeyByZXR1cm4gIShjICYgfjB4N0YpOyB9CgogICAgaW5saW5lIGJvb2wgaXNBU0NJ
SUFscGhhKGNoYXIgYykgeyByZXR1cm4gKGMgfCAweDIwKSA+PSAnYScgJiYgKGMgfCAweDIwKSA8
PSAneic7IH0KICAgIGlubGluZSBib29sIGlzQVNDSUlBbHBoYSh1bnNpZ25lZCBzaG9ydCBjKSB7
IHJldHVybiAoYyB8IDB4MjApID49ICdhJyAmJiAoYyB8IDB4MjApIDw9ICd6JzsgfQoKICAgIGlu
bGluZSBib29sIGlzQVNDSUlBbHBoYSh3Y2hhcl90IGMpIHsgcmV0dXJuIChjIHwgMHgyMCkgPj0g
J2EnICYmIChjIHwgMHgyMCkgPD0gJ3onOyB9CgogICAgaW5saW5lIGJvb2wgaXNBU0NJSUFscGhh
KGludCBjKSB7IHJldHVybiAoYyB8IDB4MjApID49ICdhJyAmJiAoYyB8IDB4MjApIDw9ICd6Jzsg
fQogICAgaW5saW5lIGJvb2wgaXNBU0NJSUFscGhhKHVuc2lnbmVkIGMpIHsgcmV0dXJuIChjIHwg
MHgyMCkgPj0gJ2EnICYmIChjIHwgMHgyMCkgPD0gJ3onOyB9CgogICAgaW5saW5lIGJvb2wgaXNB
U0NJSUFscGhhbnVtZXJpYyhjaGFyIGMpIHsgcmV0dXJuIChjID49ICcwJyAmJiBjIDw9ICc5Jykg
fHwgKChjIHwgMHgyMCkgPj0gJ2EnICYmIChjIHwgMHgyMCkgPD0gJ3onKTsgfQogICAgaW5saW5l
IGJvb2wgaXNBU0NJSUFscGhhbnVtZXJpYyh1bnNpZ25lZCBzaG9ydCBjKSB7IHJldHVybiAoYyA+
PSAnMCcgJiYgYyA8PSAnOScpIHx8ICgoYyB8IDB4MjApID49ICdhJyAmJiAoYyB8IDB4MjApIDw9
ICd6Jyk7IH0KCiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGFudW1lcmljKHdjaGFyX3QgYykg
eyByZXR1cm4gKGMgPj0gJzAnICYmIGMgPD0gJzknKSB8fCAoKGMgfCAweDIwKSA+PSAnYScgJiYg
KGMgfCAweDIwKSA8PSAneicpOyB9CgogICAgaW5saW5lIGJvb2wgaXNBU0NJSUFscGhhbnVtZXJp
YyhpbnQgYykgeyByZXR1cm4gKGMgPj0gJzAnICYmIGMgPD0gJzknKSB8fCAoKGMgfCAweDIwKSA+
PSAnYScgJiYgKGMgfCAweDIwKSA8PSAneicpOyB9CiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJQWxw
aGFudW1lcmljKHVuc2lnbmVkIGMpIHsgcmV0dXJuIChjID49ICcwJyAmJiBjIDw9ICc5JykgfHwg
KChjIHwgMHgyMCkgPj0gJ2EnICYmIChjIHwgMHgyMCkgPD0gJ3onKTsgfQoKICAgIGlubGluZSBi
b29sIGlzQVNDSUlEaWdpdChjaGFyIGMpIHsgcmV0dXJuIChjID49ICcwJykgJiAoYyA8PSAnOScp
OyB9CiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJRGlnaXQodW5zaWduZWQgc2hvcnQgYykgeyByZXR1
cm4gKGMgPj0gJzAnKSAmIChjIDw9ICc5Jyk7IH0KCiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJRGln
aXQod2NoYXJfdCBjKSB7IHJldHVybiAoYyA+PSAnMCcpICYgKGMgPD0gJzknKTsgfQoKICAgIGlu
bGluZSBib29sIGlzQVNDSUlEaWdpdChpbnQgYykgeyByZXR1cm4gKGMgPj0gJzAnKSAmIChjIDw9
ICc5Jyk7IH0KICAgIGlubGluZSBib29sIGlzQVNDSUlEaWdpdCh1bnNpZ25lZCBjKSB7IHJldHVy
biAoYyA+PSAnMCcpICYgKGMgPD0gJzknKTsgfQoKICAgIGlubGluZSBib29sIGlzQVNDSUlIZXhE
aWdpdChjaGFyIGMpIHsgcmV0dXJuIChjID49ICcwJyAmJiBjIDw9ICc5JykgfHwgKChjIHwgMHgy
MCkgPj0gJ2EnICYmIChjIHwgMHgyMCkgPD0gJ2YnKTsgfQogICAgaW5saW5lIGJvb2wgaXNBU0NJ
SUhleERpZ2l0KHVuc2lnbmVkIHNob3J0IGMpIHsgcmV0dXJuIChjID49ICcwJyAmJiBjIDw9ICc5
JykgfHwgKChjIHwgMHgyMCkgPj0gJ2EnICYmIChjIHwgMHgyMCkgPD0gJ2YnKTsgfQoKICAgIGlu
bGluZSBib29sIGlzQVNDSUlIZXhEaWdpdCh3Y2hhcl90IGMpIHsgcmV0dXJuIChjID49ICcwJyAm
JiBjIDw9ICc5JykgfHwgKChjIHwgMHgyMCkgPj0gJ2EnICYmIChjIHwgMHgyMCkgPD0gJ2YnKTsg
fQoKICAgIGlubGluZSBib29sIGlzQVNDSUlIZXhEaWdpdChpbnQgYykgeyByZXR1cm4gKGMgPj0g
JzAnICYmIGMgPD0gJzknKSB8fCAoKGMgfCAweDIwKSA+PSAnYScgJiYgKGMgfCAweDIwKSA8PSAn
ZicpOyB9CiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJSGV4RGlnaXQodW5zaWduZWQgYykgeyByZXR1
cm4gKGMgPj0gJzAnICYmIGMgPD0gJzknKSB8fCAoKGMgfCAweDIwKSA+PSAnYScgJiYgKGMgfCAw
eDIwKSA8PSAnZicpOyB9CgogICAgaW5saW5lIGJvb2wgaXNBU0NJSU9jdGFsRGlnaXQoY2hhciBj
KSB7IHJldHVybiAoYyA+PSAnMCcpICYgKGMgPD0gJzcnKTsgfQogICAgaW5saW5lIGJvb2wgaXNB
U0NJSU9jdGFsRGlnaXQodW5zaWduZWQgc2hvcnQgYykgeyByZXR1cm4gKGMgPj0gJzAnKSAmIChj
IDw9ICc3Jyk7IH0KCiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJT2N0YWxEaWdpdCh3Y2hhcl90IGMp
IHsgcmV0dXJuIChjID49ICcwJykgJiAoYyA8PSAnNycpOyB9CgogICAgaW5saW5lIGJvb2wgaXNB
U0NJSU9jdGFsRGlnaXQoaW50IGMpIHsgcmV0dXJuIChjID49ICcwJykgJiAoYyA8PSAnNycpOyB9
CiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJT2N0YWxEaWdpdCh1bnNpZ25lZCBjKSB7IHJldHVybiAo
YyA+PSAnMCcpICYgKGMgPD0gJzcnKTsgfQoKICAgIGlubGluZSBib29sIGlzQVNDSUlMb3dlcihj
aGFyIGMpIHsgcmV0dXJuIGMgPj0gJ2EnICYmIGMgPD0gJ3onOyB9CiAgICBpbmxpbmUgYm9vbCBp
c0FTQ0lJTG93ZXIodW5zaWduZWQgc2hvcnQgYykgeyByZXR1cm4gYyA+PSAnYScgJiYgYyA8PSAn
eic7IH0KCiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJTG93ZXIod2NoYXJfdCBjKSB7IHJldHVybiBj
ID49ICdhJyAmJiBjIDw9ICd6JzsgfQoKICAgIGlubGluZSBib29sIGlzQVNDSUlMb3dlcihpbnQg
YykgeyByZXR1cm4gYyA+PSAnYScgJiYgYyA8PSAneic7IH0KICAgIGlubGluZSBib29sIGlzQVND
SUlMb3dlcih1bnNpZ25lZCBjKSB7IHJldHVybiBjID49ICdhJyAmJiBjIDw9ICd6JzsgfQoKICAg
IGlubGluZSBib29sIGlzQVNDSUlVcHBlcihjaGFyIGMpIHsgcmV0dXJuIGMgPj0gJ0EnICYmIGMg
PD0gJ1onOyB9CiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJVXBwZXIodW5zaWduZWQgc2hvcnQgYykg
eyByZXR1cm4gYyA+PSAnQScgJiYgYyA8PSAnWic7IH0KCiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJ
VXBwZXIod2NoYXJfdCBjKSB7IHJldHVybiBjID49ICdBJyAmJiBjIDw9ICdaJzsgfQoKICAgIGlu
bGluZSBib29sIGlzQVNDSUlVcHBlcihpbnQgYykgeyByZXR1cm4gYyA+PSAnQScgJiYgYyA8PSAn
Wic7IH0KICAgIGlubGluZSBib29sIGlzQVNDSUlVcHBlcih1bnNpZ25lZCBjKSB7IHJldHVybiBj
ID49ICdBJyAmJiBjIDw9ICdaJzsgfQojIDEyMyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9BU0NJSUNUeXBlLmgiCiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJU3BhY2UoY2hhciBj
KSB7IHJldHVybiBjIDw9ICcgJyAmJiAoYyA9PSAnICcgfHwgKGMgPD0gMHhEICYmIGMgPj0gMHg5
KSk7IH0KICAgIGlubGluZSBib29sIGlzQVNDSUlTcGFjZSh1bnNpZ25lZCBzaG9ydCBjKSB7IHJl
dHVybiBjIDw9ICcgJyAmJiAoYyA9PSAnICcgfHwgKGMgPD0gMHhEICYmIGMgPj0gMHg5KSk7IH0K
CiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJU3BhY2Uod2NoYXJfdCBjKSB7IHJldHVybiBjIDw9ICcg
JyAmJiAoYyA9PSAnICcgfHwgKGMgPD0gMHhEICYmIGMgPj0gMHg5KSk7IH0KCiAgICBpbmxpbmUg
Ym9vbCBpc0FTQ0lJU3BhY2UoaW50IGMpIHsgcmV0dXJuIGMgPD0gJyAnICYmIChjID09ICcgJyB8
fCAoYyA8PSAweEQgJiYgYyA+PSAweDkpKTsgfQogICAgaW5saW5lIGJvb2wgaXNBU0NJSVNwYWNl
KHVuc2lnbmVkIGMpIHsgcmV0dXJuIGMgPD0gJyAnICYmIChjID09ICcgJyB8fCAoYyA8PSAweEQg
JiYgYyA+PSAweDkpKTsgfQoKICAgIGlubGluZSBjaGFyIHRvQVNDSUlMb3dlcihjaGFyIGMpIHsg
cmV0dXJuIGMgfCAoKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSA8PCA1KTsgfQogICAgaW5saW5lIHVu
c2lnbmVkIHNob3J0IHRvQVNDSUlMb3dlcih1bnNpZ25lZCBzaG9ydCBjKSB7IHJldHVybiBjIHwg
KChjID49ICdBJyAmJiBjIDw9ICdaJykgPDwgNSk7IH0KCiAgICBpbmxpbmUgd2NoYXJfdCB0b0FT
Q0lJTG93ZXIod2NoYXJfdCBjKSB7IHJldHVybiBjIHwgKChjID49ICdBJyAmJiBjIDw9ICdaJykg
PDwgNSk7IH0KCiAgICBpbmxpbmUgaW50IHRvQVNDSUlMb3dlcihpbnQgYykgeyByZXR1cm4gYyB8
ICgoYyA+PSAnQScgJiYgYyA8PSAnWicpIDw8IDUpOyB9CiAgICBpbmxpbmUgdW5zaWduZWQgdG9B
U0NJSUxvd2VyKHVuc2lnbmVkIGMpIHsgcmV0dXJuIGMgfCAoKGMgPj0gJ0EnICYmIGMgPD0gJ1on
KSA8PCA1KTsgfQoKCiAgICBpbmxpbmUgY2hhciB0b0FTQ0lJVXBwZXIoY2hhciBjKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxjaGFyPihjICYgfigoYyA+PSAnYScgJiYgYyA8PSAneicpIDw8IDUpKTsg
fQogICAgaW5saW5lIHVuc2lnbmVkIHNob3J0IHRvQVNDSUlVcHBlcih1bnNpZ25lZCBzaG9ydCBj
KSB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oYyAmIH4oKGMgPj0gJ2EnICYm
IGMgPD0gJ3onKSA8PCA1KSk7IH0KCiAgICBpbmxpbmUgd2NoYXJfdCB0b0FTQ0lJVXBwZXIod2No
YXJfdCBjKSB7IHJldHVybiBzdGF0aWNfY2FzdDx3Y2hhcl90PihjICYgfigoYyA+PSAnYScgJiYg
YyA8PSAneicpIDw8IDUpKTsgfQoKICAgIGlubGluZSBpbnQgdG9BU0NJSVVwcGVyKGludCBjKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGMgJiB+KChjID49ICdhJyAmJiBjIDw9ICd6JykgPDwg
NSkpOyB9CiAgICBpbmxpbmUgdW5zaWduZWQgdG9BU0NJSVVwcGVyKHVuc2lnbmVkIGMpIHsgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjICYgfigoYyA+PSAnYScgJiYgYyA8PSAneicpIDw8
IDUpKTsgfQoKICAgIGlubGluZSBpbnQgdG9BU0NJSUhleFZhbHVlKGNoYXIgYykgeyBkbyBpZiAo
IShpc0FTQ0lJSGV4RGlnaXQoYykpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQVNDSUlDVHlwZS5oIiwgMTQ4LCBfX1BSRVRU
WV9GVU5DVElPTl9fLCAiaXNBU0NJSUhleERpZ2l0KGMpIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIGMgPCAnQScgPyBjIC0gJzAn
IDogKGMgLSAnQScgKyAxMCkgJiAweEY7IH0KICAgIGlubGluZSBpbnQgdG9BU0NJSUhleFZhbHVl
KGNoYXIgdXBwZXJWYWx1ZSwgY2hhciBsb3dlclZhbHVlKSB7IGRvIGlmICghKGlzQVNDSUlIZXhE
aWdpdCh1cHBlclZhbHVlKSAmJiBpc0FTQ0lJSGV4RGlnaXQobG93ZXJWYWx1ZSkpKSB7IFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
QVNDSUlDVHlwZS5oIiwgMTQ5LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNBU0NJSUhleERpZ2l0
KHVwcGVyVmFsdWUpICYmIGlzQVNDSUlIZXhEaWdpdChsb3dlclZhbHVlKSIpOyBkbyB7IFdURlJl
cG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9p
ZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHJldHVybiAoKHRvQVND
SUlIZXhWYWx1ZSh1cHBlclZhbHVlKSA8PCA0KSAmIDB4RjApIHwgdG9BU0NJSUhleFZhbHVlKGxv
d2VyVmFsdWUpOyB9CiAgICBpbmxpbmUgaW50IHRvQVNDSUlIZXhWYWx1ZSh1bnNpZ25lZCBzaG9y
dCBjKSB7IGRvIGlmICghKGlzQVNDSUlIZXhEaWdpdChjKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBlLmgi
LCAxNTAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpc0FTQ0lJSGV4RGlnaXQoYykiKTsgZG8geyBX
VEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAo
KHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOyByZXR1cm4gYyA8
ICdBJyA/IGMgLSAnMCcgOiAoYyAtICdBJyArIDEwKSAmIDB4RjsgfQoKICAgIGlubGluZSBpbnQg
dG9BU0NJSUhleFZhbHVlKHdjaGFyX3QgYykgeyBkbyBpZiAoIShpc0FTQ0lJSGV4RGlnaXQoYykp
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvQVNDSUlDVHlwZS5oIiwgMTUyLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNBU0NJ
SUhleERpZ2l0KGMpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsgcmV0dXJuIGMgPCAnQScgPyBjIC0gJzAnIDogKGMgLSAnQScgKyAxMCkgJiAw
eEY7IH0KCiAgICBpbmxpbmUgaW50IHRvQVNDSUlIZXhWYWx1ZShpbnQgYykgeyBkbyBpZiAoIShp
c0FTQ0lJSGV4RGlnaXQoYykpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQVNDSUlDVHlwZS5oIiwgMTU0LCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAiaXNBU0NJSUhleERpZ2l0KGMpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNl
KCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIGMgPCAnQScgPyBjIC0gJzAnIDog
KGMgLSAnQScgKyAxMCkgJiAweEY7IH0KICAgIGlubGluZSBpbnQgdG9BU0NJSUhleFZhbHVlKHVu
c2lnbmVkIGMpIHsgZG8gaWYgKCEoaXNBU0NJSUhleERpZ2l0KGMpKSkgeyBXVEZSZXBvcnRBc3Nl
cnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0FTQ0lJQ1R5
cGUuaCIsIDE1NSwgX19QUkVUVFlfRlVOQ1RJT05fXywgImlzQVNDSUlIZXhEaWdpdChjKSIpOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHJldHVy
biBjIDwgJ0EnID8gYyAtICcwJyA6IChjIC0gJ0EnICsgMTApICYgMHhGOyB9CgogICAgaW5saW5l
IGNoYXIgbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoY2hhciBjKSB7IGNoYXIgbmliYmxlID0g
YyAmIDB4RjsgcmV0dXJuIG5pYmJsZSA8IDEwID8gJzAnICsgbmliYmxlIDogJ0EnICsgbmliYmxl
IC0gMTA7IH0KICAgIGlubGluZSBjaGFyIHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGNoYXIg
YykgeyBjaGFyIG5pYmJsZSA9IChjID4+IDQpICYgMHhGOyByZXR1cm4gbmliYmxlIDwgMTAgPyAn
MCcgKyBuaWJibGUgOiAnQScgKyBuaWJibGUgLSAxMDsgfQoKICAgIGlubGluZSBib29sIGlzQVND
SUlQcmludGFibGUoY2hhciBjKSB7IHJldHVybiBjID49ICcgJyAmJiBjIDw9ICd+JzsgfQogICAg
aW5saW5lIGJvb2wgaXNBU0NJSVByaW50YWJsZSh1bnNpZ25lZCBzaG9ydCBjKSB7IHJldHVybiBj
ID49ICcgJyAmJiBjIDw9ICd+JzsgfQoKICAgIGlubGluZSBib29sIGlzQVNDSUlQcmludGFibGUo
d2NoYXJfdCBjKSB7IHJldHVybiBjID49ICcgJyAmJiBjIDw9ICd+JzsgfQoKICAgIGlubGluZSBi
b29sIGlzQVNDSUlQcmludGFibGUoaW50IGMpIHsgcmV0dXJuIGMgPj0gJyAnICYmIGMgPD0gJ34n
OyB9CiAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJUHJpbnRhYmxlKHVuc2lnbmVkIGMpIHsgcmV0dXJu
IGMgPj0gJyAnICYmIGMgPD0gJ34nOyB9Cn0KCnVzaW5nIFdURjo6aXNBU0NJSTsKdXNpbmcgV1RG
Ojppc0FTQ0lJQWxwaGE7CnVzaW5nIFdURjo6aXNBU0NJSUFscGhhbnVtZXJpYzsKdXNpbmcgV1RG
Ojppc0FTQ0lJRGlnaXQ7CnVzaW5nIFdURjo6aXNBU0NJSUhleERpZ2l0Owp1c2luZyBXVEY6Omlz
QVNDSUlMb3dlcjsKdXNpbmcgV1RGOjppc0FTQ0lJT2N0YWxEaWdpdDsKdXNpbmcgV1RGOjppc0FT
Q0lJUHJpbnRhYmxlOwp1c2luZyBXVEY6OmlzQVNDSUlTcGFjZTsKdXNpbmcgV1RGOjppc0FTQ0lJ
VXBwZXI7CnVzaW5nIFdURjo6dG9BU0NJSUhleFZhbHVlOwp1c2luZyBXVEY6OnRvQVNDSUlMb3dl
cjsKdXNpbmcgV1RGOjp0b0FTQ0lJVXBwZXI7CnVzaW5nIFdURjo6bG93ZXJOaWJibGVUb0FTQ0lJ
SGV4RGlnaXQ7CnVzaW5nIFdURjo6dXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQ7CiMgMjggIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgiIDIKIyAx
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Nyb3NzVGhyZWFkUmVmQ291bnRl
ZC5oIiAxCiMgMzMgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3Jvc3NUaHJl
YWRSZWZDb3VudGVkLmgiCiNkZWZpbmUgQ3Jvc3NUaHJlYWRSZWZDb3VudGVkX2ggCgoKIyAxICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaCIgMQojIDIyICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaCIKI2RlZmluZSBS
ZWZDb3VudGVkX2ggCgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgiIDEKIyAzMiAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgiCiNkZWZpbmUgVGhyZWFk
UmVzdHJpY3Rpb25WZXJpZmllcl9oIAojIDQ0ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCIKbmFtZXNwYWNlIFdURiB7CgoKCgoK
Y2xhc3MgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciB7CnB1YmxpYzoKICAgIFRocmVhZFJlc3Ry
aWN0aW9uVmVyaWZpZXIoKQogICAgICAgIDogbV9tb2RlKFNpbmdsZVRocmVhZFZlcmlmaWNhdGlv
bk1vZGUpCiAgICAgICAgLCBtX3NoYXJlZChmYWxzZSkKICAgICAgICAsIG1fb3duaW5nVGhyZWFk
KDApCiAgICAgICAgLCBtX211dGV4KDApCgogICAgICAgICwgbV9vd25pbmdRdWV1ZSgwKQoKICAg
IHsKICAgIH0KCgogICAgflRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIoKQogICAgewogICAgICAg
IGlmIChtX293bmluZ1F1ZXVlKQogICAgICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fb3duaW5n
UXVldWUpOwogICAgfQoKCiAgICB2b2lkIHNldE11dGV4TW9kZShNdXRleCYgbXV0ZXgpCiAgICB7
CiAgICAgICAgZG8gaWYgKCEobV9tb2RlID09IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUg
fHwgKG1fbW9kZSA9PSBNdXRleFZlcmlmaWNhdGlvbk1vZGUgJiYgJm11dGV4ID09IG1fbXV0ZXgp
KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCIsIDczLCBfX1BSRVRUWV9GVU5D
VElPTl9fLCAibV9tb2RlID09IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUgfHwgKG1fbW9k
ZSA9PSBNdXRleFZlcmlmaWNhdGlvbk1vZGUgJiYgJm11dGV4ID09IG1fbXV0ZXgpIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBt
X21vZGUgPSBNdXRleFZlcmlmaWNhdGlvbk1vZGU7CiAgICAgICAgbV9tdXRleCA9ICZtdXRleDsK
ICAgIH0KCgogICAgdm9pZCBzZXREaXNwYXRjaFF1ZXVlTW9kZShkaXNwYXRjaF9xdWV1ZV90IHF1
ZXVlKQogICAgewogICAgICAgIGRvIGlmICghKG1fbW9kZSA9PSBTaW5nbGVUaHJlYWRWZXJpZmlj
YXRpb25Nb2RlKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCIsIDgxLCBfX1BS
RVRUWV9GVU5DVElPTl9fLCAibV9tb2RlID09IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUi
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwog
ICAgICAgIG1fbW9kZSA9IFNpbmdsZURpc3BhdGNoUXVldWVWZXJpZmljYXRpb25Nb2RlOwogICAg
ICAgIG1fb3duaW5nUXVldWUgPSBxdWV1ZTsKICAgICAgICBkaXNwYXRjaF9yZXRhaW4obV9vd25p
bmdRdWV1ZSk7CiAgICB9CgoKICAgIHZvaWQgdHVybk9mZlZlcmlmaWNhdGlvbigpCiAgICB7CiAg
ICAgICAgZG8gaWYgKCEobV9tb2RlID09IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUpKSB7
IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIiwgOTAsIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJtX21vZGUgPT0gU2luZ2xlVGhyZWFkVmVyaWZpY2F0aW9uTW9kZSIpOyBkbyB7IFdURlJl
cG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9p
ZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgbV9tb2Rl
ID0gTm9WZXJpZmljYXRpb25Nb2RlOwogICAgfQoKCiAgICB2b2lkIHNldFNoYXJlZChib29sIHNo
YXJlZCkKICAgIHsKICAgICAgICBib29sIHByZXZpb3VzbHlTaGFyZWQgPSBtX3NoYXJlZDsKICAg
ICAgICBtX3NoYXJlZCA9IHNoYXJlZDsKCiAgICAgICAgaWYgKCFtX3NoYXJlZCkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgIGNhc2UgU2luZ2xl
VGhyZWFkVmVyaWZpY2F0aW9uTW9kZToKICAgICAgICAgICAgZG8gaWYgKCEoc2hhcmVkICE9IHBy
ZXZpb3VzbHlTaGFyZWQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIiwgMTA1
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAic2hhcmVkICE9IHByZXZpb3VzbHlTaGFyZWQiKTsgZG8g
eyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAw
OyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwoKICAgICAg
ICAgICAgbV9vd25pbmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CiAgICAgICAgICAgIHJldHVy
bjsKCgogICAgICAgIGNhc2UgU2luZ2xlRGlzcGF0Y2hRdWV1ZVZlcmlmaWNhdGlvbk1vZGU6Cgog
ICAgICAgIGNhc2UgTXV0ZXhWZXJpZmljYXRpb25Nb2RlOgogICAgICAgIGNhc2UgTm9WZXJpZmlj
YXRpb25Nb2RlOgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGRvIHsgV1RG
UmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgiLCAxMTcsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
IDApOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFk
YmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7
CiAgICB9CgoKICAgIGJvb2wgaXNTYWZlVG9Vc2UoKSBjb25zdAogICAgewogICAgICAgIGlmICgh
bV9zaGFyZWQpCiAgICAgICAgICAgIHJldHVybiB0cnVlOwoKICAgICAgICBzd2l0Y2ggKG1fbW9k
ZSkgewogICAgICAgIGNhc2UgU2luZ2xlVGhyZWFkVmVyaWZpY2F0aW9uTW9kZToKICAgICAgICAg
ICAgcmV0dXJuIG1fb3duaW5nVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKTsKCiAgICAgICAgY2Fz
ZSBNdXRleFZlcmlmaWNhdGlvbk1vZGU6CiAgICAgICAgICAgIGlmICghbV9tdXRleC0+dHJ5TG9j
aygpKQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIG1fbXV0ZXgtPnVu
bG9jaygpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CgoKICAgICAgICBjYXNlIFNpbmdsZURp
c3BhdGNoUXVldWVWZXJpZmljYXRpb25Nb2RlOgogICAgICAgICAgICByZXR1cm4gbV9vd25pbmdR
dWV1ZSA9PSBkaXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpOwoKCiAgICAgICAgY2FzZSBOb1Zl
cmlmaWNhdGlvbk1vZGU6CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAg
ICBkbyB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIiwgMTQ0LCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAwKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKcHJpdmF0ZToKICAgIGVudW0g
VmVyaWZpY2F0aW9uTW9kZSB7CiAgICAgICAgU2luZ2xlVGhyZWFkVmVyaWZpY2F0aW9uTW9kZSwK
ICAgICAgICBNdXRleFZlcmlmaWNhdGlvbk1vZGUsCiAgICAgICAgTm9WZXJpZmljYXRpb25Nb2Rl
LAoKICAgICAgICBTaW5nbGVEaXNwYXRjaFF1ZXVlVmVyaWZpY2F0aW9uTW9kZSwKCiAgICB9OwoK
ICAgIFZlcmlmaWNhdGlvbk1vZGUgbV9tb2RlOwogICAgYm9vbCBtX3NoYXJlZDsKCgogICAgVGhy
ZWFkSWRlbnRpZmllciBtX293bmluZ1RocmVhZDsKCgogICAgTXV0ZXgqIG1fbXV0ZXg7CgoKCiAg
ICBkaXNwYXRjaF9xdWV1ZV90IG1fb3duaW5nUXVldWU7Cgp9OwoKfQojIDI3ICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaCIgMgoKCiMgMSAiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9VbnVzZWRQYXJhbS5oIiAxCiMgMjIgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVW51c2VkUGFyYW0uaCIKI2RlZmluZSBXVEZfVW51
c2VkUGFyYW1faCAKIyAzNCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9VbnVz
ZWRQYXJhbS5oIgojZGVmaW5lIFVOVVNFRF9QQVJBTSh2YXJpYWJsZSkgKHZvaWQpdmFyaWFibGUK
IyAzMCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgiIDIK
Cm5hbWVzcGFjZSBXVEYgewoKCgoKY2xhc3MgUmVmQ291bnRlZEJhc2UgewpwdWJsaWM6CiAgICB2
b2lkIHJlZigpCiAgICB7CgoKCgoKCgogICAgICAgIGlmIChtX3JlZkNvdW50ID09IDEpCiAgICAg
ICAgICAgIG1fdmVyaWZpZXIuc2V0U2hhcmVkKHRydWUpOwoKCgoKICAgICAgICBkbyBpZiAoISht
X3ZlcmlmaWVyLmlzU2FmZVRvVXNlKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oIiwgNTMsIF9fUFJF
VFRZX0ZVTkNUSU9OX18sICJtX3ZlcmlmaWVyLmlzU2FmZVRvVXNlKCkiKTsgZG8geyBXVEZSZXBv
cnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQo
KikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIGlmICgh
KCFtX2RlbGV0aW9uSGFzQmVndW4pKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oIiwgNTQsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sICIhbV9kZWxldGlvbkhhc0JlZ3VuIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAoISghbV9hZG9w
dGlvbklzUmVxdWlyZWQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oIiwgNTUsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sICIhbV9hZG9wdGlvbklzUmVxdWlyZWQiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2Uo
KTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9
IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICsrbV9yZWZDb3VudDsKICAgIH0K
CiAgICBib29sIGhhc09uZVJlZigpIGNvbnN0CiAgICB7CiAgICAgICAgZG8gaWYgKCEobV92ZXJp
Zmllci5pc1NhZmVUb1VzZSgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaCIsIDYxLCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAibV92ZXJpZmllci5pc1NhZmVUb1VzZSgpIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAoISghbV9k
ZWxldGlvbkhhc0JlZ3VuKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaCIsIDYyLCBfX1BSRVRUWV9GVU5D
VElPTl9fLCAiIW1fZGVsZXRpb25IYXNCZWd1biIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgp
OyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0g
d2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQgPT0g
MTsKICAgIH0KCiAgICBpbnQgcmVmQ291bnQoKSBjb25zdAogICAgewogICAgICAgIGRvIGlmICgh
KG1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgiLCA2OCwgX19Q
UkVUVFlfRlVOQ1RJT05fXywgIm1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSIpOyBkbyB7IFdURlJl
cG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9p
ZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJu
IG1fcmVmQ291bnQ7CiAgICB9CgogICAgdm9pZCBzZXRNdXRleEZvclZlcmlmaWVyKE11dGV4Jik7
CgoKICAgIHZvaWQgc2V0RGlzcGF0Y2hRdWV1ZUZvclZlcmlmaWVyKGRpc3BhdGNoX3F1ZXVlX3Qp
OwoKCgoKCiAgICB2b2lkIGRlcHJlY2F0ZWRUdXJuT2ZmVmVyaWZpZXIoKQogICAgewoKICAgICAg
ICBtX3ZlcmlmaWVyLnR1cm5PZmZWZXJpZmljYXRpb24oKTsKCiAgICB9CgogICAgdm9pZCByZWxh
eEFkb3B0aW9uUmVxdWlyZW1lbnQoKQogICAgewoKICAgICAgICBkbyBpZiAoISghbV9kZWxldGlv
bkhhc0JlZ3VuKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaCIsIDkxLCBfX1BSRVRUWV9GVU5DVElPTl9f
LCAiIW1fZGVsZXRpb25IYXNCZWd1biIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8gaWYgKCEobV9hZG9wdGlvbklzUmVxdWly
ZWQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUmVmQ291bnRlZC5oIiwgOTIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX2Fk
b3B0aW9uSXNSZXF1aXJlZCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgbV9hZG9wdGlvbklzUmVxdWlyZWQgPSBmYWxzZTsKCiAg
ICB9CgoKICAgIGNvbnN0IGludCogYWRkcmVzc09mQ291bnQoKSBjb25zdAogICAgewogICAgICAg
IHJldHVybiAmbV9yZWZDb3VudDsKICAgIH0KCnByb3RlY3RlZDoKICAgIFJlZkNvdW50ZWRCYXNl
KCkKICAgICAgICA6IG1fcmVmQ291bnQoMSkKCiAgICAgICAgLCBtX2RlbGV0aW9uSGFzQmVndW4o
ZmFsc2UpCiAgICAgICAgLCBtX2Fkb3B0aW9uSXNSZXF1aXJlZCh0cnVlKQoKICAgIHsKICAgIH0K
CiAgICB+UmVmQ291bnRlZEJhc2UoKQogICAgewogICAgICAgIGRvIGlmICghKG1fZGVsZXRpb25I
YXNCZWd1bikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgiLCAxMTUsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICJtX2RlbGV0aW9uSGFzQmVndW4iKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKCFtX2Fkb3B0aW9uSXNSZXF1aXJl
ZCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgiLCAxMTYsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbV9h
ZG9wdGlvbklzUmVxdWlyZWQiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKiko
dWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxz
ZSk7IH0gd2hpbGUgKDApOwogICAgfQoKCiAgICBib29sIGRlcmVmQmFzZSgpCiAgICB7CiAgICAg
ICAgZG8gaWYgKCEobV92ZXJpZmllci5pc1NhZmVUb1VzZSgpKSkgeyBXVEZSZXBvcnRBc3NlcnRp
b25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQu
aCIsIDEyMiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSIp
OyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVl
ZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgZG8gaWYgKCEoIW1fZGVsZXRpb25IYXNCZWd1bikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgi
LCAxMjMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbV9kZWxldGlvbkhhc0JlZ3VuIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBk
byBpZiAoISghbV9hZG9wdGlvbklzUmVxdWlyZWQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oIiwgMTI0
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIW1fYWRvcHRpb25Jc1JlcXVpcmVkIik7IGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgZG8g
aWYgKCEobV9yZWZDb3VudCA+IDApKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oIiwgMTI2LCBfX1BSRVRU
WV9GVU5DVElPTl9fLCAibV9yZWZDb3VudCA+IDAiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2Uo
KTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9
IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGlmIChtX3JlZkNvdW50ID09IDEp
IHsKCiAgICAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CgogICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC0tbV9yZWZDb3VudDsKCgoKICAgICAgICBp
ZiAobV9yZWZDb3VudCA9PSAxKQogICAgICAgICAgICBtX3ZlcmlmaWVyLnNldFNoYXJlZChmYWxz
ZSk7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCgogICAgYm9vbCBkZWxldGlvbkhhc0Jl
Z3VuKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9kZWxldGlvbkhhc0JlZ3VuOwogICAg
fQoKCnByaXZhdGU6CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgY2xhc3MgQ3Jvc3NU
aHJlYWRSZWZDb3VudGVkOwoKCiAgICBmcmllbmQgdm9pZCBhZG9wdGVkKFJlZkNvdW50ZWRCYXNl
Kik7CgoKICAgIGludCBtX3JlZkNvdW50OwoKICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuOwog
ICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJlZDsKICAgIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZp
ZXIgbV92ZXJpZmllcjsKCn07CgoKCmlubGluZSB2b2lkIGFkb3B0ZWQoUmVmQ291bnRlZEJhc2Uq
IG9iamVjdCkKewogICAgaWYgKCFvYmplY3QpCiAgICAgICAgcmV0dXJuOwogICAgZG8gaWYgKCEo
IW9iamVjdC0+bV9kZWxldGlvbkhhc0JlZ3VuKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJl
KCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaCIsIDE3Miwg
X19QUkVUVFlfRlVOQ1RJT05fXywgIiFvYmplY3QtPm1fZGVsZXRpb25IYXNCZWd1biIpOyBkbyB7
IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7
ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICBvYmpl
Y3QtPm1fYWRvcHRpb25Jc1JlcXVpcmVkID0gZmFsc2U7Cn0KCgoKdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgUmVmQ291bnRlZCA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSB7CiAgICBwcml2YXRl
OiBSZWZDb3VudGVkKGNvbnN0IFJlZkNvdW50ZWQmKTsgUmVmQ291bnRlZCYgb3BlcmF0b3I9KGNv
bnN0IFJlZkNvdW50ZWQmKTsgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lk
KiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkg
eyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9
IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVN
YWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IHJldHVybiBwOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZh
bGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3KTsgOjpXVEY6
OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHZvaWQq
IHAgPSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlk
YXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXdBcnJheSk7IHJl
dHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdE1h
bGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NO
ZXdBcnJheSk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBUaGlz
SXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKcHVibGljOgogICAgdm9pZCBk
ZXJlZigpCiAgICB7CiAgICAgICAgaWYgKGRlcmVmQmFzZSgpKQogICAgICAgICAgICBkZWxldGUg
c3RhdGljX2Nhc3Q8VCo+KHRoaXMpOwogICAgfQoKcHJvdGVjdGVkOgogICAgUmVmQ291bnRlZCgp
IHsgfQogICAgflJlZkNvdW50ZWQoKQogICAgewogICAgfQp9OwoKdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgUmVmQ291bnRlZEN1c3RvbUFsbG9jYXRlZCA6IHB1YmxpYyBSZWZDb3VudGVkQmFz
ZSB7CiAgICBwcml2YXRlOiBSZWZDb3VudGVkQ3VzdG9tQWxsb2NhdGVkKGNvbnN0IFJlZkNvdW50
ZWRDdXN0b21BbGxvY2F0ZWQmKTsgUmVmQ291bnRlZEN1c3RvbUFsbG9jYXRlZCYgb3BlcmF0b3I9
KGNvbnN0IFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWQmKTsKCnB1YmxpYzoKICAgIHZvaWQgZGVy
ZWYoKQogICAgewogICAgICAgIGlmIChkZXJlZkJhc2UoKSkKICAgICAgICAgICAgZGVsZXRlIHN0
YXRpY19jYXN0PFQqPih0aGlzKTsKICAgIH0KCnByb3RlY3RlZDoKICAgIH5SZWZDb3VudGVkQ3Vz
dG9tQWxsb2NhdGVkKCkKICAgIHsKICAgIH0KfTsKCgoKCmlubGluZSB2b2lkIFJlZkNvdW50ZWRC
YXNlOjpzZXRNdXRleEZvclZlcmlmaWVyKE11dGV4JiBtdXRleCkKewogICAgbV92ZXJpZmllci5z
ZXRNdXRleE1vZGUobXV0ZXgpOwp9CgoKCgoKCmlubGluZSB2b2lkIFJlZkNvdW50ZWRCYXNlOjpz
ZXREaXNwYXRjaFF1ZXVlRm9yVmVyaWZpZXIoZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSkKewogICAg
bV92ZXJpZmllci5zZXREaXNwYXRjaFF1ZXVlTW9kZShxdWV1ZSk7Cn0KCgoKfQoKdXNpbmcgV1RG
OjpSZWZDb3VudGVkOwp1c2luZyBXVEY6OlJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWQ7CiMgMzcg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3Jvc3NUaHJlYWRSZWZDb3VudGVk
LmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5o
IiAxCiMgMzggIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3Jvc3NUaHJlYWRS
ZWZDb3VudGVkLmgiIDIKCm5hbWVzcGFjZSBXVEYgewojIDUzICIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0Nyb3NzVGhyZWFkUmVmQ291bnRlZC5oIgogICAgdGVtcGxhdGU8Y2xh
c3MgVD4KICAgIGNsYXNzIENyb3NzVGhyZWFkUmVmQ291bnRlZCB7CiAgICAgICAgcHJpdmF0ZTog
Q3Jvc3NUaHJlYWRSZWZDb3VudGVkKGNvbnN0IENyb3NzVGhyZWFkUmVmQ291bnRlZCYpOyBDcm9z
c1RocmVhZFJlZkNvdW50ZWQmIG9wZXJhdG9yPShjb25zdCBDcm9zc1RocmVhZFJlZkNvdW50ZWQm
KTsKICAgIHB1YmxpYzoKICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDcm9zc1RocmVhZFJlZkNv
dW50ZWQ8VD4gPiBjcmVhdGUoVCogZGF0YSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ3Jvc3NUaHJlYWRSZWZDb3VudGVkPFQ+KGRhdGEsIDApKTsKICAgICAgICB9
CgoKICAgICAgICBQYXNzUmVmUHRyPENyb3NzVGhyZWFkUmVmQ291bnRlZDxUPiA+IGNyb3NzVGhy
ZWFkQ29weSgpOwoKICAgICAgICB2b2lkIHJlZigpOwogICAgICAgIHZvaWQgZGVyZWYoKTsKICAg
ICAgICBUKiByZWxlYXNlKCk7CgogICAgICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdAogICAgICAg
IHsKICAgICAgICAgICAgcmV0dXJuICFtX3JlZkNvdW50ZXIuaGFzT25lUmVmKCkgfHwgKG1fdGhy
ZWFkU2FmZVJlZkNvdW50ZXIgJiYgIW1fdGhyZWFkU2FmZVJlZkNvdW50ZXItPmhhc09uZVJlZigp
KTsKICAgICAgICB9CgogICAgcHJpdmF0ZToKICAgICAgICBDcm9zc1RocmVhZFJlZkNvdW50ZWQo
VCogZGF0YSwgVGhyZWFkU2FmZVJlZkNvdW50ZWRCYXNlKiB0aHJlYWRlZENvdW50ZXIpCiAgICAg
ICAgICAgIDogbV90aHJlYWRTYWZlUmVmQ291bnRlcih0aHJlYWRlZENvdW50ZXIpCiAgICAgICAg
ICAgICwgbV9kYXRhKGRhdGEpCgogICAgICAgICAgICAsIG1fdGhyZWFkSWQoMCkKCiAgICAgICAg
ewoKCiAgICAgICAgICAgIG1fcmVmQ291bnRlci5yZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsK
ICAgICAgICB9CgogICAgICAgIH5Dcm9zc1RocmVhZFJlZkNvdW50ZWQoKQogICAgICAgIHsKICAg
ICAgICAgICAgaWYgKCFtX3RocmVhZFNhZmVSZWZDb3VudGVyKQogICAgICAgICAgICAgICAgZGVs
ZXRlIG1fZGF0YTsKICAgICAgICB9CgogICAgICAgIHZvaWQgdGhyZWFkU2FmZURlcmVmKCk7CgoK
ICAgICAgICBib29sIGlzT3duZWRCeUN1cnJlbnRUaHJlYWQoKSBjb25zdCB7IHJldHVybiAhbV90
aHJlYWRJZCB8fCBtX3RocmVhZElkID09IGN1cnJlbnRUaHJlYWQoKTsgfQoKCiAgICAgICAgUmVm
Q291bnRlZEJhc2UgbV9yZWZDb3VudGVyOwogICAgICAgIFRocmVhZFNhZmVSZWZDb3VudGVkQmFz
ZSogbV90aHJlYWRTYWZlUmVmQ291bnRlcjsKICAgICAgICBUKiBtX2RhdGE7CgogICAgICAgIFRo
cmVhZElkZW50aWZpZXIgbV90aHJlYWRJZDsKCiAgICB9OwoKICAgIHRlbXBsYXRlPGNsYXNzIFQ+
CiAgICB2b2lkIENyb3NzVGhyZWFkUmVmQ291bnRlZDxUPjo6cmVmKCkKICAgIHsKICAgICAgICBk
byBpZiAoIShpc093bmVkQnlDdXJyZW50VGhyZWFkKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZh
aWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3Jvc3NUaHJlYWRSZWZD
b3VudGVkLmgiLCAxMTAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpc093bmVkQnlDdXJyZW50VGhy
ZWFkKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOwogICAgICAgIG1fcmVmQ291bnRlci5yZWYoKTsKCgoKCgoKICAgICAgICBpZiAoIW1fdGhy
ZWFkSWQgJiYgbV9yZWZDb3VudGVyLnJlZkNvdW50KCkgPT0gMikKICAgICAgICAgICAgbV90aHJl
YWRJZCA9IGN1cnJlbnRUaHJlYWQoKTsKCiAgICB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVD4KICAg
IHZvaWQgQ3Jvc3NUaHJlYWRSZWZDb3VudGVkPFQ+OjpkZXJlZigpCiAgICB7CiAgICAgICAgZG8g
aWYgKCEoaXNPd25lZEJ5Q3VycmVudFRocmVhZCgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWls
dXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Nyb3NzVGhyZWFkUmVmQ291
bnRlZC5oIiwgMTI2LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNPd25lZEJ5Q3VycmVudFRocmVh
ZCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICBpZiAobV9yZWZDb3VudGVyLmRlcmVmQmFzZSgpKSB7CiAgICAgICAgICAgIHRo
cmVhZFNhZmVEZXJlZigpOwogICAgICAgICAgICBkZWxldGUgdGhpczsKICAgICAgICB9IGVsc2Ug
ewoKCgogICAgICAgICAgICBpZiAobV90aHJlYWRJZCAmJiBtX3JlZkNvdW50ZXIucmVmQ291bnQo
KSA9PSAxKQogICAgICAgICAgICAgICAgbV90aHJlYWRJZCA9IDA7CgogICAgICAgIH0KICAgIH0K
CiAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgVCogQ3Jvc3NUaHJlYWRSZWZDb3VudGVkPFQ+Ojpy
ZWxlYXNlKCkKICAgIHsKICAgICAgICBkbyBpZiAoISghaXNTaGFyZWQoKSkpIHsgV1RGUmVwb3J0
QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Dcm9z
c1RocmVhZFJlZkNvdW50ZWQuaCIsIDE0MywgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFpc1NoYXJl
ZCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKCiAgICAgICAgVCogZGF0YSA9IG1fZGF0YTsKICAgICAgICBtX2RhdGEgPSAwOwogICAgICAg
IHJldHVybiBkYXRhOwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICBQYXNzUmVmUHRy
PENyb3NzVGhyZWFkUmVmQ291bnRlZDxUPiA+IENyb3NzVGhyZWFkUmVmQ291bnRlZDxUPjo6Y3Jv
c3NUaHJlYWRDb3B5KCkKICAgIHsKICAgICAgICBkbyBpZiAoIShpc093bmVkQnlDdXJyZW50VGhy
ZWFkKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQ3Jvc3NUaHJlYWRSZWZDb3VudGVkLmgiLCAxNTMsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJpc093bmVkQnlDdXJyZW50VGhyZWFkKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGlmIChtX3RocmVhZFNh
ZmVSZWZDb3VudGVyKQogICAgICAgICAgICBtX3RocmVhZFNhZmVSZWZDb3VudGVyLT5yZWYoKTsK
ICAgICAgICBlbHNlCiAgICAgICAgICAgIG1fdGhyZWFkU2FmZVJlZkNvdW50ZXIgPSBuZXcgVGhy
ZWFkU2FmZVJlZkNvdW50ZWRCYXNlKDIpOwoKICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENy
b3NzVGhyZWFkUmVmQ291bnRlZDxUPihtX2RhdGEsIG1fdGhyZWFkU2FmZVJlZkNvdW50ZXIpKTsK
ICAgIH0KCgogICAgdGVtcGxhdGU8Y2xhc3MgVD4KICAgIHZvaWQgQ3Jvc3NUaHJlYWRSZWZDb3Vu
dGVkPFQ+Ojp0aHJlYWRTYWZlRGVyZWYoKQogICAgewogICAgICAgIGlmIChtX3RocmVhZFNhZmVS
ZWZDb3VudGVyICYmIG1fdGhyZWFkU2FmZVJlZkNvdW50ZXItPmRlcmVmQmFzZSgpKSB7CiAgICAg
ICAgICAgIGRlbGV0ZSBtX3RocmVhZFNhZmVSZWZDb3VudGVyOwogICAgICAgICAgICBtX3RocmVh
ZFNhZmVSZWZDb3VudGVyID0gMDsKICAgICAgICB9CiAgICB9Cn0KCnVzaW5nIFdURjo6Q3Jvc3NU
aHJlYWRSZWZDb3VudGVkOwojIDI5ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oIiAyCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvT3duRmFzdE1hbGxvY1B0ci5oIiAxCiMgMjMgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvT3duRmFzdE1hbGxvY1B0ci5oIgojZGVmaW5lIE93bkZhc3RNYWxsb2NQdHJf
aCAKCgoKbmFtZXNwYWNlIFdURiB7CgogICAgdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgT3duRmFz
dE1hbGxvY1B0ciB7CiAgICAgICAgcHJpdmF0ZTogT3duRmFzdE1hbGxvY1B0cihjb25zdCBPd25G
YXN0TWFsbG9jUHRyJik7IE93bkZhc3RNYWxsb2NQdHImIG9wZXJhdG9yPShjb25zdCBPd25GYXN0
TWFsbG9jUHRyJik7CiAgICBwdWJsaWM6CiAgICAgICAgZXhwbGljaXQgT3duRmFzdE1hbGxvY1B0
cihUKiBwdHIpIDogbV9wdHIocHRyKQogICAgICAgIHsKICAgICAgICB9CgogICAgICAgIH5Pd25G
YXN0TWFsbG9jUHRyKCkKICAgICAgICB7CiAgICAgICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihjb25zdF9jYXN0PGNvbnN0IFQqPihtX3B0
cikpKSk7CiAgICAgICAgfQoKICAgICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsg
fQogICAgICAgIFQqIHJlbGVhc2UoKSB7IFQqIHB0ciA9IG1fcHRyOyBtX3B0ciA9IDA7IHJldHVy
biBwdHI7IH0KCiAgICBwcml2YXRlOgogICAgICAgIFQqIG1fcHRyOwogICAgfTsKCn0KCnVzaW5n
IFdURjo6T3duRmFzdE1hbGxvY1B0cjsKIyAzMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgiIDEKIyAzMiAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvU3RyaW5nSGFzaGVyLmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9TdHJpbmdIYXNoZXIuaCIKI2RlZmluZSBXVEZfU3RyaW5nSGFz
aGVyX2ggCgoKCm5hbWVzcGFjZSBXVEYgewoKCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHJpbmdI
YXNoaW5nU3RhcnRWYWx1ZSA9IDB4OWUzNzc5YjlVOwoKCgoKY2xhc3MgU3RyaW5nSGFzaGVyIHsK
cHVibGljOgogICAgaW5saW5lIFN0cmluZ0hhc2hlcigpCiAgICAgICAgOiBtX2hhc2goc3RyaW5n
SGFzaGluZ1N0YXJ0VmFsdWUpCiAgICAgICAgLCBtX2hhc1BlbmRpbmdDaGFyYWN0ZXIoZmFsc2Up
CiAgICAgICAgLCBtX3BlbmRpbmdDaGFyYWN0ZXIoMCkKICAgIHsKICAgIH0KCiAgICBpbmxpbmUg
dm9pZCBhZGRDaGFyYWN0ZXJzKFVDaGFyIGEsIFVDaGFyIGIpCiAgICB7CiAgICAgICAgZG8gaWYg
KCEoIW1faGFzUGVuZGluZ0NoYXJhY3RlcikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TdHJpbmdIYXNoZXIuaCIsIDQ1LCBf
X1BSRVRUWV9GVU5DVElPTl9fLCAiIW1faGFzUGVuZGluZ0NoYXJhY3RlciIpOyBkbyB7IFdURlJl
cG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9p
ZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgYWRkQ2hh
cmFjdGVyc1RvSGFzaChhLCBiKTsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBhZGRDaGFyYWN0ZXIo
VUNoYXIgY2gpCiAgICB7CiAgICAgICAgaWYgKG1faGFzUGVuZGluZ0NoYXJhY3RlcikgewogICAg
ICAgICAgICBhZGRDaGFyYWN0ZXJzVG9IYXNoKG1fcGVuZGluZ0NoYXJhY3RlciwgY2gpOwogICAg
ICAgICAgICBtX2hhc1BlbmRpbmdDaGFyYWN0ZXIgPSBmYWxzZTsKICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgIH0KCiAgICAgICAgbV9wZW5kaW5nQ2hhcmFjdGVyID0gY2g7CiAgICAgICAgbV9o
YXNQZW5kaW5nQ2hhcmFjdGVyID0gdHJ1ZTsKICAgIH0KCiAgICBpbmxpbmUgdW5zaWduZWQgaGFz
aCgpIGNvbnN0CiAgICB7CiAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9oYXNoOwoKCiAgICAg
ICAgaWYgKG1faGFzUGVuZGluZ0NoYXJhY3RlcikgewogICAgICAgICAgICByZXN1bHQgKz0gbV9w
ZW5kaW5nQ2hhcmFjdGVyOwogICAgICAgICAgICByZXN1bHQgXj0gcmVzdWx0IDw8IDExOwogICAg
ICAgICAgICByZXN1bHQgKz0gcmVzdWx0ID4+IDE3OwogICAgICAgIH0KCgogICAgICAgIHJlc3Vs
dCBePSByZXN1bHQgPDwgMzsKICAgICAgICByZXN1bHQgKz0gcmVzdWx0ID4+IDU7CiAgICAgICAg
cmVzdWx0IF49IHJlc3VsdCA8PCAyOwogICAgICAgIHJlc3VsdCArPSByZXN1bHQgPj4gMTU7CiAg
ICAgICAgcmVzdWx0IF49IHJlc3VsdCA8PCAxMDsKCgogICAgICAgIHJlc3VsdCAmPSAweDdmZmZm
ZmZmOwoKCgoKICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgcmV0dXJuIDB4NDAwMDAw
MDA7CgogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgVUNoYXIgQ29udmVydGVyKFQpPiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNvbXB1dGVIYXNo
KGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgIHsKICAgICAgICBTdHJpbmdIYXNo
ZXIgaGFzaGVyOwogICAgICAgIGJvb2wgcmVtID0gbGVuZ3RoICYgMTsKICAgICAgICBsZW5ndGgg
Pj49IDE7CgogICAgICAgIHdoaWxlIChsZW5ndGgtLSkgewogICAgICAgICAgICBoYXNoZXIuYWRk
Q2hhcmFjdGVycyhDb252ZXJ0ZXIoZGF0YVswXSksIENvbnZlcnRlcihkYXRhWzFdKSk7CiAgICAg
ICAgICAgIGRhdGEgKz0gMjsKICAgICAgICB9CgogICAgICAgIGlmIChyZW0pCiAgICAgICAgICAg
IGhhc2hlci5hZGRDaGFyYWN0ZXIoQ29udmVydGVyKCpkYXRhKSk7CgogICAgICAgIHJldHVybiBo
YXNoZXIuaGFzaCgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZl
cnRlcihUKT4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBUKiBkYXRh
KQogICAgewogICAgICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7CgogICAgICAgIHdoaWxlICh0cnVl
KSB7CiAgICAgICAgICAgIFVDaGFyIGIwID0gQ29udmVydGVyKCpkYXRhKyspOwogICAgICAgICAg
ICBpZiAoIWIwKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIFVDaGFyIGIxID0g
Q29udmVydGVyKCpkYXRhKyspOwogICAgICAgICAgICBpZiAoIWIxKSB7CiAgICAgICAgICAgICAg
ICBoYXNoZXIuYWRkQ2hhcmFjdGVyKGIwKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICB9CgogICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhiMCwgYjEpOwogICAgICAg
IH0KCiAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBUKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoPFQsIGRl
ZmF1bHRDb3ZlcnRlcj4oZGF0YSwgbGVuZ3RoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNvbXB1dGVIYXNoKGNvbnN0IFQqIGRhdGEpCiAg
ICB7CiAgICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoPFQsIGRlZmF1bHRDb3ZlcnRlcj4oZGF0YSk7
CiAgICB9CgogICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBoYXNoTWVtb3J5KGNvbnN0IHZvaWQqIGRhdGEpCiAgICB7CiAgICAgICAgdHlwZWRlZiBpbnQg
ZHVtbXlsZW5ndGhfbXVzdF9iZV9hX211bHRpYmxlX29mX2ZvdXIgWyghKGxlbmd0aCAlIDQpKSA/
IDEgOiAtMV07CiAgICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoPFVDaGFyPihzdGF0aWNfY2FzdDxj
b25zdCBVQ2hhcio+KGRhdGEpLCBsZW5ndGggLyBzaXplb2YoVUNoYXIpKTsKICAgIH0KCiAgICBz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGhhc2hNZW1vcnkoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWdu
ZWQgc2l6ZSkKICAgIHsKICAgICAgICBkbyBpZiAoISghKHNpemUgJSAyKSkpIHsgV1RGUmVwb3J0
QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TdHJp
bmdIYXNoZXIuaCIsIDE0NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiEoc2l6ZSAlIDIpIik7IGRv
IHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0g
MDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAg
ICByZXR1cm4gY29tcHV0ZUhhc2g8VUNoYXI+KHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oZGF0
YSksIHNpemUgLyBzaXplb2YoVUNoYXIpKTsKICAgIH0KCnByaXZhdGU6CiAgICBzdGF0aWMgaW5s
aW5lIFVDaGFyIGRlZmF1bHRDb3ZlcnRlcihVQ2hhciBjaCkKICAgIHsKICAgICAgICByZXR1cm4g
Y2g7CiAgICB9CgogICAgc3RhdGljIGlubGluZSBVQ2hhciBkZWZhdWx0Q292ZXJ0ZXIoY2hhciBj
aCkKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpOwog
ICAgfQoKICAgIGlubGluZSB2b2lkIGFkZENoYXJhY3RlcnNUb0hhc2goVUNoYXIgYSwgVUNoYXIg
YikKICAgIHsKICAgICAgICBtX2hhc2ggKz0gYTsKICAgICAgICB1bnNpZ25lZCB0bXAgPSAoYiA8
PCAxMSkgXiBtX2hhc2g7CiAgICAgICAgbV9oYXNoID0gKG1faGFzaCA8PCAxNikgXiB0bXA7CiAg
ICAgICAgbV9oYXNoICs9IG1faGFzaCA+PiAxMTsKICAgIH0KCiAgICB1bnNpZ25lZCBtX2hhc2g7
CiAgICBib29sIG1faGFzUGVuZGluZ0NoYXJhY3RlcjsKICAgIFVDaGFyIG1fcGVuZGluZ0NoYXJh
Y3RlcjsKfTsKCn0KCnVzaW5nIFdURjo6U3RyaW5nSGFzaGVyOwojIDMzICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oIiAyCgojIDEgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsQmFzZS5oIiAxCiMgMjcg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsQmFzZS5o
IgojZGVmaW5lIFN0cmluZ0ltcGxCYXNlX2ggCgoKCm5hbWVzcGFjZSBXVEYgewoKY2xhc3MgU3Ry
aW5nSW1wbEJhc2UgewogICAgcHJpdmF0ZTogU3RyaW5nSW1wbEJhc2UoY29uc3QgU3RyaW5nSW1w
bEJhc2UmKTsgU3RyaW5nSW1wbEJhc2UmIG9wZXJhdG9yPShjb25zdCBTdHJpbmdJbXBsQmFzZSYp
OyBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7
IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxs
b2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6
SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBk
ZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6
V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0g
dm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0
TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgOjpX
VEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgcmV0dXJuIHA7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0
ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgOjpXVEY6
OmZhc3RGcmVlKHApOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IFRoaXNJc0hlcmVUb0ZvcmNlQVNl
bWljb2xvbkFmdGVyVGhpc01hY3JvOwpwdWJsaWM6CiAgICBib29sIGlzU3RyaW5nSW1wbCgpIHsg
cmV0dXJuIChtX3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50SW52YWxpZEZvclN0cmluZ0lt
cGwpICE9IHNfcmVmQ291bnRJbnZhbGlkRm9yU3RyaW5nSW1wbDsgfQogICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgIHZvaWQgcmVmKCkgeyBtX3JlZkNv
dW50QW5kRmxhZ3MgKz0gc19yZWZDb3VudEluY3JlbWVudDsgfQoKcHJvdGVjdGVkOgogICAgZW51
bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgIEJ1ZmZlckludGVybmFsLAogICAgICAgIEJ1ZmZl
ck93bmVkLAogICAgICAgIEJ1ZmZlclN1YnN0cmluZywKICAgICAgICBCdWZmZXJTaGFyZWQsCiAg
ICB9OwoKCiAgICBTdHJpbmdJbXBsQmFzZSgpIHsgfQoKICAgIFN0cmluZ0ltcGxCYXNlKHVuc2ln
bmVkIGxlbmd0aCwgQnVmZmVyT3duZXJzaGlwIG93bmVyc2hpcCkKICAgICAgICA6IG1fcmVmQ291
bnRBbmRGbGFncyhzX3JlZkNvdW50SW5jcmVtZW50IHwgc19yZWZDb3VudEZsYWdTaG91bGRSZXBv
cnRlZENvc3QgfCBvd25lcnNoaXApCiAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICB7CiAg
ICAgICAgZG8gaWYgKCEoaXNTdHJpbmdJbXBsKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsQmFz
ZS5oIiwgNTUsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpc1N0cmluZ0ltcGwoKSIpOyBkbyB7IFdU
RlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgo
dm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICB9CgogICAg
ZW51bSBTdGF0aWNTdHJpbmdDb25zdHJ1Y3RUeXBlIHsgQ29uc3RydWN0U3RhdGljU3RyaW5nIH07
CiAgICBTdHJpbmdJbXBsQmFzZSh1bnNpZ25lZCBsZW5ndGgsIFN0YXRpY1N0cmluZ0NvbnN0cnVj
dFR5cGUpCiAgICAgICAgOiBtX3JlZkNvdW50QW5kRmxhZ3Moc19yZWZDb3VudEZsYWdTdGF0aWMg
fCBzX3JlZkNvdW50RmxhZ0lzSWRlbnRpZmllciB8IEJ1ZmZlck93bmVkKQogICAgICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQogICAgewogICAgICAgIGRvIGlmICghKGlzU3RyaW5nSW1wbCgpKSkgeyBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nSW1wbEJhc2UuaCIsIDYzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNT
dHJpbmdJbXBsKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgfQoKCgogICAgZW51bSBOb25TdHJpbmdJbXBsQ29uc3RydWN0VHlwZSB7
IENvbnN0cnVjdE5vblN0cmluZ0ltcGwgfTsKICAgIFN0cmluZ0ltcGxCYXNlKE5vblN0cmluZ0lt
cGxDb25zdHJ1Y3RUeXBlKQogICAgICAgIDogbV9yZWZDb3VudEFuZEZsYWdzKHNfcmVmQ291bnRJ
bmNyZW1lbnQgfCBzX3JlZkNvdW50SW52YWxpZEZvclN0cmluZ0ltcGwpCiAgICAgICAgLCBtX2xl
bmd0aCgwKQogICAgewogICAgICAgIGRvIGlmICghKCFpc1N0cmluZ0ltcGwoKSkpIHsgV1RGUmVw
b3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ0ltcGxCYXNlLmgiLCA3MywgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFpc1N0cmlu
Z0ltcGwoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3Qp
MHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGls
ZSAoMCk7CiAgICB9CgoKCgogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRNYXNr
ID0gMHhGRkZGRkY4MDsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3JlZkNvdW50SW5jcmVt
ZW50ID0gMHg4MDsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3JlZkNvdW50RmxhZ1N0YXRp
YyA9IDB4NDA7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19yZWZDb3VudEZsYWdIYXNUZXJt
aW5hdGluZ051bGxDaGFyYWN0ZXIgPSAweDIwOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
cmVmQ291bnRGbGFnSXNBdG9taWMgPSAweDEwOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
cmVmQ291bnRGbGFnU2hvdWxkUmVwb3J0ZWRDb3N0ID0gMHg4OwogICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNfcmVmQ291bnRGbGFnSXNJZGVudGlmaWVyID0gMHg0OwogICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHNfcmVmQ291bnRNYXNrQnVmZmVyT3duZXJzaGlwID0gMHgzOwoKCgogICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRJbnZhbGlkRm9yU3RyaW5nSW1wbCA9IHNfcmVm
Q291bnRGbGFnU3RhdGljIHwgc19yZWZDb3VudEZsYWdTaG91bGRSZXBvcnRlZENvc3Q7CgogICAg
dW5zaWduZWQgbV9yZWZDb3VudEFuZEZsYWdzOwogICAgdW5zaWduZWQgbV9sZW5ndGg7Cn07Cgp9
Cgp1c2luZyBXVEY6OlN0cmluZ0ltcGxCYXNlOwojIDM1ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oIiAyCgoKCnR5cGVkZWYgY29uc3Qgc3RydWN0
IF9fQ0ZTdHJpbmcgKiBDRlN0cmluZ1JlZjsKCgoKQGNsYXNzIE5TU3RyaW5nOwoKCgoKbmFtZXNw
YWNlIEpTQyB7CnN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CnN0cnVjdCBJZGVu
dGlmaWVyVUNoYXJCdWZmZXJUcmFuc2xhdG9yOwp9CgpuYW1lc3BhY2UgV1RGIHsKCnN0cnVjdCBD
U3RyaW5nVHJhbnNsYXRvcjsKc3RydWN0IEhhc2hBbmRDaGFyYWN0ZXJzVHJhbnNsYXRvcjsKc3Ry
dWN0IEhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I7CnN0cnVjdCBVQ2hhckJ1ZmZlclRy
YW5zbGF0b3I7CgplbnVtIFRleHRDYXNlU2Vuc2l0aXZpdHkgeyBUZXh0Q2FzZVNlbnNpdGl2ZSwg
VGV4dENhc2VJbnNlbnNpdGl2ZSB9OwoKdHlwZWRlZiBPd25GYXN0TWFsbG9jUHRyPGNvbnN0IFVD
aGFyPiBTaGFyYWJsZVVDaGFyOwp0eXBlZGVmIENyb3NzVGhyZWFkUmVmQ291bnRlZDxTaGFyYWJs
ZVVDaGFyPiBTaGFyZWRVQ2hhcjsKdHlwZWRlZiBib29sICgqQ2hhcmFjdGVyTWF0Y2hGdW5jdGlv
blB0cikoVUNoYXIpOwp0eXBlZGVmIGJvb2wgKCpJc1doaXRlU3BhY2VGdW5jdGlvblB0cikoVUNo
YXIpOwoKY2xhc3MgU3RyaW5nSW1wbCA6IHB1YmxpYyBTdHJpbmdJbXBsQmFzZSB7CiAgICBmcmll
bmQgc3RydWN0IEpTQzo6SWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOwogICAgZnJpZW5kIHN0
cnVjdCBKU0M6OklkZW50aWZpZXJVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICBmcmllbmQgc3Ry
dWN0IFdURjo6Q1N0cmluZ1RyYW5zbGF0b3I7CiAgICBmcmllbmQgc3RydWN0IFdURjo6SGFzaEFu
ZENoYXJhY3RlcnNUcmFuc2xhdG9yOwogICAgZnJpZW5kIHN0cnVjdCBXVEY6Okhhc2hBbmRVVEY4
Q2hhcmFjdGVyc1RyYW5zbGF0b3I7CiAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJU
cmFuc2xhdG9yOwogICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7CnByaXZhdGU6CgoK
CiAgICBTdHJpbmdJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IFN0YXRpY1N0cmluZ0NvbnN0cnVjdFR5cGUpCiAgICAgICAgOiBTdHJpbmdJbXBsQmFzZShsZW5n
dGgsIENvbnN0cnVjdFN0YXRpY1N0cmluZykKICAgICAgICAsIG1fZGF0YShjaGFyYWN0ZXJzKQog
ICAgICAgICwgbV9idWZmZXIoMCkKICAgICAgICAsIG1faGFzaCgwKQogICAgewoKCgogICAgICAg
IGhhc2goKTsKICAgIH0KCgogICAgU3RyaW5nSW1wbCh1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAg
OiBTdHJpbmdJbXBsQmFzZShsZW5ndGgsIEJ1ZmZlckludGVybmFsKQogICAgICAgICwgbV9kYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih0aGlzICsgMSkpCiAgICAgICAgLCBtX2J1
ZmZlcigwKQogICAgICAgICwgbV9oYXNoKDApCiAgICB7CiAgICAgICAgZG8gaWYgKCEobV9kYXRh
KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oIiwgOTcsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJt
X2RhdGEiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOwogICAgICAgIGRvIGlmICghKG1fbGVuZ3RoKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWls
dXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5o
IiwgOTgsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX2xlbmd0aCIpOyBkbyB7IFdURlJlcG9ydEJh
Y2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgp
KTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICB9CgoKICAgIFN0cmluZ0lt
cGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICA6IFN0
cmluZ0ltcGxCYXNlKGxlbmd0aCwgQnVmZmVyT3duZWQpCiAgICAgICAgLCBtX2RhdGEoY2hhcmFj
dGVycykKICAgICAgICAsIG1fYnVmZmVyKDApCiAgICAgICAgLCBtX2hhc2goMCkKICAgIHsKICAg
ICAgICBkbyBpZiAoIShtX2RhdGEpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgiLCAxMDgsIF9f
UFJFVFRZX0ZVTkNUSU9OX18sICJtX2RhdGEiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsg
KihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKG1fbGVuZ3RoKSkgeyBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nSW1wbC5oIiwgMTA5LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9sZW5n
dGgiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgfQoKCiAgICBTdHJpbmdJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYmFzZSkKICAgICAgICA6IFN0cmluZ0lt
cGxCYXNlKGxlbmd0aCwgQnVmZmVyU3Vic3RyaW5nKQogICAgICAgICwgbV9kYXRhKGNoYXJhY3Rl
cnMpCiAgICAgICAgLCBtX3N1YnN0cmluZ0J1ZmZlcihiYXNlLmxlYWtSZWYoKSkKICAgICAgICAs
IG1faGFzaCgwKQogICAgewogICAgICAgIGRvIGlmICghKG1fZGF0YSkpIHsgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaCIsIDExOSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fZGF0YSIpOyBkbyB7IFdU
RlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgo
dm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8g
aWYgKCEobV9sZW5ndGgpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgiLCAxMjAsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sICJtX2xlbmd0aCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8gaWYgKCEobV9zdWJzdHJpbmdCdWZmZXIt
PmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZykpIHsgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaCIsIDEyMSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fc3Vic3RyaW5nQnVmZmVyLT5i
dWZmZXJPd25lcnNoaXAoKSAhPSBCdWZmZXJTdWJzdHJpbmciKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgfQoKCiAgICBTdHJpbmdJbXBs
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFBhc3NSZWZQdHI8U2hh
cmVkVUNoYXI+IHNoYXJlZEJ1ZmZlcikKICAgICAgICA6IFN0cmluZ0ltcGxCYXNlKGxlbmd0aCwg
QnVmZmVyU2hhcmVkKQogICAgICAgICwgbV9kYXRhKGNoYXJhY3RlcnMpCiAgICAgICAgLCBtX3No
YXJlZEJ1ZmZlcihzaGFyZWRCdWZmZXIubGVha1JlZigpKQogICAgICAgICwgbV9oYXNoKDApCiAg
ICB7CiAgICAgICAgZG8gaWYgKCEobV9kYXRhKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJl
KCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oIiwg
MTMxLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9kYXRhIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAoIShtX2xlbmd0
aCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIsIDEzMiwgX19QUkVUVFlfRlVOQ1RJT05fXywg
Im1fbGVuZ3RoIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJf
dCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdo
aWxlICgwKTsKICAgIH0KCgogICAgdm9pZCBzZXRIYXNoKHVuc2lnbmVkIGhhc2gpCiAgICB7CiAg
ICAgICAgZG8gaWYgKCEoIWlzU3RhdGljKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgiLCAx
MzgsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhaXNTdGF0aWMoKSIpOyBkbyB7IFdURlJlcG9ydEJh
Y2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgp
KTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8gaWYgKCEoIW1f
aGFzaCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIsIDEzOSwgX19QUkVUVFlfRlVOQ1RJT05f
XywgIiFtX2hhc2giKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKGhhc2ggPT0gU3RyaW5nSGFzaGVyOjpjb21wdXRl
SGFzaChtX2RhdGEsIG1fbGVuZ3RoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIsIDE0MCwg
X19QUkVUVFlfRlVOQ1RJT05fXywgImhhc2ggPT0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaCht
X2RhdGEsIG1fbGVuZ3RoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgbV9oYXNoID0gaGFzaDsKICAgIH0KCnB1YmxpYzoKICAg
IH5TdHJpbmdJbXBsKCk7CgogICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRl
KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKik7CiAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5n
dGgsIFBhc3NSZWZQdHI8U2hhcmVkVUNoYXI+IHNoYXJlZEJ1ZmZlcik7CiAgICBzdGF0aWMgaW5s
aW5lIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
cmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgIHsKICAgICAgICBkbyBp
ZiAoIShyZXApKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgiLCAxNTMsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sICJyZXAiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKGxlbmd0aCA8PSByZXAtPmxlbmd0aCgpKSkgeyBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nSW1wbC5oIiwgMTU0LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibGVuZ3Ro
IDw9IHJlcC0+bGVuZ3RoKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKiko
dWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxz
ZSk7IH0gd2hpbGUgKDApOwoKICAgICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgICAgcmV0dXJu
IGVtcHR5KCk7CgogICAgICAgIFN0cmluZ0ltcGwqIG93bmVyUmVwID0gKHJlcC0+YnVmZmVyT3du
ZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKSA/IHJlcC0+bV9zdWJzdHJpbmdCdWZmZXIgOiBy
ZXAuZ2V0KCk7CiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJpbmdJbXBsKHJlcC0+bV9k
YXRhICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAgICB9CgogICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVD
aGFyKiYgZGF0YSk7CiAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgb3V0cHV0KQogICAg
ewogICAgICAgIGlmICghbGVuZ3RoKSB7CiAgICAgICAgICAgIG91dHB1dCA9IDA7CiAgICAgICAg
ICAgIHJldHVybiBlbXB0eSgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGxlbmd0aCA+ICgoc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAv
IHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgIG91dHB1dCA9IDA7CiAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgIH0KICAgICAgICBTdHJpbmdJbXBsKiByZXN1bHRJbXBsOwogICAgICAg
IGlmICghdHJ5RmFzdE1hbGxvYyhzaXplb2YoVUNoYXIpICogbGVuZ3RoICsgc2l6ZW9mKFN0cmlu
Z0ltcGwpKS5nZXRWYWx1ZShyZXN1bHRJbXBsKSkgewogICAgICAgICAgICBvdXRwdXQgPSAwOwog
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgb3V0cHV0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxVQ2hhcio+KHJlc3VsdEltcGwgKyAxKTsKICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3KHJlc3VsdEltcGwpIFN0cmluZ0ltcGwobGVuZ3RoKSk7CiAgICB9CgogICAgc3RhdGljIHVu
c2lnbmVkIGRhdGFPZmZzZXQoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+
KCYocmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oMHg0MDAwKS0+bV9kYXRhKSkgLSAweDQw
MDApOyB9CiAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVXaXRoVGVybWlu
YXRpbmdOdWxsQ2hhcmFjdGVyKGNvbnN0IFN0cmluZ0ltcGwmKTsKICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0ZXJzKGNvbnN0IFVDaGFy
KiwgdW5zaWduZWQgbGVuZ3RoKTsKCiAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChWZWN0b3I8VUNoYXIsIGlu
bGluZUNhcGFjaXR5PiYgdmVjdG9yKQogICAgewogICAgICAgIGlmIChzaXplX3Qgc2l6ZSA9IHZl
Y3Rvci5zaXplKCkpIHsKICAgICAgICAgICAgZG8gaWYgKCEodmVjdG9yLmRhdGEoKSkpIHsgV1RG
UmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaCIsIDE5MiwgX19QUkVUVFlfRlVOQ1RJT05fXywgInZlY3Rvci5k
YXRhKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOwogICAgICAgICAgICBpZiAoc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSkKICAgICAgICAgICAgICAgIGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50
ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAo
ZmFsc2UpOwogICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmluZ0ltcGwodmVjdG9y
LnJlbGVhc2VCdWZmZXIoKSwgc2l6ZSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZW1wdHko
KTsKICAgIH0KICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1
ZmZlciYpOwoKICAgIFNoYXJlZFVDaGFyKiBzaGFyZWRCdWZmZXIoKTsKICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CgogICAgc2l6ZV90IGNvc3Qo
KQogICAgewoKICAgICAgICBpZiAoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5n
KQogICAgICAgICAgICByZXR1cm4gbV9zdWJzdHJpbmdCdWZmZXItPmNvc3QoKTsKCiAgICAgICAg
aWYgKG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRGbGFnU2hvdWxkUmVwb3J0ZWRDb3N0
KSB7CiAgICAgICAgICAgIG1fcmVmQ291bnRBbmRGbGFncyAmPSB+c19yZWZDb3VudEZsYWdTaG91
bGRSZXBvcnRlZENvc3Q7CiAgICAgICAgICAgIHJldHVybiBtX2xlbmd0aDsKICAgICAgICB9CiAg
ICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgYm9vbCBpc0lkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50RmxhZ0lzSWRlbnRpZmllcjsgfQog
ICAgdm9pZCBzZXRJc0lkZW50aWZpZXIoYm9vbCBpc0lkZW50aWZpZXIpCiAgICB7CiAgICAgICAg
ZG8gaWYgKCEoIWlzU3RhdGljKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgiLCAyMjAsIF9f
UFJFVFRZX0ZVTkNUSU9OX18sICIhaXNTdGF0aWMoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFj
ZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7
IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgaWYgKGlzSWRlbnRpZmllcikK
ICAgICAgICAgICAgbV9yZWZDb3VudEFuZEZsYWdzIHw9IHNfcmVmQ291bnRGbGFnSXNJZGVudGlm
aWVyOwogICAgICAgIGVsc2UKICAgICAgICAgICAgbV9yZWZDb3VudEFuZEZsYWdzICY9IH5zX3Jl
ZkNvdW50RmxhZ0lzSWRlbnRpZmllcjsKICAgIH0KCiAgICBib29sIGhhc1Rlcm1pbmF0aW5nTnVs
bENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291
bnRGbGFnSGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVyOyB9CgogICAgYm9vbCBpc0F0b21pYygp
IGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRGbGFnSXNBdG9t
aWM7IH0KICAgIHZvaWQgc2V0SXNBdG9taWMoYm9vbCBpc0lkZW50aWZpZXIpCiAgICB7CiAgICAg
ICAgZG8gaWYgKCEoIWlzU3RhdGljKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgiLCAyMzIs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhaXNTdGF0aWMoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0
cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTAp
KCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgaWYgKGlzSWRlbnRpZmll
cikKICAgICAgICAgICAgbV9yZWZDb3VudEFuZEZsYWdzIHw9IHNfcmVmQ291bnRGbGFnSXNBdG9t
aWM7CiAgICAgICAgZWxzZQogICAgICAgICAgICBtX3JlZkNvdW50QW5kRmxhZ3MgJj0gfnNfcmVm
Q291bnRGbGFnSXNBdG9taWM7CiAgICB9CgogICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgaWYg
KCFtX2hhc2gpIG1faGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2gobV9kYXRhLCBtX2xl
bmd0aCk7IHJldHVybiBtX2hhc2g7IH0KICAgIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCgpIGNvbnN0
IHsgZG8gaWYgKCEobV9oYXNoKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oIiwgMjQwLCBfX1BS
RVRUWV9GVU5DVElPTl9fLCAibV9oYXNoIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIG1faGFzaDsgfQogICAgYm9vbCBoYXNIYXNo
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CgogICAgaW5saW5lIHZvaWQgZGVyZWYoKSB7IG1f
cmVmQ291bnRBbmRGbGFncyAtPSBzX3JlZkNvdW50SW5jcmVtZW50OyBpZiAoIShtX3JlZkNvdW50
QW5kRmxhZ3MgJiAoc19yZWZDb3VudE1hc2sgfCBzX3JlZkNvdW50RmxhZ1N0YXRpYykpKSBkZWxl
dGUgdGhpczsgfQogICAgaW5saW5lIGJvb2wgaGFzT25lUmVmKCkgY29uc3QgeyByZXR1cm4gKG1f
cmVmQ291bnRBbmRGbGFncyAmIChzX3JlZkNvdW50TWFzayB8IHNfcmVmQ291bnRGbGFnU3RhdGlj
KSkgPT0gc19yZWZDb3VudEluY3JlbWVudDsgfQoKICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0
eSgpOwoKICAgIHN0YXRpYyB2b2lkIGNvcHlDaGFycyhVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0
IFVDaGFyKiBzb3VyY2UsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpCiAgICB7CiAgICAgICAgaWYg
KG51bUNoYXJhY3RlcnMgPD0gc19jb3B5Q2hhcnNJbmxpbmVDdXRPZmYpIHsKICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsraSkKICAgICAgICAgICAg
ICAgIGRlc3RpbmF0aW9uW2ldID0gc291cmNlW2ldOwogICAgICAgIH0gZWxzZQogICAgICAgICAg
ICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgbnVtQ2hhcmFjdGVycyAqIHNpemVvZihVQ2hh
cikpOwogICAgfQoKCiAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyb3NzVGhyZWFkU3RyaW5n
KCk7CgoKCiAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7
CgogICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNp
Z25lZCBsZW4gPSAoMjE0NzQ4MzY0NyAqIDJVICsgMVUpKTsKCiAgICBVQ2hhciBvcGVyYXRvcltd
KHVuc2lnbmVkIGkpIHsgZG8gaWYgKCEoaSA8IG1fbGVuZ3RoKSkgeyBXVEZSZXBvcnRBc3NlcnRp
b25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5n
SW1wbC5oIiwgMjY2LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaSA8IG1fbGVuZ3RoIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIG1f
ZGF0YVtpXTsgfQogICAgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKCiAg
ICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKCiAgICBpbnQgdG9JbnRTdHJpY3QoYm9v
bCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29s
KiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wq
IG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAgICB1aW50NjRfdCB0b1VJbnQ2NFN0cmljdChib29s
KiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9v
bCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKCiAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsK
ICAgIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IDApOwogICAgaW50NjRfdCB0b0ludDY0KGJv
b2wqIG9rID0gMCk7CiAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApOwogICAgaW50
cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSAwKTsKCiAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCog
b2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiAgICBmbG9hdCB0b0Zsb2F0KGJvb2wq
IG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApOwoKICAgIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gbG93ZXIoKTsKICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsKCiAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGZpbGwoVUNoYXIpOwogICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBmb2xkQ2FzZSgpOwoKICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNw
YWNlKCk7CiAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFjZShJc1doaXRl
U3BhY2VGdW5jdGlvblB0cik7CiAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hp
dGVTcGFjZSgpOwogICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2Uo
SXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpOwoKICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVt
b3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKCiAgICBzaXplX3QgZmlu
ZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSAwKTsKICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1h
dGNoRnVuY3Rpb25QdHIsIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICBzaXplX3QgZmluZChjb25z
dCBjaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKICAgIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCBpbmRleCA9IDApOwogICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3Qg
Y2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShT
dHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKCiAgICBzaXplX3QgcmV2ZXJzZUZpbmQo
VUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gKDIxNDc0ODM2NDcgKiAyVSArIDFVKSk7CiAgICBzaXpl
X3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gKDIxNDc0ODM2NDcg
KiAyVSArIDFVKSk7CiAgICBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1w
bCosIHVuc2lnbmVkIGluZGV4ID0gKDIxNDc0ODM2NDcgKiAyVSArIDFVKSk7CgogICAgYm9vbCBz
dGFydHNXaXRoKFN0cmluZ0ltcGwqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgeyBy
ZXR1cm4gKGNhc2VTZW5zaXRpdmUgPyByZXZlcnNlRmluZChzdHIsIDApIDogcmV2ZXJzZUZpbmRJ
Z25vcmluZ0Nhc2Uoc3RyLCAwKSkgPT0gMDsgfQogICAgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBs
KiwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CgogICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7CiAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxh
Y2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFj
ZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwogICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKCiAgICBX
VEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNT
dHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApOwoKCiAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmlu
ZygpOwoKCiAgICBvcGVyYXRvciBOU1N0cmluZyooKTsKCgpwcml2YXRlOgoKICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzX2NvcHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwoKICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0ZXJzU2xvd0Nh
c2UoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwoKICAgIEJ1ZmZlck93bmVyc2hpcCBi
dWZmZXJPd25lcnNoaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCdWZmZXJPd25lcnNo
aXA+KG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRNYXNrQnVmZmVyT3duZXJzaGlwKTsg
fQogICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnRBbmRGbGFncyAm
IHNfcmVmQ291bnRGbGFnU3RhdGljOyB9CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNh
dGU+IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclBy
ZWRpY2F0ZSk7CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gc2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNh
dGUpOwoKICAgIGNvbnN0IFVDaGFyKiBtX2RhdGE7CiAgICB1bmlvbiB7CiAgICAgICAgdm9pZCog
bV9idWZmZXI7CiAgICAgICAgU3RyaW5nSW1wbCogbV9zdWJzdHJpbmdCdWZmZXI7CiAgICAgICAg
U2hhcmVkVUNoYXIqIG1fc2hhcmVkQnVmZmVyOwogICAgfTsKICAgIG11dGFibGUgdW5zaWduZWQg
bV9oYXNoOwp9OwoKYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1w
bCopOwpib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CmlubGluZSBi
b29sIGVxdWFsKGNvbnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFsKGIs
IGEpOyB9CmJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQpOwoKYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwpi
b29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CmlubGluZSBi
b29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwqIGIpIHsgcmV0
dXJuIGVxdWFsSWdub3JpbmdDYXNlKGIsIGEpOyB9CmJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29u
c3QgVUNoYXIqIGEsIGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCk7CmlubGluZSBib29s
IGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCB1bnNpZ25l
ZCBsZW5ndGgpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGIsIGEsIGxlbmd0aCk7IH0KCmJv
b2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKCnRlbXBs
YXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25z
dCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwgU3RyaW5nSW1wbCogYikKewogICAg
aWYgKCFiKQogICAgICAgIHJldHVybiAhYS5zaXplKCk7CiAgICBpZiAoYS5zaXplKCkgIT0gYi0+
bGVuZ3RoKCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuICFtZW1jbXAoYS5kYXRh
KCksIGItPmNoYXJhY3RlcnMoKSwgYi0+bGVuZ3RoKCkpOwp9CgppbnQgY29kZVBvaW50Q29tcGFy
ZShjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwoKc3RhdGljIGlubGluZSBi
b29sIGlzU3BhY2VPck5ld2xpbmUoVUNoYXIgYykKewoKCiAgICByZXR1cm4gYyA8PSAweDdGID8g
V1RGOjppc0FTQ0lJU3BhY2UoYykgOiBXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbihjKSA9PSBXVEY6
OlVuaWNvZGU6OldoaXRlU3BhY2VOZXV0cmFsOwp9CgoKaW5saW5lIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnMoY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKewogICAgZG8gaWYgKCEoY2hhcmFjdGVy
cykpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIsIDM4MiwgX19QUkVUVFlfRlVOQ1RJT05fXywg
ImNoYXJhY3RlcnMiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgZG8gaWYgKCEobGVuZ3RoKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWls
dXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5o
IiwgMzgzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibGVuZ3RoIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKCgoKCgoKCiAgICBpbnQgZm91bmRO
dWxsID0gMDsKICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFmb3VuZE51bGwgJiYgaSA8IGxlbmd0
aDsgaSsrKSB7CiAgICAgICAgaW50IGMgPSBjaGFyYWN0ZXJzW2ldOwogICAgICAgIGZvdW5kTnVs
bCB8PSAhYzsKICAgIH0KICAgIGlmICghZm91bmROdWxsKQogICAgICAgIHJldHVybiBTdHJpbmdJ
bXBsOjpjcmVhdGUoY2hhcmFjdGVycywgbGVuZ3RoKTsKCiAgICByZXR1cm4gU3RyaW5nSW1wbDo6
Y3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2FzZShjaGFyYWN0ZXJzLCBsZW5ndGgp
Owp9CgpzdHJ1Y3QgU3RyaW5nSGFzaDsKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVm
YXVsdEhhc2g7CnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFN0cmluZ0ltcGwqPiB7CiAg
ICB0eXBlZGVmIFN0cmluZ0hhc2ggSGFzaDsKfTsKdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhh
c2g8UmVmUHRyPFN0cmluZ0ltcGw+ID4gewogICAgdHlwZWRlZiBTdHJpbmdIYXNoIEhhc2g7Cn07
Cgp9Cgp1c2luZyBXVEY6OlN0cmluZ0ltcGw7CnVzaW5nIFdURjo6ZXF1YWw7CnVzaW5nIFdURjo6
VGV4dENhc2VTZW5zaXRpdml0eTsKdXNpbmcgV1RGOjpUZXh0Q2FzZVNlbnNpdGl2ZTsKdXNpbmcg
V1RGOjpUZXh0Q2FzZUluc2Vuc2l0aXZlOwojIDI5ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgiIDIKCgoKCgoKdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X19DRlN0cmluZyAqIENGU3RyaW5nUmVmOwoKCgoKY2xhc3MgUVN0cmluZzsKCiMgMSAiL29wdC9s
b2NhbC9pbmNsdWRlL1F0Q29yZS9RRGF0YVN0cmVhbSIgMQojIDQzICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgiIDIKIyA2MSAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIgpuYW1lc3BhY2UgV1RGIHsK
CmNsYXNzIENTdHJpbmc7CnN0cnVjdCBTdHJpbmdIYXNoOwoKCgpib29sIGNoYXJhY3RlcnNBcmVB
bGxBU0NJSShjb25zdCBVQ2hhciosIHNpemVfdCk7CmJvb2wgY2hhcmFjdGVyc0FyZUFsbExhdGlu
MShjb25zdCBVQ2hhciosIHNpemVfdCk7CiBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0
IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogdW5zaWduZWQg
Y2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAw
LCBpbnQgYmFzZSA9IDEwKTsKaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBV
Q2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKdWludDY0X3QgY2hh
cmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApOwppbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3Qg
VUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CgppbnQgY2hhcmFj
dGVyc1RvSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOwp1bnNpZ25lZCBj
aGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOwppbnQ2
NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAp
Owp1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCk7CmludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSAwKTsKCiBkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKZmxvYXQg
Y2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgYm9v
bCogZGlkUmVhZE51bWJlciA9IDApOwoKdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIo
VUNoYXIpPiBib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBzaXplX3Qp
OwoKY2xhc3MgU3RyaW5nIHsKcHVibGljOgoKICAgIFN0cmluZygpIHsgfQoKCiAgICBTdHJpbmco
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CgoKCiAgICB0ZW1wbGF0
ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICBleHBsaWNpdCBTdHJpbmcoY29uc3QgVmVjdG9y
PFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mKTsKCgogICAgU3RyaW5nKGNvbnN0IFVDaGFyKik7CgoK
ICAgIFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwoKCiAg
ICBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CgoKICAgIFN0cmluZyhTdHJpbmdJbXBs
KiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KICAgIFN0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQogICAgU3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBs
PiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KCgogICAgaW5saW5lIH5TdHJpbmcoKSB7IH0KCiAg
ICB2b2lkIHN3YXAoU3RyaW5nJiBvKSB7IG1faW1wbC5zd2FwKG8ubV9pbXBsKTsgfQoKICAgIHN0
YXRpYyBTdHJpbmcgYWRvcHQoU3RyaW5nQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIFN0cmluZ0lt
cGw6OmFkb3B0KGJ1ZmZlcik7IH0KICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4K
ICAgIHN0YXRpYyBTdHJpbmcgYWRvcHQoVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIHZl
Y3RvcikgeyByZXR1cm4gU3RyaW5nSW1wbDo6YWRvcHQodmVjdG9yKTsgfQoKICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gIW1faW1wbCB8fCAhbV9pbXBsLT5sZW5ndGgoKTsgfQoKICAgIFN0cmluZ0ltcGwq
IGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KCiAgICB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdAogICAgewogICAgICAgIGlmICghbV9pbXBsKQogICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICByZXR1cm4gbV9pbXBsLT5sZW5ndGgoKTsKICAgIH0KCiAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycygpIGNvbnN0CiAgICB7CiAgICAgICAgaWYgKCFtX2ltcGwpCiAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMoKTsKICAgIH0K
CiAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CiAgICBDU3RyaW5nIGxhdGluMSgpIGNvbnN0Owog
ICAgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwoKICAgIFVDaGFyIG9w
ZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICB7CiAgICAgICAgaWYgKCFtX2ltcGwg
fHwgaW5kZXggPj0gbV9pbXBsLT5sZW5ndGgoKSkKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpW2luZGV4XTsKICAgIH0KCiAgICBzdGF0aWMg
U3RyaW5nIG51bWJlcihzaG9ydCk7CiAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBz
aG9ydCk7CiAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQpOwogICAgc3RhdGljIFN0cmluZyBu
dW1iZXIodW5zaWduZWQpOwogICAgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyk7CiAgICBzdGF0
aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVy
KGxvbmcgbG9uZyk7CiAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcp
OwogICAgc3RhdGljIFN0cmluZyBudW1iZXIoZG91YmxlKTsKCgogICAgc2l6ZV90IGZpbmQoVUNo
YXIgYywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAogICAgICAgIHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+ZmluZChjLCBzdGFydCkgOiBub3RGb3VuZDsgfQogICAgc2l6ZV90IGZpbmQoY29u
c3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKICAgICAgICB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0K
ICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwg
dW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAogICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3VuZDsgfQogICAgc2l6ZV90IGZp
bmQoY29uc3QgY2hhciogc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CiAgICAgICAgeyBy
ZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0ciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KCgog
ICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0ID0gKDIxNDc0ODM2
NDcgKiAyVSArIDFVKSkgY29uc3QKICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJl
dmVyc2VGaW5kKGMsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAgICBzaXplX3QgcmV2ZXJzZUZpbmQo
Y29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gKDIxNDc0ODM2NDcgKiAyVSArIDFV
KSkgY29uc3QKICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0
ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CgoKICAgIHNpemVfdCBmaW5kSWdub3JpbmdD
YXNlKGNvbnN0IGNoYXIqIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAogICAgICAgIHsg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KSA6IG5v
dEZvdW5kOyB9CiAgICBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmIHN0ciwg
dW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAogICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+ZmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQogICAg
c2l6ZV90IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25l
ZCBzdGFydCA9ICgyMTQ3NDgzNjQ3ICogMlUgKyAxVSkpIGNvbnN0CiAgICAgICAgeyByZXR1cm4g
bV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFy
dCkgOiBub3RGb3VuZDsgfQoKCiAgICBzaXplX3QgZmluZChjb25zdCBjaGFyKiBzdHIsIHVuc2ln
bmVkIHN0YXJ0LCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gY2Fz
ZVNlbnNpdGl2ZSA/IGZpbmQoc3RyLCBzdGFydCkgOiBmaW5kSWdub3JpbmdDYXNlKHN0ciwgc3Rh
cnQpOyB9CiAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQs
IGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZl
ID8gZmluZChzdHIsIHN0YXJ0KSA6IGZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFydCk7IH0KICAg
IHNpemVfdCByZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQsIGJv
b2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8g
cmV2ZXJzZUZpbmQoc3RyLCBzdGFydCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIHN0
YXJ0KTsgfQoKICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
OwoKICAgIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7CgogICAg
Ym9vbCBjb250YWlucyhVQ2hhciBjKSBjb25zdCB7IHJldHVybiBmaW5kKGMpICE9IG5vdEZvdW5k
OyB9CiAgICBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZl
ID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZmluZChzdHIsIDAsIGNhc2VTZW5zaXRpdmUpICE9IG5v
dEZvdW5kOyB9CiAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3RyLCBib29sIGNhc2VT
ZW5zaXRpdmUgPSB0cnVlKSBjb25zdCB7IHJldHVybiBmaW5kKHN0ciwgMCwgY2FzZVNlbnNpdGl2
ZSkgIT0gbm90Rm91bmQ7IH0KCiAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzLCBi
b29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgIHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+c3RhcnRzV2l0aChzLmltcGwoKSwgY2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHko
KTsgfQogICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2
ZSA9IHRydWUpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0
aChzLmltcGwoKSwgY2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHkoKTsgfQoKICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IFN0cmluZyYpOwogICAgdm9pZCBhcHBlbmQoY2hhcik7CiAgICB2b2lkIGFwcGVu
ZChVQ2hhcik7CiAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7
CiAgICB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3MpOwogICAgdm9pZCBp
bnNlcnQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHBvcyk7CgogICAg
U3RyaW5nJiByZXBsYWNlKFVDaGFyIGEsIFVDaGFyIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0g
bV9pbXBsLT5yZXBsYWNlKGEsIGIpOyByZXR1cm4gKnRoaXM7IH0KICAgIFN0cmluZyYgcmVwbGFj
ZShVQ2hhciBhLCBjb25zdCBTdHJpbmcmIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBs
LT5yZXBsYWNlKGEsIGIuaW1wbCgpKTsgcmV0dXJuICp0aGlzOyB9CiAgICBTdHJpbmcmIHJlcGxh
Y2UoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBs
ID0gbV9pbXBsLT5yZXBsYWNlKGEuaW1wbCgpLCBiLmltcGwoKSk7IHJldHVybiAqdGhpczsgfQog
ICAgU3RyaW5nJiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIGNvbnN0IFN0
cmluZyYgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UoaW5kZXgsIGxl
biwgYi5pbXBsKCkpOyByZXR1cm4gKnRoaXM7IH0KCiAgICB2b2lkIG1ha2VMb3dlcigpIHsgaWYg
KG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT5sb3dlcigpOyB9CiAgICB2b2lkIG1ha2VVcHBlcigp
IHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT51cHBlcigpOyB9CiAgICB2b2lkIGZpbGwo
VUNoYXIgYykgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPmZpbGwoYyk7IH0KCiAgICB2
b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbik7CiAgICB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3Ms
IGludCBsZW4gPSAxKTsKCiAgICBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWdu
ZWQgbGVuID0gKDIxNDc0ODM2NDcgKiAyVSArIDFVKSkgY29uc3Q7CiAgICBTdHJpbmcgc3Vic3Ry
aW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSAoMjE0NzQ4MzY0NyAq
IDJVICsgMVUpKSBjb25zdDsKICAgIFN0cmluZyBsZWZ0KHVuc2lnbmVkIGxlbikgY29uc3QgeyBy
ZXR1cm4gc3Vic3RyaW5nKDAsIGxlbik7IH0KICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4p
IGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQoKCiAgICBT
dHJpbmcgbG93ZXIoKSBjb25zdDsKICAgIFN0cmluZyB1cHBlcigpIGNvbnN0OwoKICAgIFN0cmlu
ZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKICAgIFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoSXNX
aGl0ZVNwYWNlRnVuY3Rpb25QdHIpIGNvbnN0OwogICAgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFj
ZSgpIGNvbnN0OwogICAgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5j
dGlvblB0cikgY29uc3Q7CgogICAgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0
Y2hGdW5jdGlvblB0cikgY29uc3Q7CiAgICB0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3Rl
cihVQ2hhcik+IGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycygpIGNvbnN0OwoKCiAgICBTdHJp
bmcgZm9sZENhc2UoKSBjb25zdDsKCgoKCiAgICBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBj
aGFyICosIC4uLik7CgoKCgoKICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSkgeyByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRl
VW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9CgogICAgdm9pZCBzcGxpdChjb25zdCBTdHJp
bmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CiAgICB2b2lkIHNw
bGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0
b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKICAgIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9y
LCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKICAgIHZvaWQgc3BsaXQoVUNoYXIgc2Vw
YXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBj
b25zdDsKCiAgICBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBj
b25zdDsKICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0g
MTApIGNvbnN0OwogICAgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJh
c2UgPSAxMCkgY29uc3Q7CiAgICB1aW50NjRfdCB0b1VJbnQ2NFN0cmljdChib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApIGNvbnN0OwogICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCog
b2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKCiAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAw
KSBjb25zdDsKICAgIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IDApIGNvbnN0OwogICAgaW50
NjRfdCB0b0ludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7CiAgICB1aW50NjRfdCB0b1VJbnQ2NChi
b29sKiBvayA9IDApIGNvbnN0OwogICAgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSAwKSBj
b25zdDsKICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWROdW1i
ZXIgPSAwKSBjb25zdDsKICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwLCBib29sKiBkaWRS
ZWFkTnVtYmVyID0gMCkgY29uc3Q7CgogICAgYm9vbCBwZXJjZW50YWdlKGludCYgcGVyY2VudGFn
ZSkgY29uc3Q7CgoKICAgIFN0cmluZyBjcm9zc1RocmVhZFN0cmluZygpIGNvbnN0OwoKCgoKICAg
IFN0cmluZyB0aHJlYWRzYWZlQ29weSgpIGNvbnN0OwoKCgogICAgdHlwZWRlZiBzdHJ1Y3QgSW1w
bGljaXRDb252ZXJzaW9uRnJvbVdURlN0cmluZ1RvQm9vbERpc2FsbG93ZWRBKiAoU3RyaW5nOjoq
VW5zcGVjaWZpZWRCb29sVHlwZUEpOwogICAgdHlwZWRlZiBzdHJ1Y3QgSW1wbGljaXRDb252ZXJz
aW9uRnJvbVdURlN0cmluZ1RvQm9vbERpc2FsbG93ZWRCKiAoU3RyaW5nOjoqVW5zcGVjaWZpZWRC
b29sVHlwZUIpOwogICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZUEoKSBjb25zdDsKICAg
IG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGVCKCkgY29uc3Q7CgoKICAgIFN0cmluZyhDRlN0
cmluZ1JlZik7CiAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpIGNvbnN0OwoKCgogICAg
U3RyaW5nKE5TU3RyaW5nKik7CgoKCiAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IGlm
ICghbV9pbXBsKSByZXR1cm4gQCIiOyByZXR1cm4gKm1faW1wbDsgfQoKCgogICAgU3RyaW5nKGNv
bnN0IFFTdHJpbmcmKTsKICAgIFN0cmluZyhjb25zdCBRU3RyaW5nUmVmJik7CiAgICBvcGVyYXRv
ciBRU3RyaW5nKCkgY29uc3Q7CiMgMzI5ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvV1RGU3RyaW5nLmgiCiAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNo
YXIqLCBzaXplX3QpOwogICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CgoK
ICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgY2hhcios
IHNpemVfdCk7CgoKICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGly
ZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCkgY29uc3QKICAgIHsKICAg
ICAgICBpZiAobV9pbXBsKQogICAgICAgICAgICByZXR1cm4gbV9pbXBsLT5kZWZhdWx0V3JpdGlu
Z0RpcmVjdGlvbihoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CiAgICAgICAgaWYgKGhhc1N0cm9u
Z0RpcmVjdGlvbmFsaXR5KQogICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBm
YWxzZTsKICAgICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsKICAgIH0KCiAg
ICBib29sIGNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJKGNoYXJhY3RlcnMoKSwgbGVuZ3RoKCkpOyB9CiAgICBib29sIGNvbnRhaW5zT25seUxh
dGluMSgpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxMYXRpbjEoY2hhcmFjdGVycygp
LCBsZW5ndGgoKSk7IH0KCgogICAgU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkgOiBtX2ltcGwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQogICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5pc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpOyB9CgoKICAgIHZvaWQgc2hvdygpIGNvbnN0OwoKCnByaXZhdGU6CiAgICBS
ZWZQdHI8U3RyaW5nSW1wbD4gbV9pbXBsOwp9OwoKClFEYXRhU3RyZWFtJiBvcGVyYXRvcjw8KFFE
YXRhU3RyZWFtJiBzdHJlYW0sIGNvbnN0IFN0cmluZyYgc3RyKTsKUURhdGFTdHJlYW0mIG9wZXJh
dG9yPj4oUURhdGFTdHJlYW0mIHN0cmVhbSwgU3RyaW5nJiBzdHIpOwoKCmlubGluZSBTdHJpbmcm
IG9wZXJhdG9yKz0oU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgYS5hcHBlbmQoYik7IHJl
dHVybiBhOyB9CgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3Qg
U3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CmlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBl
cXVhbChhLmltcGwoKSwgYik7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyKiBh
LCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEsIGIuaW1wbCgpKTsgfQoKaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1
cm4gIWVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwg
Yik7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGFyKiBhLCBjb25zdCBTdHJpbmcm
IGIpIHsgcmV0dXJuICFlcXVhbChhLCBiLmltcGwoKSk7IH0KCmlubGluZSBib29sIGVxdWFsSWdu
b3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVh
bElnbm9yaW5nQ2FzZShhLmltcGwoKSwgYi5pbXBsKCkpOyB9CmlubGluZSBib29sIGVxdWFsSWdu
b3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gZXF1YWxJ
Z25vcmluZ0Nhc2UoYS5pbXBsKCksIGIpOyB9CmlubGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNl
KGNvbnN0IGNoYXIqIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nh
c2UoYSwgYi5pbXBsKCkpOyB9CgppbmxpbmUgYm9vbCBlcXVhbFBvc3NpYmx5SWdub3JpbmdDYXNl
KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiLCBib29sIGlnbm9yZUNhc2UpCnsKICAg
IHJldHVybiBpZ25vcmVDYXNlID8gZXF1YWxJZ25vcmluZ0Nhc2UoYSwgYikgOiAoYSA9PSBiKTsK
fQoKaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgU3RyaW5nJiBhLCBjb25z
dCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdOdWxsaXR5KGEuaW1wbCgpLCBiLmlt
cGwoKSk7IH0KCnRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KaW5saW5lIGJvb2wgZXF1
YWxJZ25vcmluZ051bGxpdHkoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEs
IGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ051bGxpdHkoYSwgYi5pbXBs
KCkpOyB9CgppbmxpbmUgYm9vbCBvcGVyYXRvciEoY29uc3QgU3RyaW5nJiBzdHIpIHsgcmV0dXJu
IHN0ci5pc051bGwoKTsgfQoKaW5saW5lIHZvaWQgc3dhcChTdHJpbmcmIGEsIFN0cmluZyYgYikg
eyBhLnN3YXAoYik7IH0KCgoKdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgpTdHJpbmc6
OlN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQogICAg
OiBtX2ltcGwodmVjdG9yLnNpemUoKSA/IFN0cmluZ0ltcGw6OmNyZWF0ZSh2ZWN0b3IuZGF0YSgp
LCB2ZWN0b3Iuc2l6ZSgpKSA6IDApCnsKfQoKCgoKCmlubGluZSBOU1N0cmluZyogbnNTdHJpbmdO
aWxJZkVtcHR5KGNvbnN0IFN0cmluZyYgc3RyKSB7IHJldHVybiBzdHIuaXNFbXB0eSgpID8gX19u
dWxsIDogKE5TU3RyaW5nKilzdHI7IH0KCgppbmxpbmUgYm9vbCBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCnsKICAgIFVDaGFyIG9y
ZWQgPSAwOwogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICBv
cmVkIHw9IGNoYXJhY3RlcnNbaV07CiAgICByZXR1cm4gIShvcmVkICYgMHhGRjgwKTsKfQoKaW5s
aW5lIGJvb2wgY2hhcmFjdGVyc0FyZUFsbExhdGluMShjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
c2l6ZV90IGxlbmd0aCkKewogICAgVUNoYXIgb3JlZCA9IDA7CiAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgIG9yZWQgfD0gY2hhcmFjdGVyc1tpXTsKICAgIHJl
dHVybiAhKG9yZWQgJiAweEZGMDApOwp9CgogaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJik7CgppbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVk
IGluZGV4ID0gMCkKewogICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CiAgICAgICAgaWYgKGNo
YXJhY3RlcnNbaW5kZXhdID09IG1hdGNoQ2hhcmFjdGVyKQogICAgICAgICAgICByZXR1cm4gaW5k
ZXg7CiAgICAgICAgKytpbmRleDsKICAgIH0KICAgIHJldHVybiBub3RGb3VuZDsKfQoKaW5saW5l
IHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENo
YXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5kZXggPSAw
KQp7CiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICBpZiAobWF0Y2hGdW5jdGlv
bihjaGFyYWN0ZXJzW2luZGV4XSkpCiAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAr
K2luZGV4OwogICAgfQogICAgcmV0dXJuIG5vdEZvdW5kOwp9CgppbmxpbmUgc2l6ZV90IHJldmVy
c2VGaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyIG1h
dGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9ICgyMTQ3NDgzNjQ3ICogMlUgKyAxVSkpCnsK
ICAgIGlmICghbGVuZ3RoKQogICAgICAgIHJldHVybiBub3RGb3VuZDsKICAgIGlmIChpbmRleCA+
PSBsZW5ndGgpCiAgICAgICAgaW5kZXggPSBsZW5ndGggLSAxOwogICAgd2hpbGUgKGNoYXJhY3Rl
cnNbaW5kZXhdICE9IG1hdGNoQ2hhcmFjdGVyKSB7CiAgICAgICAgaWYgKCFpbmRleC0tKQogICAg
ICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAgICB9CiAgICByZXR1cm4gaW5kZXg7Cn0KCmlubGlu
ZSB2b2lkIGFwcGVuZChWZWN0b3I8VUNoYXI+JiB2ZWN0b3IsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQp7CiAgICB2ZWN0b3IuYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzKCksIHN0cmluZy5sZW5ndGgo
KSk7Cn0KCmlubGluZSB2b2lkIGFwcGVuZE51bWJlcihWZWN0b3I8VUNoYXI+JiB2ZWN0b3IsIHVu
c2lnbmVkIGNoYXIgbnVtYmVyKQp7CiAgICBpbnQgbnVtYmVyTGVuZ3RoID0gbnVtYmVyID4gOTkg
PyAzIDogKG51bWJlciA+IDkgPyAyIDogMSk7CiAgICBzaXplX3QgdmVjdG9yU2l6ZSA9IHZlY3Rv
ci5zaXplKCk7CiAgICB2ZWN0b3IuZ3Jvdyh2ZWN0b3JTaXplICsgbnVtYmVyTGVuZ3RoKTsKCiAg
ICBzd2l0Y2ggKG51bWJlckxlbmd0aCkgewogICAgY2FzZSAzOgogICAgICAgIHZlY3Rvclt2ZWN0
b3JTaXplICsgMl0gPSBudW1iZXIgJSAxMCArICcwJzsKICAgICAgICBudW1iZXIgLz0gMTA7Cgog
ICAgY2FzZSAyOgogICAgICAgIHZlY3Rvclt2ZWN0b3JTaXplICsgMV0gPSBudW1iZXIgJSAxMCAr
ICcwJzsKICAgICAgICBudW1iZXIgLz0gMTA7CgogICAgY2FzZSAxOgogICAgICAgIHZlY3Rvclt2
ZWN0b3JTaXplXSA9IG51bWJlciAlIDEwICsgJzAnOwogICAgfQp9Cgp0ZW1wbGF0ZTxib29sIGlz
U3BlY2lhbENoYXJhY3RlcihVQ2hhcik+IGlubGluZSBib29sIGlzQWxsU3BlY2lhbENoYXJhY3Rl
cnMoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCnsKICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICBpZiAoIWlzU3BlY2lhbENoYXJh
Y3RlcihjaGFyYWN0ZXJzW2ldKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAg
cmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4g
aW5saW5lIGJvb2wgU3RyaW5nOjppc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3QKewogICAg
cmV0dXJuIFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc1NwZWNpYWxDaGFyYWN0ZXI+KGNo
YXJhY3RlcnMoKSwgbGVuZ3RoKCkpOwp9CgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERl
ZmF1bHRIYXNoOwp0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxTdHJpbmc+IHsKICAgIHR5
cGVkZWYgU3RyaW5nSGFzaCBIYXNoOwp9OwoKdGVtcGxhdGUgPD4gc3RydWN0IFZlY3RvclRyYWl0
czxTdHJpbmc+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwoKCiBjb25zdCBTdHJpbmcm
IGVtcHR5U3RyaW5nKCk7Cgp9Cgp1c2luZyBXVEY6OkNTdHJpbmc7CnVzaW5nIFdURjo6U3RyaW5n
Owp1c2luZyBXVEY6OmVtcHR5U3RyaW5nOwp1c2luZyBXVEY6OmFwcGVuZDsKdXNpbmcgV1RGOjph
cHBlbmROdW1iZXI7CnVzaW5nIFdURjo6Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJOwp1c2luZyBXVEY6
OmNoYXJhY3RlcnNBcmVBbGxMYXRpbjE7CnVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0
Owp1c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnRTdHJpY3Q7CnVzaW5nIFdURjo6Y2hhcmFjdGVy
c1RvSW50NjRTdHJpY3Q7CnVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0Owp1c2lu
ZyBXVEY6OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdDsKdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9J
bnQ7CnVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDsKdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9J
bnQ2NDsKdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQ7CnVzaW5nIFdURjo6Y2hhcmFjdGVy
c1RvSW50UHRyOwp1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0RvdWJsZTsKdXNpbmcgV1RGOjpjaGFy
YWN0ZXJzVG9GbG9hdDsKdXNpbmcgV1RGOjplcXVhbDsKdXNpbmcgV1RGOjplcXVhbElnbm9yaW5n
Q2FzZTsKdXNpbmcgV1RGOjpmaW5kOwp1c2luZyBXVEY6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM7
CnVzaW5nIFdURjo6aXNTcGFjZU9yTmV3bGluZTsKdXNpbmcgV1RGOjpyZXZlcnNlRmluZDsKCiMg
MSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5o
IiAxCiMgMjIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNT
dHJpbmcuaCIKI2RlZmluZSBBdG9taWNTdHJpbmdfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaCIgMQojIDIyICIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5oIgojZGVm
aW5lIEF0b21pY1N0cmluZ0ltcGxfaCAKCgoKbmFtZXNwYWNlIFdURiB7CgpjbGFzcyBBdG9taWNT
dHJpbmdJbXBsIDogcHVibGljIFN0cmluZ0ltcGwKewpwdWJsaWM6CiAgICBBdG9taWNTdHJpbmdJ
bXBsKCkgOiBTdHJpbmdJbXBsKDApIHt9Cn07Cgp9Cgp1c2luZyBXVEY6OkF0b21pY1N0cmluZ0lt
cGw7CiMgMjUgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNT
dHJpbmcuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9X
VEZTdHJpbmcuaCIgMQojIDI2ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmgiIDIKCgoKCgoKI2RlZmluZSBBVE9NSUNTVFJJTkdfQ09OVkVSU0lP
TiAKCgpuYW1lc3BhY2UgV1RGIHsKCnN0cnVjdCBBdG9taWNTdHJpbmdIYXNoOwoKY2xhc3MgQXRv
bWljU3RyaW5nIHsKcHVibGljOgogICAgc3RhdGljIHZvaWQgaW5pdCgpOwoKICAgIEF0b21pY1N0
cmluZygpIHsgfQogICAgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIqIHMpIDogbV9zdHJpbmcoYWRk
KHMpKSB7IH0KICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3Ro
KSA6IG1fc3RyaW5nKGFkZChzLCBsZW5ndGgpKSB7IH0KICAgIEF0b21pY1N0cmluZyhjb25zdCBV
Q2hhciogcywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpIDogbV9zdHJp
bmcoYWRkKHMsIGxlbmd0aCwgZXhpc3RpbmdIYXNoKSkgeyB9CiAgICBBdG9taWNTdHJpbmcoY29u
c3QgVUNoYXIqIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KICAgIEF0b21pY1N0cmluZyhTdHJp
bmdJbXBsKiBpbXApIDogbV9zdHJpbmcoYWRkKGltcCkpIHsgfQogICAgQXRvbWljU3RyaW5nKEF0
b21pY1N0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhpbXApIHsgfQogICAgQXRvbWljU3RyaW5n
KGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQocy5pbXBsKCkpKSB7IH0KCgogICAgQXRv
bWljU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9CiAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsg
fQoKICAgIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kKGNvbnN0IFVDaGFyKiBzLCB1bnNp
Z25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CgogICAgb3BlcmF0b3IgY29uc3Qg
U3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICBjb25zdCBTdHJpbmcmIHN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9OwoKICAgIEF0b21pY1N0cmluZ0ltcGwq
IGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsICo+KG1f
c3RyaW5nLmltcGwoKSk7IH0KCiAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsgfQogICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcubGVuZ3RoKCk7IH0KCiAgICBVQ2hhciBvcGVyYXRvcltdKHVu
c2lnbmVkIGludCBpKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ1tpXTsgfQoKICAgIGJvb2wgY29u
dGFpbnMoVUNoYXIgYykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoYyk7IH0KICAg
IGJvb2wgY29udGFpbnMoY29uc3QgY2hhciogcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkg
Y29uc3QKICAgICAgICB7IHJldHVybiBtX3N0cmluZy5jb250YWlucyhzLCBjYXNlU2Vuc2l0aXZl
KTsgfQogICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2
ZSA9IHRydWUpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMocywgY2Fz
ZVNlbnNpdGl2ZSk7IH0KCiAgICBzaXplX3QgZmluZChVQ2hhciBjLCBzaXplX3Qgc3RhcnQgPSAw
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKGMsIHN0YXJ0KTsgfQogICAgc2l6ZV90IGZp
bmQoY29uc3QgY2hhciogcywgc2l6ZV90IHN0YXJ0ID0gMCwgYm9vbCBjYXNlU2VudGl0aXZlID0g
dHJ1ZSkgY29uc3QKICAgICAgICB7IHJldHVybiBtX3N0cmluZy5maW5kKHMsIHN0YXJ0LCBjYXNl
U2VudGl0aXZlKTsgfQogICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzLCBzaXplX3Qgc3Rh
cnQgPSAwLCBib29sIGNhc2VTZW50aXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgIHsgcmV0dXJu
IG1fc3RyaW5nLmZpbmQocywgc3RhcnQsIGNhc2VTZW50aXRpdmUpOyB9CgogICAgYm9vbCBzdGFy
dHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QK
ICAgICAgICB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUpOyB9
CiAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0g
dHJ1ZSkgY29uc3QKICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzLCBjYXNlU2Vu
c2l0aXZlKTsgfQoKICAgIEF0b21pY1N0cmluZyBsb3dlcigpIGNvbnN0OwogICAgQXRvbWljU3Ry
aW5nIHVwcGVyKCkgY29uc3QgeyByZXR1cm4gQXRvbWljU3RyaW5nKGltcGwoKS0+dXBwZXIoKSk7
IH0KCiAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50
b0ludChvayk7IH0KICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDApIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLnRvRG91YmxlKG9rKTsgfQogICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9
IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvRmxvYXQob2spOyB9CiAgICBib29sIHBlcmNl
bnRhZ2UoaW50JiBwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5wZXJjZW50YWdlKHApOyB9Cgog
ICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQogICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9CgogICAg
c3RhdGljIHZvaWQgcmVtb3ZlKFN0cmluZ0ltcGwqKTsKCgogICAgQXRvbWljU3RyaW5nKENGU3Ry
aW5nUmVmIHMpIDogbV9zdHJpbmcoYWRkKFN0cmluZyhzKS5pbXBsKCkpKSB7IH0KICAgIENGU3Ry
aW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY3JlYXRlQ0ZT
dHJpbmcoKTsgfQoKCiAgICBBdG9taWNTdHJpbmcoTlNTdHJpbmcqIHMpIDogbV9zdHJpbmcoYWRk
KFN0cmluZyhzKS5pbXBsKCkpKSB7IH0KICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nOyB9CgoKICAgIEF0b21pY1N0cmluZyhjb25zdCBRU3RyaW5nJiBzKSA6
IG1fc3RyaW5nKGFkZChTdHJpbmcocykuaW1wbCgpKSkgeyB9CiAgICBvcGVyYXRvciBRU3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KCgoKCiAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgc3RhdGljIEF0b21pY1N0cmluZyBm
cm9tVVRGOChjb25zdCBjaGFyKik7CgoKICAgIHZvaWQgc2hvdygpIGNvbnN0OwoKcHJpdmF0ZToK
ICAgIFN0cmluZyBtX3N0cmluZzsKCiAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBh
ZGQoY29uc3QgY2hhciopOwogICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3Rp
bmdIYXNoKTsKICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hh
ciopOwogICAgaW5saW5lIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHIp
CiAgICB7CiAgICAgICAgaWYgKCFyIHx8IHItPmlzQXRvbWljKCkpCiAgICAgICAgICAgIHJldHVy
biByOwogICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShyKTsKICAgIH0KICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwqKTsKICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgZnJvbVVURjhJbnRlcm5hbChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwp9
OwoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IEF0
b21pY1N0cmluZyYgYikgeyByZXR1cm4gYS5pbXBsKCkgPT0gYi5pbXBsKCk7IH0KYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgY2hhciogYik7CmlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVy
biBXVEY6OmVxdWFsKGEuaW1wbCgpLCBiKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEF0b21pY1N0cmluZyYgYSwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYikgeyByZXR1cm4gYS5pbXBs
KCkgJiYgZXF1YWwoYS5pbXBsKCksIGIuZGF0YSgpLCBiLnNpemUoKSk7IH0KaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1
cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IGNoYXIqIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gYiA9PSBhOyB9Cmlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcm
IGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBWZWN0b3I8VUNoYXI+JiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsg
cmV0dXJuIGIgPT0gYTsgfQoKaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9taWNTdHJp
bmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gYS5pbXBsKCkgIT0gYi5pbXBs
KCk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0
IGNoYXIgKmIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwoYS5p
bXBsKCksIGIuaW1wbCgpKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21pY1N0
cmluZyYgYSwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYikgeyByZXR1cm4gIShhID09IGIpOyB9Cmlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciogYSwgY29uc3QgQXRvbWljU3RyaW5nJiBi
KSB7IHJldHVybiAhKGIgPT0gYSk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJp
bmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCBi
LmltcGwoKSk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8VUNoYXI+JiBh
LCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQoKaW5saW5lIGJv
b2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBBdG9taWNT
dHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGEuaW1wbCgpLCBiLmltcGwoKSk7
IH0KaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBhLCBj
b25zdCBjaGFyKiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShhLmltcGwoKSwgYik7IH0K
aW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25z
dCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGEuaW1wbCgpLCBiLmltcGwo
KSk7IH0KaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShhLCBiLmltcGwoKSk7
IH0KaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBB
dG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGEuaW1wbCgpLCBiLmlt
cGwoKSk7IH0KCgoKCmV4dGVybiBjb25zdCBBdG9taWNTdHJpbmcgbnVsbEF0b207CmV4dGVybiBj
b25zdCBBdG9taWNTdHJpbmcgZW1wdHlBdG9tOwpleHRlcm4gY29uc3QgQXRvbWljU3RyaW5nIHRl
eHRBdG9tOwpleHRlcm4gY29uc3QgQXRvbWljU3RyaW5nIGNvbW1lbnRBdG9tOwpleHRlcm4gY29u
c3QgQXRvbWljU3RyaW5nIHN0YXJBdG9tOwpleHRlcm4gY29uc3QgQXRvbWljU3RyaW5nIHhtbEF0
b207CmV4dGVybiBjb25zdCBBdG9taWNTdHJpbmcgeG1sbnNBdG9tOwoKaW5saW5lIEF0b21pY1N0
cmluZyBBdG9taWNTdHJpbmc6OmZyb21VVEY4KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBsZW5ndGgpCnsKICAgIGlmICghY2hhcmFjdGVycykKICAgICAgICByZXR1cm4gbnVsbEF0b207
CiAgICBpZiAoIWxlbmd0aCkKICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgcmV0dXJuIGZy
b21VVEY4SW50ZXJuYWwoY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxlbmd0aCk7Cn0KCmlubGlu
ZSBBdG9taWNTdHJpbmcgQXRvbWljU3RyaW5nOjpmcm9tVVRGOChjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzKQp7CiAgICBpZiAoIWNoYXJhY3RlcnMpCiAgICAgICAgcmV0dXJuIG51bGxBdG9tOwogICAg
aWYgKCEqY2hhcmFjdGVycykKICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgcmV0dXJuIGZy
b21VVEY4SW50ZXJuYWwoY2hhcmFjdGVycywgMCk7Cn0KCgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IERlZmF1bHRIYXNoOwp0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxBdG9taWNT
dHJpbmc+IHsKICAgIHR5cGVkZWYgQXRvbWljU3RyaW5nSGFzaCBIYXNoOwp9OwoKfQoKCnVzaW5n
IFdURjo6QXRvbWljU3RyaW5nOwp1c2luZyBXVEY6Om51bGxBdG9tOwp1c2luZyBXVEY6OmVtcHR5
QXRvbTsKdXNpbmcgV1RGOjp0ZXh0QXRvbTsKdXNpbmcgV1RGOjpjb21tZW50QXRvbTsKdXNpbmcg
V1RGOjpzdGFyQXRvbTsKdXNpbmcgV1RGOjp4bWxBdG9tOwp1c2luZyBXVEY6OnhtbG5zQXRvbTsK
CgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZS5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oIgojZGVmaW5lIFN0cmluZ0NvbmNhdGVuYXRlX2ggCiMgMzYg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZS5oIgojZGVmaW5lIFdURl9TVFJJTkdUWVBFQURBUFRFUl9DT1BJRURfV1RGX1NUUklORygpICgo
dm9pZCkwKQoKCm5hbWVzcGFjZSBXVEYgewoKdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZT4K
Y2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXIgewp9OwoKdGVtcGxhdGU8PgpjbGFzcyBTdHJpbmdUeXBl
QWRhcHRlcjxjaGFyPiB7CnB1YmxpYzoKICAgIFN0cmluZ1R5cGVBZGFwdGVyPGNoYXI+KGNoYXIg
YnVmZmVyKQogICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQogICAgewogICAgfQoKICAgIHVuc2ln
bmVkIGxlbmd0aCgpIHsgcmV0dXJuIDE7IH0KICAgIHZvaWQgd3JpdGVUbyhVQ2hhciogZGVzdGlu
YXRpb24pIHsgKmRlc3RpbmF0aW9uID0gbV9idWZmZXI7IH0KCnByaXZhdGU6CiAgICB1bnNpZ25l
ZCBjaGFyIG1fYnVmZmVyOwp9OwoKdGVtcGxhdGU8PgpjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxV
Q2hhcj4gewpwdWJsaWM6CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxVQ2hhcj4oVUNoYXIgYnVmZmVy
KQogICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQogICAgewogICAgfQoKICAgIHVuc2lnbmVkIGxl
bmd0aCgpIHsgcmV0dXJuIDE7IH0KICAgIHZvaWQgd3JpdGVUbyhVQ2hhciogZGVzdGluYXRpb24p
IHsgKmRlc3RpbmF0aW9uID0gbV9idWZmZXI7IH0KCnByaXZhdGU6CiAgICBVQ2hhciBtX2J1ZmZl
cjsKfTsKCnRlbXBsYXRlPD4KY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8Y2hhcio+IHsKcHVibGlj
OgogICAgU3RyaW5nVHlwZUFkYXB0ZXI8Y2hhcio+KGNoYXIqIGJ1ZmZlcikKICAgICAgICA6IG1f
YnVmZmVyKGJ1ZmZlcikKICAgICAgICAsIG1fbGVuZ3RoKHN0cmxlbihidWZmZXIpKQogICAgewog
ICAgfQoKICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9CgogICAgdm9p
ZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikKICAgIHsKICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkgewogICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMg
PSBtX2J1ZmZlcltpXTsKICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBjOwogICAgICAgIH0K
ICAgIH0KCnByaXZhdGU6CiAgICBjb25zdCBjaGFyKiBtX2J1ZmZlcjsKICAgIHVuc2lnbmVkIG1f
bGVuZ3RoOwp9OwoKdGVtcGxhdGU8PgpjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBVQ2hh
cio+IHsKcHVibGljOgogICAgU3RyaW5nVHlwZUFkYXB0ZXI8Y29uc3QgVUNoYXIqPihjb25zdCBV
Q2hhciogYnVmZmVyKQogICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQogICAgewogICAgICAgIHNp
emVfdCBsZW4gPSAwOwogICAgICAgIHdoaWxlIChtX2J1ZmZlcltsZW5dICE9IFVDaGFyKDApKQog
ICAgICAgICAgICBsZW4rKzsKCiAgICAgICAgaWYgKGxlbiA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgICAgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsg
KihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdo
aWxlIChmYWxzZSk7CgogICAgICAgIG1fbGVuZ3RoID0gbGVuOwogICAgfQoKICAgIHVuc2lnbmVk
IGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9CgogICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBk
ZXN0aW5hdGlvbikKICAgIHsKICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIG1fYnVmZmVyLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KG1fbGVuZ3RoKSAqIHNpemVvZihVQ2hhcikpOwogICAgfQoKcHJp
dmF0ZToKICAgIGNvbnN0IFVDaGFyKiBtX2J1ZmZlcjsKICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwp9
OwoKdGVtcGxhdGU8PgpjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBjaGFyKj4gewpwdWJs
aWM6CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBjaGFyKj4oY29uc3QgY2hhciogYnVmZmVy
KQogICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQogICAgICAgICwgbV9sZW5ndGgoc3RybGVuKGJ1
ZmZlcikpCiAgICB7CiAgICB9CgogICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9sZW5n
dGg7IH0KCiAgICB2b2lkIHdyaXRlVG8oVUNoYXIqIGRlc3RpbmF0aW9uKQogICAgewogICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKSB7CiAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgYyA9IG1fYnVmZmVyW2ldOwogICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9
IGM7CiAgICAgICAgfQogICAgfQoKcHJpdmF0ZToKICAgIGNvbnN0IGNoYXIqIG1fYnVmZmVyOwog
ICAgdW5zaWduZWQgbV9sZW5ndGg7Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIFN0cmluZ1R5cGVBZGFw
dGVyPFZlY3RvcjxjaGFyPiA+IHsKcHVibGljOgogICAgU3RyaW5nVHlwZUFkYXB0ZXI8VmVjdG9y
PGNoYXI+ID4oY29uc3QgVmVjdG9yPGNoYXI+JiBidWZmZXIpCiAgICAgICAgOiBtX2J1ZmZlcihi
dWZmZXIpCiAgICB7CiAgICB9CgogICAgc2l6ZV90IGxlbmd0aCgpIHsgcmV0dXJuIG1fYnVmZmVy
LnNpemUoKTsgfQoKICAgIHZvaWQgd3JpdGVUbyhVQ2hhciogZGVzdGluYXRpb24pCiAgICB7CiAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2J1ZmZlci5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBtX2J1ZmZlcltpXTsKICAgICAgICAgICAgZGVzdGlu
YXRpb25baV0gPSBjOwogICAgICAgIH0KICAgIH0KCnByaXZhdGU6CiAgICBjb25zdCBWZWN0b3I8
Y2hhcj4mIG1fYnVmZmVyOwp9OwoKdGVtcGxhdGU8PgpjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmc+IHsKcHVibGljOgogICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nPihjb25zdCBTdHJp
bmcmIHN0cmluZykKICAgICAgICA6IG1fYnVmZmVyKHN0cmluZykKICAgIHsKICAgIH0KCiAgICB1
bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiBtX2J1ZmZlci5sZW5ndGgoKTsgfQoKICAgIHZvaWQg
d3JpdGVUbyhVQ2hhciogZGVzdGluYXRpb24pCiAgICB7CiAgICAgICAgY29uc3QgVUNoYXIqIGRh
dGEgPSBtX2J1ZmZlci5jaGFyYWN0ZXJzKCk7CiAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9i
dWZmZXIubGVuZ3RoKCk7CiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKQogICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IGRhdGFbaV07CgogICAgICAgICgodm9p
ZCkwKTsKICAgIH0KCnByaXZhdGU6CiAgICBjb25zdCBTdHJpbmcmIG1fYnVmZmVyOwp9OwoKdGVt
cGxhdGU8PgpjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBdG9taWNTdHJpbmc+IHsKcHVibGljOgog
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8QXRvbWljU3RyaW5nPihjb25zdCBBdG9taWNTdHJpbmcmIHN0
cmluZykKICAgICAgICA6IG1fYWRhcHRlcihzdHJpbmcuc3RyaW5nKCkpCiAgICB7CiAgICB9Cgog
ICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9hZGFwdGVyLmxlbmd0aCgpOyB9CiAgICB2
b2lkIHdyaXRlVG8oVUNoYXIqIGRlc3RpbmF0aW9uKSB7IG1fYWRhcHRlci53cml0ZVRvKGRlc3Rp
bmF0aW9uKTsgfQoKcHJpdmF0ZToKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZz4gbV9hZGFw
dGVyOwp9OwoKaW5saW5lIHZvaWQgc3VtV2l0aE92ZXJmbG93KHVuc2lnbmVkJiB0b3RhbCwgdW5z
aWduZWQgYWRkZW5kLCBib29sJiBvdmVyZmxvdykKewogICAgdW5zaWduZWQgb2xkVG90YWwgPSB0
b3RhbDsKICAgIHRvdGFsID0gb2xkVG90YWwgKyBhZGRlbmQ7CiAgICBpZiAodG90YWwgPCBvbGRU
b3RhbCkKICAgICAgICBvdmVyZmxvdyA9IHRydWU7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmlu
Z1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMj4KUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlN
YWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIpCnsKICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJpbmcxKTsKICAgIFN0
cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihzdHJpbmcyKTsKCiAgICBVQ2hh
ciogYnVmZmVyOwogICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOwogICAgdW5zaWduZWQgbGVuZ3Ro
ID0gYWRhcHRlcjEubGVuZ3RoKCk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVy
Mi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgaWYgKG92ZXJmbG93KQogICAgICAgIHJldHVybiAw
OwogICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKICAgIGlmICghcmVzdWx0SW1wbCkKICAg
ICAgICByZXR1cm4gMDsKCiAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOwogICAgYWRhcHRlcjEu
d3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgpOwogICAgYWRh
cHRlcjIud3JpdGVUbyhyZXN1bHQpOwoKICAgIHJldHVybiByZXN1bHRJbXBsLnJlbGVhc2UoKTsK
fQoKdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0
eXBlbmFtZSBTdHJpbmdUeXBlMz4KUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5n
KFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0
cmluZzMpCnsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJp
bmcxKTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihzdHJpbmcy
KTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsK
CiAgICBVQ2hhciogYnVmZmVyID0gMDsKICAgIGJvb2wgb3ZlcmZsb3cgPSBmYWxzZTsKICAgIHVu
c2lnbmVkIGxlbmd0aCA9IGFkYXB0ZXIxLmxlbmd0aCgpOwogICAgc3VtV2l0aE92ZXJmbG93KGxl
bmd0aCwgYWRhcHRlcjIubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhs
ZW5ndGgsIGFkYXB0ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBpZiAob3ZlcmZsb3cpCiAg
ICAgICAgcmV0dXJuIDA7CiAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmlu
Z0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwogICAgaWYgKCFy
ZXN1bHRJbXBsKQogICAgICAgIHJldHVybiAwOwoKICAgIFVDaGFyKiByZXN1bHQgPSBidWZmZXI7
CiAgICBhZGFwdGVyMS53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVu
Z3RoKCk7CiAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRl
cjIubGVuZ3RoKCk7CiAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7CgogICAgcmV0dXJuIHJl
c3VsdEltcGwucmVsZWFzZSgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlw
ZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdU
eXBlND4KUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0
cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5
cGU0IHN0cmluZzQpCnsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVy
MShzdHJpbmcxKTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihz
dHJpbmcyKTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJp
bmczKTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU0PiBhZGFwdGVyNChzdHJpbmc0
KTsKCiAgICBVQ2hhciogYnVmZmVyOwogICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOwogICAgdW5z
aWduZWQgbGVuZ3RoID0gYWRhcHRlcjEubGVuZ3RoKCk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVu
Z3RoLCBhZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxl
bmd0aCwgYWRhcHRlcjMubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhs
ZW5ndGgsIGFkYXB0ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBpZiAob3ZlcmZsb3cpCiAg
ICAgICAgcmV0dXJuIDA7CiAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmlu
Z0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwogICAgaWYgKCFy
ZXN1bHRJbXBsKQogICAgICAgIHJldHVybiAwOwoKICAgIFVDaGFyKiByZXN1bHQgPSBidWZmZXI7
CiAgICBhZGFwdGVyMS53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVu
Z3RoKCk7CiAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRl
cjIubGVuZ3RoKCk7CiAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0g
YWRhcHRlcjMubGVuZ3RoKCk7CiAgICBhZGFwdGVyNC53cml0ZVRvKHJlc3VsdCk7CgogICAgcmV0
dXJuIHJlc3VsdEltcGwucmVsZWFzZSgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBl
MSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBT
dHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTU+ClBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
dHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBT
dHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJp
bmc1KQp7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5n
MSk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7
CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CiAg
ICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CiAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNT4gYWRhcHRlcjUoc3RyaW5nNSk7CgogICAgVUNo
YXIqIGJ1ZmZlcjsKICAgIGJvb2wgb3ZlcmZsb3cgPSBmYWxzZTsKICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGFkYXB0ZXIxLmxlbmd0aCgpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRl
cjIubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0
ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFw
dGVyNC5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRh
cHRlcjUubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIGlmIChvdmVyZmxvdykKICAgICAgICByZXR1
cm4gMDsKICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CiAgICBpZiAoIXJlc3VsdEltcGwp
CiAgICAgICAgcmV0dXJuIDA7CgogICAgVUNoYXIqIHJlc3VsdCA9IGJ1ZmZlcjsKICAgIGFkYXB0
ZXIxLndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5ndGgoKTsKICAg
IGFkYXB0ZXIyLndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgo
KTsKICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyMy5s
ZW5ndGgoKTsKICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFw
dGVyNC5sZW5ndGgoKTsKICAgIGFkYXB0ZXI1LndyaXRlVG8ocmVzdWx0KTsKCiAgICByZXR1cm4g
cmVzdWx0SW1wbC5yZWxlYXNlKCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0
eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmlu
Z1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTY+ClBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJp
bmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0
LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2KQp7CiAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7CiAgICBTdHJpbmdUeXBl
QWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7CiAgICBTdHJpbmdUeXBlQWRh
cHRlcjxTdHJpbmdUeXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CiAgICBTdHJpbmdUeXBlQWRhcHRl
cjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdUeXBlNT4gYWRhcHRlcjUoc3RyaW5nNSk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJp
bmdUeXBlNj4gYWRhcHRlcjYoc3RyaW5nNik7CgogICAgVUNoYXIqIGJ1ZmZlcjsKICAgIGJvb2wg
b3ZlcmZsb3cgPSBmYWxzZTsKICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFkYXB0ZXIxLmxlbmd0aCgp
OwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIubGVuZ3RoKCksIG92ZXJmbG93
KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIzLmxlbmd0aCgpLCBvdmVyZmxv
dyk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNC5sZW5ndGgoKSwgb3ZlcmZs
b3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjUubGVuZ3RoKCksIG92ZXJm
bG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI2Lmxlbmd0aCgpLCBvdmVy
Zmxvdyk7CiAgICBpZiAob3ZlcmZsb3cpCiAgICAgICAgcmV0dXJuIDA7CiAgICBSZWZQdHI8U3Ry
aW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
bGVuZ3RoLCBidWZmZXIpOwogICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgIHJldHVybiAwOwoK
ICAgIFVDaGFyKiByZXN1bHQgPSBidWZmZXI7CiAgICBhZGFwdGVyMS53cml0ZVRvKHJlc3VsdCk7
CiAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7CiAgICBhZGFwdGVyMi53cml0ZVRvKHJl
c3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjIubGVuZ3RoKCk7CiAgICBhZGFwdGVyMy53cml0
ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjMubGVuZ3RoKCk7CiAgICBhZGFwdGVy
NC53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7CiAgICBh
ZGFwdGVyNS53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjUubGVuZ3RoKCk7
CiAgICBhZGFwdGVyNi53cml0ZVRvKHJlc3VsdCk7CgogICAgcmV0dXJuIHJlc3VsdEltcGwucmVs
ZWFzZSgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5n
VHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5h
bWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBl
Nz4KUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0
IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmlu
Z1R5cGU3IHN0cmluZzcpCnsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFw
dGVyMShzdHJpbmcxKTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVy
MihzdHJpbmcyKTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhz
dHJpbmczKTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU0PiBhZGFwdGVyNChzdHJp
bmc0KTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU1PiBhZGFwdGVyNShzdHJpbmc1
KTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsK
ICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU3PiBhZGFwdGVyNyhzdHJpbmc3KTsKCiAg
ICBVQ2hhciogYnVmZmVyOwogICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOwogICAgdW5zaWduZWQg
bGVuZ3RoID0gYWRhcHRlcjEubGVuZ3RoKCk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwg
YWRhcHRlcjMubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgs
IGFkYXB0ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3Ro
LCBhZGFwdGVyNS5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0
aCwgYWRhcHRlcjYubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5n
dGgsIGFkYXB0ZXI3Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBpZiAob3ZlcmZsb3cpCiAgICAg
ICAgcmV0dXJuIDA7CiAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0lt
cGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwogICAgaWYgKCFyZXN1
bHRJbXBsKQogICAgICAgIHJldHVybiAwOwoKICAgIFVDaGFyKiByZXN1bHQgPSBidWZmZXI7CiAg
ICBhZGFwdGVyMS53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3Ro
KCk7CiAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjIu
bGVuZ3RoKCk7CiAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRh
cHRlcjMubGVuZ3RoKCk7CiAgICBhZGFwdGVyNC53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQg
Kz0gYWRhcHRlcjQubGVuZ3RoKCk7CiAgICBhZGFwdGVyNS53cml0ZVRvKHJlc3VsdCk7CiAgICBy
ZXN1bHQgKz0gYWRhcHRlcjUubGVuZ3RoKCk7CiAgICBhZGFwdGVyNi53cml0ZVRvKHJlc3VsdCk7
CiAgICByZXN1bHQgKz0gYWRhcHRlcjYubGVuZ3RoKCk7CiAgICBhZGFwdGVyNy53cml0ZVRvKHJl
c3VsdCk7CgogICAgcmV0dXJuIHJlc3VsdEltcGwucmVsZWFzZSgpOwp9Cgp0ZW1wbGF0ZTx0eXBl
bmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5
cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1l
IFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTg+
ClBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcx
LCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBz
dHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdU
eXBlNyBzdHJpbmc3LCBTdHJpbmdUeXBlOCBzdHJpbmc4KQp7CiAgICBTdHJpbmdUeXBlQWRhcHRl
cjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJp
bmdUeXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdU
eXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBl
NT4gYWRhcHRlcjUoc3RyaW5nNSk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNj4g
YWRhcHRlcjYoc3RyaW5nNik7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNz4gYWRh
cHRlcjcoc3RyaW5nNyk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlOD4gYWRhcHRl
cjgoc3RyaW5nOCk7CgogICAgVUNoYXIqIGJ1ZmZlcjsKICAgIGJvb2wgb3ZlcmZsb3cgPSBmYWxz
ZTsKICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFkYXB0ZXIxLmxlbmd0aCgpOwogICAgc3VtV2l0aE92
ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhP
dmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1XaXRo
T3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNC5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0
aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjUubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdp
dGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI2Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1X
aXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNy5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3Vt
V2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjgubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIGlm
IChvdmVyZmxvdykKICAgICAgICByZXR1cm4gMDsKICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1
bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZl
cik7CiAgICBpZiAoIXJlc3VsdEltcGwpCiAgICAgICAgcmV0dXJuIDA7CgogICAgVUNoYXIqIHJl
c3VsdCA9IGJ1ZmZlcjsKICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCAr
PSBhZGFwdGVyMS5sZW5ndGgoKTsKICAgIGFkYXB0ZXIyLndyaXRlVG8ocmVzdWx0KTsKICAgIHJl
c3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsK
ICAgIHJlc3VsdCArPSBhZGFwdGVyMy5sZW5ndGgoKTsKICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVz
dWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKICAgIGFkYXB0ZXI1LndyaXRl
VG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKICAgIGFkYXB0ZXI2
LndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyNi5sZW5ndGgoKTsKICAgIGFk
YXB0ZXI3LndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyNy5sZW5ndGgoKTsK
ICAgIGFkYXB0ZXI4LndyaXRlVG8ocmVzdWx0KTsKCiAgICByZXR1cm4gcmVzdWx0SW1wbC5yZWxl
YXNlKCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdU
eXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFt
ZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTYsIHR5cGVuYW1lIFN0cmluZ1R5cGU3
LCB0eXBlbmFtZSBTdHJpbmdUeXBlOCwgdHlwZW5hbWUgU3RyaW5nVHlwZTk+ClBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBl
MiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJp
bmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBlNyBzdHJpbmc3
LCBTdHJpbmdUeXBlOCBzdHJpbmc4LCBTdHJpbmdUeXBlOSBzdHJpbmc5KQp7CiAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7CiAgICBTdHJpbmdUeXBl
QWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7CiAgICBTdHJpbmdUeXBlQWRh
cHRlcjxTdHJpbmdUeXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CiAgICBTdHJpbmdUeXBlQWRhcHRl
cjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdUeXBlNT4gYWRhcHRlcjUoc3RyaW5nNSk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJp
bmdUeXBlNj4gYWRhcHRlcjYoc3RyaW5nNik7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdU
eXBlNz4gYWRhcHRlcjcoc3RyaW5nNyk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBl
OD4gYWRhcHRlcjgoc3RyaW5nOCk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlOT4g
YWRhcHRlcjkoc3RyaW5nOSk7CgogICAgVUNoYXIqIGJ1ZmZlcjsKICAgIGJvb2wgb3ZlcmZsb3cg
PSBmYWxzZTsKICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFkYXB0ZXIxLmxlbmd0aCgpOwogICAgc3Vt
V2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1
bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBz
dW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNC5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAg
c3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjUubGVuZ3RoKCksIG92ZXJmbG93KTsKICAg
IHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI2Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAg
ICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNy5sZW5ndGgoKSwgb3ZlcmZsb3cpOwog
ICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjgubGVuZ3RoKCksIG92ZXJmbG93KTsK
ICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI5Lmxlbmd0aCgpLCBvdmVyZmxvdyk7
CiAgICBpZiAob3ZlcmZsb3cpCiAgICAgICAgcmV0dXJuIDA7CiAgICBSZWZQdHI8U3RyaW5nSW1w
bD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
LCBidWZmZXIpOwogICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgIHJldHVybiAwOwoKICAgIFVD
aGFyKiByZXN1bHQgPSBidWZmZXI7CiAgICBhZGFwdGVyMS53cml0ZVRvKHJlc3VsdCk7CiAgICBy
ZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7CiAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7
CiAgICByZXN1bHQgKz0gYWRhcHRlcjIubGVuZ3RoKCk7CiAgICBhZGFwdGVyMy53cml0ZVRvKHJl
c3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjMubGVuZ3RoKCk7CiAgICBhZGFwdGVyNC53cml0
ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7CiAgICBhZGFwdGVy
NS53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjUubGVuZ3RoKCk7CiAgICBh
ZGFwdGVyNi53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjYubGVuZ3RoKCk7
CiAgICBhZGFwdGVyNy53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjcubGVu
Z3RoKCk7CiAgICBhZGFwdGVyOC53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRl
cjgubGVuZ3RoKCk7CiAgICBhZGFwdGVyOS53cml0ZVRvKHJlc3VsdCk7CgogICAgcmV0dXJuIHJl
c3VsdEltcGwucmVsZWFzZSgpOwp9CgoKCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxPgpT
dHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxKQp7CiAgICByZXR1cm4gU3RyaW5n
KHN0cmluZzEpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTI+ClN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5
cGUyIHN0cmluZzIpCnsKICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFr
ZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyKTsKICAgIGlmICghcmVzdWx0SW1wbCkKICAgICAgICBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsKICAgIHJldHVybiByZXN1bHRJ
bXBsLnJlbGVhc2UoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1l
IFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMz4KU3RyaW5nIG1ha2VTdHJpbmcoU3Ry
aW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5n
MykKewogICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlNYWtlU3RyaW5nKHN0
cmluZzEsIHN0cmluZzIsIHN0cmluZzMpOwogICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgIGRv
IHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0g
MDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOwogICAgcmV0dXJuIHJlc3VsdElt
cGwucmVsZWFzZSgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUg
U3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlND4K
U3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5n
MiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCkKewogICAgUmVmUHRy
PFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIs
IHN0cmluZzMsIHN0cmluZzQpOwogICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgIGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOwogICAgcmV0dXJuIHJlc3VsdEltcGwucmVs
ZWFzZSgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5n
VHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5h
bWUgU3RyaW5nVHlwZTU+ClN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0
cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmlu
ZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUpCnsKICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJ
bXBsID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBz
dHJpbmc1KTsKICAgIGlmICghcmVzdWx0SW1wbCkKICAgICAgICBkbyB7IFdURlJlcG9ydEJhY2t0
cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTAp
KCk7IH0gd2hpbGUgKGZhbHNlKTsKICAgIHJldHVybiByZXN1bHRJbXBsLnJlbGVhc2UoKTsKfQoK
dGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBl
bmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5
cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNj4KU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEg
c3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5n
VHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNikK
ewogICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlNYWtlU3RyaW5nKHN0cmlu
ZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYpOwogICAgaWYg
KCFyZXN1bHRJbXBsKQogICAgICAgIGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICop
KHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFs
c2UpOwogICAgcmV0dXJuIHJlc3VsdEltcGwucmVsZWFzZSgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUz
LCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0
cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNz4KU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5n
VHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywg
U3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3Ry
aW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNykKewogICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3Vs
dEltcGwgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQs
IHN0cmluZzUsIHN0cmluZzYsIHN0cmluZzcpOwogICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAg
IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVm
ID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOwogICAgcmV0dXJuIHJlc3Vs
dEltcGwucmVsZWFzZSgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5h
bWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBl
NCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBT
dHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTg+ClN0cmluZyBtYWtlU3RyaW5nKFN0cmlu
Z1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMs
IFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0
cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgpCnsKICAgIFJl
ZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJp
bmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJpbmc2LCBzdHJpbmc3LCBzdHJpbmc4
KTsKICAgIGlmICghcmVzdWx0SW1wbCkKICAgICAgICBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgp
OyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0g
d2hpbGUgKGZhbHNlKTsKICAgIHJldHVybiByZXN1bHRJbXBsLnJlbGVhc2UoKTsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBT
dHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0
eXBlbmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTcsIHR5cGVuYW1lIFN0cmlu
Z1R5cGU4LCB0eXBlbmFtZSBTdHJpbmdUeXBlOT4KU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlw
ZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3Ry
aW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5n
NiwgU3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlwZTggc3RyaW5nOCwgU3RyaW5nVHlwZTkg
c3RyaW5nOSkKewogICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlNYWtlU3Ry
aW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYs
IHN0cmluZzcsIHN0cmluZzgsIHN0cmluZzkpOwogICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAg
IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVm
ID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOwogICAgcmV0dXJuIHJlc3Vs
dEltcGwucmVsZWFzZSgpOwp9Cgp9Cgp1c2luZyBXVEY6Om1ha2VTdHJpbmc7CgojIDEgIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdPcGVyYXRvcnMuaCIgMQoj
IDIzICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nT3BlcmF0
b3JzLmgiCiNkZWZpbmUgU3RyaW5nT3BlcmF0b3JzX2ggCgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBs
YXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMj4KY2xhc3MgU3Ry
aW5nQXBwZW5kIHsKcHVibGljOgogICAgU3RyaW5nQXBwZW5kKFN0cmluZ1R5cGUxIHN0cmluZzEs
IFN0cmluZ1R5cGUyIHN0cmluZzIpCiAgICAgICAgOiBtX3N0cmluZzEoc3RyaW5nMSkKICAgICAg
ICAsIG1fc3RyaW5nMihzdHJpbmcyKQogICAgewogICAgfQoKICAgIG9wZXJhdG9yIFN0cmluZygp
IGNvbnN0CiAgICB7CiAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlN
YWtlU3RyaW5nKG1fc3RyaW5nMSwgbV9zdHJpbmcyKTsKICAgICAgICBpZiAoIXJlc3VsdEltcGwp
CiAgICAgICAgICAgIGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJf
dCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOwogICAg
ICAgIHJldHVybiByZXN1bHRJbXBsLnJlbGVhc2UoKTsKICAgIH0KCiAgICBvcGVyYXRvciBBdG9t
aWNTdHJpbmcoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBvcGVyYXRvciBTdHJpbmcoKTsK
ICAgIH0KCiAgICB2b2lkIHdyaXRlVG8oVUNoYXIqIGRlc3RpbmF0aW9uKQogICAgewogICAgICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShtX3N0cmluZzEpOwogICAg
ICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihtX3N0cmluZzIpOwog
ICAgICAgIGFkYXB0ZXIxLndyaXRlVG8oZGVzdGluYXRpb24pOwogICAgICAgIGFkYXB0ZXIyLndy
aXRlVG8oZGVzdGluYXRpb24gKyBhZGFwdGVyMS5sZW5ndGgoKSk7CiAgICB9CgogICAgdW5zaWdu
ZWQgbGVuZ3RoKCkKICAgIHsKICAgICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4g
YWRhcHRlcjEobV9zdHJpbmcxKTsKICAgICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBl
Mj4gYWRhcHRlcjIobV9zdHJpbmcyKTsKICAgICAgICByZXR1cm4gYWRhcHRlcjEubGVuZ3RoKCkg
KyBhZGFwdGVyMi5sZW5ndGgoKTsKICAgIH0KCnByaXZhdGU6CiAgICBTdHJpbmdUeXBlMSBtX3N0
cmluZzE7CiAgICBTdHJpbmdUeXBlMiBtX3N0cmluZzI7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBT
dHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTI+CmNsYXNzIFN0cmluZ1R5cGVBZGFwdGVy
PFN0cmluZ0FwcGVuZDxTdHJpbmdUeXBlMSwgU3RyaW5nVHlwZTI+ID4gewpwdWJsaWM6CiAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdBcHBlbmQ8U3RyaW5nVHlwZTEsIFN0cmluZ1R5cGUyPiA+
KFN0cmluZ0FwcGVuZDxTdHJpbmdUeXBlMSwgU3RyaW5nVHlwZTI+JiBidWZmZXIpCiAgICAgICAg
OiBtX2J1ZmZlcihidWZmZXIpCiAgICB7CiAgICB9CgogICAgdW5zaWduZWQgbGVuZ3RoKCkgeyBy
ZXR1cm4gbV9idWZmZXIubGVuZ3RoKCk7IH0KICAgIHZvaWQgd3JpdGVUbyhVQ2hhciogZGVzdGlu
YXRpb24pIHsgbV9idWZmZXIud3JpdGVUbyhkZXN0aW5hdGlvbik7IH0KCnByaXZhdGU6CiAgICBT
dHJpbmdBcHBlbmQ8U3RyaW5nVHlwZTEsIFN0cmluZ1R5cGUyPiYgbV9idWZmZXI7Cn07Cgppbmxp
bmUgU3RyaW5nQXBwZW5kPGNvbnN0IGNoYXIqLCBTdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBjaGFy
KiBzdHJpbmcxLCBjb25zdCBTdHJpbmcmIHN0cmluZzIpCnsKICAgIHJldHVybiBTdHJpbmdBcHBl
bmQ8Y29uc3QgY2hhciosIFN0cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7Cn0KCmlubGluZSBTdHJp
bmdBcHBlbmQ8Y29uc3QgY2hhciosIEF0b21pY1N0cmluZz4gb3BlcmF0b3IrKGNvbnN0IGNoYXIq
IHN0cmluZzEsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nMikKewogICAgcmV0dXJuIFN0cmlu
Z0FwcGVuZDxjb25zdCBjaGFyKiwgQXRvbWljU3RyaW5nPihzdHJpbmcxLCBzdHJpbmcyKTsKfQoK
dGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KU3RyaW5nQXBwZW5kPGNvbnN0IGNoYXIq
LCBTdHJpbmdBcHBlbmQ8VSwgVj4gPiBvcGVyYXRvcisoY29uc3QgY2hhciogc3RyaW5nMSwgY29u
c3QgU3RyaW5nQXBwZW5kPFUsIFY+JiBzdHJpbmcyKQp7CiAgICByZXR1cm4gU3RyaW5nQXBwZW5k
PGNvbnN0IGNoYXIqLCBTdHJpbmdBcHBlbmQ8VSwgVj4gPihzdHJpbmcxLCBzdHJpbmcyKTsKfQoK
aW5saW5lIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZz4gb3BlcmF0b3IrKGNvbnN0
IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBTdHJpbmcmIHN0cmluZzIpCnsKICAgIHJldHVybiBTdHJp
bmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBTdHJpbmc+KHN0cmluZzEsIHN0cmluZzIpOwp9Cgppbmxp
bmUgU3RyaW5nQXBwZW5kPGNvbnN0IFVDaGFyKiwgQXRvbWljU3RyaW5nPiBvcGVyYXRvcisoY29u
c3QgVUNoYXIqIHN0cmluZzEsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nMikKewogICAgcmV0
dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIEF0b21pY1N0cmluZz4oc3RyaW5nMSwgc3Ry
aW5nMik7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+ClN0cmluZ0FwcGVuZDxj
b25zdCBVQ2hhciosIFN0cmluZ0FwcGVuZDxVLCBWPiA+IG9wZXJhdG9yKyhjb25zdCBVQ2hhciog
c3RyaW5nMSwgY29uc3QgU3RyaW5nQXBwZW5kPFUsIFY+JiBzdHJpbmcyKQp7CiAgICByZXR1cm4g
U3RyaW5nQXBwZW5kPGNvbnN0IFVDaGFyKiwgU3RyaW5nQXBwZW5kPFUsIFY+ID4oc3RyaW5nMSwg
c3RyaW5nMik7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+ClN0cmluZ0FwcGVuZDxTdHJpbmcsIFQ+
IG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmIHN0cmluZzEsIFQgc3RyaW5nMikKewogICAgcmV0dXJu
IFN0cmluZ0FwcGVuZDxTdHJpbmcsIFQ+KHN0cmluZzEsIHN0cmluZzIpOwp9Cgp0ZW1wbGF0ZTx0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXPgpTdHJpbmdBcHBlbmQ8U3RyaW5nQXBw
ZW5kPFUsIFY+LCBXPiBvcGVyYXRvcisoY29uc3QgU3RyaW5nQXBwZW5kPFUsIFY+JiBzdHJpbmcx
LCBXIHN0cmluZzIpCnsKICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8U3RyaW5nQXBwZW5kPFUsIFY+
LCBXPihzdHJpbmcxLCBzdHJpbmcyKTsKfQoKfQojIDYwOSAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgiIDIKIyAyMDkgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaCIgMgojIDUzOCAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIiAyCiMg
MjkgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1TdHJpbmcu
aCIgMgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgU2hhcmVkQnVmZmVyOwoKUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CgoKCnVuc2lnbmVkIG51
bUdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nJiBzKTsKCgp1bnNpZ25lZCBudW1DaGFyYWN0
ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQpOwoKfQojIDMw
ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgiIDIKIyAxICIuLi8uLi8u
Li9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxTdHJpbmcuaCIgMQojIDI3ICIuLi8uLi8uLi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxTdHJpbmcuaCIKI2RlZmluZSBVUkxTdHJpbmdfaCAK
CgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgS1VSTDsKCmNsYXNzIFVSTFN0cmluZyB7CnB1
YmxpYzoKICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7
IH0KCnByaXZhdGU6CiAgICBmcmllbmQgY2xhc3MgS1VSTDsKCiAgICBleHBsaWNpdCBVUkxTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCiAgICB7
CiAgICB9CgogICAgU3RyaW5nIG1fc3RyaW5nOwp9OwoKfQojIDMxICIuLi8uLi8uLi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgiIDIKCgoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVS
TCogQ0ZVUkxSZWY7CgoKCgpAY2xhc3MgTlNVUkw7CgoKCgoKCgpjbGFzcyBRVXJsOwoKCgoKCgoK
CiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oIiAx
CiMgMjQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCIK
I2RlZmluZSBVU3RyaW5nX2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9TdHJpbmdJbXBsLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVVN0cmluZy5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIFVTdHJpbmcg
ewpwdWJsaWM6CgogICAgVVN0cmluZygpIHsgfQoKCiAgICBVU3RyaW5nKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwoKCiAgICBVU3RyaW5nKGNvbnN0IFVDaGFyKik7
CgoKICAgIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsK
CgogICAgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKCgogICAgVVN0cmluZyhTdHJp
bmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KICAgIFVTdHJpbmcoUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KICAgIFVTdHJpbmcoUmVmUHRyPFN0
cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQoKCiAgICBpbmxpbmUgflVTdHJpbmco
KSB7IH0KCiAgICB2b2lkIHN3YXAoVVN0cmluZyYgbykgeyBtX2ltcGwuc3dhcChvLm1faW1wbCk7
IH0KCiAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICBzdGF0aWMgVVN0cmlu
ZyBhZG9wdChWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKSB7IHJldHVybiBT
dHJpbmdJbXBsOjphZG9wdCh2ZWN0b3IpOyB9CgogICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9pbXBsOyB9CiAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9pbXBs
IHx8ICFtX2ltcGwtPmxlbmd0aCgpOyB9CgogICAgU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbC5nZXQoKTsgfQoKICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0CiAgICB7
CiAgICAgICAgaWYgKCFtX2ltcGwpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIHJldHVy
biBtX2ltcGwtPmxlbmd0aCgpOwogICAgfQoKICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkg
Y29uc3QKICAgIHsKICAgICAgICBpZiAoIW1faW1wbCkKICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpOwogICAgfQoKICAgIENTdHJpbmcgYXNj
aWkoKSBjb25zdDsKICAgIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CiAgICBDU3RyaW5nIHV0Zjgo
Ym9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CgogICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKICAgIHsKICAgICAgICBpZiAoIW1faW1wbCB8fCBpbmRleCA+PSBtX2lt
cGwtPmxlbmd0aCgpKQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICByZXR1cm4gbV9pbXBs
LT5jaGFyYWN0ZXJzKClbaW5kZXhdOwogICAgfQoKICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihp
bnQpOwogICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKICAgIHN0YXRpYyBVU3Ry
aW5nIG51bWJlcihsb25nKTsKICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nIGxvbmcpOwog
ICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CgoKICAgIHNpemVfdCBmaW5kKFVDaGFy
IGMsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBt
X2ltcGwtPmZpbmQoYywgc3RhcnQpIDogbm90Rm91bmQ7IH0KICAgIHNpemVfdCBmaW5kKGNvbnN0
IFVTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAogICAgICAgIHsgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQog
ICAgc2l6ZV90IGZpbmQoY29uc3QgY2hhciogc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
CiAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0ciwgc3RhcnQpIDogbm90
Rm91bmQ7IH0KCgogICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0
ID0gKDIxNDc0ODM2NDcgKiAyVSArIDFVKSkgY29uc3QKICAgICAgICB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPnJldmVyc2VGaW5kKGMsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAgICBzaXplX3Qg
cmV2ZXJzZUZpbmQoY29uc3QgVVN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9ICgyMTQ3NDgz
NjQ3ICogMlUgKyAxVSkpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5y
ZXZlcnNlRmluZChzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQoKICAgIFVTdHJpbmcg
c3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSAoMjE0NzQ4
MzY0NyAqIDJVICsgMVUpKSBjb25zdDsKCnByaXZhdGU6CiAgICBSZWZQdHI8U3RyaW5nSW1wbD4g
bV9pbXBsOwp9OwoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVU3RyaW5nJiBzMSwgY29u
c3QgVVN0cmluZyYgczIpCnsKICAgIFN0cmluZ0ltcGwqIHJlcDEgPSBzMS5pbXBsKCk7CiAgICBT
dHJpbmdJbXBsKiByZXAyID0gczIuaW1wbCgpOwogICAgdW5zaWduZWQgc2l6ZTEgPSAwOwogICAg
dW5zaWduZWQgc2l6ZTIgPSAwOwoKICAgIGlmIChyZXAxID09IHJlcDIpCiAgICAgICAgcmV0dXJu
IHRydWU7CgogICAgaWYgKHJlcDEpCiAgICAgICAgc2l6ZTEgPSByZXAxLT5sZW5ndGgoKTsKCiAg
ICBpZiAocmVwMikKICAgICAgICBzaXplMiA9IHJlcDItPmxlbmd0aCgpOwoKICAgIGlmIChzaXpl
MSAhPSBzaXplMikKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaWYgKCFzaXplMSkKICAgICAg
ICByZXR1cm4gdHJ1ZTsKCgoKCiAgICBjb25zdCBVQ2hhciogZDEgPSByZXAxLT5jaGFyYWN0ZXJz
KCk7CiAgICBjb25zdCBVQ2hhciogZDIgPSByZXAyLT5jaGFyYWN0ZXJzKCk7CgogICAgaWYgKGQx
ID09IGQyKQogICAgICAgIHJldHVybiB0cnVlOwoKCiAgICBzd2l0Y2ggKHNpemUxKSB7CiAgICBj
YXNlIDE6CiAgICAgICAgcmV0dXJuIGQxWzBdID09IGQyWzBdOwogICAgY2FzZSAyOgogICAgICAg
IHJldHVybiAoZDFbMF0gPT0gZDJbMF0pICYgKGQxWzFdID09IGQyWzFdKTsKICAgIGRlZmF1bHQ6
CiAgICAgICAgcmV0dXJuIG1lbWNtcChkMSwgZDIsIHNpemUxICogc2l6ZW9mKFVDaGFyKSkgPT0g
MDsKICAgIH0KfQoKCmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVN0cmluZyYgczEsIGNv
bnN0IFVTdHJpbmcmIHMyKQp7CiAgICByZXR1cm4gIUpTQzo6b3BlcmF0b3I9PShzMSwgczIpOwp9
Cgpib29sIG9wZXJhdG9yPChjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpOwpi
b29sIG9wZXJhdG9yPihjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpOwoKYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBjaGFyKiBzMik7CgppbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBjaGFyKiBzMikKewogICAg
cmV0dXJuICFKU0M6Om9wZXJhdG9yPT0oczEsIHMyKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBjaGFyICpzMSwgY29uc3QgVVN0cmluZyYgczIpCnsKICAgIHJldHVybiBvcGVyYXRv
cj09KHMyLCBzMSk7Cn0KCmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciAqczEsIGNv
bnN0IFVTdHJpbmcmIHMyKQp7CiAgICByZXR1cm4gIUpTQzo6b3BlcmF0b3I9PShzMSwgczIpOwp9
CgppbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVT
dHJpbmcmIHMyKQp7CiAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShzMS5pbXBsKCksIHMyLmlt
cGwoKSk7Cn0KCnN0cnVjdCBVU3RyaW5nSGFzaCB7CiAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChT
dHJpbmdJbXBsKiBrZXkpIHsgcmV0dXJuIGtleS0+aGFzaCgpOyB9CiAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKQogICAgewogICAg
ICAgIGlmIChhID09IGIpCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIGlmICghYSB8
fCAhYikKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICB1bnNpZ25lZCBhTGVuZ3Ro
ID0gYS0+bGVuZ3RoKCk7CiAgICAgICAgdW5zaWduZWQgYkxlbmd0aCA9IGItPmxlbmd0aCgpOwog
ICAgICAgIGlmIChhTGVuZ3RoICE9IGJMZW5ndGgpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IyAyMTUgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCIK
ICAgICAgICBjb25zdCB1aW50MzJfdCogYUNoYXJzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KGEtPmNoYXJhY3RlcnMoKSk7CiAgICAgICAgY29uc3QgdWludDMyX3QqIGJDaGFy
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihiLT5jaGFyYWN0ZXJzKCkpOwoK
ICAgICAgICB1bnNpZ25lZCBoYWxmTGVuZ3RoID0gYUxlbmd0aCA+PiAxOwogICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgIT0gaGFsZkxlbmd0aDsgKytpKQogICAgICAgICAgICBpZiAoKmFD
aGFycysrICE9ICpiQ2hhcnMrKykKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAg
ICAgaWYgKGFMZW5ndGggJiAxICYmICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4o
YUNoYXJzKSAhPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGJDaGFycykpCiAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgcmV0dXJuIHRydWU7CgogICAgfQoKICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYga2V5KSB7IHJl
dHVybiBrZXktPmhhc2goKTsgfQogICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFN0
cmluZ0ltcGw+JiBhLCBjb25zdCBSZWZQdHI8U3RyaW5nSW1wbD4mIGIpCiAgICB7CiAgICAgICAg
cmV0dXJuIGVxdWFsKGEuZ2V0KCksIGIuZ2V0KCkpOwogICAgfQoKICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFVTdHJpbmcmIGtleSkgeyByZXR1cm4ga2V5LmltcGwoKS0+aGFzaCgpOyB9
CiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nJiBhLCBjb25zdCBVU3RyaW5nJiBi
KQogICAgewogICAgICAgIHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOwogICAgfQoK
ICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFs
c2U7Cn07Cgp9CgpuYW1lc3BhY2UgV1RGIHsKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g7CnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6VVN0cmluZz4g
ewogICAgdHlwZWRlZiBKU0M6OlVTdHJpbmdIYXNoIEhhc2g7Cn07Cgp0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgVmVjdG9yVHJhaXRzPEpTQzo6VVN0cmluZz4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7
IH07Cgp9CiMgNTcgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaCIgMgoK
Cm5hbWVzcGFjZSBXZWJDb3JlIHsKCmNsYXNzIFRleHRFbmNvZGluZzsKc3RydWN0IEtVUkxIYXNo
OwoKdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBQYXJzZWRVUkxQYXJhbWV0ZXJzOwoK
ZW51bSBQYXJzZWRVUkxTdHJpbmdUYWcgeyBQYXJzZWRVUkxTdHJpbmcgfTsKCmNsYXNzIEtVUkwg
ewpwdWJsaWM6CgogICAgS1VSTCgpIHsgaW52YWxpZGF0ZSgpOyB9CgoKCgogICAgS1VSTChQYXJz
ZWRVUkxTdHJpbmdUYWcsIGNvbnN0IGNoYXIqKTsKICAgIEtVUkwoUGFyc2VkVVJMU3RyaW5nVGFn
LCBjb25zdCBTdHJpbmcmKTsKICAgIEtVUkwoUGFyc2VkVVJMU3RyaW5nVGFnLCBjb25zdCBVUkxT
dHJpbmcmKTsKCgoKICAgIEtVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1f
c3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KCiAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKTsgfQojIDkzICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmgiCiAgICBLVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpOwog
ICAgS1VSTChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBU
ZXh0RW5jb2RpbmcmKTsKIyAxMDMgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tV
UkwuaCIKICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdDsKIyAxMTIg
Ii4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaCIKICAgIEtVUkwgY29weSgp
IGNvbnN0OwoKICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICBib29sIGlzRW1wdHkoKSBjb25z
dDsKICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwoKCgoKICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0
OwoKCgogICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJj
aGljYWwoKTsgfQoKICAgIGJvb2wgY2FuU2V0UGF0aG5hbWUoKSBjb25zdCB7IHJldHVybiBpc0hp
ZXJhcmNoaWNhbCgpOyB9CgoKCgoKICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KICAgIFVSTFN0cmluZyB1cmxTdHJpbmcoKSBjb25zdCB7IHJldHVy
biBVUkxTdHJpbmcobV9zdHJpbmcpOyB9CgoKICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0Owog
ICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKICAgIHVuc2lnbmVkIHNob3J0IHBvcnQoKSBjb25zdDsK
ICAgIGJvb2wgaGFzUG9ydCgpIGNvbnN0OwogICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKICAgIFN0
cmluZyBwYXNzKCkgY29uc3Q7CiAgICBTdHJpbmcgcGF0aCgpIGNvbnN0OwogICAgU3RyaW5nIGxh
c3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7CiAgICBTdHJpbmcgcXVlcnkoKSBjb25zdDsKICAgIFN0
cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkgY29uc3Q7CgogICAgdm9pZCBjb3B5UGFyc2VkUXVlcnlUbyhQYXJzZWRVUkxQYXJh
bWV0ZXJzJikgY29uc3Q7CgogICAgU3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OwoKCgogICAg
U3RyaW5nIGRlcHJlY2F0ZWRTdHJpbmcoKSBjb25zdDsKICAgIFN0cmluZyBmaWxlU3lzdGVtUGF0
aCgpIGNvbnN0OwoKCgogICAgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsKICAg
IGJvb2wgcHJvdG9jb2xJc0RhdGEoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7
IH0KICAgIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OwogICAgYm9vbCBpc0xv
Y2FsRmlsZSgpIGNvbnN0OwoKICAgIGJvb2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7CiAg
ICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7CgogICAgdm9pZCByZW1vdmVQb3J0KCk7CiAg
ICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOwoKCiAgICB2b2lkIHNldEhvc3RBbmRQb3J0
KGNvbnN0IFN0cmluZyYpOwoKICAgIHZvaWQgc2V0VXNlcihjb25zdCBTdHJpbmcmKTsKICAgIHZv
aWQgc2V0UGFzcyhjb25zdCBTdHJpbmcmKTsKCgoKICAgIHZvaWQgc2V0UGF0aChjb25zdCBTdHJp
bmcmKTsKCgoKCiAgICB2b2lkIHNldFF1ZXJ5KGNvbnN0IFN0cmluZyYpOwoKICAgIHZvaWQgc2V0
RnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgdm9pZCByZW1vdmVGcmFnbWVu
dElkZW50aWZpZXIoKTsKCiAgICBmcmllbmQgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJik7CgogICAgZnJpZW5kIGJvb2wgcHJvdG9j
b2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJik7CgogICAgdW5z
aWduZWQgaG9zdFN0YXJ0KCkgY29uc3Q7CiAgICB1bnNpZ25lZCBob3N0RW5kKCkgY29uc3Q7Cgog
ICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7CiAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29u
c3Q7CiAgICB1bnNpZ25lZCBwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsKCiAgICBvcGVyYXRv
ciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KCgogICAgS1VSTChD
RlVSTFJlZik7CiAgICBDRlVSTFJlZiBjcmVhdGVDRlVSTCgpIGNvbnN0OwoKCgogICAgS1VSTChO
U1VSTCopOwogICAgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7CgoKICAgIG9wZXJhdG9yIE5TU3Ry
aW5nKigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CgoKCiAgICBLVVJMKGNvbnN0IFFVcmwm
KTsKICAgIG9wZXJhdG9yIFFVcmwoKSBjb25zdDsKIyAyMjcgIi4uLy4uLy4uL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0tVUkwuaCIKICAgIHZvaWQgcHJpbnQoKSBjb25zdDsKCgoKICAgIGJvb2wg
cHJvdG9jb2xJbkhUVFBGYW1pbHkoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCk7IH0KCnByaXZhdGU6CiAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgIGJvb2wgaXNIaWVy
YXJjaGljYWwoKSBjb25zdDsKICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5n
JiwgY29uc3QgY2hhciopOwoKCgoKCgogICAgdm9pZCBpbml0KGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBUZXh0RW5jb2RpbmcmKTsKICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3Rv
cjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0OwoKCgoKICAgIHZvaWQgcGFyc2UoY29uc3QgU3Ry
aW5nJik7CiAgICB2b2lkIHBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmln
aW5hbFN0cmluZyk7CgogICAgU3RyaW5nIG1fc3RyaW5nOwogICAgYm9vbCBtX2lzVmFsaWQgOiAx
OwogICAgYm9vbCBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgOiAxOwoKICAgIGludCBtX3NjaGVt
ZUVuZDsKICAgIGludCBtX3VzZXJTdGFydDsKICAgIGludCBtX3VzZXJFbmQ7CiAgICBpbnQgbV9w
YXNzd29yZEVuZDsKICAgIGludCBtX2hvc3RFbmQ7CiAgICBpbnQgbV9wb3J0RW5kOwogICAgaW50
IG1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgaW50IG1fcGF0aEVuZDsKICAgIGludCBtX3F1ZXJ5
RW5kOwogICAgaW50IG1fZnJhZ21lbnRFbmQ7Cgp9OwoKYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtV
UkwmLCBjb25zdCBLVVJMJik7CmJvb2wgb3BlcmF0b3I9PShjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJik7CmJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJik7CmJvb2wg
b3BlcmF0b3IhPShjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYpOwpib29sIG9wZXJhdG9yIT0oY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwpib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiwg
Y29uc3QgS1VSTCYpOwoKYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0
IEtVUkwmLCBjb25zdCBLVVJMJik7CmJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNv
bnN0IEtVUkwmLCBjb25zdCBLVVJMJik7Cgpjb25zdCBLVVJMJiBibGFua1VSTCgpOwoKCgoKCgpi
b29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsK
Ym9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKYm9vbCBwcm90
b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCk7Cgpib29sIGlzRGVmYXVsdFBvcnRG
b3JQcm90b2NvbCh1bnNpZ25lZCBzaG9ydCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsK
Ym9vbCBwb3J0QWxsb3dlZChjb25zdCBLVVJMJik7Cgpib29sIGlzVmFsaWRQcm90b2NvbChjb25z
dCBTdHJpbmcmKTsKClN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJs
KTsKCgoKClN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7ClN0
cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgVGV4dEVu
Y29kaW5nJik7CgpTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJp
bmcmKTsKCgoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLVVJMJiBhLCBjb25zdCBLVVJM
JiBiKQp7CiAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwp9CgppbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEtVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKewogICAgcmV0dXJu
IGEuc3RyaW5nKCkgPT0gYjsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcm
IGEsIGNvbnN0IEtVUkwmIGIpCnsKICAgIHJldHVybiBhID09IGIuc3RyaW5nKCk7Cn0KCmlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgS1VSTCYgYSwgY29uc3QgS1VSTCYgYikKewogICAgcmV0
dXJuIGEuc3RyaW5nKCkgIT0gYi5zdHJpbmcoKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBLVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCnsKICAgIHJldHVybiBhLnN0cmluZygpICE9
IGI7Cn0KCmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBLVVJM
JiBiKQp7CiAgICByZXR1cm4gYSAhPSBiLnN0cmluZygpOwp9CgoKCgoKCmlubGluZSBib29sIEtV
Ukw6OmlzTnVsbCgpIGNvbnN0CnsKICAgIHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKfQoKaW5s
aW5lIGJvb2wgS1VSTDo6aXNFbXB0eSgpIGNvbnN0CnsKICAgIHJldHVybiBtX3N0cmluZy5pc0Vt
cHR5KCk7Cn0KCmlubGluZSBib29sIEtVUkw6OmlzVmFsaWQoKSBjb25zdAp7CiAgICByZXR1cm4g
bV9pc1ZhbGlkOwp9CgppbmxpbmUgYm9vbCBLVVJMOjpoYXNQb3J0KCkgY29uc3QKewogICAgcmV0
dXJuIG1faG9zdEVuZCA8IG1fcG9ydEVuZDsKfQoKaW5saW5lIGJvb2wgS1VSTDo6cHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpIGNvbnN0CnsKICAgIHJldHVybiBtX3Byb3RvY29sSXNJbkhUVFBGYW1p
bHk7Cn0KCmlubGluZSB1bnNpZ25lZCBLVVJMOjpob3N0U3RhcnQoKSBjb25zdAp7CiAgICByZXR1
cm4gKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyU3RhcnQpID8gbV9wYXNzd29yZEVuZCA6IG1fcGFz
c3dvcmRFbmQgKyAxOwp9CgppbmxpbmUgdW5zaWduZWQgS1VSTDo6aG9zdEVuZCgpIGNvbnN0CnsK
ICAgIHJldHVybiBtX2hvc3RFbmQ7Cn0KCmlubGluZSB1bnNpZ25lZCBLVVJMOjpwYXRoU3RhcnQo
KSBjb25zdAp7CiAgICByZXR1cm4gbV9wb3J0RW5kOwp9CgppbmxpbmUgdW5zaWduZWQgS1VSTDo6
cGF0aEVuZCgpIGNvbnN0CnsKICAgIHJldHVybiBtX3BhdGhFbmQ7Cn0KCmlubGluZSB1bnNpZ25l
ZCBLVVJMOjpwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdAp7CiAgICByZXR1cm4gbV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7Cn0KCgoKfQoKbmFtZXNwYWNlIFdURiB7CgoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFdlYkNvcmU6OktVUkw+IHsKICAgICAgICB0eXBlZGVmIFdlYkNvcmU6OktVUkxIYXNoIEhh
c2g7CiAgICB9OwoKfQojIDM1ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5o
IiAyCgpuYW1lc3BhY2UgV2ViQ29yZSB7CgoKCgojZGVmaW5lIElDT05fQ09VTlQgMQoKCmVudW0g
SWNvblR5cGUgewogICAgSW52YWxpZEljb24gPSAwLAogICAgRmF2aWNvbiA9IDEsCiAgICBUb3Vj
aEljb24gPSAxIDw8IDEsCiAgICBUb3VjaFByZWNvbXBvc2VkSWNvbiA9IDEgPDwgMgp9OwoKc3Ry
dWN0IEljb25VUkwgewogICAgSWNvblR5cGUgbV9pY29uVHlwZTsKICAgIEtVUkwgbV9pY29uVVJM
OwoKICAgIEljb25VUkwoKQogICAgICAgIDogbV9pY29uVHlwZShJbnZhbGlkSWNvbikKICAgIHsK
ICAgIH0KCiAgICBJY29uVVJMKGNvbnN0IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKICAgICAg
ICA6IG1faWNvblR5cGUodHlwZSkKICAgICAgICAsIG1faWNvblVSTCh1cmwpCiAgICB7CiAgICB9
Cn07Cgp0eXBlZGVmIFZlY3RvcjxJY29uVVJMLCAxPiBJY29uVVJMczsKCgpzaXplX3QgdG9JY29u
SW5kZXgoSWNvblR5cGUpOwoKfQojIDM3ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ludFJlY3QuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0LmgiCiNkZWZpbmUgSW50UmVjdF9oIAoKIyAxICIuLi8uLi8uLi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oIiAxCiMgMjcgIi4uLy4uLy4uL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgiCiNkZWZpbmUgSW50UG9p
bnRfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
U2l6ZS5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ludFNpemUuaCIKI2RlZmluZSBJbnRTaXplX2ggCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBDR1Np
emUgTlNTaXplOwojIDQ1ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRTaXplLmgiCgpjbGFzcyBRU2l6ZTsKCiMgNjAgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaCIKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3Mg
SW50U2l6ZSB7CnB1YmxpYzoKICAgIEludFNpemUoKSA6IG1fd2lkdGgoMCksIG1faGVpZ2h0KDAp
IHsgfQogICAgSW50U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIDogbV93aWR0aCh3aWR0aCks
IG1faGVpZ2h0KGhlaWdodCkgeyB9CgogICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93
aWR0aDsgfQogICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CgogICAg
dm9pZCBzZXRXaWR0aChpbnQgd2lkdGgpIHsgbV93aWR0aCA9IHdpZHRoOyB9CiAgICB2b2lkIHNl
dEhlaWdodChpbnQgaGVpZ2h0KSB7IG1faGVpZ2h0ID0gaGVpZ2h0OyB9CgogICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KICAg
IGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIW1fd2lkdGggJiYgIW1faGVpZ2h0OyB9Cgog
ICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
bV93aWR0aCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4obV9oZWlnaHQpOyB9CgogICAgdm9pZCBleHBh
bmQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgewogICAgICAgIG1fd2lkdGggKz0gd2lkdGg7
CiAgICAgICAgbV9oZWlnaHQgKz0gaGVpZ2h0OwogICAgfQoKICAgIHZvaWQgc2NhbGUoZmxvYXQg
c2NhbGUpCiAgICB7CiAgICAgICAgbV93aWR0aCA9IHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG1fd2lkdGgpICogc2NhbGUpOwogICAgICAgIG1faGVpZ2h0ID0gc3RhdGljX2Nh
c3Q8aW50PihzdGF0aWNfY2FzdDxmbG9hdD4obV9oZWlnaHQpICogc2NhbGUpOwogICAgfQoKICAg
IEludFNpemUgZXhwYW5kZWRUbyhjb25zdCBJbnRTaXplJiBvdGhlcikgY29uc3QKICAgIHsKICAg
ICAgICByZXR1cm4gSW50U2l6ZShtX3dpZHRoID4gb3RoZXIubV93aWR0aCA/IG1fd2lkdGggOiBv
dGhlci5tX3dpZHRoLAogICAgICAgICAgICBtX2hlaWdodCA+IG90aGVyLm1faGVpZ2h0ID8gbV9o
ZWlnaHQgOiBvdGhlci5tX2hlaWdodCk7CiAgICB9CgogICAgSW50U2l6ZSBzaHJ1bmtUbyhjb25z
dCBJbnRTaXplJiBvdGhlcikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gSW50U2l6ZShtX3dp
ZHRoIDwgb3RoZXIubV93aWR0aCA/IG1fd2lkdGggOiBvdGhlci5tX3dpZHRoLAogICAgICAgICAg
ICBtX2hlaWdodCA8IG90aGVyLm1faGVpZ2h0ID8gbV9oZWlnaHQgOiBvdGhlci5tX2hlaWdodCk7
CiAgICB9CgogICAgdm9pZCBjbGFtcE5lZ2F0aXZlVG9aZXJvKCkKICAgIHsKICAgICAgICAqdGhp
cyA9IGV4cGFuZGVkVG8oSW50U2l6ZSgpKTsKICAgIH0KCiAgICBJbnRTaXplIHRyYW5zcG9zZWRT
aXplKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gSW50U2l6ZShtX2hlaWdodCwgbV93aWR0
aCk7CiAgICB9CiMgMTI4ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRTaXplLmgiCiAgICBJbnRTaXplKGNvbnN0IFFTaXplJik7CiAgICBvcGVyYXRvciBRU2l6
ZSgpIGNvbnN0OwojIDE0NyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oIgpwcml2YXRlOgogICAgaW50IG1fd2lkdGgsIG1faGVpZ2h0Owp9OwoKaW5s
aW5lIEludFNpemUmIG9wZXJhdG9yKz0oSW50U2l6ZSYgYSwgY29uc3QgSW50U2l6ZSYgYikKewog
ICAgYS5zZXRXaWR0aChhLndpZHRoKCkgKyBiLndpZHRoKCkpOwogICAgYS5zZXRIZWlnaHQoYS5o
ZWlnaHQoKSArIGIuaGVpZ2h0KCkpOwogICAgcmV0dXJuIGE7Cn0KCmlubGluZSBJbnRTaXplJiBv
cGVyYXRvci09KEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCnsKICAgIGEuc2V0V2lkdGgo
YS53aWR0aCgpIC0gYi53aWR0aCgpKTsKICAgIGEuc2V0SGVpZ2h0KGEuaGVpZ2h0KCkgLSBiLmhl
aWdodCgpKTsKICAgIHJldHVybiBhOwp9CgppbmxpbmUgSW50U2l6ZSBvcGVyYXRvcisoY29uc3Qg
SW50U2l6ZSYgYSwgY29uc3QgSW50U2l6ZSYgYikKewogICAgcmV0dXJuIEludFNpemUoYS53aWR0
aCgpICsgYi53aWR0aCgpLCBhLmhlaWdodCgpICsgYi5oZWlnaHQoKSk7Cn0KCmlubGluZSBJbnRT
aXplIG9wZXJhdG9yLShjb25zdCBJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQp7CiAgICBy
ZXR1cm4gSW50U2l6ZShhLndpZHRoKCkgLSBiLndpZHRoKCksIGEuaGVpZ2h0KCkgLSBiLmhlaWdo
dCgpKTsKfQoKaW5saW5lIEludFNpemUgb3BlcmF0b3ItKGNvbnN0IEludFNpemUmIHNpemUpCnsK
ICAgIHJldHVybiBJbnRTaXplKC1zaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKfQoKaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQp7
CiAgICByZXR1cm4gYS53aWR0aCgpID09IGIud2lkdGgoKSAmJiBhLmhlaWdodCgpID09IGIuaGVp
Z2h0KCk7Cn0KCmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW50U2l6ZSYgYSwgY29uc3Qg
SW50U2l6ZSYgYikKewogICAgcmV0dXJuIGEud2lkdGgoKSAhPSBiLndpZHRoKCkgfHwgYS5oZWln
aHQoKSAhPSBiLmhlaWdodCgpOwp9Cgp9CiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL01hdGhFeHRyYXMuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL01hdGhFeHRyYXMuaCIKI2RlZmluZSBXVEZfTWF0aEV4dHJhc19oIAoKCiMg
MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9jbWF0aCIgMSAzCiMgNDYgIi91c3IvaW5jbHVkZS9j
KysvNC4yLjEvY21hdGgiIDMKI2RlZmluZSBfR0xJQkNYWF9DTUFUSCAxCgogICAgICAgCiMgNDkg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvY21hdGgiIDMKIyA1NyAiL3Vzci9pbmNsdWRlL2MrKy80
LjIuMS9jbWF0aCIgMwojdW5kZWYgYWJzCiN1bmRlZiBkaXYKI3VuZGVmIGFjb3MKI3VuZGVmIGFz
aW4KI3VuZGVmIGF0YW4KI3VuZGVmIGF0YW4yCiN1bmRlZiBjZWlsCiN1bmRlZiBjb3MKI3VuZGVm
IGNvc2gKI3VuZGVmIGV4cAojdW5kZWYgZmFicwojdW5kZWYgZmxvb3IKI3VuZGVmIGZtb2QKI3Vu
ZGVmIGZyZXhwCiN1bmRlZiBsZGV4cAojdW5kZWYgbG9nCiN1bmRlZiBsb2cxMAojdW5kZWYgbW9k
ZgojdW5kZWYgcG93CiN1bmRlZiBzaW4KI3VuZGVmIHNpbmgKI3VuZGVmIHNxcnQKI3VuZGVmIHRh
bgojdW5kZWYgdGFuaAoKbmFtZXNwYWNlIHN0ZCB7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PiBfVHAgX19jbWF0aF9wb3dlcihfVHAsIHVuc2lnbmVkIGludCk7CgogIGlubGluZSBkb3VibGUK
ICBhYnMoZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZmFicyhfX3gpOyB9CgogIGlu
bGluZSBmbG9hdAogIGFicyhmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2ZhYnNmKF9f
eCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgYWJzKGxvbmcgZG91YmxlIF9feCkKICB7IHJl
dHVybiBfX2J1aWx0aW5fZmFic2woX194KTsgfQoKICB1c2luZyA6OmFjb3M7CgogIGlubGluZSBm
bG9hdAogIGFjb3MoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9hY29zZihfX3gpOyB9
CgogIGlubGluZSBsb25nIGRvdWJsZQogIGFjb3MobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJu
IF9fYnVpbHRpbl9hY29zbChfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlu
bGluZSB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+Ojpf
X3ZhbHVlLAogICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgYWNvcyhfVHAgX194KQogICAgeyBy
ZXR1cm4gX19idWlsdGluX2Fjb3MoX194KTsgfQoKICB1c2luZyA6OmFzaW47CgogIGlubGluZSBm
bG9hdAogIGFzaW4oZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9hc2luZihfX3gpOyB9
CgogIGlubGluZSBsb25nIGRvdWJsZQogIGFzaW4obG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJu
IF9fYnVpbHRpbl9hc2lubChfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxp
bmUgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192
YWx1ZSwKICAgICAgZG91YmxlPjo6X190eXBlCiAgICBhc2luKF9UcCBfX3gpCiAgICB7IHJldHVy
biBfX2J1aWx0aW5fYXNpbihfX3gpOyB9CgogIHVzaW5nIDo6YXRhbjsKCiAgaW5saW5lIGZsb2F0
CiAgYXRhbihmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2F0YW5mKF9feCk7IH0KCiAg
aW5saW5lIGxvbmcgZG91YmxlCiAgYXRhbihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19i
dWlsdGluX2F0YW5sKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSB0
eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVl
LAogICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGF0YW4oX1RwIF9feCkKICAgIHsgcmV0dXJuIF9f
YnVpbHRpbl9hdGFuKF9feCk7IH0KCiAgdXNpbmcgOjphdGFuMjsKCiAgaW5saW5lIGZsb2F0CiAg
YXRhbjIoZmxvYXQgX195LCBmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2F0YW4yZihf
X3ksIF9feCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgYXRhbjIobG9uZyBkb3VibGUgX195
LCBsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2F0YW4ybChfX3ksIF9feCk7
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBpbmxpbmUgdHlw
ZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZQog
ICAgICAgICAgICAmJiBfX2lzX2ludGVnZXI8X1VwPjo6X192YWx1ZSwKICAgICAgICBkb3VibGU+
OjpfX3R5cGUKICAgIGF0YW4yKF9UcCBfX3ksIF9VcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0
aW5fYXRhbjIoX195LCBfX3gpOyB9CgogIHVzaW5nIDo6Y2VpbDsKCiAgaW5saW5lIGZsb2F0CiAg
Y2VpbChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2NlaWxmKF9feCk7IH0KCiAgaW5s
aW5lIGxvbmcgZG91YmxlCiAgY2VpbChsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWls
dGluX2NlaWxsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHR5
cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUs
CiAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICBjZWlsKF9UcCBfX3gpCiAgICB7IHJldHVybiBf
X2J1aWx0aW5fY2VpbChfX3gpOyB9CgogIHVzaW5nIDo6Y29zOwoKICBpbmxpbmUgZmxvYXQKICBj
b3MoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9jb3NmKF9feCk7IH0KCiAgaW5saW5l
IGxvbmcgZG91YmxlCiAgY29zKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5f
Y29zbChfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB0eXBlbmFt
ZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAg
ICAgIGRvdWJsZT46Ol9fdHlwZQogICAgY29zKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0
aW5fY29zKF9feCk7IH0KCiAgdXNpbmcgOjpjb3NoOwoKICBpbmxpbmUgZmxvYXQKICBjb3NoKGZs
b2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fY29zaGYoX194KTsgfQoKICBpbmxpbmUgbG9u
ZyBkb3VibGUKICBjb3NoKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fY29z
aGwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdHlwZW5hbWUg
X19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAg
ICBkb3VibGU+OjpfX3R5cGUKICAgIGNvc2goX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRp
bl9jb3NoKF9feCk7IH0KCiAgdXNpbmcgOjpleHA7CgogIGlubGluZSBmbG9hdAogIGV4cChmbG9h
dCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2V4cGYoX194KTsgfQoKICBpbmxpbmUgbG9uZyBk
b3VibGUKICBleHAobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9leHBsKF9f
eCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHR5cGVuYW1lIF9fZ251
X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgZG91
YmxlPjo6X190eXBlCiAgICBleHAoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9leHAo
X194KTsgfQoKICB1c2luZyA6OmZhYnM7CgogIGlubGluZSBmbG9hdAogIGZhYnMoZmxvYXQgX194
KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzZihfX3gpOyB9CgogIGlubGluZSBsb25nIGRvdWJs
ZQogIGZhYnMobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbChfX3gp
OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB0eXBlbmFtZSBfX2dudV9j
eHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgIGRvdWJs
ZT46Ol9fdHlwZQogICAgZmFicyhfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2ZhYnMo
X194KTsgfQoKICB1c2luZyA6OmZsb29yOwoKICBpbmxpbmUgZmxvYXQKICBmbG9vcihmbG9hdCBf
X3gpCiAgeyByZXR1cm4gX19idWlsdGluX2Zsb29yZihfX3gpOyB9CgogIGlubGluZSBsb25nIGRv
dWJsZQogIGZsb29yKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZmxvb3Js
KF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHR5cGVuYW1lIF9f
Z251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAg
ZG91YmxlPjo6X190eXBlCiAgICBmbG9vcihfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGlu
X2Zsb29yKF9feCk7IH0KCiAgdXNpbmcgOjpmbW9kOwoKICBpbmxpbmUgZmxvYXQKICBmbW9kKGZs
b2F0IF9feCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mbW9kZihfX3gsIF9feSk7
IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgZm1vZChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5fZm1vZGwoX194LCBfX3kpOyB9CgogIHVzaW5n
IDo6ZnJleHA7CgogIGlubGluZSBmbG9hdAogIGZyZXhwKGZsb2F0IF9feCwgaW50KiBfX2V4cCkK
ICB7IHJldHVybiBfX2J1aWx0aW5fZnJleHBmKF9feCwgX19leHApOyB9CgogIGlubGluZSBsb25n
IGRvdWJsZQogIGZyZXhwKGxvbmcgZG91YmxlIF9feCwgaW50KiBfX2V4cCkKICB7IHJldHVybiBf
X2J1aWx0aW5fZnJleHBsKF9feCwgX19leHApOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIGlubGluZSB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxf
VHA+OjpfX3ZhbHVlLAogICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgZnJleHAoX1RwIF9feCwg
aW50KiBfX2V4cCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9mcmV4cChfX3gsIF9fZXhwKTsgfQoK
ICB1c2luZyA6OmxkZXhwOwoKICBpbmxpbmUgZmxvYXQKICBsZGV4cChmbG9hdCBfX3gsIGludCBf
X2V4cCkKICB7IHJldHVybiBfX2J1aWx0aW5fbGRleHBmKF9feCwgX19leHApOyB9CgogIGlubGlu
ZSBsb25nIGRvdWJsZQogIGxkZXhwKGxvbmcgZG91YmxlIF9feCwgaW50IF9fZXhwKQogIHsgcmV0
dXJuIF9fYnVpbHRpbl9sZGV4cGwoX194LCBfX2V4cCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgaW5saW5lIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRl
Z2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgZG91YmxlPjo6X190eXBlCiAgbGRleHAoX1RwIF9f
eCwgaW50IF9fZXhwKQogIHsgcmV0dXJuIF9fYnVpbHRpbl9sZGV4cChfX3gsIF9fZXhwKTsgfQoK
ICB1c2luZyA6OmxvZzsKCiAgaW5saW5lIGZsb2F0CiAgbG9nKGZsb2F0IF9feCkKICB7IHJldHVy
biBfX2J1aWx0aW5fbG9nZihfX3gpOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIGxvZyhsb25n
IGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xvZ2woX194KTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9p
ZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAg
IGxvZyhfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2xvZyhfX3gpOyB9CgogIHVzaW5n
IDo6bG9nMTA7CgogIGlubGluZSBmbG9hdAogIGxvZzEwKGZsb2F0IF9feCkKICB7IHJldHVybiBf
X2J1aWx0aW5fbG9nMTBmKF9feCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgbG9nMTAobG9u
ZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9sb2cxMGwoX194KTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJs
ZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICBkb3VibGU+OjpfX3R5cGUK
ICAgIGxvZzEwKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fbG9nMTAoX194KTsgfQoK
ICB1c2luZyA6Om1vZGY7CgogIGlubGluZSBmbG9hdAogIG1vZGYoZmxvYXQgX194LCBmbG9hdCog
X19pcHRyKQogIHsgcmV0dXJuIF9fYnVpbHRpbl9tb2RmZihfX3gsIF9faXB0cik7IH0KCiAgaW5s
aW5lIGxvbmcgZG91YmxlCiAgbW9kZihsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlKiBfX2lw
dHIpCiAgeyByZXR1cm4gX19idWlsdGluX21vZGZsKF9feCwgX19pcHRyKTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgX1RwCiAgICBfX3Bvd19oZWxwZXIoX1RwIF9feCwg
aW50IF9fbikKICAgIHsKICAgICAgcmV0dXJuIF9fbiA8IDAKICAgICAgICA/IF9UcCgxKS9fX2Nt
YXRoX3Bvd2VyKF9feCwgLV9fbikKICAgICAgICA6IF9fY21hdGhfcG93ZXIoX194LCBfX24pOwog
ICAgfQoKICB1c2luZyA6OnBvdzsKCiAgaW5saW5lIGZsb2F0CiAgcG93KGZsb2F0IF9feCwgZmxv
YXQgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9wb3dmKF9feCwgX195KTsgfQoKICBpbmxpbmUg
bG9uZyBkb3VibGUKICBwb3cobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpCiAgeyBy
ZXR1cm4gX19idWlsdGluX3Bvd2woX194LCBfX3kpOyB9CgogIGlubGluZSBkb3VibGUKICBwb3co
ZG91YmxlIF9feCwgaW50IF9faSkKICB7IHJldHVybiBfX2J1aWx0aW5fcG93aShfX3gsIF9faSk7
IH0KCiAgaW5saW5lIGZsb2F0CiAgcG93KGZsb2F0IF9feCwgaW50IF9fbikKICB7IHJldHVybiBf
X2J1aWx0aW5fcG93aWYoX194LCBfX24pOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIHBvdyhs
b25nIGRvdWJsZSBfX3gsIGludCBfX24pCiAgeyByZXR1cm4gX19idWlsdGluX3Bvd2lsKF9feCwg
X19uKTsgfQoKICB1c2luZyA6OnNpbjsKCiAgaW5saW5lIGZsb2F0CiAgc2luKGZsb2F0IF9feCkK
ICB7IHJldHVybiBfX2J1aWx0aW5fc2luZihfX3gpOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQog
IHNpbihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3NpbmwoX194KTsgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdHlwZW5hbWUgX19nbnVfY3h4Ojpf
X2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICBkb3VibGU+Ojpf
X3R5cGUKICAgIHNpbihfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX3NpbihfX3gpOyB9
CgogIHVzaW5nIDo6c2luaDsKCiAgaW5saW5lIGZsb2F0CiAgc2luaChmbG9hdCBfX3gpCiAgeyBy
ZXR1cm4gX19idWlsdGluX3NpbmhmKF9feCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgc2lu
aChsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3NpbmhsKF9feCk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHR5cGVuYW1lIF9fZ251X2N4eDo6X19l
bmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgZG91YmxlPjo6X190
eXBlCiAgICBzaW5oKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fc2luaChfX3gpOyB9
CgogIHVzaW5nIDo6c3FydDsKCiAgaW5saW5lIGZsb2F0CiAgc3FydChmbG9hdCBfX3gpCiAgeyBy
ZXR1cm4gX19idWlsdGluX3NxcnRmKF9feCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgc3Fy
dChsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3NxcnRsKF9feCk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHR5cGVuYW1lIF9fZ251X2N4eDo6X19l
bmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgZG91YmxlPjo6X190
eXBlCiAgICBzcXJ0KF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fc3FydChfX3gpOyB9
CgogIHVzaW5nIDo6dGFuOwoKICBpbmxpbmUgZmxvYXQKICB0YW4oZmxvYXQgX194KQogIHsgcmV0
dXJuIF9fYnVpbHRpbl90YW5mKF9feCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgdGFuKGxv
bmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fdGFubChfX3gpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxl
X2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgIGRvdWJsZT46Ol9fdHlwZQog
ICAgdGFuKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fdGFuKF9feCk7IH0KCiAgdXNp
bmcgOjp0YW5oOwoKICBpbmxpbmUgZmxvYXQKICB0YW5oKGZsb2F0IF9feCkKICB7IHJldHVybiBf
X2J1aWx0aW5fdGFuaGYoX194KTsgfQoKICBpbmxpbmUgbG9uZyBkb3VibGUKICB0YW5oKGxvbmcg
ZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fdGFuaGwoX194KTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9p
ZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAg
IHRhbmgoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl90YW5oKF9feCk7IH0KCn0KCgoK
CgoKCm5hbWVzcGFjZSBfX2dudV9jeHggewoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBp
bmxpbmUgaW50CiAgICBfX2NhcHR1cmVfZnBjbGFzc2lmeShfVHAgX19mKSB7IHJldHVybiAoIHNp
emVvZiAoX19mKSA9PSBzaXplb2YoZmxvYXQgKSA/IF9fZnBjbGFzc2lmeWYoKGZsb2F0KShfX2Yp
KSA6IHNpemVvZiAoX19mKSA9PSBzaXplb2YoZG91YmxlKSA/IF9fZnBjbGFzc2lmeWQoKGRvdWJs
ZSkoX19mKSkgOiBfX2ZwY2xhc3NpZnkgKChsb25nIGRvdWJsZSkoX19mKSkpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBpbnQKICAgIF9fY2FwdHVyZV9pc2Zpbml0ZShf
VHAgX19mKSB7IHJldHVybiAoIHNpemVvZiAoX19mKSA9PSBzaXplb2YoZmxvYXQgKSA/IF9faW5s
aW5lX2lzZmluaXRlZigoZmxvYXQpKF9fZikpIDogc2l6ZW9mIChfX2YpID09IHNpemVvZihkb3Vi
bGUpID8gX19pbmxpbmVfaXNmaW5pdGVkKChkb3VibGUpKF9fZikpIDogX19pbmxpbmVfaXNmaW5p
dGUgKChsb25nIGRvdWJsZSkoX19mKSkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IGlubGluZSBpbnQKICAgIF9fY2FwdHVyZV9pc2luZihfVHAgX19mKSB7IHJldHVybiAoIHNpemVv
ZiAoX19mKSA9PSBzaXplb2YoZmxvYXQgKSA/IF9faW5saW5lX2lzaW5mZigoZmxvYXQpKF9fZikp
IDogc2l6ZW9mIChfX2YpID09IHNpemVvZihkb3VibGUpID8gX19pbmxpbmVfaXNpbmZkKChkb3Vi
bGUpKF9fZikpIDogX19pbmxpbmVfaXNpbmYgKChsb25nIGRvdWJsZSkoX19mKSkpOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBpbnQKICAgIF9fY2FwdHVyZV9pc25hbihf
VHAgX19mKSB7IHJldHVybiAoIHNpemVvZiAoX19mKSA9PSBzaXplb2YoZmxvYXQgKSA/IF9faW5s
aW5lX2lzbmFuZigoZmxvYXQpKF9fZikpIDogc2l6ZW9mIChfX2YpID09IHNpemVvZihkb3VibGUp
ID8gX19pbmxpbmVfaXNuYW5kKChkb3VibGUpKF9fZikpIDogX19pbmxpbmVfaXNuYW4gKChsb25n
IGRvdWJsZSkoX19mKSkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBp
bnQKICAgIF9fY2FwdHVyZV9pc25vcm1hbChfVHAgX19mKSB7IHJldHVybiAoIHNpemVvZiAoX19m
KSA9PSBzaXplb2YoZmxvYXQgKSA/IF9faW5saW5lX2lzbm9ybWFsZigoZmxvYXQpKF9fZikpIDog
c2l6ZW9mIChfX2YpID09IHNpemVvZihkb3VibGUpID8gX19pbmxpbmVfaXNub3JtYWxkKChkb3Vi
bGUpKF9fZikpIDogX19pbmxpbmVfaXNub3JtYWwgKChsb25nIGRvdWJsZSkoX19mKSkpOyB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBpbnQKICAgIF9fY2FwdHVyZV9zaWdu
Yml0KF9UcCBfX2YpIHsgcmV0dXJuICggc2l6ZW9mIChfX2YpID09IHNpemVvZihmbG9hdCApID8g
X19pbmxpbmVfc2lnbmJpdGYoKGZsb2F0KShfX2YpKSA6IHNpemVvZiAoX19mKSA9PSBzaXplb2Yo
ZG91YmxlKSA/IF9faW5saW5lX3NpZ25iaXRkKChkb3VibGUpKF9fZikpIDogX19pbmxpbmVfc2ln
bmJpdCgobG9uZyBkb3VibGUpKF9fZikpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBpbmxpbmUgaW50CiAgICBfX2NhcHR1cmVfaXNncmVhdGVyKF9UcCBfX2YxLCBfVHAgX19mMikK
ICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9pc2dyZWF0ZXIgKChfX2YxKSwoX19mMikpOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBpbnQKICAgIF9fY2FwdHVyZV9pc2dyZWF0
ZXJlcXVhbChfVHAgX19mMSwgX1RwIF9fZjIpCiAgICB7IHJldHVybiBfX2J1aWx0aW5faXNncmVh
dGVyZXF1YWwgKChfX2YxKSwoX19mMikpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IGlubGluZSBpbnQKICAgIF9fY2FwdHVyZV9pc2xlc3MoX1RwIF9fZjEsIF9UcCBfX2YyKSB7IHJl
dHVybiBfX2J1aWx0aW5faXNsZXNzICgoX19mMSksKF9fZjIpKTsgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBpbmxpbmUgaW50CiAgICBfX2NhcHR1cmVfaXNsZXNzZXF1YWwoX1RwIF9f
ZjEsIF9UcCBfX2YyKQogICAgeyByZXR1cm4gX19idWlsdGluX2lzbGVzc2VxdWFsICgoX19mMSks
KF9fZjIpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgaW50CiAgICBf
X2NhcHR1cmVfaXNsZXNzZ3JlYXRlcihfVHAgX19mMSwgX1RwIF9fZjIpCiAgICB7IHJldHVybiBf
X2J1aWx0aW5faXNsZXNzZ3JlYXRlciAoKF9fZjEpLChfX2YyKSk7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgaW5saW5lIGludAogICAgX19jYXB0dXJlX2lzdW5vcmRlcmVkKF9UcCBf
X2YxLCBfVHAgX19mMikKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9pc3Vub3JkZXJlZCAoKF9fZjEp
LChfX2YyKSk7IH0KCn0KCgojdW5kZWYgZnBjbGFzc2lmeQojdW5kZWYgaXNmaW5pdGUKI3VuZGVm
IGlzaW5mCiN1bmRlZiBpc25hbgojdW5kZWYgaXNub3JtYWwKI3VuZGVmIHNpZ25iaXQKI3VuZGVm
IGlzZ3JlYXRlcgojdW5kZWYgaXNncmVhdGVyZXF1YWwKI3VuZGVmIGlzbGVzcwojdW5kZWYgaXNs
ZXNzZXF1YWwKI3VuZGVmIGlzbGVzc2dyZWF0ZXIKI3VuZGVmIGlzdW5vcmRlcmVkCgpuYW1lc3Bh
Y2Ugc3RkIHsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGludAogICAgZnBj
bGFzc2lmeShfVHAgX19mKSB7IHJldHVybiA6Ol9fZ251X2N4eDo6X19jYXB0dXJlX2ZwY2xhc3Np
ZnkoX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgaW50CiAgICBp
c2Zpbml0ZShfVHAgX19mKSB7IHJldHVybiA6Ol9fZ251X2N4eDo6X19jYXB0dXJlX2lzZmluaXRl
KF9fZik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGludAogICAgaXNp
bmYoX1RwIF9fZikgeyByZXR1cm4gOjpfX2dudV9jeHg6Ol9fY2FwdHVyZV9pc2luZihfX2YpOyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBpbnQKICAgIGlzbmFuKF9UcCBf
X2YpIHsgcmV0dXJuIDo6X19nbnVfY3h4OjpfX2NhcHR1cmVfaXNuYW4oX19mKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgaW50CiAgICBpc25vcm1hbChfVHAgX19mKSB7
IHJldHVybiA6Ol9fZ251X2N4eDo6X19jYXB0dXJlX2lzbm9ybWFsKF9fZik7IH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGludAogICAgc2lnbmJpdChfVHAgX19mKSB7IHJl
dHVybiA6Ol9fZ251X2N4eDo6X19jYXB0dXJlX3NpZ25iaXQoX19mKTsgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgaW50CiAgICBpc2dyZWF0ZXIoX1RwIF9fZjEsIF9UcCBf
X2YyKQogICAgeyByZXR1cm4gOjpfX2dudV9jeHg6Ol9fY2FwdHVyZV9pc2dyZWF0ZXIoX19mMSwg
X19mMik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGludAogICAgaXNn
cmVhdGVyZXF1YWwoX1RwIF9fZjEsIF9UcCBfX2YyKQogICAgeyByZXR1cm4gOjpfX2dudV9jeHg6
Ol9fY2FwdHVyZV9pc2dyZWF0ZXJlcXVhbChfX2YxLCBfX2YyKTsgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBpbmxpbmUgaW50CiAgICBpc2xlc3MoX1RwIF9fZjEsIF9UcCBfX2YyKQog
ICAgeyByZXR1cm4gOjpfX2dudV9jeHg6Ol9fY2FwdHVyZV9pc2xlc3MoX19mMSwgX19mMik7IH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGludAogICAgaXNsZXNzZXF1YWwo
X1RwIF9fZjEsIF9UcCBfX2YyKQogICAgeyByZXR1cm4gOjpfX2dudV9jeHg6Ol9fY2FwdHVyZV9p
c2xlc3NlcXVhbChfX2YxLCBfX2YyKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBp
bmxpbmUgaW50CiAgICBpc2xlc3NncmVhdGVyKF9UcCBfX2YxLCBfVHAgX19mMikKICAgIHsgcmV0
dXJuIDo6X19nbnVfY3h4OjpfX2NhcHR1cmVfaXNsZXNzZ3JlYXRlcihfX2YxLCBfX2YyKTsgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgaW50CiAgICBpc3Vub3JkZXJlZChf
VHAgX19mMSwgX1RwIF9fZjIpCiAgICB7IHJldHVybiA6Ol9fZ251X2N4eDo6X19jYXB0dXJlX2lz
dW5vcmRlcmVkKF9fZjEsIF9fZjIpOyB9Cgp9CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYysrLzQu
Mi4xL2JpdHMvY21hdGgudGNjIiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L2NtYXRoLnRjYyIgMwojZGVmaW5lIF9HTElCQ1hYX0NNQVRIX1RDQyAxCgpuYW1lc3BhY2Ugc3Rk
IHsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9UcAogICAgX19jbWF0aF9w
b3dlcihfVHAgX194LCB1bnNpZ25lZCBpbnQgX19uKQogICAgewogICAgICBfVHAgX195ID0gX19u
ICUgMiA/IF9feCA6IDE7CgogICAgICB3aGlsZSAoX19uID4+PSAxKQogICAgICAgIHsKICAgICAg
ICAgIF9feCA9IF9feCAqIF9feDsKICAgICAgICAgIGlmIChfX24gJSAyKQogICAgICAgICAgICBf
X3kgPSBfX3kgKiBfX3g7CiAgICAgICAgfQoKICAgICAgcmV0dXJuIF9feTsKICAgIH0KCn0KIyA1
OTggIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvY21hdGgiIDIgMwojIDMxICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL01hdGhFeHRyYXMuaCIgMgojIDU3ICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL01hdGhFeHRyYXMuaCIKY29uc3QgZG91YmxlIHBpRG91Ymxl
ID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1MDI4ODsKY29uc3QgZmxvYXQgcGlG
bG9hdCA9IHN0YXRpY19jYXN0PGZsb2F0PigzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3
OTUwMjg4KTsKCgoKCgoKY29uc3QgZG91YmxlIHBpT3ZlclR3b0RvdWJsZSA9IDEuNTcwNzk2MzI2
Nzk0ODk2NjE5MjMxMzIxNjkxNjM5NzUxNDQ7CmNvbnN0IGZsb2F0IHBpT3ZlclR3b0Zsb2F0ID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KDEuNTcwNzk2MzI2Nzk0ODk2NjE5MjMxMzIxNjkxNjM5NzUxNDQp
OwoKCgoKCgpjb25zdCBkb3VibGUgcGlPdmVyRm91ckRvdWJsZSA9IDAuNzg1Mzk4MTYzMzk3NDQ4
MzA5NjE1NjYwODQ1ODE5ODc1NzIxOwpjb25zdCBmbG9hdCBwaU92ZXJGb3VyRmxvYXQgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oMC43ODUzOTgxNjMzOTc0NDgzMDk2MTU2NjA4NDU4MTk4NzU3MjEpOwoK
CgoKCmlubGluZSBkb3VibGUgd3RmX2NlaWwoZG91YmxlIHgpIHsgcmV0dXJuIGNvcHlzaWduKGNl
aWwoeCksIHgpOyB9CgojZGVmaW5lIGNlaWwoeCkgd3RmX2NlaWwoeCkKIyAxOTQgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oIgppbmxpbmUgZG91YmxlIGRl
ZzJyYWQoZG91YmxlIGQpIHsgcmV0dXJuIGQgKiBwaURvdWJsZSAvIDE4MC4wOyB9CmlubGluZSBk
b3VibGUgcmFkMmRlZyhkb3VibGUgcikgeyByZXR1cm4gciAqIDE4MC4wIC8gcGlEb3VibGU7IH0K
aW5saW5lIGRvdWJsZSBkZWcyZ3JhZChkb3VibGUgZCkgeyByZXR1cm4gZCAqIDQwMC4wIC8gMzYw
LjA7IH0KaW5saW5lIGRvdWJsZSBncmFkMmRlZyhkb3VibGUgZykgeyByZXR1cm4gZyAqIDM2MC4w
IC8gNDAwLjA7IH0KaW5saW5lIGRvdWJsZSB0dXJuMmRlZyhkb3VibGUgdCkgeyByZXR1cm4gdCAq
IDM2MC4wOyB9CmlubGluZSBkb3VibGUgZGVnMnR1cm4oZG91YmxlIGQpIHsgcmV0dXJuIGQgLyAz
NjAuMDsgfQppbmxpbmUgZG91YmxlIHJhZDJncmFkKGRvdWJsZSByKSB7IHJldHVybiByICogMjAw
LjAgLyBwaURvdWJsZTsgfQppbmxpbmUgZG91YmxlIGdyYWQycmFkKGRvdWJsZSBnKSB7IHJldHVy
biBnICogcGlEb3VibGUgLyAyMDAuMDsgfQoKaW5saW5lIGZsb2F0IGRlZzJyYWQoZmxvYXQgZCkg
eyByZXR1cm4gZCAqIHBpRmxvYXQgLyAxODAuMGY7IH0KaW5saW5lIGZsb2F0IHJhZDJkZWcoZmxv
YXQgcikgeyByZXR1cm4gciAqIDE4MC4wZiAvIHBpRmxvYXQ7IH0KaW5saW5lIGZsb2F0IGRlZzJn
cmFkKGZsb2F0IGQpIHsgcmV0dXJuIGQgKiA0MDAuMGYgLyAzNjAuMGY7IH0KaW5saW5lIGZsb2F0
IGdyYWQyZGVnKGZsb2F0IGcpIHsgcmV0dXJuIGcgKiAzNjAuMGYgLyA0MDAuMGY7IH0KaW5saW5l
IGZsb2F0IHR1cm4yZGVnKGZsb2F0IHQpIHsgcmV0dXJuIHQgKiAzNjAuMGY7IH0KaW5saW5lIGZs
b2F0IGRlZzJ0dXJuKGZsb2F0IGQpIHsgcmV0dXJuIGQgLyAzNjAuMGY7IH0KaW5saW5lIGZsb2F0
IHJhZDJncmFkKGZsb2F0IHIpIHsgcmV0dXJuIHIgKiAyMDAuMGYgLyBwaUZsb2F0OyB9CmlubGlu
ZSBmbG9hdCBncmFkMnJhZChmbG9hdCBnKSB7IHJldHVybiBnICogcGlGbG9hdCAvIDIwMC4wZjsg
fQoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGRlZmF1bHRNaW5pbXVtRm9yQ2xhbXAo
KSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKTsgfQp0ZW1wbGF0ZTw+IGlu
bGluZSBmbG9hdCBkZWZhdWx0TWluaW11bUZvckNsYW1wKCkgeyByZXR1cm4gLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjptYXgoKTsgfQp0ZW1wbGF0ZTw+IGlubGluZSBkb3VibGUgZGVmYXVs
dE1pbmltdW1Gb3JDbGFtcCgpIHsgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
Om1heCgpOyB9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGRlZmF1bHRNYXhpbXVtRm9y
Q2xhbXAoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKTsgfQoKdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgY2xhbXBUbyhkb3VibGUgdmFsdWUsIFQgbWluID0gZGVm
YXVsdE1pbmltdW1Gb3JDbGFtcDxUPigpLCBUIG1heCA9IGRlZmF1bHRNYXhpbXVtRm9yQ2xhbXA8
VD4oKSkKewogICAgaWYgKHZhbHVlID49IHN0YXRpY19jYXN0PGRvdWJsZT4obWF4KSkKICAgICAg
ICByZXR1cm4gbWF4OwogICAgaWYgKHZhbHVlIDw9IHN0YXRpY19jYXN0PGRvdWJsZT4obWluKSkK
ICAgICAgICByZXR1cm4gbWluOwogICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHZhbHVlKTsKfQp0
ZW1wbGF0ZTw+IGlubGluZSBsb25nIGxvbmcgaW50IGNsYW1wVG8oZG91YmxlLCBsb25nIGxvbmcg
aW50LCBsb25nIGxvbmcgaW50KTsKCmlubGluZSBpbnQgY2xhbXBUb0ludGVnZXIoZG91YmxlIHZh
bHVlKQp7CiAgICByZXR1cm4gY2xhbXBUbzxpbnQ+KHZhbHVlKTsKfQoKaW5saW5lIGZsb2F0IGNs
YW1wVG9GbG9hdChkb3VibGUgdmFsdWUpCnsKICAgIHJldHVybiBjbGFtcFRvPGZsb2F0Pih2YWx1
ZSk7Cn0KCmlubGluZSBpbnQgY2xhbXBUb1Bvc2l0aXZlSW50ZWdlcihkb3VibGUgdmFsdWUpCnsK
ICAgIHJldHVybiBjbGFtcFRvPGludD4odmFsdWUsIDApOwp9CgppbmxpbmUgaW50IGNsYW1wVG9J
bnRlZ2VyKGZsb2F0IHZhbHVlKQp7CiAgICByZXR1cm4gY2xhbXBUbzxpbnQ+KHZhbHVlKTsKfQoK
aW5saW5lIGludCBjbGFtcFRvSW50ZWdlcih1bnNpZ25lZCB4KQp7CiAgICBjb25zdCB1bnNpZ25l
ZCBpbnRNYXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+
OjptYXgoKSk7CgogICAgaWYgKHggPj0gaW50TWF4KQogICAgICAgIHJldHVybiBzdGQ6Om51bWVy
aWNfbGltaXRzPGludD46Om1heCgpOwogICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oeCk7Cn0K
CmlubGluZSBib29sIGlzV2l0aGluSW50UmFuZ2UoZmxvYXQgeCkKewogICAgcmV0dXJuIHggPiBz
dGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSkgJiYgeCA8
IHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKfQoK
CnVzaW5nIHN0ZDo6aXNmaW5pdGU7CnVzaW5nIHN0ZDo6aXNpbmY7CnVzaW5nIHN0ZDo6aXNuYW47
CnVzaW5nIHN0ZDo6c2lnbmJpdDsKCgoKCgppbmxpbmUgdm9pZCBkZWNvbXBvc2VEb3VibGUoZG91
YmxlIG51bWJlciwgYm9vbCYgc2lnbiwgaW50MzJfdCYgZXhwb25lbnQsIHVpbnQ2NF90JiBtYW50
aXNzYSkKewogICAgZG8gaWYgKCEoaXNmaW5pdGUobnVtYmVyKSkpIHsgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYXRoRXh0cmFz
LmgiLCAyNzQsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpc2Zpbml0ZShudW1iZXIpIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKCiAgICBzaWdu
ID0gc2lnbmJpdChudW1iZXIpOwoKICAgIHVpbnQ2NF90IGJpdHMgPSBXVEY6OmJpdHdpc2VfY2Fz
dDx1aW50NjRfdD4obnVtYmVyKTsKICAgIGV4cG9uZW50ID0gKHN0YXRpY19jYXN0PGludDMyX3Q+
KGJpdHMgPj4gNTIpICYgMHg3ZmYpIC0gMHgzZmY7CiAgICBtYW50aXNzYSA9IGJpdHMgJiAweEZG
RkZGRkZGRkZGRkZ1bGw7CgoKCiAgICBpZiAoZXhwb25lbnQgPT0gLTB4M2ZmKQogICAgICAgIGV4
cG9uZW50ID0gbWFudGlzc2EgPyAtMHgzZmUgOiAwOwogICAgZWxzZQogICAgICAgIG1hbnRpc3Nh
IHw9IDB4MTAwMDAwMDAwMDAwMDB1bGw7Cn0KIyAzMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCIgMgoKCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRl
L1F0Q29yZS9RRGF0YVN0cmVhbSIgMQojIDM0ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oIiAyCiMgNTMgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgiCgpjbGFzcyBRUG9pbnQ7CgojIDc3ICIuLi8u
Li8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oIgpuYW1lc3Bh
Y2UgV2ViQ29yZSB7CgpjbGFzcyBJbnRQb2ludCB7CnB1YmxpYzoKICAgIEludFBvaW50KCkgOiBt
X3goMCksIG1feSgwKSB7IH0KICAgIEludFBvaW50KGludCB4LCBpbnQgeSkgOiBtX3goeCksIG1f
eSh5KSB7IH0KICAgIGV4cGxpY2l0IEludFBvaW50KGNvbnN0IEludFNpemUmIHNpemUpIDogbV94
KHNpemUud2lkdGgoKSksIG1feShzaXplLmhlaWdodCgpKSB7IH0KCiAgICBzdGF0aWMgSW50UG9p
bnQgemVybygpIHsgcmV0dXJuIEludFBvaW50KCk7IH0KCiAgICBpbnQgeCgpIGNvbnN0IHsgcmV0
dXJuIG1feDsgfQogICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KCiAgICB2b2lkIHNl
dFgoaW50IHgpIHsgbV94ID0geDsgfQogICAgdm9pZCBzZXRZKGludCB5KSB7IG1feSA9IHk7IH0K
CiAgICB2b2lkIG1vdmUoY29uc3QgSW50U2l6ZSYgcykgeyBtb3ZlKHMud2lkdGgoKSwgcy5oZWln
aHQoKSk7IH0KICAgIHZvaWQgbW92ZUJ5KGNvbnN0IEludFBvaW50JiBvZmZzZXQpIHsgbW92ZShv
ZmZzZXQueCgpLCBvZmZzZXQueSgpKTsgfQogICAgdm9pZCBtb3ZlKGludCBkeCwgaW50IGR5KSB7
IG1feCArPSBkeDsgbV95ICs9IGR5OyB9CiAgICB2b2lkIHNjYWxlKGZsb2F0IHN4LCBmbG9hdCBz
eSkKICAgIHsKICAgICAgICBtX3ggPSBscm91bmRmKHN0YXRpY19jYXN0PGZsb2F0PihtX3ggKiBz
eCkpOwogICAgICAgIG1feSA9IGxyb3VuZGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1feSAqIHN5KSk7
CiAgICB9CgogICAgSW50UG9pbnQgZXhwYW5kZWRUbyhjb25zdCBJbnRQb2ludCYgb3RoZXIpIGNv
bnN0CiAgICB7CiAgICAgICAgcmV0dXJuIEludFBvaW50KG1feCA+IG90aGVyLm1feCA/IG1feCA6
IG90aGVyLm1feCwKICAgICAgICAgICAgbV95ID4gb3RoZXIubV95ID8gbV95IDogb3RoZXIubV95
KTsKICAgIH0KCiAgICBJbnRQb2ludCBzaHJ1bmtUbyhjb25zdCBJbnRQb2ludCYgb3RoZXIpIGNv
bnN0CiAgICB7CiAgICAgICAgcmV0dXJuIEludFBvaW50KG1feCA8IG90aGVyLm1feCA/IG1feCA6
IG90aGVyLm1feCwKICAgICAgICAgICAgbV95IDwgb3RoZXIubV95ID8gbV95IDogb3RoZXIubV95
KTsKICAgIH0KCiAgICB2b2lkIGNsYW1wTmVnYXRpdmVUb1plcm8oKQogICAgewogICAgICAgICp0
aGlzID0gZXhwYW5kZWRUbyh6ZXJvKCkpOwogICAgfQoKICAgIEludFBvaW50IHRyYW5zcG9zZWRQ
b2ludCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIEludFBvaW50KG1feSwgbV94KTsKICAg
IH0KIyAxNDAgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBv
aW50LmgiCiAgICBJbnRQb2ludChjb25zdCBRUG9pbnQmKTsKICAgIG9wZXJhdG9yIFFQb2ludCgp
IGNvbnN0OwojIDE2OSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50UG9pbnQuaCIKcHJpdmF0ZToKICAgIGludCBtX3gsIG1feTsKfTsKCmlubGluZSBJbnRQb2lu
dCYgb3BlcmF0b3IrPShJbnRQb2ludCYgYSwgY29uc3QgSW50U2l6ZSYgYikKewogICAgYS5tb3Zl
KGIud2lkdGgoKSwgYi5oZWlnaHQoKSk7CiAgICByZXR1cm4gYTsKfQoKaW5saW5lIEludFBvaW50
JiBvcGVyYXRvci09KEludFBvaW50JiBhLCBjb25zdCBJbnRTaXplJiBiKQp7CiAgICBhLm1vdmUo
LWIud2lkdGgoKSwgLWIuaGVpZ2h0KCkpOwogICAgcmV0dXJuIGE7Cn0KCmlubGluZSBJbnRQb2lu
dCBvcGVyYXRvcisoY29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IEludFNpemUmIGIpCnsKICAgIHJl
dHVybiBJbnRQb2ludChhLngoKSArIGIud2lkdGgoKSwgYS55KCkgKyBiLmhlaWdodCgpKTsKfQoK
aW5saW5lIEludFBvaW50IG9wZXJhdG9yKyhjb25zdCBJbnRQb2ludCYgYSwgY29uc3QgSW50UG9p
bnQmIGIpCnsKICAgIHJldHVybiBJbnRQb2ludChhLngoKSArIGIueCgpLCBhLnkoKSArIGIueSgp
KTsKfQoKaW5saW5lIEludFNpemUgb3BlcmF0b3ItKGNvbnN0IEludFBvaW50JiBhLCBjb25zdCBJ
bnRQb2ludCYgYikKewogICAgcmV0dXJuIEludFNpemUoYS54KCkgLSBiLngoKSwgYS55KCkgLSBi
LnkoKSk7Cn0KCmlubGluZSBJbnRQb2ludCBvcGVyYXRvci0oY29uc3QgSW50UG9pbnQmIGEsIGNv
bnN0IEludFNpemUmIGIpCnsKICAgIHJldHVybiBJbnRQb2ludChhLngoKSAtIGIud2lkdGgoKSwg
YS55KCkgLSBiLmhlaWdodCgpKTsKfQoKaW5saW5lIEludFBvaW50IG9wZXJhdG9yLShjb25zdCBJ
bnRQb2ludCYgcG9pbnQpCnsKICAgIHJldHVybiBJbnRQb2ludCgtcG9pbnQueCgpLCAtcG9pbnQu
eSgpKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRQb2ludCYgYSwgY29uc3Qg
SW50UG9pbnQmIGIpCnsKICAgIHJldHVybiBhLngoKSA9PSBiLngoKSAmJiBhLnkoKSA9PSBiLnko
KTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbnRQb2ludCYgYSwgY29uc3QgSW50
UG9pbnQmIGIpCnsKICAgIHJldHVybiBhLngoKSAhPSBiLngoKSB8fCBhLnkoKSAhPSBiLnkoKTsK
fQoKaW5saW5lIEludFBvaW50IHRvUG9pbnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkKewogICAgcmV0
dXJuIEludFBvaW50KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Cn0KCmlubGluZSBJbnRT
aXplIHRvU2l6ZShjb25zdCBJbnRQb2ludCYgYSkKewogICAgcmV0dXJuIEludFNpemUoYS54KCks
IGEueSgpKTsKfQoKCmlubGluZSBRRGF0YVN0cmVhbSYgb3BlcmF0b3I8PChRRGF0YVN0cmVhbSYg
c3RyZWFtLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpCnsKICAgIHN0cmVhbSA8PCBwb2ludC54KCkg
PDwgcG9pbnQueSgpOwogICAgcmV0dXJuIHN0cmVhbTsKfQoKaW5saW5lIFFEYXRhU3RyZWFtJiBv
cGVyYXRvcj4+KFFEYXRhU3RyZWFtJiBzdHJlYW0sIEludFBvaW50JiBwb2ludCkKewogICAgaW50
IHgsIHk7CiAgICBzdHJlYW0gPj4geCA+PiB5OwogICAgcG9pbnQuc2V0WCh4KTsKICAgIHBvaW50
LnNldFkoeSk7CiAgICByZXR1cm4gc3RyZWFtOwp9CgoKfQojIDMwICIuLi8uLi8uLi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgiIDIKIyAzOCAiLi4vLi4vLi4vU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIgp0eXBlZGVmIHN0cnVjdCBD
R1JlY3QgTlNSZWN0OwojIDQ3ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0LmgiCgpjbGFzcyBRUmVjdDsKCiMgNzMgIi4uLy4uLy4uL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCIKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xh
c3MgRmxvYXRSZWN0OwoKY2xhc3MgSW50UmVjdCB7CnB1YmxpYzoKICAgIEludFJlY3QoKSB7IH0K
ICAgIEludFJlY3QoY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uLCBjb25zdCBJbnRTaXplJiBzaXpl
KQogICAgICAgIDogbV9sb2NhdGlvbihsb2NhdGlvbiksIG1fc2l6ZShzaXplKSB7IH0KICAgIElu
dFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgICAgOiBtX2xv
Y2F0aW9uKEludFBvaW50KHgsIHkpKSwgbV9zaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpIHsg
fQoKICAgIGV4cGxpY2l0IEludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KTsKCiAgICBJbnRQ
b2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KICAgIEludFNpemUg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQoKICAgIHZvaWQgc2V0TG9jYXRpb24oY29u
c3QgSW50UG9pbnQmIGxvY2F0aW9uKSB7IG1fbG9jYXRpb24gPSBsb2NhdGlvbjsgfQogICAgdm9p
ZCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9zaXplID0gc2l6ZTsgfQoKICAgIGlu
dCB4KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi54KCk7IH0KICAgIGludCB5KCkgY29uc3Qg
eyByZXR1cm4gbV9sb2NhdGlvbi55KCk7IH0KICAgIGludCBtYXhYKCkgY29uc3QgeyByZXR1cm4g
eCgpICsgd2lkdGgoKTsgfQogICAgaW50IG1heFkoKSBjb25zdCB7IHJldHVybiB5KCkgKyBoZWln
aHQoKTsgfQogICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0K
ICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KCiAgICB2
b2lkIHNldFgoaW50IHgpIHsgbV9sb2NhdGlvbi5zZXRYKHgpOyB9CiAgICB2b2lkIHNldFkoaW50
IHkpIHsgbV9sb2NhdGlvbi5zZXRZKHkpOyB9CiAgICB2b2lkIHNldFdpZHRoKGludCB3aWR0aCkg
eyBtX3NpemUuc2V0V2lkdGgod2lkdGgpOyB9CiAgICB2b2lkIHNldEhlaWdodChpbnQgaGVpZ2h0
KSB7IG1fc2l6ZS5zZXRIZWlnaHQoaGVpZ2h0KTsgfQoKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZS5pc0VtcHR5KCk7IH0KCgoKICAgIEludFBvaW50IGNlbnRlcigpIGNv
bnN0IHsgcmV0dXJuIEludFBvaW50KHgoKSArIHdpZHRoKCkgLyAyLCB5KCkgKyBoZWlnaHQoKSAv
IDIpOyB9CgogICAgdm9pZCBtb3ZlKGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9sb2NhdGlvbiAr
PSBzaXplOyB9CiAgICB2b2lkIG1vdmVCeShjb25zdCBJbnRQb2ludCYgb2Zmc2V0KSB7IG1fbG9j
YXRpb24ubW92ZShvZmZzZXQueCgpLCBvZmZzZXQueSgpKTsgfQogICAgdm9pZCBtb3ZlKGludCBk
eCwgaW50IGR5KSB7IG1fbG9jYXRpb24ubW92ZShkeCwgZHkpOyB9CgogICAgdm9pZCBleHBhbmQo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX3NpemUgKz0gc2l6ZTsgfQogICAgdm9pZCBleHBhbmQo
aW50IGR3LCBpbnQgZGgpIHsgbV9zaXplLmV4cGFuZChkdywgZGgpOyB9CiAgICB2b2lkIGNvbnRy
YWN0KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9zaXplIC09IHNpemU7IH0KICAgIHZvaWQgY29u
dHJhY3QoaW50IGR3LCBpbnQgZGgpIHsgbV9zaXplLmV4cGFuZCgtZHcsIC1kaCk7IH0KCiAgICB2
b2lkIHNoaWZ0WEVkZ2VUbyhpbnQgZWRnZSkKICAgIHsKICAgICAgICBpbnQgZGVsdGEgPSBlZGdl
IC0geCgpOwogICAgICAgIHNldFgoZWRnZSk7CiAgICAgICAgc2V0V2lkdGgoc3RkOjptYXgoMCwg
d2lkdGgoKSAtIGRlbHRhKSk7CiAgICB9CiAgICB2b2lkIHNoaWZ0TWF4WEVkZ2VUbyhpbnQgZWRn
ZSkKICAgIHsKICAgICAgICBpbnQgZGVsdGEgPSBlZGdlIC0gbWF4WCgpOwogICAgICAgIHNldFdp
ZHRoKHN0ZDo6bWF4KDAsIHdpZHRoKCkgKyBkZWx0YSkpOwogICAgfQogICAgdm9pZCBzaGlmdFlF
ZGdlVG8oaW50IGVkZ2UpCiAgICB7CiAgICAgICAgaW50IGRlbHRhID0gZWRnZSAtIHkoKTsKICAg
ICAgICBzZXRZKGVkZ2UpOwogICAgICAgIHNldEhlaWdodChzdGQ6Om1heCgwLCBoZWlnaHQoKSAt
IGRlbHRhKSk7CiAgICB9CiAgICB2b2lkIHNoaWZ0TWF4WUVkZ2VUbyhpbnQgZWRnZSkKICAgIHsK
ICAgICAgICBpbnQgZGVsdGEgPSBlZGdlIC0gbWF4WSgpOwogICAgICAgIHNldEhlaWdodChzdGQ6
Om1heCgwLCBoZWlnaHQoKSArIGRlbHRhKSk7CiAgICB9CgogICAgSW50UG9pbnQgbWluWE1pbllD
b3JuZXIoKSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uOyB9CiAgICBJbnRQb2ludCBtYXhYTWlu
WUNvcm5lcigpIGNvbnN0IHsgcmV0dXJuIEludFBvaW50KG1fbG9jYXRpb24ueCgpICsgbV9zaXpl
LndpZHRoKCksIG1fbG9jYXRpb24ueSgpKTsgfQogICAgSW50UG9pbnQgbWluWE1heFlDb3JuZXIo
KSBjb25zdCB7IHJldHVybiBJbnRQb2ludChtX2xvY2F0aW9uLngoKSwgbV9sb2NhdGlvbi55KCkg
KyBtX3NpemUuaGVpZ2h0KCkpOyB9CiAgICBJbnRQb2ludCBtYXhYTWF4WUNvcm5lcigpIGNvbnN0
IHsgcmV0dXJuIEludFBvaW50KG1fbG9jYXRpb24ueCgpICsgbV9zaXplLndpZHRoKCksIG1fbG9j
YXRpb24ueSgpICsgbV9zaXplLmhlaWdodCgpKTsgfQoKICAgIGJvb2wgaW50ZXJzZWN0cyhjb25z
dCBJbnRSZWN0JikgY29uc3Q7CiAgICBib29sIGNvbnRhaW5zKGNvbnN0IEludFJlY3QmKSBjb25z
dDsKCgoKICAgIGJvb2wgY29udGFpbnMoaW50IHB4LCBpbnQgcHkpIGNvbnN0CiAgICAgICAgeyBy
ZXR1cm4gcHggPj0geCgpICYmIHB4IDwgbWF4WCgpICYmIHB5ID49IHkoKSAmJiBweSA8IG1heFko
KTsgfQogICAgYm9vbCBjb250YWlucyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0IHsgcmV0
dXJuIGNvbnRhaW5zKHBvaW50LngoKSwgcG9pbnQueSgpKTsgfQoKICAgIHZvaWQgaW50ZXJzZWN0
KGNvbnN0IEludFJlY3QmKTsKICAgIHZvaWQgdW5pdGUoY29uc3QgSW50UmVjdCYpOwogICAgdm9p
ZCB1bml0ZUlmTm9uWmVybyhjb25zdCBJbnRSZWN0Jik7CgogICAgdm9pZCBpbmZsYXRlWChpbnQg
ZHgpCiAgICB7CiAgICAgICAgbV9sb2NhdGlvbi5zZXRYKG1fbG9jYXRpb24ueCgpIC0gZHgpOwog
ICAgICAgIG1fc2l6ZS5zZXRXaWR0aChtX3NpemUud2lkdGgoKSArIGR4ICsgZHgpOwogICAgfQog
ICAgdm9pZCBpbmZsYXRlWShpbnQgZHkpCiAgICB7CiAgICAgICAgbV9sb2NhdGlvbi5zZXRZKG1f
bG9jYXRpb24ueSgpIC0gZHkpOwogICAgICAgIG1fc2l6ZS5zZXRIZWlnaHQobV9zaXplLmhlaWdo
dCgpICsgZHkgKyBkeSk7CiAgICB9CiAgICB2b2lkIGluZmxhdGUoaW50IGQpIHsgaW5mbGF0ZVgo
ZCk7IGluZmxhdGVZKGQpOyB9CiAgICB2b2lkIHNjYWxlKGZsb2F0IHMpOwoKICAgIEludFJlY3Qg
dHJhbnNwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KG1fbG9jYXRpb24udHJhbnNw
b3NlZFBvaW50KCksIG1fc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpKTsgfQojIDE4NSAiLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIgogICAgSW50UmVjdChj
b25zdCBRUmVjdCYpOwogICAgb3BlcmF0b3IgUVJlY3QoKSBjb25zdDsKIyAyMTcgIi4uLy4uLy4u
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCIKICAgIG9wZXJhdG9y
IE5TUmVjdCgpIGNvbnN0OwoKCnByaXZhdGU6CiAgICBJbnRQb2ludCBtX2xvY2F0aW9uOwogICAg
SW50U2l6ZSBtX3NpemU7Cn07CgppbmxpbmUgSW50UmVjdCBpbnRlcnNlY3Rpb24oY29uc3QgSW50
UmVjdCYgYSwgY29uc3QgSW50UmVjdCYgYikKewogICAgSW50UmVjdCBjID0gYTsKICAgIGMuaW50
ZXJzZWN0KGIpOwogICAgcmV0dXJuIGM7Cn0KCmlubGluZSBJbnRSZWN0IHVuaW9uUmVjdChjb25z
dCBJbnRSZWN0JiBhLCBjb25zdCBJbnRSZWN0JiBiKQp7CiAgICBJbnRSZWN0IGMgPSBhOwogICAg
Yy51bml0ZShiKTsKICAgIHJldHVybiBjOwp9CgpJbnRSZWN0IHVuaW9uUmVjdChjb25zdCBWZWN0
b3I8SW50UmVjdD4mKTsKCmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50UmVjdCYgYSwg
Y29uc3QgSW50UmVjdCYgYikKewogICAgcmV0dXJuIGEubG9jYXRpb24oKSA9PSBiLmxvY2F0aW9u
KCkgJiYgYS5zaXplKCkgPT0gYi5zaXplKCk7Cn0KCmlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgSW50UmVjdCYgYSwgY29uc3QgSW50UmVjdCYgYikKewogICAgcmV0dXJuIGEubG9jYXRpb24o
KSAhPSBiLmxvY2F0aW9uKCkgfHwgYS5zaXplKCkgIT0gYi5zaXplKCk7Cn0KCgoKCgoKCkludFJl
Y3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBOU1JlY3QmKTsKCgp9CiMgMzggIi4uLy4uLy4uL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgiIDEKIyAzNyAiLi4vLi4vLi4vU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgiCiNkZWZpbmUgTGF5b3V0VHlwZXNfaCAKCiMgMSAi
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgiIDEK
IyAyOCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0
LmgiCiNkZWZpbmUgRmxvYXRSZWN0X2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCIgMQojIDI4ICIuLi8uLi8uLi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgiCiNkZWZpbmUgRmxvYXRQb2ludF9o
IAoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNp
emUuaCIgMQojIDI5ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFNpemUuaCIKI2RlZmluZSBGbG9hdFNpemVfaCAKIyA0MCAiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgiCnR5cGVkZWYgc3RydWN0IENHU2l6
ZSBOU1NpemU7CgoKCgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgSW50U2l6ZTsKCmNsYXNz
IEZsb2F0U2l6ZSB7CnB1YmxpYzoKICAgIEZsb2F0U2l6ZSgpIDogbV93aWR0aCgwKSwgbV9oZWln
aHQoMCkgeyB9CiAgICBGbG9hdFNpemUoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgOiBtX3dp
ZHRoKHdpZHRoKSwgbV9oZWlnaHQoaGVpZ2h0KSB7IH0KICAgIEZsb2F0U2l6ZShjb25zdCBJbnRT
aXplJik7CgogICAgc3RhdGljIEZsb2F0U2l6ZSBuYXJyb3dQcmVjaXNpb24oZG91YmxlIHdpZHRo
LCBkb3VibGUgaGVpZ2h0KTsKCiAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lk
dGg7IH0KICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CgogICAg
dm9pZCBzZXRXaWR0aChmbG9hdCB3aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KICAgIHZvaWQg
c2V0SGVpZ2h0KGZsb2F0IGhlaWdodCkgeyBtX2hlaWdodCA9IGhlaWdodDsgfQoKICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9
CiAgICBib29sIGlzWmVybygpIGNvbnN0OwogICAgYm9vbCBpc0V4cHJlc3NpYmxlQXNJbnRTaXpl
KCkgY29uc3Q7CgogICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3dpZHRo
IC8gbV9oZWlnaHQ7IH0KCiAgICB2b2lkIGV4cGFuZChmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
KQogICAgewogICAgICAgIG1fd2lkdGggKz0gd2lkdGg7CiAgICAgICAgbV9oZWlnaHQgKz0gaGVp
Z2h0OwogICAgfQoKICAgIHZvaWQgc2NhbGUoZmxvYXQgcykgeyBzY2FsZShzLCBzKTsgfQoKICAg
IHZvaWQgc2NhbGUoZmxvYXQgc2NhbGVYLCBmbG9hdCBzY2FsZVkpCiAgICB7CiAgICAgICAgbV93
aWR0aCAqPSBzY2FsZVg7CiAgICAgICAgbV9oZWlnaHQgKj0gc2NhbGVZOwogICAgfQoKICAgIEZs
b2F0U2l6ZSBleHBhbmRlZFRvKGNvbnN0IEZsb2F0U2l6ZSYgb3RoZXIpIGNvbnN0CiAgICB7CiAg
ICAgICAgcmV0dXJuIEZsb2F0U2l6ZShtX3dpZHRoID4gb3RoZXIubV93aWR0aCA/IG1fd2lkdGgg
OiBvdGhlci5tX3dpZHRoLAogICAgICAgICAgICBtX2hlaWdodCA+IG90aGVyLm1faGVpZ2h0ID8g
bV9oZWlnaHQgOiBvdGhlci5tX2hlaWdodCk7CiAgICB9CgogICAgRmxvYXRTaXplIHNocnVua1Rv
KGNvbnN0IEZsb2F0U2l6ZSYgb3RoZXIpIGNvbnN0CiAgICB7CiAgICAgICByZXR1cm4gRmxvYXRT
aXplKG1fd2lkdGggPCBvdGhlci5tX3dpZHRoID8gbV93aWR0aCA6IG90aGVyLm1fd2lkdGgsCiAg
ICAgICAgICAgbV9oZWlnaHQgPCBvdGhlci5tX2hlaWdodCA/IG1faGVpZ2h0IDogb3RoZXIubV9o
ZWlnaHQpOwogICAgfQoKICAgIGZsb2F0IGRpYWdvbmFsTGVuZ3RoKCkgY29uc3Q7CiAgICBmbG9h
dCBkaWFnb25hbExlbmd0aFNxdWFyZWQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX3dp
ZHRoICogbV93aWR0aCArIG1faGVpZ2h0ICogbV9oZWlnaHQ7CiAgICB9CgogICAgRmxvYXRTaXpl
IHRyYW5zcG9zZWRTaXplKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gRmxvYXRTaXplKG1f
aGVpZ2h0LCBtX3dpZHRoKTsKICAgIH0KIyAxMTQgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oIgogICAgZXhwbGljaXQgRmxvYXRTaXplKGNvbnN0
IE5TU2l6ZSAmKTsKICAgIG9wZXJhdG9yIE5TU2l6ZSgpIGNvbnN0OwoKCnByaXZhdGU6CiAgICBm
bG9hdCBtX3dpZHRoLCBtX2hlaWdodDsKfTsKCmlubGluZSBGbG9hdFNpemUmIG9wZXJhdG9yKz0o
RmxvYXRTaXplJiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCnsKICAgIGEuc2V0V2lkdGgoYS53aWR0
aCgpICsgYi53aWR0aCgpKTsKICAgIGEuc2V0SGVpZ2h0KGEuaGVpZ2h0KCkgKyBiLmhlaWdodCgp
KTsKICAgIHJldHVybiBhOwp9CgppbmxpbmUgRmxvYXRTaXplJiBvcGVyYXRvci09KEZsb2F0U2l6
ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQp7CiAgICBhLnNldFdpZHRoKGEud2lkdGgoKSAtIGIu
d2lkdGgoKSk7CiAgICBhLnNldEhlaWdodChhLmhlaWdodCgpIC0gYi5oZWlnaHQoKSk7CiAgICBy
ZXR1cm4gYTsKfQoKaW5saW5lIEZsb2F0U2l6ZSBvcGVyYXRvcisoY29uc3QgRmxvYXRTaXplJiBh
LCBjb25zdCBGbG9hdFNpemUmIGIpCnsKICAgIHJldHVybiBGbG9hdFNpemUoYS53aWR0aCgpICsg
Yi53aWR0aCgpLCBhLmhlaWdodCgpICsgYi5oZWlnaHQoKSk7Cn0KCmlubGluZSBGbG9hdFNpemUg
b3BlcmF0b3ItKGNvbnN0IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQp7CiAgICBy
ZXR1cm4gRmxvYXRTaXplKGEud2lkdGgoKSAtIGIud2lkdGgoKSwgYS5oZWlnaHQoKSAtIGIuaGVp
Z2h0KCkpOwp9CgppbmxpbmUgRmxvYXRTaXplIG9wZXJhdG9yLShjb25zdCBGbG9hdFNpemUmIHNp
emUpCnsKICAgIHJldHVybiBGbG9hdFNpemUoLXNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkp
Owp9CgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxv
YXRTaXplJiBiKQp7CiAgICByZXR1cm4gYS53aWR0aCgpID09IGIud2lkdGgoKSAmJiBhLmhlaWdo
dCgpID09IGIuaGVpZ2h0KCk7Cn0KCmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRmxvYXRT
aXplJiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCnsKICAgIHJldHVybiBhLndpZHRoKCkgIT0gYi53
aWR0aCgpIHx8IGEuaGVpZ2h0KCkgIT0gYi5oZWlnaHQoKTsKfQoKaW5saW5lIEludFNpemUgcm91
bmRlZEludFNpemUoY29uc3QgRmxvYXRTaXplJiBwKQp7CiAgICByZXR1cm4gSW50U2l6ZShzdGF0
aWNfY2FzdDxpbnQ+KHJvdW5kZihwLndpZHRoKCkpKSwgc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYo
cC5oZWlnaHQoKSkpKTsKfQoKaW5saW5lIEludFNpemUgZXhwYW5kZWRJbnRTaXplKGNvbnN0IEZs
b2F0U2l6ZSYgcCkKewogICAgcmV0dXJuIEludFNpemUoY2xhbXBUb0ludGVnZXIoY2VpbGYocC53
aWR0aCgpKSksIGNsYW1wVG9JbnRlZ2VyKGNlaWxmKHAuaGVpZ2h0KCkpKSk7Cn0KCmlubGluZSBJ
bnRQb2ludCBmbG9vcmVkSW50UG9pbnQoY29uc3QgRmxvYXRTaXplJiBwKQp7CiAgICByZXR1cm4g
SW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50PihwLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHAu
aGVpZ2h0KCkpKTsKfQoKfQojIDMxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFBvaW50LmgiIDIKIyA0OCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oIgoKY2xhc3MgUVBvaW50RjsKCiMgNjEgIi4uLy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCIKbmFtZXNw
YWNlIFdlYkNvcmUgewoKY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwpjbGFzcyBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDsKY2xhc3MgSW50UG9pbnQ7CmNsYXNzIEludFNpemU7CgpjbGFzcyBGbG9hdFBvaW50
IHsKcHVibGljOgogICAgRmxvYXRQb2ludCgpIDogbV94KDApLCBtX3koMCkgeyB9CiAgICBGbG9h
dFBvaW50KGZsb2F0IHgsIGZsb2F0IHkpIDogbV94KHgpLCBtX3koeSkgeyB9CiAgICBGbG9hdFBv
aW50KGNvbnN0IEludFBvaW50Jik7CgoKICAgIHN0YXRpYyBGbG9hdFBvaW50IHplcm8oKSB7IHJl
dHVybiBGbG9hdFBvaW50KCk7IH0KCiAgICBzdGF0aWMgRmxvYXRQb2ludCBuYXJyb3dQcmVjaXNp
b24oZG91YmxlIHgsIGRvdWJsZSB5KTsKCiAgICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gbV94
OyB9CiAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CgogICAgdm9pZCBzZXRYKGZs
b2F0IHgpIHsgbV94ID0geDsgfQogICAgdm9pZCBzZXRZKGZsb2F0IHkpIHsgbV95ID0geTsgfQog
ICAgdm9pZCBzZXQoZmxvYXQgeCwgZmxvYXQgeSkKICAgIHsKICAgICAgICBtX3ggPSB4OwogICAg
ICAgIG1feSA9IHk7CiAgICB9CiAgICB2b2lkIG1vdmUoZmxvYXQgZHgsIGZsb2F0IGR5KQogICAg
ewogICAgICAgIG1feCArPSBkeDsKICAgICAgICBtX3kgKz0gZHk7CiAgICB9CiAgICB2b2lkIG1v
dmUoY29uc3QgSW50U2l6ZSYgYSkKICAgIHsKICAgICAgICBtX3ggKz0gYS53aWR0aCgpOwogICAg
ICAgIG1feSArPSBhLmhlaWdodCgpOwogICAgfQogICAgdm9pZCBtb3ZlKGNvbnN0IEZsb2F0U2l6
ZSYgYSkKICAgIHsKICAgICAgICBtX3ggKz0gYS53aWR0aCgpOwogICAgICAgIG1feSArPSBhLmhl
aWdodCgpOwogICAgfQogICAgdm9pZCBtb3ZlQnkoY29uc3QgSW50UG9pbnQmIGEpCiAgICB7CiAg
ICAgICAgbV94ICs9IGEueCgpOwogICAgICAgIG1feSArPSBhLnkoKTsKICAgIH0KICAgIHZvaWQg
bW92ZUJ5KGNvbnN0IEZsb2F0UG9pbnQmIGEpCiAgICB7CiAgICAgICAgbV94ICs9IGEueCgpOwog
ICAgICAgIG1feSArPSBhLnkoKTsKICAgIH0KICAgIHZvaWQgc2NhbGUoZmxvYXQgc3gsIGZsb2F0
IHN5KQogICAgewogICAgICAgIG1feCAqPSBzeDsKICAgICAgICBtX3kgKj0gc3k7CiAgICB9Cgog
ICAgdm9pZCBub3JtYWxpemUoKTsKCiAgICBmbG9hdCBkb3QoY29uc3QgRmxvYXRQb2ludCYgYSkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV94ICogYS54KCkgKyBtX3kgKiBhLnkoKTsKICAg
IH0KCiAgICBmbG9hdCBsZW5ndGgoKSBjb25zdDsKICAgIGZsb2F0IGxlbmd0aFNxdWFyZWQoKSBj
b25zdAogICAgewogICAgICAgIHJldHVybiBtX3ggKiBtX3ggKyBtX3kgKiBtX3k7CiAgICB9Cgog
ICAgRmxvYXRQb2ludCBleHBhbmRlZFRvKGNvbnN0IEZsb2F0UG9pbnQmIG90aGVyKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiBGbG9hdFBvaW50KHN0ZDo6bWF4KG1feCwgb3RoZXIubV94KSwg
c3RkOjptYXgobV95LCBvdGhlci5tX3kpKTsKICAgIH0KCiAgICBGbG9hdFBvaW50IHRyYW5zcG9z
ZWRQb2ludCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQobV95LCBtX3gp
OwogICAgfQojIDE1NSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludC5oIgogICAgRmxvYXRQb2ludChjb25zdCBRUG9pbnRGJik7CiAgICBvcGVyYXRv
ciBRUG9pbnRGKCkgY29uc3Q7CiMgMTY5ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFBvaW50LmgiCiAgICBGbG9hdFBvaW50IG1hdHJpeFRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0OwogICAgRmxvYXRQb2ludCBtYXRyaXhU
cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3Q7Cgpwcml2YXRlOgogICAgZmxv
YXQgbV94LCBtX3k7Cn07CgoKaW5saW5lIEZsb2F0UG9pbnQmIG9wZXJhdG9yKz0oRmxvYXRQb2lu
dCYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQp7CiAgICBhLm1vdmUoYi53aWR0aCgpLCBiLmhlaWdo
dCgpKTsKICAgIHJldHVybiBhOwp9CgppbmxpbmUgRmxvYXRQb2ludCYgb3BlcmF0b3IrPShGbG9h
dFBvaW50JiBhLCBjb25zdCBGbG9hdFBvaW50JiBiKQp7CiAgICBhLm1vdmUoYi54KCksIGIueSgp
KTsKICAgIHJldHVybiBhOwp9CgppbmxpbmUgRmxvYXRQb2ludCYgb3BlcmF0b3ItPShGbG9hdFBv
aW50JiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCnsKICAgIGEubW92ZSgtYi53aWR0aCgpLCAtYi5o
ZWlnaHQoKSk7CiAgICByZXR1cm4gYTsKfQoKaW5saW5lIEZsb2F0UG9pbnQgb3BlcmF0b3IrKGNv
bnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKewogICAgcmV0dXJuIEZsb2F0
UG9pbnQoYS54KCkgKyBiLndpZHRoKCksIGEueSgpICsgYi5oZWlnaHQoKSk7Cn0KCmlubGluZSBG
bG9hdFBvaW50IG9wZXJhdG9yKyhjb25zdCBGbG9hdFBvaW50JiBhLCBjb25zdCBGbG9hdFBvaW50
JiBiKQp7CiAgICByZXR1cm4gRmxvYXRQb2ludChhLngoKSArIGIueCgpLCBhLnkoKSArIGIueSgp
KTsKfQoKaW5saW5lIEZsb2F0U2l6ZSBvcGVyYXRvci0oY29uc3QgRmxvYXRQb2ludCYgYSwgY29u
c3QgRmxvYXRQb2ludCYgYikKewogICAgcmV0dXJuIEZsb2F0U2l6ZShhLngoKSAtIGIueCgpLCBh
LnkoKSAtIGIueSgpKTsKfQoKaW5saW5lIEZsb2F0UG9pbnQgb3BlcmF0b3ItKGNvbnN0IEZsb2F0
UG9pbnQmIGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKewogICAgcmV0dXJuIEZsb2F0UG9pbnQoYS54
KCkgLSBiLndpZHRoKCksIGEueSgpIC0gYi5oZWlnaHQoKSk7Cn0KCmlubGluZSBGbG9hdFBvaW50
IG9wZXJhdG9yLShjb25zdCBGbG9hdFBvaW50JiBhKQp7CiAgICByZXR1cm4gRmxvYXRQb2ludCgt
YS54KCksIC1hLnkoKSk7Cn0KCmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRmxvYXRQb2lu
dCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKewogICAgcmV0dXJuIGEueCgpID09IGIueCgpICYm
IGEueSgpID09IGIueSgpOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZsb2F0UG9p
bnQmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIpCnsKICAgIHJldHVybiBhLngoKSAhPSBiLngoKSB8
fCBhLnkoKSAhPSBiLnkoKTsKfQoKaW5saW5lIGZsb2F0IG9wZXJhdG9yKihjb25zdCBGbG9hdFBv
aW50JiBhLCBjb25zdCBGbG9hdFBvaW50JiBiKQp7CgogICAgcmV0dXJuIGEuZG90KGIpOwp9Cgpp
bmxpbmUgSW50UG9pbnQgcm91bmRlZEludFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHApCnsKICAg
IHJldHVybiBJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihwLngoKSkpLCBzdGF0aWNf
Y2FzdDxpbnQ+KHJvdW5kZihwLnkoKSkpKTsKfQoKaW5saW5lIEludFBvaW50IGZsb29yZWRJbnRQ
b2ludChjb25zdCBGbG9hdFBvaW50JiBwKQp7CiAgICByZXR1cm4gSW50UG9pbnQoc3RhdGljX2Nh
c3Q8aW50PihwLngoKSksIHN0YXRpY19jYXN0PGludD4ocC55KCkpKTsKfQoKaW5saW5lIEludFNp
emUgZmxvb3JlZEludFNpemUoY29uc3QgRmxvYXRQb2ludCYgcCkKewogICAgcmV0dXJuIEludFNp
emUoc3RhdGljX2Nhc3Q8aW50PihwLngoKSksIHN0YXRpY19jYXN0PGludD4ocC55KCkpKTsKfQoK
ZmxvYXQgZmluZFNsb3BlKGNvbnN0IEZsb2F0UG9pbnQmIHAxLCBjb25zdCBGbG9hdFBvaW50JiBw
MiwgZmxvYXQmIGMpOwoKCmJvb2wgZmluZEludGVyc2VjdGlvbihjb25zdCBGbG9hdFBvaW50JiBw
MSwgY29uc3QgRmxvYXRQb2ludCYgcDIsIGNvbnN0IEZsb2F0UG9pbnQmIGQxLCBjb25zdCBGbG9h
dFBvaW50JiBkMiwgRmxvYXRQb2ludCYgaW50ZXJzZWN0aW9uKTsKCn0KIyAzMSAiLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgiIDIKIyA0NSAiLi4v
Li4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgiCgpjbGFz
cyBRUmVjdEY7CgojIDY2ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFJlY3QuaCIKbmFtZXNwYWNlIFdlYkNvcmUgewoKCgoKCmNsYXNzIEludFJlY3Q7CmNs
YXNzIEludFBvaW50OwoKY2xhc3MgRmxvYXRSZWN0IHsKcHVibGljOgogICAgRmxvYXRSZWN0KCkg
eyB9CiAgICBGbG9hdFJlY3QoY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24sIGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSkKICAgICAgICA6IG1fbG9jYXRpb24obG9jYXRpb24pLCBtX3NpemUoc2l6ZSkg
eyB9CiAgICBGbG9hdFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCkKICAgICAgICA6IG1fbG9jYXRpb24oRmxvYXRQb2ludCh4LCB5KSksIG1fc2l6ZShGbG9h
dFNpemUod2lkdGgsIGhlaWdodCkpIHsgfQogICAgRmxvYXRSZWN0KGNvbnN0IEludFJlY3QmKTsK
CiAgICBzdGF0aWMgRmxvYXRSZWN0IG5hcnJvd1ByZWNpc2lvbihkb3VibGUgeCwgZG91YmxlIHks
IGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7CgogICAgRmxvYXRQb2ludCBsb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9CgogICAgdm9pZCBzZXRMb2NhdGlvbihjb25zdCBGbG9hdFBvaW50
JiBsb2NhdGlvbikgeyBtX2xvY2F0aW9uID0gbG9jYXRpb247IH0KICAgIHZvaWQgc2V0U2l6ZShj
b25zdCBGbG9hdFNpemUmIHNpemUpIHsgbV9zaXplID0gc2l6ZTsgfQoKICAgIGZsb2F0IHgoKSBj
b25zdCB7IHJldHVybiBtX2xvY2F0aW9uLngoKTsgfQogICAgZmxvYXQgeSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYXRpb24ueSgpOyB9CiAgICBmbG9hdCBtYXhYKCkgY29uc3QgeyByZXR1cm4geCgp
ICsgd2lkdGgoKTsgfQogICAgZmxvYXQgbWF4WSgpIGNvbnN0IHsgcmV0dXJuIHkoKSArIGhlaWdo
dCgpOyB9CiAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOyB9
CiAgICBmbG9hdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KCiAg
ICB2b2lkIHNldFgoZmxvYXQgeCkgeyBtX2xvY2F0aW9uLnNldFgoeCk7IH0KICAgIHZvaWQgc2V0
WShmbG9hdCB5KSB7IG1fbG9jYXRpb24uc2V0WSh5KTsgfQogICAgdm9pZCBzZXRXaWR0aChmbG9h
dCB3aWR0aCkgeyBtX3NpemUuc2V0V2lkdGgod2lkdGgpOyB9CiAgICB2b2lkIHNldEhlaWdodChm
bG9hdCBoZWlnaHQpIHsgbV9zaXplLnNldEhlaWdodChoZWlnaHQpOyB9CgogICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmlzRW1wdHkoKTsgfQogICAgYm9vbCBpc1plcm8o
KSBjb25zdCB7IHJldHVybiBtX3NpemUuaXNaZXJvKCk7IH0KICAgIGJvb2wgaXNFeHByZXNzaWJs
ZUFzSW50UmVjdCgpIGNvbnN0OwoKICAgIEZsb2F0UG9pbnQgY2VudGVyKCkgY29uc3QgeyByZXR1
cm4gRmxvYXRQb2ludCh4KCkgKyB3aWR0aCgpIC8gMiwgeSgpICsgaGVpZ2h0KCkgLyAyKTsgfQoK
ICAgIHZvaWQgbW92ZShjb25zdCBGbG9hdFNpemUmIGRlbHRhKSB7IG1fbG9jYXRpb24gKz0gZGVs
dGE7IH0KICAgIHZvaWQgbW92ZUJ5KGNvbnN0IEZsb2F0UG9pbnQmIGRlbHRhKSB7IG1fbG9jYXRp
b24ubW92ZShkZWx0YS54KCksIGRlbHRhLnkoKSk7IH0KICAgIHZvaWQgbW92ZShmbG9hdCBkeCwg
ZmxvYXQgZHkpIHsgbV9sb2NhdGlvbi5tb3ZlKGR4LCBkeSk7IH0KCiAgICB2b2lkIGV4cGFuZChj
b25zdCBGbG9hdFNpemUmIHNpemUpIHsgbV9zaXplICs9IHNpemU7IH0KICAgIHZvaWQgZXhwYW5k
KGZsb2F0IGR3LCBmbG9hdCBkaCkgeyBtX3NpemUuZXhwYW5kKGR3LCBkaCk7IH0KICAgIHZvaWQg
Y29udHJhY3QoY29uc3QgRmxvYXRTaXplJiBzaXplKSB7IG1fc2l6ZSAtPSBzaXplOyB9CiAgICB2
b2lkIGNvbnRyYWN0KGZsb2F0IGR3LCBmbG9hdCBkaCkgeyBtX3NpemUuZXhwYW5kKC1kdywgLWRo
KTsgfQoKICAgIHZvaWQgc2hpZnRYRWRnZVRvKGZsb2F0IGVkZ2UpCiAgICB7CiAgICAgICAgZmxv
YXQgZGVsdGEgPSBlZGdlIC0geCgpOwogICAgICAgIHNldFgoZWRnZSk7CiAgICAgICAgc2V0V2lk
dGgoc3RkOjptYXgoMC4wZiwgd2lkdGgoKSAtIGRlbHRhKSk7CiAgICB9CiAgICB2b2lkIHNoaWZ0
TWF4WEVkZ2VUbyhmbG9hdCBlZGdlKQogICAgewogICAgICAgIGZsb2F0IGRlbHRhID0gZWRnZSAt
IG1heFgoKTsKICAgICAgICBzZXRXaWR0aChzdGQ6Om1heCgwLjBmLCB3aWR0aCgpICsgZGVsdGEp
KTsKICAgIH0KICAgIHZvaWQgc2hpZnRZRWRnZVRvKGZsb2F0IGVkZ2UpCiAgICB7CiAgICAgICAg
ZmxvYXQgZGVsdGEgPSBlZGdlIC0geSgpOwogICAgICAgIHNldFkoZWRnZSk7CiAgICAgICAgc2V0
SGVpZ2h0KHN0ZDo6bWF4KDAuMGYsIGhlaWdodCgpIC0gZGVsdGEpKTsKICAgIH0KICAgIHZvaWQg
c2hpZnRNYXhZRWRnZVRvKGZsb2F0IGVkZ2UpCiAgICB7CiAgICAgICAgZmxvYXQgZGVsdGEgPSBl
ZGdlIC0gbWF4WSgpOwogICAgICAgIHNldEhlaWdodChzdGQ6Om1heCgwLjBmLCBoZWlnaHQoKSAr
IGRlbHRhKSk7CiAgICB9CgogICAgRmxvYXRQb2ludCBtaW5YTWluWUNvcm5lcigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9jYXRpb247IH0KICAgIEZsb2F0UG9pbnQgbWF4WE1pbllDb3JuZXIoKSBjb25z
dCB7IHJldHVybiBGbG9hdFBvaW50KG1fbG9jYXRpb24ueCgpICsgbV9zaXplLndpZHRoKCksIG1f
bG9jYXRpb24ueSgpKTsgfQogICAgRmxvYXRQb2ludCBtaW5YTWF4WUNvcm5lcigpIGNvbnN0IHsg
cmV0dXJuIEZsb2F0UG9pbnQobV9sb2NhdGlvbi54KCksIG1fbG9jYXRpb24ueSgpICsgbV9zaXpl
LmhlaWdodCgpKTsgfQogICAgRmxvYXRQb2ludCBtYXhYTWF4WUNvcm5lcigpIGNvbnN0IHsgcmV0
dXJuIEZsb2F0UG9pbnQobV9sb2NhdGlvbi54KCkgKyBtX3NpemUud2lkdGgoKSwgbV9sb2NhdGlv
bi55KCkgKyBtX3NpemUuaGVpZ2h0KCkpOyB9CgogICAgYm9vbCBpbnRlcnNlY3RzKGNvbnN0IEZs
b2F0UmVjdCYpIGNvbnN0OwogICAgYm9vbCBjb250YWlucyhjb25zdCBGbG9hdFJlY3QmKSBjb25z
dDsKCiAgICB2b2lkIGludGVyc2VjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgIHZvaWQgdW5pdGUo
Y29uc3QgRmxvYXRSZWN0Jik7CiAgICB2b2lkIHVuaXRlSWZOb25aZXJvKGNvbnN0IEZsb2F0UmVj
dCYpOwoKCgogICAgYm9vbCBjb250YWlucyhmbG9hdCBweCwgZmxvYXQgcHkpIGNvbnN0CiAgICAg
ICAgeyByZXR1cm4gcHggPj0geCgpICYmIHB4IDw9IG1heFgoKSAmJiBweSA+PSB5KCkgJiYgcHkg
PD0gbWF4WSgpOyB9CiAgICBib29sIGNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBj
b25zdCB7IHJldHVybiBjb250YWlucyhwb2ludC54KCksIHBvaW50LnkoKSk7IH0KCiAgICB2b2lk
IGluZmxhdGVYKGZsb2F0IGR4KSB7CiAgICAgICAgbV9sb2NhdGlvbi5zZXRYKG1fbG9jYXRpb24u
eCgpIC0gZHgpOwogICAgICAgIG1fc2l6ZS5zZXRXaWR0aChtX3NpemUud2lkdGgoKSArIGR4ICsg
ZHgpOwogICAgfQogICAgdm9pZCBpbmZsYXRlWShmbG9hdCBkeSkgewogICAgICAgIG1fbG9jYXRp
b24uc2V0WShtX2xvY2F0aW9uLnkoKSAtIGR5KTsKICAgICAgICBtX3NpemUuc2V0SGVpZ2h0KG1f
c2l6ZS5oZWlnaHQoKSArIGR5ICsgZHkpOwogICAgfQogICAgdm9pZCBpbmZsYXRlKGZsb2F0IGQp
IHsgaW5mbGF0ZVgoZCk7IGluZmxhdGVZKGQpOyB9CiAgICB2b2lkIHNjYWxlKGZsb2F0IHMpIHsg
c2NhbGUocywgcyk7IH0KICAgIHZvaWQgc2NhbGUoZmxvYXQgc3gsIGZsb2F0IHN5KTsKCiAgICBG
bG9hdFJlY3QgdHJhbnNwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QobV9sb2Nh
dGlvbi50cmFuc3Bvc2VkUG9pbnQoKSwgbV9zaXplLnRyYW5zcG9zZWRTaXplKCkpOyB9CgoKICAg
IHZvaWQgZml0VG9Qb2ludHMoY29uc3QgRmxvYXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQm
IHAxKTsKICAgIHZvaWQgZml0VG9Qb2ludHMoY29uc3QgRmxvYXRQb2ludCYgcDAsIGNvbnN0IEZs
b2F0UG9pbnQmIHAxLCBjb25zdCBGbG9hdFBvaW50JiBwMik7CiAgICB2b2lkIGZpdFRvUG9pbnRz
KGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQ
b2ludCYgcDIsIGNvbnN0IEZsb2F0UG9pbnQmIHAzKTsKIyAxOTEgIi4uLy4uLy4uL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oIgogICAgRmxvYXRSZWN0KGNvbnN0
IFFSZWN0RiYpOwogICAgb3BlcmF0b3IgUVJlY3RGKCkgY29uc3Q7CiAgICBGbG9hdFJlY3Qgbm9y
bWFsaXplZCgpIGNvbnN0OwojIDIyMCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRSZWN0LmgiCnByaXZhdGU6CiAgICBGbG9hdFBvaW50IG1fbG9jYXRpb247
CiAgICBGbG9hdFNpemUgbV9zaXplOwoKICAgIHZvaWQgc2V0TG9jYXRpb25BbmRTaXplRnJvbUVk
Z2VzKGZsb2F0IGxlZnQsIGZsb2F0IHRvcCwgZmxvYXQgcmlnaHQsIGZsb2F0IGJvdHRvbSkKICAg
IHsKICAgICAgICBtX2xvY2F0aW9uLnNldChsZWZ0LCB0b3ApOwogICAgICAgIG1fc2l6ZS5zZXRX
aWR0aChyaWdodCAtIGxlZnQpOwogICAgICAgIG1fc2l6ZS5zZXRIZWlnaHQoYm90dG9tIC0gdG9w
KTsKICAgIH0KfTsKCmlubGluZSBGbG9hdFJlY3QgaW50ZXJzZWN0aW9uKGNvbnN0IEZsb2F0UmVj
dCYgYSwgY29uc3QgRmxvYXRSZWN0JiBiKQp7CiAgICBGbG9hdFJlY3QgYyA9IGE7CiAgICBjLmlu
dGVyc2VjdChiKTsKICAgIHJldHVybiBjOwp9CgppbmxpbmUgRmxvYXRSZWN0IHVuaW9uUmVjdChj
b25zdCBGbG9hdFJlY3QmIGEsIGNvbnN0IEZsb2F0UmVjdCYgYikKewogICAgRmxvYXRSZWN0IGMg
PSBhOwogICAgYy51bml0ZShiKTsKICAgIHJldHVybiBjOwp9CgppbmxpbmUgRmxvYXRSZWN0JiBv
cGVyYXRvcis9KEZsb2F0UmVjdCYgYSwgY29uc3QgRmxvYXRSZWN0JiBiKQp7CiAgICBhLm1vdmUo
Yi54KCksIGIueSgpKTsKICAgIGEuc2V0V2lkdGgoYS53aWR0aCgpICsgYi53aWR0aCgpKTsKICAg
IGEuc2V0SGVpZ2h0KGEuaGVpZ2h0KCkgKyBiLmhlaWdodCgpKTsKICAgIHJldHVybiBhOwp9Cgpp
bmxpbmUgRmxvYXRSZWN0IG9wZXJhdG9yKyhjb25zdCBGbG9hdFJlY3QmIGEsIGNvbnN0IEZsb2F0
UmVjdCYgYikKewogICAgRmxvYXRSZWN0IGMgPSBhOwogICAgYyArPSBiOwogICAgcmV0dXJuIGM7
Cn0KCmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRmxvYXRSZWN0JiBhLCBjb25zdCBGbG9h
dFJlY3QmIGIpCnsKICAgIHJldHVybiBhLmxvY2F0aW9uKCkgPT0gYi5sb2NhdGlvbigpICYmIGEu
c2l6ZSgpID09IGIuc2l6ZSgpOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZsb2F0
UmVjdCYgYSwgY29uc3QgRmxvYXRSZWN0JiBiKQp7CiAgICByZXR1cm4gYS5sb2NhdGlvbigpICE9
IGIubG9jYXRpb24oKSB8fCBhLnNpemUoKSAhPSBiLnNpemUoKTsKfQoKSW50UmVjdCBlbmNsb3Np
bmdJbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwoKCkZsb2F0UmVjdCBtYXBSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgciwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0KTsKCn0KIyA0MCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91
dFR5cGVzLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0LmgiIDEKIyA0MSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xh
eW91dFR5cGVzLmgiIDIKCm5hbWVzcGFjZSBXZWJDb3JlIHsKCnR5cGVkZWYgaW50IExheW91dFVu
aXQ7CnR5cGVkZWYgSW50UG9pbnQgTGF5b3V0UG9pbnQ7CnR5cGVkZWYgSW50U2l6ZSBMYXlvdXRT
aXplOwp0eXBlZGVmIEludFJlY3QgTGF5b3V0UmVjdDsKCmlubGluZSBMYXlvdXRSZWN0IGVuY2xv
c2luZ0xheW91dFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQp7CiAgICByZXR1cm4gZW5jbG9z
aW5nSW50UmVjdChyZWN0KTsKfQoKaW5saW5lIExheW91dFNpemUgcm91bmRlZExheW91dFNpemUo
Y29uc3QgRmxvYXRTaXplJiBzKQp7CiAgICByZXR1cm4gcm91bmRlZEludFNpemUocyk7Cn0KCmlu
bGluZSBMYXlvdXRQb2ludCByb3VuZGVkTGF5b3V0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcCkK
ewogICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChwKTsKfQoKaW5saW5lIExheW91dFBvaW50IGZs
b29yZWRMYXlvdXRQb2ludChjb25zdCBGbG9hdFBvaW50JiBwKQp7CiAgICByZXR1cm4gZmxvb3Jl
ZEludFBvaW50KHApOwp9CgppbmxpbmUgTGF5b3V0UG9pbnQgZmxvb3JlZExheW91dFBvaW50KGNv
bnN0IEZsb2F0U2l6ZSYgcykKewogICAgcmV0dXJuIGZsb29yZWRJbnRQb2ludChzKTsKfQoKaW5s
aW5lIExheW91dFNpemUgZmxvb3JlZExheW91dFNpemUoY29uc3QgRmxvYXRQb2ludCYgcCkKewog
ICAgcmV0dXJuIExheW91dFNpemUoc3RhdGljX2Nhc3Q8aW50PihwLngoKSksIHN0YXRpY19jYXN0
PGludD4ocC55KCkpKTsKfQoKaW5saW5lIExheW91dFVuaXQgcm91bmRlZExheW91dFVuaXQoZmxv
YXQgdmFsdWUpCnsKICAgIHJldHVybiBscm91bmRmKHZhbHVlKTsKfQoKaW5saW5lIExheW91dFVu
aXQgY2VpbGVkTGF5b3V0VW5pdChmbG9hdCB2YWx1ZSkKewogICAgcmV0dXJuIGNlaWxmKHZhbHVl
KTsKfQoKaW5saW5lIExheW91dFNpemUgdG9MYXlvdXRTaXplKGNvbnN0IExheW91dFBvaW50JiBw
KQp7CiAgICByZXR1cm4gTGF5b3V0U2l6ZShwLngoKSwgcC55KCkpOwp9CgppbmxpbmUgTGF5b3V0
UG9pbnQgdG9MYXlvdXRQb2ludChjb25zdCBMYXlvdXRTaXplJiBwKQp7CiAgICByZXR1cm4gTGF5
b3V0UG9pbnQocC53aWR0aCgpLCBwLmhlaWdodCgpKTsKfQoKaW5saW5lIExheW91dFVuaXQgbGF5
b3V0TW9kKGNvbnN0IExheW91dFVuaXQmIG51bWVyYXRvciwgY29uc3QgTGF5b3V0VW5pdCYgZGVu
b21pbmF0b3IpCnsKICAgIHJldHVybiBudW1lcmF0b3IgJSBkZW5vbWluYXRvcjsKfQoKfQojIDM5
ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCIgMgojIDEgIi4uLy4uLy4u
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5oIiAxCiMgMzIgIi4uLy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgojZGVmaW5lIFBh
Z2VWaXNpYmlsaXR5U3RhdGVfaCAKCgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKCgplbnVtIFBhZ2VW
aXNpYmlsaXR5U3RhdGUgewogICAgUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUsCiAgICBQYWdl
VmlzaWJpbGl0eVN0YXRlSGlkZGVuLAogICAgUGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcgp9
OwoKCgoKCn0KIyA0MCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgiIDIK
IyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIiAxCiMgMjIg
Ii4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgiCiNkZWZpbmUgUXVh
bGlmaWVkTmFtZV9oIAoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hh
c2hUcmFpdHMuaCIgMQojIDI1ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5oIiAxCiMgMjYgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZp
ZWROYW1lLmgiIDIKCm5hbWVzcGFjZSBXZWJDb3JlIHsKCnN0cnVjdCBRdWFsaWZpZWROYW1lQ29t
cG9uZW50cyB7CiAgICBTdHJpbmdJbXBsKiBtX3ByZWZpeDsKICAgIFN0cmluZ0ltcGwqIG1fbG9j
YWxOYW1lOwogICAgU3RyaW5nSW1wbCogbV9uYW1lc3BhY2U7Cn07CgpjbGFzcyBRdWFsaWZpZWRO
YW1lIHsKICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyBy
ZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJu
IHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHZvaWQqIHAgPSA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAs
IDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyByZXR1cm4gcDsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZy
ZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IDo6V1RGOjpmYXN0RnJl
ZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpX
VEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxv
YyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyByZXR1cm4gcDsg
fSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRj
aFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkp
OyA6OldURjo6ZmFzdEZyZWUocCk7IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgVGhpc0lzSGVyZVRv
Rm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CnB1YmxpYzoKICAgIGNsYXNzIFF1YWxpZmll
ZE5hbWVJbXBsIDogcHVibGljIFJlZkNvdW50ZWQ8UXVhbGlmaWVkTmFtZUltcGw+IHsKICAgIHB1
YmxpYzoKICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxRdWFsaWZpZWROYW1lSW1wbD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCiAgICAgICAgewogICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFF1YWxpZmllZE5hbWVJbXBsKHByZWZpeCwgbG9jYWxOYW1l
LCBuYW1lc3BhY2VVUkkpKTsKICAgICAgICB9CgogICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBt
X3ByZWZpeDsKICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWU7CiAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZXNwYWNlOwogICAgICAgIG11dGFibGUgQXRvbWljU3Ry
aW5nIG1fbG9jYWxOYW1lVXBwZXI7CgogICAgcHJpdmF0ZToKICAgICAgICBRdWFsaWZpZWROYW1l
SW1wbChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKQogICAgICAgICAgICA6IG1f
cHJlZml4KHByZWZpeCkKICAgICAgICAgICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUpCiAgICAg
ICAgICAgICwgbV9uYW1lc3BhY2UobmFtZXNwYWNlVVJJKQogICAgICAgIHsKICAgICAgICAgICAg
ZG8gaWYgKCEoIW5hbWVzcGFjZVVSSS5pc0VtcHR5KCkgfHwgbmFtZXNwYWNlVVJJLmlzTnVsbCgp
KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9k
b20vUXVhbGlmaWVkTmFtZS5oIiwgNTYsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbmFtZXNwYWNl
VVJJLmlzRW1wdHkoKSB8fCBuYW1lc3BhY2VVUkkuaXNOdWxsKCkiKTsgZG8geyBXVEZSZXBvcnRC
YWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKiko
KSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIH0KICAgIH07Cgog
ICAgUXVhbGlmaWVkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKICAg
IFF1YWxpZmllZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IGNoYXIqIGxv
Y2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwogICAgUXVhbGlmaWVk
TmFtZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9pbXBsKGhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpKSB7IH0KICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2ltcGwgPT0gaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgIH5RdWFs
aWZpZWROYW1lKCk7CgoKCgogICAgUXVhbGlmaWVkTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJiBv
dGhlcikgOiBtX2ltcGwob3RoZXIubV9pbXBsKSB7IHJlZigpOyB9CiAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiBvcGVyYXRvcj0oY29uc3QgUXVhbGlmaWVkTmFtZSYgb3RoZXIpIHsgb3RoZXIucmVm
KCk7IGRlcmVmKCk7IG1faW1wbCA9IG90aGVyLm1faW1wbDsgcmV0dXJuICp0aGlzOyB9CgogICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFF1YWxpZmllZE5hbWUmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPT0gb3RoZXIubV9pbXBsOyB9CiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUXVh
bGlmaWVkTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Cgog
ICAgYm9vbCBtYXRjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPT0gb3RoZXIubV9pbXBsIHx8IChsb2NhbE5hbWUoKSA9PSBvdGhlci5sb2NhbE5h
bWUoKSAmJiBuYW1lc3BhY2VVUkkoKSA9PSBvdGhlci5uYW1lc3BhY2VVUkkoKSk7IH0KCiAgICBi
b29sIGhhc1ByZWZpeCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+bV9wcmVmaXggIT0gbnVsbEF0
b207IH0KICAgIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KSB7ICp0
aGlzID0gUXVhbGlmaWVkTmFtZShwcmVmaXgsIGxvY2FsTmFtZSgpLCBuYW1lc3BhY2VVUkkoKSk7
IH0KCiAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCgpIGNvbnN0IHsgcmV0dXJuIG1faW1w
bC0+bV9wcmVmaXg7IH0KICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsLT5tX2xvY2FsTmFtZTsgfQogICAgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkkoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPm1fbmFtZXNwYWNlOyB9CgoKICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lVXBwZXIoKSBjb25zdDsKCiAgICBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdDsKCiAgICBRdWFsaWZpZWROYW1lSW1wbCogaW1wbCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbDsgfQoKCiAgICBzdGF0aWMgdm9pZCBpbml0KCk7Cgpwcml2YXRlOgogICAg
dm9pZCBpbml0KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwogICAgdm9pZCBy
ZWYoKSBjb25zdCB7IG1faW1wbC0+cmVmKCk7IH0KICAgIHZvaWQgZGVyZWYoKTsKCiAgICBzdGF0
aWMgUXVhbGlmaWVkTmFtZUltcGwqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIFJl
ZlB0cjxRdWFsaWZpZWROYW1lSW1wbD46Omhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CgogICAg
UXVhbGlmaWVkTmFtZUltcGwqIG1faW1wbDsKfTsKCgpleHRlcm4gY29uc3QgUXVhbGlmaWVkTmFt
ZSBhbnlOYW1lOwppbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgYW55UU5hbWUoKSB7IHJldHVy
biBhbnlOYW1lOyB9CgoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcm
IGEsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHEpIHsgcmV0dXJuIGEgPT0gcS5sb2NhbE5hbWUoKTsg
fQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgcSkgeyByZXR1cm4gYSAhPSBxLmxvY2FsTmFtZSgpOyB9CmlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgUXVhbGlmaWVkTmFtZSYgcSwgY29uc3QgQXRvbWljU3RyaW5nJiBh
KSB7IHJldHVybiBhID09IHEubG9jYWxOYW1lKCk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBRdWFsaWZpZWROYW1lJiBxLCBjb25zdCBBdG9taWNTdHJpbmcmIGEpIHsgcmV0dXJuIGEg
IT0gcS5sb2NhbE5hbWUoKTsgfQoKaW5saW5lIHVuc2lnbmVkIGhhc2hDb21wb25lbnRzKGNvbnN0
IFF1YWxpZmllZE5hbWVDb21wb25lbnRzJiBidWYpCnsKICAgIHJldHVybiBTdHJpbmdIYXNoZXI6
Omhhc2hNZW1vcnk8c2l6ZW9mKFF1YWxpZmllZE5hbWVDb21wb25lbnRzKT4oJmJ1Zik7Cn0KCnN0
cnVjdCBRdWFsaWZpZWROYW1lSGFzaCB7CiAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKSB7IHJldHVybiBoYXNoKG5hbWUuaW1wbCgpKTsgfQoKICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBs
KiBuYW1lKQogICAgewogICAgICAgIFF1YWxpZmllZE5hbWVDb21wb25lbnRzIGMgPSB7IG5hbWUt
Pm1fcHJlZml4LmltcGwoKSwgbmFtZS0+bV9sb2NhbE5hbWUuaW1wbCgpLCBuYW1lLT5tX25hbWVz
cGFjZS5pbXBsKCkgfTsKICAgICAgICByZXR1cm4gaGFzaENvbXBvbmVudHMoYyk7CiAgICB9Cgog
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUXVhbGlmaWVkTmFtZSYgYSwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCogYSwgY29uc3QgUXVhbGlmaWVkTmFt
ZTo6UXVhbGlmaWVkTmFtZUltcGwqIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQoKICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cn07Cgp9Cgpu
YW1lc3BhY2UgV1RGIHsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhh
c2g7CgogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6UXVhbGlmaWVk
TmFtZT4gewogICAgICAgIHR5cGVkZWYgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZUhhc2ggSGFzaDsK
ICAgIH07CgogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpRdWFsaWZp
ZWROYW1lPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3JlOjpRdWFsaWZpZWROYW1lPiB7
CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOwogICAg
ICAgIHN0YXRpYyBXZWJDb3JlOjpRdWFsaWZpZWROYW1lIGVtcHR5VmFsdWUoKSB7IHJldHVybiBX
ZWJDb3JlOjpRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBudWxsQXRvbSwgbnVsbEF0b20pOyB9CiAg
ICB9Owp9CiMgNDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIiAyCiMg
MSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIg
MQojIDI4ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgojZGVmaW5lIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRfaCAKCiMgMSAiLi4vLi4vLi4vU291
cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oIiAxCiMgMjggIi4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCIKI2RlZmluZSBBY3RpdmVET01PYmplY3Rf
aCAKCgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CgogICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0IHsKICAgIHB1YmxpYzoKICAgICAgICBBY3Rp
dmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHZvaWQqIHVwY2FzdFBvaW50ZXIp
OwoKICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CiAgICAgICAgdmly
dHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwoKICAgICAgICB2aXJ0dWFsIHZv
aWQgY29udGV4dERlc3Ryb3llZCgpOwoKCgoKCgoKICAgICAgICBlbnVtIFJlYXNvbkZvclN1c3Bl
bnNpb24gewogICAgICAgICAgICBKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQsCiAgICAgICAgICAg
IFdpbGxTaG93RGlhbG9nLAogICAgICAgICAgICBEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZQog
ICAgICAgIH07CiAgICAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKTsKICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKCiAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBzZXRQZW5kaW5nQWN0aXZpdHkoVCogdGhpc09iamVjdCkK
ICAgICAgICB7CiAgICAgICAgICAgIGRvIGlmICghKHRoaXNPYmplY3QgPT0gdGhpcykpIHsgV1RG
UmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2
ZURPTU9iamVjdC5oIiwgNjMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJ0aGlzT2JqZWN0ID09IHRo
aXMiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgICAgICAgICB0aGlzT2JqZWN0LT5yZWYoKTsKICAgICAgICAgICAgbV9wZW5kaW5nQWN0
aXZpdHlDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCB1
bnNldFBlbmRpbmdBY3Rpdml0eShUKiB0aGlzT2JqZWN0KQogICAgICAgIHsKICAgICAgICAgICAg
ZG8gaWYgKCEobV9wZW5kaW5nQWN0aXZpdHlDb3VudCA+IDApKSB7IFdURlJlcG9ydEFzc2VydGlv
bkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCIs
IDcwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9wZW5kaW5nQWN0aXZpdHlDb3VudCA+IDAiKTsg
ZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYg
PSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAg
ICAgICAgICAtLW1fcGVuZGluZ0FjdGl2aXR5Q291bnQ7CiAgICAgICAgICAgIHRoaXNPYmplY3Qt
PmRlcmVmKCk7CiAgICAgICAgfQoKICAgIHByb3RlY3RlZDoKICAgICAgICB2aXJ0dWFsIH5BY3Rp
dmVET01PYmplY3QoKTsKCiAgICBwcml2YXRlOgogICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICAgICB1bnNpZ25lZCBtX3BlbmRpbmdB
Y3Rpdml0eUNvdW50OwogICAgfTsKCn0KIyAzMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29uc29sZVR5cGVzLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGFn
ZS9Db25zb2xlVHlwZXMuaCIKI2RlZmluZSBDb25zb2xlVHlwZXNfaCAKCm5hbWVzcGFjZSBXZWJD
b3JlIHsKCmVudW0gTWVzc2FnZVNvdXJjZSB7CiAgICBIVE1MTWVzc2FnZVNvdXJjZSwKICAgIFhN
TE1lc3NhZ2VTb3VyY2UsCiAgICBKU01lc3NhZ2VTb3VyY2UsCiAgICBDU1NNZXNzYWdlU291cmNl
LAogICAgT3RoZXJNZXNzYWdlU291cmNlCn07CgplbnVtIE1lc3NhZ2VUeXBlIHsKICAgIExvZ01l
c3NhZ2VUeXBlLAogICAgT2JqZWN0TWVzc2FnZVR5cGUsCiAgICBUcmFjZU1lc3NhZ2VUeXBlLAog
ICAgU3RhcnRHcm91cE1lc3NhZ2VUeXBlLAogICAgU3RhcnRHcm91cENvbGxhcHNlZE1lc3NhZ2VU
eXBlLAogICAgRW5kR3JvdXBNZXNzYWdlVHlwZSwKICAgIEFzc2VydE1lc3NhZ2VUeXBlLAogICAg
VW5jYXVnaHRFeGNlcHRpb25NZXNzYWdlVHlwZSwKICAgIE5ldHdvcmtFcnJvck1lc3NhZ2VUeXBl
Cn07CgplbnVtIE1lc3NhZ2VMZXZlbCB7CiAgICBUaXBNZXNzYWdlTGV2ZWwsCiAgICBMb2dNZXNz
YWdlTGV2ZWwsCiAgICBXYXJuaW5nTWVzc2FnZUxldmVsLAogICAgRXJyb3JNZXNzYWdlTGV2ZWws
CiAgICBEZWJ1Z01lc3NhZ2VMZXZlbAp9OwoKfQojIDMyICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoU2V0LmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9IYXNoU2V0LmgiCiNkZWZpbmUgV1RGX0hhc2hTZXRfaCAKCgoKCm5h
bWVzcGFjZSBXVEYgewoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+IGNsYXNzIEhhc2hTZXQ7CiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgog
ICAgdm9pZCBkZWxldGVBbGxWYWx1ZXMoY29uc3QgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzPiYpOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgIHZvaWQgZmFzdERlbGV0ZUFsbFZhbHVlcyhj
b25zdCBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Jik7CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aXR5RXh0cmFjdG9yOwoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8
VmFsdWVBcmc+OjpIYXNoLAogICAgICAgIHR5cGVuYW1lIFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8
VmFsdWVBcmc+ID4gY2xhc3MgSGFzaFNldCB7CiAgICAgICAgcHVibGljOiB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1h
bGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFz
c05ldyk7IHJldHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6
OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlw
ZUNsYXNzTmV3KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNp
emVfdCBzaXplKSB7IHZvaWQqIHAgPSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZh
c3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBl
Q2xhc3NOZXdBcnJheSk7IHJldHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCog
cCkgeyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5h
bDo6QWxsb2NUeXBlQ2xhc3NOZXdBcnJheSk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSBwcml2YXRl
OiB0eXBlZGVmIGludCBUaGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsK
ICAgIHByaXZhdGU6CiAgICAgICAgdHlwZWRlZiBIYXNoQXJnIEhhc2hGdW5jdGlvbnM7CiAgICAg
ICAgdHlwZWRlZiBUcmFpdHNBcmcgVmFsdWVUcmFpdHM7CgogICAgcHVibGljOgogICAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7CgogICAgcHJp
dmF0ZToKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxWYWx1ZVR5cGUsIFZhbHVlVHlwZSwgSWRl
bnRpdHlFeHRyYWN0b3I8VmFsdWVUeXBlPiwKICAgICAgICAgICAgSGFzaEZ1bmN0aW9ucywgVmFs
dWVUcmFpdHMsIFZhbHVlVHJhaXRzPiBIYXNoVGFibGVUeXBlOwoKICAgIHB1YmxpYzoKICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZh
bHVlVHlwZT4gaXRlcmF0b3I7CiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9y
QWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOwoKICAgICAg
ICB2b2lkIHN3YXAoSGFzaFNldCYpOwoKICAgICAgICBpbnQgc2l6ZSgpIGNvbnN0OwogICAgICAg
IGludCBjYXBhY2l0eSgpIGNvbnN0OwogICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwoKICAg
ICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0OwogICAgICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0
OwoKICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYpIGNvbnN0OwogICAgICAg
IGJvb2wgY29udGFpbnMoY29uc3QgVmFsdWVUeXBlJikgY29uc3Q7CgoKCgoKCiAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IGl0ZXJhdG9yIGZpbmQo
Y29uc3QgVCYpIGNvbnN0OwogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yPiBib29sIGNvbnRhaW5zKGNvbnN0IFQmKSBjb25zdDsKCgoKICAgICAgICBw
YWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVmFsdWVUeXBlJik7CgoKCgoKCgogICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBwYWlyPGl0ZXJh
dG9yLCBib29sPiBhZGQoY29uc3QgVCYpOwoKICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBWYWx1
ZVR5cGUmKTsKICAgICAgICB2b2lkIHJlbW92ZShpdGVyYXRvcik7CiAgICAgICAgdm9pZCBjbGVh
cigpOwoKICAgIHByaXZhdGU6CiAgICAgICAgZnJpZW5kIHZvaWQgZGVsZXRlQWxsVmFsdWVzPD4o
Y29uc3QgSGFzaFNldCYpOwogICAgICAgIGZyaWVuZCB2b2lkIGZhc3REZWxldGVBbGxWYWx1ZXM8
Pihjb25zdCBIYXNoU2V0Jik7CgogICAgICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOwogICAgfTsK
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpdHlFeHRyYWN0b3IgewogICAg
ICAgIHN0YXRpYyBjb25zdCBUJiBleHRyYWN0KGNvbnN0IFQmIHQpIHsgcmV0dXJuIHQ7IH0KICAg
IH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVRyYWl0
cywgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhbnNsYXRvcj4KICAgIHN0cnVjdCBIYXNoU2V0VHJh
bnNsYXRvckFkYXB0ZXIgewogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtl
eSkgeyByZXR1cm4gVHJhbnNsYXRvcjo6aGFzaChrZXkpOyB9CiAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgVmFsdWVUeXBlJiBhLCBjb25zdCBUJiBiKSB7IHJldHVybiBUcmFuc2xhdG9y
OjplcXVhbChhLCBiKTsgfQogICAgICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShWYWx1ZVR5cGUm
IGxvY2F0aW9uLCBjb25zdCBUJiBrZXksIGNvbnN0IFQmLCB1bnNpZ25lZCBoYXNoQ29kZSkKICAg
ICAgICB7CiAgICAgICAgICAgIFRyYW5zbGF0b3I6OnRyYW5zbGF0ZShsb2NhdGlvbiwga2V5LCBo
YXNoQ29kZSk7CiAgICAgICAgfQogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgogICAgaW5saW5lIHZvaWQgSGFzaFNldDxULCBVLCBWPjo6c3dh
cChIYXNoU2V0JiBvdGhlcikKICAgIHsKICAgICAgICBtX2ltcGwuc3dhcChvdGhlci5tX2ltcGwp
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+
CiAgICBpbmxpbmUgaW50IEhhc2hTZXQ8VCwgVSwgVj46OnNpemUoKSBjb25zdAogICAgewogICAg
ICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAgICBpbmxpbmUgaW50IEhhc2hTZXQ8VCwgVSwgVj46
OmNhcGFjaXR5KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmNhcGFjaXR5KCk7
CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4K
ICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46OmlzRW1wdHkoKSBjb25zdAogICAgewog
ICAgICAgIHJldHVybiBtX2ltcGwuaXNFbXB0eSgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFNl
dDxULCBVLCBWPjo6aXRlcmF0b3IgSGFzaFNldDxULCBVLCBWPjo6YmVnaW4oKSBjb25zdAogICAg
ewogICAgICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgogICAgaW5saW5lIHR5cGVuYW1lIEhhc2hT
ZXQ8VCwgVSwgVj46Oml0ZXJhdG9yIEhhc2hTZXQ8VCwgVSwgVj46OmVuZCgpIGNvbnN0CiAgICB7
CiAgICAgICAgcmV0dXJuIG1faW1wbC5lbmQoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgogICAgaW5saW5lIHR5cGVuYW1lIEhhc2hTZXQ8
VCwgVSwgVj46Oml0ZXJhdG9yIEhhc2hTZXQ8VCwgVSwgVj46OmZpbmQoY29uc3QgVmFsdWVUeXBl
JiB2YWx1ZSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmZpbmQodmFsdWUpOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAg
ICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpjb250YWlucyhjb25zdCBWYWx1ZVR5cGUm
IHZhbHVlKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuY29udGFpbnModmFsdWUp
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4KICAgIHR5cGVuYW1lIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cz46Oml0ZXJhdG9yCiAgICBpbmxpbmUgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzPjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgY29uc3QKICAgIHsKICAgICAgICB0eXBl
ZGVmIEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVR5cGUsIFZhbHVlVHJhaXRzLCBULCBI
YXNoVHJhbnNsYXRvcj4gQWRhcHRlcjsKICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZp
bmQ8VCwgQWRhcHRlcj4odmFsdWUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KICAgIGlubGluZSBib29sIEhhc2hT
ZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnRhaW5zKGNvbnN0IFQmIHZhbHVl
KSBjb25zdAogICAgewogICAgICAgIHR5cGVkZWYgSGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPFZh
bHVlVHlwZSwgVmFsdWVUcmFpdHMsIFQsIEhhc2hUcmFuc2xhdG9yPiBBZGFwdGVyOwogICAgICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8VCwgQWRhcHRlcj4odmFsdWUpOwogICAg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAgICBp
bmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoU2V0PFQsIFUsIFY+OjppdGVyYXRvciwgYm9vbD4gSGFz
aFNldDxULCBVLCBWPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCiAgICB7CiAgICAgICAg
cmV0dXJuIG1faW1wbC5hZGQodmFsdWUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KICAgIGlubGluZSBwYWlyPHR5
cGVuYW1lIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJhdG9yLCBi
b29sPgogICAgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0
IFQmIHZhbHVlKQogICAgewogICAgICAgIHR5cGVkZWYgSGFzaFNldFRyYW5zbGF0b3JBZGFwdGVy
PFZhbHVlVHlwZSwgVmFsdWVUcmFpdHMsIFQsIEhhc2hUcmFuc2xhdG9yPiBBZGFwdGVyOwogICAg
ICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPFQsIFQsIEFkYXB0
ZXI+KHZhbHVlLCB2YWx1ZSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgVj4KICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92
ZShpdGVyYXRvciBpdCkKICAgIHsKICAgICAgICBpZiAoaXQubV9pbXBsID09IG1faW1wbC5lbmQo
KSkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIG1faW1wbC5pbnRlcm5hbENoZWNrVGFibGVD
b25zaXN0ZW5jeSgpOwogICAgICAgIG1faW1wbC5yZW1vdmVXaXRob3V0RW50cnlDb25zaXN0ZW5j
eUNoZWNrKGl0Lm1faW1wbCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgVj4KICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92
ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQogICAgewogICAgICAgIHJlbW92ZShmaW5kKHZhbHVl
KSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4KICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgVj46OmNsZWFyKCkKICAgIHsKICAgICAg
ICBtX2ltcGwuY2xlYXIoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUs
IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU+CiAgICB2b2lkIGRlbGV0ZUFsbFZhbHVlcyhIYXNoVGFi
bGVUeXBlJiBjb2xsZWN0aW9uKQogICAgewogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaFRh
YmxlVHlwZTo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgaXRlcmF0b3IgZW5kID0g
Y29sbGVjdGlvbi5lbmQoKTsKICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gY29sbGVjdGlvbi5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgIGRlbGV0ZSAqaXQ7CiAgICB9Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgIGlubGlu
ZSB2b2lkIGRlbGV0ZUFsbFZhbHVlcyhjb25zdCBIYXNoU2V0PFQsIFUsIFY+JiBjb2xsZWN0aW9u
KQogICAgewogICAgICAgIGRlbGV0ZUFsbFZhbHVlczx0eXBlbmFtZSBIYXNoU2V0PFQsIFUsIFY+
OjpWYWx1ZVR5cGU+KGNvbGxlY3Rpb24ubV9pbXBsKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU+CiAgICB2b2lkIGZhc3REZWxl
dGVBbGxWYWx1ZXMoSGFzaFRhYmxlVHlwZSYgY29sbGVjdGlvbikKICAgIHsKICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOwogICAg
ICAgIGl0ZXJhdG9yIGVuZCA9IGNvbGxlY3Rpb24uZW5kKCk7CiAgICAgICAgZm9yIChpdGVyYXRv
ciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAgICBm
YXN0RGVsZXRlKCppdCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KICAgIGlubGluZSB2b2lkIGZhc3REZWxldGVBbGxWYWx1ZXMoY29uc3Qg
SGFzaFNldDxULCBVLCBWPiYgY29sbGVjdGlvbikKICAgIHsKICAgICAgICBmYXN0RGVsZXRlQWxs
VmFsdWVzPHR5cGVuYW1lIEhhc2hTZXQ8VCwgVSwgVj46OlZhbHVlVHlwZT4oY29sbGVjdGlvbi5t
X2ltcGwpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFc+CiAgICBpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3IoY29uc3QgSGFz
aFNldDxULCBVLCBWPiYgY29sbGVjdGlvbiwgVyYgdmVjdG9yKQogICAgewogICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgSGFzaFNldDxULCBVLCBWPjo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7Cgog
ICAgICAgIHZlY3Rvci5yZXNpemUoY29sbGVjdGlvbi5zaXplKCkpOwoKICAgICAgICBpdGVyYXRv
ciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKTsKICAgICAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0
aW9uLmVuZCgpOwogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGl0ICE9IGVuZDsgKytpdCwg
KytpKQogICAgICAgICAgICB2ZWN0b3JbaV0gPSAqaXQ7CiAgICB9Cgp9Cgp1c2luZyBXVEY6Okhh
c2hTZXQ7CiMgMzYgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiIDIKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFz
c093blB0ci5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFz
c093blB0ci5oIgojZGVmaW5lIFdURl9QYXNzT3duUHRyX2ggCgoKCgoKCm5hbWVzcGFjZSBXVEYg
ewoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgT3duUHRyOwogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY2xhc3MgUGFzc093blB0cjsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFBh
c3NPd25QdHI8VD4gYWRvcHRQdHIoVCopOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IFBhc3NPd25QdHIgewogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3Zl
UG9pbnRlcjxUPjo6VHlwZSBWYWx1ZVR5cGU7CiAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUqIFB0
clR5cGU7CgogICAgICAgIFBhc3NPd25QdHIoKSA6IG1fcHRyKDApIHsgfQogICAgICAgIFBhc3NP
d25QdHIoc3RkOjpudWxscHRyX3QpIDogbV9wdHIoMCkgeyB9CgoKCgogICAgICAgIFBhc3NPd25Q
dHIoY29uc3QgUGFzc093blB0ciYgbykgOiBtX3B0cihvLmxlYWtQdHIoKSkgeyB9CiAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gUGFzc093blB0cihjb25zdCBQYXNzT3duUHRyPFU+JiBvKSA6
IG1fcHRyKG8ubGVha1B0cigpKSB7IH0KCiAgICAgICAgflBhc3NPd25QdHIoKSB7IGRlbGV0ZU93
bmVkUHRyKG1fcHRyKTsgfQoKICAgICAgICBQdHJUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHRyOyB9CgogICAgICAgIFB0clR5cGUgbGVha1B0cigpIGNvbnN0IF9fYXR0cmlidXRlX18gKCh3
YXJuX3VudXNlZF9yZXN1bHQpKTsKCiAgICAgICAgVmFsdWVUeXBlJiBvcGVyYXRvciooKSBjb25z
dCB7IGRvIGlmICghKG1fcHRyKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NPd25QdHIuaCIsIDYyLCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAibV9wdHIiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKiko
dWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxz
ZSk7IH0gd2hpbGUgKDApOyByZXR1cm4gKm1fcHRyOyB9CiAgICAgICAgUHRyVHlwZSBvcGVyYXRv
ci0+KCkgY29uc3QgeyBkbyBpZiAoIShtX3B0cikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXNzT3duUHRyLmgiLCA2Mywg
X19QUkVUVFlfRlVOQ1RJT05fXywgIm1fcHRyIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7
ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIG1fcHRyOyB9CgogICAgICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CgoKICAgICAgICB0eXBlZGVmIFB0
clR5cGUgUGFzc093blB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7CiAgICAgICAgb3BlcmF0b3Ig
VW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlBhc3NPd25QdHI6
Om1fcHRyIDogMDsgfQoKICAgICAgICBQYXNzT3duUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc093
blB0ciYpIHsgdHlwZWRlZiBpbnQgZHVtbXlQYXNzT3duUHRyX3Nob3VsZF9uZXZlcl9iZV9hc3Np
Z25lZF90byBbKCFzaXplb2YoVCopKSA/IDEgOiAtMV07IHJldHVybiAqdGhpczsgfQoKICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgUGFzc093blB0cjxVPiBhZG9wdFB0cihVKik7
CgogICAgcHJpdmF0ZToKICAgICAgICBleHBsaWNpdCBQYXNzT3duUHRyKFB0clR5cGUgcHRyKSA6
IG1fcHRyKHB0cikgeyB9CgoKCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFBhc3NPd25QdHI8VT4mKSB7IHR5cGVkZWYgaW50IGR1bW15T3duUHRyc19z
aG91bGRfbmV2ZXJfYmVfZXF1YWwgWyghc2l6ZW9mKFUqKSkgPyAxIDogLTFdOyByZXR1cm4gZmFs
c2U7IH0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yIT0oY29uc3Qg
UGFzc093blB0cjxVPiYpIHsgdHlwZWRlZiBpbnQgZHVtbXlPd25QdHJzX3Nob3VsZF9uZXZlcl9i
ZV9lcXVhbCBbKCFzaXplb2YoVSopKSA/IDEgOiAtMV07IHJldHVybiBmYWxzZTsgfQogICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I9PShjb25zdCBPd25QdHI8VT4mKSB7
IHR5cGVkZWYgaW50IGR1bW15T3duUHRyc19zaG91bGRfbmV2ZXJfYmVfZXF1YWwgWyghc2l6ZW9m
KFUqKSkgPyAxIDogLTFdOyByZXR1cm4gZmFsc2U7IH0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBib29sIG9wZXJhdG9yIT0oY29uc3QgT3duUHRyPFU+JikgeyB0eXBlZGVmIGludCBkdW1t
eU93blB0cnNfc2hvdWxkX25ldmVyX2JlX2VxdWFsIFsoIXNpemVvZihVKikpID8gMSA6IC0xXTsg
cmV0dXJuIGZhbHNlOyB9CgogICAgICAgIG11dGFibGUgUHRyVHlwZSBtX3B0cjsKICAgIH07Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHR5cGVuYW1lIFBhc3NPd25QdHI8VD46OlB0
clR5cGUgUGFzc093blB0cjxUPjo6bGVha1B0cigpIGNvbnN0CiAgICB7CiAgICAgICAgUHRyVHlw
ZSBwdHIgPSBtX3B0cjsKICAgICAgICBtX3B0ciA9IDA7CiAgICAgICAgcmV0dXJuIHB0cjsKICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFBhc3NPd25QdHI8VD4mIGEsIGNvbnN0IFBhc3NPd25QdHI8VT4mIGIpCiAg
ICB7CiAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBh
c3NPd25QdHI8VD4mIGEsIGNvbnN0IE93blB0cjxVPiYgYikKICAgIHsKICAgICAgICByZXR1cm4g
YS5nZXQoKSA9PSBiLmdldCgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgT3duUHRyPFQ+JiBhLCBjb25zdCBQ
YXNzT3duUHRyPFU+JiBiKQogICAgewogICAgICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7
CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQYXNzT3duUHRyPFQ+JiBhLCBVKiBiKQogICAgewogICAgICAgIHJl
dHVybiBhLmdldCgpID09IGI7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBQYXNzT3duUHRyPFU+JiBi
KQogICAgewogICAgICAgIHJldHVybiBhID09IGIuZ2V0KCk7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNz
T3duUHRyPFQ+JiBhLCBjb25zdCBQYXNzT3duUHRyPFU+JiBiKQogICAgewogICAgICAgIHJldHVy
biBhLmdldCgpICE9IGIuZ2V0KCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNzT3duUHRyPFQ+JiBhLCBj
b25zdCBPd25QdHI8VT4mIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQo
KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE93blB0cjxUPiYgYSwgY29uc3QgUGFzc093blB0cjxVPiYgYikK
ICAgIHsKICAgICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOwogICAgfQoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
UGFzc093blB0cjxUPiYgYSwgVSogYikKICAgIHsKICAgICAgICByZXR1cm4gYS5nZXQoKSAhPSBi
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yIT0oVCogYSwgY29uc3QgUGFzc093blB0cjxVPiYgYikKICAgIHsKICAgICAgICBy
ZXR1cm4gYSAhPSBiLmdldCgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBQYXNzT3duUHRyPFQ+IGFkb3B0UHRyKFQqIHB0cikKICAgIHsKICAgICAgICByZXR1cm4gUGFz
c093blB0cjxUPihwdHIpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBQYXNzT3duUHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgUGFzc093
blB0cjxVPiYgcCkKICAgIHsKICAgICAgICByZXR1cm4gYWRvcHRQdHIoc3RhdGljX2Nhc3Q8VCo+
KHAubGVha1B0cigpKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4gaW5saW5lIFBhc3NPd25QdHI8VD4gY29uc3RfcG9pbnRlcl9jYXN0KGNvbnN0IFBhc3NPd25Q
dHI8VT4mIHApCiAgICB7CiAgICAgICAgcmV0dXJuIGFkb3B0UHRyKGNvbnN0X2Nhc3Q8VCo+KHAu
bGVha1B0cigpKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGdl
dFB0cihjb25zdCBQYXNzT3duUHRyPFQ+JiBwKQogICAgewogICAgICAgIHJldHVybiBwLmdldCgp
OwogICAgfQoKfQoKdXNpbmcgV1RGOjpQYXNzT3duUHRyOwp1c2luZyBXVEY6OmFkb3B0UHRyOwp1
c2luZyBXVEY6OmNvbnN0X3BvaW50ZXJfY2FzdDsKdXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9j
YXN0OwojIDM5ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXNzUmVm
UHRyLmgiIDEKIyA0MCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIgMgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ0hhc2guaCIgMQojIDIzICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nSGFzaC5oIgojZGVmaW5lIFN0cmluZ0hhc2hfaCAKIyAzMiAiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0hhc2guaCIKbmFtZXNwYWNl
IFdURiB7CiMgNDIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJp
bmdIYXNoLmgiCiAgICBzdHJ1Y3QgU3RyaW5nSGFzaCB7CiAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goU3RyaW5nSW1wbCoga2V5KSB7IHJldHVybiBrZXktPmhhc2goKTsgfQogICAgICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIp
CiAgICAgICAgewogICAgICAgICAgICBpZiAoYSA9PSBiKQogICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgIGlmICghYSB8fCAhYikKICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKCiAgICAgICAgICAgIHVuc2lnbmVkIGFMZW5ndGggPSBhLT5sZW5ndGgoKTsKICAgICAg
ICAgICAgdW5zaWduZWQgYkxlbmd0aCA9IGItPmxlbmd0aCgpOwogICAgICAgICAgICBpZiAoYUxl
bmd0aCAhPSBiTGVuZ3RoKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwojIDY4ICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSGFzaC5oIgogICAgICAg
ICAgICBjb25zdCB1aW50MzJfdCogYUNoYXJzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGEtPmNoYXJhY3RlcnMoKSk7CiAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90KiBiQ2hh
cnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYi0+Y2hhcmFjdGVycygpKTsK
CiAgICAgICAgICAgIHVuc2lnbmVkIGhhbGZMZW5ndGggPSBhTGVuZ3RoID4+IDE7CiAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gaGFsZkxlbmd0aDsgKytpKQogICAgICAgICAg
ICAgICAgaWYgKCphQ2hhcnMrKyAhPSAqYkNoYXJzKyspCiAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwoKICAgICAgICAgICAgaWYgKGFMZW5ndGggJiAxICYmICpyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oYUNoYXJzKSAhPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MTZfdCo+KGJDaGFycykpCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKCiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBSZWZQdHI8U3RyaW5nSW1wbD4mIGtleSkgeyByZXR1cm4ga2V5LT5oYXNoKCk7IH0K
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZWZQdHI8U3RyaW5nSW1wbD4mIGEsIGNv
bnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYgYikKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBl
cXVhbChhLmdldCgpLCBiLmdldCgpKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiBrZXkuaW1wbCgpLT5oYXNoKCk7IH0K
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYg
YikKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkp
OwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1w
dHlPckRlbGV0ZWQgPSBmYWxzZTsKICAgIH07CgogICAgY2xhc3MgQ2FzZUZvbGRpbmdIYXNoIHsK
ICAgIHB1YmxpYzoKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIFVD
aGFyIGZvbGRDYXNlKFQgY2gpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gV1RGOjpVbmlj
b2RlOjpmb2xkQ2FzZShjaCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgIHsKICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2g8VUNoYXIsIGZvbGRDYXNlPFVDaGFy
PiA+KGRhdGEsIGxlbmd0aCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChTdHJpbmdJbXBsKiBzdHIpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gaGFzaChzdHIt
PmNoYXJhY3RlcnMoKSwgc3RyLT5sZW5ndGgoKSk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAg
ewogICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaDxjaGFyLCBmb2xk
Q2FzZTxjaGFyPiA+KGRhdGEsIGxlbmd0aCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKQogICAgICAg
IHsKICAgICAgICAgICAgaWYgKGEgPT0gYikKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICBpZiAoIWEgfHwgIWIpCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGEtPmxlbmd0aCgpOwogICAgICAgICAgICBpZiAo
bGVuZ3RoICE9IGItPmxlbmd0aCgpKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjp1bWVtY2FzZWNtcChhLT5jaGFyYWN0ZXJzKCks
IGItPmNoYXJhY3RlcnMoKSwgbGVuZ3RoKSA9PSAwOwogICAgICAgIH0KCiAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBrZXkpCiAgICAgICAgewog
ICAgICAgICAgICByZXR1cm4gaGFzaChrZXkuZ2V0KCkpOwogICAgICAgIH0KCiAgICAgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBhLCBjb25zdCBSZWZQdHI8
U3RyaW5nSW1wbD4mIGIpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gZXF1YWwoYS5nZXQo
KSwgYi5nZXQoKSk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25z
dCBTdHJpbmcmIGtleSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBoYXNoKGtleS5pbXBs
KCkpOwogICAgICAgIH0KICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBBdG9taWNT
dHJpbmcmIGtleSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBoYXNoKGtleS5pbXBsKCkp
OwogICAgICAgIH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IFN0cmluZyYgYikKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBlcXVhbChhLmltcGwo
KSwgYi5pbXBsKCkpOwogICAgICAgIH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBB
dG9taWNTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikKICAgICAgICB7CiAgICAgICAg
ICAgIHJldHVybiAoYSA9PSBiKSB8fCBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOwogICAgICAg
IH0KCiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSBmYWxzZTsKICAgIH07CgoKCgogICAgc3RydWN0IEFscmVhZHlIYXNoZWQgOiBJbnRIYXNo
PHVuc2lnbmVkPiB7CiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2godW5zaWduZWQga2V5KSB7
IHJldHVybiBrZXk7IH0KCgoKCgogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBhdm9pZERlbGV0ZWRW
YWx1ZSh1bnNpZ25lZCBoYXNoKQogICAgICAgIHsKICAgICAgICAgICAgZG8gaWYgKCEoaGFzaCkp
IHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ0hhc2guaCIsIDE3NCwgX19QUkVUVFlfRlVOQ1RJT05fXywgImhh
c2giKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgICAgICAgICB1bnNpZ25lZCBuZXdIYXNoID0gaGFzaCB8ICghKGhhc2ggKyAxKSA8PCAz
MSk7CiAgICAgICAgICAgIGRvIGlmICghKG5ld0hhc2gpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZh
aWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdIYXNo
LmgiLCAxNzYsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJuZXdIYXNoIik7IGRvIHsgV1RGUmVwb3J0
QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCop
KCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgZG8gaWYg
KCEobmV3SGFzaCAhPSAweEZGRkZGRkZGKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSGFzaC5oIiwgMTc3
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibmV3SGFzaCAhPSAweEZGRkZGRkZGIik7IGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAg
cmV0dXJuIG5ld0hhc2g7CiAgICAgICAgfQogICAgfTsKCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPFN0cmluZz4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U3RyaW5nPiB7IH07Cgp9
Cgp1c2luZyBXVEY6OlN0cmluZ0hhc2g7CnVzaW5nIFdURjo6Q2FzZUZvbGRpbmdIYXNoOwp1c2lu
ZyBXVEY6OkFscmVhZHlIYXNoZWQ7CiMgNDMgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiIDIKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIiAxCiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIgojZGVmaW5lIEpTR2xvYmFsRGF0
YV9oIAoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
cmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgojZGVmaW5lIENh
Y2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb25faCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oIiAxCiMgMjQgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaCIKI2RlZmluZSBKU1ZhbHVlX2ggCgoKCgojIDEg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQWx3YXlzSW5saW5lLmgiIDEKIyAz
MCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oIiAyCgoK
CgoKbmFtZXNwYWNlIEpTQyB7CgogICAgY2xhc3MgRXhlY1N0YXRlOwogICAgY2xhc3MgSWRlbnRp
ZmllcjsKICAgIGNsYXNzIEpTQ2VsbDsKICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwogICAgY2xhc3MgSlNPYmplY3Q7CiAgICBjbGFzcyBKU1N0cmluZzsK
ICAgIGNsYXNzIFByb3BlcnR5U2xvdDsKICAgIGNsYXNzIFB1dFByb3BlcnR5U2xvdDsKICAgIGNs
YXNzIFVTdHJpbmc7CgogICAgc3RydWN0IENsYXNzSW5mbzsKICAgIHN0cnVjdCBJbnN0cnVjdGlv
bjsKCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTsKCiAgICBl
bnVtIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwg
UHJlZmVyU3RyaW5nIH07CgoKCgoKICAgIHR5cGVkZWYgdm9pZCogRW5jb2RlZEpTVmFsdWU7CgoK
ICAgIHVuaW9uIEVuY29kZWRWYWx1ZURlc2NyaXB0b3IgewogICAgICAgIGludDY0X3QgYXNJbnQ2
NDsKCgoKICAgICAgICBKU0NlbGwqIHB0cjsKIyA3NiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oIgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgIGlu
dDMyX3QgcGF5bG9hZDsKICAgICAgICAgICAgaW50MzJfdCB0YWc7CiAgICAgICAgfSBhc0JpdHM7
CgogICAgfTsKCgogICAgaW50MzJfdCB0b0ludDMyKGRvdWJsZSk7CgoKICAgIGlubGluZSB1aW50
MzJfdCB0b1VJbnQzMihkb3VibGUgbnVtYmVyKQogICAgewoKCiAgICAgICAgcmV0dXJuIHRvSW50
MzIobnVtYmVyKTsKICAgIH0KCiAgICBjbGFzcyBKU1ZhbHVlIHsKICAgICAgICBmcmllbmQgc3Ry
dWN0IEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0czsKICAgICAgICBmcmllbmQgY2xhc3MgSklUOwog
ICAgICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViczsKICAgICAgICBmcmllbmQgY2xhc3MgSklUU3R1
YkNhbGw7CiAgICAgICAgZnJpZW5kIGNsYXNzIEpTSW50ZXJmYWNlSklUOwogICAgICAgIGZyaWVu
ZCBjbGFzcyBTcGVjaWFsaXplZFRodW5rSklUOwoKICAgIHB1YmxpYzoKICAgICAgICBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlKEpTVmFsdWUpOwogICAgICAgIHN0YXRpYyBKU1ZhbHVlIGRl
Y29kZShFbmNvZGVkSlNWYWx1ZSk7CgogICAgICAgIGVudW0gSlNOdWxsVGFnIHsgSlNOdWxsIH07
CiAgICAgICAgZW51bSBKU1VuZGVmaW5lZFRhZyB7IEpTVW5kZWZpbmVkIH07CiAgICAgICAgZW51
bSBKU1RydWVUYWcgeyBKU1RydWUgfTsKICAgICAgICBlbnVtIEpTRmFsc2VUYWcgeyBKU0ZhbHNl
IH07CiAgICAgICAgZW51bSBFbmNvZGVBc0RvdWJsZVRhZyB7IEVuY29kZUFzRG91YmxlIH07Cgog
ICAgICAgIEpTVmFsdWUoKTsKICAgICAgICBKU1ZhbHVlKEpTTnVsbFRhZyk7CiAgICAgICAgSlNW
YWx1ZShKU1VuZGVmaW5lZFRhZyk7CiAgICAgICAgSlNWYWx1ZShKU1RydWVUYWcpOwogICAgICAg
IEpTVmFsdWUoSlNGYWxzZVRhZyk7CiAgICAgICAgSlNWYWx1ZShKU0NlbGwqIHB0cik7CiAgICAg
ICAgSlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cik7CgoKICAgICAgICBKU1ZhbHVlKEVuY29kZUFz
RG91YmxlVGFnLCBkb3VibGUpOwogICAgICAgIGV4cGxpY2l0IEpTVmFsdWUoZG91YmxlKTsKICAg
ICAgICBleHBsaWNpdCBKU1ZhbHVlKGNoYXIpOwogICAgICAgIGV4cGxpY2l0IEpTVmFsdWUodW5z
aWduZWQgY2hhcik7CiAgICAgICAgZXhwbGljaXQgSlNWYWx1ZShzaG9ydCk7CiAgICAgICAgZXhw
bGljaXQgSlNWYWx1ZSh1bnNpZ25lZCBzaG9ydCk7CiAgICAgICAgZXhwbGljaXQgSlNWYWx1ZShp
bnQpOwogICAgICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQpOwogICAgICAgIGV4cGxpY2l0
IEpTVmFsdWUobG9uZyk7CiAgICAgICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNpZ25lZCBsb25nKTsK
ICAgICAgICBleHBsaWNpdCBKU1ZhbHVlKGxvbmcgbG9uZyk7CiAgICAgICAgZXhwbGljaXQgSlNW
YWx1ZSh1bnNpZ25lZCBsb25nIGxvbmcpOwoKICAgICAgICBvcGVyYXRvciBib29sKCkgY29uc3Q7
CiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdDsKICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwoKICAgICAg
ICBib29sIGlzSW50MzIoKSBjb25zdDsKICAgICAgICBib29sIGlzVUludDMyKCkgY29uc3Q7CiAg
ICAgICAgYm9vbCBpc0RvdWJsZSgpIGNvbnN0OwogICAgICAgIGJvb2wgaXNUcnVlKCkgY29uc3Q7
CiAgICAgICAgYm9vbCBpc0ZhbHNlKCkgY29uc3Q7CgogICAgICAgIGludDMyX3QgYXNJbnQzMigp
IGNvbnN0OwogICAgICAgIHVpbnQzMl90IGFzVUludDMyKCkgY29uc3Q7CiAgICAgICAgZG91Ymxl
IGFzRG91YmxlKCkgY29uc3Q7CgoKICAgICAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7CiAg
ICAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxs
KCkgY29uc3Q7CiAgICAgICAgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdDsKICAgICAgICBib29sIGlz
TnVtYmVyKCkgY29uc3Q7CiAgICAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwogICAgICAgIGJv
b2wgaXNQcmltaXRpdmUoKSBjb25zdDsKICAgICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29u
c3Q7CiAgICAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OwogICAgICAgIGJvb2wgaW5oZXJpdHMo
Y29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CgoKICAgICAgICBib29sIGdldEJvb2xlYW4oYm9vbCYp
IGNvbnN0OwogICAgICAgIGJvb2wgZ2V0Qm9vbGVhbigpIGNvbnN0OwogICAgICAgIGJvb2wgZ2V0
TnVtYmVyKGRvdWJsZSYpIGNvbnN0OwogICAgICAgIGRvdWJsZSB1bmNoZWNrZWRHZXROdW1iZXIo
KSBjb25zdDsKICAgICAgICBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcm
KSBjb25zdDsKICAgICAgICBVU3RyaW5nIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
OwogICAgICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdDsKCgogICAgICAgIGJvb2wgZ2V0
VUludDMyKHVpbnQzMl90JikgY29uc3Q7CgoKICAgICAgICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4
ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgPSBOb1ByZWZlcmVuY2UpIGNvbnN0Owog
ICAgICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVy
LCBKU1ZhbHVlJik7CgogICAgICAgIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OwoK
CgogICAgICAgIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICBKU1Zh
bHVlIHRvSlNOdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgVVN0cmluZyB0b1N0cmlu
ZyhFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICBVU3RyaW5nIHRvUHJpbWl0aXZlU3RyaW5nKEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBj
b25zdDsKICAgICAgICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqKSBjb25zdDsKCgogICAgICAgIGRvdWJsZSB0b0ludGVnZXIoRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgICAgZG91YmxlIHRvSW50ZWdlclByZXNlcnZlTmFOKEV4ZWNTdGF0ZSopIGNvbnN0Owog
ICAgICAgIGludDMyX3QgdG9JbnQzMihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICB1aW50MzJf
dCB0b1VJbnQzMihFeGVjU3RhdGUqKSBjb25zdDsKCgoKICAgICAgICBmbG9hdCB0b0Zsb2F0KEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRvTnVtYmVy
KGV4ZWMpKTsgfQoKCiAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0Owog
ICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29u
c3Q7CiAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKICAgICAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgICAgIHZvaWQgcHV0RGlyZWN0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgdm9pZCBwdXQoRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKCiAgICAgICAgSlNPYmpl
Y3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICBKU1ZhbHVlIHRvU3Ry
aWN0VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICBVU3RyaW5nIHRvVGhpc1N0
cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICBKU1N0cmluZyogdG9UaGlzSlNTdHJpbmco
RXhlY1N0YXRlKikgY29uc3Q7CgogICAgICAgIHN0YXRpYyBib29sIGVxdWFsKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWxT
bG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgICAg
IHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKTsKICAgICAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgICAgIHN0YXRpYyBib29sIHN0
cmljdEVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KTsKICAgICAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CgogICAgICAgIEpTVmFsdWUgZ2V0SlNO
dW1iZXIoKTsKCiAgICAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKICAgICAgICBKU0NlbGwqIGFz
Q2VsbCgpIGNvbnN0OwogICAgICAgIGJvb2wgaXNWYWxpZENhbGxlZSgpOwoKCiAgICAgICAgY2hh
ciogZGVzY3JpcHRpb24oKTsKCgogICAgcHJpdmF0ZToKICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKCiAgICAgICAgZW51bSBIYXNoVGFibGVE
ZWxldGVkVmFsdWVUYWcgeyBIYXNoVGFibGVEZWxldGVkVmFsdWUgfTsKICAgICAgICBKU1ZhbHVl
KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7CgogICAgICAgIGlubGluZSBjb25zdCBKU1ZhbHVl
IGFzVmFsdWUoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQogICAgICAgIGRvdWJsZSB0b051bWJl
clNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgIEpTT2JqZWN0KiB0b09iamVjdFNs
b3dDYXNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgICAgSlNPYmpl
Y3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwoKICAgICAgICBKU09i
amVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICBKU09i
amVjdCogc3ludGhlc2l6ZU9iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIyAzMjkgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaCIKI2RlZmluZSBEb3VibGVF
bmNvZGVPZmZzZXQgMHgxMDAwMDAwMDAwMDAwbGwKCgojZGVmaW5lIFRhZ1R5cGVOdW1iZXIgMHhm
ZmZmMDAwMDAwMDAwMDAwbGwKCgojZGVmaW5lIFRhZ0JpdFR5cGVPdGhlciAweDJsbAojZGVmaW5l
IFRhZ0JpdEJvb2wgMHg0bGwKI2RlZmluZSBUYWdCaXRVbmRlZmluZWQgMHg4bGwKCiNkZWZpbmUg
VmFsdWVGYWxzZSAoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8IGZhbHNlKQojZGVmaW5l
IFZhbHVlVHJ1ZSAoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8IHRydWUpCiNkZWZpbmUg
VmFsdWVVbmRlZmluZWQgKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdFVuZGVmaW5lZCkKI2RlZmlu
ZSBWYWx1ZU51bGwgKFRhZ0JpdFR5cGVPdGhlcikKCgojZGVmaW5lIFRhZ01hc2sgKFRhZ1R5cGVO
dW1iZXIgfCBUYWdCaXRUeXBlT3RoZXIpCgoKCgoKCiNkZWZpbmUgVmFsdWVFbXB0eSAweDBsbAoj
ZGVmaW5lIFZhbHVlRGVsZXRlZCAweDRsbAoKCiAgICAgICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciB1OwogICAgfTsKIyAzNjkgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuaCIKICAgIHR5cGVkZWYgUHRySGFzaDxFbmNvZGVkSlNWYWx1ZT4gRW5jb2RlZEpT
VmFsdWVIYXNoOwoKICAgIHN0cnVjdCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHMgOiBIYXNoVHJh
aXRzPEVuY29kZWRKU1ZhbHVlPiB7CiAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKEVuY29kZWRKU1ZhbHVlJiBzbG90KSB7IHNsb3QgPSBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZShKU1ZhbHVlOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpKTsgfQogICAgICAgIHN0YXRpYyBi
b29sIGlzRGVsZXRlZFZhbHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9
PSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
KTsgfQogICAgfTsKCgoKICAgIGlubGluZSBKU1ZhbHVlIGpzTnVsbCgpCiAgICB7CiAgICAgICAg
cmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNOdWxsKTsKICAgIH0KCiAgICBpbmxpbmUgSlNWYWx1
ZSBqc1VuZGVmaW5lZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNV
bmRlZmluZWQpOwogICAgfQoKICAgIGlubGluZSBKU1ZhbHVlIGpzQm9vbGVhbihib29sIGIpCiAg
ICB7CiAgICAgICAgcmV0dXJuIGIgPyBKU1ZhbHVlKEpTVmFsdWU6OkpTVHJ1ZSkgOiBKU1ZhbHVl
KEpTVmFsdWU6OkpTRmFsc2UpOwogICAgfQoKICAgIGlubGluZSBKU1ZhbHVlIGpzRG91YmxlTnVt
YmVyKGRvdWJsZSBkKQogICAgewogICAgICAgIGRvIGlmICghKEpTVmFsdWUoSlNWYWx1ZTo6RW5j
b2RlQXNEb3VibGUsIGQpLmlzTnVtYmVyKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaCIsIDM5NSwg
X19QUkVUVFlfRlVOQ1RJT05fXywgIkpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIGQp
LmlzTnVtYmVyKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91Ymxl
LCBkKTsKICAgIH0KCiAgICBpbmxpbmUgSlNWYWx1ZSBqc051bWJlcihkb3VibGUgZCkKICAgIHsK
ICAgICAgICBkbyBpZiAoIShKU1ZhbHVlKGQpLmlzTnVtYmVyKCkpKSB7IFdURlJlcG9ydEFzc2Vy
dGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuaCIsIDQwMSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIkpTVmFsdWUoZCkuaXNOdW1iZXIoKSIp
OyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVl
ZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoZCk7CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWUganNOdW1i
ZXIoY2hhciBpKQogICAgewogICAgICAgIHJldHVybiBKU1ZhbHVlKGkpOwogICAgfQoKICAgIGlu
bGluZSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIGNoYXIgaSkKICAgIHsKICAgICAgICByZXR1
cm4gSlNWYWx1ZShpKTsKICAgIH0KCiAgICBpbmxpbmUgSlNWYWx1ZSBqc051bWJlcihzaG9ydCBp
KQogICAgewogICAgICAgIHJldHVybiBKU1ZhbHVlKGkpOwogICAgfQoKICAgIGlubGluZSBKU1Zh
bHVlIGpzTnVtYmVyKHVuc2lnbmVkIHNob3J0IGkpCiAgICB7CiAgICAgICAgcmV0dXJuIEpTVmFs
dWUoaSk7CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWUganNOdW1iZXIoaW50IGkpCiAgICB7CiAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoaSk7CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWUganNOdW1i
ZXIodW5zaWduZWQgaSkKICAgIHsKICAgICAgICByZXR1cm4gSlNWYWx1ZShpKTsKICAgIH0KCiAg
ICBpbmxpbmUgSlNWYWx1ZSBqc051bWJlcihsb25nIGkpCiAgICB7CiAgICAgICAgcmV0dXJuIEpT
VmFsdWUoaSk7CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQgbG9u
ZyBpKQogICAgewogICAgICAgIHJldHVybiBKU1ZhbHVlKGkpOwogICAgfQoKICAgIGlubGluZSBK
U1ZhbHVlIGpzTnVtYmVyKGxvbmcgbG9uZyBpKQogICAgewogICAgICAgIHJldHVybiBKU1ZhbHVl
KGkpOwogICAgfQoKICAgIGlubGluZSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9u
ZyBpKQogICAgewogICAgICAgIHJldHVybiBKU1ZhbHVlKGkpOwogICAgfQoKICAgIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSBhLCBjb25zdCBKU0NlbGwqIGIpIHsgcmV0dXJu
IGEgPT0gSlNWYWx1ZShiKTsgfQogICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU0Nl
bGwqIGEsIGNvbnN0IEpTVmFsdWUgYikgeyByZXR1cm4gSlNWYWx1ZShhKSA9PSBiOyB9CgogICAg
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlIGEsIGNvbnN0IEpTQ2VsbCogYikg
eyByZXR1cm4gYSAhPSBKU1ZhbHVlKGIpOyB9CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEpTQ2VsbCogYSwgY29uc3QgSlNWYWx1ZSBiKSB7IHJldHVybiBKU1ZhbHVlKGEpICE9IGI7
IH0KCn0KIyAzMCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCnR5cGVkZWYgZG91
YmxlICgqVHJhbnNjZW5kZW50YWxGdW5jdGlvblB0cikoZG91YmxlKTsKCgoKCnRlbXBsYXRlPFRy
YW5zY2VuZGVudGFsRnVuY3Rpb25QdHIgb3JpZ25hbEZ1bmN0aW9uPgpjbGFzcyBDYWNoZWRUcmFu
c2NlbmRlbnRhbEZ1bmN0aW9uIHsKICAgIHN0cnVjdCBDYWNoZUVudHJ5IHsKICAgICAgICBkb3Vi
bGUgb3BlcmFuZDsKICAgICAgICBkb3VibGUgcmVzdWx0OwogICAgfTsKCnB1YmxpYzoKICAgIENh
Y2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24oKQogICAgICAgIDogbV9jYWNoZSgwKQogICAgewog
ICAgfQoKICAgIH5DYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uKCkKICAgIHsKICAgICAgICBp
ZiAobV9jYWNoZSkKICAgICAgICAgICAgZmFzdEZyZWUobV9jYWNoZSk7CiAgICB9CgogICAgSlNW
YWx1ZSBvcGVyYXRvcigpIChkb3VibGUgb3BlcmFuZCkKICAgIHsKICAgICAgICBpZiAoX19idWls
dGluX2V4cGVjdCgoIW1fY2FjaGUpLCAwKSkKICAgICAgICAgICAgaW5pdGlhbGl6ZSgpOwogICAg
ICAgIENhY2hlRW50cnkqIGVudHJ5ID0gJm1fY2FjaGVbaGFzaChvcGVyYW5kKV07CgogICAgICAg
IGlmIChlbnRyeS0+b3BlcmFuZCA9PSBvcGVyYW5kKQogICAgICAgICAgICByZXR1cm4ganNEb3Vi
bGVOdW1iZXIoZW50cnktPnJlc3VsdCk7CiAgICAgICAgZG91YmxlIHJlc3VsdCA9IG9yaWduYWxG
dW5jdGlvbihvcGVyYW5kKTsKICAgICAgICBlbnRyeS0+b3BlcmFuZCA9IG9wZXJhbmQ7CiAgICAg
ICAgZW50cnktPnJlc3VsdCA9IHJlc3VsdDsKICAgICAgICByZXR1cm4ganNEb3VibGVOdW1iZXIo
cmVzdWx0KTsKICAgIH0KCnByaXZhdGU6CiAgICB2b2lkIGluaXRpYWxpemUoKQogICAgewoKICAg
ICAgICBtX2NhY2hlID0gc3RhdGljX2Nhc3Q8Q2FjaGVFbnRyeSo+KGZhc3RNYWxsb2Moc19jYWNo
ZVNpemUgKiBzaXplb2YoQ2FjaGVFbnRyeSkpKTsKICAgICAgICBmb3IgKHVuc2lnbmVkIHggPSAw
OyB4IDwgc19jYWNoZVNpemU7ICsreCkgewogICAgICAgICAgICBtX2NhY2hlW3hdLm9wZXJhbmQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogICAgICAgICAgICBt
X2NhY2hlW3hdLnJlc3VsdCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFO
KCk7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGRvdWJsZSBkKQog
ICAgewogICAgICAgIHVuaW9uIGRvdWJsZUFuZFVJbnQ2NCB7CiAgICAgICAgICAgIGRvdWJsZSBk
OwogICAgICAgICAgICB1aW50MzJfdCBpc1syXTsKICAgICAgICB9IHU7CiAgICAgICAgdS5kID0g
ZDsKCiAgICAgICAgdW5zaWduZWQgeCA9IHUuaXNbMF0gXiB1LmlzWzFdOwogICAgICAgIHggPSAo
eCA+PiAyMCkgXiAoeCA+PiA4KTsKICAgICAgICByZXR1cm4geCAmIChzX2NhY2hlU2l6ZSAtIDEp
OwogICAgfQoKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2NhY2hlU2l6ZSA9IDB4MTAwMDsK
ICAgIENhY2hlRW50cnkqIG1fY2FjaGU7Cn07Cgp9CiMgMzMgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIiAxCiMgMjMgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaCIKI2RlZmluZSBIZWFwX2ggCgojIDEgIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaCIgMQojIDI3ICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmgiCiNkZWZpbmUgSGFuZGxlSGVh
cF9oIAoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Jsb2NrU3RhY2su
aCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Jsb2NrU3RhY2su
aCIKI2RlZmluZSBCbG9ja1N0YWNrX2ggCgoKCgoKbmFtZXNwYWNlIFdURiB7Cgp0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgQmxvY2tTdGFjayB7CnB1YmxpYzoKICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgYmxvY2tTaXplID0gNDA5NjsKICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tMZW5n
dGggPSBibG9ja1NpemUgLyBzaXplb2YoVCk7CgogICAgQmxvY2tTdGFjaygpOwogICAgfkJsb2Nr
U3RhY2soKTsKCiAgICBUKiBncm93KCk7CiAgICB2b2lkIHNocmluayhUKik7CgogICAgY29uc3Qg
VmVjdG9yPFQqPiYgYmxvY2tzKCk7Cgpwcml2YXRlOgogICAgVmVjdG9yPFQqPiBtX2Jsb2NrczsK
ICAgIFQqIG1fc3BhcmVCbG9jazsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBCbG9ja1N0YWNr
PFQ+OjpCbG9ja1N0YWNrKCkKICAgIDogbV9zcGFyZUJsb2NrKDApCnsKfQoKdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IEJsb2NrU3RhY2s8VD46On5CbG9ja1N0YWNrKCkKewogICAgaWYgKG1fc3BhcmVC
bG9jaykKICAgICAgICBmYXN0RnJlZShtX3NwYXJlQmxvY2spOwogICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2Jsb2Nrcy5zaXplKCk7ICsraSkKICAgICAgICBmYXN0RnJlZShtX2Jsb2Nrc1tp
XSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3QgVmVjdG9yPFQqPiYgQmxv
Y2tTdGFjazxUPjo6YmxvY2tzKCkKewogICAgcmV0dXJuIG1fYmxvY2tzOwp9Cgp0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gVCogQmxvY2tTdGFjazxUPjo6Z3JvdygpCnsKICAgIFQqIGJsb2NrID0gbV9z
cGFyZUJsb2NrID8gbV9zcGFyZUJsb2NrIDogc3RhdGljX2Nhc3Q8VCo+KGZhc3RNYWxsb2MoYmxv
Y2tTaXplKSk7CiAgICBtX3NwYXJlQmxvY2sgPSAwOwoKICAgIG1fYmxvY2tzLmFwcGVuZChibG9j
ayk7CiAgICByZXR1cm4gYmxvY2s7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIEJsb2Nr
U3RhY2s8VD46OnNocmluayhUKiBuZXdFbmQpCnsKICAgIGRvIGlmICghKG5ld0VuZCAhPSBtX2Js
b2Nrcy5sYXN0KCkgKyBibG9ja0xlbmd0aCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CbG9ja1N0YWNrLmgiLCA4MiwgX19Q
UkVUVFlfRlVOQ1RJT05fXywgIm5ld0VuZCAhPSBtX2Jsb2Nrcy5sYXN0KCkgKyBibG9ja0xlbmd0
aCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFk
YmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7
CiAgICBtX3NwYXJlQmxvY2sgPSBtX2Jsb2Nrcy5sYXN0KCk7CiAgICBtX2Jsb2Nrcy5yZW1vdmVM
YXN0KCk7CgogICAgd2hpbGUgKG1fYmxvY2tzLmxhc3QoKSArIGJsb2NrTGVuZ3RoICE9IG5ld0Vu
ZCkgewogICAgICAgIGZhc3RGcmVlKG1fYmxvY2tzLmxhc3QoKSk7CiAgICAgICAgbV9ibG9ja3Mu
cmVtb3ZlTGFzdCgpOwogICAgfQp9Cgp9Cgp1c2luZyBXVEY6OkJsb2NrU3RhY2s7CiMgMzAgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaCIgMgojIDEgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oIiAxCiMgMjcgIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oIgojZGVmaW5lIEhhbmRsZV9o
IAoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVUeXBlcy5o
IiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVR5cGVz
LmgiCiNkZWZpbmUgSGFuZGxlVHlwZXNfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oIiAxCiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZVR5cGVzLmgiIDIKCm5hbWVzcGFjZSBKU0MgewoKdHlwZWRlZiBl
bnVtIHsgfSBVbmtub3duOwp0eXBlZGVmIEpTVmFsdWUqIEhhbmRsZVNsb3Q7Cgp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSGFuZGxlVHlwZXMgewogICAgdHlwZWRlZiBUKiBFeHRlcm5hbFR5
cGU7CiAgICBzdGF0aWMgRXh0ZXJuYWxUeXBlIGdldEZyb21TbG90KEhhbmRsZVNsb3Qgc2xvdCkg
eyByZXR1cm4gKHNsb3QgJiYgKnNsb3QpID8gcmVpbnRlcnByZXRfY2FzdDxFeHRlcm5hbFR5cGU+
KHNsb3QtPmFzQ2VsbCgpKSA6IDA7IH0KICAgIHN0YXRpYyBKU1ZhbHVlIHRvSlNWYWx1ZShUKiBj
ZWxsKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGNlbGwpOyB9CiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCB2YWxpZGF0ZVVwY2FzdCgpIHsgVCogdGVtcDsg
dGVtcCA9IChVKikwOyB9Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBIYW5kbGVUeXBlczxVbmtub3du
PiB7CiAgICB0eXBlZGVmIEpTVmFsdWUgRXh0ZXJuYWxUeXBlOwogICAgc3RhdGljIEV4dGVybmFs
VHlwZSBnZXRGcm9tU2xvdChIYW5kbGVTbG90IHNsb3QpIHsgcmV0dXJuIHNsb3QgPyAqc2xvdCA6
IEpTVmFsdWUoKTsgfQogICAgc3RhdGljIEpTVmFsdWUgdG9KU1ZhbHVlKGNvbnN0IEpTVmFsdWUm
IHYpIHsgcmV0dXJuIHY7IH0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyB2b2lkIHZh
bGlkYXRlVXBjYXN0KCkgeyB9Cn07Cgp9CiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZS5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKIyA0MSAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgiCnRlbXBsYXRlIDxjbGFzcyBUPiBjbGFz
cyBIYW5kbGU7CgoKdGVtcGxhdGUgPD4gY2xhc3MgSGFuZGxlPEpTVmFsdWU+OwoKCnRlbXBsYXRl
PHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGUsIHR5cGVuYW1lIEZpbmFsaXpl
ckNhbGxiYWNrLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+IGNsYXNz
IFdlYWtHQ01hcDsKCmNsYXNzIEhhbmRsZUJhc2UgewogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGZyaWVuZCBjbGFzcyBXZWFrOwogICAgZnJpZW5kIGNsYXNzIEhhbmRsZUhlYXA7CiAgICBmcmll
bmQgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhOwogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEtl
eVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGUsIHR5cGVuYW1lIEZpbmFsaXplckNhbGxiYWNrLCB0
eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+IGZyaWVuZCBjbGFzcyBXZWFr
R0NNYXA7CgpwdWJsaWM6CiAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3Ns
b3QgfHwgISptX3Nsb3Q7IH0KCgogICAgdHlwZWRlZiBKU1ZhbHVlIChIYW5kbGVCYXNlOjoqVW5z
cGVjaWZpZWRCb29sVHlwZSk7CiAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKigpIGNv
bnN0IHsgcmV0dXJuIChtX3Nsb3QgJiYgKm1fc2xvdCkgPyByZWludGVycHJldF9jYXN0PFVuc3Bl
Y2lmaWVkQm9vbFR5cGUqPigxKSA6IDA7IH0KCnByb3RlY3RlZDoKICAgIEhhbmRsZUJhc2UoSGFu
ZGxlU2xvdCBzbG90KQogICAgICAgIDogbV9zbG90KHNsb3QpCiAgICB7CiAgICB9CgogICAgdm9p
ZCBzd2FwKEhhbmRsZUJhc2UmIG90aGVyKSB7IHN0ZDo6c3dhcChtX3Nsb3QsIG90aGVyLm1fc2xv
dCk7IH0KCiAgICBIYW5kbGVTbG90IHNsb3QoKSBjb25zdCB7IHJldHVybiBtX3Nsb3Q7IH0KICAg
IHZvaWQgc2V0U2xvdChIYW5kbGVTbG90IHNsb3QpCiAgICB7CiAgICAgICAgbV9zbG90ID0gc2xv
dDsKICAgIH0KCnByaXZhdGU6CiAgICBIYW5kbGVTbG90IG1fc2xvdDsKfTsKCnRlbXBsYXRlIDx0
eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFuZGxlQ29udmVydGVyIHsKICAgIFQq
IG9wZXJhdG9yLT4oKQogICAgewogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxCYXNlKj4odGhp
cyktPmdldCgpOwogICAgfQogICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0CiAgICB7CiAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCk7CiAgICB9
CgogICAgVCogb3BlcmF0b3IqKCkKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QmFz
ZSo+KHRoaXMpLT5nZXQoKTsKICAgIH0KICAgIGNvbnN0IFQqIG9wZXJhdG9yKigpIGNvbnN0CiAg
ICB7CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCk7
CiAgICB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZT4gc3RydWN0IEhhbmRsZUNvbnZlcnRl
cjxCYXNlLCBVbmtub3duPiB7CiAgICBIYW5kbGU8SlNPYmplY3Q+IGFzT2JqZWN0KCkgY29uc3Q7
CiAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4ganNWYWx1ZSgpLmlzT2JqZWN0KCk7
IH0KICAgIGJvb2wgZ2V0TnVtYmVyKGRvdWJsZSBudW1iZXIpIGNvbnN0IHsgcmV0dXJuIGpzVmFs
dWUoKS5nZXROdW1iZXIobnVtYmVyKTsgfQogICAgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRl
KikgY29uc3Q7CiAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3QgeyByZXR1cm4ganNW
YWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCk7IH0KCnByaXZhdGU6CiAgICBKU1ZhbHVlIGpzVmFs
dWUoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4o
dGhpcyktPmdldCgpOwogICAgfQp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEhhbmRs
ZSA6IHB1YmxpYyBIYW5kbGVCYXNlLCBwdWJsaWMgSGFuZGxlQ29udmVydGVyPEhhbmRsZTxUPiwg
VD4gewpwdWJsaWM6CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4gZnJpZW5k
IGNsYXNzIEhhbmRsZUNvbnZlcnRlcjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlVHlwZXM8
VD46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4g
SGFuZGxlKEhhbmRsZTxVPiBvKQogICAgewogICAgICAgIHR5cGVuYW1lIEhhbmRsZVR5cGVzPFQ+
Ojp0ZW1wbGF0ZSB2YWxpZGF0ZVVwY2FzdDxVPigpOwogICAgICAgIHNldFNsb3Qoby5zbG90KCkp
OwogICAgfQoKICAgIHZvaWQgc3dhcChIYW5kbGUmIG90aGVyKSB7IEhhbmRsZUJhc2U6OnN3YXAo
b3RoZXIpOyB9CgogICAgRXh0ZXJuYWxUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJuIEhhbmRsZVR5
cGVzPFQ+OjpnZXRGcm9tU2xvdCh0aGlzLT5zbG90KCkpOyB9Cgpwcm90ZWN0ZWQ6CiAgICBIYW5k
bGUoSGFuZGxlU2xvdCBzbG90ID0gMCkKICAgICAgICA6IEhhbmRsZUJhc2Uoc2xvdCkKICAgIHsK
ICAgIH0KCnByaXZhdGU6CiAgICBmcmllbmQgY2xhc3MgSGFuZGxlSGVhcDsKCiAgICBzdGF0aWMg
SGFuZGxlPFQ+IHdyYXBTbG90KEhhbmRsZVNsb3Qgc2xvdCkKICAgIHsKICAgICAgICByZXR1cm4g
SGFuZGxlPFQ+KHNsb3QpOwogICAgfQp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IEhhbmRs
ZTxKU09iamVjdD4gSGFuZGxlQ29udmVydGVyPEJhc2UsIFVua25vd24+Ojphc09iamVjdCgpIGNv
bnN0CnsKICAgIHJldHVybiBIYW5kbGU8SlNPYmplY3Q+Ojp3cmFwU2xvdChzdGF0aWNfY2FzdDxj
b25zdCBCYXNlKj4odGhpcyktPnNsb3QoKSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhbmRsZTxUPiYgYSwgY29uc3Qg
SGFuZGxlPFU+JiBiKQp7CiAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOwp9Cgp0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBI
YW5kbGU8VD4mIGEsIFUqIGIpCnsKICAgIHJldHVybiBhLmdldCgpID09IGI7Cn0KCnRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNv
bnN0IEhhbmRsZTxVPiYgYikKewogICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsKfQoKdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFu
ZGxlPFQ+JiBhLCBjb25zdCBIYW5kbGU8VT4mIGIpCnsKICAgIHJldHVybiBhLmdldCgpICE9IGIu
Z2V0KCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEhhbmRsZTxUPiYgYSwgVSogYikKewogICAgcmV0dXJuIGEuZ2V0KCkg
IT0gYjsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oVCogYSwgY29uc3QgSGFuZGxlPFU+JiBiKQp7CiAgICByZXR1cm4gYSAhPSBiLmdl
dCgpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBIYW5kbGU8VD4mIGEsIEpTVmFsdWUgYikKewogICAgcmV0dXJuIGEuZ2V0
KCkgIT0gYjsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yIT0oSlNWYWx1ZSBhLCBjb25zdCBIYW5kbGU8VT4mIGIpCnsKICAgIHJldHVybiBh
ICE9IGIuZ2V0KCk7Cn0KCn0KIyAzMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGFuZGxlSGVhcC5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9IYXNoQ291bnRlZFNldC5oIiAxCiMgMjIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvSGFzaENvdW50ZWRTZXQuaCIKI2RlZmluZSBXVEZfSGFzaENvdW50ZWRTZXRfaCAKCgoj
IDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaE1hcC5oIiAxCiMgMjYg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaENvdW50ZWRTZXQuaCIgMgoj
IDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9yLmgiIDEKIyAyNyAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoQ291bnRlZFNldC5oIiAyCgpu
YW1lc3BhY2UgV1RGIHsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlPjo6SGFzaCwKICAgICAgICB0
eXBlbmFtZSBUcmFpdHMgPSBIYXNoVHJhaXRzPFZhbHVlPiA+IGNsYXNzIEhhc2hDb3VudGVkU2V0
IHsKICAgICAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsg
cmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVy
biBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6
OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhw
LCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3KTsgcmV0dXJuIHA7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVG
cmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyA6OldURjo6ZmFzdEZy
ZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6
V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxs
b2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgcmV0dXJuIHA7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0
Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5
KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IFRoaXNJc0hlcmVU
b0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwogICAgcHJpdmF0ZToKICAgICAgICB0eXBl
ZGVmIEhhc2hNYXA8VmFsdWUsIHVuc2lnbmVkLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+IEltcGxU
eXBlOwogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgVmFsdWUgVmFsdWVUeXBlOwogICAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOwogICAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwoK
ICAgICAgICBIYXNoQ291bnRlZFNldCgpIHt9CgogICAgICAgIGludCBzaXplKCkgY29uc3Q7CiAg
ICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
CgoKICAgICAgICBpdGVyYXRvciBiZWdpbigpOwogICAgICAgIGl0ZXJhdG9yIGVuZCgpOwogICAg
ICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CiAgICAgICAgY29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3Q7CgogICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgVmFsdWVUeXBlJik7CiAg
ICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBWYWx1ZVR5cGUmKSBjb25zdDsKICAgICAg
ICBib29sIGNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYpIGNvbnN0OwogICAgICAgIHVuc2lnbmVk
IGNvdW50KGNvbnN0IFZhbHVlVHlwZSYpIGNvbnN0OwoKCgoKICAgICAgICBzdGQ6OnBhaXI8aXRl
cmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKCgoKICAgICAgICBib29sIHJlbW92
ZShjb25zdCBWYWx1ZVR5cGUmKTsKICAgICAgICBib29sIHJlbW92ZShpdGVyYXRvcik7CgoKICAg
ICAgICB2b2lkIHJlbW92ZUFsbChpdGVyYXRvcik7CiAgICAgICAgdm9pZCByZW1vdmVBbGwoY29u
c3QgVmFsdWVUeXBlJik7CgoKICAgICAgICB2b2lkIGNsZWFyKCk7CgogICAgcHJpdmF0ZToKICAg
ICAgICBJbXBsVHlwZSBtX2ltcGw7CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICBpbmxpbmUgaW50
IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpzaXplKCkgY29u
c3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLnNpemUoKTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
PgogICAgaW5saW5lIGludCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzPjo6Y2FwYWNpdHkoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuY2FwYWNp
dHkoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAgaW5saW5lIGJvb2wgSGFzaENvdW50ZWRTZXQ8
VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmlzRW1wdHkoKSBjb25zdAogICAgewogICAg
ICAgIHJldHVybiBzaXplKCkgPT0gMDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAgaW5saW5lIHR5
cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjppdGVy
YXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YmVnaW4o
KQogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
PgogICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHM+OjppdGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzPjo6ZW5kKCkKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmVuZCgpOwogICAgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHM+CiAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnN0X2l0ZXJhdG9yIEhhc2hDb3VudGVkU2V0PFZhbHVl
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpiZWdpbigpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0
dXJuIG1faW1wbC5iZWdpbigpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICBpbmxpbmUgdHlwZW5h
bWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnN0X2l0
ZXJhdG9yIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjplbmQo
KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiAgICB9CgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cz4KICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cz46OmZpbmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKICAgIHsKICAgICAgICBy
ZXR1cm4gbV9pbXBsLmZpbmQodmFsdWUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICBpbmxpbmUg
dHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNv
bnN0X2l0ZXJhdG9yIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+
OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IG1faW1wbC5maW5kKHZhbHVlKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAgaW5saW5lIGJvb2wg
SGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnRhaW5zKGNv
bnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1faW1wbC5j
b250YWlucyh2YWx1ZSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgIGlubGluZSB1bnNpZ25lZCBI
YXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y291bnQoY29uc3Qg
VmFsdWVUeXBlJiB2YWx1ZSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmdldCh2
YWx1ZSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgIGlubGluZSBzdGQ6OnBhaXI8dHlwZW5hbWUg
SGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJhdG9yLCBi
b29sPiBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNv
bnN0IFZhbHVlVHlwZSAmdmFsdWUpCiAgICB7CiAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7CiAgICAgICAgKytyZXN1bHQuZmlyc3QtPnNl
Y29uZDsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICBpbmxp
bmUgYm9vbCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVt
b3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIHJlbW92ZShm
aW5kKHZhbHVlKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgIGlubGluZSBib29sIEhhc2hDb3Vu
dGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUoaXRlcmF0b3IgaXQp
CiAgICB7CiAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7
CgogICAgICAgIHVuc2lnbmVkIG9sZFZhbCA9IGl0LT5zZWNvbmQ7CiAgICAgICAgZG8gaWYgKCEo
b2xkVmFsKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0hhc2hDb3VudGVkU2V0LmgiLCAxNjUsIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJvbGRWYWwiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIHVuc2lnbmVkIG5ld1ZhbCA9IG9sZFZhbCAtIDE7CiAgICAgICAg
aWYgKG5ld1ZhbCkgewogICAgICAgICAgICBpdC0+c2Vjb25kID0gbmV3VmFsOwogICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBtX2ltcGwucmVtb3ZlKGl0KTsKICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAgaW5saW5lIHZvaWQgSGFz
aENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnJlbW92ZUFsbChjb25z
dCBWYWx1ZVR5cGUmIHZhbHVlKQogICAgewogICAgICAgIHJlbW92ZUFsbChmaW5kKHZhbHVlKSk7
CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgIGlubGluZSB2b2lkIEhhc2hDb3VudGVkU2V0PFZhbHVl
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmVBbGwoaXRlcmF0b3IgaXQpCiAgICB7CiAg
ICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIG1faW1w
bC5yZW1vdmUoaXQpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICBpbmxpbmUgdm9pZCBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y2xlYXIoKQogICAgewogICAg
ICAgIG1faW1wbC5jbGVhcigpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFZlY3RvclR5
cGU+CiAgICBpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3IoY29uc3QgSGFzaENvdW50ZWRTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz4mIGNvbGxlY3Rpb24sIFZlY3RvclR5cGUmIHZlY3Rv
cikKICAgIHsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKCiAgICAgICAg
dmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7CgogICAgICAgIGl0ZXJhdG9yIGl0ID0g
Y29sbGVjdGlvbi5iZWdpbigpOwogICAgICAgIGl0ZXJhdG9yIGVuZCA9IGNvbGxlY3Rpb24uZW5k
KCk7CiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaXQgIT0gZW5kOyArK2l0LCArK2kpCiAg
ICAgICAgICAgIHZlY3RvcltpXSA9ICppdDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAgaW5saW5l
IHZvaWQgY29weVRvVmVjdG9yKGNvbnN0IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHM+JiBjb2xsZWN0aW9uLCBWZWN0b3I8VmFsdWU+JiB2ZWN0b3IpCiAgICB7CiAg
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzPjo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7CgogICAgICAgIHZlY3Rvci5yZXNp
emUoY29sbGVjdGlvbi5zaXplKCkpOwoKICAgICAgICBpdGVyYXRvciBpdCA9IGNvbGxlY3Rpb24u
YmVnaW4oKTsKICAgICAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0aW9uLmVuZCgpOwogICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGl0ICE9IGVuZDsgKytpdCwgKytpKQogICAgICAgICAgICB2
ZWN0b3JbaV0gPSAoKml0KS5maXJzdDsKICAgIH0KCgp9Cgp1c2luZyBXVEY6Okhhc2hDb3VudGVk
U2V0OwojIDMyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFw
LmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlu
a2VkTGlzdC5oIiAxCiMgMzggIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2Vu
dGluZWxMaW5rZWRMaXN0LmgiCiNkZWZpbmUgU2VudGluZWxMaW5rZWRMaXN0X2ggCgpuYW1lc3Bh
Y2UgV1RGIHsKCmVudW0gU2VudGluZWxUYWcgeyBTZW50aW5lbCB9OwoKdGVtcGxhdGU8dHlwZW5h
bWUgVD4KY2xhc3MgQmFzaWNSYXdTZW50aW5lbE5vZGUgewpwdWJsaWM6CiAgICBCYXNpY1Jhd1Nl
bnRpbmVsTm9kZShTZW50aW5lbFRhZykKICAgICAgICA6IG1fbmV4dCgwKQogICAgICAgICwgbV9w
cmV2KDApCiAgICB7CiAgICB9CgogICAgQmFzaWNSYXdTZW50aW5lbE5vZGUoKQogICAgICAgIDog
bV9uZXh0KDApCiAgICAgICAgLCBtX3ByZXYoMCkKICAgIHsKICAgIH0KCiAgICB2b2lkIHNldFBy
ZXYoQmFzaWNSYXdTZW50aW5lbE5vZGUqIHByZXYpIHsgbV9wcmV2ID0gcHJldjsgfQogICAgdm9p
ZCBzZXROZXh0KEJhc2ljUmF3U2VudGluZWxOb2RlKiBuZXh0KSB7IG1fbmV4dCA9IG5leHQ7IH0K
CiAgICBUKiBwcmV2KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fcHJldik7IH0KICAgIFQq
IG5leHQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9uZXh0KTsgfQoKICAgIGJvb2wgaXNP
bkxpc3QoKSBjb25zdAogICAgewogICAgICAgIGRvIGlmICghKCEhbV9wcmV2ID09ICEhbV9uZXh0
KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oIiwgNjcsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICIhIW1fcHJldiA9PSAhIW1fbmV4dCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuICEhbV9wcmV2OwogICAgfQoKICAg
IHZvaWQgcmVtb3ZlKCk7Cgpwcml2YXRlOgogICAgQmFzaWNSYXdTZW50aW5lbE5vZGUqIG1fbmV4
dDsKICAgIEJhc2ljUmF3U2VudGluZWxOb2RlKiBtX3ByZXY7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUmF3Tm9kZSA9IFQ+IGNsYXNzIFNlbnRpbmVsTGlua2VkTGlzdCB7CnB1
YmxpYzoKICAgIHR5cGVkZWYgVCogaXRlcmF0b3I7CgogICAgU2VudGluZWxMaW5rZWRMaXN0KCk7
CgogICAgdm9pZCBwdXNoKFQqKTsKICAgIHN0YXRpYyB2b2lkIHJlbW92ZShUKik7CgogICAgaXRl
cmF0b3IgYmVnaW4oKTsKICAgIGl0ZXJhdG9yIGVuZCgpOwoKcHJpdmF0ZToKICAgIFJhd05vZGUg
bV9oZWFkU2VudGluZWw7CiAgICBSYXdOb2RlIG1fdGFpbFNlbnRpbmVsOwp9OwoKdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHZvaWQgQmFzaWNSYXdTZW50aW5lbE5vZGU8VD46OnJlbW92ZSgpCnsKICAg
IFNlbnRpbmVsTGlua2VkTGlzdDxULCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxUPiA+OjpyZW1vdmUo
c3RhdGljX2Nhc3Q8VCo+KHRoaXMpKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFJhd05vZGU+IGlubGluZSBTZW50aW5lbExpbmtlZExpc3Q8VCwgUmF3Tm9kZT46OlNlbnRpbmVs
TGlua2VkTGlzdCgpCiAgICA6IG1faGVhZFNlbnRpbmVsKFNlbnRpbmVsKQogICAgLCBtX3RhaWxT
ZW50aW5lbChTZW50aW5lbCkKewogICAgbV9oZWFkU2VudGluZWwuc2V0TmV4dCgmbV90YWlsU2Vu
dGluZWwpOwogICAgbV9oZWFkU2VudGluZWwuc2V0UHJldigwKTsKCiAgICBtX3RhaWxTZW50aW5l
bC5zZXRQcmV2KCZtX2hlYWRTZW50aW5lbCk7CiAgICBtX3RhaWxTZW50aW5lbC5zZXROZXh0KDAp
Owp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUmF3Tm9kZT4gaW5saW5lIHR5cGVu
YW1lIFNlbnRpbmVsTGlua2VkTGlzdDxULCBSYXdOb2RlPjo6aXRlcmF0b3IgU2VudGluZWxMaW5r
ZWRMaXN0PFQsIFJhd05vZGU+OjpiZWdpbigpCnsKICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4o
bV9oZWFkU2VudGluZWwubmV4dCgpKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFJhd05vZGU+IGlubGluZSB0eXBlbmFtZSBTZW50aW5lbExpbmtlZExpc3Q8VCwgUmF3Tm9kZT46
Oml0ZXJhdG9yIFNlbnRpbmVsTGlua2VkTGlzdDxULCBSYXdOb2RlPjo6ZW5kKCkKewogICAgcmV0
dXJuIHN0YXRpY19jYXN0PFQqPigmbV90YWlsU2VudGluZWwpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUmF3Tm9kZT4gaW5saW5lIHZvaWQgU2VudGluZWxMaW5rZWRMaXN0PFQs
IFJhd05vZGU+OjpwdXNoKFQqIG5vZGUpCnsKICAgIGRvIGlmICghKG5vZGUpKSB7IFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2Vu
dGluZWxMaW5rZWRMaXN0LmgiLCAxMjMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJub2RlIik7IGRv
IHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0g
MDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIGRv
IGlmICghKCFub2RlLT5wcmV2KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgiLCAxMjQs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbm9kZS0+cHJldigpIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIGRvIGlmICghKCFub2RlLT5u
ZXh0KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgiLCAxMjUsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sICIhbm9kZS0+bmV4dCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50
ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsKCiAgICBSYXdOb2RlKiBwcmV2ID0gJm1faGVhZFNlbnRpbmVs
OwogICAgUmF3Tm9kZSogbmV4dCA9IG1faGVhZFNlbnRpbmVsLm5leHQoKTsKCiAgICBub2RlLT5z
ZXRQcmV2KHByZXYpOwogICAgbm9kZS0+c2V0TmV4dChuZXh0KTsKCiAgICBwcmV2LT5zZXROZXh0
KG5vZGUpOwogICAgbmV4dC0+c2V0UHJldihub2RlKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFJhd05vZGU+IGlubGluZSB2b2lkIFNlbnRpbmVsTGlua2VkTGlzdDxULCBSYXdO
b2RlPjo6cmVtb3ZlKFQqIG5vZGUpCnsKICAgIGRvIGlmICghKG5vZGUpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGlu
ZWxMaW5rZWRMaXN0LmgiLCAxMzksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJub2RlIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIGRvIGlm
ICghKCEhbm9kZS0+cHJldigpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oIiwgMTQwLCBf
X1BSRVRUWV9GVU5DVElPTl9fLCAiISFub2RlLT5wcmV2KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgZG8gaWYgKCEoISFub2RlLT5u
ZXh0KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgiLCAxNDEsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sICIhIW5vZGUtPm5leHQoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CgogICAgUmF3Tm9kZSogcHJldiA9IG5vZGUtPnByZXYoKTsK
ICAgIFJhd05vZGUqIG5leHQgPSBub2RlLT5uZXh0KCk7CgogICAgcHJldi0+c2V0TmV4dChuZXh0
KTsKICAgIG5leHQtPnNldFByZXYocHJldik7CgogICAgbm9kZS0+c2V0UHJldigwKTsKICAgIG5v
ZGUtPnNldE5leHQoMCk7Cn0KCn0KCnVzaW5nIFdURjo6QmFzaWNSYXdTZW50aW5lbE5vZGU7CnVz
aW5nIFdURjo6U2VudGluZWxMaW5rZWRMaXN0OwojIDMzICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1NpbmdseUxpbmtlZExpc3QuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1NpbmdseUxpbmtlZExpc3QuaCIKI2RlZmluZSBTaW5nbHlMaW5r
ZWRMaXN0X2ggCgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBjbGFz
cyBTaW5nbHlMaW5rZWRMaXN0IHsKcHVibGljOgogICAgU2luZ2x5TGlua2VkTGlzdCgpOwoKICAg
IGJvb2wgaXNFbXB0eSgpOwoKICAgIHZvaWQgcHVzaChOb2RlKik7CiAgICBOb2RlKiBwb3AoKTsK
CnByaXZhdGU6CiAgICBOb2RlKiBtX2hlYWQ7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4g
aW5saW5lIFNpbmdseUxpbmtlZExpc3Q8Tm9kZT46OlNpbmdseUxpbmtlZExpc3QoKQogICAgOiBt
X2hlYWQoMCkKewp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIGJvb2wgU2luZ2x5
TGlua2VkTGlzdDxOb2RlPjo6aXNFbXB0eSgpCnsKICAgIHJldHVybiAhbV9oZWFkOwp9Cgp0ZW1w
bGF0ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIHZvaWQgU2luZ2x5TGlua2VkTGlzdDxOb2RlPjo6
cHVzaChOb2RlKiBub2RlKQp7CiAgICBkbyBpZiAoIShub2RlKSkgeyBXVEZSZXBvcnRBc3NlcnRp
b25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NpbmdseUxpbmtl
ZExpc3QuaCIsIDU2LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibm9kZSIpOyBkbyB7IFdURlJlcG9y
dEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgq
KSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICBub2RlLT5zZXROZXh0
KG1faGVhZCk7CiAgICBtX2hlYWQgPSBub2RlOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4g
aW5saW5lIE5vZGUqIFNpbmdseUxpbmtlZExpc3Q8Tm9kZT46OnBvcCgpCnsKICAgIE5vZGUqIHRt
cCA9IG1faGVhZDsKICAgIG1faGVhZCA9IG1faGVhZC0+bmV4dCgpOwogICAgcmV0dXJuIHRtcDsK
fQoKfQoKdXNpbmcgV1RGOjpTaW5nbHlMaW5rZWRMaXN0OwojIDM0ICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmgiIDIKCm5hbWVzcGFjZSBKU0MgewoKY2xh
c3MgSGFuZGxlSGVhcDsKY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwpjbGFzcyBKU0dsb2JhbERhdGE7
CmNsYXNzIEpTVmFsdWU7CmNsYXNzIFNsb3RWaXNpdG9yOwoKY2xhc3MgV2Vha0hhbmRsZU93bmVy
IHsKcHVibGljOgogICAgdmlydHVhbCB+V2Vha0hhbmRsZU93bmVyKCk7CiAgICB2aXJ0dWFsIGJv
b2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250
ZXh0LCBTbG90VmlzaXRvciYpOwogICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtu
b3duPiwgdm9pZCogY29udGV4dCk7Cn07CgpjbGFzcyBIYW5kbGVIZWFwIHsKcHVibGljOgogICAg
c3RhdGljIEhhbmRsZUhlYXAqIGhlYXBGb3IoSGFuZGxlU2xvdCk7CgogICAgSGFuZGxlSGVhcChK
U0dsb2JhbERhdGEqKTsKCiAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKTsKCiAgICBIYW5k
bGVTbG90IGFsbG9jYXRlKCk7CiAgICB2b2lkIGRlYWxsb2NhdGUoSGFuZGxlU2xvdCk7CgogICAg
dm9pZCBtYWtlV2VhayhIYW5kbGVTbG90LCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29u
dGV4dCA9IDApOwogICAgSGFuZGxlU2xvdCBjb3B5V2VhayhIYW5kbGVTbG90KTsKCiAgICB2b2lk
IHZpc2l0U3Ryb25nSGFuZGxlcyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgIHZvaWQgdmlzaXRXZWFr
SGFuZGxlcyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgIHZvaWQgZmluYWxpemVXZWFrSGFuZGxlcygp
OwoKICAgIHZvaWQgd3JpdGVCYXJyaWVyKEhhbmRsZVNsb3QsIGNvbnN0IEpTVmFsdWUmKTsKCgog
ICAgYm9vbCBoYXNXZWFrT3duZXIoSGFuZGxlU2xvdCwgV2Vha0hhbmRsZU93bmVyKik7CiAgICBi
b29sIGhhc0ZpbmFsaXplcihIYW5kbGVTbG90KTsKCgogICAgdW5zaWduZWQgcHJvdGVjdGVkR2xv
YmFsT2JqZWN0Q291bnQoKTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZv
ckVhY2hTdHJvbmdIYW5kbGUoRnVuY3RvciYsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+
JiBza2lwU2V0KTsKCnByaXZhdGU6CiAgICBjbGFzcyBOb2RlIHsKICAgIHB1YmxpYzoKICAgICAg
ICBOb2RlKFdURjo6U2VudGluZWxUYWcpOwogICAgICAgIE5vZGUoSGFuZGxlSGVhcCopOwoKICAg
ICAgICBIYW5kbGVTbG90IHNsb3QoKTsKICAgICAgICBIYW5kbGVIZWFwKiBoYW5kbGVIZWFwKCk7
CgogICAgICAgIHZvaWQgbWFrZVdlYWsoV2Vha0hhbmRsZU93bmVyKiwgdm9pZCogY29udGV4dCk7
CiAgICAgICAgYm9vbCBpc1dlYWsoKTsKCiAgICAgICAgV2Vha0hhbmRsZU93bmVyKiB3ZWFrT3du
ZXIoKTsKICAgICAgICB2b2lkKiB3ZWFrT3duZXJDb250ZXh0KCk7CgogICAgICAgIHZvaWQgc2V0
UHJldihOb2RlKik7CiAgICAgICAgTm9kZSogcHJldigpOwoKICAgICAgICB2b2lkIHNldE5leHQo
Tm9kZSopOwogICAgICAgIE5vZGUqIG5leHQoKTsKCiAgICBwcml2YXRlOgogICAgICAgIFdlYWtI
YW5kbGVPd25lciogZW1wdHlXZWFrT3duZXIoKTsKCiAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwog
ICAgICAgIEhhbmRsZUhlYXAqIG1faGFuZGxlSGVhcDsKICAgICAgICBXZWFrSGFuZGxlT3duZXIq
IG1fd2Vha093bmVyOwogICAgICAgIHZvaWQqIG1fd2Vha093bmVyQ29udGV4dDsKICAgICAgICBO
b2RlKiBtX3ByZXY7CiAgICAgICAgTm9kZSogbV9uZXh0OwogICAgfTsKCiAgICBzdGF0aWMgSGFu
ZGxlU2xvdCB0b0hhbmRsZShOb2RlKik7CiAgICBzdGF0aWMgTm9kZSogdG9Ob2RlKEhhbmRsZVNs
b3QpOwoKICAgIHZvaWQgZ3JvdygpOwoKCiAgICBib29sIGlzVmFsaWRXZWFrTm9kZShOb2RlKik7
CiAgICBib29sIGlzTGl2ZU5vZGUoTm9kZSopOwoKCiAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFs
RGF0YTsKICAgIEJsb2NrU3RhY2s8Tm9kZT4gbV9ibG9ja1N0YWNrOwoKICAgIFNlbnRpbmVsTGlu
a2VkTGlzdDxOb2RlPiBtX3N0cm9uZ0xpc3Q7CiAgICBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT4g
bV93ZWFrTGlzdDsKICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPiBtX2ltbWVkaWF0ZUxpc3Q7
CiAgICBTaW5nbHlMaW5rZWRMaXN0PE5vZGU+IG1fZnJlZUxpc3Q7CiAgICBOb2RlKiBtX25leHRU
b0ZpbmFsaXplOwp9OwoKaW5saW5lIEhhbmRsZUhlYXAqIEhhbmRsZUhlYXA6OmhlYXBGb3IoSGFu
ZGxlU2xvdCBoYW5kbGUpCnsKICAgIHJldHVybiB0b05vZGUoaGFuZGxlKS0+aGFuZGxlSGVhcCgp
Owp9CgppbmxpbmUgSlNHbG9iYWxEYXRhKiBIYW5kbGVIZWFwOjpnbG9iYWxEYXRhKCkKewogICAg
cmV0dXJuIG1fZ2xvYmFsRGF0YTsKfQoKaW5saW5lIEhhbmRsZVNsb3QgSGFuZGxlSGVhcDo6dG9I
YW5kbGUoTm9kZSogbm9kZSkKewogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SGFuZGxlU2xv
dD4obm9kZSk7Cn0KCmlubGluZSBIYW5kbGVIZWFwOjpOb2RlKiBIYW5kbGVIZWFwOjp0b05vZGUo
SGFuZGxlU2xvdCBoYW5kbGUpCnsKICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE5vZGUqPiho
YW5kbGUpOwp9CgppbmxpbmUgSGFuZGxlU2xvdCBIYW5kbGVIZWFwOjphbGxvY2F0ZSgpCnsKCgog
ICAgaWYgKG1fbmV4dFRvRmluYWxpemUpCiAgICAgICAgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2Uo
KTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9
IHdoaWxlIChmYWxzZSk7CiAgICBpZiAobV9mcmVlTGlzdC5pc0VtcHR5KCkpCiAgICAgICAgZ3Jv
dygpOwoKICAgIE5vZGUqIG5vZGUgPSBtX2ZyZWVMaXN0LnBvcCgpOwogICAgbmV3IChub2RlKSBO
b2RlKHRoaXMpOwogICAgbV9pbW1lZGlhdGVMaXN0LnB1c2gobm9kZSk7CiAgICByZXR1cm4gdG9I
YW5kbGUobm9kZSk7Cn0KCmlubGluZSB2b2lkIEhhbmRsZUhlYXA6OmRlYWxsb2NhdGUoSGFuZGxl
U2xvdCBoYW5kbGUpCnsKICAgIE5vZGUqIG5vZGUgPSB0b05vZGUoaGFuZGxlKTsKICAgIGlmIChu
b2RlID09IG1fbmV4dFRvRmluYWxpemUpIHsKICAgICAgICBkbyBpZiAoIShtX25leHRUb0ZpbmFs
aXplLT5uZXh0KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaCIsIDE3MCwgX19QUkVUVFlfRlVOQ1RJ
T05fXywgIm1fbmV4dFRvRmluYWxpemUtPm5leHQoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFj
ZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7
IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgbV9uZXh0VG9GaW5hbGl6ZSA9
IG1fbmV4dFRvRmluYWxpemUtPm5leHQoKTsKICAgIH0KCiAgICBTZW50aW5lbExpbmtlZExpc3Q8
Tm9kZT46OnJlbW92ZShub2RlKTsKICAgIG1fZnJlZUxpc3QucHVzaChub2RlKTsKfQoKaW5saW5l
IEhhbmRsZVNsb3QgSGFuZGxlSGVhcDo6Y29weVdlYWsoSGFuZGxlU2xvdCBvdGhlcikKewogICAg
Tm9kZSogbm9kZSA9IHRvTm9kZShhbGxvY2F0ZSgpKTsKICAgIG5vZGUtPm1ha2VXZWFrKHRvTm9k
ZShvdGhlciktPndlYWtPd25lcigpLCB0b05vZGUob3RoZXIpLT53ZWFrT3duZXJDb250ZXh0KCkp
OwogICAgd3JpdGVCYXJyaWVyKG5vZGUtPnNsb3QoKSwgKm90aGVyKTsKICAgICpub2RlLT5zbG90
KCkgPSAqb3RoZXI7CiAgICByZXR1cm4gdG9IYW5kbGUobm9kZSk7Cn0KCmlubGluZSB2b2lkIEhh
bmRsZUhlYXA6Om1ha2VXZWFrKEhhbmRsZVNsb3QgaGFuZGxlLCBXZWFrSGFuZGxlT3duZXIqIHdl
YWtPd25lciwgdm9pZCogY29udGV4dCkKewoKCiAgICBpZiAobV9uZXh0VG9GaW5hbGl6ZSkKICAg
ICAgICBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFk
YmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsKICAgIE5vZGUqIG5v
ZGUgPSB0b05vZGUoaGFuZGxlKTsKICAgIG5vZGUtPm1ha2VXZWFrKHdlYWtPd25lciwgY29udGV4
dCk7CgogICAgU2VudGluZWxMaW5rZWRMaXN0PE5vZGU+OjpyZW1vdmUobm9kZSk7CiAgICBpZiAo
ISpoYW5kbGUgfHwgIWhhbmRsZS0+aXNDZWxsKCkpIHsKICAgICAgICBtX2ltbWVkaWF0ZUxpc3Qu
cHVzaChub2RlKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbV93ZWFrTGlzdC5wdXNoKG5v
ZGUpOwp9CgoKaW5saW5lIGJvb2wgSGFuZGxlSGVhcDo6aGFzV2Vha093bmVyKEhhbmRsZVNsb3Qg
aGFuZGxlLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtPd25lcikKewogICAgcmV0dXJuIHRvTm9kZSho
YW5kbGUpLT53ZWFrT3duZXIoKSA9PSB3ZWFrT3duZXI7Cn0KCmlubGluZSBib29sIEhhbmRsZUhl
YXA6Omhhc0ZpbmFsaXplcihIYW5kbGVTbG90IGhhbmRsZSkKewogICAgcmV0dXJuIHRvTm9kZSho
YW5kbGUpLT53ZWFrT3duZXIoKTsKfQoKCmlubGluZSBIYW5kbGVIZWFwOjpOb2RlOjpOb2RlKEhh
bmRsZUhlYXAqIGhhbmRsZUhlYXApCiAgICA6IG1faGFuZGxlSGVhcChoYW5kbGVIZWFwKQogICAg
LCBtX3dlYWtPd25lcigwKQogICAgLCBtX3dlYWtPd25lckNvbnRleHQoMCkKICAgICwgbV9wcmV2
KDApCiAgICAsIG1fbmV4dCgwKQp7Cn0KCmlubGluZSBIYW5kbGVIZWFwOjpOb2RlOjpOb2RlKFdU
Rjo6U2VudGluZWxUYWcpCiAgICA6IG1faGFuZGxlSGVhcCgwKQogICAgLCBtX3dlYWtPd25lcigw
KQogICAgLCBtX3dlYWtPd25lckNvbnRleHQoMCkKICAgICwgbV9wcmV2KDApCiAgICAsIG1fbmV4
dCgwKQp7Cn0KCmlubGluZSBIYW5kbGVTbG90IEhhbmRsZUhlYXA6Ok5vZGU6OnNsb3QoKQp7CiAg
ICByZXR1cm4gJm1fdmFsdWU7Cn0KCmlubGluZSBIYW5kbGVIZWFwKiBIYW5kbGVIZWFwOjpOb2Rl
OjpoYW5kbGVIZWFwKCkKewogICAgcmV0dXJuIG1faGFuZGxlSGVhcDsKfQoKaW5saW5lIHZvaWQg
SGFuZGxlSGVhcDo6Tm9kZTo6bWFrZVdlYWsoV2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZv
aWQqIGNvbnRleHQpCnsKICAgIG1fd2Vha093bmVyID0gd2Vha093bmVyID8gd2Vha093bmVyIDog
ZW1wdHlXZWFrT3duZXIoKTsKICAgIG1fd2Vha093bmVyQ29udGV4dCA9IGNvbnRleHQ7Cn0KCmlu
bGluZSBib29sIEhhbmRsZUhlYXA6Ok5vZGU6OmlzV2VhaygpCnsKICAgIHJldHVybiBtX3dlYWtP
d25lcjsKfQoKaW5saW5lIFdlYWtIYW5kbGVPd25lciogSGFuZGxlSGVhcDo6Tm9kZTo6d2Vha093
bmVyKCkKewogICAgcmV0dXJuIG1fd2Vha093bmVyID09IGVtcHR5V2Vha093bmVyKCkgPyAwIDog
bV93ZWFrT3duZXI7Cn0KCmlubGluZSB2b2lkKiBIYW5kbGVIZWFwOjpOb2RlOjp3ZWFrT3duZXJD
b250ZXh0KCkKewogICAgZG8gaWYgKCEod2Vha093bmVyKCkpKSB7IFdURlJlcG9ydEFzc2VydGlv
bkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAu
aCIsIDI2MywgX19QUkVUVFlfRlVOQ1RJT05fXywgIndlYWtPd25lcigpIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIHJldHVybiBtX3dl
YWtPd25lckNvbnRleHQ7Cn0KCmlubGluZSB2b2lkIEhhbmRsZUhlYXA6Ok5vZGU6OnNldFByZXYo
Tm9kZSogcHJldikKewogICAgbV9wcmV2ID0gcHJldjsKfQoKaW5saW5lIEhhbmRsZUhlYXA6Ok5v
ZGUqIEhhbmRsZUhlYXA6Ok5vZGU6OnByZXYoKQp7CiAgICByZXR1cm4gbV9wcmV2Owp9Cgppbmxp
bmUgdm9pZCBIYW5kbGVIZWFwOjpOb2RlOjpzZXROZXh0KE5vZGUqIG5leHQpCnsKICAgIG1fbmV4
dCA9IG5leHQ7Cn0KCmlubGluZSBIYW5kbGVIZWFwOjpOb2RlKiBIYW5kbGVIZWFwOjpOb2RlOjpu
ZXh0KCkKewogICAgcmV0dXJuIG1fbmV4dDsKfQoKCgppbmxpbmUgV2Vha0hhbmRsZU93bmVyKiBI
YW5kbGVIZWFwOjpOb2RlOjplbXB0eVdlYWtPd25lcigpCnsKICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdlYWtIYW5kbGVPd25lcio+KC0xKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gdm9pZCBIYW5kbGVIZWFwOjpmb3JFYWNoU3Ryb25nSGFuZGxlKEZ1bmN0b3ImIGZ1bmN0b3Is
IGNvbnN0IEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+JiBza2lwU2V0KQp7CiAgICBOb2RlKiBlbmQg
PSBtX3N0cm9uZ0xpc3QuZW5kKCk7CiAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX3N0cm9uZ0xpc3Qu
YmVnaW4oKTsgbm9kZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5uZXh0KCkpIHsKICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gKm5vZGUtPnNsb3QoKTsKICAgICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5p
c0NlbGwoKSkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgaWYgKHNraXBTZXQuY29udGFp
bnModmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICBmdW5jdG9y
KHZhbHVlLmFzQ2VsbCgpKTsKICAgIH0KfQoKfQojIDI2ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IYW5kbGVTdGFjay5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmgiCiNkZWZpbmUgSGFuZGxlU3RhY2tfaCAKCiMgMSAiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgiIDEKIyAzMCAiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suaCIgMgoKCgojIDEg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVW51c2VkUGFyYW0uaCIgMQojIDM0
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5oIiAyCgpu
YW1lc3BhY2UgSlNDIHsKCmNsYXNzIExvY2FsU2NvcGU7CmNsYXNzIEhlYXBSb290VmlzaXRvcjsK
CmNsYXNzIEhhbmRsZVN0YWNrIHsKcHVibGljOgogICAgY2xhc3MgRnJhbWUgewogICAgcHVibGlj
OgogICAgICAgIEhhbmRsZVNsb3QgbV9uZXh0OwogICAgICAgIEhhbmRsZVNsb3QgbV9lbmQ7CiAg
ICB9OwoKICAgIEhhbmRsZVN0YWNrKCk7CgogICAgdm9pZCBlbnRlclNjb3BlKEZyYW1lJik7CiAg
ICB2b2lkIGxlYXZlU2NvcGUoRnJhbWUmKTsKCiAgICBIYW5kbGVTbG90IHB1c2goKTsKCiAgICB2
b2lkIHZpc2l0KEhlYXBSb290VmlzaXRvciYpOwoKcHJpdmF0ZToKICAgIHZvaWQgZ3JvdygpOwog
ICAgdm9pZCB6YXBUbyhGcmFtZSYpOwogICAgSGFuZGxlU2xvdCBmaW5kRmlyc3RBZnRlcihIYW5k
bGVTbG90KTsKCgogICAgc2l6ZV90IG1fc2NvcGVEZXB0aDsKCiAgICBCbG9ja1N0YWNrPEpTVmFs
dWU+IG1fYmxvY2tTdGFjazsKICAgIEZyYW1lIG1fZnJhbWU7Cn07CgppbmxpbmUgdm9pZCBIYW5k
bGVTdGFjazo6ZW50ZXJTY29wZShGcmFtZSYgbGFzdEZyYW1lKQp7CgogICAgKyttX3Njb3BlRGVw
dGg7CgoKICAgIGxhc3RGcmFtZSA9IG1fZnJhbWU7Cn0KCgoKaW5saW5lIHZvaWQgSGFuZGxlU3Rh
Y2s6OnphcFRvKEZyYW1lJiBsYXN0RnJhbWUpCnsKCgoKICAgIGNvbnN0IFZlY3RvcjxIYW5kbGVT
bG90PiYgYmxvY2tzID0gbV9ibG9ja1N0YWNrLmJsb2NrcygpOwoKICAgIGlmIChsYXN0RnJhbWUu
bV9lbmQgIT0gbV9mcmFtZS5tX2VuZCkgewogICAgICAgIGludCBpID0gYmxvY2tzLnNpemUoKSAt
IDE7CiAgICAgICAgZm9yICggOyBibG9ja3NbaV0gKyBtX2Jsb2NrU3RhY2suYmxvY2tMZW5ndGgg
IT0gbGFzdEZyYW1lLm1fZW5kOyAtLWkpIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IG1fYmxv
Y2tTdGFjay5ibG9ja0xlbmd0aCAtIDE7IGogPj0gMDsgLS1qKQogICAgICAgICAgICAgICAgYmxv
Y2tzW2ldW2pdID0gSlNWYWx1ZSgpOwogICAgICAgIH0KCiAgICAgICAgZm9yIChIYW5kbGVTbG90
IGl0ID0gYmxvY2tzW2ldICsgbV9ibG9ja1N0YWNrLmJsb2NrTGVuZ3RoIC0gMTsgaXQgIT0gbGFz
dEZyYW1lLm1fbmV4dCAtIDE7IC0taXQpCiAgICAgICAgICAgICppdCA9IEpTVmFsdWUoKTsKCiAg
ICAgICAgcmV0dXJuOwogICAgfQoKICAgIGZvciAoSGFuZGxlU2xvdCBpdCA9IG1fZnJhbWUubV9u
ZXh0IC0gMTsgaXQgIT0gbGFzdEZyYW1lLm1fbmV4dCAtIDE7IC0taXQpCiAgICAgICAgKml0ID0g
SlNWYWx1ZSgpOwoKfQoKaW5saW5lIHZvaWQgSGFuZGxlU3RhY2s6OmxlYXZlU2NvcGUoRnJhbWUm
IGxhc3RGcmFtZSkKewoKICAgIC0tbV9zY29wZURlcHRoOwoKCiAgICB6YXBUbyhsYXN0RnJhbWUp
OwoKICAgIGlmIChsYXN0RnJhbWUubV9lbmQgIT0gbV9mcmFtZS5tX2VuZCkKICAgICAgICBtX2Js
b2NrU3RhY2suc2hyaW5rKGxhc3RGcmFtZS5tX2VuZCk7CgogICAgbV9mcmFtZSA9IGxhc3RGcmFt
ZTsKfQoKaW5saW5lIEhhbmRsZVNsb3QgSGFuZGxlU3RhY2s6OnB1c2goKQp7CiAgICBkbyBpZiAo
IShtX3Njb3BlRGVwdGgpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmgiLCAxMjEsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJtX3Njb3BlRGVwdGgiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihp
bnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgaWYgKG1fZnJhbWUubV9uZXh0ID09IG1fZnJhbWUu
bV9lbmQpCiAgICAgICAgZ3JvdygpOwogICAgcmV0dXJuIG1fZnJhbWUubV9uZXh0Kys7Cn0KCn0K
IyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIiAyCiMgMSAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCIgMQojIDIz
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIgojZGVm
aW5lIE1hcmtlZEJsb2NrX2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvQml0bWFwLmgiIDEKIyAyMCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9C
aXRtYXAuaCIKI2RlZmluZSBCaXRtYXBfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9GaXhlZEFycmF5LmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9GaXhlZEFycmF5LmgiCiNkZWZpbmUgRml4ZWRBcnJheV9oIAoKCgpuYW1lc3Bh
Y2UgV1RGIHsKCnRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2l6ZT4gY2xhc3MgRml4ZWRB
cnJheSB7CnB1YmxpYzoKICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpCiAgICB7CiAgICAgICAg
ZG8gaWYgKCEoaSA8IFNpemUpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRml4ZWRBcnJheS5oIiwgMzcsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJpIDwgU2l6ZSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZh
bHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG1fZGF0YVtpXTsKICAgIH0KCiAgICBj
b25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdAogICAgewogICAgICAgIGRvIGlmICgh
KGkgPCBTaXplKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0ZpeGVkQXJyYXkuaCIsIDQzLCBfX1BSRVRUWV9GVU5DVElPTl9f
LCAiaSA8IFNpemUiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIHJldHVybiBtX2RhdGFbaV07CiAgICB9CgogICAgVCogZGF0YSgp
IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBTaXpl
OyB9Cgpwcml2YXRlOgogICAgVCBtX2RhdGFbU2l6ZV07Cn07Cgp9Cgp1c2luZyBXVEY6OkZpeGVk
QXJyYXk7CiMgMjMgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0bWFwLmgi
IDIKCgoKCm5hbWVzcGFjZSBXVEYgewoKdGVtcGxhdGU8c2l6ZV90IHNpemU+CmNsYXNzIEJpdG1h
cCB7CnByaXZhdGU6CiAgICB0eXBlZGVmIHVpbnQzMl90IFdvcmRUeXBlOwoKcHVibGljOgogICAg
Qml0bWFwKCk7CgogICAgYm9vbCBnZXQoc2l6ZV90KSBjb25zdDsKICAgIHZvaWQgc2V0KHNpemVf
dCk7CiAgICBib29sIHRlc3RBbmRTZXQoc2l6ZV90KTsKICAgIGJvb2wgdGVzdEFuZENsZWFyKHNp
emVfdCk7CiAgICBzaXplX3QgbmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90KSBjb25zdDsKICAgIHZv
aWQgY2xlYXIoc2l6ZV90KTsKICAgIHZvaWQgY2xlYXJBbGwoKTsKICAgIGludDY0X3QgZmluZFJ1
bk9mWmVyb3Moc2l6ZV90KSBjb25zdDsKICAgIHNpemVfdCBjb3VudChzaXplX3QgPSAwKSBjb25z
dDsKICAgIHNpemVfdCBpc0VtcHR5KCkgY29uc3Q7CiAgICBzaXplX3QgaXNGdWxsKCkgY29uc3Q7
Cgpwcml2YXRlOgogICAgc3RhdGljIGNvbnN0IFdvcmRUeXBlIHdvcmRTaXplID0gc2l6ZW9mKFdv
cmRUeXBlKSAqIDg7CiAgICBzdGF0aWMgY29uc3QgV29yZFR5cGUgd29yZHMgPSAoc2l6ZSArIHdv
cmRTaXplIC0gMSkgLyB3b3JkU2l6ZTsKCgoKCgoKICAgIHN0YXRpYyBjb25zdCBXb3JkVHlwZSBv
bmUgPSAxOwoKICAgIEZpeGVkQXJyYXk8V29yZFR5cGUsIHdvcmRzPiBiaXRzOwp9OwoKdGVtcGxh
dGU8c2l6ZV90IHNpemU+CmlubGluZSBCaXRtYXA8c2l6ZT46OkJpdG1hcCgpCnsKICAgIGNsZWFy
QWxsKCk7Cn0KCnRlbXBsYXRlPHNpemVfdCBzaXplPgppbmxpbmUgYm9vbCBCaXRtYXA8c2l6ZT46
OmdldChzaXplX3QgbikgY29uc3QKewogICAgcmV0dXJuICEhKGJpdHNbbiAvIHdvcmRTaXplXSAm
IChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpKTsKfQoKdGVtcGxhdGU8c2l6ZV90IHNpemU+CmlubGlu
ZSB2b2lkIEJpdG1hcDxzaXplPjo6c2V0KHNpemVfdCBuKQp7CiAgICBiaXRzW24gLyB3b3JkU2l6
ZV0gfD0gKG9uZSA8PCAobiAlIHdvcmRTaXplKSk7Cn0KCnRlbXBsYXRlPHNpemVfdCBzaXplPgpp
bmxpbmUgYm9vbCBCaXRtYXA8c2l6ZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCnsKICAgIFdvcmRU
eXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICBzaXplX3QgaW5kZXggPSBuIC8g
d29yZFNpemU7CiAgICBib29sIHJlc3VsdCA9IGJpdHNbaW5kZXhdICYgbWFzazsKICAgIGJpdHNb
aW5kZXhdIHw9IG1hc2s7CiAgICByZXR1cm4gcmVzdWx0Owp9Cgp0ZW1wbGF0ZTxzaXplX3Qgc2l6
ZT4KaW5saW5lIGJvb2wgQml0bWFwPHNpemU+Ojp0ZXN0QW5kQ2xlYXIoc2l6ZV90IG4pCnsKICAg
IFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICBzaXplX3QgaW5kZXgg
PSBuIC8gd29yZFNpemU7CiAgICBib29sIHJlc3VsdCA9IGJpdHNbaW5kZXhdICYgbWFzazsKICAg
IGJpdHNbaW5kZXhdICY9IH5tYXNrOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGU8c2l6
ZV90IHNpemU+CmlubGluZSB2b2lkIEJpdG1hcDxzaXplPjo6Y2xlYXIoc2l6ZV90IG4pCnsKICAg
IGJpdHNbbiAvIHdvcmRTaXplXSAmPSB+KG9uZSA8PCAobiAlIHdvcmRTaXplKSk7Cn0KCnRlbXBs
YXRlPHNpemVfdCBzaXplPgppbmxpbmUgdm9pZCBCaXRtYXA8c2l6ZT46OmNsZWFyQWxsKCkKewog
ICAgbWVtc2V0KGJpdHMuZGF0YSgpLCAwLCBzaXplb2YoYml0cykpOwp9Cgp0ZW1wbGF0ZTxzaXpl
X3Qgc2l6ZT4KaW5saW5lIHNpemVfdCBCaXRtYXA8c2l6ZT46Om5leHRQb3NzaWJseVVuc2V0KHNp
emVfdCBzdGFydCkgY29uc3QKewogICAgaWYgKCF+Yml0c1tzdGFydCAvIHdvcmRTaXplXSkKICAg
ICAgICByZXR1cm4gKChzdGFydCAvIHdvcmRTaXplKSArIDEpICogd29yZFNpemU7CiAgICByZXR1
cm4gc3RhcnQgKyAxOwp9Cgp0ZW1wbGF0ZTxzaXplX3Qgc2l6ZT4KaW5saW5lIGludDY0X3QgQml0
bWFwPHNpemU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAp7CiAgICBp
ZiAoIXJ1bkxlbmd0aCkKICAgICAgICBydW5MZW5ndGggPSAxOwoKICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDw9IChzaXplIC0gcnVuTGVuZ3RoKSA7IGkrKykgewogICAgICAgIGJvb2wgZm91bmQg
PSB0cnVlOwogICAgICAgIGZvciAoc2l6ZV90IGogPSBpOyBqIDw9IChpICsgcnVuTGVuZ3RoIC0g
MSkgOyBqKyspIHsKICAgICAgICAgICAgaWYgKGdldChqKSkgewogICAgICAgICAgICAgICAgZm91
bmQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgICAgIGlmIChmb3VuZCkKICAgICAgICAgICAgcmV0dXJuIGk7CiAgICB9CiAgICByZXR1
cm4gLTE7Cn0KCnRlbXBsYXRlPHNpemVfdCBzaXplPgppbmxpbmUgc2l6ZV90IEJpdG1hcDxzaXpl
Pjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAp7CiAgICBzaXplX3QgcmVzdWx0ID0gMDsKICAg
IGZvciAoIDsgKHN0YXJ0ICUgd29yZFNpemUpOyArK3N0YXJ0KSB7CiAgICAgICAgaWYgKGdldChz
dGFydCkpCiAgICAgICAgICAgICsrcmVzdWx0OwogICAgfQogICAgZm9yIChzaXplX3QgaSA9IHN0
YXJ0IC8gd29yZFNpemU7IGkgPCB3b3JkczsgKytpKQogICAgICAgIHJlc3VsdCArPSBXVEY6OmJp
dENvdW50KGJpdHNbaV0pOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGU8c2l6ZV90IHNp
emU+CmlubGluZSBzaXplX3QgQml0bWFwPHNpemU+Ojppc0VtcHR5KCkgY29uc3QKewogICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgIGlmIChiaXRzW2ldKQogICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICByZXR1cm4gdHJ1ZTsKfQoKdGVtcGxhdGU8c2l6ZV90
IHNpemU+CmlubGluZSBzaXplX3QgQml0bWFwPHNpemU+Ojppc0Z1bGwoKSBjb25zdAp7CiAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgaWYgKH5iaXRzW2ldKQog
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICByZXR1cm4gdHJ1ZTsKfQoKfQojIDI2ICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIiAyCiMgMSAiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Eb3VibHlMaW5rZWRMaXN0LmgiIDEKIyAy
NyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Eb3VibHlMaW5rZWRMaXN0Lmgi
CiNkZWZpbmUgRG91Ymx5TGlua2VkTGlzdF9oIAoKbmFtZXNwYWNlIFdURiB7CgoKdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY2xhc3MgRG91Ymx5TGlua2VkTGlzdE5vZGUgewpwdWJsaWM6CiAgICBEb3Vi
bHlMaW5rZWRMaXN0Tm9kZSgpOwoKICAgIHZvaWQgc2V0UHJldihUKik7CiAgICB2b2lkIHNldE5l
eHQoVCopOwoKICAgIFQqIHByZXYoKSBjb25zdDsKICAgIFQqIG5leHQoKSBjb25zdDsKfTsKCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBEb3VibHlMaW5rZWRMaXN0Tm9kZTxUPjo6RG91Ymx5
TGlua2VkTGlzdE5vZGUoKQp7CiAgICBzZXRQcmV2KDApOwogICAgc2V0TmV4dCgwKTsKfQoKdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgRG91Ymx5TGlua2VkTGlzdE5vZGU8VD46OnNl
dFByZXYoVCogcHJldikKewogICAgc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLT5tX3ByZXYgPSBwcmV2
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxUPjo6c2V0TmV4dChUKiBuZXh0KQp7CiAgICBzdGF0aWNfY2FzdDxUKj4odGhpcyktPm1fbmV4
dCA9IG5leHQ7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBEb3VibHlMaW5rZWRM
aXN0Tm9kZTxUPjo6cHJldigpIGNvbnN0CnsKICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBU
Kj4odGhpcyktPm1fcHJldjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIERvdWJs
eUxpbmtlZExpc3ROb2RlPFQ+OjpuZXh0KCkgY29uc3QKewogICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IFQqPih0aGlzKS0+bV9uZXh0Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBE
b3VibHlMaW5rZWRMaXN0IHsKcHVibGljOgogICAgRG91Ymx5TGlua2VkTGlzdCgpOwoKICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OwogICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgIHZvaWQgY2xl
YXIoKTsKCiAgICBUKiBoZWFkKCkgY29uc3Q7CiAgICBUKiByZW1vdmVIZWFkKCk7CgogICAgdm9p
ZCBhcHBlbmQoVCopOwogICAgdm9pZCByZW1vdmUoVCopOwoKcHJpdmF0ZToKICAgIFQqIG1faGVh
ZDsKICAgIFQqIG1fdGFpbDsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBEb3VibHlM
aW5rZWRMaXN0PFQ+OjpEb3VibHlMaW5rZWRMaXN0KCkKICAgIDogbV9oZWFkKDApCiAgICAsIG1f
dGFpbCgwKQp7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIERvdWJseUxpbmtl
ZExpc3Q8VD46OmlzRW1wdHkoKSBjb25zdAp7CiAgICByZXR1cm4gIW1faGVhZDsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIHNpemVfdCBEb3VibHlMaW5rZWRMaXN0PFQ+OjpzaXplKCkg
Y29uc3QKewogICAgc2l6ZV90IHNpemUgPSAwOwogICAgZm9yIChUKiBub2RlID0gbV9oZWFkOyBu
b2RlOyBub2RlID0gbm9kZS0+bmV4dCgpKQogICAgICAgICsrc2l6ZTsKICAgIHJldHVybiBzaXpl
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBEb3VibHlMaW5rZWRMaXN0PFQ+
OjpjbGVhcigpCnsKICAgIG1faGVhZCA9IDA7CiAgICBtX3RhaWwgPSAwOwp9Cgp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgVCogRG91Ymx5TGlua2VkTGlzdDxUPjo6aGVhZCgpIGNvbnN0CnsK
ICAgIHJldHVybiBtX2hlYWQ7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIERv
dWJseUxpbmtlZExpc3Q8VD46OmFwcGVuZChUKiBub2RlKQp7CiAgICBpZiAoIW1fdGFpbCkgewog
ICAgICAgIGRvIGlmICghKCFtX2hlYWQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRG91Ymx5TGlua2VkTGlzdC5oIiwgMTIx
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIW1faGVhZCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFj
ZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7
IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgbV9oZWFkID0gbm9kZTsKICAg
ICAgICBtX3RhaWwgPSBub2RlOwogICAgICAgIG5vZGUtPnNldFByZXYoMCk7CiAgICAgICAgbm9k
ZS0+c2V0TmV4dCgwKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgZG8gaWYgKCEobV9oZWFk
KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0RvdWJseUxpbmtlZExpc3QuaCIsIDEyOSwgX19QUkVUVFlfRlVOQ1RJT05fXywg
Im1faGVhZCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3Qp
MHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGls
ZSAoMCk7CiAgICBtX3RhaWwtPnNldE5leHQobm9kZSk7CiAgICBub2RlLT5zZXRQcmV2KG1fdGFp
bCk7CiAgICBub2RlLT5zZXROZXh0KDApOwogICAgbV90YWlsID0gbm9kZTsKfQoKdGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgRG91Ymx5TGlua2VkTGlzdDxUPjo6cmVtb3ZlKFQqIG5v
ZGUpCnsKICAgIGlmIChub2RlLT5wcmV2KCkpIHsKICAgICAgICBkbyBpZiAoIShub2RlICE9IG1f
aGVhZCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9Eb3VibHlMaW5rZWRMaXN0LmgiLCAxMzksIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJub2RlICE9IG1faGVhZCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZh
bHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgbm9kZS0+cHJldigpLT5zZXROZXh0KG5vZGUtPm5l
eHQoKSk7CiAgICB9IGVsc2UgewogICAgICAgIGRvIGlmICghKG5vZGUgPT0gbV9oZWFkKSkgeyBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0RvdWJseUxpbmtlZExpc3QuaCIsIDE0MiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm5vZGUg
PT0gbV9oZWFkIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJf
dCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdo
aWxlICgwKTsKICAgICAgICBtX2hlYWQgPSBub2RlLT5uZXh0KCk7CiAgICB9CgogICAgaWYgKG5v
ZGUtPm5leHQoKSkgewogICAgICAgIGRvIGlmICghKG5vZGUgIT0gbV90YWlsKSkgeyBXVEZSZXBv
cnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Rv
dWJseUxpbmtlZExpc3QuaCIsIDE0NywgX19QUkVUVFlfRlVOQ1RJT05fXywgIm5vZGUgIT0gbV90
YWlsIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICBub2RlLT5uZXh0KCktPnNldFByZXYobm9kZS0+cHJldigpKTsKICAgIH0gZWxz
ZSB7CiAgICAgICAgZG8gaWYgKCEobm9kZSA9PSBtX3RhaWwpKSB7IFdURlJlcG9ydEFzc2VydGlv
bkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRG91Ymx5TGlua2Vk
TGlzdC5oIiwgMTUwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibm9kZSA9PSBtX3RhaWwiKTsgZG8g
eyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAw
OyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAg
IG1fdGFpbCA9IG5vZGUtPnByZXYoKTsKICAgIH0KfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIFQqIERvdWJseUxpbmtlZExpc3Q8VD46OnJlbW92ZUhlYWQoKQp7CiAgICBUKiBub2RlID0g
aGVhZCgpOwogICAgaWYgKG5vZGUpCiAgICAgICAgcmVtb3ZlKG5vZGUpOwogICAgcmV0dXJuIG5v
ZGU7Cn0KCn0KCnVzaW5nIFdURjo6RG91Ymx5TGlua2VkTGlzdE5vZGU7CnVzaW5nIFdURjo6RG91
Ymx5TGlua2VkTGlzdDsKIyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
SGFzaEZ1bmN0aW9ucy5oIiAxCiMgMjggIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmgiCiNkZWZpbmUgUGFnZUFsbG9j
YXRpb25BbGlnbmVkX2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
T1NBbGxvY2F0b3IuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L09TQWxsb2NhdG9yLmgiCiNkZWZpbmUgT1NBbGxvY2F0b3JfaCAKCgojIDEgIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVk1UYWdzLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9WTVRhZ3MuaCIKI2RlZmluZSBWTVRhZ3NfaCAKIyAzNiAiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9WTVRhZ3MuaCIKI2RlZmluZSBWTV9UQUdf
Rk9SX1RDTUFMTE9DX01FTU9SWSBWTV9NQUtFX1RBRyhWTV9NRU1PUllfVENNQUxMT0MpCgoKCgoK
I2RlZmluZSBWTV9UQUdfRk9SX0VYRUNVVEFCTEVBTExPQ0FUT1JfTUVNT1JZIFZNX01BS0VfVEFH
KFZNX01FTU9SWV9KQVZBU0NSSVBUX0pJVF9FWEVDVVRBQkxFX0FMTE9DQVRPUikKCgoKCgojZGVm
aW5lIFZNX1RBR19GT1JfUkVHSVNURVJGSUxFX01FTU9SWSBWTV9NQUtFX1RBRyhWTV9NRU1PUllf
SkFWQVNDUklQVF9KSVRfUkVHSVNURVJfRklMRSkKCgoKCgojZGVmaW5lIFZNX1RBR19GT1JfQ09M
TEVDVE9SX01FTU9SWSBWTV9NQUtFX1RBRyhWTV9NRU1PUllfSkFWQVNDUklQVF9DT1JFKQoKCgoK
CgoKI2RlZmluZSBWTV9UQUdfRk9SX1dFQkNPUkVfUFVSR0VBQkxFX01FTU9SWSBWTV9NQUtFX1RB
Ryg2OSkKIyAzMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRv
ci5oIiAyCgoKbmFtZXNwYWNlIFdURiB7CgpjbGFzcyBPU0FsbG9jYXRvciB7CnB1YmxpYzoKICAg
IGVudW0gVXNhZ2UgewogICAgICAgIFVua25vd25Vc2FnZSA9IC0xLAogICAgICAgIEZhc3RNYWxs
b2NQYWdlcyA9ICgoNTMpIDw8IDI0KSwKICAgICAgICBKU0dDSGVhcFBhZ2VzID0gKCg2MykgPDwg
MjQpLAogICAgICAgIEpTVk1TdGFja1BhZ2VzID0gKCg2NSkgPDwgMjQpLAogICAgICAgIEpTSklU
Q29kZVBhZ2VzID0gKCg2NCkgPDwgMjQpLAogICAgfTsKCgoKCiAgICBzdGF0aWMgdm9pZCogcmVz
ZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFi
bGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFn
ZXMgPSBmYWxzZSk7CiAgICBzdGF0aWMgdm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNp
emVfdCk7CgoKCgogICAgc3RhdGljIHZvaWQgY29tbWl0KHZvaWQqLCBzaXplX3QsIGJvb2wgd3Jp
dGFibGUsIGJvb2wgZXhlY3V0YWJsZSk7CiAgICBzdGF0aWMgdm9pZCBkZWNvbW1pdCh2b2lkKiwg
c2l6ZV90KTsKCgoKCiAgICBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3QsIFVz
YWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxl
ID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwogICAgc3RhdGljIHZv
aWQgZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKTsKCgoKCiAgICBz
dGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBj
b21taXRTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJv
b2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKICAgIHN0YXRpYyB2b2lkIGRlY29tbWl0QW5kUmVsZWFz
ZSh2b2lkKiByZWxlYXNlQmFzZSwgc2l6ZV90IHJlbGVhc2VTaXplLCB2b2lkKiBkZWNvbW1pdEJh
c2UsIHNpemVfdCBkZWNvbW1pdFNpemUpOwp9OwoKaW5saW5lIHZvaWQqIE9TQWxsb2NhdG9yOjpy
ZXNlcnZlQW5kQ29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVz
YWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUpCnsKICAgIHZvaWQqIGJh
c2UgPSByZXNlcnZlVW5jb21taXR0ZWQocmVzZXJ2ZVNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhl
Y3V0YWJsZSk7CiAgICBjb21taXQoYmFzZSwgY29tbWl0U2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFi
bGUpOwogICAgcmV0dXJuIGJhc2U7Cn0KCmlubGluZSB2b2lkIE9TQWxsb2NhdG9yOjpkZWNvbW1p
dEFuZFJlbGVhc2Uodm9pZCogcmVsZWFzZUJhc2UsIHNpemVfdCByZWxlYXNlU2l6ZSwgdm9pZCog
ZGVjb21taXRCYXNlLCBzaXplX3QgZGVjb21taXRTaXplKQp7CiAgICBkbyBpZiAoIShkZWNvbW1p
dEJhc2UgPj0gcmVsZWFzZUJhc2UgJiYgKHN0YXRpY19jYXN0PGNoYXIqPihkZWNvbW1pdEJhc2Up
ICsgZGVjb21taXRTaXplKSA8PSAoc3RhdGljX2Nhc3Q8Y2hhcio+KHJlbGVhc2VCYXNlKSArIHJl
bGVhc2VTaXplKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5oIiwgNzksIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJkZWNvbW1pdEJhc2UgPj0gcmVsZWFzZUJhc2UgJiYgKHN0YXRpY19jYXN0PGNoYXIqPihk
ZWNvbW1pdEJhc2UpICsgZGVjb21taXRTaXplKSA8PSAoc3RhdGljX2Nhc3Q8Y2hhcio+KHJlbGVh
c2VCYXNlKSArIHJlbGVhc2VTaXplKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CgoKCgoKCiAgICAodm9pZClkZWNvbW1pdEJhc2U7CiAgICAo
dm9pZClkZWNvbW1pdFNpemU7CgogICAgcmVsZWFzZURlY29tbWl0dGVkKHJlbGVhc2VCYXNlLCBy
ZWxlYXNlU2l6ZSk7Cn0KCmlubGluZSB2b2lkIE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVh
c2Uodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpCnsKICAgIGRlY29tbWl0QW5kUmVsZWFzZShiYXNl
LCBzaXplLCBiYXNlLCBzaXplKTsKfQoKfQoKdXNpbmcgV1RGOjpPU0FsbG9jYXRvcjsKIyAzMCAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQu
aCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFnZVJlc2VydmF0
aW9uLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlUmVz
ZXJ2YXRpb24uaCIKI2RlZmluZSBQYWdlUmVzZXJ2YXRpb25faCAKCiMgMSAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlvbi5oIiAxCiMgMjcgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb24uaCIKI2RlZmluZSBQYWdl
QWxsb2NhdGlvbl9oIAoKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGFnZUJsb2NrLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Q
YWdlQmxvY2suaCIKI2RlZmluZSBQYWdlQmxvY2tfaCAKCm5hbWVzcGFjZSBXVEYgewoKc2l6ZV90
IHBhZ2VTaXplKCk7CmlubGluZSBib29sIGlzUGFnZUFsaWduZWQodm9pZCogYWRkcmVzcykgeyBy
ZXR1cm4gIShyZWludGVycHJldF9jYXN0PGludHB0cl90PihhZGRyZXNzKSAmIChwYWdlU2l6ZSgp
IC0gMSkpOyB9CmlubGluZSBib29sIGlzUGFnZUFsaWduZWQoc2l6ZV90IHNpemUpIHsgcmV0dXJu
ICEoc2l6ZSAmIChwYWdlU2l6ZSgpIC0gMSkpOyB9CmlubGluZSBib29sIGlzUG93ZXJPZlR3byhz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gIShzaXplICYgKHNpemUgLSAxKSk7IH0KCmNsYXNzIFBhZ2VC
bG9jayB7CnB1YmxpYzoKICAgIFBhZ2VCbG9jaygpOwogICAgUGFnZUJsb2NrKGNvbnN0IFBhZ2VC
bG9jayYpOwogICAgUGFnZUJsb2NrKHZvaWQqLCBzaXplX3QsIGJvb2wgaGFzR3VhcmRQYWdlcyk7
CgogICAgdm9pZCogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KCiAgICBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gISFtX3JlYWxCYXNlOyB9CgogICAgYm9vbCBjb250YWlucyh2b2lkKiBjb250YWlu
ZWRCYXNlLCBzaXplX3QgY29udGFpbmVkU2l6ZSkKICAgIHsKICAgICAgICByZXR1cm4gY29udGFp
bmVkQmFzZSA+PSBtX2Jhc2UKICAgICAgICAgICAgJiYgKHN0YXRpY19jYXN0PGNoYXIqPihjb250
YWluZWRCYXNlKSArIGNvbnRhaW5lZFNpemUpIDw9IChzdGF0aWNfY2FzdDxjaGFyKj4obV9iYXNl
KSArIG1fc2l6ZSk7CiAgICB9Cgpwcml2YXRlOgogICAgdm9pZCogbV9yZWFsQmFzZTsKICAgIHZv
aWQqIG1fYmFzZTsKICAgIHNpemVfdCBtX3NpemU7Cn07CgppbmxpbmUgUGFnZUJsb2NrOjpQYWdl
QmxvY2soKQogICAgOiBtX3JlYWxCYXNlKDApCiAgICAsIG1fYmFzZSgwKQogICAgLCBtX3NpemUo
MCkKewp9CgppbmxpbmUgUGFnZUJsb2NrOjpQYWdlQmxvY2soY29uc3QgUGFnZUJsb2NrJiBvdGhl
cikKICAgIDogbV9yZWFsQmFzZShvdGhlci5tX3JlYWxCYXNlKQogICAgLCBtX2Jhc2Uob3RoZXIu
bV9iYXNlKQogICAgLCBtX3NpemUob3RoZXIubV9zaXplKQp7Cn0KCmlubGluZSBQYWdlQmxvY2s6
OlBhZ2VCbG9jayh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSwgYm9vbCBoYXNHdWFyZFBhZ2VzKQog
ICAgOiBtX3JlYWxCYXNlKGJhc2UpCiAgICAsIG1fYmFzZShzdGF0aWNfY2FzdDxjaGFyKj4oYmFz
ZSkgKyAoKGJhc2UgJiYgaGFzR3VhcmRQYWdlcykgPyBwYWdlU2l6ZSgpIDogMCkpCiAgICAsIG1f
c2l6ZShzaXplKQp7Cn0KCn0KCnVzaW5nIFdURjo6cGFnZVNpemU7CnVzaW5nIFdURjo6aXNQYWdl
QWxpZ25lZDsKdXNpbmcgV1RGOjppc1BhZ2VBbGlnbmVkOwp1c2luZyBXVEY6OmlzUG93ZXJPZlR3
bzsKIyAzMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlv
bi5oIiAyCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2gvdm1fbWFwLmgiIDEgMyA0CgojZGVm
aW5lIF92bV9tYXBfdXNlcl8gCgoKCgojIDEgIi91c3IvaW5jbHVkZS9tYWNoL25kci5oIiAxIDMg
NAojIDMzICIvdXNyL2luY2x1ZGUvbWFjaC9uZHIuaCIgMyA0CiNkZWZpbmUgX01BQ0hfTkRSX0hf
IAoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgdW5zaWduZWQgY2hhciBtaWdfdmVyczsKICAgIHVu
c2lnbmVkIGNoYXIgaWZfdmVyczsKICAgIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQxOwogICAgdW5z
aWduZWQgY2hhciBtaWdfZW5jb2Rpbmc7CiAgICB1bnNpZ25lZCBjaGFyIGludF9yZXA7CiAgICB1
bnNpZ25lZCBjaGFyIGNoYXJfcmVwOwogICAgdW5zaWduZWQgY2hhciBmbG9hdF9yZXA7CiAgICB1
bnNpZ25lZCBjaGFyIHJlc2VydmVkMjsKfSBORFJfcmVjb3JkX3Q7CgoKCgojZGVmaW5lIE5EUl9Q
Uk9UT0NPTF8yXzAgMAoKCgoKI2RlZmluZSBORFJfSU5UX0JJR19FTkRJQU4gMAojZGVmaW5lIE5E
Ul9JTlRfTElUVExFX0VORElBTiAxCiNkZWZpbmUgTkRSX0ZMT0FUX0lFRUUgMAojZGVmaW5lIE5E
Ul9GTE9BVF9WQVggMQojZGVmaW5lIE5EUl9GTE9BVF9DUkFZIDIKI2RlZmluZSBORFJfRkxPQVRf
SUJNIDMKI2RlZmluZSBORFJfQ0hBUl9BU0NJSSAwCiNkZWZpbmUgTkRSX0NIQVJfRUJDRElDIDEK
CmV4dGVybiBORFJfcmVjb3JkX3QgTkRSX3JlY29yZDsKCgoKCgoKI2RlZmluZSBfX05EUl9jb252
ZXJ0X18gMQoKCgojZGVmaW5lIF9fTkRSX2NvbnZlcnRfX2ludF9yZXBfXyAxCgoKCgoKI2RlZmlu
ZSBfX05EUl9jb252ZXJ0X19jaGFyX3JlcF9fIDAKCgoKI2RlZmluZSBfX05EUl9jb252ZXJ0X19m
bG9hdF9yZXBfXyAwCgoKCgojZGVmaW5lIF9fTkRSX2NvbnZlcnRfX05PT1AgZG8gOyB3aGlsZSAo
MCkKI2RlZmluZSBfX05EUl9jb252ZXJ0X19VTktOT1dOKHMpIF9fTkRSX2NvbnZlcnRfX05PT1AK
I2RlZmluZSBfX05EUl9jb252ZXJ0X19TSU5HTEUoYSxmLHIpIGRvIHsgcigoYSksIChmKSk7IH0g
d2hpbGUgKDApCiNkZWZpbmUgX19ORFJfY29udmVydF9fQVJSQVkoYSxmLGMscikgZG8geyBpbnQg
X19pX18sIF9fQ19fID0gKGMpOyBmb3IgKF9faV9fID0gMDsgX19pX18gPCBfX0NfXzsgX19pX18r
KykgcigmKGEpW19faV9fXSwgZik7IH0gd2hpbGUgKDApCgoKCiNkZWZpbmUgX19ORFJfY29udmVy
dF9fMkRBUlJBWShhLGYscyxjLHIpIGRvIHsgaW50IF9faV9fLCBfX0NfXyA9IChjKSwgX19TX18g
PSAocyk7IGZvciAoX19pX18gPSAwOyBfX2lfXyA8IF9fQ19fOyBfX2lfXysrKSByKCYoYSlbX19p
X18gKiBfX1NfX10sIGYsIF9fU19fKTsgfSB3aGlsZSAoMCkKIyAxMDggIi91c3IvaW5jbHVkZS9t
YWNoL25kci5oIiAzIDQKI2RlZmluZSBfX05EUl9SRUFEU1dBUF9hc3NpZ24oYSxycykgZG8geyAq
KGEpID0gcnMoYSk7IH0gd2hpbGUgKDApCgojZGVmaW5lIF9fTkRSX1JFQURTV0FQX191aW50MTZf
dChhKSBPU1JlYWRTd2FwSW50MTYoKHZvaWQgKilhLCAwKQojZGVmaW5lIF9fTkRSX1JFQURTV0FQ
X19pbnQxNl90KGEpIChpbnQxNl90KU9TUmVhZFN3YXBJbnQxNigodm9pZCAqKWEsIDApCiNkZWZp
bmUgX19ORFJfUkVBRFNXQVBfX3VpbnQzMl90KGEpIE9TUmVhZFN3YXBJbnQzMigodm9pZCAqKWEs
IDApCiNkZWZpbmUgX19ORFJfUkVBRFNXQVBfX2ludDMyX3QoYSkgKGludDMyX3QpT1NSZWFkU3dh
cEludDMyKCh2b2lkICopYSwgMCkKI2RlZmluZSBfX05EUl9SRUFEU1dBUF9fdWludDY0X3QoYSkg
T1NSZWFkU3dhcEludDY0KCh2b2lkICopYSwgMCkKI2RlZmluZSBfX05EUl9SRUFEU1dBUF9faW50
NjRfdChhKSAoaW50NjRfdClPU1JlYWRTd2FwSW50NjQoKHZvaWQgKilhLCAwKQoKZXh0ZXJuICJD
IiB7CgpzdGF0aWMgX19pbmxpbmVfXyBmbG9hdCBfX05EUl9SRUFEU1dBUF9fZmxvYXQoZmxvYXQg
KmFyZ3ApIHsKIHVuaW9uIHsKICBmbG9hdCBzdjsKICB1aW50MzJfdCB1bGw7CiB9IHJlc3VsdDsK
IHJlc3VsdC51bGwgPSBPU1JlYWRTd2FwSW50MzIoKHZvaWQgKikodWludDMyX3QgKilhcmdwLCAw
KTsKIHJldHVybiByZXN1bHQuc3Y7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGRvdWJsZSBfX05EUl9S
RUFEU1dBUF9fZG91YmxlKGRvdWJsZSAqYXJncCkgewogdW5pb24gewogIGRvdWJsZSBzdjsKICB1
aW50NjRfdCB1bGw7CiB9IHJlc3VsdDsKIHJlc3VsdC51bGwgPSBPU1JlYWRTd2FwSW50NjQoKHZv
aWQgKikodWludDY0X3QgKilhcmdwLCAwKTsKIHJldHVybiByZXN1bHQuc3Y7Cn0KCn0KCiNkZWZp
bmUgX19ORFJfY29udmVydF9faW50X3JlcF9faW50MTZfdF9fZGVmaW5lZCAKI2RlZmluZSBfX05E
Ul9jb252ZXJ0X19pbnRfcmVwX19pbnQxNl90KHYsZikgX19ORFJfUkVBRFNXQVBfYXNzaWduKHYs
IF9fTkRSX1JFQURTV0FQX19pbnQxNl90KQoKCiNkZWZpbmUgX19ORFJfY29udmVydF9faW50X3Jl
cF9fdWludDE2X3RfX2RlZmluZWQgCiNkZWZpbmUgX19ORFJfY29udmVydF9faW50X3JlcF9fdWlu
dDE2X3QodixmKSBfX05EUl9SRUFEU1dBUF9hc3NpZ24odiwgX19ORFJfUkVBRFNXQVBfX3VpbnQx
Nl90KQoKCiNkZWZpbmUgX19ORFJfY29udmVydF9faW50X3JlcF9faW50MzJfdF9fZGVmaW5lZCAK
I2RlZmluZSBfX05EUl9jb252ZXJ0X19pbnRfcmVwX19pbnQzMl90KHYsZikgX19ORFJfUkVBRFNX
QVBfYXNzaWduKHYsIF9fTkRSX1JFQURTV0FQX19pbnQzMl90KQoKCiNkZWZpbmUgX19ORFJfY29u
dmVydF9faW50X3JlcF9fdWludDMyX3RfX2RlZmluZWQgCiNkZWZpbmUgX19ORFJfY29udmVydF9f
aW50X3JlcF9fdWludDMyX3QodixmKSBfX05EUl9SRUFEU1dBUF9hc3NpZ24odiwgX19ORFJfUkVB
RFNXQVBfX3VpbnQzMl90KQoKCiNkZWZpbmUgX19ORFJfY29udmVydF9faW50X3JlcF9faW50NjRf
dF9fZGVmaW5lZCAKI2RlZmluZSBfX05EUl9jb252ZXJ0X19pbnRfcmVwX19pbnQ2NF90KHYsZikg
X19ORFJfUkVBRFNXQVBfYXNzaWduKHYsIF9fTkRSX1JFQURTV0FQX19pbnQ2NF90KQoKCiNkZWZp
bmUgX19ORFJfY29udmVydF9faW50X3JlcF9fdWludDY0X3RfX2RlZmluZWQgCiNkZWZpbmUgX19O
RFJfY29udmVydF9faW50X3JlcF9fdWludDY0X3QodixmKSBfX05EUl9SRUFEU1dBUF9hc3NpZ24o
diwgX19ORFJfUkVBRFNXQVBfX3VpbnQ2NF90KQoKCiNkZWZpbmUgX19ORFJfY29udmVydF9faW50
X3JlcF9fZmxvYXRfX2RlZmluZWQgCiNkZWZpbmUgX19ORFJfY29udmVydF9faW50X3JlcF9fZmxv
YXQodixmKSBfX05EUl9SRUFEU1dBUF9hc3NpZ24odiwgX19ORFJfUkVBRFNXQVBfX2Zsb2F0KQoK
CiNkZWZpbmUgX19ORFJfY29udmVydF9faW50X3JlcF9fZG91YmxlX19kZWZpbmVkIAojZGVmaW5l
IF9fTkRSX2NvbnZlcnRfX2ludF9yZXBfX2RvdWJsZSh2LGYpIF9fTkRSX1JFQURTV0FQX2Fzc2ln
bih2LCBfX05EUl9SRUFEU1dBUF9fZG91YmxlKQoKCiNkZWZpbmUgX19ORFJfY29udmVydF9faW50
X3JlcF9fYm9vbGVhbl90X19kZWZpbmVkIAojZGVmaW5lIF9fTkRSX2NvbnZlcnRfX2ludF9yZXBf
X2Jvb2xlYW5fdCh2LGYpIF9fTkRSX2NvbnZlcnRfX2ludF9yZXBfX2ludDMyX3QodixmKQoKCiNk
ZWZpbmUgX19ORFJfY29udmVydF9faW50X3JlcF9fa2Vybl9yZXR1cm5fdF9fZGVmaW5lZCAKI2Rl
ZmluZSBfX05EUl9jb252ZXJ0X19pbnRfcmVwX19rZXJuX3JldHVybl90KHYsZikgX19ORFJfY29u
dmVydF9faW50X3JlcF9faW50MzJfdCh2LGYpCgoKI2RlZmluZSBfX05EUl9jb252ZXJ0X19pbnRf
cmVwX19tYWNoX3BvcnRfbmFtZV90X19kZWZpbmVkIAojZGVmaW5lIF9fTkRSX2NvbnZlcnRfX2lu
dF9yZXBfX21hY2hfcG9ydF9uYW1lX3QodixmKSBfX05EUl9jb252ZXJ0X19pbnRfcmVwX191aW50
MzJfdCh2LGYpCgoKI2RlZmluZSBfX05EUl9jb252ZXJ0X19pbnRfcmVwX19tYWNoX21zZ190eXBl
X251bWJlcl90X19kZWZpbmVkIAojZGVmaW5lIF9fTkRSX2NvbnZlcnRfX2ludF9yZXBfX21hY2hf
bXNnX3R5cGVfbnVtYmVyX3QodixmKSBfX05EUl9jb252ZXJ0X19pbnRfcmVwX191aW50MzJfdCh2
LGYpCiMgOCAiL3Vzci9pbmNsdWRlL21hY2gvdm1fbWFwLmgiIDIgMyA0CgoKIyAxICIvdXNyL2lu
Y2x1ZGUvbWFjaC9ub3RpZnkuaCIgMSAzIDQKIyA2NSAiL3Vzci9pbmNsdWRlL21hY2gvbm90aWZ5
LmgiIDMgNAojZGVmaW5lIF9NQUNIX05PVElGWV9IXyAKIyA3NiAiL3Vzci9pbmNsdWRlL21hY2gv
bm90aWZ5LmgiIDMgNAojZGVmaW5lIE1BQ0hfTk9USUZZX0ZJUlNUIDAxMDAKI2RlZmluZSBNQUNI
X05PVElGWV9QT1JUX0RFTEVURUQgKE1BQ0hfTk9USUZZX0ZJUlNUICsgMDAxICkKCiNkZWZpbmUg
TUFDSF9OT1RJRllfUE9SVF9ERVNUUk9ZRUQgKE1BQ0hfTk9USUZZX0ZJUlNUICsgMDA1KQoKI2Rl
ZmluZSBNQUNIX05PVElGWV9OT19TRU5ERVJTIChNQUNIX05PVElGWV9GSVJTVCArIDAwNikKCiNk
ZWZpbmUgTUFDSF9OT1RJRllfU0VORF9PTkNFIChNQUNIX05PVElGWV9GSVJTVCArIDAwNykKCiNk
ZWZpbmUgTUFDSF9OT1RJRllfREVBRF9OQU1FIChNQUNIX05PVElGWV9GSVJTVCArIDAxMCkKCiNk
ZWZpbmUgTUFDSF9OT1RJRllfTEFTVCAoTUFDSF9OT1RJRllfRklSU1QgKyAwMTUpCgp0eXBlZGVm
IG1hY2hfcG9ydF90IG5vdGlmeV9wb3J0X3Q7CiMgOTkgIi91c3IvaW5jbHVkZS9tYWNoL25vdGlm
eS5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewogICAgbWFjaF9tc2dfaGVhZGVyX3Qgbm90X2hlYWRl
cjsKICAgIE5EUl9yZWNvcmRfdCBORFI7CiAgICBtYWNoX3BvcnRfbmFtZV90IG5vdF9wb3J0Owog
ICAgbWFjaF9tc2dfZm9ybWF0XzBfdHJhaWxlcl90IHRyYWlsZXI7Cn0gbWFjaF9wb3J0X2RlbGV0
ZWRfbm90aWZpY2F0aW9uX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBtYWNoX21zZ19oZWFkZXJf
dCBub3RfaGVhZGVyOwogICAgbWFjaF9tc2dfYm9keV90IG5vdF9ib2R5OwogICAgbWFjaF9tc2df
cG9ydF9kZXNjcmlwdG9yX3Qgbm90X3BvcnQ7CiAgICBtYWNoX21zZ19mb3JtYXRfMF90cmFpbGVy
X3QgdHJhaWxlcjsKfSBtYWNoX3BvcnRfZGVzdHJveWVkX25vdGlmaWNhdGlvbl90OwoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgbWFjaF9tc2dfaGVhZGVyX3Qgbm90X2hlYWRlcjsKICAgIE5EUl9yZWNv
cmRfdCBORFI7CiAgICBtYWNoX21zZ190eXBlX251bWJlcl90IG5vdF9jb3VudDsKICAgIG1hY2hf
bXNnX2Zvcm1hdF8wX3RyYWlsZXJfdCB0cmFpbGVyOwp9IG1hY2hfbm9fc2VuZGVyc19ub3RpZmlj
YXRpb25fdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIG1hY2hfbXNnX2hlYWRlcl90IG5vdF9oZWFk
ZXI7CiAgICBtYWNoX21zZ19mb3JtYXRfMF90cmFpbGVyX3QgdHJhaWxlcjsKfSBtYWNoX3NlbmRf
b25jZV9ub3RpZmljYXRpb25fdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIG1hY2hfbXNnX2hlYWRl
cl90IG5vdF9oZWFkZXI7CiAgICBORFJfcmVjb3JkX3QgTkRSOwogICAgbWFjaF9wb3J0X25hbWVf
dCBub3RfcG9ydDsKICAgIG1hY2hfbXNnX2Zvcm1hdF8wX3RyYWlsZXJfdCB0cmFpbGVyOwp9IG1h
Y2hfZGVhZF9uYW1lX25vdGlmaWNhdGlvbl90OwojIDExICIvdXNyL2luY2x1ZGUvbWFjaC92bV9t
YXAuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9tYWNoL21pZ19lcnJvcnMuaCIgMSAzIDQK
IyA2NCAiL3Vzci9pbmNsdWRlL21hY2gvbWlnX2Vycm9ycy5oIiAzIDQKI2RlZmluZSBfTUFDSF9N
SUdfRVJST1JTX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaC9taWcuaCIgMSAzIDQKIyAzNyAi
L3Vzci9pbmNsdWRlL21hY2gvbWlnLmgiIDMgNAojZGVmaW5lIF9NQUNIX01JR19IXyAKIyA2OSAi
L3Vzci9pbmNsdWRlL21hY2gvbWlnLmgiIDMgNAojZGVmaW5lIF9fTWlnVHlwZUNoZWNrIDEKIyA3
OSAiL3Vzci9pbmNsdWRlL21hY2gvbWlnLmgiIDMgNAojZGVmaW5lIF9fTWlnUGFja1N0cnVjdHMg
MQoKCgoKCgp0eXBlZGVmIHZvaWQgKCptaWdfc3R1Yl9yb3V0aW5lX3QpIChtYWNoX21zZ19oZWFk
ZXJfdCAqSW5IZWFkUCwKICAgICAgICAgICBtYWNoX21zZ19oZWFkZXJfdCAqT3V0SGVhZFApOwoK
dHlwZWRlZiBtaWdfc3R1Yl9yb3V0aW5lX3QgbWlnX3JvdXRpbmVfdDsKCgoKCgoKdHlwZWRlZiBt
aWdfcm91dGluZV90ICgqbWlnX3NlcnZlcl9yb3V0aW5lX3QpIChtYWNoX21zZ19oZWFkZXJfdCAq
SW5IZWFkUCk7CgoKCgoKCnR5cGVkZWYga2Vybl9yZXR1cm5fdCAoKm1pZ19pbXBsX3JvdXRpbmVf
dCkodm9pZCk7Cgp0eXBlZGVmIG1hY2hfbXNnX3R5cGVfZGVzY3JpcHRvcl90IHJvdXRpbmVfYXJn
X2Rlc2NyaXB0b3I7CnR5cGVkZWYgbWFjaF9tc2dfdHlwZV9kZXNjcmlwdG9yX3QgKnJvdXRpbmVf
YXJnX2Rlc2NyaXB0b3JfdDsKdHlwZWRlZiBtYWNoX21zZ190eXBlX2Rlc2NyaXB0b3JfdCAqbWln
X3JvdXRpbmVfYXJnX2Rlc2NyaXB0b3JfdDsKCiNkZWZpbmUgTUlHX1JPVVRJTkVfQVJHX0RFU0NS
SVBUT1JfTlVMTCAoKG1pZ19yb3V0aW5lX2FyZ19kZXNjcmlwdG9yX3QpMCkKCnN0cnVjdCByb3V0
aW5lX2Rlc2NyaXB0b3IgewogbWlnX2ltcGxfcm91dGluZV90IGltcGxfcm91dGluZTsKIG1pZ19z
dHViX3JvdXRpbmVfdCBzdHViX3JvdXRpbmU7CiB1bnNpZ25lZCBpbnQgYXJnYzsKIHVuc2lnbmVk
IGludCBkZXNjcl9jb3VudDsKIHJvdXRpbmVfYXJnX2Rlc2NyaXB0b3JfdAogICAgICBhcmdfZGVz
Y3I7CiB1bnNpZ25lZCBpbnQgbWF4X3JlcGx5X21zZzsKfTsKdHlwZWRlZiBzdHJ1Y3Qgcm91dGlu
ZV9kZXNjcmlwdG9yICpyb3V0aW5lX2Rlc2NyaXB0b3JfdDsKCnR5cGVkZWYgc3RydWN0IHJvdXRp
bmVfZGVzY3JpcHRvciBtaWdfcm91dGluZV9kZXNjcmlwdG9yOwp0eXBlZGVmIG1pZ19yb3V0aW5l
X2Rlc2NyaXB0b3IgKm1pZ19yb3V0aW5lX2Rlc2NyaXB0b3JfdDsKCiNkZWZpbmUgTUlHX1JPVVRJ
TkVfREVTQ1JJUFRPUl9OVUxMICgobWlnX3JvdXRpbmVfZGVzY3JpcHRvcl90KTApCgp0eXBlZGVm
IHN0cnVjdCBtaWdfc3Vic3lzdGVtIHsKIG1pZ19zZXJ2ZXJfcm91dGluZV90IHNlcnZlcjsKIG1h
Y2hfbXNnX2lkX3Qgc3RhcnQ7CiBtYWNoX21zZ19pZF90IGVuZDsKIG1hY2hfbXNnX3NpemVfdCBt
YXhzaXplOwogdm1fYWRkcmVzc190IHJlc2VydmVkOwogbWlnX3JvdXRpbmVfZGVzY3JpcHRvcgog
ICAgICAgcm91dGluZVsxXTsKfSAqbWlnX3N1YnN5c3RlbV90OwoKI2RlZmluZSBNSUdfU1VCU1lT
VEVNX05VTEwgKChtaWdfc3Vic3lzdGVtX3QpMCkKCnR5cGVkZWYgc3RydWN0IG1pZ19zeW10YWIg
ewogY2hhciAqbXNfcm91dGluZV9uYW1lOwogaW50IG1zX3JvdXRpbmVfbnVtYmVyOwogdm9pZCAo
Km1zX3JvdXRpbmUpKHZvaWQpOwoKCgoKfSBtaWdfc3ltdGFiX3Q7CgoKZXh0ZXJuICJDIiB7CgoK
ZXh0ZXJuIG1hY2hfcG9ydF90IG1pZ19nZXRfcmVwbHlfcG9ydCh2b2lkKTsKCgpleHRlcm4gdm9p
ZCBtaWdfZGVhbGxvY19yZXBseV9wb3J0KG1hY2hfcG9ydF90IHJlcGx5X3BvcnQpOwoKCmV4dGVy
biB2b2lkIG1pZ19wdXRfcmVwbHlfcG9ydChtYWNoX3BvcnRfdCByZXBseV9wb3J0KTsKCgpleHRl
cm4gaW50IG1pZ19zdHJuY3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgaW50IGxlbik7
CgoKCmV4dGVybiB2b2lkIG1pZ19hbGxvY2F0ZSh2bV9hZGRyZXNzX3QgKiwgdm1fc2l6ZV90KTsK
CgpleHRlcm4gdm9pZCBtaWdfZGVhbGxvY2F0ZSh2bV9hZGRyZXNzX3QsIHZtX3NpemVfdCk7CgoK
fQojIDY3ICIvdXNyL2luY2x1ZGUvbWFjaC9taWdfZXJyb3JzLmgiIDIgMyA0CiMgODIgIi91c3Iv
aW5jbHVkZS9tYWNoL21pZ19lcnJvcnMuaCIgMyA0CiNkZWZpbmUgTUlHX1RZUEVfRVJST1IgLTMw
MAojZGVmaW5lIE1JR19SRVBMWV9NSVNNQVRDSCAtMzAxCiNkZWZpbmUgTUlHX1JFTU9URV9FUlJP
UiAtMzAyCiNkZWZpbmUgTUlHX0JBRF9JRCAtMzAzCiNkZWZpbmUgTUlHX0JBRF9BUkdVTUVOVFMg
LTMwNAojZGVmaW5lIE1JR19OT19SRVBMWSAtMzA1CiNkZWZpbmUgTUlHX0VYQ0VQVElPTiAtMzA2
CiNkZWZpbmUgTUlHX0FSUkFZX1RPT19MQVJHRSAtMzA3CiNkZWZpbmUgTUlHX1NFUlZFUl9ESUVE
IC0zMDgKI2RlZmluZSBNSUdfVFJBSUxFUl9FUlJPUiAtMzA5CgoKCgoKCiNwcmFnbWEgcGFjayg0
KQp0eXBlZGVmIHN0cnVjdCB7CiBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwogTkRSX3JlY29yZF90
IE5EUjsKIGtlcm5fcmV0dXJuX3QgUmV0Q29kZTsKfSBtaWdfcmVwbHlfZXJyb3JfdDsKI3ByYWdt
YSBwYWNrKCkKCgpleHRlcm4gIkMiIHsKCgojZGVmaW5lIF9fTkRSX2NvbnZlcnRfX21pZ19yZXBs
eV9lcnJvcl90X19kZWZpbmVkIAoKc3RhdGljIF9faW5saW5lX18gdm9pZApfX05EUl9jb252ZXJ0
X19taWdfcmVwbHlfZXJyb3JfdChfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgbWlnX3JlcGx5
X2Vycm9yX3QgKngpCnsKCiBpZiAoeC0+TkRSLmludF9yZXAgIT0gTkRSX3JlY29yZC5pbnRfcmVw
KQogIGRvIHsgKigmeC0+UmV0Q29kZSkgPSAoaW50MzJfdClPU1JlYWRTd2FwSW50MzIoKHZvaWQg
KikmeC0+UmV0Q29kZSwgMCk7IH0gd2hpbGUgKDApOwoKfQoKCn0KIyAxNCAiL3Vzci9pbmNsdWRl
L21hY2gvdm1fbWFwLmgiIDIgMyA0CiMgMjkgIi91c3IvaW5jbHVkZS9tYWNoL3ZtX21hcC5oIiAz
IDQKI2RlZmluZSB2bV9tYXBfTVNHX0NPVU5UIDMxCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvbWFj
aF9kZWJ1Zy9tYWNoX2RlYnVnX3R5cGVzLmgiIDEgMyA0CiMgNjMgIi91c3IvaW5jbHVkZS9tYWNo
X2RlYnVnL21hY2hfZGVidWdfdHlwZXMuaCIgMyA0CiNkZWZpbmUgX01BQ0hfREVCVUdfTUFDSF9E
RUJVR19UWVBFU19IXyAKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hfZGVidWcvaXBjX2luZm8uaCIg
MSAzIDQKIyA2NyAiL3Vzci9pbmNsdWRlL21hY2hfZGVidWcvaXBjX2luZm8uaCIgMyA0CiNkZWZp
bmUgX01BQ0hfREVCVUdfSVBDX0lORk9fSF8gCiMgNzkgIi91c3IvaW5jbHVkZS9tYWNoX2RlYnVn
L2lwY19pbmZvLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBpcGNfaW5mb19zcGFjZSB7CiBuYXR1cmFs
X3QgaWlzX2dlbm5vX21hc2s7CiBuYXR1cmFsX3QgaWlzX3RhYmxlX3NpemU7CiBuYXR1cmFsX3Qg
aWlzX3RhYmxlX25leHQ7CiBuYXR1cmFsX3QgaWlzX3RyZWVfc2l6ZTsKIG5hdHVyYWxfdCBpaXNf
dHJlZV9zbWFsbDsKIG5hdHVyYWxfdCBpaXNfdHJlZV9oYXNoOwp9IGlwY19pbmZvX3NwYWNlX3Q7
CgoKdHlwZWRlZiBzdHJ1Y3QgaXBjX2luZm9fbmFtZSB7CiBtYWNoX3BvcnRfbmFtZV90IGlpbl9u
YW1lOwogICAgICAgICAgICAgaW50ZWdlcl90IGlpbl9jb2xsaXNpb247CiBtYWNoX3BvcnRfdHlw
ZV90IGlpbl90eXBlOwogbWFjaF9wb3J0X3VyZWZzX3QgaWluX3VyZWZzOwogbmF0dXJhbF90IGlp
bl9vYmplY3Q7CiBuYXR1cmFsX3QgaWluX25leHQ7CiBuYXR1cmFsX3QgaWluX2hhc2g7Cn0gaXBj
X2luZm9fbmFtZV90OwoKdHlwZWRlZiBpcGNfaW5mb19uYW1lX3QgKmlwY19pbmZvX25hbWVfYXJy
YXlfdDsKCgp0eXBlZGVmIHN0cnVjdCBpcGNfaW5mb190cmVlX25hbWUgewogaXBjX2luZm9fbmFt
ZV90IGlpdG5fbmFtZTsKIG1hY2hfcG9ydF9uYW1lX3QgaWl0bl9sY2hpbGQ7CiBtYWNoX3BvcnRf
bmFtZV90IGlpdG5fcmNoaWxkOwp9IGlwY19pbmZvX3RyZWVfbmFtZV90OwoKdHlwZWRlZiBpcGNf
aW5mb190cmVlX25hbWVfdCAqaXBjX2luZm9fdHJlZV9uYW1lX2FycmF5X3Q7CiMgNjYgIi91c3Iv
aW5jbHVkZS9tYWNoX2RlYnVnL21hY2hfZGVidWdfdHlwZXMuaCIgMiAzIDQKIyAxICIvdXNyL2lu
Y2x1ZGUvbWFjaF9kZWJ1Zy92bV9pbmZvLmgiIDEgMyA0CiMgNjUgIi91c3IvaW5jbHVkZS9tYWNo
X2RlYnVnL3ZtX2luZm8uaCIgMyA0CiNkZWZpbmUgX01BQ0hfREVCVUdfVk1fSU5GT19IXyAKCgoK
CgoKCiNwcmFnbWEgcGFjayg0KQoKCgoKCnR5cGVkZWYgc3RydWN0IG1hY2hfdm1faW5mb19yZWdp
b24gewogbWFjaF92bV9vZmZzZXRfdCB2aXJfc3RhcnQ7CiBtYWNoX3ZtX29mZnNldF90IHZpcl9l
bmQ7CiBtYWNoX3ZtX29mZnNldF90IHZpcl9vYmplY3Q7CiBtZW1vcnlfb2JqZWN0X29mZnNldF90
IHZpcl9vZmZzZXQ7CiBib29sZWFuX3QgdmlyX25lZWRzX2NvcHk7CiB2bV9wcm90X3QgdmlyX3By
b3RlY3Rpb247CiB2bV9wcm90X3QgdmlyX21heF9wcm90ZWN0aW9uOwogdm1faW5oZXJpdF90IHZp
cl9pbmhlcml0YW5jZTsKIG5hdHVyYWxfdCB2aXJfd2lyZWRfY291bnQ7CiBuYXR1cmFsX3Qgdmly
X3VzZXJfd2lyZWRfY291bnQ7Cn0gbWFjaF92bV9pbmZvX3JlZ2lvbl90OwoKdHlwZWRlZiBzdHJ1
Y3Qgdm1faW5mb19yZWdpb25fNjQgewogbmF0dXJhbF90IHZpcl9zdGFydDsKIG5hdHVyYWxfdCB2
aXJfZW5kOwogbmF0dXJhbF90IHZpcl9vYmplY3Q7CiBtZW1vcnlfb2JqZWN0X29mZnNldF90IHZp
cl9vZmZzZXQ7CiBib29sZWFuX3QgdmlyX25lZWRzX2NvcHk7CiB2bV9wcm90X3QgdmlyX3Byb3Rl
Y3Rpb247CiB2bV9wcm90X3QgdmlyX21heF9wcm90ZWN0aW9uOwogdm1faW5oZXJpdF90IHZpcl9p
bmhlcml0YW5jZTsKIG5hdHVyYWxfdCB2aXJfd2lyZWRfY291bnQ7CiBuYXR1cmFsX3QgdmlyX3Vz
ZXJfd2lyZWRfY291bnQ7Cn0gdm1faW5mb19yZWdpb25fNjRfdDsKCnR5cGVkZWYgc3RydWN0IHZt
X2luZm9fcmVnaW9uIHsKIG5hdHVyYWxfdCB2aXJfc3RhcnQ7CiBuYXR1cmFsX3QgdmlyX2VuZDsK
IG5hdHVyYWxfdCB2aXJfb2JqZWN0OwogbmF0dXJhbF90IHZpcl9vZmZzZXQ7CiBib29sZWFuX3Qg
dmlyX25lZWRzX2NvcHk7CiB2bV9wcm90X3QgdmlyX3Byb3RlY3Rpb247CiB2bV9wcm90X3Qgdmly
X21heF9wcm90ZWN0aW9uOwogdm1faW5oZXJpdF90IHZpcl9pbmhlcml0YW5jZTsKIG5hdHVyYWxf
dCB2aXJfd2lyZWRfY291bnQ7CiBuYXR1cmFsX3QgdmlyX3VzZXJfd2lyZWRfY291bnQ7Cn0gdm1f
aW5mb19yZWdpb25fdDsKCgp0eXBlZGVmIHN0cnVjdCB2bV9pbmZvX29iamVjdCB7CiBuYXR1cmFs
X3QgdmlvX29iamVjdDsKIG5hdHVyYWxfdCB2aW9fc2l6ZTsKIHVuc2lnbmVkIGludCB2aW9fcmVm
X2NvdW50OwogdW5zaWduZWQgaW50IHZpb19yZXNpZGVudF9wYWdlX2NvdW50OwogdW5zaWduZWQg
aW50IHZpb19hYnNlbnRfY291bnQ7CiBuYXR1cmFsX3QgdmlvX2NvcHk7CiBuYXR1cmFsX3Qgdmlv
X3NoYWRvdzsKIG5hdHVyYWxfdCB2aW9fc2hhZG93X29mZnNldDsKIG5hdHVyYWxfdCB2aW9fcGFn
aW5nX29mZnNldDsKIG1lbW9yeV9vYmplY3RfY29weV9zdHJhdGVneV90IHZpb19jb3B5X3N0cmF0
ZWd5OwoKIHZtX29mZnNldF90IHZpb19sYXN0X2FsbG9jOwoKIHVuc2lnbmVkIGludCB2aW9fcGFn
aW5nX2luX3Byb2dyZXNzOwogYm9vbGVhbl90IHZpb19wYWdlcl9jcmVhdGVkOwogYm9vbGVhbl90
IHZpb19wYWdlcl9pbml0aWFsaXplZDsKIGJvb2xlYW5fdCB2aW9fcGFnZXJfcmVhZHk7CiBib29s
ZWFuX3QgdmlvX2Nhbl9wZXJzaXN0OwogYm9vbGVhbl90IHZpb19pbnRlcm5hbDsKIGJvb2xlYW5f
dCB2aW9fdGVtcG9yYXJ5OwogYm9vbGVhbl90IHZpb19hbGl2ZTsKIGJvb2xlYW5fdCB2aW9fcHVy
Z2FibGU7CiBib29sZWFuX3QgdmlvX3B1cmdhYmxlX3ZvbGF0aWxlOwp9IHZtX2luZm9fb2JqZWN0
X3Q7Cgp0eXBlZGVmIHZtX2luZm9fb2JqZWN0X3QgKnZtX2luZm9fb2JqZWN0X2FycmF5X3Q7Cgoj
cHJhZ21hIHBhY2soKQojIDY3ICIvdXNyL2luY2x1ZGUvbWFjaF9kZWJ1Zy9tYWNoX2RlYnVnX3R5
cGVzLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL21hY2hfZGVidWcvem9uZV9pbmZvLmgiIDEg
MyA0CiMgNjAgIi91c3IvaW5jbHVkZS9tYWNoX2RlYnVnL3pvbmVfaW5mby5oIiAzIDQKI2RlZmlu
ZSBfTUFDSF9ERUJVR19aT05FX0lORk9fSF8gCiMgNzAgIi91c3IvaW5jbHVkZS9tYWNoX2RlYnVn
L3pvbmVfaW5mby5oIiAzIDQKI2RlZmluZSBaT05FX05BTUVfTUFYX0xFTiA4MAoKdHlwZWRlZiBz
dHJ1Y3Qgem9uZV9uYW1lIHsKIGNoYXIgem5fbmFtZVs4MF07Cn0gem9uZV9uYW1lX3Q7Cgp0eXBl
ZGVmIHpvbmVfbmFtZV90ICp6b25lX25hbWVfYXJyYXlfdDsKCgp0eXBlZGVmIHN0cnVjdCB6b25l
X2luZm8gewogaW50ZWdlcl90IHppX2NvdW50Owogdm1fc2l6ZV90IHppX2N1cl9zaXplOwogdm1f
c2l6ZV90IHppX21heF9zaXplOwogdm1fc2l6ZV90IHppX2VsZW1fc2l6ZTsKIHZtX3NpemVfdCB6
aV9hbGxvY19zaXplOwogaW50ZWdlcl90IHppX3BhZ2VhYmxlOwogaW50ZWdlcl90IHppX3NsZWVw
YWJsZTsKIGludGVnZXJfdCB6aV9leGhhdXN0aWJsZTsKIGludGVnZXJfdCB6aV9jb2xsZWN0YWJs
ZTsKfSB6b25lX2luZm9fdDsKCnR5cGVkZWYgem9uZV9pbmZvX3QgKnpvbmVfaW5mb19hcnJheV90
OwojIDY4ICIvdXNyL2luY2x1ZGUvbWFjaF9kZWJ1Zy9tYWNoX2RlYnVnX3R5cGVzLmgiIDIgMyA0
CiMgMSAiL3Vzci9pbmNsdWRlL21hY2hfZGVidWcvcGFnZV9pbmZvLmgiIDEgMyA0CiMgNTkgIi91
c3IvaW5jbHVkZS9tYWNoX2RlYnVnL3BhZ2VfaW5mby5oIiAzIDQKI2RlZmluZSBNQUNIX0RFQlVH
X1BBR0VfSU5GT19IIAoKCgp0eXBlZGVmIHZtX29mZnNldF90ICpwYWdlX2FkZHJlc3NfYXJyYXlf
dDsKIyA2OSAiL3Vzci9pbmNsdWRlL21hY2hfZGVidWcvbWFjaF9kZWJ1Z190eXBlcy5oIiAyIDMg
NAojIDEgIi91c3IvaW5jbHVkZS9tYWNoX2RlYnVnL2hhc2hfaW5mby5oIiAxIDMgNAojIDYwICIv
dXNyL2luY2x1ZGUvbWFjaF9kZWJ1Zy9oYXNoX2luZm8uaCIgMyA0CiNkZWZpbmUgX01BQ0hfREVC
VUdfSEFTSF9JTkZPX0hfIAoKCgoKCgp0eXBlZGVmIHN0cnVjdCBoYXNoX2luZm9fYnVja2V0IHsK
IG5hdHVyYWxfdCBoaWJfY291bnQ7Cn0gaGFzaF9pbmZvX2J1Y2tldF90OwoKdHlwZWRlZiBoYXNo
X2luZm9fYnVja2V0X3QgKmhhc2hfaW5mb19idWNrZXRfYXJyYXlfdDsKIyA3MCAiL3Vzci9pbmNs
dWRlL21hY2hfZGVidWcvbWFjaF9kZWJ1Z190eXBlcy5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVk
ZS9tYWNoX2RlYnVnL2xvY2tncm91cF9pbmZvLmgiIDEgMyA0CiMgMzUgIi91c3IvaW5jbHVkZS9t
YWNoX2RlYnVnL2xvY2tncm91cF9pbmZvLmgiIDMgNAojZGVmaW5lIF9NQUNIX0RFQlVHX0xPQ0tH
Uk9VUF9JTkZPX0hfIAoKCgojZGVmaW5lIExPQ0tHUk9VUF9NQVhfTkFNRSA2NAoKI2RlZmluZSBM
T0NLR1JPVVBfQVRUUl9TVEFUIDB4MDFVTEwKCnR5cGVkZWYgc3RydWN0IGxvY2tncm91cF9pbmZv
IHsKIGNoYXIgbG9ja2dyb3VwX25hbWVbNjRdOwogdWludDY0X3QgbG9ja2dyb3VwX2F0dHI7CiB1
aW50NjRfdCBsb2NrX3NwaW5fY250OwogdWludDY0X3QgbG9ja19zcGluX3V0aWxfY250OwogdWlu
dDY0X3QgbG9ja19zcGluX2hlbGRfY250OwogdWludDY0X3QgbG9ja19zcGluX21pc3NfY250Owog
dWludDY0X3QgbG9ja19zcGluX2hlbGRfbWF4OwogdWludDY0X3QgbG9ja19zcGluX2hlbGRfY3Vt
OwogdWludDY0X3QgbG9ja19tdHhfY250OwogdWludDY0X3QgbG9ja19tdHhfdXRpbF9jbnQ7CiB1
aW50NjRfdCBsb2NrX210eF9oZWxkX2NudDsKIHVpbnQ2NF90IGxvY2tfbXR4X21pc3NfY250Owog
dWludDY0X3QgbG9ja19tdHhfd2FpdF9jbnQ7CiB1aW50NjRfdCBsb2NrX210eF9oZWxkX21heDsK
IHVpbnQ2NF90IGxvY2tfbXR4X2hlbGRfY3VtOwogdWludDY0X3QgbG9ja19tdHhfd2FpdF9tYXg7
CiB1aW50NjRfdCBsb2NrX210eF93YWl0X2N1bTsKIHVpbnQ2NF90IGxvY2tfcndfY250OwogdWlu
dDY0X3QgbG9ja19yd191dGlsX2NudDsKIHVpbnQ2NF90IGxvY2tfcndfaGVsZF9jbnQ7CiB1aW50
NjRfdCBsb2NrX3J3X21pc3NfY250OwogdWludDY0X3QgbG9ja19yd193YWl0X2NudDsKIHVpbnQ2
NF90IGxvY2tfcndfaGVsZF9tYXg7CiB1aW50NjRfdCBsb2NrX3J3X2hlbGRfY3VtOwogdWludDY0
X3QgbG9ja19yd193YWl0X21heDsKIHVpbnQ2NF90IGxvY2tfcndfd2FpdF9jdW07Cn0gbG9ja2dy
b3VwX2luZm9fdDsKCnR5cGVkZWYgbG9ja2dyb3VwX2luZm9fdCAqbG9ja2dyb3VwX2luZm9fYXJy
YXlfdDsKIyA3MSAiL3Vzci9pbmNsdWRlL21hY2hfZGVidWcvbWFjaF9kZWJ1Z190eXBlcy5oIiAy
IDMgNAoKdHlwZWRlZiBjaGFyIHN5bXRhYl9uYW1lX3RbMzJdOwojIDM2ICIvdXNyL2luY2x1ZGUv
bWFjaC92bV9tYXAuaCIgMiAzIDQKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCmV4dGVybgoKa2Vy
bl9yZXR1cm5fdCB2bV9yZWdpb24KKAogdm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2bV9hZGRyZXNz
X3QgKmFkZHJlc3MsCiB2bV9zaXplX3QgKnNpemUsCiB2bV9yZWdpb25fZmxhdm9yX3QgZmxhdm9y
LAogdm1fcmVnaW9uX2luZm9fdCBpbmZvLAogbWFjaF9tc2dfdHlwZV9udW1iZXJfdCAqaW5mb0Nu
dCwKIG1hY2hfcG9ydF90ICpvYmplY3RfbmFtZQopOwoKCgoKCmV4dGVybgoKa2Vybl9yZXR1cm5f
dCB2bV9hbGxvY2F0ZQooCiB2bV9tYXBfdCB0YXJnZXRfdGFzaywKIHZtX2FkZHJlc3NfdCAqYWRk
cmVzcywKIHZtX3NpemVfdCBzaXplLAogaW50IGZsYWdzCik7CgoKCgoKZXh0ZXJuCgprZXJuX3Jl
dHVybl90IHZtX2RlYWxsb2NhdGUKKAogdm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2bV9hZGRyZXNz
X3QgYWRkcmVzcywKIHZtX3NpemVfdCBzaXplCik7CgoKCgoKZXh0ZXJuCgprZXJuX3JldHVybl90
IHZtX3Byb3RlY3QKKAogdm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2bV9hZGRyZXNzX3QgYWRkcmVz
cywKIHZtX3NpemVfdCBzaXplLAogYm9vbGVhbl90IHNldF9tYXhpbXVtLAogdm1fcHJvdF90IG5l
d19wcm90ZWN0aW9uCik7CgoKCgoKZXh0ZXJuCgprZXJuX3JldHVybl90IHZtX2luaGVyaXQKKAog
dm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2bV9hZGRyZXNzX3QgYWRkcmVzcywKIHZtX3NpemVfdCBz
aXplLAogdm1faW5oZXJpdF90IG5ld19pbmhlcml0YW5jZQopOwoKCgoKCmV4dGVybgoKa2Vybl9y
ZXR1cm5fdCB2bV9yZWFkCigKIHZtX21hcF90IHRhcmdldF90YXNrLAogdm1fYWRkcmVzc190IGFk
ZHJlc3MsCiB2bV9zaXplX3Qgc2l6ZSwKIHZtX29mZnNldF90ICpkYXRhLAogbWFjaF9tc2dfdHlw
ZV9udW1iZXJfdCAqZGF0YUNudAopOwoKCgoKCmV4dGVybgoKa2Vybl9yZXR1cm5fdCB2bV9yZWFk
X2xpc3QKKAogdm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2bV9yZWFkX2VudHJ5X3QgZGF0YV9saXN0
LAogbmF0dXJhbF90IGNvdW50Cik7CgoKCgoKZXh0ZXJuCgprZXJuX3JldHVybl90IHZtX3dyaXRl
CigKIHZtX21hcF90IHRhcmdldF90YXNrLAogdm1fYWRkcmVzc190IGFkZHJlc3MsCiB2bV9vZmZz
ZXRfdCBkYXRhLAogbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBkYXRhQ250Cik7CgoKCgoKZXh0ZXJu
CgprZXJuX3JldHVybl90IHZtX2NvcHkKKAogdm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2bV9hZGRy
ZXNzX3Qgc291cmNlX2FkZHJlc3MsCiB2bV9zaXplX3Qgc2l6ZSwKIHZtX2FkZHJlc3NfdCBkZXN0
X2FkZHJlc3MKKTsKCgoKCgpleHRlcm4KCmtlcm5fcmV0dXJuX3Qgdm1fcmVhZF9vdmVyd3JpdGUK
KAogdm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2bV9hZGRyZXNzX3QgYWRkcmVzcywKIHZtX3NpemVf
dCBzaXplLAogdm1fYWRkcmVzc190IGRhdGEsCiB2bV9zaXplX3QgKm91dHNpemUKKTsKCgoKCgpl
eHRlcm4KCmtlcm5fcmV0dXJuX3Qgdm1fbXN5bmMKKAogdm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2
bV9hZGRyZXNzX3QgYWRkcmVzcywKIHZtX3NpemVfdCBzaXplLAogdm1fc3luY190IHN5bmNfZmxh
Z3MKKTsKCgoKCgpleHRlcm4KCmtlcm5fcmV0dXJuX3Qgdm1fYmVoYXZpb3Jfc2V0CigKIHZtX21h
cF90IHRhcmdldF90YXNrLAogdm1fYWRkcmVzc190IGFkZHJlc3MsCiB2bV9zaXplX3Qgc2l6ZSwK
IHZtX2JlaGF2aW9yX3QgbmV3X2JlaGF2aW9yCik7CgoKCgoKZXh0ZXJuCgprZXJuX3JldHVybl90
IHZtX21hcAooCiB2bV9tYXBfdCB0YXJnZXRfdGFzaywKIHZtX2FkZHJlc3NfdCAqYWRkcmVzcywK
IHZtX3NpemVfdCBzaXplLAogdm1fYWRkcmVzc190IG1hc2ssCiBpbnQgZmxhZ3MsCiBtZW1fZW50
cnlfbmFtZV9wb3J0X3Qgb2JqZWN0LAogdm1fb2Zmc2V0X3Qgb2Zmc2V0LAogYm9vbGVhbl90IGNv
cHksCiB2bV9wcm90X3QgY3VyX3Byb3RlY3Rpb24sCiB2bV9wcm90X3QgbWF4X3Byb3RlY3Rpb24s
CiB2bV9pbmhlcml0X3QgaW5oZXJpdGFuY2UKKTsKCgoKCgpleHRlcm4KCmtlcm5fcmV0dXJuX3Qg
dm1fbWFjaGluZV9hdHRyaWJ1dGUKKAogdm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2bV9hZGRyZXNz
X3QgYWRkcmVzcywKIHZtX3NpemVfdCBzaXplLAogdm1fbWFjaGluZV9hdHRyaWJ1dGVfdCBhdHRy
aWJ1dGUsCiB2bV9tYWNoaW5lX2F0dHJpYnV0ZV92YWxfdCAqdmFsdWUKKTsKCgoKCgpleHRlcm4K
Cmtlcm5fcmV0dXJuX3Qgdm1fcmVtYXAKKAogdm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2bV9hZGRy
ZXNzX3QgKnRhcmdldF9hZGRyZXNzLAogdm1fc2l6ZV90IHNpemUsCiB2bV9hZGRyZXNzX3QgbWFz
aywKIGJvb2xlYW5fdCBhbnl3aGVyZSwKIHZtX21hcF90IHNyY190YXNrLAogdm1fYWRkcmVzc190
IHNyY19hZGRyZXNzLAogYm9vbGVhbl90IGNvcHksCiB2bV9wcm90X3QgKmN1cl9wcm90ZWN0aW9u
LAogdm1fcHJvdF90ICptYXhfcHJvdGVjdGlvbiwKIHZtX2luaGVyaXRfdCBpbmhlcml0YW5jZQop
OwoKCgoKCmV4dGVybgoKa2Vybl9yZXR1cm5fdCB0YXNrX3dpcmUKKAogdm1fbWFwX3QgdGFyZ2V0
X3Rhc2ssCiBib29sZWFuX3QgbXVzdF93aXJlCik7CgoKCgoKZXh0ZXJuCgprZXJuX3JldHVybl90
IG1hY2hfbWFrZV9tZW1vcnlfZW50cnkKKAogdm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2bV9zaXpl
X3QgKnNpemUsCiB2bV9vZmZzZXRfdCBvZmZzZXQsCiB2bV9wcm90X3QgcGVybWlzc2lvbiwKIG1l
bV9lbnRyeV9uYW1lX3BvcnRfdCAqb2JqZWN0X2hhbmRsZSwKIG1lbV9lbnRyeV9uYW1lX3BvcnRf
dCBwYXJlbnRfZW50cnkKKTsKCgoKCgpleHRlcm4KCmtlcm5fcmV0dXJuX3Qgdm1fbWFwX3BhZ2Vf
cXVlcnkKKAogdm1fbWFwX3QgdGFyZ2V0X21hcCwKIHZtX29mZnNldF90IG9mZnNldCwKIGludGVn
ZXJfdCAqZGlzcG9zaXRpb24sCiBpbnRlZ2VyX3QgKnJlZl9jb3VudAopOwoKCgoKCmV4dGVybgoK
a2Vybl9yZXR1cm5fdCBtYWNoX3ZtX3JlZ2lvbl9pbmZvCigKIHZtX21hcF90IHRhc2ssCiB2bV9h
ZGRyZXNzX3QgYWRkcmVzcywKIHZtX2luZm9fcmVnaW9uX3QgKnJlZ2lvbiwKIHZtX2luZm9fb2Jq
ZWN0X2FycmF5X3QgKm9iamVjdHMsCiBtYWNoX21zZ190eXBlX251bWJlcl90ICpvYmplY3RzQ250
Cik7CgoKCgoKZXh0ZXJuCgprZXJuX3JldHVybl90IHZtX21hcHBlZF9wYWdlc19pbmZvCigKIHZt
X21hcF90IHRhc2ssCiBwYWdlX2FkZHJlc3NfYXJyYXlfdCAqcGFnZXMsCiBtYWNoX21zZ190eXBl
X251bWJlcl90ICpwYWdlc0NudAopOwoKCgoKCmV4dGVybgoKa2Vybl9yZXR1cm5fdCB2bV9yZWdp
b25fcmVjdXJzZQooCiB2bV9tYXBfdCB0YXJnZXRfdGFzaywKIHZtX2FkZHJlc3NfdCAqYWRkcmVz
cywKIHZtX3NpemVfdCAqc2l6ZSwKIG5hdHVyYWxfdCAqbmVzdGluZ19kZXB0aCwKIHZtX3JlZ2lv
bl9yZWN1cnNlX2luZm9fdCBpbmZvLAogbWFjaF9tc2dfdHlwZV9udW1iZXJfdCAqaW5mb0NudAop
OwoKCgoKCmV4dGVybgoKa2Vybl9yZXR1cm5fdCB2bV9yZWdpb25fcmVjdXJzZV82NAooCiB2bV9t
YXBfdCB0YXJnZXRfdGFzaywKIHZtX2FkZHJlc3NfdCAqYWRkcmVzcywKIHZtX3NpemVfdCAqc2l6
ZSwKIG5hdHVyYWxfdCAqbmVzdGluZ19kZXB0aCwKIHZtX3JlZ2lvbl9yZWN1cnNlX2luZm9fdCBp
bmZvLAogbWFjaF9tc2dfdHlwZV9udW1iZXJfdCAqaW5mb0NudAopOwoKCgoKCmV4dGVybgoKa2Vy
bl9yZXR1cm5fdCBtYWNoX3ZtX3JlZ2lvbl9pbmZvXzY0CigKIHZtX21hcF90IHRhc2ssCiB2bV9h
ZGRyZXNzX3QgYWRkcmVzcywKIHZtX2luZm9fcmVnaW9uXzY0X3QgKnJlZ2lvbiwKIHZtX2luZm9f
b2JqZWN0X2FycmF5X3QgKm9iamVjdHMsCiBtYWNoX21zZ190eXBlX251bWJlcl90ICpvYmplY3Rz
Q250Cik7CgoKCgoKZXh0ZXJuCgprZXJuX3JldHVybl90IHZtX3JlZ2lvbl82NAooCiB2bV9tYXBf
dCB0YXJnZXRfdGFzaywKIHZtX2FkZHJlc3NfdCAqYWRkcmVzcywKIHZtX3NpemVfdCAqc2l6ZSwK
IHZtX3JlZ2lvbl9mbGF2b3JfdCBmbGF2b3IsCiB2bV9yZWdpb25faW5mb190IGluZm8sCiBtYWNo
X21zZ190eXBlX251bWJlcl90ICppbmZvQ250LAogbWFjaF9wb3J0X3QgKm9iamVjdF9uYW1lCik7
CgoKCgoKZXh0ZXJuCgprZXJuX3JldHVybl90IG1hY2hfbWFrZV9tZW1vcnlfZW50cnlfNjQKKAog
dm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiBtZW1vcnlfb2JqZWN0X3NpemVfdCAqc2l6ZSwKIG1lbW9y
eV9vYmplY3Rfb2Zmc2V0X3Qgb2Zmc2V0LAogdm1fcHJvdF90IHBlcm1pc3Npb24sCiBtYWNoX3Bv
cnRfdCAqb2JqZWN0X2hhbmRsZSwKIG1lbV9lbnRyeV9uYW1lX3BvcnRfdCBwYXJlbnRfZW50cnkK
KTsKCgoKCgpleHRlcm4KCmtlcm5fcmV0dXJuX3Qgdm1fbWFwXzY0CigKIHZtX21hcF90IHRhcmdl
dF90YXNrLAogdm1fYWRkcmVzc190ICphZGRyZXNzLAogdm1fc2l6ZV90IHNpemUsCiB2bV9hZGRy
ZXNzX3QgbWFzaywKIGludCBmbGFncywKIG1lbV9lbnRyeV9uYW1lX3BvcnRfdCBvYmplY3QsCiBt
ZW1vcnlfb2JqZWN0X29mZnNldF90IG9mZnNldCwKIGJvb2xlYW5fdCBjb3B5LAogdm1fcHJvdF90
IGN1cl9wcm90ZWN0aW9uLAogdm1fcHJvdF90IG1heF9wcm90ZWN0aW9uLAogdm1faW5oZXJpdF90
IGluaGVyaXRhbmNlCik7CgoKCgoKZXh0ZXJuCgprZXJuX3JldHVybl90IHZtX3B1cmdhYmxlX2Nv
bnRyb2wKKAogdm1fbWFwX3QgdGFyZ2V0X3Rhc2ssCiB2bV9hZGRyZXNzX3QgYWRkcmVzcywKIHZt
X3B1cmdhYmxlX3QgY29udHJvbCwKIGludCAqc3RhdGUKKTsKCn0KIyA0NzUgIi91c3IvaW5jbHVk
ZS9tYWNoL3ZtX21hcC5oIiAzIDQKI2RlZmluZSBfX1JlcXVlc3RfX3ZtX21hcF9zdWJzeXN0ZW1f
X2RlZmluZWQgCgoKI3ByYWdtYSBwYWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNn
X2hlYWRlcl90IEhlYWQ7CiAgTkRSX3JlY29yZF90IE5EUjsKICB2bV9hZGRyZXNzX3QgYWRkcmVz
czsKICB2bV9yZWdpb25fZmxhdm9yX3QgZmxhdm9yOwogIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3Qg
aW5mb0NudDsKIH0gX19SZXF1ZXN0X192bV9yZWdpb25fdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNw
cmFnbWEgcGFjayg0KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFk
OwogIE5EUl9yZWNvcmRfdCBORFI7CiAgdm1fYWRkcmVzc190IGFkZHJlc3M7CiAgdm1fc2l6ZV90
IHNpemU7CiAgaW50IGZsYWdzOwogfSBfX1JlcXVlc3RfX3ZtX2FsbG9jYXRlX3Q7CgojcHJhZ21h
IHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2df
aGVhZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3QgTkRSOwogIHZtX2FkZHJlc3NfdCBhZGRyZXNz
OwogIHZtX3NpemVfdCBzaXplOwogfSBfX1JlcXVlc3RfX3ZtX2RlYWxsb2NhdGVfdDsKCiNwcmFn
bWEgcGFjaygpCgoKCiNwcmFnbWEgcGFjayg0KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21z
Z19oZWFkZXJfdCBIZWFkOwogIE5EUl9yZWNvcmRfdCBORFI7CiAgdm1fYWRkcmVzc190IGFkZHJl
c3M7CiAgdm1fc2l6ZV90IHNpemU7CiAgYm9vbGVhbl90IHNldF9tYXhpbXVtOwogIHZtX3Byb3Rf
dCBuZXdfcHJvdGVjdGlvbjsKIH0gX19SZXF1ZXN0X192bV9wcm90ZWN0X3Q7CgojcHJhZ21hIHBh
Y2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVh
ZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3QgTkRSOwogIHZtX2FkZHJlc3NfdCBhZGRyZXNzOwog
IHZtX3NpemVfdCBzaXplOwogIHZtX2luaGVyaXRfdCBuZXdfaW5oZXJpdGFuY2U7CiB9IF9fUmVx
dWVzdF9fdm1faW5oZXJpdF90OwoKI3ByYWdtYSBwYWNrKCkKCgoKI3ByYWdtYSBwYWNrKDQpCgog
dHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNnX2hlYWRlcl90IEhlYWQ7CiAgTkRSX3JlY29yZF90
IE5EUjsKICB2bV9hZGRyZXNzX3QgYWRkcmVzczsKICB2bV9zaXplX3Qgc2l6ZTsKIH0gX19SZXF1
ZXN0X192bV9yZWFkX3Q7CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0eXBl
ZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3QgTkRS
OwogIHZtX3JlYWRfZW50cnlfdCBkYXRhX2xpc3Q7CiAgbmF0dXJhbF90IGNvdW50OwogfSBfX1Jl
cXVlc3RfX3ZtX3JlYWRfbGlzdF90OwoKI3ByYWdtYSBwYWNrKCkKCgoKI3ByYWdtYSBwYWNrKDQp
CgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNnX2hlYWRlcl90IEhlYWQ7CgogIG1hY2hfbXNn
X2JvZHlfdCBtc2doX2JvZHk7CiAgbWFjaF9tc2dfb29sX2Rlc2NyaXB0b3JfdCBkYXRhOwoKICBO
RFJfcmVjb3JkX3QgTkRSOwogIHZtX2FkZHJlc3NfdCBhZGRyZXNzOwogIG1hY2hfbXNnX3R5cGVf
bnVtYmVyX3QgZGF0YUNudDsKIH0gX19SZXF1ZXN0X192bV93cml0ZV90OwoKI3ByYWdtYSBwYWNr
KCkKCgoKI3ByYWdtYSBwYWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNnX2hlYWRl
cl90IEhlYWQ7CiAgTkRSX3JlY29yZF90IE5EUjsKICB2bV9hZGRyZXNzX3Qgc291cmNlX2FkZHJl
c3M7CiAgdm1fc2l6ZV90IHNpemU7CiAgdm1fYWRkcmVzc190IGRlc3RfYWRkcmVzczsKIH0gX19S
ZXF1ZXN0X192bV9jb3B5X3Q7CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0
eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3Qg
TkRSOwogIHZtX2FkZHJlc3NfdCBhZGRyZXNzOwogIHZtX3NpemVfdCBzaXplOwogIHZtX2FkZHJl
c3NfdCBkYXRhOwogfSBfX1JlcXVlc3RfX3ZtX3JlYWRfb3ZlcndyaXRlX3Q7CgojcHJhZ21hIHBh
Y2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVh
ZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3QgTkRSOwogIHZtX2FkZHJlc3NfdCBhZGRyZXNzOwog
IHZtX3NpemVfdCBzaXplOwogIHZtX3N5bmNfdCBzeW5jX2ZsYWdzOwogfSBfX1JlcXVlc3RfX3Zt
X21zeW5jX3Q7CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0
cnVjdCB7CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3QgTkRSOwogIHZt
X2FkZHJlc3NfdCBhZGRyZXNzOwogIHZtX3NpemVfdCBzaXplOwogIHZtX2JlaGF2aW9yX3QgbmV3
X2JlaGF2aW9yOwogfSBfX1JlcXVlc3RfX3ZtX2JlaGF2aW9yX3NldF90OwoKI3ByYWdtYSBwYWNr
KCkKCgoKI3ByYWdtYSBwYWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNnX2hlYWRl
cl90IEhlYWQ7CgogIG1hY2hfbXNnX2JvZHlfdCBtc2doX2JvZHk7CiAgbWFjaF9tc2dfcG9ydF9k
ZXNjcmlwdG9yX3Qgb2JqZWN0OwoKICBORFJfcmVjb3JkX3QgTkRSOwogIHZtX2FkZHJlc3NfdCBh
ZGRyZXNzOwogIHZtX3NpemVfdCBzaXplOwogIHZtX2FkZHJlc3NfdCBtYXNrOwogIGludCBmbGFn
czsKICB2bV9vZmZzZXRfdCBvZmZzZXQ7CiAgYm9vbGVhbl90IGNvcHk7CiAgdm1fcHJvdF90IGN1
cl9wcm90ZWN0aW9uOwogIHZtX3Byb3RfdCBtYXhfcHJvdGVjdGlvbjsKICB2bV9pbmhlcml0X3Qg
aW5oZXJpdGFuY2U7CiB9IF9fUmVxdWVzdF9fdm1fbWFwX3Q7CgojcHJhZ21hIHBhY2soKQoKCgoj
cHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVh
ZDsKICBORFJfcmVjb3JkX3QgTkRSOwogIHZtX2FkZHJlc3NfdCBhZGRyZXNzOwogIHZtX3NpemVf
dCBzaXplOwogIHZtX21hY2hpbmVfYXR0cmlidXRlX3QgYXR0cmlidXRlOwogIHZtX21hY2hpbmVf
YXR0cmlidXRlX3ZhbF90IHZhbHVlOwogfSBfX1JlcXVlc3RfX3ZtX21hY2hpbmVfYXR0cmlidXRl
X3Q7CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7
CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKCiAgbWFjaF9tc2dfYm9keV90IG1zZ2hfYm9keTsK
ICBtYWNoX21zZ19wb3J0X2Rlc2NyaXB0b3JfdCBzcmNfdGFzazsKCiAgTkRSX3JlY29yZF90IE5E
UjsKICB2bV9hZGRyZXNzX3QgdGFyZ2V0X2FkZHJlc3M7CiAgdm1fc2l6ZV90IHNpemU7CiAgdm1f
YWRkcmVzc190IG1hc2s7CiAgYm9vbGVhbl90IGFueXdoZXJlOwogIHZtX2FkZHJlc3NfdCBzcmNf
YWRkcmVzczsKICBib29sZWFuX3QgY29weTsKICB2bV9pbmhlcml0X3QgaW5oZXJpdGFuY2U7CiB9
IF9fUmVxdWVzdF9fdm1fcmVtYXBfdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNwcmFnbWEgcGFjayg0
KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwogIE5EUl9yZWNv
cmRfdCBORFI7CiAgYm9vbGVhbl90IG11c3Rfd2lyZTsKIH0gX19SZXF1ZXN0X190YXNrX3dpcmVf
dDsKCiNwcmFnbWEgcGFjaygpCgoKCiNwcmFnbWEgcGFjayg0KQoKIHR5cGVkZWYgc3RydWN0IHsK
ICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwoKICBtYWNoX21zZ19ib2R5X3QgbXNnaF9ib2R5Owog
IG1hY2hfbXNnX3BvcnRfZGVzY3JpcHRvcl90IHBhcmVudF9lbnRyeTsKCiAgTkRSX3JlY29yZF90
IE5EUjsKICB2bV9zaXplX3Qgc2l6ZTsKICB2bV9vZmZzZXRfdCBvZmZzZXQ7CiAgdm1fcHJvdF90
IHBlcm1pc3Npb247CiB9IF9fUmVxdWVzdF9fbWFjaF9tYWtlX21lbW9yeV9lbnRyeV90OwoKI3By
YWdtYSBwYWNrKCkKCgoKI3ByYWdtYSBwYWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hf
bXNnX2hlYWRlcl90IEhlYWQ7CiAgTkRSX3JlY29yZF90IE5EUjsKICB2bV9vZmZzZXRfdCBvZmZz
ZXQ7CiB9IF9fUmVxdWVzdF9fdm1fbWFwX3BhZ2VfcXVlcnlfdDsKCiNwcmFnbWEgcGFjaygpCgoK
CiNwcmFnbWEgcGFjayg0KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBI
ZWFkOwogIE5EUl9yZWNvcmRfdCBORFI7CiAgdm1fYWRkcmVzc190IGFkZHJlc3M7CiB9IF9fUmVx
dWVzdF9fbWFjaF92bV9yZWdpb25faW5mb190OwoKI3ByYWdtYSBwYWNrKCkKCgoKI3ByYWdtYSBw
YWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNnX2hlYWRlcl90IEhlYWQ7CiB9IF9f
UmVxdWVzdF9fdm1fbWFwcGVkX3BhZ2VzX2luZm9fdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNwcmFn
bWEgcGFjayg0KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwog
IE5EUl9yZWNvcmRfdCBORFI7CiAgdm1fYWRkcmVzc190IGFkZHJlc3M7CiAgbmF0dXJhbF90IG5l
c3RpbmdfZGVwdGg7CiAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBpbmZvQ250OwogfSBfX1JlcXVl
c3RfX3ZtX3JlZ2lvbl9yZWN1cnNlX3Q7CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21hIHBhY2so
NCkKCiB0eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKICBORFJfcmVj
b3JkX3QgTkRSOwogIHZtX2FkZHJlc3NfdCBhZGRyZXNzOwogIG5hdHVyYWxfdCBuZXN0aW5nX2Rl
cHRoOwogIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgaW5mb0NudDsKIH0gX19SZXF1ZXN0X192bV9y
ZWdpb25fcmVjdXJzZV82NF90OwoKI3ByYWdtYSBwYWNrKCkKCgoKI3ByYWdtYSBwYWNrKDQpCgog
dHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNnX2hlYWRlcl90IEhlYWQ7CiAgTkRSX3JlY29yZF90
IE5EUjsKICB2bV9hZGRyZXNzX3QgYWRkcmVzczsKIH0gX19SZXF1ZXN0X19tYWNoX3ZtX3JlZ2lv
bl9pbmZvXzY0X3Q7CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0eXBlZGVm
IHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3QgTkRSOwog
IHZtX2FkZHJlc3NfdCBhZGRyZXNzOwogIHZtX3JlZ2lvbl9mbGF2b3JfdCBmbGF2b3I7CiAgbWFj
aF9tc2dfdHlwZV9udW1iZXJfdCBpbmZvQ250OwogfSBfX1JlcXVlc3RfX3ZtX3JlZ2lvbl82NF90
OwoKI3ByYWdtYSBwYWNrKCkKCgoKI3ByYWdtYSBwYWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3Qgewog
IG1hY2hfbXNnX2hlYWRlcl90IEhlYWQ7CgogIG1hY2hfbXNnX2JvZHlfdCBtc2doX2JvZHk7CiAg
bWFjaF9tc2dfcG9ydF9kZXNjcmlwdG9yX3QgcGFyZW50X2VudHJ5OwoKICBORFJfcmVjb3JkX3Qg
TkRSOwogIG1lbW9yeV9vYmplY3Rfc2l6ZV90IHNpemU7CiAgbWVtb3J5X29iamVjdF9vZmZzZXRf
dCBvZmZzZXQ7CiAgdm1fcHJvdF90IHBlcm1pc3Npb247CiB9IF9fUmVxdWVzdF9fbWFjaF9tYWtl
X21lbW9yeV9lbnRyeV82NF90OwoKI3ByYWdtYSBwYWNrKCkKCgoKI3ByYWdtYSBwYWNrKDQpCgog
dHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNnX2hlYWRlcl90IEhlYWQ7CgogIG1hY2hfbXNnX2Jv
ZHlfdCBtc2doX2JvZHk7CiAgbWFjaF9tc2dfcG9ydF9kZXNjcmlwdG9yX3Qgb2JqZWN0OwoKICBO
RFJfcmVjb3JkX3QgTkRSOwogIHZtX2FkZHJlc3NfdCBhZGRyZXNzOwogIHZtX3NpemVfdCBzaXpl
OwogIHZtX2FkZHJlc3NfdCBtYXNrOwogIGludCBmbGFnczsKICBtZW1vcnlfb2JqZWN0X29mZnNl
dF90IG9mZnNldDsKICBib29sZWFuX3QgY29weTsKICB2bV9wcm90X3QgY3VyX3Byb3RlY3Rpb247
CiAgdm1fcHJvdF90IG1heF9wcm90ZWN0aW9uOwogIHZtX2luaGVyaXRfdCBpbmhlcml0YW5jZTsK
IH0gX19SZXF1ZXN0X192bV9tYXBfNjRfdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNwcmFnbWEgcGFj
ayg0KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwogIE5EUl9y
ZWNvcmRfdCBORFI7CiAgdm1fYWRkcmVzc190IGFkZHJlc3M7CiAgdm1fcHVyZ2FibGVfdCBjb250
cm9sOwogIGludCBzdGF0ZTsKIH0gX19SZXF1ZXN0X192bV9wdXJnYWJsZV9jb250cm9sX3Q7Cgoj
cHJhZ21hIHBhY2soKQoKCgoKCgojZGVmaW5lIF9fUmVxdWVzdFVuaW9uX192bV9tYXBfc3Vic3lz
dGVtX19kZWZpbmVkIAp1bmlvbiBfX1JlcXVlc3RVbmlvbl9fdm1fbWFwX3N1YnN5c3RlbSB7CiBf
X1JlcXVlc3RfX3ZtX3JlZ2lvbl90IFJlcXVlc3Rfdm1fcmVnaW9uOwogX19SZXF1ZXN0X192bV9h
bGxvY2F0ZV90IFJlcXVlc3Rfdm1fYWxsb2NhdGU7CiBfX1JlcXVlc3RfX3ZtX2RlYWxsb2NhdGVf
dCBSZXF1ZXN0X3ZtX2RlYWxsb2NhdGU7CiBfX1JlcXVlc3RfX3ZtX3Byb3RlY3RfdCBSZXF1ZXN0
X3ZtX3Byb3RlY3Q7CiBfX1JlcXVlc3RfX3ZtX2luaGVyaXRfdCBSZXF1ZXN0X3ZtX2luaGVyaXQ7
CiBfX1JlcXVlc3RfX3ZtX3JlYWRfdCBSZXF1ZXN0X3ZtX3JlYWQ7CiBfX1JlcXVlc3RfX3ZtX3Jl
YWRfbGlzdF90IFJlcXVlc3Rfdm1fcmVhZF9saXN0OwogX19SZXF1ZXN0X192bV93cml0ZV90IFJl
cXVlc3Rfdm1fd3JpdGU7CiBfX1JlcXVlc3RfX3ZtX2NvcHlfdCBSZXF1ZXN0X3ZtX2NvcHk7CiBf
X1JlcXVlc3RfX3ZtX3JlYWRfb3ZlcndyaXRlX3QgUmVxdWVzdF92bV9yZWFkX292ZXJ3cml0ZTsK
IF9fUmVxdWVzdF9fdm1fbXN5bmNfdCBSZXF1ZXN0X3ZtX21zeW5jOwogX19SZXF1ZXN0X192bV9i
ZWhhdmlvcl9zZXRfdCBSZXF1ZXN0X3ZtX2JlaGF2aW9yX3NldDsKIF9fUmVxdWVzdF9fdm1fbWFw
X3QgUmVxdWVzdF92bV9tYXA7CiBfX1JlcXVlc3RfX3ZtX21hY2hpbmVfYXR0cmlidXRlX3QgUmVx
dWVzdF92bV9tYWNoaW5lX2F0dHJpYnV0ZTsKIF9fUmVxdWVzdF9fdm1fcmVtYXBfdCBSZXF1ZXN0
X3ZtX3JlbWFwOwogX19SZXF1ZXN0X190YXNrX3dpcmVfdCBSZXF1ZXN0X3Rhc2tfd2lyZTsKIF9f
UmVxdWVzdF9fbWFjaF9tYWtlX21lbW9yeV9lbnRyeV90IFJlcXVlc3RfbWFjaF9tYWtlX21lbW9y
eV9lbnRyeTsKIF9fUmVxdWVzdF9fdm1fbWFwX3BhZ2VfcXVlcnlfdCBSZXF1ZXN0X3ZtX21hcF9w
YWdlX3F1ZXJ5OwogX19SZXF1ZXN0X19tYWNoX3ZtX3JlZ2lvbl9pbmZvX3QgUmVxdWVzdF9tYWNo
X3ZtX3JlZ2lvbl9pbmZvOwogX19SZXF1ZXN0X192bV9tYXBwZWRfcGFnZXNfaW5mb190IFJlcXVl
c3Rfdm1fbWFwcGVkX3BhZ2VzX2luZm87CiBfX1JlcXVlc3RfX3ZtX3JlZ2lvbl9yZWN1cnNlX3Qg
UmVxdWVzdF92bV9yZWdpb25fcmVjdXJzZTsKIF9fUmVxdWVzdF9fdm1fcmVnaW9uX3JlY3Vyc2Vf
NjRfdCBSZXF1ZXN0X3ZtX3JlZ2lvbl9yZWN1cnNlXzY0OwogX19SZXF1ZXN0X19tYWNoX3ZtX3Jl
Z2lvbl9pbmZvXzY0X3QgUmVxdWVzdF9tYWNoX3ZtX3JlZ2lvbl9pbmZvXzY0OwogX19SZXF1ZXN0
X192bV9yZWdpb25fNjRfdCBSZXF1ZXN0X3ZtX3JlZ2lvbl82NDsKIF9fUmVxdWVzdF9fbWFjaF9t
YWtlX21lbW9yeV9lbnRyeV82NF90IFJlcXVlc3RfbWFjaF9tYWtlX21lbW9yeV9lbnRyeV82NDsK
IF9fUmVxdWVzdF9fdm1fbWFwXzY0X3QgUmVxdWVzdF92bV9tYXBfNjQ7CiBfX1JlcXVlc3RfX3Zt
X3B1cmdhYmxlX2NvbnRyb2xfdCBSZXF1ZXN0X3ZtX3B1cmdhYmxlX2NvbnRyb2w7Cn07CgoKCgoj
ZGVmaW5lIF9fUmVwbHlfX3ZtX21hcF9zdWJzeXN0ZW1fX2RlZmluZWQgCgoKI3ByYWdtYSBwYWNr
KDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNnX2hlYWRlcl90IEhlYWQ7CgogIG1hY2hf
bXNnX2JvZHlfdCBtc2doX2JvZHk7CiAgbWFjaF9tc2dfcG9ydF9kZXNjcmlwdG9yX3Qgb2JqZWN0
X25hbWU7CgogIE5EUl9yZWNvcmRfdCBORFI7CiAgdm1fYWRkcmVzc190IGFkZHJlc3M7CiAgdm1f
c2l6ZV90IHNpemU7CiAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBpbmZvQ250OwogIGludCBpbmZv
WzEwXTsKIH0gX19SZXBseV9fdm1fcmVnaW9uX3Q7CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21h
IHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKICBO
RFJfcmVjb3JkX3QgTkRSOwogIGtlcm5fcmV0dXJuX3QgUmV0Q29kZTsKICB2bV9hZGRyZXNzX3Qg
YWRkcmVzczsKIH0gX19SZXBseV9fdm1fYWxsb2NhdGVfdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNw
cmFnbWEgcGFjayg0KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFk
OwogIE5EUl9yZWNvcmRfdCBORFI7CiAga2Vybl9yZXR1cm5fdCBSZXRDb2RlOwogfSBfX1JlcGx5
X192bV9kZWFsbG9jYXRlX3Q7CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0
eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3Qg
TkRSOwogIGtlcm5fcmV0dXJuX3QgUmV0Q29kZTsKIH0gX19SZXBseV9fdm1fcHJvdGVjdF90OwoK
I3ByYWdtYSBwYWNrKCkKCgoKI3ByYWdtYSBwYWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1h
Y2hfbXNnX2hlYWRlcl90IEhlYWQ7CiAgTkRSX3JlY29yZF90IE5EUjsKICBrZXJuX3JldHVybl90
IFJldENvZGU7CiB9IF9fUmVwbHlfX3ZtX2luaGVyaXRfdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNw
cmFnbWEgcGFjayg0KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFk
OwoKICBtYWNoX21zZ19ib2R5X3QgbXNnaF9ib2R5OwogIG1hY2hfbXNnX29vbF9kZXNjcmlwdG9y
X3QgZGF0YTsKCiAgTkRSX3JlY29yZF90IE5EUjsKICBtYWNoX21zZ190eXBlX251bWJlcl90IGRh
dGFDbnQ7CiB9IF9fUmVwbHlfX3ZtX3JlYWRfdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNwcmFnbWEg
cGFjayg0KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwogIE5E
Ul9yZWNvcmRfdCBORFI7CiAga2Vybl9yZXR1cm5fdCBSZXRDb2RlOwogIHZtX3JlYWRfZW50cnlf
dCBkYXRhX2xpc3Q7CiB9IF9fUmVwbHlfX3ZtX3JlYWRfbGlzdF90OwoKI3ByYWdtYSBwYWNrKCkK
CgoKI3ByYWdtYSBwYWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNnX2hlYWRlcl90
IEhlYWQ7CiAgTkRSX3JlY29yZF90IE5EUjsKICBrZXJuX3JldHVybl90IFJldENvZGU7CiB9IF9f
UmVwbHlfX3ZtX3dyaXRlX3Q7CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0
eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3Qg
TkRSOwogIGtlcm5fcmV0dXJuX3QgUmV0Q29kZTsKIH0gX19SZXBseV9fdm1fY29weV90OwoKI3By
YWdtYSBwYWNrKCkKCgoKI3ByYWdtYSBwYWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hf
bXNnX2hlYWRlcl90IEhlYWQ7CiAgTkRSX3JlY29yZF90IE5EUjsKICBrZXJuX3JldHVybl90IFJl
dENvZGU7CiAgdm1fc2l6ZV90IG91dHNpemU7CiB9IF9fUmVwbHlfX3ZtX3JlYWRfb3ZlcndyaXRl
X3Q7CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7
CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3QgTkRSOwogIGtlcm5fcmV0
dXJuX3QgUmV0Q29kZTsKIH0gX19SZXBseV9fdm1fbXN5bmNfdDsKCiNwcmFnbWEgcGFjaygpCgoK
CiNwcmFnbWEgcGFjayg0KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBI
ZWFkOwogIE5EUl9yZWNvcmRfdCBORFI7CiAga2Vybl9yZXR1cm5fdCBSZXRDb2RlOwogfSBfX1Jl
cGx5X192bV9iZWhhdmlvcl9zZXRfdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNwcmFnbWEgcGFjayg0
KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwogIE5EUl9yZWNv
cmRfdCBORFI7CiAga2Vybl9yZXR1cm5fdCBSZXRDb2RlOwogIHZtX2FkZHJlc3NfdCBhZGRyZXNz
OwogfSBfX1JlcGx5X192bV9tYXBfdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNwcmFnbWEgcGFjayg0
KQoKIHR5cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwogIE5EUl9yZWNv
cmRfdCBORFI7CiAga2Vybl9yZXR1cm5fdCBSZXRDb2RlOwogIHZtX21hY2hpbmVfYXR0cmlidXRl
X3ZhbF90IHZhbHVlOwogfSBfX1JlcGx5X192bV9tYWNoaW5lX2F0dHJpYnV0ZV90OwoKI3ByYWdt
YSBwYWNrKCkKCgoKI3ByYWdtYSBwYWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNn
X2hlYWRlcl90IEhlYWQ7CiAgTkRSX3JlY29yZF90IE5EUjsKICBrZXJuX3JldHVybl90IFJldENv
ZGU7CiAgdm1fYWRkcmVzc190IHRhcmdldF9hZGRyZXNzOwogIHZtX3Byb3RfdCBjdXJfcHJvdGVj
dGlvbjsKICB2bV9wcm90X3QgbWF4X3Byb3RlY3Rpb247CiB9IF9fUmVwbHlfX3ZtX3JlbWFwX3Q7
CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7CiAg
bWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3QgTkRSOwogIGtlcm5fcmV0dXJu
X3QgUmV0Q29kZTsKIH0gX19SZXBseV9fdGFza193aXJlX3Q7CgojcHJhZ21hIHBhY2soKQoKCgoj
cHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVhZGVyX3QgSGVh
ZDsKCiAgbWFjaF9tc2dfYm9keV90IG1zZ2hfYm9keTsKICBtYWNoX21zZ19wb3J0X2Rlc2NyaXB0
b3JfdCBvYmplY3RfaGFuZGxlOwoKICBORFJfcmVjb3JkX3QgTkRSOwogIHZtX3NpemVfdCBzaXpl
OwogfSBfX1JlcGx5X19tYWNoX21ha2VfbWVtb3J5X2VudHJ5X3Q7CgojcHJhZ21hIHBhY2soKQoK
CgojcHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2dfaGVhZGVyX3Qg
SGVhZDsKICBORFJfcmVjb3JkX3QgTkRSOwogIGtlcm5fcmV0dXJuX3QgUmV0Q29kZTsKICBpbnRl
Z2VyX3QgZGlzcG9zaXRpb247CiAgaW50ZWdlcl90IHJlZl9jb3VudDsKIH0gX19SZXBseV9fdm1f
bWFwX3BhZ2VfcXVlcnlfdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNwcmFnbWEgcGFjayg0KQoKIHR5
cGVkZWYgc3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwoKICBtYWNoX21zZ19ib2R5
X3QgbXNnaF9ib2R5OwogIG1hY2hfbXNnX29vbF9kZXNjcmlwdG9yX3Qgb2JqZWN0czsKCiAgTkRS
X3JlY29yZF90IE5EUjsKICB2bV9pbmZvX3JlZ2lvbl90IHJlZ2lvbjsKICBtYWNoX21zZ190eXBl
X251bWJlcl90IG9iamVjdHNDbnQ7CiB9IF9fUmVwbHlfX21hY2hfdm1fcmVnaW9uX2luZm9fdDsK
CiNwcmFnbWEgcGFjaygpCgoKCiNwcmFnbWEgcGFjayg0KQoKIHR5cGVkZWYgc3RydWN0IHsKICBt
YWNoX21zZ19oZWFkZXJfdCBIZWFkOwoKICBtYWNoX21zZ19ib2R5X3QgbXNnaF9ib2R5OwogIG1h
Y2hfbXNnX29vbF9kZXNjcmlwdG9yX3QgcGFnZXM7CgogIE5EUl9yZWNvcmRfdCBORFI7CiAgbWFj
aF9tc2dfdHlwZV9udW1iZXJfdCBwYWdlc0NudDsKIH0gX19SZXBseV9fdm1fbWFwcGVkX3BhZ2Vz
X2luZm9fdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNwcmFnbWEgcGFjayg0KQoKIHR5cGVkZWYgc3Ry
dWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwogIE5EUl9yZWNvcmRfdCBORFI7CiAga2Vy
bl9yZXR1cm5fdCBSZXRDb2RlOwogIHZtX2FkZHJlc3NfdCBhZGRyZXNzOwogIHZtX3NpemVfdCBz
aXplOwogIG5hdHVyYWxfdCBuZXN0aW5nX2RlcHRoOwogIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3Qg
aW5mb0NudDsKICBpbnQgaW5mb1sxOV07CiB9IF9fUmVwbHlfX3ZtX3JlZ2lvbl9yZWN1cnNlX3Q7
CgojcHJhZ21hIHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7CiAg
bWFjaF9tc2dfaGVhZGVyX3QgSGVhZDsKICBORFJfcmVjb3JkX3QgTkRSOwogIGtlcm5fcmV0dXJu
X3QgUmV0Q29kZTsKICB2bV9hZGRyZXNzX3QgYWRkcmVzczsKICB2bV9zaXplX3Qgc2l6ZTsKICBu
YXR1cmFsX3QgbmVzdGluZ19kZXB0aDsKICBtYWNoX21zZ190eXBlX251bWJlcl90IGluZm9DbnQ7
CiAgaW50IGluZm9bMTldOwogfSBfX1JlcGx5X192bV9yZWdpb25fcmVjdXJzZV82NF90OwoKI3By
YWdtYSBwYWNrKCkKCgoKI3ByYWdtYSBwYWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hf
bXNnX2hlYWRlcl90IEhlYWQ7CgogIG1hY2hfbXNnX2JvZHlfdCBtc2doX2JvZHk7CiAgbWFjaF9t
c2dfb29sX2Rlc2NyaXB0b3JfdCBvYmplY3RzOwoKICBORFJfcmVjb3JkX3QgTkRSOwogIHZtX2lu
Zm9fcmVnaW9uXzY0X3QgcmVnaW9uOwogIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3Qgb2JqZWN0c0Nu
dDsKIH0gX19SZXBseV9fbWFjaF92bV9yZWdpb25faW5mb182NF90OwoKI3ByYWdtYSBwYWNrKCkK
CgoKI3ByYWdtYSBwYWNrKDQpCgogdHlwZWRlZiBzdHJ1Y3QgewogIG1hY2hfbXNnX2hlYWRlcl90
IEhlYWQ7CgogIG1hY2hfbXNnX2JvZHlfdCBtc2doX2JvZHk7CiAgbWFjaF9tc2dfcG9ydF9kZXNj
cmlwdG9yX3Qgb2JqZWN0X25hbWU7CgogIE5EUl9yZWNvcmRfdCBORFI7CiAgdm1fYWRkcmVzc190
IGFkZHJlc3M7CiAgdm1fc2l6ZV90IHNpemU7CiAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBpbmZv
Q250OwogIGludCBpbmZvWzEwXTsKIH0gX19SZXBseV9fdm1fcmVnaW9uXzY0X3Q7CgojcHJhZ21h
IHBhY2soKQoKCgojcHJhZ21hIHBhY2soNCkKCiB0eXBlZGVmIHN0cnVjdCB7CiAgbWFjaF9tc2df
aGVhZGVyX3QgSGVhZDsKCiAgbWFjaF9tc2dfYm9keV90IG1zZ2hfYm9keTsKICBtYWNoX21zZ19w
b3J0X2Rlc2NyaXB0b3JfdCBvYmplY3RfaGFuZGxlOwoKICBORFJfcmVjb3JkX3QgTkRSOwogIG1l
bW9yeV9vYmplY3Rfc2l6ZV90IHNpemU7CiB9IF9fUmVwbHlfX21hY2hfbWFrZV9tZW1vcnlfZW50
cnlfNjRfdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNwcmFnbWEgcGFjayg0KQoKIHR5cGVkZWYgc3Ry
dWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwogIE5EUl9yZWNvcmRfdCBORFI7CiAga2Vy
bl9yZXR1cm5fdCBSZXRDb2RlOwogIHZtX2FkZHJlc3NfdCBhZGRyZXNzOwogfSBfX1JlcGx5X192
bV9tYXBfNjRfdDsKCiNwcmFnbWEgcGFjaygpCgoKCiNwcmFnbWEgcGFjayg0KQoKIHR5cGVkZWYg
c3RydWN0IHsKICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOwogIE5EUl9yZWNvcmRfdCBORFI7CiAg
a2Vybl9yZXR1cm5fdCBSZXRDb2RlOwogIGludCBzdGF0ZTsKIH0gX19SZXBseV9fdm1fcHVyZ2Fi
bGVfY29udHJvbF90OwoKI3ByYWdtYSBwYWNrKCkKCgoKCgoKI2RlZmluZSBfX1JlcGx5VW5pb25f
X3ZtX21hcF9zdWJzeXN0ZW1fX2RlZmluZWQgCnVuaW9uIF9fUmVwbHlVbmlvbl9fdm1fbWFwX3N1
YnN5c3RlbSB7CiBfX1JlcGx5X192bV9yZWdpb25fdCBSZXBseV92bV9yZWdpb247CiBfX1JlcGx5
X192bV9hbGxvY2F0ZV90IFJlcGx5X3ZtX2FsbG9jYXRlOwogX19SZXBseV9fdm1fZGVhbGxvY2F0
ZV90IFJlcGx5X3ZtX2RlYWxsb2NhdGU7CiBfX1JlcGx5X192bV9wcm90ZWN0X3QgUmVwbHlfdm1f
cHJvdGVjdDsKIF9fUmVwbHlfX3ZtX2luaGVyaXRfdCBSZXBseV92bV9pbmhlcml0OwogX19SZXBs
eV9fdm1fcmVhZF90IFJlcGx5X3ZtX3JlYWQ7CiBfX1JlcGx5X192bV9yZWFkX2xpc3RfdCBSZXBs
eV92bV9yZWFkX2xpc3Q7CiBfX1JlcGx5X192bV93cml0ZV90IFJlcGx5X3ZtX3dyaXRlOwogX19S
ZXBseV9fdm1fY29weV90IFJlcGx5X3ZtX2NvcHk7CiBfX1JlcGx5X192bV9yZWFkX292ZXJ3cml0
ZV90IFJlcGx5X3ZtX3JlYWRfb3ZlcndyaXRlOwogX19SZXBseV9fdm1fbXN5bmNfdCBSZXBseV92
bV9tc3luYzsKIF9fUmVwbHlfX3ZtX2JlaGF2aW9yX3NldF90IFJlcGx5X3ZtX2JlaGF2aW9yX3Nl
dDsKIF9fUmVwbHlfX3ZtX21hcF90IFJlcGx5X3ZtX21hcDsKIF9fUmVwbHlfX3ZtX21hY2hpbmVf
YXR0cmlidXRlX3QgUmVwbHlfdm1fbWFjaGluZV9hdHRyaWJ1dGU7CiBfX1JlcGx5X192bV9yZW1h
cF90IFJlcGx5X3ZtX3JlbWFwOwogX19SZXBseV9fdGFza193aXJlX3QgUmVwbHlfdGFza193aXJl
OwogX19SZXBseV9fbWFjaF9tYWtlX21lbW9yeV9lbnRyeV90IFJlcGx5X21hY2hfbWFrZV9tZW1v
cnlfZW50cnk7CiBfX1JlcGx5X192bV9tYXBfcGFnZV9xdWVyeV90IFJlcGx5X3ZtX21hcF9wYWdl
X3F1ZXJ5OwogX19SZXBseV9fbWFjaF92bV9yZWdpb25faW5mb190IFJlcGx5X21hY2hfdm1fcmVn
aW9uX2luZm87CiBfX1JlcGx5X192bV9tYXBwZWRfcGFnZXNfaW5mb190IFJlcGx5X3ZtX21hcHBl
ZF9wYWdlc19pbmZvOwogX19SZXBseV9fdm1fcmVnaW9uX3JlY3Vyc2VfdCBSZXBseV92bV9yZWdp
b25fcmVjdXJzZTsKIF9fUmVwbHlfX3ZtX3JlZ2lvbl9yZWN1cnNlXzY0X3QgUmVwbHlfdm1fcmVn
aW9uX3JlY3Vyc2VfNjQ7CiBfX1JlcGx5X19tYWNoX3ZtX3JlZ2lvbl9pbmZvXzY0X3QgUmVwbHlf
bWFjaF92bV9yZWdpb25faW5mb182NDsKIF9fUmVwbHlfX3ZtX3JlZ2lvbl82NF90IFJlcGx5X3Zt
X3JlZ2lvbl82NDsKIF9fUmVwbHlfX21hY2hfbWFrZV9tZW1vcnlfZW50cnlfNjRfdCBSZXBseV9t
YWNoX21ha2VfbWVtb3J5X2VudHJ5XzY0OwogX19SZXBseV9fdm1fbWFwXzY0X3QgUmVwbHlfdm1f
bWFwXzY0OwogX19SZXBseV9fdm1fcHVyZ2FibGVfY29udHJvbF90IFJlcGx5X3ZtX3B1cmdhYmxl
X2NvbnRyb2w7Cn07CgoKCiNkZWZpbmUgc3Vic3lzdGVtX3RvX25hbWVfbWFwX3ZtX21hcCB7ICJ2
bV9yZWdpb24iLCAzODAwIH0sIHsgInZtX2FsbG9jYXRlIiwgMzgwMSB9LCB7ICJ2bV9kZWFsbG9j
YXRlIiwgMzgwMiB9LCB7ICJ2bV9wcm90ZWN0IiwgMzgwMyB9LCB7ICJ2bV9pbmhlcml0IiwgMzgw
NCB9LCB7ICJ2bV9yZWFkIiwgMzgwNSB9LCB7ICJ2bV9yZWFkX2xpc3QiLCAzODA2IH0sIHsgInZt
X3dyaXRlIiwgMzgwNyB9LCB7ICJ2bV9jb3B5IiwgMzgwOCB9LCB7ICJ2bV9yZWFkX292ZXJ3cml0
ZSIsIDM4MDkgfSwgeyAidm1fbXN5bmMiLCAzODEwIH0sIHsgInZtX2JlaGF2aW9yX3NldCIsIDM4
MTEgfSwgeyAidm1fbWFwIiwgMzgxMiB9LCB7ICJ2bV9tYWNoaW5lX2F0dHJpYnV0ZSIsIDM4MTMg
fSwgeyAidm1fcmVtYXAiLCAzODE0IH0sIHsgInRhc2tfd2lyZSIsIDM4MTUgfSwgeyAibWFjaF9t
YWtlX21lbW9yeV9lbnRyeSIsIDM4MTYgfSwgeyAidm1fbWFwX3BhZ2VfcXVlcnkiLCAzODE3IH0s
IHsgIm1hY2hfdm1fcmVnaW9uX2luZm8iLCAzODE4IH0sIHsgInZtX21hcHBlZF9wYWdlc19pbmZv
IiwgMzgxOSB9LCB7ICJ2bV9yZWdpb25fcmVjdXJzZSIsIDM4MjEgfSwgeyAidm1fcmVnaW9uX3Jl
Y3Vyc2VfNjQiLCAzODIyIH0sIHsgIm1hY2hfdm1fcmVnaW9uX2luZm9fNjQiLCAzODIzIH0sIHsg
InZtX3JlZ2lvbl82NCIsIDM4MjQgfSwgeyAibWFjaF9tYWtlX21lbW9yeV9lbnRyeV82NCIsIDM4
MjUgfSwgeyAidm1fbWFwXzY0IiwgMzgyNiB9LCB7ICJ2bV9wdXJnYWJsZV9jb250cm9sIiwgMzgz
MCB9CiMgMzkgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRp
b24uaCIgMgojIDU2ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxv
Y2F0aW9uLmgiCiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMyA0CiMgNTcgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb24uaCIgMgoKCgojIDEgIi91
c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAxIDMgNAojIDc3ICIvdXNyL2luY2x1ZGUvc3lzL21tYW4u
aCIgMyA0CiNkZWZpbmUgX1NZU19NTUFOX0hfIAojIDEwNyAiL3Vzci9pbmNsdWRlL3N5cy9tbWFu
LmgiIDMgNAojZGVmaW5lIFBST1RfTk9ORSAweDAwCiNkZWZpbmUgUFJPVF9SRUFEIDB4MDEKI2Rl
ZmluZSBQUk9UX1dSSVRFIDB4MDIKI2RlZmluZSBQUk9UX0VYRUMgMHgwNAoKCgoKCiNkZWZpbmUg
TUFQX1NIQVJFRCAweDAwMDEKI2RlZmluZSBNQVBfUFJJVkFURSAweDAwMDIKCiNkZWZpbmUgTUFQ
X0NPUFkgTUFQX1BSSVZBVEUKCgoKCgojZGVmaW5lIE1BUF9GSVhFRCAweDAwMTAKCiNkZWZpbmUg
TUFQX1JFTkFNRSAweDAwMjAKI2RlZmluZSBNQVBfTk9SRVNFUlZFIDB4MDA0MAojZGVmaW5lIE1B
UF9SRVNFUlZFRDAwODAgMHgwMDgwCiNkZWZpbmUgTUFQX05PRVhURU5EIDB4MDEwMAojZGVmaW5l
IE1BUF9IQVNTRU1BUEhPUkUgMHgwMjAwCiNkZWZpbmUgTUFQX05PQ0FDSEUgMHgwNDAwCgoKCgoK
I2RlZmluZSBNQ0xfQ1VSUkVOVCAweDAwMDEKI2RlZmluZSBNQ0xfRlVUVVJFIDB4MDAwMgoKCgoK
I2RlZmluZSBNQVBfRkFJTEVEICgodm9pZCAqKS0xKQoKCgoKI2RlZmluZSBNU19BU1lOQyAweDAw
MDEKI2RlZmluZSBNU19JTlZBTElEQVRFIDB4MDAwMgojZGVmaW5lIE1TX1NZTkMgMHgwMDEwCgoK
I2RlZmluZSBNU19LSUxMUEFHRVMgMHgwMDA0CiNkZWZpbmUgTVNfREVBQ1RJVkFURSAweDAwMDgK
CgoKCiNkZWZpbmUgTUFQX0ZJTEUgMHgwMDAwCiNkZWZpbmUgTUFQX0FOT04gMHgxMDAwCgoKCgoK
CiNkZWZpbmUgUE9TSVhfTUFEVl9OT1JNQUwgMAojZGVmaW5lIFBPU0lYX01BRFZfUkFORE9NIDEK
I2RlZmluZSBQT1NJWF9NQURWX1NFUVVFTlRJQUwgMgojZGVmaW5lIFBPU0lYX01BRFZfV0lMTE5F
RUQgMwojZGVmaW5lIFBPU0lYX01BRFZfRE9OVE5FRUQgNAoKCiNkZWZpbmUgTUFEVl9OT1JNQUwg
UE9TSVhfTUFEVl9OT1JNQUwKI2RlZmluZSBNQURWX1JBTkRPTSBQT1NJWF9NQURWX1JBTkRPTQoj
ZGVmaW5lIE1BRFZfU0VRVUVOVElBTCBQT1NJWF9NQURWX1NFUVVFTlRJQUwKI2RlZmluZSBNQURW
X1dJTExORUVEIFBPU0lYX01BRFZfV0lMTE5FRUQKI2RlZmluZSBNQURWX0RPTlRORUVEIFBPU0lY
X01BRFZfRE9OVE5FRUQKI2RlZmluZSBNQURWX0ZSRUUgNQojZGVmaW5lIE1BRFZfWkVST19XSVJF
RF9QQUdFUyA2CiNkZWZpbmUgTUFEVl9GUkVFX1JFVVNBQkxFIDcKI2RlZmluZSBNQURWX0ZSRUVf
UkVVU0UgOAojZGVmaW5lIE1BRFZfQ0FOX1JFVVNFIDkKCgoKCiNkZWZpbmUgTUlOQ09SRV9JTkNP
UkUgMHgxCiNkZWZpbmUgTUlOQ09SRV9SRUZFUkVOQ0VEIDB4MgojZGVmaW5lIE1JTkNPUkVfTU9E
SUZJRUQgMHg0CiNkZWZpbmUgTUlOQ09SRV9SRUZFUkVOQ0VEX09USEVSIDB4OAojZGVmaW5lIE1J
TkNPUkVfTU9ESUZJRURfT1RIRVIgMHgxMAoKCgoKZXh0ZXJuICJDIiB7CgppbnQgbWxvY2thbGwo
aW50KTsKaW50IG11bmxvY2thbGwodm9pZCk7CgppbnQgbWxvY2soY29uc3Qgdm9pZCAqLCBzaXpl
X3QpOwoKI2RlZmluZSBfTU1BUCAKCnZvaWQgKiBtbWFwKHZvaWQgKiwgc2l6ZV90LCBpbnQsIGlu
dCwgaW50LCBvZmZfdCkgX19hc20oIl8iICJtbWFwIiApOwoKCmludCBtcHJvdGVjdCh2b2lkICos
IHNpemVfdCwgaW50KSBfX2FzbSgiXyIgIm1wcm90ZWN0IiApOwoKaW50IG1zeW5jKHZvaWQgKiwg
c2l6ZV90LCBpbnQpIF9fYXNtKCJfIiAibXN5bmMiICk7CgppbnQgbXVubG9jayhjb25zdCB2b2lk
ICosIHNpemVfdCk7CgppbnQgbXVubWFwKHZvaWQgKiwgc2l6ZV90KSBfX2FzbSgiXyIgIm11bm1h
cCIgKTsKCmludCBzaG1fb3Blbihjb25zdCBjaGFyICosIGludCwgLi4uKTsKaW50IHNobV91bmxp
bmsoY29uc3QgY2hhciAqKTsKCmludCBwb3NpeF9tYWR2aXNlKHZvaWQgKiwgc2l6ZV90LCBpbnQp
OwoKCmludCBtYWR2aXNlKHZvaWQgKiwgc2l6ZV90LCBpbnQpOwppbnQgbWluY29yZShjb25zdCB2
b2lkICosIHNpemVfdCwgY2hhciAqKTsKaW50IG1pbmhlcml0KHZvaWQgKiwgc2l6ZV90LCBpbnQp
OwoKfQojIDYxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0
aW9uLmgiIDIKCgoKbmFtZXNwYWNlIFdURiB7CiMgODIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb24uaCIKY2xhc3MgUGFnZUFsbG9jYXRpb24gOiBwcml2
YXRlIFBhZ2VCbG9jayB7CnB1YmxpYzoKICAgIFBhZ2VBbGxvY2F0aW9uKCkKICAgIHsKICAgIH0K
CiAgICB1c2luZyBQYWdlQmxvY2s6OnNpemU7CiAgICB1c2luZyBQYWdlQmxvY2s6OmJhc2U7CgoK
ICAgIHVzaW5nIFBhZ2VCbG9jazo6b3BlcmF0b3IgYm9vbDsKCgoKCgoKICAgIHN0YXRpYyBQYWdl
QWxsb2NhdGlvbiBhbGxvY2F0ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdl
ID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wg
ZXhlY3V0YWJsZSA9IGZhbHNlKQogICAgewogICAgICAgIGRvIGlmICghKGlzUGFnZUFsaWduZWQo
c2l6ZSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb24uaCIsIDEwMSwgX19QUkVUVFlfRlVOQ1RJT05f
XywgImlzUGFnZUFsaWduZWQoc2l6ZSkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihp
bnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBQYWdlQWxsb2NhdGlvbihPU0Fs
bG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFi
bGUpLCBzaXplKTsKICAgIH0KCiAgICB2b2lkIGRlYWxsb2NhdGUoKQogICAgewoKCiAgICAgICAg
UGFnZUFsbG9jYXRpb24gdG1wOwogICAgICAgIHN0ZDo6c3dhcCh0bXAsICp0aGlzKTsKCiAgICAg
ICAgZG8gaWYgKCEodG1wKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9uLmgiLCAxMTIsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sICJ0bXAiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKiko
dWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxz
ZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKCEqdGhpcykpIHsgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQWxs
b2NhdGlvbi5oIiwgMTEzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiISp0aGlzIik7IGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgT1NB
bGxvY2F0b3I6OmRlY29tbWl0QW5kUmVsZWFzZSh0bXAuYmFzZSgpLCB0bXAuc2l6ZSgpKTsKICAg
IH0KCnByaXZhdGU6CiAgICBQYWdlQWxsb2NhdGlvbih2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkK
ICAgICAgICA6IFBhZ2VCbG9jayhiYXNlLCBzaXplLCBmYWxzZSkKICAgIHsKICAgIH0KfTsKCn0K
CnVzaW5nIFdURjo6UGFnZUFsbG9jYXRpb247CiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUGFnZVJlc2VydmF0aW9uLmgiIDIKCm5hbWVzcGFjZSBXVEYgewojIDU3ICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oIgpjbGFz
cyBQYWdlUmVzZXJ2YXRpb24gOiBwcml2YXRlIFBhZ2VCbG9jayB7CnB1YmxpYzoKICAgIFBhZ2VS
ZXNlcnZhdGlvbigpCiAgICAgICAgOiBtX2NvbW1pdHRlZCgwKQogICAgICAgICwgbV93cml0YWJs
ZShmYWxzZSkKICAgICAgICAsIG1fZXhlY3V0YWJsZShmYWxzZSkKICAgIHsKICAgIH0KCiAgICB1
c2luZyBQYWdlQmxvY2s6OmJhc2U7CiAgICB1c2luZyBQYWdlQmxvY2s6OnNpemU7CgoKICAgIHVz
aW5nIFBhZ2VCbG9jazo6b3BlcmF0b3IgYm9vbDsKCgoKCgoKICAgIHZvaWQgY29tbWl0KHZvaWQq
IHN0YXJ0LCBzaXplX3Qgc2l6ZSkKICAgIHsKICAgICAgICBkbyBpZiAoISgqdGhpcykpIHsgV1RG
UmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9QYWdlUmVzZXJ2YXRpb24uaCIsIDc5LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiKnRoaXMiKTsg
ZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYg
PSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAg
ICAgIGRvIGlmICghKGlzUGFnZUFsaWduZWQoc3RhcnQpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25G
YWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VSZXNlcnZhdGlv
bi5oIiwgODAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpc1BhZ2VBbGlnbmVkKHN0YXJ0KSIpOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgZG8gaWYgKCEoaXNQYWdlQWxpZ25lZChzaXplKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFp
bHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlUmVzZXJ2YXRpb24u
aCIsIDgxLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNQYWdlQWxpZ25lZChzaXplKSIpOyBkbyB7
IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7
ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
ZG8gaWYgKCEoY29udGFpbnMoc3RhcnQsIHNpemUpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWls
dXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VSZXNlcnZhdGlvbi5o
IiwgODIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJjb250YWlucyhzdGFydCwgc2l6ZSkiKTsgZG8g
eyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAw
OyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwoKICAgICAg
ICBtX2NvbW1pdHRlZCArPSBzaXplOwogICAgICAgIE9TQWxsb2NhdG9yOjpjb21taXQoc3RhcnQs
IHNpemUsIG1fd3JpdGFibGUsIG1fZXhlY3V0YWJsZSk7CiAgICB9CgogICAgdm9pZCBkZWNvbW1p
dCh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemUpCiAgICB7CiAgICAgICAgZG8gaWYgKCEoKnRoaXMp
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGFnZVJlc2VydmF0aW9uLmgiLCA5MCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIip0
aGlzIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICBkbyBpZiAoIShpc1BhZ2VBbGlnbmVkKHN0YXJ0KSkpIHsgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlUmVz
ZXJ2YXRpb24uaCIsIDkxLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNQYWdlQWxpZ25lZChzdGFy
dCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgICAgIGRvIGlmICghKGlzUGFnZUFsaWduZWQoc2l6ZSkpKSB7IFdURlJlcG9ydEFzc2Vy
dGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFnZVJlc2Vy
dmF0aW9uLmgiLCA5MiwgX19QUkVUVFlfRlVOQ1RJT05fXywgImlzUGFnZUFsaWduZWQoc2l6ZSki
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwog
ICAgICAgIGRvIGlmICghKGNvbnRhaW5zKHN0YXJ0LCBzaXplKSkpIHsgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlUmVzZXJ2
YXRpb24uaCIsIDkzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiY29udGFpbnMoc3RhcnQsIHNpemUp
Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRi
ZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsK
CiAgICAgICAgbV9jb21taXR0ZWQgLT0gc2l6ZTsKICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21t
aXQoc3RhcnQsIHNpemUpOwogICAgfQoKICAgIHNpemVfdCBjb21taXR0ZWQoKQogICAgewogICAg
ICAgIHJldHVybiBtX2NvbW1pdHRlZDsKICAgIH0KCiAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9u
IHJlc2VydmUoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2Nh
dG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUg
PSBmYWxzZSkKICAgIHsKICAgICAgICBkbyBpZiAoIShpc1BhZ2VBbGlnbmVkKHNpemUpKSkgeyBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BhZ2VSZXNlcnZhdGlvbi5oIiwgMTA2LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNQYWdl
QWxpZ25lZChzaXplKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50
cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsg
fSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6
cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNp
emUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBmYWxzZSk7CiAgICB9CgogICAgc3RhdGljIFBhZ2VS
ZXNlcnZhdGlvbiByZXNlcnZlV2l0aEd1YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9y
OjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUg
PSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKICAgIHsKICAgICAgICBkbyBpZiAoIShp
c1BhZ2VBbGlnbmVkKHNpemUpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oIiwgMTEyLCBfX1BS
RVRUWV9GVU5DVElPTl9fLCAiaXNQYWdlQWxpZ25lZChzaXplKSIpOyBkbyB7IFdURlJlcG9ydEJh
Y2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgp
KTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIFBhZ2VS
ZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUgKyBwYWdlU2l6
ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKSwgc2l6ZSwgd3JpdGFi
bGUsIGV4ZWN1dGFibGUsIHRydWUpOwogICAgfQoKICAgIHZvaWQgZGVhbGxvY2F0ZSgpCiAgICB7
CiAgICAgICAgZG8gaWYgKCEoIW1fY29tbWl0dGVkKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWls
dXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VSZXNlcnZhdGlvbi5o
IiwgMTE4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIW1fY29tbWl0dGVkIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKCgoKICAgICAgICBQYWdl
UmVzZXJ2YXRpb24gdG1wOwogICAgICAgIHN0ZDo6c3dhcCh0bXAsICp0aGlzKTsKCiAgICAgICAg
ZG8gaWYgKCEodG1wKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oIiwgMTI1LCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAidG1wIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVp
bnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAoISghKnRoaXMpKSB7IFdURlJlcG9ydEFzc2Vy
dGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFnZVJlc2Vy
dmF0aW9uLmgiLCAxMjYsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhKnRoaXMiKTsgZG8geyBXVEZS
ZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZv
aWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwoKICAgICAgICBPU0Fs
bG9jYXRvcjo6cmVsZWFzZURlY29tbWl0dGVkKHRtcC5iYXNlKCksIHRtcC5zaXplKCkpOwogICAg
fQoKcHJpdmF0ZToKICAgIFBhZ2VSZXNlcnZhdGlvbih2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSwg
Ym9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGhhc0d1YXJkUGFnZXMpCiAgICAg
ICAgOiBQYWdlQmxvY2soYmFzZSwgc2l6ZSwgaGFzR3VhcmRQYWdlcykKICAgICAgICAsIG1fY29t
bWl0dGVkKDApCiAgICAgICAgLCBtX3dyaXRhYmxlKHdyaXRhYmxlKQogICAgICAgICwgbV9leGVj
dXRhYmxlKGV4ZWN1dGFibGUpCiAgICB7CiAgICB9CgogICAgc2l6ZV90IG1fY29tbWl0dGVkOwog
ICAgYm9vbCBtX3dyaXRhYmxlOwogICAgYm9vbCBtX2V4ZWN1dGFibGU7Cn07Cgp9Cgp1c2luZyBX
VEY6OlBhZ2VSZXNlcnZhdGlvbjsKIyAzMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaCIgMgoKbmFtZXNwYWNlIFdURiB7CgpjbGFzcyBQ
YWdlQWxsb2NhdGlvbkFsaWduZWQgOiBwcml2YXRlIFBhZ2VCbG9jayB7CnB1YmxpYzoKICAgIFBh
Z2VBbGxvY2F0aW9uQWxpZ25lZCgpCiAgICB7CiAgICB9CgogICAgdXNpbmcgUGFnZUJsb2NrOjpv
cGVyYXRvciBib29sOwogICAgdXNpbmcgUGFnZUJsb2NrOjpzaXplOwogICAgdXNpbmcgUGFnZUJs
b2NrOjpiYXNlOwoKICAgIHN0YXRpYyBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGUoc2l6
ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9T
QWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1
dGFibGUgPSBmYWxzZSk7CgogICAgdm9pZCBkZWFsbG9jYXRlKCk7Cgpwcml2YXRlOgoKICAgIFBh
Z2VBbGxvY2F0aW9uQWxpZ25lZCh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKICAgICAgICA6IFBh
Z2VCbG9jayhiYXNlLCBzaXplLCBmYWxzZSkKICAgIHsKICAgIH0KIyA2MyAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaCIKfTsKCgp9Cgp1
c2luZyBXVEY6OlBhZ2VBbGxvY2F0aW9uQWxpZ25lZDsKIyAyOSAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCIgMgoKCgojZGVmaW5lIEhFQVBfTE9HX0JM
T0NLX1NUQVRFX1RSQU5TSVRJT05TIDAKCgoKCgoKCiNkZWZpbmUgSEVBUF9ERUJVR19CTE9DSyhi
bG9jaykgKCh2b2lkKTApCgoKbmFtZXNwYWNlIEpTQyB7CgogICAgY2xhc3MgSGVhcDsKICAgIGNs
YXNzIEpTQ2VsbDsKCiAgICB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwoKICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgS0IgPSAxMDI0OwogICAgc3RhdGljIGNvbnN0IHNpemVfdCBNQiA9IDEwMjQgKiAx
MDI0OwojIDYxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oIgogICAgY2xhc3MgTWFya2VkQmxvY2sgOiBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8
TWFya2VkQmxvY2s+IHsKICAgICAgICBmcmllbmQgY2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0
Tm9kZTxNYXJrZWRCbG9jaz47CiAgICBwdWJsaWM6CgoKICAgICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGF0b21TaXplID0gNCAqIHNpemVvZih2b2lkKik7CiAgICAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBibG9ja1NpemUgPSAxNiAqIEtCOwoKICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0
b21zUGVyQmxvY2sgPSBibG9ja1NpemUgLyBhdG9tU2l6ZTsKICAgICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IG93bmVyU2V0c1BlckJsb2NrID0gODsKCiAgICAgICAgc3RydWN0IEZyZWVDZWxsIHsK
ICAgICAgICAgICAgRnJlZUNlbGwqIG5leHQ7CgogICAgICAgICAgICB2b2lkIHNldE5vT2JqZWN0
KCkKICAgICAgICAgICAgewoKCiAgICAgICAgICAgICAgICBuZXh0ID0gMDsKICAgICAgICAgICAg
fQogICAgICAgIH07CgogICAgICAgIHN0cnVjdCBWb2lkRnVuY3RvciB7CiAgICAgICAgICAgIHR5
cGVkZWYgdm9pZCBSZXR1cm5UeXBlOwogICAgICAgICAgICB2b2lkIHJldHVyblZhbHVlKCkgeyB9
CiAgICAgICAgfTsKCiAgICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVhdGUoSGVhcCosIHNp
emVfdCBjZWxsU2l6ZSk7CiAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShNYXJrZWRCbG9jayop
OwoKICAgICAgICBzdGF0aWMgYm9vbCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKICAgICAg
ICBzdGF0aWMgTWFya2VkQmxvY2sqIGJsb2NrRm9yKGNvbnN0IHZvaWQqKTsKICAgICAgICBzdGF0
aWMgc2l6ZV90IGZpcnN0QXRvbSgpOwoKICAgICAgICBIZWFwKiBoZWFwKCkgY29uc3Q7CgogICAg
ICAgIGJvb2wgaW5OZXdTcGFjZSgpOwogICAgICAgIHZvaWQgc2V0SW5OZXdTcGFjZShib29sKTsK
CiAgICAgICAgdm9pZCogYWxsb2NhdGUoKTsKICAgICAgICB2b2lkIHN3ZWVwKCk7CgoKCiAgICAg
ICAgRnJlZUNlbGwqIGxhenlTd2VlcCgpOwoKCiAgICAgICAgdm9pZCBub3RpZnlNYXlIYXZlRnJl
c2hGcmVlQ2VsbHMoKTsKCiAgICAgICAgdm9pZCBpbml0Rm9yQ2VsbFNpemUoc2l6ZV90IGNlbGxT
aXplKTsKCgoKCiAgICAgICAgRnJlZUNlbGwqIGJsZXNzTmV3QmxvY2tGb3JGYXN0UGF0aCgpOwog
ICAgICAgIHZvaWQgYmxlc3NOZXdCbG9ja0ZvclNsb3dQYXRoKCk7CgogICAgICAgIHZvaWQgcmVz
ZXQoKTsKCgoKICAgICAgICB2b2lkIGNhbm9uaWNhbGl6ZUJsb2NrKEZyZWVDZWxsKiBmaXJzdEZy
ZWVDZWxsKTsKCiAgICAgICAgYm9vbCBpc0VtcHR5KCk7CgogICAgICAgIHZvaWQgY2xlYXJNYXJr
cygpOwogICAgICAgIHNpemVfdCBtYXJrQ291bnQoKTsKCiAgICAgICAgc2l6ZV90IGNlbGxTaXpl
KCk7CgogICAgICAgIHNpemVfdCBzaXplKCk7CiAgICAgICAgc2l6ZV90IGNhcGFjaXR5KCk7Cgog
ICAgICAgIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgIGJvb2wgdGVzdEFuZFNl
dE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgYm9vbCB0ZXN0QW5kQ2xlYXJNYXJrZWQoY29u
c3Qgdm9pZCopOwogICAgICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKCiAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaENlbGwoRnVuY3RvciYpOwoK
ICAgIHByaXZhdGU6CiAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja01hc2sgPSB+KGJs
b2NrU2l6ZSAtIDEpOwogICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbU1hc2sgPSB+KGF0
b21TaXplIC0gMSk7CgogICAgICAgIGVudW0gRGVzdHJ1Y3RvclN0YXRlIHsgRnJlZUNlbGxzRG9u
dEhhdmVPYmplY3RzLCBTb21lRnJlZUNlbGxzU3RpbGxIYXZlT2JqZWN0cywgQWxsRnJlZUNlbGxz
SGF2ZU9iamVjdHMgfTsKCiAgICAgICAgdHlwZWRlZiBjaGFyIEF0b21bYXRvbVNpemVdOwoKICAg
ICAgICBNYXJrZWRCbG9jayhjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmLCBIZWFwKiwgc2l6
ZV90IGNlbGxTaXplKTsKICAgICAgICBBdG9tKiBhdG9tcygpOwoKICAgICAgICBzaXplX3QgYXRv
bU51bWJlcihjb25zdCB2b2lkKik7CiAgICAgICAgc2l6ZV90IG93bmVyU2V0TnVtYmVyKGNvbnN0
IEpTQ2VsbCopOwoKICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yU3RhdGUgZGVzdHJ1Y3RvclN0
YXRlPgogICAgICAgIHZvaWQgY2FsbERlc3RydWN0b3IoSlNDZWxsKiwgdm9pZCoganNGaW5hbE9i
amVjdFZQdHIpOwoKICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yU3RhdGUgZGVzdHJ1Y3RvclN0
YXRlPgogICAgICAgIHZvaWQgc3BlY2lhbGl6ZWRSZXNldCgpOwoKICAgICAgICB0ZW1wbGF0ZTxE
ZXN0cnVjdG9yU3RhdGUgZGVzdHJ1Y3RvclN0YXRlPgogICAgICAgIHZvaWQgc3BlY2lhbGl6ZWRT
d2VlcCgpOwoKICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yU3RhdGUgZGVzdHJ1Y3RvclN0YXRl
PgogICAgICAgIE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogcHJvZHVjZUZyZWVMaXN0KCk7CgogICAg
ICAgIHZvaWQgc2V0RGVzdHJ1Y3RvclN0YXRlKERlc3RydWN0b3JTdGF0ZSBkZXN0cnVjdG9yU3Rh
dGUpCiAgICAgICAgewogICAgICAgICAgICBtX2Rlc3RydWN0b3JTdGF0ZSA9IHN0YXRpY19jYXN0
PGludDhfdD4oZGVzdHJ1Y3RvclN0YXRlKTsKICAgICAgICB9CgogICAgICAgIERlc3RydWN0b3JT
dGF0ZSBkZXN0cnVjdG9yU3RhdGUoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERlc3RydWN0b3JTdGF0ZT4obV9kZXN0cnVjdG9yU3RhdGUpOwogICAgICAgIH0KCiAg
ICAgICAgc2l6ZV90IG1fZW5kQXRvbTsKICAgICAgICBzaXplX3QgbV9hdG9tc1BlckNlbGw7CiAg
ICAgICAgV1RGOjpCaXRtYXA8YmxvY2tTaXplIC8gYXRvbVNpemU+IG1fbWFya3M7CiAgICAgICAg
Ym9vbCBtX2luTmV3U3BhY2U7CiAgICAgICAgaW50OF90IG1fZGVzdHJ1Y3RvclN0YXRlOwogICAg
ICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBtX2FsbG9jYXRpb247CiAgICAgICAgSGVhcCogbV9o
ZWFwOwogICAgICAgIE1hcmtlZEJsb2NrKiBtX3ByZXY7CiAgICAgICAgTWFya2VkQmxvY2sqIG1f
bmV4dDsKICAgIH07CgogICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6Zmlyc3RBdG9tKCkK
ICAgIHsKICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPGF0b21TaXplPihz
aXplb2YoTWFya2VkQmxvY2spKSAvIGF0b21TaXplOwogICAgfQoKICAgIGlubGluZSBNYXJrZWRC
bG9jazo6QXRvbSogTWFya2VkQmxvY2s6OmF0b21zKCkKICAgIHsKICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxBdG9tKj4odGhpcyk7CiAgICB9CgogICAgaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OmlzQXRvbUFsaWduZWQoY29uc3Qgdm9pZCogcCkKICAgIHsKICAgICAgICByZXR1cm4g
IShyZWludGVycHJldF9jYXN0PEJpdHM+KHApICYgfmF0b21NYXNrKTsKICAgIH0KCiAgICBpbmxp
bmUgTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpibG9ja0Zvcihjb25zdCB2b2lkKiBwKQogICAg
ewogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE1hcmtlZEJsb2NrKj4ocmVpbnRlcnBy
ZXRfY2FzdDxCaXRzPihwKSAmIGJsb2NrTWFzayk7CiAgICB9CgogICAgaW5saW5lIEhlYXAqIE1h
cmtlZEJsb2NrOjpoZWFwKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9oZWFwOwogICAg
fQoKICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppbk5ld1NwYWNlKCkKICAgIHsKICAgICAg
ICByZXR1cm4gbV9pbk5ld1NwYWNlOwogICAgfQoKICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2Nr
OjpzZXRJbk5ld1NwYWNlKGJvb2wgaW5OZXdTcGFjZSkKICAgIHsKICAgICAgICBtX2luTmV3U3Bh
Y2UgPSBpbk5ld1NwYWNlOwogICAgfQoKICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpub3Rp
ZnlNYXlIYXZlRnJlc2hGcmVlQ2VsbHMoKQogICAgewogICAgICAgICgodm9pZCkwKTsKIyAyNDAg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgiCiAgICAg
ICAgaWYgKGRlc3RydWN0b3JTdGF0ZSgpID09IEZyZWVDZWxsc0RvbnRIYXZlT2JqZWN0cykKICAg
ICAgICAgICAgc2V0RGVzdHJ1Y3RvclN0YXRlKFNvbWVGcmVlQ2VsbHNTdGlsbEhhdmVPYmplY3Rz
KTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNFbXB0eSgpCiAgICB7CiAg
ICAgICAgcmV0dXJuIG1fbWFya3MuaXNFbXB0eSgpOwogICAgfQoKICAgIGlubGluZSB2b2lkIE1h
cmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKICAgIHsKICAgICAgICBtX21hcmtzLmNsZWFyQWxsKCk7
CiAgICB9CgogICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6bWFya0NvdW50KCkKICAgIHsK
ICAgICAgICByZXR1cm4gbV9tYXJrcy5jb3VudCgpOwogICAgfQoKICAgIGlubGluZSBzaXplX3Qg
TWFya2VkQmxvY2s6OmNlbGxTaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gbV9hdG9tc1BlckNl
bGwgKiBhdG9tU2l6ZTsKICAgIH0KCiAgICBpbmxpbmUgc2l6ZV90IE1hcmtlZEJsb2NrOjpzaXpl
KCkKICAgIHsKICAgICAgICByZXR1cm4gbWFya0NvdW50KCkgKiBjZWxsU2l6ZSgpOwogICAgfQoK
ICAgIGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OmNhcGFjaXR5KCkKICAgIHsKICAgICAgICBy
ZXR1cm4gbV9hbGxvY2F0aW9uLnNpemUoKTsKICAgIH0KCiAgICBpbmxpbmUgc2l6ZV90IE1hcmtl
ZEJsb2NrOjphdG9tTnVtYmVyKGNvbnN0IHZvaWQqIHApCiAgICB7CiAgICAgICAgcmV0dXJuIChy
ZWludGVycHJldF9jYXN0PEJpdHM+KHApIC0gcmVpbnRlcnByZXRfY2FzdDxCaXRzPih0aGlzKSkg
LyBhdG9tU2l6ZTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQo
Y29uc3Qgdm9pZCogcCkKICAgIHsKICAgICAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJl
cihwKSk7CiAgICB9CgogICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OnRlc3RBbmRTZXRNYXJr
ZWQoY29uc3Qgdm9pZCogcCkKICAgIHsKICAgICAgICByZXR1cm4gbV9tYXJrcy50ZXN0QW5kU2V0
KGF0b21OdW1iZXIocCkpOwogICAgfQoKICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjp0ZXN0
QW5kQ2xlYXJNYXJrZWQoY29uc3Qgdm9pZCogcCkKICAgIHsKICAgICAgICByZXR1cm4gbV9tYXJr
cy50ZXN0QW5kQ2xlYXIoYXRvbU51bWJlcihwKSk7CiAgICB9CgogICAgaW5saW5lIHZvaWQgTWFy
a2VkQmxvY2s6OnNldE1hcmtlZChjb25zdCB2b2lkKiBwKQogICAgewogICAgICAgIG1fbWFya3Mu
c2V0KGF0b21OdW1iZXIocCkpOwogICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PiBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Zm9yRWFjaENlbGwoRnVuY3RvciYgZnVuY3RvcikK
ICAgIHsKICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207
IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKICAgICAgICAgICAgaWYgKCFtX21hcmtzLmdldChpKSkK
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICBmdW5jdG9yKHJlaW50ZXJwcmV0
X2Nhc3Q8SlNDZWxsKj4oJmF0b21zKClbaV0pKTsKICAgICAgICB9CiAgICB9CgogICAgaW5saW5l
IHNpemVfdCBNYXJrZWRCbG9jazo6b3duZXJTZXROdW1iZXIoY29uc3QgSlNDZWxsKiBjZWxsKQog
ICAgewogICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxCaXRzPihjZWxsKSAtIHJlaW50
ZXJwcmV0X2Nhc3Q8Qml0cz4odGhpcykpICogb3duZXJTZXRzUGVyQmxvY2sgLyBibG9ja1NpemU7
CiAgICB9Cgp9CgpuYW1lc3BhY2UgV1RGIHsKCiAgICBzdHJ1Y3QgTWFya2VkQmxvY2tIYXNoIDog
UHRySGFzaDxKU0M6Ok1hcmtlZEJsb2NrKj4gewogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KEpTQzo6TWFya2VkQmxvY2sqIGNvbnN0JiBrZXkpCiAgICAgICAgewoKCgogICAgICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0M6OkJpdHM+KGtleSkgLyBKU0M6Ok1hcmtlZEJsb2Nr
OjpibG9ja1NpemU7CiAgICAgICAgfQogICAgfTsKCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZh
dWx0SGFzaDxKU0M6Ok1hcmtlZEJsb2NrKj4gewogICAgICAgIHR5cGVkZWYgTWFya2VkQmxvY2tI
YXNoIEhhc2g7CiAgICB9OwoKfQojIDI4ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9ja1NldC5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrU2V0LmgiCiNkZWZpbmUgTWFya2VkQmxvY2tTZXRfaCAKCgojIDEgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1RpbnlCbG9vbUZpbHRlci5oIiAxCiMg
MjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1RpbnlCbG9vbUZpbHRlci5o
IgojZGVmaW5lIFRpbnlCbG9vbUZpbHRlcl9oIAoKbmFtZXNwYWNlIEpTQyB7Cgp0eXBlZGVmIHVp
bnRwdHJfdCBCaXRzOwoKY2xhc3MgVGlueUJsb29tRmlsdGVyIHsKcHVibGljOgogICAgVGlueUJs
b29tRmlsdGVyKCk7CgogICAgdm9pZCBhZGQoQml0cyk7CiAgICBib29sIHJ1bGVPdXQoQml0cykg
Y29uc3Q7Cgpwcml2YXRlOgogICAgQml0cyBtX2JpdHM7Cn07CgppbmxpbmUgVGlueUJsb29tRmls
dGVyOjpUaW55Qmxvb21GaWx0ZXIoKQogICAgOiBtX2JpdHMoMCkKewp9CgppbmxpbmUgdm9pZCBU
aW55Qmxvb21GaWx0ZXI6OmFkZChCaXRzIGJpdHMpCnsKICAgIG1fYml0cyB8PSBiaXRzOwp9Cgpp
bmxpbmUgYm9vbCBUaW55Qmxvb21GaWx0ZXI6OnJ1bGVPdXQoQml0cyBiaXRzKSBjb25zdAp7CiAg
ICBpZiAoIWJpdHMpCiAgICAgICAgcmV0dXJuIHRydWU7CgogICAgaWYgKChiaXRzICYgbV9iaXRz
KSAhPSBiaXRzKQogICAgICAgIHJldHVybiB0cnVlOwoKICAgIHJldHVybiBmYWxzZTsKfQoKfQoj
IDMxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja1NldC5o
IiAyCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBNYXJrZWRCbG9jazsKCmNsYXNzIE1hcmtlZEJs
b2NrU2V0IHsKcHVibGljOgogICAgdm9pZCBhZGQoTWFya2VkQmxvY2sqKTsKICAgIHZvaWQgcmVt
b3ZlKE1hcmtlZEJsb2NrKik7CgogICAgVGlueUJsb29tRmlsdGVyIGZpbHRlcigpIGNvbnN0Owog
ICAgY29uc3QgSGFzaFNldDxNYXJrZWRCbG9jayo+JiBzZXQoKSBjb25zdDsKCnByaXZhdGU6CiAg
ICB2b2lkIHJlY29tcHV0ZUZpbHRlcigpOwoKICAgIFRpbnlCbG9vbUZpbHRlciBtX2ZpbHRlcjsK
ICAgIEhhc2hTZXQ8TWFya2VkQmxvY2sqPiBtX3NldDsKfTsKCmlubGluZSB2b2lkIE1hcmtlZEJs
b2NrU2V0OjphZGQoTWFya2VkQmxvY2sqIGJsb2NrKQp7CiAgICBtX2ZpbHRlci5hZGQocmVpbnRl
cnByZXRfY2FzdDxCaXRzPihibG9jaykpOwogICAgbV9zZXQuYWRkKGJsb2NrKTsKfQoKaW5saW5l
IHZvaWQgTWFya2VkQmxvY2tTZXQ6OnJlbW92ZShNYXJrZWRCbG9jayogYmxvY2spCnsKICAgIGlu
dCBvbGRDYXBhY2l0eSA9IG1fc2V0LmNhcGFjaXR5KCk7CiAgICBtX3NldC5yZW1vdmUoYmxvY2sp
OwogICAgaWYgKG1fc2V0LmNhcGFjaXR5KCkgIT0gb2xkQ2FwYWNpdHkpCiAgICAgICAgcmVjb21w
dXRlRmlsdGVyKCk7Cn0KCmlubGluZSB2b2lkIE1hcmtlZEJsb2NrU2V0OjpyZWNvbXB1dGVGaWx0
ZXIoKQp7CiAgICBUaW55Qmxvb21GaWx0ZXIgZmlsdGVyOwogICAgZm9yIChIYXNoU2V0PE1hcmtl
ZEJsb2NrKj46Oml0ZXJhdG9yIGl0ID0gbV9zZXQuYmVnaW4oKTsgaXQgIT0gbV9zZXQuZW5kKCk7
ICsraXQpCiAgICAgICAgZmlsdGVyLmFkZChyZWludGVycHJldF9jYXN0PEJpdHM+KCppdCkpOwog
ICAgbV9maWx0ZXIgPSBmaWx0ZXI7Cn0KCmlubGluZSBUaW55Qmxvb21GaWx0ZXIgTWFya2VkQmxv
Y2tTZXQ6OmZpbHRlcigpIGNvbnN0CnsKICAgIHJldHVybiBtX2ZpbHRlcjsKfQoKaW5saW5lIGNv
bnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYgTWFya2VkQmxvY2tTZXQ6OnNldCgpIGNvbnN0CnsK
ICAgIHJldHVybiBtX3NldDsKfQoKfQojIDI5ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9OZXdTcGFjZS5oIiAxCiMgMjMgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L05ld1NwYWNlLmgiCiNkZWZpbmUgTmV3U3BhY2VfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgiIDEKIyAyMyAiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgiCiNkZWZpbmUg
TWFjaGluZVRocmVhZHNfaCAKIyAzMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmgiCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIEhlYXA7
CiAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKCiAgICBjbGFzcyBNYWNoaW5lVGhyZWFkcyB7
CiAgICAgICAgcHJpdmF0ZTogTWFjaGluZVRocmVhZHMoY29uc3QgTWFjaGluZVRocmVhZHMmKTsg
TWFjaGluZVRocmVhZHMmIG9wZXJhdG9yPShjb25zdCBNYWNoaW5lVGhyZWFkcyYpOwogICAgcHVi
bGljOgogICAgICAgIE1hY2hpbmVUaHJlYWRzKEhlYXAqKTsKICAgICAgICB+TWFjaGluZVRocmVh
ZHMoKTsKCiAgICAgICAgdm9pZCBnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVS
b290cyYsIHZvaWQqIHN0YWNrQ3VycmVudCk7CgoKCgoKCiAgICBwcml2YXRlOgogICAgICAgIHZv
aWQgZ2F0aGVyRnJvbUN1cnJlbnRUaHJlYWQoQ29uc2VydmF0aXZlUm9vdHMmLCB2b2lkKiBzdGFj
a0N1cnJlbnQpOwojIDYyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNo
aW5lU3RhY2tNYXJrZXIuaCIKICAgICAgICBIZWFwKiBtX2hlYXA7CgoKCgoKCiAgICB9OwoKfQoj
IDI2ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFjZS5oIiAyCgoj
IDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb25BbGln
bmVkLmgiIDEKIyAyOCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3Bh
Y2UuaCIgMgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GaXhlZEFy
cmF5LmgiIDEKIyAzMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3Bh
Y2UuaCIgMgoKCgoKI2RlZmluZSBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKGNsYXNzKSBDT01Q
SUxFX0FTU0VSVChzaXplb2YoY2xhc3MpIDwgTmV3U3BhY2U6Om1heENlbGxTaXplLCBjbGFzc19m
aXRzX2luX2NlbGwpCgpuYW1lc3BhY2UgSlNDIHsKCiAgICBjbGFzcyBIZWFwOwogICAgY2xhc3Mg
SlNDZWxsOwogICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOwogICAgY2xhc3MgV2Vha0dDSGFu
ZGxlOwogICAgY2xhc3MgU2xvdFZpc2l0b3I7CgogICAgY2xhc3MgTmV3U3BhY2UgewogICAgICAg
IHByaXZhdGU6IE5ld1NwYWNlKGNvbnN0IE5ld1NwYWNlJik7IE5ld1NwYWNlJiBvcGVyYXRvcj0o
Y29uc3QgTmV3U3BhY2UmKTsKICAgIHB1YmxpYzoKICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IG1heENlbGxTaXplID0gMTAyNDsKICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IFByb3BlcnR5
U3RvcmFnZU51cnNlcnlTaXplID0gNCAqIE1COwoKICAgICAgICBzdHJ1Y3QgU2l6ZUNsYXNzIHsK
ICAgICAgICAgICAgU2l6ZUNsYXNzKCk7CiAgICAgICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3Io
KTsKICAgICAgICAgICAgdm9pZCBjYW5vbmljYWxpemVCbG9jaygpOwoKICAgICAgICAgICAgTWFy
a2VkQmxvY2s6OkZyZWVDZWxsKiBmaXJzdEZyZWVDZWxsOwogICAgICAgICAgICBNYXJrZWRCbG9j
ayogY3VycmVudEJsb2NrOwogICAgICAgICAgICBNYXJrZWRCbG9jayogbmV4dEJsb2NrOwogICAg
ICAgICAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBibG9ja0xpc3Q7CiAgICAgICAg
ICAgIHNpemVfdCBjZWxsU2l6ZTsKICAgICAgICB9OwoKICAgICAgICBOZXdTcGFjZShIZWFwKik7
CgogICAgICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7CiAgICAgICAgdm9pZCog
YWxsb2NhdGUoU2l6ZUNsYXNzJik7CiAgICAgICAgaW5saW5lIHZvaWQqIGFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlKHNpemVfdCk7CiAgICAgICAgaW5saW5lIGJvb2wgaW5Qcm9wZXJ0eVN0b3JhZ2VO
dXJzZXJ5KHZvaWQqIHB0cik7CiAgICAgICAgaW5saW5lIHZvaWQgcmVzZXRQcm9wZXJ0eVN0b3Jh
Z2VOdXJzZXJ5KCk7CgogICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsKCiAgICAgICAgdm9p
ZCBhZGRCbG9jayhTaXplQ2xhc3MmLCBNYXJrZWRCbG9jayopOwogICAgICAgIHZvaWQgcmVtb3Zl
QmxvY2soTWFya2VkQmxvY2sqKTsKCiAgICAgICAgdm9pZCBjYW5vbmljYWxpemVCbG9ja3MoKTsK
CiAgICAgICAgc2l6ZV90IHdhdGVyTWFyaygpOwogICAgICAgIHNpemVfdCBoaWdoV2F0ZXJNYXJr
KCk7CiAgICAgICAgdm9pZCBzZXRIaWdoV2F0ZXJNYXJrKHNpemVfdCk7CgogICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFj
aEJsb2NrKEZ1bmN0b3ImKTsKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBl
bmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOwoKICAgIHByaXZhdGU6Cgog
ICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRv
bVNpemU7CiAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0gMTI4Owog
ICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVByZWNpc2VBbGxvY2F0aW9uU2l6ZSA9
IHByZWNpc2VDdXRvZmYgLSBwcmVjaXNlU3RlcDsKICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHByZWNpc2VDb3VudCA9IHByZWNpc2VDdXRvZmYgLyBwcmVjaXNlU3RlcCAtIDE7CgoKICAgICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lzZVN0ZXAgPSBwcmVjaXNlQ3V0b2ZmOwogICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ3V0b2ZmID0gbWF4Q2VsbFNpemU7CiAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbXByZWNpc2VDb3VudCA9IGltcHJlY2lzZUN1dG9m
ZiAvIGltcHJlY2lzZVN0ZXAgLSAxOwoKICAgICAgICBTaXplQ2xhc3MgbV9wcmVjaXNlU2l6ZUNs
YXNzZXNbcHJlY2lzZUNvdW50XTsKICAgICAgICBTaXplQ2xhc3MgbV9pbXByZWNpc2VTaXplQ2xh
c3Nlc1tpbXByZWNpc2VDb3VudF07CiAgICAgICAgY2hhciogbV9wcm9wZXJ0eVN0b3JhZ2VOdXJz
ZXJ5OwogICAgICAgIGNoYXIqIG1fcHJvcGVydHlTdG9yYWdlQWxsb2NhdGlvblBvaW50OwogICAg
ICAgIHNpemVfdCBtX3dhdGVyTWFyazsKICAgICAgICBzaXplX3QgbV9oaWdoV2F0ZXJNYXJrOwog
ICAgICAgIEhlYXAqIG1faGVhcDsKICAgIH07CgogICAgaW5saW5lIHNpemVfdCBOZXdTcGFjZTo6
d2F0ZXJNYXJrKCkKICAgIHsKICAgICAgICByZXR1cm4gbV93YXRlck1hcms7CiAgICB9CgogICAg
aW5saW5lIHNpemVfdCBOZXdTcGFjZTo6aGlnaFdhdGVyTWFyaygpCiAgICB7CiAgICAgICAgcmV0
dXJuIG1faGlnaFdhdGVyTWFyazsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBOZXdTcGFjZTo6c2V0
SGlnaFdhdGVyTWFyayhzaXplX3QgaGlnaFdhdGVyTWFyaykKICAgIHsKICAgICAgICBtX2hpZ2hX
YXRlck1hcmsgPSBoaWdoV2F0ZXJNYXJrOwogICAgfQoKICAgIGlubGluZSBOZXdTcGFjZTo6U2l6
ZUNsYXNzJiBOZXdTcGFjZTo6c2l6ZUNsYXNzRm9yKHNpemVfdCBieXRlcykKICAgIHsKICAgICAg
ICBkbyBpZiAoIShieXRlcyAmJiBieXRlcyA8IG1heENlbGxTaXplKSkgeyBXVEZSZXBvcnRBc3Nl
cnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFj
ZS5oIiwgMTIzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiYnl0ZXMgJiYgYnl0ZXMgPCBtYXhDZWxs
U2l6ZSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhi
YmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgaWYgKGJ5dGVzIDw9IG1heGltdW1QcmVjaXNlQWxsb2NhdGlvblNpemUpCiAg
ICAgICAgICAgIHJldHVybiBtX3ByZWNpc2VTaXplQ2xhc3Nlc1soYnl0ZXMgLSAxKSAvIHByZWNp
c2VTdGVwXTsKICAgICAgICByZXR1cm4gbV9pbXByZWNpc2VTaXplQ2xhc3Nlc1soYnl0ZXMgLSAx
KSAvIGltcHJlY2lzZVN0ZXBdOwogICAgfQoKICAgIGlubGluZSB2b2lkKiBOZXdTcGFjZTo6YWxs
b2NhdGUoU2l6ZUNsYXNzJiBzaXplQ2xhc3MpCiAgICB7CiAgICAgICAgTWFya2VkQmxvY2s6OkZy
ZWVDZWxsKiBmaXJzdEZyZWVDZWxsID0gc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGw7CiAgICAgICAg
aWYgKCFmaXJzdEZyZWVDZWxsKSB7CiMgMTQyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9OZXdTcGFjZS5oIgogICAgICAgICAgICBpZiAoc2l6ZUNsYXNzLmN1cnJlbnRCbG9j
aykgewogICAgICAgICAgICAgICAgZG8gaWYgKCEoc2l6ZUNsYXNzLmN1cnJlbnRCbG9jayA9PSBz
aXplQ2xhc3MubmV4dEJsb2NrKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFjZS5oIiwgMTQzLCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAic2l6ZUNsYXNzLmN1cnJlbnRCbG9jayA9PSBzaXplQ2xhc3MubmV4dEJsb2Nr
Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRi
ZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsK
ICAgICAgICAgICAgICAgIG1fd2F0ZXJNYXJrICs9IHNpemVDbGFzcy5uZXh0QmxvY2stPmNhcGFj
aXR5KCk7CiAgICAgICAgICAgICAgICBzaXplQ2xhc3MubmV4dEJsb2NrID0gc2l6ZUNsYXNzLm5l
eHRCbG9jay0+bmV4dCgpOwogICAgICAgICAgICAgICAgc2l6ZUNsYXNzLmN1cnJlbnRCbG9jayA9
IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAoTWFya2VkQmxvY2sqJiBibG9jayA9
IHNpemVDbGFzcy5uZXh0QmxvY2sgOyBibG9jazsgYmxvY2sgPSBibG9jay0+bmV4dCgpKSB7CiAg
ICAgICAgICAgICAgICBmaXJzdEZyZWVDZWxsID0gYmxvY2stPmxhenlTd2VlcCgpOwogICAgICAg
ICAgICAgICAgaWYgKGZpcnN0RnJlZUNlbGwpIHsKICAgICAgICAgICAgICAgICAgICBzaXplQ2xh
c3MuZmlyc3RGcmVlQ2VsbCA9IGZpcnN0RnJlZUNlbGw7CiAgICAgICAgICAgICAgICAgICAgc2l6
ZUNsYXNzLmN1cnJlbnRCbG9jayA9IGJsb2NrOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG1fd2F0ZXJNYXJrICs9IGJsb2NrLT5j
YXBhY2l0eSgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWZpcnN0RnJlZUNlbGwp
CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgIGRvIGlmICghKGZp
cnN0RnJlZUNlbGwpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmgiLCAxNjQsIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJmaXJzdEZyZWVDZWxsIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICop
KHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGwgPSBmaXJz
dEZyZWVDZWxsLT5uZXh0OwogICAgICAgIHJldHVybiBmaXJzdEZyZWVDZWxsOwogICAgfQoKICAg
IGlubGluZSB2b2lkIE5ld1NwYWNlOjpyZXNldFByb3BlcnR5U3RvcmFnZU51cnNlcnkoKQogICAg
ewogICAgICAgIG1fcHJvcGVydHlTdG9yYWdlQWxsb2NhdGlvblBvaW50ID0gbV9wcm9wZXJ0eVN0
b3JhZ2VOdXJzZXJ5OwogICAgfQoKICAgIGlubGluZSB2b2lkKiBOZXdTcGFjZTo6YWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90IHNpemUpCiAgICB7CiAgICAgICAgY2hhciogcmVzdWx0ID0g
bV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9pbnQ7CiAgICAgICAgaWYgKHNpemUgPiBQcm9w
ZXJ0eVN0b3JhZ2VOdXJzZXJ5U2l6ZSkKICAgICAgICAgICAgZG8geyBXVEZSZXBvcnRCYWNrdHJh
Y2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgp
OyB9IHdoaWxlIChmYWxzZSk7CiAgICAgICAgbV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9p
bnQgKz0gc2l6ZTsKICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3Byb3BlcnR5U3Rv
cmFnZUFsbG9jYXRpb25Qb2ludCAtIG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeSkgPiBQcm9wZXJ0
eVN0b3JhZ2VOdXJzZXJ5U2l6ZSkgewogICAgICAgICAgICBtX3Byb3BlcnR5U3RvcmFnZUFsbG9j
YXRpb25Qb2ludCA9IHJlc3VsdDsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgaW5saW5lIGJvb2wgTmV3U3BhY2U6OmluUHJv
cGVydHlTdG9yYWdlTnVyc2VyeSh2b2lkKiBwdHIpCiAgICB7CiAgICAgICAgY2hhciogYWRkciA9
IHN0YXRpY19jYXN0PGNoYXIqPihwdHIpOwogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGFkZHIgLSBtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnkpIDwgUHJvcGVydHlTdG9yYWdlTnVy
c2VyeVNpemU7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0
eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE5ld1NwYWNlOjpmb3JFYWNoQmxvY2soRnVuY3Rv
ciYgZnVuY3RvcikKICAgIHsKICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VD
b3VudDsgKytpKSB7CiAgICAgICAgICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzID0gbV9wcmVjaXNl
U2l6ZUNsYXNzZXNbaV07CiAgICAgICAgICAgIE1hcmtlZEJsb2NrKiBuZXh0OwogICAgICAgICAg
ICBmb3IgKE1hcmtlZEJsb2NrKiBibG9jayA9IHNpemVDbGFzcy5ibG9ja0xpc3QuaGVhZCgpOyBi
bG9jazsgYmxvY2sgPSBuZXh0KSB7CiAgICAgICAgICAgICAgICBuZXh0ID0gYmxvY2stPm5leHQo
KTsKICAgICAgICAgICAgICAgIGZ1bmN0b3IoYmxvY2spOwogICAgICAgICAgICB9CiAgICAgICAg
fQoKICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpIHsK
ICAgICAgICAgICAgU2l6ZUNsYXNzJiBzaXplQ2xhc3MgPSBtX2ltcHJlY2lzZVNpemVDbGFzc2Vz
W2ldOwogICAgICAgICAgICBNYXJrZWRCbG9jayogbmV4dDsKICAgICAgICAgICAgZm9yIChNYXJr
ZWRCbG9jayogYmxvY2sgPSBzaXplQ2xhc3MuYmxvY2tMaXN0LmhlYWQoKTsgYmxvY2s7IGJsb2Nr
ID0gbmV4dCkgewogICAgICAgICAgICAgICAgbmV4dCA9IGJsb2NrLT5uZXh0KCk7CiAgICAgICAg
ICAgICAgICBmdW5jdG9yKGJsb2NrKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAg
cmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTmV3U3BhY2U6
OmZvckVhY2hCbG9jaygpCiAgICB7CiAgICAgICAgRnVuY3RvciBmdW5jdG9yOwogICAgICAgIHJl
dHVybiBmb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICB9CgogICAgaW5saW5lIE5ld1NwYWNlOjpT
aXplQ2xhc3M6OlNpemVDbGFzcygpCiAgICAgICAgOiBmaXJzdEZyZWVDZWxsKDApCiAgICAgICAg
LCBjdXJyZW50QmxvY2soMCkKICAgICAgICAsIG5leHRCbG9jaygwKQogICAgICAgICwgY2VsbFNp
emUoMCkKICAgIHsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBOZXdTcGFjZTo6U2l6ZUNsYXNzOjpy
ZXNldEFsbG9jYXRvcigpCiAgICB7CiAgICAgICAgbmV4dEJsb2NrID0gYmxvY2tMaXN0LmhlYWQo
KTsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBOZXdTcGFjZTo6U2l6ZUNsYXNzOjpjYW5vbmljYWxp
emVCbG9jaygpCiAgICB7CiAgICAgICAgaWYgKGN1cnJlbnRCbG9jaykgewogICAgICAgICAgICBj
dXJyZW50QmxvY2stPmNhbm9uaWNhbGl6ZUJsb2NrKGZpcnN0RnJlZUNlbGwpOwogICAgICAgICAg
ICBmaXJzdEZyZWVDZWxsID0gMDsKICAgICAgICB9CgogICAgICAgIGRvIGlmICghKCFmaXJzdEZy
ZWVDZWxsKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFjZS5oIiwgMjQzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAi
IWZpcnN0RnJlZUNlbGwiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWlu
dHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7
IH0gd2hpbGUgKDApOwoKICAgICAgICBjdXJyZW50QmxvY2sgPSAwOwogICAgICAgIGZpcnN0RnJl
ZUNlbGwgPSAwOwogICAgfQoKfQojIDMwICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmgiCiNkZWZpbmUgU2xvdFZpc2l0b3JfaCAKCiMgMSAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgiCiNkZWZpbmUgTWFya1N0YWNrX2gg
CgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lz
dGVyLmgiIDEKIyAzMCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVyLmgiCiNkZWZpbmUgUmVnaXN0ZXJfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oIiAxCiMgMzMgIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oIiAyCgojIDEgIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9yVHJhaXRzLmgiIDEKIyAzNSAiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgiIDIKCm5hbWVzcGFj
ZSBKU0MgewoKICAgIGNsYXNzIENvZGVCbG9jazsKICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgIGNs
YXNzIEpTQWN0aXZhdGlvbjsKICAgIGNsYXNzIEpTT2JqZWN0OwogICAgY2xhc3MgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjsKICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwoKICAgIHN0cnVjdCBJbnN0
cnVjdGlvbjsKCiAgICB0eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7CgogICAgY2xhc3MgUmVn
aXN0ZXIgewogICAgICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCog
cCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsg
cmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHZvaWQqIHAgPSA6
OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFs
bG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyByZXR1cm4gcDsgfSB2
b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxp
ZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IDo6V1RGOjpm
YXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyB2b2lkKiBw
ID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0
ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyByZXR1
cm4gcDsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxs
b2NNYXRjaFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3
QXJyYXkpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgVGhpc0lz
SGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CiAgICBwdWJsaWM6CiAgICAgICAg
UmVnaXN0ZXIoKTsKCiAgICAgICAgUmVnaXN0ZXIoY29uc3QgSlNWYWx1ZSYpOwogICAgICAgIFJl
Z2lzdGVyJiBvcGVyYXRvcj0oY29uc3QgSlNWYWx1ZSYpOwogICAgICAgIEpTVmFsdWUganNWYWx1
ZSgpIGNvbnN0OwogICAgICAgIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRKU1ZhbHVlKCkgY29uc3Q7
CgogICAgICAgIFJlZ2lzdGVyJiBvcGVyYXRvcj0oQ2FsbEZyYW1lKik7CiAgICAgICAgUmVnaXN0
ZXImIG9wZXJhdG9yPShDb2RlQmxvY2sqKTsKICAgICAgICBSZWdpc3RlciYgb3BlcmF0b3I9KFNj
b3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgUmVnaXN0ZXImIG9wZXJhdG9yPShJbnN0cnVjdGlvbiop
OwoKICAgICAgICBpbnQzMl90IGkoKSBjb25zdDsKICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2
YXRpb24oKSBjb25zdDsKICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSgpIGNvbnN0OwogICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3Q7CiAgICAgICAgSlNPYmplY3QqIGZ1bmN0
aW9uKCkgY29uc3Q7CiAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogcHJvcGVydHlOYW1l
SXRlcmF0b3IoKSBjb25zdDsKICAgICAgICBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbigpIGNv
bnN0OwogICAgICAgIEluc3RydWN0aW9uKiB2UEMoKSBjb25zdDsKCiAgICAgICAgc3RhdGljIFJl
Z2lzdGVyIHdpdGhJbnQoaW50MzJfdCBpKQogICAgICAgIHsKICAgICAgICAgICAgUmVnaXN0ZXIg
ciA9IGpzTnVtYmVyKGkpOwogICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICB9CgogICAgICAg
IHN0YXRpYyBpbmxpbmUgUmVnaXN0ZXIgd2l0aENhbGxlZShKU09iamVjdCogY2FsbGVlKTsKCiAg
ICBwcml2YXRlOgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUgdmFs
dWU7CiAgICAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lOwogICAgICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jazsKICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIHZQQzsKICAgICAgICB9IHU7
CiAgICB9OwoKICAgIGlubGluZSBSZWdpc3Rlcjo6UmVnaXN0ZXIoKQogICAgewoKICAgICAgICAq
dGhpcyA9IEpTVmFsdWUoKTsKCiAgICB9CgogICAgaW5saW5lIFJlZ2lzdGVyOjpSZWdpc3Rlcihj
b25zdCBKU1ZhbHVlJiB2KQogICAgewogICAgICAgIHUudmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUo
dik7CiAgICB9CgogICAgaW5saW5lIFJlZ2lzdGVyJiBSZWdpc3Rlcjo6b3BlcmF0b3I9KGNvbnN0
IEpTVmFsdWUmIHYpCiAgICB7CiAgICAgICAgdS52YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2KTsK
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWUgUmVnaXN0ZXI6
OmpzVmFsdWUoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodS52
YWx1ZSk7CiAgICB9CgogICAgaW5saW5lIEVuY29kZWRKU1ZhbHVlIFJlZ2lzdGVyOjplbmNvZGVk
SlNWYWx1ZSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHUudmFsdWU7CiAgICB9CgoKCiAg
ICBpbmxpbmUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpvcGVyYXRvcj0oQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAgICB7CiAgICAgICAgdS5jYWxsRnJhbWUgPSBjYWxsRnJhbWU7CiAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgfQoKICAgIGlubGluZSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShD
b2RlQmxvY2sqIGNvZGVCbG9jaykKICAgIHsKICAgICAgICB1LmNvZGVCbG9jayA9IGNvZGVCbG9j
azsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgaW5saW5lIFJlZ2lzdGVyJiBSZWdp
c3Rlcjo6b3BlcmF0b3I9KEluc3RydWN0aW9uKiB2UEMpCiAgICB7CiAgICAgICAgdS52UEMgPSB2
UEM7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIGlubGluZSBpbnQzMl90IFJlZ2lz
dGVyOjppKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4ganNWYWx1ZSgpLmFzSW50MzIoKTsK
ICAgIH0KCiAgICBpbmxpbmUgQ2FsbEZyYW1lKiBSZWdpc3Rlcjo6Y2FsbEZyYW1lKCkgY29uc3QK
ICAgIHsKICAgICAgICByZXR1cm4gdS5jYWxsRnJhbWU7CiAgICB9CgogICAgaW5saW5lIENvZGVC
bG9jayogUmVnaXN0ZXI6OmNvZGVCbG9jaygpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHUu
Y29kZUJsb2NrOwogICAgfQoKICAgIGlubGluZSBJbnN0cnVjdGlvbiogUmVnaXN0ZXI6OnZQQygp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHUudlBDOwogICAgfQoKfQoKbmFtZXNwYWNlIFdU
RiB7CgogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEpTQzo6UmVnaXN0ZXI+IDog
VmVjdG9yVHJhaXRzQmFzZTx0cnVlLCBKU0M6OlJlZ2lzdGVyPiB7IH07Cgp9CiMgMzIgIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oIiAyCiMgMSAiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uaCIgMQojIDI3ICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5oIgojZGVm
aW5lIFZUYWJsZVNwZWN0cnVtX2ggCgoKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIEpTQ2VsbDsK
CmNsYXNzIFZUYWJsZVNwZWN0cnVtIHsKcHVibGljOgogICAgVlRhYmxlU3BlY3RydW0oKTsKICAg
IH5WVGFibGVTcGVjdHJ1bSgpOwoKICAgIHZvaWQgY291bnRWUHRyKHZvaWQqKTsKICAgIHZvaWQg
Y291bnQoSlNDZWxsKik7CgogICAgdm9pZCBkdW1wKEZJTEUqIG91dHB1dCwgY29uc3QgY2hhciog
Y29tbWVudCk7Cgpwcml2YXRlOgogICAgSGFzaE1hcDx2b2lkKiwgdW5zaWduZWQgbG9uZz4gbV9t
YXA7Cn07Cgp9CiMgMzMgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFjay5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1Jl
ZmVyZW5jZUhhcnZlc3Rlci5oIiAxCiMgMjEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCIKI2RlZmluZSBXZWFrUmVmZXJlbmNlSGFy
dmVzdGVyX2ggCgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgTWFya1N0YWNrOwpjbGFzcyBTbG90
VmlzaXRvcjsKCmNsYXNzIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewpwdWJsaWM6CiAgICB2aXJ0
dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpID0gMDsKCnByb3RlY3Rl
ZDoKICAgIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoKQogICAgICAgIDogbV9uZXh0QW5kRmxhZygw
KQogICAgewogICAgfQoKICAgIHZpcnR1YWwgfldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoKSB7IH0K
CnByaXZhdGU6CiAgICBmcmllbmQgY2xhc3MgTWFya1N0YWNrOwogICAgZnJpZW5kIGNsYXNzIFNs
b3RWaXNpdG9yOwoKICAgIHVpbnRwdHJfdCBtX25leHRBbmRGbGFnOwp9OwoKfQojIDM0ICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaCIgMgoKCgoKCgoKbmFt
ZXNwYWNlIEpTQyB7CgogICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiAgICBjbGFzcyBKU0ds
b2JhbERhdGE7CiAgICBjbGFzcyBNYXJrU3RhY2s7CiAgICBjbGFzcyBSZWdpc3RlcjsKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdyaXRlQmFycmllckJhc2U7CiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBKSVRXcml0ZUJhcnJpZXI7CgogICAgc3RydWN0IE1hcmtTZXQgewog
ICAgICAgIE1hcmtTZXQoSlNWYWx1ZSogdmFsdWVzLCBKU1ZhbHVlKiBlbmQpOwoKICAgICAgICBK
U1ZhbHVlKiBtX3ZhbHVlczsKICAgICAgICBKU1ZhbHVlKiBtX2VuZDsKICAgIH07CgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTWFya1N0YWNrQXJyYXkgewogICAgcHVibGljOgogICAg
ICAgIE1hcmtTdGFja0FycmF5KCk7CiAgICAgICAgfk1hcmtTdGFja0FycmF5KCk7CgogICAgICAg
IHZvaWQgZXhwYW5kKCk7CiAgICAgICAgdm9pZCBhcHBlbmQoY29uc3QgVCYpOwoKICAgICAgICBU
IHJlbW92ZUxhc3QoKTsKICAgICAgICBUJiBsYXN0KCk7CgogICAgICAgIGJvb2wgaXNFbXB0eSgp
OwogICAgICAgIHNpemVfdCBzaXplKCk7CgogICAgICAgIHZvaWQgc2hyaW5rQWxsb2NhdGlvbihz
aXplX3QpOwoKICAgIHByaXZhdGU6CiAgICAgICAgc2l6ZV90IG1fdG9wOwogICAgICAgIHNpemVf
dCBtX2FsbG9jYXRlZDsKICAgICAgICBzaXplX3QgbV9jYXBhY2l0eTsKICAgICAgICBUKiBtX2Rh
dGE7CiAgICB9OwoKICAgIGNsYXNzIE1hcmtTdGFjayB7CiAgICAgICAgcHJpdmF0ZTogTWFya1N0
YWNrKGNvbnN0IE1hcmtTdGFjayYpOyBNYXJrU3RhY2smIG9wZXJhdG9yPShjb25zdCBNYXJrU3Rh
Y2smKTsKICAgICAgICBmcmllbmQgY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwoKICAgIHB1YmxpYzoK
ICAgICAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGVTdGFjayhzaXplX3QpOwogICAgICAgIHN0YXRp
YyB2b2lkIHJlbGVhc2VTdGFjayh2b2lkKiwgc2l6ZV90KTsKCiAgICAgICAgTWFya1N0YWNrKHZv
aWQqIGpzQXJyYXlWUHRyKTsKICAgICAgICB+TWFya1N0YWNrKCk7CgogICAgICAgIHZvaWQgYXBw
ZW5kKENvbnNlcnZhdGl2ZVJvb3RzJik7CgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSB2b2lkIGFwcGVuZChKSVRXcml0ZUJhcnJpZXI8VD4qKTsKICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhcHBlbmQoV3JpdGVCYXJyaWVyQmFzZTxUPiopOwogICAg
ICAgIGlubGluZSB2b2lkIGFwcGVuZFZhbHVlcyhXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kiwg
c2l6ZV90IGNvdW50KTsKCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICAgICBpbmxp
bmUgdm9pZCBhcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoVCoqKTsKCiAgICAgICAgYm9vbCBhZGRP
cGFxdWVSb290KHZvaWQqKTsKICAgICAgICBib29sIGNvbnRhaW5zT3BhcXVlUm9vdCh2b2lkKik7
CiAgICAgICAgaW50IG9wYXF1ZVJvb3RDb3VudCgpOwoKICAgICAgICB2b2lkIHJlc2V0KCk7CgoK
CgoKICAgICAgICB2b2lkIGFkZFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoV2Vha1JlZmVyZW5jZUhh
cnZlc3Rlciogd2Vha1JlZmVyZW5jZUhhcnZlc3RlcikKICAgICAgICB7CiAgICAgICAgICAgIGlm
ICh3ZWFrUmVmZXJlbmNlSGFydmVzdGVyLT5tX25leHRBbmRGbGFnICYgMSkKICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgd2Vha1JlZmVyZW5jZUhhcnZlc3Rlci0+bV9uZXh0QW5k
RmxhZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2ZpcnN0V2Vha1JlZmVyZW5jZUhh
cnZlc3RlcikgfCAxOwogICAgICAgICAgICBtX2ZpcnN0V2Vha1JlZmVyZW5jZUhhcnZlc3RlciA9
IHdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI7CiAgICAgICAgfQoKICAgIHByb3RlY3RlZDoKCiAgICAg
ICAgc3RhdGljIHZvaWQgdmFsaWRhdGVTZXQoSlNWYWx1ZSosIHNpemVfdCk7CgogICAgICAgIHN0
YXRpYyB2b2lkIHZhbGlkYXRlVmFsdWUoSlNWYWx1ZSk7CgogICAgICAgIHZvaWQgYXBwZW5kKEpT
VmFsdWUqKTsKICAgICAgICB2b2lkIGFwcGVuZChKU1ZhbHVlKiwgc2l6ZV90IGNvdW50KTsKICAg
ICAgICB2b2lkIGFwcGVuZChKU0NlbGwqKik7CgogICAgICAgIHZvaWQgaW50ZXJuYWxBcHBlbmQo
SlNDZWxsKik7CiAgICAgICAgdm9pZCBpbnRlcm5hbEFwcGVuZChKU1ZhbHVlKTsKCiAgICAgICAg
dm9pZCogbV9qc0FycmF5VlB0cjsKICAgICAgICBNYXJrU3RhY2tBcnJheTxNYXJrU2V0PiBtX21h
cmtTZXRzOwogICAgICAgIE1hcmtTdGFja0FycmF5PEpTQ2VsbCo+IG1fdmFsdWVzOwogICAgICAg
IEhhc2hTZXQ8dm9pZCo+IG1fb3BhcXVlUm9vdHM7CiAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZl
c3RlciogbV9maXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI7CgoKICAgIHB1YmxpYzoKICAgICAg
ICBib29sIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwogICAgICAgIGJvb2wg
bV9pc0RyYWluaW5nOwoKICAgIH07CgogICAgaW5saW5lIE1hcmtTdGFjazo6TWFya1N0YWNrKHZv
aWQqIGpzQXJyYXlWUHRyKQogICAgICAgIDogbV9qc0FycmF5VlB0cihqc0FycmF5VlB0cikKICAg
ICAgICAsIG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyKDApCgogICAgICAgICwgbV9pc0No
ZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24oZmFsc2UpCiAgICAgICAgLCBtX2lzRHJhaW5p
bmcoZmFsc2UpCgogICAgewogICAgfQoKICAgIGlubGluZSBNYXJrU3RhY2s6On5NYXJrU3RhY2so
KQogICAgewogICAgICAgIGRvIGlmICghKG1fbWFya1NldHMuaXNFbXB0eSgpKSkgeyBXVEZSZXBv
cnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrU3RhY2suaCIsIDE1NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fbWFya1NldHMuaXNFbXB0
eSgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICBkbyBpZiAoIShtX3ZhbHVlcy5pc0VtcHR5KCkpKSB7IFdURlJlcG9ydEFzc2Vy
dGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFj
ay5oIiwgMTU3LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV92YWx1ZXMuaXNFbXB0eSgpIik7IGRv
IHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0g
MDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIH0K
CiAgICBpbmxpbmUgYm9vbCBNYXJrU3RhY2s6OmFkZE9wYXF1ZVJvb3Qodm9pZCogcm9vdCkKICAg
IHsKICAgICAgICByZXR1cm4gbV9vcGFxdWVSb290cy5hZGQocm9vdCkuc2Vjb25kOwogICAgfQoK
ICAgIGlubGluZSBib29sIE1hcmtTdGFjazo6Y29udGFpbnNPcGFxdWVSb290KHZvaWQqIHJvb3Qp
CiAgICB7CiAgICAgICAgcmV0dXJuIG1fb3BhcXVlUm9vdHMuY29udGFpbnMocm9vdCk7CiAgICB9
CgogICAgaW5saW5lIGludCBNYXJrU3RhY2s6Om9wYXF1ZVJvb3RDb3VudCgpCiAgICB7CiAgICAg
ICAgcmV0dXJuIG1fb3BhcXVlUm9vdHMuc2l6ZSgpOwogICAgfQoKICAgIGlubGluZSBNYXJrU2V0
OjpNYXJrU2V0KEpTVmFsdWUqIHZhbHVlcywgSlNWYWx1ZSogZW5kKQogICAgICAgICAgICA6IG1f
dmFsdWVzKHZhbHVlcykKICAgICAgICAgICAgLCBtX2VuZChlbmQpCiAgICAgICAgewogICAgICAg
ICAgICBkbyBpZiAoISh2YWx1ZXMpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oIiwgMTc5LCBfX1BSRVRU
WV9GVU5DVElPTl9fLCAidmFsdWVzIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50
ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICB9CgogICAgaW5saW5lIHZvaWQqIE1hcmtTdGFj
azo6YWxsb2NhdGVTdGFjayhzaXplX3Qgc2l6ZSkKICAgIHsKICAgICAgICByZXR1cm4gT1NBbGxv
Y2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZSk7CiAgICB9CgogICAgaW5saW5lIHZvaWQgTWFy
a1N0YWNrOjpyZWxlYXNlU3RhY2sodm9pZCogYWRkciwgc2l6ZV90IHNpemUpCiAgICB7CiAgICAg
ICAgT1NBbGxvY2F0b3I6OmRlY29tbWl0QW5kUmVsZWFzZShhZGRyLCBzaXplKTsKICAgIH0KCiAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIE1hcmtTdGFja0FycmF5PFQ+OjpNYXJrU3Rh
Y2tBcnJheSgpCiAgICAgICAgOiBtX3RvcCgwKQogICAgICAgICwgbV9hbGxvY2F0ZWQocGFnZVNp
emUoKSkKICAgICAgICAsIG1fY2FwYWNpdHkobV9hbGxvY2F0ZWQgLyBzaXplb2YoVCkpCiAgICB7
CiAgICAgICAgbV9kYXRhID0gcmVpbnRlcnByZXRfY2FzdDxUKj4oTWFya1N0YWNrOjphbGxvY2F0
ZVN0YWNrKG1fYWxsb2NhdGVkKSk7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlu
bGluZSBNYXJrU3RhY2tBcnJheTxUPjo6fk1hcmtTdGFja0FycmF5KCkKICAgIHsKICAgICAgICBN
YXJrU3RhY2s6OnJlbGVhc2VTdGFjayhtX2RhdGEsIG1fYWxsb2NhdGVkKTsKICAgIH0KCiAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgTWFya1N0YWNrQXJyYXk8VD46OmV4cGFu
ZCgpCiAgICB7CiAgICAgICAgc2l6ZV90IG9sZEFsbG9jYXRpb24gPSBtX2FsbG9jYXRlZDsKICAg
ICAgICBtX2FsbG9jYXRlZCAqPSAyOwogICAgICAgIG1fY2FwYWNpdHkgPSBtX2FsbG9jYXRlZCAv
IHNpemVvZihUKTsKICAgICAgICB2b2lkKiBuZXdEYXRhID0gTWFya1N0YWNrOjphbGxvY2F0ZVN0
YWNrKG1fYWxsb2NhdGVkKTsKICAgICAgICBtZW1jcHkobmV3RGF0YSwgbV9kYXRhLCBvbGRBbGxv
Y2F0aW9uKTsKICAgICAgICBNYXJrU3RhY2s6OnJlbGVhc2VTdGFjayhtX2RhdGEsIG9sZEFsbG9j
YXRpb24pOwogICAgICAgIG1fZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG5ld0RhdGEpOwog
ICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBNYXJrU3RhY2tBcnJh
eTxUPjo6YXBwZW5kKGNvbnN0IFQmIHYpCiAgICB7CiAgICAgICAgaWYgKG1fdG9wID09IG1fY2Fw
YWNpdHkpCiAgICAgICAgICAgIGV4cGFuZCgpOwogICAgICAgIG1fZGF0YVttX3RvcCsrXSA9IHY7
CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUIE1hcmtTdGFja0FycmF5
PFQ+OjpyZW1vdmVMYXN0KCkKICAgIHsKICAgICAgICBkbyBpZiAoIShtX3RvcCkpIHsgV1RGUmVw
b3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya1N0YWNrLmgiLCAyMjUsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX3RvcCIpOyBkbyB7IFdU
RlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgo
dm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0
dXJuIG1fZGF0YVstLW1fdG9wXTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5s
aW5lIFQmIE1hcmtTdGFja0FycmF5PFQ+OjpsYXN0KCkKICAgIHsKICAgICAgICBkbyBpZiAoISht
X3RvcCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgiLCAyMzEsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJt
X3RvcCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhi
YmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgcmV0dXJuIG1fZGF0YVttX3RvcCAtIDFdOwogICAgfQoKICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBNYXJrU3RhY2tBcnJheTxUPjo6aXNFbXB0eSgpCiAg
ICB7CiAgICAgICAgcmV0dXJuIG1fdG9wID09IDA7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGlubGluZSBzaXplX3QgTWFya1N0YWNrQXJyYXk8VD46OnNpemUoKQogICAgewogICAg
ICAgIHJldHVybiBtX3RvcDsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IHZvaWQgTWFya1N0YWNrQXJyYXk8VD46OnNocmlua0FsbG9jYXRpb24oc2l6ZV90IHNpemUpCiAg
ICB7CiAgICAgICAgZG8gaWYgKCEoc2l6ZSA8PSBtX2FsbG9jYXRlZCkpIHsgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmgiLCAyNDcsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzaXplIDw9IG1fYWxsb2NhdGVkIik7
IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVm
ID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAg
ICAgICBkbyBpZiAoIShpc1BhZ2VBbGlnbmVkKHNpemUpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25G
YWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaCIs
IDI0OCwgX19QUkVUVFlfRlVOQ1RJT05fXywgImlzUGFnZUFsaWduZWQoc2l6ZSkiKTsgZG8geyBX
VEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAo
KHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGlm
IChzaXplID09IG1fYWxsb2NhdGVkKQogICAgICAgICAgICByZXR1cm47CgoKCgoKCiAgICAgICAg
TWFya1N0YWNrOjpyZWxlYXNlU3RhY2socmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9kYXRhKSAr
IHNpemUsIG1fYWxsb2NhdGVkIC0gc2l6ZSk7CgogICAgICAgIG1fYWxsb2NhdGVkID0gc2l6ZTsK
ICAgICAgICBtX2NhcGFjaXR5ID0gbV9hbGxvY2F0ZWQgLyBzaXplb2YoVCk7CiAgICB9CgogICAg
aW5saW5lIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoSlNWYWx1ZSogc2xvdCwgc2l6ZV90IGNvdW50
KQogICAgewogICAgICAgIGlmICghY291bnQpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAg
dmFsaWRhdGVTZXQoc2xvdCwgY291bnQpOwoKICAgICAgICBtX21hcmtTZXRzLmFwcGVuZChNYXJr
U2V0KHNsb3QsIHNsb3QgKyBjb3VudCkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcihUKiog
c2xvdCkKICAgIHsKICAgICAgICBkbyBpZiAoIShzbG90KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25G
YWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaCIs
IDI3NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgInNsb3QiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJh
Y2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgp
OyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIEpTQ2VsbCogdmFsdWUgPSAq
c2xvdDsKICAgICAgICBpZiAodmFsdWUpCiAgICAgICAgICAgIGludGVybmFsQXBwZW5kKHZhbHVl
KTsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChKU1ZhbHVlKiB2YWx1
ZSkKICAgIHsKICAgICAgICBkbyBpZiAoISh2YWx1ZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFp
bHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgiLCAy
ODQsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJ2YWx1ZSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFj
ZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7
IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgaW50ZXJuYWxBcHBlbmQoKnZh
bHVlKTsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChKU0NlbGwqKiB2
YWx1ZSkKICAgIHsKICAgICAgICBkbyBpZiAoISh2YWx1ZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgi
LCAyOTAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJ2YWx1ZSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0
cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTAp
KCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgaW50ZXJuYWxBcHBlbmQo
KnZhbHVlKTsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmludGVybmFsQXBwZW5k
KEpTVmFsdWUgdmFsdWUpCiAgICB7CiAgICAgICAgZG8gaWYgKCEodmFsdWUpKSB7IFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oIiwgMjk2LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAidmFsdWUiKTsgZG8geyBXVEZS
ZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZv
aWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwoKICAgICAgICB2YWxp
ZGF0ZVZhbHVlKHZhbHVlKTsKCiAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAgICAg
ICBpbnRlcm5hbEFwcGVuZCh2YWx1ZS5hc0NlbGwoKSk7CiAgICB9CgogICAgY2xhc3MgU2xvdFZp
c2l0b3I7Cgp9CiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RW
aXNpdG9yLmgiIDIKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgU2xvdFZpc2l0b3IgOiBwdWJsaWMg
TWFya1N0YWNrIHsKcHVibGljOgogICAgU2xvdFZpc2l0b3Iodm9pZCoganNBcnJheVZQdHIpOwoK
ICAgIHZvaWQgZHJhaW4oKTsKICAgIHZvaWQgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7Cgpwcml2
YXRlOgogICAgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCopOwp9OwoKaW5saW5lIFNsb3RWaXNp
dG9yOjpTbG90VmlzaXRvcih2b2lkKiBqc0FycmF5VlB0cikKICAgIDogTWFya1N0YWNrKGpzQXJy
YXlWUHRyKQp7Cn0KCn0KIyAzMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVC
YXJyaWVyU3VwcG9ydC5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dyaXRlQmFycmllclN1cHBvcnQuaCIKI2RlZmluZSBXcml0ZUJhcnJpZXJTdXBwb3J0X2gg
CgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291
bnRlci5oIiAxCiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nh
bXBsaW5nQ291bnRlci5oIgojZGVmaW5lIFNhbXBsaW5nQ291bnRlcl9oIAoKCgoKbmFtZXNwYWNl
IEpTQyB7CgoKCgoKY2xhc3MgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIgewogICAgZnJpZW5kIGNs
YXNzIERlbGV0YWJsZVNhbXBsaW5nQ291bnRlcjsKcHVibGljOgogICAgdm9pZCBjb3VudCh1aW50
MzJfdCBjb3VudCA9IDEpCiAgICB7CiAgICAgICAgbV9jb3VudGVyICs9IGNvdW50OwogICAgfQoK
ICAgIHN0YXRpYyB2b2lkIGR1bXAoKTsKCiAgICBpbnQ2NF90KiBhZGRyZXNzT2ZDb3VudGVyKCkg
eyByZXR1cm4gJm1fY291bnRlcjsgfQoKcHJvdGVjdGVkOgoKICAgIHZvaWQgaW5pdChjb25zdCBj
aGFyKiBuYW1lKQogICAgewogICAgICAgIG1fY291bnRlciA9IDA7CiAgICAgICAgbV9uYW1lID0g
bmFtZTsKCgoKICAgICAgICBtX25leHQgPSBzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47
CiAgICAgICAgc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluLT5tX3JlZmVyZXIgPSAmbV9u
ZXh0OwoKICAgICAgICBzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW4gPSB0aGlzOwogICAg
ICAgIG1fcmVmZXJlciA9ICZzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47CiAgICB9Cgog
ICAgaW50NjRfdCBtX2NvdW50ZXI7CiAgICBjb25zdCBjaGFyKiBtX25hbWU7CiAgICBBYnN0cmFj
dFNhbXBsaW5nQ291bnRlciogbV9uZXh0OwoKCiAgICBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcioq
IG1fcmVmZXJlcjsKCiAgICBzdGF0aWMgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIgc19hYnN0cmFj
dFNhbXBsaW5nQ291bnRlckNoYWluRW5kOwogICAgc3RhdGljIEFic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyKiBzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47CiAgICBzdGF0aWMgYm9vbCBzX2Nv
bXBsZXRlZDsKfTsKIyAxNzQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nQ291bnRlci5oIgp9CiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dyaXRlQmFycmllclN1cHBvcnQuaCIgMgoKCm5hbWVzcGFjZSBKU0MgewoKCgoKCmVu
dW0gV3JpdGVCYXJyaWVyVXNlS2luZCB7CgoKCiAgICBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFj
Y2VzcywKCgoKICAgIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzLAoKCgoKCiAgICBXcml0
ZUJhcnJpZXJGb3JHZW5lcmljQWNjZXNzCn07CgpjbGFzcyBXcml0ZUJhcnJpZXJDb3VudGVycyB7
CnByaXZhdGU6CiAgICBXcml0ZUJhcnJpZXJDb3VudGVycygpIHsgfQoKcHVibGljOgojIDg0ICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0Lmgi
CiAgICBzdGF0aWMgY2hhciB1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwOwogICAgc3RhdGljIGNoYXIg
dXNlc1dpdGhvdXRCYXJyaWVyRnJvbUNwcDsKCgogICAgc3RhdGljIHZvaWQgY291bnRXcml0ZUJh
cnJpZXIoKQogICAgewoKCgogICAgfQp9OwoKfQojIDMyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgiIDIKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9IYXNoQ291bnRlZFNldC5oIiAxCiMgMzQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaCIgMgoKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIEdDQWN0
aXZpdHlDYWxsYmFjazsKICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKICAgIGNsYXNzIEhlYXBS
b290VmlzaXRvcjsKICAgIGNsYXNzIEpTQ2VsbDsKICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAg
IGNsYXNzIEpTVmFsdWU7CiAgICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CiAgICBjbGFzcyBN
YXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgIGNsYXNzIFVT
dHJpbmc7CiAgICBjbGFzcyBXZWFrR0NIYW5kbGVQb29sOwogICAgY2xhc3MgU2xvdFZpc2l0b3I7
CgogICAgdHlwZWRlZiBzdGQ6OnBhaXI8SlNWYWx1ZSwgVVN0cmluZz4gVmFsdWVTdHJpbmdQYWly
OwogICAgdHlwZWRlZiBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiBQcm90ZWN0Q291bnRTZXQ7CiAg
ICB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PGNvbnN0IGNoYXIqPiBUeXBlQ291bnRTZXQ7CgogICAg
ZW51bSBPcGVyYXRpb25JblByb2dyZXNzIHsgTm9PcGVyYXRpb24sIEFsbG9jYXRpb24sIENvbGxl
Y3Rpb24gfTsKCgogICAgZW51bSBIZWFwU2l6ZSB7IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07Cgog
ICAgY2xhc3MgSGVhcCB7CiAgICAgICAgcHJpdmF0ZTogSGVhcChjb25zdCBIZWFwJik7IEhlYXAm
IG9wZXJhdG9yPShjb25zdCBIZWFwJik7CiAgICBwdWJsaWM6CiAgICAgICAgc3RhdGljIEhlYXAq
IGhlYXAoSlNWYWx1ZSk7CiAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlNDZWxsKik7CgogICAg
ICAgIHN0YXRpYyBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICBzdGF0aWMgYm9v
bCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICBzdGF0aWMgYm9vbCB0ZXN0
QW5kQ2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgIHN0YXRpYyB2b2lkIHNldE1hcmtl
ZChjb25zdCB2b2lkKik7CgogICAgICAgIHN0YXRpYyB2b2lkIHdyaXRlQmFycmllcihjb25zdCBK
U0NlbGwqLCBKU1ZhbHVlKTsKICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3Qg
SlNDZWxsKiwgSlNDZWxsKik7CgogICAgICAgIEhlYXAoSlNHbG9iYWxEYXRhKiwgSGVhcFNpemUp
OwogICAgICAgIH5IZWFwKCk7CiAgICAgICAgdm9pZCBkZXN0cm95KCk7CgogICAgICAgIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQogICAg
ICAgIE5ld1NwYWNlJiBtYXJrZWRTcGFjZSgpIHsgcmV0dXJuIG1fbmV3U3BhY2U7IH0KICAgICAg
ICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVhZHMoKSB7IHJldHVybiBtX21hY2hpbmVUaHJl
YWRzOyB9CgogICAgICAgIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaygpOwog
ICAgICAgIHZvaWQgc2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZpdHlDYWxs
YmFjaz4pOwoKCiAgICAgICAgaW5saW5lIGJvb2wgaXNCdXN5KCk7CgogICAgICAgIHZvaWQqIGFs
bG9jYXRlKHNpemVfdCk7CiAgICAgICAgTmV3U3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzRm9y
KHNpemVfdCk7CiAgICAgICAgdm9pZCogYWxsb2NhdGUoTmV3U3BhY2U6OlNpemVDbGFzcyYpOwog
ICAgICAgIHZvaWQgbm90aWZ5SXNTYWZlVG9Db2xsZWN0KCkgeyBtX2lzU2FmZVRvQ29sbGVjdCA9
IHRydWU7IH0KICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CgogICAgICAgIGlubGlu
ZSB2b2lkKiBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3QpOwogICAgICAgIGlubGluZSBi
b29sIGluUHJvcGVydHlTdG9yYWdlTnVyc2VyeSh2b2lkKik7CgogICAgICAgIHZvaWQgcmVwb3J0
RXh0cmFNZW1vcnlDb3N0KHNpemVfdCBjb3N0KTsKCiAgICAgICAgdm9pZCBwcm90ZWN0KEpTVmFs
dWUpOwogICAgICAgIGJvb2wgdW5wcm90ZWN0KEpTVmFsdWUpOwoKICAgICAgICBzaXplX3Qgc2l6
ZSgpOwogICAgICAgIHNpemVfdCBjYXBhY2l0eSgpOwogICAgICAgIHNpemVfdCBvYmplY3RDb3Vu
dCgpOwogICAgICAgIHNpemVfdCBnbG9iYWxPYmplY3RDb3VudCgpOwogICAgICAgIHNpemVfdCBw
cm90ZWN0ZWRPYmplY3RDb3VudCgpOwogICAgICAgIHNpemVfdCBwcm90ZWN0ZWRHbG9iYWxPYmpl
Y3RDb3VudCgpOwogICAgICAgIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBwcm90ZWN0ZWRPYmpl
Y3RUeXBlQ291bnRzKCk7CiAgICAgICAgUGFzc093blB0cjxUeXBlQ291bnRTZXQ+IG9iamVjdFR5
cGVDb3VudHMoKTsKCiAgICAgICAgdm9pZCBwdXNoVGVtcFNvcnRWZWN0b3IoVmVjdG9yPFZhbHVl
U3RyaW5nUGFpcj4qKTsKICAgICAgICB2b2lkIHBvcFRlbXBTb3J0VmVjdG9yKFZlY3RvcjxWYWx1
ZVN0cmluZ1BhaXI+Kik7CgogICAgICAgIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiYg
bWFya0xpc3RTZXQoKSB7IGlmICghbV9tYXJrTGlzdFNldCkgbV9tYXJrTGlzdFNldCA9IG5ldyBI
YXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj47IHJldHVybiAqbV9tYXJrTGlzdFNldDsgfQoK
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1
cm5UeXBlIGZvckVhY2hQcm90ZWN0ZWRDZWxsKEZ1bmN0b3ImKTsKICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hQcm90
ZWN0ZWRDZWxsKCk7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUg
RnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQ2VsbChGdW5jdG9yJik7CiAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNo
Q2VsbCgpOwogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0
b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKEZ1bmN0b3ImKTsKICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9j
aygpOwoKICAgICAgICBIYW5kbGVTbG90IGFsbG9jYXRlR2xvYmFsSGFuZGxlKCkgeyByZXR1cm4g
bV9oYW5kbGVIZWFwLmFsbG9jYXRlKCk7IH0KICAgICAgICBIYW5kbGVTbG90IGFsbG9jYXRlTG9j
YWxIYW5kbGUoKSB7IHJldHVybiBtX2hhbmRsZVN0YWNrLnB1c2goKTsgfQoKICAgICAgICBIYW5k
bGVTdGFjayogaGFuZGxlU3RhY2soKSB7IHJldHVybiAmbV9oYW5kbGVTdGFjazsgfQogICAgICAg
IHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290
cyk7CgogICAgcHJpdmF0ZToKICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CgogICAg
ICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0ZXJhdG9y
OwoKICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAgICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9IDEwMjQgKiAxMDI0OwoKICAgICAg
ICBlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQsIEFsbG9jYXRp
b25DYW5GYWlsIH07CgoKCgoKICAgICAgICBib29sIGlzVmFsaWRBbGxvY2F0aW9uKHNpemVfdCk7
CiAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZShzaXplX3QpOwogICAg
ICAgIHZvaWQgY2Fub25pY2FsaXplQmxvY2tzKCk7CiAgICAgICAgdm9pZCByZXNldEFsbG9jYXRv
cigpOwoKICAgICAgICBNYXJrZWRCbG9jayogYWxsb2NhdGVCbG9jayhzaXplX3QgY2VsbFNpemUs
IEFsbG9jYXRpb25FZmZvcnQpOwogICAgICAgIHZvaWQgZnJlZUJsb2NrcyhNYXJrZWRCbG9jayop
OwoKICAgICAgICB2b2lkIGNsZWFyTWFya3MoKTsKICAgICAgICB2b2lkIG1hcmtSb290cygpOwog
ICAgICAgIHZvaWQgbWFya1Byb3RlY3RlZE9iamVjdHMoSGVhcFJvb3RWaXNpdG9yJik7CiAgICAg
ICAgdm9pZCBtYXJrVGVtcFNvcnRWZWN0b3JzKEhlYXBSb290VmlzaXRvciYpOwogICAgICAgIHZv
aWQgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CgogICAgICAgIHZvaWQqIHRyeUFsbG9jYXRlKE5l
d1NwYWNlOjpTaXplQ2xhc3MmKTsKICAgICAgICB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKE5ld1Nw
YWNlOjpTaXplQ2xhc3MmKTsKCiAgICAgICAgZW51bSBTd2VlcFRvZ2dsZSB7IERvTm90U3dlZXAs
IERvU3dlZXAgfTsKICAgICAgICB2b2lkIGNvbGxlY3QoU3dlZXBUb2dnbGUpOwogICAgICAgIHZv
aWQgc2hyaW5rKCk7CiAgICAgICAgdm9pZCByZWxlYXNlRnJlZUJsb2NrcygpOwogICAgICAgIHZv
aWQgc3dlZXAoKTsKCiAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKTsKCiAgICAg
ICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyU2xvd0Nhc2UoY29uc3QgSlNDZWxsKiwgSlNDZWxs
Kik7CiMgMTc3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgiCiAg
ICAgICAgY29uc3QgSGVhcFNpemUgbV9oZWFwU2l6ZTsKICAgICAgICBjb25zdCBzaXplX3QgbV9t
aW5CeXRlc1BlckN5Y2xlOwoKICAgICAgICBPcGVyYXRpb25JblByb2dyZXNzIG1fb3BlcmF0aW9u
SW5Qcm9ncmVzczsKICAgICAgICBOZXdTcGFjZSBtX25ld1NwYWNlOwogICAgICAgIE1hcmtlZEJs
b2NrU2V0IG1fYmxvY2tzOwojIDE5OCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oIgogICAgICAgIHNpemVfdCBtX2V4dHJhQ29zdDsKCiAgICAgICAgUHJvdGVjdENv
dW50U2V0IG1fcHJvdGVjdGVkVmFsdWVzOwogICAgICAgIFZlY3RvcjxWZWN0b3I8VmFsdWVTdHJp
bmdQYWlyPiogPiBtX3RlbXBTb3J0aW5nVmVjdG9yczsKICAgICAgICBIYXNoU2V0PE1hcmtlZEFy
Z3VtZW50QnVmZmVyKj4qIG1fbWFya0xpc3RTZXQ7CgogICAgICAgIE93blB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IG1fYWN0aXZpdHlDYWxsYmFjazsKCiAgICAgICAgTWFjaGluZVRocmVhZHMgbV9t
YWNoaW5lVGhyZWFkczsKICAgICAgICBTbG90VmlzaXRvciBtX3Nsb3RWaXNpdG9yOwogICAgICAg
IEhhbmRsZUhlYXAgbV9oYW5kbGVIZWFwOwogICAgICAgIEhhbmRsZVN0YWNrIG1faGFuZGxlU3Rh
Y2s7CgogICAgICAgIGJvb2wgbV9pc1NhZmVUb0NvbGxlY3Q7CgogICAgICAgIEpTR2xvYmFsRGF0
YSogbV9nbG9iYWxEYXRhOwogICAgfTsKCiAgICBib29sIEhlYXA6OmlzQnVzeSgpCiAgICB7CiAg
ICAgICAgcmV0dXJuIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbjsKICAgIH0K
CiAgICBpbmxpbmUgSGVhcCogSGVhcDo6aGVhcChKU0NlbGwqIGNlbGwpCiAgICB7CiAgICAgICAg
cmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+aGVhcCgpOwogICAgfQoKICAgIGlu
bGluZSBIZWFwKiBIZWFwOjpoZWFwKEpTVmFsdWUgdikKICAgIHsKICAgICAgICBpZiAoIXYuaXND
ZWxsKCkpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIHJldHVybiBoZWFwKHYuYXNDZWxs
KCkpOwogICAgfQoKICAgIGlubGluZSBib29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IHZvaWQqIGNl
bGwpCiAgICB7CiAgICAgICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+aXNN
YXJrZWQoY2VsbCk7CiAgICB9CgogICAgaW5saW5lIGJvb2wgSGVhcDo6dGVzdEFuZFNldE1hcmtl
ZChjb25zdCB2b2lkKiBjZWxsKQogICAgewogICAgICAgIHJldHVybiBNYXJrZWRCbG9jazo6Ymxv
Y2tGb3IoY2VsbCktPnRlc3RBbmRTZXRNYXJrZWQoY2VsbCk7CiAgICB9CgogICAgaW5saW5lIGJv
b2wgSGVhcDo6dGVzdEFuZENsZWFyTWFya2VkKGNvbnN0IHZvaWQqIGNlbGwpCiAgICB7CiAgICAg
ICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+dGVzdEFuZENsZWFyTWFya2Vk
KGNlbGwpOwogICAgfQoKICAgIGlubGluZSB2b2lkIEhlYXA6OnNldE1hcmtlZChjb25zdCB2b2lk
KiBjZWxsKQogICAgewogICAgICAgIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+c2V0TWFy
a2VkKGNlbGwpOwogICAgfQojIDI3OCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oIgogICAgaW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2Vs
bCosIEpTQ2VsbCopCiAgICB7CiAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmNvdW50V3Jp
dGVCYXJyaWVyKCk7CiAgICB9CgogICAgaW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNv
bnN0IEpTQ2VsbCosIEpTVmFsdWUpCiAgICB7CiAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6
OmNvdW50V3JpdGVCYXJyaWVyKCk7CiAgICB9CgoKICAgIGlubGluZSB2b2lkIEhlYXA6OnJlcG9y
dEV4dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCkKICAgIHsKICAgICAgICBpZiAoY29zdCA+IG1p
bkV4dHJhQ29zdCkKICAgICAgICAgICAgcmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xvd0Nhc2UoY29z
dCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1l
IEZ1bmN0b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYg
ZnVuY3RvcikKICAgIHsKICAgICAgICBjYW5vbmljYWxpemVCbG9ja3MoKTsKICAgICAgICBQcm90
ZWN0Q291bnRTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvdGVjdGVkVmFsdWVzLmVuZCgpOwogICAg
ICAgIGZvciAoUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBpdCA9IG1fcHJvdGVjdGVkVmFsdWVz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgZnVuY3RvcihpdC0+Zmlyc3Qp
OwogICAgICAgIG1faGFuZGxlSGVhcC5mb3JFYWNoU3Ryb25nSGFuZGxlKGZ1bmN0b3IsIG1fcHJv
dGVjdGVkVmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rv
cjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoUHJvdGVjdGVkQ2VsbCgpCiAgICB7CiAgICAgICAg
RnVuY3RvciBmdW5jdG9yOwogICAgICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVkQ2VsbChmdW5j
dG9yKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5h
bWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoQ2VsbChGdW5jdG9yJiBmdW5jdG9y
KQogICAgewogICAgICAgIGNhbm9uaWNhbGl6ZUJsb2NrcygpOwogICAgICAgIEJsb2NrSXRlcmF0
b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CiAgICAgICAgZm9yIChCbG9ja0l0ZXJhdG9y
IGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAg
ICAoKml0KS0+Zm9yRWFjaENlbGwoZnVuY3Rvcik7CiAgICAgICAgcmV0dXJuIGZ1bmN0b3IucmV0
dXJuVmFsdWUoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUg
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoQ2VsbCgpCiAgICB7CiAg
ICAgICAgRnVuY3RvciBmdW5jdG9yOwogICAgICAgIHJldHVybiBmb3JFYWNoQ2VsbChmdW5jdG9y
KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUg
RnVuY3Rvcjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikK
ICAgIHsKICAgICAgICBjYW5vbmljYWxpemVCbG9ja3MoKTsKICAgICAgICBCbG9ja0l0ZXJhdG9y
IGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwogICAgICAgIGZvciAoQmxvY2tJdGVyYXRvciBp
dCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAg
ZnVuY3RvcigqaXQpOwogICAgICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6
OlJldHVyblR5cGUgSGVhcDo6Zm9yRWFjaEJsb2NrKCkKICAgIHsKICAgICAgICBGdW5jdG9yIGZ1
bmN0b3I7CiAgICAgICAgcmV0dXJuIGZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgIH0KCiAgICBp
bmxpbmUgTmV3U3BhY2U6OlNpemVDbGFzcyYgSGVhcDo6c2l6ZUNsYXNzRm9yKHNpemVfdCBieXRl
cykKICAgIHsKICAgICAgICByZXR1cm4gbV9uZXdTcGFjZS5zaXplQ2xhc3NGb3IoYnl0ZXMpOwog
ICAgfQoKICAgIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZShOZXdTcGFjZTo6U2l6ZUNsYXNz
JiBzaXplQ2xhc3MpCiAgICB7CgogICAgICAgIE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogZmlyc3RG
cmVlQ2VsbCA9IHNpemVDbGFzcy5maXJzdEZyZWVDZWxsOwogICAgICAgIGlmIChfX2J1aWx0aW5f
ZXhwZWN0KCghZmlyc3RGcmVlQ2VsbCksIDApKQogICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVT
bG93Q2FzZShzaXplQ2xhc3MpOwoKICAgICAgICBzaXplQ2xhc3MuZmlyc3RGcmVlQ2VsbCA9IGZp
cnN0RnJlZUNlbGwtPm5leHQ7CiAgICAgICAgcmV0dXJuIGZpcnN0RnJlZUNlbGw7CiAgICB9Cgog
ICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlKHNpemVfdCBieXRlcykKICAgIHsKICAgICAg
ICBkbyBpZiAoIShpc1ZhbGlkQWxsb2NhdGlvbihieXRlcykpKSB7IFdURlJlcG9ydEFzc2VydGlv
bkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCIsIDM2
MCwgX19QUkVUVFlfRlVOQ1RJT05fXywgImlzVmFsaWRBbGxvY2F0aW9uKGJ5dGVzKSIpOyBkbyB7
IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7
ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
TmV3U3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzID0gc2l6ZUNsYXNzRm9yKGJ5dGVzKTsKICAg
ICAgICByZXR1cm4gYWxsb2NhdGUoc2l6ZUNsYXNzKTsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCog
SGVhcDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90IGJ5dGVzKQogICAgewogICAgICAg
IGRvIGlmICghKCEoYnl0ZXMgJSBzaXplb2YoSlNWYWx1ZSkpKSkgeyBXVEZSZXBvcnRBc3NlcnRp
b25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgiLCAz
NjcsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhKGJ5dGVzICUgc2l6ZW9mKEpTVmFsdWUpKSIpOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgaWYgKGJ5dGVzID49IE5ld1NwYWNlOjpQcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5U2l6ZSkKICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IG1fbmV3U3BhY2Uu
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoYnl0ZXMpKQogICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgIGNvbGxlY3QoRG9Ob3RTd2VlcCk7CiAgICAgICAgcmV0dXJuIG1fbmV3U3BhY2Uu
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoYnl0ZXMpOwogICAgfQoKICAgIGlubGluZSBib29sIEhl
YXA6OmluUHJvcGVydHlTdG9yYWdlTnVyc2VyeSh2b2lkKiBwdHIpCiAgICB7CiAgICAgICAgcmV0
dXJuIG1fbmV3U3BhY2UuaW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KHB0cik7CiAgICB9Cgp9CiMg
MzQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
IiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3Rh
bmNlQ2FjaGUuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlSW5zdGFuY2VDYWNoZS5oIgojZGVmaW5lIERhdGVJbnN0YW5jZUNhY2hlX2ggCgojIDEg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaCIgMQojIDQ0ICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgiCiNkZWZpbmUgRGF0
ZU1hdGhfaCAKCgoKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3Vy
cmVudFRpbWUuaCIgMQojIDMzICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1
cnJlbnRUaW1lLmgiCiNkZWZpbmUgQ3VycmVudFRpbWVfaCAKCgoKbmFtZXNwYWNlIFdURiB7CgoK
Cgpkb3VibGUgY3VycmVudFRpbWUoKTsKCgppbmxpbmUgZG91YmxlIGN1cnJlbnRUaW1lTVMoKQp7
CiAgICByZXR1cm4gY3VycmVudFRpbWUoKSAqIDEwMDAuMDsKfQoKaW5saW5lIHZvaWQgZ2V0TG9j
YWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxvY2FsVE0pCnsKCgoK
CgogICAgbG9jYWx0aW1lX3IobG9jYWxUaW1lLCBsb2NhbFRNKTsKCn0KCgoKZG91YmxlIG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwoKfQoKdXNpbmcgV1RGOjpjdXJyZW50VGltZTsKdXNp
bmcgV1RGOjpjdXJyZW50VGltZU1TOwp1c2luZyBXVEY6OmdldExvY2FsVGltZTsKdXNpbmcgV1RG
Ojptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWU7CiMgNTEgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaCIgMgoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL093bkFycmF5UHRyLmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9Pd25BcnJheVB0ci5oIgojZGVmaW5lIFdURl9Pd25BcnJheVB0cl9oIAoK
CgoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NPd25BcnJheVB0
ci5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFzc093bkFy
cmF5UHRyLmgiCiNkZWZpbmUgV1RGX1Bhc3NPd25BcnJheVB0cl9oIAoKCgoKCm5hbWVzcGFjZSBX
VEYgewoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgT3duQXJyYXlQdHI7CnRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGNsYXNzIFBhc3NPd25BcnJheVB0cjsKdGVtcGxhdGU8dHlwZW5hbWUgVD4gUGFz
c093bkFycmF5UHRyPFQ+IGFkb3B0QXJyYXlQdHIoVCopOwp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2
b2lkIGRlbGV0ZU93bmVkQXJyYXlQdHIoVCogcHRyKTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIFBhc3NPd25BcnJheVB0ciB7CnB1YmxpYzoKICAgIHR5cGVkZWYgVCogUHRyVHlwZTsKCiAg
ICBQYXNzT3duQXJyYXlQdHIoKSA6IG1fcHRyKDApIHsgfQogICAgUGFzc093bkFycmF5UHRyKHN0
ZDo6bnVsbHB0cl90KSA6IG1fcHRyKDApIHsgfQoKCgoKICAgIFBhc3NPd25BcnJheVB0cihjb25z
dCBQYXNzT3duQXJyYXlQdHImIG8pIDogbV9wdHIoby5sZWFrUHRyKCkpIHsgfQogICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gUGFzc093bkFycmF5UHRyKGNvbnN0IFBhc3NPd25BcnJheVB0cjxVPiYg
bykgOiBtX3B0cihvLmxlYWtQdHIoKSkgeyB9CgogICAgflBhc3NPd25BcnJheVB0cigpIHsgZGVs
ZXRlT3duZWRBcnJheVB0cihtX3B0cik7IH0KCiAgICBQdHJUeXBlIGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHRyOyB9CgogICAgUHRyVHlwZSBsZWFrUHRyKCkgY29uc3QgX19hdHRyaWJ1dGVfXyAo
KHdhcm5fdW51c2VkX3Jlc3VsdCkpOwoKICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgZG8gaWYg
KCEobV9wdHIpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGFzc093bkFycmF5UHRyLmgiLCA1OSwgX19QUkVUVFlfRlVOQ1RJ
T05fXywgIm1fcHRyIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsgcmV0dXJuICptX3B0cjsgfQogICAgUHRyVHlwZSBvcGVyYXRvci0+KCkgY29u
c3QgeyBkbyBpZiAoIShtX3B0cikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXNzT3duQXJyYXlQdHIuaCIsIDYwLCBfX1BS
RVRUWV9GVU5DVElPTl9fLCAibV9wdHIiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihp
bnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOyByZXR1cm4gbV9wdHI7IH0KCiAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQoKCgoKCiAgICB0eXBlZGVmIFB0clR5cGUgUGFz
c093bkFycmF5UHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZTsKICAgIG9wZXJhdG9yIFVuc3BlY2lm
aWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZQYXNzT3duQXJyYXlQdHI6Om1f
cHRyIDogMDsgfQoKCiAgICBQYXNzT3duQXJyYXlQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzT3du
QXJyYXlQdHImKSB7IHR5cGVkZWYgaW50IGR1bW15UGFzc093bkFycmF5UHRyX3Nob3VsZF9uZXZl
cl9iZV9hc3NpZ25lZF90byBbKCFzaXplb2YoVCopKSA/IDEgOiAtMV07IHJldHVybiAqdGhpczsg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBQYXNzT3duQXJyYXlQdHI8VT4gYWRv
cHRBcnJheVB0cihVKik7Cgpwcml2YXRlOgogICAgZXhwbGljaXQgUGFzc093bkFycmF5UHRyKFB0
clR5cGUgcHRyKSA6IG1fcHRyKHB0cikgeyB9CgogICAgbXV0YWJsZSBQdHJUeXBlIG1fcHRyOwp9
OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHR5cGVuYW1lIFBhc3NPd25BcnJheVB0cjxU
Pjo6UHRyVHlwZSBQYXNzT3duQXJyYXlQdHI8VD46OmxlYWtQdHIoKSBjb25zdAp7CiAgICBQdHJU
eXBlIHB0ciA9IG1fcHRyOwogICAgbV9wdHIgPSAwOwogICAgcmV0dXJuIHB0cjsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQ
YXNzT3duQXJyYXlQdHI8VD4mIGEsIGNvbnN0IFBhc3NPd25BcnJheVB0cjxVPiYgYikKewogICAg
cmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzT3duQXJyYXlQdHI8VD4mIGEs
IGNvbnN0IE93bkFycmF5UHRyPFU+JiBiKQp7CiAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgp
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE93bkFycmF5UHRyPFQ+JiBhLCBjb25zdCBQYXNzT3duQXJyYXlQdHI8VT4mIGIp
CnsKICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFzc093bkFycmF5UHRy
PFQ+JiBhLCBVKiBiKQp7CiAgICByZXR1cm4gYS5nZXQoKSA9PSBiOwp9Cgp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IFBh
c3NPd25BcnJheVB0cjxVPiYgYikKewogICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQ
YXNzT3duQXJyYXlQdHI8VD4mIGEsIGNvbnN0IFBhc3NPd25BcnJheVB0cjxVPiYgYikKewogICAg
cmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNzT3duQXJyYXlQdHI8VD4mIGEs
IGNvbnN0IE93bkFycmF5UHRyPFU+JiBiKQp7CiAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgp
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IE93bkFycmF5UHRyPFQ+JiBhLCBjb25zdCBQYXNzT3duQXJyYXlQdHI8VT4mIGIp
CnsKICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFzc093bkFycmF5UHRy
PFQ+JiBhLCBVKiBiKQp7CiAgICByZXR1cm4gYS5nZXQoKSAhPSBiOwp9Cgp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IFBh
c3NPd25BcnJheVB0cjxVPiYgYikKewogICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NPd25BcnJheVB0cjxUPiBhZG9wdEFycmF5UHRyKFQq
IHB0cikKewogICAgcmV0dXJuIFBhc3NPd25BcnJheVB0cjxUPihwdHIpOwp9Cgp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBkZWxldGVPd25lZEFycmF5UHRyKFQqIHB0cikKewogICAg
dHlwZWRlZiBjaGFyIGtub3duW3NpemVvZihUKSA/IDEgOiAtMV07CiAgICBpZiAoc2l6ZW9mKGtu
b3duKSkKICAgICAgICBkZWxldGUgW10gcHRyOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgUGFzc093bkFycmF5UHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29u
c3QgUGFzc093bkFycmF5UHRyPFU+JiBwKQp7CiAgICByZXR1cm4gYWRvcHRBcnJheVB0cihzdGF0
aWNfY2FzdDxUKj4ocC5sZWFrUHRyKCkpKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIFBhc3NPd25BcnJheVB0cjxUPiBjb25zdF9wb2ludGVyX2Nhc3QoY29uc3Qg
UGFzc093bkFycmF5UHRyPFU+JiBwKQp7CiAgICByZXR1cm4gYWRvcHRBcnJheVB0cihjb25zdF9j
YXN0PFQqPihwLmxlYWtQdHIoKSkpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCog
Z2V0UHRyKGNvbnN0IFBhc3NPd25BcnJheVB0cjxUPiYgcCkKewogICAgcmV0dXJuIHAuZ2V0KCk7
Cn0KCn0KCnVzaW5nIFdURjo6UGFzc093bkFycmF5UHRyOwp1c2luZyBXVEY6OmFkb3B0QXJyYXlQ
dHI7CnVzaW5nIFdURjo6Y29uc3RfcG9pbnRlcl9jYXN0Owp1c2luZyBXVEY6OnN0YXRpY19wb2lu
dGVyX2Nhc3Q7CiMgMjggIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT3duQXJy
YXlQdHIuaCIgMgoKCm5hbWVzcGFjZSBXVEYgewoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3Mg
UGFzc093bkFycmF5UHRyOwp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNzT3duQXJyYXlQdHI8VD4g
YWRvcHRBcnJheVB0cihUKik7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgT3duQXJyYXlQ
dHIgewpwdWJsaWM6CiAgICB0eXBlZGVmIFQqIFB0clR5cGU7CgogICAgT3duQXJyYXlQdHIoKSA6
IG1fcHRyKDApIHsgfQoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBPd25BcnJheVB0cihjb25z
dCBQYXNzT3duQXJyYXlQdHI8VT4mIG8pOwoKCgoKCiAgICBPd25BcnJheVB0cihjb25zdCBPd25B
cnJheVB0cjxUPiYpOwoKICAgIH5Pd25BcnJheVB0cigpIHsgZGVsZXRlT3duZWRBcnJheVB0ciht
X3B0cik7IH0KCiAgICBQdHJUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CgogICAg
dm9pZCBjbGVhcigpOwogICAgUGFzc093bkFycmF5UHRyPFQ+IHJlbGVhc2UoKTsKICAgIFB0clR5
cGUgbGVha1B0cigpIF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKCiAgICBU
JiBvcGVyYXRvciooKSBjb25zdCB7IGRvIGlmICghKG1fcHRyKSkgeyBXVEZSZXBvcnRBc3NlcnRp
b25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL093bkFycmF5UHRy
LmgiLCA1OCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fcHRyIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuICptX3B0cjsgfQogICAg
UHRyVHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeyBkbyBpZiAoIShtX3B0cikpIHsgV1RGUmVwb3J0
QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Pd25B
cnJheVB0ci5oIiwgNTksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX3B0ciIpOyBkbyB7IFdURlJl
cG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9p
ZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHJldHVybiBtX3B0cjsg
fQoKICAgIFQmIG9wZXJhdG9yW10oc3RkOjpwdHJkaWZmX3QgaSkgY29uc3QgeyBkbyBpZiAoISht
X3B0cikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9Pd25BcnJheVB0ci5oIiwgNjEsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJt
X3B0ciIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhi
YmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAo
MCk7IGRvIGlmICghKGkgPj0gMCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Pd25BcnJheVB0ci5oIiwgNjEsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sICJpID49IDAiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOyByZXR1cm4gbV9wdHJbaV07IH0KCiAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQoKCgoKCiAgICB0eXBlZGVmIFQqIE93bkFycmF5
UHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZTsKICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZPd25BcnJheVB0cjo6bV9wdHIgOiAwOyB9CgoK
ICAgIE93bkFycmF5UHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc093bkFycmF5UHRyPFQ+Jik7CiAg
ICBPd25BcnJheVB0ciYgb3BlcmF0b3I9KHN0ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7IHJldHVy
biAqdGhpczsgfQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gT3duQXJyYXlQdHImIG9wZXJhdG9y
PShjb25zdCBQYXNzT3duQXJyYXlQdHI8VT4mKTsKCiAgICB2b2lkIHN3YXAoT3duQXJyYXlQdHIm
IG8pIHsgc3RkOjpzd2FwKG1fcHRyLCBvLm1fcHRyKTsgfQoKcHJpdmF0ZToKICAgIFB0clR5cGUg
bV9wdHI7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxp
bmUgT3duQXJyYXlQdHI8VD46Ok93bkFycmF5UHRyKGNvbnN0IFBhc3NPd25BcnJheVB0cjxVPiYg
bykKICAgIDogbV9wdHIoby5sZWFrUHRyKCkpCnsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIHZvaWQgT3duQXJyYXlQdHI8VD46OmNsZWFyKCkKewogICAgUHRyVHlwZSBwdHIgPSBtX3B0
cjsKICAgIG1fcHRyID0gMDsKICAgIGRlbGV0ZU93bmVkQXJyYXlQdHIocHRyKTsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NPd25BcnJheVB0cjxUPiBPd25BcnJheVB0cjxUPjo6
cmVsZWFzZSgpCnsKICAgIFB0clR5cGUgcHRyID0gbV9wdHI7CiAgICBtX3B0ciA9IDA7CiAgICBy
ZXR1cm4gYWRvcHRBcnJheVB0cihwdHIpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
dHlwZW5hbWUgT3duQXJyYXlQdHI8VD46OlB0clR5cGUgT3duQXJyYXlQdHI8VD46OmxlYWtQdHIo
KQp7CiAgICBQdHJUeXBlIHB0ciA9IG1fcHRyOwogICAgbV9wdHIgPSAwOwogICAgcmV0dXJuIHB0
cjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE93bkFycmF5UHRyPFQ+JiBPd25BcnJh
eVB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NPd25BcnJheVB0cjxUPiYgbykKewogICAgUHRy
VHlwZSBwdHIgPSBtX3B0cjsKICAgIG1fcHRyID0gby5sZWFrUHRyKCk7CiAgICBkbyBpZiAoISgh
cHRyIHx8IG1fcHRyICE9IHB0cikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Pd25BcnJheVB0ci5oIiwgMTEzLCBfX1BSRVRU
WV9GVU5DVElPTl9fLCAiIXB0ciB8fCBtX3B0ciAhPSBwdHIiKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgZGVsZXRlT3duZWRBcnJheVB0
cihwdHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBpbmxpbmUgT3duQXJyYXlQdHI8VD4mIE93bkFycmF5UHRyPFQ+OjpvcGVy
YXRvcj0oY29uc3QgUGFzc093bkFycmF5UHRyPFU+JiBvKQp7CiAgICBQdHJUeXBlIHB0ciA9IG1f
cHRyOwogICAgbV9wdHIgPSBvLmxlYWtQdHIoKTsKICAgIGRvIGlmICghKCFwdHIgfHwgbV9wdHIg
IT0gcHRyKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL093bkFycmF5UHRyLmgiLCAxMjIsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICIhcHRyIHx8IG1fcHRyICE9IHB0ciIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICBkZWxldGVPd25lZEFycmF5UHRyKHB0cik7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBzd2FwKE93
bkFycmF5UHRyPFQ+JiBhLCBPd25BcnJheVB0cjxUPiYgYikKewogICAgYS5zd2FwKGIpOwp9Cgp0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE93bkFycmF5UHRyPFQ+JiBhLCBVKiBiKQp7CiAgICByZXR1cm4gYS5nZXQoKSA9PSBiOwp9
Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KFQqIGEsIGNvbnN0IE93bkFycmF5UHRyPFU+JiBiKQp7CiAgICByZXR1cm4gYSA9PSBiLmdldCgp
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IE93bkFycmF5UHRyPFQ+JiBhLCBVKiBiKQp7CiAgICByZXR1cm4gYS5nZXQoKSAh
PSBiOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KFQqIGEsIGNvbnN0IE93bkFycmF5UHRyPFU+JiBiKQp7CiAgICByZXR1cm4gYSAhPSBi
LmdldCgpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0cihjb25zdCBP
d25BcnJheVB0cjxUPiYgcCkKewogICAgcmV0dXJuIHAuZ2V0KCk7Cn0KCn0KCnVzaW5nIFdURjo6
T3duQXJyYXlQdHI7CiMgNTMgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0
ZU1hdGguaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFzc093
bkFycmF5UHRyLmgiIDEKIyA1NCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9E
YXRlTWF0aC5oIiAyCgoKCm5hbWVzcGFjZSBXVEYgewp2b2lkIGluaXRpYWxpemVEYXRlcygpOwpp
bnQgZXF1aXZhbGVudFllYXJGb3JEU1QoaW50IHllYXIpOwoKCmRvdWJsZSBwYXJzZUVTNURhdGVG
cm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOwpkb3Vi
bGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRl
U3RyaW5nKTsKZG91YmxlIHRpbWVDbGlwKGRvdWJsZSk7CgpTdHJpbmcgbWFrZVJGQzI4MjJEYXRl
U3RyaW5nKHVuc2lnbmVkIGRheU9mV2VlaywgdW5zaWduZWQgZGF5LCB1bnNpZ25lZCBtb250aCwg
dW5zaWduZWQgeWVhciwgdW5zaWduZWQgaG91cnMsIHVuc2lnbmVkIG1pbnV0ZXMsIHVuc2lnbmVk
IHNlY29uZHMsIGludCB1dGNPZmZzZXQpOwoKaW5saW5lIGRvdWJsZSBqc0N1cnJlbnRUaW1lKCkK
ewoKICAgIHJldHVybiBmbG9vcihXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Cn0KCmNvbnN0IGNoYXIg
KiBjb25zdCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJG
cmkiLCAiU2F0IiwgIlN1biIgfTsKY29uc3QgY2hhciAqIGNvbnN0IG1vbnRoTmFtZVsxMl0gPSB7
ICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsICJKdWwiLCAiQXVnIiwg
IlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIgfTsKCmNvbnN0IGRvdWJsZSBob3Vyc1BlckRheSA9
IDI0LjA7CmNvbnN0IGRvdWJsZSBtaW51dGVzUGVySG91ciA9IDYwLjA7CmNvbnN0IGRvdWJsZSBz
ZWNvbmRzUGVySG91ciA9IDYwLjAgKiA2MC4wOwpjb25zdCBkb3VibGUgc2Vjb25kc1Blck1pbnV0
ZSA9IDYwLjA7CmNvbnN0IGRvdWJsZSBtc1BlclNlY29uZCA9IDEwMDAuMDsKY29uc3QgZG91Ymxl
IG1zUGVyTWludXRlID0gNjAuMCAqIDEwMDAuMDsKY29uc3QgZG91YmxlIG1zUGVySG91ciA9IDYw
LjAgKiA2MC4wICogMTAwMC4wOwpjb25zdCBkb3VibGUgbXNQZXJEYXkgPSAyNC4wICogNjAuMCAq
IDYwLjAgKiAxMDAwLjA7CmNvbnN0IGRvdWJsZSBtc1Blck1vbnRoID0gMjU5MjAwMDAwMC4wOwoK
CmRvdWJsZSBkYXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSk7
CmludCBtc1RvWWVhcihkb3VibGUgbXMpOwppbnQgZGF5SW5ZZWFyKGRvdWJsZSBtcywgaW50IHll
YXIpOwppbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIp
OwppbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVh
cik7CgoKaW50MzJfdCBjYWxjdWxhdGVVVENPZmZzZXQoKTsKZG91YmxlIGNhbGN1bGF0ZURTVE9m
ZnNldChkb3VibGUgbXMsIGRvdWJsZSB1dGNPZmZzZXQpOwoKfQoKdXNpbmcgV1RGOjphZG9wdEFy
cmF5UHRyOwp1c2luZyBXVEY6OmRhdGVUb0RheXNGcm9tMTk3MDsKdXNpbmcgV1RGOjpkYXlJbk1v
bnRoRnJvbURheUluWWVhcjsKdXNpbmcgV1RGOjpkYXlJblllYXI7CnVzaW5nIFdURjo6bWludXRl
c1BlckhvdXI7CnVzaW5nIFdURjo6bW9udGhGcm9tRGF5SW5ZZWFyOwp1c2luZyBXVEY6Om1zUGVy
RGF5Owp1c2luZyBXVEY6Om1zUGVyTWludXRlOwp1c2luZyBXVEY6Om1zUGVyU2Vjb25kOwp1c2lu
ZyBXVEY6Om1zVG9ZZWFyOwp1c2luZyBXVEY6OnNlY29uZHNQZXJNaW51dGU7CnVzaW5nIFdURjo6
cGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVyczsKdXNpbmcgV1RGOjptYWtlUkZD
MjgyMkRhdGVTdHJpbmc7CnVzaW5nIFdURjo6Y2FsY3VsYXRlVVRDT2Zmc2V0Owp1c2luZyBXVEY6
OmNhbGN1bGF0ZURTVE9mZnNldDsKCgpuYW1lc3BhY2UgSlNDIHsKY2xhc3MgRXhlY1N0YXRlOwpz
dHJ1Y3QgR3JlZ29yaWFuRGF0ZVRpbWU7Cgp2b2lkIG1zVG9HcmVnb3JpYW5EYXRlVGltZShFeGVj
U3RhdGUqLCBkb3VibGUsIGJvb2wgb3V0cHV0SXNVVEMsIEdyZWdvcmlhbkRhdGVUaW1lJik7CmRv
dWJsZSBncmVnb3JpYW5EYXRlVGltZVRvTVMoRXhlY1N0YXRlKiwgY29uc3QgR3JlZ29yaWFuRGF0
ZVRpbWUmLCBkb3VibGUsIGJvb2wgaW5wdXRJc1VUQyk7CmRvdWJsZSBnZXRVVENPZmZzZXQoRXhl
Y1N0YXRlKik7CmRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKEV4
ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOwoKCgpzdHJ1Y3QgR3JlZ29yaWFuRGF0
ZVRpbWUgewogICAgcHJpdmF0ZTogR3JlZ29yaWFuRGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0
ZVRpbWUmKTsgR3JlZ29yaWFuRGF0ZVRpbWUmIG9wZXJhdG9yPShjb25zdCBHcmVnb3JpYW5EYXRl
VGltZSYpOwpwdWJsaWM6CiAgICBHcmVnb3JpYW5EYXRlVGltZSgpCiAgICAgICAgOiBzZWNvbmQo
MCkKICAgICAgICAsIG1pbnV0ZSgwKQogICAgICAgICwgaG91cigwKQogICAgICAgICwgd2Vla0Rh
eSgwKQogICAgICAgICwgbW9udGhEYXkoMCkKICAgICAgICAsIHllYXJEYXkoMCkKICAgICAgICAs
IG1vbnRoKDApCiAgICAgICAgLCB5ZWFyKDApCiAgICAgICAgLCBpc0RTVCgwKQogICAgICAgICwg
dXRjT2Zmc2V0KDApCiAgICB7CiAgICB9CgogICAgR3JlZ29yaWFuRGF0ZVRpbWUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCB0bSYgaW5UbSkKICAgICAgICA6IHNlY29uZChpblRtLnRtX3NlYykKICAg
ICAgICAsIG1pbnV0ZShpblRtLnRtX21pbikKICAgICAgICAsIGhvdXIoaW5UbS50bV9ob3VyKQog
ICAgICAgICwgd2Vla0RheShpblRtLnRtX3dkYXkpCiAgICAgICAgLCBtb250aERheShpblRtLnRt
X21kYXkpCiAgICAgICAgLCB5ZWFyRGF5KGluVG0udG1feWRheSkKICAgICAgICAsIG1vbnRoKGlu
VG0udG1fbW9uKQogICAgICAgICwgeWVhcihpblRtLnRtX3llYXIpCiAgICAgICAgLCBpc0RTVChp
blRtLnRtX2lzZHN0KQogICAgewogICAgICAgICh2b2lkKWV4ZWM7CgogICAgICAgIHV0Y09mZnNl
dCA9IHN0YXRpY19jYXN0PGludD4oaW5UbS50bV9nbXRvZmYpOwoKCgoKCiAgICAgICAgaW50IGlu
Wm9uZVNpemUgPSBzdHJsZW4oaW5UbS50bV96b25lKSArIDE7CiAgICAgICAgdGltZVpvbmUgPSBh
ZG9wdEFycmF5UHRyKG5ldyBjaGFyW2luWm9uZVNpemVdKTsKICAgICAgICBzdHJuY3B5KHRpbWVa
b25lLmdldCgpLCBpblRtLnRtX3pvbmUsIGluWm9uZVNpemUpOwoKCgogICAgfQoKICAgIG9wZXJh
dG9yIHRtKCkgY29uc3QKICAgIHsKICAgICAgICB0bSByZXQ7CiAgICAgICAgbWVtc2V0KCZyZXQs
IDAsIHNpemVvZihyZXQpKTsKCiAgICAgICAgcmV0LnRtX3NlYyA9IHNlY29uZDsKICAgICAgICBy
ZXQudG1fbWluID0gbWludXRlOwogICAgICAgIHJldC50bV9ob3VyID0gaG91cjsKICAgICAgICBy
ZXQudG1fd2RheSA9IHdlZWtEYXk7CiAgICAgICAgcmV0LnRtX21kYXkgPSBtb250aERheTsKICAg
ICAgICByZXQudG1feWRheSA9IHllYXJEYXk7CiAgICAgICAgcmV0LnRtX21vbiA9IG1vbnRoOwog
ICAgICAgIHJldC50bV95ZWFyID0geWVhcjsKICAgICAgICByZXQudG1faXNkc3QgPSBpc0RTVDsK
CgogICAgICAgIHJldC50bV9nbXRvZmYgPSBzdGF0aWNfY2FzdDxsb25nPih1dGNPZmZzZXQpOwoK
CiAgICAgICAgcmV0LnRtX3pvbmUgPSB0aW1lWm9uZS5nZXQoKTsKCgogICAgICAgIHJldHVybiBy
ZXQ7CiAgICB9CgogICAgdm9pZCBjb3B5RnJvbShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgcmhz
KQogICAgewogICAgICAgIHNlY29uZCA9IHJocy5zZWNvbmQ7CiAgICAgICAgbWludXRlID0gcmhz
Lm1pbnV0ZTsKICAgICAgICBob3VyID0gcmhzLmhvdXI7CiAgICAgICAgd2Vla0RheSA9IHJocy53
ZWVrRGF5OwogICAgICAgIG1vbnRoRGF5ID0gcmhzLm1vbnRoRGF5OwogICAgICAgIHllYXJEYXkg
PSByaHMueWVhckRheTsKICAgICAgICBtb250aCA9IHJocy5tb250aDsKICAgICAgICB5ZWFyID0g
cmhzLnllYXI7CiAgICAgICAgaXNEU1QgPSByaHMuaXNEU1Q7CiAgICAgICAgdXRjT2Zmc2V0ID0g
cmhzLnV0Y09mZnNldDsKICAgICAgICBpZiAocmhzLnRpbWVab25lKSB7CiAgICAgICAgICAgIGlu
dCBpblpvbmVTaXplID0gc3RybGVuKHJocy50aW1lWm9uZS5nZXQoKSkgKyAxOwogICAgICAgICAg
ICB0aW1lWm9uZSA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbaW5ab25lU2l6ZV0pOwogICAgICAg
ICAgICBzdHJuY3B5KHRpbWVab25lLmdldCgpLCByaHMudGltZVpvbmUuZ2V0KCksIGluWm9uZVNp
emUpOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICB0aW1lWm9uZSA9IG51bGxwdHI7CiAgICB9
CgogICAgaW50IHNlY29uZDsKICAgIGludCBtaW51dGU7CiAgICBpbnQgaG91cjsKICAgIGludCB3
ZWVrRGF5OwogICAgaW50IG1vbnRoRGF5OwogICAgaW50IHllYXJEYXk7CiAgICBpbnQgbW9udGg7
CiAgICBpbnQgeWVhcjsKICAgIGludCBpc0RTVDsKICAgIGludCB1dGNPZmZzZXQ7CiAgICBPd25B
cnJheVB0cjxjaGFyPiB0aW1lWm9uZTsKfTsKCnN0YXRpYyBpbmxpbmUgaW50IGdtdG9mZnNldChj
b25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCkKewogICAgcmV0dXJuIHQudXRjT2Zmc2V0Owp9Cn0K
IyAzMCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNl
Q2FjaGUuaCIgMgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZD
b3VudGVkLmgiIDEKIyAzMyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlQ2FjaGUuaCIgMgoKbmFtZXNwYWNlIEpTQyB7CgogICAgY2xhc3MgRGF0ZUlu
c3RhbmNlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGVJbnN0YW5jZURhdGE+IHsKICAgIHB1
YmxpYzoKICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRlSW5zdGFuY2VEYXRhPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRGF0ZUluc3RhbmNlRGF0YSk7IH0KCiAgICAgICAgZG91
YmxlIG1fZ3JlZ29yaWFuRGF0ZVRpbWVDYWNoZWRGb3JNUzsKICAgICAgICBHcmVnb3JpYW5EYXRl
VGltZSBtX2NhY2hlZEdyZWdvcmlhbkRhdGVUaW1lOwogICAgICAgIGRvdWJsZSBtX2dyZWdvcmlh
bkRhdGVUaW1lVVRDQ2FjaGVkRm9yTVM7CiAgICAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgbV9jYWNo
ZWRHcmVnb3JpYW5EYXRlVGltZVVUQzsKCiAgICBwcml2YXRlOgogICAgICAgIERhdGVJbnN0YW5j
ZURhdGEoKQogICAgICAgICAgICA6IG1fZ3JlZ29yaWFuRGF0ZVRpbWVDYWNoZWRGb3JNUyhzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKQogICAgICAgICAgICAsIG1fZ3Jl
Z29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OnF1aWV0X05hTigpKQogICAgICAgIHsKICAgICAgICB9CiAgICB9OwoKICAgIGNsYXNzIERhdGVJ
bnN0YW5jZUNhY2hlIHsKICAgIHB1YmxpYzoKICAgICAgICBEYXRlSW5zdGFuY2VDYWNoZSgpCiAg
ICAgICAgewogICAgICAgICAgICByZXNldCgpOwogICAgICAgIH0KCiAgICAgICAgdm9pZCByZXNl
dCgpCiAgICAgICAgewogICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhY2hlU2l6
ZTsgKytpKQogICAgICAgICAgICAgICAgbV9jYWNoZVtpXS5rZXkgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogICAgICAgIH0KCiAgICAgICAgRGF0ZUluc3RhbmNl
RGF0YSogYWRkKGRvdWJsZSBkKQogICAgICAgIHsKICAgICAgICAgICAgQ2FjaGVFbnRyeSYgZW50
cnkgPSBsb29rdXAoZCk7CiAgICAgICAgICAgIGlmIChkID09IGVudHJ5LmtleSkKICAgICAgICAg
ICAgICAgIHJldHVybiBlbnRyeS52YWx1ZS5nZXQoKTsKCiAgICAgICAgICAgIGVudHJ5LmtleSA9
IGQ7CiAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gRGF0ZUluc3RhbmNlRGF0YTo6Y3JlYXRlKCk7
CiAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZS5nZXQoKTsKICAgICAgICB9CgogICAgcHJp
dmF0ZToKICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNhY2hlU2l6ZSA9IDE2OwoKICAgICAg
ICBzdHJ1Y3QgQ2FjaGVFbnRyeSB7CiAgICAgICAgICAgIGRvdWJsZSBrZXk7CiAgICAgICAgICAg
IFJlZlB0cjxEYXRlSW5zdGFuY2VEYXRhPiB2YWx1ZTsKICAgICAgICB9OwoKICAgICAgICBDYWNo
ZUVudHJ5JiBsb29rdXAoZG91YmxlIGQpIHsgcmV0dXJuIG1fY2FjaGVbV1RGOjpGbG9hdEhhc2g8
ZG91YmxlPjo6aGFzaChkKSAmIChjYWNoZVNpemUgLSAxKV07IH0KCiAgICAgICAgRml4ZWRBcnJh
eTxDYWNoZUVudHJ5LCBjYWNoZVNpemU+IG1fY2FjaGU7CiAgICB9OwoKfQojIDM1ICIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCIgMgojIDEgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIiAx
CiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5oIgojZGVmaW5lIEV4ZWN1dGFibGVBbGxvY2F0b3JfaCAKCgoKIyAxICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaCIgMQojIDMwICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaCIK
I2RlZmluZSBXVEZfTWV0YUFsbG9jYXRvckhhbmRsZV9oIAoKCgoKCm5hbWVzcGFjZSBXVEYgewoK
Y2xhc3MgTWV0YUFsbG9jYXRvcjsKCmNsYXNzIE1ldGFBbGxvY2F0b3JIYW5kbGU6IHB1YmxpYyBS
ZWZDb3VudGVkPE1ldGFBbGxvY2F0b3JIYW5kbGU+IHsKcHJpdmF0ZToKICAgIE1ldGFBbGxvY2F0
b3JIYW5kbGUoTWV0YUFsbG9jYXRvciosIHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZUluQnl0ZXMp
OwoKICAgIE1ldGFBbGxvY2F0b3JIYW5kbGUodm9pZCogc3RhcnQsIHNpemVfdCBzaXplSW5CeXRl
cykKICAgICAgICA6IG1fYWxsb2NhdG9yKDApCiAgICAgICAgLCBtX3N0YXJ0KHN0YXJ0KQogICAg
ICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKICAgIHsKICAgICAgICBkbyBpZiAoIShz
dGFydCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmgiLCA0OSwgX19QUkVUVFlfRlVOQ1RJ
T05fXywgInN0YXJ0Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsKICAgIH0KCnB1YmxpYzoKICAgIH5NZXRhQWxsb2NhdG9ySGFuZGxlKCk7Cgog
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWV0YUFsbG9jYXRvckhhbmRsZT4gY3JlYXRlU2VsZk1hbmFn
ZWRIYW5kbGUodm9pZCogc3RhcnQsIHNpemVfdCBzaXplSW5CeXRlcykKICAgIHsKICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1ldGFBbGxvY2F0b3JIYW5kbGUoc3RhcnQsIHNpemVJbkJ5dGVz
KSk7CiAgICB9CgogICAgdm9pZCogc3RhcnQoKQogICAgewogICAgICAgIHJldHVybiBtX3N0YXJ0
OwogICAgfQoKICAgIHZvaWQqIGVuZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX3N0YXJ0KSArIG1fc2l6
ZUluQnl0ZXMpOwogICAgfQoKICAgIHNpemVfdCBzaXplSW5CeXRlcygpCiAgICB7CiAgICAgICAg
cmV0dXJuIG1fc2l6ZUluQnl0ZXM7CiAgICB9CgogICAgdm9pZCBzaHJpbmsoc2l6ZV90IG5ld1Np
emVJbkJ5dGVzKTsKCiAgICBib29sIGlzTWFuYWdlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICEh
bV9hbGxvY2F0b3I7CiAgICB9CgogICAgTWV0YUFsbG9jYXRvciogYWxsb2NhdG9yKCkKICAgIHsK
ICAgICAgICBkbyBpZiAoIShtX2FsbG9jYXRvcikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9ySGFuZGxl
LmgiLCA4NCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fYWxsb2NhdG9yIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4g
bV9hbGxvY2F0b3I7CiAgICB9Cgpwcml2YXRlOgogICAgZnJpZW5kIGNsYXNzIE1ldGFBbGxvY2F0
b3I7CgogICAgTWV0YUFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICB2b2lkKiBtX3N0YXJ0Owog
ICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7Cn07Cgp9CiMgMzIgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIiAyCiMgNzMgIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIgojZGVmaW5lIEpJ
VF9BTExPQ0FUT1JfTEFSR0VfQUxMT0NfU0laRSAocGFnZVNpemUoKSAqIDQpCgoKCgoKCiNkZWZp
bmUgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFIHRydWUKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNz
IEpTR2xvYmFsRGF0YTsKdm9pZCByZWxlYXNlRXhlY3V0YWJsZU1lbW9yeShKU0dsb2JhbERhdGEm
KTsKCmlubGluZSBzaXplX3Qgcm91bmRVcEFsbG9jYXRpb25TaXplKHNpemVfdCByZXF1ZXN0LCBz
aXplX3QgZ3JhbnVsYXJpdHkpCnsKICAgIGlmICgoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAtIGdyYW51bGFyaXR5KSA8PSByZXF1ZXN0KQogICAgICAgIGRvIHsgV1RGUmVwb3J0
QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCop
KCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOwoKCiAgICBzaXplX3Qgc2l6ZSA9IHJlcXVlc3QgKyAo
Z3JhbnVsYXJpdHkgLSAxKTsKICAgIHNpemUgPSBzaXplICYgfihncmFudWxhcml0eSAtIDEpOwog
ICAgZG8gaWYgKCEoc2l6ZSA+PSByZXF1ZXN0KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJl
KCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
aCIsIDk2LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAic2l6ZSA+PSByZXF1ZXN0Iik7IGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIHJldHVybiBz
aXplOwp9Cgp9CgoKCm5hbWVzcGFjZSBKU0MgewoKdHlwZWRlZiBXVEY6Ok1ldGFBbGxvY2F0b3JI
YW5kbGUgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZTsKCmNsYXNzIEV4ZWN1dGFibGVBbGxvY2F0b3Ig
ewogICAgZW51bSBQcm90ZWN0aW9uU2V0dGluZyB7IFdyaXRhYmxlLCBFeGVjdXRhYmxlIH07Cgpw
dWJsaWM6CiAgICBFeGVjdXRhYmxlQWxsb2NhdG9yKEpTR2xvYmFsRGF0YSYpOwoKICAgIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVBbGxvY2F0b3IoKTsKCiAgICBib29sIGlzVmFsaWQoKSBjb25zdDsK
CiAgICBzdGF0aWMgYm9vbCB1bmRlck1lbW9yeVByZXNzdXJlKCk7CgoKCgogICAgc3RhdGljIHZv
aWQgZHVtcFByb2ZpbGUoKSB7IH0KCgogICAgUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFu
ZGxlPiBhbGxvY2F0ZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgc2l6ZUluQnl0ZXMpOwojIDEzOSAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgi
CiAgICBzdGF0aWMgdm9pZCBtYWtlV3JpdGFibGUodm9pZCosIHNpemVfdCkge30KICAgIHN0YXRp
YyB2b2lkIG1ha2VFeGVjdXRhYmxlKHZvaWQqLCBzaXplX3QpIHt9CgoKCgogICAgc3RhdGljIHZv
aWQgY2FjaGVGbHVzaCh2b2lkKiwgc2l6ZV90KQogICAgewogICAgfQojIDI1MiAiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAgICBzdGF0
aWMgc2l6ZV90IGNvbW1pdHRlZEJ5dGVDb3VudCgpOwoKcHJpdmF0ZToKCgoKCn07Cgp9CiMgMzYg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIiAy
CiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgiIDEKIyAy
NyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgiCiNkZWZpbmUg
U3Ryb25nX2ggCgoKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBKU0dsb2JhbERhdGE7CkhhbmRs
ZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoSlNHbG9iYWxEYXRhJik7CgoKdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIFN0cm9uZyA6IHB1YmxpYyBIYW5kbGU8VD4gewogICAgdXNpbmcgSGFu
ZGxlPFQ+OjpzbG90OwogICAgdXNpbmcgSGFuZGxlPFQ+OjpzZXRTbG90OwoKcHVibGljOgogICAg
dHlwZWRlZiB0eXBlbmFtZSBIYW5kbGU8VD46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7Cgog
ICAgU3Ryb25nKCkKICAgICAgICA6IEhhbmRsZTxUPigpCiAgICB7CiAgICB9CgogICAgU3Ryb25n
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVlID0gRXh0ZXJuYWxU
eXBlKCkpCiAgICAgICAgOiBIYW5kbGU8VD4oYWxsb2NhdGVHbG9iYWxIYW5kbGUoZ2xvYmFsRGF0
YSkpCiAgICB7CiAgICAgICAgc2V0KHZhbHVlKTsKICAgIH0KCiAgICBTdHJvbmcoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBIYW5kbGU8VD4gaGFuZGxlKQogICAgICAgIDogSGFuZGxlPFQ+KGFs
bG9jYXRlR2xvYmFsSGFuZGxlKGdsb2JhbERhdGEpKQogICAgewogICAgICAgIHNldChoYW5kbGUu
Z2V0KCkpOwogICAgfQoKICAgIFN0cm9uZyhjb25zdCBTdHJvbmcmIG90aGVyKQogICAgICAgIDog
SGFuZGxlPFQ+KCkKICAgIHsKICAgICAgICBpZiAoIW90aGVyLnNsb3QoKSkKICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgIHNldFNsb3QoSGFuZGxlSGVhcDo6aGVhcEZvcihvdGhlci5zbG90KCkp
LT5hbGxvY2F0ZSgpKTsKICAgICAgICBzZXQob3RoZXIuZ2V0KCkpOwogICAgfQoKICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPiBTdHJvbmcoY29uc3QgU3Ryb25nPFU+JiBvdGhlcikKICAgICAgICA6
IEhhbmRsZTxUPigpCiAgICB7CiAgICAgICAgaWYgKCFvdGhlci5zbG90KCkpCiAgICAgICAgICAg
IHJldHVybjsKICAgICAgICBzZXRTbG90KEhhbmRsZUhlYXA6OmhlYXBGb3Iob3RoZXIuc2xvdCgp
KS0+YWxsb2NhdGUoKSk7CiAgICAgICAgc2V0KG90aGVyLmdldCgpKTsKICAgIH0KCiAgICBlbnVt
IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9OwogICAg
Ym9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHNsb3QoKSA9PSBo
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogICAgU3Ryb25nKEhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVRhZykKICAgICAgICA6IEhhbmRsZTxUPihoYXNoVGFibGVEZWxldGVkVmFsdWUoKSkKICAgIHsK
ICAgIH0KCiAgICB+U3Ryb25nKCkKICAgIHsKICAgICAgICBjbGVhcigpOwogICAgfQoKICAgIHZv
aWQgc3dhcChTdHJvbmcmIG90aGVyKQogICAgewogICAgICAgIEhhbmRsZTxUPjo6c3dhcChvdGhl
cik7CiAgICB9CgogICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5h
bFR5cGUgdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCFzbG90KCkpCiAgICAgICAgICAgIHNldFNs
b3QoYWxsb2NhdGVHbG9iYWxIYW5kbGUoZ2xvYmFsRGF0YSkpOwogICAgICAgIHNldCh2YWx1ZSk7
CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IFN0cm9uZyYgb3BlcmF0b3I9KGNvbnN0
IFN0cm9uZzxVPiYgb3RoZXIpCiAgICB7CiAgICAgICAgaWYgKCFvdGhlci5zbG90KCkpIHsKICAg
ICAgICAgICAgY2xlYXIoKTsKICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgIH0KCiAg
ICAgICAgc2V0KCpIYW5kbGVIZWFwOjpoZWFwRm9yKG90aGVyLnNsb3QoKSktPmdsb2JhbERhdGEo
KSwgb3RoZXIuZ2V0KCkpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBTdHJvbmcm
IG9wZXJhdG9yPShjb25zdCBTdHJvbmcmIG90aGVyKQogICAgewogICAgICAgIGlmICghb3RoZXIu
c2xvdCgpKSB7CiAgICAgICAgICAgIGNsZWFyKCk7CiAgICAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICAgICB9CgogICAgICAgIHNldCgqSGFuZGxlSGVhcDo6aGVhcEZvcihvdGhlci5zbG90KCkp
LT5nbG9iYWxEYXRhKCksIG90aGVyLmdldCgpKTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9
CgogICAgdm9pZCBjbGVhcigpCiAgICB7CiAgICAgICAgaWYgKCFzbG90KCkpCiAgICAgICAgICAg
IHJldHVybjsKICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QoKSktPmRlYWxsb2NhdGUo
c2xvdCgpKTsKICAgICAgICBzZXRTbG90KDApOwogICAgfQoKcHJpdmF0ZToKICAgIHN0YXRpYyBI
YW5kbGVTbG90IGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8SGFuZGxlU2xvdD4oLTEpOyB9CgogICAgdm9pZCBzZXQoRXh0ZXJuYWxUeXBlIGV4dGVybmFs
VHlwZSkKICAgIHsKICAgICAgICBkbyBpZiAoIShzbG90KCkpKSB7IFdURlJlcG9ydEFzc2VydGlv
bkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZy5oIiwg
MTQwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAic2xvdCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
SGFuZGxlVHlwZXM8VD46OnRvSlNWYWx1ZShleHRlcm5hbFR5cGUpOwogICAgICAgIEhhbmRsZUhl
YXA6OmhlYXBGb3Ioc2xvdCgpKS0+d3JpdGVCYXJyaWVyKHNsb3QoKSwgdmFsdWUpOwogICAgICAg
ICpzbG90KCkgPSB2YWx1ZTsKICAgIH0KfTsKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lk
IHN3YXAoU3Ryb25nPFQ+JiBhLCBTdHJvbmc8VD4mIGIpCnsKICAgIGEuc3dhcChiKTsKfQoKfQoK
bmFtZXNwYWNlIFdURiB7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJhaXRz
PEpTQzo6U3Ryb25nPFQ+ID4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7CiAgICBzdGF0aWMg
Y29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOwp9OwoKdGVtcGxhdGU8dHlw
ZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpTdHJvbmc8UD4gPiA6IFNpbXBsZUNsYXNz
SGFzaFRyYWl0czxKU0M6OlN0cm9uZzxQPiA+IHsgfTsKCn0KIyAzNyAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgiIDIKIyAxICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgiIDEKIyAzMSAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oIgojZGVmaW5lIEpJVFN0dWJzX2ggCgoj
IDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgiIDEK
IyAzMCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCIK
I2RlZmluZSBDYWxsRGF0YV9oIAoKCgpuYW1lc3BhY2UgSlNDIHsKCiAgICBjbGFzcyBBcmdMaXN0
OwogICAgY2xhc3MgRXhlY1N0YXRlOwogICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAg
Y2xhc3MgSlNPYmplY3Q7CiAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKCiAgICBlbnVtIENhbGxU
eXBlIHsKICAgICAgICBDYWxsVHlwZU5vbmUsCiAgICAgICAgQ2FsbFR5cGVIb3N0LAogICAgICAg
IENhbGxUeXBlSlMKICAgIH07CgogICAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoICpOYXRpdmVG
dW5jdGlvbikoRXhlY1N0YXRlKik7CgogICAgdW5pb24gQ2FsbERhdGEgewogICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uOwogICAgICAgIH0gbmF0aXZl
OwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlOwogICAgICAgICAgICBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbjsKICAg
ICAgICB9IGpzOwogICAgfTsKCiAgICBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBm
dW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFs
dWUsIGNvbnN0IEFyZ0xpc3QmKTsKCn0KIyAzNCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgojZGVm
aW5lIE1hY3JvQXNzZW1ibGVyQ29kZVJlZl9oIAoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCIgMQojIDMwICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIiAyCiMg
MSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXNzUmVmUHRyLmgiIDEKIyAz
MSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIgMgoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Vu
dXNlZFBhcmFtLmgiIDEKIyAzMyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIgMgojIDUwICIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgojZGVmaW5lIEFT
U0VSVF9WQUxJRF9DT0RFX1BPSU5URVIocHRyKSBBU1NFUlQocHRyKQoKI2RlZmluZSBBU1NFUlRf
VkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KSAKCgpuYW1lc3BhY2UgSlNDIHsKCgoKCgpjbGFzcyBG
dW5jdGlvblB0ciB7CnB1YmxpYzoKICAgIEZ1bmN0aW9uUHRyKCkKICAgICAgICA6IG1fdmFsdWUo
MCkKICAgIHsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlPgogICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKCkpCiAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2
YWx1ZSkKICAgIHsKICAgICAgICBkbyBpZiAoIShtX3ZhbHVlKSkgeyBXVEZSZXBvcnRBc3NlcnRp
b25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oIiwgNzIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX3ZhbHVlIik7
IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVm
ID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlLCB0eXBlbmFtZSBhcmdUeXBlMT4K
ICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSkpCiAgICAgICAgOiBt
X3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgIHsKICAgICAgICBkbyBpZiAoIShtX3ZhbHVlKSkgeyBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIiwgNzksIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJtX3ZhbHVlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlLCB0eXBl
bmFtZSBhcmdUeXBlMSwgdHlwZW5hbWUgYXJnVHlwZTI+CiAgICBGdW5jdGlvblB0cihyZXR1cm5U
eXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyKSkKICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgewogICAgICAgIGRvIGlmICghKG1fdmFsdWUpKSB7IFdURlJlcG9ydEFzc2Vy
dGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiLCA4NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fdmFsdWUi
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIHJldHVyblR5cGUsIHR5cGVuYW1lIGFyZ1R5cGUx
LCB0eXBlbmFtZSBhcmdUeXBlMiwgdHlwZW5hbWUgYXJnVHlwZTM+CiAgICBGdW5jdGlvblB0cihy
ZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMykpCiAgICAgICAg
OiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgIHsKICAgICAgICBkbyBpZiAoIShtX3ZhbHVlKSkg
eyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIiwgOTMsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sICJtX3ZhbHVlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVp
bnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlLCB0
eXBlbmFtZSBhcmdUeXBlMSwgdHlwZW5hbWUgYXJnVHlwZTIsIHR5cGVuYW1lIGFyZ1R5cGUzLCB0
eXBlbmFtZSBhcmdUeXBlND4KICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdU
eXBlMSwgYXJnVHlwZTIsIGFyZ1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgOiBtX3ZhbHVlKCh2
b2lkKil2YWx1ZSkKICAgIHsKICAgICAgICBkbyBpZiAoIShtX3ZhbHVlKSkgeyBXVEZSZXBvcnRB
c3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIiwgMTAwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV92
YWx1ZSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhi
YmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAo
MCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlPgogICAgZXhwbGlj
aXQgRnVuY3Rpb25QdHIoRnVuY3Rpb25UeXBlKiB2YWx1ZSkKCgoKICAgICAgICA6IG1fdmFsdWUo
KHZvaWQqKXZhbHVlKQogICAgewogICAgICAgIGRvIGlmICghKG1fdmFsdWUpKSB7IFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiLCAxMTAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJt
X3ZhbHVlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkw
eGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxl
ICgwKTsKICAgIH0KCiAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
ICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQoK
CnByaXZhdGU6CiAgICB2b2lkKiBtX3ZhbHVlOwp9OwoKCgoKCgoKY2xhc3MgUmV0dXJuQWRkcmVz
c1B0ciB7CnB1YmxpYzoKICAgIFJldHVybkFkZHJlc3NQdHIoKQogICAgICAgIDogbV92YWx1ZSgw
KQogICAgewogICAgfQoKICAgIGV4cGxpY2l0IFJldHVybkFkZHJlc3NQdHIodm9pZCogdmFsdWUp
CiAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgewogICAgICAgIGRvIGlmICghKG1fdmFsdWUp
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiLCAxMzcsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJtX3ZhbHVlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICop
KHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsKICAgIH0KCiAgICBleHBsaWNpdCBSZXR1cm5BZGRyZXNzUHRyKEZ1
bmN0aW9uUHRyIGZ1bmN0aW9uKQogICAgICAgIDogbV92YWx1ZShmdW5jdGlvbi52YWx1ZSgpKQog
ICAgewogICAgICAgIGRvIGlmICghKG1fdmFsdWUpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgiLCAxNDMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX3ZhbHVlIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIH0KCiAg
ICB2b2lkKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KCnByaXZhdGU6CiAgICB2
b2lkKiBtX3ZhbHVlOwp9OwoKCgoKY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHsKcHVibGlj
OgogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkKICAgICAgICA6IG1fdmFsdWUoMCkKICAgIHsK
ICAgIH0KCiAgICBleHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIodm9pZCogdmFsdWUpCgoK
CgogICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKCiAgICB7CiAgICAgICAgZG8gaWYgKCEobV92YWx1
ZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIsIDE3MCwgX19QUkVUVFlf
RlVOQ1RJT05fXywgIm1fdmFsdWUiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOwogICAgfQoKICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cihSZXR1cm5BZGRyZXNzUHRyIHJhKQogICAgICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQog
ICAgewogICAgICAgIGRvIGlmICghKG1fdmFsdWUpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgiLCAxNzYsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX3ZhbHVlIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIH0KCiAg
ICB2b2lkKiBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KCgoK
CiAgICB2b2lkKiBkYXRhTG9jYXRpb24oKSBjb25zdCB7IGRvIGlmICghKG1fdmFsdWUpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiLCAxODQsIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJtX3ZhbHVlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsgcmV0dXJuIG1fdmFsdWU7IH0KCgogICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dAogICAgewogICAgICAgIHJldHVybiAhbV92YWx1ZTsKICAgIH0KCnByaXZhdGU6CiAgICB2b2lk
KiBtX3ZhbHVlOwp9OwoKCgoKCgpjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgewpwcml2YXRl
OgoKCiAgICBleHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGNvZGVQdHIpCiAgICAgICAgOiBtX2NvZGVQdHIoY29kZVB0cikKICAgIHsKICAgICAgICBk
byBpZiAoIShtX2NvZGVQdHIpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgi
LCAyMDgsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX2NvZGVQdHIiKTsgZG8geyBXVEZSZXBvcnRC
YWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKiko
KSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgfQoKcHVibGljOgogICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmKCkKICAgIHsKICAgIH0KCiAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYoUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBleGVjdXRhYmxlTWVtb3J5
KQogICAgICAgIDogbV9jb2RlUHRyKGV4ZWN1dGFibGVNZW1vcnktPnN0YXJ0KCkpCiAgICAgICAg
LCBtX2V4ZWN1dGFibGVNZW1vcnkoZXhlY3V0YWJsZU1lbW9yeSkKICAgIHsKICAgICAgICBkbyBp
ZiAoIShtX2V4ZWN1dGFibGVNZW1vcnktPmlzTWFuYWdlZCgpKSkgeyBXVEZSZXBvcnRBc3NlcnRp
b25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oIiwgMjIwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9leGVjdXRh
YmxlTWVtb3J5LT5pc01hbmFnZWQoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8gaWYgKCEobV9leGVjdXRhYmxlTWVtb3J5
LT5zdGFydCgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIiwgMjIxLCBf
X1BSRVRUWV9GVU5DVElPTl9fLCAibV9leGVjdXRhYmxlTWVtb3J5LT5zdGFydCgpIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBk
byBpZiAoIShtX2NvZGVQdHIpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgi
LCAyMjIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX2NvZGVQdHIiKTsgZG8geyBXVEZSZXBvcnRC
YWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKiko
KSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgfQoKCgoKICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBjb2RlUHRyKQogICAgewogICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYoY29kZVB0cik7CiAgICB9CgogICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhl
Y3V0YWJsZU1lbW9yeSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZU1l
bW9yeS5nZXQoKTsKICAgIH0KCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZSgpIGNvbnN0
CiAgICB7CiAgICAgICAgcmV0dXJuIG1fY29kZVB0cjsKICAgIH0KCiAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0CiAgICB7CiAgICAgICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpCiAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgIHJldHVybiBtX2V4ZWN1dGFibGVNZW1vcnktPnNpemVJbkJ5dGVz
KCk7CiAgICB9CgogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jb2RlUHRy
OyB9Cgpwcml2YXRlOgogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1fY29kZVB0cjsKICAgIFJl
ZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBtX2V4ZWN1dGFibGVNZW1vcnk7Cn07Cgp9CiMg
MzUgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaCIgMgojIDEg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oIiAx
CiMgMzYgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaCIgMgoj
IDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgi
IDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuaCIKI2RlZmluZSBUaHVua0dlbmVyYXRvcnNfaCAKCgpuYW1lc3BhY2UgSlNDIHsKICAgIGNs
YXNzIEV4ZWN1dGFibGVQb29sOwogICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgY2xhc3MgTmF0
aXZlRXhlY3V0YWJsZTsKICAgIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKCiAgICB0eXBl
ZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiAoKlRodW5rR2VuZXJhdG9yKShKU0dsb2JhbERhdGEq
KTsKICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoSlNH
bG9iYWxEYXRhKik7CiAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1bmtHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKik7CiAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnJvbUNoYXJDb2Rl
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CiAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
YWJzVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CiAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgY2VpbFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwogICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGV4cFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwogICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZsb29yVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CiAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbG9nVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CiAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7
CiAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcG93VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
Kik7Cn0KIyAzNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5o
IiAyCgoKCgpuYW1lc3BhY2UgSlNDIHsKCiAgICBzdHJ1Y3QgU3RydWN0dXJlU3R1YkluZm87Cgog
ICAgY2xhc3MgQ29kZUJsb2NrOwogICAgY2xhc3MgRXhlY3V0YWJsZVBvb2w7CiAgICBjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGU7CiAgICBjbGFzcyBJZGVudGlmaWVyOwogICAgY2xhc3MgSlNHbG9i
YWxEYXRhOwogICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICBjbGFzcyBKU09iamVjdDsKICAg
IGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I7CiAgICBjbGFzcyBKU1ZhbHVlOwogICAgY2xh
c3MgSlNWYWx1ZUVuY29kZWRBc1BvaW50ZXI7CiAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwog
ICAgY2xhc3MgUHJvZmlsZXI7CiAgICBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiAgICBjbGFzcyBQdXRQ
cm9wZXJ0eVNsb3Q7CiAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICBjbGFzcyBSZWdFeHA7Cgog
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWs7CgogICAgdW5pb24gSklUU3R1YkFy
ZyB7CiAgICAgICAgdm9pZCogYXNQb2ludGVyOwogICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzRW5j
b2RlZEpTVmFsdWU7CiAgICAgICAgaW50MzJfdCBhc0ludDMyOwoKICAgICAgICBKU1ZhbHVlIGpz
VmFsdWUoKSB7IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUoYXNFbmNvZGVkSlNWYWx1ZSk7IH0KICAg
ICAgICBKU09iamVjdCoganNPYmplY3QoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxKU09iamVjdCo+
KGFzUG9pbnRlcik7IH0KICAgICAgICBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgeyByZXR1cm4g
KnN0YXRpY19jYXN0PElkZW50aWZpZXIqPihhc1BvaW50ZXIpOyB9CiAgICAgICAgaW50MzJfdCBp
bnQzMigpIHsgcmV0dXJuIGFzSW50MzI7IH0KICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvZGVCbG9jayo+KGFzUG9pbnRlcik7IH0KICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oYXNQb2ludGVyKTsgfQogICAgICAgIFJlZ0V4cCogcmVnRXhwKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UmVnRXhwKj4oYXNQb2ludGVyKTsgfQogICAgICAgIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IqIHByb3BlcnR5TmFtZUl0ZXJhdG9yKCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcio+KGFzUG9pbnRlcik7IH0KICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihhc1BvaW50ZXIpOyB9CiAgICAgICAgSlNTdHJpbmcqIGpzU3RyaW5nKCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc1BvaW50ZXIpOyB9CiAgICAgICAgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzKCkgeyByZXR1cm4gUmV0dXJuQWRkcmVzc1B0cihhc1BvaW50ZXIp
OyB9CiAgICB9OwoKICAgIHN0cnVjdCBUcmFtcG9saW5lU3RydWN0dXJlIHsKICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY3RpU3RyaW5nTGVuZ3RoVHJhbXBvbGluZTsKICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY3RpVmlydHVhbENhbGxMaW5rOwogICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBjdGlWaXJ0dWFsQ29uc3RydWN0TGluazsKICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgY3RpVmlydHVhbENhbGw7CiAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0
aVZpcnR1YWxDb25zdHJ1Y3Q7CiAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2
ZUNhbGw7CiAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2ZUNvbnN0cnVjdDsK
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpU29mdE1vZHVsbzsKICAgIH07CgoKICAg
IHN0cnVjdCBKSVRTdGFja0ZyYW1lIHsKICAgICAgICB2b2lkKiByZXNlcnZlZDsKICAgICAgICBK
SVRTdHViQXJnIGFyZ3NbNl07CiAgICAgICAgdm9pZCogcGFkZGluZ1syXTsKCiAgICAgICAgdm9p
ZCogY29kZTsKICAgICAgICBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZTsKICAgICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZTsKICAgICAgICB2b2lkKiB1bnVzZWQxOwogICAgICAgIFByb2ZpbGVy
KiogZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlOwogICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YTsKCiAgICAgICAgdm9pZCogc2F2ZWRSQlg7CiAgICAgICAgdm9pZCogc2F2ZWRSMTU7CiAg
ICAgICAgdm9pZCogc2F2ZWRSMTQ7CiAgICAgICAgdm9pZCogc2F2ZWRSMTM7CiAgICAgICAgdm9p
ZCogc2F2ZWRSMTI7CiAgICAgICAgdm9pZCogc2F2ZWRSQlA7CiAgICAgICAgdm9pZCogc2F2ZWRS
SVA7CgoKICAgICAgICBSZXR1cm5BZGRyZXNzUHRyKiByZXR1cm5BZGRyZXNzU2xvdCgpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0dXJuQWRkcmVzc1B0cio+KHRoaXMpIC0gMTsgfQogICAg
fTsKIyAyNTkgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaCIK
I2RlZmluZSBKSVRTVEFDS0ZSQU1FX0FSR1NfSU5ERVggKE9CSkVDVF9PRkZTRVRPRihKSVRTdGFj
a0ZyYW1lLCBhcmdzKSAvIHNpemVvZih2b2lkKikpCgojZGVmaW5lIFNUVUJfQVJHU19ERUNMQVJB
VElPTiB2b2lkKiogYXJncwojZGVmaW5lIFNUVUJfQVJHUyAoYXJncykKIyAyNzMgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaCIKI2RlZmluZSBKSVRfU1RVQiAK
CgogICAgZXh0ZXJuICJDIiB2b2lkIGN0aVZNVGhyb3dUcmFtcG9saW5lKCk7CiAgICBleHRlcm4g
IkMiIHZvaWQgY3RpT3BUaHJvd05vdENhdWdodCgpOwogICAgZXh0ZXJuICJDIiBFbmNvZGVkSlNW
YWx1ZSBjdGlUcmFtcG9saW5lKHZvaWQqIGNvZGUsIFJlZ2lzdGVyRmlsZSosIENhbGxGcmFtZSos
IHZvaWQqICwgUHJvZmlsZXIqKiwgSlNHbG9iYWxEYXRhKik7CgogICAgY2xhc3MgSklUVGh1bmtz
IHsKICAgIHB1YmxpYzoKICAgICAgICBKSVRUaHVua3MoSlNHbG9iYWxEYXRhKik7CiAgICAgICAg
fkpJVFRodW5rcygpOwoKICAgICAgICBzdGF0aWMgdm9pZCB0cnlDYWNoZUdldEJ5SUQoQ2FsbEZy
YW1lKiwgQ29kZUJsb2NrKiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pOwogICAgICAgIHN0YXRpYyB2b2lk
IHRyeUNhY2hlUHV0QnlJRChDYWxsRnJhbWUqLCBDb2RlQmxvY2sqLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3Qm
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGJvb2wgZGlyZWN0KTsKCiAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIGN0aVN0cmluZ0xlbmd0aFRyYW1wb2xpbmUoKSB7IHJldHVybiBt
X3RyYW1wb2xpbmVTdHJ1Y3R1cmUuY3RpU3RyaW5nTGVuZ3RoVHJhbXBvbGluZTsgfQogICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlWaXJ0dWFsQ2FsbExpbmsoKSB7IHJldHVybiBtX3Ry
YW1wb2xpbmVTdHJ1Y3R1cmUuY3RpVmlydHVhbENhbGxMaW5rOyB9CiAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGN0aVZpcnR1YWxDb25zdHJ1Y3RMaW5rKCkgeyByZXR1cm4gbV90cmFtcG9s
aW5lU3RydWN0dXJlLmN0aVZpcnR1YWxDb25zdHJ1Y3RMaW5rOyB9CiAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGN0aVZpcnR1YWxDYWxsKCkgeyByZXR1cm4gbV90cmFtcG9saW5lU3RydWN0
dXJlLmN0aVZpcnR1YWxDYWxsOyB9CiAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aVZp
cnR1YWxDb25zdHJ1Y3QoKSB7IHJldHVybiBtX3RyYW1wb2xpbmVTdHJ1Y3R1cmUuY3RpVmlydHVh
bENvbnN0cnVjdDsgfQogICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRpdmVDYWxs
KCkgeyByZXR1cm4gbV90cmFtcG9saW5lU3RydWN0dXJlLmN0aU5hdGl2ZUNhbGw7IH0KICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZlQ29uc3RydWN0KCkgeyByZXR1cm4gbV90
cmFtcG9saW5lU3RydWN0dXJlLmN0aU5hdGl2ZUNvbnN0cnVjdDsgfQogICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBjdGlTb2Z0TW9kdWxvKCkgeyByZXR1cm4gbV90cmFtcG9saW5lU3RydWN0
dXJlLmN0aVNvZnRNb2R1bG87IH0KCiAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGN0aVN0
dWIoSlNHbG9iYWxEYXRhKiwgVGh1bmtHZW5lcmF0b3IpOwoKICAgICAgICBOYXRpdmVFeGVjdXRh
YmxlKiBob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSosIE5hdGl2ZUZ1bmN0aW9uKTsKICAg
ICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSosIE5h
dGl2ZUZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvcik7CgogICAgICAgIHZvaWQgY2xlYXJIb3N0RnVu
Y3Rpb25TdHVicygpOwoKICAgIHByaXZhdGU6CiAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFRodW5r
R2VuZXJhdG9yLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY+IENUSVN0dWJNYXA7CiAgICAgICAgQ1RJ
U3R1Yk1hcCBtX2N0aVN0dWJNYXA7CiAgICAgICAgdHlwZWRlZiBIYXNoTWFwPE5hdGl2ZUZ1bmN0
aW9uLCBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+ID4gSG9zdEZ1bmN0aW9uU3R1Yk1hcDsKICAgICAg
ICBPd25QdHI8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4gbV9ob3N0RnVuY3Rpb25TdHViTWFwOwogICAg
ICAgIFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBtX2V4ZWN1dGFibGVNZW1vcnk7Cgog
ICAgICAgIFRyYW1wb2xpbmVTdHJ1Y3R1cmUgbV90cmFtcG9saW5lU3RydWN0dXJlOwogICAgfTsK
CmV4dGVybiAiQyIgewogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2FkZCh2b2lkKiogYXJncyk7
CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlfb3BfYml0YW5kKHZvaWQqKiBhcmdzKTsKICAgIEVuY29k
ZWRKU1ZhbHVlIGN0aV9vcF9iaXRub3Qodm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUg
Y3RpX29wX2JpdG9yKHZvaWQqKiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9iaXR4
b3Iodm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2NhbGxfTm90SlNGdW5j
dGlvbih2b2lkKiogYXJncyk7CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlfb3BfY2FsbF9ldmFsKHZv
aWQqKiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9jb25zdHJ1Y3RfTm90SlNDb25z
dHJ1Y3Qodm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2NyZWF0ZV90aGlz
KHZvaWQqKiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9jb252ZXJ0X3RoaXModm9p
ZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHModm9p
ZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHNfbm9f
cGFyYW1zKHZvaWQqKiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9kZWxfYnlfaWQo
dm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2RlbF9ieV92YWwodm9pZCoq
IGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2Rpdih2b2lkKiogYXJncyk7CiAgICBF
bmNvZGVkSlNWYWx1ZSBjdGlfb3BfZ2V0X2J5X2lkKHZvaWQqKiBhcmdzKTsKICAgIEVuY29kZWRK
U1ZhbHVlIGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlfZmFpbCh2b2lkKiogYXJncyk7CiAgICBFbmNv
ZGVkSlNWYWx1ZSBjdGlfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zdHViKHZvaWQqKiBhcmdzKTsKICAg
IEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9nZXRfYnlfaWRfZ2VuZXJpYyh2b2lkKiogYXJncyk7CiAg
ICBFbmNvZGVkSlNWYWx1ZSBjdGlfb3BfZ2V0X2J5X2lkX2dldHRlcl9zdHViKHZvaWQqKiBhcmdz
KTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9nZXRfYnlfaWRfbWV0aG9kX2NoZWNrKHZvaWQq
KiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fZmFpbCh2
b2lkKiogYXJncyk7CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xp
c3Qodm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2dldF9ieV9pZF9wcm90
b19saXN0X2Z1bGwodm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2dldF9i
eV9pZF9zZWxmX2ZhaWwodm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2dl
dF9ieV9pZF9zdHJpbmdfZmFpbCh2b2lkKiogYXJncyk7CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlf
b3BfZ2V0X2J5X3ZhbCh2b2lkKiogYXJncyk7CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlfb3BfZ2V0
X2J5X3ZhbF9ieXRlX2FycmF5KHZvaWQqKiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9v
cF9nZXRfYnlfdmFsX3N0cmluZyh2b2lkKiogYXJncyk7CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlf
b3BfaW4odm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2luc3RhbmNlb2Yo
dm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2lzX2Jvb2xlYW4odm9pZCoq
IGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2lzX2Z1bmN0aW9uKHZvaWQqKiBhcmdz
KTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9pc19udW1iZXIodm9pZCoqIGFyZ3MpOwogICAg
RW5jb2RlZEpTVmFsdWUgY3RpX29wX2lzX29iamVjdCh2b2lkKiogYXJncyk7CiAgICBFbmNvZGVk
SlNWYWx1ZSBjdGlfb3BfaXNfc3RyaW5nKHZvaWQqKiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVl
IGN0aV9vcF9pc191bmRlZmluZWQodm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3Rp
X29wX2xlc3Modm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2xlc3NlcSh2
b2lkKiogYXJncyk7CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlfb3BfZ3JlYXRlcih2b2lkKiogYXJn
cyk7CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlfb3BfZ3JlYXRlcmVxKHZvaWQqKiBhcmdzKTsKICAg
IEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9sc2hpZnQodm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpT
VmFsdWUgY3RpX29wX21vZCh2b2lkKiogYXJncyk7CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlfb3Bf
bXVsKHZvaWQqKiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9uZWdhdGUodm9pZCoq
IGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX25vdCh2b2lkKiogYXJncyk7CiAgICBF
bmNvZGVkSlNWYWx1ZSBjdGlfb3BfbnN0cmljdGVxKHZvaWQqKiBhcmdzKTsKICAgIEVuY29kZWRK
U1ZhbHVlIGN0aV9vcF9wb3N0X2RlYyh2b2lkKiogYXJncyk7CiAgICBFbmNvZGVkSlNWYWx1ZSBj
dGlfb3BfcG9zdF9pbmModm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX3By
ZV9kZWModm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX3ByZV9pbmModm9p
ZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX3Jlc29sdmUodm9pZCoqIGFyZ3Mp
OwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX3Jlc29sdmVfYmFzZSh2b2lkKiogYXJncyk7CiAg
ICBFbmNvZGVkSlNWYWx1ZSBjdGlfb3BfcmVzb2x2ZV9iYXNlX3N0cmljdF9wdXQodm9pZCoqIGFy
Z3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHModm9p
ZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX3Jlc29sdmVfZ2xvYmFsKHZvaWQq
KiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWlj
KHZvaWQqKiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9yZXNvbHZlX3NraXAodm9p
ZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX3Jlc29sdmVfd2l0aF9iYXNlKHZv
aWQqKiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9yZXNvbHZlX3dpdGhfdGhpcyh2
b2lkKiogYXJncyk7CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlfb3BfcnNoaWZ0KHZvaWQqKiBhcmdz
KTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF9zdHJjYXQodm9pZCoqIGFyZ3MpOwogICAgRW5j
b2RlZEpTVmFsdWUgY3RpX29wX3N0cmljdGVxKHZvaWQqKiBhcmdzKTsKICAgIEVuY29kZWRKU1Zh
bHVlIGN0aV9vcF9zdWIodm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX3Rv
X2pzbnVtYmVyKHZvaWQqKiBhcmdzKTsKICAgIEVuY29kZWRKU1ZhbHVlIGN0aV9vcF90b19wcmlt
aXRpdmUodm9pZCoqIGFyZ3MpOwogICAgRW5jb2RlZEpTVmFsdWUgY3RpX29wX3R5cGVvZih2b2lk
KiogYXJncyk7CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlfb3BfdXJzaGlmdCh2b2lkKiogYXJncyk7
CiAgICBFbmNvZGVkSlNWYWx1ZSBjdGlfdG9fb2JqZWN0KHZvaWQqKiBhcmdzKTsKICAgIEpTT2Jq
ZWN0KiBjdGlfb3BfbmV3X2FycmF5KHZvaWQqKiBhcmdzKTsKICAgIEpTT2JqZWN0KiBjdGlfb3Bf
bmV3X2FycmF5X2J1ZmZlcih2b2lkKiogYXJncyk7CiAgICBKU09iamVjdCogY3RpX29wX25ld19m
dW5jKHZvaWQqKiBhcmdzKTsKICAgIEpTT2JqZWN0KiBjdGlfb3BfbmV3X2Z1bmNfZXhwKHZvaWQq
KiBhcmdzKTsKICAgIEpTT2JqZWN0KiBjdGlfb3BfbmV3X29iamVjdCh2b2lkKiogYXJncyk7CiAg
ICBKU09iamVjdCogY3RpX29wX25ld19yZWdleHAodm9pZCoqIGFyZ3MpOwogICAgSlNPYmplY3Qq
IGN0aV9vcF9wdXNoX2FjdGl2YXRpb24odm9pZCoqIGFyZ3MpOwogICAgSlNPYmplY3QqIGN0aV9v
cF9wdXNoX25ld19zY29wZSh2b2lkKiogYXJncyk7CiAgICBKU09iamVjdCogY3RpX29wX3B1c2hf
c2NvcGUodm9pZCoqIGFyZ3MpOwogICAgSlNPYmplY3QqIGN0aV9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9yZWFsbG9jKHZvaWQqKiBhcmdzKTsKICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGN0
aV9vcF9nZXRfcG5hbWVzKHZvaWQqKiBhcmdzKTsKICAgIGludCBjdGlfb3BfZXEodm9pZCoqIGFy
Z3MpOwogICAgaW50IGN0aV9vcF9lcV9zdHJpbmdzKHZvaWQqKiBhcmdzKTsKICAgIGludCBjdGlf
b3Bfamxlc3Modm9pZCoqIGFyZ3MpOwogICAgaW50IGN0aV9vcF9qbGVzc2VxKHZvaWQqKiBhcmdz
KTsKICAgIGludCBjdGlfb3BfamdyZWF0ZXIodm9pZCoqIGFyZ3MpOwogICAgaW50IGN0aV9vcF9q
Z3JlYXRlcmVxKHZvaWQqKiBhcmdzKTsKICAgIGludCBjdGlfb3BfanRydWUodm9pZCoqIGFyZ3Mp
OwogICAgaW50IGN0aV9vcF9sb2FkX3ZhcmFyZ3Modm9pZCoqIGFyZ3MpOwogICAgaW50IGN0aV90
aW1lb3V0X2NoZWNrKHZvaWQqKiBhcmdzKTsKICAgIGludCBjdGlfaGFzX3Byb3BlcnR5KHZvaWQq
KiBhcmdzKTsKICAgIHZvaWQgY3RpX29wX2NoZWNrX2hhc19pbnN0YW5jZSh2b2lkKiogYXJncyk7
CiAgICB2b2lkIGN0aV9vcF9kZWJ1Zyh2b2lkKiogYXJncyk7CiAgICB2b2lkIGN0aV9vcF9lbmQo
dm9pZCoqIGFyZ3MpOwogICAgdm9pZCBjdGlfb3Bfam1wX3Njb3Blcyh2b2lkKiogYXJncyk7CiAg
ICB2b2lkIGN0aV9vcF9wb3Bfc2NvcGUodm9pZCoqIGFyZ3MpOwogICAgdm9pZCBjdGlfb3BfcHJv
ZmlsZV9kaWRfY2FsbCh2b2lkKiogYXJncyk7CiAgICB2b2lkIGN0aV9vcF9wcm9maWxlX3dpbGxf
Y2FsbCh2b2lkKiogYXJncyk7CiAgICB2b2lkIGN0aV9vcF9wdXRfYnlfaWQodm9pZCoqIGFyZ3Mp
OwogICAgdm9pZCBjdGlfb3BfcHV0X2J5X2lkX2ZhaWwodm9pZCoqIGFyZ3MpOwogICAgdm9pZCBj
dGlfb3BfcHV0X2J5X2lkX2dlbmVyaWModm9pZCoqIGFyZ3MpOwogICAgdm9pZCBjdGlfb3BfcHV0
X2J5X2lkX2RpcmVjdCh2b2lkKiogYXJncyk7CiAgICB2b2lkIGN0aV9vcF9wdXRfYnlfaWRfZGly
ZWN0X2ZhaWwodm9pZCoqIGFyZ3MpOwogICAgdm9pZCBjdGlfb3BfcHV0X2J5X2lkX2RpcmVjdF9n
ZW5lcmljKHZvaWQqKiBhcmdzKTsKICAgIHZvaWQgY3RpX29wX3B1dF9ieV9pbmRleCh2b2lkKiog
YXJncyk7CiAgICB2b2lkIGN0aV9vcF9wdXRfYnlfdmFsKHZvaWQqKiBhcmdzKTsKICAgIHZvaWQg
Y3RpX29wX3B1dF9ieV92YWxfYnl0ZV9hcnJheSh2b2lkKiogYXJncyk7CiAgICB2b2lkIGN0aV9v
cF9wdXRfZ2V0dGVyKHZvaWQqKiBhcmdzKTsKICAgIHZvaWQgY3RpX29wX3B1dF9zZXR0ZXIodm9p
ZCoqIGFyZ3MpOwogICAgdm9pZCBjdGlfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbih2b2lkKiogYXJn
cyk7CiAgICB2b2lkIGN0aV9vcF90ZWFyX29mZl9hcmd1bWVudHModm9pZCoqIGFyZ3MpOwogICAg
dm9pZCBjdGlfb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKHZvaWQqKiBhcmdzKTsKICAgIHZvaWQg
Y3RpX29wdGltaXplX2Zyb21fbG9vcCh2b2lkKiogYXJncyk7CiAgICB2b2lkIGN0aV9vcHRpbWl6
ZV9mcm9tX3JldCh2b2lkKiogYXJncyk7CiAgICB2b2lkKiBjdGlfb3BfY2FsbF9hcml0eUNoZWNr
KHZvaWQqKiBhcmdzKTsKICAgIHZvaWQqIGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayh2b2lk
KiogYXJncyk7CiAgICB2b2lkKiBjdGlfb3BfY2FsbF9qaXRDb21waWxlKHZvaWQqKiBhcmdzKTsK
ICAgIHZvaWQqIGN0aV9vcF9jb25zdHJ1Y3Rfaml0Q29tcGlsZSh2b2lkKiogYXJncyk7CiAgICB2
b2lkKiBjdGlfb3Bfc3dpdGNoX2NoYXIodm9pZCoqIGFyZ3MpOwogICAgdm9pZCogY3RpX29wX3N3
aXRjaF9pbW0odm9pZCoqIGFyZ3MpOwogICAgdm9pZCogY3RpX29wX3N3aXRjaF9zdHJpbmcodm9p
ZCoqIGFyZ3MpOwogICAgdm9pZCogY3RpX29wX3Rocm93KHZvaWQqKiBhcmdzKTsKICAgIHZvaWQq
IGN0aV9yZWdpc3Rlcl9maWxlX2NoZWNrKHZvaWQqKiBhcmdzKTsKICAgIHZvaWQqIGN0aV92bV9s
YXp5TGlua0NhbGwodm9pZCoqIGFyZ3MpOwogICAgdm9pZCogY3RpX3ZtX2xhenlMaW5rQ29uc3Ry
dWN0KHZvaWQqKiBhcmdzKTsKICAgIHZvaWQqIGN0aV92bV90aHJvdyh2b2lkKiogYXJncyk7Cn0K
Cn0KIyAzOCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgiIDIKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
ZXJpY1N0cmluZ3MuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1lcmljU3RyaW5ncy5oIgojZGVmaW5lIE51bWVyaWNTdHJpbmdzX2ggCgojIDEgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCIgMQojIDMwICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1lcmljU3RyaW5ncy5oIiAy
CgoKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIE51bWVyaWNTdHJpbmdzIHsKICAgIHB1Ymxp
YzoKICAgICAgICBVU3RyaW5nIGFkZChkb3VibGUgZCkKICAgICAgICB7CiAgICAgICAgICAgIENh
Y2hlRW50cnk8ZG91YmxlPiYgZW50cnkgPSBsb29rdXAoZCk7CiAgICAgICAgICAgIGlmIChkID09
IGVudHJ5LmtleSAmJiAhZW50cnkudmFsdWUuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICByZXR1
cm4gZW50cnkudmFsdWU7CiAgICAgICAgICAgIGVudHJ5LmtleSA9IGQ7CiAgICAgICAgICAgIGVu
dHJ5LnZhbHVlID0gVVN0cmluZzo6bnVtYmVyKGQpOwogICAgICAgICAgICByZXR1cm4gZW50cnku
dmFsdWU7CiAgICAgICAgfQoKICAgICAgICBVU3RyaW5nIGFkZChpbnQgaSkKICAgICAgICB7CiAg
ICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSkgPCBjYWNoZVNpemUpCiAgICAg
ICAgICAgICAgICByZXR1cm4gbG9va3VwU21hbGxTdHJpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGkpKTsKICAgICAgICAgICAgQ2FjaGVFbnRyeTxpbnQ+JiBlbnRyeSA9IGxvb2t1cChpKTsKICAg
ICAgICAgICAgaWYgKGkgPT0gZW50cnkua2V5ICYmICFlbnRyeS52YWx1ZS5pc051bGwoKSkKICAg
ICAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsKICAgICAgICAgICAgZW50cnkua2V5ID0g
aTsKICAgICAgICAgICAgZW50cnkudmFsdWUgPSBVU3RyaW5nOjpudW1iZXIoaSk7CiAgICAgICAg
ICAgIHJldHVybiBlbnRyeS52YWx1ZTsKICAgICAgICB9CgogICAgICAgIFVTdHJpbmcgYWRkKHVu
c2lnbmVkIGkpCiAgICAgICAgewogICAgICAgICAgICBpZiAoaSA8IGNhY2hlU2l6ZSkKICAgICAg
ICAgICAgICAgIHJldHVybiBsb29rdXBTbWFsbFN0cmluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aSkpOwogICAgICAgICAgICBDYWNoZUVudHJ5PHVuc2lnbmVkPiYgZW50cnkgPSBsb29rdXAoaSk7
CiAgICAgICAgICAgIGlmIChpID09IGVudHJ5LmtleSAmJiAhZW50cnkudmFsdWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgICAgIGVudHJ5Lmtl
eSA9IGk7CiAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gVVN0cmluZzo6bnVtYmVyKGkpOwogICAg
ICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgfQogICAgcHJpdmF0ZToKICAgICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNhY2hlU2l6ZSA9IDY0OwoKICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgICAgIHN0cnVjdCBDYWNoZUVudHJ5IHsKICAgICAgICAgICAgVCBrZXk7
CiAgICAgICAgICAgIFVTdHJpbmcgdmFsdWU7CiAgICAgICAgfTsKCiAgICAgICAgQ2FjaGVFbnRy
eTxkb3VibGU+JiBsb29rdXAoZG91YmxlIGQpIHsgcmV0dXJuIGRvdWJsZUNhY2hlW1dURjo6Rmxv
YXRIYXNoPGRvdWJsZT46Omhhc2goZCkgJiAoY2FjaGVTaXplIC0gMSldOyB9CiAgICAgICAgQ2Fj
aGVFbnRyeTxpbnQ+JiBsb29rdXAoaW50IGkpIHsgcmV0dXJuIGludENhY2hlW1dURjo6SW50SGFz
aDxpbnQ+OjpoYXNoKGkpICYgKGNhY2hlU2l6ZSAtIDEpXTsgfQogICAgICAgIENhY2hlRW50cnk8
dW5zaWduZWQ+JiBsb29rdXAodW5zaWduZWQgaSkgeyByZXR1cm4gdW5zaWduZWRDYWNoZVtXVEY6
OkludEhhc2g8dW5zaWduZWQ+OjpoYXNoKGkpICYgKGNhY2hlU2l6ZSAtIDEpXTsgfQogICAgICAg
IGNvbnN0IFVTdHJpbmcmIGxvb2t1cFNtYWxsU3RyaW5nKHVuc2lnbmVkIGkpCiAgICAgICAgewog
ICAgICAgICAgICBkbyBpZiAoIShpIDwgY2FjaGVTaXplKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25G
YWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1lcmljU3Ry
aW5ncy5oIiwgODQsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpIDwgY2FjaGVTaXplIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAg
ICAgaWYgKHNtYWxsSW50Q2FjaGVbaV0uaXNOdWxsKCkpCiAgICAgICAgICAgICAgICBzbWFsbElu
dENhY2hlW2ldID0gVVN0cmluZzo6bnVtYmVyKGkpOwogICAgICAgICAgICByZXR1cm4gc21hbGxJ
bnRDYWNoZVtpXTsKICAgICAgICB9CgogICAgICAgIEZpeGVkQXJyYXk8Q2FjaGVFbnRyeTxkb3Vi
bGU+LCBjYWNoZVNpemU+IGRvdWJsZUNhY2hlOwogICAgICAgIEZpeGVkQXJyYXk8Q2FjaGVFbnRy
eTxpbnQ+LCBjYWNoZVNpemU+IGludENhY2hlOwogICAgICAgIEZpeGVkQXJyYXk8Q2FjaGVFbnRy
eTx1bnNpZ25lZD4sIGNhY2hlU2l6ZT4gdW5zaWduZWRDYWNoZTsKICAgICAgICBGaXhlZEFycmF5
PFVTdHJpbmcsIGNhY2hlU2l6ZT4gc21hbGxJbnRDYWNoZTsKICAgIH07Cgp9CiMgNDAgIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIiAyCiMgMSAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgiIDEK
IyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdz
LmgiCiNkZWZpbmUgU21hbGxTdHJpbmdzX2ggCgoKCgoKbmFtZXNwYWNlIEpTQyB7CgogICAgY2xh
c3MgSGVhcFJvb3RWaXNpdG9yOwogICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgY2xhc3MgSlNT
dHJpbmc7CiAgICBjbGFzcyBTbWFsbFN0cmluZ3NTdG9yYWdlOwogICAgY2xhc3MgU2xvdFZpc2l0
b3I7CgogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFNpbmdsZUNoYXJhY3RlclN0cmluZyA9
IDB4RkY7CgogICAgY2xhc3MgU21hbGxTdHJpbmdzIHsKICAgICAgICBwcml2YXRlOiBTbWFsbFN0
cmluZ3MoY29uc3QgU21hbGxTdHJpbmdzJik7IFNtYWxsU3RyaW5ncyYgb3BlcmF0b3I9KGNvbnN0
IFNtYWxsU3RyaW5ncyYpOwogICAgcHVibGljOgogICAgICAgIFNtYWxsU3RyaW5ncygpOwogICAg
ICAgIH5TbWFsbFN0cmluZ3MoKTsKCiAgICAgICAgSlNTdHJpbmcqIGVtcHR5U3RyaW5nKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICAgICB7CiAgICAgICAgICAgIGlmICghbV9lbXB0eVN0
cmluZykKICAgICAgICAgICAgICAgIGNyZWF0ZUVtcHR5U3RyaW5nKGdsb2JhbERhdGEpOwogICAg
ICAgICAgICByZXR1cm4gbV9lbXB0eVN0cmluZzsKICAgICAgICB9CgogICAgICAgIEpTU3RyaW5n
KiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB1bnNpZ25l
ZCBjaGFyIGNoYXJhY3RlcikKICAgICAgICB7CiAgICAgICAgICAgIGlmICghbV9zaW5nbGVDaGFy
YWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl0pCiAgICAgICAgICAgICAgICBjcmVhdGVTaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgY2hhcmFjdGVyKTsKICAgICAgICAgICAgcmV0dXJuIG1f
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tjaGFyYWN0ZXJdOwogICAgICAgIH0KCiAgICAgICAgU3Ry
aW5nSW1wbCogc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVy
KTsKCiAgICAgICAgdm9pZCBmaW5hbGl6ZVNtYWxsU3RyaW5ncygpOwogICAgICAgIHZvaWQgY2xl
YXIoKTsKCiAgICAgICAgdW5zaWduZWQgY291bnQoKSBjb25zdDsKCiAgICAgICAgSlNTdHJpbmcq
KiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkgeyByZXR1cm4gJm1fc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nc1swXTsgfQoKICAgIHByaXZhdGU6CiAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNp
bmdsZUNoYXJhY3RlclN0cmluZ0NvdW50ID0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nICsgMTsK
CiAgICAgICAgdm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICAgICB2
b2lkIGNyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCBj
aGFyKTsKCiAgICAgICAgSlNTdHJpbmcqIG1fZW1wdHlTdHJpbmc7CiAgICAgICAgSlNTdHJpbmcq
IG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tzaW5nbGVDaGFyYWN0ZXJTdHJpbmdDb3VudF07CiAg
ICAgICAgT3duUHRyPFNtYWxsU3RyaW5nc1N0b3JhZ2U+IG1fc3RvcmFnZTsKICAgIH07Cgp9CiMg
NDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
IiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVybWluYXRv
ci5oIiAxCiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlcm1p
bmF0b3IuaCIKI2RlZmluZSBUZXJtaW5hdG9yX2ggCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIFRl
cm1pbmF0b3IgewpwdWJsaWM6CiAgICBUZXJtaW5hdG9yKCkgOiBtX3Nob3VsZFRlcm1pbmF0ZShm
YWxzZSkgeyB9CgogICAgdm9pZCB0ZXJtaW5hdGVTb29uKCkgeyBtX3Nob3VsZFRlcm1pbmF0ZSA9
IHRydWU7IH0KICAgIGJvb2wgc2hvdWxkVGVybWluYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGRUZXJtaW5hdGU7IH0KCnByaXZhdGU6CiAgICBib29sIG1fc2hvdWxkVGVybWluYXRlOwp9OwoK
fQojIDQyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVv
dXRDaGVja2VyLmgiIDEKIyAzMCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGltZW91dENoZWNrZXIuaCIKI2RlZmluZSBUaW1lb3V0Q2hlY2tlcl9oIAoKCgpuYW1lc3Bh
Y2UgSlNDIHsKCiAgICBjbGFzcyBFeGVjU3RhdGU7CgogICAgY2xhc3MgVGltZW91dENoZWNrZXIg
ewogICAgcHVibGljOgogICAgICAgIFRpbWVvdXRDaGVja2VyKCk7CgogICAgICAgIHZvaWQgc2V0
VGltZW91dEludGVydmFsKHVuc2lnbmVkIHRpbWVvdXRJbnRlcnZhbCkgeyBtX3RpbWVvdXRJbnRl
cnZhbCA9IHRpbWVvdXRJbnRlcnZhbDsgfQogICAgICAgIHVuc2lnbmVkIHRpbWVvdXRJbnRlcnZh
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZW91dEludGVydmFsOyB9CgogICAgICAgIHVuc2lnbmVk
IHRpY2tzVW50aWxOZXh0Q2hlY2soKSB7IHJldHVybiBtX3RpY2tzVW50aWxOZXh0Q2hlY2s7IH0K
CiAgICAgICAgdm9pZCBzdGFydCgpCiAgICAgICAgewogICAgICAgICAgICBpZiAoIW1fc3RhcnRD
b3VudCkKICAgICAgICAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgICAgICsrbV9zdGFydENvdW50
OwogICAgICAgIH0KCiAgICAgICAgdm9pZCBzdG9wKCkKICAgICAgICB7CiAgICAgICAgICAgIGRv
IGlmICghKG1fc3RhcnRDb3VudCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaCIsIDU2LCBf
X1BSRVRUWV9GVU5DVElPTl9fLCAibV9zdGFydENvdW50Iik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgLS1tX3N0YXJ0Q291
bnQ7CiAgICAgICAgfQoKICAgICAgICB2b2lkIHJlc2V0KCk7CgogICAgICAgIGJvb2wgZGlkVGlt
ZU91dChFeGVjU3RhdGUqKTsKCiAgICBwcml2YXRlOgogICAgICAgIHVuc2lnbmVkIG1fdGltZW91
dEludGVydmFsOwogICAgICAgIHVuc2lnbmVkIG1fdGltZUF0TGFzdENoZWNrOwogICAgICAgIHVu
c2lnbmVkIG1fdGltZUV4ZWN1dGluZzsKICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q291bnQ7CiAg
ICAgICAgdW5zaWduZWQgbV90aWNrc1VudGlsTmV4dENoZWNrOwogICAgfTsKCn0KIyA0MyAiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgiIDIKIyAx
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmgiIDEK
IyA1MSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1JhbmRvbS5o
IgojZGVmaW5lIFdlYWtSYW5kb21faCAKCgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgV2Vha1Jh
bmRvbSB7CnB1YmxpYzoKICAgIFdlYWtSYW5kb20odW5zaWduZWQgc2VlZCkKICAgICAgICA6IG1f
bG93KHNlZWQgXiAweDQ5NjE2RTQyKQogICAgICAgICwgbV9oaWdoKHNlZWQpCiAgICB7CiAgICB9
CgogICAgZG91YmxlIGdldCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGFkdmFuY2UoKSAvICgoMjE0
NzQ4MzY0NyAqIDJVICsgMVUpICsgMS4wKTsKICAgIH0KCiAgICB1bnNpZ25lZCBnZXRVaW50MzIo
KQogICAgewogICAgICAgIHJldHVybiBhZHZhbmNlKCk7CiAgICB9Cgpwcml2YXRlOgogICAgdW5z
aWduZWQgYWR2YW5jZSgpCiAgICB7CiAgICAgICAgbV9oaWdoID0gKG1faGlnaCA8PCAxNikgKyAo
bV9oaWdoID4+IDE2KTsKICAgICAgICBtX2hpZ2ggKz0gbV9sb3c7CiAgICAgICAgbV9sb3cgKz0g
bV9oaWdoOwogICAgICAgIHJldHVybiBtX2hpZ2g7CiAgICB9CgogICAgdW5zaWduZWQgbV9sb3c7
CiAgICB1bnNpZ25lZCBtX2hpZ2g7Cn07Cgp9CiMgNDQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oIiAxCiMgMjcgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaCIKI2RlZmlu
ZSBCdW1wUG9pbnRlckFsbG9jYXRvcl9oIAoKCgpuYW1lc3BhY2UgV1RGIHsKCiNkZWZpbmUgTUlO
SU1VTV9CVU1QX1BPT0xfU0laRSAweDEwMDAKCmNsYXNzIEJ1bXBQb2ludGVyUG9vbCB7CnB1Ymxp
YzoKIyA0NSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9pbnRlckFs
bG9jYXRvci5oIgogICAgQnVtcFBvaW50ZXJQb29sKiBlbnN1cmVDYXBhY2l0eShzaXplX3Qgc2l6
ZSkKICAgIHsKICAgICAgICB2b2lkKiBhbGxvY2F0aW9uRW5kID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KG1fY3VycmVudCkgKyBzaXplOwogICAgICAgIGRvIGlmICghKGFsbG9jYXRpb25FbmQgPiBtX2N1
cnJlbnQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaCIsIDQ4LCBfX1BSRVRUWV9GVU5D
VElPTl9fLCAiYWxsb2NhdGlvbkVuZCA+IG1fY3VycmVudCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0
cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTAp
KCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgaWYgKGFsbG9jYXRpb25F
bmQgPD0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpKQogICAgICAgICAgICByZXR1cm4gdGhpczsK
ICAgICAgICByZXR1cm4gZW5zdXJlQ2FwYWNpdHlDcm9zc1Bvb2wodGhpcywgc2l6ZSk7CiAgICB9
CgoKCiAgICB2b2lkKiBhbGxvYyhzaXplX3Qgc2l6ZSkKICAgIHsKICAgICAgICB2b2lkKiBjdXJy
ZW50ID0gbV9jdXJyZW50OwogICAgICAgIHZvaWQqIGFsbG9jYXRpb25FbmQgPSBzdGF0aWNfY2Fz
dDxjaGFyKj4oY3VycmVudCkgKyBzaXplOwogICAgICAgIGRvIGlmICghKGFsbG9jYXRpb25FbmQg
PiBjdXJyZW50KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmgiLCA2MCwgX19QUkVUVFlf
RlVOQ1RJT05fXywgImFsbG9jYXRpb25FbmQgPiBjdXJyZW50Iik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAoIShhbGxv
Y2F0aW9uRW5kIDw9IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzKSkpIHsgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9pbnRl
ckFsbG9jYXRvci5oIiwgNjEsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJhbGxvY2F0aW9uRW5kIDw9
IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAq
KGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hp
bGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgbV9jdXJyZW50ID0gYWxsb2NhdGlvbkVu
ZDsKICAgICAgICByZXR1cm4gY3VycmVudDsKICAgIH0KIyA3OSAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oIgogICAgQnVtcFBvaW50ZXJQ
b29sKiBkZWFsbG9jKHZvaWQqIHBvc2l0aW9uKQogICAgewogICAgICAgIGlmICgocG9zaXRpb24g
Pj0gbV9zdGFydCkgJiYgKHBvc2l0aW9uIDw9IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzKSkpIHsK
ICAgICAgICAgICAgZG8gaWYgKCEocG9zaXRpb24gPD0gbV9jdXJyZW50KSkgeyBXVEZSZXBvcnRB
c3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J1bXBQ
b2ludGVyQWxsb2NhdG9yLmgiLCA4MiwgX19QUkVUVFlfRlVOQ1RJT05fXywgInBvc2l0aW9uIDw9
IG1fY3VycmVudCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRy
X3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgICAgIG1fY3VycmVudCA9IHBvc2l0aW9uOwogICAgICAgICAgICBy
ZXR1cm4gdGhpczsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlYWxsb2NDcm9zc1Bvb2wodGhp
cywgcG9zaXRpb24pOwogICAgfQoKcHJpdmF0ZToKCiAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90IHNpemUsIGNvbnN0IFBhZ2VBbGxvY2F0aW9uJiBhbGxvY2F0aW9uKQogICAgewogICAgICAg
IGRvIGlmICghKHNpemUgPCBhbGxvY2F0aW9uLnNpemUoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9pbnRlckFs
bG9jYXRvci5oIiwgOTMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzaXplIDwgYWxsb2NhdGlvbi5z
aXplKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOwogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZWludGVycHJldF9j
YXN0PGludHB0cl90PihhbGxvY2F0aW9uLmJhc2UoKSkgKyBhbGxvY2F0aW9uLnNpemUoKSkgLSBz
aXplOwogICAgfQoKICAgIEJ1bXBQb2ludGVyUG9vbChjb25zdCBQYWdlQWxsb2NhdGlvbiYgYWxs
b2NhdGlvbikKICAgICAgICA6IG1fY3VycmVudChhbGxvY2F0aW9uLmJhc2UoKSkKICAgICAgICAs
IG1fc3RhcnQoYWxsb2NhdGlvbi5iYXNlKCkpCiAgICAgICAgLCBtX25leHQoMCkKICAgICAgICAs
IG1fcHJldmlvdXMoMCkKICAgICAgICAsIG1fYWxsb2NhdGlvbihhbGxvY2F0aW9uKQogICAgewog
ICAgfQoKICAgIHN0YXRpYyBCdW1wUG9pbnRlclBvb2wqIGNyZWF0ZShzaXplX3QgbWluaW11bUNh
cGFjaXR5ID0gMCkKICAgIHsKCiAgICAgICAgbWluaW11bUNhcGFjaXR5ICs9IHNpemVvZihCdW1w
UG9pbnRlclBvb2wpOwogICAgICAgIGlmIChtaW5pbXVtQ2FwYWNpdHkgPCBzaXplb2YoQnVtcFBv
aW50ZXJQb29sKSkKICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIHNpemVfdCBwb29sU2l6
ZSA9IDB4MTAwMDsKICAgICAgICB3aGlsZSAocG9vbFNpemUgPCBtaW5pbXVtQ2FwYWNpdHkpIHsK
ICAgICAgICAgICAgcG9vbFNpemUgPDw9IDE7CgogICAgICAgICAgICBkbyBpZiAoISghKDB4MTAw
MCAmICgweDEwMDAgLSAxKSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaCIsIDExNywg
X19QUkVUVFlfRlVOQ1RJT05fXywgIiEoTUlOSU1VTV9CVU1QX1BPT0xfU0laRSAmIChNSU5JTVVN
X0JVTVBfUE9PTF9TSVpFIC0gMSkpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50
ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgaWYgKCFwb29sU2l6ZSkKICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgUGFnZUFsbG9jYXRpb24gYWxsb2Nh
dGlvbiA9IFBhZ2VBbGxvY2F0aW9uOjphbGxvY2F0ZShwb29sU2l6ZSk7CiAgICAgICAgaWYgKCEh
YWxsb2NhdGlvbikKICAgICAgICAgICAgcmV0dXJuIG5ldyhhbGxvY2F0aW9uKSBCdW1wUG9pbnRl
clBvb2woYWxsb2NhdGlvbik7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgdm9pZCBzaHJp
bmsoKQogICAgewogICAgICAgIGRvIGlmICghKCFtX3ByZXZpb3VzKSkgeyBXVEZSZXBvcnRBc3Nl
cnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J1bXBQb2lu
dGVyQWxsb2NhdG9yLmgiLCAxMzAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbV9wcmV2aW91cyIp
OyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVl
ZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgbV9jdXJyZW50ID0gbV9zdGFydDsKICAgICAgICB3aGlsZSAobV9uZXh0KSB7CiAgICAg
ICAgICAgIEJ1bXBQb2ludGVyUG9vbCogbmV4dE5leHQgPSBtX25leHQtPm1fbmV4dDsKICAgICAg
ICAgICAgbV9uZXh0LT5kZXN0cm95KCk7CiAgICAgICAgICAgIG1fbmV4dCA9IG5leHROZXh0Owog
ICAgICAgIH0KICAgIH0KCiAgICB2b2lkIGRlc3Ryb3koKQogICAgewogICAgICAgIG1fYWxsb2Nh
dGlvbi5kZWFsbG9jYXRlKCk7CiAgICB9CgogICAgc3RhdGljIEJ1bXBQb2ludGVyUG9vbCogZW5z
dXJlQ2FwYWNpdHlDcm9zc1Bvb2woQnVtcFBvaW50ZXJQb29sKiBwcmV2aW91c1Bvb2wsIHNpemVf
dCBzaXplKQogICAgewoKICAgICAgICBkbyBpZiAoIShwcmV2aW91c1Bvb2wpKSB7IFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnVt
cFBvaW50ZXJBbGxvY2F0b3IuaCIsIDE0NywgX19QUkVUVFlfRlVOQ1RJT05fXywgInByZXZpb3Vz
UG9vbCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhi
YmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgZG8gaWYgKCEoKHN0YXRpY19jYXN0PGNoYXIqPihwcmV2aW91c1Bvb2wtPm1f
Y3VycmVudCkgKyBzaXplKSA+IHByZXZpb3VzUG9vbC0+bV9jdXJyZW50KSkgeyBXVEZSZXBvcnRB
c3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J1bXBQ
b2ludGVyQWxsb2NhdG9yLmgiLCAxNDgsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIoc3RhdGljX2Nh
c3Q8Y2hhcio+KHByZXZpb3VzUG9vbC0+bV9jdXJyZW50KSArIHNpemUpID4gcHJldmlvdXNQb29s
LT5tX2N1cnJlbnQiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKChzdGF0aWNfY2FzdDxjaGFyKj4ocHJldmlvdXNQ
b29sLT5tX2N1cnJlbnQpICsgc2l6ZSkgPiBzdGF0aWNfY2FzdDx2b2lkKj4ocHJldmlvdXNQb29s
KSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oIiwgMTQ5LCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAiKHN0YXRpY19jYXN0PGNoYXIqPihwcmV2aW91c1Bvb2wtPm1fY3VycmVudCkgKyBzaXpl
KSA+IHN0YXRpY19jYXN0PHZvaWQqPihwcmV2aW91c1Bvb2wpIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBCdW1wUG9pbnRlclBv
b2wqIHBvb2wgPSBwcmV2aW91c1Bvb2wtPm1fbmV4dDsKCiAgICAgICAgd2hpbGUgKHRydWUpIHsK
ICAgICAgICAgICAgaWYgKCFwb29sKSB7CgogICAgICAgICAgICAgICAgcG9vbCA9IEJ1bXBQb2lu
dGVyUG9vbDo6Y3JlYXRlKHNpemUpOwogICAgICAgICAgICAgICAgcHJldmlvdXNQb29sLT5tX25l
eHQgPSBwb29sOwogICAgICAgICAgICAgICAgcG9vbC0+bV9wcmV2aW91cyA9IHByZXZpb3VzUG9v
bDsKICAgICAgICAgICAgICAgIHJldHVybiBwb29sOwogICAgICAgICAgICB9CgoKICAgICAgICAg
ICAgdm9pZCogY3VycmVudCA9IHBvb2wtPm1fY3VycmVudDsKICAgICAgICAgICAgdm9pZCogYWxs
b2NhdGlvbkVuZCA9IHN0YXRpY19jYXN0PGNoYXIqPihjdXJyZW50KSArIHNpemU7CiAgICAgICAg
ICAgIGRvIGlmICghKGFsbG9jYXRpb25FbmQgPiBjdXJyZW50KSkgeyBXVEZSZXBvcnRBc3NlcnRp
b25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J1bXBQb2ludGVy
QWxsb2NhdG9yLmgiLCAxNjQsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJhbGxvY2F0aW9uRW5kID4g
Y3VycmVudCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3Qp
MHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGls
ZSAoMCk7CiAgICAgICAgICAgIGlmIChhbGxvY2F0aW9uRW5kIDw9IHN0YXRpY19jYXN0PHZvaWQq
Pihwb29sKSkKICAgICAgICAgICAgICAgIHJldHVybiBwb29sOwogICAgICAgIH0KICAgIH0KCiAg
ICBzdGF0aWMgQnVtcFBvaW50ZXJQb29sKiBkZWFsbG9jQ3Jvc3NQb29sKEJ1bXBQb2ludGVyUG9v
bCogcG9vbCwgdm9pZCogcG9zaXRpb24pCiAgICB7CgogICAgICAgIGRvIGlmICghKChwb3NpdGlv
biA8IHBvb2wtPm1fc3RhcnQpIHx8IChwb3NpdGlvbiA+IHN0YXRpY19jYXN0PHZvaWQqPihwb29s
KSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaCIsIDE3MywgX19QUkVUVFlfRlVOQ1RJ
T05fXywgIihwb3NpdGlvbiA8IHBvb2wtPm1fc3RhcnQpIHx8IChwb3NpdGlvbiA+IHN0YXRpY19j
YXN0PHZvaWQqPihwb29sKSkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKiko
dWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxz
ZSk7IH0gd2hpbGUgKDApOwoKICAgICAgICB3aGlsZSAodHJ1ZSkgewoKICAgICAgICAgICAgcG9v
bC0+bV9jdXJyZW50ID0gcG9vbC0+bV9zdGFydDsKICAgICAgICAgICAgcG9vbCA9IHBvb2wtPm1f
cHJldmlvdXM7CgoKICAgICAgICAgICAgaWYgKCFwb29sKQogICAgICAgICAgICAgICAgZG8geyBX
VEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAo
KHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7CgogICAgICAgICAgICBpZiAoKHBvc2l0
aW9uID49IHBvb2wtPm1fc3RhcnQpICYmIChwb3NpdGlvbiA8PSBzdGF0aWNfY2FzdDx2b2lkKj4o
cG9vbCkpKSB7CiAgICAgICAgICAgICAgICBkbyBpZiAoIShwb3NpdGlvbiA8PSBwb29sLT5tX2N1
cnJlbnQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaCIsIDE4NSwgX19QUkVUVFlfRlVO
Q1RJT05fXywgInBvc2l0aW9uIDw9IHBvb2wtPm1fY3VycmVudCIpOyBkbyB7IFdURlJlcG9ydEJh
Y2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgp
KTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBwb29s
LT5tX2N1cnJlbnQgPSBwb3NpdGlvbjsKICAgICAgICAgICAgICAgIHJldHVybiBwb29sOwogICAg
ICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHZvaWQqIG1fY3VycmVudDsKICAgIHZvaWQq
IG1fc3RhcnQ7CiAgICBCdW1wUG9pbnRlclBvb2wqIG1fbmV4dDsKICAgIEJ1bXBQb2ludGVyUG9v
bCogbV9wcmV2aW91czsKICAgIFBhZ2VBbGxvY2F0aW9uIG1fYWxsb2NhdGlvbjsKCiAgICBmcmll
bmQgY2xhc3MgQnVtcFBvaW50ZXJBbGxvY2F0b3I7Cn07CiMgMjE2ICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmgiCmNsYXNzIEJ1bXBQb2lu
dGVyQWxsb2NhdG9yIHsKcHVibGljOgogICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IoKQogICAgICAg
IDogbV9oZWFkKDApCiAgICB7CiAgICB9CgogICAgfkJ1bXBQb2ludGVyQWxsb2NhdG9yKCkKICAg
IHsKICAgICAgICBpZiAobV9oZWFkKQogICAgICAgICAgICBtX2hlYWQtPmRlc3Ryb3koKTsKICAg
IH0KCiAgICBCdW1wUG9pbnRlclBvb2wqIHN0YXJ0QWxsb2NhdG9yKCkKICAgIHsKICAgICAgICBp
ZiAoIW1faGVhZCkKICAgICAgICAgICAgbV9oZWFkID0gQnVtcFBvaW50ZXJQb29sOjpjcmVhdGUo
KTsKICAgICAgICByZXR1cm4gbV9oZWFkOwogICAgfQoKICAgIHZvaWQgc3RvcEFsbG9jYXRvcigp
CiAgICB7CiAgICAgICAgaWYgKG1faGVhZCkKICAgICAgICAgICAgbV9oZWFkLT5zaHJpbmsoKTsK
ICAgIH0KCnByaXZhdGU6CiAgICBCdW1wUG9pbnRlclBvb2wqIG1faGVhZDsKfTsKCn0KCnVzaW5n
IFdURjo6QnVtcFBvaW50ZXJBbGxvY2F0b3I7CiMgNDUgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oIiAxCiMgNDIgIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaCIKI2RlZmluZSBXVEZfVGhy
ZWFkU3BlY2lmaWNfaCAKCgoKCgoKIyAxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL1FUaHJl
YWRTdG9yYWdlIiAxCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xdGhyZWFkc3RvcmFn
ZS5oIiAxCiMgNDMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXRocmVhZHN0b3JhZ2UuaCIK
I2RlZmluZSBRVEhSRUFEU1RPUkFHRV9IIAoKCgoKCgoKCgp0eXBlZGVmIFF0VmFsaWRMaWNlbnNl
Rm9yQ29yZU1vZHVsZSBRdENvcmVNb2R1bGU7CgpjbGFzcyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSBRVGhyZWFkU3RvcmFnZURhdGEKewpwdWJsaWM6CiAgICBleHBsaWNp
dCBRVGhyZWFkU3RvcmFnZURhdGEodm9pZCAoKmZ1bmMpKHZvaWQgKikpOwogICAgflFUaHJlYWRT
dG9yYWdlRGF0YSgpOwoKICAgIHZvaWQqKiBnZXQoKSBjb25zdDsKICAgIHZvaWQqKiBzZXQodm9p
ZCogcCk7CgogICAgc3RhdGljIHZvaWQgZmluaXNoKHZvaWQqKik7CiAgICBpbnQgaWQ7Cn07CgoK
CgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZQpUIComcVRocmVhZFN0b3JhZ2VfbG9jYWxE
YXRhKFFUaHJlYWRTdG9yYWdlRGF0YSAmZCwgVCAqKikKewogICAgdm9pZCAqKnYgPSBkLmdldCgp
OwogICAgaWYgKCF2KSB2ID0gZC5zZXQoMCk7CiAgICByZXR1cm4gKihyZWludGVycHJldF9jYXN0
PFQqKj4odikpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lClQgKnFUaHJlYWRTdG9y
YWdlX2xvY2FsRGF0YV9jb25zdChjb25zdCBRVGhyZWFkU3RvcmFnZURhdGEgJmQsIFQgKiopCnsK
ICAgIHZvaWQgKip2ID0gZC5nZXQoKTsKICAgIHJldHVybiB2ID8gKihyZWludGVycHJldF9jYXN0
PFQqKj4odikpIDogMDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZQp2b2lkIHFUaHJl
YWRTdG9yYWdlX3NldExvY2FsRGF0YShRVGhyZWFkU3RvcmFnZURhdGEgJmQsIFQgKip0KQp7ICh2
b2lkKSBkLnNldCgqdCk7IH0KCgoKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUKVCAmcVRo
cmVhZFN0b3JhZ2VfbG9jYWxEYXRhKFFUaHJlYWRTdG9yYWdlRGF0YSAmZCwgVCAqKQp7CiAgICB2
b2lkICoqdiA9IGQuZ2V0KCk7CiAgICBpZiAoIXYpIHYgPSBkLnNldChuZXcgVCgpKTsKICAgIHJl
dHVybiAqKHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KCp2KSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBU
PgppbmxpbmUKVCBxVGhyZWFkU3RvcmFnZV9sb2NhbERhdGFfY29uc3QoY29uc3QgUVRocmVhZFN0
b3JhZ2VEYXRhICZkLCBUICopCnsKICAgIHZvaWQgKip2ID0gZC5nZXQoKTsKICAgIHJldHVybiB2
ID8gKihyZWludGVycHJldF9jYXN0PFQqPigqdikpIDogVCgpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KaW5saW5lCnZvaWQgcVRocmVhZFN0b3JhZ2Vfc2V0TG9jYWxEYXRhKFFUaHJlYWRTdG9y
YWdlRGF0YSAmZCwgVCAqdCkKeyAodm9pZCkgZC5zZXQobmV3IFQoKnQpKTsgfQoKCgoKCgp0ZW1w
bGF0ZSA8Y2xhc3MgVD4KY2xhc3MgUVRocmVhZFN0b3JhZ2UKewpwcml2YXRlOgogICAgUVRocmVh
ZFN0b3JhZ2VEYXRhIGQ7CgogICAgUVRocmVhZFN0b3JhZ2UoY29uc3QgUVRocmVhZFN0b3JhZ2Ug
Jik7IFFUaHJlYWRTdG9yYWdlICZvcGVyYXRvcj0oY29uc3QgUVRocmVhZFN0b3JhZ2UgJik7Cgog
ICAgc3RhdGljIGlubGluZSB2b2lkIGRlbGV0ZURhdGEodm9pZCAqeCkKICAgIHsgZGVsZXRlIHN0
YXRpY19jYXN0PFQ+KHgpOyB9CgpwdWJsaWM6CiAgICBpbmxpbmUgUVRocmVhZFN0b3JhZ2UoKSA6
IGQoZGVsZXRlRGF0YSkgeyB9CiAgICBpbmxpbmUgflFUaHJlYWRTdG9yYWdlKCkgeyB9CgogICAg
aW5saW5lIGJvb2wgaGFzTG9jYWxEYXRhKCkgY29uc3QKICAgIHsgcmV0dXJuIGQuZ2V0KCkgIT0g
MDsgfQoKICAgIGlubGluZSBUJiBsb2NhbERhdGEoKQogICAgeyByZXR1cm4gcVRocmVhZFN0b3Jh
Z2VfbG9jYWxEYXRhKGQsIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KDApKTsgfQogICAgaW5saW5lIFQg
bG9jYWxEYXRhKCkgY29uc3QKICAgIHsgcmV0dXJuIHFUaHJlYWRTdG9yYWdlX2xvY2FsRGF0YV9j
b25zdChkLCByZWludGVycHJldF9jYXN0PFQqPigwKSk7IH0KCiAgICBpbmxpbmUgdm9pZCBzZXRM
b2NhbERhdGEoVCB0KQogICAgeyBxVGhyZWFkU3RvcmFnZV9zZXRMb2NhbERhdGEoZCwgJnQpOyB9
Cn07CgoKCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvUVRocmVhZFN0b3JhZ2UiIDIK
IyA1MCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5o
IiAyCgoKCgoKCm5hbWVzcGFjZSBXVEYgewoKCgoKCgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xh
c3MgVGhyZWFkU3BlY2lmaWMgewogICAgcHJpdmF0ZTogVGhyZWFkU3BlY2lmaWMoY29uc3QgVGhy
ZWFkU3BlY2lmaWMmKTsgVGhyZWFkU3BlY2lmaWMmIG9wZXJhdG9yPShjb25zdCBUaHJlYWRTcGVj
aWZpYyYpOwpwdWJsaWM6CiAgICBUaHJlYWRTcGVjaWZpYygpOwogICAgVCogb3BlcmF0b3ItPigp
OwogICAgb3BlcmF0b3IgVCooKTsKICAgIFQmIG9wZXJhdG9yKigpOwoKcHJpdmF0ZToKIyA4MSAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oIgogICAg
flRocmVhZFNwZWNpZmljKCk7CgogICAgVCogZ2V0KCk7CiAgICB2b2lkIHNldChUKik7CiAgICB2
b2lkIHN0YXRpYyBkZXN0cm95KHZvaWQqIHB0cik7CgoKICAgIHN0cnVjdCBEYXRhIHsKICAgICAg
ICBwcml2YXRlOiBEYXRhKGNvbnN0IERhdGEmKTsgRGF0YSYgb3BlcmF0b3I9KGNvbnN0IERhdGEm
KTsKICAgIHB1YmxpYzoKICAgICAgICBEYXRhKFQqIHZhbHVlLCBUaHJlYWRTcGVjaWZpYzxUPiog
b3duZXIpIDogdmFsdWUodmFsdWUpLCBvd25lcihvd25lcikge30KCiAgICAgICAgfkRhdGEoKSB7
IG93bmVyLT5kZXN0cm95KHRoaXMpOyB9CgoKICAgICAgICBUKiB2YWx1ZTsKICAgICAgICBUaHJl
YWRTcGVjaWZpYzxUPiogb3duZXI7CgoKCiAgICB9OwoKCgoKCiAgICBRVGhyZWFkU3RvcmFnZTxE
YXRhKj4gbV9rZXk7CgoKCgoKfTsKIyAxNDAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkU3BlY2lmaWMuaCIKdGVtcGxhdGU8dHlwZW5hbWUgVD4KaW5saW5lIFRocmVh
ZFNwZWNpZmljPFQ+OjpUaHJlYWRTcGVjaWZpYygpCnsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4K
aW5saW5lIFQqIFRocmVhZFNwZWNpZmljPFQ+OjpnZXQoKQp7CiAgICBEYXRhKiBkYXRhID0gc3Rh
dGljX2Nhc3Q8RGF0YSo+KG1fa2V5LmxvY2FsRGF0YSgpKTsKICAgIHJldHVybiBkYXRhID8gZGF0
YS0+dmFsdWUgOiAwOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgppbmxpbmUgdm9pZCBUaHJlYWRT
cGVjaWZpYzxUPjo6c2V0KFQqIHB0cikKewogICAgZG8gaWYgKCEoIWdldCgpKSkgeyBXVEZSZXBv
cnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZFNwZWNpZmljLmgiLCAxNTUsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhZ2V0KCkiKTsgZG8g
eyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAw
OyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgRGF0
YSogZGF0YSA9IG5ldyBEYXRhKHB0ciwgdGhpcyk7CiAgICBtX2tleS5zZXRMb2NhbERhdGEoZGF0
YSk7Cn0KIyAyMzkgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3Bl
Y2lmaWMuaCIKdGVtcGxhdGU8dHlwZW5hbWUgVD4KaW5saW5lIHZvaWQgVGhyZWFkU3BlY2lmaWM8
VD46OmRlc3Ryb3kodm9pZCogcHRyKQp7CiAgICBEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8RGF0
YSo+KHB0cik7CiMgMjU0ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZFNwZWNpZmljLmgiCiAgICBkYXRhLT5vd25lci0+bV9rZXkuc2V0TG9jYWxEYXRhKGRhdGEpOwoK
CiAgICBkYXRhLT52YWx1ZS0+flQoKTsKICAgIGZhc3RGcmVlKGRhdGEtPnZhbHVlKTsKIyAyNzUg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaCIKfQoK
dGVtcGxhdGU8dHlwZW5hbWUgVD4KaW5saW5lIFRocmVhZFNwZWNpZmljPFQ+OjpvcGVyYXRvciBU
KigpCnsKICAgIFQqIHB0ciA9IHN0YXRpY19jYXN0PFQqPihnZXQoKSk7CiAgICBpZiAoIXB0cikg
ewoKCiAgICAgICAgcHRyID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RaZXJvZWRNYWxsb2Moc2l6ZW9m
KFQpKSk7CiAgICAgICAgc2V0KHB0cik7CiAgICAgICAgbmV3IChwdHIpIFQ7CiAgICB9CiAgICBy
ZXR1cm4gcHRyOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgppbmxpbmUgVCogVGhyZWFkU3BlY2lm
aWM8VD46Om9wZXJhdG9yLT4oKQp7CiAgICByZXR1cm4gb3BlcmF0b3IgVCooKTsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgVD4KaW5saW5lIFQmIFRocmVhZFNwZWNpZmljPFQ+OjpvcGVyYXRvciooKQp7
CiAgICByZXR1cm4gKm9wZXJhdG9yIFQqKCk7Cn0KCn0KIyA0OSAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaCIgMQojIDI4ICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaCIKI2RlZmluZSBXVEZUaHJl
YWREYXRhX2ggCgoKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3Rh
Y2tCb3VuZHMuaCIgMQojIDI4ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0
YWNrQm91bmRzLmgiCiNkZWZpbmUgU3RhY2tCb3VuZHNfaCAKCm5hbWVzcGFjZSBXVEYgewoKY2xh
c3MgU3RhY2tCb3VuZHMgewoKCiAgICBjb25zdCBzdGF0aWMgc2l6ZV90IHNfZGVmYXVsdEF2YWls
YWJpbGl0eURlbHRhID0gNDA5NjsKCnB1YmxpYzoKICAgIFN0YWNrQm91bmRzKCkKICAgICAgICA6
IG1fb3JpZ2luKDApCiAgICAgICAgLCBtX2JvdW5kKDApCiAgICB7CiAgICB9CgogICAgc3RhdGlj
IFN0YWNrQm91bmRzIGN1cnJlbnRUaHJlYWRTdGFja0JvdW5kcygpCiAgICB7CiAgICAgICAgU3Rh
Y2tCb3VuZHMgYm91bmRzOwogICAgICAgIGJvdW5kcy5pbml0aWFsaXplKCk7CiAgICAgICAgYm91
bmRzLmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICByZXR1cm4gYm91bmRzOwogICAgfQoKICAg
IHZvaWQqIG9yaWdpbigpIGNvbnN0CiAgICB7CiAgICAgICAgZG8gaWYgKCEobV9vcmlnaW4pKSB7
IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvU3RhY2tCb3VuZHMuaCIsIDU0LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9vcmlnaW4i
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwog
ICAgICAgIHJldHVybiBtX29yaWdpbjsKICAgIH0KCiAgICB2b2lkKiBjdXJyZW50KCkgY29uc3QK
ICAgIHsKICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgdm9pZCogY3VycmVudFBv
c2l0aW9uID0gJmN1cnJlbnRQb3NpdGlvbjsKICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9u
OwogICAgfQoKICAgIHZvaWQqIHJlY3Vyc2lvbkxpbWl0KHNpemVfdCBtaW5BdmFpbGFibGVEZWx0
YSA9IHNfZGVmYXVsdEF2YWlsYWJpbGl0eURlbHRhKSBjb25zdAogICAgewogICAgICAgIGNoZWNr
Q29uc2lzdGVuY3koKTsKICAgICAgICByZXR1cm4gaXNHcm93aW5nRG93bndhcmQoKQogICAgICAg
ICAgICA/IHN0YXRpY19jYXN0PGNoYXIqPihtX2JvdW5kKSArIG1pbkF2YWlsYWJsZURlbHRhCiAg
ICAgICAgICAgIDogc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYm91bmQpIC0gbWluQXZhaWxhYmxlRGVs
dGE7CiAgICB9CgogICAgYm9vbCByZWN1cnNpb25DaGVjayhzaXplX3QgbWluQXZhaWxhYmxlRGVs
dGEgPSBzX2RlZmF1bHRBdmFpbGFiaWxpdHlEZWx0YSkgY29uc3QKICAgIHsKICAgICAgICBjaGVj
a0NvbnNpc3RlbmN5KCk7CiAgICAgICAgcmV0dXJuIGlzR3Jvd2luZ0Rvd253YXJkKCkKICAgICAg
ICAgICAgPyBjdXJyZW50KCkgPj0gcmVjdXJzaW9uTGltaXQobWluQXZhaWxhYmxlRGVsdGEpCiAg
ICAgICAgICAgIDogY3VycmVudCgpIDw9IHJlY3Vyc2lvbkxpbWl0KG1pbkF2YWlsYWJsZURlbHRh
KTsKICAgIH0KCnByaXZhdGU6CiAgICB2b2lkIGluaXRpYWxpemUoKTsKCgogICAgYm9vbCBpc0dy
b3dpbmdEb3dud2FyZCgpIGNvbnN0CiAgICB7CiAgICAgICAgZG8gaWYgKCEobV9vcmlnaW4gJiYg
bV9ib3VuZCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9TdGFja0JvdW5kcy5oIiwgODcsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICJtX29yaWdpbiAmJiBtX2JvdW5kIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50
ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsKCgoKICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICB9CgogICAg
dm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKICAgIHsKCiAgICAgICAgdm9pZCogY3VycmVu
dFBvc2l0aW9uID0gJmN1cnJlbnRQb3NpdGlvbjsKICAgICAgICBkbyBpZiAoIShtX29yaWdpbiAh
PSBtX2JvdW5kKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1N0YWNrQm91bmRzLmgiLCA5OSwgX19QUkVUVFlfRlVOQ1RJT05f
XywgIm1fb3JpZ2luICE9IG1fYm91bmQiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihp
bnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKGlzR3Jvd2luZ0Rvd253YXJk
KCkgPyAoY3VycmVudFBvc2l0aW9uIDwgbV9vcmlnaW4gJiYgY3VycmVudFBvc2l0aW9uID4gbV9i
b3VuZCkgOiAoY3VycmVudFBvc2l0aW9uID4gbV9vcmlnaW4gJiYgY3VycmVudFBvc2l0aW9uIDwg
bV9ib3VuZCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvU3RhY2tCb3VuZHMuaCIsIDEwMiwgX19QUkVUVFlfRlVOQ1RJT05f
XywgImlzR3Jvd2luZ0Rvd253YXJkKCkgPyAoY3VycmVudFBvc2l0aW9uIDwgbV9vcmlnaW4gJiYg
Y3VycmVudFBvc2l0aW9uID4gbV9ib3VuZCkgOiAoY3VycmVudFBvc2l0aW9uID4gbV9vcmlnaW4g
JiYgY3VycmVudFBvc2l0aW9uIDwgbV9ib3VuZCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2Uo
KTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9
IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwoKCgogICAgfQoKICAgIHZvaWQqIG1fb3JpZ2lu
OwogICAgdm9pZCogbV9ib3VuZDsKfTsKCn0KCnVzaW5nIFdURjo6U3RhY2tCb3VuZHM7CiMgMzQg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oIiAyCiMg
NDIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oIgoj
ZGVmaW5lIFdURlRIUkVBRERBVEFfTVVMVElUSFJFQURFRCAxCiMgNTEgIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oIgpuYW1lc3BhY2UgSlNDIHsKCnR5
cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFN0cmluZ0ltcGw+LCBQdHJIYXNoPGNv
bnN0IGNoYXIqPiA+IExpdGVyYWxJZGVudGlmaWVyVGFibGU7CgpjbGFzcyBJZGVudGlmaWVyVGFi
bGUgewogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJl
dHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpm
YXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwg
OjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IHJldHVybiBwOyB9IHZvaWQgb3Bl
cmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJl
ZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3KTsgOjpXVEY6OmZhc3RGcmVl
KHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHZvaWQqIHAgPSA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9j
KHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXdBcnJheSk7IHJldHVybiBwOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXdBcnJheSk7
IDo6V1RGOjpmYXN0RnJlZShwKTsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBUaGlzSXNIZXJlVG9G
b3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKcHVibGljOgogICAgfklkZW50aWZpZXJUYWJs
ZSgpOwoKICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+
IGFkZChTdHJpbmdJbXBsKiB2YWx1ZSk7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPgogICAgc3RkOjpwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4g
YWRkKFUgdmFsdWUpOwoKICAgIGJvb2wgcmVtb3ZlKFN0cmluZ0ltcGwqIHIpCiAgICB7CiAgICAg
ICAgSGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX3RhYmxlLmZpbmQocik7
CiAgICAgICAgaWYgKGl0ZXIgPT0gbV90YWJsZS5lbmQoKSkKICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgIG1fdGFibGUucmVtb3ZlKGl0ZXIpOwogICAgICAgIHJldHVybiB0cnVlOwog
ICAgfQoKICAgIExpdGVyYWxJZGVudGlmaWVyVGFibGUmIGxpdGVyYWxUYWJsZSgpIHsgcmV0dXJu
IG1fbGl0ZXJhbFRhYmxlOyB9Cgpwcml2YXRlOgogICAgSGFzaFNldDxTdHJpbmdJbXBsKj4gbV90
YWJsZTsKICAgIExpdGVyYWxJZGVudGlmaWVyVGFibGUgbV9saXRlcmFsVGFibGU7Cn07Cgp9CgoK
bmFtZXNwYWNlIFdURiB7CgpjbGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKCnR5cGVkZWYgdm9pZCAo
KkF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikoQXRvbWljU3RyaW5nVGFibGUqKTsKCmNsYXNz
IFdURlRocmVhZERhdGEgewogICAgcHJpdmF0ZTogV1RGVGhyZWFkRGF0YShjb25zdCBXVEZUaHJl
YWREYXRhJik7IFdURlRocmVhZERhdGEmIG9wZXJhdG9yPShjb25zdCBXVEZUaHJlYWREYXRhJik7
CnB1YmxpYzoKICAgIFdURlRocmVhZERhdGEoKTsKICAgIH5XVEZUaHJlYWREYXRhKCk7CgogICAg
QXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkKICAgIHsKICAgICAgICByZXR1
cm4gbV9hdG9taWNTdHJpbmdUYWJsZTsKICAgIH0KCgogICAgSlNDOjpJZGVudGlmaWVyVGFibGUq
IGN1cnJlbnRJZGVudGlmaWVyVGFibGUoKQogICAgewogICAgICAgIHJldHVybiBtX2N1cnJlbnRJ
ZGVudGlmaWVyVGFibGU7CiAgICB9CgogICAgSlNDOjpJZGVudGlmaWVyVGFibGUqIHNldEN1cnJl
bnRJZGVudGlmaWVyVGFibGUoSlNDOjpJZGVudGlmaWVyVGFibGUqIGlkZW50aWZpZXJUYWJsZSkK
ICAgIHsKICAgICAgICBKU0M6OklkZW50aWZpZXJUYWJsZSogb2xkSWRlbnRpZmllclRhYmxlID0g
bV9jdXJyZW50SWRlbnRpZmllclRhYmxlOwogICAgICAgIG1fY3VycmVudElkZW50aWZpZXJUYWJs
ZSA9IGlkZW50aWZpZXJUYWJsZTsKICAgICAgICByZXR1cm4gb2xkSWRlbnRpZmllclRhYmxlOwog
ICAgfQoKICAgIHZvaWQgcmVzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKCkKICAgIHsKICAgICAg
ICBtX2N1cnJlbnRJZGVudGlmaWVyVGFibGUgPSBtX2RlZmF1bHRJZGVudGlmaWVyVGFibGU7CiAg
ICB9CgogICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrKCkgY29uc3QKICAgIHsKICAgICAgICBy
ZXR1cm4gbV9zdGFja0JvdW5kczsKICAgIH0KCgpwcml2YXRlOgogICAgQXRvbWljU3RyaW5nVGFi
bGUqIG1fYXRvbWljU3RyaW5nVGFibGU7CiAgICBBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3Ig
bV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3I7CgoKICAgIEpTQzo6SWRlbnRpZmllclRhYmxl
KiBtX2RlZmF1bHRJZGVudGlmaWVyVGFibGU7CiAgICBKU0M6OklkZW50aWZpZXJUYWJsZSogbV9j
dXJyZW50SWRlbnRpZmllclRhYmxlOwogICAgU3RhY2tCb3VuZHMgbV9zdGFja0JvdW5kczsKCgoK
ICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRhPiogc3RhdGljRGF0YTsKCgoK
ICAgIGZyaWVuZCBXVEZUaHJlYWREYXRhJiB3dGZUaHJlYWREYXRhKCk7CiAgICBmcmllbmQgY2xh
c3MgQXRvbWljU3RyaW5nVGFibGU7Cn07CgppbmxpbmUgV1RGVGhyZWFkRGF0YSYgd3RmVGhyZWFk
RGF0YSgpCnsKCgoKCgoKCiAgICBpZiAoIVdURlRocmVhZERhdGE6OnN0YXRpY0RhdGEpCiAgICAg
ICAgV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YSA9IG5ldyBUaHJlYWRTcGVjaWZpYzxXVEZUaHJl
YWREYXRhPjsKICAgIHJldHVybiAqKldURlRocmVhZERhdGE6OnN0YXRpY0RhdGE7CiMgMTYzICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaCIKfQoKfQoK
dXNpbmcgV1RGOjpXVEZUaHJlYWREYXRhOwp1c2luZyBXVEY6Ond0ZlRocmVhZERhdGE7CiMgNTAg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIiAy
CgoKCgpzdHJ1Y3QgT3BhcXVlSlNDbGFzczsKc3RydWN0IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0
YTsKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIENvZGVCbG9jazsKICAgIGNsYXNzIENvbW1v
bklkZW50aWZpZXJzOwogICAgY2xhc3MgSGFuZGxlU3RhY2s7CiAgICBjbGFzcyBJZGVudGlmaWVy
VGFibGU7CiAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owog
ICAgY2xhc3MgSlNPYmplY3Q7CiAgICBjbGFzcyBMZXhlcjsKICAgIGNsYXNzIE5hdGl2ZUV4ZWN1
dGFibGU7CiAgICBjbGFzcyBQYXJzZXI7CiAgICBjbGFzcyBSZWdFeHBDYWNoZTsKICAgIGNsYXNz
IFN0cmluZ2lmaWVyOwogICAgY2xhc3MgU3RydWN0dXJlOwogICAgY2xhc3MgVVN0cmluZzsKCgoK
CiAgICBzdHJ1Y3QgSGFzaFRhYmxlOwogICAgc3RydWN0IEluc3RydWN0aW9uOwoKICAgIHN0cnVj
dCBEU1RPZmZzZXRDYWNoZSB7CiAgICAgICAgRFNUT2Zmc2V0Q2FjaGUoKQogICAgICAgIHsKICAg
ICAgICAgICAgcmVzZXQoKTsKICAgICAgICB9CgogICAgICAgIHZvaWQgcmVzZXQoKQogICAgICAg
IHsKICAgICAgICAgICAgb2Zmc2V0ID0gMC4wOwogICAgICAgICAgICBzdGFydCA9IDAuMDsKICAg
ICAgICAgICAgZW5kID0gLTEuMDsKICAgICAgICAgICAgaW5jcmVtZW50ID0gMC4wOwogICAgICAg
IH0KCiAgICAgICAgZG91YmxlIG9mZnNldDsKICAgICAgICBkb3VibGUgc3RhcnQ7CiAgICAgICAg
ZG91YmxlIGVuZDsKICAgICAgICBkb3VibGUgaW5jcmVtZW50OwogICAgfTsKCiAgICBlbnVtIFRo
cmVhZFN0YWNrVHlwZSB7CiAgICAgICAgVGhyZWFkU3RhY2tUeXBlTGFyZ2UsCiAgICAgICAgVGhy
ZWFkU3RhY2tUeXBlU21hbGwKICAgIH07CgogICAgY2xhc3MgSlNHbG9iYWxEYXRhIDogcHVibGlj
IFJlZkNvdW50ZWQ8SlNHbG9iYWxEYXRhPiB7CiAgICBwdWJsaWM6CiMgMTE1ICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCIKICAgICAgICBlbnVt
IEdsb2JhbERhdGFUeXBlIHsgRGVmYXVsdCwgQVBJQ29udGV4dEdyb3VwLCBBUElTaGFyZWQgfTsK
CiAgICAgICAgc3RydWN0IENsaWVudERhdGEgewogICAgICAgICAgICB2aXJ0dWFsIH5DbGllbnRE
YXRhKCkgPSAwOwogICAgICAgIH07CgogICAgICAgIGJvb2wgaXNTaGFyZWRJbnN0YW5jZSgpIHsg
cmV0dXJuIGdsb2JhbERhdGFUeXBlID09IEFQSVNoYXJlZDsgfQogICAgICAgIGJvb2wgdXNpbmdB
UEkoKSB7IHJldHVybiBnbG9iYWxEYXRhVHlwZSAhPSBEZWZhdWx0OyB9CiAgICAgICAgc3RhdGlj
IGJvb2wgc2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsKICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRh
JiBzaGFyZWRJbnN0YW5jZSgpOwoKICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERh
dGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsKICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFj
a1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsKICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxK
U0dsb2JhbERhdGE+IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXpl
ID0gU21hbGxIZWFwKTsKICAgICAgICB+SlNHbG9iYWxEYXRhKCk7CgoKCgoKCiAgICAgICAgR2xv
YmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGU7CiAgICAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0
YTsKICAgICAgICBDYWxsRnJhbWUqIHRvcENhbGxGcmFtZTsKCiAgICAgICAgY29uc3QgSGFzaFRh
YmxlKiBhcnJheUNvbnN0cnVjdG9yVGFibGU7CiAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBhcnJh
eVByb3RvdHlwZVRhYmxlOwogICAgICAgIGNvbnN0IEhhc2hUYWJsZSogYm9vbGVhblByb3RvdHlw
ZVRhYmxlOwogICAgICAgIGNvbnN0IEhhc2hUYWJsZSogZGF0ZVRhYmxlOwogICAgICAgIGNvbnN0
IEhhc2hUYWJsZSogZGF0ZUNvbnN0cnVjdG9yVGFibGU7CiAgICAgICAgY29uc3QgSGFzaFRhYmxl
KiBlcnJvclByb3RvdHlwZVRhYmxlOwogICAgICAgIGNvbnN0IEhhc2hUYWJsZSogZ2xvYmFsT2Jq
ZWN0VGFibGU7CiAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBqc29uVGFibGU7CiAgICAgICAgY29u
c3QgSGFzaFRhYmxlKiBtYXRoVGFibGU7CiAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJD
b25zdHJ1Y3RvclRhYmxlOwogICAgICAgIGNvbnN0IEhhc2hUYWJsZSogbnVtYmVyUHJvdG90eXBl
VGFibGU7CiAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBvYmplY3RDb25zdHJ1Y3RvclRhYmxlOwog
ICAgICAgIGNvbnN0IEhhc2hUYWJsZSogb2JqZWN0UHJvdG90eXBlVGFibGU7CiAgICAgICAgY29u
c3QgSGFzaFRhYmxlKiByZWdFeHBUYWJsZTsKICAgICAgICBjb25zdCBIYXNoVGFibGUqIHJlZ0V4
cENvbnN0cnVjdG9yVGFibGU7CiAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBQcm90b3R5
cGVUYWJsZTsKICAgICAgICBjb25zdCBIYXNoVGFibGUqIHN0cmluZ1RhYmxlOwogICAgICAgIGNv
bnN0IEhhc2hUYWJsZSogc3RyaW5nQ29uc3RydWN0b3JUYWJsZTsKCiAgICAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gc3RydWN0dXJlU3RydWN0dXJlOwogICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGRl
YnVnZ2VyQWN0aXZhdGlvblN0cnVjdHVyZTsKICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBhY3Rp
dmF0aW9uU3RydWN0dXJlOwogICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVycnVwdGVkRXhl
Y3V0aW9uRXJyb3JTdHJ1Y3R1cmU7CiAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdGVybWluYXRl
ZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlOwogICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0YXRp
Y1Njb3BlU3RydWN0dXJlOwogICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cmljdEV2YWxBY3Rp
dmF0aW9uU3RydWN0dXJlOwogICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cmluZ1N0cnVjdHVy
ZTsKICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBub3RBbk9iamVjdFN0cnVjdHVyZTsKICAgICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBwcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZTsKICAgICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmU7CiAgICAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gYXBpV3JhcHBlclN0cnVjdHVyZTsKICAgICAgICBTdHJvbmc8U3RydWN0dXJl
PiBzY29wZUNoYWluTm9kZVN0cnVjdHVyZTsKICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGVj
dXRhYmxlU3RydWN0dXJlOwogICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG5hdGl2ZUV4ZWN1dGFi
bGVTdHJ1Y3R1cmU7CiAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXZhbEV4ZWN1dGFibGVTdHJ1
Y3R1cmU7CiAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1
cmU7CiAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
OwogICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKICAgICAgICBTdHJv
bmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKCiAgICAgICAgc3RhdGljIHZv
aWQgc3RvcmVWUHRycygpOwogICAgICAgIHN0YXRpYyB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cjsK
ICAgICAgICBzdGF0aWMgdm9pZCoganNBcnJheVZQdHI7CiAgICAgICAgc3RhdGljIHZvaWQqIGpz
Qnl0ZUFycmF5VlB0cjsKICAgICAgICBzdGF0aWMgdm9pZCoganNTdHJpbmdWUHRyOwogICAgICAg
IHN0YXRpYyB2b2lkKiBqc0Z1bmN0aW9uVlB0cjsKCiAgICAgICAgSWRlbnRpZmllclRhYmxlKiBp
ZGVudGlmaWVyVGFibGU7CiAgICAgICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7
CiAgICAgICAgY29uc3QgTWFya2VkQXJndW1lbnRCdWZmZXIqIGVtcHR5TGlzdDsKICAgICAgICBT
bWFsbFN0cmluZ3Mgc21hbGxTdHJpbmdzOwogICAgICAgIE51bWVyaWNTdHJpbmdzIG51bWVyaWNT
dHJpbmdzOwogICAgICAgIERhdGVJbnN0YW5jZUNhY2hlIGRhdGVJbnN0YW5jZUNhY2hlOwoKCiAg
ICAgICAgRXhlY3V0YWJsZUFsbG9jYXRvciBleGVjdXRhYmxlQWxsb2NhdG9yOwoKCgoKCiAgICAg
ICAgYm9vbCBjYW5Vc2VKSVQoKSB7IHJldHVybiB0cnVlOyB9CgoKCgogICAgICAgIGNvbnN0IFN0
YWNrQm91bmRzJiBzdGFjaygpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gKGdsb2JhbERh
dGFUeXBlID09IERlZmF1bHQpCiAgICAgICAgICAgICAgICA/IG1fc3RhY2sKICAgICAgICAgICAg
ICAgIDogd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CiAgICAgICAgfQoKICAgICAgICBMZXhlciog
bGV4ZXI7CiAgICAgICAgUGFyc2VyKiBwYXJzZXI7CiAgICAgICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyOwoKICAgICAgICBPd25QdHI8SklUVGh1bmtzPiBqaXRTdHViczsKICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZ2V0Q1RJU3R1YihUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IpCiAg
ICAgICAgewogICAgICAgICAgICByZXR1cm4gaml0U3R1YnMtPmN0aVN0dWIodGhpcywgZ2VuZXJh
dG9yKTsKICAgICAgICB9CiAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9u
KE5hdGl2ZUZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvcik7CgogICAgICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbik7CgogICAgICAgIFRpbWVvdXRDaGVj
a2VyIHRpbWVvdXRDaGVja2VyOwogICAgICAgIFRlcm1pbmF0b3IgdGVybWluYXRvcjsKICAgICAg
ICBIZWFwIGhlYXA7CgogICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOwoKICAgICAgICBSZXR1cm5B
ZGRyZXNzUHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgIEpTVmFsdWUgaG9zdENhbGxSZXR1
cm5WYWx1ZTsKCiAgICAgICAgaW50NjRfdCBkZWJ1Z0RhdGFCdWZmZXJbNjRdOwoKCgogICAgICAg
IEhhc2hNYXA8T3BhcXVlSlNDbGFzcyosIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSo+IG9wYXF1
ZUpTQ2xhc3NEYXRhOwoKICAgICAgICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVj
dDsKCiAgICAgICAgSGFzaFNldDxKU09iamVjdCo+IHN0cmluZ1JlY3Vyc2lvbkNoZWNrVmlzaXRl
ZE9iamVjdHM7CgogICAgICAgIGRvdWJsZSBjYWNoZWRVVENPZmZzZXQ7CiAgICAgICAgRFNUT2Zm
c2V0Q2FjaGUgZHN0T2Zmc2V0Q2FjaGU7CgogICAgICAgIFVTdHJpbmcgY2FjaGVkRGF0ZVN0cmlu
ZzsKICAgICAgICBkb3VibGUgY2FjaGVkRGF0ZVN0cmluZ1ZhbHVlOwoKICAgICAgICBpbnQgbWF4
UmVlbnRyeURlcHRoOwoKICAgICAgICBSZWdFeHBDYWNoZSogbV9yZWdFeHBDYWNoZTsKICAgICAg
ICBCdW1wUG9pbnRlckFsbG9jYXRvciBtX3JlZ0V4cEFsbG9jYXRvcjsKCgoKCgoKCiAgICAgICAg
VGhyZWFkSWRlbnRpZmllciBleGNsdXNpdmVUaHJlYWQ7CgoKICAgICAgICBDYWNoZWRUcmFuc2Nl
bmRlbnRhbEZ1bmN0aW9uPHNpbj4gY2FjaGVkU2luOwoKICAgICAgICB2b2lkIHJlc2V0RGF0ZUNh
Y2hlKCk7CgogICAgICAgIHZvaWQgc3RhcnRTYW1wbGluZygpOwogICAgICAgIHZvaWQgc3RvcFNh
bXBsaW5nKCk7CiAgICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMpOwog
ICAgICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKICAgICAgICBSZWdFeHBDYWNo
ZSogcmVnRXhwQ2FjaGUoKSB7IHJldHVybiBtX3JlZ0V4cENhY2hlOyB9CgoKCiAgICAgICAgdm9p
ZCBkdW1wUmVnRXhwVHJhY2UoKTsKICAgICAgICBIYW5kbGVTbG90IGFsbG9jYXRlR2xvYmFsSGFu
ZGxlKCkgeyByZXR1cm4gaGVhcC5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpOyB9CiAgICAgICAgSGFu
ZGxlU2xvdCBhbGxvY2F0ZUxvY2FsSGFuZGxlKCkgeyByZXR1cm4gaGVhcC5hbGxvY2F0ZUxvY2Fs
SGFuZGxlKCk7IH0KICAgICAgICB2b2lkIGNsZWFyQnVpbHRpblN0cnVjdHVyZXMoKTsKCiAgICAg
ICAgYm9vbCBpc0NvbGxlY3RvckJ1c3koKSB7IHJldHVybiBoZWFwLmlzQnVzeSgpOyB9CiAgICAg
ICAgdm9pZCByZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOwoKCiAgICAgICAgYm9vbCBpc0luaXRp
YWxpemluZ09iamVjdCgpIGNvbnN0OwogICAgICAgIHZvaWQgc2V0SW5pdGlhbGl6aW5nT2JqZWN0
KGJvb2wpOwoKCiAgICBwcml2YXRlOgogICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlw
ZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0
YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICB2b2lkIGNyZWF0ZU5hdGl2ZVRo
dW5rKCk7CgoKCiAgICAgICAgU3RhY2tCb3VuZHMgbV9zdGFjazsKCiAgICAgICAgYm9vbCBtX2lz
SW5pdGlhbGl6aW5nT2JqZWN0OwoKICAgIH07CgogICAgaW5saW5lIEhhbmRsZVNsb3QgYWxsb2Nh
dGVHbG9iYWxIYW5kbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgewogICAgICAgIHJl
dHVybiBnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCk7CiAgICB9CgoKICAgIGlubGlu
ZSBib29sIEpTR2xvYmFsRGF0YTo6aXNJbml0aWFsaXppbmdPYmplY3QoKSBjb25zdAogICAgewog
ICAgICAgIHJldHVybiBtX2lzSW5pdGlhbGl6aW5nT2JqZWN0OwogICAgfQoKICAgIGlubGluZSB2
b2lkIEpTR2xvYmFsRGF0YTo6c2V0SW5pdGlhbGl6aW5nT2JqZWN0KGJvb2wgaW5pdGlhbGl6aW5n
T2JqZWN0KQogICAgewogICAgICAgIG1faXNJbml0aWFsaXppbmdPYmplY3QgPSBpbml0aWFsaXpp
bmdPYmplY3Q7CiAgICB9CgoKfQojIDQ2ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIiAyCgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKICAgIGNsYXNz
IEJsb2I7CiAgICBjbGFzcyBET01UaW1lcjsKICAgIGNsYXNzIERPTVVSTDsKICAgIGNsYXNzIEV2
ZW50TGlzdGVuZXI7CiAgICBjbGFzcyBFdmVudFRhcmdldDsKICAgIGNsYXNzIE1lc3NhZ2VQb3J0
OwogICAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CgoK
ICAgIGNsYXNzIERhdGFiYXNlOwogICAgY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyOwog
ICAgY2xhc3MgRGF0YWJhc2VUaHJlYWQ7CgoKCiAgICBjbGFzcyBGaWxlVGhyZWFkOwoKCgoKCgog
ICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiAgICBwdWJsaWM6CiAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgICAgIHZpcnR1YWwgflNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKCiAgICAgICAgdmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgIHZpcnR1YWwgYm9vbCBpc1dvcmtlckNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQoKCiAgICAgICAgdmlydHVhbCBib29sIGFsbG93RGF0YWJhc2VBY2Nl
c3MoKSBjb25zdCA9IDA7CiAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlRXhjZWVkZWRRdW90
YShjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKICAgICAgICBEYXRhYmFzZVRocmVhZCogZGF0YWJh
c2VUaHJlYWQoKTsKICAgICAgICB2b2lkIHNldEhhc09wZW5EYXRhYmFzZXMoKSB7IG1faGFzT3Bl
bkRhdGFiYXNlcyA9IHRydWU7IH0KICAgICAgICBib29sIGhhc09wZW5EYXRhYmFzZXMoKSBjb25z
dCB7IHJldHVybiBtX2hhc09wZW5EYXRhYmFzZXM7IH0KCiAgICAgICAgdm9pZCBzdG9wRGF0YWJh
c2VzKERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOwoKICAgICAgICB2aXJ0dWFsIGJvb2wgaXND
b250ZXh0VGhyZWFkKCkgY29uc3QgPSAwOwogICAgICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0
aW9uRm9yYmlkZGVuKCkgY29uc3QgPSAwOwoKICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25z
dCB7IHJldHVybiB2aXJ0dWFsVVJMKCk7IH0KICAgICAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0
IFN0cmluZyYgdXJsKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsQ29tcGxldGVVUkwodXJsKTsgfQoK
ICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpIGNvbnN0ID0gMDsK
CiAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQoKICAgICAgICBib29sIHNhbml0aXplU2NyaXB0RXJy
b3IoU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCYgbGluZU51bWJlciwgU3RyaW5nJiBzb3VyY2VV
UkwpOwogICAgICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFBhc3NSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPik7CiAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+KSA9IDA7CgoKICAgICAgICBib29sIGNhblN1c3BlbmRBY3RpdmVE
T01PYmplY3RzKCk7CgoKICAgICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2
ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbik7CiAgICAgICAgdm9pZCByZXN1bWVBY3Rp
dmVET01PYmplY3RzKCk7CiAgICAgICAgdm9pZCBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOwogICAg
ICAgIHZvaWQgY3JlYXRlZEFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqLCB2b2lkKiB1
cGNhc3RQb2ludGVyKTsKICAgICAgICB2b2lkIGRlc3Ryb3llZEFjdGl2ZURPTU9iamVjdChBY3Rp
dmVET01PYmplY3QqKTsKICAgICAgICB0eXBlZGVmIGNvbnN0IEhhc2hNYXA8QWN0aXZlRE9NT2Jq
ZWN0Kiwgdm9pZCo+IEFjdGl2ZURPTU9iamVjdHNNYXA7CiAgICAgICAgQWN0aXZlRE9NT2JqZWN0
c01hcCYgYWN0aXZlRE9NT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0
czsgfQoKICAgICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlckNhbGxiYWNrcygpIHsgfQogICAgICAgIHZpcnR1YWwgdm9pZCByZXN1bWVTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKSB7IH0KCgogICAgICAgIHZvaWQgcHJvY2Vzc01l
c3NhZ2VQb3J0TWVzc2FnZXNTb29uKCk7CiAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VQb3J0
RXZlbnRzKCk7CiAgICAgICAgdm9pZCBjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQqKTsK
ICAgICAgICB2b2lkIGRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Kik7CiAgICAgICAg
Y29uc3QgSGFzaFNldDxNZXNzYWdlUG9ydCo+JiBtZXNzYWdlUG9ydHMoKSBjb25zdCB7IHJldHVy
biBtX21lc3NhZ2VQb3J0czsgfQoKCiAgICAgICAgdm9pZCBjcmVhdGVkRG9tVXJsKERPTVVSTCop
OwogICAgICAgIHZvaWQgZGVzdHJveWVkRG9tVXJsKERPTVVSTCopOwogICAgICAgIGNvbnN0IEhh
c2hTZXQ8RE9NVVJMKj4mIGRvbVVybHMoKSBjb25zdCB7IHJldHVybiBtX2RvbVVybHM7IH0KCiAg
ICAgICAgdm9pZCByZWYoKSB7IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogICAgICAg
IHZvaWQgZGVyZWYoKSB7IGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CgogICAgICAg
IGNsYXNzIFRhc2sgewogICAgICAgICAgICBwcml2YXRlOiBUYXNrKGNvbnN0IFRhc2smKTsgVGFz
ayYgb3BlcmF0b3I9KGNvbnN0IFRhc2smKTsgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsg
dm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IHJl
dHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxs
b2NNYXRjaFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3
KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXpl
KSB7IHZvaWQqIHAgPSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxsb2NN
YXRjaFZhbGlkYXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXdB
cnJheSk7IHJldHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldU
Rjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NU
eXBlQ2xhc3NOZXdBcnJheSk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSBwcml2YXRlOiB0eXBlZGVm
IGludCBUaGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKICAgICAgICBw
dWJsaWM6CiAgICAgICAgICAgIFRhc2soKSB7IH0KICAgICAgICAgICAgdmlydHVhbCB+VGFzaygp
OwogICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopID0gMDsKCiAgICAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICB9OwoKICAgICAgICB2aXJ0dWFsIHZvaWQgcG9z
dFRhc2soUGFzc093blB0cjxUYXNrPikgPSAwOwoKICAgICAgICB2b2lkIGFkZFRpbWVvdXQoaW50
IHRpbWVvdXRJZCwgRE9NVGltZXIqKTsKICAgICAgICB2b2lkIHJlbW92ZVRpbWVvdXQoaW50IHRp
bWVvdXRJZCk7CiAgICAgICAgRE9NVGltZXIqIGZpbmRUaW1lb3V0KGludCB0aW1lb3V0SWQpOwoK
CgoKCiAgICAgICAgS1VSTCBjcmVhdGVQdWJsaWNCbG9iVVJMKEJsb2IqKTsKICAgICAgICB2b2lk
IHJldm9rZVB1YmxpY0Jsb2JVUkwoY29uc3QgS1VSTCYpOwoKCgogICAgICAgIEpTQzo6SlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKCk7CgoKCiAgICAgICAgRmlsZVRocmVhZCogZmlsZVRocmVhZCgp
OwogICAgICAgIHZvaWQgc3RvcEZpbGVUaHJlYWQoKTsKCgoKICAgICAgICB2b2lkIGFkanVzdE1p
bmltdW1UaW1lckludGVydmFsKGRvdWJsZSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCk7CiAgICAg
ICAgdmlydHVhbCBkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdDsKCiAgICBwcm90
ZWN0ZWQ6CgoKCiAgICAgICAgdm9pZCBzZXRTZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPik7CgogICAgcHJpdmF0ZToKICAgICAgICB2aXJ0dWFsIGNvbnN0IEtVUkwmIHZp
cnR1YWxVUkwoKSBjb25zdCA9IDA7CiAgICAgICAgdmlydHVhbCBLVVJMIHZpcnR1YWxDb21wbGV0
ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CgogICAgICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXQqIGVycm9yRXZlbnRUYXJnZXQoKSA9IDA7CiAgICAgICAgdmlydHVhbCB2b2lkIGxvZ0V4Y2Vw
dGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pID0g
MDsKICAgICAgICBib29sIGRpc3BhdGNoRXJyb3JFdmVudChjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKCiAgICAgICAg
dm9pZCBjbG9zZU1lc3NhZ2VQb3J0cygpOwoKICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IG1fc2VjdXJpdHlPcmlnaW47CgogICAgICAgIEhhc2hTZXQ8TWVzc2FnZVBvcnQqPiBtX21lc3Nh
Z2VQb3J0czsKCiAgICAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj4gbV9hY3Rp
dmVET01PYmplY3RzOwogICAgICAgIGJvb2wgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzOwog
ICAgICAgIGJvb2wgbV9pbkRlc3RydWN0b3I7CgogICAgICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQs
IERPTVRpbWVyKj4gVGltZW91dE1hcDsKICAgICAgICBUaW1lb3V0TWFwIG1fdGltZW91dHM7CgoK
ICAgICAgICBIYXNoU2V0PFN0cmluZz4gbV9wdWJsaWNCbG9iVVJMczsKICAgICAgICBIYXNoU2V0
PFN0cmluZz4gbV9wdWJsaWNTdHJlYW1VUkxzOwogICAgICAgIEhhc2hTZXQ8RE9NVVJMKj4gbV9k
b21VcmxzOwoKCiAgICAgICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSA9IDA7CiAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
ID0gMDsKCiAgICAgICAgYm9vbCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50OwogICAgICAgIGNsYXNz
IFBlbmRpbmdFeGNlcHRpb247CiAgICAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8UGVuZGluZ0V4
Y2VwdGlvbj4gPiA+IG1fcGVuZGluZ0V4Y2VwdGlvbnM7CgoKICAgICAgICBSZWZQdHI8RGF0YWJh
c2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7CiAgICAgICAgYm9vbCBtX2hhc09wZW5EYXRhYmFz
ZXM7CgoKCiAgICAgICAgUmVmUHRyPEZpbGVUaHJlYWQ+IG1fZmlsZVRocmVhZDsKCiAgICB9OwoK
fQojIDQyICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCIgMgojIDEgIi4u
Ly4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5o
IiAxCiMgMzIgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0
aERpcmVjdGlvbi5oIgojZGVmaW5lIFN0cmluZ1dpdGhEaXJlY3Rpb25faCAKCiMgMSAiLi4vLi4v
Li4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oIiAxCiMgMzUg
Ii4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlv
bi5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RGly
ZWN0aW9uLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0RGlyZWN0aW9uLmgiCiNkZWZpbmUgVGV4dERpcmVjdGlvbl9oIAoKbmFtZXNwYWNlIFdlYkNv
cmUgewoKICAgIGVudW0gVGV4dERpcmVjdGlvbiB7IFJUTCwgTFRSIH07Cgp9CiMgMzYgIi4uLy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oIiAy
CgpuYW1lc3BhY2UgV2ViQ29yZSB7CiMgNDcgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oIgpjbGFzcyBTdHJpbmdXaXRoRGlyZWN0aW9u
IHsKcHVibGljOgogICAgU3RyaW5nV2l0aERpcmVjdGlvbigpCiAgICAgICAgOiBtX2RpcmVjdGlv
bihMVFIpCiAgICB7CiAgICB9CgogICAgU3RyaW5nV2l0aERpcmVjdGlvbihjb25zdCBTdHJpbmcm
IHN0cmluZywgVGV4dERpcmVjdGlvbiBkaXIpCiAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCiAg
ICAgICAgLCBtX2RpcmVjdGlvbihkaXIpCiAgICB7CiAgICB9CgogICAgY29uc3QgU3RyaW5nJiBz
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQoKICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsgfQogICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQoKICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiBvdGhlcikgY29uc3QKICAgIHsKICAgICAgICByZXR1
cm4gb3RoZXIubV9zdHJpbmcgPT0gbV9zdHJpbmcgJiYgb3RoZXIubV9kaXJlY3Rpb24gPT0gbV9k
aXJlY3Rpb247CiAgICB9CiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nV2l0aERpcmVj
dGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKCp0aGlzKSA9PSBvdGhlcik7IH0KCnByaXZh
dGU6CiAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICBUZXh0RGlyZWN0aW9uIG1fZGlyZWN0aW9uOwp9
OwoKfQojIDQzICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCIgMgojIDEg
Ii4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgiIDEKIyAyNyAiLi4vLi4v
Li4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaCIKI2RlZmluZSBUaW1lcl9oIAoKCgoK
bmFtZXNwYWNlIFdlYkNvcmUgewoKCgpjbGFzcyBUaW1lckhlYXBFbGVtZW50OwoKY2xhc3MgVGlt
ZXJCYXNlIHsKICAgIHByaXZhdGU6IFRpbWVyQmFzZShjb25zdCBUaW1lckJhc2UmKTsgVGltZXJC
YXNlJiBvcGVyYXRvcj0oY29uc3QgVGltZXJCYXNlJik7IHB1YmxpYzogdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
aXplKSB7IHZvaWQqIHAgPSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxs
b2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NO
ZXcpOyByZXR1cm4gcDsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVD
bGFzc05ldyk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0
TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNs
YXNzTmV3QXJyYXkpOyByZXR1cm4gcDsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHAp
IHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6
OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gcHJpdmF0ZTog
dHlwZWRlZiBpbnQgVGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CnB1
YmxpYzoKICAgIFRpbWVyQmFzZSgpOwogICAgdmlydHVhbCB+VGltZXJCYXNlKCk7CgogICAgdm9p
ZCBzdGFydChkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCwgZG91YmxlIHJlcGVhdEludGVydmFsKTsK
CiAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKGRvdWJsZSByZXBlYXRJbnRlcnZhbCkgeyBzdGFydChy
ZXBlYXRJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOyB9CiAgICB2b2lkIHN0YXJ0T25lU2hvdChk
b3VibGUgaW50ZXJ2YWwpIHsgc3RhcnQoaW50ZXJ2YWwsIDApOyB9CgogICAgdm9pZCBzdG9wKCk7
CiAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CgogICAgZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwo
KSBjb25zdDsKICAgIGRvdWJsZSByZXBlYXRJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVw
ZWF0SW50ZXJ2YWw7IH0KCiAgICB2b2lkIGF1Z21lbnRGaXJlSW50ZXJ2YWwoZG91YmxlIGRlbHRh
KSB7IHNldE5leHRGaXJlVGltZShtX25leHRGaXJlVGltZSArIGRlbHRhKTsgfQogICAgdm9pZCBh
dWdtZW50UmVwZWF0SW50ZXJ2YWwoZG91YmxlIGRlbHRhKSB7IGF1Z21lbnRGaXJlSW50ZXJ2YWwo
ZGVsdGEpOyBtX3JlcGVhdEludGVydmFsICs9IGRlbHRhOyB9CgogICAgc3RhdGljIHZvaWQgZmly
ZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7Cgpwcml2YXRlOgogICAgdmlydHVhbCB2b2lkIGZp
cmVkKCkgPSAwOwoKICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OwogICAgdm9pZCBj
aGVja0hlYXBJbmRleCgpIGNvbnN0OwoKICAgIHZvaWQgc2V0TmV4dEZpcmVUaW1lKGRvdWJsZSk7
CgogICAgYm9vbCBpbkhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXBJbmRleCAhPSAtMTsgfQoK
ICAgIHZvaWQgaGVhcERlY3JlYXNlS2V5KCk7CiAgICB2b2lkIGhlYXBEZWxldGUoKTsKICAgIHZv
aWQgaGVhcERlbGV0ZU1pbigpOwogICAgdm9pZCBoZWFwSW5jcmVhc2VLZXkoKTsKICAgIHZvaWQg
aGVhcEluc2VydCgpOwogICAgdm9pZCBoZWFwUG9wKCk7CiAgICB2b2lkIGhlYXBQb3BNaW4oKTsK
CiAgICBkb3VibGUgbV9uZXh0RmlyZVRpbWU7CiAgICBkb3VibGUgbV9yZXBlYXRJbnRlcnZhbDsK
ICAgIGludCBtX2hlYXBJbmRleDsKICAgIHVuc2lnbmVkIG1faGVhcEluc2VydGlvbk9yZGVyOwoK
CiAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkOwoKCiAgICBmcmllbmQgY2xhc3MgVGhyZWFk
VGltZXJzOwogICAgZnJpZW5kIGNsYXNzIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb247CiAgICBm
cmllbmQgY2xhc3MgVGltZXJIZWFwUmVmZXJlbmNlOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFRp
bWVyRmlyZWRDbGFzcz4gY2xhc3MgVGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKcHVibGljOgog
ICAgdHlwZWRlZiB2b2lkIChUaW1lckZpcmVkQ2xhc3M6OipUaW1lckZpcmVkRnVuY3Rpb24pKFRp
bWVyKik7CgogICAgVGltZXIoVGltZXJGaXJlZENsYXNzKiBvLCBUaW1lckZpcmVkRnVuY3Rpb24g
ZikKICAgICAgICA6IG1fb2JqZWN0KG8pLCBtX2Z1bmN0aW9uKGYpIHsgfQoKcHJpdmF0ZToKICAg
IHZpcnR1YWwgdm9pZCBmaXJlZCgpIHsgKG1fb2JqZWN0LT4qbV9mdW5jdGlvbikodGhpcyk7IH0K
CiAgICBUaW1lckZpcmVkQ2xhc3MqIG1fb2JqZWN0OwogICAgVGltZXJGaXJlZEZ1bmN0aW9uIG1f
ZnVuY3Rpb247Cn07CgppbmxpbmUgYm9vbCBUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKewog
ICAgZG8gaWYgKCEobV90aHJlYWQgPT0gY3VycmVudFRocmVhZCgpKSkgeyBXVEZSZXBvcnRBc3Nl
cnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oIiwg
MTA4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV90aHJlYWQgPT0gY3VycmVudFRocmVhZCgpIik7
IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVm
ID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAg
IHJldHVybiBtX25leHRGaXJlVGltZTsKfQoKfQojIDQ0ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgi
CiNkZWZpbmUgVHJlZVNjb3BlX2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmgiIDEKIyAyNSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuaCIKI2RlZmluZSBDb250YWluZXJOb2RlX2ggCgojIDEgIi4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgiIDEKIyAyNiAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaCIKI2RlZmluZSBOb2RlX2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oIiAxCiMgMzMgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oIgojZGVmaW5lIEV2ZW50VGFyZ2V0X2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgiIDEKIyAyMyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaCIKI2RlZmluZSBFdmVudE5hbWVzX2ggCgojIDEgIi4uLy4uLy4uL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaCIgMQojIDI4ICIuLi8uLi8u
Li9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgiCiNkZWZpbmUgVGhy
ZWFkR2xvYmFsRGF0YV9oIAojIDM5ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aHJlYWRHbG9iYWxEYXRhLmgiCnVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CgoKbmFtZXNwYWNl
IFdlYkNvcmUgewoKICAgIGNsYXNzIEV2ZW50TmFtZXM7CiAgICBjbGFzcyBUaHJlYWRUaW1lcnM7
CgogICAgc3RydWN0IElDVUNvbnZlcnRlcldyYXBwZXI7CiAgICBzdHJ1Y3QgVEVDQ29udmVydGVy
V3JhcHBlcjsKCiAgICBjbGFzcyBUaHJlYWRHbG9iYWxEYXRhIHsKICAgICAgICBwcml2YXRlOiBU
aHJlYWRHbG9iYWxEYXRhKGNvbnN0IFRocmVhZEdsb2JhbERhdGEmKTsgVGhyZWFkR2xvYmFsRGF0
YSYgb3BlcmF0b3I9KGNvbnN0IFRocmVhZEdsb2JhbERhdGEmKTsKICAgIHB1YmxpYzoKICAgICAg
ICBUaHJlYWRHbG9iYWxEYXRhKCk7CiAgICAgICAgflRocmVhZEdsb2JhbERhdGEoKTsKICAgICAg
ICB2b2lkIGRlc3Ryb3koKTsKCiAgICAgICAgRXZlbnROYW1lcyYgZXZlbnROYW1lcygpIHsgcmV0
dXJuICptX2V2ZW50TmFtZXM7IH0KICAgICAgICBUaHJlYWRUaW1lcnMmIHRocmVhZFRpbWVycygp
IHsgcmV0dXJuICptX3RocmVhZFRpbWVyczsgfQojIDY4ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgiCiAgICBwcml2YXRlOgogICAgICAgIEV2ZW50
TmFtZXMqIG1fZXZlbnROYW1lczsKICAgICAgICBUaHJlYWRUaW1lcnMqIG1fdGhyZWFkVGltZXJz
OwoKCiAgICAgICAgYm9vbCBtX2lzTWFpblRocmVhZDsKIyA4NSAiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIgogICAgICAgIHN0YXRpYyBUaHJlYWRT
cGVjaWZpYzxUaHJlYWRHbG9iYWxEYXRhPiogc3RhdGljRGF0YTsKCgoKICAgICAgICBmcmllbmQg
VGhyZWFkR2xvYmFsRGF0YSYgdGhyZWFkR2xvYmFsRGF0YSgpOwogICAgfTsKCmlubGluZSBUaHJl
YWRHbG9iYWxEYXRhJiB0aHJlYWRHbG9iYWxEYXRhKCkKewoKCgoKCiAgICBpZiAoIVRocmVhZEds
b2JhbERhdGE6OnN0YXRpY0RhdGEpCiAgICAgICAgVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0
YSA9IG5ldyBUaHJlYWRTcGVjaWZpYzxUaHJlYWRHbG9iYWxEYXRhPjsKICAgIHJldHVybiAqKlRo
cmVhZEdsb2JhbERhdGE6OnN0YXRpY0RhdGE7CiMgMTEwICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgiCn0KCn0KIyAyNiAiLi4vLi4vLi4vU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCIgMgoKCm5hbWVzcGFjZSBXZWJDb3JlIHsKCiNkZWZp
bmUgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNIKG1hY3JvKSBtYWNybyhhYm9ydCkgbWFjcm8oYmVm
b3JlY29weSkgbWFjcm8oYmVmb3JlY3V0KSBtYWNybyhiZWZvcmVsb2FkKSBtYWNybyhiZWZvcmVw
YXN0ZSkgbWFjcm8oYmVmb3JldW5sb2FkKSBtYWNybyhibG9ja2VkKSBtYWNybyhibHVyKSBtYWNy
byhjYWNoZWQpIG1hY3JvKGNoYW5nZSkgbWFjcm8oY2hlY2tpbmcpIG1hY3JvKGNsaWNrKSBtYWNy
byhjbG9zZSkgbWFjcm8oY29tcGxldGUpIG1hY3JvKGNvbXBvc2l0aW9uZW5kKSBtYWNybyhjb21w
b3NpdGlvbnN0YXJ0KSBtYWNybyhjb21wb3NpdGlvbnVwZGF0ZSkgbWFjcm8oY29ubmVjdCkgbWFj
cm8oY29udGV4dG1lbnUpIG1hY3JvKGNvcHkpIG1hY3JvKGN1dCkgbWFjcm8oZGJsY2xpY2spIG1h
Y3JvKGRldmljZW1vdGlvbikgbWFjcm8oZGV2aWNlb3JpZW50YXRpb24pIG1hY3JvKGRpc3BsYXkp
IG1hY3JvKGRvd25sb2FkaW5nKSBtYWNybyhkcmFnKSBtYWNybyhkcmFnZW5kKSBtYWNybyhkcmFn
ZW50ZXIpIG1hY3JvKGRyYWdsZWF2ZSkgbWFjcm8oZHJhZ292ZXIpIG1hY3JvKGRyYWdzdGFydCkg
bWFjcm8oZHJvcCkgbWFjcm8oZXJyb3IpIG1hY3JvKGZvY3VzKSBtYWNybyhmb2N1c2luKSBtYWNy
byhmb2N1c291dCkgbWFjcm8oaGFzaGNoYW5nZSkgbWFjcm8oaW5wdXQpIG1hY3JvKGludmFsaWQp
IG1hY3JvKGtleWRvd24pIG1hY3JvKGtleXByZXNzKSBtYWNybyhrZXl1cCkgbWFjcm8obG9hZCkg
bWFjcm8obG9hZHN0YXJ0KSBtYWNybyhtZXNzYWdlKSBtYWNybyhtb3VzZWRvd24pIG1hY3JvKG1v
dXNlbW92ZSkgbWFjcm8obW91c2VvdXQpIG1hY3JvKG1vdXNlb3ZlcikgbWFjcm8obW91c2V1cCkg
bWFjcm8obW91c2V3aGVlbCkgbWFjcm8obm91cGRhdGUpIG1hY3JvKG9ic29sZXRlKSBtYWNybyhv
ZmZsaW5lKSBtYWNybyhvbmxpbmUpIG1hY3JvKG9wZW4pIG1hY3JvKG92ZXJmbG93Y2hhbmdlZCkg
bWFjcm8ocGFnZWhpZGUpIG1hY3JvKHBhZ2VzaG93KSBtYWNybyhwYXN0ZSkgbWFjcm8ocG9wc3Rh
dGUpIG1hY3JvKHJlYWR5c3RhdGVjaGFuZ2UpIG1hY3JvKHJlc2V0KSBtYWNybyhyZXNpemUpIG1h
Y3JvKHNjcm9sbCkgbWFjcm8oc2VhcmNoKSBtYWNybyhzZWxlY3QpIG1hY3JvKHNlbGVjdHN0YXJ0
KSBtYWNybyhzZWxlY3Rpb25jaGFuZ2UpIG1hY3JvKHN0b3JhZ2UpIG1hY3JvKHN1Ym1pdCkgbWFj
cm8odGV4dElucHV0KSBtYWNybyh1bmxvYWQpIG1hY3JvKHVwZGF0ZXJlYWR5KSBtYWNybyh2ZXJz
aW9uY2hhbmdlKSBtYWNybyh3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlKSBtYWNybyh3cml0ZSkgbWFj
cm8od3JpdGVlbmQpIG1hY3JvKHdyaXRlc3RhcnQpIG1hY3JvKHpvb20pIG1hY3JvKERPTUFjdGl2
YXRlKSBtYWNybyhET01Gb2N1c0luKSBtYWNybyhET01Gb2N1c091dCkgbWFjcm8oRE9NQXR0ck1v
ZGlmaWVkKSBtYWNybyhET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQpIG1hY3JvKERPTU5vZGVJbnNl
cnRlZCkgbWFjcm8oRE9NTm9kZUluc2VydGVkSW50b0RvY3VtZW50KSBtYWNybyhET01Ob2RlUmVt
b3ZlZCkgbWFjcm8oRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQpIG1hY3JvKERPTVN1YnRyZWVN
b2RpZmllZCkgbWFjcm8oRE9NQ29udGVudExvYWRlZCkgbWFjcm8od2Via2l0QmVmb3JlVGV4dElu
c2VydGVkKSBtYWNybyh3ZWJraXRFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkKSBtYWNybyhjYW5wbGF5
KSBtYWNybyhjYW5wbGF5dGhyb3VnaCkgbWFjcm8oZHVyYXRpb25jaGFuZ2UpIG1hY3JvKGVtcHRp
ZWQpIG1hY3JvKGVuZGVkKSBtYWNybyhsb2FkZWRkYXRhKSBtYWNybyhsb2FkZWRtZXRhZGF0YSkg
bWFjcm8ocGF1c2UpIG1hY3JvKHBsYXkpIG1hY3JvKHBsYXlpbmcpIG1hY3JvKHJhdGVjaGFuZ2Up
IG1hY3JvKHNlZWtlZCkgbWFjcm8oc2Vla2luZykgbWFjcm8odGltZXVwZGF0ZSkgbWFjcm8odm9s
dW1lY2hhbmdlKSBtYWNybyh3YWl0aW5nKSBtYWNybyh3ZWJraXRiZWdpbmZ1bGxzY3JlZW4pIG1h
Y3JvKHdlYmtpdGVuZGZ1bGxzY3JlZW4pIG1hY3JvKHdlYmtpdHNvdXJjZW9wZW4pIG1hY3JvKHdl
YmtpdHNvdXJjZWVuZGVkKSBtYWNybyh3ZWJraXRzb3VyY2VjbG9zZSkgbWFjcm8ocHJvZ3Jlc3Mp
IG1hY3JvKHN0YWxsZWQpIG1hY3JvKHN1c3BlbmQpIG1hY3JvKHdlYmtpdEFuaW1hdGlvbkVuZCkg
bWFjcm8od2Via2l0QW5pbWF0aW9uU3RhcnQpIG1hY3JvKHdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlv
bikgbWFjcm8od2Via2l0VHJhbnNpdGlvbkVuZCkgbWFjcm8ob3JpZW50YXRpb25jaGFuZ2UpIG1h
Y3JvKHRpbWVvdXQpIG1hY3JvKHRvdWNoc3RhcnQpIG1hY3JvKHRvdWNobW92ZSkgbWFjcm8odG91
Y2hlbmQpIG1hY3JvKHRvdWNoY2FuY2VsKSBtYWNybyhzdWNjZXNzKSBtYWNybyhsb2FkZW5kKSBt
YWNybyh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKSBtYWNybyh3ZWJraXRzcGVlY2hjaGFuZ2UpIG1h
Y3JvKHdlYmdsY29udGV4dGxvc3QpIG1hY3JvKHdlYmdsY29udGV4dHJlc3RvcmVkKSBtYWNybyh3
ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yKSBtYWNybyhhdWRpb3Byb2Nlc3MpIG1hY3JvKGNvbm5l
Y3RpbmcpIG1hY3JvKGFkZHN0cmVhbSkgbWFjcm8ocmVtb3Zlc3RyZWFtKQojIDE5MyAiLi4vLi4v
Li4vU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCIKICAgIGNsYXNzIEV2ZW50TmFtZXMg
ewogICAgICAgIHByaXZhdGU6IEV2ZW50TmFtZXMoY29uc3QgRXZlbnROYW1lcyYpOyBFdmVudE5h
bWVzJiBvcGVyYXRvcj0oY29uc3QgRXZlbnROYW1lcyYpOyBwdWJsaWM6IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qg
c2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFs
bG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNz
TmV3KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6
ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBl
Q2xhc3NOZXcpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6
ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFz
dE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVD
bGFzc05ld0FycmF5KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFs
OjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHByaXZhdGU6
IHR5cGVkZWYgaW50IFRoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwog
ICAgICAgIGludCBkdW1teTsKCiAgICAgICAgRXZlbnROYW1lcygpOwogICAgICAgIGZyaWVuZCBj
bGFzcyBUaHJlYWRHbG9iYWxEYXRhOwoKICAgIHB1YmxpYzoKI2RlZmluZSBET01fRVZFTlRfTkFN
RVNfREVDTEFSRShuYW1lKSBBdG9taWNTdHJpbmcgbmFtZSAjI0V2ZW50OwogICAgICAgIEF0b21p
Y1N0cmluZyBhYm9ydEV2ZW50OyBBdG9taWNTdHJpbmcgYmVmb3JlY29weUV2ZW50OyBBdG9taWNT
dHJpbmcgYmVmb3JlY3V0RXZlbnQ7IEF0b21pY1N0cmluZyBiZWZvcmVsb2FkRXZlbnQ7IEF0b21p
Y1N0cmluZyBiZWZvcmVwYXN0ZUV2ZW50OyBBdG9taWNTdHJpbmcgYmVmb3JldW5sb2FkRXZlbnQ7
IEF0b21pY1N0cmluZyBibG9ja2VkRXZlbnQ7IEF0b21pY1N0cmluZyBibHVyRXZlbnQ7IEF0b21p
Y1N0cmluZyBjYWNoZWRFdmVudDsgQXRvbWljU3RyaW5nIGNoYW5nZUV2ZW50OyBBdG9taWNTdHJp
bmcgY2hlY2tpbmdFdmVudDsgQXRvbWljU3RyaW5nIGNsaWNrRXZlbnQ7IEF0b21pY1N0cmluZyBj
bG9zZUV2ZW50OyBBdG9taWNTdHJpbmcgY29tcGxldGVFdmVudDsgQXRvbWljU3RyaW5nIGNvbXBv
c2l0aW9uZW5kRXZlbnQ7IEF0b21pY1N0cmluZyBjb21wb3NpdGlvbnN0YXJ0RXZlbnQ7IEF0b21p
Y1N0cmluZyBjb21wb3NpdGlvbnVwZGF0ZUV2ZW50OyBBdG9taWNTdHJpbmcgY29ubmVjdEV2ZW50
OyBBdG9taWNTdHJpbmcgY29udGV4dG1lbnVFdmVudDsgQXRvbWljU3RyaW5nIGNvcHlFdmVudDsg
QXRvbWljU3RyaW5nIGN1dEV2ZW50OyBBdG9taWNTdHJpbmcgZGJsY2xpY2tFdmVudDsgQXRvbWlj
U3RyaW5nIGRldmljZW1vdGlvbkV2ZW50OyBBdG9taWNTdHJpbmcgZGV2aWNlb3JpZW50YXRpb25F
dmVudDsgQXRvbWljU3RyaW5nIGRpc3BsYXlFdmVudDsgQXRvbWljU3RyaW5nIGRvd25sb2FkaW5n
RXZlbnQ7IEF0b21pY1N0cmluZyBkcmFnRXZlbnQ7IEF0b21pY1N0cmluZyBkcmFnZW5kRXZlbnQ7
IEF0b21pY1N0cmluZyBkcmFnZW50ZXJFdmVudDsgQXRvbWljU3RyaW5nIGRyYWdsZWF2ZUV2ZW50
OyBBdG9taWNTdHJpbmcgZHJhZ292ZXJFdmVudDsgQXRvbWljU3RyaW5nIGRyYWdzdGFydEV2ZW50
OyBBdG9taWNTdHJpbmcgZHJvcEV2ZW50OyBBdG9taWNTdHJpbmcgZXJyb3JFdmVudDsgQXRvbWlj
U3RyaW5nIGZvY3VzRXZlbnQ7IEF0b21pY1N0cmluZyBmb2N1c2luRXZlbnQ7IEF0b21pY1N0cmlu
ZyBmb2N1c291dEV2ZW50OyBBdG9taWNTdHJpbmcgaGFzaGNoYW5nZUV2ZW50OyBBdG9taWNTdHJp
bmcgaW5wdXRFdmVudDsgQXRvbWljU3RyaW5nIGludmFsaWRFdmVudDsgQXRvbWljU3RyaW5nIGtl
eWRvd25FdmVudDsgQXRvbWljU3RyaW5nIGtleXByZXNzRXZlbnQ7IEF0b21pY1N0cmluZyBrZXl1
cEV2ZW50OyBBdG9taWNTdHJpbmcgbG9hZEV2ZW50OyBBdG9taWNTdHJpbmcgbG9hZHN0YXJ0RXZl
bnQ7IEF0b21pY1N0cmluZyBtZXNzYWdlRXZlbnQ7IEF0b21pY1N0cmluZyBtb3VzZWRvd25FdmVu
dDsgQXRvbWljU3RyaW5nIG1vdXNlbW92ZUV2ZW50OyBBdG9taWNTdHJpbmcgbW91c2VvdXRFdmVu
dDsgQXRvbWljU3RyaW5nIG1vdXNlb3ZlckV2ZW50OyBBdG9taWNTdHJpbmcgbW91c2V1cEV2ZW50
OyBBdG9taWNTdHJpbmcgbW91c2V3aGVlbEV2ZW50OyBBdG9taWNTdHJpbmcgbm91cGRhdGVFdmVu
dDsgQXRvbWljU3RyaW5nIG9ic29sZXRlRXZlbnQ7IEF0b21pY1N0cmluZyBvZmZsaW5lRXZlbnQ7
IEF0b21pY1N0cmluZyBvbmxpbmVFdmVudDsgQXRvbWljU3RyaW5nIG9wZW5FdmVudDsgQXRvbWlj
U3RyaW5nIG92ZXJmbG93Y2hhbmdlZEV2ZW50OyBBdG9taWNTdHJpbmcgcGFnZWhpZGVFdmVudDsg
QXRvbWljU3RyaW5nIHBhZ2VzaG93RXZlbnQ7IEF0b21pY1N0cmluZyBwYXN0ZUV2ZW50OyBBdG9t
aWNTdHJpbmcgcG9wc3RhdGVFdmVudDsgQXRvbWljU3RyaW5nIHJlYWR5c3RhdGVjaGFuZ2VFdmVu
dDsgQXRvbWljU3RyaW5nIHJlc2V0RXZlbnQ7IEF0b21pY1N0cmluZyByZXNpemVFdmVudDsgQXRv
bWljU3RyaW5nIHNjcm9sbEV2ZW50OyBBdG9taWNTdHJpbmcgc2VhcmNoRXZlbnQ7IEF0b21pY1N0
cmluZyBzZWxlY3RFdmVudDsgQXRvbWljU3RyaW5nIHNlbGVjdHN0YXJ0RXZlbnQ7IEF0b21pY1N0
cmluZyBzZWxlY3Rpb25jaGFuZ2VFdmVudDsgQXRvbWljU3RyaW5nIHN0b3JhZ2VFdmVudDsgQXRv
bWljU3RyaW5nIHN1Ym1pdEV2ZW50OyBBdG9taWNTdHJpbmcgdGV4dElucHV0RXZlbnQ7IEF0b21p
Y1N0cmluZyB1bmxvYWRFdmVudDsgQXRvbWljU3RyaW5nIHVwZGF0ZXJlYWR5RXZlbnQ7IEF0b21p
Y1N0cmluZyB2ZXJzaW9uY2hhbmdlRXZlbnQ7IEF0b21pY1N0cmluZyB3ZWJraXR2aXNpYmlsaXR5
Y2hhbmdlRXZlbnQ7IEF0b21pY1N0cmluZyB3cml0ZUV2ZW50OyBBdG9taWNTdHJpbmcgd3JpdGVl
bmRFdmVudDsgQXRvbWljU3RyaW5nIHdyaXRlc3RhcnRFdmVudDsgQXRvbWljU3RyaW5nIHpvb21F
dmVudDsgQXRvbWljU3RyaW5nIERPTUFjdGl2YXRlRXZlbnQ7IEF0b21pY1N0cmluZyBET01Gb2N1
c0luRXZlbnQ7IEF0b21pY1N0cmluZyBET01Gb2N1c091dEV2ZW50OyBBdG9taWNTdHJpbmcgRE9N
QXR0ck1vZGlmaWVkRXZlbnQ7IEF0b21pY1N0cmluZyBET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWRF
dmVudDsgQXRvbWljU3RyaW5nIERPTU5vZGVJbnNlcnRlZEV2ZW50OyBBdG9taWNTdHJpbmcgRE9N
Tm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQ7IEF0b21pY1N0cmluZyBET01Ob2RlUmVtb3Zl
ZEV2ZW50OyBBdG9taWNTdHJpbmcgRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudDsgQXRv
bWljU3RyaW5nIERPTVN1YnRyZWVNb2RpZmllZEV2ZW50OyBBdG9taWNTdHJpbmcgRE9NQ29udGVu
dExvYWRlZEV2ZW50OyBBdG9taWNTdHJpbmcgd2Via2l0QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ7
IEF0b21pY1N0cmluZyB3ZWJraXRFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnQ7IEF0b21pY1N0
cmluZyBjYW5wbGF5RXZlbnQ7IEF0b21pY1N0cmluZyBjYW5wbGF5dGhyb3VnaEV2ZW50OyBBdG9t
aWNTdHJpbmcgZHVyYXRpb25jaGFuZ2VFdmVudDsgQXRvbWljU3RyaW5nIGVtcHRpZWRFdmVudDsg
QXRvbWljU3RyaW5nIGVuZGVkRXZlbnQ7IEF0b21pY1N0cmluZyBsb2FkZWRkYXRhRXZlbnQ7IEF0
b21pY1N0cmluZyBsb2FkZWRtZXRhZGF0YUV2ZW50OyBBdG9taWNTdHJpbmcgcGF1c2VFdmVudDsg
QXRvbWljU3RyaW5nIHBsYXlFdmVudDsgQXRvbWljU3RyaW5nIHBsYXlpbmdFdmVudDsgQXRvbWlj
U3RyaW5nIHJhdGVjaGFuZ2VFdmVudDsgQXRvbWljU3RyaW5nIHNlZWtlZEV2ZW50OyBBdG9taWNT
dHJpbmcgc2Vla2luZ0V2ZW50OyBBdG9taWNTdHJpbmcgdGltZXVwZGF0ZUV2ZW50OyBBdG9taWNT
dHJpbmcgdm9sdW1lY2hhbmdlRXZlbnQ7IEF0b21pY1N0cmluZyB3YWl0aW5nRXZlbnQ7IEF0b21p
Y1N0cmluZyB3ZWJraXRiZWdpbmZ1bGxzY3JlZW5FdmVudDsgQXRvbWljU3RyaW5nIHdlYmtpdGVu
ZGZ1bGxzY3JlZW5FdmVudDsgQXRvbWljU3RyaW5nIHdlYmtpdHNvdXJjZW9wZW5FdmVudDsgQXRv
bWljU3RyaW5nIHdlYmtpdHNvdXJjZWVuZGVkRXZlbnQ7IEF0b21pY1N0cmluZyB3ZWJraXRzb3Vy
Y2VjbG9zZUV2ZW50OyBBdG9taWNTdHJpbmcgcHJvZ3Jlc3NFdmVudDsgQXRvbWljU3RyaW5nIHN0
YWxsZWRFdmVudDsgQXRvbWljU3RyaW5nIHN1c3BlbmRFdmVudDsgQXRvbWljU3RyaW5nIHdlYmtp
dEFuaW1hdGlvbkVuZEV2ZW50OyBBdG9taWNTdHJpbmcgd2Via2l0QW5pbWF0aW9uU3RhcnRFdmVu
dDsgQXRvbWljU3RyaW5nIHdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkV2ZW50OyBBdG9taWNTdHJp
bmcgd2Via2l0VHJhbnNpdGlvbkVuZEV2ZW50OyBBdG9taWNTdHJpbmcgb3JpZW50YXRpb25jaGFu
Z2VFdmVudDsgQXRvbWljU3RyaW5nIHRpbWVvdXRFdmVudDsgQXRvbWljU3RyaW5nIHRvdWNoc3Rh
cnRFdmVudDsgQXRvbWljU3RyaW5nIHRvdWNobW92ZUV2ZW50OyBBdG9taWNTdHJpbmcgdG91Y2hl
bmRFdmVudDsgQXRvbWljU3RyaW5nIHRvdWNoY2FuY2VsRXZlbnQ7IEF0b21pY1N0cmluZyBzdWNj
ZXNzRXZlbnQ7IEF0b21pY1N0cmluZyBsb2FkZW5kRXZlbnQ7IEF0b21pY1N0cmluZyB3ZWJraXRm
dWxsc2NyZWVuY2hhbmdlRXZlbnQ7IEF0b21pY1N0cmluZyB3ZWJraXRzcGVlY2hjaGFuZ2VFdmVu
dDsgQXRvbWljU3RyaW5nIHdlYmdsY29udGV4dGxvc3RFdmVudDsgQXRvbWljU3RyaW5nIHdlYmds
Y29udGV4dHJlc3RvcmVkRXZlbnQ7IEF0b21pY1N0cmluZyB3ZWJnbGNvbnRleHRjcmVhdGlvbmVy
cm9yRXZlbnQ7IEF0b21pY1N0cmluZyBhdWRpb3Byb2Nlc3NFdmVudDsgQXRvbWljU3RyaW5nIGNv
bm5lY3RpbmdFdmVudDsgQXRvbWljU3RyaW5nIGFkZHN0cmVhbUV2ZW50OyBBdG9taWNTdHJpbmcg
cmVtb3Zlc3RyZWFtRXZlbnQ7CiN1bmRlZiBET01fRVZFTlRfTkFNRVNfREVDTEFSRQogICAgfTsK
CiAgICBpbmxpbmUgRXZlbnROYW1lcyYgZXZlbnROYW1lcygpCiAgICB7CiAgICAgICAgcmV0dXJu
IHRocmVhZEdsb2JhbERhdGEoKS5ldmVudE5hbWVzKCk7CiAgICB9Cgp9CiMgMzYgIi4uLy4uLy4u
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNl
L1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiIDEKIyAyNSAiLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCiNkZWZpbmUgUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXJfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TGlzdGVuZXIuaCIgMQojIDIyICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRMaXN0ZW5lci5oIgojZGVmaW5lIEV2ZW50TGlzdGVuZXJfaCAKCgoKbmFtZXNwYWNlIEpTQyB7
CiAgICBjbGFzcyBKU09iamVjdDsKICAgIGNsYXNzIFNsb3RWaXNpdG9yOwp9CgpuYW1lc3BhY2Ug
V2ViQ29yZSB7CgogICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgIGNsYXNzIEV2
ZW50OwoKICAgIGNsYXNzIEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxFdmVudExp
c3RlbmVyPiB7CiAgICBwdWJsaWM6CiAgICAgICAgZW51bSBUeXBlIHsKICAgICAgICAgICAgSlNF
dmVudExpc3RlbmVyVHlwZSwKICAgICAgICAgICAgSW1hZ2VFdmVudExpc3RlbmVyVHlwZSwKICAg
ICAgICAgICAgSW5zcGVjdG9yRE9NQWdlbnRUeXBlLAogICAgICAgICAgICBJbnNwZWN0b3JET01T
dG9yYWdlUmVzb3VyY2VUeXBlLAogICAgICAgICAgICBPYmpDRXZlbnRMaXN0ZW5lclR5cGUsCiAg
ICAgICAgICAgIENQUEV2ZW50TGlzdGVuZXJUeXBlLAogICAgICAgICAgICBDb25kaXRpb25FdmVu
dExpc3RlbmVyVHlwZSwKICAgICAgICAgICAgR09iamVjdEV2ZW50TGlzdGVuZXJUeXBlLAogICAg
ICAgICAgICBOYXRpdmVFdmVudExpc3RlbmVyVHlwZQogICAgICAgIH07CgogICAgICAgIHZpcnR1
YWwgfkV2ZW50TGlzdGVuZXIoKSB7IH0KICAgICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFdmVudExpc3RlbmVyJikgPSAwOwogICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSA9IDA7CiAgICAgICAgdmlydHVhbCBi
b29sIHdhc0NyZWF0ZWRGcm9tTWFya3VwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KCgogICAg
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRnVuY3Rpb24oSlNDOjpTbG90VmlzaXRvciYpIHsgfQoK
CiAgICAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxpc0F0dHJp
YnV0ZSgpOyB9CiAgICAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Cgog
ICAgcHJvdGVjdGVkOgogICAgICAgIEV2ZW50TGlzdGVuZXIoVHlwZSB0eXBlKQogICAgICAgICAg
ICA6IG1fdHlwZSh0eXBlKQogICAgICAgIHsKICAgICAgICB9CgogICAgcHJpdmF0ZToKICAgICAg
ICB2aXJ0dWFsIGJvb2wgdmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KCiAgICAgICAgVHlwZSBtX3R5cGU7CiAgICB9OwoKfQojIDI4ICIuLi8uLi8uLi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIgMgoKCm5hbWVzcGFjZSBXZWJD
b3JlIHsKCiAgICBjbGFzcyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciB7CiAgICBwdWJsaWM6CiAg
ICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogICAgICAgICAgICA6IGxpc3RlbmVyKGxpc3RlbmVy
KQogICAgICAgICAgICAsIHVzZUNhcHR1cmUodXNlQ2FwdHVyZSkKICAgICAgICB7CiAgICAgICAg
fQoKICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXI7CiAgICAgICAgYm9vbCB1
c2VDYXB0dXJlOwogICAgfTsKCiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyJiBhLCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgYikK
ICAgIHsKICAgICAgICByZXR1cm4gKmEubGlzdGVuZXIgPT0gKmIubGlzdGVuZXIgJiYgYS51c2VD
YXB0dXJlID09IGIudXNlQ2FwdHVyZTsKICAgIH0KCn0KIyAzNyAiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgiIDIKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmgiIDEKIyAzMCAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaCIKI2RlZmluZSBB
dG9taWNTdHJpbmdIYXNoX2ggCgoKCgpuYW1lc3BhY2UgV1RGIHsKCiAgICBzdHJ1Y3QgQXRvbWlj
U3RyaW5nSGFzaCB7CiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQXRvbWljU3Ry
aW5nJiBrZXkpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4ga2V5LmltcGwoKS0+ZXhpc3Rp
bmdIYXNoKCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBBdG9t
aWNTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikKICAgICAgICB7CiAgICAgICAgICAg
IHJldHVybiBhID09IGI7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwogICAgfTsKCgogICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxXVEY6OkF0b21pY1N0cmluZz4gOiBHZW5lcmljSGFzaFRyYWl0
czxXVEY6OkF0b21pY1N0cmluZz4gewogICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSB0cnVlOwogICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1
ZShXVEY6OkF0b21pY1N0cmluZyYgc2xvdCkgeyBuZXcgKCZzbG90KSBXVEY6OkF0b21pY1N0cmlu
ZyhIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CiAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIHNsb3QpIHsgcmV0dXJuIHNsb3QuaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKTsgfQogICAgfTsKCn0KCnVzaW5nIFdURjo6QXRvbWljU3RyaW5n
SGFzaDsKIyA0MCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgiIDIK
Cm5hbWVzcGFjZSBXZWJDb3JlIHsKCiAgICBjbGFzcyBBdWRpb0NvbnRleHQ7CiAgICBjbGFzcyBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0OwogICAgY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKICAg
IGNsYXNzIERPTVdpbmRvdzsKICAgIGNsYXNzIEV2ZW50OwogICAgY2xhc3MgRXZlbnRMaXN0ZW5l
cjsKICAgIGNsYXNzIEV2ZW50U291cmNlOwogICAgY2xhc3MgRmlsZVJlYWRlcjsKICAgIGNsYXNz
IEZpbGVXcml0ZXI7CiAgICBjbGFzcyBJREJEYXRhYmFzZTsKICAgIGNsYXNzIElEQlJlcXVlc3Q7
CiAgICBjbGFzcyBJREJUcmFuc2FjdGlvbjsKICAgIGNsYXNzIElEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0OwogICAgY2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9kZTsKICAgIGNsYXNzIExvY2FsTWVkaWFT
dHJlYW07CiAgICBjbGFzcyBNZWRpYVN0cmVhbTsKICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAg
Y2xhc3MgTm9kZTsKICAgIGNsYXNzIE5vdGlmaWNhdGlvbjsKICAgIGNsYXNzIFBlZXJDb25uZWN0
aW9uOwogICAgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogICAgY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKICAgIGNsYXNzIFNoYXJlZFdvcmtlcjsKICAgIGNsYXNzIFNoYXJlZFdvcmtl
ckNvbnRleHQ7CiAgICBjbGFzcyBXZWJTb2NrZXQ7CiAgICBjbGFzcyBXb3JrZXI7CiAgICBjbGFz
cyBYTUxIdHRwUmVxdWVzdDsKICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOwoKICAgIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CgogICAgc3RydWN0IEZpcmluZ0V2ZW50SXRlcmF0b3Ig
ewogICAgICAgIEZpcmluZ0V2ZW50SXRlcmF0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIHNpemVfdCYgaXRlcmF0b3IsIHNpemVfdCYgZW5kKQogICAgICAgICAgICA6IGV2ZW50VHlw
ZShldmVudFR5cGUpCiAgICAgICAgICAgICwgaXRlcmF0b3IoaXRlcmF0b3IpCiAgICAgICAgICAg
ICwgZW5kKGVuZCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZTsKICAgICAgICBzaXplX3QmIGl0ZXJhdG9yOwogICAgICAgIHNpemVfdCYg
ZW5kOwogICAgfTsKICAgIHR5cGVkZWYgVmVjdG9yPEZpcmluZ0V2ZW50SXRlcmF0b3IsIDE+IEZp
cmluZ0V2ZW50SXRlcmF0b3JWZWN0b3I7CgogICAgdHlwZWRlZiBWZWN0b3I8UmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIsIDE+IEV2ZW50TGlzdGVuZXJWZWN0b3I7CgogICAgc3RydWN0IEV2ZW50TGlz
dGVuZXJNYXBIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxXVEY6OkF0b21pY1N0cmluZz4gewogICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgbWluaW11bVRhYmxlU2l6ZSA9IDMyOwogICAgfTsKCiAgICB0
eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBFdmVudExpc3RlbmVyVmVjdG9yKiwgQXRvbWlj
U3RyaW5nSGFzaCwgRXZlbnRMaXN0ZW5lck1hcEhhc2hUcmFpdHM+IEV2ZW50TGlzdGVuZXJNYXA7
CgogICAgc3RydWN0IEV2ZW50VGFyZ2V0RGF0YSB7CiAgICAgICAgcHJpdmF0ZTogRXZlbnRUYXJn
ZXREYXRhKGNvbnN0IEV2ZW50VGFyZ2V0RGF0YSYpOyBFdmVudFRhcmdldERhdGEmIG9wZXJhdG9y
PShjb25zdCBFdmVudFRhcmdldERhdGEmKTsgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsg
dm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IHJl
dHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxs
b2NNYXRjaFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3
KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXpl
KSB7IHZvaWQqIHAgPSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxsb2NN
YXRjaFZhbGlkYXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXdB
cnJheSk7IHJldHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldU
Rjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NU
eXBlQ2xhc3NOZXdBcnJheSk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSBwcml2YXRlOiB0eXBlZGVm
IGludCBUaGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKICAgIHB1Ymxp
YzoKICAgICAgICBFdmVudFRhcmdldERhdGEoKTsKICAgICAgICB+RXZlbnRUYXJnZXREYXRhKCk7
CgogICAgICAgIEV2ZW50TGlzdGVuZXJNYXAgZXZlbnRMaXN0ZW5lck1hcDsKICAgICAgICBGaXJp
bmdFdmVudEl0ZXJhdG9yVmVjdG9yIGZpcmluZ0V2ZW50SXRlcmF0b3JzOwogICAgfTsKCiAgICBj
bGFzcyBFdmVudFRhcmdldCB7CiAgICBwdWJsaWM6CiAgICAgICAgdm9pZCByZWYoKSB7IHJlZkV2
ZW50VGFyZ2V0KCk7IH0KICAgICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZkV2ZW50VGFyZ2V0KCk7
IH0KCiAgICAgICAgdmlydHVhbCBFdmVudFNvdXJjZSogdG9FdmVudFNvdXJjZSgpOwogICAgICAg
IHZpcnR1YWwgTWVzc2FnZVBvcnQqIHRvTWVzc2FnZVBvcnQoKTsKICAgICAgICB2aXJ0dWFsIE5v
ZGUqIHRvTm9kZSgpOwogICAgICAgIHZpcnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwog
ICAgICAgIHZpcnR1YWwgWE1MSHR0cFJlcXVlc3QqIHRvWE1MSHR0cFJlcXVlc3QoKTsKICAgICAg
ICB2aXJ0dWFsIFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB0b1hNTEh0dHBSZXF1ZXN0VXBsb2FkKCk7
CgogICAgICAgIHZpcnR1YWwgRE9NQXBwbGljYXRpb25DYWNoZSogdG9ET01BcHBsaWNhdGlvbkNh
Y2hlKCk7CgoKICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnRJbnN0YW5jZSogdG9TVkdFbGVtZW50
SW5zdGFuY2UoKTsKCgogICAgICAgIHZpcnR1YWwgV29ya2VyKiB0b1dvcmtlcigpOwogICAgICAg
IHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KCk7CgoKICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlciogdG9TaGFyZWRXb3JrZXIoKTsKICAg
ICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlckNvbnRleHQqIHRvU2hhcmVkV29ya2VyQ29udGV4dCgp
OwojIDEzOCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgiCiAgICAg
ICAgdmlydHVhbCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCk7CgoKCiAgICAgICAgdmlydHVhbCBO
b3RpZmljYXRpb24qIHRvTm90aWZpY2F0aW9uKCk7CgoKICAgICAgICB2aXJ0dWFsIEZpbGVSZWFk
ZXIqIHRvRmlsZVJlYWRlcigpOwojIDE2NCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmgiCiAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOwoKICAgICAgICB2aXJ0dWFsIGJvb2wgYWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICAgICB2aXJ0dWFsIGJvb2wgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbEV2
ZW50TGlzdGVuZXJzKCk7CiAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4pOwogICAgICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50
PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgIHZpcnR1YWwgdm9pZCB1bmNhdWdodEV4Y2VwdGlv
bkluRXZlbnRIYW5kbGVyKCk7CgoKICAgICAgICBib29sIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4pOwogICAgICAgIGJvb2wgY2xlYXJBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKTsKICAgICAgICBFdmVudExpc3RlbmVyKiBnZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKCiAgICAgICAgYm9v
bCBoYXNFdmVudExpc3RlbmVycygpOwogICAgICAgIGJvb2wgaGFzRXZlbnRMaXN0ZW5lcnMoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogICAgICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJW
ZWN0b3ImIGdldEV2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsK
CiAgICAgICAgYm9vbCBmaXJlRXZlbnRMaXN0ZW5lcnMoRXZlbnQqKTsKICAgICAgICBib29sIGlz
RmlyaW5nRXZlbnRMaXN0ZW5lcnMoKTsKCgogICAgICAgIHZvaWQgdmlzaXRKU0V2ZW50TGlzdGVu
ZXJzKEpTQzo6U2xvdFZpc2l0b3ImKTsKICAgICAgICB2b2lkIGludmFsaWRhdGVKU0V2ZW50TGlz
dGVuZXJzKEpTQzo6SlNPYmplY3QqKTsKCgogICAgcHJvdGVjdGVkOgogICAgICAgIHZpcnR1YWwg
fkV2ZW50VGFyZ2V0KCk7CgogICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKSA9IDA7CiAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpID0gMDsKCiAgICBwcml2YXRlOgogICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWZFdmVudFRhcmdldCgpID0gMDsKICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpID0gMDsKCiAgICAgICAgdm9pZCBmaXJlRXZlbnRMaXN0ZW5lcnMoRXZlbnQqLCBFdmVudFRh
cmdldERhdGEqLCBFdmVudExpc3RlbmVyVmVjdG9yJik7CgogICAgICAgIGZyaWVuZCBjbGFzcyBF
dmVudExpc3RlbmVySXRlcmF0b3I7CiAgICB9OwoKICAgIGNsYXNzIEV2ZW50TGlzdGVuZXJJdGVy
YXRvciB7CiAgICBwdWJsaWM6CiAgICAgICAgRXZlbnRMaXN0ZW5lckl0ZXJhdG9yKCk7CgoKICAg
ICAgICBFdmVudExpc3RlbmVySXRlcmF0b3IoRXZlbnRUYXJnZXQqKTsKCiAgICAgICAgRXZlbnRM
aXN0ZW5lciogbmV4dExpc3RlbmVyKCk7CgogICAgcHJpdmF0ZToKICAgICAgICBFdmVudExpc3Rl
bmVyTWFwOjppdGVyYXRvciBtX21hcEl0ZXJhdG9yOwogICAgICAgIEV2ZW50TGlzdGVuZXJNYXA6
Oml0ZXJhdG9yIG1fbWFwRW5kOwogICAgICAgIHVuc2lnbmVkIG1faW5kZXg7CiAgICB9OwoKCgoj
ZGVmaW5lIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYXR0cmlidXRlKSBFdmVudExp
c3RlbmVyKiBvbiAjI2F0dHJpYnV0ZSgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmF0dHJpYnV0ZSAjI0V2ZW50KTsgfSB2b2lkIHNldE9uICMjYXR0cmli
dXRlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXR0cmlidXRlICMjRXZlbnQsIGxpc3RlbmVyKTsgfQoK
CgojZGVmaW5lIERFQ0xBUkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYXR0cmli
dXRlKSB2aXJ0dWFsIEV2ZW50TGlzdGVuZXIqIG9uICMjYXR0cmlidXRlKCk7IHZpcnR1YWwgdm9p
ZCBzZXRPbiAjI2F0dHJpYnV0ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKTsK
CgoKI2RlZmluZSBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodHlwZSxh
dHRyaWJ1dGUpIEV2ZW50TGlzdGVuZXIqIHR5cGU6Om9uICMjYXR0cmlidXRlKCkgeyByZXR1cm4g
Z2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXR0cmlidXRlICMjRXZlbnQp
OyB9IHZvaWQgdHlwZTo6c2V0T24gIyNhdHRyaWJ1dGUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdHRy
aWJ1dGUgIyNFdmVudCwgbGlzdGVuZXIpOyB9CgoKCiNkZWZpbmUgREVGSU5FX1dJTkRPV19BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoYXR0cmlidXRlKSBFdmVudExpc3RlbmVyKiBvbiAjI2F0dHJp
YnV0ZSgpIHsgcmV0dXJuIGRvY3VtZW50KCktPmdldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmF0dHJpYnV0ZSAjI0V2ZW50KTsgfSB2b2lkIHNldE9uICMjYXR0cmli
dXRlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgZG9jdW1lbnQoKS0+c2V0
V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXR0cmlidXRlICMjRXZl
bnQsIGxpc3RlbmVyKTsgfQoKCgojZGVmaW5lIERFRklORV9NQVBQRURfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGF0dHJpYnV0ZSxldmVudE5hbWUpIEV2ZW50TGlzdGVuZXIqIG9uICMjYXR0cmli
dXRlKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZXZl
bnROYW1lICMjRXZlbnQpOyB9IHZvaWQgc2V0T24gIyNhdHRyaWJ1dGUoUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5ldmVudE5hbWUgIyNFdmVudCwgbGlzdGVuZXIpOyB9CgoKCiNkZWZpbmUgREVGSU5FX0ZP
UldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlY2lwaWVudCxhdHRyaWJ1dGUpIEV2
ZW50TGlzdGVuZXIqIG9uICMjYXR0cmlidXRlKCkgeyByZXR1cm4gcmVjaXBpZW50ID8gcmVjaXBp
ZW50LT5nZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdHRyaWJ1dGUgIyNF
dmVudCkgOiAwOyB9IHZvaWQgc2V0T24gIyNhdHRyaWJ1dGUoUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcikgeyBpZiAocmVjaXBpZW50KSByZWNpcGllbnQtPnNldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmF0dHJpYnV0ZSAjI0V2ZW50LCBsaXN0ZW5lcik7IH0K
CgoKCiAgICB2b2lkIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKICAgIHZvaWQgYWxsb3dFdmVudERp
c3BhdGNoKCk7CiAgICBib29sIGV2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKTsKCgoKCgoKICAgIGlu
bGluZSB2b2lkIEV2ZW50VGFyZ2V0Ojp2aXNpdEpTRXZlbnRMaXN0ZW5lcnMoSlNDOjpTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgIHsKICAgICAgICBFdmVudFRhcmdldERhdGEqIGQgPSBldmVudFRh
cmdldERhdGEoKTsKICAgICAgICBpZiAoIWQpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAg
RXZlbnRMaXN0ZW5lck1hcDo6aXRlcmF0b3IgZW5kID0gZC0+ZXZlbnRMaXN0ZW5lck1hcC5lbmQo
KTsKICAgICAgICBmb3IgKEV2ZW50TGlzdGVuZXJNYXA6Oml0ZXJhdG9yIGl0ID0gZC0+ZXZlbnRM
aXN0ZW5lck1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgRXZlbnRM
aXN0ZW5lclZlY3RvciYgZW50cnkgPSAqaXQtPnNlY29uZDsKICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBlbnRyeS5zaXplKCk7ICsraSkKICAgICAgICAgICAgICAgIGVudHJ5W2ld
Lmxpc3RlbmVyLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7CiAgICAgICAgfQogICAgfQoKCiAg
ICBpbmxpbmUgYm9vbCBFdmVudFRhcmdldDo6aXNGaXJpbmdFdmVudExpc3RlbmVycygpCiAgICB7
CiAgICAgICAgRXZlbnRUYXJnZXREYXRhKiBkID0gZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgICAg
aWYgKCFkKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIGQtPmZpcmlu
Z0V2ZW50SXRlcmF0b3JzLnNpemUoKSAhPSAwOwogICAgfQoKICAgIGlubGluZSBib29sIEV2ZW50
VGFyZ2V0OjpoYXNFdmVudExpc3RlbmVycygpCiAgICB7CiAgICAgICAgRXZlbnRUYXJnZXREYXRh
KiBkID0gZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgICAgaWYgKCFkKQogICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuICFkLT5ldmVudExpc3RlbmVyTWFwLmlzRW1wdHkoKTsK
ICAgIH0KCiAgICBpbmxpbmUgYm9vbCBFdmVudFRhcmdldDo6aGFzRXZlbnRMaXN0ZW5lcnMoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCiAgICB7CiAgICAgICAgRXZlbnRUYXJnZXREYXRh
KiBkID0gZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgICAgaWYgKCFkKQogICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIGQtPmV2ZW50TGlzdGVuZXJNYXAuY29udGFpbnMoZXZl
bnRUeXBlKTsKICAgIH0KCn0KIyAyOSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxIYXNoLmgiIDEK
IyAyNyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEhhc2guaCIKI2RlZmlu
ZSBLVVJMSGFzaF9oIAoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmgiIDEKIyAzMCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEhhc2guaCIg
MgoKCgpuYW1lc3BhY2UgV2ViQ29yZSB7CgogICAgc3RydWN0IEtVUkxIYXNoIHsKICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBLVVJMJiBrZXkpCiAgICAgICAgewogICAgICAgICAg
ICByZXR1cm4ga2V5LnN0cmluZygpLmltcGwoKS0+aGFzaCgpOwogICAgICAgIH0KCiAgICAgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS1VSTCYgYSwgY29uc3QgS1VSTCYgYikKICAgICAgICB7
CiAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoOjplcXVhbChhLnN0cmluZygpLCBiLnN0cmlu
ZygpKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CiAgICB9OwoKfQoKbmFtZXNwYWNlIFdURiB7CgogICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpLVVJMPiA6IFNpbXBsZUNsYXNz
SGFzaFRyYWl0czxXZWJDb3JlOjpLVVJMPiB7IH07Cgp9CiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgiIDIKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiNkZWZpbmUg
UmVuZGVyU3R5bGVDb25zdGFudHNfaCAKCm5hbWVzcGFjZSBXZWJDb3JlIHsKIyA0OSAiLi4vLi4v
Li4vU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgi
CmVudW0gU3R5bGVEaWZmZXJlbmNlIHsKICAgIFN0eWxlRGlmZmVyZW5jZUVxdWFsLAoKICAgIFN0
eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXIsCgogICAgU3R5bGVEaWZmZXJlbmNlUmVwYWlu
dCwKICAgIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnRMYXllciwKICAgIFN0eWxlRGlmZmVyZW5jZUxh
eW91dFBvc2l0aW9uZWRNb3ZlbWVudE9ubHksCiAgICBTdHlsZURpZmZlcmVuY2VTaW1wbGlmaWVk
TGF5b3V0LAogICAgU3R5bGVEaWZmZXJlbmNlU2ltcGxpZmllZExheW91dEFuZFBvc2l0aW9uZWRN
b3ZlbWVudCwKICAgIFN0eWxlRGlmZmVyZW5jZUxheW91dAp9OwoKCgoKCmVudW0gU3R5bGVEaWZm
ZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5IHsKICAgIENvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0eU5vbmUgPSAwLAogICAgQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5VHJhbnNmb3JtID0gKDEg
PDwgMCksCiAgICBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlPcGFjaXR5ID0gKDEgPDwgMSkKfTsK
CgplbnVtIFBzZXVkb0lkIHsKCiAgICBOT1BTRVVETywgRklSU1RfTElORSwgRklSU1RfTEVUVEVS
LCBCRUZPUkUsIEFGVEVSLCBTRUxFQ1RJT04sIEZJUlNUX0xJTkVfSU5IRVJJVEVELCBTQ1JPTExC
QVIsCgogICAgU0NST0xMQkFSX1RIVU1CLCBTQ1JPTExCQVJfQlVUVE9OLCBTQ1JPTExCQVJfVFJB
Q0ssIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwgU0NST0xMQkFSX0NPUk5FUiwgUkVTSVpFUiwKICAg
IElOUFVUX0xJU1RfQlVUVE9OLCBWSVNJVEVEX0xJTkssCiAgICBBRlRFUl9MQVNUX0lOVEVSTkFM
X1BTRVVET0lELAogICAgRlVMTF9TQ1JFRU4sIEZVTExfU0NSRUVOX0RPQ1VNRU5ULCBGVUxMX1ND
UkVFTl9BTkNFU1RPUiwgQU5JTUFUSU5HX0ZVTExfU0NSRUVOX1RSQU5TSVRJT04sCiAgICBGSVJT
VF9QVUJMSUNfUFNFVURPSUQgPSBGSVJTVF9MSU5FLAogICAgRklSU1RfSU5URVJOQUxfUFNFVURP
SUQgPSBTQ1JPTExCQVJfVEhVTUIsCiAgICBQVUJMSUNfUFNFVURPSURfTUFTSyA9ICgoMSA8PCBG
SVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkgLSAxKSAmIH4oKDEgPDwgRklSU1RfUFVCTElDX1BTRVVE
T0lEKSAtIDEpCn07CgplbnVtIEVCb3JkZXJDb2xsYXBzZSB7IEJTRVBBUkFURSA9IDAsIEJDT0xM
QVBTRSA9IDEgfTsKCgoKZW51bSBFQm9yZGVyU3R5bGUgeyBCTk9ORSwgQkhJRERFTiwgSU5TRVQs
IEdST09WRSwgUklER0UsIE9VVFNFVCwgRE9UVEVELCBEQVNIRUQsIFNPTElELCBET1VCTEUgfTsK
CmVudW0gRUJvcmRlclByZWNlZGVuY2UgeyBCT0ZGLCBCVEFCTEUsIEJDT0xHUk9VUCwgQkNPTCwg
QlJPV0dST1VQLCBCUk9XLCBCQ0VMTCB9OwoKZW51bSBPdXRsaW5lSXNBdXRvIHsgQVVUT19PRkYg
PSAwLCBBVVRPX09OIH07CgplbnVtIEVQb3NpdGlvbiB7CiAgICBTdGF0aWNQb3NpdGlvbiwgUmVs
YXRpdmVQb3NpdGlvbiwgQWJzb2x1dGVQb3NpdGlvbiwgRml4ZWRQb3NpdGlvbgp9OwoKZW51bSBF
RmxvYXQgewogICAgTm9GbG9hdCwgTGVmdEZsb2F0LCBSaWdodEZsb2F0LCBQb3NpdGlvbmVkRmxv
YXQKfTsKCmVudW0gRU1hcmdpbkNvbGxhcHNlIHsgTUNPTExBUFNFLCBNU0VQQVJBVEUsIE1ESVND
QVJEIH07CgoKCmVudW0gRUJveFNpemluZyB7IENPTlRFTlRfQk9YLCBCT1JERVJfQk9YIH07CgoK
CmVudW0gRU92ZXJmbG93IHsKICAgIE9WSVNJQkxFLCBPSElEREVOLCBPU0NST0xMLCBPQVVUTywg
T09WRVJMQVksIE9NQVJRVUVFCn07CgplbnVtIEVWZXJ0aWNhbEFsaWduIHsKICAgIEJBU0VMSU5F
LCBNSURETEUsIFNVQiwgU1VQRVIsIFRFWFRfVE9QLAogICAgVEVYVF9CT1RUT00sIFRPUCwgQk9U
VE9NLCBCQVNFTElORV9NSURETEUsIExFTkdUSAp9OwoKZW51bSBFQ2xlYXIgewogICAgQ05PTkUg
PSAwLCBDTEVGVCA9IDEsIENSSUdIVCA9IDIsIENCT1RIID0gMwp9OwoKZW51bSBFVGFibGVMYXlv
dXQgewogICAgVEFVVE8sIFRGSVhFRAp9OwoKCmVudW0gV3JpdGluZ01vZGUgewogICAgVG9wVG9C
b3R0b21Xcml0aW5nTW9kZSwgUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgTGVmdFRvUmlnaHRXcml0
aW5nTW9kZSwgQm90dG9tVG9Ub3BXcml0aW5nTW9kZQp9OwoKZW51bSBUZXh0Q29tYmluZSB7CiAg
ICBUZXh0Q29tYmluZU5vbmUsIFRleHRDb21iaW5lSG9yaXpvbnRhbAp9OwoKZW51bSBFRmlsbEF0
dGFjaG1lbnQgewogICAgU2Nyb2xsQmFja2dyb3VuZEF0dGFjaG1lbnQsIExvY2FsQmFja2dyb3Vu
ZEF0dGFjaG1lbnQsIEZpeGVkQmFja2dyb3VuZEF0dGFjaG1lbnQKfTsKCmVudW0gRUZpbGxCb3gg
ewogICAgQm9yZGVyRmlsbEJveCwgUGFkZGluZ0ZpbGxCb3gsIENvbnRlbnRGaWxsQm94LCBUZXh0
RmlsbEJveAp9OwoKZW51bSBFRmlsbFJlcGVhdCB7CiAgICBSZXBlYXRGaWxsLCBOb1JlcGVhdEZp
bGwsIFJvdW5kRmlsbCwgU3BhY2VGaWxsCn07CgplbnVtIEVGaWxsTGF5ZXJUeXBlIHsKICAgIEJh
Y2tncm91bmRGaWxsTGF5ZXIsIE1hc2tGaWxsTGF5ZXIKfTsKCgplbnVtIEVGaWxsU2l6ZVR5cGUg
eyBDb250YWluLCBDb3ZlciwgU2l6ZUxlbmd0aCwgU2l6ZU5vbmUgfTsKCgoKZW51bSBFTWFycXVl
ZUJlaGF2aW9yIHsgTU5PTkUsIE1TQ1JPTEwsIE1TTElERSwgTUFMVEVSTkFURSB9OwplbnVtIEVN
YXJxdWVlRGlyZWN0aW9uIHsgTUFVVE8gPSAwLCBNTEVGVCA9IDEsIE1SSUdIVCA9IC0xLCBNVVAg
PSAyLCBNRE9XTiA9IC0yLCBNRk9SV0FSRCA9IDMsIE1CQUNLV0FSRCA9IC0zIH07CgoKCmVudW0g
RUJveEFsaWdubWVudCB7IEJTVFJFVENILCBCU1RBUlQsIEJDRU5URVIsIEJFTkQsIEJKVVNUSUZZ
LCBCQkFTRUxJTkUgfTsKZW51bSBFQm94T3JpZW50IHsgSE9SSVpPTlRBTCwgVkVSVElDQUwgfTsK
ZW51bSBFQm94TGluZXMgeyBTSU5HTEUsIE1VTFRJUExFIH07CmVudW0gRUJveERpcmVjdGlvbiB7
IEJOT1JNQUwsIEJSRVZFUlNFIH07CgoKCmVudW0gRUZsZXhQYWNrIHsgUGFja1N0YXJ0LCBQYWNr
RW5kLCBQYWNrQ2VudGVyLCBQYWNrSnVzdGlmeSB9OwplbnVtIEVGbGV4QWxpZ24geyBBbGlnbkJl
Zm9yZSwgQWxpZ25BZnRlciwgQWxpZ25NaWRkbGUsIEFsaWduU3RyZXRjaCwgQWxpZ25CYXNlbGlu
ZSB9OwplbnVtIEVGbGV4RmxvdyB7IEZsb3dSb3csIEZsb3dSb3dSZXZlcnNlLCBGbG93Q29sdW1u
LCBGbG93Q29sdW1uUmV2ZXJzZSwKICAgIEZsb3dIb3Jpem9udGFsLCBGbG93SG9yaXpvbnRhbFJl
dmVyc2UsIEZsb3dIb3Jpem9udGFsTGVmdFRvUmlnaHQsIEZsb3dIb3Jpem9udGFsUmlnaHRUb0xl
ZnQsCiAgICBGbG93VmVydGljYWwsIEZsb3dWZXJ0aWNhbFJldmVyc2UsIEZsb3dWZXJ0aWNhbFRv
cFRvQm90dG9tLCBGbG93VmVydGljYWxCb3R0b21Ub1RvcH07CgplbnVtIEVUZXh0U2VjdXJpdHkg
ewogICAgVFNOT05FLCBUU0RJU0MsIFRTQ0lSQ0xFLCBUU1NRVUFSRQp9OwoKCgplbnVtIEVVc2Vy
TW9kaWZ5IHsKICAgIFJFQURfT05MWSwgUkVBRF9XUklURSwgUkVBRF9XUklURV9QTEFJTlRFWFRf
T05MWQp9OwoKCgplbnVtIEVVc2VyRHJhZyB7CiAgICBEUkFHX0FVVE8sIERSQUdfTk9ORSwgRFJB
R19FTEVNRU5UCn07CgoKCmVudW0gRVVzZXJTZWxlY3QgewogICAgU0VMRUNUX05PTkUsIFNFTEVD
VF9URVhUCn07CgoKCmVudW0gRVdvcmRCcmVhayB7CiAgICBOb3JtYWxXb3JkQnJlYWssIEJyZWFr
QWxsV29yZEJyZWFrLCBCcmVha1dvcmRCcmVhawp9OwoKZW51bSBFV29yZFdyYXAgewogICAgTm9y
bWFsV29yZFdyYXAsIEJyZWFrV29yZFdyYXAKfTsKCmVudW0gRU5CU1BNb2RlIHsKICAgIE5CTk9S
TUFMLCBTUEFDRQp9OwoKZW51bSBFS0hUTUxMaW5lQnJlYWsgewogICAgTEJOT1JNQUwsIEFGVEVS
X1dISVRFX1NQQUNFCn07CgplbnVtIEVNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yIHsK
ICAgIEJDTk9STUFMLCBNQVRDSAp9OwoKZW51bSBFUmVzaXplIHsKICAgIFJFU0laRV9OT05FLCBS
RVNJWkVfQk9USCwgUkVTSVpFX0hPUklaT05UQUwsIFJFU0laRV9WRVJUSUNBTAp9OwoKCmVudW0g
RUxpc3RTdHlsZVR5cGUgewogICAgRGlzYywKICAgIENpcmNsZSwKICAgIFNxdWFyZSwKICAgIERl
Y2ltYWxMaXN0U3R5bGUsCiAgICBEZWNpbWFsTGVhZGluZ1plcm8sCiAgICBBcmFiaWNJbmRpYywK
ICAgIEJpbmFyeUxpc3RTdHlsZSwKICAgIEJlbmdhbGksCiAgICBDYW1ib2RpYW4sCiAgICBLaG1l
ciwKICAgIERldmFuYWdhcmksCiAgICBHdWphcmF0aSwKICAgIEd1cm11a2hpLAogICAgS2FubmFk
YSwKICAgIExvd2VySGV4YWRlY2ltYWwsCiAgICBMYW8sCiAgICBNYWxheWFsYW0sCiAgICBNb25n
b2xpYW4sCiAgICBNeWFubWFyLAogICAgT2N0YWwsCiAgICBPcml5YSwKICAgIFBlcnNpYW4sCiAg
ICBVcmR1LAogICAgVGVsdWd1LAogICAgVGliZXRhbiwKICAgIFRoYWksCiAgICBVcHBlckhleGFk
ZWNpbWFsLAogICAgTG93ZXJSb21hbiwKICAgIFVwcGVyUm9tYW4sCiAgICBMb3dlckdyZWVrLAog
ICAgTG93ZXJBbHBoYSwKICAgIExvd2VyTGF0aW4sCiAgICBVcHBlckFscGhhLAogICAgVXBwZXJM
YXRpbiwKICAgIEFmYXIsCiAgICBFdGhpb3BpY0hhbGVoYW1lQWFFdCwKICAgIEV0aGlvcGljSGFs
ZWhhbWVBYUVyLAogICAgQW1oYXJpYywKICAgIEV0aGlvcGljSGFsZWhhbWVBbUV0LAogICAgQW1o
YXJpY0FiZWdlZGUsCiAgICBFdGhpb3BpY0FiZWdlZGVBbUV0LAogICAgQ2prRWFydGhseUJyYW5j
aCwKICAgIENqa0hlYXZlbmx5U3RlbSwKICAgIEV0aGlvcGljLAogICAgRXRoaW9waWNIYWxlaGFt
ZUdleiwKICAgIEV0aGlvcGljQWJlZ2VkZSwKICAgIEV0aGlvcGljQWJlZ2VkZUdleiwKICAgIEhh
bmd1bENvbnNvbmFudCwKICAgIEhhbmd1bCwKICAgIExvd2VyTm9yd2VnaWFuLAogICAgT3JvbW8s
CiAgICBFdGhpb3BpY0hhbGVoYW1lT21FdCwKICAgIFNpZGFtYSwKICAgIEV0aGlvcGljSGFsZWhh
bWVTaWRFdCwKICAgIFNvbWFsaSwKICAgIEV0aGlvcGljSGFsZWhhbWVTb0V0LAogICAgVGlncmUs
CiAgICBFdGhpb3BpY0hhbGVoYW1lVGlnLAogICAgVGlncmlueWFFciwKICAgIEV0aGlvcGljSGFs
ZWhhbWVUaUVyLAogICAgVGlncmlueWFFckFiZWdlZGUsCiAgICBFdGhpb3BpY0FiZWdlZGVUaUVy
LAogICAgVGlncmlueWFFdCwKICAgIEV0aGlvcGljSGFsZWhhbWVUaUV0LAogICAgVGlncmlueWFF
dEFiZWdlZGUsCiAgICBFdGhpb3BpY0FiZWdlZGVUaUV0LAogICAgVXBwZXJHcmVlaywKICAgIFVw
cGVyTm9yd2VnaWFuLAogICAgQXN0ZXJpc2tzLAogICAgRm9vdG5vdGVzLAogICAgSGVicmV3LAog
ICAgQXJtZW5pYW4sCiAgICBMb3dlckFybWVuaWFuLAogICAgVXBwZXJBcm1lbmlhbiwKICAgIEdl
b3JnaWFuLAogICAgQ0pLSWRlb2dyYXBoaWMsCiAgICBIaXJhZ2FuYSwKICAgIEthdGFrYW5hLAog
ICAgSGlyYWdhbmFJcm9oYSwKICAgIEthdGFrYW5hSXJvaGEsCiAgICBOb25lTGlzdFN0eWxlCn07
CgplbnVtIFN0eWxlQ29udGVudFR5cGUgewogICAgQ09OVEVOVF9OT05FLCBDT05URU5UX09CSkVD
VCwgQ09OVEVOVF9URVhULCBDT05URU5UX0NPVU5URVIsIENPTlRFTlRfUVVPVEUKfTsKCmVudW0g
UXVvdGVUeXBlIHsKICAgIE9QRU5fUVVPVEUsIENMT1NFX1FVT1RFLCBOT19PUEVOX1FVT1RFLCBO
T19DTE9TRV9RVU9URQp9OwoKZW51bSBFQm9yZGVyRml0IHsgQm9yZGVyRml0Qm9yZGVyLCBCb3Jk
ZXJGaXRMaW5lcyB9OwoKZW51bSBFQW5pbWF0aW9uRmlsbE1vZGUgeyBBbmltYXRpb25GaWxsTW9k
ZU5vbmUsIEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHMsIEFuaW1hdGlvbkZpbGxNb2RlQmFja3dh
cmRzLCBBbmltYXRpb25GaWxsTW9kZUJvdGggfTsKCmVudW0gRUFuaW1QbGF5U3RhdGUgewogICAg
QW5pbVBsYXlTdGF0ZVBsYXlpbmcgPSAweDAsCiAgICBBbmltUGxheVN0YXRlUGF1c2VkID0gMHgx
Cn07CgplbnVtIEVXaGl0ZVNwYWNlIHsKICAgIE5PUk1BTCwgUFJFLCBQUkVfV1JBUCwgUFJFX0xJ
TkUsIE5PV1JBUCwgS0hUTUxfTk9XUkFQCn07CgplbnVtIEVUZXh0QWxpZ24gewogICAgVEFBVVRP
LCBMRUZULCBSSUdIVCwgQ0VOVEVSLCBKVVNUSUZZLCBXRUJLSVRfTEVGVCwgV0VCS0lUX1JJR0hU
LCBXRUJLSVRfQ0VOVEVSLCBUQVNUQVJULCBUQUVORCwKfTsKCmVudW0gRVRleHRUcmFuc2Zvcm0g
ewogICAgQ0FQSVRBTElaRSwgVVBQRVJDQVNFLCBMT1dFUkNBU0UsIFRUTk9ORQp9OwoKZW51bSBF
VGV4dERlY29yYXRpb24gewogICAgVEROT05FID0gMHgwICwgVU5ERVJMSU5FID0gMHgxLCBPVkVS
TElORSA9IDB4MiwgTElORV9USFJPVUdIPSAweDQsIEJMSU5LID0gMHg4Cn07CgplbnVtIEVQYWdl
QnJlYWsgewogICAgUEJBVVRPLCBQQkFMV0FZUywgUEJBVk9JRAp9OwoKZW51bSBFRW1wdHlDZWxs
IHsKICAgIFNIT1csIEhJREUKfTsKCmVudW0gRUNhcHRpb25TaWRlIHsKICAgIENBUFRPUCwgQ0FQ
Qk9UVE9NLCBDQVBMRUZULCBDQVBSSUdIVAp9OwoKZW51bSBFTGlzdFN0eWxlUG9zaXRpb24geyBP
VVRTSURFLCBJTlNJREUgfTsKCmVudW0gRVZpc2liaWxpdHkgeyBWSVNJQkxFLCBISURERU4sIENP
TExBUFNFIH07CgplbnVtIEVDdXJzb3IgewoKICAgIENVUlNPUl9BVVRPLAogICAgQ1VSU09SX0NS
T1NTLAogICAgQ1VSU09SX0RFRkFVTFQsCiAgICBDVVJTT1JfUE9JTlRFUiwKICAgIENVUlNPUl9N
T1ZFLAogICAgQ1VSU09SX1ZFUlRJQ0FMX1RFWFQsCiAgICBDVVJTT1JfQ0VMTCwKICAgIENVUlNP
Ul9DT05URVhUX01FTlUsCiAgICBDVVJTT1JfQUxJQVMsCiAgICBDVVJTT1JfUFJPR1JFU1MsCiAg
ICBDVVJTT1JfTk9fRFJPUCwKICAgIENVUlNPUl9OT1RfQUxMT1dFRCwKICAgIENVUlNPUl9XRUJL
SVRfWk9PTV9JTiwKICAgIENVUlNPUl9XRUJLSVRfWk9PTV9PVVQsCiAgICBDVVJTT1JfRV9SRVNJ
WkUsCiAgICBDVVJTT1JfTkVfUkVTSVpFLAogICAgQ1VSU09SX05XX1JFU0laRSwKICAgIENVUlNP
Ul9OX1JFU0laRSwKICAgIENVUlNPUl9TRV9SRVNJWkUsCiAgICBDVVJTT1JfU1dfUkVTSVpFLAog
ICAgQ1VSU09SX1NfUkVTSVpFLAogICAgQ1VSU09SX1dfUkVTSVpFLAogICAgQ1VSU09SX0VXX1JF
U0laRSwKICAgIENVUlNPUl9OU19SRVNJWkUsCiAgICBDVVJTT1JfTkVTV19SRVNJWkUsCiAgICBD
VVJTT1JfTldTRV9SRVNJWkUsCiAgICBDVVJTT1JfQ09MX1JFU0laRSwKICAgIENVUlNPUl9ST1df
UkVTSVpFLAogICAgQ1VSU09SX1RFWFQsCiAgICBDVVJTT1JfV0FJVCwKICAgIENVUlNPUl9IRUxQ
LAogICAgQ1VSU09SX0FMTF9TQ1JPTEwsCiAgICBDVVJTT1JfV0VCS0lUX0dSQUIsCiAgICBDVVJT
T1JfV0VCS0lUX0dSQUJCSU5HLAoKCiAgICBDVVJTT1JfQ09QWSwKICAgIENVUlNPUl9OT05FCn07
CgplbnVtIEVEaXNwbGF5IHsKICAgIElOTElORSwgQkxPQ0ssIExJU1RfSVRFTSwgUlVOX0lOLCBD
T01QQUNULCBJTkxJTkVfQkxPQ0ssCiAgICBUQUJMRSwgSU5MSU5FX1RBQkxFLCBUQUJMRV9ST1df
R1JPVVAsCiAgICBUQUJMRV9IRUFERVJfR1JPVVAsIFRBQkxFX0ZPT1RFUl9HUk9VUCwgVEFCTEVf
Uk9XLAogICAgVEFCTEVfQ09MVU1OX0dST1VQLCBUQUJMRV9DT0xVTU4sIFRBQkxFX0NFTEwsCiAg
ICBUQUJMRV9DQVBUSU9OLCBCT1gsIElOTElORV9CT1gsCgoKCgoKCiAgICBOT05FCn07CgplbnVt
IEVJbnNpZGVMaW5rIHsKICAgIE5vdEluc2lkZUxpbmssIEluc2lkZVVudmlzaXRlZExpbmssIElu
c2lkZVZpc2l0ZWRMaW5rCn07CgplbnVtIEVQb2ludGVyRXZlbnRzIHsKICAgIFBFX05PTkUsIFBF
X0FVVE8sIFBFX1NUUk9LRSwgUEVfRklMTCwgUEVfUEFJTlRFRCwgUEVfVklTSUJMRSwKICAgIFBF
X1ZJU0lCTEVfU1RST0tFLCBQRV9WSVNJQkxFX0ZJTEwsIFBFX1ZJU0lCTEVfUEFJTlRFRCwgUEVf
QUxMCn07CgplbnVtIEVUcmFuc2Zvcm1TdHlsZTNEIHsKICAgIFRyYW5zZm9ybVN0eWxlM0RGbGF0
LCBUcmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUzRAp9OwoKZW51bSBFQmFja2ZhY2VWaXNpYmlsaXR5
IHsKICAgIEJhY2tmYWNlVmlzaWJpbGl0eVZpc2libGUsIEJhY2tmYWNlVmlzaWJpbGl0eUhpZGRl
bgp9OwoKZW51bSBFTGluZUNsYW1wVHlwZSB7IExpbmVDbGFtcExpbmVDb3VudCwgTGluZUNsYW1w
UGVyY2VudGFnZSB9OwoKZW51bSBIeXBoZW5zIHsgSHlwaGVuc05vbmUsIEh5cGhlbnNNYW51YWws
IEh5cGhlbnNBdXRvIH07CgplbnVtIEVTcGVhayB7IFNwZWFrTm9uZSwgU3BlYWtOb3JtYWwsIFNw
ZWFrU3BlbGxPdXQsIFNwZWFrRGlnaXRzLCBTcGVha0xpdGVyYWxQdW5jdHVhdGlvbiwgU3BlYWtO
b1B1bmN0dWF0aW9uIH07CgplbnVtIFRleHRFbXBoYXNpc0ZpbGwgeyBUZXh0RW1waGFzaXNGaWxs
RmlsbGVkLCBUZXh0RW1waGFzaXNGaWxsT3BlbiB9OwoKZW51bSBUZXh0RW1waGFzaXNNYXJrIHsg
VGV4dEVtcGhhc2lzTWFya05vbmUsIFRleHRFbXBoYXNpc01hcmtBdXRvLCBUZXh0RW1waGFzaXNN
YXJrRG90LCBUZXh0RW1waGFzaXNNYXJrQ2lyY2xlLCBUZXh0RW1waGFzaXNNYXJrRG91YmxlQ2ly
Y2xlLCBUZXh0RW1waGFzaXNNYXJrVHJpYW5nbGUsIFRleHRFbXBoYXNpc01hcmtTZXNhbWUsIFRl
eHRFbXBoYXNpc01hcmtDdXN0b20gfTsKCmVudW0gVGV4dEVtcGhhc2lzUG9zaXRpb24geyBUZXh0
RW1waGFzaXNQb3NpdGlvbk92ZXIsIFRleHRFbXBoYXNpc1Bvc2l0aW9uVW5kZXIgfTsKCmVudW0g
VGV4dE92ZXJmbG93IHsgVGV4dE92ZXJmbG93Q2xpcCA9IDAsIFRleHRPdmVyZmxvd0VsbGlwc2lz
IH07CgplbnVtIEVJbWFnZVJlbmRlcmluZyB7IEltYWdlUmVuZGVyaW5nQXV0bywgSW1hZ2VSZW5k
ZXJpbmdPcHRpbWl6ZVNwZWVkLCBJbWFnZVJlbmRlcmluZ09wdGltaXplUXVhbGl0eSwgSW1hZ2VS
ZW5kZXJpbmdPcHRpbWl6ZUNvbnRyYXN0IH07CgplbnVtIE9yZGVyIHsgTG9naWNhbE9yZGVyID0g
MCwgVmlzdWFsT3JkZXIgfTsKCmVudW0gUmVnaW9uT3ZlcmZsb3cgeyBBdXRvUmVnaW9uT3ZlcmZs
b3csIEJyZWFrUmVnaW9uT3ZlcmZsb3cgfTsKCn0KIyAzMiAiLi4vLi4vLi4vU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFdyYXBwYWJsZS5oIiAxCiMgMzIgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oIgojZGVmaW5lIFNjcmlwdFdyYXBwYWJsZV9oIAoKIyAx
ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCIgMQoj
IDIzICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCIK
I2RlZmluZSBKU0RPTVdyYXBwZXJfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCIgMQojIDI4ICIuLi8uLi8uLi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIgojZGVmaW5lIEpTRE9NR2xvYmFs
T2JqZWN0X2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgiIDEKIyAyMyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCIKI2RlZmluZSBKU0dsb2JhbE9iamVjdF9oIAoKIyAxICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgiIDEKIyAyMiAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIgojZGVmaW5l
IEpTQXJyYXlfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaCIgMQojIDI0ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oIgojZGVmaW5lIEpTT2JqZWN0X2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCIgMQojIDIzICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgiCiNkZWZpbmUgQXJnTGlzdF9oIAoKIyAx
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgi
IDEKIyAyNCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5oIgojZGVmaW5lIENhbGxGcmFtZV9oIAoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgiIDIKIyAxICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIiAx
CiMgMjggIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9S
ZWdpc3RlckZpbGUuaCIgMQojIDMwICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgiCiNkZWZpbmUgUmVnaXN0ZXJGaWxlX2ggCgojIDEgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIiAx
CiMgMzMgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rl
ckZpbGUuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3Rlci5oIiAxCiMgMzQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9SZWdpc3RlckZpbGUuaCIgMgoKCgoKbmFtZXNwYWNlIEpTQyB7CgogICAgY2xhc3Mg
Q29uc2VydmF0aXZlUm9vdHM7CgogICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICBwcml2
YXRlOiBSZWdpc3RlckZpbGUoY29uc3QgUmVnaXN0ZXJGaWxlJik7IFJlZ2lzdGVyRmlsZSYgb3Bl
cmF0b3I9KGNvbnN0IFJlZ2lzdGVyRmlsZSYpOwogICAgcHVibGljOgogICAgICAgIGVudW0gQ2Fs
bEZyYW1lSGVhZGVyRW50cnkgewogICAgICAgICAgICBDYWxsRnJhbWVIZWFkZXJTaXplID0gNiwK
CiAgICAgICAgICAgIEFyZ3VtZW50Q291bnQgPSAtNiwKICAgICAgICAgICAgQ2FsbGVyRnJhbWUg
PSAtNSwKICAgICAgICAgICAgQ2FsbGVlID0gLTQsCiAgICAgICAgICAgIFNjb3BlQ2hhaW4gPSAt
MywKICAgICAgICAgICAgUmV0dXJuUEMgPSAtMiwKICAgICAgICAgICAgQ29kZUJsb2NrID0gLTEs
CiAgICAgICAgfTsKCiAgICAgICAgZW51bSB7IFByb2dyYW1Db2RlVGhpc1JlZ2lzdGVyID0gLUNh
bGxGcmFtZUhlYWRlclNpemUgLSAxIH07CgogICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgZGVm
YXVsdENhcGFjaXR5ID0gNTEyICogMTAyNDsKICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNv
bW1pdFNpemUgPSAxNiAqIDEwMjQ7CgogICAgICAgIHN0YXRpYyBjb25zdCBwdHJkaWZmX3QgbWF4
RXhjZXNzQ2FwYWNpdHkgPSA4ICogMTAyNDsKCiAgICAgICAgUmVnaXN0ZXJGaWxlKHNpemVfdCBj
YXBhY2l0eSA9IGRlZmF1bHRDYXBhY2l0eSk7CiAgICAgICAgflJlZ2lzdGVyRmlsZSgpOwoKICAg
ICAgICB2b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJik7Cgog
ICAgICAgIFJlZ2lzdGVyKiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlZ2lz
dGVyKj4obV9yZXNlcnZhdGlvbi5iYXNlKCkpOyB9CiAgICAgICAgUmVnaXN0ZXIqIGVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZW5kOyB9CiAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBlbmQoKSAtIGJlZ2luKCk7IH0KCiAgICAgICAgYm9vbCBncm93KFJlZ2lzdGVyKiBuZXdFbmQp
OwogICAgICAgIHZvaWQgc2hyaW5rKFJlZ2lzdGVyKiBuZXdFbmQpOwoKICAgICAgICBzdGF0aWMg
c2l6ZV90IGNvbW1pdHRlZEJ5dGVDb3VudCgpOwogICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emVUaHJlYWRpbmcoKTsKCiAgICAgICAgUmVnaXN0ZXIqIGNvbnN0ICogYWRkcmVzc09mRW5kKCkg
Y29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAmbV9lbmQ7CiAgICAgICAgfQoKICAg
IHByaXZhdGU6CiAgICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICB2
b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwogICAgICAgIFJlZ2lzdGVyKiBtX2Vu
ZDsKICAgICAgICBSZWdpc3RlciogbV9jb21taXRFbmQ7CiAgICAgICAgUGFnZVJlc2VydmF0aW9u
IG1fcmVzZXJ2YXRpb247CiAgICB9OwoKICAgIGlubGluZSBSZWdpc3RlckZpbGU6OlJlZ2lzdGVy
RmlsZShzaXplX3QgY2FwYWNpdHkpCiAgICAgICAgOiBtX2VuZCgwKQogICAgewogICAgICAgIGRv
IGlmICghKGNhcGFjaXR5ICYmIGlzUGFnZUFsaWduZWQoY2FwYWNpdHkpKSkgeyBXVEZSZXBvcnRB
c3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvUmVnaXN0ZXJGaWxlLmgiLCA5NCwgX19QUkVUVFlfRlVOQ1RJT05fXywgImNhcGFjaXR5ICYm
IGlzUGFnZUFsaWduZWQoY2FwYWNpdHkpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgbV9yZXNlcnZhdGlvbiA9IFBhZ2VSZXNl
cnZhdGlvbjo6cmVzZXJ2ZShyb3VuZFVwQWxsb2NhdGlvblNpemUoY2FwYWNpdHkgKiBzaXplb2Yo
UmVnaXN0ZXIpLCBjb21taXRTaXplKSwgT1NBbGxvY2F0b3I6OkpTVk1TdGFja1BhZ2VzKTsKICAg
ICAgICBtX2VuZCA9IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4obV9yZXNlcnZhdGlvbi5iYXNlKCkp
OwogICAgICAgIG1fY29tbWl0RW5kID0gc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPihtX3Jlc2VydmF0
aW9uLmJhc2UoKSk7CiAgICB9CgogICAgaW5saW5lIHZvaWQgUmVnaXN0ZXJGaWxlOjpzaHJpbmso
UmVnaXN0ZXIqIG5ld0VuZCkKICAgIHsKICAgICAgICBpZiAobmV3RW5kID49IG1fZW5kKQogICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgbV9lbmQgPSBuZXdFbmQ7CiAgICAgICAgaWYgKG1fZW5k
ID09IG1fcmVzZXJ2YXRpb24uYmFzZSgpICYmIChtX2NvbW1pdEVuZCAtIGJlZ2luKCkpID49IG1h
eEV4Y2Vzc0NhcGFjaXR5KQogICAgICAgICAgICByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAg
IH0KCiAgICBpbmxpbmUgYm9vbCBSZWdpc3RlckZpbGU6Omdyb3coUmVnaXN0ZXIqIG5ld0VuZCkK
ICAgIHsKICAgICAgICBpZiAobmV3RW5kIDw9IG1fZW5kKQogICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKCiAgICAgICAgaWYgKG5ld0VuZCA8PSBtX2NvbW1pdEVuZCkgewogICAgICAgICAgICBtX2Vu
ZCA9IG5ld0VuZDsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBs
b25nIGRlbHRhID0gcm91bmRVcEFsbG9jYXRpb25TaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KG5ld0VuZCkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdEVuZCksIGNvbW1pdFNp
emUpOwogICAgICAgIGlmIChyZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdEVuZCkgKyBk
ZWx0YSA+IHN0YXRpY19jYXN0PGNoYXIqPihtX3Jlc2VydmF0aW9uLmJhc2UoKSkgKyBtX3Jlc2Vy
dmF0aW9uLnNpemUoKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICBtX3Jlc2Vy
dmF0aW9uLmNvbW1pdChtX2NvbW1pdEVuZCwgZGVsdGEpOwogICAgICAgIGFkZFRvQ29tbWl0dGVk
Qnl0ZUNvdW50KGRlbHRhKTsKICAgICAgICBtX2NvbW1pdEVuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UmVnaXN0ZXIqPihyZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdEVuZCkgKyBkZWx0YSk7
CiAgICAgICAgbV9lbmQgPSBuZXdFbmQ7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cgp9CiMg
MjkgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
aCIgMgoKbmFtZXNwYWNlIEpTQyB7CgogICAgY2xhc3MgQXJndW1lbnRzOwogICAgY2xhc3MgSlNB
Y3RpdmF0aW9uOwogICAgY2xhc3MgSW50ZXJwcmV0ZXI7CiAgICBjbGFzcyBTY29wZUNoYWluTm9k
ZTsKCgoKICAgIGNsYXNzIEV4ZWNTdGF0ZSA6IHByaXZhdGUgUmVnaXN0ZXIgewogICAgcHVibGlj
OgogICAgICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVn
aXN0ZXJGaWxlOjpDYWxsZWVdLmpzVmFsdWUoKTsgfQogICAgICAgIEpTT2JqZWN0KiBjYWxsZWUo
KSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6Q2FsbGVlXS5mdW5jdGlvbigpOyB9
CiAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lz
dGVyRmlsZTo6Q29kZUJsb2NrXS5SZWdpc3Rlcjo6Y29kZUJsb2NrKCk7IH0KICAgICAgICBTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbigpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgICBkbyBp
ZiAoISh0aGlzW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0uUmVnaXN0ZXI6OnNjb3BlQ2hhaW4o
KSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIiwgNDYsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICJ0aGlzW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0uUmVnaXN0ZXI6OnNjb3BlQ2hhaW4oKSIp
OyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVl
ZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0uUmVnaXN0ZXI6
OnNjb3BlQ2hhaW4oKTsKICAgICAgICB9CgoKICAgICAgICBKU0dsb2JhbE9iamVjdCogZHluYW1p
Y0dsb2JhbE9iamVjdCgpOwoKCgogICAgICAgIGlubGluZSBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCgpIGNvbnN0OwoKCgogICAgICAgIGlubGluZSBKU09iamVjdCogZ2xvYmFs
VGhpc1ZhbHVlKCkgY29uc3Q7CgogICAgICAgIGlubGluZSBKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEoKSBjb25zdDsKCgoKCgoKICAgICAgICB2b2lkIGNsZWFyRXhjZXB0aW9uKCkgeyBnbG9iYWxE
YXRhKCkuZXhjZXB0aW9uID0gSlNWYWx1ZSgpOyB9CiAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24o
KSBjb25zdCB7IHJldHVybiBnbG9iYWxEYXRhKCkuZXhjZXB0aW9uOyB9CiAgICAgICAgYm9vbCBo
YWRFeGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBnbG9iYWxEYXRhKCkuZXhjZXB0aW9uOyB9Cgog
ICAgICAgIGNvbnN0IENvbW1vbklkZW50aWZpZXJzJiBwcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyBy
ZXR1cm4gKmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzOyB9CiAgICAgICAgY29uc3QgTWFya2Vk
QXJndW1lbnRCdWZmZXImIGVtcHR5TGlzdCgpIGNvbnN0IHsgcmV0dXJuICpnbG9iYWxEYXRhKCku
ZW1wdHlMaXN0OyB9CiAgICAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyKCkgeyByZXR1cm4g
Z2xvYmFsRGF0YSgpLmludGVycHJldGVyOyB9CiAgICAgICAgSGVhcCogaGVhcCgpIHsgcmV0dXJu
ICZnbG9iYWxEYXRhKCkuaGVhcDsgfQoKICAgICAgICB2b2lkIGR1bXBDYWxsZXIoKTsKCiAgICAg
ICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogYXJyYXlDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFt
ZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5hcnJheUNvbnN0
cnVjdG9yVGFibGU7IH0KICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBhcnJheVByb3Rv
dHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKS5hcnJheVByb3RvdHlwZVRhYmxlOyB9CiAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSogYm9vbGVhblByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVy
biBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5ib29sZWFuUHJvdG90eXBlVGFibGU7IH0KICAgICAg
ICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBkYXRlVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
IHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmRhdGVUYWJsZTsgfQogICAgICAgIHN0
YXRpYyBjb25zdCBIYXNoVGFibGUqIGRhdGVDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2Fs
bEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5kYXRlQ29uc3RydWN0b3JU
YWJsZTsgfQogICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGVycm9yUHJvdG90eXBlVGFi
bGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
LmVycm9yUHJvdG90eXBlVGFibGU7IH0KICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBn
bG9iYWxPYmplY3RUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCkuZ2xvYmFsT2JqZWN0VGFibGU7IH0KICAgICAgICBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlKiBqc29uVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLmpzb25UYWJsZTsgfQogICAgICAgIHN0YXRpYyBjb25zdCBIYXNo
VGFibGUqIG1hdGhUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCkubWF0aFRhYmxlOyB9CiAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSogbnVtYmVyQ29uc3RydWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4g
Y2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkubnVtYmVyQ29uc3RydWN0b3JUYWJsZTsgfQogICAgICAg
IHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG51bWJlclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSog
Y2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5udW1iZXJQcm90b3R5
cGVUYWJsZTsgfQogICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG9iamVjdENvbnN0cnVj
dG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLm9iamVjdENvbnN0cnVjdG9yVGFibGU7IH0KICAgICAgICBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlKiBvYmplY3RQcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1
cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkub2JqZWN0UHJvdG90eXBlVGFibGU7IH0KICAgICAg
ICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkucmVnRXhwVGFibGU7IH0KICAgICAg
ICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFt
ZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5yZWdFeHBDb25z
dHJ1Y3RvclRhYmxlOyB9CiAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogcmVnRXhwUHJv
dG90eXBlVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLnJlZ0V4cFByb3RvdHlwZVRhYmxlOyB9CiAgICAgICAgc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSogc3RyaW5nVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLnN0cmluZ1RhYmxlOyB9CiAgICAgICAgc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSogc3RyaW5nQ29uc3RydWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyBy
ZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuc3RyaW5nQ29uc3RydWN0b3JUYWJsZTsgfQoK
ICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBjcmVhdGUoUmVnaXN0ZXIqIGNhbGxGcmFtZUJhc2Up
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxGcmFtZSo+KGNhbGxGcmFtZUJhc2UpOyB9CiAgICAg
ICAgUmVnaXN0ZXIqIHJlZ2lzdGVycygpIHsgcmV0dXJuIHRoaXM7IH0KCiAgICAgICAgQ2FsbEZy
YW1lJiBvcGVyYXRvcj0oY29uc3QgUmVnaXN0ZXImIHIpIHsgKnN0YXRpY19jYXN0PFJlZ2lzdGVy
Kj4odGhpcykgPSByOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0uY2Fs
bEZyYW1lKCk7IH0KCiAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5QQygpIGNvbnN0IHsg
cmV0dXJuIFJldHVybkFkZHJlc3NQdHIodGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMo
KSk7IH0KCgoKCgogICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q2FsbGVy
RnJhbWVdID0gY2FsbGVyRnJhbWU7IH0KICAgICAgICB2b2lkIHNldFNjb3BlQ2hhaW4oU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdp
c3RlckZpbGU6OlNjb3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsgfQoKICAgICAgICBpbmxpbmUgdm9p
ZCBpbml0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBDLCBTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbiwKICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwgaW50
IGFyZ2MsIEpTT2JqZWN0KiBjYWxsZWUpCiAgICAgICAgewogICAgICAgICAgICBkbyBpZiAoIShj
YWxsZXJGcmFtZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIiwgMTE3LCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAiY2FsbGVyRnJhbWUiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihp
bnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBkbyBpZiAoIShjYWxsZXJGcmFtZSA9
PSBub0NhbGxlcigpIHx8IGNhbGxlckZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpLT5y
ZWdpc3RlckZpbGUoKS0+ZW5kKCkgPj0gdGhpcykpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
IiwgMTE4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiY2FsbGVyRnJhbWUgPT0gbm9DYWxsZXIoKSB8
fCBjYWxsZXJGcmFtZS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKS0+cmVnaXN0ZXJGaWxlKCkt
PmVuZCgpID49IHRoaXMiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWlu
dHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7
IH0gd2hpbGUgKDApOwoKICAgICAgICAgICAgc2V0Q29kZUJsb2NrKGNvZGVCbG9jayk7CiAgICAg
ICAgICAgIHNldFNjb3BlQ2hhaW4oc2NvcGVDaGFpbik7CiAgICAgICAgICAgIHNldENhbGxlckZy
YW1lKGNhbGxlckZyYW1lKTsKICAgICAgICAgICAgc2V0UmV0dXJuUEModlBDKTsKICAgICAgICAg
ICAgc2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJnYyk7CiAgICAgICAgICAgIHNldENh
bGxlZShjYWxsZWUpOwogICAgICAgIH0KCgogICAgICAgIGlubGluZSBSZWdpc3RlciYgcihpbnQp
OwoKICAgICAgICBpbmxpbmUgUmVnaXN0ZXImIHVuY2hlY2tlZFIoaW50KTsKCgogICAgICAgIGlu
dCBob3N0VGhpc1JlZ2lzdGVyKCkgeyByZXR1cm4gLVJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7IH0KICAgICAgICBKU1ZhbHVl
IGhvc3RUaGlzVmFsdWUoKSB7IHJldHVybiB0aGlzW2hvc3RUaGlzUmVnaXN0ZXIoKV0uanNWYWx1
ZSgpOyB9CiAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQoKSBjb25zdCB7IHJldHVybiBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpIC0gMTsgfQogICAgICAgIHNpemVfdCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1
bWVudENvdW50XS5pKCk7IH0KICAgICAgICBKU1ZhbHVlIGFyZ3VtZW50KGludCBhcmd1bWVudE51
bWJlcikKICAgICAgICB7CiAgICAgICAgICAgIGludCBhcmd1bWVudEluZGV4ID0gLVJlZ2lzdGVy
RmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENv
dW50XS5pKCkgKyBhcmd1bWVudE51bWJlciArIDE7CiAgICAgICAgICAgIGlmIChhcmd1bWVudElu
ZGV4ID49IC1SZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUpCiAgICAgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXNbYXJndW1lbnRJ
bmRleF0uanNWYWx1ZSgpOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIENhbGxGcmFtZSogbm9D
YWxsZXIoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PENhbGxGcmFtZSo+KEhvc3RDYWxsRnJh
bWVGbGFnKTsgfQoKICAgICAgICBib29sIGhhc0hvc3RDYWxsRnJhbWVGbGFnKCkgY29uc3QgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGhpcykgJiBIb3N0Q2FsbEZyYW1lRmxh
ZzsgfQogICAgICAgIENhbGxGcmFtZSogYWRkSG9zdENhbGxGcmFtZUZsYWcoKSBjb25zdCB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PENhbGxGcmFtZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KHRoaXMpIHwgSG9zdENhbGxGcmFtZUZsYWcpOyB9CiAgICAgICAgQ2FsbEZyYW1lKiByZW1v
dmVIb3N0Q2FsbEZyYW1lRmxhZygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbEZyYW1l
Kj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGhpcykgJiB+SG9zdENhbGxGcmFtZUZsYWcp
OyB9CgogICAgICAgIHZvaWQgc2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoaW50IGNvdW50
KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENv
dW50XSA9IFJlZ2lzdGVyOjp3aXRoSW50KGNvdW50KTsgfQogICAgICAgIHZvaWQgc2V0Q2FsbGVl
KEpTT2JqZWN0KiBjYWxsZWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3Rl
ckZpbGU6OkNhbGxlZV0gPSBSZWdpc3Rlcjo6d2l0aENhbGxlZShjYWxsZWUpOyB9CiAgICAgICAg
dm9pZCBzZXRDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsgc3RhdGljX2Nhc3Q8UmVn
aXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNvZGVCbG9ja10gPSBjb2RlQmxvY2s7IH0KICAg
ICAgICB2b2lkIHNldFJldHVyblBDKHZvaWQqIHZhbHVlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVy
Kj4odGhpcylbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10gPSAoSW5zdHJ1Y3Rpb24qKXZhbHVlOyB9
CgogICAgcHJpdmF0ZToKICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgSG9zdENhbGxGcmFt
ZUZsYWcgPSAxOwoKICAgICAgICBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSgpOwoKICAgICAg
ICBFeGVjU3RhdGUoKTsKICAgICAgICB+RXhlY1N0YXRlKCk7CiAgICB9OwoKfQojIDI2ICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgiIDIKIyAxICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaCIgMQojIDI3
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgiIDIKIyAx
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaCIg
MQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJp
ZXIuaCIKI2RlZmluZSBXcml0ZUJhcnJpZXJfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlVHlwZXMuaCIgMQojIDMwICIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaCIgMgoKIyAxICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaCIgMQojIDMyICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaCIgMgojIDEg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVHlwZVRyYWl0cy5oIiAxCiMgMzMg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oIiAy
CgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIEpTQ2VsbDsKY2xhc3MgSlNHbG9iYWxEYXRhOwpjbGFz
cyBKU0dsb2JhbE9iamVjdDsKCnRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIFdyaXRlQmFycmllckJh
c2U7CnRlbXBsYXRlPD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTxKU1ZhbHVlPjsKCnZvaWQgc2xv
d1ZhbGlkYXRlQ2VsbChKU0NlbGwqKTsKdm9pZCBzbG93VmFsaWRhdGVDZWxsKEpTR2xvYmFsT2Jq
ZWN0Kik7CgoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgdmFsaWRhdGVDZWxsKFQgY2Vs
bCkKewogICAgZG8geyBkbyB7IGlmICghKGNlbGwpKSBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgp
OyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0g
d2hpbGUgKGZhbHNlKTsgaWYgKGNlbGwtPnVudmFsaWRhdGVkU3RydWN0dXJlKCktPnVudmFsaWRh
dGVkU3RydWN0dXJlKCkgIT0gY2VsbC0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0
ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSkgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7fSB3aGlsZSAoMCk7IGlmICghY2VsbC0+aW5oZXJpdHMoJldU
Rjo6UmVtb3ZlUG9pbnRlcjxUPjo6VHlwZTo6c19pbmZvKSkgZG8geyBXVEZSZXBvcnRCYWNrdHJh
Y2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgp
OyB9IHdoaWxlIChmYWxzZSk7fSB3aGlsZSAoMCk7Cn0KCnRlbXBsYXRlPD4gaW5saW5lIHZvaWQg
dmFsaWRhdGVDZWxsPEpTQ2VsbCo+KEpTQ2VsbCogY2VsbCkKewogICAgc2xvd1ZhbGlkYXRlQ2Vs
bChjZWxsKTsKfQoKdGVtcGxhdGU8PiBpbmxpbmUgdm9pZCB2YWxpZGF0ZUNlbGw8SlNHbG9iYWxP
YmplY3QqPihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQp7CiAgICBzbG93VmFsaWRhdGVD
ZWxsKGdsb2JhbE9iamVjdCk7Cn0KCgoKCgoKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBX
cml0ZUJhcnJpZXJCYXNlIHsKcHVibGljOgogICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBKU0NlbGwqIG93bmVyLCBUKiB2YWx1ZSkKICAgIHsKICAgICAgICBkbyBp
ZiAoISh2YWx1ZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgiLCA3MiwgX19QUkVUVFlfRlVO
Q1RJT05fXywgInZhbHVlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVp
bnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsKICAgICAgICB2YWxpZGF0ZUNlbGwodmFsdWUpOwogICAgICAgIHNldEVh
cmx5VmFsdWUoZ2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKICAgIH0KCiAgICB2b2lkIHNldE1h
eUJlTnVsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IEpTQ2VsbCogb3duZXIsIFQq
IHZhbHVlKQogICAgewogICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgdmFsaWRhdGVDZWxs
KHZhbHVlKTsKICAgICAgICBzZXRFYXJseVZhbHVlKGdsb2JhbERhdGEsIG93bmVyLCB2YWx1ZSk7
CiAgICB9CgoKCiAgICB2b2lkIHNldEVhcmx5VmFsdWUoSlNHbG9iYWxEYXRhJiwgY29uc3QgSlND
ZWxsKiBvd25lciwgVCogdmFsdWUpCiAgICB7CiAgICAgICAgdGhpcy0+bV9jZWxsID0gcmVpbnRl
cnByZXRfY2FzdDxKU0NlbGwqPih2YWx1ZSk7CiAgICAgICAgSGVhcDo6d3JpdGVCYXJyaWVyKG93
bmVyLCB0aGlzLT5tX2NlbGwpOwogICAgfQoKICAgIFQqIGdldCgpIGNvbnN0CiAgICB7CiAgICAg
ICAgaWYgKG1fY2VsbCkKICAgICAgICAgICAgdmFsaWRhdGVDZWxsKG1fY2VsbCk7CiAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG1fY2VsbCk7CiAgICB9CgogICAgVCogb3BlcmF0
b3IqKCkgY29uc3QKICAgIHsKICAgICAgICBkbyBpZiAoIShtX2NlbGwpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dy
aXRlQmFycmllci5oIiwgMTAxLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9jZWxsIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICB2
YWxpZGF0ZUNlbGw8VD4oc3RhdGljX2Nhc3Q8VCo+KG1fY2VsbCkpOwogICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUKj4obV9jZWxsKTsKICAgIH0KCiAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QK
ICAgIHsKICAgICAgICBkbyBpZiAoIShtX2NlbGwpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5o
IiwgMTA4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9jZWxsIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICB2YWxpZGF0ZUNlbGwo
c3RhdGljX2Nhc3Q8VCo+KG1fY2VsbCkpOwogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4o
bV9jZWxsKTsKICAgIH0KCiAgICB2b2lkIGNsZWFyKCkgeyBtX2NlbGwgPSAwOyB9CgogICAgSlND
ZWxsKiogc2xvdCgpIHsgcmV0dXJuICZtX2NlbGw7IH0KCiAgICB0eXBlZGVmIFQqIChXcml0ZUJh
cnJpZXJCYXNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CiAgICBvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKigpIGNvbnN0IHsgcmV0dXJuIG1fY2VsbCA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5z
cGVjaWZpZWRCb29sVHlwZSo+KDEpIDogMDsgfQoKICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Qg
eyByZXR1cm4gIW1fY2VsbDsgfQoKICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmllcihUKiB2
YWx1ZSkKICAgIHsKCgoKICAgICAgICB0aGlzLT5tX2NlbGwgPSByZWludGVycHJldF9jYXN0PEpT
Q2VsbCo+KHZhbHVlKTsKICAgIH0KCgogICAgVCogdW52YWxpZGF0ZWRHZXQoKSBjb25zdCB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PFQqPihtX2NlbGwpOyB9CgoKcHJpdmF0ZToKICAgIEpTQ2Vs
bCogbV9jZWxsOwp9OwoKdGVtcGxhdGUgPD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiB7CnB1YmxpYzoKICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IEpTQ2VsbCogb3du
ZXIsIEpTVmFsdWUgdmFsdWUpCiAgICB7CiAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29k
ZSh2YWx1ZSk7CiAgICAgICAgSGVhcDo6d3JpdGVCYXJyaWVyKG93bmVyLCB2YWx1ZSk7CiAgICB9
CgogICAgdm9pZCBzZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTVmFsdWUgdmFsdWUpCiAgICB7CiAg
ICAgICAgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiAgICB9CgogICAgSlNWYWx1
ZSBnZXQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV92YWx1
ZSk7CiAgICB9CiAgICB2b2lkIGNsZWFyKCkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7IH0KICAgIHZvaWQgc2V0VW5kZWZpbmVkKCkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOyB9CiAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1
cm4gZ2V0KCkuaXNOdW1iZXIoKTsgfQogICAgYm9vbCBpc09iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IGdldCgpLmlzT2JqZWN0KCk7IH0KICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gZ2V0
KCkuaXNOdWxsKCk7IH0KICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBn
ZXQoKS5pc0dldHRlclNldHRlcigpOyB9CgogICAgSlNWYWx1ZSogc2xvdCgpCiAgICB7CiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICBFbmNvZGVkSlNWYWx1ZSogdjsKICAgICAgICAgICAgSlNW
YWx1ZSogc2xvdDsKICAgICAgICB9IHU7CiAgICAgICAgdS52ID0gJm1fdmFsdWU7CiAgICAgICAg
cmV0dXJuIHUuc2xvdDsKICAgIH0KCiAgICB0eXBlZGVmIEpTVmFsdWUgKFdyaXRlQmFycmllckJh
c2U6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5
cGUqKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkgPyByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVk
Qm9vbFR5cGUqPigxKSA6IDA7IH0KICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4g
IWdldCgpOyB9Cgpwcml2YXRlOgogICAgRW5jb2RlZEpTVmFsdWUgbV92YWx1ZTsKfTsKCnRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXcml0ZUJhcnJpZXIgOiBwdWJsaWMgV3JpdGVCYXJyaWVy
QmFzZTxUPiB7CnB1YmxpYzoKICAgIFdyaXRlQmFycmllcigpCiAgICB7CiAgICAgICAgdGhpcy0+
c2V0V2l0aG91dFdyaXRlQmFycmllcigwKTsKICAgIH0KCiAgICBXcml0ZUJhcnJpZXIoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBKU0NlbGwqIG93bmVyLCBUKiB2YWx1ZSkKICAgIHsK
ICAgICAgICB0aGlzLT5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKICAgIH0KCiAgICBl
bnVtIE1heUJlTnVsbFRhZyB7IE1heUJlTnVsbCB9OwogICAgV3JpdGVCYXJyaWVyKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlNDZWxsKiBvd25lciwgVCogdmFsdWUsIE1heUJlTnVs
bFRhZykKICAgIHsKICAgICAgICB0aGlzLT5zZXRNYXlCZU51bGwoZ2xvYmFsRGF0YSwgb3duZXIs
IHZhbHVlKTsKICAgIH0KfTsKCnRlbXBsYXRlIDw+IGNsYXNzIFdyaXRlQmFycmllcjxVbmtub3du
PiA6IHB1YmxpYyBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IHsKcHVibGljOgogICAgV3JpdGVC
YXJyaWVyKCkKICAgIHsKICAgICAgICB0aGlzLT5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTVmFs
dWUoKSk7CiAgICB9CgogICAgV3JpdGVCYXJyaWVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSlNDZWxsKiBvd25lciwgSlNWYWx1ZSB2YWx1ZSkKICAgIHsKICAgICAgICB0aGlzLT5z
ZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKICAgIH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdyaXRlQmFycmll
ckJhc2U8VT4mIGxocywgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxWPiYgcmhzKQp7CiAgICByZXR1
cm4gbGhzLmdldCgpID09IHJocy5nZXQoKTsKfQoKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+KiBzbG90KQp7CiAg
ICBpbnRlcm5hbEFwcGVuZCgqc2xvdC0+c2xvdCgpKTsKfQoKaW5saW5lIHZvaWQgTWFya1N0YWNr
OjphcHBlbmRWYWx1ZXMoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogYmFycmllcnMsIHNpemVf
dCBjb3VudCkKewogICAgSlNWYWx1ZSogdmFsdWVzID0gYmFycmllcnMtPnNsb3QoKTsKCiAgICB2
YWxpZGF0ZVNldCh2YWx1ZXMsIGNvdW50KTsKCiAgICBpZiAoY291bnQpCiAgICAgICAgbV9tYXJr
U2V0cy5hcHBlbmQoTWFya1NldCh2YWx1ZXMsIHZhbHVlcyArIGNvdW50KSk7Cn0KCn0KIyAyOCAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oIiAyCgoKCm5h
bWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIFNsb3RWaXNpdG9yOwoKICAgIGNsYXNzIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIHsKICAgICAgICBwcml2YXRlOiBNYXJrZWRBcmd1bWVudEJ1ZmZlcihjb25z
dCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpOyBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgb3BlcmF0b3I9
KGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyJik7CiAgICBwcml2YXRlOgogICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IDg7CiAgICAgICAgdHlwZWRlZiBWZWN0
b3I8UmVnaXN0ZXIsIGlubGluZUNhcGFjaXR5PiBWZWN0b3JUeXBlOwogICAgICAgIHR5cGVkZWYg
SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+IExpc3RTZXQ7CgogICAgcHVibGljOgogICAg
ICAgIHR5cGVkZWYgVmVjdG9yVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgdHlwZWRl
ZiBWZWN0b3JUeXBlOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKCgoKICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlcigpCiAgICAgICAgICAgIDogbV9pc1VzaW5nSW5saW5lQnVmZmVy
KHRydWUpCiAgICAgICAgICAgICwgbV9tYXJrU2V0KDApCgogICAgICAgICAgICAsIG1faXNSZWFk
T25seShmYWxzZSkKCiAgICAgICAgewogICAgICAgICAgICBtX2J1ZmZlciA9IG1fdmVjdG9yLmRh
dGEoKTsKICAgICAgICAgICAgbV9zaXplID0gMDsKICAgICAgICB9CgoKICAgICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlcihSZWdpc3RlciogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAg
OiBtX2J1ZmZlcihidWZmZXIpCiAgICAgICAgICAgICwgbV9zaXplKHNpemUpCiAgICAgICAgICAg
ICwgbV9pc1VzaW5nSW5saW5lQnVmZmVyKHRydWUpCiAgICAgICAgICAgICwgbV9tYXJrU2V0KDAp
CgogICAgICAgICAgICAsIG1faXNSZWFkT25seSh0cnVlKQoKICAgICAgICB7CiAgICAgICAgfQoK
ICAgICAgICB2b2lkIGluaXRpYWxpemUoV3JpdGVCYXJyaWVyPFVua25vd24+KiBidWZmZXIsIHNp
emVfdCBzaXplKQogICAgICAgIHsKICAgICAgICAgICAgZG8gaWYgKCEoIW1fbWFya1NldCkpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5oIiwgNzMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbV9tYXJrU2V0
Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRi
ZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsK
ICAgICAgICAgICAgZG8gaWYgKCEoaXNFbXB0eSgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWls
dXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgiLCA3
NCwgX19QUkVUVFlfRlVOQ1RJT05fXywgImlzRW1wdHkoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0
cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTAp
KCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CgogICAgICAgICAgICBtX2J1ZmZlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPihidWZmZXIpOwogICAgICAgICAgICBtX3NpemUg
PSBzaXplOwoKICAgICAgICAgICAgbV9pc1JlYWRPbmx5ID0gdHJ1ZTsKCiAgICAgICAgfQoKICAg
ICAgICB+TWFya2VkQXJndW1lbnRCdWZmZXIoKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKG1f
bWFya1NldCkKICAgICAgICAgICAgICAgIG1fbWFya1NldC0+cmVtb3ZlKHRoaXMpOwogICAgICAg
IH0KCiAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zaXplOyB9CgogICAgICAgIEpTVmFs
dWUgYXQoc2l6ZV90IGkpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgICBpZiAoaSA8IG1fc2l6
ZSkKICAgICAgICAgICAgICAgIHJldHVybiBtX2J1ZmZlcltpXS5qc1ZhbHVlKCk7CiAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBjbGVhcigp
CiAgICAgICAgewogICAgICAgICAgICBtX3ZlY3Rvci5jbGVhcigpOwogICAgICAgICAgICBtX2J1
ZmZlciA9IDA7CiAgICAgICAgICAgIG1fc2l6ZSA9IDA7CiAgICAgICAgfQoKICAgICAgICB2b2lk
IGFwcGVuZChKU1ZhbHVlIHYpCiAgICAgICAgewogICAgICAgICAgICBkbyBpZiAoISghbV9pc1Jl
YWRPbmx5KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgiLCAxMDgsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICIhbV9pc1JlYWRPbmx5Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVp
bnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsKCiAgICAgICAgICAgIGlmIChtX2lzVXNpbmdJbmxpbmVCdWZmZXIgJiYg
bV9zaXplIDwgaW5saW5lQ2FwYWNpdHkpIHsKICAgICAgICAgICAgICAgIG1fdmVjdG9yLnVuY2hl
Y2tlZEFwcGVuZCh2KTsKICAgICAgICAgICAgICAgICsrbV9zaXplOwogICAgICAgICAgICB9IGVs
c2UgewoKCiAgICAgICAgICAgICAgICBzbG93QXBwZW5kKHYpOwogICAgICAgICAgICAgICAgKytt
X3NpemU7CiAgICAgICAgICAgICAgICBtX2lzVXNpbmdJbmxpbmVCdWZmZXIgPSBmYWxzZTsKICAg
ICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdm9pZCByZW1vdmVMYXN0KCkKICAgICAgICB7
CiAgICAgICAgICAgIGRvIGlmICghKG1fc2l6ZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oIiwgMTI0
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9zaXplIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNl
KCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgbV9zaXplLS07CiAgICAg
ICAgICAgIG1fdmVjdG9yLnJlbW92ZUxhc3QoKTsKICAgICAgICB9CgogICAgICAgIEpTVmFsdWUg
bGFzdCgpCiAgICAgICAgewogICAgICAgICAgICBkbyBpZiAoIShtX3NpemUpKSB7IFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ0xpc3QuaCIsIDEzMSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fc2l6ZSIpOyBkbyB7IFdU
RlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgo
dm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAg
IHJldHVybiBtX2J1ZmZlclttX3NpemUgLSAxXS5qc1ZhbHVlKCk7CiAgICAgICAgfQoKICAgICAg
ICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgICAgaXRlcmF0b3Ig
ZW5kKCkgeyByZXR1cm4gbV9idWZmZXIgKyBtX3NpemU7IH0KCiAgICAgICAgY29uc3RfaXRlcmF0
b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgICAgIGNvbnN0X2l0ZXJh
dG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyICsgbV9zaXplOyB9CgogICAgICAgIHN0
YXRpYyB2b2lkIG1hcmtMaXN0cyhIZWFwUm9vdFZpc2l0b3ImLCBMaXN0U2V0Jik7CgogICAgcHJp
dmF0ZToKICAgICAgICB2b2lkIHNsb3dBcHBlbmQoSlNWYWx1ZSk7CgogICAgICAgIFJlZ2lzdGVy
KiBtX2J1ZmZlcjsKICAgICAgICBzaXplX3QgbV9zaXplOwogICAgICAgIGJvb2wgbV9pc1VzaW5n
SW5saW5lQnVmZmVyOwoKICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwogICAgICAgIExpc3RT
ZXQqIG1fbWFya1NldDsKCiAgICAgICAgYm9vbCBtX2lzUmVhZE9ubHk7CgoKICAgIHByaXZhdGU6
CgogICAgICAgIGZyaWVuZCBjbGFzcyBKU0dsb2JhbERhdGE7CgogICAgICAgIHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3Qgc2l6ZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBmYXN0TWFs
bG9jKHNpemUpOwogICAgICAgIH0KICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBw
KQogICAgICAgIHsKICAgICAgICAgICAgZmFzdEZyZWUocCk7CiAgICAgICAgfQoKICAgICAgICB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QpOwogICAgICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRl
W10odm9pZCopOwoKICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKik7CiAg
ICAgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIHNpemVfdCk7CiAgICB9OwoKICAgIGNs
YXNzIEFyZ0xpc3QgewogICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICBwdWJsaWM6CiAgICAg
ICAgdHlwZWRlZiBKU1ZhbHVlKiBpdGVyYXRvcjsKICAgICAgICB0eXBlZGVmIGNvbnN0IEpTVmFs
dWUqIGNvbnN0X2l0ZXJhdG9yOwoKICAgICAgICBBcmdMaXN0KCkKICAgICAgICAgICAgOiBtX2Fy
Z3MoMCkKICAgICAgICAgICAgLCBtX2FyZ0NvdW50KDApCiAgICAgICAgewogICAgICAgIH0KCiAg
ICAgICAgQXJnTGlzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgIDogbV9hcmdzKHJlaW50
ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KCZleGVjW2V4ZWMtPmhvc3RUaGlzUmVnaXN0ZXIoKSArIDFd
KSkKICAgICAgICAgICAgLCBtX2FyZ0NvdW50KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAg
ICB7CiAgICAgICAgfQoKICAgICAgICBBcmdMaXN0KEpTVmFsdWUqIGFyZ3MsIHVuc2lnbmVkIGFy
Z0NvdW50KQogICAgICAgICAgICA6IG1fYXJncyhhcmdzKQogICAgICAgICAgICAsIG1fYXJnQ291
bnQoYXJnQ291bnQpCiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAgQXJnTGlzdChSZWdpc3Rl
ciogYXJncywgaW50IGFyZ0NvdW50KQogICAgICAgICAgICA6IG1fYXJncyhyZWludGVycHJldF9j
YXN0PEpTVmFsdWUqPihhcmdzKSkKICAgICAgICAgICAgLCBtX2FyZ0NvdW50KGFyZ0NvdW50KQog
ICAgICAgIHsKICAgICAgICAgICAgZG8gaWYgKCEoYXJnQ291bnQgPj0gMCkpIHsgV1RGUmVwb3J0
QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5oIiwgMjA0LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiYXJnQ291bnQgPj0gMCIpOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgfQoKICAgICAgICBBcmdMaXN0KGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzKQog
ICAgICAgICAgICA6IG1fYXJncyhyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihjb25zdF9jYXN0
PFJlZ2lzdGVyKj4oYXJncy5iZWdpbigpKSkpCiAgICAgICAgICAgICwgbV9hcmdDb3VudChhcmdz
LnNpemUoKSkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBKU1ZhbHVlIGF0KHNpemVfdCBp
ZHgpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgICBpZiAoaWR4IDwgbV9hcmdDb3VudCkKICAg
ICAgICAgICAgICAgIHJldHVybiBtX2FyZ3NbaWR4XTsKICAgICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgICAgfQoKICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhbV9hcmdDb3VudDsgfQoKICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXJnQ291bnQ7IH0KCiAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX2FyZ3M7IH0K
ICAgICAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX2FyZ3MgKyBtX2FyZ0NvdW50OyB9Cgog
ICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9hcmdzOyB9CiAg
ICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9hcmdzICsgbV9hcmdD
b3VudDsgfQoKICAgICAgICB2b2lkIGdldFNsaWNlKGludCBzdGFydEluZGV4LCBBcmdMaXN0JiBy
ZXN1bHQpIGNvbnN0OwogICAgcHJpdmF0ZToKICAgICAgICBKU1ZhbHVlKiBtX2FyZ3M7CiAgICAg
ICAgc2l6ZV90IG1fYXJnQ291bnQ7CiAgICB9OwoKfQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgiIDEKIyAyNCAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgiCiNkZWZpbmUgQ2xhc3NJbmZvX2gg
CgoKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgIHN0cnVjdCBIYXNo
VGFibGU7CgogICAgc3RydWN0IENsYXNzSW5mbyB7CgoKCiAgICAgICAgY29uc3QgY2hhciogY2xh
c3NOYW1lOwoKCgoKCiAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBwYXJlbnRDbGFzczsKCgoKCiAg
ICAgICAgY29uc3QgSGFzaFRhYmxlKiBwcm9wSGFzaFRhYmxlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKICAgICAgICB7CiAgICAgICAgICAgIGlmIChjbGFzc1Byb3BIYXNoVGFibGVHZXR0ZXJGdW5j
dGlvbikKICAgICAgICAgICAgICAgIHJldHVybiBjbGFzc1Byb3BIYXNoVGFibGVHZXR0ZXJGdW5j
dGlvbihleGVjKTsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpY1Byb3BIYXNoVGFibGU7CiAgICAg
ICAgfQoKICAgICAgICBjb25zdCBIYXNoVGFibGUqIHN0YXRpY1Byb3BIYXNoVGFibGU7CiAgICAg
ICAgdHlwZWRlZiBjb25zdCBIYXNoVGFibGUqICgqQ2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVyRnVu
Y3Rpb24pKEV4ZWNTdGF0ZSopOwogICAgICAgIGNvbnN0IENsYXNzUHJvcEhhc2hUYWJsZUdldHRl
ckZ1bmN0aW9uIGNsYXNzUHJvcEhhc2hUYWJsZUdldHRlckZ1bmN0aW9uOwogICAgfTsKCn0KIyAy
OCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCIgMgoj
IDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCIKI2RlZmluZSBDb21tb25JZGVudGlmaWVyc19oIAoKIyAxICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgiIDEKIyAyMiAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIgojZGVm
aW5lIElkZW50aWZpZXJfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmgiIDEKIyAyNSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oIiAxCiMgMjYgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCIgMgoKIyAxICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgiCiNkZWZpbmUgQ1N0cmluZ19oIAoK
IyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NSZWZQdHIuaCIgMQoj
IDMwICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oIiAy
CiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgiIDEK
IyAzMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaCIg
MgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9yLmgiIDEKIyAz
MiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaCIgMgoK
bmFtZXNwYWNlIFdURiB7CgpjbGFzcyBDU3RyaW5nQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8
Q1N0cmluZ0J1ZmZlcj4gewpwdWJsaWM6CiAgICBjb25zdCBjaGFyKiBkYXRhKCkgeyByZXR1cm4g
bV92ZWN0b3IuZGF0YSgpOyB9CiAgICBzaXplX3QgbGVuZ3RoKCkgeyByZXR1cm4gbV92ZWN0b3Iu
c2l6ZSgpOyB9Cgpwcml2YXRlOgogICAgZnJpZW5kIGNsYXNzIENTdHJpbmc7CgogICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1N0cmluZ0J1ZmZlcj4gY3JlYXRlKHNpemVfdCBsZW5ndGgpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDU3RyaW5nQnVmZmVyKGxlbmd0aCkpOyB9CiAgICBDU3RyaW5nQnVmZmVy
KHNpemVfdCBsZW5ndGgpIDogbV92ZWN0b3IobGVuZ3RoKSB7IH0KICAgIGNoYXIqIG11dGFibGVE
YXRhKCkgeyByZXR1cm4gbV92ZWN0b3IuZGF0YSgpOyB9CgogICAgVmVjdG9yPGNoYXI+IG1fdmVj
dG9yOwp9OwoKCgpjbGFzcyBDU3RyaW5nIHsKcHVibGljOgogICAgQ1N0cmluZygpIHsgfQogICAg
Q1N0cmluZyhjb25zdCBjaGFyKik7CiAgICBDU3RyaW5nKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVu
Z3RoKTsKICAgIENTdHJpbmcoQ1N0cmluZ0J1ZmZlciogYnVmZmVyKSA6IG1fYnVmZmVyKGJ1ZmZl
cikgeyB9CiAgICBzdGF0aWMgQ1N0cmluZyBuZXdVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgs
IGNoYXIqJiBjaGFyYWN0ZXJCdWZmZXIpOwoKICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiAwOwogICAg
fQogICAgY2hhciogbXV0YWJsZURhdGEoKTsKICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAogICAg
ewogICAgICAgIHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5sZW5ndGgoKSAtIDEgOiAwOwog
ICAgfQoKICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CgogICAg
Q1N0cmluZ0J1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0K
CnByaXZhdGU6CiAgICB2b2lkIGNvcHlCdWZmZXJJZk5lZWRlZCgpOwogICAgdm9pZCBpbml0KGNv
bnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsKICAgIFJlZlB0cjxDU3RyaW5nQnVmZmVyPiBtX2J1
ZmZlcjsKfTsKCmJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5n
JiBiKTsKaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3Ry
aW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KCn0KCnVzaW5nIFdURjo6Q1N0cmluZzsKIyAy
OCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIiAy
CgpuYW1lc3BhY2UgSlNDIHsKCiAgICBjbGFzcyBFeGVjU3RhdGU7CgogICAgY2xhc3MgSWRlbnRp
ZmllciB7CiAgICAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZTsKICAgIHB1YmxpYzoKICAgICAg
ICBJZGVudGlmaWVyKCkgeyB9CgogICAgICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBjaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChleGVjLCBzKSkgeyB9CiAgICAgICAgSWRlbnRp
ZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3Ry
aW5nKGFkZChleGVjLCBzLCBsZW5ndGgpKSB7IH0KICAgICAgICBJZGVudGlmaWVyKEV4ZWNTdGF0
ZSogZXhlYywgU3RyaW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZChleGVjLCByZXApKSB7IH0K
ICAgICAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcykgOiBt
X3N0cmluZyhhZGQoZXhlYywgcy5pbXBsKCkpKSB7IH0KCiAgICAgICAgSWRlbnRpZmllcihKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIHMpIDogbV9zdHJpbmcoYWRkKGdsb2Jh
bERhdGEsIHMpKSB7IH0KICAgICAgICBJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKGdsb2JhbERhdGEs
IHMsIGxlbmd0aCkpIHsgfQogICAgICAgIElkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBTdHJpbmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRkKGdsb2JhbERhdGEsIHJlcCkpIHsg
fQogICAgICAgIElkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3Ry
aW5nJiBzKSA6IG1fc3RyaW5nKGFkZChnbG9iYWxEYXRhLCBzLmltcGwoKSkpIHsgfQoKICAgICAg
ICBjb25zdCBVU3RyaW5nJiB1c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICAg
ICAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaW1wbCgpOyB9
CgogICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcuY2hhcmFjdGVycygpOyB9CiAgICAgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmxlbmd0aCgpOyB9CgogICAgICAgIENTdHJpbmcgYXNjaWkoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy5hc2NpaSgpOyB9CgogICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCB5KTsKICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEV4ZWNTdGF0ZSogZXhlYywgaW50IHkpOwogICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20o
RXhlY1N0YXRlKiBleGVjLCBkb3VibGUgeSk7CiAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJv
bShKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCB5KTsKICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBm
cm9tKEpTR2xvYmFsRGF0YSosIGludCB5KTsKICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEpTR2xvYmFsRGF0YSosIGRvdWJsZSB5KTsKCiAgICAgICAgc3RhdGljIHVpbnQzMl90IHRvVUlu
dDMyKGNvbnN0IFVTdHJpbmcmLCBib29sJiBvayk7CiAgICAgICAgdWludDMyX3QgdG9VSW50MzIo
Ym9vbCYgb2spIGNvbnN0IHsgcmV0dXJuIHRvVUludDMyKG1fc3RyaW5nLCBvayk7IH0KICAgICAg
ICB1bnNpZ25lZCB0b0FycmF5SW5kZXgoYm9vbCYgb2spIGNvbnN0OwoKICAgICAgICBib29sIGlz
TnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CiAgICAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9CgogICAgICAgIGZy
aWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXIm
KTsKICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBJZGVudGlmaWVyJik7CgogICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IGNoYXIqKTsKICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBjaGFyKik7CgogICAgICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CiAgICAgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAg
ICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJ
bXBsKiBiKSB7IHJldHVybiA6OmVxdWFsKGEsIGIpOyB9CgogICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7CiAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNoYXIq
KTsKCiAgICBwcml2YXRlOgogICAgICAgIFVTdHJpbmcgbV9zdHJpbmc7CgogICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IElkZW50aWZpZXImIGIpIHsg
cmV0dXJuIGEubV9zdHJpbmcuaW1wbCgpID09IGIubV9zdHJpbmcuaW1wbCgpOyB9CiAgICAgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgY2hhciogYikgeyBy
ZXR1cm4gZXF1YWwoYS5tX3N0cmluZy5pbXBsKCksIGIpOyB9CgogICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBVQ2hhciosIGludCBsZW5n
dGgpOwogICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChKU0dsb2JhbERh
dGEqLCBjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOwoKICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiByKQogICAgICAg
IHsKCiAgICAgICAgICAgIGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShleGVjKTsKCiAgICAg
ICAgICAgIGlmIChyLT5pc0lkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgIHJldHVybiByOwog
ICAgICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoZXhlYywgcik7CiAgICAgICAgfQogICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIFN0cmluZ0ltcGwqIHIpCiAgICAgICAgewoKICAgICAgICAgICAgY2hlY2tDdXJyZW50SWRl
bnRpZmllclRhYmxlKGdsb2JhbERhdGEpOwoKICAgICAgICAgICAgaWYgKHItPmlzSWRlbnRpZmll
cigpKQogICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgICAgICAgICAgIHJldHVybiBhZGRTbG93
Q2FzZShnbG9iYWxEYXRhLCByKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqIHIpOwogICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEpTR2xvYmFsRGF0
YSosIFN0cmluZ0ltcGwqIHIpOwoKICAgICAgICBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVu
dGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CiAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDdXJyZW50
SWRlbnRpZmllclRhYmxlKEpTR2xvYmFsRGF0YSopOwogICAgfTsKCiAgICBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IElkZW50aWZpZXImIGIpCiAgICB7
CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFsKGEsIGIpOwogICAgfQoKICAgIGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgSWRlbnRpZmllciYg
YikKICAgIHsKICAgICAgICByZXR1cm4gIUlkZW50aWZpZXI6OmVxdWFsKGEsIGIpOwogICAgfQoK
ICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgY2hh
ciogYikKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZXF1YWwoYSwgYik7CiAgICB9
CgogICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBj
aGFyKiBiKQogICAgewogICAgICAgIHJldHVybiAhSWRlbnRpZmllcjo6ZXF1YWwoYSwgYik7CiAg
ICB9CgogICAgaW5saW5lIGJvb2wgSWRlbnRpZmllcjo6ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCog
ciwgY29uc3QgY2hhciogcykKICAgIHsKICAgICAgICByZXR1cm4gV1RGOjplcXVhbChyLCBzKTsK
ICAgIH0KCiAgICBpbmxpbmUgYm9vbCBJZGVudGlmaWVyOjplcXVhbChjb25zdCBTdHJpbmdJbXBs
KiByLCBjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoKQogICAgewogICAgICAgIHJldHVy
biBXVEY6OmVxdWFsKHIsIHMsIGxlbmd0aCk7CiAgICB9CgogICAgSWRlbnRpZmllclRhYmxlKiBj
cmVhdGVJZGVudGlmaWVyVGFibGUoKTsKICAgIHZvaWQgZGVsZXRlSWRlbnRpZmllclRhYmxlKElk
ZW50aWZpZXJUYWJsZSopOwoKICAgIHN0cnVjdCBJZGVudGlmaWVyUmVwSGFzaCA6IFB0ckhhc2g8
UmVmUHRyPFN0cmluZ0ltcGw+ID4gewogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IFJlZlB0cjxTdHJpbmdJbXBsPiYga2V5KSB7IHJldHVybiBrZXktPmV4aXN0aW5nSGFzaCgpOyB9
CiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU3RyaW5nSW1wbCoga2V5KSB7IHJldHVybiBr
ZXktPmV4aXN0aW5nSGFzaCgpOyB9CiAgICB9OwoKfQojIDI1ICIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIiAyCgoKCgojZGVmaW5lIEpT
Q19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBtYWNybyhfX2Rl
ZmluZUdldHRlcl9fKSBtYWNybyhfX2RlZmluZVNldHRlcl9fKSBtYWNybyhfX2xvb2t1cEdldHRl
cl9fKSBtYWNybyhfX2xvb2t1cFNldHRlcl9fKSBtYWNybyhhcHBseSkgbWFjcm8oYXJndW1lbnRz
KSBtYWNybyhjYWxsKSBtYWNybyhjYWxsZWUpIG1hY3JvKGNhbGxlcikgbWFjcm8oY29tcGlsZSkg
bWFjcm8oY29uZmlndXJhYmxlKSBtYWNybyhjb25zdHJ1Y3RvcikgbWFjcm8oZW51bWVyYWJsZSkg
bWFjcm8oZXZhbCkgbWFjcm8oZXhlYykgbWFjcm8oZnJvbUNoYXJDb2RlKSBtYWNybyhnbG9iYWwp
IG1hY3JvKGdldCkgbWFjcm8oaGFzT3duUHJvcGVydHkpIG1hY3JvKGlnbm9yZUNhc2UpIG1hY3Jv
KGluZGV4KSBtYWNybyhpbnB1dCkgbWFjcm8oaXNBcnJheSkgbWFjcm8oaXNQcm90b3R5cGVPZikg
bWFjcm8obGVuZ3RoKSBtYWNybyhtZXNzYWdlKSBtYWNybyhtdWx0aWxpbmUpIG1hY3JvKG5hbWUp
IG1hY3JvKG5vdykgbWFjcm8ocGFyc2UpIG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxlKSBtYWNy
byhwcm90b3R5cGUpIG1hY3JvKHNldCkgbWFjcm8oc291cmNlKSBtYWNybyh0ZXN0KSBtYWNybyh0
b0V4cG9uZW50aWFsKSBtYWNybyh0b0ZpeGVkKSBtYWNybyh0b0lTT1N0cmluZykgbWFjcm8odG9K
U09OKSBtYWNybyh0b0xvY2FsZVN0cmluZykgbWFjcm8odG9QcmVjaXNpb24pIG1hY3JvKHRvU3Ry
aW5nKSBtYWNybyhVVEMpIG1hY3JvKHZhbHVlKSBtYWNybyh2YWx1ZU9mKSBtYWNybyh3cml0YWJs
ZSkgbWFjcm8oZGlzcGxheU5hbWUpCiMgNzggIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgiCiNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElG
SUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIG1hY3JvKG51bGwpIG1hY3JvKHRydWUpIG1hY3JvKGZh
bHNlKSBtYWNybyhicmVhaykgbWFjcm8oY2FzZSkgbWFjcm8oY2F0Y2gpIG1hY3JvKGNvbnN0KSBt
YWNybyhkZWZhdWx0KSBtYWNybyhmaW5hbGx5KSBtYWNybyhmb3IpIG1hY3JvKGluc3RhbmNlb2Yp
IG1hY3JvKG5ldykgbWFjcm8odmFyKSBtYWNybyhjb250aW51ZSkgbWFjcm8oZnVuY3Rpb24pIG1h
Y3JvKHJldHVybikgbWFjcm8odm9pZCkgbWFjcm8oZGVsZXRlKSBtYWNybyhpZikgbWFjcm8odGhp
cykgbWFjcm8oZG8pIG1hY3JvKHdoaWxlKSBtYWNybyhlbHNlKSBtYWNybyhpbikgbWFjcm8oc3dp
dGNoKSBtYWNybyh0aHJvdykgbWFjcm8odHJ5KSBtYWNybyh0eXBlb2YpIG1hY3JvKHdpdGgpIG1h
Y3JvKGRlYnVnZ2VyKSBtYWNybyhjbGFzcykgbWFjcm8oZW51bSkgbWFjcm8oZXhwb3J0KSBtYWNy
byhleHRlbmRzKSBtYWNybyhpbXBvcnQpIG1hY3JvKHN1cGVyKSBtYWNybyhpbXBsZW1lbnRzKSBt
YWNybyhpbnRlcmZhY2UpIG1hY3JvKGxldCkgbWFjcm8ocGFja2FnZSkgbWFjcm8ocHJpdmF0ZSkg
bWFjcm8ocHJvdGVjdGVkKSBtYWNybyhwdWJsaWMpIG1hY3JvKHN0YXRpYykgbWFjcm8oeWllbGQp
CiMgMTI1ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oIgpuYW1lc3BhY2UgSlNDIHsKCiAgICBjbGFzcyBDb21tb25JZGVudGlmaWVycyB7
CiAgICAgICAgcHJpdmF0ZTogQ29tbW9uSWRlbnRpZmllcnMoY29uc3QgQ29tbW9uSWRlbnRpZmll
cnMmKTsgQ29tbW9uSWRlbnRpZmllcnMmIG9wZXJhdG9yPShjb25zdCBDb21tb25JZGVudGlmaWVy
cyYpOyBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJu
IHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RN
YWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldU
Rjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAs
IDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyA6OldURjo6ZmFzdEZyZWUocCk7
IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpm
YXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwg
OjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgcmV0dXJuIHA7IH0gdm9p
ZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxp
ZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgOjpX
VEY6OmZhc3RGcmVlKHApOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IFRoaXNJc0hlcmVUb0ZvcmNl
QVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwogICAgcHJpdmF0ZToKICAgICAgICBDb21tb25JZGVu
dGlmaWVycyhKU0dsb2JhbERhdGEqKTsKICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRh
OwoKICAgIHB1YmxpYzoKICAgICAgICBjb25zdCBJZGVudGlmaWVyIG51bGxJZGVudGlmaWVyOwog
ICAgICAgIGNvbnN0IElkZW50aWZpZXIgZW1wdHlJZGVudGlmaWVyOwogICAgICAgIGNvbnN0IElk
ZW50aWZpZXIgdW5kZXJzY29yZVByb3RvOwogICAgICAgIGNvbnN0IElkZW50aWZpZXIgdGhpc0lk
ZW50aWZpZXI7CiAgICAgICAgY29uc3QgSWRlbnRpZmllciB1c2VTdHJpY3RJZGVudGlmaWVyOwoK
CiNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9LRVlXT1JEX05BTUVfR0xPQkFMKG5hbWUp
IGNvbnN0IElkZW50aWZpZXIgbmFtZSAjI0tleXdvcmQ7CiAgICAgICAgY29uc3QgSWRlbnRpZmll
ciBudWxsS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciB0cnVlS2V5d29yZDsgY29uc3QgSWRlbnRp
ZmllciBmYWxzZUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgYnJlYWtLZXl3b3JkOyBjb25zdCBJ
ZGVudGlmaWVyIGNhc2VLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGNhdGNoS2V5d29yZDsgY29u
c3QgSWRlbnRpZmllciBjb25zdEtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgZGVmYXVsdEtleXdv
cmQ7IGNvbnN0IElkZW50aWZpZXIgZmluYWxseUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgZm9y
S2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBpbnN0YW5jZW9mS2V5d29yZDsgY29uc3QgSWRlbnRp
ZmllciBuZXdLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHZhcktleXdvcmQ7IGNvbnN0IElkZW50
aWZpZXIgY29udGludWVLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGZ1bmN0aW9uS2V5d29yZDsg
Y29uc3QgSWRlbnRpZmllciByZXR1cm5LZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHZvaWRLZXl3
b3JkOyBjb25zdCBJZGVudGlmaWVyIGRlbGV0ZUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgaWZL
ZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHRoaXNLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGRv
S2V5d29yZDsgY29uc3QgSWRlbnRpZmllciB3aGlsZUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIg
ZWxzZUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgaW5LZXl3b3JkOyBjb25zdCBJZGVudGlmaWVy
IHN3aXRjaEtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgdGhyb3dLZXl3b3JkOyBjb25zdCBJZGVu
dGlmaWVyIHRyeUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgdHlwZW9mS2V5d29yZDsgY29uc3Qg
SWRlbnRpZmllciB3aXRoS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBkZWJ1Z2dlcktleXdvcmQ7
IGNvbnN0IElkZW50aWZpZXIgY2xhc3NLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGVudW1LZXl3
b3JkOyBjb25zdCBJZGVudGlmaWVyIGV4cG9ydEtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgZXh0
ZW5kc0tleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgaW1wb3J0S2V5d29yZDsgY29uc3QgSWRlbnRp
ZmllciBzdXBlcktleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgaW1wbGVtZW50c0tleXdvcmQ7IGNv
bnN0IElkZW50aWZpZXIgaW50ZXJmYWNlS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBsZXRLZXl3
b3JkOyBjb25zdCBJZGVudGlmaWVyIHBhY2thZ2VLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHBy
aXZhdGVLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHByb3RlY3RlZEtleXdvcmQ7IGNvbnN0IElk
ZW50aWZpZXIgcHVibGljS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBzdGF0aWNLZXl3b3JkOyBj
b25zdCBJZGVudGlmaWVyIHlpZWxkS2V5d29yZDsKI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfS0VZV09SRF9OQU1FX0dMT0JBTAoKI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BS
T1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZTsKICAgICAgICBj
b25zdCBJZGVudGlmaWVyIF9fZGVmaW5lR2V0dGVyX187IGNvbnN0IElkZW50aWZpZXIgX19kZWZp
bmVTZXR0ZXJfXzsgY29uc3QgSWRlbnRpZmllciBfX2xvb2t1cEdldHRlcl9fOyBjb25zdCBJZGVu
dGlmaWVyIF9fbG9va3VwU2V0dGVyX187IGNvbnN0IElkZW50aWZpZXIgYXBwbHk7IGNvbnN0IElk
ZW50aWZpZXIgYXJndW1lbnRzOyBjb25zdCBJZGVudGlmaWVyIGNhbGw7IGNvbnN0IElkZW50aWZp
ZXIgY2FsbGVlOyBjb25zdCBJZGVudGlmaWVyIGNhbGxlcjsgY29uc3QgSWRlbnRpZmllciBjb21w
aWxlOyBjb25zdCBJZGVudGlmaWVyIGNvbmZpZ3VyYWJsZTsgY29uc3QgSWRlbnRpZmllciBjb25z
dHJ1Y3RvcjsgY29uc3QgSWRlbnRpZmllciBlbnVtZXJhYmxlOyBjb25zdCBJZGVudGlmaWVyIGV2
YWw7IGNvbnN0IElkZW50aWZpZXIgZXhlYzsgY29uc3QgSWRlbnRpZmllciBmcm9tQ2hhckNvZGU7
IGNvbnN0IElkZW50aWZpZXIgZ2xvYmFsOyBjb25zdCBJZGVudGlmaWVyIGdldDsgY29uc3QgSWRl
bnRpZmllciBoYXNPd25Qcm9wZXJ0eTsgY29uc3QgSWRlbnRpZmllciBpZ25vcmVDYXNlOyBjb25z
dCBJZGVudGlmaWVyIGluZGV4OyBjb25zdCBJZGVudGlmaWVyIGlucHV0OyBjb25zdCBJZGVudGlm
aWVyIGlzQXJyYXk7IGNvbnN0IElkZW50aWZpZXIgaXNQcm90b3R5cGVPZjsgY29uc3QgSWRlbnRp
ZmllciBsZW5ndGg7IGNvbnN0IElkZW50aWZpZXIgbWVzc2FnZTsgY29uc3QgSWRlbnRpZmllciBt
dWx0aWxpbmU7IGNvbnN0IElkZW50aWZpZXIgbmFtZTsgY29uc3QgSWRlbnRpZmllciBub3c7IGNv
bnN0IElkZW50aWZpZXIgcGFyc2U7IGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlJc0VudW1lcmFi
bGU7IGNvbnN0IElkZW50aWZpZXIgcHJvdG90eXBlOyBjb25zdCBJZGVudGlmaWVyIHNldDsgY29u
c3QgSWRlbnRpZmllciBzb3VyY2U7IGNvbnN0IElkZW50aWZpZXIgdGVzdDsgY29uc3QgSWRlbnRp
ZmllciB0b0V4cG9uZW50aWFsOyBjb25zdCBJZGVudGlmaWVyIHRvRml4ZWQ7IGNvbnN0IElkZW50
aWZpZXIgdG9JU09TdHJpbmc7IGNvbnN0IElkZW50aWZpZXIgdG9KU09OOyBjb25zdCBJZGVudGlm
aWVyIHRvTG9jYWxlU3RyaW5nOyBjb25zdCBJZGVudGlmaWVyIHRvUHJlY2lzaW9uOyBjb25zdCBJ
ZGVudGlmaWVyIHRvU3RyaW5nOyBjb25zdCBJZGVudGlmaWVyIFVUQzsgY29uc3QgSWRlbnRpZmll
ciB2YWx1ZTsgY29uc3QgSWRlbnRpZmllciB2YWx1ZU9mOyBjb25zdCBJZGVudGlmaWVyIHdyaXRh
YmxlOyBjb25zdCBJZGVudGlmaWVyIGRpc3BsYXlOYW1lOwojdW5kZWYgSlNDX0lERU5USUZJRVJf
REVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogICAgfTsKCn0KIyAyOSAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCIgMgoKIyAxICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCIgMQojIDI0ICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCIKI2RlZmluZSBKU0NlbGxfaCAK
CiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCIg
MQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCIg
MgoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3RE
YXRhLmgiIDEKIyAzMCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c3RydWN0RGF0YS5oIgojZGVmaW5lIENvbnN0cnVjdERhdGFfaCAKCgoKbmFtZXNwYWNlIEpTQyB7
CgogICAgY2xhc3MgQXJnTGlzdDsKICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgIGNsYXNzIEZ1bmN0
aW9uRXhlY3V0YWJsZTsKICAgIGNsYXNzIEpTT2JqZWN0OwogICAgY2xhc3MgU2NvcGVDaGFpbk5v
ZGU7CgogICAgZW51bSBDb25zdHJ1Y3RUeXBlIHsKICAgICAgICBDb25zdHJ1Y3RUeXBlTm9uZSwK
ICAgICAgICBDb25zdHJ1Y3RUeXBlSG9zdCwKICAgICAgICBDb25zdHJ1Y3RUeXBlSlMKICAgIH07
CgogICAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoICpOYXRpdmVDb25zdHJ1Y3RvcikoRXhlY1N0
YXRlKik7CgogICAgdW5pb24gQ29uc3RydWN0RGF0YSB7CiAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgTmF0aXZlQ29uc3RydWN0b3IgZnVuY3Rpb247CiAgICAgICAgfSBuYXRpdmU7CiAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGU7CiAgICAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluOwogICAgICAgIH0g
anM7CiAgICB9OwoKICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBj
b25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFy
Z0xpc3QmKTsKCn0KIyAyOSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgiIDIKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMb2NrLmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMb2NrLmgiCiNkZWZpbmUgSlNMb2NrX2ggCgoKCgpuYW1lc3BhY2UgSlNDIHsKIyA1MSAiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgiCiAgICBjbGFzcyBF
eGVjU3RhdGU7CiAgICBjbGFzcyBKU0dsb2JhbERhdGE7CgogICAgZW51bSBKU0xvY2tCZWhhdmlv
ciB7IFNpbGVuY2VBc3NlcnRpb25zT25seSwgTG9ja0ZvclJlYWwgfTsKCiAgICBjbGFzcyBKU0xv
Y2sgewogICAgICAgIHByaXZhdGU6IEpTTG9jayhjb25zdCBKU0xvY2smKTsgSlNMb2NrJiBvcGVy
YXRvcj0oY29uc3QgSlNMb2NrJik7CiAgICBwdWJsaWM6CiAgICAgICAgSlNMb2NrKEV4ZWNTdGF0
ZSopOwogICAgICAgIEpTTG9jayhKU0dsb2JhbERhdGEqKTsKCiAgICAgICAgSlNMb2NrKEpTTG9j
a0JlaGF2aW9yIGxvY2tCZWhhdmlvcikKICAgICAgICAgICAgOiBtX2xvY2tCZWhhdmlvcihsb2Nr
QmVoYXZpb3IpCiAgICAgICAgewoKCgoKCiAgICAgICAgICAgIGxvY2sobG9ja0JlaGF2aW9yKTsK
ICAgICAgICB9CgogICAgICAgIH5KU0xvY2soKQogICAgICAgIHsKCgoKCgogICAgICAgICAgICB1
bmxvY2sobV9sb2NrQmVoYXZpb3IpOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIHZvaWQgbG9j
ayhKU0xvY2tCZWhhdmlvcik7CiAgICAgICAgc3RhdGljIHZvaWQgdW5sb2NrKEpTTG9ja0JlaGF2
aW9yKTsKICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwogICAgICAgIHN0YXRp
YyB2b2lkIHVubG9jayhFeGVjU3RhdGUqKTsKCiAgICAgICAgc3RhdGljIGludHB0cl90IGxvY2tD
b3VudCgpOwogICAgICAgIHN0YXRpYyBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7
CgogICAgICAgIEpTTG9ja0JlaGF2aW9yIG1fbG9ja0JlaGF2aW9yOwoKICAgICAgICBjbGFzcyBE
cm9wQWxsTG9ja3MgewogICAgICAgICAgICBwcml2YXRlOiBEcm9wQWxsTG9ja3MoY29uc3QgRHJv
cEFsbExvY2tzJik7IERyb3BBbGxMb2NrcyYgb3BlcmF0b3I9KGNvbnN0IERyb3BBbGxMb2NrcyYp
OwogICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgRHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhl
Yyk7CiAgICAgICAgICAgIERyb3BBbGxMb2NrcyhKU0xvY2tCZWhhdmlvcik7CiAgICAgICAgICAg
IH5Ecm9wQWxsTG9ja3MoKTsKCiAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgaW50cHRyX3Qg
bV9sb2NrQ291bnQ7CiAgICAgICAgICAgIEpTTG9ja0JlaGF2aW9yIG1fbG9ja0JlaGF2aW9yOwog
ICAgICAgIH07CiAgICB9OwoKfQojIDMxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZU1ldGhvZHMuaCIKI2RlZmluZSBKU1Zh
bHVlSW5saW5lTWV0aG9kc19oIAoKCgpuYW1lc3BhY2UgSlNDIHsKCiAgICBpbmxpbmUgaW50MzJf
dCBKU1ZhbHVlOjp0b0ludDMyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgIHsKICAgICAgICBp
ZiAoaXNJbnQzMigpKQogICAgICAgICAgICByZXR1cm4gYXNJbnQzMigpOwogICAgICAgIHJldHVy
biBKU0M6OnRvSW50MzIodG9OdW1iZXIoZXhlYykpOwogICAgfQoKICAgIGlubGluZSB1aW50MzJf
dCBKU1ZhbHVlOjp0b1VJbnQzMihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICB7CgogICAgICAg
IHJldHVybiB0b0ludDMyKGV4ZWMpOwogICAgfQoKICAgIGlubGluZSBib29sIEpTVmFsdWU6Omlz
VUludDMyKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gaXNJbnQzMigpICYmIGFzSW50MzIo
KSA+PSAwOwogICAgfQoKICAgIGlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjphc1VJbnQzMigpIGNv
bnN0CiAgICB7CiAgICAgICAgZG8gaWYgKCEoaXNVSW50MzIoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1
ZUlubGluZU1ldGhvZHMuaCIsIDUzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNVSW50MzIoKSIp
OyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVl
ZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgcmV0dXJuIGFzSW50MzIoKTsKICAgIH0KCiAgICBpbmxpbmUgZG91YmxlIEpTVmFsdWU6
OnVuY2hlY2tlZEdldE51bWJlcigpIGNvbnN0CiAgICB7CiAgICAgICAgZG8gaWYgKCEoaXNOdW1i
ZXIoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZU1ldGhvZHMuaCIsIDU5LCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAiaXNOdW1iZXIoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIGlzSW50MzIoKSA/IGFzSW50MzIo
KSA6IGFzRG91YmxlKCk7CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9KU051
bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGlzTnVtYmVy
KCkgPyBhc1ZhbHVlKCkgOiBqc051bWJlcih0aGlzLT50b051bWJlcihleGVjKSk7CiAgICB9Cgog
ICAgaW5saW5lIEpTVmFsdWUganNOYU4oKQogICAgewogICAgICAgIHJldHVybiBKU1ZhbHVlKHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwogICAgfQoKICAgIGlubGlu
ZSBib29sIEpTVmFsdWU6OmdldE51bWJlcihkb3VibGUmIHJlc3VsdCkgY29uc3QKICAgIHsKICAg
ICAgICBpZiAoaXNJbnQzMigpKSB7CiAgICAgICAgICAgIHJlc3VsdCA9IGFzSW50MzIoKTsKICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIGlmIChpc0RvdWJsZSgpKSB7
CiAgICAgICAgICAgIHJlc3VsdCA9IGFzRG91YmxlKCk7CiAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgaW5saW5lIGJvb2wg
SlNWYWx1ZTo6Z2V0Qm9vbGVhbihib29sJiB2KSBjb25zdAogICAgewogICAgICAgIGlmIChpc1Ry
dWUoKSkgewogICAgICAgICAgICB2ID0gdHJ1ZTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgfQogICAgICAgIGlmIChpc0ZhbHNlKCkpIHsKICAgICAgICAgICAgdiA9IGZhbHNlOwog
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsK
ICAgIH0KCiAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShjaGFyIGkpCiAgICB7CiAgICAgICAg
KnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKICAgIH0KCiAgICBpbmxp
bmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBjaGFyIGkpCiAgICB7CiAgICAgICAgKnRoaXMg
PSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKICAgIH0KCiAgICBpbmxpbmUgSlNW
YWx1ZTo6SlNWYWx1ZShzaG9ydCBpKQogICAgewogICAgICAgICp0aGlzID0gSlNWYWx1ZShzdGF0
aWNfY2FzdDxpbnQzMl90PihpKSk7CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUo
dW5zaWduZWQgc2hvcnQgaSkKICAgIHsKICAgICAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oaSkpOwogICAgfQoKICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHVuc2ln
bmVkIGkpCiAgICB7CiAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpIDwgMCkgewog
ICAgICAgICAgICAqdGhpcyA9IEpTVmFsdWUoRW5jb2RlQXNEb3VibGUsIHN0YXRpY19jYXN0PGRv
dWJsZT4oaSkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICp0aGlzID0g
SlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7CiAgICB9CgogICAgaW5saW5lIEpTVmFs
dWU6OkpTVmFsdWUobG9uZyBpKQogICAgewogICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90
PihpKSAhPSBpKSB7CiAgICAgICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwg
c3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAg
ICAgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKICAgIH0KCiAg
ICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBsb25nIGkpCiAgICB7CiAgICAgICAg
aWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSAhPSBpKSB7CiAgICAgICAgICAgICp0aGlzID0g
SlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7CiAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0
PHVpbnQzMl90PihpKSk7CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUobG9uZyBs
b25nIGkpCiAgICB7CiAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpICE9IGkpIHsK
ICAgICAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxk
b3VibGU+KGkpKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAqdGhpcyA9
IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOwogICAgfQoKICAgIGlubGluZSBKU1Zh
bHVlOjpKU1ZhbHVlKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQogICAgewogICAgICAgIGlmIChzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaSkgIT0gaSkgewogICAgICAgICAgICAqdGhpcyA9IEpTVmFsdWUo
RW5jb2RlQXNEb3VibGUsIHN0YXRpY19jYXN0PGRvdWJsZT4oaSkpOwogICAgICAgICAgICByZXR1
cm47CiAgICAgICAgfQogICAgICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDx1aW50MzJf
dD4oaSkpOwogICAgfQoKICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGRvdWJsZSBkKQogICAg
ewogICAgICAgIGNvbnN0IGludDMyX3QgYXNJbnQzMiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGQp
OwogICAgICAgIGlmIChhc0ludDMyICE9IGQgfHwgKCFhc0ludDMyICYmIHNpZ25iaXQoZCkpKSB7
CiAgICAgICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgZCk7CiAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0
PGludDMyX3Q+KGQpKTsKICAgIH0KIyAzNTYgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmgiCiAgICBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUgdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIHZh
bHVlLnUucHRyOwogICAgfQoKICAgIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmRlY29kZShFbmNv
ZGVkSlNWYWx1ZSBwdHIpCiAgICB7CiAgICAgICAgcmV0dXJuIEpTVmFsdWUocmVpbnRlcnByZXRf
Y2FzdDxKU0NlbGwqPihwdHIpKTsKICAgIH0KCgogICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUo
KQogICAgewogICAgICAgIHUuYXNJbnQ2NCA9IDB4MGxsOwogICAgfQoKCiAgICBpbmxpbmUgSlNW
YWx1ZTo6SlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpCiAgICB7CiAgICAgICAgdS5h
c0ludDY0ID0gMHg0bGw7CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNDZWxs
KiBwdHIpCiAgICB7CiAgICAgICAgdS5wdHIgPSBwdHI7CiAgICB9CgogICAgaW5saW5lIEpTVmFs
dWU6OkpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpCiAgICB7CiAgICAgICAgdS5wdHIgPSBjb25z
dF9jYXN0PEpTQ2VsbCo+KHB0cik7CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWU6Om9wZXJhdG9y
IGJvb2woKSBjb25zdAogICAgewogICAgICAgIHJldHVybiB1LnB0cjsKICAgIH0KCiAgICBpbmxp
bmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiB1LnB0ciA9PSBvdGhlci51LnB0cjsKICAgIH0KCiAgICBpbmxp
bmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiB1LnB0ciAhPSBvdGhlci51LnB0cjsKICAgIH0KCiAgICBpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IGFzVmFsdWUoKSA9PSBqc1VuZGVmaW5lZCgpOwogICAgfQoKICAgIGlubGluZSBib29sIEpTVmFs
dWU6OmlzTnVsbCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBqc051
bGwoKTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1RydWUoKSBjb25zdAogICAg
ewogICAgICAgIHJldHVybiBhc1ZhbHVlKCkgPT0gSlNWYWx1ZShKU1RydWUpOwogICAgfQoKICAg
IGlubGluZSBib29sIEpTVmFsdWU6OmlzRmFsc2UoKSBjb25zdAogICAgewogICAgICAgIHJldHVy
biBhc1ZhbHVlKCkgPT0gSlNWYWx1ZShKU0ZhbHNlKTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBK
U1ZhbHVlOjpnZXRCb29sZWFuKCkgY29uc3QKICAgIHsKICAgICAgICBkbyBpZiAoIShhc1ZhbHVl
KCkgPT0ganNCb29sZWFuKHRydWUpIHx8IGFzVmFsdWUoKSA9PSBqc0Jvb2xlYW4oZmFsc2UpKSkg
eyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlSW5saW5lTWV0aG9kcy5oIiwgNDI1LCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAiYXNWYWx1ZSgpID09IGpzQm9vbGVhbih0cnVlKSB8fCBhc1ZhbHVlKCkgPT0ganNCb29s
ZWFuKGZhbHNlKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRy
X3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBqc0Jvb2xlYW4odHJ1ZSk7CiAg
ICB9CgogICAgaW5saW5lIGludDMyX3QgSlNWYWx1ZTo6YXNJbnQzMigpIGNvbnN0CiAgICB7CiAg
ICAgICAgZG8gaWYgKCEoaXNJbnQzMigpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlSW5saW5lTWV0aG9k
cy5oIiwgNDMxLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNJbnQzMigpIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50MzJfdD4odS5hc0ludDY0KTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBK
U1ZhbHVlOjppc0RvdWJsZSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGlzTnVtYmVyKCkg
JiYgIWlzSW50MzIoKTsKICAgIH0KCiAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU051bGxU
YWcpCiAgICB7CiAgICAgICAgdS5hc0ludDY0ID0gKDB4MmxsKTsKICAgIH0KCiAgICBpbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZShKU1VuZGVmaW5lZFRhZykKICAgIHsKICAgICAgICB1LmFzSW50NjQg
PSAoMHgybGwgfCAweDhsbCk7CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNU
cnVlVGFnKQogICAgewogICAgICAgIHUuYXNJbnQ2NCA9ICgweDJsbCB8IDB4NGxsIHwgdHJ1ZSk7
CiAgICB9CgogICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNGYWxzZVRhZykKICAgIHsKICAg
ICAgICB1LmFzSW50NjQgPSAoMHgybGwgfCAweDRsbCB8IGZhbHNlKTsKICAgIH0KCiAgICBpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0CiAgICB7CgogICAgICAg
IHJldHVybiAodS5hc0ludDY0ICYgfjB4OGxsKSA9PSAoMHgybGwpOwogICAgfQoKICAgIGlubGlu
ZSBib29sIEpTVmFsdWU6OmlzQm9vbGVhbigpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuICh1
LmFzSW50NjQgJiB+MSkgPT0gKDB4MmxsIHwgMHg0bGwgfCBmYWxzZSk7CiAgICB9CgogICAgaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6aXNDZWxsKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gISh1
LmFzSW50NjQgJiAoMHhmZmZmMDAwMDAwMDAwMDAwbGwgfCAweDJsbCkpOwogICAgfQoKICAgIGlu
bGluZSBib29sIEpTVmFsdWU6OmlzSW50MzIoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiAo
dS5hc0ludDY0ICYgMHhmZmZmMDAwMDAwMDAwMDAwbGwpID09IDB4ZmZmZjAwMDAwMDAwMDAwMGxs
OwogICAgfQoKICAgIGlubGluZSBpbnRwdHJfdCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGRv
dWJsZSB2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGludHB0cl90Pih2
YWx1ZSk7CiAgICB9CiAgICBpbmxpbmUgZG91YmxlIHJlaW50ZXJwcmV0SW50cHRyVG9Eb3VibGUo
aW50cHRyX3QgdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+
KHZhbHVlKTsKICAgIH0KCiAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJs
ZVRhZywgZG91YmxlIGQpCiAgICB7CiAgICAgICAgdS5hc0ludDY0ID0gcmVpbnRlcnByZXREb3Vi
bGVUb0ludHB0cihkKSArIDB4MTAwMDAwMDAwMDAwMGxsOwogICAgfQoKICAgIGlubGluZSBKU1Zh
bHVlOjpKU1ZhbHVlKGludCBpKQogICAgewogICAgICAgIHUuYXNJbnQ2NCA9IDB4ZmZmZjAwMDAw
MDAwMDAwMGxsIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpOwogICAgfQoKICAgIGlubGluZSBk
b3VibGUgSlNWYWx1ZTo6YXNEb3VibGUoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiByZWlu
dGVycHJldEludHB0clRvRG91YmxlKHUuYXNJbnQ2NCAtIDB4MTAwMDAwMDAwMDAwMGxsKTsKICAg
IH0KCiAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc051bWJlcigpIGNvbnN0CiAgICB7CiAgICAg
ICAgcmV0dXJuIHUuYXNJbnQ2NCAmIDB4ZmZmZjAwMDAwMDAwMDAwMGxsOwogICAgfQoKICAgIGlu
bGluZSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICB7CiAgICAgICAgZG8gaWYg
KCEoaXNDZWxsKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmgiLCA1MTIsIF9f
UFJFVFRZX0ZVTkNUSU9OX18sICJpc0NlbGwoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgp
OyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0g
d2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIHUucHRyOwogICAgfQoK
Cgp9CiMgMzIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
IiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
aCIgMQojIDMzICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aCIgMgoKCgpuYW1lc3BhY2UgSlNDIHsKCiAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgIGNs
YXNzIFN0cnVjdHVyZTsKIyA1NSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgiCiAgICBjbGFzcyBKU0NlbGwgewogICAgICAgIHByaXZhdGU6IEpTQ2VsbChj
b25zdCBKU0NlbGwmKTsgSlNDZWxsJiBvcGVyYXRvcj0oY29uc3QgSlNDZWxsJik7CgoKICAgICAg
ICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgICAgZnJpZW5kIGNsYXNzIEdldHRl
clNldHRlcjsKICAgICAgICBmcmllbmQgY2xhc3MgSGVhcDsKICAgICAgICBmcmllbmQgY2xhc3Mg
SlNPYmplY3Q7CiAgICAgICAgZnJpZW5kIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I7CiAg
ICAgICAgZnJpZW5kIGNsYXNzIEpTU3RyaW5nOwogICAgICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVl
OwogICAgICAgIGZyaWVuZCBjbGFzcyBKU0FQSVZhbHVlV3JhcHBlcjsKICAgICAgICBmcmllbmQg
Y2xhc3MgSlNHbG9iYWxEYXRhOwogICAgICAgIGZyaWVuZCBjbGFzcyBOZXdTcGFjZTsKICAgICAg
ICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgZnJpZW5kIGNsYXNzIFNjb3BlQ2hh
aW5Ob2RlOwogICAgICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgICAgZnJpZW5kIGNs
YXNzIFN0cnVjdHVyZUNoYWluOwogICAgICAgIGZyaWVuZCBjbGFzcyBSZWdFeHA7CgogICAgICAg
IGVudW0gQ3JlYXRpbmdFYXJseUNlbGxUYWcgeyBDcmVhdGluZ0Vhcmx5Q2VsbCB9OwoKICAgIHBy
b3RlY3RlZDoKICAgICAgICBlbnVtIFZQdHJTdGVhbGluZ0hhY2tUeXBlIHsgVlB0clN0ZWFsaW5n
SGFjayB9OwoKICAgIHByaXZhdGU6CiAgICAgICAgZXhwbGljaXQgSlNDZWxsKFZQdHJTdGVhbGlu
Z0hhY2tUeXBlKSB7IH0KICAgICAgICBKU0NlbGwoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
CiAgICAgICAgSlNDZWxsKENyZWF0aW5nRWFybHlDZWxsVGFnKTsKICAgICAgICB2aXJ0dWFsIH5K
U0NlbGwoKTsKCiAgICBwdWJsaWM6CgogICAgICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAg
ICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAgICAgICAgYm9vbCBpc0dldHRlclNldHRlcigp
IGNvbnN0OwogICAgICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAg
ICAgICAgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0OwoKICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSgpIGNvbnN0OwoKCiAgICAgICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjLCBVU3RyaW5nJikgY29uc3Q7CiAgICAgICAgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRl
KiBleGVjKSBjb25zdDsKICAgICAgICBKU09iamVjdCogZ2V0T2JqZWN0KCk7CiAgICAgICAgY29u
c3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OwoKICAgICAgICB2aXJ0dWFsIENhbGxUeXBl
IGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwoKCiAgICAgICAgdmlydHVhbCBKU1ZhbHVl
IHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0Owog
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91Ymxl
JiBudW1iZXIsIEpTVmFsdWUmKTsKICAgICAgICB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNT
dGF0ZSopIGNvbnN0OwogICAgICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSop
IGNvbnN0OwogICAgICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25z
dDsKICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCopIGNvbnN0OwoKCiAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9p
ZCogcGxhY2VtZW50TmV3RGVzdGluYXRpb24pIHsgcmV0dXJuIHBsYWNlbWVudE5ld0Rlc3RpbmF0
aW9uOyB9CgogICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7
CgoKICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0OwogICAgICAgIHZp
cnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CiAgICAgICAgdmlydHVh
bCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CgogICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhp
c09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNO
dW1iZXIoKTsKICAgICAgICB2b2lkKiB2cHRyKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPih0aGlzKTsgfQogICAgICAgIHZvaWQgc2V0VlB0cih2b2lkKiB2cHRyKSB7ICpyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykgPSB2cHRyOyB9CgoKCgoKICAgICAgICBib29sIGZh
c3RHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0
eShFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CgogICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qg
c3RydWN0dXJlT2Zmc2V0KCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAocmVpbnRlcnBy
ZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPigweDQwMDApLT5t
X3N0cnVjdHVyZSkpIC0gMHg0MDAwKTsKICAgICAgICB9CgoKICAgICAgICBTdHJ1Y3R1cmUqIHVu
dmFsaWRhdGVkU3RydWN0dXJlKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQo
KTsgfQoKCiAgICBwcm90ZWN0ZWQ6CgogICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxEYXRhJik7CiAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZyk7CgogICAgcHJpdmF0ZToKCiAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKCgoKICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUq
KTsKICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBKU0dsb2JhbERhdGEqKTsKCiAg
ICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICB9OwoKICAgIGlu
bGluZSBKU0NlbGw6OkpTQ2VsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgICAgIDogbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0
dXJlKQogICAgewogICAgfQoKICAgIGlubGluZSBKU0NlbGw6OkpTQ2VsbChDcmVhdGluZ0Vhcmx5
Q2VsbFRhZykKICAgIHsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgIHsKCiAgICAgICAgZG8gaWYgKCEoZ2xv
YmFsRGF0YS5pc0luaXRpYWxpemluZ09iamVjdCgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWls
dXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCIsIDE3
NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgImdsb2JhbERhdGEuaXNJbml0aWFsaXppbmdPYmplY3Qo
KSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFk
YmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAgZ2xvYmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwoKCgogICAg
ICAgIGRvIGlmICghKG1fc3RydWN0dXJlKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCIsIDE4MSwgX19Q
UkVUVFlfRlVOQ1RJT05fXywgIm1fc3RydWN0dXJlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNl
KCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBKU0Nl
bGw6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxsVGFnKQogICAgewoKICAgICAgICBkbyBpZiAoIShn
bG9iYWxEYXRhLmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZh
aWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIiwg
MTg3LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiZ2xvYmFsRGF0YS5pc0luaXRpYWxpemluZ09iamVj
dCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAgICAg
ICAgaWYgKHN0cnVjdHVyZSkKCiAgICAgICAgICAgIG1fc3RydWN0dXJlLnNldEVhcmx5VmFsdWUo
Z2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKTsKCiAgICAgICAgZG8gaWYgKCEobV9zdHJ1Y3R1
cmUgfHwgIWdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKSkgeyBXVEZSZXBvcnRBc3NlcnRp
b25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aCIsIDE5MywgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fc3RydWN0dXJlIHx8ICFnbG9iYWxEYXRh
LnN0cnVjdHVyZVN0cnVjdHVyZSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZh
bHNlKTsgfSB3aGlsZSAoMCk7CiAgICB9CgogICAgaW5saW5lIEpTQ2VsbDo6fkpTQ2VsbCgpCiAg
ICB7CgogICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CgogICAgfQoKICAgIGlubGluZSBTdHJ1
Y3R1cmUqIEpTQ2VsbDo6c3RydWN0dXJlKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9z
dHJ1Y3R1cmUuZ2V0KCk7CiAgICB9CgogICAgaW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgewogICAgICAgIHZpc2l0b3IuYXBwZW5kKCZt
X3N0cnVjdHVyZSk7CiAgICB9CgoKCiAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N0cmluZygp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N0cmlu
ZygpOwogICAgfQoKICAgIGlubGluZSBib29sIEpTVmFsdWU6OmlzUHJpbWl0aXZlKCkgY29uc3QK
ICAgIHsKICAgICAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygpOwog
ICAgfQoKICAgIGlubGluZSBib29sIEpTVmFsdWU6OmlzR2V0dGVyU2V0dGVyKCkgY29uc3QKICAg
IHsKICAgICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzR2V0dGVyU2V0dGVyKCk7
CiAgICB9CgogICAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNPYmplY3QoKSBjb25zdAogICAgewog
ICAgICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNPYmplY3QoKTsKICAgIH0KCiAg
ICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVU3RyaW5n
JiBzKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+Z2V0
U3RyaW5nKGV4ZWMsIHMpOwogICAgfQoKICAgIGlubGluZSBVU3RyaW5nIEpTVmFsdWU6OmdldFN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGlzQ2VsbCgp
ID8gYXNDZWxsKCktPmdldFN0cmluZyhleGVjKSA6IFVTdHJpbmcoKTsKICAgIH0KCiAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQmFzZT4gVVN0cmluZyBIYW5kbGVDb252ZXJ0ZXI8QmFzZSwgVW5rbm93
bj46OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IGpzVmFsdWUoKS5nZXRTdHJpbmcoZXhlYyk7CiAgICB9CgogICAgaW5saW5lIEpTT2JqZWN0KiBK
U1ZhbHVlOjpnZXRPYmplY3QoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBpc0NlbGwoKSA/
IGFzQ2VsbCgpLT5nZXRPYmplY3QoKSA6IDA7CiAgICB9CgogICAgaW5saW5lIENhbGxUeXBlIGdl
dENhbGxEYXRhKEpTVmFsdWUgdmFsdWUsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgIHsKICAgICAg
ICBDYWxsVHlwZSByZXN1bHQgPSB2YWx1ZS5pc0NlbGwoKSA/IHZhbHVlLmFzQ2VsbCgpLT5nZXRD
YWxsRGF0YShjYWxsRGF0YSkgOiBDYWxsVHlwZU5vbmU7CiAgICAgICAgZG8gaWYgKCEocmVzdWx0
ID09IENhbGxUeXBlTm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2FsbGVlKCkpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oIiwgMjU4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAicmVzdWx0ID09IENhbGxUeXBlTm9u
ZSB8fCB2YWx1ZS5pc1ZhbGlkQ2FsbGVlKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsg
KihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9Cgog
ICAgaW5saW5lIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU1ZhbHVlIHZhbHVlLCBD
b25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogICAgewogICAgICAgIENvbnN0cnVjdFR5cGUg
cmVzdWx0ID0gdmFsdWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+Z2V0Q29uc3RydWN0RGF0
YShjb25zdHJ1Y3REYXRhKSA6IENvbnN0cnVjdFR5cGVOb25lOwogICAgICAgIGRvIGlmICghKHJl
c3VsdCA9PSBDb25zdHJ1Y3RUeXBlTm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2FsbGVlKCkpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oIiwgMjY1LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAicmVzdWx0ID09IENv
bnN0cnVjdFR5cGVOb25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSIpOyBkbyB7IFdURlJlcG9y
dEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgq
KSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRVSW50MzIodWludDMyX3Qm
IHYpIGNvbnN0CiAgICB7CiAgICAgICAgaWYgKGlzSW50MzIoKSkgewogICAgICAgICAgICBpbnQz
Ml90IGkgPSBhc0ludDMyKCk7CiAgICAgICAgICAgIHYgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
aSk7CiAgICAgICAgICAgIHJldHVybiBpID49IDA7CiAgICAgICAgfQogICAgICAgIGlmIChpc0Rv
dWJsZSgpKSB7CiAgICAgICAgICAgIGRvdWJsZSBkID0gYXNEb3VibGUoKTsKICAgICAgICAgICAg
diA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihkKTsKICAgICAgICAgICAgcmV0dXJuIHYgPT0gZDsK
ICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGlubGluZSBKU1ZhbHVl
IEpTVmFsdWU6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSBwcmVmZXJyZWRUeXBlKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBpc0NlbGwoKSA/
IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKSA6IGFzVmFsdWUoKTsK
ICAgIH0KCiAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0
YXRlKiBleGVjLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgdmFsdWUpCiAgICB7CiAgICAgICAg
aWYgKGlzSW50MzIoKSkgewogICAgICAgICAgICBudW1iZXIgPSBhc0ludDMyKCk7CiAgICAgICAg
ICAgIHZhbHVlID0gKnRoaXM7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAg
ICAgICBpZiAoaXNEb3VibGUoKSkgewogICAgICAgICAgICBudW1iZXIgPSBhc0RvdWJsZSgpOwog
ICAgICAgICAgICB2YWx1ZSA9ICp0aGlzOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICB9CiAgICAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICAgICByZXR1cm4gYXNDZWxsKCktPmdl
dFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZhbHVlKTsKICAgICAgICBpZiAoaXNUcnVl
KCkpIHsKICAgICAgICAgICAgbnVtYmVyID0gMS4wOwogICAgICAgICAgICB2YWx1ZSA9ICp0aGlz
OwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzRmFsc2Uo
KSB8fCBpc051bGwoKSkgewogICAgICAgICAgICBudW1iZXIgPSAwLjA7CiAgICAgICAgICAgIHZh
bHVlID0gKnRoaXM7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBk
byBpZiAoIShpc1VuZGVmaW5lZCgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCIsIDMxMywgX19QUkVU
VFlfRlVOQ1RJT05fXywgImlzVW5kZWZpbmVkKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2Uo
KTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9
IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIG51bWJlciA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CiAgICAgICAgdmFsdWUgPSAqdGhpczsKICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjp0b0Jvb2xl
YW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgewogICAgICAgIGlmIChpc0ludDMyKCkpCiAg
ICAgICAgICAgIHJldHVybiBhc0ludDMyKCkgIT0gMDsKICAgICAgICBpZiAoaXNEb3VibGUoKSkK
ICAgICAgICAgICAgcmV0dXJuIGFzRG91YmxlKCkgPiAwLjAgfHwgYXNEb3VibGUoKSA8IDAuMDsK
ICAgICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9Cb29s
ZWFuKGV4ZWMpOwogICAgICAgIHJldHVybiBpc1RydWUoKTsKICAgIH0KCiAgICBpbmxpbmUgZG91
YmxlIEpTVmFsdWU6OnRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgIHsKICAgICAg
ICBpZiAoaXNJbnQzMigpKQogICAgICAgICAgICByZXR1cm4gYXNJbnQzMigpOwogICAgICAgIGlm
IChpc0RvdWJsZSgpKQogICAgICAgICAgICByZXR1cm4gYXNEb3VibGUoKTsKICAgICAgICByZXR1
cm4gdG9OdW1iZXJTbG93Q2FzZShleGVjKTsKICAgIH0KCiAgICBpbmxpbmUgSlNWYWx1ZSBKU1Zh
bHVlOjpnZXRKU051bWJlcigpCiAgICB7CiAgICAgICAgaWYgKGlzSW50MzIoKSB8fCBpc0RvdWJs
ZSgpKQogICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgaWYgKGlzQ2VsbCgpKQogICAg
ICAgICAgICByZXR1cm4gYXNDZWxsKCktPmdldEpTTnVtYmVyKCk7CiAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgIH0KCiAgICBpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0KEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0Nl
bGwoKS0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSA6IHRvT2Jq
ZWN0U2xvd0Nhc2UoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgIH0KCiAg
ICBpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gaXND
ZWxsKCkgPyBhc0NlbGwoKS0+dG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KSA6IHRvT2JqZWN0
U2xvd0Nhc2UoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgIH0KCiAgICBpbmxpbmUgSlNPYmplY3Qq
IEpTVmFsdWU6OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICB7CiAgICAg
ICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPnRvVGhpc09iamVjdChleGVjKSA6IHRvVGhp
c09iamVjdFNsb3dDYXNlKGV4ZWMpOwogICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2
b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCkKICAgIHsKCiAgICAgICAgZG8gaWYgKCEoIWhl
YXAuZ2xvYmFsRGF0YSgpLT5pc0luaXRpYWxpemluZ09iamVjdCgpKSkgeyBXVEZSZXBvcnRBc3Nl
cnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCIsIDM2NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFoZWFwLmdsb2JhbERhdGEoKS0+aXNJ
bml0aWFsaXppbmdPYmplY3QoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZh
bHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgaGVhcC5nbG9iYWxEYXRhKCktPnNldEluaXRpYWxp
emluZ09iamVjdCh0cnVlKTsKCiAgICAgICAgcmV0dXJuIGhlYXAuYWxsb2NhdGUoc2l6ZW9mKFQp
KTsKICAgIH0KCn0KIyAzMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oIiAxCiMgMjIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5U2xvdC5oIgojZGVmaW5lIFByb3BlcnR5U2xvdF9oIAoKCgoKCiMgMSAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob3RGb3VuZC5oIiAxCiMgMjkgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIiAyCgpu
YW1lc3BhY2UgSlNDIHsKCiAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICBjbGFzcyBKU09iamVjdDsK
CiNkZWZpbmUgSlNDX1ZBTFVFX01BUktFUiAwCiNkZWZpbmUgSU5ERVhfR0VUVEVSX01BUktFUiBy
ZWludGVycHJldF9jYXN0PEdldFZhbHVlRnVuYz4oMikKI2RlZmluZSBHRVRURVJfRlVOQ1RJT05f
TUFSS0VSIHJlaW50ZXJwcmV0X2Nhc3Q8R2V0VmFsdWVGdW5jPigzKQoKICAgIGNsYXNzIFByb3Bl
cnR5U2xvdCB7CiAgICBwdWJsaWM6CiAgICAgICAgZW51bSBDYWNoZWRQcm9wZXJ0eVR5cGUgewog
ICAgICAgICAgICBVbmNhY2hlYWJsZSwKICAgICAgICAgICAgR2V0dGVyLAogICAgICAgICAgICBD
dXN0b20sCiAgICAgICAgICAgIFZhbHVlCiAgICAgICAgfTsKCiAgICAgICAgUHJvcGVydHlTbG90
KCkKICAgICAgICAgICAgOiBtX2NhY2hlZFByb3BlcnR5VHlwZShVbmNhY2hlYWJsZSkKICAgICAg
ICB7CiAgICAgICAgICAgIGNsZWFyQmFzZSgpOwogICAgICAgICAgICBjbGVhck9mZnNldCgpOwog
ICAgICAgICAgICBjbGVhclZhbHVlKCk7CiAgICAgICAgfQoKICAgICAgICBleHBsaWNpdCBQcm9w
ZXJ0eVNsb3QoY29uc3QgSlNWYWx1ZSBiYXNlKQogICAgICAgICAgICA6IG1fc2xvdEJhc2UoYmFz
ZSkKICAgICAgICAgICAgLCBtX2NhY2hlZFByb3BlcnR5VHlwZShVbmNhY2hlYWJsZSkKICAgICAg
ICB7CiAgICAgICAgICAgIGNsZWFyT2Zmc2V0KCk7CiAgICAgICAgICAgIGNsZWFyVmFsdWUoKTsK
ICAgICAgICB9CgogICAgICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkdldFZhbHVlRnVuYykoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgIHR5cGVk
ZWYgSlNWYWx1ZSAoKkdldEluZGV4VmFsdWVGdW5jKShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RC
YXNlLCB1bnNpZ25lZCk7CgogICAgICAgIEpTVmFsdWUgZ2V0VmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgewogICAgICAg
ICAgICBpZiAobV9nZXRWYWx1ZSA9PSAwKQogICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWU7
CiAgICAgICAgICAgIGlmIChtX2dldFZhbHVlID09IHJlaW50ZXJwcmV0X2Nhc3Q8R2V0VmFsdWVG
dW5jPigyKSkKICAgICAgICAgICAgICAgIHJldHVybiBtX2dldEluZGV4VmFsdWUoZXhlYywgc2xv
dEJhc2UoKSwgaW5kZXgoKSk7CiAgICAgICAgICAgIGlmIChtX2dldFZhbHVlID09IHJlaW50ZXJw
cmV0X2Nhc3Q8R2V0VmFsdWVGdW5jPigzKSkKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
bkdldHRlcihleGVjKTsKICAgICAgICAgICAgcmV0dXJuIG1fZ2V0VmFsdWUoZXhlYywgc2xvdEJh
c2UoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICB9CgogICAgICAgIEpTVmFsdWUgZ2V0VmFsdWUo
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgewog
ICAgICAgICAgICBpZiAobV9nZXRWYWx1ZSA9PSAwKQogICAgICAgICAgICAgICAgcmV0dXJuIG1f
dmFsdWU7CiAgICAgICAgICAgIGlmIChtX2dldFZhbHVlID09IHJlaW50ZXJwcmV0X2Nhc3Q8R2V0
VmFsdWVGdW5jPigyKSkKICAgICAgICAgICAgICAgIHJldHVybiBtX2dldEluZGV4VmFsdWUoZXhl
YywgbV9zbG90QmFzZSwgbV9kYXRhLmluZGV4KTsKICAgICAgICAgICAgaWYgKG1fZ2V0VmFsdWUg
PT0gcmVpbnRlcnByZXRfY2FzdDxHZXRWYWx1ZUZ1bmM+KDMpKQogICAgICAgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uR2V0dGVyKGV4ZWMpOwogICAgICAgICAgICByZXR1cm4gbV9nZXRWYWx1ZShl
eGVjLCBzbG90QmFzZSgpLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSkpOwog
ICAgICAgIH0KCiAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIGNhY2hlZFByb3BlcnR5VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlOyB9CiAgICAgICAgYm9vbCBpc0Nh
Y2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlICE9IFVuY2FjaGVh
YmxlOyB9CiAgICAgICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9j
YWNoZWRQcm9wZXJ0eVR5cGUgPT0gVmFsdWU7IH0KICAgICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0
KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIGRvIGlmICghKGlzQ2FjaGVhYmxlKCkpKSB7
IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIiwgOTQsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpc0Nh
Y2hlYWJsZSgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJf
dCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdo
aWxlICgwKTsKICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwogICAgICAgIH0KCiAgICAgICAg
dm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgIHsK
ICAgICAgICAgICAgZG8gaWYgKCEodmFsdWUpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIiwg
MTAwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAidmFsdWUiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJh
Y2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgp
OyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBjbGVhck9mZnNldCgp
OwogICAgICAgICAgICBtX2dldFZhbHVlID0gMDsKICAgICAgICAgICAgbV9zbG90QmFzZSA9IHNs
b3RCYXNlOwogICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2
b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIHNpemVfdCBvZmZz
ZXQpCiAgICAgICAgewogICAgICAgICAgICBkbyBpZiAoISh2YWx1ZSkpIHsgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgiLCAxMDksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJ2YWx1ZSIpOyBkbyB7IFdU
RlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgo
dm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAg
IG1fZ2V0VmFsdWUgPSAwOwogICAgICAgICAgICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7CiAgICAg
ICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CiAg
ICAgICAgICAgIG1fY2FjaGVkUHJvcGVydHlUeXBlID0gVmFsdWU7CiAgICAgICAgfQoKICAgICAg
ICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgewogICAgICAgICAgICBkbyBp
ZiAoISh2YWx1ZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgiLCAxMTksIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJ2YWx1ZSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgIGNsZWFyQmFzZSgpOwogICAgICAgICAgICBjbGVh
ck9mZnNldCgpOwogICAgICAgICAgICBtX2dldFZhbHVlID0gMDsKICAgICAgICAgICAgbV92YWx1
ZSA9IHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBzZXRDdXN0b20oSlNWYWx1ZSBzbG90
QmFzZSwgR2V0VmFsdWVGdW5jIGdldFZhbHVlKQogICAgICAgIHsKICAgICAgICAgICAgZG8gaWYg
KCEoc2xvdEJhc2UpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIiwgMTI4LCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAic2xvdEJhc2UiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBkbyBpZiAoIShnZXRWYWx1ZSkpIHsgV1RG
UmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlTbG90LmgiLCAxMjksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJnZXRWYWx1
ZSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFk
YmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBnZXRWYWx1ZTsKICAgICAgICAgICAgbV9nZXRJbmRl
eFZhbHVlID0gMDsKICAgICAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOwogICAgICAgIH0K
CiAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVDdXN0b20oSlNWYWx1ZSBzbG90QmFzZSwgR2V0VmFs
dWVGdW5jIGdldFZhbHVlKQogICAgICAgIHsKICAgICAgICAgICAgZG8gaWYgKCEoc2xvdEJhc2Up
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIiwgMTM3LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAi
c2xvdEJhc2UiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90
KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOwogICAgICAgICAgICBkbyBpZiAoIShnZXRWYWx1ZSkpIHsgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlTbG90LmgiLCAxMzgsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJnZXRWYWx1ZSIpOyBkbyB7IFdU
RlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgo
dm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAg
IG1fZ2V0VmFsdWUgPSBnZXRWYWx1ZTsKICAgICAgICAgICAgbV9nZXRJbmRleFZhbHVlID0gMDsK
ICAgICAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOwogICAgICAgICAgICBtX2NhY2hlZFBy
b3BlcnR5VHlwZSA9IEN1c3RvbTsKICAgICAgICB9CgogICAgICAgIHZvaWQgc2V0Q3VzdG9tSW5k
ZXgoSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQgaW5kZXgsIEdldEluZGV4VmFsdWVGdW5jIGdl
dEluZGV4VmFsdWUpCiAgICAgICAgewogICAgICAgICAgICBkbyBpZiAoIShzbG90QmFzZSkpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlTbG90LmgiLCAxNDcsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzbG90
QmFzZSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhi
YmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgICAgIGRvIGlmICghKGdldEluZGV4VmFsdWUpKSB7IFdURlJlcG9ydEFzc2Vy
dGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oIiwgMTQ4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiZ2V0SW5kZXhWYWx1ZSIpOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgICAgIG1fZ2V0VmFsdWUgPSByZWludGVycHJldF9jYXN0PEdldFZhbHVlRnVuYz4oMik7CiAg
ICAgICAgICAgIG1fZ2V0SW5kZXhWYWx1ZSA9IGdldEluZGV4VmFsdWU7CiAgICAgICAgICAgIG1f
c2xvdEJhc2UgPSBzbG90QmFzZTsKICAgICAgICAgICAgbV9kYXRhLmluZGV4ID0gaW5kZXg7CiAg
ICAgICAgfQoKICAgICAgICB2b2lkIHNldEdldHRlclNsb3QoSlNPYmplY3QqIGdldHRlckZ1bmMp
CiAgICAgICAgewogICAgICAgICAgICBkbyBpZiAoIShnZXR0ZXJGdW5jKSkgeyBXVEZSZXBvcnRB
c3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaCIsIDE1NywgX19QUkVUVFlfRlVOQ1RJT05fXywgImdldHRlckZ1bmMiKTsg
ZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYg
PSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAg
ICAgICAgICBtX3RoaXNWYWx1ZSA9IG1fc2xvdEJhc2U7CiAgICAgICAgICAgIG1fZ2V0VmFsdWUg
PSByZWludGVycHJldF9jYXN0PEdldFZhbHVlRnVuYz4oMyk7CiAgICAgICAgICAgIG1fZGF0YS5n
ZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsKICAgICAgICB9CgogICAgICAgIHZvaWQgc2V0Q2FjaGVh
YmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5z
aWduZWQgb2Zmc2V0KQogICAgICAgIHsKICAgICAgICAgICAgZG8gaWYgKCEoZ2V0dGVyRnVuYykp
IHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgiLCAxNjUsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJn
ZXR0ZXJGdW5jIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJf
dCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdo
aWxlICgwKTsKICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R2V0VmFs
dWVGdW5jPigzKTsKICAgICAgICAgICAgbV90aGlzVmFsdWUgPSBtX3Nsb3RCYXNlOwogICAgICAg
ICAgICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7CiAgICAgICAgICAgIG1fZGF0YS5nZXR0ZXJGdW5j
ID0gZ2V0dGVyRnVuYzsKICAgICAgICAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgICAg
IG1fY2FjaGVkUHJvcGVydHlUeXBlID0gR2V0dGVyOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBz
ZXRVbmRlZmluZWQoKQogICAgICAgIHsKICAgICAgICAgICAgc2V0VmFsdWUoanNVbmRlZmluZWQo
KSk7CiAgICAgICAgfQoKICAgICAgICBKU1ZhbHVlIHNsb3RCYXNlKCkgY29uc3QKICAgICAgICB7
CiAgICAgICAgICAgIHJldHVybiBtX3Nsb3RCYXNlOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBz
ZXRCYXNlKEpTVmFsdWUgYmFzZSkKICAgICAgICB7CiAgICAgICAgICAgIGRvIGlmICghKG1fc2xv
dEJhc2UpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIiwgMTg2LCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAibV9zbG90QmFzZSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgIGRvIGlmICghKGJhc2UpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oIiwgMTg3LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiYmFzZSIpOyBkbyB7IFdU
RlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgo
dm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAg
IG1fc2xvdEJhc2UgPSBiYXNlOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBjbGVhckJhc2UoKQog
ICAgICAgIHsKCiAgICAgICAgICAgIG1fc2xvdEJhc2UgPSBKU1ZhbHVlKCk7CgogICAgICAgIH0K
CiAgICAgICAgdm9pZCBjbGVhclZhbHVlKCkKICAgICAgICB7CgogICAgICAgICAgICBtX3ZhbHVl
ID0gSlNWYWx1ZSgpOwoKICAgICAgICB9CgogICAgICAgIHZvaWQgY2xlYXJPZmZzZXQoKQogICAg
ICAgIHsKCgogICAgICAgICAgICBtX29mZnNldCA9IDA7CiAgICAgICAgICAgIG1fY2FjaGVkUHJv
cGVydHlUeXBlID0gVW5jYWNoZWFibGU7CiAgICAgICAgfQoKICAgICAgICB1bnNpZ25lZCBpbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pbmRleDsgfQoKICAgICAgICBHZXRWYWx1ZUZ1bmMg
Y3VzdG9tR2V0dGVyKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIGRvIGlmICghKG1fY2Fj
aGVkUHJvcGVydHlUeXBlID09IEN1c3RvbSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgiLCAy
MTcsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX2NhY2hlZFByb3BlcnR5VHlwZSA9PSBDdXN0b20i
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwog
ICAgICAgICAgICByZXR1cm4gbV9nZXRWYWx1ZTsKICAgICAgICB9CiAgICBwcml2YXRlOgogICAg
ICAgIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7CgogICAgICAgIEdl
dFZhbHVlRnVuYyBtX2dldFZhbHVlOwogICAgICAgIEdldEluZGV4VmFsdWVGdW5jIG1fZ2V0SW5k
ZXhWYWx1ZTsKCiAgICAgICAgSlNWYWx1ZSBtX3Nsb3RCYXNlOwogICAgICAgIHVuaW9uIHsKICAg
ICAgICAgICAgSlNPYmplY3QqIGdldHRlckZ1bmM7CiAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4
OwogICAgICAgIH0gbV9kYXRhOwoKICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CiAgICAgICAgSlNW
YWx1ZSBtX3RoaXNWYWx1ZTsKCiAgICAgICAgc2l6ZV90IG1fb2Zmc2V0OwogICAgICAgIENhY2hl
ZFByb3BlcnR5VHlwZSBtX2NhY2hlZFByb3BlcnR5VHlwZTsKICAgIH07Cgp9CiMgMzIgIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiIDIKIyAxICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaCIgMQoj
IDI4ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNs
b3QuaCIKI2RlZmluZSBQdXRQcm9wZXJ0eVNsb3RfaCAKCgoKbmFtZXNwYWNlIEpTQyB7CgogICAg
Y2xhc3MgSlNPYmplY3Q7CiAgICBjbGFzcyBKU0Z1bmN0aW9uOwoKICAgIGNsYXNzIFB1dFByb3Bl
cnR5U2xvdCB7CiAgICBwdWJsaWM6CiAgICAgICAgZW51bSBUeXBlIHsgVW5jYWNoYWJsZSwgRXhp
c3RpbmdQcm9wZXJ0eSwgTmV3UHJvcGVydHkgfTsKCiAgICAgICAgUHV0UHJvcGVydHlTbG90KGJv
b2wgaXNTdHJpY3RNb2RlID0gZmFsc2UpCiAgICAgICAgICAgIDogbV90eXBlKFVuY2FjaGFibGUp
CiAgICAgICAgICAgICwgbV9iYXNlKDApCiAgICAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNT
dHJpY3RNb2RlKQogICAgICAgIHsKICAgICAgICB9CgogICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQ
cm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKICAgICAgICB7CiAgICAgICAg
ICAgIG1fdHlwZSA9IEV4aXN0aW5nUHJvcGVydHk7CiAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7
CiAgICAgICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgIH0KCiAgICAgICAgdm9pZCBz
ZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKICAgICAgICB7CiAg
ICAgICAgICAgIG1fdHlwZSA9IE5ld1Byb3BlcnR5OwogICAgICAgICAgICBtX2Jhc2UgPSBiYXNl
OwogICAgICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKICAgICAgICB9CgogICAgICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgICAgIEpTT2JqZWN0KiBiYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CgogICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlICE9IFVuY2FjaGFibGU7IH0KICAgICAgICBzaXplX3QgY2Fj
aGVkT2Zmc2V0KCkgY29uc3QgewogICAgICAgICAgICBkbyBpZiAoIShpc0NhY2hlYWJsZSgpKSkg
eyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaCIsIDY4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAi
aXNDYWNoZWFibGUoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50
cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsg
fSB3aGlsZSAoMCk7CiAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKICAgICAgICB9CgogICAg
cHJpdmF0ZToKICAgICAgICBUeXBlIG1fdHlwZTsKICAgICAgICBKU09iamVjdCogbV9iYXNlOwog
ICAgICAgIHNpemVfdCBtX29mZnNldDsKICAgICAgICBib29sIG1faXNTdHJpY3RNb2RlOwogICAg
fTsKCn0KIyAzMyAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
Q2hhaW4uaCIgMQojIDIyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y29wZUNoYWluLmgiCiNkZWZpbmUgU2NvcGVDaGFpbl9oIAoKCiMgMSAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgiCiNkZWZpbmUgU3RydWN0dXJl
X2ggCgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgiCiNkZWZpbmUgSlNUeXBlX2ggCgpuYW1lc3BhY2UgSlNDIHsKCgoKCiAgICBlbnVtIEpTVHlw
ZSB7CiAgICAgICAgVW5zcGVjaWZpZWRUeXBlID0gMCwKICAgICAgICBVbmRlZmluZWRUeXBlID0g
MSwKICAgICAgICBCb29sZWFuVHlwZSA9IDIsCiAgICAgICAgTnVtYmVyVHlwZSA9IDMsCiAgICAg
ICAgTnVsbFR5cGUgPSA0LAogICAgICAgIFN0cmluZ1R5cGUgPSA1LAogICAgICAgIExlYWZUeXBl
ID0gNiwKCiAgICAgICAgQ29tcG91bmRUeXBlID0gNywKICAgICAgICBPYmplY3RUeXBlID0gOCwK
ICAgICAgICBHZXR0ZXJTZXR0ZXJUeXBlID0gOSwKICAgICAgICBBUElWYWx1ZVdyYXBwZXIgPSAx
MAogICAgfTsKCn0KIyAzMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgiIDIKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCIgMQojIDIyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgojZGVmaW5lIFByb3BlcnR5
TWFwSGFzaFRhYmxlX2ggCgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9IYXNoVGFibGUuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIiAyCgoKCgoKI2RlZmluZSBEVU1QX1BST1BFUlRZ
TUFQX1NUQVRTIDAKIyA0NiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlNYXBIYXNoVGFibGUuaCIKI2RlZmluZSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRS
WV9LRVkgKChTdHJpbmdJbXBsKikxKQoKbmFtZXNwYWNlIEpTQyB7CgppbmxpbmUgYm9vbCBpc1Bv
d2VyT2YyKHVuc2lnbmVkIHYpCnsKCgogICAgcmV0dXJuICEodiAmICh2IC0gMSkpICYmIHY7Cn0K
CmlubGluZSB1bnNpZ25lZCBuZXh0UG93ZXJPZjIodW5zaWduZWQgdikKewoKCgogICAgdi0tOwog
ICAgdiB8PSB2ID4+IDE7CiAgICB2IHw9IHYgPj4gMjsKICAgIHYgfD0gdiA+PiA0OwogICAgdiB8
PSB2ID4+IDg7CiAgICB2IHw9IHYgPj4gMTY7CiAgICB2Kys7CgogICAgcmV0dXJuIHY7Cn0KCnN0
cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsKICAgIFN0cmluZ0ltcGwqIGtleTsKICAgIHVuc2lnbmVk
IG9mZnNldDsKICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICBXcml0ZUJhcnJpZXI8SlNDZWxs
PiBzcGVjaWZpY1ZhbHVlOwoKICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogICAgICAgIDoga2V5
KGtleSkKICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgICAgLCBhdHRyaWJ1dGVzKGF0dHJp
YnV0ZXMpCiAgICAgICAgLCBzcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIG93bmVyLCBzcGVjaWZp
Y1ZhbHVlLCBXcml0ZUJhcnJpZXI8SlNDZWxsPjo6TWF5QmVOdWxsKQogICAgewogICAgfQp9OwoK
Y2xhc3MgUHJvcGVydHlUYWJsZSB7CiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2
b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyB2
b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hW
YWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3KTsgcmV0
dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdE1hbGxv
Y01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcp
OyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUp
IHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01h
dGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0Fy
cmF5KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5
cGVDbGFzc05ld0FycmF5KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHByaXZhdGU6IHR5cGVkZWYg
aW50IFRoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwoKCgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgIGNsYXNzIG9yZGVyZWRfaXRlcmF0b3IgewogICAgcHVibGlj
OgogICAgICAgIG9yZGVyZWRfaXRlcmF0b3I8VD4mIG9wZXJhdG9yKysoKQogICAgICAgIHsKICAg
ICAgICAgICAgbV92YWx1ZVB0ciA9IHNraXBEZWxldGVkRW50cmllcyhtX3ZhbHVlUHRyICsgMSk7
CiAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICB9CgogICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBvcmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikKICAgICAgICB7CiAgICAgICAg
ICAgIHJldHVybiBtX3ZhbHVlUHRyID09IG90aGVyLm1fdmFsdWVQdHI7CiAgICAgICAgfQoKICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qgb3JkZXJlZF9pdGVyYXRvcjxUPiYgb3RoZXIpCiAg
ICAgICAgewogICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0ciAhPSBvdGhlci5tX3ZhbHVlUHRy
OwogICAgICAgIH0KCiAgICAgICAgVCYgb3BlcmF0b3IqKCkKICAgICAgICB7CiAgICAgICAgICAg
IHJldHVybiAqbV92YWx1ZVB0cjsKICAgICAgICB9CgogICAgICAgIFQqIG9wZXJhdG9yLT4oKQog
ICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQdHI7CiAgICAgICAgfQoKICAgICAg
ICBvcmRlcmVkX2l0ZXJhdG9yKFQqIHZhbHVlUHRyKQogICAgICAgICAgICA6IG1fdmFsdWVQdHIo
dmFsdWVQdHIpCiAgICAgICAgewogICAgICAgIH0KCiAgICBwcml2YXRlOgogICAgICAgIFQqIG1f
dmFsdWVQdHI7CiAgICB9OwoKcHVibGljOgogICAgdHlwZWRlZiBTdHJpbmdJbXBsKiBLZXlUeXBl
OwogICAgdHlwZWRlZiBQcm9wZXJ0eU1hcEVudHJ5IFZhbHVlVHlwZTsKCgogICAgdHlwZWRlZiBv
cmRlcmVkX2l0ZXJhdG9yPFZhbHVlVHlwZT4gaXRlcmF0b3I7CiAgICB0eXBlZGVmIG9yZGVyZWRf
aXRlcmF0b3I8Y29uc3QgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsKCgoKCiAgICB0eXBlZGVm
IHN0ZDo6cGFpcjxWYWx1ZVR5cGUqLCB1bnNpZ25lZD4gZmluZF9pdGVyYXRvcjsKCgogICAgZXhw
bGljaXQgUHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOwogICAgUHJvcGVy
dHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CiAg
ICBQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCosIHVuc2lnbmVkIGluaXRpYWxD
YXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYpOwogICAgflByb3BlcnR5VGFibGUoKTsKCgog
ICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgIGl0ZXJhdG9yIGVuZCgpOwogICAgY29uc3RfaXRlcmF0
b3IgYmVnaW4oKSBjb25zdDsKICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OwoKCiAgICBm
aW5kX2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOwogICAgZmluZF9pdGVyYXRvciBmaW5k
V2l0aFN0cmluZyhjb25zdCBLZXlUeXBlJik7CgogICAgc3RkOjpwYWlyPGZpbmRfaXRlcmF0b3Is
IGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KTsKCiAgICB2b2lkIHJlbW92ZShjb25z
dCBmaW5kX2l0ZXJhdG9yJiBpdGVyKTsKICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtl
eSk7CgoKICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdDsKCgogICAgYm9vbCBpc0VtcHR5KCkgY29u
c3Q7CgoKICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZVNpemUoKSBjb25zdDsKCgogICAgdm9p
ZCBjbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICBib29sIGhhc0RlbGV0ZWRPZmZzZXQoKTsKICAg
IHVuc2lnbmVkIGdldERlbGV0ZWRPZmZzZXQoKTsKICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldCh1
bnNpZ25lZCBvZmZzZXQpOwoKCiAgICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHkoSlNH
bG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpOwoKCiAgICBz
aXplX3Qgc2l6ZUluTWVtb3J5KCk7CiAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKCgpwcml2
YXRlOgogICAgUHJvcGVydHlUYWJsZShjb25zdCBQcm9wZXJ0eVRhYmxlJik7CgogICAgdm9pZCBy
ZWluc2VydChjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KTsKCgogICAgdm9pZCByZWhhc2godW5zaWdu
ZWQgbmV3Q2FwYWNpdHkpOwoKCiAgICB1bnNpZ25lZCB0YWJsZUNhcGFjaXR5KCkgY29uc3Q7CiMg
MjA2ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhh
c2hUYWJsZS5oIgogICAgdW5zaWduZWQgZGVsZXRlZEVudHJ5SW5kZXgoKSBjb25zdDsKCgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgIHN0YXRpYyBUKiBza2lwRGVsZXRlZEVudHJpZXMoVCog
dmFsdWVQdHIpOwoKCiAgICBWYWx1ZVR5cGUqIHRhYmxlKCk7CiAgICBjb25zdCBWYWx1ZVR5cGUq
IHRhYmxlKCkgY29uc3Q7CgoKICAgIHVuc2lnbmVkIHVzZWRDb3VudCgpIGNvbnN0OwoKCiAgICBz
aXplX3QgZGF0YVNpemUoKTsKCgogICAgc3RhdGljIHVuc2lnbmVkIHNpemVGb3JDYXBhY2l0eSh1
bnNpZ25lZCBjYXBhY2l0eSk7CgoKICAgIGJvb2wgY2FuSW5zZXJ0KCk7CgogICAgdW5zaWduZWQg
bV9pbmRleFNpemU7CiAgICB1bnNpZ25lZCBtX2luZGV4TWFzazsKICAgIHVuc2lnbmVkKiBtX2lu
ZGV4OwogICAgdW5zaWduZWQgbV9rZXlDb3VudDsKICAgIHVuc2lnbmVkIG1fZGVsZXRlZENvdW50
OwogICAgT3duUHRyPCBWZWN0b3I8dW5zaWduZWQ+ID4gbV9kZWxldGVkT2Zmc2V0czsKCiAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgTWluaW11bVRhYmxlU2l6ZSA9IDE2OwogICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIEVtcHR5RW50cnlJbmRleCA9IDA7Cn07CgppbmxpbmUgUHJvcGVydHlUYWJs
ZTo6UHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpCiAgICA6IG1faW5kZXhT
aXplKHNpemVGb3JDYXBhY2l0eShpbml0aWFsQ2FwYWNpdHkpKQogICAgLCBtX2luZGV4TWFzayht
X2luZGV4U2l6ZSAtIDEpCiAgICAsIG1faW5kZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQqPihmYXN0
WmVyb2VkTWFsbG9jKGRhdGFTaXplKCkpKSkKICAgICwgbV9rZXlDb3VudCgwKQogICAgLCBtX2Rl
bGV0ZWRDb3VudCgwKQp7CiAgICBkbyBpZiAoIShpc1Bvd2VyT2YyKG1faW5kZXhTaXplKSkpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCIsIDI0NiwgX19QUkVUVFlfRlVOQ1RJT05f
XywgImlzUG93ZXJPZjIobV9pbmRleFNpemUpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7
ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKfQoKaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3Bl
cnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgY29uc3QgUHJvcGVydHlUYWJs
ZSYgb3RoZXIpCiAgICA6IG1faW5kZXhTaXplKG90aGVyLm1faW5kZXhTaXplKQogICAgLCBtX2lu
ZGV4TWFzayhvdGhlci5tX2luZGV4TWFzaykKICAgICwgbV9pbmRleChzdGF0aWNfY2FzdDx1bnNp
Z25lZCo+KGZhc3RNYWxsb2MoZGF0YVNpemUoKSkpKQogICAgLCBtX2tleUNvdW50KG90aGVyLm1f
a2V5Q291bnQpCiAgICAsIG1fZGVsZXRlZENvdW50KG90aGVyLm1fZGVsZXRlZENvdW50KQp7CiAg
ICBkbyBpZiAoIShpc1Bvd2VyT2YyKG1faW5kZXhTaXplKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaCIsIDI1NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgImlzUG93ZXJPZjIobV9p
bmRleFNpemUpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJf
dCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdo
aWxlICgwKTsKCiAgICBtZW1jcHkobV9pbmRleCwgb3RoZXIubV9pbmRleCwgZGF0YVNpemUoKSk7
CgogICAgaXRlcmF0b3IgZW5kID0gdGhpcy0+ZW5kKCk7CiAgICBmb3IgKGl0ZXJhdG9yIGl0ZXIg
PSBiZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgaXRlci0+a2V5LT5yZWYo
KTsKICAgICAgICBIZWFwOjp3cml0ZUJhcnJpZXIob3duZXIsIGl0ZXItPnNwZWNpZmljVmFsdWUu
Z2V0KCkpOwogICAgfQoKCiAgICBWZWN0b3I8dW5zaWduZWQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRz
ID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgIGlmIChvdGhlckRlbGV0ZWRPZmZz
ZXRzKQogICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2ln
bmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOwp9CgppbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJv
cGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBpbml0aWFs
Q2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQogICAgOiBtX2luZGV4U2l6ZShz
aXplRm9yQ2FwYWNpdHkoaW5pdGlhbENhcGFjaXR5KSkKICAgICwgbV9pbmRleE1hc2sobV9pbmRl
eFNpemUgLSAxKQogICAgLCBtX2luZGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkKj4oZmFzdFplcm9l
ZE1hbGxvYyhkYXRhU2l6ZSgpKSkpCiAgICAsIG1fa2V5Q291bnQoMCkKICAgICwgbV9kZWxldGVk
Q291bnQoMCkKewogICAgZG8gaWYgKCEoaXNQb3dlck9mMihtX2luZGV4U2l6ZSkpKSB7IFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgiLCAyNzksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJp
c1Bvd2VyT2YyKG1faW5kZXhTaXplKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICBkbyBpZiAoIShpbml0aWFsQ2FwYWNpdHkgPj0gb3Ro
ZXIubV9rZXlDb3VudCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCIsIDI4MCwg
X19QUkVUVFlfRlVOQ1RJT05fXywgImluaXRpYWxDYXBhY2l0eSA+PSBvdGhlci5tX2tleUNvdW50
Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRi
ZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsK
CiAgICBjb25zdF9pdGVyYXRvciBlbmQgPSBvdGhlci5lbmQoKTsKICAgIGZvciAoY29uc3RfaXRl
cmF0b3IgaXRlciA9IG90aGVyLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAg
ICBkbyBpZiAoIShjYW5JbnNlcnQoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aCIsIDI4NCwgX19QUkVUVFlfRlVOQ1RJT05fXywgImNhbkluc2VydCgpIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICByZWluc2Vy
dCgqaXRlcik7CiAgICAgICAgaXRlci0+a2V5LT5yZWYoKTsKICAgICAgICBIZWFwOjp3cml0ZUJh
cnJpZXIob3duZXIsIGl0ZXItPnNwZWNpZmljVmFsdWUuZ2V0KCkpOwogICAgfQoKCiAgICBWZWN0
b3I8dW5zaWduZWQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0
cy5nZXQoKTsKICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQogICAgICAgIG1fZGVsZXRlZE9m
ZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0
cykpOwp9CgppbmxpbmUgUHJvcGVydHlUYWJsZTo6flByb3BlcnR5VGFibGUoKQp7CiAgICBpdGVy
YXRvciBlbmQgPSB0aGlzLT5lbmQoKTsKICAgIGZvciAoaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgaXRlci0+a2V5LT5kZXJlZigpOwoKICAgIGZh
c3RGcmVlKG1faW5kZXgpOwp9CgppbmxpbmUgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgUHJvcGVy
dHlUYWJsZTo6YmVnaW4oKQp7CiAgICByZXR1cm4gaXRlcmF0b3Ioc2tpcERlbGV0ZWRFbnRyaWVz
KHRhYmxlKCkpKTsKfQoKaW5saW5lIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIFByb3BlcnR5VGFi
bGU6OmVuZCgpCnsKICAgIHJldHVybiBpdGVyYXRvcih0YWJsZSgpICsgdXNlZENvdW50KCkpOwp9
CgppbmxpbmUgUHJvcGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6YmVn
aW4oKSBjb25zdAp7CiAgICByZXR1cm4gY29uc3RfaXRlcmF0b3Ioc2tpcERlbGV0ZWRFbnRyaWVz
KHRhYmxlKCkpKTsKfQoKaW5saW5lIFByb3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJhdG9yIFByb3Bl
cnR5VGFibGU6OmVuZCgpIGNvbnN0CnsKICAgIHJldHVybiBjb25zdF9pdGVyYXRvcih0YWJsZSgp
ICsgdXNlZENvdW50KCkpOwp9CgppbmxpbmUgUHJvcGVydHlUYWJsZTo6ZmluZF9pdGVyYXRvciBQ
cm9wZXJ0eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkKewogICAgZG8gaWYgKCEoa2V5
KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIiwgMzI3LCBfX1BSRVRUWV9GVU5D
VElPTl9fLCAia2V5Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsKICAgIGRvIGlmICghKGtleS0+aXNJZGVudGlmaWVyKCkpKSB7IFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgiLCAzMjgsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJrZXkt
PmlzSWRlbnRpZmllcigpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVp
bnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsKICAgIHVuc2lnbmVkIGhhc2ggPSBrZXktPmV4aXN0aW5nSGFzaCgpOwog
ICAgdW5zaWduZWQgc3RlcCA9IDA7CgoKCgoKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgdW5z
aWduZWQgZW50cnlJbmRleCA9IG1faW5kZXhbaGFzaCAmIG1faW5kZXhNYXNrXTsKICAgICAgICBp
ZiAoZW50cnlJbmRleCA9PSBFbXB0eUVudHJ5SW5kZXgpCiAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcigoVmFsdWVUeXBlKikwLCBoYXNoICYgbV9pbmRleE1hc2spOwogICAgICAgIGlm
IChrZXkgPT0gdGFibGUoKVtlbnRyeUluZGV4IC0gMV0ua2V5KQogICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoJnRhYmxlKClbZW50cnlJbmRleCAtIDFdLCBoYXNoICYgbV9pbmRleE1h
c2spOwoKCgoKCiAgICAgICAgaWYgKCFzdGVwKQogICAgICAgICAgICBzdGVwID0gV1RGOjpkb3Vi
bGVIYXNoKGtleS0+ZXhpc3RpbmdIYXNoKCkpIHwgMTsKICAgICAgICBoYXNoICs9IHN0ZXA7CgoK
CgogICAgfQp9CgppbmxpbmUgUHJvcGVydHlUYWJsZTo6ZmluZF9pdGVyYXRvciBQcm9wZXJ0eVRh
YmxlOjpmaW5kV2l0aFN0cmluZyhjb25zdCBLZXlUeXBlJiBrZXkpCnsKICAgIGRvIGlmICghKGtl
eSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCIsIDM1OSwgX19QUkVUVFlfRlVO
Q1RJT05fXywgImtleSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50
cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsg
fSB3aGlsZSAoMCk7CiAgICBkbyBpZiAoISgha2V5LT5pc0lkZW50aWZpZXIoKSAmJiAha2V5LT5o
YXNIYXNoKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgiLCAzNjAsIF9fUFJF
VFRZX0ZVTkNUSU9OX18sICIha2V5LT5pc0lkZW50aWZpZXIoKSAmJiAha2V5LT5oYXNIYXNoKCki
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwog
ICAgdW5zaWduZWQgaGFzaCA9IGtleS0+aGFzaCgpOwogICAgdW5zaWduZWQgc3RlcCA9IDA7CgoK
CgoKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgdW5zaWduZWQgZW50cnlJbmRleCA9IG1faW5k
ZXhbaGFzaCAmIG1faW5kZXhNYXNrXTsKICAgICAgICBpZiAoZW50cnlJbmRleCA9PSBFbXB0eUVu
dHJ5SW5kZXgpCiAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigoVmFsdWVUeXBlKikw
LCBoYXNoICYgbV9pbmRleE1hc2spOwogICAgICAgIGlmIChlcXVhbChrZXksIHRhYmxlKClbZW50
cnlJbmRleCAtIDFdLmtleSkpCiAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigmdGFi
bGUoKVtlbnRyeUluZGV4IC0gMV0sIGhhc2ggJiBtX2luZGV4TWFzayk7CgoKCgoKICAgICAgICBp
ZiAoIXN0ZXApCiAgICAgICAgICAgIHN0ZXAgPSBXVEY6OmRvdWJsZUhhc2goa2V5LT5leGlzdGlu
Z0hhc2goKSkgfCAxOwogICAgICAgIGhhc2ggKz0gc3RlcDsKCgoKCiAgICB9Cn0KCmlubGluZSBz
dGQ6OnBhaXI8UHJvcGVydHlUYWJsZTo6ZmluZF9pdGVyYXRvciwgYm9vbD4gUHJvcGVydHlUYWJs
ZTo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgZW50cnkpCnsKCiAgICBmaW5kX2l0ZXJhdG9yIGl0ZXIg
PSBmaW5kKGVudHJ5LmtleSk7CiAgICBpZiAoaXRlci5maXJzdCkKICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIoaXRlciwgZmFsc2UpOwoKCiAgICBlbnRyeS5rZXktPnJlZigpOwoKCiAgICBp
ZiAoIWNhbkluc2VydCgpKSB7CiAgICAgICAgcmVoYXNoKG1fa2V5Q291bnQgKyAxKTsKICAgICAg
ICBpdGVyID0gZmluZChlbnRyeS5rZXkpOwogICAgICAgIGRvIGlmICghKCFpdGVyLmZpcnN0KSkg
eyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIiwgNDAzLCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAiIWl0ZXIuZmlyc3QiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKiko
dWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxz
ZSk7IH0gd2hpbGUgKDApOwogICAgfQoKCiAgICB1bnNpZ25lZCBlbnRyeUluZGV4ID0gdXNlZENv
dW50KCkgKyAxOwogICAgbV9pbmRleFtpdGVyLnNlY29uZF0gPSBlbnRyeUluZGV4OwogICAgaXRl
ci5maXJzdCA9ICZ0YWJsZSgpW2VudHJ5SW5kZXggLSAxXTsKICAgICppdGVyLmZpcnN0ID0gZW50
cnk7CgogICAgKyttX2tleUNvdW50OwogICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGl0ZXIsIHRy
dWUpOwp9CgppbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjpyZW1vdmUoY29uc3QgZmluZF9pdGVy
YXRvciYgaXRlcikKewoKICAgIGlmICghaXRlci5maXJzdCkKICAgICAgICByZXR1cm47CgoKCgoK
CgogICAgbV9pbmRleFtpdGVyLnNlY29uZF0gPSBkZWxldGVkRW50cnlJbmRleCgpOwogICAgaXRl
ci5maXJzdC0+a2V5LT5kZXJlZigpOwogICAgaXRlci5maXJzdC0+a2V5ID0gKChTdHJpbmdJbXBs
KikxKTsKCiAgICBkbyBpZiAoIShtX2tleUNvdW50ID49IDEpKSB7IFdURlJlcG9ydEFzc2VydGlv
bkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmgiLCA0MzIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX2tleUNvdW50ID49
IDEiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgLS1tX2tleUNvdW50OwogICAgKyttX2RlbGV0ZWRDb3VudDsKCiAgICBpZiAobV9kZWxl
dGVkQ291bnQgKiA0ID49IG1faW5kZXhTaXplKQogICAgICAgIHJlaGFzaChtX2tleUNvdW50KTsK
fQoKaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkK
ewogICAgcmVtb3ZlKGZpbmQoa2V5KSk7Cn0KCgppbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJs
ZTo6c2l6ZSgpIGNvbnN0CnsKICAgIHJldHVybiBtX2tleUNvdW50Owp9CgppbmxpbmUgYm9vbCBQ
cm9wZXJ0eVRhYmxlOjppc0VtcHR5KCkgY29uc3QKewogICAgcmV0dXJuICFtX2tleUNvdW50Owp9
CgppbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6cHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNv
bnN0CnsKICAgIHJldHVybiBzaXplKCkgKyAobV9kZWxldGVkT2Zmc2V0cyA/IG1fZGVsZXRlZE9m
ZnNldHMtPnNpemUoKSA6IDApOwp9CgppbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjpjbGVhckRl
bGV0ZWRPZmZzZXRzKCkKewogICAgbV9kZWxldGVkT2Zmc2V0cy5jbGVhcigpOwp9CgppbmxpbmUg
Ym9vbCBQcm9wZXJ0eVRhYmxlOjpoYXNEZWxldGVkT2Zmc2V0KCkKewogICAgcmV0dXJuIG1fZGVs
ZXRlZE9mZnNldHMgJiYgIW1fZGVsZXRlZE9mZnNldHMtPmlzRW1wdHkoKTsKfQoKaW5saW5lIHVu
c2lnbmVkIFByb3BlcnR5VGFibGU6OmdldERlbGV0ZWRPZmZzZXQoKQp7CiAgICB1bnNpZ25lZCBv
ZmZzZXQgPSBtX2RlbGV0ZWRPZmZzZXRzLT5sYXN0KCk7CiAgICBtX2RlbGV0ZWRPZmZzZXRzLT5y
ZW1vdmVMYXN0KCk7CiAgICByZXR1cm4gb2Zmc2V0Owp9CgppbmxpbmUgdm9pZCBQcm9wZXJ0eVRh
YmxlOjphZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkKewogICAgaWYgKCFtX2RlbGV0
ZWRPZmZzZXRzKQogICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9y
PHVuc2lnbmVkPik7CiAgICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKfQoKaW5s
aW5lIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29weShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQp7
CiAgICBkbyBpZiAoIShuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KSkgeyBXVEZSZXBvcnRBc3Nl
cnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU1hcEhhc2hUYWJsZS5oIiwgNDg3LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibmV3Q2FwYWNp
dHkgPj0gbV9rZXlDb3VudCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7CgoKCiAgICBpZiAoc2l6ZUZvckNhcGFjaXR5KG5ld0NhcGFjaXR5KSA9
PSBtX2luZGV4U2l6ZSkKICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFByb3BlcnR5VGFibGUo
Z2xvYmFsRGF0YSwgb3duZXIsICp0aGlzKSk7CiAgICByZXR1cm4gYWRvcHRQdHIobmV3IFByb3Bl
cnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsIG5ld0NhcGFjaXR5LCAqdGhpcykpOwp9CgoKaW5s
aW5lIHNpemVfdCBQcm9wZXJ0eVRhYmxlOjpzaXplSW5NZW1vcnkoKQp7CiAgICBzaXplX3QgcmVz
dWx0ID0gc2l6ZW9mKFByb3BlcnR5VGFibGUpICsgZGF0YVNpemUoKTsKICAgIGlmIChtX2RlbGV0
ZWRPZmZzZXRzKQogICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNpdHko
KSAqIHNpemVvZih1bnNpZ25lZCkpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKCmlubGluZSB2b2lk
IFByb3BlcnR5VGFibGU6OnJlaW5zZXJ0KGNvbnN0IFZhbHVlVHlwZSYgZW50cnkpCnsKCgogICAg
ZG8gaWYgKCEoY2FuSW5zZXJ0KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgi
LCA1MTAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJjYW5JbnNlcnQoKSIpOyBkbyB7IFdURlJlcG9y
dEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgq
KSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICBmaW5kX2l0ZXJhdG9y
IGl0ZXIgPSBmaW5kKGVudHJ5LmtleSk7CiAgICBkbyBpZiAoISghaXRlci5maXJzdCkpIHsgV1RG
UmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCIsIDUxMiwgX19QUkVUVFlfRlVOQ1RJT05fXywg
IiFpdGVyLmZpcnN0Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsKCiAgICB1bnNpZ25lZCBlbnRyeUluZGV4ID0gdXNlZENvdW50KCkgKyAxOwog
ICAgbV9pbmRleFtpdGVyLnNlY29uZF0gPSBlbnRyeUluZGV4OwogICAgdGFibGUoKVtlbnRyeUlu
ZGV4IC0gMV0gPSBlbnRyeTsKCiAgICArK21fa2V5Q291bnQ7Cn0KCmlubGluZSB2b2lkIFByb3Bl
cnR5VGFibGU6OnJlaGFzaCh1bnNpZ25lZCBuZXdDYXBhY2l0eSkKewogICAgdW5zaWduZWQqIG9s
ZEVudHJ5SW5kaWNlcyA9IG1faW5kZXg7CiAgICBpdGVyYXRvciBpdGVyID0gdGhpcy0+YmVnaW4o
KTsKICAgIGl0ZXJhdG9yIGVuZCA9IHRoaXMtPmVuZCgpOwoKICAgIG1faW5kZXhTaXplID0gc2l6
ZUZvckNhcGFjaXR5KG5ld0NhcGFjaXR5KTsKICAgIG1faW5kZXhNYXNrID0gbV9pbmRleFNpemUg
LSAxOwogICAgbV9rZXlDb3VudCA9IDA7CiAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CiAgICBtX2lu
ZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQqPihmYXN0WmVyb2VkTWFsbG9jKGRhdGFTaXplKCkp
KTsKCiAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgIGRvIGlmICghKGNh
bkluc2VydCgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIiwgNTM0LCBfX1BS
RVRUWV9GVU5DVElPTl9fLCAiY2FuSW5zZXJ0KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2Uo
KTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9
IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIHJlaW5zZXJ0KCppdGVyKTsKICAg
IH0KCiAgICBmYXN0RnJlZShvbGRFbnRyeUluZGljZXMpOwp9CgppbmxpbmUgdW5zaWduZWQgUHJv
cGVydHlUYWJsZTo6dGFibGVDYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhTaXplID4+
IDE7IH0KCmlubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpkZWxldGVkRW50cnlJbmRleCgp
IGNvbnN0IHsgcmV0dXJuIHRhYmxlQ2FwYWNpdHkoKSArIDE7IH0KCnRlbXBsYXRlPHR5cGVuYW1l
IFQ+CmlubGluZSBUKiBQcm9wZXJ0eVRhYmxlOjpza2lwRGVsZXRlZEVudHJpZXMoVCogdmFsdWVQ
dHIpCnsKICAgIHdoaWxlICh2YWx1ZVB0ci0+a2V5ID09ICgoU3RyaW5nSW1wbCopMSkpCiAgICAg
ICAgKyt2YWx1ZVB0cjsKICAgIHJldHVybiB2YWx1ZVB0cjsKfQoKaW5saW5lIFByb3BlcnR5VGFi
bGU6OlZhbHVlVHlwZSogUHJvcGVydHlUYWJsZTo6dGFibGUoKQp7CgogICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VmFsdWVUeXBlKj4obV9pbmRleCArIG1faW5kZXhTaXplKTsKfQoKaW5saW5l
IGNvbnN0IFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJvcGVydHlUYWJsZTo6dGFibGUoKSBj
b25zdAp7CgogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVmFsdWVUeXBlKj4obV9p
bmRleCArIG1faW5kZXhTaXplKTsKfQoKaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6OnVz
ZWRDb3VudCgpIGNvbnN0CnsKCiAgICByZXR1cm4gbV9rZXlDb3VudCArIG1fZGVsZXRlZENvdW50
Owp9CgppbmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OmRhdGFTaXplKCkKewoKICAgIHJldHVy
biBtX2luZGV4U2l6ZSAqIHNpemVvZih1bnNpZ25lZCkgKyAoKHRhYmxlQ2FwYWNpdHkoKSkgKyAx
KSAqIHNpemVvZihWYWx1ZVR5cGUpOwp9CgppbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6
c2l6ZUZvckNhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KQp7CiAgICBpZiAoY2FwYWNpdHkgPCA4
KQogICAgICAgIHJldHVybiBNaW5pbXVtVGFibGVTaXplOwogICAgcmV0dXJuIG5leHRQb3dlck9m
MihjYXBhY2l0eSArIDEpICogMjsKfQoKaW5saW5lIGJvb2wgUHJvcGVydHlUYWJsZTo6Y2FuSW5z
ZXJ0KCkKewogICAgcmV0dXJuIHVzZWRDb3VudCgpIDwgdGFibGVDYXBhY2l0eSgpOwp9Cgp9CiMg
MzQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiAy
CiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
QXJyYXkuaCIgMQojIDIyICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oIgojZGVmaW5lIFByb3BlcnR5TmFtZUFycmF5X2ggCgoKCgoKCgpu
YW1lc3BhY2UgSlNDIHsKCiAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICBjbGFzcyBTdHJ1Y3R1cmVD
aGFpbjsKCgogICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhIDogcHVibGljIFJlZkNvdW50
ZWQ8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiB7CiAgICBwdWJsaWM6CiAgICAgICAgdHlwZWRlZiBW
ZWN0b3I8SWRlbnRpZmllciwgMjA+IFByb3BlcnR5TmFtZVZlY3RvcjsKCiAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgUHJvcGVydHlOYW1lQXJyYXlEYXRhKTsgfQoKICAgICAgICBQcm9wZXJ0eU5hbWVW
ZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvcigpIHsgcmV0dXJuIG1fcHJvcGVydHlOYW1lVmVjdG9y
OyB9CgogICAgcHJpdmF0ZToKICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGEoKQogICAgICAg
IHsKICAgICAgICB9CgogICAgICAgIFByb3BlcnR5TmFtZVZlY3RvciBtX3Byb3BlcnR5TmFtZVZl
Y3RvcjsKICAgIH07CgoKICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5IHsKICAgIHB1YmxpYzoK
ICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAg
ICAgICAgIDogbV9kYXRhKFByb3BlcnR5TmFtZUFycmF5RGF0YTo6Y3JlYXRlKCkpCiAgICAgICAg
ICAgICwgbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAgICAgICAgICAgICwgbV9zaG91bGRDYWNo
ZSh0cnVlKQogICAgICAgIHsKICAgICAgICB9CgogICAgICAgIFByb3BlcnR5TmFtZUFycmF5KEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgOiBtX2RhdGEoUHJvcGVydHlOYW1lQXJyYXlEYXRh
OjpjcmVhdGUoKSkKICAgICAgICAgICAgLCBtX2dsb2JhbERhdGEoJmV4ZWMtPmdsb2JhbERhdGEo
KSkKICAgICAgICAgICAgLCBtX3Nob3VsZENhY2hlKHRydWUpCiAgICAgICAgewogICAgICAgIH0K
CiAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgeyByZXR1cm4gbV9nbG9iYWxEYXRh
OyB9CgogICAgICAgIHZvaWQgYWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgYWRk
KGlkZW50aWZpZXIuaW1wbCgpKTsgfQogICAgICAgIHZvaWQgYWRkKFN0cmluZ0ltcGwqKTsKICAg
ICAgICB2b2lkIGFkZEtub3duVW5pcXVlKFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpIHsgbV9kYXRh
LT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5hcHBlbmQoSWRlbnRpZmllcihtX2dsb2JhbERhdGEsIGlk
ZW50aWZpZXIpKTsgfQoKICAgICAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkp
IHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KCiAgICAgICAgdm9pZCBzZXREYXRhKFBhc3NS
ZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBkYXRhKSB7IG1fZGF0YSA9IGRhdGE7IH0KICAg
ICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIGRhdGEoKSB7IHJldHVybiBtX2RhdGEuZ2V0KCk7
IH0KICAgICAgICBQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4gcmVsZWFzZURhdGEo
KSB7IHJldHVybiBtX2RhdGEucmVsZWFzZSgpOyB9CgoKICAgICAgICB0eXBlZGVmIFByb3BlcnR5
TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yOjpjb25zdF9pdGVyYXRvciBjb25zdF9p
dGVyYXRvcjsKICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+cHJv
cGVydHlOYW1lVmVjdG9yKCkuc2l6ZSgpOyB9CiAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmJlZ2luKCk7IH0K
ICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPnByb3Bl
cnR5TmFtZVZlY3RvcigpLmVuZCgpOyB9CgogICAgcHJpdmF0ZToKICAgICAgICB0eXBlZGVmIEhh
c2hTZXQ8U3RyaW5nSW1wbCosIFB0ckhhc2g8U3RyaW5nSW1wbCo+ID4gSWRlbnRpZmllclNldDsK
CiAgICAgICAgUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4gbV9kYXRhOwogICAgICAgIElk
ZW50aWZpZXJTZXQgbV9zZXQ7CiAgICAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CiAg
ICAgICAgYm9vbCBtX3Nob3VsZENhY2hlOwogICAgfTsKCn0KIyAzNSAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90ZWN0LmgiIDEKIyAyMyAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdGVjdC5oIgojZGVmaW5lIFByb3RlY3RfaCAK
CgoKCm5hbWVzcGFjZSBKU0MgewoKICAgIGlubGluZSB2b2lkIGdjUHJvdGVjdChKU0NlbGwqIHZh
bCkKICAgIHsKICAgICAgICBIZWFwOjpoZWFwKHZhbCktPnByb3RlY3QodmFsKTsKICAgIH0KCiAg
ICBpbmxpbmUgdm9pZCBnY1VucHJvdGVjdChKU0NlbGwqIHZhbCkKICAgIHsKICAgICAgICBIZWFw
OjpoZWFwKHZhbCktPnVucHJvdGVjdCh2YWwpOwogICAgfQoKICAgIGlubGluZSB2b2lkIGdjUHJv
dGVjdE51bGxUb2xlcmFudChKU0NlbGwqIHZhbCkKICAgIHsKICAgICAgICBpZiAodmFsKQogICAg
ICAgICAgICBnY1Byb3RlY3QodmFsKTsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBnY1VucHJvdGVj
dE51bGxUb2xlcmFudChKU0NlbGwqIHZhbCkKICAgIHsKICAgICAgICBpZiAodmFsKQogICAgICAg
ICAgICBnY1VucHJvdGVjdCh2YWwpOwogICAgfQoKICAgIGlubGluZSB2b2lkIGdjUHJvdGVjdChK
U1ZhbHVlIHZhbHVlKQogICAgewogICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSkK
ICAgICAgICAgICAgZ2NQcm90ZWN0KHZhbHVlLmFzQ2VsbCgpKTsKICAgIH0KCiAgICBpbmxpbmUg
dm9pZCBnY1VucHJvdGVjdChKU1ZhbHVlIHZhbHVlKQogICAgewogICAgICAgIGlmICh2YWx1ZSAm
JiB2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgICAgZ2NVbnByb3RlY3QodmFsdWUuYXNDZWxsKCkp
OwogICAgfQoKfQojIDM2ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgojZGVmaW5lIFN0
cnVjdHVyZVRyYW5zaXRpb25UYWJsZV9oIAoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgiCiNkZWZpbmUgV2Vha0dDTWFwX2ggCgojIDEg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oIiAxCiMgMzAgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIiAyCgoKCm5h
bWVzcGFjZSBKU0MgewoKCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFw
cGVkVHlwZT4gc3RydWN0IERlZmF1bHRXZWFrR0NNYXBGaW5hbGl6ZXJDYWxsYmFjayB7CiAgICBz
dGF0aWMgdm9pZCogZmluYWxpemVyQ29udGV4dEZvcihLZXlUeXBlIGtleSkKICAgIHsKICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oa2V5KTsKICAgIH0KCiAgICBzdGF0aWMg
S2V5VHlwZSBrZXlGb3JGaW5hbGl6ZXIodm9pZCogY29udGV4dCwgdHlwZW5hbWUgSGFuZGxlVHlw
ZXM8TWFwcGVkVHlwZT46OkV4dGVybmFsVHlwZSkKICAgIHsKICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxLZXlUeXBlPihjb250ZXh0KTsKICAgIH0KfTsKCnRlbXBsYXRlPHR5cGVuYW1l
IEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGUsIHR5cGVuYW1lIEZpbmFsaXplckNhbGxiYWNr
ID0gRGVmYXVsdFdlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrPEtleVR5cGUsIE1hcHBlZFR5cGU+
LCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8S2V5VHlwZT46Okhhc2gs
IHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5VHlwZT4gPgpjbGFzcyBXZWFr
R0NNYXAgOiBwcml2YXRlIFdlYWtIYW5kbGVPd25lciB7CiAgICBwdWJsaWM6IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0
TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNs
YXNzTmV3KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldU
Rjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NU
eXBlQ2xhc3NOZXcpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6
ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5
cGVDbGFzc05ld0FycmF5KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6OkludGVy
bmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHByaXZh
dGU6IHR5cGVkZWYgaW50IFRoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3Jv
OwogICAgcHJpdmF0ZTogV2Vha0dDTWFwKGNvbnN0IFdlYWtHQ01hcCYpOyBXZWFrR0NNYXAmIG9w
ZXJhdG9yPShjb25zdCBXZWFrR0NNYXAmKTsKCiAgICB0eXBlZGVmIEhhc2hNYXA8S2V5VHlwZSwg
SGFuZGxlU2xvdCwgSGFzaEFyZywgS2V5VHJhaXRzQXJnPiBNYXBUeXBlOwogICAgdHlwZWRlZiB0
eXBlbmFtZSBIYW5kbGVUeXBlczxNYXBwZWRUeXBlPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlw
ZTsKICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IgbWFwX2l0ZXJhdG9yOwoK
cHVibGljOgoKICAgIHN0cnVjdCBpdGVyYXRvciB7CiAgICAgICAgZnJpZW5kIGNsYXNzIFdlYWtH
Q01hcDsKICAgICAgICBpdGVyYXRvcihtYXBfaXRlcmF0b3IgaXRlcikKICAgICAgICAgICAgOiBt
X2l0ZXJhdG9yKGl0ZXIpCiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAgc3RkOjpwYWlyPEtl
eVR5cGUsIEV4dGVybmFsVHlwZT4gZ2V0KCkgY29uc3QgeyByZXR1cm4gc3RkOjptYWtlX3BhaXIo
bV9pdGVyYXRvci0+Zmlyc3QsIEhhbmRsZVR5cGVzPE1hcHBlZFR5cGU+OjpnZXRGcm9tU2xvdCht
X2l0ZXJhdG9yLT5zZWNvbmQpKTsgfQogICAgICAgIHN0ZDo6cGFpcjxLZXlUeXBlLCBIYW5kbGVT
bG90PiBnZXRTbG90KCkgY29uc3QgeyByZXR1cm4gKm1faXRlcmF0b3I7IH0KCiAgICAgICAgaXRl
cmF0b3ImIG9wZXJhdG9yKysoKSB7ICsrbV9pdGVyYXRvcjsgcmV0dXJuICp0aGlzOyB9CgoKCgog
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1faXRlcmF0b3IgPT0gb3RoZXIubV9pdGVyYXRvcjsgfQogICAgICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3IgIT0g
b3RoZXIubV9pdGVyYXRvcjsgfQoKICAgIHByaXZhdGU6CiAgICAgICAgbWFwX2l0ZXJhdG9yIG1f
aXRlcmF0b3I7CiAgICB9OwoKICAgIFdlYWtHQ01hcCgpCiAgICB7CiAgICB9CgogICAgYm9vbCBp
c0VtcHR5KCkgeyByZXR1cm4gbV9tYXAuaXNFbXB0eSgpOyB9CiAgICB2b2lkIGNsZWFyKCkKICAg
IHsKICAgICAgICBtYXBfaXRlcmF0b3IgZW5kID0gbV9tYXAuZW5kKCk7CiAgICAgICAgZm9yICht
YXBfaXRlcmF0b3IgcHRyID0gbV9tYXAuYmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpCiAgICAg
ICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3IocHRyLT5zZWNvbmQpLT5kZWFsbG9jYXRlKHB0ci0+
c2Vjb25kKTsKICAgICAgICBtX21hcC5jbGVhcigpOwogICAgfQoKICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX21hcC5jb250
YWlucyhrZXkpOwogICAgfQoKICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQog
ICAgewogICAgICAgIHJldHVybiBtX21hcC5maW5kKGtleSk7CiAgICB9CgogICAgdm9pZCByZW1v
dmUoaXRlcmF0b3IgaXRlcikKICAgIHsKICAgICAgICBkbyBpZiAoIShpdGVyLm1faXRlcmF0b3Ig
IT0gbV9tYXAuZW5kKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIiwgMTA3LCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAiaXRlci5tX2l0ZXJhdG9yICE9IG1fbWFwLmVuZCgpIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBIYW5kbGVT
bG90IHNsb3QgPSBpdGVyLm1faXRlcmF0b3ItPnNlY29uZDsKICAgICAgICBkbyBpZiAoIShzbG90
KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCIsIDEwOSwgX19QUkVUVFlfRlVOQ1RJT05fXywgInNs
b3QiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPmRlYWxsb2NhdGUoc2xvdCk7CiAg
ICAgICAgbV9tYXAucmVtb3ZlKGl0ZXIubV9pdGVyYXRvcik7CiAgICB9CgogICAgRXh0ZXJuYWxU
eXBlIGdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIEhh
bmRsZVR5cGVzPE1hcHBlZFR5cGU+OjpnZXRGcm9tU2xvdChtX21hcC5nZXQoa2V5KSk7CiAgICB9
CgogICAgSGFuZGxlU2xvdCBnZXRTbG90KGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gbV9tYXAuZ2V0KGtleSk7CiAgICB9CgogICAgcGFpcjxpdGVyYXRvciwg
Ym9vbD4gYWRkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYga2V5LCBF
eHRlcm5hbFR5cGUgdmFsdWUpCiAgICB7CiAgICAgICAgcGFpcjx0eXBlbmFtZSBNYXBUeXBlOjpp
dGVyYXRvciwgYm9vbD4gaXRlciA9IG1fbWFwLmFkZChrZXksIDApOwogICAgICAgIGlmIChpdGVy
LnNlY29uZCkgewogICAgICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSBnbG9iYWxEYXRhLmFsbG9j
YXRlR2xvYmFsSGFuZGxlKCk7CiAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNlY29uZCA9IHNsb3Q7
CiAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPm1ha2VXZWFrKHNsb3QsIHRo
aXMsIEZpbmFsaXplckNhbGxiYWNrOjpmaW5hbGl6ZXJDb250ZXh0Rm9yKGtleSkpOwogICAgICAg
ICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT53cml0ZUJhcnJpZXIoc2xvdCwgdmFsdWUp
OwogICAgICAgICAgICAqc2xvdCA9IHZhbHVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaXRl
cjsKICAgIH0KCiAgICB2b2lkIHNldChpdGVyYXRvciBpdGVyLCBFeHRlcm5hbFR5cGUgdmFsdWUp
CiAgICB7CiAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gaXRlci5tX2l0ZXJhdG9yLT5zZWNvbmQ7
CiAgICAgICAgZG8gaWYgKCEoc2xvdCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgiLCAxNDAsIF9f
UFJFVFRZX0ZVTkNUSU9OX18sICJzbG90Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3Qp
LT53cml0ZUJhcnJpZXIoc2xvdCwgdmFsdWUpOwogICAgICAgICpzbG90ID0gdmFsdWU7CiAgICB9
CgogICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBLZXlUeXBlJiBr
ZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKICAgIHsKICAgICAgICBwYWlyPHR5cGVuYW1lIE1hcFR5
cGU6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9tYXAuYWRkKGtleSwgMCk7CiAgICAgICAgSGFu
ZGxlU2xvdCBzbG90ID0gaXRlci5maXJzdC0+c2Vjb25kOwogICAgICAgIGlmIChpdGVyLnNlY29u
ZCkgewogICAgICAgICAgICBzbG90ID0gZ2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgp
OwogICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5tYWtlV2VhayhzbG90LCB0
aGlzLCBrZXkpOwogICAgICAgICAgICBpdGVyLmZpcnN0LT5zZWNvbmQgPSBzbG90OwogICAgICAg
IH0KICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT53cml0ZUJhcnJpZXIoc2xvdCwg
dmFsdWUpOwogICAgICAgICpzbG90ID0gdmFsdWU7CiAgICB9CgogICAgRXh0ZXJuYWxUeXBlIHRh
a2UoY29uc3QgS2V5VHlwZSYga2V5KQogICAgewogICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IG1f
bWFwLnRha2Uoa2V5KTsKICAgICAgICBpZiAoIXNsb3QpCiAgICAgICAgICAgIHJldHVybiBIYXNo
VHJhaXRzPEV4dGVybmFsVHlwZT46OmVtcHR5VmFsdWUoKTsKICAgICAgICBFeHRlcm5hbFR5cGUg
cmVzdWx0ID0gSGFuZGxlVHlwZXM8TWFwcGVkVHlwZT46OmdldEZyb21TbG90KHNsb3QpOwogICAg
ICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPmRlYWxsb2NhdGUoc2xvdCk7CiAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBzaXplX3Qgc2l6ZSgpIHsgcmV0dXJuIG1fbWFwLnNp
emUoKTsgfQoKICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gaXRlcmF0b3IobV9tYXAuYmVn
aW4oKSk7IH0KICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIGl0ZXJhdG9yKG1fbWFwLmVuZCgp
KTsgfQoKICAgIH5XZWFrR0NNYXAoKQogICAgewogICAgICAgIGNsZWFyKCk7CiAgICB9Cgpwcml2
YXRlOgogICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZv
aWQqIGNvbnRleHQpCiAgICB7CiAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gbV9tYXAudGFrZShG
aW5hbGl6ZXJDYWxsYmFjazo6a2V5Rm9yRmluYWxpemVyKGNvbnRleHQsIEhhbmRsZVR5cGVzPE1h
cHBlZFR5cGU+OjpnZXRGcm9tU2xvdChoYW5kbGUuc2xvdCgpKSkpOwogICAgICAgIGRvIGlmICgh
KHNsb3QpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIiwgMTgyLCBfX1BSRVRUWV9GVU5DVElPTl9f
LCAic2xvdCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3Qp
MHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGls
ZSAoMCk7CiAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+ZGVhbGxvY2F0ZShzbG90
KTsKICAgIH0KCiAgICBNYXBUeXBlIG1fbWFwOwp9OwoKfQojIDMxICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCIgMgoKCgoK
Cm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgU3RydWN0dXJlOwoKY2xhc3MgU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlIHsKICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBVc2luZ1NpbmdsZVNsb3RGbGFn
ID0gMTsKCiAgICBzdHJ1Y3QgSGFzaCB7CiAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UmVmUHRy
PFN0cmluZ0ltcGw+LCB1bnNpZ25lZD4gS2V5OwogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IEtleSYgcCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBwLmZpcnN0LT5leGlz
dGluZ0hhc2goKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtl
eSYgYSwgY29uc3QgS2V5JiBiKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsK
ICAgICAgICB9CgogICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gdHJ1ZTsKICAgIH07CgogICAgc3RydWN0IEhhc2hUcmFpdHMgewogICAgICAg
IHR5cGVkZWYgV1RGOjpIYXNoVHJhaXRzPFJlZlB0cjxTdHJpbmdJbXBsPiA+IEZpcnN0VHJhaXRz
OwogICAgICAgIHR5cGVkZWYgV1RGOjpHZW5lcmljSGFzaFRyYWl0czx1bnNpZ25lZD4gU2Vjb25k
VHJhaXRzOwogICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUs
IFNlY29uZFRyYWl0czo6VHJhaXRUeXBlID4gVHJhaXRUeXBlOwoKICAgICAgICBzdGF0aWMgY29u
c3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gRmlyc3RUcmFpdHM6OmVtcHR5VmFsdWVJc1plcm8g
JiYgU2Vjb25kVHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvOwogICAgICAgIHN0YXRpYyBUcmFpdFR5
cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEZpcnN0VHJhaXRzOjplbXB0
eVZhbHVlKCksIFNlY29uZFRyYWl0czo6ZW1wdHlWYWx1ZSgpKTsgfQoKICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gRmlyc3RUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rp
b24gfHwgU2Vjb25kVHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uOwoKICAgICAgICBzdGF0aWMgY29u
c3QgaW50IG1pbmltdW1UYWJsZVNpemUgPSBGaXJzdFRyYWl0czo6bWluaW11bVRhYmxlU2l6ZTsK
CiAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFRyYWl0VHlwZSYgc2xv
dCkgeyBGaXJzdFRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKHNsb3QuZmlyc3QpOyB9CiAg
ICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkg
eyByZXR1cm4gRmlyc3RUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKHZhbHVlLmZpcnN0KTsgfQogICAg
fTsKCiAgICBzdHJ1Y3QgV2Vha0dDTWFwRmluYWxpemVyQ2FsbGJhY2sgewogICAgICAgIHN0YXRp
YyB2b2lkKiBmaW5hbGl6ZXJDb250ZXh0Rm9yKEhhc2g6OktleSkKICAgICAgICB7CiAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIGlubGluZSBIYXNoOjpLZXkg
a2V5Rm9yRmluYWxpemVyKHZvaWQqIGNvbnRleHQsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
ICAgIHsKICAgICAgICAgICAgcmV0dXJuIGtleUZvcldlYWtHQ01hcEZpbmFsaXplcihjb250ZXh0
LCBzdHJ1Y3R1cmUpOwogICAgICAgIH0KICAgIH07CgogICAgdHlwZWRlZiBXZWFrR0NNYXA8SGFz
aDo6S2V5LCBTdHJ1Y3R1cmUsIFdlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrLCBIYXNoLCBIYXNo
VHJhaXRzPiBUcmFuc2l0aW9uTWFwOwoKICAgIHN0YXRpYyBIYXNoOjpLZXkga2V5Rm9yV2Vha0dD
TWFwRmluYWxpemVyKHZvaWQqIGNvbnRleHQsIFN0cnVjdHVyZSopOwoKcHVibGljOgogICAgU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlKCkKICAgICAgICA6IG1fZGF0YShVc2luZ1NpbmdsZVNsb3RG
bGFnKQogICAgewogICAgfQoKICAgIH5TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUoKQogICAgewog
ICAgICAgIGlmICghaXNVc2luZ1NpbmdsZVNsb3QoKSkgewogICAgICAgICAgICBkZWxldGUgbWFw
KCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIEhhbmRsZVNsb3Qgc2xv
dCA9IHRoaXMtPnNsb3QoKTsKICAgICAgICBpZiAoIXNsb3QpCiAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5kZWFsbG9jYXRlKHNsb3QpOwogICAg
fQoKICAgIGlubGluZSB2b2lkIGFkZChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgIGlu
bGluZSBib29sIGNvbnRhaW5zKFN0cmluZ0ltcGwqIHJlcCwgdW5zaWduZWQgYXR0cmlidXRlcykg
Y29uc3Q7CiAgICBpbmxpbmUgU3RydWN0dXJlKiBnZXQoU3RyaW5nSW1wbCogcmVwLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKSBjb25zdDsKCnByaXZhdGU6CiAgICBib29sIGlzVXNpbmdTaW5nbGVTbG90
KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9kYXRhICYgVXNpbmdTaW5nbGVTbG90Rmxh
ZzsKICAgIH0KCiAgICBUcmFuc2l0aW9uTWFwKiBtYXAoKSBjb25zdAogICAgewogICAgICAgIGRv
IGlmICghKCFpc1VzaW5nU2luZ2xlU2xvdCgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJl
KCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGUuaCIsIDEyMSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFpc1VzaW5nU2luZ2xlU2xv
dCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUcmFuc2l0aW9uTWFwKj4obV9kYXRh
KTsKICAgIH0KCiAgICBIYW5kbGVTbG90IHNsb3QoKSBjb25zdAogICAgewogICAgICAgIGRvIGlm
ICghKGlzVXNpbmdTaW5nbGVTbG90KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZS5oIiwgMTI3LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNVc2luZ1NpbmdsZVNsb3QoKSIp
OyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVl
ZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SGFuZGxlU2xvdD4obV9kYXRhICYgflVzaW5n
U2luZ2xlU2xvdEZsYWcpOwogICAgfQoKICAgIHZvaWQgc2V0TWFwKFRyYW5zaXRpb25NYXAqIG1h
cCkKICAgIHsKICAgICAgICBkbyBpZiAoIShpc1VzaW5nU2luZ2xlU2xvdCgpKSkgeyBXVEZSZXBv
cnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCIsIDEzMywgX19QUkVUVFlfRlVOQ1RJT05fXywg
ImlzVXNpbmdTaW5nbGVTbG90KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOwoKICAgICAgICBpZiAoSGFuZGxlU2xvdCBzbG90ID0gdGhpcy0+
c2xvdCgpKQogICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5kZWFsbG9jYXRl
KHNsb3QpOwoKCiAgICAgICAgbV9kYXRhID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obWFw
KTsKCiAgICAgICAgZG8gaWYgKCEoIWlzVXNpbmdTaW5nbGVTbG90KCkpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIiwgMTQxLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIWlz
VXNpbmdTaW5nbGVTbG90KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKiko
dWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxz
ZSk7IH0gd2hpbGUgKDApOwogICAgfQoKICAgIFN0cnVjdHVyZSogc2luZ2xlVHJhbnNpdGlvbigp
IGNvbnN0CiAgICB7CiAgICAgICAgZG8gaWYgKCEoaXNVc2luZ1NpbmdsZVNsb3QoKSkpIHsgV1RG
UmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgiLCAxNDYsIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJpc1VzaW5nU2luZ2xlU2xvdCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBpZiAoSGFuZGxlU2xvdCBzbG90ID0gdGhp
cy0+c2xvdCgpKSB7CiAgICAgICAgICAgIGlmICgqc2xvdCkKICAgICAgICAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KHNsb3QtPmFzQ2VsbCgpKTsKICAgICAgICB9
CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgdm9pZCBzZXRTaW5nbGVUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICB7CiAgICAg
ICAgZG8gaWYgKCEoaXNVc2luZ1NpbmdsZVNsb3QoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFp
bHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlLmgiLCAxNTYsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpc1VzaW5nU2luZ2xl
U2xvdCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkw
eGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxl
ICgwKTsKICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSB0aGlzLT5zbG90KCk7CiAgICAgICAgaWYg
KCFzbG90KSB7CiAgICAgICAgICAgIHNsb3QgPSBnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFu
ZGxlKCk7CiAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPm1ha2VXZWFrKHNs
b3QsIDAsIDApOwogICAgICAgICAgICBtX2RhdGEgPSByZWludGVycHJldF9jYXN0PGludHB0cl90
PihzbG90KSB8IFVzaW5nU2luZ2xlU2xvdEZsYWc7CiAgICAgICAgfQogICAgICAgIEhhbmRsZUhl
YXA6OmhlYXBGb3Ioc2xvdCktPndyaXRlQmFycmllcihzbG90LCByZWludGVycHJldF9jYXN0PEpT
Q2VsbCo+KHN0cnVjdHVyZSkpOwogICAgICAgICpzbG90ID0gcmVpbnRlcnByZXRfY2FzdDxKU0Nl
bGwqPihzdHJ1Y3R1cmUpOwogICAgfQoKICAgIGludHB0cl90IG1fZGF0YTsKfTsKCn0KIyAzNyAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgiIDIKIyAx
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgiIDEK
IyAyOCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
IgojZGVmaW5lIEpTVHlwZUluZm9faCAKCgoKCgoKbmFtZXNwYWNlIEpTQyB7CgogICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOwogICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gMSA8PCAzOwogICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIElzRW52aXJvbm1lbnRSZWNvcmQgPSAxIDw8IDQ7CiAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90ID0gMSA8PCA1
OwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gPSAxIDw8
IDY7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyA9
IDEgPDwgNzsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJc0pTRmluYWxPYmplY3QgPSAxIDw8
IDg7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nID0g
MSA8PCA5OwoKICAgIGNsYXNzIFR5cGVJbmZvIHsKICAgIHB1YmxpYzoKICAgICAgICBUeXBlSW5m
byhKU1R5cGUgdHlwZSwgdW5zaWduZWQgZmxhZ3MgPSAwKQogICAgICAgICAgICA6IG1fdHlwZSh0
eXBlKQogICAgICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MgJiAweGZmKQogICAgICAgICAgICAsIG1f
ZmxhZ3MyKGZsYWdzID4+IDgpCiAgICAgICAgewogICAgICAgICAgICBkbyBpZiAoIShmbGFncyA8
PSAweDNmZikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oIiwgNTUsIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJmbGFncyA8PSAweDNmZiIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZh
bHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgIGRvIGlmICghKHR5cGUgPD0gMHhmZikpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlSW5mby5oIiwgNTYsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJ0eXBlIDw9
IDB4ZmYiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOwogICAgICAgICAgICBkbyBpZiAoISh0eXBlID49IENvbXBvdW5kVHlwZSB8fCAhKGZsYWdz
ICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbikpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaCIsIDU3
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAidHlwZSA+PSBDb21wb3VuZFR5cGUgfHwgIShmbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgICAgIGlmICgobV9mbGFncyAmIChJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNIYXNJbnN0YW5jZSkpID09IEltcGxlbWVudHNI
YXNJbnN0YW5jZSkKICAgICAgICAgICAgICAgIG1fZmxhZ3MgfD0gSW1wbGVtZW50c0RlZmF1bHRI
YXNJbnN0YW5jZTsKICAgICAgICB9CgogICAgICAgIEpTVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gKEpTVHlwZSltX3R5cGU7IH0KCiAgICAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ7IH0KICAg
ICAgICBib29sIGltcGxlbWVudHNIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3Mg
JiBJbXBsZW1lbnRzSGFzSW5zdGFuY2U7IH0KICAgICAgICBib29sIGlzRW52aXJvbm1lbnRSZWNv
cmQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgSXNFbnZpcm9ubWVudFJlY29yZDsgfQogICAg
ICAgIGJvb2wgb3ZlcnJpZGVzSGFzSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYg
T3ZlcnJpZGVzSGFzSW5zdGFuY2U7IH0KICAgICAgICBib29sIG92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3Q7IH0KICAgICAgICBib29sIG92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSBjb25zdCB7IHJl
dHVybiBtX2ZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsgfQogICAgICAgIGJvb2wgb3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBPdmVycmlk
ZXNHZXRQcm9wZXJ0eU5hbWVzOyB9CiAgICAgICAgdW5zaWduZWQgaXNGaW5hbCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ3MyICYgKElzSlNGaW5hbE9iamVjdCA+PiA4KTsgfQogICAgICAgIHVuc2ln
bmVkIHByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MyICYg
KFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyA+PiA4KTsgfQogICAgICAgIHVuc2lnbmVkIGZsYWdz
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQoKICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGZs
YWdzT2Zmc2V0KCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2Fz
dDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxUeXBlSW5mbyo+KDB4NDAwMCktPm1fZmxh
Z3MpKSAtIDB4NDAwMCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgcHRyZGlmZl90IHR5cGVP
ZmZzZXQoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0
cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFR5cGVJbmZvKj4oMHg0MDAwKS0+bV90eXBlKSkg
LSAweDQwMDApOwogICAgICAgIH0KCiAgICBwcml2YXRlOgogICAgICAgIHVuc2lnbmVkIGNoYXIg
bV90eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBj
aGFyIG1fZmxhZ3MyOwogICAgfTsKCn0KIyAzOCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgiIDIKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vhay5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWsuaCIKI2RlZmluZSBXZWFrX2ggCgoKCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIiAxCiMgMzMgIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaCIgMgoKbmFtZXNwYWNlIEpTQyB7CgoKdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsgOiBwdWJsaWMgSGFuZGxlPFQ+IHsKICAgIHVz
aW5nIEhhbmRsZTxUPjo6c2xvdDsKICAgIHVzaW5nIEhhbmRsZTxUPjo6c2V0U2xvdDsKCnB1Ymxp
YzoKICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlPFQ+OjpFeHRlcm5hbFR5cGUgRXh0ZXJuYWxU
eXBlOwoKICAgIFdlYWsoKQogICAgICAgIDogSGFuZGxlPFQ+KCkKICAgIHsKICAgIH0KCiAgICBX
ZWFrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVlID0gRXh0ZXJu
YWxUeXBlKCksIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVyID0gMCwgdm9pZCogY29udGV4dCA9
IDApCiAgICAgICAgOiBIYW5kbGU8VD4oZ2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgp
KQogICAgewogICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCgpKS0+bWFrZVdlYWsoc2xv
dCgpLCB3ZWFrT3duZXIsIGNvbnRleHQpOwogICAgICAgIHNldCh2YWx1ZSk7CiAgICB9CgogICAg
ZW51bSBBZG9wdFRhZyB7IEFkb3B0IH07CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBXZWFrKEFk
b3B0VGFnLCBIYW5kbGU8VT4gaGFuZGxlKQogICAgICAgIDogSGFuZGxlPFQ+KGhhbmRsZS5zbG90
KCkpCiAgICB7CiAgICAgICAgdmFsaWRhdGVDZWxsKGdldCgpKTsKICAgIH0KCiAgICBXZWFrKGNv
bnN0IFdlYWsmIG90aGVyKQogICAgICAgIDogSGFuZGxlPFQ+KCkKICAgIHsKICAgICAgICBpZiAo
IW90aGVyLnNsb3QoKSkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIHNldFNsb3QoSGFuZGxl
SGVhcDo6aGVhcEZvcihvdGhlci5zbG90KCkpLT5jb3B5V2VhayhvdGhlci5zbG90KCkpKTsKICAg
IH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gV2Vhayhjb25zdCBXZWFrPFU+JiBvdGhlcikK
ICAgICAgICA6IEhhbmRsZTxUPigpCiAgICB7CiAgICAgICAgaWYgKCFvdGhlci5zbG90KCkpCiAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICBzZXRTbG90KEhhbmRsZUhlYXA6OmhlYXBGb3Iob3Ro
ZXIuc2xvdCgpKS0+Y29weVdlYWsob3RoZXIuc2xvdCgpKSk7CiAgICB9CgogICAgZW51bSBIYXNo
VGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNoVGFibGVEZWxldGVkVmFsdWUgfTsKICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzbG90KCkgPT0gaGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgIFdlYWsoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQog
ICAgICAgIDogSGFuZGxlPFQ+KGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKQogICAgewogICAgfQoK
ICAgIH5XZWFrKCkKICAgIHsKICAgICAgICBjbGVhcigpOwogICAgfQoKICAgIHZvaWQgc3dhcChX
ZWFrJiBvdGhlcikKICAgIHsKICAgICAgICBIYW5kbGU8VD46OnN3YXAob3RoZXIpOwogICAgfQoK
ICAgIEV4dGVybmFsVHlwZSBnZXQoKSBjb25zdCB7IHJldHVybiBIYW5kbGVUeXBlczxUPjo6Z2V0
RnJvbVNsb3Qoc2xvdCgpKTsgfQoKICAgIHZvaWQgY2xlYXIoKQogICAgewogICAgICAgIGlmICgh
c2xvdCgpKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihz
bG90KCkpLT5kZWFsbG9jYXRlKHNsb3QoKSk7CiAgICAgICAgc2V0U2xvdCgwKTsKICAgIH0KCiAg
ICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV4dGVybmFsVHlwZSB2YWx1ZSwg
V2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIgPSAwLCB2b2lkKiBjb250ZXh0ID0gMCkKICAgIHsK
ICAgICAgICBpZiAoIXNsb3QoKSkgewogICAgICAgICAgICBzZXRTbG90KGdsb2JhbERhdGEuYWxs
b2NhdGVHbG9iYWxIYW5kbGUoKSk7CiAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xv
dCgpKS0+bWFrZVdlYWsoc2xvdCgpLCB3ZWFrT3duZXIsIGNvbnRleHQpOwogICAgICAgIH0KICAg
ICAgICBkbyBpZiAoIShIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QoKSktPmhhc1dlYWtPd25lcihz
bG90KCksIHdlYWtPd25lcikpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaCIsIDExMiwgX19QUkVUVFlfRlVOQ1RJ
T05fXywgIkhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCgpKS0+aGFzV2Vha093bmVyKHNsb3QoKSwg
d2Vha093bmVyKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRy
X3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgc2V0KHZhbHVlKTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVT4gV2VhayYgb3BlcmF0b3I9KGNvbnN0IFdlYWs8VT4mIG90aGVyKQogICAgewogICAgICAg
IGNsZWFyKCk7CiAgICAgICAgaWYgKG90aGVyLnNsb3QoKSkKICAgICAgICAgICAgc2V0U2xvdChI
YW5kbGVIZWFwOjpoZWFwRm9yKG90aGVyLnNsb3QoKSktPmNvcHlXZWFrKG90aGVyLnNsb3QoKSkp
OwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBXZWFrJiBvcGVyYXRvcj0oY29uc3Qg
V2VhayYgb3RoZXIpCiAgICB7CiAgICAgICAgY2xlYXIoKTsKICAgICAgICBpZiAob3RoZXIuc2xv
dCgpKQogICAgICAgICAgICBzZXRTbG90KEhhbmRsZUhlYXA6OmhlYXBGb3Iob3RoZXIuc2xvdCgp
KS0+Y29weVdlYWsob3RoZXIuc2xvdCgpKSk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoK
ICAgIEhhbmRsZVNsb3QgbGVha0hhbmRsZSgpCiAgICB7CiAgICAgICAgZG8gaWYgKCEoSGFuZGxl
SGVhcDo6aGVhcEZvcihzbG90KCkpLT5oYXNGaW5hbGl6ZXIoc2xvdCgpKSkpIHsgV1RGUmVwb3J0
QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vh
ay5oIiwgMTM0LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90
KCkpLT5oYXNGaW5hbGl6ZXIoc2xvdCgpKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAq
KGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hp
bGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgSGFuZGxlU2xvdCByZXN1bHQgPSBzbG90
KCk7CiAgICAgICAgc2V0U2xvdCgwKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKcHJp
dmF0ZToKICAgIHN0YXRpYyBIYW5kbGVTbG90IGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SGFuZGxlU2xvdD4oLTEpOyB9CgogICAgdm9pZCBzZXQoRXh0
ZXJuYWxUeXBlIGV4dGVybmFsVHlwZSkKICAgIHsKICAgICAgICBkbyBpZiAoIShzbG90KCkpKSB7
IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWsuaCIsIDE0NSwgX19QUkVUVFlfRlVOQ1RJT05fXywgInNsb3QoKSIpOyBkbyB7
IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7
ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEhhbmRsZVR5cGVzPFQ+Ojp0b0pTVmFsdWUoZXh0ZXJuYWxUeXBlKTsK
ICAgICAgICBkbyBpZiAoISghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpIHx8IEhlYXA6OmlzTWFy
a2VkKHZhbHVlLmFzQ2VsbCgpKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oIiwgMTQ3LCBfX1BSRVRUWV9GVU5D
VElPTl9fLCAiIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwoKSB8fCBIZWFwOjppc01hcmtlZCh2YWx1
ZS5hc0NlbGwoKSkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCgpKS0+d3JpdGVCYXJy
aWVyKHNsb3QoKSwgdmFsdWUpOwogICAgICAgICpzbG90KCkgPSB2YWx1ZTsKICAgIH0KfTsKCnRl
bXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHN3YXAoV2VhazxUPiYgYSwgV2VhazxUPiYgYikK
ewogICAgYS5zd2FwKGIpOwp9Cgp9CgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+ID4gOiBTaW1wbGVDbGFzc1ZlY3Rv
clRyYWl0cyB7CiAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZh
bHNlOwp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFr
PFA+ID4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpXZWFrPFA+ID4geyB9OwoKfQojIDQw
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCIgMgoK
CgoKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgY2xh
c3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CiAgICBj
bGFzcyBTbG90VmlzaXRvcjsKCiAgICBzdHJ1Y3QgQ2xhc3NJbmZvOwoKICAgIGVudW0gRW51bWVy
YXRpb25Nb2RlIHsKICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLAogICAgICAgIElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMKICAgIH07CgogICAgY2xhc3MgU3RydWN0dXJlIDogcHVi
bGljIEpTQ2VsbCB7CiAgICBwdWJsaWM6CiAgICAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZTsKCiAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKCiAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0
eXBlSW5mbywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiAgICAgICAgewogICAgICAgICAg
ICBkbyBpZiAoIShnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSkpIHsgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgiLCA2NywgX19QUkVUVFlfRlVOQ1RJT05fXywgImdsb2JhbERhdGEuc3RydWN0dXJl
U3RydWN0dXJlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJf
dCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdo
aWxlICgwKTsKICAgICAgICAgICAgZG8gaWYgKCEoY2xhc3NJbmZvKSkgeyBXVEZSZXBvcnRBc3Nl
cnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaCIsIDY4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiY2xhc3NJbmZvIik7IGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KGdsb2Jh
bERhdGEuaGVhcCkpIFN0cnVjdHVyZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgdHlwZUluZm8sIGNsYXNzSW5mbyk7CiAgICAgICAgICAgIHN0cnVjdHVyZS0+ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7CiAgICAgICAg
fQoKICAgIHByb3RlY3RlZDoKICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSkKICAgICAgICB7CiAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KGdsb2JhbERhdGEpOwogICAgICAgICAgICBkbyBpZiAoIShtX3Byb3RvdHlwZSkpIHsgV1RGUmVw
b3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgiLCA3OCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fcHJvdG90eXBlIik7
IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVm
ID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAg
ICAgICAgICAgZG8gaWYgKCEobV9wcm90b3R5cGUuaXNPYmplY3QoKSB8fCBtX3Byb3RvdHlwZS5p
c051bGwoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgiLCA3OSwgX19QUkVUVFlfRlVOQ1RJT05f
XywgIm1fcHJvdG90eXBlLmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5cGUuaXNOdWxsKCkiKTsgZG8g
eyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAw
OyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAg
IH0KCiAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IENyZWF0aW5nRWFybHlDZWxsVGFnKQogICAgICAgIHsKICAgICAgICAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSwgdGhpcywgQ3JlYXRpbmdFYXJseUNlbGwpOwogICAgICAgICAg
ICBkbyBpZiAoIShtX3Byb3RvdHlwZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgiLCA4NSwgX19Q
UkVUVFlfRlVOQ1RJT05fXywgIm1fcHJvdG90eXBlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNl
KCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgZG8gaWYgKCEobV9wcm90
b3R5cGUuaXNOdWxsKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiwgODYsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJtX3Byb3RvdHlwZS5pc051bGwoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFj
ZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7
IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgIGRvIGlmICghKCFnbG9i
YWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgiLCA4Nywg
X19QUkVUVFlfRlVOQ1RJT05fXywgIiFnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSIpOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgfQoKICAgIHB1YmxpYzoKICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwoK
ICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3Ry
dWN0dXJlKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CiAg
ICAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90
JiBvZmZzZXQpOwogICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogZ2V0dGVyU2V0dGVyVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
KTsKICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqKTsKICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBzZWFsVHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBmcmVlemVUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsK
CiAgICAgICAgYm9vbCBpc1NlYWxlZChKU0dsb2JhbERhdGEmKTsKICAgICAgICBib29sIGlzRnJv
emVuKEpTR2xvYmFsRGF0YSYpOwogICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29uc3QgeyBy
ZXR1cm4gIW1fcHJldmVudEV4dGVuc2lvbnM7IH0KICAgICAgICBib29sIGRpZFRyYW5zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2RpZFRyYW5zaXRpb247IH0KCiAgICAgICAgU3RydWN0dXJlKiBm
bGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwoKICAg
ICAgICB+U3RydWN0dXJlKCk7CgoKICAgICAgICBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgc2l6ZV90
IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsg
bV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlwZSk7IH0KCiAgICAgICAg
Ym9vbCBpc0RpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlLaW5kICE9IE5v
bmVEaWN0aW9uYXJ5S2luZDsgfQogICAgICAgIGJvb2wgaXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlLaW5kID09IFVuY2FjaGVkRGljdGlvbmFyeUtp
bmQ7IH0KCiAgICAgICAgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvKCkgY29uc3QgeyBkbyBpZiAo
IShzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbykpIHsgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgiLCAxMjIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCkgPT0gJnNfaW5mbyIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50
cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsg
fSB3aGlsZSAoMCk7IHJldHVybiBtX3R5cGVJbmZvOyB9CgogICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQog
ICAgICAgIHZvaWQgc2V0R2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgeyBtX2dsb2JhbE9iamVjdC5zZXQoZ2xvYmFsRGF0
YSwgdGhpcywgZ2xvYmFsT2JqZWN0KTsgfQoKICAgICAgICBKU1ZhbHVlIHN0b3JlZFByb3RvdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90eXBlLmdldCgpOyB9CiAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgU3RydWN0dXJlQ2hh
aW4qIHByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgIHZvaWQgdmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYpOwoKICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBj
b25zdCB7IGRvIGlmICghKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKSkgeyBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaCIsIDEzMiwgX19QUkVUVFlfRlVOQ1RJT05fXywgInN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7
ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KCiAg
ICAgICAgdm9pZCBncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICB1bnNpZ25l
ZCBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0IHsgZG8gaWYgKCEoc3RydWN0dXJlKCkt
PmNsYXNzSW5mbygpID09ICZzX2luZm8pKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiwgMTM1LCBf
X1BSRVRUWV9GVU5DVElPTl9fLCAic3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8i
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOyBy
ZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eTsgfQogICAgICAgIHVuc2lnbmVkIHByb3Bl
cnR5U3RvcmFnZVNpemUoKSBjb25zdCB7IGRvIGlmICghKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8o
KSA9PSAmc19pbmZvKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCIsIDEzNiwgX19QUkVUVFlfRlVO
Q1RJT05fXywgInN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvIik7IGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIChtX3By
b3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpKTsgfQogICAgICAgIGJvb2wgaXNVc2lu
Z0lubGluZVN0b3JhZ2UoKSBjb25zdDsKCiAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEm
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgIHNpemVfdCBnZXQoSlNH
bG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFtZSk7CiAgICAgICAgc2l6ZV90IGdldChKU0ds
b2JhbERhdGEmLCBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYg
YXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKICAgICAgICB7CiAgICAgICAgICAg
IGRvIGlmICghKCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZh
aWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
IiwgMTQ0LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIXByb3BlcnR5TmFtZS5pc051bGwoKSIpOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgICAgIGRvIGlmICghKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKSkgeyBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaCIsIDE0NSwgX19QUkVUVFlfRlVOQ1RJT05fXywgInN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7
ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKICAg
ICAgICB9CgogICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAgICAgIHZvaWQgc2V0SGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcyhib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMpIHsg
bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzID0gaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsg
fQoKICAgICAgICBib29sIGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllczsgfQoKICAgICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPmlzRW1w
dHkoKSA6IG1fb2Zmc2V0ID09IG5vT2Zmc2V0OyB9CgogICAgICAgIHZvaWQgZGVzcGVjaWZ5RGlj
dGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSk7CiAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkgeyBt
X3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hD
b3VudDsgfQoKICAgICAgICB2b2lkIHNldEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiwg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSk7CiAgICAgICAgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSgpOwogICAgICAgIHZvaWQgZ2V0UHJv
cGVydHlOYW1lcyhKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKTsKCiAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7
IHJldHVybiBtX2NsYXNzSW5mbzsgfQoKICAgICAgICBzdGF0aWMgcHRyZGlmZl90IHByb3RvdHlw
ZU9mZnNldCgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8
cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlKj4oMHg0MDAwKS0+bV9wcm90
b3R5cGUpKSAtIDB4NDAwMCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgcHRyZGlmZl90IHR5
cGVJbmZvRmxhZ3NPZmZzZXQoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIChyZWludGVy
cHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KDB4NDAw
MCktPm1fdHlwZUluZm8pKSAtIDB4NDAwMCkgKyBUeXBlSW5mbzo6ZmxhZ3NPZmZzZXQoKTsKICAg
ICAgICB9CgogICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlwZUluZm9UeXBlT2Zmc2V0KCkKICAg
ICAgICB7CiAgICAgICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYo
cmVpbnRlcnByZXRfY2FzdDxTdHJ1Y3R1cmUqPigweDQwMDApLT5tX3R5cGVJbmZvKSkgLSAweDQw
MDApICsgVHlwZUluZm86OnR5cGVPZmZzZXQoKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAg
ICAgewogICAgICAgICAgICBkbyBpZiAoISghZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUp
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiwgMTgyLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIWds
b2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7
ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVj
dHVyZShnbG9iYWxEYXRhKTsKICAgICAgICAgICAgc3RydWN0dXJlLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxEYXRhLCBDcmVhdGluZ0Vhcmx5Q2VsbCk7CiAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1
cmU7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKCiAg
ICBwcml2YXRlOgogICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyop
OwogICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICBTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CgogICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgIHsKICAgICAgICAgICAgZG8gaWYgKCEoZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVT
dHJ1Y3R1cmUpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiwgMTk3LCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAiZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUiKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSA9IG5ldyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5o
ZWFwKSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgIG5ld1N0
cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgIHJldHVybiBu
ZXdTdHJ1Y3R1cmU7CiAgICAgICAgfQoKICAgICAgICB0eXBlZGVmIGVudW0gewogICAgICAgICAg
ICBOb25lRGljdGlvbmFyeUtpbmQgPSAwLAogICAgICAgICAgICBDYWNoZWREaWN0aW9uYXJ5S2lu
ZCA9IDEsCiAgICAgICAgICAgIFVuY2FjaGVkRGljdGlvbmFyeUtpbmQgPSAyCiAgICAgICAgfSBE
aWN0aW9uYXJ5S2luZDsKICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0b0RpY3Rpb25hcnlUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIERpY3Rpb25hcnlLaW5kKTsKCiAgICAg
ICAgc2l6ZV90IHB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUpOwogICAgICAgIHNpemVfdCByZW1vdmUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KTsKCiAgICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDAp
OwogICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpOwoKICAgICAgICBib29sIGRlc3BlY2lm
eUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICB2b2lk
IGRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKU0dsb2JhbERhdGEmKTsKCiAgICAgICAgUGFzc093blB0
cjxQcm9wZXJ0eVRhYmxlPiBjb3B5UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqIG93bmVyKTsKICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoSlNHbG9iYWxE
YXRhJik7CiAgICAgICAgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgIHsKICAgICAgICAgICAgZG8gaWYgKCEoc3Ry
dWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pKSB7IFdURlJlcG9ydEFzc2VydGlvbkZh
aWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
IiwgMjIzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAic3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09
ICZzX2luZm8iKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90
KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOwogICAgICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSAmJiBtX3ByZXZpb3VzKQog
ICAgICAgICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChnbG9iYWxEYXRhKTsKICAgICAg
ICB9CgogICAgICAgIHNpZ25lZCBjaGFyIHRyYW5zaXRpb25Db3VudCgpIGNvbnN0CiAgICAgICAg
ewoKICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG5vT2Zmc2V0ID8gMCA6IG1fb2Zmc2V0
ICsgMTsKICAgICAgICB9CgogICAgICAgIGJvb2wgaXNWYWxpZChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4pIGNvbnN0OwoKICAgICAgICBzdGF0aWMgY29u
c3Qgc2lnbmVkIGNoYXIgc19tYXhUcmFuc2l0aW9uTGVuZ3RoID0gNjQ7CgogICAgICAgIHN0YXRp
YyBjb25zdCBzaWduZWQgY2hhciBub09mZnNldCA9IC0xOwoKICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gMzsKCiAgICAgICAgVHlw
ZUluZm8gbV90eXBlSW5mbzsKCiAgICAgICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBt
X2dsb2JhbE9iamVjdDsKICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9wcm90b3R5cGU7
CiAgICAgICAgbXV0YWJsZSBXcml0ZUJhcnJpZXI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJv
dG90eXBlQ2hhaW47CgogICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJldmlvdXM7
CiAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1fbmFtZUluUHJldmlvdXM7CiAgICAgICAgV3Jp
dGVCYXJyaWVyPEpTQ2VsbD4gbV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91czsKCiAgICAgICAgY29u
c3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKCiAgICAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRh
YmxlIG1fdHJhbnNpdGlvblRhYmxlOwoKICAgICAgICBXcml0ZUJhcnJpZXI8SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcj4gbV9lbnVtZXJhdGlvbkNhY2hlOwoKICAgICAgICBPd25QdHI8UHJvcGVydHlU
YWJsZT4gbV9wcm9wZXJ0eVRhYmxlOwoKICAgICAgICB1aW50MzJfdCBtX3Byb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5OwoKCiAgICAgICAgc2lnbmVkIGNoYXIgbV9vZmZzZXQ7CgogICAgICAgIHVuc2ln
bmVkIG1fZGljdGlvbmFyeUtpbmQgOiAyOwogICAgICAgIGJvb2wgbV9pc1Bpbm5lZFByb3BlcnR5
VGFibGUgOiAxOwogICAgICAgIGJvb2wgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzIDogMTsK
ICAgICAgICBib29sIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMgOiAxOwoKCgoKCgogICAg
ICAgIHVuc2lnbmVkIG1fYXR0cmlidXRlc0luUHJldmlvdXMgOiA3OwoKICAgICAgICB1bnNpZ25l
ZCBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA6IDI7CiAgICAgICAgdW5zaWduZWQgbV9w
cmV2ZW50RXh0ZW5zaW9ucyA6IDE7CiAgICAgICAgdW5zaWduZWQgbV9kaWRUcmFuc2l0aW9uIDog
MTsKCiAgICB9OwoKICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiAgICB7CiAgICAg
ICAgZG8gaWYgKCEoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pKSB7IFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oIiwgMjg1LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAic3RydWN0dXJlKCkt
PmNsYXNzSW5mbygpID09ICZzX2luZm8iKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihp
bnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5l
Y2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAg
ICAgICAgcmV0dXJuIG5vdEZvdW5kOwoKICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9
IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUuaW1wbCgpKS5maXJzdDsKICAgICAg
ICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7CiAgICB9CgogICAgaW5s
aW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpCiAgICB7CiAgICAgICAgZG8gaWYgKCEoc3RydWN0dXJlKCktPmNsYXNz
SW5mbygpID09ICZzX2luZm8pKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiwgMjk2LCBfX1BSRVRU
WV9GVU5DVElPTl9fLCAic3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8iKTsgZG8g
eyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAw
OyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAg
IG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICBp
ZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwoKICAgICAg
ICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhTdHJp
bmcobmFtZS5pbXBsKCkpLmZpcnN0OwogICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZz
ZXQgOiBub3RGb3VuZDsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzT2JqZWN0KCkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
ID09IE9iamVjdFR5cGU7CiAgICB9CgogICAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUo
KSA9PSBTdHJpbmdUeXBlOwogICAgfQoKICAgIGlubGluZSBib29sIEpTQ2VsbDo6aXNHZXR0ZXJT
ZXR0ZXIoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8o
KS50eXBlKCkgPT0gR2V0dGVyU2V0dGVyVHlwZTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBKU0Nl
bGw6OmlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9zdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEFQSVZhbHVlV3JhcHBlcjsKICAgIH0KCiAgICBp
bmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OmNsYXNzSW5mbygpIGNvbnN0CiAgICB7Cgog
ICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKTsK
CgoKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmludGVybmFsQXBwZW5kKEpTQ2Vs
bCogY2VsbCkKICAgIHsKICAgICAgICBkbyBpZiAoISghbV9pc0NoZWNraW5nRm9yRGVmYXVsdE1h
cmtWaW9sYXRpb24pKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiwgMzM2LCBfX1BSRVRUWV9GVU5D
VElPTl9fLCAiIW1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uIik7IGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBp
ZiAoIShjZWxsKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCIsIDMzNywgX19QUkVUVFlfRlVOQ1RJ
T05fXywgImNlbGwiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKGNlbGwpKQogICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSgpICYmIGNlbGwtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA+PSBDb21wb3VuZFR5cGUpCiAgICAgICAgICAg
IG1fdmFsdWVzLmFwcGVuZChjZWxsKTsKICAgIH0KCiAgICBpbmxpbmUgU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlOjpIYXNoOjpLZXkgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjprZXlGb3JXZWFr
R0NNYXBGaW5hbGl6ZXIodm9pZCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgewoKCgogICAg
ICAgIHJldHVybiBIYXNoOjpLZXkoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLmdldCgpLCAr
c3RydWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzKTsKICAgIH0KCn0KIyAyNiAiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oIiAyCgoKbmFtZXNw
YWNlIEpTQyB7CgogICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CiAgICBjbGFzcyBKU09iamVjdDsKICAgIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKICAg
IGNsYXNzIFNsb3RWaXNpdG9yOwoKICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlIDogcHVibGljIEpT
Q2VsbCB7CiAgICBwcml2YXRlOgogICAgICAgIFNjb3BlQ2hhaW5Ob2RlKFNjb3BlQ2hhaW5Ob2Rl
KiBuZXh0LCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBnbG9iYWxUaGlzKQogICAgICAgICAg
ICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c2NvcGVDaGFpbk5vZGVTdHJ1Y3R1
cmUuZ2V0KCkpCiAgICAgICAgICAgICwgZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQogICAgICAgICAg
ICAsIG5leHQoKmdsb2JhbERhdGEsIHRoaXMsIG5leHQsIFdyaXRlQmFycmllcjxTY29wZUNoYWlu
Tm9kZT46Ok1heUJlTnVsbCkKICAgICAgICAgICAgLCBvYmplY3QoKmdsb2JhbERhdGEsIHRoaXMs
IG9iamVjdCkKICAgICAgICAgICAgLCBnbG9iYWxPYmplY3QoKmdsb2JhbERhdGEsIHRoaXMsIGds
b2JhbE9iamVjdCkKICAgICAgICAgICAgLCBnbG9iYWxUaGlzKCpnbG9iYWxEYXRhLCB0aGlzLCBn
bG9iYWxUaGlzKQogICAgICAgIHsKICAgICAgICB9CgogICAgcHJvdGVjdGVkOgogICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgICAgIHsKICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oKmdsb2JhbERhdGEpOwogICAgICAgICAgICBkbyBpZiAoIShnbG9iYWxPYmplY3QpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Njb3BlQ2hhaW4uaCIsIDUyLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiZ2xvYmFsT2Jq
ZWN0Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICB9CgogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Cgog
ICAgICAgIHN0YXRpYyBTY29wZUNoYWluTm9kZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU2Nv
cGVDaGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMp
CiAgICAgICAgewogICAgICAgICAgICBTY29wZUNoYWluTm9kZSogbm9kZSA9IG5ldyAoYWxsb2Nh
dGVDZWxsPFNjb3BlQ2hhaW5Ob2RlPigqZXhlYy0+aGVhcCgpKSkgU2NvcGVDaGFpbk5vZGUobmV4
dCwgb2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGdsb2JhbFRoaXMpOwogICAgICAg
ICAgICBub2RlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QpOwogICAg
ICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICB9CiAgICAgICAgc3RhdGljIFNjb3BlQ2hhaW5O
b2RlKiBjcmVhdGUoU2NvcGVDaGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIGdsb2JhbFRoaXMpCiAgICAgICAgewogICAgICAgICAgICBTY29wZUNoYWluTm9kZSogbm9k
ZSA9IG5ldyAoYWxsb2NhdGVDZWxsPFNjb3BlQ2hhaW5Ob2RlPihnbG9iYWxEYXRhLT5oZWFwKSkg
U2NvcGVDaGFpbk5vZGUobmV4dCwgb2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGds
b2JhbFRoaXMpOwogICAgICAgICAgICBub2RlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QpOwogICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICB9CgogICAgICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YTsKICAgICAgICBXcml0ZUJhcnJpZXI8U2NvcGVDaGFp
bk5vZGU+IG5leHQ7CiAgICAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBvYmplY3Q7CiAgICAg
ICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3Q7CiAgICAgICAgV3Jp
dGVCYXJyaWVyPEpTT2JqZWN0PiBnbG9iYWxUaGlzOwoKICAgICAgICBTY29wZUNoYWluTm9kZSog
cHVzaChKU09iamVjdCopOwogICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBwb3AoKTsKCiAgICAgICAg
U2NvcGVDaGFpbkl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVu
ZCgpOwoKICAgICAgICBpbnQgbG9jYWxEZXB0aCgpOwoKCiAgICAgICAgdm9pZCBwcmludCgpOwoK
CiAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykg
eyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90
bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyB9CiAg
ICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICAgICBz
dGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKCiAgICBwcml2YXRlOgogICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47
CiAgICB9OwoKICAgIGlubGluZSBTY29wZUNoYWluTm9kZSogU2NvcGVDaGFpbk5vZGU6OnB1c2go
SlNPYmplY3QqIG8pCiAgICB7CiAgICAgICAgZG8gaWYgKCEobykpIHsgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVD
aGFpbi5oIiwgOTksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJvIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gU2NvcGVD
aGFpbk5vZGU6OmNyZWF0ZSh0aGlzLCBvLCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QuZ2V0KCks
IGdsb2JhbFRoaXMuZ2V0KCkpOwogICAgfQoKICAgIGlubGluZSBTY29wZUNoYWluTm9kZSogU2Nv
cGVDaGFpbk5vZGU6OnBvcCgpCiAgICB7CiAgICAgICAgZG8gaWYgKCEobmV4dCkpIHsgV1RGUmVw
b3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVDaGFpbi5oIiwgMTA1LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibmV4dCIpOyBkbyB7
IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7
ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
cmV0dXJuIG5leHQuZ2V0KCk7CiAgICB9CgogICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yIHsK
ICAgIHB1YmxpYzoKICAgICAgICBTY29wZUNoYWluSXRlcmF0b3IoU2NvcGVDaGFpbk5vZGUqIG5v
ZGUpCiAgICAgICAgICAgIDogbV9ub2RlKG5vZGUpCiAgICAgICAgewogICAgICAgIH0KCiAgICAg
ICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBjb25zdCAmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0
dXJuIG1fbm9kZS0+b2JqZWN0OyB9CiAgICAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBjb25z
dCAqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQoKICAgICAg
ICBTY29wZUNoYWluSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IG1fbm9kZSA9IG1fbm9kZS0+bmV4
dC5nZXQoKTsgcmV0dXJuICp0aGlzOyB9CgoKCiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNjb3BlQ2hhaW5JdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZSA9PSBvdGhl
ci5tX25vZGU7IH0KICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2NvcGVDaGFpbkl0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9ub2RlICE9IG90aGVyLm1fbm9kZTsgfQoKICAg
IHByaXZhdGU6CiAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG1fbm9kZTsKICAgIH07CgogICAgaW5s
aW5lIFNjb3BlQ2hhaW5JdGVyYXRvciBTY29wZUNoYWluTm9kZTo6YmVnaW4oKQogICAgewogICAg
ICAgIHJldHVybiBTY29wZUNoYWluSXRlcmF0b3IodGhpcyk7CiAgICB9CgogICAgaW5saW5lIFNj
b3BlQ2hhaW5JdGVyYXRvciBTY29wZUNoYWluTm9kZTo6ZW5kKCkKICAgIHsKICAgICAgICByZXR1
cm4gU2NvcGVDaGFpbkl0ZXJhdG9yKDApOwogICAgfQoKICAgIGlubGluZSBKU0dsb2JhbERhdGEm
IEV4ZWNTdGF0ZTo6Z2xvYmFsRGF0YSgpIGNvbnN0CiAgICB7CiAgICAgICAgZG8gaWYgKCEoc2Nv
cGVDaGFpbigpLT5nbG9iYWxEYXRhKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgiLCAxNDIsIF9f
UFJFVFRZX0ZVTkNUSU9OX18sICJzY29wZUNoYWluKCktPmdsb2JhbERhdGEiKTsgZG8geyBXVEZS
ZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZv
aWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVy
biAqc2NvcGVDaGFpbigpLT5nbG9iYWxEYXRhOwogICAgfQoKICAgIGlubGluZSBKU0dsb2JhbE9i
amVjdCogRXhlY1N0YXRlOjpsZXhpY2FsR2xvYmFsT2JqZWN0KCkgY29uc3QKICAgIHsKICAgICAg
ICByZXR1cm4gc2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QuZ2V0KCk7CiAgICB9CgogICAgaW5s
aW5lIEpTT2JqZWN0KiBFeGVjU3RhdGU6Omdsb2JhbFRoaXNWYWx1ZSgpIGNvbnN0CiAgICB7CiAg
ICAgICAgcmV0dXJuIHNjb3BlQ2hhaW4oKS0+Z2xvYmFsVGhpcy5nZXQoKTsKICAgIH0KCiAgICBp
bmxpbmUgU2NvcGVDaGFpbk5vZGUqIFJlZ2lzdGVyOjpzY29wZUNoYWluKCkgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2NvcGVDaGFpbk5vZGUqPihqc1ZhbHVlKCkuYXND
ZWxsKCkpOwogICAgfQoKICAgIGlubGluZSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKICAgIHsKICAgICAgICAqdGhpcyA9IEpTVmFsdWUo
c2NvcGVDaGFpbik7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKfQojIDM0ICIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIiAyCiMgMSAiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RvcmFnZUJhcnJpZXIuaCIgMQojIDI3
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdG9yYWdlQmFycmllci5o
IgojZGVmaW5lIFN0b3JhZ2VCYXJyaWVyX2ggCgoKCgpuYW1lc3BhY2UgSlNDIHsKCnR5cGVkZWYg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogUHJvcGVydHlTdG9yYWdlOwp0eXBlZGVmIGNvbnN0
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIENvbnN0UHJvcGVydHlTdG9yYWdlOwoKY2xhc3Mg
U3RvcmFnZUJhcnJpZXIgewpwdWJsaWM6CiAgICBlbnVtIFVuY2hlY2tlZFRhZyB7IFVuY2hlY2tl
ZCB9OwogICAgU3RvcmFnZUJhcnJpZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwq
IG93bmVyLCBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSkKICAgIHsKICAgICAgICBzZXQoZ2xvYmFs
RGF0YSwgb3duZXIsIHN0b3JhZ2UpOwogICAgfQoKICAgIFN0b3JhZ2VCYXJyaWVyKFByb3BlcnR5
U3RvcmFnZSBzdG9yYWdlLCBVbmNoZWNrZWRUYWcpCiAgICB7CiAgICAgICAgc2V0KHN0b3JhZ2Us
IFVuY2hlY2tlZCk7CiAgICB9CgogICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0NlbGwqIG93bmVyLCBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSkKICAgIHsKICAgICAg
ICBpZiAoIWdsb2JhbERhdGEuaGVhcC5pblByb3BlcnR5U3RvcmFnZU51cnNlcnkobV9zdG9yYWdl
KSkKICAgICAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLndyaXRlQmFycmllcihvd25lciwgSlNWYWx1
ZSgpKTsKICAgICAgICBtX3N0b3JhZ2UgPSBuZXdTdG9yYWdlOwogICAgfQoKICAgIHZvaWQgc2V0
KFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlLCBVbmNoZWNrZWRUYWcpCiAgICB7CiAgICAgICAg
bV9zdG9yYWdlID0gbmV3U3RvcmFnZTsKICAgIH0KCiAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlOyB9CiAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBvcGVyYXRvci0+KCkgeyByZXR1cm4gbV9zdG9yYWdlOyB9CiAg
ICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpt
X3N0b3JhZ2U7IH0KICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gb3BlcmF0b3IqKCkgeyBy
ZXR1cm4gKm1fc3RvcmFnZTsgfQogICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYg
b3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlW2ldOyB9CiAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBt
X3N0b3JhZ2VbaV07IH0KCiAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBnZXQoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2U7IH0KICAgIFByb3BlcnR5U3RvcmFnZSBnZXQoKSB7IHJldHVybiBtX3N0
b3JhZ2U7IH0KCnByaXZhdGU6CiAgICBQcm9wZXJ0eVN0b3JhZ2UgbV9zdG9yYWdlOwp9OwoKfQoj
IDM1ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIiAy
CgoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
IiAxCiMgMjQgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgiCiNkZWZpbmUgSlNTdHJpbmdfaCAKCgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgiCiNkZWZpbmUg
UHJvcGVydHlEZXNjcmlwdG9yX2ggCgoKCm5hbWVzcGFjZSBKU0MgewogICAgY2xhc3MgUHJvcGVy
dHlEZXNjcmlwdG9yIHsKICAgIHB1YmxpYzoKICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IoKQog
ICAgICAgICAgICA6IG1fYXR0cmlidXRlcyhkZWZhdWx0QXR0cmlidXRlcykKICAgICAgICAgICAg
LCBtX3NlZW5BdHRyaWJ1dGVzKDApCiAgICAgICAgewogICAgICAgIH0KICAgICAgICBib29sIHdy
aXRhYmxlKCkgY29uc3Q7CiAgICAgICAgYm9vbCBlbnVtZXJhYmxlKCkgY29uc3Q7CiAgICAgICAg
Ym9vbCBjb25maWd1cmFibGUoKSBjb25zdDsKICAgICAgICBib29sIGlzRGF0YURlc2NyaXB0b3Io
KSBjb25zdDsKICAgICAgICBib29sIGlzR2VuZXJpY0Rlc2NyaXB0b3IoKSBjb25zdDsKICAgICAg
ICBib29sIGlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgY29uc3Q7CiAgICAgICAgdW5zaWduZWQgYXR0
cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAgICAgIEpTVmFsdWUg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgICAgSlNWYWx1ZSBnZXR0ZXIo
KSBjb25zdDsKICAgICAgICBKU1ZhbHVlIHNldHRlcigpIGNvbnN0OwogICAgICAgIHZvaWQgc2V0
VW5kZWZpbmVkKCk7CiAgICAgICAgdm9pZCBzZXREZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgIHZvaWQgc2V0QWNjZXNzb3JEZXNjcmlwdG9yKEpT
VmFsdWUgZ2V0dGVyLCBKU1ZhbHVlIHNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAg
ICAgdm9pZCBzZXRXcml0YWJsZShib29sKTsKICAgICAgICB2b2lkIHNldEVudW1lcmFibGUoYm9v
bCk7CiAgICAgICAgdm9pZCBzZXRDb25maWd1cmFibGUoYm9vbCk7CiAgICAgICAgdm9pZCBzZXRW
YWx1ZShKU1ZhbHVlIHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZTsgfQogICAgICAgIHZvaWQgc2V0
U2V0dGVyKEpTVmFsdWUpOwogICAgICAgIHZvaWQgc2V0R2V0dGVyKEpTVmFsdWUpOwogICAgICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICEobV92YWx1ZSB8fCBtX2dldHRlciB8fCBt
X3NldHRlciB8fCBtX3NlZW5BdHRyaWJ1dGVzKTsgfQogICAgICAgIGJvb2wgd3JpdGFibGVQcmVz
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWVuQXR0cmlidXRlcyAmIFdyaXRhYmxlUHJlc2VudDsg
fQogICAgICAgIGJvb2wgZW51bWVyYWJsZVByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZW5B
dHRyaWJ1dGVzICYgRW51bWVyYWJsZVByZXNlbnQ7IH0KICAgICAgICBib29sIGNvbmZpZ3VyYWJs
ZVByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZW5BdHRyaWJ1dGVzICYgQ29uZmlndXJhYmxl
UHJlc2VudDsgfQogICAgICAgIGJvb2wgc2V0dGVyUHJlc2VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2V0dGVyOyB9CiAgICAgICAgYm9vbCBnZXR0ZXJQcmVzZW50KCkgY29uc3QgeyByZXR1cm4gbV9n
ZXR0ZXI7IH0KICAgICAgICBib29sIGVxdWFsVG8oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIG90aGVyKSBjb25zdDsKICAgICAgICBib29sIGF0dHJpYnV0ZXNFcXVh
bChjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIG90aGVyKSBjb25zdDsKICAgICAgICB1bnNpZ25l
ZCBhdHRyaWJ1dGVzV2l0aE92ZXJyaWRlKGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgb3RoZXIp
IGNvbnN0OwogICAgcHJpdmF0ZToKICAgICAgICBzdGF0aWMgdW5zaWduZWQgZGVmYXVsdEF0dHJp
YnV0ZXM7CiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYp
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICBlbnVtIHsgV3JpdGFibGVQcmVzZW50ID0gMSwgRW51
bWVyYWJsZVByZXNlbnQgPSAyLCBDb25maWd1cmFibGVQcmVzZW50ID0gNH07CgogICAgICAgIEpT
VmFsdWUgbV92YWx1ZTsKICAgICAgICBKU1ZhbHVlIG1fZ2V0dGVyOwogICAgICAgIEpTVmFsdWUg
bV9zZXR0ZXI7CiAgICAgICAgdW5zaWduZWQgbV9hdHRyaWJ1dGVzOwogICAgICAgIHVuc2lnbmVk
IG1fc2VlbkF0dHJpYnV0ZXM7CiAgICB9Owp9CiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiIDIKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUm9wZUltcGwuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Sb3BlSW1wbC5oIgojZGVmaW5lIFJvcGVJbXBsX2ggCgoKCm5h
bWVzcGFjZSBKU0MgewoKY2xhc3MgUm9wZUltcGwgOiBwdWJsaWMgU3RyaW5nSW1wbEJhc2Ugewpw
dWJsaWM6CgoKICAgIHR5cGVkZWYgU3RyaW5nSW1wbEJhc2UqIEZpYmVyOwoKCgogICAgc3RhdGlj
IFBhc3NSZWZQdHI8Um9wZUltcGw+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgZmli
ZXJDb3VudCkKICAgIHsKICAgICAgICB2b2lkKiBhbGxvY2F0aW9uOwogICAgICAgIGlmICh0cnlG
YXN0TWFsbG9jKHNpemVvZihSb3BlSW1wbCkgKyAoZmliZXJDb3VudCAtIDEpICogc2l6ZW9mKEZp
YmVyKSkuZ2V0VmFsdWUoYWxsb2NhdGlvbikpCiAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgKGFsbG9jYXRpb24pIFJvcGVJbXBsKGZpYmVyQ291bnQpKTsKICAgICAgICByZXR1cm4gMDsK
ICAgIH0KCiAgICBzdGF0aWMgYm9vbCBpc1JvcGUoRmliZXIgZmliZXIpCiAgICB7CiAgICAgICAg
cmV0dXJuICFmaWJlci0+aXNTdHJpbmdJbXBsKCk7CiAgICB9CgogICAgc3RhdGljIHZvaWQgZGVy
ZWYoRmliZXIgZmliZXIpCiAgICB7CiAgICAgICAgaWYgKGlzUm9wZShmaWJlcikpCiAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFJvcGVJbXBsKj4oZmliZXIpLT5kZXJlZigpOwogICAgICAgIGVsc2UK
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KGZpYmVyKS0+ZGVyZWYoKTsKICAg
IH0KCiAgICB2b2lkIGluaXRpYWxpemVGaWJlcih1bnNpZ25lZCAmaW5kZXgsIEZpYmVyIGZpYmVy
KQogICAgewogICAgICAgIG1fZmliZXJzW2luZGV4KytdID0gZmliZXI7CiAgICAgICAgZmliZXIt
PnJlZigpOwogICAgICAgIG1fbGVuZ3RoICs9IGZpYmVyLT5sZW5ndGgoKTsKICAgIH0KCiAgICB1
bnNpZ25lZCBmaWJlckNvdW50KCkgeyByZXR1cm4gbV9zaXplOyB9CiAgICBGaWJlciogZmliZXJz
KCkgeyByZXR1cm4gbV9maWJlcnM7IH0KCiAgICBpbmxpbmUgdm9pZCBkZXJlZigpCiAgICB7CiAg
ICAgICAgbV9yZWZDb3VudEFuZEZsYWdzIC09IHNfcmVmQ291bnRJbmNyZW1lbnQ7CiAgICAgICAg
aWYgKCEobV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudE1hc2spKQogICAgICAgICAgICBk
ZXN0cnVjdE5vblJlY3Vyc2l2ZSgpOwogICAgfQoKcHJpdmF0ZToKICAgIFJvcGVJbXBsKHVuc2ln
bmVkIGZpYmVyQ291bnQpCiAgICAgICAgOiBTdHJpbmdJbXBsQmFzZShDb25zdHJ1Y3ROb25TdHJp
bmdJbXBsKQogICAgICAgICwgbV9zaXplKGZpYmVyQ291bnQpCiAgICB7CiAgICB9CgogICAgdm9p
ZCBkZXN0cnVjdE5vblJlY3Vyc2l2ZSgpOwogICAgdm9pZCBkZXJlZkZpYmVyc05vblJlY3Vyc2l2
ZShWZWN0b3I8Um9wZUltcGwqLCAzMj4mIHdvcmtRdWV1ZSk7CgogICAgYm9vbCBoYXNPbmVSZWYo
KSB7IHJldHVybiAobV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudE1hc2spID09IHNfcmVm
Q291bnRJbmNyZW1lbnQ7IH0KCiAgICB1bnNpZ25lZCBtX3NpemU7CiAgICBGaWJlciBtX2ZpYmVy
c1sxXTsKfTsKCn0KIyAzMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaCIgMgoKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIEpTU3RyaW5nOwoKICAg
IEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOwogICAgSlNTdHJpbmcqIGpz
RW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CiAgICBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9iYWxE
YXRhKiwgY29uc3QgVVN0cmluZyYpOwogICAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSos
IGNvbnN0IFVTdHJpbmcmKTsKCiAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmco
SlNHbG9iYWxEYXRhKiwgVUNoYXIpOwogICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKEV4ZWNTdGF0ZSosIFVDaGFyKTsKICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1
YnN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKICAg
IEpTU3RyaW5nKiBqc1N1YnN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgSlNTdHJpbmcqIGpzU3Vic3RyaW5n
KEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7CgoKCiAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSos
IGNvbnN0IFVTdHJpbmcmKTsKICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOwogICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhK
U0dsb2JhbERhdGEqLCBjb25zdCBjaGFyKik7CiAgICBKU1N0cmluZyoganNOb250cml2aWFsU3Ry
aW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKCgoKCiAgICBKU1N0cmluZyoganNPd25lZFN0
cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7CiAgICBKU1N0cmluZyoganNPd25l
ZFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CgogICAgY2xhc3MgSlNTdHJpbmcg
OiBwdWJsaWMgSlNDZWxsIHsKICAgIHB1YmxpYzoKICAgICAgICBmcmllbmQgY2xhc3MgSklUOwog
ICAgICAgIGZyaWVuZCBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgICAgZnJpZW5kIGNsYXNzIFNw
ZWNpYWxpemVkVGh1bmtKSVQ7CiAgICAgICAgZnJpZW5kIHN0cnVjdCBUaHVua0hlbHBlcnM7Cgog
ICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CgogICAgICAgIGNsYXNzIFJvcGVCdWlsZGVyIHsK
ICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgIFJvcGVCdWlsZGVyKHVuc2lnbmVkIGZpYmVyQ291
bnQpCiAgICAgICAgICAgICAgICA6IG1faW5kZXgoMCkKICAgICAgICAgICAgICAgICwgbV9yb3Bl
KFJvcGVJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGZpYmVyQ291bnQpKQogICAgICAgICAg
ICB7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJvb2wgaXNPdXRPZk1lbW9yeSgpIHsgcmV0
dXJuICFtX3JvcGU7IH0KCiAgICAgICAgICAgIHZvaWQgYXBwZW5kKFJvcGVJbXBsOjpGaWJlciYg
ZmliZXIpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRvIGlmICghKG1fcm9wZSkpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaCIsIDgzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9yb3BlIik7
IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVm
ID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAg
ICAgICAgICAgICAgIG1fcm9wZS0+aW5pdGlhbGl6ZUZpYmVyKG1faW5kZXgsIGZpYmVyKTsKICAg
ICAgICAgICAgfQogICAgICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBVU3RyaW5nJiBzdHJpbmcp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRvIGlmICghKG1fcm9wZSkpIHsgV1RGUmVw
b3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaCIsIDg4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9yb3BlIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAg
ICAgICAgIG1fcm9wZS0+aW5pdGlhbGl6ZUZpYmVyKG1faW5kZXgsIHN0cmluZy5pbXBsKCkpOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgIHZvaWQgYXBwZW5kKEpTU3RyaW5nKiBqc1N0cmluZykK
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGpzU3RyaW5nLT5pc1JvcGUoKSkgewog
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBqc1N0cmluZy0+bV9m
aWJlckNvdW50OyArK2kpCiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChqc1N0cmluZy0+
bV9maWJlcnNbaV0pOwogICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
YXBwZW5kKGpzU3RyaW5nLT5zdHJpbmcoKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFBh
c3NSZWZQdHI8Um9wZUltcGw+IHJlbGVhc2UoKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICBkbyBpZiAoIShtX2luZGV4ID09IG1fcm9wZS0+ZmliZXJDb3VudCgpKSkgeyBXVEZSZXBvcnRB
c3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oIiwgMTAyLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9pbmRleCA9PSBtX3JvcGUt
PmZpYmVyQ291bnQoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50
cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsg
fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gbV9yb3BlLnJlbGVhc2UoKTsKICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9yb3Bl
LT5sZW5ndGgoKTsgfQoKICAgICAgICBwcml2YXRlOgogICAgICAgICAgICB1bnNpZ25lZCBtX2lu
ZGV4OwogICAgICAgICAgICBSZWZQdHI8Um9wZUltcGw+IG1fcm9wZTsKICAgICAgICB9OwoKICAg
ICAgICBjbGFzcyBSb3BlSXRlcmF0b3IgewogICAgICAgICAgICBwdWJsaWM6CiAgICAgICAgICAg
ICAgICBSb3BlSXRlcmF0b3IoKSB7IH0KCiAgICAgICAgICAgICAgICBSb3BlSXRlcmF0b3IoUm9w
ZUltcGw6OkZpYmVyKiBmaWJlcnMsIHNpemVfdCBmaWJlckNvdW50KQogICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgIGRvIGlmICghKGZpYmVyQ291bnQpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgiLCAxMTksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJmaWJlckNvdW50Iik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAg
ICAgICAgICAgICBtX3dvcmtRdWV1ZS5hcHBlbmQoV29ya0l0ZW0oZmliZXJzLCBmaWJlckNvdW50
KSk7CiAgICAgICAgICAgICAgICAgICAgc2tpcFJvcGVzKCk7CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgUm9wZUl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICBXb3JrSXRlbSYgaXRlbSA9IG1fd29ya1F1ZXVlLmxhc3Qo
KTsKICAgICAgICAgICAgICAgICAgICBkbyBpZiAoISghUm9wZUltcGw6OmlzUm9wZShpdGVtLmZp
YmVyc1tpdGVtLmldKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCIsIDEyNywgX19QUkVUVFlfRlVO
Q1RJT05fXywgIiFSb3BlSW1wbDo6aXNSb3BlKGl0ZW0uZmliZXJzW2l0ZW0uaV0pIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAg
ICAgICAgICAgICBpZiAoKytpdGVtLmkgPT0gaXRlbS5maWJlckNvdW50KQogICAgICAgICAgICAg
ICAgICAgICAgICBtX3dvcmtRdWV1ZS5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAg
c2tpcFJvcGVzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG9wZXJhdG9yKigpCiAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgV29ya0l0ZW0mIGl0ZW0gPSBtX3dvcmtRdWV1
ZS5sYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgUm9wZUltcGw6OkZpYmVyIGZpYmVyID0gaXRl
bS5maWJlcnNbaXRlbS5pXTsKICAgICAgICAgICAgICAgICAgICBkbyBpZiAoISghUm9wZUltcGw6
OmlzUm9wZShmaWJlcikpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiLCAxMzgsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICIhUm9wZUltcGw6OmlzUm9wZShmaWJlcikiKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oZmliZXIpOwogICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSb3BlSXRlcmF0b3ImIG90aGVy
KSBjb25zdAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBtX3dv
cmtRdWV1ZSAhPSBvdGhlci5tX3dvcmtRdWV1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgIHByaXZhdGU6CiAgICAgICAgICAgICAgICBzdHJ1Y3QgV29ya0l0ZW0gewogICAgICAgICAg
ICAgICAgICAgIFdvcmtJdGVtKFJvcGVJbXBsOjpGaWJlciogZmliZXJzLCBzaXplX3QgZmliZXJD
b3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgOiBmaWJlcnMoZmliZXJzKQogICAgICAgICAg
ICAgICAgICAgICAgICAsIGZpYmVyQ291bnQoZmliZXJDb3VudCkKICAgICAgICAgICAgICAgICAg
ICAgICAgLCBpKDApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIH0K
CiAgICAgICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdvcmtJdGVtJiBvdGhl
cikgY29uc3QKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmaWJlcnMgIT0gb3RoZXIuZmliZXJzIHx8IGZpYmVyQ291bnQgIT0gb3RoZXIuZmliZXJD
b3VudCB8fCBpICE9IG90aGVyLmk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICAgICBSb3BlSW1wbDo6RmliZXIqIGZpYmVyczsKICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZmliZXJDb3VudDsKICAgICAgICAgICAgICAgICAgICBzaXplX3QgaTsKICAgICAgICAgICAg
ICAgIH07CgogICAgICAgICAgICAgICAgdm9pZCBza2lwUm9wZXMoKQogICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgIGlmIChtX3dvcmtRdWV1ZS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgV29ya0l0ZW0mIGl0ZW0gPSBtX3dvcmtRdWV1ZS5sYXN0
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIFJvcGVJbXBsOjpGaWJlciBmaWJlciA9IGl0ZW0u
ZmliZXJzW2l0ZW0uaV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUm9wZUltcGw6Omlz
Um9wZShmaWJlcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgICAgUm9wZUltcGwqIHJvcGUgPSBzdGF0aWNfY2FzdDxSb3BlSW1wbCo+KGZp
YmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCsraXRlbS5pID09IGl0ZW0uZmliZXJD
b3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fd29ya1F1ZXVlLnJlbW92ZUxhc3Qo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgbV93b3JrUXVldWUuYXBwZW5kKFdvcmtJdGVtKHJv
cGUtPmZpYmVycygpLCByb3BlLT5maWJlckNvdW50KCkpKTsKICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgVmVjdG9yPFdvcmtJdGVtLCAxNj4g
bV93b3JrUXVldWU7CiAgICAgICAgfTsKCiAgICBwcml2YXRlOgogICAgICAgIGlubGluZSBKU1N0
cmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHZhbHVlKQogICAg
ICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkKICAgICAgICAgICAgLCBtX2xlbmd0aCh2YWx1ZS5sZW5ndGgoKSkKICAgICAgICAgICAg
LCBtX3ZhbHVlKHZhbHVlKQogICAgICAgICAgICAsIG1fZmliZXJDb3VudCgwKQogICAgICAgIHsK
ICAgICAgICB9CgogICAgICAgIGVudW0gSGFzT3RoZXJPd25lclR5cGUgeyBIYXNPdGhlck93bmVy
IH07CiAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3Ry
aW5nJiB2YWx1ZSwgSGFzT3RoZXJPd25lclR5cGUpCiAgICAgICAgICAgIDogSlNDZWxsKGdsb2Jh
bERhdGEsIGdsb2JhbERhdGEuc3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAsIG1f
bGVuZ3RoKHZhbHVlLmxlbmd0aCgpKQogICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAg
ICAgICAgICwgbV9maWJlckNvdW50KDApCiAgICAgICAgewogICAgICAgIH0KICAgICAgICBKU1N0
cmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFs
dWUsIEhhc090aGVyT3duZXJUeXBlKQogICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBn
bG9iYWxEYXRhLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgLCBtX2xlbmd0aCh2
YWx1ZS0+bGVuZ3RoKCkpCiAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAg
LCBtX2ZpYmVyQ291bnQoMCkKICAgICAgICB7CiAgICAgICAgfQogICAgICAgIEpTU3RyaW5nKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUGFzc1JlZlB0cjxSb3BlSW1wbD4gcm9wZSkKICAgICAg
ICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpCiAgICAgICAgICAgICwgbV9sZW5ndGgocm9wZS0+bGVuZ3RoKCkpCiAgICAgICAgICAgICwg
bV9maWJlckNvdW50KDEpCiAgICAgICAgewogICAgICAgIH0KCgogICAgICAgIEpTU3RyaW5nKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgSlNTdHJpbmcqIHMx
LCBKU1N0cmluZyogczIpCiAgICAgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIGdsb2JhbERh
dGEuc3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAsIG1fbGVuZ3RoKHMxLT5sZW5n
dGgoKSArIHMyLT5sZW5ndGgoKSkKICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoZmliZXJDb3Vu
dCkKICAgICAgICB7CiAgICAgICAgfQoKCiAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNvdW50LCBKU1N0cmluZyogczEsIGNvbnN0IFVTdHJp
bmcmIHUyKQogICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgLCBtX2xlbmd0aChzMS0+bGVuZ3RoKCkgKyB1
Mi5sZW5ndGgoKSkKICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoZmliZXJDb3VudCkKICAgICAg
ICB7CiAgICAgICAgfQoKCiAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCB1bnNpZ25lZCBmaWJlckNvdW50LCBjb25zdCBVU3RyaW5nJiB1MSwgSlNTdHJpbmcqIHMyKQog
ICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkKICAgICAgICAgICAgLCBtX2xlbmd0aCh1MS5sZW5ndGgoKSArIHMyLT5sZW5ndGgo
KSkKICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoZmliZXJDb3VudCkKICAgICAgICB7CiAgICAg
ICAgfQogICAgICAgIEpTU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgOiBKU0Nl
bGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkuc3RyaW5nU3RydWN0dXJl
LmdldCgpKQogICAgICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgICAgICwgbV9maWJlckNv
dW50KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQogICAgICAgIHsKICAgICAgICB9CgoKICAgICAg
ICBKU1N0cmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHUxLCBj
b25zdCBVU3RyaW5nJiB1MikKICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgZ2xvYmFs
RGF0YS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICwgbV9sZW5ndGgodTEubGVu
Z3RoKCkgKyB1Mi5sZW5ndGgoKSkKICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoMikKICAgICAg
ICB7CiAgICAgICAgfQoKCiAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBVU3RyaW5nJiB1MSwgY29uc3QgVVN0cmluZyYgdTIsIGNvbnN0IFVTdHJpbmcmIHUz
KQogICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkKICAgICAgICAgICAgLCBtX2xlbmd0aCh1MS5sZW5ndGgoKSArIHUyLmxlbmd0
aCgpICsgdTMubGVuZ3RoKCkpCiAgICAgICAgICAgICwgbV9maWJlckNvdW50KHNfbWF4SW50ZXJu
YWxSb3BlTGVuZ3RoKQogICAgICAgIHsKICAgICAgICB9CgogICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKICAg
ICAgICB7CiAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAg
ICAgICAgICBkbyBpZiAoISghbV92YWx1ZS5pc051bGwoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aCIsIDI2NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFtX3ZhbHVlLmlzTnVsbCgpIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAg
ICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHZhbHVlLmltcGwoKS0+
Y29zdCgpKTsKICAgICAgICB9CgogICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQogICAgICAgIHsKICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgIGRvIGlmICghKCFtX3ZhbHVlLmlzTnVsbCgpKSkg
eyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oIiwgMjczLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIW1fdmFs
dWUuaXNOdWxsKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8Um9wZUltcGw+IHJvcGUpCiAgICAgICAgewog
ICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAg
bV9maWJlcnNbMF0gPSByb3BlLmxlYWtSZWYoKTsKICAgICAgICB9CgogICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNvdW50
LCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKICAgICAgICB7CiAgICAgICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAgICAgICBkbyBpZiAoIShmaWJlckNv
dW50IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWls
dXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIiwg
Mjg1LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiZmliZXJDb3VudCA8PSBzX21heEludGVybmFsUm9w
ZUxlbmd0aCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3Qp
MHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGls
ZSAoMCk7CiAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICAgICAgICAgYXBwZW5k
U3RyaW5nSW5DcmVhdGUoaW5kZXgsIHMxKTsKICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5DcmVh
dGUoaW5kZXgsIHMyKTsKICAgICAgICAgICAgZG8gaWYgKCEoZmliZXJDb3VudCA9PSBpbmRleCkp
IHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaCIsIDI4OSwgX19QUkVUVFlfRlVOQ1RJT05fXywgImZpYmVy
Q291bnQgPT0gaW5kZXgiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWlu
dHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7
IH0gd2hpbGUgKDApOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIGZpYmVyQ291bnQsIEpTU3RyaW5nKiBzMSwg
Y29uc3QgVVN0cmluZyYgdTIpCiAgICAgICAgewogICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgZG8gaWYgKCEoZmliZXJDb3VudCA8PSBzX21h
eEludGVybmFsUm9wZUxlbmd0aCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCIsIDI5NSwgX19QUkVU
VFlfRlVOQ1RJT05fXywgImZpYmVyQ291bnQgPD0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgiKTsg
ZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYg
PSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ3Jl
YXRlKGluZGV4LCBzMSk7CiAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ3JlYXRlKGluZGV4LCB1
Mik7CiAgICAgICAgICAgIGRvIGlmICghKGZpYmVyQ291bnQgPT0gaW5kZXgpKSB7IFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgiLCAyOTksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJmaWJlckNvdW50ID09IGlu
ZGV4Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICB9CgogICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNvdW50LCBjb25zdCBVU3RyaW5nJiB1MSwgSlNTdHJp
bmcqIHMyKQogICAgICAgIHsKICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
RGF0YSk7CiAgICAgICAgICAgIGRvIGlmICghKGZpYmVyQ291bnQgPD0gc19tYXhJbnRlcm5hbFJv
cGVMZW5ndGgpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiLCAzMDUsIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJmaWJlckNvdW50IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgdW5z
aWduZWQgaW5kZXggPSAwOwogICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNyZWF0ZShpbmRleCwg
dTEpOwogICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNyZWF0ZShpbmRleCwgczIpOwogICAgICAg
ICAgICBkbyBpZiAoIShmaWJlckNvdW50ID09IGluZGV4KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25G
YWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
IiwgMzA5LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiZmliZXJDb3VudCA9PSBpbmRleCIpOyBkbyB7
IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7
ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
fQoKCgoKCiAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIsIEpTVmFsdWUgdjMpCiAgICAgICAgewogICAgICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7CiAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5DcmVhdGVBbmRJbmNyZW1lbnRM
ZW5ndGgoZXhlYywgaW5kZXgsIHYxKTsKICAgICAgICAgICAgYXBwZW5kVmFsdWVJbkNyZWF0ZUFu
ZEluY3JlbWVudExlbmd0aChleGVjLCBpbmRleCwgdjIpOwogICAgICAgICAgICBhcHBlbmRWYWx1
ZUluQ3JlYXRlQW5kSW5jcmVtZW50TGVuZ3RoKGV4ZWMsIGluZGV4LCB2Myk7CiAgICAgICAgICAg
IGRvIGlmICghKGluZGV4ID09IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKSkgeyBXVEZSZXBvcnRB
c3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oIiwgMzIzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaW5kZXggPT0gc19tYXhJbnRl
cm5hbFJvcGVMZW5ndGgiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWlu
dHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7
IH0gd2hpbGUgKDApOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHUxLCBjb25zdCBVU3RyaW5nJiB1
MikKICAgICAgICB7CiAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEp
OwogICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAgICAgIGFwcGVuZFN0cmlu
Z0luQ3JlYXRlKGluZGV4LCB1MSk7CiAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ3JlYXRlKGlu
ZGV4LCB1Mik7CiAgICAgICAgICAgIGRvIGlmICghKGluZGV4IDw9IHNfbWF4SW50ZXJuYWxSb3Bl
TGVuZ3RoKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIiwgMzMyLCBfX1BSRVRUWV9GVU5DVElPTl9f
LCAiaW5kZXggPD0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgiKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIH0KCiAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcm
IHUxLCBjb25zdCBVU3RyaW5nJiB1MiwgY29uc3QgVVN0cmluZyYgdTMpCiAgICAgICAgewogICAg
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgdW5z
aWduZWQgaW5kZXggPSAwOwogICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNyZWF0ZShpbmRleCwg
dTEpOwogICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNyZWF0ZShpbmRleCwgdTIpOwogICAgICAg
ICAgICBhcHBlbmRTdHJpbmdJbkNyZWF0ZShpbmRleCwgdTMpOwogICAgICAgICAgICBkbyBpZiAo
IShpbmRleCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aCIsIDM0MiwgX19QUkVUVFlfRlVOQ1RJT05fXywgImluZGV4IDw9IHNfbWF4SW50ZXJuYWxSb3Bl
TGVuZ3RoIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkw
eGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxl
ICgwKTsKICAgICAgICB9CgogICAgcHVibGljOgogICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3Jl
YXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdmFsdWUpCiAgICAg
ICAgewogICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8
SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlKTsK
ICAgICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSk7
CiAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgfQogICAgICAgIHN0YXRpYyBK
U1N0cmluZyogY3JlYXRlSGFzT3RoZXJPd25lcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IFVTdHJpbmcmIHZhbHVlKQogICAgICAgIHsKICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0
cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0
cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSwgSGFzT3RoZXJPd25lcik7CiAgICAgICAgICAgIG5ld1N0
cmluZy0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgdmFsdWUpOwogICAgICAgICAgICByZXR1
cm4gbmV3U3RyaW5nOwogICAgICAgIH0KICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZUhh
c090aGVyT3duZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHZhbHVlKQogICAgICAgIHsKICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5l
dyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9i
YWxEYXRhLCB2YWx1ZSwgSGFzT3RoZXJPd25lcik7CiAgICAgICAgICAgIG5ld1N0cmluZy0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAg
ICAgICAgfQogICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUGFzc1JlZlB0cjxSb3BlSW1wbD4gcm9wZSkKICAgICAgICB7CiAgICAgICAgICAg
IFJlZlB0cjxSb3BlSW1wbD4gdGVtcFJvcGUgPSByb3BlOwogICAgICAgICAgICBKU1N0cmluZyog
bmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkp
IEpTU3RyaW5nKGdsb2JhbERhdGEsIHRlbXBSb3BlKTsKICAgICAgICAgICAgbmV3U3RyaW5nLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCB0ZW1wUm9wZSk7CiAgICAgICAgICAgIHJldHVybiBu
ZXdTdHJpbmc7CiAgICAgICAgfQogICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgSlNTdHJpbmcqIHMxLCBK
U1N0cmluZyogczIpCiAgICAgICAgewogICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0g
bmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGds
b2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCBzMik7CiAgICAgICAgICAgIG5ld1N0cmluZy0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgczEsIHMyKTsKICAgICAgICAgICAg
cmV0dXJuIG5ld1N0cmluZzsKICAgICAgICB9CiAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVh
dGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNvdW50LCBKU1N0cmlu
ZyogczEsIGNvbnN0IFVTdHJpbmcmIHUyKQogICAgICAgIHsKICAgICAgICAgICAgSlNTdHJpbmcq
IG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXAp
KSBKU1N0cmluZyhnbG9iYWxEYXRhLCBmaWJlckNvdW50LCBzMSwgdTIpOwogICAgICAgICAgICBu
ZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCB1Mik7
CiAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgfQogICAgICAgIHN0YXRpYyBK
U1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJD
b3VudCwgY29uc3QgVVN0cmluZyYgdTEsIEpTU3RyaW5nKiBzMikKICAgICAgICB7CiAgICAgICAg
ICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xv
YmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgdTEsIHMyKTsK
ICAgICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBmaWJlckNv
dW50LCB1MSwgczIpOwogICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgIH0KICAg
ICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIsIEpTVmFsdWUgdjMpCiAgICAgICAgewogICAgICAgICAgICBKU1N0cmluZyog
bmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KCpleGVjLT5oZWFwKCkpKSBK
U1N0cmluZyhleGVjKTsKICAgICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbihleGVj
LCB2MSwgdjIsIHYzKTsKICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAgICB9CiAg
ICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBVU3RyaW5nJiB1MSwgY29uc3QgVVN0cmluZyYgdTIpCiAgICAgICAgewogICAgICAgICAg
ICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHUxLCB1Mik7CiAgICAgICAgICAgIG5l
d1N0cmluZy0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgdTEsIHUyKTsKICAgICAgICAgICAg
cmV0dXJuIG5ld1N0cmluZzsKICAgICAgICB9CiAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVh
dGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB1MSwgY29uc3QgVVN0
cmluZyYgdTIsIGNvbnN0IFVTdHJpbmcmIHUzKQogICAgICAgIHsKICAgICAgICAgICAgSlNTdHJp
bmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhl
YXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB1MSwgdTIsIHUzKTsKICAgICAgICAgICAgbmV3U3Ry
aW5nLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCB1MSwgdTIsIHUzKTsKICAgICAgICAgICAg
cmV0dXJuIG5ld1N0cmluZzsKICAgICAgICB9CgogICAgICAgIH5KU1N0cmluZygpCiAgICAgICAg
ewogICAgICAgICAgICBkbyBpZiAoISh2cHRyKCkgPT0gSlNHbG9iYWxEYXRhOjpqc1N0cmluZ1ZQ
dHIpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiLCA0MTAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJ2
cHRyKCkgPT0gSlNHbG9iYWxEYXRhOjpqc1N0cmluZ1ZQdHIiKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9maWJlckNvdW50OyArK2kpCiAgICAgICAgICAgICAgICBSb3BlSW1w
bDo6ZGVyZWYobV9maWJlcnNbaV0pOwogICAgICAgIH0KCiAgICAgICAgY29uc3QgVVN0cmluZyYg
dmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAgaWYgKGlz
Um9wZSgpKQogICAgICAgICAgICAgICAgcmVzb2x2ZVJvcGUoZXhlYyk7CiAgICAgICAgICAgIHJl
dHVybiBtX3ZhbHVlOwogICAgICAgIH0KICAgICAgICBjb25zdCBVU3RyaW5nJiB0cnlHZXRWYWx1
ZSgpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgICAg
ICAgICByZXNvbHZlUm9wZSgwKTsKICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWU7CiAgICAgICAg
fQogICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9CgogICAgICAg
IGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgYm9vbCBnZXRTdHJpbmdQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwoKICAg
ICAgICBib29sIGNhbkdldEluZGV4KHVuc2lnbmVkIGkpIHsgcmV0dXJuIGkgPCBtX2xlbmd0aDsg
fQogICAgICAgIEpTU3RyaW5nKiBnZXRJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCk7CiAgICAg
ICAgSlNTdHJpbmcqIGdldEluZGV4U2xvd0Nhc2UoRXhlY1N0YXRlKiwgdW5zaWduZWQpOwoKICAg
ICAgICBKU1ZhbHVlIHJlcGxhY2VDaGFyYWN0ZXIoRXhlY1N0YXRlKiwgVUNoYXIsIGNvbnN0IFVT
dHJpbmcmIHJlcGxhY2VtZW50KTsKCiAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90bykKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdHJp
bmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QpLCAmc19pbmZvKTsKICAgICAgICB9
CgogICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwoKICAgIHByaXZhdGU6CiAg
ICAgICAgSlNTdHJpbmcoVlB0clN0ZWFsaW5nSGFja1R5cGUpCiAgICAgICAgICAgIDogSlNDZWxs
KFZQdHJTdGVhbGluZ0hhY2spCiAgICAgICAgICAgICwgbV9maWJlckNvdW50KDApCiAgICAgICAg
ewogICAgICAgIH0KCiAgICAgICAgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsK
ICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoRXhlY1N0YXRlKiwgVUNoYXIqKSBjb25z
dDsKICAgICAgICB2b2lkIG91dE9mTWVtb3J5KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgIEpT
U3RyaW5nKiBzdWJzdHJpbmdGcm9tUm9wZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCk7CgogICAgICAgIHZvaWQgYXBwZW5kU3RyaW5nSW5DcmVhdGUodW5zaWdu
ZWQmIGluZGV4LCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgewogICAgICAgICAgICBT
dHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nLmltcGwoKTsKICAgICAgICAgICAgaW1wbC0+cmVmKCk7
CiAgICAgICAgICAgIG1fZmliZXJzW2luZGV4KytdID0gaW1wbDsKICAgICAgICAgICAgSGVhcDo6
aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHN0cmluZy5pbXBsKCktPmNvc3QoKSk7
CiAgICAgICAgfQoKICAgICAgICB2b2lkIGFwcGVuZFN0cmluZ0luQ3JlYXRlKHVuc2lnbmVkJiBp
bmRleCwgSlNTdHJpbmcqIGpzU3RyaW5nKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGpzU3Ry
aW5nLT5pc1JvcGUoKSkgewogICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGpzU3RyaW5nLT5tX2ZpYmVyQ291bnQ7ICsraSkgewogICAgICAgICAgICAgICAgICAgIFJvcGVJ
bXBsOjpGaWJlciBmaWJlciA9IGpzU3RyaW5nLT5tX2ZpYmVyc1tpXTsKICAgICAgICAgICAgICAg
ICAgICBmaWJlci0+cmVmKCk7CiAgICAgICAgICAgICAgICAgICAgbV9maWJlcnNbaW5kZXgrK10g
PSBmaWJlcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICBhcHBlbmRTdHJpbmdJbkNyZWF0ZShpbmRleCwganNTdHJpbmctPnN0cmluZygpKTsKICAg
ICAgICB9CgogICAgICAgIHZvaWQgYXBwZW5kVmFsdWVJbkNyZWF0ZUFuZEluY3JlbWVudExlbmd0
aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkJiBpbmRleCwgSlNWYWx1ZSB2KQogICAgICAgIHsK
ICAgICAgICAgICAgaWYgKHYuaXNTdHJpbmcoKSkgewogICAgICAgICAgICAgICAgZG8gaWYgKCEo
di5hc0NlbGwoKS0+aXNTdHJpbmcoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCIsIDQ4MSwgX19Q
UkVUVFlfRlVOQ1RJT05fXywgInYuYXNDZWxsKCktPmlzU3RyaW5nKCkiKTsgZG8geyBXVEZSZXBv
cnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQo
KikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAg
SlNTdHJpbmcqIHMgPSBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KHYuYXNDZWxsKCkpOwogICAgICAg
ICAgICAgICAgZG8gaWYgKCEocy0+ZmliZXJDb3VudCgpID09IDEpKSB7IFdURlJlcG9ydEFzc2Vy
dGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgiLCA0ODMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzLT5maWJlckNvdW50KCkgPT0gMSIp
OyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVl
ZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNyZWF0ZShpbmRleCwgcyk7CiAgICAgICAgICAg
ICAgICBtX2xlbmd0aCArPSBzLT5sZW5ndGgoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgIFVTdHJpbmcgdSh2LnRvU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGwqIGltcGwgPSB1LmltcGwoKTsKICAgICAgICAgICAgICAgIGltcGwtPnJlZigpOwog
ICAgICAgICAgICAgICAgbV9maWJlcnNbaW5kZXgrK10gPSBpbXBsOwogICAgICAgICAgICAgICAg
bV9sZW5ndGggKz0gdS5sZW5ndGgoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAg
dmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2
ZVR5cGUpIGNvbnN0OwogICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhl
Y1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKICAgICAgICB2aXJ0dWFs
IGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgIHZpcnR1YWwgZG91Ymxl
IHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRv
T2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgICAgdmlydHVh
bCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwoKICAgICAgICB2aXJ0dWFsIEpT
T2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CgoKICAgICAgICB2aXJ0dWFs
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwoKICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19tYXhJbnRlcm5hbFJvcGVMZW5ndGggPSAzOwoKCiAgICAg
ICAgdW5zaWduZWQgbV9sZW5ndGg7CiAgICAgICAgbXV0YWJsZSBVU3RyaW5nIG1fdmFsdWU7CiAg
ICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2ZpYmVyQ291bnQ7CiAgICAgICAgbXV0YWJsZSBGaXhl
ZEFycmF5PFJvcGVJbXBsOjpGaWJlciwgc19tYXhJbnRlcm5hbFJvcGVMZW5ndGg+IG1fZmliZXJz
OwoKICAgICAgICBib29sIGlzUm9wZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmliZXJDb3VudDsgfQog
ICAgICAgIFVTdHJpbmcmIHN0cmluZygpIHsgZG8gaWYgKCEoIWlzUm9wZSgpKSkgeyBXVEZSZXBv
cnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oIiwgNTE4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIWlzUm9wZSgpIik7IGRv
IHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0g
MDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJu
IG1fdmFsdWU7IH0KICAgICAgICB1bnNpZ25lZCBmaWJlckNvdW50KCkgeyByZXR1cm4gbV9maWJl
ckNvdW50ID8gbV9maWJlckNvdW50IDogMTsgfQoKICAgICAgICBmcmllbmQgSlNWYWx1ZSBqc1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyKTsKICAgICAg
ICBmcmllbmQgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcm
IHUxLCBKU1N0cmluZyogczIpOwogICAgICAgIGZyaWVuZCBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYywgSlNTdHJpbmcqIHMxLCBjb25zdCBVU3RyaW5nJiB1Mik7CiAgICAgICAgZnJp
ZW5kIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3Rlciogc3RyaW5ncywg
dW5zaWduZWQgY291bnQpOwogICAgICAgIGZyaWVuZCBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUpOwogICAgICAgIGZyaWVuZCBKU1N0cmluZyoganNT
dWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgfTsKCiAgICBKU1N0cmluZyogYXNTdHJpbmcoSlNWYWx1ZSk7
CiMgNTM4ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
IgogICAgaW5saW5lIEpTU3RyaW5nKiBmaXh1cFZQdHIoSlNHbG9iYWxEYXRhKiwgSlNTdHJpbmcq
IHN0cmluZykgeyByZXR1cm4gc3RyaW5nOyB9CgoKICAgIGlubGluZSBKU1N0cmluZyogYXNTdHJp
bmcoSlNWYWx1ZSB2YWx1ZSkKICAgIHsKICAgICAgICBkbyBpZiAoISh2YWx1ZS5hc0NlbGwoKS0+
aXNTdHJpbmcoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCIsIDU0MywgX19QUkVUVFlfRlVOQ1RJ
T05fXywgInZhbHVlLmFzQ2VsbCgpLT5pc1N0cmluZygpIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SlNTdHJpbmcqPih2YWx1ZS5hc0NlbGwoKSk7CiAgICB9CgogICAgaW5saW5lIEpTU3RyaW5n
KiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgIHsKICAgICAgICBy
ZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKGdsb2JhbERhdGEpOwog
ICAgfQoKICAgIGlubGluZSBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBVQ2hhciBjKQogICAgewogICAgICAgIGlmIChjIDw9IG1heFNp
bmdsZUNoYXJhY3RlclN0cmluZykKICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxs
U3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7CiAgICAgICAgcmV0
dXJuIGZpeHVwVlB0cihnbG9iYWxEYXRhLCBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBV
U3RyaW5nKCZjLCAxKSkpOwogICAgfQoKICAgIGlubGluZSBKU1N0cmluZyoganNTaW5nbGVDaGFy
YWN0ZXJTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzLCB1bnNpZ25l
ZCBvZmZzZXQpCiAgICB7CiAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMt
Pmdsb2JhbERhdGEoKTsKICAgICAgICBkbyBpZiAoIShvZmZzZXQgPCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocy5sZW5ndGgoKSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiLCA1NjIsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sICJvZmZzZXQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgoKSki
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwog
ICAgICAgIFVDaGFyIGMgPSBzW29mZnNldF07CiAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKQogICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdz
LnNpbmdsZUNoYXJhY3RlclN0cmluZyhnbG9iYWxEYXRhLCBjKTsKICAgICAgICByZXR1cm4gZml4
dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIFVTdHJpbmco
U3RyaW5nSW1wbDo6Y3JlYXRlKHMuaW1wbCgpLCBvZmZzZXQsIDEpKSkpOwogICAgfQoKICAgIGlu
bGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgY29uc3QgY2hhciogcykKICAgIHsKICAgICAgICBkbyBpZiAoIShzKSkgeyBXVEZSZXBvcnRB
c3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oIiwgNTcxLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAicyIpOyBkbyB7IFdURlJlcG9y
dEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgq
KSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8gaWYgKCEo
c1swXSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCIsIDU3MiwgX19QUkVUVFlfRlVOQ1RJT05fXywg
InNbMF0iKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOwogICAgICAgIGRvIGlmICghKHNbMV0pKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiLCA1NzMs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzWzFdIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7
ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2Jh
bERhdGEsIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIHMpKTsKICAgIH0KCiAgICBpbmxp
bmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGNvbnN0IFVTdHJpbmcmIHMpCiAgICB7CiAgICAgICAgZG8gaWYgKCEocy5sZW5ndGgoKSA+IDEp
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiLCA1NzksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzLmxl
bmd0aCgpID4gMSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRy
X3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIGZpeHVwVlB0cihnbG9iYWxEYXRhLCBKU1N0cmluZzo6
Y3JlYXRlKCpnbG9iYWxEYXRhLCBzKSk7CiAgICB9CgogICAgaW5saW5lIEpTU3RyaW5nKiBKU1N0
cmluZzo6Z2V0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpKQogICAgewogICAgICAg
IGRvIGlmICghKGNhbkdldEluZGV4KGkpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIiwgNTg1LCBf
X1BSRVRUWV9GVU5DVElPTl9fLCAiY2FuR2V0SW5kZXgoaSkiKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGlmIChpc1JvcGUoKSkK
ICAgICAgICAgICAgcmV0dXJuIGdldEluZGV4U2xvd0Nhc2UoZXhlYywgaSk7CiAgICAgICAgZG8g
aWYgKCEoaSA8IG1fdmFsdWUubGVuZ3RoKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiLCA1ODgs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpIDwgbV92YWx1ZS5sZW5ndGgoKSIpOyBkbyB7IFdURlJl
cG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9p
ZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJu
IGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKGV4ZWMsIG1fdmFsdWUsIGkpOwogICAgfQoKICAg
IGlubGluZSBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBVU3RyaW5nJiBzKQogICAgewogICAgICAgIGludCBzaXplID0gcy5sZW5ndGgoKTsKICAgICAg
ICBpZiAoIXNpemUpCiAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Mu
ZW1wdHlTdHJpbmcoZ2xvYmFsRGF0YSk7CiAgICAgICAgaWYgKHNpemUgPT0gMSkgewogICAgICAg
ICAgICBVQ2hhciBjID0gc1swXTsKICAgICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKQogICAgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5n
cy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7CiAgICAgICAgfQogICAgICAg
IHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0
YSwgcykpOwogICAgfQoKICAgIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBKU1N0cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAg
ICB7CiAgICAgICAgZG8gaWYgKCEob2Zmc2V0IDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLT5s
ZW5ndGgoKSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiLCA2MDcsIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJvZmZzZXQgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMtPmxlbmd0aCgpKSIpOyBkbyB7
IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7
ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
ZG8gaWYgKCEobGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLT5sZW5ndGgoKSkpKSB7
IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgiLCA2MDgsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJsZW5ndGgg
PD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMtPmxlbmd0aCgpKSIpOyBkbyB7IFdURlJlcG9ydEJh
Y2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgp
KTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8gaWYgKCEob2Zm
c2V0ICsgbGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLT5sZW5ndGgoKSkpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgiLCA2MDksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJvZmZzZXQgKyBs
ZW5ndGggPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMtPmxlbmd0aCgpKSIpOyBkbyB7IFdURlJl
cG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9p
ZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5lbXB0eVN0
cmluZyhnbG9iYWxEYXRhKTsKICAgICAgICBpZiAocy0+aXNSb3BlKCkpCiAgICAgICAgICAgIHJl
dHVybiBzLT5zdWJzdHJpbmdGcm9tUm9wZShleGVjLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAgICAg
cmV0dXJuIGpzU3Vic3RyaW5nKGdsb2JhbERhdGEsIHMtPm1fdmFsdWUsIG9mZnNldCwgbGVuZ3Ro
KTsKICAgIH0KCiAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCiAgICB7CiAgICAgICAgZG8gaWYgKCEob2Zmc2V0IDw9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzLmxlbmd0aCgpKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCIsIDYyMCwgX19QUkVUVFlf
RlVOQ1RJT05fXywgIm9mZnNldCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgoKSki
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwog
ICAgICAgIGRvIGlmICghKGxlbmd0aCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgo
KSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiLCA2MjEsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJs
ZW5ndGggPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMubGVuZ3RoKCkpIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAo
IShvZmZzZXQgKyBsZW5ndGggPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMubGVuZ3RoKCkpKSkg
eyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oIiwgNjIyLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAib2Zmc2V0
ICsgbGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLmxlbmd0aCgpKSIpOyBkbyB7IFdU
RlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgo
dm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgaWYg
KCFsZW5ndGgpCiAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MuZW1w
dHlTdHJpbmcoZ2xvYmFsRGF0YSk7CiAgICAgICAgaWYgKGxlbmd0aCA9PSAxKSB7CiAgICAgICAg
ICAgIFVDaGFyIGMgPSBzW29mZnNldF07CiAgICAgICAgICAgIGlmIChjIDw9IG1heFNpbmdsZUNo
YXJhY3RlclN0cmluZykKICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0
cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwogICAgICAgIH0KICAg
ICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhl
ck93bmVyKCpnbG9iYWxEYXRhLCBVU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZShzLmltcGwoKSwg
b2Zmc2V0LCBsZW5ndGgpKSkpOwogICAgfQoKICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0
cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpCiAgICB7CiAg
ICAgICAgaW50IHNpemUgPSBzLmxlbmd0aCgpOwogICAgICAgIGlmICghc2l6ZSkKICAgICAgICAg
ICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZyhnbG9iYWxEYXRh
KTsKICAgICAgICBpZiAoc2l6ZSA9PSAxKSB7CiAgICAgICAgICAgIFVDaGFyIGMgPSBzWzBdOwog
ICAgICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgICAg
ICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmlu
ZyhnbG9iYWxEYXRhLCBjKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZpeHVwVlB0cihnbG9i
YWxEYXRhLCBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqZ2xvYmFsRGF0YSwgcykpOwog
ICAgfQoKICAgIGlubGluZSBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
IHsgcmV0dXJuIGpzRW1wdHlTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSk7IH0KICAgIGlubGlu
ZSBKU1N0cmluZyoganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzKSB7
IHJldHVybiBqc1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgaW5saW5lIEpT
U3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVDaGFyIGMp
IHsgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIGMp
OyB9CiAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVVN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJu
IGpzU3Vic3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwgbGVuZ3RoKTsgfQog
ICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBVU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgcyk7IH0KICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogcykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5n
KCZleGVjLT5nbG9iYWxEYXRhKCksIHMpOyB9CiAgICBpbmxpbmUgSlNTdHJpbmcqIGpzT3duZWRT
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzKSB7IHJldHVybiBqc093bmVk
U3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMpOyB9CgogICAgaW5saW5lIGJvb2wgSlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgewogICAgICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICAg
ICBzbG90LnNldFZhbHVlKGpzTnVtYmVyKG1fbGVuZ3RoKSk7CiAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgIH0KCiAgICAgICAgYm9vbCBpc1N0cmljdFVJbnQzMjsKICAgICAgICB1bnNp
Z25lZCBpID0gcHJvcGVydHlOYW1lLnRvVUludDMyKGlzU3RyaWN0VUludDMyKTsKICAgICAgICBp
ZiAoaXNTdHJpY3RVSW50MzIgJiYgaSA8IG1fbGVuZ3RoKSB7CiAgICAgICAgICAgIHNsb3Quc2V0
VmFsdWUoZ2V0SW5kZXgoZXhlYywgaSkpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBKU1N0cmlu
Zzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICB7CiAgICAgICAgaWYgKHByb3BlcnR5TmFt
ZSA8IG1fbGVuZ3RoKSB7CiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUoZ2V0SW5kZXgoZXhlYywg
cHJvcGVydHlOYW1lKSk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5h
c0NlbGwoKS0+dnB0cigpID09IGdsb2JhbERhdGEtPmpzU3RyaW5nVlB0cjsgfQoKCgogICAgaW5s
aW5lIFVTdHJpbmcgSlNWYWx1ZTo6dG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAg
ewogICAgICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOwogICAgICAgIGlmIChpc0ludDMyKCkp
CiAgICAgICAgICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkubnVtZXJpY1N0cmluZ3MuYWRk
KGFzSW50MzIoKSk7CiAgICAgICAgaWYgKGlzRG91YmxlKCkpCiAgICAgICAgICAgIHJldHVybiBl
eGVjLT5nbG9iYWxEYXRhKCkubnVtZXJpY1N0cmluZ3MuYWRkKGFzRG91YmxlKCkpOwogICAgICAg
IGlmIChpc1RydWUoKSkKICAgICAgICAgICAgcmV0dXJuICJ0cnVlIjsKICAgICAgICBpZiAoaXNG
YWxzZSgpKQogICAgICAgICAgICByZXR1cm4gImZhbHNlIjsKICAgICAgICBpZiAoaXNOdWxsKCkp
CiAgICAgICAgICAgIHJldHVybiAibnVsbCI7CiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKCkpCiAg
ICAgICAgICAgIHJldHVybiAidW5kZWZpbmVkIjsKICAgICAgICBkbyBpZiAoIShpc0NlbGwoKSkp
IHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaCIsIDcwMSwgX19QUkVUVFlfRlVOQ1RJT05fXywgImlzQ2Vs
bCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvU3RyaW5nKGV4ZWMpOwogICAgfQoKICAgIGlu
bGluZSBVU3RyaW5nIEpTVmFsdWU6OnRvUHJpbWl0aXZlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKICAgIHsKICAgICAgICBkbyBpZiAoISghaXNTdHJpbmcoKSkpIHsgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaCIsIDcwNywgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFpc1N0cmluZygpIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBp
ZiAoaXNJbnQzMigpKQogICAgICAgICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLm51bWVy
aWNTdHJpbmdzLmFkZChhc0ludDMyKCkpOwogICAgICAgIGlmIChpc0RvdWJsZSgpKQogICAgICAg
ICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLm51bWVyaWNTdHJpbmdzLmFkZChhc0RvdWJs
ZSgpKTsKICAgICAgICBpZiAoaXNUcnVlKCkpCiAgICAgICAgICAgIHJldHVybiAidHJ1ZSI7CiAg
ICAgICAgaWYgKGlzRmFsc2UoKSkKICAgICAgICAgICAgcmV0dXJuICJmYWxzZSI7CiAgICAgICAg
aWYgKGlzTnVsbCgpKQogICAgICAgICAgICByZXR1cm4gIm51bGwiOwogICAgICAgIGlmIChpc1Vu
ZGVmaW5lZCgpKQogICAgICAgICAgICByZXR1cm4gInVuZGVmaW5lZCI7CiAgICAgICAgZG8gaWYg
KCEoaXNDZWxsKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiLCA3MjAsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sICJpc0NlbGwoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShleGVj
LCBOb1ByZWZlcmVuY2UpLnRvU3RyaW5nKGV4ZWMpOwogICAgfQoKfQojIDM4ICIuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIiAyCgoKbmFtZXNwYWNlIEpT
QyB7CgogICAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpICYm
ICh2YWx1ZS5hc0NlbGwoKS0+dnB0cigpID09IGdsb2JhbERhdGEuanNGdW5jdGlvblZQdHIpKQog
ICAgICAgICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCk7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9
CgogICAgY2xhc3MgSGFzaEVudHJ5OwogICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKICAgIGNs
YXNzIE1hcmtlZEJsb2NrOwogICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgY2xhc3Mg
UHJvcGVydHlOYW1lQXJyYXk7CiAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICBzdHJ1Y3QgSGFzaFRh
YmxlOwoKICAgIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJik7CiAgICBleHRlcm4gY29uc3QgY2hhciogU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yOwoKCgogICAgZW51bSBBdHRyaWJ1dGUgewogICAgICAgIE5vbmUgPSAwLAogICAg
ICAgIFJlYWRPbmx5ID0gMSA8PCAxLAogICAgICAgIERvbnRFbnVtID0gMSA8PCAyLAogICAgICAg
IERvbnREZWxldGUgPSAxIDw8IDMsCiAgICAgICAgRnVuY3Rpb24gPSAxIDw8IDQsCiAgICAgICAg
R2V0dGVyID0gMSA8PCA1LAogICAgICAgIFNldHRlciA9IDEgPDwgNgogICAgfTsKCiAgICBjbGFz
cyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgIGZyaWVuZCBjbGFzcyBCYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplcjsKICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgIGZy
aWVuZCBjbGFzcyBKU0NlbGw7CiAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAg
ICAgIGZyaWVuZCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKCiAgICBwdWJsaWM6CiAgICAg
ICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKCiAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImKTsKICAgICAgICBpbmxpbmUgdm9pZCB2aXNpdENoaWxkcmVuRGlyZWN0
KFNsb3RWaXNpdG9yJik7CgoKCiAgICAgICAgdmlydHVhbCB+SlNPYmplY3QoKTsKCiAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGUoKSBjb25zdDsKICAgICAgICB2b2lkIHNldFByb3RvdHlwZShKU0ds
b2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgYm9vbCBzZXRQcm90b3R5cGVX
aXRoQ3ljbGVDaGVjayhKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSk7CgogICAgICAg
IHZvaWQgc2V0U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgIFN0
cnVjdHVyZSogaW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJik7CgogICAgICAgIHZpcnR1YWwgVVN0
cmluZyBjbGFzc05hbWUoKSBjb25zdDsKCiAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICBKU1ZhbHVlIGdl
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwoKICAgICAgICBib29s
IGdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgYm9vbCBn
ZXRQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKCiAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKCiAgICAgICAgdmlydHVhbCB2b2lk
IHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKCiAgICAgICAgdmly
dHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9v
bCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpOwogICAgICAgIHZpcnR1YWwg
dm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAg
IHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAg
IHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJv
b2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKICAgICAgICB2aXJ0dWFs
IHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICB2
aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKCiAgICAgICAgYm9v
bCBwcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpIGNvbnN0OwoKICAgICAgICBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgYm9vbCBoYXNQcm9w
ZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgIGJv
b2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKSBjb25zdDsKCiAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgdmlydHVhbCBib29s
IGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CgogICAg
ICAgIHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSkgY29uc3Q7CgogICAgICAgIHZpcnR1YWwgYm9vbCBoYXNJbnN0YW5jZShFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKCiAgICAgICAgdmly
dHVhbCB2b2lkIGdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAg
ICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKCiAgICAgICAgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUgPSBOb1ByZWZlcmVuY2UpIGNvbnN0OwogICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpT
VmFsdWUmIHZhbHVlKTsKICAgICAgICB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSop
IGNvbnN0OwogICAgICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0
OwogICAgICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKICAg
ICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCopIGNvbnN0OwoKICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0
YXRlKikgY29uc3Q7CiAgICAgICAgdmlydHVhbCBKU1ZhbHVlIHRvU3RyaWN0VGhpc09iamVjdChF
eGVjU3RhdGUqKSBjb25zdDsKICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB1bndyYXBwZWRPYmpl
Y3QoKTsKCiAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljRnVu
Y3Rpb24pIGNvbnN0OwoKCiAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAg
ewogICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91
bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICAgICB9CgogICAg
ICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgICAg
IHsKICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQoZ2xvYmFsRGF0
YSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZv
dW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CiAgICAgICAgfQoKICAgICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0
dHJpYnV0ZXMpCiAgICAgICAgewogICAgICAgICAgICBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb247
CiAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAgICAg
IHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNl
dCkgOiAwOwogICAgICAgIH0KCiAgICAgICAgc2l6ZV90IG9mZnNldEZvckxvY2F0aW9uKFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKSBjb25zdAogICAgICAgIHsKICAgICAgICAg
ICAgcmV0dXJuIGxvY2F0aW9uIC0gcHJvcGVydHlTdG9yYWdlKCk7CiAgICAgICAgfQoKICAgICAg
ICB2b2lkIHRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKCiAgICAgICAg
dm9pZCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKICAgICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBtX3N0
cnVjdHVyZS0+ZGlkVHJhbnNpdGlvbigpOyB9CiAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKTsgfQoKICAgICAgICBib29sIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tS
ZWFkT25seSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgdm9pZCBwdXREaXJlY3QoSlNHbG9i
YWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyID0gMCk7CiAgICAgICAgYm9vbCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKCiAg
ICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCosIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICB2
b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDZWxsKiwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsK
ICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlv
biogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKCiAgICAgICAgdm9pZCBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICB2b2lkIHB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CiAgICAg
ICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAg
ICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oRXhlY1N0YXRlKiBleGVj
LCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0ciA9IDApOwoKCiAgICAgICAgSlNW
YWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gcHJvcGVy
dHlTdG9yYWdlKClbb2Zmc2V0XS5nZXQoKTsgfQogICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkg
eyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7
IH0KICAgICAgICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQp
IHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsgfQoKICAgICAgICB2
b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogbG9jYXRpb24pOwoKICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVy
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdl
dHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7CiAgICAgICAgdmlydHVhbCB2
b2lkIGRlZmluZVNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwog
ICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgbG9va3VwU2V0
dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
dmlydHVhbCBib29sIGRlZmluZU93blByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CgogICAgICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2YXRpb25PYmplY3QoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmljdE1vZGVG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgdmlydHVhbCBib29sIGlz
RXJyb3JJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CgogICAgICAgIHZvaWQgc2Vh
bChKU0dsb2JhbERhdGEmKTsKICAgICAgICB2b2lkIGZyZWV6ZShKU0dsb2JhbERhdGEmKTsKICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxEYXRhJik7CiAgICAg
ICAgYm9vbCBpc1NlYWxlZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpIHsgcmV0dXJuIG1fc3Ry
dWN0dXJlLT5pc1NlYWxlZChnbG9iYWxEYXRhKTsgfQogICAgICAgIGJvb2wgaXNGcm96ZW4oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNGcm96ZW4oZ2xv
YmFsRGF0YSk7IH0KICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIHsgcmV0dXJuIG1fc3RydWN0
dXJlLT5pc0V4dGVuc2libGUoKTsgfQoKICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAg
ICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IHZvaWQqPihtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8Y29u
c3Qgdm9pZCo+KHRoaXMgKyAxKTsgfQoKICAgICAgICB2b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eUF0
T2Zmc2V0KHNpemVfdCBvZmZzZXQpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8dm9pZCo+KCZtX3Byb3BlcnR5U3RvcmFnZVtvZmZzZXRdKTsKICAgICAgICB9CgogICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBiYXNlRXh0ZXJuYWxTdG9yYWdlQ2FwYWNpdHkgPSAx
NjsKCiAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiAgICAgICAgewogICAgICAgICAgICBtX3N0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rp
b25hcnlTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcyk7CiAgICAgICAgfQoKICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIGRv
IGlmICghKHN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aCIsIDIzNiwgX19QUkVUVFlfRlVOQ1RJT05fXywgInN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3Qo
KSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFk
YmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAgICAgIGRvIGlmICghKCFpc0dsb2JhbE9iamVjdCgpIHx8ICgoSlNPYmplY3QqKXN0
cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSkgPT0gdGhpcykpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aCIsIDIzNywgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFpc0dsb2JhbE9iamVjdCgpIHx8ICgoSlNP
YmplY3QqKXN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSkgPT0gdGhpcyIpOyBkbyB7IFdURlJl
cG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9p
ZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgIHJl
dHVybiBzdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0
aWMgc2l6ZV90IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwogICAgICAgIHN0YXRpYyBzaXplX3Qg
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9m
SW5oZXJpdG9ySUQoKTsKCiAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87Cgog
ICAgcHJvdGVjdGVkOgogICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSkKICAgICAgICB7CiAgICAg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAgICAgICBkbyBp
ZiAoIShpbmhlcml0cygmc19pbmZvKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCIsIDI1MSwgX19Q
UkVUVFlfRlVOQ1RJT05fXywgImluaGVyaXRzKCZzX2luZm8pIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgZG8gaWYgKCEo
bV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPCBiYXNlRXh0ZXJuYWxTdG9y
YWdlQ2FwYWNpdHkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiLCAyNTIsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sICJtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA8IGJhc2VFeHRl
cm5hbFN0b3JhZ2VDYXBhY2l0eSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZh
bHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgIGRvIGlmICghKG1fc3RydWN0dXJlLT5pc0Vt
cHR5KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiLCAyNTMsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICJtX3N0cnVjdHVyZS0+aXNFbXB0eSgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgZG8gaWYgKCEocHJvdG90eXBlKCku
aXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3RvdHlwZSgpKSkp
IHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaCIsIDI1NCwgX19QUkVUVFlfRlVOQ1RJT05fXywgInByb3Rv
dHlwZSgpLmlzTnVsbCgpIHx8IEhlYXA6OmhlYXAodGhpcykgPT0gSGVhcDo6aGVhcChwcm90b3R5
cGUoKSkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOwogICAgICAgICAgICBkbyBpZiAoIShzdGF0aWNfY2FzdDx2b2lkKj4oaW5saW5lU3RvcmFn
ZSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aCIsIDI1NSwgX19QUkVUVFlfRlVOQ1RJT05fXywgInN0YXRpY19jYXN0PHZvaWQqPihpbmxpbmVT
dG9yYWdlKSA9PSBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyArIDEpIik7IGRvIHsgV1RGUmVwb3J0
QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCop
KCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgZG8gaWYg
KCEobV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IE9iamVjdFR5cGUpKSB7IFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgiLCAyNTYsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX3N0cnVjdHVyZS0+
dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFj
ZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7
IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICB7CiAg
ICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19p
bmZvKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IDA7CgogICAgICAgIHZvaWQgcHV0VGhpc1RvQW5vbnltb3VzVmFsdWUodW5zaWduZWQg
aW5kZXgpCiAgICAgICAgewogICAgICAgICAgICBsb2NhdGlvbkZvck9mZnNldChpbmRleCktPnNl
dFdpdGhvdXRXcml0ZUJhcnJpZXIodGhpcyk7CiAgICAgICAgfQoKCgogICAgICAgIEpTT2JqZWN0
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdl
KTsKICAgICAgICBKU09iamVjdChWUHRyU3RlYWxpbmdIYWNrVHlwZSwgUHJvcGVydHlTdG9yYWdl
IGlubGluZVN0b3JhZ2UpCiAgICAgICAgICAgIDogSlNDZWxsKFZQdHJTdGVhbGluZ0hhY2spCiAg
ICAgICAgICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2UoaW5saW5lU3RvcmFnZSwgU3RvcmFnZUJhcnJp
ZXI6OlVuY2hlY2tlZCkKICAgICAgICB7CiAgICAgICAgfQoKICAgIHByaXZhdGU6CgogICAgICAg
IHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAgdXNpbmcgSlNDZWxsOjpp
c0dldHRlclNldHRlcjsKICAgICAgICB1c2luZyBKU0NlbGw6OnRvT2JqZWN0OwogICAgICAgIHZv
aWQgZ2V0T2JqZWN0KCk7CiAgICAgICAgdm9pZCBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKTsK
ICAgICAgICB2b2lkIGlzT2JqZWN0KCk7CiAgICAgICAgdm9pZCBpc1N0cmluZygpOwoKICAgICAg
ICBDb25zdFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBt
X3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsgfQogICAgICAgIFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0
eVN0b3JhZ2UoKSB7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsgfQoKICAgICAgICBj
b25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChzaXplX3Qg
b2Zmc2V0KSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3Jh
Z2UoKVtvZmZzZXRdOwogICAgICAgIH0KCiAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkKICAgICAgICB7CiAgICAgICAgICAg
IHJldHVybiAmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XTsKICAgICAgICB9CgogICAgICAgIGJv
b2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1
dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwo
SlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYpOwogICAg
ICAgIHZvaWQgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CgogICAg
ICAgIGJvb2wgaW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CgogICAgICAgIGNvbnN0IEhhc2hF
bnRyeSogZmluZFByb3BlcnR5SGFzaEVudHJ5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgU3RydWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJ
RChKU0dsb2JhbERhdGEmKTsKCiAgICAgICAgU3RvcmFnZUJhcnJpZXIgbV9wcm9wZXJ0eVN0b3Jh
Z2U7CiAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbmhlcml0b3JJRDsKICAgIH07
CgoKCgoKCiNkZWZpbmUgSlNOb25GaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgMgoj
ZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDQKCgp0eXBlZGVmIGlu
dCBkdW1teWZpbmFsX3N0b3JhZ2VfaXNfYXRfbGVhc3RfYXNfbGFyZ2VfYXNfbm9uX2ZpbmFsIFso
KDQgPj0gMikpID8gMSA6IC0xXTsKCgoKCiAgICBjbGFzcyBKU05vbkZpbmFsT2JqZWN0IDogcHVi
bGljIEpTT2JqZWN0IHsKICAgICAgICBmcmllbmQgY2xhc3MgSlNPYmplY3Q7CgogICAgcHVibGlj
OgogICAgICAgIHR5cGVkZWYgSlNPYmplY3QgQmFzZTsKCiAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgewogICAgICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAg
ICAgICAgfQoKICAgIHByb3RlY3RlZDoKICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0
KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQogICAgICAgICAgICA6IEpTT2JqZWN0KFZQdHJTdGVhbGlu
Z0hhY2ssIG1faW5saW5lU3RvcmFnZSkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBleHBs
aWNpdCBKU05vbkZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
LCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgewogICAgICAgICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBtX2lubGluZVN0b3JhZ2UpOwogICAg
ICAgICAgICBkbyBpZiAoISghKChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVy
cHJldF9jYXN0PEpTTm9uRmluYWxPYmplY3QqPigweDQwMDApLT5tX2lubGluZVN0b3JhZ2UpKSAt
IDB4NDAwMCkgJSBzaXplb2YoZG91YmxlKSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiLCAzNTUs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhKE9CSkVDVF9PRkZTRVRPRihKU05vbkZpbmFsT2JqZWN0
LCBtX2lubGluZVN0b3JhZ2UpICUgc2l6ZW9mKGRvdWJsZSkpIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgZG8gaWYgKCEo
dGhpcy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gMikpIHsgV1RG
UmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaCIsIDM1NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgInRoaXMtPnN0cnVj
dHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IEpTTm9uRmluYWxPYmplY3RfaW5s
aW5lU3RvcmFnZUNhcGFjaXR5Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICop
KHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsKICAgICAgICB9CgogICAgcHJpdmF0ZToKICAgICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4gbV9pbmxpbmVTdG9yYWdlWzJdOwogICAgfTsKCgoKICAgIGNsYXNzIEpT
RmluYWxPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgewogICAgICAgIGZyaWVuZCBjbGFzcyBKU09i
amVjdDsKCiAgICBwdWJsaWM6CiAgICAgICAgdHlwZWRlZiBKU09iamVjdCBCYXNlOwoKICAgICAg
ICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQogICAgICAgICAg
ICA6IEpTT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2ssIG1faW5saW5lU3RvcmFnZSkKICAgICAgICB7
CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgSlNGaW5hbE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgewogICAgICAgICAgICBKU0Zp
bmFsT2JqZWN0KiBmaW5hbE9iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+
KCpleGVjLT5oZWFwKCkpKSBKU0ZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0
dXJlKTsKICAgICAgICAgICAgZmluYWxPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSk7CiAgICAgICAgICAgIHJldHVybiBmaW5hbE9iamVjdDsKICAgICAgICB9CgogICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksICZzX2luZm8pOwogICAgICAgIH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgewogICAgICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBtX2lubGluZVN0b3JhZ2UpOwog
ICAgICAgICAgICBkbyBpZiAoISghKChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWlu
dGVycHJldF9jYXN0PEpTRmluYWxPYmplY3QqPigweDQwMDApLT5tX2lubGluZVN0b3JhZ2UpKSAt
IDB4NDAwMCkgJSBzaXplb2YoZG91YmxlKSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiLCAzOTIs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhKE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBt
X2lubGluZVN0b3JhZ2UpICUgc2l6ZW9mKGRvdWJsZSkpIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgZG8gaWYgKCEodGhp
cy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gNCkpIHsgV1RGUmVw
b3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaCIsIDM5MywgX19QUkVUVFlfRlVOQ1RJT05fXywgInRoaXMtPnN0cnVjdHVy
ZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IEpTRmluYWxPYmplY3RfaW5saW5lU3Rv
cmFnZUNhcGFjaXR5Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsKICAgICAgICB9CgogICAgcHJpdmF0ZToKICAgICAgICBleHBsaWNpdCBKU0Zp
bmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0
b3JhZ2UpCiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzIHwgSXNKU0ZpbmFsT2Jq
ZWN0OwoKICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVs0
XTsKICAgIH07CgppbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KQp7CiAgICBkbyBpZiAoISgocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnBy
ZXRfY2FzdDxKU0ZpbmFsT2JqZWN0Kj4oMHg0MDAwKS0+bV9pbmxpbmVTdG9yYWdlKSkgLSAweDQw
MDApID09IChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpT
Tm9uRmluYWxPYmplY3QqPigweDQwMDApLT5tX2lubGluZVN0b3JhZ2UpKSAtIDB4NDAwMCkpKSB7
IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgiLCA0MDksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJPQkpFQ1Rf
T0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKSA9PSBPQkpFQ1RfT0ZGU0VU
T0YoSlNOb25GaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKSIpOyBkbyB7IFdURlJlcG9ydEJh
Y2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgp
KTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICByZXR1cm4gKHJlaW50ZXJw
cmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNGaW5hbE9iamVjdCo+KDB4
NDAwMCktPm1faW5saW5lU3RvcmFnZSkpIC0gMHg0MDAwKTsKfQoKaW5saW5lIHNpemVfdCBKU09i
amVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQp7CiAgICByZXR1cm4gKHJlaW50ZXJwcmV0
X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNPYmplY3QqPigweDQwMDApLT5t
X3Byb3BlcnR5U3RvcmFnZSkpIC0gMHg0MDAwKTsKfQoKaW5saW5lIHNpemVfdCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmhlcml0b3JJRCgpCnsKICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJk
aWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU09iamVjdCo+KDB4NDAwMCktPm1faW5oZXJpdG9y
SUQpKSAtIDB4NDAwMCk7Cn0KCmlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKewogICAgcmV0dXJuIEpTRmlu
YWxPYmplY3Q6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUpOwp9CgppbmxpbmUgU3RydWN0dXJlKiBj
cmVhdGVFbXB0eU9iamVjdFN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQp7CiAgICByZXR1cm4g
SlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlKTsKfQoKaW5saW5lIEpTT2JqZWN0KiBhc09iamVjdChKU0NlbGwqIGNlbGwpCnsK
ICAgIGRvIGlmICghKGNlbGwtPmlzT2JqZWN0KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiLCA0
MzUsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJjZWxsLT5pc09iamVjdCgpIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIHJldHVybiBzdGF0
aWNfY2FzdDxKU09iamVjdCo+KGNlbGwpOwp9CgppbmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0KEpT
VmFsdWUgdmFsdWUpCnsKICAgIHJldHVybiBhc09iamVjdCh2YWx1ZS5hc0NlbGwoKSk7Cn0KCmlu
bGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpCiAgICA6IEpTQ2Vs
bChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGdsb2JhbERh
dGEsIHRoaXMsIGlubGluZVN0b3JhZ2UpCnsKfQoKaW5saW5lIEpTT2JqZWN0Ojp+SlNPYmplY3Qo
KQp7CiAgICBpZiAoIWlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgJiYgIUhlYXA6OmhlYXAodGhpcykt
PmluUHJvcGVydHlTdG9yYWdlTnVyc2VyeShtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKSkpCiAgICAg
ICAgZGVsZXRlIFtdIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOwp9CgppbmxpbmUgSlNWYWx1ZSBK
U09iamVjdDo6cHJvdG90eXBlKCkgY29uc3QKewogICAgcmV0dXJuIG1fc3RydWN0dXJlLT5zdG9y
ZWRQcm90b3R5cGUoKTsKfQoKaW5saW5lIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhD
eWNsZUNoZWNrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCnsK
ICAgIEpTVmFsdWUgbmV4dFByb3RvdHlwZVZhbHVlID0gcHJvdG90eXBlOwogICAgd2hpbGUgKG5l
eHRQcm90b3R5cGVWYWx1ZSAmJiBuZXh0UHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkgewogICAg
ICAgIEpTT2JqZWN0KiBuZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFByb3RvdHlwZVZhbHVl
KS0+dW53cmFwcGVkT2JqZWN0KCk7CiAgICAgICAgaWYgKG5leHRQcm90b3R5cGUgPT0gdGhpcykK
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIG5leHRQcm90b3R5cGVWYWx1ZSA9IG5l
eHRQcm90b3R5cGUtPnByb3RvdHlwZSgpOwogICAgfQogICAgc2V0UHJvdG90eXBlKGdsb2JhbERh
dGEsIHByb3RvdHlwZSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnNldFByb3RvdHlwZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBl
KQp7CiAgICBkbyBpZiAoIShwcm90b3R5cGUpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiLCA0NzYs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sICJwcm90b3R5cGUiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJh
Y2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgp
OyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgc2V0U3RydWN0dXJlKGdsb2JhbERh
dGEsIFN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0
cnVjdHVyZS5nZXQoKSwgcHJvdG90eXBlKSk7Cn0KCmlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ewogICAgZG8gaWYgKCEoc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSA9PSBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiLCA0ODIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpID09IG1fc3RydWN0dXJl
LT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSIpOyBkbyB7IFdURlJlcG9ydEJh
Y2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgp
KTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICBtX3N0cnVjdHVyZS5zZXQo
Z2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKTsKfQoKaW5saW5lIFN0cnVjdHVyZSogSlNPYmpl
Y3Q6OmluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKewogICAgaWYgKG1faW5o
ZXJpdG9ySUQpIHsKICAgICAgICBkbyBpZiAoIShtX2luaGVyaXRvcklELT5pc0VtcHR5KCkpKSB7
IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgiLCA0ODksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX2luaGVy
aXRvcklELT5pc0VtcHR5KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKiko
dWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxz
ZSk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBtX2luaGVyaXRvcklELmdldCgpOwogICAg
fQogICAgcmV0dXJuIGNyZWF0ZUluaGVyaXRvcklEKGdsb2JhbERhdGEpOwp9CgppbmxpbmUgYm9v
bCBTdHJ1Y3R1cmU6OmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKewogICAgcmV0dXJuIHBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPCBKU09iamVjdDo6YmFzZUV4dGVybmFsU3RvcmFnZUNh
cGFjaXR5Owp9CgppbmxpbmUgYm9vbCBKU0NlbGw6OmluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyog
aW5mbykgY29uc3QKewogICAgZm9yIChjb25zdCBDbGFzc0luZm8qIGNpID0gY2xhc3NJbmZvKCk7
IGNpOyBjaSA9IGNpLT5wYXJlbnRDbGFzcykgewogICAgICAgIGlmIChjaSA9PSBpbmZvKQogICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKfQoKCmlubGluZSBi
b29sIEpTVmFsdWU6OmluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKSBjb25zdAp7
CiAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmluaGVyaXRzKGNsYXNzSW5mbyk7Cn0K
CmlubGluZSBib29sIEpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKewogICAgaWYgKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uID0gZ2V0RGly
ZWN0TG9jYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
aWYgKG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYgbG9jYXRpb24t
PmlzR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xv
dCwgbG9jYXRpb24pOwogICAgICAgIGVsc2UKICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
LCBsb2NhdGlvbi0+Z2V0KCksIG9mZnNldEZvckxvY2F0aW9uKGxvY2F0aW9uKSk7CiAgICAgICAg
cmV0dXJuIHRydWU7CiAgICB9CgoKICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnVuZGVyc2NvcmVQcm90bykgewogICAgICAgIHNsb3Quc2V0VmFsdWUocHJvdG90
eXBlKCkpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHJldHVybiBmYWxzZTsKfQoK
CgoKaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQp7
CiAgICByZXR1cm4gaW5saW5lR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7Cn0KCmlubGluZSBib29sIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQp7CiAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCgpKQogICAgICAgIHJldHVybiBhc09iamVjdCh0aGlzKS0+aW5saW5lR2V0
T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICByZXR1cm4gZ2V0
T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cn0KCgoKCgppbmxpbmUg
SlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpCnsKICAgIGlmICghbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90KCkgJiYgIW1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKCkpIHsKICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhhc0hh
c2goKQogICAgICAgICAgICA/IG1fc3RydWN0dXJlLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsIG5hbWUpKQogICAgICAgICAgICA6IG1fc3RydWN0dXJlLT5nZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91
bmQpCiAgICAgICAgICAgIHJldHVybiBhc09iamVjdCh0aGlzKS0+bG9jYXRpb25Gb3JPZmZzZXQo
b2Zmc2V0KS0+Z2V0KCk7CiAgICB9CiAgICByZXR1cm4gSlNWYWx1ZSgpOwp9CgoKCmlubGluZSBi
b29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKewogICAgSlNPYmplY3Qq
IG9iamVjdCA9IHRoaXM7CiAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGlmIChvYmplY3QtPmZh
c3RHZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBvYmplY3QtPnByb3Rv
dHlwZSgpOwogICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICBvYmplY3QgPSBhc09iamVjdChwcm90b3R5cGUpOwogICAgfQp9
CgppbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCnsKICAgIEpTT2JqZWN0
KiBvYmplY3QgPSB0aGlzOwogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAob2JqZWN0LT5n
ZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBvYmplY3QtPnByb3RvdHlw
ZSgpOwogICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICBvYmplY3QgPSBhc09iamVjdChwcm90b3R5cGUpOwogICAgfQp9Cgpp
bmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAp7CiAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsK
ICAgIGlmIChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMs
IHByb3BlcnR5TmFtZSk7CgogICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cn0KCmlubGluZSBKU1Zh
bHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUp
IGNvbnN0CnsKICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwogICAgaWYgKGNvbnN0X2Nhc3Q8
SlNPYmplY3QqPih0aGlzKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCkpCiAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKCiAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKfQoKaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNr
UmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9u
KQp7CiAgICBkbyBpZiAoISh2YWx1ZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCIsIDYxMywgX19Q
UkVUVFlfRlVOQ1RJT05fXywgInZhbHVlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIGRvIGlmICghKCFIZWFwOjpoZWFwKHZhbHVlKSB8
fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKSkgeyBXVEZSZXBvcnRBc3Nl
cnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oIiwgNjE0LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIUhlYXA6OmhlYXAodmFsdWUpIHx8
IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykiKTsgZG8geyBXVEZSZXBvcnRC
YWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKiko
KSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwoKICAgIGlmIChtX3N0cnVjdHVy
ZS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsK
ICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwogICAgICAgIHNpemVfdCBv
ZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVu
dEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKICAgICAgICBpZiAob2Zmc2V0
ICE9IFdURjo6bm90Rm91bmQpIHsKCgogICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVu
Y3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQog
ICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUtPmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICBpZiAoY2hlY2tSZWFkT25seSAm
JiBjdXJyZW50QXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwoKICAgICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFs
dWUpOwoKCgoKCgogICAgICAgICAgICBpZiAoIWN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uIHx8IChz
cGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSkKICAgICAgICAgICAg
ICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChjaGVja1JlYWRPbmx5ICYmICFpc0V4
dGVuc2libGUoKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICBzaXplX3QgY3Vy
cmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAg
ICAgICAgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24o
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsK
ICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpKQogICAgICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShnbG9iYWxE
YXRhLCBjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKTsKCiAgICAgICAgZG8gaWYgKCEob2Zmc2V0IDwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiLCA2NDgsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJvZmZzZXQgPCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFk
YmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwoKICAg
ICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCiAgICAgICAgICAgIHNsb3Quc2V0TmV3UHJvcGVy
dHkodGhpcywgb2Zmc2V0KTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBzaXplX3Qg
b2Zmc2V0OwogICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKG1fc3RydWN0dXJl
LmdldCgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNl
dCkpIHsKICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSkKICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoZ2xv
YmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpOwoKICAgICAgICBkbyBpZiAoIShvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiLCA2NjIsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCki
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwog
ICAgICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgIHB1dERp
cmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKCgogICAgICAgIGlmICghc3Bl
Y2lmaWNGdW5jdGlvbikKICAgICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZz
ZXQpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRy
aWJ1dGVzOwogICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKICAgIG9mZnNldCA9
IG1fc3RydWN0dXJlLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmli
dXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwogICAgaWYgKG9mZnNldCAhPSBXVEY6Om5v
dEZvdW5kKSB7CiAgICAgICAgaWYgKGNoZWNrUmVhZE9ubHkgJiYgY3VycmVudEF0dHJpYnV0ZXMg
JiBSZWFkT25seSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwojIDY4OCAiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCIKICAgICAgICBpZiAoY3VycmVu
dFNwZWNpZmljRnVuY3Rpb24pIHsKCiAgICAgICAgICAgIGlmIChzcGVjaWZpY0Z1bmN0aW9uID09
IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSB7CiAgICAgICAgICAgICAgICBwdXREaXJlY3RPZmZz
ZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIFN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0
dXJlLmdldCgpLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICB9CgoKICAgICAgICBzbG90LnNldEV4
aXN0aW5nUHJvcGVydHkodGhpcywgb2Zmc2V0KTsKICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xv
YmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAg
aWYgKGNoZWNrUmVhZE9ubHkgJiYgIWlzRXh0ZW5zaWJsZSgpKQogICAgICAgIHJldHVybiBmYWxz
ZTsKCiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFu
c2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLmdldCgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCk7CgogICAgaWYgKGN1cnJlbnRDYXBhY2l0
eSAhPSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAgICAgYWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwoKICAgIGRvIGlmICghKG9mZnNldCA8IHN0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFp
bHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCIs
IDcxMiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7CiAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
ICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKCgogICAgaWYg
KCFzcGVjaWZpY0Z1bmN0aW9uKQogICAgICAgIHNsb3Quc2V0TmV3UHJvcGVydHkodGhpcywgb2Zm
c2V0KTsKICAgIHJldHVybiB0cnVlOwp9CgppbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tS
ZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQp7CiAgICBkbyBpZiAoISh2YWx1ZSkpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaCIsIDcyNCwgX19QUkVUVFlfRlVOQ1RJT05fXywgInZhbHVlIik7
IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVm
ID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAg
IGRvIGlmICghKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFw
OjpoZWFwKHRoaXMpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIiwgNzI1LCBfX1BSRVRUWV9GVU5D
VElPTl9fLCAiIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6
OmhlYXAodGhpcykiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwoKICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCBnZXRKU0Z1
bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7Cn0KCmlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKewogICAg
UHV0UHJvcGVydHlTbG90IHNsb3Q7CiAgICBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxzZSwgc2xvdCwgZ2V0SlNGdW5jdGlv
bihnbG9iYWxEYXRhLCB2YWx1ZSkpOwp9CgppbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHks
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKewogICAgZG8gaWYgKCEodmFsdWUpKSB7IFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgiLCA3MzgsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJ2YWx1ZSIpOyBkbyB7IFdU
RlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgo
dm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICBkbyBpZiAo
ISghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0
aGlzKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCIsIDczOSwgX19QUkVUVFlfRlVOQ1RJT05fXywg
IiFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRo
aXMpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKCiAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgMCk7Cn0KCmlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCnsKICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwogICAgcHV0RGlyZWN0SW50ZXJuYWwoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgZmFsc2UsIHNsb3QsIDAp
Owp9CgppbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCnsKICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBmYWxzZSwgc2xvdCwgMCk7Cn0KCmlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCnsK
ICAgIHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0
dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIHZhbHVlKTsKfQoKaW5saW5lIHZvaWQgSlNP
YmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyKQp7
CiAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgIHB1dERpcmVjdEludGVybmFsKGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsIGZhbHNlLCBzbG90LCB2YWx1ZSk7Cn0KCmlu
bGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKewogICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9
IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgc2l6ZV90IG9mZnNl
dCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgMCk7CiAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9
IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgIGFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERh
dGEsIG9mZnNldCwgdmFsdWUpOwp9CgppbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cykKewogICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpOwogICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgdmFsdWUpOwogICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBtX3N0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSkKICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShnbG9i
YWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpKTsKICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsK
fQoKaW5saW5lIHZvaWQgSlNPYmplY3Q6OnRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQp7CiAgICBpZiAobV9zdHJ1Y3R1cmUtPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKQogICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG1f
c3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpLCBuZXdTdHJ1Y3R1cmUtPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIG5ld1N0
cnVjdHVyZSk7Cn0KCmlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwZSkgY29uc3QKewog
ICAgcmV0dXJuIGRlZmF1bHRWYWx1ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKfQoKaW5saW5lIEpT
VmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKSBjb25zdAp7CiAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhc1ZhbHVlKCkpOwogICAg
cmV0dXJuIGdldChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwp9CgppbmxpbmUgSlNWYWx1ZSBK
U1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkgY29uc3QKewogICAgaWYgKF9fYnVpbHRpbl9leHBlY3Qo
KCFpc0NlbGwoKSksIDApKSB7CiAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHN5bnRoZXNp
emVQcm90b3R5cGUoZXhlYyk7CiAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKQogICAgICAgICAgICByZXR1cm4gcHJvdG90eXBl
OwogICAgICAgIGlmICghcHJvdG90eXBlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KSkKICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgcmV0
dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgIH0KICAgIEpTQ2VsbCog
Y2VsbCA9IGFzQ2VsbCgpOwogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoY2VsbC0+ZmFz
dEdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAg
ICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gYXNPYmplY3QoY2VsbCktPnByb3RvdHlwZSgpOwogICAgICAgIGlmICgh
cHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgICAgIGNlbGwgPSBhc09iamVjdChwcm90b3R5cGUpOwogICAgfQp9CgppbmxpbmUgSlNWYWx1
ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNv
bnN0CnsKICAgIFByb3BlcnR5U2xvdCBzbG90KGFzVmFsdWUoKSk7CiAgICByZXR1cm4gZ2V0KGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cn0KCmlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KSBjb25zdAp7CiAgICBpZiAoX19idWlsdGluX2V4cGVjdCgoIWlzQ2VsbCgpKSwgMCkpIHsKICAg
ICAgICBKU09iamVjdCogcHJvdG90eXBlID0gc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKICAg
ICAgICBpZiAoIXByb3RvdHlwZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCkpCiAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgIHJldHVybiBz
bG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICB9CiAgICBKU0NlbGwqIGNlbGwg
PSBjb25zdF9jYXN0PEpTQ2VsbCo+KGFzQ2VsbCgpKTsKICAgIHdoaWxlICh0cnVlKSB7CiAgICAg
ICAgaWYgKGNlbGwtPmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KQogICAgICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gYXNPYmplY3QoY2VsbCktPnByb3RvdHlwZSgpOwog
ICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgICAgIGNlbGwgPSBwcm90b3R5cGUuYXNDZWxsKCk7CiAgICB9Cn0KCmlu
bGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQp7CiAg
ICBpZiAoX19idWlsdGluX2V4cGVjdCgoIWlzQ2VsbCgpKSwgMCkpIHsKICAgICAgICBzeW50aGVz
aXplT2JqZWN0KGV4ZWMpLT5wdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAg
ICAgICAgcmV0dXJuOwogICAgfQogICAgYXNDZWxsKCktPnB1dChleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKfQoKaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0RGlyZWN0KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCnsKICAgIGRvIGlmICghKGlzQ2VsbCgpICYmIGlzT2JqZWN0
KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiLCA4NTksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJp
c0NlbGwoKSAmJiBpc09iamVjdCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50
ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIGlmICghYXNPYmplY3QoYXNDZWxsKCkpLT5wdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSAmJiBzbG90
LmlzU3RyaWN0TW9kZSgpKQogICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Cn0KCmlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoKCFpc0NlbGwoKSksIDApKSB7CiAgICAgICAgc3ludGhl
c2l6ZU9iamVjdChleGVjKS0+cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgICAg
IHJldHVybjsKICAgIH0KICAgIGFzQ2VsbCgpLT5wdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSk7Cn0KCmlubGluZSB2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQp7CiAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CgogICAg
UHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKICAgIGlmIChIZWFw
OjpoZWFwKHRoaXMpLT5pblByb3BlcnR5U3RvcmFnZU51cnNlcnkoc3RvcmFnZSkpIHsKICAgICAg
ICBtX3Byb3BlcnR5U3RvcmFnZS5zZXQobmV3IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj5bc3Ry
dWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCldLCBTdG9yYWdlQmFycmllcjo6VW5j
aGVja2VkKTsKICAgICAgICBpZiAoc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkgPiBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKQogICAgICAgICAgICBkbyBp
ZiAoISghc3RvcmFnZVttX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpXSkpIHsgV1RG
UmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaCIsIDg4MSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFzdG9yYWdlW21f
c3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCldIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBtZW1jcHkobV9wcm9wZXJ0
eVN0b3JhZ2UuZ2V0KCksIHN0b3JhZ2UsIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXpl
KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikpOwogICAgfQogICAgc2l6ZV90
IHN0b3JhZ2VTaXplID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKICAgIHZp
c2l0b3IuYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXplKTsKICAgIGlmIChtX2luaGVy
aXRvcklEKQogICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2luaGVyaXRvcklEKTsKfQoKCgppbmxp
bmUgVVN0cmluZyBKU1ZhbHVlOjp0b1RoaXNTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAp7
CiAgICByZXR1cm4gaXNTdHJpbmcoKSA/IHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkp
LT52YWx1ZShleGVjKSA6IHRvVGhpc09iamVjdChleGVjKS0+dG9TdHJpbmcoZXhlYyk7Cn0KCmlu
bGluZSBKU1N0cmluZyogSlNWYWx1ZTo6dG9UaGlzSlNTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAp7CiAgICByZXR1cm4gaXNTdHJpbmcoKSA/IHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXND
ZWxsKCkpIDoganNTdHJpbmcoZXhlYywgdG9UaGlzT2JqZWN0KGV4ZWMpLT50b1N0cmluZyhleGVj
KSk7Cn0KCmlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnRvU3RyaWN0VGhpc09iamVjdChFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0CnsKICAgIGlmICghaXNPYmplY3QoKSkKICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICByZXR1cm4gYXNPYmplY3QoYXNDZWxsKCkpLT50b1N0cmljdFRoaXNPYmplY3QoZXhl
Yyk7Cn0KCmlubGluZSBKU09iamVjdCogUmVnaXN0ZXI6OmZ1bmN0aW9uKCkgY29uc3QKewogICAg
aWYgKCFqc1ZhbHVlKCkpCiAgICAgICAgcmV0dXJuIDA7CiAgICByZXR1cm4gYXNPYmplY3QoanNW
YWx1ZSgpKTsKfQoKaW5saW5lIFJlZ2lzdGVyIFJlZ2lzdGVyOjp3aXRoQ2FsbGVlKEpTT2JqZWN0
KiBjYWxsZWUpCnsKICAgIFJlZ2lzdGVyIHI7CiAgICByID0gSlNWYWx1ZShjYWxsZWUpOwogICAg
cmV0dXJuIHI7Cn0KCn0KIyAyNSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oIiAyCgojZGVmaW5lIENIRUNLX0FSUkFZX0NPTlNJU1RFTkNZIDAKCm5hbWVz
cGFjZSBKU0MgewoKICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgV3JpdGVCYXJyaWVyPFVu
a25vd24+ID4gU3BhcnNlQXJyYXlWYWx1ZU1hcDsKCgoKCgoKICAgIHN0cnVjdCBBcnJheVN0b3Jh
Z2UgewogICAgICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogICAgICAgIHVuc2lnbmVkIG1fbnVtVmFs
dWVzSW5WZWN0b3I7CiAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbV9zcGFyc2VWYWx1ZU1h
cDsKICAgICAgICB2b2lkKiBzdWJjbGFzc0RhdGE7CiAgICAgICAgdm9pZCogbV9hbGxvY0Jhc2U7
CiAgICAgICAgc2l6ZV90IHJlcG9ydGVkTWFwQ2FwYWNpdHk7CgoKCiAgICAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+IG1fdmVjdG9yWzFdOwogICAgfTsKIyA1OCAiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIgogICAgZW51bSBBcnJheUNyZWF0aW9uTW9k
ZSB7IENyZWF0ZUNvbXBhY3QsIENyZWF0ZUluaXRpYWxpemVkIH07CgogICAgY2xhc3MgSlNBcnJh
eSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2Vy
OwoKICAgIHByb3RlY3RlZDoKICAgICAgICBleHBsaWNpdCBKU0FycmF5KEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOwoKICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYp
OwogICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgaW5p
dGlhbExlbmd0aCwgQXJyYXlDcmVhdGlvbk1vZGUpOwogICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiwgY29uc3QgQXJnTGlzdCYpOwoKICAgIHB1YmxpYzoKICAgICAgICB0
eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKCiAgICAgICAgSlNBcnJheShWUHRyU3RlYWxp
bmdIYWNrVHlwZSk7CiAgICAgICAgdmlydHVhbCB+SlNBcnJheSgpOwoKICAgICAgICBzdGF0aWMg
SlNBcnJheSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgewogICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IG5ldyAoYWxsb2Nh
dGVDZWxsPEpTQXJyYXk+KGdsb2JhbERhdGEuaGVhcCkpIEpTQXJyYXkoZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlKTsKICAgICAgICAgICAgYXJyYXktPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwog
ICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgSlNBcnJh
eSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHVuc2lnbmVkIGluaXRpYWxMZW5ndGgsIEFycmF5Q3JlYXRpb25Nb2RlIGNyZWF0ZU1vZGUpCiAg
ICAgICAgewogICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IG5ldyAoYWxsb2NhdGVDZWxsPEpT
QXJyYXk+KGdsb2JhbERhdGEuaGVhcCkpIEpTQXJyYXkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
ICAgICAgICAgICAgYXJyYXktPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGluaXRpYWxMZW5n
dGgsIGNyZWF0ZU1vZGUpOwogICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgfQoKICAg
ICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEFyZ0xpc3QmIGluaXRpYWxWYWx1ZXMpCiAgICAgICAg
ewogICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTQXJyYXk+
KGdsb2JhbERhdGEuaGVhcCkpIEpTQXJyYXkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAg
ICAgICAgYXJyYXktPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGluaXRpYWxWYWx1ZXMpOwog
ICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgfQoKICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgIHZpcnR1YWwg
dm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKCiAg
ICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CgogICAgICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS0+bV9sZW5ndGg7IH0KICAgICAgICB2b2lk
IHNldExlbmd0aCh1bnNpZ25lZCk7CgogICAgICAgIHZvaWQgc29ydChFeGVjU3RhdGUqKTsKICAg
ICAgICB2b2lkIHNvcnQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxU
eXBlLCBjb25zdCBDYWxsRGF0YSYpOwogICAgICAgIHZvaWQgc29ydE51bWVyaWMoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYpOwoK
ICAgICAgICB2b2lkIHB1c2goRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAgICAgICAgSlNWYWx1ZSBw
b3AoKTsKCiAgICAgICAgdm9pZCBzaGlmdENvdW50KEV4ZWNTdGF0ZSosIGludCBjb3VudCk7CiAg
ICAgICAgdm9pZCB1bnNoaWZ0Q291bnQoRXhlY1N0YXRlKiwgaW50IGNvdW50KTsKCiAgICAgICAg
Ym9vbCBjYW5HZXRJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV92ZWN0b3JMZW5ndGgg
JiYgbV9zdG9yYWdlLT5tX3ZlY3RvcltpXTsgfQogICAgICAgIEpTVmFsdWUgZ2V0SW5kZXgodW5z
aWduZWQgaSkKICAgICAgICB7CiAgICAgICAgICAgIGRvIGlmICghKGNhbkdldEluZGV4KGkpKSkg
eyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmgiLCAxMjAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJjYW5HZXRJ
bmRleChpKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3Qp
MHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGls
ZSAoMCk7CiAgICAgICAgICAgIHJldHVybiBtX3N0b3JhZ2UtPm1fdmVjdG9yW2ldLmdldCgpOwog
ICAgICAgIH0KCiAgICAgICAgYm9vbCBjYW5TZXRJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBp
IDwgbV92ZWN0b3JMZW5ndGg7IH0KICAgICAgICB2b2lkIHNldEluZGV4KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgICAgIHsKICAgICAgICAgICAg
ZG8gaWYgKCEoY2FuU2V0SW5kZXgoaSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCIsIDEyNywgX19Q
UkVUVFlfRlVOQ1RJT05fXywgImNhblNldEluZGV4KGkpIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiYgeCA9IG1fc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAgICAgIGlmICgh
eCkgewogICAgICAgICAgICAgICAgQXJyYXlTdG9yYWdlICpzdG9yYWdlID0gbV9zdG9yYWdlOwog
ICAgICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgICAgICAg
ICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bV9sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgc3Rv
cmFnZS0+bV9sZW5ndGggPSBpICsgMTsKICAgICAgICAgICAgfQogICAgICAgICAgICB4LnNldChn
bG9iYWxEYXRhLCB0aGlzLCB2KTsKICAgICAgICB9CgogICAgICAgIHZvaWQgdW5jaGVja2VkU2V0
SW5kZXgoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAg
ICAgICAgewogICAgICAgICAgICBkbyBpZiAoIShjYW5TZXRJbmRleChpKSkpIHsgV1RGUmVwb3J0
QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oIiwgMTQxLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiY2FuU2V0SW5kZXgoaSkiKTsg
ZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYg
PSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAg
ICAgICAgICBBcnJheVN0b3JhZ2UgKnN0b3JhZ2UgPSBtX3N0b3JhZ2U7CgoKCiAgICAgICAgICAg
IHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2KTsKICAgICAgICB9
CgogICAgICAgIHZvaWQgZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiwgTWFya2VkQXJndW1lbnRCdWZm
ZXImKTsKICAgICAgICB2b2lkIGNvcHlUb1JlZ2lzdGVycyhFeGVjU3RhdGUqLCBSZWdpc3Rlcios
IHVpbnQzMl90KTsKCiAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgfQoKICAgICAgICBpbmxp
bmUgdm9pZCB2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNpdG9yJik7CgogICAgICAgIHN0YXRp
YyBwdHJkaWZmX3Qgc3RvcmFnZU9mZnNldCgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4g
KHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNBcnJheSo+
KDB4NDAwMCktPm1fc3RvcmFnZSkpIC0gMHg0MDAwKTsKICAgICAgICB9CgogICAgICAgIHN0YXRp
YyBwdHJkaWZmX3QgdmVjdG9yTGVuZ3RoT2Zmc2V0KCkKICAgICAgICB7CiAgICAgICAgICAgIHJl
dHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU0Fy
cmF5Kj4oMHg0MDAwKS0+bV92ZWN0b3JMZW5ndGgpKSAtIDB4NDAwMCk7CiAgICAgICAgfQoKICAg
IHByb3RlY3RlZDoKICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwg
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgdmlydHVhbCBib29s
IGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSk7CiAgICAgICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJik7CgogICAgICAgIHZvaWQqIHN1YmNsYXNzRGF0YSgpIGNvbnN0
OwogICAgICAgIHZvaWQgc2V0U3ViY2xhc3NEYXRhKHZvaWQqKTsKCiAgICBwcml2YXRlOgogICAg
ICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90U2xvd0Nhc2UoRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICB2b2lkIHB1dFNsb3dDYXNlKEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CgogICAgICAgIHVuc2ln
bmVkIGdldE5ld1ZlY3Rvckxlbmd0aCh1bnNpZ25lZCBkZXNpcmVkTGVuZ3RoKTsKICAgICAgICBi
b29sIGluY3JlYXNlVmVjdG9yTGVuZ3RoKHVuc2lnbmVkIG5ld0xlbmd0aCk7CiAgICAgICAgYm9v
bCBpbmNyZWFzZVZlY3RvclByZWZpeExlbmd0aCh1bnNpZ25lZCBuZXdMZW5ndGgpOwoKICAgICAg
ICB1bnNpZ25lZCBjb21wYWN0Rm9yU29ydGluZygpOwoKICAgICAgICBlbnVtIENvbnNpc3RlbmN5
Q2hlY2tUeXBlIHsgTm9ybWFsQ29uc2lzdGVuY3lDaGVjaywgRGVzdHJ1Y3RvckNvbnNpc3RlbmN5
Q2hlY2ssIFNvcnRDb25zaXN0ZW5jeUNoZWNrIH07CiAgICAgICAgdm9pZCBjaGVja0NvbnNpc3Rl
bmN5KENvbnNpc3RlbmN5Q2hlY2tUeXBlID0gTm9ybWFsQ29uc2lzdGVuY3lDaGVjayk7CgogICAg
ICAgIHVuc2lnbmVkIG1fdmVjdG9yTGVuZ3RoOwogICAgICAgIGludCBtX2luZGV4QmlhczsKICAg
ICAgICBBcnJheVN0b3JhZ2UgKm1fc3RvcmFnZTsKICAgIH07CgogICAgSlNBcnJheSogYXNBcnJh
eShKU1ZhbHVlKTsKCiAgICBpbmxpbmUgSlNBcnJheSogYXNBcnJheShKU0NlbGwqIGNlbGwpCiAg
ICB7CiAgICAgICAgZG8gaWYgKCEoY2VsbC0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykpKSB7
IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaCIsIDIwMiwgX19QUkVUVFlfRlVOQ1RJT05fXywgImNlbGwtPmlu
aGVyaXRzKCZKU0FycmF5OjpzX2luZm8pIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNBcnJh
eSo+KGNlbGwpOwogICAgfQoKICAgIGlubGluZSBKU0FycmF5KiBhc0FycmF5KEpTVmFsdWUgdmFs
dWUpCiAgICB7CiAgICAgICAgcmV0dXJuIGFzQXJyYXkodmFsdWUuYXNDZWxsKCkpOwogICAgfQoK
ICAgIGlubGluZSBib29sIGlzSlNBcnJheShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTQ2Vs
bCogY2VsbCkgeyByZXR1cm4gY2VsbC0+dnB0cigpID09IGdsb2JhbERhdGEtPmpzQXJyYXlWUHRy
OyB9CiAgICBpbmxpbmUgYm9vbCBpc0pTQXJyYXkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KGdsb2JhbERhdGEsIHYu
YXNDZWxsKCkpOyB9CgogICAgaW5saW5lIHZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJlbkRpcmVj
dChTbG90VmlzaXRvciYgdmlzaXRvcikKICAgIHsKICAgICAgICBKU09iamVjdDo6dmlzaXRDaGls
ZHJlbkRpcmVjdCh2aXNpdG9yKTsKCiAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9z
dG9yYWdlOwoKICAgICAgICB1bnNpZ25lZCB1c2VkVmVjdG9yTGVuZ3RoID0gc3RkOjptaW4oc3Rv
cmFnZS0+bV9sZW5ndGgsIG1fdmVjdG9yTGVuZ3RoKTsKICAgICAgICB2aXNpdG9yLmFwcGVuZFZh
bHVlcyhzdG9yYWdlLT5tX3ZlY3RvciwgdXNlZFZlY3Rvckxlbmd0aCk7CgogICAgICAgIGlmIChT
cGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBzdG9yYWdlLT5tX3NwYXJzZVZhbHVlTWFwKSB7CiAg
ICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7
CiAgICAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAt
PmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZpdC0+c2Vjb25kKTsKICAgICAgICB9CiAgICB9CgoKCiAgICBpbmxpbmUgdW5zaWduZWQgSWRl
bnRpZmllcjo6dG9BcnJheUluZGV4KGJvb2wmIG9rKSBjb25zdAogICAgewogICAgICAgIHVuc2ln
bmVkIGkgPSB0b1VJbnQzMihvayk7CiAgICAgICAgaWYgKG9rICYmIGkgPj0gMHhGRkZGRkZGRlUp
CiAgICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgcmV0dXJuIGk7CiAgICB9Cgp9CiMgMjYg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgi
IDIKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJs
ZU9iamVjdC5oIiAxCiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFyaWFibGVPYmplY3QuaCIKI2RlZmluZSBKU1ZhcmlhYmxlT2JqZWN0X2ggCgoKCiMgMSAi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCIgMQoj
IDMwICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5o
IgojZGVmaW5lIFN5bWJvbFRhYmxlX2ggCgoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9BbHdheXNJbmxpbmUuaCIgMQojIDM1ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCiAgICBz
dGF0aWMgaW5saW5lIGludCBtaXNzaW5nU3ltYm9sTWFya2VyKCkgeyByZXR1cm4gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ+OjptYXgoKTsgfQoKCgoKCiAgICBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRy
eSB7CiAgICAgICAgU3ltYm9sVGFibGVFbnRyeSgpCiAgICAgICAgICAgIDogbV9iaXRzKDApCiAg
ICAgICAgewogICAgICAgIH0KCiAgICAgICAgU3ltYm9sVGFibGVFbnRyeShpbnQgaW5kZXgpCiAg
ICAgICAgewogICAgICAgICAgICBkbyBpZiAoIShpc1ZhbGlkSW5kZXgoaW5kZXgpKSkgeyBXVEZS
ZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5oIiwgNTIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpc1ZhbGlkSW5k
ZXgoaW5kZXgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJf
dCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdo
aWxlICgwKTsKICAgICAgICAgICAgcGFjayhpbmRleCwgZmFsc2UsIGZhbHNlKTsKICAgICAgICB9
CgogICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4LCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQogICAgICAgIHsKICAgICAgICAgICAgZG8gaWYgKCEoaXNWYWxpZEluZGV4KGluZGV4KSkpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sVGFibGUuaCIsIDU4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNWYWxp
ZEluZGV4KGluZGV4KSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50
cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsg
fSB3aGlsZSAoMCk7CiAgICAgICAgICAgIHBhY2soaW5kZXgsIGF0dHJpYnV0ZXMgJiBSZWFkT25s
eSwgYXR0cmlidXRlcyAmIERvbnRFbnVtKTsKICAgICAgICB9CgogICAgICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAhbV9iaXRzOwogICAgICAgIH0K
CiAgICAgICAgaW50IGdldEluZGV4KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHJldHVy
biBtX2JpdHMgPj4gRmxhZ0JpdHM7CiAgICAgICAgfQoKICAgICAgICB1bnNpZ25lZCBnZXRBdHRy
aWJ1dGVzKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMg
PSAwOwogICAgICAgICAgICBpZiAobV9iaXRzICYgUmVhZE9ubHlGbGFnKQogICAgICAgICAgICAg
ICAgYXR0cmlidXRlcyB8PSBSZWFkT25seTsKICAgICAgICAgICAgaWYgKG1fYml0cyAmIERvbnRF
bnVtRmxhZykKICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gRG9udEVudW07CiAgICAgICAg
ICAgIHJldHVybiBhdHRyaWJ1dGVzOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBzZXRBdHRyaWJ1
dGVzKHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiAgICAgICAgewogICAgICAgICAgICBwYWNrKGdldElu
ZGV4KCksIGF0dHJpYnV0ZXMgJiBSZWFkT25seSwgYXR0cmlidXRlcyAmIERvbnRFbnVtKTsKICAg
ICAgICB9CgogICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0CiAgICAgICAgewogICAgICAg
ICAgICByZXR1cm4gbV9iaXRzICYgUmVhZE9ubHlGbGFnOwogICAgICAgIH0KCiAgICBwcml2YXRl
OgogICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBSZWFkT25seUZsYWcgPSAweDE7CiAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRFbnVtRmxhZyA9IDB4MjsKICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgTm90TnVsbEZsYWcgPSAweDQ7CiAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIEZsYWdCaXRzID0gMzsKCiAgICAgICAgdm9pZCBwYWNrKGludCBpbmRleCwgYm9v
bCByZWFkT25seSwgYm9vbCBkb250RW51bSkKICAgICAgICB7CiAgICAgICAgICAgIG1fYml0cyA9
IChpbmRleCA8PCBGbGFnQml0cykgfCBOb3ROdWxsRmxhZzsKICAgICAgICAgICAgaWYgKHJlYWRP
bmx5KQogICAgICAgICAgICAgICAgbV9iaXRzIHw9IFJlYWRPbmx5RmxhZzsKICAgICAgICAgICAg
aWYgKGRvbnRFbnVtKQogICAgICAgICAgICAgICAgbV9iaXRzIHw9IERvbnRFbnVtRmxhZzsKICAg
ICAgICB9CgogICAgICAgIGJvb2wgaXNWYWxpZEluZGV4KGludCBpbmRleCkKICAgICAgICB7CiAg
ICAgICAgICAgIHJldHVybiAoKGluZGV4IDw8IEZsYWdCaXRzKSA+PiBGbGFnQml0cykgPT0gaW5k
ZXg7CiAgICAgICAgfQoKICAgICAgICBpbnQgbV9iaXRzOwogICAgfTsKCiAgICBzdHJ1Y3QgU3lt
Ym9sVGFibGVJbmRleEhhc2hUcmFpdHMgewogICAgICAgIHR5cGVkZWYgU3ltYm9sVGFibGVFbnRy
eSBUcmFpdFR5cGU7CiAgICAgICAgc3RhdGljIFN5bWJvbFRhYmxlRW50cnkgZW1wdHlWYWx1ZSgp
IHsgcmV0dXJuIFN5bWJvbFRhYmxlRW50cnkoKTsgfQogICAgICAgIHN0YXRpYyBjb25zdCBib29s
IGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwogICAgICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSBmYWxzZTsKICAgIH07CgogICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxT
dHJpbmdJbXBsPiwgU3ltYm9sVGFibGVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFp
dHM8UmVmUHRyPFN0cmluZ0ltcGw+ID4sIFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzPiBTeW1i
b2xUYWJsZTsKCiAgICBjbGFzcyBTaGFyZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBTeW1ib2xUYWJs
ZSwgcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkU3ltYm9sVGFibGU+IHsKICAgICAgICBwdWJsaWM6
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCog
b3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6
OkFsbG9jVHlwZUNsYXNzTmV3KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9p
ZCogcCkgeyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRl
cm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNp
emUpOyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVy
bmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBk
ZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwg
OjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgOjpXVEY6OmZhc3RGcmVl
KHApOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IFRoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFm
dGVyVGhpc01hY3JvOwogICAgcHVibGljOgogICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJl
ZFN5bWJvbFRhYmxlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkU3ltYm9s
VGFibGUpOyB9CiAgICBwcml2YXRlOgogICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKCkgeyB9CiAg
ICB9OwoKfQojIDM1ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
cmlhYmxlT2JqZWN0LmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1VudXNlZFBhcmFtLmgiIDEKIyAzNiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oIiAyCgoKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNz
IFJlZ2lzdGVyOwoKICAgIGNsYXNzIEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKCiAgICBwdWJsaWM6CiAgICAgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CgogICAgICAgIFN5bWJvbFRhYmxlJiBzeW1i
b2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N5bWJvbFRhYmxlOyB9CgogICAgICAgIHZpcnR1
YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykgPSAwOwoKICAgICAgICB2aXJ0dWFsIGJvb2wg
ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgIHZp
cnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
CiAgICAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVPYmplY3QoKSBjb25zdDsKICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBj
b25zdCA9IDA7CgogICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgcmVnaXN0ZXJBdChpbnQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJzW2luZGV4XTsgfQoKICAgICAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4qIGNvbnN0ICogYWRkcmVzc09mUmVnaXN0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcmVnaXN0ZXJzOyB9CiAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlJlZ2lz
dGVycygpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJl
dF9jYXN0PEpTVmFyaWFibGVPYmplY3QqPigweDQwMDApLT5tX3JlZ2lzdGVycykpIC0gMHg0MDAw
KTsgfQoKICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICB9CgogICAgcHJvdGVjdGVkOgogICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMgfCBKU05vbkZpbmFsT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKCiAgICAgICAg
SlNWYXJpYWJsZU9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIFJlZ2lzdGVyKiByZWdpc3RlcnMpCiAg
ICAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAg
ICAgICAgICwgbV9zeW1ib2xUYWJsZShzeW1ib2xUYWJsZSkKICAgICAgICAgICAgLCBtX3JlZ2lz
dGVycyhyZWludGVycHJldF9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHJlZ2lzdGVycykp
CiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgewogICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgZG8gaWYgKCEobV9zeW1ib2xUYWJsZSkpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oIiwgODIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJt
X3N5bWJvbFRhYmxlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsKICAgICAgICAgICAgdHlwZWRlZiBpbnQgZHVtbXlSZWdpc3Rlcl9zaG91bGRf
YmVfc2FtZV9zaXplX2FzX1dyaXRlQmFycmllciBbKHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93
bj4pID09IHNpemVvZihSZWdpc3RlcikpID8gMSA6IC0xXTsKICAgICAgICB9CgogICAgICAgIFBh
c3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBjb3B5UmVnaXN0ZXJBcnJheShK
U0dsb2JhbERhdGEmLCBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHNyYywgc2l6ZV90IGNvdW50LCBz
aXplX3QgY2FsbGZyYW1lU3RhcnRzKTsKICAgICAgICB2b2lkIHNldFJlZ2lzdGVycyhXcml0ZUJh
cnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxV
bmtub3duPiA+IHJlZ2lzdGVyQXJyYXkpOwoKICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICBib29sIHN5bWJvbFRhYmxl
R2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICBib29s
IHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmLCBib29sJiBz
bG90SXNXcml0ZWFibGUpOwogICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoSlNHbG9iYWxEYXRh
JiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUpOwogICAgICAgIGJvb2wgc3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CgogICAgICAgIFN5bWJvbFRhYmxlKiBtX3N5bWJvbFRh
YmxlOwogICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogbV9yZWdpc3RlcnM7CiAgICAgICAg
T3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9yZWdpc3RlckFycmF5OwogICAg
fTsKCiAgICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgIHsKICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJv
cGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgaWYgKCFlbnRyeS5pc051bGwoKSkgewogICAgICAg
ICAgICBzbG90LnNldFZhbHVlKHJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCkpOwog
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgfQoKICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBib29sJiBz
bG90SXNXcml0ZWFibGUpCiAgICB7CiAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5
bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgICAgIGlmICgh
ZW50cnkuaXNOdWxsKCkpIHsKICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShyZWdpc3RlckF0KGVu
dHJ5LmdldEluZGV4KCkpLmdldCgpKTsKICAgICAgICAgICAgc2xvdElzV3JpdGVhYmxlID0gIWVu
dHJ5LmlzUmVhZE9ubHkoKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAg
ICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0
OjpzeW1ib2xUYWJsZVB1dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKICAgIHsKICAgICAgICBkbyBpZiAoISgh
SGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlz
KSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oIiwgMTIzLCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAiIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6Omhl
YXAodGhpcykiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90
KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOwoKICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5p
bmxpbmVHZXQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgaWYgKGVudHJ5LmlzTnVsbCgp
KQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYgKGVudHJ5LmlzUmVhZE9ubHko
KSkKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgcmVnaXN0ZXJBdChlbnRyeS5nZXRJ
bmRleCgpKS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOwogICAgICAgIHJldHVybiB0cnVl
OwogICAgfQoKICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlUHV0
V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiAgICB7
CiAgICAgICAgZG8gaWYgKCEoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUp
ID09IEhlYXA6OmhlYXAodGhpcykpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaCIsIDEz
NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFw
KHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7
ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgU3ltYm9sVGFibGU6Oml0ZXJhdG9y
IGl0ZXIgPSBzeW1ib2xUYWJsZSgpLmZpbmQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAg
aWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS5lbmQoKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+c2Vjb25kOwogICAgICAg
IGRvIGlmICghKCFlbnRyeS5pc051bGwoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgi
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5o
IiwgMTQyLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIWVudHJ5LmlzTnVsbCgpIik7IGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBlbnRy
eS5zZXRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgICAgIHJlZ2lzdGVyQXQoZW50cnkuZ2V0
SW5kZXgoKSkuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgIH0KCiAgICBpbmxpbmUgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3du
PiA+IEpTVmFyaWFibGVPYmplY3Q6OmNvcHlSZWdpc3RlckFycmF5KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzcmMsIHNpemVfdCBjb3VudCwgc2l6ZV90
IGNhbGxmcmFtZVN0YXJ0cykKICAgIHsKICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8
VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVy
PFVua25vd24+W2NvdW50XSk7CiAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsZnJh
bWVTdGFydHM7IGkrKykKICAgICAgICAgICAgcmVnaXN0ZXJBcnJheVtpXS5zZXQoZ2xvYmFsRGF0
YSwgdGhpcywgc3JjW2ldLmdldCgpKTsKICAgICAgICBmb3IgKHNpemVfdCBpID0gY2FsbGZyYW1l
U3RhcnRzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOyBpIDwgY291bnQ7IGkr
KykKICAgICAgICAgICAgcmVnaXN0ZXJBcnJheVtpXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3Jj
W2ldLmdldCgpKTsKCiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyQXJyYXkucmVsZWFzZSgpOwogICAg
fQoKICAgIGlubGluZSB2b2lkIEpTVmFyaWFibGVPYmplY3Q6OnNldFJlZ2lzdGVycyhXcml0ZUJh
cnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxV
bmtub3duPiA+IHJlZ2lzdGVyQXJyYXkpCiAgICB7CiAgICAgICAgZG8gaWYgKCEocmVnaXN0ZXJB
cnJheSAhPSBtX3JlZ2lzdGVyQXJyYXkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaCIs
IDE2MSwgX19QUkVUVFlfRlVOQ1RJT05fXywgInJlZ2lzdGVyQXJyYXkgIT0gbV9yZWdpc3RlckFy
cmF5Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICBtX3JlZ2lzdGVyQXJyYXkgPSByZWdpc3RlckFycmF5OwogICAgICAgIG1fcmVn
aXN0ZXJzID0gcmVnaXN0ZXJzOwogICAgfQoKfQojIDI4ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIiAxCiMgMjcg
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmSW50
ZXJuYWwuaCIKI2RlZmluZSBKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbF9oIAoKIyAxICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCIgMQojIDMwICIu
Li8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZkludGVy
bmFsLmgiIDIKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIEpTT2JqZWN0OwoKfQoKdHlwZWRlZiB2
b2lkICgqSlNXZWFrTWFwRGVzdHJveWVkQ2FsbGJhY2spKHN0cnVjdCBPcGFxdWVKU1dlYWtPYmpl
Y3RNYXAqLCB2b2lkKik7Cgp0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPHZvaWQqLCBKU0M6OkpTT2Jq
ZWN0PiBXZWFrTWFwVHlwZTsKCnN0cnVjdCBPcGFxdWVKU1dlYWtPYmplY3RNYXAgOiBwdWJsaWMg
UmVmQ291bnRlZDxPcGFxdWVKU1dlYWtPYmplY3RNYXA+IHsKcHVibGljOgogICAgc3RhdGljIFBh
c3NSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBjcmVhdGUodm9pZCogZGF0YSwgSlNXZWFr
TWFwRGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2spCiAgICB7CiAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBPcGFxdWVKU1dlYWtPYmplY3RNYXAoZGF0YSwgY2FsbGJhY2spKTsKICAgIH0KCiAg
ICBXZWFrTWFwVHlwZSYgbWFwKCkgeyByZXR1cm4gbV9tYXA7IH0KCiAgICB+T3BhcXVlSlNXZWFr
T2JqZWN0TWFwKCkKICAgIHsKICAgICAgICBtX2NhbGxiYWNrKHRoaXMsIG1fZGF0YSk7CiAgICB9
Cgpwcml2YXRlOgogICAgT3BhcXVlSlNXZWFrT2JqZWN0TWFwKHZvaWQqIGRhdGEsIEpTV2Vha01h
cERlc3Ryb3llZENhbGxiYWNrIGNhbGxiYWNrKQogICAgICAgIDogbV9kYXRhKGRhdGEpCiAgICAg
ICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgewogICAgfQogICAgV2Vha01hcFR5cGUgbV9t
YXA7CiAgICB2b2lkKiBtX2RhdGE7CiAgICBKU1dlYWtNYXBEZXN0cm95ZWRDYWxsYmFjayBtX2Nh
bGxiYWNrOwp9OwojIDI5ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgiCiNkZWZpbmUgTnVtYmVyUHJvdG90eXBl
X2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9i
amVjdC5oIiAxCiMgMjIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlck9iamVjdC5oIgojZGVmaW5lIE51bWJlck9iamVjdF9oIAoKIyAxICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaCIgMQojIDIzICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaCIKI2Rl
ZmluZSBKU1dyYXBwZXJPYmplY3RfaCAKCgoKbmFtZXNwYWNlIEpTQyB7CgoKCiAgICBjbGFzcyBK
U1dyYXBwZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICBwdWJsaWM6CiAg
ICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CgogICAgICAgIEpTVmFsdWUgaW50
ZXJuYWxWYWx1ZSgpIGNvbnN0OwogICAgICAgIHZvaWQgc2V0SW50ZXJuYWxWYWx1ZShKU0dsb2Jh
bERhdGEmLCBKU1ZhbHVlKTsKCiAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgfQoKICAgIHBy
b3RlY3RlZDoKICAgICAgICBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKik7CiAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTTm9uRmluYWxPYmplY3Q6OlN0cnVjdHVyZUZs
YWdzOwoKICAgIHByaXZhdGU6CiAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImKTsKCiAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1faW50ZXJuYWxWYWx1
ZTsKICAgIH07CgogICAgaW5saW5lIEpTV3JhcHBlck9iamVjdDo6SlNXcmFwcGVyT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgOiBK
U05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgIHsKICAgIH0KCiAgICBp
bmxpbmUgSlNWYWx1ZSBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSBjb25zdAogICAg
ewogICAgICAgIHJldHVybiBtX2ludGVybmFsVmFsdWUuZ2V0KCk7CiAgICB9CgogICAgaW5saW5l
IHZvaWQgSlNXcmFwcGVyT2JqZWN0OjpzZXRJbnRlcm5hbFZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSB2YWx1ZSkKICAgIHsKICAgICAgICBkbyBpZiAoISh2YWx1ZSkpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgiLCA2NSwgX19QUkVUVFlfRlVOQ1RJT05fXywgInZh
bHVlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICBkbyBpZiAoISghdmFsdWUuaXNPYmplY3QoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFw
cGVyT2JqZWN0LmgiLCA2NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiF2YWx1ZS5pc09iamVjdCgp
Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRi
ZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsK
ICAgICAgICBtX2ludGVybmFsVmFsdWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKICAg
IH0KCn0KIyAyNSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
T2JqZWN0LmgiIDIKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIE51bWJlck9iamVjdCA6IHB1
YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgcHJvdGVjdGVkOgogICAgICAgIE51bWJlck9iamVj
dChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYpOwoKICAgIHB1YmxpYzoKICAgICAgICB0eXBlZGVmIEpTV3JhcHBlck9i
amVjdCBCYXNlOwoKICAgICAgICBzdGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICB7CiAgICAgICAg
ICAgIE51bWJlck9iamVjdCogbnVtYmVyID0gbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyT2JqZWN0
PihnbG9iYWxEYXRhLmhlYXApKSBOdW1iZXJPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
ICAgICAgICAgICAgbnVtYmVyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAg
ICAgcmV0dXJuIG51bWJlcjsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwoKICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICB9CgogICAgcHJpdmF0ZToK
ICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIoKTsKICAgIH07CgogICAgTnVtYmVy
T2JqZWN0KiBjb25zdHJ1Y3ROdW1iZXIoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKCn0KIyAyNSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmgiIDIKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIE51bWJlclByb3Rv
dHlwZSA6IHB1YmxpYyBOdW1iZXJPYmplY3QgewogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYg
TnVtYmVyT2JqZWN0IEJhc2U7CgogICAgICAgIHN0YXRpYyBOdW1iZXJQcm90b3R5cGUqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPE51bWJlclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE51bWJlclByb3RvdHlwZShleGVj
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKCiAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgfQoKICAg
IHByb3RlY3RlZDoKICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0Kik7CiAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgTnVtYmVyT2JqZWN0OjpTdHJ1Y3R1cmVG
bGFnczsKCiAgICBwcml2YXRlOgogICAgICAgIE51bWJlclByb3RvdHlwZShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwogICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgfTsKCn0KIyAz
MCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5oIiAxCiMgMjIgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5oIgojZGVmaW5lIFN0cmluZ1Byb3RvdHlwZV9oIAoKIyAxICIuLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCIgMQojIDIy
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCIK
I2RlZmluZSBTdHJpbmdPYmplY3RfaCAKCgoKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIFN0
cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgcHVibGljOgogICAgICAg
IHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7CgogICAgICAgIHN0YXRpYyBTdHJpbmdPYmpl
Y3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
IHsKICAgICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGpzRW1wdHlTdHJpbmcoZXhlYyk7CiAg
ICAgICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5n
T2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
c3RydWN0dXJlKTsKICAgICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIHN0cmluZyk7CiAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgICAgfQog
ICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHIpCiAgICAgICAgewogICAgICAgICAg
ICBKU1N0cmluZyogc3RyaW5nID0ganNTdHJpbmcoZXhlYywgc3RyKTsKICAgICAgICAgICAgU3Ry
aW5nT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVj
LT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOwog
ICAgICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
aW5nKTsKICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICAgICB9CiAgICAgICAgc3RhdGlj
IFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJp
bmcqKTsKCiAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKTsKCiAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgdmlydHVhbCB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwoKICAgICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKCiAgICAgICAgSlNTdHJpbmcqIGludGVybmFsVmFsdWUoKSBjb25z
dCB7IHJldHVybiBhc1N0cmluZyhKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7fQoK
ICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxE
YXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICB9CgogICAgcHJvdGVjdGVkOgogICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgSlNTdHJpbmcqKTsKICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNXcmFwcGVyT2JqZWN0OjpTdHJ1
Y3R1cmVGbGFnczsKICAgICAgICBTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
Kik7CiAgICB9OwoKICAgIFN0cmluZ09iamVjdCogYXNTdHJpbmdPYmplY3QoSlNWYWx1ZSk7Cgog
ICAgaW5saW5lIFN0cmluZ09iamVjdCogYXNTdHJpbmdPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKICAg
IHsKICAgICAgICBkbyBpZiAoIShhc09iamVjdCh2YWx1ZSktPmluaGVyaXRzKCZTdHJpbmdPYmpl
Y3Q6OnNfaW5mbykpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIiwgNzYsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJhc09iamVjdCh2YWx1ZSktPmluaGVyaXRzKCZTdHJpbmdPYmplY3Q6OnNfaW5m
bykiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdHJpbmdPYmplY3QqPihhc09iamVjdCh2YWx1
ZSkpOwogICAgfQoKfQojIDI1ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuaCIgMgoKbmFtZXNwYWNlIEpTQyB7CgogICAgY2xhc3MgT2JqZWN0
UHJvdG90eXBlOwoKICAgIGNsYXNzIFN0cmluZ1Byb3RvdHlwZSA6IHB1YmxpYyBTdHJpbmdPYmpl
Y3QgewogICAgcHJpdmF0ZToKICAgICAgICBTdHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU1N0cmluZyopOwoKICAgIHB1YmxpYzoKICAgICAg
ICB0eXBlZGVmIFN0cmluZ09iamVjdCBCYXNlOwoKICAgICAgICBzdGF0aWMgU3RyaW5nUHJvdG90
eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxTdHJpbmdQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdQcm90
b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGpzRW1wdHlTdHJpbmcoZXhlYykp
OwogICAgICAgIH0KCiAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwoKICAgICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICB7CiAg
ICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19p
bmZvKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwoK
ICAgIHByb3RlY3RlZDoKICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBTdHJpbmdPYmpl
Y3Q6OlN0cnVjdHVyZUZsYWdzOwoKICAgIH07Cgp9CiMgMzEgIi4uLy4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgiIDIKIyAxICIuLi8uLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIiAxCiMgMjcgIi4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgiCiNkZWZp
bmUgU3RydWN0dXJlQ2hhaW5faCAKIyAzOCAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaCIKbmFtZXNwYWNlIEpTQyB7CgogICAgY2xhc3MgU3Ry
dWN0dXJlOwoKICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKCiAgICBwdWJsaWM6CiAgICAgICAgdHlwZWRlZiBKU0NlbGwg
QmFzZTsKCiAgICAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpCiAgICAgICAgewogICAgICAgICAgICBTdHJ1
Y3R1cmVDaGFpbiogY2hhaW4gPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4oZ2xv
YmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1
Y3R1cmVDaGFpblN0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgIGNoYWluLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhLCBoZWFkKTsKICAgICAgICAgICAgcmV0dXJuIGNoYWluOwogICAgICAg
IH0KICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVj
dG9yLmdldCgpOyB9CiAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7Cgog
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwg
JnNfaW5mbyk7IH0KCiAgICAgICAgc3RhdGljIENsYXNzSW5mbyBzX2luZm87CgogICAgcHJvdGVj
dGVkOgogICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIGhlYWQpCiAgICAgICAgewogICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgc2l6ZV90IHNpemUgPSAwOwogICAgICAgICAg
ICBmb3IgKFN0cnVjdHVyZSogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5zdG9yZWRQcm90b3R5cGUoKS5pc051bGwoKSA/IDAgOiBhc09iamVjdChjdXJyZW50LT5z
dG9yZWRQcm90b3R5cGUoKSktPnN0cnVjdHVyZSgpKQogICAgICAgICAgICAgICAgKytzaXplOwoK
ICAgICAgICAgICAgbV92ZWN0b3IgPSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPltzaXplICsgMV0pOwoKICAgICAgICAgICAgc2l6ZV90IGkgPSAwOwogICAgICAgICAg
ICBmb3IgKFN0cnVjdHVyZSogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5zdG9yZWRQcm90b3R5cGUoKS5pc051bGwoKSA/IDAgOiBhc09iamVjdChjdXJyZW50LT5z
dG9yZWRQcm90b3R5cGUoKSktPnN0cnVjdHVyZSgpKQogICAgICAgICAgICAgICAgbV92ZWN0b3Jb
aSsrXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgY3VycmVudCk7CiAgICAgICAgfQoKICAgIHByaXZh
dGU6CiAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAg
ICAgICAgflN0cnVjdHVyZUNoYWluKCk7CiAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKICAgIH07Cgp9CiMgMzIgIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgiIDIKCgojIDEgIi4uLy4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgiIDEKIyAyNyAiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaCIKI2RlZmluZSBXVEZf
UmFuZG9tTnVtYmVyX2ggCgpuYW1lc3BhY2UgV1RGIHsKCgoKICAgIGRvdWJsZSByYW5kb21OdW1i
ZXIoKTsKCn0KCnVzaW5nIFdURjo6cmFuZG9tTnVtYmVyOwojIDM1ICIuLi8uLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIiAyCgpuYW1lc3BhY2UgSlND
IHsKCiAgICBjbGFzcyBBcnJheVByb3RvdHlwZTsKICAgIGNsYXNzIEJvb2xlYW5Qcm90b3R5cGU7
CiAgICBjbGFzcyBEYXRlUHJvdG90eXBlOwogICAgY2xhc3MgRGVidWdnZXI7CiAgICBjbGFzcyBF
cnJvckNvbnN0cnVjdG9yOwogICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICBjbGFzcyBH
bG9iYWxDb2RlQmxvY2s7CiAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAgY2xh
c3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwogICAgY2xh
c3MgUmVnRXhwUHJvdG90eXBlOwogICAgY2xhc3MgUmVnaXN0ZXJGaWxlOwoKICAgIHN0cnVjdCBB
Y3RpdmF0aW9uU3RhY2tOb2RlOwogICAgc3RydWN0IEhhc2hUYWJsZTsKCiAgICB0eXBlZGVmIFZl
Y3RvcjxFeGVjU3RhdGUqLCAxNj4gRXhlY1N0YXRlU3RhY2s7CgogICAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdCB7CiAgICBwcml2YXRlOgogICAgICAgIHR5
cGVkZWYgSGFzaFNldDxSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiA+IFdlYWtNYXBTZXQ7
CgogICAgICAgIGNsYXNzIFdlYWtNYXBzRmluYWxpemVyIDogcHVibGljIFdlYWtIYW5kbGVPd25l
ciB7CiAgICAgICAgcHVibGljOgogICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSGFu
ZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKICAgICAgICB9OwoKICAgICAgICBzdHJ1Y3Qg
SlNHbG9iYWxPYmplY3RSYXJlRGF0YSB7CiAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0UmFyZURh
dGEoKQogICAgICAgICAgICAgICAgOiBwcm9maWxlR3JvdXAoMCkKICAgICAgICAgICAgewogICAg
ICAgICAgICB9CgogICAgICAgICAgICBXZWFrTWFwU2V0IHdlYWtNYXBzOwogICAgICAgICAgICB1
bnNpZ25lZCBwcm9maWxlR3JvdXA7CiAgICAgICAgICAgIFdlYWs8SlNHbG9iYWxPYmplY3Q+IHdl
YWtNYXBzRmluYWxpemVyOwogICAgICAgIH07CgogICAgcHJvdGVjdGVkOgoKICAgICAgICBSZWZQ
dHI8SlNHbG9iYWxEYXRhPiBtX2dsb2JhbERhdGE7CgogICAgICAgIHNpemVfdCBtX3JlZ2lzdGVy
QXJyYXlTaXplOwogICAgICAgIFJlZ2lzdGVyIG1fZ2xvYmFsQ2FsbEZyYW1lW1JlZ2lzdGVyRmls
ZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZV07CgogICAgICAgIFdyaXRlQmFycmllcjxTY29wZUNoYWlu
Tm9kZT4gbV9nbG9iYWxTY29wZUNoYWluOwogICAgICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4g
bV9tZXRob2RDYWxsRHVtbXk7CgogICAgICAgIFdyaXRlQmFycmllcjxSZWdFeHBDb25zdHJ1Y3Rv
cj4gbV9yZWdFeHBDb25zdHJ1Y3RvcjsKICAgICAgICBXcml0ZUJhcnJpZXI8RXJyb3JDb25zdHJ1
Y3Rvcj4gbV9lcnJvckNvbnN0cnVjdG9yOwogICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yPiBtX2V2YWxFcnJvckNvbnN0cnVjdG9yOwogICAgICAgIFdyaXRlQmFycmll
cjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICAg
ICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9yZWZlcmVuY2VFcnJvckNv
bnN0cnVjdG9yOwogICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBt
X3N5bnRheEVycm9yQ29uc3RydWN0b3I7CiAgICAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I+IG1fdHlwZUVycm9yQ29uc3RydWN0b3I7CiAgICAgICAgV3JpdGVCYXJyaWVy
PE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsKCiAgICAgICAg
V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgICAgIFdyaXRlQmFy
cmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKICAgICAgICBXcml0ZUJhcnJpZXI8SlNG
dW5jdGlvbj4gbV9hcHBseUZ1bmN0aW9uOwoKICAgICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0UHJv
dG90eXBlPiBtX29iamVjdFByb3RvdHlwZTsKICAgICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Q
cm90b3R5cGU+IG1fZnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgICAgV3JpdGVCYXJyaWVyPEFycmF5
UHJvdG90eXBlPiBtX2FycmF5UHJvdG90eXBlOwogICAgICAgIFdyaXRlQmFycmllcjxCb29sZWFu
UHJvdG90eXBlPiBtX2Jvb2xlYW5Qcm90b3R5cGU7CiAgICAgICAgV3JpdGVCYXJyaWVyPFN0cmlu
Z1Byb3RvdHlwZT4gbV9zdHJpbmdQcm90b3R5cGU7CiAgICAgICAgV3JpdGVCYXJyaWVyPE51bWJl
clByb3RvdHlwZT4gbV9udW1iZXJQcm90b3R5cGU7CiAgICAgICAgV3JpdGVCYXJyaWVyPERhdGVQ
cm90b3R5cGU+IG1fZGF0ZVByb3RvdHlwZTsKICAgICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJv
dG90eXBlPiBtX3JlZ0V4cFByb3RvdHlwZTsKCiAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9hcmd1bWVudHNTdHJ1Y3R1cmU7CiAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9hcnJheVN0cnVjdHVyZTsKICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Jvb2xl
YW5PYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxs
YmFja0NvbnN0cnVjdG9yU3RydWN0dXJlOwogICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlOwogICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZGF0ZVN0cnVjdHVyZTsKICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2VtcHR5T2JqZWN0U3RydWN0dXJlOwogICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZTsKICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2Vycm9yU3RydWN0dXJlOwogICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
ZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9uYW1l
ZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgICAgIHNpemVfdCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsK
ICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bWJlck9iamVjdFN0cnVjdHVyZTsK
ICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVj
dHVyZTsKICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsK
ICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZTsK
ICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1
cmU7CgogICAgICAgIERlYnVnZ2VyKiBtX2RlYnVnZ2VyOwoKICAgICAgICBPd25QdHI8SlNHbG9i
YWxPYmplY3RSYXJlRGF0YT4gbV9yYXJlRGF0YTsKICAgICAgICBzdGF0aWMgV2Vha01hcHNGaW5h
bGl6ZXIqIHdlYWtNYXBzRmluYWxpemVyKCk7CgogICAgICAgIFdlYWtSYW5kb20gbV93ZWFrUmFu
ZG9tOwoKICAgICAgICBTeW1ib2xUYWJsZSBtX3N5bWJvbFRhYmxlOwoKICAgICAgICBib29sIG1f
ZXZhbEVuYWJsZWQ7CgogICAgICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lZWRlZCgpCiAgICAg
ICAgewogICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgICAgICAgICBtX3JhcmVE
YXRhID0gYWRvcHRQdHIobmV3IEpTR2xvYmFsT2JqZWN0UmFyZURhdGEpOwogICAgICAgIH0KCiAg
ICBwdWJsaWM6CiAgICAgICAgdHlwZWRlZiBKU1ZhcmlhYmxlT2JqZWN0IEJhc2U7CgogICAgICAg
IHN0YXRpYyBKU0dsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgewogICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAg
ICAgICAgIGdsb2JhbE9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKICAgICAgICB9CgogICAgICAg
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwoKICAgIHByb3RlY3RlZDoKICAgICAgICBl
eHBsaWNpdCBKU0dsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlLCAmbV9zeW1ib2xUYWJsZSwgMCkKICAgICAgICAgICAgLCBtX3JlZ2lzdGVyQXJy
YXlTaXplKDApCiAgICAgICAgICAgICwgbV9nbG9iYWxTY29wZUNoYWluKCkKICAgICAgICAgICAg
LCBtX3dlYWtSYW5kb20oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmRvbU51bWJlcigpICogKHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSArIDEuMCkpKQogICAgICAgICAgICAs
IG1fZXZhbEVuYWJsZWQodHJ1ZSkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIHRoaXNWYWx1
ZSkKICAgICAgICB7CiAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEp
OwogICAgICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHRo
aXMpOwogICAgICAgICAgICBwdXRUaGlzVG9Bbm9ueW1vdXNWYWx1ZSgwKTsKICAgICAgICAgICAg
aW5pdCh0aGlzVmFsdWUpOwogICAgICAgIH0KCiAgICBwdWJsaWM6CiAgICAgICAgdmlydHVhbCB+
SlNHbG9iYWxPYmplY3QoKTsKCiAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImKTsKCiAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgdmlydHVhbCBib29sIGhhc093blBy
b3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgIHZp
cnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgICAgIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwoKICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVy
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdl
dHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgIHZpcnR1YWwgdm9pZCBkZWZp
bmVTZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09i
amVjdCogc2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CgoKCiAgICAgICAgYm9vbCBz
eW1ib2xUYWJsZUhhc1Byb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CgoK
CgogICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCk7IH0KCiAgICAgICAgRXJyb3JDb25zdHJ1
Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rv
ci5nZXQoKTsgfQogICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQog
ICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgICAgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIHN5bnRheEVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX3N5bnRheEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICAgICBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKiB0eXBlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUVy
cm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBV
UklFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9VUklFcnJvckNvbnN0cnVjdG9y
LmdldCgpOyB9CgogICAgICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICAgICBKU0Z1
bmN0aW9uKiBhcHBseUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseUZ1bmN0aW9uLmdl
dCgpOyB9CgogICAgICAgIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCk7IH0KICAgICAgICBGdW5jdGlvblByb3Rv
dHlwZSogZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpOyB9CiAgICAgICAgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9hcnJheVByb3RvdHlwZS5nZXQoKTsgfQogICAgICAgIEJvb2xlYW5Qcm90
b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Jvb2xlYW5Qcm90b3R5
cGUuZ2V0KCk7IH0KICAgICAgICBTdHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nUHJvdG90eXBlLmdldCgpOyB9CiAgICAgICAgTnVtYmVyUHJv
dG90eXBlKiBudW1iZXJQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX251bWJlclByb3RvdHlw
ZS5nZXQoKTsgfQogICAgICAgIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX2RhdGVQcm90b3R5cGUuZ2V0KCk7IH0KICAgICAgICBSZWdFeHBQcm90b3R5cGUq
IHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgp
OyB9CgogICAgICAgIEpTT2JqZWN0KiBtZXRob2RDYWxsRHVtbXkoKSBjb25zdCB7IHJldHVybiBt
X21ldGhvZENhbGxEdW1teS5nZXQoKTsgfQoKICAgICAgICBTdHJ1Y3R1cmUqIGFyZ3VtZW50c1N0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgICAgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlT
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5PYmplY3RTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICBTdHJ1
Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxi
YWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNr
T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgICAgIFN0cnVjdHVyZSogZGF0ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0ZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgIFN0cnVjdHVyZSogZW1wdHlPYmpl
Y3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2VtcHR5T2JqZWN0U3RydWN0dXJlLmdldCgp
OyB9CiAgICAgICAgU3RydWN0dXJlKiBudWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAg
ICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgIFN0cnVjdHVy
ZSogbmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgIHNpemVfdCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgICAgIFN0cnVjdHVyZSog
bnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgU3Ry
dWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KCiAgICAgICAgdm9p
ZCBzZXRQcm9maWxlR3JvdXAodW5zaWduZWQgdmFsdWUpIHsgY3JlYXRlUmFyZURhdGFJZk5lZWRl
ZCgpOyBtX3JhcmVEYXRhLT5wcm9maWxlR3JvdXAgPSB2YWx1ZTsgfQogICAgICAgIHVuc2lnbmVk
IHByb2ZpbGVHcm91cCgpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgICBpZiAoIW1fcmFyZURh
dGEpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURh
dGEtPnByb2ZpbGVHcm91cDsKICAgICAgICB9CgogICAgICAgIERlYnVnZ2VyKiBkZWJ1Z2dlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KICAgICAgICB2b2lkIHNldERlYnVnZ2VyKERl
YnVnZ2VyKiBkZWJ1Z2dlcikgeyBtX2RlYnVnZ2VyID0gZGVidWdnZXI7IH0KCiAgICAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzUHJvZmlsaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSaWNoU291cmNlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KCiAgICAgICAgU2NvcGVDaGFpbk5vZGUqIGdsb2JhbFNjb3BlQ2hhaW4oKSB7IHJl
dHVybiBtX2dsb2JhbFNjb3BlQ2hhaW4uZ2V0KCk7IH0KCiAgICAgICAgdmlydHVhbCBib29sIGlz
R2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQoKICAgICAgICBFeGVjU3RhdGUq
IGdsb2JhbEV4ZWMoKTsKCiAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEludGVycnVwdFNjcmlw
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KCiAgICAgICAgdmlydHVhbCBib29sIGFsbG93c0Fj
Y2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cgog
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFtaWND
aGVja3MpIGNvbnN0OwoKICAgICAgICB2b2lkIHNldEV2YWxFbmFibGVkKGJvb2wgZW5hYmxlZCkg
eyBtX2V2YWxFbmFibGVkID0gZW5hYmxlZDsgfQogICAgICAgIGJvb2wgZXZhbEVuYWJsZWQoKSB7
IHJldHVybiBtX2V2YWxFbmFibGVkOyB9CgogICAgICAgIHZvaWQgcmVzaXplUmVnaXN0ZXJzKHNp
emVfdCBuZXdTaXplKTsKCiAgICAgICAgdm9pZCByZXNldFByb3RvdHlwZShKU0dsb2JhbERhdGEm
LCBKU1ZhbHVlIHByb3RvdHlwZSk7CgogICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSgp
IGNvbnN0IHsgcmV0dXJuICptX2dsb2JhbERhdGEuZ2V0KCk7IH0KCiAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgMCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksICZzX2luZm8pOwogICAgICAgIH0KCiAgICAgICAgdm9pZCByZWdpc3RlcldlYWtN
YXAoT3BhcXVlSlNXZWFrT2JqZWN0TWFwKiBtYXApCiAgICAgICAgewogICAgICAgICAgICBjcmVh
dGVSYXJlRGF0YUlmTmVlZGVkKCk7CiAgICAgICAgICAgIGlmICghbV9yYXJlRGF0YS0+d2Vha01h
cHNGaW5hbGl6ZXIpCiAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT53ZWFrTWFwc0ZpbmFsaXpl
ci5zZXQoZ2xvYmFsRGF0YSgpLCB0aGlzLCB3ZWFrTWFwc0ZpbmFsaXplcigpKTsKICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+d2Vha01hcHMuYWRkKG1hcCk7CiAgICAgICAgfQoKICAgICAgICB2b2lk
IGRlcmVnaXN0ZXJXZWFrTWFwKE9wYXF1ZUpTV2Vha09iamVjdE1hcCogbWFwKQogICAgICAgIHsK
ICAgICAgICAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT53
ZWFrTWFwcy5yZW1vdmUobWFwKTsKICAgICAgICB9CgogICAgICAgIGRvdWJsZSB3ZWFrUmFuZG9t
TnVtYmVyKCkgeyByZXR1cm4gbV93ZWFrUmFuZG9tLmdldCgpOyB9CiAgICBwcm90ZWN0ZWQ6Cgog
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CgogICAgICAg
IHN0cnVjdCBHbG9iYWxQcm9wZXJ0eUluZm8gewogICAgICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8oY29uc3QgSWRlbnRpZmllciYgaSwgSlNWYWx1ZSB2LCB1bnNpZ25lZCBhKQogICAgICAgICAg
ICAgICAgOiBpZGVudGlmaWVyKGkpCiAgICAgICAgICAgICAgICAsIHZhbHVlKHYpCiAgICAgICAg
ICAgICAgICAsIGF0dHJpYnV0ZXMoYSkKICAgICAgICAgICAgewogICAgICAgICAgICB9CgogICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyIGlkZW50aWZpZXI7CiAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWU7CiAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgfTsKICAgICAg
ICB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsK
CiAgICBwcml2YXRlOgoKICAgICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAg
ICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CgogICAgICAgIHZvaWQgc2V0UmVn
aXN0ZXJzKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8
V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50KTsKICAg
IH07CgogICAgSlNHbG9iYWxPYmplY3QqIGFzR2xvYmFsT2JqZWN0KEpTVmFsdWUpOwoKICAgIGlu
bGluZSBKU0dsb2JhbE9iamVjdCogYXNHbG9iYWxPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKICAgIHsK
ICAgICAgICBkbyBpZiAoIShhc09iamVjdCh2YWx1ZSktPmlzR2xvYmFsT2JqZWN0KCkpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgiLCAzMjQsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJhc09i
amVjdCh2YWx1ZSktPmlzR2xvYmFsT2JqZWN0KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2Uo
KTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9
IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxK
U0dsb2JhbE9iamVjdCo+KGFzT2JqZWN0KHZhbHVlKSk7CiAgICB9CgogICAgaW5saW5lIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnNldFJlZ2lzdGVycyhXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lz
dGVycywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJy
YXksIHNpemVfdCBjb3VudCkKICAgIHsKICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0OjpzZXRSZWdp
c3RlcnMocmVnaXN0ZXJzLCByZWdpc3RlckFycmF5KTsKICAgICAgICBtX3JlZ2lzdGVyQXJyYXlT
aXplID0gY291bnQ7CiAgICB9CgogICAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc093
blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCiAgICB7CiAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgaWYgKEpT
VmFyaWFibGVPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICBib29sIHNsb3RJc1dyaXRlYWJs
ZTsKICAgICAgICByZXR1cm4gc3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90LCBzbG90
SXNXcml0ZWFibGUpOwogICAgfQoKICAgIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1i
b2xUYWJsZUhhc1Byb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAgIHsK
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQo
cHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgcmV0dXJuICFlbnRyeS5pc051bGwoKTsKICAg
IH0KCiAgICBpbmxpbmUgSlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZvckxvb2t1cChFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0CiAgICB7CiAgICAgICAgaWYgKHR5cGVJbmZvKCkudHlwZSgpID09
IE9iamVjdFR5cGUpCiAgICAgICAgICAgIHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsKCiAgICAg
ICAgZG8gaWYgKCEodHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlwZSkpIHsgV1RGUmVwb3J0
QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCIsIDM1NCwgX19QUkVUVFlfRlVOQ1RJT05fXywgInR5cGVJbmZvKCku
dHlwZSgpID09IFN0cmluZ1R5cGUiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpOwogICAgfQoKICAgIGlubGluZSBTdHJ1Y3R1cmVDaGFp
biogU3RydWN0dXJlOjpwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICB7
CgogICAgICAgIGlmICghaXNWYWxpZChleGVjLCBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgp
KSkgewogICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHByb3RvdHlwZUZvckxvb2t1cChl
eGVjKTsKICAgICAgICAgICAgbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
cHJvdG90eXBlLmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0KHByb3RvdHlwZSktPnN0cnVjdHVyZSgp
KSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgp
OwogICAgfQoKICAgIGlubGluZSBib29sIFN0cnVjdHVyZTo6aXNWYWxpZChFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQcm90b3R5cGVDaGFpbikgY29uc3QKICAgIHsKICAg
ICAgICBpZiAoIWNhY2hlZFByb3RvdHlwZUNoYWluKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7
CgogICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gcHJvdG90eXBlRm9yTG9va3VwKGV4ZWMpOwog
ICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBjYWNoZWRTdHJ1Y3R1cmUgPSBjYWNoZWRQ
cm90b3R5cGVDaGFpbi0+aGVhZCgpOwogICAgICAgIHdoaWxlKCpjYWNoZWRTdHJ1Y3R1cmUgJiYg
IXByb3RvdHlwZS5pc051bGwoKSkgewogICAgICAgICAgICBpZiAoYXNPYmplY3QocHJvdG90eXBl
KS0+c3RydWN0dXJlKCkgIT0gY2FjaGVkU3RydWN0dXJlLT5nZXQoKSkKICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgKytjYWNoZWRTdHJ1Y3R1cmU7CiAgICAgICAgICAg
IHByb3RvdHlwZSA9IGFzT2JqZWN0KHByb3RvdHlwZSktPnByb3RvdHlwZSgpOwogICAgICAgIH0K
ICAgICAgICByZXR1cm4gcHJvdG90eXBlLmlzTnVsbCgpICYmICEqY2FjaGVkU3RydWN0dXJlOwog
ICAgfQoKICAgIGlubGluZSBKU0dsb2JhbE9iamVjdCogRXhlY1N0YXRlOjpkeW5hbWljR2xvYmFs
T2JqZWN0KCkKICAgIHsKICAgICAgICBpZiAodGhpcyA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKSkKICAgICAgICAgICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3QoKTsK
CgoKICAgICAgICBkbyBpZiAoIShnbG9iYWxEYXRhKCkuZHluYW1pY0dsb2JhbE9iamVjdCkpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCIsIDM5MSwgX19QUkVUVFlfRlVOQ1RJT05fXywgImds
b2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNl
KCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YSgp
LmR5bmFtaWNHbG9iYWxPYmplY3Q7CiAgICB9CgogICAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGdsb2Jh
bE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICB9CgogICAgaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICB7CiAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSk7CiAgICB9CgogICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgewogICAgICAg
IHJldHVybiBKU0FycmF5OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlKCkpOwogICAgfQoKICAgIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RF
bXB0eUFycmF5KEV4ZWNTdGF0ZSogZXhlYykKICAgIHsKICAgICAgICByZXR1cm4gY29uc3RydWN0
RW1wdHlBcnJheShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgfQoKICAg
IGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCkKICAgIHsK
ICAgICAgICByZXR1cm4gSlNBcnJheTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpLCBpbml0aWFsTGVuZ3RoLCBDcmVhdGVJbml0aWFsaXpl
ZCk7CiAgICB9CgogICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKQogICAgewogICAgICAgIHJldHVybiBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgaW5p
dGlhbExlbmd0aCk7CiAgICB9CgogICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzaW5n
bGVJdGVtVmFsdWUpCiAgICB7CiAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgdmFsdWVzOwog
ICAgICAgIHZhbHVlcy5hcHBlbmQoc2luZ2xlSXRlbVZhbHVlKTsKICAgICAgICByZXR1cm4gSlNB
cnJheTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZSgpLCB2YWx1ZXMpOwogICAgfQoKICAgIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJh
eShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2luZ2xlSXRlbVZhbHVlKQogICAgewogICAgICAg
IHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IHNpbmdsZUl0ZW1WYWx1ZSk7CiAgICB9CgogICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFy
cmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
QXJnTGlzdCYgdmFsdWVzKQogICAgewogICAgICAgIHJldHVybiBKU0FycmF5OjpjcmVhdGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlKCksIHZhbHVlcyk7
CiAgICB9CgogICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYgdmFsdWVzKQogICAgewogICAgICAgIHJldHVybiBjb25zdHJ1Y3RB
cnJheShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHZhbHVlcyk7CiAgICB9Cgog
ICAgY2xhc3MgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIHsKICAgICAgICBwcml2YXRlOiBEeW5h
bWljR2xvYmFsT2JqZWN0U2NvcGUoY29uc3QgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlJik7IER5
bmFtaWNHbG9iYWxPYmplY3RTY29wZSYgb3BlcmF0b3I9KGNvbnN0IER5bmFtaWNHbG9iYWxPYmpl
Y3RTY29wZSYpOwogICAgcHVibGljOgogICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZShK
U0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCopOwoKICAgICAgICB+RHluYW1pY0dsb2JhbE9i
amVjdFNjb3BlKCkKICAgICAgICB7CiAgICAgICAgICAgIG1fZHluYW1pY0dsb2JhbE9iamVjdFNs
b3QgPSBtX3NhdmVkRHluYW1pY0dsb2JhbE9iamVjdDsKICAgICAgICB9CgogICAgcHJpdmF0ZToK
ICAgICAgICBKU0dsb2JhbE9iamVjdComIG1fZHluYW1pY0dsb2JhbE9iamVjdFNsb3Q7CiAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIG1fc2F2ZWREeW5hbWljR2xvYmFsT2JqZWN0OwogICAgfTsKCn0K
IyAzMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuaCIgMgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKICAgIGNsYXNzIERvY3VtZW50OwogICAgY2xh
c3MgRXZlbnQ7CiAgICBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiAgICBjbGFzcyBKU0xhenlFdmVu
dExpc3RlbmVyOwogICAgY2xhc3MgSlNFdmVudExpc3RlbmVyOwogICAgY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKCiAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0luZm8q
LCBKU0M6OldyaXRlQmFycmllcjxKU0M6OlN0cnVjdHVyZT4gPiBKU0RPTVN0cnVjdHVyZU1hcDsK
ICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBKU0M6OkNsYXNzSW5mbyosIEpTQzo6V3JpdGVCYXJy
aWVyPEpTQzo6SlNPYmplY3Q+ID4gSlNET01Db25zdHJ1Y3Rvck1hcDsKCiAgICBjbGFzcyBKU0RP
TUdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTR2xvYmFsT2JqZWN0IHsKICAgICAgICB0eXBl
ZGVmIEpTQzo6SlNHbG9iYWxPYmplY3QgQmFzZTsKICAgIHByb3RlY3RlZDoKICAgICAgICBzdHJ1
Y3QgSlNET01HbG9iYWxPYmplY3REYXRhOwoKICAgICAgICBKU0RPTUdsb2JhbE9iamVjdChKU0M6
OkpTR2xvYmFsRGF0YSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29y
bGQ+LCBKU0M6OkpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6OkpTT2JqZWN0KiB0aGlzVmFsdWUpOwoKICAgIHB1
YmxpYzoKICAgICAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcygpIHsgcmV0dXJuIG1f
c3RydWN0dXJlczsgfQogICAgICAgIEpTRE9NQ29uc3RydWN0b3JNYXAmIGNvbnN0cnVjdG9ycygp
IHsgcmV0dXJuIG1fY29uc3RydWN0b3JzOyB9CgogICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKCgogICAgICAg
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiB0aGlzOyB9CgogICAg
ICAgIHZvaWQgc2V0Q3VycmVudEV2ZW50KEV2ZW50Kik7CiAgICAgICAgRXZlbnQqIGN1cnJlbnRF
dmVudCgpIGNvbnN0OwoKICAgICAgICB2b2lkIHNldEluamVjdGVkU2NyaXB0KEpTT2JqZWN0Kik7
CiAgICAgICAgSlNPYmplY3QqIGluamVjdGVkU2NyaXB0KCkgY29uc3Q7CgogICAgICAgIHZpcnR1
YWwgdm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImKTsKCiAgICAgICAgRE9NV3Jh
cHBlcldvcmxkKiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0KCiAgICAgICAgc3Rh
dGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKCiAgICAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCAwLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgICAgIH0KCiAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgSlNET01TdHJ1Y3R1cmVNYXAgbV9zdHJ1Y3R1cmVzOwogICAg
ICAgIEpTRE9NQ29uc3RydWN0b3JNYXAgbV9jb25zdHJ1Y3RvcnM7CgogICAgICAgIEV2ZW50KiBt
X2N1cnJlbnRFdmVudDsKICAgICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwog
ICAgICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2luamVjdGVkU2NyaXB0OwogICAg
fTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBDb25zdHJ1Y3RvckNsYXNzPgogICAgaW5saW5lIEpTQzo6
SlNPYmplY3QqIGdldERPTUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgewogICAgICAgIGlmIChKU0M6OkpT
T2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5nZXQoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbyku
Z2V0KCkpCiAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICBKU0M6OkpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZShleGVjLCBDb25zdHJ1
Y3RvckNsYXNzOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb25zdF9jYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQ
cm90b3R5cGUoKSksIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKICAgICAgICBkbyBpZiAoISghY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2lu
Zm8pKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIiwgOTMsIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICIhY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0
cnVjdG9ycygpLmNvbnRhaW5zKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pIik7IGRvIHsgV1RG
UmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2
b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBKU0M6
OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiB0ZW1wOwogICAgICAgIGNvbnN0X2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5hZGQoJkNvbnN0
cnVjdG9yQ2xhc3M6OnNfaW5mbywgdGVtcCkuZmlyc3QtPnNlY29uZC5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsKICAgICAgICByZXR1cm4gY29uc3Ry
dWN0b3I7CiAgICB9CgogICAgSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3Qo
RG9jdW1lbnQqLCBKU0M6OkV4ZWNTdGF0ZSopOwogICAgSlNET01HbG9iYWxPYmplY3QqIHRvSlNE
T01HbG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEpTQzo6RXhlY1N0YXRlKik7
CgogICAgSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoRG9jdW1lbnQqLCBE
T01XcmFwcGVyV29ybGQqKTsKICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2Jq
ZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBET01XcmFwcGVyV29ybGQqKTsKCn0KIyAyNiAi
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgiIDIKIyAx
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIiAxCiMg
MjcgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIiAy
CgpuYW1lc3BhY2UgV2ViQ29yZSB7CgpjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwoKY2xh
c3MgSlNET01XcmFwcGVyIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CnB1YmxpYzoK
ICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdAogICAgewogICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KEpTQzo6SlNOb25GaW5hbE9i
amVjdDo6Z2xvYmFsT2JqZWN0KCkpOwogICAgfQoKICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgewoKICAgICAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgIH0KCiAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgewogICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgIH0KCnByb3RlY3RlZDoKCgogICAg
dmlydHVhbCB2b2lkIHZpcnR1YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGUoKTsKCiAgICBl
eHBsaWNpdCBKU0RPTVdyYXBwZXIoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgewoKCgoKICAgIH0KfTsKCn0K
IyAzNSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxl
LmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgiIDEK
IyAzNiAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxl
LmgiIDIKCm5hbWVzcGFjZSBXZWJDb3JlIHsKCmNsYXNzIFNjcmlwdFdyYXBwYWJsZSB7CnB1Ymxp
YzoKICAgIEpTRE9NV3JhcHBlciogd3JhcHBlcigpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IG1fd3JhcHBlci5nZXQoKTsKICAgIH0KCiAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTRE9NV3JhcHBlciogd3JhcHBlciwgSlNDOjpXZWFrSGFuZGxl
T3duZXIqIHdyYXBwZXJPd25lciwgdm9pZCogY29udGV4dCkKICAgIHsKICAgICAgICBtX3dyYXBw
ZXIuc2V0KGdsb2JhbERhdGEsIHdyYXBwZXIsIHdyYXBwZXJPd25lciwgY29udGV4dCk7CiAgICB9
CgogICAgdm9pZCBjbGVhcldyYXBwZXIoKQogICAgewogICAgICAgIG1fd3JhcHBlci5jbGVhcigp
OwogICAgfQoKcHJpdmF0ZToKICAgIEpTQzo6V2VhazxKU0RPTVdyYXBwZXI+IG1fd3JhcHBlcjsK
fTsKCn0KIyAzMyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCIgMgojIDEgIi4u
Ly4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCIgMQojIDIyICIuLi8u
Li8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgiCiNkZWZpbmUgVHJlZVNo
YXJlZF9oIAoKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhy
ZWFkLmgiIDEKIyAzMSAiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhy
ZWFkLmgiCiNkZWZpbmUgTWFpblRocmVhZF9oIAoKCgpuYW1lc3BhY2UgV1RGIHsKCnR5cGVkZWYg
dWludDMyX3QgVGhyZWFkSWRlbnRpZmllcjsKdHlwZWRlZiB2b2lkIE1haW5UaHJlYWRGdW5jdGlv
bih2b2lkKik7CgoKdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpOwoKdm9pZCBjYWxsT25NYWlu
VGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwp2b2lkIGNhbGxPbk1h
aW5UaHJlYWRBbmRXYWl0KE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwp2b2lk
IGNhbmNlbENhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4
dCk7Cgp2b2lkIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOwoKYm9v
bCBpc01haW5UaHJlYWQoKTsKCgp2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKTsK
dm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCk7CnZvaWQgZGlzcGF0
Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpOwojIDY0ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL01haW5UaHJlYWQuaCIKfQoKdXNpbmcgV1RGOjpjYWxsT25NYWluVGhyZWFk
Owp1c2luZyBXVEY6OmNhbGxPbk1haW5UaHJlYWRBbmRXYWl0Owp1c2luZyBXVEY6OmNhbmNlbENh
bGxPbk1haW5UaHJlYWQ7CnVzaW5nIFdURjo6c2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZDsK
dXNpbmcgV1RGOjppc01haW5UaHJlYWQ7CiMgMjYgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RyZWVTaGFyZWQuaCIgMgoKCm5hbWVzcGFjZSBXZWJDb3JlIHsKCgp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVkOwp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFk
b3B0ZWQoVHJlZVNoYXJlZDxUPiopOwoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFRyZWVT
aGFyZWQgewogICAgcHJpdmF0ZTogVHJlZVNoYXJlZChjb25zdCBUcmVlU2hhcmVkJik7IFRyZWVT
aGFyZWQmIG9wZXJhdG9yPShjb25zdCBUcmVlU2hhcmVkJik7CnB1YmxpYzoKICAgIFRyZWVTaGFy
ZWQoKQogICAgICAgIDogbV9yZWZDb3VudCgxKQogICAgICAgICwgbV9wYXJlbnQoMCkKCiAgICAg
ICAgLCBtX2Fkb3B0aW9uSXNSZXF1aXJlZCh0cnVlKQoKICAgIHsKICAgICAgICBkbyBpZiAoIShp
c01haW5UaHJlYWQoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIiwgNDUsIF9fUFJFVFRZX0ZVTkNUSU9O
X18sICJpc01haW5UaHJlYWQoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZh
bHNlKTsgfSB3aGlsZSAoMCk7CgogICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IGZhbHNlOwog
ICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFsc2U7CgogICAgfQogICAgdmly
dHVhbCB+VHJlZVNoYXJlZCgpCiAgICB7CiAgICAgICAgZG8gaWYgKCEoaXNNYWluVGhyZWFkKCkp
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RyZWVTaGFyZWQuaCIsIDUzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaXNNYWluVGhy
ZWFkKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOwogICAgICAgIGRvIGlmICghKCFtX3JlZkNvdW50KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25G
YWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgiLCA1
NCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFtX3JlZkNvdW50Iik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAoIShtX2Rl
bGV0aW9uSGFzQmVndW4pKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCIsIDU1LCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAibV9kZWxldGlvbkhhc0JlZ3VuIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAoISghbV9hZG9wdGlvbklzUmVx
dWlyZWQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCIsIDU2LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIW1f
YWRvcHRpb25Jc1JlcXVpcmVkIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICop
KHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsKICAgIH0KCiAgICB2b2lkIHJlZigpCiAgICB7CiAgICAgICAgZG8g
aWYgKCEoaXNNYWluVGhyZWFkKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCIsIDYxLCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAiaXNNYWluVGhyZWFkKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsg
KihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKCFtX2RlbGV0aW9uSGFz
QmVndW4pKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCIsIDYyLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIW1f
ZGVsZXRpb25IYXNCZWd1biIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8gaWYgKCEoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0
aW9uKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgiLCA2MywgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFtX2lu
UmVtb3ZlZExhc3RSZWZGdW5jdGlvbiIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8gaWYgKCEoIW1fYWRvcHRpb25Jc1JlcXVp
cmVkKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgiLCA2NCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFtX2Fk
b3B0aW9uSXNSZXF1aXJlZCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgKyttX3JlZkNvdW50OwogICAgfQoKICAgIHZvaWQgZGVy
ZWYoKQogICAgewogICAgICAgIGRvIGlmICghKGlzTWFpblRocmVhZCgpKSkgeyBXVEZSZXBvcnRB
c3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hh
cmVkLmgiLCA3MCwgX19QUkVUVFlfRlVOQ1RJT05fXywgImlzTWFpblRocmVhZCgpIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBk
byBpZiAoIShtX3JlZkNvdW50ID49IDApKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCIsIDcxLCBfX1BSRVRU
WV9GVU5DVElPTl9fLCAibV9yZWZDb3VudCA+PSAwIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNl
KCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyBpZiAoISghbV9kZWxldGlv
bkhhc0JlZ3VuKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgiLCA3MiwgX19QUkVUVFlfRlVOQ1RJT05fXywg
IiFtX2RlbGV0aW9uSGFzQmVndW4iKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKCFtX2luUmVtb3ZlZExhc3RSZWZG
dW5jdGlvbikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIiwgNzMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIh
bV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24iKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsg
KihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKCFtX2Fkb3B0aW9uSXNS
ZXF1aXJlZCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIiwgNzQsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIh
bV9hZG9wdGlvbklzUmVxdWlyZWQiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIGlmICgtLW1fcmVmQ291bnQgPD0gMCAmJiAhbV9w
YXJlbnQpIHsKCiAgICAgICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsK
CiAgICAgICAgICAgIHJlbW92ZWRMYXN0UmVmKCk7CiAgICAgICAgfQogICAgfQoKICAgIGJvb2wg
aGFzT25lUmVmKCkgY29uc3QKICAgIHsKICAgICAgICBkbyBpZiAoISghbV9kZWxldGlvbkhhc0Jl
Z3VuKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgiLCA4NSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFtX2Rl
bGV0aW9uSGFzQmVndW4iKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWlu
dHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7
IH0gd2hpbGUgKDApOwogICAgICAgIGRvIGlmICghKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlv
bikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVHJlZVNoYXJlZC5oIiwgODYsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbV9pblJl
bW92ZWRMYXN0UmVmRnVuY3Rpb24iKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBtX3JlZkNvdW50ID09IDE7CiAgICB9
CgogICAgaW50IHJlZkNvdW50KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9yZWZDb3Vu
dDsKICAgIH0KCiAgICB2b2lkIHNldFBhcmVudChUKiBwYXJlbnQpCiAgICB7CiAgICAgICAgZG8g
aWYgKCEoaXNNYWluVGhyZWFkKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCIsIDk3LCBfX1BSRVRUWV9G
VU5DVElPTl9fLCAiaXNNYWluVGhyZWFkKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsg
KihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIG1fcGFyZW50ID0gcGFyZW50OwogICAg
fQoKICAgIFQqIHBhcmVudCgpIGNvbnN0CiAgICB7CiAgICAgICAgZG8gaWYgKCEoaXNNYWluVGhy
ZWFkKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCIsIDEwMywgX19QUkVUVFlfRlVOQ1RJT05fXywgImlz
TWFpblRocmVhZCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbV9wYXJlbnQ7CiAgICB9CgoKICAgIGJvb2wgbV9k
ZWxldGlvbkhhc0JlZ3VuOwogICAgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbjsKCgpw
cm90ZWN0ZWQ6CiAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZExhc3RSZWYoKQogICAgewoKICAgICAg
ICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwoKICAgICAgICBkZWxldGUgdGhpczsKICAgIH0K
CnByaXZhdGU6CgogICAgZnJpZW5kIHZvaWQgYWRvcHRlZDw+KFRyZWVTaGFyZWQ8VD4qKTsKCgog
ICAgaW50IG1fcmVmQ291bnQ7CiAgICBUKiBtX3BhcmVudDsKCiAgICBib29sIG1fYWRvcHRpb25J
c1JlcXVpcmVkOwoKfTsKCgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRvcHRl
ZChUcmVlU2hhcmVkPFQ+KiBvYmplY3QpCnsKICAgIGlmICghb2JqZWN0KQogICAgICAgIHJldHVy
bjsKICAgIGRvIGlmICghKCFvYmplY3QtPm1fZGVsZXRpb25IYXNCZWd1bikpIHsgV1RGUmVwb3J0
QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNo
YXJlZC5oIiwgMTM5LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIW9iamVjdC0+bV9kZWxldGlvbkhh
c0JlZ3VuIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkw
eGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxl
ICgwKTsKICAgIGRvIGlmICghKCFvYmplY3QtPm1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKSkg
eyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UcmVlU2hhcmVkLmgiLCAxNDAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhb2JqZWN0LT5t
X2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAq
KGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hp
bGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICBvYmplY3QtPm1fYWRvcHRpb25Jc1JlcXVpcmVk
ID0gZmFsc2U7Cn0KCgoKfQojIDM0ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IiAyCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTGlzdEhhc2hTZXQu
aCIgMQojIDIzICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0xpc3RIYXNoU2V0
LmgiCiNkZWZpbmUgV1RGX0xpc3RIYXNoU2V0X2ggCgoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0hhc2hTZXQuaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0xpc3RIYXNoU2V0LmgiIDIKCiMgMSAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QYXNzT3duUHRyLmgiIDEKIyAyOSAiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9MaXN0SGFzaFNldC5oIiAyCgoKbmFtZXNwYWNlIFdURiB7CiMgNDMgIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTGlzdEhhc2hTZXQuaCIKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFZhbHVlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnM+IGNsYXNzIExpc3RIYXNoU2V0OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBJZGVudGl0eUV4dHJhY3RvcjsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zPgogICAgdm9pZCBkZWxl
dGVBbGxWYWx1ZXMoY29uc3QgTGlzdEhhc2hTZXQ8VmFsdWUsIGlubGluZUNhcGFjaXR5LCBIYXNo
RnVuY3Rpb25zPiYpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHksIHR5cGVuYW1lIEhhc2hBcmc+IGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3I7
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I7CgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3RydWN0IExp
c3RIYXNoU2V0Tm9kZTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+IHN0cnVjdCBMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I7CiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBIYXNo
QXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0aW9uczsKCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gMjU2LCB0eXBlbmFtZSBI
YXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNoPiBjbGFzcyBMaXN0
SGFzaFNldCB7CiAgICAgICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lk
KiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkg
eyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9
IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVN
YWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IHJldHVybiBwOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZh
bGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3KTsgOjpXVEY6
OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHZvaWQq
IHAgPSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlk
YXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXdBcnJheSk7IHJl
dHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdE1h
bGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NO
ZXdBcnJheSk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBUaGlz
SXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKICAgIHByaXZhdGU6CiAgICAg
ICAgdHlwZWRlZiBMaXN0SGFzaFNldE5vZGU8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5PiBOb2Rl
OwogICAgICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlQWxsb2NhdG9yPFZhbHVlQXJnLCBpbmxp
bmVDYXBhY2l0eT4gTm9kZUFsbG9jYXRvcjsKCiAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPE5v
ZGUqPiBOb2RlVHJhaXRzOwogICAgICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0
aW9uczxWYWx1ZUFyZywgaW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+IE5vZGVIYXNoOwoKICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZTxOb2RlKiwgTm9kZSosIElkZW50aXR5RXh0cmFjdG9yPE5vZGUq
PiwgTm9kZUhhc2gsIE5vZGVUcmFpdHMsIE5vZGVUcmFpdHM+IEltcGxUeXBlOwogICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8Tm9kZSosIE5vZGUqLCBJZGVudGl0eUV4dHJhY3RvcjxO
b2RlKj4sIE5vZGVIYXNoLCBOb2RlVHJhaXRzLCBOb2RlVHJhaXRzPiBJbXBsVHlwZUl0ZXJhdG9y
OwogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxOb2RlKiwgTm9kZSosIElk
ZW50aXR5RXh0cmFjdG9yPE5vZGUqPiwgTm9kZUhhc2gsIE5vZGVUcmFpdHMsIE5vZGVUcmFpdHM+
IEltcGxUeXBlQ29uc3RJdGVyYXRvcjsKCiAgICAgICAgdHlwZWRlZiBIYXNoQXJnIEhhc2hGdW5j
dGlvbnM7CgogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgVmFsdWVBcmcgVmFsdWVUeXBlOwog
ICAgICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFj
aXR5LCBIYXNoQXJnPiBpdGVyYXRvcjsKICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJ
dGVyYXRvcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPiBjb25zdF9pdGVyYXRv
cjsKCiAgICAgICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZVR5
cGUsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPjsKCiAgICAgICAgTGlzdEhhc2hTZXQoKTsKICAg
ICAgICBMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldCYpOwogICAgICAgIExpc3RIYXNoU2V0
JiBvcGVyYXRvcj0oY29uc3QgTGlzdEhhc2hTZXQmKTsKICAgICAgICB+TGlzdEhhc2hTZXQoKTsK
CiAgICAgICAgdm9pZCBzd2FwKExpc3RIYXNoU2V0Jik7CgogICAgICAgIGludCBzaXplKCkgY29u
c3Q7CiAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3Q7CgogICAgICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgICAgaXRlcmF0b3IgZW5kKCk7
CiAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKICAgICAgICBjb25zdF9pdGVy
YXRvciBlbmQoKSBjb25zdDsKCiAgICAgICAgVmFsdWVUeXBlJiBmaXJzdCgpOwogICAgICAgIGNv
bnN0IFZhbHVlVHlwZSYgZmlyc3QoKSBjb25zdDsKCiAgICAgICAgVmFsdWVUeXBlJiBsYXN0KCk7
CiAgICAgICAgY29uc3QgVmFsdWVUeXBlJiBsYXN0KCkgY29uc3Q7CiAgICAgICAgdm9pZCByZW1v
dmVMYXN0KCk7CgogICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgVmFsdWVUeXBlJik7CiAgICAg
ICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBWYWx1ZVR5cGUmKSBjb25zdDsKICAgICAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYpIGNvbnN0OwoKCgoKICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gaXRlcmF0b3IgZmluZChjb25z
dCBUJik7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0
b3I+IGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgVCYpIGNvbnN0OwogICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBib29sIGNvbnRhaW5zKGNvbnN0
IFQmKSBjb25zdDsKCgoKICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVmFs
dWVUeXBlJik7CgogICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydEJlZm9yZShjb25z
dCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKTsKICAg
ICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIGNvbnN0
IFZhbHVlVHlwZSYpOwoKICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBWYWx1ZVR5cGUmKTsKICAg
ICAgICB2b2lkIHJlbW92ZShpdGVyYXRvcik7CiAgICAgICAgdm9pZCBjbGVhcigpOwoKICAgIHBy
aXZhdGU6CiAgICAgICAgdm9pZCB1bmxpbmtBbmREZWxldGUoTm9kZSopOwogICAgICAgIHZvaWQg
YXBwZW5kTm9kZShOb2RlKik7CiAgICAgICAgdm9pZCBpbnNlcnROb2RlQmVmb3JlKE5vZGUqIGJl
Zm9yZU5vZGUsIE5vZGUqIG5ld05vZGUpOwogICAgICAgIHZvaWQgZGVsZXRlQWxsTm9kZXMoKTsK
ICAgICAgICBpdGVyYXRvciBtYWtlSXRlcmF0b3IoTm9kZSopOwogICAgICAgIGNvbnN0X2l0ZXJh
dG9yIG1ha2VDb25zdEl0ZXJhdG9yKE5vZGUqKSBjb25zdDsKCiAgICAgICAgZnJpZW5kIHZvaWQg
ZGVsZXRlQWxsVmFsdWVzPD4oY29uc3QgTGlzdEhhc2hTZXQmKTsKCiAgICAgICAgSW1wbFR5cGUg
bV9pbXBsOwogICAgICAgIE5vZGUqIG1faGVhZDsKICAgICAgICBOb2RlKiBtX3RhaWw7CiAgICAg
ICAgT3duUHRyPE5vZGVBbGxvY2F0b3I+IG1fYWxsb2NhdG9yOwogICAgfTsKCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBzdHJ1Y3QgTGlzdEhh
c2hTZXROb2RlQWxsb2NhdG9yIHsKICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1
ZUFyZywgaW5saW5lQ2FwYWNpdHk+IE5vZGU7CiAgICAgICAgdHlwZWRlZiBMaXN0SGFzaFNldE5v
ZGVBbGxvY2F0b3I8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5PiBOb2RlQWxsb2NhdG9yOwoKICAg
ICAgICBMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3IoKQogICAgICAgICAgICA6IG1fZnJlZUxpc3Qo
cG9vbCgpKQogICAgICAgICAgICAsIG1faXNEb25lV2l0aEluaXRpYWxGcmVlTGlzdChmYWxzZSkK
ICAgICAgICB7CiAgICAgICAgICAgIG1lbXNldChtX3Bvb2wucG9vbCwgMCwgc2l6ZW9mKG1fcG9v
bC5wb29sKSk7CiAgICAgICAgfQoKICAgICAgICBOb2RlKiBhbGxvY2F0ZSgpCiAgICAgICAgewog
ICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2ZyZWVMaXN0OwoKICAgICAgICAgICAgaWYgKCFy
ZXN1bHQpCiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZSo+KGZhc3RNYWxs
b2Moc2l6ZW9mKE5vZGUpKSk7CgogICAgICAgICAgICBkbyBpZiAoISghcmVzdWx0LT5tX2lzQWxs
b2NhdGVkKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0xpc3RIYXNoU2V0LmgiLCAxNTgsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICIhcmVzdWx0LT5tX2lzQWxsb2NhdGVkIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICoo
aW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgICAgIE5vZGUqIG5leHQgPSByZXN1bHQt
Pm1fbmV4dDsKICAgICAgICAgICAgZG8gaWYgKCEoIW5leHQgfHwgIW5leHQtPm1faXNBbGxvY2F0
ZWQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvTGlzdEhhc2hTZXQuaCIsIDE2MSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFu
ZXh0IHx8ICFuZXh0LT5tX2lzQWxsb2NhdGVkIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7
ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgaWYgKCFuZXh0ICYmICFtX2lz
RG9uZVdpdGhJbml0aWFsRnJlZUxpc3QpIHsKICAgICAgICAgICAgICAgIG5leHQgPSByZXN1bHQg
KyAxOwogICAgICAgICAgICAgICAgaWYgKG5leHQgPT0gcGFzdFBvb2woKSkgewogICAgICAgICAg
ICAgICAgICAgIG1faXNEb25lV2l0aEluaXRpYWxGcmVlTGlzdCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgbmV4dCA9IDA7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgIGRvIGlmICghKGluUG9vbChuZXh0KSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9MaXN0SGFzaFNldC5oIiwgMTY4
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaW5Qb29sKG5leHQpIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICBk
byBpZiAoISghbmV4dC0+bV9pc0FsbG9jYXRlZCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9MaXN0SGFzaFNldC5oIiwgMTY5
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIW5leHQtPm1faXNBbGxvY2F0ZWQiKTsgZG8geyBXVEZS
ZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZv
aWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIG1fZnJlZUxpc3QgPSBuZXh0OwoKICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICB9CgogICAgICAgIHZvaWQgZGVhbGxvY2F0ZShO
b2RlKiBub2RlKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGluUG9vbChub2RlKSkgewoKICAg
ICAgICAgICAgICAgIG5vZGUtPm1faXNBbGxvY2F0ZWQgPSBmYWxzZTsKCiAgICAgICAgICAgICAg
ICBub2RlLT5tX25leHQgPSBtX2ZyZWVMaXN0OwogICAgICAgICAgICAgICAgbV9mcmVlTGlzdCA9
IG5vZGU7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAg
IGZhc3RGcmVlKG5vZGUpOwogICAgICAgIH0KCiAgICBwcml2YXRlOgogICAgICAgIE5vZGUqIHBv
b2woKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PE5vZGUqPihtX3Bvb2wucG9vbCk7IH0KICAg
ICAgICBOb2RlKiBwYXN0UG9vbCgpIHsgcmV0dXJuIHBvb2woKSArIG1fcG9vbFNpemU7IH0KCiAg
ICAgICAgYm9vbCBpblBvb2woTm9kZSogbm9kZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVy
biBub2RlID49IHBvb2woKSAmJiBub2RlIDwgcGFzdFBvb2woKTsKICAgICAgICB9CgogICAgICAg
IE5vZGUqIG1fZnJlZUxpc3Q7CiAgICAgICAgYm9vbCBtX2lzRG9uZVdpdGhJbml0aWFsRnJlZUxp
c3Q7CiAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtX3Bvb2xTaXplID0gaW5saW5lQ2FwYWNp
dHk7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICBjaGFyIHBvb2xbc2l6ZW9mKE5vZGUpICog
bV9wb29sU2l6ZV07CiAgICAgICAgICAgIGRvdWJsZSBmb3JBbGlnbm1lbnQ7CiAgICAgICAgfSBt
X3Bvb2w7CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+IHN0cnVjdCBMaXN0SGFzaFNldE5vZGUgewogICAgICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXROb2RlQWxsb2NhdG9yPFZhbHVlQXJnLCBpbmxpbmVDYXBhY2l0eT4gTm9kZUFsbG9j
YXRvcjsKCiAgICAgICAgTGlzdEhhc2hTZXROb2RlKFZhbHVlQXJnIHZhbHVlKQogICAgICAgICAg
ICA6IG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICwgbV9wcmV2KDApCiAgICAgICAgICAgICwg
bV9uZXh0KDApCgogICAgICAgICAgICAsIG1faXNBbGxvY2F0ZWQodHJ1ZSkKCiAgICAgICAgewog
ICAgICAgIH0KCiAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm9kZUFsbG9jYXRv
ciogYWxsb2NhdG9yKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci0+YWxs
b2NhdGUoKTsKICAgICAgICB9CiAgICAgICAgdm9pZCBkZXN0cm95KE5vZGVBbGxvY2F0b3IqIGFs
bG9jYXRvcikKICAgICAgICB7CiAgICAgICAgICAgIHRoaXMtPn5MaXN0SGFzaFNldE5vZGUoKTsK
ICAgICAgICAgICAgYWxsb2NhdG9yLT5kZWFsbG9jYXRlKHRoaXMpOwogICAgICAgIH0KCiAgICAg
ICAgVmFsdWVBcmcgbV92YWx1ZTsKICAgICAgICBMaXN0SGFzaFNldE5vZGUqIG1fcHJldjsKICAg
ICAgICBMaXN0SGFzaFNldE5vZGUqIG1fbmV4dDsKCgogICAgICAgIGJvb2wgbV9pc0FsbG9jYXRl
ZDsKCiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIEhhc2hBcmc+IHN0cnVjdCBMaXN0SGFzaFNldE5vZGVIYXNoRnVu
Y3Rpb25zIHsKICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZywgaW5saW5l
Q2FwYWNpdHk+IE5vZGU7CgogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKE5vZGUqIGNvbnN0
JiBrZXkpIHsgcmV0dXJuIEhhc2hBcmc6Omhhc2goa2V5LT5tX3ZhbHVlKTsgfQogICAgICAgIHN0
YXRpYyBib29sIGVxdWFsKE5vZGUqIGNvbnN0JiBhLCBOb2RlKiBjb25zdCYgYikgeyByZXR1cm4g
SGFzaEFyZzo6ZXF1YWwoYS0+bV92YWx1ZSwgYi0+bV92YWx1ZSk7IH0KICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwogICAgfTsK
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9yIHsKICAgIHByaXZhdGU6
CiAgICAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxWYWx1ZUFyZywgaW5saW5lQ2FwYWNpdHksIEhh
c2hBcmc+IExpc3RIYXNoU2V0VHlwZTsKICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0SXRlcmF0
b3I8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPiBpdGVyYXRvcjsKICAgICAgICB0
eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZUFyZywgaW5saW5lQ2FwYWNpdHks
IEhhc2hBcmc+IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2Rl
PFZhbHVlQXJnLCBpbmxpbmVDYXBhY2l0eT4gTm9kZTsKICAgICAgICB0eXBlZGVmIFZhbHVlQXJn
IFZhbHVlVHlwZTsKICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSYgUmVmZXJlbmNlVHlwZTsKICAg
ICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUG9pbnRlclR5cGU7CgogICAgICAgIGZyaWVuZCBjbGFz
cyBMaXN0SGFzaFNldDxWYWx1ZUFyZywgaW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+OwoKICAgICAg
ICBMaXN0SGFzaFNldEl0ZXJhdG9yKGNvbnN0IExpc3RIYXNoU2V0VHlwZSogc2V0LCBOb2RlKiBw
b3NpdGlvbikgOiBtX2l0ZXJhdG9yKHNldCwgcG9zaXRpb24pIHsgfQoKICAgIHB1YmxpYzoKICAg
ICAgICBMaXN0SGFzaFNldEl0ZXJhdG9yKCkgeyB9CgoKCiAgICAgICAgUG9pbnRlclR5cGUgZ2V0
KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxQb2ludGVyVHlwZT4obV9pdGVyYXRvci5nZXQo
KSk7IH0KICAgICAgICBSZWZlcmVuY2VUeXBlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpn
ZXQoKTsgfQogICAgICAgIFBvaW50ZXJUeXBlIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBn
ZXQoKTsgfQoKICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgKyttX2l0ZXJhdG9yOyBy
ZXR1cm4gKnRoaXM7IH0KCgoKICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3ItLSgpIHsgLS1tX2l0
ZXJhdG9yOyByZXR1cm4gKnRoaXM7IH0KCgoKCiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9PSBvdGhlci5tX2l0
ZXJhdG9yOyB9CiAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciAhPSBvdGhlci5tX2l0ZXJhdG9yOyB9CgogICAgICAg
IG9wZXJhdG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQoK
ICAgIHByaXZhdGU6CiAgICAgICAgTm9kZSogbm9kZSgpIHsgcmV0dXJuIG1faXRlcmF0b3Iubm9k
ZSgpOyB9CgogICAgICAgIGNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3I7CiAgICB9OwoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IEhhc2hBcmc+IGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvciB7CiAgICBwcml2YXRlOgog
ICAgICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5LCBIYXNo
QXJnPiBMaXN0SGFzaFNldFR5cGU7CiAgICAgICAgdHlwZWRlZiBMaXN0SGFzaFNldEl0ZXJhdG9y
PFZhbHVlQXJnLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEFyZz4gaXRlcmF0b3I7CiAgICAgICAgdHlw
ZWRlZiBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5LCBI
YXNoQXJnPiBjb25zdF9pdGVyYXRvcjsKICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxW
YWx1ZUFyZywgaW5saW5lQ2FwYWNpdHk+IE5vZGU7CiAgICAgICAgdHlwZWRlZiBWYWx1ZUFyZyBW
YWx1ZVR5cGU7CiAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7
CiAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUqIFBvaW50ZXJUeXBlOwoKICAgICAgICBm
cmllbmQgY2xhc3MgTGlzdEhhc2hTZXQ8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJn
PjsKICAgICAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFyZywgaW5s
aW5lQ2FwYWNpdHksIEhhc2hBcmc+OwoKICAgICAgICBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3Io
Y29uc3QgTGlzdEhhc2hTZXRUeXBlKiBzZXQsIE5vZGUqIHBvc2l0aW9uKQogICAgICAgICAgICA6
IG1fc2V0KHNldCkKICAgICAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQogICAgICAgIHsK
ICAgICAgICB9CgogICAgcHVibGljOgogICAgICAgIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcigp
CiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAgUG9pbnRlclR5cGUgZ2V0KCkgY29uc3QKICAg
ICAgICB7CiAgICAgICAgICAgIHJldHVybiAmbV9wb3NpdGlvbi0+bV92YWx1ZTsKICAgICAgICB9
CiAgICAgICAgUmVmZXJlbmNlVHlwZSBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7
IH0KICAgICAgICBQb2ludGVyVHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7
IH0KCiAgICAgICAgY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgIHsKICAgICAg
ICAgICAgZG8gaWYgKCEobV9wb3NpdGlvbiAhPSAwKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWls
dXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0xpc3RIYXNoU2V0LmgiLCAz
MjUsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX3Bvc2l0aW9uICE9IDAiKTsgZG8geyBXVEZSZXBv
cnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQo
KikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBtX3Bv
c2l0aW9uID0gbV9wb3NpdGlvbi0+bV9uZXh0OwogICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgICAgfQoKCgogICAgICAgIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvci0tKCkKICAgICAgICB7
CiAgICAgICAgICAgIGRvIGlmICghKG1fcG9zaXRpb24gIT0gbV9zZXQtPm1faGVhZCkpIHsgV1RG
UmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9MaXN0SGFzaFNldC5oIiwgMzM0LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9wb3NpdGlvbiAh
PSBtX3NldC0+bV9oZWFkIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVp
bnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgaWYgKCFtX3Bvc2l0aW9uKQogICAgICAgICAgICAg
ICAgbV9wb3NpdGlvbiA9IG1fc2V0LT5tX3RhaWw7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgIG1fcG9zaXRpb24gPSBtX3Bvc2l0aW9uLT5tX3ByZXY7CiAgICAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICAgICB9CgoKCgogICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjb25z
dF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gbV9w
b3NpdGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOwogICAgICAgIH0KICAgICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgICAgIHsKICAgICAg
ICAgICAgcmV0dXJuIG1fcG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbjsKICAgICAgICB9Cgog
ICAgcHJpdmF0ZToKICAgICAgICBOb2RlKiBub2RlKCkgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQoK
ICAgICAgICBjb25zdCBMaXN0SGFzaFNldFR5cGUqIG1fc2V0OwogICAgICAgIE5vZGUqIG1fcG9z
aXRpb247CiAgICB9OwoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4KICAgIHN0cnVjdCBMaXN0SGFz
aFNldFRyYW5zbGF0b3IgewogICAgcHJpdmF0ZToKICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0
Tm9kZTxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5PiBOb2RlOwogICAgICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXROb2RlQWxsb2NhdG9yPFZhbHVlVHlwZSwgaW5saW5lQ2FwYWNpdHk+IE5vZGVBbGxv
Y2F0b3I7CiAgICBwdWJsaWM6CiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVmFs
dWVUeXBlJiBrZXkpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6Omhhc2goa2V5KTsgfQogICAgICAg
IHN0YXRpYyBib29sIGVxdWFsKE5vZGUqIGNvbnN0JiBhLCBjb25zdCBWYWx1ZVR5cGUmIGIpIHsg
cmV0dXJuIEhhc2hGdW5jdGlvbnM6OmVxdWFsKGEtPm1fdmFsdWUsIGIpOyB9CiAgICAgICAgc3Rh
dGljIHZvaWQgdHJhbnNsYXRlKE5vZGUqJiBsb2NhdGlvbiwgY29uc3QgVmFsdWVUeXBlJiBrZXks
IE5vZGVBbGxvY2F0b3IqIGFsbG9jYXRvcikKICAgICAgICB7CiAgICAgICAgICAgIGxvY2F0aW9u
ID0gbmV3IChhbGxvY2F0b3IpIE5vZGUoa2V5KTsKICAgICAgICB9CiAgICB9OwoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KICAgIGlu
bGluZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Okxpc3RIYXNoU2V0KCkKICAg
ICAgICA6IG1faGVhZCgwKQogICAgICAgICwgbV90YWlsKDApCiAgICAgICAgLCBtX2FsbG9jYXRv
cihhZG9wdFB0cihuZXcgTm9kZUFsbG9jYXRvcikpCiAgICB7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgogICAgaW5saW5l
IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6TGlzdEhhc2hTZXQoY29uc3QgTGlz
dEhhc2hTZXQmIG90aGVyKQogICAgICAgIDogbV9oZWFkKDApCiAgICAgICAgLCBtX3RhaWwoMCkK
ICAgICAgICAsIG1fYWxsb2NhdG9yKGFkb3B0UHRyKG5ldyBOb2RlQWxsb2NhdG9yKSkKICAgIHsK
ICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQgPSBvdGhlci5lbmQoKTsKICAgICAgICBmb3IgKGNv
bnN0X2l0ZXJhdG9yIGl0ID0gb3RoZXIuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAg
ICAgICBhZGQoKml0KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+CiAgICBpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgaW5saW5l
Q2FwYWNpdHksIFU+JiBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Om9wZXJhdG9y
PShjb25zdCBMaXN0SGFzaFNldCYgb3RoZXIpCiAgICB7CiAgICAgICAgTGlzdEhhc2hTZXQgdG1w
KG90aGVyKTsKICAgICAgICBzd2FwKHRtcCk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
VT4KICAgIGlubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6c3dh
cChMaXN0SGFzaFNldCYgb3RoZXIpCiAgICB7CiAgICAgICAgbV9pbXBsLnN3YXAob3RoZXIubV9p
bXBsKTsKICAgICAgICBzdGQ6OnN3YXAobV9oZWFkLCBvdGhlci5tX2hlYWQpOwogICAgICAgIHN0
ZDo6c3dhcChtX3RhaWwsIG90aGVyLm1fdGFpbCk7CiAgICAgICAgbV9hbGxvY2F0b3Iuc3dhcChv
dGhlci5tX2FsbG9jYXRvcik7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgogICAgaW5saW5lIExpc3RIYXNoU2V0PFQsIGlu
bGluZUNhcGFjaXR5LCBVPjo6fkxpc3RIYXNoU2V0KCkKICAgIHsKICAgICAgICBkZWxldGVBbGxO
b2RlcygpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgVT4KICAgIGlubGluZSBpbnQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2Fw
YWNpdHksIFU+OjpzaXplKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLnNpemUo
KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIFU+CiAgICBpbmxpbmUgaW50IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5
LCBVPjo6Y2FwYWNpdHkoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuY2FwYWNp
dHkoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIFU+CiAgICBpbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBh
Y2l0eSwgVT46OmlzRW1wdHkoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuaXNF
bXB0eSgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgVT4KICAgIGlubGluZSB0eXBlbmFtZSBMaXN0SGFzaFNldDxULCBpbmxp
bmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBV
Pjo6YmVnaW4oKQogICAgewogICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3IobV9oZWFkKTsKICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIFU+CiAgICBpbmxpbmUgdHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHks
IFU+OjppdGVyYXRvciBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmVuZCgpCiAg
ICB7CiAgICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvcigwKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+CiAgICBpbmxpbmUg
dHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+Ojpjb25zdF9pdGVyYXRv
ciBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmJlZ2luKCkgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gbWFrZUNvbnN0SXRlcmF0b3IobV9oZWFkKTsKICAgIH0KCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+CiAgICBp
bmxpbmUgdHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+Ojpjb25zdF9p
dGVyYXRvciBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmVuZCgpIGNvbnN0CiAg
ICB7CiAgICAgICAgcmV0dXJuIG1ha2VDb25zdEl0ZXJhdG9yKDApOwogICAgfQoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KICAgIGlu
bGluZSBUJiBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmZpcnN0KCkKICAgIHsK
ICAgICAgICBkbyBpZiAoISghaXNFbXB0eSgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJl
KCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0xpc3RIYXNoU2V0LmgiLCA0NjMs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhaXNFbXB0eSgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbV9oZWFkLT5t
X3ZhbHVlOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgVT4KICAgIGlubGluZSBjb25zdCBUJiBMaXN0SGFzaFNldDxULCBpbmxp
bmVDYXBhY2l0eSwgVT46OmZpcnN0KCkgY29uc3QKICAgIHsKICAgICAgICBkbyBpZiAoISghaXNF
bXB0eSgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0xpc3RIYXNoU2V0LmgiLCA0NzAsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICIhaXNFbXB0eSgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbV9oZWFkLT5tX3ZhbHVlOwogICAgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KICAg
IGlubGluZSBUJiBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Omxhc3QoKQogICAg
ewogICAgICAgIGRvIGlmICghKCFpc0VtcHR5KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTGlzdEhhc2hTZXQuaCIsIDQ3
NywgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFpc0VtcHR5KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkw
KSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBtX3RhaWwt
Pm1fdmFsdWU7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBVPgogICAgaW5saW5lIGNvbnN0IFQmIExpc3RIYXNoU2V0PFQsIGlu
bGluZUNhcGFjaXR5LCBVPjo6bGFzdCgpIGNvbnN0CiAgICB7CiAgICAgICAgZG8gaWYgKCEoIWlz
RW1wdHkoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9MaXN0SGFzaFNldC5oIiwgNDg0LCBfX1BSRVRUWV9GVU5DVElPTl9f
LCAiIWlzRW1wdHkoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50
cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsg
fSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG1fdGFpbC0+bV92YWx1ZTsKICAgIH0KCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+CiAg
ICBpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OnJlbW92ZUxh
c3QoKQogICAgewogICAgICAgIGRvIGlmICghKCFpc0VtcHR5KCkpKSB7IFdURlJlcG9ydEFzc2Vy
dGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTGlzdEhhc2hT
ZXQuaCIsIDQ5MSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFpc0VtcHR5KCkiKTsgZG8geyBXVEZS
ZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZv
aWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIG1faW1w
bC5yZW1vdmUobV90YWlsKTsKICAgICAgICB1bmxpbmtBbmREZWxldGUobV90YWlsKTsKICAgIH0K
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IFU+CiAgICBpbmxpbmUgdHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+
OjppdGVyYXRvciBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmZpbmQoY29uc3Qg
VmFsdWVUeXBlJiB2YWx1ZSkKICAgIHsKICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0VHJhbnNs
YXRvcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBIYXNoRnVuY3Rpb25zPiBUcmFuc2xhdG9y
OwogICAgICAgIEltcGxUeXBlSXRlcmF0b3IgaXQgPSBtX2ltcGwudGVtcGxhdGUgZmluZDxWYWx1
ZVR5cGUsIFRyYW5zbGF0b3I+KHZhbHVlKTsKICAgICAgICBpZiAoaXQgPT0gbV9pbXBsLmVuZCgp
KQogICAgICAgICAgICByZXR1cm4gZW5kKCk7CiAgICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvcigq
aXQpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSwgdHlwZW5hbWUgVT4KICAgIGlubGluZSB0eXBlbmFtZSBMaXN0SGFzaFNldDxULCBpbmxpbmVD
YXBhY2l0eSwgVT46OmNvbnN0X2l0ZXJhdG9yIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5
LCBVPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAogICAgewogICAgICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXRUcmFuc2xhdG9yPFZhbHVlVHlwZSwgaW5saW5lQ2FwYWNpdHksIEhh
c2hGdW5jdGlvbnM+IFRyYW5zbGF0b3I7CiAgICAgICAgSW1wbFR5cGVDb25zdEl0ZXJhdG9yIGl0
ID0gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8VmFsdWVUeXBlLCBUcmFuc2xhdG9yPih2YWx1ZSk7CiAg
ICAgICAgaWYgKGl0ID09IG1faW1wbC5lbmQoKSkKICAgICAgICAgICAgcmV0dXJuIGVuZCgpOwog
ICAgICAgIHJldHVybiBtYWtlQ29uc3RJdGVyYXRvcigqaXQpOwogICAgfQoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBULCB0
eXBlbmFtZSBUcmFuc2xhdG9yPgogICAgc3RydWN0IExpc3RIYXNoU2V0VHJhbnNsYXRvckFkYXB0
ZXIgewogICAgcHJpdmF0ZToKICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZVR5
cGUsIGlubGluZUNhcGFjaXR5PiBOb2RlOwogICAgcHVibGljOgogICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gVHJhbnNsYXRvcjo6aGFzaChrZXkpOyB9
CiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoTm9kZSogY29uc3QmIGEsIGNvbnN0IFQmIGIpIHsg
cmV0dXJuIFRyYW5zbGF0b3I6OmVxdWFsKGEtPm1fdmFsdWUsIGIpOyB9CiAgICB9OwoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBVPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiAg
ICBpbmxpbmUgdHlwZW5hbWUgTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBpbmxpbmVDYXBhY2l0eSwg
VT46Oml0ZXJhdG9yIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgaW5saW5lQ2FwYWNpdHksIFU+Ojpm
aW5kKGNvbnN0IFQmIHZhbHVlKQogICAgewogICAgICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRUcmFu
c2xhdG9yQWRhcHRlcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBULCBIYXNoVHJhbnNsYXRv
cj4gQWRhcHRlcjsKICAgICAgICBJbXBsVHlwZUNvbnN0SXRlcmF0b3IgaXQgPSBtX2ltcGwudGVt
cGxhdGUgZmluZDxULCBBZGFwdGVyPih2YWx1ZSk7CiAgICAgICAgaWYgKGl0ID09IG1faW1wbC5l
bmQoKSkKICAgICAgICAgICAgcmV0dXJuIGVuZCgpOwogICAgICAgIHJldHVybiBtYWtlSXRlcmF0
b3IoKml0KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEhhc2hUcmFuc2xhdG9yPgogICAgaW5saW5lIHR5cGVuYW1lIExpc3RIYXNoU2V0PFZhbHVl
VHlwZSwgaW5saW5lQ2FwYWNpdHksIFU+Ojpjb25zdF9pdGVyYXRvciBMaXN0SGFzaFNldDxWYWx1
ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBVPjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgY29uc3QKICAg
IHsKICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8VmFsdWVUeXBl
LCBpbmxpbmVDYXBhY2l0eSwgVCwgSGFzaFRyYW5zbGF0b3I+IEFkYXB0ZXI7CiAgICAgICAgSW1w
bFR5cGVDb25zdEl0ZXJhdG9yIGl0ID0gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8VCwgQWRhcHRlcj4o
dmFsdWUpOwogICAgICAgIGlmIChpdCA9PSBtX2ltcGwuZW5kKCkpCiAgICAgICAgICAgIHJldHVy
biBlbmQoKTsKICAgICAgICByZXR1cm4gbWFrZUNvbnN0SXRlcmF0b3IoKml0KTsKICAgIH0KCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlw
ZW5hbWUgVT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9y
PgogICAgaW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBpbmxpbmVDYXBhY2l0eSwg
VT46OmNvbnRhaW5zKGNvbnN0IFQmIHZhbHVlKSBjb25zdAogICAgewogICAgICAgIHR5cGVkZWYg
TGlzdEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBU
LCBIYXNoVHJhbnNsYXRvcj4gQWRhcHRlcjsKICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRl
IGNvbnRhaW5zPFQsIEFkYXB0ZXI+KHZhbHVlKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+CiAgICBpbmxpbmUgYm9vbCBM
aXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmNvbnRhaW5zKGNvbnN0IFZhbHVlVHlw
ZSYgdmFsdWUpIGNvbnN0CiAgICB7CiAgICAgICAgdHlwZWRlZiBMaXN0SGFzaFNldFRyYW5zbGF0
b3I8VmFsdWVUeXBlLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEZ1bmN0aW9ucz4gVHJhbnNsYXRvcjsK
ICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5zPFZhbHVlVHlwZSwgVHJhbnNs
YXRvcj4odmFsdWUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KICAgIHBhaXI8dHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwg
aW5saW5lQ2FwYWNpdHksIFU+OjppdGVyYXRvciwgYm9vbD4gTGlzdEhhc2hTZXQ8VCwgaW5saW5l
Q2FwYWNpdHksIFU+OjphZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSkKICAgIHsKICAgICAgICB0
eXBlZGVmIExpc3RIYXNoU2V0VHJhbnNsYXRvcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBI
YXNoRnVuY3Rpb25zPiBUcmFuc2xhdG9yOwogICAgICAgIHBhaXI8dHlwZW5hbWUgSW1wbFR5cGU6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPFZhbHVlVHlwZSwg
Tm9kZUFsbG9jYXRvciosIFRyYW5zbGF0b3I+KHZhbHVlLCBtX2FsbG9jYXRvci5nZXQoKSk7CiAg
ICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCiAgICAgICAgICAgIGFwcGVuZE5vZGUoKnJlc3VsdC5m
aXJzdCk7CiAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VJdGVyYXRvcigqcmVzdWx0
LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgogICAgcGFpcjx0eXBlbmFtZSBMaXN0
SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFzaFNl
dDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Omluc2VydEJlZm9yZShpdGVyYXRvciBpdCwgY29uc3Qg
VmFsdWVUeXBlJiBuZXdWYWx1ZSkKICAgIHsKICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0VHJh
bnNsYXRvcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBIYXNoRnVuY3Rpb25zPiBUcmFuc2xh
dG9yOwogICAgICAgIHBhaXI8dHlwZW5hbWUgSW1wbFR5cGU6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPFZhbHVlVHlwZSwgTm9kZUFsbG9jYXRvciosIFRyYW5z
bGF0b3I+KG5ld1ZhbHVlLCBtX2FsbG9jYXRvci5nZXQoKSk7CiAgICAgICAgaWYgKHJlc3VsdC5z
ZWNvbmQpCiAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUoaXQubm9kZSgpLCAqcmVzdWx0LmZp
cnN0KTsKICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFrZUl0ZXJhdG9yKCpyZXN1bHQu
Zmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKCiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgogICAgcGFpcjx0eXBlbmFtZSBMaXN0
SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFzaFNl
dDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJl
Zm9yZVZhbHVlLCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQogICAgewogICAgICAgIHJldHVy
biBpbnNlcnRCZWZvcmUoZmluZChiZWZvcmVWYWx1ZSksIG5ld1ZhbHVlKTsKICAgIH0KCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+CiAg
ICBpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OnJlbW92ZShp
dGVyYXRvciBpdCkKICAgIHsKICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCiAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICBtX2ltcGwucmVtb3ZlKGl0Lm5vZGUoKSk7CiAgICAgICAgdW5saW5rQW5k
RGVsZXRlKGl0Lm5vZGUoKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgogICAgaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8
VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKICAg
IHsKICAgICAgICByZW1vdmUoZmluZCh2YWx1ZSkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KICAgIGlubGluZSB2b2lk
IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6Y2xlYXIoKQogICAgewogICAgICAg
IGRlbGV0ZUFsbE5vZGVzKCk7CiAgICAgICAgbV9pbXBsLmNsZWFyKCk7CiAgICAgICAgbV9oZWFk
ID0gMDsKICAgICAgICBtX3RhaWwgPSAwOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KICAgIHZvaWQgTGlzdEhhc2hTZXQ8
VCwgaW5saW5lQ2FwYWNpdHksIFU+Ojp1bmxpbmtBbmREZWxldGUoTm9kZSogbm9kZSkKICAgIHsK
ICAgICAgICBpZiAoIW5vZGUtPm1fcHJldikgewogICAgICAgICAgICBkbyBpZiAoIShub2RlID09
IG1faGVhZCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9MaXN0SGFzaFNldC5oIiwgNjE3LCBfX1BSRVRUWV9GVU5DVElPTl9f
LCAibm9kZSA9PSBtX2hlYWQiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKiko
dWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxz
ZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBtX2hlYWQgPSBub2RlLT5tX25leHQ7CiAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgZG8gaWYgKCEobm9kZSAhPSBtX2hlYWQpKSB7IFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
TGlzdEhhc2hTZXQuaCIsIDYyMCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm5vZGUgIT0gbV9oZWFk
Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRi
ZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsK
ICAgICAgICAgICAgbm9kZS0+bV9wcmV2LT5tX25leHQgPSBub2RlLT5tX25leHQ7CiAgICAgICAg
fQoKICAgICAgICBpZiAoIW5vZGUtPm1fbmV4dCkgewogICAgICAgICAgICBkbyBpZiAoIShub2Rl
ID09IG1fdGFpbCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9MaXN0SGFzaFNldC5oIiwgNjI1LCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAibm9kZSA9PSBtX3RhaWwiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQg
KikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBtX3RhaWwgPSBub2RlLT5tX3ByZXY7CiAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZG8gaWYgKCEobm9kZSAhPSBtX3RhaWwpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvTGlzdEhhc2hTZXQuaCIsIDYyOCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm5vZGUgIT0gbV90
YWlsIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsKICAgICAgICAgICAgbm9kZS0+bV9uZXh0LT5tX3ByZXYgPSBub2RlLT5tX3ByZXY7CiAgICAg
ICAgfQoKICAgICAgICBub2RlLT5kZXN0cm95KG1fYWxsb2NhdG9yLmdldCgpKTsKICAgIH0KCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+
CiAgICB2b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6YXBwZW5kTm9kZShO
b2RlKiBub2RlKQogICAgewogICAgICAgIG5vZGUtPm1fcHJldiA9IG1fdGFpbDsKICAgICAgICBu
b2RlLT5tX25leHQgPSAwOwoKICAgICAgICBpZiAobV90YWlsKSB7CiAgICAgICAgICAgIGRvIGlm
ICghKG1faGVhZCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9MaXN0SGFzaFNldC5oIiwgNjQyLCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAibV9oZWFkIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsKICAgICAgICAgICAgbV90YWlsLT5tX25leHQgPSBub2RlOwogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgIGRvIGlmICghKCFtX2hlYWQpKSB7IFdURlJlcG9ydEFzc2VydGlv
bkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTGlzdEhhc2hTZXQu
aCIsIDY0NSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFtX2hlYWQiKTsgZG8geyBXVEZSZXBvcnRC
YWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKiko
KSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBtX2hlYWQg
PSBub2RlOwogICAgICAgIH0KCiAgICAgICAgbV90YWlsID0gbm9kZTsKICAgIH0KCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+CiAgICB2
b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aW5zZXJ0Tm9kZUJlZm9yZShO
b2RlKiBiZWZvcmVOb2RlLCBOb2RlKiBuZXdOb2RlKQogICAgewogICAgICAgIGlmICghYmVmb3Jl
Tm9kZSkKICAgICAgICAgICAgcmV0dXJuIGFwcGVuZE5vZGUobmV3Tm9kZSk7CgogICAgICAgIG5l
d05vZGUtPm1fbmV4dCA9IGJlZm9yZU5vZGU7CiAgICAgICAgbmV3Tm9kZS0+bV9wcmV2ID0gYmVm
b3JlTm9kZS0+bV9wcmV2OwogICAgICAgIGlmIChiZWZvcmVOb2RlLT5tX3ByZXYpCiAgICAgICAg
ICAgIGJlZm9yZU5vZGUtPm1fcHJldi0+bV9uZXh0ID0gbmV3Tm9kZTsKICAgICAgICBiZWZvcmVO
b2RlLT5tX3ByZXYgPSBuZXdOb2RlOwoKICAgICAgICBpZiAoIW5ld05vZGUtPm1fcHJldikKICAg
ICAgICAgICAgbV9oZWFkID0gbmV3Tm9kZTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+CiAgICB2b2lkIExpc3RIYXNoU2V0
PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6ZGVsZXRlQWxsTm9kZXMoKQogICAgewogICAgICAgIGlm
ICghbV9oZWFkKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvciAoTm9kZSogbm9kZSA9
IG1faGVhZCwgKm5leHQgPSBtX2hlYWQtPm1fbmV4dDsgbm9kZTsgbm9kZSA9IG5leHQsIG5leHQg
PSBub2RlID8gbm9kZS0+bV9uZXh0IDogMCkKICAgICAgICAgICAgbm9kZS0+ZGVzdHJveShtX2Fs
bG9jYXRvci5nZXQoKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgogICAgaW5saW5lIExpc3RIYXNoU2V0SXRlcmF0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIFU+IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6
bWFrZUl0ZXJhdG9yKE5vZGUqIHBvc2l0aW9uKQogICAgewogICAgICAgIHJldHVybiBMaXN0SGFz
aFNldEl0ZXJhdG9yPFQsIGlubGluZUNhcGFjaXR5LCBVPih0aGlzLCBwb3NpdGlvbik7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBVPgogICAgaW5saW5lIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxULCBpbmxpbmVDYXBhY2l0
eSwgVT4gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjptYWtlQ29uc3RJdGVyYXRv
cihOb2RlKiBwb3NpdGlvbikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gTGlzdEhhc2hTZXRD
b25zdEl0ZXJhdG9yPFQsIGlubGluZUNhcGFjaXR5LCBVPih0aGlzLCBwb3NpdGlvbik7CiAgICB9
CgogICAgdGVtcGxhdGU8Ym9vbCwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBIYXNoVGFi
bGVUeXBlPgogICAgdm9pZCBkZWxldGVBbGxWYWx1ZXMoSGFzaFRhYmxlVHlwZSYgY29sbGVjdGlv
bikKICAgIHsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXJhdG9yOwogICAgICAgIGl0ZXJhdG9yIGVuZCA9IGNvbGxlY3Rpb24uZW5kKCk7
CiAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQogICAgICAgICAgICBkZWxldGUgKCppdCktPm1fdmFsdWU7CiAgICB9CgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgogICAg
aW5saW5lIHZvaWQgZGVsZXRlQWxsVmFsdWVzKGNvbnN0IExpc3RIYXNoU2V0PFQsIGlubGluZUNh
cGFjaXR5LCBVPiYgY29sbGVjdGlvbikKICAgIHsKICAgICAgICBkZWxldGVBbGxWYWx1ZXM8dHJ1
ZSwgdHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpWYWx1ZVR5cGU+
KGNvbGxlY3Rpb24ubV9pbXBsKTsKICAgIH0KCn0KCnVzaW5nIFdURjo6TGlzdEhhc2hTZXQ7CiMg
MzYgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgiIDIKCgpuYW1lc3BhY2UgSlND
IHsKICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgIGNsYXNzIFNsb3RWaXNpdG9yOwp9CgoKbmFt
ZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgQXR0cmlidXRlOwpjbGFzcyBDbGFzc05vZGVMaXN0Owpj
bGFzcyBDb250YWluZXJOb2RlOwpjbGFzcyBEb2N1bWVudDsKY2xhc3MgRHluYW1pY05vZGVMaXN0
OwpjbGFzcyBFbGVtZW50OwpjbGFzcyBFdmVudDsKY2xhc3MgRXZlbnRDb250ZXh0OwpjbGFzcyBF
dmVudERpc3BhdGNoTWVkaWF0b3I7CmNsYXNzIEV2ZW50TGlzdGVuZXI7CmNsYXNzIEZsb2F0UG9p
bnQ7CmNsYXNzIEZyYW1lOwpjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwpjbGFzcyBJbnRSZWN0Owpj
bGFzcyBLZXlib2FyZEV2ZW50OwpjbGFzcyBOU1Jlc29sdmVyOwpjbGFzcyBOYW1lZE5vZGVNYXA7
CmNsYXNzIE5hbWVOb2RlTGlzdDsKY2xhc3MgTm9kZUxpc3Q7CmNsYXNzIE5vZGVSYXJlRGF0YTsK
Y2xhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQ7CmNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsK
Y2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwpjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CmNsYXNz
IFF1YWxpZmllZE5hbWU7CmNsYXNzIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyOwpjbGFzcyBSZW5k
ZXJBcmVuYTsKY2xhc3MgUmVuZGVyQm94OwpjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKY2xh
c3MgUmVuZGVyT2JqZWN0OwpjbGFzcyBSZW5kZXJTdHlsZTsKCmNsYXNzIFNWR1VzZUVsZW1lbnQ7
CgpjbGFzcyBUYWdOb2RlTGlzdDsKY2xhc3MgVHJlZVNjb3BlOwoKdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKCmNvbnN0IGludCBub2RlU3R5bGVDaGFuZ2VTaGlmdCA9IDI1OwoKCgoKZW51bSBT
dHlsZUNoYW5nZVR5cGUgewogICAgTm9TdHlsZUNoYW5nZSA9IDAsCiAgICBJbmxpbmVTdHlsZUNo
YW5nZSA9IDEgPDwgbm9kZVN0eWxlQ2hhbmdlU2hpZnQsCiAgICBGdWxsU3R5bGVDaGFuZ2UgPSAy
IDw8IG5vZGVTdHlsZUNoYW5nZVNoaWZ0LAogICAgU3ludGhldGljU3R5bGVDaGFuZ2UgPSAzIDw8
IG5vZGVTdHlsZUNoYW5nZVNoaWZ0Cn07CgpjbGFzcyBOb2RlIDogcHVibGljIEV2ZW50VGFyZ2V0
LCBwdWJsaWMgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJs
ZSB7CiAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CiAgICBmcmllbmQgY2xhc3MgVHJlZVNjb3Bl
OwoKcHVibGljOgogICAgZW51bSBOb2RlVHlwZSB7CiAgICAgICAgRUxFTUVOVF9OT0RFID0gMSwK
ICAgICAgICBBVFRSSUJVVEVfTk9ERSA9IDIsCiAgICAgICAgVEVYVF9OT0RFID0gMywKICAgICAg
ICBDREFUQV9TRUNUSU9OX05PREUgPSA0LAogICAgICAgIEVOVElUWV9SRUZFUkVOQ0VfTk9ERSA9
IDUsCiAgICAgICAgRU5USVRZX05PREUgPSA2LAogICAgICAgIFBST0NFU1NJTkdfSU5TVFJVQ1RJ
T05fTk9ERSA9IDcsCiAgICAgICAgQ09NTUVOVF9OT0RFID0gOCwKICAgICAgICBET0NVTUVOVF9O
T0RFID0gOSwKICAgICAgICBET0NVTUVOVF9UWVBFX05PREUgPSAxMCwKICAgICAgICBET0NVTUVO
VF9GUkFHTUVOVF9OT0RFID0gMTEsCiAgICAgICAgTk9UQVRJT05fTk9ERSA9IDEyLAogICAgICAg
IFhQQVRIX05BTUVTUEFDRV9OT0RFID0gMTMsCiAgICAgICAgU0hBRE9XX1JPT1RfTk9ERSA9IDE0
CiAgICB9OwogICAgZW51bSBEb2N1bWVudFBvc2l0aW9uIHsKICAgICAgICBET0NVTUVOVF9QT1NJ
VElPTl9FUVVJVkFMRU5UID0gMHgwMCwKICAgICAgICBET0NVTUVOVF9QT1NJVElPTl9ESVNDT05O
RUNURUQgPSAweDAxLAogICAgICAgIERPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORyA9IDB4MDIs
CiAgICAgICAgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HID0gMHgwNCwKICAgICAgICBET0NV
TUVOVF9QT1NJVElPTl9DT05UQUlOUyA9IDB4MDgsCiAgICAgICAgRE9DVU1FTlRfUE9TSVRJT05f
Q09OVEFJTkVEX0JZID0gMHgxMCwKICAgICAgICBET0NVTUVOVF9QT1NJVElPTl9JTVBMRU1FTlRB
VElPTl9TUEVDSUZJQyA9IDB4MjAsCiAgICB9OwoKICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVk
KGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKCiAgICBzdGF0
aWMgdm9pZCBzdGFydElnbm9yaW5nTGVha3MoKTsKICAgIHN0YXRpYyB2b2lkIHN0b3BJZ25vcmlu
Z0xlYWtzKCk7CgogICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKCiAgICBlbnVtIFN0
eWxlQ2hhbmdlIHsgTm9DaGFuZ2UsIE5vSW5oZXJpdCwgSW5oZXJpdCwgRGV0YWNoLCBGb3JjZSB9
OwogICAgc3RhdGljIFN0eWxlQ2hhbmdlIGRpZmYoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBS
ZW5kZXJTdHlsZSopOwoKICAgIHZpcnR1YWwgfk5vZGUoKTsKCgoKICAgIGJvb2wgaGFzVGFnTmFt
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICBib29sIGhhc0xvY2FsTmFtZShjb25z
dCBBdG9taWNTdHJpbmcmKSBjb25zdDsKICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29u
c3QgPSAwOwogICAgdmlydHVhbCBTdHJpbmcgbm9kZVZhbHVlKCkgY29uc3Q7CiAgICB2aXJ0dWFs
IHZvaWQgc2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgIHZp
cnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCA9IDA7CiAgICBDb250YWluZXJOb2RlKiBw
YXJlbnROb2RlKCkgY29uc3Q7CiAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50KCkgY29uc3Q7CiAg
ICBOb2RlKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzOyB9CiAg
ICBOb2RlKiBuZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQogICAgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gY2hpbGROb2RlcygpOwogICAgTm9kZSogZmlyc3RDaGlsZCgpIGNvbnN0
OwogICAgTm9kZSogbGFzdENoaWxkKCkgY29uc3Q7CiAgICBib29sIGhhc0F0dHJpYnV0ZXMoKSBj
b25zdDsKICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcygpIGNvbnN0OwoKICAgIHZpcnR1YWwg
S1VSTCBiYXNlVVJJKCkgY29uc3Q7CgogICAgdm9pZCBnZXRTdWJyZXNvdXJjZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mKSBjb25zdDsKCgoKCiAgICBib29sIGluc2VydEJlZm9yZShQYXNzUmVmUHRy
PE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZXB0aW9uQ29kZSYsIGJvb2wgc2hv
dWxkTGF6eUF0dGFjaCA9IGZhbHNlKTsKICAgIGJvb2wgcmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8
Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiwgYm9vbCBzaG91
bGRMYXp5QXR0YWNoID0gZmFsc2UpOwogICAgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBjaGlsZCwg
RXhjZXB0aW9uQ29kZSYpOwogICAgYm9vbCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5l
d0NoaWxkLCBFeGNlcHRpb25Db2RlJiwgYm9vbCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2UpOwoK
ICAgIHZvaWQgcmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKTsKICAgIGJvb2wgaGFzQ2hpbGROb2Rlcygp
IGNvbnN0IHsgcmV0dXJuIGZpcnN0Q2hpbGQoKTsgfQogICAgdmlydHVhbCBQYXNzUmVmUHRyPE5v
ZGU+IGNsb25lTm9kZShib29sIGRlZXApID0gMDsKICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxOYW1lKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbExvY2FsTmFtZSgpOyB9CiAgICBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSgpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxOYW1lc3Bh
Y2VVUkkoKTsgfQogICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgoKSBjb25zdCB7IHJldHVy
biB2aXJ0dWFsUHJlZml4KCk7IH0KICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmaXgoY29uc3QgQXRv
bWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgdm9pZCBub3JtYWxpemUoKTsKCiAgICBi
b29sIGlzU2FtZU5vZGUoTm9kZSogb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHRoaXMgPT0gb3RoZXI7
IH0KICAgIGJvb2wgaXNFcXVhbE5vZGUoTm9kZSopIGNvbnN0OwogICAgYm9vbCBpc0RlZmF1bHRO
YW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpIGNvbnN0OwogICAgU3Ry
aW5nIGxvb2t1cFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkgY29uc3Q7
CiAgICBTdHJpbmcgbG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KSBjb25z
dDsKICAgIFN0cmluZyBsb29rdXBOYW1lc3BhY2VQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IEVsZW1lbnQqIG9yaWdpbmFsRWxlbWVudCkgY29uc3Q7CgogICAg
U3RyaW5nIHRleHRDb250ZW50KGJvb2wgY29udmVydEJSc1RvTmV3bGluZXMgPSBmYWxzZSkgY29u
c3Q7CiAgICB2b2lkIHNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKCiAgICBOb2RlKiBsYXN0RGVzY2VuZGFudCgpIGNvbnN0OwogICAgTm9kZSogZmlyc3REZXNj
ZW5kYW50KCkgY29uc3Q7CgoKCiAgICBib29sIGlzRWxlbWVudE5vZGUoKSBjb25zdCB7IHJldHVy
biBnZXRGbGFnKElzRWxlbWVudEZsYWcpOyB9CiAgICBib29sIGlzQ29udGFpbmVyTm9kZSgpIGNv
bnN0IHsgcmV0dXJuIGdldEZsYWcoSXNDb250YWluZXJGbGFnKTsgfQogICAgYm9vbCBpc1RleHRO
b2RlKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1RleHRGbGFnKTsgfQoKICAgIGJvb2wgaXNI
VE1MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNIVE1MRmxhZyk7IH0KCiAgICBi
b29sIGlzU1ZHRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTVkdGbGFnKTsgfQog
ICAgdmlydHVhbCBib29sIGlzU1ZHU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CgogICAgU1ZHVXNlRWxlbWVudCogc3ZnU2hhZG93SG9zdCgpIGNvbnN0OwoKCiAgICB2aXJ0dWFs
IGJvb2wgaXNNZWRpYUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
IHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgYm9vbCBpc1N0eWxlZEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzU3R5bGVk
RWxlbWVudEZsYWcpOyB9CiAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZU93bmVyRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICB2aXJ0dWFsIGJvb2wgaXNBdHRyaWJ1dGVOb2RlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgIGJvb2wgaXNDb21tZW50Tm9kZSgpIGNvbnN0IHsg
cmV0dXJuIGdldEZsYWcoSXNDb21tZW50RmxhZyk7IH0KICAgIHZpcnR1YWwgYm9vbCBpc0NoYXJh
Y3RlckRhdGFOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgIGJvb2wgaXNEb2N1bWVu
dE5vZGUoKSBjb25zdDsKICAgIGJvb2wgaXNTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gZ2V0
RmxhZyhJc1NoYWRvd1Jvb3RGbGFnKTsgfQogICAgdmlydHVhbCBib29sIGlzQ29udGVudEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgdmlydHVhbCBib29sIGNhbkhhdmVMaWdo
dENoaWxkUmVuZGVyZXJXaXRoU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KCiAgICBO
b2RlKiBzaGFkb3dBbmNlc3Rvck5vZGUoKSBjb25zdDsKCiAgICBOb2RlKiBzaGFkb3dUcmVlUm9v
dE5vZGUoKSBjb25zdDsKCiAgICBOb2RlKiBub25Cb3VuZGFyeVNoYWRvd1RyZWVSb290Tm9kZSgp
OwogICAgYm9vbCBpc0luU2hhZG93VHJlZSgpOwoKICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9y
SG9zdE5vZGUoKSBjb25zdDsKICAgIEVsZW1lbnQqIHBhcmVudE9ySG9zdEVsZW1lbnQoKSBjb25z
dDsKCiAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCkgY29u
c3Q7CgogICAgQ29udGFpbmVyTm9kZSogbm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCkgY29u
c3Q7CgogICAgRWxlbWVudCogc2hhZG93SG9zdCgpIGNvbnN0OwogICAgdm9pZCBzZXRTaGFkb3dI
b3N0KEVsZW1lbnQqKTsKCiAgICBib29sIHNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0
ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZyk7
IH0KICAgIHZvaWQgc2V0U2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGJvb2wgZmxh
ZykgeyBzZXRGbGFnKGZsYWcsIFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0ZsYWcpOyB9CgoKICAg
IE5vZGUqIGVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2VsZigpOwoKICAgIGJvb2wgaXNCbG9j
a0Zsb3coKSBjb25zdDsKICAgIGJvb2wgaXNCbG9ja0Zsb3dPckJsb2NrVGFibGUoKSBjb25zdDsK
CgogICAgdm9pZCBzZXRQcmV2aW91c1NpYmxpbmcoTm9kZSogcHJldmlvdXMpIHsgbV9wcmV2aW91
cyA9IHByZXZpb3VzOyB9CiAgICB2b2lkIHNldE5leHRTaWJsaW5nKE5vZGUqIG5leHQpIHsgbV9u
ZXh0ID0gbmV4dDsgfQoKICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CgoKICAgIE5vZGUqIHByZXZpb3VzTm9kZUNvbnNpZGVy
aW5nQXRvbWljTm9kZXMoKSBjb25zdDsKICAgIE5vZGUqIG5leHROb2RlQ29uc2lkZXJpbmdBdG9t
aWNOb2RlcygpIGNvbnN0OwoKCgoKCiAgICBOb2RlKiBuZXh0TGVhZk5vZGUoKSBjb25zdDsKCgoK
CgogICAgTm9kZSogcHJldmlvdXNMZWFmTm9kZSgpIGNvbnN0OwoKCiAgICBFbGVtZW50KiBlbmNs
b3NpbmdCbG9ja0Zsb3dFbGVtZW50KCkgY29uc3Q7CgogICAgRWxlbWVudCogcm9vdEVkaXRhYmxl
RWxlbWVudCgpIGNvbnN0OwoKICAgIGJvb2wgaW5TYW1lQ29udGFpbmluZ0Jsb2NrRmxvd0VsZW1l
bnQoTm9kZSopOwoKCgoKCgoKICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4o
KSB7IH0KICAgIHZpcnR1YWwgdm9pZCBiZWdpblBhcnNpbmdDaGlsZHJlbigpIHsgfQoKCiAgICB2
aXJ0dWFsIHZvaWQgYWJvdXRUb1VubG9hZCgpIHsgfQoKCiAgICB2aXJ0dWFsIGJvb2wgc2hlZXRM
b2FkZWQoKSB7IHJldHVybiB0cnVlOyB9CiAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5nRHlu
YW1pY1NoZWV0KCkgeyBkbyB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgiLCAyODcsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIDApOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IH0KCiAg
ICBib29sIGhhc0lEKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNJREZsYWcpOyB9CiAgICBi
b29sIGhhc0NsYXNzKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNDbGFzc0ZsYWcpOyB9CiAg
ICBib29sIGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNBY3RpdmVGbGFnKTsgfQog
ICAgYm9vbCBpbkFjdGl2ZUNoYWluKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJbkFjdGl2ZUNo
YWluRmxhZyk7IH0KICAgIGJvb2wgaW5EZXRhY2goKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElu
RGV0YWNoRmxhZyk7IH0KICAgIGJvb2wgaG92ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWco
SXNIb3ZlcmVkRmxhZyk7IH0KICAgIGJvb2wgZm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1Jh
cmVEYXRhKCkgPyByYXJlRGF0YUZvY3VzZWQoKSA6IGZhbHNlOyB9CiAgICBib29sIGF0dGFjaGVk
KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0F0dGFjaGVkRmxhZyk7IH0KICAgIHZvaWQgc2V0
QXR0YWNoZWQoKSB7IHNldEZsYWcoSXNBdHRhY2hlZEZsYWcpOyB9CiAgICBib29sIG5lZWRzU3R5
bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBzdHlsZUNoYW5nZVR5cGUoKSAhPSBOb1N0eWxlQ2hh
bmdlOyB9CiAgICBTdHlsZUNoYW5nZVR5cGUgc3R5bGVDaGFuZ2VUeXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8U3R5bGVDaGFuZ2VUeXBlPihtX25vZGVGbGFncyAmIFN0eWxlQ2hhbmdl
TWFzayk7IH0KICAgIGJvb2wgY2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgY29uc3QgeyByZXR1cm4g
Z2V0RmxhZyhDaGlsZE5lZWRzU3R5bGVSZWNhbGNGbGFnKTsgfQogICAgYm9vbCBpc0xpbmsoKSBj
b25zdCB7IHJldHVybiBnZXRGbGFnKElzTGlua0ZsYWcpOyB9CgogICAgdm9pZCBzZXRIYXNJRChi
b29sIGYpIHsgc2V0RmxhZyhmLCBIYXNJREZsYWcpOyB9CiAgICB2b2lkIHNldEhhc0NsYXNzKGJv
b2wgZikgeyBzZXRGbGFnKGYsIEhhc0NsYXNzRmxhZyk7IH0KICAgIHZvaWQgc2V0Q2hpbGROZWVk
c1N0eWxlUmVjYWxjKCkgeyBzZXRGbGFnKENoaWxkTmVlZHNTdHlsZVJlY2FsY0ZsYWcpOyB9CiAg
ICB2b2lkIGNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgeyBjbGVhckZsYWcoQ2hpbGROZWVk
c1N0eWxlUmVjYWxjRmxhZyk7IH0KICAgIHZvaWQgc2V0SW5Eb2N1bWVudCgpIHsgc2V0RmxhZyhJ
bkRvY3VtZW50RmxhZyk7IH0KICAgIHZvaWQgY2xlYXJJbkRvY3VtZW50KCkgeyBjbGVhckZsYWco
SW5Eb2N1bWVudEZsYWcpOyB9CgogICAgdm9pZCBzZXRJbkFjdGl2ZUNoYWluKCkgeyBzZXRGbGFn
KEluQWN0aXZlQ2hhaW5GbGFnKTsgfQogICAgdm9pZCBjbGVhckluQWN0aXZlQ2hhaW4oKSB7IGNs
ZWFyRmxhZyhJbkFjdGl2ZUNoYWluRmxhZyk7IH0KCiAgICB2b2lkIHNldE5lZWRzU3R5bGVSZWNh
bGMoU3R5bGVDaGFuZ2VUeXBlIGNoYW5nZVR5cGUgPSBGdWxsU3R5bGVDaGFuZ2UpOwogICAgdm9p
ZCBjbGVhck5lZWRzU3R5bGVSZWNhbGMoKSB7IG1fbm9kZUZsYWdzICY9IH5TdHlsZUNoYW5nZU1h
c2s7IH0KICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVNldE5lZWRzU3R5bGVSZWNhbGMoU3R5bGVD
aGFuZ2VUeXBlIGNoYW5nZVR5cGUgPSBGdWxsU3R5bGVDaGFuZ2UpIHsgc2V0TmVlZHNTdHlsZVJl
Y2FsYyhjaGFuZ2VUeXBlKTsgfQoKICAgIHZvaWQgc2V0SXNMaW5rKGJvb2wgZikgeyBzZXRGbGFn
KGYsIElzTGlua0ZsYWcpOyB9CiAgICB2b2lkIHNldElzTGluaygpIHsgc2V0RmxhZyhJc0xpbmtG
bGFnKTsgfQogICAgdm9pZCBjbGVhcklzTGluaygpIHsgY2xlYXJGbGFnKElzTGlua0ZsYWcpOyB9
CgogICAgZW51bSBTaG91bGRTZXRBdHRhY2hlZCB7CiAgICAgICAgU2V0QXR0YWNoZWQsCiAgICAg
ICAgRG9Ob3RTZXRBdHRhY2hlZAogICAgfTsKICAgIHZvaWQgbGF6eUF0dGFjaChTaG91bGRTZXRB
dHRhY2hlZCA9IFNldEF0dGFjaGVkKTsKCiAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCA9
IHRydWUpOwogICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sIGYgPSB0cnVlLCBib29sID0g
ZmFsc2UpIHsgc2V0RmxhZyhmLCBJc0FjdGl2ZUZsYWcpOyB9CiAgICB2aXJ0dWFsIHZvaWQgc2V0
SG92ZXJlZChib29sIGYgPSB0cnVlKSB7IHNldEZsYWcoZiwgSXNIb3ZlcmVkRmxhZyk7IH0KCiAg
ICB2aXJ0dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3Q7CgoKCiAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNGb2N1cygpIGNvbnN0OwoKICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZSgpIGNvbnN0
OwogICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNv
bnN0OwogICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdDsKICAgIHZpcnR1
YWwgTm9kZSogZm9jdXNEZWxlZ2F0ZSgpOwoKICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKTsK
CiAgICBib29sIHJlbmRlcmVySXNFZGl0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVySXNF
ZGl0YWJsZShFZGl0YWJsZSk7IH0KICAgIGJvb2wgcmVuZGVyZXJJc1JpY2hseUVkaXRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gcmVuZGVyZXJJc0VkaXRhYmxlKFJpY2hseUVkaXRhYmxlKTsgfQogICAg
dmlydHVhbCBib29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCk7CiAgICB2aXJ0dWFsIExheW91dFJl
Y3QgZ2V0UmVjdCgpIGNvbnN0OwogICAgTGF5b3V0UmVjdCByZW5kZXJSZWN0KGJvb2wqIGlzUmVw
bGFjZWQpOwoKCgoKICAgIGJvb2wgaGFzTm9uRW1wdHlCb3VuZGluZ0JveCgpIGNvbnN0OwoKICAg
IHVuc2lnbmVkIG5vZGVJbmRleCgpIGNvbnN0OwoKCgogICAgRG9jdW1lbnQqIG93bmVyRG9jdW1l
bnQoKSBjb25zdDsKCgoKICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0CiAgICB7CiAgICAg
ICAgZG8gaWYgKCEodGhpcykpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCIsIDM2NSwgX19QUkVUVFlfRlVOQ1RJT05fXywgInRo
aXMiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwoKCiAgICAgICAgZG8gaWYgKCEobV9kb2N1bWVudCB8fCAobm9kZVR5cGUoKSA9PSBET0NVTUVO
VF9UWVBFX05PREUgJiYgIWluRG9jdW1lbnQoKSkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmUoIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgiLCAzNjgsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJtX2RvY3VtZW50IHx8IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9E
RSAmJiAhaW5Eb2N1bWVudCgpKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZh
bHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7CiAgICB9CgogICAg
VHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdDsKCgogICAgdm9pZCBzZXRUcmVlU2NvcGVSZWN1
cnNpdmVseShUcmVlU2NvcGUqLCBib29sIGluY2x1ZGVSb290ID0gdHJ1ZSk7CgoKCiAgICBib29s
IGluRG9jdW1lbnQoKSBjb25zdAogICAgewogICAgICAgIGRvIGlmICghKG1fZG9jdW1lbnQgfHwg
IWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIu
Li8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIiwgMzgxLCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAibV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50RmxhZykiKTsgZG8geyBXVEZS
ZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZv
aWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVy
biBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgIH0KCiAgICBib29sIGlzUmVhZE9ubHlOb2Rl
KCkgY29uc3QgeyByZXR1cm4gbm9kZVR5cGUoKSA9PSBFTlRJVFlfUkVGRVJFTkNFX05PREU7IH0K
ICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgdW5zaWduZWQgY2hpbGROb2RlQ291bnQoKSBjb25zdDsKICAgIE5vZGUq
IGNoaWxkTm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CgoKCgoKICAgIE5vZGUqIHRyYXZlcnNl
TmV4dE5vZGUoY29uc3QgTm9kZSogc3RheVdpdGhpbiA9IDApIGNvbnN0OwoKCiAgICBOb2RlKiB0
cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4gPSAwKSBjb25zdDsKCgog
ICAgTm9kZSogdHJhdmVyc2VQcmV2aW91c05vZGUoY29uc3QgTm9kZSogc3RheVdpdGhpbiA9IDAp
IGNvbnN0OwoKCiAgICBOb2RlKiB0cmF2ZXJzZU5leHROb2RlUG9zdE9yZGVyKCkgY29uc3Q7CgoK
ICAgIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVyKGNvbnN0IE5vZGUqIHN0YXlX
aXRoaW4gPSAwKSBjb25zdDsKICAgIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nUG9zdE9y
ZGVyKGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4gPSAwKSBjb25zdDsKCiAgICB2b2lkIGNoZWNrU2V0
UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJik7CiAgICBi
b29sIGlzRGVzY2VuZGFudE9mKGNvbnN0IE5vZGUqKSBjb25zdDsKICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgTm9kZSopIGNvbnN0OwogICAgYm9vbCBjb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShO
b2RlKik7CgoKCiAgICB2b2lkIGNoZWNrQWRkQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIEV4Y2VwdGlv
bkNvZGUmKTsKCiAgICB2b2lkIGNoZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2Rl
KiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgdmlydHVhbCBib29sIGNhblJlcGxhY2VD
aGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQpOwoKCiAgICB2aXJ0dWFsIGJvb2wg
b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgY29uc3Q7CgoKICAgIHZpcnR1YWwgaW50IG1heENoYXJhY3Rl
ck9mZnNldCgpIGNvbnN0OwoKCiAgICB2aXJ0dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBj
b25zdDsKCgogICAgRmxvYXRQb2ludCBjb252ZXJ0VG9QYWdlKGNvbnN0IEZsb2F0UG9pbnQmKSBj
b25zdDsKICAgIEZsb2F0UG9pbnQgY29udmVydEZyb21QYWdlKGNvbnN0IEZsb2F0UG9pbnQmKSBj
b25zdDsKCgoKCiAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJlcjsgfQogICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSB7
IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQoKCiAgICBSZW5kZXJCb3gqIHJlbmRlckJveCgpIGNv
bnN0OwogICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlckJveE1vZGVsT2JqZWN0KCkgY29u
c3Q7CgoKCgogICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwoKCgogICAgdmlydHVhbCB2b2lkIGRl
dGFjaCgpOwoKICAgIHZvaWQgcmVhdHRhY2goKTsKICAgIHZvaWQgcmVhdHRhY2hJZkF0dGFjaGVk
KCk7CgogICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKICAgIHZvaWQgY3JlYXRlUmVuZGVy
ZXJJZk5lZWRlZCgpOwogICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKE5vZGUqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgQ29u
dGFpbmVyTm9kZSogcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7CgoKICAgIFJlbmRl
clN0eWxlKiByZW5kZXJTdHlsZSgpIGNvbnN0OwogICAgdmlydHVhbCB2b2lkIHNldFJlbmRlclN0
eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKCiAgICBSZW5kZXJTdHlsZSogY29tcHV0ZWRT
dHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyID0gTk9QU0VVRE8pIHsgcmV0dXJu
IHZpcnR1YWxDb21wdXRlZFN0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOyB9CiMgNDc5ICIu
Li8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIgogICAgdmlydHVhbCB2b2lkIGluc2Vy
dGVkSW50b0RvY3VtZW50KCk7CgoKCgoKCiAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1
bWVudCgpOwoKCgoKICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKGJvb2wgKSB7IH0K
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbVRyZWUoYm9vbCApIHsgfQoKCgogICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sID0gZmFsc2UsIE5vZGUqID0gMCwgTm9kZSogPSAw
LCBpbnQgPSAwKSB7IH0KCgogICAgdmlydHVhbCB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIq
IGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKCiAgICB2b2lkIHNob3dOb2RlKGNvbnN0
IGNoYXIqIHByZWZpeCA9ICIiKSBjb25zdDsKICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzKCkgY29u
c3Q7CiAgICB2b2lkIHNob3dUcmVlQW5kTWFyayhjb25zdCBOb2RlKiBtYXJrZWROb2RlMSwgY29u
c3QgY2hhciogbWFya2VkTGFiZWwxLCBjb25zdCBOb2RlKiBtYXJrZWROb2RlMiA9IDAsIGNvbnN0
IGNoYXIqIG1hcmtlZExhYmVsMiA9IDApIGNvbnN0OwogICAgdm9pZCBzaG93VHJlZUZvclRoaXNB
Y3Jvc3NGcmFtZSgpIGNvbnN0OwoKCiAgICB2b2lkIHJlbW92ZU5vZGVMaXN0Q2FjaGVJZlBvc3Np
YmxlKCk7CiAgICB2b2lkIHJlZ2lzdGVyRHluYW1pY05vZGVMaXN0KER5bmFtaWNOb2RlTGlzdCop
OwogICAgdm9pZCB1bnJlZ2lzdGVyRHluYW1pY05vZGVMaXN0KER5bmFtaWNOb2RlTGlzdCopOwog
ICAgdm9pZCBub3RpZnlOb2RlTGlzdHNDaGlsZHJlbkNoYW5nZWQoKTsKICAgIHZvaWQgbm90aWZ5
TG9jYWxOb2RlTGlzdHNDaGlsZHJlbkNoYW5nZWQoKTsKICAgIHZvaWQgbm90aWZ5Tm9kZUxpc3Rz
QXR0cmlidXRlQ2hhbmdlZCgpOwogICAgdm9pZCBub3RpZnlMb2NhbE5vZGVMaXN0c0F0dHJpYnV0
ZUNoYW5nZWQoKTsKICAgIHZvaWQgbm90aWZ5TG9jYWxOb2RlTGlzdHNMYWJlbENoYW5nZWQoKTsK
ICAgIHZvaWQgcmVtb3ZlQ2FjaGVkQ2xhc3NOb2RlTGlzdChDbGFzc05vZGVMaXN0KiwgY29uc3Qg
U3RyaW5nJik7CiAgICB2b2lkIHJlbW92ZUNhY2hlZE5hbWVOb2RlTGlzdChOYW1lTm9kZUxpc3Qq
LCBjb25zdCBTdHJpbmcmKTsKICAgIHZvaWQgcmVtb3ZlQ2FjaGVkVGFnTm9kZUxpc3QoVGFnTm9k
ZUxpc3QqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgIHZvaWQgcmVtb3ZlQ2FjaGVkVGFnTm9k
ZUxpc3QoVGFnTm9kZUxpc3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICB2b2lkIHJlbW92
ZUNhY2hlZExhYmVsc05vZGVMaXN0KER5bmFtaWNOb2RlTGlzdCopOwoKICAgIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAg
UGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpOwogICAg
UGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeU5hbWUoY29uc3QgU3RyaW5nJiBlbGVt
ZW50TmFtZSk7CiAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lcyk7CgogICAgUGFzc1JlZlB0cjxFbGVtZW50PiBxdWVy
eVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJik7CiAgICBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiBxdWVyeVNlbGVjdG9yQWxsKGNvbnN0IFN0cmluZyYgc2VsZWN0
b3JzLCBFeGNlcHRpb25Db2RlJik7CgogICAgdW5zaWduZWQgc2hvcnQgY29tcGFyZURvY3VtZW50
UG9zaXRpb24oTm9kZSopOwoKICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgeyByZXR1cm4gdGhp
czsgfQoKICAgIHZpcnR1YWwgSFRNTElucHV0RWxlbWVudCogdG9JbnB1dEVsZW1lbnQoKTsKCiAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdDsKCiAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0
dXJlKTsKICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKCgoKICAg
IHZpcnR1YWwgdm9pZCogcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqKSB7IHJldHVybiAw
OyB9CiAgICB2aXJ0dWFsIHZvaWQgcG9zdERpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50Kiwgdm9p
ZCogKSB7IH0KCiAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKICAgIGJvb2wg
ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICB2b2lkIGRpc3BhdGNoU2NvcGVk
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgdm9pZCBkaXNwYXRjaFNjb3BlZEV2ZW50RGlz
cGF0Y2hNZWRpYXRvcihQYXNzUmVmUHRyPEV2ZW50RGlzcGF0Y2hNZWRpYXRvcj4pOwoKICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCopOwoKICAgIHZvaWQgZGlzcGF0Y2hT
dWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogICAgdm9pZCBkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQo
aW50IGRldGFpbCwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50KTsKICAgIHZvaWQg
ZGlzcGF0Y2hGb2N1c0luRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NS
ZWZQdHI8Tm9kZT4gb2xkRm9jdXNlZE5vZGUpOwogICAgdm9pZCBkaXNwYXRjaEZvY3VzT3V0RXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8Tm9kZT4gbmV3Rm9j
dXNlZE5vZGUpOwoKICAgIGJvb2wgZGlzcGF0Y2hLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQmKTsKICAgIGJvb2wgZGlzcGF0Y2hXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpOwogICAgYm9vbCBkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGludCBjbGlja0NvdW50ID0g
MCwgTm9kZSogcmVsYXRlZFRhcmdldCA9IDApOwogICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENs
aWNrKFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCwgYm9vbCBzZW5kTW91c2VFdmVu
dHMgPSBmYWxzZSwgYm9vbCBzaG93UHJlc3NlZExvb2sgPSB0cnVlKTsKCiAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hGb2N1c0V2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gb2xkRm9jdXNlZE5vZGUpOwog
ICAgdmlydHVhbCB2b2lkIHdpbGxCbHVyKCk7CiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVy
RXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBuZXdGb2N1c2VkTm9kZSk7CiAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hDaGFuZ2VFdmVudCgpOwogICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW5wdXRFdmVu
dCgpOwoKCiAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwoKCgog
ICAgdmlydHVhbCBib29sIGRpc2FibGVkKCkgY29uc3Q7CgogICAgdXNpbmcgVHJlZVNoYXJlZDxD
b250YWluZXJOb2RlPjo6cmVmOwogICAgdXNpbmcgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6
ZGVyZWY7CgogICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwog
ICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwoKcHJp
dmF0ZToKICAgIGVudW0gTm9kZUZsYWdzIHsKICAgICAgICBJc1RleHRGbGFnID0gMSwKICAgICAg
ICBJc0NvbW1lbnRGbGFnID0gMSA8PCAxLAogICAgICAgIElzQ29udGFpbmVyRmxhZyA9IDEgPDwg
MiwKICAgICAgICBJc0VsZW1lbnRGbGFnID0gMSA8PCAzLAogICAgICAgIElzU3R5bGVkRWxlbWVu
dEZsYWcgPSAxIDw8IDQsCiAgICAgICAgSXNIVE1MRmxhZyA9IDEgPDwgNSwKICAgICAgICBJc1NW
R0ZsYWcgPSAxIDw8IDYsCiAgICAgICAgSGFzSURGbGFnID0gMSA8PCA3LAogICAgICAgIEhhc0Ns
YXNzRmxhZyA9IDEgPDwgOCwKICAgICAgICBJc0F0dGFjaGVkRmxhZyA9IDEgPDwgOSwKICAgICAg
ICBDaGlsZE5lZWRzU3R5bGVSZWNhbGNGbGFnID0gMSA8PCAxMCwKICAgICAgICBJbkRvY3VtZW50
RmxhZyA9IDEgPDwgMTEsCiAgICAgICAgSXNMaW5rRmxhZyA9IDEgPDwgMTIsCiAgICAgICAgSXNB
Y3RpdmVGbGFnID0gMSA8PCAxMywKICAgICAgICBJc0hvdmVyZWRGbGFnID0gMSA8PCAxNCwKICAg
ICAgICBJbkFjdGl2ZUNoYWluRmxhZyA9IDEgPDwgMTUsCiAgICAgICAgSW5EZXRhY2hGbGFnID0g
MSA8PCAxNiwKICAgICAgICBIYXNSYXJlRGF0YUZsYWcgPSAxIDw8IDE3LAogICAgICAgIElzU2hh
ZG93Um9vdEZsYWcgPSAxIDw8IDE4LAoKCgogICAgICAgIElzUGFyc2luZ0NoaWxkcmVuRmluaXNo
ZWRGbGFnID0gMSA8PCAxOSwKICAgICAgICBJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnID0gMSA8
PCAyMCwKICAgICAgICBJc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZUZsYWcgPSAxIDw8IDIx
LAoKICAgICAgICBBcmVTVkdBdHRyaWJ1dGVzVmFsaWRGbGFnID0gMSA8PCAyMiwKICAgICAgICBJ
c1N5bmNocm9uaXppbmdTVkdBdHRyaWJ1dGVzRmxhZyA9IDEgPDwgMjMsCiAgICAgICAgSGFzU1ZH
UmFyZURhdGFGbGFnID0gMSA8PCAyNCwKCgogICAgICAgIFN0eWxlQ2hhbmdlTWFzayA9IDEgPDwg
bm9kZVN0eWxlQ2hhbmdlU2hpZnQgfCAxIDw8IChub2RlU3R5bGVDaGFuZ2VTaGlmdCArIDEpLAoK
ICAgICAgICBTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnID0gMSA8PCAyNywKICAgICAgICBI
YXNDdXN0b21XaWxsT3JEaWRSZWNhbGNTdHlsZUZsYWcgPSAxIDw8IDI4LAogICAgICAgIEhhc0N1
c3RvbVN0eWxlRm9yUmVuZGVyZXJGbGFnID0gMSA8PCAyOSwKCgogICAgICAgIERlZmF1bHROb2Rl
RmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyB8IElzU3R5bGVBdHRyaWJ1dGVW
YWxpZEZsYWcgfCBBcmVTVkdBdHRyaWJ1dGVzVmFsaWRGbGFnCgoKCiAgICB9OwoKCgogICAgYm9v
bCBnZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1h
c2s7IH0KICAgIHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1f
bm9kZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFzayk7
IH0KICAgIHZvaWQgc2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyB8
PSBtYXNrOyB9CiAgICB2b2lkIGNsZWFyRmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25v
ZGVGbGFncyAmPSB+bWFzazsgfQoKcHJvdGVjdGVkOgogICAgZW51bSBDb25zdHJ1Y3Rpb25UeXBl
IHsKICAgICAgICBDcmVhdGVPdGhlciA9IERlZmF1bHROb2RlRmxhZ3MsCiAgICAgICAgQ3JlYXRl
VGV4dCA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc1RleHRGbGFnLAogICAgICAgIENyZWF0ZUNvbW1l
bnQgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNDb21tZW50RmxhZywKICAgICAgICBDcmVhdGVDb250
YWluZXIgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNDb250YWluZXJGbGFnLAogICAgICAgIENyZWF0
ZUVsZW1lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJc0VsZW1lbnRGbGFnLAogICAgICAgIENyZWF0
ZVN0eWxlZEVsZW1lbnQgPSBDcmVhdGVFbGVtZW50IHwgSXNTdHlsZWRFbGVtZW50RmxhZywKICAg
ICAgICBDcmVhdGVIVE1MRWxlbWVudCA9IENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBJc0hUTUxGbGFn
LAogICAgICAgIENyZWF0ZVNWR0VsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNTVkdG
bGFnLAogICAgfTsKICAgIE5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlKTsKCiAgICB2
aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKICAgIHZpcnR1YWwgdm9p
ZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CgogICAgdmlydHVhbCB2b2lkIGFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0IHsgfQogICAgdm9p
ZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoc2hvcnQpOwogICAgdm9pZCBjbGVhclRhYkluZGV4RXhw
bGljaXRseSgpOwoKICAgIGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBnZXRGbGFn
KEhhc1JhcmVEYXRhRmxhZyk7IH0KCiAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhKCkgY29uc3Q7
CiAgICBOb2RlUmFyZURhdGEqIGVuc3VyZVJhcmVEYXRhKCk7CiAgICB2b2lkIGNsZWFyUmFyZURh
dGEoKTsKCiAgICBib29sIGhhc0N1c3RvbVdpbGxPckRpZFJlY2FsY1N0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0RmxhZyhIYXNDdXN0b21XaWxsT3JEaWRSZWNhbGNTdHlsZUZsYWcpOyB9CiAgICB2
b2lkIHNldEhhc0N1c3RvbVdpbGxPckRpZFJlY2FsY1N0eWxlKCkgeyBzZXRGbGFnKHRydWUsIEhh
c0N1c3RvbVdpbGxPckRpZFJlY2FsY1N0eWxlRmxhZyk7IH0KCiAgICBib29sIGhhc0N1c3RvbVN0
eWxlRm9yUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEhhc0N1c3RvbVN0eWxlRm9y
UmVuZGVyZXJGbGFnKTsgfQogICAgdm9pZCBzZXRIYXNDdXN0b21TdHlsZUZvclJlbmRlcmVyKCkg
eyBzZXRGbGFnKHRydWUsIEhhc0N1c3RvbVN0eWxlRm9yUmVuZGVyZXJGbGFnKTsgfQoKcHJpdmF0
ZToKCgogICAgdm9pZCBzZXREb2N1bWVudFJlY3Vyc2l2ZWx5KERvY3VtZW50Kik7CiAgICB2b2lk
IHNldERvY3VtZW50KERvY3VtZW50Kik7CgogICAgZW51bSBFZGl0YWJsZUxldmVsIHsgRWRpdGFi
bGUsIFJpY2hseUVkaXRhYmxlIH07CiAgICBib29sIHJlbmRlcmVySXNFZGl0YWJsZShFZGl0YWJs
ZUxldmVsKSBjb25zdDsKCiAgICB2b2lkIHNldFN0eWxlQ2hhbmdlKFN0eWxlQ2hhbmdlVHlwZSk7
CgoKICAgIHZvaWQgbWFya0FuY2VzdG9yc1dpdGhDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKCiAg
ICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKTsKICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCk7CgogICAgdmlydHVhbCBPd25QdHI8Tm9kZVJhcmVEYXRhPiBjcmVhdGVSYXJl
RGF0YSgpOwogICAgYm9vbCByYXJlRGF0YUZvY3VzZWQoKSBjb25zdDsKCiAgICB2aXJ0dWFsIFJl
bmRlclN0eWxlKiBub25SZW5kZXJlclJlbmRlclN0eWxlKCkgY29uc3Q7CgogICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHZpcnR1YWxQcmVmaXgoKSBjb25zdDsKICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiB2aXJ0dWFsTG9jYWxOYW1lKCkgY29uc3Q7CiAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmlydHVhbE5hbWVzcGFjZVVSSSgpIGNvbnN0OwogICAgdmlydHVh
bCBSZW5kZXJTdHlsZSogdmlydHVhbENvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETyk7
CgogICAgRWxlbWVudCogYW5jZXN0b3JFbGVtZW50KCkgY29uc3Q7CgoKCgogICAgdXNpbmcgVHJl
ZVNoYXJlZDxDb250YWluZXJOb2RlPjo6cGFyZW50OwoKICAgIHZvaWQgdHJhY2tGb3JEZWJ1Z2dp
bmcoKTsKCiAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgIE5vZGUqIG1fcHJldmlvdXM7CiAg
ICBOb2RlKiBtX25leHQ7CiAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CiAgICBtdXRhYmxl
IHVpbnQzMl90IG1fbm9kZUZsYWdzOwoKcHJvdGVjdGVkOgogICAgYm9vbCBpc1BhcnNpbmdDaGls
ZHJlbkZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1BhcnNpbmdDaGlsZHJlbkZp
bmlzaGVkRmxhZyk7IH0KICAgIHZvaWQgc2V0SXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpIHsg
c2V0RmxhZyhJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0KICAgIHZvaWQgY2xlYXJJ
c1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCkgeyBjbGVhckZsYWcoSXNQYXJzaW5nQ2hpbGRyZW5G
aW5pc2hlZEZsYWcpOyB9CiAgICBib29sIGlzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIGdldEZsYWcoSXNTdHlsZUF0dHJpYnV0ZVZhbGlkRmxhZyk7IH0KICAgIHZvaWQgc2V0
SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKGJvb2wgZikgeyBzZXRGbGFnKGYsIElzU3R5bGVBdHRyaWJ1
dGVWYWxpZEZsYWcpOyB9CiAgICB2b2lkIHNldElzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpIGNvbnN0
IHsgc2V0RmxhZyhJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnKTsgfQogICAgdm9pZCBjbGVhcklz
U3R5bGVBdHRyaWJ1dGVWYWxpZCgpIHsgY2xlYXJGbGFnKElzU3R5bGVBdHRyaWJ1dGVWYWxpZEZs
YWcpOyB9CiAgICBib29sIGlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0RmxhZyhJc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZUZsYWcpOyB9CiAgICB2
b2lkIHNldElzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKGJvb2wgZikgeyBzZXRGbGFnKGYs
IElzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlRmxhZyk7IH0KICAgIHZvaWQgc2V0SXNTeW5j
aHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSBjb25zdCB7IHNldEZsYWcoSXNTeW5jaHJvbml6aW5n
U3R5bGVBdHRyaWJ1dGVGbGFnKTsgfQogICAgdm9pZCBjbGVhcklzU3luY2hyb25pemluZ1N0eWxl
QXR0cmlidXRlKCkgY29uc3QgeyBjbGVhckZsYWcoSXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1
dGVGbGFnKTsgfQoKCiAgICBib29sIGFyZVNWR0F0dHJpYnV0ZXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIGdldEZsYWcoQXJlU1ZHQXR0cmlidXRlc1ZhbGlkRmxhZyk7IH0KICAgIHZvaWQgc2V0QXJl
U1ZHQXR0cmlidXRlc1ZhbGlkKCkgY29uc3QgeyBzZXRGbGFnKEFyZVNWR0F0dHJpYnV0ZXNWYWxp
ZEZsYWcpOyB9CiAgICB2b2lkIGNsZWFyQXJlU1ZHQXR0cmlidXRlc1ZhbGlkKCkgeyBjbGVhckZs
YWcoQXJlU1ZHQXR0cmlidXRlc1ZhbGlkRmxhZyk7IH0KICAgIGJvb2wgaXNTeW5jaHJvbml6aW5n
U1ZHQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTeW5jaHJvbml6aW5nU1ZH
QXR0cmlidXRlc0ZsYWcpOyB9CiAgICB2b2lkIHNldElzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0
ZXMoKSBjb25zdCB7IHNldEZsYWcoSXNTeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlc0ZsYWcpOyB9
CiAgICB2b2lkIGNsZWFySXNTeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcygpIGNvbnN0IHsgY2xl
YXJGbGFnKElzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXNGbGFnKTsgfQogICAgYm9vbCBoYXNS
YXJlU1ZHRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzU1ZHUmFyZURhdGFGbGFnKTsg
fQogICAgdm9pZCBzZXRIYXNSYXJlU1ZHRGF0YSgpIHsgc2V0RmxhZyhIYXNTVkdSYXJlRGF0YUZs
YWcpOyB9CiAgICB2b2lkIGNsZWFySGFzUmFyZVNWR0RhdGEoKSB7IGNsZWFyRmxhZyhIYXNTVkdS
YXJlRGF0YUZsYWcpOyB9Cgp9OwoKCmlubGluZSB2b2lkIGFkZFN1YnJlc291cmNlVVJMKExpc3RI
YXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBLVVJMJiB1cmwpCnsKICAgIGlmICghdXJsLmlzTnVs
bCgpKQogICAgICAgIHVybHMuYWRkKHVybCk7Cn0KCmlubGluZSBDb250YWluZXJOb2RlKiBOb2Rl
OjpwYXJlbnROb2RlKCkgY29uc3QKewogICAgcmV0dXJuIGdldEZsYWcoSXNTaGFkb3dSb290Rmxh
ZykgfHwgaXNTVkdTaGFkb3dSb290KCkgPyAwIDogcGFyZW50KCk7Cn0KCmlubGluZSBDb250YWlu
ZXJOb2RlKiBOb2RlOjpwYXJlbnRPckhvc3ROb2RlKCkgY29uc3QKewogICAgcmV0dXJuIHBhcmVu
dCgpOwp9CgppbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZUd1YXJhbnRlZWRI
b3N0RnJlZSgpIGNvbnN0CnsKICAgIGRvIGlmICghKCFnZXRGbGFnKElzU2hhZG93Um9vdEZsYWcp
ICYmICFpc1NWR1NoYWRvd1Jvb3QoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4v
Li4vLi4vU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCIsIDc1MywgX19QUkVUVFlfRlVOQ1RJT05f
XywgIiFnZXRGbGFnKElzU2hhZG93Um9vdEZsYWcpICYmICFpc1NWR1NoYWRvd1Jvb3QoKSIpOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICBy
ZXR1cm4gcGFyZW50T3JIb3N0Tm9kZSgpOwp9CgppbmxpbmUgdm9pZCBOb2RlOjpyZWF0dGFjaCgp
CnsKICAgIGlmIChhdHRhY2hlZCgpKQogICAgICAgIGRldGFjaCgpOwogICAgYXR0YWNoKCk7Cn0K
CmlubGluZSB2b2lkIE5vZGU6OnJlYXR0YWNoSWZBdHRhY2hlZCgpCnsKICAgIGlmIChhdHRhY2hl
ZCgpKQogICAgICAgIHJlYXR0YWNoKCk7Cn0KCn0KCgoKdm9pZCBzaG93VHJlZShjb25zdCBXZWJD
b3JlOjpOb2RlKik7CiMgMjggIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgiIDIKCm5hbWVzcGFjZSBXZWJDb3JlIHsKCmNsYXNzIEZsb2F0UG9pbnQ7Cgp0eXBlZGVm
IHZvaWQgKCpOb2RlQ2FsbGJhY2spKE5vZGUqLCB1bnNpZ25lZCk7CgpuYW1lc3BhY2UgUHJpdmF0
ZSB7CiAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250
YWluZXI+CiAgICB2b2lkIGFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVldWUoR2VuZXJpY05vZGUq
JiBoZWFkLCBHZW5lcmljTm9kZSomIHRhaWwsIEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWlu
ZXIpOwp9OwoKY2xhc3MgQ29udGFpbmVyTm9kZSA6IHB1YmxpYyBOb2RlIHsKcHVibGljOgogICAg
dmlydHVhbCB+Q29udGFpbmVyTm9kZSgpOwoKICAgIE5vZGUqIGZpcnN0Q2hpbGQoKSBjb25zdCB7
IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KICAgIE5vZGUqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdENoaWxkOyB9CgogICAgYm9vbCBpbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2Rl
PiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNob3VsZExh
enlBdHRhY2ggPSBmYWxzZSk7CiAgICBib29sIHJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+
IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYsIGJvb2wgc2hvdWxkTGF6
eUF0dGFjaCA9IGZhbHNlKTsKICAgIGJvb2wgcmVtb3ZlQ2hpbGQoTm9kZSogY2hpbGQsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgIGJvb2wgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCwgRXhjZXB0aW9uQ29kZSYsIGJvb2wgc2hvdWxkTGF6eUF0dGFjaCA9IGZhbHNlKTsKCgoKCiAg
ICB2b2lkIHBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4pOwogICAgdm9pZCBwYXJzZXJS
ZW1vdmVDaGlsZChOb2RlKik7CiAgICB2b2lkIHBhcnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRy
PE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCk7CgogICAgYm9vbCBoYXNDaGlsZE5vZGVz
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9CiAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CiAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92
ZSgpOwogICAgdmlydHVhbCBMYXlvdXRSZWN0IGdldFJlY3QoKSBjb25zdDsKICAgIHZpcnR1YWwg
dm9pZCBzZXRGb2N1cyhib29sID0gdHJ1ZSk7CiAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJv
b2wgYWN0aXZlID0gdHJ1ZSwgYm9vbCBwYXVzZSA9IGZhbHNlKTsKICAgIHZpcnR1YWwgdm9pZCBz
ZXRIb3ZlcmVkKGJvb2wgPSB0cnVlKTsKICAgIHVuc2lnbmVkIGNoaWxkTm9kZUNvdW50KCkgY29u
c3Q7CiAgICBOb2RlKiBjaGlsZE5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0OwoKICAgIHZpcnR1
YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgdmlydHVhbCB2b2lkIHJlbW92ZWRG
cm9tRG9jdW1lbnQoKTsKICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKGJvb2wgZGVl
cCk7CiAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCk7CiAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwoKCgogICAgdm9pZCByZW1vdmVDaGlsZHJlbigpOwogICAgdm9pZCByZW1v
dmVBbGxDaGlsZHJlbigpOwogICAgdm9pZCB0YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5v
ZGUqKTsKCiAgICB2b2lkIGNsb25lQ2hpbGROb2RlcyhDb250YWluZXJOb2RlKiBjbG9uZSk7Cgog
ICAgYm9vbCBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7
CgogICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlU2V0TmVlZHNTdHlsZVJlY2FsYyhTdHlsZUNoYW5n
ZVR5cGUgPSBGdWxsU3R5bGVDaGFuZ2UpOwoKICAgIHN0YXRpYyB2b2lkIHF1ZXVlUG9zdEF0dGFj
aENhbGxiYWNrKE5vZGVDYWxsYmFjaywgTm9kZSosIHVuc2lnbmVkID0gMCk7CiAgICBzdGF0aWMg
Ym9vbCBwb3N0QXR0YWNoQ2FsbGJhY2tzQXJlU3VzcGVuZGVkKCk7Cgpwcm90ZWN0ZWQ6CiAgICBD
b250YWluZXJOb2RlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5l
cik7CgogICAgdm9pZCBzdXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygpOwogICAgdm9pZCByZXN1
bWVQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CgogICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUs
IGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgogICAgZnJpZW5kIHZvaWQgYXBwZW5kQ2hpbGRU
b0NvbnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250
YWluZXIpOwoKICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9k
ZUNvbnRhaW5lcj4KICAgIGZyaWVuZCB2b2lkIFByaXZhdGU6OmFkZENoaWxkTm9kZXNUb0RlbGV0
aW9uUXVldWUoR2VuZXJpY05vZGUqJiBoZWFkLCBHZW5lcmljTm9kZSomIHRhaWwsIEdlbmVyaWNO
b2RlQ29udGFpbmVyKiBjb250YWluZXIpOwoKICAgIHZvaWQgc2V0Rmlyc3RDaGlsZChOb2RlKiBj
aGlsZCkgeyBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsgfQogICAgdm9pZCBzZXRMYXN0Q2hpbGQoTm9k
ZSogY2hpbGQpIHsgbV9sYXN0Q2hpbGQgPSBjaGlsZDsgfQoKcHJpdmF0ZToKICAgIHZvaWQgcmVt
b3ZlQmV0d2VlbihOb2RlKiBwcmV2aW91c0NoaWxkLCBOb2RlKiBuZXh0Q2hpbGQsIE5vZGUqIG9s
ZENoaWxkKTsKICAgIHZvaWQgaW5zZXJ0QmVmb3JlQ29tbW9uKE5vZGUqIG5leHRDaGlsZCwgTm9k
ZSogb2xkQ2hpbGQpOwoKICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUG9zdEF0dGFjaENhbGxiYWNr
cygpOwoKICAgIGJvb2wgZ2V0VXBwZXJMZWZ0Q29ybmVyKEZsb2F0UG9pbnQmKSBjb25zdDsKICAg
IGJvb2wgZ2V0TG93ZXJSaWdodENvcm5lcihGbG9hdFBvaW50JikgY29uc3Q7CgogICAgTm9kZSog
bV9maXJzdENoaWxkOwogICAgTm9kZSogbV9sYXN0Q2hpbGQ7Cn07CgppbmxpbmUgQ29udGFpbmVy
Tm9kZSogdG9Db250YWluZXJOb2RlKE5vZGUqIG5vZGUpCnsKICAgIGRvIGlmICghKCFub2RlIHx8
IG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIu
Li8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIiwgMTIxLCBfX1BSRVRU
WV9GVU5DVElPTl9fLCAiIW5vZGUgfHwgbm9kZS0+aXNDb250YWluZXJOb2RlKCkiKTsgZG8geyBX
VEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAo
KHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgcmV0dXJu
IHN0YXRpY19jYXN0PENvbnRhaW5lck5vZGUqPihub2RlKTsKfQoKaW5saW5lIGNvbnN0IENvbnRh
aW5lck5vZGUqIHRvQ29udGFpbmVyTm9kZShjb25zdCBOb2RlKiBub2RlKQp7CiAgICBkbyBpZiAo
ISghbm9kZSB8fCBub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9u
RmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCIsIDEy
NywgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFub2RlIHx8IG5vZGUtPmlzQ29udGFpbmVyTm9kZSgp
Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRi
ZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsK
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDb250YWluZXJOb2RlKj4obm9kZSk7Cn0KCgp2
b2lkIHRvQ29udGFpbmVyTm9kZShjb25zdCBDb250YWluZXJOb2RlKik7CgppbmxpbmUgQ29udGFp
bmVyTm9kZTo6Q29udGFpbmVyTm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5
cGUgdHlwZSkKICAgIDogTm9kZShkb2N1bWVudCwgdHlwZSkKICAgICwgbV9maXJzdENoaWxkKDAp
CiAgICAsIG1fbGFzdENoaWxkKDApCnsKfQoKaW5saW5lIHVuc2lnbmVkIE5vZGU6OmNoaWxkTm9k
ZUNvdW50KCkgY29uc3QKewogICAgaWYgKCFpc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICByZXR1
cm4gMDsKICAgIHJldHVybiB0b0NvbnRhaW5lck5vZGUodGhpcyktPmNoaWxkTm9kZUNvdW50KCk7
Cn0KCmlubGluZSBOb2RlKiBOb2RlOjpjaGlsZE5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0CnsK
ICAgIGlmICghaXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgcmV0dXJuIDA7CiAgICByZXR1cm4g
dG9Db250YWluZXJOb2RlKHRoaXMpLT5jaGlsZE5vZGUoaW5kZXgpOwp9CgppbmxpbmUgTm9kZSog
Tm9kZTo6Zmlyc3RDaGlsZCgpIGNvbnN0CnsKICAgIGlmICghaXNDb250YWluZXJOb2RlKCkpCiAg
ICAgICAgcmV0dXJuIDA7CiAgICByZXR1cm4gdG9Db250YWluZXJOb2RlKHRoaXMpLT5maXJzdENo
aWxkKCk7Cn0KCmlubGluZSBOb2RlKiBOb2RlOjpsYXN0Q2hpbGQoKSBjb25zdAp7CiAgICBpZiAo
IWlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgIHJldHVybiAwOwogICAgcmV0dXJuIHRvQ29udGFp
bmVyTm9kZSh0aGlzKS0+bGFzdENoaWxkKCk7Cn0KCn0KIyAzMCAiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50T3JkZXJlZE1hcC5oIiAxCiMgMzIgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE9yZGVyZWRNYXAuaCIKI2RlZmluZSBEb2N1bWVudE9yZGVyZWRNYXBfaCAKCgoK
IyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5n
SW1wbC5oIiAxCiMgMzcgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVy
ZWRNYXAuaCIgMgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgRWxlbWVudDsKY2xhc3MgVHJl
ZVNjb3BlOwoKY2xhc3MgRG9jdW1lbnRPcmRlcmVkTWFwIHsKcHVibGljOgogICAgdm9pZCBhZGQo
QXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKICAgIHZvaWQgcmVtb3ZlKEF0b21pY1N0cmlu
Z0ltcGwqLCBFbGVtZW50Kik7CiAgICB2b2lkIGNsZWFyKCk7CgogICAgYm9vbCBjb250YWlucyhB
dG9taWNTdHJpbmdJbXBsKikgY29uc3Q7CiAgICBib29sIGNvbnRhaW5zTXVsdGlwbGUoQXRvbWlj
U3RyaW5nSW1wbCopIGNvbnN0OwoKICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKEF0b21pY1N0
cmluZ0ltcGwqLCBjb25zdCBUcmVlU2NvcGUqKSBjb25zdDsKICAgIEVsZW1lbnQqIGdldEVsZW1l
bnRCeU1hcE5hbWUoQXRvbWljU3RyaW5nSW1wbCosIGNvbnN0IFRyZWVTY29wZSopIGNvbnN0Owog
ICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5TG93ZXJjYXNlZE1hcE5hbWUoQXRvbWljU3RyaW5nSW1w
bCosIGNvbnN0IFRyZWVTY29wZSopIGNvbnN0OwoKICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgp
IGNvbnN0OwoKcHJpdmF0ZToKICAgIHRlbXBsYXRlPGJvb2wga2V5TWF0Y2hlcyhBdG9taWNTdHJp
bmdJbXBsKiwgRWxlbWVudCopPiBFbGVtZW50KiBnZXQoQXRvbWljU3RyaW5nSW1wbCosIGNvbnN0
IFRyZWVTY29wZSopIGNvbnN0OwoKICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBs
KiwgRWxlbWVudCo+IE1hcDsKCgoKCiAgICBtdXRhYmxlIE1hcCBtX21hcDsKICAgIG11dGFibGUg
SGFzaENvdW50ZWRTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IG1fZHVwbGljYXRlQ291bnRzOwp9OwoK
aW5saW5lIGJvb2wgRG9jdW1lbnRPcmRlcmVkTWFwOjpjb250YWlucyhBdG9taWNTdHJpbmdJbXBs
KiBpZCkgY29uc3QKewogICAgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkKSB8fCBtX2R1cGxpY2F0
ZUNvdW50cy5jb250YWlucyhpZCk7Cn0KCmlubGluZSBib29sIERvY3VtZW50T3JkZXJlZE1hcDo6
Y29udGFpbnNNdWx0aXBsZShBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKewogICAgcmV0dXJu
IG1fZHVwbGljYXRlQ291bnRzLmNvbnRhaW5zKGlkKTsKfQoKfQojIDMxICIuLi8uLi8uLi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgiIDIKCm5hbWVzcGFjZSBXZWJDb3JlIHsKCmNsYXNz
IEVsZW1lbnQ7CmNsYXNzIEhUTUxNYXBFbGVtZW50OwoKY2xhc3MgVHJlZVNjb3BlIDogcHVibGlj
IENvbnRhaW5lck5vZGUgewogICAgZnJpZW5kIGNsYXNzIERvY3VtZW50OwoKcHVibGljOgogICAg
VHJlZVNjb3BlKiBwYXJlbnRUcmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFRyZWVT
Y29wZTsgfQogICAgdm9pZCBzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKik7CgogICAgRWxl
bWVudCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAgICBib29s
IGhhc0VsZW1lbnRXaXRoSWQoQXRvbWljU3RyaW5nSW1wbCogaWQpIGNvbnN0OwogICAgYm9vbCBj
b250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29u
c3Q7CiAgICB2b2lkIGFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElk
LCBFbGVtZW50Kik7CiAgICB2b2lkIHJlbW92ZUVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZWxlbWVudElkLCBFbGVtZW50Kik7CgogICAgdm9pZCBhZGRJbWFnZU1hcChIVE1MTWFwRWxl
bWVudCopOwogICAgdm9pZCByZW1vdmVJbWFnZU1hcChIVE1MTWFwRWxlbWVudCopOwogICAgSFRN
TE1hcEVsZW1lbnQqIGdldEltYWdlTWFwKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdDsKCiAgICB2
b2lkIGFkZE5vZGVMaXN0Q2FjaGUoKSB7ICsrbV9udW1Ob2RlTGlzdENhY2hlczsgfQogICAgdm9p
ZCByZW1vdmVOb2RlTGlzdENhY2hlKCkgeyBkbyBpZiAoIShtX251bU5vZGVMaXN0Q2FjaGVzID4g
MCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5oIiwgNTUsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX251bU5vZGVMaXN0
Q2FjaGVzID4gMCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRy
X3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3
aGlsZSAoMCk7IC0tbV9udW1Ob2RlTGlzdENhY2hlczsgfQogICAgYm9vbCBoYXNOb2RlTGlzdENh
Y2hlcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtTm9kZUxpc3RDYWNoZXM7IH0KCgoKCgoKICAgIEVs
ZW1lbnQqIGZpbmRBbmNob3IoY29uc3QgU3RyaW5nJiBuYW1lKTsKCiAgICB2aXJ0dWFsIGJvb2wg
YXBwbHlBdXRob3JTaGVldHMoKSBjb25zdDsKCnByb3RlY3RlZDoKICAgIFRyZWVTY29wZShEb2N1
bWVudCopOwogICAgdmlydHVhbCB+VHJlZVNjb3BlKCk7CgogICAgdm9pZCBkZXN0cm95VHJlZVNj
b3BlRGF0YSgpOwoKcHJpdmF0ZToKICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7Cgog
ICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1fZWxlbWVudHNCeUlkOwogICAgRG9jdW1lbnRPcmRlcmVk
TWFwIG1faW1hZ2VNYXBzQnlOYW1lOwoKICAgIHVuc2lnbmVkIG1fbnVtTm9kZUxpc3RDYWNoZXM7
Cn07CgppbmxpbmUgYm9vbCBUcmVlU2NvcGU6Omhhc0VsZW1lbnRXaXRoSWQoQXRvbWljU3RyaW5n
SW1wbCogaWQpIGNvbnN0CnsKICAgIGRvIGlmICghKGlkKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25G
YWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgiLCA4NCwgX19Q
UkVUVFlfRlVOQ1RJT05fXywgImlkIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50
ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIHJldHVybiBtX2VsZW1lbnRzQnlJZC5jb250YWlucyhp
ZCk7Cn0KCmlubGluZSBib29sIFRyZWVTY29wZTo6Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0
aElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CnsKICAgIHJldHVybiBtX2VsZW1lbnRz
QnlJZC5jb250YWluc011bHRpcGxlKGlkLmltcGwoKSk7Cn0KCn0KIyA0NSAiLi4vLi4vLi4vU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaCIgMQojIDI4ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaCIKI2RlZmluZSBWaWV3cG9ydEFyZ3VtZW50c19oIAoK
IyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgi
IDEKIyAzMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgi
IDIKCgpuYW1lc3BhY2UgV2ViQ29yZSB7CgpjbGFzcyBEb2N1bWVudDsKCmVudW0gVmlld3BvcnRF
cnJvckNvZGUgewogICAgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudEtleUVycm9yLAogICAg
VW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IsCiAgICBUcnVuY2F0ZWRWaWV3
cG9ydEFyZ3VtZW50VmFsdWVFcnJvciwKICAgIE1heGltdW1TY2FsZVRvb0xhcmdlRXJyb3IsCiAg
ICBUYXJnZXREZW5zaXR5RHBpVG9vU21hbGxPckxhcmdlRXJyb3IKfTsKCnN0cnVjdCBWaWV3cG9y
dEF0dHJpYnV0ZXMgewogICAgSW50U2l6ZSBsYXlvdXRTaXplOwoKICAgIGZsb2F0IGRldmljZVBp
eGVsUmF0aW87CgogICAgZmxvYXQgaW5pdGlhbFNjYWxlOwogICAgZmxvYXQgbWluaW11bVNjYWxl
OwogICAgZmxvYXQgbWF4aW11bVNjYWxlOwoKICAgIGZsb2F0IHVzZXJTY2FsYWJsZTsKfTsKCnN0
cnVjdCBWaWV3cG9ydEFyZ3VtZW50cyB7CgogICAgZW51bSB7CiAgICAgICAgVmFsdWVBdXRvID0g
LTEsCiAgICAgICAgVmFsdWVEZXNrdG9wV2lkdGggPSAtMiwKICAgICAgICBWYWx1ZURldmljZVdp
ZHRoID0gLTMsCiAgICAgICAgVmFsdWVEZXZpY2VIZWlnaHQgPSAtNCwKICAgICAgICBWYWx1ZURl
dmljZURQSSA9IC01LAogICAgICAgIFZhbHVlTG93RFBJID0gLTYsCiAgICAgICAgVmFsdWVNZWRp
dW1EUEkgPSAtNywKICAgICAgICBWYWx1ZUhpZ2hEUEkgPSAtOAogICAgfTsKCiAgICBWaWV3cG9y
dEFyZ3VtZW50cygpCiAgICAgICAgOiBpbml0aWFsU2NhbGUoVmFsdWVBdXRvKQogICAgICAgICwg
bWluaW11bVNjYWxlKFZhbHVlQXV0bykKICAgICAgICAsIG1heGltdW1TY2FsZShWYWx1ZUF1dG8p
CiAgICAgICAgLCB3aWR0aChWYWx1ZUF1dG8pCiAgICAgICAgLCBoZWlnaHQoVmFsdWVBdXRvKQog
ICAgICAgICwgdGFyZ2V0RGVuc2l0eURwaShWYWx1ZUF1dG8pCiAgICAgICAgLCB1c2VyU2NhbGFi
bGUoVmFsdWVBdXRvKQogICAgewogICAgfQoKICAgIGZsb2F0IGluaXRpYWxTY2FsZTsKICAgIGZs
b2F0IG1pbmltdW1TY2FsZTsKICAgIGZsb2F0IG1heGltdW1TY2FsZTsKICAgIGZsb2F0IHdpZHRo
OwogICAgZmxvYXQgaGVpZ2h0OwogICAgZmxvYXQgdGFyZ2V0RGVuc2l0eURwaTsKICAgIGZsb2F0
IHVzZXJTY2FsYWJsZTsKCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVmlld3BvcnRBcmd1bWVu
dHMmIG90aGVyKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBpbml0aWFsU2NhbGUgPT0gb3Ro
ZXIuaW5pdGlhbFNjYWxlCiAgICAgICAgICAgICYmIG1pbmltdW1TY2FsZSA9PSBvdGhlci5taW5p
bXVtU2NhbGUKICAgICAgICAgICAgJiYgbWF4aW11bVNjYWxlID09IG90aGVyLm1heGltdW1TY2Fs
ZQogICAgICAgICAgICAmJiB3aWR0aCA9PSBvdGhlci53aWR0aAogICAgICAgICAgICAmJiBoZWln
aHQgPT0gb3RoZXIuaGVpZ2h0CiAgICAgICAgICAgICYmIHRhcmdldERlbnNpdHlEcGkgPT0gb3Ro
ZXIudGFyZ2V0RGVuc2l0eURwaQogICAgICAgICAgICAmJiB1c2VyU2NhbGFibGUgPT0gb3RoZXIu
dXNlclNjYWxhYmxlOwogICAgfQp9OwoKVmlld3BvcnRBdHRyaWJ1dGVzIGNvbXB1dGVWaWV3cG9y
dEF0dHJpYnV0ZXMoVmlld3BvcnRBcmd1bWVudHMgYXJncywgaW50IGRlc2t0b3BXaWR0aCwgaW50
IGRldmljZVdpZHRoLCBpbnQgZGV2aWNlSGVpZ2h0LCBpbnQgZGV2aWNlRFBJLCBJbnRTaXplIHZp
c2libGVWaWV3cG9ydCk7Cgp2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShjb25zdCBTdHJpbmcmIGtl
eVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdW1lbnQqLCB2b2lkKiBkYXRh
KTsKdm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQqLCBWaWV3cG9ydEVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudDEsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQy
KTsKCn0KIyA0NiAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgiIDIKIyAx
ICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlcXVlLmgiIDEKIyAzMSAiLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EZXF1ZS5oIgojZGVmaW5lIFdURl9EZXF1
ZV9oIAoKCgoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NUcmFp
dHMuaCIgMQojIDMwICIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NUcmFp
dHMuaCIKI2RlZmluZSBXVEZfUGFzc1RyYWl0c19oIAojIDM5ICIuLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1Bhc3NUcmFpdHMuaCIKbmFtZXNwYWNlIFdURiB7Cgp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgUGFzc1RyYWl0cyB7CiAgICB0eXBlZGVmIFQgVHlwZTsKICAgIHR5
cGVkZWYgVCBQYXNzVHlwZTsKICAgIHN0YXRpYyBQYXNzVHlwZSB0cmFuc2ZlcihUeXBlJiB2YWx1
ZSkgeyByZXR1cm4gdmFsdWU7IH0KfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQYXNz
VHJhaXRzPE93blB0cjxUPiA+IHsKICAgIHR5cGVkZWYgT3duUHRyPFQ+IFR5cGU7CiAgICB0eXBl
ZGVmIFBhc3NPd25QdHI8VD4gUGFzc1R5cGU7CiAgICBzdGF0aWMgUGFzc1R5cGUgdHJhbnNmZXIo
VHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsgfQp9OwoKdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IFBhc3NUcmFpdHM8UmVmUHRyPFQ+ID4gewogICAgdHlwZWRlZiBSZWZQ
dHI8VD4gVHlwZTsKICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxUPiBQYXNzVHlwZTsKICAgIHN0YXRp
YyBQYXNzVHlwZSB0cmFuc2ZlcihUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUucmVsZWFzZSgp
OyB9Cn07Cgp9Cgp1c2luZyBXVEY6OlBhc3NUcmFpdHM7CiMgMzcgIi4uLy4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvRGVxdWUuaCIgMgoKCm5hbWVzcGFjZSBXVEYgewoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgRGVxdWVJdGVyYXRv
ckJhc2U7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNs
YXNzIERlcXVlSXRlcmF0b3I7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+IGNsYXNzIERlcXVlQ29uc3RJdGVyYXRvcjsKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgRGVxdWVSZXZlcnNlSXRlcmF0b3I7CiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNsYXNzIERlcXVl
Q29uc3RSZXZlcnNlSXRlcmF0b3I7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5ID0gMD4KICAgIGNsYXNzIERlcXVlIHsKICAgICAgICBwdWJsaWM6IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RG
OjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9j
VHlwZUNsYXNzTmV3KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkg
eyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6
QWxsb2NUeXBlQ2xhc3NOZXcpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6
OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpB
bGxvY1R5cGVDbGFzc05ld0FycmF5KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVb
XSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6
OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9
IHByaXZhdGU6IHR5cGVkZWYgaW50IFRoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhp
c01hY3JvOwogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgRGVxdWVJdGVyYXRvcjxULCBpbmxp
bmVDYXBhY2l0eT4gaXRlcmF0b3I7CiAgICAgICAgdHlwZWRlZiBEZXF1ZUNvbnN0SXRlcmF0b3I8
VCwgaW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgIHR5cGVkZWYgRGVxdWVS
ZXZlcnNlSXRlcmF0b3I8VCwgaW5saW5lQ2FwYWNpdHk+IHJldmVyc2VfaXRlcmF0b3I7CiAgICAg
ICAgdHlwZWRlZiBEZXF1ZUNvbnN0UmV2ZXJzZUl0ZXJhdG9yPFQsIGlubGluZUNhcGFjaXR5PiBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yOwogICAgICAgIHR5cGVkZWYgUGFzc1RyYWl0czxUPiBQYXNz
OwogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgUGFzc1RyYWl0czxUPjo6UGFzc1R5cGUgUGFzc1R5
cGU7CgogICAgICAgIERlcXVlKCk7CiAgICAgICAgRGVxdWUoY29uc3QgRGVxdWU8VCwgaW5saW5l
Q2FwYWNpdHk+Jik7CiAgICAgICAgRGVxdWUmIG9wZXJhdG9yPShjb25zdCBEZXF1ZTxULCBpbmxp
bmVDYXBhY2l0eT4mKTsKICAgICAgICB+RGVxdWUoKTsKCiAgICAgICAgdm9pZCBzd2FwKERlcXVl
PFQsIGlubGluZUNhcGFjaXR5PiYpOwoKICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhcnQgPD0gbV9lbmQgPyBtX2VuZCAtIG1fc3RhcnQgOiBtX2VuZCArIG1fYnVmZmVy
LmNhcGFjaXR5KCkgLSBtX3N0YXJ0OyB9CiAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFydCA9PSBtX2VuZDsgfQoKICAgICAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0
dXJuIGl0ZXJhdG9yKHRoaXMsIG1fc3RhcnQpOyB9CiAgICAgICAgaXRlcmF0b3IgZW5kKCkgeyBy
ZXR1cm4gaXRlcmF0b3IodGhpcywgbV9lbmQpOyB9CiAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVn
aW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBtX3N0YXJ0KTsgfQogICAg
ICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRo
aXMsIG1fZW5kKTsgfQogICAgICAgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgeyByZXR1cm4g
cmV2ZXJzZV9pdGVyYXRvcih0aGlzLCBtX2VuZCk7IH0KICAgICAgICByZXZlcnNlX2l0ZXJhdG9y
IHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKHRoaXMsIG1fc3RhcnQpOyB9CiAgICAg
ICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yKHRoaXMsIG1fZW5kKTsgfQogICAgICAgIGNvbnN0X3JldmVyc2VfaXRl
cmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IodGhpcywg
bV9zdGFydCk7IH0KCiAgICAgICAgVCYgZmlyc3QoKSB7IGRvIGlmICghKG1fc3RhcnQgIT0gbV9l
bmQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvRGVxdWUuaCIsIDc3LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9zdGFydCAh
PSBtX2VuZCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3Qp
MHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGls
ZSAoMCk7IHJldHVybiBtX2J1ZmZlci5idWZmZXIoKVttX3N0YXJ0XTsgfQogICAgICAgIGNvbnN0
IFQmIGZpcnN0KCkgY29uc3QgeyBkbyBpZiAoIShtX3N0YXJ0ICE9IG1fZW5kKSkgeyBXVEZSZXBv
cnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Rl
cXVlLmgiLCA3OCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fc3RhcnQgIT0gbV9lbmQiKTsgZG8g
eyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAw
OyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOyByZXR1cm4g
bV9idWZmZXIuYnVmZmVyKClbbV9zdGFydF07IH0KICAgICAgICBQYXNzVHlwZSB0YWtlRmlyc3Qo
KTsKCiAgICAgICAgVCYgbGFzdCgpIHsgZG8gaWYgKCEobV9zdGFydCAhPSBtX2VuZCkpIHsgV1RG
UmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9EZXF1ZS5oIiwgODEsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJtX3N0YXJ0ICE9IG1fZW5kIik7
IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVm
ID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0
dXJuICooLS1lbmQoKSk7IH0KICAgICAgICBjb25zdCBUJiBsYXN0KCkgY29uc3QgeyBkbyBpZiAo
IShtX3N0YXJ0ICE9IG1fZW5kKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlcXVlLmgiLCA4MiwgX19QUkVUVFlfRlVOQ1RJ
T05fXywgIm1fc3RhcnQgIT0gbV9lbmQiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihp
bnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOyByZXR1cm4gKigtLWVuZCgpKTsgfQoKICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiB2b2lkIGFwcGVuZChjb25zdCBVJik7CiAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gdm9pZCBwcmVwZW5kKGNvbnN0IFUmKTsKICAgICAgICB2b2lkIHJlbW92ZUZp
cnN0KCk7CiAgICAgICAgdm9pZCByZW1vdmUoaXRlcmF0b3ImKTsKICAgICAgICB2b2lkIHJlbW92
ZShjb25zdF9pdGVyYXRvciYpOwoKICAgICAgICB2b2lkIGNsZWFyKCk7CgogICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KICAgICAgICBpdGVyYXRvciBmaW5kSWYoUHJlZGljYXRl
Jik7CgogICAgcHJpdmF0ZToKICAgICAgICBmcmllbmQgY2xhc3MgRGVxdWVJdGVyYXRvckJhc2U8
VCwgaW5saW5lQ2FwYWNpdHk+OwoKICAgICAgICB0eXBlZGVmIFZlY3RvckJ1ZmZlcjxULCBpbmxp
bmVDYXBhY2l0eT4gQnVmZmVyOwogICAgICAgIHR5cGVkZWYgVmVjdG9yVHlwZU9wZXJhdGlvbnM8
VD4gVHlwZU9wZXJhdGlvbnM7CiAgICAgICAgdHlwZWRlZiBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBp
bmxpbmVDYXBhY2l0eT4gSXRlcmF0b3JCYXNlOwoKICAgICAgICB2b2lkIHJlbW92ZShzaXplX3Qg
cG9zaXRpb24pOwogICAgICAgIHZvaWQgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogICAgICAgIHZv
aWQgZGVzdHJveUFsbCgpOwogICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eSgpIGNvbnN0OwogICAg
ICAgIHZvaWQgY2hlY2tJbmRleFZhbGlkaXR5KHNpemVfdCkgY29uc3Q7CiAgICAgICAgdm9pZCBl
eHBhbmRDYXBhY2l0eUlmTmVlZGVkKCk7CiAgICAgICAgdm9pZCBleHBhbmRDYXBhY2l0eSgpOwoK
ICAgICAgICBzaXplX3QgbV9zdGFydDsKICAgICAgICBzaXplX3QgbV9lbmQ7CiAgICAgICAgQnVm
ZmVyIG1fYnVmZmVyOwoKICAgICAgICBtdXRhYmxlIEl0ZXJhdG9yQmFzZSogbV9pdGVyYXRvcnM7
CgogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHkg
PSAwPgogICAgY2xhc3MgRGVxdWVJdGVyYXRvckJhc2UgewogICAgcHJpdmF0ZToKICAgICAgICB0
eXBlZGVmIERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5PiBCYXNlOwoKICAgIHBy
b3RlY3RlZDoKICAgICAgICBEZXF1ZUl0ZXJhdG9yQmFzZSgpOwogICAgICAgIERlcXVlSXRlcmF0
b3JCYXNlKGNvbnN0IERlcXVlPFQsIGlubGluZUNhcGFjaXR5PiosIHNpemVfdCk7CiAgICAgICAg
RGVxdWVJdGVyYXRvckJhc2UoY29uc3QgQmFzZSYpOwogICAgICAgIEJhc2UmIG9wZXJhdG9yPShj
b25zdCBCYXNlJik7CiAgICAgICAgfkRlcXVlSXRlcmF0b3JCYXNlKCk7CgogICAgICAgIHZvaWQg
YXNzaWduKGNvbnN0IEJhc2UmIG90aGVyKSB7ICp0aGlzID0gb3RoZXI7IH0KCiAgICAgICAgdm9p
ZCBpbmNyZW1lbnQoKTsKICAgICAgICB2b2lkIGRlY3JlbWVudCgpOwoKICAgICAgICBUKiBiZWZv
cmUoKSBjb25zdDsKICAgICAgICBUKiBhZnRlcigpIGNvbnN0OwoKICAgICAgICBib29sIGlzRXF1
YWwoY29uc3QgQmFzZSYpIGNvbnN0OwoKICAgIHByaXZhdGU6CiAgICAgICAgdm9pZCBhZGRUb0l0
ZXJhdG9yc0xpc3QoKTsKICAgICAgICB2b2lkIHJlbW92ZUZyb21JdGVyYXRvcnNMaXN0KCk7CiAg
ICAgICAgdm9pZCBjaGVja1ZhbGlkaXR5KCkgY29uc3Q7CiAgICAgICAgdm9pZCBjaGVja1ZhbGlk
aXR5KGNvbnN0IEJhc2UmKSBjb25zdDsKCiAgICAgICAgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+
KiBtX2RlcXVlOwogICAgICAgIHNpemVfdCBtX2luZGV4OwoKICAgICAgICBmcmllbmQgY2xhc3Mg
RGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OwoKCiAgICAgICAgbXV0YWJsZSBEZXF1ZUl0ZXJhdG9y
QmFzZSogbV9uZXh0OwogICAgICAgIG11dGFibGUgRGVxdWVJdGVyYXRvckJhc2UqIG1fcHJldmlv
dXM7CgogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHkgPSAwPgogICAgY2xhc3MgRGVxdWVJdGVyYXRvciA6IHB1YmxpYyBEZXF1ZUl0ZXJhdG9yQmFz
ZTxULCBpbmxpbmVDYXBhY2l0eT4gewogICAgcHJpdmF0ZToKICAgICAgICB0eXBlZGVmIERlcXVl
SXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5PiBCYXNlOwogICAgICAgIHR5cGVkZWYgRGVx
dWVJdGVyYXRvcjxULCBpbmxpbmVDYXBhY2l0eT4gSXRlcmF0b3I7CgogICAgcHVibGljOgogICAg
ICAgIERlcXVlSXRlcmF0b3IoRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+KiBkZXF1ZSwgc2l6ZV90
IGluZGV4KSA6IEJhc2UoZGVxdWUsIGluZGV4KSB7IH0KCiAgICAgICAgRGVxdWVJdGVyYXRvcihj
b25zdCBJdGVyYXRvciYgb3RoZXIpIDogQmFzZShvdGhlcikgeyB9CiAgICAgICAgRGVxdWVJdGVy
YXRvciYgb3BlcmF0b3I9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgeyBCYXNlOjphc3NpZ24ob3Ro
ZXIpOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gKkJhc2U6OmFmdGVyKCk7IH0KICAgICAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gQmFzZTo6YWZ0ZXIoKTsgfQoKICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0
b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBCYXNlOjppc0VxdWFsKG90aGVyKTsgfQogICAgICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFC
YXNlOjppc0VxdWFsKG90aGVyKTsgfQoKICAgICAgICBJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsg
QmFzZTo6aW5jcmVtZW50KCk7IHJldHVybiAqdGhpczsgfQoKICAgICAgICBJdGVyYXRvciYgb3Bl
cmF0b3ItLSgpIHsgQmFzZTo6ZGVjcmVtZW50KCk7IHJldHVybiAqdGhpczsgfQoKICAgIH07Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gMD4KICAgIGNs
YXNzIERlcXVlQ29uc3RJdGVyYXRvciA6IHB1YmxpYyBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBpbmxp
bmVDYXBhY2l0eT4gewogICAgcHJpdmF0ZToKICAgICAgICB0eXBlZGVmIERlcXVlSXRlcmF0b3JC
YXNlPFQsIGlubGluZUNhcGFjaXR5PiBCYXNlOwogICAgICAgIHR5cGVkZWYgRGVxdWVDb25zdEl0
ZXJhdG9yPFQsIGlubGluZUNhcGFjaXR5PiBJdGVyYXRvcjsKICAgICAgICB0eXBlZGVmIERlcXVl
SXRlcmF0b3I8VCwgaW5saW5lQ2FwYWNpdHk+IE5vbkNvbnN0SXRlcmF0b3I7CgogICAgcHVibGlj
OgogICAgICAgIERlcXVlQ29uc3RJdGVyYXRvcihjb25zdCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0
eT4qIGRlcXVlLCBzaXplX3QgaW5kZXgpIDogQmFzZShkZXF1ZSwgaW5kZXgpIHsgfQoKICAgICAg
ICBEZXF1ZUNvbnN0SXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKSA6IEJhc2Uob3RoZXIp
IHsgfQogICAgICAgIERlcXVlQ29uc3RJdGVyYXRvcihjb25zdCBOb25Db25zdEl0ZXJhdG9yJiBv
dGhlcikgOiBCYXNlKG90aGVyKSB7IH0KICAgICAgICBEZXF1ZUNvbnN0SXRlcmF0b3ImIG9wZXJh
dG9yPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgQmFzZTo6YXNzaWduKG90aGVyKTsgcmV0dXJu
ICp0aGlzOyB9CiAgICAgICAgRGVxdWVDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgTm9u
Q29uc3RJdGVyYXRvciYgb3RoZXIpIHsgQmFzZTo6YXNzaWduKG90aGVyKTsgcmV0dXJuICp0aGlz
OyB9CgogICAgICAgIGNvbnN0IFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpCYXNlOjph
ZnRlcigpOyB9CiAgICAgICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIEJh
c2U6OmFmdGVyKCk7IH0KCiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gQmFzZTo6aXNFcXVhbChvdGhlcik7IH0KICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhQmFzZTo6
aXNFcXVhbChvdGhlcik7IH0KCiAgICAgICAgSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IEJhc2U6
OmluY3JlbWVudCgpOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgICAgSXRlcmF0b3ImIG9wZXJhdG9y
LS0oKSB7IEJhc2U6OmRlY3JlbWVudCgpOyByZXR1cm4gKnRoaXM7IH0KCiAgICB9OwoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IDA+CiAgICBjbGFzcyBE
ZXF1ZVJldmVyc2VJdGVyYXRvciA6IHB1YmxpYyBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBpbmxpbmVD
YXBhY2l0eT4gewogICAgcHJpdmF0ZToKICAgICAgICB0eXBlZGVmIERlcXVlSXRlcmF0b3JCYXNl
PFQsIGlubGluZUNhcGFjaXR5PiBCYXNlOwogICAgICAgIHR5cGVkZWYgRGVxdWVSZXZlcnNlSXRl
cmF0b3I8VCwgaW5saW5lQ2FwYWNpdHk+IEl0ZXJhdG9yOwoKICAgIHB1YmxpYzoKICAgICAgICBE
ZXF1ZVJldmVyc2VJdGVyYXRvcihjb25zdCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT4qIGRlcXVl
LCBzaXplX3QgaW5kZXgpIDogQmFzZShkZXF1ZSwgaW5kZXgpIHsgfQoKICAgICAgICBEZXF1ZVJl
dmVyc2VJdGVyYXRvcihjb25zdCBJdGVyYXRvciYgb3RoZXIpIDogQmFzZShvdGhlcikgeyB9CiAg
ICAgICAgRGVxdWVSZXZlcnNlSXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBJdGVyYXRvciYgb3Ro
ZXIpIHsgQmFzZTo6YXNzaWduKG90aGVyKTsgcmV0dXJuICp0aGlzOyB9CgogICAgICAgIFQmIG9w
ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpCYXNlOjpiZWZvcmUoKTsgfQogICAgICAgIFQqIG9w
ZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBCYXNlOjpiZWZvcmUoKTsgfQoKICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBCYXNlOjpp
c0VxdWFsKG90aGVyKTsgfQogICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICFCYXNlOjppc0VxdWFsKG90aGVyKTsgfQoKICAgICAgICBJ
dGVyYXRvciYgb3BlcmF0b3IrKygpIHsgQmFzZTo6ZGVjcmVtZW50KCk7IHJldHVybiAqdGhpczsg
fQoKICAgICAgICBJdGVyYXRvciYgb3BlcmF0b3ItLSgpIHsgQmFzZTo6aW5jcmVtZW50KCk7IHJl
dHVybiAqdGhpczsgfQoKICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5ID0gMD4KICAgIGNsYXNzIERlcXVlQ29uc3RSZXZlcnNlSXRlcmF0b3IgOiBw
dWJsaWMgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+IHsKICAgIHByaXZhdGU6
CiAgICAgICAgdHlwZWRlZiBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBpbmxpbmVDYXBhY2l0eT4gQmFz
ZTsKICAgICAgICB0eXBlZGVmIERlcXVlQ29uc3RSZXZlcnNlSXRlcmF0b3I8VCwgaW5saW5lQ2Fw
YWNpdHk+IEl0ZXJhdG9yOwogICAgICAgIHR5cGVkZWYgRGVxdWVSZXZlcnNlSXRlcmF0b3I8VCwg
aW5saW5lQ2FwYWNpdHk+IE5vbkNvbnN0SXRlcmF0b3I7CgogICAgcHVibGljOgogICAgICAgIERl
cXVlQ29uc3RSZXZlcnNlSXRlcmF0b3IoY29uc3QgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+KiBk
ZXF1ZSwgc2l6ZV90IGluZGV4KSA6IEJhc2UoZGVxdWUsIGluZGV4KSB7IH0KCiAgICAgICAgRGVx
dWVDb25zdFJldmVyc2VJdGVyYXRvcihjb25zdCBJdGVyYXRvciYgb3RoZXIpIDogQmFzZShvdGhl
cikgeyB9CiAgICAgICAgRGVxdWVDb25zdFJldmVyc2VJdGVyYXRvcihjb25zdCBOb25Db25zdEl0
ZXJhdG9yJiBvdGhlcikgOiBCYXNlKG90aGVyKSB7IH0KICAgICAgICBEZXF1ZUNvbnN0UmV2ZXJz
ZUl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IEJhc2U6OmFzc2ln
bihvdGhlcik7IHJldHVybiAqdGhpczsgfQogICAgICAgIERlcXVlQ29uc3RSZXZlcnNlSXRlcmF0
b3ImIG9wZXJhdG9yPShjb25zdCBOb25Db25zdEl0ZXJhdG9yJiBvdGhlcikgeyBCYXNlOjphc3Np
Z24ob3RoZXIpOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgICAgY29uc3QgVCYgb3BlcmF0b3IqKCkg
Y29uc3QgeyByZXR1cm4gKkJhc2U6OmJlZm9yZSgpOyB9CiAgICAgICAgY29uc3QgVCogb3BlcmF0
b3ItPigpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmJlZm9yZSgpOyB9CgogICAgICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmlzRXF1
YWwob3RoZXIpOyB9CiAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gIUJhc2U6OmlzRXF1YWwob3RoZXIpOyB9CgogICAgICAgIEl0ZXJh
dG9yJiBvcGVyYXRvcisrKCkgeyBCYXNlOjpkZWNyZW1lbnQoKTsgcmV0dXJuICp0aGlzOyB9Cgog
ICAgICAgIEl0ZXJhdG9yJiBvcGVyYXRvci0tKCkgeyBCYXNlOjppbmNyZW1lbnQoKTsgcmV0dXJu
ICp0aGlzOyB9CgogICAgfTsKCgoKCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KICAgIHZvaWQgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpjaGVja1Zh
bGlkaXR5KCkgY29uc3QKICAgIHsKCgogICAgICAgIGRvIGlmICghKG1fYnVmZmVyLmNhcGFjaXR5
KCkgIT0gMSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9EZXF1ZS5oIiwgMjY5LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9i
dWZmZXIuY2FwYWNpdHkoKSAhPSAxIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50
ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgaWYgKCFtX2J1ZmZlci5jYXBhY2l0eSgpKSB7
CiAgICAgICAgICAgIGRvIGlmICghKCFtX3N0YXJ0KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWls
dXJlKCIuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlcXVlLmgiLCAyNzIsIF9f
UFJFVFRZX0ZVTkNUSU9OX18sICIhbV9zdGFydCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgp
OyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0g
d2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgIGRvIGlmICghKCFtX2VuZCkp
IHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9EZXF1ZS5oIiwgMjczLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiIW1fZW5kIik7IGRv
IHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0g
MDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICBkbyBpZiAoIShtX3N0YXJ0IDwgbV9idWZmZXIuY2FwYWNp
dHkoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9EZXF1ZS5oIiwgMjc1LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9zdGFy
dCA8IG1fYnVmZmVyLmNhcGFjaXR5KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihp
bnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBkbyBpZiAoIShtX2VuZCA8IG1fYnVm
ZmVyLmNhcGFjaXR5KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVxdWUuaCIsIDI3NiwgX19QUkVUVFlfRlVOQ1RJT05f
XywgIm1fZW5kIDwgbV9idWZmZXIuY2FwYWNpdHkoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFj
ZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7
IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgfQogICAgfQoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIHZvaWQgRGVxdWU8VCwg
aW5saW5lQ2FwYWNpdHk+OjpjaGVja0luZGV4VmFsaWRpdHkoc2l6ZV90IGluZGV4KSBjb25zdAog
ICAgewogICAgICAgIGRvIGlmICghKGluZGV4IDw9IG1fYnVmZmVyLmNhcGFjaXR5KCkpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvRGVxdWUuaCIsIDI4MywgX19QUkVUVFlfRlVOQ1RJT05fXywgImluZGV4IDw9IG1fYnVmZmVy
LmNhcGFjaXR5KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIGlmIChtX3N0YXJ0IDw9IG1fZW5kKSB7CiAgICAgICAgICAgIGRv
IGlmICghKGluZGV4ID49IG1fc3RhcnQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVxdWUuaCIsIDI4NSwgX19QUkVUVFlf
RlVOQ1RJT05fXywgImluZGV4ID49IG1fc3RhcnQiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2Uo
KTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9
IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBkbyBpZiAoIShpbmRleCA8
PSBtX2VuZCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9EZXF1ZS5oIiwgMjg2LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaW5k
ZXggPD0gbV9lbmQiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvIGlmICghKGluZGV4ID49
IG1fc3RhcnQgfHwgaW5kZXggPD0gbV9lbmQpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Ii4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVxdWUuaCIsIDI4OCwgX19QUkVU
VFlfRlVOQ1RJT05fXywgImluZGV4ID49IG1fc3RhcnQgfHwgaW5kZXggPD0gbV9lbmQiKTsgZG8g
eyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAw
OyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAg
IH0KICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiAgICB2b2lkIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6aW52YWxpZGF0ZUl0ZXJhdG9ycygp
CiAgICB7CiAgICAgICAgSXRlcmF0b3JCYXNlKiBuZXh0OwogICAgICAgIGZvciAoSXRlcmF0b3JC
YXNlKiBwID0gbV9pdGVyYXRvcnM7IHA7IHAgPSBuZXh0KSB7CiAgICAgICAgICAgIG5leHQgPSBw
LT5tX25leHQ7CiAgICAgICAgICAgIHAtPm1fZGVxdWUgPSAwOwogICAgICAgICAgICBwLT5tX25l
eHQgPSAwOwogICAgICAgICAgICBwLT5tX3ByZXZpb3VzID0gMDsKICAgICAgICB9CiAgICAgICAg
bV9pdGVyYXRvcnMgPSAwOwogICAgfQoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CiAgICBpbmxpbmUgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpEZXF1
ZSgpCiAgICAgICAgOiBtX3N0YXJ0KDApCiAgICAgICAgLCBtX2VuZCgwKQoKICAgICAgICAsIG1f
aXRlcmF0b3JzKDApCgogICAgewogICAgICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgIH0KCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICBpbmxpbmUgRGVx
dWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpEZXF1ZShjb25zdCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0
eT4mIG90aGVyKQogICAgICAgIDogbV9zdGFydChvdGhlci5tX3N0YXJ0KQogICAgICAgICwgbV9l
bmQob3RoZXIubV9lbmQpCiAgICAgICAgLCBtX2J1ZmZlcihvdGhlci5tX2J1ZmZlci5jYXBhY2l0
eSgpKQoKICAgICAgICAsIG1faXRlcmF0b3JzKDApCgogICAgewogICAgICAgIGNvbnN0IFQqIG90
aGVyQnVmZmVyID0gb3RoZXIubV9idWZmZXIuYnVmZmVyKCk7CiAgICAgICAgaWYgKG1fc3RhcnQg
PD0gbV9lbmQpCiAgICAgICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShv
dGhlckJ1ZmZlciArIG1fc3RhcnQsIG90aGVyQnVmZmVyICsgbV9lbmQsIG1fYnVmZmVyLmJ1ZmZl
cigpICsgbV9zdGFydCk7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIFR5cGVPcGVyYXRpb25z
Ojp1bmluaXRpYWxpemVkQ29weShvdGhlckJ1ZmZlciwgb3RoZXJCdWZmZXIgKyBtX2VuZCwgbV9i
dWZmZXIuYnVmZmVyKCkpOwogICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXpl
ZENvcHkob3RoZXJCdWZmZXIgKyBtX3N0YXJ0LCBvdGhlckJ1ZmZlciArIG1fYnVmZmVyLmNhcGFj
aXR5KCksIG1fYnVmZmVyLmJ1ZmZlcigpICsgbV9zdGFydCk7CiAgICAgICAgfQogICAgfQoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIHZvaWQgZGVs
ZXRlQWxsVmFsdWVzKGNvbnN0IERlcXVlPFQsIGlubGluZUNhcGFjaXR5PiYgY29sbGVjdGlvbikK
ICAgIHsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6
Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlv
bi5lbmQoKTsKICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gY29sbGVjdGlvbi5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgIGRlbGV0ZSAqaXQ7CiAgICB9CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgaW5saW5lIERlcXVlPFQs
IGlubGluZUNhcGFjaXR5PiYgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpvcGVyYXRvcj0oY29u
c3QgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+JiBvdGhlcikKICAgIHsKCgogICAgICAgIERlcXVl
PFQ+IGNvcHkob3RoZXIpOwogICAgICAgIHN3YXAoY29weSk7CiAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4K
ICAgIGlubGluZSB2b2lkIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6ZGVzdHJveUFsbCgpCiAg
ICB7CiAgICAgICAgaWYgKG1fc3RhcnQgPD0gbV9lbmQpCiAgICAgICAgICAgIFR5cGVPcGVyYXRp
b25zOjpkZXN0cnVjdChtX2J1ZmZlci5idWZmZXIoKSArIG1fc3RhcnQsIG1fYnVmZmVyLmJ1ZmZl
cigpICsgbV9lbmQpOwogICAgICAgIGVsc2UgewogICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6
ZGVzdHJ1Y3QobV9idWZmZXIuYnVmZmVyKCksIG1fYnVmZmVyLmJ1ZmZlcigpICsgbV9lbmQpOwog
ICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6ZGVzdHJ1Y3QobV9idWZmZXIuYnVmZmVyKCkgKyBt
X3N0YXJ0LCBtX2J1ZmZlci5idWZmZXIoKSArIG1fYnVmZmVyLmNhcGFjaXR5KCkpOwogICAgICAg
IH0KICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiAgICBpbmxpbmUgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+Ojp+RGVxdWUoKQogICAgewogICAg
ICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAgICAg
ICAgZGVzdHJveUFsbCgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KICAgIGlubGluZSB2b2lkIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6
c3dhcChEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT4mIG90aGVyKQogICAgewogICAgICAgIGNoZWNr
VmFsaWRpdHkoKTsKICAgICAgICBvdGhlci5jaGVja1ZhbGlkaXR5KCk7CiAgICAgICAgaW52YWxp
ZGF0ZUl0ZXJhdG9ycygpOwogICAgICAgIHN0ZDo6c3dhcChtX3N0YXJ0LCBvdGhlci5tX3N0YXJ0
KTsKICAgICAgICBzdGQ6OnN3YXAobV9lbmQsIG90aGVyLm1fZW5kKTsKICAgICAgICBtX2J1ZmZl
ci5zd2FwKG90aGVyLm1fYnVmZmVyKTsKICAgICAgICBjaGVja1ZhbGlkaXR5KCk7CiAgICAgICAg
b3RoZXIuY2hlY2tWYWxpZGl0eSgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIGlubGluZSB2b2lkIERlcXVlPFQsIGlubGluZUNhcGFj
aXR5Pjo6Y2xlYXIoKQogICAgewogICAgICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgICAgICBpbnZh
bGlkYXRlSXRlcmF0b3JzKCk7CiAgICAgICAgZGVzdHJveUFsbCgpOwogICAgICAgIG1fc3RhcnQg
PSAwOwogICAgICAgIG1fZW5kID0gMDsKICAgICAgICBjaGVja1ZhbGlkaXR5KCk7CiAgICB9Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgUHJlZGljYXRlPgogICAgaW5saW5lIERlcXVlSXRlcmF0b3I8VCwgaW5saW5l
Q2FwYWNpdHk+IERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6ZmluZElmKFByZWRpY2F0ZSYgcHJl
ZGljYXRlKQogICAgewogICAgICAgIGl0ZXJhdG9yIGVuZF9pdGVyYXRvciA9IGVuZCgpOwogICAg
ICAgIGZvciAoaXRlcmF0b3IgaXQgPSBiZWdpbigpOyBpdCAhPSBlbmRfaXRlcmF0b3I7ICsraXQp
IHsKICAgICAgICAgICAgaWYgKHByZWRpY2F0ZSgqaXQpKQogICAgICAgICAgICAgICAgcmV0dXJu
IGl0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gZW5kX2l0ZXJhdG9yOwogICAgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIGlubGluZSB2b2lk
IERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6ZXhwYW5kQ2FwYWNpdHlJZk5lZWRlZCgpCiAgICB7
CiAgICAgICAgaWYgKG1fc3RhcnQpIHsKICAgICAgICAgICAgaWYgKG1fZW5kICsgMSAhPSBtX3N0
YXJ0KQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSBpZiAobV9lbmQpIHsK
ICAgICAgICAgICAgaWYgKG1fZW5kICE9IG1fYnVmZmVyLmNhcGFjaXR5KCkgLSAxKQogICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSBpZiAobV9idWZmZXIuY2FwYWNpdHkoKSkK
ICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBleHBhbmRDYXBhY2l0eSgpOwogICAgfQoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIHZvaWQgRGVx
dWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpleHBhbmRDYXBhY2l0eSgpCiAgICB7CiAgICAgICAgY2hl
Y2tWYWxpZGl0eSgpOwogICAgICAgIHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYnVmZmVyLmNhcGFj
aXR5KCk7CiAgICAgICAgc2l6ZV90IG5ld0NhcGFjaXR5ID0gbWF4KHN0YXRpY19jYXN0PHNpemVf
dD4oMTYpLCBvbGRDYXBhY2l0eSArIG9sZENhcGFjaXR5IC8gNCArIDEpOwogICAgICAgIFQqIG9s
ZEJ1ZmZlciA9IG1fYnVmZmVyLmJ1ZmZlcigpOwogICAgICAgIG1fYnVmZmVyLmFsbG9jYXRlQnVm
ZmVyKG5ld0NhcGFjaXR5KTsKICAgICAgICBpZiAobV9zdGFydCA8PSBtX2VuZCkKICAgICAgICAg
ICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUob2xkQnVmZmVyICsgbV9zdGFydCwgb2xkQnVmZmVyICsg
bV9lbmQsIG1fYnVmZmVyLmJ1ZmZlcigpICsgbV9zdGFydCk7CiAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlKG9sZEJ1ZmZlciwgb2xkQnVmZmVyICsgbV9lbmQs
IG1fYnVmZmVyLmJ1ZmZlcigpKTsKICAgICAgICAgICAgc2l6ZV90IG5ld1N0YXJ0ID0gbmV3Q2Fw
YWNpdHkgLSAob2xkQ2FwYWNpdHkgLSBtX3N0YXJ0KTsKICAgICAgICAgICAgVHlwZU9wZXJhdGlv
bnM6Om1vdmUob2xkQnVmZmVyICsgbV9zdGFydCwgb2xkQnVmZmVyICsgb2xkQ2FwYWNpdHksIG1f
YnVmZmVyLmJ1ZmZlcigpICsgbmV3U3RhcnQpOwogICAgICAgICAgICBtX3N0YXJ0ID0gbmV3U3Rh
cnQ7CiAgICAgICAgfQogICAgICAgIG1fYnVmZmVyLmRlYWxsb2NhdGVCdWZmZXIob2xkQnVmZmVy
KTsKICAgICAgICBjaGVja1ZhbGlkaXR5KCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgaW5saW5lIHR5cGVuYW1lIERlcXVlPFQsIGlu
bGluZUNhcGFjaXR5Pjo6UGFzc1R5cGUgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+Ojp0YWtlRmly
c3QoKQogICAgewogICAgICAgIFQgb2xkRmlyc3QgPSBQYXNzOjp0cmFuc2ZlcihmaXJzdCgpKTsK
ICAgICAgICByZW1vdmVGaXJzdCgpOwogICAgICAgIHJldHVybiBQYXNzOjp0cmFuc2ZlcihvbGRG
aXJzdCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogICAgaW5saW5lIHZvaWQgRGVxdWU8VCwgaW5saW5l
Q2FwYWNpdHk+OjphcHBlbmQoY29uc3QgVSYgdmFsdWUpCiAgICB7CiAgICAgICAgY2hlY2tWYWxp
ZGl0eSgpOwogICAgICAgIGV4cGFuZENhcGFjaXR5SWZOZWVkZWQoKTsKICAgICAgICBuZXcgKCZt
X2J1ZmZlci5idWZmZXIoKVttX2VuZF0pIFQodmFsdWUpOwogICAgICAgIGlmIChtX2VuZCA9PSBt
X2J1ZmZlci5jYXBhY2l0eSgpIC0gMSkKICAgICAgICAgICAgbV9lbmQgPSAwOwogICAgICAgIGVs
c2UKICAgICAgICAgICAgKyttX2VuZDsKICAgICAgICBjaGVja1ZhbGlkaXR5KCk7CiAgICB9Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgogICAgaW5saW5lIHZvaWQgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpwcmVw
ZW5kKGNvbnN0IFUmIHZhbHVlKQogICAgewogICAgICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgICAg
ICBleHBhbmRDYXBhY2l0eUlmTmVlZGVkKCk7CiAgICAgICAgaWYgKCFtX3N0YXJ0KQogICAgICAg
ICAgICBtX3N0YXJ0ID0gbV9idWZmZXIuY2FwYWNpdHkoKSAtIDE7CiAgICAgICAgZWxzZQogICAg
ICAgICAgICAtLW1fc3RhcnQ7CiAgICAgICAgbmV3ICgmbV9idWZmZXIuYnVmZmVyKClbbV9zdGFy
dF0pIFQodmFsdWUpOwogICAgICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICBpbmxpbmUgdm9pZCBEZXF1
ZTxULCBpbmxpbmVDYXBhY2l0eT46OnJlbW92ZUZpcnN0KCkKICAgIHsKICAgICAgICBjaGVja1Zh
bGlkaXR5KCk7CiAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogICAgICAgIGRvIGlmICgh
KCFpc0VtcHR5KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVxdWUuaCIsIDQ4MywgX19QUkVUVFlfRlVOQ1RJT05fXywg
IiFpc0VtcHR5KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0
cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOwogICAgICAgIFR5cGVPcGVyYXRpb25zOjpkZXN0cnVjdCgmbV9idWZmZXIuYnVm
ZmVyKClbbV9zdGFydF0sICZtX2J1ZmZlci5idWZmZXIoKVttX3N0YXJ0ICsgMV0pOwogICAgICAg
IGlmIChtX3N0YXJ0ID09IG1fYnVmZmVyLmNhcGFjaXR5KCkgLSAxKQogICAgICAgICAgICBtX3N0
YXJ0ID0gMDsKICAgICAgICBlbHNlCiAgICAgICAgICAgICsrbV9zdGFydDsKICAgICAgICBjaGVj
a1ZhbGlkaXR5KCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5PgogICAgaW5saW5lIHZvaWQgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpyZW1v
dmUoaXRlcmF0b3ImIGl0KQogICAgewogICAgICAgIGl0LmNoZWNrVmFsaWRpdHkoKTsKICAgICAg
ICByZW1vdmUoaXQubV9pbmRleCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgogICAgaW5saW5lIHZvaWQgRGVxdWU8VCwgaW5saW5lQ2FwYWNp
dHk+OjpyZW1vdmUoY29uc3RfaXRlcmF0b3ImIGl0KQogICAgewogICAgICAgIGl0LmNoZWNrVmFs
aWRpdHkoKTsKICAgICAgICByZW1vdmUoaXQubV9pbmRleCk7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgaW5saW5lIHZvaWQgRGVxdWU8
VCwgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmUoc2l6ZV90IHBvc2l0aW9uKQogICAgewogICAgICAg
IGlmIChwb3NpdGlvbiA9PSBtX2VuZCkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBjaGVj
a1ZhbGlkaXR5KCk7CiAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwoKICAgICAgICBUKiBi
dWZmZXIgPSBtX2J1ZmZlci5idWZmZXIoKTsKICAgICAgICBUeXBlT3BlcmF0aW9uczo6ZGVzdHJ1
Y3QoJmJ1ZmZlcltwb3NpdGlvbl0sICZidWZmZXJbcG9zaXRpb24gKyAxXSk7CgoKICAgICAgICBp
ZiAocG9zaXRpb24gPj0gbV9zdGFydCkgewogICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92
ZU92ZXJsYXBwaW5nKGJ1ZmZlciArIG1fc3RhcnQsIGJ1ZmZlciArIHBvc2l0aW9uLCBidWZmZXIg
KyBtX3N0YXJ0ICsgMSk7CiAgICAgICAgICAgIG1fc3RhcnQgPSAobV9zdGFydCArIDEpICUgbV9i
dWZmZXIuY2FwYWNpdHkoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBUeXBlT3BlcmF0
aW9uczo6bW92ZU92ZXJsYXBwaW5nKGJ1ZmZlciArIHBvc2l0aW9uICsgMSwgYnVmZmVyICsgbV9l
bmQsIGJ1ZmZlciArIHBvc2l0aW9uKTsKICAgICAgICAgICAgbV9lbmQgPSAobV9lbmQgLSAxICsg
bV9idWZmZXIuY2FwYWNpdHkoKSkgJSBtX2J1ZmZlci5jYXBhY2l0eSgpOwogICAgICAgIH0KICAg
ICAgICBjaGVja1ZhbGlkaXR5KCk7CiAgICB9CgoKCgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgdm9pZCBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBp
bmxpbmVDYXBhY2l0eT46OmNoZWNrVmFsaWRpdHkoKSBjb25zdAogICAgewogICAgICAgIGRvIGlm
ICghKG1fZGVxdWUpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVxdWUuaCIsIDUzOCwgX19QUkVUVFlfRlVOQ1RJT05fXywg
Im1fZGVxdWUiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90
KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOwogICAgICAgIG1fZGVxdWUtPmNoZWNrSW5kZXhWYWxpZGl0eShtX2luZGV4KTsKICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICB2
b2lkIERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5Pjo6Y2hlY2tWYWxpZGl0eShj
b25zdCBCYXNlJiBvdGhlcikgY29uc3QKICAgIHsKICAgICAgICBjaGVja1ZhbGlkaXR5KCk7CiAg
ICAgICAgb3RoZXIuY2hlY2tWYWxpZGl0eSgpOwogICAgICAgIGRvIGlmICghKG1fZGVxdWUgPT0g
b3RoZXIubV9kZXF1ZSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EZXF1ZS5oIiwgNTQ3LCBfX1BSRVRUWV9GVU5DVElPTl9f
LCAibV9kZXF1ZSA9PSBvdGhlci5tX2RlcXVlIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7
ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICB2b2lkIERlcXVlSXRlcmF0b3JCYXNlPFQsIGlu
bGluZUNhcGFjaXR5Pjo6YWRkVG9JdGVyYXRvcnNMaXN0KCkKICAgIHsKICAgICAgICBpZiAoIW1f
ZGVxdWUpCiAgICAgICAgICAgIG1fbmV4dCA9IDA7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
IG1fbmV4dCA9IG1fZGVxdWUtPm1faXRlcmF0b3JzOwogICAgICAgICAgICBtX2RlcXVlLT5tX2l0
ZXJhdG9ycyA9IHRoaXM7CiAgICAgICAgICAgIGlmIChtX25leHQpCiAgICAgICAgICAgICAgICBt
X25leHQtPm1fcHJldmlvdXMgPSB0aGlzOwogICAgICAgIH0KICAgICAgICBtX3ByZXZpb3VzID0g
MDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiAgICB2b2lkIERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlRnJv
bUl0ZXJhdG9yc0xpc3QoKQogICAgewogICAgICAgIGlmICghbV9kZXF1ZSkgewogICAgICAgICAg
ICBkbyBpZiAoISghbV9uZXh0KSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlcXVlLmgiLCA1NjgsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sICIhbV9uZXh0Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVp
bnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgZG8gaWYgKCEoIW1fcHJldmlvdXMpKSB7IFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
RGVxdWUuaCIsIDU2OSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFtX3ByZXZpb3VzIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICBpZiAobV9uZXh0KSB7CiAgICAgICAgICAgICAgICBkbyBpZiAo
IShtX25leHQtPm1fcHJldmlvdXMgPT0gdGhpcykpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EZXF1ZS5oIiwgNTcyLCBfX1BS
RVRUWV9GVU5DVElPTl9fLCAibV9uZXh0LT5tX3ByZXZpb3VzID09IHRoaXMiKTsgZG8geyBXVEZS
ZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZv
aWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAg
ICAgbV9uZXh0LT5tX3ByZXZpb3VzID0gbV9wcmV2aW91czsKICAgICAgICAgICAgfQogICAgICAg
ICAgICBpZiAobV9wcmV2aW91cykgewogICAgICAgICAgICAgICAgZG8gaWYgKCEobV9kZXF1ZS0+
bV9pdGVyYXRvcnMgIT0gdGhpcykpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EZXF1ZS5oIiwgNTc2LCBfX1BSRVRUWV9GVU5D
VElPTl9fLCAibV9kZXF1ZS0+bV9pdGVyYXRvcnMgIT0gdGhpcyIpOyBkbyB7IFdURlJlcG9ydEJh
Y2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgp
KTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBkbyBp
ZiAoIShtX3ByZXZpb3VzLT5tX25leHQgPT0gdGhpcykpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFp
bHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EZXF1ZS5oIiwgNTc3LCBf
X1BSRVRUWV9GVU5DVElPTl9fLCAibV9wcmV2aW91cy0+bV9uZXh0ID09IHRoaXMiKTsgZG8geyBX
VEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAo
KHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAg
ICAgICAgbV9wcmV2aW91cy0+bV9uZXh0ID0gbV9uZXh0OwogICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgZG8gaWYgKCEobV9kZXF1ZS0+bV9pdGVyYXRvcnMgPT0gdGhpcykpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9EZXF1ZS5oIiwgNTgwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9kZXF1ZS0+bV9pdGVy
YXRvcnMgPT0gdGhpcyIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50
cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsg
fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBtX2RlcXVlLT5tX2l0ZXJhdG9ycyA9IG1fbmV4
dDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBtX25leHQgPSAwOwogICAgICAgIG1f
cHJldmlvdXMgPSAwOwogICAgfQoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CiAgICBpbmxpbmUgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNp
dHk+OjpEZXF1ZUl0ZXJhdG9yQmFzZSgpCiAgICAgICAgOiBtX2RlcXVlKDApCiAgICB7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgaW5s
aW5lIERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5Pjo6RGVxdWVJdGVyYXRvckJh
c2UoY29uc3QgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+KiBkZXF1ZSwgc2l6ZV90IGluZGV4KQog
ICAgICAgIDogbV9kZXF1ZShjb25zdF9jYXN0PERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pio+KGRl
cXVlKSkKICAgICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICB7CiAgICAgICAgYWRkVG9JdGVyYXRv
cnNMaXN0KCk7CiAgICAgICAgY2hlY2tWYWxpZGl0eSgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIGlubGluZSBEZXF1ZUl0ZXJhdG9y
QmFzZTxULCBpbmxpbmVDYXBhY2l0eT46OkRlcXVlSXRlcmF0b3JCYXNlKGNvbnN0IEJhc2UmIG90
aGVyKQogICAgICAgIDogbV9kZXF1ZShvdGhlci5tX2RlcXVlKQogICAgICAgICwgbV9pbmRleChv
dGhlci5tX2luZGV4KQogICAgewogICAgICAgIGFkZFRvSXRlcmF0b3JzTGlzdCgpOwogICAgICAg
IGNoZWNrVmFsaWRpdHkoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CiAgICBpbmxpbmUgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2Fw
YWNpdHk+JiBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBpbmxpbmVDYXBhY2l0eT46Om9wZXJhdG9yPShj
b25zdCBCYXNlJiBvdGhlcikKICAgIHsKICAgICAgICBvdGhlci5jaGVja1ZhbGlkaXR5KCk7CiAg
ICAgICAgcmVtb3ZlRnJvbUl0ZXJhdG9yc0xpc3QoKTsKCiAgICAgICAgbV9kZXF1ZSA9IG90aGVy
Lm1fZGVxdWU7CiAgICAgICAgbV9pbmRleCA9IG90aGVyLm1faW5kZXg7CiAgICAgICAgYWRkVG9J
dGVyYXRvcnNMaXN0KCk7CiAgICAgICAgY2hlY2tWYWxpZGl0eSgpOwogICAgICAgIHJldHVybiAq
dGhpczsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+CiAgICBpbmxpbmUgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+Ojp+RGVx
dWVJdGVyYXRvckJhc2UoKQogICAgewoKICAgICAgICByZW1vdmVGcm9tSXRlcmF0b3JzTGlzdCgp
OwogICAgICAgIG1fZGVxdWUgPSAwOwoKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICBpbmxpbmUgYm9vbCBEZXF1ZUl0ZXJhdG9yQmFzZTxU
LCBpbmxpbmVDYXBhY2l0eT46OmlzRXF1YWwoY29uc3QgQmFzZSYgb3RoZXIpIGNvbnN0CiAgICB7
CiAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7CiAgICAgICAgcmV0dXJuIG1faW5kZXggPT0g
b3RoZXIubV9pbmRleDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CiAgICBpbmxpbmUgdm9pZCBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBpbmxpbmVD
YXBhY2l0eT46OmluY3JlbWVudCgpCiAgICB7CiAgICAgICAgY2hlY2tWYWxpZGl0eSgpOwogICAg
ICAgIGRvIGlmICghKG1faW5kZXggIT0gbV9kZXF1ZS0+bV9lbmQpKSB7IFdURlJlcG9ydEFzc2Vy
dGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVxdWUuaCIs
IDY0NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1faW5kZXggIT0gbV9kZXF1ZS0+bV9lbmQiKTsg
ZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYg
PSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAg
ICAgIGRvIGlmICghKG1fZGVxdWUtPm1fYnVmZmVyLmNhcGFjaXR5KCkpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVxdWUu
aCIsIDY0NywgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fZGVxdWUtPm1fYnVmZmVyLmNhcGFjaXR5
KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJh
ZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
OwogICAgICAgIGlmIChtX2luZGV4ID09IG1fZGVxdWUtPm1fYnVmZmVyLmNhcGFjaXR5KCkgLSAx
KQogICAgICAgICAgICBtX2luZGV4ID0gMDsKICAgICAgICBlbHNlCiAgICAgICAgICAgICsrbV9p
bmRleDsKICAgICAgICBjaGVja1ZhbGlkaXR5KCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgaW5saW5lIHZvaWQgRGVxdWVJdGVyYXRv
ckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+OjpkZWNyZW1lbnQoKQogICAgewogICAgICAgIGNoZWNr
VmFsaWRpdHkoKTsKICAgICAgICBkbyBpZiAoIShtX2luZGV4ICE9IG1fZGVxdWUtPm1fc3RhcnQp
KSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvRGVxdWUuaCIsIDY1OSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1faW5kZXggIT0g
bV9kZXF1ZS0+bV9zdGFydCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8gaWYgKCEobV9kZXF1ZS0+bV9idWZmZXIuY2FwYWNp
dHkoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9EZXF1ZS5oIiwgNjYwLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAibV9kZXF1
ZS0+bV9idWZmZXIuY2FwYWNpdHkoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgaWYgKCFtX2luZGV4KQogICAgICAgICAgICBt
X2luZGV4ID0gbV9kZXF1ZS0+bV9idWZmZXIuY2FwYWNpdHkoKSAtIDE7CiAgICAgICAgZWxzZQog
ICAgICAgICAgICAtLW1faW5kZXg7CiAgICAgICAgY2hlY2tWYWxpZGl0eSgpOwogICAgfQoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgIGlubGluZSBU
KiBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBpbmxpbmVDYXBhY2l0eT46OmFmdGVyKCkgY29uc3QKICAg
IHsKICAgICAgICBjaGVja1ZhbGlkaXR5KCk7CiAgICAgICAgZG8gaWYgKCEobV9pbmRleCAhPSBt
X2RlcXVlLT5tX2VuZCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EZXF1ZS5oIiwgNjcyLCBfX1BSRVRUWV9GVU5DVElPTl9f
LCAibV9pbmRleCAhPSBtX2RlcXVlLT5tX2VuZCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgp
OyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0g
d2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuICZtX2RlcXVlLT5tX2J1
ZmZlci5idWZmZXIoKVttX2luZGV4XTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICBpbmxpbmUgVCogRGVxdWVJdGVyYXRvckJhc2U8VCwg
aW5saW5lQ2FwYWNpdHk+OjpiZWZvcmUoKSBjb25zdAogICAgewogICAgICAgIGNoZWNrVmFsaWRp
dHkoKTsKICAgICAgICBkbyBpZiAoIShtX2luZGV4ICE9IG1fZGVxdWUtPm1fc3RhcnQpKSB7IFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvRGVxdWUuaCIsIDY4MCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1faW5kZXggIT0gbV9kZXF1
ZS0+bV9zdGFydCIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRy
X3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgaWYgKCFtX2luZGV4KQogICAgICAgICAgICByZXR1cm4gJm1fZGVx
dWUtPm1fYnVmZmVyLmJ1ZmZlcigpW21fZGVxdWUtPm1fYnVmZmVyLmNhcGFjaXR5KCkgLSAxXTsK
ICAgICAgICByZXR1cm4gJm1fZGVxdWUtPm1fYnVmZmVyLmJ1ZmZlcigpW21faW5kZXggLSAxXTsK
ICAgIH0KCn0KCnVzaW5nIFdURjo6RGVxdWU7CiMgNDcgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIiAyCgoKCgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgQVhPYmpl
Y3RDYWNoZTsKY2xhc3MgQXR0cjsKY2xhc3MgQ0RBVEFTZWN0aW9uOwpjbGFzcyBDU1NQcmltaXRp
dmVWYWx1ZUNhY2hlOwpjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwpjbGFzcyBDU1NTdHlsZVNl
bGVjdG9yOwpjbGFzcyBDU1NTdHlsZVNoZWV0OwpjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0Owpj
bGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKY2xhc3MgQ2FjaGVkU2NyaXB0OwpjbGFzcyBDYW52
YXNSZW5kZXJpbmdDb250ZXh0OwpjbGFzcyBDaGFyYWN0ZXJEYXRhOwpjbGFzcyBDb21tZW50Owpj
bGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7CmNsYXNzIERPTUltcGxlbWVudGF0aW9uOwpjbGFz
cyBET01TZWxlY3Rpb247CmNsYXNzIERPTVdpbmRvdzsKY2xhc3MgRGF0YWJhc2U7CmNsYXNzIERh
dGFiYXNlVGhyZWFkOwpjbGFzcyBEb2N1bWVudEZyYWdtZW50OwpjbGFzcyBEb2N1bWVudExvYWRl
cjsKY2xhc3MgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOwpjbGFzcyBEb2N1bWVudFR5cGU7CmNs
YXNzIERvY3VtZW50V2Vha1JlZmVyZW5jZTsKY2xhc3MgRWRpdGluZ1RleHQ7CmNsYXNzIEVsZW1l
bnQ7CmNsYXNzIEVudGl0eVJlZmVyZW5jZTsKY2xhc3MgRXZlbnQ7CmNsYXNzIEV2ZW50TGlzdGVu
ZXI7CmNsYXNzIEV2ZW50UXVldWU7CmNsYXNzIEZvbnREYXRhOwpjbGFzcyBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQ7CmNsYXNzIEZyYW1lOwpjbGFzcyBGcmFtZVZpZXc7CmNsYXNzIEhUTUxDYW52YXNF
bGVtZW50OwpjbGFzcyBIVE1MQ29sbGVjdGlvbjsKY2xhc3MgSFRNTEFsbENvbGxlY3Rpb247CmNs
YXNzIEhUTUxEb2N1bWVudDsKY2xhc3MgSFRNTEVsZW1lbnQ7CmNsYXNzIEhUTUxGb3JtRWxlbWVu
dDsKY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwpjbGFzcyBIVE1MSGVhZEVsZW1lbnQ7CmNs
YXNzIEhUTUxJbnB1dEVsZW1lbnQ7CmNsYXNzIEhUTUxNYXBFbGVtZW50OwpjbGFzcyBIaXRUZXN0
UmVxdWVzdDsKY2xhc3MgSGl0VGVzdFJlc3VsdDsKY2xhc3MgSW50UG9pbnQ7CmNsYXNzIERPTVdy
YXBwZXJXb3JsZDsKY2xhc3MgSlNOb2RlOwpjbGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVuZXI7CmNs
YXNzIE1lZGlhUXVlcnlMaXN0OwpjbGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKY2xhc3MgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0czsKY2xhc3MgTm9kZUZpbHRlcjsKY2xhc3MgTm9kZUl0ZXJh
dG9yOwpjbGFzcyBQYWdlOwpjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CmNsYXNzIFByb2Nlc3Np
bmdJbnN0cnVjdGlvbjsKY2xhc3MgUmFuZ2U7CmNsYXNzIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
OwpjbGFzcyBSZW5kZXJBcmVuYTsKY2xhc3MgUmVuZGVyVmlldzsKY2xhc3MgUmVuZGVyRnVsbFNj
cmVlbjsKY2xhc3MgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOwpjbGFzcyBTY3JpcHRFbGVtZW50
RGF0YTsKY2xhc3MgU2NyaXB0UnVubmVyOwpjbGFzcyBTZWN1cml0eU9yaWdpbjsKY2xhc3MgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOwpjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CmNsYXNzIFNldHRpbmdz
OwpjbGFzcyBTdHlsZVNoZWV0OwpjbGFzcyBTdHlsZVNoZWV0TGlzdDsKY2xhc3MgVGV4dDsKY2xh
c3MgVGV4dFJlc291cmNlRGVjb2RlcjsKY2xhc3MgRG9jdW1lbnRQYXJzZXI7CmNsYXNzIFRyZWVX
YWxrZXI7CmNsYXNzIFhNTEh0dHBSZXF1ZXN0OwoKCmNsYXNzIFNWR0RvY3VtZW50RXh0ZW5zaW9u
czsKCgoKY2xhc3MgVHJhbnNmb3JtU291cmNlOwoKCgpjbGFzcyBYUGF0aEV2YWx1YXRvcjsKY2xh
c3MgWFBhdGhFeHByZXNzaW9uOwpjbGFzcyBYUGF0aE5TUmVzb2x2ZXI7CmNsYXNzIFhQYXRoUmVz
dWx0OwoKCgoKCgoKY2xhc3MgVG91Y2g7CmNsYXNzIFRvdWNoTGlzdDsKCgoKCgoKCnR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CgpjbGFzcyBGb3JtRWxlbWVudEtleSB7CnB1YmxpYzoKICAgIEZv
cm1FbGVtZW50S2V5KEF0b21pY1N0cmluZ0ltcGwqID0gMCwgQXRvbWljU3RyaW5nSW1wbCogPSAw
KTsKICAgIH5Gb3JtRWxlbWVudEtleSgpOwogICAgRm9ybUVsZW1lbnRLZXkoY29uc3QgRm9ybUVs
ZW1lbnRLZXkmKTsKICAgIEZvcm1FbGVtZW50S2V5JiBvcGVyYXRvcj0oY29uc3QgRm9ybUVsZW1l
bnRLZXkmKTsKCiAgICBBdG9taWNTdHJpbmdJbXBsKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9CiAgICBBdG9taWNTdHJpbmdJbXBsKiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CgoKICAgIEZvcm1FbGVtZW50S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkg
OiBtX25hbWUoaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpIHsgfQogICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9PSBoYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQoKcHJpdmF0ZToKICAgIHZvaWQgcmVmKCkgY29uc3Q7CiAgICB2b2lkIGRlcmVm
KCkgY29uc3Q7CgogICAgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGhhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KC0xKTsg
fQoKICAgIEF0b21pY1N0cmluZ0ltcGwqIG1fbmFtZTsKICAgIEF0b21pY1N0cmluZ0ltcGwqIG1f
dHlwZTsKfTsKCmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9ybUVsZW1lbnRLZXkmIGEs
IGNvbnN0IEZvcm1FbGVtZW50S2V5JiBiKQp7CiAgICByZXR1cm4gYS5uYW1lKCkgPT0gYi5uYW1l
KCkgJiYgYS50eXBlKCkgPT0gYi50eXBlKCk7Cn0KCnN0cnVjdCBGb3JtRWxlbWVudEtleUhhc2gg
ewogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgRm9ybUVsZW1lbnRLZXkmKTsKICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IEZvcm1FbGVtZW50S2V5JiBhLCBjb25zdCBGb3JtRWxlbWVu
dEtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CiAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cn07CgpzdHJ1Y3QgRm9ybUVsZW1lbnRLZXlI
YXNoVHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxGb3JtRWxlbWVudEtleT4gewogICAg
c3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEZvcm1FbGVtZW50S2V5JiBzbG90KSB7
IG5ldyAoJnNsb3QpIEZvcm1FbGVtZW50S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsg
fQogICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgRm9ybUVsZW1lbnRLZXkmIHZh
bHVlKSB7IHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cn07CgplbnVt
IFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5jZSB7CiAgICBQYWdlc2hvd0V2ZW50Tm90UGVyc2lzdGVk
ID0gMCwKICAgIFBhZ2VzaG93RXZlbnRQZXJzaXN0ZWQgPSAxCn07CgplbnVtIFN0eWxlU2VsZWN0
b3JVcGRhdGVGbGFnIHsgUmVjYWxjU3R5bGVJbW1lZGlhdGVseSwgRGVmZXJSZWNhbGNTdHlsZSB9
OwoKY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCB7CnB1YmxpYzoKICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICB7CiAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBEb2N1bWVudChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpKTsKICAgIH0KICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUsIGNv
bnN0IEtVUkwmIHVybCkKICAgIHsKICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50
KGZyYW1lLCB1cmwsIHRydWUsIGZhbHNlKSk7CiAgICB9CiAgICB2aXJ0dWFsIH5Eb2N1bWVudCgp
OwoKICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8RWxlbWVudCosIDY0PiBGb3JtRWxlbWVudExpc3RI
YXNoU2V0OwogICAgY29uc3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCogZ2V0Rm9ybUVsZW1lbnRz
KCkgY29uc3QgeyByZXR1cm4gJm1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlOyB9CgogICAgTWVkaWFR
dWVyeU1hdGNoZXIqIG1lZGlhUXVlcnlNYXRjaGVyKCk7CgogICAgdXNpbmcgVHJlZVNjb3BlOjpy
ZWY7CiAgICB1c2luZyBUcmVlU2NvcGU6OmRlcmVmOwoKCgoKCgogICAgdm9pZCBndWFyZFJlZigp
CiAgICB7CiAgICAgICAgZG8gaWYgKCEoIW1fZGVsZXRpb25IYXNCZWd1bikpIHsgV1RGUmVwb3J0
QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgi
LCAyMzcsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbV9kZWxldGlvbkhhc0JlZ3VuIik7IGRvIHsg
V1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsg
KCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICAr
K21fZ3VhcmRSZWZDb3VudDsKICAgIH0KCiAgICB2b2lkIGd1YXJkRGVyZWYoKQogICAgewogICAg
ICAgIGRvIGlmICghKCFtX2RlbGV0aW9uSGFzQmVndW4pKSB7IFdURlJlcG9ydEFzc2VydGlvbkZh
aWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIiwgMjQzLCBfX1BS
RVRUWV9GVU5DVElPTl9fLCAiIW1fZGVsZXRpb25IYXNCZWd1biIpOyBkbyB7IFdURlJlcG9ydEJh
Y2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgp
KTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgLS1tX2d1YXJkUmVm
Q291bnQ7CiAgICAgICAgaWYgKCFtX2d1YXJkUmVmQ291bnQgJiYgIXJlZkNvdW50KCkpIHsKCiAg
ICAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CgogICAgICAgICAgICBkZWxldGUg
dGhpczsKICAgICAgICB9CiAgICB9CgogICAgdmlydHVhbCB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7
CgogICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29u
c3Q7CgogICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQoKICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUFjY2Vzc0tleShjb25zdCBT
dHJpbmcmIGtleSk7CiAgICB2b2lkIGludmFsaWRhdGVBY2Nlc3NLZXlNYXAoKTsKCgoKICAgIEV2
ZW50TGlzdGVuZXIqIG9uYWJvcnQoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50KTsgfSB2b2lkIHNldE9uYWJvcnQoUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5hYm9ydEV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbmNo
YW5nZSgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNo
YW5nZUV2ZW50KTsgfSB2b2lkIHNldE9uY2hhbmdlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdl
RXZlbnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xpY2soKSB7IHJldHVy
biBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KTsgfSB2
b2lkIHNldE9uY2xpY2soUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lcik7
IH07CiAgICBFdmVudExpc3RlbmVyKiBvbmNvbnRleHRtZW51KCkgeyByZXR1cm4gZ2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVudCk7IH0gdm9pZCBz
ZXRPbmNvbnRleHRtZW51KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVudCwgbGlz
dGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25kYmxjbGljaygpIHsgcmV0dXJuIGdldEF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmRibGNsaWNrRXZlbnQpOyB9IHZvaWQg
c2V0T25kYmxjbGljayhQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmRibGNsaWNrRXZlbnQsIGxpc3RlbmVy
KTsgfTsKICAgIEV2ZW50TGlzdGVuZXIqIG9uZHJhZ2VudGVyKCkgeyByZXR1cm4gZ2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZHJhZ2VudGVyRXZlbnQpOyB9IHZvaWQgc2V0
T25kcmFnZW50ZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kcmFnZW50ZXJFdmVudCwgbGlzdGVuZXIp
OyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25kcmFnb3ZlcigpIHsgcmV0dXJuIGdldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmRyYWdvdmVyRXZlbnQpOyB9IHZvaWQgc2V0T25k
cmFnb3ZlcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmRyYWdvdmVyRXZlbnQsIGxpc3RlbmVyKTsgfTsK
ICAgIEV2ZW50TGlzdGVuZXIqIG9uZHJhZ2xlYXZlKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQpOyB9IHZvaWQgc2V0T25kcmFn
bGVhdmUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kcmFnbGVhdmVFdmVudCwgbGlzdGVuZXIpOyB9Owog
ICAgRXZlbnRMaXN0ZW5lciogb25kcm9wKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuZHJvcEV2ZW50KTsgfSB2b2lkIHNldE9uZHJvcChQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmRyb3BFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25k
cmFnc3RhcnQoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5kcmFnc3RhcnRFdmVudCk7IH0gdm9pZCBzZXRPbmRyYWdzdGFydChQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLmRyYWdzdGFydEV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbmRy
YWcoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kcmFn
RXZlbnQpOyB9IHZvaWQgc2V0T25kcmFnKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVu
ZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBs
aXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbmRyYWdlbmQoKSB7IHJldHVybiBnZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kcmFnZW5kRXZlbnQpOyB9IHZvaWQg
c2V0T25kcmFnZW5kKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50LCBsaXN0ZW5lcik7
IH07CiAgICBFdmVudExpc3RlbmVyKiBvbmlucHV0KCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuaW5wdXRFdmVudCk7IH0gdm9pZCBzZXRPbmlucHV0KFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuaW5wdXRFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0
ZW5lciogb25pbnZhbGlkKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuaW52YWxpZEV2ZW50KTsgfSB2b2lkIHNldE9uaW52YWxpZChQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmludmFsaWRFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25r
ZXlkb3duKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
a2V5ZG93bkV2ZW50KTsgfSB2b2lkIHNldE9ua2V5ZG93bihQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtl
eWRvd25FdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25rZXlwcmVzcygp
IHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXByZXNz
RXZlbnQpOyB9IHZvaWQgc2V0T25rZXlwcmVzcyhQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXByZXNz
RXZlbnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlzdGVuZXIqIG9ua2V5dXAoKSB7IHJldHVy
biBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50KTsgfSB2
b2lkIHNldE9ua2V5dXAoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCBsaXN0ZW5lcik7
IH07CiAgICBFdmVudExpc3RlbmVyKiBvbm1vdXNlZG93bigpIHsgcmV0dXJuIGdldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KTsgfSB2b2lkIHNldE9u
bW91c2Vkb3duKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQsIGxpc3RlbmVyKTsg
fTsKICAgIEV2ZW50TGlzdGVuZXIqIG9ubW91c2Vtb3ZlKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpOyB9IHZvaWQgc2V0T25t
b3VzZW1vdmUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCwgbGlzdGVuZXIpOyB9
OwogICAgRXZlbnRMaXN0ZW5lciogb25tb3VzZW91dCgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQpOyB9IHZvaWQgc2V0T25tb3Vz
ZW91dChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQsIGxpc3RlbmVyKTsgfTsKICAg
IEV2ZW50TGlzdGVuZXIqIG9ubW91c2VvdmVyKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpOyB9IHZvaWQgc2V0T25tb3VzZW92
ZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCwgbGlzdGVuZXIpOyB9OwogICAg
RXZlbnRMaXN0ZW5lciogb25tb3VzZXVwKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KTsgfSB2b2lkIHNldE9ubW91c2V1cChQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0
ZW5lciogb25tb3VzZXdoZWVsKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50KTsgfSB2b2lkIHNldE9ubW91c2V3aGVlbChQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRM
aXN0ZW5lciogb25zY3JvbGwoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5zY3JvbGxFdmVudCk7IH0gdm9pZCBzZXRPbnNjcm9sbChQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLnNjcm9sbEV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbnNl
bGVjdCgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNl
bGVjdEV2ZW50KTsgfSB2b2lkIHNldE9uc2VsZWN0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2VsZWN0
RXZlbnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlzdGVuZXIqIG9uc3VibWl0KCkgeyByZXR1
cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3VibWl0RXZlbnQpOyB9
IHZvaWQgc2V0T25zdWJtaXQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVudCwgbGlzdGVu
ZXIpOyB9OwoKICAgIEV2ZW50TGlzdGVuZXIqIG9uYmx1cigpIHsgcmV0dXJuIGdldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCk7IH0gdm9pZCBzZXRPbmJsdXIo
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlz
dGVuZXIqIG9uZXJyb3IoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5lcnJvckV2ZW50KTsgfSB2b2lkIHNldE9uZXJyb3IoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5lcnJvckV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbmZvY3VzKCkg
eyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZm9jdXNFdmVu
dCk7IH0gdm9pZCBzZXRPbmZvY3VzKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIp
IHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZm9jdXNFdmVudCwgbGlz
dGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25sb2FkKCkgeyByZXR1cm4gZ2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50KTsgfSB2b2lkIHNldE9ubG9h
ZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRM
aXN0ZW5lciogb25yZWFkeXN0YXRlY2hhbmdlKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50KTsgfSB2b2lkIHNldE9u
cmVhZHlzdGF0ZWNoYW5nZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJlYWR5c3RhdGVjaGFuZ2VFdmVu
dCwgbGlzdGVuZXIpOyB9OwoKCiAgICBFdmVudExpc3RlbmVyKiBvbmJlZm9yZWN1dCgpIHsgcmV0
dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWN1dEV2ZW50
KTsgfSB2b2lkIHNldE9uYmVmb3JlY3V0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVu
ZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlY3V0RXZl
bnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlzdGVuZXIqIG9uY3V0KCkgeyByZXR1cm4gZ2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY3V0RXZlbnQpOyB9IHZvaWQgc2V0
T25jdXQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jdXRFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZl
bnRMaXN0ZW5lciogb25iZWZvcmVjb3B5KCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlY29weUV2ZW50KTsgfSB2b2lkIHNldE9uYmVmb3JlY29w
eShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWNvcHlFdmVudCwgbGlzdGVuZXIpOyB9OwogICAg
RXZlbnRMaXN0ZW5lciogb25jb3B5KCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuY29weUV2ZW50KTsgfSB2b2lkIHNldE9uY29weShQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmNvcHlFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25iZWZv
cmVwYXN0ZSgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmJlZm9yZXBhc3RlRXZlbnQpOyB9IHZvaWQgc2V0T25iZWZvcmVwYXN0ZShQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmJlZm9yZXBhc3RlRXZlbnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlzdGVuZXIq
IG9ucGFzdGUoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5wYXN0ZUV2ZW50KTsgfSB2b2lkIHNldE9ucGFzdGUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wYXN0
ZUV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbnJlc2V0KCkgeyByZXR1
cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmVzZXRFdmVudCk7IH0g
dm9pZCBzZXRPbnJlc2V0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmVzZXRFdmVudCwgbGlzdGVuZXIp
OyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25zZWFyY2goKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zZWFyY2hFdmVudCk7IH0gdm9pZCBzZXRPbnNlYXJj
aChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLnNlYXJjaEV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVu
dExpc3RlbmVyKiBvbnNlbGVjdHN0YXJ0KCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudCk7IH0gdm9pZCBzZXRPbnNlbGVjdHN0
YXJ0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudCwgbGlzdGVuZXIpOyB9Owog
ICAgRXZlbnRMaXN0ZW5lciogb25zZWxlY3Rpb25jaGFuZ2UoKSB7IHJldHVybiBnZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zZWxlY3Rpb25jaGFuZ2VFdmVudCk7IH0gdm9p
ZCBzZXRPbnNlbGVjdGlvbmNoYW5nZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
KSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNlbGVjdGlvbmNoYW5n
ZUV2ZW50LCBsaXN0ZW5lcik7IH07CgogICAgRXZlbnRMaXN0ZW5lciogb250b3VjaHN0YXJ0KCkg
eyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hzdGFy
dEV2ZW50KTsgfSB2b2lkIHNldE9udG91Y2hzdGFydChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNo
c3RhcnRFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb250b3VjaG1vdmUo
KSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50b3VjaG1v
dmVFdmVudCk7IH0gdm9pZCBzZXRPbnRvdWNobW92ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNo
bW92ZUV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbnRvdWNoZW5kKCkg
eyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hlbmRF
dmVudCk7IH0gdm9pZCBzZXRPbnRvdWNoZW5kKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlz
dGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hlbmRF
dmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb250b3VjaGNhbmNlbCgpIHsg
cmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNoY2FuY2Vs
RXZlbnQpOyB9IHZvaWQgc2V0T250b3VjaGNhbmNlbChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNo
Y2FuY2VsRXZlbnQsIGxpc3RlbmVyKTsgfTsKIyAzMjEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIgogICAgVmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHMo
KSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0QXJndW1lbnRzOyB9CgogICAgRG9jdW1lbnRUeXBl
KiBkb2N0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kb2NUeXBlLmdldCgpOyB9CgogICAgRE9NSW1w
bGVtZW50YXRpb24qIGltcGxlbWVudGF0aW9uKCk7CgogICAgRWxlbWVudCogZG9jdW1lbnRFbGVt
ZW50KCkgY29uc3QKICAgIHsKICAgICAgICBpZiAoIW1fZG9jdW1lbnRFbGVtZW50KQogICAgICAg
ICAgICBjYWNoZURvY3VtZW50RWxlbWVudCgpOwogICAgICAgIHJldHVybiBtX2RvY3VtZW50RWxl
bWVudC5nZXQoKTsKICAgIH0KCiAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRl
RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwog
ICAgUGFzc1JlZlB0cjxUZXh0PiBjcmVhdGVUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpOwog
ICAgUGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGVDb21tZW50KGNvbnN0IFN0cmluZyYgZGF0YSk7
CiAgICBQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gY3JlYXRlQ0RBVEFTZWN0aW9uKGNvbnN0IFN0
cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwogICAgUGFzc1JlZlB0cjxQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24+IGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjb25zdCBTdHJpbmcmIHRhcmdl
dCwgY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CiAgICBQYXNzUmVmUHRyPEF0
dHI+IGNyZWF0ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgIFBhc3NSZWZQdHI8QXR0cj4gY3JlYXRlQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1l
c3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYsIGJv
b2wgc2hvdWxkSWdub3JlTmFtZXNwYWNlQ2hlY2tzID0gZmFsc2UpOwogICAgUGFzc1JlZlB0cjxF
bnRpdHlSZWZlcmVuY2U+IGNyZWF0ZUVudGl0eVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIG5hbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgIFBhc3NSZWZQdHI8Tm9kZT4gaW1wb3J0Tm9kZShOb2RlKiBp
bXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ29kZSYpOwogICAgdmlydHVhbCBQYXNz
UmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVS
SSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICBQYXNz
UmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKTsKIyAzNjAgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIgogICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVjdChpbnQgY2VudGVy
WCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGlu
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYm90dG9t
UGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcpIGNvbnN0
OwogICAgRWxlbWVudCogZWxlbWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAg
UGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkpOwoKICAg
IFN0cmluZyByZWFkeVN0YXRlKCkgY29uc3Q7CgogICAgU3RyaW5nIGRlZmF1bHRDaGFyc2V0KCkg
Y29uc3Q7CgogICAgU3RyaW5nIGlucHV0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBEb2N1bWVu
dDo6ZW5jb2RpbmcoKTsgfQogICAgU3RyaW5nIGNoYXJzZXQoKSBjb25zdCB7IHJldHVybiBEb2N1
bWVudDo6ZW5jb2RpbmcoKTsgfQogICAgU3RyaW5nIGNoYXJhY3RlclNldCgpIGNvbnN0IHsgcmV0
dXJuIERvY3VtZW50OjplbmNvZGluZygpOyB9CgogICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7
CgogICAgdm9pZCBzZXRDaGFyc2V0KGNvbnN0IFN0cmluZyYpOwoKICAgIHZvaWQgc2V0Q29udGVu
dChjb25zdCBTdHJpbmcmKTsKCiAgICBTdHJpbmcgc3VnZ2VzdGVkTUlNRVR5cGUoKSBjb25zdDsK
CiAgICBTdHJpbmcgY29udGVudExhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TGFu
Z3VhZ2U7IH0KICAgIHZvaWQgc2V0Q29udGVudExhbmd1YWdlKGNvbnN0IFN0cmluZyYgbGFuZykg
eyBtX2NvbnRlbnRMYW5ndWFnZSA9IGxhbmc7IH0KCiAgICBTdHJpbmcgeG1sRW5jb2RpbmcoKSBj
b25zdCB7IHJldHVybiBtX3htbEVuY29kaW5nOyB9CiAgICBTdHJpbmcgeG1sVmVyc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1feG1sVmVyc2lvbjsgfQogICAgYm9vbCB4bWxTdGFuZGFsb25lKCkgY29u
c3QgeyByZXR1cm4gbV94bWxTdGFuZGFsb25lOyB9CgogICAgdm9pZCBzZXRYTUxFbmNvZGluZyhj
b25zdCBTdHJpbmcmIGVuY29kaW5nKSB7IG1feG1sRW5jb2RpbmcgPSBlbmNvZGluZzsgfQogICAg
dm9pZCBzZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgIHZv
aWQgc2V0WE1MU3RhbmRhbG9uZShib29sLCBFeGNlcHRpb25Db2RlJik7CgogICAgU3RyaW5nIGRv
Y3VtZW50VVJJKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFVSSTsgfQogICAgdm9pZCBzZXRE
b2N1bWVudFVSSShjb25zdCBTdHJpbmcmKTsKCiAgICB2aXJ0dWFsIEtVUkwgYmFzZVVSSSgpIGNv
bnN0OwoKCgoKCgoKICAgIFBhc3NSZWZQdHI8Tm9kZT4gYWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9k
ZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJik7CgogICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlv
bj4gaW1hZ2VzKCk7CiAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBlbWJlZHMoKTsKICAg
IFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHBsdWdpbnMoKTsKICAgIFBhc3NSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IGFwcGxldHMoKTsKICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGxp
bmtzKCk7CiAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBmb3JtcygpOwogICAgUGFzc1Jl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gYW5jaG9ycygpOwogICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVj
dGlvbj4gb2JqZWN0cygpOwogICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gc2NyaXB0cygp
OwogICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gd2luZG93TmFtZWRJdGVtcyhjb25zdCBT
dHJpbmcmIG5hbWUpOwogICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZG9jdW1lbnROYW1l
ZEl0ZW1zKGNvbnN0IFN0cmluZyYgbmFtZSk7CgogICAgUGFzc1JlZlB0cjxIVE1MQWxsQ29sbGVj
dGlvbj4gYWxsKCk7CgogICAgQ29sbGVjdGlvbkNhY2hlKiBjb2xsZWN0aW9uSW5mbyhDb2xsZWN0
aW9uVHlwZSB0eXBlKQogICAgewogICAgICAgIGRvIGlmICghKHR5cGUgPj0gRmlyc3RVbm5hbWVk
RG9jdW1lbnRDYWNoZWRUeXBlKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8u
Li9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCIsIDQyMSwgX19QUkVUVFlfRlVOQ1RJT05f
XywgInR5cGUgPj0gRmlyc3RVbm5hbWVkRG9jdW1lbnRDYWNoZWRUeXBlIik7IGRvIHsgV1RGUmVw
b3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lk
KCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IHR5cGUgLSBGaXJzdFVubmFtZWREb2N1bWVudENhY2hlZFR5cGU7CiAgICAgICAg
ZG8gaWYgKCEoaW5kZXggPCBOdW1Vbm5hbWVkRG9jdW1lbnRDYWNoZWRUeXBlcykpIHsgV1RGUmVw
b3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgiLCA0MjMsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJpbmRleCA8IE51bVVubmFtZWREb2N1bWVu
dENhY2hlZFR5cGVzIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsKICAgICAgICBtX2NvbGxlY3Rpb25JbmZvW2luZGV4XS5jaGVja0NvbnNpc3Rl
bmN5KCk7CiAgICAgICAgcmV0dXJuICZtX2NvbGxlY3Rpb25JbmZvW2luZGV4XTsKICAgIH0KCiAg
ICBDb2xsZWN0aW9uQ2FjaGUqIG5hbWVDb2xsZWN0aW9uSW5mbyhDb2xsZWN0aW9uVHlwZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKCgogICAgYm9vbCBpc0hUTUxEb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNIVE1MOyB9CiAgICBib29sIGlzWEhUTUxEb2N1bWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNYSFRNTDsgfQogICAgdmlydHVhbCBib29sIGlzSW1hZ2VEb2N1bWVudCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CgogICAgdmlydHVhbCBib29sIGlzU1ZHRG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgYm9vbCBoYXNTVkdSb290Tm9kZSgpIGNvbnN0OwoK
CgoKICAgIHZpcnR1YWwgYm9vbCBpc1BsdWdpbkRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQoKCgoKCiAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CgogICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZUNhY2hlPiBjc3NQcmlt
aXRpdmVWYWx1ZUNhY2hlKCkgY29uc3Q7CgogICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxl
Y3RvcklmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVNlbGVjdG9yLmdldCgpOyB9Cgog
ICAgYm9vbCBpc1ZpZXdTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2lzVmlld1NvdXJjZTsgfQog
ICAgdm9pZCBzZXRJc1ZpZXdTb3VyY2UoYm9vbCk7CgogICAgYm9vbCBzYXdFbGVtZW50c0luS25v
d25OYW1lc3BhY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3Bh
Y2VzOyB9CgogICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvcigpCiAgICB7CiAgICAg
ICAgaWYgKCFtX3N0eWxlU2VsZWN0b3IpCiAgICAgICAgICAgIGNyZWF0ZVN0eWxlU2VsZWN0b3Io
KTsKICAgICAgICByZXR1cm4gbV9zdHlsZVNlbGVjdG9yLmdldCgpOwogICAgfQoKCgoKICAgIHZv
aWQgcmVtb3ZlUGVuZGluZ1NoZWV0KCk7CgoKCgoKICAgIGJvb2wgaGF2ZVN0eWxlc2hlZXRzTG9h
ZGVkKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9wZW5kaW5nU3R5bGVzaGVldHMgPD0g
MCB8fCBtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0czsKICAgIH0KCgoKCgogICAgdm9pZCBhZGRQ
ZW5kaW5nU2hlZXQoKSB7IG1fcGVuZGluZ1N0eWxlc2hlZXRzKys7IH0KCiAgICB2b2lkIGFkZFN0
eWxlU2hlZXRDYW5kaWRhdGVOb2RlKE5vZGUqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICB2
b2lkIHJlbW92ZVN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKE5vZGUqKTsKCiAgICBib29sIGdvdG9B
bmNob3JOZWVkZWRBZnRlclN0eWxlc2hlZXRzTG9hZCgpIHsgcmV0dXJuIG1fZ290b0FuY2hvck5l
ZWRlZEFmdGVyU3R5bGVzaGVldHNMb2FkOyB9CiAgICB2b2lkIHNldEdvdG9BbmNob3JOZWVkZWRB
ZnRlclN0eWxlc2hlZXRzTG9hZChib29sIGIpIHsgbV9nb3RvQW5jaG9yTmVlZGVkQWZ0ZXJTdHls
ZXNoZWV0c0xvYWQgPSBiOyB9CiMgNTAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCIKICAgIHZvaWQgc3R5bGVTZWxlY3RvckNoYW5nZWQoU3R5bGVTZWxlY3RvclVwZGF0
ZUZsYWcpOwogICAgdm9pZCByZWNhbGNTdHlsZVNlbGVjdG9yKCk7CgogICAgYm9vbCB1c2VzU2li
bGluZ1J1bGVzKCkgY29uc3QgeyByZXR1cm4gbV91c2VzU2libGluZ1J1bGVzIHx8IG1fdXNlc1Np
YmxpbmdSdWxlc092ZXJyaWRlOyB9CiAgICB2b2lkIHNldFVzZXNTaWJsaW5nUnVsZXMoYm9vbCBi
KSB7IG1fdXNlc1NpYmxpbmdSdWxlc092ZXJyaWRlID0gYjsgfQogICAgYm9vbCB1c2VzRmlyc3RM
aW5lUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX3VzZXNGaXJzdExpbmVSdWxlczsgfQogICAgYm9v
bCB1c2VzRmlyc3RMZXR0ZXJSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0ZpcnN0TGV0dGVy
UnVsZXM7IH0KICAgIHZvaWQgc2V0VXNlc0ZpcnN0TGV0dGVyUnVsZXMoYm9vbCBiKSB7IG1fdXNl
c0ZpcnN0TGV0dGVyUnVsZXMgPSBiOyB9CiAgICBib29sIHVzZXNCZWZvcmVBZnRlclJ1bGVzKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VzQmVmb3JlQWZ0ZXJSdWxlcyB8fCBtX3VzZXNCZWZvcmVBZnRl
clJ1bGVzT3ZlcnJpZGU7IH0KICAgIHZvaWQgc2V0VXNlc0JlZm9yZUFmdGVyUnVsZXMoYm9vbCBi
KSB7IG1fdXNlc0JlZm9yZUFmdGVyUnVsZXNPdmVycmlkZSA9IGI7IH0KICAgIGJvb2wgdXNlc1Jl
bVVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV91c2VzUmVtVW5pdHM7IH0KICAgIHZvaWQgc2V0VXNl
c1JlbVVuaXRzKGJvb2wgYikgeyBtX3VzZXNSZW1Vbml0cyA9IGI7IH0KICAgIGJvb2wgdXNlc0xp
bmtSdWxlcygpIGNvbnN0IHsgcmV0dXJuIGxpbmtDb2xvcigpICE9IHZpc2l0ZWRMaW5rQ29sb3Io
KSB8fCBtX3VzZXNMaW5rUnVsZXM7IH0KICAgIHZvaWQgc2V0VXNlc0xpbmtSdWxlcyhib29sIGIp
IHsgbV91c2VzTGlua1J1bGVzID0gYjsgfQoKCiAgICB2b2lkIHJlZ2lzdGVyRm9ybUVsZW1lbnRX
aXRoU3RhdGUoRWxlbWVudCogZSkgeyBtX2Zvcm1FbGVtZW50c1dpdGhTdGF0ZS5hZGQoZSk7IH0K
ICAgIHZvaWQgdW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aFN0YXRlKEVsZW1lbnQqIGUpIHsgbV9m
b3JtRWxlbWVudHNXaXRoU3RhdGUucmVtb3ZlKGUpOyB9CiAgICBWZWN0b3I8U3RyaW5nPiBmb3Jt
RWxlbWVudHNTdGF0ZSgpIGNvbnN0OwogICAgdm9pZCBzZXRTdGF0ZUZvck5ld0Zvcm1FbGVtZW50
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgYm9vbCBoYXNTdGF0ZUZvck5ld0Zvcm1FbGVt
ZW50cygpIGNvbnN0OwogICAgYm9vbCB0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChBdG9taWNTdHJp
bmdJbXBsKiBuYW1lLCBBdG9taWNTdHJpbmdJbXBsKiB0eXBlLCBTdHJpbmcmIHN0YXRlKTsKCiAg
ICB2b2lkIHJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQqKTsKICAgIHZvaWQgdW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1
dGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7CiAgICB2b2lkIHJlc2V0Rm9ybUVsZW1lbnRzT3du
ZXIoKTsKCiAgICBGcmFtZVZpZXcqIHZpZXcoKSBjb25zdDsKICAgIEZyYW1lKiBmcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsKICAgIFNldHRp
bmdzKiBzZXR0aW5ncygpIGNvbnN0OwoKICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNyZWF0ZVJhbmdl
KCk7CgogICAgUGFzc1JlZlB0cjxOb2RlSXRlcmF0b3I+IGNyZWF0ZU5vZGVJdGVyYXRvcihOb2Rl
KiByb290LCB1bnNpZ25lZCB3aGF0VG9TaG93LAogICAgICAgIFBhc3NSZWZQdHI8Tm9kZUZpbHRl
cj4sIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgRXhjZXB0aW9uQ29kZSYpOwoKICAgIFBh
c3NSZWZQdHI8VHJlZVdhbGtlcj4gY3JlYXRlVHJlZVdhbGtlcihOb2RlKiByb290LCB1bnNpZ25l
ZCB3aGF0VG9TaG93LAogICAgICAgIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJvb2wgZXhwYW5k
RW50aXR5UmVmZXJlbmNlcywgRXhjZXB0aW9uQ29kZSYpOwoKCiAgICBQYXNzUmVmUHRyPENTU1N0
eWxlRGVjbGFyYXRpb24+IGNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKICAgIFBhc3NSZWZQ
dHI8RWRpdGluZ1RleHQ+IGNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb25zdCBTdHJpbmcmKTsKCiAg
ICB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlID0gTm9DaGFuZ2UpOwogICAgYm9vbCBjaGls
ZE5lZWRzQW5kTm90SW5TdHlsZVJlY2FsYygpOwogICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0eWxl
SWZOZWVkZWQoKTsKICAgIHZvaWQgdXBkYXRlTGF5b3V0KCk7CiAgICB2b2lkIHVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbWVudCopOwogICAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpOwoKICAg
IHZvaWQgcmV0aXJlQ3VzdG9tRm9udChGb250RGF0YSopOwoKCiAgICBib29sIGlzUGFnZUJveFZp
c2libGUoaW50IHBhZ2VJbmRleCk7CgoKCgoKICAgIHZvaWQgcGFnZVNpemVBbmRNYXJnaW5zSW5Q
aXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYgbWFyZ2luVG9wLCBp
bnQmIG1hcmdpblJpZ2h0LCBpbnQmIG1hcmdpbkJvdHRvbSwgaW50JiBtYXJnaW5MZWZ0KTsKCiAg
ICBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygpOwogICAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4gbV9jYWNoZWRSZXNv
dXJjZUxvYWRlci5nZXQoKTsgfQoKICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goKTsKCiAgICBSZW5kZXJBcmVuYSogcmVuZGVyQXJlbmEoKSB7IHJldHVy
biBtX3JlbmRlckFyZW5hLmdldCgpOyB9CgogICAgUmVuZGVyVmlldyogcmVuZGVyVmlldygpIGNv
bnN0OwoKICAgIHZvaWQgY2xlYXJBWE9iamVjdENhY2hlKCk7CiAgICBBWE9iamVjdENhY2hlKiBh
eE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICBib29sIGF4T2JqZWN0Q2FjaGVFeGlzdHMoKSBjb25z
dDsKCgogICAgdm9pZCBzZXRWaXN1YWxseU9yZGVyZWQoKTsKICAgIGJvb2wgdmlzdWFsbHlPcmRl
cmVkKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxseU9yZGVyZWQ7IH0KCiAgICBEb2N1bWVudExv
YWRlciogbG9hZGVyKCkgY29uc3Q7CgogICAgdm9pZCBvcGVuKERvY3VtZW50KiBvd25lckRvY3Vt
ZW50ID0gMCk7CiAgICB2b2lkIGltcGxpY2l0T3BlbigpOwoKCiAgICB2b2lkIGNsb3NlKCk7CgoK
CiAgICB2b2lkIGV4cGxpY2l0Q2xvc2UoKTsKCiAgICB2b2lkIGltcGxpY2l0Q2xvc2UoKTsKCiAg
ICB2b2lkIGNhbmNlbFBhcnNpbmcoKTsKCiAgICB2b2lkIHdyaXRlKGNvbnN0IFNlZ21lbnRlZFN0
cmluZyYgdGV4dCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSAwKTsKICAgIHZvaWQgd3JpdGUo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IDApOwogICAgdm9p
ZCB3cml0ZWxuKGNvbnN0IFN0cmluZyYgdGV4dCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSAw
KTsKCiAgICBib29sIHdlbGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiBtX3dlbGxGb3JtZWQ7IH0K
CiAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgdm9pZCBz
ZXRVUkwoY29uc3QgS1VSTCYpOwoKICAgIGNvbnN0IEtVUkwmIGJhc2VVUkwoKSBjb25zdCB7IHJl
dHVybiBtX2Jhc2VVUkw7IH0KICAgIGNvbnN0IFN0cmluZyYgYmFzZVRhcmdldCgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFzZVRhcmdldDsgfQogICAgdm9pZCBwcm9jZXNzQmFzZUVsZW1lbnQoKTsKCiAg
ICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OwoKICAgIHZpcnR1YWwgU3Ry
aW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgY29uc3Q7CgogICAgQ1NTU3R5bGVTaGVldCogcGFn
ZVVzZXJTaGVldCgpOwogICAgdm9pZCBjbGVhclBhZ2VVc2VyU2hlZXQoKTsKICAgIHZvaWQgdXBk
YXRlUGFnZVVzZXJTaGVldCgpOwoKICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gPiogcGFnZUdyb3VwVXNlclNoZWV0cygpIGNvbnN0OwogICAgdm9pZCBjbGVhclBhZ2VHcm91
cFVzZXJTaGVldHMoKTsKICAgIHZvaWQgdXBkYXRlUGFnZUdyb3VwVXNlclNoZWV0cygpOwoKICAg
IHZvaWQgYWRkVXNlclNoZWV0KFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gdXNlclNoZWV0KTsK
CiAgICBDU1NTdHlsZVNoZWV0KiBlbGVtZW50U2hlZXQoKTsKICAgIENTU1N0eWxlU2hlZXQqIG1h
cHBlZEVsZW1lbnRTaGVldCgpOwoKICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNl
cj4gY3JlYXRlUGFyc2VyKCk7CiAgICBEb2N1bWVudFBhcnNlciogcGFyc2VyKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJzZXIuZ2V0KCk7IH0KICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogc2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyKCkgY29uc3Q7CgogICAgYm9vbCBwcmludGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpbnRpbmc7IH0KICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwKSB7IG1f
cHJpbnRpbmcgPSBwOyB9CgogICAgYm9vbCBwYWdpbmF0ZWRGb3JTY3JlZW4oKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2luYXRlZEZvclNjcmVlbjsgfQogICAgdm9pZCBzZXRQYWdpbmF0ZWRGb3JTY3Jl
ZW4oYm9vbCBwKSB7IG1fcGFnaW5hdGVkRm9yU2NyZWVuID0gcDsgfQoKICAgIGJvb2wgcGFnaW5h
dGVkKCkgY29uc3QgeyByZXR1cm4gcHJpbnRpbmcoKSB8fCBwYWdpbmF0ZWRGb3JTY3JlZW4oKTsg
fQoKICAgIGVudW0gQ29tcGF0aWJpbGl0eU1vZGUgeyBRdWlya3NNb2RlLCBMaW1pdGVkUXVpcmtz
TW9kZSwgTm9RdWlya3NNb2RlIH07CgogICAgdmlydHVhbCB2b2lkIHNldENvbXBhdGliaWxpdHlN
b2RlRnJvbURvY3R5cGUoKSB7IH0KICAgIHZvaWQgc2V0Q29tcGF0aWJpbGl0eU1vZGUoQ29tcGF0
aWJpbGl0eU1vZGUgbSk7CiAgICB2b2lkIGxvY2tDb21wYXRpYmlsaXR5TW9kZSgpIHsgbV9jb21w
YXRpYmlsaXR5TW9kZUxvY2tlZCA9IHRydWU7IH0KICAgIENvbXBhdGliaWxpdHlNb2RlIGNvbXBh
dGliaWxpdHlNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb21wYXRpYmlsaXR5TW9kZTsgfQoKICAg
IFN0cmluZyBjb21wYXRNb2RlKCkgY29uc3Q7CgogICAgYm9vbCBpblF1aXJrc01vZGUoKSBjb25z
dCB7IHJldHVybiBtX2NvbXBhdGliaWxpdHlNb2RlID09IFF1aXJrc01vZGU7IH0KICAgIGJvb2wg
aW5MaW1pdGVkUXVpcmtzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcGF0aWJpbGl0eU1vZGUg
PT0gTGltaXRlZFF1aXJrc01vZGU7IH0KICAgIGJvb2wgaW5Ob1F1aXJrc01vZGUoKSBjb25zdCB7
IHJldHVybiBtX2NvbXBhdGliaWxpdHlNb2RlID09IE5vUXVpcmtzTW9kZTsgfQoKICAgIGVudW0g
UmVhZHlTdGF0ZSB7CiAgICAgICAgTG9hZGluZywKICAgICAgICBJbnRlcmFjdGl2ZSwKICAgICAg
ICBDb21wbGV0ZQogICAgfTsKICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKICAg
IHZvaWQgc2V0UGFyc2luZyhib29sKTsKICAgIGJvb2wgcGFyc2luZygpIGNvbnN0IHsgcmV0dXJu
IG1fYlBhcnNpbmc7IH0KICAgIGludCBtaW5pbXVtTGF5b3V0RGVsYXkoKTsKCiAgICBib29sIHNo
b3VsZFNjaGVkdWxlTGF5b3V0KCk7CiAgICBib29sIGlzTGF5b3V0VGltZXJBY3RpdmUoKTsKICAg
IGludCBlbGFwc2VkVGltZSgpIGNvbnN0OwoKICAgIHZvaWQgc2V0VGV4dENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikgeyBtX3RleHRDb2xvciA9IGNvbG9yOyB9CiAgICBDb2xvciB0ZXh0Q29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3RleHRDb2xvcjsgfQoKICAgIGNvbnN0IENvbG9yJiBsaW5rQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX2xpbmtDb2xvcjsgfQogICAgY29uc3QgQ29sb3ImIHZpc2l0
ZWRMaW5rQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3Zpc2l0ZWRMaW5rQ29sb3I7IH0KICAgIGNv
bnN0IENvbG9yJiBhY3RpdmVMaW5rQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUxpbmtD
b2xvcjsgfQogICAgdm9pZCBzZXRMaW5rQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgbV9saW5rQ29s
b3IgPSBjOyB9CiAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsg
bV92aXNpdGVkTGlua0NvbG9yID0gYzsgfQogICAgdm9pZCBzZXRBY3RpdmVMaW5rQ29sb3IoY29u
c3QgQ29sb3ImIGMpIHsgbV9hY3RpdmVMaW5rQ29sb3IgPSBjOyB9CiAgICB2b2lkIHJlc2V0TGlu
a0NvbG9yKCk7CiAgICB2b2lkIHJlc2V0VmlzaXRlZExpbmtDb2xvcigpOwogICAgdm9pZCByZXNl
dEFjdGl2ZUxpbmtDb2xvcigpOwoKICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgcHJl
cGFyZU1vdXNlRXZlbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBMYXlvdXRQb2ludCYs
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwoKICAgIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNo
ZWV0cygpOwoKCgoKCiAgICBTdHJpbmcgcHJlZmVycmVkU3R5bGVzaGVldFNldCgpIGNvbnN0Owog
ICAgU3RyaW5nIHNlbGVjdGVkU3R5bGVzaGVldFNldCgpIGNvbnN0OwogICAgdm9pZCBzZXRTZWxl
Y3RlZFN0eWxlc2hlZXRTZXQoY29uc3QgU3RyaW5nJik7CgogICAgYm9vbCBzZXRGb2N1c2VkTm9k
ZShQYXNzUmVmUHRyPE5vZGU+KTsKICAgIE5vZGUqIGZvY3VzZWROb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9mb2N1c2VkTm9kZS5nZXQoKTsgfQoKICAgIHZvaWQgZ2V0Rm9jdXNhYmxlTm9kZXMoVmVj
dG9yPFJlZlB0cjxOb2RlPiA+Jik7CgoKCiAgICBib29sIGlnbm9yZUF1dG9mb2N1cygpIGNvbnN0
IHsgcmV0dXJuIG1faWdub3JlQXV0b2ZvY3VzOyB9OwogICAgdm9pZCBzZXRJZ25vcmVBdXRvZm9j
dXMoYm9vbCBzaG91bGRJZ25vcmUgPSB0cnVlKSB7IG1faWdub3JlQXV0b2ZvY3VzID0gc2hvdWxk
SWdub3JlOyB9OwoKICAgIHZvaWQgc2V0SG92ZXJOb2RlKFBhc3NSZWZQdHI8Tm9kZT4pOwogICAg
Tm9kZSogaG92ZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ob3Zlck5vZGUuZ2V0KCk7IH0KCiAg
ICB2b2lkIHNldEFjdGl2ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPik7CiAgICBOb2RlKiBhY3RpdmVO
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVOb2RlLmdldCgpOyB9CgogICAgdm9pZCBmb2N1
c2VkTm9kZVJlbW92ZWQoKTsKICAgIHZvaWQgcmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUoTm9k
ZSosIGJvb2wgYW1vbmdDaGlsZHJlbk9ubHkgPSBmYWxzZSk7CiAgICB2b2lkIGhvdmVyZWROb2Rl
RGV0YWNoZWQoTm9kZSopOwogICAgdm9pZCBhY3RpdmVDaGFpbk5vZGVEZXRhY2hlZChOb2RlKik7
CgoKICAgIHZvaWQgc2V0Q1NTVGFyZ2V0KEVsZW1lbnQqKTsKICAgIEVsZW1lbnQqIGNzc1Rhcmdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY3NzVGFyZ2V0OyB9CgogICAgdm9pZCBzY2hlZHVsZUZvcmNl
ZFN0eWxlUmVjYWxjKCk7CiAgICB2b2lkIHNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKICAgIHZvaWQg
dW5zY2hlZHVsZVN0eWxlUmVjYWxjKCk7CiAgICBib29sIGlzUGVuZGluZ1N0eWxlUmVjYWxjKCkg
Y29uc3Q7CiAgICB2b2lkIHN0eWxlUmVjYWxjVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKTsK
CiAgICB2b2lkIGF0dGFjaE5vZGVJdGVyYXRvcihOb2RlSXRlcmF0b3IqKTsKICAgIHZvaWQgZGV0
YWNoTm9kZUl0ZXJhdG9yKE5vZGVJdGVyYXRvciopOwogICAgdm9pZCBtb3ZlTm9kZUl0ZXJhdG9y
c1RvTmV3RG9jdW1lbnQoTm9kZSosIERvY3VtZW50Kik7CgogICAgdm9pZCBhdHRhY2hSYW5nZShS
YW5nZSopOwogICAgdm9pZCBkZXRhY2hSYW5nZShSYW5nZSopOwoKICAgIHZvaWQgbm9kZUNoaWxk
cmVuQ2hhbmdlZChDb250YWluZXJOb2RlKik7CgogICAgdm9pZCBub2RlQ2hpbGRyZW5XaWxsQmVS
ZW1vdmVkKENvbnRhaW5lck5vZGUqKTsKCiAgICB2b2lkIG5vZGVXaWxsQmVSZW1vdmVkKE5vZGUq
KTsKCiAgICB2b2lkIHRleHRJbnNlcnRlZChOb2RlKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOwogICAgdm9pZCB0ZXh0UmVtb3ZlZChOb2RlKiwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgdm9pZCB0ZXh0Tm9kZXNNZXJnZWQoVGV4dCogb2xkTm9kZSwg
dW5zaWduZWQgb2Zmc2V0KTsKICAgIHZvaWQgdGV4dE5vZGVTcGxpdChUZXh0KiBvbGROb2RlKTsK
CiAgICBET01XaW5kb3cqIGRlZmF1bHRWaWV3KCkgY29uc3QgeyByZXR1cm4gZG9tV2luZG93KCk7
IH0KICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3Q7CgoKICAgIHZvaWQgc2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPik7CiAgICBFdmVudExpc3RlbmVyKiBnZXRXaW5kb3dBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKICAgIHZv
aWQgZGlzcGF0Y2hXaW5kb3dFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxFdmVu
dFRhcmdldD4gPSAwKTsKICAgIHZvaWQgZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKTsKCiAgICBQ
YXNzUmVmUHRyPEV2ZW50PiBjcmVhdGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSwgRXhj
ZXB0aW9uQ29kZSYpOwoKCgogICAgZW51bSBMaXN0ZW5lclR5cGUgewogICAgICAgIERPTVNVQlRS
RUVNT0RJRklFRF9MSVNURU5FUiA9IDB4MDEsCiAgICAgICAgRE9NTk9ERUlOU0VSVEVEX0xJU1RF
TkVSID0gMHgwMiwKICAgICAgICBET01OT0RFUkVNT1ZFRF9MSVNURU5FUiA9IDB4MDQsCiAgICAg
ICAgRE9NTk9ERVJFTU9WRURGUk9NRE9DVU1FTlRfTElTVEVORVIgPSAweDA4LAogICAgICAgIERP
TU5PREVJTlNFUlRFRElOVE9ET0NVTUVOVF9MSVNURU5FUiA9IDB4MTAsCiAgICAgICAgRE9NQVRU
Uk1PRElGSUVEX0xJU1RFTkVSID0gMHgyMCwKICAgICAgICBET01DSEFSQUNURVJEQVRBTU9ESUZJ
RURfTElTVEVORVIgPSAweDQwLAogICAgICAgIE9WRVJGTE9XQ0hBTkdFRF9MSVNURU5FUiA9IDB4
ODAsCiAgICAgICAgQU5JTUFUSU9ORU5EX0xJU1RFTkVSID0gMHgxMDAsCiAgICAgICAgQU5JTUFU
SU9OU1RBUlRfTElTVEVORVIgPSAweDIwMCwKICAgICAgICBBTklNQVRJT05JVEVSQVRJT05fTElT
VEVORVIgPSAweDQwMCwKICAgICAgICBUUkFOU0lUSU9ORU5EX0xJU1RFTkVSID0gMHg4MDAsCiAg
ICAgICAgQkVGT1JFTE9BRF9MSVNURU5FUiA9IDB4MTAwMCwKICAgICAgICBUT1VDSF9MSVNURU5F
UiA9IDB4MjAwMCwKICAgICAgICBTQ1JPTExfTElTVEVORVIgPSAweDQwMDAKICAgIH07CgogICAg
Ym9vbCBoYXNMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29uc3QgeyBy
ZXR1cm4gKG1fbGlzdGVuZXJUeXBlcyAmIGxpc3RlbmVyVHlwZSk7IH0KICAgIHZvaWQgYWRkTGlz
dGVuZXJUeXBlKExpc3RlbmVyVHlwZSBsaXN0ZW5lclR5cGUpIHsgbV9saXN0ZW5lclR5cGVzID0g
bV9saXN0ZW5lclR5cGVzIHwgbGlzdGVuZXJUeXBlOyB9CiAgICB2b2lkIGFkZExpc3RlbmVyVHlw
ZUlmTmVlZGVkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKCiAgICBDU1NTdHlsZURl
Y2xhcmF0aW9uKiBnZXRPdmVycmlkZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHBzZXVk
b0VsdCk7CgogICAgaW50IG5vZGVBYnNJbmRleChOb2RlKik7CiAgICBOb2RlKiBub2RlV2l0aEFi
c0luZGV4KGludCBhYnNJbmRleCk7CiMgNzkwICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaCIKICAgIHZvaWQgcHJvY2Vzc0h0dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogICAgdm9pZCBwcm9jZXNzVmlld3BvcnQoY29uc3Qg
U3RyaW5nJiBmZWF0dXJlcyk7CgoKCiAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCgpIGNvbnN0OwoKCiAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxl
LnN0cmluZygpOyB9CiAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOwoKICAgIHZvaWQg
c2V0VGl0bGVFbGVtZW50KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBFbGVtZW50KiB0aXRs
ZUVsZW1lbnQpOwogICAgdm9pZCByZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQpOwoK
ICAgIFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgdm9pZCBzZXRDb29r
aWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwoKICAgIFN0cmluZyByZWZlcnJlcigp
IGNvbnN0OwoKICAgIFN0cmluZyBkb21haW4oKSBjb25zdDsKICAgIHZvaWQgc2V0RG9tYWluKGNv
bnN0IFN0cmluZyYgbmV3RG9tYWluLCBFeGNlcHRpb25Db2RlJik7CgogICAgU3RyaW5nIGxhc3RN
b2RpZmllZCgpIGNvbnN0OwojIDgyNCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgiCiAgICBjb25zdCBLVVJMJiBjb29raWVVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tp
ZVVSTDsgfQojIDgzNiAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgiCiAg
ICBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0IHsgcmV0dXJuIG1fZmly
c3RQYXJ0eUZvckNvb2tpZXM7IH0KICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29u
c3QgS1VSTCYgdXJsKSB7IG1fZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSB1cmw7IH0KCgoKCiAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkTmFtZShjb25zdCBTdHJpbmcmKTsKCgoKCiAgICBzdGF0aWMgYm9v
bCBwYXJzZVF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBTdHJpbmcm
IHByZWZpeCwgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKCgogICAgc3RhdGlj
IGJvb2wgaGFzUHJlZml4TmFtZXNwYWNlTWlzbWF0Y2goY29uc3QgUXVhbGlmaWVkTmFtZSYpOwoK
ICAgIEhUTUxFbGVtZW50KiBib2R5KCkgY29uc3Q7CiAgICB2b2lkIHNldEJvZHkoUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKCiAgICBIVE1MSGVhZEVsZW1lbnQqIGhl
YWQoKTsKCiAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIqIG1hcmtlcnMoKSBjb25zdCB7IHJl
dHVybiBtX21hcmtlcnMuZ2V0KCk7IH0KCiAgICBib29sIGRpcmVjdGlvblNldE9uRG9jdW1lbnRF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxlbWVudDsg
fQogICAgYm9vbCB3cml0aW5nTW9kZVNldE9uRG9jdW1lbnRFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV93cml0aW5nTW9kZVNldE9uRG9jdW1lbnRFbGVtZW50OyB9CiAgICB2b2lkIHNldERpcmVj
dGlvblNldE9uRG9jdW1lbnRFbGVtZW50KGJvb2wgYikgeyBtX2RpcmVjdGlvblNldE9uRG9jdW1l
bnRFbGVtZW50ID0gYjsgfQogICAgdm9pZCBzZXRXcml0aW5nTW9kZVNldE9uRG9jdW1lbnRFbGVt
ZW50KGJvb2wgYikgeyBtX3dyaXRpbmdNb2RlU2V0T25Eb2N1bWVudEVsZW1lbnQgPSBiOyB9Cgog
ICAgYm9vbCBleGVjQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wgdXNlckludGVy
ZmFjZSA9IGZhbHNlLCBjb25zdCBTdHJpbmcmIHZhbHVlID0gU3RyaW5nKCkpOwogICAgYm9vbCBx
dWVyeUNvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAgICBib29sIHF1ZXJ5
Q29tbWFuZEluZGV0ZXJtKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAgICBib29sIHF1ZXJ5Q29t
bWFuZFN0YXRlKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAgICBib29sIHF1ZXJ5Q29tbWFuZFN1
cHBvcnRlZChjb25zdCBTdHJpbmcmIGNvbW1hbmQpOwogICAgU3RyaW5nIHF1ZXJ5Q29tbWFuZFZh
bHVlKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CgogICAgS1VSTCBvcGVuU2VhcmNoRGVzY3JpcHRp
b25VUkwoKTsKCgogICAgZW51bSBJbmhlcml0ZWRCb29sIHsgb2ZmID0gZmFsc2UsIG9uID0gdHJ1
ZSwgaW5oZXJpdCB9OwogICAgdm9pZCBzZXREZXNpZ25Nb2RlKEluaGVyaXRlZEJvb2wgdmFsdWUp
OwogICAgSW5oZXJpdGVkQm9vbCBnZXREZXNpZ25Nb2RlKCkgY29uc3Q7CiAgICBib29sIGluRGVz
aWduTW9kZSgpIGNvbnN0OwoKICAgIERvY3VtZW50KiBwYXJlbnREb2N1bWVudCgpIGNvbnN0Owog
ICAgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29uc3Q7CgogICAgaW50IGRvY0lEKCkgY29uc3Qg
eyByZXR1cm4gbV9kb2NJRDsgfQoKICAgIFNjcmlwdFJ1bm5lciogc2NyaXB0UnVubmVyKCkgeyBy
ZXR1cm4gbV9zY3JpcHRSdW5uZXIuZ2V0KCk7IH0KCgogICAgdm9pZCBhcHBseVhTTFRyYW5zZm9y
bShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHBpKTsKICAgIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IHRy
YW5zZm9ybVNvdXJjZURvY3VtZW50KCkgeyByZXR1cm4gbV90cmFuc2Zvcm1Tb3VyY2VEb2N1bWVu
dDsgfQogICAgdm9pZCBzZXRUcmFuc2Zvcm1Tb3VyY2VEb2N1bWVudChEb2N1bWVudCogZG9jKSB7
IG1fdHJhbnNmb3JtU291cmNlRG9jdW1lbnQgPSBkb2M7IH0KCiAgICB2b2lkIHNldFRyYW5zZm9y
bVNvdXJjZShQYXNzT3duUHRyPFRyYW5zZm9ybVNvdXJjZT4pOwogICAgVHJhbnNmb3JtU291cmNl
KiB0cmFuc2Zvcm1Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybVNvdXJjZS5nZXQo
KTsgfQoKCiAgICB2b2lkIGluY0RPTVRyZWVWZXJzaW9uKCkgeyBtX2RvbVRyZWVWZXJzaW9uID0g
KytzX2dsb2JhbFRyZWVWZXJzaW9uOyB9CiAgICB1aW50NjRfdCBkb21UcmVlVmVyc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZG9tVHJlZVZlcnNpb247IH0KCiAgICB2b2lkIHNldERvY1R5cGUoUGFz
c1JlZlB0cjxEb2N1bWVudFR5cGU+KTsKCgoKICAgIFBhc3NSZWZQdHI8WFBhdGhFeHByZXNzaW9u
PiBjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoTlNSZXNvbHZlciogcmVz
b2x2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
eGNlcHRpb25Db2RlJiBlYyk7CiAgICBQYXNzUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4gY3JlYXRl
TlNSZXNvbHZlcihOb2RlICpub2RlUmVzb2x2ZXIpOwogICAgUGFzc1JlZlB0cjxYUGF0aFJlc3Vs
dD4gZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTm9kZSogY29udGV4dE5vZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBYUGF0aE5TUmVzb2x2ZXIqIHJlc29sdmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoUmVzdWx0KiByZXN1bHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlJiBlYyk7CgoKICAgIGVudW0g
UGVuZGluZ1NoZWV0TGF5b3V0IHsgTm9MYXlvdXRXaXRoUGVuZGluZ1NoZWV0cywgRGlkTGF5b3V0
V2l0aFBlbmRpbmdTaGVldHMsIElnbm9yZUxheW91dFdpdGhQZW5kaW5nU2hlZXRzIH07CgogICAg
Ym9vbCBkaWRMYXlvdXRXaXRoUGVuZGluZ1N0eWxlc2hlZXRzKCkgY29uc3QgeyByZXR1cm4gbV9w
ZW5kaW5nU2hlZXRMYXlvdXQgPT0gRGlkTGF5b3V0V2l0aFBlbmRpbmdTaGVldHM7IH0KCiAgICB2
b2lkIHNldEhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUoKSB7IG1faGFzTm9kZXNXaXRoUGxh
Y2Vob2xkZXJTdHlsZSA9IHRydWU7IH0KCiAgICBJY29uVVJMIGljb25VUkwoSWNvblR5cGUpIGNv
bnN0OwogICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIElj
b25UeXBlKTsKICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CgogICAgdm9pZCBz
ZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sKTsKICAgIGJvb2wgdXNlU2Vj
dXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSBjb25zdDsKCiAgICB2b2lkIHVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZVNvb24oYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwogICAgdm9pZCBj
YW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdGUoKTsKCgogICAgRE9NU2VsZWN0aW9uKiBnZXRTZWxl
Y3Rpb24oKSBjb25zdDsKCgogICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogZ2V0Q1NTQ2FudmFz
Q29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKICAgIEhUTUxDYW52YXNFbGVtZW50KiBnZXRDU1NDYW52YXNFbGVtZW50
KGNvbnN0IFN0cmluZyYgbmFtZSk7CgogICAgYm9vbCBpc0ROU1ByZWZldGNoRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNETlNQcmVmZXRjaEVuYWJsZWQ7IH0KICAgIHZvaWQgcGFyc2VETlNQ
cmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJik7CgogICAgdmlydHVhbCB2b2lkIGFk
ZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKICAgIHZpcnR1YWwgdm9pZCBwb3N0
VGFzayhQYXNzT3duUHRyPFRhc2s+KTsKCiAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgdmlydHVhbCB2b2lkIHJlc3VtZVNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwoKICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hlZFBhcnNpbmcoKTsKCiAgICBib29sIGluUGFnZUNhY2hlKCkgY29uc3QgeyByZXR1cm4g
bV9pblBhZ2VDYWNoZTsgfQogICAgdm9pZCBzZXRJblBhZ2VDYWNoZShib29sIGZsYWcpOwoKCgog
ICAgdm9pZCByZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyhFbGVtZW50Kik7
CiAgICB2b2lkIHVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MoRWxlbWVu
dCopOwogICAgdm9pZCBkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpOwogICAgdm9pZCBkb2N1
bWVudERpZEJlY29tZUFjdGl2ZSgpOwoKICAgIHZvaWQgcmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNh
bGxiYWNrcyhFbGVtZW50Kik7CiAgICB2b2lkIHVucmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxi
YWNrcyhFbGVtZW50Kik7CiAgICB2b2lkIG1lZGlhVm9sdW1lRGlkQ2hhbmdlKCk7CgogICAgdm9p
ZCByZWdpc3RlckZvclByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50
Kik7CiAgICB2b2lkIHVucmVnaXN0ZXJGb3JQcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxs
YmFja3MoRWxlbWVudCopOwogICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgp
OwoKICAgIHZvaWQgc2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKGJvb2wpOwogICAgYm9vbCBzaG91
bGRDcmVhdGVSZW5kZXJlcnMoKTsKCiAgICB2b2lkIHNldERlY29kZXIoUGFzc1JlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPik7CiAgICBUZXh0UmVzb3VyY2VEZWNvZGVyKiBkZWNvZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9CgogICAgU3RyaW5nIGRpc3BsYXlTdHJpbmdN
b2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPikgY29uc3Q7CiAgICB2b2lkIGRpc3BsYXlCdWZmZXJNb2RpZmllZEJ5RW5jb2Rpbmco
VUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuKSBjb25zdDsKCgogICAgdm9pZCBzZXRGcmFtZUVs
ZW1lbnRzU2hvdWxkSWdub3JlU2Nyb2xsaW5nKGJvb2wgaWdub3JlKSB7IG1fZnJhbWVFbGVtZW50
c1Nob3VsZElnbm9yZVNjcm9sbGluZyA9IGlnbm9yZTsgfQogICAgYm9vbCBmcmFtZUVsZW1lbnRz
U2hvdWxkSWdub3JlU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUVsZW1lbnRzU2hv
dWxkSWdub3JlU2Nyb2xsaW5nOyB9CiMgOTg5ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaCIKICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwoK
ICAgIENoZWNrZWRSYWRpb0J1dHRvbnMmIGNoZWNrZWRSYWRpb0J1dHRvbnMoKSB7IHJldHVybiBt
X2NoZWNrZWRSYWRpb0J1dHRvbnM7IH0KCgogICAgY29uc3QgU1ZHRG9jdW1lbnRFeHRlbnNpb25z
KiBzdmdFeHRlbnNpb25zKCk7CiAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGFjY2Vzc1NWR0V4
dGVuc2lvbnMoKTsKCgogICAgdm9pZCBpbml0U2VjdXJpdHlDb250ZXh0KCk7CgoKCgogICAgdm9p
ZCBzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiopOwoKICAgIHZvaWQgdXBkYXRlVVJM
Rm9yUHVzaE9yUmVwbGFjZVN0YXRlKGNvbnN0IEtVUkwmKTsKICAgIHZvaWQgc3RhdGVQb3BwZWQo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CgogICAgYm9vbCBwcm9jZXNzaW5nTG9hZEV2ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9jZXNzaW5nTG9hZEV2ZW50OyB9CiAgICBib29sIGxvYWRFdmVu
dEZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkRXZlbnRGaW5pc2hlZDsgfQoKCiAgICB2
aXJ0dWFsIGJvb2wgYWxsb3dEYXRhYmFzZUFjY2VzcygpIGNvbnN0OwogICAgdmlydHVhbCB2b2lk
IGRhdGFiYXNlRXhjZWVkZWRRdW90YShjb25zdCBTdHJpbmcmIG5hbWUpOwoKCiAgICB2aXJ0dWFs
IGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3Q7CiAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1
dGlvbkZvcmJpZGRlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CgogICAgdm9pZCBzZXRVc2lu
Z0dlb2xvY2F0aW9uKGJvb2wgZikgeyBtX3VzaW5nR2VvbG9jYXRpb24gPSBmOyB9CiAgICBib29s
IHVzaW5nR2VvbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3VzaW5nR2VvbG9jYXRpb247IH07
CgogICAgYm9vbCBjb250YWluc1ZhbGlkaXR5U3R5bGVSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGFpbnNWYWxpZGl0eVN0eWxlUnVsZXM7IH0KICAgIHZvaWQgc2V0Q29udGFpbnNWYWxpZGl0
eVN0eWxlUnVsZXMoKSB7IG1fY29udGFpbnNWYWxpZGl0eVN0eWxlUnVsZXMgPSB0cnVlOyB9Cgog
ICAgdm9pZCBlbnF1ZXVlV2luZG93RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgdm9pZCBl
bnF1ZXVlRG9jdW1lbnRFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICB2b2lkIGVucXVldWVQ
YWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5jZSk7CiAgICB2b2lkIGVucXVldWVI
YXNoY2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJM
KTsKICAgIHZvaWQgZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHN0YXRlT2JqZWN0KTsKICAgIEV2ZW50UXVldWUqIGV2ZW50UXVldWUoKSBjb25z
dCB7IHJldHVybiBtX2V2ZW50UXVldWUuZ2V0KCk7IH0KCiAgICB2b2lkIGFkZE1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKICAgIHZvaWQgcmVtb3ZlTWVkaWFD
YW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwogICAgTWVkaWFDYW5TdGFy
dExpc3RlbmVyKiB0YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCk7CgogICAgY29uc3QgUXVh
bGlmaWVkTmFtZSYgaWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9pZEF0dHJpYnV0
ZU5hbWU7IH0KIyAxMDcyICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCIK
ICAgIHZvaWQgaW5jcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpIHsgKyttX2xvYWRFdmVudERl
bGF5Q291bnQ7IH0KICAgIHZvaWQgZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAg
Ym9vbCBpc0RlbGF5aW5nTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2FkRXZlbnREZWxh
eUNvdW50OyB9CgoKICAgIFBhc3NSZWZQdHI8VG91Y2g+IGNyZWF0ZVRvdWNoKERPTVdpbmRvdyos
IEV2ZW50VGFyZ2V0KiwgaW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90
YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgIFBhc3NS
ZWZQdHI8VG91Y2hMaXN0PiBjcmVhdGVUb3VjaExpc3QoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwoK
CiAgICBjb25zdCBEb2N1bWVudFRpbWluZyogdGltaW5nKCkgY29uc3QgeyByZXR1cm4gJm1fZG9j
dW1lbnRUaW1pbmc7IH0KCgoKCgoKCiAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0KiBlcnJvckV2ZW50
VGFyZ2V0KCk7CiAgICB2aXJ0dWFsIHZvaWQgbG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPik7CgogICAgdm9pZCBpbml0RE5TUHJlZmV0
Y2goKTsKCiAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSgp
IHsgcmV0dXJuIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpOyB9CgogICAgdW5zaWduZWQg
d2hlZWxFdmVudEhhbmRsZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxFdmVudEhhbmRs
ZXJDb3VudDsgfQogICAgdm9pZCBkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigpOwogICAgdm9pZCBk
aWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigpOwoKcHJvdGVjdGVkOgogICAgRG9jdW1lbnQoRnJh
bWUqLCBjb25zdCBLVVJMJiwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCk7CgogICAgdm9pZCBj
bGVhclhNTFZlcnNpb24oKSB7IG1feG1sVmVyc2lvbiA9IFN0cmluZygpOyB9Cgpwcml2YXRlOgog
ICAgZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyOwoK
ICAgIHZvaWQgZGV0YWNoUGFyc2VyKCk7CgogICAgdHlwZWRlZiB2b2lkICgqQXJndW1lbnRzQ2Fs
bGJhY2spKGNvbnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5n
LCBEb2N1bWVudCosIHZvaWQqIGRhdGEpOwogICAgdm9pZCBwcm9jZXNzQXJndW1lbnRzKGNvbnN0
IFN0cmluZyYgZmVhdHVyZXMsIHZvaWQqIGRhdGEsIEFyZ3VtZW50c0NhbGxiYWNrKTsKCiAgICB2
aXJ0dWFsIGJvb2wgaXNEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KCiAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwoKICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CiAgICB2
aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICB2aXJ0dWFsIGJvb2wgY2hpbGRU
eXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CiAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4g
Y2xvbmVOb2RlKGJvb2wgZGVlcCk7CiAgICB2aXJ0dWFsIGJvb2wgY2FuUmVwbGFjZUNoaWxkKE5v
ZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCk7CgogICAgdmlydHVhbCB2b2lkIHJlZlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSB7IHJlZigpOyB9CiAgICB2aXJ0dWFsIHZvaWQgZGVyZWZTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgeyBkZXJlZigpOyB9CgogICAgdmlydHVhbCBjb25zdCBLVVJM
JiB2aXJ0dWFsVVJMKCkgY29uc3Q7CiAgICB2aXJ0dWFsIEtVUkwgdmlydHVhbENvbXBsZXRlVVJM
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwoKICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lcklu
dGVydmFsKCkgY29uc3Q7CgogICAgdm9pZCB1cGRhdGVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJik7CiAgICB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyRmlyZWQoVGltZXI8
RG9jdW1lbnQ+Kik7CiAgICB2b2lkIHVwZGF0ZUJhc2VVUkwoKTsKCiAgICB2b2lkIGNhY2hlRG9j
dW1lbnRFbGVtZW50KCkgY29uc3Q7CgogICAgdm9pZCBidWlsZEFjY2Vzc0tleU1hcChUcmVlU2Nv
cGUqIHJvb3QpOwoKICAgIHZvaWQgY3JlYXRlU3R5bGVTZWxlY3RvcigpOwoKICAgIHZvaWQgZGVs
ZXRlUmV0aXJlZEN1c3RvbUZvbnRzKCk7CgogICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gaGFuZGxl
WmVyb1BhZGRpbmcoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JikgY29uc3Q7
CgogICAgdm9pZCBsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CgoK
CgoKICAgIGludCBtX2d1YXJkUmVmQ291bnQ7CgogICAgT3duUHRyPENTU1N0eWxlU2VsZWN0b3I+
IG1fc3R5bGVTZWxlY3RvcjsKICAgIGJvb2wgbV9kaWRDYWxjdWxhdGVTdHlsZVNlbGVjdG9yOwog
ICAgYm9vbCBtX2hhc0RpcnR5U3R5bGVTZWxlY3RvcjsKICAgIFZlY3RvcjxPd25QdHI8Rm9udERh
dGE+ID4gbV9yZXRpcmVkQ3VzdG9tRm9udHM7CgogICAgbXV0YWJsZSBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWVDYWNoZT4gbV9jc3NQcmltaXRpdmVWYWx1ZUNhY2hlOwoKICAgIEZyYW1lKiBtX2Zy
YW1lOwogICAgT3duUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2NhY2hlZFJlc291cmNlTG9h
ZGVyOwogICAgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBtX3BhcnNlcjsKICAgIGJvb2wgbV93ZWxs
Rm9ybWVkOwoKCiAgICBLVVJMIG1fdXJsOwogICAgS1VSTCBtX2Jhc2VVUkw7CiAgICBLVVJMIG1f
YmFzZUVsZW1lbnRVUkw7CiAgICBLVVJMIG1fY29va2llVVJMOwogICAgS1VSTCBtX2ZpcnN0UGFy
dHlGb3JDb29raWVzOwoKCgoKCgogICAgU3RyaW5nIG1fZG9jdW1lbnRVUkk7CgogICAgU3RyaW5n
IG1fYmFzZVRhcmdldDsKCiAgICBSZWZQdHI8RG9jdW1lbnRUeXBlPiBtX2RvY1R5cGU7CiAgICBP
d25QdHI8RE9NSW1wbGVtZW50YXRpb24+IG1faW1wbGVtZW50YXRpb247CgoKCgoKICAgIGludCBt
X3BlbmRpbmdTdHlsZXNoZWV0czsKCgoKICAgIGJvb2wgbV9pZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHM7CgoKCgogICAgUGVuZGluZ1NoZWV0TGF5b3V0IG1fcGVuZGluZ1NoZWV0TGF5b3V0OwoKICAg
IGJvb2wgbV9oYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlOwoKICAgIFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiBtX2VsZW1TaGVldDsKICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX21hcHBlZEVs
ZW1lbnRTaGVldDsKICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3BhZ2VVc2VyU2hlZXQ7CiAg
ICBtdXRhYmxlIE93blB0cjxWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gPiBtX3BhZ2VH
cm91cFVzZXJTaGVldHM7CiAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
ID4gbV91c2VyU2hlZXRzOwogICAgbXV0YWJsZSBib29sIG1fcGFnZUdyb3VwVXNlclNoZWV0Q2Fj
aGVWYWxpZDsKCiAgICBib29sIG1fcHJpbnRpbmc7CiAgICBib29sIG1fcGFnaW5hdGVkRm9yU2Ny
ZWVuOwoKICAgIGJvb2wgbV9pZ25vcmVBdXRvZm9jdXM7CgogICAgQ29tcGF0aWJpbGl0eU1vZGUg
bV9jb21wYXRpYmlsaXR5TW9kZTsKICAgIGJvb2wgbV9jb21wYXRpYmlsaXR5TW9kZUxvY2tlZDsK
CiAgICBDb2xvciBtX3RleHRDb2xvcjsKCiAgICBSZWZQdHI8Tm9kZT4gbV9mb2N1c2VkTm9kZTsK
ICAgIFJlZlB0cjxOb2RlPiBtX2hvdmVyTm9kZTsKICAgIFJlZlB0cjxOb2RlPiBtX2FjdGl2ZU5v
ZGU7CiAgICBtdXRhYmxlIFJlZlB0cjxFbGVtZW50PiBtX2RvY3VtZW50RWxlbWVudDsKCiAgICB1
aW50NjRfdCBtX2RvbVRyZWVWZXJzaW9uOwogICAgc3RhdGljIHVpbnQ2NF90IHNfZ2xvYmFsVHJl
ZVZlcnNpb247CgogICAgSGFzaFNldDxOb2RlSXRlcmF0b3IqPiBtX25vZGVJdGVyYXRvcnM7CiAg
ICBIYXNoU2V0PFJhbmdlKj4gbV9yYW5nZXM7CgogICAgdW5zaWduZWQgc2hvcnQgbV9saXN0ZW5l
clR5cGVzOwoKICAgIFJlZlB0cjxTdHlsZVNoZWV0TGlzdD4gbV9zdHlsZVNoZWV0czsKCiAgICB0
eXBlZGVmIExpc3RIYXNoU2V0PE5vZGUqLCAzMj4gU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNo
U2V0OwogICAgU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0IG1fc3R5bGVTaGVldENhbmRp
ZGF0ZU5vZGVzOwoKICAgIEZvcm1FbGVtZW50TGlzdEhhc2hTZXQgbV9mb3JtRWxlbWVudHNXaXRo
U3RhdGU7CiAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ+LCAzMj4gRm9ybUFzc29jaWF0ZWRFbGVtZW50TGlzdEhhc2hTZXQ7CiAgICBGb3JtQXNzb2Np
YXRlZEVsZW1lbnRMaXN0SGFzaFNldCBtX2Zvcm1FbGVtZW50c1dpdGhGb3JtQXR0cmlidXRlOwoK
ICAgIHR5cGVkZWYgSGFzaE1hcDxGb3JtRWxlbWVudEtleSwgVmVjdG9yPFN0cmluZz4sIEZvcm1F
bGVtZW50S2V5SGFzaCwgRm9ybUVsZW1lbnRLZXlIYXNoVHJhaXRzPiBGb3JtRWxlbWVudFN0YXRl
TWFwOwogICAgRm9ybUVsZW1lbnRTdGF0ZU1hcCBtX3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzOwoK
ICAgIENvbG9yIG1fbGlua0NvbG9yOwogICAgQ29sb3IgbV92aXNpdGVkTGlua0NvbG9yOwogICAg
Q29sb3IgbV9hY3RpdmVMaW5rQ29sb3I7CgogICAgU3RyaW5nIG1fcHJlZmVycmVkU3R5bGVzaGVl
dFNldDsKICAgIFN0cmluZyBtX3NlbGVjdGVkU3R5bGVzaGVldFNldDsKCiAgICBib29sIG1fbG9h
ZGluZ1NoZWV0OwogICAgYm9vbCBtX3Zpc3VhbGx5T3JkZXJlZDsKICAgIFJlYWR5U3RhdGUgbV9y
ZWFkeVN0YXRlOwogICAgYm9vbCBtX2JQYXJzaW5nOwoKICAgIFRpbWVyPERvY3VtZW50PiBtX3N0
eWxlUmVjYWxjVGltZXI7CiAgICBib29sIG1fcGVuZGluZ1N0eWxlUmVjYWxjU2hvdWxkRm9yY2U7
CiAgICBib29sIG1faW5TdHlsZVJlY2FsYzsKICAgIGJvb2wgbV9jbG9zZUFmdGVyU3R5bGVSZWNh
bGM7CgogICAgYm9vbCBtX3VzZXNTaWJsaW5nUnVsZXM7CiAgICBib29sIG1fdXNlc1NpYmxpbmdS
dWxlc092ZXJyaWRlOwogICAgYm9vbCBtX3VzZXNGaXJzdExpbmVSdWxlczsKICAgIGJvb2wgbV91
c2VzRmlyc3RMZXR0ZXJSdWxlczsKICAgIGJvb2wgbV91c2VzQmVmb3JlQWZ0ZXJSdWxlczsKICAg
IGJvb2wgbV91c2VzQmVmb3JlQWZ0ZXJSdWxlc092ZXJyaWRlOwogICAgYm9vbCBtX3VzZXNSZW1V
bml0czsKICAgIGJvb2wgbV91c2VzTGlua1J1bGVzOwogICAgYm9vbCBtX2dvdG9BbmNob3JOZWVk
ZWRBZnRlclN0eWxlc2hlZXRzTG9hZDsKICAgIGJvb2wgbV9pc0ROU1ByZWZldGNoRW5hYmxlZDsK
ICAgIGJvb2wgbV9oYXZlRXhwbGljaXRseURpc2FibGVkRE5TUHJlZmV0Y2g7CiAgICBib29sIG1f
ZnJhbWVFbGVtZW50c1Nob3VsZElnbm9yZVNjcm9sbGluZzsKICAgIGJvb2wgbV9jb250YWluc1Zh
bGlkaXR5U3R5bGVSdWxlczsKICAgIGJvb2wgbV91cGRhdGVGb2N1c0FwcGVhcmFuY2VSZXN0b3Jl
c1NlbGVjdGlvbjsKCgogICAgdW5zaWduZWQgbV9pZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnQ7
CgogICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3RpdGxlOwogICAgU3RyaW5nV2l0aERpcmVjdGlv
biBtX3Jhd1RpdGxlOwogICAgYm9vbCBtX3RpdGxlU2V0RXhwbGljaXRseTsKICAgIFJlZlB0cjxF
bGVtZW50PiBtX3RpdGxlRWxlbWVudDsKCiAgICBPd25QdHI8UmVuZGVyQXJlbmE+IG1fcmVuZGVy
QXJlbmE7CgogICAgbXV0YWJsZSBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0Q2FjaGU7CiAgICBP
d25QdHI8RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPiBtX21hcmtlcnM7CgogICAgVGltZXI8RG9j
dW1lbnQ+IG1fdXBkYXRlRm9jdXNBcHBlYXJhbmNlVGltZXI7CgogICAgRWxlbWVudCogbV9jc3NU
YXJnZXQ7CgoKCgoKICAgIGJvb2wgbV9wcm9jZXNzaW5nTG9hZEV2ZW50OwogICAgYm9vbCBtX2xv
YWRFdmVudEZpbmlzaGVkOwoKICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fcGVu
ZGluZ1N0YXRlT2JqZWN0OwogICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAgYm9vbCBtX292ZXJN
aW5pbXVtTGF5b3V0VGhyZXNob2xkOwoKICAgIE93blB0cjxTY3JpcHRSdW5uZXI+IG1fc2NyaXB0
UnVubmVyOwoKCiAgICBPd25QdHI8VHJhbnNmb3JtU291cmNlPiBtX3RyYW5zZm9ybVNvdXJjZTsK
ICAgIFJlZlB0cjxEb2N1bWVudD4gbV90cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudDsKCgogICAgaW50
IG1fZG9jSUQ7CgogICAgU3RyaW5nIG1feG1sRW5jb2Rpbmc7CiAgICBTdHJpbmcgbV94bWxWZXJz
aW9uOwogICAgYm9vbCBtX3htbFN0YW5kYWxvbmU7CgogICAgU3RyaW5nIG1fY29udGVudExhbmd1
YWdlOwoKCgoKCiAgICBSZW5kZXJPYmplY3QqIG1fc2F2ZWRSZW5kZXJlcjsKCiAgICBSZWZQdHI8
VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwoKICAgIEluaGVyaXRlZEJvb2wgbV9kZXNp
Z25Nb2RlOwoKICAgIENoZWNrZWRSYWRpb0J1dHRvbnMgbV9jaGVja2VkUmFkaW9CdXR0b25zOwoK
ICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ29sbGVjdGlvbkNhY2hlKj4g
TmFtZWRDb2xsZWN0aW9uTWFwOwogICAgRml4ZWRBcnJheTxDb2xsZWN0aW9uQ2FjaGUsIE51bVVu
bmFtZWREb2N1bWVudENhY2hlZFR5cGVzPiBtX2NvbGxlY3Rpb25JbmZvOwogICAgRml4ZWRBcnJh
eTxOYW1lZENvbGxlY3Rpb25NYXAsIE51bU5hbWVkRG9jdW1lbnRDYWNoZWRUeXBlcz4gbV9uYW1l
Q29sbGVjdGlvbkluZm87CgoKICAgIFJlZlB0cjxYUGF0aEV2YWx1YXRvcj4gbV94cGF0aEV2YWx1
YXRvcjsKCgoKICAgIE93blB0cjxTVkdEb2N1bWVudEV4dGVuc2lvbnM+IG1fc3ZnRXh0ZW5zaW9u
czsKIyAxMzQ4ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCIKICAgIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+ID4gbV9jc3NDYW52YXNFbGVt
ZW50czsKCiAgICBib29sIG1fY3JlYXRlUmVuZGVyZXJzOwogICAgYm9vbCBtX2luUGFnZUNhY2hl
OwogICAgSWNvblVSTCBtX2ljb25VUkxzWzFdOwoKICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fZG9j
dW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tFbGVtZW50czsKICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1f
bWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzOwogICAgSGFzaFNldDxFbGVtZW50Kj4gbV9wcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRFbGVtZW50czsKCiAgICBIYXNoTWFwPFN0cmluZ0ltcGwq
LCBFbGVtZW50KiwgQ2FzZUZvbGRpbmdIYXNoPiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXk7CiAgICBi
b29sIG1fYWNjZXNzS2V5TWFwVmFsaWQ7CgogICAgYm9vbCBtX3VzZVNlY3VyZUtleWJvYXJkRW50
cnlXaGVuQWN0aXZlOwoKICAgIGJvb2wgbV9pc1hIVE1MOwogICAgYm9vbCBtX2lzSFRNTDsKCiAg
ICBib29sIG1faXNWaWV3U291cmNlOwogICAgYm9vbCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVz
cGFjZXM7CgogICAgYm9vbCBtX3VzaW5nR2VvbG9jYXRpb247CgogICAgUmVmUHRyPEV2ZW50UXVl
dWU+IG1fZXZlbnRRdWV1ZTsKCiAgICBSZWZQdHI8RG9jdW1lbnRXZWFrUmVmZXJlbmNlPiBtX3dl
YWtSZWZlcmVuY2U7CgogICAgSGFzaFNldDxNZWRpYUNhblN0YXJ0TGlzdGVuZXIqPiBtX21lZGlh
Q2FuU3RhcnRMaXN0ZW5lcnM7CgogICAgUXVhbGlmaWVkTmFtZSBtX2lkQXR0cmlidXRlTmFtZTsK
IyAxMzkwICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCIKICAgIGludCBt
X2xvYWRFdmVudERlbGF5Q291bnQ7CiAgICBUaW1lcjxEb2N1bWVudD4gbV9sb2FkRXZlbnREZWxh
eVRpbWVyOwoKICAgIFZpZXdwb3J0QXJndW1lbnRzIG1fdmlld3BvcnRBcmd1bWVudHM7CgogICAg
Ym9vbCBtX2RpcmVjdGlvblNldE9uRG9jdW1lbnRFbGVtZW50OwogICAgYm9vbCBtX3dyaXRpbmdN
b2RlU2V0T25Eb2N1bWVudEVsZW1lbnQ7CgogICAgRG9jdW1lbnRUaW1pbmcgbV9kb2N1bWVudFRp
bWluZzsKICAgIFJlZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4gbV9tZWRpYVF1ZXJ5TWF0Y2hlcjsK
ICAgIGJvb2wgbV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcDsKICAgIHVuc2lnbmVkIG1fd3JpdGVS
ZWN1cnNpb25EZXB0aDsKCiAgICB1bnNpZ25lZCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7CgoK
CgoKICAgIFJlZlB0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9s
aWN5Owp9OwoKCgppbmxpbmUgYm9vbCBOb2RlOjppc0RvY3VtZW50Tm9kZSgpIGNvbnN0CnsKICAg
IHJldHVybiB0aGlzID09IG1fZG9jdW1lbnQ7Cn0KCmlubGluZSBOb2RlOjpOb2RlKERvY3VtZW50
KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgOiBtX2RvY3VtZW50KGRvY3Vt
ZW50KQogICAgLCBtX3ByZXZpb3VzKDApCiAgICAsIG1fbmV4dCgwKQogICAgLCBtX3JlbmRlcmVy
KDApCiAgICAsIG1fbm9kZUZsYWdzKHR5cGUpCnsKICAgIGlmIChtX2RvY3VtZW50KQogICAgICAg
IG1fZG9jdW1lbnQtPmd1YXJkUmVmKCk7CgogICAgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKCn0KCn0K
IyAyOSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCIgMgojIDEgIi4uLy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIgMQojIDMy
ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgi
CiNkZWZpbmUgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyX2ggCgoKCgpuYW1lc3BhY2UgV2ViQ29y
ZSB7Cgp0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwoKY2xhc3MgRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyIHsKICAgIHByaXZhdGU6IEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlcihjb25zdCBFeGNl
cHRpb25Db2RlUGxhY2Vob2xkZXImKTsgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyJiBvcGVyYXRv
cj0oY29uc3QgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyJik7CnB1YmxpYzoKICAgIEV4Y2VwdGlv
bkNvZGVQbGFjZWhvbGRlcigpIHsgfQogICAgZXhwbGljaXQgRXhjZXB0aW9uQ29kZVBsYWNlaG9s
ZGVyKEV4Y2VwdGlvbkNvZGUpOwoKICAgIG9wZXJhdG9yIEV4Y2VwdGlvbkNvZGUmICgpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZTsgfQoKcHJvdGVjdGVkOgogICAgbXV0YWJsZSBFeGNlcHRpb25Db2Rl
IG1fY29kZTsKfTsKCmlubGluZSBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXI6OkV4Y2VwdGlvbkNv
ZGVQbGFjZWhvbGRlcihFeGNlcHRpb25Db2RlIGNvZGUpCiAgICA6IG1fY29kZShjb2RlKQp7Cn0K
CmNsYXNzIElnbm9yYWJsZUV4Y2VwdGlvbkNvZGUgOiBwdWJsaWMgRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyIHsKfTsKCgoKCgoKCmNsYXNzIE5vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlciA6IHB1
YmxpYyBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIgewpwdWJsaWM6CiAgICBOb0V4Y2VwdGlvbkFz
c2VydGlvbkNoZWNrZXIoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOwogICAgfk5vRXhjZXB0
aW9uQXNzZXJ0aW9uQ2hlY2tlcigpOwoKcHJpdmF0ZToKICAgIGNvbnN0IGNoYXIqIG1fZmlsZTsK
ICAgIGludCBtX2xpbmU7Cn07CgojZGVmaW5lIEFTU0VSVF9OT19FWENFUFRJT04gOjpXZWJDb3Jl
OjpOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXIoX19GSUxFX18sIF9fTElORV9fKQoKCgp9CiMg
MzAgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgiIDIKIyAxICIuLi8uLi8u
Li9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiIDEKIyAy
NyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lv
bi5oIgojZGVmaW5lIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbl9oIAoKbmFtZXNwYWNlIFdl
YkNvcmUgewoKCgplbnVtIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiB7CiAgICBGcmFnbWVu
dFNjcmlwdGluZ0FsbG93ZWQsCiAgICBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQsCn07Cgp9
OwojIDMxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIiAyCiMgMSAiLi4v
Li4vLi4vU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oIiAxCiMgMjYgIi4uLy4uLy4u
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaCIKI2RlZmluZSBOYW1lZE5vZGVNYXBf
aCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oIiAxCiMgMjYg
Ii4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaCIKI2RlZmluZSBBdHRyaWJ1
dGVfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0NTU01hcHBlZEF0dHJpYnV0
ZURlY2xhcmF0aW9uLmgiIDEKIyAyNiAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0NTU01h
cHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmgiCiNkZWZpbmUgQ1NTTWFwcGVkQXR0cmlidXRlRGVj
bGFyYXRpb25faCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uLmgiIDEKIyAyMiAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvY3NzL0NT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCiNkZWZpbmUgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb25faCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFy
YXRpb24uaCIgMQojIDIyICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNs
YXJhdGlvbi5oIgojZGVmaW5lIENTU1N0eWxlRGVjbGFyYXRpb25faCAKCiMgMSAiLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQmFzZS5oIiAxCiMgMjQgIi4uLy4uLy4uL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUJhc2UuaCIKI2RlZmluZSBTdHlsZUJhc2VfaCAKCgoKCm5hbWVzcGFj
ZSBXZWJDb3JlIHsKCiAgICBjbGFzcyBLVVJMOwogICAgY2xhc3MgTm9kZTsKICAgIGNsYXNzIFN0
eWxlU2hlZXQ7CgoKCgoKCiAgICBjbGFzcyBTdHlsZUJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxT
dHlsZUJhc2U+IHsKICAgIHB1YmxpYzoKICAgICAgICB2aXJ0dWFsIH5TdHlsZUJhc2UoKSB7IH0K
CiAgICAgICAgU3R5bGVCYXNlKiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQog
ICAgICAgIHZvaWQgc2V0UGFyZW50KFN0eWxlQmFzZSogcGFyZW50KSB7IG1fcGFyZW50ID0gcGFy
ZW50OyB9CgoKICAgICAgICBLVVJMIGJhc2VVUkwoKSBjb25zdDsKCiAgICAgICAgdmlydHVhbCBi
b29sIGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CgogICAgICAgIHZp
cnR1YWwgYm9vbCBpc0NoYXJzZXRSdWxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNGb250RmFjZVJ1bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0ltcG9ydFJ1bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgIHZpcnR1YWwgYm9vbCBpc0tleWZyYW1lUnVsZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgICAgdmlydHVhbCBib29sIGlzS2V5ZnJhbWVzUnVsZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgICAgdmlydHVhbCBib29sIGlzTWVkaWFSdWxlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQYWdlUnVsZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgdmlydHVhbCBib29sIGlzUnVsZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVSdWxlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KCiAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVTaGVldCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgdmlydHVhbCBib29sIGlzWFNMU3R5bGVTaGVldCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CgogICAgICAgIHZpcnR1YWwgYm9vbCBpc011dGFibGVT
dHlsZURlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KCiAgICAgICAgdmlydHVh
bCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwoKICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tMb2Fk
ZWQoKTsKCiAgICAgICAgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gIW1f
cGFyZW50IHx8IG1fcGFyZW50LT51c2VTdHJpY3RQYXJzaW5nKCk7IH0KCiAgICAgICAgdmlydHVh
bCB2b2lkIGluc2VydGVkSW50b1BhcmVudCgpIHsgfQoKICAgICAgICBTdHlsZVNoZWV0KiBzdHls
ZXNoZWV0KCk7CiAgICAgICAgTm9kZSogbm9kZSgpOwoKICAgIHByb3RlY3RlZDoKICAgICAgICBT
dHlsZUJhc2UoU3R5bGVCYXNlKiBwYXJlbnQpCiAgICAgICAgICAgIDogbV9wYXJlbnQocGFyZW50
KQogICAgICAgIHsKICAgICAgICB9CgogICAgcHJpdmF0ZToKICAgICAgICBTdHlsZUJhc2UqIG1f
cGFyZW50OwogICAgfTsKfQojIDI1ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5oIiAyCgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb247CmNsYXNzIENTU1Byb3BlcnR5OwpjbGFzcyBDU1NSdWxlOwpjbGFz
cyBDU1NWYWx1ZTsKCnR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CgpjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uIDogcHVibGljIFN0eWxlQmFzZSB7CnB1YmxpYzoKICAgIHN0YXRpYyBib29sIGlz
UHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYpOwoKICAgIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBj
b25zdDsKCiAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgPSAwOwogICAgdmlydHVh
bCB2b2lkIHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKCiAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsTGVuZ3RoKCk7IH0KICAg
IHZpcnR1YWwgdW5zaWduZWQgdmlydHVhbExlbmd0aCgpIGNvbnN0ID0gMDsKICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFsZW5ndGgoKTsgfQogICAgdmlydHVhbCBTdHJpbmcgaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3QgPSAwOwoKICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdl
dFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgU3RyaW5n
IGdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgU3RyaW5n
IGdldFByb3BlcnR5UHJpb3JpdHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgU3Ry
aW5nIGdldFByb3BlcnR5U2hvcnRoYW5kKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKTsKICAg
IGJvb2wgaXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKTsKCiAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHBy
b3BlcnR5SUQpIGNvbnN0ID0gMDsKICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUo
aW50IHByb3BlcnR5SUQpIGNvbnN0ID0gMDsKICAgIHZpcnR1YWwgYm9vbCBnZXRQcm9wZXJ0eVBy
aW9yaXR5KGludCBwcm9wZXJ0eUlEKSBjb25zdCA9IDA7CiAgICB2aXJ0dWFsIGludCBnZXRQcm9w
ZXJ0eVNob3J0aGFuZChpbnQgcHJvcGVydHlJRCkgY29uc3QgPSAwOwogICAgdmlydHVhbCBib29s
IGlzUHJvcGVydHlJbXBsaWNpdChpbnQgcHJvcGVydHlJRCkgY29uc3QgPSAwOwoKICAgIHZvaWQg
c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgIHZvaWQgc2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHks
IEV4Y2VwdGlvbkNvZGUmKTsKICAgIFN0cmluZyByZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgdmlydHVhbCB2b2lkIHNldFByb3Bl
cnR5KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGlu
dCBwcm9wZXJ0eUlELCBFeGNlcHRpb25Db2RlJikgPSAwOwoKICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY29weSgpIGNvbnN0ID0gMDsKICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbWFrZU11dGFibGUoKSA9
IDA7CgogICAgdm9pZCBkaWZmKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKikgY29uc3Q7Cgog
ICAgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY29weVByb3BlcnRpZXNJ
blNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKCgogICAgdm9pZCBz
aG93U3R5bGUoKTsKCgpwcm90ZWN0ZWQ6CiAgICBDU1NTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUq
IHBhcmVudFJ1bGUgPSAwKTsKCiAgICB2aXJ0dWFsIGJvb2wgY3NzUHJvcGVydHlNYXRjaGVzKGNv
bnN0IENTU1Byb3BlcnR5KikgY29uc3Q7Cgp9OwoKfQojIDI1ICIuLi8uLi8uLi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIgMgojIDEgIi4uLy4uLy4uL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIiAxCiMgMjMgIi4uLy4uLy4uL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIgojZGVmaW5lIENTU1ByaW1pdGl2
ZVZhbHVlX2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIiAx
CiMgMjIgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIgojZGVmaW5lIENT
U1ZhbHVlX2ggCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxIYXNo
LmgiIDEKIyAyNSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgiIDIKCgoK
bmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgQ1NTU3R5bGVTaGVldDsKCnR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CgpjbGFzcyBDU1NWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1ZhbHVl
PiB7CnB1YmxpYzoKCiAgICBlbnVtIFVuaXRUeXBlcyB7CiAgICAgICAgQ1NTX0lOSEVSSVQgPSAw
LAogICAgICAgIENTU19QUklNSVRJVkVfVkFMVUUgPSAxLAogICAgICAgIENTU19WQUxVRV9MSVNU
ID0gMiwKICAgICAgICBDU1NfQ1VTVE9NID0gMywKICAgICAgICBDU1NfSU5JVElBTCA9IDQKICAg
IH07CgogICAgdmlydHVhbCB+Q1NTVmFsdWUoKSB7IH0KCgogICAgdmlydHVhbCB1bnNpZ25lZCBz
aG9ydCBjc3NWYWx1ZVR5cGUoKSBjb25zdCB7IHJldHVybiBDU1NfQ1VTVE9NOyB9CgogICAgdmly
dHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0ID0gMDsKICAgIHZvaWQgc2V0Q3NzVGV4dChjb25z
dCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgeyB9CgogICAgdmlydHVhbCBib29sIGlzTXV0YWJs
ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KCiAgICB2aXJ0dWFsIGJvb2wgaXNCb3Jk
ZXJJbWFnZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgIHZpcnR1YWwgYm9vbCBp
c0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICB2aXJ0
dWFsIGJvb2wgaXNDdXJzb3JJbWFnZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KCgoK
ICAgIHZpcnR1YWwgYm9vbCBpc0ZvbnRGYW1pbHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICB2aXJ0dWFsIGJvb2wgaXNGb250RmVhdHVyZVZhbHVlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgIHZpcnR1YWwgYm9vbCBpc0ZvbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUdlbmVyYXRvclZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgdmlydHVhbCBib29sIGlzSW1wbGljaXRJbml0aWFsVmFsdWUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgdmlydHVhbCBib29sIGlzUHJpbWl0aXZlVmFsdWUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgdmlydHVhbCBib29sIGlzUmVmbGVjdFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd1ZhbHVl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgIHZpcnR1YWwgYm9vbCBpc1RpbWluZ0Z1bmN0
aW9uVmFsdWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgdmlydHVhbCBib29sIGlzVmFs
dWVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgIHZpcnR1YWwgYm9vbCBpc1dlYktp
dENTU1RyYW5zZm9ybVZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgIHZpcnR1YWwg
Ym9vbCBpc0NTU0xpbmVCb3hDb250YWluVmFsdWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQoK
CiAgICB2aXJ0dWFsIGJvb2wgaXNTVkdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICB2aXJ0dWFsIGJvb2wgaXNTVkdQYWludCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CgoKICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYs
IGNvbnN0IENTU1N0eWxlU2hlZXQqKSB7IH0KfTsKCn0KIyAyNiAiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIiAyCgoKCgpuYW1lc3BhY2UgV2ViQ29yZSB7
CgpjbGFzcyBDb3VudGVyOwpjbGFzcyBEYXNoYm9hcmRSZWdpb247CmNsYXNzIFBhaXI7CmNsYXNz
IFF1YWQ7CmNsYXNzIFJHQkNvbG9yOwpjbGFzcyBSZWN0OwpjbGFzcyBSZW5kZXJTdHlsZTsKY2xh
c3MgQ1NTV3JhcFNoYXBlOwoKc3RydWN0IExlbmd0aDsKCnRlbXBsYXRlPHR5cGVuYW1lIFQsIFQg
bWF4LCBUIG1pbj4gaW5saW5lIFQgcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uKGRvdWJsZSB2
YWx1ZSkKewoKCgogICAgdmFsdWUgKz0gKHZhbHVlIDwgMCkgPyAtMC4wMSA6ICswLjAxOwogICAg
cmV0dXJuICgodmFsdWUgPiBtYXgpIHx8ICh2YWx1ZSA8IG1pbikpID8gMCA6IHN0YXRpY19jYXN0
PFQ+KHZhbHVlKTsKfQoKY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUg
ewpwdWJsaWM6CiAgICBlbnVtIFVuaXRUeXBlcyB7CiAgICAgICAgQ1NTX1VOS05PV04gPSAwLAog
ICAgICAgIENTU19OVU1CRVIgPSAxLAogICAgICAgIENTU19QRVJDRU5UQUdFID0gMiwKICAgICAg
ICBDU1NfRU1TID0gMywKICAgICAgICBDU1NfRVhTID0gNCwKICAgICAgICBDU1NfUFggPSA1LAog
ICAgICAgIENTU19DTSA9IDYsCiAgICAgICAgQ1NTX01NID0gNywKICAgICAgICBDU1NfSU4gPSA4
LAogICAgICAgIENTU19QVCA9IDksCiAgICAgICAgQ1NTX1BDID0gMTAsCiAgICAgICAgQ1NTX0RF
RyA9IDExLAogICAgICAgIENTU19SQUQgPSAxMiwKICAgICAgICBDU1NfR1JBRCA9IDEzLAogICAg
ICAgIENTU19NUyA9IDE0LAogICAgICAgIENTU19TID0gMTUsCiAgICAgICAgQ1NTX0haID0gMTYs
CiAgICAgICAgQ1NTX0tIWiA9IDE3LAogICAgICAgIENTU19ESU1FTlNJT04gPSAxOCwKICAgICAg
ICBDU1NfU1RSSU5HID0gMTksCiAgICAgICAgQ1NTX1VSSSA9IDIwLAogICAgICAgIENTU19JREVO
VCA9IDIxLAogICAgICAgIENTU19BVFRSID0gMjIsCiAgICAgICAgQ1NTX0NPVU5URVIgPSAyMywK
ICAgICAgICBDU1NfUkVDVCA9IDI0LAogICAgICAgIENTU19SR0JDT0xPUiA9IDI1LAogICAgICAg
IENTU19QQUlSID0gMTAwLAogICAgICAgIENTU19EQVNIQk9BUkRfUkVHSU9OID0gMTAxLAogICAg
ICAgIENTU19VTklDT0RFX1JBTkdFID0gMTAyLAoKCiAgICAgICAgQ1NTX1BBUlNFUl9PUEVSQVRP
UiA9IDEwMywKICAgICAgICBDU1NfUEFSU0VSX0lOVEVHRVIgPSAxMDQsCiAgICAgICAgQ1NTX1BB
UlNFUl9IRVhDT0xPUiA9IDEwNSwKCgogICAgICAgIENTU19QQVJTRVJfSURFTlRJRklFUiA9IDEw
NiwKCgogICAgICAgIENTU19UVVJOID0gMTA3LAogICAgICAgIENTU19SRU1TID0gMTA4LAoKCiAg
ICAgICAgQ1NTX0NPVU5URVJfTkFNRSA9IDEwOSwKICAgICAgICBDU1NfRlJPTV9GTE9XID0gMTEw
LAoKCiAgICAgICAgQ1NTX1NIQVBFID0gMTExLAoKCiAgICAgICAgQ1NTX1FVQUQgPSAxMTIKICAg
IH07CgoKICAgIGVudW0gVW5pdENhdGVnb3J5IHsKICAgICAgICBVTnVtYmVyLAogICAgICAgIFVQ
ZXJjZW50LAogICAgICAgIFVMZW5ndGgsCiAgICAgICAgVUFuZ2xlLAogICAgICAgIFVUaW1lLAog
ICAgICAgIFVGcmVxdWVuY3ksCiAgICAgICAgVU90aGVyCiAgICB9OwoKICAgIHN0YXRpYyBib29s
IGlzVW5pdFR5cGVMZW5ndGgoaW50IHR5cGUpIHsgcmV0dXJuICh0eXBlID4gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QRVJDRU5UQUdFICYmIHR5cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RF
RykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRU1TOyB9CgogICAgYm9vbCBpc0xlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIGlzVW5pdFR5cGVMZW5ndGgobV90eXBlKTsgfQoKICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVyKGludCBpZGVu
dGlmaWVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoaWRlbnRpZmll
cikpOyB9CiAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQ29s
b3IodW5zaWduZWQgcmdiVmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShyZ2JWYWx1ZSkpOyB9CiAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gY3JlYXRlKGRvdWJsZSB2YWx1ZSwgVW5pdFR5cGVzIHR5cGUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSkpOyB9CiAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFVuaXRU
eXBlcyB0eXBlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUs
IHR5cGUpKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoVCB2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSk7CiAgICB9CgogICAgdmlydHVhbCB+
Q1NTUHJpbWl0aXZlVmFsdWUoKTsKCiAgICB2b2lkIGNsZWFudXAoKTsKCiAgICB1bnNpZ25lZCBz
aG9ydCBwcmltaXRpdmVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiMgMTUxICIuLi8u
Li8uLi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFQgY29tcHV0ZUxlbmd0aChSZW5kZXJTdHlsZSogY3VyclN0eWxlLCBSZW5k
ZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRp
bmdGb250U2l6ZSA9IGZhbHNlKTsKCgogICAgdm9pZCBzZXRQcmltaXRpdmVUeXBlKHVuc2lnbmVk
IHNob3J0IHR5cGUpIHsgbV90eXBlID0gdHlwZTsgfQoKICAgIGRvdWJsZSBnZXREb3VibGVWYWx1
ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgZG91
YmxlIGdldERvdWJsZVZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKSBjb25zdDsKICAgIGRv
dWJsZSBnZXREb3VibGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUubnVtOyB9CgogICAg
dm9pZCBzZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBkb3VibGUgZmxvYXRW
YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgZmxvYXQgZ2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBz
aG9ydCB1bml0VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0IHsgcmV0dXJuIGdldFZhbHVl
PGZsb2F0Pih1bml0VHlwZSwgZWMpOyB9CiAgICBmbG9hdCBnZXRGbG9hdFZhbHVlKHVuc2lnbmVk
IHNob3J0IHVuaXRUeXBlKSBjb25zdCB7IHJldHVybiBnZXRWYWx1ZTxmbG9hdD4odW5pdFR5cGUp
OyB9CiAgICBmbG9hdCBnZXRGbG9hdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZ2V0VmFsdWU8Zmxv
YXQ+KCk7IH0KCiAgICBpbnQgZ2V0SW50VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCB7IHJldHVybiBnZXRWYWx1ZTxpbnQ+KHVuaXRUeXBlLCBl
Yyk7IH0KICAgIGludCBnZXRJbnRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29uc3Qg
eyByZXR1cm4gZ2V0VmFsdWU8aW50Pih1bml0VHlwZSk7IH0KICAgIGludCBnZXRJbnRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIGdldFZhbHVlPGludD4oKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBUIGdldFZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QgeyByZXR1cm4gY2xhbXBUbzxUPihnZXREb3VibGVWYWx1ZSh1bml0VHlw
ZSwgZWMpKTsgfQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgZ2V0VmFsdWUodW5z
aWduZWQgc2hvcnQgdW5pdFR5cGUpIGNvbnN0IHsgcmV0dXJuIGNsYW1wVG88VD4oZ2V0RG91Ymxl
VmFsdWUodW5pdFR5cGUpKTsgfQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgZ2V0
VmFsdWUoKSBjb25zdCB7IHJldHVybiBjbGFtcFRvPFQ+KG1fdmFsdWUubnVtKTsgfQoKICAgIHZv
aWQgc2V0U3RyaW5nVmFsdWUodW5zaWduZWQgc2hvcnQgc3RyaW5nVHlwZSwgY29uc3QgU3RyaW5n
JiBzdHJpbmdWYWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgU3RyaW5nIGdldFN0cmluZ1ZhbHVl
KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgIFN0cmluZyBnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0
OwoKICAgIENvdW50ZXIqIGdldENvdW50ZXJWYWx1ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAg
ICBDb3VudGVyKiBnZXRDb3VudGVyVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gQ1NT
X0NPVU5URVIgPyAwIDogbV92YWx1ZS5jb3VudGVyOyB9CgogICAgUmVjdCogZ2V0UmVjdFZhbHVl
KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgIFJlY3QqIGdldFJlY3RWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZSAhPSBDU1NfUkVDVCA/IDAgOiBtX3ZhbHVlLnJlY3Q7IH0KCiAgICBRdWFk
KiBnZXRRdWFkVmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgUXVhZCogZ2V0UXVhZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IENTU19RVUFEID8gMCA6IG1fdmFsdWUucXVh
ZDsgfQoKICAgIFBhc3NSZWZQdHI8UkdCQ29sb3I+IGdldFJHQkNvbG9yVmFsdWUoRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OwogICAgUkdCQTMyIGdldFJHQkEzMlZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlICE9IENTU19SR0JDT0xPUiA/IDAgOiBtX3ZhbHVlLnJnYmNvbG9yOyB9CgogICAgUGFp
ciogZ2V0UGFpclZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgIFBhaXIqIGdldFBhaXJW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBDU1NfUEFJUiA/IDAgOiBtX3ZhbHVlLnBh
aXI7IH0KCiAgICBEYXNoYm9hcmRSZWdpb24qIGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlICE9IENTU19EQVNIQk9BUkRfUkVHSU9OID8gMCA6IG1fdmFsdWUu
cmVnaW9uOyB9CgogICAgQ1NTV3JhcFNoYXBlKiBnZXRTaGFwZVZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlICE9IENTU19TSEFQRSA/IDAgOiBtX3ZhbHVlLnNoYXBlOyB9CgogICAgaW50IGdl
dElkZW50KCkgY29uc3Q7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgb3BlcmF0b3Ig
VCgpIGNvbnN0OwoKICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBi
b29sID0gZmFsc2UpOwogICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwoKICAgIHZp
cnR1YWwgYm9vbCBpc1F1aXJrVmFsdWUoKSB7IHJldHVybiBmYWxzZTsgfQoKICAgIHZpcnR1YWwg
dm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IENT
U1N0eWxlU2hlZXQqKTsKCnByb3RlY3RlZDoKCiAgICBDU1NQcmltaXRpdmVWYWx1ZShpbnQgaWRl
bnQpOwogICAgQ1NTUHJpbWl0aXZlVmFsdWUoZG91YmxlLCBVbml0VHlwZXMpOwogICAgQ1NTUHJp
bWl0aXZlVmFsdWUoY29uc3QgU3RyaW5nJiwgVW5pdFR5cGVzKTsKCnByaXZhdGU6CiAgICBDU1NQ
cmltaXRpdmVWYWx1ZSgpOwogICAgQ1NTUHJpbWl0aXZlVmFsdWUodW5zaWduZWQgY29sb3IpOwog
ICAgQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgTGVuZ3RoJik7CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gQ1NTUHJpbWl0aXZlVmFsdWUoVCk7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDU1NQ
cmltaXRpdmVWYWx1ZShUKiB2YWwpIHsgaW5pdChQYXNzUmVmUHRyPFQ+KHZhbCkpOyB9CiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDU1NQcmltaXRpdmVWYWx1ZShQYXNzUmVmUHRyPFQ+IHZhbCkg
eyBpbml0KHZhbCk7IH0KCiAgICBzdGF0aWMgdm9pZCBjcmVhdGUoaW50KTsKICAgIHN0YXRpYyB2
b2lkIGNyZWF0ZSh1bnNpZ25lZCk7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBvcGVyYXRvciBU
KigpOwoKICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVVbmNh
Y2hlZElkZW50aWZpZXIoaW50IGlkZW50aWZpZXIpOwogICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVVuY2FjaGVkQ29sb3IodW5zaWduZWQgcmdiVmFsdWUpOwog
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVVuY2FjaGVkKGRv
dWJsZSB2YWx1ZSwgVW5pdFR5cGVzIHR5cGUpOwoKICAgIHN0YXRpYyBVbml0VHlwZXMgY2Fub25p
Y2FsVW5pdFR5cGVGb3JDYXRlZ29yeShVbml0Q2F0ZWdvcnkgY2F0ZWdvcnkpOwoKICAgIHZvaWQg
aW5pdChQYXNzUmVmUHRyPENvdW50ZXI+KTsKICAgIHZvaWQgaW5pdChQYXNzUmVmUHRyPFJlY3Q+
KTsKICAgIHZvaWQgaW5pdChQYXNzUmVmUHRyPFBhaXI+KTsKICAgIHZvaWQgaW5pdChQYXNzUmVm
UHRyPFF1YWQ+KTsKICAgIHZvaWQgaW5pdChQYXNzUmVmUHRyPERhc2hib2FyZFJlZ2lvbj4pOwog
ICAgdm9pZCBpbml0KFBhc3NSZWZQdHI8Q1NTV3JhcFNoYXBlPik7CgogICAgYm9vbCBnZXREb3Vi
bGVWYWx1ZUludGVybmFsKFVuaXRUeXBlcyB0YXJnZXRVbml0VHlwZSwgZG91YmxlKiByZXN1bHQp
IGNvbnN0OwoKICAgIGRvdWJsZSBjb21wdXRlTGVuZ3RoRG91YmxlKFJlbmRlclN0eWxlKiBjdXJy
ZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29s
IGNvbXB1dGluZ0ZvbnRTaXplKTsKCiAgICB2aXJ0dWFsIGJvb2wgaXNQcmltaXRpdmVWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KCiAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IGNzc1Zh
bHVlVHlwZSgpIGNvbnN0OwoKICAgIHNpZ25lZCBtX3R5cGUgOiAzMTsKICAgIG11dGFibGUgdW5z
aWduZWQgbV9oYXNDYWNoZWRDU1NUZXh0IDogMTsKICAgIHVuaW9uIHsKICAgICAgICBpbnQgaWRl
bnQ7CiAgICAgICAgZG91YmxlIG51bTsKICAgICAgICBTdHJpbmdJbXBsKiBzdHJpbmc7CiAgICAg
ICAgQ291bnRlciogY291bnRlcjsKICAgICAgICBSZWN0KiByZWN0OwogICAgICAgIFF1YWQqIHF1
YWQ7CiAgICAgICAgdW5zaWduZWQgcmdiY29sb3I7CiAgICAgICAgUGFpciogcGFpcjsKICAgICAg
ICBEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbjsKICAgICAgICBDU1NXcmFwU2hhcGUqIHNoYXBlOwog
ICAgfSBtX3ZhbHVlOwp9OwoKfQojIDI2ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5oIiAxCiMgMjIgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eS5oIgojZGVmaW5lIENTU1Byb3BlcnR5X2ggCgoKIyAxICIuLi8uLi8uLi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCIgMQojIDI2
ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaCIgMgojIDEgIi4uLy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dERpcmVjdGlvbi5oIiAxCiMgMjcg
Ii4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oIiAyCgoKCm5hbWVzcGFj
ZSBXZWJDb3JlIHsKCmNsYXNzIENTU1Byb3BlcnR5IHsKICAgIHB1YmxpYzogdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCBzaXplKSB7IHZvaWQqIHAgPSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xh
c3NOZXcpOyByZXR1cm4gcDsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5
cGVDbGFzc05ldyk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlw
ZUNsYXNzTmV3QXJyYXkpOyByZXR1cm4gcDsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQq
IHApIHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJu
YWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gcHJpdmF0
ZTogdHlwZWRlZiBpbnQgVGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87
CnB1YmxpYzoKICAgIENTU1Byb3BlcnR5KGludCBwcm9wSUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNlLCBpbnQgc2hvcnRoYW5kSUQgPSAwLCBib29s
IGltcGxpY2l0ID0gZmFsc2UpCiAgICAgICAgOiBtX2lkKHByb3BJRCkKICAgICAgICAsIG1fc2hv
cnRoYW5kSUQoc2hvcnRoYW5kSUQpCiAgICAgICAgLCBtX2ltcG9ydGFudChpbXBvcnRhbnQpCiAg
ICAgICAgLCBtX2ltcGxpY2l0KGltcGxpY2l0KQogICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAg
IHsKICAgIH0KCiAgICBDU1NQcm9wZXJ0eSYgb3BlcmF0b3I9KGNvbnN0IENTU1Byb3BlcnR5JiBv
dGhlcikKICAgIHsKICAgICAgICBtX2lkID0gb3RoZXIubV9pZDsKICAgICAgICBtX3Nob3J0aGFu
ZElEID0gb3RoZXIubV9zaG9ydGhhbmRJRDsKICAgICAgICBtX2ltcG9ydGFudCA9IG90aGVyLm1f
aW1wb3J0YW50OwogICAgICAgIG1faW1wbGljaXQgPSBvdGhlci5tX2ltcGxpY2l0OwogICAgICAg
IG1fdmFsdWUgPSBvdGhlci5tX3ZhbHVlOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAg
ICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICBpbnQgc2hvcnRoYW5kSUQoKSBj
b25zdCB7IHJldHVybiBtX3Nob3J0aGFuZElEOyB9CgogICAgYm9vbCBpc0ltcG9ydGFudCgpIGNv
bnN0IHsgcmV0dXJuIG1faW1wb3J0YW50OyB9CiAgICBib29sIGlzSW1wbGljaXQoKSBjb25zdCB7
IHJldHVybiBtX2ltcGxpY2l0OyB9CgogICAgQ1NTVmFsdWUqIHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZS5nZXQoKTsgfQoKICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CgogICAgc3Rh
dGljIGludCByZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgVGV4
dERpcmVjdGlvbiwgV3JpdGluZ01vZGUpOwoKICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ1NTUHJvcGVydHkmLCBjb25zdCBDU1NQcm9wZXJ0eSYpOwoKCiAgICBzaWduZWQgbV9pZCA6
IDE1OwogICAgc2lnbmVkIG1fc2hvcnRoYW5kSUQgOiAxNTsKICAgIGJvb2wgbV9pbXBvcnRhbnQg
OiAxOwogICAgYm9vbCBtX2ltcGxpY2l0IDogMTsKCiAgICBSZWZQdHI8Q1NTVmFsdWU+IG1fdmFs
dWU7Cn07Cgp9CgpuYW1lc3BhY2UgV1RGIHsKCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JU
cmFpdHM8V2ViQ29yZTo6Q1NTUHJvcGVydHk+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9
Owp9CiMgMjcgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5oIiAyCgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
UGxhdGZvcm1TdHJpbmcuaCIgMQojIDI5ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIgMgoKCgpuYW1lc3BhY2UgV2ViQ29yZSB7CgpjbGFz
cyBOb2RlOwoKY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25Db25zdEl0ZXJhdG9yIHsK
cHVibGljOgogICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25Db25zdEl0ZXJhdG9yKGNvbnN0
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsLCBDU1NQcm9wZXJ0eSogY3VycmVudCk7
CiAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkNvbnN0SXRlcmF0b3IoY29uc3QgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb25Db25zdEl0ZXJhdG9yJiBvKTsKICAgIH5DU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbkNvbnN0SXRlcmF0b3IoKTsKCiAgICBjb25zdCBDU1NQcm9wZXJ0eSYgb3Bl
cmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKm1fY3VycmVudDsgfQogICAgY29uc3QgQ1NTUHJvcGVy
dHkqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQ7IH0KCiAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25Db25zdEl0ZXJhdG9yJiBv
KSB7IGRvIGlmICghKG1fZGVjbCA9PSBvLm1fZGVjbCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFp
bHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uLmgiLCA0NSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIm1fZGVjbCA9PSBvLm1fZGVjbCIpOyBk
byB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9
IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHJldHVy
biBtX2N1cnJlbnQgIT0gby5tX2N1cnJlbnQ7IH0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkNvbnN0SXRlcmF0b3ImIG8pIHsgZG8gaWYgKCEobV9k
ZWNsID09IG8ubV9kZWNsKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIsIDQ2LCBfX1BS
RVRUWV9GVU5DVElPTl9fLCAibV9kZWNsID09IG8ubV9kZWNsIik7IGRvIHsgV1RGUmVwb3J0QmFj
a3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkp
MCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIG1fY3VycmVudCA9PSBv
Lm1fY3VycmVudDsgfQoKICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uQ29uc3RJdGVyYXRv
ciYgb3BlcmF0b3I9KGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uQ29uc3RJdGVyYXRv
ciYgbyk7CgogICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25Db25zdEl0ZXJhdG9yJiBvcGVy
YXRvcisrKCk7CiAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkNvbnN0SXRlcmF0b3ImIG9w
ZXJhdG9yLS0oKTsKCnByaXZhdGU6CiAgICBjb25zdCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biogbV9kZWNsOwogICAgQ1NTUHJvcGVydHkqIG1fY3VycmVudDsKfTsKCmNsYXNzIENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uIDogcHVibGljIENTU1N0eWxlRGVjbGFyYXRpb24gewpwdWJsaWM6
CiAgICB2aXJ0dWFsIH5DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbigpOwoKICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoKQogICAgewogICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24pOwogICAg
fQogICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0
ZShDU1NSdWxlKiBwYXJlbnRSdWxlKQogICAgewogICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24ocGFyZW50UnVsZSkpOwogICAgfQogICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShDU1NSdWxlKiBw
YXJlbnRSdWxlLCBjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QqIHByb3BlcnRpZXMsIGludCBudW1Q
cm9wZXJ0aWVzKQogICAgewogICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24ocGFyZW50UnVsZSwgcHJvcGVydGllcywgbnVtUHJvcGVydGllcykpOwog
ICAgfQogICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNy
ZWF0ZShjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+JiBwcm9wZXJ0aWVzKQogICAgewogICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oMCwgcHJvcGVy
dGllcykpOwogICAgfQoKICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uJiBvcGVyYXRvcj0o
Y29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24mKTsKCiAgICB0eXBlZGVmIENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uQ29uc3RJdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKCiAgICBjb25z
dF9pdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMsIG1fcHJvcGVy
dGllcy5iZWdpbigpKTsgfQogICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gY29uc3Rf
aXRlcmF0b3IodGhpcywgbV9wcm9wZXJ0aWVzLmVuZCgpKTsgfQoKICAgIHZvaWQgc2V0Tm9kZShO
b2RlKiBub2RlKSB7IG1fbm9kZSA9IG5vZGU7IH0KCiAgICBOb2RlKiBub2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9ub2RlOyB9CgogICAgdmlydHVhbCBib29sIGlzTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CgogICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgp
IGNvbnN0OwogICAgdmlydHVhbCB2b2lkIHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpOwoKICAgIHZpcnR1YWwgdW5zaWduZWQgdmlydHVhbExlbmd0aCgpIGNvbnN0Owog
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLnNpemUoKTsg
fQoKICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwoKICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVy
dHlJRCkgY29uc3Q7CiAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKGludCBwcm9w
ZXJ0eUlEKSBjb25zdDsKICAgIHZpcnR1YWwgYm9vbCBnZXRQcm9wZXJ0eVByaW9yaXR5KGludCBw
cm9wZXJ0eUlEKSBjb25zdDsKICAgIHZpcnR1YWwgaW50IGdldFByb3BlcnR5U2hvcnRoYW5kKGlu
dCBwcm9wZXJ0eUlEKSBjb25zdDsKICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQo
aW50IHByb3BlcnR5SUQpIGNvbnN0OwoKICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eShpbnQg
cHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlE
LCBFeGNlcHRpb25Db2RlJik7CgogICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBjb3B5KCkgY29uc3Q7CgogICAgYm9vbCBzZXRQcm9wZXJ0eShpbnQgcHJv
cGVydHlJRCwgaW50IHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNlLCBib29sIG5vdGlmeUNo
YW5nZWQgPSB0cnVlKTsKICAgIGJvb2wgc2V0UHJvcGVydHkoaW50IHByb3BlcnR5SWQsIGRvdWJs
ZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcywgYm9vbCBpbXBvcnRhbnQgPSBm
YWxzZSwgYm9vbCBub3RpZnlDaGFuZ2VkID0gdHJ1ZSk7CiAgICBib29sIHNldFByb3BlcnR5KGlu
dCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNl
LCBib29sIG5vdGlmeUNoYW5nZWQgPSB0cnVlKTsKCiAgICBTdHJpbmcgcmVtb3ZlUHJvcGVydHko
aW50IHByb3BlcnR5SUQsIGJvb2wgbm90aWZ5Q2hhbmdlZCA9IHRydWUsIGJvb2wgcmV0dXJuVGV4
dCA9IGZhbHNlKTsKCgogICAgdm9pZCBzZXRMZW5ndGhQcm9wZXJ0eShpbnQgcHJvcGVydHlJZCwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgbXVsdGlMZW5ndGggPSBm
YWxzZSk7CiAgICB2b2lkIHNldFN0cmluZ1Byb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzLCBib29sIGltcG9ydGFu
dCA9IGZhbHNlKTsKICAgIHZvaWQgc2V0SW1hZ2VQcm9wZXJ0eShpbnQgcHJvcGVydHlJZCwgY29u
c3QgU3RyaW5nJiB1cmwsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOwoKCiAgICB2b2lkIHBhcnNl
RGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uKTsKCgoKICAgIHZvaWQg
YWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QgKiwgaW50IG51bVBy
b3BlcnRpZXMpOwoKICAgIHZvaWQgYWRkUGFyc2VkUHJvcGVydHkoY29uc3QgQ1NTUHJvcGVydHkm
KTsKCiAgICBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjb3B5QmxvY2tQ
cm9wZXJ0aWVzKCkgY29uc3Q7CiAgICB2b2lkIHJlbW92ZUJsb2NrUHJvcGVydGllcygpOwogICAg
dm9pZCByZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2lnbmVkIGxlbmd0
aCwgYm9vbCBub3RpZnlDaGFuZ2VkID0gdHJ1ZSk7CgogICAgdm9pZCBtZXJnZShjb25zdCBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIGJvb2wgYXJnT3ZlcnJpZGVzT25Db25mbGljdCA9IHRy
dWUpOwoKICAgIHZvaWQgc2V0U3RyaWN0UGFyc2luZyhib29sIGIpIHsgbV9zdHJpY3RQYXJzaW5n
ID0gYjsgfQogICAgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
Y3RQYXJzaW5nOyB9CgogICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYpOwoKICAgIGJvb2wgcHJvcGVydGllc0VxdWFsKGNvbnN0IENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiBvKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnRpZXMgPT0gby0+bV9wcm9w
ZXJ0aWVzOyB9CgogICAgYm9vbCBpc0lubGluZVN0eWxlRGVjbGFyYXRpb24oKTsKCnByb3RlY3Rl
ZDoKICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudFJ1bGUpOwoK
cHJpdmF0ZToKICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKCk7CiAgICBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBWZWN0b3I8Q1NTUHJv
cGVydHk+Jik7CiAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRS
dWxlLCBjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QgKiwgaW50IG51bVByb3BlcnRpZXMpOwoKICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbWFrZU11dGFi
bGUoKTsKCiAgICB2b2lkIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKCiAgICBTdHJpbmcgZ2V0U2hv
cnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QpIGNvbnN0OwogICAgU3Ry
aW5nIGdldENvbW1vblZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgc2l6ZV90KSBjb25zdDsK
ICAgIFN0cmluZyBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVz
LCBzaXplX3QpIGNvbnN0OwogICAgU3RyaW5nIGdldDRWYWx1ZXMoY29uc3QgaW50KiBwcm9wZXJ0
aWVzKSBjb25zdDsKICAgIFN0cmluZyBib3JkZXJTcGFjaW5nVmFsdWUoY29uc3QgaW50IHByb3Bl
cnRpZXNbMl0pIGNvbnN0OwoKICAgIHRlbXBsYXRlPHNpemVfdCBzaXplPiBTdHJpbmcgZ2V0U2hv
cnRoYW5kVmFsdWUoY29uc3QgaW50ICgmcHJvcGVydGllcylbc2l6ZV0pIGNvbnN0IHsgcmV0dXJu
IGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIHNpemUpOyB9CiAgICB0ZW1wbGF0ZTxzaXpl
X3Qgc2l6ZT4gU3RyaW5nIGdldENvbW1vblZhbHVlKGNvbnN0IGludCAoJnByb3BlcnRpZXMpW3Np
emVdKSBjb25zdCB7IHJldHVybiBnZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVzLCBzaXplKTsgfQog
ICAgdGVtcGxhdGU8c2l6ZV90IHNpemU+IFN0cmluZyBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUo
Y29uc3QgaW50ICgmcHJvcGVydGllcylbc2l6ZV0pIGNvbnN0IHsgcmV0dXJuIGdldExheWVyZWRT
aG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCBzaXplKTsgfQoKICAgIHZvaWQgc2V0UHJvcGVydHlJ
bnRlcm5hbChjb25zdCBDU1NQcm9wZXJ0eSYsIENTU1Byb3BlcnR5KiBzbG90ID0gMCk7CiAgICBi
b29sIHJlbW92ZVNob3J0aGFuZFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBib29sIG5vdGlmeUNo
YW5nZWQpOwoKICAgIFZlY3RvcjxDU1NQcm9wZXJ0eT46OmNvbnN0X2l0ZXJhdG9yIGZpbmRQcm9w
ZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJZCkgY29uc3Q7CiAgICBWZWN0b3I8Q1NTUHJvcGVydHk+
OjppdGVyYXRvciBmaW5kUHJvcGVydHlXaXRoSWQoaW50IHByb3BlcnR5SWQpOwoKICAgIFZlY3Rv
cjxDU1NQcm9wZXJ0eSwgND4gbV9wcm9wZXJ0aWVzOwoKICAgIE5vZGUqIG1fbm9kZTsKICAgIGJv
b2wgbV9zdHJpY3RQYXJzaW5nIDogMTsKCiAgICB1bnNpZ25lZCBtX2l0ZXJhdG9yQ291bnQgOiA0
OwoKCiAgICBmcmllbmQgY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25Db25zdEl0ZXJh
dG9yOwp9OwoKaW5saW5lIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uQ29uc3RJdGVyYXRvcjo6
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25Db25zdEl0ZXJhdG9yKGNvbnN0IENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKiBkZWNsLCBDU1NQcm9wZXJ0eSogY3VycmVudCkKOiBtX2RlY2woZGVj
bCkKLCBtX2N1cnJlbnQoY3VycmVudCkKewoKICAgIGNvbnN0X2Nhc3Q8Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24qPihtX2RlY2wpLT5tX2l0ZXJhdG9yQ291bnQrKzsKCn0KCmlubGluZSBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbkNvbnN0SXRlcmF0b3I6OkNTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uQ29uc3RJdGVyYXRvcihjb25zdCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkNvbnN0
SXRlcmF0b3ImIG8pCjogbV9kZWNsKG8ubV9kZWNsKQosIG1fY3VycmVudChvLm1fY3VycmVudCkK
ewoKICAgIGNvbnN0X2Nhc3Q8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qPihtX2RlY2wpLT5t
X2l0ZXJhdG9yQ291bnQrKzsKCn0KCmlubGluZSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkNv
bnN0SXRlcmF0b3I6On5DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkNvbnN0SXRlcmF0b3IoKQp7
CgogICAgY29uc3RfY2FzdDxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbio+KG1fZGVjbCktPm1f
aXRlcmF0b3JDb3VudC0tOwoKfQoKaW5saW5lIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uQ29u
c3RJdGVyYXRvciYgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25Db25zdEl0ZXJhdG9yOjpvcGVy
YXRvcj0oY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25Db25zdEl0ZXJhdG9yJiBvKQp7
CiAgICBtX2RlY2wgPSBvLm1fZGVjbDsKICAgIG1fY3VycmVudCA9IG8ubV9jdXJyZW50OwoKICAg
IGNvbnN0X2Nhc3Q8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qPihtX2RlY2wpLT5tX2l0ZXJh
dG9yQ291bnQrKzsKCiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbkNvbnN0SXRlcmF0b3ImIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uQ29uc3RJ
dGVyYXRvcjo6b3BlcmF0b3IrKygpCnsKICAgIGRvIGlmICghKG1fY3VycmVudCAhPSBjb25zdF9j
YXN0PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKj4obV9kZWNsKS0+bV9wcm9wZXJ0aWVzLmVu
ZCgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIsIDIyMiwgX19QUkVUVFlfRlVOQ1RJ
T05fXywgIm1fY3VycmVudCAhPSBjb25zdF9jYXN0PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
Kj4obV9kZWNsKS0+bV9wcm9wZXJ0aWVzLmVuZCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNl
KCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsKICAgICsrbV9jdXJyZW50OwogICAgcmV0dXJu
ICp0aGlzOwp9CgppbmxpbmUgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25Db25zdEl0ZXJhdG9y
JiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkNvbnN0SXRlcmF0b3I6Om9wZXJhdG9yLS0oKQp7
CiAgICAtLW1fY3VycmVudDsKICAgIHJldHVybiAqdGhpczsKfQoKfQojIDI5ICIuLi8uLi8uLi9T
b3VyY2UvV2ViQ29yZS9kb20vQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uaCIgMgojIDEg
Ii4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9NYXBwZWRBdHRyaWJ1dGVFbnRyeS5oIiAxCiMg
MjcgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9NYXBwZWRBdHRyaWJ1dGVFbnRyeS5oIgoj
ZGVmaW5lIE1hcHBlZEF0dHJpYnV0ZUVudHJ5X2ggCgpuYW1lc3BhY2UgV2ViQ29yZSB7CgplbnVt
IE1hcHBlZEF0dHJpYnV0ZUVudHJ5IHsKICAgICAgZU5vbmUKICAgICwgZVVuaXZlcnNhbAogICAg
LCBlUGVyc2lzdGVudAogICAgLCBlUmVwbGFjZWQKICAgICwgZUJsb2NrCiAgICAsIGVIUgogICAg
LCBlVW5vcmRlcmVkTGlzdAogICAgLCBlTGlzdEl0ZW0KICAgICwgZVRhYmxlCiAgICAsIGVDZWxs
CiAgICAsIGVDYXB0aW9uCiAgICAsIGVCRE8KICAgICwgZVByZQoKICAgICwgZVNWRwoKCgoKCiAg
ICAsIGVMYXN0RW50cnkKfTsKCn0KIyAzMCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0NT
U01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmgiIDIKCgpuYW1lc3BhY2UgV2ViQ29yZSB7Cgpj
bGFzcyBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbiB7CnB1YmxpYzoKICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU01hcHBlZEF0
dHJpYnV0ZURlY2xhcmF0aW9uPiBjcmVhdGUoKQogICAgewogICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oMCkpOwogICAgfQoKICAgIHZpcnR1
YWwgfkNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCk7CgogICAgdm9pZCBzZXRNYXBwZWRT
dGF0ZShNYXBwZWRBdHRyaWJ1dGVFbnRyeSB0eXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbCkKICAgIHsKICAgICAgICBtX2VudHJ5VHlwZSA9IHR5
cGU7CiAgICAgICAgbV9hdHRyTmFtZSA9IG5hbWU7CiAgICAgICAgbV9hdHRyVmFsdWUgPSB2YWw7
CiAgICB9Cgpwcml2YXRlOgogICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oQ1NTUnVs
ZSogcGFyZW50UnVsZSkKICAgICAgICA6IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKHBhcmVu
dFJ1bGUpCiAgICAgICAgLCBtX2VudHJ5VHlwZShlTm9uZSkKICAgICAgICAsIG1fYXR0ck5hbWUo
YW55UU5hbWUoKSkKICAgIHsKICAgIH0KCiAgICBNYXBwZWRBdHRyaWJ1dGVFbnRyeSBtX2VudHJ5
VHlwZTsKICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyTmFtZTsKICAgIEF0b21pY1N0cmluZyBtX2F0
dHJWYWx1ZTsKfTsKCn0KIyAyOSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0
ZS5oIiAyCgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgQXR0cjsKY2xhc3MgQ1NTU3R5bGVE
ZWNsYXJhdGlvbjsKY2xhc3MgRWxlbWVudDsKY2xhc3MgTmFtZWROb2RlTWFwOwoKCgoKY2xhc3Mg
QXR0cmlidXRlIDogcHVibGljIFJlZkNvdW50ZWQ8QXR0cmlidXRlPiB7CiAgICBmcmllbmQgY2xh
c3MgQXR0cjsKICAgIGZyaWVuZCBjbGFzcyBOYW1lZE5vZGVNYXA7CnB1YmxpYzoKICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGZhbHNlLCAwKSk7CiAgICB9CiAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBdHRyaWJ1dGU+IGNyZWF0ZU1hcHBlZChjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogICAgewogICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQXR0cmlidXRlKG5hbWUsIHZhbHVlLCB0cnVlLCAwKSk7CiAgICB9CiAgICBzdGF0
aWMgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IGNyZWF0ZU1hcHBlZChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHRydWUsIDApKTsKICAgIH0KCiAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgoKSBjb25zdCB7IHJldHVybiBtX25hbWUucHJlZml4
KCk7IH0KICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lLmxvY2FsTmFtZSgpOyB9CiAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVS
SSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5uYW1lc3BhY2VVUkkoKTsgfQoKICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KCiAgICBBdHRyKiBh
dHRyKCkgY29uc3Q7CiAgICBQYXNzUmVmUHRyPEF0dHI+IGNyZWF0ZUF0dHJJZk5lZWRlZChFbGVt
ZW50Kik7CgogICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmlzTnVsbCgp
OyB9CiAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmlzRW1wdHkoKTsg
fQoKICAgIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjbG9uZSgpIGNvbnN0OwoKCiAgICBDU1NTdHls
ZURlY2xhcmF0aW9uKiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVEZWNsLmdldCgpOyB9
CiAgICBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiogZGVjbCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3R5bGVEZWNsLmdldCgpOyB9CiAgICB2b2lkIHNldERlY2woUGFzc1JlZlB0cjxDU1NNYXBw
ZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbj4gZGVjbCkgeyBtX3N0eWxlRGVjbCA9IGRlY2w7IH0KCiAg
ICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV92YWx1ZSA9IHZh
bHVlOyB9CiAgICB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCkgeyBt
X25hbWUuc2V0UHJlZml4KHByZWZpeCk7IH0KCgoKCiAgICB2b2lkIHBhcnNlclNldE5hbWUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CgogICAgYm9vbCBpc01h
cHBlZEF0dHJpYnV0ZSgpIHsgcmV0dXJuIG1faXNNYXBwZWRBdHRyaWJ1dGU7IH0KCnByaXZhdGU6
CiAgICBBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSwgYm9vbCBpc01hcHBlZEF0dHJpYnV0ZSwgQ1NTTWFwcGVkQXR0cmlidXRlRGVj
bGFyYXRpb24qIHN0eWxlRGVjbCkKICAgICAgICA6IG1faXNNYXBwZWRBdHRyaWJ1dGUoaXNNYXBw
ZWRBdHRyaWJ1dGUpCiAgICAgICAgLCBtX2hhc0F0dHIoZmFsc2UpCiAgICAgICAgLCBtX25hbWUo
bmFtZSkKICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgLCBtX3N0eWxlRGVjbChzdHls
ZURlY2wpCiAgICB7CiAgICB9CgogICAgQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgYm9vbCBpc01hcHBlZEF0dHJpYnV0ZSwgQ1NT
TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIHN0eWxlRGVjbCkKICAgICAgICA6IG1faXNNYXBw
ZWRBdHRyaWJ1dGUoaXNNYXBwZWRBdHRyaWJ1dGUpCiAgICAgICAgLCBtX2hhc0F0dHIoZmFsc2Up
CiAgICAgICAgLCBtX25hbWUobnVsbEF0b20sIG5hbWUsIG51bGxBdG9tKQogICAgICAgICwgbV92
YWx1ZSh2YWx1ZSkKICAgICAgICAsIG1fc3R5bGVEZWNsKHN0eWxlRGVjbCkKICAgIHsKICAgIH0K
CiAgICB2b2lkIGJpbmRBdHRyKEF0dHIqKTsKICAgIHZvaWQgdW5iaW5kQXR0cihBdHRyKik7CgoK
ICAgIGJvb2wgbV9pc01hcHBlZEF0dHJpYnV0ZTsKICAgIGJvb2wgbV9oYXNBdHRyOwoKICAgIFF1
YWxpZmllZE5hbWUgbV9uYW1lOwogICAgQXRvbWljU3RyaW5nIG1fdmFsdWU7CiAgICBSZWZQdHI8
Q1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24+IG1fc3R5bGVEZWNsOwp9OwoKfQojIDI5ICIu
Li8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmgiIDIKIyAxICIuLi8uLi8u
Li9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oIiAxCiMgMjIgIi4uLy4uLy4u
L1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgiCiNkZWZpbmUgU3BhY2VTcGxp
dFN0cmluZ19oIAoKCgoKCgpuYW1lc3BhY2UgV2ViQ29yZSB7CgogICAgY2xhc3MgU3BhY2VTcGxp
dFN0cmluZ0RhdGEgewogICAgICAgIHByaXZhdGU6IFNwYWNlU3BsaXRTdHJpbmdEYXRhKGNvbnN0
IFNwYWNlU3BsaXRTdHJpbmdEYXRhJik7IFNwYWNlU3BsaXRTdHJpbmdEYXRhJiBvcGVyYXRvcj0o
Y29uc3QgU3BhY2VTcGxpdFN0cmluZ0RhdGEmKTsgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVf
dCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUp
IHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01h
dGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7
IHJldHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNz
TmV3KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBz
aXplKSB7IHZvaWQqIHAgPSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxs
b2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NO
ZXdBcnJheSk7IHJldHVybiBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6
OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxs
b2NUeXBlQ2xhc3NOZXdBcnJheSk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSBwcml2YXRlOiB0eXBl
ZGVmIGludCBUaGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKICAgIHB1
YmxpYzoKICAgICAgICBTcGFjZVNwbGl0U3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywg
Ym9vbCBzaG91bGRGb2xkQ2FzZSkKICAgICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpLCBtX3No
b3VsZEZvbGRDYXNlKHNob3VsZEZvbGRDYXNlKSwgbV9jcmVhdGVkVmVjdG9yKGZhbHNlKQogICAg
ICAgIHsKICAgICAgICB9CgogICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5n
JiBzdHJpbmcpCiAgICAgICAgewogICAgICAgICAgICBlbnN1cmVWZWN0b3IoKTsKICAgICAgICAg
ICAgc2l6ZV90IHNpemUgPSBtX3ZlY3Rvci5zaXplKCk7CiAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICAgICBpZiAobV92ZWN0b3JbaV0g
PT0gc3RyaW5nKQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9
CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGJvb2wgY29udGFp
bnNBbGwoU3BhY2VTcGxpdFN0cmluZ0RhdGEmKTsKCiAgICAgICAgdm9pZCBhZGQoY29uc3QgQXRv
bWljU3RyaW5nJik7CiAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJik7Cgog
ICAgICAgIHNpemVfdCBzaXplKCkgeyBlbnN1cmVWZWN0b3IoKTsgcmV0dXJuIG1fdmVjdG9yLnNp
emUoKTsgfQogICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgb3BlcmF0b3JbXShzaXplX3QgaSkg
eyBlbnN1cmVWZWN0b3IoKTsgZG8gaWYgKCEoaSA8IHNpemUoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcu
aCIsIDU2LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaSA8IHNpemUoKSIpOyBkbyB7IFdURlJlcG9y
dEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgq
KSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHJldHVybiBtX3ZlY3Rvcltp
XTsgfQoKICAgIHByaXZhdGU6CiAgICAgICAgdm9pZCBlbnN1cmVWZWN0b3IoKSB7IGlmICghbV9j
cmVhdGVkVmVjdG9yKSBjcmVhdGVWZWN0b3IoKTsgfQogICAgICAgIHZvaWQgY3JlYXRlVmVjdG9y
KCk7CgogICAgICAgIHR5cGVkZWYgVmVjdG9yPEF0b21pY1N0cmluZywgOD4gU3RyaW5nVmVjdG9y
OwogICAgICAgIFN0cmluZyBtX3N0cmluZzsKICAgICAgICBTdHJpbmdWZWN0b3IgbV92ZWN0b3I7
CiAgICAgICAgYm9vbCBtX3Nob3VsZEZvbGRDYXNlOwogICAgICAgIGJvb2wgbV9jcmVhdGVkVmVj
dG9yOwogICAgfTsKCiAgICBjbGFzcyBTcGFjZVNwbGl0U3RyaW5nIHsKICAgIHB1YmxpYzoKICAg
ICAgICBTcGFjZVNwbGl0U3RyaW5nKCkgeyB9CiAgICAgICAgU3BhY2VTcGxpdFN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cmluZywgYm9vbCBzaG91bGRGb2xkQ2FzZSkgOiBtX2RhdGEoYWRvcHRQdHIo
bmV3IFNwYWNlU3BsaXRTdHJpbmdEYXRhKHN0cmluZywgc2hvdWxkRm9sZENhc2UpKSkgeyB9Cgog
ICAgICAgIHZvaWQgc2V0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHNob3VsZEZvbGRDYXNl
KSB7IG1fZGF0YSA9IGFkb3B0UHRyKG5ldyBTcGFjZVNwbGl0U3RyaW5nRGF0YShzdHJpbmcsIHNo
b3VsZEZvbGRDYXNlKSk7IH0KICAgICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuY2xlYXIoKTsg
fQoKICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKSBjb25z
dCB7IHJldHVybiBtX2RhdGEgJiYgbV9kYXRhLT5jb250YWlucyhzdHJpbmcpOyB9CiAgICAgICAg
Ym9vbCBjb250YWluc0FsbChjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBuYW1lcykgY29uc3QgeyBy
ZXR1cm4gIW5hbWVzLm1fZGF0YSB8fCAobV9kYXRhICYmIG1fZGF0YS0+Y29udGFpbnNBbGwoKm5h
bWVzLm1fZGF0YSkpOyB9CiAgICAgICAgdm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAg
ICAgICAgdm9pZCByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJik7CgogICAgICAgIHNpemVfdCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhID8gbV9kYXRhLT5zaXplKCkgOiAwOyB9CiAgICAg
ICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9kYXRhOyB9CiAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IGRvIGlmICghKGkgPCBz
aXplKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9XZWJD
b3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgiLCA4NCwgX19QUkVUVFlfRlVOQ1RJT05fXywgImkg
PCBzaXplKCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90
KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOyByZXR1cm4gKCptX2RhdGEpW2ldOyB9CgogICAgcHJpdmF0ZToKICAgICAgICBPd25Q
dHI8U3BhY2VTcGxpdFN0cmluZ0RhdGE+IG1fZGF0YTsKICAgIH07Cgp9CiMgMzAgIi4uLy4uLy4u
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaCIgMgoKbmFtZXNwYWNlIFdlYkNvcmUg
ewoKY2xhc3MgTm9kZTsKCnR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CgpjbGFzcyBOYW1lZE5v
ZGVNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxOYW1lZE5vZGVNYXA+IHsKICAgIGZyaWVuZCBjbGFz
cyBFbGVtZW50OwpwdWJsaWM6CiAgICBzdGF0aWMgUGFzc1JlZlB0cjxOYW1lZE5vZGVNYXA+IGNy
ZWF0ZShFbGVtZW50KiBlbGVtZW50ID0gMCkKICAgIHsKICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE5hbWVkTm9kZU1hcChlbGVtZW50KSk7CiAgICB9CgogICAgfk5hbWVkTm9kZU1hcCgpOwoK
CgogICAgUGFzc1JlZlB0cjxOb2RlPiBnZXROYW1lZEl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lKSBj
b25zdDsKICAgIFBhc3NSZWZQdHI8Tm9kZT4gcmVtb3ZlTmFtZWRJdGVtKGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYpOwoKICAgIFBhc3NSZWZQdHI8Tm9kZT4gZ2V0TmFtZWRJdGVt
TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lKSBj
b25zdDsKICAgIFBhc3NSZWZQdHI8Tm9kZT4gcmVtb3ZlTmFtZWRJdGVtTlMoY29uc3QgU3RyaW5n
JiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRpb25Db2RlJik7
CgogICAgUGFzc1JlZlB0cjxOb2RlPiBnZXROYW1lZEl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSkgY29uc3Q7CiAgICBQYXNzUmVmUHRyPE5vZGU+IHJlbW92ZU5hbWVkSXRlbShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICBQYXNzUmVmUHRyPE5vZGU+
IHNldE5hbWVkSXRlbShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgUGFzc1JlZlB0cjxOb2Rl
PiBzZXROYW1lZEl0ZW1OUyhOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwoKICAgIFBhc3NSZWZQdHI8
Tm9kZT4gaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICBzaXplX3QgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLnNpemUoKTsgfQogICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIWxlbmd0aCgpOyB9CgoKCiAgICB2b2lkIHNldEF0dHJpYnV0ZXMoY29uc3Qg
TmFtZWROb2RlTWFwJik7CgogICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbaW5kZXhdLmdldCgpOyB9CiAgICBBdHRy
aWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwoKICAg
IHZvaWQgY29weUF0dHJpYnV0ZXNUb1ZlY3RvcihWZWN0b3I8UmVmUHRyPEF0dHJpYnV0ZT4gPiYp
OwoKICAgIHZvaWQgc2hyaW5rVG9MZW5ndGgoKSB7IG1fYXR0cmlidXRlcy5zaHJpbmtDYXBhY2l0
eShsZW5ndGgoKSk7IH0KICAgIHZvaWQgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh1bnNpZ25lZCBj
YXBhY2l0eSkgeyBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYXBhY2l0eSk7
IH0KCgogICAgdm9pZCBpbnNlcnRBdHRyaWJ1dGUoUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IG5ld0F0
dHJpYnV0ZSwgYm9vbCBhbGxvd0R1cGxpY2F0ZXMpCiAgICB7CiAgICAgICAgZG8gaWYgKCEoIW1f
ZWxlbWVudCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oIiwgNzksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbV9l
bGVtZW50Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkw
eGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxl
ICgwKTsKICAgICAgICBpZiAoYWxsb3dEdXBsaWNhdGVzIHx8ICFnZXRBdHRyaWJ1dGVJdGVtKG5l
d0F0dHJpYnV0ZS0+bmFtZSgpKSkKICAgICAgICAgICAgYWRkQXR0cmlidXRlKG5ld0F0dHJpYnV0
ZSk7CiAgICB9CgogICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEZvclN0eWxlUmVzb2x1dGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faWRGb3JTdHlsZVJlc29sdXRpb247IH0KICAgIHZvaWQgc2V0SWRG
b3JTdHlsZVJlc29sdXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCkgeyBtX2lkRm9yU3R5
bGVSZXNvbHV0aW9uID0gbmV3SWQ7IH0KCgogICAgYm9vbCBtYXBzRXF1aXZhbGVudChjb25zdCBO
YW1lZE5vZGVNYXAqIG90aGVyTWFwKSBjb25zdDsKICAgIGJvb2wgbWFwcGVkTWFwc0VxdWl2YWxl
bnQoY29uc3QgTmFtZWROb2RlTWFwKiBvdGhlck1hcCkgY29uc3Q7CgoKICAgIHZvaWQgYWRkQXR0
cmlidXRlKFBhc3NSZWZQdHI8QXR0cmlidXRlPik7CiAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJik7CgogICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZWxlbWVudDsgfQoKICAgIHZvaWQgY2xlYXJDbGFzcygpIHsgbV9jbGFzc05hbWVzLmNs
ZWFyKCk7IH0KICAgIHZvaWQgc2V0Q2xhc3MoY29uc3QgU3RyaW5nJik7CiAgICBjb25zdCBTcGFj
ZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc05hbWVzOyB9
CgogICAgYm9vbCBoYXNNYXBwZWRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXBwZWRB
dHRyaWJ1dGVDb3VudCA+IDA7IH0KICAgIHZvaWQgZGVjbFJlbW92ZWQoKSB7IG1fbWFwcGVkQXR0
cmlidXRlQ291bnQtLTsgfQogICAgdm9pZCBkZWNsQWRkZWQoKSB7IG1fbWFwcGVkQXR0cmlidXRl
Q291bnQrKzsgfQoKcHJpdmF0ZToKICAgIE5hbWVkTm9kZU1hcChFbGVtZW50KiBlbGVtZW50KQog
ICAgICAgIDogbV9tYXBwZWRBdHRyaWJ1dGVDb3VudCgwKQogICAgICAgICwgbV9lbGVtZW50KGVs
ZW1lbnQpCiAgICB7CiAgICB9CgogICAgdm9pZCBkZXRhY2hBdHRyaWJ1dGVzRnJvbUVsZW1lbnQo
KTsKICAgIHZvaWQgZGV0YWNoRnJvbUVsZW1lbnQoKTsKICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmli
dXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2Fz
ZSkgY29uc3Q7CiAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW1TbG93Q2FzZShjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CiAgICB2
b2lkIGNsZWFyQXR0cmlidXRlcygpOwogICAgaW50IGRlY2xDb3VudCgpIGNvbnN0OwoKICAgIGlu
dCBtX21hcHBlZEF0dHJpYnV0ZUNvdW50OwogICAgU3BhY2VTcGxpdFN0cmluZyBtX2NsYXNzTmFt
ZXM7CiAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CiAgICBWZWN0b3I8UmVmUHRyPEF0dHJpYnV0ZT4g
PiBtX2F0dHJpYnV0ZXM7CiAgICBBdG9taWNTdHJpbmcgbV9pZEZvclN0eWxlUmVzb2x1dGlvbjsK
fTsKCmlubGluZSBBdHRyaWJ1dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAp7CiAgICB1bnNpZ25lZCBsZW4gPSBsZW5ndGgo
KTsKICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgIGlmICht
X2F0dHJpYnV0ZXNbaV0tPm5hbWUoKS5tYXRjaGVzKG5hbWUpKQogICAgICAgICAgICByZXR1cm4g
bV9hdHRyaWJ1dGVzW2ldLmdldCgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCgoKaW5saW5lIEF0
dHJpYnV0ZSogTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAp7CiAgICB1bnNpZ25lZCBs
ZW4gPSBsZW5ndGgoKTsKICAgIGJvb2wgZG9TbG93Q2hlY2sgPSBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlOwoKCiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSA9IG1fYXR0cmlidXRlc1tpXS0+bmFtZSgp
OwogICAgICAgIGlmICghYXR0ck5hbWUuaGFzUHJlZml4KCkpIHsKICAgICAgICAgICAgaWYgKG5h
bWUgPT0gYXR0ck5hbWUubG9jYWxOYW1lKCkpCiAgICAgICAgICAgICAgICByZXR1cm4gbV9hdHRy
aWJ1dGVzW2ldLmdldCgpOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICBkb1Nsb3dDaGVjayA9
IHRydWU7CiAgICB9CgogICAgaWYgKGRvU2xvd0NoZWNrKQogICAgICAgIHJldHVybiBnZXRBdHRy
aWJ1dGVJdGVtU2xvd0Nhc2UobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSk7CiAgICBy
ZXR1cm4gMDsKfQoKfQojIDMyICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
IiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaCIg
MQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIgoj
ZGVmaW5lIFNjcm9sbFR5cGVzX2ggCgpuYW1lc3BhY2UgV2ViQ29yZSB7CgogICAgZW51bSBTY3Jv
bGxEaXJlY3Rpb24gewogICAgICAgIFNjcm9sbFVwLAogICAgICAgIFNjcm9sbERvd24sCiAgICAg
ICAgU2Nyb2xsTGVmdCwKICAgICAgICBTY3JvbGxSaWdodAogICAgfTsKCiAgICBlbnVtIFNjcm9s
bExvZ2ljYWxEaXJlY3Rpb24gewogICAgICAgIFNjcm9sbEJsb2NrRGlyZWN0aW9uQmFja3dhcmQs
CiAgICAgICAgU2Nyb2xsQmxvY2tEaXJlY3Rpb25Gb3J3YXJkLAogICAgICAgIFNjcm9sbElubGlu
ZURpcmVjdGlvbkJhY2t3YXJkLAogICAgICAgIFNjcm9sbElubGluZURpcmVjdGlvbkZvcndhcmQK
ICAgIH07CgoKICAgIGlubGluZSBTY3JvbGxEaXJlY3Rpb24gbG9naWNhbFRvUGh5c2ljYWwoU2Ny
b2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgaXNWZXJ0aWNhbCwgYm9vbCBpc0Zs
aXBwZWQpCiAgICB7CiAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICAgICBjYXNlIFNj
cm9sbEJsb2NrRGlyZWN0aW9uQmFja3dhcmQ6IHsKICAgICAgICAgICAgaWYgKGlzVmVydGljYWwp
IHsKICAgICAgICAgICAgICAgIGlmICghaXNGbGlwcGVkKQogICAgICAgICAgICAgICAgICAgIHJl
dHVybiBTY3JvbGxVcDsKICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxEb3duOwogICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCFpc0ZsaXBwZWQpCiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFNjcm9sbExlZnQ7CiAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xs
UmlnaHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAg
IGNhc2UgU2Nyb2xsQmxvY2tEaXJlY3Rpb25Gb3J3YXJkOiB7CiAgICAgICAgICAgIGlmIChpc1Zl
cnRpY2FsKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzRmxpcHBlZCkKICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gU2Nyb2xsRG93bjsKICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxVcDsK
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICghaXNGbGlwcGVkKQogICAg
ICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxSaWdodDsKICAgICAgICAgICAgICAgIHJldHVy
biBTY3JvbGxMZWZ0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0K
ICAgICAgICBjYXNlIFNjcm9sbElubGluZURpcmVjdGlvbkJhY2t3YXJkOiB7CiAgICAgICAgICAg
IGlmIChpc1ZlcnRpY2FsKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzRmxpcHBlZCkKICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsTGVmdDsKICAgICAgICAgICAgICAgIHJldHVybiBT
Y3JvbGxSaWdodDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICghaXNG
bGlwcGVkKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxVcDsKICAgICAgICAgICAg
ICAgIHJldHVybiBTY3JvbGxEb3duOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgIH0KICAgICAgICBjYXNlIFNjcm9sbElubGluZURpcmVjdGlvbkZvcndhcmQ6IHsKICAg
ICAgICAgICAgaWYgKGlzVmVydGljYWwpIHsKICAgICAgICAgICAgICAgIGlmICghaXNGbGlwcGVk
KQogICAgICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxSaWdodDsKICAgICAgICAgICAgICAg
IHJldHVybiBTY3JvbGxMZWZ0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
aWYgKCFpc0ZsaXBwZWQpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9sbERvd247CiAg
ICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsVXA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGRvIHsgV1RGUmVw
b3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVHlwZXMuaCIsIDk4LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAwKTsgZG8geyBXVEZSZXBvcnRC
YWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKiko
KSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICBicmVhazsK
ICAgICAgICB9CiAgICAgICAgcmV0dXJuIFNjcm9sbFVwOwogICAgfQoKICAgIGVudW0gU2Nyb2xs
R3JhbnVsYXJpdHkgewogICAgICAgIFNjcm9sbEJ5TGluZSwKICAgICAgICBTY3JvbGxCeVBhZ2Us
CiAgICAgICAgU2Nyb2xsQnlEb2N1bWVudCwKICAgICAgICBTY3JvbGxCeVBpeGVsCiAgICB9OwoK
ICAgIGVudW0gU2Nyb2xsRWxhc3RpY2l0eSB7CiAgICAgICAgU2Nyb2xsRWxhc3RpY2l0eUF1dG9t
YXRpYywKICAgICAgICBTY3JvbGxFbGFzdGljaXR5Tm9uZSwKICAgICAgICBTY3JvbGxFbGFzdGlj
aXR5QWxsb3dlZAogICAgfTsKCiAgICBlbnVtIFNjcm9sbGJhck9yaWVudGF0aW9uIHsgSG9yaXpv
bnRhbFNjcm9sbGJhciwgVmVydGljYWxTY3JvbGxiYXIgfTsKCiAgICBlbnVtIFNjcm9sbGJhck1v
ZGUgeyBTY3JvbGxiYXJBdXRvLCBTY3JvbGxiYXJBbHdheXNPZmYsIFNjcm9sbGJhckFsd2F5c09u
IH07CgogICAgZW51bSBTY3JvbGxiYXJDb250cm9sU2l6ZSB7IFJlZ3VsYXJTY3JvbGxiYXIsIFNt
YWxsU2Nyb2xsYmFyIH07CgogICAgdHlwZWRlZiB1bnNpZ25lZCBTY3JvbGxiYXJDb250cm9sU3Rh
dGU7CgogICAgZW51bSBTY3JvbGxiYXJDb250cm9sU3RhdGVNYXNrIHsKICAgICAgICBBY3RpdmVT
Y3JvbGxiYXJTdGF0ZSA9IDEsCiAgICAgICAgRW5hYmxlZFNjcm9sbGJhclN0YXRlID0gMSA8PCAx
LAogICAgICAgIFByZXNzZWRTY3JvbGxiYXJTdGF0ZSA9IDEgPDwgMgogICAgfTsKCiAgICBlbnVt
IFNjcm9sbGJhclBhcnQgewogICAgICAgIE5vUGFydCA9IDAsCiAgICAgICAgQmFja0J1dHRvblN0
YXJ0UGFydCA9IDEsCiAgICAgICAgRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCA9IDEgPDwgMSwKICAg
ICAgICBCYWNrVHJhY2tQYXJ0ID0gMSA8PCAyLAogICAgICAgIFRodW1iUGFydCA9IDEgPDwgMywK
ICAgICAgICBGb3J3YXJkVHJhY2tQYXJ0ID0gMSA8PCA0LAogICAgICAgIEJhY2tCdXR0b25FbmRQ
YXJ0ID0gMSA8PCA1LAogICAgICAgIEZvcndhcmRCdXR0b25FbmRQYXJ0ID0gMSA8PCA2LAogICAg
ICAgIFNjcm9sbGJhckJHUGFydCA9IDEgPDwgNywKICAgICAgICBUcmFja0JHUGFydCA9IDEgPDwg
OCwKICAgICAgICBBbGxQYXJ0cyA9IDB4ZmZmZmZmZmYKICAgIH07CgogICAgZW51bSBTY3JvbGxi
YXJCdXR0b25zUGxhY2VtZW50IHsKICAgICAgICBTY3JvbGxiYXJCdXR0b25zTm9uZSwKICAgICAg
ICBTY3JvbGxiYXJCdXR0b25zU2luZ2xlLAogICAgICAgIFNjcm9sbGJhckJ1dHRvbnNEb3VibGVT
dGFydCwKICAgICAgICBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kLAogICAgICAgIFNjcm9sbGJh
ckJ1dHRvbnNEb3VibGVCb3RoCiAgICB9OwoKICAgIGVudW0gU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
IHsKICAgICAgICBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0LAogICAgICAgIFNjcm9sbGJh
ck92ZXJsYXlTdHlsZURhcmssCiAgICAgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQKICAg
IH07CgogICAgdHlwZWRlZiB1bnNpZ25lZCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2s7Cgp9CiMg
MzMgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgiIDIKCm5hbWVzcGFjZSBX
ZWJDb3JlIHsKCmNsYXNzIEF0dHJpYnV0ZTsKY2xhc3MgQ2xpZW50UmVjdDsKY2xhc3MgQ2xpZW50
UmVjdExpc3Q7CmNsYXNzIERPTVN0cmluZ01hcDsKY2xhc3MgRE9NVG9rZW5MaXN0OwpjbGFzcyBF
bGVtZW50UmFyZURhdGE7CmNsYXNzIEludFNpemU7CmNsYXNzIFNoYWRvd1Jvb3Q7CmNsYXNzIFdl
YktpdEFuaW1hdGlvbkxpc3Q7CgplbnVtIFNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSB7CiAgICBT
cGVsbGNoZWNrQXR0cmlidXRlVHJ1ZSwKICAgIFNwZWxsY2hlY2tBdHRyaWJ1dGVGYWxzZSwKICAg
IFNwZWxsY2hlY2tBdHRyaWJ1dGVEZWZhdWx0Cn07CgpjbGFzcyBFbGVtZW50IDogcHVibGljIENv
bnRhaW5lck5vZGUgewpwdWJsaWM6CiAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICB2aXJ0dWFsIH5FbGVtZW50
KCk7CgogICAgRXZlbnRMaXN0ZW5lciogb25hYm9ydCgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmFib3J0RXZlbnQpOyB9IHZvaWQgc2V0T25hYm9ydChQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlz
dGVuZXIqIG9uY2hhbmdlKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuY2hhbmdlRXZlbnQpOyB9IHZvaWQgc2V0T25jaGFuZ2UoUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5jaGFuZ2VFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25jbGlj
aygpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQpOyB9IHZvaWQgc2V0T25jbGljayhQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQs
IGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlzdGVuZXIqIG9uY29udGV4dG1lbnUoKSB7IHJldHVy
biBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jb250ZXh0bWVudUV2ZW50
KTsgfSB2b2lkIHNldE9uY29udGV4dG1lbnUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0
ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jb250ZXh0bWVu
dUV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbmRibGNsaWNrKCkgeyBy
ZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVu
dCk7IH0gdm9pZCBzZXRPbmRibGNsaWNrKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVu
ZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVu
dCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25kcmFnZW50ZXIoKSB7IHJldHVy
biBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kcmFnZW50ZXJFdmVudCk7
IH0gdm9pZCBzZXRPbmRyYWdlbnRlcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
KSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50
LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbmRyYWdvdmVyKCkgeyByZXR1cm4g
Z2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZHJhZ292ZXJFdmVudCk7IH0g
dm9pZCBzZXRPbmRyYWdvdmVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsg
c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZHJhZ292ZXJFdmVudCwgbGlz
dGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25kcmFnbGVhdmUoKSB7IHJldHVybiBnZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kcmFnbGVhdmVFdmVudCk7IH0gdm9p
ZCBzZXRPbmRyYWdsZWF2ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCBsaXN0
ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbmRyb3AoKSB7IHJldHVybiBnZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kcm9wRXZlbnQpOyB9IHZvaWQgc2V0T25kcm9w
KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuZHJvcEV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExp
c3RlbmVyKiBvbmRyYWdzdGFydCgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50KTsgfSB2b2lkIHNldE9uZHJhZ3N0YXJ0KFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuZHJhZ3N0YXJ0RXZlbnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlz
dGVuZXIqIG9uZHJhZygpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmRyYWdFdmVudCk7IH0gdm9pZCBzZXRPbmRyYWcoUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5k
cmFnRXZlbnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlzdGVuZXIqIG9uZHJhZ2VuZCgpIHsg
cmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmRyYWdlbmRFdmVu
dCk7IH0gdm9pZCBzZXRPbmRyYWdlbmQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5l
cikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kcmFnZW5kRXZlbnQs
IGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlzdGVuZXIqIG9uaW5wdXQoKSB7IHJldHVybiBnZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50KTsgfSB2b2lkIHNl
dE9uaW5wdXQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCBsaXN0ZW5lcik7IH07CiAg
ICBFdmVudExpc3RlbmVyKiBvbmludmFsaWQoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5pbnZhbGlkRXZlbnQpOyB9IHZvaWQgc2V0T25pbnZhbGlkKFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuaW52YWxpZEV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExp
c3RlbmVyKiBvbmtleWRvd24oKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpOyB9IHZvaWQgc2V0T25rZXlkb3duKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkua2V5ZG93bkV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBv
bmtleXByZXNzKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkua2V5cHJlc3NFdmVudCk7IH0gdm9pZCBzZXRPbmtleXByZXNzKFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkua2V5cHJlc3NFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25rZXl1
cCgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVw
RXZlbnQpOyB9IHZvaWQgc2V0T25rZXl1cChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQs
IGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlzdGVuZXIqIG9ubW91c2Vkb3duKCkgeyByZXR1cm4g
Z2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpOyB9
IHZvaWQgc2V0T25tb3VzZWRvd24oUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikg
eyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCwg
bGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25tb3VzZW1vdmUoKSB7IHJldHVybiBn
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCk7IH0g
dm9pZCBzZXRPbm1vdXNlbW92ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50LCBs
aXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbm1vdXNlb3V0KCkgeyByZXR1cm4gZ2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCk7IH0gdm9p
ZCBzZXRPbm1vdXNlb3V0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCwgbGlzdGVu
ZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25tb3VzZW92ZXIoKSB7IHJldHVybiBnZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCk7IH0gdm9pZCBz
ZXRPbm1vdXNlb3ZlcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50LCBsaXN0ZW5l
cik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbm1vdXNldXAoKSB7IHJldHVybiBnZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpOyB9IHZvaWQgc2V0T25t
b3VzZXVwKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2V1cEV2ZW50LCBsaXN0ZW5lcik7IH07CiAg
ICBFdmVudExpc3RlbmVyKiBvbm1vdXNld2hlZWwoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQpOyB9IHZvaWQgc2V0T25tb3Vz
ZXdoZWVsKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50LCBsaXN0ZW5lcik7IH07
CiAgICBFdmVudExpc3RlbmVyKiBvbnNjcm9sbCgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50KTsgfSB2b2lkIHNldE9uc2Nyb2xsKFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlz
dGVuZXIqIG9uc2VsZWN0KCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuc2VsZWN0RXZlbnQpOyB9IHZvaWQgc2V0T25zZWxlY3QoUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5zZWxlY3RFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25zdWJt
aXQoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWJt
aXRFdmVudCk7IH0gdm9pZCBzZXRPbnN1Ym1pdChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnN1Ym1pdEV2
ZW50LCBsaXN0ZW5lcik7IH07CgoKCiAgICB2aXJ0dWFsIEV2ZW50TGlzdGVuZXIqIG9uYmx1cigp
OyB2aXJ0dWFsIHZvaWQgc2V0T25ibHVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVu
ZXIpOzsKICAgIHZpcnR1YWwgRXZlbnRMaXN0ZW5lciogb25lcnJvcigpOyB2aXJ0dWFsIHZvaWQg
c2V0T25lcnJvcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKTs7CiAgICB2aXJ0
dWFsIEV2ZW50TGlzdGVuZXIqIG9uZm9jdXMoKTsgdmlydHVhbCB2b2lkIHNldE9uZm9jdXMoUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcik7OwogICAgdmlydHVhbCBFdmVudExpc3Rl
bmVyKiBvbmxvYWQoKTsgdmlydHVhbCB2b2lkIHNldE9ubG9hZChQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyKTs7CgoKICAgIEV2ZW50TGlzdGVuZXIqIG9uYmVmb3JlY3V0KCkgeyBy
ZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlY3V0RXZl
bnQpOyB9IHZvaWQgc2V0T25iZWZvcmVjdXQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0
ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVjdXRF
dmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5lciogb25jdXQoKSB7IHJldHVybiBn
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jdXRFdmVudCk7IH0gdm9pZCBz
ZXRPbmN1dChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmN1dEV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBF
dmVudExpc3RlbmVyKiBvbmJlZm9yZWNvcHkoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVjb3B5RXZlbnQpOyB9IHZvaWQgc2V0T25iZWZvcmVj
b3B5KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlY29weUV2ZW50LCBsaXN0ZW5lcik7IH07CiAg
ICBFdmVudExpc3RlbmVyKiBvbmNvcHkoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5jb3B5RXZlbnQpOyB9IHZvaWQgc2V0T25jb3B5KFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuY29weUV2ZW50LCBsaXN0ZW5lcik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbmJl
Zm9yZXBhc3RlKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuYmVmb3JlcGFzdGVFdmVudCk7IH0gdm9pZCBzZXRPbmJlZm9yZXBhc3RlKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuYmVmb3JlcGFzdGVFdmVudCwgbGlzdGVuZXIpOyB9OwogICAgRXZlbnRMaXN0ZW5l
ciogb25wYXN0ZSgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLnBhc3RlRXZlbnQpOyB9IHZvaWQgc2V0T25wYXN0ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBh
c3RlRXZlbnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2ZW50TGlzdGVuZXIqIG9ucmVzZXQoKSB7IHJl
dHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50KTsg
fSB2b2lkIHNldE9ucmVzZXQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50LCBsaXN0ZW5l
cik7IH07CiAgICBFdmVudExpc3RlbmVyKiBvbnNlYXJjaCgpIHsgcmV0dXJuIGdldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNlYXJjaEV2ZW50KTsgfSB2b2lkIHNldE9uc2Vh
cmNoKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2VhcmNoRXZlbnQsIGxpc3RlbmVyKTsgfTsKICAgIEV2
ZW50TGlzdGVuZXIqIG9uc2VsZWN0c3RhcnQoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50KTsgfSB2b2lkIHNldE9uc2VsZWN0
c3RhcnQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50LCBsaXN0ZW5lcik7IH07
CgogICAgRXZlbnRMaXN0ZW5lciogb250b3VjaHN0YXJ0KCkgeyByZXR1cm4gZ2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hzdGFydEV2ZW50KTsgfSB2b2lkIHNldE9u
dG91Y2hzdGFydChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNoc3RhcnRFdmVudCwgbGlzdGVuZXIp
OyB9OwogICAgRXZlbnRMaXN0ZW5lciogb250b3VjaG1vdmUoKSB7IHJldHVybiBnZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50b3VjaG1vdmVFdmVudCk7IH0gdm9pZCBzZXRP
bnRvdWNobW92ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNobW92ZUV2ZW50LCBsaXN0ZW5lcik7
IH07CiAgICBFdmVudExpc3RlbmVyKiBvbnRvdWNoZW5kKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hlbmRFdmVudCk7IH0gdm9pZCBzZXRPbnRv
dWNoZW5kKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hlbmRFdmVudCwgbGlzdGVuZXIpOyB9Owog
ICAgRXZlbnRMaXN0ZW5lciogb250b3VjaGNhbmNlbCgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNoY2FuY2VsRXZlbnQpOyB9IHZvaWQgc2V0T250
b3VjaGNhbmNlbChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNoY2FuY2VsRXZlbnQsIGxpc3RlbmVy
KTsgfTsKCgoKCgogICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0OwogICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0OwogICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgIHZvaWQgcmVt
b3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBFeGNlcHRpb25Db2RlJik7CgoKICAg
IGludCBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKSBjb25zdDsKICAgIHZvaWQgc2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgaW50IHZhbHVlKTsKICAgIHVuc2lnbmVkIGdldFVuc2lnbmVk
SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29u
c3Q7CiAgICB2b2lkIHNldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgdW5zaWduZWQgdmFsdWUpOwoKCgogICAgYm9vbCBmYXN0SGFz
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZmFzdEdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CgogICAg
Ym9vbCBoYXNBdHRyaWJ1dGVzKCkgY29uc3Q7CgogICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3Qg
U3RyaW5nJiBuYW1lKSBjb25zdDsKICAgIGJvb2wgaGFzQXR0cmlidXRlTlMoY29uc3QgU3RyaW5n
JiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lKSBjb25zdDsKCiAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Owog
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVz
cGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OwoKICAgIHZvaWQgc2V0QXR0
cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgdm9pZCBzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiwgRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKCiAgICBib29sIGlzSWRB
dHRyaWJ1dGVOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgZ2V0SWRBdHRyaWJ1dGUoKSBjb25zdDsKICAgIHZvaWQgc2V0SWRBdHRyaWJ1dGUo
Y29uc3QgQXRvbWljU3RyaW5nJik7CgoKCgogICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEZvclN0
eWxlUmVzb2x1dGlvbigpIGNvbnN0OwoKICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGln
blRvVG9wID0gdHJ1ZSk7CiAgICB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQoYm9vbCBjZW50
ZXJJZk5lZWRlZCA9IHRydWUpOwoKICAgIHZvaWQgc2Nyb2xsQnlMaW5lcyhpbnQgbGluZXMpOwog
ICAgdm9pZCBzY3JvbGxCeVBhZ2VzKGludCBwYWdlcyk7CgogICAgaW50IG9mZnNldExlZnQoKTsK
ICAgIGludCBvZmZzZXRUb3AoKTsKICAgIGludCBvZmZzZXRXaWR0aCgpOwogICAgaW50IG9mZnNl
dEhlaWdodCgpOwogICAgRWxlbWVudCogb2Zmc2V0UGFyZW50KCk7CiAgICBpbnQgY2xpZW50TGVm
dCgpOwogICAgaW50IGNsaWVudFRvcCgpOwogICAgaW50IGNsaWVudFdpZHRoKCk7CiAgICBpbnQg
Y2xpZW50SGVpZ2h0KCk7CiAgICB2aXJ0dWFsIGludCBzY3JvbGxMZWZ0KCk7CiAgICB2aXJ0dWFs
IGludCBzY3JvbGxUb3AoKTsKICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxMZWZ0KGludCk7CiAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsVG9wKGludCk7CiAgICB2aXJ0dWFsIGludCBzY3JvbGxX
aWR0aCgpOwogICAgdmlydHVhbCBpbnQgc2Nyb2xsSGVpZ2h0KCk7CgogICAgTGF5b3V0UmVjdCBi
b3VuZHNJbldpbmRvd1NwYWNlKCk7CgogICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gZ2V0
Q2xpZW50UmVjdHMoKTsKICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7CgoKICAgIExheW91dFJlY3Qgc2NyZWVuUmVjdCgpIGNvbnN0OwoKICAgIHZvaWQg
cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAg
dm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3Qg
U3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKCiAgICBQYXNzUmVmUHRyPEF0dHI+
IGdldEF0dHJpYnV0ZU5vZGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgIFBhc3NSZWZQdHI8QXR0
cj4gZ2V0QXR0cmlidXRlTm9kZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBT
dHJpbmcmIGxvY2FsTmFtZSk7CiAgICBQYXNzUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0ZU5vZGUo
QXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKICAgIFBhc3NSZWZQdHI8QXR0cj4gc2V0QXR0cmlidXRl
Tm9kZU5TKEF0dHIqLCBFeGNlcHRpb25Db2RlJik7CiAgICBQYXNzUmVmUHRyPEF0dHI+IHJlbW92
ZUF0dHJpYnV0ZU5vZGUoQXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKCiAgICB2aXJ0dWFsIENTU1N0
eWxlRGVjbGFyYXRpb24qIHN0eWxlKCk7CgogICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5h
bWUoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWU7IH0KICAgIFN0cmluZyB0YWdOYW1lKCkgY29u
c3QgeyByZXR1cm4gbm9kZU5hbWUoKTsgfQogICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZS5tYXRjaGVzKHRhZ05h
bWUpOyB9CgoKICAgIGJvb2wgaGFzTG9jYWxOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZS5sb2NhbE5hbWUoKSA9PSBvdGhlcjsgfQogICAgYm9v
bCBoYXNMb2NhbE5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fdGFnTmFtZS5sb2NhbE5hbWUoKSA9PSBvdGhlci5sb2NhbE5hbWUoKTsgfQoKICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lLmxvY2Fs
TmFtZSgpOyB9CiAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGFnTmFtZS5wcmVmaXgoKTsgfQogICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkkoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWUubmFtZXNwYWNlVVJJKCk7IH0KCiAgICB2aXJ0
dWFsIEtVUkwgYmFzZVVSSSgpIGNvbnN0OwoKICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkg
Y29uc3Q7CgogICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4o
KTsKICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7
CgogICAgdm9pZCBub3JtYWxpemVBdHRyaWJ1dGVzKCk7CiAgICBTdHJpbmcgbm9kZU5hbWVQcmVz
ZXJ2aW5nQ2FzZSgpIGNvbnN0OwoKCiAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CiAgICB2b2lkIHNldEJvb2xlYW5B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCk7CgogICAgTmFtZWROb2Rl
TWFwKiBhdHRyaWJ1dGVzKGJvb2wgcmVhZG9ubHkgPSBmYWxzZSkgY29uc3Q7CgoKICAgIHZpcnR1
YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9
IGZhbHNlKTsKCiAgICB2b2lkIHNldEF0dHJpYnV0ZU1hcChQYXNzUmVmUHRyPE5hbWVkTm9kZU1h
cD4sIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dl
ZCk7CiAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0
cmlidXRlTWFwLmdldCgpOyB9CgogICAgdmlydHVhbCB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9w
ZXJ0aWVzKGNvbnN0IEVsZW1lbnQqIHNvdXJjZSk7CgogICAgdmlydHVhbCB2b2lkIGF0dGFjaCgp
OwogICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgIHZvaWQgcmVjYWxj
U3R5bGUoU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CgogICAgU2hhZG93Um9vdCogc2hhZG93Um9v
dCgpIGNvbnN0OwogICAgdm9pZCBzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4s
IEV4Y2VwdGlvbkNvZGUmKTsKICAgIFNoYWRvd1Jvb3QqIGVuc3VyZVNoYWRvd1Jvb3QoKTsKICAg
IHZvaWQgcmVtb3ZlU2hhZG93Um9vdCgpOwoKICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogICAgdm9pZCBzZXRTaGFkb3dQc2V1ZG9JZChjb25z
dCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiA9IDo6V2ViQ29yZTo6Tm9FeGNlcHRpb25B
c3NlcnRpb25DaGVja2VyKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIiwg
MjM1KSk7CgogICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVE
Tyk7CgogICAgdm9pZCBzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpOwogICAgYm9vbCBzdHlsZUFm
ZmVjdGVkQnlFbXB0eSgpIGNvbnN0OwoKICAgIEF0b21pY1N0cmluZyBjb21wdXRlSW5oZXJpdGVk
TGFuZ3VhZ2UoKSBjb25zdDsKCiAgICB2b2lkIGRpc3BhdGNoQXR0clJlbW92YWxFdmVudChBdHRy
aWJ1dGUqKTsKICAgIHZvaWQgZGlzcGF0Y2hBdHRyQWRkaXRpb25FdmVudChBdHRyaWJ1dGUqKTsK
CiAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgKSB7IH0KCiAgICB2aXJ0dWFs
IGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CgogICAgS1VSTCBnZXRVUkxB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgS1VSTCBnZXROb25FbXB0
eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CgogICAgdmlydHVhbCBj
b25zdCBRdWFsaWZpZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKICAg
IHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CgogICAg
dmlydHVhbCB2b2lkIGZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uID0gdHJ1ZSk7
CiAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKGJvb2wgcmVzdG9yZVByZXZp
b3VzU2VsZWN0aW9uKTsKICAgIHZvaWQgYmx1cigpOwoKICAgIFN0cmluZyBpbm5lclRleHQoKTsK
ICAgIFN0cmluZyBvdXRlclRleHQoKTsKCiAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0
OwoKICAgIHZvaWQgdXBkYXRlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdJZCk7CgogICAgTGF5b3V0U2l6ZSBtaW5pbXVtU2l6ZUZvclJlc2l6aW5n
KCkgY29uc3Q7CiAgICB2b2lkIHNldE1pbmltdW1TaXplRm9yUmVzaXppbmcoY29uc3QgTGF5b3V0
U2l6ZSYpOwoKCiAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKSB7
IH0KICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpIHsgfQoKCiAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFWb2x1bWVEaWRDaGFuZ2UoKSB7IH0KCgogICAgdmlydHVhbCB2b2lk
IHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkgeyB9CgogICAgdmlydHVhbCB2b2lkIGRp
ZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgeyB9CiAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BC
ZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkgeyB9CgogICAgYm9vbCBpc0ZpbmlzaGVkUGFyc2luZ0No
aWxkcmVuKCkgY29uc3QgeyByZXR1cm4gaXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpOyB9CiAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5QYXJzaW5nQ2hpbGRyZW4oKTsKCgogICAgRWxlbWVudCogZmlyc3RFbGVtZW50Q2hpbGQo
KSBjb25zdDsKICAgIEVsZW1lbnQqIGxhc3RFbGVtZW50Q2hpbGQoKSBjb25zdDsKICAgIEVsZW1l
bnQqIHByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSBjb25zdDsKICAgIEVsZW1lbnQqIG5leHRFbGVt
ZW50U2libGluZygpIGNvbnN0OwogICAgdW5zaWduZWQgY2hpbGRFbGVtZW50Q291bnQoKSBjb25z
dDsKCiAgICBib29sIHdlYmtpdE1hdGNoZXNTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9y
cywgRXhjZXB0aW9uQ29kZSYpOwoKICAgIERPTVRva2VuTGlzdCogY2xhc3NMaXN0KCk7CiAgICBE
T01Ub2tlbkxpc3QqIG9wdGlvbmFsQ2xhc3NMaXN0KCkgY29uc3Q7CgogICAgRE9NU3RyaW5nTWFw
KiBkYXRhc2V0KCk7CgoKCgogICAgc3RhdGljIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkgeyByZXR1
cm4gZmFsc2U7IH0KCgoKICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CgoKCgoKCiAgICB2aXJ0dWFsIGJvb2wgaXNGb3JtQ29udHJvbEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgdmlydHVhbCBib29sIGlzRW5hYmxlZEZv
cm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgdmlydHVhbCBib29sIGlzUmVh
ZE9ubHlGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICB2aXJ0dWFsIGJv
b2wgaXNTcGluQnV0dG9uRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICB2aXJ0
dWFsIGJvb2wgaXNUZXh0Rm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
dmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgdmlydHVhbCBib29sIGlzVmFsaWRGb3JtQ29udHJvbEVs
ZW1lbnQoKSB7IHJldHVybiBmYWxzZTsgfQogICAgdmlydHVhbCBib29sIGhhc1VuYWNjZXB0YWJs
ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgIHZpcnR1YWwgYm9vbCBpc0luUmFu
Z2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgdmlydHVhbCBib29sIGlzT3V0T2ZSYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZUVsZW1l
bnRCYXNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KCiAgICB2aXJ0dWFsIGJvb2wgY2FuQ29u
dGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CgogICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxB
dG9tOyB9CiAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbnVsbEF0b207IH0KCiAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2F2ZUFu
ZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgdmly
dHVhbCBib29sIHNhdmVGb3JtQ29udHJvbFN0YXRlKFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgU3Ry
aW5nJikgeyB9CgogICAgdmlydHVhbCBib29sIHdhc0NoYW5nZWRTaW5jZUxhc3RGb3JtQ29udHJv
bENoYW5nZUV2ZW50KCkgY29uc3Q7CiAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hhbmdlZFNpbmNlTGFz
dEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoYm9vbCk7CiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hG
b3JtQ29udHJvbENoYW5nZUV2ZW50KCkgeyB9CgoKICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIyAzNTkgIi4uLy4uLy4uL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgiCiAgICB2aXJ0dWFsIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpIGNvbnN0OwoKICAgIFBhc3NSZWZQdHI8V2ViS2l0QW5pbWF0aW9uTGlzdD4gd2Via2l0R2V0
QW5pbWF0aW9ucygpIGNvbnN0OwoKICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9y
UmVuZGVyZXIoKTsKCnByb3RlY3RlZDoKICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAg
ICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCB0eXBlKQogICAgICAgICwgbV90YWdOYW1lKHRh
Z05hbWUpCiAgICB7CiAgICB9CgogICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgdmlydHVhbCB2b2lkIHJlbW92
ZWRGcm9tRG9jdW1lbnQoKTsKICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKGJvb2wp
OwogICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tVHJlZShib29sKTsKICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVm
b3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRh
ID0gMCk7CiAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKSB7IHJl
dHVybiB0cnVlOyB9CiAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2Up
IHsgfQogICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJl
bmRlcmVyKCk7CgoKCiAgICB2b2lkIHJlY2FsY1N0eWxlSWZOZWVkZWRBZnRlckF0dHJpYnV0ZUNo
YW5nZWQoQXR0cmlidXRlKik7CiAgICB2b2lkIHVwZGF0ZUFmdGVyQXR0cmlidXRlQ2hhbmdlZChB
dHRyaWJ1dGUqKTsKCiAgICB2b2lkIGlkQXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqKTsKCnBy
aXZhdGU6CiAgICB2b2lkIHNjcm9sbEJ5VW5pdHMoaW50IHVuaXRzLCBTY3JvbGxHcmFudWxhcml0
eSk7CgogICAgdmlydHVhbCB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJik7CiAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICB2
aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CgogICAgdmlydHVh
bCBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gY3JlYXRlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKCgogICAgdmlydHVhbCB2b2lkIGZvcm1h
dEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKCgogICAg
Ym9vbCBwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50
U3R5bGUsIFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CgogICAgdm9pZCBjcmVhdGVBdHRyaWJ1dGVN
YXAoKSBjb25zdDsKCiAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKSBjb25z
dCB7IH0KCgogICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdCB7IH0KCgogICAgdm9pZCBjYW5jZWxGb2N1c0FwcGVhcmFu
Y2VVcGRhdGUoKTsKCiAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdmlydHVhbFByZWZp
eCgpIGNvbnN0IHsgcmV0dXJuIHByZWZpeCgpOyB9CiAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmlydHVhbExvY2FsTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGxvY2FsTmFtZSgpOyB9CiAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdmlydHVhbE5hbWVzcGFjZVVSSSgpIGNvbnN0
IHsgcmV0dXJuIG5hbWVzcGFjZVVSSSgpOyB9CiAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiB2aXJ0
dWFsQ29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyID0gTk9QU0VV
RE8pIHsgcmV0dXJuIGNvbXB1dGVkU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcik7IH0KCgoK
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKCk7CgogICAgUXVhbGlmaWVkTmFtZSBtX3RhZ05hbWU7CiAgICB2aXJ0dWFsIE93
blB0cjxOb2RlUmFyZURhdGE+IGNyZWF0ZVJhcmVEYXRhKCk7CgogICAgRWxlbWVudFJhcmVEYXRh
KiByYXJlRGF0YSgpIGNvbnN0OwogICAgRWxlbWVudFJhcmVEYXRhKiBlbnN1cmVSYXJlRGF0YSgp
OwoKICAgIFNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSBzcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUo
KSBjb25zdDsKCnByaXZhdGU6CiAgICBtdXRhYmxlIFJlZlB0cjxOYW1lZE5vZGVNYXA+IG1fYXR0
cmlidXRlTWFwOwp9OwoKaW5saW5lIEVsZW1lbnQqIHRvRWxlbWVudChOb2RlKiBub2RlKQp7CiAg
ICBkbyBpZiAoISghbm9kZSB8fCBub2RlLT5pc0VsZW1lbnROb2RlKCkpKSB7IFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgiLCA0
MzgsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbm9kZSB8fCBub2RlLT5pc0VsZW1lbnROb2RlKCki
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwog
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKfQoKaW5saW5lIGNvbnN0IEVs
ZW1lbnQqIHRvRWxlbWVudChjb25zdCBOb2RlKiBub2RlKQp7CiAgICBkbyBpZiAoISghbm9kZSB8
fCBub2RlLT5pc0VsZW1lbnROb2RlKCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4u
Ly4uLy4uL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgiLCA0NDQsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sICIhbm9kZSB8fCBub2RlLT5pc0VsZW1lbnROb2RlKCkiKTsgZG8geyBXVEZSZXBvcnRC
YWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKiko
KSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEVsZW1lbnQqPihub2RlKTsKfQoKCnZvaWQgdG9FbGVtZW50KGNvbnN0IEVsZW1l
bnQqKTsKCmlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSkgY29uc3QKewogICAgcmV0dXJuIGlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQodGhp
cyktPmhhc1RhZ05hbWUobmFtZSk7Cn0KCmlubGluZSBib29sIE5vZGU6Omhhc0xvY2FsTmFtZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CnsKICAgIHJldHVybiBpc0VsZW1lbnROb2Rl
KCkgJiYgdG9FbGVtZW50KHRoaXMpLT5oYXNMb2NhbE5hbWUobmFtZSk7Cn0KCmlubGluZSBib29s
IE5vZGU6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdAp7CiAgICByZXR1cm4gaXNFbGVtZW50Tm9kZSgp
ICYmIHRvRWxlbWVudCh0aGlzKS0+aGFzQXR0cmlidXRlcygpOwp9CgppbmxpbmUgTmFtZWROb2Rl
TWFwKiBOb2RlOjphdHRyaWJ1dGVzKCkgY29uc3QKewogICAgcmV0dXJuIGlzRWxlbWVudE5vZGUo
KSA/IHRvRWxlbWVudCh0aGlzKS0+YXR0cmlidXRlcygpIDogMDsKfQoKaW5saW5lIEVsZW1lbnQq
IE5vZGU6OnBhcmVudEVsZW1lbnQoKSBjb25zdAp7CiAgICBDb250YWluZXJOb2RlKiBwYXJlbnQg
PSBwYXJlbnROb2RlKCk7CiAgICByZXR1cm4gcGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9k
ZSgpID8gdG9FbGVtZW50KHBhcmVudCkgOiAwOwp9CgppbmxpbmUgTmFtZWROb2RlTWFwKiBFbGVt
ZW50OjphdHRyaWJ1dGVzKGJvb2wgcmVhZG9ubHkpIGNvbnN0CnsKICAgIGlmICghaXNTdHlsZUF0
dHJpYnV0ZVZhbGlkKCkpCiAgICAgICAgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKCgogICAgaWYg
KCFhcmVTVkdBdHRyaWJ1dGVzVmFsaWQoKSkKICAgICAgICB1cGRhdGVBbmltYXRlZFNWR0F0dHJp
YnV0ZShhbnlRTmFtZSgpKTsKCgogICAgaWYgKCFyZWFkb25seSAmJiAhbV9hdHRyaWJ1dGVNYXAp
CiAgICAgICAgY3JlYXRlQXR0cmlidXRlTWFwKCk7CiAgICByZXR1cm4gbV9hdHRyaWJ1dGVNYXAu
Z2V0KCk7Cn0KCmlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQpCnsKICAgIGlmICghaW5Eb2N1bWVu
dCgpKQogICAgICAgIHJldHVybjsKCiAgICBpZiAob2xkSWQgPT0gbmV3SWQpCiAgICAgICAgcmV0
dXJuOwoKICAgIFRyZWVTY29wZSogc2NvcGUgPSB0cmVlU2NvcGUoKTsKICAgIGlmICghb2xkSWQu
aXNFbXB0eSgpKQogICAgICAgIHNjb3BlLT5yZW1vdmVFbGVtZW50QnlJZChvbGRJZCwgdGhpcyk7
CiAgICBpZiAoIW5ld0lkLmlzRW1wdHkoKSkKICAgICAgICBzY29wZS0+YWRkRWxlbWVudEJ5SWQo
bmV3SWQsIHRoaXMpOwp9CgppbmxpbmUgYm9vbCBFbGVtZW50OjpmYXN0SGFzQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CnsKICAgIHJldHVybiBtX2F0dHJpYnV0ZU1h
cCAmJiBtX2F0dHJpYnV0ZU1hcC0+Z2V0QXR0cmlidXRlSXRlbShuYW1lKTsKfQoKaW5saW5lIGNv
bnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6ZmFzdEdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lKSBjb25zdAp7CiAgICBpZiAobV9hdHRyaWJ1dGVNYXApIHsKICAgICAgICBp
ZiAoQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBtX2F0dHJpYnV0ZU1hcC0+Z2V0QXR0cmlidXRlSXRl
bShuYW1lKSkKICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKICAgIH0KICAg
IHJldHVybiBudWxsQXRvbTsKfQoKaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6
aWRGb3JTdHlsZVJlc29sdXRpb24oKSBjb25zdAp7CiAgICBkbyBpZiAoIShoYXNJRCgpKSkgeyBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oIiwgNTIzLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaGFzSUQoKSIpOyBkbyB7IFdURlJl
cG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9p
ZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICByZXR1cm4gbV9h
dHRyaWJ1dGVNYXAtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7Cn0KCmlubGluZSBib29sIEVsZW1l
bnQ6OmlzSWRBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
IGNvbnN0CnsKCgoKCiAgICByZXR1cm4gYXR0cmlidXRlTmFtZSA9PSBkb2N1bWVudCgpLT5pZEF0
dHJpYnV0ZU5hbWUoKTsKfQoKaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6Z2V0
SWRBdHRyaWJ1dGUoKSBjb25zdAp7CiAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZShkb2N1bWVu
dCgpLT5pZEF0dHJpYnV0ZU5hbWUoKSk7Cn0KCmlubGluZSB2b2lkIEVsZW1lbnQ6OnNldElkQXR0
cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCnsKICAgIHNldEF0dHJpYnV0ZShkb2N1
bWVudCgpLT5pZEF0dHJpYnV0ZU5hbWUoKSwgdmFsdWUpOwp9CgppbmxpbmUgRWxlbWVudCogZmly
c3RFbGVtZW50Q2hpbGQoY29uc3QgQ29udGFpbmVyTm9kZSogY29udGFpbmVyKQp7CiAgICBkbyBp
ZiAoIShjb250YWluZXIpKSB7IFdURlJlcG9ydEFyZ3VtZW50QXNzZXJ0aW9uRmFpbHVyZSgiLi4v
Li4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCIsIDU0OCwgX19QUkVUVFlfRlVOQ1RJ
T05fXywgImNvbnRhaW5lciIsICJjb250YWluZXIiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2Uo
KTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9
IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgTm9kZSogY2hpbGQgPSBjb250YWluZXIt
PmZpcnN0Q2hpbGQoKTsKICAgIHdoaWxlIChjaGlsZCAmJiAhY2hpbGQtPmlzRWxlbWVudE5vZGUo
KSkKICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihjaGlsZCk7Cn0KCn0KIyAyOSAiLi4vLi4vLi4vU291cmNlL1dlYkNv
cmUvZG9tL1N0eWxlZEVsZW1lbnQuaCIgMgoKCm5hbWVzcGFjZSBXZWJDb3JlIHsKCmNsYXNzIEF0
dHJpYnV0ZTsKY2xhc3MgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb247CmNsYXNzIENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOwoKY2xhc3MgU3R5bGVkRWxlbWVudCA6IHB1YmxpYyBFbGVt
ZW50IHsKcHVibGljOgogICAgdmlydHVhbCB+U3R5bGVkRWxlbWVudCgpOwoKICAgIGJvb2wgaGFz
TWFwcGVkQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIGF0dHJpYnV0ZU1hcCgpICYmIGF0dHJp
YnV0ZU1hcCgpLT5oYXNNYXBwZWRBdHRyaWJ1dGVzKCk7IH0KICAgIGJvb2wgaXNNYXBwZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QgeyBNYXBwZWRBdHRyaWJ1dGVF
bnRyeSByZXMgPSBlTm9uZTsgbWFwVG9FbnRyeShuYW1lLCByZXMpOyByZXR1cm4gcmVzICE9IGVO
b25lOyB9CgogICAgdm9pZCBhZGRDU1NMZW5ndGgoQXR0cmlidXRlKiwgaW50IGlkLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKICAgIHZvaWQgYWRkQ1NTUHJvcGVydHkoQXR0cmlidXRlKiwgaW50IGlk
LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgIHZvaWQgYWRkQ1NTUHJvcGVydHkoQXR0cmlidXRl
KiwgaW50IGlkLCBpbnQgdmFsdWUpOwogICAgdm9pZCBhZGRDU1NJbWFnZVByb3BlcnR5KEF0dHJp
YnV0ZSosIGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICB2b2lkIGFkZENT
U0NvbG9yKEF0dHJpYnV0ZSosIGludCBpZCwgY29uc3QgU3RyaW5nJiBjb2xvcik7CgogICAgc3Rh
dGljIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBnZXRNYXBwZWRBdHRyaWJ1dGVEZWNs
KE1hcHBlZEF0dHJpYnV0ZUVudHJ5LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKTsKICAgIHN0YXRpYyB2b2lkIHNldE1hcHBlZEF0dHJpYnV0ZURl
Y2woTWFwcGVkQXR0cmlidXRlRW50cnksIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUsIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKik7CiAg
ICBzdGF0aWMgdm9pZCByZW1vdmVNYXBwZWRBdHRyaWJ1dGVEZWNsKE1hcHBlZEF0dHJpYnV0ZUVu
dHJ5LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KTsKCiAgICBzdGF0aWMgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGdldE1hcHBlZEF0
dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIEF0dHJpYnV0ZSopOwogICAgc3RhdGlj
IHZvaWQgc2V0TWFwcGVkQXR0cmlidXRlRGVjbChNYXBwZWRBdHRyaWJ1dGVFbnRyeSwgQXR0cmli
dXRlKiwgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qKTsKCiAgICBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbiogaW5saW5lU3R5bGVEZWNsKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVT
dHlsZURlY2wuZ2V0KCk7IH0KICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQWRkaXRpb25hbEF0dHJp
YnV0ZVN0eWxlRGVjbHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgdmlydHVhbCB2b2lk
IGFkZGl0aW9uYWxBdHRyaWJ1dGVTdHlsZURlY2xzKFZlY3RvcjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbio+JikgeyB9CiAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZ2V0SW5saW5l
U3R5bGVEZWNsKCk7CiAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpOwogICAgdm9pZCBp
bnZhbGlkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKCiAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBj
bGFzc05hbWVzKCkgY29uc3Q7CgogICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0
OwoKICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IGNyZWF0ZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7Cgpwcm90ZWN0ZWQ6
CiAgICBTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50KiBk
b2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgICAgIDogRWxlbWVudChuYW1lLCBk
b2N1bWVudCwgdHlwZSkKICAgIHsKICAgIH0KCiAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hh
bmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7CiAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICB2aXJ0dWFsIHZvaWQg
Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoY29uc3QgRWxlbWVudCopOwoKICAgIHZpcnR1YWwg
dm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25z
dDsKCgoKCiAgICB2b2lkIGNsYXNzQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcm
IG5ld0NsYXNzU3RyaW5nKTsKCiAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpOwoKcHJpdmF0ZToKICAgIHZvaWQgY3JlYXRlTWFwcGVkRGVjbChBdHRyaWJ1dGUqKTsK
CiAgICB2b2lkIGNyZWF0ZUlubGluZVN0eWxlRGVjbCgpOwogICAgdm9pZCBkZXN0cm95SW5saW5l
U3R5bGVEZWNsKCk7CiAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKSBjb25z
dDsKCiAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG1faW5saW5lU3R5bGVE
ZWNsOwp9OwoKaW5saW5lIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIFN0eWxlZEVsZW1lbnQ6OmNs
YXNzTmFtZXMoKSBjb25zdAp7CiAgICBkbyBpZiAoIShoYXNDbGFzcygpKSkgeyBXVEZSZXBvcnRB
c3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5oIiwgMTAxLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiaGFzQ2xhc3MoKSIpOyBkbyB7IFdURlJl
cG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9p
ZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICBkbyBpZiAoIShh
dHRyaWJ1dGVNYXAoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaCIsIDEwMiwgX19QUkVUVFlfRlVOQ1RJT05f
XywgImF0dHJpYnV0ZU1hcCgpIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICop
KHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsKICAgIHJldHVybiBhdHRyaWJ1dGVNYXAoKS0+Y2xhc3NOYW1lcygp
Owp9CgppbmxpbmUgdm9pZCBTdHlsZWRFbGVtZW50OjppbnZhbGlkYXRlU3R5bGVBdHRyaWJ1dGUo
KQp7CiAgICBjbGVhcklzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpOwp9Cgp9CiMgMjcgIi4uLy4uLy4u
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCIgMgoKbmFtZXNwYWNlIFdlYkNvcmUg
ewoKY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKY2xhc3MgSFRNTENvbGxlY3Rpb247CmNsYXNzIEhU
TUxGb3JtRWxlbWVudDsKCmNsYXNzIEhUTUxFbGVtZW50IDogcHVibGljIFN0eWxlZEVsZW1lbnQg
ewpwdWJsaWM6CiAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CgogICAgUGFzc1JlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gY2hpbGRyZW4oKTsKCiAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0
OwoKICAgIHZpcnR1YWwgc2hvcnQgdGFiSW5kZXgoKSBjb25zdDsKICAgIHZvaWQgc2V0VGFiSW5k
ZXgoaW50KTsKCiAgICBTdHJpbmcgaW5uZXJIVE1MKCkgY29uc3Q7CiAgICBTdHJpbmcgb3V0ZXJI
VE1MKCkgY29uc3Q7CiAgICB2b2lkIHNldElubmVySFRNTChjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJik7CiAgICB2b2lkIHNldE91dGVySFRNTChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CiAgICB2b2lkIHNldElubmVyVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICB2b2lkIHNldE91dGVyVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7
CgogICAgRWxlbWVudCogaW5zZXJ0QWRqYWNlbnRFbGVtZW50KGNvbnN0IFN0cmluZyYgd2hlcmUs
IEVsZW1lbnQqIG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJik7CiAgICB2b2lkIGluc2VydEFkamFj
ZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgIHZvaWQgaW5zZXJ0QWRqYWNlbnRUZXh0KGNvbnN0IFN0cmluZyYgd2hlcmUs
IGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwoKICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0ZvY3VzKCkgY29uc3Q7CgogICAgU3RyaW5nIGNvbnRlbnRFZGl0YWJsZSgpIGNvbnN0
OwogICAgdm9pZCBzZXRDb250ZW50RWRpdGFibGUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpOwoKICAgIHZpcnR1YWwgYm9vbCBkcmFnZ2FibGUoKSBjb25zdDsKICAgIHZvaWQgc2V0RHJh
Z2dhYmxlKGJvb2wpOwoKICAgIGJvb2wgc3BlbGxjaGVjaygpIGNvbnN0OwogICAgdm9pZCBzZXRT
cGVsbGNoZWNrKGJvb2wpOwoKICAgIHZvaWQgY2xpY2soKTsKCiAgICB2aXJ0dWFsIHZvaWQgYWNj
ZXNzS2V5QWN0aW9uKGJvb2wgc2VuZFRvQW55RWxlbWVudCk7CgogICAgYm9vbCBpZUZvcmJpZHNJ
bnNlcnRIVE1MKCkgY29uc3Q7CgogICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CgogICAgSFRNTEZvcm1FbGVt
ZW50KiBmb3JtKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbEZvcm0oKTsgfQoKICAgIHN0YXRpYyB2
b2lkIGFkZEhUTUxBbGlnbm1lbnRUb1N0eWxlZEVsZW1lbnQoU3R5bGVkRWxlbWVudCosIEF0dHJp
YnV0ZSopOwoKICAgIEhUTUxGb3JtRWxlbWVudCogZmluZEZvcm1BbmNlc3RvcigpIGNvbnN0OwoK
ICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoYm9v
bCYgaXNBdXRvKSBjb25zdDsKCnByb3RlY3RlZDoKICAgIEhUTUxFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CgogICAgdm9pZCBhZGRIVE1MQWxpZ25tZW50
KEF0dHJpYnV0ZSopOwoKICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdDsKICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgIHZvaWQg
YXBwbHlCb3JkZXJBdHRyaWJ1dGUoQXR0cmlidXRlKik7CgogICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFu
Z2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsK
ICAgIHZvaWQgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxpdHkoKTsKCnByaXZhdGU6CiAg
ICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwoKICAgIHZvaWQgc2V0Q29udGVudEVk
aXRhYmxlKEF0dHJpYnV0ZSopOwoKICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVtZW50KiB2aXJ0dWFs
Rm9ybSgpIGNvbnN0OwoKICAgIE5vZGUqIGluc2VydEFkamFjZW50KGNvbnN0IFN0cmluZyYgd2hl
cmUsIE5vZGUqIG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJik7CiAgICBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IHRleHRUb0ZyYWdtZW50KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKCiAgICB2b2lkIGRpckF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKik7CiAgICB2b2lkIGFk
anVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZChFbGVt
ZW50KiBjaGlsZCk7CiAgICB2b2lkIGFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNo
aWxkcmVuQ2hhbmdlZChOb2RlKiBiZWZvcmVDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpOwog
ICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25nRGlyZWN0aW9uYWxp
dHlUZXh0Tm9kZT0gMCkgY29uc3Q7Cn07CgppbmxpbmUgSFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1l
bnQoTm9kZSogbm9kZSkKewogICAgZG8gaWYgKCEoIW5vZGUgfHwgbm9kZS0+aXNIVE1MRWxlbWVu
dCgpKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmgiLCAxMTQsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhbm9kZSB8
fCBub2RlLT5pc0hUTUxFbGVtZW50KCkiKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihp
bnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxFbGVtZW50
Kj4obm9kZSk7Cn0KCmlubGluZSBjb25zdCBIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChjb25z
dCBOb2RlKiBub2RlKQp7CiAgICBkbyBpZiAoISghbm9kZSB8fCBub2RlLT5pc0hUTUxFbGVtZW50
KCkpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaCIsIDEyMCwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFub2RlIHx8
IG5vZGUtPmlzSFRNTEVsZW1lbnQoKSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGlu
dCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVs
ZW1lbnQqPihub2RlKTsKfQoKaW5saW5lIEhUTUxFbGVtZW50OjpIVE1MRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICA6IFN0eWxlZEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUhUTUxFbGVtZW50KQp7CiAgICBkbyBpZiAo
ISh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIiwgMTI3LCBfX1BS
RVRUWV9GVU5DVElPTl9fLCAidGFnTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkiKTsgZG8geyBXVEZS
ZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZv
aWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwp9Cgp9CiMgMzIgIi4u
Ly4uLy4uL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIiAyCiMgMSAiLi4v
Li4vLi4vU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oIiAxCiMgMzMgIi4uLy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIiAyCiMgMSAiLi4vLi4v
Li4vU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIgMQojIDI3ICIu
Li8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgojZGVm
aW5lIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcl9oIAoKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3Mg
TWVkaWFDYW5TdGFydExpc3RlbmVyIHsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIG1lZGlhQ2Fu
U3RhcnQoKSA9IDA7CnByb3RlY3RlZDoKICAgIHZpcnR1YWwgfk1lZGlhQ2FuU3RhcnRMaXN0ZW5l
cigpIHsgfQp9OwoKfQojIDM0ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCIgMgojIDEgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCIKI2RlZmluZSBNZWRpYVBsYXllcl9oIAoKCgoKCgoK
IyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCIgMQojIDM2ICIuLi8u
Li8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIiAyCiMg
MSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIiAx
CiMgMzcgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgiIDIKIyA0OSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaCIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmgiIDEKIyAyNyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIgojZGVmaW5lIEdyYXBoaWNzTGF5ZXJfaCAK
CgoKIyAxICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0
aW9uLmgiIDEKIyAyNiAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9u
L0FuaW1hdGlvbi5oIgojZGVmaW5lIEFuaW1hdGlvbl9oIAoKIyAxICIuLi8uLi8uLi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3RyaW5nLmgiIDEKIyAyOSAiLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oIiAyCiMgMSAiLi4v
Li4vLi4vU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmgiIDEKIyAzMCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0
aW9uL1RpbWluZ0Z1bmN0aW9uLmgiIDEKIyAyNiAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgiCiNkZWZpbmUgVGltaW5nRnVuY3Rpb25f
aCAKCgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgVGltaW5nRnVuY3Rpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxUaW1pbmdGdW5jdGlvbj4gewpwdWJsaWM6CgogICAgZW51bSBUaW1pbmdGdW5j
dGlvblR5cGUgewogICAgICAgIExpbmVhckZ1bmN0aW9uLCBDdWJpY0JlemllckZ1bmN0aW9uLCBT
dGVwc0Z1bmN0aW9uCiAgICB9OwoKICAgIHZpcnR1YWwgflRpbWluZ0Z1bmN0aW9uKCkgeyB9Cgog
ICAgVGltaW5nRnVuY3Rpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KCiAg
ICBib29sIGlzTGluZWFyVGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
TGluZWFyRnVuY3Rpb247IH0KICAgIGJvb2wgaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IEN1YmljQmV6aWVyRnVuY3Rpb247IH0KICAgIGJvb2wg
aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFN0ZXBzRnVu
Y3Rpb247IH0KCiAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlv
biYgb3RoZXIpID0gMDsKCnByb3RlY3RlZDoKICAgIFRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1bmN0
aW9uVHlwZSB0eXBlKQogICAgICAgIDogbV90eXBlKHR5cGUpCiAgICB7CiAgICB9CgogICAgVGlt
aW5nRnVuY3Rpb25UeXBlIG1fdHlwZTsKfTsKCmNsYXNzIExpbmVhclRpbWluZ0Z1bmN0aW9uIDog
cHVibGljIFRpbWluZ0Z1bmN0aW9uIHsKcHVibGljOgogICAgc3RhdGljIFBhc3NSZWZQdHI8TGlu
ZWFyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBMaW5lYXJUaW1pbmdGdW5jdGlvbik7CiAgICB9CgogICAgfkxpbmVhclRpbWluZ0Z1bmN0
aW9uKCkgeyB9CgogICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rp
b24mIG90aGVyKQogICAgewogICAgICAgIHJldHVybiBvdGhlci5pc0xpbmVhclRpbWluZ0Z1bmN0
aW9uKCk7CiAgICB9Cgpwcml2YXRlOgogICAgTGluZWFyVGltaW5nRnVuY3Rpb24oKQogICAgICAg
IDogVGltaW5nRnVuY3Rpb24oTGluZWFyRnVuY3Rpb24pCiAgICB7CiAgICB9Cn07CgpjbGFzcyBD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uIDogcHVibGljIFRpbWluZ0Z1bmN0aW9uIHsKcHVibGlj
OgogICAgc3RhdGljIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRl
KGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKICAgIHsKICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oeDEsIHkxLCB4
MiwgeTIpKTsKICAgIH0KCiAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uPiBjcmVhdGUoKQogICAgewogICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbigpKTsKICAgIH0KCiAgICB+Q3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbigpIHsgfQoKICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0
aW9uJiBvdGhlcikKICAgIHsKICAgICAgICBpZiAob3RoZXIuaXNDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKCkpIHsKICAgICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiog
Y3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KCZvdGhl
cik7CiAgICAgICAgICAgIHJldHVybiBtX3gxID09IGN0Zi0+bV94MSAmJiBtX3kxID09IGN0Zi0+
bV95MSAmJiBtX3gyID09IGN0Zi0+bV94MiAmJiBtX3kyID09IGN0Zi0+bV95MjsKICAgICAgICB9
CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGRvdWJsZSB4MSgpIGNvbnN0IHsgcmV0
dXJuIG1feDE7IH0KICAgIGRvdWJsZSB5MSgpIGNvbnN0IHsgcmV0dXJuIG1feTE7IH0KICAgIGRv
dWJsZSB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDI7IH0KICAgIGRvdWJsZSB5MigpIGNvbnN0IHsg
cmV0dXJuIG1feTI7IH0KCiAgICBzdGF0aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
biogZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCkKICAgIHsKICAgICAgICBzdGF0aWMgY29uc3QgQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvbiogZHRmID0gY3JlYXRlKCkubGVha1JlZigpOwogICAgICAg
IHJldHVybiBkdGY7CiAgICB9Cgpwcml2YXRlOgogICAgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bihkb3VibGUgeDEgPSAwLjI1LCBkb3VibGUgeTEgPSAwLjEsIGRvdWJsZSB4MiA9IDAuMjUsIGRv
dWJsZSB5MiA9IDEuMCkKICAgICAgICA6IFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyRnVuY3Rp
b24pCiAgICAgICAgLCBtX3gxKHgxKQogICAgICAgICwgbV95MSh5MSkKICAgICAgICAsIG1feDIo
eDIpCiAgICAgICAgLCBtX3kyKHkyKQogICAgewogICAgfQoKICAgIGRvdWJsZSBtX3gxOwogICAg
ZG91YmxlIG1feTE7CiAgICBkb3VibGUgbV94MjsKICAgIGRvdWJsZSBtX3kyOwp9OwoKY2xhc3Mg
U3RlcHNUaW1pbmdGdW5jdGlvbiA6IHB1YmxpYyBUaW1pbmdGdW5jdGlvbiB7CnB1YmxpYzoKICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0ZXBzVGltaW5nRnVuY3Rpb24+IGNyZWF0ZShpbnQgc3RlcHMs
IGJvb2wgc3RlcEF0U3RhcnQpCiAgICB7CiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGVw
c1RpbWluZ0Z1bmN0aW9uKHN0ZXBzLCBzdGVwQXRTdGFydCkpOwogICAgfQoKICAgIH5TdGVwc1Rp
bWluZ0Z1bmN0aW9uKCkgeyB9CgogICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGlt
aW5nRnVuY3Rpb24mIG90aGVyKQogICAgewogICAgICAgIGlmIChvdGhlci5pc1N0ZXBzVGltaW5n
RnVuY3Rpb24oKSkgewogICAgICAgICAgICBjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKiBzdGYg
PSBzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKj4oJm90aGVyKTsKICAgICAg
ICAgICAgcmV0dXJuIG1fc3RlcHMgPT0gc3RmLT5tX3N0ZXBzICYmIG1fc3RlcEF0U3RhcnQgPT0g
c3RmLT5tX3N0ZXBBdFN0YXJ0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9
CgogICAgaW50IG51bWJlck9mU3RlcHMoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBzOyB9CiAgICBi
b29sIHN0ZXBBdFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGVwQXRTdGFydDsgfQoKcHJpdmF0
ZToKICAgIFN0ZXBzVGltaW5nRnVuY3Rpb24oaW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQog
ICAgICAgIDogVGltaW5nRnVuY3Rpb24oU3RlcHNGdW5jdGlvbikKICAgICAgICAsIG1fc3RlcHMo
c3RlcHMpCiAgICAgICAgLCBtX3N0ZXBBdFN0YXJ0KHN0ZXBBdFN0YXJ0KQogICAgewogICAgfQoK
ICAgIGludCBtX3N0ZXBzOwogICAgYm9vbCBtX3N0ZXBBdFN0YXJ0Owp9OwoKfQojIDMxICIuLi8u
Li8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgiIDIKCgoK
bmFtZXNwYWNlIFdlYkNvcmUgewoKY29uc3QgaW50IGNBbmltYXRlTm9uZSA9IDA7CmNvbnN0IGlu
dCBjQW5pbWF0ZUFsbCA9IC0yOwoKY2xhc3MgQW5pbWF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8
QW5pbWF0aW9uPiB7CnB1YmxpYzoKICAgIH5BbmltYXRpb24oKTsKCiAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxBbmltYXRpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBBbmltYXRpb24p
OyB9CiAgICBzdGF0aWMgUGFzc1JlZlB0cjxBbmltYXRpb24+IGNyZWF0ZShjb25zdCBBbmltYXRp
b24qIG8pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBBbmltYXRpb24oKm8pKTsgfQoKICAgIGJvb2wg
aXNEZWxheVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXlTZXQ7IH0KICAgIGJvb2wgaXNEaXJl
Y3Rpb25TZXQoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvblNldDsgfQogICAgYm9vbCBpc0R1
cmF0aW9uU2V0KCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvblNldDsgfQogICAgYm9vbCBpc0Zp
bGxNb2RlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9maWxsTW9kZVNldDsgfQogICAgYm9vbCBpc0l0
ZXJhdGlvbkNvdW50U2V0KCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRpb25Db3VudFNldDsgfQog
ICAgYm9vbCBpc05hbWVTZXQoKSBjb25zdCB7IHJldHVybiBtX25hbWVTZXQ7IH0KICAgIGJvb2wg
aXNQbGF5U3RhdGVTZXQoKSBjb25zdCB7IHJldHVybiBtX3BsYXlTdGF0ZVNldDsgfQogICAgYm9v
bCBpc1Byb3BlcnR5U2V0KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVNldDsgfQogICAgYm9v
bCBpc1RpbWluZ0Z1bmN0aW9uU2V0KCkgY29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvblNl
dDsgfQoKCiAgICBib29sIGlzTm9uZUFuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOb25l
OyB9CgoKICAgIGJvb2wgaXNWYWxpZEFuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuICFtX2lzTm9u
ZSAmJiAhbV9uYW1lLmlzRW1wdHkoKTsgfQoKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICB7
CiAgICAgICAgcmV0dXJuICghbV9kaXJlY3Rpb25TZXQgJiYgIW1fZHVyYXRpb25TZXQgJiYgIW1f
ZmlsbE1vZGVTZXQKICAgICAgICAgICAgICAgICYmICFtX25hbWVTZXQgJiYgIW1fcGxheVN0YXRl
U2V0ICYmICFtX2l0ZXJhdGlvbkNvdW50U2V0CiAgICAgICAgICAgICAgICAmJiAhbV9kZWxheVNl
dCAmJiAhbV90aW1pbmdGdW5jdGlvblNldCAmJiAhbV9wcm9wZXJ0eVNldCk7CiAgICB9CgogICAg
Ym9vbCBpc0VtcHR5T3JaZXJvRHVyYXRpb24oKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBp
c0VtcHR5KCkgfHwgKG1fZHVyYXRpb24gPT0gMCAmJiBtX2RlbGF5IDw9IDApOwogICAgfQoKICAg
IHZvaWQgY2xlYXJEZWxheSgpIHsgbV9kZWxheVNldCA9IGZhbHNlOyB9CiAgICB2b2lkIGNsZWFy
RGlyZWN0aW9uKCkgeyBtX2RpcmVjdGlvblNldCA9IGZhbHNlOyB9CiAgICB2b2lkIGNsZWFyRHVy
YXRpb24oKSB7IG1fZHVyYXRpb25TZXQgPSBmYWxzZTsgfQogICAgdm9pZCBjbGVhckZpbGxNb2Rl
KCkgeyBtX2ZpbGxNb2RlU2V0ID0gZmFsc2U7IH0KICAgIHZvaWQgY2xlYXJJdGVyYXRpb25Db3Vu
dCgpIHsgbV9pdGVyYXRpb25Db3VudFNldCA9IGZhbHNlOyB9CiAgICB2b2lkIGNsZWFyTmFtZSgp
IHsgbV9uYW1lU2V0ID0gZmFsc2U7IH0KICAgIHZvaWQgY2xlYXJQbGF5U3RhdGUoKSB7IG1fcGxh
eVN0YXRlU2V0ID0gQW5pbVBsYXlTdGF0ZVBsYXlpbmc7IH0KICAgIHZvaWQgY2xlYXJQcm9wZXJ0
eSgpIHsgbV9wcm9wZXJ0eVNldCA9IGZhbHNlOyB9CiAgICB2b2lkIGNsZWFyVGltaW5nRnVuY3Rp
b24oKSB7IG1fdGltaW5nRnVuY3Rpb25TZXQgPSBmYWxzZTsgfQoKICAgIHZvaWQgY2xlYXJBbGwo
KQogICAgewogICAgICAgIGNsZWFyRGVsYXkoKTsKICAgICAgICBjbGVhckRpcmVjdGlvbigpOwog
ICAgICAgIGNsZWFyRHVyYXRpb24oKTsKICAgICAgICBjbGVhckZpbGxNb2RlKCk7CiAgICAgICAg
Y2xlYXJJdGVyYXRpb25Db3VudCgpOwogICAgICAgIGNsZWFyTmFtZSgpOwogICAgICAgIGNsZWFy
UGxheVN0YXRlKCk7CiAgICAgICAgY2xlYXJQcm9wZXJ0eSgpOwogICAgICAgIGNsZWFyVGltaW5n
RnVuY3Rpb24oKTsKICAgIH0KCiAgICBkb3VibGUgZGVsYXkoKSBjb25zdCB7IHJldHVybiBtX2Rl
bGF5OyB9CgogICAgZW51bSBBbmltYXRpb25EaXJlY3Rpb24geyBBbmltYXRpb25EaXJlY3Rpb25O
b3JtYWwsIEFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZSB9OwogICAgQW5pbWF0aW9uRGlyZWN0
aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFuaW1hdGlvbkRpcmVj
dGlvbj4obV9kaXJlY3Rpb24pOyB9CgogICAgdW5zaWduZWQgZmlsbE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbGxNb2RlOyB9CgogICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9kdXJhdGlvbjsgfQoKICAgIGVudW0geyBJdGVyYXRpb25Db3VudEluZmluaXRlID0gLTEgfTsK
ICAgIGludCBpdGVyYXRpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0aW9uQ291bnQ7
IH0KICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAg
RUFuaW1QbGF5U3RhdGUgcGxheVN0YXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUFu
aW1QbGF5U3RhdGU+KG1fcGxheVN0YXRlKTsgfQogICAgaW50IHByb3BlcnR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9wZXJ0eTsgfQogICAgY29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4g
dGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uOyB9CgogICAg
dm9pZCBzZXREZWxheShkb3VibGUgYykgeyBtX2RlbGF5ID0gYzsgbV9kZWxheVNldCA9IHRydWU7
IH0KICAgIHZvaWQgc2V0RGlyZWN0aW9uKEFuaW1hdGlvbkRpcmVjdGlvbiBkKSB7IG1fZGlyZWN0
aW9uID0gZDsgbV9kaXJlY3Rpb25TZXQgPSB0cnVlOyB9CiAgICB2b2lkIHNldER1cmF0aW9uKGRv
dWJsZSBkKSB7IGRvIGlmICghKGQgPj0gMCkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgi
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oIiwg
MTE1LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAiZCA+PSAwIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgbV9kdXJhdGlvbiA9IGQ7IG1fZHVyYXRp
b25TZXQgPSB0cnVlOyB9CiAgICB2b2lkIHNldEZpbGxNb2RlKHVuc2lnbmVkIGYpIHsgbV9maWxs
TW9kZSA9IGY7IG1fZmlsbE1vZGVTZXQgPSB0cnVlOyB9CiAgICB2b2lkIHNldEl0ZXJhdGlvbkNv
dW50KGludCBjKSB7IG1faXRlcmF0aW9uQ291bnQgPSBjOyBtX2l0ZXJhdGlvbkNvdW50U2V0ID0g
dHJ1ZTsgfQogICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbikgeyBtX25hbWUgPSBuOyBt
X25hbWVTZXQgPSB0cnVlOyB9CiAgICB2b2lkIHNldFBsYXlTdGF0ZShFQW5pbVBsYXlTdGF0ZSBk
KSB7IG1fcGxheVN0YXRlID0gZDsgbV9wbGF5U3RhdGVTZXQgPSB0cnVlOyB9CiAgICB2b2lkIHNl
dFByb3BlcnR5KGludCB0KSB7IG1fcHJvcGVydHkgPSB0OyBtX3Byb3BlcnR5U2V0ID0gdHJ1ZTsg
fQogICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBm
KSB7IG1fdGltaW5nRnVuY3Rpb24gPSBmOyBtX3RpbWluZ0Z1bmN0aW9uU2V0ID0gdHJ1ZTsgfQoK
ICAgIHZvaWQgc2V0SXNOb25lQW5pbWF0aW9uKGJvb2wgbikgeyBtX2lzTm9uZSA9IG47IH0KCiAg
ICBBbmltYXRpb24mIG9wZXJhdG9yPShjb25zdCBBbmltYXRpb24mIG8pOwoKCiAgICBib29sIGFu
aW1hdGlvbnNNYXRjaChjb25zdCBBbmltYXRpb24qLCBib29sIG1hdGNoUGxheVN0YXRlcyA9IHRy
dWUpIGNvbnN0OwoKCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQW5pbWF0aW9uJiBvKSBjb25z
dCB7IHJldHVybiBhbmltYXRpb25zTWF0Y2goJm8pOyB9CiAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQW5pbWF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CgogICAgYm9v
bCBmaWxsc0JhY2t3YXJkcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbE1vZGVTZXQgJiYgKG1fZmls
bE1vZGUgPT0gQW5pbWF0aW9uRmlsbE1vZGVCYWNrd2FyZHMgfHwgbV9maWxsTW9kZSA9PSBBbmlt
YXRpb25GaWxsTW9kZUJvdGgpOyB9CiAgICBib29sIGZpbGxzRm9yd2FyZHMoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbGxNb2RlU2V0ICYmIChtX2ZpbGxNb2RlID09IEFuaW1hdGlvbkZpbGxNb2RlRm9y
d2FyZHMgfHwgbV9maWxsTW9kZSA9PSBBbmltYXRpb25GaWxsTW9kZUJvdGgpOyB9Cgpwcml2YXRl
OgogICAgQW5pbWF0aW9uKCk7CiAgICBBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiBvKTsKCiAg
ICBTdHJpbmcgbV9uYW1lOwogICAgaW50IG1fcHJvcGVydHk7CiAgICBpbnQgbV9pdGVyYXRpb25D
b3VudDsKICAgIGRvdWJsZSBtX2RlbGF5OwogICAgZG91YmxlIG1fZHVyYXRpb247CiAgICBSZWZQ
dHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVuY3Rpb247CiAgICB1bnNpZ25lZCBtX2RpcmVj
dGlvbiA6IDE7CiAgICB1bnNpZ25lZCBtX2ZpbGxNb2RlIDogMjsKCiAgICB1bnNpZ25lZCBtX3Bs
YXlTdGF0ZSA6IDI7CgogICAgYm9vbCBtX2RlbGF5U2V0IDogMTsKICAgIGJvb2wgbV9kaXJlY3Rp
b25TZXQgOiAxOwogICAgYm9vbCBtX2R1cmF0aW9uU2V0IDogMTsKICAgIGJvb2wgbV9maWxsTW9k
ZVNldCA6IDE7CiAgICBib29sIG1faXRlcmF0aW9uQ291bnRTZXQgOiAxOwogICAgYm9vbCBtX25h
bWVTZXQgOiAxOwogICAgYm9vbCBtX3BsYXlTdGF0ZVNldCA6IDE7CiAgICBib29sIG1fcHJvcGVy
dHlTZXQgOiAxOwogICAgYm9vbCBtX3RpbWluZ0Z1bmN0aW9uU2V0IDogMTsKCiAgICBib29sIG1f
aXNOb25lIDogMTsKCnB1YmxpYzoKICAgIHN0YXRpYyBkb3VibGUgaW5pdGlhbEFuaW1hdGlvbkRl
bGF5KCkgeyByZXR1cm4gMDsgfQogICAgc3RhdGljIEFuaW1hdGlvbkRpcmVjdGlvbiBpbml0aWFs
QW5pbWF0aW9uRGlyZWN0aW9uKCkgeyByZXR1cm4gQW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsOyB9
CiAgICBzdGF0aWMgZG91YmxlIGluaXRpYWxBbmltYXRpb25EdXJhdGlvbigpIHsgcmV0dXJuIDA7
IH0KICAgIHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsQW5pbWF0aW9uRmlsbE1vZGUoKSB7IHJldHVy
biBBbmltYXRpb25GaWxsTW9kZU5vbmU7IH0KICAgIHN0YXRpYyBpbnQgaW5pdGlhbEFuaW1hdGlv
bkl0ZXJhdGlvbkNvdW50KCkgeyByZXR1cm4gMTsgfQogICAgc3RhdGljIGNvbnN0IFN0cmluZyYg
aW5pdGlhbEFuaW1hdGlvbk5hbWUoKTsKICAgIHN0YXRpYyBFQW5pbVBsYXlTdGF0ZSBpbml0aWFs
QW5pbWF0aW9uUGxheVN0YXRlKCkgeyByZXR1cm4gQW5pbVBsYXlTdGF0ZVBsYXlpbmc7IH0KICAg
IHN0YXRpYyBpbnQgaW5pdGlhbEFuaW1hdGlvblByb3BlcnR5KCkgeyByZXR1cm4gY0FuaW1hdGVB
bGw7IH0KICAgIHN0YXRpYyBjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBpbml0aWFs
QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKSB7IHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uOjpjcmVhdGUoKTsgfQp9OwoKfQojIDMyICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgiIDIKIyAxICIuLi8uLi8uLi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIiAxCiMgMzMgIi4uLy4uLy4uL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCIgMgoKIyAxICIuLi8uLi8u
Li9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaCIgMQojIDI0
ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0Qu
aCIKI2RlZmluZSBGbG9hdFBvaW50M0RfaCAKCgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3Mg
RmxvYXRQb2ludDNEIHsKcHVibGljOgogICAgRmxvYXRQb2ludDNEKCkKICAgICAgICA6IG1feCgw
KQogICAgICAgICwgbV95KDApCiAgICAgICAgLCBtX3ooMCkKICAgIHsKICAgIH0KCiAgICBGbG9h
dFBvaW50M0QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKICAgICAgICA6IG1feCh4KQogICAg
ICAgICwgbV95KHkpCiAgICAgICAgLCBtX3ooeikKICAgIHsKICAgIH0KCiAgICBGbG9hdFBvaW50
M0QoY29uc3QgRmxvYXRQb2ludCYgcCkKICAgICAgICA6IG1feChwLngoKSkKICAgICAgICAsIG1f
eShwLnkoKSkKICAgICAgICAsIG1feigwKQogICAgewogICAgfQoKICAgIEZsb2F0UG9pbnQzRChj
b25zdCBGbG9hdFBvaW50M0QmIHApCiAgICAgICAgOiBtX3gocC54KCkpCiAgICAgICAgLCBtX3ko
cC55KCkpCiAgICAgICAgLCBtX3oocC56KCkpCiAgICB7CiAgICB9CgogICAgZmxvYXQgeCgpIGNv
bnN0IHsgcmV0dXJuIG1feDsgfQogICAgdm9pZCBzZXRYKGZsb2F0IHgpIHsgbV94ID0geDsgfQoK
ICAgIGZsb2F0IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KICAgIHZvaWQgc2V0WShmbG9hdCB5
KSB7IG1feSA9IHk7IH0KCiAgICBmbG9hdCB6KCkgY29uc3QgeyByZXR1cm4gbV96OyB9CiAgICB2
b2lkIHNldFooZmxvYXQgeikgeyBtX3ogPSB6OyB9CiAgICB2b2lkIHNldChmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB6KQogICAgewogICAgICAgIG1feCA9IHg7CiAgICAgICAgbV95ID0geTsKICAg
ICAgICBtX3ogPSB6OwogICAgfQogICAgdm9pZCBtb3ZlKGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxv
YXQgZHopCiAgICB7CiAgICAgICAgbV94ICs9IGR4OwogICAgICAgIG1feSArPSBkeTsKICAgICAg
ICBtX3ogKz0gZHo7CiAgICB9CiAgICB2b2lkIHNjYWxlKGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxv
YXQgc3opCiAgICB7CiAgICAgICAgbV94ICo9IHN4OwogICAgICAgIG1feSAqPSBzeTsKICAgICAg
ICBtX3ogKj0gc3o7CiAgICB9CgogICAgYm9vbCBpc1plcm8oKSBjb25zdAogICAgewogICAgICAg
IHJldHVybiAhbV94ICYmICFtX3kgJiYgIW1fejsKICAgIH0KCiAgICB2b2lkIG5vcm1hbGl6ZSgp
OwoKICAgIGZsb2F0IGRvdChjb25zdCBGbG9hdFBvaW50M0QmIGEpIGNvbnN0CiAgICB7CiAgICAg
ICAgcmV0dXJuIG1feCAqIGEueCgpICsgbV95ICogYS55KCkgKyBtX3ogKiBhLnooKTsKICAgIH0K
CgoKCiAgICB2b2lkIGNyb3NzKGNvbnN0IEZsb2F0UG9pbnQzRCYgYSwgY29uc3QgRmxvYXRQb2lu
dDNEJiBiKQogICAgewogICAgICAgIGZsb2F0IHggPSBhLnkoKSAqIGIueigpIC0gYS56KCkgKiBi
LnkoKTsKICAgICAgICBmbG9hdCB5ID0gYS56KCkgKiBiLngoKSAtIGEueCgpICogYi56KCk7CiAg
ICAgICAgZmxvYXQgeiA9IGEueCgpICogYi55KCkgLSBhLnkoKSAqIGIueCgpOwogICAgICAgIG1f
eCA9IHg7CiAgICAgICAgbV95ID0geTsKICAgICAgICBtX3ogPSB6OwogICAgfQoKCgogICAgRmxv
YXRQb2ludDNEIGNyb3NzKGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9pbnQpIGNvbnN0CiAgICB7CiAg
ICAgICAgRmxvYXRQb2ludDNEIHJlc3VsdDsKICAgICAgICByZXN1bHQuY3Jvc3MoKnRoaXMsIHBv
aW50KTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIGZsb2F0IGxlbmd0aFNxdWFy
ZWQoKSBjb25zdCB7IHJldHVybiB0aGlzLT5kb3QoKnRoaXMpOyB9CiAgICBmbG9hdCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBzcXJ0ZihsZW5ndGhTcXVhcmVkKCkpOyB9CgogICAgZmxvYXQgZGlz
dGFuY2VUbyhjb25zdCBGbG9hdFBvaW50M0QmIGEpIGNvbnN0OwoKcHJpdmF0ZToKICAgIGZsb2F0
IG1feDsKICAgIGZsb2F0IG1feTsKICAgIGZsb2F0IG1fejsKfTsKCmlubGluZSBGbG9hdFBvaW50
M0QmIG9wZXJhdG9yICs9KEZsb2F0UG9pbnQzRCYgYSwgY29uc3QgRmxvYXRQb2ludDNEJiBiKQp7
CiAgICBhLm1vdmUoYi54KCksIGIueSgpLCBiLnooKSk7CiAgICByZXR1cm4gYTsKfQoKaW5saW5l
IEZsb2F0UG9pbnQzRCYgb3BlcmF0b3IgLT0oRmxvYXRQb2ludDNEJiBhLCBjb25zdCBGbG9hdFBv
aW50M0QmIGIpCnsKICAgIGEubW92ZSgtYi54KCksIC1iLnkoKSwgLWIueigpKTsKICAgIHJldHVy
biBhOwp9CgppbmxpbmUgRmxvYXRQb2ludDNEIG9wZXJhdG9yKyhjb25zdCBGbG9hdFBvaW50M0Qm
IGEsIGNvbnN0IEZsb2F0UG9pbnQzRCYgYikKewogICAgcmV0dXJuIEZsb2F0UG9pbnQzRChhLngo
KSArIGIueCgpLCBhLnkoKSArIGIueSgpLCBhLnooKSArIGIueigpKTsKfQoKaW5saW5lIEZsb2F0
UG9pbnQzRCBvcGVyYXRvci0oY29uc3QgRmxvYXRQb2ludDNEJiBhLCBjb25zdCBGbG9hdFBvaW50
M0QmIGIpCnsKICAgIHJldHVybiBGbG9hdFBvaW50M0QoYS54KCkgLSBiLngoKSwgYS55KCkgLSBi
LnkoKSwgYS56KCkgLSBiLnooKSk7Cn0KCmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRmxv
YXRQb2ludDNEJiBhLCBjb25zdCBGbG9hdFBvaW50M0QmIGIpCnsKICAgIHJldHVybiBhLngoKSA9
PSBiLngoKSAmJiBhLnkoKSA9PSBiLnkoKSAmJiBhLnooKSA9PSBiLnooKTsKfQoKaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBGbG9hdFBvaW50M0QmIGEsIGNvbnN0IEZsb2F0UG9pbnQzRCYg
YikKewogICAgcmV0dXJuIGEueCgpICE9IGIueCgpIHx8IGEueSgpICE9IGIueSgpIHx8IGEueigp
ICE9IGIueigpOwp9CgppbmxpbmUgZmxvYXQgb3BlcmF0b3IqKGNvbnN0IEZsb2F0UG9pbnQzRCYg
YSwgY29uc3QgRmxvYXRQb2ludDNEJiBiKQp7CgogICAgcmV0dXJuIGEuZG90KGIpOwp9Cgppbmxp
bmUgRmxvYXRQb2ludDNEIG9wZXJhdG9yKihmbG9hdCBrLCBjb25zdCBGbG9hdFBvaW50M0QmIHYp
CnsKICAgIHJldHVybiBGbG9hdFBvaW50M0QoayAqIHYueCgpLCBrICogdi55KCksIGsgKiB2Lnoo
KSk7Cn0KCmlubGluZSBGbG9hdFBvaW50M0Qgb3BlcmF0b3IqKGNvbnN0IEZsb2F0UG9pbnQzRCYg
diwgZmxvYXQgaykKewogICAgcmV0dXJuIEZsb2F0UG9pbnQzRChrICogdi54KCksIGsgKiB2Lnko
KSwgayAqIHYueigpKTsKfQoKaW5saW5lIGZsb2F0IEZsb2F0UG9pbnQzRDo6ZGlzdGFuY2VUbyhj
b25zdCBGbG9hdFBvaW50M0QmIGEpIGNvbnN0CnsKICAgIHJldHVybiAoKnRoaXMgLSBhKS5sZW5n
dGgoKTsKfQoKfQojIDM1ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgiIDIKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oIiAxCiMgMjcgIi4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaCIKI2RlZmlu
ZSBHcmFwaGljc0xheWVyQ2xpZW50X2ggCgoKCm5hbWVzcGFjZSBXZWJDb3JlIHsKCmNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKY2xhc3MgR3JhcGhpY3NMYXllcjsKY2xhc3MgSW50UG9pbnQ7CmNsYXNz
IEludFJlY3Q7CmNsYXNzIEZsb2F0UG9pbnQ7CgplbnVtIEdyYXBoaWNzTGF5ZXJQYWludGluZ1Bo
YXNlIHsKICAgIEdyYXBoaWNzTGF5ZXJQYWludEJhY2tncm91bmQgPSAoMSA8PCAwKSwKICAgIEdy
YXBoaWNzTGF5ZXJQYWludEZvcmVncm91bmQgPSAoMSA8PCAxKSwKICAgIEdyYXBoaWNzTGF5ZXJQ
YWludE1hc2sgPSAoMSA8PCAyKSwKICAgIEdyYXBoaWNzTGF5ZXJQYWludEFsbCA9IChHcmFwaGlj
c0xheWVyUGFpbnRCYWNrZ3JvdW5kIHwgR3JhcGhpY3NMYXllclBhaW50Rm9yZWdyb3VuZCB8IEdy
YXBoaWNzTGF5ZXJQYWludE1hc2spCn07CgplbnVtIEFuaW1hdGVkUHJvcGVydHlJRCB7CiAgICBB
bmltYXRlZFByb3BlcnR5SW52YWxpZCwKICAgIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm0sCiAgICBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwKICAgIEFuaW1hdGVkUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IKfTsKCmNsYXNzIEdyYXBoaWNzTGF5ZXJDbGllbnQgewpwdWJsaWM6CiAgICB2
aXJ0dWFsIH5HcmFwaGljc0xheWVyQ2xpZW50KCkge30KCgogICAgdmlydHVhbCB2b2lkIG5vdGlm
eUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKSA9IDA7
CgoKCiAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqKSA9IDA7CgogICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NM
YXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25z
dCBJbnRSZWN0JiBpbkNsaXApID0gMDsKICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRDaGFuZ2Vz
Rm9yTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IHsgfQoKCiAgICB2aXJ0dWFsIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gMTsgfQoKICAgIHZpcnR1YWwg
ZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gMTsgfQoKICAgIHZpcnR1YWwg
Ym9vbCBzaG93RGVidWdCb3JkZXJzKCkgY29uc3QgPSAwOwogICAgdmlydHVhbCBib29sIHNob3dS
ZXBhaW50Q291bnRlcigpIGNvbnN0ID0gMDsKfTsKCn0KIyAzNyAiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIiAyCgojIDEgIi4uLy4uLy4u
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguaCIgMQojIDI3ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiNkZWZpbmUgVHJhbnNmb3Jt
YXRpb25NYXRyaXhfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRQb2ludC5oIiAxCiMgMzAgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCIgMgojIDEgIi4u
Ly4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgiIDEKIyAz
MSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oIiAyCiMgNDQgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIyAxICIv
b3B0L2xvY2FsL2luY2x1ZGUvUXRHdWkvUVRyYW5zZm9ybSIgMQojIDEgIi9vcHQvbG9jYWwvaW5j
bHVkZS9RdEd1aS9xdHJhbnNmb3JtLmgiIDEKIyA0MiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0R3Vp
L3F0cmFuc2Zvcm0uaCIKI2RlZmluZSBRVFJBTlNGT1JNX0ggCgojIDEgIi9vcHQvbG9jYWwvaW5j
bHVkZS9RdEd1aS9xbWF0cml4LmgiIDEKIyA0MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0R3VpL3Ft
YXRyaXguaCIKI2RlZmluZSBRTUFUUklYX0ggCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdEd1
aS9xcG9seWdvbi5oIiAxCiMgNDMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdEd1aS9xcG9seWdvbi5o
IgojZGVmaW5lIFFQT0xZR09OX0ggCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXZl
Y3Rvci5oIiAxCiMgNDMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXZlY3Rvci5oIgojZGVm
aW5lIFFWRUNUT1JfSCAKIyA1MiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xdmVjdG9yLmgi
CiMgMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS92ZWN0b3IiIDEgMwojIDYxICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL3ZlY3RvciIgMwojZGVmaW5lIF9HTElCQ1hYX1ZFQ1RPUiAxCgogICAgICAg
CiMgNjQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvdmVjdG9yIiAzCgoKCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF92ZWN0b3IuaCIgMSAzCiMgNjMgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKI2RlZmluZSBfVkVDVE9SX0ggMQoKCgoK
Cm5hbWVzcGFjZSBzdGQgewoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUg
X0FsbG9jPgogICAgc3RydWN0IF9WZWN0b3JfYmFzZQogICAgewogICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9BbGxvYzo6dGVtcGxhdGUgcmViaW5kPF9UcD46Om90aGVyIF9UcF9hbGxvY190eXBlOwoK
ICAgICAgc3RydWN0IF9WZWN0b3JfaW1wbAogICAgICA6IHB1YmxpYyBfVHBfYWxsb2NfdHlwZQog
ICAgICB7CiBfVHAqIF9NX3N0YXJ0OwogX1RwKiBfTV9maW5pc2g7CiBfVHAqIF9NX2VuZF9vZl9z
dG9yYWdlOwogX1ZlY3Rvcl9pbXBsKF9UcF9hbGxvY190eXBlIGNvbnN0JiBfX2EpCiA6IF9UcF9h
bGxvY190eXBlKF9fYSksIF9NX3N0YXJ0KDApLCBfTV9maW5pc2goMCksIF9NX2VuZF9vZl9zdG9y
YWdlKDApCiB7IH0KICAgICAgfTsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX0FsbG9jIGFs
bG9jYXRvcl90eXBlOwoKICAgICAgX1RwX2FsbG9jX3R5cGUmCiAgICAgIF9NX2dldF9UcF9hbGxv
Y2F0b3IoKQogICAgICB7IHJldHVybiAqc3RhdGljX2Nhc3Q8X1RwX2FsbG9jX3R5cGUqPigmdGhp
cy0+X01faW1wbCk7IH0KCiAgICAgIGNvbnN0IF9UcF9hbGxvY190eXBlJgogICAgICBfTV9nZXRf
VHBfYWxsb2NhdG9yKCkgY29uc3QKICAgICAgeyByZXR1cm4gKnN0YXRpY19jYXN0PGNvbnN0IF9U
cF9hbGxvY190eXBlKj4oJnRoaXMtPl9NX2ltcGwpOyB9CgogICAgICBhbGxvY2F0b3JfdHlwZQog
ICAgICBnZXRfYWxsb2NhdG9yKCkgY29uc3QKICAgICAgeyByZXR1cm4gYWxsb2NhdG9yX3R5cGUo
X01fZ2V0X1RwX2FsbG9jYXRvcigpKTsgfQoKICAgICAgX1ZlY3Rvcl9iYXNlKGNvbnN0IGFsbG9j
YXRvcl90eXBlJiBfX2EpCiAgICAgIDogX01faW1wbChfX2EpCiAgICAgIHsgfQoKICAgICAgX1Zl
Y3Rvcl9iYXNlKHNpemVfdCBfX24sIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiAgICAgIDog
X01faW1wbChfX2EpCiAgICAgIHsKICAgaWYgKF9fbikKICAgewogICAgIHRoaXMtPl9NX2ltcGwu
X01fc3RhcnQgPSB0aGlzLT5fTV9hbGxvY2F0ZShfX24pOwogICAgIHRoaXMtPl9NX2ltcGwuX01f
ZmluaXNoID0gdGhpcy0+X01faW1wbC5fTV9zdGFydDsKICAgICB0aGlzLT5fTV9pbXBsLl9NX2Vu
ZF9vZl9zdG9yYWdlID0gdGhpcy0+X01faW1wbC5fTV9zdGFydCArIF9fbjsKICAgfQogICAgICB9
CgogICAgICB+X1ZlY3Rvcl9iYXNlKCkKICAgICAgeyBfTV9kZWFsbG9jYXRlKHRoaXMtPl9NX2lt
cGwuX01fc3RhcnQsIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAgICAgICAtIHRo
aXMtPl9NX2ltcGwuX01fc3RhcnQpOyB9CgogICAgcHVibGljOgogICAgICBfVmVjdG9yX2ltcGwg
X01faW1wbDsKCiAgICAgIF9UcCoKICAgICAgX01fYWxsb2NhdGUoc2l6ZV90IF9fbikKICAgICAg
eyByZXR1cm4gX01faW1wbC5hbGxvY2F0ZShfX24pOyB9CgogICAgICB2b2lkCiAgICAgIF9NX2Rl
YWxsb2NhdGUoX1RwKiBfX3AsIHNpemVfdCBfX24pCiAgICAgIHsKIGlmIChfX3ApCiAgIF9NX2lt
cGwuZGVhbGxvY2F0ZShfX3AsIF9fbik7CiAgICAgIH0KICAgIH07CiMgMTYxICIvdXNyL2luY2x1
ZGUvYysrLzQuMi4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCB0eXBlbmFtZSBfQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxfVHA+ID4KICAgIGNsYXNzIHZlY3Rv
ciA6IHByb3RlY3RlZCBfVmVjdG9yX2Jhc2U8X1RwLCBfQWxsb2M+CiAgICB7CgogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIF9BbGxvYzo6dmFsdWVfdHlwZSBfQWxsb2NfdmFsdWVfdHlwZTsKICAgICAK
ICAgICAKCiAgICAgIHR5cGVkZWYgX1ZlY3Rvcl9iYXNlPF9UcCwgX0FsbG9jPiBfQmFzZTsKICAg
ICAgdHlwZWRlZiB2ZWN0b3I8X1RwLCBfQWxsb2M+IHZlY3Rvcl90eXBlOwogICAgICB0eXBlZGVm
IHR5cGVuYW1lIF9CYXNlOjpfVHBfYWxsb2NfdHlwZSBfVHBfYWxsb2NfdHlwZTsKCiAgICBwdWJs
aWM6CiAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X1RwX2FsbG9jX3R5cGU6OnBvaW50ZXIgcG9pbnRlcjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBf
VHBfYWxsb2NfdHlwZTo6Y29uc3RfcG9pbnRlciBjb25zdF9wb2ludGVyOwogICAgICB0eXBlZGVm
IHR5cGVuYW1lIF9UcF9hbGxvY190eXBlOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIF9UcF9hbGxvY190eXBlOjpjb25zdF9yZWZlcmVuY2UgY29uc3RfcmVmZXJl
bmNlOwogICAgICB0eXBlZGVmIF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8cG9pbnRlciwg
dmVjdG9yX3R5cGU+IGl0ZXJhdG9yOwogICAgICB0eXBlZGVmIF9fZ251X2N4eDo6X19ub3JtYWxf
aXRlcmF0b3I8Y29uc3RfcG9pbnRlciwgdmVjdG9yX3R5cGU+CiAgICAgIGNvbnN0X2l0ZXJhdG9y
OwogICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4gY29u
c3RfcmV2ZXJzZV9pdGVyYXRvcjsKICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8
aXRlcmF0b3I+IHJldmVyc2VfaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlw
ZTsKICAgICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVm
IF9BbGxvYyBhbGxvY2F0b3JfdHlwZTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIHVzaW5nIF9CYXNl
OjpfTV9hbGxvY2F0ZTsKICAgICAgdXNpbmcgX0Jhc2U6Ol9NX2RlYWxsb2NhdGU7CiAgICAgIHVz
aW5nIF9CYXNlOjpfTV9pbXBsOwogICAgICB1c2luZyBfQmFzZTo6X01fZ2V0X1RwX2FsbG9jYXRv
cjsKCiAgICBwdWJsaWM6CgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgdmVjdG9yKGNvbnN0IGFs
bG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQogICAgICA6IF9CYXNlKF9fYSkK
ICAgICAgeyB9CiMgMjEyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX3ZlY3Rvci5o
IiAzCiAgICAgIGV4cGxpY2l0CiAgICAgIHZlY3RvcihzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1
ZV90eXBlJiBfX3ZhbHVlID0gdmFsdWVfdHlwZSgpLAogICAgICBjb25zdCBhbGxvY2F0b3JfdHlw
ZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgICAgOiBfQmFzZShfX24sIF9fYSkKICAgICAg
ewogc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2EodGhpcy0+X01faW1wbC5fTV9zdGFydCwg
X19uLCBfX3ZhbHVlLAogICAgICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKIHRoaXMtPl9N
X2ltcGwuX01fZmluaXNoID0gdGhpcy0+X01faW1wbC5fTV9zdGFydCArIF9fbjsKICAgICAgfQoj
IDIzMSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICB2
ZWN0b3IoY29uc3QgdmVjdG9yJiBfX3gpCiAgICAgIDogX0Jhc2UoX194LnNpemUoKSwgX194Ll9N
X2dldF9UcF9hbGxvY2F0b3IoKSkKICAgICAgeyB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9CiAg
IHN0ZDo6X191bmluaXRpYWxpemVkX2NvcHlfYShfX3guYmVnaW4oKSwgX194LmVuZCgpLAogICAg
ICAgICAgdGhpcy0+X01faW1wbC5fTV9zdGFydCwKICAgICAgICAgIF9NX2dldF9UcF9hbGxvY2F0
b3IoKSk7CiAgICAgIH0KIyAyNTQgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfdmVj
dG9yLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICAgICAg
dmVjdG9yKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAg
ICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkKIDogX0Jh
c2UoX19hKQogICAgICAgIHsKCiAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpfX2lzX2ludGVnZXI8
X0lucHV0SXRlcmF0b3I+OjpfX3R5cGUgX0ludGVncmFsOwogICBfTV9pbml0aWFsaXplX2Rpc3Bh
dGNoKF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFsKCkpOwogfQoKCgoKCgoKICAgICAgfnZlY3Rv
cigpCiAgICAgIHsgc3RkOjpfRGVzdHJveSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LCB0aGlzLT5f
TV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOyB9CiMgMjgy
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHZlY3Rv
ciYKICAgICAgb3BlcmF0b3I9KGNvbnN0IHZlY3RvciYgX194KTsKIyAyOTUgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdm9pZAogICAgICBhc3NpZ24o
c2l6ZV90eXBlIF9fbiwgY29uc3QgdmFsdWVfdHlwZSYgX192YWwpCiAgICAgIHsgX01fZmlsbF9h
c3NpZ24oX19uLCBfX3ZhbCk7IH0KIyAzMTEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9z
dGxfdmVjdG9yLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAg
ICAgICAgdm9pZAogICAgICAgIGFzc2lnbihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyYXRvciBfX2xhc3QpCiAgICAgICAgewoKICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Ol9faXNf
aW50ZWdlcjxfSW5wdXRJdGVyYXRvcj46Ol9fdHlwZSBfSW50ZWdyYWw7CiAgIF9NX2Fzc2lnbl9k
aXNwYXRjaChfX2ZpcnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKIH0KCgogICAgICB1c2luZyBf
QmFzZTo6Z2V0X2FsbG9jYXRvcjsKCgoKCgoKCiAgICAgIGl0ZXJhdG9yCiAgICAgIGJlZ2luKCkK
ICAgICAgeyByZXR1cm4gaXRlcmF0b3IodGhpcy0+X01faW1wbC5fTV9zdGFydCk7IH0KCgoKCgoK
ICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgYmVnaW4oKSBjb25zdAogICAgICB7IHJldHVybiBj
b25zdF9pdGVyYXRvcih0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsgfQoKCgoKCgogICAgICBpdGVy
YXRvcgogICAgICBlbmQoKQogICAgICB7IHJldHVybiBpdGVyYXRvcih0aGlzLT5fTV9pbXBsLl9N
X2ZpbmlzaCk7IH0KCgoKCgoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgZW5kKCkgY29uc3QK
ICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcy0+X01faW1wbC5fTV9maW5pc2gpOyB9
CgoKCgoKCiAgICAgIHJldmVyc2VfaXRlcmF0b3IKICAgICAgcmJlZ2luKCkKICAgICAgeyByZXR1
cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KCgoKCgoKICAgICAgY29uc3RfcmV2ZXJzZV9p
dGVyYXRvcgogICAgICByYmVnaW4oKSBjb25zdAogICAgICB7IHJldHVybiBjb25zdF9yZXZlcnNl
X2l0ZXJhdG9yKGVuZCgpKTsgfQoKCgoKCgogICAgICByZXZlcnNlX2l0ZXJhdG9yCiAgICAgIHJl
bmQoKQogICAgICB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CgoKCgoKCiAg
ICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IKICAgICAgcmVuZCgpIGNvbnN0CiAgICAgIHsgcmV0
dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KCgoKICAgICAgc2l6ZV90eXBl
CiAgICAgIHNpemUoKSBjb25zdAogICAgICB7IHJldHVybiBzaXplX3R5cGUodGhpcy0+X01faW1w
bC5fTV9maW5pc2ggLSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsgfQoKCiAgICAgIHNpemVfdHlw
ZQogICAgICBtYXhfc2l6ZSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2dldF9UcF9hbGxvY2F0
b3IoKS5tYXhfc2l6ZSgpOyB9CiMgNDE4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3Rs
X3ZlY3Rvci5oIiAzCiAgICAgIHZvaWQKICAgICAgcmVzaXplKHNpemVfdHlwZSBfX25ld19zaXpl
LCB2YWx1ZV90eXBlIF9feCA9IHZhbHVlX3R5cGUoKSkKICAgICAgewogaWYgKF9fbmV3X3NpemUg
PCBzaXplKCkpCiAgIF9NX2VyYXNlX2F0X2VuZCh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ICsgX19u
ZXdfc2l6ZSk7CiBlbHNlCiAgIGluc2VydChlbmQoKSwgX19uZXdfc2l6ZSAtIHNpemUoKSwgX194
KTsKICAgICAgfQoKCgoKCiAgICAgIHNpemVfdHlwZQogICAgICBjYXBhY2l0eSgpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuIHNpemVfdHlwZSh0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlCiAg
ICAtIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOyB9CgoKCgoKICAgICAgYm9vbAogICAgICBlbXB0
eSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0KIyA0NjEgIi91c3Iv
aW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdm9pZAogICAgICBy
ZXNlcnZlKHNpemVfdHlwZSBfX24pOwojIDQ3NiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRz
L3N0bF92ZWN0b3IuaCIgMwogICAgICByZWZlcmVuY2UKICAgICAgb3BlcmF0b3JbXShzaXplX3R5
cGUgX19uKQogICAgICB7IHJldHVybiAqKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgKyBfX24pOyB9
CiMgNDkxICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAg
IGNvbnN0X3JlZmVyZW5jZQogICAgICBvcGVyYXRvcltdKHNpemVfdHlwZSBfX24pIGNvbnN0CiAg
ICAgIHsgcmV0dXJuICoodGhpcy0+X01faW1wbC5fTV9zdGFydCArIF9fbik7IH0KCiAgICBwcm90
ZWN0ZWQ6CgogICAgICB2b2lkCiAgICAgIF9NX3JhbmdlX2NoZWNrKHNpemVfdHlwZSBfX24pIGNv
bnN0CiAgICAgIHsKIGlmIChfX24gPj0gdGhpcy0+c2l6ZSgpKQogICBfX3Rocm93X291dF9vZl9y
YW5nZSgoInZlY3Rvcjo6X01fcmFuZ2VfY2hlY2siKSk7CiAgICAgIH0KCiAgICBwdWJsaWM6CiMg
NTE2ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHJl
ZmVyZW5jZQogICAgICBhdChzaXplX3R5cGUgX19uKQogICAgICB7CiBfTV9yYW5nZV9jaGVjayhf
X24pOwogcmV0dXJuICgqdGhpcylbX19uXTsKICAgICAgfQojIDUzNCAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICBjb25zdF9yZWZlcmVuY2UKICAgICAg
YXQoc2l6ZV90eXBlIF9fbikgY29uc3QKICAgICAgewogX01fcmFuZ2VfY2hlY2soX19uKTsKIHJl
dHVybiAoKnRoaXMpW19fbl07CiAgICAgIH0KCgoKCgogICAgICByZWZlcmVuY2UKICAgICAgZnJv
bnQoKQogICAgICB7IHJldHVybiAqYmVnaW4oKTsgfQoKCgoKCiAgICAgIGNvbnN0X3JlZmVyZW5j
ZQogICAgICBmcm9udCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuICpiZWdpbigpOyB9CgoKCgoKICAg
ICAgcmVmZXJlbmNlCiAgICAgIGJhY2soKQogICAgICB7IHJldHVybiAqKGVuZCgpIC0gMSk7IH0K
CgoKCgogICAgICBjb25zdF9yZWZlcmVuY2UKICAgICAgYmFjaygpIGNvbnN0CiAgICAgIHsgcmV0
dXJuICooZW5kKCkgLSAxKTsgfQojIDU4MCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0
bF92ZWN0b3IuaCIgMwogICAgICBwb2ludGVyCiAgICAgIGRhdGEoKQogICAgICB7IHJldHVybiBw
b2ludGVyKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOyB9CgogICAgICBjb25zdF9wb2ludGVyCiAg
ICAgIGRhdGEoKSBjb25zdAogICAgICB7IHJldHVybiBjb25zdF9wb2ludGVyKHRoaXMtPl9NX2lt
cGwuX01fc3RhcnQpOyB9CiMgNTk5ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX3Zl
Y3Rvci5oIiAzCiAgICAgIHZvaWQKICAgICAgcHVzaF9iYWNrKGNvbnN0IHZhbHVlX3R5cGUmIF9f
eCkKICAgICAgewogaWYgKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoICE9IHRoaXMtPl9NX2ltcGwu
X01fZW5kX29mX3N0b3JhZ2UpCiAgIHsKICAgICB0aGlzLT5fTV9pbXBsLmNvbnN0cnVjdCh0aGlz
LT5fTV9pbXBsLl9NX2ZpbmlzaCwgX194KTsKICAgICArK3RoaXMtPl9NX2ltcGwuX01fZmluaXNo
OwogICB9CiBlbHNlCiAgIF9NX2luc2VydF9hdXgoZW5kKCksIF9feCk7CiAgICAgIH0KIyA2MjAg
Ii91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdm9pZAog
ICAgICBwb3BfYmFjaygpCiAgICAgIHsKIC0tdGhpcy0+X01faW1wbC5fTV9maW5pc2g7CiB0aGlz
LT5fTV9pbXBsLmRlc3Ryb3kodGhpcy0+X01faW1wbC5fTV9maW5pc2gpOwogICAgICB9CiMgNjM4
ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIGl0ZXJh
dG9yCiAgICAgIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlJiBf
X3gpOwojIDY1NCAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3N0bF92ZWN0b3IuaCIgMwog
ICAgICB2b2lkCiAgICAgIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBzaXplX3R5cGUgX19u
LCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpCiAgICAgIHsgX01fZmlsbF9pbnNlcnQoX19wb3NpdGlv
biwgX19uLCBfX3gpOyB9CiMgNjcyICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX3Zl
Y3Rvci5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogICAgICAg
IHZvaWQKICAgICAgICBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwgX0lucHV0SXRlcmF0b3Ig
X19maXJzdCwKICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2xhc3QpCiAgICAgICAgewoKICAgdHlw
ZWRlZiB0eXBlbmFtZSBzdGQ6Ol9faXNfaW50ZWdlcjxfSW5wdXRJdGVyYXRvcj46Ol9fdHlwZSBf
SW50ZWdyYWw7CiAgIF9NX2luc2VydF9kaXNwYXRjaChfX3Bvc2l0aW9uLCBfX2ZpcnN0LCBfX2xh
c3QsIF9JbnRlZ3JhbCgpKTsKIH0KIyA2OTcgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy9z
dGxfdmVjdG9yLmgiIDMKICAgICAgaXRlcmF0b3IKICAgICAgZXJhc2UoaXRlcmF0b3IgX19wb3Np
dGlvbik7CiMgNzE4ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAz
CiAgICAgIGl0ZXJhdG9yCiAgICAgIGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9f
bGFzdCk7CiMgNzMwICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAz
CiAgICAgIHZvaWQKICAgICAgc3dhcCh2ZWN0b3ImIF9feCkKICAgICAgewogc3RkOjpzd2FwKHRo
aXMtPl9NX2ltcGwuX01fc3RhcnQsIF9feC5fTV9pbXBsLl9NX3N0YXJ0KTsKIHN0ZDo6c3dhcCh0
aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwgX194Ll9NX2ltcGwuX01fZmluaXNoKTsKIHN0ZDo6c3dh
cCh0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlLAogICAgX194Ll9NX2ltcGwuX01fZW5k
X29mX3N0b3JhZ2UpOwoKCgogc3RkOjpfX2FsbG9jX3N3YXA8X1RwX2FsbG9jX3R5cGU+OjpfU19k
b19pdChfTV9nZXRfVHBfYWxsb2NhdG9yKCksCiAgICAgICAgICBfX3guX01fZ2V0X1RwX2FsbG9j
YXRvcigpKTsKICAgICAgfQoKCgoKCgoKICAgICAgdm9pZAogICAgICBjbGVhcigpCiAgICAgIHsg
X01fZXJhc2VfYXRfZW5kKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOyB9CgogICAgcHJvdGVjdGVk
OgoKCgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgICAg
IHBvaW50ZXIKICAgICAgICBfTV9hbGxvY2F0ZV9hbmRfY29weShzaXplX3R5cGUgX19uLAogICAg
ICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiAg
ICAgICAgewogICBwb2ludGVyIF9fcmVzdWx0ID0gdGhpcy0+X01fYWxsb2NhdGUoX19uKTsKICAg
dHJ5CiAgICAgewogICAgICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKF9fZmlyc3QsIF9f
bGFzdCwgX19yZXN1bHQsCiAgICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgICAgcmV0
dXJuIF9fcmVzdWx0OwogICAgIH0KICAgY2F0Y2goLi4uKQogICAgIHsKICAgICAgIF9NX2RlYWxs
b2NhdGUoX19yZXN1bHQsIF9fbik7CiAgICAgICB0aHJvdzsKICAgICB9CiB9CgoKCgoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ludGVnZXI+CiAgICAgICAgdm9pZAogICAgICAgIF9NX2luaXRp
YWxpemVfZGlzcGF0Y2goX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbHVlLCBfX3RydWVfdHlw
ZSkKICAgICAgICB7CiAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgPSBfTV9hbGxvY2F0ZShfX24p
OwogICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlID0gdGhpcy0+X01faW1wbC5fTV9z
dGFydCArIF9fbjsKICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2EodGhpcy0+X01faW1w
bC5fTV9zdGFydCwgX19uLCBfX3ZhbHVlLAogICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAg
IHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFn
ZTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgICAgICB2
b2lkCiAgICAgICAgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0
LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICBfX2ZhbHNlX3R5cGUpCiAgICAgICAg
ewogICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9y
Pjo6CiAgICAgaXRlcmF0b3JfY2F0ZWdvcnkgX0l0ZXJDYXRlZ29yeTsKICAgX01fcmFuZ2VfaW5p
dGlhbGl6ZShfX2ZpcnN0LCBfX2xhc3QsIF9JdGVyQ2F0ZWdvcnkoKSk7CiB9CgoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICAgICAgdm9pZAogICAgICAgIF9NX3Jh
bmdlX2luaXRpYWxpemUoX0lucHV0SXRlcmF0b3IgX19maXJzdCwKICAgICAgIF9JbnB1dEl0ZXJh
dG9yIF9fbGFzdCwgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcpCiAgICAgICAgewogICBmb3IgKDsg
X19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgICBwdXNoX2JhY2soKl9fZmlyc3QpOwog
fQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgICAgdm9p
ZAogICAgICAgIF9NX3JhbmdlX2luaXRpYWxpemUoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LAog
ICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcp
CiAgICAgICAgewogICBjb25zdCBzaXplX3R5cGUgX19uID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0
LCBfX2xhc3QpOwogICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ID0gdGhpcy0+X01fYWxsb2NhdGUo
X19uKTsKICAgdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSA9IHRoaXMtPl9NX2ltcGwu
X01fc3RhcnQgKyBfX247CiAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0KICAgICBzdGQ6Ol9f
dW5pbml0aWFsaXplZF9jb3B5X2EoX19maXJzdCwgX19sYXN0LAogICAgIHRoaXMtPl9NX2ltcGwu
X01fc3RhcnQsCiAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKIH0KCgoKCgoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ludGVnZXI+CiAgICAgICAgdm9pZAogICAgICAgIF9NX2Fzc2lnbl9k
aXNwYXRjaChfSW50ZWdlciBfX24sIF9JbnRlZ2VyIF9fdmFsLCBfX3RydWVfdHlwZSkKICAgICAg
ICB7CiAgIF9NX2ZpbGxfYXNzaWduKHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX19uKSwKICAgIHN0
YXRpY19jYXN0PHZhbHVlX3R5cGU+KF9fdmFsKSk7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lucHV0SXRlcmF0b3I+CiAgICAgICAgdm9pZAogICAgICAgIF9NX2Fzc2lnbl9kaXNwYXRj
aChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgIF9f
ZmFsc2VfdHlwZSkKICAgICAgICB7CiAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90
cmFpdHM8X0lucHV0SXRlcmF0b3I+OjoKICAgICBpdGVyYXRvcl9jYXRlZ29yeSBfSXRlckNhdGVn
b3J5OwogICBfTV9hc3NpZ25fYXV4KF9fZmlyc3QsIF9fbGFzdCwgX0l0ZXJDYXRlZ29yeSgpKTsK
IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgICAgICB2b2lk
CiAgICAgICAgX01fYXNzaWduX2F1eChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVy
YXRvciBfX2xhc3QsCiAgICAgICAgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcpOwoKCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgICAgdm9pZAogICAgICAgIF9N
X2Fzc2lnbl9hdXgoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9f
bGFzdCwKICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKTsKCgoKICAgICAgdm9pZAog
ICAgICBfTV9maWxsX2Fzc2lnbihzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3Zh
bCk7CgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVnZXI+CiAgICAgICAgdm9pZAog
ICAgICAgIF9NX2luc2VydF9kaXNwYXRjaChpdGVyYXRvciBfX3BvcywgX0ludGVnZXIgX19uLCBf
SW50ZWdlciBfX3ZhbCwKICAgICAgX190cnVlX3R5cGUpCiAgICAgICAgewogICBfTV9maWxsX2lu
c2VydChfX3Bvcywgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfX24pLAogICAgc3RhdGljX2Nhc3Q8
dmFsdWVfdHlwZT4oX192YWwpKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJ
dGVyYXRvcj4KICAgICAgICB2b2lkCiAgICAgICAgX01faW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9y
IF9fcG9zLCBfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LAogICAgICBfSW5wdXRJdGVyYXRvciBfX2xh
c3QsIF9fZmFsc2VfdHlwZSkKICAgICAgICB7CiAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVy
YXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3I+OjoKICAgICBpdGVyYXRvcl9jYXRlZ29yeSBfSXRl
ckNhdGVnb3J5OwogICBfTV9yYW5nZV9pbnNlcnQoX19wb3MsIF9fZmlyc3QsIF9fbGFzdCwgX0l0
ZXJDYXRlZ29yeSgpKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRv
cj4KICAgICAgICB2b2lkCiAgICAgICAgX01fcmFuZ2VfaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zLCBf
SW5wdXRJdGVyYXRvciBfX2ZpcnN0LAogICBfSW5wdXRJdGVyYXRvciBfX2xhc3QsIHN0ZDo6aW5w
dXRfaXRlcmF0b3JfdGFnKTsKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJh
dG9yPgogICAgICAgIHZvaWQKICAgICAgICBfTV9yYW5nZV9pbnNlcnQoaXRlcmF0b3IgX19wb3Ms
IF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwKICAgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsIHN0
ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpOwoKCgogICAgICB2b2lkCiAgICAgIF9NX2ZpbGxfaW5z
ZXJ0KGl0ZXJhdG9yIF9fcG9zLCBzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gp
OwoKCiAgICAgIHZvaWQKICAgICAgX01faW5zZXJ0X2F1eChpdGVyYXRvciBfX3Bvc2l0aW9uLCBj
b25zdCB2YWx1ZV90eXBlJiBfX3gpOwoKCgoKCiAgICAgIHZvaWQKICAgICAgX01fZXJhc2VfYXRf
ZW5kKHBvaW50ZXIgX19wb3MpCiAgICAgIHsKIHN0ZDo6X0Rlc3Ryb3koX19wb3MsIHRoaXMtPl9N
X2ltcGwuX01fZmluaXNoLCBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogdGhpcy0+X01faW1wbC5f
TV9maW5pc2ggPSBfX3BvczsKICAgICAgfQogICAgfTsKIyA5NDAgIi91c3IvaW5jbHVkZS9jKysv
NC4yLjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVu
YW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IHZlY3Rvcjxf
VHAsIF9BbGxvYz4mIF9feCwgY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX195KQogICAgeyBy
ZXR1cm4gKF9feC5zaXplKCkgPT0gX195LnNpemUoKQogICAgICAgJiYgc3RkOjplcXVhbChfX3gu
YmVnaW4oKSwgX194LmVuZCgpLCBfX3kuYmVnaW4oKSkpOyB9CiMgOTU3ICIvdXNyL2luY2x1ZGUv
YysrLzQuMi4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHZlY3Rv
cjxfVHAsIF9BbGxvYz4mIF9feCwgY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX195KQogICAg
eyByZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZShfX3guYmVnaW4oKSwgX194LmVu
ZCgpLAogICAgICAgX195LmJlZ2luKCksIF9feS5lbmQoKSk7IH0KCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0o
Y29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX194LCBjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+
JiBfX3kpCiAgICB7IHJldHVybiAhKF9feCA9PSBfX3kpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29u
c3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX194LCBjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBf
X3kpCiAgICB7IHJldHVybiBfX3kgPCBfX3g7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwg
dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3QgdmVj
dG9yPF9UcCwgX0FsbG9jPiYgX194LCBjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3kpCiAg
ICB7IHJldHVybiAhKF9feSA8IF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw
ZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPj0oY29uc3QgdmVjdG9y
PF9UcCwgX0FsbG9jPiYgX194LCBjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3kpCiAgICB7
IHJldHVybiAhKF9feCA8IF9feSk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5h
bWUgX0FsbG9jPgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAodmVjdG9yPF9UcCwgX0FsbG9jPiYg
X194LCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3kpCiAgICB7IF9feC5zd2FwKF9feSk7IH0KCn0K
IyA3MSAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS92ZWN0b3IiIDIgMwojIDEgIi91c3IvaW5jbHVk
ZS9jKysvNC4yLjEvYml0cy9zdGxfYnZlY3Rvci5oIiAxIDMKIyA2MyAiL3Vzci9pbmNsdWRlL2Mr
Ky80LjIuMS9iaXRzL3N0bF9idmVjdG9yLmgiIDMKI2RlZmluZSBfQlZFQ1RPUl9IIDEKCm5hbWVz
cGFjZSBzdGQgewoKICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX0JpdF90eXBlOwogIGVudW0geyBf
U193b3JkX2JpdCA9IGludCg4ICogc2l6ZW9mKF9CaXRfdHlwZSkpIH07CgogIHN0cnVjdCBfQml0
X3JlZmVyZW5jZQogIHsKICAgIF9CaXRfdHlwZSAqIF9NX3A7CiAgICBfQml0X3R5cGUgX01fbWFz
azsKCiAgICBfQml0X3JlZmVyZW5jZShfQml0X3R5cGUgKiBfX3gsIF9CaXRfdHlwZSBfX3kpCiAg
ICA6IF9NX3AoX194KSwgX01fbWFzayhfX3kpIHsgfQoKICAgIF9CaXRfcmVmZXJlbmNlKCkgOiBf
TV9wKDApLCBfTV9tYXNrKDApIHsgfQoKICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgeyBy
ZXR1cm4gISEoKl9NX3AgJiBfTV9tYXNrKTsgfQoKICAgIF9CaXRfcmVmZXJlbmNlJgogICAgb3Bl
cmF0b3I9KGJvb2wgX194KQogICAgewogICAgICBpZiAoX194KQogKl9NX3AgfD0gX01fbWFzazsK
ICAgICAgZWxzZQogKl9NX3AgJj0gfl9NX21hc2s7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0K
CiAgICBfQml0X3JlZmVyZW5jZSYKICAgIG9wZXJhdG9yPShjb25zdCBfQml0X3JlZmVyZW5jZSYg
X194KQogICAgeyByZXR1cm4gKnRoaXMgPSBib29sKF9feCk7IH0KCiAgICBib29sCiAgICBvcGVy
YXRvcj09KGNvbnN0IF9CaXRfcmVmZXJlbmNlJiBfX3gpIGNvbnN0CiAgICB7IHJldHVybiBib29s
KCp0aGlzKSA9PSBib29sKF9feCk7IH0KCiAgICBib29sCiAgICBvcGVyYXRvcjwoY29uc3QgX0Jp
dF9yZWZlcmVuY2UmIF9feCkgY29uc3QKICAgIHsgcmV0dXJuICFib29sKCp0aGlzKSAmJiBib29s
KF9feCk7IH0KCiAgICB2b2lkCiAgICBmbGlwKCkKICAgIHsgKl9NX3AgXj0gX01fbWFzazsgfQog
IH07CgogIHN0cnVjdCBfQml0X2l0ZXJhdG9yX2Jhc2UKICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9y
PHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIGJvb2w+CiAgewogICAgX0JpdF90eXBl
ICogX01fcDsKICAgIHVuc2lnbmVkIGludCBfTV9vZmZzZXQ7CgogICAgX0JpdF9pdGVyYXRvcl9i
YXNlKF9CaXRfdHlwZSAqIF9feCwgdW5zaWduZWQgaW50IF9feSkKICAgIDogX01fcChfX3gpLCBf
TV9vZmZzZXQoX195KSB7IH0KCiAgICB2b2lkCiAgICBfTV9idW1wX3VwKCkKICAgIHsKICAgICAg
aWYgKF9NX29mZnNldCsrID09IGludChfU193b3JkX2JpdCkgLSAxKQogewogICBfTV9vZmZzZXQg
PSAwOwogICArK19NX3A7CiB9CiAgICB9CgogICAgdm9pZAogICAgX01fYnVtcF9kb3duKCkKICAg
IHsKICAgICAgaWYgKF9NX29mZnNldC0tID09IDApCiB7CiAgIF9NX29mZnNldCA9IGludChfU193
b3JkX2JpdCkgLSAxOwogICAtLV9NX3A7CiB9CiAgICB9CgogICAgdm9pZAogICAgX01faW5jcihw
dHJkaWZmX3QgX19pKQogICAgewogICAgICBkaWZmZXJlbmNlX3R5cGUgX19uID0gX19pICsgX01f
b2Zmc2V0OwogICAgICBfTV9wICs9IF9fbiAvIGludChfU193b3JkX2JpdCk7CiAgICAgIF9fbiA9
IF9fbiAlIGludChfU193b3JkX2JpdCk7CiAgICAgIGlmIChfX24gPCAwKQogewogICBfX24gKz0g
aW50KF9TX3dvcmRfYml0KTsKICAgLS1fTV9wOwogfQogICAgICBfTV9vZmZzZXQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQ+KF9fbik7CiAgICB9CgogICAgYm9vbAogICAgb3BlcmF0b3I9PShj
b25zdCBfQml0X2l0ZXJhdG9yX2Jhc2UmIF9faSkgY29uc3QKICAgIHsgcmV0dXJuIF9NX3AgPT0g
X19pLl9NX3AgJiYgX01fb2Zmc2V0ID09IF9faS5fTV9vZmZzZXQ7IH0KCiAgICBib29sCiAgICBv
cGVyYXRvcjwoY29uc3QgX0JpdF9pdGVyYXRvcl9iYXNlJiBfX2kpIGNvbnN0CiAgICB7CiAgICAg
IHJldHVybiBfTV9wIDwgX19pLl9NX3AKICAgICAgfHwgKF9NX3AgPT0gX19pLl9NX3AgJiYgX01f
b2Zmc2V0IDwgX19pLl9NX29mZnNldCk7CiAgICB9CgogICAgYm9vbAogICAgb3BlcmF0b3IhPShj
b25zdCBfQml0X2l0ZXJhdG9yX2Jhc2UmIF9faSkgY29uc3QKICAgIHsgcmV0dXJuICEoKnRoaXMg
PT0gX19pKTsgfQoKICAgIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBfQml0X2l0ZXJhdG9yX2Jh
c2UmIF9faSkgY29uc3QKICAgIHsgcmV0dXJuIF9faSA8ICp0aGlzOyB9CgogICAgYm9vbAogICAg
b3BlcmF0b3I8PShjb25zdCBfQml0X2l0ZXJhdG9yX2Jhc2UmIF9faSkgY29uc3QKICAgIHsgcmV0
dXJuICEoX19pIDwgKnRoaXMpOyB9CgogICAgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCBfQml0
X2l0ZXJhdG9yX2Jhc2UmIF9faSkgY29uc3QKICAgIHsgcmV0dXJuICEoKnRoaXMgPCBfX2kpOyB9
CiAgfTsKCiAgaW5saW5lIHB0cmRpZmZfdAogIG9wZXJhdG9yLShjb25zdCBfQml0X2l0ZXJhdG9y
X2Jhc2UmIF9feCwgY29uc3QgX0JpdF9pdGVyYXRvcl9iYXNlJiBfX3kpCiAgewogICAgcmV0dXJu
IChpbnQoX1Nfd29yZF9iaXQpICogKF9feC5fTV9wIC0gX195Ll9NX3ApCiAgICAgKyBfX3guX01f
b2Zmc2V0IC0gX195Ll9NX29mZnNldCk7CiAgfQoKICBzdHJ1Y3QgX0JpdF9pdGVyYXRvciA6IHB1
YmxpYyBfQml0X2l0ZXJhdG9yX2Jhc2UKICB7CiAgICB0eXBlZGVmIF9CaXRfcmVmZXJlbmNlIHJl
ZmVyZW5jZTsKICAgIHR5cGVkZWYgX0JpdF9yZWZlcmVuY2UqIHBvaW50ZXI7CiAgICB0eXBlZGVm
IF9CaXRfaXRlcmF0b3IgaXRlcmF0b3I7CgogICAgX0JpdF9pdGVyYXRvcigpIDogX0JpdF9pdGVy
YXRvcl9iYXNlKDAsIDApIHsgfQoKICAgIF9CaXRfaXRlcmF0b3IoX0JpdF90eXBlICogX194LCB1
bnNpZ25lZCBpbnQgX195KQogICAgOiBfQml0X2l0ZXJhdG9yX2Jhc2UoX194LCBfX3kpIHsgfQoK
ICAgIHJlZmVyZW5jZQogICAgb3BlcmF0b3IqKCkgY29uc3QKICAgIHsgcmV0dXJuIHJlZmVyZW5j
ZShfTV9wLCAxVUwgPDwgX01fb2Zmc2V0KTsgfQoKICAgIGl0ZXJhdG9yJgogICAgb3BlcmF0b3Ir
KygpCiAgICB7CiAgICAgIF9NX2J1bXBfdXAoKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoK
ICAgIGl0ZXJhdG9yCiAgICBvcGVyYXRvcisrKGludCkKICAgIHsKICAgICAgaXRlcmF0b3IgX190
bXAgPSAqdGhpczsKICAgICAgX01fYnVtcF91cCgpOwogICAgICByZXR1cm4gX190bXA7CiAgICB9
CgogICAgaXRlcmF0b3ImCiAgICBvcGVyYXRvci0tKCkKICAgIHsKICAgICAgX01fYnVtcF9kb3du
KCk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBpdGVyYXRvcgogICAgb3BlcmF0b3It
LShpbnQpCiAgICB7CiAgICAgIGl0ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiAgICAgIF9NX2J1bXBf
ZG93bigpOwogICAgICByZXR1cm4gX190bXA7CiAgICB9CgogICAgaXRlcmF0b3ImCiAgICBvcGVy
YXRvcis9KGRpZmZlcmVuY2VfdHlwZSBfX2kpCiAgICB7CiAgICAgIF9NX2luY3IoX19pKTsKICAg
ICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIGl0ZXJhdG9yJgogICAgb3BlcmF0b3ItPShkaWZm
ZXJlbmNlX3R5cGUgX19pKQogICAgewogICAgICAqdGhpcyArPSAtX19pOwogICAgICByZXR1cm4g
KnRoaXM7CiAgICB9CgogICAgaXRlcmF0b3IKICAgIG9wZXJhdG9yKyhkaWZmZXJlbmNlX3R5cGUg
X19pKSBjb25zdAogICAgewogICAgICBpdGVyYXRvciBfX3RtcCA9ICp0aGlzOwogICAgICByZXR1
cm4gX190bXAgKz0gX19pOwogICAgfQoKICAgIGl0ZXJhdG9yCiAgICBvcGVyYXRvci0oZGlmZmVy
ZW5jZV90eXBlIF9faSkgY29uc3QKICAgIHsKICAgICAgaXRlcmF0b3IgX190bXAgPSAqdGhpczsK
ICAgICAgcmV0dXJuIF9fdG1wIC09IF9faTsKICAgIH0KCiAgICByZWZlcmVuY2UKICAgIG9wZXJh
dG9yW10oZGlmZmVyZW5jZV90eXBlIF9faSkgY29uc3QKICAgIHsgcmV0dXJuICooKnRoaXMgKyBf
X2kpOyB9CiAgfTsKCiAgaW5saW5lIF9CaXRfaXRlcmF0b3IKICBvcGVyYXRvcisocHRyZGlmZl90
IF9fbiwgY29uc3QgX0JpdF9pdGVyYXRvciYgX194KQogIHsgcmV0dXJuIF9feCArIF9fbjsgfQoK
ICBzdHJ1Y3QgX0JpdF9jb25zdF9pdGVyYXRvciA6IHB1YmxpYyBfQml0X2l0ZXJhdG9yX2Jhc2UK
ICB7CiAgICB0eXBlZGVmIGJvb2wgcmVmZXJlbmNlOwogICAgdHlwZWRlZiBib29sIGNvbnN0X3Jl
ZmVyZW5jZTsKICAgIHR5cGVkZWYgY29uc3QgYm9vbCogcG9pbnRlcjsKICAgIHR5cGVkZWYgX0Jp
dF9jb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKCiAgICBfQml0X2NvbnN0X2l0ZXJhdG9y
KCkgOiBfQml0X2l0ZXJhdG9yX2Jhc2UoMCwgMCkgeyB9CgogICAgX0JpdF9jb25zdF9pdGVyYXRv
cihfQml0X3R5cGUgKiBfX3gsIHVuc2lnbmVkIGludCBfX3kpCiAgICA6IF9CaXRfaXRlcmF0b3Jf
YmFzZShfX3gsIF9feSkgeyB9CgogICAgX0JpdF9jb25zdF9pdGVyYXRvcihjb25zdCBfQml0X2l0
ZXJhdG9yJiBfX3gpCiAgICA6IF9CaXRfaXRlcmF0b3JfYmFzZShfX3guX01fcCwgX194Ll9NX29m
ZnNldCkgeyB9CgogICAgY29uc3RfcmVmZXJlbmNlCiAgICBvcGVyYXRvciooKSBjb25zdAogICAg
eyByZXR1cm4gX0JpdF9yZWZlcmVuY2UoX01fcCwgMVVMIDw8IF9NX29mZnNldCk7IH0KCiAgICBj
b25zdF9pdGVyYXRvciYKICAgIG9wZXJhdG9yKysoKQogICAgewogICAgICBfTV9idW1wX3VwKCk7
CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBjb25zdF9pdGVyYXRvcgogICAgb3BlcmF0
b3IrKyhpbnQpCiAgICB7CiAgICAgIGNvbnN0X2l0ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiAgICAg
IF9NX2J1bXBfdXAoKTsKICAgICAgcmV0dXJuIF9fdG1wOwogICAgfQoKICAgIGNvbnN0X2l0ZXJh
dG9yJgogICAgb3BlcmF0b3ItLSgpCiAgICB7CiAgICAgIF9NX2J1bXBfZG93bigpOwogICAgICBy
ZXR1cm4gKnRoaXM7CiAgICB9CgogICAgY29uc3RfaXRlcmF0b3IKICAgIG9wZXJhdG9yLS0oaW50
KQogICAgewogICAgICBjb25zdF9pdGVyYXRvciBfX3RtcCA9ICp0aGlzOwogICAgICBfTV9idW1w
X2Rvd24oKTsKICAgICAgcmV0dXJuIF9fdG1wOwogICAgfQoKICAgIGNvbnN0X2l0ZXJhdG9yJgog
ICAgb3BlcmF0b3IrPShkaWZmZXJlbmNlX3R5cGUgX19pKQogICAgewogICAgICBfTV9pbmNyKF9f
aSk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBjb25zdF9pdGVyYXRvciYKICAgIG9w
ZXJhdG9yLT0oZGlmZmVyZW5jZV90eXBlIF9faSkKICAgIHsKICAgICAgKnRoaXMgKz0gLV9faTsK
ICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIGNvbnN0X2l0ZXJhdG9yCiAgICBvcGVyYXRv
cisoZGlmZmVyZW5jZV90eXBlIF9faSkgY29uc3QKICAgIHsKICAgICAgY29uc3RfaXRlcmF0b3Ig
X190bXAgPSAqdGhpczsKICAgICAgcmV0dXJuIF9fdG1wICs9IF9faTsKICAgIH0KCiAgICBjb25z
dF9pdGVyYXRvcgogICAgb3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlwZSBfX2kpIGNvbnN0CiAgICB7
CiAgICAgIGNvbnN0X2l0ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiAgICAgIHJldHVybiBfX3RtcCAt
PSBfX2k7CiAgICB9CgogICAgY29uc3RfcmVmZXJlbmNlCiAgICBvcGVyYXRvcltdKGRpZmZlcmVu
Y2VfdHlwZSBfX2kpIGNvbnN0CiAgICB7IHJldHVybiAqKCp0aGlzICsgX19pKTsgfQogIH07Cgog
IGlubGluZSBfQml0X2NvbnN0X2l0ZXJhdG9yCiAgb3BlcmF0b3IrKHB0cmRpZmZfdCBfX24sIGNv
bnN0IF9CaXRfY29uc3RfaXRlcmF0b3ImIF9feCkKICB7IHJldHVybiBfX3ggKyBfX247IH0KCiAg
aW5saW5lIHZvaWQKICBfX2ZpbGxfYnZlY3RvcihfQml0X2l0ZXJhdG9yIF9fZmlyc3QsIF9CaXRf
aXRlcmF0b3IgX19sYXN0LCBib29sIF9feCkKICB7CiAgICBmb3IgKDsgX19maXJzdCAhPSBfX2xh
c3Q7ICsrX19maXJzdCkKICAgICAgKl9fZmlyc3QgPSBfX3g7CiAgfQoKICBpbmxpbmUgdm9pZAog
IGZpbGwoX0JpdF9pdGVyYXRvciBfX2ZpcnN0LCBfQml0X2l0ZXJhdG9yIF9fbGFzdCwgY29uc3Qg
Ym9vbCYgX194KQogIHsKICAgIGlmIChfX2ZpcnN0Ll9NX3AgIT0gX19sYXN0Ll9NX3ApCiAgICAg
IHsKIHN0ZDo6ZmlsbChfX2ZpcnN0Ll9NX3AgKyAxLCBfX2xhc3QuX01fcCwgX194ID8gfjAgOiAw
KTsKIF9fZmlsbF9idmVjdG9yKF9fZmlyc3QsIF9CaXRfaXRlcmF0b3IoX19maXJzdC5fTV9wICsg
MSwgMCksIF9feCk7CiBfX2ZpbGxfYnZlY3RvcihfQml0X2l0ZXJhdG9yKF9fbGFzdC5fTV9wLCAw
KSwgX19sYXN0LCBfX3gpOwogICAgICB9CiAgICBlbHNlCiAgICAgIF9fZmlsbF9idmVjdG9yKF9f
Zmlyc3QsIF9fbGFzdCwgX194KTsKICB9CgogIHRlbXBsYXRlPGNsYXNzIF9BbGxvYz4KICAgIHN0
cnVjdCBfQnZlY3Rvcl9iYXNlCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjp0
ZW1wbGF0ZSByZWJpbmQ8X0JpdF90eXBlPjo6b3RoZXIKICAgICAgICBfQml0X2FsbG9jX3R5cGU7
CgogICAgICBzdHJ1Y3QgX0J2ZWN0b3JfaW1wbAogICAgICA6IHB1YmxpYyBfQml0X2FsbG9jX3R5
cGUKICAgICAgewogX0JpdF9pdGVyYXRvciBfTV9zdGFydDsKIF9CaXRfaXRlcmF0b3IgX01fZmlu
aXNoOwogX0JpdF90eXBlKiBfTV9lbmRfb2Zfc3RvcmFnZTsKIF9CdmVjdG9yX2ltcGwoY29uc3Qg
X0JpdF9hbGxvY190eXBlJiBfX2EpCiA6IF9CaXRfYWxsb2NfdHlwZShfX2EpLCBfTV9zdGFydCgp
LCBfTV9maW5pc2goKSwgX01fZW5kX29mX3N0b3JhZ2UoMCkKIHsgfQogICAgICB9OwoKICAgIHB1
YmxpYzoKICAgICAgdHlwZWRlZiBfQWxsb2MgYWxsb2NhdG9yX3R5cGU7CgogICAgICBfQml0X2Fs
bG9jX3R5cGUmCiAgICAgIF9NX2dldF9CaXRfYWxsb2NhdG9yKCkKICAgICAgeyByZXR1cm4gKnN0
YXRpY19jYXN0PF9CaXRfYWxsb2NfdHlwZSo+KCZ0aGlzLT5fTV9pbXBsKTsgfQoKICAgICAgY29u
c3QgX0JpdF9hbGxvY190eXBlJgogICAgICBfTV9nZXRfQml0X2FsbG9jYXRvcigpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBfQml0X2FsbG9jX3R5cGUqPigmdGhpcy0+
X01faW1wbCk7IH0KCiAgICAgIGFsbG9jYXRvcl90eXBlCiAgICAgIGdldF9hbGxvY2F0b3IoKSBj
b25zdAogICAgICB7IHJldHVybiBhbGxvY2F0b3JfdHlwZShfTV9nZXRfQml0X2FsbG9jYXRvcigp
KTsgfQoKICAgICAgX0J2ZWN0b3JfYmFzZShjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hKSA6IF9N
X2ltcGwoX19hKSB7IH0KCiAgICAgIH5fQnZlY3Rvcl9iYXNlKCkKICAgICAgeyB0aGlzLT5fTV9k
ZWFsbG9jYXRlKCk7IH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9CdmVjdG9yX2ltcGwgX01faW1w
bDsKCiAgICAgIF9CaXRfdHlwZSoKICAgICAgX01fYWxsb2NhdGUoc2l6ZV90IF9fbikKICAgICAg
eyByZXR1cm4gX01faW1wbC5hbGxvY2F0ZSgoX19uICsgaW50KF9TX3dvcmRfYml0KSAtIDEpCiAg
ICAvIGludChfU193b3JkX2JpdCkpOyB9CgogICAgICB2b2lkCiAgICAgIF9NX2RlYWxsb2NhdGUo
KQogICAgICB7CiBpZiAoX01faW1wbC5fTV9zdGFydC5fTV9wKQogICBfTV9pbXBsLmRlYWxsb2Nh
dGUoX01faW1wbC5fTV9zdGFydC5fTV9wLAogICAgICAgIF9NX2ltcGwuX01fZW5kX29mX3N0b3Jh
Z2UgLSBfTV9pbXBsLl9NX3N0YXJ0Ll9NX3ApOwogICAgICB9CiAgICB9OwoKfQoKCgoKbmFtZXNw
YWNlIHN0ZCB7CiMgNDU1ICIvdXNyL2luY2x1ZGUvYysrLzQuMi4xL2JpdHMvc3RsX2J2ZWN0b3Iu
aCIgMwp0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgY2xhc3MgdmVjdG9yPGJvb2wsIF9BbGxv
Yz4gOiBwcm90ZWN0ZWQgX0J2ZWN0b3JfYmFzZTxfQWxsb2M+CiAgewogICAgdHlwZWRlZiBfQnZl
Y3Rvcl9iYXNlPF9BbGxvYz4gX0Jhc2U7CgogIHB1YmxpYzoKICAgIHR5cGVkZWYgYm9vbCB2YWx1
ZV90eXBlOwogICAgdHlwZWRlZiBzaXplX3Qgc2l6ZV90eXBlOwogICAgdHlwZWRlZiBwdHJkaWZm
X3QgZGlmZmVyZW5jZV90eXBlOwogICAgdHlwZWRlZiBfQml0X3JlZmVyZW5jZSByZWZlcmVuY2U7
CiAgICB0eXBlZGVmIGJvb2wgY29uc3RfcmVmZXJlbmNlOwogICAgdHlwZWRlZiBfQml0X3JlZmVy
ZW5jZSogcG9pbnRlcjsKICAgIHR5cGVkZWYgY29uc3QgYm9vbCogY29uc3RfcG9pbnRlcjsKICAg
IHR5cGVkZWYgX0JpdF9pdGVyYXRvciBpdGVyYXRvcjsKICAgIHR5cGVkZWYgX0JpdF9jb25zdF9p
dGVyYXRvciBjb25zdF9pdGVyYXRvcjsKICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9y
PGNvbnN0X2l0ZXJhdG9yPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwogICAgdHlwZWRlZiBzdGQ6
OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+IHJldmVyc2VfaXRlcmF0b3I7CiAgICB0eXBlZGVm
IF9BbGxvYyBhbGxvY2F0b3JfdHlwZTsKCiAgICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9y
KCkgY29uc3QKICAgIHsgcmV0dXJuIF9CYXNlOjpnZXRfYWxsb2NhdG9yKCk7IH0KCiAgcHJvdGVj
dGVkOgogICAgdXNpbmcgX0Jhc2U6Ol9NX2FsbG9jYXRlOwogICAgdXNpbmcgX0Jhc2U6Ol9NX2Rl
YWxsb2NhdGU7CiAgICB1c2luZyBfQmFzZTo6X01fZ2V0X0JpdF9hbGxvY2F0b3I7CgogIHB1Ymxp
YzoKICAgIGV4cGxpY2l0CiAgICB2ZWN0b3IoY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFs
bG9jYXRvcl90eXBlKCkpCiAgICA6IF9CYXNlKF9fYSkgeyB9CgogICAgZXhwbGljaXQKICAgIHZl
Y3RvcihzaXplX3R5cGUgX19uLCBjb25zdCBib29sJiBfX3ZhbHVlID0gYm9vbCgpLAogICAgY29u
c3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAgICA6IF9CYXNlKF9f
YSkKICAgIHsKICAgICAgX01faW5pdGlhbGl6ZShfX24pOwogICAgICBzdGQ6OmZpbGwodGhpcy0+
X01faW1wbC5fTV9zdGFydC5fTV9wLCB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlLAog
IF9fdmFsdWUgPyB+MCA6IDApOwogICAgfQoKICAgIHZlY3Rvcihjb25zdCB2ZWN0b3ImIF9feCkK
ICAgIDogX0Jhc2UoX194Ll9NX2dldF9CaXRfYWxsb2NhdG9yKCkpCiAgICB7CiAgICAgIF9NX2lu
aXRpYWxpemUoX194LnNpemUoKSk7CiAgICAgIF9NX2NvcHlfYWxpZ25lZChfX3guYmVnaW4oKSwg
X194LmVuZCgpLCB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxj
bGFzcyBfSW5wdXRJdGVyYXRvcj4KICAgICAgdmVjdG9yKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3Qs
IF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9
IGFsbG9jYXRvcl90eXBlKCkpCiAgICAgIDogX0Jhc2UoX19hKQogICAgICB7CiB0eXBlZGVmIHR5
cGVuYW1lIHN0ZDo6X19pc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X190eXBlIF9JbnRlZ3Jh
bDsKIF9NX2luaXRpYWxpemVfZGlzcGF0Y2goX19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7
CiAgICAgIH0KCiAgICB+dmVjdG9yKCkgeyB9CgogICAgdmVjdG9yJgogICAgb3BlcmF0b3I9KGNv
bnN0IHZlY3RvciYgX194KQogICAgewogICAgICBpZiAoJl9feCA9PSB0aGlzKQogcmV0dXJuICp0
aGlzOwogICAgICBpZiAoX194LnNpemUoKSA+IGNhcGFjaXR5KCkpCiB7CiAgIHRoaXMtPl9NX2Rl
YWxsb2NhdGUoKTsKICAgX01faW5pdGlhbGl6ZShfX3guc2l6ZSgpKTsKIH0KICAgICAgdGhpcy0+
X01faW1wbC5fTV9maW5pc2ggPSBfTV9jb3B5X2FsaWduZWQoX194LmJlZ2luKCksIF9feC5lbmQo
KSwKICAgICAgYmVnaW4oKSk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCgoKCgogICAgdm9p
ZAogICAgYXNzaWduKHNpemVfdHlwZSBfX24sIGNvbnN0IGJvb2wmIF9feCkKICAgIHsgX01fZmls
bF9hc3NpZ24oX19uLCBfX3gpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+
CiAgICAgIHZvaWQKICAgICAgYXNzaWduKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0
ZXJhdG9yIF9fbGFzdCkKICAgICAgewogdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Ol9faXNfaW50ZWdl
cjxfSW5wdXRJdGVyYXRvcj46Ol9fdHlwZSBfSW50ZWdyYWw7CiBfTV9hc3NpZ25fZGlzcGF0Y2go
X19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7CiAgICAgIH0KCiAgICBpdGVyYXRvcgogICAg
YmVnaW4oKQogICAgeyByZXR1cm4gdGhpcy0+X01faW1wbC5fTV9zdGFydDsgfQoKICAgIGNvbnN0
X2l0ZXJhdG9yCiAgICBiZWdpbigpIGNvbnN0CiAgICB7IHJldHVybiB0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0OyB9CgogICAgaXRlcmF0b3IKICAgIGVuZCgpCiAgICB7IHJldHVybiB0aGlzLT5fTV9p
bXBsLl9NX2ZpbmlzaDsgfQoKICAgIGNvbnN0X2l0ZXJhdG9yCiAgICBlbmQoKSBjb25zdAogICAg
eyByZXR1cm4gdGhpcy0+X01faW1wbC5fTV9maW5pc2g7IH0KCiAgICByZXZlcnNlX2l0ZXJhdG9y
CiAgICByYmVnaW4oKQogICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KCiAg
ICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCiAgICByYmVnaW4oKSBjb25zdAogICAgeyByZXR1cm4g
Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KCiAgICByZXZlcnNlX2l0ZXJhdG9yCiAg
ICByZW5kKCkKICAgIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KCiAgICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yCiAgICByZW5kKCkgY29uc3QKICAgIHsgcmV0dXJuIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KCiAgICBzaXplX3R5cGUKICAgIHNpemUoKSBj
b25zdAogICAgeyByZXR1cm4gc2l6ZV90eXBlKGVuZCgpIC0gYmVnaW4oKSk7IH0KCiAgICBzaXpl
X3R5cGUKICAgIG1heF9zaXplKCkgY29uc3QKICAgIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9f
YXNpemUgPSBfTV9nZXRfQml0X2FsbG9jYXRvcigpLm1heF9zaXplKCk7CiAgICAgIHJldHVybiAo
X19hc2l6ZSA8PSBzaXplX3R5cGUoLTEpIC8gaW50KF9TX3dvcmRfYml0KSA/CiAgICAgICBfX2Fz
aXplICogaW50KF9TX3dvcmRfYml0KSA6IHNpemVfdHlwZSgtMSkpOwogICAgfQoKICAgIHNpemVf
dHlwZQogICAgY2FwYWNpdHkoKSBjb25zdAogICAgeyByZXR1cm4gc2l6ZV90eXBlKGNvbnN0X2l0
ZXJhdG9yKHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UsIDApCiAgICAgICAgIC0gYmVn
aW4oKSk7IH0KCiAgICBib29sCiAgICBlbXB0eSgpIGNvbnN0CiAgICB7IHJldHVybiBiZWdpbigp
ID09IGVuZCgpOyB9CgogICAgcmVmZXJlbmNlCiAgICBvcGVyYXRvcltdKHNpemVfdHlwZSBfX24p
CiAgICB7CiAgICAgIHJldHVybiAqaXRlcmF0b3IodGhpcy0+X01faW1wbC5fTV9zdGFydC5fTV9w
CiAgICAgICAgICsgX19uIC8gaW50KF9TX3dvcmRfYml0KSwgX19uICUgaW50KF9TX3dvcmRfYml0
KSk7CiAgICB9CgogICAgY29uc3RfcmVmZXJlbmNlCiAgICBvcGVyYXRvcltdKHNpemVfdHlwZSBf
X24pIGNvbnN0CiAgICB7CiAgICAgIHJldHVybiAqY29uc3RfaXRlcmF0b3IodGhpcy0+X01faW1w
bC5fTV9zdGFydC5fTV9wCiAgICAgICAgKyBfX24gLyBpbnQoX1Nfd29yZF9iaXQpLCBfX24gJSBp
bnQoX1Nfd29yZF9iaXQpKTsKICAgIH0KCiAgcHJvdGVjdGVkOgogICAgdm9pZAogICAgX01fcmFu
Z2VfY2hlY2soc2l6ZV90eXBlIF9fbikgY29uc3QKICAgIHsKICAgICAgaWYgKF9fbiA+PSB0aGlz
LT5zaXplKCkpCiAgICAgICAgX190aHJvd19vdXRfb2ZfcmFuZ2UoKCJ2ZWN0b3I8Ym9vbD46Ol9N
X3JhbmdlX2NoZWNrIikpOwogICAgfQoKICBwdWJsaWM6CiAgICByZWZlcmVuY2UKICAgIGF0KHNp
emVfdHlwZSBfX24pCiAgICB7IF9NX3JhbmdlX2NoZWNrKF9fbik7IHJldHVybiAoKnRoaXMpW19f
bl07IH0KCiAgICBjb25zdF9yZWZlcmVuY2UKICAgIGF0KHNpemVfdHlwZSBfX24pIGNvbnN0CiAg
ICB7IF9NX3JhbmdlX2NoZWNrKF9fbik7IHJldHVybiAoKnRoaXMpW19fbl07IH0KCiAgICB2b2lk
CiAgICByZXNlcnZlKHNpemVfdHlwZSBfX24pCiAgICB7CiAgICAgIGlmIChfX24gPiB0aGlzLT5t
YXhfc2l6ZSgpKQogX190aHJvd19sZW5ndGhfZXJyb3IoKCJ2ZWN0b3I6OnJlc2VydmUiKSk7CiAg
ICAgIGlmICh0aGlzLT5jYXBhY2l0eSgpIDwgX19uKQogewogICBfQml0X3R5cGUqIF9fcSA9IHRo
aXMtPl9NX2FsbG9jYXRlKF9fbik7CiAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gX01fY29w
eV9hbGlnbmVkKGJlZ2luKCksIGVuZCgpLAogICAgICAgICAgaXRlcmF0b3IoX19xLCAwKSk7CiAg
IHRoaXMtPl9NX2RlYWxsb2NhdGUoKTsKICAgdGhpcy0+X01faW1wbC5fTV9zdGFydCA9IGl0ZXJh
dG9yKF9fcSwgMCk7CiAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSAoX19xICsg
KF9fbiArIGludChfU193b3JkX2JpdCkgLSAxKQogICAgICAgICAgLyBpbnQoX1Nfd29yZF9iaXQp
KTsKIH0KICAgIH0KCiAgICByZWZlcmVuY2UKICAgIGZyb250KCkKICAgIHsgcmV0dXJuICpiZWdp
bigpOyB9CgogICAgY29uc3RfcmVmZXJlbmNlCiAgICBmcm9udCgpIGNvbnN0CiAgICB7IHJldHVy
biAqYmVnaW4oKTsgfQoKICAgIHJlZmVyZW5jZQogICAgYmFjaygpCiAgICB7IHJldHVybiAqKGVu
ZCgpIC0gMSk7IH0KCiAgICBjb25zdF9yZWZlcmVuY2UKICAgIGJhY2soKSBjb25zdAogICAgeyBy
ZXR1cm4gKihlbmQoKSAtIDEpOyB9CgoKCgoKCiAgICB2b2lkCiAgICBkYXRhKCkgeyB9CgogICAg
dm9pZAogICAgcHVzaF9iYWNrKGJvb2wgX194KQogICAgewogICAgICBpZiAodGhpcy0+X01faW1w
bC5fTV9maW5pc2guX01fcCAhPSB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlKQogICAg
ICAgICp0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCsrID0gX194OwogICAgICBlbHNlCiAgICAgICAg
X01faW5zZXJ0X2F1eChlbmQoKSwgX194KTsKICAgIH0KCiAgICB2b2lkCiAgICBzd2FwKHZlY3Rv
cjxib29sLCBfQWxsb2M+JiBfX3gpCiAgICB7CiAgICAgIHN0ZDo6c3dhcCh0aGlzLT5fTV9pbXBs
Ll9NX3N0YXJ0LCBfX3guX01faW1wbC5fTV9zdGFydCk7CiAgICAgIHN0ZDo6c3dhcCh0aGlzLT5f
TV9pbXBsLl9NX2ZpbmlzaCwgX194Ll9NX2ltcGwuX01fZmluaXNoKTsKICAgICAgc3RkOjpzd2Fw
KHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UsCiAgX194Ll9NX2ltcGwuX01fZW5kX29m
X3N0b3JhZ2UpOwoKCgogICAgICBzdGQ6Ol9fYWxsb2Nfc3dhcDx0eXBlbmFtZSBfQmFzZTo6X0Jp
dF9hbGxvY190eXBlPjo6CiBfU19kb19pdChfTV9nZXRfQml0X2FsbG9jYXRvcigpLCBfX3guX01f
Z2V0X0JpdF9hbGxvY2F0b3IoKSk7CiAgICB9CgoKICAgIHN0YXRpYyB2b2lkCiAgICBzd2FwKHJl
ZmVyZW5jZSBfX3gsIHJlZmVyZW5jZSBfX3kpCiAgICB7CiAgICAgIGJvb2wgX190bXAgPSBfX3g7
CiAgICAgIF9feCA9IF9feTsKICAgICAgX195ID0gX190bXA7CiAgICB9CgogICAgaXRlcmF0b3IK
ICAgIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCBib29sJiBfX3ggPSBib29sKCkp
CiAgICB7CiAgICAgIGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfX24gPSBfX3Bvc2l0aW9uIC0gYmVn
aW4oKTsKICAgICAgaWYgKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLl9NX3AgIT0gdGhpcy0+X01f
aW1wbC5fTV9lbmRfb2Zfc3RvcmFnZQogICAmJiBfX3Bvc2l0aW9uID09IGVuZCgpKQogICAgICAg
ICp0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCsrID0gX194OwogICAgICBlbHNlCiAgICAgICAgX01f
aW5zZXJ0X2F1eChfX3Bvc2l0aW9uLCBfX3gpOwogICAgICByZXR1cm4gYmVnaW4oKSArIF9fbjsK
ICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICAgICAgdm9pZAogICAg
ICBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwKICAgICAgX0lucHV0SXRlcmF0b3IgX19maXJz
dCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KQogICAgICB7CiB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6
X19pc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X190eXBlIF9JbnRlZ3JhbDsKIF9NX2luc2Vy
dF9kaXNwYXRjaChfX3Bvc2l0aW9uLCBfX2ZpcnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKICAg
ICAgfQoKICAgIHZvaWQKICAgIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBzaXplX3R5cGUg
X19uLCBjb25zdCBib29sJiBfX3gpCiAgICB7IF9NX2ZpbGxfaW5zZXJ0KF9fcG9zaXRpb24sIF9f
biwgX194KTsgfQoKICAgIHZvaWQKICAgIHBvcF9iYWNrKCkKICAgIHsgLS10aGlzLT5fTV9pbXBs
Ll9NX2ZpbmlzaDsgfQoKICAgIGl0ZXJhdG9yCiAgICBlcmFzZShpdGVyYXRvciBfX3Bvc2l0aW9u
KQogICAgewogICAgICBpZiAoX19wb3NpdGlvbiArIDEgIT0gZW5kKCkpCiAgICAgICAgc3RkOjpj
b3B5KF9fcG9zaXRpb24gKyAxLCBlbmQoKSwgX19wb3NpdGlvbik7CiAgICAgIC0tdGhpcy0+X01f
aW1wbC5fTV9maW5pc2g7CiAgICAgIHJldHVybiBfX3Bvc2l0aW9uOwogICAgfQoKICAgIGl0ZXJh
dG9yCiAgICBlcmFzZShpdGVyYXRvciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xhc3QpCiAgICB7CiAg
ICAgIF9NX2VyYXNlX2F0X2VuZChzdGQ6OmNvcHkoX19sYXN0LCBlbmQoKSwgX19maXJzdCkpOwog
ICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KCiAgICB2b2lkCiAgICByZXNpemUoc2l6ZV90eXBl
IF9fbmV3X3NpemUsIGJvb2wgX194ID0gYm9vbCgpKQogICAgewogICAgICBpZiAoX19uZXdfc2l6
ZSA8IHNpemUoKSkKICAgICAgICBfTV9lcmFzZV9hdF9lbmQoYmVnaW4oKSArIGRpZmZlcmVuY2Vf
dHlwZShfX25ld19zaXplKSk7CiAgICAgIGVsc2UKICAgICAgICBpbnNlcnQoZW5kKCksIF9fbmV3
X3NpemUgLSBzaXplKCksIF9feCk7CiAgICB9CgogICAgdm9pZAogICAgZmxpcCgpCiAgICB7CiAg
ICAgIGZvciAoX0JpdF90eXBlICogX19wID0gdGhpcy0+X01faW1wbC5fTV9zdGFydC5fTV9wOwog
ICAgX19wICE9IHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2U7ICsrX19wKQogICAgICAg
ICpfX3AgPSB+Kl9fcDsKICAgIH0KCiAgICB2b2lkCiAgICBjbGVhcigpCiAgICB7IF9NX2VyYXNl
X2F0X2VuZChiZWdpbigpKTsgfQoKCiAgcHJvdGVjdGVkOgoKICAgIGl0ZXJhdG9yCiAgICBfTV9j
b3B5X2FsaWduZWQoY29uc3RfaXRlcmF0b3IgX19maXJzdCwgY29uc3RfaXRlcmF0b3IgX19sYXN0
LAogICAgICBpdGVyYXRvciBfX3Jlc3VsdCkKICAgIHsKICAgICAgX0JpdF90eXBlKiBfX3EgPSBz
dGQ6OmNvcHkoX19maXJzdC5fTV9wLCBfX2xhc3QuX01fcCwgX19yZXN1bHQuX01fcCk7CiAgICAg
IHJldHVybiBzdGQ6OmNvcHkoY29uc3RfaXRlcmF0b3IoX19sYXN0Ll9NX3AsIDApLCBfX2xhc3Qs
CiAgICAgICAgIGl0ZXJhdG9yKF9fcSwgMCkpOwogICAgfQoKICAgIHZvaWQKICAgIF9NX2luaXRp
YWxpemUoc2l6ZV90eXBlIF9fbikKICAgIHsKICAgICAgX0JpdF90eXBlKiBfX3EgPSB0aGlzLT5f
TV9hbGxvY2F0ZShfX24pOwogICAgICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlID0g
KF9fcQogICAgICArICgoX19uICsgaW50KF9TX3dvcmRfYml0KSAtIDEpCiAgICAgICAgIC8gaW50
KF9TX3dvcmRfYml0KSkpOwogICAgICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ID0gaXRlcmF0b3Io
X19xLCAwKTsKICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSB0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0ICsgZGlmZmVyZW5jZV90eXBlKF9fbik7CiAgICB9CgoKICAgIHRlbXBsYXRlPGNsYXNz
IF9JbnRlZ2VyPgogICAgICB2b2lkCiAgICAgIF9NX2luaXRpYWxpemVfZGlzcGF0Y2goX0ludGVn
ZXIgX19uLCBfSW50ZWdlciBfX3gsIF9fdHJ1ZV90eXBlKQogICAgICB7CiBfTV9pbml0aWFsaXpl
KF9fbik7CiBzdGQ6OmZpbGwodGhpcy0+X01faW1wbC5fTV9zdGFydC5fTV9wLAogICAgdGhpcy0+
X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSwgX194ID8gfjAgOiAwKTsKICAgICAgfQoKICAgIHRl
bXBsYXRlPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogICAgICB2b2lkCiAgICAgIF9NX2luaXRpYWxp
emVfZGlzcGF0Y2goX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0
LAogICAgICAgIF9fZmFsc2VfdHlwZSkKICAgICAgeyBfTV9pbml0aWFsaXplX3JhbmdlKF9fZmly
c3QsIF9fbGFzdCwKICAgICAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7IH0K
CiAgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICAgICAgdm9pZAogICAgICBfTV9p
bml0aWFsaXplX3JhbmdlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9f
bGFzdCwKICAgICBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZykKICAgICAgewogZm9yICg7IF9fZmly
c3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgIHB1c2hfYmFjaygqX19maXJzdCk7CiAgICAgIH0K
CiAgICB0ZW1wbGF0ZTxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yPgogICAgICB2b2lkCiAgICAgIF9N
X2luaXRpYWxpemVfcmFuZ2UoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJh
dG9yIF9fbGFzdCwKICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKQogICAgICB7CiBjb25z
dCBzaXplX3R5cGUgX19uID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwogX01faW5p
dGlhbGl6ZShfX24pOwogc3RkOjpjb3B5KF9fZmlyc3QsIF9fbGFzdCwgdGhpcy0+X01faW1wbC5f
TV9zdGFydCk7CiAgICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBfSW50ZWdlcj4KICAgICAgdm9p
ZAogICAgICBfTV9hc3NpZ25fZGlzcGF0Y2goX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbCwg
X190cnVlX3R5cGUpCiAgICAgIHsgX01fZmlsbF9hc3NpZ24oKHNpemVfdCkgX19uLCAoYm9vbCkg
X192YWwpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgICAgIHZvaWQK
ICAgICAgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0
ZXJhdG9yIF9fbGFzdCwKICAgIF9fZmFsc2VfdHlwZSkKICAgICAgeyBfTV9hc3NpZ25fYXV4KF9f
Zmlyc3QsIF9fbGFzdCwgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsgfQoKICAg
IHZvaWQKICAgIF9NX2ZpbGxfYXNzaWduKHNpemVfdCBfX24sIGJvb2wgX194KQogICAgewogICAg
ICBpZiAoX19uID4gc2l6ZSgpKQogewogICBzdGQ6OmZpbGwodGhpcy0+X01faW1wbC5fTV9zdGFy
dC5fTV9wLAogICAgICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlLCBfX3ggPyB+MCA6
IDApOwogICBpbnNlcnQoZW5kKCksIF9fbiAtIHNpemUoKSwgX194KTsKIH0KICAgICAgZWxzZQog
ewogICBfTV9lcmFzZV9hdF9lbmQoYmVnaW4oKSArIF9fbik7CiAgIHN0ZDo6ZmlsbCh0aGlzLT5f
TV9pbXBsLl9NX3N0YXJ0Ll9NX3AsCiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3Jh
Z2UsIF9feCA/IH4wIDogMCk7CiB9CiAgICB9CgogICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRl
cmF0b3I+CiAgICAgIHZvaWQKICAgICAgX01fYXNzaWduX2F1eChfSW5wdXRJdGVyYXRvciBfX2Zp
cnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFn
KQogICAgICB7CiBpdGVyYXRvciBfX2N1ciA9IGJlZ2luKCk7CiBmb3IgKDsgX19maXJzdCAhPSBf
X2xhc3QgJiYgX19jdXIgIT0gZW5kKCk7ICsrX19jdXIsICsrX19maXJzdCkKICAgKl9fY3VyID0g
Kl9fZmlyc3Q7CiBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgIF9NX2VyYXNlX2F0X2VuZChfX2N1
cik7CiBlbHNlCiAgIGluc2VydChlbmQoKSwgX19maXJzdCwgX19sYXN0KTsKICAgICAgfQoKICAg
IHRlbXBsYXRlPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAgX01fYXNz
aWduX2F1eChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0
LAogICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKQogICAgICB7CiBjb25zdCBzaXplX3R5
cGUgX19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7CiBpZiAoX19sZW4gPCBz
aXplKCkpCiAgIF9NX2VyYXNlX2F0X2VuZChzdGQ6OmNvcHkoX19maXJzdCwgX19sYXN0LCBiZWdp
bigpKSk7CiBlbHNlCiAgIHsKICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlkID0gX19maXJzdDsK
ICAgICBzdGQ6OmFkdmFuY2UoX19taWQsIHNpemUoKSk7CiAgICAgc3RkOjpjb3B5KF9fZmlyc3Qs
IF9fbWlkLCBiZWdpbigpKTsKICAgICBpbnNlcnQoZW5kKCksIF9fbWlkLCBfX2xhc3QpOwogICB9
CiAgICAgIH0KCgogICAgdGVtcGxhdGU8Y2xhc3MgX0ludGVnZXI+CiAgICAgIHZvaWQKICAgICAg
X01faW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9yIF9fcG9zLCBfSW50ZWdlciBfX24sIF9JbnRlZ2Vy
IF9feCwKICAgIF9fdHJ1ZV90eXBlKQogICAgICB7IF9NX2ZpbGxfaW5zZXJ0KF9fcG9zLCBfX24s
IF9feCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICAgICAgdm9pZAog
ICAgICBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19wb3MsCiAgICBfSW5wdXRJdGVyYXRv
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICBfX2ZhbHNlX3R5cGUpCiAgICAg
IHsgX01faW5zZXJ0X3JhbmdlKF9fcG9zLCBfX2ZpcnN0LCBfX2xhc3QsCiAgIHN0ZDo6X19pdGVy
YXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7IH0KCiAgICB2b2lkCiAgICBfTV9maWxsX2luc2VydChp
dGVyYXRvciBfX3Bvc2l0aW9uLCBzaXplX3R5cGUgX19uLCBib29sIF9feCkKICAgIHsKICAgICAg
aWYgKF9fbiA9PSAwKQogcmV0dXJuOwogICAgICBpZiAoY2FwYWNpdHkoKSAtIHNpemUoKSA+PSBf
X24pCiB7CiAgIHN0ZDo6Y29weV9iYWNrd2FyZChfX3Bvc2l0aW9uLCBlbmQoKSwKICAgICAgICB0
aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCArIGRpZmZlcmVuY2VfdHlwZShfX24pKTsKICAgc3RkOjpm
aWxsKF9fcG9zaXRpb24sIF9fcG9zaXRpb24gKyBkaWZmZXJlbmNlX3R5cGUoX19uKSwgX194KTsK
ICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggKz0gZGlmZmVyZW5jZV90eXBlKF9fbik7CiB9CiAg
ICAgIGVsc2UKIHsKICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc2l6ZSgpICsgc3RkOjptYXgo
c2l6ZSgpLCBfX24pOwogICBfQml0X3R5cGUgKiBfX3EgPSB0aGlzLT5fTV9hbGxvY2F0ZShfX2xl
bik7CiAgIGl0ZXJhdG9yIF9faSA9IF9NX2NvcHlfYWxpZ25lZChiZWdpbigpLCBfX3Bvc2l0aW9u
LAogICAgICBpdGVyYXRvcihfX3EsIDApKTsKICAgc3RkOjpmaWxsKF9faSwgX19pICsgZGlmZmVy
ZW5jZV90eXBlKF9fbiksIF9feCk7CiAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gc3RkOjpj
b3B5KF9fcG9zaXRpb24sIGVuZCgpLAogICAgICAgICAgIF9faSArIGRpZmZlcmVuY2VfdHlwZShf
X24pKTsKICAgdGhpcy0+X01fZGVhbGxvY2F0ZSgpOwogICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9v
Zl9zdG9yYWdlID0gKF9fcSArICgoX19sZW4KICAgICAgICAgICArIGludChfU193b3JkX2JpdCkg
LSAxKQogICAgICAgICAgLyBpbnQoX1Nfd29yZF9iaXQpKSk7CiAgIHRoaXMtPl9NX2ltcGwuX01f
c3RhcnQgPSBpdGVyYXRvcihfX3EsIDApOwogfQogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIF9J
bnB1dEl0ZXJhdG9yPgogICAgICB2b2lkCiAgICAgIF9NX2luc2VydF9yYW5nZShpdGVyYXRvciBf
X3BvcywgX0lucHV0SXRlcmF0b3IgX19maXJzdCwKICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2xh
c3QsIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnKQogICAgICB7CiBmb3IgKDsgX19maXJzdCAhPSBf
X2xhc3Q7ICsrX19maXJzdCkKICAgewogICAgIF9fcG9zID0gaW5zZXJ0KF9fcG9zLCAqX19maXJz
dCk7CiAgICAgKytfX3BvczsKICAgfQogICAgICB9CgogICAgdGVtcGxhdGU8Y2xhc3MgX0Zvcndh
cmRJdGVyYXRvcj4KICAgICAgdm9pZAogICAgICBfTV9pbnNlcnRfcmFuZ2UoaXRlcmF0b3IgX19w
b3NpdGlvbiwgX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgIF9Gb3J3YXJkSXRlcmF0
b3IgX19sYXN0LCBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKQogICAgICB7CiBpZiAoX19maXJz
dCAhPSBfX2xhc3QpCiAgIHsKICAgICBzaXplX3R5cGUgX19uID0gc3RkOjpkaXN0YW5jZShfX2Zp
cnN0LCBfX2xhc3QpOwogICAgIGlmIChjYXBhY2l0eSgpIC0gc2l6ZSgpID49IF9fbikKICAgICAg
IHsKICBzdGQ6OmNvcHlfYmFja3dhcmQoX19wb3NpdGlvbiwgZW5kKCksCiAgICAgICB0aGlzLT5f
TV9pbXBsLl9NX2ZpbmlzaAogICAgICAgKyBkaWZmZXJlbmNlX3R5cGUoX19uKSk7CiAgc3RkOjpj
b3B5KF9fZmlyc3QsIF9fbGFzdCwgX19wb3NpdGlvbik7CiAgdGhpcy0+X01faW1wbC5fTV9maW5p
c2ggKz0gZGlmZmVyZW5jZV90eXBlKF9fbik7CiAgICAgICB9CiAgICAgZWxzZQogICAgICAgewog
IGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHNpemUoKSArIHN0ZDo6bWF4KHNpemUoKSwgX19uKTsK
ICBfQml0X3R5cGUgKiBfX3EgPSB0aGlzLT5fTV9hbGxvY2F0ZShfX2xlbik7CiAgaXRlcmF0b3Ig
X19pID0gX01fY29weV9hbGlnbmVkKGJlZ2luKCksIF9fcG9zaXRpb24sCiAgICAgICAgICAgIGl0
ZXJhdG9yKF9fcSwgMCkpOwogIF9faSA9IHN0ZDo6Y29weShfX2ZpcnN0LCBfX2xhc3QsIF9faSk7
CiAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSBzdGQ6OmNvcHkoX19wb3NpdGlvbiwgZW5kKCks
IF9faSk7CiAgdGhpcy0+X01fZGVhbGxvY2F0ZSgpOwogIHRoaXMtPl9NX2ltcGwuX01fZW5kX29m
X3N0b3JhZ2UgPSAoX19xCiAgICAgICAgICsgKChfX2xlbgogICAgICAgICAgICAgKyBpbnQoX1Nf
d29yZF9iaXQpIC0gMSkKICAgICAgICAgICAgLyBpbnQoX1Nfd29yZF9iaXQpKSk7CiAgdGhpcy0+
X01faW1wbC5fTV9zdGFydCA9IGl0ZXJhdG9yKF9fcSwgMCk7CiAgICAgICB9CiAgIH0KICAgICAg
fQoKICAgIHZvaWQKICAgIF9NX2luc2VydF9hdXgoaXRlcmF0b3IgX19wb3NpdGlvbiwgYm9vbCBf
X3gpCiAgICB7CiAgICAgIGlmICh0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaC5fTV9wICE9IHRoaXMt
Pl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UpCiB7CiAgIHN0ZDo6Y29weV9iYWNrd2FyZChfX3Bv
c2l0aW9uLCB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgICB0aGlzLT5fTV9pbXBsLl9N
X2ZpbmlzaCArIDEpOwogICAqX19wb3NpdGlvbiA9IF9feDsKICAgKyt0aGlzLT5fTV9pbXBsLl9N
X2ZpbmlzaDsKIH0KICAgICAgZWxzZQogewogICBjb25zdCBzaXplX3R5cGUgX19sZW4gPSBzaXpl
KCkgPyAyICogc2l6ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHN0YXRp
Y19jYXN0PHNpemVfdHlwZT4oX1Nfd29yZF9iaXQpOwogICBfQml0X3R5cGUgKiBfX3EgPSB0aGlz
LT5fTV9hbGxvY2F0ZShfX2xlbik7CiAgIGl0ZXJhdG9yIF9faSA9IF9NX2NvcHlfYWxpZ25lZChi
ZWdpbigpLCBfX3Bvc2l0aW9uLAogICAgICBpdGVyYXRvcihfX3EsIDApKTsKICAgKl9faSsrID0g
X194OwogICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9IHN0ZDo6Y29weShfX3Bvc2l0aW9uLCBl
bmQoKSwgX19pKTsKICAgdGhpcy0+X01fZGVhbGxvY2F0ZSgpOwogICB0aGlzLT5fTV9pbXBsLl9N
X2VuZF9vZl9zdG9yYWdlID0gKF9fcSArICgoX19sZW4KICAgICAgICAgICArIGludChfU193b3Jk
X2JpdCkgLSAxKQogICAgICAgICAgLyBpbnQoX1Nfd29yZF9iaXQpKSk7CiAgIHRoaXMtPl9NX2lt
cGwuX01fc3RhcnQgPSBpdGVyYXRvcihfX3EsIDApOwogfQogICAgfQoKICAgIHZvaWQKICAgIF9N
X2VyYXNlX2F0X2VuZChpdGVyYXRvciBfX3BvcykKICAgIHsgdGhpcy0+X01faW1wbC5fTV9maW5p
c2ggPSBfX3BvczsgfQogIH07Cgp9CiMgNzIgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvdmVjdG9y
IiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9jKysvNC4yLjEvYml0cy92ZWN0b3IudGNjIiAxIDMK
IyA2MiAiL3Vzci9pbmNsdWRlL2MrKy80LjIuMS9iaXRzL3ZlY3Rvci50Y2MiIDMKI2RlZmluZSBf
VkVDVE9SX1RDQyAxCgpuYW1lc3BhY2Ugc3RkIHsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICB2b2lkCiAgICB2ZWN0b3I8X1RwLCBfQWxsb2M+OjoKICAgIHJl
c2VydmUoc2l6ZV90eXBlIF9fbikKICAgIHsKICAgICAgaWYgKF9fbiA+IHRoaXMtPm1heF9zaXpl
KCkpCiBfX3Rocm93X2xlbmd0aF9lcnJvcigoInZlY3Rvcjo6cmVzZXJ2ZSIpKTsKICAgICAgaWYg
KHRoaXMtPmNhcGFjaXR5KCkgPCBfX24pCiB7CiAgIGNvbnN0IHNpemVfdHlwZSBfX29sZF9zaXpl
ID0gc2l6ZSgpOwogICBwb2ludGVyIF9fdG1wID0gX01fYWxsb2NhdGVfYW5kX2NvcHkoX19uLCB0
aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LAogICAgICAgICAgICB0aGlzLT5fTV9pbXBsLl9NX2Zpbmlz
aCk7CiAgIHN0ZDo6X0Rlc3Ryb3kodGhpcy0+X01faW1wbC5fTV9zdGFydCwgdGhpcy0+X01faW1w
bC5fTV9maW5pc2gsCiAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgIF9NX2RlYWxsb2NhdGUo
dGhpcy0+X01faW1wbC5fTV9zdGFydCwKICAgdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFn
ZQogICAtIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOwogICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0
ID0gX190bXA7CiAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gX190bXAgKyBfX29sZF9zaXpl
OwogICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlID0gdGhpcy0+X01faW1wbC5fTV9z
dGFydCArIF9fbjsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
QWxsb2M+CiAgICB0eXBlbmFtZSB2ZWN0b3I8X1RwLCBfQWxsb2M+OjppdGVyYXRvcgogICAgdmVj
dG9yPF9UcCwgX0FsbG9jPjo6CiAgICBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwgY29uc3Qg
dmFsdWVfdHlwZSYgX194KQogICAgewogICAgICBjb25zdCBzaXplX3R5cGUgX19uID0gX19wb3Np
dGlvbiAtIGJlZ2luKCk7CiAgICAgIGlmICh0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCAhPSB0aGlz
LT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlCiAgICYmIF9fcG9zaXRpb24gPT0gZW5kKCkpCiB7
CiAgIHRoaXMtPl9NX2ltcGwuY29uc3RydWN0KHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLCBfX3gp
OwogICArK3RoaXMtPl9NX2ltcGwuX01fZmluaXNoOwogfQogICAgICBlbHNlCiAgICAgICAgX01f
aW5zZXJ0X2F1eChfX3Bvc2l0aW9uLCBfX3gpOwogICAgICByZXR1cm4gaXRlcmF0b3IodGhpcy0+
X01faW1wbC5fTV9zdGFydCArIF9fbik7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwg
dHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgdmVjdG9yPF9UcCwgX0FsbG9jPjo6aXRlcmF0
b3IKICAgIHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAgZXJhc2UoaXRlcmF0b3IgX19wb3NpdGlv
bikKICAgIHsKICAgICAgaWYgKF9fcG9zaXRpb24gKyAxICE9IGVuZCgpKQogICAgICAgIHN0ZDo6
Y29weShfX3Bvc2l0aW9uICsgMSwgZW5kKCksIF9fcG9zaXRpb24pOwogICAgICAtLXRoaXMtPl9N
X2ltcGwuX01fZmluaXNoOwogICAgICB0aGlzLT5fTV9pbXBsLmRlc3Ryb3kodGhpcy0+X01faW1w
bC5fTV9maW5pc2gpOwogICAgICByZXR1cm4gX19wb3NpdGlvbjsKICAgIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSB2ZWN0b3I8X1RwLCBf
QWxsb2M+OjppdGVyYXRvcgogICAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6CiAgICBlcmFzZShpdGVy
YXRvciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xhc3QpCiAgICB7CiAgICAgIGlmIChfX2xhc3QgIT0g
ZW5kKCkpCiBzdGQ6OmNvcHkoX19sYXN0LCBlbmQoKSwgX19maXJzdCk7CiAgICAgIF9NX2VyYXNl
X2F0X2VuZChfX2ZpcnN0LmJhc2UoKSArIChlbmQoKSAtIF9fbGFzdCkpOwogICAgICByZXR1cm4g
X19maXJzdDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+
CiAgICB2ZWN0b3I8X1RwLCBfQWxsb2M+JgogICAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6CiAgICBv
cGVyYXRvcj0oY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX194KQogICAgewogICAgICBpZiAo
Jl9feCAhPSB0aGlzKQogewogICBjb25zdCBzaXplX3R5cGUgX194bGVuID0gX194LnNpemUoKTsK
ICAgaWYgKF9feGxlbiA+IGNhcGFjaXR5KCkpCiAgICAgewogICAgICAgcG9pbnRlciBfX3RtcCA9
IF9NX2FsbG9jYXRlX2FuZF9jb3B5KF9feGxlbiwgX194LmJlZ2luKCksCiAgICAgICAgIF9feC5l
bmQoKSk7CiAgICAgICBzdGQ6Ol9EZXN0cm95KHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIHRoaXMt
Pl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgICAg
IF9NX2RlYWxsb2NhdGUodGhpcy0+X01faW1wbC5fTV9zdGFydCwKICAgICAgIHRoaXMtPl9NX2lt
cGwuX01fZW5kX29mX3N0b3JhZ2UKICAgICAgIC0gdGhpcy0+X01faW1wbC5fTV9zdGFydCk7CiAg
ICAgICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ID0gX190bXA7CiAgICAgICB0aGlzLT5fTV9pbXBs
Ll9NX2VuZF9vZl9zdG9yYWdlID0gdGhpcy0+X01faW1wbC5fTV9zdGFydCArIF9feGxlbjsKICAg
ICB9CiAgIGVsc2UgaWYgKHNpemUoKSA+PSBfX3hsZW4pCiAgICAgewogICAgICAgc3RkOjpfRGVz
dHJveShzdGQ6OmNvcHkoX194LmJlZ2luKCksIF9feC5lbmQoKSwgYmVnaW4oKSksCiAgICAgICBl
bmQoKSwgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAg
ICBzdGQ6OmNvcHkoX194Ll9NX2ltcGwuX01fc3RhcnQsIF9feC5fTV9pbXBsLl9NX3N0YXJ0ICsg
c2l6ZSgpLAogICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsKICAgICAgIHN0ZDo6X191bmluaXRp
YWxpemVkX2NvcHlfYShfX3guX01faW1wbC5fTV9zdGFydCArIHNpemUoKSwKICAgICAgIF9feC5f
TV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICAg
X01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgICB9CiAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNo
ID0gdGhpcy0+X01faW1wbC5fTV9zdGFydCArIF9feGxlbjsKIH0KICAgICAgcmV0dXJuICp0aGlz
OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHZv
aWQKICAgIHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAgX01fZmlsbF9hc3NpZ24oc2l6ZV90IF9f
biwgY29uc3QgdmFsdWVfdHlwZSYgX192YWwpCiAgICB7CiAgICAgIGlmIChfX24gPiBjYXBhY2l0
eSgpKQogewogICB2ZWN0b3IgX190bXAoX19uLCBfX3ZhbCwgX01fZ2V0X1RwX2FsbG9jYXRvcigp
KTsKICAgX190bXAuc3dhcCgqdGhpcyk7CiB9CiAgICAgIGVsc2UgaWYgKF9fbiA+IHNpemUoKSkK
IHsKICAgc3RkOjpmaWxsKGJlZ2luKCksIGVuZCgpLCBfX3ZhbCk7CiAgIHN0ZDo6X191bmluaXRp
YWxpemVkX2ZpbGxfbl9hKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgIF9fbiAtIHNpemUo
KSwgX192YWwsCiAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgdGhpcy0+X01faW1wbC5f
TV9maW5pc2ggKz0gX19uIC0gc2l6ZSgpOwogfQogICAgICBlbHNlCiAgICAgICAgX01fZXJhc2Vf
YXRfZW5kKHN0ZDo6ZmlsbF9uKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIF9fbiwgX192YWwpKTsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgICAgdm9pZAogICAgICB2ZWN0b3I8X1Rw
LCBfQWxsb2M+OjoKICAgICAgX01fYXNzaWduX2F1eChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBf
SW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnKQogICAg
ICB7CiBwb2ludGVyIF9fY3VyKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOwogZm9yICg7IF9fZmly
c3QgIT0gX19sYXN0ICYmIF9fY3VyICE9IHRoaXMtPl9NX2ltcGwuX01fZmluaXNoOwogICAgICAr
K19fY3VyLCArK19fZmlyc3QpCiAgICpfX2N1ciA9ICpfX2ZpcnN0OwogaWYgKF9fZmlyc3QgPT0g
X19sYXN0KQogICBfTV9lcmFzZV9hdF9lbmQoX19jdXIpOwogZWxzZQogICBpbnNlcnQoZW5kKCks
IF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBl
bmFtZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAg
ICB2b2lkCiAgICAgIHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAgICBfTV9hc3NpZ25fYXV4KF9G
b3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIHN0
ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpCiAgICAgIHsKIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9
IHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwgX19sYXN0KTsKCiBpZiAoX19sZW4gPiBjYXBhY2l0eSgp
KQogICB7CiAgICAgcG9pbnRlciBfX3RtcChfTV9hbGxvY2F0ZV9hbmRfY29weShfX2xlbiwgX19m
aXJzdCwgX19sYXN0KSk7CiAgICAgc3RkOjpfRGVzdHJveSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0
LCB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwog
ICAgIF9NX2RlYWxsb2NhdGUodGhpcy0+X01faW1wbC5fTV9zdGFydCwKICAgICB0aGlzLT5fTV9p
bXBsLl9NX2VuZF9vZl9zdG9yYWdlCiAgICAgLSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsKICAg
ICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ID0gX190bXA7CiAgICAgdGhpcy0+X01faW1wbC5fTV9m
aW5pc2ggPSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ICsgX19sZW47CiAgICAgdGhpcy0+X01faW1w
bC5fTV9lbmRfb2Zfc3RvcmFnZSA9IHRoaXMtPl9NX2ltcGwuX01fZmluaXNoOwogICB9CiBlbHNl
IGlmIChzaXplKCkgPj0gX19sZW4pCiAgIF9NX2VyYXNlX2F0X2VuZChzdGQ6OmNvcHkoX19maXJz
dCwgX19sYXN0LCB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KSk7CiBlbHNlCiAgIHsKICAgICBfRm9y
d2FyZEl0ZXJhdG9yIF9fbWlkID0gX19maXJzdDsKICAgICBzdGQ6OmFkdmFuY2UoX19taWQsIHNp
emUoKSk7CiAgICAgc3RkOjpjb3B5KF9fZmlyc3QsIF9fbWlkLCB0aGlzLT5fTV9pbXBsLl9NX3N0
YXJ0KTsKICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9CiAgICAgICBzdGQ6Ol9fdW5pbml0
aWFsaXplZF9jb3B5X2EoX19taWQsIF9fbGFzdCwKICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmlu
aXNoLAogICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgfQogICAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgdmVjdG9yPF9U
cCwgX0FsbG9jPjo6CiAgICBfTV9pbnNlcnRfYXV4KGl0ZXJhdG9yIF9fcG9zaXRpb24sIGNvbnN0
IF9UcCYgX194KQogICAgewogICAgICBpZiAodGhpcy0+X01faW1wbC5fTV9maW5pc2ggIT0gdGhp
cy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSkKIHsKICAgdGhpcy0+X01faW1wbC5jb25zdHJ1
Y3QodGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICoodGhpcy0+X01faW1wbC5fTV9maW5p
c2ggLSAxKSk7CiAgICsrdGhpcy0+X01faW1wbC5fTV9maW5pc2g7CiAgIF9UcCBfX3hfY29weSA9
IF9feDsKICAgc3RkOjpjb3B5X2JhY2t3YXJkKF9fcG9zaXRpb24uYmFzZSgpLAogICAgICAgIHRo
aXMtPl9NX2ltcGwuX01fZmluaXNoIC0gMiwKICAgICAgICB0aGlzLT5fTV9pbXBsLl9NX2Zpbmlz
aCAtIDEpOwogICAqX19wb3NpdGlvbiA9IF9feF9jb3B5OwogfQogICAgICBlbHNlCiB7CiAgIGNv
bnN0IHNpemVfdHlwZSBfX29sZF9zaXplID0gc2l6ZSgpOwogICBpZiAoX19vbGRfc2l6ZSA9PSB0
aGlzLT5tYXhfc2l6ZSgpKQogICAgIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKCgidmVjdG9yOjpfTV9p
bnNlcnRfYXV4IikpOwoKCgoKICAgc2l6ZV90eXBlIF9fbGVuID0gX19vbGRfc2l6ZSAhPSAwID8g
MiAqIF9fb2xkX3NpemUgOiAxOwogICBpZiAoX19sZW4gPCBfX29sZF9zaXplKQogICAgIF9fbGVu
ID0gdGhpcy0+bWF4X3NpemUoKTsKCiAgIHBvaW50ZXIgX19uZXdfc3RhcnQodGhpcy0+X01fYWxs
b2NhdGUoX19sZW4pKTsKICAgcG9pbnRlciBfX25ld19maW5pc2goX19uZXdfc3RhcnQpOwogICB0
cnkKICAgICB7CiAgICAgICBfX25ld19maW5pc2ggPQogIHN0ZDo6X191bmluaXRpYWxpemVkX2Nv
cHlfYSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LAogICAgICAgICBfX3Bvc2l0aW9uLmJhc2UoKSwg
X19uZXdfc3RhcnQsCiAgICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgICB0aGlz
LT5fTV9pbXBsLmNvbnN0cnVjdChfX25ld19maW5pc2gsIF9feCk7CiAgICAgICArK19fbmV3X2Zp
bmlzaDsKICAgICAgIF9fbmV3X2ZpbmlzaCA9CiAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9h
KF9fcG9zaXRpb24uYmFzZSgpLAogICAgICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAg
ICAgICAgX19uZXdfZmluaXNoLAogICAgICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAg
IH0KICAgY2F0Y2goLi4uKQogICAgIHsKICAgICAgIHN0ZDo6X0Rlc3Ryb3koX19uZXdfc3RhcnQs
IF9fbmV3X2ZpbmlzaCwgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgICAgIF9NX2RlYWxsb2Nh
dGUoX19uZXdfc3RhcnQsIF9fbGVuKTsKICAgICAgIHRocm93OwogICAgIH0KICAgc3RkOjpfRGVz
dHJveSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LCB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAg
X01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgX01fZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0LAogICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlCiAgIC0gdGhpcy0+X01f
aW1wbC5fTV9zdGFydCk7CiAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgPSBfX25ld19zdGFydDsK
ICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSBfX25ld19maW5pc2g7CiAgIHRoaXMtPl9NX2lt
cGwuX01fZW5kX29mX3N0b3JhZ2UgPSBfX25ld19zdGFydCArIF9fbGVuOwogfQogICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHZvaWQKICAgIHZlY3Rv
cjxfVHAsIF9BbGxvYz46OgogICAgX01fZmlsbF9pbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwg
c2l6ZV90eXBlIF9fbiwgY29uc3QgdmFsdWVfdHlwZSYgX194KQogICAgewogICAgICBpZiAoX19u
ICE9IDApCiB7CiAgIGlmIChzaXplX3R5cGUodGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFn
ZQogICAtIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoKSA+PSBfX24pCiAgICAgewogICAgICAgdmFs
dWVfdHlwZSBfX3hfY29weSA9IF9feDsKICAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2VsZW1zX2Fm
dGVyID0gZW5kKCkgLSBfX3Bvc2l0aW9uOwogICAgICAgcG9pbnRlciBfX29sZF9maW5pc2godGhp
cy0+X01faW1wbC5fTV9maW5pc2gpOwogICAgICAgaWYgKF9fZWxlbXNfYWZ0ZXIgPiBfX24pCiAg
ewogICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKHRoaXMtPl9NX2ltcGwuX01fZmluaXNo
IC0gX19uLAogICAgICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgICAgIHRo
aXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7
CiAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCArPSBfX247CiAgICBzdGQ6OmNvcHlfYmFja3dh
cmQoX19wb3NpdGlvbi5iYXNlKCksIF9fb2xkX2ZpbmlzaCAtIF9fbiwKICAgICAgICAgX19vbGRf
ZmluaXNoKTsKICAgIHN0ZDo6ZmlsbChfX3Bvc2l0aW9uLmJhc2UoKSwgX19wb3NpdGlvbi5iYXNl
KCkgKyBfX24sCiAgICAgICBfX3hfY29weSk7CiAgfQogICAgICAgZWxzZQogIHsKICAgIHN0ZDo6
X191bmluaXRpYWxpemVkX2ZpbGxfbl9hKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICBf
X24gLSBfX2VsZW1zX2FmdGVyLAogICAgICBfX3hfY29weSwKICAgICAgX01fZ2V0X1RwX2FsbG9j
YXRvcigpKTsKICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoICs9IF9fbiAtIF9fZWxlbXNfYWZ0
ZXI7CiAgICBzdGQ6Ol9fdW5pbml0aWFsaXplZF9jb3B5X2EoX19wb3NpdGlvbi5iYXNlKCksIF9f
b2xkX2ZpbmlzaCwKICAgICAgICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgICAg
ICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggKz0g
X19lbGVtc19hZnRlcjsKICAgIHN0ZDo6ZmlsbChfX3Bvc2l0aW9uLmJhc2UoKSwgX19vbGRfZmlu
aXNoLCBfX3hfY29weSk7CiAgfQogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIGNvbnN0IHNp
emVfdHlwZSBfX29sZF9zaXplID0gc2l6ZSgpOwogICAgICAgaWYgKHRoaXMtPm1heF9zaXplKCkg
LSBfX29sZF9zaXplIDwgX19uKQogIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKCgidmVjdG9yOjpfTV9m
aWxsX2luc2VydCIpKTsKCgogICAgICAgc2l6ZV90eXBlIF9fbGVuID0gX19vbGRfc2l6ZSArIHN0
ZDo6bWF4KF9fb2xkX3NpemUsIF9fbik7CiAgICAgICBpZiAoX19sZW4gPCBfX29sZF9zaXplKQog
IF9fbGVuID0gdGhpcy0+bWF4X3NpemUoKTsKCiAgICAgICBwb2ludGVyIF9fbmV3X3N0YXJ0KHRo
aXMtPl9NX2FsbG9jYXRlKF9fbGVuKSk7CiAgICAgICBwb2ludGVyIF9fbmV3X2ZpbmlzaChfX25l
d19zdGFydCk7CiAgICAgICB0cnkKICB7CiAgICBfX25ld19maW5pc2ggPQogICAgICBzdGQ6Ol9f
dW5pbml0aWFsaXplZF9jb3B5X2EodGhpcy0+X01faW1wbC5fTV9zdGFydCwKICAgICAgX19wb3Np
dGlvbi5iYXNlKCksCiAgICAgIF9fbmV3X3N0YXJ0LAogICAgICBfTV9nZXRfVHBfYWxsb2NhdG9y
KCkpOwogICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2EoX19uZXdfZmluaXNoLCBfX24s
IF9feCwKICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgIF9fbmV3X2ZpbmlzaCArPSBf
X247CiAgICBfX25ld19maW5pc2ggPQogICAgICBzdGQ6Ol9fdW5pbml0aWFsaXplZF9jb3B5X2Eo
X19wb3NpdGlvbi5iYXNlKCksCiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICBf
X25ld19maW5pc2gsCiAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgfQogICAgICAgY2F0
Y2goLi4uKQogIHsKICAgIHN0ZDo6X0Rlc3Ryb3koX19uZXdfc3RhcnQsIF9fbmV3X2ZpbmlzaCwK
ICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICBfTV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0
LCBfX2xlbik7CiAgICB0aHJvdzsKICB9CiAgICAgICBzdGQ6Ol9EZXN0cm95KHRoaXMtPl9NX2lt
cGwuX01fc3RhcnQsIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgX01fZ2V0X1RwX2Fs
bG9jYXRvcigpKTsKICAgICAgIF9NX2RlYWxsb2NhdGUodGhpcy0+X01faW1wbC5fTV9zdGFydCwK
ICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAgICAgIC0gdGhpcy0+X01f
aW1wbC5fTV9zdGFydCk7CiAgICAgICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ID0gX19uZXdfc3Rh
cnQ7CiAgICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9IF9fbmV3X2ZpbmlzaDsKICAgICAg
IHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSBfX25ld19zdGFydCArIF9fbGVuOwog
ICAgIH0KIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+
IHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogICAgdm9pZAogICAgdmVjdG9yPF9U
cCwgX0FsbG9jPjo6CiAgICBfTV9yYW5nZV9pbnNlcnQoaXRlcmF0b3IgX19wb3MsIF9JbnB1dEl0
ZXJhdG9yIF9fZmlyc3QsCiAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgc3RkOjppbnB1dF9p
dGVyYXRvcl90YWcpCiAgICB7CiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2Zp
cnN0KQogewogICBfX3BvcyA9IGluc2VydChfX3BvcywgKl9fZmlyc3QpOwogICArK19fcG9zOwog
fQogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAgdmVjdG9y
PF9UcCwgX0FsbG9jPjo6CiAgICAgIF9NX3JhbmdlX2luc2VydChpdGVyYXRvciBfX3Bvc2l0aW9u
LCBfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2xh
c3QsIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpCiAgICAgIHsKIGlmIChfX2ZpcnN0ICE9IF9f
bGFzdCkKICAgewogICAgIGNvbnN0IHNpemVfdHlwZSBfX24gPSBzdGQ6OmRpc3RhbmNlKF9fZmly
c3QsIF9fbGFzdCk7CiAgICAgaWYgKHNpemVfdHlwZSh0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9z
dG9yYWdlCiAgICAgLSB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCkgPj0gX19uKQogICAgICAgewog
IGNvbnN0IHNpemVfdHlwZSBfX2VsZW1zX2FmdGVyID0gZW5kKCkgLSBfX3Bvc2l0aW9uOwogIHBv
aW50ZXIgX19vbGRfZmluaXNoKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoKTsKICBpZiAoX19lbGVt
c19hZnRlciA+IF9fbikKICAgIHsKICAgICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKHRo
aXMtPl9NX2ltcGwuX01fZmluaXNoIC0gX19uLAogICAgICB0aGlzLT5fTV9pbXBsLl9NX2Zpbmlz
aCwKICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgIF9NX2dldF9UcF9hbGxvY2F0
b3IoKSk7CiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoICs9IF9fbjsKICAgICAgc3RkOjpj
b3B5X2JhY2t3YXJkKF9fcG9zaXRpb24uYmFzZSgpLCBfX29sZF9maW5pc2ggLSBfX24sCiAgICAg
ICAgICAgX19vbGRfZmluaXNoKTsKICAgICAgc3RkOjpjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19w
b3NpdGlvbik7CiAgICB9CiAgZWxzZQogICAgewogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlk
ID0gX19maXJzdDsKICAgICAgc3RkOjphZHZhbmNlKF9fbWlkLCBfX2VsZW1zX2FmdGVyKTsKICAg
ICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKF9fbWlkLCBfX2xhc3QsCiAgICAgIHRoaXMt
Pl9NX2ltcGwuX01fZmluaXNoLAogICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgICB0
aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCArPSBfX24gLSBfX2VsZW1zX2FmdGVyOwogICAgICBzdGQ6
Ol9fdW5pbml0aWFsaXplZF9jb3B5X2EoX19wb3NpdGlvbi5iYXNlKCksCiAgICAgIF9fb2xkX2Zp
bmlzaCwKICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgIF9NX2dldF9UcF9hbGxv
Y2F0b3IoKSk7CiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoICs9IF9fZWxlbXNfYWZ0ZXI7
CiAgICAgIHN0ZDo6Y29weShfX2ZpcnN0LCBfX21pZCwgX19wb3NpdGlvbik7CiAgICB9CiAgICAg
ICB9CiAgICAgZWxzZQogICAgICAgewogIGNvbnN0IHNpemVfdHlwZSBfX29sZF9zaXplID0gc2l6
ZSgpOwogIGlmICh0aGlzLT5tYXhfc2l6ZSgpIC0gX19vbGRfc2l6ZSA8IF9fbikKICAgIF9fdGhy
b3dfbGVuZ3RoX2Vycm9yKCgidmVjdG9yOjpfTV9yYW5nZV9pbnNlcnQiKSk7CgoKICBzaXplX3R5
cGUgX19sZW4gPSBfX29sZF9zaXplICsgc3RkOjptYXgoX19vbGRfc2l6ZSwgX19uKTsKICBpZiAo
X19sZW4gPCBfX29sZF9zaXplKQogICAgX19sZW4gPSB0aGlzLT5tYXhfc2l6ZSgpOwoKICBwb2lu
dGVyIF9fbmV3X3N0YXJ0KHRoaXMtPl9NX2FsbG9jYXRlKF9fbGVuKSk7CiAgcG9pbnRlciBfX25l
d19maW5pc2goX19uZXdfc3RhcnQpOwogIHRyeQogICAgewogICAgICBfX25ld19maW5pc2ggPQog
ICAgICAgIHN0ZDo6X191bmluaXRpYWxpemVkX2NvcHlfYSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0
LAogICAgICAgIF9fcG9zaXRpb24uYmFzZSgpLAogICAgICAgIF9fbmV3X3N0YXJ0LAogICAgICAg
IF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgIF9fbmV3X2ZpbmlzaCA9CiAgICAgICAgc3Rk
OjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKF9fZmlyc3QsIF9fbGFzdCwgX19uZXdfZmluaXNoLAog
ICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgIF9fbmV3X2ZpbmlzaCA9CiAgICAg
ICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKF9fcG9zaXRpb24uYmFzZSgpLAogICAgICAg
IHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgIF9fbmV3X2ZpbmlzaCwKICAgICAgICBf
TV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgfQogIGNhdGNoKC4uLikKICAgIHsKICAgICAgc3Rk
OjpfRGVzdHJveShfX25ld19zdGFydCwgX19uZXdfZmluaXNoLAogICAgICBfTV9nZXRfVHBfYWxs
b2NhdG9yKCkpOwogICAgICBfTV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0LCBfX2xlbik7CiAgICAg
IHRocm93OwogICAgfQogIHN0ZDo6X0Rlc3Ryb3kodGhpcy0+X01faW1wbC5fTV9zdGFydCwgdGhp
cy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAg
X01fZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LAogICAgICAgICB0aGlzLT5fTV9p
bXBsLl9NX2VuZF9vZl9zdG9yYWdlCiAgICAgICAgIC0gdGhpcy0+X01faW1wbC5fTV9zdGFydCk7
CiAgdGhpcy0+X01faW1wbC5fTV9zdGFydCA9IF9fbmV3X3N0YXJ0OwogIHRoaXMtPl9NX2ltcGwu
X01fZmluaXNoID0gX19uZXdfZmluaXNoOwogIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3Jh
Z2UgPSBfX25ld19zdGFydCArIF9fbGVuOwogICAgICAgfQogICB9CiAgICAgIH0KCn0KIyA3NSAi
L3Vzci9pbmNsdWRlL2MrKy80LjIuMS92ZWN0b3IiIDIgMwojIDUzICIvb3B0L2xvY2FsL2luY2x1
ZGUvUXRDb3JlL3F2ZWN0b3IuaCIgMgoKCgoKCgoKCnR5cGVkZWYgUXRWYWxpZExpY2Vuc2VGb3JD
b3JlTW9kdWxlIFF0Q29yZU1vZHVsZTsKCnN0cnVjdCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBRVmVjdG9yRGF0YQp7CiAgICBRQmFzaWNBdG9taWNJbnQgcmVmOwogICAg
aW50IGFsbG9jOwogICAgaW50IHNpemU7CgoKCgoKCiAgICB1aW50IHNoYXJhYmxlIDogMTsKICAg
IHVpbnQgY2FwYWNpdHkgOiAxOwogICAgdWludCByZXNlcnZlZCA6IDMwOwoKCiAgICBzdGF0aWMg
UVZlY3RvckRhdGEgc2hhcmVkX251bGw7CgoKCiAgICBzdGF0aWMgUVZlY3RvckRhdGEgKm1hbGxv
YyhpbnQgc2l6ZW9mVHlwZWREYXRhLCBpbnQgc2l6ZSwgaW50IHNpemVvZlQsIFFWZWN0b3JEYXRh
ICppbml0KTsKICAgIHN0YXRpYyBRVmVjdG9yRGF0YSAqYWxsb2NhdGUoaW50IHNpemUsIGludCBh
bGlnbm1lbnQpOwogICAgc3RhdGljIFFWZWN0b3JEYXRhICpyZWFsbG9jYXRlKFFWZWN0b3JEYXRh
ICpvbGQsIGludCBuZXdzaXplLCBpbnQgb2xkc2l6ZSwgaW50IGFsaWdubWVudCk7CiAgICBzdGF0
aWMgdm9pZCBmcmVlKFFWZWN0b3JEYXRhICpkYXRhLCBpbnQgYWxpZ25tZW50KTsKICAgIHN0YXRp
YyBpbnQgZ3JvdyhpbnQgc2l6ZW9mVHlwZWREYXRhLCBpbnQgc2l6ZSwgaW50IHNpemVvZlQsIGJv
b2wgZXhjZXNzaXZlKTsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpzdHJ1Y3QgUVZlY3RvclR5
cGVkRGF0YSA6IHByaXZhdGUgUVZlY3RvckRhdGEKewoKICAgIFQgYXJyYXlbMV07CgogICAgc3Rh
dGljIGlubGluZSB2b2lkIGZyZWUoUVZlY3RvclR5cGVkRGF0YTxUPiAqeCwgaW50IGFsaWdubWVu
dCkgeyBRVmVjdG9yRGF0YTo6ZnJlZShzdGF0aWNfY2FzdDxRVmVjdG9yRGF0YSAqPih4KSwgYWxp
Z25tZW50KTsgfQp9OwoKY2xhc3MgUVJlZ2lvbjsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFz
cyBRVmVjdG9yCnsKICAgIHR5cGVkZWYgUVZlY3RvclR5cGVkRGF0YTxUPiBEYXRhOwogICAgdW5p
b24gewogICAgICAgIFFWZWN0b3JEYXRhICpkOwoKCgogICAgICAgIERhdGEgKnA7CgogICAgfTsK
CnB1YmxpYzoKICAgIGlubGluZSBRVmVjdG9yKCkgOiBkKCZRVmVjdG9yRGF0YTo6c2hhcmVkX251
bGwpIHsgZC0+cmVmLnJlZigpOyB9CiAgICBleHBsaWNpdCBRVmVjdG9yKGludCBzaXplKTsKICAg
IFFWZWN0b3IoaW50IHNpemUsIGNvbnN0IFQgJnQpOwogICAgaW5saW5lIFFWZWN0b3IoY29uc3Qg
UVZlY3RvcjxUPiAmdikgOiBkKHYuZCkgeyBkLT5yZWYucmVmKCk7IGlmICghZC0+c2hhcmFibGUp
IGRldGFjaF9oZWxwZXIoKTsgfQogICAgaW5saW5lIH5RVmVjdG9yKCkgeyBpZiAoIWQpIHJldHVy
bjsgaWYgKCFkLT5yZWYuZGVyZWYoKSkgZnJlZShwKTsgfQogICAgUVZlY3RvcjxUPiAmb3BlcmF0
b3I9KGNvbnN0IFFWZWN0b3I8VD4gJnYpOwogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFWZWN0
b3I8VD4gJnYpIGNvbnN0OwogICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRVmVjdG9y
PFQ+ICZ2KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IHYpOyB9CgogICAgaW5saW5lIGludCBz
aXplKCkgY29uc3QgeyByZXR1cm4gZC0+c2l6ZTsgfQoKICAgIGlubGluZSBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBkLT5zaXplID09IDA7IH0KCiAgICB2b2lkIHJlc2l6ZShpbnQgc2l6
ZSk7CgogICAgaW5saW5lIGludCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIGQtPmFsbG9jOyB9
CiAgICB2b2lkIHJlc2VydmUoaW50IHNpemUpOwogICAgaW5saW5lIHZvaWQgc3F1ZWV6ZSgpIHsg
cmVhbGxvYyhkLT5zaXplLCBkLT5zaXplKTsgZC0+Y2FwYWNpdHkgPSAwOyB9CgogICAgaW5saW5l
IHZvaWQgZGV0YWNoKCkgeyBpZiAoZC0+cmVmICE9IDEpIGRldGFjaF9oZWxwZXIoKTsgfQogICAg
aW5saW5lIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIGQtPnJlZiA9PSAxOyB9CiAg
ICBpbmxpbmUgdm9pZCBzZXRTaGFyYWJsZShib29sIHNoYXJhYmxlKSB7IGlmICghc2hhcmFibGUp
IGRldGFjaCgpOyBkLT5zaGFyYWJsZSA9IHNoYXJhYmxlOyB9CiAgICBpbmxpbmUgYm9vbCBpc1No
YXJlZFdpdGgoY29uc3QgUVZlY3RvcjxUPiAmb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGQgPT0gb3Ro
ZXIuZDsgfQoKICAgIGlubGluZSBUICpkYXRhKCkgeyBkZXRhY2goKTsgcmV0dXJuIHAtPmFycmF5
OyB9CiAgICBpbmxpbmUgY29uc3QgVCAqZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHAtPmFycmF5OyB9
CiAgICBpbmxpbmUgY29uc3QgVCAqY29uc3REYXRhKCkgY29uc3QgeyByZXR1cm4gcC0+YXJyYXk7
IH0KICAgIHZvaWQgY2xlYXIoKTsKCiAgICBjb25zdCBUICZhdChpbnQgaSkgY29uc3Q7CiAgICBU
ICZvcGVyYXRvcltdKGludCBpKTsKICAgIGNvbnN0IFQgJm9wZXJhdG9yW10oaW50IGkpIGNvbnN0
OwogICAgdm9pZCBhcHBlbmQoY29uc3QgVCAmdCk7CiAgICB2b2lkIHByZXBlbmQoY29uc3QgVCAm
dCk7CiAgICB2b2lkIGluc2VydChpbnQgaSwgY29uc3QgVCAmdCk7CiAgICB2b2lkIGluc2VydChp
bnQgaSwgaW50IG4sIGNvbnN0IFQgJnQpOwogICAgdm9pZCByZXBsYWNlKGludCBpLCBjb25zdCBU
ICZ0KTsKICAgIHZvaWQgcmVtb3ZlKGludCBpKTsKICAgIHZvaWQgcmVtb3ZlKGludCBpLCBpbnQg
bik7CgogICAgUVZlY3RvcjxUPiAmZmlsbChjb25zdCBUICZ0LCBpbnQgc2l6ZSA9IC0xKTsKCiAg
ICBpbnQgaW5kZXhPZihjb25zdCBUICZ0LCBpbnQgZnJvbSA9IDApIGNvbnN0OwogICAgaW50IGxh
c3RJbmRleE9mKGNvbnN0IFQgJnQsIGludCBmcm9tID0gLTEpIGNvbnN0OwogICAgYm9vbCBjb250
YWlucyhjb25zdCBUICZ0KSBjb25zdDsKICAgIGludCBjb3VudChjb25zdCBUICZ0KSBjb25zdDsK
IyAyMzEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXZlY3Rvci5oIgogICAgdHlwZWRlZiBU
KiBpdGVyYXRvcjsKICAgIHR5cGVkZWYgY29uc3QgVCogY29uc3RfaXRlcmF0b3I7CgogICAgaW5s
aW5lIGl0ZXJhdG9yIGJlZ2luKCkgeyBkZXRhY2goKTsgcmV0dXJuIHAtPmFycmF5OyB9CiAgICBp
bmxpbmUgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBwLT5hcnJheTsgfQog
ICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yIGNvbnN0QmVnaW4oKSBjb25zdCB7IHJldHVybiBwLT5h
cnJheTsgfQogICAgaW5saW5lIGl0ZXJhdG9yIGVuZCgpIHsgZGV0YWNoKCk7IHJldHVybiBwLT5h
cnJheSArIGQtPnNpemU7IH0KICAgIGlubGluZSBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7
IHJldHVybiBwLT5hcnJheSArIGQtPnNpemU7IH0KICAgIGlubGluZSBjb25zdF9pdGVyYXRvciBj
b25zdEVuZCgpIGNvbnN0IHsgcmV0dXJuIHAtPmFycmF5ICsgZC0+c2l6ZTsgfQogICAgaXRlcmF0
b3IgaW5zZXJ0KGl0ZXJhdG9yIGJlZm9yZSwgaW50IG4sIGNvbnN0IFQgJngpOwogICAgaW5saW5l
IGl0ZXJhdG9yIGluc2VydChpdGVyYXRvciBiZWZvcmUsIGNvbnN0IFQgJngpIHsgcmV0dXJuIGlu
c2VydChiZWZvcmUsIDEsIHgpOyB9CiAgICBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBiZWdpbiwg
aXRlcmF0b3IgZW5kKTsKICAgIGlubGluZSBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBwb3MpIHsg
cmV0dXJuIGVyYXNlKHBvcywgcG9zKzEpOyB9CgoKICAgIGlubGluZSBpbnQgY291bnQoKSBjb25z
dCB7IHJldHVybiBkLT5zaXplOyB9CiAgICBpbmxpbmUgVCYgZmlyc3QoKSB7ICgoISghaXNFbXB0
eSgpKSkgPyBxdF9hc3NlcnQoIiFpc0VtcHR5KCkiLCIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3Jl
L3F2ZWN0b3IuaCIsMjQ3KSA6IHF0X25vb3AoKSk7IHJldHVybiAqYmVnaW4oKTsgfQogICAgaW5s
aW5lIGNvbnN0IFQgJmZpcnN0KCkgY29uc3QgeyAoKCEoIWlzRW1wdHkoKSkpID8gcXRfYXNzZXJ0
KCIhaXNFbXB0eSgpIiwiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xdmVjdG9yLmgiLDI0OCkg
OiBxdF9ub29wKCkpOyByZXR1cm4gKmJlZ2luKCk7IH0KICAgIGlubGluZSBUJiBsYXN0KCkgeyAo
KCEoIWlzRW1wdHkoKSkpID8gcXRfYXNzZXJ0KCIhaXNFbXB0eSgpIiwiL29wdC9sb2NhbC9pbmNs
dWRlL1F0Q29yZS9xdmVjdG9yLmgiLDI0OSkgOiBxdF9ub29wKCkpOyByZXR1cm4gKihlbmQoKS0x
KTsgfQogICAgaW5saW5lIGNvbnN0IFQgJmxhc3QoKSBjb25zdCB7ICgoISghaXNFbXB0eSgpKSkg
PyBxdF9hc3NlcnQoIiFpc0VtcHR5KCkiLCIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3F2ZWN0
b3IuaCIsMjUwKSA6IHF0X25vb3AoKSk7IHJldHVybiAqKGVuZCgpLTEpOyB9CiAgICBpbmxpbmUg
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IFQgJnQpIGNvbnN0IHsgcmV0dXJuICFpc0VtcHR5KCkgJiYg
Zmlyc3QoKSA9PSB0OyB9CiAgICBpbmxpbmUgYm9vbCBlbmRzV2l0aChjb25zdCBUICZ0KSBjb25z
dCB7IHJldHVybiAhaXNFbXB0eSgpICYmIGxhc3QoKSA9PSB0OyB9CiAgICBRVmVjdG9yPFQ+IG1p
ZChpbnQgcG9zLCBpbnQgbGVuZ3RoID0gLTEpIGNvbnN0OwoKICAgIFQgdmFsdWUoaW50IGkpIGNv
bnN0OwogICAgVCB2YWx1ZShpbnQgaSwgY29uc3QgVCAmZGVmYXVsdFZhbHVlKSBjb25zdDsKCgog
ICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CiAgICB0eXBlZGVmIHZhbHVlX3R5cGUqIHBvaW50ZXI7
CiAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqIGNvbnN0X3BvaW50ZXI7CiAgICB0eXBlZGVm
IHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYgY29u
c3RfcmVmZXJlbmNlOwogICAgdHlwZWRlZiBxcHRyZGlmZiBkaWZmZXJlbmNlX3R5cGU7CiAgICB0
eXBlZGVmIGl0ZXJhdG9yIEl0ZXJhdG9yOwogICAgdHlwZWRlZiBjb25zdF9pdGVyYXRvciBDb25z
dEl0ZXJhdG9yOwogICAgdHlwZWRlZiBpbnQgc2l6ZV90eXBlOwogICAgaW5saW5lIHZvaWQgcHVz
aF9iYWNrKGNvbnN0IFQgJnQpIHsgYXBwZW5kKHQpOyB9CiAgICBpbmxpbmUgdm9pZCBwdXNoX2Zy
b250KGNvbnN0IFQgJnQpIHsgcHJlcGVuZCh0KTsgfQogICAgdm9pZCBwb3BfYmFjaygpIHsgKCgh
KCFpc0VtcHR5KCkpKSA/IHF0X2Fzc2VydCgiIWlzRW1wdHkoKSIsIi9vcHQvbG9jYWwvaW5jbHVk
ZS9RdENvcmUvcXZlY3Rvci5oIiwyNzApIDogcXRfbm9vcCgpKTsgZXJhc2UoZW5kKCktMSk7IH0K
ICAgIHZvaWQgcG9wX2Zyb250KCkgeyAoKCEoIWlzRW1wdHkoKSkpID8gcXRfYXNzZXJ0KCIhaXNF
bXB0eSgpIiwiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xdmVjdG9yLmgiLDI3MSkgOiBxdF9u
b29wKCkpOyBlcmFzZShiZWdpbigpKTsgfQogICAgaW5saW5lIGJvb2wgZW1wdHkoKSBjb25zdAog
ICAgeyByZXR1cm4gZC0+c2l6ZSA9PSAwOyB9CiAgICBpbmxpbmUgVCYgZnJvbnQoKSB7IHJldHVy
biBmaXJzdCgpOyB9CiAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlIGZyb250KCkgY29uc3QgeyBy
ZXR1cm4gZmlyc3QoKTsgfQogICAgaW5saW5lIHJlZmVyZW5jZSBiYWNrKCkgeyByZXR1cm4gbGFz
dCgpOyB9CiAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlIGJhY2soKSBjb25zdCB7IHJldHVybiBs
YXN0KCk7IH0KCgogICAgUVZlY3RvcjxUPiAmb3BlcmF0b3IrPShjb25zdCBRVmVjdG9yPFQ+ICZs
KTsKICAgIGlubGluZSBRVmVjdG9yPFQ+IG9wZXJhdG9yKyhjb25zdCBRVmVjdG9yPFQ+ICZsKSBj
b25zdAogICAgeyBRVmVjdG9yIG4gPSAqdGhpczsgbiArPSBsOyByZXR1cm4gbjsgfQogICAgaW5s
aW5lIFFWZWN0b3I8VD4gJm9wZXJhdG9yKz0oY29uc3QgVCAmdCkKICAgIHsgYXBwZW5kKHQpOyBy
ZXR1cm4gKnRoaXM7IH0KICAgIGlubGluZSBRVmVjdG9yPFQ+ICZvcGVyYXRvcjw8IChjb25zdCBU
ICZ0KQogICAgeyBhcHBlbmQodCk7IHJldHVybiAqdGhpczsgfQogICAgaW5saW5lIFFWZWN0b3I8
VD4gJm9wZXJhdG9yPDwoY29uc3QgUVZlY3RvcjxUPiAmbCkKICAgIHsgKnRoaXMgKz0gbDsgcmV0
dXJuICp0aGlzOyB9CgogICAgUUxpc3Q8VD4gdG9MaXN0KCkgY29uc3Q7CgogICAgc3RhdGljIFFW
ZWN0b3I8VD4gZnJvbUxpc3QoY29uc3QgUUxpc3Q8VD4gJmxpc3QpOwoKCiAgICBzdGF0aWMgaW5s
aW5lIFFWZWN0b3I8VD4gZnJvbVN0ZFZlY3Rvcihjb25zdCBzdGQ6OnZlY3RvcjxUPiAmdmVjdG9y
KQogICAgeyBRVmVjdG9yPFQ+IHRtcDsgdG1wLnJlc2VydmUodmVjdG9yLnNpemUoKSk7IHFDb3B5
KHZlY3Rvci5iZWdpbigpLCB2ZWN0b3IuZW5kKCksIHN0ZDo6YmFja19pbnNlcnRlcih0bXApKTsg
cmV0dXJuIHRtcDsgfQogICAgaW5saW5lIHN0ZDo6dmVjdG9yPFQ+IHRvU3RkVmVjdG9yKCkgY29u
c3QKICAgIHsgc3RkOjp2ZWN0b3I8VD4gdG1wOyB0bXAucmVzZXJ2ZShzaXplKCkpOyBxQ29weShj
b25zdEJlZ2luKCksIGNvbnN0RW5kKCksIHN0ZDo6YmFja19pbnNlcnRlcih0bXApKTsgcmV0dXJu
IHRtcDsgfQoKCnByaXZhdGU6CiAgICBmcmllbmQgY2xhc3MgUVJlZ2lvbjsKCiAgICB2b2lkIGRl
dGFjaF9oZWxwZXIoKTsKICAgIFFWZWN0b3JEYXRhICptYWxsb2MoaW50IGFsbG9jKTsKICAgIHZv
aWQgcmVhbGxvYyhpbnQgc2l6ZSwgaW50IGFsbG9jKTsKICAgIHZvaWQgZnJlZShEYXRhICpkKTsK
ICAgIGludCBzaXplT2ZUeXBlZERhdGEoKSB7CgoKICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyICo+KCYocmVpbnRlcnByZXRfY2FzdDxjb25zdCBEYXRhICo+KHRoaXMp
KS0+YXJyYXlbMV0pIC0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRoaXMpOwogICAg
fQogICAgaW5saW5lIGludCBhbGlnbk9mVHlwZWREYXRhKCkgY29uc3QKICAgIHsKCiAgICAgICAg
cmV0dXJuIHFNYXg8aW50PihzaXplb2Yodm9pZCopLCBfX2FsaWdub2ZfXyhEYXRhKSk7CgoKCiAg
ICB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kdm9pZCBRVmVjdG9yPFQ+OjpkZXRhY2hfaGVs
cGVyKCkKeyByZWFsbG9jKGQtPnNpemUsIGQtPmFsbG9jKTsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4Kdm9pZCBRVmVjdG9yPFQ+OjpyZXNlcnZlKGludCBhc2l6ZSkKeyBpZiAoYXNpemUgPiBkLT5h
bGxvYykgcmVhbGxvYyhkLT5zaXplLCBhc2l6ZSk7IGlmIChkLT5yZWYgPT0gMSkgZC0+Y2FwYWNp
dHkgPSAxOyB9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp2b2lkIFFWZWN0b3I8VD46OnJlc2l6ZShp
bnQgYXNpemUpCnsgcmVhbGxvYyhhc2l6ZSwgKGFzaXplID4gZC0+YWxsb2MgfHwgKCFkLT5jYXBh
Y2l0eSAmJiBhc2l6ZSA8IGQtPnNpemUgJiYgYXNpemUgPCAoZC0+YWxsb2MgPj4gMSkpKSA/CiAg
ICAgICAgICBRVmVjdG9yRGF0YTo6Z3JvdyhzaXplT2ZUeXBlZERhdGEoKSwgYXNpemUsIHNpemVv
ZihUKSwgUVR5cGVJbmZvPFQ+Ojppc1N0YXRpYykKICAgICAgICAgIDogZC0+YWxsb2MpOyB9CnRl
bXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgdm9pZCBRVmVjdG9yPFQ+OjpjbGVhcigpCnsgKnRo
aXMgPSBRVmVjdG9yPFQ+KCk7IH0KdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSBjb25zdCBU
ICZRVmVjdG9yPFQ+OjphdChpbnQgaSkgY29uc3QKeyAoKCEoaSA+PSAwICYmIGkgPCBkLT5zaXpl
KSkgPyBxdF9hc3NlcnRfeCgiUVZlY3RvcjxUPjo6YXQiLCAiaW5kZXggb3V0IG9mIHJhbmdlIiwi
L29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xdmVjdG9yLmgiLDMzOSkgOiBxdF9ub29wKCkpOwog
IHJldHVybiBwLT5hcnJheVtpXTsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIGNvbnN0
IFQgJlFWZWN0b3I8VD46Om9wZXJhdG9yW10oaW50IGkpIGNvbnN0CnsgKCghKGkgPj0gMCAmJiBp
IDwgZC0+c2l6ZSkpID8gcXRfYXNzZXJ0X3goIlFWZWN0b3I8VD46Om9wZXJhdG9yW10iLCAiaW5k
ZXggb3V0IG9mIHJhbmdlIiwiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xdmVjdG9yLmgiLDM0
MykgOiBxdF9ub29wKCkpOwogIHJldHVybiBwLT5hcnJheVtpXTsgfQp0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KaW5saW5lIFQgJlFWZWN0b3I8VD46Om9wZXJhdG9yW10oaW50IGkpCnsgKCghKGkgPj0g
MCAmJiBpIDwgZC0+c2l6ZSkpID8gcXRfYXNzZXJ0X3goIlFWZWN0b3I8VD46Om9wZXJhdG9yW10i
LCAiaW5kZXggb3V0IG9mIHJhbmdlIiwiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xdmVjdG9y
LmgiLDM0NykgOiBxdF9ub29wKCkpOwogIHJldHVybiBkYXRhKClbaV07IH0KdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CmlubGluZSB2b2lkIFFWZWN0b3I8VD46Omluc2VydChpbnQgaSwgY29uc3QgVCAm
dCkKeyAoKCEoaSA+PSAwICYmIGkgPD0gZC0+c2l6ZSkpID8gcXRfYXNzZXJ0X3goIlFWZWN0b3I8
VD46Omluc2VydCIsICJpbmRleCBvdXQgb2YgcmFuZ2UiLCIvb3B0L2xvY2FsL2luY2x1ZGUvUXRD
b3JlL3F2ZWN0b3IuaCIsMzUxKSA6IHF0X25vb3AoKSk7CiAgaW5zZXJ0KGJlZ2luKCkgKyBpLCAx
LCB0KTsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIHZvaWQgUVZlY3RvcjxUPjo6aW5z
ZXJ0KGludCBpLCBpbnQgbiwgY29uc3QgVCAmdCkKeyAoKCEoaSA+PSAwICYmIGkgPD0gZC0+c2l6
ZSkpID8gcXRfYXNzZXJ0X3goIlFWZWN0b3I8VD46Omluc2VydCIsICJpbmRleCBvdXQgb2YgcmFu
Z2UiLCIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3F2ZWN0b3IuaCIsMzU1KSA6IHF0X25vb3Ao
KSk7CiAgaW5zZXJ0KGJlZ2luKCkgKyBpLCBuLCB0KTsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
aW5saW5lIHZvaWQgUVZlY3RvcjxUPjo6cmVtb3ZlKGludCBpLCBpbnQgbikKeyAoKCEoaSA+PSAw
ICYmIG4gPj0gMCAmJiBpICsgbiA8PSBkLT5zaXplKSkgPyBxdF9hc3NlcnRfeCgiUVZlY3RvcjxU
Pjo6cmVtb3ZlIiwgImluZGV4IG91dCBvZiByYW5nZSIsIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENv
cmUvcXZlY3Rvci5oIiwzNTkpIDogcXRfbm9vcCgpKTsKICBlcmFzZShiZWdpbigpICsgaSwgYmVn
aW4oKSArIGkgKyBuKTsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIHZvaWQgUVZlY3Rv
cjxUPjo6cmVtb3ZlKGludCBpKQp7ICgoIShpID49IDAgJiYgaSA8IGQtPnNpemUpKSA/IHF0X2Fz
c2VydF94KCJRVmVjdG9yPFQ+OjpyZW1vdmUiLCAiaW5kZXggb3V0IG9mIHJhbmdlIiwiL29wdC9s
b2NhbC9pbmNsdWRlL1F0Q29yZS9xdmVjdG9yLmgiLDM2MykgOiBxdF9ub29wKCkpOwogIGVyYXNl
KGJlZ2luKCkgKyBpLCBiZWdpbigpICsgaSArIDEpOyB9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpp
bmxpbmUgdm9pZCBRVmVjdG9yPFQ+OjpwcmVwZW5kKGNvbnN0IFQgJnQpCnsgaW5zZXJ0KGJlZ2lu
KCksIDEsIHQpOyB9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIHZvaWQgUVZlY3RvcjxU
Pjo6cmVwbGFjZShpbnQgaSwgY29uc3QgVCAmdCkKewogICAgKCghKGkgPj0gMCAmJiBpIDwgZC0+
c2l6ZSkpID8gcXRfYXNzZXJ0X3goIlFWZWN0b3I8VD46OnJlcGxhY2UiLCAiaW5kZXggb3V0IG9m
IHJhbmdlIiwiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xdmVjdG9yLmgiLDM3MikgOiBxdF9u
b29wKCkpOwogICAgY29uc3QgVCBjb3B5KHQpOwogICAgZGF0YSgpW2ldID0gY29weTsKfQoKdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+ClFWZWN0b3I8VD4gJlFWZWN0b3I8VD46Om9wZXJhdG9yPShjb25z
dCBRVmVjdG9yPFQ+ICZ2KQp7CiAgICBRVmVjdG9yRGF0YSAqbyA9IHYuZDsKICAgIG8tPnJlZi5y
ZWYoKTsKICAgIGlmICghZC0+cmVmLmRlcmVmKCkpCiAgICAgICAgZnJlZShwKTsKICAgIGQgPSBv
OwogICAgaWYgKCFkLT5zaGFyYWJsZSkKICAgICAgICBkZXRhY2hfaGVscGVyKCk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgUVZlY3RvckRhdGEgKlFW
ZWN0b3I8VD46Om1hbGxvYyhpbnQgYWFsbG9jKQp7CiAgICBRVmVjdG9yRGF0YSAqdmVjdG9yZGF0
YSA9IFFWZWN0b3JEYXRhOjphbGxvY2F0ZShzaXplT2ZUeXBlZERhdGEoKSArIChhYWxsb2MgLSAx
KSAqIHNpemVvZihUKSwgYWxpZ25PZlR5cGVkRGF0YSgpKTsKICAgIGRvIHsgaWYgKCEodmVjdG9y
ZGF0YSkpIHFCYWRBbGxvYygpOyB9IHdoaWxlICgwKTsKICAgIHJldHVybiB2ZWN0b3JkYXRhOwp9
Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KUVZlY3RvcjxUPjo6UVZlY3RvcihpbnQgYXNpemUpCnsK
ICAgIGQgPSBtYWxsb2MoYXNpemUpOwogICAgZC0+cmVmID0gMTsKICAgIGQtPmFsbG9jID0gZC0+
c2l6ZSA9IGFzaXplOwogICAgZC0+c2hhcmFibGUgPSB0cnVlOwogICAgZC0+Y2FwYWNpdHkgPSBm
YWxzZTsKICAgIGlmIChRVHlwZUluZm88VD46OmlzQ29tcGxleCkgewogICAgICAgIFQqIGIgPSBw
LT5hcnJheTsKICAgICAgICBUKiBpID0gcC0+YXJyYXkgKyBkLT5zaXplOwogICAgICAgIHdoaWxl
IChpICE9IGIpCiAgICAgICAgICAgIG5ldyAoLS1pKSBUOwogICAgfSBlbHNlIHsKICAgICAgICBx
TWVtU2V0KHAtPmFycmF5LCAwLCBhc2l6ZSAqIHNpemVvZihUKSk7CiAgICB9Cn0KCnRlbXBsYXRl
IDx0eXBlbmFtZSBUPgpRVmVjdG9yPFQ+OjpRVmVjdG9yKGludCBhc2l6ZSwgY29uc3QgVCAmdCkK
ewogICAgZCA9IG1hbGxvYyhhc2l6ZSk7CiAgICBkLT5yZWYgPSAxOwogICAgZC0+YWxsb2MgPSBk
LT5zaXplID0gYXNpemU7CiAgICBkLT5zaGFyYWJsZSA9IHRydWU7CiAgICBkLT5jYXBhY2l0eSA9
IGZhbHNlOwogICAgVCogaSA9IHAtPmFycmF5ICsgZC0+c2l6ZTsKICAgIHdoaWxlIChpICE9IHAt
PmFycmF5KQogICAgICAgIG5ldyAoLS1pKSBUKHQpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
dm9pZCBRVmVjdG9yPFQ+OjpmcmVlKERhdGEgKngpCnsKICAgIGlmIChRVHlwZUluZm88VD46Omlz
Q29tcGxleCkgewogICAgICAgIFQqIGIgPSB4LT5hcnJheTsKICAgICAgICB1bmlvbiB7IFFWZWN0
b3JEYXRhICpkOyBEYXRhICpwOyB9IHU7CiAgICAgICAgdS5wID0geDsKICAgICAgICBUKiBpID0g
YiArIHUuZC0+c2l6ZTsKICAgICAgICB3aGlsZSAoaS0tICE9IGIpCiAgICAgICAgICAgICBpLT5+
VCgpOwogICAgfQogICAgeC0+ZnJlZSh4LCBhbGlnbk9mVHlwZWREYXRhKCkpOwp9Cgp0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4Kdm9pZCBRVmVjdG9yPFQ+OjpyZWFsbG9jKGludCBhc2l6ZSwgaW50IGFh
bGxvYykKewogICAgKCghKGFzaXplIDw9IGFhbGxvYykpID8gcXRfYXNzZXJ0KCJhc2l6ZSA8PSBh
YWxsb2MiLCIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3F2ZWN0b3IuaCIsNDQ2KSA6IHF0X25v
b3AoKSk7CiAgICBUICpwT2xkOwogICAgVCAqcE5ldzsKICAgIHVuaW9uIHsgUVZlY3RvckRhdGEg
KmQ7IERhdGEgKnA7IH0geDsKICAgIHguZCA9IGQ7CgogICAgaWYgKFFUeXBlSW5mbzxUPjo6aXND
b21wbGV4ICYmIGFzaXplIDwgZC0+c2l6ZSAmJiBkLT5yZWYgPT0gMSApIHsKCgogICAgICAgIHBP
bGQgPSBwLT5hcnJheSArIGQtPnNpemU7CiAgICAgICAgcE5ldyA9IHAtPmFycmF5ICsgYXNpemU7
CiAgICAgICAgd2hpbGUgKGFzaXplIDwgZC0+c2l6ZSkgewogICAgICAgICAgICAoLS1wT2xkKS0+
flQoKTsKICAgICAgICAgICAgZC0+c2l6ZS0tOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoYWFs
bG9jICE9IGQtPmFsbG9jIHx8IGQtPnJlZiAhPSAxKSB7CgogICAgICAgIGlmIChRVHlwZUluZm88
VD46OmlzU3RhdGljKSB7CiAgICAgICAgICAgIHguZCA9IG1hbGxvYyhhYWxsb2MpOwogICAgICAg
ICAgICBkbyB7IGlmICghKHgucCkpIHFCYWRBbGxvYygpOyB9IHdoaWxlICgwKTsKICAgICAgICAg
ICAgeC5kLT5zaXplID0gMDsKICAgICAgICB9IGVsc2UgaWYgKGQtPnJlZiAhPSAxKSB7CiAgICAg
ICAgICAgIHguZCA9IG1hbGxvYyhhYWxsb2MpOwogICAgICAgICAgICBkbyB7IGlmICghKHgucCkp
IHFCYWRBbGxvYygpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgaWYgKFFUeXBlSW5mbzxUPjo6
aXNDb21wbGV4KSB7CiAgICAgICAgICAgICAgICB4LmQtPnNpemUgPSAwOwogICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgOjptZW1jcHkoeC5wLCBwLCBzaXplT2ZUeXBlZERhdGEo
KSArIChxTWluKGFhbGxvYywgZC0+YWxsb2MpIC0gMSkgKiBzaXplb2YoVCkpOwogICAgICAgICAg
ICAgICAgeC5kLT5zaXplID0gZC0+c2l6ZTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBRVmVjdG9yRGF0YSAqbWVtID0gUVZl
Y3RvckRhdGE6OnJlYWxsb2NhdGUoZCwgc2l6ZU9mVHlwZWREYXRhKCkgKyAoYWFsbG9jIC0gMSkg
KiBzaXplb2YoVCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZU9mVHlwZWREYXRhKCkgKyAoZC0+YWxsb2MgLSAxKSAqIHNpemVv
ZihUKSwgYWxpZ25PZlR5cGVkRGF0YSgpKTsKICAgICAgICAgICAgICAgIGRvIHsgaWYgKCEobWVt
KSkgcUJhZEFsbG9jKCk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgeC5kID0gZCA9IG1l
bTsKICAgICAgICAgICAgICAgIHguZC0+c2l6ZSA9IGQtPnNpemU7CiAgICAgICAgICAgIH0gY2F0
Y2ggKGNvbnN0IHN0ZDo6YmFkX2FsbG9jICYpIHsKICAgICAgICAgICAgICAgIGlmIChhYWxsb2Mg
PiBkLT5hbGxvYykKICAgICAgICAgICAgICAgICAgICB0aHJvdzsKICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgICAgICB4LmQtPnJlZiA9IDE7CiAgICAgICAgeC5kLT5hbGxvYyA9IGFhbGxvYzsK
ICAgICAgICB4LmQtPnNoYXJhYmxlID0gdHJ1ZTsKICAgICAgICB4LmQtPmNhcGFjaXR5ID0gZC0+
Y2FwYWNpdHk7CiAgICAgICAgeC5kLT5yZXNlcnZlZCA9IDA7CiAgICB9CgogICAgaWYgKFFUeXBl
SW5mbzxUPjo6aXNDb21wbGV4KSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcE9sZCA9IHAt
PmFycmF5ICsgeC5kLT5zaXplOwogICAgICAgICAgICBwTmV3ID0geC5wLT5hcnJheSArIHguZC0+
c2l6ZTsKCiAgICAgICAgICAgIGNvbnN0IGludCB0b01vdmUgPSBxTWluKGFzaXplLCBkLT5zaXpl
KTsKICAgICAgICAgICAgd2hpbGUgKHguZC0+c2l6ZSA8IHRvTW92ZSkgewogICAgICAgICAgICAg
ICAgbmV3IChwTmV3KyspIFQoKnBPbGQrKyk7CiAgICAgICAgICAgICAgICB4LmQtPnNpemUrKzsK
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgd2hpbGUgKHguZC0+c2l6ZSA8IGFzaXplKSB7CiAg
ICAgICAgICAgICAgICBuZXcgKHBOZXcrKykgVDsKICAgICAgICAgICAgICAgIHguZC0+c2l6ZSsr
OwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoLi4uKSB7CiAgICAgICAgICAgIGZyZWUo
eC5wKTsKICAgICAgICAgICAgdGhyb3c7CiAgICAgICAgfQoKICAgIH0gZWxzZSBpZiAoYXNpemUg
PiB4LmQtPnNpemUpIHsKCiAgICAgICAgcU1lbVNldCh4LnAtPmFycmF5ICsgeC5kLT5zaXplLCAw
LCAoYXNpemUgLSB4LmQtPnNpemUpICogc2l6ZW9mKFQpKTsKICAgIH0KICAgIHguZC0+c2l6ZSA9
IGFzaXplOwoKICAgIGlmIChkICE9IHguZCkgewogICAgICAgIGlmICghZC0+cmVmLmRlcmVmKCkp
CiAgICAgICAgICAgIGZyZWUocCk7CiAgICAgICAgZCA9IHguZDsKICAgIH0KfQoKdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIFQgUVZlY3RvcjxUPjo6dmFsdWUoaW50IGkpIGNvbnN0CnsKICAgIGlmIChp
IDwgMCB8fCBpID49IGQtPnNpemUpIHsKICAgICAgICByZXR1cm4gVCgpOwogICAgfQogICAgcmV0
dXJuIHAtPmFycmF5W2ldOwp9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBUIFFWZWN0b3I8VD46OnZh
bHVlKGludCBpLCBjb25zdCBUICZkZWZhdWx0VmFsdWUpIGNvbnN0CnsKICAgIHJldHVybiAoKGkg
PCAwIHx8IGkgPj0gZC0+c2l6ZSkgPyBkZWZhdWx0VmFsdWUgOiBwLT5hcnJheVtpXSk7Cn0KCnRl
bXBsYXRlIDx0eXBlbmFtZSBUPgp2b2lkIFFWZWN0b3I8VD46OmFwcGVuZChjb25zdCBUICZ0KQp7
CiAgICBpZiAoZC0+cmVmICE9IDEgfHwgZC0+c2l6ZSArIDEgPiBkLT5hbGxvYykgewogICAgICAg
IGNvbnN0IFQgY29weSh0KTsKICAgICAgICByZWFsbG9jKGQtPnNpemUsIFFWZWN0b3JEYXRhOjpn
cm93KHNpemVPZlR5cGVkRGF0YSgpLCBkLT5zaXplICsgMSwgc2l6ZW9mKFQpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVR5cGVJbmZvPFQ+Ojppc1N0YXRpYykp
OwogICAgICAgIGlmIChRVHlwZUluZm88VD46OmlzQ29tcGxleCkKICAgICAgICAgICAgbmV3IChw
LT5hcnJheSArIGQtPnNpemUpIFQoY29weSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBwLT5h
cnJheVtkLT5zaXplXSA9IGNvcHk7CiAgICB9IGVsc2UgewogICAgICAgIGlmIChRVHlwZUluZm88
VD46OmlzQ29tcGxleCkKICAgICAgICAgICAgbmV3IChwLT5hcnJheSArIGQtPnNpemUpIFQodCk7
CiAgICAgICAgZWxzZQogICAgICAgICAgICBwLT5hcnJheVtkLT5zaXplXSA9IHQ7CiAgICB9CiAg
ICArK2QtPnNpemU7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp0eXBlbmFtZSBRVmVjdG9yPFQ+
OjppdGVyYXRvciBRVmVjdG9yPFQ+OjppbnNlcnQoaXRlcmF0b3IgYmVmb3JlLCBzaXplX3R5cGUg
biwgY29uc3QgVCAmdCkKewogICAgaW50IG9mZnNldCA9IGludChiZWZvcmUgLSBwLT5hcnJheSk7
CiAgICBpZiAobiAhPSAwKSB7CiAgICAgICAgY29uc3QgVCBjb3B5KHQpOwogICAgICAgIGlmIChk
LT5yZWYgIT0gMSB8fCBkLT5zaXplICsgbiA+IGQtPmFsbG9jKQogICAgICAgICAgICByZWFsbG9j
KGQtPnNpemUsIFFWZWN0b3JEYXRhOjpncm93KHNpemVPZlR5cGVkRGF0YSgpLCBkLT5zaXplICsg
biwgc2l6ZW9mKFQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFFUeXBlSW5mbzxUPjo6aXNTdGF0aWMpKTsKICAgICAgICBpZiAoUVR5cGVJbmZvPFQ+Ojpp
c1N0YXRpYykgewogICAgICAgICAgICBUICpiID0gcC0+YXJyYXkgKyBkLT5zaXplOwogICAgICAg
ICAgICBUICppID0gcC0+YXJyYXkgKyBkLT5zaXplICsgbjsKICAgICAgICAgICAgd2hpbGUgKGkg
IT0gYikKICAgICAgICAgICAgICAgIG5ldyAoLS1pKSBUOwogICAgICAgICAgICBpID0gcC0+YXJy
YXkgKyBkLT5zaXplOwogICAgICAgICAgICBUICpqID0gaSArIG47CiAgICAgICAgICAgIGIgPSBw
LT5hcnJheSArIG9mZnNldDsKICAgICAgICAgICAgd2hpbGUgKGkgIT0gYikKICAgICAgICAgICAg
ICAgICotLWogPSAqLS1pOwogICAgICAgICAgICBpID0gYituOwogICAgICAgICAgICB3aGlsZSAo
aSAhPSBiKQogICAgICAgICAgICAgICAgKi0taSA9IGNvcHk7CiAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgVCAqYiA9IHAtPmFycmF5ICsgb2Zmc2V0OwogICAgICAgICAgICBUICppID0gYiAr
IG47CiAgICAgICAgICAgIG1lbW1vdmUoaSwgYiwgKGQtPnNpemUgLSBvZmZzZXQpICogc2l6ZW9m
KFQpKTsKICAgICAgICAgICAgd2hpbGUgKGkgIT0gYikKICAgICAgICAgICAgICAgIG5ldyAoLS1p
KSBUKGNvcHkpOwogICAgICAgIH0KICAgICAgICBkLT5zaXplICs9IG47CiAgICB9CiAgICByZXR1
cm4gcC0+YXJyYXkgKyBvZmZzZXQ7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp0eXBlbmFtZSBR
VmVjdG9yPFQ+OjppdGVyYXRvciBRVmVjdG9yPFQ+OjplcmFzZShpdGVyYXRvciBhYmVnaW4sIGl0
ZXJhdG9yIGFlbmQpCnsKICAgIGludCBmID0gaW50KGFiZWdpbiAtIHAtPmFycmF5KTsKICAgIGlu
dCBsID0gaW50KGFlbmQgLSBwLT5hcnJheSk7CiAgICBpbnQgbiA9IGwgLSBmOwogICAgZGV0YWNo
KCk7CiAgICBpZiAoUVR5cGVJbmZvPFQ+Ojppc0NvbXBsZXgpIHsKICAgICAgICBxQ29weShwLT5h
cnJheStsLCBwLT5hcnJheStkLT5zaXplLCBwLT5hcnJheStmKTsKICAgICAgICBUICppID0gcC0+
YXJyYXkrZC0+c2l6ZTsKICAgICAgICBUKiBiID0gcC0+YXJyYXkrZC0+c2l6ZS1uOwogICAgICAg
IHdoaWxlIChpICE9IGIpIHsKICAgICAgICAgICAgLS1pOwogICAgICAgICAgICBpLT5+VCgpOwog
ICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgbWVtbW92ZShwLT5hcnJheSArIGYsIHAtPmFy
cmF5ICsgbCwgKGQtPnNpemUtbCkqc2l6ZW9mKFQpKTsKICAgIH0KICAgIGQtPnNpemUgLT0gbjsK
ICAgIHJldHVybiBwLT5hcnJheSArIGY7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpib29sIFFW
ZWN0b3I8VD46Om9wZXJhdG9yPT0oY29uc3QgUVZlY3RvcjxUPiAmdikgY29uc3QKewogICAgaWYg
KGQtPnNpemUgIT0gdi5kLT5zaXplKQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIGlmIChkID09
IHYuZCkKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIFQqIGIgPSBwLT5hcnJheTsKICAgIFQqIGkg
PSBiICsgZC0+c2l6ZTsKICAgIFQqIGogPSB2LnAtPmFycmF5ICsgZC0+c2l6ZTsKICAgIHdoaWxl
IChpICE9IGIpCiAgICAgICAgaWYgKCEoKi0taSA9PSAqLS1qKSkKICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpRVmVjdG9y
PFQ+ICZRVmVjdG9yPFQ+OjpmaWxsKGNvbnN0IFQgJmZyb20sIGludCBhc2l6ZSkKewogICAgY29u
c3QgVCBjb3B5KGZyb20pOwogICAgcmVzaXplKGFzaXplIDwgMCA/IGQtPnNpemUgOiBhc2l6ZSk7
CiAgICBpZiAoZC0+c2l6ZSkgewogICAgICAgIFQgKmkgPSBwLT5hcnJheSArIGQtPnNpemU7CiAg
ICAgICAgVCAqYiA9IHAtPmFycmF5OwogICAgICAgIHdoaWxlIChpICE9IGIpCiAgICAgICAgICAg
ICotLWkgPSBjb3B5OwogICAgfQogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KUVZlY3RvcjxUPiAmUVZlY3RvcjxUPjo6b3BlcmF0b3IrPShjb25zdCBRVmVjdG9yICZs
KQp7CiAgICBpbnQgbmV3U2l6ZSA9IGQtPnNpemUgKyBsLmQtPnNpemU7CiAgICByZWFsbG9jKGQt
PnNpemUsIG5ld1NpemUpOwoKICAgIFQgKncgPSBwLT5hcnJheSArIG5ld1NpemU7CiAgICBUICpp
ID0gbC5wLT5hcnJheSArIGwuZC0+c2l6ZTsKICAgIFQgKmIgPSBsLnAtPmFycmF5OwogICAgd2hp
bGUgKGkgIT0gYikgewogICAgICAgIGlmIChRVHlwZUluZm88VD46OmlzQ29tcGxleCkKICAgICAg
ICAgICAgbmV3ICgtLXcpIFQoKi0taSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICAqLS13ID0g
Ki0taTsKICAgIH0KICAgIGQtPnNpemUgPSBuZXdTaXplOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW50IFFWZWN0b3I8VD46OmluZGV4T2YoY29uc3QgVCAmdCwg
aW50IGZyb20pIGNvbnN0CnsKICAgIGlmIChmcm9tIDwgMCkKICAgICAgICBmcm9tID0gcU1heChm
cm9tICsgZC0+c2l6ZSwgMCk7CiAgICBpZiAoZnJvbSA8IGQtPnNpemUpIHsKICAgICAgICBUKiBu
ID0gcC0+YXJyYXkgKyBmcm9tIC0gMTsKICAgICAgICBUKiBlID0gcC0+YXJyYXkgKyBkLT5zaXpl
OwogICAgICAgIHdoaWxlICgrK24gIT0gZSkKICAgICAgICAgICAgaWYgKCpuID09IHQpCiAgICAg
ICAgICAgICAgICByZXR1cm4gbiAtIHAtPmFycmF5OwogICAgfQogICAgcmV0dXJuIC0xOwp9Cgp0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW50IFFWZWN0b3I8VD46Omxhc3RJbmRleE9mKGNvbnN0IFQg
JnQsIGludCBmcm9tKSBjb25zdAp7CiAgICBpZiAoZnJvbSA8IDApCiAgICAgICAgZnJvbSArPSBk
LT5zaXplOwogICAgZWxzZSBpZiAoZnJvbSA+PSBkLT5zaXplKQogICAgICAgIGZyb20gPSBkLT5z
aXplLTE7CiAgICBpZiAoZnJvbSA+PSAwKSB7CiAgICAgICAgVCogYiA9IHAtPmFycmF5OwogICAg
ICAgIFQqIG4gPSBwLT5hcnJheSArIGZyb20gKyAxOwogICAgICAgIHdoaWxlIChuICE9IGIpIHsK
ICAgICAgICAgICAgaWYgKCotLW4gPT0gdCkKICAgICAgICAgICAgICAgIHJldHVybiBuIC0gYjsK
ICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gLTE7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpi
b29sIFFWZWN0b3I8VD46OmNvbnRhaW5zKGNvbnN0IFQgJnQpIGNvbnN0CnsKICAgIFQqIGIgPSBw
LT5hcnJheTsKICAgIFQqIGkgPSBwLT5hcnJheSArIGQtPnNpemU7CiAgICB3aGlsZSAoaSAhPSBi
KQogICAgICAgIGlmICgqLS1pID09IHQpCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgcmV0
dXJuIGZhbHNlOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW50IFFWZWN0b3I8VD46OmNvdW50
KGNvbnN0IFQgJnQpIGNvbnN0CnsKICAgIGludCBjID0gMDsKICAgIFQqIGIgPSBwLT5hcnJheTsK
ICAgIFQqIGkgPSBwLT5hcnJheSArIGQtPnNpemU7CiAgICB3aGlsZSAoaSAhPSBiKQogICAgICAg
IGlmICgqLS1pID09IHQpCiAgICAgICAgICAgICsrYzsKICAgIHJldHVybiBjOwp9Cgp0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KIFFWZWN0b3I8VD4gUVZlY3RvcjxUPjo6bWlkKGludCBwb3MsIGludCBs
ZW5ndGgpIGNvbnN0CnsKICAgIGlmIChsZW5ndGggPCAwKQogICAgICAgIGxlbmd0aCA9IHNpemUo
KSAtIHBvczsKICAgIGlmIChwb3MgPT0gMCAmJiBsZW5ndGggPT0gc2l6ZSgpKQogICAgICAgIHJl
dHVybiAqdGhpczsKICAgIGlmIChwb3MgKyBsZW5ndGggPiBzaXplKCkpCiAgICAgICAgbGVuZ3Ro
ID0gc2l6ZSgpIC0gcG9zOwogICAgUVZlY3RvcjxUPiBjb3B5OwogICAgY29weS5yZXNlcnZlKGxl
bmd0aCk7CiAgICBmb3IgKGludCBpID0gcG9zOyBpIDwgcG9zICsgbGVuZ3RoOyArK2kpCiAgICAg
ICAgY29weSArPSBhdChpKTsKICAgIHJldHVybiBjb3B5Owp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIFFMaXN0PFQ+IFFWZWN0b3I8VD46OnRvTGlzdCgpIGNvbnN0CnsKICAgIFFMaXN0PFQ+IHJl
c3VsdDsKICAgIHJlc3VsdC5yZXNlcnZlKHNpemUoKSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8
IHNpemUoKTsgKytpKQogICAgICAgIHJlc3VsdC5hcHBlbmQoYXQoaSkpOwogICAgcmV0dXJuIHJl
c3VsdDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBRVmVjdG9yPFQ+IFFMaXN0PFQ+Ojp0b1Zl
Y3RvcigpIGNvbnN0CnsKICAgIFFWZWN0b3I8VD4gcmVzdWx0KHNpemUoKSk7CiAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQogICAgICAgIHJlc3VsdFtpXSA9IGF0KGkpOwogICAg
cmV0dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ClFWZWN0b3I8VD4gUVZlY3Rv
cjxUPjo6ZnJvbUxpc3QoY29uc3QgUUxpc3Q8VD4gJmxpc3QpCnsKICAgIHJldHVybiBsaXN0LnRv
VmVjdG9yKCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpRTGlzdDxUPiBRTGlzdDxUPjo6ZnJv
bVZlY3Rvcihjb25zdCBRVmVjdG9yPFQ+ICZ2ZWN0b3IpCnsKICAgIHJldHVybiB2ZWN0b3IudG9M
aXN0KCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBRVmVjdG9ySXRlcmF0b3IgeyB0eXBl
ZGVmIHR5cGVuYW1lIFFWZWN0b3I8VD46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOyBR
VmVjdG9yPFQ+IGM7IGNvbnN0X2l0ZXJhdG9yIGk7IHB1YmxpYzogaW5saW5lIFFWZWN0b3JJdGVy
YXRvcihjb25zdCBRVmVjdG9yPFQ+ICZjb250YWluZXIpIDogYyhjb250YWluZXIpLCBpKGMuY29u
c3RCZWdpbigpKSB7fSBpbmxpbmUgUVZlY3Rvckl0ZXJhdG9yICZvcGVyYXRvcj0oY29uc3QgUVZl
Y3RvcjxUPiAmY29udGFpbmVyKSB7IGMgPSBjb250YWluZXI7IGkgPSBjLmNvbnN0QmVnaW4oKTsg
cmV0dXJuICp0aGlzOyB9IGlubGluZSB2b2lkIHRvRnJvbnQoKSB7IGkgPSBjLmNvbnN0QmVnaW4o
KTsgfSBpbmxpbmUgdm9pZCB0b0JhY2soKSB7IGkgPSBjLmNvbnN0RW5kKCk7IH0gaW5saW5lIGJv
b2wgaGFzTmV4dCgpIGNvbnN0IHsgcmV0dXJuIGkgIT0gYy5jb25zdEVuZCgpOyB9IGlubGluZSBj
b25zdCBUICZuZXh0KCkgeyByZXR1cm4gKmkrKzsgfSBpbmxpbmUgY29uc3QgVCAmcGVla05leHQo
KSBjb25zdCB7IHJldHVybiAqaTsgfSBpbmxpbmUgYm9vbCBoYXNQcmV2aW91cygpIGNvbnN0IHsg
cmV0dXJuIGkgIT0gYy5jb25zdEJlZ2luKCk7IH0gaW5saW5lIGNvbnN0IFQgJnByZXZpb3VzKCkg
eyByZXR1cm4gKi0taTsgfSBpbmxpbmUgY29uc3QgVCAmcGVla1ByZXZpb3VzKCkgY29uc3QgeyBj
b25zdF9pdGVyYXRvciBwID0gaTsgcmV0dXJuICotLXA7IH0gaW5saW5lIGJvb2wgZmluZE5leHQo
Y29uc3QgVCAmdCkgeyB3aGlsZSAoaSAhPSBjLmNvbnN0RW5kKCkpIGlmICgqaSsrID09IHQpIHJl
dHVybiB0cnVlOyByZXR1cm4gZmFsc2U7IH0gaW5saW5lIGJvb2wgZmluZFByZXZpb3VzKGNvbnN0
IFQgJnQpIHsgd2hpbGUgKGkgIT0gYy5jb25zdEJlZ2luKCkpIGlmICgqKC0taSkgPT0gdCkgcmV0
dXJuIHRydWU7IHJldHVybiBmYWxzZTsgfSB9Owp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUU11
dGFibGVWZWN0b3JJdGVyYXRvciB7IHR5cGVkZWYgdHlwZW5hbWUgUVZlY3RvcjxUPjo6aXRlcmF0
b3IgaXRlcmF0b3I7IHR5cGVkZWYgdHlwZW5hbWUgUVZlY3RvcjxUPjo6Y29uc3RfaXRlcmF0b3Ig
Y29uc3RfaXRlcmF0b3I7IFFWZWN0b3I8VD4gKmM7IGl0ZXJhdG9yIGksIG47IGlubGluZSBib29s
IGl0ZW1fZXhpc3RzKCkgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IobikgIT0gYy0+Y29u
c3RFbmQoKTsgfSBwdWJsaWM6IGlubGluZSBRTXV0YWJsZVZlY3Rvckl0ZXJhdG9yKFFWZWN0b3I8
VD4gJmNvbnRhaW5lcikgOiBjKCZjb250YWluZXIpIHsgYy0+c2V0U2hhcmFibGUoZmFsc2UpOyBp
ID0gYy0+YmVnaW4oKTsgbiA9IGMtPmVuZCgpOyB9IGlubGluZSB+UU11dGFibGVWZWN0b3JJdGVy
YXRvcigpIHsgYy0+c2V0U2hhcmFibGUodHJ1ZSk7IH0gaW5saW5lIFFNdXRhYmxlVmVjdG9ySXRl
cmF0b3IgJm9wZXJhdG9yPShRVmVjdG9yPFQ+ICZjb250YWluZXIpIHsgYy0+c2V0U2hhcmFibGUo
dHJ1ZSk7IGMgPSAmY29udGFpbmVyOyBjLT5zZXRTaGFyYWJsZShmYWxzZSk7IGkgPSBjLT5iZWdp
bigpOyBuID0gYy0+ZW5kKCk7IHJldHVybiAqdGhpczsgfSBpbmxpbmUgdm9pZCB0b0Zyb250KCkg
eyBpID0gYy0+YmVnaW4oKTsgbiA9IGMtPmVuZCgpOyB9IGlubGluZSB2b2lkIHRvQmFjaygpIHsg
aSA9IGMtPmVuZCgpOyBuID0gaTsgfSBpbmxpbmUgYm9vbCBoYXNOZXh0KCkgY29uc3QgeyByZXR1
cm4gYy0+Y29uc3RFbmQoKSAhPSBjb25zdF9pdGVyYXRvcihpKTsgfSBpbmxpbmUgVCAmbmV4dCgp
IHsgbiA9IGkrKzsgcmV0dXJuICpuOyB9IGlubGluZSBUICZwZWVrTmV4dCgpIGNvbnN0IHsgcmV0
dXJuICppOyB9IGlubGluZSBib29sIGhhc1ByZXZpb3VzKCkgY29uc3QgeyByZXR1cm4gYy0+Y29u
c3RCZWdpbigpICE9IGNvbnN0X2l0ZXJhdG9yKGkpOyB9IGlubGluZSBUICZwcmV2aW91cygpIHsg
biA9IC0taTsgcmV0dXJuICpuOyB9IGlubGluZSBUICZwZWVrUHJldmlvdXMoKSBjb25zdCB7IGl0
ZXJhdG9yIHAgPSBpOyByZXR1cm4gKi0tcDsgfSBpbmxpbmUgdm9pZCByZW1vdmUoKSB7IGlmIChj
LT5jb25zdEVuZCgpICE9IGNvbnN0X2l0ZXJhdG9yKG4pKSB7IGkgPSBjLT5lcmFzZShuKTsgbiA9
IGMtPmVuZCgpOyB9IH0gaW5saW5lIHZvaWQgc2V0VmFsdWUoY29uc3QgVCAmdCkgY29uc3QgeyBp
ZiAoYy0+Y29uc3RFbmQoKSAhPSBjb25zdF9pdGVyYXRvcihuKSkgKm4gPSB0OyB9IGlubGluZSBU
ICZ2YWx1ZSgpIHsgKCghKGl0ZW1fZXhpc3RzKCkpKSA/IHF0X2Fzc2VydCgiaXRlbV9leGlzdHMo
KSIsIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXZlY3Rvci5oIiw3NzMpIDogcXRfbm9vcCgp
KTsgcmV0dXJuICpuOyB9IGlubGluZSBjb25zdCBUICZ2YWx1ZSgpIGNvbnN0IHsgKCghKGl0ZW1f
ZXhpc3RzKCkpKSA/IHF0X2Fzc2VydCgiaXRlbV9leGlzdHMoKSIsIi9vcHQvbG9jYWwvaW5jbHVk
ZS9RdENvcmUvcXZlY3Rvci5oIiw3NzMpIDogcXRfbm9vcCgpKTsgcmV0dXJuICpuOyB9IGlubGlu
ZSB2b2lkIGluc2VydChjb25zdCBUICZ0KSB7IG4gPSBpID0gYy0+aW5zZXJ0KGksIHQpOyArK2k7
IH0gaW5saW5lIGJvb2wgZmluZE5leHQoY29uc3QgVCAmdCkgeyB3aGlsZSAoYy0+Y29uc3RFbmQo
KSAhPSBjb25zdF9pdGVyYXRvcihuID0gaSkpIGlmICgqaSsrID09IHQpIHJldHVybiB0cnVlOyBy
ZXR1cm4gZmFsc2U7IH0gaW5saW5lIGJvb2wgZmluZFByZXZpb3VzKGNvbnN0IFQgJnQpIHsgd2hp
bGUgKGMtPmNvbnN0QmVnaW4oKSAhPSBjb25zdF9pdGVyYXRvcihpKSkgaWYgKCoobiA9IC0taSkg
PT0gdCkgcmV0dXJuIHRydWU7IG4gPSBjLT5lbmQoKTsgcmV0dXJuIGZhbHNlOyB9IH07CiMgODAw
ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3F2ZWN0b3IuaCIKCgoKIyA0NiAiL29wdC9sb2Nh
bC9pbmNsdWRlL1F0R3VpL3Fwb2x5Z29uLmgiIDIKIyAxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRD
b3JlL3Fwb2ludC5oIiAxCiMgNDMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXBvaW50Lmgi
CiNkZWZpbmUgUVBPSU5UX0ggCgoKCgoKCgp0eXBlZGVmIFF0VmFsaWRMaWNlbnNlRm9yQ29yZU1v
ZHVsZSBRdENvcmVNb2R1bGU7CgpjbGFzcyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBRUG9pbnQKewpwdWJsaWM6CiAgICBRUG9pbnQoKTsKICAgIFFQb2ludChpbnQgeHBv
cywgaW50IHlwb3MpOwoKICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CgogICAgaW50IHgoKSBjb25z
dDsKICAgIGludCB5KCkgY29uc3Q7CiAgICB2b2lkIHNldFgoaW50IHgpOwogICAgdm9pZCBzZXRZ
KGludCB5KTsKCiAgICBpbnQgbWFuaGF0dGFuTGVuZ3RoKCkgY29uc3Q7CgogICAgaW50ICZyeCgp
OwogICAgaW50ICZyeSgpOwoKICAgIFFQb2ludCAmb3BlcmF0b3IrPShjb25zdCBRUG9pbnQgJnAp
OwogICAgUVBvaW50ICZvcGVyYXRvci09KGNvbnN0IFFQb2ludCAmcCk7CiAgICBRUG9pbnQgJm9w
ZXJhdG9yKj0ocXJlYWwgYyk7CiAgICBRUG9pbnQgJm9wZXJhdG9yLz0ocXJlYWwgYyk7CgogICAg
ZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUVBvaW50ICYsIGNvbnN0IFFQb2lu
dCAmKTsKICAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFQb2ludCAmLCBj
b25zdCBRUG9pbnQgJik7CiAgICBmcmllbmQgaW5saW5lIGNvbnN0IFFQb2ludCBvcGVyYXRvciso
Y29uc3QgUVBvaW50ICYsIGNvbnN0IFFQb2ludCAmKTsKICAgIGZyaWVuZCBpbmxpbmUgY29uc3Qg
UVBvaW50IG9wZXJhdG9yLShjb25zdCBRUG9pbnQgJiwgY29uc3QgUVBvaW50ICYpOwogICAgZnJp
ZW5kIGlubGluZSBjb25zdCBRUG9pbnQgb3BlcmF0b3IqKGNvbnN0IFFQb2ludCAmLCBxcmVhbCk7
CiAgICBmcmllbmQgaW5saW5lIGNvbnN0IFFQb2ludCBvcGVyYXRvcioocXJlYWwsIGNvbnN0IFFQ
b2ludCAmKTsKICAgIGZyaWVuZCBpbmxpbmUgY29uc3QgUVBvaW50IG9wZXJhdG9yLShjb25zdCBR
UG9pbnQgJik7CiAgICBmcmllbmQgaW5saW5lIGNvbnN0IFFQb2ludCBvcGVyYXRvci8oY29uc3Qg
UVBvaW50ICYsIHFyZWFsKTsKCnByaXZhdGU6CiAgICBmcmllbmQgY2xhc3MgUVRyYW5zZm9ybTsK
CgogICAgaW50IHlwOwogICAgaW50IHhwOwoKCgoKfTsKCnRlbXBsYXRlIDw+IGNsYXNzIFFUeXBl
SW5mbzxRUG9pbnQgPiB7IHB1YmxpYzogZW51bSB7IGlzQ29tcGxleCA9ICgoKFFfTU9WQUJMRV9U
WVBFKSAmIFFfUFJJTUlUSVZFX1RZUEUpID09IDApLCBpc1N0YXRpYyA9ICgoKFFfTU9WQUJMRV9U
WVBFKSAmIChRX01PVkFCTEVfVFlQRSB8IFFfUFJJTUlUSVZFX1RZUEUpKSA9PSAwKSwgaXNMYXJn
ZSA9IChzaXplb2YoUVBvaW50KT5zaXplb2Yodm9pZCopKSwgaXNQb2ludGVyID0gZmFsc2UsIGlz
RHVtbXkgPSAoKChRX01PVkFCTEVfVFlQRSkgJiBRX0RVTU1ZX1RZUEUpICE9IDApIH07IHN0YXRp
YyBpbmxpbmUgY29uc3QgY2hhciAqbmFtZSgpIHsgcmV0dXJuICJRUG9pbnQiOyB9IH07CgoKCgoK
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUURhdGFTdHJlYW0gJm9wZXJh
dG9yPDwoUURhdGFTdHJlYW0gJiwgY29uc3QgUVBvaW50ICYpOwpfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0YVN0cmVhbSAm
LCBRUG9pbnQgJik7CgoKCgoKCmlubGluZSBRUG9pbnQ6OlFQb2ludCgpCnsgeHA9MDsgeXA9MDsg
fQoKaW5saW5lIFFQb2ludDo6UVBvaW50KGludCB4cG9zLCBpbnQgeXBvcykKeyB4cCA9IHhwb3M7
IHlwID0geXBvczsgfQoKaW5saW5lIGJvb2wgUVBvaW50Ojppc051bGwoKSBjb25zdAp7IHJldHVy
biB4cCA9PSAwICYmIHlwID09IDA7IH0KCmlubGluZSBpbnQgUVBvaW50Ojp4KCkgY29uc3QKeyBy
ZXR1cm4geHA7IH0KCmlubGluZSBpbnQgUVBvaW50Ojp5KCkgY29uc3QKeyByZXR1cm4geXA7IH0K
CmlubGluZSB2b2lkIFFQb2ludDo6c2V0WChpbnQgeHBvcykKeyB4cCA9IHhwb3M7IH0KCmlubGlu
ZSB2b2lkIFFQb2ludDo6c2V0WShpbnQgeXBvcykKeyB5cCA9IHlwb3M7IH0KCmlubGluZSBpbnQg
JlFQb2ludDo6cngoKQp7IHJldHVybiB4cDsgfQoKaW5saW5lIGludCAmUVBvaW50OjpyeSgpCnsg
cmV0dXJuIHlwOyB9CgppbmxpbmUgUVBvaW50ICZRUG9pbnQ6Om9wZXJhdG9yKz0oY29uc3QgUVBv
aW50ICZwKQp7IHhwKz1wLnhwOyB5cCs9cC55cDsgcmV0dXJuICp0aGlzOyB9CgppbmxpbmUgUVBv
aW50ICZRUG9pbnQ6Om9wZXJhdG9yLT0oY29uc3QgUVBvaW50ICZwKQp7IHhwLT1wLnhwOyB5cC09
cC55cDsgcmV0dXJuICp0aGlzOyB9CgppbmxpbmUgUVBvaW50ICZRUG9pbnQ6Om9wZXJhdG9yKj0o
cXJlYWwgYykKeyB4cCA9IHFSb3VuZCh4cCpjKTsgeXAgPSBxUm91bmQoeXAqYyk7IHJldHVybiAq
dGhpczsgfQoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRUG9pbnQgJnAxLCBjb25zdCBR
UG9pbnQgJnAyKQp7IHJldHVybiBwMS54cCA9PSBwMi54cCAmJiBwMS55cCA9PSBwMi55cDsgfQoK
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRUG9pbnQgJnAxLCBjb25zdCBRUG9pbnQgJnAy
KQp7IHJldHVybiBwMS54cCAhPSBwMi54cCB8fCBwMS55cCAhPSBwMi55cDsgfQoKaW5saW5lIGNv
bnN0IFFQb2ludCBvcGVyYXRvcisoY29uc3QgUVBvaW50ICZwMSwgY29uc3QgUVBvaW50ICZwMikK
eyByZXR1cm4gUVBvaW50KHAxLnhwK3AyLnhwLCBwMS55cCtwMi55cCk7IH0KCmlubGluZSBjb25z
dCBRUG9pbnQgb3BlcmF0b3ItKGNvbnN0IFFQb2ludCAmcDEsIGNvbnN0IFFQb2ludCAmcDIpCnsg
cmV0dXJuIFFQb2ludChwMS54cC1wMi54cCwgcDEueXAtcDIueXApOyB9CgppbmxpbmUgY29uc3Qg
UVBvaW50IG9wZXJhdG9yKihjb25zdCBRUG9pbnQgJnAsIHFyZWFsIGMpCnsgcmV0dXJuIFFQb2lu
dChxUm91bmQocC54cCpjKSwgcVJvdW5kKHAueXAqYykpOyB9CgppbmxpbmUgY29uc3QgUVBvaW50
IG9wZXJhdG9yKihxcmVhbCBjLCBjb25zdCBRUG9pbnQgJnApCnsgcmV0dXJuIFFQb2ludChxUm91
bmQocC54cCpjKSwgcVJvdW5kKHAueXAqYykpOyB9CgppbmxpbmUgY29uc3QgUVBvaW50IG9wZXJh
dG9yLShjb25zdCBRUG9pbnQgJnApCnsgcmV0dXJuIFFQb2ludCgtcC54cCwgLXAueXApOyB9Cgpp
bmxpbmUgUVBvaW50ICZRUG9pbnQ6Om9wZXJhdG9yLz0ocXJlYWwgYykKewogICAgeHAgPSBxUm91
bmQoeHAvYyk7CiAgICB5cCA9IHFSb3VuZCh5cC9jKTsKICAgIHJldHVybiAqdGhpczsKfQoKaW5s
aW5lIGNvbnN0IFFQb2ludCBvcGVyYXRvci8oY29uc3QgUVBvaW50ICZwLCBxcmVhbCBjKQp7CiAg
ICByZXR1cm4gUVBvaW50KHFSb3VuZChwLnhwL2MpLCBxUm91bmQocC55cC9jKSk7Cn0KCgpfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGVidWcgb3BlcmF0b3I8PChRRGVi
dWcsIGNvbnN0IFFQb2ludCAmKTsKCgoKCgoKY2xhc3MgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgUVBvaW50Rgp7CnB1YmxpYzoKICAgIFFQb2ludEYoKTsKICAgIFFQb2lu
dEYoY29uc3QgUVBvaW50ICZwKTsKICAgIFFQb2ludEYocXJlYWwgeHBvcywgcXJlYWwgeXBvcyk7
CgogICAgcXJlYWwgbWFuaGF0dGFuTGVuZ3RoKCkgY29uc3Q7CgogICAgYm9vbCBpc051bGwoKSBj
b25zdDsKCiAgICBxcmVhbCB4KCkgY29uc3Q7CiAgICBxcmVhbCB5KCkgY29uc3Q7CiAgICB2b2lk
IHNldFgocXJlYWwgeCk7CiAgICB2b2lkIHNldFkocXJlYWwgeSk7CgogICAgcXJlYWwgJnJ4KCk7
CiAgICBxcmVhbCAmcnkoKTsKCiAgICBRUG9pbnRGICZvcGVyYXRvcis9KGNvbnN0IFFQb2ludEYg
JnApOwogICAgUVBvaW50RiAmb3BlcmF0b3ItPShjb25zdCBRUG9pbnRGICZwKTsKICAgIFFQb2lu
dEYgJm9wZXJhdG9yKj0ocXJlYWwgYyk7CiAgICBRUG9pbnRGICZvcGVyYXRvci89KHFyZWFsIGMp
OwoKICAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFQb2ludEYgJiwgY29u
c3QgUVBvaW50RiAmKTsKICAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFQ
b2ludEYgJiwgY29uc3QgUVBvaW50RiAmKTsKICAgIGZyaWVuZCBpbmxpbmUgY29uc3QgUVBvaW50
RiBvcGVyYXRvcisoY29uc3QgUVBvaW50RiAmLCBjb25zdCBRUG9pbnRGICYpOwogICAgZnJpZW5k
IGlubGluZSBjb25zdCBRUG9pbnRGIG9wZXJhdG9yLShjb25zdCBRUG9pbnRGICYsIGNvbnN0IFFQ
b2ludEYgJik7CiAgICBmcmllbmQgaW5saW5lIGNvbnN0IFFQb2ludEYgb3BlcmF0b3IqKHFyZWFs
LCBjb25zdCBRUG9pbnRGICYpOwogICAgZnJpZW5kIGlubGluZSBjb25zdCBRUG9pbnRGIG9wZXJh
dG9yKihjb25zdCBRUG9pbnRGICYsIHFyZWFsKTsKICAgIGZyaWVuZCBpbmxpbmUgY29uc3QgUVBv
aW50RiBvcGVyYXRvci0oY29uc3QgUVBvaW50RiAmKTsKICAgIGZyaWVuZCBpbmxpbmUgY29uc3Qg
UVBvaW50RiBvcGVyYXRvci8oY29uc3QgUVBvaW50RiAmLCBxcmVhbCk7CgogICAgUVBvaW50IHRv
UG9pbnQoKSBjb25zdDsKCnByaXZhdGU6CiAgICBmcmllbmQgY2xhc3MgUU1hdHJpeDsKICAgIGZy
aWVuZCBjbGFzcyBRVHJhbnNmb3JtOwoKICAgIHFyZWFsIHhwOwogICAgcXJlYWwgeXA7Cn07Cgp0
ZW1wbGF0ZSA8PiBjbGFzcyBRVHlwZUluZm88UVBvaW50RiA+IHsgcHVibGljOiBlbnVtIHsgaXND
b21wbGV4ID0gKCgoUV9NT1ZBQkxFX1RZUEUpICYgUV9QUklNSVRJVkVfVFlQRSkgPT0gMCksIGlz
U3RhdGljID0gKCgoUV9NT1ZBQkxFX1RZUEUpICYgKFFfTU9WQUJMRV9UWVBFIHwgUV9QUklNSVRJ
VkVfVFlQRSkpID09IDApLCBpc0xhcmdlID0gKHNpemVvZihRUG9pbnRGKT5zaXplb2Yodm9pZCop
KSwgaXNQb2ludGVyID0gZmFsc2UsIGlzRHVtbXkgPSAoKChRX01PVkFCTEVfVFlQRSkgJiBRX0RV
TU1ZX1RZUEUpICE9IDApIH07IHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqbmFtZSgpIHsgcmV0
dXJuICJRUG9pbnRGIjsgfSB9OwoKCgoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFtICYsIGNvbnN0IFFQb2lu
dEYgJik7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFEYXRhU3RyZWFt
ICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICYsIFFQb2ludEYgJik7CgoKCgoKCmlubGluZSBRUG9p
bnRGOjpRUG9pbnRGKCkgOiB4cCgwKSwgeXAoMCkgeyB9CgppbmxpbmUgUVBvaW50Rjo6UVBvaW50
RihxcmVhbCB4cG9zLCBxcmVhbCB5cG9zKSA6IHhwKHhwb3MpLCB5cCh5cG9zKSB7IH0KCmlubGlu
ZSBRUG9pbnRGOjpRUG9pbnRGKGNvbnN0IFFQb2ludCAmcCkgOiB4cChwLngoKSksIHlwKHAueSgp
KSB7IH0KCmlubGluZSBib29sIFFQb2ludEY6OmlzTnVsbCgpIGNvbnN0CnsKICAgIHJldHVybiBx
SXNOdWxsKHhwKSAmJiBxSXNOdWxsKHlwKTsKfQoKaW5saW5lIHFyZWFsIFFQb2ludEY6OngoKSBj
b25zdAp7CiAgICByZXR1cm4geHA7Cn0KCmlubGluZSBxcmVhbCBRUG9pbnRGOjp5KCkgY29uc3QK
ewogICAgcmV0dXJuIHlwOwp9CgppbmxpbmUgdm9pZCBRUG9pbnRGOjpzZXRYKHFyZWFsIHhwb3Mp
CnsKICAgIHhwID0geHBvczsKfQoKaW5saW5lIHZvaWQgUVBvaW50Rjo6c2V0WShxcmVhbCB5cG9z
KQp7CiAgICB5cCA9IHlwb3M7Cn0KCmlubGluZSBxcmVhbCAmUVBvaW50Rjo6cngoKQp7CiAgICBy
ZXR1cm4geHA7Cn0KCmlubGluZSBxcmVhbCAmUVBvaW50Rjo6cnkoKQp7CiAgICByZXR1cm4geXA7
Cn0KCmlubGluZSBRUG9pbnRGICZRUG9pbnRGOjpvcGVyYXRvcis9KGNvbnN0IFFQb2ludEYgJnAp
CnsKICAgIHhwKz1wLnhwOwogICAgeXArPXAueXA7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGlu
ZSBRUG9pbnRGICZRUG9pbnRGOjpvcGVyYXRvci09KGNvbnN0IFFQb2ludEYgJnApCnsKICAgIHhw
LT1wLnhwOyB5cC09cC55cDsgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUgUVBvaW50RiAmUVBvaW50
Rjo6b3BlcmF0b3IqPShxcmVhbCBjKQp7CiAgICB4cCo9YzsgeXAqPWM7IHJldHVybiAqdGhpczsK
fQoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRUG9pbnRGICZwMSwgY29uc3QgUVBvaW50
RiAmcDIpCnsKICAgIHJldHVybiBxRnV6enlJc051bGwocDEueHAgLSBwMi54cCkgJiYgcUZ1enp5
SXNOdWxsKHAxLnlwIC0gcDIueXApOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFQ
b2ludEYgJnAxLCBjb25zdCBRUG9pbnRGICZwMikKewogICAgcmV0dXJuICFxRnV6enlJc051bGwo
cDEueHAgLSBwMi54cCkgfHwgIXFGdXp6eUlzTnVsbChwMS55cCAtIHAyLnlwKTsKfQoKaW5saW5l
IGNvbnN0IFFQb2ludEYgb3BlcmF0b3IrKGNvbnN0IFFQb2ludEYgJnAxLCBjb25zdCBRUG9pbnRG
ICZwMikKewogICAgcmV0dXJuIFFQb2ludEYocDEueHArcDIueHAsIHAxLnlwK3AyLnlwKTsKfQoK
aW5saW5lIGNvbnN0IFFQb2ludEYgb3BlcmF0b3ItKGNvbnN0IFFQb2ludEYgJnAxLCBjb25zdCBR
UG9pbnRGICZwMikKewogICAgcmV0dXJuIFFQb2ludEYocDEueHAtcDIueHAsIHAxLnlwLXAyLnlw
KTsKfQoKaW5saW5lIGNvbnN0IFFQb2ludEYgb3BlcmF0b3IqKGNvbnN0IFFQb2ludEYgJnAsIHFy
ZWFsIGMpCnsKICAgIHJldHVybiBRUG9pbnRGKHAueHAqYywgcC55cCpjKTsKfQoKaW5saW5lIGNv
bnN0IFFQb2ludEYgb3BlcmF0b3IqKHFyZWFsIGMsIGNvbnN0IFFQb2ludEYgJnApCnsKICAgIHJl
dHVybiBRUG9pbnRGKHAueHAqYywgcC55cCpjKTsKfQoKaW5saW5lIGNvbnN0IFFQb2ludEYgb3Bl
cmF0b3ItKGNvbnN0IFFQb2ludEYgJnApCnsKICAgIHJldHVybiBRUG9pbnRGKC1wLnhwLCAtcC55
cCk7Cn0KCmlubGluZSBRUG9pbnRGICZRUG9pbnRGOjpvcGVyYXRvci89KHFyZWFsIGMpCnsKICAg
IHhwLz1jOwogICAgeXAvPWM7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBjb25zdCBRUG9p
bnRGIG9wZXJhdG9yLyhjb25zdCBRUG9pbnRGICZwLCBxcmVhbCBjKQp7CiAgICByZXR1cm4gUVBv
aW50RihwLnhwL2MsIHAueXAvYyk7Cn0KCmlubGluZSBRUG9pbnQgUVBvaW50Rjo6dG9Qb2ludCgp
IGNvbnN0CnsKICAgIHJldHVybiBRUG9pbnQocVJvdW5kKHhwKSwgcVJvdW5kKHlwKSk7Cn0KCgpf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGVidWcgb3BlcmF0b3I8PChR
RGVidWcgZCwgY29uc3QgUVBvaW50RiAmcCk7CgoKCgoKIyA0NyAiL29wdC9sb2NhbC9pbmNsdWRl
L1F0R3VpL3Fwb2x5Z29uLmgiIDIKIyAxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FyZWN0
LmgiIDEKIyA0MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xcmVjdC5oIgojZGVmaW5lIFFS
RUNUX0ggCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXNpemUuaCIgMQojIDQzICIv
b3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FzaXplLmgiCiNkZWZpbmUgUVNJWkVfSCAKCgoKCgoK
CnR5cGVkZWYgUXRWYWxpZExpY2Vuc2VGb3JDb3JlTW9kdWxlIFF0Q29yZU1vZHVsZTsKCmNsYXNz
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFTaXplCnsKcHVibGljOgog
ICAgUVNpemUoKTsKICAgIFFTaXplKGludCB3LCBpbnQgaCk7CgogICAgYm9vbCBpc051bGwoKSBj
b25zdDsKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7
CgogICAgaW50IHdpZHRoKCkgY29uc3Q7CiAgICBpbnQgaGVpZ2h0KCkgY29uc3Q7CiAgICB2b2lk
IHNldFdpZHRoKGludCB3KTsKICAgIHZvaWQgc2V0SGVpZ2h0KGludCBoKTsKICAgIHZvaWQgdHJh
bnNwb3NlKCk7CgogICAgdm9pZCBzY2FsZShpbnQgdywgaW50IGgsIFF0OjpBc3BlY3RSYXRpb01v
ZGUgbW9kZSk7CiAgICB2b2lkIHNjYWxlKGNvbnN0IFFTaXplICZzLCBRdDo6QXNwZWN0UmF0aW9N
b2RlIG1vZGUpOwoKICAgIFFTaXplIGV4cGFuZGVkVG8oY29uc3QgUVNpemUgJikgY29uc3Q7CiAg
ICBRU2l6ZSBib3VuZGVkVG8oY29uc3QgUVNpemUgJikgY29uc3Q7CgogICAgaW50ICZyd2lkdGgo
KTsKICAgIGludCAmcmhlaWdodCgpOwoKICAgIFFTaXplICZvcGVyYXRvcis9KGNvbnN0IFFTaXpl
ICYpOwogICAgUVNpemUgJm9wZXJhdG9yLT0oY29uc3QgUVNpemUgJik7CiAgICBRU2l6ZSAmb3Bl
cmF0b3IqPShxcmVhbCBjKTsKICAgIFFTaXplICZvcGVyYXRvci89KHFyZWFsIGMpOwoKICAgIGZy
aWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFTaXplICYsIGNvbnN0IFFTaXplICYp
OwogICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUVNpemUgJiwgY29uc3Qg
UVNpemUgJik7CiAgICBmcmllbmQgaW5saW5lIGNvbnN0IFFTaXplIG9wZXJhdG9yKyhjb25zdCBR
U2l6ZSAmLCBjb25zdCBRU2l6ZSAmKTsKICAgIGZyaWVuZCBpbmxpbmUgY29uc3QgUVNpemUgb3Bl
cmF0b3ItKGNvbnN0IFFTaXplICYsIGNvbnN0IFFTaXplICYpOwogICAgZnJpZW5kIGlubGluZSBj
b25zdCBRU2l6ZSBvcGVyYXRvciooY29uc3QgUVNpemUgJiwgcXJlYWwpOwogICAgZnJpZW5kIGlu
bGluZSBjb25zdCBRU2l6ZSBvcGVyYXRvcioocXJlYWwsIGNvbnN0IFFTaXplICYpOwogICAgZnJp
ZW5kIGlubGluZSBjb25zdCBRU2l6ZSBvcGVyYXRvci8oY29uc3QgUVNpemUgJiwgcXJlYWwpOwoK
cHJpdmF0ZToKICAgIGludCB3ZDsKICAgIGludCBodDsKfTsKdGVtcGxhdGUgPD4gY2xhc3MgUVR5
cGVJbmZvPFFTaXplID4geyBwdWJsaWM6IGVudW0geyBpc0NvbXBsZXggPSAoKChRX01PVkFCTEVf
VFlQRSkgJiBRX1BSSU1JVElWRV9UWVBFKSA9PSAwKSwgaXNTdGF0aWMgPSAoKChRX01PVkFCTEVf
VFlQRSkgJiAoUV9NT1ZBQkxFX1RZUEUgfCBRX1BSSU1JVElWRV9UWVBFKSkgPT0gMCksIGlzTGFy
Z2UgPSAoc2l6ZW9mKFFTaXplKT5zaXplb2Yodm9pZCopKSwgaXNQb2ludGVyID0gZmFsc2UsIGlz
RHVtbXkgPSAoKChRX01PVkFCTEVfVFlQRSkgJiBRX0RVTU1ZX1RZUEUpICE9IDApIH07IHN0YXRp
YyBpbmxpbmUgY29uc3QgY2hhciAqbmFtZSgpIHsgcmV0dXJuICJRU2l6ZSI7IH0gfTsKCgoKCgoK
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUURhdGFTdHJlYW0gJm9wZXJh
dG9yPDwoUURhdGFTdHJlYW0gJiwgY29uc3QgUVNpemUgJik7Cl9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICYs
IFFTaXplICYpOwoKCgoKCgoKaW5saW5lIFFTaXplOjpRU2l6ZSgpCnsgd2QgPSBodCA9IC0xOyB9
CgppbmxpbmUgUVNpemU6OlFTaXplKGludCB3LCBpbnQgaCkKeyB3ZCA9IHc7IGh0ID0gaDsgfQoK
aW5saW5lIGJvb2wgUVNpemU6OmlzTnVsbCgpIGNvbnN0CnsgcmV0dXJuIHdkPT0wICYmIGh0PT0w
OyB9CgppbmxpbmUgYm9vbCBRU2l6ZTo6aXNFbXB0eSgpIGNvbnN0CnsgcmV0dXJuIHdkPDEgfHwg
aHQ8MTsgfQoKaW5saW5lIGJvb2wgUVNpemU6OmlzVmFsaWQoKSBjb25zdAp7IHJldHVybiB3ZD49
MCAmJiBodD49MDsgfQoKaW5saW5lIGludCBRU2l6ZTo6d2lkdGgoKSBjb25zdAp7IHJldHVybiB3
ZDsgfQoKaW5saW5lIGludCBRU2l6ZTo6aGVpZ2h0KCkgY29uc3QKeyByZXR1cm4gaHQ7IH0KCmlu
bGluZSB2b2lkIFFTaXplOjpzZXRXaWR0aChpbnQgdykKeyB3ZCA9IHc7IH0KCmlubGluZSB2b2lk
IFFTaXplOjpzZXRIZWlnaHQoaW50IGgpCnsgaHQgPSBoOyB9CgppbmxpbmUgdm9pZCBRU2l6ZTo6
c2NhbGUoaW50IHcsIGludCBoLCBRdDo6QXNwZWN0UmF0aW9Nb2RlIG1vZGUpCnsgc2NhbGUoUVNp
emUodywgaCksIG1vZGUpOyB9CgppbmxpbmUgaW50ICZRU2l6ZTo6cndpZHRoKCkKeyByZXR1cm4g
d2Q7IH0KCmlubGluZSBpbnQgJlFTaXplOjpyaGVpZ2h0KCkKeyByZXR1cm4gaHQ7IH0KCmlubGlu
ZSBRU2l6ZSAmUVNpemU6Om9wZXJhdG9yKz0oY29uc3QgUVNpemUgJnMpCnsgd2QrPXMud2Q7IGh0
Kz1zLmh0OyByZXR1cm4gKnRoaXM7IH0KCmlubGluZSBRU2l6ZSAmUVNpemU6Om9wZXJhdG9yLT0o
Y29uc3QgUVNpemUgJnMpCnsgd2QtPXMud2Q7IGh0LT1zLmh0OyByZXR1cm4gKnRoaXM7IH0KCmlu
bGluZSBRU2l6ZSAmUVNpemU6Om9wZXJhdG9yKj0ocXJlYWwgYykKeyB3ZCA9IHFSb3VuZCh3ZCpj
KTsgaHQgPSBxUm91bmQoaHQqYyk7IHJldHVybiAqdGhpczsgfQoKaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBRU2l6ZSAmczEsIGNvbnN0IFFTaXplICZzMikKeyByZXR1cm4gczEud2QgPT0g
czIud2QgJiYgczEuaHQgPT0gczIuaHQ7IH0KCmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
UVNpemUgJnMxLCBjb25zdCBRU2l6ZSAmczIpCnsgcmV0dXJuIHMxLndkICE9IHMyLndkIHx8IHMx
Lmh0ICE9IHMyLmh0OyB9CgppbmxpbmUgY29uc3QgUVNpemUgb3BlcmF0b3IrKGNvbnN0IFFTaXpl
ICYgczEsIGNvbnN0IFFTaXplICYgczIpCnsgcmV0dXJuIFFTaXplKHMxLndkK3MyLndkLCBzMS5o
dCtzMi5odCk7IH0KCmlubGluZSBjb25zdCBRU2l6ZSBvcGVyYXRvci0oY29uc3QgUVNpemUgJnMx
LCBjb25zdCBRU2l6ZSAmczIpCnsgcmV0dXJuIFFTaXplKHMxLndkLXMyLndkLCBzMS5odC1zMi5o
dCk7IH0KCmlubGluZSBjb25zdCBRU2l6ZSBvcGVyYXRvciooY29uc3QgUVNpemUgJnMsIHFyZWFs
IGMpCnsgcmV0dXJuIFFTaXplKHFSb3VuZChzLndkKmMpLCBxUm91bmQocy5odCpjKSk7IH0KCmlu
bGluZSBjb25zdCBRU2l6ZSBvcGVyYXRvcioocXJlYWwgYywgY29uc3QgUVNpemUgJnMpCnsgcmV0
dXJuIFFTaXplKHFSb3VuZChzLndkKmMpLCBxUm91bmQocy5odCpjKSk7IH0KCmlubGluZSBRU2l6
ZSAmUVNpemU6Om9wZXJhdG9yLz0ocXJlYWwgYykKewogICAgKCghKCFxRnV6enlJc051bGwoYykp
KSA/IHF0X2Fzc2VydCgiIXFGdXp6eUlzTnVsbChjKSIsIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENv
cmUvcXNpemUuaCIsMTc2KSA6IHF0X25vb3AoKSk7CiAgICB3ZCA9IHFSb3VuZCh3ZC9jKTsgaHQg
PSBxUm91bmQoaHQvYyk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBjb25zdCBRU2l6ZSBv
cGVyYXRvci8oY29uc3QgUVNpemUgJnMsIHFyZWFsIGMpCnsKICAgICgoISghcUZ1enp5SXNOdWxs
KGMpKSkgPyBxdF9hc3NlcnQoIiFxRnV6enlJc051bGwoYykiLCIvb3B0L2xvY2FsL2luY2x1ZGUv
UXRDb3JlL3FzaXplLmgiLDE4MykgOiBxdF9ub29wKCkpOwogICAgcmV0dXJuIFFTaXplKHFSb3Vu
ZChzLndkL2MpLCBxUm91bmQocy5odC9jKSk7Cn0KCmlubGluZSBRU2l6ZSBRU2l6ZTo6ZXhwYW5k
ZWRUbyhjb25zdCBRU2l6ZSAmIG90aGVyU2l6ZSkgY29uc3QKewogICAgcmV0dXJuIFFTaXplKHFN
YXgod2Qsb3RoZXJTaXplLndkKSwgcU1heChodCxvdGhlclNpemUuaHQpKTsKfQoKaW5saW5lIFFT
aXplIFFTaXplOjpib3VuZGVkVG8oY29uc3QgUVNpemUgJiBvdGhlclNpemUpIGNvbnN0CnsKICAg
IHJldHVybiBRU2l6ZShxTWluKHdkLG90aGVyU2l6ZS53ZCksIHFNaW4oaHQsb3RoZXJTaXplLmh0
KSk7Cn0KCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGVidWcgb3Bl
cmF0b3I8PChRRGVidWcsIGNvbnN0IFFTaXplICYpOwoKCgpjbGFzcyBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRU2l6ZUYKewpwdWJsaWM6CiAgICBRU2l6ZUYoKTsKICAg
IFFTaXplRihjb25zdCBRU2l6ZSAmc3opOwogICAgUVNpemVGKHFyZWFsIHcsIHFyZWFsIGgpOwoK
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0OwoKICAgIHFyZWFsIHdpZHRoKCkgY29uc3Q7CiAgICBxcmVhbCBo
ZWlnaHQoKSBjb25zdDsKICAgIHZvaWQgc2V0V2lkdGgocXJlYWwgdyk7CiAgICB2b2lkIHNldEhl
aWdodChxcmVhbCBoKTsKICAgIHZvaWQgdHJhbnNwb3NlKCk7CgogICAgdm9pZCBzY2FsZShxcmVh
bCB3LCBxcmVhbCBoLCBRdDo6QXNwZWN0UmF0aW9Nb2RlIG1vZGUpOwogICAgdm9pZCBzY2FsZShj
b25zdCBRU2l6ZUYgJnMsIFF0OjpBc3BlY3RSYXRpb01vZGUgbW9kZSk7CgogICAgUVNpemVGIGV4
cGFuZGVkVG8oY29uc3QgUVNpemVGICYpIGNvbnN0OwogICAgUVNpemVGIGJvdW5kZWRUbyhjb25z
dCBRU2l6ZUYgJikgY29uc3Q7CgogICAgcXJlYWwgJnJ3aWR0aCgpOwogICAgcXJlYWwgJnJoZWln
aHQoKTsKCiAgICBRU2l6ZUYgJm9wZXJhdG9yKz0oY29uc3QgUVNpemVGICYpOwogICAgUVNpemVG
ICZvcGVyYXRvci09KGNvbnN0IFFTaXplRiAmKTsKICAgIFFTaXplRiAmb3BlcmF0b3IqPShxcmVh
bCBjKTsKICAgIFFTaXplRiAmb3BlcmF0b3IvPShxcmVhbCBjKTsKCiAgICBmcmllbmQgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBRU2l6ZUYgJiwgY29uc3QgUVNpemVGICYpOwogICAgZnJp
ZW5kIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUVNpemVGICYsIGNvbnN0IFFTaXplRiAm
KTsKICAgIGZyaWVuZCBpbmxpbmUgY29uc3QgUVNpemVGIG9wZXJhdG9yKyhjb25zdCBRU2l6ZUYg
JiwgY29uc3QgUVNpemVGICYpOwogICAgZnJpZW5kIGlubGluZSBjb25zdCBRU2l6ZUYgb3BlcmF0
b3ItKGNvbnN0IFFTaXplRiAmLCBjb25zdCBRU2l6ZUYgJik7CiAgICBmcmllbmQgaW5saW5lIGNv
bnN0IFFTaXplRiBvcGVyYXRvciooY29uc3QgUVNpemVGICYsIHFyZWFsKTsKICAgIGZyaWVuZCBp
bmxpbmUgY29uc3QgUVNpemVGIG9wZXJhdG9yKihxcmVhbCwgY29uc3QgUVNpemVGICYpOwogICAg
ZnJpZW5kIGlubGluZSBjb25zdCBRU2l6ZUYgb3BlcmF0b3IvKGNvbnN0IFFTaXplRiAmLCBxcmVh
bCk7CgogICAgaW5saW5lIFFTaXplIHRvU2l6ZSgpIGNvbnN0OwoKcHJpdmF0ZToKICAgIHFyZWFs
IHdkOwogICAgcXJlYWwgaHQ7Cn07CnRlbXBsYXRlIDw+IGNsYXNzIFFUeXBlSW5mbzxRU2l6ZUYg
PiB7IHB1YmxpYzogZW51bSB7IGlzQ29tcGxleCA9ICgoKFFfTU9WQUJMRV9UWVBFKSAmIFFfUFJJ
TUlUSVZFX1RZUEUpID09IDApLCBpc1N0YXRpYyA9ICgoKFFfTU9WQUJMRV9UWVBFKSAmIChRX01P
VkFCTEVfVFlQRSB8IFFfUFJJTUlUSVZFX1RZUEUpKSA9PSAwKSwgaXNMYXJnZSA9IChzaXplb2Yo
UVNpemVGKT5zaXplb2Yodm9pZCopKSwgaXNQb2ludGVyID0gZmFsc2UsIGlzRHVtbXkgPSAoKChR
X01PVkFCTEVfVFlQRSkgJiBRX0RVTU1ZX1RZUEUpICE9IDApIH07IHN0YXRpYyBpbmxpbmUgY29u
c3QgY2hhciAqbmFtZSgpIHsgcmV0dXJuICJRU2l6ZUYiOyB9IH07CgoKCgoKCgpfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0
YVN0cmVhbSAmLCBjb25zdCBRU2l6ZUYgJik7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICYsIFFTaXplRiAm
KTsKCgoKCgoKCmlubGluZSBRU2l6ZUY6OlFTaXplRigpCnsgd2QgPSBodCA9IC0xLjsgfQoKaW5s
aW5lIFFTaXplRjo6UVNpemVGKGNvbnN0IFFTaXplICZzeikKICAgIDogd2Qoc3oud2lkdGgoKSks
IGh0KHN6LmhlaWdodCgpKQp7Cn0KCmlubGluZSBRU2l6ZUY6OlFTaXplRihxcmVhbCB3LCBxcmVh
bCBoKQp7IHdkID0gdzsgaHQgPSBoOyB9CgppbmxpbmUgYm9vbCBRU2l6ZUY6OmlzTnVsbCgpIGNv
bnN0CnsgcmV0dXJuIHFJc051bGwod2QpICYmIHFJc051bGwoaHQpOyB9CgppbmxpbmUgYm9vbCBR
U2l6ZUY6OmlzRW1wdHkoKSBjb25zdAp7IHJldHVybiB3ZCA8PSAwLiB8fCBodCA8PSAwLjsgfQoK
aW5saW5lIGJvb2wgUVNpemVGOjppc1ZhbGlkKCkgY29uc3QKeyByZXR1cm4gd2QgPj0gMC4gJiYg
aHQgPj0gMC47IH0KCmlubGluZSBxcmVhbCBRU2l6ZUY6OndpZHRoKCkgY29uc3QKeyByZXR1cm4g
d2Q7IH0KCmlubGluZSBxcmVhbCBRU2l6ZUY6OmhlaWdodCgpIGNvbnN0CnsgcmV0dXJuIGh0OyB9
CgppbmxpbmUgdm9pZCBRU2l6ZUY6OnNldFdpZHRoKHFyZWFsIHcpCnsgd2QgPSB3OyB9Cgppbmxp
bmUgdm9pZCBRU2l6ZUY6OnNldEhlaWdodChxcmVhbCBoKQp7IGh0ID0gaDsgfQoKaW5saW5lIHZv
aWQgUVNpemVGOjpzY2FsZShxcmVhbCB3LCBxcmVhbCBoLCBRdDo6QXNwZWN0UmF0aW9Nb2RlIG1v
ZGUpCnsgc2NhbGUoUVNpemVGKHcsIGgpLCBtb2RlKTsgfQoKaW5saW5lIHFyZWFsICZRU2l6ZUY6
OnJ3aWR0aCgpCnsgcmV0dXJuIHdkOyB9CgppbmxpbmUgcXJlYWwgJlFTaXplRjo6cmhlaWdodCgp
CnsgcmV0dXJuIGh0OyB9CgppbmxpbmUgUVNpemVGICZRU2l6ZUY6Om9wZXJhdG9yKz0oY29uc3Qg
UVNpemVGICZzKQp7IHdkICs9IHMud2Q7IGh0ICs9IHMuaHQ7IHJldHVybiAqdGhpczsgfQoKaW5s
aW5lIFFTaXplRiAmUVNpemVGOjpvcGVyYXRvci09KGNvbnN0IFFTaXplRiAmcykKeyB3ZCAtPSBz
LndkOyBodCAtPSBzLmh0OyByZXR1cm4gKnRoaXM7IH0KCmlubGluZSBRU2l6ZUYgJlFTaXplRjo6
b3BlcmF0b3IqPShxcmVhbCBjKQp7IHdkICo9IGM7IGh0ICo9IGM7IHJldHVybiAqdGhpczsgfQoK
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRU2l6ZUYgJnMxLCBjb25zdCBRU2l6ZUYgJnMy
KQp7IHJldHVybiBxRnV6enlDb21wYXJlKHMxLndkLCBzMi53ZCkgJiYgcUZ1enp5Q29tcGFyZShz
MS5odCwgczIuaHQpOyB9CgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFTaXplRiAmczEs
IGNvbnN0IFFTaXplRiAmczIpCnsgcmV0dXJuICFxRnV6enlDb21wYXJlKHMxLndkLCBzMi53ZCkg
fHwgIXFGdXp6eUNvbXBhcmUoczEuaHQsIHMyLmh0KTsgfQoKaW5saW5lIGNvbnN0IFFTaXplRiBv
cGVyYXRvcisoY29uc3QgUVNpemVGICYgczEsIGNvbnN0IFFTaXplRiAmIHMyKQp7IHJldHVybiBR
U2l6ZUYoczEud2QrczIud2QsIHMxLmh0K3MyLmh0KTsgfQoKaW5saW5lIGNvbnN0IFFTaXplRiBv
cGVyYXRvci0oY29uc3QgUVNpemVGICZzMSwgY29uc3QgUVNpemVGICZzMikKeyByZXR1cm4gUVNp
emVGKHMxLndkLXMyLndkLCBzMS5odC1zMi5odCk7IH0KCmlubGluZSBjb25zdCBRU2l6ZUYgb3Bl
cmF0b3IqKGNvbnN0IFFTaXplRiAmcywgcXJlYWwgYykKeyByZXR1cm4gUVNpemVGKHMud2QqYywg
cy5odCpjKTsgfQoKaW5saW5lIGNvbnN0IFFTaXplRiBvcGVyYXRvcioocXJlYWwgYywgY29uc3Qg
UVNpemVGICZzKQp7IHJldHVybiBRU2l6ZUYocy53ZCpjLCBzLmh0KmMpOyB9CgppbmxpbmUgUVNp
emVGICZRU2l6ZUY6Om9wZXJhdG9yLz0ocXJlYWwgYykKewogICAgKCghKCFxRnV6enlJc051bGwo
YykpKSA/IHF0X2Fzc2VydCgiIXFGdXp6eUlzTnVsbChjKSIsIi9vcHQvbG9jYWwvaW5jbHVkZS9R
dENvcmUvcXNpemUuaCIsMzM0KSA6IHF0X25vb3AoKSk7CiAgICB3ZCA9IHdkL2M7IGh0ID0gaHQv
YzsKICAgIHJldHVybiAqdGhpczsKfQoKaW5saW5lIGNvbnN0IFFTaXplRiBvcGVyYXRvci8oY29u
c3QgUVNpemVGICZzLCBxcmVhbCBjKQp7CiAgICAoKCEoIXFGdXp6eUlzTnVsbChjKSkpID8gcXRf
YXNzZXJ0KCIhcUZ1enp5SXNOdWxsKGMpIiwiL29wdC9sb2NhbC9pbmNsdWRlL1F0Q29yZS9xc2l6
ZS5oIiwzNDEpIDogcXRfbm9vcCgpKTsKICAgIHJldHVybiBRU2l6ZUYocy53ZC9jLCBzLmh0L2Mp
Owp9CgppbmxpbmUgUVNpemVGIFFTaXplRjo6ZXhwYW5kZWRUbyhjb25zdCBRU2l6ZUYgJiBvdGhl
clNpemUpIGNvbnN0CnsKICAgIHJldHVybiBRU2l6ZUYocU1heCh3ZCxvdGhlclNpemUud2QpLCBx
TWF4KGh0LG90aGVyU2l6ZS5odCkpOwp9CgppbmxpbmUgUVNpemVGIFFTaXplRjo6Ym91bmRlZFRv
KGNvbnN0IFFTaXplRiAmIG90aGVyU2l6ZSkgY29uc3QKewogICAgcmV0dXJuIFFTaXplRihxTWlu
KHdkLG90aGVyU2l6ZS53ZCksIHFNaW4oaHQsb3RoZXJTaXplLmh0KSk7Cn0KCmlubGluZSBRU2l6
ZSBRU2l6ZUY6OnRvU2l6ZSgpIGNvbnN0CnsKICAgIHJldHVybiBRU2l6ZShxUm91bmQod2QpLCBx
Um91bmQoaHQpKTsKfQoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFE
ZWJ1ZyBvcGVyYXRvcjw8KFFEZWJ1ZywgY29uc3QgUVNpemVGICYpOwoKCgoKCiMgNDYgIi9vcHQv
bG9jYWwvaW5jbHVkZS9RdENvcmUvcXJlY3QuaCIgMgoKCgoKCgoKCgoKdHlwZWRlZiBRdFZhbGlk
TGljZW5zZUZvckNvcmVNb2R1bGUgUXRDb3JlTW9kdWxlOwoKY2xhc3MgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUVJlY3QKewpwdWJsaWM6CiAgICBRUmVjdCgpIHsgeDEg
PSB5MSA9IDA7IHgyID0geTIgPSAtMTsgfQogICAgUVJlY3QoY29uc3QgUVBvaW50ICZ0b3BsZWZ0
LCBjb25zdCBRUG9pbnQgJmJvdHRvbXJpZ2h0KTsKICAgIFFSZWN0KGNvbnN0IFFQb2ludCAmdG9w
bGVmdCwgY29uc3QgUVNpemUgJnNpemUpOwogICAgUVJlY3QoaW50IGxlZnQsIGludCB0b3AsIGlu
dCB3aWR0aCwgaW50IGhlaWdodCk7CgogICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0OwogICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CgogICAgaW50IGxlZnQo
KSBjb25zdDsKICAgIGludCB0b3AoKSBjb25zdDsKICAgIGludCByaWdodCgpIGNvbnN0OwogICAg
aW50IGJvdHRvbSgpIGNvbnN0OwogICAgUVJlY3Qgbm9ybWFsaXplZCgpIGNvbnN0OwojIDg1ICIv
b3B0L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FyZWN0LmgiCiAgICBpbnQgeCgpIGNvbnN0OwogICAg
aW50IHkoKSBjb25zdDsKICAgIHZvaWQgc2V0TGVmdChpbnQgcG9zKTsKICAgIHZvaWQgc2V0VG9w
KGludCBwb3MpOwogICAgdm9pZCBzZXRSaWdodChpbnQgcG9zKTsKICAgIHZvaWQgc2V0Qm90dG9t
KGludCBwb3MpOwogICAgdm9pZCBzZXRYKGludCB4KTsKICAgIHZvaWQgc2V0WShpbnQgeSk7Cgog
ICAgdm9pZCBzZXRUb3BMZWZ0KGNvbnN0IFFQb2ludCAmcCk7CiAgICB2b2lkIHNldEJvdHRvbVJp
Z2h0KGNvbnN0IFFQb2ludCAmcCk7CiAgICB2b2lkIHNldFRvcFJpZ2h0KGNvbnN0IFFQb2ludCAm
cCk7CiAgICB2b2lkIHNldEJvdHRvbUxlZnQoY29uc3QgUVBvaW50ICZwKTsKCiAgICBRUG9pbnQg
dG9wTGVmdCgpIGNvbnN0OwogICAgUVBvaW50IGJvdHRvbVJpZ2h0KCkgY29uc3Q7CiAgICBRUG9p
bnQgdG9wUmlnaHQoKSBjb25zdDsKICAgIFFQb2ludCBib3R0b21MZWZ0KCkgY29uc3Q7CiAgICBR
UG9pbnQgY2VudGVyKCkgY29uc3Q7CgogICAgdm9pZCBtb3ZlTGVmdChpbnQgcG9zKTsKICAgIHZv
aWQgbW92ZVRvcChpbnQgcG9zKTsKICAgIHZvaWQgbW92ZVJpZ2h0KGludCBwb3MpOwogICAgdm9p
ZCBtb3ZlQm90dG9tKGludCBwb3MpOwogICAgdm9pZCBtb3ZlVG9wTGVmdChjb25zdCBRUG9pbnQg
JnApOwogICAgdm9pZCBtb3ZlQm90dG9tUmlnaHQoY29uc3QgUVBvaW50ICZwKTsKICAgIHZvaWQg
bW92ZVRvcFJpZ2h0KGNvbnN0IFFQb2ludCAmcCk7CiAgICB2b2lkIG1vdmVCb3R0b21MZWZ0KGNv
bnN0IFFQb2ludCAmcCk7CiAgICB2b2lkIG1vdmVDZW50ZXIoY29uc3QgUVBvaW50ICZwKTsKCiAg
ICBpbmxpbmUgdm9pZCB0cmFuc2xhdGUoaW50IGR4LCBpbnQgZHkpOwogICAgaW5saW5lIHZvaWQg
dHJhbnNsYXRlKGNvbnN0IFFQb2ludCAmcCk7CiAgICBpbmxpbmUgUVJlY3QgdHJhbnNsYXRlZChp
bnQgZHgsIGludCBkeSkgY29uc3Q7CiAgICBpbmxpbmUgUVJlY3QgdHJhbnNsYXRlZChjb25zdCBR
UG9pbnQgJnApIGNvbnN0OwoKICAgIHZvaWQgbW92ZVRvKGludCB4LCBpbnQgdCk7CiAgICB2b2lk
IG1vdmVUbyhjb25zdCBRUG9pbnQgJnApOwoKCgoKCgogICAgdm9pZCBzZXRSZWN0KGludCB4LCBp
bnQgeSwgaW50IHcsIGludCBoKTsKICAgIGlubGluZSB2b2lkIGdldFJlY3QoaW50ICp4LCBpbnQg
KnksIGludCAqdywgaW50ICpoKSBjb25zdDsKCiAgICB2b2lkIHNldENvb3JkcyhpbnQgeDEsIGlu
dCB5MSwgaW50IHgyLCBpbnQgeTIpOwoKCgogICAgaW5saW5lIHZvaWQgZ2V0Q29vcmRzKGludCAq
eDEsIGludCAqeTEsIGludCAqeDIsIGludCAqeTIpIGNvbnN0OwoKICAgIGlubGluZSB2b2lkIGFk
anVzdChpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIpOwogICAgaW5saW5lIFFSZWN0IGFk
anVzdGVkKGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MikgY29uc3Q7CgogICAgUVNpemUg
c2l6ZSgpIGNvbnN0OwogICAgaW50IHdpZHRoKCkgY29uc3Q7CiAgICBpbnQgaGVpZ2h0KCkgY29u
c3Q7CiAgICB2b2lkIHNldFdpZHRoKGludCB3KTsKICAgIHZvaWQgc2V0SGVpZ2h0KGludCBoKTsK
ICAgIHZvaWQgc2V0U2l6ZShjb25zdCBRU2l6ZSAmcyk7CgogICAgUVJlY3Qgb3BlcmF0b3J8KGNv
bnN0IFFSZWN0ICZyKSBjb25zdDsKICAgIFFSZWN0IG9wZXJhdG9yJihjb25zdCBRUmVjdCAmcikg
Y29uc3Q7CiAgICBRUmVjdCYgb3BlcmF0b3J8PShjb25zdCBRUmVjdCAmcik7CiAgICBRUmVjdCYg
b3BlcmF0b3ImPShjb25zdCBRUmVjdCAmcik7CgogICAgYm9vbCBjb250YWlucyhjb25zdCBRUG9p
bnQgJnAsIGJvb2wgcHJvcGVyPWZhbHNlKSBjb25zdDsKICAgIGJvb2wgY29udGFpbnMoaW50IHgs
IGludCB5KSBjb25zdDsKICAgIGJvb2wgY29udGFpbnMoaW50IHgsIGludCB5LCBib29sIHByb3Bl
cikgY29uc3Q7CiAgICBib29sIGNvbnRhaW5zKGNvbnN0IFFSZWN0ICZyLCBib29sIHByb3BlciA9
IGZhbHNlKSBjb25zdDsKICAgIFFSZWN0IHVuaXRlKGNvbnN0IFFSZWN0ICZyKSBjb25zdDsKICAg
IFFSZWN0IHVuaXRlZChjb25zdCBRUmVjdCAmb3RoZXIpIGNvbnN0OwogICAgUVJlY3QgaW50ZXJz
ZWN0KGNvbnN0IFFSZWN0ICZyKSBjb25zdDsKICAgIFFSZWN0IGludGVyc2VjdGVkKGNvbnN0IFFS
ZWN0ICZvdGhlcikgY29uc3Q7CiAgICBib29sIGludGVyc2VjdHMoY29uc3QgUVJlY3QgJnIpIGNv
bnN0OwoKICAgIGZyaWVuZCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFSZWN0ICYsIGNvbnN0IFFSZWN0ICYpOwogICAg
ZnJpZW5kIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgUVJlY3QgJiwgY29uc3QgUVJlY3QgJik7CgoKCgoKCgpwcml2YXRl
OgoKCgoKCiAgICBpbnQgeTE7CiAgICBpbnQgeDE7CiAgICBpbnQgeTI7CiAgICBpbnQgeDI7CgoK
CgoKCgp9Owp0ZW1wbGF0ZSA8PiBjbGFzcyBRVHlwZUluZm88UVJlY3QgPiB7IHB1YmxpYzogZW51
bSB7IGlzQ29tcGxleCA9ICgoKFFfTU9WQUJMRV9UWVBFKSAmIFFfUFJJTUlUSVZFX1RZUEUpID09
IDApLCBpc1N0YXRpYyA9ICgoKFFfTU9WQUJMRV9UWVBFKSAmIChRX01PVkFCTEVfVFlQRSB8IFFf
UFJJTUlUSVZFX1RZUEUpKSA9PSAwKSwgaXNMYXJnZSA9IChzaXplb2YoUVJlY3QpPnNpemVvZih2
b2lkKikpLCBpc1BvaW50ZXIgPSBmYWxzZSwgaXNEdW1teSA9ICgoKFFfTU9WQUJMRV9UWVBFKSAm
IFFfRFVNTVlfVFlQRSkgIT0gMCkgfTsgc3RhdGljIGlubGluZSBjb25zdCBjaGFyICpuYW1lKCkg
eyByZXR1cm4gIlFSZWN0IjsgfSB9OwoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSkgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRUmVjdCAmLCBjb25zdCBRUmVjdCAm
KTsKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBRUmVjdCAmLCBjb25zdCBRUmVjdCAmKTsKCgoKCgoKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFT
dHJlYW0gJiwgY29uc3QgUVJlY3QgJik7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICYsIFFSZWN0ICYpOwoK
CgoKCgppbmxpbmUgUVJlY3Q6OlFSZWN0KGludCBhbGVmdCwgaW50IGF0b3AsIGludCBhd2lkdGgs
IGludCBhaGVpZ2h0KQp7CiAgICB4MSA9IGFsZWZ0OwogICAgeTEgPSBhdG9wOwogICAgeDIgPSAo
YWxlZnQgKyBhd2lkdGggLSAxKTsKICAgIHkyID0gKGF0b3AgKyBhaGVpZ2h0IC0gMSk7Cn0KCmlu
bGluZSBRUmVjdDo6UVJlY3QoY29uc3QgUVBvaW50ICZhdG9wTGVmdCwgY29uc3QgUVBvaW50ICZh
Ym90dG9tUmlnaHQpCnsKICAgIHgxID0gYXRvcExlZnQueCgpOwogICAgeTEgPSBhdG9wTGVmdC55
KCk7CiAgICB4MiA9IGFib3R0b21SaWdodC54KCk7CiAgICB5MiA9IGFib3R0b21SaWdodC55KCk7
Cn0KCmlubGluZSBRUmVjdDo6UVJlY3QoY29uc3QgUVBvaW50ICZhdG9wTGVmdCwgY29uc3QgUVNp
emUgJmFzaXplKQp7CiAgICB4MSA9IGF0b3BMZWZ0LngoKTsKICAgIHkxID0gYXRvcExlZnQueSgp
OwogICAgeDIgPSAoeDErYXNpemUud2lkdGgoKSAtIDEpOwogICAgeTIgPSAoeTErYXNpemUuaGVp
Z2h0KCkgLSAxKTsKfQoKaW5saW5lIGJvb2wgUVJlY3Q6OmlzTnVsbCgpIGNvbnN0CnsgcmV0dXJu
IHgyID09IHgxIC0gMSAmJiB5MiA9PSB5MSAtIDE7IH0KCmlubGluZSBib29sIFFSZWN0Ojppc0Vt
cHR5KCkgY29uc3QKeyByZXR1cm4geDEgPiB4MiB8fCB5MSA+IHkyOyB9CgppbmxpbmUgYm9vbCBR
UmVjdDo6aXNWYWxpZCgpIGNvbnN0CnsgcmV0dXJuIHgxIDw9IHgyICYmIHkxIDw9IHkyOyB9Cgpp
bmxpbmUgaW50IFFSZWN0OjpsZWZ0KCkgY29uc3QKeyByZXR1cm4geDE7IH0KCmlubGluZSBpbnQg
UVJlY3Q6OnRvcCgpIGNvbnN0CnsgcmV0dXJuIHkxOyB9CgppbmxpbmUgaW50IFFSZWN0OjpyaWdo
dCgpIGNvbnN0CnsgcmV0dXJuIHgyOyB9CgppbmxpbmUgaW50IFFSZWN0Ojpib3R0b20oKSBjb25z
dAp7IHJldHVybiB5MjsgfQoKaW5saW5lIGludCBRUmVjdDo6eCgpIGNvbnN0CnsgcmV0dXJuIHgx
OyB9CgppbmxpbmUgaW50IFFSZWN0Ojp5KCkgY29uc3QKeyByZXR1cm4geTE7IH0KCmlubGluZSB2
b2lkIFFSZWN0OjpzZXRMZWZ0KGludCBwb3MpCnsgeDEgPSBwb3M7IH0KCmlubGluZSB2b2lkIFFS
ZWN0OjpzZXRUb3AoaW50IHBvcykKeyB5MSA9IHBvczsgfQoKaW5saW5lIHZvaWQgUVJlY3Q6OnNl
dFJpZ2h0KGludCBwb3MpCnsgeDIgPSBwb3M7IH0KCmlubGluZSB2b2lkIFFSZWN0OjpzZXRCb3R0
b20oaW50IHBvcykKeyB5MiA9IHBvczsgfQoKaW5saW5lIHZvaWQgUVJlY3Q6OnNldFRvcExlZnQo
Y29uc3QgUVBvaW50ICZwKQp7IHgxID0gcC54KCk7IHkxID0gcC55KCk7IH0KCmlubGluZSB2b2lk
IFFSZWN0OjpzZXRCb3R0b21SaWdodChjb25zdCBRUG9pbnQgJnApCnsgeDIgPSBwLngoKTsgeTIg
PSBwLnkoKTsgfQoKaW5saW5lIHZvaWQgUVJlY3Q6OnNldFRvcFJpZ2h0KGNvbnN0IFFQb2ludCAm
cCkKeyB4MiA9IHAueCgpOyB5MSA9IHAueSgpOyB9CgppbmxpbmUgdm9pZCBRUmVjdDo6c2V0Qm90
dG9tTGVmdChjb25zdCBRUG9pbnQgJnApCnsgeDEgPSBwLngoKTsgeTIgPSBwLnkoKTsgfQoKaW5s
aW5lIHZvaWQgUVJlY3Q6OnNldFgoaW50IGF4KQp7IHgxID0gYXg7IH0KCmlubGluZSB2b2lkIFFS
ZWN0OjpzZXRZKGludCBheSkKeyB5MSA9IGF5OyB9CgppbmxpbmUgUVBvaW50IFFSZWN0Ojp0b3BM
ZWZ0KCkgY29uc3QKeyByZXR1cm4gUVBvaW50KHgxLCB5MSk7IH0KCmlubGluZSBRUG9pbnQgUVJl
Y3Q6OmJvdHRvbVJpZ2h0KCkgY29uc3QKeyByZXR1cm4gUVBvaW50KHgyLCB5Mik7IH0KCmlubGlu
ZSBRUG9pbnQgUVJlY3Q6OnRvcFJpZ2h0KCkgY29uc3QKeyByZXR1cm4gUVBvaW50KHgyLCB5MSk7
IH0KCmlubGluZSBRUG9pbnQgUVJlY3Q6OmJvdHRvbUxlZnQoKSBjb25zdAp7IHJldHVybiBRUG9p
bnQoeDEsIHkyKTsgfQoKaW5saW5lIFFQb2ludCBRUmVjdDo6Y2VudGVyKCkgY29uc3QKeyByZXR1
cm4gUVBvaW50KCh4MSt4MikvMiwgKHkxK3kyKS8yKTsgfQoKaW5saW5lIGludCBRUmVjdDo6d2lk
dGgoKSBjb25zdAp7IHJldHVybiB4MiAtIHgxICsgMTsgfQoKaW5saW5lIGludCBRUmVjdDo6aGVp
Z2h0KCkgY29uc3QKeyByZXR1cm4geTIgLSB5MSArIDE7IH0KCmlubGluZSBRU2l6ZSBRUmVjdDo6
c2l6ZSgpIGNvbnN0CnsgcmV0dXJuIFFTaXplKHdpZHRoKCksIGhlaWdodCgpKTsgfQoKaW5saW5l
IHZvaWQgUVJlY3Q6OnRyYW5zbGF0ZShpbnQgZHgsIGludCBkeSkKewogICAgeDEgKz0gZHg7CiAg
ICB5MSArPSBkeTsKICAgIHgyICs9IGR4OwogICAgeTIgKz0gZHk7Cn0KCmlubGluZSB2b2lkIFFS
ZWN0Ojp0cmFuc2xhdGUoY29uc3QgUVBvaW50ICZwKQp7CiAgICB4MSArPSBwLngoKTsKICAgIHkx
ICs9IHAueSgpOwogICAgeDIgKz0gcC54KCk7CiAgICB5MiArPSBwLnkoKTsKfQoKaW5saW5lIFFS
ZWN0IFFSZWN0Ojp0cmFuc2xhdGVkKGludCBkeCwgaW50IGR5KSBjb25zdAp7IHJldHVybiBRUmVj
dChRUG9pbnQoeDEgKyBkeCwgeTEgKyBkeSksIFFQb2ludCh4MiArIGR4LCB5MiArIGR5KSk7IH0K
CmlubGluZSBRUmVjdCBRUmVjdDo6dHJhbnNsYXRlZChjb25zdCBRUG9pbnQgJnApIGNvbnN0Cnsg
cmV0dXJuIFFSZWN0KFFQb2ludCh4MSArIHAueCgpLCB5MSArIHAueSgpKSwgUVBvaW50KHgyICsg
cC54KCksIHkyICsgcC55KCkpKTsgfQoKaW5saW5lIHZvaWQgUVJlY3Q6Om1vdmVUbyhpbnQgYXgs
IGludCBheSkKewogICAgeDIgKz0gYXggLSB4MTsKICAgIHkyICs9IGF5IC0geTE7CiAgICB4MSA9
IGF4OwogICAgeTEgPSBheTsKfQoKaW5saW5lIHZvaWQgUVJlY3Q6Om1vdmVUbyhjb25zdCBRUG9p
bnQgJnApCnsKICAgIHgyICs9IHAueCgpIC0geDE7CiAgICB5MiArPSBwLnkoKSAtIHkxOwogICAg
eDEgPSBwLngoKTsKICAgIHkxID0gcC55KCk7Cn0KCmlubGluZSB2b2lkIFFSZWN0Ojptb3ZlTGVm
dChpbnQgcG9zKQp7IHgyICs9IChwb3MgLSB4MSk7IHgxID0gcG9zOyB9CgppbmxpbmUgdm9pZCBR
UmVjdDo6bW92ZVRvcChpbnQgcG9zKQp7IHkyICs9IChwb3MgLSB5MSk7IHkxID0gcG9zOyB9Cgpp
bmxpbmUgdm9pZCBRUmVjdDo6bW92ZVJpZ2h0KGludCBwb3MpCnsKICAgIHgxICs9IChwb3MgLSB4
Mik7CiAgICB4MiA9IHBvczsKfQoKaW5saW5lIHZvaWQgUVJlY3Q6Om1vdmVCb3R0b20oaW50IHBv
cykKewogICAgeTEgKz0gKHBvcyAtIHkyKTsKICAgIHkyID0gcG9zOwp9CgppbmxpbmUgdm9pZCBR
UmVjdDo6bW92ZVRvcExlZnQoY29uc3QgUVBvaW50ICZwKQp7CiAgICBtb3ZlTGVmdChwLngoKSk7
CiAgICBtb3ZlVG9wKHAueSgpKTsKfQoKaW5saW5lIHZvaWQgUVJlY3Q6Om1vdmVCb3R0b21SaWdo
dChjb25zdCBRUG9pbnQgJnApCnsKICAgIG1vdmVSaWdodChwLngoKSk7CiAgICBtb3ZlQm90dG9t
KHAueSgpKTsKfQoKaW5saW5lIHZvaWQgUVJlY3Q6Om1vdmVUb3BSaWdodChjb25zdCBRUG9pbnQg
JnApCnsKICAgIG1vdmVSaWdodChwLngoKSk7CiAgICBtb3ZlVG9wKHAueSgpKTsKfQoKaW5saW5l
IHZvaWQgUVJlY3Q6Om1vdmVCb3R0b21MZWZ0KGNvbnN0IFFQb2ludCAmcCkKewogICAgbW92ZUxl
ZnQocC54KCkpOwogICAgbW92ZUJvdHRvbShwLnkoKSk7Cn0KCmlubGluZSB2b2lkIFFSZWN0Ojpn
ZXRSZWN0KGludCAqYXgsIGludCAqYXksIGludCAqYXcsIGludCAqYWgpIGNvbnN0CnsKICAgICph
eCA9IHgxOwogICAgKmF5ID0geTE7CiAgICAqYXcgPSB4MiAtIHgxICsgMTsKICAgICphaCA9IHky
IC0geTEgKyAxOwp9CgppbmxpbmUgdm9pZCBRUmVjdDo6c2V0UmVjdChpbnQgYXgsIGludCBheSwg
aW50IGF3LCBpbnQgYWgpCnsKICAgIHgxID0gYXg7CiAgICB5MSA9IGF5OwogICAgeDIgPSAoYXgg
KyBhdyAtIDEpOwogICAgeTIgPSAoYXkgKyBhaCAtIDEpOwp9CgppbmxpbmUgdm9pZCBRUmVjdDo6
Z2V0Q29vcmRzKGludCAqeHAxLCBpbnQgKnlwMSwgaW50ICp4cDIsIGludCAqeXAyKSBjb25zdAp7
CiAgICAqeHAxID0geDE7CiAgICAqeXAxID0geTE7CiAgICAqeHAyID0geDI7CiAgICAqeXAyID0g
eTI7Cn0KCmlubGluZSB2b2lkIFFSZWN0OjpzZXRDb29yZHMoaW50IHhwMSwgaW50IHlwMSwgaW50
IHhwMiwgaW50IHlwMikKewogICAgeDEgPSB4cDE7CiAgICB5MSA9IHlwMTsKICAgIHgyID0geHAy
OwogICAgeTIgPSB5cDI7Cn0KIyA0MzEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcXJlY3Qu
aCIKaW5saW5lIFFSZWN0IFFSZWN0OjphZGp1c3RlZChpbnQgeHAxLCBpbnQgeXAxLCBpbnQgeHAy
LCBpbnQgeXAyKSBjb25zdAp7IHJldHVybiBRUmVjdChRUG9pbnQoeDEgKyB4cDEsIHkxICsgeXAx
KSwgUVBvaW50KHgyICsgeHAyLCB5MiArIHlwMikpOyB9CgppbmxpbmUgdm9pZCBRUmVjdDo6YWRq
dXN0KGludCBkeDEsIGludCBkeTEsIGludCBkeDIsIGludCBkeTIpCnsKICAgIHgxICs9IGR4MTsK
ICAgIHkxICs9IGR5MTsKICAgIHgyICs9IGR4MjsKICAgIHkyICs9IGR5MjsKfQoKaW5saW5lIHZv
aWQgUVJlY3Q6OnNldFdpZHRoKGludCB3KQp7IHgyID0gKHgxICsgdyAtIDEpOyB9CgppbmxpbmUg
dm9pZCBRUmVjdDo6c2V0SGVpZ2h0KGludCBoKQp7IHkyID0gKHkxICsgaCAtIDEpOyB9Cgppbmxp
bmUgdm9pZCBRUmVjdDo6c2V0U2l6ZShjb25zdCBRU2l6ZSAmcykKewogICAgeDIgPSAocy53aWR0
aCgpICsgeDEgLSAxKTsKICAgIHkyID0gKHMuaGVpZ2h0KCkgKyB5MSAtIDEpOwp9CgppbmxpbmUg
Ym9vbCBRUmVjdDo6Y29udGFpbnMoaW50IGF4LCBpbnQgYXksIGJvb2wgYXByb3BlcikgY29uc3QK
ewogICAgcmV0dXJuIGNvbnRhaW5zKFFQb2ludChheCwgYXkpLCBhcHJvcGVyKTsKfQoKaW5saW5l
IGJvb2wgUVJlY3Q6OmNvbnRhaW5zKGludCBheCwgaW50IGF5KSBjb25zdAp7CiAgICByZXR1cm4g
Y29udGFpbnMoUVBvaW50KGF4LCBheSksIGZhbHNlKTsKfQoKaW5saW5lIFFSZWN0JiBRUmVjdDo6
b3BlcmF0b3J8PShjb25zdCBRUmVjdCAmcikKewogICAgKnRoaXMgPSAqdGhpcyB8IHI7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBRUmVjdCYgUVJlY3Q6Om9wZXJhdG9yJj0oY29uc3QgUVJl
Y3QgJnIpCnsKICAgICp0aGlzID0gKnRoaXMgJiByOwogICAgcmV0dXJuICp0aGlzOwp9Cgppbmxp
bmUgUVJlY3QgUVJlY3Q6OmludGVyc2VjdChjb25zdCBRUmVjdCAmcikgY29uc3QKewogICAgcmV0
dXJuICp0aGlzICYgcjsKfQoKaW5saW5lIFFSZWN0IFFSZWN0OjppbnRlcnNlY3RlZChjb25zdCBR
UmVjdCAmb3RoZXIpIGNvbnN0CnsKICAgIHJldHVybiBpbnRlcnNlY3Qob3RoZXIpOwp9Cgppbmxp
bmUgUVJlY3QgUVJlY3Q6OnVuaXRlKGNvbnN0IFFSZWN0ICZyKSBjb25zdAp7CiAgICByZXR1cm4g
KnRoaXMgfCByOwp9CgppbmxpbmUgUVJlY3QgUVJlY3Q6OnVuaXRlZChjb25zdCBRUmVjdCAmcikg
Y29uc3QKewogICAgIHJldHVybiB1bml0ZShyKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBRUmVjdCAmcjEsIGNvbnN0IFFSZWN0ICZyMikKewogICAgcmV0dXJuIHIxLngxPT1yMi54
MSAmJiByMS54Mj09cjIueDIgJiYgcjEueTE9PXIyLnkxICYmIHIxLnkyPT1yMi55MjsKfQoKaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRUmVjdCAmcjEsIGNvbnN0IFFSZWN0ICZyMikKewog
ICAgcmV0dXJuIHIxLngxIT1yMi54MSB8fCByMS54MiE9cjIueDIgfHwgcjEueTEhPXIyLnkxIHx8
IHIxLnkyIT1yMi55MjsKfQoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
IFFEZWJ1ZyBvcGVyYXRvcjw8KFFEZWJ1ZywgY29uc3QgUVJlY3QgJik7CgoKCmNsYXNzIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFSZWN0Rgp7CnB1YmxpYzoKICAgIFFS
ZWN0RigpIHsgeHAgPSB5cCA9IDAuOyB3ID0gaCA9IDAuOyB9CiAgICBRUmVjdEYoY29uc3QgUVBv
aW50RiAmdG9wbGVmdCwgY29uc3QgUVNpemVGICZzaXplKTsKICAgIFFSZWN0Rihjb25zdCBRUG9p
bnRGICZ0b3BsZWZ0LCBjb25zdCBRUG9pbnRGICZib3R0b21SaWdodCk7CiAgICBRUmVjdEYocXJl
YWwgbGVmdCwgcXJlYWwgdG9wLCBxcmVhbCB3aWR0aCwgcXJlYWwgaGVpZ2h0KTsKICAgIFFSZWN0
Rihjb25zdCBRUmVjdCAmcmVjdCk7CgogICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0OwogICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICBRUmVjdEYgbm9y
bWFsaXplZCgpIGNvbnN0OwoKICAgIGlubGluZSBxcmVhbCBsZWZ0KCkgY29uc3QgeyByZXR1cm4g
eHA7IH0KICAgIGlubGluZSBxcmVhbCB0b3AoKSBjb25zdCB7IHJldHVybiB5cDsgfQogICAgaW5s
aW5lIHFyZWFsIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4geHAgKyB3OyB9CiAgICBpbmxpbmUgcXJl
YWwgYm90dG9tKCkgY29uc3QgeyByZXR1cm4geXAgKyBoOyB9CgogICAgaW5saW5lIHFyZWFsIHgo
KSBjb25zdDsKICAgIGlubGluZSBxcmVhbCB5KCkgY29uc3Q7CiAgICBpbmxpbmUgdm9pZCBzZXRM
ZWZ0KHFyZWFsIHBvcyk7CiAgICBpbmxpbmUgdm9pZCBzZXRUb3AocXJlYWwgcG9zKTsKICAgIGlu
bGluZSB2b2lkIHNldFJpZ2h0KHFyZWFsIHBvcyk7CiAgICBpbmxpbmUgdm9pZCBzZXRCb3R0b20o
cXJlYWwgcG9zKTsKICAgIGlubGluZSB2b2lkIHNldFgocXJlYWwgcG9zKSB7IHNldExlZnQocG9z
KTsgfQogICAgaW5saW5lIHZvaWQgc2V0WShxcmVhbCBwb3MpIHsgc2V0VG9wKHBvcyk7IH0KCiAg
ICBpbmxpbmUgUVBvaW50RiB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gUVBvaW50Rih4cCwgeXAp
OyB9CiAgICBpbmxpbmUgUVBvaW50RiBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0dXJuIFFQb2lu
dEYoeHArdywgeXAraCk7IH0KICAgIGlubGluZSBRUG9pbnRGIHRvcFJpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gUVBvaW50Rih4cCt3LCB5cCk7IH0KICAgIGlubGluZSBRUG9pbnRGIGJvdHRvbUxlZnQo
KSBjb25zdCB7IHJldHVybiBRUG9pbnRGKHhwLCB5cCtoKTsgfQogICAgaW5saW5lIFFQb2ludEYg
Y2VudGVyKCkgY29uc3Q7CgogICAgdm9pZCBzZXRUb3BMZWZ0KGNvbnN0IFFQb2ludEYgJnApOwog
ICAgdm9pZCBzZXRCb3R0b21SaWdodChjb25zdCBRUG9pbnRGICZwKTsKICAgIHZvaWQgc2V0VG9w
UmlnaHQoY29uc3QgUVBvaW50RiAmcCk7CiAgICB2b2lkIHNldEJvdHRvbUxlZnQoY29uc3QgUVBv
aW50RiAmcCk7CgogICAgdm9pZCBtb3ZlTGVmdChxcmVhbCBwb3MpOwogICAgdm9pZCBtb3ZlVG9w
KHFyZWFsIHBvcyk7CiAgICB2b2lkIG1vdmVSaWdodChxcmVhbCBwb3MpOwogICAgdm9pZCBtb3Zl
Qm90dG9tKHFyZWFsIHBvcyk7CiAgICB2b2lkIG1vdmVUb3BMZWZ0KGNvbnN0IFFQb2ludEYgJnAp
OwogICAgdm9pZCBtb3ZlQm90dG9tUmlnaHQoY29uc3QgUVBvaW50RiAmcCk7CiAgICB2b2lkIG1v
dmVUb3BSaWdodChjb25zdCBRUG9pbnRGICZwKTsKICAgIHZvaWQgbW92ZUJvdHRvbUxlZnQoY29u
c3QgUVBvaW50RiAmcCk7CiAgICB2b2lkIG1vdmVDZW50ZXIoY29uc3QgUVBvaW50RiAmcCk7Cgog
ICAgdm9pZCB0cmFuc2xhdGUocXJlYWwgZHgsIHFyZWFsIGR5KTsKICAgIHZvaWQgdHJhbnNsYXRl
KGNvbnN0IFFQb2ludEYgJnApOwoKICAgIFFSZWN0RiB0cmFuc2xhdGVkKHFyZWFsIGR4LCBxcmVh
bCBkeSkgY29uc3Q7CiAgICBRUmVjdEYgdHJhbnNsYXRlZChjb25zdCBRUG9pbnRGICZwKSBjb25z
dDsKCiAgICB2b2lkIG1vdmVUbyhxcmVhbCB4LCBxcmVhbCB0KTsKICAgIHZvaWQgbW92ZVRvKGNv
bnN0IFFQb2ludEYgJnApOwoKICAgIHZvaWQgc2V0UmVjdChxcmVhbCB4LCBxcmVhbCB5LCBxcmVh
bCB3LCBxcmVhbCBoKTsKICAgIHZvaWQgZ2V0UmVjdChxcmVhbCAqeCwgcXJlYWwgKnksIHFyZWFs
ICp3LCBxcmVhbCAqaCkgY29uc3Q7CgogICAgdm9pZCBzZXRDb29yZHMocXJlYWwgeDEsIHFyZWFs
IHkxLCBxcmVhbCB4MiwgcXJlYWwgeTIpOwogICAgdm9pZCBnZXRDb29yZHMocXJlYWwgKngxLCBx
cmVhbCAqeTEsIHFyZWFsICp4MiwgcXJlYWwgKnkyKSBjb25zdDsKCiAgICBpbmxpbmUgdm9pZCBh
ZGp1c3QocXJlYWwgeDEsIHFyZWFsIHkxLCBxcmVhbCB4MiwgcXJlYWwgeTIpOwogICAgaW5saW5l
IFFSZWN0RiBhZGp1c3RlZChxcmVhbCB4MSwgcXJlYWwgeTEsIHFyZWFsIHgyLCBxcmVhbCB5Mikg
Y29uc3Q7CgogICAgUVNpemVGIHNpemUoKSBjb25zdDsKICAgIHFyZWFsIHdpZHRoKCkgY29uc3Q7
CiAgICBxcmVhbCBoZWlnaHQoKSBjb25zdDsKICAgIHZvaWQgc2V0V2lkdGgocXJlYWwgdyk7CiAg
ICB2b2lkIHNldEhlaWdodChxcmVhbCBoKTsKICAgIHZvaWQgc2V0U2l6ZShjb25zdCBRU2l6ZUYg
JnMpOwoKICAgIFFSZWN0RiBvcGVyYXRvcnwoY29uc3QgUVJlY3RGICZyKSBjb25zdDsKICAgIFFS
ZWN0RiBvcGVyYXRvciYoY29uc3QgUVJlY3RGICZyKSBjb25zdDsKICAgIFFSZWN0RiYgb3BlcmF0
b3J8PShjb25zdCBRUmVjdEYgJnIpOwogICAgUVJlY3RGJiBvcGVyYXRvciY9KGNvbnN0IFFSZWN0
RiAmcik7CgogICAgYm9vbCBjb250YWlucyhjb25zdCBRUG9pbnRGICZwKSBjb25zdDsKICAgIGJv
b2wgY29udGFpbnMocXJlYWwgeCwgcXJlYWwgeSkgY29uc3Q7CiAgICBib29sIGNvbnRhaW5zKGNv
bnN0IFFSZWN0RiAmcikgY29uc3Q7CiAgICBRUmVjdEYgdW5pdGUoY29uc3QgUVJlY3RGICZyKSBj
b25zdDsKICAgIFFSZWN0RiB1bml0ZWQoY29uc3QgUVJlY3RGICZvdGhlcikgY29uc3Q7CiAgICBR
UmVjdEYgaW50ZXJzZWN0KGNvbnN0IFFSZWN0RiAmcikgY29uc3Q7CiAgICBRUmVjdEYgaW50ZXJz
ZWN0ZWQoY29uc3QgUVJlY3RGICZvdGhlcikgY29uc3Q7CiAgICBib29sIGludGVyc2VjdHMoY29u
c3QgUVJlY3RGICZyKSBjb25zdDsKCiAgICBmcmllbmQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRUmVjdEYgJiwgY29u
c3QgUVJlY3RGICYpOwogICAgZnJpZW5kIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUVJlY3RGICYsIGNvbnN0IFFSZWN0
RiAmKTsKCiAgICBRUmVjdCB0b1JlY3QoKSBjb25zdDsKICAgIFFSZWN0IHRvQWxpZ25lZFJlY3Qo
KSBjb25zdDsKCnByaXZhdGU6CiAgICBxcmVhbCB4cDsKICAgIHFyZWFsIHlwOwogICAgcXJlYWwg
dzsKICAgIHFyZWFsIGg7Cn07CnRlbXBsYXRlIDw+IGNsYXNzIFFUeXBlSW5mbzxRUmVjdEYgPiB7
IHB1YmxpYzogZW51bSB7IGlzQ29tcGxleCA9ICgoKFFfTU9WQUJMRV9UWVBFKSAmIFFfUFJJTUlU
SVZFX1RZUEUpID09IDApLCBpc1N0YXRpYyA9ICgoKFFfTU9WQUJMRV9UWVBFKSAmIChRX01PVkFC
TEVfVFlQRSB8IFFfUFJJTUlUSVZFX1RZUEUpKSA9PSAwKSwgaXNMYXJnZSA9IChzaXplb2YoUVJl
Y3RGKT5zaXplb2Yodm9pZCopKSwgaXNQb2ludGVyID0gZmFsc2UsIGlzRHVtbXkgPSAoKChRX01P
VkFCTEVfVFlQRSkgJiBRX0RVTU1ZX1RZUEUpICE9IDApIH07IHN0YXRpYyBpbmxpbmUgY29uc3Qg
Y2hhciAqbmFtZSgpIHsgcmV0dXJuICJRUmVjdEYiOyB9IH07CgpfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKSBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFSZWN0RiAm
LCBjb25zdCBRUmVjdEYgJik7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUVJlY3RGICYsIGNvbnN0IFFSZWN0RiAmKTsK
CgoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUURhdGFTdHJlYW0g
Jm9wZXJhdG9yPDwoUURhdGFTdHJlYW0gJiwgY29uc3QgUVJlY3RGICYpOwpfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0YVN0
cmVhbSAmLCBRUmVjdEYgJik7CgoKCgoKCmlubGluZSBRUmVjdEY6OlFSZWN0RihxcmVhbCBhbGVm
dCwgcXJlYWwgYXRvcCwgcXJlYWwgYXdpZHRoLCBxcmVhbCBhaGVpZ2h0KQogICAgOiB4cChhbGVm
dCksIHlwKGF0b3ApLCB3KGF3aWR0aCksIGgoYWhlaWdodCkKewp9CgppbmxpbmUgUVJlY3RGOjpR
UmVjdEYoY29uc3QgUVBvaW50RiAmYXRvcExlZnQsIGNvbnN0IFFTaXplRiAmYXNpemUpCnsKICAg
IHhwID0gYXRvcExlZnQueCgpOwogICAgeXAgPSBhdG9wTGVmdC55KCk7CiAgICB3ID0gYXNpemUu
d2lkdGgoKTsKICAgIGggPSBhc2l6ZS5oZWlnaHQoKTsKfQoKaW5saW5lIFFSZWN0Rjo6UVJlY3RG
KGNvbnN0IFFQb2ludEYgJmF0b3BMZWZ0LCBjb25zdCBRUG9pbnRGICZhYm90dG9tUmlnaHQpCnsK
ICAgIHhwID0gYXRvcExlZnQueCgpOwogICAgeXAgPSBhdG9wTGVmdC55KCk7CiAgICB3ID0gYWJv
dHRvbVJpZ2h0LngoKSAtIHhwOwogICAgaCA9IGFib3R0b21SaWdodC55KCkgLSB5cDsKfQoKaW5s
aW5lIFFSZWN0Rjo6UVJlY3RGKGNvbnN0IFFSZWN0ICZyKQogICAgOiB4cChyLngoKSksIHlwKHIu
eSgpKSwgdyhyLndpZHRoKCkpLCBoKHIuaGVpZ2h0KCkpCnsKfQoKaW5saW5lIGJvb2wgUVJlY3RG
Ojppc051bGwoKSBjb25zdAp7IHJldHVybiB3ID09IDAuICYmIGggPT0gMC47IH0KCmlubGluZSBi
b29sIFFSZWN0Rjo6aXNFbXB0eSgpIGNvbnN0CnsgcmV0dXJuIHcgPD0gMC4gfHwgaCA8PSAwLjsg
fQoKaW5saW5lIGJvb2wgUVJlY3RGOjppc1ZhbGlkKCkgY29uc3QKeyByZXR1cm4gdyA+IDAuICYm
IGggPiAwLjsgfQoKaW5saW5lIHFyZWFsIFFSZWN0Rjo6eCgpIGNvbnN0CnsgcmV0dXJuIHhwOyB9
CgppbmxpbmUgcXJlYWwgUVJlY3RGOjp5KCkgY29uc3QKeyByZXR1cm4geXA7IH0KCmlubGluZSB2
b2lkIFFSZWN0Rjo6c2V0TGVmdChxcmVhbCBwb3MpIHsgcXJlYWwgZGlmZiA9IHBvcyAtIHhwOyB4
cCArPSBkaWZmOyB3IC09IGRpZmY7IH0KCmlubGluZSB2b2lkIFFSZWN0Rjo6c2V0UmlnaHQocXJl
YWwgcG9zKSB7IHcgPSBwb3MgLSB4cDsgfQoKaW5saW5lIHZvaWQgUVJlY3RGOjpzZXRUb3AocXJl
YWwgcG9zKSB7IHFyZWFsIGRpZmYgPSBwb3MgLSB5cDsgeXAgKz0gZGlmZjsgaCAtPSBkaWZmOyB9
CgppbmxpbmUgdm9pZCBRUmVjdEY6OnNldEJvdHRvbShxcmVhbCBwb3MpIHsgaCA9IHBvcyAtIHlw
OyB9CgppbmxpbmUgdm9pZCBRUmVjdEY6OnNldFRvcExlZnQoY29uc3QgUVBvaW50RiAmcCkgeyBz
ZXRMZWZ0KHAueCgpKTsgc2V0VG9wKHAueSgpKTsgfQoKaW5saW5lIHZvaWQgUVJlY3RGOjpzZXRU
b3BSaWdodChjb25zdCBRUG9pbnRGICZwKSB7IHNldFJpZ2h0KHAueCgpKTsgc2V0VG9wKHAueSgp
KTsgfQoKaW5saW5lIHZvaWQgUVJlY3RGOjpzZXRCb3R0b21MZWZ0KGNvbnN0IFFQb2ludEYgJnAp
IHsgc2V0TGVmdChwLngoKSk7IHNldEJvdHRvbShwLnkoKSk7IH0KCmlubGluZSB2b2lkIFFSZWN0
Rjo6c2V0Qm90dG9tUmlnaHQoY29uc3QgUVBvaW50RiAmcCkgeyBzZXRSaWdodChwLngoKSk7IHNl
dEJvdHRvbShwLnkoKSk7IH0KCmlubGluZSBRUG9pbnRGIFFSZWN0Rjo6Y2VudGVyKCkgY29uc3QK
eyByZXR1cm4gUVBvaW50Rih4cCArIHcvMiwgeXAgKyBoLzIpOyB9CgppbmxpbmUgdm9pZCBRUmVj
dEY6Om1vdmVMZWZ0KHFyZWFsIHBvcykgeyB4cCA9IHBvczsgfQoKaW5saW5lIHZvaWQgUVJlY3RG
Ojptb3ZlVG9wKHFyZWFsIHBvcykgeyB5cCA9IHBvczsgfQoKaW5saW5lIHZvaWQgUVJlY3RGOjpt
b3ZlUmlnaHQocXJlYWwgcG9zKSB7IHhwID0gcG9zIC0gdzsgfQoKaW5saW5lIHZvaWQgUVJlY3RG
Ojptb3ZlQm90dG9tKHFyZWFsIHBvcykgeyB5cCA9IHBvcyAtIGg7IH0KCmlubGluZSB2b2lkIFFS
ZWN0Rjo6bW92ZVRvcExlZnQoY29uc3QgUVBvaW50RiAmcCkgeyBtb3ZlTGVmdChwLngoKSk7IG1v
dmVUb3AocC55KCkpOyB9CgppbmxpbmUgdm9pZCBRUmVjdEY6Om1vdmVUb3BSaWdodChjb25zdCBR
UG9pbnRGICZwKSB7IG1vdmVSaWdodChwLngoKSk7IG1vdmVUb3AocC55KCkpOyB9CgppbmxpbmUg
dm9pZCBRUmVjdEY6Om1vdmVCb3R0b21MZWZ0KGNvbnN0IFFQb2ludEYgJnApIHsgbW92ZUxlZnQo
cC54KCkpOyBtb3ZlQm90dG9tKHAueSgpKTsgfQoKaW5saW5lIHZvaWQgUVJlY3RGOjptb3ZlQm90
dG9tUmlnaHQoY29uc3QgUVBvaW50RiAmcCkgeyBtb3ZlUmlnaHQocC54KCkpOyBtb3ZlQm90dG9t
KHAueSgpKTsgfQoKaW5saW5lIHZvaWQgUVJlY3RGOjptb3ZlQ2VudGVyKGNvbnN0IFFQb2ludEYg
JnApIHsgeHAgPSBwLngoKSAtIHcvMjsgeXAgPSBwLnkoKSAtIGgvMjsgfQoKaW5saW5lIHFyZWFs
IFFSZWN0Rjo6d2lkdGgoKSBjb25zdAp7IHJldHVybiB3OyB9CgppbmxpbmUgcXJlYWwgUVJlY3RG
OjpoZWlnaHQoKSBjb25zdAp7IHJldHVybiBoOyB9CgppbmxpbmUgUVNpemVGIFFSZWN0Rjo6c2l6
ZSgpIGNvbnN0CnsgcmV0dXJuIFFTaXplRih3LCBoKTsgfQoKaW5saW5lIHZvaWQgUVJlY3RGOjp0
cmFuc2xhdGUocXJlYWwgZHgsIHFyZWFsIGR5KQp7CiAgICB4cCArPSBkeDsKICAgIHlwICs9IGR5
Owp9CgppbmxpbmUgdm9pZCBRUmVjdEY6OnRyYW5zbGF0ZShjb25zdCBRUG9pbnRGICZwKQp7CiAg
ICB4cCArPSBwLngoKTsKICAgIHlwICs9IHAueSgpOwp9CgppbmxpbmUgdm9pZCBRUmVjdEY6Om1v
dmVUbyhxcmVhbCBheCwgcXJlYWwgYXkpCnsKICAgIHhwID0gYXg7CiAgICB5cCA9IGF5Owp9Cgpp
bmxpbmUgdm9pZCBRUmVjdEY6Om1vdmVUbyhjb25zdCBRUG9pbnRGICZwKQp7CiAgICB4cCA9IHAu
eCgpOwogICAgeXAgPSBwLnkoKTsKfQoKaW5saW5lIFFSZWN0RiBRUmVjdEY6OnRyYW5zbGF0ZWQo
cXJlYWwgZHgsIHFyZWFsIGR5KSBjb25zdAp7IHJldHVybiBRUmVjdEYoeHAgKyBkeCwgeXAgKyBk
eSwgdywgaCk7IH0KCmlubGluZSBRUmVjdEYgUVJlY3RGOjp0cmFuc2xhdGVkKGNvbnN0IFFQb2lu
dEYgJnApIGNvbnN0CnsgcmV0dXJuIFFSZWN0Rih4cCArIHAueCgpLCB5cCArIHAueSgpLCB3LCBo
KTsgfQoKaW5saW5lIHZvaWQgUVJlY3RGOjpnZXRSZWN0KHFyZWFsICpheCwgcXJlYWwgKmF5LCBx
cmVhbCAqYWF3LCBxcmVhbCAqYWFoKSBjb25zdAp7CiAgICAqYXggPSB0aGlzLT54cDsKICAgICph
eSA9IHRoaXMtPnlwOwogICAgKmFhdyA9IHRoaXMtPnc7CiAgICAqYWFoID0gdGhpcy0+aDsKfQoK
aW5saW5lIHZvaWQgUVJlY3RGOjpzZXRSZWN0KHFyZWFsIGF4LCBxcmVhbCBheSwgcXJlYWwgYWF3
LCBxcmVhbCBhYWgpCnsKICAgIHRoaXMtPnhwID0gYXg7CiAgICB0aGlzLT55cCA9IGF5OwogICAg
dGhpcy0+dyA9IGFhdzsKICAgIHRoaXMtPmggPSBhYWg7Cn0KCmlubGluZSB2b2lkIFFSZWN0Rjo6
Z2V0Q29vcmRzKHFyZWFsICp4cDEsIHFyZWFsICp5cDEsIHFyZWFsICp4cDIsIHFyZWFsICp5cDIp
IGNvbnN0CnsKICAgICp4cDEgPSB4cDsKICAgICp5cDEgPSB5cDsKICAgICp4cDIgPSB4cCArIHc7
CiAgICAqeXAyID0geXAgKyBoOwp9CgppbmxpbmUgdm9pZCBRUmVjdEY6OnNldENvb3JkcyhxcmVh
bCB4cDEsIHFyZWFsIHlwMSwgcXJlYWwgeHAyLCBxcmVhbCB5cDIpCnsKICAgIHhwID0geHAxOwog
ICAgeXAgPSB5cDE7CiAgICB3ID0geHAyIC0geHAxOwogICAgaCA9IHlwMiAtIHlwMTsKfQoKaW5s
aW5lIHZvaWQgUVJlY3RGOjphZGp1c3QocXJlYWwgeHAxLCBxcmVhbCB5cDEsIHFyZWFsIHhwMiwg
cXJlYWwgeXAyKQp7IHhwICs9IHhwMTsgeXAgKz0geXAxOyB3ICs9IHhwMiAtIHhwMTsgaCArPSB5
cDIgLSB5cDE7IH0KCmlubGluZSBRUmVjdEYgUVJlY3RGOjphZGp1c3RlZChxcmVhbCB4cDEsIHFy
ZWFsIHlwMSwgcXJlYWwgeHAyLCBxcmVhbCB5cDIpIGNvbnN0CnsgcmV0dXJuIFFSZWN0Rih4cCAr
IHhwMSwgeXAgKyB5cDEsIHcgKyB4cDIgLSB4cDEsIGggKyB5cDIgLSB5cDEpOyB9CgppbmxpbmUg
dm9pZCBRUmVjdEY6OnNldFdpZHRoKHFyZWFsIGF3KQp7IHRoaXMtPncgPSBhdzsgfQoKaW5saW5l
IHZvaWQgUVJlY3RGOjpzZXRIZWlnaHQocXJlYWwgYWgpCnsgdGhpcy0+aCA9IGFoOyB9Cgppbmxp
bmUgdm9pZCBRUmVjdEY6OnNldFNpemUoY29uc3QgUVNpemVGICZzKQp7CiAgICB3ID0gcy53aWR0
aCgpOwogICAgaCA9IHMuaGVpZ2h0KCk7Cn0KCmlubGluZSBib29sIFFSZWN0Rjo6Y29udGFpbnMo
cXJlYWwgYXgsIHFyZWFsIGF5KSBjb25zdAp7CiAgICByZXR1cm4gY29udGFpbnMoUVBvaW50Rihh
eCwgYXkpKTsKfQoKaW5saW5lIFFSZWN0RiYgUVJlY3RGOjpvcGVyYXRvcnw9KGNvbnN0IFFSZWN0
RiAmcikKewogICAgKnRoaXMgPSAqdGhpcyB8IHI7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGlu
ZSBRUmVjdEYmIFFSZWN0Rjo6b3BlcmF0b3ImPShjb25zdCBRUmVjdEYgJnIpCnsKICAgICp0aGlz
ID0gKnRoaXMgJiByOwogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUgUVJlY3RGIFFSZWN0Rjo6
aW50ZXJzZWN0KGNvbnN0IFFSZWN0RiAmcikgY29uc3QKewogICAgcmV0dXJuICp0aGlzICYgcjsK
fQoKaW5saW5lIFFSZWN0RiBRUmVjdEY6OmludGVyc2VjdGVkKGNvbnN0IFFSZWN0RiAmcikgY29u
c3QKewogICAgcmV0dXJuIGludGVyc2VjdChyKTsKfQoKaW5saW5lIFFSZWN0RiBRUmVjdEY6OnVu
aXRlKGNvbnN0IFFSZWN0RiAmcikgY29uc3QKewogICAgcmV0dXJuICp0aGlzIHwgcjsKfQoKaW5s
aW5lIFFSZWN0RiBRUmVjdEY6OnVuaXRlZChjb25zdCBRUmVjdEYgJnIpIGNvbnN0CnsKICAgIHJl
dHVybiB1bml0ZShyKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRUmVjdEYgJnIx
LCBjb25zdCBRUmVjdEYgJnIyKQp7CiAgICByZXR1cm4gcUZ1enp5Q29tcGFyZShyMS54cCwgcjIu
eHApICYmIHFGdXp6eUNvbXBhcmUocjEueXAsIHIyLnlwKQogICAgICAgICAgICYmIHFGdXp6eUNv
bXBhcmUocjEudywgcjIudykgJiYgcUZ1enp5Q29tcGFyZShyMS5oLCByMi5oKTsKfQoKaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBRUmVjdEYgJnIxLCBjb25zdCBRUmVjdEYgJnIyKQp7CiAg
ICByZXR1cm4gIXFGdXp6eUNvbXBhcmUocjEueHAsIHIyLnhwKSB8fCAhcUZ1enp5Q29tcGFyZShy
MS55cCwgcjIueXApCiAgICAgICAgICAgfHwgIXFGdXp6eUNvbXBhcmUocjEudywgcjIudykgfHwg
IXFGdXp6eUNvbXBhcmUocjEuaCwgcjIuaCk7Cn0KCmlubGluZSBRUmVjdCBRUmVjdEY6OnRvUmVj
dCgpIGNvbnN0CnsKICAgIHJldHVybiBRUmVjdChxUm91bmQoeHApLCBxUm91bmQoeXApLCBxUm91
bmQodyksIHFSb3VuZChoKSk7Cn0KCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKSBRRGVidWcgb3BlcmF0b3I8PChRRGVidWcsIGNvbnN0IFFSZWN0RiAmKTsKCgoKCgojIDQ4
ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRHdWkvcXBvbHlnb24uaCIgMgoKCgoKCnR5cGVkZWYgUXRW
YWxpZExpY2Vuc2VGb3JHdWlNb2R1bGUgUXRHdWlNb2R1bGU7CgpjbGFzcyBRTWF0cml4OwpjbGFz
cyBRVHJhbnNmb3JtOwpjbGFzcyBRUmVjdDsKY2xhc3MgUVZhcmlhbnQ7CgpjbGFzcyBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRUG9seWdvbiA6IHB1YmxpYyBRVmVjdG9y
PFFQb2ludD4KewpwdWJsaWM6CiAgICBpbmxpbmUgUVBvbHlnb24oKSB7fQogICAgaW5saW5lIH5R
UG9seWdvbigpIHt9CiAgICBpbmxpbmUgUVBvbHlnb24oaW50IHNpemUpOwogICAgaW5saW5lIFFQ
b2x5Z29uKGNvbnN0IFFQb2x5Z29uICZhKSA6IFFWZWN0b3I8UVBvaW50PihhKSB7fQogICAgaW5s
aW5lIFFQb2x5Z29uKGNvbnN0IFFWZWN0b3I8UVBvaW50PiAmdikgOiBRVmVjdG9yPFFQb2ludD4o
dikge30KICAgIFFQb2x5Z29uKGNvbnN0IFFSZWN0ICZyLCBib29sIGNsb3NlZD1mYWxzZSk7CiAg
ICBRUG9seWdvbihpbnQgblBvaW50cywgY29uc3QgaW50ICpwb2ludHMpOwogICAgb3BlcmF0b3Ig
UVZhcmlhbnQoKSBjb25zdDsKCiAgICB2b2lkIHRyYW5zbGF0ZShpbnQgZHgsIGludCBkeSk7CiAg
ICB2b2lkIHRyYW5zbGF0ZShjb25zdCBRUG9pbnQgJm9mZnNldCk7CgogICAgUVBvbHlnb24gdHJh
bnNsYXRlZChpbnQgZHgsIGludCBkeSkgY29uc3Q7CiAgICBpbmxpbmUgUVBvbHlnb24gdHJhbnNs
YXRlZChjb25zdCBRUG9pbnQgJm9mZnNldCkgY29uc3Q7CgogICAgUVJlY3QgYm91bmRpbmdSZWN0
KCkgY29uc3Q7CgogICAgdm9pZCBwb2ludChpbnQgaSwgaW50ICp4LCBpbnQgKnkpIGNvbnN0Owog
ICAgUVBvaW50IHBvaW50KGludCBpKSBjb25zdDsKICAgIHZvaWQgc2V0UG9pbnQoaW50IGluZGV4
LCBpbnQgeCwgaW50IHkpOwogICAgdm9pZCBzZXRQb2ludChpbnQgaW5kZXgsIGNvbnN0IFFQb2lu
dCAmcCk7CiAgICB2b2lkIHNldFBvaW50cyhpbnQgblBvaW50cywgY29uc3QgaW50ICpwb2ludHMp
OwogICAgdm9pZCBzZXRQb2ludHMoaW50IG5Qb2ludHMsIGludCBmaXJzdHgsIGludCBmaXJzdHks
IC4uLik7CiAgICB2b2lkIHB1dFBvaW50cyhpbnQgaW5kZXgsIGludCBuUG9pbnRzLCBjb25zdCBp
bnQgKnBvaW50cyk7CiAgICB2b2lkIHB1dFBvaW50cyhpbnQgaW5kZXgsIGludCBuUG9pbnRzLCBp
bnQgZmlyc3R4LCBpbnQgZmlyc3R5LCAuLi4pOwogICAgdm9pZCBwdXRQb2ludHMoaW50IGluZGV4
LCBpbnQgblBvaW50cywgY29uc3QgUVBvbHlnb24gJiBmcm9tLCBpbnQgZnJvbUluZGV4PTApOwoK
ICAgIGJvb2wgY29udGFpbnNQb2ludChjb25zdCBRUG9pbnQgJnB0LCBRdDo6RmlsbFJ1bGUgZmls
bFJ1bGUpIGNvbnN0OwoKICAgIFFQb2x5Z29uIHVuaXRlZChjb25zdCBRUG9seWdvbiAmcikgY29u
c3Q7CiAgICBRUG9seWdvbiBpbnRlcnNlY3RlZChjb25zdCBRUG9seWdvbiAmcikgY29uc3Q7CiAg
ICBRUG9seWdvbiBzdWJ0cmFjdGVkKGNvbnN0IFFQb2x5Z29uICZyKSBjb25zdDsKfTsKCmlubGlu
ZSBRUG9seWdvbjo6UVBvbHlnb24oaW50IGFzaXplKSA6IFFWZWN0b3I8UVBvaW50Pihhc2l6ZSkg
e30KCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGVidWcgb3BlcmF0
b3I8PChRRGVidWcsIGNvbnN0IFFQb2x5Z29uICYpOwoKCgoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAm
c3RyZWFtLCBjb25zdCBRUG9seWdvbiAmcG9seWdvbik7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICZzdHJl
YW0sIFFQb2x5Z29uICZwb2x5Z29uKTsKCgoKCgoKaW5saW5lIHZvaWQgUVBvbHlnb246OnNldFBv
aW50KGludCBpbmRleCwgY29uc3QgUVBvaW50ICZwdCkKeyAoKnRoaXMpW2luZGV4XSA9IHB0OyB9
CgppbmxpbmUgdm9pZCBRUG9seWdvbjo6c2V0UG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkp
CnsgKCp0aGlzKVtpbmRleF0gPSBRUG9pbnQoeCwgeSk7IH0KCmlubGluZSBRUG9pbnQgUVBvbHln
b246OnBvaW50KGludCBpbmRleCkgY29uc3QKeyByZXR1cm4gYXQoaW5kZXgpOyB9CgppbmxpbmUg
dm9pZCBRUG9seWdvbjo6dHJhbnNsYXRlKGNvbnN0IFFQb2ludCAmb2Zmc2V0KQp7IHRyYW5zbGF0
ZShvZmZzZXQueCgpLCBvZmZzZXQueSgpKTsgfQoKaW5saW5lIFFQb2x5Z29uIFFQb2x5Z29uOjp0
cmFuc2xhdGVkKGNvbnN0IFFQb2ludCAmb2Zmc2V0KSBjb25zdAp7IHJldHVybiB0cmFuc2xhdGVk
KG9mZnNldC54KCksIG9mZnNldC55KCkpOyB9CgpjbGFzcyBRUmVjdEY7CgpjbGFzcyBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRUG9seWdvbkYgOiBwdWJsaWMgUVZlY3Rv
cjxRUG9pbnRGPgp7CnB1YmxpYzoKICAgIGlubGluZSBRUG9seWdvbkYoKSB7fQogICAgaW5saW5l
IH5RUG9seWdvbkYoKSB7fQogICAgaW5saW5lIFFQb2x5Z29uRihpbnQgc2l6ZSk7CiAgICBpbmxp
bmUgUVBvbHlnb25GKGNvbnN0IFFQb2x5Z29uRiAmYSkgOiBRVmVjdG9yPFFQb2ludEY+KGEpIHt9
CiAgICBpbmxpbmUgUVBvbHlnb25GKGNvbnN0IFFWZWN0b3I8UVBvaW50Rj4gJnYpIDogUVZlY3Rv
cjxRUG9pbnRGPih2KSB7fQogICAgUVBvbHlnb25GKGNvbnN0IFFSZWN0RiAmcik7CiAgICBRUG9s
eWdvbkYoY29uc3QgUVBvbHlnb24gJmEpOwoKICAgIGlubGluZSB2b2lkIHRyYW5zbGF0ZShxcmVh
bCBkeCwgcXJlYWwgZHkpOwogICAgdm9pZCB0cmFuc2xhdGUoY29uc3QgUVBvaW50RiAmb2Zmc2V0
KTsKCiAgICBpbmxpbmUgUVBvbHlnb25GIHRyYW5zbGF0ZWQocXJlYWwgZHgsIHFyZWFsIGR5KSBj
b25zdDsKICAgIFFQb2x5Z29uRiB0cmFuc2xhdGVkKGNvbnN0IFFQb2ludEYgJm9mZnNldCkgY29u
c3Q7CgogICAgUVBvbHlnb24gdG9Qb2x5Z29uKCkgY29uc3Q7CgogICAgYm9vbCBpc0Nsb3NlZCgp
IGNvbnN0IHsgcmV0dXJuICFpc0VtcHR5KCkgJiYgZmlyc3QoKSA9PSBsYXN0KCk7IH0KCiAgICBR
UmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7CgogICAgYm9vbCBjb250YWluc1BvaW50KGNvbnN0
IFFQb2ludEYgJnB0LCBRdDo6RmlsbFJ1bGUgZmlsbFJ1bGUpIGNvbnN0OwoKICAgIFFQb2x5Z29u
RiB1bml0ZWQoY29uc3QgUVBvbHlnb25GICZyKSBjb25zdDsKICAgIFFQb2x5Z29uRiBpbnRlcnNl
Y3RlZChjb25zdCBRUG9seWdvbkYgJnIpIGNvbnN0OwogICAgUVBvbHlnb25GIHN1YnRyYWN0ZWQo
Y29uc3QgUVBvbHlnb25GICZyKSBjb25zdDsKfTsKCmlubGluZSBRUG9seWdvbkY6OlFQb2x5Z29u
RihpbnQgYXNpemUpIDogUVZlY3RvcjxRUG9pbnRGPihhc2l6ZSkge30KCgpfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGVidWcgb3BlcmF0b3I8PChRRGVidWcsIGNvbnN0
IFFQb2x5Z29uRiAmKTsKCgoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFTdHJlYW0gJnN0cmVhbSwgY29uc3QgUVBv
bHlnb25GICZhcnJheSk7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFE
YXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICZzdHJlYW0sIFFQb2x5Z29uRiAmYXJy
YXkpOwoKCmlubGluZSB2b2lkIFFQb2x5Z29uRjo6dHJhbnNsYXRlKHFyZWFsIGR4LCBxcmVhbCBk
eSkKeyB0cmFuc2xhdGUoUVBvaW50RihkeCwgZHkpKTsgfQoKaW5saW5lIFFQb2x5Z29uRiBRUG9s
eWdvbkY6OnRyYW5zbGF0ZWQocXJlYWwgZHgsIHFyZWFsIGR5KSBjb25zdAp7IHJldHVybiB0cmFu
c2xhdGVkKFFQb2ludEYoZHgsIGR5KSk7IH0KCgoKCiMgNDYgIi9vcHQvbG9jYWwvaW5jbHVkZS9R
dEd1aS9xbWF0cml4LmgiIDIKIyAxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRHdWkvcXJlZ2lvbi5o
IiAxCiMgNDMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdEd1aS9xcmVnaW9uLmgiCiNkZWZpbmUgUVJF
R0lPTl9IIAoKCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdEd1aS9xd2luZG93ZGVmcy5oIiAx
CiMgNDMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdEd1aS9xd2luZG93ZGVmcy5oIgojZGVmaW5lIFFX
SU5ET1dERUZTX0ggCgoKCgoKCgp0eXBlZGVmIFF0VmFsaWRMaWNlbnNlRm9yR3VpTW9kdWxlIFF0
R3VpTW9kdWxlOwoKCgpjbGFzcyBRUGFpbnREZXZpY2U7CmNsYXNzIFFXaWRnZXQ7CmNsYXNzIFFE
aWFsb2c7CmNsYXNzIFFDb2xvcjsKY2xhc3MgUVBhbGV0dGU7CgoKCmNsYXNzIFFDdXJzb3I7CmNs
YXNzIFFQb2ludDsKY2xhc3MgUVNpemU7CmNsYXNzIFFSZWN0OwpjbGFzcyBRUG9seWdvbjsKY2xh
c3MgUVBhaW50ZXI7CmNsYXNzIFFSZWdpb247CmNsYXNzIFFGb250OwpjbGFzcyBRRm9udE1ldHJp
Y3M7CmNsYXNzIFFGb250SW5mbzsKY2xhc3MgUVBlbjsKY2xhc3MgUUJydXNoOwpjbGFzcyBRTWF0
cml4OwpjbGFzcyBRUGl4bWFwOwpjbGFzcyBRQml0bWFwOwpjbGFzcyBRTW92aWU7CmNsYXNzIFFJ
bWFnZTsKY2xhc3MgUVBpY3R1cmU7CmNsYXNzIFFQcmludGVyOwpjbGFzcyBRVGltZXI7CmNsYXNz
IFFUaW1lOwpjbGFzcyBRQ2xpcGJvYXJkOwpjbGFzcyBRU3RyaW5nOwpjbGFzcyBRQnl0ZUFycmF5
OwpjbGFzcyBRQXBwbGljYXRpb247Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBRTGlzdDsK
dHlwZWRlZiBRTGlzdDxRV2lkZ2V0ICo+IFFXaWRnZXRMaXN0OwoKCgoKCgoKCiMgMSAiL29wdC9s
b2NhbC9pbmNsdWRlL1F0R3VpL3FtYWNkZWZpbmVzX21hYy5oIiAxCiMgOTcgIi9vcHQvbG9jYWwv
aW5jbHVkZS9RdEd1aS9xbWFjZGVmaW5lc19tYWMuaCIKI3VuZGVmIE9MRF9ERUJVRwoKCgoKI2Rl
ZmluZSBERUJVRyAwCgoKCgoKCnR5cGVkZWYgc2lnbmVkIGludCBPU1N0YXR1czsKCgoKCgoKI2Rl
ZmluZSBvbGRfc2xvdHMgc2xvdHMKI3VuZGVmIHNsb3RzCgoKCiN1bmRlZiBzbG90cwojZGVmaW5l
IHNsb3RzIAojdW5kZWYgb2xkX3Nsb3RzCgoKCiAgICB0eXBlZGVmIHN0cnVjdCBPcGFxdWVFdmVu
dEhhbmRsZXJDYWxsUmVmICogRXZlbnRIYW5kbGVyQ2FsbFJlZjsKICAgIHR5cGVkZWYgc3RydWN0
IE9wYXF1ZUV2ZW50UmVmICogRXZlbnRSZWY7CiAgICB0eXBlZGVmIHN0cnVjdCBPcGFxdWVNZW51
UmVmICogTWVudVJlZjsKICAgIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVBhc3RlYm9hcmRSZWYqIFBh
c3RlYm9hcmRSZWY7CiAgICB0eXBlZGVmIHN0cnVjdCBPcGFxdWVSZ25IYW5kbGUgKiBSZ25IYW5k
bGU7CiAgICB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0hJU2hhcGUgKkhJU2hhcGVSZWY7CiAgICB0
eXBlZGVmIHN0cnVjdCBfX0hJU2hhcGUgKkhJTXV0YWJsZVNoYXBlUmVmOwogICAgdHlwZWRlZiBz
dHJ1Y3QgQ0dSZWN0IENHUmVjdDsKICAgIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UgKkNHSW1hZ2VS
ZWY7CiAgICB0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQgKkNHQ29udGV4dFJlZjsKICAgIHR5cGVk
ZWYgc3RydWN0IEdEZXZpY2UgKiBHRFB0cjsKICAgIHR5cGVkZWYgR0RQdHIgKiBHREhhbmRsZTsK
ICAgIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUljb25SZWYgKiBJY29uUmVmOwoKICAgICAgICB0eXBl
ZGVmIE5TV2luZG93KiBPU1dpbmRvd1JlZjsKICAgICAgICB0eXBlZGVmIE5TVmlldyAqT1NWaWV3
UmVmOwogICAgICAgIHR5cGVkZWYgTlNNZW51ICpPU01lbnVSZWY7CiAgICAgICAgdHlwZWRlZiBO
U0V2ZW50ICpPU0V2ZW50UmVmOwojIDE3MyAiL29wdC9sb2NhbC9pbmNsdWRlL1F0R3VpL3FtYWNk
ZWZpbmVzX21hYy5oIgp0eXBlZGVmIFBhc3RlYm9hcmRSZWYgT1NQYXN0ZWJvYXJkUmVmOwp0eXBl
ZGVmIHN0cnVjdCBBRURlc2MgQUVEZXNjTGlzdDsKdHlwZWRlZiBBRURlc2NMaXN0IEFFUmVjb3Jk
Owp0eXBlZGVmIEFFUmVjb3JkIEFwcGxlRXZlbnQ7CgoKCgoKI3VuZGVmIERFQlVHCiMgMTAwICIv
b3B0L2xvY2FsL2luY2x1ZGUvUXRHdWkvcXdpbmRvd2RlZnMuaCIgMgoKCgoKdHlwZWRlZiBsb25n
IFdJZDsKIyAxMzkgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdEd1aS9xd2luZG93ZGVmcy5oIgoKCgp0
ZW1wbGF0ZTxjbGFzcyBLLCBjbGFzcyBWPiBjbGFzcyBRSGFzaDsKdHlwZWRlZiBRSGFzaDxXSWQs
IFFXaWRnZXQgKj4gUVdpZGdldE1hcHBlcjsKCnRlbXBsYXRlPGNsYXNzIFY+IGNsYXNzIFFTZXQ7
CnR5cGVkZWYgUVNldDxRV2lkZ2V0ICo+IFFXaWRnZXRTZXQ7CgoKCiMgNDggIi9vcHQvbG9jYWwv
aW5jbHVkZS9RdEd1aS9xcmVnaW9uLmgiIDIKCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENv
cmUvcWRhdGFzdHJlYW0uaCIgMQojIDUxICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRHdWkvcXJlZ2lv
bi5oIiAyCgoKCgoKCnR5cGVkZWYgUXRWYWxpZExpY2Vuc2VGb3JHdWlNb2R1bGUgUXRHdWlNb2R1
bGU7Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUVZlY3RvcjsKY2xhc3MgUVZhcmlhbnQ7CgoK
c3RydWN0IFFSZWdpb25Qcml2YXRlOwoKCmNsYXNzIFFCaXRtYXA7CgpjbGFzcyBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRUmVnaW9uCnsKcHVibGljOgogICAgZW51bSBS
ZWdpb25UeXBlIHsgUmVjdGFuZ2xlLCBFbGxpcHNlIH07CgogICAgUVJlZ2lvbigpOwogICAgUVJl
Z2lvbihpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwgUmVnaW9uVHlwZSB0ID0gUmVjdGFuZ2xl
KTsKICAgIFFSZWdpb24oY29uc3QgUVJlY3QgJnIsIFJlZ2lvblR5cGUgdCA9IFJlY3RhbmdsZSk7
CiAgICBRUmVnaW9uKGNvbnN0IFFQb2x5Z29uICZwYSwgUXQ6OkZpbGxSdWxlIGZpbGxSdWxlID0g
UXQ6Ok9kZEV2ZW5GaWxsKTsKCgoKICAgIFFSZWdpb24oY29uc3QgUVJlZ2lvbiAmcmVnaW9uKTsK
ICAgIFFSZWdpb24oY29uc3QgUUJpdG1hcCAmYml0bWFwKTsKICAgIH5RUmVnaW9uKCk7CiAgICBR
UmVnaW9uICZvcGVyYXRvcj0oY29uc3QgUVJlZ2lvbiAmKTsKCgoKCiAgICBib29sIGlzRW1wdHko
KSBjb25zdDsKCiAgICBib29sIGNvbnRhaW5zKGNvbnN0IFFQb2ludCAmcCkgY29uc3Q7CiAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IFFSZWN0ICZyKSBjb25zdDsKCiAgICB2b2lkIHRyYW5zbGF0ZShp
bnQgZHgsIGludCBkeSk7CiAgICBpbmxpbmUgdm9pZCB0cmFuc2xhdGUoY29uc3QgUVBvaW50ICZw
KSB7IHRyYW5zbGF0ZShwLngoKSwgcC55KCkpOyB9CiAgICBRUmVnaW9uIHRyYW5zbGF0ZWQoaW50
IGR4LCBpbnQgZHkpIGNvbnN0OwogICAgaW5saW5lIFFSZWdpb24gdHJhbnNsYXRlZChjb25zdCBR
UG9pbnQgJnApIGNvbnN0IHsgcmV0dXJuIHRyYW5zbGF0ZWQocC54KCksIHAueSgpKTsgfQoKCiAg
ICBRUmVnaW9uIHVuaXRlKGNvbnN0IFFSZWdpb24gJnIpIGNvbnN0OwogICAgUVJlZ2lvbiB1bml0
ZShjb25zdCBRUmVjdCAmcikgY29uc3Q7CiAgICBRUmVnaW9uIGludGVyc2VjdChjb25zdCBRUmVn
aW9uICZyKSBjb25zdDsKICAgIFFSZWdpb24gaW50ZXJzZWN0KGNvbnN0IFFSZWN0ICZyKSBjb25z
dDsKICAgIFFSZWdpb24gc3VidHJhY3QoY29uc3QgUVJlZ2lvbiAmcikgY29uc3Q7CiAgICBRUmVn
aW9uIGVvcihjb25zdCBRUmVnaW9uICZyKSBjb25zdDsKCiAgICBpbmxpbmUgUVJlZ2lvbiB1bml0
ZWQoY29uc3QgUVJlZ2lvbiAmcikgY29uc3QgeyByZXR1cm4gdW5pdGUocik7IH0KICAgIGlubGlu
ZSBRUmVnaW9uIHVuaXRlZChjb25zdCBRUmVjdCAmcikgY29uc3QgeyByZXR1cm4gdW5pdGUocik7
IH0KICAgIGlubGluZSBRUmVnaW9uIGludGVyc2VjdGVkKGNvbnN0IFFSZWdpb24gJnIpIGNvbnN0
IHsgcmV0dXJuIGludGVyc2VjdChyKTsgfQogICAgaW5saW5lIFFSZWdpb24gaW50ZXJzZWN0ZWQo
Y29uc3QgUVJlY3QgJnIpIGNvbnN0IHsgcmV0dXJuIGludGVyc2VjdChyKTsgfQogICAgaW5saW5l
IFFSZWdpb24gc3VidHJhY3RlZChjb25zdCBRUmVnaW9uICZyKSBjb25zdCB7IHJldHVybiBzdWJ0
cmFjdChyKTsgfQogICAgaW5saW5lIFFSZWdpb24geG9yZWQoY29uc3QgUVJlZ2lvbiAmcikgY29u
c3QgeyByZXR1cm4gZW9yKHIpOyB9CgogICAgYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFFSZWdpb24g
JnIpIGNvbnN0OwogICAgYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFFSZWN0ICZyKSBjb25zdDsKCiAg
ICBRUmVjdCBib3VuZGluZ1JlY3QoKSBjb25zdDsKICAgIFFWZWN0b3I8UVJlY3Q+IHJlY3RzKCkg
Y29uc3Q7CiAgICB2b2lkIHNldFJlY3RzKGNvbnN0IFFSZWN0ICpyZWN0LCBpbnQgbnVtKTsKCiAg
ICBpbnQgbnVtUmVjdHMoKSBjb25zdDsKCiAgICBpbnQgcmVjdENvdW50KCkgY29uc3Q7CgogICAg
Y29uc3QgUVJlZ2lvbiBvcGVyYXRvcnwoY29uc3QgUVJlZ2lvbiAmcikgY29uc3Q7CiAgICBjb25z
dCBRUmVnaW9uIG9wZXJhdG9yKyhjb25zdCBRUmVnaW9uICZyKSBjb25zdDsKICAgIGNvbnN0IFFS
ZWdpb24gb3BlcmF0b3IrKGNvbnN0IFFSZWN0ICZyKSBjb25zdDsKICAgIGNvbnN0IFFSZWdpb24g
b3BlcmF0b3ImKGNvbnN0IFFSZWdpb24gJnIpIGNvbnN0OwogICAgY29uc3QgUVJlZ2lvbiBvcGVy
YXRvciYoY29uc3QgUVJlY3QgJnIpIGNvbnN0OwogICAgY29uc3QgUVJlZ2lvbiBvcGVyYXRvci0o
Y29uc3QgUVJlZ2lvbiAmcikgY29uc3Q7CiAgICBjb25zdCBRUmVnaW9uIG9wZXJhdG9yXihjb25z
dCBRUmVnaW9uICZyKSBjb25zdDsKICAgIFFSZWdpb24mIG9wZXJhdG9yfD0oY29uc3QgUVJlZ2lv
biAmcik7CiAgICBRUmVnaW9uJiBvcGVyYXRvcis9KGNvbnN0IFFSZWdpb24gJnIpOwogICAgUVJl
Z2lvbiYgb3BlcmF0b3IrPShjb25zdCBRUmVjdCAmcik7CiAgICBRUmVnaW9uJiBvcGVyYXRvciY9
KGNvbnN0IFFSZWdpb24gJnIpOwogICAgUVJlZ2lvbiYgb3BlcmF0b3ImPShjb25zdCBRUmVjdCAm
cik7CiAgICBRUmVnaW9uJiBvcGVyYXRvci09KGNvbnN0IFFSZWdpb24gJnIpOwogICAgUVJlZ2lv
biYgb3BlcmF0b3JePShjb25zdCBRUmVnaW9uICZyKTsKCiAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUVJlZ2lvbiAmcikgY29uc3Q7CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFS
ZWdpb24gJnIpIGNvbnN0IHsgcmV0dXJuICEob3BlcmF0b3I9PShyKSk7IH0KICAgIG9wZXJhdG9y
IFFWYXJpYW50KCkgY29uc3Q7CiMgMTU4ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRHdWkvcXJlZ2lv
bi5oIgogICAgaW5saW5lIEhJTXV0YWJsZVNoYXBlUmVmIGhhbmRsZShib29sIHVudXNlZCA9IGZh
bHNlKSBjb25zdAogICAgeyAodm9pZCl1bnVzZWQ7OyByZXR1cm4gdG9ISU11dGFibGVTaGFwZSgp
OyB9CgoKCgogICAgSElNdXRhYmxlU2hhcGVSZWYgdG9ISU11dGFibGVTaGFwZSgpIGNvbnN0Owog
ICAgc3RhdGljIFFSZWdpb24gZnJvbUhJU2hhcGVSZWYoSElTaGFwZVJlZiBzaGFwZSk7CgoKCgoK
CiAgICBmcmllbmQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUURhdGFT
dHJlYW0gJm9wZXJhdG9yPDwoUURhdGFTdHJlYW0gJiwgY29uc3QgUVJlZ2lvbiAmKTsKICAgIGZy
aWVuZCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAm
b3BlcmF0b3I+PihRRGF0YVN0cmVhbSAmLCBRUmVnaW9uICYpOwoKcHJpdmF0ZToKICAgIFFSZWdp
b24gY29weSgpIGNvbnN0OwogICAgdm9pZCBkZXRhY2goKTsKIyAxODYgIi9vcHQvbG9jYWwvaW5j
bHVkZS9RdEd1aS9xcmVnaW9uLmgiCiAgICBzdGF0aWMgT1NTdGF0dXMgc2hhcGUyUVJlZ2lvbkhl
bHBlcihpbnQgaW5NZXNzYWdlLCBISVNoYXBlUmVmIGluU2hhcGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDR1JlY3QgKmluUmVjdCwgdm9pZCAqaW5SZWZj
b24pOwoKICAgIGZyaWVuZCBib29sIHF0X3JlZ2lvbl9zdHJpY3RDb250YWlucyhjb25zdCBRUmVn
aW9uICZyZWdpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUVJlY3QgJnJlY3QpOwogICAgZnJpZW5kIHN0cnVjdCBRUmVnaW9uUHJpdmF0ZTsKCgogICAg
dm9pZCBleGVjKGNvbnN0IFFCeXRlQXJyYXkgJmJhLCBpbnQgdmVyID0gMCwgUURhdGFTdHJlYW06
OkJ5dGVPcmRlciBieXRlT3JkZXIgPSBRRGF0YVN0cmVhbTo6QmlnRW5kaWFuKTsKCiAgICBzdHJ1
Y3QgUVJlZ2lvbkRhdGEgewogICAgICAgIFFCYXNpY0F0b21pY0ludCByZWY7CiMgMjA3ICIvb3B0
L2xvY2FsL2luY2x1ZGUvUXRHdWkvcXJlZ2lvbi5oIgogICAgICAgIFFSZWdpb25Qcml2YXRlICpx
dF9yZ247CgogICAgfTsKCgoKICAgIHN0cnVjdCBRUmVnaW9uRGF0YSAqZDsKICAgIHN0YXRpYyBz
dHJ1Y3QgUVJlZ2lvbkRhdGEgc2hhcmVkX2VtcHR5OwogICAgc3RhdGljIHZvaWQgY2xlYW5VcChR
UmVnaW9uRGF0YSAqeCk7Cn07CgoKCgoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFtICYsIGNvbnN0IFFSZWdp
b24gJik7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFEYXRhU3RyZWFt
ICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICYsIFFSZWdpb24gJik7CgoKCl9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFEZWJ1ZyBvcGVyYXRvcjw8KFFEZWJ1ZywgY29uc3Qg
UVJlZ2lvbiAmKTsKCgoKCgojIDQ3ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRHdWkvcW1hdHJpeC5o
IiAyCgojIDEgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdENvcmUvcWxpbmUuaCIgMQojIDQzICIvb3B0
L2xvY2FsL2luY2x1ZGUvUXRDb3JlL3FsaW5lLmgiCiNkZWZpbmUgUUxJTkVfSCAKCgoKCgoKCnR5
cGVkZWYgUXRWYWxpZExpY2Vuc2VGb3JDb3JlTW9kdWxlIFF0Q29yZU1vZHVsZTsKCgoKCgpjbGFz
cyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRTGluZQp7CnB1YmxpYzoK
ICAgIGlubGluZSBRTGluZSgpOwogICAgaW5saW5lIFFMaW5lKGNvbnN0IFFQb2ludCAmcHQxLCBj
b25zdCBRUG9pbnQgJnB0Mik7CiAgICBpbmxpbmUgUUxpbmUoaW50IHgxLCBpbnQgeTEsIGludCB4
MiwgaW50IHkyKTsKCiAgICBpbmxpbmUgYm9vbCBpc051bGwoKSBjb25zdDsKCiAgICBpbmxpbmUg
UVBvaW50IHAxKCkgY29uc3Q7CiAgICBpbmxpbmUgUVBvaW50IHAyKCkgY29uc3Q7CgogICAgaW5s
aW5lIGludCB4MSgpIGNvbnN0OwogICAgaW5saW5lIGludCB5MSgpIGNvbnN0OwoKICAgIGlubGlu
ZSBpbnQgeDIoKSBjb25zdDsKICAgIGlubGluZSBpbnQgeTIoKSBjb25zdDsKCiAgICBpbmxpbmUg
aW50IGR4KCkgY29uc3Q7CiAgICBpbmxpbmUgaW50IGR5KCkgY29uc3Q7CgogICAgaW5saW5lIHZv
aWQgdHJhbnNsYXRlKGNvbnN0IFFQb2ludCAmcCk7CiAgICBpbmxpbmUgdm9pZCB0cmFuc2xhdGUo
aW50IGR4LCBpbnQgZHkpOwoKICAgIGlubGluZSBRTGluZSB0cmFuc2xhdGVkKGNvbnN0IFFQb2lu
dCAmcCkgY29uc3Q7CiAgICBpbmxpbmUgUUxpbmUgdHJhbnNsYXRlZChpbnQgZHgsIGludCBkeSkg
Y29uc3Q7CgogICAgaW5saW5lIHZvaWQgc2V0UDEoY29uc3QgUVBvaW50ICZwMSk7CiAgICBpbmxp
bmUgdm9pZCBzZXRQMihjb25zdCBRUG9pbnQgJnAyKTsKICAgIGlubGluZSB2b2lkIHNldFBvaW50
cyhjb25zdCBRUG9pbnQgJnAxLCBjb25zdCBRUG9pbnQgJnAyKTsKICAgIGlubGluZSB2b2lkIHNl
dExpbmUoaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKTsKCiAgICBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFFMaW5lICZkKSBjb25zdDsKICAgIGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgUUxpbmUgJmQpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gZCk7IH0KCnByaXZh
dGU6CiAgICBRUG9pbnQgcHQxLCBwdDI7Cn07CnRlbXBsYXRlIDw+IGNsYXNzIFFUeXBlSW5mbzxR
TGluZSA+IHsgcHVibGljOiBlbnVtIHsgaXNDb21wbGV4ID0gKCgoUV9NT1ZBQkxFX1RZUEUpICYg
UV9QUklNSVRJVkVfVFlQRSkgPT0gMCksIGlzU3RhdGljID0gKCgoUV9NT1ZBQkxFX1RZUEUpICYg
KFFfTU9WQUJMRV9UWVBFIHwgUV9QUklNSVRJVkVfVFlQRSkpID09IDApLCBpc0xhcmdlID0gKHNp
emVvZihRTGluZSk+c2l6ZW9mKHZvaWQqKSksIGlzUG9pbnRlciA9IGZhbHNlLCBpc0R1bW15ID0g
KCgoUV9NT1ZBQkxFX1RZUEUpICYgUV9EVU1NWV9UWVBFKSAhPSAwKSB9OyBzdGF0aWMgaW5saW5l
IGNvbnN0IGNoYXIgKm5hbWUoKSB7IHJldHVybiAiUUxpbmUiOyB9IH07CgoKCgoKaW5saW5lIFFM
aW5lOjpRTGluZSgpIHsgfQoKaW5saW5lIFFMaW5lOjpRTGluZShjb25zdCBRUG9pbnQgJnB0MV8s
IGNvbnN0IFFQb2ludCAmcHQyXykgOiBwdDEocHQxXyksIHB0MihwdDJfKSB7IH0KCmlubGluZSBR
TGluZTo6UUxpbmUoaW50IHgxcG9zLCBpbnQgeTFwb3MsIGludCB4MnBvcywgaW50IHkycG9zKSA6
IHB0MShRUG9pbnQoeDFwb3MsIHkxcG9zKSksIHB0MihRUG9pbnQoeDJwb3MsIHkycG9zKSkgeyB9
CgppbmxpbmUgYm9vbCBRTGluZTo6aXNOdWxsKCkgY29uc3QKewogICAgcmV0dXJuIHB0MSA9PSBw
dDI7Cn0KCmlubGluZSBpbnQgUUxpbmU6OngxKCkgY29uc3QKewogICAgcmV0dXJuIHB0MS54KCk7
Cn0KCmlubGluZSBpbnQgUUxpbmU6OnkxKCkgY29uc3QKewogICAgcmV0dXJuIHB0MS55KCk7Cn0K
CmlubGluZSBpbnQgUUxpbmU6OngyKCkgY29uc3QKewogICAgcmV0dXJuIHB0Mi54KCk7Cn0KCmlu
bGluZSBpbnQgUUxpbmU6OnkyKCkgY29uc3QKewogICAgcmV0dXJuIHB0Mi55KCk7Cn0KCmlubGlu
ZSBRUG9pbnQgUUxpbmU6OnAxKCkgY29uc3QKewogICAgcmV0dXJuIHB0MTsKfQoKaW5saW5lIFFQ
b2ludCBRTGluZTo6cDIoKSBjb25zdAp7CiAgICByZXR1cm4gcHQyOwp9CgppbmxpbmUgaW50IFFM
aW5lOjpkeCgpIGNvbnN0CnsKICAgIHJldHVybiBwdDIueCgpIC0gcHQxLngoKTsKfQoKaW5saW5l
IGludCBRTGluZTo6ZHkoKSBjb25zdAp7CiAgICByZXR1cm4gcHQyLnkoKSAtIHB0MS55KCk7Cn0K
CmlubGluZSB2b2lkIFFMaW5lOjp0cmFuc2xhdGUoY29uc3QgUVBvaW50ICZwb2ludCkKewogICAg
cHQxICs9IHBvaW50OwogICAgcHQyICs9IHBvaW50Owp9CgppbmxpbmUgdm9pZCBRTGluZTo6dHJh
bnNsYXRlKGludCBhZHgsIGludCBhZHkpCnsKICAgIHRoaXMtPnRyYW5zbGF0ZShRUG9pbnQoYWR4
LCBhZHkpKTsKfQoKaW5saW5lIFFMaW5lIFFMaW5lOjp0cmFuc2xhdGVkKGNvbnN0IFFQb2ludCAm
cCkgY29uc3QKewogICAgcmV0dXJuIFFMaW5lKHB0MSArIHAsIHB0MiArIHApOwp9CgppbmxpbmUg
UUxpbmUgUUxpbmU6OnRyYW5zbGF0ZWQoaW50IGFkeCwgaW50IGFkeSkgY29uc3QKewogICAgcmV0
dXJuIHRyYW5zbGF0ZWQoUVBvaW50KGFkeCwgYWR5KSk7Cn0KCmlubGluZSB2b2lkIFFMaW5lOjpz
ZXRQMShjb25zdCBRUG9pbnQgJmFQMSkKewogICAgcHQxID0gYVAxOwp9CgppbmxpbmUgdm9pZCBR
TGluZTo6c2V0UDIoY29uc3QgUVBvaW50ICZhUDIpCnsKICAgIHB0MiA9IGFQMjsKfQoKaW5saW5l
IHZvaWQgUUxpbmU6OnNldFBvaW50cyhjb25zdCBRUG9pbnQgJmFQMSwgY29uc3QgUVBvaW50ICZh
UDIpCnsKICAgIHB0MSA9IGFQMTsKICAgIHB0MiA9IGFQMjsKfQoKaW5saW5lIHZvaWQgUUxpbmU6
OnNldExpbmUoaW50IGFYMSwgaW50IGFZMSwgaW50IGFYMiwgaW50IGFZMikKewogICAgcHQxID0g
UVBvaW50KGFYMSwgYVkxKTsKICAgIHB0MiA9IFFQb2ludChhWDIsIGFZMik7Cn0KCmlubGluZSBi
b29sIFFMaW5lOjpvcGVyYXRvcj09KGNvbnN0IFFMaW5lICZkKSBjb25zdAp7CiAgICByZXR1cm4g
cHQxID09IGQucHQxICYmIHB0MiA9PSBkLnB0MjsKfQoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpIFFEZWJ1ZyBvcGVyYXRvcjw8KFFEZWJ1ZyBkLCBjb25zdCBRTGluZSAm
cCk7CgoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFEYXRhU3RyZWFt
ICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFtICYsIGNvbnN0IFFMaW5lICYpOwpfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0YVN0
cmVhbSAmLCBRTGluZSAmKTsKCgoKCgpjbGFzcyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKSBRTGluZUYgewpwdWJsaWM6CgogICAgZW51bSBJbnRlcnNlY3RUeXBlIHsgTm9J
bnRlcnNlY3Rpb24sIEJvdW5kZWRJbnRlcnNlY3Rpb24sIFVuYm91bmRlZEludGVyc2VjdGlvbiB9
OwoKICAgIGlubGluZSBRTGluZUYoKTsKICAgIGlubGluZSBRTGluZUYoY29uc3QgUVBvaW50RiAm
cHQxLCBjb25zdCBRUG9pbnRGICZwdDIpOwogICAgaW5saW5lIFFMaW5lRihxcmVhbCB4MSwgcXJl
YWwgeTEsIHFyZWFsIHgyLCBxcmVhbCB5Mik7CiAgICBpbmxpbmUgUUxpbmVGKGNvbnN0IFFMaW5l
ICZsaW5lKSA6IHB0MShsaW5lLnAxKCkpLCBwdDIobGluZS5wMigpKSB7IH0KCiAgICBzdGF0aWMg
UUxpbmVGIGZyb21Qb2xhcihxcmVhbCBsZW5ndGgsIHFyZWFsIGFuZ2xlKTsKCiAgICBib29sIGlz
TnVsbCgpIGNvbnN0OwoKICAgIGlubGluZSBRUG9pbnRGIHAxKCkgY29uc3Q7CiAgICBpbmxpbmUg
UVBvaW50RiBwMigpIGNvbnN0OwoKICAgIGlubGluZSBxcmVhbCB4MSgpIGNvbnN0OwogICAgaW5s
aW5lIHFyZWFsIHkxKCkgY29uc3Q7CgogICAgaW5saW5lIHFyZWFsIHgyKCkgY29uc3Q7CiAgICBp
bmxpbmUgcXJlYWwgeTIoKSBjb25zdDsKCiAgICBpbmxpbmUgcXJlYWwgZHgoKSBjb25zdDsKICAg
IGlubGluZSBxcmVhbCBkeSgpIGNvbnN0OwoKICAgIHFyZWFsIGxlbmd0aCgpIGNvbnN0OwogICAg
dm9pZCBzZXRMZW5ndGgocXJlYWwgbGVuKTsKCiAgICBxcmVhbCBhbmdsZSgpIGNvbnN0OwogICAg
dm9pZCBzZXRBbmdsZShxcmVhbCBhbmdsZSk7CgogICAgcXJlYWwgYW5nbGVUbyhjb25zdCBRTGlu
ZUYgJmwpIGNvbnN0OwoKICAgIFFMaW5lRiB1bml0VmVjdG9yKCkgY29uc3Q7CiAgICBRTGluZUYg
bm9ybWFsVmVjdG9yKCkgY29uc3Q7CgoKICAgIEludGVyc2VjdFR5cGUgaW50ZXJzZWN0KGNvbnN0
IFFMaW5lRiAmbCwgUVBvaW50RiAqaW50ZXJzZWN0aW9uUG9pbnQpIGNvbnN0OwoKICAgIHFyZWFs
IGFuZ2xlKGNvbnN0IFFMaW5lRiAmbCkgY29uc3Q7CgogICAgUVBvaW50RiBwb2ludEF0KHFyZWFs
IHQpIGNvbnN0OwogICAgaW5saW5lIHZvaWQgdHJhbnNsYXRlKGNvbnN0IFFQb2ludEYgJnApOwog
ICAgaW5saW5lIHZvaWQgdHJhbnNsYXRlKHFyZWFsIGR4LCBxcmVhbCBkeSk7CgogICAgaW5saW5l
IFFMaW5lRiB0cmFuc2xhdGVkKGNvbnN0IFFQb2ludEYgJnApIGNvbnN0OwogICAgaW5saW5lIFFM
aW5lRiB0cmFuc2xhdGVkKHFyZWFsIGR4LCBxcmVhbCBkeSkgY29uc3Q7CgogICAgaW5saW5lIHZv
aWQgc2V0UDEoY29uc3QgUVBvaW50RiAmcDEpOwogICAgaW5saW5lIHZvaWQgc2V0UDIoY29uc3Qg
UVBvaW50RiAmcDIpOwogICAgaW5saW5lIHZvaWQgc2V0UG9pbnRzKGNvbnN0IFFQb2ludEYgJnAx
LCBjb25zdCBRUG9pbnRGICZwMik7CiAgICBpbmxpbmUgdm9pZCBzZXRMaW5lKHFyZWFsIHgxLCBx
cmVhbCB5MSwgcXJlYWwgeDIsIHFyZWFsIHkyKTsKCiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFFMaW5lRiAmZCkgY29uc3Q7CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFFMaW5lRiAmZCkgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBkKTsgfQoKICAgIFFMaW5lIHRv
TGluZSgpIGNvbnN0OwoKcHJpdmF0ZToKICAgIFFQb2ludEYgcHQxLCBwdDI7Cn07CnRlbXBsYXRl
IDw+IGNsYXNzIFFUeXBlSW5mbzxRTGluZUYgPiB7IHB1YmxpYzogZW51bSB7IGlzQ29tcGxleCA9
ICgoKFFfTU9WQUJMRV9UWVBFKSAmIFFfUFJJTUlUSVZFX1RZUEUpID09IDApLCBpc1N0YXRpYyA9
ICgoKFFfTU9WQUJMRV9UWVBFKSAmIChRX01PVkFCTEVfVFlQRSB8IFFfUFJJTUlUSVZFX1RZUEUp
KSA9PSAwKSwgaXNMYXJnZSA9IChzaXplb2YoUUxpbmVGKT5zaXplb2Yodm9pZCopKSwgaXNQb2lu
dGVyID0gZmFsc2UsIGlzRHVtbXkgPSAoKChRX01PVkFCTEVfVFlQRSkgJiBRX0RVTU1ZX1RZUEUp
ICE9IDApIH07IHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqbmFtZSgpIHsgcmV0dXJuICJRTGlu
ZUYiOyB9IH07CgoKCgoKaW5saW5lIFFMaW5lRjo6UUxpbmVGKCkKewp9CgppbmxpbmUgUUxpbmVG
OjpRTGluZUYoY29uc3QgUVBvaW50RiAmYXB0MSwgY29uc3QgUVBvaW50RiAmYXB0MikKICAgIDog
cHQxKGFwdDEpLCBwdDIoYXB0MikKewp9CgppbmxpbmUgUUxpbmVGOjpRTGluZUYocXJlYWwgeDFw
b3MsIHFyZWFsIHkxcG9zLCBxcmVhbCB4MnBvcywgcXJlYWwgeTJwb3MpCiAgICA6IHB0MSh4MXBv
cywgeTFwb3MpLCBwdDIoeDJwb3MsIHkycG9zKQp7Cn0KCmlubGluZSBxcmVhbCBRTGluZUY6Ongx
KCkgY29uc3QKewogICAgcmV0dXJuIHB0MS54KCk7Cn0KCmlubGluZSBxcmVhbCBRTGluZUY6Onkx
KCkgY29uc3QKewogICAgcmV0dXJuIHB0MS55KCk7Cn0KCmlubGluZSBxcmVhbCBRTGluZUY6Ongy
KCkgY29uc3QKewogICAgcmV0dXJuIHB0Mi54KCk7Cn0KCmlubGluZSBxcmVhbCBRTGluZUY6Onky
KCkgY29uc3QKewogICAgcmV0dXJuIHB0Mi55KCk7Cn0KCmlubGluZSBRUG9pbnRGIFFMaW5lRjo6
cDEoKSBjb25zdAp7CiAgICByZXR1cm4gcHQxOwp9CgppbmxpbmUgUVBvaW50RiBRTGluZUY6OnAy
KCkgY29uc3QKewogICAgcmV0dXJuIHB0MjsKfQoKaW5saW5lIHFyZWFsIFFMaW5lRjo6ZHgoKSBj
b25zdAp7CiAgICByZXR1cm4gcHQyLngoKSAtIHB0MS54KCk7Cn0KCmlubGluZSBxcmVhbCBRTGlu
ZUY6OmR5KCkgY29uc3QKewogICAgcmV0dXJuIHB0Mi55KCkgLSBwdDEueSgpOwp9CgppbmxpbmUg
UUxpbmVGIFFMaW5lRjo6bm9ybWFsVmVjdG9yKCkgY29uc3QKewogICAgcmV0dXJuIFFMaW5lRihw
MSgpLCBwMSgpICsgUVBvaW50RihkeSgpLCAtZHgoKSkpOwp9CgppbmxpbmUgdm9pZCBRTGluZUY6
OnRyYW5zbGF0ZShjb25zdCBRUG9pbnRGICZwb2ludCkKewogICAgcHQxICs9IHBvaW50OwogICAg
cHQyICs9IHBvaW50Owp9CgppbmxpbmUgdm9pZCBRTGluZUY6OnRyYW5zbGF0ZShxcmVhbCBhZHgs
IHFyZWFsIGFkeSkKewogICAgdGhpcy0+dHJhbnNsYXRlKFFQb2ludEYoYWR4LCBhZHkpKTsKfQoK
aW5saW5lIFFMaW5lRiBRTGluZUY6OnRyYW5zbGF0ZWQoY29uc3QgUVBvaW50RiAmcCkgY29uc3QK
ewogICAgcmV0dXJuIFFMaW5lRihwdDEgKyBwLCBwdDIgKyBwKTsKfQoKaW5saW5lIFFMaW5lRiBR
TGluZUY6OnRyYW5zbGF0ZWQocXJlYWwgYWR4LCBxcmVhbCBhZHkpIGNvbnN0CnsKICAgIHJldHVy
biB0cmFuc2xhdGVkKFFQb2ludEYoYWR4LCBhZHkpKTsKfQoKaW5saW5lIHZvaWQgUUxpbmVGOjpz
ZXRMZW5ndGgocXJlYWwgbGVuKQp7CiAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgcmV0dXJuOwog
ICAgUUxpbmVGIHYgPSB1bml0VmVjdG9yKCk7CiAgICBwdDIgPSBRUG9pbnRGKHB0MS54KCkgKyB2
LmR4KCkgKiBsZW4sIHB0MS55KCkgKyB2LmR5KCkgKiBsZW4pOwp9CgppbmxpbmUgUVBvaW50RiBR
TGluZUY6OnBvaW50QXQocXJlYWwgdCkgY29uc3QKewogICAgcXJlYWwgdnggPSBwdDIueCgpIC0g
cHQxLngoKTsKICAgIHFyZWFsIHZ5ID0gcHQyLnkoKSAtIHB0MS55KCk7CiAgICByZXR1cm4gUVBv
aW50RihwdDEueCgpICsgdnggKiB0LCBwdDEueSgpICsgdnkgKiB0KTsKfQoKaW5saW5lIFFMaW5l
IFFMaW5lRjo6dG9MaW5lKCkgY29uc3QKewogICAgcmV0dXJuIFFMaW5lKHB0MS50b1BvaW50KCks
IHB0Mi50b1BvaW50KCkpOwp9CgoKaW5saW5lIHZvaWQgUUxpbmVGOjpzZXRQMShjb25zdCBRUG9p
bnRGICZhUDEpCnsKICAgIHB0MSA9IGFQMTsKfQoKaW5saW5lIHZvaWQgUUxpbmVGOjpzZXRQMihj
b25zdCBRUG9pbnRGICZhUDIpCnsKICAgIHB0MiA9IGFQMjsKfQoKaW5saW5lIHZvaWQgUUxpbmVG
OjpzZXRQb2ludHMoY29uc3QgUVBvaW50RiAmYVAxLCBjb25zdCBRUG9pbnRGICZhUDIpCnsKICAg
IHB0MSA9IGFQMTsKICAgIHB0MiA9IGFQMjsKfQoKaW5saW5lIHZvaWQgUUxpbmVGOjpzZXRMaW5l
KHFyZWFsIGFYMSwgcXJlYWwgYVkxLCBxcmVhbCBhWDIsIHFyZWFsIGFZMikKewogICAgcHQxID0g
UVBvaW50RihhWDEsIGFZMSk7CiAgICBwdDIgPSBRUG9pbnRGKGFYMiwgYVkyKTsKfQoKCmlubGlu
ZSBib29sIFFMaW5lRjo6b3BlcmF0b3I9PShjb25zdCBRTGluZUYgJmQpIGNvbnN0CnsKICAgIHJl
dHVybiBwdDEgPT0gZC5wdDEgJiYgcHQyID09IGQucHQyOwp9CgoKCgpfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGVidWcgb3BlcmF0b3I8PChRRGVidWcgZCwgY29uc3Qg
UUxpbmVGICZwKTsKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUURh
dGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFTdHJlYW0gJiwgY29uc3QgUUxpbmVGICYpOwpfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+
PihRRGF0YVN0cmVhbSAmLCBRTGluZUYgJik7CgoKCgoKIyA0OSAiL29wdC9sb2NhbC9pbmNsdWRl
L1F0R3VpL3FtYXRyaXguaCIgMgoKCgoKCgoKdHlwZWRlZiBRdFZhbGlkTGljZW5zZUZvckd1aU1v
ZHVsZSBRdEd1aU1vZHVsZTsKCmNsYXNzIFFQYWludGVyUGF0aDsKY2xhc3MgUVZhcmlhbnQ7Cgpj
bGFzcyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRTWF0cml4CnsKcHVi
bGljOgogICAgaW5saW5lIGV4cGxpY2l0IFFNYXRyaXgoUXQ6OkluaXRpYWxpemF0aW9uKSB7fQog
ICAgUU1hdHJpeCgpOwogICAgUU1hdHJpeChxcmVhbCBtMTEsIHFyZWFsIG0xMiwgcXJlYWwgbTIx
LCBxcmVhbCBtMjIsCiAgICAgICAgICAgIHFyZWFsIGR4LCBxcmVhbCBkeSk7CiAgICBRTWF0cml4
KGNvbnN0IFFNYXRyaXggJm1hdHJpeCk7CgogICAgdm9pZCBzZXRNYXRyaXgocXJlYWwgbTExLCBx
cmVhbCBtMTIsIHFyZWFsIG0yMSwgcXJlYWwgbTIyLAogICAgICAgICAgICAgICAgICAgcXJlYWwg
ZHgsIHFyZWFsIGR5KTsKCiAgICBxcmVhbCBtMTEoKSBjb25zdCB7IHJldHVybiBfbTExOyB9CiAg
ICBxcmVhbCBtMTIoKSBjb25zdCB7IHJldHVybiBfbTEyOyB9CiAgICBxcmVhbCBtMjEoKSBjb25z
dCB7IHJldHVybiBfbTIxOyB9CiAgICBxcmVhbCBtMjIoKSBjb25zdCB7IHJldHVybiBfbTIyOyB9
CiAgICBxcmVhbCBkeCgpIGNvbnN0IHsgcmV0dXJuIF9keDsgfQogICAgcXJlYWwgZHkoKSBjb25z
dCB7IHJldHVybiBfZHk7IH0KCiAgICB2b2lkIG1hcChpbnQgeCwgaW50IHksIGludCAqdHgsIGlu
dCAqdHkpIGNvbnN0OwogICAgdm9pZCBtYXAocXJlYWwgeCwgcXJlYWwgeSwgcXJlYWwgKnR4LCBx
cmVhbCAqdHkpIGNvbnN0OwogICAgUVJlY3QgbWFwUmVjdChjb25zdCBRUmVjdCAmKSBjb25zdDsK
ICAgIFFSZWN0RiBtYXBSZWN0KGNvbnN0IFFSZWN0RiAmKSBjb25zdDsKCiAgICBRUG9pbnQgbWFw
KGNvbnN0IFFQb2ludCAmcCkgY29uc3Q7CiAgICBRUG9pbnRGIG1hcChjb25zdCBRUG9pbnRGJnAp
IGNvbnN0OwogICAgUUxpbmUgbWFwKGNvbnN0IFFMaW5lICZsKSBjb25zdDsKICAgIFFMaW5lRiBt
YXAoY29uc3QgUUxpbmVGICZsKSBjb25zdDsKICAgIFFQb2x5Z29uRiBtYXAoY29uc3QgUVBvbHln
b25GICZhKSBjb25zdDsKICAgIFFQb2x5Z29uIG1hcChjb25zdCBRUG9seWdvbiAmYSkgY29uc3Q7
CiAgICBRUmVnaW9uIG1hcChjb25zdCBRUmVnaW9uICZyKSBjb25zdDsKICAgIFFQYWludGVyUGF0
aCBtYXAoY29uc3QgUVBhaW50ZXJQYXRoICZwKSBjb25zdDsKICAgIFFQb2x5Z29uIG1hcFRvUG9s
eWdvbihjb25zdCBRUmVjdCAmcikgY29uc3Q7CgogICAgdm9pZCByZXNldCgpOwogICAgaW5saW5l
IGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0OwoKICAgIFFNYXRyaXggJnRyYW5zbGF0ZShxcmVhbCBk
eCwgcXJlYWwgZHkpOwogICAgUU1hdHJpeCAmc2NhbGUocXJlYWwgc3gsIHFyZWFsIHN5KTsKICAg
IFFNYXRyaXggJnNoZWFyKHFyZWFsIHNoLCBxcmVhbCBzdik7CiAgICBRTWF0cml4ICZyb3RhdGUo
cXJlYWwgYSk7CgogICAgYm9vbCBpc0ludmVydGlibGUoKSBjb25zdCB7IHJldHVybiAhcUZ1enp5
SXNOdWxsKF9tMTEqX20yMiAtIF9tMTIqX20yMSk7IH0KICAgIHFyZWFsIGRldGVybWluYW50KCkg
Y29uc3QgeyByZXR1cm4gX20xMSpfbTIyIC0gX20xMipfbTIxOyB9CgogICAgcXJlYWwgZGV0KCkg
Y29uc3QgeyByZXR1cm4gX20xMSpfbTIyIC0gX20xMipfbTIxOyB9CgoKICAgIFFNYXRyaXggaW52
ZXJ0ZWQoYm9vbCAqaW52ZXJ0aWJsZSA9IDApIGNvbnN0OwoKICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBRTWF0cml4ICYpIGNvbnN0OwogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFNYXRyaXgg
JikgY29uc3Q7CgogICAgUU1hdHJpeCAmb3BlcmF0b3IqPShjb25zdCBRTWF0cml4ICYpOwogICAg
UU1hdHJpeCBvcGVyYXRvciooY29uc3QgUU1hdHJpeCAmbykgY29uc3Q7CgogICAgUU1hdHJpeCAm
b3BlcmF0b3I9KGNvbnN0IFFNYXRyaXggJik7CgogICAgb3BlcmF0b3IgUVZhcmlhbnQoKSBjb25z
dDsKCgoKCgoKCnByaXZhdGU6CiAgICBpbmxpbmUgUU1hdHJpeChib29sKQogICAgICAgICAgICA6
IF9tMTEoMS4pCiAgICAgICAgICAgICwgX20xMigwLikKICAgICAgICAgICAgLCBfbTIxKDAuKQog
ICAgICAgICAgICAsIF9tMjIoMS4pCiAgICAgICAgICAgICwgX2R4KDAuKQogICAgICAgICAgICAs
IF9keSgwLikge30KICAgIGlubGluZSBRTWF0cml4KHFyZWFsIGFtMTEsIHFyZWFsIGFtMTIsIHFy
ZWFsIGFtMjEsIHFyZWFsIGFtMjIsIHFyZWFsIGFkeCwgcXJlYWwgYWR5LCBib29sKQogICAgICAg
ICAgICA6IF9tMTEoYW0xMSkKICAgICAgICAgICAgLCBfbTEyKGFtMTIpCiAgICAgICAgICAgICwg
X20yMShhbTIxKQogICAgICAgICAgICAsIF9tMjIoYW0yMikKICAgICAgICAgICAgLCBfZHgoYWR4
KQogICAgICAgICAgICAsIF9keShhZHkpIHt9CiAgICBmcmllbmQgY2xhc3MgUVRyYW5zZm9ybTsK
ICAgIHFyZWFsIF9tMTEsIF9tMTI7CiAgICBxcmVhbCBfbTIxLCBfbTIyOwogICAgcXJlYWwgX2R4
LCBfZHk7Cn07CnRlbXBsYXRlIDw+IGNsYXNzIFFUeXBlSW5mbzxRTWF0cml4ID4geyBwdWJsaWM6
IGVudW0geyBpc0NvbXBsZXggPSAoKChRX01PVkFCTEVfVFlQRSkgJiBRX1BSSU1JVElWRV9UWVBF
KSA9PSAwKSwgaXNTdGF0aWMgPSAoKChRX01PVkFCTEVfVFlQRSkgJiAoUV9NT1ZBQkxFX1RZUEUg
fCBRX1BSSU1JVElWRV9UWVBFKSkgPT0gMCksIGlzTGFyZ2UgPSAoc2l6ZW9mKFFNYXRyaXgpPnNp
emVvZih2b2lkKikpLCBpc1BvaW50ZXIgPSBmYWxzZSwgaXNEdW1teSA9ICgoKFFfTU9WQUJMRV9U
WVBFKSAmIFFfRFVNTVlfVFlQRSkgIT0gMCkgfTsgc3RhdGljIGlubGluZSBjb25zdCBjaGFyICpu
YW1lKCkgeyByZXR1cm4gIlFNYXRyaXgiOyB9IH07CgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgaW5saW5lIFFQb2ludCBvcGVyYXRvciooY29uc3QgUVBvaW50ICZwLCBj
b25zdCBRTWF0cml4ICZtKQp7IHJldHVybiBtLm1hcChwKTsgfQpfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKSBpbmxpbmUgUVBvaW50RiBvcGVyYXRvciooY29uc3QgUVBvaW50
RiAmcCwgY29uc3QgUU1hdHJpeCAmbSkKeyByZXR1cm4gbS5tYXAocCk7IH0KX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW5saW5lIFFMaW5lRiBvcGVyYXRvciooY29uc3Qg
UUxpbmVGICZsLCBjb25zdCBRTWF0cml4ICZtKQp7IHJldHVybiBtLm1hcChsKTsgfQpfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBpbmxpbmUgUUxpbmUgb3BlcmF0b3IqKGNv
bnN0IFFMaW5lICZsLCBjb25zdCBRTWF0cml4ICZtKQp7IHJldHVybiBtLm1hcChsKTsgfQpfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBpbmxpbmUgUVBvbHlnb24gb3BlcmF0
b3IgKihjb25zdCBRUG9seWdvbiAmYSwgY29uc3QgUU1hdHJpeCAmbSkKeyByZXR1cm4gbS5tYXAo
YSk7IH0KX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW5saW5lIFFQb2x5
Z29uRiBvcGVyYXRvciAqKGNvbnN0IFFQb2x5Z29uRiAmYSwgY29uc3QgUU1hdHJpeCAmbSkKeyBy
ZXR1cm4gbS5tYXAoYSk7IH0KX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkg
aW5saW5lIFFSZWdpb24gb3BlcmF0b3IgKihjb25zdCBRUmVnaW9uICZyLCBjb25zdCBRTWF0cml4
ICZtKQp7IHJldHVybiBtLm1hcChyKTsgfQpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBRUGFpbnRlclBhdGggb3BlcmF0b3IgKihjb25zdCBRUGFpbnRlclBhdGggJnAsIGNv
bnN0IFFNYXRyaXggJm0pOwoKaW5saW5lIGJvb2wgUU1hdHJpeDo6aXNJZGVudGl0eSgpIGNvbnN0
CnsKICAgIHJldHVybiBxRnV6enlJc051bGwoX20xMSAtIDEpICYmIHFGdXp6eUlzTnVsbChfbTIy
IC0gMSkgJiYgcUZ1enp5SXNOdWxsKF9tMTIpCiAgICAgICAgICAgJiYgcUZ1enp5SXNOdWxsKF9t
MjEpICYmIHFGdXp6eUlzTnVsbChfZHgpICYmIHFGdXp6eUlzTnVsbChfZHkpOwp9CgppbmxpbmUg
Ym9vbCBxRnV6enlDb21wYXJlKGNvbnN0IFFNYXRyaXgmIG0xLCBjb25zdCBRTWF0cml4JiBtMikK
ewogICAgcmV0dXJuIHFGdXp6eUNvbXBhcmUobTEubTExKCksIG0yLm0xMSgpKQogICAgICAgICYm
IHFGdXp6eUNvbXBhcmUobTEubTEyKCksIG0yLm0xMigpKQogICAgICAgICYmIHFGdXp6eUNvbXBh
cmUobTEubTIxKCksIG0yLm0yMSgpKQogICAgICAgICYmIHFGdXp6eUNvbXBhcmUobTEubTIyKCks
IG0yLm0yMigpKQogICAgICAgICYmIHFGdXp6eUNvbXBhcmUobTEuZHgoKSwgbTIuZHgoKSkKICAg
ICAgICAmJiBxRnV6enlDb21wYXJlKG0xLmR5KCksIG0yLmR5KCkpOwp9CgoKCgoKCgpfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChR
RGF0YVN0cmVhbSAmLCBjb25zdCBRTWF0cml4ICYpOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0YVN0cmVhbSAmLCBRTWF0
cml4ICYpOwoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRRGVidWcg
b3BlcmF0b3I8PChRRGVidWcsIGNvbnN0IFFNYXRyaXggJik7CiMgMjAyICIvb3B0L2xvY2FsL2lu
Y2x1ZGUvUXRHdWkvcW1hdHJpeC5oIgoKCgojIDQ1ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRHdWkv
cXRyYW5zZm9ybS5oIiAyCiMgMSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0R3VpL3FwYWludGVycGF0
aC5oIiAxCiMgNDMgIi9vcHQvbG9jYWwvaW5jbHVkZS9RdEd1aS9xcGFpbnRlcnBhdGguaCIKI2Rl
ZmluZSBRUEFJTlRFUlBBVEhfSCAKIyA1MiAiL29wdC9sb2NhbC9pbmNsdWRlL1F0R3VpL3FwYWlu
dGVycGF0aC5oIgoKCgoKdHlwZWRlZiBRdFZhbGlkTGljZW5zZUZvckd1aU1vZHVsZSBRdEd1aU1v
ZHVsZTsKCmNsYXNzIFFGb250OwpjbGFzcyBRUGFpbnRlclBhdGhQcml2YXRlOwpzdHJ1Y3QgUVBh
aW50ZXJQYXRoUHJpdmF0ZURlbGV0ZXI7CmNsYXNzIFFQYWludGVyUGF0aERhdGE7CmNsYXNzIFFQ
YWludGVyUGF0aFN0cm9rZXJQcml2YXRlOwpjbGFzcyBRUG9seWdvbkY7CmNsYXNzIFFSZWdpb247
CmNsYXNzIFFWZWN0b3JQYXRoOwoKY2xhc3MgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkgUVBhaW50ZXJQYXRoCnsKcHVibGljOgogICAgZW51bSBFbGVtZW50VHlwZSB7CiAg
ICAgICAgTW92ZVRvRWxlbWVudCwKICAgICAgICBMaW5lVG9FbGVtZW50LAogICAgICAgIEN1cnZl
VG9FbGVtZW50LAogICAgICAgIEN1cnZlVG9EYXRhRWxlbWVudAogICAgfTsKCiAgICBjbGFzcyBF
bGVtZW50IHsKICAgIHB1YmxpYzoKICAgICAgICBxcmVhbCB4OwogICAgICAgIHFyZWFsIHk7CiAg
ICAgICAgRWxlbWVudFR5cGUgdHlwZTsKCiAgICAgICAgYm9vbCBpc01vdmVUbygpIGNvbnN0IHsg
cmV0dXJuIHR5cGUgPT0gTW92ZVRvRWxlbWVudDsgfQogICAgICAgIGJvb2wgaXNMaW5lVG8oKSBj
b25zdCB7IHJldHVybiB0eXBlID09IExpbmVUb0VsZW1lbnQ7IH0KICAgICAgICBib29sIGlzQ3Vy
dmVUbygpIGNvbnN0IHsgcmV0dXJuIHR5cGUgPT0gQ3VydmVUb0VsZW1lbnQ7IH0KCiAgICAgICAg
b3BlcmF0b3IgUVBvaW50RiAoKSBjb25zdCB7IHJldHVybiBRUG9pbnRGKHgsIHkpOyB9CgogICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50ICZlKSBjb25zdCB7IHJldHVybiBxRnV6
enlDb21wYXJlKHgsIGUueCkKICAgICAgICAgICAgJiYgcUZ1enp5Q29tcGFyZSh5LCBlLnkpICYm
IHR5cGUgPT0gZS50eXBlOyB9CiAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBF
bGVtZW50ICZlKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShlKTsgfQogICAgfTsKCiAgICBR
UGFpbnRlclBhdGgoKTsKICAgIGV4cGxpY2l0IFFQYWludGVyUGF0aChjb25zdCBRUG9pbnRGICZz
dGFydFBvaW50KTsKICAgIFFQYWludGVyUGF0aChjb25zdCBRUGFpbnRlclBhdGggJm90aGVyKTsK
ICAgIFFQYWludGVyUGF0aCAmb3BlcmF0b3I9KGNvbnN0IFFQYWludGVyUGF0aCAmb3RoZXIpOwog
ICAgflFQYWludGVyUGF0aCgpOwoKICAgIHZvaWQgY2xvc2VTdWJwYXRoKCk7CgogICAgdm9pZCBt
b3ZlVG8oY29uc3QgUVBvaW50RiAmcCk7CiAgICBpbmxpbmUgdm9pZCBtb3ZlVG8ocXJlYWwgeCwg
cXJlYWwgeSk7CgogICAgdm9pZCBsaW5lVG8oY29uc3QgUVBvaW50RiAmcCk7CiAgICBpbmxpbmUg
dm9pZCBsaW5lVG8ocXJlYWwgeCwgcXJlYWwgeSk7CgogICAgdm9pZCBhcmNNb3ZlVG8oY29uc3Qg
UVJlY3RGICZyZWN0LCBxcmVhbCBhbmdsZSk7CiAgICBpbmxpbmUgdm9pZCBhcmNNb3ZlVG8ocXJl
YWwgeCwgcXJlYWwgeSwgcXJlYWwgdywgcXJlYWwgaCwgcXJlYWwgYW5nbGUpOwoKICAgIHZvaWQg
YXJjVG8oY29uc3QgUVJlY3RGICZyZWN0LCBxcmVhbCBzdGFydEFuZ2xlLCBxcmVhbCBhcmNMZW5n
dGgpOwogICAgaW5saW5lIHZvaWQgYXJjVG8ocXJlYWwgeCwgcXJlYWwgeSwgcXJlYWwgdywgcXJl
YWwgaCwgcXJlYWwgc3RhcnRBbmdsZSwgcXJlYWwgYXJjTGVuZ3RoKTsKCiAgICB2b2lkIGN1Ymlj
VG8oY29uc3QgUVBvaW50RiAmY3RybFB0MSwgY29uc3QgUVBvaW50RiAmY3RybFB0MiwgY29uc3Qg
UVBvaW50RiAmZW5kUHQpOwogICAgaW5saW5lIHZvaWQgY3ViaWNUbyhxcmVhbCBjdHJsUHQxeCwg
cXJlYWwgY3RybFB0MXksIHFyZWFsIGN0cmxQdDJ4LCBxcmVhbCBjdHJsUHQyeSwKICAgICAgICAg
ICAgICAgICAgICAgICAgcXJlYWwgZW5kUHR4LCBxcmVhbCBlbmRQdHkpOwogICAgdm9pZCBxdWFk
VG8oY29uc3QgUVBvaW50RiAmY3RybFB0LCBjb25zdCBRUG9pbnRGICZlbmRQdCk7CiAgICBpbmxp
bmUgdm9pZCBxdWFkVG8ocXJlYWwgY3RybFB0eCwgcXJlYWwgY3RybFB0eSwgcXJlYWwgZW5kUHR4
LCBxcmVhbCBlbmRQdHkpOwoKICAgIFFQb2ludEYgY3VycmVudFBvc2l0aW9uKCkgY29uc3Q7Cgog
ICAgdm9pZCBhZGRSZWN0KGNvbnN0IFFSZWN0RiAmcmVjdCk7CiAgICBpbmxpbmUgdm9pZCBhZGRS
ZWN0KHFyZWFsIHgsIHFyZWFsIHksIHFyZWFsIHcsIHFyZWFsIGgpOwogICAgdm9pZCBhZGRFbGxp
cHNlKGNvbnN0IFFSZWN0RiAmcmVjdCk7CiAgICBpbmxpbmUgdm9pZCBhZGRFbGxpcHNlKHFyZWFs
IHgsIHFyZWFsIHksIHFyZWFsIHcsIHFyZWFsIGgpOwogICAgaW5saW5lIHZvaWQgYWRkRWxsaXBz
ZShjb25zdCBRUG9pbnRGICZjZW50ZXIsIHFyZWFsIHJ4LCBxcmVhbCByeSk7CiAgICB2b2lkIGFk
ZFBvbHlnb24oY29uc3QgUVBvbHlnb25GICZwb2x5Z29uKTsKICAgIHZvaWQgYWRkVGV4dChjb25z
dCBRUG9pbnRGICZwb2ludCwgY29uc3QgUUZvbnQgJmYsIGNvbnN0IFFTdHJpbmcgJnRleHQpOwog
ICAgaW5saW5lIHZvaWQgYWRkVGV4dChxcmVhbCB4LCBxcmVhbCB5LCBjb25zdCBRRm9udCAmZiwg
Y29uc3QgUVN0cmluZyAmdGV4dCk7CiAgICB2b2lkIGFkZFBhdGgoY29uc3QgUVBhaW50ZXJQYXRo
ICZwYXRoKTsKICAgIHZvaWQgYWRkUmVnaW9uKGNvbnN0IFFSZWdpb24gJnJlZ2lvbik7CgogICAg
dm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBRUmVjdEYgJnJlY3QsIHFyZWFsIHhSYWRpdXMsIHFy
ZWFsIHlSYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgICAgIFF0OjpTaXplTW9kZSBtb2RlID0g
UXQ6OkFic29sdXRlU2l6ZSk7CiAgICBpbmxpbmUgdm9pZCBhZGRSb3VuZGVkUmVjdChxcmVhbCB4
LCBxcmVhbCB5LCBxcmVhbCB3LCBxcmVhbCBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcXJlYWwgeFJhZGl1cywgcXJlYWwgeVJhZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFF0OjpTaXplTW9kZSBtb2RlID0gUXQ6OkFic29sdXRlU2l6ZSk7CgogICAgdm9pZCBh
ZGRSb3VuZFJlY3QoY29uc3QgUVJlY3RGICZyZWN0LCBpbnQgeFJuZCwgaW50IHlSbmQpOwogICAg
aW5saW5lIHZvaWQgYWRkUm91bmRSZWN0KHFyZWFsIHgsIHFyZWFsIHksIHFyZWFsIHcsIHFyZWFs
IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHhSbmQsIGludCB5Um5kKTsKICAg
IGlubGluZSB2b2lkIGFkZFJvdW5kUmVjdChjb25zdCBRUmVjdEYgJnJlY3QsIGludCByb3VuZG5l
c3MpOwogICAgaW5saW5lIHZvaWQgYWRkUm91bmRSZWN0KHFyZWFsIHgsIHFyZWFsIHksIHFyZWFs
IHcsIHFyZWFsIGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJvdW5kbmVzcyk7
CgogICAgdm9pZCBjb25uZWN0UGF0aChjb25zdCBRUGFpbnRlclBhdGggJnBhdGgpOwoKICAgIGJv
b2wgY29udGFpbnMoY29uc3QgUVBvaW50RiAmcHQpIGNvbnN0OwogICAgYm9vbCBjb250YWlucyhj
b25zdCBRUmVjdEYgJnJlY3QpIGNvbnN0OwogICAgYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFFSZWN0
RiAmcmVjdCkgY29uc3Q7CgogICAgdm9pZCB0cmFuc2xhdGUocXJlYWwgZHgsIHFyZWFsIGR5KTsK
ICAgIGlubGluZSB2b2lkIHRyYW5zbGF0ZShjb25zdCBRUG9pbnRGICZvZmZzZXQpOwoKICAgIFFQ
YWludGVyUGF0aCB0cmFuc2xhdGVkKHFyZWFsIGR4LCBxcmVhbCBkeSkgY29uc3Q7CiAgICBpbmxp
bmUgUVBhaW50ZXJQYXRoIHRyYW5zbGF0ZWQoY29uc3QgUVBvaW50RiAmb2Zmc2V0KSBjb25zdDsK
CiAgICBRUmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7CiAgICBRUmVjdEYgY29udHJvbFBvaW50
UmVjdCgpIGNvbnN0OwoKICAgIFF0OjpGaWxsUnVsZSBmaWxsUnVsZSgpIGNvbnN0OwogICAgdm9p
ZCBzZXRGaWxsUnVsZShRdDo6RmlsbFJ1bGUgZmlsbFJ1bGUpOwoKICAgIGlubGluZSBib29sIGlz
RW1wdHkoKSBjb25zdDsKCiAgICBRUGFpbnRlclBhdGggdG9SZXZlcnNlZCgpIGNvbnN0OwogICAg
UUxpc3Q8UVBvbHlnb25GPiB0b1N1YnBhdGhQb2x5Z29ucyhjb25zdCBRTWF0cml4ICZtYXRyaXgg
PSBRTWF0cml4KCkpIGNvbnN0OwogICAgUUxpc3Q8UVBvbHlnb25GPiB0b0ZpbGxQb2x5Z29ucyhj
b25zdCBRTWF0cml4ICZtYXRyaXggPSBRTWF0cml4KCkpIGNvbnN0OwogICAgUVBvbHlnb25GIHRv
RmlsbFBvbHlnb24oY29uc3QgUU1hdHJpeCAmbWF0cml4ID0gUU1hdHJpeCgpKSBjb25zdDsKICAg
IFFMaXN0PFFQb2x5Z29uRj4gdG9TdWJwYXRoUG9seWdvbnMoY29uc3QgUVRyYW5zZm9ybSAmbWF0
cml4KSBjb25zdDsKICAgIFFMaXN0PFFQb2x5Z29uRj4gdG9GaWxsUG9seWdvbnMoY29uc3QgUVRy
YW5zZm9ybSAmbWF0cml4KSBjb25zdDsKICAgIFFQb2x5Z29uRiB0b0ZpbGxQb2x5Z29uKGNvbnN0
IFFUcmFuc2Zvcm0gJm1hdHJpeCkgY29uc3Q7CgogICAgaW5saW5lIGludCBlbGVtZW50Q291bnQo
KSBjb25zdDsKICAgIGlubGluZSBjb25zdCBRUGFpbnRlclBhdGg6OkVsZW1lbnQgJmVsZW1lbnRB
dChpbnQgaSkgY29uc3Q7CiAgICBpbmxpbmUgdm9pZCBzZXRFbGVtZW50UG9zaXRpb25BdChpbnQg
aSwgcXJlYWwgeCwgcXJlYWwgeSk7CgogICAgcXJlYWwgbGVuZ3RoKCkgY29uc3Q7CiAgICBxcmVh
bCBwZXJjZW50QXRMZW5ndGgocXJlYWwgdCkgY29uc3Q7CiAgICBRUG9pbnRGIHBvaW50QXRQZXJj
ZW50KHFyZWFsIHQpIGNvbnN0OwogICAgcXJlYWwgYW5nbGVBdFBlcmNlbnQocXJlYWwgdCkgY29u
c3Q7CiAgICBxcmVhbCBzbG9wZUF0UGVyY2VudChxcmVhbCB0KSBjb25zdDsKCiAgICBib29sIGlu
dGVyc2VjdHMoY29uc3QgUVBhaW50ZXJQYXRoICZwKSBjb25zdDsKICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgUVBhaW50ZXJQYXRoICZwKSBjb25zdDsKICAgIFFQYWludGVyUGF0aCB1bml0ZWQoY29u
c3QgUVBhaW50ZXJQYXRoICZyKSBjb25zdDsKICAgIFFQYWludGVyUGF0aCBpbnRlcnNlY3RlZChj
b25zdCBRUGFpbnRlclBhdGggJnIpIGNvbnN0OwogICAgUVBhaW50ZXJQYXRoIHN1YnRyYWN0ZWQo
Y29uc3QgUVBhaW50ZXJQYXRoICZyKSBjb25zdDsKICAgIFFQYWludGVyUGF0aCBzdWJ0cmFjdGVk
SW52ZXJ0ZWQoY29uc3QgUVBhaW50ZXJQYXRoICZyKSBjb25zdDsKCiAgICBRUGFpbnRlclBhdGgg
c2ltcGxpZmllZCgpIGNvbnN0OwoKICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRUGFpbnRlclBh
dGggJm90aGVyKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRUGFpbnRlclBhdGgg
Jm90aGVyKSBjb25zdDsKCiAgICBRUGFpbnRlclBhdGggb3BlcmF0b3ImKGNvbnN0IFFQYWludGVy
UGF0aCAmb3RoZXIpIGNvbnN0OwogICAgUVBhaW50ZXJQYXRoIG9wZXJhdG9yfChjb25zdCBRUGFp
bnRlclBhdGggJm90aGVyKSBjb25zdDsKICAgIFFQYWludGVyUGF0aCBvcGVyYXRvcisoY29uc3Qg
UVBhaW50ZXJQYXRoICZvdGhlcikgY29uc3Q7CiAgICBRUGFpbnRlclBhdGggb3BlcmF0b3ItKGNv
bnN0IFFQYWludGVyUGF0aCAmb3RoZXIpIGNvbnN0OwogICAgUVBhaW50ZXJQYXRoICZvcGVyYXRv
ciY9KGNvbnN0IFFQYWludGVyUGF0aCAmb3RoZXIpOwogICAgUVBhaW50ZXJQYXRoICZvcGVyYXRv
cnw9KGNvbnN0IFFQYWludGVyUGF0aCAmb3RoZXIpOwogICAgUVBhaW50ZXJQYXRoICZvcGVyYXRv
cis9KGNvbnN0IFFQYWludGVyUGF0aCAmb3RoZXIpOwogICAgUVBhaW50ZXJQYXRoICZvcGVyYXRv
ci09KGNvbnN0IFFQYWludGVyUGF0aCAmb3RoZXIpOwoKcHJpdmF0ZToKICAgIFFTY29wZWRQb2lu
dGVyPFFQYWludGVyUGF0aFByaXZhdGUsIFFQYWludGVyUGF0aFByaXZhdGVEZWxldGVyPiBkX3B0
cjsKCiAgICBpbmxpbmUgdm9pZCBlbnN1cmVEYXRhKCkgeyBpZiAoIWRfcHRyKSBlbnN1cmVEYXRh
X2hlbHBlcigpOyB9CiAgICB2b2lkIGVuc3VyZURhdGFfaGVscGVyKCk7CiAgICBpbmxpbmUgdm9p
ZCBkZXRhY2goKTsKICAgIHZvaWQgZGV0YWNoX2hlbHBlcigpOwogICAgdm9pZCBzZXREaXJ0eShi
b29sKTsKICAgIHZvaWQgY29tcHV0ZUJvdW5kaW5nUmVjdCgpIGNvbnN0OwogICAgdm9pZCBjb21w
dXRlQ29udHJvbFBvaW50UmVjdCgpIGNvbnN0OwoKICAgIFFQYWludGVyUGF0aERhdGEgKmRfZnVu
YygpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UVBhaW50ZXJQYXRoRGF0YSAqPihk
X3B0ci5kYXRhKCkpOyB9CgogICAgZnJpZW5kIGNsYXNzIFFQYWludGVyUGF0aERhdGE7CiAgICBm
cmllbmQgY2xhc3MgUVBhaW50ZXJQYXRoU3Ryb2tlcjsKICAgIGZyaWVuZCBjbGFzcyBRUGFpbnRl
clBhdGhTdHJva2VyUHJpdmF0ZTsKICAgIGZyaWVuZCBjbGFzcyBRTWF0cml4OwogICAgZnJpZW5k
IGNsYXNzIFFUcmFuc2Zvcm07CiAgICBmcmllbmQgY2xhc3MgUVZlY3RvclBhdGg7CiAgICBmcmll
bmQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgY29uc3QgUVZlY3RvclBh
dGggJnF0VmVjdG9yUGF0aEZvclBhdGgoY29uc3QgUVBhaW50ZXJQYXRoICYpOwoKCiAgICBmcmll
bmQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUURhdGFTdHJlYW0gJm9w
ZXJhdG9yPDwoUURhdGFTdHJlYW0gJiwgY29uc3QgUVBhaW50ZXJQYXRoICYpOwogICAgZnJpZW5k
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFEYXRhU3RyZWFtICZvcGVy
YXRvcj4+KFFEYXRhU3RyZWFtICYsIFFQYWludGVyUGF0aCAmKTsKCn07CgpjbGFzcyBRUGFpbnRl
clBhdGhQcml2YXRlCnsKcHVibGljOgogICAgZnJpZW5kIGNsYXNzIFFQYWludGVyUGF0aDsKICAg
IGZyaWVuZCBjbGFzcyBRUGFpbnRlclBhdGhEYXRhOwogICAgZnJpZW5kIGNsYXNzIFFQYWludGVy
UGF0aFN0cm9rZXI7CiAgICBmcmllbmQgY2xhc3MgUVBhaW50ZXJQYXRoU3Ryb2tlclByaXZhdGU7
CiAgICBmcmllbmQgY2xhc3MgUU1hdHJpeDsKICAgIGZyaWVuZCBjbGFzcyBRVHJhbnNmb3JtOwog
ICAgZnJpZW5kIGNsYXNzIFFWZWN0b3JQYXRoOwogICAgZnJpZW5kIHN0cnVjdCBRUGFpbnRlclBh
dGhQcml2YXRlRGVsZXRlcjsKCiAgICBmcmllbmQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSkgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFTdHJlYW0gJiwgY29uc3Qg
UVBhaW50ZXJQYXRoICYpOwogICAgZnJpZW5kIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICYsIFFQYWludGVy
UGF0aCAmKTsKCnByaXZhdGU6CiAgICBRQXRvbWljSW50IHJlZjsKICAgIFFWZWN0b3I8UVBhaW50
ZXJQYXRoOjpFbGVtZW50PiBlbGVtZW50czsKfTsKCnRlbXBsYXRlIDw+IGNsYXNzIFFUeXBlSW5m
bzxRUGFpbnRlclBhdGg6OkVsZW1lbnQgPiB7IHB1YmxpYzogZW51bSB7IGlzQ29tcGxleCA9ICgo
KFFfUFJJTUlUSVZFX1RZUEUpICYgUV9QUklNSVRJVkVfVFlQRSkgPT0gMCksIGlzU3RhdGljID0g
KCgoUV9QUklNSVRJVkVfVFlQRSkgJiAoUV9NT1ZBQkxFX1RZUEUgfCBRX1BSSU1JVElWRV9UWVBF
KSkgPT0gMCksIGlzTGFyZ2UgPSAoc2l6ZW9mKFFQYWludGVyUGF0aDo6RWxlbWVudCk+c2l6ZW9m
KHZvaWQqKSksIGlzUG9pbnRlciA9IGZhbHNlLCBpc0R1bW15ID0gKCgoUV9QUklNSVRJVkVfVFlQ
RSkgJiBRX0RVTU1ZX1RZUEUpICE9IDApIH07IHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqbmFt
ZSgpIHsgcmV0dXJuICJRUGFpbnRlclBhdGg6OkVsZW1lbnQiOyB9IH07CgoKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFT
dHJlYW0gJiwgY29uc3QgUVBhaW50ZXJQYXRoICYpOwpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0YVN0cmVhbSAmLCBRUGFp
bnRlclBhdGggJik7CgoKY2xhc3MgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgUVBhaW50ZXJQYXRoU3Ryb2tlcgp7CiAgICBpbmxpbmUgUVBhaW50ZXJQYXRoU3Ryb2tlclBy
aXZhdGUqIGRfZnVuYygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UVBhaW50ZXJQYXRoU3Ry
b2tlclByaXZhdGUgKj4ocUdldFB0ckhlbHBlcihkX3B0cikpOyB9IGlubGluZSBjb25zdCBRUGFp
bnRlclBhdGhTdHJva2VyUHJpdmF0ZSogZF9mdW5jKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBRUGFpbnRlclBhdGhTdHJva2VyUHJpdmF0ZSAqPihxR2V0UHRySGVscGVy
KGRfcHRyKSk7IH0gZnJpZW5kIGNsYXNzIFFQYWludGVyUGF0aFN0cm9rZXJQcml2YXRlOwpwdWJs
aWM6CiAgICBRUGFpbnRlclBhdGhTdHJva2VyKCk7CiAgICB+UVBhaW50ZXJQYXRoU3Ryb2tlcigp
OwoKICAgIHZvaWQgc2V0V2lkdGgocXJlYWwgd2lkdGgpOwogICAgcXJlYWwgd2lkdGgoKSBjb25z
dDsKCiAgICB2b2lkIHNldENhcFN0eWxlKFF0OjpQZW5DYXBTdHlsZSBzdHlsZSk7CiAgICBRdDo6
UGVuQ2FwU3R5bGUgY2FwU3R5bGUoKSBjb25zdDsKCiAgICB2b2lkIHNldEpvaW5TdHlsZShRdDo6
UGVuSm9pblN0eWxlIHN0eWxlKTsKICAgIFF0OjpQZW5Kb2luU3R5bGUgam9pblN0eWxlKCkgY29u
c3Q7CgogICAgdm9pZCBzZXRNaXRlckxpbWl0KHFyZWFsIGxlbmd0aCk7CiAgICBxcmVhbCBtaXRl
ckxpbWl0KCkgY29uc3Q7CgogICAgdm9pZCBzZXRDdXJ2ZVRocmVzaG9sZChxcmVhbCB0aHJlc2hv
bGQpOwogICAgcXJlYWwgY3VydmVUaHJlc2hvbGQoKSBjb25zdDsKCiAgICB2b2lkIHNldERhc2hQ
YXR0ZXJuKFF0OjpQZW5TdHlsZSk7CiAgICB2b2lkIHNldERhc2hQYXR0ZXJuKGNvbnN0IFFWZWN0
b3I8cXJlYWw+ICZkYXNoUGF0dGVybik7CiAgICBRVmVjdG9yPHFyZWFsPiBkYXNoUGF0dGVybigp
IGNvbnN0OwoKICAgIHZvaWQgc2V0RGFzaE9mZnNldChxcmVhbCBvZmZzZXQpOwogICAgcXJlYWwg
ZGFzaE9mZnNldCgpIGNvbnN0OwoKICAgIFFQYWludGVyUGF0aCBjcmVhdGVTdHJva2UoY29uc3Qg
UVBhaW50ZXJQYXRoICZwYXRoKSBjb25zdDsKCnByaXZhdGU6CiAgICBRUGFpbnRlclBhdGhTdHJv
a2VyKGNvbnN0IFFQYWludGVyUGF0aFN0cm9rZXIgJik7IFFQYWludGVyUGF0aFN0cm9rZXIgJm9w
ZXJhdG9yPShjb25zdCBRUGFpbnRlclBhdGhTdHJva2VyICYpOwoKICAgIGZyaWVuZCBjbGFzcyBR
WDExUGFpbnRFbmdpbmU7CgogICAgUVNjb3BlZFBvaW50ZXI8UVBhaW50ZXJQYXRoU3Ryb2tlclBy
aXZhdGU+IGRfcHRyOwp9OwoKaW5saW5lIHZvaWQgUVBhaW50ZXJQYXRoOjptb3ZlVG8ocXJlYWwg
eCwgcXJlYWwgeSkKewogICAgbW92ZVRvKFFQb2ludEYoeCwgeSkpOwp9CgppbmxpbmUgdm9pZCBR
UGFpbnRlclBhdGg6OmxpbmVUbyhxcmVhbCB4LCBxcmVhbCB5KQp7CiAgICBsaW5lVG8oUVBvaW50
Rih4LCB5KSk7Cn0KCmlubGluZSB2b2lkIFFQYWludGVyUGF0aDo6YXJjVG8ocXJlYWwgeCwgcXJl
YWwgeSwgcXJlYWwgdywgcXJlYWwgaCwgcXJlYWwgc3RhcnRBbmdsZSwgcXJlYWwgYXJjTGVuZ3Ro
KQp7CiAgICBhcmNUbyhRUmVjdEYoeCwgeSwgdywgaCksIHN0YXJ0QW5nbGUsIGFyY0xlbmd0aCk7
Cn0KCmlubGluZSB2b2lkIFFQYWludGVyUGF0aDo6YXJjTW92ZVRvKHFyZWFsIHgsIHFyZWFsIHks
IHFyZWFsIHcsIHFyZWFsIGgsIHFyZWFsIGFuZ2xlKQp7CiAgICBhcmNNb3ZlVG8oUVJlY3RGKHgs
IHksIHcsIGgpLCBhbmdsZSk7Cn0KCmlubGluZSB2b2lkIFFQYWludGVyUGF0aDo6Y3ViaWNUbyhx
cmVhbCBjdHJsUHQxeCwgcXJlYWwgY3RybFB0MXksIHFyZWFsIGN0cmxQdDJ4LCBxcmVhbCBjdHJs
UHQyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxcmVhbCBlbmRQdHgsIHFy
ZWFsIGVuZFB0eSkKewogICAgY3ViaWNUbyhRUG9pbnRGKGN0cmxQdDF4LCBjdHJsUHQxeSksIFFQ
b2ludEYoY3RybFB0MngsIGN0cmxQdDJ5KSwKICAgICAgICAgICAgUVBvaW50RihlbmRQdHgsIGVu
ZFB0eSkpOwp9CgppbmxpbmUgdm9pZCBRUGFpbnRlclBhdGg6OnF1YWRUbyhxcmVhbCBjdHJsUHR4
LCBxcmVhbCBjdHJsUHR5LCBxcmVhbCBlbmRQdHgsIHFyZWFsIGVuZFB0eSkKewogICAgcXVhZFRv
KFFQb2ludEYoY3RybFB0eCwgY3RybFB0eSksIFFQb2ludEYoZW5kUHR4LCBlbmRQdHkpKTsKfQoK
aW5saW5lIHZvaWQgUVBhaW50ZXJQYXRoOjphZGRFbGxpcHNlKHFyZWFsIHgsIHFyZWFsIHksIHFy
ZWFsIHcsIHFyZWFsIGgpCnsKICAgIGFkZEVsbGlwc2UoUVJlY3RGKHgsIHksIHcsIGgpKTsKfQoK
aW5saW5lIHZvaWQgUVBhaW50ZXJQYXRoOjphZGRFbGxpcHNlKGNvbnN0IFFQb2ludEYgJmNlbnRl
ciwgcXJlYWwgcngsIHFyZWFsIHJ5KQp7CiAgICBhZGRFbGxpcHNlKFFSZWN0RihjZW50ZXIueCgp
IC0gcngsIGNlbnRlci55KCkgLSByeSwgMiAqIHJ4LCAyICogcnkpKTsKfQoKaW5saW5lIHZvaWQg
UVBhaW50ZXJQYXRoOjphZGRSZWN0KHFyZWFsIHgsIHFyZWFsIHksIHFyZWFsIHcsIHFyZWFsIGgp
CnsKICAgIGFkZFJlY3QoUVJlY3RGKHgsIHksIHcsIGgpKTsKfQoKaW5saW5lIHZvaWQgUVBhaW50
ZXJQYXRoOjphZGRSb3VuZGVkUmVjdChxcmVhbCB4LCBxcmVhbCB5LCBxcmVhbCB3LCBxcmVhbCBo
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFyZWFsIHhSYWRpdXMs
IHFyZWFsIHlSYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UXQ6OlNpemVNb2RlIG1vZGUpCnsKICAgIGFkZFJvdW5kZWRSZWN0KFFSZWN0Rih4LCB5LCB3LCBo
KSwgeFJhZGl1cywgeVJhZGl1cywgbW9kZSk7Cn0KCmlubGluZSB2b2lkIFFQYWludGVyUGF0aDo6
YWRkUm91bmRSZWN0KHFyZWFsIHgsIHFyZWFsIHksIHFyZWFsIHcsIHFyZWFsIGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4Um5kLCBpbnQgeVJuZCkKewogICAg
YWRkUm91bmRSZWN0KFFSZWN0Rih4LCB5LCB3LCBoKSwgeFJuZCwgeVJuZCk7Cn0KCmlubGluZSB2
b2lkIFFQYWludGVyUGF0aDo6YWRkUm91bmRSZWN0KGNvbnN0IFFSZWN0RiAmcmVjdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJvdW5kbmVzcykKewogICAgaW50
IHhSbmQgPSByb3VuZG5lc3M7CiAgICBpbnQgeVJuZCA9IHJvdW5kbmVzczsKICAgIGlmIChyZWN0
LndpZHRoKCkgPiByZWN0LmhlaWdodCgpKQogICAgICAgIHhSbmQgPSBpbnQocm91bmRuZXNzICog
cmVjdC5oZWlnaHQoKS9yZWN0LndpZHRoKCkpOwogICAgZWxzZQogICAgICAgIHlSbmQgPSBpbnQo
cm91bmRuZXNzICogcmVjdC53aWR0aCgpL3JlY3QuaGVpZ2h0KCkpOwogICAgYWRkUm91bmRSZWN0
KHJlY3QsIHhSbmQsIHlSbmQpOwp9CgppbmxpbmUgdm9pZCBRUGFpbnRlclBhdGg6OmFkZFJvdW5k
UmVjdChxcmVhbCB4LCBxcmVhbCB5LCBxcmVhbCB3LCBxcmVhbCBoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm91bmRuZXNzKQp7CiAgICBhZGRSb3VuZFJlY3Qo
UVJlY3RGKHgsIHksIHcsIGgpLCByb3VuZG5lc3MpOwp9CgppbmxpbmUgdm9pZCBRUGFpbnRlclBh
dGg6OmFkZFRleHQocXJlYWwgeCwgcXJlYWwgeSwgY29uc3QgUUZvbnQgJmYsIGNvbnN0IFFTdHJp
bmcgJnRleHQpCnsKICAgIGFkZFRleHQoUVBvaW50Rih4LCB5KSwgZiwgdGV4dCk7Cn0KCmlubGlu
ZSB2b2lkIFFQYWludGVyUGF0aDo6dHJhbnNsYXRlKGNvbnN0IFFQb2ludEYgJm9mZnNldCkKeyB0
cmFuc2xhdGUob2Zmc2V0LngoKSwgb2Zmc2V0LnkoKSk7IH0KCmlubGluZSBRUGFpbnRlclBhdGgg
UVBhaW50ZXJQYXRoOjp0cmFuc2xhdGVkKGNvbnN0IFFQb2ludEYgJm9mZnNldCkgY29uc3QKeyBy
ZXR1cm4gdHJhbnNsYXRlZChvZmZzZXQueCgpLCBvZmZzZXQueSgpKTsgfQoKaW5saW5lIGJvb2wg
UVBhaW50ZXJQYXRoOjppc0VtcHR5KCkgY29uc3QKewogICAgcmV0dXJuICFkX3B0ciB8fCAoZF9w
dHItPmVsZW1lbnRzLnNpemUoKSA9PSAxICYmIGRfcHRyLT5lbGVtZW50cy5maXJzdCgpLnR5cGUg
PT0gTW92ZVRvRWxlbWVudCk7Cn0KCmlubGluZSBpbnQgUVBhaW50ZXJQYXRoOjplbGVtZW50Q291
bnQoKSBjb25zdAp7CiAgICByZXR1cm4gZF9wdHIgPyBkX3B0ci0+ZWxlbWVudHMuc2l6ZSgpIDog
MDsKfQoKaW5saW5lIGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCAmUVBhaW50ZXJQYXRoOjpl
bGVtZW50QXQoaW50IGkpIGNvbnN0CnsKICAgICgoIShkX3B0cikpID8gcXRfYXNzZXJ0KCJkX3B0
ciIsIi9vcHQvbG9jYWwvaW5jbHVkZS9RdEd1aS9xcGFpbnRlcnBhdGguaCIsMzk5KSA6IHF0X25v
b3AoKSk7CiAgICAoKCEoaSA+PSAwICYmIGkgPCBlbGVtZW50Q291bnQoKSkpID8gcXRfYXNzZXJ0
KCJpID49IDAgJiYgaSA8IGVsZW1lbnRDb3VudCgpIiwiL29wdC9sb2NhbC9pbmNsdWRlL1F0R3Vp
L3FwYWludGVycGF0aC5oIiw0MDApIDogcXRfbm9vcCgpKTsKICAgIHJldHVybiBkX3B0ci0+ZWxl
bWVudHMuYXQoaSk7Cn0KCmlubGluZSB2b2lkIFFQYWludGVyUGF0aDo6c2V0RWxlbWVudFBvc2l0
aW9uQXQoaW50IGksIHFyZWFsIHgsIHFyZWFsIHkpCnsKICAgICgoIShkX3B0cikpID8gcXRfYXNz
ZXJ0KCJkX3B0ciIsIi9vcHQvbG9jYWwvaW5jbHVkZS9RdEd1aS9xcGFpbnRlcnBhdGguaCIsNDA2
KSA6IHF0X25vb3AoKSk7CiAgICAoKCEoaSA+PSAwICYmIGkgPCBlbGVtZW50Q291bnQoKSkpID8g
cXRfYXNzZXJ0KCJpID49IDAgJiYgaSA8IGVsZW1lbnRDb3VudCgpIiwiL29wdC9sb2NhbC9pbmNs
dWRlL1F0R3VpL3FwYWludGVycGF0aC5oIiw0MDcpIDogcXRfbm9vcCgpKTsKICAgIGRldGFjaCgp
OwogICAgUVBhaW50ZXJQYXRoOjpFbGVtZW50ICZlID0gZF9wdHItPmVsZW1lbnRzW2ldOwogICAg
ZS54ID0geDsKICAgIGUueSA9IHk7Cn0KCgppbmxpbmUgdm9pZCBRUGFpbnRlclBhdGg6OmRldGFj
aCgpCnsKICAgIGlmIChkX3B0ci0+cmVmICE9IDEpCiAgICAgICAgZGV0YWNoX2hlbHBlcigpOwog
ICAgc2V0RGlydHkodHJ1ZSk7Cn0KCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0
IikpKSBRRGVidWcgb3BlcmF0b3I8PChRRGVidWcsIGNvbnN0IFFQYWludGVyUGF0aCAmKTsKCgoK
CgojIDQ2ICIvb3B0L2xvY2FsL2luY2x1ZGUvUXRHdWkvcXRyYW5zZm9ybS5oIiAyCiMgNTcgIi9v
cHQvbG9jYWwvaW5jbHVkZS9RdEd1aS9xdHJhbnNmb3JtLmgiCgoKCgp0eXBlZGVmIFF0VmFsaWRM
aWNlbnNlRm9yR3VpTW9kdWxlIFF0R3VpTW9kdWxlOwoKY2xhc3MgUVZhcmlhbnQ7CgpjbGFzcyBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBRVHJhbnNmb3JtCnsKcHVibGlj
OgogICAgZW51bSBUcmFuc2Zvcm1hdGlvblR5cGUgewogICAgICAgIFR4Tm9uZSA9IDB4MDAsCiAg
ICAgICAgVHhUcmFuc2xhdGUgPSAweDAxLAogICAgICAgIFR4U2NhbGUgPSAweDAyLAogICAgICAg
IFR4Um90YXRlID0gMHgwNCwKICAgICAgICBUeFNoZWFyID0gMHgwOCwKICAgICAgICBUeFByb2pl
Y3QgPSAweDEwCiAgICB9OwoKICAgIGlubGluZSBleHBsaWNpdCBRVHJhbnNmb3JtKFF0OjpJbml0
aWFsaXphdGlvbikgOiBhZmZpbmUoUXQ6OlVuaW5pdGlhbGl6ZWQpIHt9CiAgICBRVHJhbnNmb3Jt
KCk7CiAgICBRVHJhbnNmb3JtKHFyZWFsIGgxMSwgcXJlYWwgaDEyLCBxcmVhbCBoMTMsCiAgICAg
ICAgICAgICAgIHFyZWFsIGgyMSwgcXJlYWwgaDIyLCBxcmVhbCBoMjMsCiAgICAgICAgICAgICAg
IHFyZWFsIGgzMSwgcXJlYWwgaDMyLCBxcmVhbCBoMzMgPSAxLjApOwogICAgUVRyYW5zZm9ybShx
cmVhbCBoMTEsIHFyZWFsIGgxMiwgcXJlYWwgaDIxLAogICAgICAgICAgICAgICBxcmVhbCBoMjIs
IHFyZWFsIGR4LCBxcmVhbCBkeSk7CiAgICBleHBsaWNpdCBRVHJhbnNmb3JtKGNvbnN0IFFNYXRy
aXggJm10eCk7CgogICAgYm9vbCBpc0FmZmluZSgpIGNvbnN0OwogICAgYm9vbCBpc0lkZW50aXR5
KCkgY29uc3Q7CiAgICBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0OwogICAgYm9vbCBpc1NjYWxp
bmcoKSBjb25zdDsKICAgIGJvb2wgaXNSb3RhdGluZygpIGNvbnN0OwogICAgYm9vbCBpc1RyYW5z
bGF0aW5nKCkgY29uc3Q7CgogICAgVHJhbnNmb3JtYXRpb25UeXBlIHR5cGUoKSBjb25zdDsKCiAg
ICBpbmxpbmUgcXJlYWwgZGV0ZXJtaW5hbnQoKSBjb25zdDsKICAgIHFyZWFsIGRldCgpIGNvbnN0
OwoKICAgIHFyZWFsIG0xMSgpIGNvbnN0OwogICAgcXJlYWwgbTEyKCkgY29uc3Q7CiAgICBxcmVh
bCBtMTMoKSBjb25zdDsKICAgIHFyZWFsIG0yMSgpIGNvbnN0OwogICAgcXJlYWwgbTIyKCkgY29u
c3Q7CiAgICBxcmVhbCBtMjMoKSBjb25zdDsKICAgIHFyZWFsIG0zMSgpIGNvbnN0OwogICAgcXJl
YWwgbTMyKCkgY29uc3Q7CiAgICBxcmVhbCBtMzMoKSBjb25zdDsKICAgIHFyZWFsIGR4KCkgY29u
c3Q7CiAgICBxcmVhbCBkeSgpIGNvbnN0OwoKICAgIHZvaWQgc2V0TWF0cml4KHFyZWFsIG0xMSwg
cXJlYWwgbTEyLCBxcmVhbCBtMTMsCiAgICAgICAgICAgICAgICAgICBxcmVhbCBtMjEsIHFyZWFs
IG0yMiwgcXJlYWwgbTIzLAogICAgICAgICAgICAgICAgICAgcXJlYWwgbTMxLCBxcmVhbCBtMzIs
IHFyZWFsIG0zMyk7CgogICAgUVRyYW5zZm9ybSBpbnZlcnRlZChib29sICppbnZlcnRpYmxlID0g
MCkgY29uc3Q7CiAgICBRVHJhbnNmb3JtIGFkam9pbnQoKSBjb25zdDsKICAgIFFUcmFuc2Zvcm0g
dHJhbnNwb3NlZCgpIGNvbnN0OwoKICAgIFFUcmFuc2Zvcm0gJnRyYW5zbGF0ZShxcmVhbCBkeCwg
cXJlYWwgZHkpOwogICAgUVRyYW5zZm9ybSAmc2NhbGUocXJlYWwgc3gsIHFyZWFsIHN5KTsKICAg
IFFUcmFuc2Zvcm0gJnNoZWFyKHFyZWFsIHNoLCBxcmVhbCBzdik7CiAgICBRVHJhbnNmb3JtICZy
b3RhdGUocXJlYWwgYSwgUXQ6OkF4aXMgYXhpcyA9IFF0OjpaQXhpcyk7CiAgICBRVHJhbnNmb3Jt
ICZyb3RhdGVSYWRpYW5zKHFyZWFsIGEsIFF0OjpBeGlzIGF4aXMgPSBRdDo6WkF4aXMpOwoKICAg
IHN0YXRpYyBib29sIHNxdWFyZVRvUXVhZChjb25zdCBRUG9seWdvbkYgJnNxdWFyZSwgUVRyYW5z
Zm9ybSAmcmVzdWx0KTsKICAgIHN0YXRpYyBib29sIHF1YWRUb1NxdWFyZShjb25zdCBRUG9seWdv
bkYgJnF1YWQsIFFUcmFuc2Zvcm0gJnJlc3VsdCk7CiAgICBzdGF0aWMgYm9vbCBxdWFkVG9RdWFk
KGNvbnN0IFFQb2x5Z29uRiAmb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBR
UG9seWdvbkYgJnR3bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgUVRyYW5zZm9ybSAmcmVz
dWx0KTsKCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUVRyYW5zZm9ybSAmKSBjb25zdDsKICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBRVHJhbnNmb3JtICYpIGNvbnN0OwoKICAgIFFUcmFuc2Zv
cm0gJm9wZXJhdG9yKj0oY29uc3QgUVRyYW5zZm9ybSAmKTsKICAgIFFUcmFuc2Zvcm0gb3BlcmF0
b3IqKGNvbnN0IFFUcmFuc2Zvcm0gJm8pIGNvbnN0OwoKICAgIFFUcmFuc2Zvcm0gJm9wZXJhdG9y
PShjb25zdCBRVHJhbnNmb3JtICYpOwoKICAgIG9wZXJhdG9yIFFWYXJpYW50KCkgY29uc3Q7Cgog
ICAgdm9pZCByZXNldCgpOwogICAgUVBvaW50IG1hcChjb25zdCBRUG9pbnQgJnApIGNvbnN0Owog
ICAgUVBvaW50RiBtYXAoY29uc3QgUVBvaW50RiAmcCkgY29uc3Q7CiAgICBRTGluZSBtYXAoY29u
c3QgUUxpbmUgJmwpIGNvbnN0OwogICAgUUxpbmVGIG1hcChjb25zdCBRTGluZUYgJmwpIGNvbnN0
OwogICAgUVBvbHlnb25GIG1hcChjb25zdCBRUG9seWdvbkYgJmEpIGNvbnN0OwogICAgUVBvbHln
b24gbWFwKGNvbnN0IFFQb2x5Z29uICZhKSBjb25zdDsKICAgIFFSZWdpb24gbWFwKGNvbnN0IFFS
ZWdpb24gJnIpIGNvbnN0OwogICAgUVBhaW50ZXJQYXRoIG1hcChjb25zdCBRUGFpbnRlclBhdGgg
JnApIGNvbnN0OwogICAgUVBvbHlnb24gbWFwVG9Qb2x5Z29uKGNvbnN0IFFSZWN0ICZyKSBjb25z
dDsKICAgIFFSZWN0IG1hcFJlY3QoY29uc3QgUVJlY3QgJikgY29uc3Q7CiAgICBRUmVjdEYgbWFw
UmVjdChjb25zdCBRUmVjdEYgJikgY29uc3Q7CiAgICB2b2lkIG1hcChpbnQgeCwgaW50IHksIGlu
dCAqdHgsIGludCAqdHkpIGNvbnN0OwogICAgdm9pZCBtYXAocXJlYWwgeCwgcXJlYWwgeSwgcXJl
YWwgKnR4LCBxcmVhbCAqdHkpIGNvbnN0OwoKICAgIGNvbnN0IFFNYXRyaXggJnRvQWZmaW5lKCkg
Y29uc3Q7CgogICAgUVRyYW5zZm9ybSAmb3BlcmF0b3IqPShxcmVhbCBkaXYpOwogICAgUVRyYW5z
Zm9ybSAmb3BlcmF0b3IvPShxcmVhbCBkaXYpOwogICAgUVRyYW5zZm9ybSAmb3BlcmF0b3IrPShx
cmVhbCBkaXYpOwogICAgUVRyYW5zZm9ybSAmb3BlcmF0b3ItPShxcmVhbCBkaXYpOwoKICAgIHN0
YXRpYyBRVHJhbnNmb3JtIGZyb21UcmFuc2xhdGUocXJlYWwgZHgsIHFyZWFsIGR5KTsKICAgIHN0
YXRpYyBRVHJhbnNmb3JtIGZyb21TY2FsZShxcmVhbCBkeCwgcXJlYWwgZHkpOwoKcHJpdmF0ZToK
ICAgIGlubGluZSBRVHJhbnNmb3JtKHFyZWFsIGgxMSwgcXJlYWwgaDEyLCBxcmVhbCBoMTMsCiAg
ICAgICAgICAgICAgICAgICAgICBxcmVhbCBoMjEsIHFyZWFsIGgyMiwgcXJlYWwgaDIzLAogICAg
ICAgICAgICAgICAgICAgICAgcXJlYWwgaDMxLCBxcmVhbCBoMzIsIHFyZWFsIGgzMywgYm9vbCkK
ICAgICAgICA6IGFmZmluZShoMTEsIGgxMiwgaDIxLCBoMjIsIGgzMSwgaDMyLCB0cnVlKQogICAg
ICAgICwgbV8xMyhoMTMpLCBtXzIzKGgyMyksIG1fMzMoaDMzKQogICAgICAgICwgbV90eXBlKFR4
Tm9uZSkKICAgICAgICAsIG1fZGlydHkoVHhQcm9qZWN0KSB7fQogICAgaW5saW5lIFFUcmFuc2Zv
cm0oYm9vbCkKICAgICAgICA6IGFmZmluZSh0cnVlKQogICAgICAgICwgbV8xMygwKSwgbV8yMygw
KSwgbV8zMygxKQogICAgICAgICwgbV90eXBlKFR4Tm9uZSkKICAgICAgICAsIG1fZGlydHkoVHhO
b25lKSB7fQogICAgaW5saW5lIFRyYW5zZm9ybWF0aW9uVHlwZSBpbmxpbmVfdHlwZSgpIGNvbnN0
OwogICAgUU1hdHJpeCBhZmZpbmU7CiAgICBxcmVhbCBtXzEzOwogICAgcXJlYWwgbV8yMzsKICAg
IHFyZWFsIG1fMzM7CgogICAgbXV0YWJsZSB1aW50IG1fdHlwZSA6IDU7CiAgICBtdXRhYmxlIHVp
bnQgbV9kaXJ0eSA6IDU7CgogICAgY2xhc3MgUHJpdmF0ZTsKICAgIFByaXZhdGUgKmQ7Cn07CnRl
bXBsYXRlIDw+IGNsYXNzIFFUeXBlSW5mbzxRVHJhbnNmb3JtID4geyBwdWJsaWM6IGVudW0geyBp
c0NvbXBsZXggPSAoKChRX01PVkFCTEVfVFlQRSkgJiBRX1BSSU1JVElWRV9UWVBFKSA9PSAwKSwg
aXNTdGF0aWMgPSAoKChRX01PVkFCTEVfVFlQRSkgJiAoUV9NT1ZBQkxFX1RZUEUgfCBRX1BSSU1J
VElWRV9UWVBFKSkgPT0gMCksIGlzTGFyZ2UgPSAoc2l6ZW9mKFFUcmFuc2Zvcm0pPnNpemVvZih2
b2lkKikpLCBpc1BvaW50ZXIgPSBmYWxzZSwgaXNEdW1teSA9ICgoKFFfTU9WQUJMRV9UWVBFKSAm
IFFfRFVNTVlfVFlQRSkgIT0gMCkgfTsgc3RhdGljIGlubGluZSBjb25zdCBjaGFyICpuYW1lKCkg
eyByZXR1cm4gIlFUcmFuc2Zvcm0iOyB9IH07CgoKaW5saW5lIFFUcmFuc2Zvcm06OlRyYW5zZm9y
bWF0aW9uVHlwZSBRVHJhbnNmb3JtOjppbmxpbmVfdHlwZSgpIGNvbnN0CnsKICAgIGlmIChtX2Rp
cnR5ID09IFR4Tm9uZSkKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHJhbnNmb3JtYXRpb25U
eXBlPihtX3R5cGUpOwogICAgcmV0dXJuIHR5cGUoKTsKfQoKaW5saW5lIGJvb2wgUVRyYW5zZm9y
bTo6aXNBZmZpbmUoKSBjb25zdAp7CiAgICByZXR1cm4gaW5saW5lX3R5cGUoKSA8IFR4UHJvamVj
dDsKfQppbmxpbmUgYm9vbCBRVHJhbnNmb3JtOjppc0lkZW50aXR5KCkgY29uc3QKewogICAgcmV0
dXJuIGlubGluZV90eXBlKCkgPT0gVHhOb25lOwp9CgppbmxpbmUgYm9vbCBRVHJhbnNmb3JtOjpp
c0ludmVydGlibGUoKSBjb25zdAp7CiAgICByZXR1cm4gIXFGdXp6eUlzTnVsbChkZXRlcm1pbmFu
dCgpKTsKfQoKaW5saW5lIGJvb2wgUVRyYW5zZm9ybTo6aXNTY2FsaW5nKCkgY29uc3QKewogICAg
cmV0dXJuIHR5cGUoKSA+PSBUeFNjYWxlOwp9CmlubGluZSBib29sIFFUcmFuc2Zvcm06OmlzUm90
YXRpbmcoKSBjb25zdAp7CiAgICByZXR1cm4gaW5saW5lX3R5cGUoKSA+PSBUeFJvdGF0ZTsKfQoK
aW5saW5lIGJvb2wgUVRyYW5zZm9ybTo6aXNUcmFuc2xhdGluZygpIGNvbnN0CnsKICAgIHJldHVy
biBpbmxpbmVfdHlwZSgpID49IFR4VHJhbnNsYXRlOwp9CgppbmxpbmUgcXJlYWwgUVRyYW5zZm9y
bTo6ZGV0ZXJtaW5hbnQoKSBjb25zdAp7CiAgICByZXR1cm4gYWZmaW5lLl9tMTEqKG1fMzMqYWZm
aW5lLl9tMjItYWZmaW5lLl9keSptXzIzKSAtCiAgICAgICAgYWZmaW5lLl9tMjEqKG1fMzMqYWZm
aW5lLl9tMTItYWZmaW5lLl9keSptXzEzKSthZmZpbmUuX2R4KihtXzIzKmFmZmluZS5fbTEyLWFm
ZmluZS5fbTIyKm1fMTMpOwp9CmlubGluZSBxcmVhbCBRVHJhbnNmb3JtOjpkZXQoKSBjb25zdAp7
CiAgICByZXR1cm4gZGV0ZXJtaW5hbnQoKTsKfQppbmxpbmUgcXJlYWwgUVRyYW5zZm9ybTo6bTEx
KCkgY29uc3QKewogICAgcmV0dXJuIGFmZmluZS5fbTExOwp9CmlubGluZSBxcmVhbCBRVHJhbnNm
b3JtOjptMTIoKSBjb25zdAp7CiAgICByZXR1cm4gYWZmaW5lLl9tMTI7Cn0KaW5saW5lIHFyZWFs
IFFUcmFuc2Zvcm06Om0xMygpIGNvbnN0CnsKICAgIHJldHVybiBtXzEzOwp9CmlubGluZSBxcmVh
bCBRVHJhbnNmb3JtOjptMjEoKSBjb25zdAp7CiAgICByZXR1cm4gYWZmaW5lLl9tMjE7Cn0KaW5s
aW5lIHFyZWFsIFFUcmFuc2Zvcm06Om0yMigpIGNvbnN0CnsKICAgIHJldHVybiBhZmZpbmUuX20y
MjsKfQppbmxpbmUgcXJlYWwgUVRyYW5zZm9ybTo6bTIzKCkgY29uc3QKewogICAgcmV0dXJuIG1f
MjM7Cn0KaW5saW5lIHFyZWFsIFFUcmFuc2Zvcm06Om0zMSgpIGNvbnN0CnsKICAgIHJldHVybiBh
ZmZpbmUuX2R4Owp9CmlubGluZSBxcmVhbCBRVHJhbnNmb3JtOjptMzIoKSBjb25zdAp7CiAgICBy
ZXR1cm4gYWZmaW5lLl9keTsKfQppbmxpbmUgcXJlYWwgUVRyYW5zZm9ybTo6bTMzKCkgY29uc3QK
ewogICAgcmV0dXJuIG1fMzM7Cn0KaW5saW5lIHFyZWFsIFFUcmFuc2Zvcm06OmR4KCkgY29uc3QK
ewogICAgcmV0dXJuIGFmZmluZS5fZHg7Cn0KaW5saW5lIHFyZWFsIFFUcmFuc2Zvcm06OmR5KCkg
Y29uc3QKewogICAgcmV0dXJuIGFmZmluZS5fZHk7Cn0KCmlubGluZSBRVHJhbnNmb3JtICZRVHJh
bnNmb3JtOjpvcGVyYXRvcio9KHFyZWFsIG51bSkKewogICAgaWYgKG51bSA9PSAxLikKICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICBhZmZpbmUuX20xMSAqPSBudW07CiAgICBhZmZpbmUuX20xMiAq
PSBudW07CiAgICBtXzEzICo9IG51bTsKICAgIGFmZmluZS5fbTIxICo9IG51bTsKICAgIGFmZmlu
ZS5fbTIyICo9IG51bTsKICAgIG1fMjMgKj0gbnVtOwogICAgYWZmaW5lLl9keCAqPSBudW07CiAg
ICBhZmZpbmUuX2R5ICo9IG51bTsKICAgIG1fMzMgKj0gbnVtOwogICAgaWYgKG1fZGlydHkgPCBU
eFNjYWxlKQogICAgICAgIG1fZGlydHkgPSBUeFNjYWxlOwogICAgcmV0dXJuICp0aGlzOwp9Cmlu
bGluZSBRVHJhbnNmb3JtICZRVHJhbnNmb3JtOjpvcGVyYXRvci89KHFyZWFsIGRpdikKewogICAg
aWYgKGRpdiA9PSAwKQogICAgICAgIHJldHVybiAqdGhpczsKICAgIGRpdiA9IDEvZGl2OwogICAg
cmV0dXJuIG9wZXJhdG9yKj0oZGl2KTsKfQppbmxpbmUgUVRyYW5zZm9ybSAmUVRyYW5zZm9ybTo6
b3BlcmF0b3IrPShxcmVhbCBudW0pCnsKICAgIGlmIChudW0gPT0gMCkKICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICBhZmZpbmUuX20xMSArPSBudW07CiAgICBhZmZpbmUuX20xMiArPSBudW07CiAg
ICBtXzEzICs9IG51bTsKICAgIGFmZmluZS5fbTIxICs9IG51bTsKICAgIGFmZmluZS5fbTIyICs9
IG51bTsKICAgIG1fMjMgKz0gbnVtOwogICAgYWZmaW5lLl9keCArPSBudW07CiAgICBhZmZpbmUu
X2R5ICs9IG51bTsKICAgIG1fMzMgKz0gbnVtOwogICAgbV9kaXJ0eSA9IFR4UHJvamVjdDsKICAg
IHJldHVybiAqdGhpczsKfQppbmxpbmUgUVRyYW5zZm9ybSAmUVRyYW5zZm9ybTo6b3BlcmF0b3It
PShxcmVhbCBudW0pCnsKICAgIGlmIChudW0gPT0gMCkKICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICBhZmZpbmUuX20xMSAtPSBudW07CiAgICBhZmZpbmUuX20xMiAtPSBudW07CiAgICBtXzEzIC09
IG51bTsKICAgIGFmZmluZS5fbTIxIC09IG51bTsKICAgIGFmZmluZS5fbTIyIC09IG51bTsKICAg
IG1fMjMgLT0gbnVtOwogICAgYWZmaW5lLl9keCAtPSBudW07CiAgICBhZmZpbmUuX2R5IC09IG51
bTsKICAgIG1fMzMgLT0gbnVtOwogICAgbV9kaXJ0eSA9IFR4UHJvamVjdDsKICAgIHJldHVybiAq
dGhpczsKfQoKaW5saW5lIGJvb2wgcUZ1enp5Q29tcGFyZShjb25zdCBRVHJhbnNmb3JtJiB0MSwg
Y29uc3QgUVRyYW5zZm9ybSYgdDIpCnsKICAgIHJldHVybiBxRnV6enlDb21wYXJlKHQxLm0xMSgp
LCB0Mi5tMTEoKSkKICAgICAgICAmJiBxRnV6enlDb21wYXJlKHQxLm0xMigpLCB0Mi5tMTIoKSkK
ICAgICAgICAmJiBxRnV6enlDb21wYXJlKHQxLm0xMygpLCB0Mi5tMTMoKSkKICAgICAgICAmJiBx
RnV6enlDb21wYXJlKHQxLm0yMSgpLCB0Mi5tMjEoKSkKICAgICAgICAmJiBxRnV6enlDb21wYXJl
KHQxLm0yMigpLCB0Mi5tMjIoKSkKICAgICAgICAmJiBxRnV6enlDb21wYXJlKHQxLm0yMygpLCB0
Mi5tMjMoKSkKICAgICAgICAmJiBxRnV6enlDb21wYXJlKHQxLm0zMSgpLCB0Mi5tMzEoKSkKICAg
ICAgICAmJiBxRnV6enlDb21wYXJlKHQxLm0zMigpLCB0Mi5tMzIoKSkKICAgICAgICAmJiBxRnV6
enlDb21wYXJlKHQxLm0zMygpLCB0Mi5tMzMoKSk7Cn0KCgoKCl9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFtICYs
IGNvbnN0IFFUcmFuc2Zvcm0gJik7Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICYsIFFUcmFuc2Zvcm0gJik7
CgoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFFEZWJ1ZyBvcGVyYXRv
cjw8KFFEZWJ1ZywgY29uc3QgUVRyYW5zZm9ybSAmKTsKCgoKCl9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpIGlubGluZSBRUG9pbnQgb3BlcmF0b3IqKGNvbnN0IFFQb2ludCAm
cCwgY29uc3QgUVRyYW5zZm9ybSAmbSkKeyByZXR1cm4gbS5tYXAocCk7IH0KX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW5saW5lIFFQb2ludEYgb3BlcmF0b3IqKGNvbnN0
IFFQb2ludEYgJnAsIGNvbnN0IFFUcmFuc2Zvcm0gJm0pCnsgcmV0dXJuIG0ubWFwKHApOyB9Cl9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGlubGluZSBRTGluZUYgb3BlcmF0
b3IqKGNvbnN0IFFMaW5lRiAmbCwgY29uc3QgUVRyYW5zZm9ybSAmbSkKeyByZXR1cm4gbS5tYXAo
bCk7IH0KX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW5saW5lIFFMaW5l
IG9wZXJhdG9yKihjb25zdCBRTGluZSAmbCwgY29uc3QgUVRyYW5zZm9ybSAmbSkKeyByZXR1cm4g
bS5tYXAobCk7IH0KX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW5saW5l
IFFQb2x5Z29uIG9wZXJhdG9yICooY29uc3QgUVBvbHlnb24gJmEsIGNvbnN0IFFUcmFuc2Zvcm0g
Jm0pCnsgcmV0dXJuIG0ubWFwKGEpOyB9Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIGlubGluZSBRUG9seWdvbkYgb3BlcmF0b3IgKihjb25zdCBRUG9seWdvbkYgJmEsIGNv
bnN0IFFUcmFuc2Zvcm0gJm0pCnsgcmV0dXJuIG0ubWFwKGEpOyB9Cl9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpIGlubGluZSBRUmVnaW9uIG9wZXJhdG9yICooY29uc3QgUVJl
Z2lvbiAmciwgY29uc3QgUVRyYW5zZm9ybSAmbSkKeyByZXR1cm4gbS5tYXAocik7IH0KX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW5saW5lIFFQYWludGVyUGF0aCBvcGVy
YXRvciAqKGNvbnN0IFFQYWludGVyUGF0aCAmcCwgY29uc3QgUVRyYW5zZm9ybSAmbSkKeyByZXR1
cm4gbS5tYXAocCk7IH0KCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGlu
bGluZSBRVHJhbnNmb3JtIG9wZXJhdG9yICooY29uc3QgUVRyYW5zZm9ybSAmYSwgcXJlYWwgbikK
eyBRVHJhbnNmb3JtIHQoYSk7IHQgKj0gbjsgcmV0dXJuIHQ7IH0KX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSkgaW5saW5lIFFUcmFuc2Zvcm0gb3BlcmF0b3IgLyhjb25zdCBR
VHJhbnNmb3JtICZhLCBxcmVhbCBuKQp7IFFUcmFuc2Zvcm0gdChhKTsgdCAvPSBuOyByZXR1cm4g
dDsgfQpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBpbmxpbmUgUVRyYW5z
Zm9ybSBvcGVyYXRvciArKGNvbnN0IFFUcmFuc2Zvcm0gJmEsIHFyZWFsIG4pCnsgUVRyYW5zZm9y
bSB0KGEpOyB0ICs9IG47IHJldHVybiB0OyB9Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIGlubGluZSBRVHJhbnNmb3JtIG9wZXJhdG9yIC0oY29uc3QgUVRyYW5zZm9ybSAm
YSwgcXJlYWwgbikKeyBRVHJhbnNmb3JtIHQoYSk7IHQgLT0gbjsgcmV0dXJuIHQ7IH0KCgoKCiMg
MSAiL29wdC9sb2NhbC9pbmNsdWRlL1F0R3VpL1FUcmFuc2Zvcm0iIDIKIyA0NSAiLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIiAyCiMgNTkgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKbmFtZXNwYWNlIFdlYkNvcmUg
ewoKY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwpjbGFzcyBJbnRSZWN0OwpjbGFzcyBGbG9hdFBvaW50
M0Q7CmNsYXNzIEZsb2F0UmVjdDsKY2xhc3MgRmxvYXRRdWFkOwoKY2xhc3MgVHJhbnNmb3JtYXRp
b25NYXRyaXggewogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyBy
ZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6
V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxs
b2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IHJldHVybiBwOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlk
YXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3KTsgOjpXVEY6OmZh
c3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHZvaWQqIHAg
PSA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRl
TWFsbG9jKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXdBcnJheSk7IHJldHVy
biBwOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdE1hbGxv
Y01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXdB
cnJheSk7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBUaGlzSXNI
ZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKcHVibGljOgogICAgdHlwZWRlZiBk
b3VibGUgTWF0cml4NFs0XVs0XTsKCiAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpIHsgbWFrZUlk
ZW50aXR5KCk7IH0KICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0KSB7ICp0aGlzID0gdDsgfQogICAgVHJhbnNmb3JtYXRpb25NYXRyaXgoZG91Ymxl
IGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZikgeyBz
ZXRNYXRyaXgoYSwgYiwgYywgZCwgZSwgZik7IH0KICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KGRv
dWJsZSBtMTEsIGRvdWJsZSBtMTIsIGRvdWJsZSBtMTMsIGRvdWJsZSBtMTQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgbTIxLCBkb3VibGUgbTIyLCBkb3VibGUgbTIzLCBkb3VibGUg
bTI0LAogICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG0zMSwgZG91YmxlIG0zMiwgZG91
YmxlIG0zMywgZG91YmxlIG0zNCwKICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBtNDEs
IGRvdWJsZSBtNDIsIGRvdWJsZSBtNDMsIGRvdWJsZSBtNDQpCiAgICB7CiAgICAgICAgc2V0TWF0
cml4KG0xMSwgbTEyLCBtMTMsIG0xNCwgbTIxLCBtMjIsIG0yMywgbTI0LCBtMzEsIG0zMiwgbTMz
LCBtMzQsIG00MSwgbTQyLCBtNDMsIG00NCk7CiAgICB9CgoKICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4KGNvbnN0IFFUcmFuc2Zvcm0mKTsKCgogICAgdm9pZCBzZXRNYXRyaXgoZG91YmxlIGEsIGRv
dWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZikKICAgIHsKICAg
ICAgICBtX21hdHJpeFswXVswXSA9IGE7IG1fbWF0cml4WzBdWzFdID0gYjsgbV9tYXRyaXhbMF1b
Ml0gPSAwOyBtX21hdHJpeFswXVszXSA9IDA7CiAgICAgICAgbV9tYXRyaXhbMV1bMF0gPSBjOyBt
X21hdHJpeFsxXVsxXSA9IGQ7IG1fbWF0cml4WzFdWzJdID0gMDsgbV9tYXRyaXhbMV1bM10gPSAw
OwogICAgICAgIG1fbWF0cml4WzJdWzBdID0gMDsgbV9tYXRyaXhbMl1bMV0gPSAwOyBtX21hdHJp
eFsyXVsyXSA9IDE7IG1fbWF0cml4WzJdWzNdID0gMDsKICAgICAgICBtX21hdHJpeFszXVswXSA9
IGU7IG1fbWF0cml4WzNdWzFdID0gZjsgbV9tYXRyaXhbM11bMl0gPSAwOyBtX21hdHJpeFszXVsz
XSA9IDE7CiAgICB9CgogICAgdm9pZCBzZXRNYXRyaXgoZG91YmxlIG0xMSwgZG91YmxlIG0xMiwg
ZG91YmxlIG0xMywgZG91YmxlIG0xNCwKICAgICAgICAgICAgICAgICAgIGRvdWJsZSBtMjEsIGRv
dWJsZSBtMjIsIGRvdWJsZSBtMjMsIGRvdWJsZSBtMjQsCiAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgbTMxLCBkb3VibGUgbTMyLCBkb3VibGUgbTMzLCBkb3VibGUgbTM0LAogICAgICAgICAgICAg
ICAgICAgZG91YmxlIG00MSwgZG91YmxlIG00MiwgZG91YmxlIG00MywgZG91YmxlIG00NCkKICAg
IHsKICAgICAgICBtX21hdHJpeFswXVswXSA9IG0xMTsgbV9tYXRyaXhbMF1bMV0gPSBtMTI7IG1f
bWF0cml4WzBdWzJdID0gbTEzOyBtX21hdHJpeFswXVszXSA9IG0xNDsKICAgICAgICBtX21hdHJp
eFsxXVswXSA9IG0yMTsgbV9tYXRyaXhbMV1bMV0gPSBtMjI7IG1fbWF0cml4WzFdWzJdID0gbTIz
OyBtX21hdHJpeFsxXVszXSA9IG0yNDsKICAgICAgICBtX21hdHJpeFsyXVswXSA9IG0zMTsgbV9t
YXRyaXhbMl1bMV0gPSBtMzI7IG1fbWF0cml4WzJdWzJdID0gbTMzOyBtX21hdHJpeFsyXVszXSA9
IG0zNDsKICAgICAgICBtX21hdHJpeFszXVswXSA9IG00MTsgbV9tYXRyaXhbM11bMV0gPSBtNDI7
IG1fbWF0cml4WzNdWzJdID0gbTQzOyBtX21hdHJpeFszXVszXSA9IG00NDsKICAgIH0KCiAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3BlcmF0b3IgPShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCAmdCkKICAgIHsKICAgICAgICBzZXRNYXRyaXgodC5tX21hdHJpeCk7CiAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgfQoKICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYWtlSWRlbnRpdHkoKQog
ICAgewogICAgICAgIHNldE1hdHJpeCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAw
LCAwLCAwLCAwLCAxKTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgYm9vbCBpc0lk
ZW50aXR5KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9tYXRyaXhbMF1bMF0gPT0gMSAm
JiBtX21hdHJpeFswXVsxXSA9PSAwICYmIG1fbWF0cml4WzBdWzJdID09IDAgJiYgbV9tYXRyaXhb
MF1bM10gPT0gMCAmJgogICAgICAgICAgICAgICBtX21hdHJpeFsxXVswXSA9PSAwICYmIG1fbWF0
cml4WzFdWzFdID09IDEgJiYgbV9tYXRyaXhbMV1bMl0gPT0gMCAmJiBtX21hdHJpeFsxXVszXSA9
PSAwICYmCiAgICAgICAgICAgICAgIG1fbWF0cml4WzJdWzBdID09IDAgJiYgbV9tYXRyaXhbMl1b
MV0gPT0gMCAmJiBtX21hdHJpeFsyXVsyXSA9PSAxICYmIG1fbWF0cml4WzJdWzNdID09IDAgJiYK
ICAgICAgICAgICAgICAgbV9tYXRyaXhbM11bMF0gPT0gMCAmJiBtX21hdHJpeFszXVsxXSA9PSAw
ICYmIG1fbWF0cml4WzNdWzJdID09IDAgJiYgbV9tYXRyaXhbM11bM10gPT0gMTsKICAgIH0KCgog
ICAgdm9pZCBtYXAoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUmIHgyLCBkb3VibGUmIHkyKSBj
b25zdCB7IG11bHRWZWNNYXRyaXgoeCwgeSwgeDIsIHkyKTsgfQoKCiAgICBGbG9hdFBvaW50M0Qg
bWFwUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJikgY29uc3Q7CgoKCiAgICBGbG9hdFBvaW50IG1h
cFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKCgogICAgSW50UG9pbnQgbWFwUG9pbnQo
Y29uc3QgSW50UG9pbnQmIHApIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHJvdW5kZWRJbnRQ
b2ludChtYXBQb2ludChGbG9hdFBvaW50KHApKSk7CiAgICB9CgoKCiAgICBGbG9hdFJlY3QgbWFw
UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKCgoKICAgIEludFJlY3QgbWFwUmVjdChjb25z
dCBJbnRSZWN0JikgY29uc3Q7CgoKCiAgICBGbG9hdFF1YWQgbWFwUXVhZChjb25zdCBGbG9hdFF1
YWQmKSBjb25zdDsKCgoKCgoKICAgIEZsb2F0UG9pbnQgcHJvamVjdFBvaW50KGNvbnN0IEZsb2F0
UG9pbnQmKSBjb25zdDsKCiAgICBGbG9hdFF1YWQgcHJvamVjdFF1YWQoY29uc3QgRmxvYXRRdWFk
JikgY29uc3Q7CgogICAgZG91YmxlIG0xMSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4WzBdWzBd
OyB9CiAgICB2b2lkIHNldE0xMShkb3VibGUgZikgeyBtX21hdHJpeFswXVswXSA9IGY7IH0KICAg
IGRvdWJsZSBtMTIoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeFswXVsxXTsgfQogICAgdm9pZCBz
ZXRNMTIoZG91YmxlIGYpIHsgbV9tYXRyaXhbMF1bMV0gPSBmOyB9CiAgICBkb3VibGUgbTEzKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXRyaXhbMF1bMl07IH0KICAgIHZvaWQgc2V0TTEzKGRvdWJsZSBm
KSB7IG1fbWF0cml4WzBdWzJdID0gZjsgfQogICAgZG91YmxlIG0xNCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF0cml4WzBdWzNdOyB9CiAgICB2b2lkIHNldE0xNChkb3VibGUgZikgeyBtX21hdHJpeFsw
XVszXSA9IGY7IH0KICAgIGRvdWJsZSBtMjEoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeFsxXVsw
XTsgfQogICAgdm9pZCBzZXRNMjEoZG91YmxlIGYpIHsgbV9tYXRyaXhbMV1bMF0gPSBmOyB9CiAg
ICBkb3VibGUgbTIyKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhbMV1bMV07IH0KICAgIHZvaWQg
c2V0TTIyKGRvdWJsZSBmKSB7IG1fbWF0cml4WzFdWzFdID0gZjsgfQogICAgZG91YmxlIG0yMygp
IGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4WzFdWzJdOyB9CiAgICB2b2lkIHNldE0yMyhkb3VibGUg
ZikgeyBtX21hdHJpeFsxXVsyXSA9IGY7IH0KICAgIGRvdWJsZSBtMjQoKSBjb25zdCB7IHJldHVy
biBtX21hdHJpeFsxXVszXTsgfQogICAgdm9pZCBzZXRNMjQoZG91YmxlIGYpIHsgbV9tYXRyaXhb
MV1bM10gPSBmOyB9CiAgICBkb3VibGUgbTMxKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhbMl1b
MF07IH0KICAgIHZvaWQgc2V0TTMxKGRvdWJsZSBmKSB7IG1fbWF0cml4WzJdWzBdID0gZjsgfQog
ICAgZG91YmxlIG0zMigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4WzJdWzFdOyB9CiAgICB2b2lk
IHNldE0zMihkb3VibGUgZikgeyBtX21hdHJpeFsyXVsxXSA9IGY7IH0KICAgIGRvdWJsZSBtMzMo
KSBjb25zdCB7IHJldHVybiBtX21hdHJpeFsyXVsyXTsgfQogICAgdm9pZCBzZXRNMzMoZG91Ymxl
IGYpIHsgbV9tYXRyaXhbMl1bMl0gPSBmOyB9CiAgICBkb3VibGUgbTM0KCkgY29uc3QgeyByZXR1
cm4gbV9tYXRyaXhbMl1bM107IH0KICAgIHZvaWQgc2V0TTM0KGRvdWJsZSBmKSB7IG1fbWF0cml4
WzJdWzNdID0gZjsgfQogICAgZG91YmxlIG00MSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4WzNd
WzBdOyB9CiAgICB2b2lkIHNldE00MShkb3VibGUgZikgeyBtX21hdHJpeFszXVswXSA9IGY7IH0K
ICAgIGRvdWJsZSBtNDIoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeFszXVsxXTsgfQogICAgdm9p
ZCBzZXRNNDIoZG91YmxlIGYpIHsgbV9tYXRyaXhbM11bMV0gPSBmOyB9CiAgICBkb3VibGUgbTQz
KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhbM11bMl07IH0KICAgIHZvaWQgc2V0TTQzKGRvdWJs
ZSBmKSB7IG1fbWF0cml4WzNdWzJdID0gZjsgfQogICAgZG91YmxlIG00NCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWF0cml4WzNdWzNdOyB9CiAgICB2b2lkIHNldE00NChkb3VibGUgZikgeyBtX21hdHJp
eFszXVszXSA9IGY7IH0KCiAgICBkb3VibGUgYSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4WzBd
WzBdOyB9CiAgICB2b2lkIHNldEEoZG91YmxlIGEpIHsgbV9tYXRyaXhbMF1bMF0gPSBhOyB9Cgog
ICAgZG91YmxlIGIoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeFswXVsxXTsgfQogICAgdm9pZCBz
ZXRCKGRvdWJsZSBiKSB7IG1fbWF0cml4WzBdWzFdID0gYjsgfQoKICAgIGRvdWJsZSBjKCkgY29u
c3QgeyByZXR1cm4gbV9tYXRyaXhbMV1bMF07IH0KICAgIHZvaWQgc2V0Qyhkb3VibGUgYykgeyBt
X21hdHJpeFsxXVswXSA9IGM7IH0KCiAgICBkb3VibGUgZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0
cml4WzFdWzFdOyB9CiAgICB2b2lkIHNldEQoZG91YmxlIGQpIHsgbV9tYXRyaXhbMV1bMV0gPSBk
OyB9CgogICAgZG91YmxlIGUoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeFszXVswXTsgfQogICAg
dm9pZCBzZXRFKGRvdWJsZSBlKSB7IG1fbWF0cml4WzNdWzBdID0gZTsgfQoKICAgIGRvdWJsZSBm
KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhbM11bMV07IH0KICAgIHZvaWQgc2V0Rihkb3VibGUg
ZikgeyBtX21hdHJpeFszXVsxXSA9IGY7IH0KCgogICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG11
bHRpcGx5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CgogICAgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHNjYWxlKGRvdWJsZSk7CiAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NhbGVOb25V
bmlmb3JtKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsKICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBz
Y2FsZTNkKGRvdWJsZSBzeCwgZG91YmxlIHN5LCBkb3VibGUgc3opOwoKICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4JiByb3RhdGUoZG91YmxlIGQpIHsgcmV0dXJuIHJvdGF0ZTNkKDAsIDAsIGQpOyB9
CiAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91
YmxlIHkpOwogICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJvdGF0ZTNkKGRvdWJsZSByeCwgZG91
YmxlIHJ5LCBkb3VibGUgcnopOwoKCgogICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJvdGF0ZTNk
KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSk7CgogICAgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zbGF0ZShkb3VibGUgdHgsIGRvdWJsZSB0eSk7CiAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNsYXRlM2QoZG91YmxlIHR4LCBkb3VibGUgdHksIGRvdWJs
ZSB0eik7CgoKICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2xhdGVSaWdodChkb3VibGUg
dHgsIGRvdWJsZSB0eSk7CiAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNsYXRlUmlnaHQz
ZChkb3VibGUgdHgsIGRvdWJsZSB0eSwgZG91YmxlIHR6KTsKCiAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZmxpcFgoKTsKICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmbGlwWSgpOwogICAgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHNrZXcoZG91YmxlIGFuZ2xlWCwgZG91YmxlIGFuZ2xlWSk7CiAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2tld1goZG91YmxlIGFuZ2xlKSB7IHJldHVybiBza2V3
KGFuZ2xlLCAwKTsgfQogICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNrZXdZKGRvdWJsZSBhbmds
ZSkgeyByZXR1cm4gc2tldygwLCBhbmdsZSk7IH0KCiAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
YXBwbHlQZXJzcGVjdGl2ZShkb3VibGUgcCk7CiAgICBib29sIGhhc1BlcnNwZWN0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9tYXRyaXhbMl1bM10gIT0gMC4wZjsgfQoKCiAgICBzdGF0aWMgVHJhbnNm
b3JtYXRpb25NYXRyaXggcmVjdFRvUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmKTsKCiAgICBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0OwoKCgogICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggaW52ZXJzZSgpIGNvbnN0OwoKCiAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAg
ZG91YmxlIHNjYWxlWCwgc2NhbGVZLCBzY2FsZVo7CiAgICAgICAgZG91YmxlIHNrZXdYWSwgc2tl
d1haLCBza2V3WVo7CiAgICAgICAgZG91YmxlIHF1YXRlcm5pb25YLCBxdWF0ZXJuaW9uWSwgcXVh
dGVybmlvblosIHF1YXRlcm5pb25XOwogICAgICAgIGRvdWJsZSB0cmFuc2xhdGVYLCB0cmFuc2xh
dGVZLCB0cmFuc2xhdGVaOwogICAgICAgIGRvdWJsZSBwZXJzcGVjdGl2ZVgsIHBlcnNwZWN0aXZl
WSwgcGVyc3BlY3RpdmVaLCBwZXJzcGVjdGl2ZVc7CiAgICB9IERlY29tcG9zZWRUeXBlOwoKICAg
IGJvb2wgZGVjb21wb3NlKERlY29tcG9zZWRUeXBlJiBkZWNvbXApIGNvbnN0OwogICAgdm9pZCBy
ZWNvbXBvc2UoY29uc3QgRGVjb21wb3NlZFR5cGUmIGRlY29tcCk7CgogICAgdm9pZCBibGVuZChj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKTsKCiAgICBi
b29sIGlzQWZmaW5lKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gKG0xMygpID09IDAgJiYg
bTE0KCkgPT0gMCAmJiBtMjMoKSA9PSAwICYmIG0yNCgpID09IDAgJiYKICAgICAgICAgICAgICAg
IG0zMSgpID09IDAgJiYgbTMyKCkgPT0gMCAmJiBtMzMoKSA9PSAxICYmIG0zNCgpID09IDAgJiYg
bTQzKCkgPT0gMCAmJiBtNDQoKSA9PSAxKTsKICAgIH0KCgogICAgdm9pZCBtYWtlQWZmaW5lKCk7
CgogICAgQWZmaW5lVHJhbnNmb3JtIHRvQWZmaW5lVHJhbnNmb3JtKCkgY29uc3Q7CgogICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtMikgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gKG1fbWF0cml4WzBdWzBdID09IG0yLm1fbWF0cml4WzBdWzBdICYmCiAg
ICAgICAgICAgICAgICBtX21hdHJpeFswXVsxXSA9PSBtMi5tX21hdHJpeFswXVsxXSAmJgogICAg
ICAgICAgICAgICAgbV9tYXRyaXhbMF1bMl0gPT0gbTIubV9tYXRyaXhbMF1bMl0gJiYKICAgICAg
ICAgICAgICAgIG1fbWF0cml4WzBdWzNdID09IG0yLm1fbWF0cml4WzBdWzNdICYmCiAgICAgICAg
ICAgICAgICBtX21hdHJpeFsxXVswXSA9PSBtMi5tX21hdHJpeFsxXVswXSAmJgogICAgICAgICAg
ICAgICAgbV9tYXRyaXhbMV1bMV0gPT0gbTIubV9tYXRyaXhbMV1bMV0gJiYKICAgICAgICAgICAg
ICAgIG1fbWF0cml4WzFdWzJdID09IG0yLm1fbWF0cml4WzFdWzJdICYmCiAgICAgICAgICAgICAg
ICBtX21hdHJpeFsxXVszXSA9PSBtMi5tX21hdHJpeFsxXVszXSAmJgogICAgICAgICAgICAgICAg
bV9tYXRyaXhbMl1bMF0gPT0gbTIubV9tYXRyaXhbMl1bMF0gJiYKICAgICAgICAgICAgICAgIG1f
bWF0cml4WzJdWzFdID09IG0yLm1fbWF0cml4WzJdWzFdICYmCiAgICAgICAgICAgICAgICBtX21h
dHJpeFsyXVsyXSA9PSBtMi5tX21hdHJpeFsyXVsyXSAmJgogICAgICAgICAgICAgICAgbV9tYXRy
aXhbMl1bM10gPT0gbTIubV9tYXRyaXhbMl1bM10gJiYKICAgICAgICAgICAgICAgIG1fbWF0cml4
WzNdWzBdID09IG0yLm1fbWF0cml4WzNdWzBdICYmCiAgICAgICAgICAgICAgICBtX21hdHJpeFsz
XVsxXSA9PSBtMi5tX21hdHJpeFszXVsxXSAmJgogICAgICAgICAgICAgICAgbV9tYXRyaXhbM11b
Ml0gPT0gbTIubV9tYXRyaXhbM11bMl0gJiYKICAgICAgICAgICAgICAgIG1fbWF0cml4WzNdWzNd
ID09IG0yLm1fbWF0cml4WzNdWzNdKTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQoKCiAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3BlcmF0b3IqPShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdCkKICAgIHsKICAgICAgICByZXR1cm4gbXVsdGlwbHkodCk7CiAg
ICB9CgoKICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG9wZXJhdG9yKihjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdCkgY29uc3QKICAgIHsKICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBy
ZXN1bHQgPSAqdGhpczsKICAgICAgICByZXN1bHQubXVsdGlwbHkodCk7CiAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgIH0KIyAzMjcgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICAgIG9wZXJhdG9yIFFU
cmFuc2Zvcm0oKSBjb25zdDsKIyAzMzggIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICAgIGJvb2wgaXNJ
ZGVudGl0eU9yVHJhbnNsYXRpb24oKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX21hdHJp
eFswXVswXSA9PSAxICYmIG1fbWF0cml4WzBdWzFdID09IDAgJiYgbV9tYXRyaXhbMF1bMl0gPT0g
MCAmJiBtX21hdHJpeFswXVszXSA9PSAwCiAgICAgICAgICAgICYmIG1fbWF0cml4WzFdWzBdID09
IDAgJiYgbV9tYXRyaXhbMV1bMV0gPT0gMSAmJiBtX21hdHJpeFsxXVsyXSA9PSAwICYmIG1fbWF0
cml4WzFdWzNdID09IDAKICAgICAgICAgICAgJiYgbV9tYXRyaXhbMl1bMF0gPT0gMCAmJiBtX21h
dHJpeFsyXVsxXSA9PSAwICYmIG1fbWF0cml4WzJdWzJdID09IDEgJiYgbV9tYXRyaXhbMl1bM10g
PT0gMAogICAgICAgICAgICAmJiBtX21hdHJpeFszXVszXSA9PSAxOwogICAgfQoKICAgIGJvb2wg
aXNJbnRlZ2VyVHJhbnNsYXRpb24oKSBjb25zdDsKCgogICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dG8yZFRyYW5zZm9ybSgpIGNvbnN0OwoKcHJpdmF0ZToKCiAgICB2b2lkIG11bHRWZWNNYXRyaXgo
ZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUmIGRzdFgsIGRvdWJsZSYgZHN0WSkgY29uc3Q7CgoK
ICAgIHZvaWQgbXVsdFZlY01hdHJpeChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3Vi
bGUmIGRzdFgsIGRvdWJsZSYgZHN0WSwgZG91YmxlJiBkc3RaKSBjb25zdDsKCiAgICB2b2lkIHNl
dE1hdHJpeChjb25zdCBNYXRyaXg0IG0pCiAgICB7CiAgICAgICAgaWYgKG0gJiYgbSAhPSBtX21h
dHJpeCkKICAgICAgICAgICAgbWVtY3B5KG1fbWF0cml4LCBtLCBzaXplb2YoTWF0cml4NCkpOwog
ICAgfQoKICAgIE1hdHJpeDQgbV9tYXRyaXg7Cn07Cgp9CiMgMzkgIi4uLy4uLy4uL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCIgMgojIDEgIi4uLy4uLy4u
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3Bl
cmF0aW9ucy5oIiAxCiMgMjYgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgojZGVmaW5lIFRyYW5zZm9ybU9w
ZXJhdGlvbnNfaCAKCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24uaCIgMQojIDI2ICIuLi8uLi8uLi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlv
bi5oIgojZGVmaW5lIFRyYW5zZm9ybU9wZXJhdGlvbl9oIAoKIyAxICIuLi8uLi8uLi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCIgMQojIDI5ICIuLi8uLi8uLi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJh
dGlvbi5oIiAyCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIiAxCiMgMzAgIi4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9u
LmgiIDIKCgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKCgpjbGFzcyBUcmFuc2Zvcm1PcGVyYXRpb24g
OiBwdWJsaWMgUmVmQ291bnRlZDxUcmFuc2Zvcm1PcGVyYXRpb24+IHsKcHVibGljOgogICAgZW51
bSBPcGVyYXRpb25UeXBlIHsKICAgICAgICBTQ0FMRV9YLCBTQ0FMRV9ZLCBTQ0FMRSwKICAgICAg
ICBUUkFOU0xBVEVfWCwgVFJBTlNMQVRFX1ksIFRSQU5TTEFURSwKICAgICAgICBST1RBVEUsCiAg
ICAgICAgUk9UQVRFX1ogPSBST1RBVEUsCiAgICAgICAgU0tFV19YLCBTS0VXX1ksIFNLRVcsCiAg
ICAgICAgTUFUUklYLAogICAgICAgIFNDQUxFX1osIFNDQUxFXzNELAogICAgICAgIFRSQU5TTEFU
RV9aLCBUUkFOU0xBVEVfM0QsCiAgICAgICAgUk9UQVRFX1gsIFJPVEFURV9ZLCBST1RBVEVfM0Qs
CiAgICAgICAgTUFUUklYXzNELAogICAgICAgIFBFUlNQRUNUSVZFLAogICAgICAgIElERU5USVRZ
LCBOT05FCiAgICB9OwoKICAgIHZpcnR1YWwgflRyYW5zZm9ybU9wZXJhdGlvbigpIHsgfQoKICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0
ID0gMDsKICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8pIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KCiAgICB2aXJ0dWFsIGJvb2wgaXNJZGVudGl0
eSgpIGNvbnN0ID0gMDsKCgogICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgY29uc3QgRmxvYXRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdCA9IDA7CgogICAgdmly
dHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0g
ZmFsc2UpID0gMDsKCiAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlwZSgp
IGNvbnN0ID0gMDsKICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbiYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CgogICAgYm9vbCBpczNET3BlcmF0aW9u
KCkgY29uc3QKICAgIHsKICAgICAgICBPcGVyYXRpb25UeXBlIG9wVHlwZSA9IGdldE9wZXJhdGlv
blR5cGUoKTsKICAgICAgICByZXR1cm4gb3BUeXBlID09IFNDQUxFX1ogfHwKICAgICAgICAgICAg
ICAgb3BUeXBlID09IFNDQUxFXzNEIHx8CiAgICAgICAgICAgICAgIG9wVHlwZSA9PSBUUkFOU0xB
VEVfWiB8fAogICAgICAgICAgICAgICBvcFR5cGUgPT0gVFJBTlNMQVRFXzNEIHx8CiAgICAgICAg
ICAgICAgIG9wVHlwZSA9PSBST1RBVEVfWCB8fAogICAgICAgICAgICAgICBvcFR5cGUgPT0gUk9U
QVRFX1kgfHwKICAgICAgICAgICAgICAgb3BUeXBlID09IFJPVEFURV8zRCB8fAogICAgICAgICAg
ICAgICBvcFR5cGUgPT0gTUFUUklYXzNEIHx8CiAgICAgICAgICAgICAgIG9wVHlwZSA9PSBQRVJT
UEVDVElWRTsKICAgIH0KfTsKCn0KIyAyOSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmgiIDIKCgoKbmFtZXNw
YWNlIFdlYkNvcmUgewoKY2xhc3MgVHJhbnNmb3JtT3BlcmF0aW9ucyB7CiAgICBwdWJsaWM6IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6
V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFs
bG9jVHlwZUNsYXNzTmV3KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCog
cCkgeyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5h
bDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgdm9pZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUp
OyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFs
OjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgcmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxl
dGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpX
VEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IFRoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVy
VGhpc01hY3JvOwpwdWJsaWM6CiAgICBUcmFuc2Zvcm1PcGVyYXRpb25zKGJvb2wgbWFrZUlkZW50
aXR5ID0gZmFsc2UpOwoKICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiBvKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiBvKSBjb25zdAogICAgewogICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgfQoK
ICAgIHZvaWQgYXBwbHkoY29uc3QgRmxvYXRTaXplJiBzeiwgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHQpIGNvbnN0CiAgICB7CiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3BlcmF0
aW9ucy5zaXplKCk7ICsraSkKICAgICAgICAgICAgbV9vcGVyYXRpb25zW2ldLT5hcHBseSh0LCBz
eik7CiAgICB9CgoKCiAgICBib29sIGhhczNET3BlcmF0aW9uKCkgY29uc3QKICAgIHsKICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytpKQogICAg
ICAgICAgICBpZiAobV9vcGVyYXRpb25zW2ldLT5pczNET3BlcmF0aW9uKCkpCiAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgdm9pZCBj
bGVhcigpCiAgICB7CiAgICAgICAgbV9vcGVyYXRpb25zLmNsZWFyKCk7CiAgICB9CgogICAgVmVj
dG9yPFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMoKSB7IHJldHVybiBt
X29wZXJhdGlvbnM7IH0KICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9u
PiA+JiBvcGVyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zOyB9CgogICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuc2l6ZSgpOyB9CiAgICBjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb24qIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5k
ZXggPCBtX29wZXJhdGlvbnMuc2l6ZSgpID8gbV9vcGVyYXRpb25zLmF0KGluZGV4KS5nZXQoKSA6
IDA7IH0KCnByaXZhdGU6CiAgICBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gPiBt
X29wZXJhdGlvbnM7Cn07Cgp9CiMgNDAgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCIgMgojIDU0ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgiCm5hbWVzcGFjZSBXZWJDb3JlIHsK
Y2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI7CnR5cGVkZWYgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIgUGxhdGZvcm1MYXllcjsKfTsKIyA3NSAiLi4vLi4vLi4vU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIgplbnVtIExheWVyVHJlZUFzVGV4
dEJlaGF2aW9yRmxhZ3MgewogICAgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3JOb3JtYWwgPSAwLAog
ICAgTGF5ZXJUcmVlQXNUZXh0RGVidWcgPSAxIDw8IDAsCn07CnR5cGVkZWYgdW5zaWduZWQgTGF5
ZXJUcmVlQXNUZXh0QmVoYXZpb3I7CgpuYW1lc3BhY2UgV2ViQ29yZSB7CgpjbGFzcyBGbG9hdFBv
aW50M0Q7CmNsYXNzIEdyYXBoaWNzQ29udGV4dDsKY2xhc3MgSW1hZ2U7CmNsYXNzIFRleHRTdHJl
YW07CmNsYXNzIFRpbWluZ0Z1bmN0aW9uOwoKCgoKY2xhc3MgQW5pbWF0aW9uVmFsdWUgewpwdWJs
aWM6CiAgICBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1
bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCiAgICAgICAgOiBtX2tleVRpbWUoa2V5VGltZSkK
ICAgIHsKICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24pCiAgICAgICAgICAgIG1fdGltaW5nRnVu
Y3Rpb24gPSB0aW1pbmdGdW5jdGlvbjsKICAgIH0KCiAgICB2aXJ0dWFsIH5BbmltYXRpb25WYWx1
ZSgpIHsgfQoKICAgIGZsb2F0IGtleVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2tleVRpbWU7IH0K
ICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdGltaW5nRnVuY3Rpb24uZ2V0KCk7IH0KICAgIHZpcnR1YWwgQW5pbWF0aW9uVmFsdWUqIGNs
b25lKCkgY29uc3QgPSAwOwoKcHJpdmF0ZToKICAgIGZsb2F0IG1fa2V5VGltZTsKICAgIFJlZlB0
cjxUaW1pbmdGdW5jdGlvbj4gbV90aW1pbmdGdW5jdGlvbjsKfTsKCgpjbGFzcyBGbG9hdEFuaW1h
dGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKcHVibGljOgogICAgRmxvYXRBbmlt
YXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdG
dW5jdGlvbj4gdGltaW5nRnVuY3Rpb24gPSAwKQogICAgICAgIDogQW5pbWF0aW9uVmFsdWUoa2V5
VGltZSwgdGltaW5nRnVuY3Rpb24pCiAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgewogICAg
fQogICAgdmlydHVhbCBBbmltYXRpb25WYWx1ZSogY2xvbmUoKSBjb25zdCB7IHJldHVybiBuZXcg
RmxvYXRBbmltYXRpb25WYWx1ZSgqdGhpcyk7IH0KCiAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KCnByaXZhdGU6CiAgICBmbG9hdCBtX3ZhbHVlOwp9OwoKCmNsYXNz
IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKcHVibGlj
OgogICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoZmxvYXQga2V5VGltZSwgY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9ucyogdmFsdWUgPSAwLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1p
bmdGdW5jdGlvbiA9IDApCiAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdG
dW5jdGlvbikKICAgIHsKICAgICAgICBpZiAodmFsdWUpCiAgICAgICAgICAgIG1fdmFsdWUgPSAq
dmFsdWU7CiAgICB9CiAgICB2aXJ0dWFsIEFuaW1hdGlvblZhbHVlKiBjbG9uZSgpIGNvbnN0IHsg
cmV0dXJuIG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgqdGhpcyk7IH0KCiAgICBjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuICZtX3ZhbHVlOyB9Cgpw
cml2YXRlOgogICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwp9OwoKCgpjbGFzcyBLZXlm
cmFtZVZhbHVlTGlzdCB7CnB1YmxpYzoKCiAgICBLZXlmcmFtZVZhbHVlTGlzdChBbmltYXRlZFBy
b3BlcnR5SUQgcHJvcGVydHkpCiAgICAgICAgOiBtX3Byb3BlcnR5KHByb3BlcnR5KQogICAgewog
ICAgfQoKICAgIEtleWZyYW1lVmFsdWVMaXN0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiBvdGhl
cikKICAgICAgICA6IG1fcHJvcGVydHkob3RoZXIucHJvcGVydHkoKSkKICAgIHsKICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG90aGVyLm1fdmFsdWVzLnNpemUoKTsgKytpKQogICAgICAg
ICAgICBtX3ZhbHVlcy5hcHBlbmQob3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgfQoK
ICAgIH5LZXlmcmFtZVZhbHVlTGlzdCgpCiAgICB7CiAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1f
dmFsdWVzKTsKICAgIH0KCiAgICBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkoKSBjb25zdCB7
IHJldHVybiBtX3Byb3BlcnR5OyB9CgogICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlcy5zaXplKCk7IH0KICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlKiBhdChzaXplX3QgaSkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZXMuYXQoaSk7IH0KCgogICAgdm9pZCBpbnNlcnQoY29uc3Qg
QW5pbWF0aW9uVmFsdWUqKTsKCnByb3RlY3RlZDoKICAgIFZlY3Rvcjxjb25zdCBBbmltYXRpb25W
YWx1ZSo+IG1fdmFsdWVzOwogICAgQW5pbWF0ZWRQcm9wZXJ0eUlEIG1fcHJvcGVydHk7Cn07CgoK
CgoKCmNsYXNzIEdyYXBoaWNzTGF5ZXIgewogICAgcHJpdmF0ZTogR3JhcGhpY3NMYXllcihjb25z
dCBHcmFwaGljc0xheWVyJik7IEdyYXBoaWNzTGF5ZXImIG9wZXJhdG9yPShjb25zdCBHcmFwaGlj
c0xheWVyJik7IHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyBy
ZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJu
IHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHZvaWQqIHAgPSA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgOjpXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAs
IDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyByZXR1cm4gcDsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZy
ZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7IDo6V1RGOjpmYXN0RnJl
ZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyB2b2lkKiBwID0gOjpX
VEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxv
YyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkpOyByZXR1cm4gcDsg
fSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RNYWxsb2NNYXRj
aFZhbGlkYXRlRnJlZShwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3QXJyYXkp
OyA6OldURjo6ZmFzdEZyZWUocCk7IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgVGhpc0lzSGVyZVRv
Rm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CnB1YmxpYzoKICAgIHN0YXRpYyBQYXNzT3du
UHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2xpZW50Kik7CgogICAgdmly
dHVhbCB+R3JhcGhpY3NMYXllcigpOwoKICAgIEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CgoKICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3Ry
aW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KCiAgICBHcmFwaGljc0xheWVyKiBwYXJlbnQo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfTsKICAgIHZvaWQgc2V0UGFyZW50KEdyYXBoaWNz
TGF5ZXIqKTsKCgogICAgYm9vbCBoYXNBbmNlc3RvcihHcmFwaGljc0xheWVyKikgY29uc3Q7Cgog
ICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRyZW4oKSBjb25zdCB7IHJldHVy
biBtX2NoaWxkcmVuOyB9CgogICAgdmlydHVhbCBib29sIHNldENoaWxkcmVuKGNvbnN0IFZlY3Rv
cjxHcmFwaGljc0xheWVyKj4mKTsKCgogICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEdyYXBoaWNz
TGF5ZXIqKTsKICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllcios
IGludCBpbmRleCk7CiAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBYm92ZShHcmFwaGljc0xheWVy
KiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZyk7CiAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hp
bGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZyk7CiAg
ICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFw
aGljc0xheWVyKiBuZXdDaGlsZCk7CgogICAgdm9pZCByZW1vdmVBbGxDaGlsZHJlbigpOwogICAg
dmlydHVhbCB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKCiAgICBHcmFwaGljc0xheWVyKiBtYXNr
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX21hc2tMYXllcjsgfQogICAgdmlydHVhbCB2b2lkIHNl
dE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikgeyBtX21hc2tMYXllciA9IGxheWVyOyB9
CgoKICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKik7
CgogICAgYm9vbCBpc1JlcGxpY2F0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FMYXllcjsg
fQoKICAgIEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVw
bGljYUxheWVyOyB9CgogICAgY29uc3QgRmxvYXRQb2ludCYgcmVwbGljYXRlZExheWVyUG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2F0ZWRMYXllclBvc2l0aW9uOyB9CiAgICB2b2lk
IHNldFJlcGxpY2F0ZWRMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHApIHsgbV9yZXBs
aWNhdGVkTGF5ZXJQb3NpdGlvbiA9IHA7IH0KCgogICAgSW50U2l6ZSBvZmZzZXRGcm9tUmVuZGVy
ZXIoKSBjb25zdCB7IHJldHVybiBtX29mZnNldEZyb21SZW5kZXJlcjsgfQogICAgdm9pZCBzZXRP
ZmZzZXRGcm9tUmVuZGVyZXIoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KSB7IG1fb2Zmc2V0RnJvbVJl
bmRlcmVyID0gb2Zmc2V0OyB9CgoKICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9uKGNv
bnN0IEZsb2F0UG9pbnQmIHApIHsgbV9wb3NpdGlvbiA9IHA7IH0KCgoKICAgIGNvbnN0IEZsb2F0
UG9pbnQzRCYgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2FuY2hvclBvaW50OyB9CiAg
ICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiBwKSB7IG1f
YW5jaG9yUG9pbnQgPSBwOyB9CgoKICAgIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQogICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXpl
JiBzaXplKSB7IG1fc2l6ZSA9IHNpemU7IH0KCgogICAgY29uc3QgRmxvYXRQb2ludCYgYm91bmRz
T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHNPcmlnaW47IH0KICAgIHZpcnR1YWwgdm9p
ZCBzZXRCb3VuZHNPcmlnaW4oY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luKSB7IG1fYm91bmRzT3Jp
Z2luID0gb3JpZ2luOyB9CgogICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAgICB2aXJ0dWFsIHZvaWQgc2V0VHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KSB7IG1fdHJhbnNmb3JtID0gdDsg
fQoKICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBjaGlsZHJlblRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5UcmFuc2Zvcm07IH0KICAgIHZpcnR1YWwgdm9pZCBzZXRD
aGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkgeyBtX2NoaWxk
cmVuVHJhbnNmb3JtID0gdDsgfQoKICAgIGJvb2wgcHJlc2VydmVzM0QoKSBjb25zdCB7IHJldHVy
biBtX3ByZXNlcnZlczNEOyB9CiAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCBi
KSB7IG1fcHJlc2VydmVzM0QgPSBiOyB9CgogICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXNrc1RvQm91bmRzOyB9CiAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza3NUb0Jv
dW5kcyhib29sIGIpIHsgbV9tYXNrc1RvQm91bmRzID0gYjsgfQoKICAgIGJvb2wgZHJhd3NDb250
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3c0NvbnRlbnQ7IH0KICAgIHZpcnR1YWwgdm9pZCBz
ZXREcmF3c0NvbnRlbnQoYm9vbCBiKSB7IG1fZHJhd3NDb250ZW50ID0gYjsgfQoKICAgIGJvb2wg
YWNjZWxlcmF0ZXNEcmF3aW5nKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlc0RyYXdpbmc7
IH0KICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlc0RyYXdpbmcoYm9vbCBiKSB7IG1fYWNj
ZWxlcmF0ZXNEcmF3aW5nID0gYjsgfQoKCiAgICBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgIHZpcnR1YWwgdm9pZCBjbGVhckJh
Y2tncm91bmRDb2xvcigpOwogICAgYm9vbCBiYWNrZ3JvdW5kQ29sb3JTZXQoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmRDb2xvclNldDsgfQoKCiAgICBib29sIGNvbnRlbnRzT3BhcXVlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50c09wYXF1ZTsgfQogICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzT3BhcXVlKGJvb2wgYikgeyBtX2NvbnRlbnRzT3BhcXVlID0gYjsgfQoKICAgIGJvb2wg
YmFja2ZhY2VWaXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZmFjZVZpc2liaWxpdHk7
IH0KICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCBiKSB7IG1fYmFj
a2ZhY2VWaXNpYmlsaXR5ID0gYjsgfQoKICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBtX29wYWNpdHk7IH0KICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkp
IHsgbV9vcGFjaXR5ID0gb3BhY2l0eTsgfQoKCiAgICBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFz
ZSBwYWludGluZ1BoYXNlKCkgY29uc3QgeyByZXR1cm4gbV9wYWludGluZ1BoYXNlOyB9CiAgICB2
b2lkIHNldFBhaW50aW5nUGhhc2UoR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UgcGhhc2UpIHsg
bV9wYWludGluZ1BoYXNlID0gcGhhc2U7IH0KCiAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNw
bGF5KCkgPSAwOwoKICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3Qg
RmxvYXRSZWN0JikgPSAwOwoKICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxh
eSgpIHsgfTsKCgogICAgSW50UmVjdCBjb250ZW50c1JlY3QoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRlbnRzUmVjdDsgfQogICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBJbnRS
ZWN0JiByKSB7IG1fY29udGVudHNSZWN0ID0gcjsgfQoKCiAgICBzdGF0aWMgU3RyaW5nIGFuaW1h
dGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlJRCk7CgoKCgogICAgdmlydHVh
bCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNp
emUmICwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiAsIGRvdWJsZSApIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiAs
IGRvdWJsZSApIHsgfQogICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJp
bmcmICkgeyB9CgogICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1l
KTsKICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBbmltYXRpb25zKCk7CgoKICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSB7IH0KICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopIHsgfQogICAgdmlydHVhbCB2b2lkIHNldENvbnRl
bnRzVG9CYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqKSB7IH0KICAgIHZpcnR1YWwgYm9vbCBo
YXNDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KCgogICAgdm9pZCBwYWlu
dEdyYXBoaWNzTGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBj
bGlwKTsKCiAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqKSB7
IH0KCgogICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQoKICAgIHZvaWQgZHVtcExheWVyKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50ID0g
MCwgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IgPSBMYXllclRyZWVBc1RleHRCZWhhdmlvck5vcm1h
bCkgY29uc3Q7CgogICAgaW50IHJlcGFpbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWlu
dENvdW50OyB9CiAgICBpbnQgaW5jcmVtZW50UmVwYWludENvdW50KCkgeyByZXR1cm4gKyttX3Jl
cGFpbnRDb3VudDsgfQoKICAgIGVudW0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
IHsgQ29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERvd24sIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNC
b3R0b21VcCB9OwoKCiAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNPcmllbnRhdGlvbihDb21w
b3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9jb250ZW50c09y
aWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBjb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c09y
aWVudGF0aW9uOyB9CgogICAgYm9vbCBzaG93RGVidWdCb3JkZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9jbGllbnQgPyBtX2NsaWVudC0+c2hvd0RlYnVnQm9yZGVycygpIDogZmFsc2U7IH0KICAgIGJv
b2wgc2hvd1JlcGFpbnRDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVu
dC0+c2hvd1JlcGFpbnRDb3VudGVyKCkgOiBmYWxzZTsgfQoKICAgIHZvaWQgdXBkYXRlRGVidWdJ
bmRpY2F0b3JzKCk7CgogICAgdmlydHVhbCB2b2lkIHNldERlYnVnQmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJikgeyB9CiAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29s
b3ImLCBmbG9hdCApIHsgfQoKICAgIHZpcnR1YWwgZmxvYXQgelBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV96UG9zaXRpb247IH0KICAgIHZpcnR1YWwgdm9pZCBzZXRaUG9zaXRpb24oZmxvYXQp
OwoKICAgIHZpcnR1YWwgdm9pZCBkaXN0cmlidXRlT3BhY2l0eShmbG9hdCk7CiAgICB2aXJ0dWFs
IGZsb2F0IGFjY3VtdWxhdGVkT3BhY2l0eSgpIGNvbnN0OwoKICAgIHZpcnR1YWwgdm9pZCBzZXRN
YWludGFpbnNQaXhlbEFsaWdubWVudChib29sIG1haW50YWluc0FsaWdubWVudCkgeyBtX21haW50
YWluc1BpeGVsQWxpZ25tZW50ID0gbWFpbnRhaW5zQWxpZ25tZW50OyB9CiAgICB2aXJ0dWFsIGJv
b2wgbWFpbnRhaW5zUGl4ZWxBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX21haW50YWluc1Bp
eGVsQWxpZ25tZW50OyB9CgogICAgdm9pZCBzZXRBcHBsaWVzUGFnZVNjYWxlKGJvb2wgYXBwbGll
c1NjYWxlID0gdHJ1ZSkgeyBtX2FwcGxpZXNQYWdlU2NhbGUgPSBhcHBsaWVzU2NhbGU7IH0KICAg
IGJvb2wgYXBwbGllc1BhZ2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGllc1BhZ2VTY2Fs
ZTsgfQoKICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
ID8gbV9jbGllbnQtPnBhZ2VTY2FsZUZhY3RvcigpIDogMTsgfQogICAgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5kZXZpY2VTY2Fs
ZUZhY3RvcigpIDogMTsgfQoKICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3Rv
ckNoYW5nZWQoKSB7IH0KICAgIHZvaWQgbm90ZURldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7CgoKCgogICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3Np
dGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgKSB7IH0KICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKSB7IH0KCgoKICAgIFN0cmluZyBsYXllclRy
ZWVBc1RleHQoTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IgPSBMYXllclRyZWVBc1RleHRCZWhhdmlv
ck5vcm1hbCkgY29uc3Q7CgogICAgYm9vbCB1c2luZ1RpbGVkTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX3VzaW5nVGlsZWRMYXllcjsgfQoKCgoKICAgIHR5cGVkZWYgUGFzc093blB0cjxHcmFwaGlj
c0xheWVyPiBHcmFwaGljc0xheWVyRmFjdG9yeShHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAgICBz
dGF0aWMgdm9pZCBzZXRHcmFwaGljc0xheWVyRmFjdG9yeShHcmFwaGljc0xheWVyRmFjdG9yeSk7
CgoKcHJvdGVjdGVkOgoKICAgIHR5cGVkZWYgVmVjdG9yPFRyYW5zZm9ybU9wZXJhdGlvbjo6T3Bl
cmF0aW9uVHlwZT4gVHJhbnNmb3JtT3BlcmF0aW9uTGlzdDsKCgogICAgc3RhdGljIHZvaWQgZmV0
Y2hUcmFuc2Zvcm1PcGVyYXRpb25MaXN0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgVHJhbnNm
b3JtT3BlcmF0aW9uTGlzdCYsIGJvb2wmIGlzVmFsaWQsIGJvb2wmIGhhc0JpZ1JvdGF0aW9uKTsK
CiAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eUludGVybmFsKGZsb2F0KSB7IH0KCgogICAgR3Jh
cGhpY3NMYXllciogcmVwbGljYXRlZExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhdGVk
TGF5ZXI7IH0KICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBsaWNhdGVkTGF5ZXIoR3JhcGhpY3NMYXll
ciogbGF5ZXIpIHsgbV9yZXBsaWNhdGVkTGF5ZXIgPSBsYXllcjsgfQoKICAgIEdyYXBoaWNzTGF5
ZXIoR3JhcGhpY3NMYXllckNsaWVudCopOwoKICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoVGV4dFN0
cmVhbSYsIGludCBpbmRlbnQsIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdDsKCiAgICBH
cmFwaGljc0xheWVyQ2xpZW50KiBtX2NsaWVudDsKICAgIFN0cmluZyBtX25hbWU7CgoKICAgIElu
dFNpemUgbV9vZmZzZXRGcm9tUmVuZGVyZXI7CgoKICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsK
ICAgIEZsb2F0UG9pbnQzRCBtX2FuY2hvclBvaW50OwogICAgRmxvYXRTaXplIG1fc2l6ZTsKICAg
IEZsb2F0UG9pbnQgbV9ib3VuZHNPcmlnaW47CgogICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV90
cmFuc2Zvcm07CiAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2NoaWxkcmVuVHJhbnNmb3JtOwoK
ICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAgZmxvYXQgbV9vcGFjaXR5OwogICAgZmxv
YXQgbV96UG9zaXRpb247CgogICAgYm9vbCBtX2JhY2tncm91bmRDb2xvclNldCA6IDE7CiAgICBi
b29sIG1fY29udGVudHNPcGFxdWUgOiAxOwogICAgYm9vbCBtX3ByZXNlcnZlczNEOiAxOwogICAg
Ym9vbCBtX2JhY2tmYWNlVmlzaWJpbGl0eSA6IDE7CiAgICBib29sIG1fdXNpbmdUaWxlZExheWVy
IDogMTsKICAgIGJvb2wgbV9tYXNrc1RvQm91bmRzIDogMTsKICAgIGJvb2wgbV9kcmF3c0NvbnRl
bnQgOiAxOwogICAgYm9vbCBtX2FjY2VsZXJhdGVzRHJhd2luZyA6IDE7CiAgICBib29sIG1fbWFp
bnRhaW5zUGl4ZWxBbGlnbm1lbnQgOiAxOwogICAgYm9vbCBtX2FwcGxpZXNQYWdlU2NhbGUgOiAx
OwoKICAgIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlIG1fcGFpbnRpbmdQaGFzZTsKICAgIENv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBtX2NvbnRlbnRzT3JpZW50YXRpb247Cgog
ICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiBtX2NoaWxkcmVuOwogICAgR3JhcGhpY3NMYXllciog
bV9wYXJlbnQ7CgogICAgR3JhcGhpY3NMYXllciogbV9tYXNrTGF5ZXI7CgogICAgR3JhcGhpY3NM
YXllciogbV9yZXBsaWNhTGF5ZXI7CgogICAgR3JhcGhpY3NMYXllciogbV9yZXBsaWNhdGVkTGF5
ZXI7CiAgICBGbG9hdFBvaW50IG1fcmVwbGljYXRlZExheWVyUG9zaXRpb247CgogICAgSW50UmVj
dCBtX2NvbnRlbnRzUmVjdDsKCiAgICBpbnQgbV9yZXBhaW50Q291bnQ7CgoKICAgIHN0YXRpYyBH
cmFwaGljc0xheWVyOjpHcmFwaGljc0xheWVyRmFjdG9yeSogc19ncmFwaGljc0xheWVyRmFjdG9y
eTsKCn07CgoKfQoKCgp2b2lkIHNob3dHcmFwaGljc0xheWVyVHJlZShjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyKiBsYXllcik7CiMgNTAgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgiIDIKCgoKQGNsYXNzIEFWUGxheWVyOwpAY2xhc3Mg
UVRNb3ZpZTsKCgoKCmNsYXNzIEFWQ0ZQbGF5ZXI7CmNsYXNzIFFUTW92aWVHV29ybGQ7CmNsYXNz
IFFUTW92aWVWaXN1YWxDb250ZXh0OwoKbmFtZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgR1N0cmVh
bWVyR1dvcmxkOwpjbGFzcyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U7CgoKCgoKc3RydWN0
IFBsYXRmb3JtTWVkaWEgewogICAgZW51bSB7CiAgICAgICAgTm9uZSwKICAgICAgICBRVE1vdmll
VHlwZSwKICAgICAgICBRVE1vdmllR1dvcmxkVHlwZSwKICAgICAgICBRVE1vdmllVmlzdWFsQ29u
dGV4dFR5cGUsCiAgICAgICAgR1N0cmVhbWVyR1dvcmxkVHlwZSwKICAgICAgICBDaHJvbWl1bU1l
ZGlhUGxheWVyVHlwZSwKICAgICAgICBRdE1lZGlhUGxheWVyVHlwZSwKICAgICAgICBBVkZvdW5k
YXRpb25NZWRpYVBsYXllclR5cGUsCiAgICAgICAgQVZGb3VuZGF0aW9uQ0ZNZWRpYVBsYXllclR5
cGUKICAgIH0gdHlwZTsKCiAgICB1bmlvbiB7CiAgICAgICAgUVRNb3ZpZSogcXRNb3ZpZTsKICAg
ICAgICBRVE1vdmllR1dvcmxkKiBxdE1vdmllR1dvcmxkOwogICAgICAgIFFUTW92aWVWaXN1YWxD
b250ZXh0KiBxdE1vdmllVmlzdWFsQ29udGV4dDsKICAgICAgICBHU3RyZWFtZXJHV29ybGQqIGdz
dHJlYW1lckdXb3JsZDsKICAgICAgICBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIGNocm9t
aXVtTWVkaWFQbGF5ZXI7CiAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBxdE1l
ZGlhUGxheWVyOwogICAgICAgIEFWUGxheWVyKiBhdmZNZWRpYVBsYXllcjsKICAgICAgICBBVkNG
UGxheWVyKiBhdmNmTWVkaWFQbGF5ZXI7CiAgICB9IG1lZGlhOwp9OwoKZXh0ZXJuIGNvbnN0IFBs
YXRmb3JtTWVkaWEgTm9QbGF0Zm9ybU1lZGlhOwoKY2xhc3MgQ29udGVudFR5cGU7CmNsYXNzIEZy
YW1lVmlldzsKY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpjbGFzcyBJbnRSZWN0OwpjbGFzcyBJbnRT
aXplOwpjbGFzcyBNZWRpYVBsYXllcjsKc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeTsKY2xhc3Mg
VGltZVJhbmdlczsKCmNsYXNzIE1lZGlhUGxheWVyQ2xpZW50IHsKcHVibGljOgogICAgdmlydHVh
bCB+TWVkaWFQbGF5ZXJDbGllbnQoKSB7IH0KCgogICAgdmlydHVhbCBEb2N1bWVudCogbWVkaWFQ
bGF5ZXJPd25pbmdEb2N1bWVudCgpIHsgcmV0dXJuIDA7IH0KCgogICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQoKCiAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQoK
CiAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikg
eyB9CgoKICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck11dGVDaGFuZ2VkKE1lZGlhUGxheWVy
KikgeyB9CgoKICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxh
eWVyKikgeyB9CgoKICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZChN
ZWRpYVBsYXllciopIHsgfQoKCiAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSYXRlQ2hhbmdl
ZChNZWRpYVBsYXllciopIHsgfQoKCiAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQbGF5YmFj
a1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQoKCgoKICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllclNhd1Vuc3VwcG9ydGVkVHJhY2tzKE1lZGlhUGxheWVyKikgeyB9CgoKCiAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZXBhaW50KE1lZGlhUGxheWVyKikgeyB9CgoKICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllclNpemVDaGFuZ2VkKE1lZGlhUGxheWVyKikgeyB9CgogICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyRW5naW5lVXBkYXRlZChNZWRpYVBsYXllciopIHsgfQoKCgog
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKE1lZGlh
UGxheWVyKikgeyB9CgoKICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckNoYXJhY3RlcmlzdGlj
Q2hhbmdlZChNZWRpYVBsYXllciopIHsgfQoKCgogICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVy
UmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChNZWRpYVBsYXllciopIHsgcmV0dXJuIGZhbHNlOyB9
CgoKCiAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChNZWRp
YVBsYXllciopIHsgfQoKCgoKCgp9OwoKY2xhc3MgTWVkaWFQbGF5ZXIgewogICAgcHJpdmF0ZTog
TWVkaWFQbGF5ZXIoY29uc3QgTWVkaWFQbGF5ZXImKTsgTWVkaWFQbGF5ZXImIG9wZXJhdG9yPShj
b25zdCBNZWRpYVBsYXllciYpOyBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyB2b2lkKiBw
ID0gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0
ZU1hbGxvYyhwLCA6OldURjo6SW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNzTmV3KTsgcmV0dXJuIHA7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGVGcmVlKHAsIDo6V1RGOjpJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOyA6OldU
Rjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgdm9p
ZCogcCA9IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyA6OldURjo6ZmFzdE1hbGxvY01hdGNoVmFs
aWRhdGVNYWxsb2MocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsg
cmV0dXJuIHA7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0
TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFz
c05ld0FycmF5KTsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IFRo
aXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwpwdWJsaWM6CgogICAgc3Rh
dGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXI+IGNyZWF0ZShNZWRpYVBsYXllckNsaWVudCogY2xp
ZW50KQogICAgewogICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVkaWFQbGF5ZXIoY2xpZW50
KSk7CiAgICB9CiAgICB2aXJ0dWFsIH5NZWRpYVBsYXllcigpOwoKCiAgICBlbnVtIFN1cHBvcnRz
VHlwZSB7IElzTm90U3VwcG9ydGVkLCBJc1N1cHBvcnRlZCwgTWF5QmVTdXBwb3J0ZWQgfTsKICAg
IHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBDb250
ZW50VHlwZSYpOwogICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmc+Jik7CiAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogICAgc3RhdGljIHZvaWQgZ2V0
U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKICAgIHN0YXRpYyB2b2lkIGNsZWFy
TWVkaWFDYWNoZSgpOwogICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25z
dCBTdHJpbmcmKTsKCiAgICBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OwogICAgYm9v
bCBzdXBwb3J0c1NhdmUoKSBjb25zdDsKICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgp
IGNvbnN0OwoKICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKCgogICAg
SW50U2l6ZSBuYXR1cmFsU2l6ZSgpOwogICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0OwogICAgYm9v
bCBoYXNBdWRpbygpIGNvbnN0OwoKICAgIHZvaWQgc2V0RnJhbWVWaWV3KEZyYW1lVmlldyogZnJh
bWVWaWV3KSB7IG1fZnJhbWVWaWV3ID0gZnJhbWVWaWV3OyB9CiAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldygpIHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CiAgICBib29sIGluTWVkaWFEb2N1bWVudCgp
OwoKICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgdm9pZCBz
ZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpOwoKICAgIGJvb2wgbG9hZChjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgQ29udGVudFR5cGUmKTsKICAgIHZvaWQgY2FuY2VsTG9hZCgpOwoKICAgIGJv
b2wgdmlzaWJsZSgpIGNvbnN0OwogICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwoKICAgIHZvaWQg
cHJlcGFyZVRvUGxheSgpOwogICAgdm9pZCBwbGF5KCk7CiAgICB2b2lkIHBhdXNlKCk7CgoKCgoK
CgogICAgYm9vbCBwYXVzZWQoKSBjb25zdDsKICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwoKICAg
IGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CiAgICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0Owog
ICAgdm9pZCBzZWVrKGZsb2F0IHRpbWUpOwoKICAgIGZsb2F0IHN0YXJ0VGltZSgpIGNvbnN0OwoK
ICAgIGRvdWJsZSBpbml0aWFsVGltZSgpIGNvbnN0OwoKICAgIGZsb2F0IHJhdGUoKSBjb25zdDsK
ICAgIHZvaWQgc2V0UmF0ZShmbG9hdCk7CgogICAgYm9vbCBwcmVzZXJ2ZXNQaXRjaCgpIGNvbnN0
OwogICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChib29sKTsKCiAgICBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKCk7CiAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKTsKCiAgICB1bnNp
Z25lZCBieXRlc0xvYWRlZCgpOwoKICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0OwogICAgdm9pZCBz
ZXRWb2x1bWUoZmxvYXQpOwoKICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKICAgIHZvaWQgc2V0TXV0
ZWQoYm9vbCk7CgogICAgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0OwogICAgdm9pZCBz
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUpOwoKICAg
IGJvb2wgYXV0b3BsYXkoKSBjb25zdDsKICAgIHZvaWQgc2V0QXV0b3BsYXkoYm9vbCk7CgogICAg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICB2b2lkIHBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
KTsKCiAgICBlbnVtIE5ldHdvcmtTdGF0ZSB7IEVtcHR5LCBJZGxlLCBMb2FkaW5nLCBMb2FkZWQs
IEZvcm1hdEVycm9yLCBOZXR3b3JrRXJyb3IsIERlY29kZUVycm9yIH07CiAgICBOZXR3b3JrU3Rh
dGUgbmV0d29ya1N0YXRlKCk7CgogICAgZW51bSBSZWFkeVN0YXRlIHsgSGF2ZU5vdGhpbmcsIEhh
dmVNZXRhZGF0YSwgSGF2ZUN1cnJlbnREYXRhLCBIYXZlRnV0dXJlRGF0YSwgSGF2ZUVub3VnaERh
dGEgfTsKICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpOwoKICAgIGVudW0gTW92aWVMb2FkVHlw
ZSB7IFVua25vd24sIERvd25sb2FkLCBTdG9yZWRTdHJlYW0sIExpdmVTdHJlYW0gfTsKICAgIE1v
dmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0OwoKICAgIGVudW0gUHJlbG9hZCB7IE5v
bmUsIE1ldGFEYXRhLCBBdXRvIH07CiAgICBQcmVsb2FkIHByZWxvYWQoKSBjb25zdDsKICAgIHZv
aWQgc2V0UHJlbG9hZChQcmVsb2FkKTsKCiAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsK
ICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgIHZvaWQgdm9sdW1lQ2hhbmdlZChmbG9h
dCk7CiAgICB2b2lkIG11dGVDaGFuZ2VkKGJvb2wpOwogICAgdm9pZCB0aW1lQ2hhbmdlZCgpOwog
ICAgdm9pZCBzaXplQ2hhbmdlZCgpOwogICAgdm9pZCByYXRlQ2hhbmdlZCgpOwogICAgdm9pZCBw
bGF5YmFja1N0YXRlQ2hhbmdlZCgpOwogICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKTsKICAgIHZv
aWQgZmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCk7CiAgICB2b2lkIGNoYXJhY3RlcmlzdGljQ2hh
bmdlZCgpOwoKCiAgICB2b2lkIHJlcGFpbnQoKTsKCiAgICBNZWRpYVBsYXllckNsaWVudCogbWVk
aWFQbGF5ZXJDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhUGxheWVyQ2xpZW50OyB9Cgog
ICAgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CiAgICB2b2lkIHByZXBhcmVG
b3JSZW5kZXJpbmcoKTsKCiAgICBib29sIGNhbkxvYWRQb3N0ZXIoKSBjb25zdDsKICAgIHZvaWQg
c2V0UG9zdGVyKGNvbnN0IFN0cmluZyYpOwojIDMxMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCIKICAgIGJvb2wgc3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZygpIGNvbnN0OwoKICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0
ZUNoYW5nZWQoKTsKCgogICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0OwoK
ICAgIGZsb2F0IG1lZGlhVGltZUZvclRpbWVWYWx1ZShmbG9hdCkgY29uc3Q7CgogICAgZG91Ymxl
IG1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdDsKCiAgICB1bnNpZ25lZCBk
ZWNvZGVkRnJhbWVDb3VudCgpIGNvbnN0OwogICAgdW5zaWduZWQgZHJvcHBlZEZyYW1lQ291bnQo
KSBjb25zdDsKICAgIHVuc2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0OwogICAg
dW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7CgogICAgdm9pZCBzZXRQcml2
YXRlQnJvd3NpbmdNb2RlKGJvb2wpOwojIDMzOCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCIKcHJpdmF0ZToKICAgIE1lZGlhUGxheWVyKE1l
ZGlhUGxheWVyQ2xpZW50Kik7CiAgICB2b2lkIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKE1lZGlh
UGxheWVyRmFjdG9yeSopOwogICAgdm9pZCByZWxvYWRUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxh
eWVyPiopOwoKICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNZWRpYUVuZ2luZXMoKTsKCiAgICBN
ZWRpYVBsYXllckNsaWVudCogbV9tZWRpYVBsYXllckNsaWVudDsKICAgIFRpbWVyPE1lZGlhUGxh
eWVyPiBtX3JlbG9hZFRpbWVyOwogICAgT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZT4gbV9wcml2YXRlOwogICAgTWVkaWFQbGF5ZXJGYWN0b3J5KiBtX2N1cnJlbnRNZWRpYUVuZ2lu
ZTsKICAgIFN0cmluZyBtX3VybDsKICAgIFN0cmluZyBtX2NvbnRlbnRNSU1FVHlwZTsKICAgIFN0
cmluZyBtX2NvbnRlbnRUeXBlQ29kZWNzOwogICAgRnJhbWVWaWV3KiBtX2ZyYW1lVmlldzsKICAg
IEludFNpemUgbV9zaXplOwogICAgUHJlbG9hZCBtX3ByZWxvYWQ7CiAgICBib29sIG1fdmlzaWJs
ZTsKICAgIGZsb2F0IG1fcmF0ZTsKICAgIGZsb2F0IG1fdm9sdW1lOwogICAgYm9vbCBtX211dGVk
OwogICAgYm9vbCBtX3ByZXNlcnZlc1BpdGNoOwogICAgYm9vbCBtX3ByaXZhdGVCcm93c2luZzsK
ICAgIGJvb2wgbV9zaG91bGRQcmVwYXJlVG9SZW5kZXI7CgoKCn07Cgp0eXBlZGVmIFBhc3NPd25Q
dHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiAoKkNyZWF0ZU1lZGlhRW5naW5lUGxheWVy
KShNZWRpYVBsYXllciopOwp0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVz
KShIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUpKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBjb2RlY3MpOwp0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRp
YUNhY2hlKShWZWN0b3I8U3RyaW5nPiYpOwp0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFy
TWVkaWFDYWNoZSkoKTsKdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVG
b3JTaXRlKShjb25zdCBTdHJpbmcmKTsKCnR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0
cmFyKShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywg
TWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCiAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNh
Y2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2Fj
aGVGb3JTaXRlKTsKCgp9CiMgMzUgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oIiAyCgoKCgoKbmFtZXNwYWNlIFdlYkNvcmUgewoKCgoKCmNsYXNzIEV2ZW50
OwpjbGFzcyBIVE1MU291cmNlRWxlbWVudDsKY2xhc3MgTWVkaWFDb250cm9sczsKY2xhc3MgTWVk
aWFFcnJvcjsKY2xhc3MgS1VSTDsKY2xhc3MgVGltZVJhbmdlczsKY2xhc3MgVWludDhBcnJheTsK
IyA2MSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgiCmNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBs
YXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHByaXZhdGUgQWN0aXZl
RE9NT2JqZWN0IHsKcHVibGljOgogICAgTWVkaWFQbGF5ZXIqIHBsYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcGxheWVyLmdldCgpOyB9CgogICAgdmlydHVhbCBib29sIGlzVmlkZW8oKSBjb25zdCA9
IDA7CiAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CgogICAgdm9pZCByZXdpbmQoZmxvYXQg
dGltZURlbHRhKTsKICAgIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpOwoKCiAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07CgogICAgdmly
dHVhbCBib29sIHN1cHBvcnRzU2F2ZSgpIGNvbnN0OwoKICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZv
cm1NZWRpYSgpIGNvbnN0OwoKICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dDsKCgogICAgdm9pZCBzY2hlZHVsZUxvYWQoKTsKCiAgICBNZWRpYVBsYXllcjo6TW92aWVMb2Fk
VHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3Q7CgogICAgYm9vbCBpbkFjdGl2ZURvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9pbkFjdGl2ZURvY3VtZW50OyB9CgoKCiAgICBQYXNzUmVmUHRyPE1l
ZGlhRXJyb3I+IGVycm9yKCkgY29uc3Q7CgoKICAgIHZvaWQgc2V0U3JjKGNvbnN0IFN0cmluZyYp
OwogICAgY29uc3QgS1VSTCYgY3VycmVudFNyYygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFNy
YzsgfQoKICAgIGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwgTkVUV09SS19JRExF
LCBORVRXT1JLX0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAgICBOZXR3b3JrU3RhdGUg
bmV0d29ya1N0YXRlKCkgY29uc3Q7CgogICAgU3RyaW5nIHByZWxvYWQoKSBjb25zdDsKICAgIHZv
aWQgc2V0UHJlbG9hZChjb25zdCBTdHJpbmcmKTsKCiAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IGJ1ZmZlcmVkKCkgY29uc3Q7CiAgICB2b2lkIGxvYWQoRXhjZXB0aW9uQ29kZSYpOwogICAgU3Ry
aW5nIGNhblBsYXlUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0OwoKCiAgICBlbnVt
IFJlYWR5U3RhdGUgeyBIQVZFX05PVEhJTkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9E
QVRBLCBIQVZFX0ZVVFVSRV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRBIH07CiAgICBSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdDsKICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwoKCiAgICBmbG9h
dCBjdXJyZW50VGltZSgpIGNvbnN0OwogICAgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgZG91YmxlIGluaXRpYWxUaW1lKCkgY29uc3Q7CiAgICBmbG9hdCBz
dGFydFRpbWUoKSBjb25zdDsKICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CiAgICBib29sIHBh
dXNlZCgpIGNvbnN0OwogICAgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0OwogICAg
dm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KTsKICAgIGZsb2F0IHBsYXliYWNrUmF0
ZSgpIGNvbnN0OwogICAgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpOwogICAgYm9vbCB3ZWJr
aXRQcmVzZXJ2ZXNQaXRjaCgpIGNvbnN0OwogICAgdm9pZCBzZXRXZWJraXRQcmVzZXJ2ZXNQaXRj
aChib29sKTsKICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkKCk7CiAgICBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3Q7CiAgICBib29sIGVuZGVkKCkgY29uc3Q7
CiAgICBib29sIGF1dG9wbGF5KCkgY29uc3Q7CiAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wgYik7
CiAgICBib29sIGxvb3AoKSBjb25zdDsKICAgIHZvaWQgc2V0TG9vcChib29sIGIpOwogICAgdm9p
ZCBwbGF5KCk7CiAgICB2b2lkIHBhdXNlKCk7CgoKICAgIGJvb2wgd2Via2l0SGFzQ2xvc2VkQ2Fw
dGlvbnMoKSBjb25zdDsKICAgIGJvb2wgd2Via2l0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29u
c3Q7CiAgICB2b2lkIHNldFdlYmtpdENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKTsKIyAxNTcg
Ii4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIgogICAgYm9v
bCBjb250cm9scygpIGNvbnN0OwogICAgdm9pZCBzZXRDb250cm9scyhib29sKTsKICAgIGZsb2F0
IHZvbHVtZSgpIGNvbnN0OwogICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCk7CgogICAg
dm9pZCB0b2dnbGVQbGF5U3RhdGUoKTsKICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcoKTsKICAgIHZv
aWQgZW5kU2NydWJiaW5nKCk7CgogICAgYm9vbCBjYW5QbGF5KCkgY29uc3Q7CgogICAgZmxvYXQg
cGVyY2VudExvYWRlZCgpIGNvbnN0OwojIDE4MyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgiCiAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QgeyByZXR1cm4gIW1fcGxheWVyIHx8IG1fcGxheWVyLT5oYXNTaW5nbGVTZWN1cml0eU9y
aWdpbigpOyB9CgogICAgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdDsKICAgIHZvaWQgZW50ZXJG
dWxsc2NyZWVuKCk7CiAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CgogICAgYm9vbCBoYXNDbG9z
ZWRDYXB0aW9ucygpIGNvbnN0OwogICAgYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUoKSBjb25z
dDsKICAgIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpOwoKICAgIE1lZGlhQ29u
dHJvbHMqIG1lZGlhQ29udHJvbHMoKTsKCiAgICB2b2lkIHNvdXJjZVdpbGxCZVJlbW92ZWQoSFRN
TFNvdXJjZUVsZW1lbnQqKTsKICAgIHZvaWQgc291cmNlV2FzQWRkZWQoSFRNTFNvdXJjZUVsZW1l
bnQqKTsKCiAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CgoKICAgIHN0
YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CiAgICBzdGF0
aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKTsKICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CgogICAgYm9vbCBpc1BsYXlpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXlpbmc7IH0KIyAyMTQgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oIgpwcm90ZWN0ZWQ6CiAgICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgp
OwoKICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
IHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKICAgIHZpcnR1
YWwgdm9pZCBhdHRhY2goKTsKCiAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Cgog
ICAgZW51bSBEaXNwbGF5TW9kZSB7IFVua25vd24sIE5vbmUsIFBvc3RlciwgUG9zdGVyV2FpdGlu
Z0ZvclZpZGVvLCBWaWRlbyB9OwogICAgRGlzcGxheU1vZGUgZGlzcGxheU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXlNb2RlOyB9CiAgICB2aXJ0dWFsIHZvaWQgc2V0RGlzcGxheU1vZGUo
RGlzcGxheU1vZGUgbW9kZSkgeyBtX2Rpc3BsYXlNb2RlID0gbW9kZTsgfQoKICAgIHZpcnR1YWwg
Ym9vbCBpc01lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KCgogICAgZW51bSBC
ZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3MgewogICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKICAg
ICAgICBSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkUmVzdHJpY3Rpb24gPSAxIDw8IDAsCiAgICAg
ICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uID0gMSA8PCAxLAog
ICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW5SZXN0cmljdGlvbiA9IDEgPDwg
MiwKICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRpYVJlc3RyaWN0aW9uID0gMSA8
PCAzLAogICAgfTsKICAgIHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7Cgog
ICAgYm9vbCB1c2VyR2VzdHVyZVJlcXVpcmVkRm9yTG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
dHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZFJlc3RyaWN0aW9uOyB9CiAgICBi
b29sIHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JSYXRlQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlUmVzdHJpY3Rpb247
IH0KICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZEZvckZ1bGxzY3JlZW4oKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW5SZXN0
cmljdGlvbjsgfQogICAgYm9vbCBwYWdlQ29uc2VudFJlcXVpcmVkRm9yTG9hZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWFSZXN0
cmljdGlvbjsgfQoKICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3Ry
aWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmljdGlvbjsgfQog
ICAgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJl
c3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQoKcHJpdmF0ZToK
ICAgIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXIoKTsKCiAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRl
Q2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMpOwogICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
Kik7CiAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjYWxjU3R5
bGUoU3R5bGVDaGFuZ2UpOwoKICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50Kik7CgogICAgdmlydHVhbCB2b2lkIGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CiAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCk7CgoKICAgIHZp
cnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CiAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChS
ZWFzb25Gb3JTdXNwZW5zaW9uKTsKICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCk7CiAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3Q7CgogICAgdmlydHVhbCB2b2lkIG1lZGlhVm9sdW1lRGlkQ2hhbmdlKCk7CgogICAgdmlydHVh
bCB2b2lkIHVwZGF0ZURpc3BsYXlTdGF0ZSgpIHsgfQoKICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7CiAgICB2b2lkIHNldE5ldHdvcmtTdGF0ZShNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlKTsKCiAgICB2aXJ0dWFsIERvY3VtZW50KiBtZWRpYVBsYXllck93
bmluZ0RvY3VtZW50KCk7CiAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJOZXR3b3JrU3RhdGVD
aGFuZ2VkKE1lZGlhUGxheWVyKik7CiAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZWFkeVN0
YXRlQ2hhbmdlZChNZWRpYVBsYXllciopOwogICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyVGlt
ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclZvbHVt
ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck11dGVD
aGFuZ2VkKE1lZGlhUGxheWVyKik7CiAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEdXJhdGlv
bkNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJhdGVD
aGFuZ2VkKE1lZGlhUGxheWVyKik7CiAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQbGF5YmFj
a1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopOwogICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
U2F3VW5zdXBwb3J0ZWRUcmFja3MoTWVkaWFQbGF5ZXIqKTsKICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllclJlcGFpbnQoTWVkaWFQbGF5ZXIqKTsKICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
clNpemVDaGFuZ2VkKE1lZGlhUGxheWVyKik7CgogICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVy
UmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChNZWRpYVBsYXllciopOwogICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKCiAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKE1lZGlhUGxheWVyKik7CgogICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKE1lZGlhUGxheWVy
Kik7CiAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoTWVk
aWFQbGF5ZXIqKTsKCgoKCgoKICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlh
RWxlbWVudD4qKTsKICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlh
RWxlbWVudD4qKTsKICAgIHZvaWQgcHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRNTE1l
ZGlhRWxlbWVudD4qKTsKICAgIHZvaWQgcGxheWJhY2tQcm9ncmVzc1RpbWVyRmlyZWQoVGltZXI8
SFRNTE1lZGlhRWxlbWVudD4qKTsKICAgIHZvaWQgc3RhcnRQbGF5YmFja1Byb2dyZXNzVGltZXIo
KTsKICAgIHZvaWQgc3RhcnRQcm9ncmVzc0V2ZW50VGltZXIoKTsKICAgIHZvaWQgc3RvcFBlcmlv
ZGljVGltZXJzKCk7CgogICAgdm9pZCBzZWVrKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgIHZvaWQgZmluaXNoU2VlaygpOwogICAgdm9pZCBjaGVja0lmU2Vla05lZWRlZCgpOwogICAg
dm9pZCBhZGRQbGF5ZWRSYW5nZShmbG9hdCBzdGFydCwgZmxvYXQgZW5kKTsKCiAgICB2b2lkIHNj
aGVkdWxlVGltZXVwZGF0ZUV2ZW50KGJvb2wgcGVyaW9kaWNFdmVudCk7CiAgICB2b2lkIHNjaGVk
dWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwoKCiAgICB2b2lkIHNlbGVj
dE1lZGlhUmVzb3VyY2UoKTsKICAgIHZvaWQgbG9hZFJlc291cmNlKGNvbnN0IEtVUkwmLCBDb250
ZW50VHlwZSYpOwogICAgdm9pZCBzY2hlZHVsZU5leHRTb3VyY2VDaGlsZCgpOwogICAgdm9pZCBs
b2FkTmV4dFNvdXJjZUNoaWxkKCk7CiAgICB2b2lkIHVzZXJDYW5jZWxsZWRMb2FkKCk7CiAgICBi
b29sIGhhdmVQb3RlbnRpYWxTb3VyY2VDaGlsZCgpOwogICAgdm9pZCBub25lU3VwcG9ydGVkKCk7
CiAgICB2b2lkIG1lZGlhRW5naW5lRXJyb3IoUGFzc1JlZlB0cjxNZWRpYUVycm9yPiBlcnIpOwog
ICAgdm9pZCBjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKCk7CiAgICB2b2lkIHdhaXRG
b3JTb3VyY2VDaGFuZ2UoKTsKICAgIHZvaWQgcHJlcGFyZVRvUGxheSgpOwoKICAgIGVudW0gSW52
YWxpZFNvdXJjZUFjdGlvbiB7IERvTm90aGluZywgQ29tcGxhaW4gfTsKICAgIGJvb2wgaXNTYWZl
VG9Mb2FkVVJMKGNvbnN0IEtVUkwmLCBJbnZhbGlkU291cmNlQWN0aW9uKTsKICAgIEtVUkwgc2Vs
ZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiwgSW52YWxpZFNvdXJjZUFjdGlvbik7CiAg
ICB2b2lkIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKCgoK
CgoKICAgIHZvaWQgbG9hZEludGVybmFsKCk7CiAgICB2b2lkIHBsYXlJbnRlcm5hbCgpOwogICAg
dm9pZCBwYXVzZUludGVybmFsKCk7CgogICAgdm9pZCBwcmVwYXJlRm9yTG9hZCgpOwogICAgdm9p
ZCBhbGxvd1ZpZGVvUmVuZGVyaW5nKCk7CgogICAgYm9vbCBwcm9jZXNzaW5nTWVkaWFQbGF5ZXJD
YWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2sg
PiAwOyB9CiAgICB2b2lkIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKSB7ICsr
bV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjazsgfQogICAgdm9pZCBlbmRQcm9jZXNzaW5n
TWVkaWFQbGF5ZXJDYWxsYmFjaygpIHsgZG8gaWYgKCEobV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJD
YWxsYmFjaykpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgiLCAzNTIsIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICJtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgLS1tX3Byb2Nlc3NpbmdNZWRpYVBsYXll
ckNhbGxiYWNrOyB9CgogICAgdm9pZCB1cGRhdGVWb2x1bWUoKTsKICAgIHZvaWQgdXBkYXRlUGxh
eVN0YXRlKCk7CiAgICBib29sIHBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0OwogICAgYm9vbCBl
bmRlZFBsYXliYWNrKCkgY29uc3Q7CiAgICBib29sIHN0b3BwZWREdWVUb0Vycm9ycygpIGNvbnN0
OwogICAgYm9vbCBwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24oKSBjb25zdDsKICAgIGJvb2wgY291
bGRQbGF5SWZFbm91Z2hEYXRhKCkgY29uc3Q7CgogICAgZmxvYXQgbWluVGltZVNlZWthYmxlKCkg
Y29uc3Q7CiAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdDsKCgogICAgdm9pZCBzZXRQ
YXVzZWRJbnRlcm5hbChib29sKTsKCiAgICB2aXJ0dWFsIHZvaWQgbWVkaWFDYW5TdGFydCgpOwoK
ICAgIHZvaWQgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoYm9vbCk7CgogICAgdm9pZCBpbnZhbGlk
YXRlQ2FjaGVkVGltZSgpOwogICAgdm9pZCByZWZyZXNoQ2FjaGVkVGltZSgpIGNvbnN0OwoKICAg
IGJvb2wgaGFzTWVkaWFDb250cm9scygpOwogICAgYm9vbCBjcmVhdGVNZWRpYUNvbnRyb2xzKCk7
CiAgICB2b2lkIGNvbmZpZ3VyZU1lZGlhQ29udHJvbHMoKTsKCiAgICB2aXJ0dWFsIHZvaWQqIHBy
ZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50Kik7CgogICAgVGltZXI8SFRNTE1lZGlhRWxlbWVu
dD4gbV9sb2FkVGltZXI7CiAgICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX2FzeW5jRXZlbnRU
aW1lcjsKICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwog
ICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9wbGF5YmFja1Byb2dyZXNzVGltZXI7CiAgICBW
ZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKICAgIFJlZlB0cjxUaW1lUmFu
Z2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7CgogICAgZmxvYXQgbV9wbGF5YmFja1JhdGU7CiAgICBm
bG9hdCBtX2RlZmF1bHRQbGF5YmFja1JhdGU7CiAgICBib29sIG1fd2Via2l0UHJlc2VydmVzUGl0
Y2g7CiAgICBOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGU7CiAgICBSZWFkeVN0YXRlIG1fcmVh
ZHlTdGF0ZTsKICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlTWF4aW11bTsKICAgIEtVUkwgbV9j
dXJyZW50U3JjOwoKICAgIFJlZlB0cjxNZWRpYUVycm9yPiBtX2Vycm9yOwoKICAgIGZsb2F0IG1f
dm9sdW1lOwogICAgZmxvYXQgbV9sYXN0U2Vla1RpbWU7CgogICAgdW5zaWduZWQgbV9wcmV2aW91
c1Byb2dyZXNzOwogICAgZG91YmxlIG1fcHJldmlvdXNQcm9ncmVzc1RpbWU7CgoKICAgIGRvdWJs
ZSBtX2xhc3RUaW1lVXBkYXRlRXZlbnRXYWxsVGltZTsKCgogICAgZmxvYXQgbV9sYXN0VGltZVVw
ZGF0ZUV2ZW50TW92aWVUaW1lOwoKCiAgICBlbnVtIExvYWRTdGF0ZSB7IFdhaXRpbmdGb3JTb3Vy
Y2UsIExvYWRpbmdGcm9tU3JjQXR0ciwgTG9hZGluZ0Zyb21Tb3VyY2VFbGVtZW50IH07CiAgICBM
b2FkU3RhdGUgbV9sb2FkU3RhdGU7CiAgICBIVE1MU291cmNlRWxlbWVudCogbV9jdXJyZW50U291
cmNlTm9kZTsKICAgIE5vZGUqIG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXI7CiAgICBOb2RlKiBz
b3VyY2VDaGlsZEVuZE9mTGlzdFZhbHVlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZSo+KHRo
aXMpOyB9CgogICAgT3duUHRyPE1lZGlhUGxheWVyPiBtX3BsYXllcjsKCgoKCiAgICBCZWhhdmlv
clJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKCiAgICBNZWRpYVBsYXllcjo6UHJlbG9hZCBt
X3ByZWxvYWQ7CgogICAgRGlzcGxheU1vZGUgbV9kaXNwbGF5TW9kZTsKCgoKICAgIGludCBtX3By
b2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrOwoKCgoKCgogICAgbXV0YWJsZSBmbG9hdCBtX2Nh
Y2hlZFRpbWU7CiAgICBtdXRhYmxlIGRvdWJsZSBtX2NhY2hlZFRpbWVXYWxsQ2xvY2tVcGRhdGVU
aW1lOwogICAgbXV0YWJsZSBkb3VibGUgbV9taW5pbXVtV2FsbENsb2NrVGltZVRvQ2FjaGVNZWRp
YVRpbWU7CgogICAgYm9vbCBtX3BsYXlpbmcgOiAxOwogICAgYm9vbCBtX2lzV2FpdGluZ1VudGls
TWVkaWFDYW5TdGFydCA6IDE7CiAgICBib29sIG1fc2hvdWxkRGVsYXlMb2FkRXZlbnQgOiAxOwog
ICAgYm9vbCBtX2hhdmVGaXJlZExvYWRlZERhdGEgOiAxOwogICAgYm9vbCBtX2luQWN0aXZlRG9j
dW1lbnQgOiAxOwogICAgYm9vbCBtX2F1dG9wbGF5aW5nIDogMTsKICAgIGJvb2wgbV9tdXRlZCA6
IDE7CiAgICBib29sIG1fcGF1c2VkIDogMTsKICAgIGJvb2wgbV9zZWVraW5nIDogMTsKCgogICAg
Ym9vbCBtX3NlbnRTdGFsbGVkRXZlbnQgOiAxOwoKCiAgICBib29sIG1fc2VudEVuZEV2ZW50IDog
MTsKCiAgICBib29sIG1fcGF1c2VkSW50ZXJuYWwgOiAxOwoKCgogICAgYm9vbCBtX3NlbmRQcm9n
cmVzc0V2ZW50cyA6IDE7CgogICAgYm9vbCBtX2lzRnVsbHNjcmVlbiA6IDE7CiAgICBib29sIG1f
Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlIDogMTsKCgoKCgogICAgYm9vbCBtX2Rpc3BhdGNoaW5nQ2Fu
UGxheUV2ZW50IDogMTsKICAgIGJvb2wgbV9sb2FkSW5pdGlhdGVkQnlVc2VyR2VzdHVyZSA6IDE7
CiAgICBib29sIG1fY29tcGxldGVseUxvYWRlZCA6IDE7CiAgICBib29sIG1faGF2ZVByZXBhcmVk
VG9QbGF5IDogMTsKCgoKCgoKCn07Cgp9CiMgMSAiLi4vaW5jbHVkZS9XZWJDb3JlL0hUTUxNZWRp
YUVsZW1lbnQuaCIgMgojIDM4ICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSIgMgojIDEgIi4uL2luY2x1ZGUvV2ViQ29y
ZS9Tb2Z0TGlua2luZy5oIiAxCiMgMSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1NvZnRMaW5raW5nLmgiIDEKIyAzMCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1NvZnRMaW5raW5nLmgiCiMgMSAiL3Vzci9pbmNsdWRlL2RsZmNuLmgiIDEgMyA0CiMg
MzEgIi91c3IvaW5jbHVkZS9kbGZjbi5oIiAzIDQKI2RlZmluZSBfRExGQ05fSF8gCgoKZXh0ZXJu
ICJDIiB7CiMgNDUgIi91c3IvaW5jbHVkZS9kbGZjbi5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgZGxf
aW5mbyB7CiAgICAgICAgY29uc3QgY2hhciAqZGxpX2ZuYW1lOwogICAgICAgIHZvaWQgKmRsaV9m
YmFzZTsKICAgICAgICBjb25zdCBjaGFyICpkbGlfc25hbWU7CiAgICAgICAgdm9pZCAqZGxpX3Nh
ZGRyOwp9IERsX2luZm87CgpleHRlcm4gaW50IGRsYWRkcihjb25zdCB2b2lkICosIERsX2luZm8g
Kik7CgoKZXh0ZXJuIGludCBkbGNsb3NlKHZvaWQgKiBfX2hhbmRsZSk7CmV4dGVybiBjaGFyICog
ZGxlcnJvcih2b2lkKTsKZXh0ZXJuIHZvaWQgKiBkbG9wZW4oY29uc3QgY2hhciAqIF9fcGF0aCwg
aW50IF9fbW9kZSk7CmV4dGVybiB2b2lkICogZGxzeW0odm9pZCAqIF9faGFuZGxlLCBjb25zdCBj
aGFyICogX19zeW1ib2wpOwoKCmV4dGVybiBib29sIGRsb3Blbl9wcmVmbGlnaHQoY29uc3QgY2hh
ciogX19wYXRoKSA7CgoKCiNkZWZpbmUgUlRMRF9MQVpZIDB4MQojZGVmaW5lIFJUTERfTk9XIDB4
MgojZGVmaW5lIFJUTERfTE9DQUwgMHg0CiNkZWZpbmUgUlRMRF9HTE9CQUwgMHg4CgoKI2RlZmlu
ZSBSVExEX05PTE9BRCAweDEwCiNkZWZpbmUgUlRMRF9OT0RFTEVURSAweDgwCiNkZWZpbmUgUlRM
RF9GSVJTVCAweDEwMAoKCgoKI2RlZmluZSBSVExEX05FWFQgKCh2b2lkICopIC0xKQojZGVmaW5l
IFJUTERfREVGQVVMVCAoKHZvaWQgKikgLTIpCiNkZWZpbmUgUlRMRF9TRUxGICgodm9pZCAqKSAt
MykKI2RlZmluZSBSVExEX01BSU5fT05MWSAoKHZvaWQgKikgLTUpCgoKCn0KIyAzMSAiLi4vLi4v
Li4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NvZnRMaW5raW5nLmgiIDIKCiNkZWZpbmUg
U09GVF9MSU5LX0xJQlJBUlkobGliKSBzdGF0aWMgdm9pZCogbGliICMjTGlicmFyeSgpIHsgc3Rh
dGljIHZvaWQqIGR5bGliID0gZGxvcGVuKCIvdXNyL2xpYi8iICNsaWIgIi5keWxpYiIsIFJUTERf
Tk9XKTsgQVNTRVJUKGR5bGliKTsgcmV0dXJuIGR5bGliOyB9CgoKCgoKCgojZGVmaW5lIFNPRlRf
TElOS19GUkFNRVdPUksoZnJhbWV3b3JrKSBzdGF0aWMgdm9pZCogZnJhbWV3b3JrICMjTGlicmFy
eSgpIHsgc3RhdGljIHZvaWQqIGZyYW1ld29ya0xpYnJhcnkgPSBkbG9wZW4oIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzLyIgI2ZyYW1ld29yayAiLmZyYW1ld29yay8iICNmcmFtZXdvcmssIFJU
TERfTk9XKTsgQVNTRVJUKGZyYW1ld29ya0xpYnJhcnkpOyByZXR1cm4gZnJhbWV3b3JrTGlicmFy
eTsgfQoKCgoKCgoKI2RlZmluZSBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKGZyYW1ld29y
aykgc3RhdGljIHZvaWQqIGZyYW1ld29yayAjI0xpYnJhcnkoKSB7IHN0YXRpYyB2b2lkKiBmcmFt
ZXdvcmtMaWJyYXJ5ID0gZGxvcGVuKCIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy8iICNmcmFt
ZXdvcmsgIi5mcmFtZXdvcmsvIiAjZnJhbWV3b3JrLCBSVExEX05PVyk7IHJldHVybiBmcmFtZXdv
cmtMaWJyYXJ5OyB9CgoKCgoKCiNkZWZpbmUgU09GVF9MSU5LX0ZSQU1FV09SS19JTl9DT1JFU0VS
VklDRVNfVU1CUkVMTEEoZnJhbWV3b3JrKSBzdGF0aWMgdm9pZCogZnJhbWV3b3JrICMjTGlicmFy
eSgpIHsgc3RhdGljIHZvaWQqIGZyYW1ld29ya0xpYnJhcnkgPSBkbG9wZW4oIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy8iICNmcmFt
ZXdvcmsgIi5mcmFtZXdvcmsvIiAjZnJhbWV3b3JrLCBSVExEX05PVyk7IEFTU0VSVChmcmFtZXdv
cmtMaWJyYXJ5KTsgcmV0dXJuIGZyYW1ld29ya0xpYnJhcnk7IH0KCgoKCgoKCiNkZWZpbmUgU09G
VF9MSU5LKGZyYW1ld29yayxmdW5jdGlvbk5hbWUscmVzdWx0VHlwZSxwYXJhbWV0ZXJEZWNsYXJh
dGlvbnMscGFyYW1ldGVyTmFtZXMpIHN0YXRpYyByZXN1bHRUeXBlIGluaXQgIyNmdW5jdGlvbk5h
bWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBzdGF0aWMgcmVzdWx0VHlwZSAoKnNvZnRMaW5rICMj
ZnVuY3Rpb25OYW1lKSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMgPSBpbml0ICMjZnVuY3Rpb25OYW1l
OyBzdGF0aWMgcmVzdWx0VHlwZSBpbml0ICMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0
aW9ucyB7IHNvZnRMaW5rICMjZnVuY3Rpb25OYW1lID0gKHJlc3VsdFR5cGUgKCopIHBhcmFtZXRl
ckRlY2xhcmF0aW9ucykgZGxzeW0oZnJhbWV3b3JrICMjTGlicmFyeSgpLCAjZnVuY3Rpb25OYW1l
KTsgQVNTRVJUKHNvZnRMaW5rICMjZnVuY3Rpb25OYW1lKTsgcmV0dXJuIHNvZnRMaW5rICMjZnVu
Y3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyB9IGlubGluZSByZXN1bHRUeXBlIGZ1bmN0aW9uTmFt
ZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMgeyByZXR1cm4gc29mdExpbmsgIyNmdW5jdGlvbk5hbWUg
cGFyYW1ldGVyTmFtZXM7IH0KIyA4MCAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1NvZnRMaW5raW5nLmgiCiNkZWZpbmUgU09GVF9MSU5LX09QVElPTkFMKGZyYW1ld29yayxm
dW5jdGlvbk5hbWUscmVzdWx0VHlwZSxjYWxsaW5nQ29udmVudGlvbixwYXJhbWV0ZXJEZWNsYXJh
dGlvbnMpIHR5cGVkZWYgcmVzdWx0VHlwZSAoKmZ1bmN0aW9uTmFtZSAjI1B0clR5cGUpIHBhcmFt
ZXRlckRlY2xhcmF0aW9uczsgc3RhdGljIGZ1bmN0aW9uTmFtZSAjI1B0clR5cGUgZnVuY3Rpb25O
YW1lICMjUHRyKCkgeyBzdGF0aWMgZnVuY3Rpb25OYW1lICMjUHRyVHlwZSBwdHIgPSByZWludGVy
cHJldF9jYXN0PGZ1bmN0aW9uTmFtZSAjI1B0clR5cGU+KGRsc3ltKGZyYW1ld29yayAjI0xpYnJh
cnkoKSwgI2Z1bmN0aW9uTmFtZSkpOyByZXR1cm4gcHRyOyB9CiMgODkgIi4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Tb2Z0TGlua2luZy5oIgojZGVmaW5lIFNPRlRfTElOS19D
TEFTUyhmcmFtZXdvcmssY2xhc3NOYW1lKSBzdGF0aWMgQ2xhc3MgaW5pdCAjI2NsYXNzTmFtZSgp
OyBzdGF0aWMgQ2xhc3MgKCpnZXQgIyNjbGFzc05hbWUgIyNDbGFzcykoKSA9IGluaXQgIyNjbGFz
c05hbWU7IHN0YXRpYyBDbGFzcyBjbGFzcyAjI2NsYXNzTmFtZTsgc3RhdGljIENsYXNzIGNsYXNz
TmFtZSAjI0Z1bmN0aW9uKCkgeyByZXR1cm4gY2xhc3MgIyNjbGFzc05hbWU7IH0gc3RhdGljIENs
YXNzIGluaXQgIyNjbGFzc05hbWUoKSB7IGZyYW1ld29yayAjI0xpYnJhcnkoKTsgY2xhc3MgIyNj
bGFzc05hbWUgPSBvYmpjX2dldENsYXNzKCNjbGFzc05hbWUpOyBBU1NFUlQoY2xhc3MgIyNjbGFz
c05hbWUpOyBnZXQgIyNjbGFzc05hbWUgIyNDbGFzcyA9IGNsYXNzTmFtZSAjI0Z1bmN0aW9uOyBy
ZXR1cm4gY2xhc3MgIyNjbGFzc05hbWU7IH0KIyAxMDggIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Tb2Z0TGlua2luZy5oIgojZGVmaW5lIFNPRlRfTElOS19QT0lOVEVSKGZy
YW1ld29yayxuYW1lLHR5cGUpIHN0YXRpYyB0eXBlIGluaXQgIyNuYW1lKCk7IHN0YXRpYyB0eXBl
ICgqZ2V0ICMjbmFtZSkoKSA9IGluaXQgIyNuYW1lOyBzdGF0aWMgdHlwZSBwb2ludGVyICMjbmFt
ZTsgc3RhdGljIHR5cGUgbmFtZSAjI0Z1bmN0aW9uKCkgeyByZXR1cm4gcG9pbnRlciAjI25hbWU7
IH0gc3RhdGljIHR5cGUgaW5pdCAjI25hbWUoKSB7IHZvaWQqKiBwb2ludGVyID0gc3RhdGljX2Nh
c3Q8dm9pZCoqPihkbHN5bShmcmFtZXdvcmsgIyNMaWJyYXJ5KCksICNuYW1lKSk7IEFTU0VSVChw
b2ludGVyKTsgcG9pbnRlciAjI25hbWUgPSBzdGF0aWNfY2FzdDx0eXBlPigqcG9pbnRlcik7IGdl
dCAjI25hbWUgPSBuYW1lICMjRnVuY3Rpb247IHJldHVybiBwb2ludGVyICMjbmFtZTsgfQojIDEy
NyAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NvZnRMaW5raW5nLmgiCiNk
ZWZpbmUgU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoZnJhbWV3b3JrLG5hbWUsdHlwZSkgc3Rh
dGljIHR5cGUgaW5pdCAjI25hbWUoKTsgc3RhdGljIHR5cGUgKCpnZXQgIyNuYW1lKSgpID0gaW5p
dCAjI25hbWU7IHN0YXRpYyB0eXBlIHBvaW50ZXIgIyNuYW1lOyBzdGF0aWMgdHlwZSBuYW1lICMj
RnVuY3Rpb24oKSB7IHJldHVybiBwb2ludGVyICMjbmFtZTsgfSBzdGF0aWMgdHlwZSBpbml0ICMj
bmFtZSgpIHsgdm9pZCoqIHBvaW50ZXIgPSBzdGF0aWNfY2FzdDx2b2lkKio+KGRsc3ltKGZyYW1l
d29yayAjI0xpYnJhcnkoKSwgI25hbWUpKTsgaWYgKHBvaW50ZXIpIHBvaW50ZXIgIyNuYW1lID0g
c3RhdGljX2Nhc3Q8dHlwZT4oKnBvaW50ZXIpOyBnZXQgIyNuYW1lID0gbmFtZSAjI0Z1bmN0aW9u
OyByZXR1cm4gcG9pbnRlciAjI25hbWU7IH0KIyAxNDYgIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Tb2Z0TGlua2luZy5oIgojZGVmaW5lIFNPRlRfTElOS19DT05TVEFOVChm
cmFtZXdvcmssbmFtZSx0eXBlKSBzdGF0aWMgdHlwZSBpbml0ICMjbmFtZSgpOyBzdGF0aWMgdHlw
ZSAoKmdldCAjI25hbWUpKCkgPSBpbml0ICMjbmFtZTsgc3RhdGljIHR5cGUgY29uc3RhbnQgIyNu
YW1lOyBzdGF0aWMgdHlwZSBuYW1lICMjRnVuY3Rpb24oKSB7IHJldHVybiBjb25zdGFudCAjI25h
bWU7IH0gc3RhdGljIHR5cGUgaW5pdCAjI25hbWUoKSB7IHZvaWQqIGNvbnN0YW50ID0gZGxzeW0o
ZnJhbWV3b3JrICMjTGlicmFyeSgpLCAjbmFtZSk7IEFTU0VSVChjb25zdGFudCk7IGNvbnN0YW50
ICMjbmFtZSA9ICpzdGF0aWNfY2FzdDx0eXBlKj4oY29uc3RhbnQpOyBnZXQgIyNuYW1lID0gbmFt
ZSAjI0Z1bmN0aW9uOyByZXR1cm4gY29uc3RhbnQgIyNuYW1lOyB9CiMgMSAiLi4vaW5jbHVkZS9X
ZWJDb3JlL1NvZnRMaW5raW5nLmgiIDIKIyAzOSAiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0iIDIKIyAxICIvdXNyL2lu
Y2x1ZGUvb2JqYy9vYmpjLXJ1bnRpbWUuaCIgMSAzIDQKIyAxICIvdXNyL2luY2x1ZGUvb2JqYy9y
dW50aW1lLmgiIDEgMyA0CiMgMjUgIi91c3IvaW5jbHVkZS9vYmpjL3J1bnRpbWUuaCIgMyA0CiNk
ZWZpbmUgX09CSkNfUlVOVElNRV9IIAojIDQxICIvdXNyL2luY2x1ZGUvb2JqYy9ydW50aW1lLmgi
IDMgNAp0eXBlZGVmIHN0cnVjdCBvYmpjX21ldGhvZCAqTWV0aG9kOwp0eXBlZGVmIHN0cnVjdCBv
YmpjX2l2YXIgKkl2YXI7CnR5cGVkZWYgc3RydWN0IG9iamNfY2F0ZWdvcnkgKkNhdGVnb3J5Owp0
eXBlZGVmIHN0cnVjdCBvYmpjX3Byb3BlcnR5ICpvYmpjX3Byb3BlcnR5X3Q7CgpzdHJ1Y3Qgb2Jq
Y19jbGFzcyB7CiAgICBDbGFzcyBpc2E7CiMgNjEgIi91c3IvaW5jbHVkZS9vYmpjL3J1bnRpbWUu
aCIgMyA0Cn0gX19hdHRyaWJ1dGVfXygodW5hdmFpbGFibGUpKTsKCgoKQGNsYXNzIFByb3RvY29s
OwoKCgoKc3RydWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uIHsKIFNFTCBuYW1lOwogY2hhciAq
dHlwZXM7Cn07CgoKCgpleHRlcm4gIkMiIGlkIG9iamVjdF9jb3B5KGlkIG9iaiwgc2l6ZV90IHNp
emUpOwpleHRlcm4gIkMiIGlkIG9iamVjdF9kaXNwb3NlKGlkIG9iaik7CgpleHRlcm4gIkMiIENs
YXNzIG9iamVjdF9nZXRDbGFzcyhpZCBvYmopCiAgICAgOwpleHRlcm4gIkMiIENsYXNzIG9iamVj
dF9zZXRDbGFzcyhpZCBvYmosIENsYXNzIGNscykKICAgICA7CgpleHRlcm4gIkMiIGNvbnN0IGNo
YXIgKm9iamVjdF9nZXRDbGFzc05hbWUoaWQgb2JqKTsKZXh0ZXJuICJDIiB2b2lkICpvYmplY3Rf
Z2V0SW5kZXhlZEl2YXJzKGlkIG9iaik7CgpleHRlcm4gIkMiIGlkIG9iamVjdF9nZXRJdmFyKGlk
IG9iaiwgSXZhciBpdmFyKQogICAgIDsKZXh0ZXJuICJDIiB2b2lkIG9iamVjdF9zZXRJdmFyKGlk
IG9iaiwgSXZhciBpdmFyLCBpZCB2YWx1ZSkKICAgICA7CgpleHRlcm4gIkMiIEl2YXIgb2JqZWN0
X3NldEluc3RhbmNlVmFyaWFibGUoaWQgb2JqLCBjb25zdCBjaGFyICpuYW1lLCB2b2lkICp2YWx1
ZSk7CmV4dGVybiAiQyIgSXZhciBvYmplY3RfZ2V0SW5zdGFuY2VWYXJpYWJsZShpZCBvYmosIGNv
bnN0IGNoYXIgKm5hbWUsIHZvaWQgKipvdXRWYWx1ZSk7CgpleHRlcm4gIkMiIGlkIG9iamNfZ2V0
Q2xhc3MoY29uc3QgY2hhciAqbmFtZSk7CmV4dGVybiAiQyIgaWQgb2JqY19nZXRNZXRhQ2xhc3Mo
Y29uc3QgY2hhciAqbmFtZSk7CmV4dGVybiAiQyIgaWQgb2JqY19sb29rVXBDbGFzcyhjb25zdCBj
aGFyICpuYW1lKTsKZXh0ZXJuICJDIiBpZCBvYmpjX2dldFJlcXVpcmVkQ2xhc3MoY29uc3QgY2hh
ciAqbmFtZSk7CmV4dGVybiAiQyIgQ2xhc3Mgb2JqY19nZXRGdXR1cmVDbGFzcyhjb25zdCBjaGFy
ICpuYW1lKQogICAgIDsKZXh0ZXJuICJDIiB2b2lkIG9iamNfc2V0RnV0dXJlQ2xhc3MoQ2xhc3Mg
Y2xzLCBjb25zdCBjaGFyICpuYW1lKQogICAgIDsKZXh0ZXJuICJDIiBpbnQgb2JqY19nZXRDbGFz
c0xpc3QoQ2xhc3MgKmJ1ZmZlciwgaW50IGJ1ZmZlckNvdW50KTsKCmV4dGVybiAiQyIgUHJvdG9j
b2wgKm9iamNfZ2V0UHJvdG9jb2woY29uc3QgY2hhciAqbmFtZSkKICAgICA7CmV4dGVybiAiQyIg
UHJvdG9jb2wgKipvYmpjX2NvcHlQcm90b2NvbExpc3QodW5zaWduZWQgaW50ICpvdXRDb3VudCkK
ICAgICA7CgpleHRlcm4gIkMiIGNvbnN0IGNoYXIgKmNsYXNzX2dldE5hbWUoQ2xhc3MgY2xzKQog
ICAgIDsKZXh0ZXJuICJDIiBCT09MIGNsYXNzX2lzTWV0YUNsYXNzKENsYXNzIGNscykKICAgICA7
CmV4dGVybiAiQyIgQ2xhc3MgY2xhc3NfZ2V0U3VwZXJjbGFzcyhDbGFzcyBjbHMpCiAgICAgOwpl
eHRlcm4gIkMiIENsYXNzIGNsYXNzX3NldFN1cGVyY2xhc3MoQ2xhc3MgY2xzLCBDbGFzcyBuZXdT
dXBlcikKICAgICBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgpleHRlcm4gIkMiIGludCBj
bGFzc19nZXRWZXJzaW9uKENsYXNzIGNscyk7CmV4dGVybiAiQyIgdm9pZCBjbGFzc19zZXRWZXJz
aW9uKENsYXNzIGNscywgaW50IHZlcnNpb24pOwoKZXh0ZXJuICJDIiBzaXplX3QgY2xhc3NfZ2V0
SW5zdGFuY2VTaXplKENsYXNzIGNscykKICAgICA7CgpleHRlcm4gIkMiIEl2YXIgY2xhc3NfZ2V0
SW5zdGFuY2VWYXJpYWJsZShDbGFzcyBjbHMsIGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gIkMi
IEl2YXIgY2xhc3NfZ2V0Q2xhc3NWYXJpYWJsZShDbGFzcyBjbHMsIGNvbnN0IGNoYXIgKm5hbWUp
CiAgICAgOwpleHRlcm4gIkMiIEl2YXIgKmNsYXNzX2NvcHlJdmFyTGlzdChDbGFzcyBjbHMsIHVu
c2lnbmVkIGludCAqb3V0Q291bnQpCiAgICAgOwoKZXh0ZXJuICJDIiBNZXRob2QgY2xhc3NfZ2V0
SW5zdGFuY2VNZXRob2QoQ2xhc3MgY2xzLCBTRUwgbmFtZSk7CmV4dGVybiAiQyIgTWV0aG9kIGNs
YXNzX2dldENsYXNzTWV0aG9kKENsYXNzIGNscywgU0VMIG5hbWUpOwpleHRlcm4gIkMiIElNUCBj
bGFzc19nZXRNZXRob2RJbXBsZW1lbnRhdGlvbihDbGFzcyBjbHMsIFNFTCBuYW1lKQogICAgIDsK
ZXh0ZXJuICJDIiBJTVAgY2xhc3NfZ2V0TWV0aG9kSW1wbGVtZW50YXRpb25fc3RyZXQoQ2xhc3Mg
Y2xzLCBTRUwgbmFtZSkKICAgICA7CmV4dGVybiAiQyIgQk9PTCBjbGFzc19yZXNwb25kc1RvU2Vs
ZWN0b3IoQ2xhc3MgY2xzLCBTRUwgc2VsKQogICAgIDsKZXh0ZXJuICJDIiBNZXRob2QgKmNsYXNz
X2NvcHlNZXRob2RMaXN0KENsYXNzIGNscywgdW5zaWduZWQgaW50ICpvdXRDb3VudCkKICAgICA7
CgpleHRlcm4gIkMiIEJPT0wgY2xhc3NfY29uZm9ybXNUb1Byb3RvY29sKENsYXNzIGNscywgUHJv
dG9jb2wgKnByb3RvY29sKQogICAgIDsKZXh0ZXJuICJDIiBQcm90b2NvbCAqKmNsYXNzX2NvcHlQ
cm90b2NvbExpc3QoQ2xhc3MgY2xzLCB1bnNpZ25lZCBpbnQgKm91dENvdW50KQogICAgIDsKCmV4
dGVybiAiQyIgb2JqY19wcm9wZXJ0eV90IGNsYXNzX2dldFByb3BlcnR5KENsYXNzIGNscywgY29u
c3QgY2hhciAqbmFtZSkKICAgICA7CmV4dGVybiAiQyIgb2JqY19wcm9wZXJ0eV90ICpjbGFzc19j
b3B5UHJvcGVydHlMaXN0KENsYXNzIGNscywgdW5zaWduZWQgaW50ICpvdXRDb3VudCkKICAgICA7
CgpleHRlcm4gIkMiIGNvbnN0IGNoYXIgKmNsYXNzX2dldEl2YXJMYXlvdXQoQ2xhc3MgY2xzKQog
ICAgIDsKZXh0ZXJuICJDIiBjb25zdCBjaGFyICpjbGFzc19nZXRXZWFrSXZhckxheW91dChDbGFz
cyBjbHMpCiAgICAgOwoKZXh0ZXJuICJDIiBpZCBjbGFzc19jcmVhdGVJbnN0YW5jZShDbGFzcyBj
bHMsIHNpemVfdCBleHRyYUJ5dGVzKTsKCmV4dGVybiAiQyIgQ2xhc3Mgb2JqY19hbGxvY2F0ZUNs
YXNzUGFpcihDbGFzcyBzdXBlcmNsYXNzLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBleHRyYUJ5dGVzKQogICAgIDsKZXh0
ZXJuICJDIiB2b2lkIG9iamNfcmVnaXN0ZXJDbGFzc1BhaXIoQ2xhc3MgY2xzKQogICAgIDsKZXh0
ZXJuICJDIiBDbGFzcyBvYmpjX2R1cGxpY2F0ZUNsYXNzKENsYXNzIG9yaWdpbmFsLCBjb25zdCBj
aGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBl
eHRyYUJ5dGVzKQogICAgIDsKZXh0ZXJuICJDIiB2b2lkIG9iamNfZGlzcG9zZUNsYXNzUGFpcihD
bGFzcyBjbHMpCiAgICAgOwoKZXh0ZXJuICJDIiBCT09MIGNsYXNzX2FkZE1ldGhvZChDbGFzcyBj
bHMsIFNFTCBuYW1lLCBJTVAgaW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICp0eXBlcykKICAgICA7CmV4dGVybiAiQyIgSU1QIGNsYXNzX3JlcGxhY2VNZXRo
b2QoQ2xhc3MgY2xzLCBTRUwgbmFtZSwgSU1QIGltcCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqdHlwZXMpCiAgICAgOwpleHRlcm4gIkMiIEJPT0wgY2xh
c3NfYWRkSXZhcihDbGFzcyBjbHMsIGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBhbGlnbm1lbnQsIGNvbnN0IGNoYXIg
KnR5cGVzKQogICAgIDsKZXh0ZXJuICJDIiBCT09MIGNsYXNzX2FkZFByb3RvY29sKENsYXNzIGNs
cywgUHJvdG9jb2wgKnByb3RvY29sKQogICAgIDsKZXh0ZXJuICJDIiB2b2lkIGNsYXNzX3NldEl2
YXJMYXlvdXQoQ2xhc3MgY2xzLCBjb25zdCBjaGFyICpsYXlvdXQpCiAgICAgOwpleHRlcm4gIkMi
IHZvaWQgY2xhc3Nfc2V0V2Vha0l2YXJMYXlvdXQoQ2xhc3MgY2xzLCBjb25zdCBjaGFyICpsYXlv
dXQpCiAgICAgOwoKCmV4dGVybiAiQyIgU0VMIG1ldGhvZF9nZXROYW1lKE1ldGhvZCBtKQogICAg
IDsKZXh0ZXJuICJDIiBJTVAgbWV0aG9kX2dldEltcGxlbWVudGF0aW9uKE1ldGhvZCBtKQogICAg
IDsKZXh0ZXJuICJDIiBjb25zdCBjaGFyICptZXRob2RfZ2V0VHlwZUVuY29kaW5nKE1ldGhvZCBt
KQogICAgIDsKCmV4dGVybiAiQyIgdW5zaWduZWQgaW50IG1ldGhvZF9nZXROdW1iZXJPZkFyZ3Vt
ZW50cyhNZXRob2QgbSk7CmV4dGVybiAiQyIgY2hhciAqbWV0aG9kX2NvcHlSZXR1cm5UeXBlKE1l
dGhvZCBtKQogICAgIDsKZXh0ZXJuICJDIiBjaGFyICptZXRob2RfY29weUFyZ3VtZW50VHlwZShN
ZXRob2QgbSwgdW5zaWduZWQgaW50IGluZGV4KQogICAgIDsKZXh0ZXJuICJDIiB2b2lkIG1ldGhv
ZF9nZXRSZXR1cm5UeXBlKE1ldGhvZCBtLCBjaGFyICpkc3QsIHNpemVfdCBkc3RfbGVuKQogICAg
IDsKZXh0ZXJuICJDIiB2b2lkIG1ldGhvZF9nZXRBcmd1bWVudFR5cGUoTWV0aG9kIG0sIHVuc2ln
bmVkIGludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKmRzdCwgc2l6ZV90IGRzdF9sZW4pCiAgICAgOwpleHRlcm4gIkMiIHN0cnVjdCBvYmpjX21l
dGhvZF9kZXNjcmlwdGlvbiAqbWV0aG9kX2dldERlc2NyaXB0aW9uKE1ldGhvZCBtKQogICAgIDsK
CmV4dGVybiAiQyIgSU1QIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihNZXRob2QgbSwgSU1QIGlt
cCkKICAgICA7CmV4dGVybiAiQyIgdm9pZCBtZXRob2RfZXhjaGFuZ2VJbXBsZW1lbnRhdGlvbnMo
TWV0aG9kIG0xLCBNZXRob2QgbTIpCiAgICAgOwoKZXh0ZXJuICJDIiBjb25zdCBjaGFyICppdmFy
X2dldE5hbWUoSXZhciB2KQogICAgIDsKZXh0ZXJuICJDIiBjb25zdCBjaGFyICppdmFyX2dldFR5
cGVFbmNvZGluZyhJdmFyIHYpCiAgICAgOwpleHRlcm4gIkMiIHB0cmRpZmZfdCBpdmFyX2dldE9m
ZnNldChJdmFyIHYpCiAgICAgOwoKZXh0ZXJuICJDIiBjb25zdCBjaGFyICpwcm9wZXJ0eV9nZXRO
YW1lKG9iamNfcHJvcGVydHlfdCBwcm9wZXJ0eSkKICAgICA7CmV4dGVybiAiQyIgY29uc3QgY2hh
ciAqcHJvcGVydHlfZ2V0QXR0cmlidXRlcyhvYmpjX3Byb3BlcnR5X3QgcHJvcGVydHkpCiAgICAg
OwoKZXh0ZXJuICJDIiBCT09MIHByb3RvY29sX2NvbmZvcm1zVG9Qcm90b2NvbChQcm90b2NvbCAq
cHJvdG8sIFByb3RvY29sICpvdGhlcikKICAgICA7CmV4dGVybiAiQyIgQk9PTCBwcm90b2NvbF9p
c0VxdWFsKFByb3RvY29sICpwcm90bywgUHJvdG9jb2wgKm90aGVyKQogICAgIDsKZXh0ZXJuICJD
IiBjb25zdCBjaGFyICpwcm90b2NvbF9nZXROYW1lKFByb3RvY29sICpwKQogICAgIDsKZXh0ZXJu
ICJDIiBzdHJ1Y3Qgb2JqY19tZXRob2RfZGVzY3JpcHRpb24gcHJvdG9jb2xfZ2V0TWV0aG9kRGVz
Y3JpcHRpb24oUHJvdG9jb2wgKnAsIFNFTCBhU2VsLCBCT09MIGlzUmVxdWlyZWRNZXRob2QsIEJP
T0wgaXNJbnN0YW5jZU1ldGhvZCkKICAgICA7CmV4dGVybiAiQyIgc3RydWN0IG9iamNfbWV0aG9k
X2Rlc2NyaXB0aW9uICpwcm90b2NvbF9jb3B5TWV0aG9kRGVzY3JpcHRpb25MaXN0KFByb3RvY29s
ICpwLCBCT09MIGlzUmVxdWlyZWRNZXRob2QsIEJPT0wgaXNJbnN0YW5jZU1ldGhvZCwgdW5zaWdu
ZWQgaW50ICpvdXRDb3VudCkKICAgICA7CmV4dGVybiAiQyIgb2JqY19wcm9wZXJ0eV90IHByb3Rv
Y29sX2dldFByb3BlcnR5KFByb3RvY29sICpwcm90bywgY29uc3QgY2hhciAqbmFtZSwgQk9PTCBp
c1JlcXVpcmVkUHJvcGVydHksIEJPT0wgaXNJbnN0YW5jZVByb3BlcnR5KQogICAgIDsKZXh0ZXJu
ICJDIiBvYmpjX3Byb3BlcnR5X3QgKnByb3RvY29sX2NvcHlQcm9wZXJ0eUxpc3QoUHJvdG9jb2wg
KnByb3RvLCB1bnNpZ25lZCBpbnQgKm91dENvdW50KQogICAgIDsKZXh0ZXJuICJDIiBQcm90b2Nv
bCAqKnByb3RvY29sX2NvcHlQcm90b2NvbExpc3QoUHJvdG9jb2wgKnByb3RvLCB1bnNpZ25lZCBp
bnQgKm91dENvdW50KQogICAgIDsKCmV4dGVybiAiQyIgY29uc3QgY2hhciAqKm9iamNfY29weUlt
YWdlTmFtZXModW5zaWduZWQgaW50ICpvdXRDb3VudCkKICAgICA7CmV4dGVybiAiQyIgY29uc3Qg
Y2hhciAqY2xhc3NfZ2V0SW1hZ2VOYW1lKENsYXNzIGNscykKICAgICA7CmV4dGVybiAiQyIgY29u
c3QgY2hhciAqKm9iamNfY29weUNsYXNzTmFtZXNGb3JJbWFnZShjb25zdCBjaGFyICppbWFnZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgKm91dENvdW50KQogICAgIDsKCmV4dGVybiAiQyIgY29uc3QgY2hhciAqc2VsX2dl
dE5hbWUoU0VMIHNlbCk7CmV4dGVybiAiQyIgU0VMIHNlbF9nZXRVaWQoY29uc3QgY2hhciAqc3Ry
KTsKZXh0ZXJuICJDIiBTRUwgc2VsX3JlZ2lzdGVyTmFtZShjb25zdCBjaGFyICpzdHIpOwpleHRl
cm4gIkMiIEJPT0wgc2VsX2lzRXF1YWwoU0VMIGxocywgU0VMIHJocykKICAgICA7CgpleHRlcm4g
IkMiIHZvaWQgb2JqY19lbnVtZXJhdGlvbk11dGF0aW9uKGlkKQogICAgIDsKZXh0ZXJuICJDIiB2
b2lkIG9iamNfc2V0RW51bWVyYXRpb25NdXRhdGlvbkhhbmRsZXIodm9pZCAoKmhhbmRsZXIpKGlk
KSkKICAgICA7CgpleHRlcm4gIkMiIHZvaWQgb2JqY19zZXRGb3J3YXJkSGFuZGxlcih2b2lkICpm
d2QsIHZvaWQgKmZ3ZF9zdHJldCkKICAgICA7CgoKCgoKZW51bSB7CiAgICBPQkpDX0FTU09DSUFU
SU9OX0FTU0lHTiA9IDAsCiAgICBPQkpDX0FTU09DSUFUSU9OX1JFVEFJTl9OT05BVE9NSUMgPSAx
LAogICAgT0JKQ19BU1NPQ0lBVElPTl9DT1BZX05PTkFUT01JQyA9IDMsCiAgICBPQkpDX0FTU09D
SUFUSU9OX1JFVEFJTiA9IDAxNDAxLAogICAgT0JKQ19BU1NPQ0lBVElPTl9DT1BZID0gMDE0MDMK
fTsKdHlwZWRlZiB1aW50cHRyX3Qgb2JqY19Bc3NvY2lhdGlvblBvbGljeTsKCmV4dGVybiAiQyIg
dm9pZCBvYmpjX3NldEFzc29jaWF0ZWRPYmplY3QoaWQgb2JqZWN0LCB2b2lkICprZXksIGlkIHZh
bHVlLCBvYmpjX0Fzc29jaWF0aW9uUG9saWN5IHBvbGljeSkKICAgICA7CmV4dGVybiAiQyIgaWQg
b2JqY19nZXRBc3NvY2lhdGVkT2JqZWN0KGlkIG9iamVjdCwgdm9pZCAqa2V5KQogICAgIDsKZXh0
ZXJuICJDIiB2b2lkIG9iamNfcmVtb3ZlQXNzb2NpYXRlZE9iamVjdHMoaWQgb2JqZWN0KQogICAg
IDsKCgojZGVmaW5lIF9DX0lEICdAJwojZGVmaW5lIF9DX0NMQVNTICcjJwojZGVmaW5lIF9DX1NF
TCAnOicKI2RlZmluZSBfQ19DSFIgJ2MnCiNkZWZpbmUgX0NfVUNIUiAnQycKI2RlZmluZSBfQ19T
SFQgJ3MnCiNkZWZpbmUgX0NfVVNIVCAnUycKI2RlZmluZSBfQ19JTlQgJ2knCiNkZWZpbmUgX0Nf
VUlOVCAnSScKI2RlZmluZSBfQ19MTkcgJ2wnCiNkZWZpbmUgX0NfVUxORyAnTCcKI2RlZmluZSBf
Q19MTkdfTE5HICdxJwojZGVmaW5lIF9DX1VMTkdfTE5HICdRJwojZGVmaW5lIF9DX0ZMVCAnZicK
I2RlZmluZSBfQ19EQkwgJ2QnCiNkZWZpbmUgX0NfQkZMRCAnYicKI2RlZmluZSBfQ19CT09MICdC
JwojZGVmaW5lIF9DX1ZPSUQgJ3YnCiNkZWZpbmUgX0NfVU5ERUYgJz8nCiNkZWZpbmUgX0NfUFRS
ICdeJwojZGVmaW5lIF9DX0NIQVJQVFIgJyonCiNkZWZpbmUgX0NfQVRPTSAnJScKI2RlZmluZSBf
Q19BUllfQiAnWycKI2RlZmluZSBfQ19BUllfRSAnXScKI2RlZmluZSBfQ19VTklPTl9CICcoJwoj
ZGVmaW5lIF9DX1VOSU9OX0UgJyknCiNkZWZpbmUgX0NfU1RSVUNUX0IgJ3snCiNkZWZpbmUgX0Nf
U1RSVUNUX0UgJ30nCiNkZWZpbmUgX0NfVkVDVE9SICchJwojZGVmaW5lIF9DX0NPTlNUICdyJwoj
IDQ2MCAiL3Vzci9pbmNsdWRlL29iamMvcnVudGltZS5oIiAzIDQKc3RydWN0IG9iamNfbWV0aG9k
X2xpc3Q7CgoKCgoKCmV4dGVybiAiQyIgQk9PTCBzZWxfaXNNYXBwZWQoU0VMIHNlbCkgX19hdHRy
aWJ1dGVfXygodW5hdmFpbGFibGUpKTsKCmV4dGVybiAiQyIgaWQgb2JqZWN0X2NvcHlGcm9tWm9u
ZShpZCBhbk9iamVjdCwgc2l6ZV90IG5CeXRlcywgdm9pZCAqeikgX19hdHRyaWJ1dGVfXygoZGVw
cmVjYXRlZCkpOwpleHRlcm4gIkMiIGlkIG9iamVjdF9yZWFsbG9jKGlkIGFuT2JqZWN0LCBzaXpl
X3QgbkJ5dGVzKSBfX2F0dHJpYnV0ZV9fKCh1bmF2YWlsYWJsZSkpOwpleHRlcm4gIkMiIGlkIG9i
amVjdF9yZWFsbG9jRnJvbVpvbmUoaWQgYW5PYmplY3QsIHNpemVfdCBuQnl0ZXMsIHZvaWQgKnop
IF9fYXR0cmlidXRlX18oKHVuYXZhaWxhYmxlKSk7CgojZGVmaW5lIE9CU09MRVRFX09CSkNfR0VU
Q0xBU1NFUyAxCmV4dGVybiAiQyIgdm9pZCAqb2JqY19nZXRDbGFzc2VzKHZvaWQpIF9fYXR0cmli
dXRlX18oKHVuYXZhaWxhYmxlKSk7CmV4dGVybiAiQyIgdm9pZCBvYmpjX2FkZENsYXNzKENsYXNz
IG15Q2xhc3MpIF9fYXR0cmlidXRlX18oKHVuYXZhaWxhYmxlKSk7CmV4dGVybiAiQyIgdm9pZCBv
YmpjX3NldENsYXNzSGFuZGxlcihpbnQgKCopKGNvbnN0IGNoYXIgKikpIF9fYXR0cmlidXRlX18o
KHVuYXZhaWxhYmxlKSk7CmV4dGVybiAiQyIgdm9pZCBvYmpjX3NldE11bHRpdGhyZWFkZWQgKEJP
T0wgZmxhZykgX19hdHRyaWJ1dGVfXygodW5hdmFpbGFibGUpKTsKCmV4dGVybiAiQyIgaWQgY2xh
c3NfY3JlYXRlSW5zdGFuY2VGcm9tWm9uZShDbGFzcywgc2l6ZV90IGlkeEl2YXJzLCB2b2lkICp6
KSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSk7CgpleHRlcm4gIkMiIHZvaWQgY2xhc3NfYWRk
TWV0aG9kcyhDbGFzcywgc3RydWN0IG9iamNfbWV0aG9kX2xpc3QgKikgX19hdHRyaWJ1dGVfXygo
dW5hdmFpbGFibGUpKTsKZXh0ZXJuICJDIiB2b2lkIGNsYXNzX3JlbW92ZU1ldGhvZHMoQ2xhc3Ms
IHN0cnVjdCBvYmpjX21ldGhvZF9saXN0ICopIF9fYXR0cmlidXRlX18oKHVuYXZhaWxhYmxlKSk7
CgpleHRlcm4gIkMiIENsYXNzIGNsYXNzX3Bvc2VBcyhDbGFzcyBpbXBvc3RlciwgQ2xhc3Mgb3Jp
Z2luYWwpIF9fYXR0cmlidXRlX18oKHVuYXZhaWxhYmxlKSk7CgpleHRlcm4gIkMiIHVuc2lnbmVk
IGludCBtZXRob2RfZ2V0U2l6ZU9mQXJndW1lbnRzKE1ldGhvZCBtKSBfX2F0dHJpYnV0ZV9fKCh1
bmF2YWlsYWJsZSkpOwpleHRlcm4gIkMiIHVuc2lnbmVkIG1ldGhvZF9nZXRBcmd1bWVudEluZm8o
c3RydWN0IG9iamNfbWV0aG9kICptLCBpbnQgYXJnLCBjb25zdCBjaGFyICoqdHlwZSwgaW50ICpv
ZmZzZXQpIF9fYXR0cmlidXRlX18oKHVuYXZhaWxhYmxlKSk7CgpleHRlcm4gIkMiIEJPT0wgY2xh
c3NfcmVzcG9uZHNUb01ldGhvZChDbGFzcywgU0VMKSBfX2F0dHJpYnV0ZV9fKCh1bmF2YWlsYWJs
ZSkpOwpleHRlcm4gIkMiIElNUCBjbGFzc19sb29rdXBNZXRob2QoQ2xhc3MsIFNFTCkgX19hdHRy
aWJ1dGVfXygodW5hdmFpbGFibGUpKTsKZXh0ZXJuICJDIiBDbGFzcyBvYmpjX2dldE9yaWdDbGFz
cyhjb25zdCBjaGFyICpuYW1lKSBfX2F0dHJpYnV0ZV9fKCh1bmF2YWlsYWJsZSkpOwojZGVmaW5l
IE9CSkNfTkVYVF9NRVRIT0RfTElTVCAxCmV4dGVybiAiQyIgc3RydWN0IG9iamNfbWV0aG9kX2xp
c3QgKmNsYXNzX25leHRNZXRob2RMaXN0KENsYXNzLCB2b2lkICoqKSBfX2F0dHJpYnV0ZV9fKCh1
bmF2YWlsYWJsZSkpOwoKCgoKCgoKZXh0ZXJuICJDIiBpZCAoKl9hbGxvYykoQ2xhc3MsIHNpemVf
dCkgX19hdHRyaWJ1dGVfXygodW5hdmFpbGFibGUpKTsKZXh0ZXJuICJDIiBpZCAoKl9jb3B5KShp
ZCwgc2l6ZV90KSBfX2F0dHJpYnV0ZV9fKCh1bmF2YWlsYWJsZSkpOwpleHRlcm4gIkMiIGlkICgq
X3JlYWxsb2MpKGlkLCBzaXplX3QpIF9fYXR0cmlidXRlX18oKHVuYXZhaWxhYmxlKSk7CmV4dGVy
biAiQyIgaWQgKCpfZGVhbGxvYykoaWQpIF9fYXR0cmlidXRlX18oKHVuYXZhaWxhYmxlKSk7CmV4
dGVybiAiQyIgaWQgKCpfem9uZUFsbG9jKShDbGFzcywgc2l6ZV90LCB2b2lkICopIF9fYXR0cmli
dXRlX18oKHVuYXZhaWxhYmxlKSk7CmV4dGVybiAiQyIgaWQgKCpfem9uZVJlYWxsb2MpKGlkLCBz
aXplX3QsIHZvaWQgKikgX19hdHRyaWJ1dGVfXygodW5hdmFpbGFibGUpKTsKZXh0ZXJuICJDIiBp
ZCAoKl96b25lQ29weSkoaWQsIHNpemVfdCwgdm9pZCAqKSBfX2F0dHJpYnV0ZV9fKCh1bmF2YWls
YWJsZSkpOwpleHRlcm4gIkMiIHZvaWQgKCpfZXJyb3IpKGlkLCBjb25zdCBjaGFyICosIHZhX2xp
c3QpIF9fYXR0cmlidXRlX18oKHVuYXZhaWxhYmxlKSk7CiMgMiAiL3Vzci9pbmNsdWRlL29iamMv
b2JqYy1ydW50aW1lLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL29iamMvbWVzc2FnZS5oIiAx
IDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvb2JqYy9tZXNzYWdlLmgiIDMgNAojZGVmaW5lIF9PQkpD
X01FU1NBR0VfSCAKCgoKCgoKI2RlZmluZSBPQkpDX1NVUEVSIApzdHJ1Y3Qgb2JqY19zdXBlciB7
CiAgICBpZCByZWNlaXZlcjsKCgoKICAgIENsYXNzIHN1cGVyX2NsYXNzOwoKCn07CiMgNTMgIi91
c3IvaW5jbHVkZS9vYmpjL21lc3NhZ2UuaCIgMyA0CmV4dGVybiAiQyIgaWQgb2JqY19tc2dTZW5k
KGlkIHNlbGYsIFNFTCBvcCwgLi4uKTsKZXh0ZXJuICJDIiBpZCBvYmpjX21zZ1NlbmRTdXBlcihz
dHJ1Y3Qgb2JqY19zdXBlciAqc3VwZXIsIFNFTCBvcCwgLi4uKTsKIyA2NyAiL3Vzci9pbmNsdWRl
L29iamMvbWVzc2FnZS5oIiAzIDQKZXh0ZXJuICJDIiB2b2lkIG9iamNfbXNnU2VuZF9zdHJldChp
ZCBzZWxmLCBTRUwgb3AsIC4uLik7CmV4dGVybiAiQyIgdm9pZCBvYmpjX21zZ1NlbmRTdXBlcl9z
dHJldChzdHJ1Y3Qgb2JqY19zdXBlciAqc3VwZXIsIFNFTCBvcCwgLi4uKTsKIyA5OSAiL3Vzci9p
bmNsdWRlL29iamMvbWVzc2FnZS5oIiAzIDQKZXh0ZXJuICJDIiBsb25nIGRvdWJsZSBvYmpjX21z
Z1NlbmRfZnByZXQoaWQgc2VsZiwgU0VMIG9wLCAuLi4pOwojIDExNCAiL3Vzci9pbmNsdWRlL29i
amMvbWVzc2FnZS5oIiAzIDQKZXh0ZXJuICJDIiBpZCBtZXRob2RfaW52b2tlKGlkIHJlY2VpdmVy
LCBNZXRob2QgbSwgLi4uKQogICAgIDsKZXh0ZXJuICJDIiB2b2lkIG1ldGhvZF9pbnZva2Vfc3Ry
ZXQoaWQgcmVjZWl2ZXIsIE1ldGhvZCBtLCAuLi4pCiAgICAgOwojIDEzNSAiL3Vzci9pbmNsdWRl
L29iamMvbWVzc2FnZS5oIiAzIDQKZXh0ZXJuICJDIiBpZCBfb2JqY19tc2dGb3J3YXJkKGlkIHJl
Y2VpdmVyLCBTRUwgc2VsLCAuLi4pCiAgICAgOwpleHRlcm4gIkMiIHZvaWQgX29iamNfbXNnRm9y
d2FyZF9zdHJldChpZCByZWNlaXZlciwgU0VMIHNlbCwgLi4uKQogICAgIDsKIyAxNTQgIi91c3Iv
aW5jbHVkZS9vYmpjL21lc3NhZ2UuaCIgMyA0CnR5cGVkZWYgdm9pZCogbWFyZ19saXN0OwoKZXh0
ZXJuICJDIiBpZCBvYmpjX21zZ1NlbmR2KGlkIHNlbGYsIFNFTCBvcCwgc2l6ZV90IGFyZ19zaXpl
LCBtYXJnX2xpc3QgYXJnX2ZyYW1lKSBfX2F0dHJpYnV0ZV9fKCh1bmF2YWlsYWJsZSkpOwpleHRl
cm4gIkMiIHZvaWQgb2JqY19tc2dTZW5kdl9zdHJldCh2b2lkICpzdHJldEFkZHIsIGlkIHNlbGYs
IFNFTCBvcCwgc2l6ZV90IGFyZ19zaXplLCBtYXJnX2xpc3QgYXJnX2ZyYW1lKSBfX2F0dHJpYnV0
ZV9fKCh1bmF2YWlsYWJsZSkpOwojIDIgIi91c3IvaW5jbHVkZS9vYmpjL29iamMtcnVudGltZS5o
IiAyIDMgNAojIDQwICIuLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSIgMgoKCgoKCgpzdGF0aWMgdm9pZCogUVRLaXRMaWJy
YXJ5KCkgeyBzdGF0aWMgdm9pZCogZnJhbWV3b3JrTGlicmFyeSA9IGRsb3BlbigiL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvIiAiUVRLaXQiICIuZnJhbWV3b3JrLyIgIlFUS2l0IiwgMHgyKTsg
ZG8gaWYgKCEoZnJhbWV3b3JrTGlicmFyeSkpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgi
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIubW0iLCA0NiwgX19QUkVUVFlfRlVOQ1RJT05fXywgImZyYW1ld29ya0xpYnJhcnki
KTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJl
ZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOyBy
ZXR1cm4gZnJhbWV3b3JrTGlicmFyeTsgfQpzdGF0aWMgQ2xhc3MgaW5pdFFUTW92aWVMYXllcigp
OyBzdGF0aWMgQ2xhc3MgKCpnZXRRVE1vdmllTGF5ZXJDbGFzcykoKSA9IGluaXRRVE1vdmllTGF5
ZXI7IHN0YXRpYyBDbGFzcyBjbGFzc1FUTW92aWVMYXllcjsgc3RhdGljIENsYXNzIFFUTW92aWVM
YXllckZ1bmN0aW9uKCkgeyByZXR1cm4gY2xhc3NRVE1vdmllTGF5ZXI7IH0gc3RhdGljIENsYXNz
IGluaXRRVE1vdmllTGF5ZXIoKSB7IFFUS2l0TGlicmFyeSgpOyBjbGFzc1FUTW92aWVMYXllciA9
IG9iamNfZ2V0Q2xhc3MoIlFUTW92aWVMYXllciIpOyBkbyBpZiAoIShjbGFzc1FUTW92aWVMYXll
cikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0iLCA0NywgX19QUkVU
VFlfRlVOQ1RJT05fXywgImNsYXNzUVRNb3ZpZUxheWVyIik7IGRvIHsgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCko
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgZ2V0UVRNb3ZpZUxheWVyQ2xhc3MgPSBR
VE1vdmllTGF5ZXJGdW5jdGlvbjsgcmV0dXJuIGNsYXNzUVRNb3ZpZUxheWVyOyB9CgpzdGF0aWMg
TlNTdHJpbmcgKiBpbml0UVRNb3ZpZVJhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24oKTsgc3RhdGlj
IE5TU3RyaW5nICogKCpnZXRRVE1vdmllUmF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbikoKSA9IGlu
aXRRVE1vdmllUmF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbjsgc3RhdGljIE5TU3RyaW5nICogcG9p
bnRlclFUTW92aWVSYXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uOyBzdGF0aWMgTlNTdHJpbmcgKiBR
VE1vdmllUmF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbkZ1bmN0aW9uKCkgeyByZXR1cm4gcG9pbnRl
clFUTW92aWVSYXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uOyB9IHN0YXRpYyBOU1N0cmluZyAqIGlu
aXRRVE1vdmllUmF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpIHsgdm9pZCoqIHBvaW50ZXIgPSBz
dGF0aWNfY2FzdDx2b2lkKio+KGRsc3ltKFFUS2l0TGlicmFyeSgpLCAiUVRNb3ZpZVJhdGVEaWRD
aGFuZ2VOb3RpZmljYXRpb24iKSk7IGRvIGlmICghKHBvaW50ZXIpKSB7IFdURlJlcG9ydEFzc2Vy
dGlvbkZhaWx1cmUoIi4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tIiwgNDksIF9fUFJFVFRZX0ZVTkNUSU9OX18sICJwb2lu
dGVyIik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRwdHJfdCkweGJi
YWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsgcG9pbnRlclFUTW92aWVSYXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8
TlNTdHJpbmcgKj4oKnBvaW50ZXIpOyBnZXRRVE1vdmllUmF0ZURpZENoYW5nZU5vdGlmaWNhdGlv
biA9IFFUTW92aWVSYXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uRnVuY3Rpb247IHJldHVybiBwb2lu
dGVyUVRNb3ZpZVJhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb247IH0KCiNkZWZpbmUgUVRNb3ZpZVJh
dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gZ2V0UVRNb3ZpZVJhdGVEaWRDaGFuZ2VOb3RpZmljYXRp
b24oKQpzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgdGlja2xlVGltZXJJbnRlcnZhbCA9IDEu
MDsKCkBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IDogTlNXaW5kb3cKCjxOU0Fu
aW1hdGlvbkRlbGVnYXRlPgoKewogICAgU0VMIF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25F
bmQ7CiAgICBXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbiAqX2Z1bGxzY3JlZW5BbmltYXRpb247Cn0K
LSAodm9pZClhbmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFydFJlY3QgdG9SZWN0OihOU1JlY3Qp
ZW5kUmVjdCB3aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1YkFuaW1hdGlvbiBjb250
cm9sbGVyQWN0aW9uOihTRUwpY29udHJvbGxlckFjdGlvbjsKQGVuZAoKQGludGVyZmFjZSBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyKEhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZSkgPFdl
YlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4KLSAodm9pZClyZXF1
ZXN0RXhpdEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOihCT09MKWFuaW1hdGlvbjsKLSAodm9pZCl1
cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW47Ci0gKHZvaWQpdXBkYXRlUG93ZXJBc3NlcnRp
b25zOwpAZW5kCgpAaW50ZXJmYWNlIE5TV2luZG93KElzT25BY3RpdmVTcGFjZUFkZGl0aW9uRm9y
VGlnZXJBbmRMZW9wYXJkKQotIChCT09MKWlzT25BY3RpdmVTcGFjZTsKQGVuZAoKQGltcGxlbWVu
dGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIKLSAoaWQpaW5pdAp7CgogICAgTlNX
aW5kb3cgKndpbmRvdyA9IFtbV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0
aENvbnRlbnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sg
YmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOihCT09MKTBdOwogICAgc2VsZiA9
IFtzdXBlciBpbml0V2l0aFdpbmRvdzp3aW5kb3ddOwogICAgW3dpbmRvdyByZWxlYXNlXTsKICAg
IGlmICghc2VsZikKICAgICAgICByZXR1cm4gX19udWxsOwogICAgW3NlbGYgd2luZG93RGlkTG9h
ZF07CiAgICByZXR1cm4gc2VsZjsKCn0KLSAodm9pZClkZWFsbG9jCnsKICAgIGRvIGlmICghKCFf
YmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cpKSB7IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Ii4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLm1tIiwgOTAsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhX2JhY2tncm91bmRGdWxs
c2NyZWVuV2luZG93Iik7IGRvIHsgV1RGUmVwb3J0QmFja3RyYWNlKCk7ICooaW50ICopKHVpbnRw
dHJfdCkweGJiYWRiZWVmID0gMDsgKCh2b2lkKCopKCkpMCkoKTsgfSB3aGlsZSAoZmFsc2UpOyB9
IHdoaWxlICgwKTsKICAgIGRvIGlmICghKCFfZmFkZUFuaW1hdGlvbikpIHsgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0iLCA5MSwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFf
ZmFkZUFuaW1hdGlvbiIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50
cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsg
fSB3aGlsZSAoMCk7CiAgICBbX3RpY2tsZVRpbWVyIGludmFsaWRhdGVdOwogICAgW190aWNrbGVU
aW1lciByZWxlYXNlXTsKICAgIF90aWNrbGVUaW1lciA9IF9fbnVsbDsKICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CiAgICBbc3Vw
ZXIgZGVhbGxvY107Cn0KCi0gKFdlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyAqKWZ1bGxzY3JlZW5X
aW5kb3cKewogICAgcmV0dXJuIChXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgKilbc3VwZXIgd2lu
ZG93XTsKfQoKLSAodm9pZClzZXR1cFZpZGVvT3ZlcmxheTooUVRNb3ZpZUxheWVyKilsYXllcgp7
CiAgICBXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgKndpbmRvdyA9IFtzZWxmIGZ1bGxzY3JlZW5X
aW5kb3ddOwoKCgoKCgoKICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBzZXRMYXllcjpsYXllcl07
CiAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gc2V0V2FudHNMYXllcjooQk9PTCkxXTsKICAgIGlm
IChfbWVkaWFFbGVtZW50ICYmIF9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS50eXBlID09
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWE6OlFUTW92aWVUeXBlKQogICAgICAgIFtsYXllciBzZXRN
b3ZpZTpfbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEucXRNb3ZpZV07Cgp9Cgot
ICh2b2lkKXdpbmRvd0RpZExvYWQKewogICAgV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93ICp3aW5k
b3cgPSBbc2VsZiBmdWxsc2NyZWVuV2luZG93XTsKICAgIFt3aW5kb3cgc2V0SGFzU2hhZG93OihC
T09MKTFdOwogICAgW3dpbmRvdyBzZXRMZXZlbDpDR1dpbmRvd0xldmVsRm9yS2V5KGtDR1BvcFVw
TWVudVdpbmRvd0xldmVsS2V5KS0xXTsKCiAgICBRVE1vdmllTGF5ZXIgKmxheWVyID0gW1tnZXRR
VE1vdmllTGF5ZXJDbGFzcygpIGFsbG9jXSBpbml0XTsKICAgIFtzZWxmIHNldHVwVmlkZW9PdmVy
bGF5OmxheWVyXTsKICAgIFtsYXllciByZWxlYXNlXTsKCgogICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihh
cHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZTopIG5hbWU6TlNBcHBsaWNhdGlvbkRpZFJlc2lnbkFj
dGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6TlNBcHBdOwogICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBs
aWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6KSBuYW1lOk5TQXBwbGljYXRpb25EaWRD
aGFuZ2VTY3JlZW5QYXJhbWV0ZXJzTm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcF07Cgp9CgotIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQKewogICAgcmV0dXJuIF9tZWRp
YUVsZW1lbnQuZ2V0KCk7Cn0KCi0gKHZvaWQpc2V0TWVkaWFFbGVtZW50OihXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50KiltZWRpYUVsZW1lbnQKewogICAgX21lZGlhRWxlbWVudCA9IG1lZGlhRWxl
bWVudDsKICAgIGlmIChbc2VsZiBpc1dpbmRvd0xvYWRlZF0pIHsKICAgICAgICBRVE1vdmllTGF5
ZXIgKm1vdmllTGF5ZXIgPSAoUVRNb3ZpZUxheWVyICopW1tbc2VsZiBmdWxsc2NyZWVuV2luZG93
XSBjb250ZW50Vmlld10gbGF5ZXJdOwoKICAgICAgICBkbyBpZiAoIShtb3ZpZUxheWVyICYmIFtt
b3ZpZUxheWVyIGlzS2luZE9mQ2xhc3M6W2dldFFUTW92aWVMYXllckNsYXNzKCkgY2xhc3NdXSkp
IHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0iLCAxNDgsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sICJtb3ZpZUxheWVyICYmIFttb3ZpZUxheWVyIGlzS2luZE9mQ2xhc3M6W2dl
dFFUTW92aWVMYXllckNsYXNzKCkgY2xhc3NdXSIpOyBkbyB7IFdURlJlcG9ydEJhY2t0cmFjZSgp
OyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgodm9pZCgqKSgpKTApKCk7IH0g
d2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgW3NlbGYgc2V0dXBWaWRlb092ZXJs
YXk6bW92aWVMYXllcl07CgogICAgICAgIGRvIGlmICghKFttb3ZpZUxheWVyIG1vdmllXSkpIHsg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0iLCAxNTEsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICJbbW92aWVMYXllciBtb3ZpZV0iKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2Uo
KTsgKihpbnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9
IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6QHNlbGVjdG9yKHJhdGVDaGFuZ2Vk
OikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
YW1lOmdldFFUTW92aWVSYXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Olttb3ZpZUxheWVyIG1v
dmllXV07CgogICAgfQp9CgotIChpZCA8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckRlbGVn
YXRlPilkZWxlZ2F0ZQp7CiAgICByZXR1cm4gX2RlbGVnYXRlOwp9CgotICh2b2lkKXNldERlbGVn
YXRlOihpZCA8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQp7
CiAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKfQoKLSAoQ0dGbG9hdCljbGVhckZhZGVBbmltYXRp
b24KewogICAgW19mYWRlQW5pbWF0aW9uIHN0b3BBbmltYXRpb25dOwogICAgQ0dGbG9hdCBwcmV2
aW91c0FscGhhID0gW19mYWRlQW5pbWF0aW9uIGN1cnJlbnRBbHBoYV07CiAgICBbX2ZhZGVBbmlt
YXRpb24gc2V0V2luZG93Ol9fbnVsbF07CiAgICBbX2ZhZGVBbmltYXRpb24gcmVsZWFzZV07CiAg
ICBfZmFkZUFuaW1hdGlvbiA9IF9fbnVsbDsKICAgIHJldHVybiBwcmV2aW91c0FscGhhOwp9Cgot
ICh2b2lkKXdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuCnsKCgoKCiAgICBbc2VsZiBjbGVhckZhZGVB
bmltYXRpb25dOwogICAgW1tzZWxmIHdpbmRvd10gY2xvc2VdOwogICAgW3NlbGYgc2V0V2luZG93
Ol9fbnVsbF07CiAgICBbc2VsZiB1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW5dOwogICAg
W3NlbGYgdXBkYXRlUG93ZXJBc3NlcnRpb25zXTsKICAgIFtfaHVkQ29udHJvbGxlciBzZXREZWxl
Z2F0ZTpfX251bGxdOwogICAgW19odWRDb250cm9sbGVyIHJlbGVhc2VdOwogICAgX2h1ZENvbnRy
b2xsZXIgPSBfX251bGw7CiAgICBbX2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93IGNsb3NlXTsK
ICAgIFtfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cgcmVsZWFzZV07CiAgICBfYmFja2dyb3Vu
ZEZ1bGxzY3JlZW5XaW5kb3cgPSBfX251bGw7CgogICAgW3NlbGYgYXV0b3JlbGVhc2VdOwogICAg
X2lzRW5kaW5nRnVsbHNjcmVlbiA9IChCT09MKTA7Cn0KCi0gKHZvaWQpd2luZG93RGlkRW50ZXJG
dWxsc2NyZWVuCnsKICAgIFtzZWxmIGNsZWFyRmFkZUFuaW1hdGlvbl07CgogICAgZG8gaWYgKCEo
IV9odWRDb250cm9sbGVyKSkgeyBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKCIuLi8uLi8uLi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5t
bSIsIDIwNiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIiFfaHVkQ29udHJvbGxlciIpOyBkbyB7IFdU
RlJlcG9ydEJhY2t0cmFjZSgpOyAqKGludCAqKSh1aW50cHRyX3QpMHhiYmFkYmVlZiA9IDA7ICgo
dm9pZCgqKSgpKTApKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7CiAgICBfaHVkQ29u
dHJvbGxlciA9IFtbV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBhbGxvY10g
aW5pdF07CiAgICBbX2h1ZENvbnRyb2xsZXIgc2V0RGVsZWdhdGU6c2VsZl07CgogICAgW3NlbGYg
dXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXTsKICAgIFtzZWxmIHVwZGF0ZVBvd2VyQXNz
ZXJ0aW9uc107CiAgICBbTlNDdXJzb3Igc2V0SGlkZGVuVW50aWxNb3VzZU1vdmVzOihCT09MKTFd
OwoKCiAgICBbX2h1ZENvbnRyb2xsZXIgZmFkZVdpbmRvd0luXTsKfQoKLSAoTlNSZWN0KW1lZGlh
RWxlbWVudFJlY3QKewogICAgcmV0dXJuIF9tZWRpYUVsZW1lbnQtPnNjcmVlblJlY3QoKTsKfQoK
LSAodm9pZClhcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRpb24qKW5vdGlm
aWNhdGlvbgp7CiAgICAodm9pZClub3RpZmljYXRpb247CgoKICAgIE5TV2luZG93KiBmdWxsc2Ny
ZWVuV2luZG93ID0gW3NlbGYgZnVsbHNjcmVlbldpbmRvd107CiAgICBCT09MIGlzT25BY3RpdmVT
cGFjZSA9IChbZnVsbHNjcmVlbldpbmRvdyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGlz
T25BY3RpdmVTcGFjZSldID8gW2Z1bGxzY3JlZW5XaW5kb3cgaXNPbkFjdGl2ZVNwYWNlXSA6IChC
T09MKTEpOwoKCgoKCiAgICBpZiAoW2Z1bGxzY3JlZW5XaW5kb3cgc2NyZWVuXSA9PSBbW05TU2Ny
ZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gJiYgaXNPbkFjdGl2ZVNwYWNlKQogICAgICAg
ICBbc2VsZiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOihCT09MKTBdOwp9CgoK
CgoKc3RhdGljIHZvaWQgY29uc3RyYWluRnJhbWVUb1JhdGlvT2ZGcmFtZShOU1JlY3QgKmZyYW1l
VG9Db25zdHJhaW4sIGNvbnN0IE5TUmVjdCAqZnJhbWUpCnsKCiAgICBDR0Zsb2F0IG9yaWdpbmFs
UmF0aW8gPSBmcmFtZS0+c2l6ZS53aWR0aCAvIGZyYW1lLT5zaXplLmhlaWdodDsKICAgIENHRmxv
YXQgbmV3UmF0aW8gPSBmcmFtZVRvQ29uc3RyYWluLT5zaXplLndpZHRoIC8gZnJhbWVUb0NvbnN0
cmFpbi0+c2l6ZS5oZWlnaHQ7CiAgICBpZiAobmV3UmF0aW8gPiBvcmlnaW5hbFJhdGlvKSB7CiAg
ICAgICAgQ0dGbG9hdCBuZXdXaWR0aCA9IG9yaWdpbmFsUmF0aW8gKiBmcmFtZVRvQ29uc3RyYWlu
LT5zaXplLmhlaWdodDsKICAgICAgICBDR0Zsb2F0IGRpZmYgPSBmcmFtZVRvQ29uc3RyYWluLT5z
aXplLndpZHRoIC0gbmV3V2lkdGg7CiAgICAgICAgZnJhbWVUb0NvbnN0cmFpbi0+c2l6ZS53aWR0
aCA9IG5ld1dpZHRoOwogICAgICAgIGZyYW1lVG9Db25zdHJhaW4tPm9yaWdpbi54ICs9IGRpZmYg
LyAyOwogICAgfSBlbHNlIHsKICAgICAgICBDR0Zsb2F0IG5ld0hlaWdodCA9IGZyYW1lVG9Db25z
dHJhaW4tPnNpemUud2lkdGggLyBvcmlnaW5hbFJhdGlvOwogICAgICAgIENHRmxvYXQgZGlmZiA9
IGZyYW1lVG9Db25zdHJhaW4tPnNpemUuaGVpZ2h0IC0gbmV3SGVpZ2h0OwogICAgICAgIGZyYW1l
VG9Db25zdHJhaW4tPnNpemUuaGVpZ2h0ID0gbmV3SGVpZ2h0OwogICAgICAgIGZyYW1lVG9Db25z
dHJhaW4tPm9yaWdpbi55ICs9IGRpZmYgLyAyOwogICAgfQp9CgpzdGF0aWMgTlNXaW5kb3cgKmNy
ZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KE5TUmVjdCBmcmFtZSwgaW50IGxldmVsKQp7
CiAgICBOU1dpbmRvdyAqd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50
UmVjdDpmcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFj
a2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6KEJPT0wpMF07CiAgICBbd2luZG93IHNldE9wYXF1ZToo
Qk9PTCkxXTsKICAgIFt3aW5kb3cgc2V0QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGJsYWNrQ29s
b3JdXTsKICAgIFt3aW5kb3cgc2V0TGV2ZWw6bGV2ZWxdOwogICAgW3dpbmRvdyBzZXRSZWxlYXNl
ZFdoZW5DbG9zZWQ6KEJPT0wpMF07CiAgICByZXR1cm4gd2luZG93Owp9CgotICh2b2lkKXNldHVw
RmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOihCT09MKWZhZGVJbgp7CiAgICBDR0Zsb2F0
IGluaXRpYWxBbHBoYSA9IGZhZGVJbiA/IDAgOiAxOwogICAgaWYgKF9mYWRlQW5pbWF0aW9uKSB7
CgogICAgICAgIGluaXRpYWxBbHBoYSA9IFtzZWxmIGNsZWFyRmFkZUFuaW1hdGlvbl07CiAgICB9
CiAgICBpZiAoIV9mb3JjZURpc2FibGVBbmltYXRpb24pCiAgICAgICAgX2ZhZGVBbmltYXRpb24g
PSBbW1dlYldpbmRvd0ZhZGVBbmltYXRpb24gYWxsb2NdIGluaXRXaXRoRHVyYXRpb246MC4yIHdp
bmRvdzpfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cgaW5pdGlhbEFscGhhOmluaXRpYWxBbHBo
YSBmaW5hbEFscGhhOmZhZGVJbiA/IDEgOiAwXTsKfQoKLSAodm9pZCllbnRlckZ1bGxzY3JlZW46
KE5TU2NyZWVuICopc2NyZWVuCnsKICAgIGlmICghc2NyZWVuKQogICAgICAgIHNjcmVlbiA9IFtO
U1NjcmVlbiBtYWluU2NyZWVuXTsKCiAgICBOU1JlY3QgZnJhbWUgPSBbc2VsZiBtZWRpYUVsZW1l
bnRSZWN0XTsKICAgIE5TUmVjdCBlbmRGcmFtZSA9IFtzY3JlZW4gZnJhbWVdOwogICAgY29uc3Ry
YWluRnJhbWVUb1JhdGlvT2ZGcmFtZSgmZW5kRnJhbWUsICZmcmFtZSk7CgoKICAgIGlmICghX2Jh
Y2tncm91bmRGdWxsc2NyZWVuV2luZG93KQogICAgICAgIF9iYWNrZ3JvdW5kRnVsbHNjcmVlbldp
bmRvdyA9IGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KFtzY3JlZW4gZnJhbWVdLCBb
W3NlbGYgd2luZG93XSBsZXZlbF0tMSk7CiAgICBlbHNlCiAgICAgICAgW19iYWNrZ3JvdW5kRnVs
bHNjcmVlbldpbmRvdyBzZXRGcmFtZTpbc2NyZWVuIGZyYW1lXSBkaXNwbGF5OihCT09MKTBdOwoK
ICAgIFtzZWxmIHNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOihCT09MKTFdOwog
ICAgaWYgKF9mb3JjZURpc2FibGVBbmltYXRpb24pIHsKCiAgICAgICAgZnJhbWUgPSBOU1plcm9S
ZWN0OwogICAgfQogICAgW1tzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddIGFuaW1hdGVGcm9tUmVjdDpm
cmFtZSB0b1JlY3Q6ZW5kRnJhbWUgd2l0aFN1YkFuaW1hdGlvbjpfZmFkZUFuaW1hdGlvbiBjb250
cm9sbGVyQWN0aW9uOkBzZWxlY3Rvcih3aW5kb3dEaWRFbnRlckZ1bGxzY3JlZW4pXTsKCiAgICBb
X2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93IG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVs
YXRpdmVUbzpbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10gd2luZG93TnVtYmVyXV07Cn0KCi0gKHZv
aWQpZXhpdEZ1bGxzY3JlZW4KewogICAgaWYgKF9pc0VuZGluZ0Z1bGxzY3JlZW4pCiAgICAgICAg
cmV0dXJuOwogICAgX2lzRW5kaW5nRnVsbHNjcmVlbiA9IChCT09MKTE7CiAgICBbX2h1ZENvbnRy
b2xsZXIgY2xvc2VXaW5kb3ddOwoKICAgIE5TUmVjdCBlbmRGcmFtZSA9IFtzZWxmIG1lZGlhRWxl
bWVudFJlY3RdOwoKICAgIFtzZWxmIHNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUlu
OihCT09MKTBdOwogICAgaWYgKF9mb3JjZURpc2FibGVBbmltYXRpb24pIHsKCiAgICAgICAgZW5k
RnJhbWUgPSBOU1plcm9SZWN0OwogICAgfQoKCgoKICAgIFtzZWxmIHJldGFpbl07CgogICAgW1tz
ZWxmIGZ1bGxzY3JlZW5XaW5kb3ddIGFuaW1hdGVGcm9tUmVjdDpbW3NlbGYgd2luZG93XSBmcmFt
ZV0gdG9SZWN0OmVuZEZyYW1lIHdpdGhTdWJBbmltYXRpb246X2ZhZGVBbmltYXRpb24gY29udHJv
bGxlckFjdGlvbjpAc2VsZWN0b3Iod2luZG93RGlkRXhpdEZ1bGxzY3JlZW4pXTsKfQoKLSAodm9p
ZClhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6KE5TTm90aWZpY2F0aW9uKilu
b3RpZmljYXRpb24KewogICAgKHZvaWQpbm90aWZpY2F0aW9uOwoKCgoKICAgIFtzZWxmIHVwZGF0
ZU1lbnVBbmREb2NrRm9yRnVsbHNjcmVlbl07CiAgICBbW3NlbGYgd2luZG93XSBzZXRGcmFtZTpb
W1tzZWxmIHdpbmRvd10gc2NyZWVuXSBmcmFtZV0gZGlzcGxheTooQk9PTCkxXTsKfQoKLSAodm9p
ZCl1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW4KewoKCiAgICBOU0FwcGxpY2F0aW9uUHJl
c2VudGF0aW9uT3B0aW9ucyBvcHRpb25zID0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkRlZmF1
bHQ7CiAgICBOU1NjcmVlbiogZnVsbHNjcmVlblNjcmVlbiA9IFtbc2VsZiB3aW5kb3ddIHNjcmVl
bl07CgogICAgaWYgKCFfaXNFbmRpbmdGdWxsc2NyZWVuKSB7CgoKCiAgICAgICAgaWYgKFtbTlNT
Y3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSA9PSBmdWxsc2NyZWVuU2NyZWVuKQogICAg
ICAgICAgICBvcHRpb25zIHw9IChOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVNZW51
QmFyIHwgTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkF1dG9IaWRlRG9jayk7CgoKCiAgICAgICAg
ZWxzZSBpZiAoIU5TRXF1YWxSZWN0cyhbZnVsbHNjcmVlblNjcmVlbiBmcmFtZV0sIFtmdWxsc2Ny
ZWVuU2NyZWVuIHZpc2libGVGcmFtZV0pKQogICAgICAgICAgICBvcHRpb25zIHw9IE5TQXBwbGlj
YXRpb25QcmVzZW50YXRpb25BdXRvSGlkZURvY2s7CiAgICB9CgogICAgaWYgKFtOU0FwcCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFByZXNlbnRhdGlvbk9wdGlvbnM6KV0pCiAgICAg
ICAgW05TQXBwIHNldFByZXNlbnRhdGlvbk9wdGlvbnM6b3B0aW9uc107CiAgICBlbHNlCgogICAg
ICAgIFNldFN5c3RlbVVJTW9kZShfaXNFbmRpbmdGdWxsc2NyZWVuID8ga1VJTW9kZU5vcm1hbCA6
IGtVSU1vZGVBbGxIaWRkZW4sIDApOwp9CgotICh2b2lkKV9kaXNhYmxlSWRsZURpc3BsYXlTbGVl
cAp7CiAgICBpZiAoX2lkbGVEaXNwbGF5U2xlZXBBc3NlcnRpb24gPT0ga0lPUE1OdWxsQXNzZXJ0
aW9uSUQpCgoKCiAgICAgICAgSU9QTUFzc2VydGlvbkNyZWF0ZVdpdGhOYW1lKCgoQ0ZTdHJpbmdS
ZWYpIF9fYnVpbHRpbl9fX0NGU3RyaW5nTWFrZUNvbnN0YW50U3RyaW5nICgiIiAiTm9EaXNwbGF5
U2xlZXBBc3NlcnRpb24iICIiKSksIGtJT1BNQXNzZXJ0aW9uTGV2ZWxPbiwgKChDRlN0cmluZ1Jl
ZikgX19idWlsdGluX19fQ0ZTdHJpbmdNYWtlQ29uc3RhbnRTdHJpbmcgKCIiICJXZWJLaXQgcGxh
eWluZyBhIHZpZGVvIGZ1bGxzY3JlZW4uIiAiIikpLCAmX2lkbGVEaXNwbGF5U2xlZXBBc3NlcnRp
b24pOwoKfQoKLSAodm9pZClfZW5hYmxlSWRsZURpc3BsYXlTbGVlcAp7CiAgICBpZiAoX2lkbGVE
aXNwbGF5U2xlZXBBc3NlcnRpb24gIT0ga0lPUE1OdWxsQXNzZXJ0aW9uSUQpIHsKICAgICAgICBJ
T1BNQXNzZXJ0aW9uUmVsZWFzZShfaWRsZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CiAgICAgICAg
X2lkbGVEaXNwbGF5U2xlZXBBc3NlcnRpb24gPSBrSU9QTU51bGxBc3NlcnRpb25JRDsKICAgIH0K
fQoKLSAodm9pZClfZGlzYWJsZUlkbGVTeXN0ZW1TbGVlcAp7CiAgICBpZiAoX2lkbGVTeXN0ZW1T
bGVlcEFzc2VydGlvbiA9PSBrSU9QTU51bGxBc3NlcnRpb25JRCkKCgoKICAgIElPUE1Bc3NlcnRp
b25DcmVhdGVXaXRoTmFtZSgoKENGU3RyaW5nUmVmKSBfX2J1aWx0aW5fX19DRlN0cmluZ01ha2VD
b25zdGFudFN0cmluZyAoIiIgIk5vSWRsZVNsZWVwQXNzZXJ0aW9uIiAiIikpLCBrSU9QTUFzc2Vy
dGlvbkxldmVsT24sICgoQ0ZTdHJpbmdSZWYpIF9fYnVpbHRpbl9fX0NGU3RyaW5nTWFrZUNvbnN0
YW50U3RyaW5nICgiIiAiV2ViS2l0IHBsYXlpbmcgYSB2aWRlbyBmdWxsc2NyZWVuLiIgIiIpKSwg
Jl9pZGxlU3lzdGVtU2xlZXBBc3NlcnRpb24pOwoKfQoKLSAodm9pZClfZW5hYmxlSWRsZVN5c3Rl
bVNsZWVwCnsKICAgIGlmIChfaWRsZVN5c3RlbVNsZWVwQXNzZXJ0aW9uICE9IGtJT1BNTnVsbEFz
c2VydGlvbklEKSB7CiAgICAgICAgSU9QTUFzc2VydGlvblJlbGVhc2UoX2lkbGVTeXN0ZW1TbGVl
cEFzc2VydGlvbik7CiAgICAgICAgX2lkbGVTeXN0ZW1TbGVlcEFzc2VydGlvbiA9IGtJT1BNTnVs
bEFzc2VydGlvbklEOwogICAgfQp9CgotICh2b2lkKV9lbmFibGVUaWNrbGVUaW1lcgp7CiAgICBb
X3RpY2tsZVRpbWVyIGludmFsaWRhdGVdOwogICAgW190aWNrbGVUaW1lciByZWxlYXNlXTsKICAg
IF90aWNrbGVUaW1lciA9IFtbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6
dGlja2xlVGltZXJJbnRlcnZhbCB0YXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX3RpY2ts
ZVRpbWVyRmlyZWQpIHVzZXJJbmZvOl9fbnVsbCByZXBlYXRzOihCT09MKTFdIHJldGFpbl07Cn0K
Ci0gKHZvaWQpX2Rpc2FibGVUaWNrbGVUaW1lcgp7CiAgICBbX3RpY2tsZVRpbWVyIGludmFsaWRh
dGVdOwogICAgW190aWNrbGVUaW1lciByZWxlYXNlXTsKICAgIF90aWNrbGVUaW1lciA9IF9fbnVs
bDsKfQoKLSAodm9pZClfdGlja2xlVGltZXJGaXJlZAp7CiAgICBVcGRhdGVTeXN0ZW1BY3Rpdml0
eShPdmVyYWxsQWN0KTsKfQoKLSAodm9pZCl1cGRhdGVQb3dlckFzc2VydGlvbnMKewogICAgZmxv
YXQgcmF0ZSA9IDA7CiAgICBpZiAoX21lZGlhRWxlbWVudCAmJiBfbWVkaWFFbGVtZW50LT5wbGF0
Zm9ybU1lZGlhKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpRVE1vdmllVHlwZSkK
ICAgICAgICByYXRlID0gW19tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5xdE1v
dmllIHJhdGVdOwoKICAgIGlmIChyYXRlICYmICFfaXNFbmRpbmdGdWxsc2NyZWVuKSB7CiAgICAg
ICAgW3NlbGYgX2Rpc2FibGVJZGxlU3lzdGVtU2xlZXBdOwogICAgICAgIFtzZWxmIF9kaXNhYmxl
SWRsZURpc3BsYXlTbGVlcF07CiAgICAgICAgW3NlbGYgX2VuYWJsZVRpY2tsZVRpbWVyXTsKICAg
IH0gZWxzZSB7CiAgICAgICAgW3NlbGYgX2VuYWJsZUlkbGVTeXN0ZW1TbGVlcF07CiAgICAgICAg
W3NlbGYgX2VuYWJsZUlkbGVEaXNwbGF5U2xlZXBdOwogICAgICAgIFtzZWxmIF9kaXNhYmxlVGlj
a2xlVGltZXJdOwogICAgfQp9CgoKCgotICh2b2lkKV9yZXF1ZXN0RXhpdAp7CiAgICBpZiAoX21l
ZGlhRWxlbWVudCkKICAgICAgICBfbWVkaWFFbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOwogICAg
X2ZvcmNlRGlzYWJsZUFuaW1hdGlvbiA9IChCT09MKTA7Cn0KCi0gKHZvaWQpcmVxdWVzdEV4aXRG
dWxsc2NyZWVuV2l0aEFuaW1hdGlvbjooQk9PTClhbmltYXRpb24KewogICAgaWYgKF9pc0VuZGlu
Z0Z1bGxzY3JlZW4pCiAgICAgICAgcmV0dXJuOwoKICAgIF9mb3JjZURpc2FibGVBbmltYXRpb24g
PSAhYW5pbWF0aW9uOwogICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfcmVxdWVz
dEV4aXQpIHdpdGhPYmplY3Q6X19udWxsIGFmdGVyRGVsYXk6MF07Cgp9CgotICh2b2lkKXJlcXVl
c3RFeGl0RnVsbHNjcmVlbgp7CiAgICBbc2VsZiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5XaXRoQW5p
bWF0aW9uOihCT09MKTFdOwp9CgotICh2b2lkKWZhZGVIVURJbgp7CiAgICBbX2h1ZENvbnRyb2xs
ZXIgZmFkZVdpbmRvd0luXTsKfQoKCgoKLSAodm9pZClyYXRlQ2hhbmdlZDooTlNOb3RpZmljYXRp
b24gKil1bnVzZWROb3RpZmljYXRpb24KewogICAgKHZvaWQpdW51c2VkTm90aWZpY2F0aW9uOwog
ICAgW19odWRDb250cm9sbGVyIHVwZGF0ZVJhdGVdOwogICAgW3NlbGYgdXBkYXRlUG93ZXJBc3Nl
cnRpb25zXTsKfQoKQGVuZAoKQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbldpbmRv
dwoKLSAoaWQpaW5pdFdpdGhDb250ZW50UmVjdDooTlNSZWN0KWNvbnRlbnRSZWN0IHN0eWxlTWFz
azooTlNVSW50ZWdlcilhU3R5bGUgYmFja2luZzooTlNCYWNraW5nU3RvcmVUeXBlKWJ1ZmZlcmlu
Z1R5cGUgZGVmZXI6KEJPT0wpZmxhZwp7CiAgICAodm9pZClhU3R5bGU7CiAgICBzZWxmID0gW3N1
cGVyIGluaXRXaXRoQ29udGVudFJlY3Q6Y29udGVudFJlY3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVz
c1dpbmRvd01hc2sgYmFja2luZzpidWZmZXJpbmdUeXBlIGRlZmVyOmZsYWddOwogICAgaWYgKCFz
ZWxmKQogICAgICAgIHJldHVybiBfX251bGw7CiAgICBbc2VsZiBzZXRPcGFxdWU6KEJPT0wpMF07
CiAgICBbc2VsZiBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgY2xlYXJDb2xvcl1dOwogICAg
W3NlbGYgc2V0SWdub3Jlc01vdXNlRXZlbnRzOihCT09MKTBdOwogICAgW3NlbGYgc2V0QWNjZXB0
c01vdXNlTW92ZWRFdmVudHM6KEJPT0wpMV07CiAgICByZXR1cm4gc2VsZjsKfQoKLSAodm9pZClk
ZWFsbG9jCnsKICAgIGRvIGlmICghKCFfZnVsbHNjcmVlbkFuaW1hdGlvbikpIHsgV1RGUmVwb3J0
QXNzZXJ0aW9uRmFpbHVyZSgiLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0iLCA0OTksIF9fUFJFVFRZX0ZVTkNUSU9OX18s
ICIhX2Z1bGxzY3JlZW5BbmltYXRpb24iKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihp
bnQgKikodWludHB0cl90KTB4YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOwogICAgW3N1cGVyIGRlYWxsb2NdOwp9CgotIChCT09MKXJl
c2lnbkZpcnN0UmVzcG9uZGVyCnsKICAgIHJldHVybiAoQk9PTCkwOwp9CgotIChCT09MKWNhbkJl
Y29tZUtleVdpbmRvdwp7CiAgICByZXR1cm4gKEJPT0wpMDsKfQoKLSAodm9pZCltb3VzZURvd246
KE5TRXZlbnQgKil0aGVFdmVudAp7CiAgICAodm9pZCl0aGVFdmVudDsKfQoKLSAodm9pZCljYW5j
ZWxPcGVyYXRpb246KGlkKXNlbmRlcgp7CiAgICAodm9pZClzZW5kZXI7CiAgICBbW3NlbGYgd2lu
ZG93Q29udHJvbGxlcl0gcmVxdWVzdEV4aXRGdWxsc2NyZWVuXTsKfQoKLSAodm9pZClhbmltYXRl
ZFJlc2l6ZURpZEVuZAp7CgogICAgaWYgKF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmQp
CiAgICAgICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJdIHBlcmZvcm1TZWxlY3RvcjpfY29udHJv
bGxlckFjdGlvbk9uQW5pbWF0aW9uRW5kXTsKICAgIF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRp
b25FbmQgPSBfX251bGw7Cn0KCgoKCgoKLSAodm9pZClhbmltYXRlRnJvbVJlY3Q6KE5TUmVjdClz
dGFydFJlY3QgdG9SZWN0OihOU1JlY3QpZW5kUmVjdCB3aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1h
dGlvbiAqKXN1YkFuaW1hdGlvbiBjb250cm9sbGVyQWN0aW9uOihTRUwpY29udHJvbGxlckFjdGlv
bgp7CiAgICBfY29udHJvbGxlckFjdGlvbk9uQW5pbWF0aW9uRW5kID0gY29udHJvbGxlckFjdGlv
bjsKCiAgICBCT09MIHdhc0FuaW1hdGluZyA9IChCT09MKTA7CiAgICBpZiAoX2Z1bGxzY3JlZW5B
bmltYXRpb24pIHsKICAgICAgICB3YXNBbmltYXRpbmcgPSAoQk9PTCkxOwoKCiAgICAgICAgW19m
dWxsc2NyZWVuQW5pbWF0aW9uIHN0b3BBbmltYXRpb25dOwoKCiAgICAgICAgc3RhcnRSZWN0ID0g
W19mdWxsc2NyZWVuQW5pbWF0aW9uIGN1cnJlbnRGcmFtZV07CiAgICAgICAgW19mdWxsc2NyZWVu
QW5pbWF0aW9uIHJlbGVhc2VdOwogICAgICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0gX19udWxs
OwogICAgfQoKICAgIGlmIChOU0lzRW1wdHlSZWN0KHN0YXJ0UmVjdCkgfHwgTlNJc0VtcHR5UmVj
dChlbmRSZWN0KSkgewoKICAgICAgICBbc3ViQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczox
XTsKCiAgICAgICAgW3N1YkFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsKCiAgICAgICAgW3NlbGYg
c2V0RnJhbWU6ZW5kUmVjdCBkaXNwbGF5OihCT09MKTBdOwogICAgICAgIFtzZWxmIG1ha2VLZXlB
bmRPcmRlckZyb250OnNlbGZdOwogICAgICAgIFtzZWxmIGFuaW1hdGVkUmVzaXplRGlkRW5kXTsK
ICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCF3YXNBbmltYXRpbmcpIHsKCiAgICAgICAg
Qk9PTCBoaWdoZXJSZXNvbHV0aW9uSXNFbmRSZWN0ID0gc3RhcnRSZWN0LnNpemUud2lkdGggPCBl
bmRSZWN0LnNpemUud2lkdGggJiYgc3RhcnRSZWN0LnNpemUuaGVpZ2h0IDwgZW5kUmVjdC5zaXpl
LmhlaWdodDsKICAgICAgICBbc2VsZiBzZXRGcmFtZTpoaWdoZXJSZXNvbHV0aW9uSXNFbmRSZWN0
ID8gZW5kUmVjdCA6IHN0YXJ0UmVjdCBkaXNwbGF5OihCT09MKTBdOwogICAgfQoKICAgIGRvIGlm
ICghKCFfZnVsbHNjcmVlbkFuaW1hdGlvbikpIHsgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZSgi
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIubW0iLCA1NzIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sICIhX2Z1bGxzY3JlZW5Bbmlt
YXRpb24iKTsgZG8geyBXVEZSZXBvcnRCYWNrdHJhY2UoKTsgKihpbnQgKikodWludHB0cl90KTB4
YmJhZGJlZWYgPSAwOyAoKHZvaWQoKikoKSkwKSgpOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOwogICAgX2Z1bGxzY3JlZW5BbmltYXRpb24gPSBbW1dlYldpbmRvd1NjYWxlQW5pbWF0aW9u
IGFsbG9jXSBpbml0V2l0aEhpbnRlZER1cmF0aW9uOjAuMiB3aW5kb3c6c2VsZiBpbml0YWxGcmFt
ZTpzdGFydFJlY3QgZmluYWxGcmFtZTplbmRSZWN0XTsKICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlv
biBzZXRTdWJBbmltYXRpb246c3ViQW5pbWF0aW9uXTsKICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlv
biBzZXREZWxlZ2F0ZTpzZWxmXTsKCgogICAgW19mdWxsc2NyZWVuQW5pbWF0aW9uIHNldEN1cnJl
bnRQcm9ncmVzczowXTsKICAgIFtzZWxmIG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwoKICAg
IFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07Cn0KCi0gKHZvaWQpYW5pbWF0
aW9uRGlkRW5kOihOU0FuaW1hdGlvbiAqKWFuaW1hdGlvbgp7CiAgICBpZiAoIVtOU1RocmVhZCBp
c01haW5UaHJlYWRdKSB7CiAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yT25NYWluVGhyZWFk
OkBzZWxlY3RvcihhbmltYXRpb25EaWRFbmQ6KSB3aXRoT2JqZWN0OmFuaW1hdGlvbiB3YWl0VW50
aWxEb25lOihCT09MKTBdOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChhbmltYXRpb24g
IT0gX2Z1bGxzY3JlZW5BbmltYXRpb24pCiAgICAgICAgcmV0dXJuOwoKCgogICAgaWYgKFthbmlt
YXRpb24gY3VycmVudFByb2dyZXNzXSA8IDEuMCkKICAgICAgICByZXR1cm47CgoKCgogICAgW19m
dWxsc2NyZWVuQW5pbWF0aW9uIHNldFdpbmRvdzpfX251bGxdOwoKICAgIFtfZnVsbHNjcmVlbkFu
aW1hdGlvbiBhdXRvcmVsZWFzZV07CiAgICBfZnVsbHNjcmVlbkFuaW1hdGlvbiA9IF9fbnVsbDsK
CiAgICBbc2VsZiBhbmltYXRlZFJlc2l6ZURpZEVuZF07Cn0KCi0gKHZvaWQpbW91c2VNb3ZlZDoo
TlNFdmVudCAqKXRoZUV2ZW50CnsKICAgICh2b2lkKXRoZUV2ZW50OwogICAgW1tzZWxmIHdpbmRv
d0NvbnRyb2xsZXJdIGZhZGVIVURJbl07Cn0KCkBlbmQK
</data>

          </attachment>
      

    </bug>

</bugzilla>